about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorelioat <elioat@tilde.institute>2023-08-23 07:52:19 -0400
committerelioat <elioat@tilde.institute>2023-08-23 07:52:19 -0400
commit562a9a52d599d9a05f871404050968a5fd282640 (patch)
tree7d3305c1252c043bfe246ccc7deff0056aa6b5ab
parent5d012c6c011a9dedf7d0a098e456206244eb5a0f (diff)
downloadtour-562a9a52d599d9a05f871404050968a5fd282640.tar.gz
*
-rw-r--r--js/games/nluqo.github.io/README.md5
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/bird.pngbin0 -> 736 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/bolt-horizontal.pngbin0 -> 613 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/bolt-vertical.pngbin0 -> 5376 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/boom.pngbin0 -> 850 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/eater.pngbin0 -> 874 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/exit.pngbin0 -> 10402 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/floor.pngbin0 -> 689 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/heal.pngbin0 -> 751 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/hp.pngbin0 -> 552 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/jester.pngbin0 -> 942 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/player-corpse.pngbin0 -> 929 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/player.pngbin0 -> 838 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/snake.pngbin0 -> 877 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/tank.pngbin0 -> 6254 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/teleport.pngbin0 -> 779 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/treasure.pngbin0 -> 4922 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/art/wall.pngbin0 -> 550 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/index.html63
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/game.js205
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/map.js66
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/monster.js223
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/spell.js139
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/tile.js112
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/util.js36
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/diff.js38
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/highlight.min.css130
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/highlight.min.js3
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/index.html57
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/2darray.pngbin0 -> 40325 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/animation23.gifbin0 -> 1125366 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/behavior.gifbin0 -> 48861 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/bfxr.PNGbin0 -> 77080 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/blurry.pngbin0 -> 4319 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/brough-games.pngbin0 -> 353450 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/brough-screen.pngbin0 -> 10748 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/casting.gifbin0 -> 421901 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/centering.pngbin0 -> 39645 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/chasing.gifbin0 -> 60026 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/first-draw.pngbin0 -> 56303 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/floodfill.gifbin0 -> 2317 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/helloworld.pngbin0 -> 6846 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/high-scores.pngbin0 -> 36689 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/hp.pngbin0 -> 5803 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/kicks.pngbin0 -> 8777 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/smoothmovement.jpgbin0 -> 28294 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/snake.pngbin0 -> 580 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/stage1-complete.pngbin0 -> 3031 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/stage2-complete.pngbin0 -> 9343 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/state-machine.pngbin0 -> 12132 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/tileSizeUndefined.pngbin0 -> 7909 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/tiles-console.pngbin0 -> 30655 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/tinysprite.pngbin0 -> 1251 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/title-screen.pngbin0 -> 25596 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/walls-drawn.pngbin0 -> 9296 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/screens/woop.pngbin0 -> 2394 bytes
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage0.html370
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage1.html572
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage2.html586
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage3.html644
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage4.html472
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage5.html704
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage6.html449
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage7.html571
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage8.html1067
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/stage9.html45
-rw-r--r--js/games/nluqo.github.io/broughlike-tutorial/style.css182
-rw-r--r--js/games/nluqo.github.io/icons/back.gifbin0 -> 216 bytes
-rw-r--r--js/games/nluqo.github.io/icons/binary.gifbin0 -> 246 bytes
-rw-r--r--js/games/nluqo.github.io/icons/binhex.gifbin0 -> 246 bytes
-rw-r--r--js/games/nluqo.github.io/icons/blank.gifbin0 -> 148 bytes
-rw-r--r--js/games/nluqo.github.io/icons/compressed.gifbin0 -> 1038 bytes
-rw-r--r--js/games/nluqo.github.io/icons/folder.gifbin0 -> 225 bytes
-rw-r--r--js/games/nluqo.github.io/icons/layout.gifbin0 -> 276 bytes
-rw-r--r--js/games/nluqo.github.io/icons/text.gifbin0 -> 229 bytes
-rw-r--r--js/games/nluqo.github.io/icons/unknown.gifbin0 -> 245 bytes
-rw-r--r--js/games/nluqo.github.io/robots.txt94
-rw-r--r--js/games/nluqo.github.io/~bh/195-syllabus218
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/abstr.levels12
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/argue.scm16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/buzz.scm4
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=A23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=D23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=A23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=D23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=A23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=D23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/order.scm199
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/pigl.scm10
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural.scm8
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural1.scm2
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural2.scm5
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/bentley16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/count.scm12
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/growth.scm19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=N;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=S;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/filter.scm23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=A19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=D19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=A19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=D19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=A19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=D19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=A19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=D19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/keep.scm23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/roots.scm47
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/sum.scm20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/calc.scm29
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/cons.scm17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=M;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/mapreduce.scm201
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/total.scm60
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst.scm24
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst2.scm24
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=A30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=D30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=A30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=D30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=N;O=A30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=A30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=D30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/print.scm17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/search.scm13
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/sentence.scm10
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/squares.scm52
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tdisp.scm44
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree.scm43
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree1.scm27
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree11.scm9
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree2.scm41
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree3.scm6
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/world.scm50
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/data.scm78
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/geom.scm69
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=A20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=D20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=A20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=D20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=N;O=D20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=A20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=D20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/msg.scm52
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/trydata.scm170
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/type.scm83
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/count.scm32
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/demo.scm15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=D17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=D17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=N;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=S;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count4.scm8
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count5.scm14
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/env-note44
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/envrules59
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=A23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=D23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=A23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=D23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=A23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=D23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=A23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=D23
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/obj.scm279
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev4.scm12
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev5.scm19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/bad-serial.scm13
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=A16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=D16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=A16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=D16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=N;O=D16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=A16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=D16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/fib.scm12
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=A28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=D28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=A28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=D28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=A28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=D28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=S;O=A28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime0.scm8
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime1.scm22
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime2.scm22
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/show-stream.scm15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/sieve.scm10
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream-pack.scm52
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream0.scm6
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream1.scm20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream2.scm20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/streamstate.scm87
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=A18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=D18
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/old-MCE-questions144
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/pairs.scm40
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/while.scm17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=A15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=D15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=N;O=D15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=A15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=D15
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/stk-sockets164
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/errors26
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=A35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=D35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=A35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=D35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=A35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=D35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=A35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=D35
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/mapreduce-demo.scm61
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=D17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=D17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=D17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=A17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=D17
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/steps7
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/words45402
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/adv-world.scm83
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/adv.scm235
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/ambdiff309
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/ambeval.scm300
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/analyze.scm117
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/animal.scm66
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/apl-meta.scm260
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/apl.scm254
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/berkeley.scmm1918
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/bst.scm28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/calc.scm29
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter1.code805
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter2.code1966
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter3.code1707
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/concurrent.scm245
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/constraint.scm219
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/huffman.scm61
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=A58
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=D58
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=M;O=A58
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=A58
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=D58
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=A58
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=D58
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/labyrinth.scm93
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/lazy.scm165
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/logo-meta.scm337
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/logo.scm173
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/maze.scm64
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/mceval.scm375
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/obj.scm279
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/old-obj.scm277
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/picture.scm129
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/pigl.scm10
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/prisoner.scm133
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/pronounce.scm165
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/query.scm667
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/ref-man.txt148
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm79
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/review54
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/rps.scm49
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/scheme1.scm216
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/scmset2
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/serial.scm21
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/small-world.scm28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/tables.scm20
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/test.logo39
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/tri.l94
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/turkey50
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/twenty-one.scm42
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Lib/vambeval.scm511
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/explorin-vs-simply.txt164
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/faq.html71
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/scheme.pngbin0 -> 13810 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/index.html19
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/linux.html122
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/mac.html110
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/scheme.pngbin0 -> 13810 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=D;O=A16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=M;O=A16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=N;O=D16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=S;O=A16
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/stk/index.html50
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/stk-1.3.6.tgzbin0 -> 5507616 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/unix.html52
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/windows.html171
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=A30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=D30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=A30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=D30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=A30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=D30
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week1325
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week10977
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week121008
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week141404
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week15325
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week2509
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week4152
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week61008
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week7663
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Solutions/week9570
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/CS 61A Course Reader, Volume 1.html79
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project1/twenty-one.scm60
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv-world.scm83
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv.txt718
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/obj.scm279
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/small-world.scm28
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo-meta.scm371
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo.scm179
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/obj.scm279
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume1/hw.pdfbin0 -> 135141 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/CS 61A Course Reader, Volume 2.html154
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-1.pdfbin0 -> 64434 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.pdfbin0 -> 36255 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.soln.txt540
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-3.soln.txt1125
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-1.soln.txt423
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-2.pdfbin0 -> 35908 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-3.pdfbin0 -> 53024 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.pdfbin0 -> 34170 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.soln.txt411
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-2.soln.txt609
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-3.pdfbin0 -> 38094 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.pdfbin0 -> 142270 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.soln.txt526
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-2.soln.txt484
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-3.soln.txt459
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/belowline.pdfbin0 -> 74088 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/ref-man.pdfbin0 -> 63994 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/Therac-25.pdfbin0 -> 4792426 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/mapreduce-osdi04.pdfbin0 -> 190711 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/quick.pdfbin0 -> 69924 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/r5rs.pdfbin0 -> 494729 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/sicp-errata.txt56
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/Volume2/word.txt121
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/first-day-handout.pdfbin0 -> 258837 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/61a-pages/style.css54
-rw-r--r--js/games/nluqo.github.io/~bh/BJC.pdfbin0 -> 347811 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/BYOB.pdfbin0 -> 735712 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/HOPL.pdfbin0 -> 13846043 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/alliance.html491
-rw-r--r--js/games/nluqo.github.io/~bh/announce69
-rw-r--r--js/games/nluqo.github.io/~bh/art.html332
-rw-r--r--js/games/nluqo.github.io/~bh/art/Ajauskas.jpgbin0 -> 74775 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Averell1.jpgbin0 -> 55806 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Averell2.jpgbin0 -> 88972 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Averell3.jpgbin0 -> 166036 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Behrendt.jpgbin0 -> 38241 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Bolling.jpgbin0 -> 17177 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Corning1.jpgbin0 -> 58049 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Corning2.jpgbin0 -> 133336 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Dion1.jpgbin0 -> 57143 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Dion2.jpgbin0 -> 26599 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Dion3.jpgbin0 -> 76767 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Eldjarn.jpgbin0 -> 33550 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/FarbHouse.jpgbin0 -> 83284 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/FarbMiss.jpgbin0 -> 91250 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/FarbTrees.jpgbin0 -> 61452 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Finborud.jpgbin0 -> 43686 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Harcos1.jpgbin0 -> 109065 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Harcos2.jpgbin0 -> 80981 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Harcos3.jpgbin0 -> 108320 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Holdsworth1.jpgbin0 -> 74741 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Holdsworth2.jpgbin0 -> 85021 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Holdsworth3.jpgbin0 -> 94497 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Hollander.jpgbin0 -> 18670 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Kathleen1.jpgbin0 -> 185117 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Kathleen2.jpgbin0 -> 147688 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/LebaBlue.jpgbin0 -> 129341 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/LebaRed.jpgbin0 -> 101572 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/LebaTall.jpgbin0 -> 28097 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Leblitho.jpgbin0 -> 116724 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Leboffice.jpgbin0 -> 45153 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Lebrug.jpgbin0 -> 42079 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Mason.jpgbin0 -> 45860 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Neil.jpgbin0 -> 13897 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Piacka.jpgbin0 -> 15104 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Reyes1.jpgbin0 -> 48241 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Reyes5.jpgbin0 -> 68851 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Reyes6.jpgbin0 -> 48634 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Rife3474.jpgbin0 -> 81657 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Rife3603.jpgbin0 -> 91742 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/RifeLeft.jpgbin0 -> 58732 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/RifeOil.jpgbin0 -> 78871 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/RifeOld.jpgbin0 -> 146956 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/RifeRight.jpgbin0 -> 82786 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Urbaniak.jpgbin0 -> 30439 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/VoigtDry.jpgbin0 -> 70253 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/VoigtHills.jpgbin0 -> 68448 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/VoigtTree.jpgbin0 -> 75682 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Weber1.jpgbin0 -> 42741 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/art/Weber2.jpgbin0 -> 86143 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/beard.jpgbin0 -> 83353 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/bh-tiny.jpgbin0 -> 876 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/bjc/bh/bjc200.pngbin0 -> 81643 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/bjc/index.html385
-rw-r--r--js/games/nluqo.github.io/~bh/bridge.html470
-rw-r--r--js/games/nluqo.github.io/~bh/bridge.ps1206
-rw-r--r--js/games/nluqo.github.io/~bh/byob/bh/Logo5.pngbin0 -> 11979 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/byob/bh/arrow3.gifbin0 -> 1520 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/byob/bh/forexample.gifbin0 -> 4199 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/byob/bh/forscript.gifbin0 -> 5475 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/byob/bh/fortalking.gifbin0 -> 2367 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/capitalist.html660
-rw-r--r--js/games/nluqo.github.io/~bh/csls1-tiny.jpgbin0 -> 978 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/csls1.jpgbin0 -> 10896 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/csls2-tiny.jpgbin0 -> 952 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/csls2.jpgbin0 -> 10995 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/csls3-tiny.jpgbin0 -> 992 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/csls3.jpgbin0 -> 15048 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/docs/html/usermanual.html12160
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/UCBLogo-6.0.dmg.gzbin0 -> 6996789 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/UCBLogo.dmgbin0 -> 4587987 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/blogo.exebin0 -> 1116327 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/Makefile.am5
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/basic235
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/buttons211
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/cards63
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/crypto355
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/diff174
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/dotgame268
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/format157
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/fsm355
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=A41
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=D41
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=A41
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=D41
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=N;O=D41
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=A41
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=D41
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/master381
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/match165
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/mines483
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/multi36
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/pascal1217
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/playfair79
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/plot36
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/pour130
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/psort97
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/solitaire484
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/streams85
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/student1181
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/csls-programs/tower31
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/index.html27
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=A27
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=D27
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=A27
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=D27
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/index.html?C=S;O=A27
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/macosx-ucblogo-5.5-Installer.hqx1
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/database.scm84
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/functions.scm244
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=A21
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=D21
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=M;O=A21
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=A21
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=D21
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=A21
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=D21
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/match.scm107
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/newttt.scm59
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/simply.scm1149
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/spread.scm550
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/simply/ttt.scm102
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/ucblogo-4.xobin0 -> 2856025 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/ucblogo.pdfbin0 -> 514469 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/ucblogo.sea.hqx65836
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/ucblogo.tar.gzbin0 -> 1653905 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/ucbwlogosetup.exebin0 -> 4972813 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/downloads/usermanual4189
-rw-r--r--js/games/nluqo.github.io/~bh/elogo.html452
-rw-r--r--js/games/nluqo.github.io/~bh/four.html197
-rw-r--r--js/games/nluqo.github.io/~bh/freedom.html295
-rw-r--r--js/games/nluqo.github.io/~bh/futoshiki.pngbin0 -> 73543 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/gary.html326
-rw-r--r--js/games/nluqo.github.io/~bh/grad05.html138
-rw-r--r--js/games/nluqo.github.io/~bh/hacker.html182
-rw-r--r--js/games/nluqo.github.io/~bh/hackers.html417
-rw-r--r--js/games/nluqo.github.io/~bh/heath.html42
-rw-r--r--js/games/nluqo.github.io/~bh/heath/Heath2016.JPGbin0 -> 102160 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ifsnecc.ps1408
-rw-r--r--js/games/nluqo.github.io/~bh/index.html419
-rw-r--r--js/games/nluqo.github.io/~bh/kenken.pngbin0 -> 62951 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/logic-code/backtrack.lg42
-rw-r--r--js/games/nluqo.github.io/~bh/logic-code/hybrid.lg256
-rw-r--r--js/games/nluqo.github.io/~bh/logic-code/meta.lg206
-rw-r--r--js/games/nluqo.github.io/~bh/logic.html703
-rw-r--r--js/games/nluqo.github.io/~bh/logo-sample.html69
-rw-r--r--js/games/nluqo.github.io/~bh/logo.html157
-rw-r--r--js/games/nluqo.github.io/~bh/lsrhs.html107
-rw-r--r--js/games/nluqo.github.io/~bh/mapsquare.pngbin0 -> 14526 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks.html24
-rw-r--r--js/games/nluqo.github.io/~bh/masks/atomic.jpgbin0 -> 7383 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks/bug.jpgbin0 -> 6016 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks/camel.jpgbin0 -> 5368 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks/death.jpgbin0 -> 5172 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks/dork.jpgbin0 -> 6347 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks/fossil.jpgbin0 -> 5119 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks/fuzzy.jpgbin0 -> 5082 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/masks/wizard.jpgbin0 -> 5759 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/mitp.jpgbin0 -> 581 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/multi.html164
-rw-r--r--js/games/nluqo.github.io/~bh/new-bh.jpgbin0 -> 31226 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/noss.ps2386
-rw-r--r--js/games/nluqo.github.io/~bh/obsolete.html270
-rw-r--r--js/games/nluqo.github.io/~bh/other-logos.html73
-rw-r--r--js/games/nluqo.github.io/~bh/papers.html143
-rw-r--r--js/games/nluqo.github.io/~bh/part1.html66
-rw-r--r--js/games/nluqo.github.io/~bh/part2.html66
-rw-r--r--js/games/nluqo.github.io/~bh/part3.html93
-rw-r--r--js/games/nluqo.github.io/~bh/part5.html75
-rw-r--r--js/games/nluqo.github.io/~bh/part6.html95
-rw-r--r--js/games/nluqo.github.io/~bh/part7.html39
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch00.pdfbin0 -> 198768 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch01.pdfbin0 -> 216303 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch02.pdfbin0 -> 162214 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch03.pdfbin0 -> 715501 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch04.pdfbin0 -> 195257 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch05.pdfbin0 -> 366977 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch06.pdfbin0 -> 305737 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch07.pdfbin0 -> 185232 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch08.pdfbin0 -> 299821 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch09.pdfbin0 -> 186681 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch10.pdfbin0 -> 268853 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch11.pdfbin0 -> 290956 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch12.pdfbin0 -> 244647 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch13.pdfbin0 -> 164139 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch14.pdfbin0 -> 235687 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch15.pdfbin0 -> 266257 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch16.pdfbin0 -> 278534 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch17.pdfbin0 -> 301415 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch18.pdfbin0 -> 322388 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch19.pdfbin0 -> 166855 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch20.pdfbin0 -> 241359 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch21.pdfbin0 -> 182166 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch22.pdfbin0 -> 208974 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch23.pdfbin0 -> 196961 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch24.pdfbin0 -> 157417 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch25.pdfbin0 -> 443964 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch26.pdfbin0 -> 77176 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/ssch27.pdfbin0 -> 453122 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch00.pdfbin0 -> 121769 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch01.pdfbin0 -> 88989 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch02.pdfbin0 -> 275642 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch03.pdfbin0 -> 211542 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch04.pdfbin0 -> 149090 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch05.pdfbin0 -> 244366 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch06.pdfbin0 -> 212432 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch07.pdfbin0 -> 134247 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch08.pdfbin0 -> 174254 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch09.pdfbin0 -> 109475 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch10.pdfbin0 -> 149328 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch11.pdfbin0 -> 198628 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch12.pdfbin0 -> 122724 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch13.pdfbin0 -> 431382 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch14.pdfbin0 -> 220642 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch15.pdfbin0 -> 125433 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v1ch16.pdfbin0 -> 159841 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch00.pdfbin0 -> 105228 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch01.pdfbin0 -> 125390 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch02.pdfbin0 -> 106764 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch03.pdfbin0 -> 90710 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch04.pdfbin0 -> 253086 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch05.pdfbin0 -> 80467 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch06.pdfbin0 -> 196738 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch07.pdfbin0 -> 200624 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch08.pdfbin0 -> 98498 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch09.pdfbin0 -> 217934 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch10.pdfbin0 -> 205991 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch11.pdfbin0 -> 217740 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch12.pdfbin0 -> 104702 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch13.pdfbin0 -> 265134 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v2ch14.pdfbin0 -> 509002 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch00.pdfbin0 -> 105223 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch01.pdfbin0 -> 321063 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch02.pdfbin0 -> 470211 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch03.pdfbin0 -> 397189 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch04.pdfbin0 -> 346998 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch05.pdfbin0 -> 423391 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch06.pdfbin0 -> 410641 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/pdf/v3ch07.pdfbin0 -> 163552 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ring.pngbin0 -> 901 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/sicp-small.jpgbin0 -> 8955 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/sicp.html128
-rw-r--r--js/games/nluqo.github.io/~bh/simplemap.pngbin0 -> 21151 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/simply-toc449
-rw-r--r--js/games/nluqo.github.io/~bh/simply-toc.html449
-rw-r--r--js/games/nluqo.github.io/~bh/simply.jpgbin0 -> 28195 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/snap/baby3.pdfbin0 -> 656000 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/accountant.jpgbin0 -> 26229 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/accumulate.jpgbin0 -> 9828 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/alonzo.jpgbin0 -> 12934 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/annotated.jpgbin0 -> 11582 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/append.jpgbin0 -> 12975 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/britain.jpgbin0 -> 26595 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/bucket.jpgbin0 -> 151100 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/cons.jpgbin0 -> 12555 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/curvedarrow.jpgbin0 -> 13630 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/dataflow.jpgbin0 -> 52988 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/definition.jpgbin0 -> 17258 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/elves.jpgbin0 -> 54640 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/every.jpgbin0 -> 14856 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/farside.jpgbin0 -> 99123 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/files.jpgbin0 -> 56512 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/firsttree.jpgbin0 -> 11917 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/fish.jpgbin0 -> 72025 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/fourplus.jpgbin0 -> 3318 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/fractal.jpgbin0 -> 103215 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/function.jpgbin0 -> 37926 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/gallery.jpgbin0 -> 138777 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/hands.jpgbin0 -> 91956 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/hare.jpgbin0 -> 37986 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/hortense.jpgbin0 -> 107729 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/io.jpgbin0 -> 58632 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/keep.jpgbin0 -> 12385 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/list.jpgbin0 -> 10425 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/lockers.jpgbin0 -> 16881 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/mirrors.jpgbin0 -> 25135 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/mondrian.jpgbin0 -> 64791 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/oz.jpgbin0 -> 42672 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse0.jpgbin0 -> 15380 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse1.jpgbin0 -> 18063 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse2.jpgbin0 -> 8557 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse3.jpgbin0 -> 6037 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse4.jpgbin0 -> 7240 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse5.jpgbin0 -> 18845 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse6.jpgbin0 -> 7967 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse7.jpgbin0 -> 25385 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/parse8.jpgbin0 -> 11078 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/patterns.jpgbin0 -> 42685 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/pig.jpgbin0 -> 58111 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/plot3d.jpgbin0 -> 64439 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/plowshare.jpgbin0 -> 70963 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/plugboard.jpgbin0 -> 58769 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/plumbing.jpgbin0 -> 11051 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/polly.jpgbin0 -> 24747 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/santa.jpgbin0 -> 97679 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/sicp.jpgbin0 -> 32451 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/spread.jpgbin0 -> 137845 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/srini.jpgbin0 -> 92777 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/tinker.jpgbin0 -> 56328 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/tree.jpgbin0 -> 21985 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/trombone.jpgbin0 -> 31457 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/tweedle.jpgbin0 -> 127874 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/uparrow.jpgbin0 -> 7397 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-pics/world.jpgbin0 -> 42635 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ss-toc2.html708
-rw-r--r--js/games/nluqo.github.io/~bh/ss/ack.html97
-rw-r--r--js/games/nluqo.github.io/~bh/ss/foreword.html107
-rw-r--r--js/games/nluqo.github.io/~bh/ss/instructor.html202
-rw-r--r--js/games/nluqo.github.io/~bh/ssch0/ack.html122
-rw-r--r--js/games/nluqo.github.io/~bh/ssch0/foreword.html142
-rw-r--r--js/games/nluqo.github.io/~bh/ssch0/instructor.html232
-rw-r--r--js/games/nluqo.github.io/~bh/ssch0/preface.html413
-rw-r--r--js/games/nluqo.github.io/~bh/ssch1/part1.html84
-rw-r--r--js/games/nluqo.github.io/~bh/ssch1/showing533
-rw-r--r--js/games/nluqo.github.io/~bh/ssch1/showing.html549
-rw-r--r--js/games/nluqo.github.io/~bh/ssch10/ttt1127
-rw-r--r--js/games/nluqo.github.io/~bh/ssch10/ttt.html1108
-rw-r--r--js/games/nluqo.github.io/~bh/ssch11/part4.html108
-rw-r--r--js/games/nluqo.github.io/~bh/ssch11/recursion776
-rw-r--r--js/games/nluqo.github.io/~bh/ssch11/recursion.html776
-rw-r--r--js/games/nluqo.github.io/~bh/ssch12/leap860
-rw-r--r--js/games/nluqo.github.io/~bh/ssch12/leap.html860
-rw-r--r--js/games/nluqo.github.io/~bh/ssch12/math1.gifbin0 -> 5802 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ssch13/convince-recur480
-rw-r--r--js/games/nluqo.github.io/~bh/ssch13/convince-recur.html480
-rw-r--r--js/games/nluqo.github.io/~bh/ssch14/number-name91
-rw-r--r--js/games/nluqo.github.io/~bh/ssch14/number-name.html91
-rw-r--r--js/games/nluqo.github.io/~bh/ssch14/recur-patterns789
-rw-r--r--js/games/nluqo.github.io/~bh/ssch14/recur-patterns.html789
-rw-r--r--js/games/nluqo.github.io/~bh/ssch15/adv-recur553
-rw-r--r--js/games/nluqo.github.io/~bh/ssch15/adv-recur.html553
-rw-r--r--js/games/nluqo.github.io/~bh/ssch15/poker142
-rw-r--r--js/games/nluqo.github.io/~bh/ssch15/poker.html142
-rw-r--r--js/games/nluqo.github.io/~bh/ssch16/match1399
-rw-r--r--js/games/nluqo.github.io/~bh/ssch16/match.html1399
-rw-r--r--js/games/nluqo.github.io/~bh/ssch17/lists1109
-rw-r--r--js/games/nluqo.github.io/~bh/ssch17/lists.html1109
-rw-r--r--js/games/nluqo.github.io/~bh/ssch17/part5.html92
-rw-r--r--js/games/nluqo.github.io/~bh/ssch18/trees952
-rw-r--r--js/games/nluqo.github.io/~bh/ssch18/trees.html848
-rw-r--r--js/games/nluqo.github.io/~bh/ssch19/implement-hof604
-rw-r--r--js/games/nluqo.github.io/~bh/ssch19/implement-hof.html604
-rw-r--r--js/games/nluqo.github.io/~bh/ssch2/functions573
-rw-r--r--js/games/nluqo.github.io/~bh/ssch2/functions.html459
-rw-r--r--js/games/nluqo.github.io/~bh/ssch20/io1333
-rw-r--r--js/games/nluqo.github.io/~bh/ssch20/io.html1143
-rw-r--r--js/games/nluqo.github.io/~bh/ssch20/part6.html111
-rw-r--r--js/games/nluqo.github.io/~bh/ssch21/functions-implement1026
-rw-r--r--js/games/nluqo.github.io/~bh/ssch21/functions-implement.html939
-rw-r--r--js/games/nluqo.github.io/~bh/ssch22/files875
-rw-r--r--js/games/nluqo.github.io/~bh/ssch22/files.html875
-rw-r--r--js/games/nluqo.github.io/~bh/ssch23/vectors925
-rw-r--r--js/games/nluqo.github.io/~bh/ssch23/vectors.html925
-rw-r--r--js/games/nluqo.github.io/~bh/ssch24/spread.html592
-rw-r--r--js/games/nluqo.github.io/~bh/ssch25/database880
-rw-r--r--js/games/nluqo.github.io/~bh/ssch25/database.html880
-rw-r--r--js/games/nluqo.github.io/~bh/ssch25/spread-implement1835
-rw-r--r--js/games/nluqo.github.io/~bh/ssch25/spread-implement.html1835
-rw-r--r--js/games/nluqo.github.io/~bh/ssch26/part7.html60
-rw-r--r--js/games/nluqo.github.io/~bh/ssch26/preview231
-rw-r--r--js/games/nluqo.github.io/~bh/ssch26/preview.html262
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appendix-cl.html523
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appendix-funlist170
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appendix-funlist.html182
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appendix-gpl.html403
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appendix-running.html426
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appendix-simply14
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appendix-simply.html965
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appindex.html360
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/appuindex.html474
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/category.html161
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/credits78
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/credits.html117
-rw-r--r--js/games/nluqo.github.io/~bh/ssch27/glossary.html433
-rw-r--r--js/games/nluqo.github.io/~bh/ssch3/part257
-rw-r--r--js/games/nluqo.github.io/~bh/ssch3/part2.html85
-rw-r--r--js/games/nluqo.github.io/~bh/ssch3/people566
-rw-r--r--js/games/nluqo.github.io/~bh/ssch3/people.html486
-rw-r--r--js/games/nluqo.github.io/~bh/ssch4/defining754
-rw-r--r--js/games/nluqo.github.io/~bh/ssch4/defining.html754
-rw-r--r--js/games/nluqo.github.io/~bh/ssch4/math1.gifbin0 -> 2593 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ssch5/words661
-rw-r--r--js/games/nluqo.github.io/~bh/ssch5/words.html661
-rw-r--r--js/games/nluqo.github.io/~bh/ssch6/true892
-rw-r--r--js/games/nluqo.github.io/~bh/ssch6/true.html892
-rw-r--r--js/games/nluqo.github.io/~bh/ssch7/math1.gifbin0 -> 2238 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ssch7/variables534
-rw-r--r--js/games/nluqo.github.io/~bh/ssch7/variables.html505
-rw-r--r--js/games/nluqo.github.io/~bh/ssch8/higher1108
-rw-r--r--js/games/nluqo.github.io/~bh/ssch8/higher.html1108
-rw-r--r--js/games/nluqo.github.io/~bh/ssch8/part3.html108
-rw-r--r--js/games/nluqo.github.io/~bh/ssch9/bridge254
-rw-r--r--js/games/nluqo.github.io/~bh/ssch9/bridge.html200
-rw-r--r--js/games/nluqo.github.io/~bh/ssch9/lambda720
-rw-r--r--js/games/nluqo.github.io/~bh/ssch9/lambda.html720
-rw-r--r--js/games/nluqo.github.io/~bh/stop.html284
-rw-r--r--js/games/nluqo.github.io/~bh/sudoku.pngbin0 -> 50788 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/tshirt.jpgbin0 -> 12211 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/turkey-long.txt146
-rw-r--r--js/games/nluqo.github.io/~bh/turkey.html68
-rw-r--r--js/games/nluqo.github.io/~bh/ucblogo2-tiny.gifbin0 -> 409 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/ucblogo3.gifbin0 -> 8255 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/usermanual4197
-rw-r--r--js/games/nluqo.github.io/~bh/v1-toc2.html452
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch0/ack.html113
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch0/preface.html357
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch1/explor.html449
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch1/v1ch1.html449
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/cartesian.gifbin0 -> 2482 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/dash14.gifbin0 -> 135 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/fd80.gifbin0 -> 122 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/fingers.gifbin0 -> 609 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/flake.gifbin0 -> 1704 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/protect.gifbin0 -> 924 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/splittree.gifbin0 -> 358 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/squaggle.gifbin0 -> 1413 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/squiggle.gifbin0 -> 249 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/squirrel.gifbin0 -> 117 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/turtle.html790
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/turtlestate.gifbin0 -> 1048 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch10/v1ch10.html790
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch11/codelet.gifbin0 -> 814 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch11/fibonacci.gifbin0 -> 736 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch11/recops.html1237
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch11/v1ch11.html1237
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch12/compose.gifbin0 -> 2084 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch12/playfair.html715
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch12/v1ch12.html715
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch13/plan.html1035
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch13/poker.lg78
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch13/su1.jpgbin0 -> 60088 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch13/su2.jpgbin0 -> 78773 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch13/ucb.jpgbin0 -> 90335 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch13/v1ch13.html1035
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch14/graph.gifbin0 -> 5401 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch14/phonetree2.jpgbin0 -> 19455 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch14/pour.html1402
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch14/pour.lg130
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch14/pourall.gifbin0 -> 4289 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch14/poursome.gifbin0 -> 1133 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch14/v1ch14.html1402
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch15/debug.html713
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch16/appendix-gpl.html413
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch16/appindex.html968
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch16/appuindex.html512
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch16/versions.html291
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/annotated.gifbin0 -> 1371 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/badparens.gifbin0 -> 1037 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/blackbirds.gifbin0 -> 1284 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/cheap-tree.gifbin0 -> 1210 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/okparens.gifbin0 -> 1120 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/proced.html1298
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/semantics.gifbin0 -> 1258 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch2/sixes.gifbin0 -> 1254 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch3/mercedes.gifbin0 -> 1080 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch3/taxiframe.gifbin0 -> 1037 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch3/v1ch3.html1083
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch3/variab.html1083
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch4/predic.html830
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch4/v1ch4.html830
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch5/filter.gifbin0 -> 1376 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch5/hof.html1431
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch5/initials.gifbin0 -> 2149 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch5/maperror.gifbin0 -> 1288 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch5/mapoper.gifbin0 -> 998 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch5/v1ch5.html1431
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch6/ttt.html1409
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch6/ttt.lg198
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch6/v1ch6.html1409
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch7/recur1.html931
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch7/v1ch7.html931
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/hanoi1.gifbin0 -> 1332 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/hanoi3.gifbin0 -> 3051 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/recur2-1.gifbin0 -> 1010 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/recur2-3.gifbin0 -> 728 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/recur2-4.gifbin0 -> 1096 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/recur2-5.gifbin0 -> 1560 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/recur2.html756
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch8/v1ch8.html756
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch9/recur3.html570
-rw-r--r--js/games/nluqo.github.io/~bh/v1ch9/v1ch9.html570
-rw-r--r--js/games/nluqo.github.io/~bh/v2-toc2.html439
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch0/ack.html73
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch0/preface.html272
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch1/files.html777
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch1/format.lg157
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch1/formatter.jpgbin0 -> 27664 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch1/v2ch1.html777
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch10/iter.html1404
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch10/v2ch10.html1404
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch11/crypto.html1415
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch11/crypto.lg355
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch11/cryptoflow.gifbin0 -> 13227 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch11/histflow.gifbin0 -> 1713 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch11/preprocess.gifbin0 -> 1799 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch11/v2ch11.html1415
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch12/macro.html624
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/fourie.html853
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/motion.gifbin0 -> 2563 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot1.gifbin0 -> 905 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot11by5.gifbin0 -> 2437 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot16skip3.gifbin0 -> 1247 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot23.gifbin0 -> 1133 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot3skip1.gifbin0 -> 1149 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot45.gifbin0 -> 1094 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot5.gifbin0 -> 1019 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot6.gifbin0 -> 995 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/plot77.gifbin0 -> 1024 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/saw.gifbin0 -> 1326 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/scope.gifbin0 -> 41089 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/sine5.gifbin0 -> 2452 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/square5.gifbin0 -> 1470 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/squig5.gifbin0 -> 2781 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/tri5.gifbin0 -> 2297 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch13/v2ch13.html853
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch14/appindex1284
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch14/appindex.html1284
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch14/appuindex660
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch14/appuindex.html660
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch14/manual.html9
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch2/diff.html645
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch2/diff.lg174
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch2/v2ch2.html645
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch3/exit.html487
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch4/cards.gifbin0 -> 89560 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch4/solitaire.html1683
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch4/solitaire.lg484
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch4/standout.gifbin0 -> 648 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch4/v2ch4.html1683
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch5/prgdat.html499
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch5/v2ch5.html499
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch6/basic.html1489
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch6/basic.lg241
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch6/v2ch6.html1489
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch7/match.html1437
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch7/match.lg166
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch7/v2ch7.html1437
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch8/family.gifbin0 -> 2409 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch8/plist.html513
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch8/v2ch8.html513
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch9/doctor.html1641
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch9/doctorflow.gifbin0 -> 7225 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v2ch9/doctormatch.lg794
-rw-r--r--js/games/nluqo.github.io/~bh/v3-toc2.html246
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch0/ack.html79
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch0/preface.html390
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch0/v3ch0.html79
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/alter-after.gifbin0 -> 3100 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/concat-after.gifbin0 -> 2464 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/concat-before.gifbin0 -> 2673 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/concat2-after.gifbin0 -> 4118 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/concat2-before.gifbin0 -> 4223 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm-add.gifbin0 -> 4470 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm.html1977
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm.lg368
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm2.gifbin0 -> 1363 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm3-reject.gifbin0 -> 2789 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm5.gifbin0 -> 1292 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm6nd.gifbin0 -> 1656 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/fsm79.gifbin0 -> 3531 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/optimize.gifbin0 -> 2293 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/or-nondet.gifbin0 -> 4070 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/repetition.gifbin0 -> 4543 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/v3ch1.html1977
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/waydeep.gifbin0 -> 3268 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/xx1.gifbin0 -> 3631 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch1/xx2.gifbin0 -> 834 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/2choose1.gifbin0 -> 92 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/3choose1.gifbin0 -> 95 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/3choose2.gifbin0 -> 97 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/3choose5.gifbin0 -> 92 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/4c1x3c2x1c1.gifbin0 -> 203 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/4c1x3c3.gifbin0 -> 145 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/4choose1.gifbin0 -> 94 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/4choose2.gifbin0 -> 91 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/5c2x3c2.gifbin0 -> 142 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/5choose2.gifbin0 -> 97 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/5choose5.gifbin0 -> 93 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/6choose2.gifbin0 -> 94 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/full-adder.gifbin0 -> 1202 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/grid.gifbin0 -> 3454 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/grid3.gifbin0 -> 4062 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/grid4.gifbin0 -> 4220 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/grid5.gifbin0 -> 4456 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/half-adder.gifbin0 -> 1344 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math.html2870
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math.lg315
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math11.gifbin0 -> 746 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math12.gifbin0 -> 366 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math13.gifbin0 -> 791 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math14.gifbin0 -> 1145 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math15.gifbin0 -> 566 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math16.gifbin0 -> 1173 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math18.gifbin0 -> 1621 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math21.gifbin0 -> 2201 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math26.gifbin0 -> 509 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math28.gifbin0 -> 586 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math29.gifbin0 -> 609 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math30.gifbin0 -> 1333 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math31.gifbin0 -> 899 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math33.gifbin0 -> 1027 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math36.gifbin0 -> 833 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math37.gifbin0 -> 744 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math38.gifbin0 -> 1215 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math41.gifbin0 -> 1188 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math42.gifbin0 -> 1351 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/math43.gifbin0 -> 613 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/n-1chooser-1.gifbin0 -> 111 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/n-1chooser.gifbin0 -> 104 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/nchooser.gifbin0 -> 85 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/probability.gifbin0 -> 1469 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch2/v3ch2.html2870
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/10choose3.gifbin0 -> 102 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/6c2x4c1.gifbin0 -> 147 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/6choose3.gifbin0 -> 94 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/algs.html2465
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/algs.lg252
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/array.gifbin0 -> 932 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/bigarray.gifbin0 -> 1409 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/codetree.gifbin0 -> 3953 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/growlist.gifbin0 -> 3802 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/list.gifbin0 -> 1557 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/math3.gifbin0 -> 1351 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/math4.gifbin0 -> 894 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/math5.gifbin0 -> 2418 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/math6.gifbin0 -> 409 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/nchoosei.gifbin0 -> 93 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/qformula.gifbin0 -> 460 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/spinach2.gifbin0 -> 2322 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/spinach3.gifbin0 -> 2110 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/v3ch3.html2465
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch3/worldtree.gifbin0 -> 4840 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch4/callby.gifbin0 -> 14584 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch4/langd.html2310
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch4/math1.gifbin0 -> 1171 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch4/partition.gifbin0 -> 596 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch4/pascal.lg1153
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/a+b.gifbin0 -> 129 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/ambiguous.gifbin0 -> 1693 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/blocks.gifbin0 -> 1567 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/langi.html3297
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/memory.gifbin0 -> 2950 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/pascal.lg1217
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/pif.gifbin0 -> 1464 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/rtn1.gifbin0 -> 1616 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/rtn2.gifbin0 -> 1357 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/stack1.gifbin0 -> 1226 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/stack2.gifbin0 -> 3380 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/tokenized.gifbin0 -> 1262 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/unambiguous.gifbin0 -> 1526 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/v3ch5.html3297
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch5/vdash.gifbin0 -> 56 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch6/ai.html3070
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch6/atn.gifbin0 -> 12944 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch6/pattern.gifbin0 -> 2065 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch6/sentence.gifbin0 -> 1664 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch6/student.lg1181
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch6/v3ch6.html3070
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch7/appindex.html1435
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch7/appuindex.html1038
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch7/biblio.html341
-rw-r--r--js/games/nluqo.github.io/~bh/v3ch7/permissions.html73
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/awaken.jpgbin0 -> 87105 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/centralia.pngbin0 -> 400419 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/countdown.pngbin0 -> 1277012 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/doonesbury.pngbin0 -> 1012948 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/existentialism.pngbin0 -> 737487 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/foxtrot.pngbin0 -> 31632 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/g-court.pngbin0 -> 194273 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/gaia-ha-02stretched.pngbin0 -> 66927 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/gifts-ice.jpgbin0 -> 63586 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/girlgenius.jpgbin0 -> 18377 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/kiwi-blitz.pngbin0 -> 35676 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/nib-logo.jpgbin0 -> 43219 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/prophecy-circle.pngbin0 -> 148346 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/qc.pngbin0 -> 29640 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/replay.jpgbin0 -> 110553 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/sleepless.jpgbin0 -> 100289 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/smbc.pngbin0 -> 145000 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/tripping-over-you.pngbin0 -> 76619 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/twin-dragons.pngbin0 -> 118972 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/twokinds.pngbin0 -> 160616 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/unsounded.jpgbin0 -> 8737 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/white-noise.pngbin0 -> 1037488 bytes
-rw-r--r--js/games/nluqo.github.io/~bh/webcomics/xkcd.pngbin0 -> 11001 bytes
1061 files changed, 347332 insertions, 0 deletions
diff --git a/js/games/nluqo.github.io/README.md b/js/games/nluqo.github.io/README.md
new file mode 100644
index 0000000..b0d016c
--- /dev/null
+++ b/js/games/nluqo.github.io/README.md
@@ -0,0 +1,5 @@
+# what is this?
+
+this is a downloaded copy of jeremiah reid's ["broughlike tutorial"](https://nluqo.github.io/broughlike-tutorial/index.html)
+
+also available on github, <https://github.com/nluqo/broughlike-tutorial/>
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/bird.png b/js/games/nluqo.github.io/broughlike-tutorial/art/bird.png
new file mode 100644
index 0000000..5ed4b32
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/bird.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/bolt-horizontal.png b/js/games/nluqo.github.io/broughlike-tutorial/art/bolt-horizontal.png
new file mode 100644
index 0000000..43bf6b6
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/bolt-horizontal.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/bolt-vertical.png b/js/games/nluqo.github.io/broughlike-tutorial/art/bolt-vertical.png
new file mode 100644
index 0000000..48405e5
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/bolt-vertical.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/boom.png b/js/games/nluqo.github.io/broughlike-tutorial/art/boom.png
new file mode 100644
index 0000000..5c04ddd
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/boom.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/eater.png b/js/games/nluqo.github.io/broughlike-tutorial/art/eater.png
new file mode 100644
index 0000000..713ce3f
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/eater.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/exit.png b/js/games/nluqo.github.io/broughlike-tutorial/art/exit.png
new file mode 100644
index 0000000..eee43e8
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/exit.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/floor.png b/js/games/nluqo.github.io/broughlike-tutorial/art/floor.png
new file mode 100644
index 0000000..5f15598
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/floor.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/heal.png b/js/games/nluqo.github.io/broughlike-tutorial/art/heal.png
new file mode 100644
index 0000000..55b6a74
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/heal.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/hp.png b/js/games/nluqo.github.io/broughlike-tutorial/art/hp.png
new file mode 100644
index 0000000..79e3c3d
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/hp.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/jester.png b/js/games/nluqo.github.io/broughlike-tutorial/art/jester.png
new file mode 100644
index 0000000..868855a
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/jester.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/player-corpse.png b/js/games/nluqo.github.io/broughlike-tutorial/art/player-corpse.png
new file mode 100644
index 0000000..8ff5dd8
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/player-corpse.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/player.png b/js/games/nluqo.github.io/broughlike-tutorial/art/player.png
new file mode 100644
index 0000000..33e33b0
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/player.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/snake.png b/js/games/nluqo.github.io/broughlike-tutorial/art/snake.png
new file mode 100644
index 0000000..9347a31
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/snake.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/tank.png b/js/games/nluqo.github.io/broughlike-tutorial/art/tank.png
new file mode 100644
index 0000000..efda441
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/tank.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/teleport.png b/js/games/nluqo.github.io/broughlike-tutorial/art/teleport.png
new file mode 100644
index 0000000..a743899
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/teleport.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/treasure.png b/js/games/nluqo.github.io/broughlike-tutorial/art/treasure.png
new file mode 100644
index 0000000..cfd92b7
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/treasure.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/art/wall.png b/js/games/nluqo.github.io/broughlike-tutorial/art/wall.png
new file mode 100644
index 0000000..684a184
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/art/wall.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/index.html b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/index.html
new file mode 100644
index 0000000..a4d4d57
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/index.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<title>AWESOME BROUGHLIKE</title>
+
+<style>
+    canvas{
+        outline: 1px solid white;
+    }
+
+    body{
+        background-color: indigo;
+        text-align: center;
+        margin-top: 50px;
+    }
+</style>
+
+<canvas></canvas>
+<script src="js/game.js"></script>
+<script src="js/map.js"></script>
+<script src="js/tile.js"></script>
+<script src="js/monster.js"></script>
+<script src="js/util.js"></script>
+<script src="js/spell.js"></script>
+<script>
+    tileSize = 64;
+    numTiles = 9;
+    uiWidth = 4;
+    level = 1;
+    maxHp = 6;
+
+    spritesheet = new Image();
+    spritesheet.src = 'spritesheet.png';
+    spritesheet.onload = showTitle;
+                             
+    gameState = "loading";  
+
+    startingHp = 3; 
+    numLevels = 6;      
+
+    shakeAmount = 0;       
+    shakeX = 0;                 
+    shakeY = 0;      
+
+    document.querySelector("html").onkeypress = function(e){
+        if(gameState == "title"){                              
+            startGame();                
+        }else if(gameState == "dead"){                             
+            showTitle();                                        
+        }else if(gameState == "running"){            
+            if(e.key=="w") player.tryMove(0, -1);
+            if(e.key=="s") player.tryMove(0, 1);
+            if(e.key=="a") player.tryMove(-1, 0);
+            if(e.key=="d") player.tryMove(1, 0);
+
+            if(e.key>=1 && e.key<=9) player.castSpell(e.key-1);
+        }
+    };
+
+    setInterval(draw, 15);
+
+    setupCanvas();
+
+    initSounds();
+</script>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/game.js b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/game.js
new file mode 100644
index 0000000..d11c64d
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/game.js
@@ -0,0 +1,205 @@
+function setupCanvas(){
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+
+    canvas.width = tileSize*(numTiles+uiWidth);
+    canvas.height = tileSize*numTiles;
+    canvas.style.width = canvas.width + 'px';
+    canvas.style.height = canvas.height + 'px';
+    ctx.imageSmoothingEnabled = false;
+}
+
+function drawSprite(sprite, x, y){
+    ctx.drawImage(
+        spritesheet,
+        sprite*16,
+        0,
+        16,
+        16,
+        x*tileSize + shakeX,
+        y*tileSize + shakeY,
+        tileSize,
+        tileSize
+    );
+}
+
+function draw(){
+    if(gameState == "running" || gameState == "dead"){  
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+
+        screenshake();
+
+        for(let i=0;i<numTiles;i++){
+            for(let j=0;j<numTiles;j++){
+                getTile(i,j).draw();
+            }
+        }
+
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].draw();
+        }
+
+        player.draw();
+
+        drawText("Level: "+level, 30, false, 40, "violet");
+        drawText("Score: "+score, 30, false, 70, "violet");
+
+        for(let i=0; i<player.spells.length; i++){
+            let spellText = (i+1) + ") " + (player.spells[i] || "");                        
+            drawText(spellText, 20, false, 110+i*40, "aqua");        
+        }
+    }
+}
+
+function tick(){
+    for(let k=monsters.length-1;k>=0;k--){
+        if(!monsters[k].dead){
+            monsters[k].update();
+        }else{
+            monsters.splice(k,1);
+        }
+    }
+
+    player.update();
+
+    if(player.dead){    
+        addScore(score, false);
+        gameState = "dead";
+    }
+
+    spawnCounter--;
+    if(spawnCounter <= 0){  
+        spawnMonster();
+        spawnCounter = spawnRate;
+        spawnRate--;
+    }
+}
+
+function showTitle(){                                          
+    ctx.fillStyle = 'rgba(0,0,0,.75)';
+    ctx.fillRect(0,0,canvas.width, canvas.height);
+
+    gameState = "title";
+
+    drawText("SUPER", 40, true, canvas.height/2 - 110, "white");
+    drawText("BROUGH BROS.", 70, true, canvas.height/2 - 50, "white"); 
+
+    drawScores(); 
+}
+
+function startGame(){                                           
+    level = 1;
+    score = 0;
+    numSpells = 1;
+    startLevel(startingHp);
+
+    gameState = "running";
+}
+
+function startLevel(playerHp, playerSpells){  
+    spawnRate = 15;              
+    spawnCounter = spawnRate;  
+
+    generateLevel();
+
+    player = new Player(randomPassableTile());
+    player.hp = playerHp;
+    if(playerSpells){
+        player.spells = playerSpells;
+    } 
+
+    randomPassableTile().replace(Exit); 
+}
+
+function drawText(text, size, centered, textY, color){
+    ctx.fillStyle = color;
+    ctx.font = size + "px monospace";
+    let textX;
+    if(centered){
+        textX = (canvas.width-ctx.measureText(text).width)/2;
+    }else{
+        textX = canvas.width-uiWidth*tileSize+25;
+    }
+
+    ctx.fillText(text, textX, textY);
+}
+
+function getScores(){
+    if(localStorage["scores"]){
+        return JSON.parse(localStorage["scores"]);
+    }else{
+        return [];
+    }
+}
+
+function addScore(score, won){
+    let scores = getScores();
+    let scoreObject = {score: score, run: 1, totalScore: score, active: won};
+    let lastScore = scores.pop();
+
+    if(lastScore){
+        if(lastScore.active){
+            scoreObject.run = lastScore.run+1;
+            scoreObject.totalScore += lastScore.totalScore;
+        }else{
+            scores.push(lastScore);
+        }
+    }
+    scores.push(scoreObject);
+
+    localStorage["scores"] = JSON.stringify(scores);
+}
+
+function drawScores(){
+    let scores = getScores();
+    if(scores.length){
+        drawText(
+            rightPad(["RUN","SCORE","TOTAL"]),
+            18,
+            true,
+            canvas.height/2,
+            "white"
+        );
+
+        let newestScore = scores.pop();
+        scores.sort(function(a,b){
+            return b.totalScore - a.totalScore;
+        });
+        scores.unshift(newestScore);
+
+        for(let i=0;i<Math.min(10,scores.length);i++){
+            let scoreText = rightPad([scores[i].run, scores[i].score, scores[i].totalScore]);
+            drawText(
+                scoreText,
+                18,
+                true,
+                canvas.height/2 + 24+i*24,
+                i == 0 ? "aqua" : "violet"
+            );
+        }
+    }
+}
+
+function screenshake(){
+    if(shakeAmount){
+        shakeAmount--;
+    }
+    let shakeAngle = Math.random()*Math.PI*2;
+    shakeX = Math.round(Math.cos(shakeAngle)*shakeAmount);
+    shakeY = Math.round(Math.sin(shakeAngle)*shakeAmount);
+}
+
+function initSounds(){          
+    sounds = {
+        hit1: new Audio('sounds/hit1.wav'),
+        hit2: new Audio('sounds/hit2.wav'),
+        treasure: new Audio('sounds/treasure.wav'),
+        newLevel: new Audio('sounds/newLevel.wav'),
+        spell: new Audio('sounds/spell.wav'),
+    };
+}
+
+function playSound(soundName){                       
+    sounds[soundName].currentTime = 0;  
+    sounds[soundName].play();
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/map.js b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/map.js
new file mode 100644
index 0000000..41a1aab
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/map.js
@@ -0,0 +1,66 @@
+function generateLevel(){
+    tryTo('generate map', function(){
+        return generateTiles() == randomPassableTile().getConnectedTiles().length;
+    });
+
+    generateMonsters();
+                                           
+    for(let i=0;i<3;i++){                                         
+        randomPassableTile().treasure = true;                            
+    }
+}
+
+function generateTiles(){
+    let passableTiles=0;
+    tiles = [];
+    for(let i=0;i<numTiles;i++){
+        tiles[i] = [];
+        for(let j=0;j<numTiles;j++){
+            if(Math.random() < 0.3 || !inBounds(i,j)){
+                tiles[i][j] = new Wall(i,j);
+            }else{
+                tiles[i][j] = new Floor(i,j);
+                passableTiles++;
+            }
+        }
+    }
+    return passableTiles;
+}
+
+function inBounds(x,y){
+    return x>0 && y>0 && x<numTiles-1 && y<numTiles-1;
+}
+
+
+function getTile(x, y){
+    if(inBounds(x,y)){
+        return tiles[x][y];
+    }else{
+        return new Wall(x,y);
+    }
+}
+
+function randomPassableTile(){
+    let tile;
+    tryTo('get random passable tile', function(){
+        let x = randomRange(0,numTiles-1);
+        let y = randomRange(0,numTiles-1);
+        tile = getTile(x, y);
+        return tile.passable && !tile.monster;
+    });
+    return tile;
+}
+
+function generateMonsters(){
+    monsters = [];
+    let numMonsters = level+1;
+    for(let i=0;i<numMonsters;i++){
+        spawnMonster();
+    }
+}
+
+function spawnMonster(){
+    let monsterType = shuffle([Bird, Snake, Tank, Eater, Jester])[0];
+    let monster = new monsterType(randomPassableTile());
+    monsters.push(monster);
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/monster.js b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/monster.js
new file mode 100644
index 0000000..7e36257
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/monster.js
@@ -0,0 +1,223 @@
+class Monster{
+    constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+        this.teleportCounter = 2;
+        this.offsetX = 0;                                                   
+        this.offsetY = 0;      
+        this.lastMove = [-1,0];    
+        this.bonusAttack = 0;
+    }
+
+    heal(damage){
+        this.hp = Math.min(maxHp, this.hp+damage);
+    }
+
+    update(){
+        this.teleportCounter--;
+        if(this.stunned || this.teleportCounter > 0){ 
+            this.stunned = false;
+            return;
+        }
+
+        this.doStuff();
+    }
+
+    doStuff(){
+       let neighbors = this.tile.getAdjacentPassableNeighbors();
+       
+       neighbors = neighbors.filter(t => !t.monster || t.monster.isPlayer);
+
+       if(neighbors.length){
+           neighbors.sort((a,b) => a.dist(player.tile) - b.dist(player.tile));
+           let newTile = neighbors[0];
+           this.tryMove(newTile.x - this.tile.x, newTile.y - this.tile.y);
+       }
+    }
+
+    getDisplayX(){                     
+        return this.tile.x + this.offsetX;
+    }
+
+    getDisplayY(){                                                                  
+        return this.tile.y + this.offsetY;
+    }
+
+    draw(){
+        if(this.teleportCounter > 0){                  
+            drawSprite(10, this.getDisplayX(),  this.getDisplayY());                 
+        }else{
+            drawSprite(this.sprite, this.getDisplayX(),  this.getDisplayY());
+            this.drawHp();
+        }
+
+        this.offsetX -= Math.sign(this.offsetX)*(1/8);     
+        this.offsetY -= Math.sign(this.offsetY)*(1/8); 
+    }
+
+    drawHp(){
+        for(let i=0; i<this.hp; i++){
+            drawSprite(
+                9,
+                this.getDisplayX() + (i%3)*(5/16),   
+                this.getDisplayY() - Math.floor(i/3)*(5/16)
+            );
+        }
+    }   
+
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            this.lastMove = [dx,dy];
+            if(!newTile.monster){
+                this.move(newTile);
+            }else{
+                if(this.isPlayer != newTile.monster.isPlayer){
+                    this.attackedThisTurn = true;
+                    newTile.monster.stunned = true;
+                    newTile.monster.hit(1 + this.bonusAttack);
+                    this.bonusAttack = 0;
+
+                    shakeAmount = 5;
+
+                    this.offsetX = (newTile.x - this.tile.x)/2;         
+                    this.offsetY = (newTile.y - this.tile.y)/2;   
+                }
+            }
+            return true;
+        }
+    }
+
+    hit(damage){            
+        if(this.shield>0){           
+            return;                                                             
+        }
+
+        this.hp -= damage;
+        if(this.hp <= 0){
+            this.die();
+        }
+
+        if(this.isPlayer){                                                     
+            playSound("hit1");                                              
+        }else{                                                       
+            playSound("hit2");                                              
+        }
+    }
+
+    die(){
+        this.dead = true;
+        this.tile.monster = null;
+        this.sprite = 1;
+    }
+
+    move(tile){
+        if(this.tile){
+            this.tile.monster = null;
+            this.offsetX = this.tile.x - tile.x;    
+            this.offsetY = this.tile.y - tile.y;
+        }
+        this.tile = tile;
+        tile.monster = this;                                           
+        tile.stepOn(this);   
+    }
+}
+
+class Player extends Monster{
+    constructor(tile){
+        super(tile, 0, 3);
+        this.isPlayer = true;
+        this.teleportCounter = 0;
+        this.spells = shuffle(Object.keys(spells)).splice(0,numSpells);
+    }
+
+    update(){          
+        this.shield--;                                                      
+    }
+
+    tryMove(dx, dy){
+        if(super.tryMove(dx,dy)){
+            tick();
+        }
+    }
+
+    addSpell(){                                                       
+        let newSpell = shuffle(Object.keys(spells))[0];
+        this.spells.push(newSpell);
+    }
+
+    castSpell(index){                                                   
+        let spellName = this.spells[index];
+        if(spellName){
+            delete this.spells[index];
+            spells[spellName]();
+            playSound("spell");
+            tick();
+        }
+    }
+}
+
+class Bird extends Monster{
+    constructor(tile){
+        super(tile, 4, 3);
+    }
+}
+
+class Snake extends Monster{
+    constructor(tile){
+        super(tile, 5, 1);
+    }
+
+    doStuff(){
+        this.attackedThisTurn = false;
+        super.doStuff();
+
+        if(!this.attackedThisTurn){
+            super.doStuff();
+        }
+    }
+}
+
+class Tank extends Monster{
+    constructor(tile){
+        super(tile, 6, 2);
+    }
+
+    update(){
+        let startedStunned = this.stunned;
+        super.update();
+        if(!startedStunned){
+            this.stunned = true;
+        }
+    }
+}
+
+class Eater extends Monster{
+    constructor(tile){
+        super(tile, 7, 1);
+    }
+
+    doStuff(){
+        let neighbors = this.tile.getAdjacentNeighbors().filter(t => !t.passable && inBounds(t.x,t.y));
+        if(neighbors.length){
+            neighbors[0].replace(Floor);
+            this.heal(0.5);
+        }else{
+            super.doStuff();
+        }
+    }
+}
+
+class Jester extends Monster{
+    constructor(tile){
+        super(tile, 8, 2);
+    }
+
+    doStuff(){
+        let neighbors = this.tile.getAdjacentPassableNeighbors();
+        if(neighbors.length){
+            this.tryMove(neighbors[0].x - this.tile.x, neighbors[0].y - this.tile.y);
+        }
+    }
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/spell.js b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/spell.js
new file mode 100644
index 0000000..0b33e56
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/spell.js
@@ -0,0 +1,139 @@
+spells = {
+    WOOP: function(){
+        player.move(randomPassableTile());
+    },
+    QUAKE: function(){                  
+        for(let i=0; i<numTiles; i++){
+            for(let j=0; j<numTiles; j++){
+                let tile = getTile(i,j);
+                if(tile.monster){
+                    let numWalls = 4 - tile.getAdjacentPassableNeighbors().length;
+                    tile.monster.hit(numWalls*2);
+                }
+            }
+        }
+        shakeAmount = 20;
+    },
+    MAELSTROM: function(){
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].move(randomPassableTile());
+            monsters[i].teleportCounter = 2;
+        }
+    },
+    MULLIGAN: function(){
+        startLevel(1, player.spells);
+    },
+    AURA: function(){
+        player.tile.getAdjacentNeighbors().forEach(function(t){
+            t.setEffect(13);
+            if(t.monster){
+                t.monster.heal(1);
+            }
+        });
+        player.tile.setEffect(13);
+        player.heal(1);
+    },
+    DASH: function(){
+        let newTile = player.tile;
+        while(true){
+            let testTile = newTile.getNeighbor(player.lastMove[0],player.lastMove[1]);
+            if(testTile.passable && !testTile.monster){
+                newTile = testTile;
+            }else{
+                break;
+            }
+        }
+        if(player.tile != newTile){
+            player.move(newTile);
+            newTile.getAdjacentNeighbors().forEach(t => {
+                if(t.monster){
+                    t.setEffect(14);
+                    t.monster.stunned = true;
+                    t.monster.hit(1);
+                }
+            });
+        }
+    },
+    DIG: function(){
+        for(let i=1;i<numTiles-1;i++){
+            for(let j=1;j<numTiles-1;j++){
+                let tile = getTile(i,j);
+                if(!tile.passable){
+                    tile.replace(Floor);
+                }
+            }
+        }
+        player.tile.setEffect(13);
+        player.heal(2);
+    },
+    KINGMAKER: function(){
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].heal(1);
+            monsters[i].tile.treasure = true;
+        }
+    },
+    ALCHEMY: function(){
+        player.tile.getAdjacentNeighbors().forEach(function(t){
+            if(!t.passable && inBounds(t.x, t.y)){
+                t.replace(Floor).treasure = true;
+            }
+        });
+    },
+    POWER: function(){
+        player.bonusAttack=5;
+    },
+    BUBBLE: function(){
+        for(let i=player.spells.length-1;i>0;i--){
+            if(!player.spells[i]){
+                player.spells[i] = player.spells[i-1];
+            }
+        }
+    },
+    BRAVERY: function(){
+        player.shield = 2;
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].stunned = true;
+        }
+    },
+    BOLT: function(){
+        boltTravel(player.lastMove, 15 + Math.abs(player.lastMove[1]), 4);
+    },
+    CROSS: function(){
+        let directions = [
+            [0, -1],
+            [0, 1],
+            [-1, 0],
+            [1, 0]
+        ];
+        for(let k=0;k<directions.length;k++){
+            boltTravel(directions[k], 15 + Math.abs(directions[k][1]), 2);
+        }
+    },
+    EX: function(){
+        let directions = [
+            [-1, -1],
+            [-1, 1],
+            [1, -1],
+            [1, 1]
+        ];
+        for(let k=0;k<directions.length;k++){
+            boltTravel(directions[k], 14, 3);
+        }
+    }
+};
+
+function boltTravel(direction, effect, damage){
+    let newTile = player.tile;
+    while(true){
+        let testTile = newTile.getNeighbor(direction[0], direction[1]);
+        if(testTile.passable){
+            newTile = testTile;
+            if(newTile.monster){
+                newTile.monster.hit(damage);
+            }
+            newTile.setEffect(effect);
+        }else{
+            break;
+        }
+    }
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/tile.js b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/tile.js
new file mode 100644
index 0000000..3cc40e5
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/tile.js
@@ -0,0 +1,112 @@
+class Tile{
+    constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+    }
+
+    replace(newTileType){
+        tiles[this.x][this.y] = new newTileType(this.x, this.y);
+        return tiles[this.x][this.y];
+    }
+
+    //manhattan distance
+    dist(other){
+        return Math.abs(this.x-other.x)+Math.abs(this.y-other.y);
+    }
+
+    getNeighbor(dx, dy){
+        return getTile(this.x + dx, this.y + dy)
+    }
+
+    getAdjacentNeighbors(){
+        return shuffle([
+            this.getNeighbor(0, -1),
+            this.getNeighbor(0, 1),
+            this.getNeighbor(-1, 0),
+            this.getNeighbor(1, 0)
+        ]);
+    }
+
+    getAdjacentPassableNeighbors(){
+        return this.getAdjacentNeighbors().filter(t => t.passable);
+    }
+
+    getConnectedTiles(){
+        let connectedTiles = [this];
+        let frontier = [this];
+        while(frontier.length){
+            let neighbors = frontier.pop()
+                                .getAdjacentPassableNeighbors()
+                                .filter(t => !connectedTiles.includes(t));
+            connectedTiles = connectedTiles.concat(neighbors);
+            frontier = frontier.concat(neighbors);
+        }
+        return connectedTiles;
+    }
+
+    draw(){
+        drawSprite(this.sprite, this.x, this.y);
+
+        if(this.treasure){                      
+            drawSprite(12, this.x, this.y);                                             
+        }
+
+        if(this.effectCounter){                    
+            this.effectCounter--;
+            ctx.globalAlpha = this.effectCounter/30;
+            drawSprite(this.effect, this.x, this.y);
+            ctx.globalAlpha = 1;
+        }
+    }
+
+    setEffect(effectSprite){                                  
+        this.effect = effectSprite;
+        this.effectCounter = 30;
+    }
+}
+
+class Floor extends Tile{
+    constructor(x,y){
+        super(x, y, 2, true);
+    };
+
+    stepOn(monster){
+        if(monster.isPlayer && this.treasure){   
+            score++;   
+            if(score % 3 == 0 && numSpells < 9){                         
+                numSpells++;                
+                player.addSpell();            
+            }  
+            playSound("treasure");            
+            this.treasure = false;
+            spawnMonster();
+        }
+    }
+}
+
+class Wall extends Tile{
+    constructor(x, y){
+        super(x, y, 3, false);
+    }
+}
+
+class Exit extends Tile{
+    constructor(x, y){
+        super(x, y, 11, true);
+    }
+
+    stepOn(monster){
+        if(monster.isPlayer){
+            playSound("newLevel"); 
+            if(level == numLevels){
+                addScore(score, true); 
+                showTitle();
+            }else{
+                level++;
+                startLevel(Math.min(maxHp, player.hp+1));
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/util.js b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/util.js
new file mode 100644
index 0000000..a56c6a9
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/completed/stage8/js/util.js
@@ -0,0 +1,36 @@
+function tryTo(description, callback){
+    for(let timeout=1000;timeout>0;timeout--){
+        if(callback()){
+            return;
+        }
+    }
+    throw 'Timeout while trying to '+description;
+}
+
+
+function randomRange(min, max){
+    return Math.floor(Math.random()*(max-min+1))+min;
+}
+
+function shuffle(arr){
+    let temp, r;
+    for (let i = 1; i < arr.length; i++) {
+        r = randomRange(0,i);
+        temp = arr[i];
+        arr[i] = arr[r];
+        arr[r] = temp;
+    }
+    return arr;
+}
+
+function rightPad(textArray){
+    let finalText = "";
+    textArray.forEach(text => {
+        text+="";
+        for(let i=text.length;i<10;i++){
+            text+=" ";
+        }
+        finalText += text;
+    });
+    return finalText;
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/diff.js b/js/games/nluqo.github.io/broughlike-tutorial/diff.js
new file mode 100644
index 0000000..e70df1b
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/diff.js
@@ -0,0 +1,38 @@
+//hardcoded contents
+content.NEWLINE = "\n\n";
+
+Object.keys(content).forEach(k => {
+	document.querySelectorAll("#content"+k).forEach(contentContainer => {
+		if(contentContainer){
+			contentContainer.textContent = content[k];
+		}else{
+			console.log("MISSING CONTAINER FOR #content"+k);
+		}
+	});
+});
+
+hljs.initHighlightingOnLoad();
+
+document.querySelectorAll("pre code").forEach(n => {
+	let lines = n.innerHTML.split("\n");
+	let prefixChar = ''
+	prefixChar += '<span class="diff">';
+	if(n.classList.contains('add')){
+		prefixChar += '<span class="noselect">&nbsp;+&nbsp;</span>';
+	}else if(n.classList.contains('remove')){
+		prefixChar += '<span class="noselect">&nbsp;-&nbsp;</span>';
+	}else{
+		prefixChar += '<span class="noselect">&nbsp;&nbsp;&nbsp;</span>';
+	}
+	prefixChar += '</span>';
+	if(lines.length){
+		let lineHtml = lines[0];
+		//ignore first and last lines
+		for(let i=1;i<lines.length-1;i++){
+			lineHtml += "\n";
+			lineHtml += prefixChar;
+			lineHtml += lines[i] ;
+		}
+		n.innerHTML = lineHtml;
+	}
+});
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/highlight.min.css b/js/games/nluqo.github.io/broughlike-tutorial/highlight.min.css
new file mode 100644
index 0000000..00adf5f
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/highlight.min.css
@@ -0,0 +1,130 @@
+.hljs{
+	display:block;
+	overflow-x:auto;
+	padding:0.5em;
+}
+/*
+
+#232224;
+#656f78;
+#434346;
+
+#007cff;
+#835c1d;
+#8a00a3;
+#ff3ac1;
+#001978;
+#006405;
+#ff6f00;
+*/
+
+body{
+	--color-default: #007CCA;
+	--color-comment: #929EA8;
+	--color-string: #6A0638;
+	--color-addition: #5200A5;
+	--color-meta: #B1B061;
+
+	--color-tag: #B34DBC;
+	--color-keyword: #FF45D1;
+	--color-name: #FF45D1;
+	--color-attribute: #FF80E0;
+	--color-params: #499901;
+	--color-number: #B32600;
+
+	/* no idea */
+	--color-title: red; 
+	--color-variable: red;
+	--color-literal: red;
+	--color-metastring: red;
+}
+
+body .remove, body .add, body .greyCode{/*
+
+	--color-default: #f8f8f2;
+	--color-comment: #888888;
+	--color-string: #ac80e8;
+	--color-title: #880000;
+	--color-variable: #BC6060;
+	--color-literal: #78A960;
+	--color-addition: #56d8ef;
+	--color-meta: #1f7199;
+	--color-metastring: #4d99bf;
+
+	--color-tag: #f8f8f2;
+	--color-keyword: #f92472;
+	--color-attribute: #98e22a;
+	--color-name: #f92472;
+	--color-params: #fd9622;
+	--color-number: #ac80ff;*/
+}
+
+.hljs,.hljs-subst{
+	color: var(--color-default);
+}
+
+.hljs-params{
+	color: var(--color-params);
+}
+
+.hljs-comment{
+	color: var(--color-comment);
+}
+
+.hljs-name{
+	color: var(--color-name);
+}
+
+.hljs-keyword,.hljs-selector-tag,.hljs-meta-keyword,.hljs-doctag{
+	font-weight: bold;
+	color: var(--color-keyword);
+}
+
+.hljs-attribute, .hljs-attr{
+	color: var(--color-attribute);
+}
+
+.hljs-type,.hljs-string,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{
+	color: var(--color-string);
+}
+
+.hljs-number{
+	color: var(--color-number);
+}
+
+.hljs-tag{
+	color: var(--color-tag);
+}
+
+.hljs-title,.hljs-section{
+	color: var(--color-title);
+	font-weight:bold
+}
+
+.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-selector-pseudo{
+	color: var(--color-variable);
+}
+
+.hljs-literal{
+	color: var(--color-literal);
+}
+
+.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition, .hljs-function{
+	color: var(--color-addition);
+}
+
+.hljs-meta{
+	color: var(--color-meta);
+}
+
+.hljs-metastring{
+	color: var(--color-metastring);
+}
+
+.hljs-emphasis{
+	font-style:italic
+}
+
+.hljs-strong{
+	font-weight:bold
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/highlight.min.js b/js/games/nluqo.github.io/broughlike-tutorial/highlight.min.js
new file mode 100644
index 0000000..85208f5
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/highlight.min.js
@@ -0,0 +1,3 @@
+/*! highlight.js v9.14.2 | BSD3 License | git.io/hljslicense */
+!function(e){var t="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):t&&(t.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return t.hljs}))}(function(e){function t(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0===r.index}function n(e){return M.test(e)}function i(e){var t,r,a,i,s=e.className+" ";if(s+=e.parentNode?e.parentNode.className:"",r=B.exec(s))return w(r[1])?r[1]:"no-highlight";for(s=s.split(/\s+/),t=0,a=s.length;a>t;t++)if(i=s[t],n(i)||w(i))return i}function s(e){var t,r={},a=Array.prototype.slice.call(arguments,1);for(t in e)r[t]=e[t];return a.forEach(function(e){for(t in e)r[t]=e[t]}),r}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?n+=i.nodeValue.length:1===i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!==a[0].offset?e[0].offset<a[0].offset?e:a:"start"===a[0].event?e:a:e.length?e:a}function s(e){function a(e){return" "+e.nodeName+'="'+t(e.value).replace('"',"&quot;")+'"'}u+="<"+r(e)+k.map.call(e.attributes,a).join("")+">"}function c(e){u+="</"+r(e)+">"}function o(e){("start"===e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substring(l,b[0].offset)),l=b[0].offset,b===e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b===e&&b.length&&b[0].offset===l);d.reverse().forEach(s)}else"start"===b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(t){return s(e,{v:null},t)})),e.cached_variants||e.eW&&[s(e)]||[e]}function u(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var s={},c=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");s[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?c("keyword",n.k):x(n.k).forEach(function(e){c(e,n.k[e])}),n.k=s}n.lR=r(n.l||/\w+/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.endSameAsBegin&&(n.e=n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),null==n.r&&(n.r=1),n.c||(n.c=[]),n.c=Array.prototype.concat.apply([],n.c.map(function(e){return l("self"===e?n:e)})),n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var o=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=o.length?r(o.join("|"),!0):{exec:function(){return null}}}}a(e)}function d(e,r,n,i){function s(e){return new RegExp(e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function c(e,t){var r,n;for(r=0,n=t.c.length;n>r;r++)if(a(t.c[r].bR,e))return t.c[r].endSameAsBegin&&(t.c[r].eR=s(t.c[r].bR.exec(e)[0])),t.c[r]}function o(e,t){if(a(e.eR,t)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?o(e.parent,t):void 0}function l(e,t){return!n&&a(t.iR,e)}function p(e,t){var r=y.cI?t[0].toLowerCase():t[0];return e.k.hasOwnProperty(r)&&e.k[r]}function m(e,t,r,a){var n=a?"":S.classPrefix,i='<span class="'+n,s=r?"":R;return i+=e+'">',i+t+s}function f(){var e,r,a,n;if(!k.k)return t(M);for(n="",r=0,k.lR.lastIndex=0,a=k.lR.exec(M);a;)n+=t(M.substring(r,a.index)),e=p(k,a),e?(B+=e[1],n+=m(e[0],t(a[0]))):n+=t(a[0]),r=k.lR.lastIndex,a=k.lR.exec(M);return n+t(M.substr(r))}function g(){var e="string"==typeof k.sL;if(e&&!E[k.sL])return t(M);var r=e?d(k.sL,M,!0,x[k.sL]):b(M,k.sL.length?k.sL:void 0);return k.r>0&&(B+=r.r),e&&(x[k.sL]=r.top),m(r.language,r.value,!1,!0)}function _(){C+=null!=k.sL?g():f(),M=""}function h(e){C+=e.cN?m(e.cN,"",!0):"",k=Object.create(e,{parent:{value:k}})}function v(e,t){if(M+=e,null==t)return _(),0;var r=c(t,k);if(r)return r.skip?M+=t:(r.eB&&(M+=t),_(),r.rB||r.eB||(M=t)),h(r,t),r.rB?0:t.length;var a=o(k,t);if(a){var n=k;n.skip?M+=t:(n.rE||n.eE||(M+=t),_(),n.eE&&(M=t));do k.cN&&(C+=R),k.skip||k.sL||(B+=k.r),k=k.parent;while(k!==a.parent);return a.starts&&(a.endSameAsBegin&&(a.starts.eR=a.eR),h(a.starts,"")),n.rE?0:t.length}if(l(t,k))throw new Error('Illegal lexeme "'+t+'" for mode "'+(k.cN||"<unnamed>")+'"');return M+=t,t.length||1}var y=w(e);if(!y)throw new Error('Unknown language: "'+e+'"');u(y);var N,k=i||y,x={},C="";for(N=k;N!==y;N=N.parent)N.cN&&(C=m(N.cN,"",!0)+C);var M="",B=0;try{for(var L,A,$=0;;){if(k.t.lastIndex=$,L=k.t.exec(r),!L)break;A=v(r.substring($,L.index),L[0]),$=L.index+A}for(v(r.substr($)),N=k;N.parent;N=N.parent)N.cN&&(C+=R);return{r:B,value:C,language:e,top:k}}catch(I){if(I.message&&-1!==I.message.indexOf("Illegal"))return{r:0,value:t(r)};throw I}}function b(e,r){r=r||S.languages||x(E);var a={r:0,value:t(e)},n=a;return r.filter(w).filter(N).forEach(function(t){var r=d(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}),n.language&&(a.second_best=n),a}function p(e){return S.tabReplace||S.useBR?e.replace(L,function(e,t){return S.useBR&&"\n"===e?"<br>":S.tabReplace?t.replace(/\t/g,S.tabReplace):""}):e}function m(e,t,r){var a=t?C[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}function f(e){var t,r,a,s,l,u=i(e);n(u)||(S.useBR?(t=document.createElementNS("http://www.w3.org/1999/xhtml","div"),t.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):t=e,l=t.textContent,a=u?d(u,l,!0):b(l),r=c(t),r.length&&(s=document.createElementNS("http://www.w3.org/1999/xhtml","div"),s.innerHTML=a.value,a.value=o(r,c(s),l)),a.value=p(a.value),e.innerHTML=a.value,e.className=m(e.className,u,a.language),e.result={language:a.language,re:a.r},a.second_best&&(e.second_best={language:a.second_best.language,re:a.second_best.r}))}function g(e){S=s(S,e)}function _(){if(!_.called){_.called=!0;var e=document.querySelectorAll("pre code");k.forEach.call(e,f)}}function h(){addEventListener("DOMContentLoaded",_,!1),addEventListener("load",_,!1)}function v(t,r){var a=E[t]=r(e);a.aliases&&a.aliases.forEach(function(e){C[e]=t})}function y(){return x(E)}function w(e){return e=(e||"").toLowerCase(),E[e]||E[C[e]]}function N(e){var t=w(e);return t&&!t.disableAutodetect}var k=[],x=Object.keys,E={},C={},M=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,L=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,R="</span>",S={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=d,e.highlightAuto=b,e.fixMarkup=p,e.highlightBlock=f,e.configure=g,e.initHighlighting=_,e.initHighlightingOnLoad=h,e.registerLanguage=v,e.listLanguages=y,e.getLanguage=w,e.autoDetection=N,e.inherit=s,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(t,r,a){var n=e.inherit({cN:"comment",b:t,e:r,c:[]},a||{});return n.c.push(e.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:"</?",e:">"},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),e.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,r,a,t]}}),e.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+r},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),e.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U|L)?"',e:'"',i:"\\n",c:[e.BE]},{b:'(u8?|U|L)?R"\\(',e:'\\)"'},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},n={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},e.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},e.CLCM,e.CBCM]},i=e.IR+"\\s*\\(",s={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 let for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},c=[t,e.CLCM,e.CBCM,a,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:s,i:"</",c:c.concat([n,{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:s,c:["self",t]},{b:e.IR+"::",k:s},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:s,c:c.concat([{b:/\(/,e:/\)/,k:s,c:c.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+i,rB:!0,e:/[{;=]/,eE:!0,k:s,i:/[^\w\s\*&]/,c:[{b:i,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:s,r:0,c:[e.CLCM,e.CBCM,r,a,t,{b:/\(/,e:/\)/,k:s,r:0,c:["self",e.CLCM,e.CBCM,r,a,t]}]},e.CLCM,e.CBCM,n]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b:/</,e:/>/,c:["self"]},e.TM]}]),exports:{preprocessor:n,strings:r,k:s}}}),e.registerLanguage("cs",function(e){var t={keyword:"abstract as base bool break byte case catch char checked let continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},a={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},n=e.inherit(a,{i:/\n/}),i={cN:"subst",b:"{",e:"}",k:t},s=e.inherit(i,{i:/\n/}),c={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,s]},o={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},i]},l=e.inherit(o,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},s]});i.c=[o,c,a,e.ASM,e.QSM,r,e.CBCM],s.c=[l,c,n,e.ASM,e.QSM,r,e.inherit(e.CBCM,{i:/\n/})];var u={v:[o,c,a,e.ASM,e.QSM]},d=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp","c#"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:"<!--|-->"},{b:"</?",e:">"}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},u,r,{bK:"class interface",e:/[{;=]/,i:/[^\s:,]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+d+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/\s*[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[u,r,e.CBCM]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("css",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:t,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}}),e.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}}),e.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),e.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}}),e.registerLanguage("java",function(e){var t="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",r=t+"(<"+t+"(\\s*,\\s*"+t+")*>)?",a="false synchronized int abstract float private char boolean var static null if let for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",n="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",i={cN:"number",b:n,r:0};return{aliases:["jsp"],k:a,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+r+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:a,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:a,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},i,{cN:"meta",b:"@[A-Za-z]+"}]}}),e.registerLanguage("javascript",function(e){var t="[A-Za-z$_][0-9A-Za-z$_]*",r={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield let export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:r,c:[]},i={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,i,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:r,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,i,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:t+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:t,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+t+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:t},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:s}]}]},{b:/</,e:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:t}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}}),e.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(a,{b:/:/})],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a)],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),e.registerLanguage("makefile",function(e){var t={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%<?\^\+\*]/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t]},a={cN:"variable",b:/\$\([\w-]+\s/,e:/\)/,k:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},c:[t]},n={b:"^"+e.UIR+"\\s*[:+?]?=",i:"\\n",rB:!0,c:[{b:"^"+e.UIR,e:"[:+?]?=",eE:!0}]},i={cN:"meta",b:/^\.PHONY:/,e:/$/,k:{"meta-keyword":".PHONY"},l:/[\.\w]+/},s={cN:"section",b:/^[^\s]+:/,e:/$/,c:[t]};return{aliases:["mk","mak"],k:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath",l:/[\w-]+/,c:[e.HCM,t,r,a,n,i,s]}}),e.registerLanguage("xml",function(e){var t="[A-Za-z0-9\\._:-]+",r={eW:!0,i:/</,r:0,c:[{cN:"attr",b:t,r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("<!--","-->",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[r],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[r],starts:{e:"</script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},r]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}|	)",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},r={keyword:"int float while char export sizeof typedef let struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:"</",c:[t,e.CLCM,e.CBCM,e.CNM,e.QSM,{cN:"string",v:[{b:'@"',e:'"',i:"\\n",c:[e.BE]},{b:"'",e:"[^\\\\]'",i:"[^\\\\][^']"}]},{cN:"meta",b:"#",e:"$",c:[{cN:"meta-string",v:[{b:'"',e:'"'},{b:"<",e:">"}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:s}}),e.registerLanguage("php",function(e){var t={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"meta",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php","php3","php4","php5","php6","php7"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or let for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[r]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},r,{cN:"keyword",b:/\$this\b/},t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("properties",function(e){var t="[ \\t\\f]*",r="[ \\t\\f]+",a="("+t+"[:=]"+t+"|"+r+")",n="([^\\\\\\W:= \\t\\f\\n]|\\\\.)+",i="([^\\\\:= \\t\\f\\n]|\\\\.)+",s={e:a,r:0,starts:{cN:"string",e:/$/,r:0,c:[{b:"\\\\\\n"}]}};return{cI:!0,i:/\S/,c:[e.C("^\\s*[!#]","$"),{b:n+a,rB:!0,c:[{cN:"attr",b:n,endsParent:!0,r:0}],starts:s},{b:i+a,rB:!0,r:0,c:[{cN:"meta",b:i,endsParent:!0,r:0}],starts:s},{cN:"attr",r:0,b:i+t+"$"}]}}),e.registerLanguage("python",function(e){
+var t={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},r={cN:"meta",b:/^(>>>|\.\.\.) /},a={cN:"subst",b:/\{/,e:/\}/,k:t,i:/#/},n={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[e.BE,r],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[e.BE,r],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[e.BE,r,a]},{b:/(fr|rf|f)"""/,e:/"""/,c:[e.BE,r,a]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[e.BE,a]},{b:/(fr|rf|f)"/,e:/"/,c:[e.BE,a]},e.ASM,e.QSM]},i={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},s={cN:"params",b:/\(/,e:/\)/,c:["self",r,i,n]};return a.c=[n,i,r],{aliases:["py","gyp","ipython"],k:t,i:/(<\/|->|\?)|=>/,c:[r,i,n,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,s,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},a={cN:"doctag",b:"@[A-Za-z]+"},n={b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},o={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:t}),o].concat(i)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var u="[>?]>",d="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,starts:{e:"$",c:l}},{cN:"meta",b:"^("+u+"|"+d+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:i.concat(p).concat(l)}}),e.registerLanguage("shell",function(e){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_let names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null unknown",built_in:"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t,e.HCM]},e.CBCM,t,e.HCM]}}),e});
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/index.html b/js/games/nluqo.github.io/broughlike-tutorial/index.html
new file mode 100644
index 0000000..026a6f0
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/index.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 0</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+		<h1>JavaScript Broughlike Tutorial</h1>
+		This is a tutorial about writing a broughlike (a small roguelike game similar to <a href="https://store.steampowered.com/app/274700/868HACK/" target="_blank">868-HACK</a> or <a href="https://itunes.apple.com/us/app/cinco-paus/id1249999336" target="_blank">Cinco Paus</a>) from scratch in JavaScript.
+		<br><br>
+		Check out the <a href="stage0.html">Introduction</a> to see why I created this and how it differs from other tutorials.
+		<div class="centered">
+			<a href="stage0.html"><img src="screens/brough-screen.png" alt="Screenshot of tutorial"></a>
+		</div>
+
+		<h2>Try it out</h2>
+
+		Here's the <a href="completed/stage8/index.html">completed game</a>.
+		<br><br>
+		Controls are lowercase <em>wasd</em> for move/attack and number keys for spells.
+
+
+		<h2>Table of Contents</h2>
+		<ul>
+			<li><a href="stage0.html">Stage 0 - Introduction</a></li>
+			<li><a href="stage1.html">Stage 1 - Drawing to the screen</a></li>
+			<li><a href="stage2.html">Stage 2 - Map generation</a></li>
+			<li><a href="stage3.html">Stage 3 - Monsters</a></li>
+			<li><a href="stage4.html">Stage 4 - Monsters Part 2</a></li>
+			<li><a href="stage5.html">Stage 5 - Game lifecycle</a></li>
+			<li><a href="stage6.html">Stage 6 - Treasure & score</a></li>
+			<li><a href="stage7.html">Stage 7 - Animation, screenshake, & sounds</a></li>
+			<li><a href="stage8.html">Stage 8 - Spells</a></li>
+		</ul>
+
+		<h2>What to do if you get stuck</h2>
+		The <a href="https://github.com/nluqo/broughlike-tutorial/tree/master/docs/completed">github project</a> contains completed versions of all stages, so you can check your results as you go along. Open the <em>index.html</em> in each completed stage in your browser to test out the behavior at that stage.
+
+		<br><br>
+		<strong>Getting help</strong>
+		<br>
+		If you have any questions or anything is unclear, please reach out on our <a href="https://discord.gg/YdthKAq">discord server</a>.
+		<br><br>
+		You can also email me directly if you prefer: <a href="mailto:jeremiah.reid@gmail.com">jeremiah.reid@gmail.com</a>
+	</div>
+
+	<script>
+		let content = {};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/2darray.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/2darray.png
new file mode 100644
index 0000000..acdf09e
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/2darray.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/animation23.gif b/js/games/nluqo.github.io/broughlike-tutorial/screens/animation23.gif
new file mode 100644
index 0000000..3b02424
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/animation23.gif
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/behavior.gif b/js/games/nluqo.github.io/broughlike-tutorial/screens/behavior.gif
new file mode 100644
index 0000000..340eb66
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/behavior.gif
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/bfxr.PNG b/js/games/nluqo.github.io/broughlike-tutorial/screens/bfxr.PNG
new file mode 100644
index 0000000..11fc5b5
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/bfxr.PNG
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/blurry.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/blurry.png
new file mode 100644
index 0000000..c83d3f5
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/blurry.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/brough-games.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/brough-games.png
new file mode 100644
index 0000000..b8fa327
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/brough-games.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/brough-screen.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/brough-screen.png
new file mode 100644
index 0000000..82054e0
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/brough-screen.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/casting.gif b/js/games/nluqo.github.io/broughlike-tutorial/screens/casting.gif
new file mode 100644
index 0000000..03b5be1
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/casting.gif
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/centering.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/centering.png
new file mode 100644
index 0000000..f1419fa
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/centering.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/chasing.gif b/js/games/nluqo.github.io/broughlike-tutorial/screens/chasing.gif
new file mode 100644
index 0000000..4cebb14
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/chasing.gif
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/first-draw.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/first-draw.png
new file mode 100644
index 0000000..b7f7bee
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/first-draw.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/floodfill.gif b/js/games/nluqo.github.io/broughlike-tutorial/screens/floodfill.gif
new file mode 100644
index 0000000..e79bb6a
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/floodfill.gif
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/helloworld.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/helloworld.png
new file mode 100644
index 0000000..1cfc466
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/helloworld.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/high-scores.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/high-scores.png
new file mode 100644
index 0000000..c8a61b6
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/high-scores.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/hp.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/hp.png
new file mode 100644
index 0000000..755d5cc
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/hp.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/kicks.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/kicks.png
new file mode 100644
index 0000000..337b0f7
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/kicks.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/smoothmovement.jpg b/js/games/nluqo.github.io/broughlike-tutorial/screens/smoothmovement.jpg
new file mode 100644
index 0000000..7d6df20
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/smoothmovement.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/snake.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/snake.png
new file mode 100644
index 0000000..ea28515
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/snake.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/stage1-complete.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/stage1-complete.png
new file mode 100644
index 0000000..383f2b0
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/stage1-complete.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/stage2-complete.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/stage2-complete.png
new file mode 100644
index 0000000..89712d7
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/stage2-complete.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/state-machine.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/state-machine.png
new file mode 100644
index 0000000..3e8c26c
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/state-machine.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/tileSizeUndefined.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/tileSizeUndefined.png
new file mode 100644
index 0000000..75fc945
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/tileSizeUndefined.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/tiles-console.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/tiles-console.png
new file mode 100644
index 0000000..1dfccdc
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/tiles-console.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/tinysprite.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/tinysprite.png
new file mode 100644
index 0000000..abf3311
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/tinysprite.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/title-screen.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/title-screen.png
new file mode 100644
index 0000000..8faf5da
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/title-screen.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/walls-drawn.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/walls-drawn.png
new file mode 100644
index 0000000..21ff068
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/walls-drawn.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/screens/woop.png b/js/games/nluqo.github.io/broughlike-tutorial/screens/woop.png
new file mode 100644
index 0000000..b4146ac
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/screens/woop.png
Binary files differdiff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage0.html b/js/games/nluqo.github.io/broughlike-tutorial/stage0.html
new file mode 100644
index 0000000..0130a61
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage0.html
@@ -0,0 +1,370 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 0</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+        </div>
+		<h1>Stage 0 - Introduction</h1>
+		<h2>What's different about this tutorial?</h2>
+		<ol>
+			<li>You already have all the software you need: a web browser, a text editor, and an image editor.</li>
+			<li>The result will  be easily shareable and require no downloads to play</li>
+			<li>We'll make all the assets from scratch: code, images, and sound</li>
+			<li>No dependencies. No frameworks. No libraries.</li>
+			<li>We're aiming for a game that is at least somewhat compelling</li>
+		</ol>
+		In many tutorials, you have to download a bunch of software, fight with versioning problems, write code where a library does all the heavy lifting so you're left with no understanding of how it does it, and glue together premade assets you never figure out how to make yourself. The end result is often a clone or shallow toy that no one would actually want to play anyway.
+		<br><br>
+		Features the finished game will have:
+		<ul>
+			<li>a small map with easily modifiable grid size</li>
+			<li>multiple levels</li>
+			<li>5 unique monsters</li>
+			<li>spells</li>
+			<li>collectible treasure</li>
+			<li>high scores, preserved across browser launches</li>
+			<li>sounds</li>
+			<li>animation and screen shake</li>
+		</ul>
+		We're going to do all that in less than 850 lines of code.
+		<br><br>
+		A warning up front: I'm <em>not</em> going to focus on best practices here. I'm shooting for the shortest and simplest code. For example, I plan to use tons of global variables (generally a terrible idea, but they make things easier on smaller projects). I trust that you can learn the best practices later.
+
+		<h2>What the hell is a broughlike and why do I care?</h2>
+
+		<a href="https://en.wikipedia.org/wiki/Michael_Brough_(game_designer)" target="_blank">Michael Brough</a> is a game designer most well known for a series of cleverly crafted roguelike games, known as "broughlikes", with the following features:
+
+		<ul>
+			<li>Tiny grids</li>
+			<li>Low randomness</li>
+			<li>High replability despite simple rules</li>
+		</ul>
+
+		<div class="centered">
+			<img src="screens/brough-games.png" alt="Screenshots of 4 Michael Brough games">
+		</div>
+
+		The beauty of broughlikes lie in their simplicity. 868-HACK is played on a 6x6 grid and features only 4 types of monsters. So it may appear that this kind of game is easy to produce. Yes and no. Their simplicity belies the excruciating attention to detail and design work that goes into each one. Go read <a href="http://mightyvision.blogspot.com/">Brough's blog</a> if you don't believe me.
+		<br><br>
+		So these games are very easy to program, but hard to design. A perfect fit if you suspect you might be a talented designer, but a novice programmer. Also great for game jams; 868-HACK started out in the Seven Day Roguelike Challenge of 2013!
+		<br><br>
+		A basic level of programming knowledge will be helpful, but we'll cover a bit of JavaScript before starting (feel free to skip to the <a href="stage1.html">next section</a> if you're already comfortable with JavaScript.)
+
+		<h2>Why JavaScript?</h2>
+		I was inspired to create this tutorial after struggling with and failing to complete the Unity <a href="https://unity3d.com/learn/tutorials/s/2d-roguelike-tutorial" target="_blank">2D roguelike tutorial</a>. This was embarrassing because I've been programming for over a decade and have made a bunch of roguelikes and even <a href="https://store.steampowered.com/app/497800/Golden_Krone_Hotel/" target="_blank">sold one</a>, but that Unity tutorial was simply too much. The steps required constant cross referencing with a Unity 4 to 5 upgrade guide, they contained random gotchas that broke everything, and there was a bunch of completely unnecessary junk thrown on like box colliders and rigid body physics.
+		<br><br>
+		Now, I'm not here to tell you that Unity is bad. But if you're trying to learn how to make games, I think JavaScript is a <strong>great starting point</strong>.
+		<ul>
+			<li>It's accessible. You can start tinkering with JS in this very tab. You have a fully featured debugger too.</li>
+			<li>No compile times. Refresh and see changes immediately. This is HUGE for learning and sustained motivation</li>
+			<li>JavaScript objects and arrays are light years ahead of collection types in other languages as far as brevity, ease of use, and utility.</li>
+			<li>JavaScript lets you get away with so much (weak types, undefined properties, type coercion). You can lament the lack of safety or embrace it and become super productive.</li>
+		</ul>
+		<h2>Some JavaScript basics</h2>
+		While on this page, open the Console in your browser dev tools and follow along. Open the tools with either: Ctrl+Shift+I <em>or</em> right click and "Inspect" <em>or</em> from your browser menu). Type commands into the <strong>Console</strong>, press enter, and see what you get.
+
+		<h3>VARIABLES</h3>
+		<div class="code-container-inline"><pre><code id="contentA" class="javascript"></code></pre></div>
+		<br>
+		Variables are used to store data and use it later. This is how we declare variables and assign them an initial value in one shot. <br><br>
+
+		Type any previously defined variable like
+		<div class="code-container-inline inline"><pre><code class="javascript inline">bottles</code></pre></div>
+		into the console to see its value.
+		<br><br>
+		<div class="code-container-inline"><pre><code id="contentC" class="javascript"></code></pre></div>
+		<br>
+		Declares a global variable (assuming <div class="code-container-inline inline"><pre><code class="javascript inline">balloons</code></pre></div> is not already declared). Global variables will be accessible everywhere.
+
+		<h3>TYPES</h3>
+		You don't have to specify a variable's type, though each will still have a type under the hood.
+		<br><br>
+		The important thing to know is what types you have available: strings
+        (<div class="code-container-inline inline"><pre><code class="javascript inline">"foo"</code></pre></div>),
+        numbers
+        (<div class="code-container-inline inline"><pre><code class="javascript inline">1.2345</code></pre></div>),
+        booleans (<div class="code-container-inline inline"><pre><code class="javascript inline">true</code></pre></div>
+        or <div class="code-container-inline inline"><pre><code class="javascript inline">false</code></pre></div>). There's also objects, arrays, and functions, all of which we'll cover in a moment.
+		<br><br>
+		If you use two differing types together in one operation or comparison, JavaScript will do "type coercion": try to do the most sensible thing by changing one of the types so the operation goes through. For example:
+		<br><br>
+		<div class="code-container-inline"><pre><code id="contentD" class="javascript"></code></pre></div>
+		<br>
+		Results in the string "99problems".
+
+		<h3>COMMENTS</h3>
+		<div class="code-container-inline"><pre><code id="contentE" class="javascript"></code></pre></div>
+
+		<h3>OPERATORS</h3>
+		Common arithmetical operators are available:
+        <div class="code-container-inline inline"><pre><code class="javascript inline">+</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">-</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">*</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">/</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">%</code></pre></div>
+		<br><br>
+		<div class="code-container-inline"><pre><code id="contentF" class="javascript"></code></pre></div>
+		<br>
+		Results in 1.6666666666666667 
+		<br><br>
+		<div class="code-container-inline"><pre><code id="contentG" class="javascript"></code></pre></div>
+		<br>
+		Results in 2. This is the "modulus" operator; it basically does remainders.
+		<br><br>
+		We'll also use comparison operators like:
+        <div class="code-container-inline inline"><pre><code class="javascript inline">==</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">!=</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">&lt;</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">&gt;</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">&gt;=</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">&lt;=</code></pre></div>
+
+		<br><br>
+		<div class="code-container-inline"><pre><code id="contentH" class="javascript"></code></pre></div>
+		<br>
+		Is true.
+		<br><br>
+		<div class="code-container-inline"><pre><code id="contentI" class="javascript"></code></pre></div>
+		<br>
+		Is false.
+		<br><br>
+		For anything else, there's the built-in 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">Math</code></pre></div>
+         object:
+        <div class="code-container-inline inline"><pre><code class="javascript inline">Math.random()</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">Math.abs()</code></pre></div>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">Math.floor()</code></pre></div>
+        etc.
+
+		<h3>CONDITIONALS</h3>
+		<div class="code-container"><pre><code id="contentJ" class="javascript"></code></pre></div>
+		The
+		<div class="code-container-inline inline"><pre><code class="javascript inline">if</code></pre></div>
+		statement evaluates some expression and runs the inner block if the expression was true. Otherwise the
+		<div class="code-container-inline inline"><pre><code class="javascript inline">else</code></pre></div>
+		block is executed.
+		<br><br>
+		If you were to run this several times, you would see that the first block is entered only about 25% of the time.
+		<br><br>
+		We'll also use two other conditionals: an inline version of
+		<div class="code-container-inline inline"><pre><code class="javascript inline">if</code></pre></div>
+		with no braces and the ternary operator
+		<div class="code-container-inline inline"><pre><code class="javascript inline">?</code></pre></div>.
+		This does the exact same thing as the above code:
+
+		<div class="code-container"><pre><code id="contentK" class="javascript"></code></pre></div>
+
+
+		<h3>FUNCTIONS</h3>
+
+		<div class="code-container"><pre><code id="contentL" class="javascript"></code></pre></div>
+		Functions are little blocks of code that we can pass data to and from. They help us reuse, document, and organize our code.
+		<br><br>
+		The really important thing to know about functions in JavaScript is that they're <em>first class citizens</em>. You can assign functions to variables and pass or return functions to other functions. That gives us a ton of flexibility.
+		<br><br>
+		You should also be aware there are a few other ways to represent functions such as "fat arrow" syntax, which does pretty much the same thing:
+		<div class="code-container"><pre><code id="contentM" class="javascript"></code></pre></div>
+
+
+		<h3>LOOPS</h3>
+		<div class="code-container"><pre><code id="contentN" class="javascript"></code></pre></div>
+		The 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">while</code></pre></div>
+        loop evaluates some expression and repeatedly runs the inner block as long as it's true. You can end the loop early with a 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">break</code></pre></div>
+        statement.
+        <br><br>
+		<div class="code-container"><pre><code id="contentO" class="javascript"></code></pre></div>
+		The 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">for</code></pre></div>
+        loop repeatedly runs the inner block. How many times? That's determined by the expressions in parentheses. Here we're starting at 1, going up by 1 each time, and iterating as long as we're less or equal to 10. The variable
+        <div class="code-container-inline inline"><pre><code class="javascript inline">i</code></pre></div>
+        we declare will be useful for accessing array elements...
+
+
+		<h3>ARRAYS</h3>
+
+		When you need multiple instances of the same thing (think bullets, tiles, monsters, etc.), arrays are what you need.
+
+		<div class="code-container"><pre><code id="contentP" class="javascript"></code></pre></div>
+		Making a new array is dirt simple. You can even prepopulate them.
+		<br><br>
+		You access array elements by passing their index (starting from 0) in brackets. 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">someNumbers[1]</code></pre></div>
+        gives you 200.
+
+		<div class="code-container"><pre><code id="contentQ" class="javascript"></code></pre></div>
+		Here we're creating an array, adding an element with push, iterating over the array, and uppercasing each element.
+		<br><br>
+		JavaScript includes a bunch of really nice helper methods on arrays such as
+		<div class="code-container-inline inline"><pre><code class="javascript inline">filter</code></pre></div>,
+		<div class="code-container-inline inline"><pre><code class="javascript inline">includes</code></pre></div>,
+		and 
+		<div class="code-container-inline inline"><pre><code class="javascript inline">forEach</code></pre></div>
+		that we'll be using throughout the tutorial.
+
+
+		<h3>OBJECTS</h3>
+		Objects also store elements, but with string indexes (keys), instead of numerical ones.
+
+		<div class="code-container"><pre><code id="contentR" class="javascript"></code></pre></div>
+		The syntax uses a different kind of bracket and requires keys to come before elements, but is otherwise similar to arrays. You can access properties of an object through either dot or bracket notation.
+
+
+		<h3>CLASSES</h3>
+		You don't have to use classes if you don't want to. But I think they're decent for representing certain things in our game.
+		<br><br>
+		If this is a little overwhelming, don't worry! Important takeaways are below
+
+		<div class="code-container"><pre><code id="contentS" class="javascript"></code></pre></div>
+
+		<ul>
+			<li>You can make a specialized version of another class with
+				<div class="code-container-inline inline"><pre><code class="javascript inline">extends</code></pre></div>.
+				Later we'll make a Monster class and extend it to make our specific monster type</li>
+			<li>You make a new instance of a class with the
+			<div class="code-container-inline inline"><pre><code class="javascript inline">new</code></pre></div>
+			operator, which calls the constructor method.</li>
+			<li>The
+			<div class="code-container-inline inline"><pre><code class="javascript inline">this</code></pre></div>
+			keyword is a reference to the current instance.</li>
+		</ul>
+		<br>
+		OK, let's get started then. In the <a href="stage1.html">next section</a>, we'll figure out how to draw to the screen in just 6 lines of code.
+	</div>
+
+	<script>
+		let content = {
+			A: `
+let bottles = 99;
+			`,
+			B: `
+let problems = 99;
+			`,
+			C: `
+balloons = 99;
+			`,
+			D: `
+99 + "problems"
+			`,
+			E: `
+//this is a comment. it doesn't affect anything, but is SUPER helpful for explaining how and why something works
+			`,
+			F: `
+5 / 3
+			`,
+			G: `
+5 % 3
+			`,
+			H: `
+"duck" == "duck"
+			`,
+			I: `
+3 < 2
+			`,
+			J: `
+if( Math.random() < 0.25 ){
+    console.log("25% chance");
+}else{
+    console.log("75% chance");
+}
+			`,
+			K: `
+let chance = Math.random() < 0.25 ? "25% chance" : "75% chance";
+console.log(chance);
+			`,
+			L: `
+function sayHello(name){
+    alert("Hello, " + name);
+}
+
+sayHello("friendo");
+			`,
+			M: `
+let sayHi = name => alert("Hi, " + name);
+sayHi("my dude");
+			`,
+			N: `
+while( Math.random() < 0.99 ){
+    console.log("likely");
+}
+			`,
+			O: `
+for(let i=1; i<=10; i++){
+    console.log(i);
+}
+			`,
+			P: `
+let stuff = [];
+let someNumbers = [100, 200, 300];
+
+console.log(someNumbers[1]);
+			`,
+			Q: `
+let characters = ["mario", "luigi"];
+characters.push("wario");
+
+for(let i=0; i<characters.length; i++){
+    characters[i] = characters[i].toUpperCase();
+}
+
+console.log(characters);
+			`,
+			R: `
+let box = {};
+box.stuff = "some stuff";
+
+let name = {
+	first: "Bobby",
+	last: "Tables"
+};
+
+console.log(box);
+console.log(name.first);
+console.log(name["last"]);
+			`,
+			S: `
+class Dragon{
+    constructor(noise){
+        this.noise = noise;
+    }
+
+    rawr(){
+        console.log(this.noise);
+    }
+
+    breathe(){
+        console.log("...");
+    }
+}
+
+class FireBreathingDragon extends Dragon{
+    //overrides Dragon's breathe method
+    breathe(){
+        console.log("🔥");
+    }
+}
+
+let dragonA = new Dragon("RAWR");
+let dragonB = new FireBreathingDragon("RAWR!");
+
+dragonA.rawr();             //logs "RAWR"
+dragonA.breathe();          //logs "..."
+
+dragonB.rawr();             //logs "RAWR!"
+dragonB.breathe();          //logs "🔥"
+			`
+		};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage1.html b/js/games/nluqo.github.io/broughlike-tutorial/stage1.html
new file mode 100644
index 0000000..32c2ce8
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage1.html
@@ -0,0 +1,572 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Broughlike tutorial - Stage 0</title>
+    <meta charset="utf-8">
+</head>
+<body>
+    <div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage0.html">Previously: Introduction</a>
+        </div>
+        <h1>Stage 1 - Drawing to the screen</h1>
+        You should already have everything you need installed: a browser, a text editor, and an image editor. The apps that I'm going to use and that I recommend are Google Chrome, Sublime Text, and <a href="https://www.gimp.org/" target="_blank">GIMP</a>.
+        <h2>Getting started</h2>
+        First open your text editor and create a file called <em>index.html</em>, type in
+        <div class="code-container-inline inline"><pre><code class="html inline">Hello World!</code></pre></div>,
+        and save the file.
+        <br><br>
+        Open the file in your chosen browser. Be aware that this isn't valid HTML but the browser will render it just fine anyway.
+        <img class="screen" src="screens/helloworld.png">
+        <br><br>
+        Let's replace our "Hello World!" text with the next 6 lines, which are all you need to draw to the screen:
+
+        
+        <div class="filename">index.html</div>
+        <div class="code-container"><pre><code id="contentA" class="html"></code></pre></div>
+        The 
+        <div class="code-container-inline inline"><pre><code class="html inline">canvas</code></pre></div> is an HTML tag on which we can draw shapes, images, and text. Our
+        <div class="code-container-inline inline"><pre><code class="html inline">script</code></pre></div>
+        tag is where our JavaScript code goes. Here, we're grabbing a reference to the
+        <div class="code-container-inline inline"><pre><code class="html inline">canvas</code></pre></div>
+        tag, getting the 2D context which is what we'll use to draw, and then drawing a rectangle.
+
+        <br><br>
+        Three lines might seem excessive for a single draw operation, but the first two lines are boilerplate. We'll only need to write them once for the whole project.
+        <br><br>
+        Our little black rectangle might not look like much yet, but that's our player character!  Sadly the player doesn't move. We just need a little bit more code to handle the player's current position (I'll be highlighting removed lines with red and added lines with green).
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentB" class="html"></code></pre>
+                <pre><code id="contentC" class="javascript remove"></code></pre>
+                <pre><code id="contentD" class="javascript add"></code></pre>
+                <pre><code id="contentE" class="html"></code></pre>
+        </div>
+        
+        We're managing our player's position with
+        <div class="code-container-inline inline"><pre><code class="javascript inline">x</code></pre></div>
+        and
+        <div class="code-container-inline inline"><pre><code class="javascript inline">y</code></pre></div>
+        coordinates (counted in grid tiles since our game will be played on a grid). 
+        <br><br>
+        Then the 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">onkeypress</code></pre></div>
+        event will fire whenever the user presses a key (specifically lowercase "wasd" keys). We'll move the player horizontally or vertically by changing 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">x</code></pre></div>
+        or
+        <div class="code-container-inline inline"><pre><code class="javascript inline">y</code></pre></div>
+        as appropriate. 
+        <br><br>
+        Finally, the 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">fillRect</code></pre></div>
+        call is updated to use our new coordinate variables, moved into a function, and triggered with
+        <div class="code-container-inline inline"><pre><code class="javascript inline">setInterval</code></pre></div>
+        to make sure the screen is drawn every 15 milliseconds (more than 60 frames per second).
+        
+        <img src="screens/snake.png">
+        It works but... there's no code to clear the character aftering rendering though. Let's do that at the beginning of every draw call.
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentF" class="javascript"></code></pre>
+                <pre><code id="contentG" class="javascript add"></code></pre>
+                <pre><code id="contentH" class="javascript"></code></pre>
+        </div>
+
+        In 20 lines of code, we have a moving player. We're 90% of the way to having a functioning game. 😉
+        <br><br>
+        One problem is the canvas is not aligned properly, it's very small, and we don't know where it ends. Let's add an outline and center the canvas. To do this, we're going to add a 
+        <div class="code-container-inline inline"><pre><code class="html inline">style</code></pre></div>
+        tag to the top of our file and put CSS in it. If we had a lot of CSS, it would be better to put it in a separate file but the small amount we need fits well in the document.
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentSTYLE" class="html add"></code></pre>
+            <pre><code id="contentSTYLEAFTER" class="html"></code></pre>
+        </div>
+        <br>
+        A couple more lines at the very top to make this truly valid HTML. The 
+        <div class="code-container-inline inline"><pre><code class="html inline">doctype</code></pre></div>
+        tells the browser we're an HTML page, duh. And a
+        <div class="code-container-inline inline"><pre><code class="html inline">title</code></pre></div>
+        is required for... reasons.
+
+        <div class="filename">index.html</div>
+        <div class="code-container"><pre><code id="contentDOCTYPE" class="html add"></code></pre></div>
+
+        By the way, you might be used to 
+        <div class="code-container-inline inline"><pre><code class="html inline">html</code></pre></div>
+        /
+        <div class="code-container-inline inline"><pre><code class="html inline">head</code></pre></div>
+        /
+        <div class="code-container-inline inline"><pre><code class="html inline">body</code></pre></div>
+        tags but they're all optional! Seriously. Include them if you'd like.
+
+        <h2>Getting organized</h2>
+        Let's lay the groundwork for the rest of the project by creating a couple folders and empty files. Keep in mind, this is only to help us stay organized. There's no requirement to have a specific directory layout. If we keep all of our code in one file, it'll get really hard to dig through. But it's certainly not impossible. I know a major roguelike project that consists of a single 80,000 line python file.
+        <br><br>
+        Create a folder called <strong>js</strong> where all our script files will go and one called <strong>sounds</strong> where our sounds will go.
+        <br><br>
+        Go ahead and create six empty JavaScript files in the new <strong>js</strong> folder:
+
+        <ul>
+            <li>game.js</li>
+            <li>map.js</li>
+            <li>tile.js</li>
+            <li>monster.js</li>
+            <li>util.js</li>
+            <li>spell.js</li>
+        </ul>
+        Now we'll include those JavaScript files using
+        <div class="code-container-inline inline"><pre><code class="html inline">script</code></pre></div>
+        tags.
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentI" class="html"></code></pre>
+                <pre><code id="contentJ" class="html add"></code></pre>
+                <pre><code id="contentK" class="javascript"></code></pre>
+        </div>
+        <br>
+        I'll be defining everything in these files globally and without using any sort of namespacing or modules. This makes the code shorter, but potentially harder to track down. One easy alternative is defining the entire file as an object like this:
+        <div class="filename">game.js</div>
+        <div class="code-container"><pre><code id="contentNAMESPACE" class="javascript"></code></pre></div>
+        Then when you read
+        <div class="code-container-inline inline"><pre><code class="javascript inline">game.someFunction()</code></pre></div>
+        you'll know exactly where to find it (in the file game.js). For now, I'm going to stick to global functions.
+        <br><br>
+        Let's <em>move</em> our
+        <div class="code-container-inline inline"><pre><code class="javascript inline">canvas</code></pre></div>
+        and
+        <div class="code-container-inline inline"><pre><code class="javascript inline">ctx</code></pre></div>
+        definitions to a new function in game.js and call that new function from index.html.
+        <div class="filename">index.html</div>
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentL" class="html"></code></pre>
+                <pre><code id="contentM" class="html remove"></code></pre>
+                <pre><code id="contentN" class="javascript"></code></pre>
+                <pre><code id="contentO" class="javascript add"></code></pre>
+                <pre><code id="contentP" class="html"></code></pre>
+        </div>
+
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+                <pre><code id="contentQ" class="javascript add"></code></pre>
+        </div>
+
+        If you test the game, nothing should have changed. But we have taken the first step towards organizing our code.
+        <br><br>
+        We want to dynamically size the canvas based on some constants. This will make it really easy to tweak the design of the game later, making the grid size tiny or huge instantly.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+                <pre><code id="contentR" class="javascript"></code></pre>
+                <pre><code id="contentS" class="javascript add"></code></pre>
+                <pre><code id="contentT" class="javascript"></code></pre>
+        </div>
+        Run the code.
+        <br><br>
+        <img class="screen" src="screens/tileSizeUndefined.png">
+        You should get an error. Uh oh. We forgot to define a few variables. Let's do that now.
+
+
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentU" class="html"></code></pre>
+                <pre><code id="contentV" class="javascript add"></code></pre>
+                <pre><code id="contentW" class="javascript"></code></pre>
+        </div>
+
+        These 3 variables tell us respectively: how big a tile should be in on screen pixels, how wide/tall our map will be measured in tiles, and how much space we should reserve for the game UI.
+        <br><br>
+        That should fix the error we saw. Now we can also utilize some of these variables in the draw call.
+        <br><br>
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentX" class="javascript"></code></pre>
+                <pre><code id="contentY" class="javascript remove"></code></pre>
+                <pre><code id="contentZ" class="javascript add"></code></pre>
+                <pre><code id="contentAA" class="javascript"></code></pre>
+        </div>
+        You'll notice that the "player" rectangle gets bigger and when you move to the bottom/edge of the screen, it lines up nicely.
+        
+        <h2>Drawing sprites</h2>  
+
+        <div class="drawing-section">
+            Finally, let's replace our little rectangle with a real sprite. You could make the whole game in rectangles if you wanted (it worked for Mike Bithell), but I'm not talented enough for that. 
+            <br><br>
+            Open up your favorite image editor. I'm going to use <a href="https://www.gimp.org/" target="_blank">GIMP</a>.
+            <br><br>
+            Here are some setup tips specific to GIMP:
+            <ul>
+                <li>
+                    Select <strong>File > New</strong> and create a new file that's <strong>512 by 16 pixels</strong>. Make sure your starting background is transparent (under <strong>Advanced Options</strong> choose <strong>Fill with: Transparency</strong>). Normally, a spritesheet is arranged in big square but it's a little simpler to make it a long line of sprites.
+                </li>
+                <li>
+                    A visible grid will help us distinguish our sprites. Select <strong>Image > Configure Grid</strong>, and configure the spacing to be <strong>16 pixels</strong> in both directions. Then select <strong>View > Show Grid</strong>.
+                </li>
+                <li>
+                    Configure your <strong>Eraser Tool</strong> to use <strong>Hard edge</strong>. Otherwise, you won't fully erase things.
+                </li>
+                <li>
+                    Select the <strong>Pencil Tool</strong> and make sure your <strong>Brush</strong> setting is configured to be <strong>Size: 1</strong>.
+                </li>
+                <li>
+                    One extra, optional tip: sprites can be hard to see on the checkerboard pattern of transparent layers, so try adding an extra background layer filled with a darkish grey color.
+                </li>
+            </ul>
+            With the <strong>Pencil Tool</strong> in hand, you're ready. We're going to use a simple 3 step process to draw our sprites:
+            <ol>
+                <li>Fill in a basic shape with 1 or 2 colors</li>
+                <li>Add some shading</li>
+                <li>Finish details and highlights</li>
+            </ol>
+
+            I'm going to show you each of my 3 steps, but only as a hint. Feel free to really make this art your own.
+            <br><br>
+            Draw your character sprite in the first 16 by 16 pixel tile.
+            <img src="art/player.png">
+            Draw your a corpse sprite in the next spot over. I cheated a bit by rotating the a copy of the first sprite 90 degrees.
+            <img src="art/player-corpse.png">
+            The last step after drawing each sprite is exporting your spritesheet by selecting <strong>File > Export</strong> and exporting to a file name <strong>spritesheet.png</strong> in your game's directory.
+            <br><br>
+            As a sanity check, here's what your spritesheet should look like at this point.
+            <img src="screens/first-draw.png">
+
+
+        </div>
+        <br>
+        Let's use the sprite we just drew. This code will load the PNG file.
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentAB" class="html"></code></pre>
+                <pre><code id="contentAC" class="javascript add"></code></pre>
+        </div>
+        <br>
+        We're going to draw a sprite from that spritesheet now instead of drawing a rectangle. Let's try the simplest way to call 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">drawImage</code></pre></div>
+        with 3 arguments.
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentAD" class="javascript"></code></pre>
+            <pre><code id="contentAE" class="javascript remove"></code></pre>
+            <pre><code id="contentAF" class="javascript add"></code></pre>
+            <pre><code id="contentAG" class="javascript"></code></pre>
+        </div>
+
+        <img src="screens/tinysprite.png">
+        It works, but there's a few problem. The sprites are too small for one. The bigger problem though is that this displays the <em>whole</em> spritesheet. We need to call <div class="code-container-inline inline"><pre><code class="javascript inline">drawImage</code></pre></div> with <a href="https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage" target="_blank">9 arguments</a>.
+        <br><br>
+        It sounds bad, but it's pretty simple once you see the purpose. The first argument is the name of the image. The last four arguments are totally identical to the ones we used in 
+        <div class="code-container-inline inline"><pre><code class="javascript inline">drawRect</code></pre></div>.
+        Those specify how to draw to the <em>destination</em> on screen. But we're using a spritesheet which consists of many sprites. We can't use the whole image, so we need 4 more arguments to specify how to pull from the <em>source</em>.
+        <br><br>
+        One image, 4 source variables, and 4 destination variables.
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript inline">ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);</code></pre></div>
+        <br><br>
+        Since we're going to be making this same call repeatedly, let's move this code out to a new function called
+        <div class="code-container-inline inline"><pre><code class="javascript inline">drawSprite</code></pre></div>
+        and move/update our
+        <div class="code-container-inline inline"><pre><code class="javascript inline">draw</code></pre></div>
+        function too. And let's put each argument on a different line to make it clearer.
+        <div class="filename">index.html</div>
+        <div class="code-container">
+                <pre><code id="contentAH" class="javascript remove"></code></pre>
+        </div>
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentAI" class="javascript"></code></pre>
+            <pre><code id="contentAJ" class="javascript add"></code></pre>
+        </div>
+
+        <img src="screens/blurry.png">
+
+        Now one more hiccup. Our sprite looks like poop. The reason is the way browser scales images by default. It makes sene for photos but not for pixel art. For years, displaying scaled pixel art in browsers was basically impossible. Luckily we only need one line to correct it.
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentAK" class="javascript"></code></pre>
+            <pre><code id="contentAL" class="javascript add"></code></pre>
+            <pre><code id="contentAM" class="javascript"></code></pre>
+        </div>
+        And we're done! If you're feeling a little overwhelmed by all these arcane references to interacting with the DOM (the way the browser connect HTML and JS together), I understand.
+        <br><br>Take heart that we're pretty much past all of that. Our entry point into drawing stuff on the screen is to load images, grab a canvas element, get its context, and start calling draw operations on it. A lot of boilerplate right? But the good news is that we don't need any more hooks into the DOM and the rest of the code we write will be fairly self contained.
+        <img src="screens/stage1-complete.png">
+        <br><br>
+        In the <a href="stage2.html">next section</a>, we'll generate a map.
+
+    </div>
+
+    <script>
+        let content = {
+            A: `
+<canvas></canvas>
+<script>
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+    ctx.fillRect(0,0,20,20,20);
+<\/script>
+            `,
+            STYLE: `
+<style>
+    canvas{
+        outline: 1px solid white;
+    }
+
+    body{
+        background-color: indigo;
+        text-align: center;
+        margin-top: 50px;
+    }
+<\/style>
+            `,
+            B: `
+<script>
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+            `,
+            C: `
+    ctx.fillRect(0,0,20,20,20);
+            `,
+            D: `
+    x = y = 0;
+
+    document.querySelector("html").onkeypress = function(e){
+        if(e.key=="w") y--;
+        if(e.key=="s") y++;
+        if(e.key=="a") x--;
+        if(e.key=="d") x++;
+    };
+
+    function draw(){
+        ctx.fillRect (x*20,y*20,20,20);
+    }
+
+    setInterval(draw, 15);
+            `,
+            E: `
+<\/script>
+            `,
+            F: `
+function draw(){
+            `,
+            G: `
+    ctx.clearRect(0,0,1000,1000);
+            `,
+            H: `
+    ctx.fillRect (x*20,y*20,20,20);
+}
+            `,
+            DOCTYPE: `
+<!DOCTYPE html>
+<title>AWESOME BROUGHLIKE</title>
+            `,
+            I: `
+<canvas></canvas>
+            `,
+            J: `
+<script src="https://nluqo.github.io/broughlike-tutorial/js/game.js"><\/script>
+<script src="https://nluqo.github.io/broughlike-tutorial/js/map.js"><\/script>
+<script src="https://nluqo.github.io/broughlike-tutorial/js/tile.js"><\/script>
+<script src="https://nluqo.github.io/broughlike-tutorial/js/monster.js"><\/script>
+<script src="https://nluqo.github.io/broughlike-tutorial/js/util.js"><\/script>
+<script src="https://nluqo.github.io/broughlike-tutorial/js/spell.js"><\/script>
+            `,
+            K: `
+<script>
+    canvas = document.querySelector("canvas");
+            `,
+            NAMESPACE: `
+game = {
+    someFunction: function(){
+        ...
+    },
+    anotherFunction: function(){
+        ...
+    },
+    andAnother: function(){
+        ...
+    }
+}
+            `,
+            L: `
+<script>
+            `,
+            M: `
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+          `,
+            N: `
+    x = y = 0;
+
+    document.querySelector("html").onkeypress = function(e){
+        if(e.key=="w") y--;
+        if(e.key=="s") y++;
+        if(e.key=="a") x--;
+        if(e.key=="d") x++;
+    };
+
+    function draw(){
+        ctx.fillRect (x*20,y*20,20,20);
+    }
+
+    setInterval(draw, 15);
+            `,
+            O: `
+
+    setupCanvas();
+            `,
+            P: `
+<\/script>
+            `,
+            Q: `
+function setupCanvas(){
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+}
+            `,
+            R: `
+function setupCanvas(){
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+
+            `,
+            S: `
+    canvas.width = tileSize*(numTiles+uiWidth);
+    canvas.height = tileSize*numTiles;
+    canvas.style.width = canvas.width + 'px';
+    canvas.style.height = canvas.height + 'px';
+            `,
+            T: `
+}
+            `,
+            U: `
+<script>
+            `,
+            V: `
+    tileSize = 64;
+    numTiles = 9;
+    uiWidth = 4;
+            `,
+            W: `
+
+    x = y = 0;
+            `,
+            X: `
+    function draw(){
+            `,
+            Y: `
+        ctx.clearRect(0,0,1000,1000);
+        ctx.fillRect (x*20,y*20,20,20);
+            `,
+            Z: `
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+        ctx.fillRect (x*tileSize,y*tileSize,tileSize,tileSize);
+            `,
+            AA: `
+    }
+            `,
+            AB: `
+<script>
+    tileSize = 64;
+    numTiles = 9;
+    uiWidth = 4;
+
+    x = y = 0;
+            `,
+            AC: `
+    spritesheet = new Image();
+    spritesheet.src = 'spritesheet.png';
+            `,
+            AD: `
+    function draw(){
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+            `,
+            AE: `
+        ctx.fillRect (x*tileSize,y*tileSize,tileSize,tileSize);
+            `,
+            AF: `
+        ctx.drawImage(spritesheet, x*tileSize, y*tileSize);
+            `,
+            AG: `
+    }
+            `,
+            AH: `
+    function draw(){
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+        ctx.drawImage(spritesheet, x*tileSize, y*tileSize);
+    }
+            `,
+            AI: `
+function setupCanvas(){
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+
+    canvas.width = tileSize*(numTiles+uiWidth);
+    canvas.height = tileSize*numTiles;
+    canvas.style.width = canvas.width + 'px';
+    canvas.style.height = canvas.height + 'px';
+}
+
+            `,
+            AJ: `
+function drawSprite(sprite, x, y){
+    ctx.drawImage(
+        spritesheet,
+        sprite*16,
+        0,
+        16,
+        16,
+        x*tileSize,
+        y*tileSize,
+        tileSize,
+        tileSize
+    );
+}
+
+function draw(){
+    ctx.clearRect(0,0,canvas.width,canvas.height);
+    drawSprite(0, x, y);
+}
+            `,
+            AK: `
+function setupCanvas(){
+    canvas = document.querySelector("canvas");
+    ctx = canvas.getContext("2d");
+
+    canvas.width = tileSize*(numTiles+uiWidth);
+    canvas.height = tileSize*numTiles;
+    canvas.style.width = canvas.width + 'px';
+    canvas.style.height = canvas.height + 'px';
+            `,
+            AL: `
+    ctx.imageSmoothingEnabled = false;
+            `,
+            AM: `
+}
+            `,
+            STYLEAFTER: `
+
+<canvas></canvas>
+<script>
+    canvas = document.querySelector("canvas");
+            `
+        };
+
+    </script>
+
+    <link rel="stylesheet" href="highlight.min.css">
+    <link rel="stylesheet" href="style.css">
+    <script src="highlight.min.js"></script>
+    <script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage2.html b/js/games/nluqo.github.io/broughlike-tutorial/stage2.html
new file mode 100644
index 0000000..f66aa31
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage2.html
@@ -0,0 +1,586 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 2</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage1.html">Previously: Drawing to the screen</a>
+        </div>
+		<h1>Stage 2 - Map Generation</h1>
+
+		In this step, we want to generate a map to play on.
+		<br><br>
+		A map is often stored as a 2D array, which is nothing more than an array where every element is another array. Specifically, our map will be an array of columns and each column will be an array of tiles. You could do it with rows, whatever, same thing.
+
+		Make a new class called
+		<div class="code-container-inline inline"><pre><code class="javascript">Tile</code></pre></div>
+		in tile.js. 
+		<div class="filename">tile.js</div>
+        <div class="code-container">
+			<pre><code id="contentTILE" class="javascript add"></code></pre>
+        </div>
+        Each tile will have 
+        <div class="code-container-inline inline"><pre><code class="javascript">x</code></pre></div>
+        and 
+        <div class="code-container-inline inline"><pre><code class="javascript">y</code></pre></div>
+        coordinates, a 
+        <div class="code-container-inline inline"><pre><code class="javascript">sprite</code></pre></div>
+        (simply the numeric position in the spritesheet),
+        and a 
+        <div class="code-container-inline inline"><pre><code class="javascript">passable</code></pre></div>
+        flag. For the most basic maps, all you need to know is how to distinguish between walls and floors and
+        <div class="code-container-inline inline"><pre><code class="javascript">passable</code></pre></div>
+        does that for us. You can also see that we're using
+		<div class="code-container-inline inline"><pre><code class="javascript">drawSprite</code></pre></div>
+		like we did for the player.
+        <br><br>
+        Let's extend
+        <div class="code-container-inline inline"><pre><code class="javascript">Tile</code></pre></div>
+        to make floors and walls.
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentTILE2" class="javascript"></code></pre>
+            <pre><code id="contentFLOORANDWALL" class="javascript add"></code></pre>
+        </div>
+        We have the code for floor and wall tiles, but we need the sprites.
+        <h2>Drawing Map Tiles</h2>  
+        <div class="drawing-section">
+            The floor uses dark colors and not too much contrast since we don't want it to compete with the foreground sprites. With tiles, keep in mind how they're going to repeat. Pixels on the left of our sprite will appear next to pixels on the right (likewise for bottom and top). An easy technique I'm using here is drawing a bunch of connecting lines and then breaking them up with a few pixels of the background color.
+            <img src="art/floor.png">
+            For the wall tile, we'll start with the same background color from the floor tile. This allows us to have rounded walls that blend in seamlessly.
+            <img src="art/wall.png">
+            Don't forget to export your file after updating it!
+         </div>
+         <br><br>
+         In map.js, we're going to start making the map.
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentPREGENERATELEVEL" class="javascript"></code></pre>
+            <pre><code id="contentGENERATELEVEL" class="javascript add"></code></pre>
+        </div>
+        <div class="filename">map.js</div>
+        <div class="code-container">
+            <pre><code id="contentGENERATETILES" class="javascript add"></code></pre>
+        </div>
+        This makes a 2D array called 
+        <div class="code-container-inline inline"><pre><code class="javascript">tiles</code></pre></div>
+        and populates it with about 30% walls and 70% floors.
+        <br><br>It does so by looping over the columns and then, for each column, looping over the rows and creating new wall/floor tiles in each spot as appropriate.
+        <img src="screens/2darray.png">
+        So our map is actually there and the way you can confirm this is by going into the dev tools and simply typing "tiles".
+        <img src="screens/tiles-console.png">
+        <br><br>
+        But let's draw it. All we need to do is iterate over every tile and call
+        <div class="code-container-inline inline"><pre><code class="javascript">draw</code></pre></div>
+        on it.
+        <br><br>
+        But first, I want to wrap access to the tile array in a function called
+        <div class="code-container-inline inline"><pre><code class="javascript">getTile</code></pre></div>
+        . There are a lot of reasons for doing this. For one it reads a little cleaner, but it also lets us pull off shenanigans like returning tiles <em>outside</em> the bounds of the array and which don't actually exist (which might happen if, for instance, the player casts a giant area of effect spell that extends past the outer dungeon walls).
+
+        <div class="filename">map.js</div>
+        <div class="code-container">
+            <pre><code id="contentGENERATETILES" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentINBOUNDS" class="javascript add"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript add"></code></pre>
+            <pre><code id="contentGETTILE" class="javascript add"></code></pre>
+        </div>
+        <br>
+        Now with that out of the way, we can get to drawing simply by looping over each tile and telling it to draw itself.
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentBEFOREITERATETILES" class="javascript"></code></pre>
+            <pre><code id="contentITERATETILES" class="javascript add"></code></pre>
+            <pre><code id="contentAFTERITERATETILES" class="javascript"></code></pre>
+        </div>
+
+        Cool. We haven't added an outer wall though. Let's reuse the
+        <div class="code-container-inline inline"><pre><code class="javascript">inBounds</code></pre></div>
+        function to make one.
+        <div class="filename">map.js</div>
+        <div class="code-container">
+            <pre><code id="contentBEFOREINBOUND" class="javascript"></code></pre>
+            <pre><code id="contentDELETEINBOUND" class="javascript remove"></code></pre>
+            <pre><code id="contentADDINBOUND" class="javascript add"></code></pre>
+            <pre><code id="contentAFTERINBOUND" class="javascript"></code></pre>
+        </div>
+
+        <img src="screens/walls-drawn.png">
+        <br><br> 
+        Only thing is the walls are not doing anything. We start on a wall and we're walking right through them!
+        <br><br>
+        To fix that first problem, we're simply going to teleport the player to a random floor tile when the game starts.
+        <br><br>
+        How do we find a random floor tile though? One really dumb, easy way to do so is repeatedly grab random tiles until we find a floor tile. This pattern works really well for a variety of map generation techniques: try to do something at random and keep doing it until we get it right. Add a timeout to make sure we don't get stuck in an infinite loop on accident. You don't want to lock up your browser after all.
+        <br><br>
+        We'll also need a simple utility function to generate random integers within a given range.
+
+        <div class="filename">util.js</div>
+        <div class="code-container">
+            <pre><code id="contentTRYTO" class="javascript add"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript add"></code></pre>
+            <pre><code id="contentRANDOMRANGE" class="javascript add"></code></pre>
+        </div>
+        <div class="filename">map.js</div>
+        <div class="code-container">
+            <pre><code id="contentGETTILE" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentRANDOMPASSABLE" class="javascript add"></code></pre>
+        </div>
+        Our 
+        <div class="code-container-inline inline"><pre><code class="javascript">tryTo</code></pre></div>
+        function needs to be passed a callback that attempts something and returns 
+        <div class="code-container-inline inline"><pre><code class="javascript">true</code></pre></div>
+        only if it worked. That's why we're passing an anonymous function that rolls some random coordinates, gets the corresponding tile, and returns true only if the following expression is true:
+        <div class="code-container-inline inline"><pre><code class="javascript">tile.passable && !tile.monster</code></pre></div>
+        (the tile is passable and has no monster).
+        <br><br>Notice that nowhere else in our program have we defined
+        <div class="code-container-inline inline"><pre><code class="javascript">tile.monster</code></pre></div>
+        . Thanks to JavaScript's lenient property and type handling, this will work fine. A missing property will have a value of 
+        <div class="code-container-inline inline"><pre><code class="javascript">undefined</code></pre></div>
+        and that will get coerced to
+        <div class="code-container-inline inline"><pre><code class="javascript">false</code></pre></div>
+        and we're good.
+        Let's take
+        <div class="code-container-inline inline"><pre><code class="javascript">randomPassableTile</code></pre></div>
+        out for a spin by teleporting the player to random tile as mentioned earlier.
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentGENERATELEVEL" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript add"></code></pre>
+            <pre><code id="contentUSERANDOMPASSABLETILE" class="javascript add"></code></pre>
+        </div>
+        Refresh several times and you'll see that the player spawns in random locations, none of which are walls.
+        <br><br>
+        Our map is generated and our player is spawned in the correct place. We're almost done.
+        <br><br>
+        <h2>Banishing disconnected islands (a roguelike developer's greatest enemy)</h2>
+        One more big problem first and this one is a super common headache when procedurally generating the maps. With our extremely dumb way of making the levels, there are often areas of the map not connected to other areas. Disconnected islands. We need a way a check that <em>everything is connected</em>.
+        <br><br>
+        This part is a little tricky, so first let's some write some pseudocode:
+
+        <div class="code-container">
+            <pre><code id="contentPSEUDO_A" class="javascript"></code></pre>
+        </div>
+        That's the basic idea. Now let's convert that into real code:
+
+        <div class="filename">map.js</div>
+        <div class="code-container">
+            <pre><code id="contentREROLL1" class="javascript"></code></pre>
+            <pre><code id="contentREROLL2" class="javascript remove"></code></pre>
+            <pre><code id="contentREROLL3" class="javascript add"></code></pre>
+            <pre><code id="contentREROLL4" class="javascript"></code></pre>
+            <pre><code id="contentREROLL5" class="javascript add"></code></pre>
+            <pre><code id="contentREROLL6" class="javascript"></code></pre>
+            <pre><code id="contentREROLL7" class="javascript add"></code></pre>
+            <pre><code id="contentREROLL8" class="javascript"></code></pre>
+            <pre><code id="contentREROLL9" class="javascript add"></code></pre>
+            <pre><code id="contentREROLL10" class="javascript"></code></pre>
+        </div>
+
+
+       They key here is 
+       <div class="code-container-inline inline"><pre><code class="javascript">getConnectedTiles</code></pre></div>.
+       Imagine you are drawing a dungeon map on grid paper and you want to color in all the connected floor spaces. How would you do it?
+       <img src="screens/floodfill.gif">
+       <div class="centered"><a target="_blank" href="https://en.wikipedia.org/wiki/Flood_fill#/media/File:Recursive_Flood_Fill_4_(aka).gif">diagram by André Karwath</a></div>
+       <br><br>
+       One way is pick a random floor tile on the grid, expand outwards repeatedly, and color connected floor tiles until you're done. You obviously would ignore wall tiles and you wouldn't recolor floor tiles once you drew them the first time. That's exactly the idea behind the <a href="https://en.wikipedia.org/wiki/Flood_fill">flood fill</a> algorithm and here's more pseudocode for a function that does it:
+        <div class="code-container">
+            <pre><code id="contentPSEUDO_B" class="javascript"></code></pre>
+        </div>
+        We'll convert that to JavaScript as well by breaking it down into several smaller functions:
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentCONNECTEDOLD" class="javascript"></code></pre>
+            <pre><code id="contentCONNECTEDNEW" class="javascript add"></code></pre>
+            <pre><code id="contentCONNECTEDAFTER" class="javascript"></code></pre>
+        </div>
+        OK, that seems like a lot so let's break it down.
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript">getNeighbor</code></pre></div>
+        is pretty straightforward. It's a wrapper around  
+        <div class="code-container-inline inline"><pre><code class="javascript">getTile</code></pre></div>. Even though it's a simple wrapper, 
+        this method is useful when implementing all sorts of mechanics. Also note that it works for <em>more</em> than just adjacent neighbors.
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript">getAdjacentNeighbors</code></pre></div>
+        returns the adjacent neighbors of a tile and shuffles them before returning.
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript">getAdjacentPassableNeighbors</code></pre></div>
+        additionally filters out non-passable tiles (e.g. walls). 
+        <div class="code-container-inline inline"><pre><code class="javascript">filter</code></pre></div>
+        is a nifty JavaScript array function where we pass in a callback and we return true for only the elements we want to keep.
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript">getConnectedTiles</code></pre></div>
+        does exactly what the pseudocode said. It uses
+        <div class="code-container-inline inline"><pre><code class="javascript">filter</code></pre></div>
+        again and also 
+         <div class="code-container-inline inline"><pre><code class="javascript">concat</code></pre></div>,
+         which adds one array to another.
+        <div class="filename">util.js</div>
+        <div class="code-container">
+            <pre><code id="contentSHUFFLEOLD" class="javascript"></code></pre>
+            <pre><code id="contentSHUFFLENEW" class="javascript add"></code></pre>
+        </div>
+        And finally <div class="code-container-inline inline"><pre><code class="javascript">shuffle</code></pre></div>
+        is an implementation of <a href="https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle">Fisher-Yates shuffle</a>. All it's doing is a random swap for each element in an array, leading to a perfectly shuffled array. 
+        <br><br>
+        To reiterate: we keep trying to make levels until we find one that has no disconnected islands. The way we know there are no disconencted islands is when we've made only a single connected "island". If we have one big island of floor tiles, the number of tiles on that island should match the total number of floor tiles on the map. When we're able to satisfy that condition, we're happy with our level and we can stop.
+        <br><br>
+        So now let's check our work. Refresh a bunch of times and you'll never see a disconnected island again.
+        <img src="screens/stage2-complete.png">
+        Just for fun, you might try out different values of
+        <div class="code-container-inline inline"><pre><code class="javascript">numTiles</code></pre></div>. Here's what I got with a value of 24 (much higher and the timeout was usually reached):
+        <img src="screens/kicks.png">
+        In the <a href="stage3.html">next section</a>, we'll create our monsters and make sure the player can't walk through walls.
+	<!--
+
+
+
+
+
+
+
+	-->
+
+	<script>
+		let content = {
+			TILE: `
+class Tile{
+	constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+	}
+
+	draw(){
+        drawSprite(this.sprite, this.x, this.y);
+	}
+}
+            `,
+            TILE2: `
+class Tile{
+    constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+    }
+
+    draw(){
+        drawSprite(this.sprite, this.x, this.y);
+    }
+}
+
+            `,
+			FLOORANDWALL: `
+class Floor extends Tile{
+    constructor(x,y){
+        super(x, y, 2, true);
+    };
+}
+
+class Wall extends Tile{
+    constructor(x, y){
+        super(x, y, 3, false);
+    }
+}
+            `,
+            PREGENERATELEVEL:
+            `
+    setInterval(draw, 15);
+
+    setupCanvas();
+
+            `,
+            GENERATELEVEL:
+            `
+    generateLevel();
+            `,
+            GENERATETILES:
+            `
+function generateLevel(){
+    generateTiles();
+}
+
+function generateTiles(){
+    tiles = [];
+    for(let i=0;i<numTiles;i++){
+        tiles[i] = [];
+        for(let j=0;j<numTiles;j++){
+            if(Math.random() < 0.3){
+                tiles[i][j] = new Wall(i,j);
+            }else{
+                tiles[i][j] = new Floor(i,j);
+            }
+        }
+    }
+}
+            `,
+            INBOUNDS: `
+function inBounds(x,y){
+    return x>0 && y>0 && x<numTiles-1 && y<numTiles-1;
+}
+            `,
+            GETTILE: `
+function getTile(x, y){
+    if(inBounds(x,y)){
+        return tiles[x][y];
+    }else{
+        return new Wall(x,y);
+    }
+}
+            `,
+            BEFOREITERATETILES: 
+            `
+function draw(){
+    ctx.clearRect(0,0,canvas.width,canvas.height);
+
+            `,
+            ITERATETILES: 
+            `
+    for(let i=0;i<numTiles;i++){
+        for(let j=0;j<numTiles;j++){
+            getTile(i,j).draw();
+        }
+    }
+            `,
+            AFTERITERATETILES: 
+            `
+
+    drawSprite(0, x, y);
+}
+            `,
+            BEFOREINBOUND:
+            `
+function generateTiles(){
+    tiles = [];
+    for(let i=0;i<numTiles;i++){
+        tiles[i] = [];
+        for(let j=0;j<numTiles;j++){
+            `,
+            DELETEINBOUND:
+            `
+            if(Math.random() < 0.3){
+            `,
+            ADDINBOUND:
+            `
+            if(Math.random() < 0.3 || !inBounds(i,j)){
+            `,
+            AFTERINBOUND:
+            `
+                tiles[i][j] = new Wall(i,j);
+            }else{
+                tiles[i][j] = new Floor(i,j);
+            }
+        }
+    }
+}
+            `,
+            TRYTO: `
+function tryTo(description, callback){
+    for(let timeout=1000;timeout>0;timeout--){
+        if(callback()){
+            return;
+        }
+    }
+    throw 'Timeout while trying to '+description;
+}
+            `,
+            RANDOMRANGE:`
+function randomRange(min, max){
+    return Math.floor(Math.random()*(max-min+1))+min;
+}
+            `,
+            RANDOMPASSABLE:`
+function randomPassableTile(){
+    let tile;
+    tryTo('get random passable tile', function(){
+        let x = randomRange(0,numTiles-1);
+        let y = randomRange(0,numTiles-1);
+        tile = getTile(x, y);
+        return tile.passable && !tile.monster;
+    });
+    return tile;
+}
+            `,
+            XY:`
+let x = y = 0;
+            `,
+            XYAFTER: `
+let spritesheet = new Image();
+  spritesheet.src = 'spritesheet.png';
+
+   document.querySelector("html").onkeypress = function(e){
+       if(e.key=="w") y--;
+       if(e.key=="s") y++;
+       if(e.key=="a") x--;
+       if(e.key=="d") x++;
+   };
+
+   setInterval(draw, 15);
+
+   setupCanvas();
+
+    generateLevel();
+            `,
+            USERANDOMPASSABLETILE: `
+    startingTile = randomPassableTile();
+    x = startingTile.x;
+    y = startingTile.y;
+            `,
+            PSEUDO_A: `
+/*
+    generate a level and make note of how many passable tiles we generated
+
+    starting from a random passable tile, get all tiles connected to it
+
+    if the total number of passsable tiles matches the number of connected tiles
+        everything is connected!
+    else 
+        start over
+
+*/
+            `,
+            PSEUDO_B: `
+/*
+    create a list of tiles to check for connectedness
+    create a list of connected tiles
+
+    add a single random passable tile to both lists
+
+    while there are more tiles to check...
+        pick one
+        get its neighbors
+        filter out the walls
+        filter out the tiles we've already found were connected
+        add the filtered neighbors to a list of connected tiles and to the tiles that need to be checked
+
+    return the list of connected tiles
+*/
+            `,
+            REROLL1: `
+function generateLevel(){
+            `,
+            REROLL2: `
+    generateTiles();
+            `,
+            REROLL3: `
+    tryTo('generate map', function(){
+        return generateTiles() == randomPassableTile().getConnectedTiles().length;
+    });
+            `,
+            REROLL4: `
+}
+
+function generateTiles(){
+            `,
+            REROLL5: `
+    let passableTiles=0;
+            `,
+            REROLL6: `
+    tiles = [];
+    for(let i=0;i<numTiles;i++){
+        tiles[i] = [];
+        for(let j=0;j<numTiles;j++){
+            if(Math.random() < 0.3 || !inBounds(i,j)){
+                tiles[i][j] = new Wall(i,j);
+            }else{
+                tiles[i][j] = new Floor(i,j);
+            `,
+            REROLL7: `
+                passableTiles++;
+            `,
+            REROLL8: `
+            }
+        }
+    }
+            `,
+            REROLL9: `
+    return passableTiles;
+            `,
+            REROLL10: `
+}
+            `,
+            CONNECTEDOLD: `
+class Tile{
+    constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+    }
+
+            `,
+            CONNECTEDNEW: `
+    getNeighbor(dx, dy){
+        return getTile(this.x + dx, this.y + dy)
+    }
+
+    getAdjacentNeighbors(){
+        return shuffle([
+            this.getNeighbor(0, -1),
+            this.getNeighbor(0, 1),
+            this.getNeighbor(-1, 0),
+            this.getNeighbor(1, 0)
+        ]);
+    }
+
+    getAdjacentPassableNeighbors(){
+        return this.getAdjacentNeighbors().filter(t => t.passable);
+    }
+
+    getConnectedTiles(){
+        let connectedTiles = [this];
+        let frontier = [this];
+        while(frontier.length){
+            let neighbors = frontier.pop()
+                                .getAdjacentPassableNeighbors()
+                                .filter(t => !connectedTiles.includes(t));
+            connectedTiles = connectedTiles.concat(neighbors);
+            frontier = frontier.concat(neighbors);
+        }
+        return connectedTiles;
+    }
+            `,
+            CONNECTEDAFTER: `
+
+    draw(){
+        drawSprite(this.sprite, this.x, this.y);
+    }
+}
+            `,
+            SHUFFLEOLD: `
+function randomRange(min, max){
+    return Math.floor(Math.random()*(max-min+1))+min;
+}
+
+            `,
+            SHUFFLENEW: `
+function shuffle(arr){
+    let temp, r;
+    for (let i = 1; i < arr.length; i++) {
+        r = randomRange(0,i);
+        temp = arr[i];
+        arr[i] = arr[r];
+        arr[r] = temp;
+    }
+    return arr;
+}
+            `
+		};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage3.html b/js/games/nluqo.github.io/broughlike-tutorial/stage3.html
new file mode 100644
index 0000000..c30f1a4
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage3.html
@@ -0,0 +1,644 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 3</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage2.html">Previously: Map Generation</a>
+        </div>
+		<h1>Stage 3 - Monsters</h1>
+		In this section, we're going to make a 
+        <div class="code-container-inline inline"><pre><code class="javascript">Monster</code></pre></div>
+         class just like we did with the 
+         <div class="code-container-inline inline"><pre><code class="javascript">Tile</code></pre></div>
+          class.
+		<br><br>
+		Earlier, we used just two variables (
+        <div class="code-container-inline inline"><pre><code class="javascript">x</code></pre></div>
+         & 
+         <div class="code-container-inline inline"><pre><code class="javascript">y</code></pre></div>) to represent position, but 
+         <div class="code-container-inline inline"><pre><code class="javascript">Tile</code></pre></div>
+          already has that. So when we want to move a monster around, we'll simply pass it a tile.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container margin-bottom">
+            <pre><code id="contentMONSTER" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSEBRACE" class="javascript add"></code></pre>
+        </div>
+        Each monster
+        has its own 
+        <div class="code-container-inline inline"><pre><code class="javascript">sprite</code></pre></div>
+        and starting
+        <div class="code-container-inline inline"><pre><code class="javascript">hp</code></pre></div>. In addition, the monster will immediately move to its starting
+        <div class="code-container-inline inline"><pre><code class="javascript">tile</code></pre></div>.
+        <br><br>
+        OK, let's start working on that movement code. Before moving we first check a 
+        <div class="code-container-inline inline"><pre><code class="javascript">tryMove</code></pre></div>
+        function. Why is this needed?
+        <br><br>
+        Because in a broughlike the player and other monsters may often "try" to move into tiles where they can't fit! This might mean bouncing off a wall or it might turn into bump combat, a staple of classic roguelikes.
+
+        
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentMONSTER" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript add"></code></pre>
+            <pre><code id="contentMOVE" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSEBRACE" class="javascript"></code></pre>
+        </div>
+        For now, we'll check the neighboring tile (the one we're trying to move into) and only allow a 
+        <div class="code-container-inline inline"><pre><code class="javascript">move</code></pre></div>
+        if the tile is passable and has no monster in it. We'll 
+        <div class="code-container-inline inline"><pre><code class="javascript">return true;</code></pre></div> 
+        to indicate the move was successful - either we could move or attack (we'll do that part later).
+        <br><br>
+        All the
+        <div class="code-container-inline inline"><pre><code class="javascript">move</code></pre></div>
+        method has to do is update a bunch of references: which
+        <div class="code-container-inline inline"><pre><code class="javascript">monster</code></pre></div>
+        is on which
+        <div class="code-container-inline inline"><pre><code class="javascript">tile</code></pre></div>
+        and which
+        <div class="code-container-inline inline"><pre><code class="javascript">tile</code></pre></div>
+        is holding which 
+        <div class="code-container-inline inline"><pre><code class="javascript">monster</code></pre></div>.
+        <br><br>
+
+        OK then. Which monster are we going to make first? The player!
+        <br><br>
+        <em>"Beware that, when fighting monsters, you yourself do not become a monster... "</em> -Nietzsche
+        <br><br>
+        When I first started writing roguelikes I naturally coded the player as a separate thing from the monsters. It seemed counterintuitive to make them the same kind of thing, but actually they share so much behavior. And also it's a common roguelike mechanic that monsters and players behave in <a href="http://www.roguebasin.com/index.php?title=Berlin_Interpretation#Monsters_are_similar_to_players" target="_blank">similar ways</a>.
+        
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentMONSTER" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentMOVE" class="javascript"></code></pre>
+            <pre><code id="contentCLOSEBRACE" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentPLAYER" class="javascript add"></code></pre>
+        </div>
+
+        This should look similar to how we implemented our 
+        <div class="code-container-inline inline"><pre><code class="javascript">Floor</code></pre></div>
+        and
+        <div class="code-container-inline inline"><pre><code class="javascript">Wall</code></pre></div> classes. We're passing a tile that we live on, a sprite index of 
+        <div class="code-container-inline inline"><pre><code class="javascript">0</code></pre></div>,
+        and a maximum HP of 
+        <div class="code-container-inline inline"><pre><code class="javascript">3</code></pre></div>.
+        <br><br>
+        I'm setting an extra flag called 
+        <div class="code-container-inline inline"><pre><code class="javascript">isPlayer</code></pre></div> to dintinguish from other monsters.
+        Some people might say this is a little kludgy, but I find this kind of flag very easy to use.
+        <br><br>
+        Ok, now let's put that player class to use and rip out all our
+        <div class="code-container-inline inline"><pre><code class="javascript">x</code></pre></div>
+         & 
+         <div class="code-container-inline inline"><pre><code class="javascript">y</code></pre></div>
+        references.
+
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentREPLACEX1" class="javascript"></code></pre>
+            <pre><code id="contentREPLACEX2" class="javascript remove"></code></pre>
+            <pre><code id="contentREPLACEX3" class="javascript"></code></pre>
+            <pre><code id="contentREPLACEX4" class="javascript remove "></code></pre>
+            <pre><code id="contentREPLACEX5" class="javascript add"></code></pre>
+            <pre><code id="contentREPLACEX6" class="javascript"></code></pre>
+            <pre><code id="contentREPLACEX7" class="javascript remove"></code></pre>
+            <pre><code id="contentREPLACEX8" class="javascript add"></code></pre>
+        </div>
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentREPLACEDRAW1" class="javascript"></code></pre>
+            <pre><code id="contentREPLACEDRAW2" class="javascript remove"></code></pre>
+            <pre><code id="contentREPLACEDRAW3" class="javascript add"></code></pre>
+            <pre><code id="contentREPLACEDRAW4" class="javascript "></code></pre>
+        </div>
+
+        Test out your game. The player moves around but can't go through walls. Awesome.
+
+        Now let's switch gears and do some art.
+
+        <h2>Drawing Monsters</h2>  
+        <div class="drawing-section">
+            I'd like you to draw the 5 monsters used in the game. As a reminder, the strategy I used was to create a basic shape and then in the next two steps draw shading and highlights.
+            <br><br>
+            The tiny resolution and small color palette of each sprite makes this process fairly easy.
+            Importantly, I didn't worry too much about how great these looked or if they made sense (they definitely don't). Rather my goal was simple sprites that all felt distinct from one another.
+            <br><br>
+            First, the lowly Bird. 
+            <img src="art/bird.png">
+            Here, I made a lizardy dude that I'm calling Snake for some reason.
+            <img src="art/snake.png">
+            Some blobby thing that's going to have lot of health thus called Tank.
+            <img src="art/tank.png">
+            Sort of a big dinosaur head called Eater.
+            <img src="art/eater.png">
+            The last monster is the Jester.
+            <img src="art/jester.png">
+            While we're here, let's draw an HP pip sprite.
+            <img src="art/hp.png">
+         </div>
+        With the hard part out of the way, let's code up the monsters. For now, each one will only differ by sprite and starting HP. More detail to follow.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container margin-bottom">
+            <pre><code id="contentPLAYER" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentFIVEMONSTERS" class="javascript add"></code></pre>
+        </div>
+
+        We need to think about how we're going to <em>spawn</em> the monsters into the game. Right off the bat, I know we're going to want to scale the number of monsters based on the current map level, so first let's add a variable to keep track of that.
+
+        <div class="filename">index.html</div>
+        <div class="code-container margin-bottom">
+            <pre><code id="contentPRELEVELVAR" class="javascript"></code></pre>
+            <pre><code id="contentLEVELVAR" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTLEVELVAR" class="javascript"></code></pre>
+        </div>
+        Then two new functions: one to spawn a single monster and another to create an bunch of monsters by repeatedly calling the first.
+
+        <div class="filename">map.js</div>
+        <div class="code-container">
+            <pre><code id="contentRANDOMPASSABLE" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript add"></code></pre>
+            <pre><code id="contentSPAWNMONSTERS" class="javascript add"></code></pre>
+        </div>
+        In this code, we're going to make an array of 
+        <div class="code-container-inline inline"><pre><code class="javascript">monsters</code></pre></div>,
+        and spawn some monsters into it. How many do we want to spawn? One more than the current level (2 on the first floor, 3 on the second floor, etc.)
+        <br><br>
+        In 
+        <div class="code-container-inline inline"><pre><code class="javascript">spawnMonster</code></pre></div>
+        , we start with an array of 
+        <div class="code-container-inline inline"><pre><code class="javascript">Monster</code></pre></div>
+        classes that we just coded. To grab a random one, we'll 
+        <div class="code-container-inline inline"><pre><code class="javascript">shuffle</code></pre></div>
+         the array and grab the first element. Here again you see the use of the
+        <div class="code-container-inline inline"><pre><code class="javascript">new</code></pre></div> keyword but this time combined with a variable instead of the literal name of a class. We start them each on a 
+        <div class="code-container-inline inline"><pre><code class="javascript">randomPassableTile</code></pre></div>
+         like we did with the player. Then we add them to our 
+        <div class="code-container-inline inline"><pre><code class="javascript">monsters</code></pre></div> array.
+
+
+        <br><br>
+        Only two more things to get monsters into the game: actually triggering 
+        <div class="code-container-inline inline"><pre><code class="javascript">generateMonsters</code></pre></div>
+        and then drawing them.
+
+        <div class="filename">map.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREGENERATEMONSTERS" class="javascript"></code></pre>
+            <pre><code id="contentGENERATEMONSTERS" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTGENERATEMONSTERS" class="javascript"></code></pre>
+        </div>
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREDRAWMONSTERS" class="javascript"></code></pre>
+            <pre><code id="contentDRAWMONSTERS" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTDRAWMONSTERS" class="javascript"></code></pre>
+        </div>
+
+        Check it out. We've got monsters on the map. They aren't doing much besides blocking our path. We'll need some monster AI to make this more interesting.
+        <h2>Monster movement</h2>
+        I often use a pathfinding algorithm called <strong>A*</strong> to handle monster movement. But take a look at the <a href="https://en.wikipedia.org/wiki/A*_search_algorithm#Pseudocode" target="_blank">pseudocode</a>. It's hard to get right, even if you've written it before. If you <em>did</em> want to use <strong>A*</strong>, I would strongly recommend a library like rot.js to handle it.
+        <br><br>
+        Instead we're going to take a shortcut and use "greedy" movement, which simply means trying to get closer on <em>every</em> turn even if it's not the ideal path in the long term. Monsters will try to move closer even when that gets them trapped. Trust me, this will still lead to interesting (but unique) gameplay.
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREMONSTERUPDATE" class="javascript"></code></pre>
+            <pre><code id="contentMONSTERUPDATE" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTMONSTERUPDATE" class="javascript"></code></pre>
+        </div>
+        Our movement code will go in a method called
+        <div class="code-container-inline inline"><pre><code class="javascript">doStuff</code></pre></div>. Why not just do it all in 
+        <div class="code-container-inline inline"><pre><code class="javascript">update</code></pre></div>? We very often want to separate updates (things like status effect counters or health regeneration) from monster actions.
+        <br><br>
+        We start by getting a monster's passable, adjacent neighbors that are either empty and can be moved to or contain the player and can be attacked. Now we need to pick the <em>closest</em> tile to the player. We do that with a
+        <div class="code-container-inline inline"><pre><code class="javascript">sort</code></pre></div>
+        that is going to sort our 
+        <div class="code-container-inline inline"><pre><code class="javascript">neighbors</code></pre></div>
+        by their distance to the player, picking the first one (which will be closest), and trying to move to it.
+        <br><br>
+        Here's the method for calculating distance, specifically <a href="https://en.wikipedia.org/wiki/Taxicab_geometry" target="_blank">Manhattan distance</a>.
+        <div class="filename">tile.js</div>
+        <div class="code-container margin-bottom">
+            <pre><code id="contentPREDIST" class="javascript"></code></pre>
+            <pre><code id="contentDIST" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTDIST" class="javascript"></code></pre>
+        </div>
+
+        When should we call 
+        <div class="code-container-inline inline"><pre><code class="javascript">update</code></pre></div>?
+        In game dev, the code to update the world and the monsters in it is commonly called a "tick". So we need one of those.
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentPRETICK" class="javascript"></code></pre>
+            <pre><code id="contentTICK" class="javascript add"></code></pre>
+        </div>
+        We iterate over 
+        <div class="code-container-inline inline"><pre><code class="javascript">monsters</code></pre></div>
+        (importantly in <em>reverse</em> so they can be safely deleted), call 
+        <div class="code-container-inline inline"><pre><code class="javascript">update</code></pre></div>
+        if each monster is alive, and if not delete them with 
+        <div class="code-container-inline inline"><pre><code class="javascript">splice</code></pre></div>.
+        <br><br>
+        The last piece of the puzzle is when to call 
+        <div class="code-container-inline inline"><pre><code class="javascript">tick</code></pre></div>
+        and I bet you can guess. In a turn based roguelike, monsters move immediately after the player takes an action.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREPLAYERTRYMOVE" class="javascript"></code></pre>
+            <pre><code id="contentPLAYERTRYMOVE" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTPLAYERTRYMOVE" class="javascript"></code></pre>
+        </div>
+        We override the 
+        <div class="code-container-inline inline"><pre><code class="javascript">tryMove</code></pre></div>
+        method in the
+        <div class="code-container-inline inline"><pre><code class="javascript">Player</code></pre></div>
+        class. The overriden method that we wrote earlier in 
+        <div class="code-container-inline inline"><pre><code class="javascript">Monster</code></pre></div>
+        is still available for us to use by calling 
+        <div class="code-container-inline inline"><pre><code class="javascript">super.tryMove(dx, dy)</code></pre></div>. If that method returns true
+        (meaning the player action was a success instead of, say, bumping into a wall), we can trigger 
+        <div class="code-container-inline inline"><pre><code class="javascript">tick</code></pre></div>
+        and all the monsters will then move.
+        <br><br>
+        Try out your game and that's exactly what you should see.
+        <img src="screens/chasing.gif">
+        In the <a href="stage4.html">next section</a>, we're going to get the monsters attacking and fill out the details in our 5 monster implementations.
+	</div>
+
+	<script>
+		let content = {
+			MONSTER: `
+class Monster{
+	constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+	}
+
+	draw(){
+        drawSprite(this.sprite, this.tile.x, this.tile.y);
+	}
+			`,
+			CLOSEBRACE: `
+}
+			`,
+			MOVE: `
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            if(!newTile.monster){
+                this.move(newTile);
+            }
+            return true;
+        }
+    }
+
+    move(tile){
+        if(this.tile){
+            this.tile.monster = null;
+        }
+        this.tile = tile;
+        tile.monster = this;
+    }
+			`,
+            PLAYER: `
+class Player extends Monster{
+    constructor(tile){
+        super(tile, 0, 3);
+        this.isPlayer = true;
+    }
+}
+        `,
+        REPLACEX1:
+        `
+<script>
+    tileSize = 64;
+    numTiles = 9;
+    uiWidth = 4;
+
+        `,
+        REPLACEX2:
+        `
+    x = y = 0;
+        `,
+        REPLACEX3:
+        `
+    spritesheet = new Image();
+    spritesheet.src = 'spritesheet.png';
+
+    document.querySelector("html").onkeypress = function(e){
+        `,
+        REPLACEX4:
+        `
+        if(e.key=="w") y--;
+        if(e.key=="s") y++;
+        if(e.key=="a") x--;
+        if(e.key=="d") x++;
+        `,
+        REPLACEX5:
+        `
+        if(e.key=="w") player.tryMove(0, -1);
+        if(e.key=="s") player.tryMove(0, 1);
+        if(e.key=="a") player.tryMove(-1, 0);
+        if(e.key=="d") player.tryMove(1, 0);
+        `,
+        REPLACEX6:
+        `
+    };
+
+    setInterval(draw, 15);
+
+    setupCanvas();
+
+    generateLevel();
+
+        `,
+        REPLACEX7:
+        `
+    startingTile = randomPassableTile();
+    x = startingTile.x;
+    y = startingTile.y;       
+        `,
+        REPLACEX8:
+        `
+    player = new Player(randomPassableTile());
+        `,
+        REPLACEDRAW1:
+        `
+function draw(){
+    ctx.clearRect(0,0,canvas.width,canvas.height);
+
+    for(let i=0;i<numTiles;i++){
+        for(let j=0;j<numTiles;j++){
+            getTile(i,j).draw();
+        }
+    }
+
+        `,
+        REPLACEDRAW2:
+        `
+    drawSprite(0, x, y);
+        `,
+        REPLACEDRAW3:
+        `
+    player.draw();
+        `,
+        REPLACEDRAW4:
+        `
+}
+        `,
+        FIVEMONSTERS:
+        `
+class Bird extends Monster{
+    constructor(tile){
+        super(tile, 4, 3);
+    }
+}
+
+class Snake extends Monster{
+    constructor(tile){
+        super(tile, 5, 1);
+    }
+}
+
+class Tank extends Monster{
+    constructor(tile){
+        super(tile, 6, 2);
+    }
+}
+
+class Eater extends Monster{
+    constructor(tile){
+        super(tile, 7, 1);
+    }
+}
+
+class Jester extends Monster{
+    constructor(tile){
+        super(tile, 8, 2);
+    }
+}
+        `,
+        PRELEVELVAR:
+        `
+<script>
+    tileSize = 64;
+    numTiles = 9;
+    uiWidth = 4;
+        `,
+        LEVELVAR:
+        `
+    level = 1;
+        `,
+        POSTLEVELVAR:
+        `
+
+    spritesheet = new Image();
+    spritesheet.src = 'spritesheet.png';
+        `,
+        RANDOMPASSABLE:
+        `
+function randomPassableTile(){
+    let tile;
+    tryTo('get random passable tile', function(){
+        let x = randomRange(0,numTiles-1);
+        let y = randomRange(0,numTiles-1);
+        tile = getTile(x, y);
+        return tile.passable && !tile.monster;
+    });
+    return tile;
+}
+        `,
+        SPAWNMONSTERS:
+        `
+function generateMonsters(){
+    monsters = [];
+    let numMonsters = level+1;
+    for(let i=0;i<numMonsters;i++){
+        spawnMonster();
+    }
+}
+
+function spawnMonster(){
+    let monsterType = shuffle([Bird, Snake, Tank, Eater, Jester])[0];
+    let monster = new monsterType(randomPassableTile());
+    monsters.push(monster);
+}
+        `,
+        PREGENERATEMONSTERS:
+        `
+function generateLevel(){
+    tryTo('generate map', function(){
+        return generateTiles() == randomPassableTile().getConnectedTiles().length;
+    });
+
+        `,
+        GENERATEMONSTERS:
+        `
+    generateMonsters();
+        `,
+        POSTGENERATEMONSTERS:
+        `
+}
+        `,
+        PREDRAWMONSTERS:
+        `
+function draw(){
+    ctx.clearRect(0,0,canvas.width,canvas.height);
+
+    for(let i=0;i<numTiles;i++){
+        for(let j=0;j<numTiles;j++){
+            getTile(i,j).draw();
+        }
+    }
+
+        `,
+        DRAWMONSTERS:
+        `
+    for(let i=0;i<monsters.length;i++){
+        monsters[i].draw();
+    }
+        `,
+        POSTDRAWMONSTERS:
+        `
+
+    player.draw();
+}
+        `,
+        PREMONSTERUPDATE:
+        `
+class Monster{
+    constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+    }
+
+        `,
+        MONSTERUPDATE:
+        `
+    update(){
+        this.doStuff();
+    }
+
+    doStuff(){
+       let neighbors = this.tile.getAdjacentPassableNeighbors();
+       
+       neighbors = neighbors.filter(t => !t.monster || t.monster.isPlayer);
+
+       if(neighbors.length){
+           neighbors.sort((a,b) => a.dist(player.tile) - b.dist(player.tile));
+           let newTile = neighbors[0];
+           this.tryMove(newTile.x - this.tile.x, newTile.y - this.tile.y);
+       }
+    }
+        `,
+        POSTMONSTERUPDATE:
+        `
+
+    draw(){
+        drawSprite(this.sprite, this.tile.x, this.tile.y);
+    }
+        `,
+        PREDIST:
+        `
+class Tile{
+    constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+    }
+
+        `,
+        DIST:
+        `
+    //manhattan distance
+    dist(other){
+        return Math.abs(this.x-other.x)+Math.abs(this.y-other.y);
+    }
+        `,
+        POSTDIST:
+        `
+
+    getNeighbor(dx, dy){
+        return getTile(this.x + dx, this.y + dy)
+    }
+        `,
+        PRETICK:
+        `
+function draw(){
+    ctx.clearRect(0,0,canvas.width,canvas.height);
+
+    for(let i=0;i<numTiles;i++){
+        for(let j=0;j<numTiles;j++){
+            getTile(i,j).draw();
+        }
+    }
+
+
+    for(let i=0;i<monsters.length;i++){
+        monsters[i].draw();
+    }
+
+    player.draw();
+}
+
+        `,
+        TICK:
+        `
+function tick(){
+    for(let k=monsters.length-1;k>=0;k--){
+        if(!monsters[k].dead){
+            monsters[k].update();
+        }else{
+            monsters.splice(k,1);
+        }
+    }
+}
+        `,
+        PREPLAYERTRYMOVE:
+        `
+class Player extends Monster{
+    constructor(tile){
+        super(tile, 0, 3);
+        this.isPlayer = true;
+    }
+
+        `,
+        PLAYERTRYMOVE:
+        `
+    tryMove(dx, dy){
+        if(super.tryMove(dx,dy)){
+            tick();
+        }
+    }
+        `,
+        POSTPLAYERTRYMOVE:
+        `
+}
+        `
+        
+	   };
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage4.html b/js/games/nluqo.github.io/broughlike-tutorial/stage4.html
new file mode 100644
index 0000000..e055cda
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage4.html
@@ -0,0 +1,472 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 4</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage3.html">Previously: Monsters</a>
+        </div>
+		<h1>Stage 4 - Monsters Part 2</h1>
+
+		Since the monsters will be attacking the player and vice versa, let's first draw the HP for each.
+		
+		<div class="filename">monster.js</div>
+        <div class="code-container">
+			<pre><code id="contentDRAWHP1" class="javascript"></code></pre>
+			<pre><code id="contentDRAWHP2" class="javascript add"></code></pre>
+			<pre><code id="contentDRAWHP3" class="javascript"></code></pre>
+			<pre><code id="contentDRAWHP4" class="javascript add"></code></pre>
+        </div>
+        Monster HP now displays nicely.
+        <br><br>
+        The idea here is to draw one HP pip sprite for each unit of HP the monster has. We can't just draw each pip in the same spot; you would only see the top one in that case. We've got a bit of funky math to layout all the pips:
+        <br><br>
+        <ul>
+            <li>
+                <strong>
+                    <div class="code-container-inline inline"><pre><code class="javascript">5/16</code></pre></div>
+                </strong> - Since 
+                <div class="code-container-inline inline"><pre><code class="javascript">drawSprite</code></pre></div>
+                operates on a sprite index we normally pass in whole numbers representing 16 pixel sprites. However, we can instead work in individual pixels by using fractions. So  
+                <div class="code-container-inline inline"><pre><code class="javascript">5/16</code></pre></div>
+                means 5 pixels within a 16 pixel sprite.
+            </li>
+            <li>
+                <strong>
+                    <div class="code-container-inline inline"><pre><code class="javascript">i%3</code></pre></div>
+                </strong> - this resets to 0 every 3 pips.
+            </li>
+            <li>
+                <strong>
+                    <div class="code-container-inline inline"><pre><code class="javascript">Math.floor(i/3)</code></pre></div>
+                </strong> - this increases by one every 3 pips.
+            </li>
+        </ul>
+        The result means pips are drawn first left to right offset by 5 pixels each and then stacked vertically offset by 5 pixels for each row.
+        <img src="screens/hp.png">
+        <h2>Attacking</h2>
+        Now onto attacking. We can let the monsters attack the player and vice versa with a small addition to
+        <div class="code-container-inline inline"><pre><code class="javascript">tryMove</code></pre></div>.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentATTACK1" class="javascript"></code></pre>
+            <pre><code id="contentATTACK2" class="javascript add"></code></pre>
+            <pre><code id="contentATTACK3" class="javascript"></code></pre>
+            <pre><code id="contentATTACK4" class="javascript add"></code></pre>
+        </div>
+        We're comparing 
+        <div class="code-container-inline inline"><pre><code class="javascript">isPlayer</code></pre></div>
+        flags to make sure monsters don't attack each other.
+        <br><br>
+        When an attack is successful, that triggers
+        <div class="code-container-inline inline"><pre><code class="javascript">hit</code></pre></div>,
+        applying damage to the target monster's HP and if they run out of HP, they
+        <div class="code-container-inline inline"><pre><code class="javascript">die</code></pre></div>. When dying, the monster sprite is set to index 
+        <div class="code-container-inline inline"><pre><code class="javascript">1</code></pre></div>
+        (our player corpse). This will only apply to the player since we earlier wrote code to delete monsters as soon as they are 
+        <div class="code-container-inline inline"><pre><code class="javascript">dead</code></pre></div>.
+        <br><br>
+        Cool beans! Attacking is in the game. If you let the monsters kill you, you'll notice that you're still able to move around the map as a corpse. We'll tackle that later.
+        <br><br>
+        Monsters are working as expected, but with identical behavior. Here's the plan for making each one unique:
+
+        <ul>
+            <li><strong>Bird:</strong> our basic monster with no special behavior</li>
+            <li><strong>Snake:</strong> moves twice (yes, basically copied from 868-HACK's Virus)</li>
+            <li><strong>Tank:</strong> moves every other turn</li>
+            <li><strong>Eater:</strong> destroys walls and heals by doing so</li>
+            <li><strong>Jester:</strong> moves randomly</li>
+        </ul>
+        <h2>Snake</h2>
+        Since 
+        <div class="code-container-inline inline"><pre><code class="javascript">Bird</code></pre></div>
+        is already done, let's start with 
+        <div class="code-container-inline inline"><pre><code class="javascript">Snake</code></pre></div>. Make sure to test out each monster after updating their code. While testing this code, it may be easier to temporarily modify the 
+        <div class="code-container-inline inline"><pre><code class="javascript">spawnMonster</code></pre></div>
+        code to only generate a specific kind of monster (left as an exercise for the reader). Or you can just refresh a bunch of times.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentSNAKE" class="javascript"></code></pre>
+            <pre><code id="contentSNAKEADD" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+        Rather simple. The Snake can move twice, move and attack, but not attack twice (that's overpowered!).
+
+        We need one tie-in within tryMove to set 
+        <div class="code-container-inline inline"><pre><code class="javascript">attackedThisTurn</code></pre></div>
+        to true upon attacking.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREATTACKEDTHISTURN" class="javascript"></code></pre>
+            <pre><code id="contentATTACKEDTHISTURN" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTATTACKEDTHISTURN" class="javascript"></code></pre>
+        </div>
+
+        <h2>Tank</h2>
+        While working on the Tank, we'll introduce a 
+        <div class="code-container-inline inline"><pre><code class="javascript">stunned</code></pre></div>
+        flag. When a monster is stunned, they'll be unable to react until the next turn.
+        <br><br>
+        We'll be able to use this flag in multiple ways: to stun monsters whenever they are hit by the player or hit by certain spells and to pause the action of monsters like the Tank.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREATTACKEDTHISTURN" class="javascript"></code></pre>
+            <pre><code id="contentATTACKEDTHISTURN" class="javascript"></code></pre>
+            <pre><code id="contentSTUNFLAG" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTATTACKEDTHISTURN" class="javascript"></code></pre>
+        </div>
+        When monsters are attacked, they get 
+        <div class="code-container-inline inline"><pre><code class="javascript">stunned</code></pre></div>,
+        making it easier  for the player to take on tough monsters.
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREUPDATEDUPDATE" class="javascript"></code></pre>
+            <pre><code id="contentUPDATEDUPDATE" class="javascript add"></code></pre>
+            <pre><code id="contentPOSTUPDATEDUPDATE" class="javascript"></code></pre>
+        </div>
+        If the
+        <div class="code-container-inline inline"><pre><code class="javascript">stunned</code></pre></div>
+        flag is true, we reset it to false and do a 
+        <div class="code-container-inline inline"><pre><code class="javascript">return</code></pre></div>
+        which exits the function and prevents the monster from doing anything until next turn.
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentTANK" class="javascript"></code></pre>
+            <pre><code id="contentTANKADD" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+        Here, the 
+        <div class="code-container-inline inline"><pre><code class="javascript">Tank</code></pre></div>
+        monster stuns itself if it wasn't already
+        <div class="code-container-inline inline"><pre><code class="javascript">stunned</code></pre></div>
+        at the beginning of the turn. Effectively, this results in action only every other turn.
+
+        <h2>Eater</h2>
+        Then comes the 
+        <div class="code-container-inline inline"><pre><code class="javascript">Eater</code></pre></div>.
+        Before doing normal monster behavior, this guy is going to check for any nearby walls and eat them for health! Each wall will grant half a health point (our 
+        <div class="code-container-inline inline"><pre><code class="javascript">drawHp</code></pre></div>
+        method only draws whole points though).
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentEATER" class="javascript"></code></pre>
+            <pre><code id="contentEATERADD" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+        First, we need to get all the nearby walls using 
+        <div class="code-container-inline inline"><pre><code class="javascript">getAdjacentNeighbors</code></pre></div>
+        and only include tiles that are not 
+        <div class="code-container-inline inline"><pre><code class="javascript">passable</code></pre></div>
+        (indicating a wall)
+        and are also 
+        <div class="code-container-inline inline"><pre><code class="javascript">inBounds</code></pre></div>
+        (so the outer wall doesn't get destroyed).
+        <br><br>
+        If walls are found, we're going to call two new methods. The 
+        <div class="code-container-inline inline"><pre><code class="javascript">replace</code></pre></div>
+        method is replacing a
+        <div class="code-container-inline inline"><pre><code class="javascript">Wall</code></pre></div>
+        tile with a 
+        <div class="code-container-inline inline"><pre><code class="javascript">Floor</code></pre></div> tile.
+        The 
+        <div class="code-container-inline inline"><pre><code class="javascript">heal</code></pre></div>
+        method adds half a hitpoint to the monster.  If no walls are found, we'll simply do the normal monster behavior.
+        <br><br>
+        Now let's implement those methods.
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREHEAL" class="javascript"></code></pre>
+            <pre><code id="contentHEAL" class="javascript add"></code></pre>
+        </div>
+        This method 
+        <div class="code-container-inline inline"><pre><code class="javascript">heal</code></pre></div>
+        is a one-liner. Add some amount of healing "damage" without going over some global 
+        <div class="code-container-inline inline"><pre><code class="javascript">maxHp</code></pre></div>, which we'll need to define next. We don't want our monsters to gain infinite health!
+        <div class="filename">index.html</div>
+        <div class="code-container margin-bottom">
+            <pre><code id="contentPREMAXHP" class="javascript"></code></pre>
+            <pre><code id="contentMAXHP" class="javascript add"></code></pre>
+        </div>
+        Next up is <div class="code-container-inline inline"><pre><code class="javascript">replace</code></pre></div>.
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentPREREPLACE" class="javascript"></code></pre>
+            <pre><code id="contentREPLACE" class="javascript add"></code></pre>
+        </div>
+        You can use
+        <div class="code-container-inline inline"><pre><code class="javascript">replace</code></pre></div>
+        any time one tile type changes into another type. Here it's a wall replacing a floor, but imagine if a water tile replaced a floor!
+        <br><br>One thing that's not coded here is to copy over monsters and items present on the old tile to the new tile. Keep that in mind for future additions.
+
+
+        <h2>Jester</h2>
+			The last monster is the 
+            <div class="code-container-inline inline"><pre><code class="javascript">Jester</code></pre></div>
+            and it's able to move randomly simply by trying to move to the first neighbor returned by the (pre-shuffled)
+            <div class="code-container-inline inline"><pre><code class="javascript">getAdjacentPassableNeighbors</code></pre></div>.
+            <div class="filename">tile.js</div>
+            <div class="code-container margin-bottom">
+                <pre><code id="contentJESTER" class="javascript"></code></pre>
+                <pre><code id="contentJESTERADD" class="javascript add"></code></pre>
+                <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+            </div>
+
+            With those enemy behaviors in place, our little broughlike is starting to feel like... a game. 😍
+            <img src="screens/behavior.gif">
+			In the <a href="stage5.html">next section</a>, we'll turn this thing into a proper game with a title screen, multiple levels, and victory and failure conditions.
+	</div>
+
+	<script>
+		let content = {
+			DRAWHP1:
+			`
+    draw(){
+        drawSprite(this.sprite, this.tile.x, this.tile.y);
+    			`,
+    			DRAWHP2:
+    			`
+        this.drawHp();
+			`,
+			DRAWHP3:
+			`
+    }
+
+			`,
+			DRAWHP4:
+			`
+    drawHp(){
+        for(let i=0; i<this.hp; i++){
+            drawSprite(
+                9,
+                this.tile.x + (i%3)*(5/16),
+                this.tile.y - Math.floor(i/3)*(5/16)
+            );
+        }
+    }		
+			`,
+            ATTACK1:
+            `
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            if(!newTile.monster){
+                this.move(newTile);
+            `,
+            ATTACK2:
+            `
+            }else{
+                if(this.isPlayer != newTile.monster.isPlayer){
+                    newTile.monster.hit(1);
+                }
+            `,
+            ATTACK3:
+            `
+            }
+            return true;
+        }
+    }
+
+            `,
+            ATTACK4:
+            `
+    hit(damage){
+        this.hp -= damage;
+        if(this.hp <= 0){
+            this.die();
+        }
+    }
+
+    die(){
+        this.dead = true;
+        this.tile.monster = null;
+        this.sprite = 1;
+    }
+            `,
+            SNAKE:
+            `
+class Snake extends Monster{
+    constructor(tile){
+        super(tile, 5, 1);
+    }
+
+            `,
+            SNAKEADD:
+            `
+    doStuff(){
+        this.attackedThisTurn = false;
+        super.doStuff();
+
+        if(!this.attackedThisTurn){
+            super.doStuff();
+        }
+    }
+            `,
+            TANK:
+            `
+class Tank extends Monster{
+    constructor(tile){
+        super(tile, 6, 2);
+    }
+
+            `,
+            TANKADD:
+            `
+    update(){
+        let startedStunned = this.stunned;
+        super.update();
+        if(!startedStunned){
+            this.stunned = true;
+        }
+    }
+            `,
+            EATER:
+            `
+class Eater extends Monster{
+    constructor(tile){
+        super(tile, 7, 1);
+    }
+
+            `,
+            EATERADD:
+            `
+    doStuff(){
+        let neighbors = this.tile.getAdjacentNeighbors().filter(t => !t.passable && inBounds(t.x,t.y));
+        if(neighbors.length){
+            neighbors[0].replace(Floor);
+            this.heal(0.5);
+        }else{
+            super.doStuff();
+        }
+    }
+            `,
+            JESTER:
+            `
+class Jester extends Monster{
+    constructor(tile){
+        super(tile, 8, 2);
+    }
+
+            `,
+            JESTERADD:
+            `
+    doStuff(){
+        let neighbors = this.tile.getAdjacentPassableNeighbors();
+        if(neighbors.length){
+            this.tryMove(neighbors[0].x - this.tile.x, neighbors[0].y - this.tile.y);
+        }
+    }
+            `,
+            CLOSINGBRACE:
+            `
+}
+
+            `,
+            PREATTACKEDTHISTURN:
+            `
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            if(!newTile.monster){
+                this.move(newTile);
+            }else{
+                if(this.isPlayer != newTile.monster.isPlayer){       
+            `,
+            ATTACKEDTHISTURN:
+            `
+                    this.attackedThisTurn = true;
+            `,
+            POSTATTACKEDTHISTURN:
+            `
+                    newTile.monster.hit(1);
+                }
+            }
+            return true;
+        }
+    }
+            `,
+            STUNFLAG:
+            `
+                    newTile.monster.stunned = true;
+            `,
+            PREUPDATEDUPDATE:
+            `
+    update(){
+            `,
+            UPDATEDUPDATE:
+            `
+        if(this.stunned){
+            this.stunned = false;
+            return;
+        }
+            `,
+            POSTUPDATEDUPDATE:
+            `
+
+        this.doStuff();
+    }
+            `,
+            PREHEAL:
+            `
+class Monster{
+    constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+    }
+
+            `,
+            HEAL:
+            `
+    heal(damage){
+        this.hp = Math.min(maxHp, this.hp+damage);
+    }
+            `,
+            PREMAXHP:
+            `
+<script>
+    tileSize = 64;
+    numTiles = 9;
+    uiWidth = 4;
+    level = 1;
+            `,
+            MAXHP:
+            `
+    maxHp = 6; 
+            `,
+            PREREPLACE:
+            `
+class Tile{
+    constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+    }
+
+            `,
+            REPLACE:
+            `
+    replace(newTileType){
+        tiles[this.x][this.y] = new newTileType(this.x, this.y);
+        return tiles[this.x][this.y];
+    }
+            `
+		};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage5.html b/js/games/nluqo.github.io/broughlike-tutorial/stage5.html
new file mode 100644
index 0000000..3e6e08e
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage5.html
@@ -0,0 +1,704 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 5</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage4.html">Previously: Monsters - Part 2</a>
+        </div>
+		<h1>Stage 5: Game Lifecycle: drawing text, title screen, failure condition, and moving between levels</h1>
+        Currently, when monsters are killed they are immediately deleted from the game. That's great, but there is no code to handle <em>player</em> death. Let's tackle that now.
+        <h2>Game state</h2>
+        We'll add the concept of a 
+        <div class="code-container-inline inline"><pre><code class="javascript">gameState</code></pre></div>
+        so we can model the game as a <a href="https://en.wikipedia.org/wiki/Finite-state_machine">finite state machine</a> with four states.
+        <br><br>
+        Our four states:
+        <ul>
+            <li><strong>loading</strong>: waiting for the assets to load</li> 
+            <li><strong>title</strong>: on the title screen</li> 
+            <li><strong>running</strong>: playing the game actively</li> 
+            <li><strong>dead</strong>: the moment after the player has died, but before returning to the title screen</li> 
+        </ul>
+        "Finite state machine" sounds super complicated. It's not.
+        <img src="screens/state-machine.png">
+        Just think about a title screen. That's a state. Then when the <em>actual game</em> is running, that's a state. Clearly different things are displayed on the title screen versus the game proper. And pressing a specific button in-game and pressing it on the title screen do different things. So that's all we're trying to accomplish.
+        <br><br>
+        To make this work, we need to only do two things.
+        <ol>
+            <li>When needed, switch states simply by setting <div class="code-container-inline inline"><pre><code class="javascript">gameState</code></pre></div> to a different state name</li>
+            <li>Use conditionals checking the value of <div class="code-container-inline inline"><pre><code class="javascript">gameState</code></pre></div> to wrap behavior that should only occur in specific states</li>
+            
+        </ol>
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentLOADING1" class="javascript"></code></pre>
+            <pre><code id="contentLOADING2" class="javascript add"></code></pre>
+            <pre><code id="contentLOADING3" class="javascript"></code></pre>
+            <pre><code id="contentLOADING4" class="javascript add"></code></pre>
+            <pre><code id="contentLOADING5" class="javascript"></code></pre>
+            <pre><code id="contentLOADING6" class="javascript add"></code></pre>
+            <pre><code id="contentLOADING7" class="javascript"></code></pre>
+            <pre><code id="contentLOADING8" class="javascript remove"></code></pre>
+            <pre><code id="contentLOADING9" class="javascript add"></code></pre>
+            <pre><code id="contentLOADING10" class="javascript"></code></pre>
+        </div>
+
+        When our spritesheet image loads, we want to switch to showing the title screen which is accomplished by assigning a function to
+        <div class="code-container-inline inline"><pre><code class="javascript">spritesheet.onload</code></pre></div>
+        (we'll write that 
+        <div class="code-container-inline inline"><pre><code class="javascript">showTitle</code></pre></div>
+        function below next). But what's our first state? Unsurprisingly, we're initializing 
+        <div class="code-container-inline inline"><pre><code class="javascript">gameState</code></pre></div>
+        to "loading" because that's the first thing that happens. 
+        <br><br>
+        While we're here, we're adding some variables related to the game lifecycle: 
+        <div class="code-container-inline inline"><pre><code class="javascript">startingHp</code></pre></div>
+        and
+        <div class="code-container-inline inline"><pre><code class="javascript">numLevels</code></pre></div>.
+        <br><br>
+        Within the  
+        <div class="code-container-inline inline"><pre><code class="javascript">onkeypress</code></pre></div>
+        handler, you can see where we're starting to add transitions between game states when buttons are pressed and also restricting when gameplay actions can take place (only when "running").
+        <br><br>
+        Lastly, we're moving out some code related to setting the
+        <div class="code-container-inline inline"><pre><code class="javascript">player</code></pre></div>
+        location and generating a level. If we're going to have multiple levels, it no longer makes sense to do these things only once.
+        <br><br>
+
+        There are several small changes to add to game.js:
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAW1" class="javascript"></code></pre>
+            <pre><code id="contentDRAW2" class="javascript add"></code></pre>
+            <pre><code id="contentDRAW3" class="javascript"></code></pre>
+            <pre><code id="contentDRAW4" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentTICK1" class="javascript"></code></pre>
+            <pre><code id="contentTICK2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentSHOWTITLE" class="javascript add"></code></pre>
+        </div>
+        In 
+        <div class="code-container-inline inline"><pre><code class="javascript">draw</code></pre></div>,
+        we restrict our draw operations to when the game is running OR when the player just died.
+        <br><br>
+        In 
+        <div class="code-container-inline inline"><pre><code class="javascript">tick</code></pre></div>,
+        we change to the "dead" state when we detect that the player has died.
+        <br><br>
+        In 
+        <div class="code-container-inline inline"><pre><code class="javascript">showTitle</code></pre></div>,
+        we draw a semi-transparent black background, which will function as our title screen for now. Then we change to the "title" state.
+        <br><br>
+        In 
+        <div class="code-container-inline inline"><pre><code class="javascript">startGame</code></pre></div>,
+        we jump to the first floor, call <div class="code-container-inline inline"><pre><code class="javascript">startLevel</code></pre></div>, and we change to the "running" state.
+        <br><br>
+        In 
+        <div class="code-container-inline inline"><pre><code class="javascript">startLevel</code></pre></div>,
+        we move over the code that we took out of index.html. Also <div class="code-container-inline inline"><pre><code class="javascript">player</code></pre></div> gets initalized with 
+        <div class="code-container-inline inline"><pre><code class="javascript">hp</code></pre></div>
+         equal to the value passed in 
+        <div class="code-container-inline inline"><pre><code class="javascript">playerHp</code></pre></div>. This value starts as 3, but in a little bit we'll use this function to persist player HP across levels.
+        <br><br>
+        Now load up the game. You'll see the "title screen", a black box for now. When you hit a key, the game will start running. And if you were to die, everything would freeze until you pressed another key... leading back to the title screen, this time overlaid semitransparently over the game. That's the whole state machine right there working!
+        <h2>Spawning more monsters</h2>
+        It's not easy to die in this game. No monsters spawn after the first two. Let's make it harder.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentTICK1" class="javascript"></code></pre>
+            <pre><code id="contentTICK2" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentSPAWN1" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentSPAWN2" class="javascript"></code></pre>
+            <pre><code id="contentSPAWN3" class="javascript add"></code></pre>
+            <pre><code id="contentSPAWN4" class="javascript"></code></pre>
+        </div>
+
+        We're using two new global variables.
+
+        <ul>
+            <li>
+                <div class="code-container-inline inline"><pre><code class="javascript">spawnCounter</code></pre></div>
+                counts down until each spawn and then resets
+            </li>
+            <li>
+                <div class="code-container-inline inline"><pre><code class="javascript">spawnRate</code></pre></div>
+                is how often monsters will get spawned and provides the initial value for <div class="code-container-inline inline"><pre><code class="javascript">spawnCounter</code></pre></div> every time it is reset
+            </li>
+        </ul>
+        After every spawn,
+        <div class="code-container-inline inline"><pre><code class="javascript">spawnRate</code></pre></div>
+        is decremented so that monsters come out even faster.
+        <ul>
+            <ol>After the first 15 turns, a new monster gets spawned</ol>
+            <ol>14 turns after that, another monster spawns</ol>
+            <ol>13 turns after that, another monster spawns</ol>
+            <ol>...</ol>
+            <ol>And so on until monsters spawn every turn</ol>
+        </ul>
+        Tweaking the initial value of
+        <div class="code-container-inline inline"><pre><code class="javascript">spawnRate</code></pre></div>
+        will have a massive impact on the game's design (try a value of 1 for some real fun).
+        <br><br>
+        Try that out and see how you like the spawn behavior.
+        <h2>Teleport counter</h2>
+        One more rough edge to smooth out. Monsters can spawn right next to us and immediately start attacking. It's also very weird to see monsters spawning in the middle of the map with no explanation.
+        <br><br>
+        One convenient explanation is that these monsters are being "teleported" into the map. While each monster is teleporting, which will take one extra turn, they will be unable to do anything. Think of this as equivalent to Magic's "summoning sickness".
+        <br><br>
+        To visually demonstrate this, we need a teleporting sprite. Let's draw that before getting to the code.
+        <h2>Drawing the teleport sprite</h2>  
+        <div class="drawing-section">
+            There's not much to this one. We draw a spiral, add swirly limbs, and outline it.
+            <img src="art/teleport.png">
+         </div>
+
+         To integrate this teleporting thing, we'll use a counter just like we did with 
+         <div class="code-container-inline inline"><pre><code class="javascript">spawnCounter</code></pre></div>. 
+         This should look familiar. You can do a <em>hell of a lot of work</em> with only boolean flags for statuses and integer counters for longer lasting effects.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+
+            <pre><code id="contentTELEPORT1" class="javascript"></code></pre>
+            <pre><code id="contentTELEPORT2" class="javascript add"></code></pre>
+            <pre><code id="contentTELEPORT3" class="javascript"></code></pre>
+            <pre><code id="contentTELEPORT4" class="javascript add"></code></pre>
+            <pre><code id="contentTELEPORT5" class="javascript remove"></code></pre>
+            <pre><code id="contentTELEPORT6" class="javascript add"></code></pre>
+            <pre><code id="contentTELEPORT7" class="javascript"></code></pre>
+
+            <pre><code class="break">...</code></pre>
+
+            <pre><code id="contentTELEPORT8" class="javascript"></code></pre>
+            <pre><code id="contentTELEPORT9" class="javascript add"></code></pre>
+            <pre><code id="contentTELEPORT10" class="javascript"></code></pre>
+            <pre><code id="contentTELEPORT11" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+
+            <pre><code class="break">...</code></pre>
+
+            <pre><code id="contentTELEPORT12" class="javascript"></code></pre>
+            <pre><code id="contentTELEPORT13" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+        The monsters are teleporting in and spawning nicely... eventually leading to an unwillable scenario. Let's give the player an <em>exit</em> from this situation.
+        <h2>Drawing the exit sprite</h2>  
+        <div class="drawing-section">
+            I tried drawing something resembling a portal.
+            <img src="art/exit.png">
+         </div>
+
+        Our 
+        <div class="code-container-inline inline"><pre><code class="javascript">Exit</code></pre></div>
+        tile is a pretty basic object, but it does need to do something (i.e. go to the next level) whenever the player moves onto it. It's within the monster code that we determine when we're stepping on something, but after that point it's best to delegate to the tiles themselves. Each tile will know exactly what to do when stepped on.
+
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+
+            <pre><code id="contentSTEPON1" class="javascript"></code></pre>
+            <pre><code id="contentSTEPON2" class="javascript add"></code></pre>
+            <pre><code id="contentSTEPON3" class="javascript"></code></pre>
+            <pre><code id="contentEXIT" class="javascript add"></code></pre>
+        </div>
+
+        Notice that we need an empty 
+        <div class="code-container-inline inline"><pre><code class="javascript">stepOn</code></pre></div>
+        method for 
+        <div class="code-container-inline inline"><pre><code class="javascript">Floor</code></pre></div> too because monsters will be stepping on them as well. It won't do anything for now but it's nice to leave a little reminder comment to finish up the behavior later. We'll never need this method for a 
+        <div class="code-container-inline inline"><pre><code class="javascript">Wall</code></pre></div>
+        because monsters don't step on those. And unlike in other languages we don't need this method on the base object in order to call it on the subclasses.
+        <br><br>
+        Now what happens when the player steps on the
+        <div class="code-container-inline inline"><pre><code class="javascript">Exit</code></pre></div>? If we were already on the last level, we jump to the title screen. Otherwise, we start a new level with 1 extra HP.
+        <br><br>
+        Two more pieces to tie it all together: triggering
+        <div class="code-container-inline inline"><pre><code class="javascript">stepOn</code></pre></div>
+        and creating the
+        <div class="code-container-inline inline"><pre><code class="javascript">Exit</code></pre></div>
+        tile.
+
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentMONSTERSTEPON1" class="javascript"></code></pre>
+            <pre><code id="contentMONSTERSTEPON2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+        </div>
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentREPLACEEXIT1" class="javascript"></code></pre>
+            <pre><code id="contentREPLACEEXIT2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+        With these small additions, the game has some real structure to it.
+        <h2>Title time</h2>
+        The title screen is seriously lacking though. I don't want to do anything too crazy for the title screen, but at the very least it needs some text.
+        <br><br>
+        If you're trying to draw UI elements for a browser game, I would typically recommend trying it with HTML. You've got a lot of functionality out of the box with HTML & CSS, built up over decades. But for a few simple lines of text, the canvas will do just fine.
+        <br><br>
+        Drawing text on the canvas is not much different from drawing images. The important bit here is at the end: 
+        <div class="code-container-inline inline"><pre><code class="javascript">ctx.fillText</code></pre></div>.
+        All we need to pass is what text to draw and where.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWTEXT" class="javascript add"></code></pre>
+        </div>
+
+        The first two lines of our function set the font color and size. The string
+        <div class="code-container-inline inline"><pre><code class="javascript">"px monospace"</code></pre></div>
+        might look a little cryptic. We're actually writing a bit of CSS : we specify a font size in "px" units (pixels) and specify the type of font we want, which is "monospace".
+        <br><br>
+        We're going to leave the Y position up to the caller, but to make things easier this function will handle X. We're going to draw text in two places basically: justified centered on the title screen and on the far right (where the UI is) during play. The 
+        <div class="code-container-inline inline"><pre><code class="javascript">centered</code></pre></div>
+         variable lets us toggle between these two.
+        <br><br>
+        So what does this line mean exactly? 
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript">textX = (canvas.width-ctx.measureText(text).width)/2;</code></pre></div>
+        <br><br>
+        When you want to center <em>any</em> element, whether on the canvas or in HTML, the calculation is the same. For X: half the container width minus half the content width. For Y: half the container height minus half the content height. The reason is obvious when you see it:
+        <br><br>
+
+        <img src="screens/centering.png">
+        <br><br>
+        This is a good example of where HTML & CSS would be a lot easier to use! For one there are many easy ways to center things in CSS (there weren't for about 20 years but now there certainly are). And for two getting the width or height of an HTML element is very easy. None of this
+        <div class="code-container-inline inline"><pre><code class="javascript">measureText</code></pre></div>
+        nonsense. Did you know there isn't even a way to measure the height? Ugh!
+        <br><br>
+        Anyway, enough ranting... let's draw some text.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWSOMETEXT1" class="javascript"></code></pre>
+            <pre><code id="contentDRAWSOMETEXT2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+
+            <pre><code class="break">...</code></pre>
+
+            <pre><code id="contentDRAWSOMETEXT3" class="javascript"></code></pre>
+            <pre><code id="contentDRAWSOMETEXT4" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+
+        To review the arguments to our 
+        <div class="code-container-inline inline"><pre><code class="javascript">drawText</code></pre></div>
+         function
+        <ul>
+            <li>some text</li>
+            <li>a font size</li>
+            <li>whether the text is centered</li>
+            <li>the Y position</li>
+            <li>the color</li>
+        </ul>
+         Whew! That's a mouthful, but trust me when I say it's preventing us from duplicating a lot of code.
+        <br><br>
+        We're drawing the level number on the UI during play and drawing the name of the game on the title screen. I chose a silly name. I'm sure you can do better.
+        <br><br>
+        Try it out. I think it's looking good. At this point, the game can be considered a fully playable and complete game. It's just not very interesting yet. We'll get there.
+        <img src="screens/title-screen.png">
+        In the <a href="stage6.html">next section</a>, we'll be adding treasure and score mechanics.
+	</div>
+
+	<script>
+		let content = {
+			LOADING1:
+            `
+<script> 
+    tileSize = 64;
+    numTiles = 11;
+    uiWidth = 4;
+    level = 1;
+    maxHp = 6;
+
+    spritesheet = new Image();
+    spritesheet.src = 'spritesheet.png';
+            `,
+            LOADING2:
+            `
+    spritesheet.onload = showTitle;
+                             
+    gameState = "loading";  
+
+    startingHp = 3; 
+    numLevels = 6;          
+            `,
+            LOADING3:
+            `
+
+    document.querySelector("html").onkeypress = function(e){
+            `,
+            LOADING4:
+            `
+        if(gameState == "title"){                              
+            startGame();                
+        }else if(gameState == "dead"){                             
+            showTitle();                                        
+        }else if(gameState == "running"){                                               
+            `,
+            LOADING5:
+            `
+            if(e.key=="w") player.tryMove(0,-1);
+            if(e.key=="s") player.tryMove(0,1);
+            if(e.key=="a") player.tryMove(-1, 0);
+            if(e.key=="d") player.tryMove(1, 0);
+            `,
+            LOADING6:
+            `
+        }
+            `,
+            LOADING7:
+            `
+    };
+
+    setInterval(draw, 20);
+
+    setupCanvas();
+
+            `,
+            LOADING8:
+            `
+    generateLevel();                
+
+    let player = new Player(randomPassableTile());               
+            `,
+            LOADING9:
+            `
+            `,
+            LOADING10:
+            `  
+<\/script>
+            `,
+            DRAW1:
+            `
+function draw(){
+            `,
+            DRAW2:
+            `
+    if(gameState == "running" || gameState == "dead"){  
+            `,
+            DRAW3:
+            `
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+
+        for(let i=0;i<numTiles;i++){
+            for(let j=0;j<numTiles;j++){
+                getTile(i,j).draw();
+            }
+        }
+
+
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].draw();
+        }
+
+        player.draw();
+            `,
+            DRAW4:
+            `
+    }
+            `,
+            CLOSINGBRACE:
+            `
+}
+            `,
+            CLOSINGBRACEINDENT1:
+            `
+    }
+            `,
+            NEWLINE:
+            `
+
+            `,
+            TICK1:
+            `
+function tick(){
+    for(let k=monsters.length-1;k>=0;k--){
+        if(!monsters[k].dead){
+            monsters[k].update();
+        }else{
+            monsters.splice(k,1);
+        }
+    }
+
+            `,
+            TICK2:
+            `
+    if(player.dead){    
+        gameState = "dead";
+    }
+            `,
+            SHOWTITLE:
+            `
+function showTitle(){                                          
+    ctx.fillStyle = 'rgba(0,0,0,.75)';
+    ctx.fillRect(0,0,canvas.width, canvas.height);
+
+    gameState = "title";
+}
+
+function startGame(){                                           
+    level = 1;
+    startLevel(startingHp);
+
+    gameState = "running";
+}
+
+function startLevel(playerHp){                          
+    generateLevel();
+
+    player = new Player(randomPassableTile());
+    player.hp = playerHp;
+}
+            `,
+            SPAWN1:
+            `
+    spawnCounter--;
+    if(spawnCounter <= 0){  
+        spawnMonster();
+        spawnCounter = spawnRate;
+        spawnRate--;
+    }
+            `,
+            SPAWN2:
+            `
+function startLevel(playerHp){ 
+            `,
+            SPAWN3:
+            `
+    spawnRate = 15;              
+    spawnCounter = spawnRate;                      
+            `,
+            SPAWN4:
+            `
+
+    generateLevel();
+
+    player = new Player(randomPassableTile());
+    player.hp = playerHp;
+}
+            `,
+            TELEPORT1:
+            `
+class Monster{
+    constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+            `,
+            TELEPORT2:
+            `
+        this.teleportCounter = 2;
+            `,
+            TELEPORT3:
+            `
+    }                                                                           
+
+    heal(damage){
+        this.hp = Math.min(maxHp, this.hp+damage);
+    }
+
+    update(){
+            `,
+            TELEPORT4:
+            `
+        this.teleportCounter--;
+            `,
+            TELEPORT5:
+            `
+        if(this.stunned){   
+            `,
+            TELEPORT6:
+            `
+        if(this.stunned || this.teleportCounter > 0){                       
+                `,
+                TELEPORT7:
+                `
+            this.stunned = false;                                               
+            return;
+        }
+        this.doStuff();
+    }
+
+            `,
+            TELEPORT8:
+            `
+    draw(){
+            `,
+            TELEPORT9:
+            `
+        if(this.teleportCounter > 0){                                        
+            drawSprite(10, this.tile.x, this.tile.y);                     
+        }else{        
+            `,
+            TELEPORT10:
+            `
+            drawSprite(this.sprite, this.tile.x, this.tile.y);               
+            this.drawHp();
+            `,
+            TELEPORT11:
+            `
+        }
+            `,
+            TELEPORT12:
+            `
+class Player extends Monster{                                               
+    constructor(tile){
+        super(tile, 0, 3);
+        this.isPlayer = true;
+            `,
+            TELEPORT13:
+            `
+        this.teleportCounter = 0;
+            `,
+            STEPON1:
+            `
+class Floor extends Tile{
+    constructor(x,y){
+        super(x,y, 2, true);
+    };
+
+            `,
+            STEPON2:
+            `
+    stepOn(monster){                                                           
+        //TODO: complete
+    }
+            `,
+            STEPON3:
+            `
+}
+
+class Wall extends Tile{
+   constructor(x, y){
+       super(x, y, 3, false);
+   }
+}
+
+            `,
+            EXIT:
+            `
+class Exit extends Tile{
+    constructor(x, y){
+        super(x, y, 11, true);
+    }
+
+    stepOn(monster){
+        if(monster.isPlayer){
+            if(level == numLevels){
+                showTitle();
+            }else{
+                level++;
+                startLevel(Math.min(maxHp, player.hp+1));
+            }
+        }
+    }
+}
+            `,
+            MONSTERSTEPON1:
+            `
+    move(tile){
+        if(this.tile){
+        this.tile.monster = null;
+        }
+        this.tile = tile;
+        tile.monster = this;                                              
+            `,
+            MONSTERSTEPON2:
+            `
+        tile.stepOn(this);       
+            `,
+            REPLACEEXIT1:
+            `
+function startLevel(playerHp){     
+    spawnRate = 15;              
+    spawnCounter = spawnRate;      
+
+    generateLevel();
+
+    player = new Player(randomPassableTile());
+    player.hp = playerHp;
+
+            `,
+            REPLACEEXIT2:
+            `
+    randomPassableTile().replace(Exit);  
+            `,
+            DRAWTEXT:
+            `
+function drawText(text, size, centered, textY, color){
+    ctx.fillStyle = color;
+    ctx.font = size + "px monospace";
+    let textX;
+    if(centered){
+        textX = (canvas.width-ctx.measureText(text).width)/2;
+    }else{
+        textX = canvas.width-uiWidth*tileSize+25;
+    }
+
+    ctx.fillText(text, textX, textY);
+}
+            `,
+            DRAWSOMETEXT1:
+            `
+function draw(){
+    if(gameState == "running" || gameState == "dead"){
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+
+        for(let i=0;i<numTiles;i++){
+            for(let j=0;j<numTiles;j++){
+                getTile(i,j).draw();
+            }
+        }
+
+
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].draw();
+        }
+
+        player.draw();
+
+            `,
+            DRAWSOMETEXT2:
+            `
+        drawText("Level: "+level, 30, false, 40, "violet");
+            `,
+            DRAWSOMETEXT3:
+            `
+function showTitle(){                                          
+    ctx.fillStyle = 'rgba(0,0,0,.75)';
+    ctx.fillRect(0,0,canvas.width, canvas.height);
+
+    gameState = "title";
+
+            `,
+            DRAWSOMETEXT4:
+            `
+    drawText("SUPER", 40, true, canvas.height/2 - 110, "white");
+    drawText("BROUGH BROS.", 70, true, canvas.height/2 - 50, "white"); 
+            `
+		};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage6.html b/js/games/nluqo.github.io/broughlike-tutorial/stage6.html
new file mode 100644
index 0000000..34b87b6
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage6.html
@@ -0,0 +1,449 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 0</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage5.html">Previously: Game Lifecycle</a>
+        </div>
+		<h1>Stage 6 - Treasure & Score</h1>
+        To give our game some replayability, we'll add a high score mechanic. The player will pick up a treasure to gain a point, but doing so will spawn another monster. Each level will have 3 treasures. This system will be supported by a
+        <div class="code-container-inline inline"><pre><code class="javascript">score</code></pre></div>
+        variable that resets to 
+        <div class="code-container-inline inline"><pre><code class="javascript">0</code></pre></div>
+        before every game.
+
+        <h2>Drawing the treasure sprite</h2>  
+        <div class="drawing-section">
+            You have plenty of options for representing treasure. Gems, jewelry, piles of gold, treasure chests, whatever.
+            <br>
+            For gold, you typically want to use a yellowish-orange base with very high contrast. For gems, pick bright colors and angular highlights/shadows.
+            <img src="art/treasure.png">
+         </div>
+        <h2>Generating treasure</h2>
+        To achieve our treasure mechanic, we need very little: mainly a boolean flag to each tile denoting it has treasure on it. If a tile has treasure, the treasure sprite will be drawn on top.
+
+		<div class="filename">map.js</div>
+        <div class="code-container">
+			<pre><code id="contentGENERATETREASURE1" class="javascript"></code></pre>
+            <pre><code id="contentGENERATETREASURE2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWTREASURE0" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentDRAWTREASURE1" class="javascript"></code></pre>
+            <pre><code id="contentDRAWTREASURE2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+        With that, our treasure is in the game and being drawn. You can test it out yourself to see.
+        <h2>Keeping score</h2>
+        Let's make the treasure meaningful. We need to initialize our
+        <div class="code-container-inline inline"><pre><code class="javascript">score</code></pre></div>
+        variable every time we start a new game. Then when a treasure gets picked up (by the player stepping on a tile that has one), the
+        <div class="code-container-inline inline"><pre><code class="javascript">score</code></pre></div> 
+        is increased, the
+        <div class="code-container-inline inline"><pre><code class="javascript">treasure</code></pre></div>
+        flag is reset which effectively deletes the treasure, and we spawn a monster.
+
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentSCORE1" class="javascript"></code></pre>
+            <pre><code id="contentSCORE2" class="javascript add"></code></pre>
+            <pre><code id="contentSCORE3" class="javascript"></code></pre>
+        </div>
+
+
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWTREASURE3" class="javascript"></code></pre>
+            <pre><code id="contentDELETETODO" class="javascript remove"></code></pre>
+            <pre><code id="contentDRAWTREASURE4" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+        </div>
+
+        And now that we wrote our 
+        <div class="code-container-inline inline"><pre><code class="javascript">drawText</code></pre></div>
+        function last time, showing our current score is very easy. The calls to draw the current level and current score only differ by text and Y position, which we're manually hardcoding.
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWSCORE1" class="javascript"></code></pre>
+            <pre><code id="contentDRAWSCORE2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+        <h2>High scores</h2>
+        If we have a score, we certainly need a high score board. The following additions add a score array to a browser storage mechanism called
+        <div class="code-container-inline inline"><pre><code class="javascript">localStorage</code></pre></div>,
+        which we'll then retrieve and display on the title screen. The cool thing is, despite being super simple to use (i.e. a dumping ground where we can throw any string variables we want),
+        <div class="code-container-inline inline"><pre><code class="javascript">localStorage</code></pre></div>
+        will preserve our score data across page refreshes and browser launches.
+        <br><br>
+        Since everything you put in 
+        <div class="code-container-inline inline"><pre><code class="javascript">localStorage</code></pre></div>
+        needs to be a string and we would prefer to put objects in there, we're converting back and forth from <a href="https://www.json.org/" target="_blank">JSON</a>. If you don't know JSON, not to worry! It's a data format that looks much like JavaScript and all you need to utilize it is two built in functions.
+        <br><br>
+        First let's try to grab the scores, whether there's some there or not.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentGETSCORES1" class="javascript add"></code></pre>
+        </div>
+        If we've not yet saved anything to localStorage, we simply return an empty array. But if we have, we take what's there, 
+        <div class="code-container-inline inline"><pre><code class="javascript">parse</code></pre></div>
+         it as JSON, and return the result.
+        <br><br>
+        Now let's write the function to add a score.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentADDSCORES1" class="javascript add"></code></pre>
+        </div>
+
+        In this game you'll be able to continue a high score if you won the last game. This lets you attempt win streaks, a common thing to find in broughlikes.
+        <br><br>Our <div class="code-container-inline inline"><pre><code class="javascript">addScore</code></pre></div> function takes two variables: a numeric score and a flag telling us if we won the game or died.
+        <br><br>
+        Here's the breakdown of what we're doing:
+        <ol>
+            <li>retrieving our scores</li>
+            <li>creating a new <div class="code-container-inline inline"><pre><code class="javascript">scoreObject</code></pre></div> to be added onto the list later</li>
+            <li>doing a <div class="code-container-inline inline"><pre><code class="javascript">pop</code></pre></div> to get the <div class="code-container-inline inline"><pre><code class="javascript">lastScore</code></pre></div></li>
+            <li>if that score is active, we'll add our current run score to it. otherwise just put it back with <div class="code-container-inline inline"><pre><code class="javascript">push</code></pre></div></li>
+            <li>put our new score back on the list with <div class="code-container-inline inline"><pre><code class="javascript">push</code></pre></div></li>
+            <li><div class="code-container-inline inline"><pre><code class="javascript">stringify</code></pre></div> all our scores and put them back into <div class="code-container-inline inline"><pre><code class="javascript">localStorage</code></pre></div>
+        </ol>
+        We'll call this function in two cases: losing and winning.
+
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentCALLADDSCORE1" class="javascript"></code></pre>
+            <pre><code id="contentCALLADDSCORE2" class="javascript add"></code></pre>
+            <pre><code id="contentCALLADDSCORE3" class="javascript"></code></pre>
+        </div>
+
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentCALLADDSCORE4" class="javascript"></code></pre>
+            <pre><code id="contentCALLADDSCORE5" class="javascript add"></code></pre>
+            <pre><code id="contentCALLADDSCORE6" class="javascript"></code></pre>
+        </div>
+
+        Our high scores are now quietly sitting in <div class="code-container-inline inline"><pre><code class="javascript">localStorage</code></pre></div>. You can check for yourself by simply typing "localStorage" into the console or taking a peek at the Application tab in the dev tools.
+        <br><br>
+        Let's display them.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWSCORES1" class="javascript"></code></pre>
+            <pre><code id="contentDRAWSCORES2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentDRAWSCORES3" class="javascript add"></code></pre>
+        </div>
+
+        Don't panic. You could draw the scores in MUCH less code if you prefer, but we're taking our time to carefully sort and align the scores here. And it's also artificially long because we've split
+        <div class="code-container-inline inline"><pre><code class="javascript">drawText</code></pre></div>
+        arguments onto multiple lines for clarity.
+        <br><br>
+        Let me break it down:
+        <ul>
+            <li>We get the scores and then only continue if we have some</li>
+            <li>We draw a header row (RUN SCORE TOTAL) in the very middle of the canvas. There's a new utility method <div class="code-container-inline inline"><pre><code class="javascript">rightPad</code></pre></div> which we'll cover in a moment</li>
+            <li>Next we take the most recent score off the end, sort the scores in descending order, and put that most recent score back at the beginning. This way you always see the last score at the top and in a different color... accomplished a few lines down by <div class="code-container-inline inline"><pre><code class="javascript">i == 0 ? "aqua" : "violet"</code></pre></div>.</li>
+            <li>We loop over at most 10 scores and draw each one slightly lower on the screen with <div class="code-container-inline inline"><pre><code class="javascript">canvas.height/2 + 24 + i*24</code></pre></div></li>
+        </ul>
+        And what about <div class="code-container-inline inline"><pre><code class="javascript">rightPad</code></pre></div>? We're adding this so the scores are spaced out in a table format.
+
+        <div class="filename">util.js</div>
+        <div class="code-container">
+            <pre><code id="contentRIGHTPAD" class="javascript add"></code></pre>
+        </div>
+
+        We iterate over an array of strings representing a row of data. We pad out each string with spaces until it is 10 characters long and add it to the last string. We return the combined string, which should be a perfectly spaced out row of score data.
+        <br><br>
+        <img src="screens/high-scores.png">
+        The <a href="stage7.html">next section</a> adds some nifty animation and screenshake.
+	</div>
+
+	<script>
+		let content = {
+            CLOSINGBRACE:
+            `
+}
+            `,
+            CLOSINGBRACEINDENT1:
+            `
+    }
+            `,
+            GENERATETREASURE1:
+            `
+function generateLevel(){
+    tryTo('generate map', function(){
+        return generateTiles() == randomPassableTile().getConnectedTiles().length;
+    });
+
+    generateMonsters();
+                                           
+            `,
+            GENERATETREASURE2:
+            `
+    for(let i=0;i<3;i++){                                         
+        randomPassableTile().treasure = true;                            
+    }
+            `,
+            DRAWTREASURE0:
+            `
+class Tile{
+    constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+    }
+
+            `,
+            DRAWTREASURE1:
+            `
+    draw(){                                                          
+        drawSprite(this.sprite, this.x, this.y);
+
+            `,
+            DRAWTREASURE2:
+            `
+        if(this.treasure){                      
+            drawSprite(12, this.x, this.y);                                             
+        }   
+            `,
+            DRAWTREASURE3:
+            `
+class Floor extends Tile{
+    constructor(x,y){
+        super(x,y, 2, true);
+    };
+
+    stepOn(monster){
+            `,
+            DRAWTREASURE4:
+            `
+        if(monster.isPlayer && this.treasure){   
+            score++;                        
+            this.treasure = false;
+            spawnMonster();
+        }
+            `,
+            SCORE1:
+            `
+function startGame(){                                           
+    level = 1;
+            `,
+            SCORE2:
+            `
+    score = 0;     
+            `,
+            SCORE3:
+            `
+
+    startLevel(startingHp);
+
+    gameState = "running";
+}
+            `,
+            DRAWSCORE1:
+            `
+function draw(){
+    if(gameState == "running" || gameState == "dead"){
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+
+        for(let i=0;i<numTiles;i++){
+            for(let j=0;j<numTiles;j++){
+                getTile(i,j).draw();
+            }
+        }
+
+
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].draw();
+        }
+
+        player.draw();
+
+        drawText("Level: "+level, 30, false, 40, "violet");
+            `,
+            DRAWSCORE2:
+            `
+        drawText("Score: "+score, 30, false, 70, "violet");
+            `,
+            GETSCORES1:
+            `
+function getScores(){
+    if(localStorage["scores"]){
+        return JSON.parse(localStorage["scores"]);
+    }else{
+        return [];
+    }
+}
+            `,
+            ADDSCORES1:
+            `
+function addScore(score, won){
+    let scores = getScores();
+    let scoreObject = {score: score, run: 1, totalScore: score, active: won};
+    let lastScore = scores.pop();
+
+    if(lastScore){
+        if(lastScore.active){
+            scoreObject.run = lastScore.run+1;
+            scoreObject.totalScore += lastScore.totalScore;
+        }else{
+            scores.push(lastScore);
+        }
+    }
+    scores.push(scoreObject);
+
+    localStorage["scores"] = JSON.stringify(scores);
+}
+            `,
+            CALLADDSCORE1:
+            `
+function tick(){
+    for(let k=monsters.length-1;k>=0;k--){
+        if(!monsters[k].dead){
+            monsters[k].update();
+        }else{
+            monsters.splice(k,1);
+        }
+    }
+
+    if(player.dead){    
+            `,
+            CALLADDSCORE2:
+            `
+        addScore(score, false);
+            `,
+            CALLADDSCORE3:
+            `
+        gameState = "dead";
+    }
+
+    spawnCounter--;                           
+    if(spawnCounter <= 0){                     
+        spawnMonster();
+        spawnCounter = spawnRate;
+        spawnRate--;
+    }
+}
+            `,
+            CALLADDSCORE4:
+            `
+class Exit extends Tile{
+    constructor(x, y){
+        super(x, y, 11, true);
+    }
+
+    stepOn(monster){
+        if(monster.isPlayer){
+            if(level == numLevels){
+            `,
+            CALLADDSCORE5:
+            `
+                addScore(score, true); 
+            `,
+            CALLADDSCORE6:
+            `
+                showTitle();
+            }else{
+                level++;
+                startLevel(Math.min(maxHp, player.hp+1));
+            }
+        }
+    }
+}
+            `,
+            DRAWSCORES1:
+            `
+function showTitle(){                                          
+    ctx.fillStyle = 'rgba(0,0,0,.75)';
+    ctx.fillRect(0,0,canvas.width, canvas.height);
+
+    gameState = "title";
+
+    drawText("SUPER", 40, true, canvas.height/2 - 110, "white");
+    drawText("BROUGH BROS.", 70, true, canvas.height/2 - 50, "white"); 
+
+            `,
+            DRAWSCORES2:
+            `
+    drawScores();  
+            `,
+            DRAWSCORES3:
+            `
+function drawScores(){
+    let scores = getScores();
+    if(scores.length){
+        drawText(
+            rightPad(["RUN","SCORE","TOTAL"]),
+            18,
+            true,
+            canvas.height/2,
+            "white"
+        );
+
+        let newestScore = scores.pop();
+        scores.sort(function(a,b){
+            return b.totalScore - a.totalScore;
+        });
+        scores.unshift(newestScore);
+
+        for(let i=0;i<Math.min(10,scores.length);i++){
+            let scoreText = rightPad([scores[i].run, scores[i].score, scores[i].totalScore]);
+            drawText(
+                scoreText,
+                18,
+                true,
+                canvas.height/2 + 24+i*24,
+                i == 0 ? "aqua" : "violet"
+            );
+        }
+    }
+}
+            `,
+            RIGHTPAD:
+            `
+function rightPad(textArray){
+    let finalText = "";
+    textArray.forEach(text => {
+        text+="";
+        for(let i=text.length;i<10;i++){
+            text+=" ";
+        }
+        finalText += text;
+    });
+    return finalText;
+}
+            `,
+            DELETETODO: `
+        //TODO: complete
+            `
+		};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage7.html b/js/games/nluqo.github.io/broughlike-tutorial/stage7.html
new file mode 100644
index 0000000..3587c54
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage7.html
@@ -0,0 +1,571 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 7</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage6.html">Previously: Treasure & Score</a>
+        </div>
+		<h1>Stage 7 - Animation, Screenshake, & Sounds</h1>
+        Turn based movement without animation is not only a bit boring, but it also makes deciphering gameplay difficult. Monsters jump all over the screen and it's impossible to tell exactly what's happening.
+        <br><br>
+        Luckily, smoothing turn based movement is a piece of cake. When a monster moves from one tile to another, we start out by drawing them immediately in the new tile BUT with an 
+        <div class="code-container-inline inline"><pre><code class="javascript">offsetX</code></pre></div>
+         and 
+         <div class="code-container-inline inline"><pre><code class="javascript">offsetY</code></pre></div>
+          that represents the gap between the old and new position. So for the very first instant after movement, the offsets make the monster appear to be at their old tile, even though their "official" position is at their new tile.
+        <br><br>
+        Each frame, we reduce the offsets and in doing so, the sprites slide into place. When the offsets reach 0, sprites appear precisely at the their actual position.
+        <img src="screens/smoothmovement.jpg">
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentOFFSET1" class="javascript"></code></pre>
+            <pre><code id="contentOFFSET2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentOFFSET3" class="javascript"></code></pre>
+            <pre><code id="contentOFFSET4" class="javascript add"></code></pre>
+            <pre><code id="contentOFFSET5" class="javascript"></code></pre>
+        </div>
+
+        We initialize the offsets to 0 and then when moving, we calculate them as the difference between the old tile and the new tile position. Say you move to the right 1 tile. You've moved +1 in the X direction, so this code will set the offset to -1. That way you'll start out being drawn to the LEFT of your new tile position (the opposite direction you moved in).
+        <br><br>
+        Let's start adding in those offsets.
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentDISPLAYPOSITION1" class="javascript add"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION2" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION3" class="javascript remove"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION4" class="javascript add"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION5" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION6" class="javascript remove"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION7" class="javascript add"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION8" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION10" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION11" class="javascript remove"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION12" class="javascript add"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION13" class="javascript"></code></pre>
+        </div>
+
+        We're adding two new functions called
+        <div class="code-container-inline inline"><pre><code class="javascript">getDisplayX</code></pre></div>
+        and 
+        <div class="code-container-inline inline"><pre><code class="javascript">getDisplayY</code></pre></div>
+        which will return a monster's <em>apparent</em> position. I say "apparent" because in a grid based game like this each monster is only ever positioned exactly on a specific tile for gameplay purposes. Once adding these wrapper functions, we just need to replace all the instances where the 
+        <div class="code-container-inline inline"><pre><code class="javascript">x</code></pre></div>
+        and 
+        <div class="code-container-inline inline"><pre><code class="javascript">y</code></pre></div>
+         tile coordinates were referenced directly.
+        <br><br>
+        Now here's the magic, the code that actually animates these offsets:
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentDISPLAYPOSITION2" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION4" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION5" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION7" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION8" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentDISPLAYPOSITION9" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+        </div>
+
+        <br><br>
+        During each draw call, we're reducing the value of the offsets by one eigth of a tile, which is what produces the sliding animation.
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript">Math.sign()</code></pre></div> produces either -1, 0, or +1 if passed a negative, zero, or positive number respectively. This lets us move in the correct direction if the offset is still non-zero and completely stop altering the offset if it is zero.
+        <br><br>
+        Something interesting to note here is this actually won't work with a value like 0.1 instead of 0.125 (i.e. 1/8) because of floating point math. If you type
+        <div class="code-container-inline inline"><pre><code class="javascript">0.1 + 0.1 + 0.1</code></pre></div>
+        into the console instead of 
+        <div class="code-container-inline inline"><pre><code class="javascript">0.3</code></pre></div>
+        you'll get
+        <div class="code-container-inline inline"><pre><code class="javascript">0.30000000000000004</code></pre></div>.
+        Floating point numbers can only be represented precisely if they are powers of two (e.g. 1/2, 1/4, 1/8). Obviously we could have written this to accomodate any kind of number with more code, but it's nice to do it all in only two lines.
+        <br><br>
+        <h2>Bump attack</h2>
+        With that, basic animation between tiles is in place. And just two extra lines can add a bump attack animation.
+
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentBUMP1" class="javascript"></code></pre>
+            <pre><code id="contentBUMP2" class="javascript add"></code></pre>
+            <pre><code id="contentBUMP3" class="javascript"></code></pre>
+        </div>
+
+        When bump attacking, monsters are not really moving between tiles. Instead we're setting their offset so that the moment after attack they'll appear partially <em>in</em> the tile they're attacking. That's why we divided by 2. We want the monster to look like they've jumped halfway into their opponent's tile to give them a wallop.
+
+        <h2>Screenshake</h2>
+
+        Screenshake uses a similar concept to offset animation: draw things in their proper place and then just tack on some additional offsets. And also reduce the value of those offsets every frame until they're 0 (the screenshake should quickly fade out).
+        <br><br>
+        In the case of screenshake, the offsets are random and they will apply to <em>everything</em> on screen. This lets us do our screenshake offset in a single place: 
+        <div class="code-container-inline inline"><pre><code class="javascript">drawSprite</code></pre></div>.
+        <br><br>
+        We'll start out declaring a 
+         <div class="code-container-inline inline"><pre><code class="javascript">shakeAmount</code></pre></div>
+        variable for the magnitude of the shake and two component variables 
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeX</code></pre></div>
+        and
+         <div class="code-container-inline inline"><pre><code class="javascript">shakeY</code></pre></div>.
+         All are assigned 0 because of course we don't want to start out shaking.
+
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentSHAKE1" class="javascript"></code></pre>
+            <pre><code id="contentSHAKE2" class="javascript add"></code></pre>
+        </div>
+
+        After each monster hit, we add some shake.
+
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentSHAKE3" class="javascript"></code></pre>
+            <pre><code id="contentSHAKE4" class="javascript add"></code></pre>
+            <pre><code id="contentSHAKE5" class="javascript"></code></pre>
+        </div>
+        <br><br>
+        The part that actually affects what you see is here in
+        <div class="code-container-inline inline"><pre><code class="javascript">drawSprite</code></pre></div>.
+        Remember that the 6th and 7th arguments to 
+        <div class="code-container-inline inline"><pre><code class="javascript">drawImage</code></pre></div>
+        are for the destination X & Y coordinates (where on screen to draw).
+        Adding
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeX</code></pre></div>
+        and
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeY</code></pre></div>
+        does the job.
+        <br><br>
+        Then we'll add a new 
+        <div class="code-container-inline inline"><pre><code class="javascript">screenshake</code></pre></div>
+         method that will handle splitting out 
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeAmount</code></pre></div>
+        into X & Y components and damping the amount.
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentSHAKE6" class="javascript"></code></pre>
+            <pre><code id="contentSHAKE7" class="javascript remove"></code></pre>
+            <pre><code id="contentSHAKE8" class="javascript add"></code></pre>
+            <pre><code id="contentSHAKE9" class="javascript"></code></pre>
+            <pre><code id="contentSHAKE10" class="javascript add"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentSHAKE11" class="javascript add"></code></pre>
+        </div>
+
+        The 
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeAmount</code></pre></div> is reduced by 1 every frame unless it's already 0. Notice this is yet another example here of type coercion. 0 gets coerced into
+        <div class="code-container-inline inline"><pre><code class="javascript">false</code></pre></div>
+        and any other number gets coerced into 
+        <div class="code-container-inline inline"><pre><code class="javascript">true</code></pre></div>.
+        <br><br>
+        The next part uses some basic <a href="https://en.wikipedia.org/wiki/Trigonometry" target="_blank">trigonometry</a>. A quick refresher in case you forgot your trig classes: if you provide an angle, <strong>cosine</strong> will tell you big the X component is and <strong>sine</strong> will tell you how big the Y component is. Our JavaScript trig functions deal in <em>radians</em> instead of degrees, which is why we'll be referencing 
+        <div class="code-container-inline inline"><pre><code class="javascript">Math.PI*2</code></pre></div>
+        radians (the number of radians in a circle) instead of say
+        360 degrees.
+        <br><br>
+        We select a random 
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeAngle</code></pre></div>
+         and then use 
+        <div class="code-container-inline inline"><pre><code class="javascript">Math.cos</code></pre></div>
+        and
+        <div class="code-container-inline inline"><pre><code class="javascript">Math.sin</code></pre></div>
+        to find the X & Y components. We multiply by the 
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeAmount</code></pre></div>
+        and finally 
+        <div class="code-container-inline inline"><pre><code class="javascript">round</code></pre></div>
+         off to ensure there is no sub-pixel nonsense going on (that can look really bad).
+        <br><br>
+        Our screenshake is pretty subtle, but for fun try setting the 
+        <div class="code-container-inline inline"><pre><code class="javascript">shakeAmount</code></pre></div>
+        on hit to a ridiculously high amount like 50 or higher and see what happens.
+
+        <h2>Sounds</h2>
+        To really polish things up, we need sound!
+        <br><br>
+        We're going to make 5 sounds, from scratch:
+        <ul>
+            <li><strong>hit1.wav</strong>: when the player hits a monster</li>
+            <li><strong>hit2:wav</strong>: when a monster hits the player</li>
+            <li><strong>treasure.wav</strong>: when the player picks up a treasure</li>
+            <li><strong>newLevel.wav</strong>: when the player exits a level</li>
+            <li><strong>spell.wav</strong>: when a player casts a spell</li>
+        </ul>
+
+        <div class="drawing-section">
+            To make our sounds, we're going to use a tool called Bfxr.
+
+            <img src="screens/bfxr.PNG">
+
+            Now this might look an overwhelming monstrousity (audio software always is). But I promise it's the easiest game development tool I've ever used and creating very nice sounds can be done in a couple button clicks.
+            <br><br>
+            First navigate to <a href="http://bfxr.net">bfxr.net</a>. You might have to fiddle around with your Flash settings to get it to launch.
+            <br><br>
+            Really all you need to do is click one of the buttons in the upper left. The rest of the UI is for tweaking those sounds further, but that's optional. Our first sound "hit1.wav" can be generated with the <em>Hit/Hurt</em> button. We can continue to click that button to generate new sounds until we get one we like. You'll also find the buttons <em>Powerup</em> and <em>Jump</em> useful for the other types of sounds we want to generate.
+            <br><br>
+            If you want to try out some customization options, the easiest one to start would be <em>Mutation</em> which mutates your current sound randomly. Selecting different synths is also pretty straightforward. I find <em>Sin</em> to be the softest option and it's great for soothing electronic noises like boops and beeps. <em>White</em> is great for static and rough sounding noises like explosions.
+            <br><br>
+            After you're done, simply select <em>Export Wav</em>, name the file according to our naming scheme shown earlier, and save it into our project under a "sounds" folder.
+            <br><br>
+            Generate the 5 sounds and then we'll get back into coding.
+        </div>
+        To play audio in the browser we use the 
+        <div class="code-container-inline inline"><pre><code class="javascript">Audio</code></pre></div>
+        API. We'll create a new 
+        <div class="code-container-inline inline"><pre><code class="javascript">Audio</code></pre></div>
+        object passing the audio URL and then call 
+        <div class="code-container-inline inline"><pre><code class="javascript">play</code></pre></div>
+        on it.
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentINITSOUNDS1" class="javascript"></code></pre>
+            <pre><code id="contentINITSOUNDS2" class="javascript add"></code></pre>
+            <pre><code id="contentINITSOUNDS3" class="javascript"></code></pre>
+        </div>
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentINITSOUNDS4" class="javascript add"></code></pre>
+        </div>
+
+        We immediately call
+        <div class="code-container-inline inline"><pre><code class="javascript">initSounds</code></pre></div>
+        to load our 5 sounds and store them in a global object called 
+        <div class="code-container-inline inline"><pre><code class="javascript">sounds</code></pre></div>.
+        To play a sound, we call
+        <div class="code-container-inline inline"><pre><code class="javascript">playSound</code></pre></div> with the desired sound name. The only oddity is 
+        <div class="code-container-inline inline"><pre><code class="javascript">currentTime</code></pre></div>. Without resetting this to 0, trying to play a sound that's already in the progress of playing (like hitting a bunch of enemies quickly) sounds terrible.
+        <br><br>
+        Now let's call 
+        <div class="code-container-inline inline"><pre><code class="javascript">playSound</code></pre></div>
+         in 4 places (the "spell" sound will be covered in the next section):
+        
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentHITSOUND1" class="javascript"></code></pre>
+            <pre><code id="contentHITSOUND2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+        </div>
+
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentTREASURESOUND1" class="javascript"></code></pre>
+            <pre><code id="contentTREASURESOUND2" class="javascript add"></code></pre>
+            <pre><code id="contentTREASURESOUND3" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentNEWLEVELSOUND1" class="javascript"></code></pre>
+            <pre><code id="contentNEWLEVELSOUND2" class="javascript add"></code></pre>
+            <pre><code id="contentNEWLEVELSOUND3" class="javascript"></code></pre>
+        </div>
+        Now the game is really starting to look and sound like something nice!
+        <img src="screens/animation23.gif">
+        For our last addition, we'll add spells in the <a href="stage8.html">next section</a>.
+	</div>
+
+	<script>
+		let content = {
+            CLOSINGBRACEINDENT1: `
+    }
+            `,
+            NEWLINE: `
+
+            `,
+            OFFSET1: `
+class Monster{
+    constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+        this.teleportCounter = 2;
+            `,
+            OFFSET2: `
+        this.offsetX = 0;                                                   
+        this.offsetY = 0;                                                 
+            `,
+            OFFSET3: `
+    move(tile){
+        if(this.tile){
+            this.tile.monster = null;
+            `,
+            OFFSET4: `
+            this.offsetX = this.tile.x - tile.x;    
+            this.offsetY = this.tile.y - tile.y;
+            `,
+            OFFSET5: `
+        }
+        this.tile = tile;
+        tile.monster = this;
+        tile.stepOn(this);
+    }
+            `,
+            DISPLAYPOSITION1: `
+    getDisplayX(){                     
+        return this.tile.x + this.offsetX;
+    }
+
+    getDisplayY(){                                                                  
+        return this.tile.y + this.offsetY;
+    }   
+            `,
+            DISPLAYPOSITION2: `
+
+    draw(){
+        if(this.teleportCounter > 0){        
+            `,
+            DISPLAYPOSITION3: `
+            drawSprite(10, this.tile.x, this.tile.y);
+            `,
+            DISPLAYPOSITION4: `
+            drawSprite(10, this.getDisplayX(),  this.getDisplayY());
+            `,
+            DISPLAYPOSITION5: `
+        }else{      
+            `,
+            DISPLAYPOSITION6: `
+            drawSprite(this.sprite, this.tile.x, this.tile.y);
+            `,
+            DISPLAYPOSITION7: `
+            drawSprite(this.sprite, this.getDisplayX(),  this.getDisplayY());
+            `,
+            DISPLAYPOSITION8: `
+            this.drawHp();                                 
+        }
+            `,
+            DISPLAYPOSITION9: `
+        this.offsetX -= Math.sign(this.offsetX)*(1/8);     
+        this.offsetY -= Math.sign(this.offsetY)*(1/8); 
+            `,
+            DISPLAYPOSITION10: `
+    }
+
+    drawHp(){
+        for(let i=0;i<this.hp;i++){
+            drawSprite(
+                9,
+            `,
+            DISPLAYPOSITION11: `
+                this.tile.x + (i%3)*(5/16),
+                this.tile.y - Math.floor(i/3)*(5/16)
+            `,
+            DISPLAYPOSITION12: `
+                this.getDisplayX() + (i%3)*(5/16),   
+                this.getDisplayY() - Math.floor(i/3)*(5/16)
+            `,
+            DISPLAYPOSITION13: `
+            );                                              
+        }
+    }
+            `,
+            BUMP1: `
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            if(!newTile.monster){
+                this.move(newTile);
+            }else{
+                if(this.isPlayer != newTile.monster.isPlayer){
+                    this.attackedThisTurn = true;
+                    newTile.monster.stunned = true;
+                    newTile.monster.hit(1);
+
+                `,
+                BUMP2: `
+                    this.offsetX = (newTile.x - this.tile.x)/2;         
+                    this.offsetY = (newTile.y - this.tile.y)/2;         
+                `,
+                BUMP3: `
+                }
+            }
+            return true;
+        }
+    }
+            `,
+            SHAKE1: `
+    gameState = "loading";  
+
+    startingHp = 3; 
+    numLevels = 6;     
+
+            `,
+            SHAKE2: `
+    shakeAmount = 0;       
+    shakeX = 0;                 
+    shakeY = 0;                  
+            `,
+            SHAKE3: `
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            if(!newTile.monster){
+                this.move(newTile);
+            }else{
+                if(this.isPlayer != newTile.monster.isPlayer){
+                    this.attackedThisTurn = true;
+                    newTile.monster.stunned = true;
+                    newTile.monster.hit(1);
+
+            `,
+            SHAKE4: `
+                    shakeAmount = 5;
+            `,
+            SHAKE5: `
+
+                    this.offsetX = (newTile.x - this.tile.x)/2;         
+                   this.offsetY = (newTile.y - this.tile.y)/2;         
+                }
+            }
+            return true;
+        }
+    }
+            `,
+            SHAKE6: `
+function drawSprite(sprite, x, y){
+    ctx.drawImage(
+        spritesheet,
+        sprite*16,
+        0,
+        16,
+        16,
+        `,
+        SHAKE7: `
+        x*tileSize,
+        y*tileSize,
+        `,
+        SHAKE8: `
+        x*tileSize + shakeX,
+        y*tileSize + shakeY,
+        `,
+        SHAKE9: `
+        tileSize,
+        tileSize
+    );
+}
+
+function draw(){
+    if(gameState == "running" || gameState == "dead"){
+        ctx.clearRect(0,0,canvas.width,canvas.height);   
+
+            `,
+            SHAKE10: `
+        screenshake();             
+            `,
+            SHAKE11: `
+function screenshake(){
+    if(shakeAmount){
+        shakeAmount--;
+    }
+    let shakeAngle = Math.random()*Math.PI*2;
+    shakeX = Math.round(Math.cos(shakeAngle)*shakeAmount);
+    shakeY = Math.round(Math.sin(shakeAngle)*shakeAmount);
+}
+            `,
+            INITSOUNDS1: `
+    setInterval(draw, 15);
+
+    setupCanvas();
+
+            `,
+            INITSOUNDS2: `
+    initSounds(); 
+            `,
+            INITSOUNDS3: `
+<\/script>
+            `,
+            INITSOUNDS4: `
+function initSounds(){          
+    sounds = {
+        hit1: new Audio('sounds/hit1.wav'),
+        hit2: new Audio('sounds/hit2.wav'),
+        treasure: new Audio('sounds/treasure.wav'),
+        newLevel: new Audio('sounds/newLevel.wav'),
+        spell: new Audio('sounds/spell.wav'),
+    };
+}
+
+function playSound(soundName){                       
+    sounds[soundName].currentTime = 0;  
+    sounds[soundName].play();
+}
+            `,
+            HITSOUND1: `
+    hit(damage){
+        this.hp -= damage;
+        if(this.hp <= 0){
+            this.die();
+        }
+
+            `,
+            HITSOUND2: `
+        if(this.isPlayer){                                                     
+            playSound("hit1");                                              
+        }else{                                                       
+            playSound("hit2");                                              
+        }       
+            `,
+            TREASURESOUND1: `
+class Floor extends Tile{
+    constructor(x,y){
+        super(x, y, 2, true);
+    };
+
+    stepOn(monster){        
+        if(monster.isPlayer && this.treasure){   
+            score++;     
+            `,
+            TREASURESOUND2: `
+            playSound("treasure");
+            `,
+            TREASURESOUND3: `
+            this.treasure = false;
+            spawnMonster();
+        }
+    }
+}
+            `,
+            NEWLEVELSOUND1: `
+class Exit extends Tile{
+    constructor(x, y){
+        super(x, y, 11, true);
+    }
+
+    stepOn(monster){
+        if(monster.isPlayer){
+            `,
+            NEWLEVELSOUND2: `
+            playSound("newLevel");    
+            `,
+            NEWLEVELSOUND3: `
+            if(level == numLevels){
+                addScore(score, true);
+                showTitle();
+            }else{
+                level++;
+                startLevel(Math.min(maxHp, player.hp+1));
+            }
+        }
+    }
+}
+            `
+		};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage8.html b/js/games/nluqo.github.io/broughlike-tutorial/stage8.html
new file mode 100644
index 0000000..7d1376e
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage8.html
@@ -0,0 +1,1067 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 8</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage7.html">Previously: Animation, Screenshake, & Sounds</a>
+        </div>
+
+		<h1>Stage 8 - Spells</h1>
+
+		If you try playing the game a bunch you might notice it's weighted a bit in the monster's favor. The player bump attack is limiting and not especially exciting. In my opinion, what really makes a broughlike special is your abilities or spells. You can see this especially in 868-HACK and Cinco Paus. Proper use of spells is what adds most of the depth and personality.
+		<br><br>
+		There's 15 spells in this section to demonstrate the diversity of what can be done with very little code. What I want to stress is: it's your game now. Do all 15 if you want, or pick and choose a few, or go off and implement something completely different. It's up to you.
+		<br><br>
+		First, let's write a single spell to give you an idea of what that looks like. Then we'll knock out the framework for casting spells and lastly I'll show you the rest of the 15 spells one by one.
+
+
+		<div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentWOOP" class="javascript add"></code></pre>
+        </div>
+
+
+
+		We're going to store our spells in an object literal called, unsurprisingly, 
+        <div class="code-container-inline inline"><pre><code class="javascript">spells</code></pre></div>.
+		<br><br>
+		<div class="code-container-inline inline"><pre><code class="javascript">WOOP</code></pre></div>
+        warps the player to a random passable tile. This 
+        <div class="code-container-inline inline"><pre><code class="javascript">WOOP</code></pre></div>
+        function has a one line body. Pretty simple huh?
+        <br><br>
+        Notice the function operates on the 
+        <div class="code-container-inline inline"><pre><code class="javascript">player</code></pre></div>
+        object. All of our spells will be player-cast, but it's not hard at all to have spells castable by either players or monsters by passing in a "caster" entity and applying everything to that. I'll leave that as an exercise for the reader.
+		<br><br>
+		We're going to let the player select spells with the number keys 1-9.
+
+        <div class="filename">index.html</div>
+        <div class="code-container">
+            <pre><code id="contentKEYPRESS1" class="javascript"></code></pre>
+            <pre><code id="contentKEYPRESS2" class="javascript add"></code></pre>
+            <pre><code id="contentKEYPRESS3" class="javascript"></code></pre>
+        </div>
+
+        Here's an interesting example of JavaScript's type coercion. The value
+        <div class="code-container-inline inline"><pre><code class="javascript">e.key</code></pre></div>
+        will come in as a string like "2".
+        <br><br>
+        Is the string "2" greater than or equal to 1? Strictly speaking, that doesn't make any sense, but JavaScript will try to make it work anyway. Your "2" will be coerced into the number 2 and then you <em>can</em> try comparing it with 1.
+        <br><br>
+        So if the pressed key is 1-9, we're passing that key number minus 1 (type coercion comes into play yet again) to a new function called
+        <div class="code-container-inline inline"><pre><code class="javascript">castSpell</code></pre></div>
+        . That number will represent an index into our array of spells. We're subtracting 1 because array indices start at 0 instead of 1.
+        <h2>Spell framework</h2>
+        Now we'll add the code to load the player spells, add a new spell, and cast them. The player will initially start out with a single spell and will gain additional spell slots through acquiring treasure.
+        <br><br>
+
+        First let's initialize
+        <div class="code-container-inline inline"><pre><code class="javascript">numSpells</code></pre></div>
+        so that the player starts out with a single spell.
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWSPELLS1" class="javascript"></code></pre>
+            <pre><code id="contentDRAWSPELLS2" class="javascript add"></code></pre>
+            <pre><code id="contentDRAWSPELLS3" class="javascript"></code></pre>
+        </div>
+
+        Then the bulk of the code to handle adding/casting spells:
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentSPELLSHUFFLE1" class="javascript"></code></pre>
+            <pre><code id="contentSPELLSHUFFLE2" class="javascript add"></code></pre>
+            <pre><code id="contentSPELLSHUFFLE3" class="javascript"></code></pre>
+            <pre><code id="contentSPELLSHUFFLE4" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+        It's sometimes confusing to see different variables with the same name, so let's make sure we understand the difference. The global object 
+        <div class="code-container-inline inline"><pre><code class="javascript">spells</code></pre></div>
+        holds the spell functions. The player 
+        spells
+        (shown above as 
+        <div class="code-container-inline inline"><pre><code class="javascript">this.spells</code></pre></div>)
+        is an array of spell <em>names</em>, which we can use to index into the global object. It's an inventory of sorts.
+        <br><br>
+        The new line in our player constructor does quite a bit...
+        <ul>
+            <li>
+                gets all the spell names using <div class="code-container-inline inline"><pre><code class="javascript">Object.keys</code></pre></div>
+            </li>
+            <li>
+                shuffles them
+            </li>
+            <li>
+                grabs some number of spells from that shuffled list using
+                <div class="code-container-inline inline"><pre><code class="javascript">splice</code></pre></div>
+            </li>
+            <li>
+                assigns them to
+                <div class="code-container-inline inline"><pre><code class="javascript">this.spells</code></pre></div>
+            </li>
+        </ul>
+        The method
+        <div class="code-container-inline inline"><pre><code class="javascript">addSpells</code></pre></div>
+        looks similar, but it only grabs one random spell and then adds it to the player spells array.
+        <br><br>
+        The method
+        <div class="code-container-inline inline"><pre><code class="javascript">castSpell</code></pre></div>
+        takes an index (remember the player pressing 1-9 earlier?) and tries to find that index in the player spells array. It may not exist, which is OK! That's why we do a check on the result.
+        <br><br>
+        If found, we
+        <div class="code-container-inline inline"><pre><code class="javascript">delete</code></pre></div>
+        the element and leave an empty array slot. We call the spell function, play our spell sound, and do a 
+        <div class="code-container-inline inline"><pre><code class="javascript">tick</code></pre></div>.
+        You could also skip the tick if you don't want monsters to act after a spell is cast.
+
+
+        <h2>Drawing spells</h2>
+        Now let's draw our spell list on the sidebar:
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentDRAWSPELLS4" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentDRAWSPELLS5" class="javascript"></code></pre>
+            <pre><code id="contentDRAWSPELLS6" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+
+        If your recall the way we used
+        <div class="code-container-inline inline"><pre><code class="javascript">drawText</code></pre></div>
+        before, this should be pretty straightforward... with the exception of the expression:
+        <br><br>
+        <div class="code-container-inline inline"><pre><code class="javascript">(i+1) + ") " + (player.spells[i] || "")</code></pre></div>
+        <br><br>
+        We're adding 1 back to our spell index to make it like normal human counting, adding a parentheses and space, and then adding the spell name.
+        <br><br>
+        If the spell has been deleted, we want to handle that with the "OR" operator
+        <div class="code-container-inline inline"><pre><code class="javascript">||</code></pre></div>
+        and instead simply add an empty string. You don't need to know all the details of how
+        <div class="code-container-inline inline"><pre><code class="javascript">||</code></pre></div>
+        works here (some more type coercion is involved), but I will say it's kind of like the English word "or". Do the first thing <em>or</em>, if that doesn't work, do the second thing.
+        The result with our first spell should be: 
+        <br><br>
+        <img src="screens/woop.png">
+
+        Test out that code and you should see the above <em>and</em> you should be able to cast your first spell.
+
+
+        <h2>Gaining new spells</h2>
+        Let's connect spells to treasure.
+
+
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentNEWSPELLS1" class="javascript"></code></pre>
+            <pre><code id="contentNEWSPELLS2" class="javascript add"></code></pre>
+            <pre><code id="contentNEWSPELLS3" class="javascript"></code></pre>
+        </div>
+
+
+        Every 3 treasures acquired results in a new spell all the way up to 9 slots.
+        <br><br>
+        So that's the framework in a nutshell.
+
+        <h2>Spell 2: QUAKE</h2>
+
+        For this spell only, I'll show the surrounding code. But all the spell functions will be added as properties of the 
+        <div class="code-container-inline inline"><pre><code class="javascript">spells</code></pre></div>
+        object in the same way: add a comma after the last function, break to a new line, then add the new function.
+        <br><br>
+        Later, if things start breaking the first thing you should check is your commas!
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentQUAKE1" class="javascript"></code></pre>
+            <pre><code id="contentQUAKE2" class="javascript remove"></code></pre>
+            <pre><code id="contentQUAKE3" class="javascript add"></code></pre>
+            <pre><code id="contentQUAKE4" class="javascript"></code></pre>
+        </div>
+
+        <div class="code-container-inline inline"><pre><code class="javascript">QUAKE</code></pre></div>
+        iterates over each tile and, if a monster is present, deals it 2 damage for each adjacent wall. We're reusing the screenshake and it's way more satisfying here.
+        <br><br>
+        One note on testing. You might want to set
+        <div class="code-container-inline inline"><pre><code class="javascript">numSpells</code></pre></div>
+        initially to 9 while testing so you have easier access to the available spells on the first level.
+
+        <h2>Spell 3: MAELSTROM</h2>
+
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentMAELSTROM" class="javascript add"></code></pre>
+        </div>
+
+        <div class="code-container-inline inline"><pre><code class="javascript">MAELSTROM</code></pre></div>
+        iterates over all monsters and teleports them to a random tile just like
+        <div class="code-container-inline inline"><pre><code class="javascript">WOOP</code></pre></div>
+        did for the player. Then it sets the monster teleport counter, so we get the same behavior as when monsters spawn in the first time.
+
+
+        <h2>Spell 4: MULLIGAN</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentMULLIGAN1" class="javascript add"></code></pre>
+        </div>
+
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentMULLIGAN2" class="javascript remove"></code></pre>
+            <pre><code id="contentMULLIGAN3" class="javascript add"></code></pre>
+            <pre><code id="contentMULLIGAN4" class="javascript"></code></pre>
+            <pre><code id="contentMULLIGAN5" class="javascript add"></code></pre>
+            <pre><code id="contentMULLIGAN6" class="javascript"></code></pre>
+        </div>
+
+        <div class="code-container-inline inline"><pre><code class="javascript">MULLIGAN</code></pre></div>
+        resets the level without increasing the level count or resetting the player's spells and sets the player's HP to 1. This is the first of many spells that can be used to farm treasure.
+
+        <h2>Spell 5: AURA</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentAURA" class="javascript add"></code></pre>
+        </div>
+
+
+        <div class="code-container-inline inline"><pre><code class="javascript">AURA</code></pre></div>
+        heals both the player and any adjacent monsters. It also uses a new tile method
+        <div class="code-container-inline inline"><pre><code class="javascript">setEffect</code></pre></div>
+        which will add a short lived sprite to that tile.
+
+        <h2>Effects</h2>
+        <div class="drawing-section">
+            We're going to draw 4 sprites for effects.
+            <br><br>
+            Our heal effect is just a few bright green circles with a couple scattered green pixels.
+            <img src="art/heal.png">
+            Explosion effects are usually made by drawing concentric bubbly shapes that are white, yellow, orange, red, and black.
+            <img src="art/boom.png">
+
+            We make a bolt effect by drawing a wiggly line, outlining it in white, and then doing some basic antialiasing to smooth it out (simply drawing a midpoint color between the two in a few spots).
+            <img src="art/bolt-horizontal.png">
+
+            Rotate 90 degrees to make the same effect in a vertical orientation.
+            <img src="art/bolt-vertical.png">
+        </div>
+
+
+        Now the code to draw effects.
+
+        <div class="filename">tile.js</div>
+        <div class="code-container">
+            <pre><code id="contentEFFECTS1" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentEFFECTS2" class="javascript"></code></pre>
+            <pre><code id="contentEFFECTS3" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code id="contentNEWLINE" class="javascript"></code></pre>
+            <pre><code id="contentEFFECTS4" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACE" class="javascript"></code></pre>
+        </div>
+
+        In 
+        <div class="code-container-inline inline"><pre><code class="javascript">setEffect</code></pre></div>,
+        we simply save the passed in
+        <div class="code-container-inline inline"><pre><code class="javascript">effectSprite</code></pre></div>
+        for later use.
+        And we set
+        <div class="code-container-inline inline"><pre><code class="javascript">effectCounter</code></pre></div>
+        to 30, which determines the length of the effect in frames (30 frames should be about half a second).
+        <br><br>
+        As long as 
+        <div class="code-container-inline inline"><pre><code class="javascript">effectCounter</code></pre></div>
+        is greater than 0, we decrement its value, and then draw the effect sprite.
+        <br><br>
+        Now here's something we haven't seen before:
+        <div class="code-container-inline inline"><pre><code class="javascript">ctx.globalAlpha</code></pre></div>.
+        This lets us control the transparency of all sprites drawn. A value of 1 means fully opaque and 0 means fully transparent. By setting it to
+        <div class="code-container-inline inline"><pre><code class="javascript">this.effectCounter/30</code></pre></div>
+        we ensure that the effect fades out. We reset the global alpha to 1 at the end to avoid affecting any other sprites.
+
+        <h2>Spell 6: DASH</h2>
+
+
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentDASH" class="javascript add"></code></pre>
+        </div>
+        <div class="code-container-inline inline"><pre><code class="javascript">DASH</code></pre></div>
+        moves the player in the direction of their last move or attack until they are blocked by a wall or monster. If the player was able to move, adjacent monsters are damaged, they are stunned, and an effect is drawn.
+        <br><br>
+        We're using
+        <div class="code-container-inline inline"><pre><code class="javascript">getNeighbor</code></pre></div>
+        to move in the
+        <div class="code-container-inline inline"><pre><code class="javascript">lastMove</code></pre></div>
+        direction (defined below) one tile at a time in a
+        <div class="code-container-inline inline"><pre><code class="javascript">while</code></pre></div>
+        loop. It's a common approach to use
+        <div class="code-container-inline inline"><pre><code class="javascript">while(true)</code></pre></div>
+        until you meet some condition and then
+        <div class="code-container-inline inline"><pre><code class="javascript">break</code></pre></div>
+        out of the loop. We'll use it again later. Just be careful when writing such a loop that you have a proper way to break out; otherwise you can easily end up in an infinte loop and crash your browser!
+
+        <br><br>
+        Here's the code to track <div class="code-container-inline inline"><pre><code class="javascript">lastMove</code></pre></div>.
+
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentLASTMOVE1" class="javascript"></code></pre>
+            <pre><code id="contentLASTMOVE2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentLASTMOVE3" class="javascript"></code></pre>
+            <pre><code id="contentLASTMOVE4" class="javascript add"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentLASTMOVE5" class="javascript"></code></pre>
+        </div>
+
+
+        <h2>Spell 7: DIG</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentDIG" class="javascript add"></code></pre>
+        </div>
+        <div class="code-container-inline inline"><pre><code class="javascript">DIG</code></pre></div>
+        replaces all walls (not including the outer wall) with floors. The player is healed for 2 health and an effect is drawn on the player tile.
+
+
+        <h2>Spell 8: KINGMAKER</h2>
+
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentKINGMAKER" class="javascript add"></code></pre>
+        </div>
+        <div class="code-container-inline inline"><pre><code class="javascript">KINGMAKER</code></pre></div>
+        heals all monsters and generates a treasure on their tile.
+
+
+        <h2>Spell 9: ALCHEMY</h2>
+
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentALCHEMY" class="javascript add"></code></pre>
+        </div>
+        <div class="code-container-inline inline"><pre><code class="javascript">ALCHEMY</code></pre></div>
+        turns all adjacent walls that are not part of the outer wall into floors with a teasure.
+
+
+        <h2>Spell 10: POWER</h2>
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentPOWER" class="javascript add"></code></pre>
+        </div>
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentBONUS1" class="javascript"></code></pre>
+            <pre><code id="contentBONUS2" class="javascript add"></code></pre>
+            <pre><code id="contentCLOSINGBRACEINDENT1" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentBONUS4" class="javascript"></code></pre>
+            <pre><code id="contentBONUS5" class="javascript remove"></code></pre>
+            <pre><code id="contentBONUS6" class="javascript add"></code></pre>
+            <pre><code id="contentBONUS7" class="javascript"></code></pre>
+        </div>
+
+        <div class="code-container-inline inline"><pre><code class="javascript">POWER</code></pre></div>
+        makes the next player attack do 6 damage by using a new variable called
+        <div class="code-container-inline inline"><pre><code class="javascript">bonusAttack</code></pre></div>.
+
+        <h2>Spell 11: BUBBLE</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentBUBBLE" class="javascript add"></code></pre>
+        </div>
+
+        <div class="code-container-inline inline"><pre><code class="javascript">BUBBLE</code></pre></div>
+        duplicates spells. It iterates over the player spells in reverse and copies a spell from the previous element if the current element is empty.
+
+        <h2>Spell 12: BRAVERY</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentBRAVERY" class="javascript add"></code></pre>
+        </div>
+
+        <div class="code-container-inline inline"><pre><code class="javascript">BRAVERY</code></pre></div>
+        gives the player a free turn by iterating over all monsters and stunning them.
+        <br><br>
+        It also adds a new property called
+        <div class="code-container-inline inline"><pre><code class="javascript">shield</code></pre></div>,
+        which will prevent any damage until the turn after next.
+
+        To support the <div class="code-container-inline inline"><pre><code class="javascript">shield</code></pre></div> property, we need to do three things:
+        <ol>
+            <li>
+                prevent the player from taking damage by returning early in the 
+                <div class="code-container-inline inline"><pre><code class="javascript">hit</code></pre></div> method if the
+                <div class="code-container-inline inline"><pre><code class="javascript">shield</code></pre></div> is greater than 0
+            </li>
+            <li>
+                adding a player version of
+                <div class="code-container-inline inline"><pre><code class="javascript">update</code></pre></div> that decrements the
+                <div class="code-container-inline inline"><pre><code class="javascript">shield</code></pre></div>
+                every turn
+            </li>
+            <li>
+                calling that
+                <div class="code-container-inline inline"><pre><code class="javascript">update</code></pre></div>
+                method
+            </li>
+        </ol>
+        The reason we have two distinct versions of
+        <div class="code-container-inline inline"><pre><code class="javascript">update</code></pre></div>
+        is that player will never need regular monster AI behavior, but we still need a place to update player variables once per turn.
+
+
+
+        <div class="filename">monster.js</div>
+        <div class="code-container">
+            <pre><code id="contentSHIELD2" class="javascript"></code></pre>
+            <pre><code id="contentSHIELD3" class="javascript add"></code></pre>
+            <pre><code id="contentSHIELD4" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentSHIELD5" class="javascript"></code></pre>
+            <pre><code id="contentSHIELD6" class="javascript add"></code></pre>
+        </div>
+
+
+        <div class="filename">game.js</div>
+        <div class="code-container">
+            <pre><code id="contentSHIELD7" class="javascript"></code></pre>
+            <pre><code id="contentSHIELD8" class="javascript add"></code></pre>
+            <pre><code id="contentSHIELD9" class="javascript"></code></pre>
+        </div>
+
+
+        <h2>Bolt travel</h2>
+
+
+        The last three spells use a function that we'll add to the end of spell.js called
+        <div class="code-container-inline inline"><pre><code class="javascript">boltTravel</code></pre></div>.
+
+
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentBOLTTRAVEL1" class="javascript"></code></pre>
+            <pre><code class="break">...</code></pre>
+            <pre><code id="contentBOLTTRAVEL2" class="javascript"></code></pre>
+            <pre><code id="contentBOLTTRAVEL3" class="javascript add"></code></pre>
+        </div>
+
+
+
+        This function is sort of like 
+        <div class="code-container-inline inline"><pre><code class="javascript">DASH</code></pre></div>
+        earlier. We pass in a specified
+        <div class="code-container-inline inline"><pre><code class="javascript">direction</code></pre></div>,
+        an 
+        <div class="code-container-inline inline"><pre><code class="javascript">effect</code></pre></div>
+        sprite, and some
+        <div class="code-container-inline inline"><pre><code class="javascript">damage</code></pre></div>
+        number. Starting from the player tile, we move in that direction until we hit a wall. We draw an effect for each tile passed through and for each monster, we damage it.
+        <br><br>
+        We can do a lot with 
+        <div class="code-container-inline inline"><pre><code class="javascript">boltTravel</code></pre></div>.
+
+        <h2>Spell 13: BOLT</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentBOLT" class="javascript add"></code></pre>
+        </div>
+
+
+        First, a simple test of our new function with the aptly named
+        <div class="code-container-inline inline"><pre><code class="javascript">BOLT</code></pre></div>.
+        Like <div class="code-container-inline inline"><pre><code class="javascript">DASH</code></pre></div>
+        earlier, this spell operates in the direction of the player's last move. It's somewhat hard to pull off, so we make it do 4 damage!
+        <br><br>
+        The effect expression might look a little bit weird, but all we're trying to accomplish is to return either 15 or 16 (15 is the location of our horizontal bolt sprite, 16 holds the vertical version). A horizontal last move will have 0 in
+        <div class="code-container-inline inline"><pre><code class="javascript">player.lastMove[1]</code></pre></div>,
+        but a vertical move will have either -1 or +1. Taking the absolute value gives us 1 in either case.
+
+
+        <h2>Spell 14: CROSS</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentCROSS" class="javascript add"></code></pre>
+        </div>
+
+
+        <div class="code-container-inline inline"><pre><code class="javascript">CROSS</code></pre></div> also
+        calls
+        <div class="code-container-inline inline"><pre><code class="javascript">boltTravel</code></pre></div>
+        but in the 4 cardinal directions. We define these
+        <div class="code-container-inline inline"><pre><code class="javascript">directions</code></pre></div>
+        in an array literal and iterate over it. We deal 2 damage and we use the same trick as last time to distinguish between horizontal and vertical bolts.
+
+        <h2>Spell 15: EX</h2>
+
+        <div class="filename">spell.js</div>
+        <div class="code-container">
+            <pre><code id="contentEX" class="javascript add"></code></pre>
+        </div>
+
+
+
+
+
+        <div class="code-container-inline inline"><pre><code class="javascript">EX</code></pre></div>
+        is pretty much the same as
+        <div class="code-container-inline inline"><pre><code class="javascript">CROSS</code></pre></div>, but in diagonal directions. We deal 3 damage and pass a single sprite that works for any direction.
+
+        <h2>The End</h2>
+        And with that, our spells are done. The whole thing is done. You've made a complete game in less than a thousand lines of code with no frameworks. Great job!
+        <img src="screens/casting.gif">
+        So... <a href="stage9.html">what's next?</a>
+
+	</div>
+
+	<script>
+		let content = {	
+			WOOP: `
+spells = {
+    WOOP: function(){
+        player.move(randomPassableTile());
+    }
+};
+			`,
+            KEYPRESS1: `
+    document.querySelector("html").onkeypress = function(e){
+        if(gameState == "title"){                              
+            startGame();                
+        }else if(gameState == "dead"){                             
+            showTitle();                                        
+        }else if(gameState == "running"){             
+            if(e.key=="w") player.tryMove(0, -1);
+            if(e.key=="s") player.tryMove(0, 1);
+            if(e.key=="a") player.tryMove(-1, 0);
+            if(e.key=="d") player.tryMove(1, 0);
+
+            `,
+            KEYPRESS2: `
+            if(e.key>=1 && e.key<=9) player.castSpell(e.key-1);
+            `,
+            KEYPRESS3: `
+        };
+    };
+            `,
+            CLOSINGBRACEINDENT1: `
+    }
+            `,
+            CLOSINGBRACE: `
+}
+            `,
+            NEWLINE: `
+
+            `,
+            SPELLSHUFFLE1: `
+
+class Player extends Monster{
+    constructor(tile){
+        super(tile, 0, 3);
+        this.isPlayer = true;
+        this.teleportCounter = 0;
+            `,
+            SPELLSHUFFLE2: `
+        this.spells = shuffle(Object.keys(spells)).splice(0,numSpells);
+            `,
+            SPELLSHUFFLE3: `
+    }
+
+    tryMove(dx, dy){
+        if(super.tryMove(dx,dy)){
+            tick();
+        }
+    }
+
+            `,
+            SPELLSHUFFLE4: `
+    addSpell(){                                                       
+        let newSpell = shuffle(Object.keys(spells))[0];
+        this.spells.push(newSpell);
+    }
+
+    castSpell(index){                                                   
+        let spellName = this.spells[index];
+        if(spellName){
+            delete this.spells[index];
+            spells[spellName]();
+            playSound("spell");
+            tick();
+        }
+    }
+            `,
+            DRAWSPELLS1: `
+function startGame(){                                           
+    level = 1;
+    score = 0;
+            `,
+            DRAWSPELLS2: `
+    numSpells = 1;
+            `,
+            DRAWSPELLS3: `
+    startLevel(startingHp);
+
+    gameState = "running";
+}
+            `,
+            DRAWSPELLS4: `
+function draw(){
+    if(gameState == "running" || gameState == "dead"){
+        ctx.clearRect(0,0,canvas.width,canvas.height);
+
+            `,  
+            DRAWSPELLS5: `
+
+        drawText("Level: "+level, 30, false, 40, "violet");
+        drawText("Score: "+score, 30, false, 70, "violet");
+
+            `,
+            DRAWSPELLS6: `
+        for(let i=0; i<player.spells.length; i++){
+            let spellText = (i+1) + ") " + (player.spells[i] || "");                        
+            drawText(spellText, 20, false, 110+i*40, "aqua");        
+        }
+            `,
+            NEWSPELLS1: `
+class Floor extends Tile{
+    constructor(x,y){
+        super(x, y, 2, true);
+    };
+
+    stepOn(monster){        
+        if(monster.isPlayer && this.treasure){   
+            score++;          
+            `,
+            NEWSPELLS2: `
+            if(score % 3 == 0 && numSpells < 9){                         
+                numSpells++;                
+                player.addSpell();            
+            }      
+            `,
+            NEWSPELLS3: `
+            playSound("treasure");           
+            this.treasure = false;
+            spawnMonster();
+        }
+    }
+}
+            `,
+            QUAKE1: `
+spells = {
+    WOOP: function(){
+        player.move(randomPassableTile());
+            `,
+            QUAKE2: `
+    }
+            `,
+            QUAKE3: `
+    },
+    QUAKE: function(){                  
+        for(let i=0; i<numTiles; i++){
+            for(let j=0; j<numTiles; j++){
+                let tile = getTile(i,j);
+                if(tile.monster){
+                    let numWalls = 4 - tile.getAdjacentPassableNeighbors().length;
+                    tile.monster.hit(numWalls*2);
+                }
+            }
+        }
+        shakeAmount = 20;
+    }
+            `,
+            QUAKE4: `
+};
+            `,
+            MAELSTROM: `
+    MAELSTROM: function(){
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].move(randomPassableTile());
+            monsters[i].teleportCounter = 2;
+        }
+    }
+            `,
+            MULLIGAN1: `
+    MULLIGAN: function(){
+        startLevel(1, player.spells);
+    }
+            `,
+            MULLIGAN2: `
+function startLevel(playerHp){  
+            `,
+            MULLIGAN3: `
+function startLevel(playerHp, playerSpells){   
+            `,
+            MULLIGAN4: `
+    spawnRate = 15;              
+    spawnCounter = spawnRate;      
+
+    generateLevel();
+
+    player = new Player(randomPassableTile());
+    player.hp = playerHp;
+            `,
+            MULLIGAN5: `
+    if(playerSpells){
+        player.spells = playerSpells;
+    } 
+            `,
+            MULLIGAN6: `
+    randomPassableTile().replace(Exit);
+}
+            `,
+            MULLIGAN6: `
+    randomPassableTile().replace(Exit);
+}
+            `,
+            AURA: `
+    AURA: function(){
+        player.tile.getAdjacentNeighbors().forEach(function(t){
+            t.setEffect(13);
+            if(t.monster){
+                t.monster.heal(1);
+            }
+        });
+        player.tile.setEffect(13);
+        player.heal(1);
+    }
+            `,
+            EFFECTS1: `
+class Tile{
+    constructor(x, y, sprite, passable){
+        this.x = x;
+        this.y = y;
+        this.sprite = sprite;
+        this.passable = passable;
+    }
+            `,
+            EFFECTS2: `
+    draw(){
+        drawSprite(this.sprite, this.x, this.y);
+
+        if(this.treasure){                      
+            drawSprite(12, this.x, this.y);                                             
+        }
+
+            `,
+            EFFECTS3: `
+        if(this.effectCounter){                    
+            this.effectCounter--;
+            ctx.globalAlpha = this.effectCounter/30;
+            drawSprite(this.effect, this.x, this.y);
+            ctx.globalAlpha = 1;
+        }
+            `,
+            EFFECTS4: `
+    setEffect(effectSprite){                                  
+        this.effect = effectSprite;
+        this.effectCounter = 30;
+    }
+            `,
+            DASH: `
+    DASH: function(){
+        let newTile = player.tile;
+        while(true){
+            let testTile = newTile.getNeighbor(player.lastMove[0],player.lastMove[1]);
+            if(testTile.passable && !testTile.monster){
+                newTile = testTile;
+            }else{
+                break;
+            }
+        }
+        if(player.tile != newTile){
+            player.move(newTile);
+            newTile.getAdjacentNeighbors().forEach(t => {
+                if(t.monster){
+                    t.setEffect(14);
+                    t.monster.stunned = true;
+                    t.monster.hit(1);
+                }
+            });
+        }
+    }
+            `,
+            LASTMOVE1: `
+class Monster{
+    constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+        this.teleportCounter = 2;
+        this.offsetX = 0;                                                   
+        this.offsetY = 0;        
+            `,
+            LASTMOVE2: `
+        this.lastMove = [-1,0];              
+            `,
+            LASTMOVE3: `
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            `,
+            LASTMOVE4: `
+            this.lastMove = [dx,dy];
+            `,
+            LASTMOVE5: `
+        }
+    }
+            `,
+            DIG: `
+    DIG: function(){
+        for(let i=1;i<numTiles-1;i++){
+            for(let j=1;j<numTiles-1;j++){
+                let tile = getTile(i,j);
+                if(!tile.passable){
+                    tile.replace(Floor);
+                }
+            }
+        }
+        player.tile.setEffect(13);
+        player.heal(2);
+    }
+            `,
+            KINGMAKER: `
+    KINGMAKER: function(){
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].heal(1);
+            monsters[i].tile.treasure = true;
+        }
+    }
+            `,
+            ALCHEMY: `
+    ALCHEMY: function(){
+        player.tile.getAdjacentNeighbors().forEach(function(t){
+            if(!t.passable && inBounds(t.x, t.y)){
+                t.replace(Floor).treasure = true;
+            }
+        });
+    }
+            `,
+            POWER: `
+    POWER: function(){
+        player.bonusAttack=5;
+    }
+            `,
+            BONUS1: `
+class Monster{
+    constructor(tile, sprite, hp){
+        this.move(tile);
+        this.sprite = sprite;
+        this.hp = hp;
+        this.teleportCounter = 2;
+        this.offsetX = 0;                                                   
+        this.offsetY = 0;     
+        this.lastMove = [-1,0];      
+            `,
+            BONUS2: `
+        this.bonusAttack = 0;
+        `,
+            BONUS4: `
+    tryMove(dx, dy){
+        let newTile = this.tile.getNeighbor(dx,dy);
+        if(newTile.passable){
+            this.lastMove = [dx,dy];
+            if(!newTile.monster){
+                this.move(newTile);
+            }else{
+                if(this.isPlayer != newTile.monster.isPlayer){
+                    this.attackedThisTurn = true;
+                    newTile.monster.stunned = true;
+            `,
+            BONUS5: `
+                    newTile.monster.hit(1);
+            `,
+            BONUS6: `
+                    newTile.monster.hit(1 + this.bonusAttack);
+                    this.bonusAttack = 0;
+            `,
+            BONUS7: `
+
+                    shakeAmount = 5;
+
+                    this.offsetX = (newTile.x - this.tile.x)/2;
+                    this.offsetY = (newTile.y - this.tile.y)/2;
+                }
+            }
+            return true;
+        }
+    }
+            `,
+            BUBBLE: `
+    BUBBLE: function(){
+        for(let i=player.spells.length-1;i>0;i--){
+            if(!player.spells[i]){
+                player.spells[i] = player.spells[i-1];
+            }
+        }
+    }
+            `,
+            BRAVERY: `
+    BRAVERY: function(){
+        player.shield = 2;
+        for(let i=0;i<monsters.length;i++){
+            monsters[i].stunned = true;
+        }
+    }
+        `,
+        SHIELD1: `
+class Monster{  
+        `,
+        SHIELD2: `
+    hit(damage){                 
+        `,
+        SHIELD3: `
+        if(this.shield>0){           
+            return;                                                             
+        }
+        `,
+        SHIELD4: `
+
+        this.hp -= damage;                                           
+        if(this.hp <= 0){
+            this.die();
+        }
+
+        if(this.isPlayer){                                                     
+            playSound("hit1");                                              
+        }else{                                                       
+            playSound("hit2");                                              
+        }      
+    }
+        `,
+        SHIELD5: `
+class Player extends Monster{
+   constructor(tile){
+       super(tile, 0, 3);
+       this.isPlayer = true;
+       this.teleportCounter = 0;
+       this.spells = shuffle(Object.keys(spells)).splice(0,numSpells);
+   }
+
+        `,
+        SHIELD6: `
+    update(){          
+        this.shield--;                                                      
+    } 
+        `,
+        SHIELD7: `
+function tick(){
+    for(let k=monsters.length-1;k>=0;k--){
+        if(!monsters[k].dead){
+            monsters[k].update();
+        }else{
+            monsters.splice(k,1);
+        }
+    }
+
+        `,
+        SHIELD8: `
+    player.update();
+        `,
+        SHIELD9: `
+
+    if(player.dead){    
+        addScore(score, false);
+        gameState = "dead";
+    }
+
+    spawnCounter--;                           
+    if(spawnCounter <= 0){                     
+        spawnMonster();
+        spawnCounter = spawnRate;
+        spawnRate--;
+    }
+}
+        `,
+        BOLTTRAVEL1: `
+spells = {
+        `,
+        BOLTTRAVEL2: `
+};
+
+        `,
+        BOLTTRAVEL3: `
+
+function boltTravel(direction, effect, damage){
+    let newTile = player.tile;
+    while(true){
+        let testTile = newTile.getNeighbor(direction[0], direction[1]);
+        if(testTile.passable){
+            newTile = testTile;
+            if(newTile.monster){
+                newTile.monster.hit(damage);
+            }
+            newTile.setEffect(effect);
+        }else{
+            break;
+        }
+    }
+}
+        `,
+        BOLT: `
+    BOLT: function(){
+        boltTravel(player.lastMove, 15 + Math.abs(player.lastMove[1]), 4);
+    }
+        `,
+        CROSS: `
+    CROSS: function(){
+        let directions = [
+            [0, -1],
+            [0, 1],
+            [-1, 0],
+            [1, 0]
+        ];
+        for(let k=0;k<directions.length;k++){
+            boltTravel(directions[k], 15 + Math.abs(directions[k][1]), 2);
+        }
+    }
+        `,
+        EX: `
+    EX: function(){
+        let directions = [
+            [-1, -1],
+            [-1, 1],
+            [1, -1],
+            [1, 1]
+        ];
+        for(let k=0;k<directions.length;k++){
+            boltTravel(directions[k], 14, 3);
+        }
+    }
+        `
+        };
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/stage9.html b/js/games/nluqo.github.io/broughlike-tutorial/stage9.html
new file mode 100644
index 0000000..f2d4e0a
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/stage9.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>Broughlike tutorial - Stage 8</title>
+	<meta charset="utf-8">
+</head>
+<body>
+	<div id="outer">
+        <div class="header">
+            <a href="index.html">JavaScript Broughlike Tutorial</a>
+            <a href="stage8.html">Previously: Spells</a>
+        </div>
+
+		<h1>Stage 9 - Next steps</h1>
+
+        You've crafted a complete game using JavaScript. Very cool. What do you want to do next?
+
+        <h2>Making it better</h2>
+        Think about putting your own stamp on the game: different spells, unique monsters, change up the rules.
+
+        <h2>Sharing the game</h2>
+        You'll probably want to share your game with friends. One easy way is to zip up the project folder and just email it around.
+        <br><br>
+        Even easier for the player would be hosting it on a site like <a href="https://itch.io/">itch.io</a>. It's super easy to upload an HTML game and have people play it right in their browser with no downloads.
+        <br><br>
+        Later, if you have dreams of launching a game on a platform like Steam, you'll need to get it packaged up into an executable insted of a plain old webpage. I had good luck with <a href="https://nwjs.io/">NW.js</a>. That's how I shipped Golden Krone Hotel.
+        <h2>Learning more stuff</h2>
+        Now that you know how to code without any libraries, perhaps it's time to try one out. I recommend <a href="https://ondras.github.io/rot.js/hp/">rot.js</a> for making roguelikes.
+        <br><br>
+        You might also want to learn all the best practices that I refused to show you. 😋 Sorry about all that. A good starting point for learning JavaScript in depth is the free book <a href="https://github.com/getify/You-Dont-Know-JS">You Don't Know JS</a>.
+        <h2>Shoot me a note</h2>
+        If you found this tutorial useful (or even if you didn't) I'd love to hear about it. Send me an email: <a href="mailto:jeremiah.reid@gmail.com">jeremiah.reid@gmail.com</a>
+
+	</div>
+
+	<script>
+		let content = {};
+	</script>
+
+	<link rel="stylesheet" href="highlight.min.css">
+	<link rel="stylesheet" href="style.css">
+	<script src="highlight.min.js"></script>
+	<script src="diff.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/broughlike-tutorial/style.css b/js/games/nluqo.github.io/broughlike-tutorial/style.css
new file mode 100644
index 0000000..f842195
--- /dev/null
+++ b/js/games/nluqo.github.io/broughlike-tutorial/style.css
@@ -0,0 +1,182 @@
+html, body{
+	margin: 0;
+	padding: 0;
+	color: #222222;
+}
+
+.centered{
+	text-align: center;
+}
+
+a{
+	text-decoration: none;
+	color: #aa00ff;
+}
+
+img{
+	margin: 0 auto;
+}
+
+a:hover{
+	text-decoration: underline;
+}
+
+h1, h2, h3{
+	font-family: Helvetica, Arial, Sans-serif;
+	color: #40424C;
+}
+
+h2, h3{
+	margin-bottom: 10px;
+}
+
+p{
+	font-family: Georgia, Serif;
+}
+
+#outer{
+	max-width: 1000px;
+	margin: 0 auto;
+	font-size: 20px;
+	padding-bottom: 50px;
+}
+
+#outer pre{
+	margin: 0;
+}
+
+.code-container-inline, .code-container{
+	background-color: #f5f5f5;
+	border: 1px solid #ccc;
+	border-radius: 4px;
+	padding: 7px 0;
+	margin: 10px 0;
+}
+
+.margin-bottom{
+	margin-bottom: 30px;
+}
+
+.code-container-inline.inline{
+	padding: 2px 5px;
+	text-align: center;
+	vertical-align: top;
+}
+
+.code-container-inline{
+	display: inline-flex;
+	flex-direction: column;
+	margin: 0 0 0px 0;
+}
+
+.code-container{
+	display: flex;
+	flex-direction: column;
+}
+
+#outer pre code{
+	padding: 0 30px 0 0;
+	font-size: 14px;
+	/*text-shadow: 1px 1px 0px black;*/
+}
+
+#outer .inline pre code{
+	padding: 0;
+}
+
+#outer .code-container-inline:not(.inline) pre code:first-line, #outer .code-container pre code:first-line{
+	line-height: 0;
+}
+
+#outer pre code.add{
+	background-color: #DAF7DE;
+}
+
+#outer pre code.remove{
+	background-color: #F5D4D4;
+}
+
+
+#outer pre code.remove, #outer pre code.remove *{
+	/*color: white !important;*/
+	/*filter: invert(1);*/
+}
+
+.remove .diff{
+	color: #C10000;
+}
+
+
+
+
+.add .diff{
+	color: #006E03;
+}
+
+.filename{
+	color: #777;
+	font-size: 16px;
+	font-weight: bold;
+	font-family: monospace;
+	margin-top: 15px;
+	text-align: right;
+	margin-bottom: -5px;
+}
+
+img{
+	margin: 15px auto;
+	display: block;
+}
+
+.screen{
+	border-radius: 3px;
+	box-shadow: 0 3px 10px rgba(0,0,0,0.3);
+}
+
+.drawing-section{
+	background-color: #DAE5E7;
+	border: 3px solid #53575C;
+	border-radius: 10px;
+	padding: 10px;
+	margin-bottom: 30px;
+}
+.drawing-section img{
+	margin: 10px 20px 20px 20px;
+}
+
+.drawing-section li{
+	padding: 10px;
+	font-size: .9em;
+}
+
+.noselect{
+	user-select: none;
+}
+
+#outer pre code.break{
+	color: #999;
+	background-color: #fff;
+	vertical-align: middle;
+	padding: 13px;
+	border-top: 1px dashed #ccc;
+	border-bottom: 1px dashed #ccc;
+	margin: 5px 0;
+	text-align: center;
+}
+
+.header{
+	font-weight: bold;
+	font-family: Helvetica, Arial, Sans-serif;
+	color: #5E606A;
+	font-size: 12px;
+	text-align: center;
+	padding: 10px;
+}
+
+.header a{
+	display: block;
+}
+
+.header a:first-child{
+	color: #5E606A;
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/icons/back.gif b/js/games/nluqo.github.io/icons/back.gif
new file mode 100644
index 0000000..a694ae1
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/back.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/binary.gif b/js/games/nluqo.github.io/icons/binary.gif
new file mode 100644
index 0000000..9a15cba
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/binary.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/binhex.gif b/js/games/nluqo.github.io/icons/binhex.gif
new file mode 100644
index 0000000..62d0363
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/binhex.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/blank.gif b/js/games/nluqo.github.io/icons/blank.gif
new file mode 100644
index 0000000..0ccf01e
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/blank.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/compressed.gif b/js/games/nluqo.github.io/icons/compressed.gif
new file mode 100644
index 0000000..39e7327
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/compressed.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/folder.gif b/js/games/nluqo.github.io/icons/folder.gif
new file mode 100644
index 0000000..4826460
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/folder.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/layout.gif b/js/games/nluqo.github.io/icons/layout.gif
new file mode 100644
index 0000000..c96338a
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/layout.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/text.gif b/js/games/nluqo.github.io/icons/text.gif
new file mode 100644
index 0000000..4c62390
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/text.gif
Binary files differdiff --git a/js/games/nluqo.github.io/icons/unknown.gif b/js/games/nluqo.github.io/icons/unknown.gif
new file mode 100644
index 0000000..32b1ea2
--- /dev/null
+++ b/js/games/nluqo.github.io/icons/unknown.gif
Binary files differdiff --git a/js/games/nluqo.github.io/robots.txt b/js/games/nluqo.github.io/robots.txt
new file mode 100644
index 0000000..150b336
--- /dev/null
+++ b/js/games/nluqo.github.io/robots.txt
@@ -0,0 +1,94 @@
+#
+# robots.txt
+#
+# This file is to prevent the crawling and indexing of certain parts
+# of your site by web crawlers and spiders run by sites like Yahoo!
+# and Google. By telling these "robots" where not to go on your site,
+# you save bandwidth and server resources.
+#
+# This file will be ignored unless it is at the root of your host:
+# Used:    http://example.com/robots.txt
+# Ignored: http://example.com/site/robots.txt
+#
+# For more information about the robots.txt standard, see:
+# http://www.robotstxt.org/robotstxt.html
+
+User-agent: *
+Crawl-delay: 10
+# CSS, JS, Images
+Allow: /misc/*.css$
+Allow: /misc/*.css?
+Allow: /misc/*.js$
+Allow: /misc/*.js?
+Allow: /misc/*.gif
+Allow: /misc/*.jpg
+Allow: /misc/*.jpeg
+Allow: /misc/*.png
+Allow: /modules/*.css$
+Allow: /modules/*.css?
+Allow: /modules/*.js$
+Allow: /modules/*.js?
+Allow: /modules/*.gif
+Allow: /modules/*.jpg
+Allow: /modules/*.jpeg
+Allow: /modules/*.png
+Allow: /profiles/*.css$
+Allow: /profiles/*.css?
+Allow: /profiles/*.js$
+Allow: /profiles/*.js?
+Allow: /profiles/*.gif
+Allow: /profiles/*.jpg
+Allow: /profiles/*.jpeg
+Allow: /profiles/*.png
+Allow: /themes/*.css$
+Allow: /themes/*.css?
+Allow: /themes/*.js$
+Allow: /themes/*.js?
+Allow: /themes/*.gif
+Allow: /themes/*.jpg
+Allow: /themes/*.jpeg
+Allow: /themes/*.png
+# Directories
+Disallow: /includes/
+Disallow: /misc/
+Disallow: /modules/
+Disallow: /profiles/
+Disallow: /scripts/
+Disallow: /themes/
+# Files
+Disallow: /CHANGELOG.txt
+Disallow: /cron.php
+Disallow: /INSTALL.mysql.txt
+Disallow: /INSTALL.pgsql.txt
+Disallow: /INSTALL.sqlite.txt
+Disallow: /install.php
+Disallow: /INSTALL.txt
+Disallow: /LICENSE.txt
+Disallow: /MAINTAINERS.txt
+Disallow: /update.php
+Disallow: /UPGRADE.txt
+Disallow: /xmlrpc.php
+# Paths (clean URLs)
+Disallow: /admin/
+Disallow: /comment/reply/
+Disallow: /filter/tips/
+Disallow: /node/add/
+Disallow: /search/
+Disallow: /user/register/
+Disallow: /user/password/
+Disallow: /user/login/
+Disallow: /user/logout/
+# added by janp per observed search engine results
+#   consensus seems to be that wildcard is helpful, so including
+Disallow: /home/*
+
+# Paths (no clean URLs)
+Disallow: /?q=admin/
+Disallow: /?q=comment/reply/
+Disallow: /?q=filter/tips/
+Disallow: /?q=node/add/
+Disallow: /?q=search/
+Disallow: /?q=user/password/
+Disallow: /?q=user/register/
+Disallow: /?q=user/login/
+Disallow: /?q=user/logout/
diff --git a/js/games/nluqo.github.io/~bh/195-syllabus b/js/games/nluqo.github.io/~bh/195-syllabus
new file mode 100644
index 0000000..ffaea6b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/195-syllabus
@@ -0,0 +1,218 @@
+CS 195, Social Implications of Computing
+CS H195, Honors Social Implications of Computing
+
+Brian Harvey		781 Soda Hall
+642-8311		bh@cs.berkeley.edu
+
+Office hours:  Tue 3-5, Wed 2-3:50
+
+
+General Course Information
+==========================
+
+The one-unit CS 195 is meant to serve the needs of students who are here
+to satisfy a requirement.  It is meant to be relatively painless and perhaps
+to spark an interest in the topic.
+
+The three-unit CS H195 is meant to allow small-group discussion with the
+students who are here out of serious interest.  It requires more reading
+and more writing (a term paper) in addition to the extra discussion time.
+The non-honors version meets once per week, Monday 4-5:30, in 306 Soda.
+The honors version has the same lecture, plus an additional meeting Wednesday
+4-5:30, in 373 Soda.
+
+This syllabus is online at  http://www-inst.eecs.berkeley.edu/~cs195
+
+
+READINGS
+--------
+
+There are two course readers, although with a lot of overlap, one for each
+version of the course.  Be sure to get the right reader!  They're at
+Copy Central on Shattuck Square.  FOR THE NON-HONORS (CS 195) STUDENTS,
+ALL ASSIGNED READINGS ARE EITHER IN THE COURSE READER OR ONLINE.  The honors
+version (CS H195) has two textbooks in addition to the reader:
+
+[ES]	Computers, Ethics, and Society (Third Edition)
+	edited by M. David Ermann and Michele S. Shauf.
+	Oxford University Press, 1997, ISBN 0-19-514302-7
+
+[Lud]	High Noon on the Electronic Frontier: Conceptual Issues in Cyberspace
+	edited by Peter Ludlow.  MIT Press, 1996, ISBN 0-262-62103-7
+
+Each week I cull news articles relevant to the course; these will be posted
+in the class bSpace page and are also part of the week's reading assignment.
+You don't have to read every word of every article, but skim them and read
+the interesting ones.
+
+DO THE READING, COME TO CLASS
+-----------------------------
+
+As indicated below, each week has a topic, more or less.  This first week is
+a general overview of the course and the topics.
+
+PLEASE READ THE INDICATED PAPERS BEFORE EACH WEEK'S DISCUSSION.  Most of the
+readings should be easy going, with only a few exceptions.  (I'll try to warn
+you about those in advance.)  But if you don't do the reading, the quality of
+the discussions will suffer.  You are expected to attend class and participate
+in discussions.  ATTENDANCE IS REQUIRED -- THIS WILL BE ENFORCED.
+
+WRITING ASSIGNMENTS
+-------------------
+
+The course is graded P/NP.  In addition to attending all class sessions and
+doing the assigned reading, the requirement for credit includes three
+writing assignments.  In the non-honors section, these will be short (one or
+two page) papers on assigned topics, based on the readings and lectures,
+due Monday of weeks 6 (10/1), 9 (10/22), and 14 (11/26).
+
+In the honors section (194/12), the first two will be the same short papers,
+and the third will be a longer (5-10 page) term paper.  Each honors student
+will pick one topic for more intensive study, leading to a term paper and
+perhaps a presentation to the class.  (Your topic may or may not be the same
+as one of mine.)  Since the term paper is your main written work in this
+course, I want it to be good -- scholarly, honest, articulate, well-organized.
+To this end, you will prepare the term paper in three stages:
+
+	* A one-page proposal (with initial bibliography) due week 5 (9/24).
+	* A first version (your best effort!) due week 10 (10/29).
+	* A revised version due week 13 (11/19).
+
+I'll respond to each of these stages within a week.  THESE ARE FIRM DEADLINES;
+they are chosen to allow time for recovery if what you turn in is not of
+acceptable quality.  (In a typical semester I require post-final versions from
+one or two out of about 25 students.)  Typical papers are 5 to 10 pages, but
+don't pad; quality counts much more than quantity.
+
+ACADEMIC INTEGRITY
+------------------
+
+I have strong opinions on some of these topics, and I believe that the road to
+academic integrity is for me to make my biases clear, rather than to pretend
+not to have opinions.  But it's also my job to be sure that the full range of
+opinion is fairly presented and taken seriously; if, as sometimes happens,
+most of the class agrees with me about some point I'll do my best to argue the
+other side of the question.  The same standards apply to your papers: You
+don't have to agree with me; what you have to do is show that you understand
+and take seriously points of view different from your own, and try to explain
+why your arguments are better than theirs.  (But not every paper is
+necessarily an opinion paper!)
+
+I hope it goes without saying that everything you turn in should be your own
+work, not quoting from anyone else's work without proper attribution.
+
+Schedule:
+
+Week  Dates	Topic				Readings
+
+ 1    8/27,8/29	Intro
+			Williams, "Ethical..." (handout)
+			HONORS: ES 190-202
+
+ 2    ---,9/5	Monday is a holiday; Wed is about the Honors
+			term paper.
+
+ 3    9/10,9/12	Privacy
+			Rachels, "Why Privacy..." (reader)
+			Garfinkle: "Privacy Requires..." (reader)
+			Nissenbaum, "A Contextual Approach..." (reader*)
+			HONORS: ES 137-152; Lud 173-249
+			        Hausman, "Your..." (reader)
+
+ 4    9/17,9/19	Intellectual Property
+			Stallman, "GNU..." [ES 153-162]
+			Stallman, "Misinterpreting..." (reader)
+			LPF, "Against..." [Lud 47-62]
+			Heckel, "Debunking..." [Lud 63-108]
+			HONORS: Lud 1-121
+
+ 5    9/24,9/26	Ethics
+			Hospers, "The Best..." [ES 3-11]
+			Rachels, "The Best..." [ES 12-16]
+			Aristotle, "The Best..." [ES 16-20]
+			MacIntyre, _After Virtue_ (reader)
+			HONORS: larger excerpt of MacIntyre (reader)
+	(HONORS TERM PAPER PROPOSAL DUE Monday 9/24)
+
+ 6    10/1,10/3	Computers and War
+			Chapman, "A Moral Project..." (reader)
+			Page, "Why Star Wars..." (reader)
+			Mahnken, "Weapons" (reader)
+			Dunlap, "The Military-Industrial..." (reader)
+			Shafer, "Artificial Intelligence..." (reader)
+			HONORS: ES 214-231
+	(FIRST SHORT PAPER DUE Monday 10/1)
+
+ 7    10/8,10/10	Self
+			Dreyfus, "Using..." [ES 74-81]
+			Turkle, _The Second Self_ and
+			  _Life on the Screen_ (reader)
+			HONORS: ES 101-110
+
+ 8    10/15,10/17	Community
+			Curtis, "MUDding..." [Lud 347-373]
+			Dibbell, "A Rape..." [Lud 375-395]
+			Godwin, "Virtual..." (reader*)
+			Horrigan, "What Are..." (reader*)
+			Garrett, "Resisting Political..." (reader*)
+			Sproull, "Prosocial..." (reader*)
+			HONORS: ES 85-90, 231-249; Lud 311-457
+			Clark, "Introduction" (reader*)
+			Schlozman, "Who Speaks?" (reader*)
+
+Week  Dates	Topic	Readings
+
+ 9    10/22,10/24	Computers and Education
+			Papert, "Mathophobia..."
+			Schank/Cleary, "What Makes..."
+			Sewell, "Software Styles" (reader)
+			HONORS: ES 171-183
+				Goodman, "The Present Plight.."
+				Buber, "Education" and
+				  "The Education of Character" (reader)
+	(SECOND SHORT PAPER DUE Monday 10/22)
+
+10    10/29,10/31	Risks
+			Joy, "Why..." [ES 110-122]
+			Neumann, "Illustrative Risks..." (online:
+			  www.csli.sri.com/users/neumann/illustrative.html)
+			Levenson/Turner "...Therac-25.." (reader)
+			Mulligan, "Doctrine for..." (reader*)
+			HONORS: Collins et al, "How Good..."
+				Gladwell, "Blowup" (reader)
+				Cheshire, "Online Trust..." (reader*)
+				Cerf, "Safety..." (reader*)
+				Camp, "Reconceptualizing..." (reader*)
+	(HONORS TERM PAPER FIRST VERSION DUE Monday 10/29)
+
+11    11/5,11/7  The Nature of Work
+			Forester, "Computerizing..." (reader)
+			HONORS: ES 184-190
+				Hochheiser, "Workplace Database.."
+				Barbour, "Computers Transform..."
+				Pearson&Mitter "Computeriz..."
+				Dedrick et al, "Computing in..."
+				Forester, "Whatever..." (reader)
+
+12    ---,11/14	 Monday is a holiday; Wed is about Cracking
+			Spafford, "Are Hacker..." [ES 64-74]
+			Wright, "Hackwork" (reader)
+			HONORS: Lud 123-163
+
+12    11/19,11/21	Pornography and Censorship
+			Godwin, "Virtual..." [Lud 269-273]
+			Goodman, "Pornography, Art..." (reader)
+			HONORS: Lud 251-310
+				Benkler, "WikiLeaks..." (reader*)
+	(REVISED HONORS TERM PAPER DUE Monday 11/19)
+
+14    11/26,11/28	Professional Ethics
+			ACM "Code..."
+			Anderson, "Using..."
+			Barger, "Can We Find..."
+			Bok, "The Morality..." [ES 23-54]
+	(THIRD SHORT PAPER DUE Monday 11/26)
+
+
+(Papers labelled "(reader*)" are later in the reader than they should be
+for chronological topic order.)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/abstr.levels b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/abstr.levels
new file mode 100644
index 0000000..ac4e3ce
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/abstr.levels
@@ -0,0 +1,12 @@
+high level of abstraction
+	application programs
+	high-level language (Scheme)
+	low-level language (C)
+	assembly language
+	machine language
+	architecture (registers, memory, arithmetic unit, etc.)
+	circuit elements (gates)
+	transistors
+	solid-state physics
+	quantum mechanics
+low level of abstraction
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/argue.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/argue.scm
new file mode 100644
index 0000000..53dafdb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/argue.scm
@@ -0,0 +1,16 @@
+(define (argue s)
+  (if (empty? s)
+      '()
+      (sentence (opposite (first s))
+		(argue (bf s)))))
+
+(define (opposite w)
+  (cond ((equal? w 'like) 'hate)
+        ((equal? w 'hate) 'like)
+        ((equal? w 'wonderful) 'terrible)
+        ((equal? w 'terrible) 'wonderful)
+        ((equal? w 'great) 'awful)
+        ((equal? w 'awful) 'great)
+        ((equal? w 'terrific) 'yucky)
+        ((equal? w 'yucky) 'terrific)
+        (else w) ))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/buzz.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/buzz.scm
new file mode 100644
index 0000000..f3d62ad
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/buzz.scm
@@ -0,0 +1,4 @@
+(define (buzz n)
+  (cond ((equal? (remainder n 7) 0) 'buzz)
+	((member? 7 n) 'buzz)
+	(else n)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html
new file mode 100644
index 0000000..6be1532
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/?C=M;O=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="abstr.levels">abstr.levels</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">300 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="argue.scm">argue.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">440 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buzz.scm">buzz.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right"> 95 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">624 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="order.scm">order.scm</a>              </td><td align="right">2006-09-15 17:12  </td><td align="right">6.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">203 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural.scm">plural.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">133 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural1.scm">plural1.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 36 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural2.scm">plural2.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 96 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=A
new file mode 100644
index 0000000..aa048a8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=A
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/?C=M;O=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="abstr.levels">abstr.levels</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">300 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="argue.scm">argue.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">440 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buzz.scm">buzz.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right"> 95 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">624 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="order.scm">order.scm</a>              </td><td align="right">2006-09-15 17:12  </td><td align="right">6.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">203 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural.scm">plural.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">133 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural1.scm">plural1.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 36 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural2.scm">plural2.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 96 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=D
new file mode 100644
index 0000000..769b9a1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=D;O=D
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/?C=M;O=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural2.scm">plural2.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 96 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural1.scm">plural1.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 36 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural.scm">plural.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">133 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">203 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="order.scm">order.scm</a>              </td><td align="right">2006-09-15 17:12  </td><td align="right">6.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">624 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buzz.scm">buzz.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right"> 95 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="argue.scm">argue.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">440 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="abstr.levels">abstr.levels</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">300 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=A
new file mode 100644
index 0000000..6be1532
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=A
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/?C=M;O=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="abstr.levels">abstr.levels</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">300 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="argue.scm">argue.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">440 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buzz.scm">buzz.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right"> 95 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">624 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="order.scm">order.scm</a>              </td><td align="right">2006-09-15 17:12  </td><td align="right">6.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">203 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural.scm">plural.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">133 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural1.scm">plural1.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 36 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural2.scm">plural2.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 96 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=D
new file mode 100644
index 0000000..769b9a1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=N;O=D
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/?C=M;O=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural2.scm">plural2.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 96 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural1.scm">plural1.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 36 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural.scm">plural.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">133 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">203 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="order.scm">order.scm</a>              </td><td align="right">2006-09-15 17:12  </td><td align="right">6.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">624 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buzz.scm">buzz.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right"> 95 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="argue.scm">argue.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">440 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="abstr.levels">abstr.levels</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">300 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=A
new file mode 100644
index 0000000..e4b5f81
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=A
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/?C=M;O=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural1.scm">plural1.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 36 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buzz.scm">buzz.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right"> 95 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural2.scm">plural2.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 96 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural.scm">plural.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">133 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">203 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="abstr.levels">abstr.levels</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">300 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="argue.scm">argue.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">440 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">624 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="order.scm">order.scm</a>              </td><td align="right">2006-09-15 17:12  </td><td align="right">6.2K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=D
new file mode 100644
index 0000000..a81db95
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/index.html?C=S;O=D
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/?C=M;O=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="order.scm">order.scm</a>              </td><td align="right">2006-09-15 17:12  </td><td align="right">6.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.1/filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">624 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="argue.scm">argue.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">440 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="abstr.levels">abstr.levels</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">300 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">203 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural.scm">plural.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">133 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural2.scm">plural2.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 96 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buzz.scm">buzz.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right"> 95 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="plural1.scm">plural1.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right"> 36 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/order.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/order.scm
new file mode 100644
index 0000000..a0208b0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/order.scm
@@ -0,0 +1,199 @@
+
+;;; Demonstration program for substitution-model evaluation
+;;;   complete with normal-order and applicative-order versions.
+;;; For use with Section 1.1 of SICP.
+;;;
+;;; This file defines three special forms: DEF, APPLIC, and NORMAL.
+;;;
+;;; Example of use:
+;;;
+;;; (def (f a b) (+ (g a) b))     ; define a function
+;;; (def (g x) (* 3 x))           ; another one
+;;; (applic (f (+ 2 3) (- 15 6))) ; show applicative-order evaluation
+;;; (normal (f (+ 2 3) (- 15 6))) ; show normal-order evaluation
+
+;;; In the printed results, something like
+;;;     (* 2 3) ==> 6
+;;; indicates the ultimate invocation of a primitive function.  But
+;;;     (f 5 9) ---->
+;;;     (+ (g 5) 9)
+;;; indicates the substitution of actual arguments into the body of
+;;; a function defined with DEF.  (Of course, whether actual argument
+;;; values or actual argument expressions are substituted depends on
+;;; whether you used APPLIC or NORMAL, respectively.)
+
+;;; Restrictions:
+;;;   * The operands of a combination must be numbers or combinations.
+;;;          (I.e., no variables, no non-numeric data.)
+;;;   * The operator of a combination must be a symbol that names a function.
+;;;          If the function was not defined by DEF, it is taken as primitive
+;;;          for purposes of the substitution model.
+;;;   * DEF only understands the short-form function definition syntax.
+;;;          (I.e., no lambda, no defining anything but functions.)
+;;;   * The body of a function defined with DEF must be exactly one expression.
+
+;;; A neat example:
+;;; (def (zero x) (- x x))
+;;; (applic (zero (random 10)))
+;;; (normal (zero (random 10)))
+
+
+;; The DEF special form.
+;; Binds the symbol to a quoted lambda expression, not a closure, since we're
+;;  using the substitution model.
+
+;(define def (procedure->macro
+;	     (lambda (exp env)
+;	       `(begin (define ,(caadr exp)
+;			 '(lambda ,(cdadr exp) ,(caddr exp)))
+;		       (set! def-names (cons ',(caadr exp) def-names))
+;		       ',(caadr exp)))))
+
+(define-macro (def form . body) 
+  `(begin
+    (define ,(car form) '(lambda ,(cdr form) ,@body))
+    (set! def-names (cons ',(car form) def-names))
+    ',(car form)))
+
+;;;; (extend-syntax (def)
+;;;;   [(def (name . args) body)
+;;;;    (begin (define name '(lambda args body))
+;;;; 	  (set! def-names (cons 'name def-names))
+;;;; 	  'name)])
+
+;; A list of the functions defined using DEF.
+;; We look in here to distinguish defined functions from primitives.
+
+(define def-names '())
+
+;; The APPLIC special form.  Expands an expression in applicative order.
+;; Calls procedure applic1 to do the real work, except for some extra
+;; top-level stuff to keep the return value separate from printed text.
+
+;(define applic (procedure->macro
+;		(lambda (exp env)
+;		  `(let ((result (applic1 ',(cadr exp) "")))
+;		     (newline)
+;		     result))))
+
+(define-macro (applic . exp)
+   `(let ((result (applic1 ',(car exp) "")))
+      (newline)
+      result))
+
+;;;; (extend-syntax (applic)
+;;;;   [(applic thingo)
+;;;;    (let ((result (applic1 'thingo '||)))
+;;;;      (newline)
+;;;;      result)])
+
+;; The second argument to applic1 is a word of (initially zero) spaces
+;; used to indent the printing of the expansion of subexpressions.
+
+(define (applic1 form spaces)
+  (if (not (pair? form))
+      form
+      (begin
+       (newline)
+       (display spaces)
+       (display form)
+       (cond ((and (not (memq (car form) def-names))
+		   (all-numbers? (cdr form)))
+	      (display " ==> ")
+	      (let ((ans (eval form)))
+		(display ans)
+		ans))
+ 	     (else
+	      (let ((new-form (subapplic (list (car form))
+					 (cdr form)
+					 (word spaces "   ") )))
+		(if (and (memq (car form) def-names)
+			 (not (all-numbers? (cdr form))) )
+		    (begin (newline) (display spaces) (display new-form)) )
+		(cond ((memq (car form) def-names)
+		       (display " ----> ")
+		       (applic1 (subst (eval (car form)) (cdr new-form))
+				spaces))
+		      ((equal? (car form) 'quote) (cadr form))
+		      (else (applic1 new-form spaces)) )))))))
+
+(define (all-numbers? l)
+  (cond ((null? l) #t)
+	((not (or (number? (car l)) (boolean? (car l)))) #f)
+	(else (all-numbers? (cdr l))) ))
+
+;; subapplic maps applic1 over the operands, left-to-right.
+
+(define (subapplic done todo spaces)
+  (if (null? todo)
+      (reverse done)
+      (let ((result (applic1 (car todo) spaces)))
+	(subapplic (cons result done) (cdr todo) spaces) )))
+
+;; subst takes a lambda expression and an actual argument list, and
+;; returns the body with substitutions of args for formal parameters.
+
+(define (subst proc args)
+  (subst-in-body (caddr proc) (cadr proc) args))
+
+(define (subst-in-body form params args)
+  (cond ((null? form) '())
+	((not (pair? form)) (lookup form params args))
+	(else (cons (subst-in-body (car form) params args)
+		    (subst-in-body (cdr form) params args) ))))
+
+(define (lookup form params args)
+  (cond ((null? params) form)
+	((eq? form (car params)) (car args))
+	(else (lookup form (cdr params) (cdr args))) ))
+
+;; The NORMAL special form.  Everything below here is analogous to the
+;; corresponding piece of APPLIC, but the logic of normal1 is different.
+
+;(define normal (procedure->macro
+;		(lambda (exp env)
+;		  `(let ((result (normal1 ',(cadr exp) "")))
+;		     (newline)
+;		     result))))
+
+(define-macro (normal . exp)
+	`(let ((result (normal1 ',(car exp) "")))
+	    (newline)
+	    result))
+
+;;;; (extend-syntax (normal)
+;;;;   [(normal thingo)
+;;;;    (let ((result (normal1 'thingo "")))
+;;;;      (newline)
+;;;;      result)])
+
+(define (normal1 form spaces)
+  (if (not (pair? form))
+      form
+      (begin
+       (newline)
+       (display spaces)
+       (display form)
+       (cond ((and (not (memq (car form) def-names))
+		   (all-numbers? (cdr form)))
+	      (display " ==> ")
+	      (let ((ans (eval form)))
+		(display ans)
+		ans))
+ 	     ((memq (car form) def-names)
+		       (display " ----> ")
+		       (normal1 (subst (eval (car form)) (cdr form))
+				spaces))
+	     ((equal? (car form) 'quote) (cadr form))
+	     (else
+	      (let ((new-form (subnormal (list (car form))
+					 (cdr form)
+					 (word spaces "   ") )))
+		(normal1 new-form spaces) ))))))
+
+(define (subnormal done todo spaces)
+  (if (null? todo)
+      (reverse done)
+      (let ((result (normal1 (car todo) spaces)))
+	(subnormal (cons result done) (cdr todo) spaces) )))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/pigl.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/pigl.scm
new file mode 100644
index 0000000..7957fc8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/pigl.scm
@@ -0,0 +1,10 @@
+(define (pigl wd)
+  (if (pl-done? wd)
+      (word wd 'ay)
+      (pigl (word (bf wd) (first wd)))))
+
+(define (pl-done? wd)
+  (vowel? (first wd)))
+
+(define (vowel? letter)
+  (member? letter '(a e i o u)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural.scm
new file mode 100644
index 0000000..0538d4a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural.scm
@@ -0,0 +1,8 @@
+(define (plural wd)
+  (word wd 's))
+
+(define (plural wd)
+  (if (equal? (last wd) 'y)
+      (word (bl wd) 'ies)
+      (word wd 's)))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural1.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural1.scm
new file mode 100644
index 0000000..982f79f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural1.scm
@@ -0,0 +1,2 @@
+(define (plural wd)
+  (word wd 's))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural2.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural2.scm
new file mode 100644
index 0000000..3c5ddd3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.1/plural2.scm
@@ -0,0 +1,5 @@
+(define (plural wd)
+  (if (equal? (last wd) 'y)
+      (word (bl wd) 'ies)
+      (word wd 's)))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/bentley b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/bentley
new file mode 100644
index 0000000..6e2781e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/bentley
@@ -0,0 +1,16 @@
+		t1(N) = 3.0 N^3		t2(N) = 19,500,000 N
+
+	N	CRAY-1 Fortran		TRS-80 Basic
+
+	10	3.0 microsec		200 millisec
+       100	3.0 millisec		2.0 sec
+      1000	3.0 sec			20 sec
+     10000	49 min			3.2 min
+    100000	35 days			32 min
+   1000000	95 yrs			5.4 hrs
+
+
+
+
+			from _Programming_Pearls_
+			by Jon Bentley (Addison-Wesley, 1986)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/count.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/count.scm
new file mode 100644
index 0000000..567e255
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/count.scm
@@ -0,0 +1,12 @@
+
+(define (count sent)
+  (if (empty? sent)
+      0
+      (+ 1 (count (bf sent))) ))
+
+(define (count sent)
+  (define (iter wds result)
+    (if (empty? wds)
+        result
+        (iter (bf wds) (+ 1 result)) ))
+  (iter sent 0) )
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/growth.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/growth.scm
new file mode 100644
index 0000000..7ef9fe8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/growth.scm
@@ -0,0 +1,19 @@
+(define (square x) (* x x))
+
+(define (squares sent)
+  (if (empty? sent)
+      '()
+      (se (square (first sent))
+	  (squares (bf sent)) )))
+
+
+(define (sort sent)
+  (if (empty? sent)
+      '()
+      (insert (first sent)
+	      (sort (bf sent)) )))
+
+(define (insert num sent)
+  (cond ((empty? sent) (se num))
+	((< num (first sent)) (se num sent))
+	(else (se (first sent) (insert num (bf sent)))) ))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html
new file mode 100644
index 0000000..a711eff
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/?C=N;O=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bentley">bentley</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">324 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">227 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="growth.scm">growth.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">398 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/pascal.scm">pascal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">537 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=A
new file mode 100644
index 0000000..f9e8f3d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bentley">bentley</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">324 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">227 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="growth.scm">growth.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">398 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/pascal.scm">pascal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">537 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=D
new file mode 100644
index 0000000..1907dd3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=D;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/pascal.scm">pascal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">537 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="growth.scm">growth.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">398 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">227 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bentley">bentley</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">324 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=A
new file mode 100644
index 0000000..bd30538
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bentley">bentley</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">324 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">227 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="growth.scm">growth.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">398 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/pascal.scm">pascal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">537 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=D
new file mode 100644
index 0000000..1907dd3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=M;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/pascal.scm">pascal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">537 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="growth.scm">growth.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">398 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">227 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bentley">bentley</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">324 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=N;O=A
new file mode 100644
index 0000000..a711eff
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=N;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/?C=N;O=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bentley">bentley</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">324 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">227 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="growth.scm">growth.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">398 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/pascal.scm">pascal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">537 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=S;O=A
new file mode 100644
index 0000000..827c155
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.2/index.html?C=S;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/?C=S;O=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">227 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bentley">bentley</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">324 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="growth.scm">growth.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">398 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.2/pascal.scm">pascal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">537 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/filter.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/filter.scm
new file mode 100644
index 0000000..8df22b0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/filter.scm
@@ -0,0 +1,23 @@
+;;;;;                        cs60a/lectures/1.3/filter.scm
+(define (evens nums)
+  (cond ((empty? nums) '())
+        ((= (remainder (first nums) 2) 0)
+         (se (first nums) (evens (bf nums))) )
+        (else (evens (bf nums))) ))
+
+(define (ewords sent)
+  (cond ((empty? sent) '())
+        ((member? 'e (first sent))
+         (se (first sent) (ewords (bf sent))) )
+        (else (ewords (bf sent))) ))
+
+(define (pronouns sent)
+  (cond ((empty? sent) '())
+        ((member? (first sent) '(I me you he she it him her we us they them))
+         (se (first sent) (pronouns (bf sent))) )
+        (else (pronouns (bf sent))) ))
+
+(define (filter pred sent)
+  (cond((empty? sent) '())
+       ((pred (first sent))(se (first sent)(filter pred (bf sent))))
+       (else (filter pred (bf sent)))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html
new file mode 100644
index 0000000..066ad39
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=A
new file mode 100644
index 0000000..4e80c90
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=A
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=D
new file mode 100644
index 0000000..774ccf1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=D;O=D
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=A
new file mode 100644
index 0000000..6015499
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=A
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=D
new file mode 100644
index 0000000..a582ac1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=M;O=D
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=A
new file mode 100644
index 0000000..066ad39
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=A
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=D
new file mode 100644
index 0000000..774ccf1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=N;O=D
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=A
new file mode 100644
index 0000000..56f6324
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=A
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=D
new file mode 100644
index 0000000..6d7fa4e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/index.html?C=S;O=D
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/1.3</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/1.3</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="roots.scm">roots.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">970 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="filter.scm">filter.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">788 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="keep.scm">keep.scm</a>               </td><td align="right">2001-08-13 16:27  </td><td align="right">780 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/1.3/general.scm">general.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">545 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sum.scm">sum.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">321 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/keep.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/keep.scm
new file mode 100644
index 0000000..be83967
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/keep.scm
@@ -0,0 +1,23 @@
+;;;;;                        cs60a/lectures/1.3/keep.scm
+(define (evens nums)
+  (cond ((empty? nums) '())
+        ((= (remainder (first nums) 2) 0)
+         (se (first nums) (evens (bf nums))) )
+        (else (evens (bf nums))) ))
+
+(define (ewords sent)
+  (cond ((empty? sent) '())
+        ((member? 'e (first sent))
+         (se (first sent) (ewords (bf sent))) )
+        (else (ewords (bf sent))) ))
+
+(define (pronouns sent)
+  (cond ((empty? sent) '())
+        ((member? (first sent) '(I me you he she it him her we us they them))
+         (se (first sent) (pronouns (bf sent))) )
+        (else (pronouns (bf sent))) ))
+
+(define (keep pred sent)
+  (cond((empty? sent) '())
+       ((pred (first sent))(se (first sent)(keep pred (bf sent))))
+       (else (keep pred (bf sent)))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/roots.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/roots.scm
new file mode 100644
index 0000000..079a8b5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/roots.scm
@@ -0,0 +1,47 @@
+;;; Note: all versions work only for quadratics with real roots
+
+;;; Straightforward but slow way:
+
+(define (roots a b c)
+  (se (/ (+ (- b) (sqrt (- (* b b) (* 4 a c)))) (* 2 a))
+      (/ (- (- b) (sqrt (- (* b b) (* 4 a c)))) (* 2 a)) ))
+
+
+;;; Using a subprocedure to eliminate the repeated computation:
+
+(define (roots a b c)
+  (define (roots1 d)
+    (se (/ (+ (- b) d) (* 2 a))
+	(/ (- (- b) d) (* 2 a)) ))
+  (roots1 (sqrt (- (* b b) (* 4 a c)))) )
+
+
+;;; Using lambda to avoid naming the subprocedure:
+
+(define (roots a b c)
+  ((lambda (d)
+     (se (/ (+ (- b) d) (* 2 a))
+	 (/ (- (- b) d) (* 2 a)) ))
+   (sqrt (- (* b b) (* 4 a c))) ))
+
+
+;;; Using let to rearrange the above:
+
+(define (roots a b c)
+  (let ((d (sqrt (- (* b b) (* 4 a c)))))
+    (se (/ (+ (- b) d) (* 2 a))
+	(/ (- (- b) d) (* 2 a)) )))
+
+
+
+;;; More optimization:
+
+(define (roots a b c)
+  (let ((d (sqrt (- (* b b) (* 4 a c))))
+	(-b (- b))
+	(2a (* 2 a)))
+    (se (/ (+ -b d) 2a)
+	(/ (- -b d) 2a) )))
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/sum.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/sum.scm
new file mode 100644
index 0000000..db618e4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/1.3/sum.scm
@@ -0,0 +1,20 @@
+(define (sumsquare a b)
+  (if (> a b)
+      0
+      (+ (* a a) (sumsquare (+ a 1) b)) ))
+
+(define (sumcube a b)
+  (if (> a b)
+      0
+      (+ (* a a a) (sumcube (+ a 1) b)) ))
+
+(define (sum fn a b)
+  (if (> a b)
+      0
+      (+ (fn a) (sum fn (+ a 1) b))))
+
+(define (square x)
+  (* x x))
+
+(define (cube x)
+  (* x x x))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/calc.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/calc.scm
new file mode 100644
index 0000000..7d667dd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/calc.scm
@@ -0,0 +1,29 @@
+;; Scheme calculator -- evaluate simple expressions
+
+; The read-eval-print loop:
+
+(define (calc)
+  (display "calc: ")
+  (flush)
+  (print (calc-eval (read)))
+  (calc))
+
+; Evaluate an expression:
+
+(define (calc-eval exp)
+  (cond ((number? exp) exp)
+	((list? exp) (calc-apply (car exp) (map calc-eval (cdr exp))))
+	(else (error "Calc: bad expression:" exp))))
+
+; Apply a function to arguments:
+
+(define (calc-apply fn args)
+  (cond ((eq? fn '+) (accumulate + 0 args))
+	((eq? fn '-) (cond ((null? args) (error "Calc: no args to -"))
+			   ((= (length args) 1) (- (car args)))
+			   (else (- (car args) (accumulate + 0 (cdr args))))))
+	((eq? fn '*) (accumulate * 1 args))
+	((eq? fn '/) (cond ((null? args) (error "Calc: no args to /"))
+			   ((= (length args) 1) (/ (car args)))
+			   (else (/ (car args) (accumulate * 1 (cdr args))))))
+	(else (error "Calc: bad operator:" fn))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/cons.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/cons.scm
new file mode 100644
index 0000000..300027e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/cons.scm
@@ -0,0 +1,17 @@
+; implementation of pairs as functions
+
+(define (cons x y)
+  (lambda (which)
+    (cond ((equal? which 'car) x)
+	  ((equal? which 'cdr) y)
+	  (else (error "Bad message to CONS" which)) )))
+
+
+(define (car pair)
+  (pair 'car))
+
+(define (cdr pair)
+  (pair 'cdr))
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html
new file mode 100644
index 0000000..7d89b1f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.1/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2006-05-15 11:28  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="cons.scm">cons.scm</a>               </td><td align="right">2006-02-13 20:59  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce.scm">mapreduce.scm</a>          </td><td align="right">2007-09-26 15:59  </td><td align="right">6.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="total.scm">total.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=A
new file mode 100644
index 0000000..585d38a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.1/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2006-05-15 11:28  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="cons.scm">cons.scm</a>               </td><td align="right">2006-02-13 20:59  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce.scm">mapreduce.scm</a>          </td><td align="right">2007-09-26 15:59  </td><td align="right">6.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="total.scm">total.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=D
new file mode 100644
index 0000000..9c410a4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=D;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.1/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="total.scm">total.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce.scm">mapreduce.scm</a>          </td><td align="right">2007-09-26 15:59  </td><td align="right">6.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="cons.scm">cons.scm</a>               </td><td align="right">2006-02-13 20:59  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2006-05-15 11:28  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=M;O=A
new file mode 100644
index 0000000..c165a68
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=M;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.1/?C=M;O=D">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.1/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="total.scm">total.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="cons.scm">cons.scm</a>               </td><td align="right">2006-02-13 20:59  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2006-05-15 11:28  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce.scm">mapreduce.scm</a>          </td><td align="right">2007-09-26 15:59  </td><td align="right">6.1K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=A
new file mode 100644
index 0000000..7d89b1f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.1/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2006-05-15 11:28  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="cons.scm">cons.scm</a>               </td><td align="right">2006-02-13 20:59  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce.scm">mapreduce.scm</a>          </td><td align="right">2007-09-26 15:59  </td><td align="right">6.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="total.scm">total.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=D
new file mode 100644
index 0000000..9c410a4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/index.html?C=N;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.1</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.1</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.1/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="total.scm">total.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce.scm">mapreduce.scm</a>          </td><td align="right">2007-09-26 15:59  </td><td align="right">6.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="cons.scm">cons.scm</a>               </td><td align="right">2006-02-13 20:59  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2006-05-15 11:28  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/mapreduce.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/mapreduce.scm
new file mode 100644
index 0000000..98c5c47
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/mapreduce.scm
@@ -0,0 +1,201 @@
+;;; Non-parallel pseudo-mapreduce
+
+; Here's what it ISN'T (but sort of is conceptually):
+;
+; (define (mapreduce mapper reducer base-case data)
+;    (accumulate reducer base-case (map mapper data)))
+
+;; key-value pair ADT
+
+(define make-kv-pair cons)
+(define kv-key car)
+(define kv-value cdr)
+
+;; Reminder: an association list (a-list) is a list of key-value pairs.
+
+; So the parallel version has THREE phases, not just the two in its name:
+
+(define (mapreduce mapper reducer base-case data)   ; handwavy approximation
+  (GROUPREDUCE reducer base-case
+	       (SORT-INTO-BUCKETS (MAP mapper data))))
+
+;; Instead of one call to MAPREDUCE, we separate out the stages, using
+;; plain old MAP and the following GROUPREDUCE:
+
+(define (groupreduce reducer base-case buckets)
+  (map (lambda (subset)
+	 (make-kv-pair
+	  (kv-key (car subset))
+	  (accumulate reducer base-case (map kv-value subset))))
+       buckets))
+
+; (Note: Sort-into-buckets is too messy for lecture, but straightforward.)
+
+;; Example 1: add grades per student.
+
+; The data.  In a parallel implementation, each midterm would be handled by
+; a separate processor; we'll just concatenate them.
+
+(define mt1 '((cs61a-xc . 27) (cs61a-ya . 40) (cs61a-xw . 35)
+	      (cs61a-xd . 38) (cs61a-yb . 29) (cs61a-xf . 32)))
+(define mt2 '((cs61a-yc . 32) (cs61a-xc . 25) (cs61a-xb . 40)
+	      (cs61a-xw . 27) (cs61a-yb . 30) (cs61a-ya . 40)))
+(define mt3 '((cs61a-xb . 32) (cs61a-xk . 34) (cs61a-yb . 30)
+	      (cs61a-ya . 40) (cs61a-xc . 28) (cs61a-xf . 33)))
+
+; >> (sort-into-buckets (append mt1 mt2 mt3))
+; >> (groupreduce + 0 (sort-into-buckets (append mt1 mt2 mt3)))
+; >> (groupreduce (lambda (new old) (+ 1 old)) 0
+;		  (sort-into-buckets (append mt1 mt2 mt3)))
+
+;; Example 2: word frequency count.
+
+; First just for one sentence:
+
+(define (wordcounts1 sent)
+  (groupreduce + 0 (sort-into-buckets (map (lambda (wd) (make-kv-pair wd 1))
+					   sent))))
+
+; >> (wordcounts1 '(cry baby cry))
+
+; Now for simulated files.
+
+;; pseudo-file ADT
+
+(define filename car)
+(define lines cdr)
+
+;; Some data (yeah, I left out some songs)
+
+(define file1 '((please please me) (i saw her standing there) (misery)
+		(anna go to him) (chains) (boys) (ask me why)
+		(please please me) (love me do) (ps i love you)
+		(baby its you) (do you want to know a secret)))
+(define file2 '((with the beatles) (it wont be long) (all ive got to do)
+		(all my loving) (dont bother me) (little child)
+		(till there was you) (roll over beethoven) (hold me tight)
+		(you really got a hold on me) (i wanna be your man)
+		(not a second time)))
+(define file3 '((a hard days night) (a hard days night) 
+		(i should have known better) (if i fell)
+		(im happy just to dance with you) (and i love her)
+		(tell me why) (cant buy me love) (any time at all)
+		(ill cry instead) (things we said today) (when i get home)
+		(you cant do that) (ill be back)))
+
+;; Mapreduce presents files to us in the form of key-value pairs in which the
+;; key is the filename and the value is one line, as a sentence.  Here we
+;; simulate that:
+
+(define (file->linelist file)
+  (map (lambda (line) (make-kv-pair (filename file) line))
+       (lines file)))
+
+; >> (file->linelist file1)
+
+(define (wordcounts files)
+  (groupreduce + 0 (sort-into-buckets
+		    (flatmap (lambda (kv-pair)
+			       (map (lambda (wd) (make-kv-pair wd 1))
+				    (kv-value kv-pair)))
+			     files))))
+
+; >> (wordcounts (append (file->linelist file1)
+;			 (file->linelist file2)
+;			 (file->linelist file3)))
+
+(define (mostfreq files)
+  (accumulate (lambda (new old)
+		(cond ((> (kv-value new) (kv-value (car old)))
+		       (list new))
+		      ((= (kv-value new) (kv-value (car old)))
+		       (cons new old))	; In case of tie, remember both.
+		      (else old)))
+	      (list (make-kv-pair 'foo 0))	; Starting value.
+	      (groupreduce + 0 (sort-into-buckets
+				(flatmap (lambda (kv-pair)
+					   (map (lambda (wd)
+						  (make-kv-pair wd 1))
+						(kv-value kv-pair)))
+					 files)))))
+
+; >> (mostfreq (append (file->linelist file1)
+;		       (file->linelist file2)
+;		       (file->linelist file3)))
+
+
+;; Example 3: Searching for a pattern.
+
+; >> (match? '(* i * her *) '(i saw her standing there))
+; >> (match? '(* i * her *) '(and i love her))
+; >> (match? '(* i * her *) '(ps i love you))
+
+(define (grep pattern files)
+  (groupreduce cons '()
+	       (sort-into-buckets
+		(flatmap (lambda (kv-pair)
+			   (if (match? pattern (kv-value kv-pair))
+			       (list kv-pair)
+			       '()))
+			 files))))
+
+; >> (grep '(* i * her *) (append (file->linelist file1)
+;				  (file->linelist file2)
+;				  (file->linelist file3)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Don't read this part, just take it on faith.
+
+(define (sort-into-buckets alist)
+  (group (sort-by-key alist)))
+
+(define (group alist)
+  (define (help in complete current)
+    (cond ((null? in)
+	   (reverse (cons (reverse current) complete)))
+	  ((null? current)
+	   (help (cdr in) complete (cons (car in) current)))
+	  ((equal? (kv-key (car in)) (kv-key (car current)))
+	   (help (cdr in) complete (cons (car in) current)))
+	  (else
+	   (help in (cons current complete) '()))))
+  (if (null? alist)
+      '()
+      (help alist '() '())))
+
+(define (sort-by-key alist)
+  (define (keyinsert pair alist)
+    (cond ((null? alist) (list pair))
+	  ((bef? (kv-key pair) (kv-key (car alist)))
+	   (cons pair alist))
+	  ((equal? (kv-key pair) (kv-key (car alist)))
+	   (cons pair alist))
+	  (else (cons (car alist) (keyinsert pair (cdr alist))))))
+  (if (null? alist)
+      '()
+      (keyinsert (car alist) (sort-by-key (cdr alist)))))
+
+(define (bef? a b)	; word or sentence version of BEFORE?
+  (cond ((word? a) (bef? (se a) b))
+	((word? b) (bef? a (se b)))
+	((empty? a) (not (empty? b)))
+	((empty? b) #f)
+	((before? (first a) (first b)) #t)
+	((equal? (first a) (first b))
+	 (bef? (bf a) (bf b)))
+	(else #f)))
+
+
+
+(define (match? pattern text)
+  (cond ((null? pattern) (null? text))
+	((null? text)
+	 (and (equal? (car pattern) '*)
+	      (match? (cdr pattern) text)))
+	((equal? (car pattern) '*)
+	 (or (match? (cdr pattern) text)
+	     (match? pattern (cdr text))))
+	((equal? (car pattern) (car text))
+	 (match? (cdr pattern) (cdr text)))
+	(else #f)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/total.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/total.scm
new file mode 100644
index 0000000..2cf3505
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.1/total.scm
@@ -0,0 +1,60 @@
+; first version -- no data abstraction
+
+(define (total-hand hand)
+  (if (empty? hand)
+      0
+      (+ (butlast (last hand))
+	 (total-hand (butlast hand)) )))
+
+
+(total-hand '(3h 10c 4d))
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; second version -- add selectors
+
+(define (total-hand hand)
+  (if (empty? hand)
+      0
+      (+ (card-rank (one-card hand))
+	 (total-hand (remaining-cards hand)) )))
+
+(define card-rank butlast)
+(define card-suit last)
+
+(define one-card last)
+(define remaining-cards butlast)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; third version -- add constructors
+
+(define (make-card rank suit)
+  (word rank (first suit)) )
+
+(define make-hand se)
+
+
+(total-hand (make-hand (make-card 3 'heart)
+		       (make-card 10 'club)
+		       (make-card 4 'diamond) ))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; fourth version -- change implementation
+
+(define (make-card rank suit)
+  (cond ((equal? suit 'heart) rank)
+	((equal? suit 'spade) (+ rank 13))
+	((equal? suit 'diamond) (+ rank 26))
+	((equal? suit 'club) (+ rank 39))
+	(else (error "say what?")) ))
+
+(define (card-rank card)
+  (remainder card 13))
+
+(define (card-suit card)
+  (nth (quotient card 13) '(heart spade diamond club)))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst.scm
new file mode 100644
index 0000000..3afbf77
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst.scm
@@ -0,0 +1,24 @@
+;;; bst.scm -- Binary Search Trees (A & S section 2.2.5)
+;;;
+
+(define (entry tree) (car tree))
+(define (left-branch tree) (cadr tree))
+(define (right-branch tree) (caddr tree))
+(define (make-tree entry left right)
+    (list entry left right))
+
+(define tree1
+    (make-tree 7
+	(make-tree 3
+	    (make-tree 1 '() '())
+	    (make-tree 5 '() '()))
+	(make-tree 9 '() (make-tree 11 '() '()))))
+
+(define (element-of-set? x set)
+    (cond
+	((null? set) #f)
+	((= x (entry set)) #t)
+	((< x (entry set))
+	    (element-of-set? x (left-branch set)))
+	((> x (entry set))
+	    (element-of-set? x (right-branch set)))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst2.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst2.scm
new file mode 100644
index 0000000..242b6f2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/bst2.scm
@@ -0,0 +1,24 @@
+;;; bst.scm -- Binary Search Trees (A & S section 2.2.5)
+;;;
+
+(define (entry tree) (cadr tree))
+(define (left-branch tree) (caddr tree))
+(define (right-branch tree) (cadddr tree))
+(define (make-tree entry left right)
+    (list 'bintree entry left right))
+
+(define tree1
+    (make-tree 7
+	(make-tree 3
+	    (make-tree 1 '() '())
+	    (make-tree 5 '() '()))
+	(make-tree 9 '() (make-tree 11 '() '()))))
+
+(define (element-of-set? x set)
+    (cond
+	((null? set) #f)
+	((= x (entry set)) #t)
+	((< x (entry set))
+	    (element-of-set? x (left-branch set)))
+	((> x (entry set))
+	    (element-of-set? x (right-branch set)))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html
new file mode 100644
index 0000000..9cf2a12
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/?C=N;O=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=A
new file mode 100644
index 0000000..9c02e75
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=A
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=D
new file mode 100644
index 0000000..38682aa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=D;O=D
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=A
new file mode 100644
index 0000000..5ea5379
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=A
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=D
new file mode 100644
index 0000000..6aebf3b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=M;O=D
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=N;O=A
new file mode 100644
index 0000000..9cf2a12
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=N;O=A
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/?C=N;O=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=A
new file mode 100644
index 0000000..2e4104a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=A
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=D
new file mode 100644
index 0000000..d98d7cb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/index.html?C=S;O=D
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="squares.scm">squares.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tdisp.scm">tdisp.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="world.scm">world.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree2.scm">tree2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">882 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/music.scm">music.scm</a>              </td><td align="right">2006-10-02 19:45  </td><td align="right">833 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree.scm">tree.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">828 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst2.scm">bst2.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">616 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">604 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree1.scm">tree1.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">520 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="print.scm">print.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">485 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tiny.scm">tiny.scm</a>               </td><td align="right">2007-10-01 15:45  </td><td align="right">453 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="search.scm">search.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">333 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree11.scm">tree11.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">235 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sentence.scm">sentence.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">161 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tree3.scm">tree3.scm</a>              </td><td align="right">2007-02-23 14:26  </td><td align="right">157 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.2/tree22.scm">tree22.scm</a>             </td><td align="right">2007-02-23 14:26  </td><td align="right">122 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/print.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/print.scm
new file mode 100644
index 0000000..23674a7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/print.scm
@@ -0,0 +1,17 @@
+(define (pre-order tree)
+  (cond ((null? tree) '())
+	(else (print (entry tree))
+	      (pre-order (left-branch tree))
+	      (pre-order (right-branch tree)) )))
+
+(define (in-order tree)
+  (cond ((null? tree) '())
+	(else (in-order (left-branch tree))
+	      (print (entry tree))
+	      (in-order (right-branch tree)) )))
+
+(define (post-order tree)
+  (cond ((null? tree) '())
+	(else (post-order (left-branch tree))
+	      (post-order (right-branch tree))
+	      (print (entry tree)) )))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/search.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/search.scm
new file mode 100644
index 0000000..fa1d291
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/search.scm
@@ -0,0 +1,13 @@
+(define (depth-first-search tree)
+  (print (datum tree))
+  (for-each depth-first-search (children tree)))
+
+(define (breadth-first-search tree)
+  (bfs-iter (list tree)))
+
+(define (bfs-iter queue)
+  (if (null? queue)
+      'done
+      (let ((task (car queue)))
+	(print (datum task))
+	(bfs-iter (append (cdr queue) (children task))))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/sentence.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/sentence.scm
new file mode 100644
index 0000000..1f32cc6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/sentence.scm
@@ -0,0 +1,10 @@
+(define (se a b)
+  (cond ((word? a) (se (list a) b))
+	((word? b) (se a (list b)))
+	(else (append a b)) ))
+
+(define (word? x)
+  (or (symbol? x) (number? x)) )
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/squares.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/squares.scm
new file mode 100644
index 0000000..0209b57
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/squares.scm
@@ -0,0 +1,52 @@
+;; Tree ADT.
+;;
+;; Representation: a tree is a pair, whose car is the datum and whose
+;; cdr is a list of the subtrees.
+
+(define make-tree cons)
+(define datum car)
+(define children cdr)
+(define empty-tree? null?)
+(define (leaf? tree)
+  (null? (children tree)))
+
+;; Example tree, using ADT, with data at nodes.
+
+(define t1 (make-tree 6
+		      (list (make-tree 2
+				       (list (make-tree 1 '())
+					     (make-tree 4 '())))
+			    (make-tree 9
+				       (list (make-tree 7 '())
+					     (make-tree 12 '()))))))
+
+;; review -- mapping over a sequence.
+
+(define (SQUARES seq)
+  (if (null? seq)
+      '()
+      (cons (SQUARE (car seq))
+	    (SQUARES (cdr seq)) )))
+
+;; Mapping over a tree -- data at all nodes
+
+(define (SQUARES tree)
+  (make-tree (SQUARE (datum tree))
+	     (map SQUARES (children tree)) ))
+
+;; mapping over tree -- data at leaves only
+
+(define (SQUARES tree)
+  (cond ((empty-tree? tree) '())
+	((leaf? tree) (make-tree (SQUARE (datum tree)) '()))
+	(else (make-tree '() (map SQUARES (children tree)))) ))
+
+;; Common alternative for mapping data at leaves only, no explicit ADT:
+
+(define (SQUARES tree)
+  (cond ((null? tree) '())
+	((not (pair? tree)) (SQUARE tree))
+	(else (cons (SQUARES (car tree))
+		    (SQUARES (cdr tree)) )) ))
+
+;; Hallmark of tree recursion: recur for both car and cdr.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tdisp.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tdisp.scm
new file mode 100644
index 0000000..3811895
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tdisp.scm
@@ -0,0 +1,44 @@
+;;; display of tree nodes
+;;; that look like (bintree value left right)
+
+(define spacebox (make-string-box " " ))
+
+(define (make-bintree-box e)
+  ;; make a box for e = (bintree val x y)
+  (let* ((val (form-box (cadr e)))
+	 (subtrees
+	  (make-hbox spacebox (map form-box (cddr e)) emptybox emptybox)))
+    (make-box  (box-width subtrees)
+	      (box-height val) ; new centerline
+	      (append (pad-lines-ctr (- (box-width subtrees) (box-width val))
+				     (box-lines val))
+		      (box-lines subtrees)))))
+    
+(put 'bintree 'box-formatter make-bintree-box)
+
+
+;;; bst.scm -- Binary Search Trees (A & S section 2.2.5) modified to have
+;;; header "bintree"
+;;;
+
+(define (entry tree) (cadr tree))
+(define (left-branch tree) (caddr tree))
+(define (right-branch tree) (cadddr tree))
+(define (make-tree entry left right)
+    (list 'bintree entry left right))
+
+(define tree1
+    (make-tree 7
+	(make-tree 3
+	    (make-tree 1 '() '())
+	    (make-tree 5 '() '()))
+	(make-tree 9 '() (make-tree 11 '() '()))))
+
+(define (element-of-set? x set)
+    (cond
+	((null? set) #f)
+	((= x (entry set)) #t)
+	((< x (entry set))
+	    (element-of-set? x (left-branch set)))
+	((> x (entry set))
+	    (element-of-set? x (right-branch set)))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree.scm
new file mode 100644
index 0000000..eec7e50
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree.scm
@@ -0,0 +1,43 @@
+;;; Implementation of tree ADT
+;;;
+;;; Data at leaves only; leaves are words.
+
+(define (make-tree datum children)
+  (cond ((null? datum) children)
+	((not (null? children)) (error "datum at branch node!"))
+	((list? datum) (error "datum must be a word!"))
+	(else datum)))
+
+(define (datum node)
+  (if (list? node)
+      '()
+      node))
+
+(define (children node)
+  (if (list? node)
+      node
+      '() ))
+
+(define (leaf? node)
+  (not (pair? node)))
+
+;; or can do:
+;; (define (leaf? node)
+;;  (null? (children node)) )
+
+;; Map a function over the data of a tree
+
+(define (treemap fn tree)
+  (cond ((null? tree) '())
+	((leaf? tree) (fn tree))
+	(else (make-tree '() (map
+			      (lambda (t) (treemap fn t))
+			      (children tree))) )))
+
+;; Sample
+
+(define (square x) (* x x))
+
+(define t1 '((1 2) 3 (4 (5 6))))
+
+(treemap square t1)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree1.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree1.scm
new file mode 100644
index 0000000..9fbfc11
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree1.scm
@@ -0,0 +1,27 @@
+;;; Trees, version 1
+;;;
+;;; Data at all nodes, no empty tree defined.
+
+(define make-tree cons)
+(define datum car)
+(define children cdr)
+
+(define (leaf? node)
+  (null? (children node)) )
+
+(define (treemap fn tree)
+  (make-tree (fn (datum tree))
+	     (map (lambda (t) (treemap fn t))
+		  (children tree) )))
+
+;; Sample
+
+(define (square x) (* x x))
+
+(define (leaves . seq)
+  (map (lambda (x) (make-tree x '())) seq))
+
+(define t1
+  (make-tree 1
+	     (list (make-tree 2 (leaves 3 4))
+		   (make-tree 5 (leaves 6 7 8)) )))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree11.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree11.scm
new file mode 100644
index 0000000..def3a03
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree11.scm
@@ -0,0 +1,9 @@
+(define (treemap fn tree)
+  (make-tree (fn (datum tree))
+	     (forest-map fn (children tree))))
+
+(define (forest-map fn forest)
+  (if (null? forest)
+      '()
+      (cons (treemap fn (car forest))
+	    (forest-map fn (cdr forest)))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree2.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree2.scm
new file mode 100644
index 0000000..2c91932
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree2.scm
@@ -0,0 +1,41 @@
+;;; Trees, version 2
+;;;
+;;; Data at leaves only, leaves are words
+
+(define (make-tree d ch)
+  (cond ((null? d) ch)
+	((null? ch) d)
+	(else (error "Data at leaves only")) ))
+
+(define (datum node)
+  (cond ((null? node) '())
+	((not (pair? node)) node)
+	(else '()) ))
+
+(define (children node)
+  (cond ((null? node) '())
+	((not (pair? node)) '())
+	(else node) ))
+
+(define (leaf? node)
+  (not (pair? node)))
+
+(define (treemap fn tree)
+  (cond ((null? tree) '())
+	((leaf? tree) (fn tree))
+	(else (map (lambda (t) (treemap fn t)) tree)) ))
+
+;; Sample
+
+(define (square x) (* x x))
+
+(define t2 '((1 2) 3 (4 (5 6))))
+
+(define t3 (make-tree '()
+		      (list (make-tree '() (list (make-tree 1 '())
+						 (make-tree 2 '())))
+			    (make-tree 3 '())
+			    (make-tree '() (list (make-tree 4 '())
+						 (make-tree '() (list (make-tree 5 '())
+								      (make-tree 6 '()))))))))
+							    	
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree3.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree3.scm
new file mode 100644
index 0000000..09f901c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/tree3.scm
@@ -0,0 +1,6 @@
+(define (deep-map fn xmas)
+  (cond ((null? xmas) '())
+	((pair? xmas)
+	 (cons (deep-map fn (car xmas))
+	       (deep-map fn (cdr xmas))))
+	(else (fn xmas))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/world.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/world.scm
new file mode 100644
index 0000000..2cb2f3f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.2/world.scm
@@ -0,0 +1,50 @@
+(define datum car)
+(define children cdr)
+(define make-tree cons)
+(define (city x) (make-tree x '()))
+(define (leaf? x) (null? (children x)))
+
+(define world
+  (make-tree
+   'earth
+   (list (make-tree
+	  'united-states
+	  (list (make-tree
+		 'california
+		 (list (city 'berkeley)
+		       (city 'san-francisco)
+		       (city 'palo-alto)
+		       (city 'oakland)))
+		(make-tree
+		 'massachusetts
+		 (list (city 'cambridge)
+		       (city 'amherst)
+		       (city 'boston)
+		       (city 'sudbury)))
+		(make-tree
+		 'new-york
+		 (list (city 'new-york)))))
+	 (make-tree
+	  'france
+	  (list (city 'paris)
+		(city 'lyon)
+		(city 'marseilles))))))
+
+(define (find-place place tree)
+  (cond ((eq? place (datum tree)) (cons (datum tree) '()))
+	((leaf? tree) '())
+	(else (let ((try (find-subtree place (children tree))))
+		(if (not (null? try))
+		    (cons (datum tree) try)
+		    '())))))
+
+(define (find-subtree place nodes)
+  (if (null? nodes)
+      '()
+      (let ((try (find-place place (car nodes))))
+	(if (not (null? try))
+	    try
+	    (find-subtree place (cdr nodes))))))
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/data.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/data.scm
new file mode 100644
index 0000000..3137436
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/data.scm
@@ -0,0 +1,78 @@
+(define (make-regular root)
+  (attach-type 'regular root))
+
+(define (make-es root)
+  (attach-type 'es root))
+
+(define (make-irreg fp sp tp)
+  (attach-type 'irreg (list fp sp tp)))
+
+(define (type thing)
+  (car thing))
+
+(define (contents thing)
+  (cdr thing))
+
+(define (attach-type type thing)
+  (cons type thing))
+
+(define (root thing)
+  thing)
+
+(define (fp thing)
+  (car thing))
+
+(define (sp thing)
+  (cadr thing))
+
+(define (tp thing)
+  (caddr thing))
+
+(define (add-s wd)
+  (word wd 's))
+
+(define (add-es wd)
+  (word wd 'es))
+
+(define eat (make-regular 'eat))
+(define drink (make-regular 'drink))
+(define go (make-es 'go))
+(define box (make-es 'box))
+(define be (make-irreg 'am 'are 'is))
+
+(define (operate op obj)
+  (let ((proc (get (type obj) op)))
+    (if (not (null? proc))
+	(proc (contents obj))
+	(error "Undefined operator" (list op obj)))))
+
+(define (fps obj) (operate 'fps obj))
+(define (sps obj) (operate 'sps obj))
+(define (tps obj) (operate 'tps obj))
+(define (fpp obj) (operate 'fpp obj))
+(define (spp obj) (operate 'spp obj))
+(define (tpp obj) (operate 'tpp obj))
+
+(put 'regular 'fps root)
+(put 'regular 'sps root)
+(put 'regular 'tps (lambda (x) (add-s (root x))))
+(put 'regular 'fpp root)
+(put 'regular 'spp root)
+(put 'regular 'tpp root)
+
+(put 'es 'fps root)
+(put 'es 'sps root)
+(put 'es 'tps (lambda (x) (add-es (root x))))
+(put 'es 'fpp root)
+(put 'es 'spp root)
+(put 'es 'tpp root)
+
+(put 'irreg 'fps fp)
+(put 'irreg 'sps sp)
+(put 'irreg 'tps tp)
+(put 'irreg 'fpp sp)
+(put 'irreg 'spp sp)
+(put 'irreg 'tpp sp)
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/geom.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/geom.scm
new file mode 100644
index 0000000..dd47bd1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/geom.scm
@@ -0,0 +1,69 @@
+(define pi 3.141592654)
+
+;; tagged data
+
+(define attach-tag cons)
+(define type-tag car)
+(define contents cdr)
+
+(define (make-square side)
+  (attach-tag 'square side))
+
+(define (make-circle radius)
+  (attach-tag 'circle radius))
+
+;; conventional style
+
+(define (area shape)
+  (cond ((eq? (type-tag shape) 'square)
+	 (* (contents shape) (contents shape)))
+	((eq? (type-tag shape) 'circle)
+	 (* pi (contents shape) (contents shape)))
+	(else (error "Unknown shape -- AREA"))))
+
+(define (perimeter shape)
+  (cond ((eq? (type-tag shape) 'square)
+	 (* 4 (contents shape)))
+	((eq? (type-tag shape) 'circle)
+	 (* 2 pi (contents shape)))
+	(else (error "Unknown shape -- PERIMETER"))))
+
+;; Data-directed programming
+
+(put 'square 'area (lambda (s) (* s s)))
+(put 'circle 'area (lambda (r) (* pi r r)))
+(put 'square 'perimeter (lambda (s) (* 4 s)))
+(put 'circle 'perimeter (lambda (r) (* 2 pi r)))
+
+(define (operate op obj)
+  (let ((proc (get (type-tag obj) op)))
+    (if proc
+	(proc (contents obj))
+	(error "Unknown operator for type"))))
+
+(define (area shape)
+  (operate 'area shape))
+
+(define (perimeter shape)
+  (operate 'perimeter shape))
+
+;; message passing
+
+(define (make-square side)
+  (lambda (message)
+    (cond ((eq? message 'area)
+	   (* side side))
+	  ((eq? message 'perimeter)
+	   (* 4 side))
+	  (else (error "Unknown message")))))
+
+(define (make-circle radius)
+  (lambda (message)
+    (cond ((eq? message 'area)
+	   (* pi radius radius))
+	  ((eq? message 'perimeter)
+	   (* 2 pi radius))
+	  (else (error "Unknown message")))))
+
+(define (operate op obj)
+  (obj op))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html
new file mode 100644
index 0000000..32b7c99
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=A
new file mode 100644
index 0000000..be6d42d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=A
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=D
new file mode 100644
index 0000000..8732d2d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=D;O=D
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=A
new file mode 100644
index 0000000..6c82bac
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=A
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=D
new file mode 100644
index 0000000..8732d2d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=M;O=D
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=N;O=D
new file mode 100644
index 0000000..8732d2d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=N;O=D
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=A
new file mode 100644
index 0000000..8611b4d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=A
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=D
new file mode 100644
index 0000000..d0eaab1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/index.html?C=S;O=D
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/2.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/2.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="trydata.scm">trydata.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="type.scm">type.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="geom.scm">geom.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="data.scm">data.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="msg.scm">msg.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/2.4/bnf">bnf</a>                    </td><td align="right">2000-05-30 12:38  </td><td align="right">852 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/msg.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/msg.scm
new file mode 100644
index 0000000..a82f298
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/msg.scm
@@ -0,0 +1,52 @@
+(define (make-regular root)
+  (lambda (msg)
+    (cond ((eq? msg 'fps) root)
+	  ((eq? msg 'sps) root)
+	  ((eq? msg 'tps) (add-s root))
+	  ((eq? msg 'fpp) root)
+	  ((eq? msg 'spp) root)
+	  ((eq? msg 'tpp) root))))
+
+(define (make-es root)
+  (lambda (msg)
+    (cond ((eq? msg 'fps) root)
+	  ((eq? msg 'sps) root)
+	  ((eq? msg 'tps) (add-es root))
+	  ((eq? msg 'fpp) root)
+	  ((eq? msg 'spp) root)
+	  ((eq? msg 'tpp) root))))
+
+(define (make-irreg fp sp tp)
+  (lambda (msg)
+    (cond ((eq? msg 'fps) fp)
+	  ((eq? msg 'sps) sp)
+	  ((eq? msg 'tps) tp)
+	  ((eq? msg 'fpp) sp)
+	  ((eq? msg 'spp) sp)
+	  ((eq? msg 'tpp) sp))))
+
+(define (operate op obj)
+  (obj op))
+
+(define (fps obj) (operate 'fps obj))
+(define (sps obj) (operate 'sps obj))
+(define (tps obj) (operate 'tps obj))
+(define (fpp obj) (operate 'fpp obj))
+(define (spp obj) (operate 'spp obj))
+(define (tpp obj) (operate 'tpp obj))
+
+
+(define (add-s wd)
+  (word wd 's))
+
+(define (add-es wd)
+  (word wd 'es))
+
+(define eat (make-regular 'eat))
+(define drink (make-regular 'drink))
+(define go (make-es 'go))
+(define box (make-es 'box))
+(define be (make-irreg 'am 'are 'is))
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/trydata.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/trydata.scm
new file mode 100644
index 0000000..f37c4a7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/trydata.scm
@@ -0,0 +1,170 @@
+~cs60a/lectures/2.3/trydata.scm
+
+ Conjugating verbs example...  notes for 29 Sept 1993
+
+We could start with
+
+(define (tps v); third person singular version of verb v
+  (cond((equal? v 'eat) 'eats)  ; he eats
+       ((equal? v 'drink) 'drinks)
+       ((equal? v 'go)  'goes)
+....
+       (else (error "unknown verb"))))
+
+We need a total of six programs. Maintaining this would be really terrible.
+
+
+Let us take a really crude first approach with tables.
+(These are sometimes referred to as properties... e.g.
+put the 'fps property of the 'eat word to ....)
+ We could do this:
+
+(put 'eat 'fps 'eat)  ; I eat    (get 'eat 'fps) --> eat
+(put 'eat 'sps 'eat)  ; You eat
+(put 'eat 'tps 'eats) ; He eats  (get 'eat 'tps) -->  eats
+(put 'eat 'fpp 'eat)  ; We eat
+(put 'eat 'spp 'eat)  ; You eat
+(put 'eat 'tps 'eat)  ; They eat
+
+;;; etc for all other verbs.
+
+then
+(define (tps verb)  (get verb 'tps))
+(define (sps verb)  (get verb 'sps)) ;etc. for 4 more
+
+The advantage here is that we can add new verbs and not rewrite programs.
+
+The problems:  this wastes a lot of table space and still not very robust.
+(tps 'nonsense) --> ()  (no error message)
+
+more robust six programs, each looking like this:
+
+(define (tps verb)(let((answer (get verb 'tps)))
+		    (if (not (null? answer)) answer
+			(error 'tps "bad verb ~s~%" verb))))
+
+Now, to reduce space consumption....
+
+solution:  group verbs by type
+                      "regular"  (just add -s in tps)  as eat, drink
+                           -es       (just add -es in tps) as go, box
+                      "irregular" (refer to list) be: (am are is are are are)
+
+Then all we have to do is say that a verb is regular, and all its forms
+are known.  We store most of the info on the TYPE not the data. Here's how:
+
+(put 'eat 'verb-type 'regular)
+
+(define (type-of-verb v) (get v 'verb-type))
+
+(put 'fps 'regular root)  ; I eat, drink
+(put 'sps 'regular root)  ; you eat, drink
+(put 'tps 'regular (lambda(x)( add-s (root x))))  ; he eats, drinks
+(put 'fpp 'regular root)  ; We eat, drink
+etc.
+
+
+Now we can write 
+
+(define (tps verb) ;; third person singular
+  (let ((proc (get (type-of-verb verb) 'tps)))
+
+   ;; either proc is ()  i.e. not found  or we can
+   ;; apply it to the root  verb:
+
+    (if (not (null? proc)) (proc verb))
+	(error 'tps "I don't know about verb ~s~% " verb))))
+
+we need a total of six such programs..
+
+...
+
+How about using manifest types?  Earlier we had proposed (see data.scm)
+that, instead of have the verb
+be just 'eat, with a property  (get 'eat 'verb-type) -->  'regular
+
+We talk about the verb as an abstraction with a type and a root,
+and in the case of an irregular verb, contents that give specific
+forms for the verb conjugation.  Although we cover it over with
+abstraction: make-verb, type, root, contents  (see data.scm)  the verbs
+look like this, if we print them as normal lisp:
+
+'(regular . eat)   (that is, (cons 'regular  'eat))
+
+and for an irregular verb we have '(irreg . (be am are is))
+  {this actually prints as (irreg be am are is) }
+
+where 
+      (contents verb) is  (cdr verb) which is either (root) or (fp sp tp)
+
+      (root (contents verb)) --> eat, drink etc.  (i.e. cdr)
+
+      (type verb) is (car verb) --> regular, irregular, -es  (i.e. car)
+
+Now with this abstraction, we have a similar program, but the
+"type" program looks at the manifest type (car) rather than in a table.
+
+(define (tps verb) ;; third person singular
+  (let ((proc (get (type verb) 'tps)))  ;; this type = car gets manifest type
+
+   ;; either proc is ()  i.e. not found  or we can
+   ;; apply it to verb:
+
+    (if (not (null? proc)) (proc verb))
+	(error 'tps "I don't know about verb ~s~% " verb)))
+
+for a total of 6 programs that are all about the same.. e.g.
+
+(define (tpp verb) ;; third person singular
+  (let ((proc (get (type verb) 'tpp)))
+    (if (not (null? proc)) (proc verb))
+	(error 'tpp "I don't know about verb ~s~% " verb)))
+
+...........
+
+Now, another simplification... Since fps, sps, tps, fpp, spp, tpp
+are all almost the same program...
+
+Why not do this: 
+
+ (define (fps verb) (operate 'fps obj))
+ (define (sps verb) (operate 'sps obj))
+ (define (tps verb) (operate 'tps obj))
+etc...
+
+where operate is
+(define (operate op obj)  ;; op is one of fps, sps, tps, fpp, spp, tpp
+  (let ((proc (get (type obj) op)))
+    (if (not (null? proc))
+        (proc (contents obj))
+        (error op "Undefined operator" (list op obj)))))
+
+;;;;;;;;;;;;;;;;
+
+;; some detailed notes on data.scm -- how lisp represents them
+
+;; notes 
+
+;; note that (cons 'a 'b)  is  (a . b)   but
+;;           (cons 'a (cons 'b ())  is (a b)  ...
+
+box -->  (es . box)
+          ^     ^
+    type- |     |-root
+
+(get 'es 'fps) --> procedure   (actually, root)
+(get 'es 'tps) --> procedure   (actually (lambda(x)(add-es (root x))))
+
+(operate 'fps box) --> ((get (type box) 'fps) then apply it to "box" --> box
+(operate 'tps box) --> ((get (type box) 'fps) then apply it to "box" --> boxes
+
+(define be (make-irreg 'am 'are 'is))
+be --> (irreg am are is)
+          ^    ^  ^   \tps
+    type- |    |  \sps
+               |-fps
+
+
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/type.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/type.scm
new file mode 100644
index 0000000..06fabeb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/2.4/type.scm
@@ -0,0 +1,83 @@
+(define (make-regular root)
+  (attach-type 'regular root))
+
+(define (make-es root)
+  (attach-type 'es root))
+
+(define (make-irreg fp sp tp)
+  (attach-type 'irreg (list fp sp tp)))
+
+(define (attach-type type contents)
+  (cons type contents))
+
+(define (type thing)
+  (car thing))
+
+(define (contents thing)
+  (cdr thing))
+
+(define (fps verb)
+  (cond ((regular? verb) (root (contents verb)))
+	((es? verb) (root (contents verb)))
+	((irreg? verb) (fp (contents verb)))))
+
+(define (sps verb)
+  (cond ((regular? verb) (root (contents verb)))
+	((es? verb) (root (contents verb)))
+	((irreg? verb) (sp (contents verb)))))
+
+(define (tps verb)
+  (cond ((regular? verb) (add-s (root (contents verb))))
+	((es? verb) (add-es (root (contents verb))))
+	((irreg? verb) (tp (contents verb)))))
+
+(define (fpp verb)
+  (cond ((regular? verb) (root (contents verb)))
+	((es? verb) (root (contents verb)))
+	((irreg? verb) (sp (contents verb)))))
+
+(define (spp verb)
+  (cond ((regular? verb) (root (contents verb)))
+	((es? verb) (root (contents verb)))
+	((irreg? verb) (sp (contents verb)))))
+
+(define (tpp verb)
+  (cond ((regular? verb) (root (contents verb)))
+	((es? verb) (root (contents verb)))
+	((irreg? verb) (sp (contents verb)))))
+
+(define (regular? verb)
+  (eq? (type verb) 'regular))
+
+(define (es? verb)
+  (eq? (type verb) 'es))
+
+(define (irreg? verb)
+  (eq? (type verb) 'irreg))
+
+(define (root verb)
+  verb)
+
+(define (fp verb)
+  (car verb))
+
+(define (sp verb)
+  (cadr verb))
+
+(define (tp verb)
+  (caddr verb))
+
+(define (add-s wd)
+  (word wd 's))
+
+(define (add-es wd)
+  (word wd 'es))
+
+(define eat (make-regular 'eat))
+(define drink (make-regular 'drink))
+(define go (make-es 'go))
+(define box (make-es 'box))
+(define be (make-irreg 'am 'are 'is))
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/count.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/count.scm
new file mode 100644
index 0000000..b68ff2d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/count.scm
@@ -0,0 +1,32 @@
+(define-class (counter)
+  (instance-vars (count 0))
+  (method (next)
+    (set! count (+ count 1))
+    count) )
+
+(define-class (counter2)
+  (instance-vars (count 0))
+  (class-vars (total 0))
+  (method (next)
+    (set! total (+ total 1))
+    (set! count (+ count 1))
+    (list count total)))
+
+(define-class (counter3)
+  (instance-vars (count 0))
+  (class-vars (total 0) (counters '()))
+  (initialize (set! counters (cons self counters)))
+  (method (next)
+    (set! total (+ total 1))
+    (set! count (+ count 1))
+    (list count total)))
+
+(define c11 (instantiate counter))
+(define c12 (instantiate counter))
+
+(define c21 (instantiate counter2))
+(define c22 (instantiate counter2))
+
+(define c31 (instantiate counter3))
+(define c32 (instantiate counter3))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/demo.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/demo.scm
new file mode 100644
index 0000000..d78ae82
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/demo.scm
@@ -0,0 +1,15 @@
+(define-class (complex real-part imag-part)
+  (method (magnitude)
+    (sqrt (+ (* real-part real-part)
+	     (* imag-part imag-part))))
+  (method (angle)
+    (atan (/ imag-part real-part))) )
+
+(define-class (counter)
+  (instance-vars (count 0))
+  (method (next)
+    (set! count (+ count 1))
+    count) )
+
+(define-class (doubler)
+  (method (say stuff) (se stuff stuff)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html
new file mode 100644
index 0000000..888468e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.0</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.0</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/?C=N;O=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">754 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="demo.scm">demo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">370 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/demo2.scm">demo2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=A
new file mode 100644
index 0000000..a956f80
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.0</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.0</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">754 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="demo.scm">demo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">370 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/demo2.scm">demo2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=D
new file mode 100644
index 0000000..ba3ef93
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=D;O=D
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.0</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.0</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/demo2.scm">demo2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="demo.scm">demo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">370 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">754 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=A
new file mode 100644
index 0000000..a085eec
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.0</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.0</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">754 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="demo.scm">demo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">370 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/demo2.scm">demo2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=D
new file mode 100644
index 0000000..ba3ef93
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=M;O=D
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.0</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.0</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/demo2.scm">demo2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="demo.scm">demo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">370 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">754 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=N;O=A
new file mode 100644
index 0000000..888468e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=N;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.0</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.0</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/?C=N;O=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">754 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="demo.scm">demo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">370 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/demo2.scm">demo2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=S;O=A
new file mode 100644
index 0000000..42472bd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.0/index.html?C=S;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.0</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.0</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/?C=S;O=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="demo.scm">demo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">370 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count.scm">count.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">754 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.0/demo2.scm">demo2.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count4.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count4.scm
new file mode 100644
index 0000000..9df6e40
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count4.scm
@@ -0,0 +1,8 @@
+(define make-count
+  (let ((glob 0))
+    (lambda ()
+      (let ((loc 0))
+        (lambda ()
+	  (set! loc (+ loc 1))
+	  (set! glob (+ glob 1))
+          (list loc glob))))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count5.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count5.scm
new file mode 100644
index 0000000..16f4a41
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/count5.scm
@@ -0,0 +1,14 @@
+(define make-count
+  (let ((glob 0))
+    (lambda ()
+      (let ((loc 0))
+        (lambda (msg)
+          (cond ((eq? msg 'local)
+                 (lambda ()
+		   (set! loc (+ loc 1))
+		   loc))
+                ((eq? msg 'global)
+                 (lambda ()
+		   (set! glob (+ glob 1))
+		   glob))
+                (else (error "No such method" msg)) ))))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/env-note b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/env-note
new file mode 100644
index 0000000..161c88e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/env-note
@@ -0,0 +1,44 @@
+            A Note on Environments, frames, bindings, etc.
+
+
+A frame is just a table.  A variable is just an ENTRY (or place) in the
+table.  E.g., if we have a frame like this one
+
+           x: 1
+           y: 2
+
+we can think of x and y as labelling the entries in the table, in which
+are written 1 and 2.  The places where 1 and 2 live are the variables.
+
+When we say that we bind or rebind the variable x, we mean that we
+create an entry for it in new frame we are using to extend the
+environment.  "set!" simply puts a new value in the table entry
+corresponding to a given name.  
+
+All this terminology may be confusing because, in the book, they tend to
+confuse variables and names.  That is, they say ``create a new binding
+for the variable x'', while it would be more accurate to say ``create a
+new place (i.e., variable) named x and give it a value''.  (Note that if
+you just do a "set!", no one (including A&S) says that we have created a
+new binding for x; rather, everyone would say that the binding has
+changed.  What's really changed is simply the value of the variable
+(i.e., the value in the place) corresponding to x in the frame; the
+association between x and this place remains unchanged.
+
+Similarly, when they say, ``the variable x is bound to 4 in this
+frame'', it would be more accurate to say ``the new variable
+corresponding to x in this frame has the value 4''.  The difference is
+that the first expression gives that impression that there is only one
+variable x, and that it is rebound each time a function is called that
+uses x as a formal parameter, whereas it is more accurate to say that
+there are many variables corresponding to x, each one created when such
+a function is called.
+
+It's important to emphasize that most of the time, the extensions to
+environments that are created are thrown away after their use, i.e.,
+when the call to the function that created them finishes.  This is
+emphatically NOT the case when the call to a function returns a newly
+created function.  That is the one instance in which a frame will
+persist, even though the function call that created it has ceased to
+exist.
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/envrules b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/envrules
new file mode 100644
index 0000000..ce2b124
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/envrules
@@ -0,0 +1,59 @@
+CS 61A                Environment Model of Evaluation
+
+Every expression is either atomic or compound.
+
+At any time there is a CURRENT FRAME, initially the global frame.
+
+1.  atomic expressions
+
+    (a)  Numbers, strings, #T, and #F are self-evaluating.
+
+    (b)  If the expression is a symbol, find the FIRST AVAILABLE binding.
+         (That is, look in the current frame; if not found there, look in
+         the frame "behind" the current frame; and so on until the global
+         frame is reached.)
+
+2.  Compound expressions
+
+If the car of the expression is a symbol that names a special form, then
+follow its rules (2(b) below).  Otherwise the expression is a procedure
+invocation.
+
+    (a)  Procedure invocation
+
+        Step 1:  Evaluate all the subexpressions (using these same rules).
+        Step 2:  Apply the procedure (the value of the first subexpression)
+                 to the arguments (the values of the other subexpressions).
+
+            i.  If the procedure is compound (user-defined):
+                A.  Create a frame with the formal parameters of the procedure
+                    bound to the actual argument values.
+                B.  Extend the procedure's defining environment with this
+                    new frame.
+                C.  Evaluate the procedure body, using the new frame as
+                    the current frame.
+
+                *** ONLY COMPOUND PROCEDURE INVOCATION CREATES A FRAME ***
+
+           ii.  If the procedure is primitive:
+                        Apply it by magic.
+
+    (b)  Special forms
+
+        i.  LAMBDA creates a procedure.  The left circle points to the text
+            of the lambda expression; the right circle points to the
+            defining environment, i.e., to the current environment at the
+            time the lambda is seen.
+
+            *** ONLY LAMBDA CREATES A PROCEDURE ***
+
+       ii.  DEFINE adds a NEW binding to the CURRENT FRAME.
+
+      iii.  SET! changes the FIRST AVAILABLE binding (see 1(b) for the
+            definition of "first available").
+
+       iv.  LET = LAMBDA (2(b)i) + invocation (2(a))
+
+        v.  (define (...) ...) = LAMBDA (2(b)i) + DEFINE (2(b)ii)
+
+       vi.  Other special forms follow their own rules (e.g. COND, IF).
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html
new file mode 100644
index 0000000..25fde3b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=A
new file mode 100644
index 0000000..d75c248
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=A
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=D
new file mode 100644
index 0000000..c405097
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=D;O=D
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=A
new file mode 100644
index 0000000..11899c1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=A
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=D
new file mode 100644
index 0000000..5dcaf88
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=M;O=D
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=A
new file mode 100644
index 0000000..25fde3b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=A
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=D
new file mode 100644
index 0000000..c405097
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=N;O=D
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=A
new file mode 100644
index 0000000..fefb49a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=A
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=D
new file mode 100644
index 0000000..ca6e276
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/index.html?C=S;O=D
@@ -0,0 +1,23 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="envrules">envrules</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="env-note">env-note</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev5.scm">prev5.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">371 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count5.scm">count5.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">356 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/prev6.scm">prev6.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">262 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prev4.scm">prev4.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">208 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.2/count6.scm">count6.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">181 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="count4.scm">count4.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">173 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/obj.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/obj.scm
new file mode 100644
index 0000000..d4a9d7a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/obj.scm
@@ -0,0 +1,279 @@
+;;; obj.scm version 4.0 5/18/2000
+;;; -- implementation of the object-oriented syntax
+;; By Matt Wright, based on a handout from MIT
+;; Revised for STk by Brian Gaeke - removed scm and procedure->macro
+
+;;; Utilities
+
+;; MAKNAM: create a new symbol whose name is the concatenation of the 
+;; names of those in the symbol list SYMBOLS.
+(define (maknam . symbols)
+  (string->symbol (apply string-append (map symbol->string symbols))))
+
+;; ASK: send a message to an object
+
+; The dot in the first line of the definition of ASK, below, makes it
+; take a variable number of arguments.  The first argument is associated
+; with the formal parameter OBJECT; the second with MESSAGE; any extra
+; actual arguments are put in a list, and that list is associated with
+; the formal parameter ARGS.  (If there are only two actual args, then
+; ARGS will be the empty list.)
+
+; APPLY takes two arguments, a procedure and a list, and applies the
+; procedure to the things in the list, which are used as actual
+; argument values.
+
+(define (ask object message . args)
+  (let ((method (object message)))
+    (if (method? method)
+	(apply method args)
+	(error "No method " message " in class " (cadr method)))))
+
+(define (no-method name)
+  (list 'no-method name))
+
+(define (no-method? x)
+  (if (pair? x)
+      (eq? (car x) 'no-method)
+      #f))
+
+(define (method? x)
+  (not (no-method? x)))
+
+
+;; INSTANTIATE and INSTANTIATE-PARENT:  Create an instance of a class
+
+; The difference is that only INSTANTIATE initializes the new object
+
+(define (instantiate class . arguments)
+  (let ((new-instance (apply (class 'instantiate) arguments)))
+    (ask new-instance 'initialize new-instance)
+    new-instance))
+
+(define (instantiate-parent class . arguments)
+  (apply (class 'instantiate) arguments))
+
+;; GET-METHOD: Send a message to several objects and return the first
+;; method found (for multiple inheritance)
+
+(define (get-method give-up-name message . objects)
+  (if (null? objects)
+      (no-method give-up-name)
+      (let ((method ((car objects) message)))
+	(if (method? method)
+	    method
+	    (apply get-method (cons give-up-name
+				    (cons message (cdr objects)) ))))))
+
+
+
+;; USUAL: Invoke a parent's method
+;; Note: The 'send-usual-to-parent method is put in automatically by
+;; define-class.
+
+(define-macro (usual . args)
+	     `(ask dispatch 'send-usual-to-parent . ,args))
+
+
+;; DEFINE-CLASS:  Create a new class.
+
+; DEFINE-CLASS is a special form.  When you type (define-class body...)
+; it's as if you typed (make-definitions (quote body...)).  In other
+; words, the argument to DEFINE-CLASS isn't evaluated.  This makes sense
+; because the argument isn't Scheme syntax, but rather is the special
+; object-oriented programming language we're defining.
+; Make-definitions transforms the OOP notation into a standard Scheme
+; expression, then uses EVAL to evaluate the result.  (You'll see EVAL
+; again in chapter 4 with the metacircular evaluator.)
+
+; When you define a class named THING, for example, two global Scheme
+; variables are created.  The variable THING has as its value the
+; procedure that represents the class.  This procedure is invoked by
+; INSTANTIATE to create instances of the class.  A second variable,
+; THING-DEFINITION, has as its value the text of the Scheme expression
+; that defines THING.  This text is used only by SHOW-CLASS, the
+; procedure that lets you examine the result of the OOP-to-Scheme
+; translation process.
+
+(define-macro (define-class . body) (make-definitions body))
+
+(define (make-definitions form)
+  (let ((definition (translate form)))
+    (eval `(define ,(maknam (class-name form) '-definition) ',definition))
+    (eval definition)
+    (list 'quote (class-name form))))
+
+(define (show-class name)
+  (eval (maknam name '-definition)) )
+
+; TRANSLATE does all the work of DEFINE-CLASS.
+; The backquote operator (`) works just like regular quote (') except
+; that expressions proceeded by a comma are evaluated.  Also, expressions
+; proceeded by ",@" evaluate to lists; the lists are inserted into the
+; text without the outermost level of parentheses.
+
+(define (translate form)
+  (cond ((null? form) (error "Define-class: empty body"))
+	((not (null? (obj-filter form (lambda (x) (not (pair? x))))))
+	 (error "Each argument to define-class must be a list"))
+	((not (null? (extra-clauses form)))
+	 (error "Unrecognized clause in define-class:" (extra-clauses form)))
+	(else 
+	 `(define ,(class-name form)
+	    (let ,(class-var-bindings form)
+	      (lambda (class-message)
+		(cond
+		 ,@(class-variable-methods form)
+		 ((eq? class-message 'instantiate)
+		  (lambda ,(instantiation-vars form)
+		    (let ((self '())
+			  ,@(parent-let-list form)
+			  ,@(instance-vars-let-list form))
+		      (define (dispatch message)
+			(cond
+			 ,(init-clause form)
+			 ,(usual-clause form)
+			 ,@(method-clauses form)
+			 ,@(local-variable-methods form)
+			 ,(else-clause form) ))
+		      dispatch )))
+		 (else (error "Bad message to class" class-message)) )))))))
+
+(define *legal-clauses*
+  '(instance-vars class-vars method default-method parent initialize))
+
+(define (extra-clauses form)
+  (obj-filter (cdr form)
+	      (lambda (x) (null? (member (car x) *legal-clauses*)))))
+
+(define class-name caar)
+
+(define (class-var-bindings form)
+  (let ((classvar-clause (find-a-clause 'class-vars form)))
+    (if (null? classvar-clause)
+	'()
+	(cdr classvar-clause) )))
+
+(define instantiation-vars cdar)
+
+(define (parent-let-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (parent-and-args)
+	       (list (maknam 'my- (car parent-and-args))
+		     (cons 'instantiate-parent parent-and-args)))
+	     (cdr parent-clause)))))
+
+(define (instance-vars-let-list form)
+  (let ((instance-vars-clause (find-a-clause 'instance-vars form)))
+    (if (null? instance-vars-clause)
+	'()
+	(cdr instance-vars-clause))))
+
+(define (init-clause form)
+  (define (parent-initialization form)
+    (let ((parent-clause (find-a-clause 'parent form)))
+      (if (null? parent-clause)
+	  '()
+	  (map
+	   (lambda (parent-and-args)
+	     `(ask ,(maknam 'my- (car parent-and-args)) 'initialize self) )
+	   (cdr parent-clause) ))))
+  (define (my-initialization form)
+    (let ((init-clause (find-a-clause 'initialize form)))
+      (if (null? init-clause) '()
+	  (cdr init-clause))))
+  (define (init-body form)
+    (append (parent-initialization form)
+	    (my-initialization form) ))
+
+  `((eq? message 'initialize)
+    (lambda (value-for-self)
+      (set! self value-for-self)
+      ,@(init-body form) )))
+
+(define (variable-list var-type form)
+  (let ((clause (find-a-clause var-type form)))
+    (if (null? clause)
+	'()
+	(map car (cdr clause)) )))
+
+(define (class-variable-methods form)
+  (cons `((eq? class-message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? class-message ',variable) (lambda () ,variable)))
+	     (variable-list 'class-vars form))))
+
+(define (local-variable-methods form)
+  (cons `((eq? message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? message ',variable) (lambda () ,variable)))
+	     (append (cdr (car form))
+		     (variable-list 'instance-vars form)
+		     (variable-list 'class-vars form)))))
+
+(define (method-clauses form)
+  (map
+   (lambda (method-defn)
+     (let ((this-message (car (cadr method-defn)))
+	   (args (cdr (cadr method-defn)))
+	   (body (cddr method-defn)))
+       `((eq? message ',this-message)
+	 (lambda ,args ,@body))))
+   (obj-filter (cdr form) (lambda (x) (eq? (car x) 'method))) ))
+
+(define (parent-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (class) (maknam 'my- class))
+	     (map car (cdr parent-clause))))))
+
+(define (usual-clause form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	`((eq? message 'send-usual-to-parent)
+	  (error "Can't use USUAL without a parent." ',(class-name form)))
+	`((eq? message 'send-usual-to-parent)
+	  (lambda (message . args)
+	    (let ((method (get-method ',(class-name form)
+				      message
+				      ,@(parent-list form))))
+	      (if (method? method)
+		  (apply method args)
+		  (error "No USUAL method" message ',(class-name form)) )))))))
+
+(define (else-clause form)
+  (let ((parent-clause (find-a-clause 'parent form))
+	(default-method (find-a-clause 'default-method form)))
+    (cond
+     ((and (null? parent-clause) (null? default-method))
+      `(else (no-method ',(class-name form))))
+     ((null? parent-clause)
+      `(else (lambda args ,@(cdr default-method))))
+     ((null? default-method)
+      `(else (get-method ',(class-name form) message ,@(parent-list form))) )
+     (else
+      `(else (let ((method (get-method ',(class-name form)
+				       message
+				       ,@(parent-list form))))
+	       (if (method? method)
+		   method
+		   (lambda args ,@(cdr default-method)) )))))))
+
+(define (find-a-clause clause-name form)
+  (let ((clauses (obj-filter (cdr form)
+			     (lambda (x) (eq? (car x) clause-name)))))
+    (cond ((null? clauses) '())
+	  ((null? (cdr clauses)) (car clauses))
+	  (else (error "Error in define-class: too many "
+		       clause-name "clauses.")) )))
+
+(define (obj-filter l pred)
+  (cond ((null? l) '())
+	((pred (car l))
+	 (cons (car l) (obj-filter (cdr l) pred)))
+	(else (obj-filter (cdr l) pred))))
+
+(provide "obj")
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev4.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev4.scm
new file mode 100644
index 0000000..fdb4876
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev4.scm
@@ -0,0 +1,12 @@
+(define make-previous
+  (let ((glob 'first-time))
+    (lambda ()
+      (let ((old 'first-time))
+	(lambda (arg)
+	  (let ((result (list old glob)))
+	    (set! old arg)
+	    (set! glob arg)
+	    result))))))
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev5.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev5.scm
new file mode 100644
index 0000000..b2a6c27
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.2/prev5.scm
@@ -0,0 +1,19 @@
+(define make-previous
+  (let ((glob 'first-time))
+    (lambda ()
+      (let ((old 'first-time))
+	(lambda (msg)
+	  (cond ((eq? msg 'local)
+		 (lambda (arg)
+		   (let ((result old))
+		     (set! old arg)
+		     result)))
+		((eq? msg 'global)
+		 (lambda (arg)
+		   (let ((result glob))
+		     (set! glob arg)
+		     result)))
+		(else (error "No such method" msg)) ))))))
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/bad-serial.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/bad-serial.scm
new file mode 100644
index 0000000..1d6a486
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/bad-serial.scm
@@ -0,0 +1,13 @@
+(define (make-serializer)
+  (let ((in-use? #f))
+    (lambda (proc)
+      (define (protected-proc . args)
+	(if in-use?
+	    (begin
+	     (wait-a-while)                 ; Never mind how to do that.
+	     (apply protected-proc args))   ; Try again.
+	    (begin
+	     (set! in-use? #t)        ; Don't let anyone else in.
+	     (apply proc args)        ; Call the original procedure.
+	     (set! in-use? #f))))     ; Finished, let others in again.
+      protected-proc)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html
new file mode 100644
index 0000000..86afc8c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=A
new file mode 100644
index 0000000..9830fe9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=A
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=D
new file mode 100644
index 0000000..5403dca
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=D;O=D
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=A
new file mode 100644
index 0000000..6a3a870
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=A
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=D
new file mode 100644
index 0000000..9f0f7e4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=M;O=D
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=N;O=D
new file mode 100644
index 0000000..5403dca
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=N;O=D
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=A
new file mode 100644
index 0000000..5c3d264
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=A
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=D
new file mode 100644
index 0000000..5403dca
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.4/index.html?C=S;O=D
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.4</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.4</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.4/dining.scm">dining.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">526 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="bad-serial.scm">bad-serial.scm</a>         </td><td align="right">2005-04-11 00:50  </td><td align="right">467 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/fib.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/fib.scm
new file mode 100644
index 0000000..6a2d8e6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/fib.scm
@@ -0,0 +1,12 @@
+(define (add-streams s1 s2)(cond((stream-null? s1)s2)
+				((stream-null? s2)s1)
+				(else (cons-stream (+ (stream-car s1)
+						(stream-car s2))
+					     (add-streams
+					      (stream-cdr s1)
+					      (stream-cdr s2))))))
+
+(define fibs (cons-stream 0
+			  (cons-stream 1
+				       (add-streams (stream-cdr fibs)
+						    fibs))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html
new file mode 100644
index 0000000..ec3d559
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=A
new file mode 100644
index 0000000..3ef51c8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=A
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=D
new file mode 100644
index 0000000..5905ef1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=D;O=D
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=A
new file mode 100644
index 0000000..bd4b52a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=A
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=D
new file mode 100644
index 0000000..5905ef1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=M;O=D
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=A
new file mode 100644
index 0000000..ec3d559
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=A
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=D
new file mode 100644
index 0000000..5905ef1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=N;O=D
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=S;O=A
new file mode 100644
index 0000000..0f46813
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/index.html?C=S;O=A
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/3.5</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/3.5</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/?C=S;O=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/ints-from">ints-from</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right"> 76 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime0.scm">prime0.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">166 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream0.scm">stream0.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">171 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="sieve.scm">sieve.scm</a>              </td><td align="right">2003-04-25 12:52  </td><td align="right">268 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fib.scm">fib.scm</a>                </td><td align="right">2003-04-25 12:52  </td><td align="right">337 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/why-streams">why-streams</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">381 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="show-stream.scm">show-stream.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">390 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime1.scm">prime1.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">445 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream1.scm">stream1.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">462 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream2.scm">stream2.scm</a>            </td><td align="right">2003-04-25 12:52  </td><td align="right">508 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prime2.scm">prime2.scm</a>             </td><td align="right">2003-04-25 12:52  </td><td align="right">640 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.5/stream-memo.scm">stream-memo.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="stream-pack.scm">stream-pack.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="streamstate.scm">streamstate.scm</a>        </td><td align="right">2003-04-25 12:52  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime0.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime0.scm
new file mode 100644
index 0000000..ed84766
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime0.scm
@@ -0,0 +1,8 @@
+
+
+(define (prime? n)
+  (define (iter factor)
+    (cond ((= factor n) #t)
+          ((= (remainder n factor) 0) #f)
+          (else (iter (+ factor 1)))))
+  (iter 2))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime1.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime1.scm
new file mode 100644
index 0000000..35f7a70
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime1.scm
@@ -0,0 +1,22 @@
+
+
+(define (prime? n)
+  (null? (filter (lambda (x) (= (remainder n x) 0))
+                 (range 2 (- n 1)))))
+
+(define (range from to)
+  (if (> from to)
+      '()
+      (cons from (range (+ from 1) to))))
+
+
+(define (filter predicate data)
+  (cond ((null? data) '())
+        ((predicate (car data))
+         (cons (car data) (filter predicate (cdr data))))
+        (else (filter predicate (cdr data)))))
+
+
+
+
+;; try (filter prime? (range 2 100))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime2.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime2.scm
new file mode 100644
index 0000000..4df4e92
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/prime2.scm
@@ -0,0 +1,22 @@
+
+
+(define (stream-prime? n)
+  (stream-null? (stream-filter (lambda (x) (= (remainder n x) 0))
+			       (stream-range 2 (- n 1)))))
+
+(define (stream-range from to)
+  (if (> from to)
+      the-empty-stream
+      (cons-stream from (stream-range (+ from 1) to))))
+
+(define (stream-filter predicate data)
+  (cond ((stream-null? data) the-empty-stream)
+        ((predicate (stream-car data))
+         (cons-stream (stream-car data)
+		      (stream-filter predicate (stream-cdr data))))
+        (else (stream-filter predicate (stream-cdr data)))))
+
+;; try (define s (stream-filter stream-prime? (stream-range 2 100)))
+;; s
+;; (display-stream s)
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/show-stream.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/show-stream.scm
new file mode 100644
index 0000000..e9d42f3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/show-stream.scm
@@ -0,0 +1,15 @@
+
+(define (show-stream strm . args) ;2nd arg is how many
+  (if (null? args)
+      (ss1 strm 10 10)
+      (ss1 strm (car args) (car args))))
+
+(define ss show-stream)
+
+(define (ss1 strm this all)
+  (cond ((null? strm) '())
+	((= this 0) '(...))
+	((and (pair? strm) (procedure? (cdr strm)))
+	 (cons (ss1 (stream-car strm) all all)
+	       (ss1 (stream-cdr strm) (- this 1) all)))
+	(else strm)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/sieve.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/sieve.scm
new file mode 100644
index 0000000..bff92b3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/sieve.scm
@@ -0,0 +1,10 @@
+(define (divisible? x y) (= (remainder x y) 0))
+
+(define (sieve stream)
+  (cons-stream
+   (stream-car stream)
+   (sieve (stream-filter
+	   (lambda (x) (not (divisible? x (stream-car stream))))
+	   (stream-cdr stream)))))
+
+(define primes (sieve (stream-cdr integers)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream-pack.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream-pack.scm
new file mode 100644
index 0000000..826b06c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream-pack.scm
@@ -0,0 +1,52 @@
+;; review notes for 4/10/98
+;;can you deadlock on this?
+
+(parallel-execute  (exchange-account a b)(exchange-account a c)) ?
+
+
+what do these do:
+
+(define a (cons-stream a a))
+
+(define a (cons-stream 'a a))
+(show-stream a)
+(define a (cons-stream a a))
+(show-stream a)
+
+
+what is the difference between eq?  and equal?
+
+(eq? () '())
+
+
+(pair? ())
+
+;; pack a finite stream with infinite newelements on end
+
+(define (pack-stream s newelement)
+  (if (stream-null? s)
+     (cons-stream newelement(pack-stream s newelement))
+    (cons-stream (stream-car s) (pack-stream (stream-cdr s) newelement))))
+
+;or (buggy)
+
+(define (pack-stream s newelement)
+  (if (stream-null? s) (let ((a (cons-stream newelement a))) a)
+    (cons-stream (stream-car s) (pack-stream (stream-cdr s) newelement))))
+
+
+; or (still buggy)
+
+(define (pack-stream s newelement)
+  (if (stream-null? s) (let ((a nil))
+                             (set! a (cons-stream newelement a)))
+    (cons-stream (stream-car s) (pack-stream (stream-cdr s) newelement))))
+; ok
+
+(define (pack-stream s newelement)
+  (if (stream-null? s) (let ((a nil))
+                         (set! a (cons-stream newelement a))
+                         a)
+      (cons-stream (stream-car s) (pack-stream (stream-cdr s) newelement))))
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream0.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream0.scm
new file mode 100644
index 0000000..d6f15da
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream0.scm
@@ -0,0 +1,6 @@
+(define (perfect? n)
+  (define (iter i sum)
+    (cond ((= i n) sum)
+	  ((= 0 (remainder n i)) (iter (1+ i) (+ sum i)))
+	  (else (iter (1+ i) sum)) ))
+  (= n (iter 1 0)) )
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream1.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream1.scm
new file mode 100644
index 0000000..58c7061
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream1.scm
@@ -0,0 +1,20 @@
+(define (filter f lis)
+  (cond ((null? lis) nil)
+	((f (car lis)) (cons (car lis) (filter f (cdr lis))))
+	(else (filter f (cdr lis))) ))
+
+(define (accumulate f start lis)
+  (if (null? lis)
+      start
+      (f (car lis) (accumulate f start (cdr lis))) ))
+
+(define (range a b)
+  (if (> a b)
+      nil
+      (cons a (range (1+ a) b)) ))
+
+(define (perfect? n)
+  (= n (accumulate +
+		   0
+		   (filter (lambda (x) (= 0 (remainder n x)))
+			   (range 1 (-1+ n)) ) )))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream2.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream2.scm
new file mode 100644
index 0000000..75258b0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/stream2.scm
@@ -0,0 +1,20 @@
+(define (filter f strm)
+  (cond ((empty-stream? strm) nil)
+	((f (head strm)) (cons-stream (head strm) (filter f (tail strm))))
+	(else (filter f (tail strm))) ))
+
+(define (accumulate f start strm)
+  (if (empty-stream? strm)
+      start
+      (f (head strm) (accumulate f start (tail strm))) ))
+
+(define (range a b)
+  (if (> a b)
+      nil
+      (cons-stream a (range (1+ a) b)) ))
+
+(define (perfect? n)
+  (= n (accumulate +
+		   0
+		   (filter (lambda (x) (= 0 (remainder n x)))
+			   (range 1 (-1+ n)) ) )))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/streamstate.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/streamstate.scm
new file mode 100644
index 0000000..a514f90
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/3.5/streamstate.scm
@@ -0,0 +1,87 @@
+(define (stream-withdraw balance amount-stream)
+    (cons-stream balance
+                 (stream-withdraw (- balance
+                                     (head amount-stream))
+                                  (tail amount-stream))))
+
+;; a withdrawal stream
+
+(define (wd-stream)(cons-stream (prompt)(wd-stream)))
+
+(define (prompt)(print "new withdrawal -->")(read))
+
+(define mywd (wd-stream))
+
+;;; insert a few values by  (tail(tail (tail mywd)))
+
+;;; (stream-withdraw  100 mywd)
+
+
+(define (for-each-stream proc stream)
+  (if (empty-stream? stream)
+      'done
+      (sequence (proc (head stream))
+                (for-each-stream proc (tail stream)))))
+
+;; print a (finite) stream.
+
+(define (print-stream s)
+  (for-each-stream print s))
+
+(define ps print-stream)
+
+(define (for-each-stream-count  proc stream n)
+  (if (or (= n 0) (empty-stream? stream))
+      'done
+      (sequence (proc (head stream))
+                (for-each-stream-count  proc (tail stream) (+ n -1)))))
+
+(define (psn s n)(for-each-stream-count print s n))
+
+;;;;;;;;;;;;;;;;
+
+;;; TAYLOR SERIES
+;;;  (we could use abstraction better here...)
+;;; a term in a series looks like  (a b) , a list
+;;; signifying  b*x^a
+
+;;   here is the number 1 = 1*x^0
+
+ (define unit-term (list 0 1))   ;; could be (make-term 0 1)
+
+(define (integrate-series series)
+  (map integrate-term series))
+
+;;; to integrate b*x^a with respect to x, produce
+;;; (b/(a+1)*x^(a+1)
+
+(define (integrate-term tt)
+    (let ((new-order (1+ (car tt))))   ;; could use (order tt) instead of car
+      (list new-order (/ (cadr tt) new-order)))) ;; make-term; coeff;
+
+(define exp-series (cons-stream unit-term (integrate-series exp-series)))
+
+;; (- integrate sin) to get cos  (also, cos(0) = 1) 
+
+;; cos x is 1 -x^2/2 + x^4/4! + ..
+
+;;          1 -0.5 x^2 + 0.04166 x^4+ ...
+
+(define cos-series (cons-stream unit-term
+				  (neg-st    (integrate-series sin-series))))
+
+
+;; we  need to compute the negative of a "taylor series stream"
+
+(define (neg-st s)(if (empty-stream? s) s
+		      (cons-stream (list (car (head s))(- (cadr (head s))))
+				   (neg-st (tail s)))))
+
+;;  integrate cos to get sin
+
+(define sin-series  (integrate-series cos-series))
+
+;;; sin x   = x  -x^3/3!+ x^5/5! + ...
+;;;           x - 0.166 x^3 + 0.0083*x^5 + ...
+
+;;(psn sin-series 5)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html
new file mode 100644
index 0000000..369dec7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=A
new file mode 100644
index 0000000..7acbaf4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=D
new file mode 100644
index 0000000..850f1d1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=D;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=A
new file mode 100644
index 0000000..3bfcada
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=D
new file mode 100644
index 0000000..850f1d1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=M;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=A
new file mode 100644
index 0000000..369dec7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=D
new file mode 100644
index 0000000..850f1d1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=N;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=A
new file mode 100644
index 0000000..6092a5a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=A
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=D
new file mode 100644
index 0000000..17bc0d3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/index.html?C=S;O=D
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/4.2</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/4.2</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.2/old-MCE-solutions">old-MCE-solutions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">7.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="old-MCE-questions">old-MCE-questions</a>      </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pairs.scm">pairs.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="while.scm">while.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">416 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/old-MCE-questions b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/old-MCE-questions
new file mode 100644
index 0000000..d00120f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/old-MCE-questions
@@ -0,0 +1,144 @@
+Here are several metacircular evaluator questions from past 60A final exams.
+For each of these questions, you should go through these three steps:
+
+(a) Is this primarily a change to eval (based on the current environment) or
+    to apply (based on a procedure's execution environment)?
+
+(b) Which specific subprocedure should be changed?
+
+(c) Then write the code.
+
+The first two steps are most important!
+
+--------------------------------------------------
+
+1.  Modify the metacircular evaluator to accept a new kind of cond clause,
+as explained below.  We are interested in the situation in which some
+expression is computed as the predicate part of a clause, and then if that
+expression is non-nil, the same expression is part of the desired return
+value.  For example, suppose we have an association list like
+
+((I . 1) (V . 5) (X . 10) (L . 50) (C . 100) (D . 500) (M . 1000))
+
+The tool we have for looking things up in such a list is assq, which
+returns the entire pair whose car matches its argument:
+
+> (assq 'L roman-number-list)
+(L . 50)
+
+Suppose we want to find the numeric value for a given letter.  We could
+define the following procedure:
+
+(define (value letter)
+  (cond ((assq letter roman-number-list)
+         (cdr (assq letter roman-number-list)))
+        (else nil)))
+
+but this involves computing the call to assq twice.  Alternatively,
+we could use a let outside the cond, but that's awkward if
+the cond has several clauses and only one requires this value.
+For example, using a let would be tricky if the example were
+
+(define (value letter-or-number)
+  (cond ((number? letter-or-number) letter-or-number)
+        ((assq letter-or-number roman-number-list)
+         (cdr (assq letter-or-number roman-number-list)))
+        (else nil)))
+
+Here is how this would look using the new syntax you are going to invent:
+
+(define (value letter-or-number)
+  (cond ((number? letter-or-number) letter-or-number)
+        ((assq letter-or-number roman-number-list) => cdr)
+        (else nil)))
+
+The first and third clauses are unchanged.  The second clause uses the new
+syntax.  It has exactly three elements; the second of those three is the
+keyword => to indicate the use of this syntax, and the third is an
+expression whose value is a one-argument procedure (the symbol cdr).  If the
+value of the first expression is non-nil, then cond should evaluate the
+third element and apply that function to the value of the first element.
+
+
+
+2. (This is the one we did in class.)
+
+(a) Modify the metacircular evaluator so that it always evaluates
+the arguments in a procedure call from left to right, regardless
+of the order of evaluation in the underlying Scheme.
+
+(b) Does your modified evaluator always evaluate the procedure
+expression before it evaluates the argument expressions, regardless
+of the underlying Scheme?  For example, in evaluating the expression
+
+(foo a b)
+
+will your evaluator always look up FOO before looking up A?  Explain
+why or why not.
+
+(c) Show an example interaction with Scheme in which the result of the
+interaction depends on whether or not the procedure expression is evaluated
+before the argument expressions.
+
+
+
+3. Modify the metacircular evaluator to allow type-checking of arguments to
+procedures.  Here is how the feature should work.  When a new procedure is
+defined, a formal parameter can be either a symbol as usual or else a list
+of two elements.  In this case, the second element is a symbol, the name of
+the formal parameter.  The first element is an expression whose value is
+a predicate function.  That function should return #t if the argument
+is valid.  For example, here is a procedure foo that has type-checked
+parameters num and list:
+
+> (define (foo (integer? num) ((lambda (x) (not (null? x))) list))
+    (nth num list))
+FOO
+> (foo 3 '(a b c d e))
+C
+> (foo 3.5 '(a b c d e))
+Error: wrong argument type -- 3.5
+> (foo 2 '())
+Error: wrong argument type -- ()
+
+In this example we define a procedure foo with two formal parameters, named
+num and list.  When foo is invoked, the evaluator will check to see that the
+first actual argument is an integer and that the second actual argument is
+not empty.  The expression whose value is the desired predicate function
+should be evaluated with respect to foo's defining environment.
+
+
+
+4.  Suppose you have a procedure that takes several arguments, e.g.,
+
+(define (foo a b c d e f) ...)
+
+Now you want to invoke this procedure.  You are providing values explicitly
+for the parameters a and b, but you have the remaining arguments in a list.
+If you had all the arguments in a list, you could say
+
+(apply foo arglist)
+
+but instead you have to say something awkward like
+
+(apply foo (cons a-value (cons b-value arglist)))
+
+We'd like to invent a new notation, allowing you to invoke the procedure
+by saying
+
+(foo a-value b-value . arglist)
+
+In this notation, arglist must be a symbol whose value is a list.  Your job
+is to modify the metacircular evaluator to accept this notation.
+
+NOTE 1:  Although this looks similar to the notation
+
+(define (foo a b . args) ...)
+
+used to create a procedure that accepts variable numbers of arguments, it's
+not the same feature.  This time we're talking about the invocation
+of the procedure, not the definition of the procedure.
+
+NOTE 2:  You should assume that the (read) procedure has already taken
+care of translating the dot notation into an improper list, which is what
+you'll see as the expression to be evaluated.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/pairs.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/pairs.scm
new file mode 100644
index 0000000..37e3a98
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/pairs.scm
@@ -0,0 +1,40 @@
+;;; The integers.
+
+(define (ints-from n)
+  (cons-stream n (ints-from (+ n 1))))
+
+(define integers (ints-from 1))
+
+;;; pairs of integers, A&S version
+
+(define (pairs s t)
+  (cons-stream
+   (list (stream-car s) (stream-car t))
+   (interleave
+    (stream-map (lambda (x) (list (stream-car s) x))
+		(stream-cdr t))
+    (pairs (stream-cdr s) (stream-cdr t)))))
+
+;;; Louis Reasoner's version, ex. 3.68
+
+(define (louis-pairs s t)
+  (interleave
+   (stream-map (lambda (x) (list (stream-car s) x))
+	       t)
+   (louis-pairs (stream-cdr s) (stream-cdr t))))
+
+;;; Fixing Louis's version with explicit DELAY and FORCE
+
+(define (fixed-pairs s t)
+  (interleave-delayed
+   (stream-map (lambda (x) (list (stream-car s) x))
+	       t)
+   (delay (fixed-pairs (stream-cdr s) (stream-cdr t)))))
+
+(define (interleave-delayed s1 delayed-s2)
+  (if (stream-null? s1)
+      (force delayed-s2)
+      (cons-stream (stream-car s1)
+                   (interleave-delayed (force delayed-s2)
+                                       (delay (stream-cdr s1))))))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/while.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/while.scm
new file mode 100644
index 0000000..640812b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/4.2/while.scm
@@ -0,0 +1,17 @@
+ (define (while a b)(if (a) (begin (force b) (while a b)) 'done))
+
+ (define (while a b)(if (a) (begin (b) (while a b)) 'done))
+
+(let ((x 10))
+(while (lambda() (> x 0)) (lambda()(display x)(set! x (- x 1))))) ;works
+
+
+(define (while a b)(if (a) (begin (b) (while a b)))
+
+
+(let ((x 10))
+  (while (delay (> x 0))
+       (delay (begin (display x)
+		     (set! x (- x 1))))
+	  ; does not work because of memoization
+	 ))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html
new file mode 100644
index 0000000..bdc4250
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/Net</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/Net</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="stk-sockets">stk-sockets</a>            </td><td align="right">2003-01-22 15:50  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=A
new file mode 100644
index 0000000..57eebf1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=A
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/Net</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/Net</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="stk-sockets">stk-sockets</a>            </td><td align="right">2003-01-22 15:50  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=D
new file mode 100644
index 0000000..94c10eb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=M;O=D
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/Net</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/Net</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="stk-sockets">stk-sockets</a>            </td><td align="right">2003-01-22 15:50  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=N;O=D
new file mode 100644
index 0000000..94c10eb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=N;O=D
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/Net</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/Net</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="stk-sockets">stk-sockets</a>            </td><td align="right">2003-01-22 15:50  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=A
new file mode 100644
index 0000000..67d69a7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=A
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/Net</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/Net</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="stk-sockets">stk-sockets</a>            </td><td align="right">2003-01-22 15:50  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=D
new file mode 100644
index 0000000..94c10eb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/index.html?C=S;O=D
@@ -0,0 +1,15 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/Net</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/Net</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/Net/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/text.gif" alt="[TXT]"></td><td><a href="stk-sockets">stk-sockets</a>            </td><td align="right">2003-01-22 15:50  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/stk-sockets b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/stk-sockets
new file mode 100644
index 0000000..78d875d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/Net/stk-sockets
@@ -0,0 +1,164 @@
+6.23 Sockets
+
+STk defines sockets, on systems which support them, as first class objects.
+Sockets permit processes to communicate even if they are on different
+machines. Sockets are useful for creating client-server applications.
+
+(make-client-socket hostname port-number) procedure
+
+make-client-socket returns a new socket object. This socket establishes a link
+between the running application listening on port port-number of hostname.
+
+(socket? socket) procedure
+
+Returns #t if socket is a socket, otherwise returns #f.
+
+(socket-host-name socket) procedure
+
+Returns a string which contains the name of the distant host attached to
+socket. If socket has been created with make-client-socket this procedure
+returns the official name of the distant machine used for connection. If
+socket has been created with make-server-socket, this function returns the
+official name of the client connected to the socket. If no client has used yet
+the socket, this function returns #f.
+
+(socket-host-address socket) procedure
+
+Returns a string which contains the IP number of the distant host attached to
+socket. If socket has been created with make-client-socket this procedure
+returns the IP number of the distant machine used for connection. If socket
+has been created with make-server-socket, this function returns the address of
+the client connected to the socket. If no client has used yet the socket, this
+function returns #f.
+
+(socket-local-address socket) procedure
+
+Returns a string which contains the IP number of the local host attached to
+socket.
+
+(socket-port-number socket) procedure
+
+Returns the integer number of the port used for socket.
+
+(socket-input socket) procedure
+(socket-output socket) procedure 
+
+Returns the file port associated for reading or writing with the program
+connected with socket. If no connection has already been established, these
+functions return #f. The following example shows how to make a client socket.
+Here we create a socket on port 13 of the machine kaolin.unice.fr:
+
+(let ((s (make-client-so cke t "kaolin.unice.fr" 13)))
+  (format #t "Time is: ~A\\n" (read-line (socket-input s)))
+  (socket-shutdow n s))
+
+(make-server-socket) procedure
+(make-server-socket port-number) procedure 
+
+make-server-socket returns a new socket object.  If port-number is specified,
+the socket is listening on the specified port; otherwise, the communication
+port is chosen by the system.
+
+(socket-accept-connection socket) procedure 
+
+socket-accept-connection waits for a client connection on the given socket. If
+no client is already waiting for a connection, this procedure blocks its
+caller; otherwise, the first connection request on the queue of pending
+connections is connected to socket. This procedure must be called on a server
+socket created with make-server-socket. The result of socket-accept-connection
+is undefined.  The following example is a simple server which waits for a
+connection on the port 1234.  Once the connection with the distant program is
+established, we read a line on the input port associated to the socket and we
+write the length of this line on its output port. [port 13 is generally used
+for testing: making a connection to it permits to know the distant system's
+idea of the time of day.  Under Unix, you can simply connect to listening
+socket with the telnet command. With the given example, this can be achieved
+by typing the following command in a window shell: $ telnet localhost 1234]
+
+(let ((s (make-server-socket 1234)))
+  (socket-accept-connections)
+  (let ((l (read-line (socket-input s))))
+    (format (socket-output s) "Length is: ~A\\n" (string-length l))
+    (flush (socket-output s)))
+  (socket-shutdown s))
+
+(socket-shutdown socket) procedure
+(socket-shutdown socket close) procedure 
+
+Socket-shutdown shutdowns the connection associated to socket. Close is a
+boolean; it indicates if the socket must be closed or not, when the connection
+is destroyed. Closing the socket forbids further connections on the same port
+with the socket-accept-connection procedure.  Omitting a value for close
+implies the closing of socket. The result of socket-shutdown is undefined.
+The following example shows a simple server:  when there is a new connection
+on the port number 1234, the server displays the first line sent to it by the
+client, discards the others and go back waiting for further client
+connections.
+
+(let ((s (make-server-socket 1234)))
+  (let loop ()
+    (socket-accept-connections)
+    (format #t "I've read: ~A\\n" (read-line (socket-input s)))
+    (socket-shutdown s #f)
+    (loop)))
+
+(socket-down? socket) procedure 
+
+Returns #t if socket has been previously closed with socket-shutdown. It
+returns #f otherwise.
+
+(socket-dup socket) procedure
+
+Returns a copy of socket. The original and the copy socket can be used
+interchangeably. However, if a new connection is accepted on one socket, the
+characters exchanged on this socket are not visible on the other socket.
+Duplicating a socket is useful when a server must accept multiple simultaneous
+connections. The following example creates a server listening on port 1234.
+This server is duplicated and, once two clients are present, a message is sent
+on both connections.
+
+(define s1 (make-server-socket 1234)) 
+(define s2 (socket-dup s1))
+(socket-accept-connection s1) 
+(socket-accept-connection s2) ;; blocks until two clients are present
+(display "Hello,\\n" (socket-output s1))
+(display "world\\n" (socket-output s2))
+(flush (socket-output s1))
+(flush (socket-output s2))
+
+(when-socket-ready socket handler) procedure 
+(when-socket-ready socket) procedure
+
+Defines a handler for socket. The handler is a thunk which is executed when a
+connection is available on socket. If the special value #f is provided as
+handler , the current handler for socket is deleted.  If a handler is
+provided, the value returned by when-socket-ready is undefined. Otherwise, it
+returns the handler currently associated to socket.  This procedure, in
+conjunction with socket-dup permits to build multiple-clients servers which
+work asynchronously. Such a server is shown below.
+
+(define p (make-server-socket 1234))
+(when-socket-ready p
+  (let ((count 0)) 
+    (lambda ()
+      (set! count (+ count 1))
+      (register-connection (socket-dup p) count))))
+(define register-connection
+  (let ((sockets '()))
+    (lambda (s cnt)
+      ;; Accept connection
+      (socket-accept-connection s)
+      ;; Save socket somewhere to avoid GC problems
+      (set! sockets (cons s sockets))
+      ;; Create a handler for reading inputs from this new connection
+      (let ((in (socket-input s))
+	    (out (socket-output s)))
+	(when-port-readable in
+          (lambda ()
+	    (let ((l (read-line in)))
+	      (if (eof-object? l)
+		  ;; delete current handler
+		  (when-port-readable in #f)
+		  ;; Just write the line read on the socket
+		  (begin (format out "On #~A --> ~A\\n" cnt l)
+			 (flush out))))))))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/errors b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/errors
new file mode 100644
index 0000000..825b0ec
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/errors
@@ -0,0 +1,26 @@
+
+
+(define (list-of-squares nums)
+  (define (square (car nums))
+    (* (car nums) (car nums)))
+  (if (null? nums)
+      nil
+      (cons (square (car nums))
+	    (list-of-squares (cdr nums)))))
+
+
+
+
+(set! (cdr x) nil)
+
+
+
+
+
+(define (assq sym alis)
+  (cond ((null? alis) nil)
+	((eq? sym (caar alis))
+	 (car alis))
+	(else
+	 (set! alis (cdr alis))
+	 (assq sym alis))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=A
new file mode 100644
index 0000000..86de32d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=A
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=D
new file mode 100644
index 0000000..8efb5f4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=D;O=D
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=A
new file mode 100644
index 0000000..53639e1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=A
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=D
new file mode 100644
index 0000000..4e87aa1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=M;O=D
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=A
new file mode 100644
index 0000000..bc58487
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=A
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=D
new file mode 100644
index 0000000..8efb5f4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=N;O=D
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=A
new file mode 100644
index 0000000..57c84e5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=A
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=D
new file mode 100644
index 0000000..d973de5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/index.html?C=S;O=D
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/groupreduce.scm">groupreduce.scm</a>        </td><td align="right">2009-11-13 09:40  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mapreduce-demo.scm">mapreduce-demo.scm</a>     </td><td align="right">2009-11-13 09:40  </td><td align="right">2.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/summary">summary</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="errors">errors</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">364 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="unix/index.html">unix/</a>                  </td><td align="right">2020-01-22 14:08  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="Net/index.html">Net/</a>                   </td><td align="right">2003-01-22 15:50  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.4/">4.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="4.2/index.html">4.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/4.1/">4.1/</a>                   </td><td align="right">2003-05-03 09:24  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.5/index.html">3.5/</a>                   </td><td align="right">2003-04-25 12:52  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.4/index.html">3.4/</a>                   </td><td align="right">2000-07-25 13:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.3/">3.3/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.2/index.html">3.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/3.1/">3.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="3.0/index.html">3.0/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.4/index.html">2.4/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.2/index.html">2.2/</a>                   </td><td align="right">2007-10-01 15:45  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="2.1/index.html">2.1/</a>                   </td><td align="right">2007-09-21 10:05  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.3/index.html">1.3/</a>                   </td><td align="right">2001-08-13 16:27  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.2/index.html">1.2/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/folder.gif" alt="[DIR]"></td><td><a href="1.1/index.html">1.1/</a>                   </td><td align="right">2000-05-30 12:38  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/mapreduce-demo.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/mapreduce-demo.scm
new file mode 100644
index 0000000..70a0035
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/mapreduce-demo.scm
@@ -0,0 +1,61 @@
+;; CS 61A Mapreduce lecture demos
+
+;; Count how many times any word is used in the title of a Beatles song:
+
+(define (wordcount-mapper document-line-kv-pair)
+  (map (lambda (wd-in-line) (make-kv-pair wd-in-line 1))
+       (kv-value document-line-kv-pair)))
+
+(define wordcounts (mapreduce wordcount-mapper + 0 "/beatles-songs"))
+
+(ss wordcounts)
+
+;; How to examine a distributed file
+
+(ss (mapreduce list cons-stream the-empty-stream "/beatles-songs"))
+
+;; Find the most commonly used word in any Beatles title.
+;; (This actually gets the most commonly used word per initial letter;
+;; another reduction on a single machine is needed to get the absolutely
+;; most commonly used word.)
+
+(define (find-max-mapper kv-pair)
+  (list (make-kv-pair (first (kv-key kv-pair))
+		      kv-pair)))
+
+(define (find-max-reducer current so-far)
+  (if (> (kv-value current) (kv-value so-far))
+      current
+      so-far))
+
+(define frequent (mapreduce find-max-mapper find-max-reducer
+			    (make-kv-pair 'foo 0) wordcounts))
+
+(ss frequent)
+
+(stream-accumulate find-max-reducer (make-kv-pair 'foo 0)
+		   (stream-map kv-value frequent))
+
+;; Find the total number of lines of text in all of Shakespeare:
+
+(define will (mapreduce (lambda (kv-pair) (list (make-kv-pair 'line 1)))
+			+ 0 "/gutenberg/shakespeare"))
+
+
+;; This is the desired result from the modification of the above program
+;; to find line counts per play.
+
+'((a-midsummer-nights-dream . 2456) (alls-well-that-ends-well . 3231)
+  (henry-v . 3643) (loves-labours-lost . 3015) (macbeth . 2900)
+  (the-taming-of-the-shrew . 3033) (the-tempest . 2644) (king-john . 3028)
+  (the-merry-wives-of-windsor . 3152) (the-winters-tale . 3595)
+  (timon-of-athens . 2852) (troilus-and-cressida . 3983)
+  (as-you-like-it . 2974) (cymbeline . 4164) (henry-iv-1 . 3355)
+  (henry-vi-1 . 3409) (king-lear . 3985) (sonnets . 2626)
+  (the-tragedy-of-antony-and-cleopatra . 4175)
+  (the-tragedy-of-coriolanus . 4277) (the-two-gentlemen-of-verona . 2559)
+  (a-lovers-complaint . 385) (hamlet . 4553) (henry-iv-2 . 3587)
+  (henry-vi-2 . 3646) (measure-for-measure . 3119) (othello . 3897)
+  (richard-iii . 4541) (twelfth-night . 2801) (henry-vi-3 . 3524)
+  (henry-viii . 3765) (much-ado-about-nothing . 2789)
+  (romeo-and-juliet . 3620) (the-duke-of-venice . 2968))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html
new file mode 100644
index 0000000..ed3b3ad
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=A
new file mode 100644
index 0000000..c554c00
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=D
new file mode 100644
index 0000000..1683def
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=D;O=D
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=A
new file mode 100644
index 0000000..64ee941
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=D
new file mode 100644
index 0000000..1683def
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=M;O=D
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=A
new file mode 100644
index 0000000..ed3b3ad
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=D
new file mode 100644
index 0000000..1683def
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=N;O=D
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=A
new file mode 100644
index 0000000..db52bcd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=A
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=D
new file mode 100644
index 0000000..1683def
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/index.html?C=S;O=D
@@ -0,0 +1,17 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lectures/unix</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lectures/unix</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../Lectures">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="words">words</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">399K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="steps">steps</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">215 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lectures/unix/spell">spell</a>                  </td><td align="right">2003-02-14 11:00  </td><td align="right">102 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/steps b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/steps
new file mode 100644
index 0000000..605c9e7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/steps
@@ -0,0 +1,7 @@
+tr -d '.,;:"\!\[]()' < summary > nopunct
+tr '	' ' ' < nopunct > notab
+tr ' ' '\n' < notab > oneword
+tr '[A-Z]' '[a-z]' < oneword > lowcase
+sort < lowcase > sorted
+uniq < sorted > nodup
+join -v1 nodup words > errors
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/words b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/words
new file mode 100644
index 0000000..9e3eefb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lectures/unix/words
@@ -0,0 +1,45402 @@
+Aarhus
+Aaron
+Ababa
+aback
+abaft
+abandon
+abandoned
+abandoning
+abandonment
+abandons
+abase
+abased
+abasement
+abasements
+abases
+abash
+abashed
+abashes
+abashing
+abasing
+abate
+abated
+abatement
+abatements
+abater
+abates
+abating
+Abba
+abbe
+abbey
+abbeys
+abbot
+abbots
+Abbott
+abbreviate
+abbreviated
+abbreviates
+abbreviating
+abbreviation
+abbreviations
+Abby
+abdomen
+abdomens
+abdominal
+abduct
+abducted
+abduction
+abductions
+abductor
+abductors
+abducts
+Abe
+abed
+Abel
+Abelian
+Abelson
+Aberdeen
+Abernathy
+aberrant
+aberration
+aberrations
+abet
+abets
+abetted
+abetter
+abetting
+abeyance
+abhor
+abhorred
+abhorrent
+abhorrer
+abhorring
+abhors
+abide
+abided
+abides
+abiding
+Abidjan
+Abigail
+Abilene
+abilities
+ability
+abject
+abjection
+abjections
+abjectly
+abjectness
+abjure
+abjured
+abjures
+abjuring
+ablate
+ablated
+ablates
+ablating
+ablation
+ablative
+ablaze
+able
+abler
+ablest
+ably
+Abner
+abnormal
+abnormalities
+abnormality
+abnormally
+Abo
+aboard
+abode
+abodes
+abolish
+abolished
+abolisher
+abolishers
+abolishes
+abolishing
+abolishment
+abolishments
+abolition
+abolitionist
+abolitionists
+abominable
+abominate
+aboriginal
+aborigine
+aborigines
+abort
+aborted
+aborting
+abortion
+abortions
+abortive
+abortively
+aborts
+Abos
+abound
+abounded
+abounding
+abounds
+about
+above
+aboveboard
+aboveground
+abovementioned
+abrade
+abraded
+abrades
+abrading
+Abraham
+Abram
+Abrams
+Abramson
+abrasion
+abrasions
+abrasive
+abreaction
+abreactions
+abreast
+abridge
+abridged
+abridges
+abridging
+abridgment
+abroad
+abrogate
+abrogated
+abrogates
+abrogating
+abrupt
+abruptly
+abruptness
+abscess
+abscessed
+abscesses
+abscissa
+abscissas
+abscond
+absconded
+absconding
+absconds
+absence
+absences
+absent
+absented
+absentee
+absenteeism
+absentees
+absentia
+absenting
+absently
+absentminded
+absents
+absinthe
+absolute
+absolutely
+absoluteness
+absolutes
+absolution
+absolve
+absolved
+absolves
+absolving
+absorb
+absorbed
+absorbency
+absorbent
+absorber
+absorbing
+absorbs
+absorption
+absorptions
+absorptive
+abstain
+abstained
+abstainer
+abstaining
+abstains
+abstention
+abstentions
+abstinence
+abstract
+abstracted
+abstracting
+abstraction
+abstractionism
+abstractionist
+abstractions
+abstractly
+abstractness
+abstractor
+abstractors
+abstracts
+abstruse
+abstruseness
+absurd
+absurdities
+absurdity
+absurdly
+Abu
+abundance
+abundant
+abundantly
+abuse
+abused
+abuses
+abusing
+abusive
+abut
+abutment
+abuts
+abutted
+abutter
+abutters
+abutting
+abysmal
+abysmally
+abyss
+abysses
+Abyssinia
+Abyssinian
+Abyssinians
+acacia
+academia
+academic
+academically
+academics
+academies
+academy
+Acadia
+Acapulco
+accede
+acceded
+accedes
+accelerate
+accelerated
+accelerates
+accelerating
+acceleration
+accelerations
+accelerator
+accelerators
+accelerometer
+accelerometers
+accent
+accented
+accenting
+accents
+accentual
+accentuate
+accentuated
+accentuates
+accentuating
+accentuation
+accept
+acceptability
+acceptable
+acceptably
+acceptance
+acceptances
+accepted
+accepter
+accepters
+accepting
+acceptor
+acceptors
+accepts
+access
+accessed
+accesses
+accessibility
+accessible
+accessibly
+accessing
+accession
+accessions
+accessories
+accessors
+accessory
+accident
+accidental
+accidentally
+accidently
+accidents
+acclaim
+acclaimed
+acclaiming
+acclaims
+acclamation
+acclimate
+acclimated
+acclimates
+acclimating
+acclimatization
+acclimatized
+accolade
+accolades
+accommodate
+accommodated
+accommodates
+accommodating
+accommodation
+accommodations
+accompanied
+accompanies
+accompaniment
+accompaniments
+accompanist
+accompanists
+accompany
+accompanying
+accomplice
+accomplices
+accomplish
+accomplished
+accomplisher
+accomplishers
+accomplishes
+accomplishing
+accomplishment
+accomplishments
+accord
+accordance
+accorded
+accorder
+accorders
+according
+accordingly
+accordion
+accordions
+accords
+accost
+accosted
+accosting
+accosts
+account
+accountability
+accountable
+accountably
+accountancy
+accountant
+accountants
+accounted
+accounting
+accounts
+Accra
+accredit
+accreditation
+accreditations
+accredited
+accretion
+accretions
+accrue
+accrued
+accrues
+accruing
+acculturate
+acculturated
+acculturates
+acculturating
+acculturation
+accumulate
+accumulated
+accumulates
+accumulating
+accumulation
+accumulations
+accumulator
+accumulators
+accuracies
+accuracy
+accurate
+accurately
+accurateness
+accursed
+accusal
+accusation
+accusations
+accusative
+accuse
+accused
+accuser
+accuses
+accusing
+accusingly
+accustom
+accustomed
+accustoming
+accustoms
+ace
+aces
+acetate
+acetone
+acetylene
+Achaean
+Achaeans
+ache
+ached
+aches
+achievable
+achieve
+achieved
+achievement
+achievements
+achiever
+achievers
+achieves
+achieving
+Achilles
+aching
+acid
+acidic
+acidities
+acidity
+acidly
+acids
+acidulous
+Ackerman
+Ackley
+acknowledge
+acknowledgeable
+acknowledged
+acknowledgement
+acknowledgements
+acknowledger
+acknowledgers
+acknowledges
+acknowledging
+acknowledgment
+acknowledgments
+acme
+acne
+acolyte
+acolytes
+acorn
+acorns
+acoustic
+acoustical
+acoustically
+acoustician
+acoustics
+acquaint
+acquaintance
+acquaintances
+acquainted
+acquainting
+acquaints
+acquiesce
+acquiesced
+acquiescence
+acquiescent
+acquiesces
+acquiescing
+acquirable
+acquire
+acquired
+acquires
+acquiring
+acquisition
+acquisitions
+acquisitive
+acquisitiveness
+acquit
+acquits
+acquittal
+acquitted
+acquitter
+acquitting
+acre
+acreage
+acres
+acrid
+acrimonious
+acrimony
+acrobat
+acrobatic
+acrobatics
+acrobats
+acronym
+acronyms
+acropolis
+across
+acrylic
+act
+Acta
+Actaeon
+acted
+acting
+actinium
+actinometer
+actinometers
+action
+actions
+activate
+activated
+activates
+activating
+activation
+activations
+activator
+activators
+active
+actively
+activism
+activist
+activists
+activities
+activity
+Acton
+actor
+actors
+actress
+actresses
+Acts
+actual
+actualities
+actuality
+actualization
+actually
+actuals
+actuarial
+actuarially
+actuate
+actuated
+actuates
+actuating
+actuator
+actuators
+acuity
+acumen
+acute
+acutely
+acuteness
+acyclic
+acyclically
+ad
+Ada
+adage
+adages
+adagio
+adagios
+Adair
+Adam
+adamant
+adamantly
+Adams
+Adamson
+adapt
+adaptability
+adaptable
+adaptation
+adaptations
+adapted
+adapter
+adapters
+adapting
+adaptive
+adaptively
+adaptor
+adaptors
+adapts
+add
+added
+addend
+addenda
+addendum
+adder
+adders
+addict
+addicted
+addicting
+addiction
+addictions
+addicts
+adding
+Addis
+Addison
+addition
+additional
+additionally
+additions
+additive
+additives
+additivity
+address
+addressability
+addressable
+addressed
+addressee
+addressees
+addresser
+addressers
+addresses
+addressing
+Addressograph
+adds
+adduce
+adduced
+adduces
+adducible
+adducing
+adduct
+adducted
+adducting
+adduction
+adductor
+adducts
+Adelaide
+Adele
+Adelia
+Aden
+adept
+adequacies
+adequacy
+adequate
+adequately
+adhere
+adhered
+adherence
+adherent
+adherents
+adherer
+adherers
+adheres
+adhering
+adhesion
+adhesions
+adhesive
+adhesives
+adiabatic
+adiabatically
+adieu
+Adirondack
+Adirondacks
+adjacency
+adjacent
+adjective
+adjectives
+adjoin
+adjoined
+adjoining
+adjoins
+adjourn
+adjourned
+adjourning
+adjournment
+adjourns
+adjudge
+adjudged
+adjudges
+adjudging
+adjudicate
+adjudicated
+adjudicates
+adjudicating
+adjudication
+adjudications
+adjunct
+adjuncts
+adjure
+adjured
+adjures
+adjuring
+adjust
+adjustable
+adjustably
+adjusted
+adjuster
+adjusters
+adjusting
+adjustment
+adjustments
+adjustor
+adjustors
+adjusts
+adjutant
+adjutants
+Adkins
+Adler
+Adlerian
+administer
+administered
+administering
+administerings
+administers
+administrable
+administrate
+administration
+administrations
+administrative
+administratively
+administrator
+administrators
+admirable
+admirably
+admiral
+admirals
+admiralty
+admiration
+admirations
+admire
+admired
+admirer
+admirers
+admires
+admiring
+admiringly
+admissibility
+admissible
+admission
+admissions
+admit
+admits
+admittance
+admitted
+admittedly
+admitter
+admitters
+admitting
+admix
+admixed
+admixes
+admixture
+admonish
+admonished
+admonishes
+admonishing
+admonishment
+admonishments
+admonition
+admonitions
+ado
+adobe
+adolescence
+adolescent
+adolescents
+Adolph
+Adolphus
+Adonis
+adopt
+adopted
+adopter
+adopters
+adopting
+adoption
+adoptions
+adoptive
+adopts
+adorable
+adoration
+adore
+adored
+adores
+adorn
+adorned
+adornment
+adornments
+adorns
+adrenal
+adrenaline
+Adrian
+Adriatic
+Adrienne
+adrift
+adroit
+adroitness
+ads
+adsorb
+adsorbed
+adsorbing
+adsorbs
+adsorption
+adulate
+adulating
+adulation
+adult
+adulterate
+adulterated
+adulterates
+adulterating
+adulterer
+adulterers
+adulterous
+adulterously
+adultery
+adulthood
+adults
+adumbrate
+adumbrated
+adumbrates
+adumbrating
+adumbration
+advance
+advanced
+advancement
+advancements
+advances
+advancing
+advantage
+advantaged
+advantageous
+advantageously
+advantages
+advent
+adventist
+adventists
+adventitious
+adventure
+adventured
+adventurer
+adventurers
+adventures
+adventuring
+adventurous
+adverb
+adverbial
+adverbs
+adversaries
+adversary
+adverse
+adversely
+adversities
+adversity
+advert
+advertise
+advertised
+advertisement
+advertisements
+advertiser
+advertisers
+advertises
+advertising
+advice
+advisability
+advisable
+advisably
+advise
+advised
+advisedly
+advisee
+advisees
+advisement
+advisements
+adviser
+advisers
+advises
+advising
+advisor
+advisors
+advisory
+advocacy
+advocate
+advocated
+advocates
+advocating
+Aegean
+aegis
+Aeneas
+Aeneid
+Aeolus
+aerate
+aerated
+aerates
+aerating
+aeration
+aerator
+aerators
+aerial
+aerials
+aeroacoustic
+Aerobacter
+aerobic
+aerobics
+aerodynamic
+aerodynamics
+aeronautic
+aeronautical
+aeronautics
+aerosol
+aerosolize
+aerosols
+aerospace
+Aeschylus
+Aesop
+aesthetic
+aesthetically
+aesthetics
+afar
+affable
+affair
+affairs
+affect
+affectation
+affectations
+affected
+affecting
+affectingly
+affection
+affectionate
+affectionately
+affections
+affective
+affects
+afferent
+affianced
+affidavit
+affidavits
+affiliate
+affiliated
+affiliates
+affiliating
+affiliation
+affiliations
+affinities
+affinity
+affirm
+affirmation
+affirmations
+affirmative
+affirmatively
+affirmed
+affirming
+affirms
+affix
+affixed
+affixes
+affixing
+afflict
+afflicted
+afflicting
+affliction
+afflictions
+afflictive
+afflicts
+affluence
+affluent
+afford
+affordable
+afforded
+affording
+affords
+affricate
+affricates
+affright
+affront
+affronted
+affronting
+affronts
+Afghan
+Afghanistan
+Afghans
+aficionado
+afield
+afire
+aflame
+afloat
+afoot
+afore
+aforementioned
+aforesaid
+aforethought
+afoul
+afraid
+afresh
+Africa
+African
+Africanization
+Africanizations
+Africanize
+Africanized
+Africanizes
+Africanizing
+Africans
+Afrikaans
+Afrikaner
+Afrikaners
+aft
+after
+aftereffect
+afterglow
+afterimage
+afterlife
+aftermath
+aftermost
+afternoon
+afternoons
+aftershock
+aftershocks
+afterthought
+afterthoughts
+afterward
+afterwards
+again
+against
+Agamemnon
+agape
+agar
+agate
+agates
+Agatha
+age
+aged
+Agee
+ageless
+agencies
+agency
+agenda
+agendas
+agent
+agents
+ager
+agers
+ages
+Aggie
+Aggies
+agglomerate
+agglomerated
+agglomerates
+agglomeration
+agglutinate
+agglutinated
+agglutinates
+agglutinating
+agglutination
+agglutinin
+agglutinins
+aggrandize
+aggravate
+aggravated
+aggravates
+aggravation
+aggregate
+aggregated
+aggregately
+aggregates
+aggregating
+aggregation
+aggregations
+aggression
+aggressions
+aggressive
+aggressively
+aggressiveness
+aggressor
+aggressors
+aggrieve
+aggrieved
+aggrieves
+aggrieving
+aghast
+agile
+agilely
+agility
+aging
+agitate
+agitated
+agitates
+agitating
+agitation
+agitations
+agitator
+agitators
+agleam
+aglow
+Agnes
+Agnew
+agnostic
+agnostics
+ago
+agog
+agonies
+agonize
+agonized
+agonizes
+agonizing
+agonizingly
+agony
+agrarian
+agree
+agreeable
+agreeably
+agreed
+agreeing
+agreement
+agreements
+agreer
+agreers
+agrees
+Agricola
+agricultural
+agriculturally
+agriculture
+ague
+Agway
+ah
+ahead
+Ahmadabad
+Ahmedabad
+aid
+Aida
+aide
+aided
+Aides
+aiding
+aids
+Aiken
+ail
+Aileen
+aileron
+ailerons
+ailing
+ailment
+ailments
+aim
+aimed
+aimer
+aimers
+aiming
+aimless
+aimlessly
+aims
+Ainu
+Ainus
+air
+airbag
+airbags
+airborne
+Airbus
+aircraft
+airdrop
+airdrops
+aired
+Airedale
+airer
+airers
+Aires
+airfare
+airfield
+airfields
+airflow
+airfoil
+airfoils
+airframe
+airframes
+airily
+airing
+airings
+airless
+airlift
+airlifts
+airline
+airliner
+airlines
+airlock
+airlocks
+airmail
+airmails
+airman
+airmen
+airplane
+airplanes
+airport
+airports
+airs
+airship
+airships
+airspace
+airspeed
+airstrip
+airstrips
+airtight
+airway
+airways
+airy
+aisle
+Aitken
+ajar
+Ajax
+Akers
+akimbo
+akin
+Akron
+Al
+Alabama
+Alabamans
+Alabamian
+alabaster
+alacrity
+Aladdin
+Alameda
+Alamo
+Alamos
+Alan
+Alar
+alarm
+alarmed
+alarming
+alarmingly
+alarmist
+alarms
+alas
+Alaska
+Alaskan
+Alastair
+alba
+albacore
+Albania
+Albanian
+Albanians
+Albany
+albatross
+albeit
+Alberich
+Albert
+Alberta
+Alberto
+Albrecht
+Albright
+album
+albumin
+albums
+Albuquerque
+Alcestis
+alchemy
+Alcibiades
+Alcmena
+Alcoa
+alcohol
+alcoholic
+alcoholics
+alcoholism
+alcohols
+Alcott
+alcove
+alcoves
+Aldebaran
+Alden
+alder
+alderman
+aldermen
+Aldrich
+ale
+Alec
+Aleck
+alee
+alert
+alerted
+alertedly
+alerter
+alerters
+alerting
+alertly
+alertness
+alerts
+Aleut
+Aleutian
+Alex
+Alexander
+Alexandra
+Alexandre
+Alexandria
+Alexandrine
+Alexei
+Alexis
+Alfa
+alfalfa
+Alfonso
+Alfred
+Alfredo
+alfresco
+alga
+algae
+algaecide
+algebra
+algebraic
+algebraically
+algebras
+Algenib
+Alger
+Algeria
+Algerian
+Algiers
+alginate
+ALGOL
+Algol
+Algonquian
+Algonquin
+algorithm
+algorithmic
+algorithmically
+algorithms
+Alhambra
+Ali
+alias
+aliased
+aliases
+aliasing
+alibi
+alibis
+Alice
+Alicia
+alien
+alienate
+alienated
+alienates
+alienating
+alienation
+aliens
+alight
+align
+aligned
+aligning
+alignment
+alignments
+aligns
+alike
+aliment
+aliments
+alimony
+Alison
+Alistair
+alive
+alkali
+alkaline
+alkalis
+alkaloid
+alkaloids
+alkyl
+all
+Allah
+Allan
+allay
+allayed
+allaying
+allays
+allegation
+allegations
+allege
+alleged
+allegedly
+alleges
+Alleghenies
+Allegheny
+allegiance
+allegiances
+alleging
+allegoric
+allegorical
+allegorically
+allegories
+allegory
+Allegra
+allegretto
+allegrettos
+allele
+alleles
+allemande
+Allen
+Allendale
+Allentown
+allergic
+allergies
+allergy
+alleviate
+alleviated
+alleviates
+alleviating
+alleviation
+alley
+alleys
+alleyway
+alleyways
+alliance
+alliances
+allied
+allies
+alligator
+alligators
+Allis
+Allison
+alliteration
+alliterations
+alliterative
+allocatable
+allocate
+allocated
+allocates
+allocating
+allocation
+allocations
+allocator
+allocators
+allophone
+allophones
+allophonic
+allot
+allotment
+allotments
+allots
+allotted
+allotter
+allotting
+allow
+allowable
+allowably
+allowance
+allowances
+allowed
+allowing
+allows
+alloy
+alloys
+Allstate
+allude
+alluded
+alludes
+alluding
+allure
+allurement
+alluring
+allusion
+allusions
+allusive
+allusiveness
+ally
+allying
+Allyn
+alma
+Almaden
+almanac
+almanacs
+almighty
+almond
+almonds
+almoner
+almost
+alms
+almsman
+alnico
+aloe
+aloes
+aloft
+aloha
+alone
+aloneness
+along
+alongside
+aloof
+aloofness
+aloud
+Alpert
+alpha
+alphabet
+alphabetic
+alphabetical
+alphabetically
+alphabetics
+alphabetize
+alphabetized
+alphabetizes
+alphabetizing
+alphabets
+alphanumeric
+Alpheratz
+Alphonse
+alpine
+Alps
+already
+Alsatian
+Alsatians
+also
+Alsop
+Altair
+altar
+altars
+alter
+alterable
+alteration
+alterations
+altercation
+altercations
+altered
+alterer
+alterers
+altering
+alternate
+alternated
+alternately
+alternates
+alternating
+alternation
+alternations
+alternative
+alternatively
+alternatives
+alternator
+alternators
+alters
+Althaea
+although
+altitude
+altitudes
+altogether
+Alton
+Altos
+altruism
+altruist
+altruistic
+altruistically
+alum
+aluminum
+alumna
+alumnae
+alumni
+alumnus
+alundum
+Alva
+Alvarez
+alveolar
+alveoli
+alveolus
+Alvin
+always
+Alyssa
+am
+Amadeus
+amain
+amalgam
+amalgamate
+amalgamated
+amalgamates
+amalgamating
+amalgamation
+amalgams
+Amanda
+amanuensis
+amaretto
+Amarillo
+amass
+amassed
+amasses
+amassing
+amateur
+amateurish
+amateurishness
+amateurism
+amateurs
+amatory
+amaze
+amazed
+amazedly
+amazement
+amazer
+amazers
+amazes
+amazing
+amazingly
+Amazon
+Amazons
+ambassador
+ambassadors
+amber
+ambiance
+ambidextrous
+ambidextrously
+ambient
+ambiguities
+ambiguity
+ambiguous
+ambiguously
+ambition
+ambitions
+ambitious
+ambitiously
+ambivalence
+ambivalent
+ambivalently
+amble
+ambled
+ambler
+ambles
+ambling
+ambrosial
+ambulance
+ambulances
+ambulatory
+ambuscade
+ambush
+ambushed
+ambushes
+Amdahl
+Amelia
+ameliorate
+ameliorated
+ameliorating
+amelioration
+amen
+amenable
+amend
+amended
+amending
+amendment
+amendments
+amends
+amenities
+amenity
+amenorrhea
+Amerada
+America
+American
+Americana
+Americanism
+Americanization
+Americanizations
+Americanize
+Americanizer
+Americanizers
+Americanizes
+Americans
+Americas
+americium
+Ames
+Amharic
+Amherst
+amiable
+amicable
+amicably
+amid
+amide
+amidst
+Amiga
+amigo
+amino
+amiss
+amity
+Amman
+Ammerman
+ammo
+ammonia
+ammoniac
+ammonium
+ammunition
+amnesty
+Amoco
+amoeba
+amoebae
+amoebas
+amok
+among
+amongst
+Amontillado
+amoral
+amorality
+amorist
+amorous
+amorphous
+amorphously
+amortize
+amortized
+amortizes
+amortizing
+Amos
+amount
+amounted
+amounter
+amounters
+amounting
+amounts
+amour
+amperage
+ampere
+amperes
+ampersand
+ampersands
+Ampex
+amphetamine
+amphetamines
+amphibian
+amphibians
+amphibious
+amphibiously
+amphibology
+amphitheater
+amphitheaters
+ample
+amplification
+amplified
+amplifier
+amplifiers
+amplifies
+amplify
+amplifying
+amplitude
+amplitudes
+amply
+ampoule
+ampoules
+amputate
+amputated
+amputates
+amputating
+Amsterdam
+Amtrak
+amulet
+amulets
+amuse
+amused
+amusedly
+amusement
+amusements
+amuser
+amusers
+amuses
+amusing
+amusingly
+Amy
+amyl
+an
+Anabaptist
+Anabaptists
+Anabel
+anachronism
+anachronisms
+anachronistically
+anaconda
+anacondas
+Anacreon
+anaerobic
+anagram
+anagrams
+Anaheim
+anal
+Analects
+analog
+analogical
+analogies
+analogous
+analogously
+analogue
+analogues
+analogy
+analyses
+analysis
+analyst
+analysts
+analytic
+analytical
+analytically
+analyticities
+analyticity
+analyzable
+analyze
+analyzed
+analyzer
+analyzers
+analyzes
+analyzing
+anaphora
+anaphoric
+anaphorically
+anaplasmosis
+anarchic
+anarchical
+anarchism
+anarchist
+anarchists
+anarchy
+Anastasia
+anastomoses
+anastomosis
+anastomotic
+anathema
+Anatole
+Anatolia
+Anatolian
+anatomic
+anatomical
+anatomically
+anatomy
+ancestor
+ancestors
+ancestral
+ancestry
+anchor
+anchorage
+anchorages
+anchored
+anchoring
+anchorite
+anchoritism
+anchors
+anchovies
+anchovy
+ancient
+anciently
+ancients
+ancillary
+and
+Andalusia
+Andalusian
+Andalusians
+Andean
+anders
+Andersen
+Anderson
+Andes
+anding
+Andorra
+Andover
+Andre
+Andrea
+Andrei
+Andrew
+Andrews
+Andromache
+Andromeda
+Andy
+anecdotal
+anecdote
+anecdotes
+anechoic
+anemia
+anemic
+anemometer
+anemometers
+anemometry
+anemone
+anesthesia
+anesthetic
+anesthetically
+anesthetics
+anesthetize
+anesthetized
+anesthetizes
+anesthetizing
+anew
+angel
+Angela
+Angeleno
+Angelenos
+Angeles
+angelic
+Angelica
+Angelina
+Angeline
+Angelo
+angels
+anger
+angered
+angering
+angers
+Angie
+angiography
+angle
+angled
+angler
+anglers
+Angles
+Anglia
+Anglican
+Anglicanism
+Anglicanize
+Anglicanizes
+Anglicans
+angling
+Anglo
+Anglophilia
+Anglophobia
+Angola
+Angora
+angrier
+angriest
+angrily
+angry
+angst
+angstrom
+anguish
+anguished
+angular
+angularly
+Angus
+Anheuser
+anhydrous
+anhydrously
+aniline
+animal
+animals
+animate
+animated
+animatedly
+animately
+animateness
+animates
+animating
+animation
+animations
+animator
+animators
+animism
+animized
+animosity
+anion
+anionic
+anions
+anise
+aniseikonic
+anisotropic
+anisotropy
+Anita
+Ankara
+ankle
+ankles
+Ann
+Anna
+annal
+Annalist
+Annalistic
+annals
+Annapolis
+Anne
+Annette
+annex
+annexation
+annexed
+annexes
+annexing
+Annie
+annihilate
+annihilated
+annihilates
+annihilating
+annihilation
+anniversaries
+anniversary
+annotate
+annotated
+annotates
+annotating
+annotation
+annotations
+announce
+announced
+announcement
+announcements
+announcer
+announcers
+announces
+announcing
+annoy
+annoyance
+annoyances
+annoyed
+annoyer
+annoyers
+annoying
+annoyingly
+annoys
+annual
+annually
+annuals
+annuity
+annul
+annular
+annuli
+annulled
+annulling
+annulment
+annulments
+annuls
+annulus
+annum
+annunciate
+annunciated
+annunciates
+annunciating
+annunciator
+annunciators
+anode
+anodes
+anodize
+anodized
+anodizes
+anoint
+anointed
+anointing
+anoints
+anomalies
+anomalous
+anomalously
+anomaly
+anomic
+anomie
+anon
+anonymity
+anonymous
+anonymously
+anorexia
+another
+Anselm
+Anselmo
+ANSI
+answer
+answerable
+answered
+answerer
+answerers
+answering
+answers
+ant
+Antaeus
+antagonism
+antagonisms
+antagonist
+antagonistic
+antagonistically
+antagonists
+antagonize
+antagonized
+antagonizes
+antagonizing
+antarctic
+Antarctica
+Antares
+ante
+anteater
+anteaters
+antecedent
+antecedents
+antedate
+antelope
+antelopes
+antenna
+antennae
+antennas
+anterior
+anthem
+anthems
+anther
+anthologies
+anthology
+Anthony
+anthracite
+anthropological
+anthropologically
+anthropologist
+anthropologists
+anthropology
+anthropomorphic
+anthropomorphically
+anti
+antibacterial
+antibiotic
+antibiotics
+antibodies
+antibody
+antic
+anticipate
+anticipated
+anticipates
+anticipating
+anticipation
+anticipations
+anticipatory
+anticoagulation
+anticompetitive
+antics
+antidisestablishmentarianism
+antidote
+antidotes
+Antietam
+antiformant
+antifundamentalist
+antigen
+antigens
+Antigone
+antihistorical
+Antilles
+antimicrobial
+antimony
+antinomian
+antinomy
+Antioch
+antipathy
+antiphonal
+antipode
+antipodes
+antiquarian
+antiquarians
+antiquate
+antiquated
+antique
+antiques
+antiquities
+antiquity
+antiredeposition
+antiresonance
+antiresonator
+antisemitic
+antisemitism
+antiseptic
+antisera
+antiserum
+antislavery
+antisocial
+antisubmarine
+antisymmetric
+antisymmetry
+antithesis
+antithetical
+antithyroid
+antitoxin
+antitoxins
+antitrust
+antler
+antlered
+Antoine
+Antoinette
+Anton
+Antonio
+Antonovics
+Antony
+ants
+Antwerp
+anus
+anvil
+anvils
+anxieties
+anxiety
+anxious
+anxiously
+any
+anybody
+anyhow
+anymore
+anyone
+anyplace
+anything
+anytime
+anyway
+anywhere
+aorta
+apace
+Apaches
+Apalachicola
+apart
+apartment
+apartments
+apathetic
+apathy
+ape
+aped
+aperiodic
+aperiodicity
+aperture
+apes
+Apetalous
+apex
+aphasia
+aphasic
+aphelion
+aphid
+aphids
+aphonic
+aphorism
+aphorisms
+Aphrodite
+apiaries
+apiary
+apical
+apiece
+aping
+apish
+aplenty
+aplomb
+apocalypse
+apocalyptic
+Apocrypha
+apocryphal
+apogee
+apogees
+Apollinaire
+Apollo
+Apollonian
+apologetic
+apologetically
+apologia
+apologies
+apologist
+apologists
+apologize
+apologized
+apologizes
+apologizing
+apology
+apostate
+apostle
+apostles
+apostolic
+apostrophe
+apostrophes
+apothecary
+apothegm
+apotheoses
+apotheosis
+Appalachia
+Appalachian
+Appalachians
+appall
+appalled
+appalling
+appallingly
+Appaloosas
+appanage
+apparatus
+apparel
+appareled
+apparent
+apparently
+apparition
+apparitions
+appeal
+appealed
+appealer
+appealers
+appealing
+appealingly
+appeals
+appear
+appearance
+appearances
+appeared
+appearer
+appearers
+appearing
+appears
+appease
+appeased
+appeasement
+appeases
+appeasing
+appellant
+appellants
+appellate
+appellation
+append
+appendage
+appendages
+appended
+appender
+appenders
+appendices
+appendicitis
+appending
+appendix
+appendixes
+appends
+appertain
+appertains
+appetite
+appetites
+appetizer
+appetizing
+Appia
+Appian
+applaud
+applauded
+applauding
+applauds
+applause
+apple
+Appleby
+applejack
+apples
+Appleton
+appliance
+appliances
+applicability
+applicable
+applicant
+applicants
+application
+applications
+applicative
+applicatively
+applicator
+applicators
+applied
+applier
+appliers
+applies
+applique
+apply
+applying
+appoint
+appointed
+appointee
+appointees
+appointer
+appointers
+appointing
+appointive
+appointment
+appointments
+appoints
+Appomattox
+apportion
+apportioned
+apportioning
+apportionment
+apportionments
+apportions
+apposite
+appraisal
+appraisals
+appraise
+appraised
+appraiser
+appraisers
+appraises
+appraising
+appraisingly
+appreciable
+appreciably
+appreciate
+appreciated
+appreciates
+appreciating
+appreciation
+appreciations
+appreciative
+appreciatively
+apprehend
+apprehended
+apprehensible
+apprehension
+apprehensions
+apprehensive
+apprehensively
+apprehensiveness
+apprentice
+apprenticed
+apprentices
+apprenticeship
+apprise
+apprised
+apprises
+apprising
+approach
+approachability
+approachable
+approached
+approacher
+approachers
+approaches
+approaching
+approbate
+approbation
+appropriate
+appropriated
+appropriately
+appropriateness
+appropriates
+appropriating
+appropriation
+appropriations
+appropriator
+appropriators
+approval
+approvals
+approve
+approved
+approver
+approvers
+approves
+approving
+approvingly
+approximate
+approximated
+approximately
+approximates
+approximating
+approximation
+approximations
+appurtenance
+appurtenances
+apricot
+apricots
+April
+Aprils
+apron
+aprons
+apropos
+apse
+apsis
+apt
+aptitude
+aptitudes
+aptly
+aptness
+aqua
+aquaria
+aquarium
+Aquarius
+aquatic
+aqueduct
+aqueducts
+aqueous
+aquifer
+aquifers
+Aquila
+Aquinas
+Arab
+arabesque
+Arabia
+Arabian
+Arabianize
+Arabianizes
+Arabians
+Arabic
+Arabicize
+Arabicizes
+arable
+Arabs
+Araby
+Arachne
+arachnid
+arachnids
+Aramco
+Arapaho
+arbiter
+arbiters
+arbitrarily
+arbitrariness
+arbitrary
+arbitrate
+arbitrated
+arbitrates
+arbitrating
+arbitration
+arbitrator
+arbitrators
+arbor
+arboreal
+arbors
+arc
+arcade
+arcaded
+arcades
+Arcadia
+Arcadian
+arcane
+arced
+arch
+archaic
+archaically
+archaicness
+archaism
+archaize
+archangel
+archangels
+archbishop
+archdiocese
+archdioceses
+arched
+archenemy
+archeological
+archeologist
+archeology
+Archer
+archers
+archery
+arches
+archetype
+archfool
+Archibald
+Archie
+Archimedes
+arching
+archipelago
+archipelagoes
+architect
+architectonic
+architects
+architectural
+architecturally
+architecture
+architectures
+archival
+archive
+archived
+archiver
+archivers
+archives
+archiving
+archivist
+archly
+arcing
+arclike
+ARCO
+arcs
+arcsine
+arctangent
+arctic
+Arcturus
+Arden
+ardent
+ardently
+ardor
+arduous
+arduously
+arduousness
+are
+area
+areas
+arena
+arenas
+Arequipa
+Ares
+Argentina
+Argentinian
+Argive
+Argo
+argon
+Argonaut
+argonauts
+Argonne
+Argos
+argot
+arguable
+arguably
+argue
+argued
+arguer
+arguers
+argues
+arguing
+argument
+argumentation
+argumentative
+arguments
+Argus
+Ariadne
+Arianism
+Arianist
+Arianists
+arid
+aridity
+Aries
+aright
+arise
+arisen
+ariser
+arises
+arising
+arisings
+aristocracy
+aristocrat
+aristocratic
+aristocratically
+aristocrats
+Aristotelian
+Aristotle
+arithmetic
+arithmetical
+arithmetically
+arithmetics
+arithmetize
+arithmetized
+arithmetizes
+Arizona
+ark
+Arkansan
+Arkansas
+Arlen
+Arlene
+Arlington
+arm
+Armada
+armadillo
+armadillos
+Armageddon
+Armagnac
+armament
+armaments
+Armata
+armchair
+armchairs
+Armco
+armed
+Armenia
+Armenian
+armer
+armers
+armful
+armhole
+armies
+arming
+armistice
+armload
+Armonk
+armor
+armored
+armorer
+armory
+Armour
+armpit
+armpits
+arms
+Armstrong
+army
+Arnold
+aroma
+aromas
+aromatic
+arose
+around
+arousal
+arouse
+aroused
+arouses
+arousing
+ARPA
+ARPANET
+Arpanet
+arpeggio
+arpeggios
+arrack
+Arragon
+arraign
+arraigned
+arraigning
+arraignment
+arraignments
+arraigns
+arrange
+arranged
+arrangement
+arrangements
+arranger
+arrangers
+arranges
+arranging
+arrant
+array
+arrayed
+arrays
+arrears
+arrest
+arrested
+arrester
+arresters
+arresting
+arrestingly
+arrestor
+arrestors
+arrests
+Arrhenius
+arrival
+arrivals
+arrive
+arrived
+arrives
+arriving
+arrogance
+arrogant
+arrogantly
+arrogate
+arrogated
+arrogates
+arrogating
+arrogation
+arrow
+arrowed
+arrowhead
+arrowheads
+arrows
+arroyo
+arroyos
+arsenal
+arsenals
+arsenic
+arsine
+arson
+art
+Artemia
+Artemis
+arterial
+arteries
+arteriolar
+arteriole
+arterioles
+arteriosclerosis
+artery
+artful
+artfully
+artfulness
+arthritis
+arthropod
+arthropods
+Arthur
+artichoke
+artichokes
+article
+articles
+articulate
+articulated
+articulately
+articulateness
+articulates
+articulating
+articulation
+articulations
+articulator
+articulators
+articulatory
+Artie
+artifact
+artifacts
+artifice
+artificer
+artifices
+artificial
+artificialities
+artificiality
+artificially
+artificialness
+artillerist
+artillery
+artisan
+artisans
+artist
+artistic
+artistically
+artistry
+artists
+artless
+arts
+Arturo
+artwork
+Aruba
+Aryan
+Aryans
+as
+asbestos
+ascend
+ascendancy
+ascendant
+ascended
+ascendency
+ascendent
+ascender
+ascenders
+ascending
+ascends
+ascension
+ascensions
+ascent
+ascertain
+ascertainable
+ascertained
+ascertaining
+ascertains
+ascetic
+asceticism
+ascetics
+ASCII
+ascot
+ascribable
+ascribe
+ascribed
+ascribes
+ascribing
+ascription
+aseptic
+ash
+ashamed
+ashamedly
+ashen
+Asher
+ashes
+Asheville
+Ashland
+Ashley
+ashman
+Ashmolean
+ashore
+ashtray
+ashtrays
+Asia
+Asian
+Asians
+Asiatic
+Asiaticization
+Asiaticizations
+Asiaticize
+Asiaticizes
+Asiatics
+aside
+Asilomar
+asinine
+ask
+askance
+asked
+asker
+askers
+askew
+asking
+asks
+asleep
+asocial
+asp
+asparagus
+aspect
+aspects
+aspen
+aspersion
+aspersions
+asphalt
+asphyxia
+aspic
+aspirant
+aspirants
+aspirate
+aspirated
+aspirates
+aspirating
+aspiration
+aspirations
+aspirator
+aspirators
+aspire
+aspired
+aspires
+aspirin
+aspiring
+aspirins
+ass
+assail
+assailant
+assailants
+assailed
+assailing
+assails
+Assam
+assassin
+assassinate
+assassinated
+assassinates
+assassinating
+assassination
+assassinations
+assassins
+assault
+assaulted
+assaulting
+assaults
+assay
+assayed
+assaying
+assemblage
+assemblages
+assemble
+assembled
+assembler
+assemblers
+assembles
+assemblies
+assembling
+assembly
+assent
+assented
+assenter
+assenting
+assents
+assert
+asserted
+asserter
+asserters
+asserting
+assertion
+assertions
+assertive
+assertively
+assertiveness
+asserts
+asses
+assess
+assessed
+assesses
+assessing
+assessment
+assessments
+assessor
+assessors
+asset
+assets
+assiduity
+assiduous
+assiduously
+assign
+assignable
+assigned
+assignee
+assignees
+assigner
+assigners
+assigning
+assignment
+assignments
+assigns
+assimilate
+assimilated
+assimilates
+assimilating
+assimilation
+assimilations
+assist
+assistance
+assistances
+assistant
+assistants
+assistantship
+assistantships
+assisted
+assisting
+assists
+associate
+associated
+associates
+associating
+association
+associational
+associations
+associative
+associatively
+associativity
+associator
+associators
+assonance
+assonant
+assort
+assorted
+assortment
+assortments
+assorts
+assuage
+assuaged
+assuages
+assume
+assumed
+assumes
+assuming
+assumption
+assumptions
+assurance
+assurances
+assure
+assured
+assuredly
+assurer
+assurers
+assures
+assuring
+assuringly
+Assyria
+Assyrian
+Assyrianize
+Assyrianizes
+Assyriology
+Astaire
+Astaires
+Astarte
+astatine
+aster
+asterisk
+asterisks
+asteroid
+asteroidal
+asteroids
+asters
+asthma
+Aston
+astonish
+astonished
+astonishes
+astonishing
+astonishingly
+astonishment
+Astor
+Astoria
+astound
+astounded
+astounding
+astounds
+astral
+astray
+astride
+astringency
+astringent
+astrology
+astronaut
+astronautics
+astronauts
+astronomer
+astronomers
+astronomical
+astronomically
+astronomy
+astrophysical
+astrophysics
+astute
+astutely
+astuteness
+Asuncion
+asunder
+asylum
+asymmetric
+asymmetrically
+asymmetry
+asymptomatically
+asymptote
+asymptotes
+asymptotic
+asymptotically
+asynchronism
+asynchronous
+asynchronously
+asynchrony
+at
+Atalanta
+Atari
+atavistic
+Atchison
+ate
+atemporal
+Athabascan
+atheism
+atheist
+atheistic
+atheists
+Athena
+Athenian
+Athenians
+Athens
+atherosclerosis
+athlete
+athletes
+athletic
+athleticism
+athletics
+Atkins
+Atkinson
+Atlanta
+Atlantic
+Atlantica
+Atlantis
+atlas
+atmosphere
+atmospheres
+atmospheric
+atoll
+atolls
+atom
+atomic
+atomically
+atomics
+atomization
+atomize
+atomized
+atomizes
+atomizing
+atoms
+atonal
+atonally
+atone
+atoned
+atonement
+atones
+atop
+Atreus
+atrocious
+atrociously
+atrocities
+atrocity
+atrophic
+atrophied
+atrophies
+atrophy
+atrophying
+Atropos
+attach
+attache
+attached
+attacher
+attachers
+attaches
+attaching
+attachment
+attachments
+attack
+attackable
+attacked
+attacker
+attackers
+attacking
+attacks
+attain
+attainable
+attainably
+attained
+attainer
+attainers
+attaining
+attainment
+attainments
+attains
+attempt
+attempted
+attempter
+attempters
+attempting
+attempts
+attend
+attendance
+attendances
+attendant
+attendants
+attended
+attendee
+attendees
+attender
+attenders
+attending
+attends
+attention
+attentional
+attentionality
+attentions
+attentive
+attentively
+attentiveness
+attenuate
+attenuated
+attenuates
+attenuating
+attenuation
+attenuator
+attenuators
+attest
+attested
+attesting
+attests
+attic
+Attica
+attics
+attire
+attired
+attires
+attiring
+attitude
+attitudes
+attitudinal
+Attlee
+attorney
+attorneys
+attract
+attracted
+attracting
+attraction
+attractions
+attractive
+attractively
+attractiveness
+attractor
+attractors
+attracts
+attributable
+attribute
+attributed
+attributes
+attributing
+attribution
+attributions
+attributive
+attributively
+attrition
+attune
+attuned
+attunes
+attuning
+Atwater
+Atwood
+atypical
+atypically
+Auberge
+Aubrey
+auburn
+Auckland
+auction
+auctioneer
+auctioneers
+audacious
+audaciously
+audaciousness
+audacity
+audible
+audibly
+audience
+audiences
+audio
+audiogram
+audiograms
+audiological
+audiologist
+audiologists
+audiology
+audiometer
+audiometers
+audiometric
+audiometry
+audit
+audited
+auditing
+audition
+auditioned
+auditioning
+auditions
+auditor
+auditorium
+auditors
+auditory
+audits
+Audrey
+Audubon
+Auerbach
+Augean
+auger
+augers
+aught
+augment
+augmentation
+augmented
+augmenting
+augments
+augur
+augurs
+august
+Augusta
+Augustan
+Augustine
+augustly
+augustness
+Augustus
+aunt
+aunts
+aura
+aural
+aurally
+auras
+Aurelius
+aureole
+aureomycin
+Auriga
+aurora
+Auschwitz
+auscultate
+auscultated
+auscultates
+auscultating
+auscultation
+auscultations
+auspice
+auspices
+auspicious
+auspiciously
+austere
+austerely
+austerity
+Austin
+Australia
+Australian
+Australianize
+Australianizes
+Australis
+Austria
+Austrian
+Austrianize
+Austrianizes
+authentic
+authentically
+authenticate
+authenticated
+authenticates
+authenticating
+authentication
+authentications
+authenticator
+authenticators
+authenticity
+author
+authored
+authoring
+authoritarian
+authoritarianism
+authoritative
+authoritatively
+authorities
+authority
+authorization
+authorizations
+authorize
+authorized
+authorizer
+authorizers
+authorizes
+authorizing
+authors
+authorship
+autism
+autistic
+auto
+autobiographic
+autobiographical
+autobiographies
+autobiography
+autocollimator
+autocorrelate
+autocorrelation
+autocracies
+autocracy
+autocrat
+autocratic
+autocratically
+autocrats
+autodecrement
+autodecremented
+autodecrements
+autodialer
+autofluorescence
+autograph
+autographed
+autographing
+autographs
+autoincrement
+autoincremented
+autoincrements
+autoindex
+autoindexing
+automata
+automate
+automated
+automates
+automatic
+automatically
+automating
+automation
+automaton
+automobile
+automobiles
+automotive
+autonavigator
+autonavigators
+autonomic
+autonomous
+autonomously
+autonomy
+autopilot
+autopilots
+autopsied
+autopsies
+autopsy
+autoregressive
+autos
+autosuggestibility
+autotransformer
+autumn
+autumnal
+autumns
+auxiliaries
+auxiliary
+avail
+availabilities
+availability
+available
+availably
+availed
+availer
+availers
+availing
+avails
+avalanche
+avalanched
+avalanches
+avalanching
+avant
+avarice
+avaricious
+avariciously
+avenge
+avenged
+avenger
+avenges
+avenging
+Aventine
+Aventino
+avenue
+avenues
+aver
+average
+averaged
+averages
+averaging
+Avernus
+averred
+averrer
+averring
+avers
+averse
+aversion
+aversions
+avert
+averted
+averting
+averts
+Avery
+Avesta
+avian
+aviaries
+aviary
+aviation
+aviator
+aviators
+avid
+avidity
+avidly
+Avignon
+avionic
+avionics
+Avis
+Aviv
+avocado
+avocados
+avocation
+avocations
+Avogadro
+avoid
+avoidable
+avoidably
+avoidance
+avoided
+avoider
+avoiders
+avoiding
+avoids
+Avon
+avouch
+avow
+avowal
+avowed
+avows
+await
+awaited
+awaiting
+awaits
+awake
+awaken
+awakened
+awakening
+awakens
+awakes
+awaking
+award
+awarded
+awarder
+awarders
+awarding
+awards
+aware
+awareness
+awash
+away
+awe
+awed
+awesome
+awful
+awfully
+awfulness
+awhile
+awkward
+awkwardly
+awkwardness
+awl
+awls
+awning
+awnings
+awoke
+awry
+ax
+axed
+Axel
+axer
+axers
+axes
+axial
+axially
+axing
+axiological
+axiom
+axiomatic
+axiomatically
+axiomatization
+axiomatizations
+axiomatize
+axiomatized
+axiomatizes
+axiomatizing
+axioms
+axis
+axle
+axles
+axolotl
+axolotls
+axon
+axons
+aye
+Ayers
+ayes
+Aylesbury
+azalea
+azaleas
+Azerbaijan
+azimuth
+azimuths
+Azores
+Aztec
+Aztecan
+azure
+Babbage
+babble
+babbled
+babbles
+babbling
+Babcock
+babe
+Babel
+Babelize
+Babelizes
+babes
+babied
+babies
+Babka
+baboon
+baboons
+Babul
+baby
+babyhood
+babying
+babyish
+Babylon
+Babylonian
+Babylonians
+Babylonize
+Babylonizes
+babysit
+babysitting
+baccalaureate
+Bacchus
+Bach
+bachelor
+bachelors
+bacilli
+bacillus
+back
+backache
+backaches
+backarrow
+backbend
+backbends
+backboard
+backbone
+backbones
+backdrop
+backdrops
+backed
+backer
+backers
+backfill
+backfiring
+background
+backgrounds
+backhand
+backing
+backlash
+backlog
+backlogged
+backlogs
+backorder
+backpack
+backpacks
+backplane
+backplanes
+backplate
+backs
+backscatter
+backscattered
+backscattering
+backscatters
+backside
+backslash
+backslashes
+backspace
+backspaced
+backspaces
+backspacing
+backstage
+backstairs
+backstitch
+backstitched
+backstitches
+backstitching
+backstop
+backtrack
+backtracked
+backtracker
+backtrackers
+backtracking
+backtracks
+backup
+backups
+Backus
+backward
+backwardness
+backwards
+backwater
+backwaters
+backwoods
+backyard
+backyards
+bacon
+bacteria
+bacterial
+bacterium
+bad
+bade
+Baden
+badge
+badger
+badgered
+badgering
+badgers
+badges
+badlands
+badly
+badminton
+badness
+Baffin
+baffle
+baffled
+baffler
+bafflers
+baffling
+bag
+bagatelle
+bagatelles
+bagel
+bagels
+baggage
+bagged
+bagger
+baggers
+bagging
+baggy
+Baghdad
+Bagley
+bagpipe
+bagpipes
+Bagrodia
+Bagrodias
+bags
+bah
+Bahama
+Bahamas
+Bahrein
+bail
+Bailey
+Baileys
+bailiff
+bailiffs
+bailing
+Baird
+Bairdi
+Bairn
+bait
+baited
+baiter
+baiting
+baits
+Baja
+bake
+baked
+Bakelite
+baker
+bakeries
+bakers
+Bakersfield
+bakery
+bakes
+Bakhtiari
+baking
+baklava
+Baku
+balalaika
+balalaikas
+balance
+balanced
+balancer
+balancers
+balances
+balancing
+Balboa
+balconies
+balcony
+bald
+balding
+baldly
+baldness
+Baldwin
+bale
+baleful
+baler
+bales
+Balfour
+Bali
+Balinese
+balk
+Balkan
+Balkanization
+Balkanizations
+Balkanize
+balkanized
+Balkanizes
+balkanizing
+Balkans
+balked
+balkiness
+balking
+balks
+balky
+ball
+ballad
+ballads
+Ballard
+Ballards
+ballast
+ballasts
+balled
+baller
+ballerina
+ballerinas
+ballers
+ballet
+ballets
+ballgown
+balling
+ballistic
+ballistics
+balloon
+ballooned
+ballooner
+ballooners
+ballooning
+balloons
+ballot
+ballots
+ballpark
+ballparks
+ballplayer
+ballplayers
+ballroom
+ballrooms
+balls
+ballyhoo
+balm
+balms
+balmy
+balsa
+balsam
+Baltic
+Baltimore
+Baltimorean
+balustrade
+balustrades
+Balzac
+Bamako
+Bamberger
+Bambi
+bamboo
+ban
+Banach
+banal
+banally
+banana
+bananas
+Banbury
+Bancroft
+band
+bandage
+bandaged
+bandages
+bandaging
+banded
+bandied
+bandies
+banding
+bandit
+bandits
+bandpass
+bands
+bandstand
+bandstands
+bandwagon
+bandwagons
+bandwidth
+bandwidths
+bandy
+bandying
+bane
+baneful
+bang
+banged
+banging
+Bangladesh
+bangle
+bangles
+Bangor
+bangs
+Bangui
+banish
+banished
+banishes
+banishing
+banishment
+banister
+banisters
+banjo
+banjos
+bank
+banked
+banker
+bankers
+banking
+bankrupt
+bankruptcies
+bankruptcy
+bankrupted
+bankrupting
+bankrupts
+Banks
+banned
+banner
+banners
+banning
+banquet
+banqueting
+banquetings
+banquets
+bans
+banshee
+banshees
+bantam
+banter
+bantered
+bantering
+banters
+Bantu
+Bantus
+baptism
+baptismal
+baptisms
+Baptist
+Baptiste
+baptistery
+baptistries
+baptistry
+Baptists
+baptize
+baptized
+baptizes
+baptizing
+bar
+barb
+Barbados
+Barbara
+barbarian
+barbarians
+barbaric
+barbarism
+barbarities
+barbarity
+barbarous
+barbarously
+barbecue
+barbecued
+barbecues
+barbed
+barbell
+barbells
+barber
+barbital
+barbiturate
+barbiturates
+Barbour
+barbs
+Barcelona
+Barclay
+bard
+bards
+bare
+bared
+barefaced
+barefoot
+barefooted
+barely
+bareness
+barer
+bares
+barest
+barflies
+barfly
+bargain
+bargained
+bargaining
+bargains
+barge
+barges
+barging
+Barhop
+baring
+baritone
+baritones
+barium
+bark
+barked
+barker
+barkers
+barking
+barks
+barley
+Barlow
+barn
+Barnabas
+Barnard
+Barnes
+Barnet
+Barnett
+Barney
+Barnhard
+barns
+barnstorm
+barnstormed
+barnstorming
+barnstorms
+Barnum
+barnyard
+barnyards
+barometer
+barometers
+barometric
+baron
+baroness
+baronial
+baronies
+barons
+barony
+baroque
+baroqueness
+Barr
+barrack
+barracks
+barrage
+barrages
+barred
+barrel
+barrelled
+barrelling
+barrels
+barren
+barrenness
+Barrett
+barricade
+barricades
+barrier
+barriers
+barring
+barringer
+Barrington
+Barron
+barrow
+Barry
+Barrymore
+Barrymores
+bars
+Barstow
+Bart
+bartender
+bartenders
+barter
+bartered
+bartering
+barters
+Barth
+Bartholomew
+Bartlett
+Bartok
+Barton
+basal
+basalt
+Bascom
+base
+baseball
+baseballs
+baseband
+baseboard
+baseboards
+based
+Basel
+baseless
+baseline
+baselines
+basely
+baseman
+basement
+basements
+baseness
+baser
+bases
+bash
+bashed
+bashes
+bashful
+bashfulness
+bashing
+BASIC
+Basic
+basic
+basically
+basics
+Basie
+basil
+basin
+basing
+basins
+basis
+bask
+basked
+basket
+basketball
+basketballs
+baskets
+basking
+Basque
+bass
+basses
+basset
+Bassett
+bassinet
+bassinets
+bastard
+bastards
+baste
+basted
+bastes
+basting
+bastion
+bastions
+bat
+Batavia
+batch
+batched
+Batchelder
+batches
+Bateman
+Bates
+bath
+bathe
+bathed
+bather
+bathers
+bathes
+bathing
+bathos
+bathrobe
+bathrobes
+bathroom
+bathrooms
+baths
+bathtub
+bathtubs
+Bathurst
+Batista
+baton
+batons
+Bator
+bats
+battalion
+battalions
+batted
+Battelle
+batten
+battens
+batter
+battered
+batteries
+battering
+batters
+battery
+batting
+battle
+battled
+battlefield
+battlefields
+battlefront
+battlefronts
+battleground
+battlegrounds
+battlement
+battlements
+battler
+battlers
+battles
+battleship
+battleships
+battling
+bauble
+baubles
+baud
+Baudelaire
+Bauer
+Bauhaus
+Bausch
+bauxite
+Bavaria
+Bavarian
+bawdy
+bawl
+bawled
+bawling
+bawls
+Baxter
+bay
+Bayda
+bayed
+Bayes
+Bayesian
+baying
+Baylor
+bayonet
+bayonets
+Bayonne
+bayou
+bayous
+Bayport
+Bayreuth
+bays
+bazaar
+bazaars
+be
+beach
+beached
+beaches
+beachhead
+beachheads
+beaching
+beacon
+beacons
+bead
+beaded
+beading
+beadle
+beadles
+beads
+beady
+beagle
+beagles
+beak
+beaked
+beaker
+beakers
+beaks
+beam
+beamed
+beamer
+beamers
+beaming
+beams
+bean
+beanbag
+beaned
+beaner
+beaners
+beaning
+beans
+bear
+bearable
+bearably
+beard
+bearded
+beardless
+beards
+Beardsley
+bearer
+bearers
+bearing
+bearings
+bearish
+bears
+beast
+beastly
+beasts
+beat
+beatable
+beatably
+beaten
+beater
+beaters
+beatific
+beatification
+beatify
+beating
+beatings
+beatitude
+beatitudes
+beatnik
+beatniks
+Beatrice
+beats
+beau
+Beauchamps
+Beaujolais
+Beaumont
+Beauregard
+beaus
+beauteous
+beauteously
+beauties
+beautifications
+beautified
+beautifier
+beautifiers
+beautifies
+beautiful
+beautifully
+beautify
+beautifying
+beauty
+beaver
+beavers
+Beaverton
+becalm
+becalmed
+becalming
+becalms
+became
+because
+Bechtel
+beck
+Becker
+Beckman
+beckon
+beckoned
+beckoning
+beckons
+Becky
+become
+becomes
+becoming
+becomingly
+bed
+bedazzle
+bedazzled
+bedazzlement
+bedazzles
+bedazzling
+bedbug
+bedbugs
+bedded
+bedder
+bedders
+bedding
+bedevil
+bedeviled
+bedeviling
+bedevils
+bedfast
+Bedford
+bedlam
+bedpost
+bedposts
+bedraggle
+bedraggled
+bedridden
+bedrock
+bedroom
+bedrooms
+beds
+bedside
+bedspread
+bedspreads
+bedspring
+bedsprings
+bedstead
+bedsteads
+bedtime
+bee
+Beebe
+beech
+Beecham
+beechen
+beecher
+beef
+beefed
+beefer
+beefers
+beefing
+beefs
+beefsteak
+beefy
+beehive
+beehives
+been
+beep
+beeps
+beer
+beers
+bees
+beet
+Beethoven
+beetle
+beetled
+beetles
+beetling
+beets
+befall
+befallen
+befalling
+befalls
+befell
+befit
+befits
+befitted
+befitting
+befog
+befogged
+befogging
+before
+beforehand
+befoul
+befouled
+befouling
+befouls
+befriend
+befriended
+befriending
+befriends
+befuddle
+befuddled
+befuddles
+befuddling
+beg
+began
+beget
+begets
+begetting
+beggar
+beggarly
+beggars
+beggary
+begged
+begging
+begin
+beginner
+beginners
+beginning
+beginnings
+begins
+begot
+begotten
+begrudge
+begrudged
+begrudges
+begrudging
+begrudgingly
+begs
+beguile
+beguiled
+beguiles
+beguiling
+begun
+behalf
+behave
+behaved
+behaves
+behaving
+behavior
+behavioral
+behaviorally
+behaviorism
+behavioristic
+behaviors
+behead
+beheading
+beheld
+behemoth
+behemoths
+behest
+behind
+behold
+beholden
+beholder
+beholders
+beholding
+beholds
+behoove
+behooves
+beige
+Beijing
+being
+beings
+Beirut
+Bela
+belabor
+belabored
+belaboring
+belabors
+belated
+belatedly
+belay
+belayed
+belaying
+belays
+belch
+belched
+belches
+belching
+Belfast
+belfries
+belfry
+Belgian
+Belgians
+Belgium
+Belgrade
+belie
+belied
+belief
+beliefs
+belies
+believable
+believably
+believe
+believed
+believer
+believers
+believes
+believing
+belittle
+belittled
+belittles
+belittling
+Belize
+bell
+Bella
+Bellamy
+Bellatrix
+bellboy
+bellboys
+belle
+belles
+Belleville
+bellhop
+bellhops
+bellicose
+bellicosity
+bellies
+belligerence
+belligerent
+belligerently
+belligerents
+Bellingham
+Bellini
+bellman
+bellmen
+Bellovin
+bellow
+bellowed
+bellowing
+bellows
+bells
+bellum
+bellwether
+bellwethers
+Bellwood
+belly
+bellyache
+bellyfull
+Belmont
+Beloit
+belong
+belonged
+belonging
+belongings
+belongs
+beloved
+below
+Belshazzar
+belt
+belted
+belting
+Belton
+belts
+Beltsville
+Belushi
+bely
+belying
+bemoan
+bemoaned
+bemoaning
+bemoans
+Ben
+Benares
+bench
+benched
+benches
+benchmark
+benchmarking
+benchmarks
+bend
+bendable
+Bender
+benders
+bending
+Bendix
+bends
+beneath
+Benedict
+Benedictine
+benediction
+benedictions
+Benedikt
+benefactor
+benefactors
+beneficence
+beneficences
+beneficent
+beneficial
+beneficially
+beneficiaries
+beneficiary
+benefit
+benefited
+benefiting
+benefits
+benefitted
+benefitting
+Benelux
+benevolence
+benevolent
+Bengal
+Bengali
+benighted
+benign
+benignly
+Benjamin
+Bennett
+Bennington
+Benny
+Benson
+bent
+Bentham
+Bentley
+Bentleys
+Benton
+Benz
+Benzedrine
+benzene
+Beograd
+Beowulf
+bequeath
+bequeathal
+bequeathed
+bequeathing
+bequeaths
+bequest
+bequests
+berate
+berated
+berates
+berating
+Berea
+bereave
+bereaved
+bereavement
+bereavements
+bereaves
+bereaving
+bereft
+Berenices
+Beresford
+beret
+berets
+Bergen
+Bergland
+Berglund
+Bergman
+Bergson
+Bergsten
+Bergstrom
+beribboned
+beriberi
+Beringer
+Berkeley
+berkelium
+Berkowitz
+Berkshire
+Berkshires
+Berlin
+Berliner
+Berliners
+Berlinize
+Berlinizes
+Berlioz
+Berlitz
+Berman
+Bermuda
+Bern
+Bernadine
+Bernard
+Bernardine
+Bernardino
+Bernardo
+berne
+Bernet
+Bernhard
+Bernice
+Bernie
+Berniece
+Bernini
+Bernoulli
+Bernstein
+Berra
+berries
+berry
+berserk
+Bert
+berth
+Bertha
+berths
+Bertie
+Bertram
+Bertrand
+Berwick
+beryl
+beryllium
+beseech
+beseeches
+beseeching
+beset
+besets
+besetting
+beside
+besides
+besiege
+besieged
+besieger
+besiegers
+besieging
+besmirch
+besmirched
+besmirches
+besmirching
+besotted
+besotter
+besotting
+besought
+bespeak
+bespeaks
+bespectacled
+bespoke
+Bess
+Bessel
+Bessemer
+Bessemerize
+Bessemerizes
+Bessie
+best
+bested
+bestial
+besting
+bestir
+bestirring
+bestow
+bestowal
+bestowed
+bests
+bestseller
+bestsellers
+bestselling
+bet
+beta
+betatron
+betel
+Betelgeuse
+Bethesda
+Bethlehem
+betide
+betray
+betrayal
+betrayed
+betrayer
+betraying
+betrays
+betroth
+betrothal
+betrothed
+bets
+Betsey
+Betsy
+Bette
+better
+bettered
+bettering
+betterment
+betterments
+betters
+Betties
+betting
+Betty
+between
+betwixt
+bevel
+beveled
+beveling
+bevels
+beverage
+beverages
+Beverly
+bevy
+bewail
+bewailed
+bewailing
+bewails
+beware
+bewhiskered
+bewilder
+bewildered
+bewildering
+bewilderingly
+bewilderment
+bewilders
+bewitch
+bewitched
+bewitches
+bewitching
+beyond
+Bhagavad-Gita
+Bhutan
+Bialystok
+Bianco
+biannual
+bias
+biased
+biases
+biasing
+bib
+bibbed
+bibbing
+Bible
+bibles
+biblical
+biblically
+bibliographic
+bibliographical
+bibliographies
+bibliography
+bibliophile
+bibs
+bicameral
+bicarbonate
+bicentennial
+bicep
+biceps
+bicker
+bickered
+bickering
+bickers
+biconcave
+biconnected
+biconvex
+bicycle
+bicycled
+bicycler
+bicyclers
+bicycles
+bicycling
+bid
+biddable
+bidden
+bidder
+bidders
+biddies
+bidding
+Biddle
+biddy
+bide
+bidirectional
+bids
+Bien
+biennial
+biennium
+Bienville
+bier
+Bierce
+bifocal
+bifocals
+bifurcate
+big
+Bigelow
+bigger
+biggest
+Biggs
+bight
+bights
+bigness
+bigot
+bigoted
+bigotry
+bigots
+biharmonic
+bijection
+bijections
+bijective
+bijectively
+bike
+bikes
+biking
+bikini
+bikinis
+bilabial
+bilateral
+bilaterally
+Bilbao
+Bilbo
+bile
+bilge
+bilges
+bilinear
+bilingual
+bilk
+bilked
+bilking
+bilks
+bill
+billboard
+billboards
+billed
+biller
+billers
+billet
+billeted
+billeting
+billets
+billiard
+billiards
+Billie
+Billiken
+Billikens
+billing
+Billings
+billion
+billions
+billionth
+billow
+billowed
+billows
+bills
+Biltmore
+bimetallic
+bimetallism
+Bimini
+bimodal
+bimolecular
+bimonthlies
+bimonthly
+bin
+binaries
+binary
+binaural
+bind
+binder
+binders
+binding
+bindings
+binds
+bing
+binge
+binges
+Bingham
+Binghamton
+bingo
+Bini
+binocular
+binoculars
+binomial
+bins
+binuclear
+biochemical
+biochemist
+biochemistry
+biofeedback
+biographer
+biographers
+biographic
+biographical
+biographically
+biographies
+biography
+biological
+biologically
+biologist
+biologists
+biology
+biomedical
+biomedicine
+biophysical
+biophysicist
+biophysics
+biopsies
+biopsy
+bioscience
+biosphere
+biostatistic
+biosynthesize
+biota
+biotic
+bipartisan
+bipartite
+biped
+bipeds
+biplane
+biplanes
+bipolar
+biracial
+birch
+birchen
+birches
+bird
+birdbath
+birdbaths
+birdie
+birdied
+birdies
+birdlike
+birds
+birefringence
+birefringent
+Birgit
+Birmingham
+Birminghamize
+Birminghamizes
+birth
+birthday
+birthdays
+birthed
+birthplace
+birthplaces
+birthright
+birthrights
+births
+Biscayne
+biscuit
+biscuits
+bisect
+bisected
+bisecting
+bisection
+bisections
+bisector
+bisectors
+bisects
+bishop
+bishops
+Bismarck
+Bismark
+bismuth
+bison
+bisons
+bisque
+bisques
+Bissau
+bistable
+bistate
+bit
+bitch
+bitches
+bite
+biter
+biters
+bites
+biting
+bitingly
+bitmap
+BITNET
+bits
+bitten
+bitter
+bitterer
+bitterest
+bitterly
+bitterness
+bitternut
+bitterroot
+bitters
+bittersweet
+bitumen
+bituminous
+bitwise
+bivalve
+bivalves
+bivariate
+bivouac
+bivouacs
+biweekly
+bizarre
+Bizet
+blab
+blabbed
+blabbermouth
+blabbermouths
+blabbing
+blabs
+black
+blackberries
+blackberry
+blackbird
+blackbirds
+blackboard
+blackboards
+Blackburn
+blacked
+blacken
+blackened
+blackening
+blackens
+blacker
+blackest
+Blackfeet
+Blackfoot
+Blackfoots
+blacking
+blackjack
+blackjacks
+blacklist
+blacklisted
+blacklisting
+blacklists
+blackly
+blackmail
+blackmailed
+blackmailer
+blackmailers
+blackmailing
+blackmails
+Blackman
+Blackmer
+blackness
+blackout
+blackouts
+blacks
+blacksmith
+blacksmiths
+Blackstone
+Blackwell
+Blackwells
+bladder
+bladders
+blade
+blades
+Blaine
+Blair
+Blake
+Blakey
+blamable
+blame
+blamed
+blameless
+blamelessness
+blamer
+blamers
+blames
+blameworthy
+blaming
+blanch
+Blanchard
+Blanche
+blanched
+blanches
+blanching
+bland
+blandly
+blandness
+blank
+blanked
+blanker
+blankest
+blanket
+blanketed
+blanketer
+blanketers
+blanketing
+blankets
+blanking
+blankly
+blankness
+blanks
+Blanton
+blare
+blared
+blares
+blaring
+blase
+blaspheme
+blasphemed
+blasphemes
+blasphemies
+blaspheming
+blasphemous
+blasphemously
+blasphemousness
+blasphemy
+blast
+blasted
+blaster
+blasters
+blasting
+blasts
+blatant
+blatantly
+Blatz
+blaze
+blazed
+blazer
+blazers
+blazes
+blazing
+bleach
+bleached
+bleacher
+bleachers
+bleaches
+bleaching
+bleak
+bleaker
+bleakly
+bleakness
+blear
+bleary
+bleat
+bleating
+bleats
+bled
+bleed
+bleeder
+bleeding
+bleedings
+bleeds
+Bleeker
+blemish
+blemishes
+blend
+blended
+blender
+blending
+blends
+Blenheim
+bless
+blessed
+blessing
+blessings
+blew
+blight
+blighted
+blimp
+blimps
+blind
+blinded
+blinder
+blinders
+blindfold
+blindfolded
+blindfolding
+blindfolds
+blinding
+blindingly
+blindly
+blindness
+blinds
+blink
+blinked
+blinker
+blinkers
+blinking
+blinks
+Blinn
+blip
+blips
+bliss
+blissful
+blissfully
+blister
+blistered
+blistering
+blisters
+blithe
+blithely
+blitz
+blitzes
+blitzkrieg
+blizzard
+blizzards
+bloat
+bloated
+bloater
+bloating
+bloats
+blob
+blobs
+bloc
+Bloch
+block
+blockade
+blockaded
+blockades
+blockading
+blockage
+blockages
+blocked
+blocker
+blockers
+blockhouse
+blockhouses
+blocking
+blocks
+blocs
+bloke
+blokes
+Blomberg
+Blomquist
+blond
+blonde
+blondes
+blonds
+blood
+bloodbath
+blooded
+bloodhound
+bloodhounds
+bloodied
+bloodiest
+bloodless
+bloods
+bloodshed
+bloodshot
+bloodstain
+bloodstained
+bloodstains
+bloodstream
+bloody
+bloom
+bloomed
+bloomers
+Bloomfield
+blooming
+Bloomington
+blooms
+blooper
+blossom
+blossomed
+blossoms
+blot
+blots
+blotted
+blotting
+blouse
+blouses
+blow
+blower
+blowers
+blowfish
+blowing
+blown
+blowout
+blows
+blowup
+blubber
+bludgeon
+bludgeoned
+bludgeoning
+bludgeons
+blue
+blueberries
+blueberry
+bluebird
+bluebirds
+bluebonnet
+bluebonnets
+bluefish
+blueness
+blueprint
+blueprints
+bluer
+blues
+bluest
+bluestocking
+bluff
+bluffing
+bluffs
+bluing
+bluish
+Blum
+Blumenthal
+blunder
+blunderbuss
+blundered
+blundering
+blunderings
+blunders
+blunt
+blunted
+blunter
+bluntest
+blunting
+bluntly
+bluntness
+blunts
+blur
+blurb
+blurred
+blurring
+blurry
+blurs
+blurt
+blurted
+blurting
+blurts
+blush
+blushed
+blushes
+blushing
+bluster
+blustered
+blustering
+blusters
+blustery
+Blythe
+boa
+boar
+board
+boarded
+boarder
+boarders
+boarding
+boardinghouse
+boardinghouses
+boards
+Boarsh
+boast
+boasted
+boaster
+boasters
+boastful
+boastfully
+boasting
+boastings
+boasts
+boat
+boater
+boaters
+boathouse
+boathouses
+boating
+boatload
+boatloads
+boatman
+boatmen
+boats
+boatsman
+boatsmen
+boatswain
+boatswains
+boatyard
+boatyards
+bob
+bobbed
+Bobbie
+bobbin
+bobbing
+bobbins
+Bobbsey
+bobby
+bobolink
+bobolinks
+Bobrow
+bobs
+bobwhite
+bobwhites
+Boca
+bode
+Bodenheim
+bodes
+bodice
+bodied
+bodies
+bodily
+Bodleian
+body
+bodybuilder
+bodybuilders
+bodybuilding
+bodyguard
+bodyguards
+bodyweight
+Boeing
+Boeotia
+Boeotian
+Boer
+Boers
+bog
+Bogart
+Bogartian
+bogeymen
+bogged
+boggle
+boggled
+boggles
+boggling
+Bogota
+bogs
+bogus
+Boheme
+Bohemia
+Bohemian
+Bohemianism
+Bohr
+boil
+boiled
+boiler
+boilerplate
+boilers
+boiling
+boils
+Bois
+Boise
+boisterous
+boisterously
+bold
+bolder
+boldest
+boldface
+boldly
+boldness
+Bolivia
+Bolivian
+boll
+Bologna
+Bolshevik
+Bolsheviks
+Bolshevism
+Bolshevist
+Bolshevistic
+Bolshoi
+bolster
+bolstered
+bolstering
+bolsters
+bolt
+bolted
+bolting
+Bolton
+bolts
+Boltzmann
+bomb
+bombard
+bombarded
+bombarding
+bombardment
+bombards
+bombast
+bombastic
+Bombay
+bombed
+bomber
+bombers
+bombing
+bombings
+bombproof
+bombs
+bonanza
+bonanzas
+Bonaparte
+Bonaventure
+bond
+bondage
+bonded
+bonder
+bonders
+bonding
+bonds
+bondsman
+bondsmen
+bone
+boned
+boner
+boners
+bones
+bonfire
+bonfires
+bong
+Bonham
+Boniface
+boning
+Bonn
+bonnet
+bonneted
+bonnets
+Bonneville
+Bonnie
+bonny
+Bontempo
+bonus
+bonuses
+bony
+boo
+boob
+booboo
+booby
+book
+bookcase
+bookcases
+booked
+booker
+bookers
+bookie
+bookies
+booking
+bookings
+bookish
+bookkeeper
+bookkeepers
+bookkeeping
+booklet
+booklets
+bookmark
+books
+bookseller
+booksellers
+bookshelf
+bookshelves
+bookstore
+bookstores
+bookworm
+boolean
+Booleans
+boom
+boomed
+boomerang
+boomerangs
+booming
+booms
+boon
+Boone
+Boonton
+boor
+boorish
+boors
+boos
+boost
+boosted
+booster
+boosting
+boosts
+boot
+bootable
+booted
+Bootes
+booth
+booths
+booting
+Bootle
+bootleg
+bootlegged
+bootlegger
+bootleggers
+bootlegging
+bootlegs
+boots
+bootstrap
+bootstrapped
+bootstrapping
+bootstraps
+booty
+booze
+borate
+borates
+borax
+Bordeaux
+bordello
+bordellos
+Borden
+border
+bordered
+bordering
+borderings
+borderland
+borderlands
+borderline
+borders
+bore
+Borealis
+Boreas
+bored
+boredom
+borer
+bores
+Borg
+boric
+boring
+Boris
+born
+borne
+Borneo
+boron
+borough
+boroughs
+Borroughs
+borrow
+borrowed
+borrower
+borrowers
+borrowing
+borrows
+Bosch
+Bose
+bosom
+bosoms
+Bosporus
+boss
+bossed
+bosses
+Bostitch
+Boston
+Bostonian
+Bostonians
+bosun
+Boswell
+Boswellize
+Boswellizes
+botanical
+botanist
+botanists
+botany
+botch
+botched
+botcher
+botchers
+botches
+botching
+both
+bother
+bothered
+bothering
+bothers
+bothersome
+Botswana
+bottle
+bottled
+bottleneck
+bottlenecks
+bottler
+bottlers
+bottles
+bottling
+bottom
+bottomed
+bottoming
+bottomless
+bottoms
+botulinus
+botulism
+Boucher
+bouffant
+bough
+boughs
+bought
+boulder
+boulders
+boulevard
+boulevards
+bounce
+bounced
+bouncer
+bounces
+bouncing
+bouncy
+bound
+boundaries
+boundary
+bounded
+bounden
+bounding
+boundless
+boundlessness
+bounds
+bounteous
+bounteously
+bounties
+bountiful
+bounty
+bouquet
+bouquets
+Bourbaki
+bourbon
+bourgeois
+bourgeoisie
+Bourne
+boustrophedon
+boustrophedonic
+bout
+boutique
+bouts
+Bouvier
+bovine
+bovines
+bow
+Bowditch
+bowdlerize
+bowdlerized
+bowdlerizes
+bowdlerizing
+Bowdoin
+bowed
+bowel
+bowels
+Bowen
+bower
+bowers
+Bowes
+bowing
+bowl
+bowled
+bowler
+bowlers
+bowline
+bowlines
+bowling
+bowls
+bowman
+bows
+bowstring
+bowstrings
+box
+boxcar
+boxcars
+boxed
+boxer
+boxers
+boxes
+Boxford
+boxing
+boxtop
+boxtops
+boxwood
+boy
+Boyce
+boycott
+boycotted
+boycotts
+Boyd
+boyfriend
+boyfriends
+boyhood
+boyish
+boyishness
+Boyle
+Boylston
+boys
+bra
+brace
+braced
+bracelet
+bracelets
+braces
+bracing
+bracket
+bracketed
+bracketing
+brackets
+brackish
+Bradbury
+Bradford
+Bradley
+Bradshaw
+Brady
+brae
+braes
+brag
+Bragg
+bragged
+bragger
+bragging
+brags
+Brahmaputra
+Brahms
+Brahmsian
+braid
+braided
+braiding
+braids
+Braille
+brain
+Brainard
+Brainards
+brainchild
+brained
+braining
+brains
+brainstem
+brainstems
+brainstorm
+brainstorms
+brainwash
+brainwashed
+brainwashes
+brainwashing
+brainy
+brake
+braked
+brakeman
+brakes
+braking
+bramble
+brambles
+brambly
+bran
+branch
+branched
+branches
+branching
+branchings
+Branchville
+brand
+branded
+Brandeis
+Brandel
+Brandenburg
+branding
+brandish
+brandishes
+brandishing
+Brandon
+brands
+Brandt
+brandy
+brandywine
+Braniff
+Brannon
+bras
+brash
+brashly
+brashness
+Brasilia
+brass
+brasses
+brassiere
+Brasstown
+brassy
+brat
+brats
+Braun
+bravado
+brave
+braved
+bravely
+braveness
+braver
+bravery
+braves
+bravest
+braving
+bravo
+bravos
+brawl
+brawler
+brawling
+brawn
+bray
+brayed
+brayer
+braying
+brays
+braze
+brazed
+brazen
+brazenly
+brazenness
+brazes
+brazier
+braziers
+Brazil
+Brazilian
+brazing
+Brazzaville
+breach
+breached
+breacher
+breachers
+breaches
+breaching
+bread
+breadboard
+breadboards
+breadbox
+breadboxes
+breaded
+breading
+breads
+breadth
+breadwinner
+breadwinners
+break
+breakable
+breakables
+breakage
+breakaway
+breakdown
+breakdowns
+breaker
+breakers
+breakfast
+breakfasted
+breakfaster
+breakfasters
+breakfasting
+breakfasts
+breaking
+breakpoint
+breakpoints
+breaks
+breakthrough
+breakthroughes
+breakthroughs
+breakup
+breakwater
+breakwaters
+breast
+breasted
+breasts
+breastwork
+breastworks
+breath
+breathable
+breathe
+breathed
+breather
+breathers
+breathes
+breathing
+breathless
+breathlessly
+breaths
+breathtaking
+breathtakingly
+breathy
+bred
+breech
+breeches
+breed
+breeder
+breeding
+breeds
+breeze
+breezes
+breezily
+breezy
+Bremen
+bremsstrahlung
+Brenda
+Brendan
+Brennan
+Brenner
+Brent
+Bresenham
+Brest
+brethren
+Breton
+Bretons
+Brett
+breve
+brevet
+breveted
+breveting
+brevets
+brevity
+brew
+brewed
+brewer
+breweries
+brewers
+brewery
+brewing
+brews
+Brewster
+Brian
+briar
+briars
+bribe
+bribed
+briber
+bribers
+bribery
+bribes
+bribing
+Brice
+brick
+brickbat
+bricked
+bricker
+bricklayer
+bricklayers
+bricklaying
+bricks
+bridal
+bride
+bridegroom
+brides
+bridesmaid
+bridesmaids
+Bridewell
+bridge
+bridgeable
+bridged
+bridgehead
+bridgeheads
+Bridgeport
+bridges
+Bridget
+Bridgetown
+Bridgewater
+bridgework
+bridging
+bridle
+bridled
+bridles
+bridling
+Brie
+brief
+briefcase
+briefcases
+briefed
+briefer
+briefest
+briefing
+briefings
+briefly
+briefness
+briefs
+Brien
+brier
+brig
+brigade
+brigades
+brigadier
+brigadiers
+Brigadoon
+brigantine
+Briggs
+Brigham
+bright
+brighten
+brightened
+brightener
+brighteners
+brightening
+brightens
+brighter
+brightest
+brightly
+brightness
+Brighton
+brigs
+brilliance
+brilliancy
+brilliant
+brilliantly
+Brillouin
+brim
+brimful
+brimmed
+brimming
+brimstone
+Brindisi
+brindle
+brindled
+brine
+bring
+bringer
+bringers
+bringing
+brings
+brink
+Brinkley
+brinkmanship
+briny
+Brisbane
+brisk
+brisker
+briskly
+briskness
+bristle
+bristled
+bristles
+bristling
+Bristol
+Britain
+Britannic
+Britannica
+britches
+British
+Britisher
+Britishly
+Briton
+Britons
+Brittany
+Britten
+brittle
+brittleness
+broach
+broached
+broaches
+broaching
+broad
+broadband
+broadcast
+broadcasted
+broadcaster
+broadcasters
+broadcasting
+broadcastings
+broadcasts
+broaden
+broadened
+broadener
+broadeners
+broadening
+broadenings
+broadens
+broader
+broadest
+broadly
+broadness
+broadside
+Broadway
+brocade
+brocaded
+broccoli
+brochure
+brochures
+Brock
+Broglie
+broil
+broiled
+broiler
+broilers
+broiling
+broils
+broke
+broken
+brokenly
+brokenness
+broker
+brokerage
+brokers
+Bromfield
+bromide
+bromides
+bromine
+Bromley
+bronchi
+bronchial
+bronchiole
+bronchioles
+bronchitis
+bronchus
+Brontosaurus
+Bronx
+bronze
+bronzed
+bronzes
+brooch
+brooches
+brood
+brooder
+brooding
+broods
+brook
+Brookdale
+Brooke
+brooked
+Brookfield
+Brookhaven
+Brookline
+Brooklyn
+Brookmont
+brooks
+broom
+brooms
+broomstick
+broomsticks
+broth
+brothel
+brothels
+brother
+brotherhood
+brotherliness
+brotherly
+brothers
+brought
+brow
+browbeat
+browbeaten
+browbeating
+browbeats
+brown
+Browne
+browned
+Brownell
+browner
+brownest
+Brownian
+brownie
+brownies
+browning
+brownish
+brownness
+browns
+brows
+browse
+browsing
+Bruce
+Bruckner
+Bruegel
+bruise
+bruised
+bruises
+bruising
+Brumidi
+brunch
+brunches
+brunette
+Brunhilde
+Bruno
+Brunswick
+brunt
+brush
+brushed
+brushes
+brushfire
+brushfires
+brushing
+brushlike
+brushy
+brusque
+brusquely
+Brussels
+brutal
+brutalities
+brutality
+brutalize
+brutalized
+brutalizes
+brutalizing
+brutally
+brute
+brutes
+brutish
+Bruxelles
+Bryan
+Bryant
+Bryce
+Bryn
+bubble
+bubbled
+bubbles
+bubbling
+bubbly
+Buchanan
+Bucharest
+Buchenwald
+Buchwald
+buck
+buckboard
+buckboards
+bucked
+bucket
+buckets
+bucking
+buckle
+buckled
+buckler
+buckles
+Buckley
+buckling
+Bucknell
+bucks
+buckshot
+buckskin
+buckskins
+buckwheat
+Bucky
+bucolic
+bud
+Budapest
+Budd
+budded
+Buddha
+Buddhism
+Buddhist
+Buddhists
+buddies
+budding
+buddy
+budge
+budged
+budges
+budget
+budgetary
+budgeted
+budgeter
+budgeters
+budgeting
+budgets
+budging
+buds
+Budweiser
+Budweisers
+Buehring
+Buena
+Buenos
+buff
+buffalo
+buffaloes
+buffer
+buffered
+buffering
+buffers
+buffet
+buffeted
+buffeting
+buffetings
+buffets
+buffoon
+buffoons
+buffs
+bug
+bugaboo
+Bugatti
+bugeyed
+bugged
+bugger
+buggers
+buggies
+bugging
+buggy
+bugle
+bugled
+bugler
+bugles
+bugling
+bugs
+Buick
+build
+builder
+builders
+building
+buildings
+builds
+buildup
+buildups
+built
+builtin
+Bujumbura
+bulb
+Bulba
+bulbs
+Bulgaria
+Bulgarian
+bulge
+bulged
+bulging
+bulk
+bulked
+bulkhead
+bulkheads
+bulks
+bulky
+bull
+bulldog
+bulldogs
+bulldoze
+bulldozed
+bulldozer
+bulldozes
+bulldozing
+bulled
+bullet
+bulletin
+bulletins
+bullets
+bullfrog
+bullied
+bullies
+bulling
+bullion
+bullish
+bullock
+bulls
+bullseye
+bully
+bullying
+bulwark
+bum
+bumble
+bumblebee
+bumblebees
+bumbled
+bumbler
+bumblers
+bumbles
+bumbling
+Bumbry
+bummed
+bumming
+bump
+bumped
+bumper
+bumpers
+bumping
+bumps
+bumptious
+bumptiously
+bumptiousness
+bums
+bun
+bunch
+bunched
+bunches
+bunching
+Bundestag
+bundle
+bundled
+bundles
+bundling
+Bundoora
+Bundy
+bungalow
+bungalows
+bungle
+bungled
+bungler
+bunglers
+bungles
+bungling
+bunion
+bunions
+bunk
+bunker
+bunkered
+bunkers
+bunkhouse
+bunkhouses
+bunkmate
+bunkmates
+bunks
+bunnies
+bunny
+buns
+Bunsen
+bunt
+bunted
+bunter
+bunters
+bunting
+bunts
+Bunyan
+buoy
+buoyancy
+buoyant
+buoyed
+buoys
+Burbank
+Burch
+burden
+burdened
+burdening
+burdens
+burdensome
+bureau
+bureaucracies
+bureaucracy
+bureaucrat
+bureaucratic
+bureaucrats
+bureaus
+burgeon
+burgeoned
+burgeoning
+burgess
+burgesses
+burgher
+burghers
+burglar
+burglaries
+burglarize
+burglarized
+burglarizes
+burglarizing
+burglarproof
+burglarproofed
+burglarproofing
+burglarproofs
+burglars
+burglary
+Burgundian
+Burgundies
+Burgundy
+burial
+buried
+buries
+Burke
+Burkes
+burl
+burlesque
+burlesques
+Burlingame
+Burlington
+burly
+Burma
+Burmese
+burn
+Burne
+burned
+burner
+burners
+Burnes
+Burnett
+Burnham
+burning
+burningly
+burnings
+burnish
+burnished
+burnishes
+burnishing
+burns
+Burnside
+Burnsides
+burnt
+burntly
+burntness
+burp
+burped
+burping
+burps
+Burr
+Burroughs
+burrow
+burrowed
+burrower
+burrowing
+burrows
+burrs
+bursa
+bursitis
+burst
+burstiness
+bursting
+bursts
+bursty
+Burt
+Burton
+Burtt
+Burundi
+bury
+burying
+bus
+busboy
+busboys
+Busch
+bused
+buses
+bush
+bushel
+bushels
+bushes
+bushing
+Bushnell
+bushwhack
+bushwhacked
+bushwhacking
+bushwhacks
+bushy
+busied
+busier
+busiest
+busily
+business
+businesses
+businesslike
+businessman
+businessmen
+busing
+buss
+bussed
+busses
+bussing
+bust
+bustard
+bustards
+busted
+buster
+bustle
+bustling
+busts
+busy
+but
+butane
+butcher
+butchered
+butchers
+butchery
+butler
+butlers
+butt
+butte
+butted
+butter
+butterball
+buttercup
+buttered
+butterer
+butterers
+butterfat
+Butterfield
+butterflies
+butterfly
+buttering
+buttermilk
+butternut
+butters
+buttery
+buttes
+butting
+buttock
+buttocks
+button
+buttoned
+buttonhole
+buttonholes
+buttoning
+buttons
+buttress
+buttressed
+buttresses
+buttressing
+Buttrick
+butts
+butyl
+butyrate
+buxom
+Buxtehude
+Buxton
+buy
+buyer
+buyers
+buying
+buys
+buzz
+Buzzard
+buzzards
+buzzed
+buzzer
+buzzes
+buzzing
+buzzword
+buzzwords
+buzzy
+by
+bye
+Byers
+bygone
+bylaw
+bylaws
+byline
+bylines
+bypass
+bypassed
+bypasses
+bypassing
+byproduct
+byproducts
+Byrd
+Byrne
+Byron
+Byronic
+Byronism
+Byronize
+Byronizes
+bystander
+bystanders
+byte
+bytes
+byway
+byways
+byword
+bywords
+Byzantine
+Byzantinize
+Byzantinizes
+Byzantium
+cab
+cabal
+cabana
+cabaret
+cabbage
+cabbages
+cabdriver
+cabin
+cabinet
+cabinets
+cabins
+cable
+cabled
+cables
+cabling
+caboose
+Cabot
+cabs
+cache
+cached
+caches
+caching
+cackle
+cackled
+cackler
+cackles
+cackling
+cacti
+cactus
+cadaver
+cadence
+cadenced
+Cadillac
+Cadillacs
+cadres
+Cady
+Caesar
+Caesarian
+Caesarize
+Caesarizes
+cafe
+cafes
+cafeteria
+cage
+caged
+cager
+cagers
+cages
+caging
+Cahill
+caiman
+Cain
+Caine
+cairn
+Cairo
+cajole
+cajoled
+cajoles
+cajoling
+Cajun
+Cajuns
+cake
+caked
+cakes
+caking
+Calais
+calamities
+calamitous
+calamity
+Calceolaria
+calcify
+calcium
+CALCOMP
+CalComp
+Calcomp
+calculate
+calculated
+calculates
+calculating
+calculation
+calculations
+calculative
+calculator
+calculators
+calculi
+calculus
+Calcutta
+Calder
+caldera
+Caldwell
+Caleb
+calendar
+calendars
+calf
+calfskin
+Calgary
+Calhoun
+caliber
+calibers
+calibrate
+calibrated
+calibrates
+calibrating
+calibration
+calibrations
+calico
+California
+Californian
+Californians
+Caligula
+caliph
+caliphs
+Calkins
+call
+callable
+Callaghan
+Callahan
+Callan
+called
+caller
+callers
+calling
+calliope
+Callisto
+callous
+calloused
+callously
+callousness
+calls
+callus
+calm
+calmed
+calmer
+calmest
+calming
+calmingly
+calmly
+calmness
+calms
+caloric
+calorie
+calories
+calorimeter
+calorimetric
+calorimetry
+Caltech
+calumny
+Calvary
+calve
+Calvert
+calves
+Calvin
+Calvinist
+Calvinize
+Calvinizes
+calypso
+cam
+Cambodia
+Cambrian
+Cambridge
+Camden
+came
+camel
+Camelot
+camels
+Camembert
+camera
+cameraman
+cameramen
+cameras
+Cameron
+Cameroon
+Cameroun
+Camilla
+Camille
+Camino
+camouflage
+camouflaged
+camouflages
+camouflaging
+camp
+campaign
+campaigned
+campaigner
+campaigners
+campaigning
+campaigns
+Campbell
+Campbellsport
+camped
+camper
+campers
+campfire
+campground
+camping
+camps
+campsite
+campus
+campuses
+can
+Canaan
+Canada
+Canadian
+Canadianization
+Canadianizations
+Canadianize
+Canadianizes
+Canadians
+canal
+canals
+canaries
+canary
+Canaveral
+Canberra
+cancel
+canceled
+canceling
+cancellation
+cancellations
+cancels
+cancer
+cancerous
+cancers
+Candace
+candid
+candidacy
+candidate
+candidates
+Candide
+candidly
+candidness
+candied
+candies
+candle
+candlelight
+candler
+candles
+candlestick
+candlesticks
+Candlewick
+candor
+candy
+cane
+caner
+Canfield
+canine
+Canis
+canister
+canker
+cankerworm
+cannabis
+canned
+cannel
+canner
+canners
+cannery
+cannibal
+cannibalize
+cannibalized
+cannibalizes
+cannibalizing
+cannibals
+canning
+cannister
+cannisters
+cannon
+cannonball
+cannons
+cannot
+canny
+canoe
+canoes
+Canoga
+canon
+canonic
+canonical
+canonicalization
+canonicalize
+canonicalized
+canonicalizes
+canonicalizing
+canonically
+canonicals
+canons
+Canopus
+canopy
+cans
+cant
+Cantabrigian
+cantaloupe
+cantankerous
+cantankerously
+canteen
+Canterbury
+cantilever
+canto
+canton
+Cantonese
+cantons
+cantor
+cantors
+Canute
+canvas
+canvases
+canvass
+canvassed
+canvasser
+canvassers
+canvasses
+canvassing
+canyon
+canyons
+cap
+capabilities
+capability
+capable
+capably
+capacious
+capaciously
+capaciousness
+capacitance
+capacitances
+capacities
+capacitive
+capacitor
+capacitors
+capacity
+cape
+caper
+capers
+capes
+Capet
+Capetown
+capillary
+Capistrano
+capita
+capital
+capitalism
+capitalist
+capitalists
+capitalization
+capitalizations
+capitalize
+capitalized
+capitalizer
+capitalizers
+capitalizes
+capitalizing
+capitally
+capitals
+Capitan
+capitol
+Capitoline
+capitols
+capped
+capping
+Cappy
+caprice
+capricious
+capriciously
+capriciousness
+Capricorn
+caps
+Capsicum
+capstan
+capstone
+capsule
+captain
+captained
+captaining
+captains
+caption
+captions
+captivate
+captivated
+captivates
+captivating
+captivation
+captive
+captives
+captivity
+captor
+captors
+capture
+captured
+capturer
+capturers
+captures
+capturing
+Caputo
+capybara
+car
+Caracas
+caramel
+caravan
+caravans
+caraway
+carbohydrate
+carbolic
+Carboloy
+carbon
+carbonate
+carbonates
+carbonation
+Carbondale
+Carbone
+Carbones
+carbonic
+carbonization
+carbonize
+carbonized
+carbonizer
+carbonizers
+carbonizes
+carbonizing
+carbons
+carborundum
+carbuncle
+carcass
+carcasses
+carcinogen
+carcinogenic
+carcinoma
+card
+cardboard
+carder
+cardiac
+Cardiff
+cardinal
+cardinalities
+cardinality
+cardinally
+cardinals
+Cardiod
+cardiology
+cardiovascular
+cards
+care
+cared
+careen
+career
+careers
+carefree
+careful
+carefully
+carefulness
+careless
+carelessly
+carelessness
+cares
+caress
+caressed
+caresser
+caresses
+caressing
+caret
+caretaker
+Carey
+Cargill
+cargo
+cargoes
+Carib
+Caribbean
+caribou
+caricature
+caring
+Carl
+Carla
+Carleton
+Carletonian
+Carlin
+Carlisle
+Carlo
+carload
+Carlsbad
+Carlsbads
+Carlson
+Carlton
+Carlyle
+Carmela
+Carmen
+Carmichael
+carnage
+carnal
+carnation
+Carnegie
+carnival
+carnivals
+carnivorous
+carnivorously
+carol
+Carolina
+Carolinas
+Caroline
+Carolingian
+Carolinian
+Carolinians
+carols
+Carolyn
+carp
+Carpathia
+Carpathians
+carpenter
+carpenters
+carpentry
+carpet
+carpeted
+carpeting
+carpets
+carport
+Carr
+Carrara
+carriage
+carriages
+Carrie
+carried
+carrier
+carriers
+carries
+carrion
+Carroll
+carrot
+carrots
+Carruthers
+carry
+carrying
+carryover
+carryovers
+cars
+Carson
+cart
+carted
+cartel
+carter
+carters
+Cartesian
+Carthage
+Carthaginian
+cartilage
+carting
+cartographer
+cartographic
+cartography
+carton
+cartons
+cartoon
+cartoons
+cartridge
+cartridges
+carts
+cartwheel
+Carty
+Caruso
+carve
+carved
+carver
+carves
+carving
+carvings
+Casanova
+cascadable
+cascade
+cascaded
+cascades
+cascading
+case
+cased
+casement
+casements
+cases
+casework
+Casey
+cash
+cashed
+casher
+cashers
+cashes
+cashew
+cashier
+cashiers
+cashing
+cashmere
+casing
+casings
+casino
+cask
+casket
+caskets
+casks
+Caspian
+Cassandra
+casserole
+casseroles
+cassette
+Cassiopeia
+Cassite
+Cassites
+Cassius
+cassock
+cast
+caste
+caster
+casters
+castes
+castigate
+Castillo
+casting
+castle
+castled
+castles
+castor
+Castro
+Castroism
+casts
+casual
+casually
+casualness
+casuals
+casualties
+casualty
+cat
+cataclysmic
+Catalan
+Catalina
+catalog
+cataloged
+cataloger
+cataloging
+catalogs
+Catalonia
+catalyst
+catalysts
+catalytic
+catapult
+cataract
+catastrophe
+catastrophes
+catastrophic
+Catawba
+catch
+catchable
+catcher
+catchers
+catches
+catching
+categorical
+categorically
+categories
+categorization
+categorize
+categorized
+categorizer
+categorizers
+categorizes
+categorizing
+category
+cater
+catered
+caterer
+catering
+caterpillar
+caterpillars
+caters
+cathedral
+cathedrals
+Catherine
+Catherwood
+catheter
+catheters
+cathode
+cathodes
+Catholic
+Catholicism
+Catholicisms
+Catholics
+Cathy
+catlike
+catnip
+cats
+Catskill
+Catskills
+catsup
+cattail
+cattle
+cattleman
+cattlemen
+Caucasian
+Caucasians
+Caucasus
+Cauchy
+caucus
+caught
+cauldron
+cauldrons
+cauliflower
+caulk
+causal
+causality
+causally
+causation
+causations
+cause
+caused
+causer
+causes
+causeway
+causeways
+causing
+caustic
+causticly
+caustics
+caution
+cautioned
+cautioner
+cautioners
+cautioning
+cautionings
+cautions
+cautious
+cautiously
+cautiousness
+cavalier
+cavalierly
+cavalierness
+cavalry
+cave
+caveat
+caveats
+caved
+caveman
+cavemen
+Cavendish
+cavern
+cavernous
+caverns
+caves
+caviar
+cavil
+Caviness
+caving
+cavities
+cavity
+caw
+cawing
+Cayley
+Cayuga
+cease
+ceased
+ceaseless
+ceaselessly
+ceaselessness
+ceases
+ceasing
+Cecil
+Cecilia
+Cecropia
+cedar
+cede
+ceded
+ceding
+Cedric
+ceiling
+ceilings
+Celanese
+Celebes
+celebrate
+celebrated
+celebrates
+celebrating
+celebration
+celebrations
+celebrities
+celebrity
+celerity
+celery
+Celeste
+celestial
+celestially
+Celia
+cell
+cellar
+cellars
+celled
+cellist
+cellists
+cellophane
+cells
+cellular
+cellulose
+Celsius
+Celt
+Celtic
+Celticize
+Celticizes
+cement
+cemented
+cementing
+cements
+cemeteries
+cemetery
+Cenozoic
+censor
+censored
+censoring
+censors
+censorship
+censure
+censured
+censurer
+censures
+census
+censuses
+cent
+centaur
+centenary
+centennial
+center
+centered
+centering
+centerpiece
+centerpieces
+centers
+centigrade
+centimeter
+centimeters
+centipede
+centipedes
+central
+Centralia
+centralism
+centralist
+centralization
+centralize
+centralized
+centralizes
+centralizing
+centrally
+CENTREX
+Centrex
+centrifugal
+centrifuge
+centripetal
+centrist
+centroid
+cents
+centuries
+century
+Cepheus
+ceramic
+Cerberus
+cereal
+cereals
+cerebellum
+cerebral
+ceremonial
+ceremonially
+ceremonialness
+ceremonies
+ceremony
+Ceres
+CERN
+certain
+certainly
+certainties
+certainty
+certifiable
+certificate
+certificates
+certification
+certifications
+certified
+certifier
+certifiers
+certifies
+certify
+certifying
+Cervantes
+Cesare
+cessation
+cessations
+Cessna
+Cetus
+Ceylon
+Cezanne
+Cezannes
+Chablis
+Chablises
+Chad
+Chadwick
+chafe
+chafer
+chaff
+chaffer
+Chaffey
+chaffing
+chafing
+chagrin
+chain
+chained
+chaining
+chains
+chair
+chaired
+chairing
+chairlady
+chairman
+chairmen
+chairperson
+chairpersons
+chairs
+chairwoman
+chairwomen
+chalice
+chalices
+chalk
+chalked
+chalking
+chalks
+challenge
+challenged
+challenger
+challengers
+challenges
+challenging
+Chalmers
+chamber
+chambered
+chamberlain
+chamberlains
+chambermaid
+Chambers
+chameleon
+champagne
+Champaign
+champion
+championed
+championing
+champions
+championship
+championships
+Champlain
+chance
+chanced
+chancellor
+Chancellorsville
+chancery
+chances
+chancing
+chandelier
+chandeliers
+Chandigarh
+Chang
+change
+changeability
+changeable
+changeably
+changed
+changeover
+changer
+changers
+changes
+changing
+channel
+channeled
+channeling
+channelled
+channeller
+channellers
+channelling
+channels
+Channing
+chant
+chanted
+chanter
+chanticleer
+chanticleers
+Chantilly
+chanting
+chants
+Chao
+chaos
+chaotic
+chap
+chapel
+chapels
+chaperon
+chaperone
+chaperoned
+chaplain
+chaplains
+Chaplin
+Chapman
+chaps
+chapter
+chapters
+char
+character
+characteristic
+characteristically
+characteristics
+characterizable
+characterization
+characterizations
+characterize
+characterized
+characterizer
+characterizers
+characterizes
+characterizing
+characters
+charcoal
+charcoaled
+charge
+chargeable
+charged
+charger
+chargers
+charges
+charging
+chariot
+chariots
+charisma
+charismatic
+charitable
+charitableness
+charities
+charity
+Charlemagne
+Charlemagnes
+Charles
+Charleston
+Charley
+Charlie
+Charlotte
+Charlottesville
+charm
+charmed
+charmer
+charmers
+charming
+charmingly
+charms
+Charon
+chars
+chart
+Charta
+chartable
+charted
+charter
+chartered
+chartering
+charters
+charting
+chartings
+Chartres
+chartreuse
+charts
+Charybdis
+chase
+chased
+chaser
+chasers
+chases
+chasing
+chasm
+chasms
+chassis
+chaste
+chastely
+chasteness
+chastise
+chastised
+chastiser
+chastisers
+chastises
+chastising
+chastity
+chat
+chateau
+chateaus
+Chatham
+Chattahoochee
+Chattanooga
+chattel
+chatter
+chattered
+chatterer
+chattering
+chatters
+chatting
+chatty
+Chaucer
+chauffeur
+chauffeured
+Chauncey
+Chautauqua
+cheap
+cheapen
+cheapened
+cheapening
+cheapens
+cheaper
+cheapest
+cheaply
+cheapness
+cheat
+cheated
+cheater
+cheaters
+cheating
+cheats
+check
+checkable
+checkbook
+checkbooks
+checked
+checker
+checkerboard
+checkerboarded
+checkerboarding
+checkers
+checking
+checklist
+checkout
+checkpoint
+checkpoints
+checks
+checksum
+checksummed
+checksumming
+checksums
+checkup
+cheek
+cheekbone
+cheeks
+cheeky
+cheer
+cheered
+cheerer
+cheerful
+cheerfully
+cheerfulness
+cheerily
+cheeriness
+cheering
+cheerleader
+cheerless
+cheerlessly
+cheerlessness
+cheers
+cheery
+cheese
+cheesecloth
+cheeses
+cheesy
+cheetah
+chef
+chefs
+Chekhov
+Chelsea
+chemical
+chemically
+chemicals
+chemise
+chemist
+chemistries
+chemistry
+chemists
+Chen
+Cheney
+Cheng
+cherish
+cherished
+cherishes
+cherishing
+Cheriton
+Cherokee
+Cherokees
+cherries
+cherry
+cherub
+cherubim
+cherubs
+Cheryl
+Chesapeake
+Cheshire
+chess
+chest
+Chester
+Chesterfield
+Chesterton
+chestnut
+chestnuts
+chests
+Chevrolet
+Chevy
+chew
+chewed
+chewer
+chewers
+chewing
+chews
+Cheyenne
+Cheyennes
+Chiang
+chic
+Chicago
+Chicagoan
+Chicagoans
+Chicana
+Chicanas
+chicanery
+Chicano
+Chicanos
+chick
+chickadee
+chickadees
+Chickasaws
+chicken
+chickens
+chicks
+chide
+chided
+chides
+chiding
+chief
+chiefly
+chiefs
+chieftain
+chieftains
+chiffon
+child
+childbirth
+childhood
+childish
+childishly
+childishness
+childlike
+children
+Chile
+Chilean
+Chiles
+chili
+chill
+chilled
+chiller
+chillers
+chillier
+chilliness
+chilling
+chillingly
+chills
+chilly
+chime
+chimera
+chimes
+chimney
+chimneys
+chimpanzee
+chin
+China
+Chinaman
+Chinamen
+Chinas
+Chinatown
+Chinese
+Ching
+chink
+chinked
+chinks
+chinned
+chinner
+chinners
+chinning
+Chinook
+chins
+chintz
+chip
+chipmunk
+chipmunks
+Chippendale
+Chippewa
+chips
+chiropractor
+chirp
+chirped
+chirping
+chirps
+chisel
+chiseled
+chiseler
+chisels
+Chisholm
+chit
+chivalrous
+chivalrously
+chivalrousness
+chivalry
+Chloe
+chlorine
+chloroform
+chlorophyll
+chloroplast
+chloroplasts
+chock
+chocks
+chocolate
+chocolates
+Choctaw
+Choctaws
+choice
+choices
+choicest
+choir
+choirs
+choke
+choked
+choker
+chokers
+chokes
+choking
+cholera
+Chomsky
+choose
+chooser
+choosers
+chooses
+choosing
+chop
+Chopin
+chopped
+chopper
+choppers
+chopping
+choppy
+chops
+choral
+chord
+chordate
+chorded
+chording
+chords
+chore
+choreograph
+choreography
+chores
+choring
+chortle
+chorus
+chorused
+choruses
+chose
+chosen
+Chou
+chowder
+Chris
+Christ
+christen
+Christendom
+christened
+christening
+christens
+Christensen
+Christenson
+Christian
+Christiana
+Christianity
+Christianization
+Christianizations
+Christianize
+Christianizer
+Christianizers
+Christianizes
+Christianizing
+Christians
+Christiansen
+Christianson
+Christie
+Christina
+Christine
+Christlike
+Christmas
+Christoffel
+Christoph
+Christopher
+Christy
+chromatogram
+chromatograph
+chromatography
+chrome
+chromium
+chromosphere
+chronic
+chronicle
+chronicled
+chronicler
+chroniclers
+chronicles
+chronograph
+chronography
+chronological
+chronologically
+chronologies
+chronology
+chrysanthemum
+Chrysler
+chubbier
+chubbiest
+chubbiness
+chubby
+chuck
+chuckle
+chuckled
+chuckles
+chucks
+chum
+Chungking
+chunk
+chunks
+chunky
+church
+churches
+churchgoer
+churchgoing
+Churchill
+Churchillian
+churchly
+churchman
+churchmen
+churchwoman
+churchwomen
+churchyard
+churchyards
+churn
+churned
+churning
+churns
+chute
+chutes
+chutzpah
+cicada
+Cicero
+Ciceronian
+Ciceronianize
+Ciceronianizes
+cider
+cigar
+cigarette
+cigarettes
+cigars
+cilia
+Cincinnati
+cinder
+Cinderella
+cinders
+Cindy
+cinema
+cinematic
+Cinerama
+cinnamon
+cipher
+ciphers
+ciphertext
+ciphertexts
+circa
+Circe
+circle
+circled
+circles
+circlet
+circling
+circuit
+circuitous
+circuitously
+circuitry
+circuits
+circulant
+circular
+circularity
+circularly
+circulate
+circulated
+circulates
+circulating
+circulation
+circumcise
+circumcision
+circumference
+circumflex
+circumlocution
+circumlocutions
+circumnavigate
+circumnavigated
+circumnavigates
+circumpolar
+circumscribe
+circumscribed
+circumscribing
+circumscription
+circumspect
+circumspection
+circumspectly
+circumstance
+circumstanced
+circumstances
+circumstantial
+circumstantially
+circumvent
+circumventable
+circumvented
+circumventing
+circumvents
+circus
+circuses
+cistern
+cisterns
+citadel
+citadels
+citation
+citations
+cite
+cited
+cites
+cities
+citing
+citizen
+citizens
+citizenship
+Citroen
+citrus
+city
+cityscape
+citywide
+civet
+civic
+civics
+civil
+civilian
+civilians
+civility
+civilization
+civilizations
+civilize
+civilized
+civilizes
+civilizing
+civilly
+clad
+cladding
+claim
+claimable
+claimant
+claimants
+claimed
+claiming
+claims
+Claire
+clairvoyant
+clairvoyantly
+clam
+clamber
+clambered
+clambering
+clambers
+clamor
+clamored
+clamoring
+clamorous
+clamors
+clamp
+clamped
+clamping
+clamps
+clams
+clan
+clandestine
+clang
+clanged
+clanging
+clangs
+clank
+clannish
+clap
+clapboard
+Clapeyron
+clapping
+claps
+Clara
+Clare
+Claremont
+Clarence
+Clarendon
+clarification
+clarifications
+clarified
+clarifies
+clarify
+clarifying
+clarinet
+clarity
+Clark
+Clarke
+Clarridge
+clash
+clashed
+clashes
+clashing
+clasp
+clasped
+clasping
+clasps
+class
+classed
+classes
+classic
+classical
+classically
+classics
+classifiable
+classification
+classifications
+classified
+classifier
+classifiers
+classifies
+classify
+classifying
+classmate
+classmates
+classroom
+classrooms
+classy
+clatter
+clattered
+clattering
+Claude
+Claudia
+Claudio
+Claus
+clause
+Clausen
+clauses
+Clausius
+claustrophobia
+claustrophobic
+claw
+clawed
+clawing
+claws
+clay
+clays
+Clayton
+clean
+cleaned
+cleaner
+cleaners
+cleanest
+cleaning
+cleanliness
+cleanly
+cleanness
+cleans
+cleanse
+cleansed
+cleanser
+cleansers
+cleanses
+cleansing
+cleanup
+clear
+clearance
+clearances
+cleared
+clearer
+clearest
+clearing
+clearings
+clearly
+clearness
+clears
+Clearwater
+cleavage
+cleave
+cleaved
+cleaver
+cleavers
+cleaves
+cleaving
+cleft
+clefts
+clemency
+Clemens
+clement
+Clemente
+Clemson
+clench
+clenched
+clenches
+clergy
+clergyman
+clergymen
+clerical
+clerk
+clerked
+clerking
+clerks
+Cleveland
+clever
+cleverer
+cleverest
+cleverly
+cleverness
+cliche
+cliches
+click
+clicked
+clicking
+clicks
+client
+clientele
+clients
+cliff
+Clifford
+cliffs
+Clifton
+climate
+climates
+climatic
+climatically
+climatology
+climax
+climaxed
+climaxes
+climb
+climbed
+climber
+climbers
+climbing
+climbs
+clime
+climes
+clinch
+clinched
+clincher
+clinches
+cling
+clinging
+clings
+clinic
+clinical
+clinically
+clinician
+clinics
+clink
+clinked
+clinker
+Clint
+Clinton
+Clio
+clip
+clipboard
+clipped
+clipper
+clippers
+clipping
+clippings
+clips
+clique
+cliques
+clitoris
+Clive
+cloak
+cloakroom
+cloaks
+clobber
+clobbered
+clobbering
+clobbers
+clock
+clocked
+clocker
+clockers
+clocking
+clockings
+clocks
+clockwatcher
+clockwise
+clockwork
+clod
+clods
+clog
+clogged
+clogging
+clogs
+cloister
+cloisters
+clone
+cloned
+clones
+cloning
+close
+closed
+closely
+closeness
+closenesses
+closer
+closers
+closes
+closest
+closet
+closeted
+closets
+closeup
+closing
+closure
+closures
+clot
+cloth
+clothe
+clothed
+clothes
+clotheshorse
+clothesline
+clothing
+Clotho
+clotting
+cloture
+cloud
+cloudburst
+clouded
+cloudier
+cloudiest
+cloudiness
+clouding
+cloudless
+clouds
+cloudy
+clout
+clove
+clover
+cloves
+clown
+clowning
+clowns
+club
+clubbed
+clubbing
+clubhouse
+clubroom
+clubs
+cluck
+clucked
+clucking
+clucks
+clue
+clues
+Cluj
+clump
+clumped
+clumping
+clumps
+clumsily
+clumsiness
+clumsy
+clung
+cluster
+clustered
+clustering
+clusterings
+clusters
+clutch
+clutched
+clutches
+clutching
+clutter
+cluttered
+cluttering
+clutters
+Clyde
+Clytemnestra
+coach
+coached
+coacher
+coaches
+coaching
+coachman
+coachmen
+coagulate
+coal
+coalesce
+coalesced
+coalesces
+coalescing
+coalition
+coals
+coarse
+coarsely
+coarsen
+coarsened
+coarseness
+coarser
+coarsest
+coast
+coastal
+coasted
+coaster
+coasters
+coasting
+coastline
+coasts
+coat
+coated
+Coates
+coating
+coatings
+coats
+coattail
+coauthor
+coax
+coaxed
+coaxer
+coaxes
+coaxial
+coaxing
+cobalt
+Cobb
+cobble
+cobbler
+cobblers
+cobblestone
+COBOL
+Cobol
+cobra
+cobweb
+cobwebs
+coca
+cocaine
+Cochise
+Cochran
+Cochrane
+cock
+cocked
+cocking
+cockpit
+cockroach
+cocks
+cocktail
+cocktails
+cocky
+coco
+cocoa
+coconut
+coconuts
+cocoon
+cocoons
+cod
+Coddington
+coddle
+code
+coded
+codeine
+coder
+coders
+codes
+codeword
+codewords
+codfish
+codicil
+codification
+codifications
+codified
+codifier
+codifiers
+codifies
+codify
+codifying
+coding
+codings
+codpiece
+Cody
+coed
+coeditor
+coeducation
+coefficient
+coefficients
+coequal
+coerce
+coerced
+coerces
+coercible
+coercing
+coercion
+coercive
+coexist
+coexisted
+coexistence
+coexisting
+coexists
+cofactor
+coffee
+coffeecup
+coffeepot
+coffees
+coffer
+coffers
+Coffey
+coffin
+coffins
+Coffman
+cog
+cogent
+cogently
+cogitate
+cogitated
+cogitates
+cogitating
+cogitation
+cognac
+cognition
+cognitive
+cognitively
+cognizance
+cognizant
+cogs
+cohabitation
+cohabitations
+Cohen
+cohere
+cohered
+coherence
+coherent
+coherently
+coheres
+cohering
+cohesion
+cohesive
+cohesively
+cohesiveness
+Cohn
+cohort
+coil
+coiled
+coiling
+coils
+coin
+coinage
+coincide
+coincided
+coincidence
+coincidences
+coincident
+coincidental
+coincides
+coinciding
+coined
+coiner
+coining
+coins
+coke
+cokes
+colander
+Colby
+cold
+colder
+coldest
+coldly
+coldness
+colds
+Cole
+Coleman
+Coleridge
+Colette
+Colgate
+colicky
+coliform
+coliseum
+collaborate
+collaborated
+collaborates
+collaborating
+collaboration
+collaborations
+collaborative
+collaborator
+collaborators
+collagen
+collapse
+collapsed
+collapses
+collapsible
+collapsing
+collar
+collarbone
+collared
+collaring
+collars
+collate
+collateral
+colleague
+colleagues
+collect
+collected
+collectible
+collecting
+collection
+collections
+collective
+collectively
+collectives
+collector
+collectors
+collects
+college
+colleges
+collegian
+collegiate
+collide
+collided
+collides
+colliding
+collie
+Collier
+collies
+Collins
+collision
+collisions
+colloidal
+colloquia
+colloquial
+colloquium
+colloquy
+collusion
+Cologne
+Colombia
+Colombian
+Colombians
+Colombo
+colon
+colonel
+colonels
+colonial
+colonially
+colonials
+colonies
+colonist
+colonists
+colonization
+colonize
+colonized
+colonizer
+colonizers
+colonizes
+colonizing
+colons
+colony
+color
+Colorado
+colored
+colorer
+colorers
+colorful
+coloring
+colorings
+colorless
+colors
+colossal
+Colosseum
+colt
+colts
+Columbia
+Columbian
+Columbus
+column
+columnize
+columnized
+columnizes
+columnizing
+columns
+Comanche
+comb
+combat
+combatant
+combatants
+combated
+combating
+combative
+combats
+combed
+comber
+combers
+combination
+combinational
+combinations
+combinator
+combinatorial
+combinatorially
+combinatoric
+combinatorics
+combinators
+combine
+combined
+combines
+combing
+combings
+combining
+combs
+combustible
+combustion
+Comdex
+come
+comeback
+comedian
+comedians
+comedic
+comedies
+comedy
+comeliness
+comely
+comer
+comers
+comes
+comestible
+comet
+cometary
+comets
+comfort
+comfortabilities
+comfortability
+comfortable
+comfortably
+comforted
+comforter
+comforters
+comforting
+comfortingly
+comforts
+comic
+comical
+comically
+comics
+Cominform
+coming
+comings
+comma
+command
+commandant
+commandants
+commanded
+commandeer
+commander
+commanders
+commanding
+commandingly
+commandment
+commandments
+commando
+commands
+commas
+commemorate
+commemorated
+commemorates
+commemorating
+commemoration
+commemorative
+commence
+commenced
+commencement
+commencements
+commences
+commencing
+commend
+commendation
+commendations
+commended
+commending
+commends
+commensurate
+comment
+commentaries
+commentary
+commentator
+commentators
+commented
+commenting
+comments
+commerce
+commercial
+commercially
+commercialness
+commercials
+commission
+commissioned
+commissioner
+commissioners
+commissioning
+commissions
+commit
+commitment
+commitments
+commits
+committed
+committee
+committeeman
+committeemen
+committees
+committeewoman
+committeewomen
+committing
+commodities
+commodity
+commodore
+commodores
+common
+commonalities
+commonality
+commoner
+commoners
+commonest
+commonly
+commonness
+commonplace
+commonplaces
+commons
+commonwealth
+commonwealths
+commotion
+communal
+communally
+commune
+communes
+communicant
+communicants
+communicate
+communicated
+communicates
+communicating
+communication
+communications
+communicative
+communicator
+communicators
+communion
+communist
+communists
+communities
+community
+commutative
+commutativity
+commute
+commuted
+commuter
+commuters
+commutes
+commuting
+compact
+compacted
+compacter
+compactest
+compacting
+compaction
+compactly
+compactness
+compactor
+compactors
+compacts
+companies
+companion
+companionable
+companions
+companionship
+company
+comparability
+comparable
+comparably
+comparative
+comparatively
+comparatives
+comparator
+comparators
+compare
+compared
+compares
+comparing
+comparison
+comparisons
+compartment
+compartmentalize
+compartmentalized
+compartmentalizes
+compartmentalizing
+compartmented
+compartments
+compass
+compassion
+compassionate
+compassionately
+compatibilities
+compatibility
+compatible
+compatibles
+compatibly
+compel
+compelled
+compelling
+compellingly
+compels
+compendium
+compensate
+compensated
+compensates
+compensating
+compensation
+compensations
+compensatory
+compete
+competed
+competence
+competency
+competent
+competently
+competes
+competing
+competition
+competitions
+competitive
+competitively
+competitor
+competitors
+compilation
+compilations
+compile
+compiled
+compiler
+compilers
+compiles
+compiling
+complacency
+complain
+complained
+complainer
+complainers
+complaining
+complains
+complaint
+complaints
+complement
+complementary
+complemented
+complementer
+complementers
+complementing
+complements
+complete
+completed
+completely
+completeness
+completes
+completing
+completion
+completions
+complex
+complexes
+complexion
+complexities
+complexity
+complexly
+compliance
+compliant
+complicate
+complicated
+complicates
+complicating
+complication
+complications
+complicator
+complicators
+complicity
+complied
+compliment
+complimentary
+complimented
+complimenter
+complimenters
+complimenting
+compliments
+comply
+complying
+component
+componentry
+components
+componentwise
+compose
+composed
+composedly
+composer
+composers
+composes
+composing
+composite
+composites
+composition
+compositional
+compositions
+compost
+composure
+compound
+compounded
+compounding
+compounds
+comprehend
+comprehended
+comprehending
+comprehends
+comprehensibility
+comprehensible
+comprehension
+comprehensive
+comprehensively
+compress
+compressed
+compresses
+compressible
+compressing
+compression
+compressive
+compressor
+comprise
+comprised
+comprises
+comprising
+compromise
+compromised
+compromiser
+compromisers
+compromises
+compromising
+compromisingly
+Compton
+comptroller
+comptrollers
+compulsion
+compulsions
+compulsive
+compulsory
+compunction
+Compuserve
+computability
+computable
+computation
+computational
+computationally
+computations
+compute
+computed
+computer
+computerize
+computerized
+computerizes
+computerizing
+computers
+computes
+computing
+comrade
+comradely
+comrades
+comradeship
+con
+Conakry
+Conant
+concatenate
+concatenated
+concatenates
+concatenating
+concatenation
+concatenations
+concave
+conceal
+concealed
+concealer
+concealers
+concealing
+concealment
+conceals
+concede
+conceded
+concedes
+conceding
+conceit
+conceited
+conceits
+conceivable
+conceivably
+conceive
+conceived
+conceives
+conceiving
+concentrate
+concentrated
+concentrates
+concentrating
+concentration
+concentrations
+concentrator
+concentrators
+concentric
+concept
+conception
+conceptions
+concepts
+conceptual
+conceptualization
+conceptualizations
+conceptualize
+conceptualized
+conceptualizes
+conceptualizing
+conceptually
+concern
+concerned
+concernedly
+concerning
+concerns
+concert
+concerted
+concertmaster
+concerto
+concerts
+concession
+concessions
+conciliate
+conciliatory
+concise
+concisely
+conciseness
+conclave
+conclude
+concluded
+concludes
+concluding
+conclusion
+conclusions
+conclusive
+conclusively
+concoct
+concomitant
+concord
+concordant
+Concorde
+Concordia
+concourse
+concrete
+concretely
+concreteness
+concretes
+concretion
+concubine
+concur
+concurred
+concurrence
+concurrencies
+concurrency
+concurrent
+concurrently
+concurring
+concurs
+concussion
+condemn
+condemnation
+condemnations
+condemned
+condemner
+condemners
+condemning
+condemns
+condensation
+condense
+condensed
+condenser
+condenses
+condensing
+condescend
+condescending
+condition
+conditional
+conditionally
+conditionals
+conditioned
+conditioner
+conditioners
+conditioning
+conditions
+condom
+condone
+condoned
+condones
+condoning
+conduce
+conducive
+conduciveness
+conduct
+conductance
+conducted
+conducting
+conduction
+conductive
+conductivity
+conductor
+conductors
+conducts
+conduit
+cone
+cones
+Conestoga
+confectionery
+confederacy
+confederate
+confederates
+confederation
+confederations
+confer
+conferee
+conference
+conferences
+conferred
+conferrer
+conferrers
+conferring
+confers
+confess
+confessed
+confesses
+confessing
+confession
+confessions
+confessor
+confessors
+confidant
+confidants
+confide
+confided
+confidence
+confidences
+confident
+confidential
+confidentiality
+confidentially
+confidently
+confides
+confiding
+confidingly
+configurable
+configuration
+configurations
+configure
+configured
+configures
+configuring
+confine
+confined
+confinement
+confinements
+confiner
+confines
+confining
+confirm
+confirmation
+confirmations
+confirmatory
+confirmed
+confirming
+confirms
+confiscate
+confiscated
+confiscates
+confiscating
+confiscation
+confiscations
+conflagration
+conflict
+conflicted
+conflicting
+conflicts
+confluent
+confocal
+conform
+conformal
+conformance
+conformed
+conforming
+conformity
+conforms
+confound
+confounded
+confounding
+confounds
+confront
+confrontation
+confrontations
+confronted
+confronter
+confronters
+confronting
+confronts
+Confucian
+Confucianism
+Confucius
+confuse
+confused
+confuser
+confusers
+confuses
+confusing
+confusingly
+confusion
+confusions
+congenial
+congenially
+congenital
+congest
+congested
+congestion
+congestive
+conglomerate
+Congo
+Congolese
+congratulate
+congratulated
+congratulation
+congratulations
+congratulatory
+congregate
+congregated
+congregates
+congregating
+congregation
+congregations
+congress
+congresses
+congressional
+congressionally
+congressman
+congressmen
+congresswoman
+congresswomen
+congruence
+congruent
+conic
+conifer
+coniferous
+conjecture
+conjectured
+conjectures
+conjecturing
+conjoined
+conjugal
+conjugate
+conjunct
+conjuncted
+conjunction
+conjunctions
+conjunctive
+conjunctively
+conjuncts
+conjuncture
+conjure
+conjured
+conjurer
+conjures
+conjuring
+Conklin
+Conley
+Connally
+connect
+connected
+connectedness
+Connecticut
+connecting
+connection
+connectionless
+connections
+connective
+connectives
+connectivity
+connector
+connectors
+connects
+Connelly
+Conner
+Connie
+connivance
+connive
+connoisseur
+connoisseurs
+Connors
+connotation
+connotative
+connote
+connoted
+connotes
+connoting
+connubial
+conquer
+conquerable
+conquered
+conquerer
+conquerers
+conquering
+conqueror
+conquerors
+conquers
+conquest
+conquests
+Conrad
+Conrail
+conscience
+consciences
+conscientious
+conscientiously
+conscious
+consciously
+consciousness
+conscript
+conscription
+consecrate
+consecration
+consecutive
+consecutively
+consensual
+consensus
+consent
+consented
+consenter
+consenters
+consenting
+consents
+consequence
+consequences
+consequent
+consequential
+consequentialities
+consequentiality
+consequently
+consequents
+conservation
+conservationist
+conservationists
+conservations
+conservatism
+conservative
+conservatively
+conservatives
+conservator
+conserve
+conserved
+conserves
+conserving
+consider
+considerable
+considerably
+considerate
+considerately
+consideration
+considerations
+considered
+considering
+considers
+consign
+consigned
+consigning
+consigns
+consist
+consisted
+consistency
+consistent
+consistently
+consisting
+consists
+consolable
+consolation
+consolations
+console
+consoled
+consoler
+consolers
+consoles
+consolidate
+consolidated
+consolidates
+consolidating
+consolidation
+consoling
+consolingly
+consonant
+consonants
+consort
+consorted
+consorting
+consortium
+consorts
+conspicuous
+conspicuously
+conspiracies
+conspiracy
+conspirator
+conspirators
+conspire
+conspired
+conspires
+conspiring
+constable
+constables
+Constance
+constancy
+constant
+Constantine
+Constantinople
+constantly
+constants
+constellation
+constellations
+consternation
+constituencies
+constituency
+constituent
+constituents
+constitute
+constituted
+constitutes
+constituting
+constitution
+constitutional
+constitutionality
+constitutionally
+constitutions
+constitutive
+constrain
+constrained
+constraining
+constrains
+constraint
+constraints
+constrict
+construct
+constructed
+constructibility
+constructible
+constructing
+construction
+constructions
+constructive
+constructively
+constructor
+constructors
+constructs
+construe
+construed
+construing
+consul
+consular
+consulate
+consulates
+consuls
+consult
+consultant
+consultants
+consultation
+consultations
+consultative
+consulted
+consulting
+consults
+consumable
+consume
+consumed
+consumer
+consumers
+consumes
+consuming
+consummate
+consummated
+consummately
+consummation
+consumption
+consumptions
+consumptive
+consumptively
+contact
+contacted
+contacting
+contacts
+contagion
+contagious
+contagiously
+contain
+containable
+contained
+container
+containers
+containing
+containment
+containments
+contains
+contaminate
+contaminated
+contaminates
+contaminating
+contamination
+contemplate
+contemplated
+contemplates
+contemplating
+contemplation
+contemplations
+contemplative
+contemporaries
+contemporariness
+contemporary
+contempt
+contemptible
+contemptuous
+contemptuously
+contend
+contended
+contender
+contenders
+contending
+contends
+content
+contented
+contenting
+contention
+contentions
+contently
+contentment
+contents
+contest
+contestable
+contestant
+contested
+contester
+contesters
+contesting
+contests
+context
+contexts
+contextual
+contextually
+contiguity
+contiguous
+contiguously
+continent
+continental
+continentally
+continents
+contingencies
+contingency
+contingent
+contingents
+continual
+continually
+continuance
+continuances
+continuation
+continuations
+continue
+continued
+continues
+continuing
+continuities
+continuity
+continuous
+continuously
+continuum
+contortions
+contour
+contoured
+contouring
+contours
+contraband
+contraception
+contraceptive
+contract
+contracted
+contracting
+contraction
+contractions
+contractor
+contractors
+contracts
+contractual
+contractually
+contradict
+contradicted
+contradicting
+contradiction
+contradictions
+contradictory
+contradicts
+contradistinction
+contradistinctions
+contrapositive
+contrapositives
+contraption
+contraptions
+contrariness
+contrary
+contrast
+contrasted
+contraster
+contrasters
+contrasting
+contrastingly
+contrasts
+contribute
+contributed
+contributes
+contributing
+contribution
+contributions
+contributor
+contributorily
+contributors
+contributory
+contrite
+contrition
+contrivance
+contrivances
+contrive
+contrived
+contriver
+contrives
+contriving
+control
+controllability
+controllable
+controllably
+controlled
+controller
+controllers
+controlling
+controls
+controversial
+controversies
+controversy
+controvertible
+contumacious
+contumacy
+conundrum
+conundrums
+Convair
+convalescent
+convect
+convene
+convened
+convenes
+convenience
+conveniences
+convenient
+conveniently
+convening
+convent
+convention
+conventional
+conventionally
+conventions
+convents
+converge
+converged
+convergence
+convergent
+converges
+converging
+conversant
+conversantly
+conversation
+conversational
+conversationally
+conversations
+converse
+conversed
+conversely
+converses
+conversing
+conversion
+conversions
+convert
+converted
+converter
+converters
+convertibility
+convertible
+converting
+converts
+convex
+convey
+conveyance
+conveyances
+conveyed
+conveyer
+conveyers
+conveying
+conveyor
+conveys
+convict
+convicted
+convicting
+conviction
+convictions
+convicts
+convince
+convinced
+convincer
+convincers
+convinces
+convincing
+convincingly
+convivial
+convoke
+convoluted
+convolution
+convoy
+convoyed
+convoying
+convoys
+convulse
+convulsion
+convulsions
+Conway
+coo
+cooing
+cook
+cookbook
+Cooke
+cooked
+cookery
+cookie
+cookies
+cooking
+cooks
+cooky
+cool
+cooled
+cooler
+coolers
+coolest
+Cooley
+Coolidge
+coolie
+coolies
+cooling
+coolly
+coolness
+cools
+coon
+coons
+coop
+cooped
+cooper
+cooperate
+cooperated
+cooperates
+cooperating
+cooperation
+cooperations
+cooperative
+cooperatively
+cooperatives
+cooperator
+cooperators
+coopers
+coops
+coordinate
+coordinated
+coordinates
+coordinating
+coordination
+coordinations
+coordinator
+coordinators
+Coors
+cop
+cope
+coped
+Copeland
+Copenhagen
+Copernican
+Copernicus
+copes
+copied
+copier
+copiers
+copies
+coping
+copings
+copious
+copiously
+copiousness
+coplanar
+copper
+Copperfield
+copperhead
+coppers
+copra
+coprocessor
+cops
+copse
+copy
+copying
+copyright
+copyrightable
+copyrighted
+copyrights
+copywriter
+coquette
+coral
+Corbett
+Corcoran
+cord
+corded
+corder
+cordial
+cordiality
+cordially
+cords
+core
+cored
+corer
+corers
+cores
+Corey
+coriander
+coring
+Corinth
+Corinthian
+Corinthianize
+Corinthianizes
+Corinthians
+Coriolanus
+cork
+corked
+corker
+corkers
+corking
+corks
+corkscrew
+cormorant
+corn
+cornea
+Cornelia
+Cornelian
+Cornelius
+Cornell
+corner
+cornered
+corners
+cornerstone
+cornerstones
+cornet
+cornfield
+cornfields
+corning
+Cornish
+cornmeal
+corns
+cornstarch
+cornucopia
+Cornwall
+Cornwallis
+corny
+corollaries
+corollary
+Coronado
+coronaries
+coronary
+coronation
+coroner
+coronet
+coronets
+coroutine
+coroutines
+corporal
+corporals
+corporate
+corporately
+corporation
+corporations
+corps
+corpse
+corpses
+corpulent
+corpus
+corpuscular
+corral
+correct
+correctable
+corrected
+correcting
+correction
+corrections
+corrective
+correctively
+correctives
+correctly
+correctness
+corrector
+corrects
+correlate
+correlated
+correlates
+correlating
+correlation
+correlations
+correlative
+correspond
+corresponded
+correspondence
+correspondences
+correspondent
+correspondents
+corresponding
+correspondingly
+corresponds
+corridor
+corridors
+corrigenda
+corrigendum
+corrigible
+corroborate
+corroborated
+corroborates
+corroborating
+corroboration
+corroborations
+corroborative
+corrode
+corrosion
+corrosive
+corrugate
+corrupt
+corrupted
+corrupter
+corruptible
+corrupting
+corruption
+corruptions
+corrupts
+corset
+Corsica
+Corsican
+cortex
+Cortez
+cortical
+Cortland
+Corvallis
+Corvus
+Corydoras
+Cosgrove
+cosine
+cosines
+cosmetic
+cosmetics
+cosmic
+cosmology
+cosmopolitan
+cosmos
+cosponsor
+Cossack
+cost
+Costa
+costed
+Costello
+costing
+costly
+costs
+costume
+costumed
+costumer
+costumes
+costuming
+cosy
+cot
+cotangent
+cotillion
+cots
+cottage
+cottager
+cottages
+cotton
+cottonmouth
+cottons
+cottonseed
+cottonwood
+Cottrell
+cotyledon
+cotyledons
+couch
+couched
+couches
+couching
+cougar
+cough
+coughed
+coughing
+coughs
+could
+coulomb
+Coulter
+council
+councillor
+councillors
+councilman
+councilmen
+councils
+councilwoman
+councilwomen
+counsel
+counseled
+counseling
+counselled
+counselling
+counsellor
+counsellors
+counselor
+counselors
+counsels
+count
+countable
+countably
+counted
+countenance
+counter
+counteract
+counteracted
+counteracting
+counteractive
+counterargument
+counterattack
+counterbalance
+counterclockwise
+countered
+counterexample
+counterexamples
+counterfeit
+counterfeited
+counterfeiter
+counterfeiting
+counterflow
+countering
+counterintuitive
+counterman
+countermeasure
+countermeasures
+countermen
+counterpart
+counterparts
+counterpoint
+counterpointing
+counterpoise
+counterproductive
+counterproposal
+counterrevolution
+counters
+countersink
+countersunk
+countess
+counties
+counting
+countless
+countries
+country
+countryman
+countrymen
+countryside
+countrywide
+counts
+county
+countywide
+couple
+coupled
+coupler
+couplers
+couples
+coupling
+couplings
+coupon
+coupons
+courage
+courageous
+courageously
+courier
+couriers
+course
+coursed
+courser
+courses
+coursing
+court
+courted
+courteous
+courteously
+courter
+courters
+courtesan
+courtesies
+courtesy
+courthouse
+courthouses
+courtier
+courtiers
+courting
+courtly
+Courtney
+courtroom
+courtrooms
+courts
+courtship
+courtyard
+courtyards
+cousin
+cousins
+covalent
+covariant
+cove
+covenant
+covenants
+Covent
+Coventry
+cover
+coverable
+coverage
+covered
+covering
+coverings
+coverlet
+coverlets
+covers
+covert
+covertly
+coves
+covet
+coveted
+coveting
+covetous
+covetousness
+covets
+cow
+Cowan
+coward
+cowardice
+cowardly
+cowboy
+cowboys
+cowed
+cower
+cowered
+cowerer
+cowerers
+cowering
+coweringly
+cowers
+cowherd
+cowhide
+cowing
+cowl
+cowlick
+cowling
+cowls
+coworker
+cows
+cowslip
+cowslips
+coyote
+coyotes
+coypu
+cozier
+coziness
+cozy
+crab
+crabapple
+crabs
+crack
+cracked
+cracker
+crackers
+cracking
+crackle
+crackled
+crackles
+crackling
+crackpot
+cracks
+cradle
+cradled
+cradles
+craft
+crafted
+crafter
+craftiness
+crafting
+crafts
+craftsman
+craftsmen
+craftspeople
+craftsperson
+crafty
+crag
+craggy
+crags
+Craig
+cram
+Cramer
+cramming
+cramp
+cramps
+crams
+cranberries
+cranberry
+Crandall
+crane
+cranes
+Cranford
+crania
+cranium
+crank
+crankcase
+cranked
+crankier
+crankiest
+crankily
+cranking
+cranks
+crankshaft
+cranky
+cranny
+Cranston
+crash
+crashed
+crasher
+crashers
+crashes
+crashing
+crass
+crate
+crater
+craters
+crates
+cravat
+cravats
+crave
+craved
+craven
+craves
+craving
+Crawford
+crawl
+crawled
+crawler
+crawlers
+crawling
+crawls
+Cray
+crayon
+Crays
+craze
+crazed
+crazes
+crazier
+craziest
+crazily
+craziness
+crazing
+crazy
+creak
+creaked
+creaking
+creaks
+creaky
+cream
+creamed
+creamer
+creamers
+creamery
+creaming
+creams
+creamy
+crease
+creased
+creases
+creasing
+create
+created
+creates
+creating
+creation
+creations
+creative
+creatively
+creativeness
+creativity
+creator
+creators
+creature
+creatures
+credence
+credential
+credibility
+credible
+credibly
+credit
+creditable
+creditably
+credited
+crediting
+creditor
+creditors
+credits
+credulity
+credulous
+credulousness
+Cree
+creed
+creeds
+creek
+creeks
+creep
+creeper
+creepers
+creeping
+creeps
+creepy
+Creighton
+cremate
+cremated
+cremates
+cremating
+cremation
+cremations
+crematory
+Creole
+Creon
+crepe
+crept
+crescent
+crescents
+crest
+crested
+crestfallen
+crests
+Crestview
+Cretaceous
+Cretaceously
+Cretan
+Crete
+cretin
+crevice
+crevices
+crew
+crewcut
+crewed
+crewing
+crews
+crib
+cribs
+cricket
+crickets
+cried
+crier
+criers
+cries
+crime
+Crimea
+Crimean
+crimes
+criminal
+criminally
+criminals
+criminate
+crimson
+crimsoning
+cringe
+cringed
+cringes
+cringing
+cripple
+crippled
+cripples
+crippling
+crises
+crisis
+crisp
+Crispin
+crisply
+crispness
+crisscross
+criteria
+criterion
+critic
+critical
+critically
+criticism
+criticisms
+criticize
+criticized
+criticizes
+criticizing
+critics
+critique
+critiques
+critiquing
+critter
+croak
+croaked
+croaking
+croaks
+Croatia
+Croatian
+crochet
+crochets
+crock
+crockery
+Crockett
+crocks
+crocodile
+crocus
+croft
+Croix
+Cromwell
+Cromwellian
+crook
+crooked
+crooks
+crop
+cropped
+cropper
+croppers
+cropping
+crops
+Crosby
+cross
+crossable
+crossbar
+crossbars
+crossed
+crosser
+crossers
+crosses
+crossing
+crossings
+crossly
+crossover
+crossovers
+crosspoint
+crossroad
+crosstalk
+crosswalk
+crossword
+crosswords
+crotch
+crotchety
+crouch
+crouched
+crouching
+crow
+crowd
+crowded
+crowder
+crowding
+crowds
+crowed
+crowing
+Crowley
+crown
+crowned
+crowning
+crowns
+crows
+Croydon
+crucial
+crucially
+crucible
+crucified
+crucifies
+crucifix
+crucifixion
+crucify
+crucifying
+crud
+cruddy
+crude
+crudely
+crudeness
+cruder
+crudest
+cruel
+crueler
+cruelest
+cruelly
+cruelty
+Cruickshank
+cruise
+cruiser
+cruisers
+cruises
+cruising
+crumb
+crumble
+crumbled
+crumbles
+crumbling
+crumbly
+crumbs
+crummy
+crumple
+crumpled
+crumples
+crumpling
+crunch
+crunched
+crunches
+crunchier
+crunchiest
+crunching
+crunchy
+crusade
+crusader
+crusaders
+crusades
+crusading
+crush
+crushable
+crushed
+crusher
+crushers
+crushes
+crushing
+crushingly
+Crusoe
+crust
+crustacean
+crustaceans
+crusts
+crutch
+crutches
+crux
+cruxes
+Cruz
+cry
+crying
+cryogenic
+crypt
+cryptanalysis
+cryptanalyst
+cryptanalytic
+cryptic
+cryptogram
+cryptographer
+cryptographic
+cryptographically
+cryptography
+cryptologist
+cryptology
+crystal
+crystalline
+crystallize
+crystallized
+crystallizes
+crystallizing
+crystals
+cub
+Cuba
+Cuban
+Cubanize
+Cubanizes
+Cubans
+cubbyhole
+cube
+cubed
+cubes
+cubic
+cubs
+cuckoo
+cuckoos
+cucumber
+cucumbers
+cuddle
+cuddled
+cuddly
+cudgel
+cudgels
+cue
+cued
+cues
+cuff
+cufflink
+cuffs
+cuisine
+Culbertson
+culinary
+cull
+culled
+culler
+culling
+culls
+culminate
+culminated
+culminates
+culminating
+culmination
+culpa
+culpable
+culprit
+culprits
+cult
+cultivable
+cultivate
+cultivated
+cultivates
+cultivating
+cultivation
+cultivations
+cultivator
+cultivators
+cults
+cultural
+culturally
+culture
+cultured
+cultures
+culturing
+Culver
+Culvers
+Cumberland
+cumbersome
+Cummings
+Cummins
+cumulative
+cumulatively
+Cunard
+cunnilingus
+cunning
+Cunningham
+cunningly
+cup
+cupboard
+cupboards
+Cupertino
+cupful
+Cupid
+cupped
+cupping
+cups
+curable
+curably
+curb
+curbing
+curbs
+curd
+curdle
+cure
+cured
+cures
+curfew
+curfews
+curing
+curiosities
+curiosity
+curious
+curiouser
+curiousest
+curiously
+curl
+curled
+curler
+curlers
+curlicue
+curling
+curls
+curly
+Curran
+currant
+currants
+currencies
+currency
+current
+currently
+currentness
+currents
+curricular
+curriculum
+curriculums
+curried
+curries
+curry
+currying
+curs
+curse
+cursed
+curses
+cursing
+cursive
+cursor
+cursorily
+cursors
+cursory
+curt
+curtail
+curtailed
+curtails
+curtain
+curtained
+curtains
+curtate
+Curtis
+curtly
+curtness
+curtsies
+curtsy
+curvaceous
+curvature
+curve
+curved
+curves
+curvilinear
+curving
+Cushing
+cushion
+cushioned
+cushioning
+cushions
+Cushman
+cusp
+cusps
+custard
+Custer
+custodial
+custodian
+custodians
+custody
+custom
+customarily
+customary
+customer
+customers
+customizable
+customization
+customizations
+customize
+customized
+customizer
+customizers
+customizes
+customizing
+customs
+cut
+cutaneous
+cutback
+cute
+cutest
+cutlass
+cutlet
+cutoff
+cutout
+cutover
+cuts
+cutter
+cutters
+cutthroat
+cutting
+cuttingly
+cuttings
+cuttlefish
+Cuvier
+Cuzco
+Cyanamid
+cyanide
+cybernetic
+cybernetics
+cyberspace
+Cyclades
+cycle
+cycled
+cycles
+cyclic
+cyclically
+cycling
+cycloid
+cycloidal
+cycloids
+cyclone
+cyclones
+Cyclops
+cyclotron
+cyclotrons
+Cygnus
+cylinder
+cylinders
+cylindrical
+cymbal
+cymbals
+cynic
+cynical
+cynically
+Cynthia
+cypress
+Cyprian
+Cypriot
+Cyprus
+Cyril
+Cyrillic
+Cyrus
+cyst
+cysts
+cytology
+cytoplasm
+czar
+Czech
+Czechization
+Czechizations
+Czechoslovakia
+Czerniak
+dabble
+dabbled
+dabbler
+dabbles
+dabbling
+Dacca
+Dacron
+dactyl
+dactylic
+dad
+Dada
+Dadaism
+Dadaist
+Dadaistic
+daddy
+Dade
+dads
+Daedalus
+daemon
+daemons
+daffodil
+daffodils
+dagger
+Dahl
+dahlia
+Dahomey
+Dailey
+dailies
+daily
+Daimler
+daintily
+daintiness
+dainty
+dairy
+Dairylea
+daisies
+daisy
+Dakar
+Dakota
+dale
+dales
+Daley
+Dalhousie
+Dali
+Dallas
+Dalton
+Daly
+Dalzell
+dam
+damage
+damaged
+damager
+damagers
+damages
+damaging
+Damascus
+damask
+dame
+damming
+damn
+damnation
+damned
+damning
+damns
+Damocles
+Damon
+damp
+dampen
+dampens
+damper
+damping
+dampness
+dams
+damsel
+damsels
+Dan
+Dana
+Danbury
+dance
+danced
+dancer
+dancers
+dances
+dancing
+dandelion
+dandelions
+dandy
+Dane
+Danes
+danger
+dangerous
+dangerously
+dangers
+dangle
+dangled
+dangles
+dangling
+Daniel
+Daniels
+Danielson
+Danish
+Danization
+Danizations
+Danize
+Danizes
+Danny
+Dante
+Danube
+Danubian
+Danville
+Danzig
+Daphne
+Dar
+dare
+dared
+darer
+darers
+dares
+daresay
+daring
+daringly
+Darius
+dark
+darken
+darker
+darkest
+darkly
+darkness
+darkroom
+Darlene
+darling
+darlings
+Darlington
+darn
+darned
+darner
+darning
+darns
+DARPA
+Darrell
+Darrow
+Darry
+dart
+darted
+darter
+darting
+Dartmouth
+darts
+Darwin
+Darwinian
+Darwinism
+Darwinistic
+Darwinize
+Darwinizes
+dash
+dashboard
+dashed
+dasher
+dashers
+dashes
+dashing
+dashingly
+data
+database
+databases
+datagram
+datagrams
+Datamation
+Datamedia
+date
+dated
+dateline
+dater
+dates
+dating
+dative
+Datsun
+datum
+Daugherty
+daughter
+daughterly
+daughters
+daunt
+daunted
+dauntless
+Dave
+David
+Davidson
+Davie
+Davies
+Davinich
+Davis
+Davison
+Davy
+dawn
+dawned
+dawning
+dawns
+Dawson
+day
+daybreak
+daydream
+daydreaming
+daydreams
+daylight
+daylights
+days
+daytime
+Dayton
+Daytona
+daze
+dazed
+dazzle
+dazzled
+dazzler
+dazzles
+dazzling
+dazzlingly
+De
+deacon
+deacons
+deactivate
+dead
+deaden
+deadline
+deadlines
+deadlock
+deadlocked
+deadlocking
+deadlocks
+deadly
+deadness
+deadwood
+deaf
+deafen
+deafer
+deafest
+deafness
+deal
+dealer
+dealers
+dealership
+dealing
+dealings
+deallocate
+deallocated
+deallocating
+deallocation
+deallocations
+deals
+dealt
+dean
+Deane
+Deanna
+deans
+dear
+Dearborn
+dearer
+dearest
+dearly
+dearness
+dearth
+dearths
+death
+deathbed
+deathly
+deaths
+debacle
+debar
+debase
+debatable
+debate
+debated
+debater
+debaters
+debates
+debating
+debauch
+debauchery
+Debbie
+Debby
+debilitate
+debilitated
+debilitates
+debilitating
+debility
+debit
+debited
+Deborah
+Debra
+debrief
+debris
+debt
+debtor
+debts
+debug
+debugged
+debugger
+debuggers
+debugging
+debugs
+debunk
+Debussy
+debutante
+DEC
+decade
+decadence
+decadent
+decadently
+decades
+decal
+decathlon
+Decatur
+decay
+decayed
+decaying
+decays
+Decca
+decease
+deceased
+deceases
+deceasing
+decedent
+deceit
+deceitful
+deceitfully
+deceitfulness
+deceive
+deceived
+deceiver
+deceivers
+deceives
+deceiving
+decelerate
+decelerated
+decelerates
+decelerating
+deceleration
+December
+Decembers
+decencies
+decency
+decennial
+decent
+decently
+decentralization
+decentralized
+deception
+deceptions
+deceptive
+deceptively
+decertify
+decibel
+decidability
+decidable
+decide
+decided
+decidedly
+decides
+deciding
+deciduous
+decimal
+decimals
+decimate
+decimated
+decimates
+decimating
+decimation
+decipher
+deciphered
+decipherer
+deciphering
+deciphers
+decision
+decisions
+decisive
+decisively
+decisiveness
+deck
+decked
+Decker
+decking
+deckings
+decks
+declaration
+declarations
+declarative
+declaratively
+declaratives
+declarator
+declaratory
+declare
+declared
+declarer
+declarers
+declares
+declaring
+declassify
+declination
+declinations
+decline
+declined
+decliner
+decliners
+declines
+declining
+DECnet
+decode
+decoded
+decoder
+decoders
+decodes
+decoding
+decodings
+decolletage
+decollimate
+decompile
+decomposability
+decomposable
+decompose
+decomposed
+decomposes
+decomposing
+decomposition
+decompositions
+decompress
+decompression
+decorate
+decorated
+decorates
+decorating
+decoration
+decorations
+decorative
+decorum
+decouple
+decoupled
+decouples
+decoupling
+decoy
+decoys
+decrease
+decreased
+decreases
+decreasing
+decreasingly
+decree
+decreed
+decreeing
+decrees
+decrement
+decremented
+decrementing
+decrements
+decrypt
+decrypted
+decrypting
+decryption
+decrypts
+DECstation
+DECsystem
+DECtape
+dedicate
+dedicated
+dedicates
+dedicating
+dedication
+deduce
+deduced
+deducer
+deduces
+deducible
+deducing
+deduct
+deducted
+deductible
+deducting
+deduction
+deductions
+deductive
+Dee
+deed
+deeded
+deeding
+deeds
+deem
+deemed
+deeming
+deemphasize
+deemphasized
+deemphasizes
+deemphasizing
+deems
+deep
+deepen
+deepened
+deepening
+deepens
+deeper
+deepest
+deeply
+deeps
+deer
+Deere
+deface
+default
+defaulted
+defaulter
+defaulting
+defaults
+defeat
+defeated
+defeating
+defeats
+defecate
+defect
+defected
+defecting
+defection
+defections
+defective
+defects
+defend
+defendant
+defendants
+defended
+defender
+defenders
+defending
+defends
+defenestrate
+defenestrated
+defenestrates
+defenestrating
+defenestration
+defense
+defenseless
+defenses
+defensible
+defensive
+defer
+deference
+deferment
+deferments
+deferrable
+deferred
+deferrer
+deferrers
+deferring
+defers
+defiance
+defiant
+defiantly
+deficiencies
+deficiency
+deficient
+deficit
+deficits
+defied
+defies
+defile
+defiling
+definable
+define
+defined
+definer
+defines
+defining
+definite
+definitely
+definiteness
+definition
+definitional
+definitions
+definitive
+deflate
+deflater
+deflect
+defocus
+Defoe
+deforest
+deforestation
+deform
+deformation
+deformations
+deformed
+deformities
+deformity
+defraud
+defray
+defrost
+deftly
+defunct
+defy
+defying
+degeneracy
+degenerate
+degenerated
+degenerates
+degenerating
+degeneration
+degenerative
+degradable
+degradation
+degradations
+degrade
+degraded
+degrades
+degrading
+degree
+degrees
+dehumidify
+dehydrate
+deify
+deign
+deigned
+deigning
+deigns
+Deimos
+Deirdre
+Deirdres
+deities
+deity
+dejected
+dejectedly
+DeKalb
+DeKastere
+Del
+Delaney
+Delano
+Delaware
+delay
+delayed
+delaying
+delays
+delegate
+delegated
+delegates
+delegating
+delegation
+delegations
+delete
+deleted
+deleter
+deleterious
+deletes
+deleting
+deletion
+deletions
+Delft
+Delhi
+Delia
+deliberate
+deliberated
+deliberately
+deliberateness
+deliberates
+deliberating
+deliberation
+deliberations
+deliberative
+deliberator
+deliberators
+delicacies
+delicacy
+delicate
+delicately
+delicatessen
+delicious
+deliciously
+delight
+delighted
+delightedly
+delightful
+delightfully
+delighting
+delights
+Delilah
+delimit
+delimitation
+delimited
+delimiter
+delimiters
+delimiting
+delimits
+delineament
+delineate
+delineated
+delineates
+delineating
+delineation
+delinquency
+delinquent
+delirious
+deliriously
+delirium
+deliver
+deliverable
+deliverables
+deliverance
+delivered
+deliverer
+deliverers
+deliveries
+delivering
+delivers
+delivery
+dell
+Della
+dells
+Dellwood
+Delmarva
+Delphi
+Delphic
+Delphically
+Delphinus
+delta
+deltas
+delude
+deluded
+deludes
+deluding
+deluge
+deluged
+deluges
+delusion
+delusions
+deluxe
+delve
+delves
+delving
+demagnify
+demagogue
+demand
+demanded
+demander
+demanding
+demandingly
+demands
+demarcate
+demeanor
+demented
+demerit
+Demeter
+demigod
+demise
+demo
+democracies
+democracy
+democrat
+democratic
+democratically
+democrats
+demodulate
+demodulator
+demographic
+demolish
+demolished
+demolishes
+demolition
+demon
+demoniac
+demonic
+demons
+demonstrable
+demonstrate
+demonstrated
+demonstrates
+demonstrating
+demonstration
+demonstrations
+demonstrative
+demonstratively
+demonstrator
+demonstrators
+demoralize
+demoralized
+demoralizes
+demoralizing
+DeMorgan
+demote
+demountable
+Dempsey
+demultiplex
+demultiplexed
+demultiplexer
+demultiplexers
+demultiplexing
+demur
+demythologize
+den
+denature
+Deneb
+Denebola
+Deneen
+deniable
+denial
+denials
+denied
+denier
+denies
+denigrate
+denigrated
+denigrates
+denigrating
+denizen
+Denmark
+Dennis
+Denny
+denominate
+denomination
+denominations
+denominator
+denominators
+denotable
+denotation
+denotational
+denotationally
+denotations
+denotative
+denote
+denoted
+denotes
+denoting
+denounce
+denounced
+denounces
+denouncing
+dens
+dense
+densely
+denseness
+denser
+densest
+densities
+density
+dent
+dental
+dentally
+dented
+denting
+dentist
+dentistry
+dentists
+Denton
+dents
+denture
+denude
+denumerable
+denunciate
+denunciation
+Denver
+deny
+denying
+deodorant
+deoxyribonucleic
+depart
+departed
+departing
+department
+departmental
+departments
+departs
+departure
+departures
+depend
+dependability
+dependable
+dependably
+depended
+dependence
+dependencies
+dependency
+dependent
+dependently
+dependents
+depending
+depends
+depict
+depicted
+depicting
+depicts
+deplete
+depleted
+depletes
+depleting
+depletion
+depletions
+deplorable
+deplore
+deplored
+deplores
+deploring
+deploy
+deployed
+deploying
+deployment
+deployments
+deploys
+deport
+deportation
+deportee
+deportment
+depose
+deposed
+deposes
+deposit
+depositary
+deposited
+depositing
+deposition
+depositions
+depositor
+depositors
+depository
+deposits
+depot
+depots
+deprave
+depraved
+depravity
+deprecate
+depreciate
+depreciated
+depreciates
+depreciation
+depress
+depressed
+depresses
+depressing
+depression
+depressions
+deprivation
+deprivations
+deprive
+deprived
+deprives
+depriving
+depth
+depths
+deputies
+deputy
+dequeue
+dequeued
+dequeues
+dequeuing
+derail
+derailed
+derailing
+derails
+derby
+Derbyshire
+dereference
+deregulate
+deregulated
+Derek
+deride
+derision
+derivable
+derivation
+derivations
+derivative
+derivatives
+derive
+derived
+derives
+deriving
+derogatory
+derrick
+derriere
+dervish
+Des
+Descartes
+descend
+descendant
+descendants
+descended
+descendent
+descender
+descenders
+descending
+descends
+descent
+descents
+describable
+describe
+described
+describer
+describes
+describing
+description
+descriptions
+descriptive
+descriptively
+descriptives
+descriptor
+descriptors
+descry
+desecrate
+desegregate
+desert
+deserted
+deserter
+deserters
+deserting
+desertion
+desertions
+deserts
+deserve
+deserved
+deserves
+deserving
+deservingly
+deservings
+desiderata
+desideratum
+design
+designate
+designated
+designates
+designating
+designation
+designations
+designator
+designators
+designed
+designer
+designers
+designing
+designs
+desirability
+desirable
+desirably
+desire
+desired
+desires
+desiring
+desirous
+desist
+desk
+desks
+desktop
+Desmond
+desolate
+desolately
+desolation
+desolations
+despair
+despaired
+despairing
+despairingly
+despairs
+despatch
+despatched
+desperado
+desperate
+desperately
+desperation
+despicable
+despise
+despised
+despises
+despising
+despite
+despoil
+despondent
+despot
+despotic
+despotism
+despots
+dessert
+desserts
+desiccate
+destabilize
+destination
+destinations
+destine
+destined
+destinies
+destiny
+destitute
+destitution
+destroy
+destroyed
+destroyer
+destroyers
+destroying
+destroys
+destruct
+destruction
+destructions
+destructive
+destructively
+destructiveness
+destructor
+destuff
+destuffing
+destuffs
+desuetude
+desultory
+desynchronize
+detach
+detached
+detacher
+detaches
+detaching
+detachment
+detachments
+detail
+detailed
+detailing
+details
+detain
+detained
+detaining
+detains
+detect
+detectable
+detectably
+detected
+detecting
+detection
+detections
+detective
+detectives
+detector
+detectors
+detects
+detente
+detention
+deter
+detergent
+deteriorate
+deteriorated
+deteriorates
+deteriorating
+deterioration
+determinable
+determinacy
+determinant
+determinants
+determinate
+determinately
+determination
+determinations
+determinative
+determine
+determined
+determiner
+determiners
+determines
+determining
+determinism
+deterministic
+deterministically
+deterred
+deterrent
+deterring
+detest
+detestable
+detested
+detour
+detract
+detractor
+detractors
+detracts
+detriment
+detrimental
+Detroit
+deuce
+deus
+deuterium
+Deutsch
+devastate
+devastated
+devastates
+devastating
+devastation
+develop
+developed
+developer
+developers
+developing
+development
+developmental
+developments
+develops
+deviant
+deviants
+deviate
+deviated
+deviates
+deviating
+deviation
+deviations
+device
+devices
+devil
+devilish
+devilishly
+devils
+devious
+devise
+devised
+devises
+devising
+devisings
+devoid
+devolve
+Devon
+Devonshire
+devote
+devoted
+devotedly
+devotee
+devotees
+devotes
+devoting
+devotion
+devotions
+devour
+devoured
+devourer
+devours
+devout
+devoutly
+devoutness
+dew
+dewdrop
+dewdrops
+Dewey
+Dewitt
+dewy
+Dexedrine
+dexterity
+Dhabi
+diabetes
+diabetic
+diabolic
+diachronic
+diacritical
+diadem
+diagnosable
+diagnose
+diagnosed
+diagnoses
+diagnosing
+diagnosis
+diagnostic
+diagnostician
+diagnostics
+diagonal
+diagonally
+diagonals
+diagram
+diagrammable
+diagrammatic
+diagrammatically
+diagrammed
+diagrammer
+diagrammers
+diagramming
+diagrams
+dial
+dialect
+dialectic
+dialects
+dialed
+dialer
+dialers
+dialing
+dialog
+dialogs
+dialogue
+dialogues
+dials
+dialup
+dialysis
+diamagnetic
+diameter
+diameters
+diametric
+diametrically
+diamond
+diamonds
+Diana
+Diane
+Dianne
+diaper
+diapers
+diaphragm
+diaphragms
+diaries
+diarrhea
+diary
+diatribe
+diatribes
+dibble
+dice
+dichotomize
+dichotomy
+dickens
+Dickerson
+Dickinson
+Dickson
+dicky
+dictate
+dictated
+dictates
+dictating
+dictation
+dictations
+dictator
+dictatorial
+dictators
+dictatorship
+diction
+dictionaries
+dictionary
+dictum
+dictums
+did
+didactic
+diddle
+Dido
+die
+Diebold
+died
+Diego
+diehard
+dielectric
+dielectrics
+diem
+dies
+diesel
+diet
+dietary
+dieter
+dieters
+dietetic
+dietician
+dietitian
+dietitians
+Dietrich
+diets
+Dietz
+differ
+differed
+difference
+differences
+different
+differentiable
+differential
+differentials
+differentiate
+differentiated
+differentiates
+differentiating
+differentiation
+differentiations
+differentiators
+differently
+differer
+differers
+differing
+differs
+difficult
+difficulties
+difficultly
+difficulty
+diffract
+diffuse
+diffused
+diffusely
+diffuser
+diffusers
+diffuses
+diffusible
+diffusing
+diffusion
+diffusions
+diffusive
+dig
+digest
+digested
+digestible
+digesting
+digestion
+digestive
+digests
+digger
+diggers
+digging
+diggings
+digit
+digital
+digitalis
+digitally
+digitization
+digitize
+digitized
+digitizes
+digitizing
+digits
+dignified
+dignify
+dignitary
+dignities
+dignity
+digram
+digress
+digressed
+digresses
+digressing
+digression
+digressions
+digressive
+digs
+dihedral
+Dijkstra
+Dijon
+dike
+dikes
+dilapidate
+dilatation
+dilate
+dilated
+dilates
+dilating
+dilation
+dildo
+dilemma
+dilemmas
+diligence
+diligent
+diligently
+dill
+Dillon
+dilogarithm
+dilute
+diluted
+dilutes
+diluting
+dilution
+dim
+DiMaggio
+dime
+dimension
+dimensional
+dimensionality
+dimensionally
+dimensioned
+dimensioning
+dimensions
+dimes
+diminish
+diminished
+diminishes
+diminishing
+diminution
+diminutive
+dimly
+dimmed
+dimmer
+dimmers
+dimmest
+dimming
+dimness
+dimple
+dims
+din
+Dinah
+dine
+dined
+diner
+diners
+dines
+ding
+dinghy
+dinginess
+dingo
+dingy
+dining
+dinner
+dinners
+dinnertime
+dinnerware
+dinosaur
+dint
+Diocletian
+diode
+diodes
+Diogenes
+Dion
+Dionysian
+Dionysus
+Diophantine
+diopter
+diorama
+dioxide
+dip
+diphtheria
+diphthong
+diploma
+diplomacy
+diplomas
+diplomat
+diplomatic
+diplomats
+dipole
+dipped
+dipper
+dippers
+dipping
+dippings
+dips
+Dirac
+dire
+direct
+directed
+directing
+direction
+directional
+directionality
+directionally
+directions
+directive
+directives
+directly
+directness
+director
+directorate
+directories
+directors
+directory
+directrices
+directrix
+directs
+dirge
+dirges
+Dirichlet
+dirt
+dirtier
+dirtiest
+dirtily
+dirtiness
+dirts
+dirty
+Dis
+disabilities
+disability
+disable
+disabled
+disabler
+disablers
+disables
+disabling
+disadvantage
+disadvantageous
+disadvantages
+disaffected
+disaffection
+disagree
+disagreeable
+disagreed
+disagreeing
+disagreement
+disagreements
+disagrees
+disallow
+disallowed
+disallowing
+disallows
+disambiguate
+disambiguated
+disambiguates
+disambiguating
+disambiguation
+disambiguations
+disappear
+disappearance
+disappearances
+disappeared
+disappearing
+disappears
+disappoint
+disappointed
+disappointing
+disappointment
+disappointments
+disapproval
+disapprove
+disapproved
+disapproves
+disarm
+disarmament
+disarmed
+disarming
+disarms
+disassemble
+disassembled
+disassembles
+disassembling
+disassembly
+disaster
+disasters
+disastrous
+disastrously
+disband
+disbanded
+disbanding
+disbands
+disburse
+disbursed
+disbursement
+disbursements
+disburses
+disbursing
+disc
+discard
+discarded
+discarding
+discards
+discern
+discerned
+discernibility
+discernible
+discernibly
+discerning
+discerningly
+discernment
+discerns
+discharge
+discharged
+discharges
+discharging
+disciple
+disciples
+disciplinary
+discipline
+disciplined
+disciplines
+disciplining
+disclaim
+disclaimed
+disclaimer
+disclaims
+disclose
+disclosed
+discloses
+disclosing
+disclosure
+disclosures
+discomfort
+disconcert
+disconcerting
+disconcertingly
+disconnect
+disconnected
+disconnecting
+disconnection
+disconnects
+discontent
+discontented
+discontinuance
+discontinue
+discontinued
+discontinues
+discontinuities
+discontinuity
+discontinuous
+discord
+discordant
+discount
+discounted
+discounting
+discounts
+discourage
+discouraged
+discouragement
+discourages
+discouraging
+discourse
+discourses
+discover
+discovered
+discoverer
+discoverers
+discoveries
+discovering
+discovers
+discovery
+discredit
+discredited
+discreet
+discreetly
+discrepancies
+discrepancy
+discrete
+discretely
+discreteness
+discretion
+discretionary
+discriminant
+discriminate
+discriminated
+discriminates
+discriminating
+discrimination
+discriminatory
+discs
+discuss
+discussant
+discussed
+discusses
+discussing
+discussion
+discussions
+disdain
+disdaining
+disdains
+disease
+diseased
+diseases
+disembowel
+disengage
+disengaged
+disengages
+disengaging
+disentangle
+disentangling
+disfigure
+disfigured
+disfigures
+disfiguring
+disgorge
+disgrace
+disgraced
+disgraceful
+disgracefully
+disgraces
+disgruntle
+disgruntled
+disguise
+disguised
+disguises
+disgust
+disgusted
+disgustedly
+disgustful
+disgusting
+disgustingly
+disgusts
+dish
+dishearten
+disheartening
+dished
+dishes
+dishevel
+dishing
+dishonest
+dishonestly
+dishonesty
+dishonor
+dishonorable
+dishonored
+dishonoring
+dishonors
+dishwasher
+dishwashers
+dishwashing
+dishwater
+disillusion
+disillusioned
+disillusioning
+disillusionment
+disillusionments
+disinclined
+disingenuous
+disinterested
+disinterestedness
+disjoint
+disjointed
+disjointly
+disjointness
+disjunct
+disjunction
+disjunctions
+disjunctive
+disjunctively
+disjuncts
+disk
+diskette
+diskettes
+disks
+dislike
+disliked
+dislikes
+disliking
+dislocate
+dislocated
+dislocates
+dislocating
+dislocation
+dislocations
+dislodge
+dislodged
+dismal
+dismally
+dismay
+dismayed
+dismaying
+dismember
+dismembered
+dismemberment
+dismembers
+dismiss
+dismissal
+dismissals
+dismissed
+dismisser
+dismissers
+dismisses
+dismissing
+dismount
+dismounted
+dismounting
+dismounts
+Disney
+Disneyland
+disobedience
+disobedient
+disobey
+disobeyed
+disobeying
+disobeys
+disorder
+disordered
+disorderly
+disorders
+disorganized
+disown
+disowned
+disowning
+disowns
+disparage
+disparate
+disparities
+disparity
+dispassionate
+dispatch
+dispatched
+dispatcher
+dispatchers
+dispatches
+dispatching
+dispel
+dispell
+dispelled
+dispelling
+dispels
+dispensary
+dispensation
+dispense
+dispensed
+dispenser
+dispensers
+dispenses
+dispensing
+dispersal
+disperse
+dispersed
+disperses
+dispersing
+dispersion
+dispersions
+displace
+displaced
+displacement
+displacements
+displaces
+displacing
+display
+displayable
+displayed
+displayer
+displaying
+displays
+displease
+displeased
+displeases
+displeasing
+displeasure
+disposable
+disposal
+disposals
+dispose
+disposed
+disposer
+disposes
+disposing
+disposition
+dispositions
+dispossessed
+disproportionate
+disprove
+disproved
+disproves
+disproving
+dispute
+disputed
+disputer
+disputers
+disputes
+disputing
+disqualification
+disqualified
+disqualifies
+disqualify
+disqualifying
+disquiet
+disquieting
+Disraeli
+disregard
+disregarded
+disregarding
+disregards
+disrespectful
+disrupt
+disrupted
+disrupting
+disruption
+disruptions
+disruptive
+disrupts
+dissatisfaction
+dissatisfactions
+dissatisfactory
+dissatisfied
+dissect
+dissects
+dissemble
+disseminate
+disseminated
+disseminates
+disseminating
+dissemination
+dissension
+dissensions
+dissent
+dissented
+dissenter
+dissenters
+dissenting
+dissents
+dissertation
+dissertations
+disservice
+dissident
+dissidents
+dissimilar
+dissimilarities
+dissimilarity
+dissipate
+dissipated
+dissipates
+dissipating
+dissipation
+dissociate
+dissociated
+dissociates
+dissociating
+dissociation
+dissolution
+dissolutions
+dissolve
+dissolved
+dissolves
+dissolving
+dissonant
+dissuade
+distaff
+distal
+distally
+distance
+distances
+distant
+distantly
+distaste
+distasteful
+distastefully
+distastes
+distemper
+distempered
+distempers
+distill
+distillation
+distilled
+distiller
+distillers
+distillery
+distilling
+distills
+distinct
+distinction
+distinctions
+distinctive
+distinctively
+distinctiveness
+distinctly
+distinctness
+distinguish
+distinguishable
+distinguished
+distinguishes
+distinguishing
+distort
+distorted
+distorting
+distortion
+distortions
+distorts
+distract
+distracted
+distracting
+distraction
+distractions
+distracts
+distraught
+distress
+distressed
+distresses
+distressing
+distribute
+distributed
+distributes
+distributing
+distribution
+distributional
+distributions
+distributive
+distributivity
+distributor
+distributors
+district
+districts
+distrust
+distrusted
+disturb
+disturbance
+disturbances
+disturbed
+disturber
+disturbing
+disturbingly
+disturbs
+disuse
+ditch
+ditches
+dither
+ditto
+ditty
+Ditzel
+diurnal
+divan
+divans
+dive
+dived
+diver
+diverge
+diverged
+divergence
+divergences
+divergent
+diverges
+diverging
+divers
+diverse
+diversely
+diversification
+diversified
+diversifies
+diversify
+diversifying
+diversion
+diversionary
+diversions
+diversities
+diversity
+divert
+diverted
+diverting
+diverts
+dives
+divest
+divested
+divesting
+divestiture
+divests
+divide
+divided
+dividend
+dividends
+divider
+dividers
+divides
+dividing
+divine
+divinely
+diviner
+diving
+divining
+divinities
+divinity
+divisibility
+divisible
+division
+divisional
+divisions
+divisive
+divisor
+divisors
+divorce
+divorced
+divorcee
+divulge
+divulged
+divulges
+divulging
+Dixie
+Dixiecrats
+Dixieland
+Dixon
+dizziness
+dizzy
+Djakarta
+Dmitri
+Dnieper
+do
+Dobbin
+Dobbs
+Doberman
+Doc
+docile
+dock
+docked
+docket
+docks
+dockside
+dockyard
+doctor
+doctoral
+doctorate
+doctorates
+doctored
+doctors
+doctrinaire
+doctrinal
+doctrine
+doctrines
+document
+documentaries
+documentary
+documentation
+documentations
+documented
+documenter
+documenters
+documenting
+documents
+Dodd
+dodecahedra
+dodecahedral
+dodecahedron
+dodge
+dodged
+dodger
+dodgers
+dodging
+Dodington
+Dodson
+doe
+doer
+doers
+does
+dog
+Doge
+dogged
+doggedly
+doggedness
+dogging
+doghouse
+dogma
+dogmas
+dogmatic
+dogmatism
+dogs
+Dogtown
+Doherty
+doing
+doings
+Dolan
+doldrum
+dole
+doled
+doleful
+dolefully
+doles
+doll
+dollar
+dollars
+dollies
+dolls
+dolly
+Dolores
+dolphin
+dolphins
+domain
+domains
+dome
+domed
+Domenico
+domes
+Domesday
+domestic
+domestically
+domesticate
+domesticated
+domesticates
+domesticating
+domestication
+domicile
+dominance
+dominant
+dominantly
+dominate
+dominated
+dominates
+dominating
+domination
+domineer
+domineering
+Domingo
+Dominic
+Dominican
+Dominicans
+Dominick
+dominion
+Dominique
+domino
+don
+Donahue
+Donald
+Donaldson
+donate
+donated
+donates
+donating
+donation
+done
+Doneck
+donkey
+donkeys
+Donna
+Donnelly
+Donner
+donnybrook
+donor
+Donovan
+dons
+doodle
+Dooley
+Doolittle
+doom
+doomed
+dooming
+dooms
+doomsday
+door
+doorbell
+doorkeeper
+doorman
+doormen
+doors
+doorstep
+doorsteps
+doorway
+doorways
+dope
+doped
+doper
+dopers
+dopes
+doping
+Doppler
+Dora
+Dorado
+Dorcas
+Dorchester
+Doreen
+Doria
+Doric
+Doricize
+Doricizes
+Doris
+dormant
+dormitories
+dormitory
+Dorothea
+Dorothy
+Dorset
+Dortmund
+dosage
+dose
+dosed
+doses
+dossier
+dossiers
+Dostoevsky
+dot
+dote
+doted
+dotes
+doting
+dotingly
+dots
+dotted
+dotting
+double
+doubled
+Doubleday
+doubleheader
+doubler
+doublers
+doubles
+doublet
+doubleton
+doublets
+doubling
+doubloon
+doubly
+doubt
+doubtable
+doubted
+doubter
+doubters
+doubtful
+doubtfully
+doubting
+doubtless
+doubtlessly
+doubts
+Doug
+dough
+Dougherty
+doughnut
+doughnuts
+Douglas
+Douglass
+dove
+dover
+doves
+dovetail
+Dow
+dowager
+dowel
+Dowling
+down
+downcast
+downed
+downers
+Downey
+downfall
+downfallen
+downgrade
+downhill
+Downing
+downlink
+downlinks
+download
+downloaded
+downloading
+downloads
+downplay
+downplayed
+downplaying
+downplays
+downpour
+downright
+Downs
+downside
+downstairs
+downstream
+downtown
+downtowns
+downtrodden
+downturn
+downward
+downwards
+downy
+dowry
+Doyle
+doze
+dozed
+dozen
+dozens
+dozenth
+dozes
+dozing
+drab
+Draco
+Draconian
+draft
+drafted
+draftee
+drafter
+drafters
+drafting
+drafts
+draftsman
+draftsmen
+drafty
+drag
+dragged
+dragging
+dragnet
+dragon
+dragonfly
+dragonhead
+dragons
+dragoon
+dragooned
+dragoons
+drags
+drain
+drainage
+drained
+drainer
+draining
+drains
+drake
+dram
+drama
+Dramamine
+dramas
+dramatic
+dramatically
+dramatics
+dramatist
+dramatists
+drank
+drape
+draped
+draper
+draperies
+drapers
+drapery
+drapes
+drastic
+drastically
+draught
+draughts
+Dravidian
+draw
+drawback
+drawbacks
+drawbridge
+drawbridges
+drawer
+drawers
+drawing
+drawings
+drawl
+drawled
+drawling
+drawls
+drawn
+drawnly
+drawnness
+draws
+dread
+dreaded
+dreadful
+dreadfully
+dreading
+dreadnought
+dreads
+dream
+dreamboat
+dreamed
+dreamer
+dreamers
+dreamily
+dreaming
+dreamlike
+dreams
+dreamt
+dreamy
+dreariness
+dreary
+dredge
+dregs
+drench
+drenched
+drenches
+drenching
+dress
+dressed
+dresser
+dressers
+dresses
+dressing
+dressings
+dressmaker
+dressmakers
+drew
+Drexel
+Dreyfuss
+dried
+drier
+driers
+dries
+driest
+drift
+drifted
+drifter
+drifters
+drifting
+drifts
+drill
+drilled
+driller
+drilling
+drills
+drily
+drink
+drinkable
+drinker
+drinkers
+drinking
+drinks
+drip
+dripping
+drippy
+drips
+Driscoll
+drive
+driven
+driver
+drivers
+drives
+driveway
+driveways
+driving
+drizzle
+drizzly
+droll
+dromedary
+drone
+drones
+drool
+droop
+drooped
+drooping
+droops
+droopy
+drop
+droplet
+dropout
+dropped
+dropper
+droppers
+dropping
+droppings
+drops
+drosophila
+drought
+droughts
+drove
+drover
+drovers
+droves
+drown
+drowned
+drowning
+drownings
+drowns
+drowsiness
+drowsy
+drubbing
+drudge
+drudgery
+drug
+druggist
+druggists
+drugs
+drugstore
+drum
+drumhead
+drummed
+drummer
+drummers
+drumming
+Drummond
+drums
+drunk
+drunkard
+drunkards
+drunken
+drunkenness
+drunker
+drunkly
+drunks
+Drury
+dry
+Dryden
+drying
+dryly
+dual
+dualism
+dualities
+duality
+Duane
+dub
+dubbed
+Dubhe
+dubious
+dubiously
+dubiousness
+Dublin
+dubs
+Dubuque
+duchess
+duchesses
+duchy
+duck
+ducked
+ducking
+duckling
+ducks
+duct
+ducts
+dud
+Dudley
+due
+duel
+dueling
+duels
+dues
+duet
+Duffy
+dug
+Dugan
+duke
+dukes
+dull
+dulled
+duller
+Dulles
+dullest
+dulling
+dullness
+dulls
+dully
+Duluth
+duly
+dumb
+dumbbell
+dumbbells
+dumber
+dumbest
+dumbly
+dumbness
+dummies
+dummy
+dump
+dumped
+dumper
+dumping
+dumps
+Dumpty
+Dunbar
+Duncan
+dunce
+dunces
+Dundee
+dune
+Dunedin
+dunes
+dung
+dungeon
+dungeons
+Dunham
+dunk
+Dunkirk
+Dunlap
+Dunlop
+Dunn
+Dunne
+dupe
+duplex
+duplicable
+duplicate
+duplicated
+duplicates
+duplicating
+duplication
+duplications
+duplicator
+duplicators
+duplicity
+DuPont
+Dupont
+DuPonts
+Duponts
+Duquesne
+durabilities
+durability
+durable
+durably
+Durango
+duration
+durations
+Durer
+Durers
+duress
+Durham
+during
+Durkee
+Durkin
+Durrell
+Durward
+Dusenberg
+Dusenbury
+dusk
+duskiness
+dusky
+Dusseldorf
+dust
+dustbin
+dusted
+duster
+dusters
+dustier
+dustiest
+Dustin
+dusting
+dusts
+dusty
+Dutch
+dutchess
+Dutchman
+Dutchmen
+duties
+dutiful
+dutifully
+dutifulness
+Dutton
+duty
+Dvorak
+dwarf
+dwarfed
+dwarfs
+dwarves
+dwell
+dwelled
+dweller
+dwellers
+dwelling
+dwellings
+dwells
+dwelt
+Dwight
+dwindle
+dwindled
+dwindling
+Dwyer
+dyad
+dyadic
+dye
+dyed
+dyeing
+dyer
+dyers
+dyes
+dying
+Dyke
+Dylan
+dynamic
+dynamically
+dynamics
+dynamism
+dynamite
+dynamited
+dynamites
+dynamiting
+dynamo
+dynastic
+dynasties
+dynasty
+dyne
+dysentery
+dyspeptic
+dystrophy
+each
+Eagan
+eager
+eagerly
+eagerness
+eagle
+eagles
+ear
+eardrum
+eared
+earl
+earlier
+earliest
+earliness
+earls
+early
+earmark
+earmarked
+earmarking
+earmarkings
+earmarks
+earn
+earned
+earner
+earners
+earnest
+earnestly
+earnestness
+earning
+earnings
+earns
+Earp
+earphone
+earring
+earrings
+ears
+earsplitting
+earth
+earthen
+earthenware
+earthliness
+earthling
+earthly
+Earthman
+Earthmen
+earthmover
+earthquake
+earthquakes
+earths
+earthworm
+earthworms
+earthy
+ease
+eased
+easel
+easement
+easements
+eases
+easier
+easiest
+easily
+easiness
+easing
+east
+eastbound
+easter
+eastern
+easterner
+easterners
+easternmost
+Easthampton
+Eastland
+Eastman
+eastward
+eastwards
+Eastwick
+Eastwood
+easy
+easygoing
+eat
+eaten
+eater
+eaters
+eating
+eatings
+Eaton
+eats
+eaves
+eavesdrop
+eavesdropped
+eavesdropper
+eavesdroppers
+eavesdropping
+eavesdrops
+ebb
+ebbing
+ebbs
+Eben
+ebony
+eccentric
+eccentricities
+eccentricity
+eccentrics
+Eccles
+ecclesiastical
+echelon
+echo
+echoed
+echoes
+echoing
+eclectic
+eclipse
+eclipsed
+eclipses
+eclipsing
+ecliptic
+Ecole
+ecology
+econometric
+Econometrica
+economic
+economical
+economically
+economics
+economies
+economist
+economists
+economize
+economized
+economizer
+economizers
+economizes
+economizing
+economy
+ecosystem
+ecstasy
+ecstatic
+Ecuador
+Ecuadorian
+Ed
+Eddie
+eddies
+eddy
+Eden
+Edenization
+Edenizations
+Edenize
+Edenizes
+Edgar
+edge
+edged
+Edgerton
+edges
+Edgewater
+Edgewood
+edging
+edible
+edict
+edicts
+edifice
+edifices
+Edinburgh
+Edison
+edit
+edited
+Edith
+editing
+edition
+editions
+editor
+editorial
+editorially
+editorials
+editors
+edits
+Edmonds
+Edmondson
+Edmonton
+Edmund
+Edna
+Edsger
+Eduard
+Eduardo
+educable
+educate
+educated
+educates
+educating
+education
+educational
+educationally
+educations
+educator
+educators
+Edward
+Edwardian
+Edwardine
+Edwards
+Edwin
+Edwina
+eel
+eelgrass
+eels
+eerie
+eerily
+effect
+effected
+effecting
+effective
+effectively
+effectiveness
+effector
+effectors
+effects
+effectually
+effectuate
+effeminate
+efficacy
+efficiencies
+efficiency
+efficient
+efficiently
+Effie
+effigy
+effort
+effortless
+effortlessly
+effortlessness
+efforts
+egalitarian
+Egan
+egg
+egged
+egghead
+egging
+eggplant
+eggs
+eggshell
+ego
+egocentric
+egos
+egotism
+egotist
+Egypt
+Egyptian
+Egyptianization
+Egyptianizations
+Egyptianize
+Egyptianizes
+Egyptians
+Egyptize
+Egyptizes
+Egyptology
+Ehrlich
+Eichmann
+Eiffel
+eigenfunction
+eigenstate
+eigenvalue
+eigenvalues
+eigenvector
+eight
+eighteen
+eighteens
+eighteenth
+eightfold
+eighth
+eighthes
+eighties
+eightieth
+eights
+eighty
+Eileen
+Einstein
+Einsteinian
+Eire
+Eisenhower
+Eisner
+either
+ejaculate
+ejaculated
+ejaculates
+ejaculating
+ejaculation
+ejaculations
+eject
+ejected
+ejecting
+ejects
+Ekberg
+eke
+eked
+ekes
+Ekstrom
+Ektachrome
+elaborate
+elaborated
+elaborately
+elaborateness
+elaborates
+elaborating
+elaboration
+elaborations
+elaborators
+Elaine
+elapse
+elapsed
+elapses
+elapsing
+elastic
+elastically
+elasticity
+Elba
+elbow
+elbowing
+elbows
+elder
+elderly
+elders
+eldest
+Eldon
+Eleanor
+Eleazar
+elect
+elected
+electing
+election
+elections
+elective
+electives
+elector
+electoral
+electorate
+electors
+Electra
+electric
+electrical
+electrically
+electricalness
+electrician
+electricity
+electrification
+electrify
+electrifying
+electro
+electrocardiogram
+electrocardiograph
+electrocute
+electrocuted
+electrocutes
+electrocuting
+electrocution
+electrocutions
+electrode
+electrodes
+electroencephalogram
+electroencephalograph
+electroencephalography
+electrolysis
+electrolyte
+electrolytes
+electrolytic
+electromagnetic
+electromechanical
+electron
+electronic
+electronically
+electronics
+electrons
+electrophoresis
+electrophorus
+elects
+elegance
+elegant
+elegantly
+elegy
+element
+elemental
+elementals
+elementary
+elements
+Elena
+elephant
+elephants
+elevate
+elevated
+elevates
+elevation
+elevator
+elevators
+eleven
+elevens
+eleventh
+elf
+Elgin
+Eli
+elicit
+elicited
+eliciting
+elicits
+elide
+eligibility
+eligible
+Elijah
+eliminate
+eliminated
+eliminates
+eliminating
+elimination
+eliminations
+eliminator
+eliminators
+Elinor
+Eliot
+Elisabeth
+Elisha
+elision
+elite
+elitist
+Elizabeth
+Elizabethan
+Elizabethanize
+Elizabethanizes
+Elizabethans
+elk
+Elkhart
+elks
+Ella
+Ellen
+Ellie
+Elliot
+Elliott
+ellipse
+ellipses
+ellipsis
+ellipsoid
+ellipsoidal
+ellipsoids
+elliptic
+elliptical
+elliptically
+Ellis
+Ellison
+Ellsworth
+Ellwood
+elm
+Elmer
+Elmhurst
+Elmira
+elms
+Elmsford
+Eloise
+elope
+eloquence
+eloquent
+eloquently
+Elroy
+else
+Elsevier
+elsewhere
+Elsie
+Elsinore
+Elton
+elucidate
+elucidated
+elucidates
+elucidating
+elucidation
+elude
+eluded
+eludes
+eluding
+elusive
+elusively
+elusiveness
+elves
+Elvis
+Ely
+Elysee
+Elysees
+Elysium
+em
+emaciate
+emaciated
+emacs
+emanate
+emanating
+emancipate
+emancipation
+Emanuel
+emasculate
+embalm
+embargo
+embargoes
+embark
+embarked
+embarks
+embarrass
+embarrassed
+embarrasses
+embarrassing
+embarrassment
+embassies
+embassy
+embed
+embedded
+embedding
+embeds
+embellish
+embellished
+embellishes
+embellishing
+embellishment
+embellishments
+ember
+embezzle
+emblem
+embodied
+embodies
+embodiment
+embodiments
+embody
+embodying
+embolden
+embrace
+embraced
+embraces
+embracing
+embroider
+embroidered
+embroideries
+embroiders
+embroidery
+embroil
+embryo
+embryology
+embryos
+emerald
+emeralds
+emerge
+emerged
+emergence
+emergencies
+emergency
+emergent
+emerges
+emerging
+emeritus
+Emerson
+Emery
+emigrant
+emigrants
+emigrate
+emigrated
+emigrates
+emigrating
+emigration
+Emil
+Emile
+Emilio
+Emily
+eminence
+eminent
+eminently
+emissary
+emission
+emit
+emits
+emitted
+emitter
+emitting
+Emma
+Emmanuel
+Emmett
+Emory
+emotion
+emotional
+emotionally
+emotions
+empathy
+emperor
+emperors
+emphases
+emphasis
+emphasize
+emphasized
+emphasizes
+emphasizing
+emphatic
+emphatically
+empire
+empires
+empirical
+empirically
+empiricist
+empiricists
+employ
+employable
+employed
+employee
+employees
+employer
+employers
+employing
+employment
+employments
+employs
+emporium
+empower
+empowered
+empowering
+empowers
+empress
+emptied
+emptier
+empties
+emptiest
+emptily
+emptiness
+empty
+emptying
+emulate
+emulated
+emulates
+emulating
+emulation
+emulations
+emulator
+emulators
+en
+enable
+enabled
+enabler
+enablers
+enables
+enabling
+enact
+enacted
+enacting
+enactment
+enacts
+enamel
+enameled
+enameling
+enamels
+encamp
+encamped
+encamping
+encamps
+encapsulate
+encapsulated
+encapsulates
+encapsulating
+encapsulation
+encased
+enchant
+enchanted
+enchanter
+enchanting
+enchantment
+enchantress
+enchants
+encipher
+enciphered
+enciphering
+enciphers
+encircle
+encircled
+encircles
+enclose
+enclosed
+encloses
+enclosing
+enclosure
+enclosures
+encode
+encoded
+encoder
+encoders
+encodes
+encoding
+encodings
+encompass
+encompassed
+encompasses
+encompassing
+encore
+encounter
+encountered
+encountering
+encounters
+encourage
+encouraged
+encouragement
+encouragements
+encourages
+encouraging
+encouragingly
+encroach
+encrust
+encrypt
+encrypted
+encrypting
+encryption
+encryptions
+encrypts
+encumber
+encumbered
+encumbering
+encumbers
+encyclopedia
+encyclopedias
+encyclopedic
+end
+endanger
+endangered
+endangering
+endangers
+endear
+endeared
+endearing
+endears
+endeavor
+endeavored
+endeavoring
+endeavors
+ended
+endemic
+ender
+enders
+endgame
+Endicott
+ending
+endings
+endless
+endlessly
+endlessness
+endorse
+endorsed
+endorsement
+endorses
+endorsing
+endow
+endowed
+endowing
+endowment
+endowments
+endows
+endpoint
+ends
+endurable
+endurably
+endurance
+endure
+endured
+endures
+enduring
+enduringly
+enema
+enemas
+enemies
+enemy
+energetic
+energies
+energize
+energy
+enervate
+enfeeble
+Enfield
+enforce
+enforceable
+enforced
+enforcement
+enforcer
+enforcers
+enforces
+enforcing
+enfranchise
+Eng
+engage
+engaged
+engagement
+engagements
+engages
+engaging
+engagingly
+Engel
+Engels
+engender
+engendered
+engendering
+engenders
+engine
+engineer
+engineered
+engineering
+engineers
+engines
+England
+Englander
+Englanders
+Engle
+Englewood
+English
+Englishize
+Englishizes
+Englishman
+Englishmen
+engrave
+engraved
+engraver
+engraves
+engraving
+engravings
+engross
+engrossed
+engrossing
+engulf
+enhance
+enhanced
+enhancement
+enhancements
+enhances
+enhancing
+Enid
+enigma
+enigmatic
+enjoin
+enjoined
+enjoining
+enjoins
+enjoy
+enjoyable
+enjoyably
+enjoyed
+enjoying
+enjoyment
+enjoys
+enlarge
+enlarged
+enlargement
+enlargements
+enlarger
+enlargers
+enlarges
+enlarging
+enlighten
+enlightened
+enlightening
+enlightenment
+enlist
+enlisted
+enlistment
+enlists
+enliven
+enlivened
+enlivening
+enlivens
+enmities
+enmity
+ennoble
+ennobled
+ennobles
+ennobling
+ennui
+Enoch
+enormities
+enormity
+enormous
+enormously
+Enos
+enough
+enqueue
+enqueued
+enqueues
+enquire
+enquired
+enquirer
+enquires
+enquiry
+enrage
+enraged
+enrages
+enraging
+enrapture
+enrich
+enriched
+enriches
+enriching
+Enrico
+enroll
+enrolled
+enrolling
+enrollment
+enrollments
+enrolls
+ensemble
+ensembles
+ensign
+ensigns
+enslave
+enslaved
+enslaves
+enslaving
+ensnare
+ensnared
+ensnares
+ensnaring
+Ensolite
+ensue
+ensued
+ensues
+ensuing
+ensure
+ensured
+ensurer
+ensurers
+ensures
+ensuring
+entail
+entailed
+entailing
+entails
+entangle
+enter
+entered
+entering
+enterprise
+enterprises
+enterprising
+enters
+entertain
+entertained
+entertainer
+entertainers
+entertaining
+entertainingly
+entertainment
+entertainments
+entertains
+enthusiasm
+enthusiasms
+enthusiast
+enthusiastic
+enthusiastically
+enthusiasts
+entice
+enticed
+enticer
+enticers
+entices
+enticing
+entire
+entirely
+entireties
+entirety
+entities
+entitle
+entitled
+entitles
+entitling
+entity
+entomb
+entrance
+entranced
+entrances
+entrap
+entreat
+entreated
+entreaty
+entree
+entrench
+entrenched
+entrenches
+entrenching
+entrepreneur
+entrepreneurial
+entrepreneurs
+entries
+entropy
+entrust
+entrusted
+entrusting
+entrusts
+entry
+enumerable
+enumerate
+enumerated
+enumerates
+enumerating
+enumeration
+enumerative
+enumerator
+enumerators
+enunciation
+envelop
+envelope
+enveloped
+enveloper
+envelopes
+enveloping
+envelops
+envied
+envies
+envious
+enviously
+enviousness
+environ
+environing
+environment
+environmental
+environments
+environs
+envisage
+envisaged
+envisages
+envision
+envisioned
+envisioning
+envisions
+envoy
+envoys
+envy
+enzyme
+Eocene
+epaulet
+epaulets
+ephemeral
+Ephesian
+Ephesians
+Ephesus
+Ephraim
+epic
+epicenter
+epics
+Epicurean
+Epicurize
+Epicurizes
+Epicurus
+epidemic
+epidemics
+epidermis
+epigram
+epileptic
+epilogue
+Epiphany
+episcopal
+Episcopalian
+Episcopalianize
+Episcopalianizes
+episode
+episodes
+epistemological
+epistemology
+epistle
+epistles
+epitaph
+epitaphs
+epitaxial
+epitaxially
+epithet
+epithets
+epitomize
+epitomized
+epitomizes
+epitomizing
+epoch
+epochs
+epsilon
+Epsom
+Epstein
+equal
+equaled
+equaling
+equalities
+equality
+equalization
+equalize
+equalized
+equalizer
+equalizers
+equalizes
+equalizing
+equally
+equals
+equate
+equated
+equates
+equating
+equation
+equations
+equator
+equatorial
+equators
+equestrian
+equidistant
+equilateral
+equilibrate
+equilibria
+equilibrium
+equilibriums
+equinox
+equip
+equipment
+equipoise
+equipped
+equipping
+equips
+equitable
+equitably
+equity
+equivalence
+equivalences
+equivalent
+equivalently
+equivalents
+equivocal
+equivocally
+era
+eradicate
+eradicated
+eradicates
+eradicating
+eradication
+eras
+erasable
+erase
+erased
+eraser
+erasers
+erases
+erasing
+Erasmus
+Erastus
+erasure
+Erato
+Eratosthenes
+ere
+erect
+erected
+erecting
+erection
+erections
+erector
+erectors
+erects
+erg
+ergo
+ergodic
+Eric
+Erich
+Erickson
+Ericsson
+Erie
+Erik
+Erikson
+Eris
+Erlang
+Erlenmeyer
+Erlenmeyers
+ermine
+ermines
+Erne
+Ernest
+Ernestine
+Ernie
+Ernst
+erode
+Eros
+erosion
+erotic
+erotica
+err
+errand
+errant
+errata
+erratic
+erratum
+erred
+erring
+erringly
+Errol
+erroneous
+erroneously
+erroneousness
+error
+errors
+errs
+ersatz
+Erskine
+erudite
+erupt
+eruption
+Ervin
+Erwin
+escalate
+escalated
+escalates
+escalating
+escalation
+escapable
+escapade
+escapades
+escape
+escaped
+escapee
+escapees
+escapes
+escaping
+Escherichia
+eschew
+eschewed
+eschewing
+eschews
+escort
+escorted
+escorting
+escorts
+escrow
+Eskimo
+Eskimoized
+Eskimoizeds
+Eskimos
+Esmark
+esoteric
+Espagnol
+especial
+especially
+espionage
+Esposito
+espouse
+espoused
+espouses
+espousing
+esprit
+espy
+esquire
+esquires
+essay
+essayed
+essays
+Essen
+essence
+essences
+Essenize
+Essenizes
+essential
+essentially
+essentials
+Essex
+establish
+established
+establishes
+establishing
+establishment
+establishments
+estate
+estates
+esteem
+esteemed
+esteeming
+esteems
+Estella
+Estes
+Esther
+esthetics
+estimate
+estimated
+estimates
+estimating
+estimation
+estimations
+Estonia
+Estonian
+et
+etch
+etching
+eternal
+eternally
+eternities
+eternity
+Ethan
+Ethel
+ether
+ethereal
+ethereally
+Ethernet
+Ethernets
+ethers
+ethic
+ethical
+ethically
+ethics
+Ethiopia
+Ethiopians
+ethnic
+etiquette
+Etruria
+Etruscan
+etymology
+eucalyptus
+Eucharist
+Euclid
+Euclidean
+Eugene
+Eugenia
+Euler
+Eulerian
+Eumenides
+Eunice
+eunuch
+eunuchs
+euphemism
+euphemisms
+euphoria
+euphoric
+Euphrates
+Eurasia
+Eurasian
+eureka
+Euripides
+Europa
+Europe
+European
+Europeanization
+Europeanizations
+Europeanize
+Europeanized
+Europeanizes
+Europeans
+Eurydice
+Euterpe
+euthanasia
+Eva
+evacuate
+evacuated
+evacuation
+evade
+evaded
+evades
+evading
+evaluate
+evaluated
+evaluates
+evaluating
+evaluation
+evaluations
+evaluative
+evaluator
+evaluators
+Evangeline
+Evans
+Evanston
+Evansville
+evaporate
+evaporated
+evaporating
+evaporation
+evaporative
+evasion
+evasive
+Eve
+Evelyn
+even
+evened
+evenhanded
+evenhandedly
+evenhandedness
+evening
+evenings
+evenly
+evenness
+evens
+Evensen
+event
+eventful
+eventfully
+events
+eventual
+eventualities
+eventuality
+eventually
+ever
+Eveready
+Everest
+Everett
+Everglade
+Everglades
+evergreen
+Everhart
+everlasting
+everlastingly
+evermore
+every
+everybody
+everyday
+everyone
+everything
+everywhere
+evict
+evicted
+evicting
+eviction
+evictions
+evicts
+evidence
+evidenced
+evidences
+evidencing
+evident
+evidently
+evil
+eviller
+evilly
+evils
+evince
+evinced
+evinces
+evoke
+evoked
+evokes
+evoking
+evolute
+evolutes
+evolution
+evolutionary
+evolutions
+evolve
+evolved
+evolves
+evolving
+ewe
+Ewen
+ewes
+Ewing
+ex
+exacerbate
+exacerbated
+exacerbates
+exacerbating
+exacerbation
+exacerbations
+exact
+exacted
+exacting
+exactingly
+exaction
+exactions
+exactitude
+exactly
+exactness
+exacts
+exaggerate
+exaggerated
+exaggerates
+exaggerating
+exaggeration
+exaggerations
+exalt
+exaltation
+exalted
+exalting
+exalts
+exam
+examination
+examinations
+examine
+examined
+examiner
+examiners
+examines
+examining
+example
+examples
+exams
+exasperate
+exasperated
+exasperates
+exasperating
+exasperation
+excavate
+excavated
+excavates
+excavating
+excavation
+excavations
+exceed
+exceeded
+exceeding
+exceedingly
+exceeds
+excel
+excelled
+excellence
+excellences
+excellency
+excellent
+excellently
+excelling
+excels
+except
+excepted
+excepting
+exception
+exceptionable
+exceptional
+exceptionally
+exceptions
+excepts
+excerpt
+excerpted
+excerpts
+excess
+excesses
+excessive
+excessively
+exchange
+exchangeable
+exchanged
+exchanges
+exchanging
+exchequer
+exchequers
+excise
+excised
+excises
+excising
+excision
+excitable
+excitation
+excitations
+excite
+excited
+excitedly
+excitement
+excites
+exciting
+excitingly
+exciton
+exclaim
+exclaimed
+exclaimer
+exclaimers
+exclaiming
+exclaims
+exclamation
+exclamations
+exclamatory
+exclude
+excluded
+excludes
+excluding
+exclusion
+exclusionary
+exclusions
+exclusive
+exclusively
+exclusiveness
+exclusivity
+excommunicate
+excommunicated
+excommunicates
+excommunicating
+excommunication
+excrete
+excreted
+excretes
+excreting
+excretion
+excretions
+excretory
+excruciate
+excursion
+excursions
+excusable
+excusably
+excuse
+excused
+excuses
+excusing
+exec
+executable
+execute
+executed
+executes
+executing
+execution
+executional
+executioner
+executions
+executive
+executives
+executor
+executors
+exemplar
+exemplary
+exemplification
+exemplified
+exemplifier
+exemplifiers
+exemplifies
+exemplify
+exemplifying
+exempt
+exempted
+exempting
+exemption
+exempts
+exercise
+exercised
+exerciser
+exercisers
+exercises
+exercising
+exert
+exerted
+exerting
+exertion
+exertions
+exerts
+Exeter
+exhale
+exhaled
+exhales
+exhaling
+exhaust
+exhausted
+exhaustedly
+exhausting
+exhaustion
+exhaustive
+exhaustively
+exhausts
+exhibit
+exhibited
+exhibiting
+exhibition
+exhibitions
+exhibitor
+exhibitors
+exhibits
+exhilarate
+exhort
+exhortation
+exhortations
+exhume
+exigency
+exile
+exiled
+exiles
+exiling
+exist
+existed
+existence
+existent
+existential
+existentialism
+existentialist
+existentialists
+existentially
+existing
+exists
+exit
+exited
+exiting
+exits
+exodus
+exorbitant
+exorbitantly
+exorcism
+exorcist
+exoskeleton
+exotic
+expand
+expandable
+expanded
+expander
+expanders
+expanding
+expands
+expanse
+expanses
+expansible
+expansion
+expansionism
+expansions
+expansive
+expect
+expectancy
+expectant
+expectantly
+expectation
+expectations
+expected
+expectedly
+expecting
+expectingly
+expects
+expediency
+expedient
+expediently
+expedite
+expedited
+expedites
+expediting
+expedition
+expeditions
+expeditious
+expeditiously
+expel
+expelled
+expelling
+expels
+expend
+expendable
+expended
+expending
+expenditure
+expenditures
+expends
+expense
+expenses
+expensive
+expensively
+experience
+experienced
+experiences
+experiencing
+experiment
+experimental
+experimentally
+experimentation
+experimentations
+experimented
+experimenter
+experimenters
+experimenting
+experiments
+expert
+expertise
+expertly
+expertness
+experts
+expiration
+expirations
+expire
+expired
+expires
+expiring
+explain
+explainable
+explained
+explainer
+explainers
+explaining
+explains
+explanation
+explanations
+explanatory
+expletive
+explicit
+explicitly
+explicitness
+explode
+exploded
+explodes
+exploding
+exploit
+exploitable
+exploitation
+exploitations
+exploited
+exploiter
+exploiters
+exploiting
+exploits
+exploration
+explorations
+exploratory
+explore
+explored
+explorer
+explorers
+explores
+exploring
+explosion
+explosions
+explosive
+explosively
+explosives
+exponent
+exponential
+exponentially
+exponentials
+exponentiate
+exponentiated
+exponentiates
+exponentiating
+exponentiation
+exponentiations
+exponents
+export
+exportation
+exported
+exporter
+exporters
+exporting
+exports
+expose
+exposed
+exposer
+exposers
+exposes
+exposing
+exposition
+expositions
+expository
+exposure
+exposures
+expound
+expounded
+expounder
+expounding
+expounds
+express
+expressed
+expresses
+expressibility
+expressible
+expressibly
+expressing
+expression
+expressions
+expressive
+expressively
+expressiveness
+expressly
+expulsion
+expunge
+expunged
+expunges
+expunging
+expurgate
+exquisite
+exquisitely
+exquisiteness
+extant
+extemporaneous
+extend
+extendable
+extended
+extending
+extends
+extensibility
+extensible
+extension
+extensions
+extensive
+extensively
+extent
+extents
+extenuate
+extenuated
+extenuating
+extenuation
+exterior
+exteriors
+exterminate
+exterminated
+exterminates
+exterminating
+extermination
+external
+externally
+extinct
+extinction
+extinguish
+extinguished
+extinguisher
+extinguishes
+extinguishing
+extirpate
+extol
+extort
+extorted
+extortion
+extra
+extract
+extracted
+extracting
+extraction
+extractions
+extractor
+extractors
+extracts
+extracurricular
+extramarital
+extraneous
+extraneously
+extraneousness
+extraordinarily
+extraordinariness
+extraordinary
+extrapolate
+extrapolated
+extrapolates
+extrapolating
+extrapolation
+extrapolations
+extras
+extraterrestrial
+extravagance
+extravagant
+extravagantly
+extravaganza
+extremal
+extreme
+extremely
+extremes
+extremist
+extremists
+extremities
+extremity
+extricate
+extrinsic
+extrovert
+exuberance
+exult
+exultation
+Exxon
+eye
+eyeball
+eyebrow
+eyebrows
+eyed
+eyeful
+eyeglass
+eyeglasses
+eyeing
+eyelash
+eyelid
+eyelids
+eyepiece
+eyepieces
+eyer
+eyers
+eyes
+eyesight
+eyewitness
+eyewitnesses
+eying
+Ezekiel
+Ezra
+Faber
+Fabian
+fable
+fabled
+fables
+fabric
+fabricate
+fabricated
+fabricates
+fabricating
+fabrication
+fabrics
+fabulous
+fabulously
+facade
+facaded
+facades
+face
+faced
+faces
+facet
+faceted
+facets
+facial
+facile
+facilely
+facilitate
+facilitated
+facilitates
+facilitating
+facilities
+facility
+facing
+facings
+facsimile
+facsimiles
+fact
+faction
+factions
+factious
+facto
+factor
+factored
+factorial
+factories
+factoring
+factorization
+factorizations
+factors
+factory
+facts
+factual
+factually
+faculties
+faculty
+fade
+faded
+fadeout
+fader
+faders
+fades
+fading
+Fafnir
+fag
+Fagin
+fags
+Fahey
+Fahrenheit
+Fahrenheits
+fail
+failed
+failing
+failings
+fails
+failsoft
+failure
+failures
+fain
+faint
+fainted
+fainter
+faintest
+fainting
+faintly
+faintness
+faints
+fair
+Fairbanks
+Fairchild
+fairer
+fairest
+Fairfax
+Fairfield
+fairies
+fairing
+fairly
+Fairmont
+fairness
+Fairport
+fairs
+Fairview
+fairy
+fairyland
+faith
+faithful
+faithfully
+faithfulness
+faithless
+faithlessly
+faithlessness
+faiths
+fake
+faked
+faker
+fakes
+faking
+falcon
+falconer
+falcons
+Falk
+Falkland
+Falklands
+fall
+fallacies
+fallacious
+fallacy
+fallen
+fallibility
+fallible
+falling
+Fallopian
+fallout
+fallow
+falls
+Falmouth
+false
+falsehood
+falsehoods
+falsely
+falseness
+falsification
+falsified
+falsifies
+falsify
+falsifying
+falsity
+Falstaff
+falter
+faltered
+falters
+fame
+famed
+fames
+familial
+familiar
+familiarities
+familiarity
+familiarization
+familiarize
+familiarized
+familiarizes
+familiarizing
+familiarly
+familiarness
+families
+familism
+family
+famine
+famines
+famish
+famous
+famously
+fan
+fanatic
+fanaticism
+fanatics
+fancied
+fancier
+fanciers
+fancies
+fanciest
+fanciful
+fancifully
+fancily
+fanciness
+fancy
+fancying
+fanfare
+fanfold
+fang
+fangled
+fangs
+fanned
+Fannies
+fanning
+Fanny
+fanout
+fans
+fantasies
+fantasize
+fantastic
+fantasy
+FAQ
+far
+farad
+Faraday
+faraway
+Farber
+farce
+farces
+fare
+fared
+fares
+farewell
+farewells
+farfetched
+Fargo
+farina
+faring
+Farkas
+Farley
+farm
+farmed
+farmer
+farmers
+farmhouse
+farmhouses
+farming
+Farmington
+farmland
+farms
+farmyard
+farmyards
+Farnsworth
+Farrell
+farsighted
+farther
+farthest
+farthing
+fascicle
+fascinate
+fascinated
+fascinates
+fascinating
+fascination
+fascism
+fascist
+fashion
+fashionable
+fashionably
+fashioned
+fashioning
+fashions
+fast
+fasted
+fasten
+fastened
+fastener
+fasteners
+fastening
+fastenings
+fastens
+faster
+fastest
+fastidious
+fasting
+fastness
+fasts
+fat
+fatal
+fatalities
+fatality
+fatally
+fatals
+fate
+fated
+fateful
+fates
+father
+fathered
+fatherland
+fatherly
+fathers
+fathom
+fathomed
+fathoming
+fathoms
+fatigue
+fatigued
+fatigues
+fatiguing
+Fatima
+fatness
+fats
+fatten
+fattened
+fattener
+fatteners
+fattening
+fattens
+fatter
+fattest
+fatty
+faucet
+Faulkner
+Faulknerian
+fault
+faulted
+faulting
+faultless
+faultlessly
+faults
+faulty
+faun
+fauna
+Fauntleroy
+Faust
+Faustian
+Faustus
+favor
+favorable
+favorably
+favored
+favorer
+favoring
+favorite
+favorites
+favoritism
+favors
+Fawkes
+fawn
+fawned
+fawning
+fawns
+Fayette
+Fayetteville
+faze
+Fe
+fear
+feared
+fearful
+fearfully
+fearing
+fearless
+fearlessly
+fearlessness
+fears
+fearsome
+feasibility
+feasible
+feast
+feasted
+feasting
+feasts
+feat
+feather
+featherbed
+featherbedding
+feathered
+featherer
+featherers
+feathering
+Featherman
+feathers
+featherweight
+feathery
+feats
+feature
+featured
+features
+featuring
+Februaries
+February
+fecund
+fed
+Fedders
+federal
+federalist
+federally
+federals
+federation
+Fedora
+fee
+feeble
+feebleness
+feebler
+feeblest
+feebly
+feed
+feedback
+feeder
+feeders
+feeding
+feedings
+feeds
+feel
+feeler
+feelers
+feeling
+feelingly
+feelings
+feels
+Feeney
+fees
+feet
+feign
+feigned
+feigning
+Felder
+Feldman
+Felice
+Felicia
+felicities
+felicity
+feline
+Felix
+fell
+fellatio
+felled
+felling
+Fellini
+fellow
+fellows
+fellowship
+fellowships
+felon
+felonious
+felony
+felt
+felts
+female
+females
+feminine
+femininity
+feminism
+feminist
+femur
+femurs
+fen
+fence
+fenced
+fencer
+fencers
+fences
+fencing
+fend
+Fenton
+Fenwick
+Ferber
+Ferdinand
+Ferdinando
+Ferguson
+Fermat
+ferment
+fermentation
+fermentations
+fermented
+fermenting
+ferments
+Fermi
+fern
+Fernando
+ferns
+ferocious
+ferociously
+ferociousness
+ferocity
+Ferreira
+Ferrer
+ferret
+ferried
+ferries
+ferrite
+ferry
+fertile
+fertilely
+fertility
+fertilization
+fertilize
+fertilized
+fertilizer
+fertilizers
+fertilizes
+fertilizing
+fervent
+fervently
+fervor
+fervors
+Fess
+festival
+festivals
+festive
+festively
+festivities
+festivity
+fetal
+fetch
+fetched
+fetches
+fetching
+fetchingly
+fetid
+fetish
+fetter
+fettered
+fetters
+fettle
+fetus
+feud
+feudal
+feudalism
+feuds
+fever
+fevered
+feverish
+feverishly
+fevers
+few
+fewer
+fewest
+fewness
+fiance
+fiancee
+fiasco
+fiat
+fib
+fibbing
+fiber
+Fiberglas
+fibers
+Fibonacci
+fibrosities
+fibrosity
+fibrous
+fibrously
+fickle
+fickleness
+fiction
+fictional
+fictionally
+fictions
+fictitious
+fictitiously
+fiddle
+fiddled
+fiddler
+fiddles
+fiddlestick
+fiddlesticks
+fiddling
+Fidel
+fidelity
+fidget
+fiducial
+fief
+fiefdom
+field
+fielded
+fielder
+fielders
+fielding
+Fields
+fieldwork
+fiend
+fiendish
+fierce
+fiercely
+fierceness
+fiercer
+fiercest
+fiery
+fife
+fifteen
+fifteens
+fifteenth
+fifth
+fifties
+fiftieth
+fifty
+fig
+Figaro
+fight
+fighter
+fighters
+fighting
+fights
+figs
+figurative
+figuratively
+figure
+figured
+figures
+figuring
+figurings
+Fiji
+Fijian
+Fijians
+filament
+filaments
+file
+filed
+filename
+filenames
+filer
+files
+filial
+filibuster
+filing
+filings
+Filipino
+Filipinos
+Filippo
+fill
+fillable
+filled
+filler
+fillers
+filling
+fillings
+Fillmore
+fills
+filly
+film
+filmed
+filming
+films
+filter
+filtered
+filtering
+filters
+filth
+filthier
+filthiest
+filthiness
+filthy
+fin
+final
+finality
+finalization
+finalize
+finalized
+finalizes
+finalizing
+finally
+finals
+finance
+financed
+finances
+financial
+financially
+financier
+financiers
+financing
+find
+finder
+finders
+finding
+findings
+finds
+fine
+fined
+finely
+fineness
+finer
+fines
+finesse
+finessed
+finessing
+finest
+finger
+fingered
+fingering
+fingerings
+fingernail
+fingerprint
+fingerprints
+fingers
+fingertip
+finicky
+fining
+finish
+finished
+finisher
+finishers
+finishes
+finishing
+finite
+finitely
+finiteness
+fink
+Finland
+Finley
+Finn
+Finnegan
+Finnish
+Finns
+finny
+fins
+Fiorello
+Fiori
+fir
+fire
+firearm
+firearms
+fireboat
+firebreak
+firebug
+firecracker
+fired
+fireflies
+firefly
+firehouse
+firelight
+fireman
+firemen
+fireplace
+fireplaces
+firepower
+fireproof
+firer
+firers
+fires
+fireside
+Firestone
+firewall
+firewood
+fireworks
+firing
+firings
+firm
+firmament
+firmed
+firmer
+firmest
+firming
+firmly
+firmness
+firms
+firmware
+first
+firsthand
+firstly
+firsts
+fiscal
+fiscally
+Fischbein
+Fischer
+fish
+fished
+fisher
+fisherman
+fishermen
+fishers
+fishery
+fishes
+fishing
+Fishkill
+fishmonger
+fishpond
+fishy
+Fisk
+Fiske
+fission
+fissure
+fissured
+fist
+fisted
+fisticuff
+fists
+fit
+Fitch
+Fitchburg
+fitful
+fitfully
+fitly
+fitness
+fits
+fitted
+fitter
+fitters
+fitting
+fittingly
+fittings
+Fitzgerald
+Fitzpatrick
+Fitzroy
+five
+fivefold
+fives
+fix
+fixate
+fixated
+fixates
+fixating
+fixation
+fixations
+fixed
+fixedly
+fixedness
+fixer
+fixers
+fixes
+fixing
+fixings
+fixture
+fixtures
+Fizeau
+fizzle
+fizzled
+flabbergast
+flabbergasted
+flack
+flag
+flagellate
+flagged
+flagging
+Flagler
+flagpole
+flagrant
+flagrantly
+flags
+Flagstaff
+flail
+flair
+flak
+flake
+flaked
+flakes
+flaking
+flaky
+flam
+flamboyant
+flame
+flamed
+flamer
+flamers
+flames
+flaming
+flammable
+Flanagan
+Flanders
+flank
+flanked
+flanker
+flanking
+flanks
+flannel
+flannels
+flap
+flaps
+flare
+flared
+flares
+flaring
+flash
+flashback
+flashed
+flasher
+flashers
+flashes
+flashing
+flashlight
+flashlights
+flashy
+flask
+flat
+flatbed
+flatly
+flatness
+flats
+flatten
+flattened
+flattening
+flatter
+flattered
+flatterer
+flattering
+flattery
+flattest
+flatulent
+flatus
+flatworm
+flaunt
+flaunted
+flaunting
+flaunts
+flavor
+flavored
+flavoring
+flavorings
+flavors
+flaw
+flawed
+flawless
+flawlessly
+flaws
+flax
+flaxen
+flea
+fleas
+fled
+Fledermaus
+fledged
+fledgling
+fledglings
+flee
+fleece
+fleeces
+fleecy
+fleeing
+flees
+fleet
+fleetest
+fleeting
+fleetly
+fleetness
+fleets
+Fleischman
+Fleisher
+Fleming
+Flemings
+Flemish
+Flemished
+Flemishes
+Flemishing
+flesh
+fleshed
+fleshes
+fleshing
+fleshly
+fleshy
+Fletcher
+Fletcherize
+Fletcherizes
+flew
+flex
+flexibilities
+flexibility
+flexible
+flexibly
+flick
+flicked
+flicker
+flickering
+flicking
+flicks
+flier
+fliers
+flies
+flight
+flights
+flimsy
+flinch
+flinched
+flinches
+flinching
+fling
+flings
+flint
+flinty
+flip
+flipflop
+flipped
+flips
+flirt
+flirtation
+flirtatious
+flirted
+flirting
+flirts
+flit
+flitting
+Flo
+float
+floated
+floater
+floating
+floats
+flock
+flocked
+flocking
+flocks
+flog
+flogging
+flood
+flooded
+flooding
+floodlight
+floodlit
+floods
+floor
+floored
+flooring
+floorings
+floors
+flop
+floppies
+floppily
+flopping
+floppy
+flops
+flora
+floral
+Florence
+Florentine
+florid
+Florida
+Floridian
+Floridians
+florin
+florist
+floss
+flossed
+flosses
+flossing
+flotation
+flotilla
+flounder
+floundered
+floundering
+flounders
+flour
+floured
+flourish
+flourished
+flourishes
+flourishing
+flow
+flowchart
+flowcharting
+flowcharts
+flowed
+flower
+flowered
+floweriness
+flowering
+flowerpot
+flowers
+flowery
+flowing
+flown
+flows
+Floyd
+flu
+fluctuate
+fluctuates
+fluctuating
+fluctuation
+fluctuations
+flue
+fluency
+fluent
+fluently
+fluff
+fluffier
+fluffiest
+fluffy
+fluid
+fluidity
+fluidly
+fluids
+fluke
+flung
+flunked
+fluoresce
+fluorescent
+flurried
+flurry
+flush
+flushed
+flushes
+flushing
+flute
+fluted
+fluting
+flutter
+fluttered
+fluttering
+flutters
+flux
+fly
+flyable
+flyer
+flyers
+flying
+Flynn
+foal
+foam
+foamed
+foaming
+foams
+foamy
+fob
+fobbing
+focal
+focally
+foci
+focus
+focused
+focuses
+focusing
+focussed
+fodder
+foe
+foes
+fog
+Fogarty
+fogged
+foggier
+foggiest
+foggily
+fogging
+foggy
+fogs
+fogy
+foible
+foil
+foiled
+foiling
+foils
+foist
+fold
+folded
+folder
+folders
+folding
+foldout
+folds
+Foley
+foliage
+folk
+folklore
+folks
+folksong
+folksy
+follies
+follow
+followed
+follower
+followers
+following
+followings
+follows
+folly
+Folsom
+Fomalhaut
+fond
+fonder
+fondle
+fondled
+fondles
+fondling
+fondly
+fondness
+font
+Fontaine
+Fontainebleau
+Fontana
+fonts
+food
+foods
+foodstuff
+foodstuffs
+fool
+fooled
+foolhardy
+fooling
+foolish
+foolishly
+foolishness
+foolproof
+fools
+foot
+footage
+football
+footballs
+footbridge
+Foote
+footed
+footer
+footers
+footfall
+foothill
+foothold
+footing
+footman
+footnote
+footnotes
+footpath
+footprint
+footprints
+footstep
+footsteps
+for
+forage
+foraged
+forages
+foraging
+foray
+forays
+forbade
+forbear
+forbearance
+forbears
+Forbes
+forbid
+forbidden
+forbidding
+forbids
+force
+forced
+forceful
+forcefully
+forcefulness
+forcer
+forces
+forcible
+forcibly
+forcing
+ford
+Fordham
+fords
+fore
+forearm
+forearms
+foreboding
+forecast
+forecasted
+forecaster
+forecasters
+forecasting
+forecastle
+forecasts
+forefather
+forefathers
+forefinger
+forefingers
+forego
+foregoes
+foregoing
+foregone
+foreground
+forehead
+foreheads
+foreign
+foreigner
+foreigners
+foreigns
+foreman
+foremost
+forenoon
+forensic
+forerunners
+foresee
+foreseeable
+foreseen
+foresees
+foresight
+foresighted
+forest
+forestall
+forestalled
+forestalling
+forestallment
+forestalls
+forested
+forester
+foresters
+forestry
+forests
+foretell
+foretelling
+foretells
+foretold
+forever
+forewarn
+forewarned
+forewarning
+forewarnings
+forewarns
+forfeit
+forfeited
+forfeiture
+forgave
+forge
+forged
+forger
+forgeries
+forgery
+forges
+forget
+forgetful
+forgetfulness
+forgets
+forgettable
+forgettably
+forgetting
+forging
+forgivable
+forgivably
+forgive
+forgiven
+forgiveness
+forgives
+forgiving
+forgivingly
+forgot
+forgotten
+fork
+forked
+forking
+forklift
+forks
+forlorn
+forlornly
+form
+formal
+formalism
+formalisms
+formalities
+formality
+formalization
+formalizations
+formalize
+formalized
+formalizes
+formalizing
+formally
+formant
+formants
+format
+formation
+formations
+formative
+formatively
+formats
+formatted
+formatter
+formatters
+formatting
+formed
+former
+formerly
+Formica
+Formicas
+formidable
+forming
+Formosa
+Formosan
+forms
+formula
+formulae
+formulas
+formulate
+formulated
+formulates
+formulating
+formulation
+formulations
+formulator
+formulators
+fornication
+Forrest
+forsake
+forsaken
+forsakes
+forsaking
+Forsythe
+fort
+forte
+Fortescue
+FORTH
+forthcoming
+forthright
+forthwith
+fortier
+forties
+fortieth
+fortification
+fortifications
+fortified
+fortifies
+fortify
+fortifying
+fortiori
+fortitude
+fortnight
+fortnightly
+FORTRAN
+Fortran
+fortress
+fortresses
+forts
+fortuitous
+fortuitously
+fortunate
+fortunately
+fortune
+fortunes
+forty
+forum
+forums
+forward
+forwarded
+forwarder
+forwarding
+forwardness
+forwards
+Foss
+fossil
+foster
+fostered
+fostering
+fosters
+fought
+foul
+fouled
+foulest
+fouling
+foully
+foulmouth
+foulness
+fouls
+found
+foundation
+foundations
+founded
+founder
+foundered
+founders
+founding
+foundling
+foundries
+foundry
+founds
+fount
+fountain
+fountains
+founts
+four
+fourfold
+Fourier
+fours
+fourscore
+foursome
+foursquare
+fourteen
+fourteens
+fourteenth
+fourth
+fowl
+fowler
+fowls
+fox
+foxes
+Foxhall
+fraction
+fractional
+fractionally
+fractions
+fracture
+fractured
+fractures
+fracturing
+fragile
+fragment
+fragmentary
+fragmentation
+fragmented
+fragmenting
+fragments
+fragrance
+fragrances
+fragrant
+fragrantly
+frail
+frailest
+frailty
+frame
+framed
+framer
+frames
+framework
+frameworks
+framing
+Fran
+franc
+Francaise
+France
+Frances
+Francesca
+Francesco
+franchise
+franchises
+Francie
+Francine
+Francis
+Franciscan
+Franciscans
+Francisco
+Francize
+Francizes
+Franco
+Francois
+Francoise
+francs
+frank
+franked
+Frankel
+franker
+frankest
+Frankfort
+Frankfurt
+Frankie
+franking
+Franklinization
+Franklinizations
+frankly
+frankness
+franks
+Franny
+frantic
+frantically
+Franz
+Fraser
+fraternal
+fraternally
+fraternities
+fraternity
+Frau
+fraud
+frauds
+fraudulent
+fraught
+fray
+frayed
+fraying
+Frayne
+frays
+Frazier
+frazzle
+freak
+freakish
+freaks
+freckle
+freckled
+freckles
+Fred
+Freddie
+Freddy
+Frederic
+Frederick
+Fredericks
+Fredericksburg
+Frederico
+Fredericton
+Fredholm
+Fredrick
+Fredrickson
+free
+freed
+Freedman
+freedom
+freedoms
+freeing
+freeings
+freely
+freeman
+Freemason
+Freemasonry
+Freemasons
+freeness
+Freeport
+freer
+frees
+freest
+freestyle
+Freetown
+freeway
+freewheel
+freeze
+freezer
+freezers
+freezes
+freezing
+Freida
+freight
+freighted
+freighter
+freighters
+freighting
+freights
+French
+Frenchize
+Frenchizes
+Frenchman
+Frenchmen
+frenetic
+frenzied
+frenzy
+freon
+frequencies
+frequency
+frequent
+frequented
+frequenter
+frequenters
+frequenting
+frequently
+frequents
+fresco
+frescoes
+fresh
+freshen
+freshened
+freshener
+fresheners
+freshening
+freshens
+fresher
+freshest
+freshly
+freshman
+freshmen
+freshness
+freshwater
+Fresnel
+Fresno
+fret
+fretful
+fretfully
+fretfulness
+Freud
+Freudian
+Freudianism
+Freudianisms
+Freudians
+Frey
+Freya
+friar
+friars
+fricative
+fricatives
+Frick
+friction
+frictionless
+frictions
+Friday
+Fridays
+fried
+Friedman
+Friedrich
+friend
+friendless
+friendlier
+friendliest
+friendliness
+friendly
+friends
+friendship
+friendships
+fries
+Friesland
+frieze
+friezes
+frigate
+frigates
+Frigga
+fright
+frighten
+frightened
+frightening
+frighteningly
+frightens
+frightful
+frightfully
+frightfulness
+frigid
+Frigidaire
+frill
+frills
+fringe
+fringed
+Frisbee
+Frisia
+Frisian
+frisk
+frisked
+frisking
+frisks
+frisky
+Frito
+fritter
+Fritz
+frivolity
+frivolous
+frivolously
+fro
+frock
+frocks
+frog
+frogs
+frolic
+frolics
+from
+front
+frontage
+frontal
+fronted
+frontier
+frontiers
+frontiersman
+frontiersmen
+fronting
+fronts
+frost
+Frostbelt
+frostbite
+frostbitten
+frosted
+frosting
+frosts
+frosty
+froth
+frothing
+frothy
+frown
+frowned
+frowning
+frowns
+froze
+frozen
+frozenly
+Fruehauf
+frugal
+frugally
+fruit
+fruitful
+fruitfully
+fruitfulness
+fruition
+fruitless
+fruitlessly
+fruits
+frustrate
+frustrated
+frustrates
+frustrating
+frustration
+frustrations
+fry
+Frye
+Fuchs
+Fuchsia
+fudge
+fuel
+fueled
+fueling
+fuels
+fugitive
+fugitives
+fugue
+Fuji
+Fujitsu
+Fulbright
+Fulbrights
+fulcrum
+fulfill
+fulfilled
+fulfilling
+fulfillment
+fulfillments
+fulfills
+full
+fuller
+Fullerton
+fullest
+fullness
+fully
+fulminate
+Fulton
+fumble
+fumbled
+fumbling
+fume
+fumed
+fumes
+fuming
+fun
+function
+functional
+functionalities
+functionality
+functionally
+functionals
+functionary
+functioned
+functioning
+functions
+functor
+functors
+fund
+fundamental
+fundamentally
+fundamentals
+funded
+funder
+funders
+funding
+funds
+funeral
+funerals
+funereal
+fungal
+fungi
+fungible
+fungicide
+fungus
+funk
+funnel
+funneled
+funneling
+funnels
+funnier
+funniest
+funnily
+funniness
+funny
+fur
+furies
+furious
+furiouser
+furiously
+furlong
+furlough
+Furman
+furnace
+furnaces
+furnish
+furnished
+furnishes
+furnishing
+furnishings
+furniture
+furrier
+furrow
+furrowed
+furrows
+furry
+furs
+further
+furthered
+furthering
+furthermore
+furthermost
+furthers
+furthest
+furtive
+furtively
+furtiveness
+fury
+fuse
+fused
+fuses
+fusing
+fusion
+fuss
+fussing
+fussy
+futile
+futility
+future
+futures
+futuristic
+fuzz
+fuzzier
+fuzziness
+fuzzy
+gab
+gabardine
+gabbing
+Gaberones
+gable
+gabled
+gabler
+gables
+Gabon
+Gaborone
+Gabriel
+Gabrielle
+gad
+gadfly
+gadget
+gadgetry
+gadgets
+Gaelic
+Gaelicization
+Gaelicizations
+Gaelicize
+Gaelicizes
+gag
+gagged
+gagging
+gaging
+gags
+gaieties
+gaiety
+Gail
+gaily
+gain
+gained
+gainer
+gainers
+Gaines
+Gainesville
+gainful
+gaining
+gains
+gait
+gaited
+gaiter
+gaiters
+Gaithersburg
+galactic
+Galahad
+Galapagos
+Galatea
+Galatean
+Galateans
+Galatia
+Galatians
+galaxies
+galaxy
+Galbreath
+gale
+Galen
+Galilean
+Galilee
+Galileo
+gall
+Gallagher
+gallant
+gallantly
+gallantry
+gallants
+galled
+galleried
+galleries
+gallery
+galley
+galleys
+galling
+gallon
+gallons
+gallop
+galloped
+galloper
+galloping
+gallops
+Galloway
+gallows
+galls
+gallstone
+Gallup
+Galois
+Galt
+Galveston
+Galvin
+Galway
+Gambia
+gambit
+gamble
+gambled
+gambler
+gamblers
+gambles
+gambling
+gambol
+game
+gamed
+gamely
+gameness
+games
+gaming
+gamma
+gander
+Gandhi
+Gandhian
+gang
+Ganges
+gangland
+gangling
+gangplank
+gangrene
+gangs
+gangster
+gangsters
+Gannett
+gantry
+Ganymede
+gap
+gape
+gaped
+gapes
+gaping
+gaps
+garage
+garaged
+garages
+garb
+garbage
+garbages
+garbed
+garble
+garbled
+Garcia
+garden
+gardened
+gardener
+gardeners
+gardening
+gardens
+Gardner
+Garfield
+Garfunkel
+gargantuan
+gargle
+gargled
+gargles
+gargling
+Garibaldi
+garland
+garlanded
+garlic
+garment
+garments
+garner
+garnered
+Garnett
+garnish
+Garrett
+garrison
+garrisoned
+Garrisonian
+Garry
+garter
+garters
+Garth
+Garvey
+Gary
+gas
+Gascony
+gaseous
+gaseously
+gases
+gash
+gashes
+gasket
+gaslight
+gasoline
+gasp
+gasped
+Gaspee
+gasping
+gasps
+gassed
+gasser
+Gasset
+gassing
+gassings
+gassy
+Gaston
+gastric
+gastrointestinal
+gastronome
+gastronomy
+gate
+gated
+Gates
+gateway
+gateways
+gather
+gathered
+gatherer
+gatherers
+gathering
+gatherings
+gathers
+gating
+Gatlinburg
+gator
+Gatsby
+gauche
+gaudiness
+gaudy
+gauge
+gauged
+gauges
+Gauguin
+Gaul
+Gaulle
+Gauls
+gaunt
+Gauntley
+gauntness
+Gaussian
+Gautama
+gauze
+gave
+gavel
+Gavin
+gawk
+gawky
+gay
+gayer
+gayest
+gayety
+Gaylor
+Gaylord
+gayly
+gayness
+Gaynor
+gaze
+gazed
+gazelle
+gazer
+gazers
+gazes
+gazette
+gazing
+gear
+geared
+gearing
+gears
+Geary
+gecko
+geese
+Gehrig
+Geiger
+Geigy
+geisha
+gel
+gelatin
+gelatine
+gelatinous
+geld
+gelled
+gelling
+gels
+gem
+Gemini
+Geminid
+Gemma
+gems
+gender
+genders
+gene
+genealogy
+general
+generalist
+generalists
+generalities
+generality
+generalization
+generalizations
+generalize
+generalized
+generalizer
+generalizers
+generalizes
+generalizing
+generally
+generals
+generate
+generated
+generates
+generating
+generation
+generations
+generative
+generator
+generators
+generic
+generically
+generosities
+generosity
+generous
+generously
+generousness
+genes
+Genesco
+genesis
+genetic
+genetically
+Geneva
+Genevieve
+genial
+genially
+genie
+genius
+geniuses
+Genoa
+genre
+genres
+gent
+genteel
+gentile
+gentle
+gentleman
+gentlemanly
+gentlemen
+gentleness
+gentler
+gentlest
+gentlewoman
+gently
+gentry
+genuine
+genuinely
+genuineness
+genus
+geocentric
+geodesic
+geodesy
+geodetic
+Geoff
+Geoffrey
+geographer
+geographic
+geographical
+geographically
+geography
+geological
+geologist
+geologists
+geology
+geometric
+geometrical
+geometrically
+geometrician
+geometries
+geometry
+geophysical
+geophysics
+George
+Georges
+Georgetown
+Georgia
+Georgian
+Georgians
+geosynchronous
+Gerald
+Geraldine
+geranium
+Gerard
+Gerber
+gerbil
+Gerhard
+Gerhardt
+geriatric
+germ
+German
+germane
+Germania
+Germanic
+Germans
+Germantown
+Germany
+germicide
+germinal
+germinate
+germinated
+germinates
+germinating
+germination
+germs
+Gerome
+Gerry
+Gershwin
+Gershwins
+Gertrude
+gerund
+Gestapo
+gesture
+gestured
+gestures
+gesturing
+get
+getaway
+gets
+getter
+getters
+getting
+Getty
+Gettysburg
+geyser
+Ghana
+Ghanian
+ghastly
+Ghent
+ghetto
+ghost
+ghosted
+ghostly
+ghosts
+Giacomo
+giant
+giants
+gibberish
+Gibbons
+Gibbs
+Gibby
+Gibraltar
+Gibson
+giddiness
+Giddings
+giddy
+Gideon
+Gifford
+gift
+gifted
+gifts
+gig
+gigabit
+gigabits
+gigabyte
+gigabytes
+gigacycle
+gigahertz
+gigantic
+gigavolt
+gigawatt
+giggle
+giggled
+giggles
+giggling
+Gil
+Gilbertson
+Gilchrist
+gild
+gilded
+gilding
+gilds
+Gilead
+Giles
+Gilkson
+gill
+Gillespie
+Gillette
+Gilligan
+gills
+Gilmore
+gilt
+Gimbel
+gimmick
+gimmicks
+gin
+Gina
+ginger
+gingerbread
+gingerly
+gingham
+ginghams
+Ginn
+Gino
+gins
+Ginsberg
+Ginsburg
+Gioconda
+Giorgio
+Giovanni
+Gipsies
+Gipsy
+giraffe
+giraffes
+gird
+girder
+girders
+girdle
+girl
+girlfriend
+girlie
+girlish
+girls
+girt
+girth
+gist
+Giuliano
+Giuseppe
+give
+giveaway
+given
+giver
+givers
+gives
+giving
+glacial
+glacier
+glaciers
+glad
+gladden
+gladder
+gladdest
+glade
+gladiator
+gladly
+gladness
+Gladstone
+Gladys
+glamor
+glamorous
+glamour
+glance
+glanced
+glances
+glancing
+gland
+glands
+glandular
+glare
+glared
+glares
+glaring
+glaringly
+Glasgow
+glass
+glassed
+glasses
+glassy
+Glaswegian
+glaucoma
+glaze
+glazed
+glazer
+glazes
+glazing
+gleam
+gleamed
+gleaming
+gleams
+glean
+gleaned
+gleaner
+gleaning
+gleanings
+gleans
+Gleason
+glee
+gleeful
+gleefully
+glees
+glen
+Glenda
+Glendale
+Glenn
+glens
+Glidden
+glide
+glided
+glider
+gliders
+glides
+glimmer
+glimmered
+glimmering
+glimmers
+glimpse
+glimpsed
+glimpses
+glint
+glinted
+glinting
+glints
+glisten
+glistened
+glistening
+glistens
+glitch
+glitter
+glittered
+glittering
+glitters
+gloat
+global
+globally
+globe
+globes
+globular
+globularity
+gloom
+gloomily
+gloomy
+Gloria
+Gloriana
+glories
+glorification
+glorified
+glorifies
+glorify
+glorious
+gloriously
+glory
+glorying
+gloss
+glossaries
+glossary
+glossed
+glosses
+glossing
+glossy
+glottal
+Gloucester
+glove
+gloved
+glover
+glovers
+gloves
+gloving
+glow
+glowed
+glower
+glowers
+glowing
+glowingly
+glows
+glue
+glued
+glues
+gluing
+glut
+glutton
+Glynn
+gnash
+gnat
+gnats
+gnaw
+gnawed
+gnawing
+gnaws
+gnome
+gnomon
+gnu
+go
+Goa
+goad
+goaded
+goal
+goals
+goat
+goatee
+goatees
+goats
+gobble
+gobbled
+gobbler
+gobblers
+gobbles
+Gobi
+goblet
+goblets
+goblin
+goblins
+god
+Goddard
+goddess
+goddesses
+godfather
+Godfrey
+godhead
+godlike
+godly
+godmother
+godmothers
+Godot
+godparent
+gods
+godsend
+godson
+Godwin
+Godzilla
+goes
+Goethe
+Goff
+goggles
+Gogh
+going
+goings
+gold
+Golda
+Goldberg
+golden
+goldenly
+goldenness
+goldenrod
+Goldfield
+goldfish
+golding
+Goldman
+golds
+goldsmith
+Goldstein
+Goldstine
+Goldwater
+Goleta
+golf
+golfer
+golfers
+golfing
+Goliath
+golly
+Gomez
+gondola
+gone
+goner
+gong
+gongs
+Gonzales
+Gonzalez
+good
+goodby
+goodbye
+Goode
+goodies
+goodly
+Goodman
+goodness
+Goodrich
+goods
+goodwill
+Goodwin
+goody
+Goodyear
+goof
+goofed
+goofs
+goofy
+goose
+gopher
+Gordian
+Gordon
+gore
+Goren
+gorge
+gorgeous
+gorgeously
+gorges
+gorging
+Gorham
+gorilla
+gorillas
+Gorky
+Gorton
+gory
+gosh
+gospel
+gospelers
+gospels
+gossip
+gossiped
+gossiping
+gossips
+got
+Gotham
+Gothic
+Gothically
+Gothicism
+Gothicize
+Gothicized
+Gothicizer
+Gothicizers
+Gothicizes
+Gothicizing
+GOTO
+GOTOs
+gotten
+Gottfried
+Goucher
+Gouda
+gouge
+gouged
+gouges
+gouging
+Gould
+gourd
+gourmet
+gout
+govern
+governance
+governed
+governess
+governing
+government
+governmental
+governmentally
+governments
+governor
+governors
+governs
+gown
+gowned
+gowns
+grab
+grabbed
+grabber
+grabbers
+grabbing
+grabbings
+grabs
+grace
+graced
+graceful
+gracefully
+gracefulness
+graces
+Gracie
+gracing
+gracious
+graciously
+graciousness
+grad
+gradation
+gradations
+grade
+graded
+grader
+graders
+grades
+gradient
+gradients
+grading
+gradings
+gradual
+gradually
+graduate
+graduated
+graduates
+graduating
+graduation
+graduations
+Grady
+Graff
+graft
+grafted
+grafter
+grafting
+Grafton
+grafts
+graham
+grahams
+grail
+grain
+grained
+graining
+grains
+gram
+grammar
+grammarian
+grammars
+grammatic
+grammatical
+grammatically
+grams
+granaries
+granary
+grand
+grandchild
+grandchildren
+granddaughter
+grander
+grandest
+grandeur
+grandfather
+grandfathers
+grandiose
+grandly
+grandma
+grandmother
+grandmothers
+grandnephew
+grandness
+grandniece
+grandpa
+grandparent
+grands
+grandson
+grandsons
+grandstand
+grange
+granite
+granny
+granola
+grant
+granted
+grantee
+granter
+granting
+grantor
+grants
+granularity
+granulate
+granulated
+granulates
+granulating
+Granville
+grape
+grapefruit
+grapes
+grapevine
+graph
+graphed
+graphic
+graphical
+graphically
+graphics
+graphing
+graphite
+graphs
+grapple
+grappled
+grappling
+grasp
+graspable
+grasped
+grasping
+graspingly
+grasps
+grass
+grassed
+grassers
+grasses
+grassier
+grassiest
+grassland
+grassy
+grate
+grated
+grateful
+gratefully
+gratefulness
+grater
+grates
+gratification
+gratified
+gratify
+gratifying
+grating
+gratings
+gratis
+gratitude
+gratuities
+gratuitous
+gratuitously
+gratuitousness
+gratuity
+grave
+gravel
+gravelly
+gravely
+graven
+graveness
+graver
+Graves
+gravest
+gravestone
+graveyard
+gravitate
+gravitation
+gravitational
+gravity
+gravy
+gray
+grayed
+grayer
+grayest
+graying
+grayness
+Grayson
+graze
+grazed
+grazer
+grazing
+grease
+greased
+greases
+greasy
+great
+greater
+greatest
+greatly
+greatness
+Grecian
+Grecianize
+Grecianizes
+Greece
+greed
+greedily
+greediness
+greedy
+Greek
+Greekize
+Greekizes
+Greeks
+green
+Greenbelt
+Greenberg
+Greenblatt
+Greenbriar
+Greene
+greener
+greenery
+greenest
+Greenfeld
+Greenfield
+greengrocer
+greenhouse
+greenhouses
+greening
+greenish
+Greenland
+greenly
+greenness
+greens
+Greensboro
+Greensville
+Greentree
+Greenville
+greenware
+Greenwich
+Greer
+greet
+greeted
+greeter
+greeting
+greetings
+greets
+Greg
+gregarious
+Gregg
+Gregorian
+Gregory
+grenade
+grenades
+Grendel
+Grenier
+Grenoble
+Grenville
+Gresham
+Greta
+Gretchen
+grew
+grey
+greyest
+greyhound
+greying
+grid
+griddle
+gridiron
+grids
+grief
+griefs
+grievance
+grievances
+grieve
+grieved
+griever
+grievers
+grieves
+grieving
+grievingly
+grievous
+grievously
+Griffith
+grill
+grilled
+grilling
+grills
+grim
+grimace
+Grimaldi
+grime
+grimed
+Grimes
+grimly
+Grimm
+grimness
+grin
+grind
+grinder
+grinders
+grinding
+grindings
+grinds
+grindstone
+grindstones
+grinning
+grins
+grip
+gripe
+griped
+gripes
+griping
+gripped
+gripping
+grippingly
+grips
+Gris
+grisly
+grist
+Griswold
+grit
+grits
+gritty
+grizzly
+groan
+groaned
+groaner
+groaners
+groaning
+groans
+grocer
+groceries
+grocers
+grocery
+groggy
+groin
+groom
+groomed
+grooming
+grooms
+Groot
+groove
+grooved
+grooves
+grope
+groped
+gropes
+groping
+gross
+grossed
+grosser
+grosses
+grossest
+Grosset
+grossing
+grossly
+Grossman
+grossness
+Grosvenor
+grotesque
+grotesquely
+grotesques
+Groton
+grotto
+grottos
+ground
+grounded
+grounder
+grounders
+grounding
+grounds
+groundwork
+group
+grouped
+grouping
+groupings
+groups
+grouse
+grove
+grovel
+groveled
+groveling
+grovels
+Grover
+grovers
+groves
+grow
+grower
+growers
+growing
+growl
+growled
+growling
+growls
+grown
+grownup
+grownups
+grows
+growth
+growths
+grub
+grubby
+grubs
+grudge
+grudges
+grudgingly
+gruesome
+gruff
+gruffly
+grumble
+grumbled
+grumbles
+grumbling
+Grumman
+grunt
+grunted
+grunting
+grunts
+Grusky
+Gruyere
+Guadalupe
+Guam
+guano
+guarantee
+guaranteed
+guaranteeing
+guaranteer
+guaranteers
+guarantees
+guaranty
+guard
+guarded
+guardedly
+guardhouse
+Guardia
+guardian
+guardians
+guardianship
+guarding
+guards
+Guatemala
+Guatemalan
+gubernatorial
+Guelph
+Guenther
+guerrilla
+guerrillas
+guess
+guessed
+guesses
+guessing
+guesswork
+guest
+guests
+Guggenheim
+Guhleman
+Guiana
+guidance
+guide
+guidebook
+guidebooks
+guided
+guideline
+guidelines
+guides
+guiding
+guild
+guilder
+guilders
+guile
+Guilford
+guilt
+guiltier
+guiltiest
+guiltily
+guiltiness
+guiltless
+guiltlessly
+guilty
+guinea
+Guinevere
+guise
+guises
+guitar
+guitars
+Gujarat
+Gujarati
+gulch
+gulches
+gulf
+gulfs
+gull
+Gullah
+gulled
+gullies
+gulling
+gulls
+gully
+gulp
+gulped
+gulps
+gum
+gumming
+gumption
+gums
+gun
+Gunderson
+gunfire
+gunman
+gunmen
+Gunnar
+gunned
+gunner
+gunners
+gunnery
+gunning
+gunny
+gunplay
+gunpowder
+guns
+gunshot
+Gunther
+gurgle
+Gurkha
+guru
+Gus
+gush
+gushed
+gusher
+gushes
+gushing
+gust
+Gustafson
+Gustav
+Gustave
+Gustavus
+gusto
+gusts
+gusty
+gut
+Gutenberg
+Guthrie
+guts
+gutsy
+gutter
+guttered
+gutters
+gutting
+guttural
+guy
+Guyana
+guyed
+guyer
+guyers
+guying
+guys
+Gwen
+Gwyn
+gymnasium
+gymnasiums
+gymnast
+gymnastic
+gymnastics
+gymnasts
+gypsies
+gypsy
+gyro
+gyrocompass
+gyroscope
+gyroscopes
+ha
+Haag
+Haas
+habeas
+Haberman
+Habib
+habit
+habitat
+habitation
+habitations
+habitats
+habits
+habitual
+habitually
+habitualness
+hack
+hacked
+hacker
+hackers
+Hackett
+hacking
+hackneyed
+hacks
+hacksaw
+had
+Hadamard
+Haddad
+haddock
+Hades
+Hadley
+Hadrian
+Hafiz
+hag
+Hagen
+Hager
+haggard
+haggardly
+haggle
+Hagstrom
+Hague
+Hahn
+Haifa
+hail
+hailed
+hailing
+hails
+hailstone
+hailstorm
+Haines
+hair
+haircut
+haircuts
+hairier
+hairiness
+hairless
+hairpin
+hairs
+hairy
+Haiti
+Haitian
+Hal
+halcyon
+hale
+haler
+Haley
+half
+halfhearted
+halfway
+Halifax
+hall
+Halley
+Hallinan
+hallmark
+hallmarks
+hallow
+hallowed
+Halloween
+halls
+hallucinate
+hallway
+hallways
+halogen
+Halpern
+Halsey
+Halstead
+halt
+halted
+halter
+halters
+halting
+haltingly
+halts
+halve
+halved
+halvers
+Halverson
+halves
+halving
+ham
+Hamal
+Hamburg
+hamburger
+hamburgers
+Hamey
+Hamilton
+Hamiltonian
+Hamiltonians
+hamlet
+hamlets
+Hamlin
+hammer
+hammered
+hammering
+hammers
+Hammett
+hamming
+hammock
+hammocks
+Hammond
+hamper
+hampered
+hampers
+Hampshire
+Hampton
+hams
+hamster
+Han
+Hancock
+hand
+handbag
+handbags
+handbook
+handbooks
+handcuff
+handcuffed
+handcuffing
+handcuffs
+handed
+Handel
+handful
+handfuls
+handgun
+handicap
+handicapped
+handicaps
+handier
+handiest
+handily
+handiness
+handing
+handiwork
+handkerchief
+handkerchiefs
+handle
+handled
+handler
+handlers
+handles
+handling
+handmaid
+handout
+hands
+handshake
+handshakes
+handshaking
+handsome
+handsomely
+handsomeness
+handsomer
+handsomest
+handwriting
+handwritten
+handy
+Haney
+Hanford
+hang
+hangar
+hangars
+hanged
+hanger
+hangers
+hanging
+hangman
+hangmen
+hangout
+hangover
+hangovers
+hangs
+Hankel
+Hanley
+Hanlon
+Hanna
+Hannah
+Hannibal
+Hanoi
+Hanover
+Hanoverian
+Hanoverianize
+Hanoverianizes
+Hanoverize
+Hanoverizes
+Hans
+Hansel
+Hansen
+Hanson
+Hanukkah
+hap
+Hapgood
+haphazard
+haphazardly
+haphazardness
+hapless
+haplessly
+haplessness
+haply
+happen
+happened
+happening
+happenings
+happens
+happier
+happiest
+happily
+happiness
+happy
+Hapsburg
+harass
+harassed
+harasses
+harassing
+harassment
+Harbin
+harbinger
+harbor
+harbored
+harboring
+harbors
+Harcourt
+hard
+hardboiled
+hardcopy
+harden
+harder
+hardest
+hardhat
+Hardin
+hardiness
+Harding
+hardly
+hardness
+hardscrabble
+hardship
+hardships
+hardware
+hardwired
+hardworking
+hardy
+hare
+harelip
+harem
+hares
+hark
+harken
+Harlan
+Harlem
+Harley
+harlot
+harlots
+harm
+harmed
+harmful
+harmfully
+harmfulness
+harming
+harmless
+harmlessly
+harmlessness
+Harmon
+harmonic
+harmonics
+harmonies
+harmonious
+harmoniously
+harmoniousness
+Harmonist
+Harmonistic
+Harmonistically
+harmonize
+harmony
+harms
+harness
+harnessed
+harnessing
+Harold
+harp
+harper
+harpers
+harping
+Harpy
+harried
+harrier
+Harriet
+Harriman
+Harrington
+Harris
+Harrisburg
+Harrison
+Harrisonburg
+harrow
+harrowed
+harrowing
+harrows
+harry
+harsh
+harsher
+harshly
+harshness
+hart
+Hartford
+Hartley
+Hartman
+Harvard
+Harvardize
+Harvardizes
+harvest
+harvested
+harvester
+harvesting
+harvests
+Harvey
+Harveyize
+Harveyizes
+Harveys
+has
+hash
+hashed
+hasher
+hashes
+hashing
+hashish
+Haskell
+Haskins
+hassle
+haste
+hasten
+hastened
+hastening
+hastens
+hastily
+hastiness
+Hastings
+hasty
+hat
+hatch
+hatched
+hatchet
+hatchets
+hatching
+Hatchure
+hate
+hated
+hateful
+hatefully
+hatefulness
+hater
+hates
+Hatfield
+Hathaway
+hating
+hatred
+hats
+Hatteras
+Hattie
+Hattiesburg
+Hattize
+Hattizes
+Haugen
+haughtily
+haughtiness
+haughty
+haul
+hauled
+hauler
+hauling
+hauls
+haunch
+haunches
+haunt
+haunted
+haunter
+haunting
+haunts
+Hausa
+Hausdorff
+Hauser
+Havana
+have
+haven
+havens
+haves
+Havilland
+having
+havoc
+Hawaii
+Hawaiian
+hawk
+hawked
+hawker
+hawkers
+Hawkins
+hawks
+Hawley
+Hawthorne
+hay
+Hayden
+Haydn
+Hayes
+haying
+Haynes
+Hays
+haystack
+Hayward
+Haywood
+hazard
+hazardous
+hazards
+haze
+hazel
+hazes
+haziness
+hazy
+he
+head
+headache
+headaches
+headed
+header
+headers
+headgear
+heading
+headings
+headland
+headlands
+headlight
+headline
+headlined
+headlines
+headlining
+headlong
+headmaster
+headphone
+headquarters
+headroom
+heads
+headset
+headway
+heal
+healed
+healer
+healers
+Healey
+healing
+heals
+health
+healthful
+healthfully
+healthfulness
+healthier
+healthiest
+healthily
+healthiness
+healthy
+Healy
+heap
+heaped
+heaping
+heaps
+hear
+heard
+hearer
+hearers
+hearing
+hearings
+hearken
+hears
+hearsay
+Hearst
+heart
+heartbeat
+heartbreak
+hearten
+heartiest
+heartily
+heartiness
+heartless
+hearts
+Heartwood
+hearty
+heat
+heatable
+heated
+heatedly
+heater
+heaters
+heath
+heathen
+heather
+Heathkit
+Heathman
+heating
+heats
+heave
+heaved
+heaven
+heavenly
+heavens
+heaver
+heavers
+heaves
+heavier
+heaviest
+heavily
+heaviness
+heaving
+heavy
+heavyweight
+Hebe
+Hebraic
+Hebraicize
+Hebraicizes
+Hebrew
+Hebrews
+Hebrides
+Hecate
+heck
+heckle
+Heckman
+hectic
+Hecuba
+Hedda
+hedge
+hedged
+hedgehog
+hedgehogs
+hedges
+hedonism
+hedonist
+heed
+heeded
+heedless
+heedlessly
+heedlessness
+heeds
+heel
+heeled
+heelers
+heeling
+heels
+hefty
+Hegel
+Hegelian
+Hegelianize
+Hegelianizes
+hegemony
+Heidegger
+Heidelberg
+heifer
+height
+heighten
+heightened
+heightening
+heightens
+heights
+Heine
+Heinlein
+heinous
+heinously
+Heinrich
+Heinz
+Heinze
+heir
+heiress
+heiresses
+heirs
+Heisenberg
+Heiser
+held
+Helen
+Helena
+Helene
+Helga
+helical
+helicopter
+heliocentric
+Heliopolis
+helium
+helix
+hell
+Hellenic
+Hellenization
+Hellenizations
+Hellenize
+Hellenized
+Hellenizes
+Hellenizing
+Hellespont
+hellfire
+hellish
+Hellman
+hello
+hells
+helm
+helmet
+helmets
+Helmholtz
+helmsman
+Helmut
+help
+helped
+helper
+helpers
+helpful
+helpfully
+helpfulness
+helping
+helpless
+helplessly
+helplessness
+helpmate
+helps
+Helsinki
+Helvetica
+hem
+Hemingway
+hemisphere
+hemispheres
+hemlock
+hemlocks
+hemoglobin
+hemorrhoid
+hemostat
+hemostats
+hemp
+hempen
+Hempstead
+hems
+hen
+hence
+henceforth
+henchman
+henchmen
+Henderson
+Hendrick
+Hendricks
+Hendrickson
+Hendrix
+Henley
+Hennessey
+Hennessy
+Henning
+henpeck
+Henri
+Henrietta
+hens
+hepatitis
+Hepburn
+her
+Hera
+Heraclitus
+herald
+heralded
+heralding
+heralds
+herb
+Herbert
+herbivore
+herbivorous
+herbs
+Herculean
+Hercules
+herd
+herded
+herder
+herding
+herds
+here
+hereabout
+hereabouts
+hereafter
+hereby
+hereditary
+heredity
+Hereford
+herein
+hereinafter
+hereof
+heres
+heresy
+heretic
+heretics
+hereto
+heretofore
+hereunder
+herewith
+heritage
+heritages
+Herkimer
+Herman
+Hermann
+Hermes
+hermetic
+hermetically
+hermit
+Hermite
+hermitian
+hermits
+Hermosa
+Hernandez
+hero
+Herodotus
+heroes
+heroic
+heroically
+heroics
+heroin
+heroine
+heroines
+heroism
+heron
+herons
+herpes
+Herr
+herring
+herrings
+Herrington
+hers
+Herschel
+herself
+Hersey
+Hershel
+Hershey
+hertz
+Hertzog
+hesitant
+hesitantly
+hesitate
+hesitated
+hesitates
+hesitating
+hesitatingly
+hesitation
+hesitations
+Hesperus
+Hess
+Hesse
+Hessian
+Hessians
+Hester
+heterogeneity
+heterogeneous
+heterogeneously
+heterogeneousness
+heterogenous
+heterosexual
+Hetman
+Hettie
+Hetty
+Heublein
+heuristic
+heuristically
+heuristics
+Heusen
+Heuser
+hew
+hewed
+hewer
+Hewett
+Hewitt
+Hewlett
+hews
+hex
+hexadecimal
+hexagon
+hexagonal
+hexagonally
+hexagons
+hey
+Heywood
+hi
+Hiatt
+Hiawatha
+Hibbard
+hibernate
+Hibernia
+hick
+Hickey
+Hickeys
+Hickman
+Hickok
+hickory
+Hicks
+hid
+hidden
+hide
+hideous
+hideously
+hideousness
+hideout
+hideouts
+hides
+hiding
+hierarchal
+hierarchic
+hierarchical
+hierarchically
+hierarchies
+hierarchy
+Hieronymus
+Higgins
+high
+higher
+highest
+Highfield
+highland
+highlander
+highlands
+highlight
+highlighted
+highlighting
+highlights
+highly
+highness
+highnesses
+highway
+highwayman
+highwaymen
+highways
+hijack
+hijacked
+hike
+hiked
+hiker
+hikes
+hiking
+hilarious
+hilariously
+hilarity
+Hilbert
+Hildebrand
+hill
+Hillary
+hillbilly
+Hillcrest
+Hillel
+hillock
+hills
+Hillsboro
+Hillsdale
+hillside
+hillsides
+hilltop
+hilltops
+hilt
+Hilton
+hilts
+him
+Himalaya
+Himalayas
+Himmler
+himself
+hind
+hinder
+hindered
+hindering
+hinders
+Hindi
+hindrance
+hindrances
+hindsight
+Hindu
+Hinduism
+Hindus
+Hindustan
+Hines
+hinge
+hinged
+hinges
+Hinkle
+Hinman
+Hinsdale
+hint
+hinted
+hinting
+hints
+hip
+hippo
+Hippocrates
+Hippocratic
+hippopotamus
+hips
+Hiram
+hire
+hired
+hirer
+hirers
+hires
+Hirey
+hiring
+hirings
+Hiroshi
+Hiroshima
+Hirsch
+his
+Hispanic
+Hispanicize
+Hispanicizes
+Hispanics
+hiss
+hissed
+hisses
+hissing
+histogram
+histograms
+historian
+historians
+historic
+historical
+historically
+histories
+history
+hit
+Hitachi
+hitch
+Hitchcock
+hitched
+hitchhike
+hitchhiked
+hitchhiker
+hitchhikers
+hitchhikes
+hitchhiking
+hitching
+hither
+hitherto
+Hitler
+Hitlerian
+Hitlerism
+Hitlerite
+Hitlerites
+hits
+hitter
+hitters
+hitting
+hive
+Hoagland
+hoar
+hoard
+hoarder
+hoarding
+hoariness
+hoarse
+hoarsely
+hoarseness
+hoary
+Hobart
+Hobbes
+hobbies
+hobble
+hobbled
+hobbles
+hobbling
+Hobbs
+hobby
+hobbyhorse
+hobbyist
+hobbyists
+Hobday
+Hoboken
+hockey
+hodgepodge
+Hodges
+Hodgkin
+hoe
+hoes
+Hoff
+Hoffman
+hog
+hogging
+hogs
+hoist
+hoisted
+hoisting
+hoists
+Hokan
+Holbrook
+Holcomb
+hold
+holden
+holder
+holders
+holding
+holdings
+holds
+hole
+holed
+holes
+holiday
+holidays
+holies
+holiness
+holistic
+Holland
+Hollandaise
+Hollander
+Hollerith
+Hollingsworth
+Hollister
+hollow
+Holloway
+hollowed
+hollowing
+hollowly
+hollowness
+hollows
+holly
+Hollywood
+Hollywoodize
+Hollywoodizes
+Holm
+Holman
+Holmdel
+Holmes
+holocaust
+Holocene
+hologram
+holograms
+Holst
+Holstein
+holy
+Holyoke
+Holzman
+Hom
+homage
+home
+home-brew
+homed
+homeless
+homely
+homemade
+homemaker
+homemakers
+homeomorphic
+homeomorphism
+homeomorphisms
+homeopath
+homeowner
+homer
+Homeric
+homers
+homes
+homesick
+homesickness
+homespun
+homestead
+homesteader
+homesteaders
+homesteads
+homeward
+homewards
+homework
+homicidal
+homicide
+homing
+homo
+homogeneities
+homogeneity
+homogeneous
+homogeneously
+homogeneousness
+homomorphic
+homomorphism
+homomorphisms
+homosexual
+Honda
+Hondo
+Honduras
+hone
+honed
+honer
+hones
+honest
+honestly
+honesty
+honey
+honeybee
+honeycomb
+honeycombed
+honeydew
+honeymoon
+honeymooned
+honeymooner
+honeymooners
+honeymooning
+honeymoons
+honeysuckle
+Honeywell
+honing
+Honolulu
+honor
+honorable
+honorableness
+honorably
+honoraries
+honorarium
+honorary
+honored
+honorer
+honoring
+honors
+Honshu
+hood
+hooded
+hoodlum
+hoods
+hoodwink
+hoodwinked
+hoodwinking
+hoodwinks
+hoof
+hoofs
+hook
+hooked
+hooker
+hookers
+hooking
+hooks
+hookup
+hookups
+hoop
+hooper
+hoops
+Hoosier
+Hoosierize
+Hoosierizes
+hoot
+hooted
+hooter
+hooting
+hoots
+Hoover
+Hooverize
+Hooverizes
+hooves
+hop
+hope
+hoped
+hopeful
+hopefully
+hopefulness
+hopefuls
+hopeless
+hopelessly
+hopelessness
+hopes
+Hopi
+hoping
+Hopkins
+Hopkinsian
+hopper
+hoppers
+hopping
+hops
+Horace
+Horatio
+horde
+hordes
+horizon
+horizons
+horizontal
+horizontally
+hormone
+hormones
+horn
+Hornblower
+horned
+hornet
+hornets
+horns
+horny
+Horowitz
+horrendous
+horrendously
+horrible
+horribleness
+horribly
+horrid
+horridly
+horrified
+horrifies
+horrify
+horrifying
+horror
+horrors
+horse
+horseback
+horseflesh
+horsefly
+horseman
+horseplay
+horsepower
+horses
+horseshoe
+horseshoer
+horticulture
+Horton
+Horus
+hose
+hoses
+hospitable
+hospitably
+hospital
+hospitality
+hospitalize
+hospitalized
+hospitalizes
+hospitalizing
+hospitals
+host
+hostage
+hostages
+hosted
+hostess
+hostesses
+hostile
+hostilely
+hostilities
+hostility
+hosting
+hosts
+hot
+hotel
+hotels
+hotly
+hotness
+Hottentot
+hotter
+hottest
+Houdaille
+Houdini
+Houghton
+hound
+hounded
+hounding
+hounds
+hour
+hourglass
+hourly
+hours
+house
+houseboat
+housebroken
+housed
+houseflies
+housefly
+household
+householder
+householders
+households
+housekeeper
+housekeepers
+housekeeping
+houses
+housetop
+housetops
+housewife
+housewifely
+housewives
+housework
+housing
+Houston
+hovel
+hovels
+hover
+hovered
+hovering
+hovers
+how
+Howard
+Howe
+Howell
+however
+howl
+howled
+howler
+howling
+howls
+Hoyt
+Hrothgar
+hub
+Hubbard
+Hubbell
+Huber
+Hubert
+hubris
+hubs
+Huck
+huddle
+huddled
+huddling
+Hudson
+hue
+hues
+Huey
+Huffman
+hug
+huge
+hugely
+hugeness
+hugging
+Huggins
+Hugh
+Hughes
+Hugo
+huh
+hull
+hulls
+hum
+human
+humane
+humanely
+humaneness
+humanitarian
+humanities
+humanity
+humanly
+humanness
+humans
+humble
+humbled
+humbleness
+humbler
+humblest
+humbling
+humbly
+Humboldt
+humbug
+Hume
+humerus
+humid
+humidification
+humidified
+humidifier
+humidifiers
+humidifies
+humidify
+humidifying
+humidity
+humidly
+humiliate
+humiliated
+humiliates
+humiliating
+humiliation
+humiliations
+humility
+hummed
+Hummel
+humming
+hummingbird
+humor
+humored
+humorer
+humorers
+humoring
+humorous
+humorously
+humorousness
+humors
+hump
+humpback
+humped
+Humphrey
+Humpty
+hums
+Hun
+hunch
+hunched
+hunches
+hundred
+hundredfold
+hundreds
+hundredth
+hung
+Hungarian
+Hungary
+hunger
+hungered
+hungering
+hungers
+hungrier
+hungriest
+hungrily
+hungry
+hunk
+hunks
+Huns
+hunt
+hunted
+Hunter
+hunters
+hunting
+Huntington
+Huntley
+hunts
+huntsman
+Huntsville
+Hurd
+hurdle
+hurl
+hurled
+hurler
+hurlers
+hurling
+Huron
+Hurons
+hurrah
+hurricane
+hurricanes
+hurried
+hurriedly
+hurries
+hurry
+hurrying
+Hurst
+hurt
+hurting
+hurtle
+hurtling
+hurts
+Hurwitz
+husband
+husbandry
+husbands
+hush
+hushed
+hushes
+hushing
+husk
+husked
+husker
+huskiness
+husking
+husks
+husky
+hustle
+hustled
+hustler
+hustles
+hustling
+Huston
+hut
+hutch
+Hutchins
+Hutchinson
+Hutchison
+huts
+Huxley
+Huxtable
+hyacinth
+Hyades
+Hyannis
+hybrid
+Hyde
+hydra
+hydrant
+hydraulic
+hydro
+hydrodynamic
+hydrodynamics
+hydrogen
+hydrogens
+hyena
+hygiene
+Hyman
+hymen
+hymn
+hymns
+hyper
+hyperbola
+hyperbolic
+hypertext
+hyphen
+hyphenate
+hyphens
+hypnosis
+hypnotic
+hypocrisies
+hypocrisy
+hypocrite
+hypocrites
+hypodermic
+hypodermics
+hypotheses
+hypothesis
+hypothesize
+hypothesized
+hypothesizer
+hypothesizes
+hypothesizing
+hypothetical
+hypothetically
+hysteresis
+hysterical
+hysterically
+Ian
+Iberia
+Iberian
+Ibero-
+ibex
+ibid
+ibis
+Ibn
+Ibsen
+Icarus
+ice
+iceberg
+icebergs
+icebox
+iced
+Iceland
+Icelandic
+ices
+icicle
+iciness
+icing
+icings
+icon
+iconoclasm
+iconoclast
+icons
+icosahedra
+icosahedral
+icosahedron
+icy
+Ida
+Idaho
+idea
+ideal
+idealism
+idealistic
+idealization
+idealizations
+idealize
+idealized
+idealizes
+idealizing
+ideally
+ideals
+ideas
+idem
+idempotency
+idempotent
+identical
+identically
+identifiable
+identifiably
+identification
+identifications
+identified
+identifier
+identifiers
+identifies
+identify
+identifying
+identities
+identity
+ideological
+ideologically
+ideology
+idiocy
+idiom
+idiosyncrasies
+idiosyncrasy
+idiosyncratic
+idiot
+idiotic
+idiots
+idle
+idled
+idleness
+idler
+idlers
+idles
+idlest
+idling
+idly
+idol
+idolatry
+idols
+if
+Ifni
+igloo
+ignite
+ignition
+ignoble
+ignominious
+ignoramus
+ignorance
+ignorant
+ignorantly
+ignore
+ignored
+ignores
+ignoring
+Igor
+Ike
+Iliad
+Iliadize
+Iliadizes
+ill
+illegal
+illegalities
+illegality
+illegally
+illegitimate
+illicit
+illicitly
+Illinois
+illiteracy
+illiterate
+illness
+illnesses
+illogical
+illogically
+ills
+illuminate
+illuminated
+illuminates
+illuminating
+illumination
+illuminations
+illusion
+illusions
+illusive
+illusively
+illusory
+illustrate
+illustrated
+illustrates
+illustrating
+illustration
+illustrations
+illustrative
+illustratively
+illustrator
+illustrators
+illustrious
+illustriousness
+illy
+Ilona
+Ilyushin
+image
+Imagen
+imagery
+images
+imaginable
+imaginably
+imaginary
+imagination
+imaginations
+imaginative
+imaginatively
+imagine
+imagined
+imagines
+imaging
+imagining
+imaginings
+imbalance
+imbalances
+imbecile
+imbibe
+Imbrium
+imitate
+imitated
+imitates
+imitating
+imitation
+imitations
+imitative
+immaculate
+immaculately
+immaterial
+immaterially
+immature
+immaturity
+immediacies
+immediacy
+immediate
+immediately
+immemorial
+immense
+immensely
+immerse
+immersed
+immerses
+immersion
+immigrant
+immigrants
+immigrate
+immigrated
+immigrates
+immigrating
+immigration
+imminent
+imminently
+immoderate
+immodest
+immoral
+immortal
+immortality
+immortally
+immovability
+immovable
+immovably
+immune
+immunities
+immunity
+immunization
+immutable
+imp
+impact
+impacted
+impacting
+impaction
+impactor
+impactors
+impacts
+impair
+impaired
+impairing
+impairs
+impale
+impart
+imparted
+impartial
+impartially
+imparts
+impasse
+impassive
+impatience
+impatient
+impatiently
+impeach
+impeachable
+impeached
+impeachment
+impeccable
+impedance
+impedances
+impede
+impeded
+impedes
+impediment
+impediments
+impeding
+impel
+impelled
+impelling
+impend
+impending
+impenetrability
+impenetrable
+impenetrably
+imperative
+imperatively
+imperatives
+imperceivable
+imperceptible
+imperfect
+imperfection
+imperfections
+imperfectly
+imperial
+imperialism
+imperialist
+imperialists
+imperil
+imperiled
+imperious
+imperiously
+impermanence
+impermanent
+impermeable
+impermissible
+impersonal
+impersonally
+impersonate
+impersonated
+impersonates
+impersonating
+impersonation
+impersonations
+impertinent
+impertinently
+impervious
+imperviously
+impetuous
+impetuously
+impetus
+impinge
+impinged
+impinges
+impinging
+impious
+implacable
+implant
+implanted
+implanting
+implants
+implausible
+implement
+implementable
+implementation
+implementations
+implemented
+implementer
+implementing
+implementor
+implementors
+implements
+implicant
+implicants
+implicate
+implicated
+implicates
+implicating
+implication
+implications
+implicit
+implicitly
+implicitness
+implied
+implies
+implore
+implored
+imploring
+imply
+implying
+impolite
+import
+importance
+important
+importantly
+importation
+imported
+importer
+importers
+importing
+imports
+impose
+imposed
+imposes
+imposing
+imposition
+impositions
+impossibilities
+impossibility
+impossible
+impossibly
+impostor
+impostors
+impotence
+impotency
+impotent
+impound
+impoverish
+impoverished
+impoverishment
+impracticable
+impractical
+impracticality
+impractically
+imprecise
+imprecisely
+imprecision
+impregnable
+impregnate
+impress
+impressed
+impresser
+impresses
+impressible
+impressing
+impression
+impressionable
+impressionist
+impressionistic
+impressions
+impressive
+impressively
+impressiveness
+impressment
+imprimatur
+imprint
+imprinted
+imprinting
+imprints
+imprison
+imprisoned
+imprisoning
+imprisonment
+imprisonments
+imprisons
+improbability
+improbable
+impromptu
+improper
+improperly
+impropriety
+improve
+improved
+improvement
+improvements
+improves
+improving
+improvisation
+improvisational
+improvisations
+improvise
+improvised
+improviser
+improvisers
+improvises
+improvising
+imprudent
+imps
+impudent
+impudently
+impugn
+impulse
+impulses
+impulsion
+impulsive
+impunity
+impure
+impurities
+impurity
+impute
+imputed
+in
+inability
+inaccessible
+inaccuracies
+inaccuracy
+inaccurate
+inaction
+inactivate
+inactive
+inactivity
+inadequacies
+inadequacy
+inadequate
+inadequately
+inadequateness
+inadmissibility
+inadmissible
+inadvertent
+inadvertently
+inadvisable
+inalienable
+inalterable
+inane
+inanimate
+inanimately
+Inanna
+inapplicable
+inapproachable
+inappropriate
+inappropriateness
+inasmuch
+inattention
+inaudible
+inaugural
+inaugurate
+inaugurated
+inaugurating
+inauguration
+inauspicious
+inboard
+inbound
+inbreed
+Inca
+incalculable
+incandescent
+incantation
+incapable
+incapacitate
+incapacitating
+incarcerate
+incarnation
+incarnations
+Incas
+incendiaries
+incendiary
+incense
+incensed
+incenses
+incentive
+incentives
+inception
+incessant
+incessantly
+incest
+incestuous
+inch
+inched
+inches
+inching
+incidence
+incident
+incidental
+incidentally
+incidentals
+incidents
+incinerate
+incipient
+incisive
+incite
+incited
+incitement
+incites
+inciting
+inclement
+inclination
+inclinations
+incline
+inclined
+inclines
+inclining
+inclose
+inclosed
+incloses
+inclosing
+include
+included
+includes
+including
+inclusion
+inclusions
+inclusive
+inclusively
+inclusiveness
+incoherence
+incoherent
+incoherently
+income
+incomes
+incoming
+incommensurable
+incommensurate
+incommunicable
+incomparable
+incomparably
+incompatibilities
+incompatibility
+incompatible
+incompatibly
+incompetence
+incompetent
+incompetents
+incomplete
+incompletely
+incompleteness
+incomprehensibility
+incomprehensible
+incomprehensibly
+incomprehension
+incompressible
+incomputable
+inconceivable
+inconclusive
+incongruity
+incongruous
+inconsequential
+inconsequentially
+inconsiderable
+inconsiderate
+inconsiderately
+inconsiderateness
+inconsistencies
+inconsistency
+inconsistent
+inconsistently
+inconspicuous
+incontestable
+incontrovertible
+incontrovertibly
+inconvenience
+inconvenienced
+inconveniences
+inconveniencing
+inconvenient
+inconveniently
+inconvertible
+incorporate
+incorporated
+incorporates
+incorporating
+incorporation
+incorrect
+incorrectly
+incorrectness
+incorrigible
+increase
+increased
+increases
+increasing
+increasingly
+incredible
+incredibly
+incredulity
+incredulous
+incredulously
+increment
+incremental
+incrementally
+incremented
+incrementer
+incrementing
+increments
+incriminate
+incubate
+incubated
+incubates
+incubating
+incubation
+incubator
+incubators
+inculcate
+incumbent
+incur
+incurable
+incurred
+incurring
+incurs
+incursion
+indebted
+indebtedness
+indecent
+indecipherable
+indecision
+indecisive
+indeed
+indefatigable
+indefensible
+indefinite
+indefinitely
+indefiniteness
+indelible
+indemnify
+indemnity
+indent
+indentation
+indentations
+indented
+indenting
+indents
+indenture
+independence
+independent
+independently
+indescribable
+indestructible
+indeterminacies
+indeterminacy
+indeterminate
+indeterminately
+index
+indexable
+indexed
+indexes
+indexing
+India
+Indian
+Indiana
+Indianapolis
+Indians
+indicate
+indicated
+indicates
+indicating
+indication
+indications
+indicative
+indicator
+indicators
+indices
+indict
+indictment
+indictments
+Indies
+indifference
+indifferent
+indifferently
+indigenous
+indigenously
+indigenousness
+indigestible
+indigestion
+indignant
+indignantly
+indignation
+indignities
+indignity
+indigo
+Indira
+indirect
+indirected
+indirecting
+indirection
+indirections
+indirectly
+indirects
+indiscreet
+indiscretion
+indiscriminate
+indiscriminately
+indispensability
+indispensable
+indispensably
+indisputable
+indistinct
+indistinguishable
+individual
+individualism
+individualistic
+individuality
+individualize
+individualized
+individualizes
+individualizing
+individually
+individuals
+indivisibility
+indivisible
+Indo
+Indochina
+Indochinese
+indoctrinate
+indoctrinated
+indoctrinates
+indoctrinating
+indoctrination
+Indoeuropean
+indolent
+indolently
+indomitable
+Indonesia
+Indonesian
+indoor
+indoors
+indubitable
+induce
+induced
+inducement
+inducements
+inducer
+induces
+inducing
+induct
+inductance
+inductances
+inducted
+inductee
+inducting
+induction
+inductions
+inductive
+inductively
+inductor
+inductors
+inducts
+indulge
+indulged
+indulgence
+indulgences
+indulgent
+indulging
+Indus
+industrial
+industrialism
+industrialist
+industrialists
+industrialization
+industrialized
+industrially
+industrials
+industries
+industrious
+industriously
+industriousness
+industry
+Indy
+ineffective
+ineffectively
+ineffectiveness
+ineffectual
+inefficiencies
+inefficiency
+inefficient
+inefficiently
+inelegant
+ineligible
+inept
+inequalities
+inequality
+inequitable
+inequity
+inert
+inertia
+inertial
+inertly
+inertness
+inescapable
+inescapably
+inessential
+inestimable
+inevitabilities
+inevitability
+inevitable
+inevitably
+inexact
+inexcusable
+inexcusably
+inexhaustible
+inexorable
+inexorably
+inexpensive
+inexpensively
+inexperience
+inexperienced
+inexplicable
+infallibility
+infallible
+infallibly
+infamous
+infamously
+infamy
+infancy
+infant
+infantile
+infantry
+infantryman
+infantrymen
+infants
+infarct
+infatuate
+infeasible
+infect
+infected
+infecting
+infection
+infections
+infectious
+infectiously
+infective
+infects
+infer
+inference
+inferences
+inferential
+inferior
+inferiority
+inferiors
+infernal
+infernally
+inferno
+infernos
+inferred
+inferring
+infers
+infertile
+infest
+infested
+infesting
+infests
+infidel
+infidelity
+infidels
+infighting
+infiltrate
+infinite
+infinitely
+infiniteness
+infinitesimal
+infinitive
+infinitives
+infinitude
+infinitum
+infinity
+infirm
+infirmary
+infirmity
+infix
+inflame
+inflamed
+inflammable
+inflammation
+inflammatory
+inflatable
+inflate
+inflated
+inflater
+inflates
+inflating
+inflation
+inflationary
+inflexibility
+inflexible
+inflict
+inflicted
+inflicting
+inflicts
+inflow
+influence
+influenced
+influences
+influencing
+influential
+influentially
+influenza
+inform
+informal
+informality
+informally
+informant
+informants
+Informatica
+information
+informational
+informative
+informatively
+informed
+informer
+informers
+informing
+informs
+infra
+infrared
+infrastructure
+infrequent
+infrequently
+infringe
+infringed
+infringement
+infringements
+infringes
+infringing
+infuriate
+infuriated
+infuriates
+infuriating
+infuriation
+infuse
+infused
+infuses
+infusing
+infusion
+infusions
+ingenious
+ingeniously
+ingeniousness
+ingenuity
+ingenuous
+Ingersoll
+ingest
+ingestion
+inglorious
+ingot
+Ingram
+ingrate
+ingratiate
+ingratitude
+ingredient
+ingredients
+ingrown
+inhabit
+inhabitable
+inhabitance
+inhabitant
+inhabitants
+inhabited
+inhabiting
+inhabits
+inhale
+inhaled
+inhaler
+inhales
+inhaling
+inhere
+inherent
+inherently
+inheres
+inherit
+inheritable
+inheritance
+inheritances
+inherited
+inheriting
+inheritor
+inheritors
+inheritress
+inheritresses
+inheritrices
+inheritrix
+inherits
+inhibit
+inhibited
+inhibiting
+inhibition
+inhibitions
+inhibitor
+inhibitors
+inhibitory
+inhibits
+inhomogeneities
+inhomogeneity
+inhomogeneous
+inhospitable
+inhuman
+inhumane
+inimical
+inimitable
+iniquities
+iniquity
+initial
+initialed
+initialing
+initialization
+initializations
+initialize
+initialized
+initializer
+initializers
+initializes
+initializing
+initially
+initials
+initiate
+initiated
+initiates
+initiating
+initiation
+initiations
+initiative
+initiatives
+initiator
+initiators
+inject
+injected
+injecting
+injection
+injections
+injective
+injects
+injudicious
+Injun
+injunction
+injunctions
+Injuns
+injure
+injured
+injures
+injuries
+injuring
+injurious
+injury
+injustice
+injustices
+ink
+inked
+inker
+inkers
+inking
+inkings
+inkling
+inklings
+inks
+inlaid
+inland
+inlay
+inlet
+inlets
+inline
+Inman
+inmate
+inmates
+inn
+innards
+innate
+innately
+inner
+innermost
+inning
+innings
+innocence
+innocent
+innocently
+innocents
+innocuous
+innocuously
+innocuousness
+innovate
+innovation
+innovations
+innovative
+inns
+innuendo
+innumerability
+innumerable
+innumerably
+inoculate
+inoperable
+inoperative
+inopportune
+inordinate
+inordinately
+inorganic
+input
+inputs
+inquest
+inquire
+inquired
+inquirer
+inquirers
+inquires
+inquiries
+inquiring
+inquiry
+inquisition
+inquisitions
+inquisitive
+inquisitively
+inquisitiveness
+inroad
+inroads
+insane
+insanely
+insanity
+insatiable
+inscribe
+inscribed
+inscribes
+inscribing
+inscription
+inscriptions
+inscrutable
+insect
+insecticide
+insects
+insecure
+insecurely
+inseminate
+insensible
+insensitive
+insensitively
+insensitivity
+inseparable
+insert
+inserted
+inserting
+insertion
+insertions
+inserts
+inset
+inside
+insider
+insiders
+insides
+insidious
+insidiously
+insidiousness
+insight
+insightful
+insights
+insignia
+insignificance
+insignificant
+insincere
+insincerity
+insinuate
+insinuated
+insinuates
+insinuating
+insinuation
+insinuations
+insipid
+insist
+insisted
+insistence
+insistent
+insistently
+insisting
+insists
+insofar
+insolence
+insolent
+insolently
+insoluble
+insolvable
+insolvent
+insomnia
+insomniac
+inspect
+inspected
+inspecting
+inspection
+inspections
+inspector
+inspectors
+inspects
+inspiration
+inspirations
+inspire
+inspired
+inspirer
+inspires
+inspiring
+instabilities
+instability
+install
+installation
+installations
+installed
+installer
+installers
+installing
+installment
+installments
+installs
+instance
+instances
+instant
+instantaneous
+instantaneously
+instanter
+instantiate
+instantiated
+instantiates
+instantiating
+instantiation
+instantiations
+instantly
+instants
+instead
+instigate
+instigated
+instigates
+instigating
+instigator
+instigators
+instill
+instinct
+instinctive
+instinctively
+instincts
+instinctual
+institute
+instituted
+instituter
+instituters
+institutes
+instituting
+institution
+institutional
+institutionalize
+institutionalized
+institutionalizes
+institutionalizing
+institutionally
+institutions
+instruct
+instructed
+instructing
+instruction
+instructional
+instructions
+instructive
+instructively
+instructor
+instructors
+instructs
+instrument
+instrumental
+instrumentalist
+instrumentalists
+instrumentally
+instrumentals
+instrumentation
+instrumented
+instrumenting
+instruments
+insubordinate
+insufferable
+insufficient
+insufficiently
+insular
+insulate
+insulated
+insulates
+insulating
+insulation
+insulator
+insulators
+insulin
+insult
+insulted
+insulting
+insults
+insuperable
+insupportable
+insurance
+insure
+insured
+insurer
+insurers
+insures
+insurgent
+insurgents
+insuring
+insurmountable
+insurrection
+insurrections
+intact
+intangible
+intangibles
+integer
+integers
+integrable
+integral
+integrals
+integrand
+integrate
+integrated
+integrates
+integrating
+integration
+integrations
+integrative
+integrity
+Intel
+intellect
+intellects
+intellectual
+intellectually
+intellectuals
+intelligence
+intelligent
+intelligently
+intelligentsia
+intelligibility
+intelligible
+intelligibly
+Intelsat
+intemperate
+intend
+intended
+intending
+intends
+intense
+intensely
+intensification
+intensified
+intensifier
+intensifiers
+intensifies
+intensify
+intensifying
+intensities
+intensity
+intensive
+intensively
+intent
+intention
+intentional
+intentionally
+intentioned
+intentions
+intently
+intentness
+intents
+inter
+interact
+interacted
+interacting
+interaction
+interactions
+interactive
+interactively
+interactivity
+interacts
+intercept
+intercepted
+intercepting
+interception
+interceptor
+intercepts
+interchange
+interchangeability
+interchangeable
+interchangeably
+interchanged
+interchanger
+interchanges
+interchanging
+interchangings
+interchannel
+intercity
+intercom
+intercommunicate
+intercommunicated
+intercommunicates
+intercommunicating
+intercommunication
+interconnect
+interconnected
+interconnecting
+interconnection
+interconnections
+interconnects
+intercontinental
+intercourse
+Interdata
+interdependence
+interdependencies
+interdependency
+interdependent
+interdict
+interdiction
+interdisciplinary
+interest
+interested
+interesting
+interestingly
+interests
+interface
+interfaced
+interfacer
+interfaces
+interfacing
+interfere
+interfered
+interference
+interferences
+interferes
+interfering
+interferingly
+interferometer
+interferometric
+interferometry
+interframe
+intergroup
+interim
+interior
+interiors
+interject
+interlace
+interlaced
+interlaces
+interlacing
+interleave
+interleaved
+interleaves
+interleaving
+interlink
+interlinked
+interlinks
+interlisp
+intermediary
+intermediate
+intermediates
+interminable
+intermingle
+intermingled
+intermingles
+intermingling
+intermission
+intermittent
+intermittently
+intermix
+intermixed
+intermodule
+intern
+internal
+internalize
+internalized
+internalizes
+internalizing
+internally
+internals
+international
+internationality
+internationally
+interned
+INTERNET
+Internet
+internetwork
+interning
+interns
+internship
+interoffice
+interpersonal
+interplay
+Interpol
+interpolate
+interpolated
+interpolates
+interpolating
+interpolation
+interpolations
+interpose
+interposed
+interposes
+interposing
+interpret
+interpretable
+interpretation
+interpretations
+interpreted
+interpreter
+interpreters
+interpreting
+interpretive
+interpretively
+interprets
+interprocess
+interrelate
+interrelated
+interrelates
+interrelating
+interrelation
+interrelations
+interrelationship
+interrelationships
+interrogate
+interrogated
+interrogates
+interrogating
+interrogation
+interrogations
+interrogative
+interrupt
+interrupted
+interruptible
+interrupting
+interruption
+interruptions
+interruptive
+interrupts
+intersect
+intersected
+intersecting
+intersection
+intersections
+intersects
+intersperse
+interspersed
+intersperses
+interspersing
+interspersion
+interstage
+interstate
+intertwine
+intertwined
+intertwines
+intertwining
+interval
+intervals
+intervene
+intervened
+intervenes
+intervening
+intervention
+interventions
+interview
+interviewed
+interviewee
+interviewer
+interviewers
+interviewing
+interviews
+interwoven
+intestate
+intestinal
+intestine
+intestines
+intimacy
+intimate
+intimated
+intimately
+intimating
+intimation
+intimations
+intimidate
+intimidated
+intimidates
+intimidating
+intimidation
+into
+intolerable
+intolerably
+intolerance
+intolerant
+intonation
+intonations
+intone
+intoxicant
+intoxicate
+intoxicated
+intoxicating
+intoxication
+intractability
+intractable
+intractably
+intragroup
+intraline
+intramural
+intramuscular
+intransigent
+intransitive
+intransitively
+intraoffice
+intraprocess
+intrastate
+intravenous
+intrepid
+intricacies
+intricacy
+intricate
+intricately
+intrigue
+intrigued
+intrigues
+intriguing
+intrinsic
+intrinsically
+introduce
+introduced
+introduces
+introducing
+introduction
+introductions
+introductory
+introspect
+introspection
+introspections
+introspective
+introvert
+introverted
+intrude
+intruded
+intruder
+intruders
+intrudes
+intruding
+intrusion
+intrusions
+intrust
+intubate
+intubated
+intubates
+intubation
+intuition
+intuitionist
+intuitions
+intuitive
+intuitively
+inundate
+invade
+invaded
+invader
+invaders
+invades
+invading
+invalid
+invalidate
+invalidated
+invalidates
+invalidating
+invalidation
+invalidations
+invalidities
+invalidity
+invalidly
+invalids
+invaluable
+invariable
+invariably
+invariance
+invariant
+invariantly
+invariants
+invasion
+invasions
+invective
+invent
+invented
+inventing
+invention
+inventions
+inventive
+inventively
+inventiveness
+inventor
+inventories
+inventors
+inventory
+invents
+Inverness
+inverse
+inversely
+inverses
+inversion
+inversions
+invert
+invertebrate
+invertebrates
+inverted
+inverter
+inverters
+invertible
+inverting
+inverts
+invest
+invested
+investigate
+investigated
+investigates
+investigating
+investigation
+investigations
+investigative
+investigator
+investigators
+investigatory
+investing
+investment
+investments
+investor
+investors
+invests
+inveterate
+invigorate
+invincible
+invisibility
+invisible
+invisibly
+invitation
+invitations
+invite
+invited
+invites
+inviting
+invocable
+invocation
+invocations
+invoice
+invoiced
+invoices
+invoicing
+invoke
+invoked
+invoker
+invokes
+invoking
+involuntarily
+involuntary
+involve
+involved
+involvement
+involvements
+involves
+involving
+inward
+inwardly
+inwardness
+inwards
+Io
+iodine
+ion
+Ionian
+Ionians
+Ionicization
+Ionicizations
+Ionicize
+Ionicizes
+ionosphere
+ionospheric
+ions
+iota
+Iowa
+Ira
+Iran
+Iranian
+Iranians
+Iranize
+Iranizes
+Iraq
+Iraqi
+Iraqis
+irate
+irately
+irateness
+ire
+Ireland
+Irene
+ires
+iris
+Irish
+Irishize
+Irishizes
+Irishman
+Irishmen
+irk
+irked
+irking
+irks
+irksome
+Irma
+iron
+ironed
+ironic
+ironical
+ironically
+ironies
+ironing
+ironings
+irons
+irony
+Iroquois
+irradiate
+irrational
+irrationally
+irrationals
+Irrawaddy
+irreconcilable
+irrecoverable
+irreducible
+irreducibly
+irreflexive
+irrefutable
+irregular
+irregularities
+irregularity
+irregularly
+irregulars
+irrelevance
+irrelevances
+irrelevant
+irrelevantly
+irreplaceable
+irrepressible
+irreproducibility
+irreproducible
+irresistible
+irrespective
+irrespectively
+irresponsible
+irresponsibly
+irretrievably
+irreverent
+irreversibility
+irreversible
+irreversibly
+irrevocable
+irrevocably
+irrigate
+irrigated
+irrigates
+irrigating
+irrigation
+irritable
+irritant
+irritate
+irritated
+irritates
+irritating
+irritation
+irritations
+Irvin
+Irvine
+Irving
+Irwin
+is
+Isaac
+Isaacs
+Isaacson
+Isabel
+Isabella
+Isadore
+Isaiah
+Isfahan
+Ising
+Isis
+Islam
+Islamabad
+Islamic
+Islamization
+Islamizations
+Islamize
+Islamizes
+island
+islander
+islanders
+Islandia
+islands
+isle
+isles
+islet
+islets
+isolate
+isolated
+isolates
+isolating
+isolation
+isolations
+Isolde
+isometric
+isomorphic
+isomorphically
+isomorphism
+isomorphisms
+isotope
+isotopes
+Israel
+Israeli
+Israelis
+Israelite
+Israelites
+Israelitize
+Israelitizes
+issuance
+issue
+issued
+issuer
+issuers
+issues
+issuing
+Istanbul
+isthmus
+Istvan
+it
+Italian
+Italianization
+Italianizations
+Italianize
+Italianizer
+Italianizers
+Italianizes
+Italians
+italic
+italicize
+italicized
+italics
+Italy
+itch
+itches
+itching
+Itel
+item
+itemization
+itemizations
+itemize
+itemized
+itemizes
+itemizing
+items
+iterate
+iterated
+iterates
+iterating
+iteration
+iterations
+iterative
+iteratively
+iterator
+iterators
+Ithaca
+Ithacan
+itineraries
+itinerary
+Ito
+its
+itself
+Ivan
+Ivanhoe
+Iverson
+ivies
+ivory
+ivy
+Izaak
+Izvestia
+jab
+jabbed
+jabbing
+Jablonsky
+jabs
+jack
+jackass
+jacket
+jacketed
+jackets
+Jackie
+jacking
+jackknife
+Jackman
+jackpot
+Jackson
+Jacksonian
+Jacksons
+Jacksonville
+Jacky
+Jacob
+Jacobean
+Jacobi
+Jacobian
+Jacobinize
+Jacobite
+Jacobs
+Jacobsen
+Jacobson
+Jacobus
+Jacoby
+Jacqueline
+Jacques
+jade
+jaded
+Jaeger
+jaguar
+jail
+jailed
+jailer
+jailers
+jailing
+jails
+Jaime
+Jakarta
+Jake
+Jakes
+jam
+Jamaica
+Jamaican
+James
+Jameson
+Jamestown
+jammed
+jamming
+jams
+Jane
+Janeiro
+Janesville
+Janet
+Janice
+Janis
+janitor
+janitors
+Janos
+Jansen
+Jansenist
+Januaries
+January
+Janus
+Japan
+Japanese
+Japanization
+Japanizations
+Japanize
+Japanized
+Japanizes
+Japanizing
+jar
+jargon
+jarred
+jarring
+jarringly
+jars
+Jarvin
+Jason
+Jastrow
+jaundice
+jaunt
+jauntiness
+jaunts
+jaunty
+Java
+Javanese
+javelin
+javelins
+jaw
+jawbone
+jaws
+jay
+Jaycee
+Jaycees
+jazz
+jazzy
+jealous
+jealousies
+jealously
+jealousy
+jean
+Jeanne
+Jeannie
+jeans
+Jed
+jeep
+jeeps
+jeer
+jeers
+Jeff
+Jefferson
+Jeffersonian
+Jeffersonians
+Jeffrey
+Jehovah
+jellies
+Jello
+jelly
+jellyfish
+Jenkins
+Jennie
+Jennifer
+Jennings
+jenny
+Jensen
+jeopardize
+jeopardized
+jeopardizes
+jeopardizing
+jeopardy
+Jeremiah
+Jeremy
+Jeres
+Jericho
+jerk
+jerked
+jerkiness
+jerking
+jerkings
+jerks
+jerky
+Jeroboam
+Jerome
+Jerry
+jersey
+jerseys
+Jerusalem
+Jesse
+Jessica
+Jessie
+Jessy
+jest
+jested
+jester
+jesting
+jests
+Jesuit
+Jesuitism
+Jesuitize
+Jesuitized
+Jesuitizes
+Jesuitizing
+Jesuits
+Jesus
+jet
+jetliner
+jets
+jetted
+jetting
+Jew
+jewel
+jeweled
+jeweler
+Jewell
+Jewelled
+jewelries
+jewelry
+jewels
+Jewett
+Jewish
+Jewishness
+Jews
+jiffy
+jig
+jigs
+jigsaw
+Jill
+Jim
+Jimenez
+Jimmie
+jingle
+jingled
+jingling
+Jinny
+jitter
+jitterbug
+jittery
+Jo
+Joan
+Joanna
+Joanne
+Joaquin
+job
+Jobrel
+jobs
+jockey
+jockstrap
+jocund
+Jody
+Joe
+Joel
+Joes
+jog
+jogging
+jogs
+Johann
+Johanna
+Johannes
+Johannesburg
+Johansen
+Johanson
+John
+Johnnie
+Johnny
+Johns
+Johnsen
+Johnson
+Johnston
+Johnstown
+join
+joined
+joiner
+joiners
+joining
+joins
+joint
+jointly
+joints
+joke
+joked
+joker
+jokers
+jokes
+joking
+jokingly
+Joliet
+Jolla
+jolly
+jolt
+jolted
+jolting
+jolts
+Jon
+Jonas
+Jonathan
+Jonathanization
+Jonathanizations
+Jones
+Joneses
+jonquil
+Joplin
+Jordan
+Jordanian
+Jorge
+Jorgensen
+Jorgenson
+Jose
+Josef
+Joseph
+Josephine
+Josephson
+Josephus
+Joshua
+Josiah
+jostle
+jostled
+jostles
+jostling
+jot
+jots
+jotted
+jotting
+joule
+journal
+journalism
+journalist
+journalists
+journalize
+journalized
+journalizes
+journalizing
+journals
+journey
+journeyed
+journeying
+journeyings
+journeyman
+journeymen
+journeys
+joust
+jousted
+jousting
+jousts
+Jovanovich
+Jove
+jovial
+Jovian
+joy
+Joyce
+joyful
+joyfully
+joyous
+joyously
+joyousness
+joyride
+joys
+joystick
+Juan
+Juanita
+Jubal
+jubilee
+Judaica
+Judaism
+Judas
+Judd
+Judder
+Juddered
+Juddering
+Judders
+Jude
+Judea
+judge
+judged
+judges
+judging
+judgment
+judgments
+judicial
+judiciary
+judicious
+judiciously
+Judith
+judo
+Judson
+Judy
+jug
+juggle
+juggler
+jugglers
+juggles
+juggling
+Jugoslavia
+jugs
+juice
+juices
+juiciest
+juicy
+Jukes
+Jules
+Julia
+Julian
+Julie
+Julies
+Juliet
+Julio
+Julius
+July
+jumble
+jumbled
+jumbles
+jumbo
+jump
+jumped
+jumper
+jumpers
+jumping
+jumps
+jumpy
+junction
+junctions
+juncture
+junctures
+June
+Juneau
+Junes
+Jung
+Jungian
+jungle
+jungles
+junior
+juniors
+juniper
+junk
+junker
+junkers
+junks
+junky
+Juno
+junta
+Jupiter
+Jura
+Juras
+Jurassic
+jure
+juries
+jurisdiction
+jurisdictions
+jurisprudence
+jurist
+juror
+jurors
+jury
+just
+justice
+justices
+justifiable
+justifiably
+justification
+justifications
+justified
+justifier
+justifiers
+justifies
+justify
+justifying
+Justine
+Justinian
+justly
+justness
+jut
+Jutish
+Jutland
+jutting
+juvenile
+juveniles
+juxtapose
+juxtaposed
+juxtaposes
+juxtaposing
+Kabuki
+Kabul
+Kaddish
+Kafka
+Kafkaesque
+Kahn
+Kajar
+Kalamazoo
+Kali
+Kalmuk
+Kamchatka
+Kamikaze
+Kamikazes
+Kampala
+Kampuchea
+Kanarese
+Kane
+kangaroo
+kanji
+Kankakee
+Kannada
+Kansas
+Kant
+Kantian
+Kaplan
+kappa
+Karachi
+Karamazov
+karate
+Karen
+Karl
+Karol
+Karp
+Kashmir
+Kaskaskia
+Kate
+Katharine
+Katherine
+Kathleen
+Kathy
+Katie
+Katmandu
+Katowice
+Katz
+Kauffman
+Kaufman
+Kay
+Keaton
+Keats
+Keegan
+keel
+keeled
+keeling
+keels
+keen
+Keenan
+keener
+keenest
+keenly
+keenness
+keep
+keeper
+keepers
+keeping
+keeps
+Keith
+Keller
+Kelley
+Kellogg
+Kelly
+Kelsey
+Kelvin
+Kemp
+ken
+Kendall
+Kenilworth
+Kennan
+Kennecott
+Kennedy
+kennel
+kennels
+Kenneth
+Kenney
+Kenning
+Kenny
+Kenosha
+Kensington
+Kent
+Kenton
+Kentucky
+Kenya
+Kenyon
+Kepler
+kept
+kerchief
+kerchiefs
+Kermit
+kern
+kernel
+kernels
+Kernighan
+kerosene
+Kerouac
+Kerr
+Kessler
+ketchup
+Kettering
+kettle
+kettles
+Kevin
+Kewaskum
+Kewaunee
+key
+keyboard
+keyboards
+keyed
+Keyes
+keyhole
+keying
+Keynes
+Keynesian
+keynote
+keypad
+keypads
+keys
+keystroke
+keystrokes
+keyword
+keywords
+Khartoum
+Khmer
+Khrushchev
+Khrushchevs
+kick
+Kickapoo
+kicked
+kicker
+kickers
+kicking
+kickoff
+kicks
+kid
+Kidde
+kidded
+kiddie
+kidding
+kidnap
+kidnapper
+kidnappers
+kidnapping
+kidnappings
+kidnaps
+kidney
+kidneys
+kids
+Kieffer
+Kiel
+Kiev
+Kiewit
+Kigali
+Kikuyu
+Kilgore
+Kilimanjaro
+kill
+Killebrew
+killed
+killer
+killers
+killing
+killingly
+killings
+killjoy
+kills
+kilobit
+kilobits
+kiloblock
+kilobyte
+kilobytes
+kilogram
+kilograms
+kilohertz
+kilohm
+kilojoule
+kilometer
+kilometers
+kiloton
+kilovolt
+kilowatt
+kiloword
+Kim
+Kimball
+Kimberly
+kimono
+kin
+kind
+kinder
+kindergarten
+kindest
+kindhearted
+kindle
+kindled
+kindles
+kindling
+kindly
+kindness
+kindred
+kinds
+kinetic
+king
+kingdom
+kingdoms
+kingly
+kingpin
+kings
+Kingsbury
+Kingsley
+Kingston
+Kingstown
+Kingwood
+kink
+kinky
+Kinney
+Kinnickinnic
+Kinsey
+Kinshasha
+kinship
+kinsman
+kiosk
+Kiowa
+Kipling
+Kirby
+Kirchner
+Kirchoff
+Kirk
+Kirkland
+Kirkpatrick
+Kirkwood
+Kirov
+kiss
+kissed
+kisser
+kissers
+kisses
+kissing
+kit
+Kitakyushu
+kitchen
+kitchenette
+kitchens
+kite
+kited
+kites
+kiting
+kits
+kitten
+kittenish
+kittens
+kitty
+Kiwanis
+Klan
+Klaus
+klaxon
+Klein
+Kleinrock
+Kline
+kludge
+kludges
+Klux
+klystron
+knack
+Knapp
+knapsack
+knapsacks
+Knauer
+knave
+knaves
+knead
+kneads
+knee
+kneecap
+kneed
+kneeing
+kneel
+kneeled
+kneeling
+kneels
+knees
+knell
+knells
+knelt
+knew
+Knickerbocker
+Knickerbockers
+knife
+knifed
+knifes
+knifing
+knight
+knighted
+knighthood
+knighting
+knightly
+knights
+Knightsbridge
+knit
+knits
+knives
+knob
+Knobeloch
+knobs
+knock
+knockdown
+knocked
+knocker
+knockers
+knocking
+knockout
+knocks
+knoll
+knolls
+Knossos
+knot
+knots
+Knott
+knotted
+knotting
+know
+knowable
+knower
+knowhow
+knowing
+knowingly
+knowledge
+knowledgeable
+Knowles
+Knowlton
+known
+knows
+Knox
+Knoxville
+knuckle
+knuckled
+knuckles
+Knudsen
+Knudson
+Knuth
+Knutsen
+Knutson
+koala
+Kobayashi
+Koch
+Kochab
+Kodachrome
+Kodak
+Kodiak
+Koenig
+Koenigsberg
+Kohler
+Kong
+Konrad
+Koppers
+Koran
+Korea
+Korean
+Koreans
+kosher
+Kovacs
+Kowalewski
+Kowalski
+Kowloon
+Kowtow
+Kraemer
+Krakatoa
+Krakow
+Kramer
+Krause
+Krebs
+Kremlin
+Kresge
+Krieger
+Krishna
+Kristin
+Kronecker
+Krueger
+Kruger
+Kruse
+Ku
+Kuala
+kudo
+Kuenning
+Kuhn
+Kumar
+Kurd
+Kurdish
+Kurt
+Kuwait
+Kuwaiti
+Kyoto
+lab
+Laban
+label
+labeled
+labeling
+labelled
+labeller
+labellers
+labelling
+labels
+labor
+laboratories
+laboratory
+labored
+laborer
+laborers
+laboring
+laborings
+laborious
+laboriously
+labors
+Labrador
+labs
+labyrinth
+labyrinths
+Lac
+lace
+laced
+lacerate
+lacerated
+lacerates
+lacerating
+laceration
+lacerations
+Lacerta
+laces
+Lacey
+Lachesis
+lacing
+lack
+Lackawanna
+lacked
+lackey
+lacking
+lacks
+lacquer
+lacquered
+lacquers
+lacrosse
+lacy
+lad
+ladder
+laden
+ladies
+lading
+ladle
+lads
+lady
+ladylike
+Lafayette
+lag
+lager
+lagers
+lagoon
+lagoons
+Lagos
+Lagrange
+Lagrangian
+lags
+Laguerre
+Laguna
+Lahore
+laid
+Laidlaw
+lain
+lair
+lairs
+laissez
+lake
+Lakehurst
+lakes
+Lakewood
+Lamar
+Lamarck
+lamb
+lambda
+lambdas
+lambert
+lambs
+lame
+lamed
+lamely
+lameness
+lament
+lamentable
+lamentation
+lamentations
+lamented
+lamenting
+laments
+lames
+laminar
+laming
+lamp
+lamplight
+lampoon
+Lamport
+lamprey
+lamps
+Lana
+Lancashire
+Lancaster
+lance
+lanced
+Lancelot
+lancer
+lances
+land
+landed
+lander
+landers
+landfill
+landing
+landings
+Landis
+landladies
+landlady
+landlord
+landlords
+landmark
+landmarks
+landowner
+landowners
+lands
+landscape
+landscaped
+landscapes
+landscaping
+landslide
+Landwehr
+lane
+lanes
+Lang
+Lange
+Langeland
+Langford
+Langley
+Langmuir
+language
+languages
+languid
+languidly
+languidness
+languish
+languished
+languishes
+languishing
+Lanka
+Lansing
+lantern
+lanterns
+Lao
+Laocoon
+Laos
+Laotian
+Laotians
+lap
+lapel
+lapels
+Laplace
+Laplacian
+lapping
+laps
+lapse
+lapsed
+lapses
+lapsing
+Laramie
+lard
+larder
+Laredo
+Lares
+large
+largely
+largeness
+larger
+largest
+lark
+Larkin
+larks
+Larry
+Lars
+Larsen
+Larson
+larva
+larvae
+larynx
+lascivious
+laser
+lasers
+lash
+lashed
+lashes
+lashing
+lashings
+lass
+lasses
+lasso
+last
+lasted
+lasting
+lastly
+lasts
+Laszlo
+latch
+latched
+latches
+latching
+late
+lately
+latency
+lateness
+latent
+later
+lateral
+laterally
+Lateran
+latest
+LaTeX
+lathe
+Lathrop
+Latin
+Latinate
+Latinity
+Latinization
+Latinizations
+Latinize
+Latinized
+Latinizer
+Latinizers
+Latinizes
+Latinizing
+latitude
+latitudes
+latrine
+latrines
+Latrobe
+latter
+latterly
+lattice
+lattices
+Lattimer
+Latvia
+laudable
+Lauderdale
+Laue
+laugh
+laughable
+laughably
+laughed
+laughing
+laughingly
+laughingstock
+Laughlin
+laughs
+laughter
+launch
+launched
+launcher
+launches
+launching
+launchings
+launder
+laundered
+launderer
+laundering
+launderings
+launders
+Laundromat
+Laundromats
+laundry
+laureate
+laurel
+laurels
+Lauren
+Laurence
+Laurent
+Laurentian
+Laurie
+Lausanne
+lava
+lavatories
+lavatory
+lavender
+lavish
+lavished
+lavishing
+lavishly
+Lavoisier
+law
+lawbreaker
+Lawford
+lawful
+lawfully
+lawgiver
+lawless
+lawlessness
+lawn
+lawns
+Lawrence
+Lawrenceville
+laws
+Lawson
+lawsuit
+lawsuits
+lawyer
+lawyers
+lax
+laxative
+lay
+layer
+layered
+layering
+layers
+laying
+layman
+laymen
+layoff
+layoffs
+layout
+layouts
+lays
+Layton
+Lazarus
+lazed
+lazier
+laziest
+lazily
+laziness
+lazing
+lazy
+lazybones
+lead
+leaded
+leaden
+leader
+leaders
+leadership
+leaderships
+leading
+leadings
+leads
+leaf
+leafed
+leafiest
+leafing
+leafless
+leaflet
+leaflets
+leafy
+league
+leagued
+leaguer
+leaguers
+leagues
+leak
+leakage
+leakages
+leaked
+leaking
+leaks
+leaky
+lean
+Leander
+leaned
+leaner
+leanest
+leaning
+leanness
+leans
+leap
+leaped
+leapfrog
+leaping
+leaps
+leapt
+Lear
+learn
+learned
+learner
+learners
+learning
+learns
+Leary
+lease
+leased
+leases
+leash
+leashes
+leasing
+least
+leather
+leathered
+leathern
+leatherneck
+leathers
+leave
+leaved
+leaven
+leavened
+leavening
+Leavenworth
+leaves
+leaving
+leavings
+Lebanese
+Lebanon
+Lebesgue
+lechery
+lecture
+lectured
+lecturer
+lecturers
+lectures
+lecturing
+led
+ledge
+ledger
+ledgers
+ledges
+lee
+leech
+leeches
+Leeds
+leek
+leer
+leery
+lees
+Leeuwenhoek
+leeward
+leeway
+left
+leftist
+leftists
+leftmost
+leftover
+leftovers
+leftward
+leg
+legacies
+legacy
+legal
+legality
+legalization
+legalize
+legalized
+legalizes
+legalizing
+legally
+legend
+legendary
+Legendre
+legends
+Leger
+Legers
+legged
+leggings
+legibility
+legible
+legibly
+legion
+legions
+legislate
+legislated
+legislates
+legislating
+legislation
+legislative
+legislator
+legislators
+legislature
+legislatures
+legitimacy
+legitimate
+legitimately
+legs
+legume
+Lehigh
+Lehman
+Leibniz
+Leiden
+Leigh
+Leighton
+Leila
+Leipzig
+leisure
+leisurely
+Leland
+Lemke
+lemma
+lemmas
+lemming
+lemmings
+lemon
+lemonade
+lemons
+Lemuel
+Len
+Lena
+lend
+lender
+lenders
+lending
+lends
+length
+lengthen
+lengthened
+lengthening
+lengthens
+lengthly
+lengths
+lengthwise
+lengthy
+leniency
+lenient
+leniently
+Lenin
+Leningrad
+Leninism
+Leninist
+Lennox
+Lenny
+Lenore
+lens
+lenses
+lent
+Lenten
+lentil
+lentils
+Leo
+Leon
+Leona
+Leonard
+Leonardo
+Leone
+Leonid
+leopard
+leopards
+Leopold
+Leopoldville
+leper
+leprosy
+Leroy
+Lesbian
+Lesbians
+Leslie
+Lesotho
+less
+lessen
+lessened
+lessening
+lessens
+lesser
+lesson
+lessons
+lessor
+lest
+Lester
+let
+lethal
+Lethe
+Letitia
+lets
+letter
+lettered
+letterer
+letterhead
+lettering
+letters
+letting
+lettuce
+leukemia
+Lev
+levee
+levees
+level
+leveled
+leveler
+leveling
+levelled
+leveller
+levellest
+levelling
+levelly
+levelness
+levels
+lever
+leverage
+levers
+Levi
+Leviable
+levied
+levies
+Levin
+Levine
+Levis
+Leviticus
+Levitt
+levity
+levy
+levying
+Lew
+lewd
+lewdly
+lewdness
+Lewellyn
+lexical
+lexically
+lexicographic
+lexicographical
+lexicographically
+lexicon
+lexicons
+Lexington
+Leyden
+liabilities
+liability
+liable
+liaison
+liaisons
+liar
+liars
+libel
+libelous
+Liberace
+liberal
+liberalize
+liberalized
+liberalizes
+liberalizing
+liberally
+liberals
+liberate
+liberated
+liberates
+liberating
+liberation
+liberator
+liberators
+Liberia
+libertarian
+liberties
+liberty
+libido
+librarian
+librarians
+libraries
+library
+libretto
+Libreville
+Libya
+Libyan
+lice
+license
+licensed
+licensee
+licenses
+licensing
+licensor
+licentious
+lichen
+lichens
+Lichter
+lick
+licked
+licking
+licks
+licorice
+lid
+lids
+lie
+Lieberman
+Liechtenstein
+lied
+liege
+lien
+liens
+lies
+lieu
+lieutenant
+lieutenants
+life
+lifeblood
+lifeboat
+lifeguard
+lifeless
+lifelessness
+lifelike
+lifelong
+lifer
+lifespan
+lifestyle
+lifestyles
+lifetime
+lifetimes
+lift
+lifted
+lifter
+lifters
+lifting
+lifts
+ligament
+ligature
+Ligget
+Liggett
+light
+lighted
+lighten
+lightens
+lighter
+lighters
+lightest
+lightface
+lighthearted
+lighthouse
+lighthouses
+lighting
+lightly
+lightness
+lightning
+lightnings
+lights
+lightweight
+like
+liked
+likelier
+likeliest
+likelihood
+likelihoods
+likeliness
+likely
+liken
+likened
+likeness
+likenesses
+likening
+likens
+likes
+likewise
+liking
+Lila
+lilac
+lilacs
+Lilian
+lilies
+Lillian
+Lilliput
+Lilliputian
+Lilliputianize
+Lilliputianizes
+Lilly
+lily
+Lima
+Liman
+limb
+limber
+limbo
+limbs
+lime
+limelight
+Limerick
+limes
+limestone
+limit
+limitability
+limitably
+limitation
+limitations
+limited
+limiter
+limiters
+limiting
+limitless
+limits
+limousine
+limp
+limped
+limping
+limply
+limpness
+limps
+Lin
+Lincoln
+Lind
+Linda
+Lindberg
+Lindbergh
+linden
+Lindholm
+Lindquist
+Lindsay
+Lindsey
+Lindstrom
+Lindy
+line
+linear
+linearities
+linearity
+linearizable
+linearize
+linearized
+linearizes
+linearizing
+linearly
+lined
+linen
+linens
+liner
+liners
+lines
+lineup
+linger
+lingered
+lingerie
+lingering
+lingers
+lingo
+lingua
+linguist
+linguistic
+linguistically
+linguistics
+linguists
+lining
+linings
+link
+linkage
+linkages
+linked
+linker
+linkers
+linking
+links
+Linnaeus
+linoleum
+Linotype
+linseed
+lint
+Linton
+Linus
+Linux
+lion
+Lionel
+lioness
+lionesses
+lions
+lip
+Lippincott
+lips
+Lipschitz
+Lipscomb
+lipstick
+Lipton
+liquid
+liquidate
+liquidation
+liquidations
+liquidity
+liquids
+liquor
+liquors
+Lisa
+Lisbon
+Lise
+lisp
+lisped
+lisping
+lisps
+Liss
+Lissajous
+list
+listed
+listen
+listened
+listener
+listeners
+listening
+listens
+Lister
+Listerize
+Listerizes
+listers
+listing
+listings
+listless
+Liston
+lists
+lit
+litany
+liter
+literacy
+literal
+literally
+literalness
+literals
+literary
+literate
+literature
+literatures
+liters
+lithe
+lithograph
+lithography
+Lithuania
+Lithuanian
+litigant
+litigate
+litigation
+litigious
+litmus
+litter
+litterbug
+littered
+littering
+litters
+little
+littleness
+littler
+littlest
+Littleton
+Litton
+livable
+livably
+live
+lived
+livelihood
+lively
+liveness
+liver
+liveried
+Livermore
+Liverpool
+Liverpudlian
+livers
+livery
+lives
+livestock
+livid
+living
+Livingston
+Liz
+lizard
+lizards
+Lizzie
+Lizzy
+Lloyd
+load
+loaded
+loader
+loaders
+loading
+loadings
+loads
+loaf
+loafed
+loafer
+loan
+loaned
+loaning
+loans
+loath
+loathe
+loathed
+loathing
+loathly
+loathsome
+loaves
+lobbied
+lobbies
+lobby
+lobbying
+lobe
+lobes
+lobster
+lobsters
+local
+localities
+locality
+localization
+localize
+localized
+localizes
+localizing
+locally
+locals
+locate
+located
+locates
+locating
+location
+locations
+locative
+locatives
+locator
+locators
+loci
+lock
+Locke
+locked
+locker
+lockers
+Lockhart
+Lockheed
+Lockian
+locking
+lockings
+lockout
+lockouts
+locks
+locksmith
+lockstep
+lockup
+lockups
+Lockwood
+locomotion
+locomotive
+locomotives
+locus
+locust
+locusts
+lodge
+lodged
+lodger
+lodges
+lodging
+lodgings
+Lodowick
+Loeb
+loft
+loftiness
+lofts
+lofty
+Logan
+logarithm
+logarithmic
+logarithmically
+logarithms
+logged
+logger
+loggers
+logging
+logic
+logical
+logically
+logician
+logicians
+logics
+login
+logins
+logistic
+logistics
+logjam
+logo
+logs
+loin
+loincloth
+loins
+Loire
+Lois
+loiter
+loitered
+loiterer
+loitering
+loiters
+Loki
+Lola
+Lomb
+Lombard
+Lombardy
+Lome
+London
+Londonderry
+Londoner
+Londonization
+Londonizations
+Londonize
+Londonizes
+lone
+lonelier
+loneliest
+loneliness
+lonely
+loner
+loners
+lonesome
+long
+longed
+longer
+longest
+longevity
+Longfellow
+longhand
+longing
+longings
+longitude
+longitudes
+longs
+longstanding
+Longstreet
+look
+lookahead
+looked
+looker
+lookers
+looking
+lookout
+looks
+lookup
+lookups
+loom
+loomed
+looming
+Loomis
+looms
+loon
+loop
+looped
+loophole
+loopholes
+looping
+loops
+loose
+loosed
+looseleaf
+loosely
+loosen
+loosened
+looseness
+loosening
+loosens
+looser
+looses
+loosest
+loosing
+loot
+looted
+looter
+looting
+loots
+Lopez
+lopsided
+lord
+lordly
+lords
+lordship
+lore
+Lorelei
+Loren
+Lorentzian
+Lorenz
+Loretta
+Lorinda
+Lorraine
+lorry
+Los
+lose
+loser
+losers
+loses
+losing
+loss
+losses
+lossier
+lossiest
+lossy
+lost
+lot
+Lothario
+lotion
+lots
+Lotte
+lottery
+Lottie
+lotus
+Lou
+loud
+louder
+loudest
+loudly
+loudness
+loudspeaker
+loudspeakers
+Louis
+Louisa
+Louise
+Louisiana
+Louisianan
+Louisville
+lounge
+lounged
+lounges
+lounging
+Lounsbury
+Lourdes
+louse
+lousy
+lout
+Louvre
+lovable
+lovably
+love
+loved
+Lovejoy
+Lovelace
+Loveland
+lovelier
+lovelies
+loveliest
+loveliness
+lovelorn
+lovely
+lover
+lovers
+loves
+loving
+lovingly
+low
+Lowe
+Lowell
+lower
+lowered
+lowering
+lowers
+lowest
+lowland
+lowlands
+lowliest
+lowly
+lowness
+Lowry
+lows
+Loy
+loyal
+loyally
+loyalties
+loyalty
+Loyola
+Lubbock
+Lubell
+lubricant
+lubricate
+lubrication
+Lucas
+Lucerne
+Lucia
+Lucian
+lucid
+Lucien
+Lucifer
+Lucille
+Lucius
+luck
+lucked
+luckier
+luckiest
+luckily
+luckless
+lucks
+lucky
+lucrative
+Lucretia
+Lucretius
+Lucy
+ludicrous
+ludicrously
+ludicrousness
+Ludlow
+Ludmilla
+Ludwig
+Lufthansa
+Luftwaffe
+luggage
+Luis
+Luke
+lukewarm
+lull
+lullaby
+lulled
+lulls
+lumber
+lumbered
+lumbering
+luminous
+luminously
+lummox
+lump
+lumped
+lumping
+lumps
+Lumpur
+lumpy
+lunar
+lunatic
+lunch
+lunched
+luncheon
+luncheons
+lunches
+lunching
+Lund
+Lundberg
+Lundquist
+lung
+lunged
+lungs
+Lura
+lurch
+lurched
+lurches
+lurching
+lure
+lured
+lures
+luring
+lurk
+lurked
+lurking
+lurks
+Lusaka
+luscious
+lusciously
+lusciousness
+lush
+lust
+luster
+lustful
+lustily
+lustiness
+lustrous
+lusts
+lusty
+lute
+lutes
+Luther
+Lutheran
+Lutheranize
+Lutheranizer
+Lutheranizers
+Lutheranizes
+Lutz
+Luxembourg
+Luxemburg
+luxuriant
+luxuriantly
+luxuries
+luxurious
+luxuriously
+luxury
+Luzon
+L'vov
+Lydia
+lying
+Lykes
+Lyle
+Lyman
+lymph
+lynch
+Lynchburg
+lynched
+lyncher
+lynches
+Lyndon
+Lynn
+lynx
+lynxes
+Lyon
+Lyons
+Lyra
+lyre
+lyric
+lyrics
+Lysenko
+Mabel
+Mac
+Macadamia
+MacArthur
+Macarthur
+Macassar
+Macaulay
+Macaulayan
+Macaulayism
+Macaulayisms
+Macbeth
+MacDonald
+Macdonald
+MacDougall
+Macdougall
+MacDraw
+mace
+maced
+Macedon
+Macedonia
+Macedonian
+maces
+MacGregor
+Macgregor
+Mach
+Machiavelli
+Machiavellian
+machination
+machine
+machined
+machinelike
+machinery
+machines
+machining
+macho
+MacIntosh
+Macintosh
+macintosh
+MacKenzie
+Mackenzie
+mackerel
+Mackey
+Mackinac
+Mackinaw
+MacMahon
+MacMillan
+Macmillan
+Macon
+MacPaint
+macro
+macroeconomics
+macromolecule
+macromolecules
+macrophage
+macros
+macroscopic
+mad
+Madagascar
+madam
+Madame
+Madames
+madden
+maddening
+madder
+maddest
+Maddox
+made
+Madeira
+Madeleine
+Madeline
+madhouse
+Madhya
+Madison
+madly
+madman
+madmen
+madness
+Madonna
+Madonnas
+madras
+Madrid
+Madsen
+Mae
+Maelstrom
+maestro
+Mafia
+Mafiosi
+magazine
+magazines
+Magdalene
+Magellan
+Magellanic
+magenta
+Maggie
+maggot
+maggots
+magic
+magical
+magically
+magician
+magicians
+Magill
+magistrate
+magistrates
+magna
+magnesium
+magnet
+magnetic
+magnetically
+magnetism
+magnetisms
+magnetizable
+magnetized
+magneto
+magnification
+magnificence
+magnificent
+magnificently
+magnified
+magnifier
+magnifies
+magnify
+magnifying
+magnitude
+magnitudes
+magnolia
+magnum
+Magnuson
+Magog
+magpie
+Magruder
+Maguire
+Maguires
+Maharashtra
+Mahayana
+Mahayanist
+mahogany
+Mahoney
+maid
+maiden
+maidens
+maids
+Maier
+mail
+mailable
+mailbox
+mailboxes
+mailed
+mailer
+mailing
+mailings
+mailman
+mailmen
+mails
+maim
+maimed
+maiming
+maims
+main
+Maine
+mainframe
+mainframes
+mainland
+mainline
+mainly
+mains
+mainstay
+mainstream
+maintain
+maintainability
+maintainable
+maintained
+maintainer
+maintainers
+maintaining
+maintains
+maintenance
+maintenances
+maize
+majestic
+majesties
+majesty
+major
+Majorca
+majored
+majoring
+majorities
+majority
+majors
+makable
+make
+maker
+makers
+makes
+makeshift
+makeup
+makeups
+making
+makings
+Malabar
+maladies
+malady
+Malagasy
+Malamud
+malaria
+Malawi
+Malay
+Malayize
+Malayizes
+Malaysia
+Malaysian
+Malcolm
+malcontent
+Malden
+Maldive
+male
+malefactor
+malefactors
+maleness
+males
+malevolent
+malformed
+malfunction
+malfunctioned
+malfunctioning
+malfunctions
+Mali
+Malibu
+malice
+malicious
+maliciously
+maliciousness
+malign
+malignant
+malignantly
+mall
+mallard
+mallet
+mallets
+Mallory
+malnutrition
+Malone
+Maloney
+malpractice
+Malraux
+malt
+Malta
+malted
+Maltese
+Malthus
+Malthusian
+Malton
+malts
+mama
+mamma
+mammal
+mammalian
+mammals
+mammas
+mammoth
+man
+manage
+manageable
+manageableness
+managed
+management
+managements
+manager
+managerial
+managers
+manages
+managing
+Managua
+Manama
+Manchester
+Manchuria
+mandarin
+mandate
+mandated
+mandates
+mandating
+mandatory
+Mandelbrot
+mandible
+mane
+manes
+maneuver
+maneuvered
+maneuvering
+maneuvers
+Manfred
+manger
+mangers
+mangle
+mangled
+mangler
+mangles
+mangling
+Manhattan
+Manhattanize
+Manhattanizes
+manhole
+manhood
+mania
+maniac
+maniacal
+maniacs
+manic
+manicure
+manicured
+manicures
+manicuring
+manifest
+manifestation
+manifestations
+manifested
+manifesting
+manifestly
+manifests
+manifold
+manifolds
+Manila
+manipulability
+manipulable
+manipulatable
+manipulate
+manipulated
+manipulates
+manipulating
+manipulation
+manipulations
+manipulative
+manipulator
+manipulators
+manipulatory
+Manitoba
+Manitowoc
+mankind
+Mankowski
+Manley
+manly
+Mann
+manned
+manner
+mannered
+mannerly
+manners
+manning
+manometer
+manometers
+manor
+manors
+manpower
+Mans
+Mansfield
+mansion
+mansions
+manslaughter
+mantel
+mantels
+mantis
+mantissa
+mantissas
+mantle
+mantlepiece
+mantles
+manual
+manually
+manuals
+Manuel
+manufacture
+manufactured
+manufacturer
+manufacturers
+manufactures
+manufacturing
+manure
+manuscript
+manuscripts
+Manville
+many
+Mao
+Maori
+map
+maple
+Maplecrest
+maples
+mappable
+mapped
+mapping
+mappings
+maps
+marathon
+marble
+marbles
+marbling
+Marc
+Marceau
+Marcel
+Marcello
+march
+marched
+marcher
+marches
+marching
+Marcia
+Marco
+Marcotte
+Marcus
+Marcy
+Mardi
+Mardis
+mare
+mares
+Margaret
+margarine
+Margery
+margin
+marginal
+marginally
+margins
+Margo
+Marguerite
+Marianne
+Marie
+Marietta
+marigold
+marijuana
+Marilyn
+Marin
+marina
+marinade
+marinate
+marine
+mariner
+marines
+Marino
+Mario
+Marion
+marionette
+marital
+maritime
+Marjorie
+Marjory
+mark
+markable
+marked
+markedly
+marker
+markers
+market
+marketability
+marketable
+marketed
+marketing
+marketings
+marketplace
+marketplaces
+markets
+Markham
+marking
+markings
+Markism
+Markov
+Markovian
+Markovitz
+Marks
+Marlboro
+Marlborough
+Marlene
+Marlowe
+marmalade
+marmot
+maroon
+Marquette
+marquis
+marriage
+marriageable
+marriages
+married
+marries
+Marriott
+marrow
+marry
+marrying
+Mars
+Marseilles
+marsh
+Marsha
+marshal
+marshaled
+marshaling
+Marshall
+Marshalled
+Marshalling
+marshals
+marshes
+marshmallow
+mart
+marten
+Martha
+martial
+Martian
+Martians
+Martinez
+martingale
+martini
+Martinique
+Martinson
+marts
+Marty
+martyr
+martyrdom
+martyrs
+marvel
+marveled
+marvelled
+marvelling
+marvelous
+marvelously
+marvelousness
+marvels
+Marvin
+Marx
+Marxian
+Marxism
+Marxisms
+Marxist
+Mary
+Maryland
+Marylanders
+mascara
+masculine
+masculinely
+masculinity
+Maseru
+mash
+mashed
+mashes
+mashing
+mask
+maskable
+masked
+masker
+masking
+maskings
+masks
+masochist
+masochists
+mason
+Masonic
+Masonite
+masonry
+masons
+masquerade
+masquerader
+masquerades
+masquerading
+mass
+Massachusetts
+massacre
+massacred
+massacres
+massage
+massages
+massaging
+massed
+masses
+Massey
+massing
+massive
+mast
+masted
+master
+mastered
+masterful
+masterfully
+mastering
+masterings
+masterly
+mastermind
+masterpiece
+masterpieces
+masters
+mastery
+mastodon
+masts
+masturbate
+masturbated
+masturbates
+masturbating
+masturbation
+mat
+match
+matchable
+matched
+matcher
+matchers
+matches
+matching
+matchings
+matchless
+mate
+mated
+Mateo
+mater
+material
+materialist
+materialize
+materialized
+materializes
+materializing
+materially
+materials
+maternal
+maternally
+maternity
+mates
+math
+Mathematica
+mathematical
+mathematically
+mathematician
+mathematicians
+mathematics
+Mathematik
+Mathewson
+Mathias
+Mathieu
+Matilda
+mating
+matings
+Matisse
+Matisses
+matriarch
+matriarchal
+matrices
+matriculate
+matriculation
+matrimonial
+matrimony
+matrix
+matroid
+matron
+matronly
+mats
+Matson
+Matsumoto
+Matt
+matted
+matter
+mattered
+matters
+Matthew
+Matthews
+Mattie
+mattress
+mattresses
+Mattson
+maturation
+mature
+matured
+maturely
+matures
+maturing
+maturities
+maturity
+Maude
+maul
+Maureen
+Maurice
+Mauricio
+Maurine
+Mauritania
+Mauritius
+mausoleum
+maverick
+Mavis
+Mawr
+Max
+maxim
+maxima
+maximal
+maximally
+Maximilian
+maximize
+maximized
+maximizer
+maximizers
+maximizes
+maximizing
+maxims
+maximum
+maximums
+Maxine
+Maxtor
+Maxwell
+Maxwellian
+May
+Maya
+Mayans
+maybe
+Mayer
+Mayfair
+Mayflower
+mayhap
+mayhem
+Maynard
+Mayo
+mayonnaise
+mayor
+mayoral
+mayors
+Mazda
+maze
+mazes
+Mbabane
+McAdam
+McAdams
+McAllister
+McBride
+McCabe
+McCall
+McCallum
+McCann
+McCarthy
+McCarty
+McCauley
+McClain
+McClellan
+McClure
+McCluskey
+McConnel
+McConnell
+McCormick
+McCoy
+McCracken
+McCullough
+McDaniel
+McDermott
+McDonald
+McDonnell
+McDougall
+McDowell
+McElhaney
+McElroy
+McFadden
+McFarland
+McGee
+McGill
+McGinnis
+McGovern
+McGowan
+McGrath
+McGraw
+McGregor
+McGuire
+McHugh
+McIntosh
+McIntyre
+McKay
+McKee
+McKenna
+McKenzie
+McKeon
+McKesson
+McKinley
+McKinney
+McKnight
+McLanahan
+McLaughlin
+McLean
+McLeod
+McMahon
+McMartin
+McMillan
+McMullen
+McNally
+McNaughton
+McNeil
+McNulty
+McPherson
+me
+mead
+meadow
+meadows
+meager
+meagerly
+meagerness
+meal
+meals
+mealtime
+mealy
+mean
+meander
+meandered
+meandering
+meanders
+meaner
+meanest
+meaning
+meaningful
+meaningfully
+meaningfulness
+meaningless
+meaninglessly
+meaninglessness
+meanings
+meanly
+meanness
+means
+meant
+meantime
+meanwhile
+measle
+measles
+measurable
+measurably
+measure
+measured
+measurement
+measurements
+measurer
+measures
+measuring
+meat
+meats
+meaty
+Mecca
+mechanic
+mechanical
+mechanically
+mechanics
+mechanism
+mechanisms
+mechanization
+mechanizations
+mechanize
+mechanized
+mechanizes
+mechanizing
+medal
+medallion
+medallions
+medals
+meddle
+meddled
+meddler
+meddles
+meddling
+Medea
+Medfield
+Medford
+media
+median
+medians
+mediate
+mediated
+mediates
+mediating
+mediation
+mediations
+mediator
+medic
+Medicaid
+medical
+medically
+Medicare
+Medici
+medicinal
+medicinally
+medicine
+medicines
+Medicis
+medics
+medieval
+mediocre
+mediocrity
+meditate
+meditated
+meditates
+meditating
+meditation
+meditations
+meditative
+Mediterranean
+Mediterraneanization
+Mediterraneanizations
+Mediterraneanize
+Mediterraneanizes
+medium
+mediums
+medley
+Medusa
+Medusan
+meek
+meeker
+meekest
+meekly
+meekness
+meet
+meeting
+meetinghouse
+meetings
+meets
+Meg
+megabaud
+megabit
+megabits
+megabyte
+megabytes
+megahertz
+megalomania
+megaton
+megavolt
+megawatt
+megaword
+megawords
+megohm
+Meier
+Meiji
+Meister
+Meistersinger
+Mekong
+Mel
+Melampus
+melancholy
+Melanesia
+Melanesian
+Melanie
+Melbourne
+Melcher
+Melinda
+Melisande
+Melissa
+Mellon
+mellow
+mellowed
+mellowing
+mellowness
+mellows
+melodies
+melodious
+melodiously
+melodiousness
+melodrama
+melodramas
+melodramatic
+melody
+melon
+melons
+Melpomene
+melt
+melted
+melting
+meltingly
+melts
+Melville
+Melvin
+member
+members
+membership
+memberships
+membrane
+memento
+memo
+memoir
+memoirs
+memorabilia
+memorable
+memorableness
+memoranda
+memorandum
+memorial
+memorially
+memorials
+memories
+memorization
+memorize
+memorized
+memorizer
+memorizes
+memorizing
+memory
+memoryless
+memos
+Memphis
+men
+menace
+menaced
+menacing
+menagerie
+menarche
+Mencken
+mend
+mendacious
+mendacity
+mended
+Mendel
+Mendelian
+Mendelize
+Mendelizes
+Mendelssohn
+mender
+mending
+Mendoza
+mends
+Menelaus
+menial
+menials
+Menlo
+Mennonite
+Mennonites
+Menominee
+Menorca
+mens
+Mensch
+menstruate
+mensurable
+mensuration
+mental
+mentalities
+mentality
+mentally
+mention
+mentionable
+mentioned
+mentioner
+mentioners
+mentioning
+mentions
+mentor
+mentors
+menu
+menus
+Menzies
+Mephistopheles
+mercantile
+Mercator
+Mercedes
+mercenaries
+mercenariness
+mercenary
+merchandise
+merchandiser
+merchandising
+merchant
+merchants
+merciful
+mercifully
+merciless
+mercilessly
+Merck
+mercurial
+mercury
+mercy
+mere
+Meredith
+merely
+merest
+merge
+merged
+merger
+mergers
+merges
+merging
+meridian
+meringue
+merit
+merited
+meriting
+meritorious
+meritoriously
+meritoriousness
+merits
+Meriwether
+Merle
+mermaid
+Merriam
+Merrick
+merriest
+Merrill
+merrily
+Merrimac
+Merrimack
+merriment
+Merritt
+merry
+Merrymake
+Mervin
+mescaline
+mesh
+meson
+Mesopotamia
+Mesozoic
+mesquite
+mess
+message
+messages
+messed
+messenger
+messengers
+messes
+Messiah
+messiahs
+messier
+messiest
+messily
+messiness
+messing
+messy
+met
+meta
+metabolic
+metabolism
+metacircular
+metacircularity
+metal
+metalanguage
+metallic
+metallization
+metallizations
+metallurgy
+metals
+metamathematical
+metamorphosis
+metaphor
+metaphorical
+metaphorically
+metaphors
+metaphysical
+metaphysically
+metaphysics
+metavariable
+Metcalf
+mete
+meted
+meteor
+meteoric
+meteorite
+meteoritic
+meteorology
+meteors
+meter
+metering
+meters
+metes
+methane
+method
+methodical
+methodically
+methodicalness
+Methodism
+Methodist
+methodists
+methodological
+methodologically
+methodologies
+methodologists
+methodology
+methods
+Methuen
+Methuselah
+Methuselahs
+meticulously
+meting
+Metrecal
+metric
+metrical
+metrics
+metro
+metronome
+metropolis
+metropolitan
+mets
+mettle
+mettlesome
+Metzler
+mew
+mewed
+mews
+Mexican
+Mexicanize
+Mexicanizes
+Mexicans
+Mexico
+Meyer
+Meyers
+Miami
+miasma
+mica
+mice
+Michael
+Michaels
+Michel
+Michelangelo
+Michele
+Michelin
+Michelson
+Michigan
+Mick
+Mickey
+Mickie
+Micky
+micro
+microarchitects
+microarchitecture
+microarchitectures
+microbial
+microbicidal
+microbicide
+microcode
+microcoded
+microcodes
+microcoding
+microcomputer
+microcomputers
+microcosm
+microcycle
+microcycles
+microeconomics
+microelectronics
+microfilm
+microfilms
+microgramming
+microinstruction
+microinstructions
+microjump
+microjumps
+microlevel
+micron
+Micronesia
+Micronesian
+microoperations
+microphone
+microphones
+microphoning
+Microport
+microprocedure
+microprocedures
+microprocessing
+microprocessor
+microprocessors
+microprogram
+microprogrammable
+microprogrammed
+microprogrammer
+microprogramming
+microprograms
+micros
+microscope
+microscopes
+microscopic
+microscopy
+microsecond
+microseconds
+Microsoft
+microstore
+microsystems
+MicroVAX
+MicroVAXes
+microwave
+microwaves
+microword
+microwords
+mid
+Midas
+midday
+middle
+Middlebury
+middleman
+middlemen
+middles
+Middlesex
+Middleton
+Middletown
+middling
+midget
+Midlandize
+Midlandizes
+midnight
+midnights
+midpoint
+midpoints
+midrange
+midscale
+midsection
+midshipman
+midshipmen
+midst
+midstream
+midsts
+midsummer
+midway
+midweek
+Midwest
+Midwestern
+Midwesterner
+Midwesterners
+midwife
+midwinter
+midwives
+mien
+might
+mightier
+mightiest
+mightily
+mightiness
+mighty
+migrant
+migrate
+migrated
+migrates
+migrating
+migration
+migrations
+migratory
+Miguel
+mike
+Mikhail
+Mikoyan
+Milan
+mild
+milder
+mildest
+mildew
+mildly
+mildness
+Mildred
+mile
+mileage
+Miles
+milestone
+milestones
+militant
+militantly
+militarily
+militarism
+military
+militia
+milk
+milked
+milker
+milkers
+milkiness
+milking
+milkmaid
+milkmaids
+milks
+milky
+mill
+Millard
+milled
+millennium
+miller
+millet
+milliammeter
+milliampere
+Millie
+millijoule
+Millikan
+millimeter
+millimeters
+millinery
+milling
+Millington
+million
+millionaire
+millionaires
+millions
+millionth
+millipede
+millipedes
+millisecond
+milliseconds
+millivolt
+millivoltmeter
+milliwatt
+Mills
+millstone
+millstones
+Milne
+Milquetoast
+Milquetoasts
+Milton
+Miltonian
+Miltonic
+Miltonism
+Miltonist
+Miltonize
+Miltonized
+Miltonizes
+Miltonizing
+Milwaukee
+mimeograph
+Mimi
+mimic
+mimicked
+mimicking
+mimics
+minaret
+mince
+minced
+mincemeat
+minces
+mincing
+mind
+Mindanao
+minded
+mindful
+mindfully
+mindfulness
+minding
+mindless
+mindlessly
+minds
+mine
+mined
+minefield
+miner
+mineral
+minerals
+miners
+Minerva
+mines
+minesweeper
+mingle
+mingled
+mingles
+mingling
+mini
+miniature
+miniatures
+miniaturization
+miniaturize
+miniaturized
+miniaturizes
+miniaturizing
+minicomputer
+minicomputers
+minima
+minimal
+minimally
+minimax
+minimization
+minimizations
+minimize
+minimized
+minimizer
+minimizers
+minimizes
+minimizing
+minimum
+mining
+minion
+minis
+minister
+ministered
+ministering
+ministers
+ministries
+ministry
+mink
+minks
+Minneapolis
+Minnesota
+Minnie
+minnow
+minnows
+Minoan
+minor
+minoring
+minorities
+minority
+minors
+Minos
+Minotaur
+Minsk
+Minsky
+minstrel
+minstrels
+mint
+minted
+minter
+minting
+mints
+minuend
+minuet
+minus
+minuscule
+minute
+minutely
+minuteman
+minutemen
+minuteness
+minuter
+minutes
+Miocene
+MIPS
+Mira
+miracle
+miracles
+miraculous
+miraculously
+mirage
+Miranda
+mire
+mired
+mires
+Mirfak
+Miriam
+mirror
+mirrored
+mirroring
+mirrors
+mirth
+misanthrope
+misbehaving
+miscalculation
+miscalculations
+miscarriage
+miscarry
+miscegenation
+miscellaneous
+miscellaneously
+miscellaneousness
+mischief
+mischievous
+mischievously
+mischievousness
+misconception
+misconceptions
+misconduct
+misconstrue
+misconstrued
+misconstrues
+misdemeanors
+miser
+miserable
+miserableness
+miserably
+miseries
+miserly
+misers
+misery
+misfit
+misfits
+misfortune
+misfortunes
+misgiving
+misgivings
+misguided
+mishap
+mishaps
+misinformed
+misjudged
+misjudgment
+mislead
+misleading
+misleads
+misled
+mismanagement
+mismatch
+mismatched
+mismatches
+mismatching
+misnomer
+misplace
+misplaced
+misplaces
+misplacing
+mispronunciation
+misrepresentation
+misrepresentations
+miss
+missed
+misses
+misshapen
+missile
+missiles
+missing
+mission
+missionaries
+missionary
+missioner
+missions
+Mississippi
+Mississippian
+Mississippians
+missive
+Missoula
+Missouri
+misspell
+misspelled
+misspelling
+misspellings
+misspells
+Missy
+mist
+mistakable
+mistake
+mistaken
+mistakenly
+mistakes
+mistaking
+misted
+mister
+misters
+mistiness
+misting
+mistletoe
+mistress
+mistrust
+mistrusted
+mists
+misty
+mistype
+mistyped
+mistypes
+mistyping
+misunderstand
+misunderstander
+misunderstanders
+misunderstanding
+misunderstandings
+misunderstood
+misuse
+misused
+misuses
+misusing
+Mitch
+Mitchell
+miter
+mitigate
+mitigated
+mitigates
+mitigating
+mitigation
+mitigative
+MITRE
+MITREs
+mitten
+mittens
+mix
+mixed
+mixer
+mixers
+mixes
+mixing
+mixture
+mixtures
+mixup
+Mizar
+mnemonic
+mnemonically
+mnemonics
+moan
+moaned
+moans
+moat
+moats
+mob
+Mobil
+mobile
+mobility
+mobs
+mobster
+moccasin
+moccasins
+mock
+mocked
+mocker
+mockery
+mocking
+mockingbird
+mocks
+mockup
+modal
+modalities
+modality
+modally
+mode
+model
+modeled
+modeling
+modelings
+models
+modem
+modems
+moderate
+moderated
+moderately
+moderateness
+moderates
+moderating
+moderation
+modern
+modernity
+modernize
+modernized
+modernizer
+modernizing
+modernly
+modernness
+moderns
+modes
+modest
+modestly
+Modesto
+modesty
+modicum
+modifiability
+modifiable
+modification
+modifications
+modified
+modifier
+modifiers
+modifies
+modify
+modifying
+Modula
+Modula-2
+Modula-3
+modular
+modularity
+modularization
+modularize
+modularized
+modularizes
+modularizing
+modularly
+modulate
+modulated
+modulates
+modulating
+modulation
+modulations
+modulator
+modulators
+module
+modules
+moduli
+modulo
+modulus
+modus
+Moe
+Moen
+Mogadiscio
+Mogadishu
+Moghul
+Mohammed
+Mohammedan
+Mohammedanism
+Mohammedanization
+Mohammedanizations
+Mohammedanize
+Mohammedanizes
+Mohawk
+Mohr
+Moines
+Moiseyev
+moist
+moisten
+moistly
+moistness
+moisture
+molar
+molasses
+mold
+Moldavia
+molded
+molder
+molding
+molds
+mole
+molecular
+molecule
+molecules
+molehill
+moles
+molest
+molested
+molesting
+molests
+Moliere
+Moline
+Moll
+Mollie
+mollify
+mollusk
+Molly
+mollycoddle
+Moloch
+Molochize
+Molochizes
+Molotov
+molten
+Moluccas
+moment
+momentarily
+momentariness
+momentary
+momentous
+momentously
+momentousness
+moments
+momentum
+mommy
+Mona
+Monaco
+monadic
+monarch
+monarchies
+monarchs
+monarchy
+Monash
+monasteries
+monastery
+monastic
+Monday
+Mondays
+Monet
+monetarism
+monetary
+money
+moneyed
+moneys
+Monfort
+Mongolia
+Mongolian
+Mongolianism
+mongoose
+Monica
+monitor
+monitored
+monitoring
+monitors
+monk
+monkey
+monkeyed
+monkeying
+monkeys
+monkish
+monks
+Monmouth
+monoalphabetic
+Monoceros
+monochromatic
+monochrome
+monocotyledon
+monocular
+monogamous
+monogamy
+monogram
+monograms
+monograph
+monographes
+monographs
+monolith
+monolithic
+monologue
+Monongahela
+monopolies
+monopolize
+monopolized
+monopolizing
+monopoly
+monoprogrammed
+monoprogramming
+monostable
+monotheism
+monotone
+monotonic
+monotonically
+monotonicity
+monotonous
+monotonously
+monotonousness
+monotony
+Monroe
+Monrovia
+Monsanto
+monsoon
+monster
+monsters
+monstrosity
+monstrous
+monstrously
+Mont
+Montague
+Montaigne
+Montana
+Montanan
+Montclair
+Montenegrin
+Montenegro
+Monterey
+Monteverdi
+Montevideo
+Montgomery
+month
+monthly
+months
+Monticello
+Montmartre
+Montpelier
+Montrachet
+Montreal
+Monty
+monument
+monumental
+monumentally
+monuments
+moo
+mood
+moodiness
+moods
+moody
+Moon
+mooned
+Mooney
+mooning
+moonlight
+moonlighter
+moonlighting
+Moonlike
+moonlit
+moons
+moonshine
+Moor
+Moore
+moored
+mooring
+moorings
+Moorish
+Moors
+moose
+moot
+mop
+moped
+mops
+moraine
+moral
+morale
+moralities
+morality
+morally
+morals
+Moran
+morass
+moratorium
+Moravia
+Moravian
+Moravianized
+Moravianizeds
+morbid
+morbidly
+morbidness
+more
+Morehouse
+Moreland
+moreover
+mores
+Moresby
+Morgan
+Moriarty
+moribund
+Morley
+Mormon
+morn
+morning
+mornings
+Moroccan
+Morocco
+moron
+morose
+morphine
+morphism
+morphisms
+morphological
+morphology
+Morrill
+Morris
+Morrison
+Morrissey
+Morristown
+morrow
+Morse
+morsel
+morsels
+mortal
+mortality
+mortally
+mortals
+mortar
+mortared
+mortaring
+mortars
+mortem
+mortgage
+mortgages
+mortician
+mortification
+mortified
+mortifies
+mortify
+mortifying
+Mortimer
+Morton
+mosaic
+mosaics
+Moscone
+Moscow
+Moser
+Moses
+Moslem
+Moslemize
+Moslemizes
+Moslems
+mosque
+mosquito
+mosquitoes
+moss
+Mossberg
+mosses
+mossy
+most
+mostly
+motel
+motels
+moth
+mothball
+mothballs
+mother
+mothered
+motherer
+motherers
+motherhood
+mothering
+motherland
+motherly
+mothers
+motif
+motifs
+motion
+motioned
+motioning
+motionless
+motionlessly
+motionlessness
+motions
+motivate
+motivated
+motivates
+motivating
+motivation
+motivations
+motive
+motives
+motley
+motor
+motorcar
+motorcars
+motorcycle
+motorcycles
+motoring
+motorist
+motorists
+motorize
+motorized
+motorizes
+motorizing
+Motorola
+motors
+motto
+mottoes
+mould
+moulding
+Moulton
+mound
+mounded
+mounds
+mount
+mountable
+mountain
+mountaineer
+mountaineering
+mountaineers
+mountainous
+mountainously
+mountains
+mounted
+mounter
+mounting
+mountings
+mounts
+mourn
+mourned
+mourner
+mourners
+mournful
+mournfully
+mournfulness
+mourning
+mourns
+mouse
+mouser
+mouses
+mousetrap
+mousy
+mouth
+Mouthe
+mouthed
+mouthes
+mouthful
+mouthing
+mouthpiece
+mouths
+Mouton
+movable
+move
+moved
+movement
+movements
+mover
+movers
+moves
+movie
+movies
+moving
+movings
+mow
+mowed
+mower
+mows
+Moyer
+Mozart
+mu
+much
+muck
+mucker
+mucking
+mucus
+mud
+Mudd
+muddied
+muddiness
+muddle
+muddled
+muddlehead
+muddler
+muddlers
+muddles
+muddling
+muddy
+Mueller
+Muenster
+muff
+muffin
+muffins
+muffle
+muffled
+muffler
+muffles
+muffling
+muffs
+mug
+mugging
+mugs
+Muhammad
+Muir
+Mukden
+mulatto
+mulberries
+mulberry
+mule
+mules
+mull
+mullah
+Mullen
+multi
+multibit
+Multibus
+multibyte
+multicast
+multicasting
+multicasts
+multicellular
+multicomputer
+MULTICS
+Multics
+multidimensional
+multilateral
+multilayer
+multilayered
+multilevel
+multimedia
+multinational
+multiple
+multiples
+multiplex
+multiplexed
+multiplexer
+multiplexers
+multiplexes
+multiplexing
+multiplexor
+multiplexors
+multiplicand
+multiplicands
+multiplication
+multiplications
+multiplicative
+multiplicatives
+multiplicity
+multiplied
+multiplier
+multipliers
+multiplies
+multiply
+multiplying
+multiprocess
+multiprocessing
+multiprocessor
+multiprocessors
+multiprogram
+multiprogrammed
+multiprogramming
+multistage
+multitude
+multitudes
+multiuser
+multivariate
+multiword
+mumble
+mumbled
+mumbler
+mumblers
+mumbles
+mumbling
+mumblings
+Mumford
+mummies
+mummy
+munch
+munched
+munching
+Muncie
+mundane
+mundanely
+Mundt
+mung
+Munich
+municipal
+municipalities
+municipality
+municipally
+munition
+munitions
+Munroe
+Munsey
+Munson
+Muong
+mural
+murder
+murdered
+murderer
+murderers
+murdering
+murderous
+murderously
+murders
+Muriel
+murky
+murmur
+murmured
+murmurer
+murmuring
+murmurs
+Murphy
+Murray
+Murrow
+Muscat
+muscle
+muscled
+muscles
+muscling
+Muscovite
+Muscovy
+muscular
+musculature
+muse
+mused
+muses
+museum
+museums
+mush
+mushroom
+mushroomed
+mushrooming
+mushrooms
+mushy
+music
+musical
+musically
+musicals
+musician
+musicianly
+musicians
+musicology
+musing
+musings
+musk
+Muskegon
+musket
+muskets
+muskox
+muskoxen
+muskrat
+muskrats
+musks
+Muslim
+Muslims
+muslin
+mussel
+mussels
+Mussolini
+Mussolinis
+Mussorgsky
+must
+mustache
+mustached
+mustaches
+mustard
+muster
+mustiness
+musts
+musty
+mutability
+mutable
+mutableness
+mutandis
+mutant
+mutate
+mutated
+mutates
+mutating
+mutation
+mutations
+mutatis
+mutative
+mute
+muted
+mutely
+muteness
+mutilate
+mutilated
+mutilates
+mutilating
+mutilation
+mutinies
+mutiny
+mutt
+mutter
+muttered
+mutterer
+mutterers
+muttering
+mutters
+mutton
+mutual
+mutually
+Muzak
+Muzo
+muzzle
+muzzles
+my
+Mycenae
+Mycenaean
+Myers
+Mynheer
+Myra
+myriad
+Myron
+myrtle
+myself
+Mysore
+mysteries
+mysterious
+mysteriously
+mysteriousness
+mystery
+mystic
+mystical
+mystics
+mystify
+myth
+mythical
+mythologies
+mythology
+nab
+Nabisco
+nabla
+nablas
+Nadia
+Nadine
+nadir
+nag
+Nagasaki
+nagged
+nagging
+Nagoya
+nags
+Nagy
+nail
+nailed
+nailing
+nails
+Nair
+Nairobi
+naive
+naively
+naiveness
+naivete
+Nakamura
+Nakayama
+naked
+nakedly
+nakedness
+Nakoma
+name
+nameable
+named
+nameless
+namelessly
+namely
+namer
+namers
+names
+namesake
+namesakes
+naming
+Nan
+Nancy
+Nanette
+Nanking
+nanoinstruction
+nanoinstructions
+Nanook
+nanoprogram
+nanoprogramming
+nanosecond
+nanoseconds
+nanostore
+nanostores
+Nantucket
+Naomi
+nap
+napkin
+napkins
+Naples
+Napoleon
+Napoleonic
+Napoleonize
+Napoleonizes
+naps
+Narbonne
+narcissus
+narcotic
+narcotics
+Narragansett
+narrate
+narration
+narrative
+narratives
+narrow
+narrowed
+narrower
+narrowest
+narrowing
+narrowly
+narrowness
+narrows
+nary
+NASA
+nasal
+nasally
+NASAs
+Nash
+Nashua
+Nashville
+Nassau
+nastier
+nastiest
+nastily
+nastiness
+nasty
+Nat
+natal
+Natalie
+Natchez
+Nate
+Nathan
+Nathaniel
+nation
+national
+nationalist
+nationalists
+nationalities
+nationality
+nationalization
+nationalize
+nationalized
+nationalizes
+nationalizing
+nationally
+nationals
+nationhood
+nations
+nationwide
+native
+natively
+natives
+nativity
+NATO
+NATOs
+natural
+naturalism
+naturalist
+naturalization
+naturally
+naturalness
+naturals
+nature
+natured
+natures
+naught
+naughtier
+naughtiness
+naughty
+Naur
+nausea
+nauseate
+nauseum
+Navaho
+Navajo
+naval
+navally
+navel
+navies
+navigable
+navigate
+navigated
+navigates
+navigating
+navigation
+navigator
+navigators
+Navona
+navy
+nay
+Nazarene
+Nazareth
+Nazi
+Nazis
+Nazism
+Ndjamena
+Neal
+Neanderthal
+Neapolitan
+near
+nearby
+neared
+nearer
+nearest
+nearing
+nearly
+nearness
+nears
+nearsighted
+neat
+neater
+neatest
+neatly
+neatness
+Nebraska
+Nebraskan
+Nebuchadnezzar
+nebula
+nebular
+nebulous
+necessaries
+necessarily
+necessary
+necessitate
+necessitated
+necessitates
+necessitating
+necessitation
+necessities
+necessity
+neck
+necking
+necklace
+necklaces
+neckline
+necks
+necktie
+neckties
+necrosis
+nectar
+Ned
+need
+needed
+needful
+Needham
+needing
+needle
+needled
+needler
+needlers
+needles
+needless
+needlessly
+needlessness
+needlework
+needling
+needs
+needy
+Neff
+negate
+negated
+negates
+negating
+negation
+negations
+negative
+negatively
+negatives
+negator
+negators
+neglect
+neglected
+neglecting
+neglects
+negligee
+negligence
+negligent
+negligible
+negotiable
+negotiate
+negotiated
+negotiates
+negotiating
+negotiation
+negotiations
+Negro
+Negroes
+Negroid
+Negroization
+Negroizations
+Negroize
+Negroizes
+Nehru
+neigh
+neighbor
+neighborhood
+neighborhoods
+neighboring
+neighborly
+neighbors
+Neil
+neither
+Nell
+Nellie
+Nelsen
+Nelson
+nemesis
+neoclassic
+neon
+neonatal
+neophyte
+neophytes
+Nepal
+Nepali
+nephew
+nephews
+Neptune
+Nero
+nerve
+nerves
+nervous
+nervously
+nervousness
+Ness
+nest
+nested
+nester
+nesting
+nestle
+nestled
+nestles
+nestling
+Nestor
+nests
+net
+nether
+Netherlands
+nets
+netted
+netting
+nettle
+nettled
+network
+networked
+networking
+networks
+Neumann
+neural
+neuritis
+neurological
+neurologists
+neuron
+neurons
+neuroses
+neurosis
+neurotic
+neuter
+neutral
+neutralities
+neutrality
+neutralize
+neutralized
+neutralizing
+neutrally
+neutrino
+neutrinos
+neutron
+Neva
+Nevada
+never
+nevertheless
+Nevins
+new
+Newark
+Newbold
+newborn
+Newbury
+Newburyport
+Newcastle
+newcomer
+newcomers
+Newell
+newer
+newest
+Newfoundland
+newly
+newlywed
+Newman
+Newmanize
+Newmanizes
+newness
+Newport
+NeWS
+newscast
+newsgroup
+newsletter
+newsletters
+newsman
+newsmen
+newspaper
+newspapers
+newsstand
+Newsweek
+Newsweekly
+newt
+Newton
+Newtonian
+next
+Nguyen
+Niagara
+Niamey
+nibble
+nibbled
+nibbler
+nibblers
+nibbles
+nibbling
+Nibelung
+Nicaragua
+Niccolo
+nice
+nicely
+niceness
+nicer
+nicest
+niche
+Nicholas
+Nicholls
+Nichols
+Nicholson
+nick
+nicked
+nickel
+nickels
+nicker
+nicking
+Nicklaus
+nickname
+nicknamed
+nicknames
+nicks
+Nicodemus
+Nicosia
+nicotine
+niece
+nieces
+Nielsen
+Nielson
+Nietzsche
+nifty
+Niger
+Nigeria
+Nigerian
+nigh
+night
+nightcap
+nightclub
+nightfall
+nightgown
+nightingale
+nightingales
+nightly
+nightmare
+nightmares
+nightmarish
+nights
+nighttime
+nihilism
+Nijinsky
+Nikko
+Nikolai
+nil
+Nile
+Nilsen
+Nilsson
+nimble
+nimbleness
+nimbler
+nimbly
+nimbus
+Nina
+nine
+ninefold
+nines
+nineteen
+nineteens
+nineteenth
+nineties
+ninetieth
+ninety
+Nineveh
+ninth
+Niobe
+nip
+nipple
+Nippon
+Nipponize
+Nipponizes
+nips
+nitric
+nitrogen
+nitrous
+nitty
+Nixon
+no
+Noah
+Nobel
+nobility
+noble
+nobleman
+nobleness
+nobler
+nobles
+noblest
+nobly
+nobody
+nocturnal
+nocturnally
+nod
+nodal
+nodded
+nodding
+node
+nodes
+nods
+nodular
+nodule
+Noel
+Noetherian
+noise
+noiseless
+noiselessly
+noises
+noisier
+noisily
+noisiness
+noisy
+Nolan
+Noll
+nomenclature
+nominal
+nominally
+nominate
+nominated
+nominating
+nomination
+nominative
+nominee
+non
+nonadaptive
+nonbiodegradable
+nonblocking
+nonce
+nonchalant
+noncommercial
+noncommunication
+nonconsecutively
+nonconservative
+noncritical
+noncyclic
+nondecreasing
+nondescript
+nondescriptly
+nondestructively
+nondeterminacy
+nondeterminate
+nondeterminately
+nondeterminism
+nondeterministic
+nondeterministically
+none
+nonempty
+nonetheless
+nonexistence
+nonexistent
+nonextensible
+nonfunctional
+nongovernmental
+nonidempotent
+noninteracting
+noninterference
+noninterleaved
+nonintrusive
+nonintuitive
+noninverting
+nonlinear
+nonlinearities
+nonlinearity
+nonlinearly
+nonlocal
+nonmaskable
+nonmathematical
+nonmilitary
+nonnegative
+nonnegligible
+nonnumerical
+nonogenarian
+nonorthogonal
+nonorthogonality
+nonperishable
+nonpersistent
+nonportable
+nonprocedural
+nonprocedurally
+nonprofit
+nonprogrammable
+nonprogrammer
+nonsegmented
+nonsense
+nonsensical
+nonsequential
+nonspecialist
+nonspecialists
+nonstandard
+nonsynchronous
+nontechnical
+nonterminal
+nonterminals
+nonterminating
+nontermination
+nonthermal
+nontransparent
+nontrivial
+nonuniform
+nonuniformity
+nonzero
+noodle
+nook
+nooks
+noon
+noonday
+noons
+noontide
+noontime
+noose
+nor
+Nora
+Nordhoff
+Nordic
+Nordstrom
+Noreen
+Norfolk
+norm
+Norma
+normal
+normalcy
+normality
+normalization
+normalize
+normalized
+normalizes
+normalizing
+normally
+normals
+Norman
+Normandy
+Normanization
+Normanizations
+Normanize
+Normanizer
+Normanizers
+Normanizes
+normative
+norms
+Norris
+Norristown
+Norse
+north
+Northampton
+northbound
+northeast
+northeaster
+northeastern
+northerly
+northern
+northerner
+northerners
+northernly
+Northfield
+Northrop
+Northrup
+Northumberland
+northward
+northwards
+northwest
+northwestern
+Norton
+Norwalk
+Norway
+Norwegian
+Norwich
+nose
+nosed
+noses
+nosing
+nostalgia
+nostalgic
+Nostradamus
+Nostrand
+nostril
+nostrils
+not
+notable
+notables
+notably
+notarize
+notarized
+notarizes
+notarizing
+notary
+notation
+notational
+notations
+notch
+notched
+notches
+notching
+note
+notebook
+notebooks
+noted
+notes
+noteworthy
+nothing
+nothingness
+nothings
+notice
+noticeable
+noticeably
+noticed
+notices
+noticing
+notification
+notifications
+notified
+notifier
+notifiers
+notifies
+notify
+notifying
+noting
+notion
+notions
+notoriety
+notorious
+notoriously
+Notre
+Nottingham
+notwithstanding
+Nouakchott
+noun
+nouns
+nourish
+nourished
+nourishes
+nourishing
+nourishment
+Novak
+novel
+novelist
+novelists
+novels
+novelties
+novelty
+November
+Novembers
+novice
+novices
+Novosibirsk
+now
+nowadays
+nowhere
+noxious
+Noyes
+nozzle
+nu
+nuance
+nuances
+Nubia
+Nubian
+nubile
+nuclear
+nuclei
+nucleic
+nucleotide
+nucleotides
+nucleus
+nuclide
+nude
+nudge
+nudged
+nudity
+Nugent
+nugget
+nuisance
+nuisances
+null
+nullary
+nulled
+nullified
+nullifiers
+nullifies
+nullify
+nullifying
+nulls
+numb
+numbed
+number
+numbered
+numberer
+numbering
+numberless
+numbers
+numbing
+numbly
+numbness
+numbs
+numerable
+numeral
+numerals
+numerator
+numerators
+numeric
+numerical
+numerically
+numerics
+numerous
+numismatic
+numismatist
+nun
+nuns
+nuptial
+nurse
+nursed
+nurseries
+nursery
+nurses
+nursing
+nurture
+nurtured
+nurtures
+nurturing
+nut
+nutate
+nutria
+nutrient
+nutrition
+nutritious
+nuts
+nutshell
+nutshells
+nuzzle
+nylon
+nymph
+nymphomania
+nymphomaniac
+nymphs
+Nyquist
+oaf
+oak
+oaken
+Oakland
+Oakley
+Oakmont
+oaks
+oar
+oars
+oases
+oasis
+oat
+oaten
+oath
+oaths
+oatmeal
+oats
+obedience
+obediences
+obedient
+obediently
+obelisk
+Oberlin
+Oberon
+obese
+obey
+obeyed
+obeying
+obeys
+obfuscate
+obfuscatory
+obituary
+object
+objected
+objecting
+objection
+objectionable
+objections
+objective
+objectively
+objectives
+objector
+objectors
+objects
+obligated
+obligation
+obligations
+obligatory
+oblige
+obliged
+obliges
+obliging
+obligingly
+oblique
+obliquely
+obliqueness
+obliterate
+obliterated
+obliterates
+obliterating
+obliteration
+oblivion
+oblivious
+obliviously
+obliviousness
+oblong
+obnoxious
+oboe
+O'Brien
+obscene
+obscure
+obscured
+obscurely
+obscurer
+obscures
+obscuring
+obscurities
+obscurity
+obsequious
+observable
+observance
+observances
+observant
+observation
+observations
+observatory
+observe
+observed
+observer
+observers
+observes
+observing
+obsession
+obsessions
+obsessive
+obsolescence
+obsolescent
+obsolete
+obsoleted
+obsoletes
+obsoleting
+obstacle
+obstacles
+obstinacy
+obstinate
+obstinately
+obstruct
+obstructed
+obstructing
+obstruction
+obstructions
+obstructive
+obtain
+obtainable
+obtainably
+obtained
+obtaining
+obtains
+obviate
+obviated
+obviates
+obviating
+obviation
+obviations
+obvious
+obviously
+obviousness
+Occam
+occasion
+occasional
+occasionally
+occasioned
+occasioning
+occasionings
+occasions
+Occident
+Occidental
+Occidentalization
+Occidentalizations
+Occidentalize
+Occidentalized
+Occidentalizes
+Occidentalizing
+Occidentals
+occipital
+occlude
+occluded
+occludes
+occlusion
+occlusions
+occult
+occupancies
+occupancy
+occupant
+occupants
+occupation
+occupational
+occupationally
+occupations
+occupied
+occupier
+occupies
+occupy
+occupying
+occur
+occurred
+occurrence
+occurrences
+occurring
+occurs
+ocean
+Oceania
+oceanic
+oceanography
+oceans
+O'Connell
+O'Connor
+Oconomowoc
+octagon
+octagonal
+octahedra
+octahedral
+octahedron
+octal
+octane
+octave
+octaves
+Octavia
+octet
+octets
+October
+Octobers
+octogenarian
+octopus
+odd
+odder
+oddest
+oddities
+oddity
+oddly
+oddness
+odds
+ode
+O'Dell
+Oderberg
+Oderbergs
+odes
+Odessa
+Odin
+odious
+odiously
+odiousness
+odium
+O'Donnell
+odor
+odorous
+odorously
+odorousness
+odors
+O'Dwyer
+Odysseus
+Odyssey
+Oedipal
+Oedipally
+Oedipus
+of
+off
+Offenbach
+offend
+offended
+offender
+offenders
+offending
+offends
+offense
+offenses
+offensive
+offensively
+offensiveness
+offer
+offered
+offerer
+offerers
+offering
+offerings
+offers
+offhand
+office
+officemate
+officer
+officers
+offices
+official
+officialdom
+officially
+officials
+officiate
+officio
+officious
+officiously
+officiousness
+offing
+offload
+offs
+offset
+offsets
+offsetting
+offshore
+offspring
+oft
+often
+oftentimes
+Ogden
+oh
+O'Hare
+Ohio
+ohm
+ohmmeter
+oil
+oilcloth
+oiled
+oiler
+oilers
+oilier
+oiliest
+oiling
+oils
+oily
+ointment
+Ojibwa
+Okamoto
+okay
+Okinawa
+Oklahoma
+Oklahoman
+Olaf
+Olav
+old
+olden
+Oldenburg
+older
+oldest
+oldness
+Oldsmobile
+Olduvai
+oldy
+oleander
+O'Leary
+Oleg
+oleomargarine
+Olga
+oligarchy
+Oligocene
+Olin
+olive
+Oliver
+Olivers
+olives
+Olivetti
+Olivia
+Olivier
+Olsen
+Olson
+Olympia
+Olympian
+Olympianize
+Olympianizes
+Olympic
+Olympics
+Olympus
+Omaha
+Oman
+omega
+omelet
+omen
+omens
+omicron
+ominous
+ominously
+ominousness
+omission
+omissions
+omit
+omits
+omitted
+omitting
+omnibus
+omnidirectional
+omnipotent
+omnipresent
+omniscient
+omnisciently
+omnivore
+on
+onanism
+once
+oncology
+one
+Oneida
+O'Neill
+oneness
+onerous
+ones
+oneself
+onetime
+ongoing
+onion
+onions
+online
+onlooker
+only
+Onondaga
+onrush
+onset
+onsets
+onslaught
+Ontario
+onto
+ontology
+onus
+onward
+onwards
+onyx
+ooze
+oozed
+opacity
+opal
+opals
+opaque
+opaquely
+opaqueness
+opcode
+OPEC
+Opel
+open
+opened
+opener
+openers
+opening
+openings
+openly
+openness
+opens
+opera
+operable
+operand
+operandi
+operands
+operas
+operate
+operated
+operates
+operating
+operation
+operational
+operationally
+operations
+operative
+operatives
+operator
+operators
+operetta
+Ophiuchus
+Ophiucus
+opiate
+opinion
+opinions
+opium
+opossum
+Oppenheimer
+opponent
+opponents
+opportune
+opportunely
+opportunism
+opportunistic
+opportunities
+opportunity
+opposable
+oppose
+opposed
+opposes
+opposing
+opposite
+oppositely
+oppositeness
+opposites
+opposition
+oppress
+oppressed
+oppresses
+oppressing
+oppression
+oppressive
+oppressor
+oppressors
+opprobrium
+opt
+opted
+opthalmic
+optic
+optical
+optically
+optics
+optima
+optimal
+optimality
+optimally
+optimism
+optimist
+optimistic
+optimistically
+optimization
+optimizations
+optimize
+optimized
+optimizer
+optimizers
+optimizes
+optimizing
+optimum
+opting
+option
+optional
+optionally
+options
+optoacoustic
+optometrist
+optometry
+opts
+opulence
+opulent
+opus
+or
+oracle
+oracles
+oral
+orally
+orange
+oranges
+orangutan
+oration
+orations
+orator
+oratories
+orators
+oratory
+orb
+orbit
+orbital
+orbitally
+orbited
+orbiter
+orbiters
+orbiting
+orbits
+orchard
+orchards
+orchestra
+orchestral
+orchestras
+orchestrate
+orchid
+orchids
+ordain
+ordained
+ordaining
+ordains
+ordeal
+order
+ordered
+ordering
+orderings
+orderlies
+orderly
+orders
+ordinal
+ordinance
+ordinances
+ordinarily
+ordinariness
+ordinary
+ordinate
+ordinates
+ordination
+ore
+oregano
+Oregon
+Oregonians
+ores
+Oresteia
+Orestes
+organ
+organic
+organism
+organisms
+organist
+organists
+organizable
+organization
+organizational
+organizationally
+organizations
+organize
+organized
+organizer
+organizers
+organizes
+organizing
+organs
+orgasm
+orgiastic
+orgies
+orgy
+Orient
+Oriental
+Orientalization
+Orientalizations
+Orientalize
+Orientalized
+Orientalizes
+Orientalizing
+Orientals
+orientation
+orientations
+oriented
+orienting
+orients
+orifice
+orifices
+origin
+original
+originality
+originally
+originals
+originate
+originated
+originates
+originating
+origination
+originator
+originators
+origins
+Orin
+Orinoco
+oriole
+Orion
+Orkney
+Orlando
+Orleans
+Orlick
+Orly
+ornament
+ornamental
+ornamentally
+ornamentation
+ornamented
+ornamenting
+ornaments
+ornate
+ornery
+Orono
+orphan
+orphanage
+orphaned
+orphans
+Orpheus
+Orphic
+Orphically
+Orr
+Ortega
+orthant
+orthodontist
+orthodox
+orthodoxy
+orthogonal
+orthogonality
+orthogonally
+orthopedic
+Orville
+Orwell
+Orwellian
+Osaka
+Osbert
+Osborn
+Osborne
+Oscar
+oscillate
+oscillated
+oscillates
+oscillating
+oscillation
+oscillations
+oscillator
+oscillators
+oscillatory
+oscilloscope
+oscilloscopes
+Osgood
+O'Shea
+Oshkosh
+Osiris
+Oslo
+osmosis
+osmotic
+ossify
+ostensible
+ostensibly
+ostentatious
+osteopath
+osteopathic
+osteopathy
+osteoporosis
+ostracism
+Ostrander
+ostrich
+ostriches
+O'Sullivan
+Oswald
+Othello
+other
+others
+otherwise
+otherworldly
+Otis
+Ott
+Ottawa
+otter
+otters
+Otto
+Ottoman
+Ottomanization
+Ottomanizations
+Ottomanize
+Ottomanizes
+Ouagadougou
+ouch
+ought
+ounce
+ounces
+our
+ours
+ourself
+ourselves
+oust
+out
+outbound
+outbreak
+outbreaks
+outburst
+outbursts
+outcast
+outcasts
+outcome
+outcomes
+outcries
+outcry
+outdated
+outdo
+outdoor
+outdoors
+outer
+outermost
+outfit
+outfits
+outfitted
+outgoing
+outgrew
+outgrow
+outgrowing
+outgrown
+outgrows
+outgrowth
+outing
+outlandish
+outlast
+outlasts
+outlaw
+outlawed
+outlawing
+outlaws
+outlay
+outlays
+outlet
+outlets
+outline
+outlined
+outlines
+outlining
+outlive
+outlived
+outlives
+outliving
+outlook
+outlying
+outnumbered
+outperform
+outperformed
+outperforming
+outperforms
+outpost
+outposts
+output
+outputs
+outputting
+outrage
+outraged
+outrageous
+outrageously
+outrages
+outright
+outrun
+outruns
+outs
+outset
+outside
+outsider
+outsiders
+outskirts
+outstanding
+outstandingly
+outstretched
+outstrip
+outstripped
+outstripping
+outstrips
+outvote
+outvoted
+outvotes
+outvoting
+outward
+outwardly
+outweigh
+outweighed
+outweighing
+outweighs
+outwit
+outwits
+outwitted
+outwitting
+oval
+ovals
+ovaries
+ovary
+oven
+ovens
+over
+overall
+overalls
+overboard
+overcame
+overcoat
+overcoats
+overcome
+overcomes
+overcoming
+overcrowd
+overcrowded
+overcrowding
+overcrowds
+overdone
+overdose
+overdraft
+overdrafts
+overdue
+overemphasis
+overemphasized
+overestimate
+overestimated
+overestimates
+overestimating
+overestimation
+overflow
+overflowed
+overflowing
+overflows
+overgrown
+overhang
+overhanging
+overhangs
+overhaul
+overhauling
+overhead
+overheads
+overhear
+overheard
+overhearing
+overhears
+overjoy
+overjoyed
+overkill
+overland
+overlap
+overlapped
+overlapping
+overlaps
+overlay
+overlaying
+overlays
+overload
+overloaded
+overloading
+overloads
+overlook
+overlooked
+overlooking
+overlooks
+overly
+overnight
+overnighter
+overnighters
+overpower
+overpowered
+overpowering
+overpowers
+overprint
+overprinted
+overprinting
+overprints
+overproduction
+overridden
+override
+overrides
+overriding
+overrode
+overrule
+overruled
+overrules
+overrun
+overrunning
+overruns
+overseas
+oversee
+overseeing
+overseer
+overseers
+oversees
+overshadow
+overshadowed
+overshadowing
+overshadows
+overshoot
+overshot
+oversight
+oversights
+oversimplified
+oversimplifies
+oversimplify
+oversimplifying
+oversized
+overstate
+overstated
+overstatement
+overstatements
+overstates
+overstating
+overstocks
+oversubscribed
+overt
+overtake
+overtaken
+overtaker
+overtakers
+overtakes
+overtaking
+overthrew
+overthrow
+overthrown
+overtime
+overtly
+overtone
+overtones
+overtook
+overture
+overtures
+overturn
+overturned
+overturning
+overturns
+overuse
+overview
+overviews
+overwhelm
+overwhelmed
+overwhelming
+overwhelmingly
+overwhelms
+overwork
+overworked
+overworking
+overworks
+overwrite
+overwrites
+overwriting
+overwritten
+overzealous
+Ovid
+owe
+owed
+Owen
+Owens
+owes
+owing
+owl
+owls
+own
+owned
+owner
+owners
+ownership
+ownerships
+owning
+owns
+ox
+oxen
+Oxford
+oxide
+oxides
+oxidize
+oxidized
+Oxnard
+Oxonian
+oxygen
+oyster
+oysters
+Oz
+Ozark
+Ozarks
+ozone
+Ozzie
+Pablo
+Pabst
+pace
+paced
+pacemaker
+pacer
+pacers
+paces
+pacific
+pacification
+pacified
+pacifier
+pacifies
+pacifism
+pacifist
+pacify
+pacing
+pack
+package
+packaged
+packager
+packagers
+packages
+packaging
+packagings
+Packard
+Packards
+packed
+packer
+packers
+packet
+packets
+packing
+packs
+Packwood
+pact
+pacts
+pad
+padded
+padding
+paddle
+paddock
+paddy
+padlock
+pads
+pagan
+Paganini
+pagans
+page
+pageant
+pageantry
+pageants
+paged
+pager
+pagers
+pages
+paginate
+paginated
+paginates
+paginating
+pagination
+paging
+pagoda
+paid
+pail
+pails
+pain
+Paine
+pained
+painful
+painfully
+painless
+pains
+painstaking
+painstakingly
+paint
+painted
+painter
+painters
+painting
+paintings
+paints
+pair
+paired
+pairing
+pairings
+pairs
+pairwise
+pajama
+pajamas
+Pakistan
+Pakistani
+Pakistanis
+pal
+palace
+palaces
+palate
+palates
+Palatine
+pale
+paled
+palely
+paleness
+Paleolithic
+Paleozoic
+paler
+Palermo
+pales
+palest
+Palestine
+Palestinian
+palfrey
+palindrome
+palindromic
+paling
+pall
+Palladian
+palladium
+palliate
+palliative
+pallid
+palm
+palmed
+palmer
+palming
+Palmolive
+palms
+Palmyra
+Palo
+Palomar
+palpable
+pals
+palsy
+Pam
+Pamela
+pamper
+pamphlet
+pamphlets
+pan
+panacea
+panaceas
+panama
+Panamanian
+pancake
+pancakes
+Pancho
+panda
+Pandanus
+pandas
+pandemic
+pandemonium
+pander
+Pandora
+pane
+panel
+paneled
+paneling
+panelist
+panelists
+panels
+panes
+pang
+Pangaea
+pangs
+panic
+panicked
+panicking
+panicky
+panics
+panned
+panning
+panorama
+panoramic
+pans
+pansies
+pansy
+pant
+panted
+pantheism
+pantheist
+pantheon
+panther
+panthers
+panties
+panting
+pantomime
+pantries
+pantry
+pants
+panty
+pantyhose
+Paoli
+papa
+papal
+paper
+paperback
+paperbacks
+papered
+paperer
+paperers
+papering
+paperings
+papers
+paperweight
+paperwork
+papoose
+Pappas
+Papua
+papyrus
+par
+parabola
+parabolic
+paraboloid
+paraboloidal
+parachute
+parachuted
+parachutes
+parade
+paraded
+parades
+paradigm
+paradigms
+parading
+paradise
+paradox
+paradoxes
+paradoxical
+paradoxically
+paraffin
+paragon
+paragons
+paragraph
+paragraphing
+paragraphs
+Paraguay
+Paraguayan
+Paraguayans
+parakeet
+parallax
+parallel
+paralleled
+paralleling
+parallelism
+parallelize
+parallelized
+parallelizes
+parallelizing
+parallelogram
+parallelograms
+parallels
+paralysis
+paralyze
+paralyzed
+paralyzes
+paralyzing
+parameter
+parameterizable
+parameterization
+parameterizations
+parameterize
+parameterized
+parameterizes
+parameterizing
+parameterless
+parameters
+parametric
+parametrized
+paramilitary
+paramount
+Paramus
+paranoia
+paranoiac
+paranoid
+paranormal
+parapet
+parapets
+paraphernalia
+paraphrase
+paraphrased
+paraphrases
+paraphrasing
+parapsychology
+parasite
+parasites
+parasitic
+parasitics
+parasol
+parboil
+PARC
+parcel
+parceled
+parceling
+parcels
+parch
+parched
+parchment
+pardon
+pardonable
+pardonably
+pardoned
+pardoner
+pardoners
+pardoning
+pardons
+pare
+paregoric
+parent
+parentage
+parental
+parentheses
+parenthesis
+parenthesized
+parenthesizes
+parenthesizing
+parenthetic
+parenthetical
+parenthetically
+parenthood
+parents
+pares
+Pareto
+pariah
+parimutuel
+paring
+parings
+Paris
+parish
+parishes
+parishioner
+Parisian
+Parisianization
+Parisianizations
+Parisianize
+Parisianizes
+parity
+park
+Parke
+parked
+parker
+parkers
+Parkersburg
+Parkhouse
+parking
+Parkinson
+Parkinsonian
+parkland
+parklike
+Parks
+parkway
+parlay
+parley
+parliament
+parliamentarian
+parliamentary
+parliaments
+parlor
+parlors
+Parmesan
+parochial
+parody
+parole
+paroled
+paroles
+paroling
+Parr
+parried
+Parrish
+parrot
+parroting
+parrots
+Parrs
+parry
+pars
+parse
+parsed
+parser
+parsers
+parses
+Parsi
+Parsifal
+parsimony
+parsing
+parsings
+parsley
+parson
+Parsons
+part
+partake
+partaker
+partakes
+partaking
+parted
+parter
+parters
+Parthenon
+Parthia
+partial
+partiality
+partially
+participant
+participants
+participate
+participated
+participates
+participating
+participation
+participle
+particle
+particles
+particular
+particularly
+particulars
+particulate
+parties
+parting
+partings
+partisan
+partisans
+partition
+partitioned
+partitioning
+partitions
+partly
+partner
+partnered
+partners
+partnership
+partook
+partridge
+partridges
+parts
+party
+Pasadena
+PASCAL
+Pascal
+Paso
+pass
+passage
+passages
+passageway
+Passaic
+passe
+passed
+passenger
+passengers
+passer
+passers
+passes
+passing
+passion
+passionate
+passionately
+passions
+passivate
+passive
+passively
+passiveness
+passivity
+Passover
+passport
+passports
+password
+passwords
+past
+paste
+pasted
+pastel
+Pasternak
+pastes
+Pasteur
+pastime
+pastimes
+pasting
+pastness
+pastor
+pastoral
+pastors
+pastry
+pasts
+pasture
+pastures
+pat
+Patagonia
+Patagonians
+patch
+patched
+patches
+patching
+patchwork
+patchy
+pate
+paten
+patent
+patentable
+patented
+patenter
+patenters
+patenting
+patently
+patents
+paternal
+paternally
+paternoster
+Paterson
+path
+pathetic
+pathname
+pathnames
+pathogen
+pathogenesis
+pathological
+pathology
+pathos
+paths
+pathway
+pathways
+patience
+patient
+patiently
+patients
+patina
+patio
+patriarch
+patriarchal
+patriarchs
+patriarchy
+Patrice
+Patricia
+patrician
+patricians
+Patrick
+patrimonial
+patrimony
+patriot
+patriotic
+patriotism
+patriots
+patrol
+patrolled
+patrolling
+patrolman
+patrolmen
+patrols
+patron
+patronage
+patronize
+patronized
+patronizes
+patronizing
+patrons
+pats
+Patsies
+Patsy
+patter
+pattered
+pattering
+patterings
+pattern
+patterned
+patterning
+patterns
+patters
+Patterson
+Patti
+patties
+Patton
+patty
+paucity
+Paul
+Paula
+Paulette
+Pauli
+Pauline
+Pauling
+Paulinize
+Paulinizes
+Paulo
+Paulsen
+Paulson
+Paulus
+paunch
+paunchy
+pauper
+pause
+paused
+pauses
+pausing
+pave
+paved
+pavement
+pavements
+paves
+pavilion
+pavilions
+paving
+Pavlov
+Pavlovian
+paw
+pawing
+pawn
+pawns
+pawnshop
+paws
+Pawtucket
+pay
+payable
+paycheck
+paychecks
+payed
+payer
+payers
+paying
+payment
+payments
+Payne
+Paynes
+Paynize
+Paynizes
+payoff
+payoffs
+payroll
+pays
+Payson
+Paz
+pea
+Peabody
+peace
+peaceable
+peaceful
+peacefully
+peacefulness
+peacetime
+peach
+peaches
+Peachtree
+peacock
+peacocks
+peak
+peaked
+peaks
+peal
+Peale
+pealed
+pealing
+peals
+peanut
+peanuts
+pear
+Pearce
+pearl
+pearls
+pearly
+pears
+Pearson
+peas
+peasant
+peasantry
+peasants
+Pease
+peat
+pebble
+pebbles
+peccary
+peck
+pecked
+pecking
+pecks
+Pecos
+pectoral
+peculiar
+peculiarities
+peculiarity
+peculiarly
+pecuniary
+pedagogic
+pedagogical
+pedagogically
+pedagogy
+pedal
+pedant
+pedantic
+pedantry
+peddle
+peddler
+peddlers
+pedestal
+pedestrian
+pedestrians
+pediatric
+pediatrician
+pediatrics
+pedigree
+Pedro
+peek
+peeked
+peeking
+peeks
+peel
+peeled
+peeling
+peels
+peep
+peeped
+peeper
+peephole
+peeping
+peeps
+peer
+peered
+peering
+peerless
+peers
+peg
+Pegasus
+pegboard
+Peggy
+pegs
+Peiping
+pejorative
+Peking
+Pelham
+pelican
+pellagra
+Peloponnese
+pelt
+pelting
+pelts
+pelvic
+pelvis
+Pembroke
+pen
+penal
+penalize
+penalized
+penalizes
+penalizing
+penalties
+penalty
+penance
+pence
+penchant
+pencil
+penciled
+pencils
+pend
+pendant
+pended
+pending
+Pendleton
+pends
+pendulum
+pendulums
+Penelope
+penetrable
+penetrate
+penetrated
+penetrates
+penetrating
+penetratingly
+penetration
+penetrations
+penetrative
+penetrator
+penetrators
+penguin
+penguins
+Penh
+penicillin
+peninsula
+peninsulas
+penis
+penises
+penitent
+penitentiary
+Penn
+penned
+pennies
+penniless
+penning
+Pennsylvania
+penny
+Penrose
+pens
+Pensacola
+pension
+pensioner
+pensions
+pensive
+pent
+pentagon
+pentagons
+Pentateuch
+Pentecost
+pentecostal
+penthouse
+penultimate
+penumbra
+peony
+people
+peopled
+peoples
+Peoria
+pep
+pepper
+peppered
+peppering
+peppermint
+pepperoni
+peppers
+peppery
+peppy
+Pepsi
+PepsiCo
+Pepsico
+peptide
+per
+perceivable
+perceivably
+perceive
+perceived
+perceiver
+perceivers
+perceives
+perceiving
+percent
+percentage
+percentages
+percentile
+percentiles
+percents
+perceptible
+perceptibly
+perception
+perceptions
+perceptive
+perceptively
+perceptual
+perceptually
+perch
+perchance
+perched
+perches
+perching
+Percival
+percussion
+percutaneous
+Percy
+peremptory
+perennial
+perennially
+Perez
+perfect
+perfected
+perfectible
+perfecting
+perfection
+perfectionist
+perfectionists
+perfectly
+perfectness
+perfects
+perforce
+perform
+performance
+performances
+performed
+performer
+performers
+performing
+performs
+perfume
+perfumed
+perfumes
+perfuming
+perfunctory
+Pergamon
+perhaps
+Periclean
+Pericles
+perihelion
+peril
+Perilla
+perilous
+perilously
+perils
+perimeter
+period
+periodic
+periodical
+periodically
+periodicals
+periods
+peripheral
+peripherally
+peripherals
+peripheries
+periphery
+periscope
+perish
+perishable
+perishables
+perished
+perisher
+perishers
+perishes
+perishing
+perjure
+perjury
+perk
+Perkins
+perky
+Perle
+permanence
+permanent
+permanently
+permeable
+permeate
+permeated
+permeates
+permeating
+permeation
+Permian
+permissibility
+permissible
+permissibly
+permission
+permissions
+permissive
+permissively
+permit
+permits
+permitted
+permitting
+permutation
+permutations
+permute
+permuted
+permutes
+permuting
+pernicious
+Pernod
+peroxide
+perpendicular
+perpendicularly
+perpendiculars
+perpetrate
+perpetrated
+perpetrates
+perpetrating
+perpetration
+perpetrations
+perpetrator
+perpetrators
+perpetual
+perpetually
+perpetuate
+perpetuated
+perpetuates
+perpetuating
+perpetuation
+perpetuity
+perplex
+perplexed
+perplexing
+perplexity
+Perry
+persecute
+persecuted
+persecutes
+persecuting
+persecution
+persecutor
+persecutors
+Perseid
+Persephone
+Perseus
+perseverance
+persevere
+persevered
+perseveres
+persevering
+Pershing
+Persia
+Persian
+Persianization
+Persianizations
+Persianize
+Persianizes
+Persians
+persist
+persisted
+persistence
+persistent
+persistently
+persisting
+persists
+person
+personage
+personages
+personal
+personalities
+personality
+personalization
+personalize
+personalized
+personalizes
+personalizing
+personally
+personification
+personified
+personifies
+personify
+personifying
+personnel
+persons
+perspective
+perspectives
+perspicuous
+perspicuously
+perspiration
+perspire
+persuadable
+persuade
+persuaded
+persuader
+persuaders
+persuades
+persuading
+persuasion
+persuasions
+persuasive
+persuasively
+persuasiveness
+pertain
+pertained
+pertaining
+pertains
+Perth
+pertinent
+perturb
+perturbation
+perturbations
+perturbed
+Peru
+perusal
+peruse
+perused
+peruser
+perusers
+peruses
+perusing
+Peruvian
+Peruvianize
+Peruvianizes
+Peruvians
+pervade
+pervaded
+pervades
+pervading
+pervasive
+pervasively
+perversion
+pervert
+perverted
+perverts
+pessimism
+pessimist
+pessimistic
+pest
+pester
+pesticide
+pestilence
+pestilent
+pests
+pet
+petal
+petals
+Pete
+Peter
+Peters
+Petersburg
+Petersen
+Peterson
+petition
+petitioned
+petitioner
+petitioning
+petitions
+Petkiewicz
+petri
+petroleum
+pets
+petted
+petter
+petters
+Pettibone
+petticoat
+petticoats
+pettiness
+petting
+petty
+petulance
+petulant
+Peugeot
+pew
+Pewaukee
+pews
+pewter
+Pfizer
+Phaedra
+phantom
+phantoms
+pharmaceutic
+pharmacist
+pharmacology
+pharmacopoeia
+pharmacy
+phase
+phased
+phaser
+phasers
+phases
+phasing
+pheasant
+pheasants
+Phelps
+phenomena
+phenomenal
+phenomenally
+phenomenological
+phenomenologically
+phenomenologies
+phenomenology
+phenomenon
+phi
+PHIGS
+Phil
+Philadelphia
+philanthropy
+Philco
+philharmonic
+Philip
+Philippe
+Philippians
+Philippine
+Philippines
+Philistine
+Philistines
+Philistinize
+Philistinizes
+Phillies
+Phillip
+Phillips
+Philly
+philosopher
+philosophers
+philosophic
+philosophical
+philosophically
+philosophies
+philosophize
+philosophized
+philosophizer
+philosophizers
+philosophizes
+philosophizing
+philosophy
+Phipps
+Phobos
+Phoenicia
+phoenix
+phone
+phoned
+phoneme
+phonemes
+phonemic
+phones
+phonetic
+phonetics
+phoning
+phonograph
+phonographs
+phony
+phosgene
+phosphate
+phosphates
+phosphor
+phosphorescent
+phosphoric
+phosphorus
+photo
+photocopied
+photocopier
+photocopiers
+photocopies
+photocopy
+photocopying
+photodiode
+photodiodes
+photogenic
+photograph
+photographed
+photographer
+photographers
+photographic
+photographing
+photographs
+photography
+photon
+photos
+photosensitive
+phototypesetter
+phototypesetters
+phrase
+phrased
+phraseology
+phrases
+phrasing
+phrasings
+phyla
+Phyllis
+phylum
+physic
+physical
+physically
+physicalness
+physicals
+physician
+physicians
+physicist
+physicists
+physics
+physiological
+physiologically
+physiology
+physiotherapist
+physiotherapy
+physique
+phytoplankton
+pi
+pianist
+piano
+pianos
+pica
+picas
+Picasso
+picayune
+Piccadilly
+piccolo
+pick
+pickaxe
+picked
+picker
+Pickering
+pickers
+picket
+picketed
+picketer
+picketers
+picketing
+pickets
+Pickett
+Pickford
+picking
+pickings
+pickle
+pickled
+pickles
+pickling
+Pickman
+picks
+pickup
+pickups
+picky
+picnic
+picnicked
+picnicking
+picnics
+picofarad
+picojoule
+picosecond
+Pict
+pictorial
+pictorially
+picture
+pictured
+pictures
+picturesque
+picturesqueness
+picturing
+piddle
+pidgin
+pie
+piece
+pieced
+piecemeal
+pieces
+piecewise
+piecing
+Piedfort
+Piedmont
+pier
+pierce
+pierced
+pierces
+piercing
+Pierre
+piers
+Pierson
+pies
+piety
+piezoelectric
+pig
+pigeon
+pigeonhole
+pigeons
+piggish
+piggy
+piggyback
+piggybacked
+piggybacking
+piggybacks
+pigment
+pigmentation
+pigmented
+pigments
+pigpen
+pigs
+pigskin
+pigtail
+pike
+piker
+pikes
+Pilate
+pile
+piled
+pilers
+piles
+pilfer
+pilferage
+pilgrim
+pilgrimage
+pilgrimages
+pilgrims
+piling
+pilings
+pill
+pillage
+pillaged
+pillar
+pillared
+pillars
+pillory
+pillow
+pillows
+pills
+Pillsbury
+pilot
+piloting
+pilots
+pimp
+pimple
+pin
+pinafore
+pinball
+pinch
+pinched
+pinches
+pinching
+pincushion
+pine
+pineapple
+pineapples
+pined
+Pinehurst
+pines
+ping
+pinhead
+pinhole
+pining
+pinion
+pink
+pinker
+pinkest
+pinkie
+pinkish
+pinkly
+pinkness
+pinks
+pinnacle
+pinnacles
+pinned
+pinning
+pinnings
+pinochle
+pinpoint
+pinpointing
+pinpoints
+pins
+pinscher
+Pinsky
+pint
+pinto
+pints
+pinwheel
+pion
+pioneer
+pioneered
+pioneering
+pioneers
+Piotr
+pious
+piously
+pip
+pipe
+piped
+pipeline
+pipelined
+pipelines
+pipelining
+Piper
+pipers
+pipes
+Pipestone
+pipette
+piping
+pique
+piracy
+Piraeus
+pirate
+pirates
+Pisa
+Piscataway
+Pisces
+piss
+pistachio
+pistil
+pistils
+pistol
+pistols
+piston
+pistons
+pit
+pitch
+pitched
+pitcher
+pitchers
+pitches
+pitchfork
+pitching
+piteous
+piteously
+pitfall
+pitfalls
+pith
+pithed
+pithes
+pithier
+pithiest
+pithiness
+pithing
+pithy
+pitiable
+pitied
+pitier
+pitiers
+pities
+pitiful
+pitifully
+pitiless
+pitilessly
+Pitney
+pits
+Pitt
+pitted
+Pittsburgh
+Pittsburghers
+Pittsfield
+Pittston
+pituitary
+pity
+pitying
+pityingly
+Pius
+pivot
+pivotal
+pivoting
+pivots
+pixel
+pixels
+Pizarro
+pizza
+placard
+placards
+placate
+place
+placebo
+placed
+placeholder
+placement
+placements
+placenta
+placental
+placer
+places
+placid
+placidly
+placing
+plagiarism
+plagiarist
+plague
+plagued
+plagues
+plaguing
+plaid
+plaids
+plain
+plainer
+plainest
+Plainfield
+plainly
+plainness
+plains
+plaintext
+plaintexts
+plaintiff
+plaintiffs
+plaintive
+plaintively
+plaintiveness
+Plainview
+plait
+plaits
+plan
+planar
+planarity
+Planck
+plane
+planed
+planeload
+planer
+planers
+planes
+planet
+planetaria
+planetarium
+planetary
+planetesimal
+planetoid
+planets
+planing
+plank
+planking
+planks
+plankton
+planned
+planner
+planners
+planning
+planoconcave
+planoconvex
+plans
+plant
+plantation
+plantations
+planted
+planter
+planters
+planting
+plantings
+plants
+plaque
+plasma
+plaster
+plastered
+plasterer
+plastering
+plasters
+plastic
+plasticity
+plastics
+plate
+plateau
+plateaus
+plated
+platelet
+platelets
+platen
+platens
+plates
+platform
+platforms
+plating
+platinum
+platitude
+Plato
+platonic
+Platonism
+Platonist
+platoon
+Platte
+platter
+platters
+Platteville
+plausibility
+plausible
+play
+playable
+playback
+playboy
+played
+player
+players
+playful
+playfully
+playfulness
+playground
+playgrounds
+playhouse
+playing
+playmate
+playmates
+playoff
+playroom
+plays
+plaything
+playthings
+playtime
+playwright
+playwrights
+playwriting
+plaza
+plea
+plead
+pleaded
+pleader
+pleading
+pleads
+pleas
+pleasant
+pleasantly
+pleasantness
+please
+pleased
+pleases
+pleasing
+pleasingly
+pleasure
+pleasures
+pleat
+plebeian
+plebian
+plebiscite
+plebiscites
+pledge
+pledged
+pledges
+Pleiades
+Pleistocene
+plenary
+plenipotentiary
+plenteous
+plentiful
+plentifully
+plenty
+plethora
+pleurisy
+Plexiglas
+pliable
+pliant
+plied
+pliers
+plies
+plight
+Pliny
+Pliocene
+plod
+plodding
+plot
+plots
+plotted
+plotter
+plotters
+plotting
+plow
+plowed
+plower
+plowing
+plowman
+plows
+plowshare
+ploy
+ploys
+pluck
+plucked
+plucking
+plucks
+plucky
+plug
+pluggable
+plugged
+plugging
+plugs
+plum
+plumage
+plumb
+plumbed
+plumbing
+plumbs
+plume
+plumed
+plumes
+plummet
+plummeting
+plump
+plumped
+plumpness
+plums
+plunder
+plundered
+plunderer
+plunderers
+plundering
+plunders
+plunge
+plunged
+plunger
+plungers
+plunges
+plunging
+plunk
+plural
+plurality
+plurals
+plus
+pluses
+plush
+Plutarch
+Pluto
+plutonium
+ply
+Plymouth
+plywood
+pneumatic
+pneumonia
+Po
+poach
+poacher
+poaches
+Pocahontas
+pocket
+pocketbook
+pocketbooks
+pocketed
+pocketful
+pocketing
+pockets
+Pocono
+Poconos
+pod
+podia
+podium
+pods
+Podunk
+Poe
+poem
+poems
+poet
+poetic
+poetical
+poetically
+poetics
+poetries
+poetry
+poets
+pogo
+pogrom
+poignancy
+poignant
+Poincare
+Poindexter
+point
+pointed
+pointedly
+pointer
+pointers
+pointing
+pointless
+points
+pointy
+poise
+poised
+poises
+poison
+poisoned
+poisoner
+poisoning
+poisonous
+poisonousness
+poisons
+Poisson
+poke
+poked
+poker
+pokerface
+pokes
+poking
+Poland
+polar
+Polaris
+polarities
+polarity
+Polaroid
+pole
+polecat
+poled
+polemic
+polemics
+poles
+police
+policed
+policeman
+policemen
+polices
+policies
+policing
+policy
+poling
+polio
+polish
+polished
+polisher
+polishers
+polishes
+polishing
+Politburo
+polite
+politely
+politeness
+politer
+politest
+politic
+political
+politically
+politician
+politicians
+politicking
+politics
+Polk
+polka
+poll
+Pollard
+polled
+pollen
+polling
+polloi
+polls
+pollutant
+pollute
+polluted
+pollutes
+polluting
+pollution
+Pollux
+polo
+polyalphabetic
+polygon
+polygons
+Polyhymnia
+polymer
+polymers
+polymorphic
+Polynesia
+Polynesian
+polynomial
+polynomials
+Polyphemus
+polytechnic
+polytheist
+Pomerania
+Pomeranian
+Pomona
+pomp
+pompadour
+Pompeii
+Pompey
+pomposity
+pompous
+pompously
+pompousness
+Ponce
+Ponchartrain
+poncho
+pond
+ponder
+pondered
+pondering
+ponderous
+ponders
+ponds
+pong
+ponies
+Pontiac
+pontiff
+pontific
+pontificate
+pony
+pooch
+poodle
+pool
+Poole
+pooled
+pooling
+pools
+poor
+poorer
+poorest
+poorly
+poorness
+pop
+popcorn
+Pope
+Popek
+Popeks
+popish
+poplar
+poplin
+popped
+poppies
+popping
+poppy
+pops
+Popsicle
+Popsicles
+populace
+popular
+popularity
+popularization
+popularize
+popularized
+popularizes
+popularizing
+popularly
+populate
+populated
+populates
+populating
+population
+populations
+populous
+populousness
+porcelain
+porch
+porches
+porcine
+porcupine
+porcupines
+pore
+pored
+pores
+poring
+pork
+porker
+pornographer
+pornographic
+pornography
+porous
+porpoise
+porridge
+port
+portability
+portable
+portage
+portal
+portals
+Porte
+ported
+portend
+portended
+portending
+portends
+portent
+portentous
+porter
+porterhouse
+porters
+portfolio
+portfolios
+Portia
+portico
+porting
+portion
+portions
+Portland
+portly
+portmanteau
+Porto
+portrait
+portraits
+portray
+portrayal
+portrayed
+portraying
+portrays
+ports
+Portsmouth
+Portugal
+Portuguese
+pose
+posed
+Poseidon
+poser
+posers
+poses
+posh
+posing
+posit
+posited
+positing
+position
+positional
+positioned
+positioning
+positions
+positive
+positively
+positiveness
+positives
+positron
+posits
+Posner
+posse
+possess
+possessed
+possesses
+possessing
+possession
+possessional
+possessions
+possessive
+possessively
+possessiveness
+possessor
+possessors
+possibilities
+possibility
+possible
+possibly
+possum
+possums
+post
+postage
+postal
+postcard
+postcondition
+postdoctoral
+posted
+poster
+posterior
+posteriori
+posterity
+posters
+postfix
+postgraduate
+posting
+postlude
+postman
+postmark
+postmaster
+postmasters
+postmortem
+postoperative
+postorder
+postpone
+postponed
+postponing
+postprocess
+postprocessor
+posts
+postscript
+postscripts
+postulate
+postulated
+postulates
+postulating
+postulation
+postulations
+posture
+postures
+pot
+potable
+potash
+potassium
+potato
+potatoes
+potbelly
+Potemkin
+potent
+potentate
+potentates
+potential
+potentialities
+potentiality
+potentially
+potentials
+potentiating
+potentiometer
+potentiometers
+pothole
+potion
+potlatch
+Potomac
+potpourri
+pots
+Potsdam
+Pottawatomie
+potted
+potter
+potters
+pottery
+potting
+Potts
+pouch
+pouches
+Poughkeepsie
+poultice
+poultry
+pounce
+pounced
+pounces
+pouncing
+pound
+pounded
+pounder
+pounders
+pounding
+pounds
+pour
+poured
+pourer
+pourers
+pouring
+pours
+Poussin
+Poussins
+pout
+pouted
+pouting
+pouts
+poverty
+powder
+powdered
+powdering
+powderpuff
+powders
+powdery
+Powell
+power
+powered
+powerful
+powerfully
+powerfulness
+powering
+powerless
+powerlessly
+powerlessness
+Powers
+pox
+Poynting
+practicable
+practicably
+practical
+practicality
+practically
+practice
+practiced
+practices
+practicing
+practitioner
+practitioners
+Pradesh
+Prado
+pragmatic
+pragmatically
+pragmatics
+pragmatism
+pragmatist
+Prague
+prairie
+praise
+praised
+praiser
+praisers
+praises
+praiseworthy
+praising
+praisingly
+prance
+pranced
+prancer
+prancing
+prank
+pranks
+prate
+Pratt
+Prattville
+Pravda
+pray
+prayed
+prayer
+prayers
+praying
+preach
+preached
+preacher
+preachers
+preaches
+preaching
+preallocate
+preallocated
+preallocating
+preamble
+preambles
+preassign
+preassigned
+preassigning
+preassigns
+Precambrian
+precarious
+precariously
+precariousness
+precaution
+precautions
+precede
+preceded
+precedence
+precedences
+precedent
+precedented
+precedents
+precedes
+preceding
+precept
+precepts
+precess
+precession
+precinct
+precincts
+precious
+preciously
+preciousness
+precipice
+precipitable
+precipitate
+precipitated
+precipitately
+precipitateness
+precipitates
+precipitating
+precipitation
+precipitous
+precipitously
+precise
+precisely
+preciseness
+precision
+precisions
+preclude
+precluded
+precludes
+precluding
+precocious
+precociously
+precocity
+precompute
+precomputed
+precomputing
+preconceive
+preconceived
+preconception
+preconceptions
+precondition
+preconditioned
+preconditions
+precursor
+precursors
+predate
+predated
+predates
+predating
+predatory
+predecessor
+predecessors
+predefine
+predefined
+predefines
+predefining
+predefinition
+predefinitions
+predetermination
+predetermine
+predetermined
+predetermines
+predetermining
+predicament
+predicate
+predicated
+predicates
+predicating
+predication
+predications
+predict
+predictability
+predictable
+predictably
+predicted
+predicting
+prediction
+predictions
+predictive
+predictor
+predicts
+predilection
+predilections
+predisposition
+predominant
+predominantly
+predominate
+predominated
+predominately
+predominates
+predominating
+predomination
+preeminence
+preeminent
+preempt
+preempted
+preempting
+preemption
+preemptive
+preemptor
+preempts
+preen
+preexisting
+prefab
+prefabricate
+preface
+prefaced
+prefaces
+prefacing
+prefer
+preferable
+preferably
+preference
+preferences
+preferential
+preferentially
+preferred
+preferring
+prefers
+prefix
+prefixed
+prefixes
+prefixing
+pregnancy
+pregnant
+prehistoric
+preinitialize
+preinitialized
+preinitializes
+preinitializing
+prejudge
+prejudged
+prejudice
+prejudiced
+prejudices
+prejudicial
+prelate
+preliminaries
+preliminary
+prelude
+preludes
+premature
+prematurely
+prematurity
+premeditated
+premeditation
+premier
+premiers
+premise
+premises
+premium
+premiums
+premonition
+prenatal
+Prentice
+Prenticed
+Prenticing
+preoccupation
+preoccupied
+preoccupies
+preoccupy
+prep
+preparation
+preparations
+preparative
+preparatives
+preparatory
+prepare
+prepared
+prepares
+preparing
+prepend
+prepended
+prepending
+preposition
+prepositional
+prepositions
+preposterous
+preposterously
+preprocessed
+preprocessing
+preprocessor
+preprocessors
+preproduction
+preprogrammed
+prerequisite
+prerequisites
+prerogative
+prerogatives
+Presbyterian
+Presbyterianism
+Presbyterianize
+Presbyterianizes
+Prescott
+prescribe
+prescribed
+prescribes
+prescription
+prescriptions
+prescriptive
+preselect
+preselected
+preselecting
+preselects
+presence
+presences
+present
+presentation
+presentations
+presented
+presenter
+presenting
+presently
+presentness
+presents
+preservation
+preservations
+preserve
+preserved
+preserver
+preservers
+preserves
+preserving
+preset
+preside
+presided
+presidency
+president
+presidential
+presidents
+presides
+presiding
+Presley
+press
+pressed
+presser
+presses
+pressing
+pressings
+pressure
+pressured
+pressures
+pressuring
+pressurize
+pressurized
+prestidigitate
+prestige
+prestigious
+Preston
+presumably
+presume
+presumed
+presumes
+presuming
+presumption
+presumptions
+presumptive
+presumptuous
+presumptuousness
+presuppose
+presupposed
+presupposes
+presupposing
+presupposition
+pretend
+pretended
+pretender
+pretenders
+pretending
+pretends
+pretense
+pretenses
+pretension
+pretensions
+pretentious
+pretentiously
+pretentiousness
+pretext
+pretexts
+Pretoria
+Pretorian
+prettier
+prettiest
+prettily
+prettiness
+pretty
+prevail
+prevailed
+prevailing
+prevailingly
+prevails
+prevalence
+prevalent
+prevalently
+prevent
+preventable
+preventably
+prevented
+preventing
+prevention
+preventive
+preventives
+prevents
+preview
+previewed
+previewing
+previews
+previous
+previously
+prey
+preyed
+preying
+preys
+Priam
+price
+priced
+priceless
+pricer
+pricers
+prices
+pricing
+prick
+pricked
+pricking
+prickly
+pricks
+pride
+prided
+prides
+priding
+priest
+Priestley
+priggish
+prim
+prima
+primacy
+primal
+primaries
+primarily
+primary
+primate
+prime
+primed
+primeness
+primer
+primers
+primes
+primeval
+priming
+primitive
+primitively
+primitiveness
+primitives
+primrose
+prince
+princely
+princes
+princess
+princesses
+Princeton
+principal
+principalities
+principality
+principally
+principals
+Principia
+principle
+principled
+principles
+print
+printable
+printably
+printed
+printer
+printers
+printing
+printout
+prints
+prior
+priori
+priorities
+priority
+priory
+Priscilla
+prism
+prisms
+prison
+prisoner
+prisoners
+prisons
+pristine
+Pritchard
+privacies
+privacy
+private
+privately
+privates
+privation
+privations
+privies
+privilege
+privileged
+privileges
+privy
+prize
+prized
+prizer
+prizers
+prizes
+prizewinning
+prizing
+pro
+probabilistic
+probabilistically
+probabilities
+probability
+probable
+probably
+probate
+probated
+probates
+probating
+probation
+probative
+probe
+probed
+probes
+probing
+probings
+probity
+problem
+problematic
+problematical
+problematically
+problems
+procaine
+procedural
+procedurally
+procedure
+procedures
+proceed
+proceeded
+proceeding
+proceedings
+proceeds
+process
+processed
+processes
+processing
+procession
+processor
+processors
+proclaim
+proclaimed
+proclaimer
+proclaimers
+proclaiming
+proclaims
+proclamation
+proclamations
+proclivities
+proclivity
+procotols
+procrastinate
+procrastinated
+procrastinates
+procrastinating
+procrastination
+procreate
+Procrustean
+Procrusteanize
+Procrusteanizes
+Procrustes
+Procter
+procure
+procured
+procurement
+procurements
+procurer
+procurers
+procures
+procuring
+Procyon
+prod
+prodigal
+prodigally
+prodigious
+prodigy
+produce
+produced
+producer
+producers
+produces
+producible
+producing
+product
+production
+productions
+productive
+productively
+productivity
+products
+profane
+profanely
+profess
+professed
+professes
+professing
+profession
+professional
+professionalism
+professionally
+professionals
+professions
+professor
+professorial
+professors
+proffer
+proffered
+proffers
+proficiency
+proficient
+proficiently
+profile
+profiled
+profiles
+profiling
+profit
+profitability
+profitable
+profitably
+profited
+profiteer
+profiteers
+profiting
+profits
+profitted
+profligate
+profound
+profoundest
+profoundly
+profundity
+profuse
+profusion
+progenitor
+progeny
+prognosis
+prognosticate
+program
+programmability
+programmable
+programmed
+programmer
+programmers
+programming
+programs
+progress
+progressed
+progresses
+progressing
+progression
+progressions
+progressive
+progressively
+prohibit
+prohibited
+prohibiting
+prohibition
+prohibitions
+prohibitive
+prohibitively
+prohibitory
+prohibits
+project
+projected
+projectile
+projecting
+projection
+projections
+projective
+projectively
+projector
+projectors
+projects
+Prokofieff
+Prokofiev
+prolate
+prolegomena
+proletariat
+proliferate
+proliferated
+proliferates
+proliferating
+proliferation
+prolific
+prolix
+prolog
+prologue
+prolong
+prolongate
+prolonged
+prolonging
+prolongs
+promenade
+promenades
+Promethean
+Prometheus
+prominence
+prominent
+prominently
+promiscuous
+promise
+promised
+promises
+promising
+promontory
+promote
+promoted
+promoter
+promoters
+promotes
+promoting
+promotion
+promotional
+promotions
+prompt
+prompted
+prompter
+promptest
+prompting
+promptings
+promptly
+promptness
+prompts
+promulgate
+promulgated
+promulgates
+promulgating
+promulgation
+prone
+proneness
+prong
+pronged
+prongs
+pronoun
+pronounce
+pronounceable
+pronounced
+pronouncement
+pronouncements
+pronounces
+pronouncing
+pronouns
+pronunciation
+pronunciations
+proof
+proofread
+proofreader
+proofs
+prop
+propaganda
+propagandist
+propagate
+propagated
+propagates
+propagating
+propagation
+propagations
+propane
+propel
+propellant
+propelled
+propeller
+propellers
+propelling
+propels
+propensity
+proper
+properly
+properness
+propertied
+properties
+property
+prophecies
+prophecy
+prophesied
+prophesier
+prophesies
+prophesy
+prophet
+prophetic
+prophets
+propitious
+proponent
+proponents
+proportion
+proportional
+proportionally
+proportionately
+proportioned
+proportioning
+proportionment
+proportions
+propos
+proposal
+proposals
+propose
+proposed
+proposer
+proposes
+proposing
+proposition
+propositional
+propositionally
+propositioned
+propositioning
+propositions
+propound
+propounded
+propounding
+propounds
+proprietary
+proprietor
+proprietors
+propriety
+props
+propulsion
+propulsions
+prorate
+prorated
+prorates
+pros
+proscenium
+proscribe
+proscription
+prose
+prosecute
+prosecuted
+prosecutes
+prosecuting
+prosecution
+prosecutions
+prosecutor
+proselytize
+proselytized
+proselytizes
+proselytizing
+Proserpine
+prosodic
+prosodics
+prospect
+prospected
+prospecting
+prospection
+prospections
+prospective
+prospectively
+prospectives
+prospector
+prospectors
+prospects
+prospectus
+prosper
+prospered
+prospering
+prosperity
+prosperous
+prospers
+prostate
+prosthetic
+prostitute
+prostitution
+prostrate
+prostration
+protagonist
+protean
+protect
+protected
+protecting
+protection
+protections
+protective
+protectively
+protectiveness
+protector
+protectorate
+protectors
+protects
+protege
+proteges
+protein
+proteins
+protest
+protestant
+Protestantism
+Protestantize
+Protestantizes
+protestation
+protestations
+protested
+protesting
+protestingly
+protestor
+protests
+Protista
+protocol
+protocols
+proton
+protons
+Protophyta
+protoplasm
+prototype
+prototyped
+prototypes
+prototypical
+prototypically
+prototyping
+Protozoa
+protozoan
+protract
+protrude
+protruded
+protrudes
+protruding
+protrusion
+protrusions
+protuberant
+proud
+prouder
+proudest
+proudly
+Proust
+provability
+provable
+provably
+prove
+proved
+proven
+provenance
+Provence
+prover
+proverb
+proverbial
+proverbs
+provers
+proves
+provide
+provided
+providence
+provident
+provider
+providers
+provides
+providing
+province
+provinces
+provincial
+proving
+provision
+provisional
+provisionally
+provisioned
+provisioning
+provisions
+proviso
+provocation
+provoke
+provoked
+provokes
+provost
+prow
+prowess
+prowl
+prowled
+prowler
+prowlers
+prowling
+prows
+proximal
+proximate
+proximity
+Proxmire
+proxy
+prudence
+prudent
+prudential
+prudently
+prune
+pruned
+pruner
+pruners
+prunes
+pruning
+prurient
+Prussia
+Prussian
+Prussianization
+Prussianizations
+Prussianize
+Prussianizer
+Prussianizers
+Prussianizes
+pry
+prying
+psalm
+psalms
+pseudo
+pseudofiles
+pseudoinstruction
+pseudoinstructions
+pseudonym
+pseudoparallelism
+psilocybin
+psych
+psyche
+psychedelic
+psyches
+psychiatric
+psychiatrist
+psychiatrists
+psychiatry
+psychic
+psycho
+psychoanalysis
+psychoanalyst
+psychoanalytic
+psychobiology
+psychological
+psychologically
+psychologist
+psychologists
+psychology
+psychopath
+psychopathic
+psychophysic
+psychoses
+psychosis
+psychosocial
+psychosomatic
+psychotherapeutic
+psychotherapist
+psychotherapy
+psychotic
+Ptolemaic
+Ptolemaists
+Ptolemy
+pub
+puberty
+public
+publication
+publications
+publicity
+publicize
+publicized
+publicizes
+publicizing
+publicly
+publish
+published
+publisher
+publishers
+publishes
+publishing
+pubs
+Puccini
+pucker
+puckered
+puckering
+puckers
+pudding
+puddings
+puddle
+puddles
+puddling
+Puerto
+puff
+puffed
+puffin
+puffing
+puffs
+Pugh
+puke
+Pulaski
+Pulitzer
+pull
+pulled
+puller
+pulley
+pulleys
+pulling
+pullings
+Pullman
+Pullmanize
+Pullmanizes
+Pullmans
+pullover
+pulls
+pulmonary
+pulp
+pulping
+pulpit
+pulpits
+pulsar
+pulsate
+pulsation
+pulsations
+pulse
+pulsed
+pulses
+pulsing
+puma
+pumice
+pummel
+pump
+pumped
+pumping
+pumpkin
+pumpkins
+pumps
+pun
+punch
+punched
+puncher
+punches
+punching
+punctual
+punctually
+punctuation
+puncture
+punctured
+punctures
+puncturing
+pundit
+pungent
+Punic
+punish
+punishable
+punished
+punishes
+punishing
+punishment
+punishments
+punitive
+Punjab
+Punjabi
+puns
+punt
+punted
+punting
+punts
+puny
+pup
+pupa
+pupil
+pupils
+puppet
+puppeteer
+puppets
+puppies
+puppy
+pups
+Purcell
+purchase
+purchased
+purchaser
+purchasers
+purchases
+purchasing
+Purdue
+pure
+purely
+purer
+purest
+purgatory
+purge
+purged
+purges
+purging
+purification
+purifications
+purified
+purifier
+purifiers
+purifies
+purify
+purifying
+Purina
+purist
+Puritan
+puritanic
+Puritanize
+Puritanizer
+Puritanizers
+Puritanizes
+purity
+purple
+purpler
+purplest
+purport
+purported
+purportedly
+purporter
+purporters
+purporting
+purports
+purpose
+purposed
+purposeful
+purposefully
+purposely
+purposes
+purposive
+purr
+purred
+purring
+purrs
+purse
+pursed
+purser
+purses
+pursuant
+pursue
+pursued
+pursuer
+pursuers
+pursues
+pursuing
+pursuit
+pursuits
+purveyor
+purview
+pus
+Pusan
+Pusey
+push
+pushbutton
+pushdown
+pushed
+pusher
+pushers
+pushes
+pushing
+puss
+pussy
+pussycat
+put
+Putnam
+puts
+putt
+putter
+puttering
+putters
+putting
+putty
+puzzle
+puzzled
+puzzlement
+puzzler
+puzzlers
+puzzles
+puzzling
+puzzlings
+Pygmalion
+pygmies
+pygmy
+Pyle
+Pyongyang
+Pyotr
+pyramid
+pyramids
+pyre
+Pyrex
+Pyrrhic
+Pythagoras
+Pythagorean
+Pythagoreanize
+Pythagoreanizes
+Pythagoreans
+python
+Qatar
+qua
+quack
+quacked
+quackery
+quacks
+quad
+quadrangle
+quadrangular
+quadrant
+quadrants
+quadratic
+quadratical
+quadratically
+quadratics
+quadrature
+quadratures
+quadrennial
+quadrilateral
+quadrillion
+quadruple
+quadrupled
+quadruples
+quadrupling
+quadrupole
+quaff
+quagmire
+quagmires
+quahog
+quail
+quails
+quaint
+quaintly
+quaintness
+quake
+quaked
+quaker
+Quakeress
+Quakerization
+Quakerizations
+Quakerize
+Quakerizes
+quakers
+quakes
+quaking
+qualification
+qualifications
+qualified
+qualifier
+qualifiers
+qualifies
+qualify
+qualifying
+qualitative
+qualitatively
+qualities
+quality
+qualm
+quandaries
+quandary
+quanta
+Quantico
+quantifiable
+quantification
+quantifications
+quantified
+quantifier
+quantifiers
+quantifies
+quantify
+quantifying
+quantile
+quantitative
+quantitatively
+quantities
+quantity
+quantization
+quantize
+quantized
+quantizes
+quantizing
+quantum
+quarantine
+quarantines
+quarantining
+quark
+quarrel
+quarreled
+quarreling
+quarrels
+quarrelsome
+quarries
+quarry
+quart
+quarter
+quarterback
+quartered
+quartering
+quarterly
+quartermaster
+quarters
+quartet
+quartets
+quartile
+quarts
+quartz
+quartzite
+quasar
+quash
+quashed
+quashes
+quashing
+quasi
+Quasimodo
+quaternary
+quaver
+quavered
+quavering
+quavers
+quay
+queasy
+Quebec
+queen
+queenly
+queens
+Queensland
+queer
+queerer
+queerest
+queerly
+queerness
+quell
+quelling
+quench
+quenched
+quenches
+quenching
+queried
+queries
+query
+querying
+quest
+quested
+quester
+questers
+questing
+question
+questionable
+questionably
+questioned
+questioner
+questioners
+questioning
+questioningly
+questionings
+questionnaire
+questionnaires
+questions
+quests
+queue
+queued
+queueing
+queuer
+queuers
+queues
+queuing
+Quezon
+quibble
+Quichua
+quick
+quicken
+quickened
+quickening
+quickens
+quicker
+quickest
+quickie
+quicklime
+quickly
+quickness
+quicksand
+quicksilver
+quiescent
+quiet
+quieted
+quieter
+quietest
+quieting
+quietly
+quietness
+quiets
+quietude
+quill
+quilt
+quilted
+quilting
+quilts
+quince
+quinine
+Quinn
+quint
+quintet
+quintillion
+quip
+Quirinal
+quirk
+quirky
+quit
+quite
+Quito
+quits
+quitter
+quitters
+quitting
+quiver
+quivered
+quivering
+quivers
+Quixote
+quixotic
+Quixotism
+quiz
+quizzed
+quizzes
+quizzical
+quizzing
+quo
+quonset
+quorum
+quota
+quotas
+quotation
+quotations
+quote
+quoted
+quotes
+quoth
+quotient
+quotients
+quoting
+Rabat
+rabbi
+rabbit
+rabbits
+rabble
+rabid
+rabies
+Rabin
+raccoon
+raccoons
+race
+raced
+racer
+racers
+races
+racetrack
+Rachel
+Rachmaninoff
+racial
+racially
+Racine
+racing
+rack
+racked
+racket
+racketeer
+racketeering
+racketeers
+rackets
+racking
+racks
+radar
+radars
+Radcliffe
+radial
+radially
+radian
+radiance
+radiant
+radiantly
+radiate
+radiated
+radiates
+radiating
+radiation
+radiations
+radiator
+radiators
+radical
+radically
+radicals
+radices
+radii
+radio
+radioactive
+radioastronomy
+radioed
+radiography
+radioing
+radiology
+radios
+radish
+radishes
+radium
+radius
+radix
+radon
+Rae
+Rafael
+Rafferty
+raft
+rafter
+rafters
+rafts
+rag
+rage
+raged
+rages
+ragged
+raggedly
+raggedness
+raging
+rags
+Ragusan
+ragweed
+raid
+raided
+raider
+raiders
+raiding
+raids
+rail
+railed
+railer
+railers
+railing
+railroad
+railroaded
+railroader
+railroaders
+railroading
+railroads
+rails
+railway
+railways
+raiment
+rain
+rainbow
+raincoat
+raincoats
+raindrop
+raindrops
+rained
+rainfall
+rainier
+rainiest
+raining
+rains
+rainstorm
+rainy
+raise
+raised
+raiser
+raisers
+raises
+raisin
+raising
+rake
+raked
+rakes
+raking
+Raleigh
+rallied
+rallies
+rally
+rallying
+Ralph
+Ralston
+ram
+Ramada
+Raman
+ramble
+rambler
+rambles
+rambling
+ramblings
+ramification
+ramifications
+Ramirez
+Ramo
+Ramona
+ramp
+rampage
+rampant
+rampart
+ramps
+ramrod
+rams
+Ramsey
+ran
+ranch
+ranched
+rancher
+ranchers
+ranches
+ranching
+rancid
+Rand
+Randall
+Randolph
+random
+randomization
+randomize
+randomized
+randomizes
+randomly
+randomness
+randy
+rang
+range
+ranged
+rangeland
+ranger
+rangers
+ranges
+ranging
+Rangoon
+rangy
+Ranier
+rank
+ranked
+ranker
+rankers
+rankest
+Rankin
+Rankine
+ranking
+rankings
+rankle
+rankly
+rankness
+ranks
+ransack
+ransacked
+ransacking
+ransacks
+ransom
+ransomer
+ransoming
+ransoms
+rant
+ranted
+ranter
+ranters
+ranting
+rants
+Raoul
+rap
+rapacious
+rape
+raped
+raper
+rapes
+Raphael
+rapid
+rapidity
+rapidly
+rapids
+rapier
+raping
+rapport
+rapprochement
+raps
+rapt
+raptly
+rapture
+raptures
+rapturous
+Rapunzel
+rare
+rarely
+rareness
+rarer
+rarest
+Raritan
+rarity
+rascal
+rascally
+rascals
+rash
+rasher
+rashly
+rashness
+Rasmussen
+rasp
+raspberry
+rasped
+rasping
+rasps
+raster
+Rastus
+rat
+rate
+rated
+rater
+raters
+rates
+Ratfor
+rather
+ratification
+ratified
+ratifies
+ratify
+ratifying
+rating
+ratings
+ratio
+ration
+rational
+rationale
+rationales
+rationalities
+rationality
+rationalization
+rationalizations
+rationalize
+rationalized
+rationalizes
+rationalizing
+rationally
+rationals
+rationing
+rations
+ratios
+rats
+rattle
+rattled
+rattler
+rattlers
+rattles
+rattlesnake
+rattlesnakes
+rattling
+raucous
+Raul
+ravage
+ravaged
+ravager
+ravagers
+ravages
+ravaging
+rave
+raved
+raven
+ravening
+ravenous
+ravenously
+ravens
+raves
+ravine
+ravines
+raving
+ravings
+raw
+rawer
+rawest
+Rawlings
+Rawlins
+Rawlinson
+rawly
+rawness
+Rawson
+ray
+Rayburn
+Rayleigh
+Raymond
+Raymondville
+rays
+Raytheon
+raze
+razor
+razors
+re
+reabbreviate
+reabbreviated
+reabbreviates
+reabbreviating
+reach
+reachability
+reachable
+reachably
+reached
+reacher
+reaches
+reaching
+reacquired
+react
+reacted
+reacting
+reaction
+reactionaries
+reactionary
+reactions
+reactivate
+reactivated
+reactivates
+reactivating
+reactivation
+reactive
+reactively
+reactivity
+reactor
+reactors
+reacts
+read
+readability
+readable
+reader
+readers
+readied
+readier
+readies
+readiest
+readily
+readiness
+reading
+readings
+readjusted
+readout
+readouts
+reads
+ready
+readying
+Reagan
+real
+realest
+realign
+realigned
+realigning
+realigns
+realism
+realist
+realistic
+realistically
+realists
+realities
+reality
+realizable
+realizably
+realization
+realizations
+realize
+realized
+realizes
+realizing
+reallocate
+really
+realm
+realms
+realness
+reals
+realtor
+ream
+reanalyze
+reanalyzes
+reanalyzing
+reap
+reaped
+reaper
+reaping
+reappear
+reappeared
+reappearing
+reappears
+reappraisal
+reappraisals
+reaps
+rear
+reared
+rearing
+rearrange
+rearrangeable
+rearranged
+rearrangement
+rearrangements
+rearranges
+rearranging
+rearrest
+rearrested
+rears
+reason
+reasonable
+reasonableness
+reasonably
+reasoned
+reasoner
+reasoning
+reasonings
+reasons
+reassemble
+reassembled
+reassembles
+reassembling
+reassembly
+reassessment
+reassessments
+reassign
+reassigned
+reassigning
+reassignment
+reassignments
+reassigns
+reassure
+reassured
+reassures
+reassuring
+reawaken
+reawakened
+reawakening
+reawakens
+rebate
+rebates
+Rebecca
+rebel
+rebelled
+rebelling
+rebellion
+rebellions
+rebellious
+rebelliously
+rebelliousness
+rebels
+rebind
+rebinding
+rebinds
+reboot
+rebooted
+rebooting
+reboots
+rebound
+rebounded
+rebounding
+rebounds
+rebroadcast
+rebroadcasting
+rebroadcasts
+rebuff
+rebuffed
+rebuild
+rebuilding
+rebuilds
+rebuilt
+rebuke
+rebuked
+rebukes
+rebuking
+rebuttal
+rebutted
+rebutting
+recalcitrant
+recalculate
+recalculated
+recalculates
+recalculating
+recalculation
+recalculations
+recalibrate
+recalibrated
+recalibrates
+recalibrating
+recall
+recalled
+recalling
+recalls
+recant
+recapitulate
+recapitulated
+recapitulates
+recapitulation
+recapture
+recaptured
+recaptures
+recapturing
+recast
+recasting
+recasts
+recede
+receded
+recedes
+receding
+receipt
+receipts
+receivable
+receive
+received
+receiver
+receivers
+receives
+receiving
+recent
+recently
+recentness
+receptacle
+receptacles
+reception
+receptionist
+receptions
+receptive
+receptively
+receptiveness
+receptivity
+receptor
+recess
+recessed
+recesses
+recession
+recessive
+Recife
+recipe
+recipes
+recipient
+recipients
+reciprocal
+reciprocally
+reciprocate
+reciprocated
+reciprocates
+reciprocating
+reciprocation
+reciprocity
+recirculate
+recirculated
+recirculates
+recirculating
+recital
+recitals
+recitation
+recitations
+recite
+recited
+reciter
+recites
+reciting
+reckless
+recklessly
+recklessness
+reckon
+reckoned
+reckoner
+reckoning
+reckonings
+reckons
+reclaim
+reclaimable
+reclaimed
+reclaimer
+reclaimers
+reclaiming
+reclaims
+reclamation
+reclamations
+reclassification
+reclassified
+reclassifies
+reclassify
+reclassifying
+recline
+reclining
+recode
+recoded
+recodes
+recoding
+recognition
+recognitions
+recognizability
+recognizable
+recognizably
+recognize
+recognized
+recognizer
+recognizers
+recognizes
+recognizing
+recoil
+recoiled
+recoiling
+recoils
+recollect
+recollected
+recollecting
+recollection
+recollections
+recombination
+recombine
+recombined
+recombines
+recombining
+recommend
+recommendation
+recommendations
+recommended
+recommender
+recommending
+recommends
+recompense
+recompile
+recompiled
+recompiles
+recompiling
+recompute
+recomputed
+recomputes
+recomputing
+reconcile
+reconciled
+reconciler
+reconciles
+reconciliation
+reconciling
+reconfigurable
+reconfiguration
+reconfigurations
+reconfigure
+reconfigured
+reconfigurer
+reconfigures
+reconfiguring
+reconnect
+reconnected
+reconnecting
+reconnection
+reconnects
+reconsider
+reconsideration
+reconsidered
+reconsidering
+reconsiders
+reconstituted
+reconstruct
+reconstructed
+reconstructing
+reconstruction
+reconstructs
+reconverted
+reconverts
+record
+recorded
+recorder
+recorders
+recording
+recordings
+records
+recount
+recounted
+recounting
+recounts
+recourse
+recover
+recoverable
+recovered
+recoveries
+recovering
+recovers
+recovery
+recreate
+recreated
+recreates
+recreating
+recreation
+recreational
+recreations
+recreative
+recruit
+recruited
+recruiter
+recruiting
+recruits
+recta
+rectangle
+rectangles
+rectangular
+rectify
+rector
+rectors
+rectum
+rectums
+recuperate
+recur
+recurrence
+recurrences
+recurrent
+recurrently
+recurring
+recurs
+recurse
+recursed
+recurses
+recursing
+recursion
+recursions
+recursive
+recursively
+recyclable
+recycle
+recycled
+recycles
+recycling
+red
+redbreast
+redcoat
+redden
+reddened
+redder
+reddest
+reddish
+reddishness
+redeclare
+redeclared
+redeclares
+redeclaring
+redeem
+redeemed
+redeemer
+redeemers
+redeeming
+redeems
+redefine
+redefined
+redefines
+redefining
+redefinition
+redefinitions
+redemption
+redesign
+redesigned
+redesigning
+redesigns
+redevelopment
+Redford
+redhead
+Redhook
+redirect
+redirected
+redirecting
+redirection
+redirections
+redisplay
+redisplayed
+redisplaying
+redisplays
+redistribute
+redistributed
+redistributes
+redistributing
+redly
+Redmond
+redneck
+redness
+redo
+redone
+redouble
+redoubled
+redraw
+redrawn
+redress
+redressed
+redresses
+redressing
+reds
+Redstone
+reduce
+reduced
+reducer
+reducers
+reduces
+reducibility
+reducible
+reducibly
+reducing
+reduction
+reductions
+redundancies
+redundancy
+redundant
+redundantly
+redwood
+reed
+reeds
+reeducation
+Reedville
+reef
+reefer
+reefs
+reel
+reelect
+reelected
+reelecting
+reelects
+reeled
+reeler
+reeling
+reels
+reemphasize
+reemphasized
+reemphasizes
+reemphasizing
+reenabled
+reenforcement
+reenter
+reentered
+reentering
+reenters
+reentrant
+Reese
+reestablish
+reestablished
+reestablishes
+reestablishing
+reevaluate
+reevaluated
+reevaluates
+reevaluating
+reevaluation
+Reeves
+reexamine
+reexamined
+reexamines
+reexamining
+reexecuted
+refer
+referee
+refereed
+refereeing
+referees
+reference
+referenced
+referencer
+references
+referencing
+referenda
+referendum
+referendums
+referent
+referential
+referentiality
+referentially
+referents
+referral
+referrals
+referred
+referring
+refers
+refill
+refillable
+refilled
+refilling
+refills
+refine
+refined
+refinement
+refinements
+refiner
+refinery
+refines
+refining
+reflect
+reflected
+reflecting
+reflection
+reflections
+reflective
+reflectively
+reflectivity
+reflector
+reflectors
+reflects
+reflex
+reflexes
+reflexive
+reflexively
+reflexiveness
+reflexivity
+reforestation
+reform
+reformable
+reformat
+reformation
+reformatory
+reformats
+reformatted
+reformatting
+reformed
+reformer
+reformers
+reforming
+reforms
+reformulate
+reformulated
+reformulates
+reformulating
+reformulation
+refract
+refracted
+refraction
+refractory
+refragment
+refrain
+refrained
+refraining
+refrains
+refresh
+refreshed
+refresher
+refreshers
+refreshes
+refreshing
+refreshingly
+refreshment
+refreshments
+refrigerate
+refrigerator
+refrigerators
+refuel
+refueled
+refueling
+refuels
+refuge
+refugee
+refugees
+refusal
+refuse
+refused
+refuses
+refusing
+refutable
+refutation
+refute
+refuted
+refuter
+refutes
+refuting
+regain
+regained
+regaining
+regains
+regal
+regaled
+regally
+regard
+regarded
+regarding
+regardless
+regards
+regatta
+regenerate
+regenerated
+regenerates
+regenerating
+regeneration
+regenerative
+regenerator
+regenerators
+regent
+regents
+regime
+regimen
+regiment
+regimentation
+regimented
+regiments
+regimes
+Regina
+Reginald
+region
+regional
+regionally
+regions
+Regis
+register
+registered
+registering
+registers
+registrar
+registration
+registrations
+registry
+regress
+regressed
+regresses
+regressing
+regression
+regressions
+regressive
+regret
+regretful
+regretfully
+regrets
+regrettable
+regrettably
+regretted
+regretting
+regroup
+regrouped
+regrouping
+regular
+regularities
+regularity
+regularly
+regulars
+regulate
+regulated
+regulates
+regulating
+regulation
+regulations
+regulative
+regulator
+regulators
+regulatory
+Regulus
+rehabilitate
+rehearsal
+rehearsals
+rehearse
+rehearsed
+rehearser
+rehearses
+rehearsing
+Reich
+Reichenberg
+Reichstag
+Reid
+reign
+reigned
+reigning
+reigns
+Reilly
+reimbursable
+reimburse
+reimbursed
+reimbursement
+reimbursements
+rein
+reincarnate
+reincarnated
+reincarnation
+reindeer
+reined
+reinforce
+reinforced
+reinforcement
+reinforcements
+reinforcer
+reinforces
+reinforcing
+Reinhard
+Reinhardt
+Reinhold
+reinitialize
+reinitialized
+reinitializing
+reins
+reinsert
+reinserted
+reinserting
+reinserts
+reinstate
+reinstated
+reinstatement
+reinstates
+reinstating
+reinterpret
+reinterpreted
+reinterpreting
+reinterprets
+reintroduce
+reintroduced
+reintroduces
+reintroducing
+reinvent
+reinvented
+reinventing
+reinvents
+reiterate
+reiterated
+reiterates
+reiterating
+reiteration
+reject
+rejected
+rejecting
+rejection
+rejections
+rejector
+rejectors
+rejects
+rejoice
+rejoiced
+rejoicer
+rejoices
+rejoicing
+rejoin
+rejoinder
+rejoined
+rejoining
+rejoins
+relabel
+relabeled
+relabeling
+relabelled
+relabelling
+relabels
+relapse
+relate
+related
+relater
+relates
+relating
+relation
+relational
+relationally
+relations
+relationship
+relationships
+relative
+relatively
+relativeness
+relatives
+relativism
+relativistic
+relativistically
+relativity
+relax
+relaxation
+relaxations
+relaxed
+relaxer
+relaxes
+relaxing
+relay
+relayed
+relaying
+relays
+release
+released
+releases
+releasing
+relegate
+relegated
+relegates
+relegating
+relent
+relented
+relenting
+relentless
+relentlessly
+relentlessness
+relents
+relevance
+relevances
+relevant
+relevantly
+reliability
+reliable
+reliably
+reliance
+reliant
+relic
+relics
+relied
+relief
+relies
+relieve
+relieved
+reliever
+relievers
+relieves
+relieving
+religion
+religions
+religious
+religiously
+religiousness
+relink
+relinquish
+relinquished
+relinquishes
+relinquishing
+relish
+relished
+relishes
+relishing
+relive
+relives
+reliving
+reload
+reloaded
+reloader
+reloading
+reloads
+relocatable
+relocate
+relocated
+relocates
+relocating
+relocation
+relocations
+reluctance
+reluctant
+reluctantly
+rely
+relying
+remain
+remainder
+remainders
+remained
+remaining
+remains
+remark
+remarkable
+remarkableness
+remarkably
+remarked
+remarking
+remarks
+Rembrandt
+remedial
+remedied
+remedies
+remedy
+remedying
+remember
+remembered
+remembering
+remembers
+remembrance
+remembrances
+remind
+reminded
+reminder
+reminders
+reminding
+reminds
+Remington
+reminiscence
+reminiscences
+reminiscent
+reminiscently
+remiss
+remission
+remit
+remittance
+remnant
+remnants
+remodel
+remodeled
+remodeling
+remodels
+remonstrate
+remonstrated
+remonstrates
+remonstrating
+remonstration
+remonstrative
+remorse
+remorseful
+remote
+remotely
+remoteness
+remotest
+removable
+removal
+removals
+remove
+removed
+remover
+removes
+removing
+remunerate
+remuneration
+Remus
+Remy
+Rena
+renaissance
+renal
+rename
+renamed
+renames
+renaming
+Renault
+Renaults
+rend
+render
+rendered
+rendering
+renderings
+renders
+rendezvous
+rending
+rendition
+renditions
+rends
+Rene
+Renee
+renegade
+renegotiable
+renew
+renewable
+renewal
+renewed
+renewer
+renewing
+renews
+Reno
+Renoir
+renounce
+renounces
+renouncing
+renovate
+renovated
+renovation
+renown
+renowned
+Rensselaer
+rent
+rental
+rentals
+rented
+renting
+rents
+renumber
+renumbering
+renumbers
+renunciate
+renunciation
+Renville
+reoccur
+reopen
+reopened
+reopening
+reopens
+reorder
+reordered
+reordering
+reorders
+reorganization
+reorganizations
+reorganize
+reorganized
+reorganizes
+reorganizing
+repackage
+repaid
+repair
+repaired
+repairer
+repairing
+repairman
+repairmen
+repairs
+reparation
+reparations
+repartee
+repartition
+repast
+repasts
+repay
+repaying
+repays
+repeal
+repealed
+repealer
+repealing
+repeals
+repeat
+repeatable
+repeated
+repeatedly
+repeater
+repeaters
+repeating
+repeats
+repel
+repelled
+repellent
+repels
+repent
+repentance
+repented
+repenting
+repents
+repercussion
+repercussions
+repertoire
+repertory
+repetition
+repetitions
+repetitious
+repetitive
+repetitively
+repetitiveness
+rephrase
+rephrased
+rephrases
+rephrasing
+repine
+replace
+replaceable
+replaced
+replacement
+replacements
+replacer
+replaces
+replacing
+replay
+replayed
+replaying
+replays
+replenish
+replenished
+replenishes
+replenishing
+replete
+repleteness
+repletion
+replica
+replicas
+replicate
+replicated
+replicates
+replicating
+replication
+replications
+replied
+replies
+reply
+replying
+report
+reported
+reportedly
+reporter
+reporters
+reporting
+reports
+repose
+reposed
+reposes
+reposing
+reposition
+repositioned
+repositioning
+repositions
+repositories
+repository
+reprehensible
+represent
+representable
+representably
+representation
+representational
+representationally
+representations
+representative
+representatively
+representativeness
+representatives
+represented
+representing
+represents
+repress
+repressed
+represses
+repressing
+repression
+repressions
+repressive
+reprieve
+reprieved
+reprieves
+reprieving
+reprimand
+reprint
+reprinted
+reprinting
+reprints
+reprisal
+reprisals
+reproach
+reproached
+reproaches
+reproaching
+reprobate
+reproduce
+reproduced
+reproducer
+reproducers
+reproduces
+reproducibilities
+reproducibility
+reproducible
+reproducibly
+reproducing
+reproduction
+reproductions
+reprogram
+reprogrammed
+reprogramming
+reprograms
+reproof
+reprove
+reprover
+reptile
+reptiles
+reptilian
+republic
+republican
+republicans
+republics
+repudiate
+repudiated
+repudiates
+repudiating
+repudiation
+repudiations
+repugnant
+repulse
+repulsed
+repulses
+repulsing
+repulsion
+repulsions
+repulsive
+reputable
+reputably
+reputation
+reputations
+repute
+reputed
+reputedly
+reputes
+request
+requested
+requester
+requesters
+requesting
+requests
+require
+required
+requirement
+requirements
+requires
+requiring
+requisite
+requisites
+requisition
+requisitioned
+requisitioning
+requisitions
+reread
+reregister
+reroute
+rerouted
+reroutes
+rerouting
+rerun
+reruns
+reschedule
+rescind
+rescue
+rescued
+rescuer
+rescuers
+rescues
+rescuing
+research
+researched
+researcher
+researchers
+researches
+researching
+reselect
+reselected
+reselecting
+reselects
+resell
+reselling
+resemblance
+resemblances
+resemble
+resembled
+resembles
+resembling
+resent
+resented
+resentful
+resentfully
+resenting
+resentment
+resents
+reserpine
+reservation
+reservations
+reserve
+reserved
+reserver
+reserves
+reserving
+reservoir
+reservoirs
+reset
+resets
+resetting
+resettings
+reside
+resided
+residence
+residences
+resident
+residential
+residentially
+residents
+resides
+residing
+residual
+residue
+residues
+resign
+resignation
+resignations
+resigned
+resigning
+resigns
+resilient
+resin
+resins
+resist
+resistable
+resistance
+resistances
+resistant
+resistantly
+resisted
+resistible
+resisting
+resistive
+resistivity
+resistor
+resistors
+resists
+resolute
+resolutely
+resoluteness
+resolution
+resolutions
+resolvable
+resolve
+resolved
+resolver
+resolvers
+resolves
+resolving
+resonance
+resonances
+resonant
+resonate
+resort
+resorted
+resorting
+resorts
+resound
+resounding
+resounds
+resource
+resourceful
+resourcefully
+resourcefulness
+resources
+respect
+respectability
+respectable
+respectably
+respected
+respecter
+respectful
+respectfully
+respectfulness
+respecting
+respective
+respectively
+respects
+respiration
+respirator
+respiratory
+respite
+resplendent
+resplendently
+respond
+responded
+respondent
+respondents
+responder
+responding
+responds
+response
+responses
+responsibilities
+responsibility
+responsible
+responsibleness
+responsibly
+responsive
+responsively
+responsiveness
+rest
+restart
+restarted
+restarting
+restarts
+restate
+restated
+restatement
+restates
+restating
+restaurant
+restaurants
+restaurateur
+rested
+restful
+restfully
+restfulness
+resting
+restitution
+restive
+restless
+restlessly
+restlessness
+restoration
+restorations
+restore
+restored
+restorer
+restorers
+restores
+restoring
+restrain
+restrained
+restrainer
+restrainers
+restraining
+restrains
+restraint
+restraints
+restrict
+restricted
+restricting
+restriction
+restrictions
+restrictive
+restrictively
+restricts
+restroom
+restructure
+restructured
+restructures
+restructuring
+rests
+result
+resultant
+resultantly
+resultants
+resulted
+resulting
+results
+resumable
+resume
+resumed
+resumes
+resuming
+resumption
+resumptions
+resurgent
+resurrect
+resurrected
+resurrecting
+resurrection
+resurrections
+resurrector
+resurrectors
+resurrects
+resuscitate
+resynchronization
+resynchronize
+resynchronized
+resynchronizing
+retail
+retailer
+retailers
+retailing
+retain
+retained
+retainer
+retainers
+retaining
+retainment
+retains
+retaliate
+retaliation
+retaliatory
+retard
+retarded
+retarder
+retarding
+retch
+retention
+retentions
+retentive
+retentively
+retentiveness
+reticle
+reticles
+reticular
+reticulate
+reticulated
+reticulately
+reticulates
+reticulating
+reticulation
+retina
+retinal
+retinas
+retinue
+retire
+retired
+retiree
+retirement
+retirements
+retires
+retiring
+retort
+retorted
+retorts
+retrace
+retraced
+retraces
+retracing
+retract
+retracted
+retracting
+retraction
+retractions
+retracts
+retrain
+retrained
+retraining
+retrains
+retranslate
+retranslated
+retransmission
+retransmissions
+retransmit
+retransmits
+retransmitted
+retransmitting
+retreat
+retreated
+retreating
+retreats
+retribution
+retried
+retrier
+retriers
+retries
+retrievable
+retrieval
+retrievals
+retrieve
+retrieved
+retriever
+retrievers
+retrieves
+retrieving
+retroactive
+retroactively
+retrofit
+retrofitting
+retrograde
+retrospect
+retrospection
+retrospective
+retry
+retrying
+return
+returnable
+returned
+returner
+returning
+returns
+retype
+retyped
+retypes
+retyping
+Reub
+Reuben
+reunion
+reunions
+reunite
+reunited
+reuniting
+reusable
+reuse
+reused
+reuses
+reusing
+Reuters
+Reuther
+revamp
+revamped
+revamping
+revamps
+reveal
+revealed
+revealing
+reveals
+revel
+revelation
+revelations
+reveled
+reveler
+reveling
+revelry
+revels
+revenge
+revenger
+revenue
+revenuers
+revenues
+reverberate
+revere
+revered
+reverence
+reverend
+reverends
+reverent
+reverently
+reveres
+reverie
+reverified
+reverifies
+reverify
+reverifying
+revering
+reversal
+reversals
+reverse
+reversed
+reversely
+reverser
+reverses
+reversible
+reversing
+reversion
+revert
+reverted
+reverting
+reverts
+review
+reviewed
+reviewer
+reviewers
+reviewing
+reviews
+revile
+reviled
+reviler
+reviling
+revise
+revised
+reviser
+revises
+revising
+revision
+revisionary
+revisions
+revisit
+revisited
+revisiting
+revisits
+revival
+revivals
+revive
+revived
+reviver
+revives
+reviving
+revocable
+revocation
+revoke
+revoked
+revoker
+revokes
+revoking
+revolt
+revolted
+revolter
+revolting
+revoltingly
+revolts
+revolution
+revolutionaries
+revolutionary
+revolutionize
+revolutionized
+revolutionizer
+revolutions
+revolve
+revolved
+revolver
+revolvers
+revolves
+revolving
+revulsion
+reward
+rewarded
+rewarding
+rewardingly
+rewards
+rewind
+rewinding
+rewinds
+rewire
+rework
+reworked
+reworking
+reworks
+rewound
+rewrite
+rewrites
+rewriting
+rewritten
+Rex
+Reykjavik
+Reynolds
+rhapsody
+Rhea
+Rheims
+Rheinholdt
+Rhenish
+rhesus
+rhetoric
+rheumatic
+rheumatism
+Rhine
+rhinestone
+rhino
+rhinoceros
+rho
+Rhoda
+Rhode
+Rhodes
+Rhodesia
+rhododendron
+rhombic
+rhombus
+rhubarb
+rhyme
+rhymed
+rhymes
+rhyming
+rhythm
+rhythmic
+rhythmically
+rhythms
+rib
+ribald
+ribbed
+ribbing
+ribbon
+ribbons
+riboflavin
+ribonucleic
+ribs
+Rica
+Rican
+Ricanism
+Ricans
+rice
+rich
+Richard
+Richards
+Richardson
+richer
+riches
+richest
+Richey
+Richfield
+Richland
+richly
+Richmond
+richness
+Richter
+Rick
+Rickenbaugh
+rickets
+Rickettsia
+rickety
+rickshaw
+rickshaws
+Rico
+ricochet
+rid
+riddance
+ridden
+ridding
+riddle
+riddled
+riddles
+riddling
+ride
+rider
+riders
+rides
+ridge
+Ridgefield
+ridgepole
+ridges
+Ridgway
+ridicule
+ridiculed
+ridicules
+ridiculing
+ridiculous
+ridiculously
+ridiculousness
+riding
+rids
+Riemann
+Riemannian
+rifle
+rifled
+rifleman
+rifler
+rifles
+rifling
+rift
+rig
+Riga
+Rigel
+rigging
+Riggs
+right
+righted
+righteous
+righteously
+righteousness
+righter
+rightful
+rightfully
+rightfulness
+righting
+rightly
+rightmost
+rightness
+rights
+rightward
+rigid
+rigidity
+rigidly
+rigor
+rigorous
+rigorously
+rigors
+rigs
+Riley
+Rilke
+rill
+rim
+rime
+rims
+rind
+rinds
+Rinehart
+ring
+ringed
+ringer
+ringers
+ringing
+ringingly
+ringings
+rings
+ringside
+rink
+rinse
+rinsed
+rinser
+rinses
+rinsing
+Rio
+Riordan
+riot
+rioted
+rioter
+rioters
+rioting
+riotous
+riots
+rip
+ripe
+ripely
+ripen
+ripeness
+Ripley
+ripoff
+ripped
+ripping
+ripple
+rippled
+ripples
+rippling
+rips
+RISC
+rise
+risen
+riser
+risers
+rises
+rising
+risings
+risk
+risked
+risking
+risks
+risky
+Ritchie
+rite
+rites
+Ritter
+ritual
+ritually
+rituals
+Ritz
+rival
+rivaled
+rivalled
+rivalling
+rivalries
+rivalry
+rivals
+river
+riverbank
+riverfront
+rivers
+riverside
+Riverview
+rivet
+riveter
+rivets
+Riviera
+rivulet
+rivulets
+Riyadh
+roach
+road
+roadbed
+roadblock
+roads
+roadside
+roadster
+roadsters
+roadway
+roadways
+roam
+roamed
+roaming
+roams
+roar
+roared
+roarer
+roaring
+roars
+roast
+roasted
+roaster
+roasting
+roasts
+rob
+robbed
+robber
+robberies
+robbers
+robbery
+Robbie
+Robbin
+robbing
+Robbins
+robe
+robed
+Robert
+Roberta
+Roberto
+Roberts
+Robertson
+Robertsons
+robes
+robin
+robing
+robins
+Robinson
+Robinsonville
+robot
+robotic
+robotics
+robots
+robs
+robust
+robustly
+robustness
+Rocco
+Rochester
+Rochford
+rock
+rockabye
+Rockaway
+Rockaways
+rocked
+Rockefeller
+rocker
+rockers
+rocket
+rocketed
+rocketing
+rockets
+Rockford
+Rockies
+rocking
+Rockland
+rocks
+Rockville
+Rockwell
+rocky
+rod
+rode
+rodent
+rodents
+rodeo
+Rodgers
+Rodney
+Rodriguez
+rods
+roe
+Roentgen
+Roger
+Rogers
+rogue
+rogues
+Roland
+role
+roles
+roll
+rollback
+rolled
+roller
+rollers
+Rollie
+rolling
+Rollins
+rolls
+Roman
+romance
+romancer
+romancers
+romances
+romancing
+Romanesque
+Romania
+Romanizations
+Romanizer
+Romanizers
+Romanizes
+Romano
+Romans
+romantic
+romantics
+Rome
+Romeldale
+Romeo
+romp
+romped
+romper
+romping
+romps
+Romulus
+Ron
+Ronald
+Ronnie
+roof
+roofed
+roofer
+roofing
+roofs
+rooftop
+rook
+rookie
+room
+roomed
+roomer
+roomers
+roomful
+rooming
+roommate
+rooms
+roomy
+Rooney
+Roosevelt
+Rooseveltian
+roost
+rooster
+roosters
+root
+rooted
+rooter
+rooting
+roots
+rope
+roped
+roper
+ropers
+ropes
+roping
+Roquemore
+Rorschach
+Rosa
+Rosabelle
+Rosalie
+rosary
+Rose
+rosebud
+rosebuds
+rosebush
+Roseland
+Rosella
+rosemary
+Rosen
+Rosenberg
+Rosenblum
+Rosenthal
+Rosenzweig
+roses
+Rosetta
+rosette
+Rosie
+rosiness
+Ross
+Rossi
+roster
+rostrum
+Roswell
+rosy
+rot
+Rotarian
+Rotarians
+rotary
+rotate
+rotated
+rotates
+rotating
+rotation
+rotational
+rotations
+rotator
+Roth
+Rothschild
+rotor
+rots
+rotten
+rottenness
+Rotterdam
+rotting
+rotund
+rotunda
+rouge
+rough
+roughed
+roughen
+rougher
+roughest
+roughly
+roughneck
+roughness
+roulette
+round
+roundabout
+rounded
+roundedness
+rounder
+roundest
+roundhead
+roundhouse
+rounding
+roundly
+roundness
+roundoff
+rounds
+roundtable
+roundup
+roundworm
+Rourke
+rouse
+roused
+rouses
+rousing
+Rousseau
+roustabout
+rout
+route
+routed
+router
+routers
+routes
+routine
+routinely
+routines
+routing
+routings
+rove
+roved
+rover
+roves
+roving
+row
+rowboat
+rowdy
+Rowe
+rowed
+Rowena
+rower
+rowing
+Rowland
+Rowley
+rows
+Roxbury
+Roxy
+Roy
+royal
+royalist
+royalists
+royally
+royalties
+royalty
+Royce
+Rozelle
+Ruanda
+rub
+Rubaiyat
+rubbed
+rubber
+rubbers
+rubbery
+rubbing
+rubbish
+rubble
+rubdown
+Rube
+Ruben
+Rubens
+rubies
+Rubin
+ruble
+rubles
+rubout
+rubs
+ruby
+rudder
+rudders
+ruddiness
+ruddy
+rude
+rudely
+rudeness
+rudiment
+rudimentary
+rudiments
+Rudolf
+Rudolph
+Rudy
+Rudyard
+rue
+ruefully
+ruffian
+ruffianly
+ruffians
+ruffle
+ruffled
+ruffles
+Rufus
+rug
+rugged
+ruggedly
+ruggedness
+rugs
+ruin
+ruination
+ruinations
+ruined
+ruining
+ruinous
+ruinously
+ruins
+rule
+ruled
+ruler
+rulers
+rules
+ruling
+rulings
+rum
+Rumania
+Rumanian
+Rumanians
+rumble
+rumbled
+rumbler
+rumbles
+rumbling
+rumen
+Rumford
+rummage
+Rummel
+rummy
+rumor
+rumored
+rumors
+rump
+rumple
+rumpled
+rumply
+rumpus
+run
+runaway
+rundown
+rung
+Runge
+rungs
+runnable
+runner
+runners
+running
+Runnymede
+runoff
+runs
+runt
+runtime
+Runyon
+rupee
+Ruppert
+rupture
+ruptured
+ruptures
+rupturing
+rural
+rurally
+rush
+rushed
+rusher
+rushes
+rushing
+Rushmore
+Russ
+Russell
+russet
+Russia
+Russian
+Russianizations
+Russianizes
+Russians
+Russo
+rust
+rusted
+rustic
+rusticate
+rusticated
+rusticates
+rusticating
+rustication
+rusting
+rustle
+rustled
+rustler
+rustlers
+rustling
+rusts
+rusty
+rut
+Rutgers
+Ruth
+Rutherford
+ruthless
+ruthlessly
+ruthlessness
+Rutland
+Rutledge
+ruts
+Rwanda
+Ryan
+Rydberg
+Ryder
+rye
+sabbath
+Sabbathize
+Sabbathizes
+sabbatical
+saber
+sabers
+Sabina
+Sabine
+sable
+sables
+sabotage
+Sachs
+sack
+sacker
+sacking
+sacks
+sacrament
+Sacramento
+sacred
+sacredly
+sacredness
+sacrifice
+sacrificed
+sacrificer
+sacrificers
+sacrifices
+sacrificial
+sacrificially
+sacrificing
+sacrilege
+sacrilegious
+sacrosanct
+sad
+sadden
+saddened
+saddens
+sadder
+saddest
+saddle
+saddlebag
+saddled
+saddles
+Sadie
+sadism
+sadist
+sadistic
+sadistically
+sadists
+Sadler
+sadly
+sadness
+safari
+safe
+safeguard
+safeguarded
+safeguarding
+safeguards
+safekeeping
+safely
+safeness
+safer
+safes
+safest
+safeties
+safety
+saffron
+sag
+saga
+sagacious
+sagacity
+sage
+sagebrush
+sagely
+sages
+sagging
+Saginaw
+sagittal
+Sagittarius
+sags
+saguaro
+Sahara
+said
+Saigon
+sail
+sailboat
+sailed
+sailfish
+sailing
+sailor
+sailorly
+sailors
+sails
+saint
+sainted
+sainthood
+saintly
+saints
+sake
+sakes
+Sal
+Salaam
+salable
+salad
+salads
+salamander
+salami
+salaried
+salaries
+salary
+sale
+Salem
+Salerno
+sales
+salesgirl
+Salesian
+saleslady
+salesman
+salesmen
+salesperson
+salient
+Salina
+saline
+Salisbury
+Salish
+saliva
+salivary
+salivate
+Salk
+Salle
+sallies
+sallow
+Sally
+sallying
+salmon
+salon
+salons
+saloon
+saloons
+salt
+salted
+salter
+salters
+saltier
+saltiest
+saltiness
+salting
+Salton
+salts
+salty
+salutary
+salutation
+salutations
+salute
+saluted
+salutes
+saluting
+Salvador
+Salvadoran
+salvage
+salvaged
+salvager
+salvages
+salvaging
+salvation
+Salvatore
+salve
+salver
+salves
+Salz
+Sam
+Samaritan
+same
+sameness
+Sammy
+Samoa
+Samoan
+sample
+sampled
+sampler
+samplers
+samples
+sampling
+samplings
+Sampson
+Samson
+Samuel
+Samuels
+Samuelson
+San
+Sana
+sanatoria
+sanatorium
+Sanborn
+Sanchez
+Sancho
+sanctification
+sanctified
+sanctify
+sanctimonious
+sanction
+sanctioned
+sanctioning
+sanctions
+sanctity
+sanctuaries
+sanctuary
+sanctum
+sand
+sandal
+sandals
+sandbag
+Sandburg
+sanded
+sander
+Sanderling
+Sanders
+Sanderson
+Sandia
+sanding
+sandman
+sandpaper
+Sandra
+sands
+sandstone
+Sandusky
+sandwich
+sandwiches
+sandy
+sane
+sanely
+saner
+sanest
+Sanford
+sang
+sanguine
+Sanhedrin
+sanitarium
+sanitary
+sanitation
+sanity
+sank
+Sanskrit
+Sanskritic
+Sanskritize
+Santa
+Santayana
+Santiago
+Santo
+Sao
+sap
+sapiens
+sapling
+saplings
+sapphire
+Sappho
+saps
+sapsucker
+Sara
+Saracen
+Saracens
+Sarah
+Saran
+Sarasota
+Saratoga
+sarcasm
+sarcasms
+sarcastic
+sardine
+Sardinia
+sardonic
+Sargent
+sari
+Sartre
+sash
+Saskatchewan
+Saskatoon
+sat
+Satan
+satanic
+Satanism
+Satanist
+satchel
+satchels
+sate
+sated
+satellite
+satellites
+sates
+satin
+sating
+satire
+satires
+satiric
+satisfaction
+satisfactions
+satisfactorily
+satisfactory
+satisfiability
+satisfiable
+satisfied
+satisfies
+satisfy
+satisfying
+saturate
+saturated
+saturates
+saturating
+saturation
+Saturday
+Saturdays
+Saturn
+Saturnalia
+Saturnism
+satyr
+sauce
+saucepan
+saucepans
+saucer
+saucers
+sauces
+saucy
+Saud
+Saudi
+Saukville
+Saul
+Sault
+Saunders
+saunter
+sausage
+sausages
+savage
+savaged
+savagely
+savageness
+savager
+savagers
+savages
+savaging
+Savannah
+save
+saved
+saver
+savers
+saves
+saving
+savings
+savior
+saviors
+Saviour
+Savonarola
+savor
+savored
+savoring
+savors
+savory
+Savoy
+Savoyard
+Savoyards
+saw
+sawdust
+sawed
+sawfish
+sawing
+sawmill
+sawmills
+saws
+sawtooth
+sax
+Saxon
+Saxonization
+Saxonizations
+Saxonize
+Saxonizes
+Saxons
+Saxony
+saxophone
+Saxton
+say
+sayer
+sayers
+saying
+sayings
+says
+scab
+scabbard
+scabbards
+scabrous
+scaffold
+scaffolding
+scaffoldings
+scaffolds
+Scala
+scalable
+scalar
+scalars
+scald
+scalded
+scalding
+scale
+scaled
+scales
+scaling
+scalings
+scallop
+scalloped
+scallops
+scalp
+scalps
+scaly
+scamper
+scampering
+scampers
+scan
+scandal
+scandalous
+scandals
+Scandinavia
+Scandinavian
+Scandinavians
+scanned
+scanner
+scanners
+scanning
+scans
+scant
+scantier
+scantiest
+scantily
+scantiness
+scantly
+scanty
+scapegoat
+scar
+Scarborough
+scarce
+scarcely
+scarceness
+scarcer
+scarcity
+scare
+scarecrow
+scared
+scares
+scarf
+scaring
+Scarlatti
+scarlet
+scars
+Scarsdale
+scarves
+scary
+scatter
+scatterbrain
+scattered
+scattering
+scatters
+scenario
+scenarios
+scene
+scenery
+scenes
+scenic
+scent
+scented
+scents
+scepter
+scepters
+Schaefer
+Schaeffer
+Schafer
+Schaffner
+Schantz
+Schapiro
+schedulable
+schedule
+scheduled
+scheduler
+schedulers
+schedules
+scheduling
+Scheherazade
+Schelling
+schema
+schemas
+schemata
+schematic
+schematically
+schematics
+scheme
+schemed
+schemer
+schemers
+schemes
+scheming
+Schiller
+schism
+schizophrenia
+Schlesinger
+Schlitz
+Schloss
+Schmidt
+Schmitt
+Schnabel
+Schneider
+Schoenberg
+Schofield
+scholar
+scholarly
+scholars
+scholarship
+scholarships
+scholastic
+scholastically
+scholastics
+school
+schoolboy
+schoolboys
+schooled
+schooler
+schoolers
+schoolhouse
+schoolhouses
+schooling
+schoolmaster
+schoolmasters
+schoolroom
+schoolrooms
+schools
+schooner
+Schopenhauer
+Schottky
+Schroeder
+Schroedinger
+Schubert
+Schultz
+Schulz
+Schumacher
+Schuman
+Schumann
+Schuster
+Schuyler
+Schuylkill
+Schwab
+Schwartz
+Schweitzer
+science
+sciences
+scientific
+scientifically
+scientist
+scientists
+scissor
+scissored
+scissoring
+scissors
+sclerosis
+sclerotic
+scoff
+scoffed
+scoffer
+scoffing
+scoffs
+scold
+scolded
+scolding
+scolds
+scoop
+scooped
+scooping
+scoops
+scoot
+scope
+scoped
+scopes
+scoping
+scorch
+scorched
+scorcher
+scorches
+scorching
+score
+scoreboard
+scorecard
+scored
+scorer
+scorers
+scores
+scoring
+scorings
+scorn
+scorned
+scorner
+scornful
+scornfully
+scorning
+scorns
+Scorpio
+scorpion
+scorpions
+Scot
+scotch
+Scotchgard
+Scotchman
+Scotia
+Scotian
+Scotland
+Scots
+Scotsman
+Scotsmen
+Scott
+Scottish
+Scottsdale
+Scotty
+scoundrel
+scoundrels
+scour
+scoured
+scourge
+scouring
+scours
+scout
+scouted
+scouting
+scouts
+scow
+scowl
+scowled
+scowling
+scowls
+scram
+scramble
+scrambled
+scrambler
+scrambles
+scrambling
+Scranton
+scrap
+scrape
+scraped
+scraper
+scrapers
+scrapes
+scraping
+scrapings
+scrapped
+scraps
+scratch
+scratched
+scratcher
+scratchers
+scratches
+scratching
+scratchy
+scrawl
+scrawled
+scrawling
+scrawls
+scrawny
+scream
+screamed
+screamer
+screamers
+screaming
+screams
+screech
+screeched
+screeches
+screeching
+screen
+screened
+screening
+screenings
+screenplay
+screens
+screw
+screwball
+screwdriver
+screwed
+screwing
+screws
+scribble
+scribbled
+scribbler
+scribbles
+scribe
+scribes
+scribing
+Scribners
+scrimmage
+Scripps
+script
+scripts
+scripture
+scriptures
+scroll
+scrolled
+scrolling
+scrolls
+Scrooge
+scrounge
+scrub
+scrumptious
+scruple
+scrupulous
+scrupulously
+scrutinize
+scrutinized
+scrutinizing
+scrutiny
+scuba
+scud
+scuffle
+scuffled
+scuffles
+scuffling
+sculpt
+sculpted
+sculptor
+sculptors
+sculpts
+sculpture
+sculptured
+sculptures
+scurried
+scurry
+scurvy
+scuttle
+scuttled
+scuttles
+scuttling
+Scylla
+scythe
+scythes
+Scythia
+sea
+seaboard
+Seaborg
+Seabrook
+seacoast
+seacoasts
+seafood
+Seagate
+Seagram
+seagull
+seahorse
+seal
+sealed
+sealer
+sealing
+seals
+sealy
+seam
+seaman
+seamed
+seamen
+seaming
+seams
+seamy
+Sean
+seaport
+seaports
+Seaquarium
+sear
+search
+searched
+searcher
+searchers
+searches
+searching
+searchingly
+searchings
+searchlight
+seared
+searing
+searingly
+Sears
+seas
+seashore
+seashores
+seaside
+season
+seasonable
+seasonably
+seasonal
+seasonally
+seasoned
+seasoner
+seasoners
+seasoning
+seasonings
+seasons
+seat
+seated
+seating
+seats
+Seattle
+seaward
+seaweed
+Sebastian
+secant
+secede
+seceded
+secedes
+seceding
+secession
+seclude
+secluded
+seclusion
+second
+secondaries
+secondarily
+secondary
+seconded
+seconder
+seconders
+secondhand
+seconding
+secondly
+seconds
+secrecy
+secret
+secretarial
+secretariat
+secretaries
+secretary
+secrete
+secreted
+secretes
+secreting
+secretion
+secretions
+secretive
+secretively
+secretly
+secrets
+sect
+sectarian
+section
+sectional
+sectioned
+sectioning
+sections
+sector
+sectors
+sects
+secular
+secure
+secured
+securely
+secures
+securing
+securings
+securities
+security
+sedan
+sedate
+sedge
+Sedgwick
+sediment
+sedimentary
+sediments
+sedition
+seditious
+seduce
+seduced
+seducer
+seducers
+seduces
+seducing
+seduction
+seductive
+see
+seed
+seeded
+seeder
+seeders
+seeding
+seedings
+seedling
+seedlings
+seeds
+seedy
+seeing
+seek
+seeker
+seekers
+seeking
+seeks
+Seeley
+seem
+seemed
+seeming
+seemingly
+seemly
+seems
+seen
+seep
+seepage
+seeped
+seeping
+seeps
+seer
+seers
+seersucker
+sees
+seethe
+seethed
+seethes
+seething
+segment
+segmentation
+segmentations
+segmented
+segmenting
+segments
+Segovia
+segregate
+segregated
+segregates
+segregating
+segregation
+Segundo
+Seidel
+seismic
+seismograph
+seismology
+seize
+seized
+seizes
+seizing
+seizure
+seizures
+seldom
+select
+selected
+selecting
+selection
+selections
+selective
+selectively
+selectivity
+selectman
+selectmen
+selector
+selectors
+Selectric
+selects
+Selena
+selenium
+self
+selfish
+selfishly
+selfishness
+Selfridge
+selfsame
+Selkirk
+sell
+seller
+sellers
+selling
+sellout
+sells
+Selma
+seltzer
+selves
+Selwyn
+semantic
+semantical
+semantically
+semanticist
+semanticists
+semantics
+semaphore
+semaphores
+semblance
+semester
+semesters
+semi
+semiautomated
+semicolon
+semicolons
+semiconductor
+semiconductors
+seminal
+seminar
+seminarian
+seminaries
+seminars
+seminary
+Seminole
+semipermanent
+semipermanently
+Semiramis
+Semite
+Semitic
+Semiticize
+Semiticizes
+Semitization
+Semitizations
+Semitize
+Semitizes
+senate
+senates
+senator
+senatorial
+senators
+send
+sender
+senders
+sending
+sends
+Seneca
+Senegal
+senile
+senior
+seniority
+seniors
+sensation
+sensational
+sensationally
+sensations
+sense
+sensed
+senseless
+senselessly
+senselessness
+senses
+sensibilities
+sensibility
+sensible
+sensibly
+sensing
+sensitive
+sensitively
+sensitiveness
+sensitives
+sensitivities
+sensitivity
+sensor
+sensors
+sensory
+sensual
+sensuous
+sent
+sentence
+sentenced
+sentences
+sentencing
+sentential
+sentiment
+sentimental
+sentimentally
+sentiments
+sentinel
+sentinels
+sentries
+sentry
+Seoul
+separable
+separate
+separated
+separately
+separateness
+separates
+separating
+separation
+separations
+separator
+separators
+sepia
+Sepoy
+sept
+September
+Septembers
+sepulcher
+sepulchers
+sequel
+sequels
+sequence
+sequenced
+sequencer
+sequencers
+sequences
+sequencing
+sequencings
+sequential
+sequentiality
+sequentialize
+sequentialized
+sequentializes
+sequentializing
+sequentially
+sequester
+Sequoia
+Serafin
+Serbia
+Serbian
+Serbians
+Serbo-
+serendipitous
+serendipity
+serene
+serenely
+serenity
+serf
+serfs
+sergeant
+sergeants
+Sergei
+serial
+serializability
+serializable
+serialization
+serializations
+serialize
+serialized
+serializes
+serializing
+serially
+serials
+series
+serif
+serious
+seriously
+seriousness
+sermon
+sermons
+Serpens
+serpent
+serpentine
+serpents
+Serra
+serum
+serums
+servant
+servants
+serve
+served
+server
+servers
+serves
+service
+serviceability
+serviceable
+serviced
+serviceman
+servicemen
+services
+servicing
+servile
+serving
+servings
+servitude
+servo
+servomechanism
+sesame
+session
+sessions
+set
+setback
+Seth
+sets
+settable
+setter
+setters
+setting
+settings
+settle
+settled
+settlement
+settlements
+settler
+settlers
+settles
+settling
+setup
+setups
+seven
+sevenfold
+sevens
+seventeen
+seventeens
+seventeenth
+seventh
+seventies
+seventieth
+seventy
+sever
+several
+severalfold
+severally
+severance
+severe
+severed
+severely
+severer
+severest
+severing
+severities
+severity
+Severn
+severs
+Seville
+sew
+sewage
+Seward
+sewed
+sewer
+sewers
+sewing
+sews
+sex
+sexed
+sexes
+sexist
+Sextans
+sextet
+sextillion
+sexton
+sextuple
+sextuplet
+sexual
+sexuality
+sexually
+sexy
+Seychelles
+Seymour
+shabby
+shack
+shacked
+shackle
+shackled
+shackles
+shackling
+shacks
+shade
+shaded
+shades
+shadier
+shadiest
+shadily
+shadiness
+shading
+shadings
+shadow
+shadowed
+shadowing
+shadows
+shadowy
+shady
+Shafer
+Shaffer
+shaft
+shafts
+shaggy
+shakable
+shakably
+shake
+shakedown
+shaken
+shaker
+shakers
+shakes
+Shakespeare
+Shakespearean
+Shakespearian
+Shakespearize
+Shakespearizes
+shakiness
+shaking
+shaky
+shale
+shall
+shallow
+shallower
+shallowly
+shallowness
+sham
+shambles
+shame
+shamed
+shameful
+shamefully
+shameless
+shamelessly
+shames
+shaming
+shampoo
+shamrock
+shams
+Shanghai
+Shanghaied
+Shanghaiing
+Shanghaiings
+Shanghais
+Shannon
+shanties
+Shantung
+shanty
+shape
+shaped
+shapeless
+shapelessly
+shapelessness
+shapely
+shaper
+shapers
+shapes
+shaping
+Shapiro
+sharable
+shard
+share
+shareable
+sharecropper
+sharecroppers
+shared
+shareholder
+shareholders
+sharer
+sharers
+shares
+Shari
+sharing
+shark
+sharks
+Sharon
+sharp
+Sharpe
+sharpen
+sharpened
+sharpening
+sharpens
+sharper
+sharpest
+sharply
+sharpness
+sharpshoot
+Shasta
+shatter
+shattered
+shattering
+shatterproof
+shatters
+Shattuck
+shave
+shaved
+shaven
+shaves
+shaving
+shavings
+Shawano
+shawl
+shawls
+Shawnee
+she
+Shea
+sheaf
+shear
+sheared
+Shearer
+shearing
+shears
+sheath
+sheathing
+sheaths
+sheaves
+Sheboygan
+shed
+shedding
+Shedir
+sheds
+Sheehan
+sheen
+sheep
+sheepskin
+sheer
+sheered
+sheet
+sheeted
+sheeting
+sheets
+Sheffield
+sheik
+Sheila
+Shelby
+Sheldon
+shelf
+shell
+shelled
+sheller
+Shelley
+shelling
+shells
+shelter
+sheltered
+sheltering
+shelters
+Shelton
+shelve
+shelved
+shelves
+shelving
+Shenandoah
+shenanigan
+Shepard
+shepherd
+shepherds
+Sheppard
+Sheraton
+sherbet
+Sheridan
+sheriff
+sheriffs
+Sherlock
+Sherman
+Sherrill
+sherry
+Sherwin
+Sherwood
+shibboleth
+shied
+shield
+shielded
+shielding
+Shields
+shies
+shift
+shifted
+shifter
+shifters
+shiftier
+shiftiest
+shiftily
+shiftiness
+shifting
+shifts
+shifty
+Shiite
+Shiites
+shill
+shilling
+shillings
+Shillong
+Shiloh
+shimmer
+shimmering
+shin
+shinbone
+shine
+shined
+shiner
+shiners
+shines
+shingle
+shingles
+shining
+shiningly
+Shinto
+Shintoism
+Shintoize
+Shintoizes
+shiny
+ship
+shipboard
+shipbuilding
+Shipley
+shipmate
+shipment
+shipments
+shipped
+shipper
+shippers
+shipping
+ships
+shipshape
+shipwreck
+shipwrecked
+shipwrecks
+shipyard
+shire
+shirk
+shirker
+shirking
+shirks
+Shirley
+shirt
+shirting
+shirts
+shit
+Shiva
+shiver
+shivered
+shiverer
+shivering
+shivers
+Shmuel
+shoal
+shoals
+shock
+shocked
+shocker
+shockers
+shocking
+shockingly
+Shockley
+shocks
+shod
+shoddy
+shoe
+shoed
+shoehorn
+shoeing
+shoelace
+shoemaker
+shoes
+shoestring
+Shoji
+shone
+shook
+shoot
+shooter
+shooters
+shooting
+shootings
+shoots
+shop
+shopkeeper
+shopkeepers
+shopped
+shopper
+shoppers
+shopping
+shops
+shopworn
+shore
+shoreline
+shores
+Shorewood
+shorn
+short
+shortage
+shortages
+shortcoming
+shortcomings
+shortcut
+shortcuts
+shorted
+shorten
+shortened
+shortening
+shortens
+shorter
+shortest
+shortfall
+shorthand
+shorthanded
+shorting
+shortish
+shortly
+shortness
+shorts
+shortsighted
+shortstop
+Shoshone
+shot
+shotgun
+shotguns
+shots
+should
+shoulder
+shouldered
+shouldering
+shoulders
+shout
+shouted
+shouter
+shouters
+shouting
+shouts
+shove
+shoved
+shovel
+shoveled
+shovels
+shoves
+shoving
+show
+showboat
+showcase
+showdown
+showed
+shower
+showered
+showering
+showers
+showing
+showings
+shown
+showpiece
+showroom
+shows
+showy
+shrank
+shrapnel
+shred
+shredder
+shredding
+shreds
+Shreveport
+shrew
+shrewd
+shrewdest
+shrewdly
+shrewdness
+shrews
+shriek
+shrieked
+shrieking
+shrieks
+shrill
+shrilled
+shrilling
+shrillness
+shrilly
+shrimp
+shrine
+shrines
+shrink
+shrinkable
+shrinkage
+shrinking
+shrinks
+shrivel
+shriveled
+shroud
+shrouded
+shrub
+shrubbery
+shrubs
+shrug
+shrugs
+shrunk
+shrunken
+Shu
+shudder
+shuddered
+shuddering
+shudders
+shuffle
+shuffleboard
+shuffled
+shuffles
+shuffling
+Shulman
+shun
+shuns
+shunt
+shut
+shutdown
+shutdowns
+shutoff
+shutout
+shuts
+shutter
+shuttered
+shutters
+shutting
+shuttle
+shuttlecock
+shuttled
+shuttles
+shuttling
+shy
+Shylock
+Shylockian
+shyly
+shyness
+Siam
+Siamese
+Sian
+Siberia
+Siberian
+Sibley
+sibling
+siblings
+Sicilian
+Siciliana
+Sicilians
+Sicily
+sick
+sicken
+sicker
+sickest
+sickle
+sickly
+sickness
+sicknesses
+sickroom
+side
+sidearm
+sideband
+sideboard
+sideboards
+sideburns
+sidecar
+sided
+sidelight
+sidelights
+sideline
+sidereal
+sides
+sidesaddle
+sideshow
+sidestep
+sidetrack
+sidewalk
+sidewalks
+sideways
+sidewise
+siding
+sidings
+Sidney
+siege
+Siegel
+sieges
+Siegfried
+Sieglinda
+Siegmund
+Siemens
+Siena
+sierra
+sieve
+sieves
+Sifford
+sift
+sifted
+sifter
+sifting
+SIGGRAPH
+sigh
+sighed
+sighing
+sighs
+sight
+sighted
+sighting
+sightings
+sightly
+sights
+sightseeing
+sigma
+Sigmund
+sign
+signal
+signaled
+signaling
+signalled
+signalling
+signally
+signals
+signature
+signatures
+signed
+signer
+signers
+signet
+significance
+significant
+significantly
+significants
+signification
+signified
+signifies
+signify
+signifying
+signing
+signs
+Sikh
+Sikhes
+Sikhs
+Sikkim
+Sikkimese
+Sikorsky
+Silas
+silence
+silenced
+silencer
+silencers
+silences
+silencing
+silent
+silently
+silhouette
+silhouetted
+silhouettes
+silica
+silicate
+silicon
+silicone
+silk
+silken
+silkier
+silkiest
+silkily
+Silkine
+silks
+silky
+sill
+silliest
+silliness
+sills
+silly
+silo
+silt
+silted
+silting
+silts
+silver
+silvered
+silvering
+Silverman
+silvers
+silversmith
+Silverstein
+silverware
+silvery
+similar
+similarities
+similarity
+similarly
+simile
+similitude
+Simla
+simmer
+simmered
+simmering
+simmers
+Simmons
+Simmonsville
+Simms
+Simon
+Simons
+Simonson
+simple
+simpleminded
+simpleness
+simpler
+simplest
+simpleton
+simplex
+simplicities
+simplicity
+simplification
+simplifications
+simplified
+simplifier
+simplifiers
+simplifies
+simplify
+simplifying
+simplistic
+simply
+Simpson
+Sims
+SIMULA
+Simula
+simulate
+simulated
+simulates
+simulating
+simulation
+simulations
+simulator
+simulators
+simulcast
+simultaneity
+simultaneous
+simultaneously
+Sinai
+Sinatra
+Sinbad
+since
+sincere
+sincerely
+sincerest
+sincerity
+Sinclair
+sine
+sines
+sinew
+sinews
+sinewy
+sinful
+sinfully
+sinfulness
+sing
+singable
+Singapore
+Singborg
+singe
+singed
+singer
+singers
+singing
+singingly
+single
+singled
+singlehanded
+singleness
+singles
+singlet
+singleton
+singletons
+singling
+singly
+sings
+singsong
+singular
+singularities
+singularity
+singularly
+sinister
+sink
+sinked
+sinker
+sinkers
+sinkhole
+sinking
+sinks
+sinned
+sinner
+sinners
+sinning
+Sino-
+sins
+sinuous
+sinus
+sinusoid
+sinusoidal
+sinusoids
+Sioux
+sip
+siphon
+siphoning
+sipping
+sips
+sir
+sire
+sired
+siren
+sirens
+sires
+Sirius
+sirs
+sirup
+sister
+sisterly
+sisters
+Sistine
+Sisyphean
+Sisyphus
+sit
+site
+sited
+sites
+siting
+sits
+sitter
+sitters
+sitting
+sittings
+situ
+situate
+situated
+situates
+situating
+situation
+situational
+situationally
+situations
+Siva
+six
+sixes
+sixfold
+sixgun
+sixpence
+sixteen
+sixteens
+sixteenth
+sixth
+sixties
+sixtieth
+sixty
+sizable
+size
+sized
+sizes
+sizing
+sizings
+sizzle
+skate
+skated
+skater
+skaters
+skates
+skating
+skeletal
+skeleton
+skeletons
+skeptic
+skeptical
+skeptically
+skepticism
+skeptics
+sketch
+sketchbook
+sketched
+sketches
+sketchily
+sketching
+sketchpad
+sketchy
+skew
+skewed
+skewer
+skewers
+skewing
+skews
+ski
+skid
+skidding
+skied
+skies
+skiff
+skiing
+skill
+skilled
+skillet
+skillful
+skillfully
+skillfulness
+skills
+skim
+skimmed
+skimming
+skimp
+skimped
+skimping
+skimps
+skimpy
+skims
+skin
+skindive
+skinned
+skinner
+skinners
+skinning
+skinny
+skins
+skip
+skipped
+skipper
+skippers
+skipping
+Skippy
+skips
+skirmish
+skirmished
+skirmisher
+skirmishers
+skirmishes
+skirmishing
+skirt
+skirted
+skirting
+skirts
+skis
+skit
+Skopje
+skulk
+skulked
+skulker
+skulking
+skulks
+skull
+skullcap
+skullduggery
+skulls
+skunk
+skunks
+sky
+Skye
+skyhook
+skyjack
+skylark
+skylarking
+skylarks
+skylight
+skylights
+skyline
+skyrockets
+skyscraper
+skyscrapers
+slab
+slack
+slacken
+slacker
+slacking
+slackly
+slackness
+slacks
+slain
+slam
+slammed
+slamming
+slams
+slander
+slanderer
+slanderous
+slanders
+slang
+slant
+slanted
+slanting
+slants
+slap
+slapped
+slapping
+slaps
+slapstick
+slash
+slashed
+slashes
+slashing
+slat
+slate
+slated
+slater
+slates
+slats
+slaughter
+slaughtered
+slaughterhouse
+slaughtering
+slaughters
+Slav
+slave
+slaver
+slavery
+slaves
+Slavic
+Slavicize
+Slavicizes
+slavish
+Slavization
+Slavizations
+Slavize
+Slavizes
+Slavonic
+Slavonicize
+Slavonicizes
+Slavs
+slay
+slayer
+slayers
+slaying
+slays
+sled
+sledding
+sledge
+sledgehammer
+sledges
+sleds
+sleek
+sleep
+sleeper
+sleepers
+sleepily
+sleepiness
+sleeping
+sleepless
+sleeplessly
+sleeplessness
+sleeps
+sleepwalk
+sleepy
+sleet
+sleeve
+sleeves
+sleigh
+sleighs
+sleight
+slender
+slenderer
+slept
+Slesinger
+sleuth
+slew
+slewing
+slice
+sliced
+slicer
+slicers
+slices
+slicing
+slick
+slicker
+slickers
+slicks
+slid
+slide
+slider
+sliders
+slides
+sliding
+slight
+slighted
+slighter
+slightest
+slighting
+slightly
+slightness
+slights
+slim
+slime
+slimed
+slimly
+slimy
+sling
+slinging
+slings
+slingshot
+slip
+slippage
+slipped
+slipper
+slipperiness
+slippers
+slippery
+slipping
+slips
+slit
+slither
+slits
+sliver
+Sloan
+Sloane
+slob
+Slocum
+slogan
+slogans
+sloop
+slop
+slope
+sloped
+sloper
+slopers
+slopes
+sloping
+slopped
+sloppiness
+slopping
+sloppy
+slops
+slot
+sloth
+slothful
+sloths
+slots
+slotted
+slotting
+slouch
+slouched
+slouches
+slouching
+Slovakia
+Slovenia
+slow
+slowdown
+slowed
+slower
+slowest
+slowing
+slowly
+slowness
+slows
+sludge
+slug
+sluggish
+sluggishly
+sluggishness
+slugs
+sluice
+slum
+slumber
+slumbered
+slumming
+slump
+slumped
+slumps
+slums
+slung
+slur
+slurp
+slurring
+slurry
+slurs
+sly
+slyly
+smack
+smacked
+smacking
+smacks
+small
+smaller
+smallest
+Smalley
+smallish
+smallness
+smallpox
+smalltime
+Smallwood
+smart
+smarted
+smarter
+smartest
+smartly
+smartness
+smash
+smashed
+smasher
+smashers
+smashes
+smashing
+smashingly
+smattering
+smear
+smeared
+smearing
+smears
+smell
+smelled
+smelling
+smells
+smelly
+smelt
+smelter
+smelts
+smile
+smiled
+smiles
+smiling
+smilingly
+smirk
+smite
+smith
+smithereens
+Smithfield
+smiths
+Smithson
+Smithsonian
+Smithtown
+smithy
+smitten
+smock
+smocking
+smocks
+smog
+smokable
+smoke
+smoked
+smoker
+smokers
+smokes
+smokescreen
+smokestack
+smokies
+smoking
+smoky
+smolder
+smoldered
+smoldering
+smolders
+smooch
+smooth
+smoothbore
+smoothed
+smoother
+smoothes
+smoothest
+smoothing
+smoothly
+smoothness
+smote
+smother
+smothered
+smothering
+smothers
+Smucker
+smudge
+smug
+smuggle
+smuggled
+smuggler
+smugglers
+smuggles
+smuggling
+smut
+smutty
+Smyrna
+Smythe
+snack
+snafu
+snag
+snail
+snails
+snake
+snaked
+snakelike
+snakes
+snap
+snapdragon
+snapped
+snapper
+snappers
+snappily
+snapping
+snappy
+snaps
+snapshot
+snapshots
+snare
+snared
+snares
+snaring
+snark
+snarl
+snarled
+snarling
+snatch
+snatched
+snatches
+snatching
+snazzy
+Snead
+sneak
+sneaked
+sneaker
+sneakers
+sneakier
+sneakiest
+sneakily
+sneakiness
+sneaking
+sneaks
+sneaky
+Sneed
+sneer
+sneered
+sneering
+sneers
+sneeze
+sneezed
+sneezes
+sneezing
+Snider
+sniff
+sniffed
+sniffing
+sniffle
+sniffs
+snifter
+snigger
+snip
+snipe
+snippet
+snivel
+snob
+snobbery
+snobbish
+Snodgrass
+snoop
+snooped
+snooping
+snoops
+snoopy
+snore
+snored
+snores
+snoring
+snorkel
+snort
+snorted
+snorting
+snorts
+snotty
+snout
+snouts
+snow
+snowball
+Snowbelt
+snowed
+snowfall
+snowflake
+snowier
+snowiest
+snowily
+snowing
+snowman
+snowmen
+snows
+snowshoe
+snowshoes
+snowstorm
+snowy
+snub
+snuff
+snuffed
+snuffer
+snuffing
+snuffs
+snug
+snuggle
+snuggled
+snuggles
+snuggling
+snugly
+snugness
+Snyder
+so
+soak
+soaked
+soaking
+soaks
+soap
+soaped
+soaping
+soaps
+soapy
+soar
+soared
+soaring
+soars
+sob
+sobbing
+sober
+sobered
+sobering
+soberly
+soberness
+sobers
+sobriety
+sobs
+soccer
+sociability
+sociable
+sociably
+social
+socialism
+socialist
+socialists
+socialize
+socialized
+socializes
+socializing
+socially
+societal
+societies
+society
+socioeconomic
+sociological
+sociologically
+sociologist
+sociologists
+sociology
+sock
+socked
+socket
+sockets
+socking
+socks
+Socrates
+Socratic
+sod
+soda
+Soddy
+sodium
+sodomy
+sods
+sofa
+sofas
+Sofia
+soft
+softball
+soften
+softened
+softening
+softens
+softer
+softest
+softly
+softness
+software
+softwares
+soggy
+soil
+soiled
+soiling
+soils
+soiree
+sojourn
+sojourner
+sojourners
+Sol
+solace
+solaced
+solar
+sold
+solder
+soldered
+soldier
+soldiering
+soldierly
+soldiers
+sole
+solely
+solemn
+solemnity
+solemnly
+solemnness
+solenoid
+soles
+solicit
+solicitation
+solicited
+soliciting
+solicitor
+solicitous
+solicits
+solicitude
+solid
+solidarity
+solidification
+solidified
+solidifies
+solidify
+solidifying
+solidity
+solidly
+solidness
+solids
+soliloquy
+solitaire
+solitary
+solitude
+solitudes
+Solly
+solo
+Solomon
+Solon
+solos
+Soloviev
+solstice
+solubility
+soluble
+solution
+solutions
+solvable
+solve
+solved
+solvent
+solvents
+solver
+solvers
+solves
+solving
+Somali
+Somalia
+Somalis
+somatic
+somber
+somberly
+some
+somebody
+someday
+somehow
+someone
+someplace
+Somers
+somersault
+Somerset
+Somerville
+something
+sometime
+sometimes
+somewhat
+somewhere
+sommelier
+Sommerfeld
+somnolent
+son
+sonar
+sonata
+Sonenberg
+song
+songbook
+songs
+sonic
+sonnet
+sonnets
+sonny
+Sonoma
+Sonora
+sons
+Sony
+soon
+sooner
+soonest
+soot
+sooth
+soothe
+soothed
+soother
+soothes
+soothing
+soothsayer
+Sophia
+Sophias
+Sophie
+sophisticated
+sophistication
+sophistry
+Sophoclean
+Sophocles
+sophomore
+sophomores
+soprano
+sorcerer
+sorcerers
+sorcery
+sordid
+sordidly
+sordidness
+sore
+sorely
+soreness
+Sorensen
+Sorenson
+sorer
+sores
+sorest
+sorghum
+sorority
+sorrel
+Sorrentine
+sorrier
+sorriest
+sorrow
+sorrowful
+sorrowfully
+sorrows
+sorry
+sort
+sorted
+sorter
+sorters
+sortie
+sorting
+sorts
+sought
+soul
+soulful
+souls
+sound
+sounded
+sounder
+soundest
+sounding
+soundings
+soundly
+soundness
+soundproof
+sounds
+soup
+souped
+soups
+sour
+source
+sources
+sourdough
+soured
+sourer
+sourest
+souring
+sourly
+sourness
+sours
+Sousa
+south
+Southampton
+southbound
+southeast
+southeastern
+southern
+southerner
+southerners
+southernmost
+Southernwood
+Southey
+Southfield
+southland
+southpaw
+southward
+southwest
+southwestern
+souvenir
+sovereign
+sovereigns
+sovereignty
+soviet
+soviets
+sow
+sown
+soy
+soya
+soybean
+spa
+space
+spacecraft
+spaced
+spacer
+spacers
+spaces
+spaceship
+spaceships
+spacesuit
+Spacewar
+spacing
+spacings
+spacious
+spaded
+spades
+spading
+Spafford
+Spahn
+Spain
+Spalding
+span
+spandrel
+Spaniard
+Spaniardization
+Spaniardizations
+Spaniardize
+Spaniardizes
+Spaniards
+spaniel
+Spanish
+Spanishize
+Spanishizes
+spank
+spanked
+spanking
+spanks
+spanned
+spanner
+spanners
+spanning
+spans
+SPARC
+SPARCstation
+spare
+spared
+sparely
+spareness
+sparer
+spares
+sparest
+sparing
+sparingly
+spark
+sparked
+sparking
+sparkle
+sparkling
+Sparkman
+sparks
+sparring
+sparrow
+sparrows
+sparse
+sparsely
+sparseness
+sparser
+sparsest
+Sparta
+Spartan
+Spartanize
+Spartanizes
+spasm
+spastic
+spat
+spate
+spates
+spatial
+spatially
+spatter
+spattered
+spatula
+Spaulding
+spawn
+spawned
+spawning
+spawns
+spayed
+speak
+speakable
+speakeasy
+speaker
+Speakerphone
+Speakerphones
+speakers
+speaking
+speaks
+spear
+speared
+spearmint
+spears
+spec
+special
+specialist
+specialists
+specialization
+specializations
+specialize
+specialized
+specializes
+specializing
+specially
+specials
+specialties
+specialty
+specie
+species
+specifiable
+specific
+specifically
+specification
+specifications
+specificity
+specifics
+specified
+specifier
+specifiers
+specifies
+specify
+specifying
+specimen
+specimens
+specious
+speck
+speckle
+speckled
+speckles
+specks
+spectacle
+spectacled
+spectacles
+spectacular
+spectacularly
+spectator
+spectators
+specter
+specters
+Spector
+spectra
+spectral
+spectrogram
+spectrograms
+spectrograph
+spectrographic
+spectrography
+spectrometer
+spectrophotometer
+spectrophotometry
+spectroscope
+spectroscopic
+spectroscopy
+spectrum
+speculate
+speculated
+speculates
+speculating
+speculation
+speculations
+speculative
+speculator
+speculators
+sped
+speech
+speeches
+speechless
+speechlessness
+speed
+speedboat
+speeded
+speeder
+speeders
+speedily
+speeding
+speedometer
+speeds
+speedup
+speedups
+speedy
+spell
+spellbound
+spelled
+speller
+spellers
+spelling
+spellings
+spells
+Spencer
+Spencerian
+spend
+spender
+spenders
+spending
+spends
+Spenglerian
+spent
+sperm
+Sperry
+sphere
+spheres
+spherical
+spherically
+spheroid
+spheroidal
+sphinx
+Spica
+spice
+spiced
+spices
+spiciness
+spicy
+spider
+spiders
+spidery
+Spiegel
+spies
+spigot
+spike
+spiked
+spikes
+spill
+spilled
+spiller
+spilling
+spills
+spilt
+spin
+spinach
+spinal
+spinally
+spindle
+spindled
+spindling
+spine
+spinnaker
+spinner
+spinners
+spinning
+spinoff
+spins
+spinster
+spiny
+spiral
+spiraled
+spiraling
+spirally
+spire
+spires
+spirit
+spirited
+spiritedly
+spiriting
+spirits
+spiritual
+spiritually
+spirituals
+Spiro
+spit
+spite
+spited
+spiteful
+spitefully
+spitefulness
+spites
+spitfire
+spiting
+spits
+spitting
+spittle
+Spitz
+splash
+splashed
+splashes
+splashing
+splashy
+spleen
+splendid
+splendidly
+splendor
+splenetic
+splice
+spliced
+splicer
+splicers
+splices
+splicing
+splicings
+spline
+splines
+splint
+splinter
+splintered
+splinters
+splintery
+split
+splits
+splitter
+splitters
+splitting
+splurge
+spoil
+spoilage
+spoiled
+spoiler
+spoilers
+spoiling
+spoils
+Spokane
+spoke
+spoked
+spoken
+spokes
+spokesman
+spokesmen
+sponge
+sponged
+sponger
+spongers
+sponges
+sponging
+spongy
+sponsor
+sponsored
+sponsoring
+sponsors
+sponsorship
+spontaneity
+spontaneous
+spontaneously
+spoof
+spook
+spooky
+spool
+spooled
+spooler
+spoolers
+spooling
+spools
+spoon
+spooned
+spoonful
+spooning
+spoons
+sporadic
+spore
+spores
+sport
+sported
+sporting
+sportingly
+sportive
+sports
+sportsman
+sportsmen
+sportswear
+sportswriter
+sportswriting
+sporty
+Sposato
+spot
+spotless
+spotlessly
+spotlight
+spots
+spotted
+spotter
+spotters
+spotting
+spotty
+spouse
+spouses
+spout
+spouted
+spouting
+spouts
+Sprague
+sprain
+sprang
+sprawl
+sprawled
+sprawling
+sprawls
+spray
+sprayed
+sprayer
+spraying
+sprays
+spread
+spreader
+spreaders
+spreading
+spreadings
+spreads
+spreadsheet
+spree
+sprees
+sprig
+sprightly
+spring
+springboard
+springer
+springers
+Springfield
+springier
+springiest
+springiness
+springing
+springs
+springtime
+springy
+sprinkle
+sprinkled
+sprinkler
+sprinkles
+sprinkling
+sprint
+sprinted
+sprinter
+sprinters
+sprinting
+sprints
+sprite
+sprocket
+Sproul
+sprout
+sprouted
+sprouting
+spruce
+spruced
+sprung
+Spuds
+spun
+spunk
+spur
+spurious
+spurn
+spurned
+spurning
+spurns
+spurs
+spurt
+spurted
+spurting
+spurts
+sputter
+sputtered
+spy
+spyglass
+spying
+squabble
+squabbled
+squabbles
+squabbling
+squad
+squadron
+squadrons
+squads
+squalid
+squall
+squalls
+squander
+square
+squared
+squarely
+squareness
+squarer
+squares
+squarest
+Squaresville
+squaring
+squash
+squashed
+squashing
+squat
+squats
+squatting
+squaw
+squawk
+squawked
+squawking
+squawks
+squeak
+squeaked
+squeaking
+squeaks
+squeaky
+squeal
+squealed
+squealing
+squeals
+squeamish
+squeeze
+squeezed
+squeezer
+squeezes
+squeezing
+squelch
+Squibb
+squid
+squint
+squinted
+squinting
+squire
+squires
+squirm
+squirmed
+squirms
+squirmy
+squirrel
+squirreled
+squirreling
+squirrels
+squirt
+squishy
+Sri
+stab
+stabbed
+stabbing
+stabile
+stabilities
+stability
+stabilize
+stabilized
+stabilizer
+stabilizers
+stabilizes
+stabilizing
+stable
+stabled
+stabler
+stables
+stabling
+stably
+stabs
+stack
+stacked
+stacking
+stacks
+Stacy
+stadia
+stadium
+staff
+staffed
+staffer
+staffers
+staffing
+Stafford
+Staffordshire
+staffs
+stag
+stage
+stagecoach
+stagecoaches
+staged
+stager
+stagers
+stages
+stagger
+staggered
+staggering
+staggers
+staging
+stagnant
+stagnate
+stagnation
+stags
+Stahl
+staid
+stain
+stained
+staining
+stainless
+stains
+stair
+staircase
+staircases
+stairs
+stairway
+stairways
+stairwell
+stake
+staked
+stakes
+stalactite
+stale
+stalemate
+Staley
+Stalin
+Stalinist
+Stalins
+stalk
+stalked
+stalking
+stall
+stalled
+stalling
+stallings
+stallion
+stalls
+stalwart
+stalwartly
+stamen
+stamens
+Stamford
+stamina
+stammer
+stammered
+stammerer
+stammering
+stammers
+stamp
+stamped
+stampede
+stampeded
+stampedes
+stampeding
+stamper
+stampers
+stamping
+stamps
+Stan
+stanch
+stanchest
+stanchion
+stand
+standard
+standardization
+standardize
+standardized
+standardizes
+standardizing
+standardly
+standards
+standby
+standing
+standings
+Standish
+standoff
+standpoint
+standpoints
+stands
+standstill
+Stanford
+Stanhope
+Stanley
+Stans
+Stanton
+stanza
+stanzas
+staphylococcus
+staple
+stapler
+staples
+Stapleton
+stapling
+star
+starboard
+starch
+starched
+stardom
+stare
+stared
+starer
+stares
+starfish
+Stargate
+staring
+stark
+Starkey
+starkly
+starlet
+starlight
+starling
+Starr
+starred
+starring
+starry
+stars
+start
+started
+starter
+starters
+starting
+startle
+startled
+startles
+startling
+starts
+startup
+startups
+starvation
+starve
+starved
+starves
+starving
+state
+stated
+stately
+statement
+statements
+Staten
+states
+statesman
+statesmanlike
+statesmen
+statewide
+static
+statically
+stating
+station
+stationary
+stationed
+stationer
+stationery
+stationing
+stationmaster
+stations
+statistic
+statistical
+statistically
+statistician
+statisticians
+statistics
+Statler
+statue
+statues
+statuesque
+statuesquely
+statuesqueness
+statuette
+stature
+status
+statuses
+statute
+statutes
+statutorily
+statutoriness
+statutory
+Stauffer
+staunch
+staunchest
+staunchly
+Staunton
+stave
+staved
+staves
+stay
+stayed
+staying
+stays
+stead
+steadfast
+steadfastly
+steadfastness
+steadied
+steadier
+steadies
+steadiest
+steadily
+steadiness
+steady
+steadying
+steak
+steaks
+steal
+stealer
+stealing
+steals
+stealth
+stealthily
+stealthy
+steam
+steamboat
+steamboats
+steamed
+steamer
+steamers
+steaming
+steams
+steamship
+steamships
+steamy
+Stearns
+steed
+steel
+Steele
+steeled
+steelers
+steeling
+steelmaker
+steels
+steely
+Steen
+steep
+steeped
+steeper
+steepest
+steeping
+steeple
+steeples
+steeply
+steepness
+steeps
+steer
+steerable
+steered
+steering
+steers
+Stefan
+Stegosaurus
+Steinbeck
+Steinberg
+Steiner
+Stella
+stellar
+stem
+stemmed
+stemming
+stems
+stench
+stenches
+stencil
+stencils
+Stendhal
+Stendler
+stenographer
+stenographers
+stenotype
+step
+stepchild
+Stephan
+Stephanie
+Stephen
+Stephens
+Stephenson
+stepmother
+stepmothers
+stepped
+stepper
+stepping
+steps
+stepson
+stepwise
+stereo
+stereos
+stereoscopic
+stereotype
+stereotyped
+stereotypes
+stereotypical
+sterile
+sterilization
+sterilizations
+sterilize
+sterilized
+sterilizer
+sterilizes
+sterilizing
+sterling
+stern
+Sternberg
+sternly
+sternness
+Sterno
+sterns
+stethoscope
+Stetson
+Stetsons
+Steuben
+Steve
+stevedore
+Steven
+Stevens
+Stevenson
+Stevie
+stew
+steward
+stewardess
+stewards
+Stewart
+stewed
+stews
+stick
+sticker
+stickers
+stickier
+stickiest
+stickily
+stickiness
+sticking
+stickleback
+sticks
+sticky
+stiff
+stiffen
+stiffens
+stiffer
+stiffest
+stiffly
+stiffness
+stiffs
+stifle
+stifled
+stifles
+stifling
+stigma
+stigmata
+stile
+stiles
+stiletto
+still
+stillbirth
+stillborn
+stilled
+stiller
+stillest
+stilling
+stillness
+stills
+Stillwell
+stilt
+stilts
+Stimson
+stimulant
+stimulants
+stimulate
+stimulated
+stimulates
+stimulating
+stimulation
+stimulations
+stimulative
+stimuli
+stimulus
+sting
+stinging
+stings
+stingy
+stink
+stinker
+stinkers
+stinking
+stinks
+stint
+stipend
+stipends
+stipulate
+stipulated
+stipulates
+stipulating
+stipulation
+stipulations
+stir
+Stirling
+stirred
+stirrer
+stirrers
+stirring
+stirringly
+stirrings
+stirrup
+stirs
+stitch
+stitched
+stitches
+stitching
+stochastic
+stochastically
+stock
+stockade
+stockades
+stockbroker
+stocked
+stocker
+stockers
+stockholder
+stockholders
+Stockholm
+stocking
+stockings
+stockpile
+stockroom
+stocks
+Stockton
+stocky
+stodgy
+stoichiometry
+stoke
+Stokes
+stole
+stolen
+stoles
+stolid
+stomach
+stomached
+stomacher
+stomaches
+stomaching
+stomp
+Stone
+stoned
+Stonehenge
+stones
+stoning
+stony
+stood
+stooge
+stool
+stoop
+stooped
+stooping
+stoops
+stop
+stopcock
+stopcocks
+stopgap
+stopover
+stoppable
+stoppage
+stopped
+stopper
+stoppers
+stopping
+stops
+stopwatch
+storage
+storages
+store
+stored
+storehouse
+storehouses
+storekeeper
+storeroom
+stores
+Storey
+Storeyed
+Storeys
+storied
+stories
+storing
+stork
+storks
+storm
+stormed
+stormier
+stormiest
+storminess
+storming
+storms
+stormy
+story
+storyboard
+storyteller
+Stouffer
+stout
+stouter
+stoutest
+stoutly
+stoutness
+stove
+stoves
+stow
+Stowe
+stowed
+straddle
+strafe
+straggle
+straggled
+straggler
+stragglers
+straggles
+straggling
+straight
+straightaway
+straighten
+straightened
+straightens
+straighter
+straightest
+straightforward
+straightforwardly
+straightforwardness
+straightness
+straightway
+strain
+strained
+strainer
+strainers
+straining
+strains
+strait
+straiten
+straits
+strand
+stranded
+stranding
+strands
+strange
+strangely
+strangeness
+stranger
+strangers
+strangest
+strangle
+strangled
+strangler
+stranglers
+strangles
+strangling
+stranglings
+strangulation
+strangulations
+strap
+straps
+Strasbourg
+stratagem
+stratagems
+strategic
+strategies
+strategist
+strategy
+Stratford
+stratification
+stratifications
+stratified
+stratifies
+stratify
+stratosphere
+stratospheric
+Stratton
+stratum
+Strauss
+Stravinsky
+straw
+strawberries
+strawberry
+straws
+stray
+strayed
+strays
+streak
+streaked
+streaks
+stream
+streamed
+streamer
+streamers
+streaming
+streamline
+streamlined
+streamliner
+streamlines
+streamlining
+streams
+street
+streetcar
+streetcars
+streeters
+streets
+strength
+strengthen
+strengthened
+strengthener
+strengthening
+strengthens
+strengths
+strenuous
+strenuously
+streptococcus
+stress
+stressed
+stresses
+stressful
+stressing
+stretch
+stretched
+stretcher
+stretchers
+stretches
+stretching
+strew
+strewn
+strews
+stricken
+Strickland
+strict
+stricter
+strictest
+strictly
+strictness
+stricture
+stride
+strider
+strides
+striding
+strife
+strike
+strikebreaker
+striker
+strikers
+strikes
+striking
+strikingly
+Strindberg
+string
+stringed
+stringent
+stringently
+stringer
+stringers
+stringier
+stringiest
+stringiness
+stringing
+strings
+stringy
+strip
+stripe
+striped
+stripes
+stripped
+stripper
+strippers
+stripping
+strips
+striptease
+strive
+striven
+strives
+striving
+strivings
+strobe
+strobed
+strobes
+stroboscopic
+strode
+stroke
+stroked
+stroker
+strokers
+strokes
+stroking
+stroll
+strolled
+stroller
+strolling
+strolls
+Strom
+Stromberg
+strong
+stronger
+strongest
+Strongheart
+stronghold
+strongly
+strontium
+strove
+struck
+structural
+structurally
+structure
+structured
+structurer
+structures
+structuring
+struggle
+struggled
+struggles
+struggling
+strung
+strut
+struts
+strutting
+strychnine
+Stu
+Stuart
+stub
+stubble
+Stubblefield
+Stubblefields
+stubborn
+stubbornly
+stubbornness
+stubby
+stubs
+stucco
+stuck
+stud
+Studebaker
+student
+students
+studied
+studies
+studio
+studios
+studious
+studiously
+studs
+study
+studying
+stuff
+stuffed
+stuffier
+stuffiest
+stuffing
+stuffs
+stuffy
+stumble
+stumbled
+stumbles
+stumbling
+stump
+stumped
+stumping
+stumps
+stun
+stung
+stunning
+stunningly
+stunt
+stunts
+stupefy
+stupefying
+stupendous
+stupendously
+stupid
+stupidest
+stupidities
+stupidity
+stupidly
+stupor
+Sturbridge
+sturdiness
+sturdy
+sturgeon
+Sturm
+stutter
+Stuttgart
+Stuyvesant
+Stygian
+style
+styled
+styler
+stylers
+styles
+styli
+styling
+stylish
+stylishly
+stylishness
+stylistic
+stylistically
+stylized
+stylus
+Styrofoam
+Styx
+suave
+sub
+subatomic
+subchannel
+subchannels
+subclass
+subclasses
+subcommittees
+subcomponent
+subcomponents
+subcomputation
+subcomputations
+subconscious
+subconsciously
+subculture
+subcultures
+subcycle
+subcycles
+subdirectories
+subdirectory
+subdivide
+subdivided
+subdivides
+subdividing
+subdivision
+subdivisions
+subdomains
+subdue
+subdued
+subdues
+subduing
+subexpression
+subexpressions
+subfield
+subfields
+subfile
+subfiles
+subgoal
+subgoals
+subgraph
+subgraphs
+subgroup
+subgroups
+subinterval
+subintervals
+subject
+subjected
+subjecting
+subjection
+subjective
+subjectively
+subjectivity
+subjects
+sublanguage
+sublanguages
+sublayer
+sublayers
+sublimation
+sublimations
+sublime
+sublimed
+sublist
+sublists
+submarine
+submariner
+submariners
+submarines
+submerge
+submerged
+submerges
+submerging
+submission
+submissions
+submissive
+submit
+submits
+submittal
+submitted
+submitting
+submode
+submodes
+submodule
+submodules
+submultiplexed
+subnet
+subnets
+subnetwork
+subnetworks
+suboptimal
+subordinate
+subordinated
+subordinates
+subordination
+subparts
+subphases
+subpoena
+subproblem
+subproblems
+subprocesses
+subprogram
+subprograms
+subproject
+subproof
+subproofs
+subrange
+subranges
+subroutine
+subroutines
+subs
+subschema
+subschemas
+subscribe
+subscribed
+subscriber
+subscribers
+subscribes
+subscribing
+subscript
+subscripted
+subscripting
+subscription
+subscriptions
+subscripts
+subsection
+subsections
+subsegment
+subsegments
+subsequence
+subsequences
+subsequent
+subsequently
+subservient
+subset
+subsets
+subside
+subsided
+subsides
+subsidiaries
+subsidiary
+subsidies
+subsiding
+subsidize
+subsidized
+subsidizes
+subsidizing
+subsidy
+subsist
+subsisted
+subsistence
+subsistent
+subsisting
+subsists
+subslot
+subslots
+subspace
+subspaces
+substance
+substances
+substantial
+substantially
+substantiate
+substantiated
+substantiates
+substantiating
+substantiation
+substantiations
+substantive
+substantively
+substantivity
+substation
+substations
+substitutability
+substitutable
+substitute
+substituted
+substitutes
+substituting
+substitution
+substitutions
+substrate
+substrates
+substring
+substrings
+substructure
+substructures
+subsume
+subsumed
+subsumes
+subsuming
+subsystem
+subsystems
+subtask
+subtasks
+subterfuge
+subterranean
+subtitle
+subtitled
+subtitles
+subtle
+subtleness
+subtler
+subtlest
+subtleties
+subtlety
+subtly
+subtotal
+subtract
+subtracted
+subtracting
+subtraction
+subtractions
+subtractor
+subtractors
+subtracts
+subtrahend
+subtrahends
+subtree
+subtrees
+subunit
+subunits
+suburb
+suburban
+suburbia
+suburbs
+subversion
+subversive
+subvert
+subverted
+subverter
+subverting
+subverts
+subway
+subways
+succeed
+succeeded
+succeeding
+succeeds
+success
+successes
+successful
+successfully
+succession
+successions
+successive
+successively
+successor
+successors
+succinct
+succinctly
+succinctness
+succor
+succumb
+succumbed
+succumbing
+succumbs
+such
+suck
+sucked
+sucker
+suckers
+sucking
+suckle
+suckling
+sucks
+suction
+Sudan
+Sudanese
+Sudanic
+sudden
+suddenly
+suddenness
+suds
+sudsing
+sue
+sued
+sues
+Suez
+suffer
+sufferance
+suffered
+sufferer
+sufferers
+suffering
+sufferings
+suffers
+suffice
+sufficed
+suffices
+sufficiency
+sufficient
+sufficiently
+sufficing
+suffix
+suffixed
+suffixer
+suffixes
+suffixing
+suffocate
+suffocated
+suffocates
+suffocating
+suffocation
+Suffolk
+suffrage
+suffragette
+sugar
+sugared
+sugaring
+sugarings
+sugars
+suggest
+suggested
+suggestible
+suggesting
+suggestion
+suggestions
+suggestive
+suggestively
+suggests
+suicidal
+suicidally
+suicide
+suicides
+suing
+suit
+suitability
+suitable
+suitableness
+suitably
+suitcase
+suitcases
+suite
+suited
+suiters
+suites
+suiting
+suitor
+suitors
+suits
+Sukarno
+sulfa
+sulfur
+sulfuric
+sulfurous
+sulk
+sulked
+sulkiness
+sulking
+sulks
+sulky
+sullen
+sullenly
+sullenness
+Sullivan
+sulphate
+sulphur
+sulphured
+sulphuric
+sultan
+sultans
+sultry
+Sulzberger
+sum
+sumac
+Sumatra
+Sumeria
+Sumerian
+summand
+summands
+summaries
+summarily
+summarization
+summarizations
+summarize
+summarized
+summarizes
+summarizing
+summary
+summation
+summations
+summed
+Summer
+Summerdale
+Summers
+summertime
+summing
+summit
+summitry
+summon
+summoned
+summoner
+summoners
+summoning
+summons
+summonses
+Sumner
+sumptuous
+sums
+Sumter
+sun
+sunbeam
+sunbeams
+Sunbelt
+sunbonnet
+sunburn
+sunburnt
+Sunday
+Sundays
+sunder
+sundial
+sundown
+sundries
+sundry
+sunflower
+sung
+sunglass
+sunglasses
+sunk
+sunken
+sunlight
+sunlit
+sunned
+sunning
+sunny
+Sunnyvale
+sunrise
+suns
+sunset
+sunshine
+sunspot
+suntan
+suntanned
+suntanning
+super
+superb
+superblock
+superbly
+supercomputer
+supercomputers
+superego
+superegos
+superficial
+superficially
+superfluities
+superfluity
+superfluous
+superfluously
+supergroup
+supergroups
+superhuman
+superhumanly
+superimpose
+superimposed
+superimposes
+superimposing
+superintend
+superintendent
+superintendents
+superior
+superiority
+superiors
+superlative
+superlatively
+superlatives
+supermarket
+supermarkets
+supermini
+superminis
+supernatural
+superpose
+superposed
+superposes
+superposing
+superposition
+superscript
+superscripted
+superscripting
+superscripts
+supersede
+superseded
+supersedes
+superseding
+superset
+supersets
+superstition
+superstitions
+superstitious
+superuser
+supervise
+supervised
+supervises
+supervising
+supervision
+supervisor
+supervisors
+supervisory
+supine
+supper
+suppers
+supplant
+supplanted
+supplanting
+supplants
+supple
+supplement
+supplemental
+supplementary
+supplemented
+supplementing
+supplements
+suppleness
+supplication
+supplied
+supplier
+suppliers
+supplies
+supply
+supplying
+support
+supportable
+supported
+supporter
+supporters
+supporting
+supportingly
+supportive
+supportively
+supports
+suppose
+supposed
+supposedly
+supposes
+supposing
+supposition
+suppositions
+suppress
+suppressed
+suppresses
+suppressing
+suppression
+suppressor
+suppressors
+supranational
+supremacy
+supreme
+supremely
+surcharge
+sure
+surely
+sureness
+sureties
+surety
+surf
+surface
+surfaced
+surfaceness
+surfaces
+surfacing
+surge
+surged
+surgeon
+surgeons
+surgery
+surges
+surgical
+surgically
+surging
+surliness
+surly
+surmise
+surmised
+surmises
+surmount
+surmounted
+surmounting
+surmounts
+surname
+surnames
+surpass
+surpassed
+surpasses
+surpassing
+surplus
+surpluses
+surprise
+surprised
+surprises
+surprising
+surprisingly
+surreal
+surrender
+surrendered
+surrendering
+surrenders
+surreptitious
+surrey
+surrogate
+surrogates
+surround
+surrounded
+surrounding
+surroundings
+surrounds
+surtax
+survey
+surveyed
+surveying
+surveyor
+surveyors
+surveys
+survival
+survivals
+survive
+survived
+survives
+surviving
+survivor
+survivors
+Sus
+Susan
+Susanne
+susceptible
+Susie
+suspect
+suspected
+suspecting
+suspects
+suspend
+suspended
+suspender
+suspenders
+suspending
+suspends
+suspense
+suspenses
+suspension
+suspensions
+suspicion
+suspicions
+suspicious
+suspiciously
+Susquehanna
+Sussex
+sustain
+sustained
+sustaining
+sustains
+sustenance
+Sutherland
+Sutton
+suture
+sutures
+Suwanee
+Suzanne
+suzerainty
+Suzuki
+svelte
+Svetlana
+swab
+swabbing
+swagger
+swaggered
+swaggering
+Swahili
+swain
+swains
+swallow
+swallowed
+swallowing
+swallows
+swallowtail
+swam
+swami
+swamp
+swamped
+swamping
+swamps
+swampy
+swan
+swank
+swanky
+swanlike
+swans
+Swansea
+Swanson
+swap
+swapped
+swapping
+swaps
+swarm
+swarmed
+swarming
+swarms
+Swarthmore
+Swarthout
+swarthy
+Swartz
+swastika
+swat
+swatted
+sway
+swayed
+swaying
+Swaziland
+swear
+swearer
+swearing
+swears
+sweat
+sweated
+sweater
+sweaters
+sweating
+sweats
+sweatshirt
+sweaty
+Swede
+Sweden
+Swedes
+Swedish
+Sweeney
+Sweeneys
+sweep
+sweeper
+sweepers
+sweeping
+sweepings
+sweeps
+sweepstakes
+sweet
+sweeten
+sweetened
+sweetener
+sweeteners
+sweetening
+sweetenings
+sweetens
+sweeter
+sweetest
+sweetheart
+sweethearts
+sweetish
+sweetly
+sweetness
+sweets
+swell
+swelled
+swelling
+swellings
+swells
+swelter
+Swenson
+swept
+swerve
+swerved
+swerves
+swerving
+swift
+swifter
+swiftest
+swiftly
+swiftness
+swim
+swimmer
+swimmers
+swimming
+swimmingly
+swims
+swimsuit
+Swinburne
+swindle
+swine
+swing
+swinger
+swingers
+swinging
+swings
+Swink
+swipe
+swirl
+swirled
+swirling
+swish
+swished
+swiss
+switch
+switchblade
+switchboard
+switchboards
+switched
+switcher
+switchers
+switches
+switching
+switchings
+switchman
+Switzer
+Switzerland
+swivel
+swizzle
+swollen
+swoon
+swoop
+swooped
+swooping
+swoops
+sword
+swordfish
+swords
+swore
+sworn
+swum
+swung
+Sybil
+sycamore
+sycophant
+sycophantic
+Sydney
+Sykes
+syllable
+syllables
+syllogism
+syllogisms
+syllogistic
+Sylow
+sylvan
+Sylvania
+Sylvester
+Sylvia
+Sylvie
+symbiosis
+symbiotic
+symbol
+symbolic
+symbolically
+symbolics
+symbolism
+symbolization
+symbolize
+symbolized
+symbolizes
+symbolizing
+symbols
+Symington
+symmetric
+symmetrical
+symmetrically
+symmetries
+symmetry
+sympathetic
+sympathies
+sympathize
+sympathized
+sympathizer
+sympathizers
+sympathizes
+sympathizing
+sympathizingly
+sympathy
+symphonic
+symphonies
+symphony
+symposia
+symposium
+symposiums
+symptom
+symptomatic
+symptoms
+synagogue
+synapse
+synapses
+synaptic
+synchronism
+synchronization
+synchronize
+synchronized
+synchronizer
+synchronizers
+synchronizes
+synchronizing
+synchronous
+synchronously
+synchrony
+synchrotron
+syncopate
+syndicate
+syndicated
+syndicates
+syndication
+syndrome
+syndromes
+synergism
+synergistic
+synergy
+Synge
+synod
+synonym
+synonymous
+synonymously
+synonyms
+synopses
+synopsis
+syntactic
+syntactical
+syntactically
+syntax
+syntaxes
+synthesis
+synthesize
+synthesized
+synthesizer
+synthesizers
+synthesizes
+synthesizing
+synthetic
+synthetics
+Syracuse
+Syria
+Syrian
+Syrianize
+Syrianizes
+Syrians
+syringe
+syringes
+syrup
+syrupy
+system
+systematic
+systematically
+systematize
+systematized
+systematizes
+systematizing
+systemic
+systems
+systemwide
+Szilard
+tab
+tabernacle
+tabernacles
+table
+tableau
+tableaus
+tablecloth
+tablecloths
+tabled
+tables
+tablespoon
+tablespoonful
+tablespoonfuls
+tablespoons
+tablet
+tablets
+tabling
+taboo
+taboos
+tabs
+tabular
+tabulate
+tabulated
+tabulates
+tabulating
+tabulation
+tabulations
+tabulator
+tabulators
+tachometer
+tachometers
+tacit
+tacitly
+Tacitus
+tack
+tacked
+tacking
+tackle
+tackles
+Tacoma
+tact
+tactic
+tactics
+tactile
+Taft
+tag
+tagged
+tagging
+tags
+Tahiti
+Tahoe
+tail
+tailed
+tailing
+tailor
+tailored
+tailoring
+tailors
+tails
+taint
+tainted
+Taipei
+Taiwan
+Taiwanese
+take
+taken
+taker
+takers
+takes
+taking
+takings
+tale
+talent
+talented
+talents
+tales
+talk
+talkative
+talkatively
+talkativeness
+talked
+talker
+talkers
+talkie
+talking
+talks
+tall
+Talladega
+Tallahassee
+Tallahatchie
+Tallahoosa
+Tallchief
+taller
+tallest
+Talleyrand
+tallness
+tallow
+tally
+Talmud
+Talmudism
+Talmudization
+Talmudizations
+Talmudize
+Talmudizes
+tame
+tamed
+tamely
+tameness
+tamer
+tames
+Tamil
+taming
+Tammany
+Tammanyize
+Tammanyizes
+Tampa
+tamper
+tampered
+tampering
+tampers
+tan
+Tanaka
+Tananarive
+tandem
+tang
+Tanganyika
+tangent
+tangential
+tangents
+tangible
+tangibly
+tangle
+tangled
+tangy
+tank
+tanker
+tankers
+tanks
+Tannenbaum
+tanner
+tanners
+tantalizing
+tantalizingly
+Tantalus
+tantamount
+tantrum
+tantrums
+Tanya
+Tanzania
+Taoism
+Taoist
+Taos
+tap
+tape
+taped
+taper
+tapered
+tapering
+tapers
+tapes
+tapestries
+tapestry
+taping
+tapings
+tapped
+tapper
+tappers
+tapping
+taproot
+taproots
+taps
+tar
+Tara
+Tarbell
+tardiness
+tardy
+target
+targeted
+targeting
+targets
+tariff
+tariffs
+tarry
+Tarrytown
+tart
+Tartary
+tartly
+tartness
+Tartuffe
+Tarzan
+task
+tasked
+tasking
+tasks
+Tasmania
+Tass
+tassel
+tassels
+taste
+tasted
+tasteful
+tastefully
+tastefulness
+tasteless
+tastelessly
+taster
+tasters
+tastes
+tasting
+Tate
+tatter
+tattered
+tattoo
+tattooed
+tattoos
+tau
+taught
+taunt
+taunted
+taunter
+taunting
+taunts
+Taurus
+taut
+tautly
+tautness
+tautological
+tautologically
+tautologies
+tautology
+tavern
+taverns
+Tawney
+tawny
+tax
+taxable
+taxation
+taxed
+taxes
+taxi
+taxicab
+taxicabs
+taxied
+taxiing
+taxing
+taxis
+taxonomic
+taxonomically
+taxonomy
+taxpayer
+taxpayers
+Taylor
+Taylorize
+Taylorizes
+Taylors
+Tchaikovsky
+tea
+teach
+teachable
+teacher
+teachers
+teaches
+teaching
+teachings
+teacup
+team
+teamed
+teaming
+teams
+tear
+teared
+tearful
+tearfully
+tearing
+tears
+teas
+tease
+teased
+teases
+teasing
+teaspoon
+teaspoonful
+teaspoonfuls
+teaspoons
+technical
+technicalities
+technicality
+technically
+technician
+technicians
+Technion
+technique
+techniques
+technological
+technologically
+technologies
+technologist
+technologists
+technology
+Ted
+Teddy
+tedious
+tediously
+tediousness
+tedium
+teem
+teemed
+teeming
+teems
+teen
+teenage
+teenaged
+teenager
+teenagers
+teens
+teeth
+teethe
+teethed
+teethes
+teething
+Teflon
+Tegucigalpa
+Teheran
+Tehran
+Tektronix
+telecommunication
+telecommunications
+Teledyne
+Telefunken
+telegram
+telegrams
+telegraph
+telegraphed
+telegrapher
+telegraphers
+telegraphic
+telegraphing
+telegraphs
+Telemann
+telemetry
+teleological
+teleologically
+teleology
+telepathy
+telephone
+telephoned
+telephoner
+telephoners
+telephones
+telephonic
+telephoning
+telephony
+teleprocessing
+telescope
+telescoped
+telescopes
+telescoping
+Teletex
+Teletext
+teletype
+teletypes
+televise
+televised
+televises
+televising
+television
+televisions
+televisor
+televisors
+Telex
+tell
+teller
+tellers
+telling
+tells
+TELNET
+Telnet
+temper
+temperament
+temperamental
+temperaments
+temperance
+temperate
+temperately
+temperateness
+temperature
+temperatures
+tempered
+tempering
+tempers
+tempest
+tempestuous
+tempestuously
+template
+templates
+temple
+Templeman
+temples
+Templeton
+temporal
+temporally
+temporaries
+temporarily
+temporary
+tempt
+temptation
+temptations
+tempted
+tempter
+tempters
+tempting
+temptingly
+tempts
+ten
+tenacious
+tenaciously
+tenant
+tenants
+tend
+tended
+tendencies
+tendency
+tender
+tenderly
+tenderness
+tenders
+tending
+tends
+tenement
+tenements
+TENEX
+Tenex
+tenfold
+Tenneco
+Tennessee
+Tenney
+tennis
+Tennyson
+tenor
+tenors
+tens
+tense
+tensed
+tensely
+tenseness
+tenser
+tenses
+tensest
+tensing
+tension
+tensions
+tent
+tentacle
+tentacled
+tentacles
+tentative
+tentatively
+tented
+tenth
+tenting
+tents
+tenure
+Teresa
+term
+termed
+terminal
+terminally
+terminals
+terminate
+terminated
+terminates
+terminating
+termination
+terminations
+terminator
+terminators
+terming
+terminologies
+terminology
+terminus
+terms
+termwise
+ternary
+Terpsichore
+Terra
+terrace
+terraced
+terraces
+terrain
+terrains
+Terran
+Terre
+terrestrial
+terrestrials
+terrible
+terribly
+terrier
+terriers
+terrific
+terrified
+terrifies
+terrify
+terrifying
+territorial
+territories
+territory
+terror
+terrorism
+terrorist
+terroristic
+terrorists
+terrorize
+terrorized
+terrorizes
+terrorizing
+terrors
+tertiary
+Tess
+Tessie
+test
+testability
+testable
+testament
+testaments
+tested
+tester
+testers
+testicle
+testicles
+testified
+testifier
+testifiers
+testifies
+testify
+testifying
+testimonies
+testimony
+testing
+testings
+tests
+Teutonic
+TeX
+Tex
+Texaco
+Texan
+Texans
+Texas
+Texases
+text
+textbook
+textbooks
+textile
+textiles
+Textron
+texts
+textual
+textually
+texture
+textured
+textures
+Thai
+Thailand
+Thalia
+Thames
+than
+thank
+thanked
+thankful
+thankfully
+thankfulness
+thanking
+thankless
+thanklessly
+thanklessness
+thanks
+thanksgiving
+thanksgivings
+that
+thatch
+thatches
+thats
+thaw
+thawed
+thawing
+thaws
+Thayer
+the
+Thea
+theater
+theaters
+theatrical
+theatrically
+theatricals
+Thebes
+theft
+thefts
+their
+theirs
+Thelma
+them
+thematic
+theme
+themes
+themselves
+then
+thence
+thenceforth
+Theodore
+Theodosian
+Theodosius
+theological
+theology
+theorem
+theorems
+theoretic
+theoretical
+theoretically
+theoreticians
+theories
+theorist
+theorists
+theorization
+theorizations
+theorize
+theorized
+theorizer
+theorizers
+theorizes
+theorizing
+theory
+therapeutic
+therapies
+therapist
+therapists
+therapy
+there
+thereabouts
+thereafter
+thereby
+therefore
+therein
+thereof
+thereon
+Theresa
+thereto
+thereupon
+therewith
+thermal
+thermodynamic
+thermodynamics
+Thermofax
+thermometer
+thermometers
+thermostat
+thermostats
+these
+theses
+Theseus
+thesis
+Thessalonian
+Thessaly
+Thetis
+they
+thick
+thicken
+thickens
+thicker
+thickest
+thicket
+thickets
+thickly
+thickness
+thief
+Thiensville
+thieve
+thieves
+thieving
+thigh
+thighs
+thimble
+thimbles
+Thimbu
+thin
+thing
+things
+think
+thinkable
+thinkably
+thinker
+thinkers
+thinking
+thinks
+thinly
+thinner
+thinness
+thinnest
+third
+thirdly
+thirds
+thirst
+thirsted
+thirsts
+thirsty
+thirteen
+thirteens
+thirteenth
+thirties
+thirtieth
+thirty
+this
+thistle
+Thomas
+Thomistic
+Thompson
+Thomson
+thong
+Thor
+Thoreau
+thorn
+Thornburg
+thorns
+Thornton
+thorny
+thorough
+thoroughfare
+thoroughfares
+thoroughly
+thoroughness
+Thorpe
+Thorstein
+those
+though
+thought
+thoughtful
+thoughtfully
+thoughtfulness
+thoughtless
+thoughtlessly
+thoughtlessness
+thoughts
+thousand
+thousands
+thousandth
+Thrace
+Thracian
+thrash
+thrashed
+thrasher
+thrashes
+thrashing
+thread
+threaded
+threader
+threaders
+threading
+threads
+threat
+threaten
+threatened
+threatening
+threatens
+threats
+three
+threefold
+threes
+threescore
+threshold
+thresholds
+threw
+thrice
+thrift
+thrifty
+thrill
+thrilled
+thriller
+thrillers
+thrilling
+thrillingly
+thrills
+thrive
+thrived
+thrives
+thriving
+throat
+throated
+throats
+throb
+throbbed
+throbbing
+throbs
+throne
+Throneberry
+thrones
+throng
+throngs
+throttle
+throttled
+throttles
+throttling
+through
+throughout
+throughput
+throw
+thrower
+throwing
+thrown
+throws
+thrush
+thrust
+thruster
+thrusters
+thrusting
+thrusts
+Thuban
+thud
+thuds
+thug
+thugs
+Thule
+thumb
+thumbed
+thumbing
+thumbs
+thump
+thumped
+thumping
+thunder
+thunderbolt
+thunderbolts
+thundered
+thunderer
+thunderers
+thundering
+thunders
+thunderstorm
+thunderstorms
+Thurber
+Thurman
+Thursday
+Thursdays
+thus
+thusly
+thwart
+thwarted
+thwarting
+thwarts
+thyself
+Tiber
+Tibet
+Tibetan
+Tiburon
+tick
+ticked
+ticker
+tickers
+ticket
+tickets
+ticking
+tickle
+tickled
+tickles
+tickling
+ticklish
+ticks
+Ticonderoga
+tidal
+tidally
+tide
+tided
+tides
+tidied
+tidiness
+tiding
+tidings
+tidy
+tidying
+tie
+Tieck
+tied
+Tientsin
+tier
+tiers
+ties
+Tiffany
+tiger
+tigers
+tight
+tighten
+tightened
+tightener
+tighteners
+tightening
+tightenings
+tightens
+tighter
+tightest
+tightly
+tightness
+Tigris
+Tijuana
+tilde
+tile
+tiled
+tiles
+tiling
+till
+tillable
+tilled
+tiller
+tillers
+Tillich
+Tillie
+tilling
+tills
+tilt
+tilted
+tilting
+tilts
+Tim
+timber
+timbered
+timbering
+timbers
+time
+timed
+timeless
+timelessly
+timelessness
+timely
+timeout
+timeouts
+timer
+timers
+times
+timeshare
+timeshares
+timesharing
+timestamp
+timestamps
+timetable
+timetables
+Timex
+timid
+timidity
+timidly
+timing
+timings
+Timmy
+Timon
+Timonize
+Timonizes
+Tims
+tin
+Tina
+tincture
+tinge
+tinged
+tingle
+tingled
+tingles
+tingling
+tinier
+tiniest
+tinily
+tininess
+tinker
+tinkered
+tinkering
+tinkers
+tinkle
+tinkled
+tinkles
+tinkling
+tinnier
+tinniest
+tinnily
+tinniness
+tinny
+tins
+Tinseltown
+tint
+tinted
+tinting
+tints
+tiny
+Tioga
+tip
+Tippecanoe
+tipped
+tipper
+Tipperary
+tippers
+tipping
+tips
+tiptoe
+Tirana
+tire
+tired
+tiredly
+tireless
+tirelessly
+tirelessness
+tires
+tiresome
+tiresomely
+tiresomeness
+tiring
+tissue
+tissues
+tit
+Titan
+tithe
+tither
+tithes
+tithing
+title
+titled
+titles
+Tito
+tits
+titter
+titters
+Titus
+to
+toad
+toads
+toast
+toasted
+toaster
+toasting
+toasts
+tobacco
+Tobago
+Toby
+today
+todays
+Todd
+toe
+toes
+together
+togetherness
+toggle
+toggled
+toggles
+toggling
+Togo
+toil
+toiled
+toiler
+toilet
+toilets
+toiling
+toils
+token
+tokens
+Tokyo
+Toland
+told
+Toledo
+tolerability
+tolerable
+tolerably
+tolerance
+tolerances
+tolerant
+tolerantly
+tolerate
+tolerated
+tolerates
+tolerating
+toleration
+toll
+tolled
+Tolley
+tolls
+Tolstoy
+Tom
+tomahawk
+tomahawks
+tomato
+tomatoes
+tomb
+Tombigbee
+tombs
+Tomlinson
+Tommie
+tomography
+tomorrow
+tomorrows
+Tompkins
+ton
+tone
+toned
+toner
+tones
+tongs
+tongue
+tongued
+tongues
+Toni
+tonic
+tonics
+tonight
+toning
+Tonio
+tonnage
+tons
+tonsil
+too
+took
+tool
+tooled
+tooler
+toolers
+tooling
+tools
+Toomey
+tooth
+toothbrush
+toothbrushes
+toothpaste
+toothpick
+toothpicks
+top
+Topeka
+toper
+topic
+topical
+topically
+topics
+topmost
+topography
+topological
+topologies
+topology
+topple
+toppled
+topples
+toppling
+tops
+Topsy
+Torah
+torch
+torches
+tore
+Tories
+torment
+tormented
+tormenter
+tormenters
+tormenting
+torn
+tornado
+tornadoes
+Toronto
+torpedo
+torpedoes
+torque
+Torquemada
+Torrance
+torrent
+torrents
+torrid
+tortoise
+tortoises
+torture
+tortured
+torturer
+torturers
+tortures
+torturing
+torus
+toruses
+Tory
+Toryize
+Toryizes
+Tosca
+Toscanini
+Toshiba
+toss
+tossed
+tosses
+tossing
+total
+totaled
+totaling
+totalities
+totality
+totalled
+totaller
+totallers
+totalling
+totally
+totals
+Toto
+totter
+tottered
+tottering
+totters
+touch
+touchable
+touched
+touches
+touchier
+touchiest
+touchily
+touchiness
+touching
+touchingly
+touchy
+tough
+toughen
+tougher
+toughest
+toughly
+toughness
+Toulouse
+tour
+toured
+touring
+tourist
+tourists
+tournament
+tournaments
+tours
+tow
+toward
+towards
+towed
+towel
+toweling
+towelled
+towelling
+towels
+tower
+towered
+towering
+towers
+town
+Townley
+towns
+Townsend
+township
+townships
+Towsley
+toy
+toyed
+toying
+Toynbee
+Toyota
+toys
+trace
+traceable
+traced
+tracer
+tracers
+traces
+tracing
+tracings
+track
+tracked
+tracker
+trackers
+tracking
+tracks
+tract
+tractability
+tractable
+Tractarians
+tractive
+tractor
+tractors
+tracts
+Tracy
+trade
+traded
+trademark
+trademarks
+tradeoff
+tradeoffs
+trader
+traders
+trades
+tradesman
+trading
+tradition
+traditional
+traditionally
+traditions
+traffic
+trafficked
+trafficker
+traffickers
+trafficking
+traffics
+tragedies
+tragedy
+tragic
+tragically
+trail
+trailed
+trailer
+trailers
+trailing
+trailings
+trails
+train
+trained
+trainee
+trainees
+trainer
+trainers
+training
+trains
+trait
+traitor
+traitors
+traits
+trajectories
+trajectory
+tramp
+tramped
+tramping
+trample
+trampled
+trampler
+tramples
+trampling
+tramps
+trance
+trances
+tranquil
+tranquility
+tranquilly
+transact
+transaction
+transactions
+transatlantic
+transceive
+transceiver
+transceivers
+transcend
+transcended
+transcendent
+transcending
+transcends
+transcontinental
+transcribe
+transcribed
+transcriber
+transcribers
+transcribes
+transcribing
+transcript
+transcription
+transcriptions
+transcripts
+transfer
+transferability
+transferable
+transferal
+transferals
+transference
+transferred
+transferrer
+transferrers
+transferring
+transfers
+transfinite
+transform
+transformable
+transformation
+transformational
+transformations
+transformed
+transformer
+transformers
+transforming
+transforms
+transgress
+transgressed
+transgression
+transgressions
+transience
+transiency
+transient
+transiently
+transients
+transistor
+transistorize
+transistorized
+transistorizing
+transistors
+transit
+Transite
+transition
+transitional
+transitioned
+transitions
+transitive
+transitively
+transitiveness
+transitivity
+transitory
+translatability
+translatable
+translate
+translated
+translates
+translating
+translation
+translational
+translations
+translator
+translators
+translucent
+transmission
+transmissions
+transmit
+transmits
+transmittal
+transmitted
+transmitter
+transmitters
+transmitting
+transmogrification
+transmogrify
+transpacific
+transparencies
+transparency
+transparent
+transparently
+transpire
+transpired
+transpires
+transpiring
+transplant
+transplanted
+transplanting
+transplants
+transponder
+transponders
+transport
+transportability
+transportation
+transported
+transporter
+transporters
+transporting
+transports
+transpose
+transposed
+transposes
+transposing
+transposition
+Transputer
+Transvaal
+Transylvania
+trap
+trapezoid
+trapezoidal
+trapezoids
+trapped
+trapper
+trappers
+trapping
+trappings
+traps
+trash
+Trastevere
+trauma
+traumatic
+travail
+travel
+traveled
+traveler
+travelers
+traveling
+travelings
+travels
+traversal
+traversals
+traverse
+traversed
+traverses
+traversing
+travesties
+travesty
+Travis
+tray
+trays
+treacheries
+treacherous
+treacherously
+treachery
+tread
+treading
+treads
+Treadwell
+treason
+treasure
+treasured
+treasurer
+treasures
+treasuries
+treasuring
+treasury
+treat
+treated
+treaties
+treating
+treatise
+treatises
+treatment
+treatments
+treats
+treaty
+treble
+tree
+trees
+treetop
+treetops
+trek
+treks
+tremble
+trembled
+trembles
+trembling
+tremendous
+tremendously
+tremor
+tremors
+trench
+trencher
+trenches
+trend
+trending
+trends
+Trenton
+trespass
+trespassed
+trespasser
+trespassers
+trespasses
+tress
+tresses
+Trevelyan
+trial
+trials
+triangle
+triangles
+triangular
+triangularly
+Triangulum
+Trianon
+Triassic
+tribal
+tribe
+tribes
+tribunal
+tribunals
+tribune
+tribunes
+tributary
+tribute
+tributes
+Triceratops
+Trichinella
+trichotomy
+trick
+tricked
+trickier
+trickiest
+trickiness
+tricking
+trickle
+trickled
+trickles
+trickling
+tricks
+tricky
+tried
+trier
+triers
+tries
+trifle
+trifler
+trifles
+trifling
+trigger
+triggered
+triggering
+triggers
+trigonometric
+trigonometry
+trigram
+trigrams
+trihedral
+trilateral
+trill
+trilled
+trillion
+trillions
+trillionth
+trim
+Trimble
+trimly
+trimmed
+trimmer
+trimmest
+trimming
+trimmings
+trimness
+trims
+Trinidad
+trinket
+trinkets
+trio
+trip
+triple
+tripled
+triples
+triplet
+triplets
+Triplett
+tripling
+tripod
+trips
+Tristan
+triumph
+triumphal
+triumphant
+triumphantly
+triumphed
+triumphing
+triumphs
+trivia
+trivial
+trivialities
+triviality
+trivially
+Trobriand
+trod
+Trojan
+troll
+trolley
+trolleys
+trolls
+troop
+trooper
+troopers
+troops
+Tropez
+trophies
+trophy
+tropic
+tropical
+tropics
+trot
+trots
+Trotsky
+trouble
+troubled
+troublemaker
+troublemakers
+troubles
+troubleshoot
+troubleshooter
+troubleshooters
+troubleshooting
+troubleshoots
+troublesome
+troublesomely
+troubling
+trough
+trouser
+trousers
+trout
+Troutman
+trowel
+trowels
+Troy
+truant
+truants
+truce
+truck
+trucked
+Truckee
+trucker
+truckers
+trucking
+trucks
+Trudeau
+trudge
+trudged
+Trudy
+true
+trued
+truer
+trues
+truest
+truing
+truism
+truisms
+Trujillo
+Truk
+truly
+Truman
+Trumbull
+trump
+trumped
+trumpet
+trumpeter
+trumps
+truncate
+truncated
+truncates
+truncating
+truncation
+truncations
+trunk
+trunks
+trust
+trusted
+trustee
+trustees
+trustful
+trustfully
+trustfulness
+trusting
+trustingly
+trusts
+trustworthiness
+trustworthy
+trusty
+truth
+truthful
+truthfully
+truthfulness
+truths
+try
+trying
+Tsunematsu
+tub
+tube
+tuber
+tuberculosis
+tubers
+tubes
+tubing
+tubs
+tuck
+tucked
+Tucker
+tucking
+tucks
+Tucson
+Tudor
+Tuesday
+Tuesdays
+tuft
+tufts
+tug
+tugs
+tuition
+Tulane
+tulip
+tulips
+Tulsa
+tumble
+tumbled
+tumbler
+tumblers
+tumbles
+tumbling
+tumor
+tumors
+tumult
+tumults
+tumultuous
+tunable
+tune
+tuned
+tuner
+tuners
+tunes
+tunic
+tunics
+tuning
+Tunis
+Tunisia
+Tunisian
+tunnel
+tunneled
+tunnels
+tuple
+tuples
+turban
+turbans
+turbulence
+turbulent
+turbulently
+turf
+turgid
+turgidly
+Turin
+Turing
+turkey
+turkeys
+Turkish
+Turkize
+Turkizes
+turmoil
+turmoils
+turn
+turnable
+turnaround
+turned
+turner
+turners
+turning
+turnings
+turnip
+turnips
+turnover
+turns
+turpentine
+turquoise
+turret
+turrets
+turtle
+turtleneck
+turtles
+Tuscaloosa
+Tuscan
+Tuscanize
+Tuscanizes
+Tuscany
+Tuscarora
+Tuskegee
+Tutankhamen
+Tutankhamon
+Tutankhamun
+Tutenkhamon
+tutor
+tutored
+tutorial
+tutorials
+tutoring
+tutors
+Tuttle
+twain
+twang
+twas
+tweed
+twelfth
+twelve
+twelves
+twenties
+twentieth
+twenty
+twice
+twig
+twigs
+twilight
+twilights
+twill
+twin
+twine
+twined
+twiner
+twinkle
+twinkled
+twinkler
+twinkles
+twinkling
+twins
+twirl
+twirled
+twirler
+twirling
+twirls
+twist
+twisted
+twister
+twisters
+twisting
+twists
+twitch
+twitched
+twitching
+twitter
+twittered
+twittering
+two
+twofold
+Twombly
+twos
+Tyburn
+tying
+Tyler
+Tylerize
+Tylerizes
+Tyndall
+type
+typed
+typeout
+types
+typesetter
+typewriter
+typewriters
+typhoid
+Typhon
+typical
+typically
+typicalness
+typified
+typifies
+typify
+typifying
+typing
+typist
+typists
+typo
+typographic
+typographical
+typographically
+typography
+tyrannical
+Tyrannosaurus
+tyranny
+tyrant
+tyrants
+Tyson
+Tzeltal
+ubiquitous
+ubiquitously
+ubiquity
+Udall
+Uganda
+ugh
+uglier
+ugliest
+ugliness
+ugly
+Ukraine
+Ukrainian
+Ukrainians
+Ulan
+ulcer
+ulcers
+Ullman
+Ulster
+ultimate
+ultimately
+ultra
+ultrasonic
+ULTRIX
+Ultrix
+Ulysses
+umbrage
+umbrella
+umbrellas
+umpire
+umpires
+unabated
+unabbreviated
+unable
+unacceptability
+unacceptable
+unacceptably
+unaccountable
+unaccustomed
+unachievable
+unacknowledged
+unadulterated
+unaesthetically
+unaffected
+unaffectedly
+unaffectedness
+unaided
+unalienability
+unalienable
+unalterably
+unaltered
+unambiguous
+unambiguously
+unambitious
+unanalyzable
+unanimity
+unanimous
+unanimously
+unanswerable
+unanswered
+unanticipated
+unarmed
+unary
+unassailable
+unassigned
+unassisted
+unattainability
+unattainable
+unattended
+unattractive
+unattractively
+unauthorized
+unavailability
+unavailable
+unavoidable
+unavoidably
+unaware
+unawareness
+unawares
+unbalanced
+unbearable
+unbecoming
+unbelievable
+unbiased
+unbind
+unblock
+unblocked
+unblocking
+unblocks
+unborn
+unbound
+unbounded
+unbreakable
+unbridled
+unbroken
+unbuffered
+uncancelled
+uncanny
+uncapitalized
+uncaught
+uncertain
+uncertainly
+uncertainties
+uncertainty
+unchangeable
+unchanged
+unchanging
+unclaimed
+unclassified
+uncle
+unclean
+uncleanly
+uncleanness
+unclear
+uncleared
+uncles
+unclosed
+uncomfortable
+uncomfortably
+uncommitted
+uncommon
+uncommonly
+uncompromising
+uncomputable
+unconcerned
+unconcernedly
+unconditional
+unconditionally
+unconnected
+unconscionable
+unconscious
+unconsciously
+unconsciousness
+unconstitutional
+unconstrained
+uncontrollability
+uncontrollable
+uncontrollably
+uncontrolled
+unconventional
+unconventionally
+unconvinced
+unconvincing
+uncoordinated
+uncorrectable
+uncorrected
+uncountable
+uncountably
+uncouth
+uncover
+uncovered
+uncovering
+uncovers
+undamaged
+undaunted
+undauntedly
+undecidable
+undecided
+undeclared
+undecomposable
+undefinability
+undefined
+undeleted
+undeniable
+undeniably
+under
+underbrush
+underdone
+underestimate
+underestimated
+underestimates
+underestimating
+underestimation
+underflow
+underflowed
+underflowing
+underflows
+underfoot
+undergo
+undergoes
+undergoing
+undergone
+undergraduate
+undergraduates
+underground
+underlie
+underlies
+underline
+underlined
+underlines
+underling
+underlings
+underlining
+underlinings
+underloaded
+underlying
+undermine
+undermined
+undermines
+undermining
+underneath
+underpinning
+underpinnings
+underplay
+underplayed
+underplaying
+underplays
+underscore
+underscored
+underscores
+understand
+understandability
+understandable
+understandably
+understanding
+understandingly
+understandings
+understands
+understated
+understood
+undertake
+undertaken
+undertaker
+undertakers
+undertakes
+undertaking
+undertakings
+undertook
+underwater
+underway
+underwear
+underwent
+underworld
+underwrite
+underwriter
+underwriters
+underwrites
+underwriting
+undesirability
+undesirable
+undetectable
+undetected
+undetermined
+undeveloped
+undid
+undiminished
+undirected
+undisciplined
+undiscovered
+undisturbed
+undivided
+undo
+undocumented
+undoes
+undoing
+undoings
+undone
+undoubtedly
+undress
+undressed
+undresses
+undressing
+undue
+unduly
+uneasily
+uneasiness
+uneasy
+uneconomic
+uneconomical
+unembellished
+unemployed
+unemployment
+unencrypted
+unending
+unenlightening
+unequal
+unequaled
+unequally
+unequivocal
+unequivocally
+UNESCO
+unessential
+unevaluated
+uneven
+unevenly
+unevenness
+uneventful
+unexcused
+unexpanded
+unexpected
+unexpectedly
+unexplained
+unexplored
+unextended
+unfair
+unfairly
+unfairness
+unfaithful
+unfaithfully
+unfaithfulness
+unfamiliar
+unfamiliarity
+unfamiliarly
+unfavorable
+unfettered
+unfinished
+unfit
+unfitness
+unflagging
+unfold
+unfolded
+unfolding
+unfolds
+unforeseen
+unforgeable
+unforgiving
+unformatted
+unfortunate
+unfortunately
+unfortunates
+unfounded
+unfriendliness
+unfriendly
+unfulfilled
+ungrammatical
+ungrateful
+ungratefully
+ungratefulness
+ungrounded
+unguarded
+unguided
+unhappier
+unhappiest
+unhappily
+unhappiness
+unhappy
+unharmed
+unhealthy
+unheard
+unheeded
+Unibus
+unicorn
+unicorns
+unicycle
+unidentified
+unidirectional
+unidirectionality
+unidirectionally
+unification
+unifications
+unified
+unifier
+unifiers
+unifies
+uniform
+uniformed
+uniformity
+uniformly
+uniforms
+unify
+unifying
+unilluminating
+unimaginable
+unimpeded
+unimplemented
+unimportant
+unindented
+uninitialized
+uninsulated
+unintelligible
+unintended
+unintentional
+unintentionally
+uninteresting
+uninterestingly
+uninterpreted
+uninterrupted
+uninterruptedly
+union
+unionization
+unionize
+unionized
+unionizer
+unionizers
+unionizes
+unionizing
+unions
+UniPlus
+uniprocessor
+unique
+uniquely
+uniqueness
+Uniroyal
+UniSoft
+unison
+unit
+Unitarian
+Unitarianize
+Unitarianizes
+Unitarians
+unite
+united
+unites
+unities
+uniting
+units
+unity
+Univac
+univalve
+univalves
+universal
+universality
+universally
+universals
+universe
+universes
+universities
+university
+UNIX
+Unix
+unjust
+unjustifiable
+unjustified
+unjustly
+unkind
+unkindly
+unkindness
+unknowable
+unknowing
+unknowingly
+unknown
+unknowns
+unlabelled
+unlawful
+unlawfully
+unleash
+unleashed
+unleashes
+unleashing
+unless
+unlike
+unlikely
+unlikeness
+unlimited
+unlink
+unlinked
+unlinking
+unlinks
+unload
+unloaded
+unloading
+unloads
+unlock
+unlocked
+unlocking
+unlocks
+unlucky
+unmanageable
+unmanageably
+unmanned
+unmarked
+unmarried
+unmask
+unmasked
+unmatched
+unmentionable
+unmerciful
+unmercifully
+unmistakable
+unmistakably
+unmodified
+unmoved
+unnamed
+unnatural
+unnaturally
+unnaturalness
+unnecessarily
+unnecessary
+unneeded
+unnerve
+unnerved
+unnerves
+unnerving
+unnoticed
+unobservable
+unobserved
+unobtainable
+unoccupied
+unofficial
+unofficially
+unopened
+unordered
+unpack
+unpacked
+unpacking
+unpacks
+unpaid
+unparalleled
+unparsed
+unplanned
+unpleasant
+unpleasantly
+unpleasantness
+unplug
+unpopular
+unpopularity
+unprecedented
+unpredictable
+unpredictably
+unprescribed
+unpreserved
+unprimed
+unprofitable
+unprojected
+unprotected
+unprovability
+unprovable
+unproven
+unpublished
+unqualified
+unqualifiedly
+unquestionably
+unquestioned
+unquoted
+unravel
+unraveled
+unraveling
+unravels
+unreachable
+unreal
+unrealistic
+unrealistically
+unreasonable
+unreasonableness
+unreasonably
+unrecognizable
+unrecognized
+unregulated
+unrelated
+unreliability
+unreliable
+unreported
+unrepresentable
+unresolved
+unresponsive
+unrest
+unrestrained
+unrestricted
+unrestrictedly
+unrestrictive
+unroll
+unrolled
+unrolling
+unrolls
+unruly
+unsafe
+unsafely
+unsanitary
+unsatisfactory
+unsatisfiability
+unsatisfiable
+unsatisfied
+unsatisfying
+unscrupulous
+unseeded
+unseen
+unselected
+unselfish
+unselfishly
+unselfishness
+unsent
+unsettled
+unsettling
+unshaken
+unshared
+unsigned
+unskilled
+unslotted
+unsolvable
+unsolved
+unsophisticated
+unsound
+unspeakable
+unspecified
+unstable
+unsteadiness
+unsteady
+unstructured
+unsuccessful
+unsuccessfully
+unsuitable
+unsuited
+unsupported
+unsure
+unsurprising
+unsurprisingly
+unsynchronized
+untagged
+untapped
+untenable
+unterminated
+untested
+unthinkable
+unthinking
+untidiness
+untidy
+untie
+untied
+unties
+until
+untimely
+unto
+untold
+untouchable
+untouchables
+untouched
+untoward
+untrained
+untranslated
+untreated
+untried
+untrue
+untruthful
+untruthfulness
+untying
+unusable
+unused
+unusual
+unusually
+unvarying
+unveil
+unveiled
+unveiling
+unveils
+unwanted
+unwelcome
+unwholesome
+unwieldiness
+unwieldy
+unwilling
+unwillingly
+unwillingness
+unwind
+unwinder
+unwinders
+unwinding
+unwinds
+unwise
+unwisely
+unwiser
+unwisest
+unwitting
+unwittingly
+unworthiness
+unworthy
+unwound
+unwrap
+unwrapped
+unwrapping
+unwraps
+unwritten
+up
+upbraid
+upcoming
+update
+updated
+updater
+updates
+updating
+upgrade
+upgraded
+upgrades
+upgrading
+upheld
+uphill
+uphold
+upholder
+upholders
+upholding
+upholds
+upholster
+upholstered
+upholsterer
+upholstering
+upholsters
+upkeep
+upland
+uplands
+uplift
+uplink
+uplinks
+upload
+upon
+upper
+uppermost
+upright
+uprightly
+uprightness
+uprising
+uprisings
+uproar
+uproot
+uprooted
+uprooting
+uproots
+upset
+upsets
+upshot
+upshots
+upside
+upstairs
+upstream
+Upton
+upturn
+upturned
+upturning
+upturns
+upward
+upwards
+Urania
+Uranus
+urban
+Urbana
+urchin
+urchins
+Urdu
+urge
+urged
+urgent
+urgently
+urges
+urging
+urgings
+Uri
+urinate
+urinated
+urinates
+urinating
+urination
+urine
+Uris
+urn
+urns
+Urquhart
+Ursa
+Ursula
+Ursuline
+Uruguay
+Uruguay'a
+Uruguayan
+Uruguayans
+us
+usability
+usable
+usably
+usage
+usages
+use
+used
+useful
+usefully
+usefulness
+useless
+uselessly
+uselessness
+Usenet
+Usenix
+user
+users
+uses
+usher
+ushered
+ushering
+ushers
+using
+usual
+usually
+usurp
+usurped
+usurper
+Utah
+utensil
+utensils
+Utica
+utilities
+utility
+utilization
+utilizations
+utilize
+utilized
+utilizes
+utilizing
+utmost
+utopia
+utopian
+Utopianize
+Utopianizes
+utopians
+Utrecht
+utter
+utterance
+utterances
+uttered
+uttering
+utterly
+uttermost
+utters
+Uzi
+vacancies
+vacancy
+vacant
+vacantly
+vacate
+vacated
+vacates
+vacating
+vacation
+vacationed
+vacationer
+vacationers
+vacationing
+vacations
+vacuo
+vacuous
+vacuously
+vacuum
+vacuumed
+vacuuming
+Vaduz
+vagabond
+vagabonds
+vagaries
+vagary
+vagina
+vaginas
+vagrant
+vagrantly
+vague
+vaguely
+vagueness
+vaguer
+vaguest
+Vail
+vain
+vainly
+vale
+valence
+valences
+valentine
+valentines
+Valerie
+Valery
+vales
+valet
+valets
+Valhalla
+valiant
+valiantly
+valid
+validate
+validated
+validates
+validating
+validation
+validity
+validly
+validness
+Valkyrie
+Valletta
+valley
+valleys
+Valois
+valor
+Valparaiso
+valuable
+valuables
+valuably
+valuation
+valuations
+value
+valued
+valuer
+valuers
+values
+valuing
+valve
+valves
+vampire
+van
+Vance
+Vancement
+Vancouver
+vandalize
+vandalized
+vandalizes
+vandalizing
+Vandenberg
+Vanderbilt
+Vanderburgh
+Vanderpoel
+vane
+vanes
+Vanessa
+vanguard
+vanilla
+vanish
+vanished
+vanisher
+vanishes
+vanishing
+vanishingly
+vanities
+vanity
+vanquish
+vanquished
+vanquishes
+vanquishing
+vans
+vantage
+vapor
+vaporing
+vapors
+variability
+variable
+variableness
+variables
+variably
+Varian
+variance
+variances
+variant
+variantly
+variants
+variation
+variations
+varied
+varies
+varieties
+variety
+various
+variously
+Varitype
+Varityping
+varnish
+varnishes
+vary
+varying
+varyings
+vase
+vases
+Vasquez
+vassal
+Vassar
+vast
+vaster
+vastest
+vastly
+vastness
+vat
+Vatican
+Vaticanization
+Vaticanizations
+Vaticanize
+Vaticanizes
+vats
+vaudeville
+Vaudois
+Vaughan
+Vaughn
+vault
+vaulted
+vaulter
+vaulting
+vaults
+vaunt
+vaunted
+VAX
+VAXes
+veal
+vector
+vectorization
+vectorizing
+vectors
+Veda
+veer
+veered
+veering
+veers
+Vega
+Veganism
+Vegas
+vegetable
+vegetables
+vegetarian
+vegetarians
+vegetate
+vegetated
+vegetates
+vegetating
+vegetation
+vegetative
+vehemence
+vehement
+vehemently
+vehicle
+vehicles
+vehicular
+veil
+veiled
+veiling
+veils
+vein
+veined
+veining
+veins
+Vela
+Velasquez
+Vella
+velocities
+velocity
+velvet
+vendor
+vendors
+venerable
+veneration
+Venetian
+Veneto
+Venezuela
+Venezuelan
+vengeance
+venial
+Venice
+venison
+Venn
+venom
+venomous
+venomously
+vent
+vented
+ventilate
+ventilated
+ventilates
+ventilating
+ventilation
+ventricle
+ventricles
+vents
+Ventura
+venture
+ventured
+venturer
+venturers
+ventures
+venturing
+venturings
+Venus
+Venusian
+Venusians
+Vera
+veracity
+veranda
+verandas
+verb
+verbal
+verbalize
+verbalized
+verbalizes
+verbalizing
+verbally
+verbose
+verbs
+Verde
+Verderer
+Verdi
+verdict
+verdure
+verge
+verger
+verges
+Vergil
+verifiability
+verifiable
+verification
+verifications
+verified
+verifier
+verifiers
+verifies
+verify
+verifying
+verily
+veritable
+Verlag
+vermin
+Vermont
+Vern
+Verna
+vernacular
+Verne
+Vernon
+Verona
+Veronica
+versa
+Versailles
+Versatec
+versatile
+versatility
+verse
+versed
+verses
+versing
+version
+versions
+versus
+vertebrate
+vertebrates
+vertex
+vertical
+vertically
+verticalness
+vertices
+very
+vessel
+vessels
+vest
+vested
+vestige
+vestiges
+vestigial
+vests
+Vesuvius
+veteran
+veterans
+veterinarian
+veterinarians
+veterinary
+veto
+vetoed
+vetoer
+vetoes
+vex
+vexation
+vexed
+vexes
+vexing
+via
+viability
+viable
+viably
+vial
+vials
+vibrate
+vibrated
+vibrating
+vibration
+vibrations
+vibrator
+Vic
+vice
+viceroy
+vices
+Vichy
+vicinity
+vicious
+viciously
+viciousness
+vicissitude
+vicissitudes
+Vickers
+Vicksburg
+Vicky
+victim
+victimize
+victimized
+victimizer
+victimizers
+victimizes
+victimizing
+victims
+victor
+Victoria
+Victorian
+Victorianize
+Victorianizes
+Victorians
+victories
+victorious
+victoriously
+victors
+victory
+Victrola
+victual
+victualer
+victuals
+Vida
+Vidal
+video
+videotape
+videotapes
+Videotex
+vie
+vied
+Vienna
+Viennese
+Vientiane
+vier
+vies
+Viet
+Vietnam
+Vietnamese
+view
+viewable
+viewed
+viewer
+viewers
+viewing
+viewpoint
+viewpoints
+views
+vigilance
+vigilant
+vigilante
+vigilantes
+vigilantly
+vignette
+vignettes
+vigor
+vigorous
+vigorously
+Viking
+Vikings
+Vikram
+vile
+vilely
+vileness
+vilification
+vilifications
+vilified
+vilifies
+vilify
+vilifying
+villa
+village
+villager
+villagers
+villages
+villain
+villainous
+villainously
+villainousness
+villains
+villainy
+villas
+Vince
+Vincent
+Vinci
+vindicate
+vindicated
+vindication
+vindictive
+vindictively
+vindictiveness
+vine
+vinegar
+vines
+vineyard
+vineyards
+Vinson
+vintage
+violate
+violated
+violates
+violating
+violation
+violations
+violator
+violators
+violence
+violent
+violently
+violet
+violets
+violin
+violinist
+violinists
+violins
+viper
+vipers
+Virgil
+virgin
+Virginia
+Virginian
+Virginians
+virginity
+virgins
+Virgo
+virtual
+virtually
+virtue
+virtues
+virtuoso
+virtuosos
+virtuous
+virtuously
+virulent
+virus
+viruses
+visa
+visage
+visas
+viscount
+viscounts
+viscous
+Vishnu
+visibility
+visible
+visibly
+Visigoth
+Visigoths
+vision
+visionary
+visions
+visit
+visitation
+visitations
+visited
+visiting
+visitor
+visitors
+visits
+visor
+visors
+vista
+vistas
+visual
+visualize
+visualized
+visualizer
+visualizes
+visualizing
+visually
+vita
+vitae
+vital
+vitality
+vitally
+vitals
+Vito
+Vitus
+Vivaldi
+Vivian
+vivid
+vividly
+vividness
+vizier
+Vladimir
+Vladivostok
+vocabularies
+vocabulary
+vocal
+vocally
+vocals
+vocation
+vocational
+vocationally
+vocations
+Vogel
+vogue
+voice
+voiced
+voicer
+voicers
+voices
+voicing
+void
+voided
+voider
+voiding
+voids
+volatile
+volatilities
+volatility
+volcanic
+volcano
+volcanos
+volition
+Volkswagen
+Volkswagens
+volley
+volleyball
+volleyballs
+Volstead
+volt
+Volta
+voltage
+voltages
+Voltaire
+Volterra
+volts
+volume
+volumes
+voluntarily
+voluntary
+volunteer
+volunteered
+volunteering
+volunteers
+Volvo
+vomit
+vomited
+vomiting
+vomits
+vortex
+Voss
+vote
+voted
+voter
+voters
+votes
+voting
+votive
+vouch
+voucher
+vouchers
+vouches
+vouching
+Vought
+vow
+vowed
+vowel
+vowels
+vower
+vowing
+vows
+voyage
+voyaged
+voyager
+voyagers
+voyages
+voyaging
+voyagings
+Vreeland
+Vulcan
+Vulcanism
+vulgar
+vulgarly
+vulnerabilities
+vulnerability
+vulnerable
+vulture
+vultures
+Waals
+Wabash
+Wacke
+wacky
+Waco
+wade
+waded
+wader
+wades
+wading
+Wadsworth
+wafer
+wafers
+waffle
+waffles
+waft
+wag
+wage
+waged
+wager
+wagers
+wages
+waging
+Wagner
+Wagnerian
+Wagnerize
+Wagnerizes
+wagon
+wagoner
+wagons
+wags
+Wahl
+wail
+wailed
+wailing
+wails
+Wainwright
+waist
+waistcoat
+waistcoats
+waists
+wait
+Waite
+waited
+waiter
+waiters
+waiting
+waitress
+waitresses
+waits
+waive
+waived
+waiver
+waiverable
+waives
+waiving
+wake
+waked
+Wakefield
+waken
+wakened
+wakening
+wakes
+wakeup
+waking
+Walbridge
+Walcott
+Walden
+Waldensian
+Waldo
+Waldorf
+Waldron
+wales
+Walford
+Walgreen
+walk
+walked
+walker
+walkers
+walking
+walks
+wall
+Wallace
+walled
+Wallenstein
+Waller
+wallet
+wallets
+walling
+Wallis
+wallow
+wallowed
+wallowing
+wallows
+Walls
+walnut
+walnuts
+Walpole
+walrus
+walruses
+Walsh
+Walt
+Walter
+Walters
+Waltham
+Walton
+waltz
+waltzed
+waltzes
+waltzing
+Walworth
+wan
+wand
+wander
+wandered
+wanderer
+wanderers
+wandering
+wanderings
+wanders
+wane
+waned
+wanes
+Wang
+waning
+wanly
+Wansee
+Wansley
+want
+wanted
+wanting
+wanton
+wantonly
+wantonness
+wants
+Wapato
+Wappinger
+war
+warble
+warbled
+warbler
+warbles
+warbling
+Warburton
+ward
+warden
+wardens
+warder
+wardrobe
+wardrobes
+wards
+ware
+warehouse
+warehouses
+warehousing
+wares
+warfare
+Warfield
+warily
+wariness
+Waring
+warlike
+warm
+warmed
+warmer
+warmers
+warmest
+warming
+warmly
+warms
+warmth
+warn
+warned
+warner
+warning
+warningly
+warnings
+Warnock
+warns
+warp
+warped
+warping
+warps
+warrant
+warranted
+warranties
+warranting
+warrants
+warranty
+warred
+warring
+warrior
+warriors
+wars
+Warsaw
+warship
+warships
+wart
+wartime
+warts
+Warwick
+wary
+was
+wash
+Washburn
+washed
+washer
+washers
+washes
+washing
+washings
+Washington
+Washoe
+wasp
+wasps
+Wasserman
+waste
+wasted
+wasteful
+wastefully
+wastefulness
+wastes
+wasting
+Watanabe
+watch
+watched
+watcher
+watchers
+watches
+watchful
+watchfully
+watchfulness
+watching
+watchings
+watchman
+watchword
+watchwords
+water
+Waterbury
+watered
+waterfall
+waterfalls
+Watergate
+Waterhouse
+watering
+waterings
+Waterloo
+Waterman
+waterproof
+waterproofing
+Waters
+Watertown
+waterway
+waterways
+watery
+Watkins
+Watson
+Wattenberg
+Watterson
+Watts
+Waukesha
+Waunona
+Waupaca
+Waupun
+Wausau
+Wauwatosa
+wave
+waved
+waveform
+waveforms
+wavefront
+wavefronts
+waveguides
+Waveland
+wavelength
+wavelengths
+waver
+wavers
+waves
+waving
+wax
+waxed
+waxen
+waxer
+waxers
+waxes
+waxing
+waxy
+way
+Wayne
+Waynesboro
+ways
+wayside
+wayward
+we
+weak
+weaken
+weakened
+weakening
+weakens
+weaker
+weakest
+weakly
+weakness
+weaknesses
+wealth
+wealthiest
+wealths
+wealthy
+wean
+weaned
+weaning
+weapon
+weapons
+wear
+wearable
+wearer
+wearied
+wearier
+weariest
+wearily
+weariness
+wearing
+wearisome
+wearisomely
+wears
+weary
+wearying
+weasel
+weasels
+weather
+weathercock
+weathercocks
+weathered
+Weatherford
+weathering
+weathers
+weave
+weaver
+weaves
+weaving
+web
+Webb
+Webber
+webs
+Webster
+Websterville
+wedded
+wedding
+weddings
+wedge
+wedged
+wedges
+wedging
+wedlock
+Wednesday
+Wednesdays
+weds
+wee
+weed
+weeds
+week
+weekend
+weekends
+weekly
+Weeks
+weep
+weeper
+weeping
+weeps
+Wehr
+Wei
+Weibull
+Weider
+Weidman
+Weierstrass
+weigh
+weighed
+weighing
+weighings
+weighs
+weight
+weighted
+weighting
+weights
+weighty
+Weinberg
+Weiner
+Weinstein
+weird
+weirdly
+Weisenheimer
+Weiss
+Weissman
+Weissmuller
+Welch
+Welcher
+Welches
+welcome
+welcomed
+welcomes
+welcoming
+weld
+welded
+welder
+welding
+Weldon
+welds
+Weldwood
+welfare
+well
+welled
+Weller
+Welles
+Wellesley
+welling
+Wellington
+Wellman
+Wells
+Wellsville
+Welmers
+welsh
+Welton
+wench
+wenches
+Wendell
+Wendy
+went
+Wentworth
+wept
+were
+Werner
+Werther
+Wesley
+Wesleyan
+Wesson
+west
+westbound
+Westbrook
+Westchester
+western
+westerner
+westerners
+Westfield
+Westhampton
+Westinghouse
+Westminster
+Westmore
+Weston
+Westphalia
+Westport
+westward
+westwards
+Westwood
+wet
+wetly
+wetness
+wets
+wetted
+wetter
+wettest
+wetting
+Weyerhauser
+whack
+whacked
+whacking
+whacks
+whale
+Whalen
+whaler
+whales
+whaling
+wharf
+Wharton
+wharves
+what
+whatever
+Whatley
+whatsoever
+wheat
+wheaten
+Wheatland
+Wheaton
+Wheatstone
+wheel
+wheeled
+wheeler
+wheelers
+wheeling
+wheelings
+Wheelock
+wheels
+Whelan
+Wheller
+whelp
+when
+whence
+whenever
+where
+whereabouts
+whereas
+whereby
+wherein
+whereupon
+wherever
+whether
+which
+whichever
+while
+whim
+whimper
+whimpered
+whimpering
+whimpers
+whims
+whimsical
+whimsically
+whimsies
+whimsy
+whine
+whined
+whines
+whining
+whip
+Whippany
+whipped
+whipper
+whippers
+whipping
+whippings
+Whipple
+whips
+whirl
+whirled
+whirling
+whirlpool
+whirlpools
+whirls
+whirlwind
+whirr
+whirring
+whisk
+whisked
+whisker
+whiskers
+whiskey
+whisking
+whisks
+whisper
+whispered
+whispering
+whisperings
+whispers
+whistle
+whistled
+whistler
+whistlers
+whistles
+whistling
+whit
+Whitaker
+Whitcomb
+white
+Whitehall
+Whitehorse
+Whiteleaf
+Whiteley
+whitely
+whiten
+whitened
+whitener
+whiteners
+whiteness
+whitening
+whitens
+whiter
+whites
+whitespace
+whitest
+whitewash
+whitewashed
+Whitewater
+Whitfield
+whiting
+Whitlock
+Whitman
+Whitmanize
+Whitmanizes
+Whitney
+Whittaker
+Whittier
+whittle
+whittled
+whittles
+whittling
+whiz
+whizzed
+whizzes
+whizzing
+who
+whoever
+whole
+wholehearted
+wholeheartedly
+wholeness
+wholes
+wholesale
+wholesaler
+wholesalers
+wholesome
+wholesomeness
+wholly
+whom
+whomever
+whoop
+whooped
+whooping
+whoops
+whore
+whores
+whorl
+whorls
+whose
+why
+Wichita
+wick
+wicked
+wickedly
+wickedness
+wicker
+wicks
+wide
+wideband
+widely
+widen
+widened
+widener
+widening
+widens
+wider
+widespread
+widest
+widget
+widow
+widowed
+widower
+widowers
+widows
+width
+widths
+Wieland
+wield
+wielded
+wielder
+wielding
+wields
+Wier
+wife
+wifely
+wig
+Wiggins
+Wightman
+wigs
+wigwam
+Wilbur
+Wilcox
+wild
+wildcat
+wildcats
+wilder
+wilderness
+wildest
+wildly
+wildness
+wile
+wiles
+Wiley
+Wilfred
+Wilhelm
+Wilhelmina
+wiliness
+Wilkes
+Wilkie
+Wilkins
+Wilkinson
+will
+Willa
+Willamette
+Willard
+Willcox
+willed
+Willem
+willful
+willfully
+William
+Williams
+Williamsburg
+Williamson
+Willie
+Willied
+Willies
+willing
+willingly
+willingness
+Willis
+Willisson
+Willoughby
+willow
+willows
+Wills
+Willy
+Wilma
+Wilmette
+Wilmington
+Wilshire
+Wilson
+Wilsonian
+wilt
+wilted
+wilting
+wilts
+Wiltshire
+wily
+win
+wince
+winced
+winces
+Winchell
+Winchester
+wincing
+wind
+winded
+winder
+winders
+winding
+windmill
+windmills
+window
+windows
+winds
+Windsor
+windy
+wine
+wined
+Winehead
+winer
+winers
+wines
+Winfield
+wing
+winged
+winging
+wings
+Winifred
+wining
+wink
+winked
+winker
+winking
+winks
+Winnebago
+winner
+winners
+Winnetka
+Winnie
+winning
+winningly
+winnings
+Winnipeg
+Winnipesaukee
+Winograd
+Winooski
+wins
+Winsborough
+Winsett
+Winslow
+Winston
+winter
+wintered
+wintering
+Winters
+Winthrop
+wintry
+wipe
+wiped
+wiper
+wipers
+wipes
+wiping
+wire
+wired
+wireless
+wires
+wiretap
+wiretappers
+wiretapping
+wiretaps
+wiriness
+wiring
+wiry
+Wisconsin
+wisdom
+wisdoms
+wise
+wised
+wisely
+Wisenheimer
+wiser
+wisest
+wish
+wished
+wisher
+wishers
+wishes
+wishful
+wishing
+wisp
+wisps
+wistful
+wistfully
+wistfulness
+wit
+witch
+witchcraft
+witches
+witching
+with
+withal
+withdraw
+withdrawal
+withdrawals
+withdrawing
+withdrawn
+withdraws
+withdrew
+wither
+withers
+Witherspoon
+withheld
+withhold
+withholder
+withholders
+withholding
+withholdings
+withholds
+within
+without
+withstand
+withstanding
+withstands
+withstood
+witness
+witnessed
+witnesses
+witnessing
+wits
+Witt
+Wittgenstein
+witty
+wives
+wizard
+wizards
+woe
+woeful
+woefully
+woke
+Wolcott
+wolf
+Wolfe
+Wolff
+Wolfgang
+Wolverton
+wolves
+woman
+womanhood
+womanly
+womb
+wombs
+women
+won
+wonder
+wondered
+wonderful
+wonderfully
+wonderfulness
+wondering
+wonderingly
+wonderment
+wonders
+wondrous
+wondrously
+Wong
+wont
+wonted
+woo
+wood
+Woodard
+Woodberry
+Woodbury
+woodchuck
+woodchucks
+woodcock
+woodcocks
+wooded
+wooden
+woodenly
+woodenness
+woodland
+Woodlawn
+woodman
+woodpecker
+woodpeckers
+Woodrow
+Woods
+Woodstock
+Woodward
+Woodwards
+woodwork
+woodworking
+woody
+wooed
+wooer
+woof
+woofed
+woofer
+woofers
+woofing
+woofs
+wooing
+wool
+woolen
+woolly
+wools
+Woolworth
+Woonsocket
+woos
+Wooster
+Worcester
+Worcestershire
+word
+worded
+wordily
+wordiness
+wording
+words
+Wordsworth
+wordy
+wore
+work
+workable
+workably
+workbench
+workbenches
+workbook
+workbooks
+worked
+worker
+workers
+workhorse
+workhorses
+working
+workingman
+workings
+workload
+workman
+workmanship
+workmen
+works
+workshop
+workshops
+workspace
+workstation
+workstations
+world
+worldliness
+worldly
+worlds
+worldwide
+worm
+wormed
+worming
+worms
+worn
+worried
+worrier
+worriers
+worries
+worrisome
+worry
+worrying
+worryingly
+worse
+worship
+worshiped
+worshiper
+worshipful
+worshiping
+worships
+worst
+worsted
+worth
+worthiest
+worthiness
+Worthington
+worthless
+worthlessness
+worths
+worthwhile
+worthwhileness
+worthy
+Wotan
+would
+wound
+wounded
+wounding
+wounds
+wove
+woven
+wrangle
+wrangled
+wrangler
+wrap
+wraparound
+wrapped
+wrapper
+wrappers
+wrapping
+wrappings
+wraps
+wrath
+wreak
+wreaks
+wreath
+wreathed
+wreathes
+wreck
+wreckage
+wrecked
+wrecker
+wreckers
+wrecking
+wrecks
+wren
+wrench
+wrenched
+wrenches
+wrenching
+wrens
+wrest
+wrestle
+wrestler
+wrestles
+wrestling
+wrestlings
+wretch
+wretched
+wretchedness
+wretches
+wriggle
+wriggled
+wriggler
+wriggles
+wriggling
+Wrigley
+wring
+wringer
+wrings
+wrinkle
+wrinkled
+wrinkles
+wrist
+wrists
+wristwatch
+wristwatches
+writ
+writable
+write
+writer
+writers
+writes
+writhe
+writhed
+writhes
+writhing
+writing
+writings
+writs
+written
+wrong
+wronged
+wronging
+wrongly
+wrongs
+Wronskian
+wrote
+wrought
+wrung
+Wu
+Wuhan
+Wyandotte
+Wyatt
+Wyeth
+Wylie
+Wyman
+Wyner
+Wynn
+Wyoming
+Xanthus
+Xavier
+Xebec
+Xenakis
+Xenia
+Xenix
+Xerox
+Xeroxed
+Xeroxes
+Xeroxing
+Xerxes
+Xhosa
+Yagi
+Yakima
+Yale
+Yalies
+Yalta
+Yamaha
+yank
+yanked
+Yankee
+Yankees
+yanking
+yanks
+Yankton
+Yaounde
+Yaqui
+yard
+yards
+yardstick
+yardsticks
+Yarmouth
+yarn
+yarns
+Yates
+Yaunde
+yawn
+yawner
+yawning
+yea
+Yeager
+year
+yearly
+yearn
+yearned
+yearning
+yearnings
+years
+yeas
+yeast
+yeasts
+Yeats
+yell
+yelled
+yeller
+yelling
+yellow
+yellowed
+yellower
+yellowest
+yellowing
+yellowish
+Yellowknife
+yellowness
+yellows
+Yellowstone
+yelp
+yelped
+yelping
+yelps
+Yemen
+Yentl
+yeoman
+yeomen
+Yerkes
+yes
+yesterday
+yesterdays
+yet
+Yiddish
+yield
+yielded
+yielding
+yields
+Yoder
+yoke
+yokes
+Yoknapatawpha
+Yokohama
+Yokuts
+yon
+yonder
+Yonkers
+Yorick
+York
+Yorker
+Yorkers
+Yorkshire
+Yorktown
+Yosemite
+Yost
+you
+young
+younger
+youngest
+youngly
+youngster
+youngsters
+Youngstown
+your
+yours
+yourself
+yourselves
+youth
+youthes
+youthful
+youthfully
+youthfulness
+Ypsilanti
+Yuba
+Yucatan
+Yugoslav
+Yugoslavia
+Yugoslavian
+Yugoslavians
+Yuh
+Yuki
+Yukon
+Yuri
+Yves
+Yvette
+Zachary
+Zagreb
+Zaire
+Zambia
+Zan
+Zanzibar
+zeal
+Zealand
+zealous
+zealously
+zealousness
+zebra
+zebras
+Zeffirelli
+Zeiss
+Zellerbach
+Zen
+zenith
+Zennist
+zero
+zeroed
+zeroes
+zeroing
+zeros
+zeroth
+zest
+Zeus
+Ziegfeld
+Ziegfelds
+Ziegler
+Ziggy
+zigzag
+zillions
+Zimmerman
+zinc
+Zion
+Zionism
+Zionist
+Zionists
+Zions
+zodiac
+Zoe
+Zomba
+zonal
+zonally
+zone
+zoned
+zones
+zoning
+zoo
+zoological
+zoologically
+zoom
+zooms
+zoos
+Zorn
+Zoroaster
+Zoroastrian
+Zulu
+Zulus
+Zurich
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/adv-world.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/adv-world.scm
new file mode 100644
index 0000000..bc4eb8c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/adv-world.scm
@@ -0,0 +1,83 @@
+;;;  Data for adventure game.  This file is adv-world.scm
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; setting up the world
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define Soda (instantiate place 'Soda))
+(define BH-Office (instantiate place 'BH-Office))
+(define MJC-Office (instantiate place 'MJC-Office))
+(define art-gallery (instantiate place 'art-gallery))
+(define Pimentel (instantiate place 'Pimentel))
+(define 61A-Lab (instantiate place '61A-Lab))
+(define Sproul-Plaza (instantiate place 'Sproul-Plaza))
+(define Telegraph-Ave (instantiate place 'Telegraph-Ave))
+(define Noahs (instantiate place 'Noahs))
+(define Intermezzo (instantiate place 'Intermezzo))
+(define s-h (instantiate place 'sproul-hall))
+
+
+(can-go Soda 'up art-gallery)
+(can-go art-gallery 'down Soda)
+(can-go art-gallery 'west BH-Office)
+(can-go BH-Office 'east art-gallery)
+(can-go art-gallery 'east MJC-Office)
+(can-go MJC-office 'west art-gallery)
+(can-go Soda 'south Pimentel)
+(can-go Pimentel 'north Soda)
+(can-go Pimentel 'south 61A-Lab)
+(can-go 61A-Lab 'north Pimentel)
+(can-go 61A-Lab 'west s-h)
+(can-go s-h 'east 61A-Lab)
+(can-go Sproul-Plaza 'east s-h)
+(can-go s-h 'west Sproul-Plaza)
+(can-go Sproul-Plaza 'north Pimentel)
+(can-go Sproul-Plaza 'south Telegraph-Ave)
+(can-go Telegraph-Ave 'north Sproul-Plaza)
+(can-go Telegraph-Ave 'south Noahs)
+(can-go Noahs 'north Telegraph-Ave)
+(can-go Noahs 'south Intermezzo)
+(can-go Intermezzo 'north Noahs)
+
+;; Some people.
+; MOVED above the add-entry-procedure stuff, to avoid the "The computers
+; seem to be down" message that would occur when hacker enters 61a-lab
+; -- Ryan Stejskal
+
+(define Brian (instantiate person 'Brian BH-Office))
+(define hacker (instantiate person 'hacker 61A-lab))
+(define nasty (instantiate thief 'nasty sproul-plaza))
+
+(define (sproul-hall-exit)
+   (error "You can check out any time you'd like, but you can never leave"))
+
+(define (bh-office-exit)
+  (print "What's your favorite programming language?")
+  (let ((answer (read)))
+    (if (eq? answer 'scheme)
+	(print "Good answer, but my favorite is Logo!")
+	(begin (newline) (bh-office-exit)))))
+    
+
+(ask s-h 'add-entry-procedure
+ (lambda () (print "Miles and miles of students are waiting in line...")))
+(ask s-h 'add-exit-procedure sproul-hall-exit)
+(ask BH-Office 'add-exit-procedure bh-office-exit)
+(ask Noahs 'add-entry-procedure
+ (lambda () (print "Would you like lox with it?")))
+(ask Noahs 'add-exit-procedure
+ (lambda () (print "How about a cinnamon raisin bagel for dessert?")))
+(ask Telegraph-Ave 'add-entry-procedure
+ (lambda () (print "There are tie-dyed shirts as far as you can see...")))
+(ask 61A-Lab 'add-entry-procedure
+ (lambda () (print "The computers seem to be down")))
+(ask 61A-Lab 'add-exit-procedure
+ (lambda () (print "The workstations come back to life just in time.")))
+
+;; Some things.
+
+(define bagel (instantiate thing 'bagel))
+(ask Noahs 'appear bagel)
+
+(define coffee (instantiate thing 'coffee))
+(ask Intermezzo 'appear coffee)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/adv.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/adv.scm
new file mode 100644
index 0000000..f4a94cb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/adv.scm
@@ -0,0 +1,235 @@
+;; ADV.SCM
+;; This file contains the definitions for the objects in the adventure
+;; game and some utility procedures.
+
+(define-class (place name)
+  (instance-vars
+   (directions-and-neighbors '())
+   (things '())
+   (people '())
+   (entry-procs '())
+   (exit-procs '()))
+  (method (type) 'place)
+  (method (neighbors) (map cdr directions-and-neighbors))
+  (method (exits) (map car directions-and-neighbors))
+  (method (look-in direction)
+    (let ((pair (assoc direction directions-and-neighbors)))
+      (if (not pair)
+	  '()                     ;; nothing in that direction
+	  (cdr pair))))           ;; return the place object
+  (method (appear new-thing)
+    (if (memq new-thing things)
+	(error "Thing already in this place" (list name new-thing)))
+    (set! things (cons new-thing things))
+    'appeared)
+  (method (enter new-person)
+    (if (memq new-person people)
+	(error "Person already in this place" (list name new-person)))
+    (set! people (cons new-person people))
+    (for-each (lambda (proc) (proc)) entry-procs)
+    'appeared)
+  (method (gone thing)
+    (if (not (memq thing things))
+	(error "Disappearing thing not here" (list name thing)))
+    (set! things (delete thing things)) 
+    'disappeared)
+  (method (exit person)
+    (for-each (lambda (proc) (proc)) exit-procs)
+    (if (not (memq person people))
+	(error "Disappearing person not here" (list name person)))
+    (set! people (delete person people)) 
+    'disappeared)
+
+  (method (new-neighbor direction neighbor)
+    (if (assoc direction directions-and-neighbors)
+	(error "Direction already assigned a neighbor" (list name direction)))
+    (set! directions-and-neighbors
+	  (cons (cons direction neighbor) directions-and-neighbors))
+    'connected)
+
+  (method (add-entry-procedure proc)
+    (set! entry-procs (cons proc entry-procs)))
+  (method (add-exit-procedure proc)
+    (set! exit-procs (cons proc exit-procs)))
+  (method (remove-entry-procedure proc)
+    (set! entry-procs (delete proc entry-procs)))
+  (method (remove-exit-procedure proc)
+    (set! exit-procs (delete proc exit-procs)))
+  (method (clear-all-procs)
+    (set! exit-procs '())
+    (set! entry-procs '())
+    'cleared) )
+
+(define-class (person name place)
+  (instance-vars
+   (possessions '())
+   (saying ""))
+  (initialize
+   (ask place 'enter self))
+  (method (type) 'person)
+  (method (look-around)
+    (map (lambda (obj) (ask obj 'name))
+	 (filter (lambda (thing) (not (eq? thing self)))
+		 (append (ask place 'things) (ask place 'people)))))
+  (method (take thing)
+    (cond ((not (thing? thing)) (error "Not a thing" thing))
+	  ((not (memq thing (ask place 'things)))
+	   (error "Thing taken not at this place"
+		  (list (ask place 'name) thing)))
+	  ((memq thing possessions) (error "You already have it!"))
+	  (else
+	   (announce-take name thing)
+	   (set! possessions (cons thing possessions))
+	       
+	   ;; If somebody already has this object...
+	   (for-each
+	    (lambda (pers)
+	      (if (and (not (eq? pers self)) ; ignore myself
+		       (memq thing (ask pers 'possessions)))
+		  (begin
+		   (ask pers 'lose thing)
+		   (have-fit pers))))
+	    (ask place 'people))
+	       
+	   (ask thing 'change-possessor self)
+	   'taken)))
+
+  (method (lose thing)
+    (set! possessions (delete thing possessions))
+    (ask thing 'change-possessor 'no-one)
+    'lost)
+  (method (talk) (print saying))
+  (method (set-talk string) (set! saying string))
+  (method (exits) (ask place 'exits))
+  (method (notice person) (ask self 'talk))
+  (method (go direction)
+    (let ((new-place (ask place 'look-in direction)))
+      (cond ((null? new-place)
+	     (error "Can't go" direction))
+	    (else
+	     (ask place 'exit self)
+	     (announce-move name place new-place)
+	     (for-each
+	      (lambda (p)
+		(ask place 'gone p)
+		(ask new-place 'appear p))
+	      possessions)
+	     (set! place new-place)
+	     (ask new-place 'enter self))))) )
+
+(define thing
+  (let ()
+    (lambda (class-message)
+      (cond
+       ((eq? class-message 'instantiate)
+	(lambda (name)
+	  (let ((self '()) (possessor 'no-one))
+	    (define (dispatch message)
+	      (cond
+	       ((eq? message 'initialize)
+		(lambda (value-for-self)
+		  (set! self value-for-self)))
+	       ((eq? message 'send-usual-to-parent)
+		(error "Can't use USUAL without a parent." 'thing))
+	       ((eq? message 'name) (lambda () name))
+	       ((eq? message 'possessor) (lambda () possessor))
+	       ((eq? message 'type) (lambda () 'thing))
+	       ((eq? message 'change-possessor)
+		(lambda (new-possessor)
+		  (set! possessor new-possessor)))
+	       (else (no-method 'thing))))
+	    dispatch)))
+       (else (error "Bad message to class" class-message))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Implementation of thieves for part two
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(define *foods* '(pizza potstickers coffee))
+
+(define (edible? thing)
+  (member? (ask thing 'name) *foods*))
+
+(define-class (thief name initial-place)
+  (parent (person name initial-place))
+  (instance-vars
+   (behavior 'steal))
+  (method (type) 'thief)
+
+  (method (notice person)
+    (if (eq? behavior 'run)
+	(ask self 'go (pick-random (ask (usual 'place) 'exits)))
+	(let ((food-things
+	       (filter (lambda (thing)
+			 (and (edible? thing)
+			      (not (eq? (ask thing 'possessor) self))))
+		       (ask (usual 'place) 'things))))
+	  (if (not (null? food-things))
+	      (begin
+	       (ask self 'take (car food-things))
+	       (set! behavior 'run)
+	       (ask self 'notice person)) )))) )
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Utility procedures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; this next procedure is useful for moving around
+
+(define (move-loop who)
+  (newline)
+  (print (ask who 'exits))
+  (display "?  > ")
+  (let ((dir (read)))
+    (if (equal? dir 'stop)
+	(newline)
+	(begin (ask who 'go dir)
+	       (move-loop who)))))
+
+
+;; One-way paths connect individual places.
+
+(define (can-go from direction to)
+  (ask from 'new-neighbor direction to))
+
+
+(define (announce-take name thing)
+  (newline)
+  (display name)
+  (display " took ")
+  (display (ask thing 'name))
+  (newline))
+
+(define (announce-move name old-place new-place)
+  (newline)
+  (newline)
+  (display name)
+  (display " moved from ")
+  (display (ask old-place 'name))
+  (display " to ")
+  (display (ask new-place 'name))
+  (newline))
+
+(define (have-fit p)
+  (newline)
+  (display "Yaaah! ")
+  (display (ask p 'name))
+  (display " is upset!")
+  (newline))
+
+
+(define (pick-random set)
+  (nth (random (length set)) set))
+
+(define (delete thing stuff)
+  (cond ((null? stuff) '())
+	((eq? thing (car stuff)) (cdr stuff))
+	(else (cons (car stuff) (delete thing (cdr stuff)))) ))
+
+(define (person? obj)
+  (and (procedure? obj)
+       (member? (ask obj 'type) '(person police thief))))
+
+(define (thing? obj)
+  (and (procedure? obj)
+       (eq? (ask obj 'type) 'thing)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/ambdiff b/js/games/nluqo.github.io/~bh/61a-pages/Lib/ambdiff
new file mode 100644
index 0000000..4d76cda
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/ambdiff
@@ -0,0 +1,309 @@
+1,2c1,2
+< ;;;;METACIRCULAR EVALUATOR THAT SEPARATES ANALYSIS FROM EXECUTION
+< ;;;; FROM SECTION 4.1.7 OF STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+---
+> ;;;;AMB EVALUATOR FROM SECTION 4.3 OF
+> ;;;; STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+4c4,7
+< ;;;;Matches code in ch4.scm
+---
+> ;;;;Matches code in ch4.scm.
+> ;;;; To run the sample programs and exercises, code below also includes
+> ;;;; -- enlarged primitive-procedures list
+> ;;;; -- support for Let (as noted in footnote 56, p.428)
+18c21
+< ;;Note: It is loaded first so that the section 4.1.7 definition
+---
+> ;;Note: It is loaded first so that the section 4.2 definition
+20c23
+< (load "61a/lib/mceval.scm")
+---
+> (load "~/61a/lib/mceval.scm")
+22d24
+< ;;;SECTION 4.1.7
+24,25d25
+< (define (mc-eval exp env)
+<   ((analyze exp) env))
+26a27,33
+> ;;;Code from SECTION 4.3.3, modified as needed to run it
+> 
+> (define (amb? exp) (tagged-list? exp 'amb))
+> (define (amb-choices exp) (cdr exp))
+> 
+> ;; analyze from 4.1.6, with clause from 4.3.3 added
+> ;; and also support for Let
+37a45,46
+>         ((let? exp) (analyze (let->combination exp))) ;**
+>         ((amb? exp) (analyze-amb exp))                ;**
+41a51,55
+> (define (ambeval exp env succeed fail)
+>   ((analyze exp) env succeed fail))
+> 
+> ;;;Simple expressions
+> 
+43c57,58
+<   (lambda (env) exp))
+---
+>   (lambda (env succeed fail)
+>     (succeed exp fail)))
+47c62,63
+<     (lambda (env) qval)))
+---
+>     (lambda (env succeed fail)
+>       (succeed qval fail))))
+50c66,68
+<   (lambda (env) (lookup-variable-value exp env)))
+---
+>   (lambda (env succeed fail)
+>     (succeed (lookup-variable-value exp env)
+>              fail)))
+52,57c70,75
+< (define (analyze-assignment exp)
+<   (let ((var (assignment-variable exp))
+<         (vproc (analyze (assignment-value exp))))
+<     (lambda (env)
+<       (set-variable-value! var (vproc env) env)
+<       'ok)))
+---
+> (define (analyze-lambda exp)
+>   (let ((vars (lambda-parameters exp))
+>         (bproc (analyze-sequence (lambda-body exp))))
+>     (lambda (env succeed fail)
+>       (succeed (make-procedure vars bproc env)
+>                fail))))
+59,64c77
+< (define (analyze-definition exp)
+<   (let ((var (definition-variable exp))
+<         (vproc (analyze (definition-value exp))))
+<     (lambda (env)
+<       (define-variable! var (vproc env) env)
+<       'ok)))
+---
+> ;;;Conditionals and sequences
+70,73c83,92
+<     (lambda (env)
+<       (if (true? (pproc env))
+<           (cproc env)
+<           (aproc env)))))
+---
+>     (lambda (env succeed fail)
+>       (pproc env
+>              ;; success continuation for evaluating the predicate
+>              ;; to obtain pred-value
+>              (lambda (pred-value fail2)
+>                (if (true? pred-value)
+>                    (cproc env succeed fail2)
+>                    (aproc env succeed fail2)))
+>              ;; failure continuation for evaluating the predicate
+>              fail))))
+75,79d93
+< (define (analyze-lambda exp)
+<   (let ((vars (lambda-parameters exp))
+<         (bproc (analyze-sequence (lambda-body exp))))
+<     (lambda (env) (make-procedure vars bproc env))))
+< 
+81,82c95,102
+<   (define (sequentially proc1 proc2)
+<     (lambda (env) (proc1 env) (proc2 env)))
+---
+>   (define (sequentially a b)
+>     (lambda (env succeed fail)
+>       (a env
+>          ;; success continuation for calling a
+>          (lambda (a-value fail2)
+>            (b env succeed fail2))
+>          ;; failure continuation for calling a
+>          fail)))
+92a113,143
+> ;;;Definitions and assignments
+> 
+> (define (analyze-definition exp)
+>   (let ((var (definition-variable exp))
+>         (vproc (analyze (definition-value exp))))
+>     (lambda (env succeed fail)
+>       (vproc env                        
+>              (lambda (val fail2)
+>                (define-variable! var val env)
+>                (succeed 'ok fail2))
+>              fail))))
+> 
+> (define (analyze-assignment exp)
+>   (let ((var (assignment-variable exp))
+>         (vproc (analyze (assignment-value exp))))
+>     (lambda (env succeed fail)
+>       (vproc env
+>              (lambda (val fail2)        ; *1*
+>                (let ((old-value
+>                       (lookup-variable-value var env))) 
+>                  (set-variable-value! var val env)
+>                  (succeed 'ok
+>                           (lambda ()    ; *2*
+>                             (set-variable-value! var
+>                                                  old-value
+>                                                  env)
+>                             (fail2)))))
+>              fail))))
+> 
+> ;;;Procedure applications
+> 
+96,99c147,156
+<     (lambda (env)
+<       (execute-application (fproc env)
+<                            (map (lambda (aproc) (aproc env))
+<                                 aprocs)))))
+---
+>     (lambda (env succeed fail)
+>       (fproc env
+>              (lambda (proc fail2)
+>                (get-args aprocs
+>                          env
+>                          (lambda (args fail3)
+>                            (execute-application
+>                             proc args succeed fail3))
+>                          fail2))
+>              fail))))
+101c158,174
+< (define (execute-application proc args)
+---
+> (define (get-args aprocs env succeed fail)
+>   (if (null? aprocs)
+>       (succeed '() fail)
+>       ((car aprocs) env
+>                     ;; success continuation for this aproc
+>                     (lambda (arg fail2)
+>                       (get-args (cdr aprocs)
+>                                 env
+>                                 ;; success continuation for recursive
+>                                 ;; call to get-args
+>                                 (lambda (args fail3)
+>                                   (succeed (cons arg args)
+>                                            fail3))
+>                                 fail2))
+>                     fail)))
+> 
+> (define (execute-application proc args succeed fail)
+103c176,177
+<          (apply-primitive-procedure proc args))
+---
+>          (succeed (apply-primitive-procedure proc args)
+>                   fail))
+108c182,184
+<                               (procedure-environment proc))))
+---
+>                               (procedure-environment proc))
+>           succeed
+>           fail))
+113a190,291
+> ;;;amb expressions
+> 
+> (define (analyze-amb exp)
+>   (let ((cprocs (map analyze (amb-choices exp))))
+>     (lambda (env succeed fail)
+>       (define (try-next choices)
+>         (if (null? choices)
+>             (fail)
+>             ((car choices) env
+>                            succeed
+>                            (lambda ()
+>                              (try-next (cdr choices))))))
+>       (try-next cprocs))))
+> 
+> ;;;Driver loop
+> 
+> (define input-prompt ";;; Amb-Eval input:")
+> (define output-prompt ";;; Amb-Eval value:")
+> 
+> (define (driver-loop)
+>   (define (internal-loop try-again)
+>     (prompt-for-input input-prompt)
+>     (let ((input (read)))
+>       (if (eq? input 'try-again)
+>           (try-again)
+>           (begin
+>             (newline)
+>             (display ";;; Starting a new problem ")
+>             (ambeval input
+>                      the-global-environment
+>                      ;; ambeval success
+>                      (lambda (val next-alternative)
+>                        (announce-output output-prompt)
+>                        (user-print val)
+>                        (internal-loop next-alternative))
+>                      ;; ambeval failure
+>                      (lambda ()
+>                        (announce-output
+>                         ";;; There are no more values of")
+>                        (user-print input)
+>                        (driver-loop)))))))
+>   (internal-loop
+>    (lambda ()
+>      (newline)
+>      (display ";;; There is no current problem")
+>      (driver-loop))))
+> 
+> 
+> 
+> ;;; Support for Let (as noted in footnote 56, p.428)
+> 
+> (define (let? exp) (tagged-list? exp 'let))
+> (define (let-bindings exp) (cadr exp))
+> (define (let-body exp) (cddr exp))
+> 
+> (define (let-var binding) (car binding))
+> (define (let-val binding) (cadr binding))
+> 
+> (define (make-combination operator operands) (cons operator operands))
+> 
+> (define (let->combination exp)
+>   ;;make-combination defined in earlier exercise
+>   (let ((bindings (let-bindings exp)))
+>     (make-combination (make-lambda (map let-var bindings)
+>                                    (let-body exp))
+>                       (map let-val bindings))))
+>                      
+> 
+> 
+> ;; A longer list of primitives -- suitable for running everything in 4.3
+> ;; Overrides the list in ch4-mceval.scm
+> ;; Has Not to support Require; various stuff for code in text (including
+> ;;  support for Prime?); integer? and sqrt for exercise code;
+> ;;  eq? for ex. solution
+> 
+> (define primitive-procedures
+>   (list (list 'car car)
+>         (list 'cdr cdr)
+>         (list 'cons cons)
+>         (list 'null? null?)
+>         (list 'list list)
+> 	(list 'append append)
+>         (list 'memq memq)
+>         (list 'member member)
+>         (list 'not not)
+>         (list '+ +)
+>         (list '- -)
+>         (list '* *)
+>         (list '= =)
+>         (list '> >)
+>         (list '>= >=)
+>         (list 'abs abs)
+>         (list 'remainder remainder)
+>         (list 'integer? integer?)
+>         (list 'sqrt sqrt)
+>         (list 'eq? eq?)
+> 	(list 'equal? equal?)
+> 	(list 'pair? pair?)
+> ;;      more primitives
+>         ))
+> 
+> 
+116,117c294,300
+< (define input-prompt ";;; A-Eval input:")
+< (define output-prompt ";;; A-Eval value:")
+---
+> (define (mce)
+>   (set! the-global-environment (setup-environment))
+>   (ambeval '(define (require p) (if (not p) (amb)))
+> 	   the-global-environment
+> 	   (lambda (a b) #t)
+> 	   (lambda () #t))
+>   (driver-loop))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/ambeval.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/ambeval.scm
new file mode 100644
index 0000000..e9fbeb2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/ambeval.scm
@@ -0,0 +1,300 @@
+;;;;AMB EVALUATOR FROM SECTION 4.3 OF
+;;;; STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;;;Matches code in ch4.scm.
+;;;; To run the sample programs and exercises, code below also includes
+;;;; -- enlarged primitive-procedures list
+;;;; -- support for Let (as noted in footnote 56, p.428)
+
+;;;;This file can be loaded into Scheme as a whole.
+;;;;**NOTE**This file loads the metacircular evaluator of
+;;;;  sections 4.1.1-4.1.4, since it uses the expression representation,
+;;;;  environment representation, etc.
+;;;;  You may need to change the (load ...) expression to work in your
+;;;;  version of Scheme.
+
+;;;;Then you can initialize and start the evaluator by evaluating
+;;;; the expression (mce).
+
+
+;;**implementation-dependent loading of evaluator file
+;;Note: It is loaded first so that the section 4.2 definition
+;; of eval overrides the definition from 4.1.1
+(load "~/61a/Lib/mceval.scm")
+
+
+
+;;;Code from SECTION 4.3.3, modified as needed to run it
+
+(define (amb? exp) (tagged-list? exp 'amb))
+(define (amb-choices exp) (cdr exp))
+
+;; analyze from 4.1.6, with clause from 4.3.3 added
+;; and also support for Let
+(define (analyze exp)
+  (cond ((self-evaluating? exp) 
+         (analyze-self-evaluating exp))
+        ((quoted? exp) (analyze-quoted exp))
+        ((variable? exp) (analyze-variable exp))
+        ((assignment? exp) (analyze-assignment exp))
+        ((definition? exp) (analyze-definition exp))
+        ((if? exp) (analyze-if exp))
+        ((lambda? exp) (analyze-lambda exp))
+        ((begin? exp) (analyze-sequence (begin-actions exp)))
+        ((cond? exp) (analyze (cond->if exp)))
+        ((let? exp) (analyze (let->combination exp))) ;**
+        ((amb? exp) (analyze-amb exp))                ;**
+        ((application? exp) (analyze-application exp))
+        (else
+         (error "Unknown expression type -- ANALYZE" exp))))
+
+(define (ambeval exp env succeed fail)
+  ((analyze exp) env succeed fail))
+
+;;;Simple expressions
+
+(define (analyze-self-evaluating exp)
+  (lambda (env succeed fail)
+    (succeed exp fail)))
+
+(define (analyze-quoted exp)
+  (let ((qval (text-of-quotation exp)))
+    (lambda (env succeed fail)
+      (succeed qval fail))))
+
+(define (analyze-variable exp)
+  (lambda (env succeed fail)
+    (succeed (lookup-variable-value exp env)
+             fail)))
+
+(define (analyze-lambda exp)
+  (let ((vars (lambda-parameters exp))
+        (bproc (analyze-sequence (lambda-body exp))))
+    (lambda (env succeed fail)
+      (succeed (make-procedure vars bproc env)
+               fail))))
+
+;;;Conditionals and sequences
+
+(define (analyze-if exp)
+  (let ((pproc (analyze (if-predicate exp)))
+        (cproc (analyze (if-consequent exp)))
+        (aproc (analyze (if-alternative exp))))
+    (lambda (env succeed fail)
+      (pproc env
+             ;; success continuation for evaluating the predicate
+             ;; to obtain pred-value
+             (lambda (pred-value fail2)
+               (if (true? pred-value)
+                   (cproc env succeed fail2)
+                   (aproc env succeed fail2)))
+             ;; failure continuation for evaluating the predicate
+             fail))))
+
+(define (analyze-sequence exps)
+  (define (sequentially a b)
+    (lambda (env succeed fail)
+      (a env
+         ;; success continuation for calling a
+         (lambda (a-value fail2)
+           (b env succeed fail2))
+         ;; failure continuation for calling a
+         fail)))
+  (define (loop first-proc rest-procs)
+    (if (null? rest-procs)
+        first-proc
+        (loop (sequentially first-proc (car rest-procs))
+              (cdr rest-procs))))
+  (let ((procs (map analyze exps)))
+    (if (null? procs)
+        (error "Empty sequence -- ANALYZE"))
+    (loop (car procs) (cdr procs))))
+
+;;;Definitions and assignments
+
+(define (analyze-definition exp)
+  (let ((var (definition-variable exp))
+        (vproc (analyze (definition-value exp))))
+    (lambda (env succeed fail)
+      (vproc env                        
+             (lambda (val fail2)
+               (define-variable! var val env)
+               (succeed 'ok fail2))
+             fail))))
+
+(define (analyze-assignment exp)
+  (let ((var (assignment-variable exp))
+        (vproc (analyze (assignment-value exp))))
+    (lambda (env succeed fail)
+      (vproc env
+             (lambda (val fail2)        ; *1*
+               (let ((old-value
+                      (lookup-variable-value var env))) 
+                 (set-variable-value! var val env)
+                 (succeed 'ok
+                          (lambda ()    ; *2*
+                            (set-variable-value! var
+                                                 old-value
+                                                 env)
+                            (fail2)))))
+             fail))))
+
+;;;Procedure applications
+
+(define (analyze-application exp)
+  (let ((fproc (analyze (operator exp)))
+        (aprocs (map analyze (operands exp))))
+    (lambda (env succeed fail)
+      (fproc env
+             (lambda (proc fail2)
+               (get-args aprocs
+                         env
+                         (lambda (args fail3)
+                           (execute-application
+                            proc args succeed fail3))
+                         fail2))
+             fail))))
+
+(define (get-args aprocs env succeed fail)
+  (if (null? aprocs)
+      (succeed '() fail)
+      ((car aprocs) env
+                    ;; success continuation for this aproc
+                    (lambda (arg fail2)
+                      (get-args (cdr aprocs)
+                                env
+                                ;; success continuation for recursive
+                                ;; call to get-args
+                                (lambda (args fail3)
+                                  (succeed (cons arg args)
+                                           fail3))
+                                fail2))
+                    fail)))
+
+(define (execute-application proc args succeed fail)
+  (cond ((primitive-procedure? proc)
+         (succeed (apply-primitive-procedure proc args)
+                  fail))
+        ((compound-procedure? proc)
+         ((procedure-body proc)
+          (extend-environment (procedure-parameters proc)
+                              args
+                              (procedure-environment proc))
+          succeed
+          fail))
+        (else
+         (error
+          "Unknown procedure type -- EXECUTE-APPLICATION"
+          proc))))
+
+;;;amb expressions
+
+(define (analyze-amb exp)
+  (let ((cprocs (map analyze (amb-choices exp))))
+    (lambda (env succeed fail)
+      (define (try-next choices)
+        (if (null? choices)
+            (fail)
+            ((car choices) env
+                           succeed
+                           (lambda ()
+                             (try-next (cdr choices))))))
+      (try-next cprocs))))
+
+;;;Driver loop
+
+(define input-prompt ";;; Amb-Eval input:")
+(define output-prompt ";;; Amb-Eval value:")
+
+(define (driver-loop)
+  (define (internal-loop try-again)
+    (prompt-for-input input-prompt)
+    (let ((input (read)))
+      (if (eq? input 'try-again)
+          (try-again)
+          (begin
+            (newline)
+            (display ";;; Starting a new problem ")
+            (ambeval input
+                     the-global-environment
+                     ;; ambeval success
+                     (lambda (val next-alternative)
+                       (announce-output output-prompt)
+                       (user-print val)
+                       (internal-loop next-alternative))
+                     ;; ambeval failure
+                     (lambda ()
+                       (announce-output
+                        ";;; There are no more values of")
+                       (user-print input)
+                       (driver-loop)))))))
+  (internal-loop
+   (lambda ()
+     (newline)
+     (display ";;; There is no current problem")
+     (driver-loop))))
+
+
+
+;;; Support for Let (as noted in footnote 56, p.428)
+
+(define (let? exp) (tagged-list? exp 'let))
+(define (let-bindings exp) (cadr exp))
+(define (let-body exp) (cddr exp))
+
+(define (let-var binding) (car binding))
+(define (let-val binding) (cadr binding))
+
+(define (make-combination operator operands) (cons operator operands))
+
+(define (let->combination exp)
+  ;;make-combination defined in earlier exercise
+  (let ((bindings (let-bindings exp)))
+    (make-combination (make-lambda (map let-var bindings)
+                                   (let-body exp))
+                      (map let-val bindings))))
+                     
+
+
+;; A longer list of primitives -- suitable for running everything in 4.3
+;; Overrides the list in ch4-mceval.scm
+;; Has Not to support Require; various stuff for code in text (including
+;;  support for Prime?); integer? and sqrt for exercise code;
+;;  eq? for ex. solution
+
+(define primitive-procedures
+  (list (list 'car car)
+        (list 'cdr cdr)
+        (list 'cons cons)
+        (list 'null? null?)
+        (list 'list list)
+	(list 'append append)
+        (list 'memq memq)
+        (list 'member member)
+        (list 'not not)
+        (list '+ +)
+        (list '- -)
+        (list '* *)
+        (list '= =)
+        (list '> >)
+        (list '>= >=)
+        (list 'abs abs)
+        (list 'remainder remainder)
+        (list 'integer? integer?)
+        (list 'sqrt sqrt)
+        (list 'eq? eq?)
+	(list 'equal? equal?)
+	(list 'pair? pair?)
+;;      more primitives
+        ))
+
+
+;;; Added at Berkeley:
+
+(define (mce)
+  (set! the-global-environment (setup-environment))
+  (ambeval '(define (require p) (if (not p) (amb)))
+	   the-global-environment
+	   (lambda (a b) #t)
+	   (lambda () #t))
+  (driver-loop))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/analyze.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/analyze.scm
new file mode 100644
index 0000000..3fee1cc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/analyze.scm
@@ -0,0 +1,117 @@
+;;;;METACIRCULAR EVALUATOR THAT SEPARATES ANALYSIS FROM EXECUTION
+;;;; FROM SECTION 4.1.7 OF STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;;;Matches code in ch4.scm
+
+;;;;This file can be loaded into Scheme as a whole.
+;;;;**NOTE**This file loads the metacircular evaluator of
+;;;;  sections 4.1.1-4.1.4, since it uses the expression representation,
+;;;;  environment representation, etc.
+;;;;  You may need to change the (load ...) expression to work in your
+;;;;  version of Scheme.
+
+;;;;Then you can initialize and start the evaluator by evaluating
+;;;; the expression (mce).
+
+
+;;**implementation-dependent loading of evaluator file
+;;Note: It is loaded first so that the section 4.1.7 definition
+;; of eval overrides the definition from 4.1.1
+(load "61a/Lib/mceval.scm")
+
+;;;SECTION 4.1.7
+
+(define (mc-eval exp env)
+  ((analyze exp) env))
+
+(define (analyze exp)
+  (cond ((self-evaluating? exp) 
+         (analyze-self-evaluating exp))
+        ((quoted? exp) (analyze-quoted exp))
+        ((variable? exp) (analyze-variable exp))
+        ((assignment? exp) (analyze-assignment exp))
+        ((definition? exp) (analyze-definition exp))
+        ((if? exp) (analyze-if exp))
+        ((lambda? exp) (analyze-lambda exp))
+        ((begin? exp) (analyze-sequence (begin-actions exp)))
+        ((cond? exp) (analyze (cond->if exp)))
+        ((application? exp) (analyze-application exp))
+        (else
+         (error "Unknown expression type -- ANALYZE" exp))))
+
+(define (analyze-self-evaluating exp)
+  (lambda (env) exp))
+
+(define (analyze-quoted exp)
+  (let ((qval (text-of-quotation exp)))
+    (lambda (env) qval)))
+
+(define (analyze-variable exp)
+  (lambda (env) (lookup-variable-value exp env)))
+
+(define (analyze-assignment exp)
+  (let ((var (assignment-variable exp))
+        (vproc (analyze (assignment-value exp))))
+    (lambda (env)
+      (set-variable-value! var (vproc env) env)
+      'ok)))
+
+(define (analyze-definition exp)
+  (let ((var (definition-variable exp))
+        (vproc (analyze (definition-value exp))))
+    (lambda (env)
+      (define-variable! var (vproc env) env)
+      'ok)))
+
+(define (analyze-if exp)
+  (let ((pproc (analyze (if-predicate exp)))
+        (cproc (analyze (if-consequent exp)))
+        (aproc (analyze (if-alternative exp))))
+    (lambda (env)
+      (if (true? (pproc env))
+          (cproc env)
+          (aproc env)))))
+
+(define (analyze-lambda exp)
+  (let ((vars (lambda-parameters exp))
+        (bproc (analyze-sequence (lambda-body exp))))
+    (lambda (env) (make-procedure vars bproc env))))
+
+(define (analyze-sequence exps)
+  (define (sequentially proc1 proc2)
+    (lambda (env) (proc1 env) (proc2 env)))
+  (define (loop first-proc rest-procs)
+    (if (null? rest-procs)
+        first-proc
+        (loop (sequentially first-proc (car rest-procs))
+              (cdr rest-procs))))
+  (let ((procs (map analyze exps)))
+    (if (null? procs)
+        (error "Empty sequence -- ANALYZE"))
+    (loop (car procs) (cdr procs))))
+
+(define (analyze-application exp)
+  (let ((fproc (analyze (operator exp)))
+        (aprocs (map analyze (operands exp))))
+    (lambda (env)
+      (execute-application (fproc env)
+                           (map (lambda (aproc) (aproc env))
+                                aprocs)))))
+
+(define (execute-application proc args)
+  (cond ((primitive-procedure? proc)
+         (apply-primitive-procedure proc args))
+        ((compound-procedure? proc)
+         ((procedure-body proc)
+          (extend-environment (procedure-parameters proc)
+                              args
+                              (procedure-environment proc))))
+        (else
+         (error
+          "Unknown procedure type -- EXECUTE-APPLICATION"
+          proc))))
+
+;;; Added at Berkeley:
+
+(define input-prompt ";;; A-Eval input:")
+(define output-prompt ";;; A-Eval value:")
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/animal.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/animal.scm
new file mode 100644
index 0000000..424cacc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/animal.scm
@@ -0,0 +1,66 @@
+(define (animal node)
+  (define (type node) (car node))
+  (define (question node) (cadr node))
+  (define (yespart node) (caddr node))
+  (define (nopart node) (cadddr node))
+  (define (answer node) (cadr node))
+  (define (leaf? node) (eq? (type node) 'leaf))
+  (define (branch? node) (eq? (type node) 'branch))
+  (define (set-yes! node x)
+    (set-car! (cddr node) x))
+  (define (set-no! node x)
+    (set-car! (cdddr node) x))
+
+  (define (yorn)
+    (let ((yn (read)))
+      (cond ((eq? yn 'yes) #t)
+	    ((eq? yn 'no) #f)
+	    (else (display "Please type YES or NO")
+		  (yorn)))))
+
+  (display (question node))
+  (display " ")
+  (let ((yn (yorn)) (correct #f) (newquest #f))
+    (let ((next (if yn (yespart node) (nopart node))))
+      (cond ((branch? next) (animal next))
+	    (else (display "Is it a ")
+		  (display (answer next))
+		  (display "? ")
+		  (cond ((yorn) "I win!")
+			(else (newline)
+			      (display "I give up, what is it? ")
+			      (set! correct (read))
+			      (newline)
+ 			      (display "Please tell me a question whose answer ")
+			      (display "is YES for a ")
+			      (display correct)
+			      (newline)
+			      (display "and NO for a ")
+			      (display (answer next))
+			      (display ".")
+			      (newline)
+			      (display "Enclose the question in quotation marks.")
+			      (newline)
+			      (set! newquest (read))
+			      (if yn
+				  (set-yes! node (make-branch newquest
+							   (make-leaf correct)
+							   next))
+				  (set-no! node (make-branch newquest
+							  (make-leaf correct)
+							  next)))
+			      "Thanks.  Now I know better.")))))))
+
+(define (make-branch q y n)
+  (list 'branch q y n))
+
+(define (make-leaf a)
+  (list 'leaf a))
+
+(define animal-list
+  (make-branch "Does it have wings?"
+	       (make-leaf 'parrot)
+	       (make-leaf 'rabbit)))
+
+
+(define (animal-game) (animal animal-list))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/apl-meta.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/apl-meta.scm
new file mode 100644
index 0000000..8147708
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/apl-meta.scm
@@ -0,0 +1,260 @@
+;;; apl-meta.scm     APL version of metacircular evaluator.
+
+;;; SETTING UP THE ENVIRONMENT
+
+;;; APL primitives aren't part of the environment.  They are not subject
+;;; to redefinition, for example.  They are kept in a separate list.  So
+;;; the initial environment is empty.  But define! only works if there is
+;;; a non-empty environment, so we fake something.
+
+(define the-global-environment '())
+
+;;; INITIALIZATION AND DRIVER LOOP
+
+;;; The following code initializes the machine and starts the APL
+;;; system.  You should not call it very often, because it will clobber
+;;; the global environment, and you will lose any definitions you have
+;;; accumulated.
+
+(define (initialize-apl)
+  (set! the-global-environment
+  	(extend-environment '(no-name) '(no-value) '()))
+  (set! apl-operators
+    (list (make-scalar-op '+ (lambda (x) x) +)
+	  (make-scalar-op '- - -)
+	  (make-scalar-op '*
+		 	  (lambda (x) (cond ((< x 0) -1) ((= x 0) 0) (else 1)))
+		 	  *)
+	  (make-scalar-op '% / /)
+	  (make-scalar-op 'bar abs rem)
+	  (make-scalar-op '= error (apl-pred2 =))
+	  (make-scalar-op '< error (apl-pred2 <))
+	  (make-scalar-op '> error (apl-pred2 >))
+	  (make-op '/ error compress)
+	  (make-op 'iota iota error)
+	  (make-op 'rho shape reshape)
+	  (make-op 'comma ravel cat)
+	  (make-op 'gets error 'set!)))
+  (apl-loop))
+
+;;; APPLYING PRIMITIVE PROCEDURES
+
+;;; The mechanism for applying primitive procedures is somewhat
+;;; different from the one given in the course notes.  We can recognize
+;;; primitive procedures (which are all inherited from Scheme) by asking
+;;; Scheme if the object we have is a Scheme procedure.
+
+(define (primitive-procedure? p)
+  (applicable? p))
+
+;;; To apply a primitive procedure, we ask the underlying Scheme system
+;;; to perform the application.  (Of course, an implementation on a
+;;; low-level machine would perform the application in some other way.)
+
+(define (apply-primitive-procedure p args)
+  (apply p args))
+
+
+;;; Now for the code from the book!!!
+
+
+;;; Section 4.1.1
+
+(define (mini-eval exp env)
+  (cond ((self-evaluating? exp) exp)
+        ((variable? exp) (lookup-variable-value exp env))
+        ((assignment? exp) (eval-assignment exp env))
+        ((application? exp)
+         (mini-apply (mini-eval (operator exp) env)
+                     (list-of-values (operands exp) env)
+		     env))
+        (else (error "Unknown expression type -- MINI-EVAL" exp))))
+
+(define (mini-apply procedure arguments env)
+  (cond ((primitive-procedure? procedure)
+         (apply-primitive-procedure procedure arguments))
+        ((compound-procedure? procedure)
+         (eval-sequence (procedure-body procedure)
+                        (extend-environment
+                         (parameters procedure)
+                         arguments
+                         env)))
+        (else
+         (error "Unknown procedure type -- MINI-APPLY" procedure))))
+
+(define (list-of-values exps env)
+  (cond ((no-operands? exps) '())
+        (else (cons (mini-eval (first-operand exps) env)
+                    (list-of-values (rest-operands exps)
+                                    env)))))
+
+(define (eval-sequence exps env)
+  (cond ((last-exp? exps) (mini-eval (first-exp exps) env))
+        (else (mini-eval (first-exp exps) env)
+              (eval-sequence (rest-exps exps) env))))
+
+(define (eval-assignment exp env)
+  (let ((new-value (mini-eval (assignment-value exp) env)))
+    (set-variable-value! (assignment-variable exp)
+                         new-value
+                         env)
+    new-value))
+
+;;; Section 4.1.2 -- Representing expressions
+
+;;; numbers
+
+(define (self-evaluating? exp) (number? exp))
+
+;;; variables
+
+(define (variable? exp) (symbol? exp))
+
+;;; assignment
+
+(define (assignment? exp)
+  (if (not (pair? exp))
+      #f
+      (eq? (car exp) 'set!)))
+
+(define (assignment-variable exp) (cadr exp))
+
+(define (assignment-value exp) (caddr exp))
+
+;;; sequences
+
+(define (last-exp? seq) (null? (cdr seq)))
+
+(define (first-exp seq) (car seq))
+
+(define (rest-exps seq) (cdr seq))
+
+;;; procedure applications
+
+(define (application? exp)
+  (if (not (pair? exp))
+      #f
+      (procedure? (car exp))))
+
+(define (procedure? exp)
+  (or (applicable? exp) (compound-procedure? exp)))
+
+(define (operator app) (car app))
+
+(define (operands app) (cdr app))
+
+(define (no-operands? args) (null? args))
+
+(define (first-operand args) (car args))
+
+(define (rest-operands args) (cdr args))
+
+;;; Representation of procedure objects
+
+(define (make-procedure lambda-exp env)
+  (list 'procedure lambda-exp env))
+
+(define (compound-procedure? proc)
+  (if (not (pair? proc))
+      #f
+      (eq? (car proc) 'procedure)))
+
+(define (parameters proc) (cadr (cadr proc)))
+
+(define (procedure-body proc) (cddr (cadr proc)))
+
+(define (procedure-environment proc) (caddr proc))
+
+;;; Section 4.1.3
+
+;;; Operations on environments
+
+(define (lookup-variable-value var env)
+  (if (assq var apl-operators)
+      var
+      (let ((b (binding-in-env var env)))
+	(if (found-binding? b)
+	    (binding-value b)
+	    (error "Unbound variable" var)))))
+
+(define (binding-in-env var env)
+  (if (no-more-frames? env)
+      no-binding
+      (let ((b (binding-in-frame var (first-frame env))))
+        (if (found-binding? b)
+            b
+            (binding-in-env var (rest-frames env))))))
+
+(define (extend-environment variables values base-env)
+  (adjoin-frame (make-frame variables values) base-env))
+
+(define (set-variable-value! var val env)
+  (let ((b (binding-in-env var env)))
+    (if (found-binding? b)
+        (set-binding-value! b val)
+        (error "Unbound variable" var))))
+
+(define (define-variable! var val env)
+  (let ((b (binding-in-frame var (first-frame env))))
+    (if (found-binding? b)
+        (set-binding-value! b val)
+        (set-first-frame!
+          env
+          (adjoin-binding (make-binding var val)
+                          (first-frame env))))))
+
+;;; Representing environments
+
+(define (first-frame env) (car env))
+
+(define (rest-frames env) (cdr env))
+
+(define (no-more-frames? env) (null? env))
+
+(define (adjoin-frame frame env) (cons frame env))
+
+(define (set-first-frame! env new-frame)
+  (set-car! env new-frame))
+
+;;; Representing frames
+
+(define (make-frame variables values)
+  (cond ((and (null? variables) (null? values)) '())
+        ((null? variables)
+         (error "Too many values supplied" values))
+        ((null? values)
+         (error "Too few values supplied" variables))
+        (else
+         (cons (make-binding (car variables) (car values))
+               (make-frame (cdr variables) (cdr values))))))
+
+(define (adjoin-binding binding frame)
+  (cons binding frame))
+
+(define (assq key bindings)
+  (cond ((null? bindings) no-binding)
+        ((eq? key (binding-variable (car bindings))) 
+         (car bindings))
+        (else (assq key (cdr bindings)))))
+
+(define (binding-in-frame var frame)
+  (assq var frame))
+
+(define (found-binding? b)
+  (not (eq? b no-binding)))
+
+(define no-binding '())
+
+;;; Representing bindings
+
+(define (make-binding variable value)
+  (cons variable value))
+
+(define (binding-variable binding)
+  (car binding))
+
+(define (binding-value binding)
+  (cdr binding))
+
+(define (set-binding-value! binding value)
+  (set-cdr! binding value))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/apl.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/apl.scm
new file mode 100644
index 0000000..3af4acf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/apl.scm
@@ -0,0 +1,254 @@
+;;; APL interpreter project      apl.scm
+
+(define (----YOU-FILL-THIS-IN----) '())   ; just so file will load
+
+;;; Step 1: convert scalar procedures to array procedures
+
+(define (single x)     ; reduce order of single-element list
+  (cond ((not (pair? x)) x)
+	((null? (cdr x)) (single (car x)))
+	(else x)))
+
+(define (apl-dyadic op)    ; turn dyadic scalar function into APL array fn
+  (define (newop x y)
+    (let ((xx (single x))
+	  (yy (single y)))
+      (cond ((and (number? xx) (number? yy))
+     	     (----YOU-FILL-THIS-IN----))
+	    ((number? xx) (map (----YOU-FILL-THIS-IN----) yy))
+	    ((number? yy) (map (----YOU-FILL-THIS-IN----) xx))
+	    (else (map newop xx yy)))))
+  newop)
+
+;;; Step 2: APL primitive operations
+
+(define (iota n)       ; monadic iota
+  (define (iter x n)
+    (if (> x n)
+	'()
+	(cons x (iter (1+ x) n))))
+  (iter 1 (single n)))
+
+(define (reshape shape l)  ; dyadic rho
+  (define (circular l)
+    (define (c1 pair)
+      (if (null? (cdr pair))
+	  (set-cdr! pair l)
+	  (c1 (cdr pair))))
+    (c1 l)
+    l)
+  (define token
+    (let ((source (circular (ravel l))))
+      (lambda ()
+	(let ((out (car source)))
+	  (set! source (cdr source))
+	  out))))
+  (define (string n shape)
+    (if (= n 0)
+	'()
+	(let ((top (re1 shape)))
+	  (cons top (string (-1+ n) shape)))))
+  (define (re1 shape)
+    (if (null? shape)
+      	(token)
+      	(string (car shape) (cdr shape))))
+  (re1 shape))
+
+(define (cat a b)       ; dyadic comma
+  (define (depth l)
+    (if (not (pair? l))
+	0
+	(1+ (depth (car l)))))
+  (define (max x y)
+    (if (> x y) x y))
+  (define (shapeup l dims)
+    (if (= dims (depth l))
+	l
+	(shapeup (cons l '()) dims)))
+  (let ((dim (max (depth a) (depth b))))
+    (append (shapeup a dim) (shapeup b dim))))
+
+(define (ravel l)       ; monadic comma
+  (define (r1 this rest)
+    (cond ((null? this) (ravel rest))
+	  ((not (pair? this)) (cons this (ravel rest)))
+	  (else (r1 (car this) (cons (cdr this) rest)))))
+  (cond ((null? l) '())
+	((not (pair? l)) (cons l '()))
+	(else (r1 (car l) (cdr l)))))
+
+(define (abs x)        ; monadic bar
+  (if (< x 0) (- x) x))
+
+(define (rem x y)      ; dyadic bar
+  (remainder y x))
+
+;;; data abstraction for APL operators
+
+(define (tri-op name nil mon dy)
+  (list name nil mon dy))
+
+(define (apl-operator? op)
+  (assq op apl-operators))
+
+(define (niladic op)
+  (cadr (assq op apl-operators)))
+
+(define (monadic op)
+  (caddr (assq op apl-operators)))
+
+(define (dyadic op)
+  (cadddr (assq op apl-operators)))
+
+(define (make-niladic name body)
+  (set! apl-operators (cons (tri-op name body error error) apl-operators)))
+
+(define (make-monadic name body)
+  (set! apl-operators (cons (tri-op name error body error) apl-operators)))
+
+(define (make-dyadic name body)
+  (set! apl-operators (cons (tri-op name error error body) apl-operators)))
+
+(define (make-op op mon dy)   ; abbreviation for primitives, never niladic
+  (tri-op op error mon dy))
+
+(define (make-scalar-op op mon dy)
+  (make-op op (apl-monadic mon) (apl-dyadic dy)))
+
+;;; Table of operations
+
+(define (apl-pred2 op)   ; turn Lisp predicate (t/f) into APL (0/1)
+  (lambda (x y)
+    (if (op x y) 1 0)))
+
+(define apl-operators
+  (list (make-scalar-op '+ (lambda (x) x) +)
+	(make-scalar-op '- - -)
+	(make-scalar-op '*
+			(lambda (x) (cond ((< x 0) -1)
+					  ((= x 0) 0)
+					  (else 1)))
+			*)
+	(make-scalar-op '% / /)
+	(make-scalar-op 'bar abs rem)
+	(make-scalar-op '= error (apl-pred2 =))
+	(make-scalar-op '< error (apl-pred2 <))
+	(make-scalar-op '> error (apl-pred2 >))
+	(make-op '/ error compress)
+	(make-op 'iota iota error)
+	(make-op 'rho shape reshape)
+	(make-op 'comma ravel cat)))
+
+;;; APL higher-order operations
+
+(define (reduce op l)   ; higher-order /
+  (if (null? (cdr l))
+      (car l)
+      ((dyadic op) (car l) (reduce op (cdr l)))))
+
+(define (apl-hof? op)
+  (assq op apl-hofs))
+
+(define (hof op)
+  (cdr (assq op apl-hofs)))
+
+(define apl-hofs (list (cons '/ reduce)))
+
+;;; Step 3: Syntax conversion, infix to prefix
+
+(define (get-operand l)
+  (cond ((null? l) '())
+	((list? (car l))
+	 (get-dyad (get-operand (car l)) (cdr l)))
+	((number? (car l)) (get-vector l))
+	((apl-operator? (car l))
+	 (cond ((null? (cdr l)) (error "dangling operator" (car l)))
+	       ((apl-hof? (cadr l))
+		(list (hof (cadr l)) (car l) (get-operand (cddr l))))
+	       (else
+	 	(list (monadic (car l)) (get-operand (cdr l))))))
+	(else (get-dyad (car l) (cdr l)))))
+
+(define (get-dyad left l)
+  (cond ((null? l) left)
+	((apl-operator? (car l))
+	 (----YOU PUT SOMETHING HERE----))
+	(else
+	 (error "operand where operator expected" (car l)))))
+
+(define (get-vector l)
+  (define (gv vect l)
+    (cond ((null? l) vect)
+	  ((number? (car l))
+	   (----YOU PUT SOMETHING HERE----))
+	  (else (get-dyad vect l))))
+  (gv '() l))
+
+;;; mini-evaluator
+
+(define (apl-loop)
+  (define (maybe-display val)
+    (if (eq? val 'no-value) '() (display val)))
+  (newline)
+  (display "APL> ")
+  (maybe-display (apl-eval (get-operand (read))))
+  (apl-loop))
+
+(define (apl-eval l)
+  (cond ((not (pair? l)) l)
+	((procedure? (car l)) (apply (car l) (map apl-eval (cdr l))))
+	(else l)))
+
+(define *keyboard-interrupt-handler* reset)
+
+;;; Step 11: Procedure definition
+
+(define (convert-syntax l)
+  (cond ((not (pair? l)) l)
+	((eq? (car l) 'del) (proc-definition (cdr l)) 'no-name)
+	(else (get-operand l))))
+
+(define (proc-definition l)
+  (cond ((null? (cdr l))
+	 (make-niladic (car l) (make-procedure '() '() '() (proc-body))))
+	((eq? (cadr l) 'gets)
+	 (proc-result (car l) (cddr l)))
+	(else (----YOU-FILL-THIS-IN----))))
+
+(define (proc-result outvar l)
+  (define (count-to-locals l)
+    (cond ((null? l) 0)
+	  ((eq? (car l) ':) 0)
+	  (else (1+ (count-to-locals (cdr l))))))
+  (define (locals l)
+    (cond ((null? l) '())
+	  ((eq? (car l) ':)
+	   (cons (cadr l) (locals (cddr l))))
+	  (else (error "bad format in locals" l))))
+  (let ((adic (count-to-locals l)))
+    (cond ((= adic 1)
+	   (make-niladic (car l)
+			 (make-procedure outvar
+					 '()
+					 (locals (cdr l))
+					 (proc-body))))
+	  ((= adic 2)
+	   (make-monadic (car l)
+			 (make-procedure outvar
+					 (list (cadr l))
+					 (locals (cddr l))
+					 (proc-body))))
+	  ((= adic 3)
+	   (----YOU-FILL-THIS-IN----))
+	  (else (error "too many args in function definition" l)))))
+
+(define (proc-body)
+  (define (proc-body-loop lineno)
+    (display "[")
+    (display lineno)
+    (display "]  ")
+    (let ((next (read)))
+      (if (eq? next 'del)
+	  '()
+	  (cons next (proc-body-loop (1+ lineno))))))
+  (proc-body-loop 1))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/berkeley.scmm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/berkeley.scmm
new file mode 100644
index 0000000..9dec781
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/berkeley.scmm
@@ -0,0 +1,1918 @@
+;;; berkeley.scm 3.14 9/23/98
+;;; This version purports to work on Unix SCM, PC SCM, and Mac Gambit
+;;; all without the least little version skew!
+
+;; 3.1 add uniform graphics interface
+;; 3.2 fix scm untrace messing up butlast
+;; 3.3 fix setheading in scm
+;; 3.4 number->string doesn't blow up if given string (for trace)
+;; 3.5 fix (/) without breaking (/ 3)
+;; 3.6 fix number->string in MIT Scheme (don't set! it)
+;; 3.7 big rewrite for SICP second edition changes
+;; 3.8 SICP concurrency features added
+;; 3.9 define-handler hacked for obscure scm bug
+;; 3.10 fix scm parallel-execute to start the timer!
+;; 3.11 not enough primitives protected in redefinition of define in scm
+;; 3.12 stream-map with multiple streams
+;; 3.13 number->string extra args
+;; 3.14 protect define against redefining map
+
+;;; This file makes SCM 4e1 and Gambit 2.2 compatible with both
+;;; Structure and Interpretation of Computer Programs (Abelson,
+;;; Sussman, and Sussman) and Simply Scheme (Harvey and Wright).
+;;; This should be sufficient to make Scheme fully compatible with
+;;; Harvey and Wright, and compatible with SICP with the exception of
+;;; first-class environments and pre-R4RS stuff like false empty lists.
+;;; (It should be fully compatible with SICP second edition.)
+
+(if (equal? 'foo (symbol->string 'foo))
+    (error "Berkeley.scm already loaded!!")
+    #f)
+
+(define scm? (not (exact? (/ 1 3))))
+;;; Notice that *after* loading this file, (/ 1 3) is never exact,
+;;; so we have to check first thing.  Naked Gambit has exact rationals,
+;;; but naked SCM doesn't.
+
+;;; Let's not have any random messages please.
+(if scm?
+    (begin
+     (eval '(define *dev-null* (make-soft-port (vector (lambda (x) #f)
+						       (lambda (x) #f)
+						       #f #f #f)
+					       OPEN_WRITE)))
+     (set-current-error-port *dev-null*)))
+
+(define nil '())
+(define true #t)
+(define false #f)
+
+(if scm?
+    (eval '(define (runtime)
+	     (/ (get-internal-run-time) internal-time-units-per-second))))
+
+;; crude timing program  (time (foo..))
+(if scm?
+    (eval '(define time (procedure->macro
+			 (lambda(x env)
+			   `(let*((start (runtime))
+				  (result ,(cadr x))
+				  (end (- (runtime) start)))
+			      (write end)(display " seconds")(newline)
+			      result)))))
+    (eval '(define-macro (time . args) `(let*((start (runtime))
+						(result ,(car args))
+						(end (- (runtime) start)))
+					    (write end)
+					    (display " seconds")
+					    (newline)
+					    result))))
+
+;; Originally from Jolly Chen.  Modified by Justin Gibbs.
+
+(if (and scm? (eq? (software-type) 'unix))
+    (begin
+     (eval '(define (expand-name st)
+	      ;; given a string like "~cs60a/lib" expand it to
+	      ;; "home/po/k/classes../cs60a/lib"
+	      (let ((file (tmpnam))
+		    (res '()))
+		(system (string-append "/bin/csh -cf \"glob " st " > " file "\""))
+		;; Why read-line won't work here, I don't know
+		(let ((port (open-io-file file)))
+		  (set! res (read-string port))
+		  (system (string-append "/bin/rm " file))
+		  (close-io-port port)
+		  res))))
+     ;;; Load.
+     ;;; Original Code from default SCM Init.scm.  Modified by Justin Gibbs.
+     ;;; This load is identical to the load in Init.scm save that we use
+     ;;; csh to glob our file names for us.  This leaves open the option
+     ;;; of using wild cards and "~" in the argument to load.  Load does
+     ;;; not understand multifile arguments -- a feature that would be nice
+     ;;; to add later, since we already can glob on '*'s and '?'s.
+     (eval '(define (load file)
+	      ;;; Only change is the addition of the following line.
+	      (define filesuf (expand-name file))
+	      (define cep (current-error-port))
+	      (set! file filesuf) 
+	      (cond ((> (verbose) 1)
+		     (display ";loading " cep) (write file cep) (newline cep)))
+	      (force-output cep)
+	      (or (try-load file)
+		  ;;HERE is where the suffix gets specified
+		  (begin (set! filesuf (string-append file (scheme-file-suffix)))
+			 (try-load filesuf))
+		  (and (procedure? could-not-open) (could-not-open) #f)
+		  (error "LOAD couldn't find file " file))
+	      (errno 0)
+	      (cond ((> (verbose) 1)
+		     (display ";done loading " cep)
+		     (write filesuf cep)
+		     (newline cep)
+		     (force-output cep)))))))
+
+
+;;; SICP stuff:
+
+(define (print x)
+  (display x)
+  (newline))
+
+;; Define tagged data ADT:
+
+(define (attach-tag type-tag contents)
+  (cons type-tag contents))
+
+(define (type-tag datum)
+  (if (pair? datum)
+      (car datum)
+      (error "Bad tagged datum -- TYPE-TAG" datum)))
+
+(define (contents datum)
+  (if (pair? datum)
+      (cdr datum)
+      (error "Bad tagged datum -- CONTENTS" datum)))
+
+;;For Section 3.1.2 -- written as suggested in footnote,
+;; though the values of a, b, m may not be very "appropriately chosen"
+(define (rand-update x)
+  (let ((a 27) (b 26) (m 127))
+    (modulo (+ (* a x) b) m)))
+
+;;For Section 3.3.4, used by and-gate
+;;Note: logical-and should test for valid signals, as logical-not does
+(define (logical-and x y)
+  (if (and (= x 1) (= y 1))
+      1
+      0))
+
+;; concurrency stuff
+
+(if scm?
+    (eval '(define test-and-set!
+	     (let ((arb (make-arbiter 'scratchnsniff)))
+	       (lambda (cell)
+		 (if (try-arbiter arb)
+		     (begin (process:schedule!)
+			    (test-and-set! cell))
+		     (let ((result (car cell)))
+		       (set-car! cell #t)
+		       (release-arbiter arb)
+		       result))))))
+    (eval '(define test-and-set!
+	     (let ((sem (make-semaphore)))
+	       (lambda (cell)
+		 (semaphore-wait sem)
+		 (let ((result (car cell)))
+		   (set-car! cell #t)
+		   (semaphore-signal sem)
+		   result))))))
+
+(if scm? (eval '(require 'process)))
+
+(if scm?
+    (eval '(define (parallel-execute . thunks)
+	     (for-each (lambda (thunk) (add-process! (lambda (foo) (thunk))))
+		       thunks)
+	     (alarm-interrupt)
+	     (process:schedule!)))
+    (eval '(define (parallel-execute . thunks)
+	     (for-each (lambda (thunk) (future (thunk))) thunks))))
+
+(if scm?
+    (eval '(define (stop) (alarm 0) (set! process:queue (make-queue)))))
+
+;;For Section 3.5.2, to check power series (exercises 3.59-3.62)
+;;Evaluate and accumulate n terms of the series s at the given x
+;;Uses horner-eval from ex 2.34
+(define (eval-power-series s x n)
+  (horner-eval x (first-n-of-series s n)))
+(define (first-n-of-series s n)
+  (if (= n 0)
+      '()
+      (cons (stream-car s) (first-n-of-series (stream-cdr s) (- n 1)))))
+
+;; Streams:
+
+;; Reimplement delay so that promises are procedures
+
+(define (memo-proc proc)
+  (let ((already-run? #f) (result #f))
+    (lambda ()
+      (if (not already-run?)
+	  (begin (set! result (proc))
+		 (set! already-run? #t)
+		 result)
+	  result))))
+
+(if scm?
+    (eval '(define delay (procedure->macro
+			  (lambda (x env)
+			    `(memo-proc (lambda () ,(cadr x)))))))
+    (eval '(define-macro (delay . args)
+	      `(memo-proc (lambda () ,(car args))))))
+
+(define (force delayed-object)
+  (delayed-object))
+
+(if scm?
+    (eval '(define cons-stream
+	     (procedure->macro
+	      (lambda(x env)`(cons ,(cadr x) (delay ,(caddr x)))))))
+    (eval '(define-macro (cons-stream . args) 
+              `(cons ,(car args) (delay ,(cadr args))))))
+
+(define (stream-car stream) (car stream))
+
+(define (stream-cdr st)
+  (force (cdr st)))
+
+(define the-empty-stream '())
+
+(define (stream-null? stream) (eq? stream the-empty-stream))
+
+(define (stream? obj)
+  (or (stream-null? obj)
+      (and (pair? obj) (procedure? (cdr obj)))))
+
+(define (stream-accumulate combiner initial-value stream)
+  (if (stream-null? stream)
+      initial-value
+      (combiner (stream-car stream)
+		(stream-accumulate combiner
+				   initial-value
+				   (stream-cdr stream)))))
+
+(define (accumulate-delayed combiner initial-value stream)
+  (if (stream-null? stream)
+      initial-value
+      (combiner (stream-car stream)
+                (delay
+                 (accumulate-delayed combiner
+                                     initial-value
+                                     (stream-cdr stream))))))
+
+(define (interleave s1 s2)
+  (if (stream-null? s1)
+      s2
+      (cons-stream (stream-car s1)
+                   (interleave s2 (stream-cdr s1)))))
+
+(define (interleave-delayed s1 delayed-s2)
+  (if (stream-null? s1)
+      (force delayed-s2)
+      (cons-stream (stream-car s1)
+                   (interleave-delayed (force delayed-s2)
+                                       (delay (stream-cdr s1))))))
+
+(define (stream-flatten stream)
+  (accumulate-delayed interleave-delayed
+                      the-empty-stream
+                      stream))
+
+(define (stream-ref s n)
+  (if (= n 0)
+      (stream-car s)
+      (stream-ref (stream-cdr s) (- n 1))))
+
+(define (stream-map proc . s)
+  (if (stream-null? (car s))
+      the-empty-stream
+      (cons-stream (apply proc (map stream-car s))
+                   (apply stream-map proc (map stream-cdr s)))))
+
+(define (stream-for-each proc s)
+  (if (stream-null? s)
+      'done
+      (begin
+       (proc (stream-car s))
+       (stream-for-each proc (stream-cdr s)))))
+
+(define (display-stream s)
+  (stream-for-each
+   (lambda (element) (newline) (display element))
+   s))
+
+(define (stream-flatmap f s)
+  (stream-flatten (stream-map f s)))
+
+(define (stream-append s1 s2)
+  (if (stream-null? s1)
+      s2
+      (cons-stream (stream-car s1)
+                   (stream-append (stream-cdr s1) s2))))
+
+(define (list->stream l)
+  (if (null? l)
+      the-empty-stream
+      (cons-stream (car l) (list->stream (cdr l))) ))
+
+(define (make-stream . elements)
+  (list->stream elements))
+
+(define (enumerate-interval low high)
+  (if (> low high)
+      '()
+      (cons low (enumerate-interval (+ low 1) high))))
+
+(define (flatmap proc seq)
+  (accumulate append '() (map proc seq)))
+
+(define (stream-enumerate-interval low high)
+  (if (> low high)
+      the-empty-stream
+      (cons-stream low (stream-enumerate-interval (+ low 1) high))))
+
+(define range stream-enumerate-interval)
+
+(define (stream-filter pred stream)
+  (cond ((stream-null? stream) the-empty-stream)
+	((pred (stream-car stream))
+	 (cons-stream (stream-car stream)
+		      (stream-filter pred (stream-cdr stream))))
+	(else (stream-filter pred (stream-cdr stream)))))
+
+(define (show-stream strm . args)
+  (if (null? args)
+      (ss1 strm 10 10)
+      (ss1 strm (car args) (car args))))
+
+(define ss show-stream)
+
+(define (ss1 strm this all)
+  (cond ((null? strm) '())
+	((= this 0) '(...))
+	((and (pair? strm) (procedure? (cdr strm)))
+	 (cons (ss1 (stream-car strm) all all)
+	       (ss1 (stream-cdr strm) (- this 1) all)))
+	(else strm)))
+
+(define div quotient)
+
+(define /
+  (let ((old/ /))
+    (lambda args
+      (let ((quo (apply old/ args)))
+	(if (integer? quo)
+	    quo
+	    (exact->inexact quo))))))
+
+(define 1+
+  (let ((+ +))
+    (lambda (x) (+ x 1))))
+
+(define (-1+ x) (- x 1))
+
+(define (nth n l) (list-ref l n))
+
+(define (load-noisily file-name)
+  (define (iter port)
+    (let ((the-expression (read port)))
+      (cond ((eof-object? the-expression) #t)
+	    (else
+	     (display (eval the-expression))
+	     (newline)
+	     (iter port)))))
+  (let ((port (open-input-file file-name)))
+    (iter port)
+    (close-input-port port)
+    'ok))
+
+
+;;;  Get and put for section 2.3
+
+(define (get key1 key2)
+  (let ((subtable (assoc key1 (cdr the-get/put-table))))
+	(if (not subtable)
+		#f
+		(let ((record (assoc key2 (cdr subtable))))
+		  (if (not record)
+			  #f
+			  (cdr record))))))
+
+(define (put key1 key2 value)
+  (let ((subtable (assoc key1 (cdr the-get/put-table))))
+    (if (not subtable)
+        (set-cdr! the-get/put-table
+                  (cons (list key1
+                              (cons key2 value))
+                        (cdr the-get/put-table)))
+        (let ((record (assoc key2 (cdr subtable))))
+          (if (not record)
+              (set-cdr! subtable
+                        (cons (cons key2 value)
+                              (cdr subtable)))
+              (set-cdr! record value)))))
+  'ok)
+
+(define the-get/put-table (list '*table*))
+
+
+;;; simply.scm version 3.6 (4/13/94)
+
+;;; This file uses Scheme features we don't talk about in _Simply_Scheme_.
+;;; Read at your own risk.
+
+;; Make number->string remove leading "+" if necessary
+
+(if (char=? #\+ (string-ref (number->string 1.0) 0))
+    (let ((old-ns number->string)
+	  (char=? char=?)
+	  (string-ref string-ref)
+	  (substring substring)
+	  (string-length string-length))
+      (set! number->string
+	    (lambda args
+	      (let ((result (apply old-ns args)))
+		(if (char=? #\+ (string-ref result 0))
+		    (substring result 1 (string-length result))
+		    result)))))
+    'no-problem)
+
+(define number->string
+  (let ((old-ns number->string)
+	(string? string?))
+    (lambda args
+      (if (string? (car args))
+	  (car args)
+	  (apply old-ns args)))))
+
+;; Get strings in error messages to print nicely (especially "")
+
+(define whoops
+  (let ((string? string?)
+	(string-append string-append)
+	(error error)
+	(cons cons)
+	(map map)
+	(apply apply))
+    (define (error-printform x)
+      (if (string? x)
+	  (string-append "\"" x "\"")
+	  x))
+    (lambda (string . args)
+      (apply error (cons string (map error-printform args))))))
+
+
+;; ROUND returns an inexact integer if its argument is inexact,
+;; but we think it should always return an exact integer.
+;; (It matters because some Schemes print inexact integers as "+1.0".)
+;; The (exact 1) test is for PC Scheme, in which nothing is exact.
+(if (and (inexact? (round (sqrt 2))) (exact? 1))
+    (let ((old-round round)
+	  (inexact->exact inexact->exact))
+      (set! round
+	    (lambda (number)
+	      (inexact->exact (old-round number)))))
+    'no-problem)
+
+;; Remainder and quotient blow up if their argument isn't an integer.
+;; Unfortunately, in SCM, (* 365.25 24 60 60) *isn't* an integer.
+
+(if (inexact? (* .25 4))
+    (let ((rem remainder)
+	  (quo quotient)
+	  (inexact->exact inexact->exact)
+	  (integer? integer?))
+      (set! remainder
+	    (lambda (x y)
+	      (rem (if (integer? x) (inexact->exact x) x)
+		   (if (integer? y) (inexact->exact y) y))))
+      (set! quotient
+	    (lambda (x y)
+	      (quo (if (integer? x) (inexact->exact x) x)
+		   (if (integer? y) (inexact->exact y) y)))))
+    'done)
+
+
+;; Random
+;; If your version of Scheme has RANDOM, you should take this out.
+;; (It gives the same sequence of random numbers every time.) 
+
+(define random
+  (let ((*seed* 1) (quotient quotient) (modulo modulo) (+ +) (- -) (* *) (> >))
+    (lambda (x)
+      (let* ((hi (quotient *seed* 127773))
+	     (low (modulo *seed* 127773))
+	     (test (- (* 16807 low) (* 2836 hi))))
+	(if (> test 0)
+	    (set! *seed* test)
+	    (set! *seed* (+ test 2147483647))))
+      (modulo *seed* x))))
+
+
+;;; Logo-style word/sentence implementation
+
+(define word?
+  (let ((number? number?)
+	(symbol? symbol?)
+	(string? string?))
+    (lambda (x)
+      (or (symbol? x) (number? x) (string? x)))))
+
+(define sentence?
+  (let ((null? null?)
+	(pair? pair?)
+	(word? word?)
+	(car car)
+	(cdr cdr))    
+    (define (list-of-words? l)
+      (cond ((null? l) #t)
+	    ((pair? l)
+	     (and (word? (car l)) (list-of-words? (cdr l))))
+	    (else #f)))
+    list-of-words?))
+
+(define empty?
+  (let ((null? null?)
+	(string? string?)
+	(string=? string=?))
+    (lambda (x)
+      (or (null? x)
+	  (and (string? x) (string=? x ""))))))
+
+
+(define char-rank
+  ;; 0 Letter in good case or special initial
+  ;; 1 ., + or -
+  ;; 2 Digit
+  ;; 3 Letter in bad case or weird character
+  (let ((*the-char-ranks* (make-vector 256 3))
+	(= =)
+	(+ +)
+	(string-ref string-ref)
+	(string-length string-length)
+	(vector-set! vector-set!)
+	(char->integer char->integer)
+	(symbol->string symbol->string)
+	(vector-ref vector-ref))
+    (define (rank-string str rank)
+      (define (helper i len)
+	(if (= i len)
+	    'done
+	    (begin (vector-set! *the-char-ranks*
+				(char->integer (string-ref str i))
+				rank)
+		   (helper (+ i 1) len))))
+      (helper 0 (string-length str)))
+    (rank-string (symbol->string 'abcdefghijklmnopqrstuvwxyz) 0)
+    (rank-string "!$%&*/:<=>?~_^" 0)
+    (rank-string "+-." 1)
+    (rank-string "0123456789" 2)
+    (lambda (char)		    ;; value of char-rank
+      (vector-ref *the-char-ranks* (char->integer char)))))
+
+(define string->word
+  (let ((= =) (<= <=) (+ +) (- -)
+	(char-rank char-rank)
+	(string-ref string-ref)
+	(string-length string-length)
+	(string=? string=?)
+	(not not)
+	(char=? char=?)
+	(string->number string->number)
+	(string->symbol string->symbol))
+    (lambda (string)
+      (define (subsequents? string i length)
+	(cond ((= i length) #t)
+	      ((<= (char-rank (string-ref string i)) 2)
+	       (subsequents? string (+ i 1) length))
+	      (else #f)))
+      (define (special-id? string)
+	(or (string=? string "+")
+	    (string=? string "-")
+	    (string=? string "...")))
+      (define (ok-symbol? string)
+	(if (string=? string "")
+	    #f
+	    (let ((rank1 (char-rank (string-ref string 0))))
+	      (cond ((= rank1 0) (subsequents? string 1 (string-length string)))
+		    ((= rank1 1) (special-id? string))
+		    (else #f)))))
+      (define (nn-helper string i len seen-point?)
+	(cond ((= i len)
+	       (if seen-point?
+		   (not (char=? (string-ref string (- len 1)) #\0))
+		   #t))
+	      ((char=? #\. (string-ref string i))
+	       (cond (seen-point? #f)
+		     ((= (+ i 2) len) #t)  ; Accepts "23.0"
+		     (else (nn-helper string (+ i 1) len #t))))
+	      ((= 2 (char-rank (string-ref string i)))
+	       (nn-helper string (+ i 1) len seen-point?))
+	      (else #f)))
+      (define (narrow-number? string)
+	(if (string=? string "")
+	    #f
+	    (let* ((c0 (string-ref string 0))
+		   (start 0)
+		   (len (string-length string))
+		   (cn (string-ref string (- len 1))))
+	      (if (and (char=? c0 #\-) (not (= len 1)))
+		  (begin
+		   (set! start 1)
+		   (set! c0 (string-ref string 1)))
+		  #f)
+	      (cond ((not (= (char-rank cn) 2)) #f)  ; Rejects "-" among others
+		    ((char=? c0 #\.) #f)
+		    ((char=? c0 #\0)
+		     (cond ((= len 1) #t)  ; Accepts "0" but not "-0"
+			   ((= len 2) #f)  ; Rejects "-0" and "03"
+			   ((char=? (string-ref string (+ start 1)) #\.)
+			    (nn-helper string (+ start 2) len #t))
+			   (else #f)))
+		    (else (nn-helper string start len #f)))))) 
+
+      ;; The body of string->word:
+      (cond ((narrow-number? string) (string->number string))
+	    ((ok-symbol? string) (string->symbol string))
+	    (else string)))))
+
+(define char->word
+  (let ((= =)
+	(char-rank char-rank)
+	(make-string make-string)
+	(string->symbol string->symbol)
+	(string->number string->number)
+	(char=? char=?))
+    (lambda (char)
+      (let ((rank (char-rank char))
+	    (string (make-string 1 char)))
+	(cond ((= rank 0) (string->symbol string))
+	      ((= rank 2) (string->number string))
+	      ((char=? char #\+) '+)
+	      ((char=? char #\-) '-)
+	      (else string))))))
+
+(define word->string
+  (let ((number? number?)
+	(string? string?)
+	(number->string number->string)
+	(symbol->string symbol->string))
+    (lambda (wd)
+      (cond ((string? wd) wd)
+	    ((number? wd) (number->string wd))
+	    (else (symbol->string wd))))))
+
+(define count
+  (let ((word? word?)
+	(string-length string-length)
+	(word->string word->string)
+	(length length))
+    (lambda (stuff)
+      (if (word? stuff)
+	  (string-length (word->string stuff))
+	  (length stuff)))))
+
+(define word
+  (let ((string->word string->word)
+	(apply apply)
+	(string-append string-append)
+	(map map)
+	(word? word?)
+	(word->string word->string)
+	(whoops whoops))
+    (lambda x
+      (string->word
+       (apply string-append
+	      (map (lambda (arg)
+		     (if (word? arg)
+			 (word->string arg)
+			 (whoops "Invalid argument to WORD: " arg)))
+		   x))))))
+
+(define se
+  (let ((pair? pair?)
+	(null? null?)
+	(word? word?)
+	(car car)
+	(cons cons)
+	(cdr cdr)
+	(whoops whoops))
+    (define (paranoid-append a original-a b)
+      (cond ((null? a) b)
+	    ((word? (car a))
+	     (cons (car a) (paranoid-append (cdr a) original-a b)))
+	    (else (whoops "Argument to SENTENCE not a word or sentence"
+			 original-a ))))
+    (define (combine-two a b)                ;; Note: b is always a list
+      (cond ((pair? a) (paranoid-append a a b))
+	    ((null? a) b)
+	    ((word? a) (cons a b))
+	    (else (whoops "Argument to SENTENCE not a word or sentence:" a))))
+    ;; Helper function so recursive calls don't show up in TRACE
+    (define (real-se args)
+      (if (null? args)
+	  '()
+	  (combine-two (car args) (real-se (cdr args)))))
+    (lambda args
+      (real-se args))))
+
+(define sentence se)
+
+(define first
+  (let ((pair? pair?)
+	(char->word char->word)
+	(string-ref string-ref)
+	(word->string word->string)
+	(car car)
+	(empty? empty?)
+	(whoops whoops)
+	(word? word?))
+    (define (word-first wd)
+      (char->word (string-ref (word->string wd) 0)))
+    (lambda (x)
+      (cond ((pair? x) (car x))
+	    ((empty? x) (whoops "Invalid argument to FIRST: " x))
+	    ((word? x) (word-first x))
+	    (else (whoops "Invalid argument to FIRST: " x))))))
+
+(define last
+  (let ((pair? pair?)
+	(- -)
+	(word->string word->string)
+	(char->word char->word)
+	(string-ref string-ref)
+	(string-length string-length)
+	(empty? empty?)
+	(cdr cdr)
+	(car car)
+	(whoops whoops)
+	(word? word?))
+    (define (word-last wd)
+      (let ((s (word->string wd)))
+	(char->word (string-ref s (- (string-length s) 1)))))
+    (define (list-last lst)      
+      (if (empty? (cdr lst))
+	  (car lst)
+	  (list-last (cdr lst))))
+    (lambda (x)
+      (cond ((pair? x) (list-last x))
+	    ((empty? x) (whoops "Invalid argument to LAST: " x))
+	    ((word? x) (word-last x))
+	    (else (whoops "Invalid argument to LAST: " x))))))
+
+(define bf
+  (let ((pair? pair?)
+	(substring substring)
+	(string-length string-length)
+	(string->word string->word)
+	(word->string word->string)
+	(cdr cdr)
+	(empty? empty?)
+	(whoops whoops)
+	(word? word?))
+    (define string-bf
+      (lambda (s)
+      (substring s 1 (string-length s))))
+    (define (word-bf wd)
+      (string->word (string-bf (word->string wd))))
+    (lambda (x)
+      (cond ((pair? x) (cdr x))
+	    ((empty? x) (whoops "Invalid argument to BUTFIRST: " x))
+	    ((word? x) (word-bf x))
+	    (else (whoops "Invalid argument to BUTFIRST: " x))))))
+
+(define butfirst bf)
+
+(define bl
+  (let ((pair? pair?) (- -)
+	(cdr cdr)
+	(cons cons)
+	(car car)
+	(substring substring)
+	(string-length string-length)
+	(string->word string->word)
+	(word->string word->string)
+	(empty? empty?)
+	(whoops whoops)
+	(word? word?))
+    (define (list-bl list)
+      (if (null? (cdr list))
+	  '()
+	  (cons (car list) (list-bl (cdr list)))))
+    (define (string-bl s)
+      (substring s 0 (- (string-length s) 1)))  
+    (define (word-bl wd)
+      (string->word (string-bl (word->string wd))))
+    (lambda (x)
+      (cond ((pair? x) (list-bl x))
+	    ((empty? x) (whoops "Invalid argument to BUTLAST: " x))
+	    ((word? x) (word-bl x))
+	    (else (whoops "Invalid argument to BUTLAST: " x))))))
+
+(define butlast bl)
+
+(define item
+  (let ((> >) (- -) (< <) (integer? integer?) (list-ref list-ref)
+	(char->word char->word)
+	(string-ref string-ref)
+	(word->string word->string)
+	(not not)
+	(whoops whoops)
+	(count count)
+	(word? word?)
+	(list? list?))
+    (define (word-item n wd)
+      (char->word (string-ref (word->string wd) (- n 1))))
+    (lambda (n stuff)
+      (cond ((not (integer? n))
+	     (whoops "Invalid first argument to ITEM (must be an integer): "
+		     n))
+	    ((< n 1)
+	     (whoops "Invalid first argument to ITEM (must be positive): "
+		     n))
+	    ((> n (count stuff))
+	     (whoops "No such item: " n stuff))
+	    ((word? stuff) (word-item n stuff))
+	    ((list? stuff) (list-ref stuff (- n 1)))
+	    (else (whoops "Invalid second argument to ITEM: " stuff))))))
+
+(define equal?
+  ;; Note that EQUAL? assumes strings are numbers.
+  ;; (strings-are-numbers #f) doesn't change this behavior.
+  (let ((vector-length vector-length)
+	(= =)
+	(vector-ref vector-ref)
+	(+ +)
+	(string? string?)
+	(symbol? symbol?)
+	(null? null?)
+	(pair? pair?)
+	(car car)
+	(cdr cdr)
+	(eq? eq?)
+	(string=? string=?)
+	(symbol->string symbol->string)
+	(number? number?)
+	(string->word string->word)
+	(vector? vector?)
+	(eqv? eqv?))
+    (define (vector-equal? v1 v2)
+      (let ((len1 (vector-length v1))
+	    (len2 (vector-length v2)))
+	(define (helper i)
+	  (if (= i len1)
+	      #t
+	      (and (equal? (vector-ref v1 i) (vector-ref v2 i))
+		   (helper (+ i 1)))))
+	(if (= len1 len2)
+	    (helper 0)
+	    #f)))
+    (lambda (x y)
+      (cond ((null? x) (null? y))
+	    ((null? y) #f)
+	    ((pair? x)
+	     (and (pair? y)
+		  (equal? (car x) (car y))
+		  (equal? (cdr x) (cdr y))))
+	    ((pair? y) #f)
+	    ((symbol? x)
+	     (or (and (symbol? y) (eq? x y))
+		 (and (string? y) (string=? (symbol->string x) y))))
+	    ((symbol? y)
+	     (and (string? x) (string=? x (symbol->string y))))
+	    ((number? x)
+	     (or (and (number? y) (= x y))
+		 (and (string? y)
+		      (let ((possible-num (string->word y)))
+			(and (number? possible-num)
+			     (= x possible-num))))))
+	    ((number? y)
+	     (and (string? x)
+		  (let ((possible-num (string->word x)))
+		    (and (number? possible-num)
+			 (= possible-num y)))))
+	    ((string? x) (and (string? y) (string=? x y)))
+	    ((string? y) #f)
+	    ((vector? x) (and (vector? y) (vector-equal? x y)))
+	    ((vector? y) #f)
+	    (else (eqv? x y))))))
+
+(define member?
+  (let ((> >) (- -) (< <)
+	(null? null?)
+	(symbol? symbol?)
+	(eq? eq?)
+	(car car)
+	(not not)
+	(symbol->string symbol->string)
+	(string=? string=?)
+	(cdr cdr)
+	(equal? equal?)
+	(word->string word->string)
+	(string-length string-length)
+	(whoops whoops)
+	(string-ref string-ref)
+	(char=? char=?)
+	(list? list?)
+	(number? number?)
+	(empty? empty?)
+	(word? word?)
+	(string? string?))
+    (define (symbol-in-list? symbol string lst)
+      (cond ((null? lst) #f)
+	    ((and (symbol? (car lst))
+		  (eq? symbol (car lst))))
+	    ((string? (car lst))
+	     (cond ((not string)
+		    (symbol-in-list? symbol (symbol->string symbol) lst))
+		   ((string=? string (car lst)) #t)
+		   (else (symbol-in-list? symbol string (cdr lst)))))
+	    (else (symbol-in-list? symbol string (cdr lst)))))
+    (define (word-in-list? wd lst)
+      (cond ((null? lst) #f)
+	    ((equal? wd (car lst)) #t)
+	    (else (word-in-list? wd (cdr lst)))))
+    (define (word-in-word? small big)
+      (let ((one-letter-str (word->string small)))
+	(if (> (string-length one-letter-str) 1)
+	    (whoops "Invalid arguments to MEMBER?: " small big)
+	    (let ((big-str (word->string big)))
+	      (char-in-string? (string-ref one-letter-str 0)
+			       big-str
+			       (- (string-length big-str) 1))))))
+    (define (char-in-string? char string i)
+      (cond ((< i 0) #f)
+	    ((char=? char (string-ref string i)) #t)
+	    (else (char-in-string? char string (- i 1)))))
+    (lambda (x stuff)
+      (cond ((empty? stuff) #f)
+	    ((word? stuff) (word-in-word? x stuff))
+	    ((not (list? stuff))
+	     (whoops "Invalid second argument to MEMBER?: " stuff))
+	    ((symbol? x) (symbol-in-list? x #f stuff))
+	    ((or (number? x) (string? x))
+	     (word-in-list? x stuff))
+	    (else (whoops "Invalid first argument to MEMBER?: " x))))))
+
+(define before?
+  (let ((not not)
+	(word? word?)
+	(whoops whoops)
+	(string<? string<?)
+	(word->string word->string))
+    (lambda (wd1 wd2)
+      (cond ((not (word? wd1))
+	     (whoops "Invalid first argument to BEFORE? (not a word): " wd1))
+	    ((not (word? wd2))
+	     (whoops "Invalid second argument to BEFORE? (not a word): " wd2))
+	    (else (string<? (word->string wd1) (word->string wd2)))))))
+
+
+;;; Higher Order Functions
+
+(define filter
+  (let ((null? null?)
+	(car car)
+	(cons cons)
+	(cdr cdr)
+	(not not)
+	(procedure? procedure?)
+	(whoops whoops)
+	(list? list?))
+    (lambda (pred l)
+      ;; Helper function so recursive calls don't show up in TRACE
+      (define (real-filter l)
+	(cond ((null? l) '())
+	      ((pred (car l))
+	       (cons (car l) (real-filter (cdr l))))
+	      (else (real-filter (cdr l)))))
+      (cond ((not (procedure? pred))
+	     (whoops "Invalid first argument to FILTER (not a procedure): "
+		     pred))
+	    ((not (list? l))
+	     (whoops "Invalid second argument to FILTER (not a list): " l))
+	    (else (real-filter l))))))
+
+(define keep
+  (let ((+ +) (= =) (pair? pair?)
+	(substring substring)
+	(char->word char->word)
+	(string-ref string-ref)
+	(string-set! string-set!)
+	(word->string word->string)
+	(string-length string-length)
+	(string->word string->word)
+	(make-string make-string)
+	(procedure? procedure?)
+	(whoops whoops)
+	(word? word?)
+	(null? null?))
+    (lambda (pred w-or-s)
+      (define (keep-string in i out out-len len)
+	(cond ((= i len) (substring out 0 out-len))
+	      ((pred (char->word (string-ref in i)))
+	       (string-set! out out-len (string-ref in i))
+	       (keep-string in (+ i 1) out (+ out-len 1) len))
+	      (else (keep-string in (+ i 1) out out-len len))))
+      (define (keep-word wd)
+	(let* ((string (word->string wd))
+	       (len (string-length string)))
+	  (string->word
+	   (keep-string string 0 (make-string len) 0 len))))
+      (cond ((not (procedure? pred))
+	     (whoops "Invalid first argument to KEEP (not a procedure): "
+		    pred))
+	    ((pair? w-or-s) (filter pred w-or-s))
+	    ((word? w-or-s) (keep-word w-or-s))
+	    ((null? w-or-s) '())
+	    (else
+	     (whoops "Bad second argument to KEEP (not a word or sentence): "
+		     w-or-s))))))
+
+(define appearances
+  (let ((count count)
+	(keep keep)
+	(equal? equal?))
+    (lambda (item aggregate)
+      (count (keep (lambda (element) (equal? item element)) aggregate)))))
+
+(define every
+  (let ((= =) (+ +)
+	(se se)
+	(char->word char->word)
+	(string-ref string-ref)
+	(empty? empty?)
+	(first first)
+	(bf bf)
+	(not not)
+	(procedure? procedure?)
+	(whoops whoops)
+	(word? word?)
+	(word->string word->string)
+	(string-length string-length))
+    (lambda (fn stuff)
+      (define (string-every string i length)
+	(if (= i length)
+	    '()
+	    (se (fn (char->word (string-ref string i)))
+		(string-every string (+ i 1) length))))
+      (define (sent-every sent)
+	;; This proc. can't be optimized or else it will break the
+	;; exercise where we ask them to reimplement sentences as
+	;; vectors and then see if every still works.
+	(if (empty? sent)
+	    sent		; Can't be '() or exercise breaks.
+	    (se (fn (first sent))    
+		(sent-every (bf sent)))))
+      (cond ((not (procedure? fn))
+	     (whoops "Invalid first argument to EVERY (not a procedure):"
+		     fn))
+	    ((word? stuff)
+	     (let ((string (word->string stuff)))
+	       (string-every string 0 (string-length string))))
+	    (else (sent-every stuff))))))
+
+;; In _Simply Scheme_, accumulate works on words and sentences, and takes
+;; two arguments.  In SICP, accumulate works on lists, and takes three
+;; arguments.  This version does both.  Sorry.
+
+(define accumulate
+  (let ((not not)
+	(empty? empty?)
+	(bf bf)
+	(first first)
+	(procedure? procedure?)
+	(whoops whoops)
+	(member member)
+	(list list))
+    (lambda (combiner stuff . extra)
+      (define (real-accumulate stuff)
+	(if (empty? (bf stuff))
+	    (first stuff)
+	    (combiner (first stuff) (real-accumulate (bf stuff)))))
+      (define (sicp-accumulate initial stuff)
+	(if (null? stuff)
+	    initial
+	    (combiner (car stuff) (sicp-accumulate initial (cdr stuff)))))
+      (cond ((not (procedure? combiner))
+	     (whoops "Invalid first argument to ACCUMULATE (not a procedure):"
+		     combiner))
+	    ((null? extra)	; Simply Scheme version
+	     (cond ((not (empty? stuff)) (real-accumulate stuff))
+		   ((member combiner (list + * word se)) (combiner))
+		   (else
+		    (whoops "Can't accumulate empty input with that combiner"))))
+	    ((not (null? (cdr extra)))
+	     (whoops "Too many arguments to accumulate"))
+	    (else (sicp-accumulate stuff (car extra)))))))
+
+(define reduce
+  (let ((null? null?)
+	(cdr cdr)
+	(car car)
+	(not not)
+	(procedure? procedure?)
+	(whoops whoops)
+	(member member)
+	(list list))
+    (lambda (combiner stuff)
+      (define (real-reduce stuff)
+	(if (null? (cdr stuff))
+	    (car stuff)
+	    (combiner (car stuff) (real-reduce (cdr stuff)))))
+      (cond ((not (procedure? combiner))
+	     (whoops "Invalid first argument to REDUCE (not a procedure):"
+		     combiner))
+	    ((not (null? stuff)) (real-reduce stuff))
+	    ((member combiner (list + * word se append)) (combiner))
+	    (else (whoops "Can't reduce empty input with that combiner"))))))
+
+(define repeated
+  (let ((= =) (- -))
+    (lambda (fn number)
+      (if (= number 0)
+	  (lambda (x) x)
+	  (lambda (x)
+	    ((repeated fn (- number 1)) (fn x)))))))
+
+
+;; Tree stuff
+(define make-node cons)
+(define datum car)
+(define children cdr)
+
+
+;; I/O
+        
+(define show
+  (let ((= =)
+	(length length)
+	(display display)
+	(car car)
+	(newline newline)
+	(not not)
+	(output-port? output-port?)
+	(apply apply)
+	(whoops whoops))
+    (lambda args
+      (cond
+       ((= (length args) 1)
+	(display (car args))
+	(newline))
+       ((= (length args) 2)
+	(if (not (output-port? (car (cdr args))))
+	    (whoops "Invalid second argument to SHOW (not an output port): "
+		    (car (cdr args))))
+	(apply display args)
+	(newline (car (cdr args))))
+       (else (whoops "Incorrect number of arguments to procedure SHOW"))))))
+
+(define show-line
+  (let ((>= >=)
+	(length length)
+	(whoops whoops)
+	(null? null?)
+	(current-output-port current-output-port)
+	(car car)
+	(not not)
+	(list? list?)
+	(display display)
+	(for-each for-each)
+	(cdr cdr)
+	(newline newline))
+    (lambda (line . args)
+      (if (>= (length args) 2)
+	  (whoops "Too many arguments to show-line")
+	  (let ((port (if (null? args) (current-output-port) (car args))))
+	    (cond ((not (list? line))
+		   (whoops "Invalid argument to SHOW-LINE (not a list):" line))
+		  ((null? line) #f)
+		  (else
+		   (display (car line) port)
+		   (for-each (lambda (wd) (display " " port) (display wd port))
+			     (cdr line))))
+	    (newline port))))))
+
+(define read-string
+  (let ((read-char read-char)
+	(eqv? eqv?)
+	(apply apply)
+	(string-append string-append)
+	(substring substring)
+	(reverse reverse)
+	(cons cons)
+	(>= >=) (+ +)
+	(string-set! string-set!)
+	(length length)
+	(whoops whoops)
+	(null? null?)
+	(current-input-port current-input-port)
+	(car car)
+	(cdr cdr)
+	(eof-object? eof-object?)
+	(list list)
+	(make-string make-string)
+	(peek-char peek-char))
+    (define (read-string-helper chars all-length chunk-length port)
+      (let ((char (read-char port))
+	    (string (car chars)))
+	(cond ((or (eof-object? char) (eqv? char #\newline))
+	       (apply string-append
+		      (reverse
+		       (cons
+			(substring (car chars) 0 chunk-length)
+			(cdr chars)))))
+	      ((>= chunk-length 80)
+	       (let ((newstring (make-string 80)))
+		 (string-set! newstring 0 char)
+		 (read-string-helper (cons newstring chars)
+				     (+ all-length 1)
+				     1
+				     port)))
+	      (else
+	       (string-set! string chunk-length char)
+	       (read-string-helper chars
+				   (+ all-length 1)
+				   (+ chunk-length 1)
+				   port)))))
+    (lambda args
+      (if (>= (length args) 2)
+	  (whoops "Too many arguments to read-string")
+	  (let ((port (if (null? args) (current-input-port) (car args))))
+	    (if (eof-object? (peek-char port))
+		(read-char port)
+		(read-string-helper (list (make-string 80)) 0 0 port)))))))
+
+(define read-line
+  (let ((= =)
+	(list list)
+	(string->word string->word)
+	(substring substring)
+	(char-whitespace? char-whitespace?)
+	(string-ref string-ref)
+	(+ +)
+	(string-length string-length)
+	(apply apply)
+	(read-string read-string))
+    (lambda args
+      (define (tokenize string)
+	(define (helper i start len)
+	  (cond ((= i len)
+		 (if (= i start)
+		     '()
+		     (list (string->word (substring string start i)))))
+		((char-whitespace? (string-ref string i))
+		 (if (= i start)
+		     (helper (+ i 1) (+ i 1) len)
+		     (cons (string->word (substring string start i))
+			   (helper (+ i 1) (+ i 1) len))))
+		(else (helper (+ i 1) start len))))
+        (if (eof-object? string)
+            string
+            (helper 0 0 (string-length string))))
+      (tokenize (apply read-string args)))))
+
+(define *the-open-inports* '())
+(define *the-open-outports* '())
+
+(define align
+  (let ((< <) (abs abs) (* *) (expt expt) (>= >=) (- -) (+ +) (= =)
+	(null? null?)
+	(car car)
+	(round round)
+	(number->string number->string)
+	(string-length string-length)
+	(string-append string-append)
+	(make-string make-string)
+	(substring substring)
+	(string-set! string-set!)
+	(number? number?)
+	(word->string word->string))
+    (lambda (obj width . rest)
+      (define (align-number obj width rest)
+	(let* ((sign (< obj 0))
+	       (num (abs obj))
+	       (prec (if (null? rest) 0 (car rest)))
+	       (big (round (* num (expt 10 prec))))
+	       (cvt0 (number->string big))
+	       (cvt (if (< num 1) (string-append "0" cvt0) cvt0))
+	       (pos-str (if (>= (string-length cvt0) prec)
+			    cvt
+			    (string-append
+			     (make-string (- prec (string-length cvt0)) #\0)
+			     cvt)))
+	       (string (if sign (string-append "-" pos-str) pos-str))
+	       (length (+ (string-length string)
+			  (if (= prec 0) 0 1)))
+	       (left (- length (+ 1 prec)))
+	       (result (if (= prec 0)
+			   string
+			   (string-append
+			    (substring string 0 left)
+			    "."
+			    (substring string left (- length 1))))))
+	  (cond ((= length width) result)
+		((< length width)
+		 (string-append (make-string (- width length) #\space) result))
+		(else (let ((new (substring result 0 width)))
+			(string-set! new (- width 1) #\+)
+			new)))))
+      (define (align-word string)
+	(let ((length (string-length string)))
+	  (cond ((= length width) string)
+		((< length width)
+		 (string-append string (make-string (- width length) #\space)))
+		(else (let ((new (substring string 0 width)))
+			(string-set! new (- width 1) #\+)
+			new)))))
+      (if (number? obj)
+	  (align-number obj width rest)
+	  (align-word (word->string obj))))))
+
+(define open-output-file
+  (let ((oof open-output-file)
+	(cons cons))
+    (lambda (filename)
+      (let ((port (oof filename)))
+	(set! *the-open-outports* (cons port *the-open-outports*))
+	port))))
+
+(define open-input-file
+  (let ((oif open-input-file)
+	(cons cons))
+    (lambda (filename)
+      (let ((port (oif filename)))
+	(set! *the-open-inports* (cons port *the-open-inports*))
+	port))))
+
+(define remove!
+  (let ((null? null?)
+	(cdr cdr)
+	(eq? eq?)
+	(set-cdr! set-cdr!)
+	(car car))
+    (lambda (thing lst)
+      (define (r! prev)
+	(cond ((null? (cdr prev)) lst)
+	      ((eq? thing (car (cdr prev)))
+	       (set-cdr! prev (cdr (cdr prev)))
+	       lst)
+	      (else (r! (cdr prev)))))
+      (cond ((null? lst) lst)
+	    ((eq? thing (car lst)) (cdr lst))
+	    (else (r! lst))))))
+
+(define close-input-port
+  (let ((cip close-input-port)
+	(remove! remove!))
+    (lambda (port)
+      (set! *the-open-inports* (remove! port *the-open-inports*))
+      (cip port))))
+
+(define close-output-port
+  (let ((cop close-output-port)
+	(remove! remove!))
+    (lambda (port)
+      (set! *the-open-outports* (remove! port *the-open-outports*))
+      (cop port))))
+
+(define close-all-ports
+  (let ((for-each for-each)
+	(close-input-port close-input-port)
+	(close-output-port close-output-port))
+    (lambda ()
+      (for-each close-input-port *the-open-inports*)
+      (for-each close-output-port *the-open-outports*)
+      'closed)))
+
+;; Make arithmetic work on numbers in string form:
+(define maybe-num
+  (let ((string? string?)
+    	(string->number string->number))
+    (lambda (arg)
+      (if (string? arg)
+	  (let ((num (string->number arg)))
+	    (if num num arg))
+	  arg))))
+
+(define logoize
+  (let ((apply apply)
+	(map map)
+	(maybe-num maybe-num))
+    (lambda (fn)
+      (lambda args
+	(apply fn (map maybe-num args))))))
+
+;; special case versions of logoize, since (lambda args ...) is expensive
+(define logoize-1
+  (let ((maybe-num maybe-num))
+    (lambda (fn)
+      (lambda (x) (fn (maybe-num x))))))
+
+(define logoize-2
+  (let ((maybe-num maybe-num))
+    (lambda (fn)
+      (lambda (x y) (fn (maybe-num x) (maybe-num y))))))
+
+(define strings-are-numbers
+  (let ((are-they? #f)
+        (real-* *)
+        (real-+ +)
+        (real-- -)
+        (real-/ /)
+        (real-< <)
+        (real-<= <=)
+        (real-= =)
+        (real-> >)
+        (real->= >=)
+        (real-abs abs)
+        (real-acos acos)
+        (real-asin asin)
+        (real-atan atan)
+        (real-ceiling ceiling)
+        (real-cos cos)
+        (real-even? even?)
+        (real-exp exp)
+        (real-expt expt)
+        (real-floor floor)
+	(real-align align)
+        (real-gcd gcd)
+        (real-integer? integer?)
+        (real-item item)
+        (real-lcm lcm)
+        (real-list-ref list-ref)
+        (real-log log)
+        (real-make-vector make-vector)
+        (real-max max)
+        (real-min min)
+        (real-modulo modulo)
+        (real-negative? negative?)
+        (real-number? number?)
+        (real-odd? odd?)
+        (real-positive? positive?)
+        (real-quotient quotient)
+        (real-random random)
+        (real-remainder remainder)
+        (real-repeated repeated)
+        (real-round round)
+        (real-sin sin)
+        (real-sqrt sqrt)
+        (real-tan tan)
+        (real-truncate truncate)
+        (real-vector-ref vector-ref)
+        (real-vector-set! vector-set!)
+        (real-zero? zero?)
+	(maybe-num maybe-num)
+	(number->string number->string)
+	(cons cons)
+	(car car)
+	(cdr cdr)
+	(eq? eq?)
+	(show show)
+	(logoize logoize)
+	(logoize-1 logoize-1)
+	(logoize-2 logoize-2)
+	(not not)
+	(whoops whoops))
+
+    (lambda (yesno)
+      (cond ((and are-they? (eq? yesno #t))
+	     (show "Strings are already numbers"))
+	    ((eq? yesno #t)
+	     (set! are-they? #t)
+	     (set! * (logoize real-*))
+	     (set! + (logoize real-+))
+	     (set! - (logoize real--))
+	     (set! / (logoize real-/))
+	     (set! < (logoize real-<))
+	     (set! <= (logoize real-<=))
+	     (set! = (logoize real-=))
+	     (set! > (logoize real->))
+	     (set! >= (logoize real->=))
+	     (set! abs (logoize-1 real-abs))
+	     (set! acos (logoize-1 real-acos))
+	     (set! asin (logoize-1 real-asin))
+	     (set! atan (logoize real-atan))
+	     (set! ceiling (logoize-1 real-ceiling))
+	     (set! cos (logoize-1 real-cos))
+	     (set! even? (logoize-1 real-even?))
+	     (set! exp (logoize-1 real-exp))
+	     (set! expt (logoize-2 real-expt))
+	     (set! floor (logoize-1 real-floor))
+	     (set! align (logoize align))
+	     (set! gcd (logoize real-gcd))
+	     (set! integer? (logoize-1 real-integer?))
+	     (set! item (lambda (n stuff)
+			  (real-item (maybe-num n) stuff)))
+	     (set! lcm (logoize real-lcm))
+	     (set! list-ref (lambda (lst k) 
+			      (real-list-ref lst (maybe-num k))))
+	     (set! log (logoize-1 real-log))
+	     (set! max (logoize real-max))
+	     (set! min (logoize real-min))
+	     (set! modulo (logoize-2 real-modulo))
+	     (set! negative? (logoize-1 real-negative?))
+	     (set! number? (logoize-1 real-number?))
+	     (set! odd? (logoize-1 real-odd?))
+	     (set! positive? (logoize-1 real-positive?))
+	     (set! quotient (logoize-2 real-quotient))
+	     (set! random (logoize real-random))
+	     (set! remainder (logoize-2 real-remainder))
+	     (set! round (logoize-1 real-round))
+	     (set! sin (logoize-1 real-sin))
+	     (set! sqrt (logoize-1 real-sqrt))
+
+	     (set! tan (logoize-1 real-tan))
+	     (set! truncate (logoize-1 real-truncate))
+	     (set! zero? (logoize-1 real-zero?))
+	     (set! vector-ref
+		   (lambda (vec i) (real-vector-ref vec (maybe-num i))))
+	     (set! vector-set!
+		   (lambda (vec i val)
+		     (real-vector-set! vec (maybe-num i) val)))
+	     (set! make-vector
+		   (lambda (num . args)
+		     (apply real-make-vector (cons (maybe-num num)
+						   args))))
+	     (set! list-ref
+		   (lambda (lst i) (real-list-ref lst (maybe-num i))))
+	     (set! repeated
+		   (lambda (fn n) (real-repeated fn (maybe-num n)))))
+	    ((and (not are-they?) (not yesno))
+	     (show "Strings are already not numbers"))
+	    ((not yesno)
+	     (set! are-they? #f) (set! * real-*) (set! + real-+)
+	     (set! - real--) (set! / real-/) (set! < real-<)
+	     (set! <= real-<=) (set! = real-=) (set! > real->)
+	     (set! >= real->=) (set! abs real-abs) (set! acos real-acos)
+	     (set! asin real-asin) (set! atan real-atan)
+	     (set! ceiling real-ceiling) (set! cos real-cos)
+	     (set! even? real-even?)
+	     (set! exp real-exp) (set! expt real-expt)
+	     (set! floor real-floor) (set! align real-align)
+	     (set! gcd real-gcd) (set! integer? real-integer?)
+	     (set! item real-item)
+	     (set! lcm real-lcm) (set! list-ref real-list-ref)
+	     (set! log real-log) (set! max real-max) (set! min real-min)
+	     (set! modulo real-modulo) (set! odd? real-odd?)
+	     (set! quotient real-quotient) (set! random real-random)
+	     (set! remainder real-remainder) (set! round real-round)
+	     (set! sin real-sin) (set! sqrt real-sqrt) (set! tan real-tan)
+	     (set! truncate real-truncate) (set! zero? real-zero?)
+	     (set! positive? real-positive?) (set! negative? real-negative?)
+	     (set! number? real-number?) (set! vector-ref real-vector-ref)
+	     (set! vector-set! real-vector-set!)
+	     (set! make-vector real-make-vector)
+	     (set! list-ref real-list-ref) (set! item real-item)
+	     (set! repeated real-repeated))
+	    (else (whoops "Strings-are-numbers: give a #t or a #f")))
+	    are-they?)))
+
+
+;; By default, strings are numbers:
+(strings-are-numbers #t)
+
+(if scm?
+    (begin
+     (eval '(define (trace:untracef fun sym)
+	      (cond ((memq sym *traced-procedures*)
+		     (set! *traced-procedures*
+			   (remove! sym *traced-procedures*))
+		     (untracef fun))
+		    (else
+		     (display "WARNING: not traced " (current-error-port))
+		     (display sym (current-error-port))
+		     (newline (current-error-port))
+		     fun))))
+     (eval '(define (edit file)
+	      (ed file)
+	      (load file)))
+     (eval '(define read
+	      (let ((old-read read))
+		(lambda args
+		  (let* ((result (apply old-read args))
+			 (char (apply peek-char args)))
+		    (if (end-of-line-char? char)
+			(apply read-char args)
+			'())
+		    result)))))
+     (eval `(define (end-of-line-char? char)
+	      (eq? char ,(integer->char 10))))
+
+     ;; Don't get confusing "unspecified", and don't allow (define ((f x) y)..)
+     (eval '(define base:define define))
+     (eval '(define define-fixup
+	      (let ((pair? pair?)
+		    (map map)
+		    (eq? eq?)
+		    (car car)
+		    (list list)
+		    (cdr cdr)
+		    (cadr cadr)
+		    (caadr caadr)
+		    (cons cons)
+		    (cdadr cdadr)
+		    (cddr cddr))
+		(lambda (exps)
+		  (map (lambda (exp)
+			 (if (and (pair? exp)
+				  (eq? (car exp) 'define)
+				  (pair? (cdr exp))
+				  (pair? (cadr exp)))
+			     (list 'define
+				   (caadr exp)
+				   (cons 'lambda
+					 (cons (cdadr exp)
+					       (cddr exp))))
+			     exp))
+		       exps)))))
+     (eval '(define define-handler
+	      (let ((cons cons)
+		    (null? null?)
+		    (car car)
+		    (cdr cdr)
+		    (remove! remove!)
+		    (cddr cddr)
+		    (pair? pair?)
+		    (cadr cadr)
+		    (list list)
+		    (member member)
+		    (caadr caadr))
+		(lambda (exp env)
+		  (cond ((or (null? (cdr exp)) (null? (cddr exp)))
+			 (error "Badly formed DEFINE"))
+			((not (pair? (cadr exp)))
+			 (cond ((not (null? env)) (cons 'base:define (cdr exp)))
+			       ((member (cadr exp)
+					'(define quote set! if cond else lambda
+					   and or let cons-stream delay
+					   begin quasiquote))
+				(error "Can't redefine special form" (cadr exp)))
+			       (else (eval (cons 'base:define (cdr exp)))
+				     (set! *traced-procedures*
+					   (remove! (cadr exp)
+						    *traced-procedures*))
+				     (list 'quote (cadr exp)))))
+			((pair? (caadr exp))
+			 (error "Badly formed DEFINE"))
+			(else
+			 (cond ((not (null? env))
+				(cons 'base:define (cdr exp)))
+			       ((member (caadr exp)
+					'(define quote set! if cond else lambda
+					   and or let cons-stream delay
+					   begin quasiquote))
+				(error "Can't redefine special form" (caadr exp)))
+			       (else (eval (cons 'base:define
+						 (define-fixup (cdr exp))))
+				     (set! *traced-procedures*
+					   (remove! (caadr exp)
+						    *traced-procedures*))
+				     (list 'quote (caadr exp))))))))))
+     (eval '(define define (procedure->macro define-handler)))
+     (eval '(define fix-message
+	      (let ((cons cons)
+		    (car car)
+		    (cdr cdr)
+		    (procedure? procedure?)
+		    (eval eval)
+		    (set! set!))
+		(procedure->macro
+		 (lambda (exp env)
+		   (let ((old (string->symbol
+			       (string-append "base:"
+					      (symbol->string (cadr exp))))))
+		     (eval `(define ,old ,(cadr exp)))
+		     (if (procedure? (eval (cadr exp)))
+			 `(set! ,(cadr exp)
+				(lambda args
+				  (apply ,old args)
+				  'okay))
+			 `(set! ,(cadr exp) 
+				(procedure->macro
+				 (lambda (exp env)
+				   `(begin ,(cons ',old (cdr exp))
+					   'okay)))))))))))
+     (fix-message load)
+     (fix-message vector-set!)
+     (fix-message display)
+     (fix-message write)
+     (fix-message newline)
+     (fix-message close-input-port)
+     (fix-message close-output-port)
+     (fix-message for-each)
+     (fix-message set-car!)
+     (fix-message set-cdr!)
+     (fix-message transcript-on)
+     (fix-message transcript-off)
+     ;; (fix-message set!)
+     (eval '(define base:set! set!))
+     (eval '(set! set!
+		  (procedure->macro
+		   (lambda (exp env)
+		     (if (member (cadr exp)
+				 '(define quote set! if cond else lambda and or
+				    let cons-stream delay
+				    begin quasiquote))
+			 (error "Can't redefine special form" (cadr exp))
+			 `(begin (base:set! ,(cadr exp) ,(caddr exp))
+				 'okay))))))
+     (set-current-error-port (current-output-port))
+
+     (verbose 1)))
+
+(if scm?
+    (begin
+     (eval '(define scm-xcenter 0))
+     (eval '(define scm-ycenter 0))
+     (eval '(define pen-color 7))
+     (eval '(define bg-color 0))
+     (eval '(define color-makers '#((set-color! 0)
+				    (set-color! 9)
+				    (set-color! 10)
+				    (set-color! 11)
+				    (set-color! 12)
+				    (set-color! 13)
+				    (set-color! 14)
+				    (set-color! 15))))
+     (eval '(define (clearscreen)
+	      (graphics-mode!)
+	      (clear-graphics!)
+	      (goto-center!)
+	      (set! scm-xcenter (where-x))
+	      (set! scm-ycenter (where-y))
+	      (turn-to! -90)
+	      (setpc pen-color)
+	      (if turtle-shown (show-turtle #t))))
+     (eval '(define (internal-fd dist)
+	      (if (pendown?)
+		  (draw dist)
+		  (move dist))))
+     (eval '(define (internal-rt turn)
+	      (turn-left turn)))
+     (eval '(define (internal-setxy newx newy)
+	      ((if (pendown?) draw-to! move-to!)
+	       (+ newx scm-xcenter)
+	       (- scm-ycenter newy))))
+     (eval '(define (internal-setheading newh)
+	      (turn-to! (+ -90 newh))))
+     (eval '(define (xcor)
+	      (- (where-x) scm-xcenter)))
+     (eval '(define (ycor)
+	      (- scm-ycenter (where-y))))
+     (eval '(define (heading)
+	      (- 90 (what-direction)))))
+    (begin
+     (eval '(define gambit-xcor 0))
+     (eval '(define gambit-ycor 0))
+     (eval '(define gambit-heading 0))
+     (eval '(define pen-color 0))
+     (eval '(define bg-color 7))
+     (eval '(define color-makers '#((set-rgb-color 0 0 0)
+				    (set-rgb-color 0 0 1)
+				    (set-rgb-color 0 1 0)
+				    (set-rgb-color 0 1 1)
+				    (set-rgb-color 1 0 0)
+				    (set-rgb-color 1 0 1)
+				    (set-rgb-color 1 1 0)
+				    (set-rgb-color 1 1 1))))
+     (eval '(define (clearscreen)
+	      (clear-graphics)
+	      (position-pen 0 0)
+	      (set! gambit-xcor 0)
+	      (set! gambit-ycor 0)
+	      (set! gambit-heading 0)
+	      (if turtle-shown (show-turtle #t))))
+     (eval '(define (internal-fd dist)
+	      (set! gambit-xcor (+ gambit-xcor
+				   (* dist (degree-sin gambit-heading))))
+	      (set! gambit-ycor (+ gambit-ycor
+				   (* dist (degree-cos gambit-heading))))
+	      ((if (pendown?) draw-line-to position-pen)
+	       gambit-xcor gambit-ycor)))
+     (eval '(define (internal-rt turn)
+	      (set! gambit-heading (+ gambit-heading turn))
+	      (while (lambda () (< gambit-heading 0))
+		     (lambda () (set! gambit-heading (+ gambit-heading 360))))
+	      (while (lambda () (>= gambit-heading 360))
+		     (lambda () (set! gambit-heading (- gambit-heading 360))))))
+     (eval '(define (while condition action)
+	      (if (condition) (begin (action) (while condition action)))))
+     (eval '(define (degree-sin angle)
+	      (sin (/ (* angle 3.141592654) 180))))
+     (eval '(define (degree-cos angle)
+	      (cos (/ (* angle 3.141592654) 180))))
+     (eval '(define (internal-setxy newx newy)
+	      (set! gambit-xcor newx)
+	      (set! gambit-ycor newy)
+	      ((if (pendown?) draw-line-to position-pen)
+	       gambit-xcor gambit-ycor)))
+     (eval '(define (internal-setheading newh)
+	      (set! gambit-heading newh)
+	      (while (lambda () (< gambit-heading 0))
+		     (lambda () (set! gambit-heading (+ gambit-heading 360))))
+	      (while (lambda () (>= gambit-heading 360))
+		     (lambda () (set! gambit-heading (- gambit-heading 360))))))
+     (eval '(define (xcor) gambit-xcor))
+     (eval '(define (ycor) gambit-ycor))
+     (eval '(define (heading) gambit-heading))))
+
+(define turtle-shown #t)
+(define (showturtle)
+  (if (not turtle-shown) (show-turtle #t))
+  (set! turtle-shown #t))
+(define st showturtle)
+(define (hideturtle)
+  (if turtle-shown (show-turtle #f))
+  (set! turtle-shown #f))
+(define ht hideturtle)
+(define (shown?) turtle-shown)
+
+(define (forward dist)
+  (if turtle-shown (show-turtle #f))
+  (internal-fd dist)
+  (if turtle-shown (show-turtle #t)))
+(define (right angle)
+  (if turtle-shown (show-turtle #f))
+  (internal-rt angle)
+  (if turtle-shown (show-turtle #t)))
+(define (setxy newx newy)
+  (if turtle-shown (show-turtle #f))
+  (internal-setxy newx newy)
+  (if turtle-shown (show-turtle #t)))
+(define (setheading newh)
+  (if turtle-shown (show-turtle #f))
+  (internal-setheading newh)
+  (if turtle-shown (show-turtle #t)))
+
+(define (back dist)
+  (forward (- dist)))
+(define fd forward)
+(define bk back)
+(define (left turn)
+  (right (- turn)))
+(define lt left)
+(define rt right)
+(define (setx newx)
+  (setxy newx (ycor)))
+(define (sety newy)
+  (setxy (xcor) newy))
+(define pendown-flag #t)
+(define penerase-flag #f)
+(define (pendown?) pendown-flag)
+(define (pendown)
+  (set! pendown-flag #t)
+  (set! penerase-flag #f)
+  (set! true-pen-color pen-color)
+  (eval (vector-ref color-makers true-pen-color)))
+(define pd pendown)
+(define (penup)
+  (set! pendown-flag #f))
+(define pu penup)
+(define (home) (setxy 0 0))
+(define cs clearscreen)
+(define (pos) (list (xcor) (ycor)))
+(define (setpencolor newc)
+  (eval (vector-ref color-makers newc))
+  (set! pen-color newc)
+  (if turtle-shown (show-turtle #t))
+  (if penerase-flag
+      (eval (vector-ref color-makers bg-color))
+      (set! true-pen-color newc)))
+(define setpc setpencolor)
+(define (pencolor) pen-color)
+(define pc pencolor)
+
+(define true-pen-color pen-color)
+(define (penerase)
+  (set! true-pen-color bg-color)
+  (set! pendown-flag #t)
+  (set! penerase-flag #t)
+  (eval (vector-ref color-makers true-pen-color)))
+(define pe penerase)
+
+(define turtle-base-angle (/ (* (acos (/ 1 3)) 180) 3.141592654))
+(define (show-turtle show-flag)
+  (let ((olderase penerase-flag)
+	(olddown pendown-flag))
+    (if show-flag (pendown) (penerase))
+    (internal-rt -90)
+    (internal-fd 5)
+    (internal-rt (- 180 turtle-base-angle))
+    (internal-fd 15)
+    (internal-rt (* 2 turtle-base-angle))
+    (internal-fd 15)
+    (internal-rt (- 180 turtle-base-angle))
+    (internal-fd 5)
+    (internal-rt 90)
+    (if olddown
+	(if olderase (penerase) (pendown))
+	(penup))))
+
+(if scm?
+    (eval '(define repeat (procedure->macro
+			   (lambda(x env)
+			     `(repeat-helper ,(cadr x) (lambda () . ,(cddr x)))))))
+    (eval '(define-macro (repeat . args)
+	     `(repeat-helper ,(car args) (lambda () . ,(cdr args))))))
+
+(define (repeat-helper num thunk)
+  (if (<= num 0)
+      'done
+      (begin (thunk) (repeat-helper (- num 1) thunk))))
+
+(if scm?
+    (eval '(define call/cc call-with-current-continuation)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/bst.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/bst.scm
new file mode 100644
index 0000000..5815eae
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/bst.scm
@@ -0,0 +1,28 @@
+(define (entry tree) (car tree))
+
+(define (left-branch tree) (cadr tree))
+
+(define (right-branch tree) (caddr tree))
+
+(define (make-tree entry left right)
+  (list entry left right))
+
+(define (element-of-set? x set)
+  (cond ((null? set) #f)
+	((= x (entry set)) #t)
+	((< x (entry set))
+	 (element-of-set? x (left-branch set)))
+	((> x (entry set))
+	 (element-of-set? x (right-branch set)))))
+
+(define (adjoin-set x set)
+  (cond ((null? set) (make-tree x '() '()))
+	((= x (entry set)) set)
+	((< x (entry set))
+	 (make-tree (entry set)
+		    (adjoin-set x (left-branch set))
+		    (right-branch set)))
+	((> x (entry set))
+	 (make-tree (entry set)
+		    (left-branch set)
+		    (adjoin-set x (right-branch set))))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/calc.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/calc.scm
new file mode 100644
index 0000000..7d667dd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/calc.scm
@@ -0,0 +1,29 @@
+;; Scheme calculator -- evaluate simple expressions
+
+; The read-eval-print loop:
+
+(define (calc)
+  (display "calc: ")
+  (flush)
+  (print (calc-eval (read)))
+  (calc))
+
+; Evaluate an expression:
+
+(define (calc-eval exp)
+  (cond ((number? exp) exp)
+	((list? exp) (calc-apply (car exp) (map calc-eval (cdr exp))))
+	(else (error "Calc: bad expression:" exp))))
+
+; Apply a function to arguments:
+
+(define (calc-apply fn args)
+  (cond ((eq? fn '+) (accumulate + 0 args))
+	((eq? fn '-) (cond ((null? args) (error "Calc: no args to -"))
+			   ((= (length args) 1) (- (car args)))
+			   (else (- (car args) (accumulate + 0 (cdr args))))))
+	((eq? fn '*) (accumulate * 1 args))
+	((eq? fn '/) (cond ((null? args) (error "Calc: no args to /"))
+			   ((= (length args) 1) (/ (car args)))
+			   (else (/ (car args) (accumulate * 1 (cdr args))))))
+	(else (error "Calc: bad operator:" fn))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter1.code b/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter1.code
new file mode 100644
index 0000000..438f49f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter1.code
@@ -0,0 +1,805 @@
+;;;;CODE FROM CHAPTER 1 OF STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;; Examples from the book are commented out with ;: so that they
+;;;  are easy to find and so that they will be omitted if you evaluate a
+;;;  chunk of the file (programs with intervening examples) in Scheme.
+
+;;; BEWARE: Although the whole file can be loaded into Scheme,
+;;;  don't expect the programs to work if you do so.  For example,
+;;;  the redefinition of + in exercise 1.9 wreaks havoc with the
+;;;  last version of square defined here.
+
+
+;;;SECTION 1.1.1
+
+;; interpreter examples
+
+;: 486
+
+;: (+ 137 349)
+;: (- 1000 334)
+;: (* 5 99)
+;: (/ 10 5)
+;: (+ 2.7 10)
+
+;: (+ 21 35 12 7)
+;: (* 25 4 12)
+
+;: (+ (* 3 5) (- 10 6))
+
+;: (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))
+
+;: (+ (* 3
+;:       (+ (* 2 4)
+;:          (+ 3 5)))
+;:    (+ (- 10 7)
+;:       6))
+
+
+;;;SECTION 1.1.2
+
+;: (define size 2)
+;: size
+;: (* 5 size)
+
+;: (define pi 3.14159)
+;: (define radius 10)
+;: (* pi (* radius radius))
+;: (define circumference (* 2 pi radius))
+;: circumference
+
+
+;;;SECTION 1.1.3
+
+;: (* (+ 2 (* 4 6))
+;:    (+ 3 5 7))
+
+
+;;;SECTION 1.1.4
+
+(define (square x) (* x x))
+
+;: (square 21)
+;: (square (+ 2 5))
+;: (square (square 3))
+
+(define (sum-of-squares x y)
+  (+ (square x) (square y)))
+
+;: (sum-of-squares 3 4)
+
+(define (f a)
+  (sum-of-squares (+ a 1) (* a 2)))
+
+;: (f 5)
+
+
+;;;SECTION 1.1.5
+
+;: (f 5)
+;: (sum-of-squares (+ 5 1) (* 5 2))
+;: (+ (square 6) (square 10))
+;: (+ (* 6 6) (* 10 10))
+;: (+ 36 100)
+
+;: (f 5)
+;: (sum-of-squares (+ 5 1) (* 5 2))
+;: (+    (square (+ 5 1))      (square (* 5 2))  )
+;: (+    (* (+ 5 1) (+ 5 1))   (* (* 5 2) (* 5 2)))
+;: (+         (* 6 6)             (* 10 10))
+;: (+           36                   100)
+;:                     136
+
+
+;;;SECTION 1.1.6
+
+(define (abs x)
+  (cond ((> x 0) x)
+        ((= x 0) 0)
+        ((< x 0) (- x))))
+
+(define (abs x)
+  (cond ((< x 0) (- x))
+        (else x)))
+
+(define (abs x)
+  (if (< x 0)
+      (- x)
+      x))
+
+;: (and (> x 5) (< x 10))
+
+(define (>= x y)
+  (or (> x y) (= x y)))
+
+(define (>= x y)
+  (not (< x y)))
+
+
+;;EXERCISE 1.1
+;: 10
+
+;: (+ 5 3 4)
+
+;: (- 9 1)
+
+;: (/ 6 2)
+
+;: (+ (* 2 4) (- 4 6))
+
+;: (define a 3)
+
+;: (define b (+ a 1))
+
+;: (+ a b (* a b))
+
+;: (= a b)
+
+;: (if (and (> b a) (< b (* a b)))
+;:     b
+;:     a)
+
+;: (cond ((= a 4) 6)
+;:       ((= b 4) (+ 6 7 a))
+;:       (else 25))
+
+;: (+ 2 (if (> b a) b a))
+
+;: (* (cond ((> a b) a)
+;: 	 ((< a b) b)
+;: 	 (else -1))
+;:    (+ a 1))
+
+;;EXERCISE 1.4
+(define (a-plus-abs-b a b)
+  ((if (> b 0) + -) a b))
+
+;;EXERCISE 1.5
+(define (p) (p))
+
+(define (test x y)
+  (if (= x 0)
+      0
+      y))
+
+;: (test 0 (p))
+
+
+;;;SECTION 1.1.7
+
+(define (sqrt-iter guess x)
+  (if (good-enough? guess x)
+      guess
+      (sqrt-iter (improve guess x)
+                 x)))
+
+(define (improve guess x)
+  (average guess (/ x guess)))
+
+(define (average x y)
+  (/ (+ x y) 2))
+
+(define (good-enough? guess x)
+  (< (abs (- (square guess) x)) 0.001))
+
+(define (sqrt x)
+  (sqrt-iter 1.0 x))
+
+
+;: (sqrt 9)
+;: (sqrt (+ 100 37))
+;: (sqrt (+ (sqrt 2) (sqrt 3)))
+;: (square (sqrt 1000))
+
+
+;;EXERCISE 1.6
+(define (new-if predicate then-clause else-clause)
+  (cond (predicate then-clause)
+        (else else-clause)))
+
+;: (new-if (= 2 3) 0 5)
+
+;: (new-if (= 1 1) 0 5)
+
+(define (sqrt-iter guess x)
+  (new-if (good-enough? guess x)
+          guess
+          (sqrt-iter (improve guess x)
+                     x)))
+
+
+;;;SECTION 1.1.8
+
+(define (square x) (* x x))
+
+(define (square x) 
+  (exp (double (log x))))
+
+(define (double x) (+ x x))
+
+
+;; As in 1.1.7
+(define (sqrt x)
+  (sqrt-iter 1.0 x))
+
+(define (sqrt-iter guess x)
+  (if (good-enough? guess x)
+      guess
+      (sqrt-iter (improve guess x) x)))
+
+(define (good-enough? guess x)
+  (< (abs (- (square guess) x)) 0.001))
+
+(define (improve guess x)
+  (average guess (/ x guess)))
+
+
+;; Block-structured
+(define (sqrt x)
+  (define (good-enough? guess x)
+    (< (abs (- (square guess) x)) 0.001))
+  (define (improve guess x)
+    (average guess (/ x guess)))
+  (define (sqrt-iter guess x)
+    (if (good-enough? guess x)
+        guess
+        (sqrt-iter (improve guess x) x)))
+  (sqrt-iter 1.0 x))
+
+;; Taking advantage of lexical scoping
+(define (sqrt x)
+  (define (good-enough? guess)
+    (< (abs (- (square guess) x)) 0.001))
+  (define (improve guess)
+    (average guess (/ x guess)))
+  (define (sqrt-iter guess)
+    (if (good-enough? guess)
+        guess
+        (sqrt-iter (improve guess))))
+  (sqrt-iter 1.0))
+
+;;;SECTION 1.2.1
+
+;; Recursive
+
+(define (factorial n)
+  (if (= n 1)
+      1
+      (* n (factorial (- n 1)))))
+
+
+;; Iterative
+
+(define (factorial n)
+  (fact-iter 1 1 n))
+
+(define (fact-iter product counter max-count)
+  (if (> counter max-count)
+      product
+      (fact-iter (* counter product)
+                 (+ counter 1)
+                 max-count)))
+
+;; Iterative, block-structured (from footnote)
+(define (factorial n)
+  (define (iter product counter)
+    (if (> counter n)
+        product
+        (iter (* counter product)
+              (+ counter 1))))
+  (iter 1 1))
+
+
+;;EXERCISE 1.9
+(define (+ a b)
+  (if (= a 0)
+      b
+      (inc (+ (dec a) b))))
+
+(define (+ a b)
+  (if (= a 0)
+      b
+      (+ (dec a) (inc b))))
+
+;;EXERCISE 1.10
+(define (A x y)
+  (cond ((= y 0) 0)
+        ((= x 0) (* 2 y))
+        ((= y 1) 2)
+        (else (A (- x 1)
+                 (A x (- y 1))))))
+
+;: (A 1 10)
+
+;: (A 2 4)
+
+;: (A 3 3)
+
+(define (f n) (A 0 n))
+
+(define (g n) (A 1 n))
+
+(define (h n) (A 2 n))
+
+(define (k n) (* 5 n n))
+
+
+;;;SECTION 1.2.2
+
+;; Recursive
+
+(define (fib n)
+  (cond ((= n 0) 0)
+        ((= n 1) 1)
+        (else (+ (fib (- n 1))
+                 (fib (- n 2))))))
+
+;; Iterative
+
+(define (fib n)
+  (fib-iter 1 0 n))
+
+(define (fib-iter a b count)
+  (if (= count 0)
+      b
+      (fib-iter (+ a b) a (- count 1))))
+
+
+;; Counting change
+
+(define (count-change amount)
+  (cc amount 5))
+
+(define (cc amount kinds-of-coins)
+  (cond ((= amount 0) 1)
+        ((or (< amount 0) (= kinds-of-coins 0)) 0)
+        (else (+ (cc amount
+                     (- kinds-of-coins 1))
+                 (cc (- amount
+                        (first-denomination kinds-of-coins))
+                     kinds-of-coins)))))
+
+(define (first-denomination kinds-of-coins)
+  (cond ((= kinds-of-coins 1) 1)
+        ((= kinds-of-coins 2) 5)
+        ((= kinds-of-coins 3) 10)
+        ((= kinds-of-coins 4) 25)
+        ((= kinds-of-coins 5) 50)))
+
+;: (count-change 100)
+
+
+;;;SECTION 1.2.3
+
+;;EXERCISE 1.15
+(define (cube x) (* x x x))
+
+(define (p x) (- (* 3 x) (* 4 (cube x))))
+
+(define (sine angle)
+   (if (not (> (abs angle) 0.1))
+       angle
+       (p (sine (/ angle 3.0)))))
+
+
+;;;SECTION 1.2.4
+
+;; Linear recursion
+(define (expt b n)
+  (if (= n 0)
+      1
+      (* b (expt b (- n 1)))))
+
+
+;; Linear iteration
+(define (expt b n)
+  (expt-iter b n 1))
+
+(define (expt-iter b counter product)
+  (if (= counter 0)
+      product
+      (expt-iter b
+                (- counter 1)
+                (* b product)))) 
+
+;; Logarithmic iteration
+(define (fast-expt b n)
+  (cond ((= n 0) 1)
+        ((even? n) (square (fast-expt b (/ n 2))))
+        (else (* b (fast-expt b (- n 1))))))
+
+(define (even? n)
+  (= (remainder n 2) 0))
+
+
+;;EXERCISE 1.17
+(define (* a b)
+  (if (= b 0)
+      0
+      (+ a (* a (- b 1)))))
+
+;;EXERCISE 1.19
+(define (fib n)
+  (fib-iter 1 0 0 1 n))
+
+(define (fib-iter a b p q count)
+  (cond ((= count 0) b)
+        ((even? count)
+         (fib-iter a
+                   b
+                   ;;?? compute p
+                   ;;?? compute q
+                   (/ count 2)))
+        (else (fib-iter (+ (* b q) (* a q) (* a p))
+                        (+ (* b p) (* a q))
+                        p
+                        q
+                        (- count 1)))))
+
+
+;;;SECTION 1.2.5
+
+(define (gcd a b)
+  (if (= b 0)
+      a
+      (gcd b (remainder a b))))
+
+
+;;;SECTION 1.2.6
+
+;; prime?
+
+(define (smallest-divisor n)
+  (find-divisor n 2))
+
+(define (find-divisor n test-divisor)
+  (cond ((> (square test-divisor) n) n)
+        ((divides? test-divisor n) test-divisor)
+        (else (find-divisor n (+ test-divisor 1)))))
+
+(define (divides? a b)
+  (= (remainder b a) 0))
+
+(define (prime? n)
+  (= n (smallest-divisor n)))
+
+
+;; fast-prime?
+
+(define (expmod base exp m)
+  (cond ((= exp 0) 1)
+        ((even? exp)
+         (remainder (square (expmod base (/ exp 2) m))
+                    m))
+        (else
+         (remainder (* base (expmod base (- exp 1) m))
+                    m))))        
+
+(define (fermat-test n)
+  (define (try-it a)
+    (= (expmod a n n) a))
+  (try-it (+ 1 (random (- n 1)))))
+
+(define (fast-prime? n times)
+  (cond ((= times 0) true)
+        ((fermat-test n) (fast-prime? n (- times 1)))
+        (else false)))
+
+
+;;EXERCISE 1.22
+(define (timed-prime-test n)
+  (newline)
+  (display n)
+  (start-prime-test n (runtime)))
+
+(define (start-prime-test n start-time)
+  (if (prime? n)
+      (report-prime (- (runtime) start-time))))
+
+(define (report-prime elapsed-time)
+  (display " *** ")
+  (display elapsed-time))
+
+;;EXERCISE 1.25
+(define (expmod base exp m)
+  (remainder (fast-expt base exp) m))
+
+;;EXERCISE 1.26
+(define (expmod base exp m)
+  (cond ((= exp 0) 1)
+        ((even? exp)
+         (remainder (* (expmod base (/ exp 2) m)
+                       (expmod base (/ exp 2) m))
+                    m))
+        (else
+         (remainder (* base (expmod base (- exp 1) m))
+                    m))))
+
+;;;SECTION 1.3
+
+(define (cube x) (* x x x))
+
+;;;SECTION 1.3.1
+
+(define (sum-integers a b)
+  (if (> a b)
+      0
+      (+ a (sum-integers (+ a 1) b))))
+
+(define (sum-cubes a b)
+  (if (> a b)
+      0
+      (+ (cube a) (sum-cubes (+ a 1) b))))
+
+(define (pi-sum a b)
+  (if (> a b)
+      0
+      (+ (/ 1.0 (* a (+ a 2))) (pi-sum (+ a 4) b))))
+
+(define (sum term a next b)
+  (if (> a b)
+      0
+      (+ (term a)
+         (sum term (next a) next b))))
+
+
+;; Using sum
+
+(define (inc n) (+ n 1))
+
+(define (sum-cubes a b)
+  (sum cube a inc b))
+
+;: (sum-cubes 1 10)
+
+
+(define (identity x) x)
+
+(define (sum-integers a b)
+  (sum identity a inc b))
+
+;: (sum-integers 1 10)
+
+
+(define (pi-sum a b)
+  (define (pi-term x)
+    (/ 1.0 (* x (+ x 2))))
+  (define (pi-next x)
+    (+ x 4))
+  (sum pi-term a pi-next b))
+
+;: (* 8 (pi-sum 1 1000))
+
+
+(define (integral f a b dx)
+  (define (add-dx x) (+ x dx))
+  (* (sum f (+ a (/ dx 2)) add-dx b)
+     dx))
+
+;: (integral cube 0 1 0.01)
+
+;: (integral cube 0 1 0.001)
+
+
+;;EXERCISE 1.32
+;: (accumulate combiner null-value term a next b)
+
+;;;SECTION 1.3.2
+
+(define (pi-sum a b)
+  (sum (lambda (x) (/ 1.0 (* x (+ x 2))))
+       a
+       (lambda (x) (+ x 4))
+       b))
+
+(define (integral f a b dx)
+  (* (sum f
+          (+ a (/ dx 2.0))
+          (lambda (x) (+ x dx))
+          b)
+     dx))
+
+(define (plus4 x) (+ x 4))
+
+(define plus4 (lambda (x) (+ x 4)))
+
+;: ((lambda (x y z) (+ x y (square z))) 1 2 3)
+
+
+;; Using let
+
+(define (f x y)
+  (define (f-helper a b)
+    (+ (* x (square a))
+       (* y b)
+       (* a b)))
+  (f-helper (+ 1 (* x y)) 
+            (- 1 y)))
+
+(define (f x y)
+  ((lambda (a b)
+     (+ (* x (square a))
+        (* y b)
+        (* a b)))
+   (+ 1 (* x y))
+   (- 1 y)))
+
+(define (f x y)
+  (let ((a (+ 1 (* x y)))
+        (b (- 1 y)))
+    (+ (* x (square a))
+       (* y b)
+       (* a b))))
+
+;: (+ (let ((x 3))
+;:      (+ x (* x 10)))
+;:    x)
+
+;: (let ((x 3)
+;:       (y (+ x 2)))
+;:   (* x y))
+
+(define (f x y)
+  (define a (+ 1 (* x y)))
+  (define b (- 1 y))
+  (+ (* x (square a))
+     (* y b)
+     (* a b)))
+
+
+;;EXERCISE 1.34
+(define (f g)
+  (g 2))
+
+;: (f square)
+
+;: (f (lambda (z) (* z (+ z 1))))
+
+
+;;;SECTION 1.3.3
+
+;; Half-interval method
+
+(define (search f neg-point pos-point)
+  (let ((midpoint (average neg-point pos-point)))
+    (if (close-enough? neg-point pos-point)
+        midpoint
+        (let ((test-value (f midpoint)))
+          (cond ((positive? test-value)
+                 (search f neg-point midpoint))
+                ((negative? test-value)
+                 (search f midpoint pos-point))
+                (else midpoint))))))
+
+(define (close-enough? x y)
+  (< (abs (- x y)) 0.001))
+
+(define (half-interval-method f a b)
+  (let ((a-value (f a))
+        (b-value (f b)))
+    (cond ((and (negative? a-value) (positive? b-value))
+           (search f a b))
+          ((and (negative? b-value) (positive? a-value))
+           (search f b a))
+          (else
+           (error "Values are not of opposite sign" a b)))))
+
+
+;: (half-interval-method sin 2.0 4.0)
+
+;: (half-interval-method (lambda (x) (- (* x x x) (* 2 x) 3))
+;:                       1.0
+;:                       2.0)
+
+
+;; Fixed points
+
+(define tolerance 0.00001)
+
+(define (fixed-point f first-guess)
+  (define (close-enough? v1 v2)
+    (< (abs (- v1 v2)) tolerance))
+  (define (try guess)
+    (let ((next (f guess)))
+      (if (close-enough? guess next)
+          next
+          (try next))))
+  (try first-guess))
+
+
+;: (fixed-point cos 1.0)
+
+;: (fixed-point (lambda (y) (+ (sin y) (cos y)))
+;:              1.0)
+
+
+(define (sqrt x)
+  (fixed-point (lambda (y) (/ x y))
+               1.0))
+
+(define (sqrt x)
+  (fixed-point (lambda (y) (average y (/ x y)))
+               1.0))
+
+
+;;EXERCISE 1.37
+;: (cont-frac (lambda (i) 1.0)
+;:            (lambda (i) 1.0)
+;:            k)
+
+
+;;;SECTION 1.3.4
+
+(define (average-damp f)
+  (lambda (x) (average x (f x))))
+
+;: ((average-damp square) 10)
+
+(define (sqrt x)
+  (fixed-point (average-damp (lambda (y) (/ x y)))
+               1.0))
+
+(define (cube-root x)
+  (fixed-point (average-damp (lambda (y) (/ x (square y))))
+               1.0))
+
+
+;; Newton's method
+
+(define (deriv g)
+  (lambda (x)
+    (/ (- (g (+ x dx)) (g x))
+       dx)))
+(define dx 0.00001)
+
+
+(define (cube x) (* x x x))
+
+;: ((deriv cube) 5)
+
+(define (newton-transform g)
+  (lambda (x)
+    (- x (/ (g x) ((deriv g) x)))))
+
+(define (newtons-method g guess)
+  (fixed-point (newton-transform g) guess))
+
+
+(define (sqrt x)
+  (newtons-method (lambda (y) (- (square y) x))
+                  1.0))
+
+
+;; Fixed point of transformed function
+
+(define (fixed-point-of-transform g transform guess)
+  (fixed-point (transform g) guess))
+
+(define (sqrt x)
+  (fixed-point-of-transform (lambda (y) (/ x y))
+                            average-damp
+                            1.0))
+
+(define (sqrt x)
+  (fixed-point-of-transform (lambda (y) (- (square y) x))
+                            newton-transform
+                            1.0))
+
+
+;;EXERCISE 1.40
+;: (newtons-method (cubic a b c) 1)
+
+
+;;EXERCISE 1.41
+;: (((double (double double)) inc) 5)
+
+
+;;EXERCISE 1.42
+;: ((compose square inc) 6)
+
+
+;;EXERCISE 1.43
+;: ((repeated square 2) 5)
+
+				   
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter2.code b/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter2.code
new file mode 100644
index 0000000..78dcccd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter2.code
@@ -0,0 +1,1966 @@
+; -----***CH2.SCM***
+;;;;CODE FROM CHAPTER 2 OF STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;; Examples from the book are commented out with ;: so that they
+;;;  are easy to find and so that they will be omitted if you evaluate a
+;;;  chunk of the file (programs with intervening examples) in Scheme.
+
+;;; BEWARE: Although the whole file can be loaded into Scheme,
+;;;  you won't want to do so.  For example, you generally do
+;;;  not want to use the procedural representation of pairs
+;;;  (cons, car, cdr as defined in section 2.1.3) instead of
+;;;  Scheme's primitive pairs.
+
+;;; Some things require code from other chapters -- see ch2support.scm
+
+
+(define (linear-combination a b x y)
+  (+ (* a x) (* b y)))
+
+(define (linear-combination a b x y)
+  (add (mul a x) (mul b y))) 
+
+
+;;;SECTION 2.1.1
+
+(define (add-rat x y)
+  (make-rat (+ (* (numer x) (denom y))
+               (* (numer y) (denom x)))
+            (* (denom x) (denom y))))
+
+(define (sub-rat x y)
+  (make-rat (- (* (numer x) (denom y))
+               (* (numer y) (denom x)))
+            (* (denom x) (denom y))))
+
+(define (mul-rat x y)
+  (make-rat (* (numer x) (numer y))
+            (* (denom x) (denom y))))
+
+(define (div-rat x y)
+  (make-rat (* (numer x) (denom y))
+            (* (denom x) (numer y))))
+
+(define (equal-rat? x y)
+  (= (* (numer x) (denom y))
+     (* (numer y) (denom x))))
+
+;: (define x (cons 1 2))
+;: 
+;: (car x)
+;: (cdr x)
+
+;: (define x (cons 1 2))
+;: (define y (cons 3 4))
+;: (define z (cons x y))
+;: (car (car z))
+;: (car (cdr z))
+
+(define (make-rat n d) (cons n d))
+
+(define (numer x) (car x))
+
+(define (denom x) (cdr x))
+
+;;footnote -- alternative definitions
+(define make-rat cons)
+(define numer car)
+(define denom cdr)
+
+(define (print-rat x)
+  (newline)
+  (display (numer x))
+  (display "/")
+  (display (denom x)))
+
+
+;: (define one-half (make-rat 1 2))
+;: 
+;: (print-rat one-half)
+;: 
+;: (define one-third (make-rat 1 3))
+;: 
+;: (print-rat (add-rat one-half one-third))
+;: (print-rat (mul-rat one-half one-third))
+;: (print-rat (add-rat one-third one-third))
+
+
+;; reducing to lowest terms in constructor
+;; (uses gcd from 1.2.5 -- see ch2support.scm)
+
+(define (make-rat n d)
+  (let ((g (gcd n d)))
+    (cons (/ n g) (/ d g))))
+
+
+;: (print-rat (add-rat one-third one-third))
+
+
+;;;SECTION 2.1.2
+
+;; reducing to lowest terms in selectors
+;; (uses gcd from 1.2.5 -- see ch2support.scm)
+
+(define (make-rat n d)
+  (cons n d))
+
+(define (numer x)
+  (let ((g (gcd (car x) (cdr x))))
+    (/ (car x) g)))
+
+(define (denom x)
+  (let ((g (gcd (car x) (cdr x))))
+    (/ (cdr x) g)))
+
+
+;; EXERCISE 2.2
+(define (print-point p)
+  (newline)
+  (display "(")
+  (display (x-point p))
+  (display ",")
+  (display (y-point p))
+  (display ")"))
+
+
+;;;SECTION 2.1.3
+(define (cons x y)
+  (define (dispatch m)
+    (cond ((= m 0) x)
+          ((= m 1) y)
+          (else (error "Argument not 0 or 1 -- CONS" m))))
+  dispatch)
+
+(define (car z) (z 0))
+
+(define (cdr z) (z 1))
+
+
+;; EXERCISE 2.4
+
+(define (cons x y)
+  (lambda (m) (m x y)))
+
+(define (car z)
+  (z (lambda (p q) p)))
+
+
+;; EXERCISE 2.6
+(define zero (lambda (f) (lambda (x) x)))
+
+(define (add-1 n)
+  (lambda (f) (lambda (x) (f ((n f) x)))))
+
+
+;;;SECTION 2.1.4
+
+(define (add-interval x y)
+  (make-interval (+ (lower-bound x) (lower-bound y))
+                 (+ (upper-bound x) (upper-bound y))))
+
+(define (mul-interval x y)
+  (let ((p1 (* (lower-bound x) (lower-bound y)))
+        (p2 (* (lower-bound x) (upper-bound y)))
+        (p3 (* (upper-bound x) (lower-bound y)))
+        (p4 (* (upper-bound x) (upper-bound y))))
+    (make-interval (min p1 p2 p3 p4)
+                   (max p1 p2 p3 p4))))
+
+(define (div-interval x y)
+  (mul-interval x 
+                (make-interval (/ 1.0 (upper-bound y))
+                               (/ 1.0 (lower-bound y)))))
+
+;; EXERCISE 2.7
+
+(define (make-interval a b) (cons a b))
+
+
+;;;SECTION 2.1.4 again
+
+(define (make-center-width c w)
+  (make-interval (- c w) (+ c w)))
+
+(define (center i)
+  (/ (+ (lower-bound i) (upper-bound i)) 2))
+
+(define (width i)
+  (/ (- (upper-bound i) (lower-bound i)) 2))
+
+;; parallel resistors
+
+(define (par1 r1 r2)
+  (div-interval (mul-interval r1 r2)
+                (add-interval r1 r2)))
+
+(define (par2 r1 r2)
+  (let ((one (make-interval 1 1))) 
+    (div-interval one
+                  (add-interval (div-interval one r1)
+                                (div-interval one r2)))))
+
+;;;SECTION 2.2.1
+
+;: (cons 1
+;:       (cons 2
+;:             (cons 3
+;:                   (cons 4 nil))))
+
+
+;: (define one-through-four (list 1 2 3 4))
+;: 
+;: one-through-four
+;: (car one-through-four)
+;: (cdr one-through-four)
+;: (car (cdr one-through-four))
+;: (cons 10 one-through-four)
+
+(define (list-ref items n)
+  (if (= n 0)
+      (car items)
+      (list-ref (cdr items) (- n 1))))
+
+;: (define squares (list 1 4 9 16 25))
+
+;: (list-ref squares 3)
+
+(define (length items)
+  (if (null? items)
+      0
+      (+ 1 (length (cdr items)))))
+
+;: (define odds (list 1 3 5 7))
+
+;: (length odds)
+
+(define (length items)
+  (define (length-iter a count)
+    (if (null? a)
+        count
+        (length-iter (cdr a) (+ 1 count))))
+  (length-iter items 0))
+
+;: (append squares odds)
+;: (append odds squares)
+
+
+(define (append list1 list2)
+  (if (null? list1)
+      list2
+      (cons (car list1) (append (cdr list1) list2))))
+
+
+;; EXERCISE 2.17
+;: (last-pair (list 23 72 149 34))
+
+
+;; EXERCISE 2.18
+;: (reverse (list 1 4 9 16 25))
+
+;; EXERCISE 2.19
+(define us-coins (list 50 25 10 5 1))
+
+(define uk-coins (list 100 50 20 10 5 2 1 0.5))
+
+;: (cc 100 us-coins)
+
+(define (cc amount coin-values)
+  (cond ((= amount 0) 1)
+        ((or (< amount 0) (no-more? coin-values)) 0)
+        (else
+         (+ (cc amount
+                (except-first-denomination coin-values))
+            (cc (- amount
+                   (first-denomination coin-values))
+                coin-values)))))
+
+;; EXERCISE 2.20
+;: (same-parity 1 2 3 4 5 6 7)
+;: (same-parity 2 3 4 5 6 7)
+
+
+;; Mapping over lists
+
+(define (scale-list items factor)
+  (if (null? items)
+      nil
+      (cons (* (car items) factor)
+            (scale-list (cdr items) factor))))
+
+;: (scale-list (list 1 2 3 4 5) 10)
+
+;: (map + (list 1 2 3) (list 40 50 60) (list 700 800 900))
+
+;: (map (lambda (x y) (+ x (* 2 y)))
+;:      (list 1 2 3)
+;:      (list 4 5 6))
+
+(define (map proc items)
+  (if (null? items)
+      nil
+      (cons (proc (car items))
+            (map proc (cdr items)))))
+
+;: (map abs (list -10 2.5 -11.6 17))
+
+;: (map (lambda (x) (* x x))
+;:      (list 1 2 3 4))
+
+(define (scale-list items factor)
+  (map (lambda (x) (* x factor))
+       items))
+
+
+;; EXERCISE 2.21
+;: (square-list (list 1 2 3 4))
+
+
+;; EXERCISE 2.22
+(define (square-list items)
+  (define (iter things answer)
+    (if (null? things)
+        answer
+        (iter (cdr things) 
+              (cons (square (car things))
+                    answer))))
+  (iter items nil))
+
+(define (square-list items)
+  (define (iter things answer)
+    (if (null? things)
+        answer
+        (iter (cdr things)
+              (cons answer
+                    (square (car things))))))
+  (iter items nil))
+
+
+;; EXERCISE 2.23
+
+;: (for-each (lambda (x) (newline) (display x))
+;:           (list 57 321 88))
+
+
+
+;;;SECTION 2.2.2
+;: (cons (list 1 2) (list 3 4))
+;: 
+;: (define x (cons (list 1 2) (list 3 4)))
+;: (length x)
+;: (count-leaves x)
+;: 
+;: (list x x)
+;: (length (list x x))
+;: (count-leaves (list x x))
+
+(define (count-leaves x)
+  (cond ((null? x) 0)
+        ((not (pair? x)) 1)
+        (else (+ (count-leaves (car x))
+                 (count-leaves (cdr x))))))
+
+;; EXERCISE 2.24
+;: (list 1 (list 2 (list 3 4)))
+
+;; EXERCISE 2.25
+;: (1 3 (5 7) 9)
+;: ((7))
+;: (1 (2 (3 (4 (5 (6 7))))))
+
+;; EXERCISE 2.26
+;: (define x (list 1 2 3))
+;: (define y (list 4 5 6))
+;: 
+;: (append x y)
+;: (cons x y)
+;: (list x y)
+
+;; EXERCISE 2.27
+
+;: (define x (list (list 1 2) (list 3 4)))
+;: x
+;: (reverse x)
+;: (deep-reverse x)
+
+
+;; EXERCISE 2.28
+
+;: (define x (list (list 1 2) (list 3 4)))
+;: (fringe x)
+;: (fringe (list x x))
+
+
+;; EXERCISE 2.29
+(define (make-mobile left right)
+  (list left right))
+
+(define (make-branch length structure)
+  (list length structure))
+
+
+;; part d
+(define (make-mobile left right)
+  (cons left right))
+
+(define (make-branch length structure)
+  (cons length structure))
+
+
+;; Mapping over trees
+
+(define (scale-tree tree factor)
+  (cond ((null? tree) nil)
+        ((not (pair? tree)) (* tree factor))
+        (else (cons (scale-tree (car tree) factor)
+                    (scale-tree (cdr tree) factor)))))
+
+
+;: (scale-tree (list 1 (list 2 (list 3 4) 5) (list 6 7))
+;:             10)
+
+
+(define (scale-tree tree factor)
+  (map (lambda (sub-tree)
+         (if (pair? sub-tree)
+             (scale-tree sub-tree factor)
+             (* sub-tree factor)))
+       tree))
+
+
+;; EXERCISE 2.30
+;: (square-tree
+;:  (list 1
+;:        (list 2 (list 3 4) 5)
+;:        (list 6 7)))
+
+
+;; EXERCISE 2.31
+(define (square-tree tree) (tree-map square tree))
+
+
+;; EXERCISE 2.32
+(define (subsets s)
+  (if (null? s)
+      (list nil)
+      (let ((rest (subsets (cdr s))))
+        (append rest (map ??FILL-THIS-IN?? rest)))))
+
+
+;;;SECTION 2.2.3
+
+(define (sum-odd-squares tree)
+  (cond ((null? tree) 0)
+        ((not (pair? tree))
+         (if (odd? tree) (square tree) 0))
+        (else (+ (sum-odd-squares (car tree))
+                 (sum-odd-squares (cdr tree))))))
+
+(define (even-fibs n)
+  (define (next k)
+    (if (> k n)
+        nil
+        (let ((f (fib k)))
+          (if (even? f)
+              (cons f (next (+ k 1)))
+              (next (+ k 1))))))
+  (next 0))
+
+
+;; Sequence operations
+
+;: (map square (list 1 2 3 4 5))
+
+(define (filter predicate sequence)
+  (cond ((null? sequence) nil)
+        ((predicate (car sequence))
+         (cons (car sequence)
+               (filter predicate (cdr sequence))))
+        (else (filter predicate (cdr sequence)))))
+
+;: (filter odd? (list 1 2 3 4 5))
+
+(define (accumulate op initial sequence)
+  (if (null? sequence)
+      initial
+      (op (car sequence)
+          (accumulate op initial (cdr sequence)))))
+
+;: (accumulate + 0 (list 1 2 3 4 5))
+;: (accumulate * 1 (list 1 2 3 4 5))
+;: (accumulate cons nil (list 1 2 3 4 5))
+
+(define (enumerate-interval low high)
+  (if (> low high)
+      nil
+      (cons low (enumerate-interval (+ low 1) high))))
+
+;: (enumerate-interval 2 7)
+
+(define (enumerate-tree tree)
+  (cond ((null? tree) nil)
+        ((not (pair? tree)) (list tree))
+        (else (append (enumerate-tree (car tree))
+                      (enumerate-tree (cdr tree))))))
+
+;: (enumerate-tree (list 1 (list 2 (list 3 4)) 5))
+
+(define (sum-odd-squares tree)
+  (accumulate +
+              0
+              (map square
+                   (filter odd?
+                           (enumerate-tree tree)))))
+
+(define (even-fibs n)
+  (accumulate cons
+              nil
+              (filter even?
+                      (map fib
+                           (enumerate-interval 0 n)))))
+
+(define (list-fib-squares n)
+  (accumulate cons
+              nil
+              (map square
+                   (map fib
+                        (enumerate-interval 0 n)))))
+
+;: (list-fib-squares 10)
+
+
+(define (product-of-squares-of-odd-elements sequence)
+  (accumulate *
+              1
+              (map square
+                   (filter odd? sequence))))
+
+;: (product-of-squares-of-odd-elements (list 1 2 3 4 5))
+
+(define (salary-of-highest-paid-programmer records)
+  (accumulate max
+              0
+              (map salary
+                   (filter programmer? records))))
+
+
+;; EXERCISE 2.34
+(define (horner-eval x coefficient-sequence)
+  (accumulate (lambda (this-coeff higher-terms) ??FILL-THIS-IN??)
+              0
+              coefficient-sequence))
+
+;: (horner-eval 2 (list 1 3 0 5 0 1))
+
+;; EXERCISE 2.36
+(define (accumulate-n op init seqs)
+  (if (null? (car seqs))
+      nil
+      (cons (accumulate op init ??FILL-THIS-IN??)
+            (accumulate-n op init ??FILL-THIS-IN??))))
+
+;: (accumulate-n + 0 s)
+
+;; EXERCISE 2.37
+
+(define (dot-product v w)
+  (accumulate + 0 (map * v w)))
+
+
+;; EXERCISE 2.38
+
+(define (fold-left op initial sequence)
+  (define (iter result rest)
+    (if (null? rest)
+        result
+        (iter (op result (car rest))
+              (cdr rest))))
+  (iter initial sequence))
+
+;: (fold-right / 1 (list 1 2 3))
+;: (fold-left / 1 (list 1 2 3))
+;: (fold-right list nil (list 1 2 3))
+;: (fold-left list nil (list 1 2 3))
+
+
+;;Nested mappings
+
+;: (accumulate append
+;:             nil
+;:             (map (lambda (i)
+;:                    (map (lambda (j) (list i j))
+;:                         (enumerate-interval 1 (- i 1))))
+;:                  (enumerate-interval 1 n)))
+
+(define (flatmap proc seq)
+  (accumulate append nil (map proc seq)))
+
+(define (prime-sum? pair)
+  (prime? (+ (car pair) (cadr pair))))
+
+(define (make-pair-sum pair)
+  (list (car pair) (cadr pair) (+ (car pair) (cadr pair))))
+
+(define (prime-sum-pairs n)
+  (map make-pair-sum
+       (filter prime-sum?
+               (flatmap
+                (lambda (i)
+                  (map (lambda (j) (list i j))
+                       (enumerate-interval 1 (- i 1))))
+                (enumerate-interval 1 n)))))
+
+
+(define (permutations s)
+  (if (null? s)                         ; empty set?
+      (list nil)                        ; sequence containing empty set
+      (flatmap (lambda (x)
+                 (map (lambda (p) (cons x p))
+                      (permutations (remove x s))))
+               s)))
+
+(define (remove item sequence)
+  (filter (lambda (x) (not (= x item)))
+          sequence))
+
+
+;; EXERCISE 2.42
+(define (queens board-size)
+  (define (queen-cols k)
+    (if (= k 0)
+        (list empty-board)
+        (filter
+         (lambda (positions) (safe? k positions))
+         (flatmap
+          (lambda (rest-of-queens)
+            (map (lambda (new-row)
+                   (adjoin-position new-row k rest-of-queens))
+                 (enumerate-interval 1 board-size)))
+          (queen-cols (- k 1))))))
+  (queen-cols board-size))
+
+;; EXERCISE 2.43
+;; Louis's version of queens
+(define (queens board-size)
+  (define (queen-cols k)  
+    (if (= k 0)
+        (list empty-board)
+        (filter
+         (lambda (positions) (safe? k positions))
+	 ;; next expression changed
+         (flatmap
+	  (lambda (new-row)
+	    (map (lambda (rest-of-queens)
+		   (adjoin-position new-row k rest-of-queens))
+		 (queen-cols (- k 1))))
+	  (enumerate-interval 1 board-size)))))
+  (queen-cols board-size))
+
+;;;SECTION 2.2.4
+
+;: (define wave2 (beside wave (flip-vert wave)))
+;: (define wave4 (below wave2 wave2))
+
+
+(define (flipped-pairs painter)
+  (let ((painter2 (beside painter (flip-vert painter))))
+    (below painter2 painter2)))
+
+
+;: (define wave4 (flipped-pairs wave))
+
+
+(define (right-split painter n)
+  (if (= n 0)
+      painter
+      (let ((smaller (right-split painter (- n 1))))
+        (beside painter (below smaller smaller)))))
+
+
+(define (corner-split painter n)
+  (if (= n 0)
+      painter
+      (let ((up (up-split painter (- n 1)))
+            (right (right-split painter (- n 1))))
+        (let ((top-left (beside up up))
+              (bottom-right (below right right))
+              (corner (corner-split painter (- n 1))))
+          (beside (below painter top-left)
+                  (below bottom-right corner))))))
+
+
+(define (square-limit painter n)
+  (let ((quarter (corner-split painter n)))
+    (let ((half (beside (flip-horiz quarter) quarter)))
+      (below (flip-vert half) half))))
+
+
+;; Higher-order operations
+
+(define (square-of-four tl tr bl br)
+  (lambda (painter)
+    (let ((top (beside (tl painter) (tr painter)))
+          (bottom (beside (bl painter) (br painter))))
+      (below bottom top))))
+
+
+(define (flipped-pairs painter)
+  (let ((combine4 (square-of-four identity flip-vert
+                                  identity flip-vert)))
+    (combine4 painter)))
+
+; footnote
+;: (define flipped-pairs
+;:   (square-of-four identity flip-vert identity flip-vert))
+
+
+(define (square-limit painter n)
+  (let ((combine4 (square-of-four flip-horiz identity
+                                  rotate180 flip-vert)))
+    (combine4 (corner-split painter n))))
+
+
+;; EXERCISE 2.45
+
+;: (define right-split (split beside below))
+;: (define up-split (split below beside))
+
+
+;; Frames
+
+(define (frame-coord-map frame)
+  (lambda (v)
+    (add-vect
+     (origin-frame frame)
+     (add-vect (scale-vect (xcor-vect v)
+                           (edge1-frame frame))
+               (scale-vect (ycor-vect v)
+                           (edge2-frame frame))))))
+
+
+;: ((frame-coord-map a-frame) (make-vect 0 0))
+
+;: (origin-frame a-frame)
+
+
+;; EXERCISE 2.47
+
+(define (make-frame origin edge1 edge2)
+  (list origin edge1 edge2))
+
+(define (make-frame origin edge1 edge2)
+  (cons origin (cons edge1 edge2)))
+
+
+;; Painters
+
+(define (segments->painter segment-list)
+  (lambda (frame)
+    (for-each
+     (lambda (segment)
+       (draw-line
+        ((frame-coord-map frame) (start-segment segment))
+        ((frame-coord-map frame) (end-segment segment))))
+     segment-list)))
+
+
+(define (transform-painter painter origin corner1 corner2)
+  (lambda (frame)
+    (let ((m (frame-coord-map frame)))
+      (let ((new-origin (m origin)))
+        (painter
+         (make-frame new-origin
+                     (sub-vect (m corner1) new-origin)
+                     (sub-vect (m corner2) new-origin)))))))
+
+
+(define (flip-vert painter)
+  (transform-painter painter
+                     (make-vect 0.0 1.0)    ; new origin
+                     (make-vect 1.0 1.0)    ; new end of edge1
+                     (make-vect 0.0 0.0)))  ; new end of edge2
+
+
+(define (shrink-to-upper-right painter)
+  (transform-painter painter
+                     (make-vect 0.5 0.5)
+                     (make-vect 1.0 0.5)
+                     (make-vect 0.5 1.0)))
+
+
+(define (rotate90 painter)
+  (transform-painter painter
+                     (make-vect 1.0 0.0)
+                     (make-vect 1.0 1.0)
+                     (make-vect 0.0 0.0)))
+
+
+(define (squash-inwards painter)
+  (transform-painter painter
+                     (make-vect 0.0 0.0)
+                     (make-vect 0.65 0.35)
+                     (make-vect 0.35 0.65)))
+
+
+(define (beside painter1 painter2)
+  (let ((split-point (make-vect 0.5 0.0)))
+    (let ((paint-left
+           (transform-painter painter1
+                              (make-vect 0.0 0.0)
+                              split-point
+                              (make-vect 0.0 1.0)))
+          (paint-right
+           (transform-painter painter2
+                              split-point
+                              (make-vect 1.0 0.0)
+                              (make-vect 0.5 1.0))))
+      (lambda (frame)
+        (paint-left frame)
+        (paint-right frame)))))
+
+;;;SECTION 2.3.1
+
+;: (a b c d)
+;: (23 45 17)
+;: ((Norah 12) (Molly 9) (Anna 7) (Lauren 6) (Charlotte 3))
+
+;: (* (+ 23 45) (+ x 9))
+
+(define (fact n) (if (= n 1) 1 (* n (fact (- n 1)))))
+
+
+;: (define a 1)
+;: (define b 2)
+;: (list a b)
+;: (list 'a 'b)
+;: (list 'a b)
+
+;: (car '(a b c))
+;: (cdr '(a b c))
+
+
+(define (memq item x)
+  (cond ((null? x) false)
+        ((eq? item (car x)) x)
+        (else (memq item (cdr x)))))
+
+;: (memq 'apple '(pear banana prune))
+;: (memq 'apple '(x (apple sauce) y apple pear))
+
+
+;; EXERCISE 2.53
+;: (list 'a 'b 'c)
+;: 
+;: (list (list 'george))
+;: 
+;: (cdr '((x1 x2) (y1 y2)))
+;: 
+;: (cadr '((x1 x2) (y1 y2)))
+;: 
+;: (pair? (car '(a short list)))
+;: 
+;: (memq 'red '((red shoes) (blue socks)))
+;: 
+;: (memq 'red '(red shoes blue socks))
+
+
+;; EXERCISE 2.54
+;: (equal? '(this is a list) '(this is a list))
+;: (equal? '(this is a list) '(this (is a) list))
+
+;; EXERCISE 2.55
+;: (car ''abracadabra)
+
+
+;;;SECTION 2.3.2
+
+(define (deriv exp var)
+  (cond ((number? exp) 0)
+        ((variable? exp)
+         (if (same-variable? exp var) 1 0))
+        ((sum? exp)
+         (make-sum (deriv (addend exp) var)
+                   (deriv (augend exp) var)))
+        ((product? exp)
+         (make-sum
+           (make-product (multiplier exp)
+                         (deriv (multiplicand exp) var))
+           (make-product (deriv (multiplier exp) var)
+                         (multiplicand exp))))
+        (else
+         (error "unknown expression type -- DERIV" exp))))
+
+;; representing algebraic expressions
+
+(define (variable? x) (symbol? x))
+
+(define (same-variable? v1 v2)
+  (and (variable? v1) (variable? v2) (eq? v1 v2)))
+
+(define (make-sum a1 a2) (list '+ a1 a2))
+
+(define (make-product m1 m2) (list '* m1 m2))
+
+(define (sum? x)
+  (and (pair? x) (eq? (car x) '+)))
+
+(define (addend s) (cadr s))
+
+(define (augend s) (caddr s))
+
+(define (product? x)
+  (and (pair? x) (eq? (car x) '*)))
+
+(define (multiplier p) (cadr p))
+
+(define (multiplicand p) (caddr p))
+
+
+;: (deriv '(+ x 3) 'x)
+;: (deriv '(* x y) 'x)
+;: (deriv '(* (* x y) (+ x 3)) 'x)
+
+
+;; With simplification
+
+(define (make-sum a1 a2)
+  (cond ((=number? a1 0) a2)
+        ((=number? a2 0) a1)
+        ((and (number? a1) (number? a2)) (+ a1 a2))
+        (else (list '+ a1 a2))))
+
+(define (=number? exp num)
+  (and (number? exp) (= exp num)))
+
+(define (make-product m1 m2)
+  (cond ((or (=number? m1 0) (=number? m2 0)) 0)
+        ((=number? m1 1) m2)
+        ((=number? m2 1) m1)
+        ((and (number? m1) (number? m2)) (* m1 m2))
+        (else (list '* m1 m2))))
+
+
+;: (deriv '(+ x 3) 'x)
+;: (deriv '(* x y) 'x)
+;: (deriv '(* (* x y) (+ x 3)) 'x)
+
+
+;; EXERCISE 2.57
+;: (deriv '(* x y (+ x 3)) 'x)
+
+
+;;;SECTION 2.3.3
+
+;; UNORDERED
+
+(define (element-of-set? x set)
+  (cond ((null? set) false)
+        ((equal? x (car set)) true)
+        (else (element-of-set? x (cdr set)))))
+
+(define (adjoin-set x set)
+  (if (element-of-set? x set)
+      set
+      (cons x set)))
+
+(define (intersection-set set1 set2)
+  (cond ((or (null? set1) (null? set2)) '())
+        ((element-of-set? (car set1) set2)
+         (cons (car set1)
+               (intersection-set (cdr set1) set2)))
+        (else (intersection-set (cdr set1) set2))))
+
+
+;; ORDERED
+
+(define (element-of-set? x set)
+  (cond ((null? set) false)
+        ((= x (car set)) true)
+        ((< x (car set)) false)
+        (else (element-of-set? x (cdr set)))))
+
+(define (intersection-set set1 set2)
+  (if (or (null? set1) (null? set2))
+      '()
+      (let ((x1 (car set1)) (x2 (car set2)))
+        (cond ((= x1 x2)
+               (cons x1
+                     (intersection-set (cdr set1)
+                                       (cdr set2))))
+              ((< x1 x2)
+               (intersection-set (cdr set1) set2))
+              ((< x2 x1)
+               (intersection-set set1 (cdr set2)))))))
+
+;; BINARY TREES
+(define (entry tree) (car tree))
+
+(define (left-branch tree) (cadr tree))
+
+(define (right-branch tree) (caddr tree))
+
+(define (make-tree entry left right)
+  (list entry left right))
+
+(define (element-of-set? x set)
+  (cond ((null? set) false)
+        ((= x (entry set)) true)
+        ((< x (entry set))
+         (element-of-set? x (left-branch set)))
+        ((> x (entry set))
+         (element-of-set? x (right-branch set)))))
+
+(define (adjoin-set x set)
+  (cond ((null? set) (make-tree x '() '()))
+        ((= x (entry set)) set)
+        ((< x (entry set))
+         (make-tree (entry set) 
+                    (adjoin-set x (left-branch set))
+                    (right-branch set)))
+        ((> x (entry set))
+         (make-tree (entry set)
+                    (left-branch set)
+                    (adjoin-set x (right-branch set))))))
+
+
+;; EXERCISE 2.63
+(define (tree->list-1 tree)
+  (if (null? tree)
+      '()
+      (append (tree->list-1 (left-branch tree))
+              (cons (entry tree)
+                    (tree->list-1 (right-branch tree))))))
+
+(define (tree->list-2 tree)
+  (define (copy-to-list tree result-list)
+    (if (null? tree)
+        result-list
+        (copy-to-list (left-branch tree)
+                      (cons (entry tree)
+                            (copy-to-list (right-branch tree)
+                                          result-list)))))
+  (copy-to-list tree '()))
+
+
+;; EXERCISE 2.64
+
+(define (list->tree elements)
+  (car (partial-tree elements (length elements))))
+
+(define (partial-tree elts n)
+  (if (= n 0)
+      (cons '() elts)
+      (let ((left-size (quotient (- n 1) 2)))
+        (let ((left-result (partial-tree elts left-size)))
+          (let ((left-tree (car left-result))
+                (non-left-elts (cdr left-result))
+                (right-size (- n (+ left-size 1))))
+            (let ((this-entry (car non-left-elts))
+                  (right-result (partial-tree (cdr non-left-elts)
+                                              right-size)))
+              (let ((right-tree (car right-result))
+                    (remaining-elts (cdr right-result)))
+                (cons (make-tree this-entry left-tree right-tree)
+                      remaining-elts))))))))
+
+;; INFORMATION RETRIEVAL
+
+(define (lookup given-key set-of-records)
+  (cond ((null? set-of-records) false)
+        ((equal? given-key (key (car set-of-records)))
+         (car set-of-records))
+        (else (lookup given-key (cdr set-of-records)))))
+
+
+;;;SECTION 2.3.3
+
+;; representing
+
+(define (make-leaf symbol weight)
+  (list 'leaf symbol weight))
+
+(define (leaf? object)
+  (eq? (car object) 'leaf))
+
+(define (symbol-leaf x) (cadr x))
+
+(define (weight-leaf x) (caddr x))
+
+(define (make-code-tree left right)
+  (list left
+        right
+        (append (symbols left) (symbols right))
+        (+ (weight left) (weight right))))
+
+(define (left-branch tree) (car tree))
+
+(define (right-branch tree) (cadr tree))
+
+(define (symbols tree)
+  (if (leaf? tree)
+      (list (symbol-leaf tree))
+      (caddr tree)))
+
+(define (weight tree)
+  (if (leaf? tree)
+      (weight-leaf tree)
+      (cadddr tree)))
+
+;; decoding
+(define (decode bits tree)
+  (define (decode-1 bits current-branch)
+    (if (null? bits)
+        '()
+        (let ((next-branch
+               (choose-branch (car bits) current-branch)))
+          (if (leaf? next-branch)
+              (cons (symbol-leaf next-branch)
+                    (decode-1 (cdr bits) tree))
+              (decode-1 (cdr bits) next-branch)))))
+  (decode-1 bits tree))
+
+(define (choose-branch bit branch)
+  (cond ((= bit 0) (left-branch branch))
+        ((= bit 1) (right-branch branch))
+        (else (error "bad bit -- CHOOSE-BRANCH" bit))))
+
+;; sets
+
+(define (adjoin-set x set)
+  (cond ((null? set) (list x))
+        ((< (weight x) (weight (car set))) (cons x set))
+        (else (cons (car set)
+                    (adjoin-set x (cdr set))))))
+
+(define (make-leaf-set pairs)
+  (if (null? pairs)
+      '()
+      (let ((pair (car pairs)))
+        (adjoin-set (make-leaf (car pair)
+                               (cadr pair))
+                    (make-leaf-set (cdr pairs))))))
+
+
+;; EXERCISE 2.67
+
+;: (define sample-tree
+;:   (make-code-tree (make-leaf 'A 4)
+;:                   (make-code-tree
+;:                    (make-leaf 'B 2)
+;:                    (make-code-tree (make-leaf 'D 1)
+;:                                    (make-leaf 'C 1)))))
+
+;: (define sample-message '(0 1 1 0 0 1 0 1 0 1 1 1 0))
+
+
+;; EXERCISE 2.68
+
+(define (encode message tree)
+  (if (null? message)
+      '()
+      (append (encode-symbol (car message) tree)
+              (encode (cdr message) tree))))
+
+;; EXERCISE 2.69
+
+(define (generate-huffman-tree pairs)
+  (successive-merge (make-leaf-set pairs)))
+
+;;;SECTION 2.4.1
+
+;: (make-from-real-imag (real-part z) (imag-part z))
+
+;: (make-from-mag-ang (magnitude z) (angle z))
+
+(define (add-complex z1 z2)
+  (make-from-real-imag (+ (real-part z1) (real-part z2))
+                       (+ (imag-part z1) (imag-part z2))))
+
+(define (sub-complex z1 z2)
+  (make-from-real-imag (- (real-part z1) (real-part z2))
+                       (- (imag-part z1) (imag-part z2))))
+
+(define (mul-complex z1 z2)
+  (make-from-mag-ang (* (magnitude z1) (magnitude z2))
+                     (+ (angle z1) (angle z2))))
+
+(define (div-complex z1 z2)
+  (make-from-mag-ang (/ (magnitude z1) (magnitude z2))
+                     (- (angle z1) (angle z2))))
+
+
+;; Ben (rectangular)
+
+(define (real-part z) (car z))
+
+(define (imag-part z) (cdr z))
+
+(define (magnitude z)
+  (sqrt (+ (square (real-part z)) (square (imag-part z)))))
+
+(define (angle z)
+  (atan (imag-part z) (real-part z)))
+
+(define (make-from-real-imag x y) (cons x y))
+
+(define (make-from-mag-ang r a) 
+  (cons (* r (cos a)) (* r (sin a))))
+
+
+;; Alyssa (polar)
+
+(define (real-part z)
+  (* (magnitude z) (cos (angle z))))
+
+(define (imag-part z)
+  (* (magnitude z) (sin (angle z))))
+
+(define (magnitude z) (car z))
+
+(define (angle z) (cdr z))
+
+(define (make-from-real-imag x y) 
+  (cons (sqrt (+ (square x) (square y)))
+        (atan y x)))
+
+(define (make-from-mag-ang r a) (cons r a))
+
+
+;;;SECTION 2.4.2
+
+(define (attach-tag type-tag contents)
+  (cons type-tag contents))
+
+(define (type-tag datum)
+  (if (pair? datum)
+      (car datum)
+      (error "Bad tagged datum -- TYPE-TAG" datum)))
+
+(define (contents datum)
+  (if (pair? datum)
+      (cdr datum)
+      (error "Bad tagged datum -- CONTENTS" datum)))
+
+(define (rectangular? z)
+  (eq? (type-tag z) 'rectangular))
+
+(define (polar? z)
+  (eq? (type-tag z) 'polar))
+
+
+;; Ben (rectangular)
+
+(define (real-part-rectangular z) (car z))
+
+(define (imag-part-rectangular z) (cdr z))
+
+(define (magnitude-rectangular z)
+  (sqrt (+ (square (real-part-rectangular z))
+           (square (imag-part-rectangular z)))))
+
+(define (angle-rectangular z)
+  (atan (imag-part-rectangular z)
+        (real-part-rectangular z)))
+
+(define (make-from-real-imag-rectangular x y)
+  (attach-tag 'rectangular (cons x y)))
+
+(define (make-from-mag-ang-rectangular r a) 
+  (attach-tag 'rectangular
+              (cons (* r (cos a)) (* r (sin a)))))
+
+;; Alyssa (polar)
+
+(define (real-part-polar z)
+  (* (magnitude-polar z) (cos (angle-polar z))))
+
+(define (imag-part-polar z)
+  (* (magnitude-polar z) (sin (angle-polar z))))
+
+(define (magnitude-polar z) (car z))
+
+(define (angle-polar z) (cdr z))
+
+(define (make-from-real-imag-polar x y) 
+  (attach-tag 'polar
+               (cons (sqrt (+ (square x) (square y)))
+                     (atan y x))))
+
+(define (make-from-mag-ang-polar r a)
+  (attach-tag 'polar (cons r a)))
+
+
+;; Generic selectors
+
+(define (real-part z)
+  (cond ((rectangular? z) 
+         (real-part-rectangular (contents z)))
+        ((polar? z)
+         (real-part-polar (contents z)))
+        (else (error "Unknown type -- REAL-PART" z))))
+
+(define (imag-part z)
+  (cond ((rectangular? z)
+         (imag-part-rectangular (contents z)))
+        ((polar? z)
+         (imag-part-polar (contents z)))
+        (else (error "Unknown type -- IMAG-PART" z))))
+
+(define (magnitude z)
+  (cond ((rectangular? z)
+         (magnitude-rectangular (contents z)))
+        ((polar? z)
+         (magnitude-polar (contents z)))
+        (else (error "Unknown type -- MAGNITUDE" z))))
+
+(define (angle z)
+  (cond ((rectangular? z)
+         (angle-rectangular (contents z)))
+        ((polar? z)
+         (angle-polar (contents z)))
+        (else (error "Unknown type -- ANGLE" z))))
+
+;; same as before
+(define (add-complex z1 z2)
+  (make-from-real-imag (+ (real-part z1) (real-part z2))
+                       (+ (imag-part z1) (imag-part z2))))
+
+;; Constructors for complex numbers
+
+(define (make-from-real-imag x y)
+  (make-from-real-imag-rectangular x y))
+
+(define (make-from-mag-ang r a)
+  (make-from-mag-ang-polar r a))
+
+;;;SECTION 2.4.3
+
+;; uses get/put (from 3.3.3) -- see ch2support.scm
+
+(define (install-rectangular-package)
+  ;; internal procedures
+  (define (real-part z) (car z))
+  (define (imag-part z) (cdr z))
+  (define (make-from-real-imag x y) (cons x y))
+  (define (magnitude z)
+    (sqrt (+ (square (real-part z))
+             (square (imag-part z)))))
+  (define (angle z)
+    (atan (imag-part z) (real-part z)))
+  (define (make-from-mag-ang r a) 
+    (cons (* r (cos a)) (* r (sin a))))
+
+  ;; interface to the rest of the system
+  (define (tag x) (attach-tag 'rectangular x))
+  (put 'real-part '(rectangular) real-part)
+  (put 'imag-part '(rectangular) imag-part)
+  (put 'magnitude '(rectangular) magnitude)
+  (put 'angle '(rectangular) angle)
+  (put 'make-from-real-imag 'rectangular
+       (lambda (x y) (tag (make-from-real-imag x y))))
+  (put 'make-from-mag-ang 'rectangular
+       (lambda (r a) (tag (make-from-mag-ang r a))))
+  'done)
+
+(define (install-polar-package)
+  ;; internal procedures
+  (define (magnitude z) (car z))
+  (define (angle z) (cdr z))
+  (define (make-from-mag-ang r a) (cons r a))
+  (define (real-part z)
+    (* (magnitude z) (cos (angle z))))
+  (define (imag-part z)
+    (* (magnitude z) (sin (angle z))))
+  (define (make-from-real-imag x y) 
+    (cons (sqrt (+ (square x) (square y)))
+          (atan y x)))
+
+  ;; interface to the rest of the system
+  (define (tag x) (attach-tag 'polar x))
+  (put 'real-part '(polar) real-part)
+  (put 'imag-part '(polar) imag-part)
+  (put 'magnitude '(polar) magnitude)
+  (put 'angle '(polar) angle)
+  (put 'make-from-real-imag 'polar
+       (lambda (x y) (tag (make-from-real-imag x y))))
+  (put 'make-from-mag-ang 'polar
+       (lambda (r a) (tag (make-from-mag-ang r a))))
+  'done)
+
+;;footnote
+;: (apply + (list 1 2 3 4))
+
+
+(define (apply-generic op . args)
+  (let ((type-tags (map type-tag args)))
+    (let ((proc (get op type-tags)))
+      (if proc
+          (apply proc (map contents args))
+          (error
+            "No method for these types -- APPLY-GENERIC"
+            (list op type-tags))))))
+
+;; Generic selectors
+
+(define (real-part z) (apply-generic 'real-part z))
+(define (imag-part z) (apply-generic 'imag-part z))
+(define (magnitude z) (apply-generic 'magnitude z))
+(define (angle z) (apply-generic 'angle z))
+
+
+;; Constructors for complex numbers
+
+(define (make-from-real-imag x y)
+  ((get 'make-from-real-imag 'rectangular) x y))
+
+(define (make-from-mag-ang r a)
+  ((get 'make-from-mag-ang 'polar) r a))
+
+
+
+;; EXERCISE 2.73
+(define (deriv exp var)
+  (cond ((number? exp) 0)
+        ((variable? exp) (if (same-variable? exp var) 1 0))
+        ((sum? exp)
+         (make-sum (deriv (addend exp) var)
+                   (deriv (augend exp) var)))
+        ((product? exp)
+         (make-sum
+           (make-product (multiplier exp)
+                         (deriv (multiplicand exp) var))
+           (make-product (deriv (multiplier exp) var)
+                         (multiplicand exp))))
+        (else (error "unknown expression type -- DERIV" exp))))
+
+
+(define (deriv exp var)
+   (cond ((number? exp) 0)
+         ((variable? exp) (if (same-variable? exp var) 1 0))
+         (else ((get 'deriv (operator exp)) (operands exp)
+                                            var))))
+
+(define (operator exp) (car exp))
+
+(define (operands exp) (cdr exp))
+
+;: ((get (operator exp) 'deriv) (operands exp) var)
+
+
+;; Message passing
+(define (make-from-real-imag x y)
+  (define (dispatch op)
+    (cond ((eq? op 'real-part) x)
+          ((eq? op 'imag-part) y)
+          ((eq? op 'magnitude)
+           (sqrt (+ (square x) (square y))))
+          ((eq? op 'angle) (atan y x))
+          (else
+           (error "Unknown op -- MAKE-FROM-REAL-IMAG" op))))
+  dispatch)
+
+(define (apply-generic op arg) (arg op))
+
+;;;SECTION 2.5.1
+
+(define (add x y) (apply-generic 'add x y))
+(define (sub x y) (apply-generic 'sub x y))
+(define (mul x y) (apply-generic 'mul x y))
+(define (div x y) (apply-generic 'div x y))
+
+(define (install-scheme-number-package)
+  (define (tag x)
+    (attach-tag 'scheme-number x))
+  (put 'add '(scheme-number scheme-number)
+       (lambda (x y) (tag (+ x y))))
+  (put 'sub '(scheme-number scheme-number)
+       (lambda (x y) (tag (- x y))))
+  (put 'mul '(scheme-number scheme-number)
+       (lambda (x y) (tag (* x y))))
+  (put 'div '(scheme-number scheme-number)
+       (lambda (x y) (tag (/ x y))))
+  (put 'make 'scheme-number
+       (lambda (x) (tag x)))
+  'done)
+
+(define (make-scheme-number n)
+  ((get 'make 'scheme-number) n))
+
+(define (install-rational-package)
+  ;; internal procedures
+  (define (numer x) (car x))
+  (define (denom x) (cdr x))
+  (define (make-rat n d)
+    (let ((g (gcd n d)))
+      (cons (/ n g) (/ d g))))
+  (define (add-rat x y)
+    (make-rat (+ (* (numer x) (denom y))
+                 (* (numer y) (denom x)))
+              (* (denom x) (denom y))))
+  (define (sub-rat x y)
+    (make-rat (- (* (numer x) (denom y))
+                 (* (numer y) (denom x)))
+              (* (denom x) (denom y))))
+  (define (mul-rat x y)
+    (make-rat (* (numer x) (numer y))
+              (* (denom x) (denom y))))
+  (define (div-rat x y)
+    (make-rat (* (numer x) (denom y))
+              (* (denom x) (numer y))))
+  ;; interface to rest of the system
+  (define (tag x) (attach-tag 'rational x))
+  (put 'add '(rational rational)
+       (lambda (x y) (tag (add-rat x y))))
+  (put 'sub '(rational rational)
+       (lambda (x y) (tag (sub-rat x y))))
+  (put 'mul '(rational rational)
+       (lambda (x y) (tag (mul-rat x y))))
+  (put 'div '(rational rational)
+       (lambda (x y) (tag (div-rat x y))))
+
+  (put 'make 'rational
+       (lambda (n d) (tag (make-rat n d))))
+  'done)
+
+(define (make-rational n d)
+  ((get 'make 'rational) n d))
+
+(define (install-complex-package)
+  ;; imported procedures from rectangular and polar packages
+  (define (make-from-real-imag x y)
+    ((get 'make-from-real-imag 'rectangular) x y))
+  (define (make-from-mag-ang r a)
+    ((get 'make-from-mag-ang 'polar) r a))
+  ;; internal procedures
+  (define (add-complex z1 z2)
+    (make-from-real-imag (+ (real-part z1) (real-part z2))
+                         (+ (imag-part z1) (imag-part z2))))
+  (define (sub-complex z1 z2)
+    (make-from-real-imag (- (real-part z1) (real-part z2))
+                         (- (imag-part z1) (imag-part z2))))
+  (define (mul-complex z1 z2)
+    (make-from-mag-ang (* (magnitude z1) (magnitude z2))
+                       (+ (angle z1) (angle z2))))
+  (define (div-complex z1 z2)
+    (make-from-mag-ang (/ (magnitude z1) (magnitude z2))
+                       (- (angle z1) (angle z2))))
+
+  ;; interface to rest of the system
+  (define (tag z) (attach-tag 'complex z))
+  (put 'add '(complex complex)
+       (lambda (z1 z2) (tag (add-complex z1 z2))))
+  (put 'sub '(complex complex)
+       (lambda (z1 z2) (tag (sub-complex z1 z2))))
+  (put 'mul '(complex complex)
+       (lambda (z1 z2) (tag (mul-complex z1 z2))))
+  (put 'div '(complex complex)
+       (lambda (z1 z2) (tag (div-complex z1 z2))))
+  (put 'make-from-real-imag 'complex
+       (lambda (x y) (tag (make-from-real-imag x y))))
+  (put 'make-from-mag-ang 'complex
+       (lambda (r a) (tag (make-from-mag-ang r a))))
+  'done)
+
+(define (make-complex-from-real-imag x y)
+  ((get 'make-from-real-imag 'complex) x y))
+
+(define (make-complex-from-mag-ang r a)
+  ((get 'make-from-mag-ang 'complex) r a))
+
+
+;; EXERCISE 2.77
+;; to put in complex package
+
+;: (put 'real-part '(complex) real-part)
+;: (put 'imag-part '(complex) imag-part)
+;: (put 'magnitude '(complex) magnitude)
+;: (put 'angle '(complex) angle)
+
+
+;;;SECTION 2.5.2
+
+;; to be included in the complex package
+;: (define (add-complex-to-schemenum z x)
+;:   (make-from-real-imag (+ (real-part z) x)
+;:                        (imag-part z)))
+;: 
+;: (put 'add '(complex scheme-number)
+;:      (lambda (z x) (tag (add-complex-to-schemenum z x))))
+
+
+;; Coercion
+
+(define (scheme-number->complex n)
+  (make-complex-from-real-imag (contents n) 0))
+
+;: (put-coercion 'scheme-number 'complex scheme-number->complex)
+
+
+(define (apply-generic op . args)
+  (let ((type-tags (map type-tag args)))
+    (let ((proc (get op type-tags)))
+      (if proc
+          (apply proc (map contents args))
+          (if (= (length args) 2)
+              (let ((type1 (car type-tags))
+                    (type2 (cadr type-tags))
+                    (a1 (car args))
+                    (a2 (cadr args)))
+                (let ((t1->t2 (get-coercion type1 type2))
+                      (t2->t1 (get-coercion type2 type1)))
+                  (cond (t1->t2
+                         (apply-generic op (t1->t2 a1) a2))
+                        (t2->t1
+                         (apply-generic op a1 (t2->t1 a2)))
+                        (else
+                         (error "No method for these types"
+                                (list op type-tags))))))
+              (error "No method for these types"
+                     (list op type-tags)))))))
+
+;; EXERCISE 2.81
+
+(define (scheme-number->scheme-number n) n)
+(define (complex->complex z) z)
+;: (put-coercion 'scheme-number 'scheme-number
+;:               scheme-number->scheme-number)
+;: (put-coercion 'complex 'complex complex->complex)
+
+(define (exp x y) (apply-generic 'exp x y))
+;: (put 'exp '(scheme-number scheme-number)
+;:      (lambda (x y) (tag (expt x y))))
+
+;;;SECTION 2.5.3
+
+;;; ALL procedures in 2.5.3 except make-polynomial
+;;; should be inserted in install-polynomial-package, as indicated
+
+(define (add-poly p1 p2)
+  (if (same-variable? (variable p1) (variable p2))
+      (make-poly (variable p1)
+                 (add-terms (term-list p1)
+                            (term-list p2)))
+      (error "Polys not in same var -- ADD-POLY"
+             (list p1 p2))))
+
+(define (mul-poly p1 p2)
+  (if (same-variable? (variable p1) (variable p2))
+      (make-poly (variable p1)
+                 (mul-terms (term-list p1)
+                            (term-list p2)))
+      (error "Polys not in same var -- MUL-POLY"
+             (list p1 p2))))
+
+;; *incomplete* skeleton of package
+(define (install-polynomial-package)
+  ;; internal procedures
+  ;; representation of poly
+  (define (make-poly variable term-list)
+    (cons variable term-list))
+  (define (variable p) (car p))
+  (define (term-list p) (cdr p))
+  ;;[procedures same-variable? and variable? from section 2.3.2]
+
+  ;; representation of terms and term lists
+  ;;[procedures adjoin-term ... coeff from text below]
+
+  ;;(define (add-poly p1 p2) ... )
+  ;;[procedures used by add-poly]
+
+  ;;(define (mul-poly p1 p2) ... )
+  ;;[procedures used by mul-poly]
+
+  ;; interface to rest of the system
+  (define (tag p) (attach-tag 'polynomial p))
+  (put 'add '(polynomial polynomial) 
+       (lambda (p1 p2) (tag (add-poly p1 p2))))
+  (put 'mul '(polynomial polynomial) 
+       (lambda (p1 p2) (tag (mul-poly p1 p2))))
+
+  (put 'make 'polynomial
+       (lambda (var terms) (tag (make-poly var terms))))
+  'done)
+
+(define (add-terms L1 L2)
+  (cond ((empty-termlist? L1) L2)
+        ((empty-termlist? L2) L1)
+        (else
+         (let ((t1 (first-term L1)) (t2 (first-term L2)))
+           (cond ((> (order t1) (order t2))
+                  (adjoin-term
+                   t1 (add-terms (rest-terms L1) L2)))
+                 ((< (order t1) (order t2))
+                  (adjoin-term
+                   t2 (add-terms L1 (rest-terms L2))))
+                 (else
+                  (adjoin-term
+                   (make-term (order t1)
+                              (add (coeff t1) (coeff t2)))
+                   (add-terms (rest-terms L1)
+                              (rest-terms L2)))))))))
+
+(define (mul-terms L1 L2)
+  (if (empty-termlist? L1)
+      (the-empty-termlist)
+      (add-terms (mul-term-by-all-terms (first-term L1) L2)
+                 (mul-terms (rest-terms L1) L2))))
+
+(define (mul-term-by-all-terms t1 L)
+  (if (empty-termlist? L)
+      (the-empty-termlist)
+      (let ((t2 (first-term L)))
+        (adjoin-term
+         (make-term (+ (order t1) (order t2))
+                    (mul (coeff t1) (coeff t2)))
+         (mul-term-by-all-terms t1 (rest-terms L))))))
+
+
+;; Representing term lists
+
+(define (adjoin-term term term-list)
+  (if (=zero? (coeff term))
+      term-list
+      (cons term term-list)))
+
+(define (the-empty-termlist) '())
+(define (first-term term-list) (car term-list))
+(define (rest-terms term-list) (cdr term-list))
+(define (empty-termlist? term-list) (null? term-list))
+
+(define (make-term order coeff) (list order coeff))
+(define (order term) (car term))
+(define (coeff term) (cadr term))
+
+
+;; Constructor
+(define (make-polynomial var terms)
+  ((get 'make 'polynomial) var terms))
+
+
+;; EXERCISE 2.91
+
+(define (div-terms L1 L2)
+  (if (empty-termlist? L1)
+      (list (the-empty-termlist) (the-empty-termlist))
+      (let ((t1 (first-term L1))
+            (t2 (first-term L2)))
+        (if (> (order t2) (order t1))
+            (list (the-empty-termlist) L1)
+            (let ((new-c (div (coeff t1) (coeff t2)))
+                  (new-o (- (order t1) (order t2))))
+              (let ((rest-of-result
+                     ??FILL-THIS-IN?? ;compute rest of result recursively
+                     ))
+                ??FILL-THIS-IN?? ;form complete result
+                ))))))
+
+
+;; EXERCISE 2.93
+;: (define p1 (make-polynomial 'x '((2 1)(0 1))))
+;: (define p2 (make-polynomial 'x '((3 1)(0 1))))
+;: (define rf (make-rational p2 p1))
+
+
+;; Rational functions
+
+(define (gcd a b)
+  (if (= b 0)
+      a
+      (gcd b (remainder a b))))
+
+(define (gcd-terms a b)
+  (if (empty-termlist? b)
+      a
+      (gcd-terms b (remainder-terms a b))))
+
+
+;; EXERCISE 2.94
+;: (define p1 (make-polynomial 'x '((4 1) (3 -1) (2 -2) (1 2))))
+;: (define p2 (make-polynomial 'x '((3 1) (1 -1))))
+;: (greatest-common-divisor p1 p2)
+
+
+;; EXERCISE 2.97
+
+(define (reduce-integers n d)
+  (let ((g (gcd n d)))
+    (list (/ n g) (/ d g))))
+
+;: (define p1 (make-polynomial 'x '((1 1)(0 1))))
+;: (define p2 (make-polynomial 'x '((3 1)(0 -1))))
+;: (define p3 (make-polynomial 'x '((1 1))))
+;: (define p4 (make-polynomial 'x '((2 1)(0 -1))))
+
+;: (define rf1 (make-rational p1 p2))
+;: (define rf2 (make-rational p3 p4))
+
+;: (add rf1 rf2)
+
+; -----***CH2TESTS.SCM***
+;;; EXAMPLES OF TESTING CODE (IN MIT SCHEME)
+;;; FROM CHAPTER 2 OF STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+
+;;;SECTION 2.4.1
+
+;; Ben's rectangular
+
+(define z1 (make-from-real-imag 1 1))
+;Value: z1
+
+(real-part z1)
+;Value: 1
+(imag-part z1)
+;Value: 1
+(magnitude z1)
+;Value: 1.4142135623730951
+(angle z1)
+;Value: .7853981633974483
+(* 4 (angle z1))
+;Value: 3.141592653589793
+(define z2 (make-from-mag-ang 1.4142135623730951 .7853981633974483))
+;Value: z2
+
+(real-part z2)
+;Value: 1.
+(imag-part z2)
+;Value: 1.
+
+z1
+;Value 10: (1 . 1)
+
+z2
+;Value 14: (1. . 1.)
+
+(add-complex z1 z2)
+;Value 16: (2. . 2.)
+
+(sub-complex z1 z2)
+;Value 17: (0. . 0.)
+
+
+;; Alyssa's polar
+
+(define z1 (make-from-real-imag 1 1))
+;Value: z1
+
+(real-part z1)
+;Value: 1.
+
+(imag-part z1)
+;Value: 1.
+
+(magnitude z1)
+;Value: 1.4142135623730951
+
+(angle z1)
+;Value: .7853981633974483
+
+(* 4 (angle z1))
+;Value: 3.141592653589793
+
+(define z2 (make-from-mag-ang 1.4142135623730951 .7853981633974483))
+;Value: z2
+
+(real-part z2)
+;Value: 1.
+
+(imag-part z2)
+;Value: 1.
+
+z1
+;Value 12: (1.4142135623730951 . .7853981633974483)
+
+z2
+;Value 13: (1.4142135623730951 . .7853981633974483)
+
+(mul-complex z1 z2)
+;Value 18: (2.0000000000000004 . 1.5707963267948966)
+
+(div-complex z1 z2)
+;Value 19: (1. . 0.)
+
+;;;SECTION 2.4.2
+
+(define z1 (make-from-real-imag 1 1))
+;Value: z1
+
+z1
+;Value 20: (rectangular 1 . 1)
+(real-part z1)
+;Value: 1
+(imag-part z1)
+;Value: 1
+(magnitude z1)
+;Value: 1.4142135623730951
+(angle z1)
+;Value: .7853981633974483
+
+(define z2 (make-from-mag-ang 1.4142135623730951 .7853981633974483))
+;Value: z2
+
+z2
+;Value 22: (polar 1.4142135623730951 . .7853981633974483)
+
+(magnitude z2)
+;Value: 1.4142135623730951
+(angle z2)
+;Value: .7853981633974483
+(real-part z2)
+;Value: 1.
+(imag-part z2)
+;Value: 1.
+
+z1
+;Value 20: (rectangular 1 . 1)
+z2
+;Value 22: (polar 1.4142135623730951 . .7853981633974483)
+
+(add-complex z1 z2)
+;Value 23: (rectangular 2. . 2.)
+(sub-complex z1 z2)
+;Value 24: (rectangular 0. . 0.)
+(mul-complex z1 z2)
+;Value 25: (polar 2.0000000000000004 . 1.5707963267948966)
+(div-complex z1 z2)
+;Value 26: (polar 1. . 0.)
+
+;;;SECTION 2.5.2
+
+(define z1 (make-complex-from-real-imag 1 1))
+
+;; Before coercion mechanism
+
+(add z1 (make-scheme-number 3))
+;Value 1: (complex rectangular 4 . 1)
+
+(add (make-scheme-number 3) z1)
+;No method for the given types (add (scheme-number complex))
+
+
+;; With coercion mechanism
+
+(add z1 (make-scheme-number 3))
+;Value 6: (complex rectangular 4 . 1)
+
+(add (make-scheme-number 3) z1)
+;Value 7: (complex rectangular 4 . 1)
+
+;;;SECTION 2.5.3
+
+(define a (make-polynomial 'x '((5 1) (4 2) (2 3) (1 -2) (0 -5))))
+
+a
+;Value 3: (polynomial x (5 1) (4 2) (2 3) (1 -2) (0 -5))
+
+(add a a)
+;Value 4: (polynomial x (5 2) (4 4) (2 6) (1 -4) (0 -10))
+
+(define b (make-polynomial 'x '((100 1) (2 2) (0 1))))
+
+b
+;Value 5: (polynomial x (100 1) (2 2) (0 1))
+
+(mul b b)
+;Value 6: (polynomial x (200 1) (102 4) (100 2) (4 4) (2 4) (0 1))
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter3.code b/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter3.code
new file mode 100644
index 0000000..656fff4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/chapter3.code
@@ -0,0 +1,1707 @@
+;;;;CODE FROM CHAPTER 3 OF STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;; Examples from the book are commented out with ;: so that they
+;;;  are easy to find and so that they will be omitted if you evaluate a
+;;;  chunk of the file (programs with intervening examples) in Scheme.
+
+;;; BEWARE: Although the whole file can be loaded into Scheme,
+;;;  you won't want to do so.  For example, you generally do
+;;;  not want to use the procedural representation of pairs
+;;;  (cons, car, cdr as defined in section 3.3.1) instead of
+;;;  Scheme's primitive pairs.
+
+;;; Some things require code that is not in the book -- see ch3support.scm
+
+
+;;;;SECTION 3.1
+
+;;;SECTION 3.1.1
+
+;: (withdraw 25)
+;: (withdraw 25)
+;: (withdraw 60)
+;: (withdraw 15)
+
+(define balance 100)
+
+(define (withdraw amount)
+  (if (>= balance amount)
+      (begin (set! balance (- balance amount))
+             balance)
+      "Insufficient funds"))
+
+
+(define new-withdraw
+  (let ((balance 100))
+    (lambda (amount)
+      (if (>= balance amount)
+          (begin (set! balance (- balance amount))
+                 balance)
+          "Insufficient funds"))))
+
+
+(define (make-withdraw balance)
+  (lambda (amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds")))
+
+
+;: (define W1 (make-withdraw 100))
+;: (define W2 (make-withdraw 100))
+;: (W1 50)
+;: (W2 70)
+;: (W2 40)
+;: (W1 40)
+
+
+(define (make-account balance)
+  (define (withdraw amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (define (dispatch m)
+    (cond ((eq? m 'withdraw) withdraw)
+          ((eq? m 'deposit) deposit)
+          (else (error "Unknown request -- MAKE-ACCOUNT"
+                       m))))
+  dispatch)
+
+;: (define acc (make-account 100))
+
+;: ((acc 'withdraw) 50)
+;: ((acc 'withdraw) 60)
+;: ((acc 'deposit) 40)
+;: ((acc 'withdraw) 60)
+
+;: (define acc2 (make-account 100))
+
+
+;; EXERCISE 3.1
+;: (define A (make-accumulator 5))
+;: (A 10)
+;: (A 10)
+
+
+;; EXERCISE 3.2
+;: (define s (make-monitored sqrt))
+;: (s 100)
+;: (s 'how-many-calls?)
+
+
+;; EXERCISE 3.3
+;: (define acc (make-account 100 'secret-password))
+;: ((acc 'secret-password 'withdraw) 40)
+;: ((acc 'some-other-password 'deposit) 50)
+
+
+;;;SECTION 3.1.2
+
+;; *following uses rand-update -- see ch3support.scm
+;; *also must set random-init to some value
+(define random-init 7)			;**not in book**
+(define rand
+  (let ((x random-init))
+    (lambda ()
+      (set! x (rand-update x))
+      x)))
+
+
+(define (estimate-pi trials)
+  (sqrt (/ 6 (monte-carlo trials cesaro-test))))
+
+(define (cesaro-test)
+   (= (gcd (rand) (rand)) 1))
+
+(define (monte-carlo trials experiment)
+  (define (iter trials-remaining trials-passed)
+    (cond ((= trials-remaining 0)
+           (/ trials-passed trials))
+          ((experiment)
+           (iter (- trials-remaining 1) (+ trials-passed 1)))
+          (else
+           (iter (- trials-remaining 1) trials-passed))))
+  (iter trials 0))
+
+;; second version (no assignment)
+(define (estimate-pi trials)
+  (sqrt (/ 6 (random-gcd-test trials random-init))))
+
+(define (random-gcd-test trials initial-x)
+  (define (iter trials-remaining trials-passed x)
+    (let ((x1 (rand-update x)))
+      (let ((x2 (rand-update x1)))
+        (cond ((= trials-remaining 0)   
+               (/ trials-passed trials))
+              ((= (gcd x1 x2) 1)
+               (iter (- trials-remaining 1)
+                     (+ trials-passed 1)
+                     x2))
+              (else
+               (iter (- trials-remaining 1)
+                     trials-passed
+                     x2))))))
+  (iter trials 0 initial-x))
+
+
+;; EXERCISE 3.5
+(define (random-in-range low high)
+  (let ((range (- high low)))
+    (+ low (random range))))
+
+
+;;;SECTION 3.1.3
+
+(define (make-simplified-withdraw balance)
+  (lambda (amount)
+    (set! balance (- balance amount))
+    balance))
+
+
+;: (define W (make-simplified-withdraw 25))
+;: (W 20)
+;: (W 10)
+
+
+(define (make-decrementer balance)
+  (lambda (amount)
+    (- balance amount)))
+
+;: (define D (make-decrementer 25))
+;: (D 20)
+;: (D 10)
+
+;: ((make-decrementer 25) 20)
+;: ((lambda (amount) (- 25 amount)) 20)
+;: (- 25 20)
+
+;: ((make-simplified-withdraw 25) 20)
+
+;: ((lambda (amount) (set! balance (- 25 amount)) 25) 20)
+;: (set! balance (- 25 20)) 25
+
+;;;Sameness and change
+
+;: (define D1 (make-decrementer 25))
+;: (define D2 (make-decrementer 25))
+;: 
+;: (define W1 (make-simplified-withdraw 25))
+;: (define W2 (make-simplified-withdraw 25))
+;: 
+;: (W1 20)
+;: (W1 20)
+;: (W2 20)
+
+;: (define peter-acc (make-account 100))
+;: (define paul-acc (make-account 100))
+;: 
+;: (define peter-acc (make-account 100))
+;: (define paul-acc peter-acc)
+
+;;;Pitfalls of imperative programming
+
+(define (factorial n)
+  (define (iter product counter)
+    (if (> counter n)
+        product
+        (iter (* counter product)
+              (+ counter 1))))
+  (iter 1 1))
+
+(define (factorial n)
+  (let ((product 1)
+        (counter 1))
+    (define (iter)
+      (if (> counter n)
+          product
+          (begin (set! product (* counter product))
+                 (set! counter (+ counter 1))
+                 (iter))))
+    (iter)))
+
+
+;; EXERCISE 3.7
+;: (define paul-acc
+;:   (make-joint peter-acc 'open-sesame 'rosebud))
+
+
+;;;;SECTION 3.2
+
+;;;SECTION 3.2.1
+
+(define (square x)
+  (* x x))
+
+(define square
+  (lambda (x) (* x x)))
+
+
+;;;SECTION 3.2.2
+
+(define (square x)
+  (* x x))
+
+(define (sum-of-squares x y)
+  (+ (square x) (square y)))
+
+(define (f a)
+  (sum-of-squares (+ a 1) (* a 2)))
+
+;: (sum-of-squares (+ a 1) (* a 2))
+
+
+;; EXERCISE 3.9
+
+(define (factorial n)
+  (if (= n 1)
+      1
+      (* n (factorial (- n 1)))))
+
+(define (factorial n)
+  (fact-iter 1 1 n))
+
+(define (fact-iter product counter max-count)
+  (if (> counter max-count)
+      product
+      (fact-iter (* counter product)
+                 (+ counter 1)
+                 max-count)))
+
+
+;;;SECTION 3.2.3
+
+(define (make-withdraw balance)
+  (lambda (amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds")))
+
+;: (define W1 (make-withdraw 100))
+;: (W1 50)
+
+;: (define W2 (make-withdraw 100))
+
+
+;; EXERCISE 3.10
+
+(define (make-withdraw initial-amount)
+  (let ((balance initial-amount))
+    (lambda (amount)
+      (if (>= balance amount)
+          (begin (set! balance (- balance amount))
+                 balance)
+          "Insufficient funds"))))
+
+
+;: (define W1 (make-withdraw 100))
+;: (W1 50)
+;: (define W2 (make-withdraw 100))
+
+
+;;;SECTION 3.2.4
+
+;; same as in section 1.1.8
+(define (sqrt x)
+  (define (good-enough? guess)
+    (< (abs (- (square guess) x)) 0.001))
+  (define (improve guess)
+    (average guess (/ x guess)))
+  (define (sqrt-iter guess)
+    (if (good-enough? guess)
+        guess
+        (sqrt-iter (improve guess))))
+  (sqrt-iter 1.0))
+
+
+;; EXERCISE 3.11
+
+(define (make-account balance)
+  (define (withdraw amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (define (dispatch m)
+    (cond ((eq? m 'withdraw) withdraw)
+          ((eq? m 'deposit) deposit)
+          (else (error "Unknown request -- MAKE-ACCOUNT"
+                       m))))
+  dispatch)
+
+;: (define acc (make-account 50))
+;: 
+;: ((acc 'deposit) 40)
+;: ((acc 'withdraw) 60)
+;: 
+;: (define acc2 (make-account 100))
+
+
+;;;;SECTION 3.3
+
+;;;SECTION 3.3.1
+
+(define (cons x y)
+  (let ((new (get-new-pair)))
+    (set-car! new x)
+    (set-cdr! new y)
+    new))
+
+
+;; EXERCISE 3.12
+(define (append x y)
+  (if (null? x)
+      y
+      (cons (car x) (append (cdr x) y))))
+
+(define (append! x y)
+  (set-cdr! (last-pair x) y)
+  x)
+
+(define (last-pair x)
+  (if (null? (cdr x))
+      x
+      (last-pair (cdr x))))
+
+;: (define x (list 'a 'b))
+;: (define y (list 'c 'd))
+;: (define z (append  x y))
+;: z
+;: (cdr x)
+;: 
+;: (define w (append! x y))
+;: w
+;: (cdr x)
+
+
+;; EXERCISE 3.13
+(define (make-cycle x)
+  (set-cdr! (last-pair x) x)
+  x)
+
+;: (define z (make-cycle (list 'a 'b 'c)))
+
+
+;; EXERCISE 3.14
+(define (mystery x)
+  (define (loop x y)
+    (if (null? x)
+        y
+        (let ((temp (cdr x)))
+          (set-cdr! x y)
+          (loop temp x))))
+  (loop x '()))
+
+
+;;; Sharing and identity
+
+;: (define x (list 'a 'b))
+;: (define z1 (cons x x))
+;: (define z2 (cons (list 'a 'b) (list 'a 'b)))
+
+(define (set-to-wow! x)
+  (set-car! (car x) 'wow)
+  x)
+
+;: z1
+;: (set-to-wow! z1)
+;: z2
+;: (set-to-wow! z2)
+
+
+;; EXERCISE 3.16
+(define (count-pairs x)
+  (if (not (pair? x))
+      0
+      (+ (count-pairs (car x))
+         (count-pairs (cdr x))
+         1)))
+
+
+;;;Mutation as assignment
+
+(define (cons x y)
+  (define (dispatch m)
+    (cond ((eq? m 'car) x)
+          ((eq? m 'cdr) y)
+          (else (error "Undefined operation -- CONS" m))))
+  dispatch)
+
+(define (car z) (z 'car))
+(define (cdr z) (z 'cdr))
+
+
+(define (cons x y)
+  (define (set-x! v) (set! x v))
+  (define (set-y! v) (set! y v))
+  (define (dispatch m)
+    (cond ((eq? m 'car) x)
+          ((eq? m 'cdr) y)
+          ((eq? m 'set-car!) set-x!)
+          ((eq? m 'set-cdr!) set-y!)
+          (else (error "Undefined operation -- CONS" m))))
+  dispatch)
+
+(define (car z) (z 'car))
+(define (cdr z) (z 'cdr))
+
+(define (set-car! z new-value)
+  ((z 'set-car!) new-value)
+  z)
+
+(define (set-cdr! z new-value)
+  ((z 'set-cdr!) new-value)
+  z)
+
+
+;; EXERCISE 3.20
+;: (define x (cons 1 2))
+;: (define z (cons x x))
+;: (set-car! (cdr z) 17)
+;: (car x)
+
+
+;;;SECTION 3.3.2
+
+(define (front-ptr queue) (car queue))
+(define (rear-ptr queue) (cdr queue))
+(define (set-front-ptr! queue item) (set-car! queue item))
+(define (set-rear-ptr! queue item) (set-cdr! queue item))
+
+(define (empty-queue? queue) (null? (front-ptr queue)))
+(define (make-queue) (cons '() '()))
+
+(define (front-queue queue)
+  (if (empty-queue? queue)
+      (error "FRONT called with an empty queue" queue)
+      (car (front-ptr queue))))
+
+(define (insert-queue! queue item)
+  (let ((new-pair (cons item '())))
+    (cond ((empty-queue? queue)
+           (set-front-ptr! queue new-pair)
+           (set-rear-ptr! queue new-pair)
+           queue)
+          (else
+           (set-cdr! (rear-ptr queue) new-pair)
+           (set-rear-ptr! queue new-pair)
+           queue)))) 
+
+(define (delete-queue! queue)
+  (cond ((empty-queue? queue)
+         (error "DELETE! called with an empty queue" queue))
+        (else
+         (set-front-ptr! queue (cdr (front-ptr queue)))
+         queue))) 
+
+
+;; EXERCISE 3.21
+;: (define q1 (make-queue))
+;: (insert-queue! q1 'a)
+;: (insert-queue! q1 'b)
+;: (delete-queue! q1)
+;: (delete-queue! q1)
+
+
+;;;SECTION 3.3.3
+
+(define (lookup key table)
+  (let ((record (assoc key (cdr table))))
+    (if record
+        (cdr record)
+        false)))
+
+(define (assoc key records)
+  (cond ((null? records) false)
+        ((equal? key (caar records)) (car records))
+        (else (assoc key (cdr records)))))
+
+(define (insert! key value table)
+  (let ((record (assoc key (cdr table))))
+    (if record
+        (set-cdr! record value)
+        (set-cdr! table
+                  (cons (cons key value) (cdr table)))))
+  'ok)
+
+(define (make-table)
+  (list '*table*))
+
+;; two-dimensional
+(define (lookup key-1 key-2 table)
+  (let ((subtable (assoc key-1 (cdr table))))
+    (if subtable
+        (let ((record (assoc key-2 (cdr subtable))))
+          (if record
+              (cdr record)
+              false))
+        false)))
+
+(define (insert! key-1 key-2 value table)
+  (let ((subtable (assoc key-1 (cdr table))))
+    (if subtable
+        (let ((record (assoc key-2 (cdr subtable))))
+          (if record
+              (set-cdr! record value)
+              (set-cdr! subtable
+                        (cons (cons key-2 value)
+                              (cdr subtable)))))
+        (set-cdr! table
+                  (cons (list key-1
+                              (cons key-2 value))
+                        (cdr table)))))
+  'ok)
+
+;; local tables
+(define (make-table)
+  (let ((local-table (list '*table*)))
+    (define (lookup key-1 key-2)
+      (let ((subtable (assoc key-1 (cdr local-table))))
+        (if subtable
+            (let ((record (assoc key-2 (cdr subtable))))
+              (if record
+                  (cdr record)
+                  false))
+            false)))
+    (define (insert! key-1 key-2 value)
+      (let ((subtable (assoc key-1 (cdr local-table))))
+        (if subtable
+            (let ((record (assoc key-2 (cdr subtable))))
+              (if record
+                  (set-cdr! record value)
+                  (set-cdr! subtable
+                            (cons (cons key-2 value)
+                                  (cdr subtable)))))
+            (set-cdr! local-table
+                      (cons (list key-1
+                                  (cons key-2 value))
+                            (cdr local-table)))))
+      'ok)    
+    (define (dispatch m)
+      (cond ((eq? m 'lookup-proc) lookup)
+            ((eq? m 'insert-proc!) insert!)
+            (else (error "Unknown operation -- TABLE" m))))
+    dispatch))
+
+(define operation-table (make-table))
+(define get (operation-table 'lookup-proc))
+(define put (operation-table 'insert-proc!))
+
+
+;; EXERCISE 3.27
+(define (fib n)
+  (cond ((= n 0) 0)
+        ((= n 1) 1)
+        (else (+ (fib (- n 1))
+                 (fib (- n 2))))))
+
+(define (memoize f)
+  (let ((table (make-table)))
+    (lambda (x)
+      (let ((previously-computed-result (lookup x table)))
+        (or previously-computed-result
+            (let ((result (f x)))
+              (insert! x result table)
+              result))))))
+
+(define memo-fib
+  (memoize (lambda (n)
+             (cond ((= n 0) 0)
+                   ((= n 1) 1)
+                   (else (+ (memo-fib (- n 1))
+                            (memo-fib (- n 2))))))))
+
+;;;SECTION 3.3.4
+
+;: (define a (make-wire))
+;: (define b (make-wire))
+;: (define c (make-wire))
+;: (define d (make-wire))
+;: (define e (make-wire))
+;: (define s (make-wire))
+;: 
+;: (or-gate a b d)
+;: (and-gate a b c)
+;: (inverter c e)
+;: (and-gate d e s)
+
+
+;;NB. To use half-adder, need or-gate from exercise 3.28
+(define (half-adder a b s c)
+  (let ((d (make-wire)) (e (make-wire)))
+    (or-gate a b d)
+    (and-gate a b c)
+    (inverter c e)
+    (and-gate d e s)
+    'ok))
+
+(define (full-adder a b c-in sum c-out)
+  (let ((s (make-wire))
+        (c1 (make-wire))
+        (c2 (make-wire)))
+    (half-adder b c-in s c1)
+    (half-adder a s sum c2)
+    (or-gate c1 c2 c-out)
+    'ok))
+
+(define (inverter input output)
+  (define (invert-input)
+    (let ((new-value (logical-not (get-signal input))))
+      (after-delay inverter-delay
+                   (lambda ()
+                     (set-signal! output new-value)))))
+  (add-action! input invert-input)
+  'ok)
+
+(define (logical-not s)
+  (cond ((= s 0) 1)
+        ((= s 1) 0)
+        (else (error "Invalid signal" s))))
+
+;; *following uses logical-and -- see ch3support.scm
+
+(define (and-gate a1 a2 output)
+  (define (and-action-procedure)
+    (let ((new-value
+           (logical-and (get-signal a1) (get-signal a2))))
+      (after-delay and-gate-delay
+                   (lambda ()
+                     (set-signal! output new-value)))))
+  (add-action! a1 and-action-procedure)
+  (add-action! a2 and-action-procedure)
+  'ok)
+
+
+(define (make-wire)
+  (let ((signal-value 0) (action-procedures '()))
+    (define (set-my-signal! new-value)
+      (if (not (= signal-value new-value))
+          (begin (set! signal-value new-value)
+                 (call-each action-procedures))
+          'done))
+    (define (accept-action-procedure! proc)
+      (set! action-procedures (cons proc action-procedures))
+      (proc))
+    (define (dispatch m)
+      (cond ((eq? m 'get-signal) signal-value)
+            ((eq? m 'set-signal!) set-my-signal!)
+            ((eq? m 'add-action!) accept-action-procedure!)
+            (else (error "Unknown operation -- WIRE" m))))
+    dispatch))
+
+(define (call-each procedures)
+  (if (null? procedures)
+      'done
+      (begin
+        ((car procedures))
+        (call-each (cdr procedures)))))
+
+(define (get-signal wire)
+  (wire 'get-signal))
+
+(define (set-signal! wire new-value)
+  ((wire 'set-signal!) new-value))
+
+(define (add-action! wire action-procedure)
+  ((wire 'add-action!) action-procedure))
+
+(define (after-delay delay action)
+  (add-to-agenda! (+ delay (current-time the-agenda))
+                  action
+                  the-agenda))
+
+(define (propagate)
+  (if (empty-agenda? the-agenda)
+      'done
+      (let ((first-item (first-agenda-item the-agenda)))
+        (first-item)
+        (remove-first-agenda-item! the-agenda)
+        (propagate))))
+
+(define (probe name wire)
+  (add-action! wire
+               (lambda ()        
+                 (newline)
+                 (display name)
+                 (display " ")
+                 (display (current-time the-agenda))
+                 (display "  New-value = ")
+                 (display (get-signal wire)))))
+
+;;; Sample simulation
+
+;: (define the-agenda (make-agenda))
+;: (define inverter-delay 2)
+;: (define and-gate-delay 3)
+;: (define or-gate-delay 5)
+;: 
+;: (define input-1 (make-wire))
+;: (define input-2 (make-wire))
+;: (define sum (make-wire))
+;: (define carry (make-wire))
+;: 
+;: (probe 'sum sum)
+;: (probe 'carry carry)
+;: 
+;: (half-adder input-1 input-2 sum carry)
+;: (set-signal! input-1 1)
+;: (propagate)
+;: 
+;: (set-signal! input-2 1)
+;: (propagate)
+
+
+;; EXERCISE 3.31
+;: (define (accept-action-procedure! proc)
+;:   (set! action-procedures (cons proc action-procedures)))
+
+
+;;;Implementing agenda
+
+(define (make-time-segment time queue)
+  (cons time queue))
+(define (segment-time s) (car s))
+(define (segment-queue s) (cdr s))
+
+(define (make-agenda) (list 0))
+
+(define (current-time agenda) (car agenda))
+(define (set-current-time! agenda time)
+  (set-car! agenda time))
+
+(define (segments agenda) (cdr agenda))
+(define (set-segments! agenda segments)
+  (set-cdr! agenda segments))
+(define (first-segment agenda) (car (segments agenda)))
+(define (rest-segments agenda) (cdr (segments agenda)))
+
+(define (empty-agenda? agenda)
+  (null? (segments agenda)))
+
+(define (add-to-agenda! time action agenda)
+  (define (belongs-before? segments)
+    (or (null? segments)
+        (< time (segment-time (car segments)))))
+  (define (make-new-time-segment time action)
+    (let ((q (make-queue)))
+      (insert-queue! q action)
+      (make-time-segment time q)))
+  (define (add-to-segments! segments)
+    (if (= (segment-time (car segments)) time)
+        (insert-queue! (segment-queue (car segments))
+                       action)
+        (let ((rest (cdr segments)))
+          (if (belongs-before? rest)
+              (set-cdr!
+               segments
+               (cons (make-new-time-segment time action)
+                     (cdr segments)))
+              (add-to-segments! rest)))))
+  (let ((segments (segments agenda)))
+    (if (belongs-before? segments)
+        (set-segments!
+         agenda
+         (cons (make-new-time-segment time action)
+               segments))
+        (add-to-segments! segments))))
+
+(define (remove-first-agenda-item! agenda)
+  (let ((q (segment-queue (first-segment agenda))))
+    (delete-queue! q)
+    (if (empty-queue? q)
+        (set-segments! agenda (rest-segments agenda)))))
+
+(define (first-agenda-item agenda)
+  (if (empty-agenda? agenda)
+      (error "Agenda is empty -- FIRST-AGENDA-ITEM")
+      (let ((first-seg (first-segment agenda)))
+        (set-current-time! agenda (segment-time first-seg))
+        (front-queue (segment-queue first-seg)))))
+
+
+;;;SECTION 3.3.5
+
+;: (define C (make-connector))
+;: (define F (make-connector))
+;: (celsius-fahrenheit-converter C F)
+
+(define (celsius-fahrenheit-converter c f)
+  (let ((u (make-connector))
+        (v (make-connector))
+        (w (make-connector))
+        (x (make-connector))
+        (y (make-connector)))
+    (multiplier c w u)
+    (multiplier v x u)
+    (adder v y f)
+    (constant 9 w)
+    (constant 5 x)
+    (constant 32 y)
+    'ok))
+
+;: (probe "Celsius temp" C)
+;: (probe "Fahrenheit temp" F)
+;: (set-value! C 25 'user)
+;: (set-value! F 212 'user)
+;: (forget-value! C 'user)
+;: (set-value! F 212 'user)
+
+
+(define (adder a1 a2 sum)
+  (define (process-new-value)
+    (cond ((and (has-value? a1) (has-value? a2))
+           (set-value! sum
+                       (+ (get-value a1) (get-value a2))
+                       me))
+          ((and (has-value? a1) (has-value? sum))
+           (set-value! a2
+                       (- (get-value sum) (get-value a1))
+                       me))
+          ((and (has-value? a2) (has-value? sum))
+           (set-value! a1
+                       (- (get-value sum) (get-value a2))
+                       me))))
+  (define (process-forget-value)
+    (forget-value! sum me)
+    (forget-value! a1 me)
+    (forget-value! a2 me)
+    (process-new-value))
+  (define (me request)
+    (cond ((eq? request 'I-have-a-value)  
+           (process-new-value))
+          ((eq? request 'I-lost-my-value) 
+           (process-forget-value))
+          (else 
+           (error "Unknown request -- ADDER" request))))
+  (connect a1 me)
+  (connect a2 me)
+  (connect sum me)
+  me)
+
+(define (inform-about-value constraint)
+  (constraint 'I-have-a-value))
+
+(define (inform-about-no-value constraint)
+  (constraint 'I-lost-my-value))
+
+(define (multiplier m1 m2 product)
+  (define (process-new-value)
+    (cond ((or (and (has-value? m1) (= (get-value m1) 0))
+               (and (has-value? m2) (= (get-value m2) 0)))
+           (set-value! product 0 me))
+          ((and (has-value? m1) (has-value? m2))
+           (set-value! product
+                       (* (get-value m1) (get-value m2))
+                       me))
+          ((and (has-value? product) (has-value? m1))
+           (set-value! m2
+                       (/ (get-value product) (get-value m1))
+                       me))
+          ((and (has-value? product) (has-value? m2))
+           (set-value! m1
+                       (/ (get-value product) (get-value m2))
+                       me))))
+  (define (process-forget-value)
+    (forget-value! product me)
+    (forget-value! m1 me)
+    (forget-value! m2 me)
+    (process-new-value))
+  (define (me request)
+    (cond ((eq? request 'I-have-a-value)
+           (process-new-value))
+          ((eq? request 'I-lost-my-value)
+           (process-forget-value))
+          (else
+           (error "Unknown request -- MULTIPLIER" request))))
+  (connect m1 me)
+  (connect m2 me)
+  (connect product me)
+  me)
+
+(define (constant value connector)
+  (define (me request)
+    (error "Unknown request -- CONSTANT" request))
+  (connect connector me)
+  (set-value! connector value me)
+  me)
+
+(define (probe name connector)
+  (define (print-probe value)
+    (newline)
+    (display "Probe: ")
+    (display name)
+    (display " = ")
+    (display value))
+  (define (process-new-value)
+    (print-probe (get-value connector)))
+  (define (process-forget-value)
+    (print-probe "?"))
+  (define (me request)
+    (cond ((eq? request 'I-have-a-value)
+           (process-new-value))
+          ((eq? request 'I-lost-my-value)
+           (process-forget-value))
+          (else
+           (error "Unknown request -- PROBE" request))))
+  (connect connector me)
+  me)
+
+(define (make-connector)
+  (let ((value false) (informant false) (constraints '()))
+    (define (set-my-value newval setter)
+      (cond ((not (has-value? me))
+             (set! value newval)
+             (set! informant setter)
+             (for-each-except setter
+                              inform-about-value
+                              constraints))
+            ((not (= value newval))
+             (error "Contradiction" (list value newval)))
+            (else 'ignored)))
+    (define (forget-my-value retractor)
+      (if (eq? retractor informant)
+          (begin (set! informant false)
+                 (for-each-except retractor
+                                  inform-about-no-value
+                                  constraints))
+          'ignored))
+    (define (connect new-constraint)
+      (if (not (memq new-constraint constraints))
+          (set! constraints 
+                (cons new-constraint constraints)))
+      (if (has-value? me)
+          (inform-about-value new-constraint))
+      'done)
+    (define (me request)
+      (cond ((eq? request 'has-value?)
+             (if informant true false))
+            ((eq? request 'value) value)
+            ((eq? request 'set-value!) set-my-value)
+            ((eq? request 'forget) forget-my-value)
+            ((eq? request 'connect) connect)
+            (else (error "Unknown operation -- CONNECTOR"
+                         request))))
+    me))
+
+(define (for-each-except exception procedure list)
+  (define (loop items)
+    (cond ((null? items) 'done)
+          ((eq? (car items) exception) (loop (cdr items)))
+          (else (procedure (car items))
+                (loop (cdr items)))))
+  (loop list))
+
+(define (has-value? connector)
+  (connector 'has-value?))
+
+(define (get-value connector)
+  (connector 'value))
+
+(define (set-value! connector new-value informant)
+  ((connector 'set-value!) new-value informant))
+
+(define (forget-value! connector retractor)
+  ((connector 'forget) retractor))
+
+(define (connect connector new-constraint)
+  ((connector 'connect) new-constraint))
+
+
+;; EXERCISE 3.34
+
+(define (squarer a b)
+  (multiplier a a b))
+
+
+
+;; EXERCISE 3.36
+;: (define a (make-connector))
+;: (define b (make-connector))
+;: (set-value! a 10 'user)
+
+
+;; EXERCISE 3.37
+
+(define (celsius-fahrenheit-converter x)
+  (c+ (c* (c/ (cv 9) (cv 5))
+          x)
+      (cv 32)))
+
+;: (define C (make-connector))
+;: (define F (celsius-fahrenheit-converter C))
+
+(define (c+ x y)
+  (let ((z (make-connector)))
+    (adder x y z)
+    z))
+
+
+;;;SECTION 3.4
+;;;**Need parallel-execute, available for MIT Scheme
+
+;;;SECTION 3.4.1
+
+(define (withdraw amount)
+  (if (>= balance amount)
+      (begin (set! balance (- balance amount))
+             balance)
+      "Insufficient funds"))
+
+
+;; EXERCISE 3.38
+;: (set! balance (+ balance 10))
+;: (set! balance (- balance 20))
+;: (set! balance (- balance (/ balance 2)))
+
+
+;;;SECTION 3.4.2
+
+;: (define x 10)
+;: (parallel-execute (lambda () (set! x (* x x)))
+;:                   (lambda () (set! x (+ x 1))))
+
+;: (define x 10)
+;: (define s (make-serializer))
+;: (parallel-execute (s (lambda () (set! x (* x x))))
+;:                   (s (lambda () (set! x (+ x 1)))))
+
+
+(define (make-account balance)
+  (define (withdraw amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (let ((protected (make-serializer)))
+    (define (dispatch m)
+      (cond ((eq? m 'withdraw) (protected withdraw))
+            ((eq? m 'deposit) (protected deposit))
+            ((eq? m 'balance) balance)
+            (else (error "Unknown request -- MAKE-ACCOUNT"
+                         m))))
+    dispatch))
+
+
+;; EXERCISE 3.39
+
+;: (define x 10)
+;: (define s (make-serializer))
+;: (parallel-execute (lambda () (set! x ((s (lambda () (* x x))))))
+;:                   (s (lambda () (set! x (+ x 1)))))
+
+
+;; EXERCISE 3.40
+
+;: (define x 10)
+;: (parallel-execute (lambda () (set! x (* x x)))
+;:                   (lambda () (set! x (* x x x))))
+;: 
+;: 
+;: (define x 10)
+;: (define s (make-serializer))
+;: (parallel-execute (s (lambda () (set! x (* x x))))
+;:                   (s (lambda () (set! x (* x x x)))))
+
+
+;; EXERCISE 3.41
+
+(define (make-account balance)
+  (define (withdraw amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (let ((protected (make-serializer)))
+    (define (dispatch m)
+      (cond ((eq? m 'withdraw) (protected withdraw))
+            ((eq? m 'deposit) (protected deposit))
+            ((eq? m 'balance)
+             ((protected (lambda () balance))))
+            (else (error "Unknown request -- MAKE-ACCOUNT"
+                         m))))
+    dispatch))
+
+;; EXERCISE 3.42
+
+(define (make-account balance)
+  (define (withdraw amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (let ((protected (make-serializer)))
+    (let ((protected-withdraw (protected withdraw))
+	  (protected-deposit (protected deposit)))
+      (define (dispatch m)
+	(cond ((eq? m 'withdraw) protected-withdraw)
+	      ((eq? m 'deposit) protected-deposit)
+	      ((eq? m 'balance) balance)
+	      (else (error "Unknown request -- MAKE-ACCOUNT"
+			   m))))
+      dispatch)))
+
+;;;Multiple shared resources
+
+(define (exchange account1 account2)
+  (let ((difference (- (account1 'balance)
+                       (account2 'balance))))
+    ((account1 'withdraw) difference)
+    ((account2 'deposit) difference)))
+
+(define (make-account-and-serializer balance)
+  (define (withdraw amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (let ((balance-serializer (make-serializer)))
+    (define (dispatch m)
+      (cond ((eq? m 'withdraw) withdraw)
+            ((eq? m 'deposit) deposit)
+            ((eq? m 'balance) balance)
+            ((eq? m 'serializer) balance-serializer)
+            (else (error "Unknown request -- MAKE-ACCOUNT"
+                         m))))
+    dispatch))
+
+
+(define (deposit account amount)
+  (let ((s (account 'serializer))
+        (d (account 'deposit)))
+    ((s d) amount)))
+
+(define (serialized-exchange account1 account2)
+  (let ((serializer1 (account1 'serializer))
+        (serializer2 (account2 'serializer)))
+    ((serializer1 (serializer2 exchange))
+     account1
+     account2)))
+
+
+;; EXERCISE 3.44
+
+(define (transfer from-account to-account amount)
+  ((from-account 'withdraw) amount)
+  ((to-account 'deposit) amount))
+
+
+;; EXERCISE 3.45
+
+(define (make-account-and-serializer balance)
+  (define (withdraw amount)
+    (if (>= balance amount)
+        (begin (set! balance (- balance amount))
+               balance)
+        "Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (let ((balance-serializer (make-serializer)))
+    (define (dispatch m)
+      (cond ((eq? m 'withdraw) (balance-serializer withdraw))
+            ((eq? m 'deposit) (balance-serializer deposit))
+            ((eq? m 'balance) balance)
+            ((eq? m 'serializer) balance-serializer)
+            (else (error "Unknown request -- MAKE-ACCOUNT"
+                         m))))
+    dispatch))
+
+(define (deposit account amount)
+ ((account 'deposit) amount))
+
+
+;;;Implementing serializers
+
+(define (make-serializer)
+  (let ((mutex (make-mutex)))
+    (lambda (p)
+      (define (serialized-p . args)
+        (mutex 'acquire)
+        (let ((val (apply p args)))
+          (mutex 'release)
+          val))
+      serialized-p)))
+
+(define (make-mutex)
+  (let ((cell (list false)))            
+    (define (the-mutex m)
+      (cond ((eq? m 'acquire)
+             (if (test-and-set! cell)
+                 (the-mutex 'acquire)))
+            ((eq? m 'release) (clear! cell))))
+    the-mutex))
+
+(define (clear! cell)
+  (set-car! cell false))
+
+(define (test-and-set! cell)
+  (if (car cell)
+      true
+      (begin (set-car! cell true)
+             false)))
+
+;;from footnote -- MIT Scheme
+(define (test-and-set! cell)
+  (without-interrupts
+   (lambda ()
+     (if (car cell)
+         true
+         (begin (set-car! cell true)
+                false)))))
+
+;;;SECTION 3.5
+
+;;;SECTION 3.5.1
+
+(define (sum-primes a b)
+  (define (iter count accum)
+    (cond ((> count b) accum)
+          ((prime? count) (iter (+ count 1) (+ count accum)))
+          (else (iter (+ count 1) accum))))
+  (iter a 0))
+
+
+(define (sum-primes a b)
+  (accumulate +
+              0
+              (filter prime? (enumerate-interval a b))))
+
+;: (car (cdr (filter prime?
+;:                   (enumerate-interval 10000 1000000))))
+
+(define (stream-ref s n)
+  (if (= n 0)
+      (stream-car s)
+      (stream-ref (stream-cdr s) (- n 1))))
+
+(define (stream-map proc s)
+  (if (stream-null? s)
+      the-empty-stream
+      (cons-stream (proc (stream-car s))
+                   (stream-map proc (stream-cdr s)))))
+
+(define (stream-for-each proc s)
+  (if (stream-null? s)
+      'done
+      (begin (proc (stream-car s))
+             (stream-for-each proc (stream-cdr s)))))
+
+(define (display-stream s)
+  (stream-for-each display-line s))
+
+(define (display-line x)
+  (newline)
+  (display x))
+
+
+
+;; stream-car and stream-cdr would normally be built into
+;;  the stream implementation
+;: (define (stream-car stream) (car stream))
+;: (define (stream-cdr stream) (force (cdr stream)))
+
+;: (stream-car
+;:  (stream-cdr
+;:   (stream-filter prime?
+;:                  (stream-enumerate-interval 10000 1000000))))
+
+(define (stream-enumerate-interval low high)
+  (if (> low high)
+      the-empty-stream
+      (cons-stream
+       low
+       (stream-enumerate-interval (+ low 1) high))))
+
+(define (stream-filter pred stream)
+  (cond ((stream-null? stream) the-empty-stream)
+        ((pred (stream-car stream))
+         (cons-stream (stream-car stream)
+                      (stream-filter pred
+                                     (stream-cdr stream))))
+        (else (stream-filter pred (stream-cdr stream)))))
+
+
+;; force would normally be built into
+;;  the stream implementation
+;: (define (force delayed-object)
+;:   (delayed-object))
+
+(define (memo-proc proc)
+  (let ((already-run? false) (result false))
+    (lambda ()
+      (if (not already-run?)
+          (begin (set! result (proc))
+                 (set! already-run? true)
+                 result)
+          result))))
+
+
+;; EXERCISE 3.51
+
+(define (show x)
+  (display-line x)
+  x)
+
+;: (define x (stream-map show (stream-enumerate-interval 0 10)))
+;: (stream-ref x 5)
+;: (stream-ref x 7)
+
+
+;; EXERCISE 3.52
+
+(define sum 0)
+
+(define (accum x)
+  (set! sum (+ x sum))
+  sum)
+
+;: (define seq (stream-map accum (stream-enumerate-interval 1 20)))
+;: (define y (stream-filter even? seq))
+;: (define z (stream-filter (lambda (x) (= (remainder x 5) 0))
+;:                          seq))
+
+;: (stream-ref y 7)
+;: (display-stream z)
+
+
+;;;SECTION 3.5.2
+
+(define (integers-starting-from n)
+  (cons-stream n (integers-starting-from (+ n 1))))
+
+(define integers (integers-starting-from 1))
+
+(define (divisible? x y) (= (remainder x y) 0))
+
+(define no-sevens
+  (stream-filter (lambda (x) (not (divisible? x 7)))
+                 integers))
+
+;: (stream-ref no-sevens 100)
+
+(define (fibgen a b)
+  (cons-stream a (fibgen b (+ a b))))
+
+(define fibs (fibgen 0 1))
+
+(define (sieve stream)
+  (cons-stream
+   (stream-car stream)
+   (sieve (stream-filter
+           (lambda (x)
+             (not (divisible? x (stream-car stream))))
+           (stream-cdr stream)))))
+
+(define primes (sieve (integers-starting-from 2)))
+
+;: (stream-ref primes 50)
+
+
+;;;Defining streams implicitly;;;Defining streams implicitly
+
+(define ones (cons-stream 1 ones))
+
+(define (add-streams s1 s2)
+  (stream-map + s1 s2))
+
+(define integers (cons-stream 1 (add-streams ones integers)))
+
+(define fibs
+  (cons-stream 0
+               (cons-stream 1
+                            (add-streams (stream-cdr fibs)
+                                         fibs))))
+
+(define (scale-stream stream factor)
+  (stream-map (lambda (x) (* x factor)) stream))
+
+(define double (cons-stream 1 (scale-stream double 2)))
+
+(define primes
+  (cons-stream
+   2
+   (stream-filter prime? (integers-starting-from 3))))
+
+(define (prime? n)
+  (define (iter ps)
+    (cond ((> (square (stream-car ps)) n) true)
+          ((divisible? n (stream-car ps)) false)
+          (else (iter (stream-cdr ps)))))
+  (iter primes))
+
+
+;; EXERCISE 3.53
+;: (define s (cons-stream 1 (add-streams s s)))
+
+
+;; EXERCISE 3.56
+(define (merge s1 s2)
+  (cond ((stream-null? s1) s2)
+        ((stream-null? s2) s1)
+        (else
+         (let ((s1car (stream-car s1))
+               (s2car (stream-car s2)))
+           (cond ((< s1car s2car)
+                  (cons-stream s1car (merge (stream-cdr s1) s2)))
+                 ((> s1car s2car)
+                  (cons-stream s2car (merge s1 (stream-cdr s2))))
+                 (else
+                  (cons-stream s1car
+                               (merge (stream-cdr s1)
+                                      (stream-cdr s2)))))))))
+
+
+;; EXERCISE 3.58
+(define (expand num den radix)
+  (cons-stream
+   (quotient (* num radix) den)
+   (expand (remainder (* num radix) den) den radix)))
+
+
+;; EXERCISE 3.59
+;: (define exp-series
+;:   (cons-stream 1 (integrate-series exp-series)))
+
+
+;;;SECTION 3.5.3
+
+(define (sqrt-improve guess x)
+  (average guess (/ x guess)))
+
+
+(define (sqrt-stream x)
+  (define guesses
+    (cons-stream 1.0
+                 (stream-map (lambda (guess)
+                               (sqrt-improve guess x))
+                             guesses)))
+  guesses)
+
+;: (display-stream (sqrt-stream 2))
+
+
+(define (pi-summands n)
+  (cons-stream (/ 1.0 n)
+               (stream-map - (pi-summands (+ n 2)))))
+
+;: (define pi-stream
+;:   (scale-stream (partial-sums (pi-summands 1)) 4))
+
+;: (display-stream pi-stream)
+
+
+(define (euler-transform s)
+  (let ((s0 (stream-ref s 0))
+        (s1 (stream-ref s 1))    
+        (s2 (stream-ref s 2)))
+    (cons-stream (- s2 (/ (square (- s2 s1))
+                          (+ s0 (* -2 s1) s2)))
+                 (euler-transform (stream-cdr s)))))
+
+;: (display-stream (euler-transform pi-stream))
+
+
+(define (make-tableau transform s)
+  (cons-stream s
+               (make-tableau transform
+                             (transform s))))
+
+(define (accelerated-sequence transform s)
+  (stream-map stream-car
+              (make-tableau transform s)))
+
+;: (display-stream (accelerated-sequence euler-transform
+;:                                       pi-stream))
+
+
+;; EXERCISE 3.63
+(define (sqrt-stream x)
+  (cons-stream 1.0
+               (stream-map (lambda (guess)
+                             (sqrt-improve guess x))
+                           (sqrt-stream x))))
+
+;; EXERCISE 3.64
+(define (sqrt x tolerance)
+  (stream-limit (sqrt-stream x) tolerance))
+
+
+;;; Infinite streams of pairs
+
+;: (stream-filter (lambda (pair)
+;:                  (prime? (+ (car pair) (cadr pair))))
+;:                int-pairs)
+
+(define (stream-append s1 s2)
+  (if (stream-null? s1)
+      s2
+      (cons-stream (stream-car s1)
+                   (stream-append (stream-cdr s1) s2))))
+
+
+;: (pairs integers integers)
+
+
+(define (interleave s1 s2)
+  (if (stream-null? s1)
+      s2
+      (cons-stream (stream-car s1)
+                   (interleave s2 (stream-cdr s1)))))
+
+(define (pairs s t)
+  (cons-stream
+   (list (stream-car s) (stream-car t))
+   (interleave
+    (stream-map (lambda (x) (list (stream-car s) x))
+                (stream-cdr t))
+    (pairs (stream-cdr s) (stream-cdr t)))))
+
+
+;; EXERCISE 3.68
+
+(define (pairs s t)
+  (interleave
+   (stream-map (lambda (x) (list (stream-car s) x))
+               t)
+   (pairs (stream-cdr s) (stream-cdr t))))
+
+
+;;; Streams as signals
+
+(define (integral integrand initial-value dt)
+  (define int
+    (cons-stream initial-value
+                 (add-streams (scale-stream integrand dt)
+                              int)))
+  int)
+
+
+;; EXERCISE 3.74
+
+(define (make-zero-crossings input-stream last-value)
+  (cons-stream
+   (sign-change-detector (stream-car input-stream) last-value)
+   (make-zero-crossings (stream-cdr input-stream)
+                        (stream-car input-stream))))
+
+;: (define zero-crossings (make-zero-crossings sense-data 0))
+
+
+
+;; EXERCISE 3.75
+
+(define (make-zero-crossings input-stream last-value)
+  (let ((avpt (/ (+ (stream-car input-stream) last-value) 2)))
+    (cons-stream (sign-change-detector avpt last-value)
+                 (make-zero-crossings (stream-cdr input-stream)
+                                      avpt))))
+
+
+;;;SECTION 3.5.4
+
+(define (solve f y0 dt)
+  (define y (integral dy y0 dt))
+  (define dy (stream-map f y))
+  y)
+
+(define (integral delayed-integrand initial-value dt)
+  (define int
+    (cons-stream initial-value
+                 (let ((integrand (force delayed-integrand)))
+                   (add-streams (scale-stream integrand dt)
+                                int))))
+  int)
+
+(define (solve f y0 dt)
+  (define y (integral (delay dy) y0 dt))
+  (define dy (stream-map f y))
+  y)
+
+
+;: (stream-ref (solve (lambda (y) y) 1 0.001) 1000)
+
+
+;; EXERCISE 3.77
+
+(define (integral integrand initial-value dt)
+  (cons-stream initial-value
+               (if (stream-null? integrand)
+                   the-empty-stream
+                   (integral (stream-cdr integrand)
+                             (+ (* dt (stream-car integrand))
+                                initial-value)
+                             dt))))
+
+;;;SECTION 3.5.5
+
+;; same as in section 3.1.2
+(define rand
+  (let ((x random-init))
+    (lambda ()
+      (set! x (rand-update x))
+      x)))
+
+
+(define random-numbers
+  (cons-stream random-init
+               (stream-map rand-update random-numbers)))
+
+
+;: (define cesaro-stream
+;:   (map-successive-pairs (lambda (r1 r2) (= (gcd r1 r2) 1))
+;:                         random-numbers))
+
+(define (map-successive-pairs f s)
+  (cons-stream
+   (f (stream-car s) (stream-car (stream-cdr s)))
+   (map-successive-pairs f (stream-cdr (stream-cdr s)))))
+
+
+(define (monte-carlo experiment-stream passed failed)
+  (define (next passed failed)
+    (cons-stream
+     (/ passed (+ passed failed))
+     (monte-carlo
+      (stream-cdr experiment-stream) passed failed)))
+  (if (stream-car experiment-stream)
+      (next (+ passed 1) failed)
+      (next passed (+ failed 1))))
+
+;: (define pi
+;:   (stream-map (lambda (p) (sqrt (/ 6 p)))
+;:               (monte-carlo cesaro-stream 0 0)))
+
+
+;; same as in section 3.1.3
+(define (make-simplified-withdraw balance)
+  (lambda (amount)
+    (set! balance (- balance amount))
+    balance))
+
+(define (stream-withdraw balance amount-stream)
+  (cons-stream
+   balance
+   (stream-withdraw (- balance (stream-car amount-stream))
+                    (stream-cdr amount-stream))))
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/concurrent.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/concurrent.scm
new file mode 100644
index 0000000..b0014fc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/concurrent.scm
@@ -0,0 +1,245 @@
+;; Implementation of parallel-execute using call/cc.
+;;
+;; By Ben Rudiak-Gould, 10/2002.
+;;
+;; Requires STk (for "procedure-body" and first-class environments).
+
+
+(define call/cc call-with-current-continuation)
+
+
+(define (parallel-execute . thunks)
+  (apply run-concurrently-with-env
+         random
+         (map (lambda (thunk)
+                (cons (list (uncode (procedure-body thunk)))
+		      (make-virtual-env (procedure-environment thunk)) ))
+              thunks ))
+  'okay )
+
+
+(define (run-concurrently select . exprs)
+  (apply run-concurrently-with-env
+	 select
+	 (map (lambda (x)
+		(cons x (make-virtual-env (global-environment))) )
+	      exprs )))
+
+
+(define (run-concurrently-with-env select . exprs-with-envs)
+  (let ((threads
+	 (map (lambda (exp-env)
+		(list (call/cc
+		       (lambda (cont)
+			 (let ((scheduler (call/cc cont)))
+			   (scheduler (myeval (car exp-env)
+					      (cdr exp-env)
+					      scheduler )))))))
+	      exprs-with-envs )))
+    (let loop ()
+      (let ((active-threads
+             (filter (lambda (x) (continuation? (car x))) threads) ))
+        (if (null? active-threads)
+            (map car threads)
+            (let ((active (list-ref active-threads
+                                    (select (length active-threads)) )))
+              (set-car! active (call/cc (car active)))
+              (loop) ))))))
+
+
+(define (make-virtual-env real-env)
+  (cons
+   `((quote    **macro** ,macro-quote)
+     (lambda   **macro** ,macro-lambda)
+     (let      **macro** ,macro-let)
+     (set!     **macro** ,macro-set!)
+     (define   **macro** ,macro-define)
+     (if       **macro** ,macro-if)
+     (cond     **macro** ,macro-cond)
+     (and      **macro** ,macro-and)
+     (or       **macro** ,macro-or)
+     (set-car! **prim**  ,prim-set-car!)
+     (set-cdr! **prim**  ,prim-set-cdr!)
+     (begin    **prim**  ,prim-begin)
+     (test-and-set! **prim** ,prim-test-and-set!) )
+   real-env ))
+
+
+(define (env-lookup-raw sym env scheduler)
+  (call/cc scheduler)
+  (let ((virtual (assq sym (car env))))
+    (if virtual
+        (cdr virtual)
+        (eval sym (cdr env)) )))
+
+
+(define (env-lookup sym env scheduler)
+  (let* ((val (env-lookup-raw sym env scheduler))
+         (proc-body (procedure-body val)) )
+    (if (and proc-body (not (eq? (cadr proc-body) '**args**)))
+        (myeval (uncode proc-body)
+                (make-virtual-env (procedure-environment val))
+                scheduler )
+        val )))
+
+
+(define (env-set! sym val env scheduler)
+  (call/cc scheduler)
+  (let ((virtual (assq sym (car env))))
+    (if virtual
+        (set-cdr! virtual val)
+        (eval `(set! ,sym ',val) (cdr env)) )))
+
+
+(define (env-define! sym val env scheduler)
+  (call/cc scheduler)
+  (set-car! env (cons (cons sym val) (car env))) )
+
+
+(define (get-special-form name env scheduler)
+  (if (symbol? name)
+      (let ((val (env-lookup-raw name env scheduler)))
+        (if (and (pair? val) (eq? (car val) '**macro**))
+            val
+            #f ))
+      #f ))
+
+
+(define (myeval expr env scheduler)
+  (cond ((pair? expr)
+         (let ((special (get-special-form (car expr) env scheduler)))
+           (if special
+               ((cadr special) (cdr expr) env scheduler)
+               (let ((evaluated (eval-seq expr env scheduler)))
+                 (myapply (car evaluated) (cdr evaluated) scheduler) ))))
+        ((symbol? expr)
+	 (env-lookup expr env scheduler) )
+        (else (eval expr)) ))
+
+
+(define (eval-seq exprs env scheduler)
+  (if (null? exprs)
+      '()
+      (let ((val (myeval (car exprs) env scheduler)))
+	(cons val (eval-seq (cdr exprs) env scheduler)) )))
+
+
+(define (myapply func args scheduler)
+  (cond ((procedure? func)
+         (apply func args) )
+        ((and (pair? func) (eq? (car func) '**prim**))
+         ((cadr func) args scheduler) )
+        ((and (pair? func) (eq? (car func) '**macro**))
+         ((cadr func) (map (lambda (x) (list 'quote x)) args) scheduler) )
+        (else (error "apply of non-procedure" func args)) ))
+
+
+(define (make-call-environment params args env)
+  (cons (let loop ((params params) (args args))
+          (cond ((pair? params)
+                 (cons (cons (car params) (car args))
+                       (loop (cdr params) (cdr args)) ))
+                ((null? params)
+                 (car env) )
+                (else (cons (cons params args) (car env))) ))
+        (cdr env) ))
+
+
+(define (macro-lambda args env scheduler)
+  (let ((params (car args))
+        (body (cdr args)) )
+    (lambda **args**
+      (let ((new-env (make-call-environment params **args** env)))
+        (last (map (lambda (x) (myeval x new-env scheduler)) body)) ))))
+
+
+(define (macro-let args env scheduler)
+  (let ((vars (map car (car args)))
+        (vals (map cadr (car args)))
+        (body (cdr args)) )
+    (myeval `((lambda ,vars ,@body) ,@vals) env scheduler) ))
+
+
+(define (macro-define args env scheduler)
+  (if (pair? (car args))
+      (macro-define `(,(caar args) (lambda ,(cdar args) ,@(cdr args)))
+		    env scheduler )
+      (let ((val (myeval (cadr args) env scheduler)))
+        (env-define! (car args) val env scheduler) )))
+
+
+(define (macro-set! args env scheduler)
+  (let ((val (myeval (cadr args) env scheduler)))
+    (env-set! (car args) val env scheduler) ))
+
+
+(define (macro-quote args env scheduler)
+  (car args) )
+
+
+(define (macro-if args env scheduler)
+  (if (myeval (car args) env scheduler)
+      (myeval (cadr args) env scheduler)
+      (if (pair? (cddr args))
+	  (myeval (caddr args) env scheduler)
+	  'okay )))
+
+
+(define (macro-cond args env scheduler)
+  (cond ((null? args) 'okay)
+        ((or (eq? (caar args) 'else)
+             (myeval (caar args) env scheduler) )
+         (car (last-pair (eval-seq (cdar args) env scheduler))) )
+        (else (macro-cond (cdr args) env scheduler)) ))
+
+
+(define (macro-and args env scheduler)
+  (if (null? args)
+      #t
+      (let ((val (myeval (car args) env scheduler)))
+        (if (null? (cdr args))
+            val
+            (and val (macro-and (cdr args) env scheduler)) ))))
+
+
+(define (macro-or args env scheduler)
+  (if (null? args)
+      #f
+      (let ((val (myeval (car args) env scheduler)))
+        (if (null? (cdr args))
+            val
+            (or val (macro-or (cdr args) env scheduler)) ))))
+
+
+(define (prim-set-car! args scheduler)
+  (call/cc scheduler)
+  (apply set-car! args) )
+
+
+(define (prim-set-cdr! args scheduler)
+  (call/cc scheduler)
+  (apply set-cdr! args) )
+
+
+(define (prim-begin args scheduler)
+  (car (last-pair args)) )
+
+
+(define (prim-test-and-set! args scheduler)
+  (call/cc scheduler)
+  (test-and-set! (car args)) )
+
+
+(define (test-and-set! x)
+  (let ((oldval (car x)))
+    (set-car! x #t)
+    oldval ))
+
+
+(define (last-pair lst)
+  (if (null? (cdr lst))
+      lst
+      (last-pair (cdr lst)) ))
+
+
+(load "~cs61a/lib/serial.scm")
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/constraint.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/constraint.scm
new file mode 100644
index 0000000..831827d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/constraint.scm
@@ -0,0 +1,219 @@
+;; Programming with constraints, from section 3.3.5 of Abelson and Sussman.
+
+;; Syntactic interface to contraint and probe objects.
+;; These operations inform them that a value has become defined or undefined;
+;; they have to figure out which value is involved.
+
+(define (inform-about-value constraint)
+  ((constraint 'I-have-a-value)))
+
+(define (inform-about-no-value constraint)
+  ((constraint 'I-lost-my-value)))
+
+;; Types of constraints defined here: adder, multiplier and constant;
+;; also define probe, which is a pseudo-constraint.
+
+(define (adder a1 a2 sum)
+  (define (process-new-value)
+    (cond ((and (has-value? a1) (has-value? a2))
+	   (set-value! sum
+		       (+ (get-value a1) (get-value a2))
+		       me))
+	  ((and (has-value? a1) (has-value? sum))
+	   (set-value! a2
+		       (- (get-value sum) (get-value a1))
+		       me))
+	  ((and (has-value? a2) (has-value? sum))
+	   (set-value! a1
+		       (- (get-value sum) (get-value a2))
+		       me))))
+  (define (process-forget-value)
+    (forget-value! sum me)
+    (forget-value! a1 me)
+    (forget-value! a2 me)
+    (process-new-value))
+
+  (define (me request)
+    (cond ((eq? request 'I-have-a-value)
+	   process-new-value)
+	  ((eq? request 'I-lost-my-value)
+	   process-forget-value)
+	  (else
+	   (error "Unknown request -- ADDER" request))))
+
+  (connect a1 me)
+  (connect a2 me)
+  (connect sum me)
+  me)
+
+(define (multiplier m1 m2 product)
+  (define (process-new-value)
+    (cond ((or (if (has-value? m1) (= (get-value m1) 0) #f)
+	       (if (has-value? m2) (= (get-value m2) 0) #f))
+	   (set-value! product 0 me))
+	  ((and (has-value? m1) (has-value? m2))
+	   (set-value! product
+		       (* (get-value m1) (get-value m2))
+		       me))
+	  ((and (has-value? m1) (has-value? product))
+	   (set-value! m2
+		       (/ (get-value product) (get-value m1))
+		       me))
+	  ((and (has-value? m2) (has-value? product))
+	   (set-value! m1
+		       (/ (get-value product) (get-value m2))
+		       me))))
+  (define (process-forget-value)
+    (forget-value! product me)
+    (forget-value! m1 me)
+    (forget-value! m2 me)
+    (process-new-value))
+
+  (define (me request)
+    (cond ((eq? request 'I-have-a-value)
+	   process-new-value)
+	  ((eq? request 'I-lost-my-value)
+	   process-forget-value)
+	  (else
+	   (error "Unknown request -- MULTIPLIER" request))))
+
+  (connect m1 me)
+  (connect m2 me)
+  (connect product me)
+  me)
+
+(define (constant value connector)
+  (define (me request)
+    (error "Unknown request -- CONSTANT" request))
+  (connect connector me)
+  (set-value! connector value me)
+  me)
+
+(define (probe name connector)
+  (define (process-new-value)
+    (display "Probe: ")
+    (display name)
+    (display " = ")
+    (display (get-value connector))
+    (newline))
+
+  (define (process-forget-value)
+    (display "Probe: ")
+    (display name)
+    (display " = ")
+    (display "?")
+    (newline))
+
+  (define (me request)
+    (cond ((eq? request 'I-have-a-value)
+	   process-new-value)
+	  ((eq? request 'I-lost-my-value)
+	   process-forget-value)
+	  (else
+	   (error "Unknown request -- PROBE" request))))
+  (connect connector me)
+  me)
+
+;; syntactic interface to connector objects
+
+(define (has-value? connector)
+  (connector 'has-value?))
+
+(define (get-value connector)
+  (connector 'value))
+
+(define (forget-value! connector retractor)
+  ((connector 'forget) retractor))
+
+(define (set-value! connector new-value informant)
+  ((connector 'set-value!) new-value informant))
+
+(define (connect connector new-constraint)
+  ((connector 'connect) new-constraint))
+
+
+;; connector object generator.
+
+(define (make-connector)
+  (let ((value #f) (informant #f) (constraints '()))
+
+    (define (set-my-value newval setter)
+      (cond ((not (has-value? me))
+	     (set! value newval)
+	     (set! informant setter)
+	     (for-each-except setter
+			      inform-about-value
+			      constraints))
+	    ((not (= value newval))
+	     (error "Contradiction" (list value newval)))))
+
+    (define (forget-my-value retractor)
+      (if (eq? retractor informant)
+	  (begin (set! informant #f)
+		 (for-each-except retractor
+				  inform-about-no-value
+				  constraints))))
+
+    (define (connect new-constraint)
+      (if (not (memq new-constraint constraints))
+	  (set! constraints
+		(cons new-constraint constraints)))
+      (if (has-value? me)
+	  (inform-about-value new-constraint)))
+
+    (define (me request)
+      (cond ((eq? request 'has-value?)
+	     (not (null? informant)))
+	    ((eq? request 'value) value)
+	    ((eq? request 'set-value!) set-my-value)
+	    ((eq? request 'forget) forget-my-value)
+	    ((eq? request 'connect) connect)
+	    (else (error "Unknown operation -- CONNECTOR" request))))
+    me))
+
+;; Helper procedure for connector:
+;; do the procedure for each element of list EXCEPT the exception.
+;; used to inform connected constraints of value changes
+;; (don't want to inform the source of the change)
+
+(define (for-each-except exception procedure list)
+  (define (loop items)
+    (cond ((null? items) 'done)
+	  ((eq? (car items) exception) (loop (cdr items)))
+	  (else (procedure (car items))
+		(loop (cdr items)))))
+  (loop list))
+
+;; Example application: Centigrade/Fahrenheit converter.
+;; Internal connectors and constraints are stashed in a private environment.
+;; see Ex. 3.37 for a cleaner way to do this.
+
+(define (centigrade-fahrenheit-converter c f)
+  (let ((u (make-connector))
+       (v (make-connector))
+       (w (make-connector))
+       (x (make-connector))
+       (y (make-connector)))
+
+       (multiplier c w u)
+       (multiplier v x u)
+       (adder v y f)
+       (constant 9 w)
+       (constant 5 x)
+       (constant 32 y)))
+
+(define C (make-connector))
+(define F (make-connector))
+(centigrade-fahrenheit-converter C F)
+(probe "centigrade temp" C)
+(probe "Fahrenheit temp" F)
+
+(define (fma-constraint f m a)
+  (multiplier m a f))
+(define force (make-connector))
+(define mass (make-connector))
+(define acceleration (make-connector))
+(fma-constraint force mass acceleration)
+(probe "force" force)
+(probe "mass" mass)
+(probe "acceleration" acceleration)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/huffman.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/huffman.scm
new file mode 100644
index 0000000..728b100
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/huffman.scm
@@ -0,0 +1,61 @@
+(define (make-leaf symbol weight)
+   (list 'leaf symbol weight))
+
+(define (leaf? object)
+   (eq? (car object) 'leaf))
+
+(define (symbol-leaf x) (cadr x))
+
+(define (weight-leaf x) (caddr x))
+
+(define (make-code-tree left right)
+   (list left
+         right
+         (append (symbols left) (symbols right))
+         (+ (weight left) (weight right))))
+
+(define (left-branch tree) (car tree))
+
+(define (right-branch tree) (cadr tree))
+
+(define (symbols tree)
+   (if (leaf? tree)
+       (list (symbol-leaf tree))
+       (caddr tree)))
+
+(define (weight tree)
+   (if (leaf? tree)
+       (weight-leaf tree)
+       (cadddr tree)))
+
+(define (adjoin-set x set)
+   (cond ((null? set) (list x))
+         ((< (weight x) (weight (car set))) (cons x set))
+         (else (cons (car set)
+                     (adjoin-set x (cdr set))))))
+
+(define (make-leaf-set pairs)
+   (if (null? pairs)
+       '()
+       (let ((pair (car pairs)))
+         (adjoin-set (make-leaf (car pair)     ;symbol
+                                (cadr pair))   ;frequency
+                     (make-leaf-set (cdr pairs))))))
+
+(define (decode bits tree)
+  (decode-1 bits tree tree))
+
+(define (decode-1 bits tree current-branch)
+  (if (null? bits)
+      '()
+      (let ((next-branch
+             (choose-branch (car bits) current-branch)))
+        (if (leaf? next-branch)
+            (cons (symbol-leaf next-branch)
+                  (decode-1 (cdr bits) tree tree))
+            (decode-1 (cdr bits) tree next-branch)))))
+
+(define (choose-branch bit branch)
+  (cond ((= bit 0) (left-branch branch))
+        ((= bit 1) (right-branch branch))
+        (else (error "bad bit -- CHOOSE-BRANCH" bit))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=A
new file mode 100644
index 0000000..354ca85
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=A
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lib</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lib</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv-world.scm">adv-world.scm</a>          </td><td align="right">2005-10-22 09:17  </td><td align="right">2.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv.scm">adv.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ambdiff">ambdiff</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ambeval.scm">ambeval.scm</a>            </td><td align="right">2004-04-30 13:15  </td><td align="right">9.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="analyze.scm">analyze.scm</a>            </td><td align="right">2004-04-30 13:16  </td><td align="right">3.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="animal.scm">animal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl-meta.scm">apl-meta.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl.scm">apl.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="berkeley.scmm">berkeley.scmm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 54K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">710 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2008-02-13 19:37  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter1.code">chapter1.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="chapter2.code">chapter2.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 47K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter3.code">chapter3.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 41K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="concurrent.scm">concurrent.scm</a>         </td><td align="right">2003-04-23 11:28  </td><td align="right">6.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="constraint.scm">constraint.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="huffman.scm">huffman.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="labyrinth.scm">labyrinth.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="lazy.scm">lazy.scm</a>               </td><td align="right">2004-04-30 13:15  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo-meta.scm">logo-meta.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo.scm">logo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="maze.scm">maze.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mceval.scm">mceval.scm</a>             </td><td align="right">2001-04-14 20:22  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="old-obj.scm">old-obj.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="picture.scm">picture.scm</a>            </td><td align="right">2000-10-02 11:44  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">207 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prisoner.scm">prisoner.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="pronounce.scm">pronounce.scm</a>          </td><td align="right">2012-12-14 09:39  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="query.scm">query.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ref-man.txt">ref-man.txt</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="resist.scm">resist.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="review">review</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="rps.scm">rps.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scheme1.scm">scheme1.scm</a>            </td><td align="right">2007-10-10 09:09  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scmset">scmset</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right"> 81 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="serial.scm">serial.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">542 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="small-world.scm">small-world.scm</a>        </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tables.scm">tables.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">441 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="test.logo">test.logo</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">576 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tri.l">tri.l</a>                  </td><td align="right">2000-05-30 12:38  </td><td align="right">3.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="turkey">turkey</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="twenty-one.scm">twenty-one.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="vambeval.scm">vambeval.scm</a>           </td><td align="right">2000-12-03 14:33  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=D
new file mode 100644
index 0000000..5b79407
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=D;O=D
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lib</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lib</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="vambeval.scm">vambeval.scm</a>           </td><td align="right">2000-12-03 14:33  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="twenty-one.scm">twenty-one.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="turkey">turkey</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tri.l">tri.l</a>                  </td><td align="right">2000-05-30 12:38  </td><td align="right">3.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="test.logo">test.logo</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">576 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tables.scm">tables.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">441 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="small-world.scm">small-world.scm</a>        </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="serial.scm">serial.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">542 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scmset">scmset</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right"> 81 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scheme1.scm">scheme1.scm</a>            </td><td align="right">2007-10-10 09:09  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="rps.scm">rps.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="review">review</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="resist.scm">resist.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ref-man.txt">ref-man.txt</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="query.scm">query.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="pronounce.scm">pronounce.scm</a>          </td><td align="right">2012-12-14 09:39  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prisoner.scm">prisoner.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">207 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="picture.scm">picture.scm</a>            </td><td align="right">2000-10-02 11:44  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="old-obj.scm">old-obj.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mceval.scm">mceval.scm</a>             </td><td align="right">2001-04-14 20:22  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="maze.scm">maze.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo.scm">logo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo-meta.scm">logo-meta.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="lazy.scm">lazy.scm</a>               </td><td align="right">2004-04-30 13:15  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="labyrinth.scm">labyrinth.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="huffman.scm">huffman.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="constraint.scm">constraint.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="concurrent.scm">concurrent.scm</a>         </td><td align="right">2003-04-23 11:28  </td><td align="right">6.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter3.code">chapter3.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 41K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="chapter2.code">chapter2.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 47K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter1.code">chapter1.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2008-02-13 19:37  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">710 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="berkeley.scmm">berkeley.scmm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 54K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl.scm">apl.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl-meta.scm">apl-meta.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="animal.scm">animal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="analyze.scm">analyze.scm</a>            </td><td align="right">2004-04-30 13:16  </td><td align="right">3.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ambeval.scm">ambeval.scm</a>            </td><td align="right">2004-04-30 13:15  </td><td align="right">9.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ambdiff">ambdiff</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv.scm">adv.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv-world.scm">adv-world.scm</a>          </td><td align="right">2005-10-22 09:17  </td><td align="right">2.9K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=M;O=A
new file mode 100644
index 0000000..31d89eb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=M;O=A
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lib</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lib</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Lib/?C=M;O=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv.scm">adv.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ambdiff">ambdiff</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="animal.scm">animal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl-meta.scm">apl-meta.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl.scm">apl.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter1.code">chapter1.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="chapter2.code">chapter2.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 47K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter3.code">chapter3.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 41K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="constraint.scm">constraint.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="huffman.scm">huffman.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="labyrinth.scm">labyrinth.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo-meta.scm">logo-meta.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo.scm">logo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="maze.scm">maze.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="old-obj.scm">old-obj.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prisoner.scm">prisoner.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="query.scm">query.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ref-man.txt">ref-man.txt</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="resist.scm">resist.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="review">review</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="rps.scm">rps.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="serial.scm">serial.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">542 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="small-world.scm">small-world.scm</a>        </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="turkey">turkey</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="twenty-one.scm">twenty-one.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="berkeley.scmm">berkeley.scmm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 54K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">710 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">207 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scmset">scmset</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right"> 81 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tables.scm">tables.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">441 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="test.logo">test.logo</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">576 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tri.l">tri.l</a>                  </td><td align="right">2000-05-30 12:38  </td><td align="right">3.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="picture.scm">picture.scm</a>            </td><td align="right">2000-10-02 11:44  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="vambeval.scm">vambeval.scm</a>           </td><td align="right">2000-12-03 14:33  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mceval.scm">mceval.scm</a>             </td><td align="right">2001-04-14 20:22  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="concurrent.scm">concurrent.scm</a>         </td><td align="right">2003-04-23 11:28  </td><td align="right">6.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="lazy.scm">lazy.scm</a>               </td><td align="right">2004-04-30 13:15  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ambeval.scm">ambeval.scm</a>            </td><td align="right">2004-04-30 13:15  </td><td align="right">9.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="analyze.scm">analyze.scm</a>            </td><td align="right">2004-04-30 13:16  </td><td align="right">3.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv-world.scm">adv-world.scm</a>          </td><td align="right">2005-10-22 09:17  </td><td align="right">2.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scheme1.scm">scheme1.scm</a>            </td><td align="right">2007-10-10 09:09  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2008-02-13 19:37  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="pronounce.scm">pronounce.scm</a>          </td><td align="right">2012-12-14 09:39  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=A
new file mode 100644
index 0000000..a16ee53
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=A
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lib</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lib</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv-world.scm">adv-world.scm</a>          </td><td align="right">2005-10-22 09:17  </td><td align="right">2.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv.scm">adv.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ambdiff">ambdiff</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ambeval.scm">ambeval.scm</a>            </td><td align="right">2004-04-30 13:15  </td><td align="right">9.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="analyze.scm">analyze.scm</a>            </td><td align="right">2004-04-30 13:16  </td><td align="right">3.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="animal.scm">animal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl-meta.scm">apl-meta.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl.scm">apl.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="berkeley.scmm">berkeley.scmm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 54K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">710 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2008-02-13 19:37  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter1.code">chapter1.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="chapter2.code">chapter2.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 47K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter3.code">chapter3.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 41K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="concurrent.scm">concurrent.scm</a>         </td><td align="right">2003-04-23 11:28  </td><td align="right">6.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="constraint.scm">constraint.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="huffman.scm">huffman.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="labyrinth.scm">labyrinth.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="lazy.scm">lazy.scm</a>               </td><td align="right">2004-04-30 13:15  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo-meta.scm">logo-meta.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo.scm">logo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="maze.scm">maze.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mceval.scm">mceval.scm</a>             </td><td align="right">2001-04-14 20:22  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="old-obj.scm">old-obj.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="picture.scm">picture.scm</a>            </td><td align="right">2000-10-02 11:44  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">207 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prisoner.scm">prisoner.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="pronounce.scm">pronounce.scm</a>          </td><td align="right">2012-12-14 09:39  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="query.scm">query.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ref-man.txt">ref-man.txt</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="resist.scm">resist.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="review">review</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="rps.scm">rps.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scheme1.scm">scheme1.scm</a>            </td><td align="right">2007-10-10 09:09  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scmset">scmset</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right"> 81 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="serial.scm">serial.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">542 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="small-world.scm">small-world.scm</a>        </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tables.scm">tables.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">441 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="test.logo">test.logo</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">576 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tri.l">tri.l</a>                  </td><td align="right">2000-05-30 12:38  </td><td align="right">3.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="turkey">turkey</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="twenty-one.scm">twenty-one.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="vambeval.scm">vambeval.scm</a>           </td><td align="right">2000-12-03 14:33  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=D
new file mode 100644
index 0000000..5b79407
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=N;O=D
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lib</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lib</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="vambeval.scm">vambeval.scm</a>           </td><td align="right">2000-12-03 14:33  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="twenty-one.scm">twenty-one.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="turkey">turkey</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tri.l">tri.l</a>                  </td><td align="right">2000-05-30 12:38  </td><td align="right">3.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="test.logo">test.logo</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">576 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tables.scm">tables.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">441 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="small-world.scm">small-world.scm</a>        </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="serial.scm">serial.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">542 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scmset">scmset</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right"> 81 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scheme1.scm">scheme1.scm</a>            </td><td align="right">2007-10-10 09:09  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="rps.scm">rps.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="review">review</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="resist.scm">resist.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ref-man.txt">ref-man.txt</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="query.scm">query.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="pronounce.scm">pronounce.scm</a>          </td><td align="right">2012-12-14 09:39  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prisoner.scm">prisoner.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">207 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="picture.scm">picture.scm</a>            </td><td align="right">2000-10-02 11:44  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="old-obj.scm">old-obj.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mceval.scm">mceval.scm</a>             </td><td align="right">2001-04-14 20:22  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="maze.scm">maze.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo.scm">logo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo-meta.scm">logo-meta.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="lazy.scm">lazy.scm</a>               </td><td align="right">2004-04-30 13:15  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="labyrinth.scm">labyrinth.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="huffman.scm">huffman.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="constraint.scm">constraint.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="concurrent.scm">concurrent.scm</a>         </td><td align="right">2003-04-23 11:28  </td><td align="right">6.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter3.code">chapter3.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 41K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="chapter2.code">chapter2.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 47K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter1.code">chapter1.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2008-02-13 19:37  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">710 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="berkeley.scmm">berkeley.scmm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 54K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl.scm">apl.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl-meta.scm">apl-meta.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="animal.scm">animal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="analyze.scm">analyze.scm</a>            </td><td align="right">2004-04-30 13:16  </td><td align="right">3.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ambeval.scm">ambeval.scm</a>            </td><td align="right">2004-04-30 13:15  </td><td align="right">9.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ambdiff">ambdiff</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv.scm">adv.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv-world.scm">adv-world.scm</a>          </td><td align="right">2005-10-22 09:17  </td><td align="right">2.9K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=A
new file mode 100644
index 0000000..09372f1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=A
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lib</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lib</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scmset">scmset</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right"> 81 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">207 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tables.scm">tables.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">441 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="serial.scm">serial.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">542 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="test.logo">test.logo</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">576 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">710 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2008-02-13 19:37  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="small-world.scm">small-world.scm</a>        </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="twenty-one.scm">twenty-one.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="huffman.scm">huffman.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="turkey">turkey</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="rps.scm">rps.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="resist.scm">resist.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="maze.scm">maze.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="review">review</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="animal.scm">animal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="labyrinth.scm">labyrinth.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv-world.scm">adv-world.scm</a>          </td><td align="right">2005-10-22 09:17  </td><td align="right">2.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tri.l">tri.l</a>                  </td><td align="right">2000-05-30 12:38  </td><td align="right">3.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="picture.scm">picture.scm</a>            </td><td align="right">2000-10-02 11:44  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="analyze.scm">analyze.scm</a>            </td><td align="right">2004-04-30 13:16  </td><td align="right">3.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prisoner.scm">prisoner.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="pronounce.scm">pronounce.scm</a>          </td><td align="right">2012-12-14 09:39  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="lazy.scm">lazy.scm</a>               </td><td align="right">2004-04-30 13:15  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo.scm">logo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ref-man.txt">ref-man.txt</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="constraint.scm">constraint.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl.scm">apl.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="concurrent.scm">concurrent.scm</a>         </td><td align="right">2003-04-23 11:28  </td><td align="right">6.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv.scm">adv.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl-meta.scm">apl-meta.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scheme1.scm">scheme1.scm</a>            </td><td align="right">2007-10-10 09:09  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="old-obj.scm">old-obj.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ambeval.scm">ambeval.scm</a>            </td><td align="right">2004-04-30 13:15  </td><td align="right">9.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ambdiff">ambdiff</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo-meta.scm">logo-meta.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mceval.scm">mceval.scm</a>             </td><td align="right">2001-04-14 20:22  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="vambeval.scm">vambeval.scm</a>           </td><td align="right">2000-12-03 14:33  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter1.code">chapter1.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="query.scm">query.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter3.code">chapter3.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 41K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="chapter2.code">chapter2.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 47K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="berkeley.scmm">berkeley.scmm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 54K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=D
new file mode 100644
index 0000000..7378e03
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/index.html?C=S;O=D
@@ -0,0 +1,58 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Lib</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Lib</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="berkeley.scmm">berkeley.scmm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 54K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="chapter2.code">chapter2.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 47K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter3.code">chapter3.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 41K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="query.scm">query.scm</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="chapter1.code">chapter1.code</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="vambeval.scm">vambeval.scm</a>           </td><td align="right">2000-12-03 14:33  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mceval.scm">mceval.scm</a>             </td><td align="right">2001-04-14 20:22  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo-meta.scm">logo-meta.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ambdiff">ambdiff</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ambeval.scm">ambeval.scm</a>            </td><td align="right">2004-04-30 13:15  </td><td align="right">9.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="old-obj.scm">old-obj.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="obj.scm">obj.scm</a>                </td><td align="right">2006-01-23 09:52  </td><td align="right">9.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scheme1.scm">scheme1.scm</a>            </td><td align="right">2007-10-10 09:09  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl-meta.scm">apl-meta.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv.scm">adv.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="concurrent.scm">concurrent.scm</a>         </td><td align="right">2003-04-23 11:28  </td><td align="right">6.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="apl.scm">apl.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="constraint.scm">constraint.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="ref-man.txt">ref-man.txt</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">5.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="logo.scm">logo.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="lazy.scm">lazy.scm</a>               </td><td align="right">2004-04-30 13:15  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="pronounce.scm">pronounce.scm</a>          </td><td align="right">2012-12-14 09:39  </td><td align="right">4.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="prisoner.scm">prisoner.scm</a>           </td><td align="right">2000-05-30 12:38  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="analyze.scm">analyze.scm</a>            </td><td align="right">2004-04-30 13:16  </td><td align="right">3.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="picture.scm">picture.scm</a>            </td><td align="right">2000-10-02 11:44  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tri.l">tri.l</a>                  </td><td align="right">2000-05-30 12:38  </td><td align="right">3.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="adv-world.scm">adv-world.scm</a>          </td><td align="right">2005-10-22 09:17  </td><td align="right">2.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="labyrinth.scm">labyrinth.scm</a>          </td><td align="right">2000-05-30 12:38  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="animal.scm">animal.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="review">review</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="maze.scm">maze.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="resist.scm">resist.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="rps.scm">rps.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">1.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="turkey">turkey</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="huffman.scm">huffman.scm</a>            </td><td align="right">2000-05-30 12:38  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="twenty-one.scm">twenty-one.scm</a>         </td><td align="right">2000-05-30 12:38  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="small-world.scm">small-world.scm</a>        </td><td align="right">2000-05-30 12:38  </td><td align="right">1.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="calc.scm">calc.scm</a>               </td><td align="right">2008-02-13 19:37  </td><td align="right">875 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="bst.scm">bst.scm</a>                </td><td align="right">2000-05-30 12:38  </td><td align="right">710 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="test.logo">test.logo</a>              </td><td align="right">2000-05-30 12:38  </td><td align="right">576 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="serial.scm">serial.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">542 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="tables.scm">tables.scm</a>             </td><td align="right">2000-05-30 12:38  </td><td align="right">441 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pigl.scm">pigl.scm</a>               </td><td align="right">2000-05-30 12:38  </td><td align="right">207 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="scmset">scmset</a>                 </td><td align="right">2000-05-30 12:38  </td><td align="right"> 81 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/labyrinth.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/labyrinth.scm
new file mode 100644
index 0000000..5a1f3ab
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/labyrinth.scm
@@ -0,0 +1,93 @@
+;;; To make a labyrinth underneath sproul-plaza, say
+;;; (instantiate labyrinth sproul-plaza)
+;;; now go down from sproul to enter
+
+;;; You might also want your character to maintain a list of rooms visited on
+;;; its property list so you can find your way back to the earth's surface.
+
+(define-class (labyrinth connect-place)
+  (instance-vars (places (make-populated-places 100 60 4 'underground-room)))
+  (initialize
+    (can-go connect-place 'down (car places))
+    (can-go (car places) 'up connect-place)
+    (connect-places places)
+    'okay))
+
+;;; You may find this helpful for moving around
+;;; You may want to modify it so that you can look around
+;;; in nearby rooms before entering so that you can avoid thieves. 
+(define (fancy-move-loop who)
+  (newline)
+  (let ((things (ask who 'look-around)))
+    (if things
+	(begin (print "You see")
+	       (for-each (lambda (thing)
+			   (display thing)
+			   (display " "))
+			 things))))
+  (newline)
+  (print (ask who 'exits))
+  (display "?  > ")
+  (let ((dir (read)))
+    (if (equal? dir 'stop)
+	(newline)
+	(begin (ask who 'go dir)
+	       (fancy-move-loop who)))))
+
+
+
+(define (make-places count name)
+  (define (iter n)
+    (if (> n count)
+	'()
+	(cons (instantiate place (word name '- n))
+	      (iter (1+ n)) )))
+  (iter 1))
+
+(define *object-types* '(gold lead pizza potstickers burritos))
+
+(define (make-populated-places n-places n-objects n-thieves place-name)
+  (let ((places (make-places n-places place-name)))
+    (dotimes n-objects
+	     (lambda (count)
+	       (ask (pick-random places)
+		    'appear
+		    (instantiate thing (pick-random *object-types*)))))
+    (dotimes n-thieves
+	     (lambda (count)
+	       (instantiate thief
+			    (word 'Nasty '- count)
+			    (pick-random places))))
+    places))
+
+(define direction-pairs '((north . south) (south . north)
+			  (east . west) (west . east)
+			  (up . down) (down . up)))
+
+(define (connect-places places)
+  (for-each (lambda (place)
+	      (connect-pair place (pick-random places)))
+	    places))
+
+(define (connect-pair place1 place2)
+  (define (c-p-helper place1 place2 dir-pairs)
+    (cond ((null? dir-pairs) 'done)
+     	  ((and (can-connect? place1 (caar dir-pairs))
+	     	(can-connect? place2 (cdar dir-pairs)))
+	   (can-go place1 (caar dir-pairs) place2)
+	   (can-go place2 (cdar dir-pairs) place1))
+	  (else (c-p-helper place1 place2 (cdr dir-pairs)))))
+  (c-p-helper place1 place2 direction-pairs))
+
+(define (can-connect? place direction)
+  (not (member? direction (ask place 'exits))))
+
+(define (dotimes limit f)
+  ;; dotimes calls the procedure f on the numbers from 1 to the limit
+  ;; dotimes is for side effect only
+  (define (dotimes-iter count)
+    (if (> count limit)
+	'done ;; dotimes is for side-effect
+	(begin (f count)
+	       (dotimes-iter (1+ count)))))
+  (dotimes-iter 1))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/lazy.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/lazy.scm
new file mode 100644
index 0000000..76970cc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/lazy.scm
@@ -0,0 +1,165 @@
+;;;;LAZY EVALUATOR FROM SECTION 4.2 OF
+;;;; STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;;;Matches code in ch4.scm
+;;;; Also includes enlarged primitive-procedures list
+
+;;;;This file can be loaded into Scheme as a whole.
+;;;;**NOTE**This file loads the metacircular evaluator of
+;;;;  sections 4.1.1-4.1.4, since it uses the expression representation,
+;;;;  environment representation, etc.
+;;;;  You may need to change the (load ...) expression to work in your
+;;;;  version of Scheme.
+
+;;;;Then you can initialize and start the evaluator by evaluating
+;;;; the expression (mce).
+
+
+;;**implementation-dependent loading of evaluator file
+;;Note: It is loaded first so that the section 4.2 definition
+;; of eval overrides the definition from 4.1.1
+(load "~/61a/Lib/mceval.scm")
+
+
+;;  To run without memoization, reload the first version of force-it below
+
+
+;;;SECTION 4.2.2
+
+;;; Modifying the evaluator
+
+(define (mc-eval exp env)
+  (cond ((self-evaluating? exp) exp)
+        ((variable? exp) (lookup-variable-value exp env))
+        ((quoted? exp) (text-of-quotation exp))
+        ((assignment? exp) (eval-assignment exp env))
+        ((definition? exp) (eval-definition exp env))
+        ((if? exp) (eval-if exp env))
+        ((lambda? exp)
+         (make-procedure (lambda-parameters exp)
+                         (lambda-body exp)
+                         env))
+        ((begin? exp) 
+         (eval-sequence (begin-actions exp) env))
+        ((cond? exp) (mc-eval (cond->if exp) env))
+        ((application? exp)             ; clause from book
+         (mc-apply (actual-value (operator exp) env)
+		   (operands exp)
+		   env))
+        (else
+         (error "Unknown expression type -- EVAL" exp))))
+
+(define (actual-value exp env)
+  (force-it (mc-eval exp env)))
+
+(define (mc-apply procedure arguments env)
+  (cond ((primitive-procedure? procedure)
+         (apply-primitive-procedure
+          procedure
+          (list-of-arg-values arguments env))) ; changed
+        ((compound-procedure? procedure)
+         (eval-sequence
+          (procedure-body procedure)
+          (extend-environment
+           (procedure-parameters procedure)
+           (list-of-delayed-args arguments env) ; changed
+           (procedure-environment procedure))))
+        (else
+         (error
+          "Unknown procedure type -- APPLY" procedure))))
+
+(define (list-of-arg-values exps env)
+  (if (no-operands? exps)
+      '()
+      (cons (actual-value (first-operand exps) env)
+            (list-of-arg-values (rest-operands exps)
+                                env))))
+
+(define (list-of-delayed-args exps env)
+  (if (no-operands? exps)
+      '()
+      (cons (delay-it (first-operand exps) env)
+            (list-of-delayed-args (rest-operands exps)
+                                  env))))
+
+(define (eval-if exp env)
+  (if (true? (actual-value (if-predicate exp) env))
+      (mc-eval (if-consequent exp) env)
+      (mc-eval (if-alternative exp) env)))
+
+(define input-prompt ";;; L-Eval input:")
+(define output-prompt ";;; L-Eval value:")
+
+(define (driver-loop)
+  (prompt-for-input input-prompt)
+  (let ((input (read)))
+    (let ((output
+           (actual-value input the-global-environment)))
+      (announce-output output-prompt)
+      (user-print output)))
+  (driver-loop))
+
+
+;;; Representing thunks
+
+;; non-memoizing version of force-it
+
+(define (force-it obj)
+  (if (thunk? obj)
+      (actual-value (thunk-exp obj) (thunk-env obj))
+      obj))
+
+;; thunks
+
+(define (delay-it exp env)
+  (list 'thunk exp env))
+
+(define (thunk? obj)
+  (tagged-list? obj 'thunk))
+
+(define (thunk-exp thunk) (cadr thunk))
+(define (thunk-env thunk) (caddr thunk))
+
+;; "thunk" that has been forced and is storing its (memoized) value
+(define (evaluated-thunk? obj)
+  (tagged-list? obj 'evaluated-thunk))
+
+(define (thunk-value evaluated-thunk) (cadr evaluated-thunk))
+
+
+;; memoizing version of force-it
+
+(define (force-it obj)
+  (cond ((thunk? obj)
+         (let ((result (actual-value
+                        (thunk-exp obj)
+                        (thunk-env obj))))
+           (set-car! obj 'evaluated-thunk)
+           (set-car! (cdr obj) result)  ; replace exp with its value
+           (set-cdr! (cdr obj) '())     ; forget unneeded env
+           result))
+        ((evaluated-thunk? obj)
+         (thunk-value obj))
+        (else obj)))
+
+
+;; A longer list of primitives -- suitable for running everything in 4.2
+;; Overrides the list in ch4-mceval.scm
+
+(define primitive-procedures
+  (list (list 'car car)
+        (list 'cdr cdr)
+        (list 'cons cons)
+        (list 'null? null?)
+        (list 'list list)
+        (list '+ +)
+        (list '- -)
+        (list '* *)
+        (list '/ /)
+        (list '= =)
+        (list 'newline newline)
+        (list 'display display)
+;;      more primitives
+        ))
+
+'LAZY-EVALUATOR-LOADED
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/logo-meta.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/logo-meta.scm
new file mode 100644
index 0000000..3a9c5e1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/logo-meta.scm
@@ -0,0 +1,337 @@
+;;; logo-meta.scm      Part of programming project #4
+
+;;; Differences between the book and this version:  Eval and apply have
+;;; been changed to logo-eval and logo-apply so as not to overwrite the Scheme
+;;; versions of these routines. An extra procedure initialize-logo has been
+;;; added. This routine resets the global environment and then executes the
+;;; driver loop. This procedure should be invoked to start the Logo
+;;; evaluator executing.  Note: It will reset your global environment and all
+;;; definitions to the Logo interpreter will be lost. To restart the Logo
+;;; interpreter without resetting the global environment, just invoke
+;;; driver-loop.  Don't forget that typing control-C will get you out of
+;;; the Logo evaluator back into Scheme.
+
+;;; Problems A1, A2, and B2 are entirely in logo.scm
+;;; Problems A3, B3, and 6 require you to find and change existing procedures.
+
+;;;  Procedures that you must write from scratch:
+
+;;; Problem B1    eval-line
+
+(define (eval-line line-obj env)
+  (error "eval-line not written yet!"))
+
+
+;;; Problem B3    variables  (other procedures must be modified, too)
+;;; data abstraction procedures
+
+(define (variable? exp)
+  #f)            ;; not written yet but we fake it for now
+
+(define (variable-name exp)
+  (error "variable-name not written yet!"))
+
+
+;;; Problem A4   handle-infix
+
+(define (de-infix token)
+  (cdr (assoc token '((+ . sum)
+		      (- . difference)
+		      (* . product)
+		      (/ . quotient)
+		      (= . equalp)
+		      (< . lessp)
+		      (> . greaterp)))))
+
+(define (handle-infix value line-obj env)
+  value)   ;; This doesn't give an error message, so other stuff works.
+
+
+;;; Problem B4    eval-definition
+
+(define (eval-definition line-obj)
+  (error "eval-definition not written yet!"))
+
+
+;;; Problem 5    eval-sequence
+
+(define (eval-sequence exps env)
+  (error "eval-seqence not written yet!"))
+
+
+
+
+;;; SETTING UP THE ENVIRONMENT
+
+(define the-primitive-procedures '())
+
+(define (add-prim name count proc)
+  (set! the-primitive-procedures
+	(cons (list name 'primitive count proc)
+	      the-primitive-procedures)))
+
+(add-prim 'first 1 first)
+(add-prim 'butfirst 1 bf)
+(add-prim 'bf 1 bf)
+(add-prim 'last 1 last)
+(add-prim 'butlast 1 bl)
+(add-prim 'bl 1 bl)
+(add-prim 'word 2 word)
+(add-prim 'sentence 2 se)
+(add-prim 'se 2 se)
+(add-prim 'list 2 list)
+(add-prim 'fput 2 cons)
+
+(add-prim 'sum 2 (make-logo-arith +))
+(add-prim 'difference 2 (make-logo-arith -))
+(add-prim '=unary-minus= 1 (make-logo-arith -))
+(add-prim '- 1 (make-logo-arith -))
+(add-prim 'product 2 (make-logo-arith *))
+(add-prim 'quotient 2 (make-logo-arith /))
+(add-prim 'remainder 2 (make-logo-arith remainder))
+
+(add-prim 'print 1 logo-print)
+(add-prim 'pr 1 logo-print)
+(add-prim 'show 1 logo-show)
+(add-prim 'type 1 logo-type)
+(add-prim 'make '(2) make)
+
+(add-prim 'run '(1) run)
+(add-prim 'if '(2) logo-if)
+(add-prim 'ifelse '(3) ifelse)
+(add-prim 'equalp 2 (logo-pred (make-logo-arith equalp)))
+(add-prim 'lessp 2 (logo-pred (make-logo-arith <)))
+(add-prim 'greaterp 2 (logo-pred (make-logo-arith >)))
+(add-prim 'emptyp 1 (logo-pred empty?))
+(add-prim 'numberp 1 (logo-pred (make-logo-arith number?)))
+(add-prim 'listp 1 (logo-pred list?))
+(add-prim 'wordp 1 (logo-pred (lambda (x) (not (list? x)))))
+
+(add-prim 'stop 0 (lambda () '=stop=))
+(add-prim 'output 1 (lambda (x) (cons '=output= x)))
+(add-prim 'op 1 (lambda (x) (cons '=output= x)))
+
+(add-prim 'load 1 meta-load)
+
+(define the-global-environment '())
+(define the-procedures the-primitive-procedures)
+
+;;; INITIALIZATION AND DRIVER LOOP
+
+;;; The following code initializes the machine and starts the Logo
+;;; system.  You should not call it very often, because it will clobber
+;;; the global environment, and you will lose any definitions you have
+;;; accumulated.
+
+(define (initialize-logo)
+  (set! the-global-environment (extend-environment '() '() '()))
+  (set! the-procedures the-primitive-procedures)
+  (driver-loop))
+
+(define (driver-loop)
+  (define (helper)
+    (prompt "? ")
+    (let ((line (logo-read)))
+      (if (not (null? line))
+  	  (let ((result (eval-line (make-line-obj line)
+				   the-global-environment)))
+	    (if (not (eq? result '=no-value=))
+		(logo-print (list "You don't say what to do with" result))))))
+    (helper))
+  (logo-read)
+  (helper))
+
+;;; APPLYING PRIMITIVE PROCEDURES
+
+;;; To apply a primitive procedure, we ask the underlying Scheme system
+;;; to perform the application.  (Of course, an implementation on a
+;;; low-level machine would perform the application in some other way.)
+
+(define (apply-primitive-procedure p args)
+  (apply (text p) args))
+
+
+;;; Now for the code that's based on the book!!!
+
+
+;;; Section 4.1.1
+
+;; Given an expression like (proc :a :b :c)+5
+;; logo-eval calls eval-prefix for the part in parentheses, and then
+;; handle-infix to check for and process the infix arithmetic.
+;; Eval-prefix is comparable to Scheme's eval.
+
+(define (logo-eval line-obj env)
+  (handle-infix (eval-prefix line-obj env) line-obj env))
+
+(define (eval-prefix line-obj env)
+  (define (eval-helper paren-flag)
+    (let ((token (ask line-obj 'next)))
+      (cond ((self-evaluating? token) token)
+            ((variable? token)
+	     (lookup-variable-value (variable-name token) env))
+            ((quoted? token) (text-of-quotation token))
+            ((definition? token) (eval-definition line-obj))
+	    ((left-paren? token)
+	     (let ((result (handle-infix (eval-helper #t)
+				       	 line-obj
+				       	 env)))
+	       (let ((token (ask line-obj 'next)))
+	       	 (if (right-paren? token)
+		     result
+		     (error "Too much inside parens")))))
+	    ((right-paren? token)
+	     (error "Unexpected ')'"))
+            (else
+	     (let ((proc (lookup-procedure token)))
+	       (if (not proc) (error "I don't know how to" token))
+	       (logo-apply proc
+			   (collect-n-args (arg-count proc)
+					   line-obj
+					   env)
+			   env))) )))
+  (eval-helper #f))
+
+(define (logo-apply procedure arguments env)
+  (cond ((primitive-procedure? procedure)
+         (apply-primitive-procedure procedure arguments))
+        ((compound-procedure? procedure)
+         (eval-sequence (procedure-body procedure)
+                        (extend-environment
+                         (parameters procedure)
+                         arguments
+                         env)))
+        (else
+         (error "Unknown procedure type -- LOGO-APPLY" procedure))))
+
+(define (collect-n-args n line-obj env)
+  (cond ((= n 0) '())
+	((and (< n 0) (not (ask line-obj 'empty?)))
+	 (let ((token (ask line-obj 'next)))
+	   (ask line-obj 'put-back token)
+	   (if (right-paren? token)
+	       '()
+      	       (let ((next (logo-eval line-obj env)))
+        	 (cons next
+	      	       (collect-n-args (-1+ n) line-obj env)) ))))
+	(else      
+      	 (let ((next (logo-eval line-obj env)))
+           (cons next
+	      	 (collect-n-args (-1+ n) line-obj env)) ))))
+
+;;; Section 4.1.2 -- Representing expressions
+
+;;; numbers
+
+(define (self-evaluating? exp) (number? exp))
+
+;;; quote
+
+(define (quoted? exp)
+  (or (list? exp)
+      (eq? (string-ref (word->string (first exp)) 0) #\")))
+
+(define (text-of-quotation exp)
+  (if (list? exp)
+      exp
+      (bf exp)))
+
+;;; parens
+
+(define (left-paren? exp) (eq? exp left-paren-symbol))
+
+(define (right-paren? exp) (eq? exp right-paren-symbol))
+
+;;; definitions
+
+(define (definition? exp)
+  (eq? exp 'to))
+
+;;; procedures
+
+(define (lookup-procedure name)
+  (assoc name the-procedures))
+
+(define (primitive-procedure? p)
+  (eq? (cadr p) 'primitive))
+
+(define (compound-procedure? p)
+  (eq? (cadr p) 'compound))
+
+(define (arg-count proc)
+  (caddr proc))
+
+(define (text proc)
+  (cadddr proc))
+
+(define (parameters proc) (car (text proc)))
+
+(define (procedure-body proc) (cdr (text proc)))
+
+;;; Section 4.1.3
+
+;;; Operations on environments
+
+(define (enclosing-environment env) (cdr env))
+
+(define (first-frame env) (car env))
+
+(define the-empty-environment '())
+
+(define (make-frame variables values)
+  (cons variables values))
+
+(define (frame-variables frame) (car frame))
+(define (frame-values frame) (cdr frame))
+
+(define (add-binding-to-frame! var val frame)
+  (set-car! frame (cons var (car frame)))
+  (set-cdr! frame (cons val (cdr frame))))
+
+(define (extend-environment vars vals base-env)
+  (if (= (length vars) (length vals))
+      (cons (make-frame vars vals) base-env)
+      (if (< (length vars) (length vals))
+          (error "Too many arguments supplied" vars vals)
+          (error "Too few arguments supplied" vars vals))))
+
+(define (lookup-variable-value var env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((eq? var (car vars))
+             (car vals))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable" var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (set-variable-value! var val env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((eq? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable -- SET!" var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (define-variable! var val env)
+  (let ((frame (first-frame env)))
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (add-binding-to-frame! var val frame))
+            ((eq? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (scan (frame-variables frame)
+          (frame-values frame))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/logo.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/logo.scm
new file mode 100644
index 0000000..49fdab1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/logo.scm
@@ -0,0 +1,173 @@
+;;; logo.scm         part of programming project #4
+
+
+;;; Problem A1   make-line-obj
+
+(define (make-line-obj text)   
+  (error "make-line-obj not written yet!")) 
+
+
+;;; Problem A2   logo-type
+
+(define (logo-type val)   
+  (error "logo-type not written yet!")) 
+
+(define (logo-print val)   
+  (logo-type val)  
+  (newline) 
+  '=no-value=) 
+
+(define (logo-show val)   
+  (logo-print (list val)))   
+
+
+
+;;; Problem B3   variables   (logo-meta.scm is also affected)
+
+(define (make env var val) 
+  (error "make not written yet!") 
+  '=no-value=) 
+
+
+;;; Here are the primitives RUN, IF, and IFELSE.  Problem B2 provides
+;;; support for these, but you don't have to modify them.   
+
+(define (run env exp)
+  (eval-line (make-line-obj exp) env))
+
+(define (logo-if env t/f exp) 
+  (cond ((eq? t/f 'true) (eval-line (make-line-obj exp) env))
+        ((eq? t/f 'false) '=no-value=)
+        (else (error "Input to IF not true or false" t/f))))  
+
+(define (ifelse env t/f exp1 exp2)  
+  (cond ((eq? t/f 'true) (eval-line (make-line-obj exp1) env))
+        ((eq? t/f 'false) (eval-line (make-line-obj exp2) env))   
+        (else (error "Input to IFELSE not true or false" t/f))))  
+
+
+;;; Problem B2   logo-pred
+
+(define (logo-pred pred)   
+  pred)      ;; This isn't written yet but we fake it for now.
+
+
+;;; Here is an example of a Scheme predicate that will be turned into  
+;;; a Logo predicate by logo-pred:  
+
+(define (equalp a b)
+  (if (and (number? a) (number? b))  
+      (= a b)   
+      (equal? a b)))   
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
+;;;  Stuff below here is needed for the interpreter to work but you  ;;;  
+;;;  don't have to modify anything or understand how they work.      ;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
+
+
+;;; The Logo reader
+
+(define left-paren-symbol (string->symbol (make-string 1 #\( )))
+(define right-paren-symbol (string->symbol (make-string 1 #\) )))
+(define quote-symbol (string->symbol (make-string 1 #\" )))
+
+(define (logo-read)  
+  (define lookahead #f)   
+  (define (logo-read-help depth)   
+    (define (get-char)  
+      (if lookahead  
+          (let ((char lookahead))   
+            (set! lookahead #f)   
+            char) 
+          (let ((char (read-char)))   
+            (if (eq? char #\\)
+                (list (read-char))  
+                char)))) 
+    (define (quoted char)   
+      (if (pair? char)   
+          char 
+          (list char)))  
+    (define (get-symbol char)   
+      (define (iter sofar char)
+        (cond ((pair? char) (iter (cons (car char) sofar) (get-char))) 
+              ((memq char  
+                     '(#\space #\newline #\+ #\- #\* #\/  
+                               #\= #\< #\> #\( #\) #\[ #\] ))
+               (set! lookahead char)   
+               sofar) 
+              (else (iter (cons char sofar) (get-char))) ))   
+      (string->word (list->string (reverse (iter '() char)))) )
+    (define (get-token space-flag)   
+      (let ((char (get-char)))   
+              (cond ((eq? char #\space) (get-token #t))  
+              ((memq char '(#\+ #\* #\/ #\= #\< #\> #\( #\) ))   
+               (string->symbol (make-string 1 char)))
+              ((eq? char #\-)   
+               (if space-flag  
+                   (let ((char (get-char)))   
+                     (let ((result (if (eq? char #\space)  
+                                       '- 
+                                       '=unary-minus=))) 
+                       (set! lookahead char)   
+                       result)) 
+                   '-)) 
+              ((eq? char #\[) (logo-read-help (1+ depth)))  
+              ((pair? char) (get-symbol char))
+              ((eq? char #\")   
+               (let ((char (get-char)))   
+                 (if (memq char '(#\[ #\] #\newline))  
+                     (begin (set! lookahead char) quote-symbol)
+                     (string->symbol (word quote-symbol
+					   (get-symbol (quoted char)))))))
+	      (else (get-symbol char)) )))
+    (define (after-space)
+      (let ((char (get-char)))
+	(if (eq? char #\space)
+	    (after-space)
+	    char)))
+    (let ((char (get-char)))   
+      (cond ((eq? char #\newline)
+             (if (> depth 0) (set! lookahead char))   
+             '()) 
+	    ((eq? char #\space)
+	     (let ((char (after-space)))
+	       (if (eq? char #\newline)
+		   (begin (if (> depth 0) (set! lookahead char))
+			  '())
+		   (begin (set! lookahead char)
+			  (let ((token (get-token #t)))
+			    (cons token (logo-read-help depth)))))))
+            ((eq? char #\])   
+             (if (> depth 0) '() (error "Unexpected ]")))
+            ((eof-object? char) char)   
+            (else (set! lookahead char)
+                  (let ((token (get-token #f)))
+                    (cons token (logo-read-help depth)) ))))) 
+  (logo-read-help 0))  
+
+
+;;; Assorted stuff   
+
+(define (make-logo-arith op)   
+  (lambda args (apply op (map maybe-num args))))   
+
+(define (maybe-num val)   
+  (string->word (word->string val)))
+
+(define tty-port (current-input-port))   
+
+(define (prompt string)   
+  (if (eq? (current-input-port) tty-port) (display string)))  
+
+(define (meta-load fn)   
+  (define (loader)  
+    (let ((exp (logo-read)))   
+      (if (eof-object? exp)   
+          '() 
+          (begin (eval-line (make-line-obj exp)
+			    the-global-environment) 
+		 (loader))))) 
+  (with-input-from-file (symbol->string fn) loader)
+  '=no-value=) 
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/maze.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/maze.scm
new file mode 100644
index 0000000..cddce36
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/maze.scm
@@ -0,0 +1,64 @@
+(define make-square list)
+
+(define row car)
+
+(define column cadr)
+
+(define adas-maze
+  (list
+   (make-square 1 3) (make-square 1 4)
+   (make-square 2 1) (make-square 2 2) (make-square 2 4)
+   (make-square 3 1) (make-square 3 4) (make-square 3 5)
+   (make-square 4 1) (make-square 4 2) (make-square 4 4)
+   (make-square 5 2) (make-square 5 3) (make-square 5 4)))
+
+(define (neighbors square)
+  (list (make-square (- (row square) 1) (column square))
+	(make-square (+ (row square) 1) (column square))
+	(make-square (row square) (- (column square) 1))
+	(make-square (row square) (+ (column square) 1))))
+
+(define (find-path start goal maze)
+  (try-paths (list (list start)) goal maze))
+
+(define (try-paths paths goal maze)
+  (define (try-loop p)
+    (cond ((null? p)
+	   (try-paths (extend-all-paths paths maze)
+		      goal
+		      maze))
+	  ((complete? goal (car p))
+	   (car p))
+	  (else (try-loop (cdr p)))))
+  (try-loop paths))
+
+(define (complete? goal path)
+  (same-square? goal (car path)))
+
+(define (same-square? s1 s2)
+  (and (= (row s1) (row s2))
+       (= (column s1) (column s2))))
+
+(define (extend-all-paths paths maze)
+  (if (null? paths)
+      '()
+      (append (extend-path (car paths)
+			   (neighbors (car (car paths)))
+			   maze)
+	      (extend-all-paths (cdr paths) maze))))
+
+(define (extend-path path neighbors maze)
+  (cond ((null? neighbors) '())
+  	((allowed-extension? (car neighbors) maze)
+   	 (cons (cons (car neighbors) path)
+	       (extend-path path (cdr neighbors) maze)))
+  	(else (extend-path path (cdr neighbors) maze))))
+
+(define (allowed-extension? square maze)
+  (square-in-list? square maze))
+
+(define (square-in-list? square lst)
+  (cond ((null? lst) #f)
+	((same-square? square (car lst)) #t)
+	(else (square-in-list? square (cdr lst)))))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/mceval.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/mceval.scm
new file mode 100644
index 0000000..ed95fd1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/mceval.scm
@@ -0,0 +1,375 @@
+;;;;METACIRCULAR EVALUATOR FROM CHAPTER 4 (SECTIONS 4.1.1-4.1.4) of
+;;;; STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;;;Matches code in ch4.scm
+
+;;;;This file can be loaded into Scheme as a whole.
+;;;;Then you can initialize and start the evaluator by evaluating
+;;;; the expression (mce).
+
+;;;from section 4.1.4 -- must precede def of metacircular apply
+(define apply-in-underlying-scheme apply)
+
+;;;SECTION 4.1.1
+
+(define (mc-eval exp env)
+  (cond ((self-evaluating? exp) exp)
+	((variable? exp) (lookup-variable-value exp env))
+	((quoted? exp) (text-of-quotation exp))
+	((assignment? exp) (eval-assignment exp env))
+	((definition? exp) (eval-definition exp env))
+	((if? exp) (eval-if exp env))
+	((lambda? exp)
+	 (make-procedure (lambda-parameters exp)
+			 (lambda-body exp)
+			 env))
+	((begin? exp) 
+	 (eval-sequence (begin-actions exp) env))
+	((cond? exp) (mc-eval (cond->if exp) env))
+	((application? exp)
+	 (mc-apply (mc-eval (operator exp) env)
+		   (list-of-values (operands exp) env)))
+	(else
+	 (error "Unknown expression type -- EVAL" exp))))
+
+(define (mc-apply procedure arguments)
+  (cond ((primitive-procedure? procedure)
+         (apply-primitive-procedure procedure arguments))
+        ((compound-procedure? procedure)
+         (eval-sequence
+           (procedure-body procedure)
+           (extend-environment
+             (procedure-parameters procedure)
+             arguments
+             (procedure-environment procedure))))
+        (else
+         (error
+          "Unknown procedure type -- APPLY" procedure))))
+
+
+(define (list-of-values exps env)
+  (if (no-operands? exps)
+      '()
+      (cons (mc-eval (first-operand exps) env)
+            (list-of-values (rest-operands exps) env))))
+
+(define (eval-if exp env)
+  (if (true? (mc-eval (if-predicate exp) env))
+      (mc-eval (if-consequent exp) env)
+      (mc-eval (if-alternative exp) env)))
+
+(define (eval-sequence exps env)
+  (cond ((last-exp? exps) (mc-eval (first-exp exps) env))
+        (else (mc-eval (first-exp exps) env)
+              (eval-sequence (rest-exps exps) env))))
+
+(define (eval-assignment exp env)
+  (set-variable-value! (assignment-variable exp)
+                       (mc-eval (assignment-value exp) env)
+                       env)
+  'ok)
+
+(define (eval-definition exp env)
+  (define-variable! (definition-variable exp)
+                    (mc-eval (definition-value exp) env)
+                    env)
+  'ok)
+
+;;;SECTION 4.1.2
+
+(define (self-evaluating? exp)
+  (cond ((number? exp) true)
+        ((string? exp) true)
+        ((boolean? exp) true)
+	(else false)))
+
+(define (quoted? exp)
+  (tagged-list? exp 'quote))
+
+(define (text-of-quotation exp) (cadr exp))
+
+(define (tagged-list? exp tag)
+  (if (pair? exp)
+      (eq? (car exp) tag)
+      false))
+
+(define (variable? exp) (symbol? exp))
+
+(define (assignment? exp)
+  (tagged-list? exp 'set!))
+
+(define (assignment-variable exp) (cadr exp))
+
+(define (assignment-value exp) (caddr exp))
+
+
+(define (definition? exp)
+  (tagged-list? exp 'define))
+
+(define (definition-variable exp)
+  (if (symbol? (cadr exp))
+      (cadr exp)
+      (caadr exp)))
+
+(define (definition-value exp)
+  (if (symbol? (cadr exp))
+      (caddr exp)
+      (make-lambda (cdadr exp)
+                   (cddr exp))))
+
+(define (lambda? exp) (tagged-list? exp 'lambda))
+
+(define (lambda-parameters exp) (cadr exp))
+(define (lambda-body exp) (cddr exp))
+
+(define (make-lambda parameters body)
+  (cons 'lambda (cons parameters body)))
+
+
+(define (if? exp) (tagged-list? exp 'if))
+
+(define (if-predicate exp) (cadr exp))
+
+(define (if-consequent exp) (caddr exp))
+
+(define (if-alternative exp)
+  (if (not (null? (cdddr exp)))
+      (cadddr exp)
+      'false))
+
+(define (make-if predicate consequent alternative)
+  (list 'if predicate consequent alternative))
+
+
+(define (begin? exp) (tagged-list? exp 'begin))
+
+(define (begin-actions exp) (cdr exp))
+
+(define (last-exp? seq) (null? (cdr seq)))
+(define (first-exp seq) (car seq))
+(define (rest-exps seq) (cdr seq))
+
+(define (sequence->exp seq)
+  (cond ((null? seq) seq)
+        ((last-exp? seq) (first-exp seq))
+        (else (make-begin seq))))
+
+(define (make-begin seq) (cons 'begin seq))
+
+
+(define (application? exp) (pair? exp))
+(define (operator exp) (car exp))
+(define (operands exp) (cdr exp))
+
+(define (no-operands? ops) (null? ops))
+(define (first-operand ops) (car ops))
+(define (rest-operands ops) (cdr ops))
+
+
+(define (cond? exp) (tagged-list? exp 'cond))
+
+(define (cond-clauses exp) (cdr exp))
+
+(define (cond-else-clause? clause)
+  (eq? (cond-predicate clause) 'else))
+
+(define (cond-predicate clause) (car clause))
+
+(define (cond-actions clause) (cdr clause))
+
+(define (cond->if exp)
+  (expand-clauses (cond-clauses exp)))
+
+(define (expand-clauses clauses)
+  (if (null? clauses)
+      'false                          ; no else clause
+      (let ((first (car clauses))
+            (rest (cdr clauses)))
+        (if (cond-else-clause? first)
+            (if (null? rest)
+                (sequence->exp (cond-actions first))
+                (error "ELSE clause isn't last -- COND->IF"
+                       clauses))
+            (make-if (cond-predicate first)
+                     (sequence->exp (cond-actions first))
+                     (expand-clauses rest))))))
+
+;;;SECTION 4.1.3
+
+(define (true? x)
+  (not (eq? x false)))
+
+(define (false? x)
+  (eq? x false))
+
+
+(define (make-procedure parameters body env)
+  (list 'procedure parameters body env))
+
+(define (compound-procedure? p)
+  (tagged-list? p 'procedure))
+
+
+(define (procedure-parameters p) (cadr p))
+(define (procedure-body p) (caddr p))
+(define (procedure-environment p) (cadddr p))
+
+
+(define (enclosing-environment env) (cdr env))
+
+(define (first-frame env) (car env))
+
+(define the-empty-environment '())
+
+(define (make-frame variables values)
+  (cons variables values))
+
+(define (frame-variables frame) (car frame))
+(define (frame-values frame) (cdr frame))
+
+(define (add-binding-to-frame! var val frame)
+  (set-car! frame (cons var (car frame)))
+  (set-cdr! frame (cons val (cdr frame))))
+
+(define (extend-environment vars vals base-env)
+  (if (= (length vars) (length vals))
+      (cons (make-frame vars vals) base-env)
+      (if (< (length vars) (length vals))
+          (error "Too many arguments supplied" vars vals)
+          (error "Too few arguments supplied" vars vals))))
+
+(define (lookup-variable-value var env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((eq? var (car vars))
+             (car vals))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable" var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (set-variable-value! var val env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((eq? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable -- SET!" var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (define-variable! var val env)
+  (let ((frame (first-frame env)))
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (add-binding-to-frame! var val frame))
+            ((eq? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (scan (frame-variables frame)
+          (frame-values frame))))
+
+;;;SECTION 4.1.4
+
+(define (setup-environment)
+  (let ((initial-env
+         (extend-environment (primitive-procedure-names)
+                             (primitive-procedure-objects)
+                             the-empty-environment)))
+    (define-variable! 'true true initial-env)
+    (define-variable! 'false false initial-env)
+    (define-variable! 'import
+                      (list 'primitive
+			    (lambda (name)
+			      (define-variable! name
+				                (list 'primitive (eval name))
+				                the-global-environment)))
+                      initial-env)
+    initial-env))
+
+;[do later] (define the-global-environment (setup-environment))
+
+(define (primitive-procedure? proc)
+  (tagged-list? proc 'primitive))
+
+(define (primitive-implementation proc) (cadr proc))
+
+(define primitive-procedures
+  (list (list 'car car)
+        (list 'cdr cdr)
+        (list 'cons cons)
+        (list 'null? null?)
+	(list '+ +)
+	(list '- -)
+	(list '* *)
+	(list '/ /)
+	(list '= =)
+	(list 'list list)
+	(list 'append append)
+	(list 'equal? equal?)
+;;      more primitives
+        ))
+
+(define (primitive-procedure-names)
+  (map car
+       primitive-procedures))
+
+(define (primitive-procedure-objects)
+  (map (lambda (proc) (list 'primitive (cadr proc)))
+       primitive-procedures))
+
+;[moved to start of file] (define apply-in-underlying-scheme apply)
+
+(define (apply-primitive-procedure proc args)
+  (apply-in-underlying-scheme
+   (primitive-implementation proc) args))
+
+
+
+(define input-prompt ";;; M-Eval input:")
+(define output-prompt ";;; M-Eval value:")
+
+(define (driver-loop)
+  (prompt-for-input input-prompt)
+  (let ((input (read)))
+    (let ((output (mc-eval input the-global-environment)))
+      (announce-output output-prompt)
+      (user-print output)))
+  (driver-loop))
+
+(define (prompt-for-input string)
+  (newline) (newline) (display string) (newline))
+
+(define (announce-output string)
+  (newline) (display string) (newline))
+
+(define (user-print object)
+  (if (compound-procedure? object)
+      (display (list 'compound-procedure
+                     (procedure-parameters object)
+                     (procedure-body object)
+                     '<procedure-env>))
+      (display object)))
+
+;;;Following are commented out so as not to be evaluated when
+;;; the file is loaded.
+;;(define the-global-environment (setup-environment))
+;;(driver-loop)
+
+;; Added at Berkeley:
+(define the-global-environment '())
+
+(define (mce)
+  (set! the-global-environment (setup-environment))
+  (driver-loop))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/obj.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/obj.scm
new file mode 100644
index 0000000..d4a9d7a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/obj.scm
@@ -0,0 +1,279 @@
+;;; obj.scm version 4.0 5/18/2000
+;;; -- implementation of the object-oriented syntax
+;; By Matt Wright, based on a handout from MIT
+;; Revised for STk by Brian Gaeke - removed scm and procedure->macro
+
+;;; Utilities
+
+;; MAKNAM: create a new symbol whose name is the concatenation of the 
+;; names of those in the symbol list SYMBOLS.
+(define (maknam . symbols)
+  (string->symbol (apply string-append (map symbol->string symbols))))
+
+;; ASK: send a message to an object
+
+; The dot in the first line of the definition of ASK, below, makes it
+; take a variable number of arguments.  The first argument is associated
+; with the formal parameter OBJECT; the second with MESSAGE; any extra
+; actual arguments are put in a list, and that list is associated with
+; the formal parameter ARGS.  (If there are only two actual args, then
+; ARGS will be the empty list.)
+
+; APPLY takes two arguments, a procedure and a list, and applies the
+; procedure to the things in the list, which are used as actual
+; argument values.
+
+(define (ask object message . args)
+  (let ((method (object message)))
+    (if (method? method)
+	(apply method args)
+	(error "No method " message " in class " (cadr method)))))
+
+(define (no-method name)
+  (list 'no-method name))
+
+(define (no-method? x)
+  (if (pair? x)
+      (eq? (car x) 'no-method)
+      #f))
+
+(define (method? x)
+  (not (no-method? x)))
+
+
+;; INSTANTIATE and INSTANTIATE-PARENT:  Create an instance of a class
+
+; The difference is that only INSTANTIATE initializes the new object
+
+(define (instantiate class . arguments)
+  (let ((new-instance (apply (class 'instantiate) arguments)))
+    (ask new-instance 'initialize new-instance)
+    new-instance))
+
+(define (instantiate-parent class . arguments)
+  (apply (class 'instantiate) arguments))
+
+;; GET-METHOD: Send a message to several objects and return the first
+;; method found (for multiple inheritance)
+
+(define (get-method give-up-name message . objects)
+  (if (null? objects)
+      (no-method give-up-name)
+      (let ((method ((car objects) message)))
+	(if (method? method)
+	    method
+	    (apply get-method (cons give-up-name
+				    (cons message (cdr objects)) ))))))
+
+
+
+;; USUAL: Invoke a parent's method
+;; Note: The 'send-usual-to-parent method is put in automatically by
+;; define-class.
+
+(define-macro (usual . args)
+	     `(ask dispatch 'send-usual-to-parent . ,args))
+
+
+;; DEFINE-CLASS:  Create a new class.
+
+; DEFINE-CLASS is a special form.  When you type (define-class body...)
+; it's as if you typed (make-definitions (quote body...)).  In other
+; words, the argument to DEFINE-CLASS isn't evaluated.  This makes sense
+; because the argument isn't Scheme syntax, but rather is the special
+; object-oriented programming language we're defining.
+; Make-definitions transforms the OOP notation into a standard Scheme
+; expression, then uses EVAL to evaluate the result.  (You'll see EVAL
+; again in chapter 4 with the metacircular evaluator.)
+
+; When you define a class named THING, for example, two global Scheme
+; variables are created.  The variable THING has as its value the
+; procedure that represents the class.  This procedure is invoked by
+; INSTANTIATE to create instances of the class.  A second variable,
+; THING-DEFINITION, has as its value the text of the Scheme expression
+; that defines THING.  This text is used only by SHOW-CLASS, the
+; procedure that lets you examine the result of the OOP-to-Scheme
+; translation process.
+
+(define-macro (define-class . body) (make-definitions body))
+
+(define (make-definitions form)
+  (let ((definition (translate form)))
+    (eval `(define ,(maknam (class-name form) '-definition) ',definition))
+    (eval definition)
+    (list 'quote (class-name form))))
+
+(define (show-class name)
+  (eval (maknam name '-definition)) )
+
+; TRANSLATE does all the work of DEFINE-CLASS.
+; The backquote operator (`) works just like regular quote (') except
+; that expressions proceeded by a comma are evaluated.  Also, expressions
+; proceeded by ",@" evaluate to lists; the lists are inserted into the
+; text without the outermost level of parentheses.
+
+(define (translate form)
+  (cond ((null? form) (error "Define-class: empty body"))
+	((not (null? (obj-filter form (lambda (x) (not (pair? x))))))
+	 (error "Each argument to define-class must be a list"))
+	((not (null? (extra-clauses form)))
+	 (error "Unrecognized clause in define-class:" (extra-clauses form)))
+	(else 
+	 `(define ,(class-name form)
+	    (let ,(class-var-bindings form)
+	      (lambda (class-message)
+		(cond
+		 ,@(class-variable-methods form)
+		 ((eq? class-message 'instantiate)
+		  (lambda ,(instantiation-vars form)
+		    (let ((self '())
+			  ,@(parent-let-list form)
+			  ,@(instance-vars-let-list form))
+		      (define (dispatch message)
+			(cond
+			 ,(init-clause form)
+			 ,(usual-clause form)
+			 ,@(method-clauses form)
+			 ,@(local-variable-methods form)
+			 ,(else-clause form) ))
+		      dispatch )))
+		 (else (error "Bad message to class" class-message)) )))))))
+
+(define *legal-clauses*
+  '(instance-vars class-vars method default-method parent initialize))
+
+(define (extra-clauses form)
+  (obj-filter (cdr form)
+	      (lambda (x) (null? (member (car x) *legal-clauses*)))))
+
+(define class-name caar)
+
+(define (class-var-bindings form)
+  (let ((classvar-clause (find-a-clause 'class-vars form)))
+    (if (null? classvar-clause)
+	'()
+	(cdr classvar-clause) )))
+
+(define instantiation-vars cdar)
+
+(define (parent-let-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (parent-and-args)
+	       (list (maknam 'my- (car parent-and-args))
+		     (cons 'instantiate-parent parent-and-args)))
+	     (cdr parent-clause)))))
+
+(define (instance-vars-let-list form)
+  (let ((instance-vars-clause (find-a-clause 'instance-vars form)))
+    (if (null? instance-vars-clause)
+	'()
+	(cdr instance-vars-clause))))
+
+(define (init-clause form)
+  (define (parent-initialization form)
+    (let ((parent-clause (find-a-clause 'parent form)))
+      (if (null? parent-clause)
+	  '()
+	  (map
+	   (lambda (parent-and-args)
+	     `(ask ,(maknam 'my- (car parent-and-args)) 'initialize self) )
+	   (cdr parent-clause) ))))
+  (define (my-initialization form)
+    (let ((init-clause (find-a-clause 'initialize form)))
+      (if (null? init-clause) '()
+	  (cdr init-clause))))
+  (define (init-body form)
+    (append (parent-initialization form)
+	    (my-initialization form) ))
+
+  `((eq? message 'initialize)
+    (lambda (value-for-self)
+      (set! self value-for-self)
+      ,@(init-body form) )))
+
+(define (variable-list var-type form)
+  (let ((clause (find-a-clause var-type form)))
+    (if (null? clause)
+	'()
+	(map car (cdr clause)) )))
+
+(define (class-variable-methods form)
+  (cons `((eq? class-message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? class-message ',variable) (lambda () ,variable)))
+	     (variable-list 'class-vars form))))
+
+(define (local-variable-methods form)
+  (cons `((eq? message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? message ',variable) (lambda () ,variable)))
+	     (append (cdr (car form))
+		     (variable-list 'instance-vars form)
+		     (variable-list 'class-vars form)))))
+
+(define (method-clauses form)
+  (map
+   (lambda (method-defn)
+     (let ((this-message (car (cadr method-defn)))
+	   (args (cdr (cadr method-defn)))
+	   (body (cddr method-defn)))
+       `((eq? message ',this-message)
+	 (lambda ,args ,@body))))
+   (obj-filter (cdr form) (lambda (x) (eq? (car x) 'method))) ))
+
+(define (parent-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (class) (maknam 'my- class))
+	     (map car (cdr parent-clause))))))
+
+(define (usual-clause form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	`((eq? message 'send-usual-to-parent)
+	  (error "Can't use USUAL without a parent." ',(class-name form)))
+	`((eq? message 'send-usual-to-parent)
+	  (lambda (message . args)
+	    (let ((method (get-method ',(class-name form)
+				      message
+				      ,@(parent-list form))))
+	      (if (method? method)
+		  (apply method args)
+		  (error "No USUAL method" message ',(class-name form)) )))))))
+
+(define (else-clause form)
+  (let ((parent-clause (find-a-clause 'parent form))
+	(default-method (find-a-clause 'default-method form)))
+    (cond
+     ((and (null? parent-clause) (null? default-method))
+      `(else (no-method ',(class-name form))))
+     ((null? parent-clause)
+      `(else (lambda args ,@(cdr default-method))))
+     ((null? default-method)
+      `(else (get-method ',(class-name form) message ,@(parent-list form))) )
+     (else
+      `(else (let ((method (get-method ',(class-name form)
+				       message
+				       ,@(parent-list form))))
+	       (if (method? method)
+		   method
+		   (lambda args ,@(cdr default-method)) )))))))
+
+(define (find-a-clause clause-name form)
+  (let ((clauses (obj-filter (cdr form)
+			     (lambda (x) (eq? (car x) clause-name)))))
+    (cond ((null? clauses) '())
+	  ((null? (cdr clauses)) (car clauses))
+	  (else (error "Error in define-class: too many "
+		       clause-name "clauses.")) )))
+
+(define (obj-filter l pred)
+  (cond ((null? l) '())
+	((pred (car l))
+	 (cons (car l) (obj-filter (cdr l) pred)))
+	(else (obj-filter (cdr l) pred))))
+
+(provide "obj")
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/old-obj.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/old-obj.scm
new file mode 100644
index 0000000..cee6aae
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/old-obj.scm
@@ -0,0 +1,277 @@
+;;; obj.scm version 3.0 1/9/95
+;;; -- implementation of the object-oriented syntax
+;;; This version is supposed to work with Unix SCM, PC SCM, and Mac Gambit
+;;; This version does class names right.
+;;; Also, explicit methods come before instance variable methods
+;; By Matt Wright, based on a handout from MIT
+
+;; ASK: send a message to an object
+
+; The dot in the first line of the definition of ASK, below, makes it
+; take a variable number of arguments.  The first argument is associated
+; with the formal parameter OBJECT; the second with MESSAGE; any extra
+; actual arguments are put in a list, and that list is associated with
+; the formal parameter ARGS.  (If there are only two actual args, then
+; ARGS will be the empty list.)
+
+; APPLY takes two arguments, a procedure and a list, and applies the
+; procedure to the things in the list, which are used as actual
+; argument values.
+
+(define (ask object message . args)
+  (let ((method (object message)))
+    (if (method? method)
+	(apply method args)
+	(error "No method" message (cadr method)))))
+
+(define (no-method name)
+  (list 'no-method name))
+
+(define (no-method? x)
+  (if (pair? x)
+      (eq? (car x) 'no-method)
+      #f))
+
+(define (method? x)
+  (not (no-method? x)))
+
+
+;; INSTANTIATE and INSTANTIATE-PARENT:  Create an instance of a class
+
+; The difference is that only INSTANTIATE initializes the new object
+
+(define (instantiate class . arguments)
+  (let ((new-instance (apply (class 'instantiate) arguments)))
+    (ask new-instance 'initialize new-instance)
+    new-instance))
+
+(define (instantiate-parent class . arguments)
+  (apply (class 'instantiate) arguments))
+
+;; GET-METHOD: Send a message to several objects and return the first
+;; method found (for multiple inheritance)
+
+(define (get-method give-up-name message . objects)
+  (if (null? objects)
+      (no-method give-up-name)
+      (let ((method ((car objects) message)))
+	(if (method? method)
+	    method
+	    (apply get-method (cons give-up-name
+				    (cons message (cdr objects)) ))))))
+
+
+
+;; USUAL: Invoke a parent's method
+;; Note: The 'send-usual-to-parent method is put in automatically by
+;; define-class.
+
+(if scm?
+    (defmacro usual args `(ask dispatch 'send-usual-to-parent . ,args))
+    (eval '(define-macro (usual . args)
+	     `(ask dispatch 'send-usual-to-parent . ,args))))
+
+
+;; DEFINE-CLASS:  Create a new class.
+
+; DEFINE-CLASS is a special form.  When you type (define-class body...)
+; it's as if you typed (make-definitions (quote body...)).  In other
+; words, the argument to DEFINE-CLASS isn't evaluated.  This makes sense
+; because the argument isn't Scheme syntax, but rather is the special
+; object-oriented programming language we're defining.
+; Make-definitions transforms the OOP notation into a standard Scheme
+; expression, then uses EVAL to evaluate the result.  (You'll see EVAL
+; again in chapter 4 with the metacircular evaluator.)
+
+; When you define a class named THING, for example, two global Scheme
+; variables are created.  The variable THING has as its value the
+; procedure that represents the class.  This procedure is invoked by
+; INSTANTIATE to create instances of the class.  A second variable,
+; THING-DEFINITION, has as its value the text of the Scheme expression
+; that defines THING.  This text is used only by SHOW-CLASS, the
+; procedure that lets you examine the result of the OOP-to-Scheme
+; translation process.
+
+(if scm?
+    (defmacro define-class body (make-definitions body))
+    (eval '(define-macro (define-class . body) (make-definitions body))))
+
+(define (make-definitions form)
+  (let ((definition (translate form)))
+    (eval `(define ,(word (class-name form) '-definition) ',definition))
+    (eval definition)
+    (list 'quote (class-name form))))
+
+(define (show-class name)
+  (eval (word name '-definition)) )
+
+; TRANSLATE does all the work of DEFINE-CLASS.
+; The backquote operator (`) works just like regular quote (') except
+; that expressions proceeded by a comma are evaluated.  Also, expressions
+; proceeded by ",@" evaluate to lists; the lists are inserted into the
+; text without the outermost level of parentheses.
+
+(define (translate form)
+  (cond ((null? form) (error "Define-class: empty body"))
+	((not (null? (obj-filter form (lambda (x) (not (pair? x))))))
+	 (error "Each argument to define-class must be a list"))
+	((not (null? (extra-clauses form)))
+	 (error "Unrecognized clause in define-class:" (extra-clauses form)))
+	(else 
+	 `(define ,(class-name form)
+	    (let ,(class-var-bindings form)
+	      (lambda (class-message)
+		(cond
+		 ,@(class-variable-methods form)
+		 ((eq? class-message 'instantiate)
+		  (lambda ,(instantiation-vars form)
+		    (let ((self '())
+			  ,@(parent-let-list form)
+			  ,@(instance-vars-let-list form))
+		      (define (dispatch message)
+			(cond
+			 ,(init-clause form)
+			 ,(usual-clause form)
+			 ,@(method-clauses form)
+			 ,@(local-variable-methods form)
+			 ,(else-clause form) ))
+		      dispatch )))
+		 (else (error "Bad message to class" class-message)) )))))))
+
+(define *legal-clauses*
+  '(instance-vars class-vars method default-method parent initialize))
+
+(define (extra-clauses form)
+  (obj-filter (cdr form)
+	      (lambda (x) (not (member? (car x) *legal-clauses*)))))
+
+(define class-name caar)
+
+(define (class-var-bindings form)
+  (let ((classvar-clause (find-a-clause 'class-vars form)))
+    (if (null? classvar-clause)
+	'()
+	(cdr classvar-clause) )))
+
+(define instantiation-vars cdar)
+
+(define (parent-let-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (parent-and-args)
+	       (list (word 'my- (car parent-and-args))
+		     (cons 'instantiate-parent parent-and-args)))
+	     (cdr parent-clause)))))
+
+(define (instance-vars-let-list form)
+  (let ((instance-vars-clause (find-a-clause 'instance-vars form)))
+    (if (null? instance-vars-clause)
+	'()
+	(cdr instance-vars-clause))))
+
+(define (init-clause form)
+  (define (parent-initialization form)
+    (let ((parent-clause (find-a-clause 'parent form)))
+      (if (null? parent-clause)
+	  '()
+	  (map
+	   (lambda (parent-and-args)
+	     `(ask ,(word 'my- (car parent-and-args)) 'initialize self) )
+	   (cdr parent-clause) ))))
+  (define (my-initialization form)
+    (let ((init-clause (find-a-clause 'initialize form)))
+      (if (null? init-clause) '()
+	  (cdr init-clause))))
+  (define (init-body form)
+    (append (parent-initialization form)
+	    (my-initialization form) ))
+
+  `((eq? message 'initialize)
+    (lambda (value-for-self)
+      (set! self value-for-self)
+      ,@(init-body form) )))
+
+(define (variable-list var-type form)
+  (let ((clause (find-a-clause var-type form)))
+    (if (null? clause)
+	'()
+	(map car (cdr clause)) )))
+
+(define (class-variable-methods form)
+  (cons `((eq? class-message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? class-message ',variable) (lambda () ,variable)))
+	     (variable-list 'class-vars form))))
+
+(define (local-variable-methods form)
+  (cons `((eq? message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? message ',variable) (lambda () ,variable)))
+	     (append (cdr (car form))
+		     (variable-list 'instance-vars form)
+		     (variable-list 'class-vars form)))))
+
+(define (method-clauses form)
+  (map
+   (lambda (method-defn)
+     (let ((this-message (car (cadr method-defn)))
+	   (args (cdr (cadr method-defn)))
+	   (body (cddr method-defn)))
+       `((eq? message ',this-message)
+	 (lambda ,args ,@body))))
+   (obj-filter (cdr form) (lambda (x) (eq? (car x) 'method))) ))
+
+(define (parent-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (class) (word 'my- class))
+	     (map car (cdr parent-clause))))))
+
+(define (usual-clause form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	`((eq? message 'send-usual-to-parent)
+	  (error "Can't use USUAL without a parent." ',(class-name form)))
+	`((eq? message 'send-usual-to-parent)
+	  (lambda (message . args)
+	    (let ((method (get-method ',(class-name form)
+				      message
+				      ,@(parent-list form))))
+	      (if (method? method)
+		  (apply method args)
+		  (error "No USUAL method" message ',(class-name form)) )))))))
+
+(define (else-clause form)
+  (let ((parent-clause (find-a-clause 'parent form))
+	(default-method (find-a-clause 'default-method form)))
+    (cond
+     ((and (null? parent-clause) (null? default-method))
+      `(else (no-method ',(class-name form))))
+     ((null? parent-clause)
+      `(else (lambda args ,@(cdr default-method))))
+     ((null? default-method)
+      `(else (get-method ',(class-name form) message ,@(parent-list form))) )
+     (else
+      `(else (let ((method (get-method ',(class-name form)
+				       message
+				       ,@(parent-list form))))
+	       (if (method? method)
+		   method
+		   (lambda args ,@(cdr default-method)) )))))))
+
+(define (find-a-clause clause-name form)
+  (let ((clauses (obj-filter (cdr form)
+			     (lambda (x) (eq? (car x) clause-name)))))
+    (cond ((null? clauses) '())
+	  ((null? (cdr clauses)) (car clauses))
+	  (else (error "Error in define-class: too many "
+		       clause-name "clauses.")) )))
+
+(define (obj-filter l pred)
+  (cond ((null? l) '())
+	((pred (car l))
+	 (cons (car l) (obj-filter (cdr l) pred)))
+	(else (obj-filter (cdr l) pred))))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/picture.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/picture.scm
new file mode 100644
index 0000000..7369e42
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/picture.scm
@@ -0,0 +1,129 @@
+;; Code for CS61A project 2 -- picture language
+
+(define (flipped-pairs painter)
+  (let ((painter2 (beside painter (flip-vert painter))))
+    (below painter2 painter2)))
+
+(define (right-split painter n)
+  (if (= n 0)
+      painter
+      (let ((smaller (right-split painter (- n 1))))
+	(beside painter (below smaller smaller)))))
+
+(define (corner-split painter n)
+  (if (= n 0)
+      painter
+      (let ((up (up-split painter (- n 1)))
+	    (right (right-split painter (- n 1))))
+	(let ((top-left (beside up up))
+	      (bottom-right (below right right))
+	      (corner (corner-split painter (- n 1))))
+	  (beside (below painter top-left)
+		  (below bottom-right corner))))))
+
+(define (square-limit painter n)
+  (let ((quarter (corner-split painter n)))
+    (let ((half (beside (flip-horiz quarter) quarter)))
+      (below (flip-vert half) half))))
+
+(define (square-of-four tl tr bl br)
+  (lambda (painter)
+    (let ((top (beside (tl painter) (tr painter)))
+	  (bottom (beside (bl painter) (br painter))))
+      (below bottom top))))
+
+(define (identity x) x)
+
+(define (flipped-pairs painter)
+  (let ((combine4 (square-of-four identity flip-vert
+				  identity flip-vert)))
+    (combine4 painter)))
+
+;; or
+
+; (define flipped-pairs
+;   (square-of-four identity flip-vert identity flip-vert))
+
+(define (square-limit painter n)
+  (let ((combine4 (square-of-four flip-horiz identity
+				  rotate180 flip-vert)))
+    (combine4 (corner-split painter n))))
+
+(define (frame-coord-map frame)
+  (lambda (v)
+    (add-vect
+     (origin-frame frame)
+     (add-vect (scale-vect (xcor-vect v)
+			   (edge1-frame frame))
+	       (scale-vect (ycor-vect v)
+			   (edge2-frame frame))))))
+
+(define (segments->painter segment-list)
+  (lambda (frame)
+    (for-each
+     (lambda (segment)
+       (draw-line
+	((frame-coord-map frame) (start-segment segment))
+	((frame-coord-map frame) (end-segment segment))))
+     segment-list)))
+
+(define (draw-line v1 v2)
+  (penup)
+  (setxy (- (* (xcor-vect v1) 200) 100)
+	 (- (* (ycor-vect v1) 200) 100))
+  (pendown)
+  (setxy (- (* (xcor-vect v2) 200) 100)
+	 (- (* (ycor-vect v2) 200) 100)))
+
+(define (transform-painter painter origin corner1 corner2)
+  (lambda (frame)
+    (let ((m (frame-coord-map frame)))
+      (let ((new-origin (m origin)))
+	(painter
+	 (make-frame new-origin
+		     (sub-vect (m corner1) new-origin)
+		     (sub-vect (m corner2) new-origin)))))))
+
+(define (flip-vert painter)
+  (transform-painter painter
+		     (make-vect 0.0 1.0)
+		     (make-vect 1.0 1.0)
+		     (make-vect 0.0 0.0)))
+
+(define (shrink-to-upper-right painter)
+  (transform-painter painter
+		    (make-vect 0.5 0.5)
+		    (make-vect 1.0 0.5)
+		    (make-vect 0.5 1.0)))
+
+(define (rotate90 painter)
+  (transform-painter painter
+		     (make-vect 1.0 0.0)
+		     (make-vect 1.0 1.0)
+		     (make-vect 0.0 0.0)))
+
+(define (squash-inwards painter)
+  (transform-painter painter
+		     (make-vect 0.0 0.0)
+		     (make-vect 0.65 0.35)
+		     (make-vect 0.35 0.65)))
+
+(define (beside painter1 painter2)
+  (let ((split-point (make-vect 0.5 0.0)))
+    (let ((paint-left
+	   (transform-painter painter1
+			      (make-vect 0.0 0.0)
+			      split-point
+			      (make-vect 0.0 1.0)))
+	  (paint-right
+	   (transform-painter painter2
+			      split-point
+			      (make-vect 1.0 0.0)
+			      (make-vect 0.5 1.0))))
+      (lambda (frame)
+	(paint-left frame)
+	(paint-right frame)))))
+
+(define full-frame (make-frame (make-vect -0.5 -0.5)
+			       (make-vect 2 0)
+			       (make-vect 0 2)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/pigl.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/pigl.scm
new file mode 100644
index 0000000..74e028e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/pigl.scm
@@ -0,0 +1,10 @@
+(define (pigl wd)
+  (if (pl-done? wd)
+      (word wd 'ay)
+      (pigl (word (bf wd) (first wd))) ) )
+
+(define (pl-done? wd)
+  (vowel? (first wd)) )
+
+(define (vowel? letter)
+  (member? letter '(a e i o u)) )
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/prisoner.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/prisoner.scm
new file mode 100644
index 0000000..c81e90c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/prisoner.scm
@@ -0,0 +1,133 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;  OVERVIEW:
+;;  
+;;
+;;  The PLAY-LOOP procedure takes as its arguments two prisoner's 
+;;  dilemma strategies, and plays an iterated game of approximately
+;;  one hundred rounds. A strategy is a procedure that takes
+;;  two arguments: a history of the player's previous plays and 
+;;  a history of the other player's previous plays. A history consists
+;;  of a sentence of C's and D's.  Likewise, a strategy procedure 
+;;  returns either the word C (for "cooperate") or D ("defect").
+;;  We also need a way to find out the player's scores; GET-SCORES
+;;  takes two histories and computes the net score for one player.
+;;
+;;  Note that we are inventing various types of objects: strategies,
+;;  histories, etc.  Each type of thing has certain specified
+;;  properties. For example, a history is a sentence with zero or
+;;  more words, each of which is a C or D.  To help us use these
+;;  objects, we write procedures that let us forget the details and
+;;  think about things in terms of histories and rounds, not in terms
+;;  of sentences and words. (For example, see GET-NTH-FROM-LAST-PLAY,
+;;  ADD-TO-HISTORY, etc.) 
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define (play-loop strategy1 strategy2)
+
+  ;; returns final scores
+
+  (define (play-loop-helper strat1 strat2 history1 history2 counter limit)
+    (if (= counter limit)
+	(final-scores history1 history2 limit)
+        (let ((result1 (strat1 history1 history2))
+	      (result2 (strat2 history2 history1))) 
+					;; note that the strategy's
+					;; own history comes first
+	  (play-loop-helper strat1 strat2
+			    (add-to-history result1 history1)
+			    (add-to-history result2 history2)
+			    (1+ counter)
+			    limit))))            ; end of helper
+
+  (play-loop-helper strategy1 strategy2          ; play-loop body
+		    empty-history empty-history
+		    0
+		    (+ 90 (random 21))))
+
+
+
+(define (final-scores history1 history2 num-of-rounds)
+
+  ;; returns average score per round for the two histories
+
+  (se (/ (get-scores history1 history2) num-of-rounds)
+      (/ (get-scores history2 history1) num-of-rounds) ))
+
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 
+;; Procedures about histories
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define empty-history '())
+
+(define empty-history? empty?)
+
+(define (add-to-history result history)
+  (se history result))
+
+(define (last-play history)
+  (last history))
+
+(define (previous-history history)
+  (bl history))
+
+(define (get-nth-to-last-play n history)
+  (cond ((empty? history) '())
+	((= n 1) (last history))
+	(else (get-nth-to-last-play (1- n) (butlast history)))))
+
+
+(define (get-scores my-hist other-hist)
+
+  ;; returns total score for first player
+  
+  (if (or (empty? my-hist) (empty? other-hist))
+      0
+      (+ (get-score (first my-hist) (first other-hist))
+	 (get-scores (bf my-hist) (bf other-hist)))))
+
+(define (get-score my-play other-play)
+
+  ;; returns the score of the first player for this round
+
+  (let ((round (se my-play other-play)))
+    (cond ((equal? round '(C C)) 3)
+	  ((equal? round '(C D)) 0)
+	  ((equal? round '(D C)) 5)
+	  ((equal? round '(D D)) 1) )))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 
+;; Some strategies.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+(define (all-defect my-history other-history)
+  'D)
+
+(define (poor-trusting-fool my-history other-history)
+  'C)
+
+(define (unforgiving my-history other-history)
+  (define (ever-defected? history)
+    (if (empty-history? history) 
+	#f
+        (or (equal? (last-play history) 'D)
+	    (ever-defected? (previous-history history)))))
+  (if (ever-defected? other-history) 'D 'C))
+
+(define (tit-for-tat my-history other-history)
+  (if (empty-history? other-history)
+      'C
+      (last-play other-history)))
+
+(define (random-strategy my-history other-history)
+  (nth (random 2) '(C D)))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/pronounce.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/pronounce.scm
new file mode 100644
index 0000000..638e160
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/pronounce.scm
@@ -0,0 +1,165 @@
+; How to pronounce cxr-family function names
+
+(define (say name)
+  (accent (pronounce name)))
+
+; PRONOUNCE takes a cxr-family word as argument and returns a sentence
+; of syllables.
+
+(define (pronounce name)
+  (cond ((eq? name 'car) '(car))
+	((eq? name 'caar) '(cuh are))
+	((empty? name) '())
+	((eq? (first-two name) 'ca) (se 'caa (pronounce (bf-two name))))
+	((eq? (first name) 'c) (se 'cuh (pronounce (bf name))))
+	((eq? (last-three name) 'dar) (se (pronounce (bl-three name)) 'dar))
+	((eq? (last-two name) 'ar) (se (pronounce (bl-two name)) 'are))
+	((eq? (last-two name) 'dr) (se (pronounce (bl-two name)) 'der))
+	((eq? (first-two name) 'da) (se 'daa (pronounce (bf-two name))))
+	((eq? (first name) 'a) (se 'aa (pronounce (bf name))))
+	(else (se 'de (pronounce (bf name))))))
+
+; ACCENT takes a sentence of syllables (as returned by PRONOUNCE) and inserts
+; an exclamation point at the emphasized syllable.  I'm less sure that these
+; rules are universally agreed to than for PRONOUNCE.
+
+; In particular, all my life I've said "CUH de der" for cddr, but apparently
+; to be consistent I should be saying "cuh DE der."  I think I have heard people
+; say it that way, though, so I'm reluctant to special-case it like the first
+; syllable of caar in PRONOUNCE.
+
+(define (accent syls)
+  (define (help prev rest)
+    (if (null? rest)
+	(se (word prev '!))
+	(let ((winover (assoc prev '((caa . (daa dar de der))
+				     (cuh . (der))
+				     (aa  . (dar de der))
+				     (daa . (aa are daa dar de der))
+				     (de  . (de der))))))
+	  (if (member? (car rest) (cdr winover))
+	      (cons (word prev '!) rest)
+	      (cons prev (help (car rest) (cdr rest)))))))
+  (if (null? (cdr syls))
+      syls
+      (help (car syls) (cdr syls))))
+
+; Utility functions to get a table of pronunciations of all names up to length n
+
+(define (table n)
+  (for-each (lambda (w) (print (list w (say w)))) (cr n)))
+
+(define (cr n)
+  (if (= n 0)
+      '()
+      (append (cr (- n 1))
+	      (map (lambda (w) (word 'c w 'r)) (cross n)))))
+
+(define (cross n)
+  (if (= n 0)
+      '("")
+      (let ((small (cross (- n 1))))
+	(append (map (lambda (w) (word w 'a)) small)
+		(map (lambda (w) (word w 'd)) small)))))
+
+; Helper functions are obvious except to note that they test for too-short
+; arguments so that we can make more specific tests first in PRONOUNCE above.
+; ("More specific" means that we test for long substrings before short ones.)
+
+(define (first-two wd)
+  (if (< (count wd) 2)
+      wd
+      (word (first wd) (first (bf wd)))))
+
+(define (bf-two wd)
+  (if (< (count wd) 2)
+      ""
+      (bf (bf wd))))
+
+(define (last-two wd)
+  (if (< (count wd) 2)
+      wd
+      (word (last (bl wd)) (last wd))))
+
+(define (bl-two wd)
+  (if (< (count wd) 2)
+      ""
+      (bl (bl wd))))
+
+(define (last-three wd)
+  (if (< (count wd) 3)
+      wd
+      (word (last (bl (bl wd))) (last (bl wd)) (last wd))))
+
+(define (bl-three wd)
+  (if (< (count wd) 3)
+      ""
+      (bl (bl (bl wd)))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Results:
+
+; > (table 5)
+; (car (car))
+; (cdr (cuh! der))
+; (caar (cuh are!))
+; (cdar (cuh dar!))
+; (cadr (caa! der))
+; (cddr (cuh de! der))
+; (caaar (caa aa are!))
+; (cdaar (cuh daa! are))
+; (cadar (caa! dar))
+; (cddar (cuh de dar!))
+; (caadr (caa aa! der))
+; (cdadr (cuh daa! der))
+; (caddr (caa! de der))
+; (cdddr (cuh de! de der))
+; (caaaar (caa aa aa are!))
+; (cdaaar (cuh daa! aa are))
+; (cadaar (caa! daa are))
+; (cddaar (cuh de daa! are))
+; (caadar (caa aa! dar))
+; (cdadar (cuh daa! dar))
+; (caddar (caa! de dar))
+; (cdddar (cuh de! de dar))
+; (caaadr (caa aa aa! der))
+; (cdaadr (cuh daa! aa der))
+; (cadadr (caa! daa der))
+; (cddadr (cuh de daa! der))
+; (caaddr (caa aa! de der))
+; (cdaddr (cuh daa! de der))
+; (cadddr (caa! de de der))
+; (cddddr (cuh de! de de der))
+; (caaaaar (caa aa aa aa are!))
+; (cdaaaar (cuh daa! aa aa are))
+; (cadaaar (caa! daa aa are))
+; (cddaaar (cuh de daa! aa are))
+; (caadaar (caa aa daa! are))
+; (cdadaar (cuh daa! daa are))
+; (caddaar (caa! de daa are))
+; (cdddaar (cuh de! de daa are))
+; (caaadar (caa aa aa! dar))
+; (cdaadar (cuh daa! aa dar))
+; (cadadar (caa! daa dar))
+; (cddadar (cuh de daa! dar))
+; (caaddar (caa aa! de dar))
+; (cdaddar (cuh daa! de dar))
+; (cadddar (caa! de de dar))
+; (cddddar (cuh de! de de dar))
+; (caaaadr (caa aa aa aa! der))
+; (cdaaadr (cuh daa! aa aa der))
+; (cadaadr (caa! daa aa der))
+; (cddaadr (cuh de daa! aa der))
+; (caadadr (caa aa daa! der))
+; (cdadadr (cuh daa! daa der))
+; (caddadr (caa! de daa der))
+; (cdddadr (cuh de! de daa der))
+; (caaaddr (caa aa aa! de der))
+; (cdaaddr (cuh daa! aa de der))
+; (cadaddr (caa! daa de der))
+; (cddaddr (cuh de daa! de der))
+; (caadddr (caa aa! de de der))
+; (cdadddr (cuh daa! de de der))
+; (caddddr (caa! de de de der))
+; (cdddddr (cuh de! de de de der))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/query.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/query.scm
new file mode 100644
index 0000000..f103ac2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/query.scm
@@ -0,0 +1,667 @@
+;;;;QUERY SYSTEM FROM SECTION 4.4.4 OF
+;;;; STRUCTURE AND INTERPRETATION OF COMPUTER PROGRAMS
+
+;;;;Matches code in ch4.scm
+;;;;Includes:
+;;;;  -- supporting code from 4.1, chapter 3, and instructor's manual
+;;;;  -- data base from Section 4.4.1 -- see microshaft-data-base below
+
+;;;;This file can be loaded into Scheme as a whole.
+;;;;In order to run the query system, the Scheme must support streams.
+
+;;;;NB. PUT's are commented out and no top-level table is set up.
+;;;;Instead use initialize-data-base (from manual), supplied in this file.
+
+
+;;;SECTION 4.4.4.1
+;;;The Driver Loop and Instantiation
+
+(define input-prompt ";;; Query input:")
+(define output-prompt ";;; Query results:")
+
+(define (query-driver-loop)
+  (prompt-for-input input-prompt)
+  (let ((q (query-syntax-process (read))))
+    (cond ((assertion-to-be-added? q)
+           (add-rule-or-assertion! (add-assertion-body q))
+           (newline)
+           (display "Assertion added to data base.")
+           (query-driver-loop))
+          (else
+           (newline)
+           (display output-prompt)
+           ;; [extra newline at end] (announce-output output-prompt)
+           (display-stream
+            (stream-map
+             (lambda (frame)
+               (instantiate q
+                            frame
+                            (lambda (v f)
+                              (contract-question-mark v))))
+             (qeval q (singleton-stream '()))))
+           (query-driver-loop)))))
+
+(define (instantiate exp frame unbound-var-handler)
+  (define (copy exp)
+    (cond ((var? exp)
+           (let ((binding (binding-in-frame exp frame)))
+             (if binding
+                 (copy (binding-value binding))
+                 (unbound-var-handler exp frame))))
+          ((pair? exp)
+           (cons (copy (car exp)) (copy (cdr exp))))
+          (else exp)))
+  (copy exp))
+
+
+;;;SECTION 4.4.4.2
+;;;The Evaluator
+
+(define (qeval query frame-stream)
+  (let ((qproc (get (type query) 'qeval)))
+    (if qproc
+        (qproc (contents query) frame-stream)
+        (simple-query query frame-stream))))
+
+;;;Simple queries
+
+(define (simple-query query-pattern frame-stream)
+  (stream-flatmap
+   (lambda (frame)
+     (stream-append-delayed
+      (find-assertions query-pattern frame)
+      (delay (apply-rules query-pattern frame))))
+   frame-stream))
+
+;;;Compound queries
+
+(define (conjoin conjuncts frame-stream)
+  (if (empty-conjunction? conjuncts)
+      frame-stream
+      (conjoin (rest-conjuncts conjuncts)
+               (qeval (first-conjunct conjuncts)
+                      frame-stream))))
+
+;;(put 'and 'qeval conjoin)
+
+
+(define (disjoin disjuncts frame-stream)
+  (if (empty-disjunction? disjuncts)
+      the-empty-stream
+      (interleave-delayed
+       (qeval (first-disjunct disjuncts) frame-stream)
+       (delay (disjoin (rest-disjuncts disjuncts)
+                       frame-stream)))))
+
+;;(put 'or 'qeval disjoin)
+
+;;;Filters
+
+(define (negate operands frame-stream)
+  (stream-flatmap
+   (lambda (frame)
+     (if (stream-null? (qeval (negated-query operands)
+                              (singleton-stream frame)))
+         (singleton-stream frame)
+         the-empty-stream))
+   frame-stream))
+
+;;(put 'not 'qeval negate)
+
+(define (lisp-value call frame-stream)
+  (stream-flatmap
+   (lambda (frame)
+     (if (execute
+          (instantiate
+           call
+           frame
+           (lambda (v f)
+             (error "Unknown pat var -- LISP-VALUE" v))))
+         (singleton-stream frame)
+         the-empty-stream))
+   frame-stream))
+
+;;(put 'lisp-value 'qeval lisp-value)
+
+(define (execute exp)
+  (apply (eval (predicate exp))    ; (eval (...) user-initial-environment)
+         (args exp)))
+
+(define (always-true ignore frame-stream) frame-stream)
+
+;;(put 'always-true 'qeval always-true)
+
+;;;SECTION 4.4.4.3
+;;;Finding Assertions by Pattern Matching
+
+(define (find-assertions pattern frame)
+  (stream-flatmap (lambda (datum)
+                    (check-an-assertion datum pattern frame))
+                  (fetch-assertions pattern frame)))
+
+(define (check-an-assertion assertion query-pat query-frame)
+  (let ((match-result
+         (pattern-match query-pat assertion query-frame)))
+    (if (eq? match-result 'failed)
+        the-empty-stream
+        (singleton-stream match-result))))
+
+(define (pattern-match pat dat frame)
+  (cond ((eq? frame 'failed) 'failed)
+        ((equal? pat dat) frame)
+        ((var? pat) (extend-if-consistent pat dat frame))
+        ((and (pair? pat) (pair? dat))
+         (pattern-match (cdr pat)
+                        (cdr dat)
+                        (pattern-match (car pat)
+                                       (car dat)
+                                       frame)))
+        (else 'failed)))
+
+(define (extend-if-consistent var dat frame)
+  (let ((binding (binding-in-frame var frame)))
+    (if binding
+        (pattern-match (binding-value binding) dat frame)
+        (extend var dat frame))))
+
+;;;SECTION 4.4.4.4
+;;;Rules and Unification
+
+(define (apply-rules pattern frame)
+  (stream-flatmap (lambda (rule)
+                    (apply-a-rule rule pattern frame))
+                  (fetch-rules pattern frame)))
+
+(define (apply-a-rule rule query-pattern query-frame)
+  (let ((clean-rule (rename-variables-in rule)))
+    (let ((unify-result
+           (unify-match query-pattern
+                        (conclusion clean-rule)
+                        query-frame)))
+      (if (eq? unify-result 'failed)
+          the-empty-stream
+          (qeval (rule-body clean-rule)
+                 (singleton-stream unify-result))))))
+
+(define (rename-variables-in rule)
+  (let ((rule-application-id (new-rule-application-id)))
+    (define (tree-walk exp)
+      (cond ((var? exp)
+             (make-new-variable exp rule-application-id))
+            ((pair? exp)
+             (cons (tree-walk (car exp))
+                   (tree-walk (cdr exp))))
+            (else exp)))
+    (tree-walk rule)))
+
+(define (unify-match p1 p2 frame)
+  (cond ((eq? frame 'failed) 'failed)
+        ((equal? p1 p2) frame)
+        ((var? p1) (extend-if-possible p1 p2 frame))
+        ((var? p2) (extend-if-possible p2 p1 frame)) ; {\em ; ***}
+        ((and (pair? p1) (pair? p2))
+         (unify-match (cdr p1)
+                      (cdr p2)
+                      (unify-match (car p1)
+                                   (car p2)
+                                   frame)))
+        (else 'failed)))
+
+(define (extend-if-possible var val frame)
+  (let ((binding (binding-in-frame var frame)))
+    (cond (binding
+           (unify-match
+            (binding-value binding) val frame))
+          ((var? val)                     ; {\em ; ***}
+           (let ((binding (binding-in-frame val frame)))
+             (if binding
+                 (unify-match
+                  var (binding-value binding) frame)
+                 (extend var val frame))))
+          ((depends-on? val var frame)    ; {\em ; ***}
+           'failed)
+          (else (extend var val frame)))))
+
+(define (depends-on? exp var frame)
+  (define (tree-walk e)
+    (cond ((var? e)
+           (if (equal? var e)
+               true
+               (let ((b (binding-in-frame e frame)))
+                 (if b
+                     (tree-walk (binding-value b))
+                     false))))
+          ((pair? e)
+           (or (tree-walk (car e))
+               (tree-walk (cdr e))))
+          (else false)))
+  (tree-walk exp))
+
+;;;SECTION 4.4.4.5
+;;;Maintaining the Data Base
+
+(define THE-ASSERTIONS the-empty-stream)
+
+(define (fetch-assertions pattern frame)
+  (if (use-index? pattern)
+      (get-indexed-assertions pattern)
+      (get-all-assertions)))
+
+(define (get-all-assertions) THE-ASSERTIONS)
+
+(define (get-indexed-assertions pattern)
+  (get-stream (index-key-of pattern) 'assertion-stream))
+
+(define (get-stream key1 key2)
+  (let ((s (get key1 key2)))
+    (if s s the-empty-stream)))
+
+(define THE-RULES the-empty-stream)
+
+(define (fetch-rules pattern frame)
+  (if (use-index? pattern)
+      (get-indexed-rules pattern)
+      (get-all-rules)))
+
+(define (get-all-rules) THE-RULES)
+
+(define (get-indexed-rules pattern)
+  (stream-append
+   (get-stream (index-key-of pattern) 'rule-stream)
+   (get-stream '? 'rule-stream)))
+
+(define (add-rule-or-assertion! assertion)
+  (if (rule? assertion)
+      (add-rule! assertion)
+      (add-assertion! assertion)))
+
+(define (add-assertion! assertion)
+  (store-assertion-in-index assertion)
+  (let ((old-assertions THE-ASSERTIONS))
+    (set! THE-ASSERTIONS
+          (cons-stream assertion old-assertions))
+    'ok))
+
+(define (add-rule! rule)
+  (store-rule-in-index rule)
+  (let ((old-rules THE-RULES))
+    (set! THE-RULES (cons-stream rule old-rules))
+    'ok))
+
+(define (store-assertion-in-index assertion)
+  (if (indexable? assertion)
+      (let ((key (index-key-of assertion)))
+        (let ((current-assertion-stream
+               (get-stream key 'assertion-stream)))
+          (put key
+               'assertion-stream
+               (cons-stream assertion
+                            current-assertion-stream))))))
+
+(define (store-rule-in-index rule)
+  (let ((pattern (conclusion rule)))
+    (if (indexable? pattern)
+        (let ((key (index-key-of pattern)))
+          (let ((current-rule-stream
+                 (get-stream key 'rule-stream)))
+            (put key
+                 'rule-stream
+                 (cons-stream rule
+                              current-rule-stream)))))))
+
+(define (indexable? pat)
+  (or (constant-symbol? (car pat))
+      (var? (car pat))))
+
+(define (index-key-of pat)
+  (let ((key (car pat)))
+    (if (var? key) '? key)))
+
+(define (use-index? pat)
+  (constant-symbol? (car pat)))
+
+;;;SECTION 4.4.4.6
+;;;Stream operations
+
+(define (stream-append-delayed s1 delayed-s2)
+  (if (stream-null? s1)
+      (force delayed-s2)
+      (cons-stream
+       (stream-car s1)
+       (stream-append-delayed (stream-cdr s1) delayed-s2))))
+
+(define (interleave-delayed s1 delayed-s2)
+  (if (stream-null? s1)
+      (force delayed-s2)
+      (cons-stream
+       (stream-car s1)
+       (interleave-delayed (force delayed-s2)
+                           (delay (stream-cdr s1))))))
+
+(define (stream-flatmap proc s)
+  (flatten-stream (stream-map proc s)))
+
+(define (flatten-stream stream)
+  (if (stream-null? stream)
+      the-empty-stream
+      (interleave-delayed
+       (stream-car stream)
+       (delay (flatten-stream (stream-cdr stream))))))
+
+
+(define (singleton-stream x)
+  (cons-stream x the-empty-stream))
+
+
+;;;SECTION 4.4.4.7
+;;;Query syntax procedures
+
+(define (type exp)
+  (if (pair? exp)
+      (car exp)
+      (error "Unknown expression TYPE" exp)))
+
+(define (contents exp)
+  (if (pair? exp)
+      (cdr exp)
+      (error "Unknown expression CONTENTS" exp)))
+
+(define (assertion-to-be-added? exp)
+  (eq? (type exp) 'assert!))
+
+(define (add-assertion-body exp)
+  (car (contents exp)))
+
+(define (empty-conjunction? exps) (null? exps))
+(define (first-conjunct exps) (car exps))
+(define (rest-conjuncts exps) (cdr exps))
+
+(define (empty-disjunction? exps) (null? exps))
+(define (first-disjunct exps) (car exps))
+(define (rest-disjuncts exps) (cdr exps))
+
+(define (negated-query exps) (car exps))
+
+(define (predicate exps) (car exps))
+(define (args exps) (cdr exps))
+
+
+(define (rule? statement)
+  (tagged-list? statement 'rule))
+
+(define (conclusion rule) (cadr rule))
+
+(define (rule-body rule)
+  (if (null? (cddr rule))
+      '(always-true)
+      (caddr rule)))
+
+(define (query-syntax-process exp)
+  (map-over-symbols expand-question-mark exp))
+
+(define (map-over-symbols proc exp)
+  (cond ((pair? exp)
+         (cons (map-over-symbols proc (car exp))
+               (map-over-symbols proc (cdr exp))))
+        ((symbol? exp) (proc exp))
+        (else exp)))
+
+(define (expand-question-mark symbol)
+  (let ((chars (symbol->string symbol)))
+    (if (string=? (substring chars 0 1) "?")
+        (list '?
+              (string->symbol
+               (substring chars 1 (string-length chars))))
+        symbol)))
+
+(define (var? exp)
+  (tagged-list? exp '?))
+
+(define (constant-symbol? exp) (symbol? exp))
+
+(define rule-counter 0)
+
+(define (new-rule-application-id)
+  (set! rule-counter (+ 1 rule-counter))
+  rule-counter)
+
+(define (make-new-variable var rule-application-id)
+  (cons '? (cons rule-application-id (cdr var))))
+
+(define (contract-question-mark variable)
+  (string->symbol
+   (string-append "?" 
+     (if (number? (cadr variable))
+         (string-append (symbol->string (caddr variable))
+                        "-"
+                        (number->string (cadr variable)))
+         (symbol->string (cadr variable))))))
+
+
+;;;SECTION 4.4.4.8
+;;;Frames and bindings
+(define (make-binding variable value)
+  (cons variable value))
+
+(define (binding-variable binding)
+  (car binding))
+
+(define (binding-value binding)
+  (cdr binding))
+
+
+(define (binding-in-frame variable frame)
+  (assoc variable frame))
+
+(define (extend variable value frame)
+  (cons (make-binding variable value) frame))
+
+
+;;;;From Section 4.1
+
+(define (tagged-list? exp tag)
+  (if (pair? exp)
+      (eq? (car exp) tag)
+      false))
+
+(define (prompt-for-input string)
+  (newline) (newline) (display string) (newline))
+
+
+;;;;Stream support from Chapter 3
+
+(define (stream-map proc s)
+  (if (stream-null? s)
+      the-empty-stream
+      (cons-stream (proc (stream-car s))
+                   (stream-map proc (stream-cdr s)))))
+
+(define (stream-for-each proc s)
+  (if (stream-null? s)
+      'done
+      (begin (proc (stream-car s))
+             (stream-for-each proc (stream-cdr s)))))
+
+(define (display-stream s)
+  (stream-for-each display-line s))
+(define (display-line x)
+  (newline)
+  (display x))
+
+(define (stream-filter pred stream)
+  (cond ((stream-null? stream) the-empty-stream)
+        ((pred (stream-car stream))
+         (cons-stream (stream-car stream)
+                      (stream-filter pred
+                                     (stream-cdr stream))))
+        (else (stream-filter pred (stream-cdr stream)))))
+
+(define (stream-append s1 s2)
+  (if (stream-null? s1)
+      s2
+      (cons-stream (stream-car s1)
+                   (stream-append (stream-cdr s1) s2))))
+
+(define (interleave s1 s2)
+  (if (stream-null? s1)
+      s2
+      (cons-stream (stream-car s1)
+                   (interleave s2 (stream-cdr s1)))))
+
+;;;;Table support from Chapter 3, Section 3.3.3 (local tables)
+
+(define (make-table)
+  (let ((local-table (list '*table*)))
+    (define (lookup key-1 key-2)
+      (let ((subtable (assoc key-1 (cdr local-table))))
+        (if subtable
+            (let ((record (assoc key-2 (cdr subtable))))
+              (if record
+                  (cdr record)
+                  false))
+            false)))
+    (define (insert! key-1 key-2 value)
+      (let ((subtable (assoc key-1 (cdr local-table))))
+        (if subtable
+            (let ((record (assoc key-2 (cdr subtable))))
+              (if record
+                  (set-cdr! record value)
+                  (set-cdr! subtable
+                            (cons (cons key-2 value)
+                                  (cdr subtable)))))
+            (set-cdr! local-table
+                      (cons (list key-1
+                                  (cons key-2 value))
+                            (cdr local-table)))))
+      'ok)    
+    (define (dispatch m)
+      (cond ((eq? m 'lookup-proc) lookup)
+            ((eq? m 'insert-proc!) insert!)
+            (else (error "Unknown operation -- TABLE" m))))
+    dispatch))
+
+;;;; From instructor's manual
+
+(define get '())
+
+(define put '())
+
+(define (initialize-data-base rules-and-assertions)
+  (define (deal-out r-and-a rules assertions)
+    (cond ((null? r-and-a)
+           (set! THE-ASSERTIONS (list->stream assertions))
+           (set! THE-RULES (list->stream rules))
+           'done)
+          (else
+           (let ((s (query-syntax-process (car r-and-a))))
+             (cond ((rule? s)
+                    (store-rule-in-index s)
+                    (deal-out (cdr r-and-a)
+                              (cons s rules)
+                              assertions))
+                   (else
+                    (store-assertion-in-index s)
+                    (deal-out (cdr r-and-a)
+                              rules
+                              (cons s assertions))))))))
+  (let ((operation-table (make-table)))
+    (set! get (operation-table 'lookup-proc))
+    (set! put (operation-table 'insert-proc!)))
+  (put 'and 'qeval conjoin)
+  (put 'or 'qeval disjoin)
+  (put 'not 'qeval negate)
+  (put 'lisp-value 'qeval lisp-value)
+  (put 'always-true 'qeval always-true)
+  (deal-out rules-and-assertions '() '()))
+
+;; Do following to reinit the data base from microshaft-data-base
+;;  in Scheme (not in the query driver loop)
+;; (initialize-data-base microshaft-data-base)
+
+(define microshaft-data-base
+  '(
+;; from section 4.4.1
+(address (Bitdiddle Ben) (Slumerville (Ridge Road) 10))
+(job (Bitdiddle Ben) (computer wizard))
+(salary (Bitdiddle Ben) 60000)
+
+(address (Hacker Alyssa P) (Cambridge (Mass Ave) 78))
+(job (Hacker Alyssa P) (computer programmer))
+(salary (Hacker Alyssa P) 40000)
+(supervisor (Hacker Alyssa P) (Bitdiddle Ben))
+
+(address (Fect Cy D) (Cambridge (Ames Street) 3))
+(job (Fect Cy D) (computer programmer))
+(salary (Fect Cy D) 35000)
+(supervisor (Fect Cy D) (Bitdiddle Ben))
+
+(address (Tweakit Lem E) (Boston (Bay State Road) 22))
+(job (Tweakit Lem E) (computer technician))
+(salary (Tweakit Lem E) 25000)
+(supervisor (Tweakit Lem E) (Bitdiddle Ben))
+
+(address (Reasoner Louis) (Slumerville (Pine Tree Road) 80))
+(job (Reasoner Louis) (computer programmer trainee))
+(salary (Reasoner Louis) 30000)
+(supervisor (Reasoner Louis) (Hacker Alyssa P))
+
+(supervisor (Bitdiddle Ben) (Warbucks Oliver))
+
+(address (Warbucks Oliver) (Swellesley (Top Heap Road)))
+(job (Warbucks Oliver) (administration big wheel))
+(salary (Warbucks Oliver) 150000)
+
+(address (Scrooge Eben) (Weston (Shady Lane) 10))
+(job (Scrooge Eben) (accounting chief accountant))
+(salary (Scrooge Eben) 75000)
+(supervisor (Scrooge Eben) (Warbucks Oliver))
+
+(address (Cratchet Robert) (Allston (N Harvard Street) 16))
+(job (Cratchet Robert) (accounting scrivener))
+(salary (Cratchet Robert) 18000)
+(supervisor (Cratchet Robert) (Scrooge Eben))
+
+(address (Aull DeWitt) (Slumerville (Onion Square) 5))
+(job (Aull DeWitt) (administration secretary))
+(salary (Aull DeWitt) 25000)
+(supervisor (Aull DeWitt) (Warbucks Oliver))
+
+(can-do-job (computer wizard) (computer programmer))
+(can-do-job (computer wizard) (computer technician))
+
+(can-do-job (computer programmer)
+            (computer programmer trainee))
+
+(can-do-job (administration secretary)
+            (administration big wheel))
+
+(rule (lives-near ?person-1 ?person-2)
+      (and (address ?person-1 (?town . ?rest-1))
+           (address ?person-2 (?town . ?rest-2))
+           (not (same ?person-1 ?person-2))))
+
+(rule (same ?x ?x))
+
+(rule (wheel ?person)
+      (and (supervisor ?middle-manager ?person)
+           (supervisor ?x ?middle-manager)))
+
+(rule (outranked-by ?staff-person ?boss)
+      (or (supervisor ?staff-person ?boss)
+          (and (supervisor ?staff-person ?middle-manager)
+               (outranked-by ?middle-manager ?boss))))
+))
+
+
+;;; Added at Berkeley:
+
+(define (query)
+  (initialize-data-base '())
+  (query-driver-loop))
+
+(define (aa query)
+  (add-rule-or-assertion!
+    (add-assertion-body
+      (query-syntax-process (list 'assert! query)))))
+
+(initialize-data-base '())
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/ref-man.txt b/js/games/nluqo.github.io/~bh/61a-pages/Lib/ref-man.txt
new file mode 100644
index 0000000..76bfb85
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/ref-man.txt
@@ -0,0 +1,148 @@
+Reference Manual for the OOP Language
+
+There are only three procedures that you need to use:  define-class,
+which defines a class; instantiate, which takes a class as its argument
+and returns an instance of the class; and ask, which asks an object to do
+something.  Here are the explanations of the procedures:
+
+
+ASK: (ask object message . bigit args)
+
+Ask gets a method from object corresponding to message.  If the object
+has such a method, invoke it with the given args; otherwise it's an error.
+
+
+INSTANTIATE: (instantiate class . arguments)
+
+Instantiate creates a new instance of the given class, initializes it,
+and returns it.  To initialize a class, instantiate runs the initialize
+clauses of all the parent classes of the object and then runs the
+initialize clause of this class.
+
+The extra arguments to instantiate give the values of the new object's
+instantiation variables.  So if you say
+
+(define-class (account balance) ...)
+
+then saying
+
+(define my-acct (instantiate account 100))
+
+will cause my-acct's balance variable to be bound to 100.
+
+
+DEFINE-CLASS:
+
+(define-class (class-name args...) clauses...)
+
+This defines a new class named class-name.  The instantiation arguments
+for this class are args.  (See the explanation of instantiate above.)
+
+The rest of the arguments to define-class are various clauses of the
+following types.  All clauses are optional.  You can have any number of
+method clauses, in any order.
+
+
+(METHOD (message arguments...) body)
+
+A method clause gives the class a method corresponding to the message,
+with the given arguments and body.  A class definition may contain any
+number of method clauses.  You invoke methods with ask.  For example, say
+there's an object with a
+
+(method (add x y) (+ x y)) 
+
+clause.  Then (ask object 'add 2 5) returns 7.
+
+Inside a method, the variable self is bound to the object whose method this
+is.  (Note that self might be an instance of a child class of the class in
+which the method is defined.)  A method defined within a particular class
+has access to the instantiation variables, instance variables, and class
+variables that are defined within the same class, but does not have access
+to variables defined in parent or child classes.  (This is similar to the
+scope rules for variables within procedures outside of the OOP system.)
+
+Any method that is usable within a given object can invoke any other such
+method by invoking (ask self message).  However, if a method wants to invoke
+the method of the same name within a parent class, it must instead ask for
+that explicitly by saying
+
+(usual message args...)
+
+where message is the name of the method you want and args... are the
+arguments to the method.
+
+
+(INSTANCE-VARS (var1 value1) (var2 value2) ...)
+
+Instance-vars sets up local state variables var1, var2, etc.  Each
+instance of the class will have its own private set of variables with
+these names.  These are visible inside the bodies of the methods and the
+initialization code within the same class definition.  The initial values
+of the variables are calculated when an instance is created by evaluating
+the expressions value1, value2, etc.  There can be any number of
+variables.  If there is no instance-vars clause then the instances of
+this class won't have any instance variables.  It is an error for a class
+definition to contain more than one instance-vars clause.
+
+
+(CLASS-VARS (var1 value1) (var2 value2) ...)
+
+
+Class-vars sets up local state variables var1, var2, etc.  The class has
+only one set of variables with these names, shared by every instance of
+the class.  (Compare the instance-vars clause described above.)  These
+variables are visible inside the bodies of the methods and the
+initialization code within the same class definition.  The initial values
+of the variables are calculated when the class is defined by evaluating
+the expressions value1, value2, etc.  There can be any number of
+variables.  If there is no class-vars clause then the class won't have
+any class variables.  It is an error for a class definition to contain
+more than one class-vars clause.
+
+
+(PARENT (parent1 args...) (parent2 args...))
+
+Parent defines the parents of a class.  The args are the arguments used
+to instantiate the parent objects.  For example, let's say that the
+rectangle class has two arguments: height and width:
+
+(define-class (rectangle height width) ...)
+
+A square is a kind of rectangle; the height and width of the square's
+rectangle are both the side-length of the square:
+
+(define-class (square side-length)
+  (parent (rectangle side-length side-length))
+  ...)
+
+When an object class doesn't have an explicit method for a message it
+receives, it looks for methods of that name in the definitions of the
+parent classes, in the order they appear in the parent clause.  The method
+that gets invoked is from the first parent class that recognizes the
+message.
+
+A method can invoke a parent's method of the same name with usual; see
+the notes on the method clause above.
+
+
+(DEFAULT-METHOD body)
+
+A default-method clause specifies the code that an object should execute
+if it receives an unrecognized message (i.e., a message that does not
+name a method in this class or any of its superclasses).  When the body is
+executed, the variable message is bound to the message, and the variable
+args is bound to a list of the additional arguments to ask.
+
+
+(INITIALIZE body)
+
+The body of the initialize clause contains code that is executed whenever
+an instance of this class is created.
+
+If the class has parents, their initialize code gets executed before the
+initialize clause in the class itself.  If the class has two or more
+parents, their initialize code is executed in the order that they appear
+in the parent clause.
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm
new file mode 100644
index 0000000..42c0e6b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/resist.scm
@@ -0,0 +1,79 @@
+(define (make-resistor resistance)
+  (attach-type 'resistor resistance))
+
+(define (resistor? ckt)
+  (eq? (type ckt) 'resistor))
+
+(define (make-series ckt1 ckt2)
+  (attach-type 'series (list ckt1 ckt2)))
+
+(define (series? ckt)
+  (eq? (type ckt) 'series))
+
+(define (make-parallel ckt1 ckt2)
+  (attach-type 'parallel (list ckt1 ckt2)))
+
+(define (parallel? ckt)
+  (eq? (type ckt) 'parallel))
+
+
+(define (resistance ckt)
+  (cond ((resistor? ckt)
+	 (resistance-resistor (contents ckt)))
+	((parallel? ckt)
+	 (resistance-parallel (contents ckt)))
+	((series? ckt)
+	 (resistance-series (contents ckt)))))
+
+(define (conductance ckt)
+  (cond ((resistor? ckt)
+	 (conductance-resistor (contents ckt)))
+	((parallel? ckt)
+	 (conductance-parallel (contents ckt)))
+	((series? ckt)
+	 (conductance-series (contents ckt)))))
+
+
+(define (resistance-resistor resistor)
+  resistor)
+
+(define (conductance-resistor resistor)
+  (/ 1 (resistance-resistor resistor)))
+
+
+(define (resistance-series ckt)
+  (+ (resistance (left-branch ckt))
+     (resistance (right-branch ckt))))
+
+(define (conductance-series ckt)
+  (/ 1 (resistance-series ckt)))
+
+(define (conductance-parallel ckt)
+  (+ (conductance (left-branch ckt))
+     (conductance (right-branch ckt))))
+
+(define (resistance-parallel ckt)
+  (/ 1 (conductance-parallel ckt)))
+
+
+
+(define left-branch car)
+(define right-branch cadr)
+(define attach-type cons)
+(define type car)
+(define contents cdr)
+
+
+
+(define (repeated f n)
+  (lambda (x)
+    (if (= n 0)
+	x
+	((repeated f (-1+ n)) (f x)))))
+
+(define (L-extend base series-part parallel-part)
+  (make-series series-part (make-parallel parallel-part base)))
+
+(define (ladder-extension stages base series-part parallel-part)
+  ((repeated (lambda (x) (L-extend x series-part parallel-part)) stages)
+   base))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/review b/js/games/nluqo.github.io/~bh/61a-pages/Lib/review
new file mode 100644
index 0000000..63a4837
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/review
@@ -0,0 +1,54 @@
+CS 60A			Course summary
+
+
+You aren't expected to understand this yet, but keep it for reference
+during the semester and see if it starts to make sense!
+
+------------------------------
+
+ABSTRACTION:
+    voluntary submission to a discipline
+    in order to gain expressive power
+
+------------------------------
+
+1.  FUNCTIONAL PROGRAMMING
+	focus:	repeatable input-output behavior
+		composition of functions to layer complexity
+	hidden:	side effect mechanisms (assignment)
+		internal control structure of procedures
+
+2.  DATA ABSTRACTION
+	focus:	semantic view of data aggregates
+	hidden:	actual representation in memory
+
+3.  OBJECT ORIENTED PROGRAMMING
+	focus:	time-varying local state
+		metaphor of many autonomous actors
+	hidden:	scheduling of interactions within the one computer
+		procedural methods within an object
+
+4.  STREAMS
+	focus:	metaphor of parallel operations on data aggregates
+		signal processing model of computation
+	hidden:	actual sequence of events in the computation
+
+5.  PROGRAMMING LANGUAGES
+	focus:	provide a metaphor for computation
+		embody common elements of large groups of problems
+	hidden:	technology-specific implementation medium
+		storage allocation, etc.
+
+6.  LOGIC PROGRAMMING
+	focus:	declarative representation of knowledge
+		inference rules
+	hidden:	inference algorithm
+
+
+Note: each of these abstractions can be approached "from above," focusing
+on the view of computing that the abstraction provides, or "from below,"
+focusing on the techniques by which the abstraction is implemented.  In
+the metacircular evaluator we emphasize the view from below, since we've
+been working all along with the view from above.  In the query evaluator
+we emphasize the view from above, barely mentioning the implementation
+techniques.  In our discussion of object programming both views are used.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/rps.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/rps.scm
new file mode 100644
index 0000000..70c2ed9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/rps.scm
@@ -0,0 +1,49 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;  The PLAY-LOOP procedure takes as its arguments two game
+;;  strategies, and plays an iterated game of 25 rounds.
+;;  A strategy is a procedure that takes two arguments:
+;;  a history of this player's previous plays and 
+;;  a history of the other player's previous plays. The strategy
+;;  returns one of the words ROCK, PAPER, or SCISSORS.  A history
+;;  is a list of previous plays, most recent first.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define (play-loop strat0 strat1)
+  (define (play-loop-iter strat0 strat1
+                          history0 history1
+                          score0 score1
+                          rounds)
+    (cond ((= rounds 0) (list score0 score1))
+          (else (YOU-WRITE-THIS-PART)) ))
+  (play-loop-iter strat0 strat1 '() '() 0 0 25) )
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; This predicate procedure takes two plays as arguments and
+;; returns TRUE if the first beats the second.
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define (beats? play0 play1)
+  (cond ((equal? play0 'paper) (equal? play1 'rock))
+        ((equal? play0 'scissors) (equal? play1 'paper))
+        ((equal? play0 'rock) (equal? play1 'scissors)) ))
+
+;; A sampler of strategies
+
+(define (tit-for-tat my-history other-history)
+  (if (empty? my-history)
+      'rock ;; arbitrary -- could be a random choice here
+      (first other-history) ))
+
+(define (random-strategy my-history other-history)
+  (nth (random 3) '(rock paper scissors)) )
+
+(define (heavy-metal my-history other-history)
+  'scissors)
+
+(define (hard-rock my-history other-history)
+  'rock)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/scheme1.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/scheme1.scm
new file mode 100644
index 0000000..09be791
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/scheme1.scm
@@ -0,0 +1,216 @@
+;; Simple evaluator for Scheme without DEFINE, using substitution model.
+;; Version 1: No DEFINE, only primitive names are global.
+
+;; The "read-eval-print loop" (REPL):
+
+(define (scheme-1)
+  (display "Scheme-1: ")
+  (flush)
+  (print (eval-1 (read)))
+  (scheme-1))
+
+;; Two important procedures:
+;; EVAL-1 takes an expression and returns its value.
+;; APPLY-1 takes a procedure and a list of actual argument values, and
+;;  calls the procedure.
+;; They have these names to avoid conflict with STk's EVAL and APPLY,
+;;  which have similar meanings.
+
+;; Comments on EVAL-1:
+
+;; There are four basic expression types in Scheme:
+;;    1. self-evaluating (a/k/a constant) expressions: numbers, #t, etc.
+;;    2. symbols (variables)
+;;    3. special forms (in this evaluator, just QUOTE, IF, and LAMBDA)
+;;    4. procedure calls (can call a primitive or a LAMBDA-generated procedure)
+
+;; 1.  The value of a constant is itself.  Unlike real Scheme, an STk
+;; procedure is here considered a constant expression.  You can't type in
+;; procedure values, but the value of a global variable can be a procedure,
+;; and that value might get substituted for a parameter in the body of a
+;; higher-order function such as MAP, so the evaluator has to be ready to
+;; see a built-in procedure as an "expression."  Therefore, the procedure
+;; CONSTANT? includes a check for (PROCEDURE? EXP).
+
+;; 2.  In the substitution model, we should never actually evaluate a *local*
+;; variable name, because we should have substituted the actual value for
+;; the parameter name before evaluating the procedure body.
+
+;; In this simple evaluator, there is no DEFINE, and so the only *global*
+;; symbols are the ones representing primitive procedures.  We cheat a little
+;; by using STk's EVAL to get the values of these variables.
+
+;; 3.  The value of the expression (QUOTE FOO) is FOO -- the second element of
+;; the expression.
+
+;; To evaluate the expression (IF A B C) we first evaluate A; then, if A is
+;; true, we evaluate B; if A is false, we evaluate C.
+
+;; The value of a LAMBDA expression is the expression itself.  There is no
+;; work to do until we actually call the procedure.  (This won't be true
+;; when we write a more realistic interpreter that handles more Scheme
+;; features, but it works in the substitution model.)
+
+;; 4.  To evaluate a procedure call, we recursively evaluate all the
+;; subexpressions.  We call APPLY-1 to handle the actual procedure invocation.
+
+(define (eval-1 exp)
+  (cond ((constant? exp) exp)
+	((symbol? exp) (eval exp))	; use underlying Scheme's EVAL
+	((quote-exp? exp) (cadr exp))
+	((if-exp? exp)
+	 (if (eval-1 (cadr exp))
+	     (eval-1 (caddr exp))
+	     (eval-1 (cadddr exp))))
+	((lambda-exp? exp) exp)
+	((define-exp? exp)
+	 (eval (list 'define (cadr exp) (maybe-quote (eval-1 (caddr exp))))))
+	((pair? exp) (apply-1 (eval-1 (car exp))      ; eval the operator
+			      (map eval-1 (cdr exp))))
+	(else (error "bad expr: " exp))))
+
+
+;; Comments on APPLY-1:
+
+;; There are two kinds of procedures: primitive and LAMBDA-created.
+
+;; We recognize a primitive procedure using the PROCEDURE? predicate in
+;; the underlying STk interpreter.
+
+;; If the procedure isn't primitive, then it must be LAMBDA-created.
+;; In this interpreter (but not in later, more realistic ones), the value
+;; of a LAMBDA expression is the expression itself.  So (CADR PROC) is
+;; the formal parameter list, and (CADDR PROC) is the expression in the
+;; procedure body.
+
+;; To call the procedure, we must substitute the actual arguments for
+;; the formal parameters in the body; the result of this substitution is
+;; an expression which we can then evaluate with EVAL-1.
+
+(define (apply-1 proc args)
+  (cond ((procedure? proc)	; use underlying Scheme's APPLY
+	 (apply proc args))
+	((lambda-exp? proc)
+	 (eval-1 (substitute (caddr proc)   ; the body
+			     (cadr proc)    ; the formal parameters
+			     args           ; the actual arguments
+			     '())))	    ; bound-vars, see below
+	(else (error "bad proc: " proc))))
+
+
+;; Some trivial helper procedures:
+
+(define (constant? exp)
+  (or (number? exp) (boolean? exp) (string? exp) (procedure? exp)))
+
+(define (exp-checker type)
+  (lambda (exp) (and (pair? exp) (eq? (car exp) type))))
+
+(define quote-exp? (exp-checker 'quote))
+(define if-exp? (exp-checker 'if))
+(define lambda-exp? (exp-checker 'lambda))
+(define define-exp? (exp-checker 'define))
+
+
+;; SUBSTITUTE substitutes actual arguments for *free* references to the
+;; corresponding formal parameters.  For example, given the expression
+;;
+;;	((lambda (x y)
+;;	   ((lambda (x) (+ x y))
+;;	    (* x y)))
+;;	 5 8)
+;;
+;; the body of the procedure we're calling is
+;;
+;;	   ((lambda (x) (+ x y))
+;;	    (* x y))
+;;
+;; and we want to substitute 5 for X and 8 for Y, but the result should be
+;;
+;;	   ((lambda (x) (+ x 8))
+;;	    (* 5 8))
+;;
+;; and *NOT*
+;;
+;;	   ((lambda (5) (+ 5 8))
+;;	    (* 5 8))
+;;
+;; The X in (* X Y) is a "free reference," but the X in (LAMBDA (X) (+ X Y))
+;; is a "bound reference."
+;;
+;; To make this work, in its recursive calls, SUBSTITUTE keeps a list of
+;; bound variables in the current subexpression -- ones that shouldn't be
+;; substituted for -- in its argument BOUND.  This argument is the empty
+;; list in the top-level call to SUBSTITUTE from APPLY-1.
+
+;; Another complication is that when an argument value isn't a self-evaluating
+;; expression, we actually want to substitute the value *quoted*.  For example,
+;; consider the expression
+;;
+;;	((lambda (x) (first x)) 'foo)
+;;
+;; The actual argument value is FOO, but we want the result of the
+;; substitution to be
+;;
+;;	(first 'foo)
+;;
+;; and not
+;;
+;;	(first foo)
+;;
+;; because what we're going to do with this expression is try to evaluate
+;; it, and FOO would be an unbound variable.
+
+;; There is a strangeness in MAYBE-QUOTE, which must handle the
+;; case of a primitive procedure as the actual argument value; these
+;; procedures shouldn't be quoted.
+
+(define (substitute exp params args bound)
+  (cond ((constant? exp) exp)
+	((symbol? exp)
+	 (if (memq exp bound)
+	     exp
+	     (lookup exp params args)))
+	((quote-exp? exp) exp)
+	((lambda-exp? exp)
+	 (list 'lambda
+	       (cadr exp)
+	       (substitute (caddr exp) params args (append bound (cadr exp)))))
+	(else (map (lambda (subexp) (substitute subexp params args bound))
+		   exp))))
+
+(define (lookup name params args)
+  (cond ((null? params) name)
+	((eq? name (car params)) (maybe-quote (car args)))
+	(else (lookup name (cdr params) (cdr args)))))
+
+(define (maybe-quote value)
+  (cond ((lambda-exp? value) value)
+	((constant? value) value)
+	((procedure? value) value)	; real Scheme primitive procedure
+	(else (list 'quote value))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; Sample evaluation, computing factorial of 5:
+
+; Scheme-1: ((lambda (n)
+;	       ((lambda (f) (f f n))
+;		(lambda (f n)
+;		   (if (= n 0)
+;		       1
+;		       (* n (f f (- n 1))) )) ))
+;	     5)
+; 120
+
+;; Sample evaluation, using a primitive as argument to MAP:
+
+; Scheme-1: ((lambda (f n)
+;	       ((lambda (map) (map map f n))
+;		   (lambda (map f n)
+;		     (if (null? n)
+;		         '()
+;			 (cons (f (car n)) (map map f (cdr n))) )) ))
+;	      first
+;	      '(the rain in spain))
+; (t r i s)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/scmset b/js/games/nluqo.github.io/~bh/61a-pages/Lib/scmset
new file mode 100644
index 0000000..47f40aa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/scmset
@@ -0,0 +1,2 @@
+setenv SCM_INIT_PATH ~cs61a/scm/Init.scm
+setenv SCHEME_LIBRARY_PATH ~cs61a/slib/
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/serial.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/serial.scm
new file mode 100644
index 0000000..52a4597
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/serial.scm
@@ -0,0 +1,21 @@
+(define (make-serializer)
+  (let ((mutex (make-mutex)))
+    (lambda (p)
+      (define (serialized-p . args)
+        (mutex 'acquire)
+        (let ((val (apply p args)))
+          (mutex 'release)
+          val))
+      serialized-p)))
+
+(define (make-mutex)
+  (let ((cell (list false)))            
+    (define (the-mutex m)
+      (cond ((eq? m 'acquire)
+             (if (test-and-set! cell)
+                 (the-mutex 'acquire)))
+            ((eq? m 'release) (clear! cell))))
+    the-mutex))
+
+(define (clear! cell)
+  (set-car! cell false))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/small-world.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/small-world.scm
new file mode 100644
index 0000000..dcd6bd1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/small-world.scm
@@ -0,0 +1,28 @@
+;;; small-world.scm
+;;; Miniature game world for debugging the CS61A adventure game project.
+;;; You can load this instead of adv-world.scm, and reload it quickly
+;;; whenever you change a class.
+
+;;; How to use this file:
+;;; If, for example, your person class doesn't work, and you do something
+;;; like (define Matt (instantiate person 'Matt)), and then fix your
+;;; person class definition, Matt is still bound to the faulty person
+;;; object from before.  However, reloading this file whenever you
+;;; change something should redefine everything in your world with the
+;;; currently loaded (i.e. most recent) versions of your classes.
+
+(define 61A-Lab (instantiate place '61A-Lab))
+(define Lounge (instantiate place 'Lounge))
+(can-go 61A-Lab 'up Lounge)
+(can-go Lounge 'down 61A-Lab)
+;;;  Hopefully you'll see more of the world than this in real life
+;;;  while you're doing the project!
+
+(define homework-box (instantiate thing 'homework-box))
+(ask 61A-Lab 'appear homework-box)
+
+(define Coke (instantiate thing 'Coke))
+(ask Lounge 'appear Coke)
+
+(define laba (instantiate person 'Lab-assistant 61A-Lab))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/tables.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/tables.scm
new file mode 100644
index 0000000..010b712
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/tables.scm
@@ -0,0 +1,20 @@
+;;; Section 3.3.3 -- Tables
+
+;;; One-dimensional tables
+
+(define (lookup key table)
+  (let ((record (assoc key (cdr table))))
+    (if (not record)
+        #f
+        (cdr record))))
+
+(define (insert! key value table)
+  (let ((record (assoc key (cdr table))))
+    (if (not record)
+        (set-cdr! table
+                  (cons (cons key value) (cdr table)))
+        (set-cdr! record value)))
+  'ok)
+
+(define (make-table)
+  (list '*table*))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/test.logo b/js/games/nluqo.github.io/~bh/61a-pages/Lib/test.logo
new file mode 100644
index 0000000..bb2e15a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/test.logo
@@ -0,0 +1,39 @@
+to second :thing
+op first bf :thing
+end
+
+to twice :thing
+pr :thing
+pr :thing
+end
+
+to pigl :word
+if vowelp first :word [op word :word "ay]
+op pigl word bf :word first :word
+end
+
+to vowelp :let
+op memberp :let "aeiou
+end
+
+to piglatin :sent
+if emptyp :sent [op []]
+op fput pigl first :sent piglatin bf :sent
+end
+
+to factorial :n
+if :n=0 [output 1]
+output :n * factorial :n-1
+end
+
+to memberp :thing :list
+if emptyp :list [op "false]
+if equalp :thing first :list [op "true]
+op memberp :thing bf :list
+end
+
+to repeat :num :instr
+if :num=0 [stop]
+run :instr
+repeat :num-1 :instr
+end
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/tri.l b/js/games/nluqo.github.io/~bh/61a-pages/Lib/tri.l
new file mode 100644
index 0000000..90e3918
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/tri.l
@@ -0,0 +1,94 @@
+;; Program to solve triangles given partial information.
+
+;; Form of invocation is (triangle side1 side2 side3 angle1 angle2 angle3)
+;;   where each argument is zero if the corresponding side or angle is
+;;   unknown.  Angles are entered in degrees (but converted internally
+;;   to radians).  Angle1 is opposite side1, etc.  The program must be
+;;   given at least three knowns, at least one of which must be a side.
+
+;; First, here are some useful definitions from trig class:
+
+(define pi 3.14159)
+
+(define (square x) (* x x))
+
+(define (degrees rad) (* 180 (/ rad pi)))
+
+(define (radians deg) (* pi (/ deg 180)))
+
+(define (arcsin a) (atan a (sqrt (- 1 (square a)))))
+
+(define (arccos a) (atan (sqrt (- 1 (square a))) a))
+
+;; This is the top-level procedure
+
+(define (triangle a b c alpha beta gamma)
+
+  (define (triangle-rad a b c alpha beta gamma)
+
+;; The strategy is to keep increasing the number of sides we know, and at
+;; the end to make sure we know the angles too.  Here are some local
+;; procedures to count how many sides we know.  They are predicates that
+;; return true if we know at least so many sides (or angles sometimes).
+
+    (define (havethreesides) (not (or (= a 0) (= b 0) (= c 0))))
+
+    (define (havetwo a b c)
+      (cond ((= a 0) (not (or (= b 0) (= c 0))))
+	    (else (not (and (= b 0) (= c 0))))))
+    (define (havetwosides) (havetwo a b c))
+    (define (havetwoangles) (havetwo alpha beta gamma))
+
+    (define (haveone a b c)
+      (not (and (= a 0) (= b 0) (= c 0))))
+    (define (haveoneside) (haveone a b c))
+    (define (haveoneangle) (haveone alpha beta gamma))
+
+;; If we know all three sides we can use the law of cosines to find
+;; any angles that might be missing.
+
+    (define (solvethreesides)
+      (define (lawcosangle side1 side2 hyp)
+      	(arccos (/ (- (+ (square side1) (square side2)) (square hyp))
+	      (* 2 side1 side2))))
+      (define (sidesbad)
+	(define (tri-ineq a b c) (> (+ a b) c))
+	(not (and (tri-ineq a b c) (tri-ineq a c b) (tri-ineq b c a))))
+
+      (cond ((sidesbad) "Your sides fail the triangle inequality.")
+	    ((= alpha 0)
+	     (triangle-rad a b c (lawcosangle b c a) beta gamma))
+	    ((= beta 0)
+	     (triangle-rad a b c alpha (lawcosangle a c b) gamma))
+	    ((= gamma 0)
+	     (triangle-rad a b c alpha beta (lawcosangle a b c)))
+	    (else
+	     (list a b c (degrees alpha) (degrees beta) (degrees gamma)))))
+
+;; [You don't know about the procedure "list" yet, but it lets us return
+;; more than one number in a single result.]
+
+;; We invoke this procedure if we know two sides:
+
+    (define (solvetwosides)
+
+;; It'll make life easier if we rearrange things so that side C is unknown.
+
+      (cond ((not (haveoneangle)) "Must know at least three values.")
+	    ((= a 0) (triangle-rad b c a beta gamma alpha))
+	    ((= b 0) (triangle-rad a c b alpha gamma beta))
+	    (else "YOU FILL IN THE REST!")))
+
+;; This is the executable body of triangle-rad:
+
+    (cond ((havethreesides) (solvethreesides))
+	  ((havetwosides) (solvetwosides))
+	  ((haveoneside) (solveoneside))
+	  (else "Must know at least one side.")))
+
+;; This is the executable body of triangle.
+
+  (cond ((> (+ alpha beta gamma) 180)
+	 "Your angles add up to more than 180.")
+  	(else (triangle-rad a b c
+			    (radians alpha) (radians beta) (radians gamma)))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/turkey b/js/games/nluqo.github.io/~bh/61a-pages/Lib/turkey
new file mode 100644
index 0000000..1def834
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/turkey
@@ -0,0 +1,50 @@
+		MORTON THOMPSON'S TURKEY STUFFING
+
+From the book "Joe, the Wounded Tennis Player" by Morton Thompson,
+adapted by Craig Claiborne in the NY Times.
+
+1 apple, peeled, cored, and diced
+1 orange, peeled, seeded, and diced
+1 no. 2 can crushed pineapple, drained
+rind of one lemon, grated
+3 tablespoons chopped preserved ginger
+2 five-oz cans water chestnuts, drained and coarsely chopped
+2 teaspoons powdered mustard
+2 teaspoons caraway seeds
+3 teaspoons celery seeds
+2 teaspoons poppy seeds
+2 1/2 teaspoons oregano
+1 crushed bay leaf
+1/2 teaspoon mace
+1/4 teaspoon ground cloves
+1/2 teaspoon turmeric
+1/2 teaspoon marjoram
+1/2 teaspoon summer savory
+1 tablespoon poultry seasoning
+3/4 teaspoon sage
+3/4 teaspoon thyme
+1/2 teaspoon basil
+1/2 teaspoon chili powder
+1/4 cup finely chopped parsley
+5 cloves garlic, finely minced
+6 large ribs celery, chopped
+4 large onions, peeled and chopped
+5 dashes Tabasco sauce
+1 tablespoon salt
+6 cups fresh bread crumbs, or 3 packages bread crumbs
+3/4 pound ground veal
+1/2 pound ground fresh pork or sausage
+1/4 pound butter
+1 16-pound to 20-pound turkey
+
+In one bowl, combine the diced apple, orange, crushed pineapple,
+lemon rind, ginger, and chopped water chestnuts.  Mix well.
+
+In a second (huge) bowl, combine all the herbs and spices, the
+parsley, garlic, celery, onions, Tabasco, and salt.  Toss well.
+
+Add the remaining ingredients and the contents of the first bowl.
+Blend everything well with the fingers.  Stuff the turkey and
+skewer it.  Roast according to any standard recipe.  Any leftover
+stuffing may be frozen and used later for chickens, ducks, or
+another turkey.  [Or just cooked on the stove and mixed in --BH]
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/twenty-one.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/twenty-one.scm
new file mode 100644
index 0000000..0337c84
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/twenty-one.scm
@@ -0,0 +1,42 @@
+(define (twenty-one strategy)
+  (define (play-dealer customer-hand dealer-hand-so-far rest-of-deck)
+    (cond ((> (best-total dealer-hand-so-far) 21) 1)
+	  ((< (best-total dealer-hand-so-far) 17)
+	   (play-dealer customer-hand
+			(se dealer-hand-so-far (first rest-of-deck))
+			(bf rest-of-deck)))
+	  ((< (best-total customer-hand) (best-total dealer-hand-so-far)) -1)
+	  ((= (best-total customer-hand) (best-total dealer-hand-so-far)) 0)
+	  (else 1)))
+
+  (define (play-customer customer-hand-so-far dealer-up-card rest-of-deck)
+    (cond ((> (best-total customer-hand-so-far) 21) -1)
+	  ((strategy customer-hand-so-far dealer-up-card)
+	   (play-customer (se customer-hand-so-far (first rest-of-deck))
+			  dealer-up-card
+			  (bf rest-of-deck)))
+	  (else
+	   (play-dealer customer-hand-so-far
+			(se dealer-up-card (first rest-of-deck))
+			(bf rest-of-deck)))))
+
+  (let ((deck (make-deck)))
+    (play-customer (se (first deck) (first (bf deck)))
+		   (first (bf (bf deck)))
+		   (bf (bf (bf deck))))) )
+
+(define (make-ordered-deck)
+  (define (make-suit s)
+    (map (lambda (rank) (word rank s)) '(A 2 3 4 5 6 7 8 9 10 J Q K)) )
+  (se (make-suit 'H) (make-suit 'S) (make-suit 'D) (make-suit 'C)) )
+
+(define (make-deck)
+  (define (shuffle deck size)
+    (define (move-card in out which)
+      (if (= which 0)
+	  (se (first in) (shuffle (se (bf in) out) (-1+ size)))
+	  (move-card (bf in) (se (first in) out) (-1+ which)) ))
+    (if (= size 0)
+	deck
+    	(move-card deck '() (random size)) ))
+  (shuffle (make-ordered-deck) 52) )
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Lib/vambeval.scm b/js/games/nluqo.github.io/~bh/61a-pages/Lib/vambeval.scm
new file mode 100644
index 0000000..360800a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Lib/vambeval.scm
@@ -0,0 +1,511 @@
+;;;;Nondeterministic evaluator
+;;;;Different from the one in chapter 4 of SICP, in that it's based on the
+;;;; vanilla metacircular evaluator, rather than on the analyzing one.
+
+;;;;This file can be loaded into Scheme as a whole.
+;;;;Then you can initialize and start the evaluator by evaluating
+;;;; the expression (mce).
+
+;;;from section 4.1.4 -- must precede def of metacircular apply
+(define apply-in-underlying-scheme apply)
+
+;;;SECTION 4.1.1
+
+(define (ambeval exp env succeed fail)
+  (cond ((self-evaluating? exp) (succeed exp fail))
+	((variable? exp)
+	 (succeed (lookup-variable-value exp env)
+		  fail))
+	((quoted? exp) (succeed (text-of-quotation exp) fail))
+	((assignment? exp) (eval-assignment exp env succeed fail))
+	((definition? exp) (eval-definition exp env succeed fail))
+	((if? exp) (eval-if exp env succeed fail))
+	((lambda? exp)
+	 (succeed (make-procedure (lambda-parameters exp)
+				  (lambda-body exp)
+				  env)
+		  fail))
+	((begin? exp) 
+	 (eval-sequence (begin-actions exp) env succeed fail))
+	((cond? exp) (ambeval (cond->if exp) env succeed fail))
+        ((let? exp) (ambeval (let->combination exp) env succeed fail)) ;**
+        ((amb? exp) (eval-amb exp env succeed fail))                   ;**
+	((application? exp)
+	 (eval-application exp env succeed fail))
+	(else
+	 (error "Unknown expression type -- EVAL" exp))))
+
+(define (eval-application exp env succeed fail)
+  (ambeval (operator exp)
+	   env
+	   (lambda (proc fail2)
+	     (get-args (operands exp)
+		       env
+		       (lambda (args fail3)
+			 (execute-application proc args succeed fail3))
+		       fail2))
+	   fail))
+
+(define (get-args exps env succeed fail)
+  (if (null? exps)
+      (succeed '() fail)
+      (ambeval (car exps)
+	       env
+	       (lambda (arg fail2)
+		 (get-args (cdr exps)
+			   env
+			   (lambda (args fail3)
+			     (succeed (cons arg args)
+				      fail3))
+			   fail2))
+	       fail)))
+
+(define (execute-application procedure arguments succeed fail)
+  (cond ((primitive-procedure? procedure)
+         (succeed (apply-primitive-procedure procedure arguments) fail))
+        ((compound-procedure? procedure)
+         (eval-sequence
+           (procedure-body procedure)
+           (extend-environment
+             (procedure-parameters procedure)
+             arguments
+             (procedure-environment procedure))
+	  succeed
+	  fail))
+        (else
+         (error
+          "Unknown procedure type -- APPLY" procedure))))
+
+
+(define (eval-if exp env succeed fail)
+  (ambeval (if-predicate exp)
+	   env
+	   (lambda (pred-value fail2)
+	     (if (true? pred-value)
+		 (ambeval (if-consequent exp)
+			  env
+			  succeed
+			  fail2)
+		 (ambeval (if-alternative exp)
+			  env
+			  succeed
+			  fail2)))
+	   fail))
+
+(define (eval-sequence exps env succeed fail)
+  (define (loop first-exp rest-exps succeed fail)
+    (if (null? rest-exps)
+        (ambeval first-exp env succeed fail)
+	(ambeval first-exp
+		 env
+		 (lambda (first-value fail2)
+		   (loop (car rest-exps) (cdr rest-exps) succeed fail2))
+		 fail)))
+  (if (null? exps)
+      (error "Empty sequence")
+      (loop (car exps) (cdr exps) succeed fail)))
+
+(define (eval-definition exp env succeed fail)
+  (ambeval (definition-value exp)
+	   env
+	   (lambda (val fail2)
+	     (define-variable! (definition-variable exp) val env)
+	     (succeed 'ok fail2))
+	   fail))
+
+(define (eval-assignment exp env succeed fail)
+  (ambeval (assignment-value exp)
+	   env
+	   (lambda (val fail2)
+	     (let* ((var (assignment-variable exp))
+		    (old-value
+		     (lookup-variable-value var env)))
+	       (set-variable-value! var val env)
+	       (succeed 'ok
+			(lambda ()
+			  (set-variable-value! var old-value env)
+			  (fail2)))))
+	   fail))
+
+
+(define (eval-amb exp env succeed fail)
+  (define (try-next choices)
+    (if (null? choices)
+	(fail)
+	(ambeval (car choices)
+		 env
+		 succeed
+		 (lambda ()
+		   (try-next (cdr choices))))))
+  (try-next (amb-choices exp)))
+
+
+;;;SECTION 4.1.2
+
+(define (self-evaluating? exp)
+  (cond ((number? exp) true)
+        ((string? exp) true)
+        ((boolean? exp) true)
+	(else false)))
+
+(define (quoted? exp)
+  (tagged-list? exp 'quote))
+
+(define (text-of-quotation exp) (cadr exp))
+
+(define (tagged-list? exp tag)
+  (if (pair? exp)
+      (eq? (car exp) tag)
+      false))
+
+(define (variable? exp) (symbol? exp))
+
+(define (assignment? exp)
+  (tagged-list? exp 'set!))
+
+(define (assignment-variable exp) (cadr exp))
+
+(define (assignment-value exp) (caddr exp))
+
+
+(define (definition? exp)
+  (tagged-list? exp 'define))
+
+(define (definition-variable exp)
+  (if (symbol? (cadr exp))
+      (cadr exp)
+      (caadr exp)))
+
+(define (definition-value exp)
+  (if (symbol? (cadr exp))
+      (caddr exp)
+      (make-lambda (cdadr exp)
+                   (cddr exp))))
+
+(define (lambda? exp) (tagged-list? exp 'lambda))
+
+(define (lambda-parameters exp) (cadr exp))
+(define (lambda-body exp) (cddr exp))
+
+(define (make-lambda parameters body)
+  (cons 'lambda (cons parameters body)))
+
+
+(define (if? exp) (tagged-list? exp 'if))
+
+(define (if-predicate exp) (cadr exp))
+
+(define (if-consequent exp) (caddr exp))
+
+(define (if-alternative exp)
+  (if (not (null? (cdddr exp)))
+      (cadddr exp)
+      'false))
+
+(define (make-if predicate consequent alternative)
+  (list 'if predicate consequent alternative))
+
+
+(define (begin? exp) (tagged-list? exp 'begin))
+
+(define (begin-actions exp) (cdr exp))
+
+(define (last-exp? seq) (null? (cdr seq)))
+(define (first-exp seq) (car seq))
+(define (rest-exps seq) (cdr seq))
+
+(define (sequence->exp seq)
+  (cond ((null? seq) seq)
+        ((last-exp? seq) (first-exp seq))
+        (else (make-begin seq))))
+
+(define (make-begin seq) (cons 'begin seq))
+
+
+(define (application? exp) (pair? exp))
+(define (operator exp) (car exp))
+(define (operands exp) (cdr exp))
+
+(define (no-operands? ops) (null? ops))
+(define (first-operand ops) (car ops))
+(define (rest-operands ops) (cdr ops))
+
+
+(define (cond? exp) (tagged-list? exp 'cond))
+
+(define (cond-clauses exp) (cdr exp))
+
+(define (cond-else-clause? clause)
+  (eq? (cond-predicate clause) 'else))
+
+(define (cond-predicate clause) (car clause))
+
+(define (cond-actions clause) (cdr clause))
+
+(define (cond->if exp)
+  (expand-clauses (cond-clauses exp)))
+
+(define (expand-clauses clauses)
+  (if (null? clauses)
+      'false                          ; no else clause
+      (let ((first (car clauses))
+            (rest (cdr clauses)))
+        (if (cond-else-clause? first)
+            (if (null? rest)
+                (sequence->exp (cond-actions first))
+                (error "ELSE clause isn't last -- COND->IF"
+                       clauses))
+            (make-if (cond-predicate first)
+                     (sequence->exp (cond-actions first))
+                     (expand-clauses rest))))))
+
+(define (amb? exp) (tagged-list? exp 'amb))
+(define (amb-choices exp) (cdr exp))
+
+;;;SECTION 4.1.3
+
+(define (true? x)
+  (not (eq? x false)))
+
+(define (false? x)
+  (eq? x false))
+
+
+(define (make-procedure parameters body env)
+  (list 'procedure parameters body env))
+
+(define (compound-procedure? p)
+  (tagged-list? p 'procedure))
+
+
+(define (procedure-parameters p) (cadr p))
+(define (procedure-body p) (caddr p))
+(define (procedure-environment p) (cadddr p))
+
+
+(define (enclosing-environment env) (cdr env))
+
+(define (first-frame env) (car env))
+
+(define the-empty-environment '())
+
+(define (make-frame variables values)
+  (cons variables values))
+
+(define (frame-variables frame) (car frame))
+(define (frame-values frame) (cdr frame))
+
+(define (add-binding-to-frame! var val frame)
+  (set-car! frame (cons var (car frame)))
+  (set-cdr! frame (cons val (cdr frame))))
+
+(define (extend-environment vars vals base-env)
+  (if (= (length vars) (length vals))
+      (cons (make-frame vars vals) base-env)
+      (if (< (length vars) (length vals))
+          (error "Too many arguments supplied" vars vals)
+          (error "Too few arguments supplied" vars vals))))
+
+(define (lookup-variable-value var env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((eq? var (car vars))
+             (car vals))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable" var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (set-variable-value! var val env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((eq? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable -- SET!" var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (define-variable! var val env)
+  (let ((frame (first-frame env)))
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (add-binding-to-frame! var val frame))
+            ((eq? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (scan (frame-variables frame)
+          (frame-values frame))))
+
+;;;SECTION 4.1.4
+
+(define (setup-environment)
+  (let ((initial-env
+         (extend-environment (primitive-procedure-names)
+                             (primitive-procedure-objects)
+                             the-empty-environment)))
+    (define-variable! 'true true initial-env)
+    (define-variable! 'false false initial-env)
+    initial-env))
+
+;[do later] (define the-global-environment (setup-environment))
+
+(define (primitive-procedure? proc)
+  (tagged-list? proc 'primitive))
+
+(define (primitive-implementation proc) (cadr proc))
+
+(define primitive-procedures
+  (list (list 'car car)
+        (list 'cdr cdr)
+        (list 'cons cons)
+        (list 'null? null?)
+	(list '+ +)
+	(list '- -)
+	(list '* *)
+	(list '/ /)
+	(list '= =)
+	(list 'list list)
+	(list 'append append)
+	(list 'equal? equal?)
+;;      more primitives
+        ))
+
+(define (primitive-procedure-names)
+  (map car
+       primitive-procedures))
+
+(define (primitive-procedure-objects)
+  (map (lambda (proc) (list 'primitive (cadr proc)))
+       primitive-procedures))
+
+;[moved to start of file] (define apply-in-underlying-scheme apply)
+
+(define (apply-primitive-procedure proc args)
+  (apply-in-underlying-scheme
+   (primitive-implementation proc) args))
+
+
+
+(define input-prompt ";;; Amb-Eval input:")
+(define output-prompt ";;; Amb-Eval value:")
+
+(define (driver-loop)
+  (define (internal-loop try-again)
+    (prompt-for-input input-prompt)
+    (let ((input (read)))
+      (if (eq? input 'try-again)
+          (try-again)
+          (begin
+            (newline)
+            (display ";;; Starting a new problem ")
+            (ambeval input
+                     the-global-environment
+                     ;; ambeval success
+                     (lambda (val next-alternative)
+                       (announce-output output-prompt)
+                       (user-print val)
+                       (internal-loop next-alternative))
+                     ;; ambeval failure
+                     (lambda ()
+                       (announce-output
+                        ";;; There are no more values of")
+                       (user-print input)
+                       (driver-loop)))))))
+  (internal-loop
+   (lambda ()
+     (newline)
+     (display ";;; There is no current problem")
+     (driver-loop))))
+
+
+(define (prompt-for-input string)
+  (newline) (newline) (display string) (newline))
+
+(define (announce-output string)
+  (newline) (display string) (newline))
+
+(define (user-print object)
+  (if (compound-procedure? object)
+      (display (list 'compound-procedure
+                     (procedure-parameters object)
+                     (procedure-body object)
+                     '<procedure-env>))
+      (display object)))
+
+;;; Support for Let (as noted in footnote 56, p.428)
+
+(define (let? exp) (tagged-list? exp 'let))
+(define (let-bindings exp) (cadr exp))
+(define (let-body exp) (cddr exp))
+
+(define (let-var binding) (car binding))
+(define (let-val binding) (cadr binding))
+
+(define (make-combination operator operands) (cons operator operands))
+
+(define (let->combination exp)
+  ;;make-combination defined in earlier exercise
+  (let ((bindings (let-bindings exp)))
+    (make-combination (make-lambda (map let-var bindings)
+                                   (let-body exp))
+                      (map let-val bindings))))
+                     
+;; A longer list of primitives -- suitable for running everything in 4.3
+;; Overrides the list in ch4-mceval.scm
+;; Has Not to support Require; various stuff for code in text (including
+;;  support for Prime?); integer? and sqrt for exercise code;
+;;  eq? for ex. solution
+
+(define primitive-procedures
+  (list (list 'car car)
+        (list 'cdr cdr)
+        (list 'cons cons)
+        (list 'null? null?)
+        (list 'list list)
+	(list 'append append)
+        (list 'memq memq)
+        (list 'member member)
+        (list 'not not)
+        (list '+ +)
+        (list '- -)
+        (list '* *)
+        (list '= =)
+        (list '> >)
+        (list '>= >=)
+        (list 'abs abs)
+        (list 'remainder remainder)
+        (list 'integer? integer?)
+        (list 'sqrt sqrt)
+        (list 'eq? eq?)
+	(list 'equal? equal?)
+	(list 'pair? pair?)
+;;      more primitives
+        ))
+
+;;;Following are commented out so as not to be evaluated when
+;;; the file is loaded.
+;;(define the-global-environment (setup-environment))
+;;(driver-loop)
+
+;; Added at Berkeley:
+(define the-global-environment '())
+
+(define (mce)
+  (set! the-global-environment (setup-environment))
+  (ambeval '(define (require p) (if (not p) (amb)))
+	   the-global-environment
+	   (lambda (a b) #t)
+	   (lambda () #t))
+  (driver-loop))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/explorin-vs-simply.txt b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/explorin-vs-simply.txt
new file mode 100644
index 0000000..cf8432b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/explorin-vs-simply.txt
@@ -0,0 +1,164 @@
+								Aug 25, 2006
+								March 1, 2010
+README-explorin-vs-simply.txt
+
+
+For CS61A/SICP, use stk-simply in the instructions below.
+
+
+*stk-explorin and stk-simply*:
+---------------------------
+
+  UCB Scheme includes several load modules that define the functions that
+  make up the Berkeley extensions for UCB CS classes.
+
+  The UCB Scheme package now installs these options for starting scheme:
+  
+    "stk-simply"	loads UCB procedures for CS3 and CS61A
+    "stk-explorin"	loads UCB procedures for CS3S
+    "stk-grfx"		loads UCB procedures for CS9D and CS47B (not on InstCD)
+    "stk"		loads no UCB procedures
+  
+  (Prior to 2004, there were stk-cs3, stk-cs3s, stk-cs61a, stk-cs61a-2, 
+  stk-cs9, etc.  Those versions are now obsolete.)
+  
+  "stk-simply" loads the procedures as defined in these texts:
+  
+    "Simply Scheme - Introducing Computer Science" (Harvey and Wright)
+    "Structure and Interpretation of Computer Programs" (Abelson and Sussman)
+
+  "stk-explorin" load the procedures as defined in this text:
+  
+    "Exploring Computer Science with Scheme" (Grillmeyer) 
+  
+  Each program loads ALL of the UCB-defined procedures but, in the case of
+  conflicting definitions, favors the definition from the text book after
+  which it is named: "simply" or "explorin".  ("explorin" omits the "g" for 
+  historical reasons: MS-DOS required 8-character file names!)
+  
+  In these texts, there are 7 procedures that conflict because they use the 
+  same names and arguments but behave differently.  The conflicting 
+  definitions are:
+  
+    count	
+    first
+    every
+    accumulate
+    reduce
+    remove!
+    atom?	(an STk primitive that is refined in Exploring)
+
+  The 7 procedures are defined one way in simply.scm and another way in 
+  explorin.scm.  To load all the UCB procedures and resolve the conflicts:
+  
+    stk-simply loads everything else, then simply.scm 
+    stk-explorin loads everything else, then explorin.scm 
+  
+  This causes the desired definitions to replace the undesired ones.
+
+  Here is how stk-simply and stk-explorin load on Windows (for example):
+  
+    The file "stk-simply" contains
+  	stk -load "C:/Program Files/STk/site-scheme/load-simply"
+
+    The file "load-simply" contains
+	;; simply.scm  must be loaded after explorin.scm
+	;; modeler.stk must be loaded after simply.scm 
+		(load "C:/Program Files/STk/site-scheme/berkeley.scm")
+		(load "C:/Program Files/STk/site-scheme/explorin.scm")
+		(load "C:/Program Files/STk/site-scheme/simply.scm")
+		(load "C:/Program Files/STk/site-scheme/modeler.stk")
+		(load "C:/Program Files/STk/site-scheme/obj.scm")
+		(load "C:/Program Files/STk/site-scheme/turtle-grfx.scm")
+		(load "C:/Program Files/STk/site-scheme/which-modeler.scm")
+
+    The file "stk-explorin" contains
+  	stk -load "C:/Program Files/STk/site-scheme/load-explorin"
+
+    The file "load-explorin" contains
+	;; explorin.scm  must be loaded after simply.scm
+	;; modeler.stk must be loaded after simply.scm 
+		(load "C:/Program Files/STk/site-scheme/berkeley.scm")
+		(load "C:/Program Files/STk/site-scheme/simply.scm")
+		(load "C:/Program Files/STk/site-scheme/explorin.scm")
+		(load "C:/Program Files/STk/site-scheme/modeler.stk")
+		(load "C:/Program Files/STk/site-scheme/obj.scm")
+		(load "C:/Program Files/STk/site-scheme/turtle-grfx.scm")
+		(load "C:/Program Files/STk/site-scheme/which-modeler.scm")
+
+  The (atom? '()) function is an STk primitive that is defined in the STk
+  sources as returning #t.   It is redefined in explorin.scm to return #f.
+  To compensate for that, the original definition is copied to berkeley.scm
+  to ensure that it is set properly for those users.
+
+  
+*"(explorinOrSimply)" procedure*
+------------------------------
+
+  If you are running stk-explorin, invoking the function (explorinOrSimply) 
+  will return the string "explorin", but if you are running stk-simply,
+  invoking (explorinOrSimply) will return the string "simply".  This can
+  be used within user scheme code to determine which version has been 
+  loaded.
+
+
+*Replacement Modeler*
+-------------------
+
+  The Replacement Modeler is a separate window that is invoked in stk by a 
+  command such as	 (model (map odd? '(1 2 3 4))) 
+
+  The Modeler procedures are defined in the file "modeler.stk".   The file
+  "which-modeler.stk" defines flags that are used to distinguish behaviors
+  for CS3 vs CS3S students.  The flags are:
+
+    (using-berkeley-scm?)	(false for "explorin" users, true for others)
+    *harvey+wright* 		(false for "explorin" users, true for others)
+    *grillmeyer* 		(true  for "explorin" users, false for others)
+    *they-know-lambda*  	(false for everyone)
+
+  which-modeler.stk replaces the older cs3-modeler.stk and cs3s-modeler.stk.
+
+
+*stk-grfx*
+--------
+
+  'stk-grfx' loads the Berkeley extensions in obj.scm and turtle-grfx.scm.
+  It is a new variant that was added to for cs9d and cs47b in Spring 2005.
+  It can be run as 
+
+	~scheme/bin/stk-grfx
+	~cs9d/bin/stk-grfx
+	~cs47b/bin/stk-grfx
+
+  It is only available on the computers in the EECS Instructional labs.  It is
+  not available on the pre-packaged versions of Berkeley Scheme for Windows,
+  MacOSX or Linux.
+
+  To test that turtle graphics is installed:
+
+    STk> (cs)             ;; TurtleGraphics X window pops up
+    STk> (ht)             ;; the turtle pointer disappears
+    STk> (st)             ;; the turtle pointer reappears
+
+
+*STKDB Debugger*
+--------------
+  The STKDB Debugger was developed by Prof Hilfinger in 2003.   It is 
+  documented in https://people.cs.berkeley.edu/~bh/Scheme/stkdb.pdf.
+
+  The debugger module is loaded into the scheme interpreter after you
+  start it.  The debugger files are included in the UCB Scheme 
+  distribution.  The required files are:
+
+	stk VERSION 4.0.1-ucb1.16 or newer
+	$DIR/stkdb/*.scm
+	$DIR/stk/slib
+	$DIR/emacs/lisp/stkdb.el
+
+  $DIR is usually '/usr/local/lib' on your home computer, which is the
+  same as C:\cygwin\usr\local\lib on a Windows computer that is using
+  Cygwin with the latest version (Feb 2006) of UCB Scheme on Windows.
+
+
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/faq.html b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/faq.html
new file mode 100644
index 0000000..d445b5e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/faq.html
@@ -0,0 +1,71 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">
+<title>UCB Scheme - Frequently Asked Questions</title>
+</head>
+<body>
+
+<h1>UCB Scheme - Frequently Asked Questions</h1>
+<p>
+Nov 21, 2005
+</p><ol>
+  <li> "<i>The <b>arrow keys</b> output certain escape sequences (^[]A to ^[]D) 
+  instead of moving the cursor." </i>
+  <p>STk does not support arrow keys. You can run STk from within Emacs (using,
+  e.g., M-x shell or M-x run-scheme) if you want to use arrow keys.</p></li>
+
+  <li> "<i>I'm trying to install the STk rpm on <b>redhat linux 7.3</b> but 
+  when I type in the command 'rpm -i STk-4.0.1-UCB6.i386.rpm' or 
+  'rpm -Uvh STk-4.0.1-UCB6.i386.rpm', an error message tells me that 
+  there is a failed dependency because my system doesn't have the korn 
+  shell running."</i>
+  <p>You can go ahead and run the command &nbsp;
+  'rpm --nodeps -i STk-4.0.1-UCB6.i386.rpm'. &nbsp; 
+  Or you could install ksh, with the command: &nbsp;
+  'rpm -i ftp://ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386/RedHat/RPMS/pdksh-5.2.14-16.i386.rpm'</p></li>
+
+  <li> "<i> The 'File Save' window and the 'envdraw' command don't work. &nbsp;
+  I'm using the STk version of scm on a <b>Windows 9x</b> system."</i>
+  <p>This is a known bug that we cannot fix.  The Tk calls that are
+  needed for the 'File Save' window and the 'envdraw' command do not 
+  work on Windows9x. &nbsp; They do work on WindowsNT/2000/XP.</p></li>
+
+  <li> "<i> I can't get STK to load onto my laptop with <b>Windows Me</b>.  
+  &nbsp; I follow the instructions, add it to the start menu, but when I 
+  click on the program to load it, it doesn't do anything: &nbsp; the cursor
+  goes to an hourglass to indicate action, but no window opens.  What do I
+  do?"</i>
+  <p>The problem was that when you unzipped the file, it automatically saved 
+  as C:\Program Files\STkWin32, so when you'd click on stk.exe, it would not 
+  execute because the path was incorrect. &nbsp; To solve this, you just had 
+  to drag the STk folder within STkWin32 to the Program Files folder.</p></li>
+
+  <li> "<i> I'm logged into an Instructional UNIX system from a Mac [or Linux].
+  &nbsp; I type 'stk' and I get an error that starts with:<p></p><ul>
+  <b>X Error of failed request:  BadAtom (invalid Atom parameter)</b>
+  </ul></i>
+  <p>To correct this, use the "-Y" option with ssh, for example:
+  <b>ssh -l cs3 solar -X -Y</b>. &nbsp; This is not an bug in stk; it is 
+  related to how openssh sends certain X calls over the encrypted channel.
+
+</p></li></ol><p></p>
+<hr>
+<h3>To Instructional Support:</h3>
+The source for this faq.html file is 
+<b>/home/aa/projects/scheme/public_html/faq.html</b>.
+To make it accessible from ~scheme and ~instcd, there is a hard link between
+<ul>
+<li>/home/aa/projects/scheme/public_html/faq.html</li>
+<li>/home/aa/projects/instcd/public_html/inst-cd/source/stk/faq.html</li>
+</ul>
+References to it from the ~scheme and ~instcd WEB pages are relative to 
+one of those, ie
+<ul>
+<!-- Convert < to CGI-speak so it won't be interpreted as start of tag -->
+<li><xmp>&lt;A HREF="../../faq.html"&gt; under ~scheme</xmp></li>
+<li><xmp>&lt;A HREF="../../source/stk/faq.html"&gt; under ~instcd</xmp></li>
+</ul>
+This is to ensure that a single, current version is always accessible from
+both WEB sites, and that a copy of it will always be burned into the ~instcd 
+ISO file when we make one.
+
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/scheme.png b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/scheme.png
new file mode 100644
index 0000000..ea1a99f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/scheme.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/index.html
new file mode 100644
index 0000000..46051ac
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/index.html
@@ -0,0 +1,19 @@
+<html><body><pre>
+
+  Source Distributions
+
+You can
+
+# download <a href="stk-1.3.6.tgz">stk-1.3.6.tgz</a>.
+# <a href="src">view individual files</a>.
+
+Sources last updated: *Monday, 02-Aug-2010 12:48:11 PDT*
+
+Here are instructions for compiling UCB Stk:
+
+  * <a href="unix.html">UNIX</a>
+  * <a href="windows.html">Windows</a>
+  * <a href="mac.html">MacOSX</a>
+  * <a href="linux.html">Linux</a>
+
+</pre></body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/linux.html b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/linux.html
new file mode 100644
index 0000000..78f8a3e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/linux.html
@@ -0,0 +1,122 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">
+<title>UCB Scheme - Red Hat Linux binary distribution</title>
+</head>
+<body>
+
+<!---<CENTER><IMG SRC="/images/iesg2.jpg" BORDER=0 ALIGN=CENTER></CENTER>--->
+<p>
+<img src="scheme.png" border="0">
+<br>
+
+</p><h1>Binary distribution for Red Hat Linux</h1>
+
+<p>
+<b>Installing:</b> 
+</p><ul>
+<p>
+  You need to have Korn Shell(ksh) installed 
+  on your system for this to install. 
+</p><p>
+  For <b>Fedora Linux 4</b>, you can download the 
+  precompiled UCB Scheme for Linux onto your home machine from
+  <a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/STk-4.0.1-ucb1.3.6.i386.rpm">STk-4.0.1-ucb1.3.6.i386.rpm</a>.
+  &nbsp; Then you can install it by running this command as root:</p>
+  <pre>	# rpm -Uvh STk-4.0.1-ucb1.3.6.i386.rpm </pre>
+
+<p>
+  For <b>Debian GNU/Linux</b>, you can use a program called 'alien' to convert 
+  the RPM package to a <code>*.deb</code> file. &nbsp; 'alien' is in the main 
+  debian archive (see <a href="http://packages.debian.org/unstable/admin/alien">
+  http://packages.debian.org/unstable/admin/alien</a>).  &nbsp; IE, as root:
+  </p><pre>	# wget http://inst.eecs.berkeley.edu/~scheme/precompiled/Linux/STk-4.0.1-ucb1.3.6.i386.rpm
+	# apt-get install alien
+	# alien -i STk-4.0.1-ucb1.3.6.i386.rpm	(uses dpkg)</pre>
+  <b><i>Note</i></b>: &nbsp; There is a package name conflict between the UCB
+  Scheme ("stk") and a current package available through the Debian mirror 
+  system 
+  (<a href="http://packages.debian.org/unstable/sound/stk">
+  http://packages.debian.org/unstable/sound/stk</a>), so if you run one of 
+  these:
+  <pre>	# apt-get upgrade
+	# apt-get dist-upgrade 			(upgrade all packages)</pre>
+  you should re-install UCB Scheme like this:
+  <pre>	# apt-get remove stk			(the sound synth toolkit)
+	# dpkg -i stk_4.0.1-1_i386.deb</pre>
+  <p>
+  For <b>Debian GNU/Linux</b> on a pure64 (amd64) system:
+  </p><pre>	Use a 32-bit computer to 'alien STk-4.0.1-ucb1.3.6.i386.rpm'
+	On the 64-bit computer, run 'apt-get install ia32-libs'
+	copy the $STK.deb file from the 32-bit computer to the local amd64, ie:
+	'scp user@32bHost:~/$STK.deb root@local64bHost:~/.'
+	On the 64-bit computer, run 'dpkg --force-architecture $STK.deb'</pre>
+
+  (<i>Thanks to Joachim for providing the Debian information.</i>)
+  <p>
+  For <b>Centos 7</b>, we have these notes from a user (untested, Dec 2015):
+  </p><pre>	Using is CentOS 7, 64 bit, with GNOME Desktop.
+
+	'rpm -Uvh STk-4.0.1-ucb1.3.6.i386.rpm' fails, saying some dependencies 
+	were missing.
+
+	'rpm -i STk-4.0.1-ucb1.3.6.i386.rpm' works on one installation of 
+	CentOS 7 and not on another.
+
+	This seems to always work:
+	Click on the link for STk-4.0.1-ucb1.3.6.i386.rpm right inside of 
+	Firefox, then Firefox will ask me to Save it, or to Open it using 
+	installer.  And if I use that Open it using installer option, then 
+	it will install.</pre>
+
+  (<i>Thanks to Kin for providing the Centos 7 information.</i>)
+	
+<p>
+ It will be installed in <code>/usr/local/bin/stk</code>,
+ <code>/usr/local/bin/envdraw</code>, with support files in
+ <code>/usr/local/lib/stk</code>, and a few documentation files in
+ <code>/usr/doc/STk-4.0.1-ucb1.3.6</code>.</p><p>
+</p><p>
+We also have <a href="https://inst.eecs.berkeley.edu/%7Escheme/precompiled/Linux/STk-4.0.1-ucb1.3.6.src.rpm">the source RPM</a>, 
+and the <a href="https://inst.eecs.berkeley.edu/%7Escheme/precompiled/Linux/STk.spec">spec</a> file used for building the source 
+RPM, if you want to build from source. Here are <a href="https://inst.eecs.berkeley.edu/%7Escheme/precompiled/Linux/srcrebuild.html">
+instructions for building from source</a> for Linux.</p>
+</ul>
+<p>
+<b>Running:</b> 
+</p><p>
+</p><ul>
+The STk versions for different classes are installed in the 
+<i>/usr/local/bin</i> directory. 
+<p>
+</p><ul>
+<table>
+  <tbody><tr>
+  <td><i>stk-explorin</i></td>
+  <td>Loads all UCB Scheme procedures including explorin.scm, for CS3S</td>
+  </tr>
+  <tr>
+  <td><i>stk-simply</i></td>
+  <td>loads all UCB Scheme procedures including simply.scm, for CS3 and CS61A</td>
+  </tr>
+  <tr>
+  <td><i>stk-grfx</i></td>
+  <td>loads UCB Scheme turtle graphics procedures, for CS9D and CS47B</td>
+  </tr>
+  <tr>
+  <td><i>stk</i></td>
+  <td>loads no UCB Scheme procedures, for CS9D and CS47B</td>
+  </tr>
+</tbody></table>
+</ul>
+</ul>
+<p>
+  Please see the <a href="https://inst.eecs.berkeley.edu/%7Escheme/faq.html">UCB Scheme FAQ file</a> 
+ for more information.
+</p><p>
+<a href="https://inst.eecs.berkeley.edu/%7Escheme/">Go back to the main UCB Scheme site.</a>
+</p><hr>
+<a href="http://inst.eecs.berkeley.edu/">EECS Instuctional Support Group</a><br>
+<address>scheme@inst.EECS.Berkeley.EDU</address>
+
+
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/mac.html b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/mac.html
new file mode 100644
index 0000000..f84b7c8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/mac.html
@@ -0,0 +1,110 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">
+<title>UCB Scheme - Mac OS X binary distribution</title>
+<style type="text/css">@namespace url(http://www.w3.org/1999/xhtml);
+@font-face {
+  font-family: 'EasyRead2';
+  font-style: normal;
+  font-weight: 400;
+  src: local('EasyRead2'), url(https://cdn.rawgit.com/PullJosh/files/gh-pages/Arial-LargePeriod2.woff) format('woff');
+}input[type="text"], input[type="textarea"], textarea {
+    font-family: "EasyRead2" !important;
+  }</style></head>
+<body>
+
+<!--- <CENTER><IMG SRC="/images/iesg2.jpg" BORDER=0 ALIGN=CENTER></CENTER>-->
+<p>
+<img src="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/UCB%20Scheme%20-%20Mac%20OS%20X%20binary%20distribution_files/scheme.png" border="0">
+<br>
+
+</p><h1>Binary distribution for Mac OSX</h1>
+
+<p>
+Please download the following executable and follow the directions given below.<br>
+Please follow the directions supplied in the README.
+</p>
+<b>New UCB STk Distribution available as of August 2010.</b>
+<p>
+<a href="https://inst.eecs.berkeley.edu/%7Escheme/precompiled/OSX/STk-ucb1.3.6.dmg">STk-ucb1.3.6.dmg</a> (2225 Kbytes)
+
+<!---
+<P>
+Please download the following executable and follow the directions given below.</br>
+Please follow the directions supplied in the README.
+</P>
+<A HREF="STk-ucb1.3.6.dmg">STk-ucb1.3.6.dmg</A> (2952 Kbytes)
+
+<P>
+<B>Errata:</B> 
+A typo in the "emacs.simply" file (in the Extras folder) will
+cause this error when you start <i>emacs</i>:
+<ul>
+<ul><pre>File Error: Cannot open load file, stkdb</pre></ul>
+To correct that, edit the line in emacs.simply<br>
+from 
+<ul><code>(concat stkhome "/share/emacs/lisp")))</code></ul>
+to
+<ul><code>(concat stkhome "/share/emacs")))</code></ul>
+and restart <i>emacs</i>.
+</ul>
+
+--->
+
+</p><p>
+<b>Running:</b> 
+
+<i>These are STk versions that are used by CS classes: 
+</i></p><p><i>
+</i></p><ul><i>
+<table width="80%">
+  <tbody><tr>
+  <td valign="top"><i>stk-explorin</i></td>
+  <td>Loads all UCB Scheme procedures including explorin.scm, for CS3S</td>
+  </tr>
+  <tr>
+  <td valign="top" width="20%"><i>stk-simply</i></td>
+  <td>Loads all UCB Scheme procedures including simply.scm, for CS3 and CS61A</td>
+  </tr>
+  <tr>
+  <td valign="top" width="20%"><i>stk-grfx</i></td>
+  <td>Loads UCB Scheme turtle graphics procedures, for CS9D and CS47B</td>
+  </tr>
+  <tr>
+  <td valign="top" width="20%"><i>stk</i></td>
+  <td>Loads no UCB Scheme procedures, for CS9D and CS47B</td>
+  </tr> 
+  <tr> <td colspan="2"> &nbsp; </td></tr>
+  <tr>
+  <td valign="top" width="20%"><i>Graphics mode:</i></td>
+  <td>
+	To run these within emacs and to use other graphical features (such 
+	as turtle graphics and envdraw), you need to have XWindows (X11) 
+	installed on your MacOSX system.  
+	<p>
+	On newer versions of MacOSX, you must install X11 from the Installation 
+	CD (in "Optional Software") that came with your computer or operating 
+	system purchase.
+	</p><p>
+	In the emacs window, type the 2 keys ESC-S at the same time to open 
+	STk in an emacs buffer.  It loads the version of stk that is defined 
+	in your .emacs file.  That file is typically in your home directory.
+	The line that defines what is loaded by ESC-S is one of these: 
+	</p><p></p><pre>	(setq scheme-program-name "stk-simply")
+	(setq scheme-program-name "stk-explorin") </pre>
+	If one of those are not there, you can add it and restart emacs.
+  </td>
+  </tr> 
+  <tr> <td colspan="2"> &nbsp; </td></tr>
+</tbody></table>
+</i></ul><i>
+<p>
+Click here for <a href="https://inst.eecs.berkeley.edu/%7Escheme/precompiled/OSX/OLD/">old Mac OS X packages</a> which are no longer 
+supported.</p><p>
+
+<a href="https://inst.eecs.berkeley.edu/%7Escheme/">Go back to the main UCB Scheme site.</a><br>
+</p><hr>
+<a href="http://inst.eecs.berkeley.edu/">EECS Instuctional Support Group</a><br>
+<address>scheme@inst.EECS.Berkeley.EDU</address>
+
+
+</i></body></html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/scheme.png b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/scheme.png
new file mode 100644
index 0000000..ea1a99f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/scheme.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=D;O=A
new file mode 100644
index 0000000..41ae521
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=D;O=A
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Scheme/source/src</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Scheme/source/src</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/?C=D;O=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="stk/index.html">stk/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/ucb/">ucb/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=M;O=A
new file mode 100644
index 0000000..8160c00
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=M;O=A
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Scheme/source/src</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Scheme/source/src</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/?C=N;O=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/?C=M;O=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="stk/index.html">stk/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/ucb/">ucb/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=N;O=D
new file mode 100644
index 0000000..a18fec8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=N;O=D
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Scheme/source/src</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Scheme/source/src</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/ucb/">ucb/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="stk/index.html">stk/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=S;O=A
new file mode 100644
index 0000000..6e97957
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/index.html?C=S;O=A
@@ -0,0 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Scheme/source/src</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Scheme/source/src</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/?C=S;O=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="stk/index.html">stk/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/ucb/">ucb/</a>                   </td><td align="right">2020-01-23 00:16  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/stk/index.html b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/stk/index.html
new file mode 100644
index 0000000..37af27c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/src/stk/index.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Scheme/source/src/stk</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Scheme/source/src/stk</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/?C=N;O=D">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/?C=M;O=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/?C=S;O=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../src">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/BINARY_DISTRIB">BINARY_DISTRIB</a>         </td><td align="right">2007-06-10 22:01  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/CHANGES">CHANGES</a>                </td><td align="right">2007-06-10 22:01  </td><td align="right"> 17K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/COMPILING-HINTS">COMPILING-HINTS</a>        </td><td align="right">2007-06-10 22:01  </td><td align="right">6.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/COPYRIGHTS">COPYRIGHTS</a>             </td><td align="right">2007-06-10 22:01  </td><td align="right">5.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/ChangeLog">ChangeLog</a>              </td><td align="right">2007-09-11 12:07  </td><td align="right"> 89K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/ChangeLog.1">ChangeLog.1</a>            </td><td align="right">2007-09-11 12:07  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Contrib/">Contrib/</a>               </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Demos/">Demos/</a>                 </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Doc/">Doc/</a>                   </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Extensions/">Extensions/</a>            </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Gmp/">Gmp/</a>                   </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Help/">Help/</a>                  </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/INSTALL">INSTALL</a>                </td><td align="right">2007-06-10 22:01  </td><td align="right">7.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/INSTALL.win32">INSTALL.win32</a>          </td><td align="right">2007-06-10 22:01  </td><td align="right">1.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Lib/">Lib/</a>                   </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Makefile.in">Makefile.in</a>            </td><td align="right">2010-08-02 12:43  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/STklos/">STklos/</a>                </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Snow/">Snow/</a>                  </td><td align="right">2007-06-10 22:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Src/">Src/</a>                   </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Stack/">Stack/</a>                 </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Tcl/">Tcl/</a>                   </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Tk/">Tk/</a>                    </td><td align="right">2007-09-11 12:07  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Utils/">Utils/</a>                 </td><td align="right">2007-06-10 22:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/VERSION">VERSION</a>                </td><td align="right">2010-08-02 12:43  </td><td align="right">  6 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/folder.gif" alt="[DIR]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/Win32/">Win32/</a>                 </td><td align="right">2007-06-10 22:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/config.guess">config.guess</a>           </td><td align="right">2007-09-11 12:07  </td><td align="right"> 44K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/config.h.in">config.h.in</a>            </td><td align="right">2007-09-11 12:07  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/config.sub">config.sub</a>             </td><td align="right">2007-09-11 12:07  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/configure">configure</a>              </td><td align="right">2010-08-02 12:43  </td><td align="right">218K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/configure.in">configure.in</a>           </td><td align="right">2010-08-02 12:43  </td><td align="right"> 15K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/depcomp">depcomp</a>                </td><td align="right">2007-06-10 22:01  </td><td align="right"> 13K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/install-sh">install-sh</a>             </td><td align="right">2007-06-10 22:01  </td><td align="right">5.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/install.bat">install.bat</a>            </td><td align="right">2007-06-10 22:01  </td><td align="right">1.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/missing">missing</a>                </td><td align="right">2007-06-10 22:01  </td><td align="right"> 10K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/mkinstalldirs">mkinstalldirs</a>          </td><td align="right">2007-06-10 22:01  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Scheme/source/src/stk/paths">paths</a>                  </td><td align="right">2007-09-11 12:07  </td><td align="right">270 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/stk-1.3.6.tgz b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/stk-1.3.6.tgz
new file mode 100644
index 0000000..14bb327
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/stk-1.3.6.tgz
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/unix.html b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/unix.html
new file mode 100644
index 0000000..60ec50e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/unix.html
@@ -0,0 +1,52 @@
+
+  UCB Scheme - source building instructions for UNIX
+
+These instructions pertain to *Unix*, such as Solaris. Other unix
+variants may require modifications in the source and build scripts.
+
+To build and install stk under Unix, please perform the following steps.
+
+ 1. Obtain the most recent sources using subversion.
+
+    	svn co https://isvn.eecs.berkeley.edu/scheme/trunk
+
+ 2. You will end up with two folders. One is labeled stk and the second
+    one ucb.
+
+ 3. change directory into stk first and configure the stk distribution.
+
+    INSTALLROOT is the location you want to install stk. The default is
+    /usr/local.
+
+    	cd stk
+    	./configure --prefix=$INSTALLROOT --disable-dynload --disable-elf --disable-dld
+
+ 4. Once the configure is complete, compile stk.
+
+    	gmake
+
+ 5. Once gmake completes, install stk.
+
+    	gmake install
+
+ 6. Now change directory to the second folder labeled "ucb"
+
+    	cd ../ucb
+
+ 7. Configure ucb with the same INSTALLROOT you choose for stk.
+
+    	./configure --prefix=$INSTALLROOT
+
+ 8. Once the configure is complete, compile ucb.
+
+    	gmake
+
+ 9. Once gmake completes, install ucb files.
+
+    	gmake install
+
+------------------------------------------------------------------------
+Go back to the main UCB Scheme site. <http://inst/~scheme/>
+------------------------------------------------------------------------
+scheme@inst.EECS.Berkeley.EDU
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/windows.html b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/windows.html
new file mode 100644
index 0000000..4794a67
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Scheme/source/windows.html
@@ -0,0 +1,171 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">
+<title>UCB Scheme - binary distribution for Windows</title>
+</head>
+<body>
+
+<!---<CENTER><IMG SRC="/images/iesg2.jpg" BORDER=0 ALIGN=CENTER></CENTER>-->
+<p>
+<img src="scheme.png" border="0">
+<br>
+
+</p><h1>Binary distribution for Windows</h1>
+<p>
+Please download the following executable and follow the directions given below.<br>
+This version includes a subset of Cygwin, which emulates a UNIX environment<br>
+and uses XWindows to enable an STk buffer within <b>emacs</b>.<br>
+</p><p>
+<a name="installing">
+<b>Installing:</b> 
+</a></p><p><a name="installing">
+These are steps you only need to do once, to install UCB Scheme.
+</a></p><p><a name="installing">
+<table align="center" width="90%" border="0">
+<tbody><tr><td>
+<b>New UCB STk Distribution available July 2010.</b>
+
+<ol>
+
+<li> Download 
+     <a href="https://inst.eecs.berkeley.edu/%7Escheme/precompiled/MS-Windows/STk-ucb1.3.6.exe">STk-ucb1.3.6.exe</a> (100467 Kbytes).<br>
+
+</li><li> After downloading the above file double-click the icon. You will be<br>
+     prompted as to whether to install Berkeley Scheme. Click on 'Yes'<br>
+     and wait until the process completes.<br>
+
+</li><li> Once the script has completed you will find an icon on your desktop<br>
+     labeled <b>Cygwin</b>. Double-click this icon. After some initialization<br> 
+     type <b>one</b> of these at the prompt.</li>
+     <pre>     /usr/local/bin/setup-stk explorin	(If you want the <a href="windows.html#explorin">explorin</a> setup)
+     or
+     /usr/local/bin/setup-stk simply	(If you want the <a href="windows.html#simply">simply</a> setup)</pre>
+
+<li> Now you can start an X session in one of two ways. You can either<br>
+     double click on the <b>XWin Server</b> link on your desktop or type at<br>
+     the bash shell prompt "startxwin.exe".
+
+</li><li> If you are prompted by the windows security system, choose the 
+     <b>unblock</b> option.
+
+</li><li> Finally you will get a window that has an <b>X</b> at the top left corner.
+
+</li><li> From now on, you only need to double-click on the <b>XWin Server</b> desktop<br>
+     icon to open a window for running UCB Scheme.
+
+</li></ol>
+</td></tr></tbody></table>
+</a><a name="running">
+<b>Running:</b> 
+</a></p><p><a name="running">
+To start UCB Scheme within <b>emacs</b>:
+</a></p><ul><a name="running">
+  <li> Double-click on the icon labeled <b>XWin Server</b> on your desktop.
+  </li><li> Wait a moment until a window pops up that has an <b>X</b> at the top left corner.
+  </li><li> In the "X" window, type "emacs &amp;". An emacs window pops up.
+  </li><li> In the emacs window, type the 2 keys ESC-S at the same time
+       to open STk in an emacs buffer. (On a PC, the meta key is ESC.) 
+  </li><li> This loads the version of stk that is defined in your 
+       <i>.emacs</i> file. The line that defines what is loaded by 
+       ESC-S is one of these:
+       <p></p><pre>       (setq scheme-program-name "stk-simply")
+       (setq scheme-program-name "stk-explorin")
+       </pre>
+       You can change that by repeating step 5 above, or by editting the <i>.emacs</i> file directly.
+</li></a></ul><a name="running">
+<p>
+These are STk versions that are used by CS classes:
+</p><p>
+<table valign="top" align="center" width="90%" border="0">
+  <tbody><tr>
+  <td valign="top" width="15%"><a name="explorin"><i>stk-explorin</i></a></td>
+  <td> &nbsp; </td>
+  <td> 
+     For CS3S. &nbsp;
+	 Loads all UCB Scheme procedures and explorin.scm takes precedence.
+  </td>
+  </tr>
+  <tr>
+  <td valign="top" width="15%"><a name="simply"><i>stk-simply</i></a></td>
+  <td> &nbsp; </td>
+  <td>
+     For CS3 and CS61A. &nbsp;
+         Loads all UCB Scheme procedures and simply.scm takes precedence.
+  </td>
+  </tr>
+  <tr>
+  <td valign="top" width="15%"><i>stk-grfx</i></td>
+  <td> &nbsp; </td>
+  <td>
+     For CS9D and CS47B. &nbsp;
+	 Loads UCB Scheme turtle graphics procedures.  &nbsp;
+    <ul>
+    <li> Double-click on the icon labeled "startx.bat" on your desktop.
+    </li><li> Wait a moment until a window pops up that has an <b>X</b> at the top left corner.
+    </li><li> In the "X" window, type  "/usr/local/bin/stk-grfx"
+    </li><li> See <a href="http://inst.eecs.berkeley.edu/%7Escheme/README-explorin-vs-simply.txt"> http://inst.eecs.berkeley.edu/~scheme/README-explorin-vs-simply.txt</a> (section stk-grfx) for simple initializing of grafical window using stk-grfx.
+    </li></ul>
+  </td>
+  </tr>
+  <tr>
+  <td valign="top" width="15%"><i>stk</i></td>
+  <td> &nbsp; </td>
+  <td>
+     For CS9D and CS47B. &nbsp;
+	 Loads no UCB Scheme procedures. &nbsp;
+         This version is currently not created on Windows for use with emacs, 
+         but each of the versions above include all of the commands that are 
+	 used.
+  </td>
+  </tr>
+  <tr>
+  <td valign="top" width="15%"><i>stkdb</i></td>
+  <td> &nbsp; </td>
+  <td>
+     This is Prof Hilfinger's STk debugger.
+    <ul>
+    <li> See <a href="http://inst.eecs.berkeley.edu/%7Escheme/docs/stkdb.pdf">
+         http://inst.eecs.berkeley.edu/~scheme/docs/stkdb.pdf</a> for help.
+    </li><li> Load it by typing these at the <code>STk&gt;</code> prompts:
+    <pre>    (define stkdb-vicinity "/usr/local/lib/stkdb/")
+    (load "/usr/local/lib/stkdb/stkdb.scm")
+    (import stk-debugger)</pre>
+    </li></ul>
+  </td>
+  </tr>
+</tbody></table>
+</p></a><p><a name="running">
+</a><a name="alternate">
+<b>Alternate versions:</b>
+</a></p><p><a name="alternate">
+</a></p><menu><a name="alternate">
+</a><li><a name="alternate"><b>Edwin/Emacs</b><br>
+Users have reported that they successfully loaded and used the UC Berkeley
+"</a><a href="https://inst.eecs.berkeley.edu/%7Escheme/source/src/ucb/bscheme/simply.scm">simply.scm</a>"
+module on Microsoft Vista using the *scheme* mode buffer in the 
+<a href="http://www.gnu.org/software/mit-scheme/documentation/mit-scheme-user/Edwin.html">Edwin/Emacs</a> 
+editor that comes with 
+<a href="http://www.gnu.org/software/mit-scheme/">MIT/GNU Scheme</a>. 
+&nbsp; The default Edwin buffer is in *scheme* mode and additional 
+*scheme* buffers can be created using the Edwin REPL command. &nbsp; 
+Note that the UC Berkeley 
+"<a href="https://inst.eecs.berkeley.edu/%7Escheme/source/src/ucb/envdraw/">envdraw.scm</a>" module won't work 
+with this version of Scheme becuase it requires 
+<a href="http://kaolin.unice.fr/STk/">Tk</a>.
+<p>
+<!---
+<p>To recompile this distribution, first
+<A HREF="/~scheme/source/">download the sources</A>,
+and then follow the instructions in 
+<A HREF="http://inst.eecs.berkeley.edu/~scheme/cvsweb/cvsweb.cgi/~checkout~/stk/brg/win-rebuild.txt?only_with_tag=HEAD&content-type=text/plain">stk/brg/win-rebuild.txt</A>.</p>
+
+<p>Click here to find <A HREF="OLD/">old versions</A> which are no
+longer supported.</p>
+--->
+
+<a href="https://inst.eecs.berkeley.edu/%7Escheme/">Go back to the main UCB Scheme site.</a><br>
+</p><hr>
+<a href="http://inst.eecs.berkeley.edu/">EECS Instuctional Support Group</a><br>
+<address>scheme@inst.EECS.Berkeley.EDU</address>
+
+
+</li></menu></body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=A
new file mode 100644
index 0000000..96770c5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=A
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Solutions</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Solutions</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/proj2">proj2</a>                  </td><td align="right">2010-03-05 03:48  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week1">week1</a>                  </td><td align="right">2007-05-03 20:57  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week2">week2</a>                  </td><td align="right">2006-09-25 11:11  </td><td align="right"> 15K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week3">week3</a>                  </td><td align="right">2003-02-12 11:55  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week4">week4</a>                  </td><td align="right">2003-05-16 13:20  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week5">week5</a>                  </td><td align="right">2004-02-26 19:30  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week6">week6</a>                  </td><td align="right">2005-10-04 15:17  </td><td align="right"> 31K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week7">week7</a>                  </td><td align="right">2004-08-06 15:53  </td><td align="right"> 21K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week8">week8</a>                  </td><td align="right">2003-02-14 18:30  </td><td align="right">4.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week9">week9</a>                  </td><td align="right">2004-03-30 15:37  </td><td align="right"> 20K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week10">week10</a>                 </td><td align="right">2005-04-08 10:37  </td><td align="right"> 36K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week11">week11</a>                 </td><td align="right">2004-04-21 15:46  </td><td align="right"> 25K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week12">week12</a>                 </td><td align="right">2004-04-21 15:49  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week13">week13</a>                 </td><td align="right">2004-04-21 15:51  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week14">week14</a>                 </td><td align="right">2005-12-07 22:53  </td><td align="right"> 42K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week15">week15</a>                 </td><td align="right">2004-05-12 12:53  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=D
new file mode 100644
index 0000000..97181b6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=D;O=D
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Solutions</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Solutions</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week15">week15</a>                 </td><td align="right">2004-05-12 12:53  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week14">week14</a>                 </td><td align="right">2005-12-07 22:53  </td><td align="right"> 42K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week13">week13</a>                 </td><td align="right">2004-04-21 15:51  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week12">week12</a>                 </td><td align="right">2004-04-21 15:49  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week11">week11</a>                 </td><td align="right">2004-04-21 15:46  </td><td align="right"> 25K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week10">week10</a>                 </td><td align="right">2005-04-08 10:37  </td><td align="right"> 36K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week9">week9</a>                  </td><td align="right">2004-03-30 15:37  </td><td align="right"> 20K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week8">week8</a>                  </td><td align="right">2003-02-14 18:30  </td><td align="right">4.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week7">week7</a>                  </td><td align="right">2004-08-06 15:53  </td><td align="right"> 21K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week6">week6</a>                  </td><td align="right">2005-10-04 15:17  </td><td align="right"> 31K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week5">week5</a>                  </td><td align="right">2004-02-26 19:30  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week4">week4</a>                  </td><td align="right">2003-05-16 13:20  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week3">week3</a>                  </td><td align="right">2003-02-12 11:55  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week2">week2</a>                  </td><td align="right">2006-09-25 11:11  </td><td align="right"> 15K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week1">week1</a>                  </td><td align="right">2007-05-03 20:57  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/proj2">proj2</a>                  </td><td align="right">2010-03-05 03:48  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=A
new file mode 100644
index 0000000..b284eed
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=A
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Solutions</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Solutions</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week3">week3</a>                  </td><td align="right">2003-02-12 11:55  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week8">week8</a>                  </td><td align="right">2003-02-14 18:30  </td><td align="right">4.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week4">week4</a>                  </td><td align="right">2003-05-16 13:20  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week5">week5</a>                  </td><td align="right">2004-02-26 19:30  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week9">week9</a>                  </td><td align="right">2004-03-30 15:37  </td><td align="right"> 20K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week11">week11</a>                 </td><td align="right">2004-04-21 15:46  </td><td align="right"> 25K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week12">week12</a>                 </td><td align="right">2004-04-21 15:49  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week13">week13</a>                 </td><td align="right">2004-04-21 15:51  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week15">week15</a>                 </td><td align="right">2004-05-12 12:53  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week7">week7</a>                  </td><td align="right">2004-08-06 15:53  </td><td align="right"> 21K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week10">week10</a>                 </td><td align="right">2005-04-08 10:37  </td><td align="right"> 36K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week6">week6</a>                  </td><td align="right">2005-10-04 15:17  </td><td align="right"> 31K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week14">week14</a>                 </td><td align="right">2005-12-07 22:53  </td><td align="right"> 42K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week2">week2</a>                  </td><td align="right">2006-09-25 11:11  </td><td align="right"> 15K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week1">week1</a>                  </td><td align="right">2007-05-03 20:57  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/proj2">proj2</a>                  </td><td align="right">2010-03-05 03:48  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=D
new file mode 100644
index 0000000..56cfe86
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=M;O=D
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Solutions</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Solutions</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/proj2">proj2</a>                  </td><td align="right">2010-03-05 03:48  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week1">week1</a>                  </td><td align="right">2007-05-03 20:57  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week2">week2</a>                  </td><td align="right">2006-09-25 11:11  </td><td align="right"> 15K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week14">week14</a>                 </td><td align="right">2005-12-07 22:53  </td><td align="right"> 42K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week6">week6</a>                  </td><td align="right">2005-10-04 15:17  </td><td align="right"> 31K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week10">week10</a>                 </td><td align="right">2005-04-08 10:37  </td><td align="right"> 36K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week7">week7</a>                  </td><td align="right">2004-08-06 15:53  </td><td align="right"> 21K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week15">week15</a>                 </td><td align="right">2004-05-12 12:53  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week13">week13</a>                 </td><td align="right">2004-04-21 15:51  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week12">week12</a>                 </td><td align="right">2004-04-21 15:49  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week11">week11</a>                 </td><td align="right">2004-04-21 15:46  </td><td align="right"> 25K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week9">week9</a>                  </td><td align="right">2004-03-30 15:37  </td><td align="right"> 20K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week5">week5</a>                  </td><td align="right">2004-02-26 19:30  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week4">week4</a>                  </td><td align="right">2003-05-16 13:20  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week8">week8</a>                  </td><td align="right">2003-02-14 18:30  </td><td align="right">4.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week3">week3</a>                  </td><td align="right">2003-02-12 11:55  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=A
new file mode 100644
index 0000000..b8f2eb8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=A
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Solutions</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Solutions</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/proj2">proj2</a>                  </td><td align="right">2010-03-05 03:48  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week1">week1</a>                  </td><td align="right">2007-05-03 20:57  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week2">week2</a>                  </td><td align="right">2006-09-25 11:11  </td><td align="right"> 15K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week3">week3</a>                  </td><td align="right">2003-02-12 11:55  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week4">week4</a>                  </td><td align="right">2003-05-16 13:20  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week5">week5</a>                  </td><td align="right">2004-02-26 19:30  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week6">week6</a>                  </td><td align="right">2005-10-04 15:17  </td><td align="right"> 31K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week7">week7</a>                  </td><td align="right">2004-08-06 15:53  </td><td align="right"> 21K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week8">week8</a>                  </td><td align="right">2003-02-14 18:30  </td><td align="right">4.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week9">week9</a>                  </td><td align="right">2004-03-30 15:37  </td><td align="right"> 20K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week10">week10</a>                 </td><td align="right">2005-04-08 10:37  </td><td align="right"> 36K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week11">week11</a>                 </td><td align="right">2004-04-21 15:46  </td><td align="right"> 25K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week12">week12</a>                 </td><td align="right">2004-04-21 15:49  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week13">week13</a>                 </td><td align="right">2004-04-21 15:51  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week14">week14</a>                 </td><td align="right">2005-12-07 22:53  </td><td align="right"> 42K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week15">week15</a>                 </td><td align="right">2004-05-12 12:53  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=D
new file mode 100644
index 0000000..97181b6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/index.html?C=N;O=D
@@ -0,0 +1,30 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/61a-pages/Solutions</title>
+ </head>
+ <body>
+<h1>Index of /~bh/61a-pages/Solutions</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/?C=S;O=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../../61a-pages">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week15">week15</a>                 </td><td align="right">2004-05-12 12:53  </td><td align="right">9.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week14">week14</a>                 </td><td align="right">2005-12-07 22:53  </td><td align="right"> 42K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week13">week13</a>                 </td><td align="right">2004-04-21 15:51  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week12">week12</a>                 </td><td align="right">2004-04-21 15:49  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week11">week11</a>                 </td><td align="right">2004-04-21 15:46  </td><td align="right"> 25K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week10">week10</a>                 </td><td align="right">2005-04-08 10:37  </td><td align="right"> 36K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week9">week9</a>                  </td><td align="right">2004-03-30 15:37  </td><td align="right"> 20K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week8">week8</a>                  </td><td align="right">2003-02-14 18:30  </td><td align="right">4.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week7">week7</a>                  </td><td align="right">2004-08-06 15:53  </td><td align="right"> 21K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week6">week6</a>                  </td><td align="right">2005-10-04 15:17  </td><td align="right"> 31K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week5">week5</a>                  </td><td align="right">2004-02-26 19:30  </td><td align="right"> 19K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week4">week4</a>                  </td><td align="right">2003-05-16 13:20  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/week3">week3</a>                  </td><td align="right">2003-02-12 11:55  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week2">week2</a>                  </td><td align="right">2006-09-25 11:11  </td><td align="right"> 15K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="week1">week1</a>                  </td><td align="right">2007-05-03 20:57  </td><td align="right"> 11K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Solutions/proj2">proj2</a>                  </td><td align="right">2010-03-05 03:48  </td><td align="right">5.9K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week1 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week1
new file mode 100644
index 0000000..0616593
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week1
@@ -0,0 +1,325 @@
+CS 61A		Week 1		Lab and Homework Solutions
+
+FIRST LAB:
+
+No problems that required original solutions!
+
+SECOND LAB:
+
+1.  Nothing original.
+
+2.  If the last letter is Y, then we have to look at the next-to-last:
+
+(define (plural wd)
+  (if (and (equal? (last wd) 'y)
+	   (not (vowel? (last (bl wd)))))
+      (word (bl wd) 'ies)
+      (word wd 's)))
+
+If you didn't think to use AND in that way, it can be done with nested IFs:
+
+(define (plural wd)
+  (if (equal? (last wd) 'y)
+      (if (vowel? (last (bl wd)))
+	  (word wd 's)
+	  (word (bl wd) 'ies))
+      (word wd 's)))
+
+Or, if that's too messy, with a subprocedure:
+
+(define (plural wd)
+  (if (equal? (last wd) 'y)
+      (y-plural (bl wd))
+      (word wd 's)))
+
+(define (y-plural prefix)
+  (if (vowel? (last prefix))
+      (word prefix 'ys)
+      (word prefix 'ies)))
+
+All of these assume the definition of vowel? in the handout.
+
+
+3.  There are, of course, many possible ways to write this.  None is
+perfectly elegant.  The difficulty is figuring out which of the three
+arguments is smallest, so you can leave it out of the computation.
+The way I like best, I think, is a little tricky:
+
+(define (sum-square-large papa mama baby)
+  (define (square x) (* x x))
+  (cond ((> mama papa) (sum-square-large mama papa baby))
+	((> baby mama) (sum-square-large papa baby mama))
+	(else (+ (square papa) (square mama)))))
+
+I think this way is pretty concise and easy to read.  However, it's okay
+if you did it more straightforwardly like this:
+
+(define (sum-square-large a b c)
+  (define (square x) (* x x))
+  (define (sumsq x y) (+ (square x) (square y)))
+  (cond ((and (<= a b) (<= a c)) (sumsq b c))
+	((and (<= b a) (<= b c)) (sumsq a c))
+	(else (sumsq a b)) ))
+
+If you didn't think of using AND to identify the conditions, it could also
+be done using nested IFs:
+
+(define (sum-square-large a b c)
+  (define (square x) (* x x))
+  (define (sumsq x y) (+ (square x) (square y)))
+  (if (>= a b)
+      (if (>= b c)
+	  (sumsq a b)
+	  (sumsq a c))
+      (if (>= a c)
+	  (sumsq a b)
+	  (sumsq b c))))
+
+Some people wanted to start by solving a subproblem: a function to find
+the two largest numbers.  This can be done, but it's harder:
+
+(define (sum-square-large a b c)
+  (define (square x) (* x x))
+  (define (sumsq nums) (+ (square (first nums)) (square (last nums))))
+  (define (two-largest a b c)
+    (cond ((and (<= a b) (<= a c)) (sentence b c))
+	  ((and (<= b a) (<= b c)) (sentence a c))
+	  (else (sentence a b))))
+  (sumsq (two-largest a b c)))
+
+The trick here is that a function can't return two values, so two-largest
+has to return a sentence containing the two numbers.  This hardly seems
+worth the effort, but the attempt to split the problem into logical pieces
+was well-motivated.  It's a good idea in general, but it didn't work out
+well this time.
+
+See also:
+http://code.google.com/p/jrm-code-project/wiki/ProgrammingArt
+
+
+4.  Since we are examining each word of a sentence, the solution will
+involve a recursion of the form (dupls-removed (bf sent)).  The base
+case is an empty sentence; otherwise, there are two possibilities,
+namely, (first sent) either is or isn't duplicated later in the sentence.
+
+(define (dupls-removed sent)
+  (cond ((empty? sent) '())
+	((member? (first sent) (bf sent))
+	 (dupls-removed (bf sent)))
+	(else (sentence (first sent) (dupls-removed (bf sent))))))
+
+============================================================
+
+HOMEWORK:
+
+1.  The Scheme interpreter applies an ordinary procedure by first evaluating
+all the argument expressions and then invoking the procedure.  Consider first
+one of the examples that worked:
+
+> (new-if (= 2 3) 0 5)
+
+Scheme evaluates this expression as follows:
+
+(a) Evaluate the symbol new-if.  Its value turns out to be an ordinary
+procedure.  Therefore the rest of the combination is evaluated normally.
+
+(b) Evaluate the three argument expressions.  Their values are #f [i.e.,
+false], 0, and 5 respectively.
+
+(c) Apply the procedure new-if to the argument values #f, 0, and 5.  By the
+substitution model, this means we must substitute "#f" for "predicate",
+"0" for "then-clause", and "5" for "else-clause":
+	(cond (#f 0) (else 5))
+
+(d) Evaluate this new expression, getting the value 5.
+
+By contrast, if we'd entered the expression
+
+> (if (= 2 3) 0 5)
+
+Scheme would evaluate it as follows:
+
+(a) Notice that the symbol IF is a keyword, the name of a special form.
+Therefore the rest of the combination is evaluated specially.
+
+(b) Invoke the special form with the UNEVALUATED argument expressions
+"(= 2 3)", "0", and "5".
+
+(c) The "if" evaluation rule then causes its first argument to be
+evaluated.  Since the value is #f, i.e. false, it then evaluates
+the expression "5", whose value is the number 5.  The expression "0"
+is never evaluated.
+
+In the example above, it doesn't make any PRACTICAL difference that the
+expression "5" was evaluated to produce the number 5.  [By the way,
+Scheme uses quotation marks for a special purpose, which isn't what I
+mean here.  I'm just using them to delimit something you're to imagine as
+having typed into the computer.]
+
+Now, on to the square root program.  In the body of sqrt-iter, the third and
+final argument to new-if is the expression
+	(sqrt-iter (improve guess x) x)
+Suppose we invoke sqrt-iter with an expression like
+	(sqrt-iter 1 4)
+Since sqrt-iter and new-if are both ordinary procedures, they are applied
+just like the new-if example I described earlier:
+
+(a) Evaluate the symbol sqrt-iter.  Its value turns out to be an ordinary
+procedure.  Therefore the rest of the combination is evaluated normally.
+
+(b) Evaluate the two argument expressions.  Their values are 1 and 4,
+respectively.
+
+(c) Apply the procedure sqrt-iter to the argument values 1 and 4.  By the
+substitution model, this means we must substitute "1" for "guess" and
+"4" for "x":
+	(new-if (good-enough? 1 4)
+		1
+		(sqrt-iter (improve 1 4)
+			   4))
+
+(d) Evaluate this new expression.  Here is where the problem comes in.
+Since new-if is an ordinary procedure, we follow steps (a)-(d) for this
+sub-evaluation also:
+
+(a) Evaluate the symbol new-if.  Its value turns out to be an ordinary
+procedure.  Therefore the rest of the combination is evaluated normally.
+
+(b) Evaluate the three argument expressions.  The first one turns out
+(after a sequence of (a)-(d) steps) to have the value #f, i.e., false.
+The second has the value 1.  The third invokes sqrt-iter, so we start
+another (a)-(d) sequence of steps just like the first one.  But the first
+one is still pending, waiting for us to finish down here.  That is, the
+evaluation of the original (sqrt-iter 1 4) is waiting for the evaluation
+of the new-if expression, and that's waiting for the evaluation of the new
+sqrt-iter expression.  But THAT will involve evaluating another new-if
+expression, which will...  This is an infinite regress.  You'll never get
+any answer at all.
+
+This business of nested evaluations isn't all wrong.  In the real
+sqrt-iter the same thing happens, with sqrt-iter invoking if, and if
+invoking sqrt-iter, and so on.  The difference is that with the real
+if, a special form, Scheme gets to test whether the good-enough? expression
+is true or false BEFORE it evaluates the inner sqrt-iter expression.  At
+first the good-enough? expression is false, so if invokes sqrt-iter repeatedly
+just as in the new-if version.  But eventually good-enough? returns a true
+[that is, #t] value, and then the inner sqrt-iter expression need not be
+evaluated.  With new-if, we needed to evaluate the inner sqrt-iter before
+we had a chance to see if good-enough? came out true or false.  Therefore
+Scheme never finds out that it's time to stop iterating.
+
+
+2.
+
+(define (squares nums)
+  (if (empty? nums)
+      '()
+      (se (square (first nums))
+	  (squares (bf nums)) )))
+
+
+3.  The tricky part is that the first word of the sentence must be
+treated specially, so there has to be a top-level procedure that handles
+it and also invokes a recursive subprocedure for the rest of the words:
+
+(define (switch sent)
+  (se (switch-first (first sent))
+      (switch-rest (bf sent)) ))
+
+(define (switch-first wd)
+  (cond ((equal? wd 'you) 'I)
+	((equal? wd 'I) 'you)
+	((equal? wd 'me) 'you)
+	(else wd) ))
+
+(define (switch-rest sent)
+  (if (empty? sent)
+      '()
+      (se (switch-one (first sent))
+	  (switch-rest (bf sent)) )))
+
+(define (switch-one wd)
+  (cond ((equal? wd 'you) 'me)
+	((equal? wd 'I) 'you)
+	((equal? wd 'me) 'you)
+	(else wd) ))
+
+4.
+
+(define (ordered? sent)
+  (cond ((empty? (bf sent)) #t)
+	((> (first sent) (first (bf sent))) #f)
+	(else (ordered? (bf sent))) ))
+
+This procedure is written assuming that the argument is a sentence that
+contains at least one word, and that all of the words are numbers.
+
+
+5.
+
+(define (ends-e sent)
+  (cond ((empty? sent) '())
+	((equal? (last (first sent)) 'e)
+	 (se (first sent) (ends-e (bf sent))))
+	(else (ends-e (bf sent)))))
+
+
+6.  Are "and" and "or" ordinary functions or special forms?  The general idea
+of the solution is to type in an expression that will produce an error if all
+its subexpressions are evaluated, and see if they all are.  For example,
+supposing there is no definition for the symbol "x" you could say
+
+> (or 1 2 x)
+
+According to the ordinary evaluation rule, the expressions "1" "2" and "x"
+should all be evaluated before "or" is invoked, so you should get an error
+message complaining about the unbound symbol.  On the other hand, if "or"
+is a special form, you'd expect it to stop as soon as it evaluates the "1"
+and give 1 as its result.
+
+If you try this in Scheme, you don't get an error message.
+This means, most likely, that "or" is a special form whose arguments
+are evaluated one by one.  If there were an error message could you 
+conclude that "or" is ordinary?  No!  "Or" could be a special form
+that evaluates its arguments right-to-left.  For that matter there is
+no reason that "or" couldn't evaluate the middle argument first.  How
+would you test for that?
+
+(Of course, in reality you know that they're special forms because
+the textbook told you so.)
+
+Why might a special form be a good idea?  Here are a few reasons:
+
+(a) Efficiency.  Suppose instead of numbers or symbols I used combinations
+as the arguments to "or", and each combination takes several minutes to
+compute.  If the first one happens to be true, it'd be a shame to waste all
+that time computing the others.
+
+(b) Conditions that depend on each other.  Consider the expression
+
+> (or (= x 0) (> 5 (/ y x)))
+
+This will work fine if "or" is special and evaluates left-to-right,
+otherwise we may be dividing by zero.
+
+Reasons why an ordinary function might be preferred:
+
+(c) Fewer kludges.  It's very easy to read and understand a Lisp program
+if you can be sure that everything that looks like (blah glorp zilch)
+is evaluated by evaluating the subexpressions and then applying the
+procedure "blah" to the arguments "glorp" and "zilch".  Everything that
+looks like a procedure application but is really a special case just makes
+things that much harder to understand.
+
+(d) Creeping featurism.  Where do we stop?  Maybe we should make
+multiplication a special form; after all, in the expression
+
+> (* 0 x)
+
+there's no real reason to evaluate x because we know zero times anything
+is zero.  Pretty soon there are no real functions left in the language.
+
+(e) Functional objects.  You're not expected to know this yet, but
+next week you'll learn that procedures can be manipulated as data,
+just as numbers can.  But special forms aren't procedures and there are
+some things we can't do to them.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week10 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week10
new file mode 100644
index 0000000..53e4817
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week10
@@ -0,0 +1,977 @@
+CS 61A -- Week 10 Solutions
+
+
+LAB ASSIGNMENT:
+
+3.12 append vs. append!  
+
+exp1 is (b); exp2 is (b c d).  Append (without the !) makes copies of the
+two pairs that are part of the list x.  (You can tell because it uses
+cons, which is the constructor function that generates a brand new pair.)
+Append! does not invoke cons; it mutates the existing pairs to combine
+the two argument lists.
+
+
+2.  Set! vs. set-cdr!
+
+There are two ways to think about this, and you should understand both
+of them:
+
+The syntactic explanation -- SET! is a special form; its first argument
+must be a symbol, not a compound expression.  So anything of the form
+       (set! (...) ...)
+must be an error.
+
+The semantic explanation -- SET! and SET-CDR! are about two completely
+different purposes.  SET! is about the bindings of variables in an
+environment.  SET-CDR! is about pointers within pairs.  SET! has nothing
+to do with pairs; SET-CDR! has nothing to do with variables.  There is
+no situation in which they are interchangeable.
+
+(Note:  The book says, correctly, that the two are *equivalent* in the
+sense that you can use one to implement the other.  But what that means
+is that, for example, if we didn't have pairs in our language we could
+use the oop techniques we've learned, including local state variables
+bound in an environment, to simulate pairs.  Conversely, we'll see in
+Chapter 4 that we can write a Scheme interpreter, including environments
+as an abstract data type, building them out of pairs.  But given that
+we are using the regular Scheme's built-in pairs and built-in environments,
+those have nothing to do with each other.)
+
+
+
+3a.  Fill in the blanks.
+
+> (define list1 (list (list 'a) 'b))
+list1
+> (define list2 (list (list 'x) 'y))
+list2
+> (set-cdr! ____________ ______________)
+okay
+> (set-cdr! ____________ ______________)
+okay
+> list1
+((a x b) b)
+> list2
+((x b) y)
+
+The key point here is that if we're only allowed these two SET-CDR!s then
+we'd better modify list2 first, because the new value for list1 uses the
+sublist (x b) that we'll create for list2.
+
+So it's
+
+(set-cdr! (car list2) (cdr list1))
+
+(set-cdr! (car list1) (car list2))
+
+
+
+3b.  Now do (set-car! (cdr list1) (cadr list2)).
+
+Everything that used to be "b" is now "y" instead:
+
+> list1
+((a x y) y)
+> list2
+((x y) y)
+
+The reason is that there was only one appearance of the symbol B in
+the diagram, namely as the cadr of list1; every appearance of B in the
+printed representation of list1 or list2 came from pointers to the
+pair (cdr list1).  The SET-CAR! only makes one change to one pair,
+but three different things point (directly or indirectly) to it.
+
+
+
+3.13 make-cycle
+
+The diagram is
+
+     +----------------+
+     |                |
+     V                |
+---> XX--->XX--->XX---+
+     |     |     |
+     V     V     V
+     a     b     c
+
+(last-pair z) will never return, because there is always a non-empty
+cdr to look at next.
+
+
+
+3.14  Mystery procedure.
+
+This procedure is REVERSE!, that is to say, it reverses the list
+by mutation.  After
+
+     (define v (list 'a 'b 'c 'd))
+     (define w (mystery v))
+
+the value of w is the list (d c b a); the value of v is the list (a)
+because v is still bound to the pair whose car is a.  (The procedure
+does not change the cars of any pairs.)
+
+
+
+5a.  We want Scheme-2 to accept both the ordinary form
+	(define x 3)
+and the procedure-abbreviation form
+	(define (square x) (* x x))
+The latter should be treated as if the user had typed
+	(define square (lambda (x) (* x x)))
+The hint says we can use data abstraction to achieve this.
+
+Here is the existing code that handles DEFINE:
+
+(define (eval-2 exp env)
+  (cond ...
+	((define-exp? exp) (put (cadr exp)
+				(eval-2 (caddr exp) env)
+				env)
+	 		   'okay)
+	...))
+
+We're going to use selectors for the pieces of the DEFINE expression:
+
+(define (eval-2 exp env)
+  (cond ...
+	((define-exp? exp) (put (DEFINE-VARIABLE exp)
+				(eval-2 (DEFINE-VALUE exp) env)
+				env)
+	 		   'okay)
+	...))
+
+To get the original behavior we would define the selectors this way:
+
+(define define-variable cadr)
+(define define-value caddr)
+
+But instead we'll check to see if the cadr of the expression is a
+symbol (so we use the ordinary notation) or a list (abbreviating
+a procedure definition):
+
+(define (define-variable exp)
+  (if (pair? (cadr exp))
+      (caadr exp)		;(define (XXXX params) body)
+      (cadr exp)))
+
+(define (define-value exp)
+  (if (pair? (cadr exp))
+      (cons 'lambda
+	    (cons (cdadr exp)	;params
+		  (cddr exp)))	;body
+      (caddr exp)))
+
+Writing selectors like this is the sort of situation in which the compositions
+like CAADR are helpful.  That particular one is (car (cadr exp)), which is the
+first element of the second element of the expression.  (You should recognize
+CADR, CADDR, and CADDDR as selectors for the second, third, and fourth
+elements of a list.)  The second element of the expression is a list such as
+(SQUARE X), so the car of that list is the variable name.
+
+Since DEFINE-VALUE is supposed to return an expression, we have to construct
+a LAMBDA expression, making explicit what this notation abbreviates.
+
+
+5c.  In a procedure call, parameters are processed from left to right,
+and PUT adds each parameter to the front of the environment.  So they
+end up in reverse order.  Similarly, top-level DEFINEs add things to
+the global environment in reverse order.  So the sequence of expressions
+should be
+
+Scheme-2: (define b 2)
+Scheme-2: (define a 1)
+Scheme-2: ((lambda (c b) 'foo) 4 3)
+
+It doesn't matter what's in the body of the procedure, since we're
+interested in the environments rather than in the values returned.
+
+
+
+HOMEWORK:
+
+3.16 incorrect count-pairs
+
+This procedure would work fine for any list structure that can be expressed
+as (quote <anything>).  It fails when there are two pointers to the same pair.
+
+(define a '(1 2 3))                    (count-pairs a) --> 3
+
+(define b (list 1 2 3))
+(set-car! (cdr b) (cddr b))            (count-pairs b) --> 4
+
+(define x (list 1))
+(define y (cons x x))
+(define c (cons y y))                  (count-pairs c) --> 7
+
+(define d (make-cycle (list 1 2 3)))   (count-pairs d) --> infinite loop
+
+Note from example c that it's not necessary to use mutators to create
+a list structure for which this count-pairs fails, but it is necessary
+to have a name for a substructure so that you can make two pointers to it.
+The name needn't be global, though; I could have said this:
+
+(define c
+  (let ((x (list 1)))
+    (let ((y (cons x x)))
+      (cons y y) )))
+
+
+3.17 correct count-pairs   
+
+(define (count-pairs lst)
+  (let ((pairlist '())
+	(count 0))
+    (define (mark-pair pair)
+      (set! pairlist (cons pair pairlist))
+      (set! count (+ count 1)))
+    (define (subcount pair)
+      (cond ((not (pair? pair)) 'done)
+	    ((memq pair pairlist) 'done)
+	    (else (mark-pair pair)
+		  (subcount (car pair))
+		  (subcount (cdr pair)))))
+    (subcount lst)
+    count))
+
+The list structure in pairlist can get very complicated, especially if
+the original structure is complicated, but it doesn't matter.  The cdrs
+of pairlist form a straightforward, non-circular list; the cars may point
+to anything, but we don't follow down the deep structure of the cars.  We
+use memq, which sees if PAIR (a pair) is eq? (NOT equal?) to the car of some
+sublist of pairlist.  Eq? doesn't care about the contents of a pair; it just
+looks to see if the two arguments are the very same pair--the same location
+in the computer's memory.
+
+[Non-experts can stop here and go on to the next problem.  The following
+optional material is just for experts, for a deeper understanding.]
+
+It's not necessary to use local state and mutation.  That just makes the
+problem easier.  The reason is that a general list structure isn't a sequence;
+it's essentially a binary tree of pairs (with non-pairs as the leaves).  So
+you have to have some way to have the pairs you encounter in the left branch
+still remembered as you traverse the right branch.  The easiest way to do
+this is to remember all the pairs in a variable that's declared outside the
+SUBCOUNT procedure, so it's not local to a particular subtree.
+
+But another way to do it is to have a more complicated helper procedure
+that takes PAIRLIST as an argument, but also sequentializes the traversal by
+keeping a list of yet-unvisited nodes, sort of like the breadth-first tree
+traversal procedure (although this goes depth-first because TODO is a stack,
+not a queue):
+
+(define (count-pairs lst)
+  (define (helper pair pairlist count todo)
+    (if (or (not (pair? pair)) (memq pair pairlist))        ; New pair?
+        (if (null? todo) 				    ;  No. More pairs?
+            count                                           ;   No. Finished.
+            (helper (car todo) pairlist count (cdr todo)))  ;   Yes, pop one.
+        (helper (car pair) (cons pair pairlist) (+ count 1) ;  Yes, count it,
+                (cons (cdr pair) todo)))) 		    ;  do car, push cdr
+  (helper lst '() 0 '()))
+
+As you're reading this code, keep in mind that all the calls to HELPER
+are tail calls, so this is an iterative process, unlike the solution
+using mutation, in which the call (SUBCOUNT (CAR PAIR)) isn't a tail call
+and so that solution generates a recursive process.
+
+And after you understand that version, try this one:
+
+(define (count-pairs lst)
+  (define (helper pair pairlist count todo)
+    (if (or (not (pair? pair)) (memq pair pairlist))        ; New pair?
+	(todo pairlist count)				    ; No. Continue.
+        (helper (car pair) (cons pair pairlist) (+ count 1) ;  Yes, count it,
+		(lambda (pairlist count)		    ;  do car, push cdr
+		  (helper (cdr pair) pairlist count todo)))))
+  (helper lst '() 0 (lambda (pairlist count) count)))
+
+Here, instead of being a list of waiting pairs, TODO is a procedure that
+knows what tasks remain.  The name for such a procedure is a "continuation"
+because it says how to continue after doing some piece of the problem.
+This is an example of "continuation-passing style" (CPS).  Since TODO is
+tail-called, you can think of it as the target of a goto, if you've used
+languages with that feature.
+
+
+3.21 print-queue  
+
+The extra pair used as the head of the queue has as its car an ordinary
+list of all the items in the queue, and as its cdr a singleton list of
+the last element of the queue.  Each of Ben's examples print as a list of
+two members; the first member is a list containing all the items in the
+queue, and the second member is just the last item in the queue.  If you
+look at what Ben printed, take its car and you'll get the queue items;
+take its cdr and you'll get a list of one member, namely the last queue
+item.  The only exception is Ben's last example.  In that case, the car of
+what Ben prints correctly indicates that the queue is empty, but the cdr
+still contains the former last item.  This is explained by footnote 22
+on page 265, which says that we don't bother updating the rear-ptr when we
+delete the last (or any) member of the queue because a null front-ptr is
+good enough to tell us the queue is empty.
+
+It's quite easy to print the sequence of items in the queue:
+
+(define print-queue front-ptr)
+
+
+3.25 multi-key table
+
+Several students generalized the message-passing table implementation
+from page 271, which is fine, but it's also fine (and a little easier)
+to generalize the simpler version of page 270:
+
+(define (lookup keylist table)
+  (cond ((not table) #f)
+	((null? keylist) (cdr table))
+	(else (lookup (cdr keylist)
+		      (assoc (car keylist) (cdr table))))))
+
+(define (insert! keylist value table)
+  (if (null? keylist)
+      (set-cdr! table value)
+      (let ((record (assoc (car keylist) (cdr table))))
+	(if (not record)
+	    (begin
+	     (set-cdr! table
+		       (cons (list (car keylist)) (cdr table)))
+	     (insert! (cdr keylist) value (cadr table)))
+	    (insert! (cdr keylist) value record)))))
+
+That solution assumes all the entries are compatible.  If you say
+	(insert! '(a) 'a-value my-table)
+	(insert! '(a b) 'ab-value my-table)
+the second call will fail because it will try to
+	(assoc 'b (cdr 'a-value))
+and the CDR will cause an error.  If you'd like to be able to have
+values for both (a) and (a b), the solution is more complicated;
+each table entry must contain both a value and a subtable.  In the
+version above, each association list entry is a pair whose CAR is
+a key and whose CDR is *either* a value or a subtable.  In the version
+below, each association list entry is a pair whose CAR is a key and
+whose CDR is *another pair* whose CAR is a value (initially #f) and whose
+CDR is a subtable (initially empty).  Changes are in CAPITALS below:
+
+(define (lookup keylist table)
+  (cond    ; *** the clause ((not table) #f) is no longer needed
+   ((null? keylist) (CAR table))	; ***
+   (else (LET ((RECORD (assoc (car keylist) (cdr table))))
+	   (IF (NOT RECORD)
+	       #F
+	       (lookup (cdr keylist) (CDR RECORD)))))))	; ***
+
+(define (insert! keylist value table)
+  (if (null? keylist)
+      (SET-CAR! table value)	; ***
+      (let ((record (assoc (car keylist) (cdr table))))
+	(if (not record)
+	    (begin
+	     (set-cdr! table
+		       (cons (LIST (CAR keylist) #F) (cdr table))) ; ***
+	     (insert! (cdr keylist) value (CDADR table)))
+	    (insert! (cdr keylist) value (CDR RECORD))))))	; ***
+
+
+Note:  In a sense, this problem can be solved without doing any work at all.
+In a problem like
+
+	(lookup '(red blue green) color-table)
+
+you can think of (red blue green) as a list of three keys, each of which is
+a word, or as a single key containing three words!  So the original
+one-dimensional implementation will accept this as a key.  However, for a
+large enough table, this would be inefficient because you have to look
+through a very long list of length Theta(n^3) instead of three lists each
+Theta(n) long.
+
+
+
+3.27  Memoization 
+
+Here's what happened when I tried it, with annotations in [brackets].
+In the annotations, (fib n) really means that (memo-fib n) is called!
+I just said "fib" to save space.
+
+> (memo-fib 3)
+"CALLED" memo-fib 3                          [user calls (fib 3)]
+  "CALLED" lookup 3 (*table*)
+  "RETURNED" lookup #f
+  "CALLED" memo-fib 2                          [(fib 3) calls (fib 2)]
+    "CALLED" lookup 2 (*table*)
+    "RETURNED" lookup #f
+    "CALLED" memo-fib 1                          [(fib 2) calls (fib 1)]
+      "CALLED" lookup 1 (*table*)
+      "RETURNED" lookup #f
+      "CALLED" insert! 1 1 (*table*)
+      "RETURNED" insert! ok
+    "RETURNED" memo-fib 1                        [(fib 1) returns 1]
+    "CALLED" memo-fib 0                          [(fib 2) calls (fib 0)]
+      "CALLED" lookup 0 (*table* (1 . 1))
+      "RETURNED" lookup #f
+      "CALLED" insert! 0 0 (*table* (1 . 1))
+      "RETURNED" insert! ok
+    "RETURNED" memo-fib 0                        [(fib 0) returns 0]
+    "CALLED" insert! 2 1 (*table* (0 . 0) (1 . 1))
+    "RETURNED" insert! ok
+  "RETURNED" memo-fib 1                        [(fib 2) returns 1]
+  "CALLED" memo-fib 1                          [(fib 3) calls (fib 1) ****]
+    "CALLED" lookup 1 (*table* (2 . 1) (0 . 0) (1 . 1))
+    "RETURNED" lookup 1
+  "RETURNED" memo-fib 1                        [(fib 1) returns 1]
+  "CALLED" insert! 3 2 (*table* (2 . 1) (0 . 0) (1 . 1))
+  "RETURNED" insert! ok
+"RETURNED" memo-fib 2                        [(fib 3) returns 2]
+2
+
+The line marked **** above is the only call to memo-fib in this example in
+which the memoization actually finds a previous value.  We are computing
+(fib 1) for the second time, so memo-fib finds it in the table.
+
+In general, calling memo-fib for some larger argument will result in two
+recursive calls for each smaller argument value.  For example:
+
+      fib 6  --->  fib 5,  fib 4
+      fib 5  --->  fib 4,  fib 3
+      fib 4  --->  fib 3,  fib 2
+
+and so on.  (memo-fib 4) is evaluated once directly from (memo-fib 6) and once
+from (memo-fib 5).  But only one of those actually requires any computation;
+the other finds the value in the table.
+
+This is why memo-fib takes Theta(n) time: it does about 2n recursive calls,
+half of which are satisfied by values found in the table.
+
+If we didn't use memoization, or if we defined memo-fib to be (memoize fib),
+we would have had to compute (f 1) twice.  In this case there would only be
+one duplicated computation, but the number grows exponentially; for (fib 4)
+we have to compute (fib 2) twice and (fib 1) three times.
+
+By the way, notice that if we try (memo-fib 3) a second time from the Scheme
+prompt, we get a result immediately:
+
+> (memo-fib 3)
+"CALLED" memo-fib 3
+ "CALLED" lookup 3 (*table* (3 . 2) (2 . 1) (0 . 0) (1 . 1))
+ "RETURNED" lookup 2
+"RETURNED" memo-fib 2
+2
+
+
+Scheme-2 set!:  This is actually tricky -- I got it wrong the first time
+I tried it.  The trouble is that the procedure PUT in scheme2.scm, which
+was written for use by DEFINE, doesn't modify an existing binding, and
+therefore isn't useful for implementing SET!.  But it's not a good idea
+to change PUT, because that breaks DEFINE.  We want a DEFINE in an inner
+environment (that is, a DEFINE in a procedure body) to make a new
+variable, even if a variable with the same name exists in the global
+environment.  This is why PUT always adds a new binding, not checking
+for an old one.  But SET! should *only* modify an existing binding,
+not create a new one.
+
+We change eval-2 like this:
+
+(define (eval-2 exp env)
+  (cond ...
+	((define-exp? exp) (put (define-variable exp)
+				(eval-2 (define-value exp) env)
+				env)
+	 		   'okay)
+	((SET!-EXP? EXP) (SET-PUT (CADR EXP)
+				  (EVAL-2 (CADDR EXP) ENV)
+				  ENV)
+	 		  'OKAY)
+	...))
+
+Then we define SET-PUT:
+
+(define (set-put var val env)
+  (let ((pair (assoc var (cdr env))))
+    (if pair
+	(set-cdr! pair val)
+	(error "No such variable: " var))))
+
+
+Scheme-2 bug:  This is a complicated diagram, and I'm going to
+abbreviate it by not showing the pairs that are inside lambda
+expressions.  The notation (\x) below means (lambda (x) ...).
+
+
+GLOBAL ENV ----> XX--->XX----------------->XX--------------------->X/
+     +----/ ---^ |     |                   |                   +-^ |
+     |  +--/     V     V                   V                   !   V
+     |  |    *TABLE*   XX                  XX                  !   XX
+     |  |              | \                 | \                 !   | \
+     |  |              V  V                V  V                !   V  |
+     |  |              g  XX--->XX--->X/   h  XX--->XX--->X/   !   f  |
+     |  |                 |     |     |       |     |     |    !      |
+     |  |                 V     V     |       V     V     |    !      |
+     |  |               PROC  (\z)    |     PROC  (\y)    |    !      |
+     |  |                             |                   |    !      |
+     |  +-----------------------------+                   |    !      |
+     |                                                  +-+    !      |
+     |                                                  |      !      |
+     |                                                  |      !      |
+     |                                                  V      !      |
+     |                         env for (f 3)----------> XX--->XX      |
+     |                                                  |  +-^|       |
+     |                                                  V  |  V       |
+     |                                              *TABLE*|  XX      |
+     |                                                     | /  \     |
+     |          env for (h 4)--------> XX--->XX------------+ V  V     |
+     |                                 |     |               x  3     |
+     |                                 V     V      +-----------------+
+     |                             *TABLE*   XX     V
+     |                                      /  \    XX--->XX--->X/
+     |                                      V  V    |     |     |
+     |                                      y  4  PROC  (\x)    |
+     +----------------------------------------------------------+
+
+The problem is with the vertical arrow made of exclamation points near
+the right of the picture.  It tells us that the environment created by
+the call (f 3) extends the global environment *as it exists at the
+time of this procedure call*!  So the new environment has a new
+binding for X, and the existing binding for F.  This is the environment
+that procedure H remembers, so when we call (h 4), within the body of H
+the bindings of G and H are invisible.
+
+The whole point of this exercise is to convince you that it's not
+good enough to represent an environment as a list of bindings.  We
+have to represent it as a list of frames, each of which is a list
+of bindings.  This is how the textbook does it, in week 12.
+
+
+Vector exercises:
+
+1.  VECTOR-APPEND is basically like VECTOR-CONS in the notes,
+except that we need two loops, one for each source vector:
+
+(define (vector-append vec1 vec2)
+  (define (loop newvec vec n i)
+    (if (>= n 0)
+	(begin (vector-set! newvec i (vector-ref vec n))
+	       (loop newvec vec (- n 1) (- i 1)))))
+  (let ((result (make-vector (+ (vector-length vec1) (vector-length vec2)))))
+    (loop result vec1 (- (vector-length vec1) 1) (- (vector-length vec1) 1))
+    (loop result vec2 (- (vector-length vec2) 1) (- (vector-length result) 1))
+    result))
+
+
+2.  VECTOR-FILTER is tough because we have to do the filtering twice,
+first to get the length of the desired result vector, then again to
+fill in the slots:
+
+(define (vector-filter pred vec)
+  (define (get-length n)
+    (cond ((< n 0) 0)
+	  ((pred (vector-ref vec n))
+	   (+ 1 (get-length (- n 1))))
+	  (else (get-length (- n 1)))))
+  (define (loop newvec n i)
+    (cond ((< n 0) newvec)
+	  ((pred (vector-ref vec n))
+	   (vector-set! newvec i (vector-ref vec n))
+	   (loop newvec (- n 1) (- i 1)))
+	  (else (loop newvec (- n 1) i))))
+  (let ((newlen (get-length (- (vector-length vec) 1))))
+    (loop (make-vector newlen) (- (vector-length vec) 1) (- newlen 1))))
+
+
+3.  Bubble sort is notorious because nobody ever uses it in practice,
+because it's slow, but it always appears in programming course
+exercises, because the operation of swapping two neighboring elements
+is relatively easy to write.
+
+(a) Here's the program:
+
+(define (bubble-sort! vec)
+  (let ((len (vector-length vec)))
+    (define (loop n)
+      (define (bubble k)
+	(if (= k n)
+	    'one-pass-done
+	    (let ((left (vector-ref vec (- k 1)))
+		  (right (vector-ref vec k)))
+	      (if (> left right)
+		  (begin (vector-set! vec (- k 1) right)
+			 (vector-set! vec k left)))
+	      (bubble (+ k 1)))))
+      (if (< n 2)
+	  vec
+	  (begin (bubble 1)
+		 (loop (- n 1)))))
+    (loop len)))
+
+(b) As the hint says, we start by proving that after calling (bubble 1) inside
+the call to (loop n), element number n-1 is greater than any element to its
+left.
+
+(Bubble 1) reorders elements 0 and 1 so that vec[0] is less than or equal to
+vec[1] (I'm using C/Java notation for elements of vectors), then reorders
+elements 1 (the *new* element 1, which is the larger of the original first
+two elements) and element 2 so that vec[1] is less than or equal to vec[2].
+It continues, but let's stop here for the moment.  After those two steps,
+the new vec[2] is at least as large as vec[1].  But the intermediate value
+of vec[1] was larger than the new vec[0], so vec[2] must be the largest.
+
+This might be clearer with a chart.  There are six possible original
+orderings of the first three elements; here they are, with the ordering
+after the 0/1 swap and the ordering after the 1/2 swap.  (To make the
+table narrower, I've renamed VEC as V.  Also, I'm calling the three
+values 0, 1, and 2; it doesn't matter what the actual values are, as
+long as they are in the same order as a particular line in the table.)
+
+original	after 0/1 swap	after 1/2 swap
+--------------	--------------	--------------
+v[0] v[1] v[2]	v[0] v[1] v[2]	v[0] v[1] v[2]
+---- ---- ----  ---- ---- ----  ---- ---- ----
+
+  0    1    2     0    1    2     0    1    2
+  0    2    1     0    2    1     0    1    2
+  1    0    2     0    1    2     0    1    2
+  1    2    0     1    2    0     1    0    2
+  2    0    1     0    2    1     0    1    2
+  2    1    0     1    2    0     1    0    2
+
+After the first swap, we have v[0] <= v[1].  After the second swap,
+we have v[1] <= v[2].  But note that there is no guarantee about the
+order of the final v[0] and v[1]!  All that's guaranteed is that
+the largest of the three values is now in v[2].
+
+Similarly, after the 2/3 swap, we know that vec[3] is the largest
+of the first four values, because either the original vec[3] was
+already largest, in which case there is no swap, or the value of
+vec[2] just before the 2/3 swap is the largest of the original
+vec[0] through vec[2], so it's the largest of vec[0] through vec[3]
+and will rightly end up as the new vec[3].
+
+Subprocedure BUBBLE calls itself recursively until k=n, which means
+that vec[n-1] is the largest of the first n elements.  QED.
+
+Now, if that's true about a single pass, then the first pass
+"bubbles" the largest number to the end of the vector (this is why
+it's called bubble sort), and then we call LOOP recursively to
+sort the remaining elements.  The second pass gets vec[len-2] to
+be the largest of the first len-1 elements, etc.  After LEN passes,
+the entire vector is sorted.
+
+This was a handwavy proof.  To make it rigorous, it'd be done by
+mathematical induction -- two inductions, one for the swaps in a
+single pass, and one for the multiple passes.
+
+(c) It's Theta(N^2), for the usual reason: N passes, each of which
+takes time Theta(N).
+
+
+Extra for experts
+-----------------
+
+3.19 constant-space cycle? predicate   
+
+Just to make sure you understand the issue, let me first do 3.18, which
+asks us to write cycle? without imposing a constant-space requirement.
+It's a lot like the correct version of count-pairs; it has to keep track
+of which pairs we've seen already.
+
+(define (cycle? lst)
+  (define (iter lst pairlist)
+    (cond ((not (pair? lst)) #f)
+	  ((memq lst pairlist) #t)
+	  (else (iter (cdr lst) (cons lst pairlist)))))
+  (iter lst '()))
+
+This is simpler than count-pairs because we only have to chase down pointers
+in one direction (the cdr) instead of two, so it can be done iteratively.
+I check (not (pair? lst)) rather than (null? lst) so that the program won't
+blow up on a list structure like (a . b) by trying to take the cdr of b.
+
+The trouble is that the list pairlist will grow to be the same size as the
+argument list, if the latter doesn't contain a cycle.  What we need is to
+find a way to keep the auxiliary list of already-seen pairs without using
+up any extra space.
+
+Here is the very cleverest possible solution:
+
+(define (cycle? lst)
+  (define (iter fast slow)
+    (cond ((not (pair? fast)) #f)
+	  ((not (pair? (cdr fast))) #f)
+	  ((eq? fast slow) #t)
+	  (else (iter (cddr fast) (cdr slow))) ))
+  (if (not (pair? lst))
+      #f
+      (iter (cdr lst) lst) ))
+
+This solution runs in Theta(1) space and Theta(n) time.  We send two
+pointers CDRing down the list at different speeds.  If the list is not a
+cycle, the faster one will eventually hit the end of the list, and we'll
+return false.  If the list is a cycle, the faster one will eventually
+overtake the slower one, and we'll return true.  (You may think that this
+will only work for odd-length cycles, or only for even-length cycles,
+because in the opposite case the fast pointer will leapfrog over the slow
+one, but if that happens the two pointers will become equal on the next
+iteration.)
+
+If you didn't come up with this solution, don't be upset; most folks don't.
+This is a classic problem, and struggling with it is a sort of initiation
+ritual in the Lisp community.  Here's a less clever solution that runs in
+Theta(1) space but needs Theta(n^2) time.  It is like the first solution, the
+one that uses an auxiliary pairlist, but the clever idea is to use the
+argument list itself as the pairlist.  This can be done by clobbering its cdr
+pointers temporarily.  It's important to make sure we put the list back
+together again before we leave!  The idea is that at any time we will have
+looked at some initial sublist of the argument, and we'll know for sure that
+that part is cycle-free.  We keep the tested part and the untested part
+separate by changing the cdr of the last tested pair to the empty list,
+remembering the old cdr in the single extra pointer variable that this
+algorithm requires.
+
+(define (cycle? lst)
+  (define (subq? x list)
+    (cond ((null? list) #f)
+	  ((eq? x list) #t)
+	  (else (subq? x (cdr list)))))
+  (define (iter lst pairlist pairlist-tail)
+    (cond ((not (pair? lst))
+	   (set-cdr! pairlist-tail lst)
+    	   #f)
+	  ((subq? lst pairlist)
+	   (set-cdr! pairlist-tail lst)
+	   #t)
+	  (else
+	   (let ((oldcdr (cdr lst)))
+	     (set-cdr! pairlist-tail lst)
+	     (set-cdr! lst '())
+	     (iter oldcdr pairlist lst) ))))
+  (cond ((null? lst) #f)
+	(else (let ((oldcdr (cdr lst)))
+		(set-cdr! lst '())
+		(iter oldcdr lst lst)))))
+
+Be wary of computing (cdr lst) before you've tested whether or not lst is
+empty.
+
+
+3.23  Double-ended queue 
+
+The only tricky part here is rear-delete-deque!.  All the other deque
+operations can be performed in Theta(1) time using exactly the same structure
+used for the queue in 3.3.2.  The trouble with rear-delete is that in order
+to know where the new rear is, we have to be able to find the next-to-last
+member of the queue.  In the 3.3.2 queue, the only way to do that is to cdr
+down from the front, which takes Theta(n) time for an n-item queue.  To
+avoid that, each item in the queue must point not only to the next item but
+also to the previous item:
+
++---+---+
+| | | --------------------------------------------+
++-|-+---+                                         |
+  |                                               |
+  V                                               V
++---+---+       +---+---+       +---+---+       +---+--/+
+| | | --------->| | | --------->| | | --------->| | | / |
++-|-+---+       +-|-+---+       +-|-+---+       +-|-+/--+
+  |   ^           |   ^           |   ^           |
+  |   +-----+     |   +-----+     |   +-----+     |
+  V         |     V         |     V         |     V
++--/+---+   |   +---+---+   |   +---+---+   |   +---+---+
+| / | | |   +------ | | |   +------ | | |   +------ | | |
++/--+-|-+       +---+-|-+       +---+-|-+       +---+-|-+
+      |               |               |               |
+      V               V               V               V
+      a               b               c               d
+
+
+Whew!  The first pair, at the top of the diagram, is the deque header, just
+like the queue header in 3.3.2.  The second row of four pairs is a regular
+list representing the deque entries, again just like 3.3.2.  But instead of
+each car in the second row pointing to a queue item, each car in this
+second row points to another pair, whose car points to the previous element
+on the second row and whose cdr points to the actual item.
+
+;; data abstractions for deque members
+
+;; we use front-ptr, rear-ptr, set-front-ptr!, and set-rear-ptr! from p. 263
+
+(define deque-item cdar)
+(define deque-fwd-ptr cdr)
+(define deque-back-ptr caar)
+(define set-deque-fwd-ptr! set-cdr!)
+(define (set-deque-back-ptr! member new-ptr)
+  (set-car! (car member) new-ptr))
+
+;; Now the things we were asked to do:
+
+(define (make-deque) (cons '() '()))
+
+(define (empty-deque? deque) (null? (front-ptr deque)))
+
+(define (front-deque deque)
+  (if (empty-deque? deque)
+      (error "front-deque called with empty queue")
+      (deque-item (front-ptr deque))))
+
+(define (rear-deque deque)
+  (if (empty-deque? deque)
+      (error "rear-deque called with empty queue")
+      (deque-item (rear-ptr deque))))
+
+(define (front-insert-deque! deque item)
+  (let ((new-member (list (cons '() item))))
+    (cond ((empty-deque? deque)
+	   (set-front-ptr! deque new-member)
+	   (set-rear-ptr! deque new-member)
+	   "done")
+	  (else
+	   (set-deque-fwd-ptr! new-member (front-ptr deque))
+	   (set-deque-back-ptr! (front-ptr deque) new-member)
+	   (set-front-ptr! deque new-member)
+	   "done"))))
+
+(define (rear-insert-deque! deque item)
+  (let ((new-member (list (cons '() item))))
+    (cond ((empty-deque? deque)
+	   (set-front-ptr! deque new-member)
+	   (set-rear-ptr! deque new-member)
+	   "done")
+	  (else
+	   (set-deque-back-ptr! new-member (rear-ptr deque))
+	   (set-deque-fwd-ptr! (rear-ptr deque) new-member)
+	   (set-rear-ptr! deque new-member)
+	   "done"))))
+
+(define (front-delete-deque! deque)
+  (cond ((empty-deque? deque)
+	 (error "front-delete-deque! called with empty queue"))
+	((null? (deque-fwd-ptr (front-ptr deque)))
+	 (set-front-ptr! deque '())
+	 (set-rear-ptr! deque '())
+	 "done")
+	(else
+	 (set-deque-back-ptr! (deque-fwd-ptr (front-ptr deque)) '())
+	 (set-front-ptr! deque (deque-fwd-ptr (front-ptr deque)))
+	 "done")))
+
+(define (rear-delete-deque! deque)
+  (cond ((empty-deque? deque)
+	 (error "rear-delete-deque! called with empty queue"))
+	((null? (deque-back-ptr (rear-ptr deque)))
+	 (set-front-ptr! deque '())
+	 (set-rear-ptr! deque '())
+	 "done")
+	(else
+	 (set-deque-fwd-ptr! (deque-back-ptr (rear-ptr deque)) '())
+	 (set-rear-ptr! deque (deque-back-ptr (rear-ptr deque)))
+	 "done")))
+
+I could also have gotten away with leaving garbage in the rear-ptr of
+an emptied deque, but the ugliness involved outweighs the slight time
+saving to my taste.  Notice an interesting property of the use of data
+abstraction here: at the implementation level, set-deque-back-ptr! and
+set-deque-fwd-ptr! are rather different, but once that difference is
+abstracted away, rear-delete-deque! is exactly like front-delete-deque!
+and ditto for the two insert procedures.
+
+The reason these procedures return "done" instead of returning deque,
+like the single-end queue procedures in the book, is that the deque is a
+circular list structure, so if we tried to print it we'd get in trouble.
+We should probably invent print-deque:
+
+(define (print-deque deque)
+  (define (sub member)
+    (if (null? member)
+	'()
+	(cons (deque-item member)
+	      (sub (deque-fwd-ptr member)))))
+  (sub (front-ptr deque)))
+
+But I'd say it's a waste of time to cons up this printable list every time
+we insert or delete something.
+
+
+2.  cxr-name
+
+This is a harder problem than its inverse function cxr-function!  We are
+given a function as a black box, not knowing how it was defined; the only
+way we can get any information about it is to invoke it on a cleverly
+chosen argument.
+
+We need three ideas here.  The first one is this:  Suppose we knew that we
+were given either CAR or CDR as the argument.  We could determine which
+of them by applying the mystery function to a pair with the word CAR as its
+car, and the word CDR as its cdr:
+
+(define (simple-cxr-name fn)
+  (fn '(car . cdr)))
+
+You might think to generalize this by building a sort of binary tree with
+function names at the leaves:
+
+(define (two-level-cxr-name fn)
+  (fn '((caar . cdar) . (cadr . cddr))))
+
+But there are two problems with this approach.  First, note that this
+version *doesn't* work for CAR or CDR, only for functions with exactly
+two CARs or CDRs composed.  Second, the argument function might be a
+composition of *any* number of CARs and CDRs, so we'd need an infinitely
+deep tree.
+
+So the second idea we need is a way to attack the mystery function one
+component at a time.  We'd like the first CAR or CDR applied to our argument
+(that's the rightmost one, don't forget) to be the only one that affects the
+result; once that first choice has been made, any CARs or CDRs applied to the
+result shouldn't matter.  The clever idea is to make a pair whose CAR and CDR
+both point to itself!  So any composition of CARs and CDRs of this pair will
+still just be the same pair.
+
+Actually we'll make two of these pairs, one for the CAR of our argument pair
+and one for the CDR:
+
+(define car-pair (cons '() '()))
+(set-car! car-pair car-pair)
+(set-cdr! car-pair car-pair)
+
+(define cdr-pair (cons '() '()))
+(set-car! cdr-pair cdr-pair)
+(set-cdr! cdr-pair cdr-pair)
+
+(define magic-argument (cons car-pair cdr-pair))
+
+(define (rightmost-part fn)
+  (if (eq? (fn magic-argument) car-pair)
+      'car
+      'cdr))
+
+It's crucial that we're using EQ? rather than EQUAL? here, since car-pair
+and cdr-pair are infinite (circular) lists.
+
+Okay, we know the rightmost component.  How do we get all but the rightmost
+component?  (Given that, we can recursively find the rightmost part of that,
+etc.)  Our third clever idea is a more-magic argument that will give us
+magic-argument whether we take its car or its cdr:
+
+(define more-magic-arg (cons magic-argument magic-argument))
+
+(define (next-to-rightmost-part fn)
+  (if (eq? (fn more-magic-arg) car-pair)
+      'car
+      'cdr))
+
+We're going to end up constructing a ladder of pairs whose car and cdr are
+both the next pair down the ladder.  We also need a base case; if we apply
+fn to magic-argument and get magic-argument itself, rather than car-pair
+or cdr-pair, we've run out of composed CAR/CDR functions.
+
+Here's how it all fits together:
+
+(define (cxr-name fn)
+  (word 'c (cxr-name-help fn magic-argument) 'r))
+
+(define (cxr-name-help fn arg)
+  (let ((result (fn arg)))
+    (cond ((eq? result car-pair)
+	   (word (cxr-name-help fn (cons arg arg)) 'a))
+	  ((eq? result cdr-pair)
+	   (word (cxr-name-help fn (cons arg arg)) 'd))
+	  (else ""))))	; empty word if result is magic-argument
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week12 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week12
new file mode 100644
index 0000000..7b8c5a3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week12
@@ -0,0 +1,1008 @@
+CS 61A       Week 12 solutions
+
+LAB EXERCISES
+=============
+
+3.  Why doesn't make-procedure call eval?
+
+Because none of the arguments to lambda should be evaluated.
+In particular, the expressions that make up the body of the procedure are
+not evaluated until the procedure is *invoked*!
+
+
+4.1, left-to-right
+
+(define (list-of-values exps env)       ;; left to right
+  (if (no-operands? exps)
+      '()
+      (let ((left (eval (first-operand exps) env)))
+	(cons left (list-of-values (rest-operands exps) env)))))
+
+(define (list-of-values exps env)       ;; right
+  (if (no-operands? exps)
+      '()
+      (let ((right (list-of-values (rest-operands exps) env)))
+	(cons (eval (first-operand exps) env) right))))
+
+
+4.2, Louis reordering
+
+(a)  The trouble is that APPLICATION? cheats.  The book has
+
+(define (application? exp) (pair? exp))
+
+It really should be something like
+
+(define (application? exp)
+  (and (pair? exp)
+       (not (member (car exp) '(quote set! define if lambda begin cond)))))
+
+They get away with the shorter version precisely because EVAL doesn't
+call APPLICATION? until after it's checked for all the possible special
+forms.  Louis (quite reasonably, I think) wants to rely on APPLICATION?
+behaving correctly no matter when it's called.
+
+(b)  All we are changing is the syntax of an application, so we
+change the procedures that define the "application" abstract data type.
+These are on page 372 of the text.  The new versions are:
+
+(define (application? exp)
+  (tagged-list? exp 'call))
+
+(define (operator exp) (cadr exp))
+
+(define (operands exp) (cddr exp))
+
+
+4.4 AND and OR special forms
+
+The book suggests two solutions: make them primitive special forms
+or make them derived expressions.  We'll do both.
+
+As primitive special forms:
+
+Change the COND clause in EVAL by adding
+
+  (cond ...
+	((and? exp) (eval-and exp env))
+	((or? exp) (eval-or exp env))
+	...)
+
+(define (eval-and exp env)
+  (define (iter tests)
+    (cond ((null? tests) #t)
+	  ((null? (cdr tests)) (eval (car tests) env))
+	  ((true? (eval (car tests) env)) (iter (cdr tests)))
+	  (else #f)))
+  (iter (cdr exp)))
+
+(define (eval-or exp env)
+  (define (iter tests)
+    (if (null? tests)
+	#f
+	(let ((result (eval (car tests) env)))
+	  (if (true? result)
+	      result
+	      (iter (cdr tests))))))
+  (iter (cdr exp)))
+
+Now for the derived expression technique.  Modify the COND clause
+in EVAL this way instead:
+
+  (cond ...
+	((and? exp) (eval (and->if (cdr exp)) env))
+	((or? exp) (eval (or->if (cdr exp)) env))
+	...)
+
+(define (and->if exps)
+  (cond ((null? exps) #t)
+	((null? (cdr exps)) (car exps))
+	(else (make-if (car exps)
+		       (and->if (cdr exps))
+		       #f))))
+
+(define (or->if exps)
+  (if (null? exps)
+      #f
+      (make-if (car exps)
+	       (car exps)
+	       (or->if (cdr exps)))))
+
+This version is elegant but has the disadvantage that you end up
+computing the first true value twice.
+
+
+4.5  Cond => notation
+
+(define (expand-clauses clauses)
+  (if (null? clauses)
+      'false
+      (let ((first (car clauses))
+	    (rest (cdr clauses)))
+	(if (cond-else-clause? first)
+	    (if (null? rest)
+		(sequence->exp (cond-actions first))
+		(error "..."))
+	    (IF (COND-ARROW-CLAUSE? FIRST)
+		(LIST (MAKE-LAMBDA '(COND-FOO)
+				   (MAKE-IF 'COND-FOO
+					    (LIST (COND-ARROW-DOER FIRST)
+						  'COND-FOO)
+					    (EXPAND-CLAUSES REST)))
+		      (COND-PREDICATE FIRST))
+		(make-if (cond-predicate first)
+			 (sequence->exp (cond-actions first))
+			 (expand-clauses rest)))))))
+
+(define (cond-arrow-clause? clause)
+  (and (pair? clause)
+       (= (length clause) 3)
+       (eq? (cadr clause) '=>)))
+
+(define (cond-arrow-doer clause)
+  (caddr clause))
+
+This may be a little confusing.  What it does is to turn a clause like
+
+        (test => recipient)
+
+into
+
+        ((lambda (cond-foo)
+	   (if cond-foo
+	       (recipient cond-foo)
+	       <expanded-rest-of-clauses>))
+	 test)
+
+Using the name cond-foo here is a kludge, because what if the user
+has used the same name for some other purpose within the clause?
+The right thing would be to generate an otherwise-untypable symbol
+each time.  But this is complicated enough already.
+
+By the way, this is really trying to do
+
+        (let ((cond-foo test))
+	  (if ...))
+
+but we don't yet have LET in the metacircular Scheme.
+
+It might be easier to do this by abandoning the whole idea of
+cond->if and just implementing cond directly.
+
+
+5b.  In Logo there are no internal definitions; all procedures are global.
+So we need a situation with two procedures, one of which calls the other:
+
+to outer :var
+inner
+end
+
+to inner
+print :var
+end
+
+? outer 23
+23
+
+To see that this result is different from what would happen with lexical
+scope, try the same example in Scheme:
+
+(define (outer var)
+  (inner))
+
+(define (inner)
+  (print var))
+
+> (outer 23)
+Error -- unbound variable: var
+
+(Or you could define a global variable var whose value is something other
+than 23, and then (outer 23) would print that other value.
+
+
+5c.
+
+Logo " is like Scheme ' -- it's the quoting symbol.  But in Logo it is used
+only with words, not with lists, and there is no QUOTE special form which the
+quotation character abbreviates.
+
+Logo [ ] are like '( ) in Scheme -- the brackets both delimit and quote a
+list.  But within a list, brackets are used to delimit sublists, and don't
+imply an extra level of quotation, so Logo [a [b c] d] means '(a (b c) d),
+not '(a '(b c) d).  So, how do you get the effect of Scheme's ( ) without
+quotation?  In Scheme that means to call a procedure; in Logo you don't
+need any punctuation to call a procedure!  You just give the procedure name
+and its arguments.  But in Logo you *can* use parentheses around a procedure
+call just as you would in Scheme.
+
+Logo : means that you want the value of the variable whose name follows the
+colon.  In Scheme the name by itself means this -- if you want the value of
+variable X, you just say X.  The reason this doesn't work in Logo is that
+in Logo procedures aren't just another data type, and a procedure name isn't
+just the name of a variable whose value happens to be a procedure.  (In other
+words, Logo procedures are not first-class.)  In Logo there can be a procedure
+and a variable with the same name, so FOO means the procedure and :FOO means
+the variable.
+
+
+HOMEWORK
+========
+
+4.3  data-directed eval
+
+The table itself could be done in several ways; perhaps the easiest
+is to use the built-in table from chapter 2.  So we say:
+
+(put 'quote 'eval text-of-quotation)
+(put 'define 'eval eval-definition)
+(put 'set! 'eval eval-assignment)
+
+Where the original eval does something other than (foo exp env) we
+have to write an interface procedure.  For example:
+
+(define (eval-lambda exp env)
+  (make-procedure (lambda-parameters exp) (lambda-body exp) env))
+
+(put 'lambda 'eval eval-lambda)
+
+
+(define (eval exp env)
+  (cond ((self-evaluating? exp) exp)
+	((variable? exp) (lookup-variable-value exp env))
+	(else (let ((form (get (operator exp) 'eval)))
+		 (if form       	;; IT'S A SPECIAL FORM
+		     (form exp env)	;; SO form IS THE PROCEDURE TO CALL
+		     (apply (eval (operator exp) env)
+			    (list-of-values (operands exp) env) ))))))
+
+The first two COND clauses deal with atomic expressions: numbers (which
+are self-evaluating) and symbols (which represent variables).  If the
+expression is neither of those, then it's a list, and we look at its
+CAR.  We look that up in the table; if we find it, the expression is a
+special form, and we invoke the particular procedure that knows about
+that special form.  Otherwise, it's a regular procedure.
+We're neglecting various kinds of errors that might occur with mal-formed
+input.
+
+We also have to rewrite text-of-quotation so that it accepts an extra
+input, the environment, even though it doesn't need it:
+
+(define (text-of-quotation exp env)
+  (cadr exp))
+
+And we have to write a new "front end" to cond->if:
+
+(define (eval-cond exp env)
+  (eval (cond->if exp) env))
+
+and put that in the table.
+
+It would also be possible to include the atomic expressions in the
+general data-directed mechanism by assigning them implicit types just as
+we assigned Scheme numbers an implicit type in exercise 2.78, page 193:
+
+(define (expression-type exp)
+  (cond ((self-evaluating? exp) '(() SELF-EVALUATING))
+	((symbol? exp) '(() SYMBOL))
+	((pair? exp) (car exp))
+	(else (error "Unknown expression type" exp))))
+
+(define (eval exp env)
+  (let ((handler (get (expression-type exp) 'eval)))
+    (if handler
+	(handler exp env)
+	(apply (eval (operator exp) env)
+	       (list-of-values (operands exp) env)))))
+
+(put '(() self-evaluating) 'eval (lambda (exp env) exp))
+(put '(() symbol) 'eval lookup-variable-value)
+
+The reason for using (() SYMBOL) instead of just SYMBOL as the type tag
+is that otherwise we'd get in trouble if an expression tried to call a
+procedure named SYMBOL.  These type tags aren't valid Scheme expressions,
+so they shouldn't get us in trouble.
+
+
+4.6  Implementing LET   
+
+;; In eval's big cond we put
+
+	((let? exp) (eval (let->combination exp) env))
+
+;; Now for the guts of the problem:
+
+(define (let->combination exp)
+  (cons (make-lambda (let-formals exp)
+		     (let-body exp))
+	(let-actuals exp)))
+
+;; And now for the data abstraction stuff:
+
+(define (let? exp)
+  (tagged-list? exp 'let))
+
+(define (let-formals exp)
+  (map car (cadr exp)))
+
+(define (let-actuals exp)
+  (map cadr (cadr exp)))
+
+(define (let-body exp)
+  (cddr exp))
+
+
+Please note that this problem becomes MUCH easier if you ruthlessly separate
+the semantics (let->combination) from the mickey mouse work of extracting
+the syntactic components.  I actually wrote this in the order in which it
+appears here; in essence I solved the problem completely before I thought at
+all about syntactic issues.
+
+
+4.7 Implementing Let*
+
+(define (let*->nested-lets exp)
+  (if (null? (let-bindings exp))
+      (make-let '() (let-body exp))
+      (make-let (list (car (let-bindings exp)))
+		(list (make-let* (cdr (let-bindings exp))
+				 (let-body exp))))))
+
+(define (let-bindings exp)
+  (cadr exp))
+
+(define (make-let bindings body)
+  (cons 'let (cons bindings body)))
+
+(define (make-let* bindings body)
+  (cons 'let* (cons bindings body)))
+
+I'm cheating slightly by using LET-BODY for a LET* expression instead
+of inventing a whole new abstract data type.  In principle someone
+might want to change Scheme so that the syntax of LET* looks different
+from the syntax of LET.
+
+
+4.10 new syntax
+
+Okay, let's make the syntax of IF look like it does in those other bad
+languages.  (After all, any change we make to Scheme's syntax *has* to make
+it worse!)  The new syntax will be (if ... then ... else ...).
+
+(define (if? exp)
+  (and (tagged-list? exp 'if)
+       (eq? (caddr exp) 'then)
+       (or (= (length exp) 4)
+	   (eq? (list-ref exp 4) 'else))))
+
+(define (if-predicate exp) (cadr exp))
+
+(define (if-consequent exp) (cadddr exp))
+
+(define (if-alternative exp) (list-ref exp 5))
+
+Of course you can do lots of other changes too, so if you're copying
+last semester's answers next semester, the reader will be suspicious
+if you come up with this choice!  :-)
+
+
+4.11  changed frame representation
+
+(define (make-frame variables values)
+  (attach-tag 'frame (map cons variables values)))
+
+(define (frame-variables frame)
+  (map car (contents frame)))
+
+(define (frame-values frame)
+  (map cdr (contents frame)))
+
+(define (add-binding-to-frame! var val frame)
+  (set-cdr! frame (cons (cons var val) (contents frame))))
+
+As explained in footnote 14 on page 378, the procedures lookup-variable-value,
+set-variable-value!, and define-variable! aren't just above-the-line users of
+the frame ADT, because the latter two use SET-CAR! to modify frames.
+Lookup-variable-value could actually work exactly as written, but the others
+have to be changed, and that one should also be changed, to use ASSOC in
+their SCAN internal procedures.  Basically these will look like the table
+procedures from chapter 3:
+
+(define (lookup-variable-value var env)
+  (define (env-loop env)
+    (DEFINE (SCAN ALIST)
+      (LET ((RESULT (ASSOC VAR ALIST)))
+	(IF RESULT
+	    (CDR RESULT)
+	    (ENV-LOOP (ENCLOSING-ENVIRONMENT ENV)))))
+    (if (eq? env the-empty-environment)
+	(error "Unbound variable" var)
+	(let ((frame (first-frame env)))
+	  (SCAN (CONTENTS FRAME)))))
+  (env-loop env))
+
+(define (set-variable-value! var val env)
+  (define (env-loop env)
+    (DEFINE (SCAN ALIST)
+      (LET ((RESULT (ASSOC VAR ALIST)))
+	(IF RESULT
+	    (SET-CDR! RESULT VAL)
+	    (ENV-LOOP (ENCLOSING-ENVIRONMENT ENV)))))
+    (if (eq? env the-empty-environment)
+	(error "Unbound variable -- SET!" var)
+	(let ((frame (first-frame env)))
+	  (SCAN (CONTENTS FRAME)))))
+  (env-loop env))
+
+(define (define-variable! var val env)
+  (let ((frame (first-frame env)))
+    (DEFINE (SCAN ALIST)
+      (LET ((RESULT (ASSOC VAR ALIST)))
+	(IF RESULT
+	    (SET-CDR! RESULT VAL)
+	    (ADD-BINDING-TO-FRAME! VAR VAL FRAME))))
+    (SCAN (CONTENTS FRAME))))
+
+If I hadn't attached a tag to the frames, this would be harder.
+I wouldn't be able to have an add-binding-to-frame! procedure
+because there wouldn't be anything in an empty frame to mutate.
+Instead, define-variable! would have to get more complicated.
+
+
+4.13  make-unbound   
+
+First, about the design issues:  I see three possibilities.  You can
+require that the symbol be bound in the current environment and remove
+that binding only; you can remove the nearest single binding; or you can
+remove all bindings of that symbol.  Perhaps the best solution in any case
+where it's not obvious what the right semantics is would be to provide
+all three versions: unbind-this-frame, unbind-nearest, and unbind-all.
+That way the user can decide for herself what best suits the application
+at hand.  Failing that, I vote for the second choice: removing the nearest
+binding.  Here's why.  First of all, the third version can be written in
+terms of the second:
+
+(define (unbind-all sym)
+  (cond ((bound? sym)
+	 (unbind-nearest sym)
+	 (unbind-all sym))
+	(else '())))
+
+(This assumes we have a predicate bound? that returns true if there is
+an accesible binding for the symbol.  If we provide any form of unbinding
+we should probably provide that too.)  But the second can't be written in
+terms of the third.  So if we're only having one we should have the more
+flexible one.  I rule out the first (current frame only) because I can
+easily imagine wanting to write a procedure like
+
+(define (cleanup)
+  (make-unbound 'a)
+  (make-unbound 'b)
+  (make-unbound 'c))
+
+that removes global variables at the end of a computation, but this
+wouldn't be possible under the first option.  (Why not?)
+
+I have also implicitly decided another design question: should this be
+a special form that requires an unevaluated symbol, like set!, or should
+it be an ordinary procedure whose actual parameter is evaluated?  In
+order to make things like unbind-all (above) work, it should be an ordinary
+procedure.  (What I want to get unbound is the actual argument to
+unbind-all, not the symbol "sym" itself.)  Then again, I think set! should
+be an ordinary procedure, too, so perhaps you're asking the wrong person.
+
+Trouble is, we can't REALLY make make-unbound an ordinary procedure
+because it has to have access to the environment.  If Scheme were
+dynamically scoped, any procedure in the evaluator could just make a
+free reference to "env" to get the current user environment, but as it
+is we have to have eval treat make-unbound specially.  So we'll make 
+it a special form but still have it evaluate everything.
+
+(define (eval-make-unbound exp env)
+  (define (unbind-in-frame sym frame)
+    (define (remove-not-first-binding vars vals)
+      (if (eq? sym (cadr vars))
+	  (begin (set-cdr! vars (cddr vars))
+		 (set-cdr! vals (cddr vals)))
+	  (remove-not-first-binding (cdr vars) (cdr vals))))
+    (if (eq? sym (car (frame-variables frame)))
+	(begin (set-car! frame (cdr (frame-variables frame)))
+	       (set-cdr! frame (cdr (frame-values frame))))
+	(remove-not-first-binding (frame-variables frame)
+				  (frame-values frame))))
+  (define (env-iter sym env)
+    (cond ((eq? env the-empty-environment) 'okay)
+	  ((memq sym (frame-variables (first-frame env)))
+	   (unbind-in-frame sym (first-frame env)))
+	  (else (env-iter sym (enclosing-environment env)))))
+  (env-iter (eval (cadr exp) env) env))
+
+This is rather messier than one might wish, because if the binding in
+question is the first one in a frame, we have to remove it differently from
+if it's not the first in a frame.  In the first case we mutate the header
+pair of the frame; in the second case we splice elements out of two lists.
+Had this evaluator been written with unbinding in mind, they might have
+picked a different data structure.  Env-iter looks for the first frame in
+which the symbol is bound, then unbinds it in that frame.  Unbind-in-frame
+first checks the first binding specially, then uses remove-not-first-binding
+to check the other bindings.
+
+Strictly speaking, I should have made mutators for the frame
+abstraction.  The obvious choice would be set-frame-variables! and
+set-frame-values!, but actually that only makes sense if we know that
+the frame is represented as two parallel lists.  If the frame is
+represented as an a-list, as in exercise 4.11, then a better choice
+would be set-frame-bindings!.  So the really right thing, to keep
+the abstraction barrier solid, is to have a mutator frame-remove-binding!
+that would be like the unbind-in-frame part of the code above.  It would
+be different for different representations, but would have the same
+effect above the abstraction barrier.
+
+Finally, we have to modify eval, adding
+
+  ((make-unbound? exp) (eval-make-unbound exp env))
+
+to the big cond.
+
+(define (make-unbound? exp)
+  (tagged-list? exp 'make-unbound))
+
+
+
+4.14 why doesn't map work?
+
+This question is about level confusion.  Let's talk about meta-Scheme,
+the one implemented by the metacircular evaluator, and under-Scheme, the
+regular Scheme in which the MCE is written.
+
+Eva defines MAP in meta-Scheme.  In particular, when MAP tries to invoke
+a meta-Scheme procedure for each element of the list, it's doing a
+meta-Scheme invocation.
+
+Louis uses the MAP that's defined in under-Scheme.  When he calls MAP,
+he is giving it a meta-Scheme procedure as its first argument, but it's
+expecting an under-Scheme procedure.  From the point of view of under-Scheme,
+a meta-Scheme procedure isn't a procedure at all -- it's a list whose car
+is the word PROCEDURE.
+
+
+4.15 the halting problem
+
+This is the most famous problem in automata theory, the most elegant proof that
+some things can't be done no matter how sophisticated our computers become.
+The proof was first given using the "Turing machine," an abstract machine
+that's used only for proving theorems.  But the same idea works in any
+formal system that's capable of representing a procedure as data; the key
+element of the proof is the fact that the hypothetical HALTS? is a
+higher-order function.
+
+Suppose that (HALTS? TRY TRY) returns #T.  Then when we call (TRY TRY)
+it says, after argument substitution,
+
+        (if (halts? try try)
+	    (run-forever)
+	    'halted)
+
+But this will run forever, and so (TRY TRY) runs forever, and so
+(HALTS? TRY TRY) should have returned #F.
+
+Similarly, suppose that (HALTS? TRY TRY) returns #F.  Then (TRY TRY)
+turns into the same IF expression shown above, but this time the
+value of that expression is the word HALTED -- that is, it halts.
+So (HALTS? TRY TRY) should have returned #T.
+
+
+4.22  LET in analyzing evaluator
+
+This is easy, given the hint about 4.6.  We don't have to change the
+procedure LET->COMBINATION we wrote for that exercise; since it deals
+entirely with the expression, and not with the values of variables,
+all of its work can be done in the analysis phase.  All we do is
+change this COND clause in EVAL:
+
+	((let? exp) (eval (let->combination exp) env))
+
+to this COND clause in ANALYZE:
+
+	((let? exp) (analyze (let->combination exp)))
+
+
+4.23  Efficiency of analyze-sequence
+
+For a sequence with just one expression, the book's version does the
+following analysis:  First, the body of analyze-sequence is the LET.
+Suppose that the result of analyzing the one expression is PROC.
+Then the variable PROCS will have as its value a list whose only
+element is PROC.  That's not null, so (still in the analysis part)
+we call (LOOP PROC '()).  In LOOP, since (in this case) REST-PROCS
+is null, LOOP just returns PROC.  So if the analysis of EXP gives
+PROC, then the analysis of (BEGIN EXP) also gives PROC.
+
+In the same one-expression case, Alyssa's version returns
+	(lambda (env) (execute-sequence (list PROC) env))
+So every time this execution procedure is called, execute-sequence
+will check that (cdr procs) is empty, which it is, and then
+calls PROC with the environment as its argument.  This test of
+(null? (cdr procs)) is done for every execution, whereas in the
+book's version it was done just once.
+
+How about the two-expression case.  Suppose that the analysis of
+EXP1 gives PROC1, and the anaylsis of EXP2 gives PROC2.  The book's
+version will call, in effect, (loop PROC1 (list PROC2)).  This
+in turn calls (sequentially PROC1 PROC2), which returns
+	(lambda (env) (PROC1 env) (PROC2 env))
+as the execution procedure.  (There is a recursive call to LOOP,
+but it doesn't change the result, because this time the second
+argument is null.)
+
+Alyssa's version makes the execution procedure be
+	(lambda (env) (execute-sequence (list PROC1 PROC2) env)))
+which in effect means
+	(lambda (env)
+	  (cond ((null? (list PROC2)) ...)
+		(else (PROC1 env)
+		      (cond ((null? '()) (PROC2 env)) ...))))
+Each time this is executed, we do two unnecessary checks for
+the nullness of a list -- unnecessary because we already knew
+while doing the analysis how many expressions are in the sequence.
+
+
+4.24  How fast?
+
+Hint:  You'll get the most dramatic results when an expression
+is evaluated over and over, i.e., with a recursive procedure.
+
+
+
+2.  Type checking
+
+When we define a procedure, we don't even look at the parameter
+list; it's just stored as part of the procedure.  That doesn't
+need to be changed.  When do we have to check the type?  We do it
+when we're invoking a procedure, as part of the process of
+binding names to values.  This happens in extend-environment
+and make-frame.  The only change to extend-environment is that it
+has to supply the environment that we're extending to make-frame,
+because make-frame will have to look up the type predicates:
+
+(define (extend-environment vars vals base-env)
+  (if (= (length vars) (length vals))
+      (cons (make-frame vars vals BASE-ENV) base-env)
+      (if (< (length vars) (length vals))
+	  (error "Too many arguments supplied" vars vals)
+	  (error "Too few arguments supplied" vars vals))))
+
+Make-frame, which was trivial before this change, now has some
+real work to do:
+
+(define (make-frame variables values BASE-ENV)
+  (DEFINE (TYPE-CHECK VAR VAL)
+    (IF (AND (PAIR? VAR)
+	     (NOT (APPLY (EVAL (CAR VAR) BASE-ENV)
+			 (LIST VAL))))
+	(ERROR "WRONG ARGUMENT TYPE" VAL)))
+  (DEFINE (SCAN VARS VALS)
+    (COND ((NULL? VARS) #T)
+	  (ELSE (TYPE-CHECK (CAR VARS) (CAR VALS))
+		(SCAN (CDR VARS) (CDR VALS)))))
+  (SCAN VARIABLES VALUES)
+  (cons (JUST-NAMES variables) values))
+
+(DEFINE (JUST-NAMES VARS)
+  (COND ((NULL? VARS) '())
+	((PAIR? (CAR VARS))
+	 (CONS (CADAR VARS) (JUST-NAMES (CDR VARS))))
+	(ELSE (CONS (CAR VARS) (JUST-NAMES (CDR VARS))))))
+
+Another approach would be to try to modify the procedure as it's being
+created (therefore, in make-procedure, called from eval) so that the type
+checks become part of the procedure's body.  This can be done, but it's
+quite tricky to get it right.  For example, in what environment should the
+names of the type predicates be looked up?
+
+It's a real misunderstanding of the problem to write a solution in which
+specific type predicates such as INTEGER? are built into the evaluator.
+If there's a type checking system, it should work for user-defined types
+as well as for primitive types.  For example, I should be able to say
+that an argument must be a prime number, or must be a three-letter word.
+
+  
+
+Extra for Experts
+=================
+
+4.16
+
+(a)
+
+(define (lookup-variable-value var env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((eq? var (car vars))
+             (LET ((RESULT (car vals)))			  ;; ***
+	       (IF (EQ? RESULT '*UNASSIGNED*)		  ;; ***
+		   (ERROR "UNBOUND VARIABLE" (CAR VARS))  ;; ***
+		   RESULT)))				  ;; ***
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable" var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+
+(b)
+
+(define (scan-out-defines body)
+  (cond ((null? body) '())
+	((definition? (car body))
+	 (list	  ; body is a list of expressions, we make one-element list
+	  (cons 'let
+		(cons (make-let-variables (definitions body))
+		      (append (make-setbangs (definitions body))
+			      (non-definitions body))))))
+	(else body)))
+
+(define (definitions body)
+  (cond ((null? body) '())
+	((definition? (car body))
+	 (cons (car body) (definitions (cdr body))))
+	(else '())))
+
+(define (non-definitions body)
+  (cond ((null? body) '())
+	((definition? (car body))
+	 (non-definitions (cdr body)))
+	(else body)))
+
+(define (make-let-variables definitions)
+  (map (lambda (def)
+	 (list (definition-variable def) '(quote *unassigned*)))
+       definitions))
+
+(define (make-setbangs definitions)
+  (map (lambda (def)
+	 (list 'set! (definition-variable def) (definition-value def)))
+       definitions))
+
+
+(c)  It should be in make-procedure, because then the scanning is done only
+once, when the procedure is created, rather than every time the procedure
+is called.  (On the other hand, if Scheme printed procedures in a way that
+showed the body, the user might wonder why the body isn't what s/he wrote.)
+
+(define (make-procedure parameters body env)
+  (list 'procedure parameters (scan-out-defines body) env))
+
+
+4.17
+
+The extra frame is created by the LET we introduced into the procedure body.
+The frame itself would matter only if some expressions were evaluated in the
+outer frame rather than the inner one.  But there are no such expressions,
+except for the (QUOTE *UNASSIGNED*) ones we put in the LET, and those don't
+depend on the environment for their values.
+
+We could do it without the extra frame by scanning
+
+(lambda (args...)
+  (define u e1)
+  (define v e2)
+  ...)
+
+into
+
+(lambda (args)
+  (define u '*unassigned*)
+  (define v '*unassigned*)
+  (set! u e1)
+  (set! v e2)
+  ...)
+
+and continuing to use the sequential version of internal DEFINE already in the
+metacircular evaluator.  (This may seem to have no benefit at all, but it does,
+because the local variables U and V are bound before the expressions E1 and E2
+are evaluated, so we can be sure they won't refer to global variables.)
+
+
+4.18 
+
+You can't actually experiment with this question unless you define DELAY
+and CONS-STREAM as special forms in the metacircular evaluator.
+
+The SOLVE procedure would work using the scan-out approach of 4.16, but not
+using the version proposed in this exercise.  The body of SOLVE would be
+
+	(let ((y '*unassigned*) (dy '*unassigned*))
+	  (let ((gensym1 (integral (delay dy) y0 dt))
+		(GENSYM2 (STREAM-MAP F Y)))
+	    (set! y gensym1)
+	    (set! dy gensym2)
+	    y)
+
+In the line in capital letters, stream-map is an ordinary procedure, so its
+argument expressions are evaluated before stream-map is called.  One of the
+arguments is Y, whose value at this point is *unassigned*, so an error will
+result.  This is consistent with the definition of LETREC in the Scheme
+standard.  (Internal DEFINE is defined by the standard to be equivalent to
+LETREC.  See page 16 of the standard, in the course reader, section 5.5.2.
+Then see pages 11-12 for the discussion of LETREC, especially the last
+paragraph of that section.)
+
+
+4.19
+
+This is answered in the footnote: the authors support Alyssa.
+
+One possible way to get what Eva wants is to use the approach of exercise
+4.16, but instead of giving an error if one of the SET! expressions fails,
+move it to the end of the line, so you keep trying until every variable has a
+value or until no further progress can be made.  So in this example it'd be
+
+	(let ((b '*unassigned*) (a '*unassigned*))
+	  (set!-ignoring-errors b (+ a x))
+	  (set!-ignoring-errors a 5)
+	  (if (unassigned? b) (set! b (+ a x)))
+	  (if (unassigned? a) (set! a 5))
+	  (+ a b))
+
+using pseudo-special-forms SET!-IGNORING-ERRORS and UNASSIGNED? that aren't
+defined but whose meanings should be obvious.  You'd have to repeat the IF
+expressions as many times as you have variables, to be sure that any
+dependency order would work.
+
+Even so, an expression such as
+
+	(define (f x)
+	  (define a (+ b 3))
+	  (define b (+ a 4))
+	  (+ a b))
+
+won't work no matter how many times you try the assignments.
+
+
+4.20
+
+(a)
+
+(define (letrec? exp)
+  (tagged-list? exp 'letrec))
+
+(define (letrec->let exp)
+  (cons 'let
+	(cons (map (lambda (var) (list var '(quote *unassigned*)))
+		   (let-formals exp))
+	      (append (map (lambda (var val) (list 'set! var val))
+			   (let-formals exp)
+			   (let-actuals exp))
+		      (let-body exp)))))
+
+Then add a cond clause to EVAL:
+
+	((letrec? exp) (eval (letrec->let exp) env))
+
+
+(b) In the correct version, after transforming the LETREC as on page 389,
+we have
+
+(define (f x)
+  (let ((even? '*unassigned*) (odd? '*unassigned*))
+    (set! even? (lambda (n) (if (= n 0) true (odd? (- n 1)))))
+    (set! odd? (lambda (n) (if (= n 0) false (even? (- n 1)))))
+    <rest of body of F>))
+
+Evaluating that gives
+
+    global env:  F -> procedure P1
+
+    procedure P1: params (x), body (let ...), global env
+
+When evaluating (F 5), we add
+
+    E1: X -> 5, extends G
+
+The LET expands to a LAMBDA and an invocation:
+
+    procedure P2: params (even? odd?),  body (set! ...)...,  env E1
+
+    E2: EVEN? -> *unassigned*,  ODD? -> *unassigned*,  extends E1
+
+With E2 as the current environment we evaluate the two SET! expressions,
+which create procedures (because of the LAMBDA expressions inside them) and
+change the bindings in E2:
+
+    procedure P3: params (n),  body (if (= n 0) true (odd? ...)),  env E2
+    procedure P4: params (n),  body (if (= n 0) false (even? ...)),  env E2
+
+    E2: EVEN? -> procedure P3,  ODD? -> procedure P4,  extends E1
+
+Note that P3 and P4 are created in E2, so they have access to the bindings
+for EVEN? and ODD?.
+
+Then we evaluate the remaining expression in the body of F, which can use
+EVEN? and ODD? successfully.
+
+By contrast, Louis wants us to evaluate
+
+(define (f x)
+  (let ((even?
+	 (lambda (n)
+	   (if (= n 0)
+	       true
+	       (odd? (- n 1)))))
+	(odd?
+	 (lambda (n)
+	   (if (= n 0)
+	       false
+	       (even? (- n 1))))))
+    <rest of body of F>))
+
+This time, when evaluating (F 5), we still add
+
+    E1: X -> 5, extends G
+
+The LET expands to a LAMBDA and an invocation with procedures as arguments:
+
+    ((lambda (even? odd?) <rest of body>)
+     (lambda (n) (if (= n 0) true (odd? (- n 1))))
+     (lambda (n) (if (= n 0) false (even? (- n 1)))))
+
+The three LAMBDA expressions give us
+
+    procedure P2: params (even? odd?),  body <rest of body>,  env E1
+    procedure P3: params (n),  body (if (= n 0) true (odd? ...)),  env E1
+    procedure P4: params (n),  body (if (= n 0) false (even? ...)),  env E1
+
+We can then invoke P2 with P3 and P4 as its arguments:
+
+    E2: EVEN? -> procedure P3,  ODD? -> procedure P4,  extends E1
+
+In this environment we evaluate <rest of body>.  Suppose it's a simple
+expression: (EVEN? X).  First we evaluate the subexpressions.  In E2 we
+find the binding EVEN? -> P3.  There's no binding for X in frame E2, but
+it extends E1, where we find X -> 5.  Now we invoke P3 by making a new
+environment:
+
+    E3: N -> 5, extends E1
+
+Note that E3 extends E1, not E2, because E1 is where P3 was created.
+
+With E3 as the current environment we evaluate the body of P3, which is
+
+    (if (= n 0) true (odd? (- n 1)))
+
+We easily evaluate (= N 0) and get the answer #F.  We then try to evaluate
+
+    (odd? (- n 1))
+
+But there is no binding for ODD? in E3, including the frames it extends.
+That's why LET instead of LETREC isn't sufficient.
+
+
+4.21
+
+We've actually seen this idea before, in the Extra for Experts in week 2.
+
+(a) FIB without DEFINE/LETREC
+
+((lambda (n)
+   ((lambda (fib) (fib fib n))
+    (lambda (fb k)
+      (if (< k 2)
+	  k
+	  (+ (fb fb (- k 1))
+	     (fb fb (- k 2)))))))
+ 10)
+
+
+(b) EVEN?/ODD? ditto
+
+(define (f x)
+  ((lambda (even? odd?)
+     (even? even? odd? x))
+   (lambda (ev? od? n)		; This is EVEN?
+     (if (= n 0) true (OD? EV? OD? (- N 1))))
+   (lambda (ev? od? n)		; This is ODD?
+     (if (= n 0) false (EV? EV? OD? (- N 1))))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week14 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week14
new file mode 100644
index 0000000..53486bd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week14
@@ -0,0 +1,1404 @@
+CS61A	Week 11 solutions
+
+LAB:
+----
+
+4.27  Lazy vs. mutation
+
+The first time you type COUNT you get 1; the second time you get 2.
+Why?  When you say
+	(define w (id (id 10)))
+the DEFINE special form handler eval-definition EVALs its second
+argument (id (id 10)).  Given an application, EVAL calls APPLY
+to invoke ID for the outer invocation, but the inner invocation
+is providing an argument to a compound procedure, so it's delayed.
+That's why COUNT is 1 -- the outer call to ID has actually happened,
+but not the inner one.
+
+The value of W is therefore a promise to compute (id 10), since
+ID returns its argument.  When you ask the evaluator to print W,
+that promise is fulfilled, and so COUNT becomes 2.
+
+
+4.29  Memoizing or not
+
+You'd expect a program that uses the same argument repeatedly to
+be most strongly affected.  For example, I wrote
+
+(define (n-copies n stuff)
+  (if (= n 0)
+      '()
+      (cons stuff (n-copies (- n 1) stuff))))
+
+Then if you use n-copies with something requiring a fair amount
+of computation, such as
+
+(n-copies 6 (factorial 7))
+
+you can see a dramatic difference.
+
+About their square/id example, remember to (set! count 0) before
+each experiment.  Then the memoizing version leaves count at 1,
+whereas the non-memoizing version sets count to 2.
+
+
+
+4.35 an-integer-between
+
+(define (an-integer-between low high)
+  (if (> low high)
+      (amb)
+      (amb low (an-integer-between (+ low 1) high))))
+
+
+4.38 adjacent floors
+
+Remove the line (require (not (= (abs (- smith fletcher)) 1)))
+
+
+[The continuation part of the lab was just try-this.]
+
+
+
+HOMEWORK:
+---------
+
+
+4.25  UNLESS in normal vs. applicative order
+
+In ordinary (applicative order) Scheme, this version of FACTORIAL
+will be an infinite loop, because the argument subexpression
+(* n (factorial (- n 1))) is evaluated before UNLESS is called,
+whether or not n is 1.
+
+In normal order Scheme it'll work fine, because the argument
+subexpressions aren't evaluated until they're needed.  What
+will actually happen is that each use of the special form IF
+within UNLESS will force the computation of (= n 1), but
+no multiplications will happen until the evaluator tries to
+print the result.  In effect, (factorial 5) returns the thunk
+        (lambda () (* 5 (* 4 (* 3 (* 2 (* 1 1))))))
+and that gets evaluated just in time to print the answer.
+
+
+4.26  Normal order vs. special forms
+
+For Ben's side of the argument we must implement UNLESS as a
+derived expression:
+
+(define (unless->if exp)
+  (make-if (unless-predicate exp)
+	   (unless-consequent exp)
+	   (unless-alternative exp)))
+
+(define unless-predicate cadr)
+(define unless-alternative caddr)
+(define unless-consequent cadddr)
+
+Notice that we reversed the order of the last two subexpressions in
+the call to make-if.
+
+Then we just add a clause
+        ((unless? exp) (eval (unless->if exp) env))
+to the ordinary metacircular evaluator, or
+        ((unless? exp) (analyze (unless->if exp)))
+to the analyzing evaluator.
+
+For Alyssa's side of the argument, we need a case in which it's useful to
+have a Scheme special form available as an ordinary procedure.  The only
+thing we can do with ordinary procedures but not with special forms is use
+them as arguments to higher-order procedures.  An example using UNLESS will
+be a little strained, so first we'll look at a more common situation
+involving a different special form, namely AND.  We'd like to be able to say
+
+(define (all-true? tf-list)
+  (accumulate and tf-list))
+
+Now, here's the strained example using UNLESS:  Suppose we have a list of
+true-false values and we'd like to add up the number of true ones.  Here's a
+somewhat strange way to do it:
+
+(define zero-list (cons 0 '()))
+(set-cdr! zero-list zero-list)
+
+(define one-list (cons 1 '()))
+(set-cdr! one-list one-list)
+
+(define (howmany-true tf-list)
+  (apply + (map unless tf-list zero-list one-list)))
+
+Zero-list is an infinite list of zeros; one-list is an infinite list
+of ones.  We make use of the fact that MAP's end test is that its
+first argument is empty, so MAP will return a list the same size as
+the argument tf-list.  For example, if tf-list is
+        (#t #t #f #t)
+then map will return
+        (1 1 0 1)
+created, in effect, this way:
+        (list (unless #t 0 1)
+	      (unless #t 0 1)
+	      (unless #f 0 1)
+	      (unless #t 0 1))
+And so + will return 3, the number of trues in the list.
+
+
+4.28  Why force the operator of a combination?
+
+Thunks are made by APPLY, representing arguments to defined procedures.
+So we need a case in which the operator of an expression is the returned
+argument of a defined procedure.  Here's an example:
+
+(((lambda (a b) a) + -) 2 3)
+
+
+4.30  Side effects vs. lazy evaluation
+
+(a) Why is Ben right about for-each?
+
+For-each includes the expression (proc (car items)).  As we
+discussed in ex. 4.28, the lazy evaluator will force the
+operator of that expression, i.e., PROC.  The resulting
+procedure has two invocations of primitives, NEWLINE and
+DISPLAY.  Evaluating those invocations will actually call
+the procedures, and the argument X to DISPLAY will be
+evaluated because DISPLAY is primitive.
+
+(b) What happens in Cy's example?
+
+First of all, in ordinary Scheme both (p1 1) and (p2 1) give
+the result (1 2).
+
+With the book's version of eval-sequence, (p1 1) is still (1 2)
+but (p2 1) is 1, because the SET! will never happen.  The
+subprocedure P has a two-expression sequence as its body, and
+the first expression will never be evaluated.
+
+With Cy's version both (p1 1) and (p2 1) are (1 2), as in
+ordinary Scheme.
+
+(c) Why doesn't Cy's version change part (a)?
+
+The change isn't as dramatic as it may seem.  Don't think that
+the original eval-sequence calls delay-it!  It calls EVAL, and
+most of the time EVAL does return a value, not a thunk.  In
+particular, a procedure call is carried out right away; it's
+only the *arguments* to the procedure that are delayed.  That's
+why Cy had to use a weird example in which a SET! expression
+is used as an argument to a procedure in order to get the wrong
+result.
+
+(d) What's the right thing to do?
+
+The combination of lazy evaluation and mutation in the same language
+is so confusing that programmers would be surprised no matter which
+choice we made.  That's why, in the real world, the languages that
+use normal order evaluation are *functional* languages in which
+there is no mutation or other side effects.  In such a language,
+there are no sequences (if there are no side effects, what would
+be the point?) and the problem doesn't arise.
+
+But if we really wanted to have a normal-order Scheme, we'd
+probably want to change the semantics of the language as little
+as possible -- programs that work in ordinary Scheme should work
+in lazy Scheme too.  So I think Cy is right.
+
+
+4.32  Lazy trees
+
+One possibility is to use doubly-lazy lists as an alternative to
+interleaving, when dealing with a naturally two-dimensional problem.
+For example, to get pairs of integers, we could say
+
+(define (pairs a b)
+  (cons (map (lambda (x) (cons (car a) x)) b)
+	(pairs (cdr a) b)))
+
+Then we could use this data structure with two-dimensional versions
+of the usual higher order procedures.  For example:
+
+(define (2dfilter pred s)
+  (if (null? s)
+      '()
+      (cons (filter pred (car s))
+	    (2dfilter pred (cdr s)))))
+
+
+4.33  Quoted lazy lists
+
+Instead of
+        ((quoted? exp) (text-of-quotation exp))
+we need a more complicated treatment to turn the ordinary lists
+of the underlying Scheme into lazy lists.
+
+        ((quoted? exp) (process-quotation (text-of-quotation exp) env))
+
+(define (process-quotation quoted env)
+  (if (pair? quoted)
+      (lazy-cons (process-quotation (car quoted) env)
+		 (process-quotation (cdr quoted) env)
+		 env)
+      quoted))
+
+(define (lazy-cons x y env)
+  (make-procedure '(m) (list (list 'm x y)) env))
+
+or alternatively
+
+(define (lazy-cons x y env)
+  (apply (lookup-variable-value 'cons env)
+	 (list x y)))
+
+This lazy-cons is the below-the-line equivalent of the above-the-line
+CONS on page 409.
+
+
+
+4.36 all Pythagorean triples
+
+Replacing an-integer-between with an-integer-starting-from won't
+work because the AMB that provides the value for K will never fail,
+and so I and J will always be 1 forever.
+
+To make this work, we note that K must always be larger than I or J,
+so I and J can be restricted to finite ranges if we choose a value
+for K first:
+
+(define (a-pythgorean-triple)
+  (let ((k (an-integer-starting-from 1)))
+    (let ((i (an-integer-between 1 (- k 1))))
+      (let ((j (an-integer-between i (- k 1))))
+	(require (= (+ (* i i) (* j j)) (* k k)))
+	(list i j k)))))
+
+
+4.42 liars
+
+(define (liars)
+  (define (onetrue? x y)
+    (if x (if y #f #t) y))
+  (let ((betty (amb 1 2 3 4 5))
+	(ethel (amb 1 2 3 4 5))
+	(joan (amb 1 2 3 4 5))
+	(kitty (amb 1 2 3 4 5))
+	(mary (amb 1 2 3 4 5)))
+    (require (distinct? (list betty ethel joan kitty mary)))
+    (require (onetrue? (= kitty 2) (= betty 3)))
+    (require (onetrue? (= ethel 1) (= joan 2)))
+    (require (onetrue? (= joan 3) (= ethel 5)))
+    (require (onetrue? (= kitty 2) (= mary 4)))
+    (require (onetrue? (= mary 4) (= betty 1)))
+    (list (list 'betty betty) (list 'ethel ethel) (list 'joan joan)
+	  (list 'kitty kitty) (list 'mary mary))))
+
+As in the multiple dwelling puzzle, this program can be made much more
+efficient by checking for distinct values as we go along instead of
+after all values have been assigned:
+
+(let ((betty (amb 1 2 3 4 5))
+      (ethel (amb 1 2 3 4 5)))
+  (require (distinct? (list betty ethel)))
+  (let ((joan (amb 1 2 3 4 5)))
+    (require (distinct? (list betty ethel joan)))
+    ...
+
+
+4.45 ambiguous sentence
+
+(sentence
+ (simple-noun-phrase (article the) (noun professor))
+ (verb-phrase
+  (verb lectures)
+  (prep-phrase (prep to)
+	       (noun-phrase
+		(simple-noun-phrase (article the) (noun student))
+		(prep-phrase (prep in)
+			     (noun-phrase
+			      (simple-noun-phrase (article the) (noun class))
+			      (prep-phrase (prep with)
+					   (simple-noun-phrase (article the)
+							       (noun cat)))))))))
+
+This version means that a cat is a student in the class, and the professor
+lectures to another student in the class.
+
+(sentence
+ (simple-noun-phrase (article the) (noun professor))
+ (verb-phrase
+  (verb lectures)
+  (prep-phrase (prep to)
+	       (noun-phrase
+		(noun-phrase
+		 (simple-noun-phrase (article the) (noun student))
+		 (prep-phrase (prep in)
+			      (simple-noun-phrase (article the) (noun class))))
+		(prep-phrase (prep with)
+			     (simple-noun-phrase (article the)
+						 (noun cat)))))))
+
+This version means that the professor lectures to a student, and that that
+student is in the class and has a cat, which may or may not be present.
+
+(sentence
+ (simple-noun-phrase (article the) (noun professor))
+ (verb-phrase
+  (verb-phrase
+   (verb lectures)
+   (prep-phrase (prep to)
+		(noun-phrase
+		 (simple-noun-phrase (article the) (noun student))
+		 (prep-phrase (prep in)
+			      (simple-noun-phrase (article the) (noun class))))))
+  (prep-phrase (prep with)
+	       (simple-noun-phrase (article the)
+				   (noun cat)))))
+
+This version means that the professor brings a cat along while lecturing
+to the student who is in the class.
+
+(sentence
+ (simple-noun-phrase (article the) (noun professor))
+ (verb-phrase
+  (verb-phrase
+   (verb-phrase
+    (verb lectures)
+    (prep-phrase (prep to)
+		 (noun-phrase
+		  (simple-noun-phrase (article the) (noun student)))))
+   (prep-phrase (prep in)
+		(simple-noun-phrase (article the) (noun class))))
+  (prep-phrase (prep with)
+	       (simple-noun-phrase (article the)
+				   (noun cat)))))
+
+This version means that the professor does the lecturing in the class,
+bringing a cat along, to some student about whom we know nothing.
+
+(sentence
+ (simple-noun-phrase (article the) (noun professor))
+ (verb-phrase
+  (verb-phrase
+   (verb lectures)
+   (prep-phrase (prep to)
+		(noun-phrase
+		 (simple-noun-phrase (article the) (noun student)))))
+  (prep-phrase (prep in)
+	       (noun-phrase
+		(simple-noun-phrase (article the) (noun class))
+		(prep-phrase (prep with)
+			     (simple-noun-phrase (article the)
+						 (noun cat)))))))
+
+This version means that the professor does the lecturing in a class
+that includes a cat as a member, to a student about whom we know nothing.
+
+
+4.47 left-recursive grammar
+
+As Louis' programs go, this one is pretty successful!  It does generate
+the two correct parsings for "The professor lectures to the student
+with the cat," in the opposite order from what's shown in the book.
+But if you say try-again again, instead of reporting that there are
+no more values, the parser gets in an infinite loop.
+
+What happens is this:  (parse-word verbs) fails, so parse-verb-phrase
+is called recursively.  In that recursive call, (parse-word verbs) fails,
+so parse-verb-phrase is called recursively.  In that recursive call...
+and so on.
+
+Interchanging the order of expressions in the AMB just makes things
+worse; this infinite recursion happens the *first* time, so you don't
+even see the correct parsings before it loops.
+
+
+4.48 grammar extensions
+
+For compound sentences, first rename parse-sentence as parse-simple-sentence:
+
+(define (parse-simple-sentence)
+  (list 'simple-sentence
+	(parse-noun-phrase)
+	(parse-verb-phrase)))
+
+(define (parse-sentence)
+  (define (maybe-extend sentence)
+    (amb sentence
+	 (maybe-extend (list 'sentence
+			     sentence
+			     (parse-word connectors)
+			     (parse-simple-sentence)))))
+  (maybe-extend (parse-simple-sentence)))
+
+(define connectors '(connector and or but))
+
+For adjectives, we have to provide for the possibility of them
+between the article and the noun:
+
+(define (parse-simple-noun-phrase)
+  (cons 'simple-noun-phrase
+	(append (list (parse-word articles))
+		(maybe-some adjectives)
+		(list (parse-word nouns)))))
+
+(define adjectives '(adjective big tiny silly robust enthusiastic))
+
+(define (maybe-some words)
+  (amb (cons (parse-word words)
+	     (maybe-some words))
+       '()))
+
+Note that unlike most of the parsing procedures, maybe-some doesn't fail if
+it can't find what it wants.  If it can't find any adjectives it just
+returns an empty list.  That's why parse-simple-noun-phrase has to use
+append, to avoid seeing
+
+    (simple-noun-phrase (article the) () (noun cat))
+
+Adverbs are similar except that they go into parse-verb-phrase.
+
+
+4.49  generating sentences
+
+(define (parse-word word-list)
+  (define (iter words)
+    (if (null? words)
+	(amb)
+	(amb (car words) (iter (cdr words)))))
+  (list (car word-list) (iter (cdr word-list))))
+
+Here are the first several sentences it creates:
+(sentence (noun-phrase (article the) (noun student)) (verb studies))
+(sentence (noun-phrase (article the) (noun student)) (verb lectures))
+(sentence (noun-phrase (article the) (noun student)) (verb eats))
+(sentence (noun-phrase (article the) (noun student)) (verb sleeps))
+(sentence (noun-phrase (article the) (noun professor)) (verb studies))
+(sentence (noun-phrase (article the) (noun professor)) (verb lectures))
+(sentence (noun-phrase (article the) (noun professor)) (verb eats))
+(sentence (noun-phrase (article the) (noun professor)) (verb sleeps))
+(sentence (noun-phrase (article the) (noun cat)) (verb studies))
+
+
+4.50  random choice
+
+We must write ANALYZE-RAMB, a variant on the ANALYZE-AMB of p. 434:
+
+(define (analyze-ramb exp)
+  (let ((cprocs (map analyze (amb-choices exp))))
+    (lambda (env succeed fail)
+      (define (try-next choices)
+	(if (null? choices)
+	    (fail)
+	    (let ((random-order (rotate choices (random (length choices)))))
+	      ((car random-order) env
+	                          succeed
+	                          (lambda ()
+				    (try-next (cdr random-order)))))))
+      (try-next cprocs))))
+
+(define (rotate seq num)
+  (if (= num 0)
+      seq
+      (rotate (append (cdr seq) (list (car seq)))
+	      (- num 1)))
+
+Then we must add a clause to ANALYZE to check for and handle RAMB,
+similar to the one for AMB.
+
+
+It's not actually so easy to use RAMB to get good sentences.  The problem
+is that we really don't want a more complicated choice to be just as likely
+as a simple choice, or our sentences will be too long.  If we change
+every AMB in the parser to RAMB, I get these results:
+
+[Note: The second one is really long!  I suggest reading this in emacs
+and using control-meta-F to skip over it.]
+
+(sentence
+ (noun-phrase
+  (simple-noun-phrase (article the) (noun professor))
+  (prep-phrase (prep with)
+	       (noun-phrase
+		(simple-noun-phrase (article a) (noun cat))
+		(prep-phrase (prep for)
+			     (simple-noun-phrase (article a) (noun student))))))
+ (verb studies))
+
+(sentence
+ (noun-phrase
+  (simple-noun-phrase (article the) (noun professor))
+  (prep-phrase (prep with)
+	       (noun-phrase
+		(simple-noun-phrase (article a) (noun cat))
+		(prep-phrase (prep for)
+			     (simple-noun-phrase (article a)
+						 (noun student))))))
+ (verb-phrase
+  (verb-phrase
+   (verb studies)
+   (prep-phrase
+    (prep to)
+    (noun-phrase
+     (noun-phrase
+      (noun-phrase
+       (noun-phrase
+	(simple-noun-phrase (article the) (noun professor))
+	(prep-phrase
+	 (prep in)
+	 (noun-phrase
+	  (noun-phrase
+	   (noun-phrase
+	    (simple-noun-phrase (article the) (noun professor))
+	    (prep-phrase
+	     (prep by)
+	     (noun-phrase
+	      (simple-noun-phrase (article a) (noun class))
+	      (prep-phrase
+	       (prep with)
+	       (noun-phrase
+		(noun-phrase
+		 (simple-noun-phrase (article a) (noun student))
+		 (prep-phrase
+		  (prep to)
+		  (simple-noun-phrase (article the) (noun student))))
+		(prep-phrase
+		 (prep for)
+		 (noun-phrase
+		  (noun-phrase
+		   (simple-noun-phrase (article the) (noun class))
+		   (prep-phrase
+		    (prep for)
+		    (noun-phrase
+		     (simple-noun-phrase (article a) (noun student))
+		     (prep-phrase
+		      (prep with)
+		      (simple-noun-phrase (article the) (noun professor))))))
+		  (prep-phrase
+		   (prep for)
+		   (noun-phrase
+		    (noun-phrase
+		     (noun-phrase
+		      (simple-noun-phrase (article the) (noun professor))
+		      (prep-phrase
+		       (prep for)
+		       (simple-noun-phrase (article the) (noun student))))
+		     (prep-phrase
+		      (prep for)
+		      (noun-phrase
+		       (simple-noun-phrase (article the) (noun class))
+		       (prep-phrase
+			(prep to)
+			(simple-noun-phrase (article a) (noun professor))))))
+		    (prep-phrase
+		     (prep to)
+		     (noun-phrase
+		      (simple-noun-phrase (article the) (noun student))
+		      (prep-phrase
+		       (prep to)
+		       (noun-phrase
+			(simple-noun-phrase (article a) (noun professor))
+			(prep-phrase
+			 (prep for)
+			 (simple-noun-phrase (article a)
+					     (noun student))))))))))))))))
+	   (prep-phrase
+	    (prep for)
+	    (simple-noun-phrase (article the) (noun student))))
+	  (prep-phrase
+	   (prep with)
+	   (noun-phrase
+	    (simple-noun-phrase (article a) (noun student))
+	    (prep-phrase
+	     (prep to)
+	     (noun-phrase
+	      (noun-phrase
+	       (noun-phrase
+		(noun-phrase
+		 (simple-noun-phrase (article the) (noun student))
+		 (prep-phrase
+		  (prep in)
+		  (simple-noun-phrase (article the) (noun cat))))
+		(prep-phrase
+		 (prep for)
+		 (noun-phrase
+		  (noun-phrase
+		   (noun-phrase
+		    (simple-noun-phrase (article the) (noun student))
+		    (prep-phrase
+		     (prep with)
+		     (noun-phrase
+		      (simple-noun-phrase (article a) (noun student))
+		      (prep-phrase
+		       (prep for)
+		       (noun-phrase
+			(noun-phrase
+			 (simple-noun-phrase (article a) (noun professor))
+			 (prep-phrase
+			  (prep for)
+			  (noun-phrase
+			   (noun-phrase
+			    (simple-noun-phrase (article a) (noun professor))
+			    (prep-phrase
+			     (prep for)
+			     (simple-noun-phrase (article the)
+						 (noun student))))
+			   (prep-phrase
+			    (prep with)
+			    (simple-noun-phrase (article a)
+						(noun professor))))))
+			(prep-phrase
+			 (prep to)
+			 (noun-phrase
+			  (noun-phrase
+			   (simple-noun-phrase (article the) (noun student))
+			   (prep-phrase
+			    (prep with)
+			    (noun-phrase
+			     (simple-noun-phrase (article a) (noun student))
+			     (prep-phrase
+			      (prep to)
+			      (simple-noun-phrase (article the)
+						  (noun class))))))
+			  (prep-phrase
+			   (prep for)
+			   (simple-noun-phrase (article the)
+					       (noun student))))))))))
+		   (prep-phrase
+		    (prep for)
+		    (noun-phrase
+		     (simple-noun-phrase (article a) (noun professor))
+		     (prep-phrase
+		      (prep with)
+		      (noun-phrase
+		       (simple-noun-phrase (article a) (noun professor))
+		       (prep-phrase
+			(prep for)
+			(simple-noun-phrase (article the) (noun student))))))))
+		  (prep-phrase
+		   (prep for)
+		   (simple-noun-phrase (article the) (noun class))))))
+	       (prep-phrase
+		(prep to)
+		(simple-noun-phrase (article the) (noun class))))
+	      (prep-phrase
+	       (prep in)
+	       (simple-noun-phrase (article a) (noun student))))))))))
+       (prep-phrase
+	(prep to)
+	(noun-phrase
+	 (noun-phrase
+	  (noun-phrase
+	   (simple-noun-phrase (article the) (noun professor))
+	   (prep-phrase
+	    (prep for)
+	    (noun-phrase
+	     (noun-phrase
+	      (simple-noun-phrase (article the) (noun student))
+	      (prep-phrase
+	       (prep in)
+	       (simple-noun-phrase (article a) (noun student))))
+	     (prep-phrase
+	      (prep with)
+	      (noun-phrase
+	       (simple-noun-phrase (article a) (noun class))
+	       (prep-phrase
+		(prep to)
+		(simple-noun-phrase (article a) (noun professor))))))))
+	  (prep-phrase
+	   (prep in)
+	   (noun-phrase
+	    (simple-noun-phrase (article the) (noun professor))
+	    (prep-phrase
+	     (prep for)
+	     (noun-phrase
+	      (noun-phrase
+	       (noun-phrase
+		(noun-phrase
+		 (simple-noun-phrase (article the) (noun professor))
+		 (prep-phrase
+		  (prep for)
+		  (simple-noun-phrase (article the) (noun student))))
+		(prep-phrase
+		 (prep for)
+		 (noun-phrase
+		  (noun-phrase
+		   (noun-phrase
+		    (simple-noun-phrase (article the) (noun professor))
+		    (prep-phrase
+		     (prep to)
+		     (noun-phrase
+		      (simple-noun-phrase (article a) (noun student))
+		      (prep-phrase
+		       (prep for)
+		       (noun-phrase
+			(simple-noun-phrase (article a) (noun student))
+			(prep-phrase
+			 (prep for)
+			 (simple-noun-phrase (article a) (noun student))))))))
+		   (prep-phrase
+		    (prep for)
+		    (noun-phrase
+		     (simple-noun-phrase (article the) (noun student))
+		     (prep-phrase
+		      (prep for)
+		      (simple-noun-phrase (article a) (noun professor))))))
+		  (prep-phrase
+		   (prep to)
+		   (noun-phrase
+		    (simple-noun-phrase (article a) (noun professor))
+		    (prep-phrase
+		     (prep for)
+		     (noun-phrase
+		      (simple-noun-phrase (article the) (noun student))
+		      (prep-phrase
+		       (prep in)
+		       (noun-phrase
+			(simple-noun-phrase (article the) (noun student))
+			(prep-phrase
+			 (prep in)
+			 (noun-phrase
+			  (simple-noun-phrase (article the) (noun professor))
+			  (prep-phrase
+			   (prep to)
+			   (noun-phrase
+			    (simple-noun-phrase (article the) (noun class))
+			    (prep-phrase
+			     (prep in)
+			     (noun-phrase
+			      (simple-noun-phrase (article the)
+						  (noun professor))
+			      (prep-phrase
+			       (prep to)
+			       (simple-noun-phrase
+				(article a)
+				(noun class))))))))))))))))))
+	       (prep-phrase
+		(prep for)
+		(noun-phrase
+		 (simple-noun-phrase (article a) (noun cat))
+		 (prep-phrase
+		  (prep to)
+		  (simple-noun-phrase (article a) (noun student))))))
+	      (prep-phrase
+	       (prep to)
+	       (simple-noun-phrase (article a) (noun class))))))))
+	 (prep-phrase
+	  (prep for)
+	  (simple-noun-phrase (article a) (noun professor))))))
+      (prep-phrase
+       (prep to)
+       (noun-phrase
+	(noun-phrase
+	 (noun-phrase
+	  (noun-phrase
+	   (simple-noun-phrase (article the) (noun class))
+	   (prep-phrase
+	    (prep by)
+	    (noun-phrase
+	     (noun-phrase
+	      (noun-phrase
+	       (noun-phrase
+		(noun-phrase
+		 (simple-noun-phrase (article the) (noun professor))
+		 (prep-phrase
+		  (prep to)
+		  (simple-noun-phrase (article the) (noun student))))
+		(prep-phrase
+		 (prep for)
+		 (simple-noun-phrase (article the) (noun professor))))
+	       (prep-phrase
+		(prep for)
+		(simple-noun-phrase (article the) (noun student))))
+	      (prep-phrase
+	       (prep in)
+	       (simple-noun-phrase (article the) (noun professor))))
+	(prep-phrase
+	 (prep for)
+	 (simple-noun-phrase (article a) (noun student))))))
+	  (prep-phrase
+	   (prep to)
+	   (simple-noun-phrase (article a) (noun student))))
+	 (prep-phrase
+	  (prep in)
+	  (noun-phrase
+	   (simple-noun-phrase (article a) (noun student))
+	   (prep-phrase
+	    (prep with)
+	    (noun-phrase
+	     (noun-phrase
+	      (simple-noun-phrase (article a) (noun class))
+	      (prep-phrase
+	       (prep for)
+	       (simple-noun-phrase (article a) (noun professor))))
+	     (prep-phrase
+	      (prep for)
+	      (noun-phrase
+	       (noun-phrase
+		(noun-phrase
+		 (noun-phrase
+		  (simple-noun-phrase (article the) (noun cat))
+		  (prep-phrase
+		   (prep for)
+		   (simple-noun-phrase (article a) (noun professor))))
+		 (prep-phrase
+		  (prep for)
+		  (noun-phrase
+		   (simple-noun-phrase (article the) (noun class))
+		   (prep-phrase
+		    (prep with)
+		    (noun-phrase
+		     (noun-phrase
+		      (simple-noun-phrase (article the) (noun professor))
+		      (prep-phrase
+		       (prep with)
+		       (simple-noun-phrase (article a) (noun student))))
+		     (prep-phrase
+		      (prep for)
+		      (noun-phrase
+		       (simple-noun-phrase (article the) (noun professor))
+		       (prep-phrase
+			(prep to)
+			(noun-phrase
+			 (simple-noun-phrase (article a) (noun student))
+			 (prep-phrase
+			  (prep to)
+			  (noun-phrase
+			   (noun-phrase
+			    (noun-phrase
+			     (simple-noun-phrase (article the) (noun student))
+			     (prep-phrase
+			      (prep to)
+			      (simple-noun-phrase (article a) (noun student))))
+			    (prep-phrase
+			     (prep to)
+			     (noun-phrase
+			      (simple-noun-phrase (article a) (noun student))
+			      (prep-phrase
+			       (prep to)
+			       (noun-phrase
+				(noun-phrase
+				 (noun-phrase
+				  (noun-phrase
+				   (simple-noun-phrase (article a)
+						       (noun student))
+				   (prep-phrase
+				    (prep for)
+				    (simple-noun-phrase (article the)
+							(noun student))))
+				  (prep-phrase
+				   (prep to)
+				   (simple-noun-phrase (article a)
+						       (noun class))))
+				 (prep-phrase
+				  (prep for)
+				  (noun-phrase
+				   (noun-phrase
+				    (simple-noun-phrase (article the)
+							(noun class))
+				    (prep-phrase
+				     (prep for)
+				     (simple-noun-phrase (article the)
+							 (noun class))))
+				   (prep-phrase
+				    (prep in)
+				    (noun-phrase
+				     (noun-phrase
+				      (simple-noun-phrase (article a)
+							  (noun professor))
+				      (prep-phrase
+				       (prep to)
+				       (noun-phrase
+					(simple-noun-phrase (article a)
+							    (noun student))
+					(prep-phrase
+					 (prep for)
+					 (simple-noun-phrase
+					  (article the)
+					  (noun student))))))
+				     (prep-phrase
+				      (prep by)
+				      (simple-noun-phrase (article a)
+							  (noun class))))))))
+				(prep-phrase
+				 (prep in)
+				 (noun-phrase
+				  (simple-noun-phrase (article the)
+						      (noun professor))
+				  (prep-phrase
+				   (prep to)
+				   (noun-phrase
+				    (simple-noun-phrase (article the)
+							(noun professor))
+				    (prep-phrase
+				     (prep for)
+				     (simple-noun-phrase
+				      (article the)
+				      (noun student))))))))))))
+			   (prep-phrase
+			    (prep with)
+			    (noun-phrase
+			     (noun-phrase
+			      (simple-noun-phrase (article a) (noun student))
+			      (prep-phrase
+			       (prep by)
+			       (simple-noun-phrase (article a)
+						   (noun student))))
+			     (prep-phrase
+			      (prep for)
+			      (noun-phrase
+			       (simple-noun-phrase (article the) (noun class))
+			       (prep-phrase
+				(prep to)
+				(simple-noun-phrase
+				 (article the)
+				 (noun professor))))))))))))))))))
+		(prep-phrase
+		 (prep to)
+		 (noun-phrase
+		  (noun-phrase
+		   (noun-phrase
+		    (noun-phrase
+		     (simple-noun-phrase (article a) (noun student))
+		     (prep-phrase
+		      (prep for)
+		      (simple-noun-phrase (article a) (noun class))))
+		    (prep-phrase
+		     (prep for)
+		     (noun-phrase
+		      (simple-noun-phrase (article the) (noun student))
+		      (prep-phrase
+		       (prep for)
+		       (simple-noun-phrase (article the) (noun student))))))
+		   (prep-phrase
+		    (prep to)
+		    (noun-phrase
+		     (noun-phrase
+		      (noun-phrase
+		       (noun-phrase
+			(simple-noun-phrase (article the) (noun student))
+			(prep-phrase
+			 (prep for)
+			 (noun-phrase
+			  (noun-phrase
+			   (noun-phrase
+			    (simple-noun-phrase (article a) (noun student))
+			    (prep-phrase
+			     (prep for)
+			     (simple-noun-phrase (article the)
+						 (noun student))))
+			   (prep-phrase
+			    (prep to)
+			    (noun-phrase
+			     (noun-phrase
+			      (simple-noun-phrase (article the)
+						  (noun professor))
+			      (prep-phrase
+			       (prep for)
+			       (noun-phrase
+				(simple-noun-phrase (article a) (noun student))
+				(prep-phrase
+				 (prep by)
+				 (noun-phrase
+				  (simple-noun-phrase (article a)
+						      (noun student))
+				  (prep-phrase
+				   (prep in)
+				   (noun-phrase
+				    (noun-phrase
+				     (simple-noun-phrase (article a)
+							 (noun student))
+				     (prep-phrase
+				      (prep to)
+				      (noun-phrase
+				       (simple-noun-phrase (article the)
+							   (noun student))
+				       (prep-phrase
+					(prep for)
+					(simple-noun-phrase
+					 (article a)
+					 (noun professor))))))
+				    (prep-phrase
+				     (prep to)
+				     (simple-noun-phrase (article a)
+							 (noun cat))))))))))
+			     (prep-phrase
+			      (prep for)
+			      (noun-phrase
+			       (simple-noun-phrase (article a)
+						   (noun professor))
+			       (prep-phrase
+				(prep for)
+				(simple-noun-phrase (article the)
+						    (noun student))))))))
+			  (prep-phrase
+			   (prep for)
+			   (noun-phrase
+			    (noun-phrase
+			     (simple-noun-phrase (article a) (noun cat))
+			     (prep-phrase
+			      (prep for)
+			      (simple-noun-phrase (article the)
+						  (noun professor))))
+			    (prep-phrase
+			     (prep by)
+			     (simple-noun-phrase (article a)
+						 (noun professor))))))))
+		       (prep-phrase
+			(prep for)
+			(noun-phrase
+			 (simple-noun-phrase (article the) (noun cat))
+			 (prep-phrase
+			  (prep for)
+			  (noun-phrase
+			   (simple-noun-phrase (article a) (noun professor))
+			   (prep-phrase
+			    (prep with)
+			    (simple-noun-phrase (article the) (noun cat))))))))
+		      (prep-phrase
+		       (prep in)
+		       (noun-phrase
+			(simple-noun-phrase (article the) (noun professor))
+			(prep-phrase
+			 (prep for)
+			 (simple-noun-phrase (article a) (noun cat))))))
+		     (prep-phrase
+		      (prep for)
+		      (simple-noun-phrase (article the) (noun student))))))
+		  (prep-phrase
+		   (prep in)
+		   (noun-phrase
+		    (simple-noun-phrase (article the) (noun class))
+		    (prep-phrase
+		     (prep for)
+		     (simple-noun-phrase (article the) (noun professor))))))))
+	       (prep-phrase
+		(prep to)
+		(noun-phrase
+		 (simple-noun-phrase (article a) (noun student))
+		 (prep-phrase
+		  (prep for)
+		  (simple-noun-phrase (article the) (noun student))))))))))))
+	(prep-phrase
+	 (prep with)
+	 (simple-noun-phrase (article a) (noun student))))))
+     (prep-phrase
+      (prep for)
+      (noun-phrase
+       (simple-noun-phrase (article the) (noun professor))
+       (prep-phrase
+	(prep in)
+	(noun-phrase
+	 (simple-noun-phrase (article the) (noun class))
+	 (prep-phrase
+	  (prep to)
+	  (simple-noun-phrase (article a) (noun student))))))))))
+  (prep-phrase
+   (prep to)
+   (noun-phrase
+    (noun-phrase
+     (simple-noun-phrase (article the) (noun cat))
+     (prep-phrase
+      (prep for)
+      (noun-phrase
+       (noun-phrase
+	(simple-noun-phrase (article the) (noun student))
+	(prep-phrase
+	 (prep for)
+	 (simple-noun-phrase (article the) (noun professor))))
+       (prep-phrase
+	(prep for)
+	(simple-noun-phrase (article a) (noun student))))))
+    (prep-phrase
+     (prep in)
+     (simple-noun-phrase (article a) (noun student)))))))
+
+We can improve on this by making the addition of a prepositional
+phrase less likely.  For example, we could rewrite PARSE-NOUN-PHRASE
+and PARSE-VERB-PHRASE this way:
+
+(define (parse-noun-phrase)
+  (define (maybe-extend noun-phrase)
+    (ramb noun-phrase
+	  noun-phrase
+	  noun-phrase
+	  noun-phrase
+	  noun-phrase
+         (maybe-extend (list 'noun-phrase
+                             noun-phrase
+                             (parse-prepositional-phrase)))))
+  (maybe-extend (parse-simple-noun-phrase)))
+
+(define (parse-verb-phrase)
+  (define (maybe-extend verb-phrase)
+    (ramb verb-phrase
+	  verb-phrase
+	  verb-phrase
+	  verb-phrase
+	  verb-phrase
+         (maybe-extend (list 'verb-phrase
+                             verb-phrase
+                             (parse-prepositional-phrase)))))
+  (maybe-extend (parse-word verbs)))
+
+With these changes, here are the first few sentences I get:
+
+(sentence (simple-noun-phrase (article a) (noun professor)) (verb sleeps))
+
+(sentence (simple-noun-phrase (article a) (noun professor)) (verb sleeps))
+
+(sentence (simple-noun-phrase (article a) (noun professor))
+	  (verb-phrase
+	   (verb sleeps)
+	   (prep-phrase (prep for)
+			(simple-noun-phrase (article a) (noun student)))))
+
+(sentence
+ (simple-noun-phrase (article a) (noun professor))
+ (verb-phrase (verb sleeps)
+	      (prep-phrase (prep for)
+			   (simple-noun-phrase (article a) (noun student)))))
+
+This is still not quite what we want, but with more fine tuning we can
+probably get to a reasonable sentence generator.
+
+
+4.52  if-fail
+
+To add a new special form we add a clause to ANALYZE, which should call
+this new procedure:
+
+(define (analyze-if-fail exp)
+  (let ((trial (analyze (if-fail-trial exp)))
+	(failure (analyze (if-fail-failure exp))))
+    (lambda (env succeed fail)
+      (trial env
+	     succeed
+	     (lambda () (failure env succeed fail))))))
+
+(define if-fail-trial cadr)
+(define if-fail-failure caddr)
+
+Here's a version to go with vambeval, the ambeval without analysis:
+
+(define (eval-if-fail exp env succeed fail)
+  (vambeval (if-fail-trial exp)
+	    env
+	    succeed
+	    (lambda () (vambeval (if-fail-failure exp)
+				 env
+				 succeed
+				 fail))))
+
+
+Extra for Experts
+=================
+
+4.31
+
+Despite what the exercise says, there's no need to change the procedures that
+determine the DEFINE syntax, because it doesn't check that the formal
+parameters are symbols.  Even MAKE-PROCEDURE doesn't check.
+
+The hard part is in procedure invocation.  The original metacircular evaluator
+has this in the big COND in EVAL:
+
+	((application? exp)
+	 (mc-apply (MC-EVAL (operator exp) env)
+		   (LIST-OF-VALUES (operands exp) env)))
+
+The lazy evaluator in the book changes that to
+
+        ((application? exp)
+         (mc-apply (ACTUAL-VALUE (operator exp) env)
+		   (operands exp)	; no LIST-OF-VALUES
+		   ENV))		; added argument
+
+(For this exercise, it's easier to work with the book's version than with
+the slightly different alternative shown in the lecture notes.)
+
+So now we're giving APPLY expressions rather than values, and we're also
+giving APPLY an environment in which to evaluate or thunkify the values.
+We don't have to make any change to the book's EVAL; the hard part is in
+APPLY, in which we have to decide whether to evaluate or thunkify.
+
+Here's the book's lazy APPLY:
+
+(define (mc-apply procedure arguments env)
+  (cond ((primitive-procedure? procedure)
+         (apply-primitive-procedure
+          procedure
+          (LIST-OF-ARG-VALUES ARGUMENTS ENV)))	; ***
+        ((compound-procedure? procedure)
+         (eval-sequence
+          (procedure-body procedure)
+          (extend-environment
+           (procedure-parameters procedure)
+           (LIST-OF-DELAYED-ARGS ARGUMENTS ENV) ; ***
+           (procedure-environment procedure))))
+        (else
+         (error
+          "Unknown procedure type -- APPLY" procedure))))
+
+The two commented lines handle evaluation, for primitive procedures, and
+thunking, for non-primitive procedures.  It's the latter we have to change;
+the args may be evaluated, thunked with memoization, or thunked without
+memoization.  To make this decision, we have to look at the formal parameters
+of the procedure we're calling.  So the second commented line above will
+change to
+
+           (PROCESS-ARGS arguments (PROCEDURE-PARAMETERS PROCEDURE) env)
+
+Two things have changed; we're calling a not-yet-written procedure
+PROCESS-ARGS instead of LIST-OF-DELAYED-ARGS, and we're giving that procedure
+the formal parameters as well as the actual argument expressions.
+
+One more thing has to change in APPLY:  Since the list returned by
+PROCEDURE-PARAMETERS is no longer a list of symbols, but can now include
+sublists such as (B LAZY), we have to extract the real formal parameter
+names from it.  So the final version of APPLY is this:
+
+(define (mc-apply procedure arguments env)
+  (cond ((primitive-procedure? procedure)
+         (apply-primitive-procedure
+          procedure
+          (list-of-arg-values arguments env)))
+        ((compound-procedure? procedure)
+         (eval-sequence
+          (procedure-body procedure)
+          (extend-environment
+           (EXTRACT-NAMES (procedure-parameters procedure))		 ; ***
+           (PROCESS-ARGS arguments (PROCEDURE-PARAMETERS PROCEDURE) env) ; ***
+           (procedure-environment procedure))))
+        (else
+         (error
+          "Unknown procedure type -- APPLY" procedure))))
+
+Now comes the actual work, in EXTRACT-NAMES and in PROCESS-ARGS.
+
+EXTRACT-NAMES takes as its argument a list such as
+	(A (B LAZY) C (D LAZY-MEMO))
+and returns a list with just the variable names:
+	(A B C D)
+
+(define (extract-names formals)
+  (cond ((null? formals) '())
+	((pair? (car formals))	; CAR is (VAR TYPE), so keep CAAR in result
+	 (cons (caar formals) (extract-names (cdr formals))))
+	(else (cons (car formals) (extract-names (cdr formals))))))
+
+PROCESS-ARGS takes an argument list, let's say
+	((+ 2 3) (- 4 5) (* 6 7) (/ 8 9))
+and a parameter list, such as
+	(A (B LAZY) C (D LAZY-MEMO))
+and matches them up.  It pays no attention to the variable names in the
+parameter list; it's only looking for LAZY or LAZY-MEMO type tags.  It returns
+a list of argument values-and-thunks:
+	(5 (THUNK-NOMEMO (- 4 5) <env>) 42 (THUNK-MEMO (/ 8 9) <env>))
+where <env> represents an actual environment, not the word ENV.  The argument
+expressions (+ 2 3) and (* 6 7) correspond to non-lazy parameters A and C,
+so they've been evaluated; the other arguments have been turned into thunks
+by combining them with a type-tag (THUNK-NOMEMO or THUNK-MEMO as appropriate)
+and an environment.  Instead of the book's DELAY-IT procedure we have to use
+two different procedures, DELAY-NOMEMO and DELAY-MEMO, to construct the thunks.
+
+(define (process-args args formals env)
+  (cond ((null? args) '())
+	((null? formals)
+	 (error "Too many arguments"))
+	((pair? (car formals))
+	 (cond ((eq? (cadar formals) 'lazy)
+		(cons (delay-nomemo (car args) env)
+		      (process-args (cdr args) (cdr formals) env)))
+	       ((eq? (cadar formals) 'lazy-memo)
+		(cons (delay-memo (car args) env)
+		      (process-args (cdr args) (cdr formals) env)))
+	       (else (error "Unrecognized parameter type" (cadar formals)))))
+	(else (cons (EVAL (car args))
+		    (process-args (cdr args) (cdr formals) env)))))
+
+Note the call to EVAL in capital letters two lines up.  Should that be EVAL
+or ACTUAL-VALUE?  The issue is what behavior we want when a procedure with a
+non-lazy parameter is called with a thunk (created by calling some other
+non-primitive procedure) as the argument:
+
+	(define (foo x)
+	  x)
+
+	(define (baz (lazy x))
+	  x)
+
+	(define p (foo (baz (/ 1 0))))
+
+What should happen?  FOO's argument is non-lazy, so we evaluate the argument
+expression (BAZ (/ 1 0)).  BAZ's argument is lazy, so we make a thunk that
+promises to compute (/ 1 0) later, and that becomes the argument to FOO.
+If we use EVAL up there, as written, then FOO will get a thunk as its
+argument, and will return the thunk, which will become the value of P.  If
+we make it ACTUAL-VALUE, then the thunk will be forced, and we'll get an
+error dividing by zero, and P won't get a value.
+
+I think the procedure FOO probably doesn't care whether or not its argument is
+a thunk, and therefore the argument shouldn't be forced.  If the return value
+from FOO is used in some context where a real value is needed (for example,
+if we said
+	(foo (baz (/ 1 0)))
+at the Scheme prompt instead of inside a DEFINE, then the value will be
+forced.)  But you'd like to be able to write something like
+
+	(define (cadr seq) (car (cdr seq)))
+
+and if this is applied to a list of thunks, the result should be a
+thunk, not the value promised by the thunk.
+
+Perhaps there should be a third parameter type tag, so you could say
+
+	(define (f a (b lazy) c (d lazy-memo) (e forced))
+	  ...)
+
+allowing the user to choose between EVAL and ACTUAL-VALUE here.  This would
+add a COND clause in APPLY:
+
+	       ((eq? (cadar formals) 'forced)
+		(cons (actual-value (car args) env)
+		      (process-args (cdr args) (cdr formals) env)))
+
+
+Now we have to do a little data abstraction:
+
+(define (delay-nomemo exp env)
+  (list 'THUNK-NOMEMO exp env))
+
+(define (delay-memo exp env)
+  (list 'THUNK-MEMO exp env))
+
+Note that the thunk constructors don't have to do any real memoization or
+non-memoization work; they just construct thunks that "know" which kind they
+are.  It's when the thunks are forced that we have to take the difference
+into account:
+
+(define (force-it obj)
+  (cond ((THUNK-MEMO? obj)		; two kinds of thunk testers
+         (let ((result (actual-value
+                        (thunk-exp obj)
+                        (thunk-env obj))))
+           (set-car! obj 'evaluated-thunk)
+           (set-car! (cdr obj) result)  ; replace exp with its value
+           (set-cdr! (cdr obj) '())     ; for memoized thunk
+           result))
+	((THUNK-NOMEMO? OBJ)	; nomemo thunk is EVALed each time it's forced
+	 (ACTUAL-VALUE (THUNK-EXP OBJ) (THUNK-ENV OBJ)))
+        ((evaluated-thunk? obj)
+         (thunk-value obj))
+        (else obj)))
+
+(define (thunk-memo? exp)
+  (tagged-list? exp 'thunk-memo))
+
+(define (thunk-nomemo? exp)
+  (tagged-list exp 'thunk-nomemo))
+
+Note that for both kinds of thunks we call ACTUAL-VALUE to cash in the promise;
+the difference is that for a memoized thunk we remember the result, whereas for
+a non-memoized thunk we don't.
+
+
+
+Handle-infix:  See proj4b solutions.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week15 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week15
new file mode 100644
index 0000000..4d67123
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week15
@@ -0,0 +1,325 @@
+CS 61A			Week 15 Solutions
+
+LAB
+===
+
+4.55
+
+(supervisor ?x (Bitdiddle Ben))
+
+(job ?x (accounting . ?y))
+
+(address ?x (Slumerville . ?y))
+
+The dots are needed because (accounting ?y), for example, would match
+only entries in which there was a single element after the word "accounting."
+That is, (accounting ?y) would match (accounting scrivener) but not
+(accounting chief accountant).
+
+
+4.62
+The base case here involves a 1-element list, not the empty list.
+
+(rule (last-pair (?x) (?x)))
+
+(rule (last-pair (?y . ?z) ?x)
+      (last-pair ?z ?x))
+
+
+HOMEWORK
+========
+
+4.56
+
+(and (supervisor ?x (Bitdiddle Ben))
+     (address ?x ?y))
+
+(and (salary ?x ?s1)
+     (salary (Bitdiddle Ben) ?s2)
+     (lisp-value < ?s1 ?s2))
+
+(and (supervisor ?who ?boss)
+     (not (job ?boss (computer . ?y)))
+     (job ?boss ?z))
+
+The key point here is that we use the same variable name twice if we want
+it to match the same item both times.
+
+
+4.57
+
+(rule (same ?x ?x))		;; Don't use (lisp-value eq? ....)
+
+(rule (replace ?p1 ?p2)
+      (and (or (and (job ?p1 ?x) (job ?p2 ?x))
+	       (and (job ?p1 ?x) (job ?p2 ?y) (can-do-job ?x ?y)))
+      	   (not (same ?p1 ?p2))))
+
+(replace ?x (Fect Cy D))
+
+(and (replace ?x ?y)
+     (salary ?x ?s1)
+     (salary ?y ?s2)
+     (lisp-value < ?s1 ?s2))
+
+
+4.58
+Note the definition of a sub-rule to make things more manageable.
+
+(rule (sup-in-div ?p ?x)
+      (and (supervisor ?p ?boss)
+	   (job ?boss (?x . ?z))))
+
+(rule (big-shot ?person ?division)
+      (and (job ?person (?division . ?x))
+	   (not (sup-in-div ?person ?division))))
+
+
+4.65
+This problem requires understanding the basic idea of how the
+query system works (read Section 4.4.3).
+To respond to a query, the query system generates
+a stream of frames which are then used to "instantiate" the query.
+In this case, the stream will include frames containing all bindings of
+?middle-manager, ?person and ?x satisfying the body of the rule,
+and also with ?who bound to ?person.
+Since Warbucks supervises Bitdiddle and Scrooge, each of who manages
+other people, there will be more than one of these frames.
+Hence Warbucks appears more than once in the output.
+
+
+Extra for Experts
+=================
+
+Here's the REVERSE from lecture:
+
+    (assert! (rule (reverse (?a . ?x) ?y)
+		   (and (reverse ?x ?z)
+			(append ?z (?a) ?y) )))
+
+    (assert! (reverse () ()))
+
+Why won't this run backwards?  It's important to understand this, in order to
+solve the problem.  Unfortunately there are a lot of details, so here's a
+preview of the punch line:  It'll turn out that the query system tries to use
+the recursive rule over and over, in effect constructing longer and longer
+lists whose elements aren't known, and never realizing that they can't
+possibly be the reverse of the given list.
+
+Let's try to work out what happens if we give the simplest possible
+backwards query:
+
+    (reverse ?b (3))
+
+The answer we want is (reverse (3) (3)).  QEVAL starts with the stream of
+frames containing one empty frame:
+
+    {[]}
+
+it matches the query against everything in the database.  Only two are
+relevant -- the ones about REVERSE.  Starting with the base case assertion
+
+    (reverse () ())
+
+we see that this doesn't match the query, because (3) in the third element of
+the query is not () and neither of them is a variable.  That leaves the
+recursive rule.  We unify the query against the conclusion of the rule,
+after renaming the variables in the rule:
+
+    (reverse ?b (3))
+    (reverse (?1a . ?1x) ?1y)
+
+This succeeds, and the empty frame is extended with new bindings:
+
+    [?b = (?1a . ?1x), ?1y = (3)]
+
+Now we use this frame as the starting point for a new query, the rule's body:
+
+    (and (reverse ?1x ?1z) (append ?1z (?1a) ?1y))
+
+Now it gets a little complicated.  QEVAL of an AND query starts by
+evaluating the first part in the current frame.  We match
+
+    (reverse ?1x ?1z)
+
+against all rules and assertions.  Again, let's start with the base case,
+so we are matching
+
+    (reverse ?1x ?1z)
+    (reverse () ())
+
+This extends the frame with new bindings for ?1X and ?1Z:
+
+    [?b = (?1a . ?1x), ?1y = (3), ?1x = (), ?1z = ()]
+
+With these bindings we have to evaluate the second part of the AND:
+
+    (append ?1z (?1a) ?1y)
+
+Substituting values from the frame, this is equivalent to
+
+    (append () (?1a) (3))
+
+which will work fine (leaving out the details about APPEND), giving a
+final extended frame of
+
+    [?b = (?1a . ?1x), ?1y = (3), ?1x = (), ?1z = (), ?1a = 3]
+
+So ?b = (?1a . ?1x) = (3 . ()) = (3).
+
+This is a fine solution, and if the query system looks at assertions
+before rules, it may even be printed before the evaluator gets into an
+infinite loop.  The problem is with the recursive REVERSE rule.
+
+Remember that we are trying to evaluate the query
+
+    (and (reverse ?1x ?1z) (append ?1z (?1a) ?1y))
+
+and that the first step is to evaluate
+
+    (reverse ?1x ?1z)
+
+in the frame
+
+    [?b = (?1a . ?1x), ?1y = (3)]
+
+We've matched the query against the base case for REVERSE, and now we are
+trying the recursive rule.  Here are the query and the conclusion (with
+variables again renamed) of the rule:
+
+    (reverse ?1x ?1z)
+    (reverse (?2a . ?2x) ?2y)
+
+This succeeds; the resulting frame is
+
+    [?b = (?1a . ?1x), ?1y = (3), ?1x = (?2a . ?2x), ?1z = ?2y]
+
+In this frame we must evaluate the body of the rule, namely
+
+    (and (reverse ?2x ?2z) (append ?2z (?2a) ?2y))
+
+Match the REVERSE part against the conclusion of the REVERSE rule
+with variables renamed:
+
+    (reverse ?2x ?2z)
+    (reverse (?3a . ?3x) ?3y)
+
+This extends the frame some more:
+
+    [?b = (?1a . ?1x), ?1y = (3), ?1x = (?2a . ?2x), ?1z = ?2y,
+     ?2x = (?3a . ?3x), ?2z = ?3y]
+
+We human beings can see that this is all nonsense.  Combining some of the
+bindings we see that
+
+    ?b = (?1a . (?2a . (?3a . ?3x)))
+
+which is a list of at least three elements.  So if we ever got to the
+APPEND part of the rule, it wouldn't match -- the result of reversing (3)
+can't be more than one element long!  But QEVAL will never get around to
+the second half of the AND query, because it keeps finding longer and
+longer lists to try to reverse.
+
+Why isn't this a problem when running the REVERSE rules forward?  Let's
+take the query
+
+    (reverse (35) ?d)
+
+This doesn't match the base case, so we try the recursive case renamed:
+
+    (reverse (35) ?d)
+    (reverse (?4a . ?4x) ?4y)
+
+We can see a difference right away:  It's the known list, (35), that we
+divide into its car and its cdr, giving determined values for some of
+the variables in the new frame:
+
+    [?4a = 35, ?4x = (), ?d = ?4y]
+
+We must now evaluate the body of the rule:
+
+    (and (reverse ?4x ?4z) (append ?4z (?4a) ?4y))
+
+I'll skip the part about matching the new REVERSE query against the base
+case, which again gives a correct result.  Instead let's see what happens
+when we try to use the recursive rule again:
+
+    (reverse ?4x ?4z)
+    (reverse (?5a . ?5x) ?5y)
+
+This unification fails!  We want ?4x = (?5a . ?5x), but the frame tells us
+that ?4x is empty.
+
+This is why forward reverse doesn't get into an infinite loop: QEVAL notices
+that the recursive rule can't apply when we get past the number of elements
+in the original list.
+
+----------
+
+That's the end of the analysis of what's wrong.  The recursive rule is
+supposed to say "the reverse of my known length-N list (?a . ?x) can be
+computed if we first take the reverse of a list of length N-1, namely ?x."
+But when run backwards it instead says "the reverse of my known list ?y
+consists of a (first) element ?1a followed by a list consisting of an
+element ?2a followed by a list consisting of an element ?3a followed ..."
+
+We don't have this problem running the rules forwards because the rule
+takes our known list and divides it into car and cdr, so we find out as
+soon as we run out of list elements.  The algorithm doesn't require us
+to divide the second list, ?y, into pieces, and the cdr of ?y isn't useful
+in doing the recursion -- we need all of ?y.  So we'll add an extra
+variable whose only purpose is to count down the length of ?y:
+
+(assert! (rule (reverse ?x ?y)
+	       (reverse-help ?x ?y ?y)))
+
+(assert! (rule (reverse-help (?a . ?x) ?y (?ignore . ?counter))
+	       (and (reverse-help ?x ?z ?counter)
+		    (append ?z (?a) ?y))))
+
+(assert! (rule (reverse-help () () ())))
+
+On each recursive invocation of the REVERSE-HELP rule, ?COUNTER gets
+smaller.  When it's empty, no more recursions are possible, because an
+empty list can't match (?ignore . ?counter).
+
+For forwards queries, the whole counter mechanism is unhelpful, but it
+doesn't hurt.  It's the (?a . ?x) that prevents infinite recursion for
+forwards queries; the ?counter situation is just like the ?x situation
+we saw before for backwards queries -- in effect we get
+
+    ?1counter = (?2ignore . (?3ignore . (?4ignore . ?4counter)))
+
+after three invocations of the rule.  That could keep going on forever,
+but the values of ?1x, ?2x, etc., are *known* and therefore eventually
+one of them is empty and won't match the recursive rule.
+
+----------
+
+This solution, like the partial solution in the lecture notes, is based on
+the recursive-process Scheme procedure
+
+    (define (reverse seq)
+      (if (null? seq)
+	  '()
+	  (append (reverse (cdr seq)) (list (car seq)))))
+
+What if we start instead with the iterative-process version:
+
+    (define (reverse seq)
+      (define (iter seq result)
+	(if (null? seq)
+	    result
+	    (iter (cdr seq) (cons (car seq) result)))))
+
+We still have to add an extra counter variable to make this work as a
+both-ways logic program, in addition to the Scheme program's extra
+result variable:
+
+    (assert! (rule (reverse ?x ?y)
+		   (reverse-iter ?x () ?y ?y)))
+
+    (assert! (rule (reverse-iter (?a . ?x) ?result ?y (?b . ?counter))
+		   (reverse-iter ?x (?a . ?result) ?y ?counter)))
+
+    (assert! (rule (reverse-iter () ?y ?y ())))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week2 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week2
new file mode 100644
index 0000000..6cd2999
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week2
@@ -0,0 +1,509 @@
+CS 61A		Week 2		Lab and Homework Solutions
+
+FIRST LAB:
+
+Problem 1:
+
+f	Any definition at all will do:
+		(define f 'hello)		f is  hello
+		(define f (+ 2 3))		f is  5
+		(define (f x) (+ x 7))		f is  #<procedure f>
+
+(f)	This expression says to invoke f as a procedure with no
+	arguments.  For that to work, we must DEFINE f as a procedure
+	with no arguments:
+		(define (f) 'hello)		(f) is  hello
+		(define (f) (+ 2 3))		(f) is  5
+	Each of these is shorthand for an explicit use of lambda:
+		(define f (lambda () 'hello))
+		(define f (lambda () (+ 2 3))
+
+(f 3)	This expression says to invoke f as a procedure with an
+	argument, so we have to define it that way:
+		(define (f x) (+ x 5))		(f 3) is  8
+		(define (f x) 'hello)		(f 3) is  hello
+		(define (f x) (word x x))	(f 3) is  33
+	Again, these definitions are shorthand for lambda expressions:
+		(define f (lambda (x) (+ x 5)))
+		(define f (lambda (x) 'hello))
+		(define f (lambda (x) (word x x)))
+
+((f))	This expression says, first of all, to compute the subexpression
+	(f), which invokes f as a procedure with no arguments.  Then, the
+	result of that invocation must be another procedure, which is
+	also invoked with no arguments.  So, we have to define f as a
+	procedure that returns a procedure:
+		(define (f) (lambda () 'hello))	     ((f)) is  hello
+		(define (f) (lambda () (+ 2 3)))     ((f)) is  5
+	Or without the shorthand,
+		(define f (lambda () (lambda () 'hello)))
+		(define f (lambda () (lambda () (+ 2 3))))
+	Alternatively, we can let the procedure f return some procedure
+	we already know about, supposing that that procedure can be
+	invoked with no arguments:
+		(define (f) +)		             ((f)) is  0
+		(define f (lambda () +))
+	As a super tricky solution, for hotshots only, try this:
+		(define (f) f)			     ((f)) is  #<procedure f>
+						     (((f))) is.... ?
+
+(((f)) 3)  Sheesh!  F has to be a function.  When we invoke it with no
+	   arguments, we should get another function (let's call it G).
+	   When we invoke G with no arguments, we get a third function
+	   (call it H).  We have to be able to call H with the argument 3
+	   and get some value.  We could spell this out as a sequence of
+	   definitions like this:
+		(define (h x) (* x x))
+		(define (g) h)
+		(define (f) g)			(((f)) 3) is  9
+	   Alternatively, we can do this all in one:
+		(define (f) (lambda () (lambda (x) (* x x))))
+	   or without the abbreviation:
+		(define f (lambda () (lambda () (lambda (x) (* x x)))))
+
+By the way, you haven't yet learned the notation for functions that accept
+any number of arguments, but if you did know it, you could use
+		(define (f . args) f)
+as the answer to *all* of these problems!
+
+
+Problem 2:
+
+This is a "do something to every word of a sentence" problem, like
+PL-SENT or SQUARES, but with two extra arguments.  But it
+also has a decision to make for each word (is this word equal to the
+one we're replacing), like the filtering procedures EVENS, ENDS-E, etc.,
+so it takes the form of a three-branch COND:
+
+(define (substitute sent old new)
+  (cond ((empty? sent) '())
+	((equal? (first sent) old)
+	 (se new (substitute (butfirst sent) old new)))
+	(else (se (first sent) (substitute (butfirst sent) old new)))))
+
+
+Problem 3:
+
+Of course you could just try this on the computer, but you should understand
+the results.
+
+(t 1+) means that we should substitute the actual argument, which is the
+function named 1+, for t's formal parameter, which is f, in t's body,
+which is (lambda (x) (f (f (f x)))).  The result of the substitution is
+
+		(lambda (x) (1+ (1+ (1+ x))))
+
+Evaluating this produces a function that adds three to its argument, so
+((t 1+) 0) is 3.
+
+(t (t 1+)) means to substitute (t 1+) for f in t's body.  If we actually
+substituted the lambda expression above for f three times, we'd get a
+horrible mess:
+
+		(lambda (x) ((lambda (x) (1+ (1+ (1+ x))))
+			     ((lambda (x) (1+ (1+ (1+ x))))
+			      ((lambda (x) (1+ (1+ (1+ x))))
+			       0))))
+
+but what's important is the function, not the expression that produced
+the function, so we can just mentally give (t 1+) the name 3+ and then
+the result we want is
+
+		(lambda (x) (3+ (3+ (3+ x))))
+
+and if we apply that function to 0 we'll get 9.
+
+For the final piece of the problem, we have to begin by computing (t t), which
+is what we get when we substitute t for f in t's body:
+
+		(lambda (x) (t (t (t x))))
+
+Don't be confused!  Even though this lambda expression has x as its formal
+parameter, not f, the argument has to be a function, because we're going to
+end up invoking t on that argument.  In other words, (t t) returns as its
+value a function that takes a function as argument.
+
+Now, ((t t) 1+) means to apply the function just above to the argument 1+
+which, in turn, means to substitute 1+ for x in the body:
+
+		(t (t (t 1+)))
+
+Well, this isn't so hard; we've really already done it.  (t 1+) turned
+out to be 3+, and (t (t 1+)) turned out to be 9+.  By the same reasoning,
+this will turn out to be 27+ (that is, 9+ three times), so when we apply
+this to 0 we get 27.
+
+Problem 4:
+
+This is actually the same as problem 2!  The function S is identical to
+1+, so the answers have to be the same.  It's more work if you actually
+substitute values into the body of s, but you can avoid all that if you
+realize that these problems are identical in meaning.
+
+Problem 5:
+
+If (g) is a legal expression, then g takes ZERO arguments.
+If ((g) 1) has the value 3, then (g) has a PROCEDURE as its value.
+(If we'd asked for more than one word, you could say "a procedure
+of one numeric argument that returns a number" or something.)
+
+
+Problem 6:
+
+(define (make-tester who)
+  (lambda (x) (equal? x who)))
+
+
+
+HOMEWORK:
+
+Exercise 1.31(a):  
+
+;; you only needed to hand in one version
+;; but by now you're ready to understand both:
+
+;; recursive version:
+
+(define (product term a next b)
+  (if (> a b)
+      1       ;; Note multiplicative identity is 1 not 0
+      (* (term a)
+	 (product term (next a) next b))))
+
+;; iterative version:
+
+(define (product term a next b)
+  (define (iter a result)
+    (if (> a b)
+	result
+	(iter (next a) (* result (term a)))))
+  (iter a 1))
+
+;; factorial
+
+(define (! n) (product (lambda (x) x) 1 1+ n))
+
+;; pi
+;; You have to run a few hundred terms to get a good approximation.
+;; There are several possible ways to arrange the terms.  Here is one
+;; way, in which the first term is 2/3, the second is 4/3, etc.
+
+(define (pi terms) (* 4 (product
+			 (lambda (x) (/ (* 2 (1+ (floor (/ x 2))))
+					(1+ (* 2 (ceiling (/ x 2))))))
+			 1 1+ terms)))
+
+;; Here is another way, in which the first term is (2/3)*(4/3), the
+;; second is (4/5)*(6/5), etc.  Notice that the value of a starts at
+;; 3 and is increased by 2 for each new term.
+
+(define (pi terms) (* 4 (product
+			 (lambda (x) (/ (* (-1+ x) (1+ x))
+					(* x x) ))
+			 3
+			 (lambda (x) (+ x 2))
+			 terms )))
+
+;; If you try to make it 2 * (4/3) * (4/3) * (6/5) * (6/5) * ... you'll
+;; get the wrong answer, because you'll have one more number in the
+;; numerator than in the denominator.
+
+
+
+Exercise 1.32(a):  
+
+;; you only needed to hand in one version
+
+;; recursive form
+
+(define (accumulate combiner null-value term a next b)
+  (if (> a b)
+      null-value
+      (combiner (term a)
+		(accumulate combiner null-value term (next a) next b))))
+
+;; iterative form
+
+(define (accumulate combiner null-value term a next b)
+  (define (iter a result)
+    (if (> a b)
+	result
+	(iter (next a) (combiner (term a) result))))
+  (iter a null-value))
+
+;; sum and product
+
+(define (sum term a next b) (accumulate + 0 term a next b))
+
+(define (product term a next b) (accumulate * 1 term a next b))
+
+
+
+Exercise 1.33:  
+
+;; The problem only requires one version but this too can be
+;; recursive or iterative.  Recursive version:
+
+(define (filtered-accumulate combiner null-value term a next b predicate)
+  (cond ((> a b) null-value)
+	((predicate a)
+	 (combiner (term a)
+		   (filtered-accumulate combiner
+					null-value
+					term
+					(next a)
+					next
+					b
+					predicate)))
+	(else (filtered-accumulate combiner
+				   null-value
+				   term
+				   (next a)
+				   next
+				   b
+				   predicate))))
+
+;; Iterative version:
+
+(define (filtered-accumulate combiner null-value term a next b predicate)
+  (define (iter a result)
+    (cond ((> a b) result)
+	  ((predicate a) (iter (next a) (combiner (term a) result)))
+	  (else (iter (next a) result))))
+  (iter a null-value))
+
+;; (a) sum of squares of primes
+
+(define (sum-sq-prime a b)
+  (define (square x) (* x x))
+  (filtered-accumulate + 0 square a 1+ b prime?))
+
+;; (b) product of blah blah, using gcd from page 49
+
+(define (prod-of-some-numbers n)
+  (filtered-accumulate *
+		       1
+		       (lambda (x) x)
+		       1
+		       1+
+		       n
+		       (lambda (x) (= 1 (gcd x n)))))
+
+
+Exercise 1.40:
+
+(define (cubic a b c)
+  (lambda (x) (+ (* x x x) (* a x x) (* b x) c)))
+
+
+Exercise 1.41:
+
+(define (double f)
+  (lambda (x) (f (f x))))
+
+
+Why does (((double (double double)) inc) 5) return 21 and not 13?
+The crucial point is that DOUBLE is not associative.
+
+> (((double (double double)) inc) 5)
+21
+> ((double (double (double inc))) 5)
+13
+
+DOUBLE turns a function into one that applies the function twice.
+(DOUBLE DOUBLE) turns a function into one that applies the function
+four times.
+(DOUBLE (DOUBLE DOUBLE)) makes a function that applies (DOUBLE DOUBLE)
+twice -- that is, make a function that applies the argument function
+four times four times!
+
+
+
+Exercise 1.43:  
+
+(define (repeated f n)
+  (lambda (x)
+    (if (= n 0)
+	x
+	(f ((repeated f (- n 1)) x)))))
+
+or
+
+(define (repeated f n)
+  (lambda (x)
+    (if (= n 0)
+	x
+	((repeated f (- n 1)) (f x)))))
+
+or
+
+(define (repeated f n)
+  (if (= n 0)
+  (lambda (x) x)
+  (lambda (x) (f ((repeated f (- n 1)) x)))))
+
+
+We didn't assign 1.42, but if you followd the hint about it in 1.43,
+you'd end up with this:
+
+(define (repeated f n)
+  (if (= n 0)
+      (lambda (x) x)
+      (compose f (repeated f (- n 1)))))
+
+
+1.46
+
+This problem is a little complicated in its details because there are so
+many different procedures involved, with different domains and ranges.
+But don't let that keep you from seeing the beauty of this extremely
+general method!
+
+(define (iterative-improve good-enough? improve)
+  (define (iterate guess)
+    (if (good-enough? guess)
+	guess
+	(iterate (improve guess))))
+  iterate)
+
+(define (sqrt x)  ;; compare to bottom of page 30 of SICP
+  ((iterative-improve (lambda (guess) (< (abs (- (square guess) x)) 0.001))
+		      (lambda (guess) (average guess (/ x guess))))
+   1.0))
+
+Some people were confused about sqrt because the original good-enough? takes
+two arguments, and iterative-improve only allows for one.  But we are using
+lexical scope so that the lambda expressions used as arguments to
+iterative-improve have access to the starting value x.
+
+(define (fixed-point f first-guess)  ;; compare to page 69
+  ((iterative-improve (lambda (guess) (< (abs (- guess (f guess))) tolerance))
+		      f)
+   first-guess))
+
+Here the structure is a little different from what's in the book, because
+there is no variable NEXT to hold the next guess.  The solution above computes
+(f guess) twice for each guess.  If you don't like that, you could use a more
+complicated solution in which the argument to the good-enough procedure is a
+sentence containing both old and new guesses:
+
+(define (fixed-point f first-guess)
+  ((iterative-improve (lambda (guesses)
+			(< (abs (- (first guesses) (last guesses))) tolerance))
+		      (lambda (guesses)
+			(sentence (last guesses) (f (last guesses)))))
+   (sentence first-guess (f first-guess))))
+
+but I don't think the constant-factor efficiency improvement is worth the
+added complexity of the code.
+
+
+--------
+
+2.  EVERY:
+
+(define (every f sent)
+  (if (empty? sent)
+      '()
+      (se (f (first sent))
+	  (every f (butfirst sent)) )))
+
+
+--------
+
+Extra for experts:
+
+This is a really hard problem!  But its solution comes up enough in the
+literature that it has a name:  the Y combinator.  First here's the
+combinator alone:
+
+(lambda (f) (lambda (n) (f f n)))
+
+And here's the factorial function using it:
+
+(  (lambda (f) (lambda (n) (f f n)))
+   (lambda (fun x)
+     (if (= x 0)
+	 1
+	 (* x (fun fun (- x 1)))))  )
+
+And now here's (fact 5):
+
+(  (  (lambda (f) (lambda (n) (f f n)))
+      (lambda (fun x)
+	(if (= x 0)
+	    1
+	    (* x (fun fun (- x 1)))))  )
+   5)
+
+The trick is that instead of the factorial function taking a number as an
+argument, it takes TWO arguments, a function (which will really be itself when
+called) and a number.  The recursive call is done using the function provided
+as argument.
+
+The job of the Y combinator is to provide the function with itself as an
+argument.
+
+If that seems like a rabbit out of a hat, here's a longer explanation:
+
+The problem we're trying to solve is that factorial wants to be able to call
+itself recursively, and to do that it has to have a name for itself.  We have
+two ways to give something a name, and one of them, DEFINE, is ruled out in
+this problem.  That leaves procedure invocation, which associates formal
+parameters (the names) with actual arguments (the values).  So we could
+do this:
+
+((lambda (f n) (if (= n 0) 1 (* n (f f (- n 1)))))
+ (lambda (f n) (if (= n 0) 1 (* n (f f (- n 1)))))
+ 5)
+
+to get the factorial of 5.  Ordinarily we think of factorial as a function
+of one argument (N); here we've added a formal parameter F whose value is
+another copy of the same function.  If you work through this expression,
+you'll see that the first copy is called only for N=5; the other calls for
+all smaller values of N use the second copy, because (unlike the first) it
+is called with *itself* (the very same lambda-created procedure) as its
+argument.
+
+Now, it's a little ugly having to type the procedure twice.  Also, I sort of
+half lied when I said there are only two ways to give something a name.
+There's a kind of third way, LET, although that's really the same as creating
+and calling a procedure; and LET is good at avoiding having to type something
+twice.  So you might be tempted to say
+
+(let ((fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))))
+  (fact 5))
+
+But this doesn't work, because the name "fact" doesn't mean that lambda-
+created procedure when the lambda expression is evaluated; that association
+holds only in the body of the let.  If that isn't clear, we can expand it:
+
+((lambda (fact) (FACT 5))
+ (lambda (n) (if (= n 0) 1 (* n (fact (- n 1))))))
+
+The capitalized FACT above is inside the lambda of which fact is the formal
+parameter, so the (lambda (n) ...) procedure is substituted for it.  But the
+name "fact" also appears on the second line of the expression, in the actual
+argument expression, and *that* isn't inside the (lambda (fact) ...), so
+there is no substitution; it will look for a global name fact.  Thus we have
+to have F (in the original solution above) take *itself* as an argument, so
+that the substitution happens in the right place.  We could do that with a
+LET form equivalent to the original solution:
+
+(let ((f (lambda (f n) (if (= n 0) 1 (* n (f f (- n 1)))))))
+  (f f 5))
+
+This one does work.  Notice that the body of the let, (f f 5), is almost
+like the Y combinator's body, except that the latter generalizes to a
+function of N instead of having 5 built in, like this LET expression:
+
+(let ((f (lambda (f n) (if (= n 0) 1 (* n (f f (- n 1)))))))
+  (lambda (n) (f f n)))
+
+Now just rearrange this to eliminate the LET abbreviation:
+
+((LAMBDA (F) (LAMBDA (N) (F F N)))
+ (lambda (f n) (if (= n 0) 1 (* n (f f (- n 1))))))
+
+This returns a function of N, the factorial function.  And the capitalized
+part is the Y combinator.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week4 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week4
new file mode 100644
index 0000000..996c4ab
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week4
@@ -0,0 +1,152 @@
+CS 61A			Week 4 solutions
+
+LAB EXERCISES:
+
+1.  Error message hunt
+
++: not a number: foo
+unbound variable: zot
+eval: bad function in : (3)
+too many arguments to: (bf 3 5)
+random: bad number: -7
+sqrt: number is negative: -6
+Invalid argument to FIRST: ()
+Argument to SENTENCE not a word or sentence:#f
+define: bad variable name: 5
+
+2.  Tracing
+
+In a base-case call, the return value comes right after the call:
+
+STk> (fib 5)
+.. -> fib with n = 5
+.... -> fib with n = 4
+...... -> fib with n = 3
+........ -> fib with n = 2
+.......... -> fib with n = 1	<=== Here's a base case
+.......... <- fib returns 1	<=== with its return value
+.......... -> fib with n = 0
+.......... <- fib returns 0
+........ <- fib returns 1
+........ -> fib with n = 1
+........ <- fib returns 1
+...... <- fib returns 2
+...... -> fib with n = 2
+........ -> fib with n = 1
+........ <- fib returns 1
+........ -> fib with n = 0
+........ <- fib returns 0
+...... <- fib returns 1
+.... <- fib returns 3
+.... -> fib with n = 3
+...... -> fib with n = 2
+........ -> fib with n = 1
+........ <- fib returns 1
+........ -> fib with n = 0
+........ <- fib returns 0
+...... <- fib returns 1
+...... -> fib with n = 1
+...... <- fib returns 1
+.... <- fib returns 2
+.. <- fib returns 5
+5
+
+I count eight base-case calls.
+
+
+HOMEWORK:
+---------
+
+1.  Start by tracing it out (mentally or online):
+
+(fact 5)
+(iter 1 1)
+(iter 1 2)
+(iter 2 3)
+(iter 6 4)
+(iter 24 5)
+(iter 120 6)
+
+What jumps out is that the first argument to ITER is always the factorial
+of something.  Of what?  One less than the second argument.  So the
+invariant is
+
+	product = (counter-1)!
+
+2.  Tracing again:
+
+(fact 5)
+(helper 1 5)
+(helper 5 4)
+(helper 20 3)
+(helper 60 2)
+(helper 120 1)
+(helper 120 0)
+
+This time, RESULT isn't the factorial of anything until the end.  The
+invariant is a little harder to find, but at each step, the work still
+undone is the factorial of COUNTER, so the invariant turns out to be
+
+	n! = result * counter!
+
+3.  Trace:
+
+(pigl 'scheme)
+(pighelp 'scheme)
+(pighelp 'chemes)
+(pighelp 'hemesc)
+(pighelp 'emesch)
+
+What's invariant is that all of these words have the same translation
+into Pig Latin:
+
+	(pigl wd) = (pigl wrd)
+
+4.  In question 3, we had the name WD for our original argument, and the
+name WRD for the current argument to the helper.  In the simpler procedure,
+there is no helper, and there's only one formal parameter, WD, to talk
+about.  So we have to say something like
+
+	(pigl of currnt wd) = (pigl of original wd)
+
+
+5.  The domain of pigl is words that contain a vowel.
+
+
+6.  Here's something else we can say about each iteration:
+
+	The number of initial non-vowels in WD is reduced by one.
+
+For words in the domain, the number of initial non-vowels is a nonnegative
+integer, and there is always a vowel following them.  If the number of
+initial non-vowels is N, then after N iterations, the first letter is a
+vowel.  So the process reaches the base case.
+
+But, by the invariant, we know that the value returned in the base case
+is equal to the Pig Latin translation of the original WD.
+
+
+7.  REST-OF-DECK is of type HAND; it's a sentence of cards.
+
+There are two approaches to documenting this.  One is to say, in the initial
+listing of data types, that the names HAND and DECK are equivalent, and both
+refer to a sentence of cards.  Then the name REST-OF-DECK is self-documenting.
+The other is to put a comment in the procedure saying that REST-OF-DECK is
+a hand.
+
+
+Extra for experts:
+------------------
+
+; SORT carries out a bubble sort algorithm.
+; SENT is a sentence of numbers.
+; 
+; Subprocedure BUBBLE returns a sentence of the same numbers as in its
+; argument, but reordered so that the largest number is at the end.
+; There is no guarantee about the order of other numbers in the sentence.
+;
+; SORT calls BUBBLE repeatedly.  Each time one number bubbles to the end,
+; and then SORT recursively bubble-sorts the remaining numbers.
+
+I didn't use any invariants, etc., although that could be done.  I just
+found it more helpful to explain the algorithm in general terms.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week6 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week6
new file mode 100644
index 0000000..61b274c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week6
@@ -0,0 +1,1008 @@
+CS 61A			Week 6 solutions
+
+LAB EXERCISES:
+
+2.25.  Extract 7
+
+(cadr (caddr '(1 3 (5 7) 9)))
+
+I did that one by knowing that "cadr" means "the second element" and
+"caddr" means "the third element," and the seven is the second element
+of the third element of the overall list.
+
+(car (car '((7)))
+
+(cadr (cadr (cadr (cadr (cadr (cadr '(1 (2 (3 (4 (5 (6 7))))))))))))
+
+
+
+2.53.  Finger exercises.   
+Note that it matters how many parentheses are printed!
+
+> (list 'a 'b 'c)
+(a b c)
+
+> (list (list 'george))
+((george))
+
+> (cdr '((x1 x2) (y1 y2)))
+((y1 y2))
+
+> (cadr '((x1 x2) (y1 y2)))
+(y1 y2)
+
+> (pair? (car '(a short list)))
+#f
+
+> (memq 'red '((red shoes) (blue socks)))
+#f
+
+> (memq 'red '(red shoes blue socks))
+(red shoes blue socks)
+
+
+
+2.55 (car ''abracadabra)
+
+When you write
+
+    'foo
+
+it's just an abbreviation for
+
+    (quote foo)
+
+no matter what foo is, and no matter what the context is.  So
+
+    ''foo
+
+is an abbreviation for
+
+    (quote (quote foo))
+
+If you enter the expression
+
+    (car ''abracadabra)
+
+you are really saying
+
+    (car (quote (quote abracadabra)))
+
+Using the usual evaluation rules, we start by evaluating the subexpressions.
+The symbol car evaluates to a function.  The expression
+
+    (quote (quote abracadabra))
+
+evaluates to the unevaluated argument to (the outer) quote, namely
+
+    (quote abracadabra)
+
+That latter list is the actual argument to car, and so car returns the first
+element of that list, i.e., the word quote.
+
+
+Another example:
+
+    (cdddr '(this list contains '(a quote)))
+
+is the same as
+
+    (cdddr '(this list contains (quote (a quote))))
+
+which comes out to
+
+    ((quote (a quote)))
+
+
+P.S.:  Don't think that (car ''foo) is a quotation mark!  First of all,
+the quotation mark has already been turned into the list for which it
+is an abbreviation before we evaluate the CAR; secondly, even if the
+quotation mark weren't an abbreviation, CAR isn't FIRST, so it doesn't
+take the first character of a quoted word!
+
+
+
+2.27.  Deep-reverse.
+
+This is a tough problem to think about, although you can write a really
+simple program once you understand how.  One trick is to deep-reverse a
+list yourself, by hand, without thinking about it too hard, and THEN ask
+yourself how you did it.  It's pretty easy for you to take a list like
+
+((1 2 3) (4 5 6) (7 8 9))
+
+and instantly write down
+
+((9 8 7) (6 5 4) (3 2 1))
+
+How'd you do it?  The answer probably is, "I reversed the list and then I
+deep-reversed each of the sublists."  So:
+
+(define (deep-reverse lst)                  ;; Almost working version
+  (map deep-reverse (reverse lst)))
+
+But this doesn't QUITE work, because eventually you get down to the level
+of atoms (symbols or numbers) and you can't map over an atom.  So:
+
+(define (deep-reverse lst)
+  (if (pair? lst)
+      (map deep-reverse (reverse lst))
+      lst))
+
+If you tried to define deep-reverse without using map, you'll appreciate
+the intellectual power it gives you.  You probably got completely lost in
+cars and cdrs, none of which are used in this program.
+
+Now that you understand the algorithm, it's possible to do what the problem
+asked us to do, namely "modify your reverse procedure":
+
+(define (deep-reverse lst)
+  (define (iter old new)
+    (cond ((null? old) new)
+	  ((not (pair? old)) old)
+	  (else (iter (cdr old) (cons (deep-reverse (car old)) new)))))
+  (iter lst '()))
+
+This program will repay careful study, especially if you've fallen into the
+trap of thinking that there is an iterative form and a recursive form in which
+any problem can be expressed.  Deep-reverse combines two subproblems.  The
+top-level reversal is one that can naturally be expressed iteratively, and
+in this procedure the invocation of iter within itself does express an
+iteration.  But the deep-reversal of the sublists is an inherently recursive
+problem; there is no way to do it without saving a lot of state information
+at each level of the tree.  So the call to deep-reverse within iter is truly
+recursive, and necessarily so.  Can you express the time and space requirements
+of this procedure in Theta(...) notation?
+
+
+5.  Scheme-1 AND form.
+
+Special forms are handled by clauses in the COND inside EVAL-1, so we
+start by adding one for this new form:
+
+(define (eval-1 exp)
+  (cond ((constant? exp) exp)
+	((symbol? exp) (error "Free variable: " exp))
+	((quote-exp? exp) (cadr exp))
+	((if-exp? exp)
+	 (if (eval-1 (cadr exp))
+	     (eval-1 (caddr exp))
+	     (eval-1 (cadddr exp))))
+	((lambda-exp? exp) exp)
+	((AND-EXP? EXP) (EVAL-AND (CDR EXP)))	;; added
+	((pair? exp) (apply-1 (car exp)
+			      (map eval-1 (cdr exp))))
+	(else (error "bad expr: " exp))))
+
+Note that the new clause has to come before the PAIR? test, because special
+forms are also pairs, and must be caught before we try to interpret them as
+ordinary procedure calls.
+
+We also need the helper that checks for a list starting with the word AND:
+
+(define and-exp? (exp-checker 'and))
+
+That was the easy part.  Now we have to do the actual work, in the
+procedure EVAL-AND.  I chose to give it (CDR EXP) as its argument because
+I'm envisioning a recursive loop through the subexpressions, and we want
+to leave out the word AND itself, which isn't to be evaluated.
+
+What AND is supposed to do is to go through the subexpressions from left
+to right, evaluating each in turn until either some expression's value is
+#F (in which case we return #F) or we run out (in which case we return,
+to get exactly Scheme's behavior, the value of the last expression, which
+might be some true value other than #T).
+
+(define (eval-and subexps)
+  (if (null? subexps)				; Trivial case: (AND)
+      #T					;  returns #T
+      (let ((result (eval-1 (car subexps))))	; else eval first one.
+	(cond ((null? (cdr subexps)) result)	; Last one, return its value.
+	      ((equal? result #F) #F)		; False, end early.
+	      (else (eval-and (cdr subexps))))))) ; else do the next one.
+
+The LET here is used so that there is only one recursive call to EVAL-1,
+but the program can be written without it, and turns out only to call
+EVAL-1 once anyway, even though the call appears in two different places
+in the code, because only one of them will be carried out (per invocation
+of EVAL-AND, of course).
+
+(define (eval-and subexps)
+  (cond ((null? subexps) #T)
+	((null? (cdr subexps)) (eval-1 (car subexps)))
+	((equal? (eval-1 (car subexps)) #F) #F)
+	(else (eval-and (cdr subexps)))))
+
+Note that the first NULL? test is not really a base case; unless the
+entire expression given to us was exactly (AND), the second NULL? test
+will always become true before the first one does.  It's that second
+one that's the base case.
+
+(If we wanted AND always to return either #T or #F, rather than return
+the value of the last expression, then we'd leave out the second NULL?
+test, and the first one *would* be the base case of the recursion.)
+
+
+
+HOMEWORK:
+
+2.24.  (list 1 (list 2 (list 3 4)))
+
+The printed result is (1 (2 (3 4))).
+
+The box and pointer diagram (in which XX represents a pair, and
+X/ represents a pair whose cdr is the empty list):
+
+--->XX--->X/
+    |     |
+    |     |
+    V     V
+    1     XX--->X/
+          |     |
+          |     |
+          V     V
+          2     XX--->X/
+                |     |
+                |     |
+                V     V
+                3     4
+
+
+[NOTE:  The use of XX to represent pairs, as above, is a less-readable
+form of box-and-pointer diagram, leaving out the boxes, because there's
+no "box" character in the ASCII character set.  This is okay for
+diagrams done on a computer, but when you are asked to *draw* a diagram,
+on a midterm exam for example, you should use actual boxes, as in the
+text and the reader.]
+
+
+The tree diagram:
+
+                      +
+                     / \
+                    /   \
+                   1     +
+                        / \
+                       /   \
+                      2     +
+                           / \
+                          /   \
+                         3     4
+
+
+
+2.26.  Finger exercises.  Given
+
+(define x (list 1 2 3))
+(define y (list 4 5 6))
+
+> (append x y)
+(1 2 3 4 5 6)
+
+> (cons x y)
+((1 2 3) 4 5 6)     ;; Equivalent to ((1 2 3) . (4 5 6)) but that's not how
+                    ;; it prints!
+
+> (list x y)
+((1 2 3) (4 5 6))
+
+
+
+2.29  Mobiles.
+
+Many people find this exercise very difficult.  As you'll see, the solutions
+are quite small and elegant when you approach the problem properly.  The key
+is to believe in data abstraction; in this problem some procedures take a
+MOBILE as an argument, while others take a BRANCH as an argument.  Even though
+both mobiles and branches are represented "below the line" as two-element
+lists, you won't get confused if you use the selectors consistently instead
+of trying to have one procedure that works for both data types.
+
+(a) Selectors.  They give us the constructor
+
+(define (make-mobile left right)
+  (list left right))
+
+The corresponding selectors have to extract the left and right components
+from the constructed list:
+
+(define (left-branch mobile)
+  (car mobile))
+
+(define (right-branch mobile)
+  (cadr mobile))
+
+Note that the second element of a list is its CADR, not its CDR!
+Similarly, the other selectors are
+
+(define (branch-length branch)
+  (car branch))
+
+(define (branch-structure branch)
+  (cadr branch))
+
+
+(b) Total weight:  The total weight is the sum of the weights of the
+two branches.  The weight of a branch may be given explicitly, as a
+number, or may be the total-weight of a smaller mobile.
+
+(define (total-weight mobile)
+  (+ (branch-weight (left-branch mobile))
+     (branch-weight (right-branch mobile)) ))
+
+(define (branch-weight branch)
+  (let ((struct (branch-structure branch)))
+    (if (number? struct)
+	struct
+	(total-weight struct) )))
+
+The LET isn't entirely necessary, of course; we could just say
+(branch-structure branch) three times inside the IF.
+
+
+(c)  Predicate for balance.  It looks like we're going to need a function
+to compute the torque of a branch:
+
+(define (torque branch)
+  (* (branch-length branch)
+     (branch-weight branch) ))
+
+Here we have used the BRANCH-WEIGHT procedure from part (b) above.  Now,
+they say a mobile is balanced if two conditions are met:  The torques of
+its branches must be equal, and its submobiles must be balanced.  (If a
+branch contains a weight, rather than a submobile, we don't have to check
+if it's balanced.  This is the base case of the recursion.)
+
+(define (balanced? mobile)
+  (and (= (torque (left-branch mobile))
+	  (torque (right-branch mobile)) )
+       (balanced-branch? (left-branch mobile))
+       (balanced-branch? (right-branch mobile)) ))
+
+(define (balanced-branch? branch)
+  (let ((struct (branch-structure branch)))
+    (if (number? struct)
+	#t
+	(balanced? struct) )))
+
+If you find yourself wondering why we aren't checking the sub-sub-mobiles,
+the ones two levels down from the one we were asked about originally, then
+you're missing the central point of this exercise:  We are doing a tree
+recursion, and these procedures will check the balance of all the smaller
+mobiles no matter how far down in the tree structure.
+
+
+(d)  Changing representation.  We change the two constructors to use
+CONS instead of LIST.  The only other required change is in two of
+the selectors:
+
+(define (right-branch mobile)
+  (cdr mobile))
+
+(define (branch-structure branch)
+  (cdr branch))
+
+We're now using CDR instead of CADR because the second component of each
+of these data types is stored in the cdr of a pair, rather than in the
+second element of a list.  Nothing else changes!  The procedures we wrote
+in parts (b) and (c) don't include any invocations of CDR or CADR or
+anything like that; we respected the abstraction barrier, and so nothing
+has to change "above the line."
+
+
+2.30  square-tree
+
+The non-MAP way:
+
+(define (square-tree tree)
+  (cond ((null? tree) '())
+	((number? tree) (* tree tree))
+	(else (cons (square-tree (car tree))
+		    (square-tree (cdr tree))))))
+
+The MAP way:
+
+(define (square-tree tree)
+  (if (number? tree)
+      (* tree tree)
+      (map square-tree tree)))
+
+I'm not saying more about this because we talked about these programs in
+lecture.  See the lecture notes!  But NOTE that what the book calls a "tree"
+in this section is what I've called a "deep list," reserving the name "tree"
+for an abstract data type.
+
+
+2.31  tree-map
+
+This, too, can be done both ways:
+
+(define (tree-map fn tree)
+  (cond ((null? tree) '())
+	((not (pair? tree)) (fn tree))
+	(else (cons (tree-map fn (car tree))
+		    (tree-map fn (cdr tree))))))
+
+(define (tree-map fn tree)
+  (if (not (pair? tree))
+      (fn tree)
+      (map (lambda (subtree) (tree-map fn subtree)) tree)))
+
+In both cases I've replaced NUMBER? with (NOT (PAIR? ...)) so that
+the leaves of the tree can be symbols as well as numbers.  (Obviously
+if the underlying function is squaring, then only numbers are
+appropriate.)
+
+
+2.32  subsets
+
+(define (subsets s)
+  (if (null? s)
+      (list nil)
+      (let ((rest (subsets (cdr s))))
+	(append rest (map (LAMBDA (SET) (CONS (CAR S) SET)) rest)))))
+
+Explanation:  The subsets of a set can be divided into two categories:
+those that include the first element and those that don't.  Each of the
+former (including the first element) consists of one of the latter
+(without the first element) with the first element added.  For example,
+the subsets of (1 2 3) are
+
+not including 1:	()	(2)	(3)	(2 3)
+including 1:		(1)	(1 2)	(1 3)	(1 2 3)
+
+But the "not including 1" ones are exactly the subsets of (2 3),
+which is the cdr of the original set.  So the LET uses a recursive
+call to find those subsets, and we append to them the result of
+sticking 1 (the car of the original set) in front of each.
+
+Note:  It's really important to put the recursive call in a LET
+argument rather than use two recursive calls, as in
+
+        (append (subsets (cdr s))
+		(map (lambda (set) (cons (car s) set))
+		     (subsets (cdr s))))
+
+because that would take Theta(3^n) time, whereas the original version
+takes Theta(2^n) time.  Both are slow, but that's a big difference.
+
+
+2.36  accumulate-n
+
+(define (accumulate-n op init seqs)
+  (if (null? (car seqs))
+      nil
+      (cons
+       (accumulate op init (MAP CAR SEQS))
+       (accumulate-n op init (MAP CDR SEQS)))))
+
+
+2.37  matrices
+
+(define (matrix-*-vector m v)
+  (map (LAMBDA (ROW) (DOT-PRODUCT ROW V)) m))
+
+(define (transpose mat)
+  (accumulate-n CONS NIL mat))
+
+(define (matrix-*-matrix m n)
+  (let ((cols (transpose n)))
+    (map (LAMBDA (ROW) (MATRIX-*-VECTOR COLS ROW)) m)))
+
+Take a minute and try to appreciate the aesthetic beauty in these vector
+and matrix programs.  In a conventional approach, matrix multiplication
+would involve three nested loops with index variables.  These procedures
+seem closer to the mathematical idea that a matrix is a first-class
+thing in itself, not just an array of numbers.
+
+
+2.38  fold-right vs. fold-left
+
+> (fold-right / 1 (list 1 2 3))
+1.5
+
+This is 1/(2/3).
+
+> (fold-left / 1 (list 1 2 3))
+166.666666666667e-3
+
+This is (1/2)/3, or 1/6.
+
+> (fold-right list nil (list 1 2 3))
+(1 (2 (3 ())))
+
+This is (list 1 (list 2 (list 3 nil))).
+
+> (fold-left list nil (list 1 2 3))
+(((() 1) 2) 3)
+
+This is (list (list (list nil 1) 2) 3).
+
+In each example, notice that the values 1, 2, and 3 occur in left-to-right
+order whether we use fold-left or fold-right.  What changes is the grouping:
+
+fold-right:	f(1, f(2, f(3, initial)))
+
+fold-left:	f(f(f(initial, 1), 2), 3)
+
+So the kind of function that will give the same answer with fold-right and
+fold-left is an ASSOCIATIVE operator, i.e., one for which
+
+        (a op b) op c = a op (b op c)
+
+
+2.54  Equal?    
+
+(define (equal? a b)
+  (cond ((and (symbol? a) (symbol? b)) (eq? a b))
+	((or (symbol? a) (symbol? b)) #f)
+	((and (number? a) (number? b)) (= a b))       ;; not required but
+	((or (number? a) (number? b)) #f)             ;; suggested in footnote
+	((and (null? a) (null? b)) #t)
+	((or (null? a) (null? b)) #f)
+	((equal? (car a) (car b)) (equal? (cdr a) (cdr b)))
+	(else #f)))
+
+Note: I think this is the cleanest way to write it--the way that's easiest
+to read.  It's possible to bum a few procedure calls here and there.  For
+example, the first two cond clauses could be
+
+        ((symbol? a) (eq? a b))
+        ((symbol? b) #f)
+
+on the theory that eq? always returns #f if one argument is a symbol
+and the other isn't.  Similarly, one could write
+
+        ((null? a) (null? b))
+        ((null? b) #f)
+
+but I'm not sure the saving is worth the potential confusion.
+
+
+Scheme-1 LET:
+
+I always like to start with the easy parts:
+
+(define let-exp? (exp-checker 'let))
+
+(define (let-parameters exp) (map car (cadr exp)))
+
+(define (let-value-exps exp) (map cadr (cadr exp)))
+
+(define (let-body exp) (cddr exp))
+
+Now, one way to evaluate a LET expression is to covert it into the
+expression it abbreviates, namely an invocation of a lambda-generated
+procedure:
+
+(define (let-to-lambda exp)
+  (cons (cons 'lambda
+	      (cons (let-parameters exp)
+		    (let-body exp)))
+	(let-value-exps exp)))
+
+(define (eval-1 exp)
+  (cond ...
+	((LET-EXP? EXP) (EVAL-1 (LET-TO-LAMBDA EXP)))
+	...
+	(else (error "bad expr: " exp))))
+
+Here's an example of how let-to-lambda works:
+
+STk> (let-to-lambda '(let ((x (+ 2 3))
+			   (y (* 2 5)))
+		       (+ x y)))
+((lambda (x y) (+ x y)) (+ 2 3) (* 2 5))
+
+
+The other solution would be to evaluate the LET expression directly,
+without first translating it:
+
+(define (eval-1 exp)
+  (cond ...
+	((LET-EXP? EXP)
+	 (EVAL-1 (SUBSTITUTE (LET-BODY EXP)
+			     (LET-PARAMETERS EXP)
+			     (MAP EVAL-1 (LET-VALUE-EXPS EXP))
+			     '())))
+	...
+	(else (error "bad expr: " exp))))
+
+This is basically stolen from APPLY of a lambda-defined procedure, but
+using the selectors for the pieces of a LET expressions, and evaluating
+the let value expressions using MAP, as specified in the hint.
+
+
+
+Extra for experts:
+------------------
+
+Huffman coding exercises:
+
+None of this is particularly hard; it was assigned to illustrate an
+interesting application of trees to a real-world problem (compression).
+
+2.67
+
+Here's what SAMPLE-TREE looks like:
+
+((leaf a 4) 
+ ((leaf b 2) ((leaf d 1) (leaf c 1) (d c) 2) (b d c) 4)
+ (a b d c)
+ 8)
+
+The corresponding codes are
+	A 0
+	B 10
+	D 110
+	C 111
+
+So the sample message (0 1 1 0 0 1 0 1 0 1 1 1 0) is grouped as
+
+	0 110 0 10 10 111 0
+
+which is decoded as (a d a b b c a).
+
+
+2.68
+
+Since every node of the tree knows all the symbols in all its children,
+we don't have to do a complete tree search; we can look only in the branch
+that contains the symbol we want.  (This is why the tree was designed with
+a SYMBOLS field.)
+
+(define (encode-symbol symbol tree)
+  (if (leaf? tree)
+      (if (equal? symbol (symbol-leaf tree))
+	  '()
+	  (error "Symbol not in tree:" symbol))
+      (if (member symbol (symbols (left-branch tree)))
+	  (cons 0 (encode-symbol symbol (left-branch tree)))
+	  (cons 1 (encode-symbol symbol (right-branch tree))))))
+
+
+2.69
+
+We are given a list of leaves in increasing order of weight.  Each leaf
+is a tree, so this can also be thought of as a list of trees.  We'll
+maintain a list of trees in order of weight, but including some non-leaf
+trees, until there's only one tree in the list.
+
+(define (successive-merge set)
+  (if (null? (cdr set))		;set is of length 1
+      (car set)			;so return the one tree.
+      (successive-merge
+       (adjoin-set				;else make a new set
+	(make-code-tree (car set) (cadr set))	;making two smallest into one
+	(cddr set)))))				;leaving out the individuals
+
+
+2.70
+
+STk> (define job-tree
+	(generate-huffman-tree '((a 2) (boom 1) (get 2) (job 2)
+				 (na 16) (sha 3) (yip 9) (wah 1))))
+okay
+STk> job-tree
+((leaf na 16)
+ ((leaf yip 9)
+  (((leaf a 2)
+    ((leaf wah 1) (leaf boom 1) (wah boom) 2)
+    (a wah boom) 4)
+   ((leaf sha 3) ((leaf job 2) (leaf get 2) (job get) 4) (sha job get) 7)
+   (a wah boom sha job get) 11)
+  (yip a wah boom sha job get) 20)
+ (na yip a wah boom sha job get) 36)
+
+The corresponding encoding is
+
+	NA  0		JOB  11110
+	YIP 10		GET  11111
+	A   1100	WAH  11010
+	SHA 1110	BOOM 11011
+
+STk> (encode '(get a job
+	       sha na na na na na na na na
+	       get a job
+	       sha na na na na na na na na
+	       wah yip yip yip yip yip yip yip yip yip
+	       sha boom)
+	     job-tree)
+(1 1 1 1 1 1 1 0 0 1 1 1 1 0
+ 1 1 1 0 0 0 0 0 0 0 0 0
+ 1 1 1 1 1 1 1 0 0 1 1 1 1 0
+ 1 1 1 0 0 0 0 0 0 0 0 0
+ 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
+ 1 1 1 0 1 1 0 1 1)
+
+There are 84 bits in this encoding.  
+
+A fixed-length encoding would use three bits for each of the eight symbols.
+For example:
+
+	NA  000		JOB  100
+	YIP 001		GET  101
+	A   010		WAH  110
+	SHA 011		BOOM 111
+
+With this encoding, the 36 words of the song would take 36*3 = 108 bits.
+We saved 24 bits, which is 22% of the fixed-length size.  This is a decent
+but not amazing compression ratio, considering that the example was chosen
+to work well with Huffman compression.
+
+(Bear in mind, though, that in practice we'd have to include some
+representation of the coding tree when we send the message to someone, to
+allow the receiver to decode it!  That's why compression in general isn't
+worth it for short messages; there's generally some overhead space required
+that's negligible for long messages but important for short ones.)
+
+For this example, even the three-bit fixed-length encoding is pretty good.
+The song lyric is 125 characters (including spaces and newlines), ordinarily
+represented in the ASCII code using one eight-bit byte per character, for
+a total of 125*8 = 1000 bits.  GZIP, the general-purpose compression
+program from the Free Software Foundation, compresses this to 62 bytes,
+or 496 bits (50% compression).  The three-bit and Huffman encodings both do
+much better than this, although of course they wouldn't work at all for
+data containing anything other than those eight words.
+
+
+2.71
+
+If the weights are powers of two, then at each step of the SUCCESSIVE-MERGE
+all of the symbols merged so far will weigh less than the next unmerged
+symbol.  That is, given ((A 1) (B 2) (C 4) (D 8) (E 16)) we get
+
+	((A 1) (B 2) (C 4) (D 8) (E 16))
+	((AB 3) (C 4) (D 8) (E 16))
+	((ABC 7) (D 8) (E 16))
+	((ABCD 15) (E 16))
+
+(leaving out the details of the non-leaf trees to show the big picture).
+Therefore, the tree will look like the very imbalanced one in figure 2.17
+on page 158:
+
+			(ABCDE) 31
+			/	 \
+		       /	  \
+		   (ABCD) 15     E 16
+		  /       \
+		 /	   \
+	     (ABC) 7       D 8
+	     /      \
+	    /	     \
+	(AB) 3	    C 4
+	/     \
+       /       \
+      A 1      B 2
+
+The encodings are
+
+	A 0000	B 0001	C 001	D 01	E 1
+
+In general, for N symbols, the most frequent takes 1 bit, and the least
+frequent takes N-1 bits.
+
+But don't think that this is a failure of the algorithm, in the way that
+the unbalanced binary search tree of figure 2.17 is a worst case!  If the
+frequencies of use of the symbols really are a sequence of powers of two,
+then this encoding will be efficient, since more than half of the symbols
+in the text to be encoded are represented with one bit.  Altogether
+there will be 2^(N-1) one-bit codes, 2^(N-2) two-bit codes, etc., in
+this message of length (2^N)-1 symbols.  This requires [2^(N+1)]-(N+2) bits
+altogether.  A fixed-length encoding would take (lg N)*[(2^N)-1] bits.
+The exact formulas are complicated, so here are simple approximations:
+	fixed-length:  2^N * (lg N)
+	Huffman:       2^N * 2
+On average, each symbol requires (just under) two bits with Huffman coding,
+regardless of the value of N.  With fixed-length encoding, the number of
+bits grows as N grows.  And of course the (lg N) has to be rounded up to
+the next higher integer, so for N=5, we need three bits per symbol for
+fixed-length vs. two per symbol for Huffman.
+
+(The notation "lg n" means the logarithm to the base 2.)
+
+
+2.72
+
+Since only one branch is followed at each step of the encoding, the
+number of steps is at worst the depth of the tree.  And the time per
+step, as the exercise points out, is determined by the call to MEMBER
+to check whether the symbol is in the left branch.  If there are N
+symbols, it's easy to see that the worst case is N^2 time, supposing
+the tree is very unbalanced [in 2.71 I said that an unbalanced tree isn't
+a problem, but that's in determining the size of the encoded message, not
+the time required for the encoding] so its depth is N, and we have to
+check at most N symbols at each level.
+
+In reality, though, it's never that bad.  The whole idea of Huffman coding
+is that the most often used symbols are near the top of the tree.  For the
+power-of-two weights of exercise 2.71, the average number of steps to
+encode each symbol is 2, so the time is 2N rather than N^2.  (The worst-case
+time is for the least frequently used symbol, which still takes N^2 time,
+but that symbol only occurs once in the entire message!)  We could make
+a small additional optimization by rewriting ENCODE-SYMBOL to make sure
+that at each branch node in the tree it creates, the left branch has fewer
+symbols than the right branch.
+
+
+Programming by example:
+
+Of course many approaches are possible; here's mine:
+
+(define (regroup pattern)
+
+  ;; my feeble attempt at data abstraction:
+  ;; regroup0 returns two values in a pair
+
+  (define reg-result cons)
+  (define reg-function car)
+  (define reg-minsize cdr)
+
+  ;; Assorted trivial utility routines
+
+  (define (firstn num ls)
+    (if (= num 0)
+	'()
+	(cons (car ls) (firstn (- num 1) (cdr ls))) ))
+
+  (define (too-short? num ls)
+    (cond ((= num 0) #f)
+	  ((null? ls) #t)
+	  (else (too-short? (- num 1) (cdr ls))) ))
+
+  (define (safe-bfn num ls)
+    (cond ((null? ls) '())
+	  ((= num 0) ls)
+	  (else (safe-bfn (- num 1) (cdr ls))) ))
+
+  (define (firstnum pattern)
+    (if (symbol? pattern)
+	pattern
+	(firstnum (car pattern)) ))
+
+  (define (and-all preds)
+    (cond ((null? preds) #t)
+	  ((car preds) (and-all (cdr preds)))
+	  (else #f) ))
+
+  ;; Okay, here's the real thing:
+
+  ;; There are three kinds of patterns: 1, (1 2), and (1 2 ...).
+  ;; Regroup0 picks one of three subprocedures for them.
+  ;; In each case, the return value is a pair (function . min-size)
+  ;; where "function" is the function that implements the pattern
+  ;; and "min-size" is the minimum length of a list that can be
+  ;; given as argument to that function.
+
+  (define (regroup0 pattern)
+    (cond ((number? pattern) (select pattern))
+	  ((eq? (last pattern) '...) (infinite (bl pattern)))
+	  (else (finite pattern)) ))
+
+
+  ;; If the pattern is a number, the function just selects the NTH element
+  ;; of its argument.  The min-size is N.
+
+  (define (select num)
+      (reg-result
+       (cond ((= num 1) car)	; slight optimization
+	     ((= num 2) cadr)
+	     (else (lambda (ls) (list-ref ls (- num 1)))) )
+       num))
+
+;; If the pattern is a list of patterns without ..., the function
+  ;; concatenates into a list the results of calling the functions
+  ;; that we recursively derive from the subpatterns.  The min-size
+  ;; is the largest min-size required for any subpattern.
+
+  (define (finite pattern)
+    (let ((subgroups (map regroup0 pattern)))
+      (reg-result
+       (lambda (ls) (map (lambda (subg) ((reg-function subg) ls)) subgroups))
+       (apply max (map reg-minsize subgroups)) ) ))
+
+  ;; Now for the fun part.  If the pattern is a list ending with ... then
+  ;; we have to build a map-like recursive function that sticks the result
+  ;; of computing a subfunction on the front of a recursive call for some
+  ;; tail portion of the argument list.  There are a few complications:
+
+  ;; The pattern is allowed to give any number of examples of its subpattern.
+  ;; For instance, ((1 2) ...), ((1 2) (3 4) ...), and ((1 2) (3 4) (5 6) ...)
+  ;; all specify the same function.  But ((1 2) (3 4 5) ...) is different from
+  ;; those.  So we must find the smallest leading sublist of the pattern such
+  ;; that the rest of the pattern consists of equivalent-but-shifted copies,
+  ;; where "shifted" means that each number of the copy differs from the
+  ;; corresponding number of the original by the same amount.  (3 4) is a
+  ;; shifted copy of (1 2) but (3 5) isn't.  Once we've found the smallest
+  ;; appropriate leading sublist, the rest of the pattern is unused, except
+  ;; as explained in the following paragraph.
+
+  ;; Once we have the pattern for the repeated subfunction, we need to know
+  ;; how many elements of the argument to chop off for the recursive call.
+  ;; If the pattern contains only one example of the subfunction, the "cutsize"
+  ;; is taken to be the same as the min-size for the subfunction.  For example,
+  ;; in the pattern ((1 2) ...) the cutsize is 2 because 2 is the highest
+  ;; number used.  But if there are two or more examples, the cutsize is the
+  ;; amount of shift between examples (which must be constant if there are
+  ;; more than two examples), so in ((1 2) (3 4) ...) the cutsize is 2 but in
+  ;; ((1 2) (2 3) ...) it's 1.  In ((1 2) (2 3) (5 6) ...) the shift isn't
+  ;; constant, so this is taken as one example of a long subpattern rather
+  ;; than as three examples of a short one.
+
+  ;; Finally, if the subpattern is a single number or list, as in (1 3 ...)
+  ;; (that's two examples of a one-number pattern) or ((1 2) ...), then we
+  ;; can cons the result of the subfunction onto the recursive call.  But if
+  ;; the subpattern has more than one element, as in (1 2 4 ...) or
+  ;; ((1 2) (3 4 5) ...), then we must append the result of the subfunction
+  ;; onto the recursive call.
+
+  ;; INFINITE does all of this.  FINDSIZE returns a pair containing two
+  ;; values: the number of elements in the smallest-appropriate-leading-sublist
+  ;; and, if more than one example is given, the shift between them, i.e., the
+  ;; cutsize.  (If only one example is given, #T is returned
+  ;; in the pair instead of the cutsize.)  PARALLEL? checks to see if a
+  ;; candidate smallest-appropriate-leading-sublist is really appropriate,
+  ;; i.e., the rest of the pattern consists of equivalent-but-shifted copies.
+  ;; The return value from PARALLEL? is the amount of shift (the cutsize).  
+
+  (define (infinite pattern)
+
+    (define (findsize size len)
+
+      (define (parallel? subpat rest)
+	(let ((cutsize (- (firstnum rest)
+			  (firstnum subpat) )))
+
+	  (define (par1 togo rest delta)
+
+	    (define (par2 this that)
+	      (cond ((and (eq? this '...) (eq? that '...)) #t)
+		    ((or (eq? this '...) (eq? that '...)) #f)
+		    ((and (number? this) (number? that))
+		     (= delta (- that this)))
+		    ((or (number? this) (number? that)) #f)
+		    ((not (= (length this) (length that))) #f)
+		    (else (and-all (map par2 this that))) ))
+
+	    (cond ((null? rest) cutsize)
+		  ((null? togo) (par1 subpat rest (+ delta cutsize)))
+		  ((not (par2 (car togo) (car rest))) #f)
+		  (else (par1 (cdr togo) (cdr rest) delta)) ))
+
+	  (par1 subpat rest cutsize) ))
+
+      ;; This is the body of findsize.
+      (cond ((= size len) (cons size #t))
+	    ((not (= (remainder len size) 0))
+	     (findsize (+ size 1) len))
+	    (else (let ((par (parallel? (firstn size pattern)
+					(safe-bfn size pattern) )))
+		    (if par
+			(cons size par)
+			(findsize (+ size 1) len) ))) ))
+
+    ;; This is the body of infinite.
+    (let* ((len (length pattern))
+	   (fs-val (findsize 1 len))
+	   (patsize (car fs-val))
+	   (cutsize (cdr fs-val)))
+
+      (define (make-recursion subpat combiner)
+	(let ((subgroup (regroup0 subpat)))
+	  (letrec
+	    ((f (lambda (ls)
+		  (if (too-short? (reg-minsize subgroup) ls)
+		      '()
+		      (combiner ((reg-function subgroup) ls)
+				(f (safe-bfn
+				    (if (number? cutsize)
+					cutsize
+					(reg-minsize subgroup))
+				    ls)) )) )))
+	    (reg-result f (reg-minsize subgroup)) )))
+
+      (if (= patsize 1)
+	  (make-recursion (car pattern) cons)
+	  (make-recursion (firstn patsize pattern) append) ) ))
+
+  (reg-function (regroup0 pattern)) )
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week7 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week7
new file mode 100644
index 0000000..912b506
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week7
@@ -0,0 +1,663 @@
+CS 61A			Week 7 solutions
+
+LAB ASSIGNMENT:
+
+2.62.  Union-set in Theta(n) time.
+
+The key is to realize the differences between union-set and
+intersection-set.  The null case for union-set will be different, because if
+one of the sets is empty, the result must be the other set. In the element
+comparisons, one element will always be added to the result set.  So the
+expressions with the element will be the same as intersection-set, only with
+a cons added.  Here's the solution:
+
+(define (union-set set1 set2)
+   (cond ((null? set1) set2)
+         ((null? set2) set1)
+         (else (let ((x1 (car set1)) (x2 (car set2)))
+                    (cond ((= x1 x2)
+                           (cons x1 (union-set (cdr set1) (cdr set2))))
+                          ((< x1 x2)
+                           (cons x1 (union-set (cdr set1) set2)))
+                          ((< x2 x1)
+                           (cons x2 (union-set set1 (cdr set2)))))))))
+
+
+Trees on page 156:
+
+(define tree1
+  (adjoin-set 1
+   (adjoin-set 5
+    (adjoin-set 11
+     (adjoin-set 3
+      (adjoin-set 9
+       (adjoin-set 7 '())))))))
+
+(define tree2
+  (adjoin-set 11
+   (adjoin-set 5
+    (adjoin-set 9
+     (adjoin-set 1
+      (adjoin-set 7
+       (adjoin-set 3 '())))))))
+
+(define tree3
+  (adjoin-set 1
+   (adjoin-set 7
+    (adjoin-set 11
+     (adjoin-set 3
+      (adjoin-set 9
+       (adjoin-set 5 '())))))))
+
+Other orders are possible; the constraint is that each node must be
+added before any node below it.  So in each case we first adjoin the
+root node, then adjoin the children of the root, etc.  To make sure
+this is clear, here's an alternative way to create tree1:
+
+(define tree1
+  (adjoin-set 11
+   (adjoin-set 9
+    (adjoin-set 5
+     (adjoin-set 1
+      (adjoin-set 3
+       (adjoin-set 7 '())))))))
+
+
+2.74 (Insatiable Enterprises):
+
+(a)  Each division will have a private get-record operation, so each
+division's package will look like this:
+
+(define (install-research-division)
+  ...
+  (define (get-record employee file)
+    ...)
+  ...
+  (put 'get-record 'research get-record)
+  ...)
+
+Then we can write a global get-record procedure like this:
+
+(define (get-record employee division-file)
+  ((get 'get-record (type-tag division-file))
+   employee
+   (contents division-file)))
+
+It'll be invoked, for example, like this:
+            (get-record '(Alan Perlis) research-personnel-list)
+
+For this to work, each division's file must include a type tag
+specifying which division it is.
+
+If, for example, a particular division file is a sequence of
+records, one per employee, and if the employee name is the CAR of 
+each record, then that division can use ASSOC as its get-record
+procedure, by saying
+
+  (put 'get-record 'manufacturing assoc)
+
+in its package-installation procedure.
+
+
+(b)  The salary field might be in a different place in each
+division's files, so we have to use the right selector based
+on the division tag.
+
+(define (get-salary record)
+  (apply-generic 'salary record))
+
+Each division's package must include a salary selector, comparable
+to the magnitude selectors in the complex number example.
+
+Why did I use GET directly in (a) but apply-generic in (b)?  In the
+case of get-salary, the argument is a type-tagged datum.  But in the
+case of get-record, there are two arguments, only one of which (the
+division file) has a type tag.  The employee name, I'm assuming,
+is not tagged.
+
+
+(c)  Find an employee in any division
+
+(define (find-employee-record employee divisions)
+  (cond ((null? divisions) (error "No such employee"))
+	((get-record employee (car divisions)))
+	(else (find-employee-record employee (cdr divisions)))))
+
+This uses the feature that a cond clause with only one expression
+returns the value of that expression if it's not false.
+
+
+(d)  To add a new division, you must create a package for the division,
+make sure the division's personnel file is tagged with the division name,
+and add the division's file to the list of files used as argument to
+find-employee-record.
+
+
+4.  Scheme-1 stuff.
+
+(a)  ((lambda (x) (+ x 3)) 5)
+
+Here's how Scheme-1 handles procedure calls (this is a COND clause
+inside EVAL-1):
+
+       ((pair? exp) (apply-1 (eval-1 (car exp))      ; eval the operator
+                             (map eval-1 (cdr exp)))); eval the args
+
+The expression we're given is a procedure call, in which the procedure
+(lambda (x) (+ x 3)) is called with the argument 5.
+
+So the COND clause ends up, in effect, doing this:
+
+	(apply-1 (eval-1 '(lambda (x) (+ x 3))) (map eval-1 '(5)))
+
+Both lambda expressions and numbers are self-evaluating in Scheme-1,
+so after the calls to EVAL-1, we are effectively saying
+
+	(apply-1 '(lambda (x) (+ x 3)) '(5))
+
+APPLY-1 will substitute 5 for X in the body of the
+lambda, giving the expression (+ 5 3), and calls EVAL-1
+with that expression as argument.  This, too, is a procedure call.
+EVAL-1 calls itself recursively to evaluate
+the symbol + and the numbers 5 and 3.  The numbers are self-evaluating;
+EVAL-1 evaluates symbols by using STk's EVAL, so it gets the primitive
+addition procedure.  Then it calls APPLY-1 with that procedure and
+the list (5 3) as its arguments.  APPLY-1 recognizes that the addition
+procedure is primitive, so it calls STk's APPLY, which does the
+actual addition.
+
+
+(b) As another example, here's FILTER:
+
+((lambda (f seq)
+   ((lambda (filter) (filter filter pred seq))
+    (lambda (filter pred seq)
+      (if (null? seq)
+	  '()
+	  (if (pred (car seq))
+	      (cons (car seq) (filter filter pred (cdr seq)))
+	      (filter filter pred (cdr seq)))))))
+ even?
+ '(5 77 86 42 9 15 8))
+
+
+(c) Why doesn't STk's map work in Scheme-1?  It works for primitives:
+
+	Scheme-1: (map first '(the rain in spain))
+	(t r i s)
+
+but not for lambda-defined procedures:
+
+	Scheme-1: (map (lambda (x) (first x)) '(the rain in spain))
+	Error: bad procedure: (lambda (x) (first x))
+
+This problem illustrates the complexity of having two Scheme interpreters
+coexisting, STk and Scheme-1.  In Scheme-1, lambda expressions are
+self-evaluating:
+
+	Scheme-1: (lambda (x) (first x))
+	(lambda (x) (first x))
+
+But in STk, lambda expressions evaluate to procedures, which are a different
+kind of thing:
+
+	STk> (lambda (x) (first x))
+	#[closure arglist=(x) 40179938]
+
+STk's MAP function requires an *STk* procedure as its argument, not a Scheme-1
+procedure!  Scheme-1 uses STk's primitives as its primitives, so MAP is happy
+with them.  But a Scheme-1 lambda-defined procedure just isn't the same thing
+as an STk lambda-defined procedure.
+
+
+HOMEWORK:
+
+2.75  Message-passing version of make-from-mag-ang :
+
+ (define (make-from-mag-ang r a)
+    (lambda (mesg)
+       (cond ((eq? mesg 'real-part)  (* r (cos a)))
+	     ((eq? mesg 'imag-part)  (* r (sin a)))
+	     ((eq? mesg 'magnitude)  r)
+	     ((eq? mesg 'angle)      a)
+	     (else
+	       (error "Unknown op -- Polar form number" mesg)) )) )
+
+Note that the formal parameter names X and Y that the book uses in
+make-from-real-imag (p. 186) are relatively sensible because they are
+indeed the x and y coordinates of a point in the plane.  X and Y
+are confusing as names for polar coordinates!  I used R and A, for
+Radius and Angle, but MAGNITUDE and ANGLE would be okay, too.
+
+I could have used an internal definition, as they do, instead of
+lambda; the two forms are equivalent.
+
+
+2.76  Compare conventional, data-directed, and message-passing.
+
+To add a new operator:
+
+First we must write a low-level procedure for that operator for each type,
+like (magnitude-rectangular) and (magnitude-polar) if we're adding the
+operator magnitude.  (If we're using a package system, we can add a
+local definition of MAGNITUDE to each package.)  Then...
+
+For conventional style, we write a generic operator procedure
+(magnitude) that invokes the appropriate lower-level procedure
+depending on the type of its operand.
+
+For data-directed style, we use PUT to insert entries in the
+procedure matrix for each low-level procedure; there is no new
+high-level procedure required.
+
+For message-passing style, we modify each of the type dispatch
+procedures to accept a new message corresponding to the new
+operator, dispatching to the appropriate low-level procedure.
+
+To add a new type:
+
+First we must write a low-level procedure for that type for each
+operator, like (real-part-polar), (imag-part-polar),
+(magnitude-polar), and (angle-polar) if we're inventing the
+polar type.  (If we're using a package system, we can create
+a new POLAR package with local definitions of REAL-PART, etc.)
+Then...
+
+For conventional style, we modify each of the generic operator
+procedures (real-part), (imaginary-part), etc. to know about the
+new type, dispatching to the appropriate lower-level procedures.
+
+For data-directed style, we use PUT to insert entries, as for
+a new operator.
+
+For message-passing style, we write a new type dispatch procedure
+that accepts messages 'real-part, 'imag-part, etc. and dispatches
+to the appropriate lower-level procedure.
+
+Which is most appropriate:
+
+Conventional style is certainly INappropriate when many new types
+will be invented, because lots of existing procedures need to be
+modified.
+
+Similarly, message-passing is INappropriate when many new operators
+will be invented and applied to existing types.
+
+Data-directed programming is a possible solution in either case, and is
+probably the best choice if both new types and new operators are likely.
+It's also a good choice if the number of types or operators is large in
+the first place, whether or not new ones will be invented, because it
+minimizes the total number of procedures needed (leaving out the generic
+dispatch procedures for each type or operator) and thereby reduces the
+chances for error.
+
+As you'll see in chapter 3, message-passing style takes on new importance
+when a data object needs to keep track of local state.  But you'll see
+later in the chapter (mutable data) that there are other solutions to
+the local state problem, too.
+
+Message-passing is also sometimes sensible when there are lots of types,
+each of which has its own separate set of operators with unique names, so
+that a data-directed array would be mostly empty.
+
+
+2.77
+
+Starting with
+
+          (magnitude '(complex rectangular 3 . 4))
+
+we call MAGNITUDE giving
+
+          (apply-generic  'magnitude  '(complex rectangular 3 . 4))
+
+The apply-generic function (see pg. 184) just uses GET to find the
+entry corresponding to 'magnitude and '(complex), and gets the same
+function MAGNITUDE that we invoked in the first place.  This
+time, however, the argument to MAGNITUDE is (CONTENTS OBJ)
+so that the first type flag (COMPLEX) is removed.  In other
+words, we end up calling
+
+          (magnitude '(rectangular 3 . 4))
+	
+Calling the function MAGNITUDE again, this becomes :
+
+	  (apply-generic 'magnitude '(rectangular 3 . 4))
+   
+The apply-generic function now looks up the entry for 'magnitude and
+'(rectangular) and finds the MAGNITUDE function from the RECTANGULAR
+package; that function is called with '(3 . 4) as its argument, which
+yields the final answer...  (sqrt (square 3) (square 4))  ==>  5
+
+
+2.79 equ?
+
+(define (equ? a b)
+  (apply-generic 'equ? a b))
+
+In the scheme-number package:
+
+  (put 'equ? '(scheme-number scheme-number) =)
+
+In the rational package:
+
+  (define (equ-rat? x y)
+    (and (= (numer x) (numer y))
+	 (= (denom x) (denom y))))
+  ...
+  (put 'equ? '(rational rational) equ-rat?)
+
+In the complex package:
+
+  (define (equ-complex? x y)
+    (and (= (real-part x) (real-part y))
+	 (= (imag-part x) (imag-part y))))
+  ...
+  (put 'equ? '(complex complex) equ-complex?)
+
+This technique has the advantage that you can compare for equality
+a complex number in rectangular form with a complex number in polar
+form, since the latter is implicitly converted to rectangular by
+equ-complex?.  But it has the disadvantage that when comparing
+two complex numbers in polar form, it needlessly does the arithmetic
+to convert them both to rectangular coordinates.  (On the other
+hand, if you want a polar-specific version of equ?, you have to
+remember that the angles can differ by a multiple of 2*pi and the
+numbers are still equal!)
+
+
+2.80 =zero?
+
+(define (=zero? num)
+  (apply-generic '=zero? num))
+
+In the scheme-number package:
+
+  (put '=zero? '(scheme-number) zero?)
+
+In the rational package:
+
+  (put '=zero? '(rational)
+       (lambda (n) (equ? n (make-rational 0 1))))
+
+In the complex package:
+
+  (put '=zero? '(complex)
+       (lambda (n) (equ? n (make-complex-from-real-imag 0 0))))
+
+Of course I could have used internal defines instead of lambda
+here.  And of course once we invent raising it gets even easier;
+I can just say
+
+(define (=zero? num)
+  (equ? num (make-scheme-number 0)))
+
+because then mixed-type equ? calls will be okay.
+
+
+2.81 Louis messes up again
+
+(a)  This will result in an infinite loop.  Suppose we have two
+complex numbers c1 and c2, and we try (exp c1 c2).  Apply-generic
+will end up trying to compute
+
+  (apply-generic 'exp (complex->complex c1) c2)
+
+but this is the same as
+
+  (apply-generic 'exp c1 c2)
+
+which is what we started with.
+
+
+(b)  Louis is wrong.  If we have a complex exponentiation procedure
+and we PUT it into the table, then apply-generic won't try to convert
+the complex arguments.  And if we don't have a complex exponentiation
+procedure, then apply-generic correctly gives an error message; there's
+nothing better it can do.
+
+(Once we invent the idea of raising, it would be possible to modify
+apply-generic so that if it can't find a function for the given
+type(s), it tries raising the operand(s) just in case the operation
+is implemented for a more general type.  For instance, if we try to
+apply EXP to two rational numbers, apply-generic could raise them to
+real and then the version of EXP for the scheme-number type will work.
+But it's tricky to get this right, especially when there are two
+operands -- should we raise one of them, or both?)
+
+(c)  Nevertheless, here's how it could be done:
+
+              (let ((type1 (car type-tags))
+                    (type2 (cadr type-tags))
+                    (a1 (car args))
+                    (a2 (cadr args)))
+		(IF (EQ? TYPE1 TYPE2)
+		    (ERROR "CAN'T COERCE SAME TYPES" TYPE1)
+		    (let ((t1->t2 (get-coercion type1 type2))
+			  (t2->t1 (get-coercion type2 type1)))
+		      ...)))
+
+
+2.83  Implementation of "raise" operators taking numbers to the next
+level "up" in the hierarchy -- i.e. the next more general type:
+
+               integer -> rational -> real -> complex
+
+The package system as presented in the text has to be modified a little,
+because now instead of having a scheme-number type we want two separate
+types integer and real.  So start by imagining we have two separate
+packages, one for integer and one for real.
+
+In each package we need an operation to raise that kind of number
+to the next type up:
+
+In the integer package:
+
+   (define (integer->rational int)
+      (make-rational int 1))
+   (put 'raise '(integer) integer->rational)
+
+In the rational package:
+
+   (define (rational->real rat)
+      (make-real (/ (numer rat) (denom rat))))
+   (put 'raise '(rational) rational->real)
+
+In the real package:
+
+   (define (real->complex Real)
+      (make-complex-from-real-imag real 0))
+   (put 'raise '(real) real->complex)
+
+And then we can make this global definition:
+
+(define (raise num) (apply-generic 'raise num))
+
+If you want to keep the Scheme-number package, you need a raise method
+that distinguishes integers from non-integers internally, which sort of
+goes against the whole idea of centralizing the type checking:
+
+   (define (scheme-number->something num)
+     (if (integer? num)
+	 (make-rational num 1)
+	 (make-complex-from-real-imag num 0)))
+
+   (put 'raise '(scheme-number) scheme-number->something)
+
+
+
+Scheme-1 MAP:
+
+We're writing a defined procedure in STk that will be a primitive
+procedure for Scheme-1.  So we get to use all the features of STk,
+but we have to be sure to handle Scheme-1's defined procedures.
+(See this week's lab, above, problem 4c.)
+
+(define (map-1 fn seq)
+  (if (null? seq)
+      '()
+      (cons (APPLY-1 FN (LIST (CAR SEQ)))
+	    (map-1 fn (cdr seq)))))
+
+The part in capital letters is the only difference between map-1 and the
+ordinary definition of map.  We can't just say (FN (CAR SEQ)) the way map
+does, because FN might not fit STk's idea of a function, and our procedure is
+running in STk, even though it provides a primitive for Scheme-1.
+
+You could make this more complicated by testing for primitive vs. defined
+Scheme-1 procedures.  For primitives you could say (FN (CAR SEQ)).  But
+since APPLY-1 is happy to accept either a primitive or a lambda expression,
+there's no reason not to use it for both.
+
+
+SCHEME-1 LET:
+
+Here's what a LET expression looks like:
+
+	(LET ((name1 value1) (name2 value2) ...) body)
+
+A good starting point is to write selectors to extract the pieces.
+
+(define let-exp? (exp-checker 'let))
+
+(define (let-names exp)
+  (map car (cadr exp))
+
+(define (let-values exp)
+  (map cadr (cadr exp))
+
+(define let-body caddr)
+
+As in last week's lab exercise, we have to add a clause to the COND in EVAL-1:
+
+(define (eval-1 exp)
+  (cond ((constant? exp) exp)
+	((symbol? exp) (error "Free variable: " exp))
+	((quote-exp? exp) (cadr exp))
+	((if-exp? exp)
+	 (if (eval-1 (cadr exp))
+	     (eval-1 (caddr exp))
+	     (eval-1 (cadddr exp))))
+	((lambda-exp? exp) exp)
+	((and-exp? exp) (eval-and (cdr exp)))	;; added in lab
+	((LET-EXP? EXP) (EVAL-LET EXP))		;; ADDED
+	((pair? exp) (apply-1 (car exp)
+			      (map eval-1 (cdr exp))))
+	(else (error "bad expr: " exp))))
+
+We learned in week 2 that a LET is really a lambda combined with a
+procedure call, and one way we can handle LET expressions is just to
+rearrange the text to get
+
+	( (LAMBDA (name1 name2 ...) body)  value1 value2 ... )
+
+(define (eval-let exp)
+  (eval-1 (cons (list 'lambda (let-names exp) (let-body exp))
+		(let-values exp))))
+
+Isn't that elegant?  It's certainly not much code.  You might not like
+the idea of constructing an expression just so we can tear it back down
+into its pieces for evaluation, so instead you might want to do the
+evaluation directly in terms of the meaning, which is to APPLY an
+implicit procedure to arguments:
+
+(define (eval-let exp)
+  (apply-1 (list 'lambda (let-names exp) (let-body exp))
+	   (map eval-1 (let-values exp))))
+
+We still end up constructing the lambda expression, because in this
+interpreter, a procedure is represented as the expression that created
+it.  (We'll see later that real Scheme interpreters have to represent
+procedures a little differently.)  But we don't construct the procedure
+invocation as an expression; instead we call apply-1, and we also
+call eval-1 for each argument subexpression.
+
+
+
+Extra for experts:
+
+First of all, there's no reason this shouldn't work for anonymous
+procedures too...
+
+(define (inferred-types def)
+  (cond ((eq? (car def) 'define)
+	 (inf-typ (cdadr def) (caddr def)))
+	((eq? (car def) 'lambda)
+	 (inf-typ (cadr def) (caddr def)))
+	(else (error "not a definition"))))
+
+Then the key point is that this is a tree recursion.  For an expression
+such as (append (a b) c '(b c)) we have to note that C is a list, but
+we also have to process the subexpression (a b) to discover that A is
+a procedure.
+
+All of the procedures in this program return an association list as
+their result.  We start by creating a list of the form
+
+    ((a ?) (b ?) (c ?) (d ?) (e ?) (f ?))
+
+and then create modified versions as we learn more about the types.
+
+(define (inf-typ params body)
+  (inf-typ-helper (map (lambda (name) (list name '?)) params) body))
+
+(define (inf-typ-helper alist body)
+  (cond ((not (pair? body)) alist)
+	((assoc (car body) alist)
+	 (inf-typ-seq (typ-subst (car body) 'procedure alist) (cdr body)))
+	((eq? (car body) 'map) (inf-map alist body 'list))
+	((eq? (car body) 'every) (inf-map alist body 'sentence-or-word))
+	((eq? (car body) 'member) (typ-subst (caddr body) 'list alist))
+	((memq (car body) '(+ - max min)) (seq-subst (cdr body) 'number alist))
+	((memq (car body) '(append car cdr)) (seq-subst (cdr body) 'list alist))
+	((memq (car body) '(first butfirst bf sentence se member?))
+	 (seq-subst (cdr body) 'sentence-or-word alist))
+	((eq? (car body) 'quote) alist)
+	((eq? (car body) 'lambda) (inf-lambda alist body))
+	(else (inf-typ-seq alist (cdr body)))))
+
+(define (typ-subst name type alist)
+  (cond ((null? alist) '())
+	((eq? (caar alist) name)
+	 (cons (list name
+		     (if (or (eq? (cadar alist) '?)
+			     (eq? (cadar alist) type))
+			 type
+			 'x))
+	       (cdr alist)))
+	(else (cons (car alist) (typ-subst name type (cdr alist))))))
+
+(define (inf-typ-seq alist seq)
+  (if (null? seq)
+      alist
+      (inf-typ-seq (inf-typ-helper alist (car seq)) (cdr seq))))
+
+(define (inf-map alist body type)
+  (if (pair? (cadr body))
+      (inf-typ-helper (typ-subst (caddr body) type alist)
+		      (cadr body))
+      (typ-subst (cadr body) 'procedure (typ-subst (caddr body) type alist))))
+
+(define (seq-subst seq type alist)
+  (cond ((null? seq) alist)
+	((pair? (car seq))
+	 (seq-subst (cdr seq) type (inf-typ-helper alist (car seq))))
+	(else (seq-subst (cdr seq) type (typ-subst (car seq) type alist)))))
+
+(define (inf-lambda alist exp)
+  ((repeated cdr (length (cadr exp)))
+   (inf-typ-helper (append (map (lambda (name) (list name '?)) (cadr exp))
+			   alist)
+		   (caddr exp))))
+
+
+
+Note -- the check for lambda in inf-typ-helper is meant to handle cases
+like the following:
+
+> (inferred-types
+    '(lambda (a b) (map (lambda (a) (append a a)) b)))
+((a ?) (b list))
+
+The (append a a) inside the inner lambda does NOT tell us anything
+about the parameter A of the outer lambda!
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week9 b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week9
new file mode 100644
index 0000000..f5489e8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Solutions/week9
@@ -0,0 +1,570 @@
+CS 61A -- Week 9 solutions
+
+LAB ACTIVITIES:
+
+1.  Use a LET to keep both initial and current balance
+
+(define (make-account init-amount)
+  (let ((BALANCE INIT-AMOUNT))                ;;;  This is the change.
+    (define (withdraw amount)
+      (set! balance (- balance amount)) balance)
+    (define (deposit amount)
+      (set! balance (+ balance amount)) balance)
+    (define (dispatch msg)
+      (cond
+        ((eq? msg 'withdraw) withdraw)
+        ((eq? msg 'deposit) deposit)))
+    dispatch))
+
+
+2.  Add messages to read those variables.
+
+(define (make-account init-amount)
+  (let ((balance init-amount))
+    (define (withdraw amount)
+      (set! balance (- balance amount)) balance)
+    (define (deposit amount)
+      (set! balance (+ balance amount)) balance)
+    (define (dispatch msg)
+      (cond
+        ((eq? msg 'withdraw) withdraw)
+        ((eq? msg 'deposit) deposit)
+	((EQ? MSG 'BALANCE) BALANCE)                  ;; two lines added here
+	((EQ? MSG 'INIT-BALANCE) INIT-AMOUNT)))
+    dispatch))
+
+
+3.  Add transaction history.
+
+(define (make-account init-amount)
+  (let ((balance init-amount)
+        (TRANSACTIONS '()))                       ;; add local state var
+    (define (withdraw amount)
+      (SET! TRANSACTIONS (APPEND TRANSACTIONS
+				 (LIST (LIST 'WITHDRAW AMOUNT))))    ;; update
+      (set! balance (- balance amount)) balance)
+    (define (deposit amount)
+      (SET! TRANSACTIONS (APPEND TRANSACTIONS
+				 (LIST (LIST 'DEPOSIT AMOUNT))))     ;; update
+      (set! balance (+ balance amount)) balance)
+    (define (dispatch msg)
+      (cond
+        ((eq? msg 'withdraw) withdraw)
+        ((eq? msg 'deposit) deposit)
+	((eq? msg 'balance) balance)
+	((eq? msg 'init-balance) init-amount)
+	((EQ? MSG 'TRANSACTIONS) TRANSACTIONS)))      ;; message to examine it
+    dispatch))
+
+
+4.  Why substitution doesn't work.
+
+(plus1 5)  becomes
+
+(set! 5 (+ 5 1))
+5
+
+The first line (the SET!) is syntactically wrong; "5" isn't a variable
+and it doesn't make sense to substitute into an unevaluated part of a
+special form.
+
+The second line (returning the value 5) is syntactically okay but
+gives the wrong answer; it ignores the fact that the SET! was supposed
+to change the result.
+
+
+HOMEWORK:
+
+3.3  Accounts with passwords
+
+(define (make-account balance password)
+  (define (withdraw amount) ; Starting here exactly as in p. 223
+    (if (>= balance amount)
+	(begin (set! balance (- balance amount))
+	       balance)
+	"Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (define (dispatch pw m) ; Starting here different because of pw
+    (cond ((not (eq? pw password))
+	   (lambda (x) "Incorrect password"))
+	  ((eq? m 'withdraw) withdraw) ; Now the same again
+	  ((eq? m 'deposit) deposit)
+	  (else (error "Unknown request -- MAKE-ACCOUNT"
+		       m))))
+  dispatch)
+
+The big question here is why withdraw can get away with returning
+        "Insufficient funds"
+while dispatch has to return this complicated
+        (lambda (x) "Incorrect password")
+The answer is that ordinarily the result returned by withdraw is supposed
+to be a number, which is just printed.  In case of an error, withdraw can
+return a string instead, and that string will just get printed.  But
+dispatch is ordinarily supposed to return a PROCEDURE.  In the example
+        ((acc 'some-other-password 'deposit) 50)
+if dispatch just returned the string, it would be as if we'd typed
+        ("Incorrect password" 50)
+which makes no sense.  Instead this version is as if we typed
+        ((lambda (x) "Incorrect password") 50)
+which does, as desired, print the string.
+
+A simpler solution would be to say (error "Incorrect password") because
+the ERROR primitive stops the computation and returns to toplevel after
+printing its argument(s).  But you should understand the version above!
+
+
+3.4 call-the-cops
+
+(define (make-account balance password)
+  (define error-count 0) ; THIS LINE ADDED
+  (define (withdraw amount)
+    (if (>= balance amount)
+	(begin (set! balance (- balance amount))
+	       balance)
+	"Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (define (dispatch pw m)
+    (cond ((eq? pw password) ; REARRANGED STARTING HERE
+	   (set! error-count 0)
+	   (cond ((eq? m 'withdraw) withdraw)
+	  	 ((eq? m 'deposit) deposit)
+	  	 (else (error "Unknown request -- MAKE-ACCOUNT"
+		       	      m)) ))
+	  (else
+	   (set! error-count (+ error-count 1))
+	   (if (> error-count 7) (call-the-cops))
+	   (lambda (x) "Incorrect password") )))
+  dispatch)
+
+In this version, call-the-cops will be invoked before the dispatch procedure
+goes on to return the nameless procedure that will, eventually, be invoked and
+print the string "Incorrect password", so whatever call-the-cops prints will
+appear before that message.  If you'd like it to appear instead of the string,
+change the last few lines to
+
+           (lambda (x)
+	     (if (> error-count 7)
+		 (call-the-cops)
+		 "Incorrect password"))
+
+
+3.7  Joint accounts
+
+What we want here is a new dispatch procedure that has access to the same
+environment frame containing the balance of the original account.  You could
+imagine a complicated scheme in which we teach make-account's dispatch
+procedure a new message, make-joint, such that
+	((acc 'old-password 'make-joint) 'new-password)
+will return a new dispatch procedure in a new frame with its own password
+binding but inheriting acc's balance binding.  This can work, and we'll
+do it later in this solution, but it's a little tricky because you have to
+avoid the problem of needing to write a complete dispatch procedure within
+a cond clause in the dispatch procedure!
+
+Instead, one thing to do is to create a new function that invokes f from
+within a prepared frame.
+
+Here is a first, simple version that does almost what we want:
+
+(define (make-joint old-acc old-pw new-pw)
+  (lambda (pw m)
+    (if (eq? pw new-pw)
+	(old-acc old-pw m)
+	(lambda (x) "Incorrect password"))))
+
+It's important to understand how easy this is if we're willing to treat
+the old account procedure as data usable in this new make-joint procedure.
+This version works fine, with proper password protection, but it differs
+in one small detail from what the problem asked us to do.  I'd be very happy
+with this version of the program, but for those of you who are sticklers for
+detail, here's a discussion of the problem and a revised solution.
+
+Suppose you don't know the password of the old account but you try to make a
+joint-account by guessing.  Make-joint will return a procedure, without
+complaining, and it isn't until you try to use that returned procedure that
+the old account will complain about getting the wrong password.  The problem
+says, "The second argument must match the password with which the account
+was defined in order for the make-joint operation to proceed."  They want us
+to catch a password error as soon as make-joint itself is invoked.  To do
+this, make-joint must be able to ask old-acc whether or not the given old-pw
+is correct.  So we'd like a verify-password message so that
+
+==> (peter-acc 'open-sesame 'verify-password)
+#t
+==> (peter-acc 'garply 'verify-password)
+#f
+
+Given such a facility in make-account, we can write make-joint this way:
+
+(define (make-joint old-acc old-pw new-pw)
+  (if (old-acc old-pw 'verify-password)
+      (lambda (pw m)
+	(if (eq? pw new-pw)
+	    (old-acc old-pw m)
+	    (lambda (x) "Incorrect password")))
+      (display "Incorrect password for old account")))
+
+This approach only makes sense if we use (display ...) to signal the error.
+We can't just return a string because the string won't be printed; it'll
+be bound to a symbol like paul-acc as that symbol's value.  Later, when we
+try to invoke paul-acc as a procedure, we'll get a "Application of
+non-procedure object" error message.  We also can't just do the trick of
+returning (lambda (x) "string").  That won't blow up our program, but again
+the printing of the error message won't happen until paul-acc is applied to
+something.  If we wanted to wait until then to see the error message, we
+could just use my first solution.  So we're stuck with explicitly printing
+the message.  What gets returned is whatever print returns; if we ignore
+the message and try to invoke paul-acc later, it'll blow up.
+
+To make this work we need to invent the verify-password message:
+
+(define (make-account balance password)
+  (define (withdraw amount)
+    (if (>= balance amount)
+	(begin (set! balance (- balance amount))
+	       balance)
+	"Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (define (dispatch pw m)
+    (cond ((eq? m 'verify-password) ; This clause is new
+	   (eq? pw password))
+ 	  ((not (eq? pw password))
+	   (lambda (x) "Incorrect password"))
+	  ((eq? m 'withdraw) withdraw)
+	  ((eq? m 'deposit) deposit)
+	  (else (error "Unknown request -- MAKE-ACCOUNT"
+		       m))))
+  dispatch)
+
+Note the order of the cond clauses in dispatch.  The verify-password message
+is not considered an error even if the password doesn't match; it just returns
+#f in that case.  So we first check for that message, then if not we check
+for an incorrect password, then if not we check for the other messages.
+
+By the way, we could avoid inventing the new verify-password method by using
+the existing messages in an unusual way.  Instead of
+
+(define (make-joint old-acc old-pw new-pw)
+  (if (old-acc old-pw 'verify-password)
+      ...))
+
+we could say
+
+(define (make-joint old-acc old-pw new-pw)
+  (if (NUMBER? ((OLD-ACC OLD-PW 'DEPOSIT) 0))
+      ...)
+
+
+If you want to add a make-joint message to the account dispatch procedure,
+the corresponding method has to return a new dispatch procedure.  This is
+the approach that I rejected earlier as too complicated, but it's not bad
+once you understand how to do it: instead of having a
+        (define (dispatch pw m) ...)
+so that there is one fixed dispatch procedure, you do the object-oriented
+trick of allowing multiple dispatch procedure objects, so we have a
+higher-order procedure that makes dispatch procedures.  Every time a new
+person is added to the account, we make a new dispatch procedure for that
+person, with a new password.  Even the first user of the account gets a
+dispatch procedure through this mechanism, as you'll see below:
+
+(define (make-account balance password)
+  (define (withdraw amount)
+    (if (>= balance amount)
+	(begin (set! balance (- balance amount))
+	       balance)
+	"Insufficient funds"))
+  (define (deposit amount)
+    (set! balance (+ balance amount))
+    balance)
+  (define (new-dispatch new-pw) ; This is new.  We have a dispatch maker
+    (lambda (pw m)              ; instead of just one dispatch procedure.
+      (cond ((not (eq? pw new-pw))
+	     (lambda (x) "Incorrect password"))
+	    ((eq? m 'withdraw) withdraw)
+	    ((eq? m 'deposit) deposit)
+	    ((eq? m 'make-joint) new-dispatch)
+	    (else (error "Unknown request -- MAKE-ACCOUNT"
+			 m)))))
+  (new-dispatch password)) ; We have to make a dispatcher the first time too.
+
+
+3.8  Procedure for which order of evaluation of args matters
+
+The procedure f will be invoked twice.  We want the results to depend on the
+past invocation history.  That is, (f 1) should have a different value
+depending on whether or not f has been invoked before.
+
+Given the particular values we're supposed to produce, I think the easiest
+thing is if (f 0) is always 0, while (f 1) is 1 if (f 0) hasn't been invoked
+or 0 if it has.
+
+(define f
+  (let ((history 1))
+    (lambda (x)
+      (set! history (* history x))
+      history)))
+
+If we evaluate (f 1) first, then history has the value 1, and the result (and
+new value of history) is (* 1 1) which is 1.  On the other hand, if we
+evaluate (f 0) first, that sets history to 0, so a later (f 1) returns
+(* 0 1) which is 0.
+
+The above solution only works the first time we try
+	(+ (f 0) (f 1))
+however.  After the first time, (f x) always returns 0 for any x.  Here's
+another solution that doesn't have that defect:
+
+(define f
+  (let ((invocations 0))
+    (lambda (x)
+      (set! invocations (+ invocations 1))
+      (cond ((= x 0) 0)
+	    ((even? invocations) 0)
+	    (else 1)))))
+
+Many other possible solutions are equally good.
+
+
+3.10  Let vs. parameter
+
+                                               args: initial-amount
+                                           --> body: (let ...)
+global env:                                |
+|------------------------------|           |
+| make-withdraw: --------------------> (function) --> global env
+|                              |
+| W1: -- (this pointer added later) -> (function A below)
+|                              |
+| W2: -- (this one added later too) -> (function B below)
+|------------------------------|
+
+The first invocation of make-withdraw creates a frame
+
+E1:
+|--------------------|
+|initial-amount: 100 |---> global env
+|--------------------|
+
+and in that frame evaluates the let, which makes an unnamed function
+
+                                       (function) --> E1
+                                           |
+                                           |    args: balance
+                                           ---> body: (lambda (amount) ...)
+
+then the same let applies the unnamed function to the argument expression
+initial-amount.  We are still in frame E1 so initial-amount has value 100.
+To apply the function we make a new frame:
+
+E2:
+|--------------------|
+|balance: 100        |---> E1
+|--------------------|
+
+Then in that frame we evaluate the body, the lambda expression:
+
+                                     (function A) --> E2
+                                         |
+                                         |    args: amount
+                                         ---> body: (if ...)
+
+Then the outer define makes global W1 point to this function.
+
+Now we do (W1 50).  This creates a frame:
+
+E3:
+|------------|
+|amount:  50 |---> E2
+|------------|
+
+Frame E3 points to E2 because function A (i.e. W1) points to E2.
+Within frame E3 we evaluate the body of function A, the (if ...).
+During this evaluation the symbol AMOUNT is bound in E3, while
+BALANCE is bound in E2.  So the set! changes BALANCE in E2 from
+100 to 50.
+
+Now we make W2, creating two new frames in the process:
+
+E4:
+|--------------------|
+|initial-amount: 100 |---> global env
+|--------------------|
+
+                                       (function) --> E4
+                                           |
+                                           |    args: balance
+                                           ---> body: (lambda (amount) ...)
+
+E5:
+|--------------------|
+|balance: 100        |---> E4
+|--------------------|
+
+                                     (function B) --> E5
+                                         |
+                                         |    args: amount
+                                         ---> body: (if ...)
+
+Then the outer define makes global W2 point to this function.
+
+Summary: the two versions of make-withdraw create objects with the same
+behavior because in each case the functions A and B are defined within
+individual frames that bind BALANCE.  The environment structures differ
+because this new version has, for each account, an extra frame containing
+the binding for initial-amount.
+
+
+
+==================================================
+
+
+
+3.11  Message-passing example
+
+global env:
+|------------------------------|
+| make-account: --------------------> (function) ---> global env
+|                              |
+| acc: --(pointer added later)------> (function A below)
+|------------------------------|
+
+When we (define acc (make-account 50)), a new frame is created that
+includes both make-account's parameters (balance) and its internal
+definitions (withdraw, deposit, dispatch):
+
+E1:
+|------------------------------|
+| balance: 50                  |----> global env
+|                              |
+| withdraw: -------------------------> (function W) ---> E1
+|                              |
+| deposit: --------------------------> (function D) ---> E1
+|                              |
+| dispatch: -------------------------> (function A) ---> E1
+|------------------------------|
+
+(The arrow I have in the top right corner has nothing to do with the
+binding of BALANCE; it's the back pointer for this frame.)
+
+At this point the symbol ACC is bound, in the global environment, to
+function A.
+
+Now we do ((acc 'deposit) 40).
+
+E2:
+|--------------------|
+| m: deposit         |----> E1
+|--------------------|
+
+The above results from evaluating (acc 'deposit), whose returned value is
+function D above.
+
+E3:
+|--------------------|
+| amount: 40         |----> E1
+|--------------------|
+
+The above frame results from (D 40) [so to speak].  Note that its back
+pointer points to E1, not E2, because that's what D points to.  Now we
+evaluate the body of D, which includes (set! balance (+ balance amount))
+The value for AMOUNT comes from E3, and the value for BALANCE from E1.
+The set! changes the value to which BALANCE is bound in E1, from 50 to 90.
+
+((acc 'withdraw) 60)
+
+similarly creates two new frames:
+
+E4:
+|--------------------|
+| m: withdraw        |----> E1
+|--------------------|
+
+E5:
+|--------------------|
+| amount: 60         |----> E1
+|--------------------|
+
+Again BALANCE is changed in E1, which is where ACC's local state is kept.
+If we define another account ACC2, we'll produce a new frame E6 that has
+the same symbols bound that E1 does, but bound to different things.  The
+only shared environment frame between ACC1 and ACC2 is the global environment.
+The functions in E6 are *not* the same as the functions D, W, and A in E1.
+(They may, depending on the implementation, have the same list structure
+as their bodies, but they don't have the same environment pointers.)
+
+
+Extra for experts:
+
+First the easy part, generating unique symbols:
+
+(define gensym
+  (let ((number 0))
+    (lambda ()
+      (set! number (+ number 1))
+      (word 'g number))))
+
+Each call to GENSYM generates a new symbol of the form G1, G2, etc.
+(This isn't a perfect solution; what if there is a global variable
+named G1 that's used within the argument expression?  But we won't worry
+about that for now -- there are solutions, but they're pretty complicated.)
+
+The renaming procedure will need to keep an association list with
+entries converting symbols in the argument expression to gensymmed symbols.
+
+The problem says that all *local* variables are to be renamed.  Symbols
+that aren't bound within this expression (such as names of primitive
+procedures!) will remain unchanged in the result.
+
+(define (unique-rename exp)
+  (define (lookup sym alist)		; find replacement symbol
+    (let ((entry (assoc sym alist)))
+      (if entry
+	  (cdr entry)
+	  sym)))			; not in alist, keep original
+
+  (define (make-newnames vars)		; make (old . new) pairs for lambda
+    (map (lambda (var) (cons var (gensym))) vars))
+
+  (define (help exp alist)
+    (cond ((symbol? exp) (lookup sym alist))
+	  ((atom? exp) exp)		; self-evaluating
+	  ((equal? (car exp) 'lambda)
+	   (let ((newnames (make-newnames (cadr exp))))
+	     (let ((newalist (append newnames alist)))
+	       (cons 'lambda
+		     (cons (map cdr newalist)
+			   (map (lambda (subexp) (help subexp newalist))
+				(cddr exp)))))))
+	  (else (map (lambda (subexp) (help subexp alist)) exp))))
+  (help exp '()))
+
+There are four cases in the COND:
+1.  A symbol is replaced by its gensym equivalent.
+2.  A non-symbol atom is returned unchanged (self-evaluating expression).
+3.  A lambda expression is processed by making a new gensym name for each
+    of its parameters (found in the cadr of the lambda expression), then
+    making a new association list with these new pairs in front (so that
+    the new ones will be seen first by assoc and will take preference over
+    the same name used in an outer lambda), then recursively rename all the
+    expressions in the body of the lambda expression.
+4.  A compound expression that isn't a lambda is processed by recursively
+    renaming all its subexpressions.
+
+
+The way to use unique-rename to allow evaluation of Scheme programs
+with only one frame is that on every procedure call, the evaluator
+should call unique-rename on the procedure that the user is trying
+to call, then call the resulting modified procedure.  You can't just
+call unique-rename when the procedure is created (by a lambda
+expression), because of recursive procedures.  Many recursive
+invocations might be active at the same time, and each of them needs
+a unique renaming.
+
+We'll see that something very similar to this is actually done
+in the query-language evaluator in week 15.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/CS 61A Course Reader, Volume 1.html b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/CS 61A Course Reader, Volume 1.html
new file mode 100644
index 0000000..0990f1a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/CS 61A Course Reader, Volume 1.html
@@ -0,0 +1,79 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>CS 61A Course Reader, Volume 1</title><style type="text/css">@namespace url(http://www.w3.org/1999/xhtml);
+@font-face {
+  font-family: 'EasyRead2';
+  font-style: normal;
+  font-weight: 400;
+  src: local('EasyRead2'), url(https://cdn.rawgit.com/PullJosh/files/gh-pages/Arial-LargePeriod2.woff) format('woff');
+}input[type="text"], input[type="textarea"], textarea {
+    font-family: "EasyRead2" !important;
+  }</style></head>
+<body>
+ 
+<center>
+<h1> CS61A: Structure and Interpretation of Computer Programs </h1>
+<h3> Course Reader, Volume 1: Semester Assignments </h3>
+</center>
+
+<table frame="box" pixels="6"><tbody><tr><td>
+<h2><b>Berkeley students: Do not print or use these pages!  They do not have
+the dates for the current semester, so they won't help you.  They are here
+for non-Berkeley people.  ESPECIALLY DON'T LOOK HERE FOR THE PROGRAMMING
+PROJECTS, WHICH ARE DIFFERENT HERE FROM THE CURRENT ONES!</b></h2>
+</td></tr></tbody></table>
+
+<p>For many years I resisted the trend to putting course materials online,
+but I've been convinced because of the increasing numbers of people who
+aren't at Berkeley but use the
+<a href="http://wla.berkeley.edu/main.php?course=cs61a">online lectures</a>
+to study SICP.  Welcome, visitors!  Our course reader is divided into two
+volumes, this small one with semester-varying material, and
+<a href="https://inst.eecs.berkeley.edu/%7Ecs61a/reader/vol2.html">Volume 2</a>, with unchanging reference material,
+so that our students can buy used copies of Volume 2, and only need new
+copies of Volume 1.  What's online has the dates removed.  <b>Also, the
+projects vary somewhat from semester to semester, so what you see here is
+only approximately what's current -- I don't update the online version.</b>
+
+</p><ul>
+<li><a href="hw.pdf">
+Homework assignments</a>
+</li><li>Programming Projects:
+<ul>
+<li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/Project1/nodate-21.pdf">Project 1: Twenty-one
+</a><ul><li><a href="Project1/twenty-one.scm">twenty-one.scm</a></li></ul>
+</li><li><b>Project 2 is in the textbook!</b>
+<a href="https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book-Z-H-15.html#%_sec_2.2.4">
+(Section 2.2.4)</a><br />
+You can't actually draw anything until you
+finish the project!<br /><br />To begin, copy the file
+<a href="../Lib/picture.scm">picture.scm</a> to your directory.<br /><br />To
+draw pictures, once you've completed the exercises:<br /><br />
+> (cs)<br />
+> (ht)<br />
+> (===your-painter=== full-frame)<br /><br />
+For example:<br /><br />
+> (wave full-frame)<br />
+> ((square-limit wave 3) full-frame)<br />
+</li><li><a href="Project3/adv.txt">Project 3: Adventure Game
+</a><ul><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/Project3/adv.scm">adv.scm</a></li></ul>
+<ul><li><a href="Project3/adv-world.scm">adv-world.scm</a></li></ul>
+<ul><li><a href="Project3/small-world.scm">small-world.scm</a></li></ul>
+<ul><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/Project3/labyrinth.scm">labyrinth.scm</a></li></ul>
+<ul><li><a href="Project3/obj.scm">obj.scm</a></li></ul>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/Project4/logo.txt">Project 4: Logo Interpreter
+</a><ul><li><a href="Project4/logo.scm">logo.scm</a></li></ul>
+<ul><li><a href="Project4/logo-meta.scm">logo-meta.scm</a></li></ul>
+<ul><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/Project4/tables.scm">tables.scm</a></li></ul>
+<ul><li><a href="Project4/obj.scm">obj.scm</a></li></ul>
+</li></ul>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume1/labs.pdf">
+Lab assignments</a>
+</li></ul>
+<p>&nbsp;
+</p><p>&nbsp;
+</p><p>&nbsp;
+</p><p><a href="../Volume2/CS&#32;61A&#32;Course&#32;Reader,&#32;Volume&#32;2.html">Volume 2</a>
+</p><p><a href="../../61a-pages">Back to class web page</a>
+
+
+</p></body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project1/twenty-one.scm b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project1/twenty-one.scm
new file mode 100644
index 0000000..1c1c6bb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project1/twenty-one.scm
@@ -0,0 +1,60 @@
+
+
+(define (twenty-one strategy)
+  (define (play-dealer customer-hand dealer-hand-so-far rest-of-deck)
+    (cond ((> (best-total dealer-hand-so-far) 21) 1)
+	  ((< (best-total dealer-hand-so-far) 17)
+	   (play-dealer customer-hand
+			(se dealer-hand-so-far (first rest-of-deck))
+			(bf rest-of-deck)))
+	  ((< (best-total customer-hand) (best-total dealer-hand-so-far)) -1)
+	  ((= (best-total customer-hand) (best-total dealer-hand-so-far)) 0)
+	  (else 1)))
+
+  (define (play-customer customer-hand-so-far dealer-up-card rest-of-deck)
+    (cond ((> (best-total customer-hand-so-far) 21) -1)
+	  ((strategy customer-hand-so-far dealer-up-card)
+	   (play-customer (se customer-hand-so-far (first rest-of-deck))
+			  dealer-up-card
+			  (bf rest-of-deck)))
+	  (else
+	   (play-dealer customer-hand-so-far
+			(se dealer-up-card (first rest-of-deck))
+			(bf rest-of-deck)))))
+
+  (let ((deck (make-deck)))
+    (play-customer (se (first deck) (first (bf deck)))
+		   (first (bf (bf deck)))
+		   (bf (bf (bf deck))))) )
+
+(define (make-ordered-deck)
+  (define (make-suit s)
+    (every (lambda (rank) (word rank s)) '(A 2 3 4 5 6 7 8 9 10 J Q K)) )
+  (se (make-suit 'H) (make-suit 'S) (make-suit 'D) (make-suit 'C)) )
+
+(define (make-deck)
+  (define (shuffle deck size)
+    (define (move-card in out which)
+      (if (= which 0)
+	  (se (first in) (shuffle (se (bf in) out) (- size 1)))
+	  (move-card (bf in) (se (first in) out) (- which 1)) ))
+    (if (= size 0)
+	deck
+    	(move-card deck '() (random size)) ))
+  (shuffle (make-ordered-deck) 52) )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+;                                      32
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv-world.scm b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv-world.scm
new file mode 100644
index 0000000..bc4eb8c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv-world.scm
@@ -0,0 +1,83 @@
+;;;  Data for adventure game.  This file is adv-world.scm
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; setting up the world
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define Soda (instantiate place 'Soda))
+(define BH-Office (instantiate place 'BH-Office))
+(define MJC-Office (instantiate place 'MJC-Office))
+(define art-gallery (instantiate place 'art-gallery))
+(define Pimentel (instantiate place 'Pimentel))
+(define 61A-Lab (instantiate place '61A-Lab))
+(define Sproul-Plaza (instantiate place 'Sproul-Plaza))
+(define Telegraph-Ave (instantiate place 'Telegraph-Ave))
+(define Noahs (instantiate place 'Noahs))
+(define Intermezzo (instantiate place 'Intermezzo))
+(define s-h (instantiate place 'sproul-hall))
+
+
+(can-go Soda 'up art-gallery)
+(can-go art-gallery 'down Soda)
+(can-go art-gallery 'west BH-Office)
+(can-go BH-Office 'east art-gallery)
+(can-go art-gallery 'east MJC-Office)
+(can-go MJC-office 'west art-gallery)
+(can-go Soda 'south Pimentel)
+(can-go Pimentel 'north Soda)
+(can-go Pimentel 'south 61A-Lab)
+(can-go 61A-Lab 'north Pimentel)
+(can-go 61A-Lab 'west s-h)
+(can-go s-h 'east 61A-Lab)
+(can-go Sproul-Plaza 'east s-h)
+(can-go s-h 'west Sproul-Plaza)
+(can-go Sproul-Plaza 'north Pimentel)
+(can-go Sproul-Plaza 'south Telegraph-Ave)
+(can-go Telegraph-Ave 'north Sproul-Plaza)
+(can-go Telegraph-Ave 'south Noahs)
+(can-go Noahs 'north Telegraph-Ave)
+(can-go Noahs 'south Intermezzo)
+(can-go Intermezzo 'north Noahs)
+
+;; Some people.
+; MOVED above the add-entry-procedure stuff, to avoid the "The computers
+; seem to be down" message that would occur when hacker enters 61a-lab
+; -- Ryan Stejskal
+
+(define Brian (instantiate person 'Brian BH-Office))
+(define hacker (instantiate person 'hacker 61A-lab))
+(define nasty (instantiate thief 'nasty sproul-plaza))
+
+(define (sproul-hall-exit)
+   (error "You can check out any time you'd like, but you can never leave"))
+
+(define (bh-office-exit)
+  (print "What's your favorite programming language?")
+  (let ((answer (read)))
+    (if (eq? answer 'scheme)
+	(print "Good answer, but my favorite is Logo!")
+	(begin (newline) (bh-office-exit)))))
+    
+
+(ask s-h 'add-entry-procedure
+ (lambda () (print "Miles and miles of students are waiting in line...")))
+(ask s-h 'add-exit-procedure sproul-hall-exit)
+(ask BH-Office 'add-exit-procedure bh-office-exit)
+(ask Noahs 'add-entry-procedure
+ (lambda () (print "Would you like lox with it?")))
+(ask Noahs 'add-exit-procedure
+ (lambda () (print "How about a cinnamon raisin bagel for dessert?")))
+(ask Telegraph-Ave 'add-entry-procedure
+ (lambda () (print "There are tie-dyed shirts as far as you can see...")))
+(ask 61A-Lab 'add-entry-procedure
+ (lambda () (print "The computers seem to be down")))
+(ask 61A-Lab 'add-exit-procedure
+ (lambda () (print "The workstations come back to life just in time.")))
+
+;; Some things.
+
+(define bagel (instantiate thing 'bagel))
+(ask Noahs 'appear bagel)
+
+(define coffee (instantiate thing 'coffee))
+(ask Intermezzo 'appear coffee)
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv.txt
new file mode 100644
index 0000000..755f2ed
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/adv.txt
@@ -0,0 +1,718 @@
+Project:  Write an adventure game.  We'll provide most of the program.  You
+will mostly make modification and some additions.
+
+This project is designed to be done by two people working in parallel, then
+combining your results into one finished product.  (Hereafter the two partners
+are called Person A and Person B.)  But you will combine your work to hand in
+a single report for your group.
+
+The project begins with two exercises that everyone should do; these
+exercises do not require new programming, but rather familiarize you
+with the overall structure of the program as we've provided it.  After
+that, each person has separate exercises.  There is one final exercise
+for everyone that requires the two partners' work to be combined.
+(Therefore, you should probably keep notes about all of the procedures
+that you've modified during the project, so you can notice the ones that
+both partners modified independently.)
+
+This is a two-week project.  Each week, your group should
+hand in one paper (not one per person) including a listing of your modified
+adv.scm program with the modifications highlighted, and a transcript of the
+testing of your work.  Indicate on the paper which of you is person A and
+which is person B.
+
+Scoring:  Each person works on nine problems.  Three of these (numbers
+1, 2, and 9) are common to the two partners; the others are separate.
+You hand in a single solution to each problem.  Both partners get
+the points awarded to the group for problems 1, 2, and 9; each
+person gets the points for his or her own problems 3 through 8.  This means
+that your score for the project is mostly based on your individual work but
+also relies partly on the other member of your group.  For the first two
+problems, you could get away with letting your partner do the
+work, but you shouldn't because those problems are necessary to help you
+understand the structure of the entire project.  Problem 9 requires that both
+partners have already done their separate work, and meet together to
+understand each other's solutions, so probably nobody will get credit for it
+unless both have done their jobs.
+
+(Acknowledgement:  This assignment is loosely based on an MIT homework
+assignment in their version of this course.  But since this is Berkeley we've
+changed it to be politically correct; instead of killing each other, the
+characters go around eating gourmet food all the time.  N.B.:  Unless you
+are a diehard yuppie you may feel that eating gourmet food does not express
+appropriate sensitivity to the plight of the homeless.  But it's a start.)
+
+In this laboratory assignment, we will be exploring two key ideas: the
+simulation of a world in which objects are characterized by a set of state
+variables, and the use of message passing as a programming technique for
+modularizing worlds in which objects interact.
+
+OBJECT-ORIENTED PROGRAMMING is becoming an extremely popular methodology for
+any application that involves interactions among computational entities.
+Examples:
+
+	-- operating systems (processes as objects)
+	-- window systems (windows as objects)
+	-- games (asteroids, spaceships, gorillas as objects)
+	-- drawing programs (shapes as objects)
+
+
+GETTING STARTED
+To start, copy the following five files into your directory:
+   ~cs61a/lib/obj.scm           The object-oriented system
+   ~cs61a/lib/adv.scm           The adventure game program
+   ~cs61a/lib/tables.scm	An ADT you'll need for parts A5 and B4
+   ~cs61a/lib/adv-world.scm     The specific people, places, and things
+   ~cs61a/lib/small-world.scm   A smaller world you can use for debugging
+
+To work on this project, you must load these files into Scheme in the
+correct order: obj.scm first, then adv.scm and tables.scm when you're using
+that, and finally the particular world you're using, either adv-world.scm or
+small-world.scm.  The work you are asked to do refers to adv-world.scm;
+small-world.scm is provided in case you'd prefer to debug some of your
+procedures in a smaller world that may be less complicated to remember and
+also faster to load.
+
+The reason the adventure game is divided into adv.scm (containing the
+definitions of the object classes) and adv-world.scm (containing the
+specific instances of those objects in Berkeley) is that when you change
+something in adv.scm you may need to reload the entire world in order for
+your changed version to take effect.  Having two files means that you don't
+also have to reload the first batch of procedures.
+
+
+In this program there are three classes: THING, PLACE, and PERSON.
+
+Here are some examples selected from adv-world.scm:
+
+;;; construct the places in the world
+(define Soda (instantiate place 'Soda))
+(define BH-Office (instantiate place 'BH-Office))
+(define art-gallery (instantiate place 'art-gallery))
+(define Pimentel (instantiate place 'Pimentel))
+(define 61A-Lab (instantiate place '61A-Lab))
+(define Sproul-Plaza (instantiate place 'Sproul-Plaza))
+(define Telegraph-Ave (instantiate place 'Telegraph-Ave))
+(define Noahs (instantiate place 'Noahs))
+(define Intermezzo (instantiate place 'Intermezzo))
+(define s-h (instantiate place 'sproul-hall))
+
+;;; make some things and put them at places
+(define bagel (instantiate thing 'bagel))
+(ask Noahs 'appear bagel)
+
+(define coffee (instantiate thing 'coffee))
+(ask Intermezzo 'appear coffee)
+
+;;; make some people
+(define Brian (instantiate person 'Brian BH-Office))
+(define hacker (instantiate person 'hacker Pimentel))
+
+;;; connect places in the world
+
+(can-go Soda 'up art-gallery)
+(can-go art-gallery 'west BH-Office)
+(can-go Soda 'south Pimentel)
+
+Having constructed this world, we can now interact with it by sending
+messages to objects.  Here is a short example.
+
+; We start with the hacker in Pimentel.
+
+> (ask Pimentel 'exits)
+(NORTH SOUTH)
+> (ask hacker 'go 'north)
+HACKER moved from PIMENTEL to SODA
+
+
+We can put objects in the different places, and the people can then take the
+objects:
+
+> (define Jolt (instantiate thing 'Jolt))
+JOLT
+> (ask Soda 'appear Jolt)
+APPEARED
+> (ask hacker 'take Jolt)
+HACKER took JOLT
+TAKEN
+
+You can take objects away from other people, but the management is not
+responsible for the consequences...  (Too bad this is a fantasy game, and
+there aren't really vending machines in Soda that stock Jolt.)
+
+PART I:
+
+The first two exercises in this part should be done by everyone -- that is,
+everyone should actually sit in front of a terminal and do it!  It's okay to
+work in pairs as long as you all really know what's going on by the time
+you're finished.  (Nevertheless, you should only hand in one solution, that
+both agree about.)  The remaining exercises have numbers like "A3"
+which means exercise 3 for Person A.
+
+After you've done the work separately, you should meet together
+to make sure that you each understands what the other person did, because
+the second week's work depends on all of the first week's work.  You can
+do the explaining while you're merging the two sets of modifications into
+one adv.scm file to hand in.
+
+1.  Create a new person to represent yourself.  Put yourself in a new place
+called Dormitory (or wherever you live) and connect it to campus so that you
+can get there from here.  Create a place called Kirin, north of Soda.
+(It's actually on Solano Avenue.)  Put a thing called Potstickers there.
+Then give the necessary commands to move your character to Kirin, take
+the Potstickers, then move yourself to where Brian is, put down the
+Potstickers, and have Brian take them. Then go back to the lab and get back
+to work. (There is no truth to the rumor that you'll get an A in the course
+for doing this in real life!)  All this is just to ensure that you know how
+to speak the language of the adventure program.
+
+LIST ALL THE MESSAGES THAT ARE SENT DURING THIS EPISODE.  It's a good idea
+to see if you can work this out in your head, at least for some of the
+actions that take place, but you can also trace the ASK procedure to get
+a complete list.  You don't have to hand in this listing of messages.  (Do
+hand in a transcript of the episode without the tracing.)  The point is that
+you should have a good sense of the ways in which the different objects send
+messages back and forth as they do their work.
+
+[Tip:  we have provided a MOVE-LOOP procedure that you may find useful as
+an aid in debugging your work.  You can use it to move a person repeatedly.]
+
+
+2.  It is very important that you think about and understand the kinds of
+objects involved in the adventure game.  Please answer the following questions:
+
+2A.  What kind of thing is the value of variable BRIAN?
+
+Hint:  What is returned by scheme in the following situation:
+     You type:     > BRIAN
+
+
+2B.   List all the messages that a PLACE understands.  (You might want to
+maintain such a list for your own use, for every type of object, to help
+in the debugging effort.)
+
+
+2C.   We have been defining a variable to hold each object in our world.
+For example, we defined bagel by saying:
+
+     (define bagel (instantiate thing 'bagel))
+
+This is just for convenience.  Every object does not have to have a
+top-level definition.  Every object DOES have to be constructed and
+connected to the world.  For instance, suppose we did this:
+
+> (can-go Telegraph-Ave 'east (instantiate place 'Peoples-Park))
+
+;;; assume BRIAN is at Telegraph
+> (ask Brian 'go 'east)
+
+What is returned by the following expressions and WHY?
+
+> (ask Brian 'place)
+
+> (let ((where (ask Brian 'place)))
+       (ask where 'name))
+
+>  (ask Peoples-park 'appear bagel)
+
+
+
+2D.  The implication of all this is that there can be multiple names for
+objects.  One name is the value of the object's internal NAME variable. In
+addition, we can define a variable at the top-level to refer to an object.
+Moreover, one object can have a private name for another object.  For
+example, BRIAN has a variable PLACE which is currently bound to the object
+that represents People's Park.  Some examples to think about:
+
+      > (eq? (ask Telegraph-Ave 'look-in 'east) (ask Brian 'place))
+
+      > (eq? (ask Brian 'place) 'Peoples-Park)
+
+      > (eq? (ask (ask Brian 'place) 'name) 'Peoples-Park)
+
+
+OK.  Suppose we type the following into scheme:
+
+>  (define computer (instantiate thing 'Durer))
+
+
+Which of the following is correct?  Why?
+
+(ask 61a-lab 'appear computer)
+
+or
+
+(ask 61a-lab 'appear Durer)
+
+or 
+
+(ask 61a-lab 'appear 'Durer)
+
+What is returned by (computer 'name)?  Why?
+
+
+2E.  We have provided a definition of the THING class that does not use
+the object-oriented programming syntax described in the handout.  Translate
+it into the new notation.
+
+2F.  Sometimes it's inconvenient to debug an object interactively because
+its methods return objects and we want to see the names of the objects.  You
+can create auxiliary procedures for interactive use (as opposed to use
+inside object methods) that provide the desired information in printable
+form.  For example:
+
+(define (name obj) (ask obj 'name))
+(define (inventory obj)
+  (if (person? obj)
+      (map name (ask obj 'possessions))
+      (map name (ask obj 'things))))
+
+Write a procedure WHEREIS that takes a person as its argument and returns
+the name of the place where that person is.
+
+Write a procedure OWNER that takes a thing as its argument and returns the
+name of the person who owns it.  (Make sure it works for things that aren't
+owned by anyone.)
+
+Procedures like this can be very helpful in debugging the later parts of the
+project, so feel free to write more of them for your own use.
+
+
+Now it's time for you to make your first modifications to the adventure
+game.  This is where you split the work individually.
+
+PART I -- PERSON A:
+
+A3.  You will notice that whenever a person goes to a new place, the place
+gets an 'ENTER message.  In addition, the place the person previously
+inhabited gets an 'EXIT message.  When the place gets the message, it calls
+each procedure on its list of ENTRY-PROCEDURES or EXIT-PROCEDURES as
+appropriate.  Places have the following methods defined for manipulating
+these lists of procedures:  ADD-ENTRY-PROCEDURE, ADD-EXIT-PROCEDURE,
+REMOVE-ENTRY-PROCEDURE,
+REMOVE-EXIT-PROCEDURE, CLEAR-ALL-PROCS.  You can read their definitions in the
+code.
+
+Sproul Hall has a particularly obnoxious exit procedure attached to it.  Fix
+SPROUL-HALL-EXIT so that it counts how many times it gets called, and stops
+being obnoxious after the third time.
+
+Remember that the EXIT-PROCS list contains procedures, not names of
+procedures!  It's not good enough to redefine SPROUL-HALL-EXIT, since Sproul
+Hall's list of exit procedures still contains the old procedure.  The best
+thing to do is just to load adv-world.scm again, which will define a new
+sproul hall and add the new exit procedure.
+
+
+
+A4a.  We've provided people with the ability to say something using the
+messages 'TALK and 'SET-TALK.  As you may have noticed, some people around
+this campus start talking whenever anyone walks by.  We want to simulate this
+behavior.  In any such interaction there are two people involved: the one
+who was already at the place (hereafter called the TALKER) and the one who
+is just entering the place (the LISTENER).  We have already provided a
+mechanism so that the listener sends an ENTER message to the place when
+entering.  Also, each person is ready to accept a NOTICE message, meaning
+that the person should notice that someone new has come.  The talker should
+get a NOTICE message, and will then talk, because we've made a person's
+NOTICE method send itself a TALK message.  (Later we'll see that some special
+kinds of people have different NOTICE methods.)
+
+Your job is to modify the ENTER method for places, so that in addition to
+what that method already does, it sends a NOTICE message to each person in
+that place other than the person who is entering.  The NOTICE message should
+have the newly-entered person as an argument.  (You won't do anything with
+that argument now, but you'll need it later.)
+
+Test your implementation with the following:
+
+(define singer (instantiate person 'rick sproul-plaza))
+
+(ask singer 'set-talk "My funny valentine, sweet comic valentine")
+
+(define preacher (instantiate person 'preacher sproul-plaza))
+
+(ask preacher 'set-talk "Praise the Lord")
+
+(define street-person (instantiate person 'harry telegraph-ave))
+
+(ask street-person 'set-talk "Brother, can you spare a buck")
+
+YOU MUST INCLUDE A TRANSCRIPT IN WHICH YOUR CHARACTER WALKS AROUND AND
+TRIGGERS THESE MESSAGES.
+
+
+A4b.  So far the program assumes that anyone can go anywhere they want.
+In real life, many places have locked doors.
+
+Invent a MAY-ENTER? message for places that takes a person as an argument and
+always returns #T.  Then invent a LOCKED-PLACE class in which the MAY-ENTER?
+method returns #T if the place is unlocked, or #F if it's locked.  (It should
+initially be locked.)  The LOCKED-PLACE class must also have an UNLOCK
+message.  For simplicity, write this method with no arguments and have it
+always succeed.  In a real game, we would also invent keys, and a mechanism
+requiring that the person have the correct key in order to unlock the door.
+(That's why MAY-ENTER? takes the person as an argument.)
+
+Modify the person class so that it checks for permission to enter before
+moving from one place to another.  Then create a locked place and test
+it out.
+
+
+A5.  Walking around is great, but some people commute from far away, so
+they need to park their cars in garages.  A car is just a THING, but you'll
+have to invent a special kind of place called a GARAGE.  Garages have two
+methods (besides the ones all places have): PARK and UNPARK.  You'll also
+need a special kind of THING called a TICKET; what's special about it is
+that it has a NUMBER as an instantiation variable.
+
+The PARK method takes a car (a THING) as its argument.  First check to be sure
+that the car is actually in the garage.  (The person who possesses the car
+will enter the garage, then ask to park it, so the car should have entered the
+garage along with the person before the PARK message is sent.)  Then generate
+a TICKET with a unique serial number.  (The counter for serial numbers should
+be shared among all garages, so that we don't get in trouble later trying to
+UNPARK a car from one garage that was parked in a different garage.)  Every
+ticket should have the name TICKET.
+
+You'll associate the ticket number with the car in a key-value table like the
+one that we used with GET and PUT in 2.3.3.  However, GET and PUT refer to a
+single, fixed table for all operations; in this situation we need a separate
+table for every garage.  The file tables.scm contains an implementation of the
+table Abstract Data Type:
+
+constructor: (make-table) returns a new, empty table.
+
+mutator: (insert! key value table) adds a new key-value pair to a table.
+
+selector: (lookup key table) returns the corresponding value, or #F if
+				the key is not in the table.
+
+You'll learn how tables are implemented in 3.3.3 (pp. 266-268).
+For now, just take them as primitive.
+
+Make a table entry with the ticket number as the key, and the car as the
+value.  Then ask the car's owner to lose the car and take the ticket.
+
+The UNPARK method takes a ticket as argument.  First make sure the object
+you got is actually a ticket (by checking the name).  Then look up the
+ticket number in the garage's table.  If you find a car, ask the ticket's
+owner to lose the ticket and take the car.  Also, insert #F in the table for
+that ticket number, so that people can't unpark the car twice.
+
+A real-life garage would have a limited capacity, and would charge money
+for parking, but to simplify the project you don't have to simulate those
+aspects of garages.
+
+
+--- End of Part I for Person A
+
+
+PART I, PERSON B:
+
+
+B3.  Define a method TAKE-ALL for people.  If given that message, a person
+should TAKE all the things at the current location that are not already
+owned by someone.
+
+
+B4a.  It's unrealistic that anyone can take anything from anyone.  We want to
+give our characters a STRENGTH, and then one person can take something from
+another only if the first has greater STRENGTH than the second.
+
+However, we aren't going to clutter up the person class by adding a local
+STRENGTH variable.  That's because we can anticipate wanting to add lots
+more attributes as we develop the program further.  People can have CHARISMA
+or WISDOM; things can be FOOD or not; places can be INDOORS or not.
+Therefore, you will create a class called BASIC-OBJECT that keeps a local
+variable called PROPERTIES containing an attribute-value table like the
+one that we used with GET and PUT in 2.3.3.  However, GET and PUT refer to
+a single, fixed table for all operations; in this situation we need a
+separate table for every object.  The file tables.scm contains an
+implementation of the table Abstract Data Type:
+
+constructor: (make-table) returns a new, empty table.
+
+mutator: (insert! key value table) adds a new key-value pair to a table.
+
+selector: (lookup key table) returns the corresponding value, or #F if
+				the key is not in the table.
+
+You'll learn how tables are implemented in 3.3.3 (pp. 266-268).
+For now, just take them as primitive.
+
+You'll modify the person, place and thing classes so that they will inherit
+from basic-object.  This object will accept a message PUT so that
+	> (ask Brian 'put 'strength 100)
+does the right thing.  Also, the basic-object should treat any message not
+otherwise recognized as a request for the attribute of that name, so
+	> (ask Brian 'strength)
+	100
+should work WITHOUT having to write an explicit STRENGTH method in the
+class definition.
+
+Don't forget that the property list mechanism in 3.3.3 returns #F if you ask
+for a property that isn't in the list.  This means that
+	> (ask Brian 'charisma)
+should never give an error message, even if we haven't PUT that property in
+that object.  This is important for true-or-false properties, which will
+automatically be #F (but not an error) unless we explicitly PUT a #T
+value for them.
+
+Give people some reasonable (same for everyone) initial strength.  Next
+week they'll be able to get stronger by eating.
+
+B4b.  You'll notice that the type predicate PERSON? checks to see if the type
+of the argument is a member of the list '(person police thief).  This means
+that the PERSON? procedure has to keep a list of all the classes that
+inherit from PERSON, which is a pain if we make a new subclass.
+
+We'll take advantage of the property list to implement a better system for
+type checking.  If we add a method named PERSON? to the person class, and
+have it always return #T, then any object that's a type of person will
+automatically inherit this method.  Objects that don't inherit from person
+won't find a PERSON? method and won't find an entry for person? in their
+property table, so they'll return #F.
+
+Similarly, places should have a PLACE? method, and things a THING? method.
+
+Add these type methods and change the implementation of the type predicate
+procedures to this new implementation.
+
+
+B5.  In the modern era, many places allow you to get connected to the net.
+Define a HOTSPOT as a kind of place that allows network connectivity.  Each
+hotspot should have a PASSWORD (an instantiation variable) that you must know
+to connect.  (Note: We're envisioning a per-network password, not a per-person
+password as you use with AirBears.)  The hotspot has a CONNECT method with two
+arguments, a LAPTOP (a kind of thing, to be invented in a moment) and a
+password.  If the password is correct, and the laptop is in the hotspot, add
+it to a list of connected laptops.  When the laptop leaves the hotspot, remove
+it from the list.
+
+Hotspots also have a SURF method with two arguments, a laptop and a text
+string, such as
+
+		"http://www.cs.berkeley.edu"
+
+If the laptop is connected to the network, then the surf method should
+
+	(system (string-append "lynx " url))
+
+where URL is the text string argument.
+
+Now invent laptops.  A laptop is a thing that has two extra methods:  CONNECT,
+with a password as argument, sends a CONNECT message to the place where the
+laptop is.  SURF, with a URL text string as argument, sends a SURF message to
+the place where it is.  Thus, whenever a laptop enters a new hotspot, the user
+must ask to CONNECT to that hotspot's network; when the laptop leaves the
+hotspot, it must automatically be disconnected from the network.  (If it's in
+a place other than a hotspot, the SURF message won't be understood; if it's in
+a hotspot but not connected, the hotspot won't do anything.)
+
+
+--- End of Part I, PERSON B.
+
+
+PART II:
+
+This part of the project includes three exercises for each person, but YOU
+HAVE TO READ EACH OTHER'S CODE midweek, because one partner's exercises 7 and
+8 build on the other partner's exercise 6.  Finally, exercise 9 requires the
+two partners' work to be combined.  You will have to create a version of
+adv.scm that has both partners' changes.  This may take some thinking!  If
+both parners modify the same method in the same object class, you'll have to
+write a version of the method that incorporates both modifications.
+
+
+PART II, PERSON A:
+
+Adv.scm includes a definition of the class THIEF, a subclass of person.
+A thief is a character who tries to steal food from other people.  Of
+course, Berkeley can not tolerate this behavior for long.  Your job is to
+define a POLICE class; police objects catch thieves and send them directly
+to jail.  To do this you will need to understand how theives work.
+
+Since a thief is a kind of person, whenever another person enters the place
+where the thief is, the thief gets a NOTICE message from the place.  When
+the thief notices a new person, he does one of two things, depending on the
+state of his internal BEHAVIOR variable.  If this variable is set to STEAL,
+the thief looks around to see if there is any food at the place.  If there
+is food, the thief takes the food from its current possessor and sets his
+behavior to RUN.  When the thief's behavior is RUN, he moves to a new random
+place whenever he NOTICEs someone entering his current location.  The RUN
+behavior makes it hard to catch a thief.
+
+Notice that a thief object delegates many messages to its person object.
+
+
+A6a.  To help the police do their work, you will need to create a place called
+jail.  Jail has no exits.  Moreover, you will need to create a method for
+persons and thieves called GO-DIRECTLY-TO.  Go-directly-to does not require
+that the new-place be adjacent to the current-place.  So by calling (ASK
+THIEF 'GO-DIRECTLY-TO JAIL) the police can send the thief to jail no matter
+where the thief currently is located, assuming the variable thief is bound
+to the thief being apprehended.
+
+
+A6b.  Thieves sometimes try to leave their place in a randomly chosen
+direction.  This, it turns out, won't work if there are no exits from
+that place -- for example, the jail.  Modify the THIEF class so that
+a thief won't try to leave a place with no exits.
+
+** Now get your partner to explain problem B6 and its solution. **
+
+A7a.  We are now going to invent restaurant objects.  People will interact
+with the restaurants by buying food there.  First we have to make it possible
+for people to buy stuff.  Give PERSON objects a MONEY property, which is a
+number, saying how many dollars they have.  Note that money is not an
+object.  We implement it as a number because, unlike the case of objects
+such as chairs and potstickers, a person needs to be able to spend SOME
+money without giving up all of it.  In principle we could have objects like
+QUARTER and DOLLAR-BILL, but this would make the change-making process
+complicated for no good reason.
+
+To make life simple, we'll have every PERSON start out with $100.  (We should
+really start people with no money, and invent banks and jobs and so on, but
+we won't.)  Create two methods for people, GET-MONEY and PAY-MONEY, each of
+which takes a number as argument and updates the person's money value
+appropriately.  PAY-MONEY must return true or false depending on whether
+the person had enough money.
+
+
+A7b.  Another problem with the adventure game is that Noah's only has one
+bagel.  Once someone has taken that bagel, they're out of business.
+
+To fix this, we're going to invent a new kind of place, called a RESTAURANT.
+(That is, RESTAURANT is a subclass of PLACE.)  Each restaurant serves only
+one kind of food.  (This is a simplification, of course, and it's easy to see
+how we might extend the project to allow lists of kinds of food.)  When a
+restaurant is instantiated, it should have two extra arguments, besides the
+ones that all places have: the class of food objects that this restaurant
+sells,  and the price of one item of this type:
+
+   > (define-class (bagel) (parent (food ...)) ...)
+
+   > (define Noahs (instantiate restaurant 'Noahs bagel 0.50))
+
+Notice that the argument to the restaurant is a CLASS, not a particular
+bagel (instance).
+
+Restaurants should have two methods.  The MENU method returns a list
+containing the name and price of the food that the restaurant sells.
+The SELL method takes two arguments, the person who wants to buy something
+and the name of the food that the person wants.  The SELL method must first
+check that the restaurant actually sells the right kind of food.  If so,
+it should ASK the buyer to PAY-MONEY in the appropriate amount.  If that
+succeeds, the method should instantiate the food class and return the new
+food object.  The method should return #F if the person can't buy the food.
+
+
+A8.  Now we need a BUY method for people.  It should take as argument the
+name of the food we want to buy:  (ask Brian 'buy 'bagel).  The method must
+send a SELL message to the restaurant.  If this succeeds (that is, if the
+value returned from the SELL method is an object rather than #F) the new food
+should be added to the person's possessions.
+
+--- Person A skip to question 9 below.
+
+PART II, PERSON B:
+
+B6.  The way we're having people take food from restaurants is unrealistic
+in several ways.  Our overall goal this week is to fix that.  As a first
+step, you are going to create a FOOD class.
+We will give things that are food two properties, an EDIBLE? property
+and a CALORIES property.  EDIBLE?  will have the value #T if the object is a
+food.  If a PERSON eats some food, the food's CALORIES are added to the
+person's STRENGTH.
+
+(Remember that the EDIBLE? property will automatically be false for objects
+other than food, because of the way properties were implemented in question B4.
+You don't have to go around telling all the other stuff not to be edible
+explicitly.)
+
+Write a definition of the FOOD class that uses THING as the parent class.
+It should return #T when you send it an EDBILE? message, and it should
+correctly respond to a CALORIES message.
+
+Replace the procedure named EDIBLE? in the original adv.scm with a new
+version that takes advantage of the mechanism you've created, instead of
+relying on a built-in list of types of food.
+
+Now that you have the FOOD class, invent some child classes for particular
+kinds of food.  For example, make a bagel class that inherits from FOOD.
+Give the bagel class a class-variable called NAME whose value is the word
+bagel.  (We'll need this later when we invent RESTAURANT objects.)
+
+Make an EAT method for people.  Your EAT method should look at your
+possessions and filter for all the ones that are edible.  It should then add
+the calorie value of the foods to your strength.  Then it should make the
+foods disappear (no longer be your possessions and no longer be at your
+location).
+
+** Now get your partner to explain problem A6 and its solution. **
+
+B7.  Your job is to define the police class.  A policeperson is to have the
+following behavior:
+
+The police stays at one location.  When the police notices a new person
+entering the location, the police checks to see if that person is a thief.
+If the person is a thief the police says "Crime Does Not Pay," then takes
+away all the thief's possessions and sends the thief directly to jail.
+
+Give thieves and police default strengths.  Thieves should start out stronger
+than persons, but police should be stronger than thieves.  Of course, if you
+eat lots you should be able to build up enough STRENGTH (mass?) to take food
+away from a thief.  (Only a character with a lot of CHUTZPAH would take food
+away from the police. :-)
+
+Please test your code and turn in a transcript that shows the thief stealing
+your food, you chasing the thief and the police catching the thief.  In case
+you haven't noticed, we've put a thief in Sproul Plaza.
+
+
+B8.  Now we want to reorganize TAKE so that it looks to see who previously
+possesses the desired object.  If its possessor is 'NO-ONE, go ahead and
+take it as always.  Otherwise, invoke
+	(ask thing 'MAY-TAKE? receiver)
+The MAY-TAKE? method for a thing that belongs to someone should compare
+the strength of its owner with the strength of the requesting person to
+decide whether or not it can be taken.  The method should return #F
+if the person may not take the thing, or the thing itself if the person may
+take it.  This is a little more complicated than necessary right now, but
+we are planning ahead for a situation in which, for example, an object
+might want to make a clone of itself for a person to take.
+
+Note the flurry of message-passing going on here.  We send a message to the
+taker.  It sends a message to the thing, which sends messages to two people
+to find out their strengths.
+
+--- End of Part II, Person B (but both partners do question 8 below).
+
+9.  Combine the two partners' work.  For example, both partners have
+created new methods for the PERSON class.  Both partners have done work
+involving strengths of kinds of people; make sure they work together.
+
+Now make it so that when a POLICE person asks to BUY some food the
+restaurant doesn't charge him or her any money.  (This makes the game
+more realistic...)
+
+******** OPTIONAL **********
+As you can imagine, this is a truly open-ended project.  If you have the
+time and inclination, you can populate your world with new kinds of people
+(e.g., punk-rockers), places (Gilman-St), and especially things (magic
+wands, beer, gold pieces, cars looking for parking places...).
+
+For your enjoyment we have developed a procedure that creates a labyrinth (a
+maze) that you can explore.  To do so, load the file ~cs61a/lib/labyrinth.scm.
+[Note: labyrinth.scm may need some modification to work with the procedures
+you developed in part two of the project.]
+
+Legend has it that there is a vast series of rooms underneath Sproul Plaza.
+These rooms are littered with food of bygone days and quite a few theives.
+You can find the secret passage down in Sproul Plaza.
+
+You may want to modify FANCY-MOVE-LOOP so that you can look around in nearby
+rooms before entering so that you can avoid thieves.  You might also want
+your character to maintain a list of rooms visited on its property list so
+you can find your way back to the earth's surface.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/obj.scm b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/obj.scm
new file mode 100644
index 0000000..d4a9d7a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/obj.scm
@@ -0,0 +1,279 @@
+;;; obj.scm version 4.0 5/18/2000
+;;; -- implementation of the object-oriented syntax
+;; By Matt Wright, based on a handout from MIT
+;; Revised for STk by Brian Gaeke - removed scm and procedure->macro
+
+;;; Utilities
+
+;; MAKNAM: create a new symbol whose name is the concatenation of the 
+;; names of those in the symbol list SYMBOLS.
+(define (maknam . symbols)
+  (string->symbol (apply string-append (map symbol->string symbols))))
+
+;; ASK: send a message to an object
+
+; The dot in the first line of the definition of ASK, below, makes it
+; take a variable number of arguments.  The first argument is associated
+; with the formal parameter OBJECT; the second with MESSAGE; any extra
+; actual arguments are put in a list, and that list is associated with
+; the formal parameter ARGS.  (If there are only two actual args, then
+; ARGS will be the empty list.)
+
+; APPLY takes two arguments, a procedure and a list, and applies the
+; procedure to the things in the list, which are used as actual
+; argument values.
+
+(define (ask object message . args)
+  (let ((method (object message)))
+    (if (method? method)
+	(apply method args)
+	(error "No method " message " in class " (cadr method)))))
+
+(define (no-method name)
+  (list 'no-method name))
+
+(define (no-method? x)
+  (if (pair? x)
+      (eq? (car x) 'no-method)
+      #f))
+
+(define (method? x)
+  (not (no-method? x)))
+
+
+;; INSTANTIATE and INSTANTIATE-PARENT:  Create an instance of a class
+
+; The difference is that only INSTANTIATE initializes the new object
+
+(define (instantiate class . arguments)
+  (let ((new-instance (apply (class 'instantiate) arguments)))
+    (ask new-instance 'initialize new-instance)
+    new-instance))
+
+(define (instantiate-parent class . arguments)
+  (apply (class 'instantiate) arguments))
+
+;; GET-METHOD: Send a message to several objects and return the first
+;; method found (for multiple inheritance)
+
+(define (get-method give-up-name message . objects)
+  (if (null? objects)
+      (no-method give-up-name)
+      (let ((method ((car objects) message)))
+	(if (method? method)
+	    method
+	    (apply get-method (cons give-up-name
+				    (cons message (cdr objects)) ))))))
+
+
+
+;; USUAL: Invoke a parent's method
+;; Note: The 'send-usual-to-parent method is put in automatically by
+;; define-class.
+
+(define-macro (usual . args)
+	     `(ask dispatch 'send-usual-to-parent . ,args))
+
+
+;; DEFINE-CLASS:  Create a new class.
+
+; DEFINE-CLASS is a special form.  When you type (define-class body...)
+; it's as if you typed (make-definitions (quote body...)).  In other
+; words, the argument to DEFINE-CLASS isn't evaluated.  This makes sense
+; because the argument isn't Scheme syntax, but rather is the special
+; object-oriented programming language we're defining.
+; Make-definitions transforms the OOP notation into a standard Scheme
+; expression, then uses EVAL to evaluate the result.  (You'll see EVAL
+; again in chapter 4 with the metacircular evaluator.)
+
+; When you define a class named THING, for example, two global Scheme
+; variables are created.  The variable THING has as its value the
+; procedure that represents the class.  This procedure is invoked by
+; INSTANTIATE to create instances of the class.  A second variable,
+; THING-DEFINITION, has as its value the text of the Scheme expression
+; that defines THING.  This text is used only by SHOW-CLASS, the
+; procedure that lets you examine the result of the OOP-to-Scheme
+; translation process.
+
+(define-macro (define-class . body) (make-definitions body))
+
+(define (make-definitions form)
+  (let ((definition (translate form)))
+    (eval `(define ,(maknam (class-name form) '-definition) ',definition))
+    (eval definition)
+    (list 'quote (class-name form))))
+
+(define (show-class name)
+  (eval (maknam name '-definition)) )
+
+; TRANSLATE does all the work of DEFINE-CLASS.
+; The backquote operator (`) works just like regular quote (') except
+; that expressions proceeded by a comma are evaluated.  Also, expressions
+; proceeded by ",@" evaluate to lists; the lists are inserted into the
+; text without the outermost level of parentheses.
+
+(define (translate form)
+  (cond ((null? form) (error "Define-class: empty body"))
+	((not (null? (obj-filter form (lambda (x) (not (pair? x))))))
+	 (error "Each argument to define-class must be a list"))
+	((not (null? (extra-clauses form)))
+	 (error "Unrecognized clause in define-class:" (extra-clauses form)))
+	(else 
+	 `(define ,(class-name form)
+	    (let ,(class-var-bindings form)
+	      (lambda (class-message)
+		(cond
+		 ,@(class-variable-methods form)
+		 ((eq? class-message 'instantiate)
+		  (lambda ,(instantiation-vars form)
+		    (let ((self '())
+			  ,@(parent-let-list form)
+			  ,@(instance-vars-let-list form))
+		      (define (dispatch message)
+			(cond
+			 ,(init-clause form)
+			 ,(usual-clause form)
+			 ,@(method-clauses form)
+			 ,@(local-variable-methods form)
+			 ,(else-clause form) ))
+		      dispatch )))
+		 (else (error "Bad message to class" class-message)) )))))))
+
+(define *legal-clauses*
+  '(instance-vars class-vars method default-method parent initialize))
+
+(define (extra-clauses form)
+  (obj-filter (cdr form)
+	      (lambda (x) (null? (member (car x) *legal-clauses*)))))
+
+(define class-name caar)
+
+(define (class-var-bindings form)
+  (let ((classvar-clause (find-a-clause 'class-vars form)))
+    (if (null? classvar-clause)
+	'()
+	(cdr classvar-clause) )))
+
+(define instantiation-vars cdar)
+
+(define (parent-let-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (parent-and-args)
+	       (list (maknam 'my- (car parent-and-args))
+		     (cons 'instantiate-parent parent-and-args)))
+	     (cdr parent-clause)))))
+
+(define (instance-vars-let-list form)
+  (let ((instance-vars-clause (find-a-clause 'instance-vars form)))
+    (if (null? instance-vars-clause)
+	'()
+	(cdr instance-vars-clause))))
+
+(define (init-clause form)
+  (define (parent-initialization form)
+    (let ((parent-clause (find-a-clause 'parent form)))
+      (if (null? parent-clause)
+	  '()
+	  (map
+	   (lambda (parent-and-args)
+	     `(ask ,(maknam 'my- (car parent-and-args)) 'initialize self) )
+	   (cdr parent-clause) ))))
+  (define (my-initialization form)
+    (let ((init-clause (find-a-clause 'initialize form)))
+      (if (null? init-clause) '()
+	  (cdr init-clause))))
+  (define (init-body form)
+    (append (parent-initialization form)
+	    (my-initialization form) ))
+
+  `((eq? message 'initialize)
+    (lambda (value-for-self)
+      (set! self value-for-self)
+      ,@(init-body form) )))
+
+(define (variable-list var-type form)
+  (let ((clause (find-a-clause var-type form)))
+    (if (null? clause)
+	'()
+	(map car (cdr clause)) )))
+
+(define (class-variable-methods form)
+  (cons `((eq? class-message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? class-message ',variable) (lambda () ,variable)))
+	     (variable-list 'class-vars form))))
+
+(define (local-variable-methods form)
+  (cons `((eq? message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? message ',variable) (lambda () ,variable)))
+	     (append (cdr (car form))
+		     (variable-list 'instance-vars form)
+		     (variable-list 'class-vars form)))))
+
+(define (method-clauses form)
+  (map
+   (lambda (method-defn)
+     (let ((this-message (car (cadr method-defn)))
+	   (args (cdr (cadr method-defn)))
+	   (body (cddr method-defn)))
+       `((eq? message ',this-message)
+	 (lambda ,args ,@body))))
+   (obj-filter (cdr form) (lambda (x) (eq? (car x) 'method))) ))
+
+(define (parent-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (class) (maknam 'my- class))
+	     (map car (cdr parent-clause))))))
+
+(define (usual-clause form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	`((eq? message 'send-usual-to-parent)
+	  (error "Can't use USUAL without a parent." ',(class-name form)))
+	`((eq? message 'send-usual-to-parent)
+	  (lambda (message . args)
+	    (let ((method (get-method ',(class-name form)
+				      message
+				      ,@(parent-list form))))
+	      (if (method? method)
+		  (apply method args)
+		  (error "No USUAL method" message ',(class-name form)) )))))))
+
+(define (else-clause form)
+  (let ((parent-clause (find-a-clause 'parent form))
+	(default-method (find-a-clause 'default-method form)))
+    (cond
+     ((and (null? parent-clause) (null? default-method))
+      `(else (no-method ',(class-name form))))
+     ((null? parent-clause)
+      `(else (lambda args ,@(cdr default-method))))
+     ((null? default-method)
+      `(else (get-method ',(class-name form) message ,@(parent-list form))) )
+     (else
+      `(else (let ((method (get-method ',(class-name form)
+				       message
+				       ,@(parent-list form))))
+	       (if (method? method)
+		   method
+		   (lambda args ,@(cdr default-method)) )))))))
+
+(define (find-a-clause clause-name form)
+  (let ((clauses (obj-filter (cdr form)
+			     (lambda (x) (eq? (car x) clause-name)))))
+    (cond ((null? clauses) '())
+	  ((null? (cdr clauses)) (car clauses))
+	  (else (error "Error in define-class: too many "
+		       clause-name "clauses.")) )))
+
+(define (obj-filter l pred)
+  (cond ((null? l) '())
+	((pred (car l))
+	 (cons (car l) (obj-filter (cdr l) pred)))
+	(else (obj-filter (cdr l) pred))))
+
+(provide "obj")
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/small-world.scm b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/small-world.scm
new file mode 100644
index 0000000..dcd6bd1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project3/small-world.scm
@@ -0,0 +1,28 @@
+;;; small-world.scm
+;;; Miniature game world for debugging the CS61A adventure game project.
+;;; You can load this instead of adv-world.scm, and reload it quickly
+;;; whenever you change a class.
+
+;;; How to use this file:
+;;; If, for example, your person class doesn't work, and you do something
+;;; like (define Matt (instantiate person 'Matt)), and then fix your
+;;; person class definition, Matt is still bound to the faulty person
+;;; object from before.  However, reloading this file whenever you
+;;; change something should redefine everything in your world with the
+;;; currently loaded (i.e. most recent) versions of your classes.
+
+(define 61A-Lab (instantiate place '61A-Lab))
+(define Lounge (instantiate place 'Lounge))
+(can-go 61A-Lab 'up Lounge)
+(can-go Lounge 'down 61A-Lab)
+;;;  Hopefully you'll see more of the world than this in real life
+;;;  while you're doing the project!
+
+(define homework-box (instantiate thing 'homework-box))
+(ask 61A-Lab 'appear homework-box)
+
+(define Coke (instantiate thing 'Coke))
+(ask Lounge 'appear Coke)
+
+(define laba (instantiate person 'Lab-assistant 61A-Lab))
+
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo-meta.scm b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo-meta.scm
new file mode 100644
index 0000000..f66afdc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo-meta.scm
@@ -0,0 +1,371 @@
+;;; logo-meta.scm      Part of programming project #4
+
+;;; Differences between the book and this version:  Eval and apply have
+;;; been changed to logo-eval and logo-apply so as not to overwrite the Scheme
+;;; versions of these routines. An extra procedure initialize-logo has been
+;;; added. This routine resets the global environment and then executes the
+;;; driver loop. This procedure should be invoked to start the Logo
+;;; evaluator executing.  Note: It will reset your global environment and all
+;;; definitions to the Logo interpreter will be lost. To restart the Logo
+;;; interpreter without resetting the global environment, just invoke
+;;; driver-loop.  Don't forget that typing control-C will get you out of
+;;; the Logo evaluator back into Scheme.
+
+;;; Problems A1, A2, and B2 are entirely in logo.scm
+;;; Problems 3, 7, and up require you to find and change existing procedures.
+
+;;;  Procedures that you must write from scratch:
+
+;;; Problem B1    eval-line
+
+(define (eval-line line-obj env)
+  (error "eval-line not written yet!"))
+
+
+;;; Problem 4    variables  (other procedures must be modified, too)
+;;; data abstraction procedures
+
+(define (variable? exp)
+  #f)            ;; not written yet but we fake it for now
+
+(define (variable-name exp)
+  (error "variable-name not written yet!"))
+
+
+;;; Problem A5   handle-infix
+
+(define (de-infix token)
+  (cdr (assoc token '((+ . sum)
+		      (- . difference)
+		      (* . product)
+		      (/ . quotient)
+		      (= . equalp)
+		      (< . lessp)
+		      (> . greaterp)))))
+
+(define (handle-infix value line-obj env)
+  value)   ;; This doesn't give an error message, so other stuff works.
+
+
+;;; Problem B5    eval-definition
+
+(define (eval-definition line-obj)
+  (error "eval-definition not written yet!"))
+
+
+;;; Problem 6    eval-sequence
+
+(define (eval-sequence exps env)
+  (error "eval-sequence not written yet!"))
+
+
+
+
+;;; SETTING UP THE ENVIRONMENT
+
+(define the-primitive-procedures '())
+
+(define (add-prim name count proc)
+  (set! the-primitive-procedures
+	(cons (list name 'primitive count proc)
+	      the-primitive-procedures)))
+
+(add-prim 'first 1 first)
+(add-prim 'butfirst 1 bf)
+(add-prim 'bf 1 bf)
+(add-prim 'last 1 last)
+(add-prim 'butlast 1 bl)
+(add-prim 'bl 1 bl)
+(add-prim 'word 2 word)
+(add-prim 'sentence 2 se)
+(add-prim 'se 2 se)
+(add-prim 'list 2 list)
+(add-prim 'fput 2 cons)
+
+(add-prim 'sum 2 (make-logo-arith +))
+(add-prim 'difference 2 (make-logo-arith -))
+(add-prim '=unary-minus= 1 (make-logo-arith -))
+(add-prim '- 1 (make-logo-arith -))
+(add-prim 'product 2 (make-logo-arith *))
+(add-prim 'quotient 2 (make-logo-arith /))
+(add-prim 'remainder 2 (make-logo-arith remainder))
+
+(add-prim 'print 1 logo-print)
+(add-prim 'pr 1 logo-print)
+(add-prim 'show 1 logo-show)
+(add-prim 'type 1 logo-type)
+(add-prim 'make '(2) make)
+
+(add-prim 'run '(1) run)
+(add-prim 'if '(2) logo-if)
+(add-prim 'ifelse '(3) ifelse)
+(add-prim 'equalp 2 (logo-pred (make-logo-arith equalp)))
+(add-prim 'lessp 2 (logo-pred (make-logo-arith <)))
+(add-prim 'greaterp 2 (logo-pred (make-logo-arith >)))
+(add-prim 'emptyp 1 (logo-pred empty?))
+(add-prim 'numberp 1 (logo-pred (make-logo-arith number?)))
+(add-prim 'listp 1 (logo-pred list?))
+(add-prim 'wordp 1 (logo-pred (lambda (x) (not (list? x)))))
+
+(add-prim 'stop 0 (lambda () '=stop=))
+(add-prim 'output 1 (lambda (x) (cons '=output= x)))
+(add-prim 'op 1 (lambda (x) (cons '=output= x)))
+
+(define (pcmd proc) (lambda args (apply proc args) '=no-value=))
+(add-prim 'cs 0 (pcmd cs))
+(add-prim 'clearscreen 0 (pcmd cs))
+(add-prim 'fd 1 (pcmd fd))
+(add-prim 'forward 1 (pcmd fd))
+(add-prim 'bk 1 (pcmd bk))
+(add-prim 'back 1 (pcmd bk))
+(add-prim 'lt 1 (pcmd lt))
+(add-prim 'left 1 (pcmd lt))
+(add-prim 'rt 1 (pcmd rt))
+(add-prim 'right 1 (pcmd rt))
+(add-prim 'setxy 2 (pcmd setxy))
+(add-prim 'setx 1 (lambda (x) (setxy x (ycor)) '=no-value=))
+(add-prim 'sety 1 (lambda (y) (setxy (xcor) y) '=no-value=))
+(add-prim 'xcor 0 xcor)
+(add-prim 'ycor 0 ycor)
+(add-prim 'pos 0 pos)
+(add-prim 'seth 1 (pcmd setheading))
+(add-prim 'setheading 1 (pcmd setheading))
+(add-prim 'heading 0 heading)
+(add-prim 'st 0 (pcmd st))
+(add-prim 'showturtle 0 (pcmd st))
+(add-prim 'ht 0 (pcmd ht))
+(add-prim 'hideturtle 0 (pcmd ht))
+(add-prim 'shown? 0 shown?)
+(add-prim 'pd 0 (pcmd pendown))
+(add-prim 'pendown 0 (pcmd pendown))
+(add-prim 'pu 0 (pcmd penup))
+(add-prim 'penup 0 (pcmd penup))
+(add-prim 'pe 0 (pcmd penerase))
+(add-prim 'penerase 0 (pcmd penerase))
+(add-prim 'home 0 (pcmd home))
+(add-prim 'setpc 1 (pcmd setpc))
+(add-prim 'setpencolor 1 (pcmd setpc))
+(add-prim 'pc 0 pc)
+(add-prim 'pencolor 0 pc)
+(add-prim 'setbg 1 (pcmd setbg))
+(add-prim 'setbackground 1 (pcmd setbg))
+
+(add-prim 'load 1 meta-load)
+
+(define the-global-environment '())
+(define the-procedures the-primitive-procedures)
+
+;;; INITIALIZATION AND DRIVER LOOP
+
+;;; The following code initializes the machine and starts the Logo
+;;; system.  You should not call it very often, because it will clobber
+;;; the global environment, and you will lose any definitions you have
+;;; accumulated.
+
+(define (initialize-logo)
+  (set! the-global-environment (extend-environment '() '() '()))
+  (set! the-procedures the-primitive-procedures)
+  (driver-loop))
+
+(define (driver-loop)
+  (define (helper)
+    (prompt "? ")
+    (let ((line (logo-read)))
+      (if (not (null? line))
+  	  (let ((result (eval-line (make-line-obj line)
+				   the-global-environment)))
+	    (if (not (eq? result '=no-value=))
+		(logo-print (list "You don't say what to do with" result))))))
+    (helper))
+  (logo-read)
+  (helper))
+
+;;; APPLYING PRIMITIVE PROCEDURES
+
+;;; To apply a primitive procedure, we ask the underlying Scheme system
+;;; to perform the application.  (Of course, an implementation on a
+;;; low-level machine would perform the application in some other way.)
+
+(define (apply-primitive-procedure p args)
+  (apply (text p) args))
+
+
+;;; Now for the code that's based on the book!!!
+
+
+;;; Section 4.1.1
+
+;; Given an expression like (proc :a :b :c)+5
+;; logo-eval calls eval-prefix for the part in parentheses, and then
+;; handle-infix to check for and process the infix arithmetic.
+;; Eval-prefix is comparable to Scheme's eval.
+
+(define (logo-eval line-obj env)
+  (handle-infix (eval-prefix line-obj env) line-obj env))
+
+(define (eval-prefix line-obj env)
+  (define (eval-helper paren-flag)
+    (let ((token (ask line-obj 'next)))
+      (cond ((self-evaluating? token) token)
+            ((variable? token)
+	     (lookup-variable-value (variable-name token) env))
+            ((quoted? token) (text-of-quotation token))
+            ((definition? token) (eval-definition line-obj))
+	    ((left-paren? token)
+	     (let ((result (handle-infix (eval-helper #t)
+				       	 line-obj
+				       	 env)))
+	       (let ((token (ask line-obj 'next)))
+	       	 (if (right-paren? token)
+		     result
+		     (error "Too much inside parens")))))
+	    ((right-paren? token)
+	     (error "Unexpected ')'"))
+            (else
+	     (let ((proc (lookup-procedure token)))
+	       (if (not proc) (error "I don't know how  to " token))
+	       (logo-apply proc
+			   (collect-n-args (arg-count proc)
+					   line-obj
+					   env) ))) )))
+  (eval-helper #f))
+
+(define (logo-apply procedure arguments)
+  (cond ((primitive-procedure? procedure)
+         (apply-primitive-procedure procedure arguments))
+        ((compound-procedure? procedure)
+	 (error "Compound procedures not implemented yet."))
+        (else
+         (error "Unknown procedure type -- LOGO-APPLY " procedure))))
+
+(define (collect-n-args n line-obj env)
+  (cond ((= n 0) '())
+	((and (< n 0) (not (ask line-obj 'empty?)))
+	 (let ((token (ask line-obj 'next)))
+	   (ask line-obj 'put-back token)
+	   (if (right-paren? token)
+	       '()
+      	       (let ((next (logo-eval line-obj env)))
+        	 (cons next
+	      	       (collect-n-args (- n 1) line-obj env)) ))))
+	(else      
+      	 (let ((next (logo-eval line-obj env)))
+           (cons next
+	      	 (collect-n-args (- n 1) line-obj env)) ))))
+
+;;; Section 4.1.2 -- Representing expressions
+
+;;; numbers
+
+(define (self-evaluating? exp) (number? exp))
+
+;;; quote
+
+(define (quoted? exp)
+  (or (list? exp)
+      (eq? (string-ref (word->string (first exp)) 0) #\")))
+
+(define (text-of-quotation exp)
+  (if (list? exp)
+      exp
+      (bf exp)))
+
+;;; parens
+
+(define (left-paren? exp) (eq? exp left-paren-symbol))
+
+(define (right-paren? exp) (eq? exp right-paren-symbol))
+
+;;; definitions
+
+(define (definition? exp)
+  (eq? exp 'to))
+
+;;; procedures
+
+(define (lookup-procedure name)
+  (assoc name the-procedures))
+
+(define (primitive-procedure? p)
+  (eq? (cadr p) 'primitive))
+
+(define (compound-procedure? p)
+  (eq? (cadr p) 'compound))
+
+(define (arg-count proc)
+  (caddr proc))
+
+(define (text proc)
+  (cadddr proc))
+
+(define (parameters proc) (car (text proc)))
+
+(define (procedure-body proc) (cdr (text proc)))
+
+;;; Section 4.1.3
+
+;;; Operations on environments
+
+(define (enclosing-environment env) (cdr env))
+
+(define (first-frame env) (car env))
+
+(define the-empty-environment '())
+
+(define (make-frame variables values)
+  (cons variables values))
+
+(define (frame-variables frame) (car frame))
+(define (frame-values frame) (cdr frame))
+
+(define (add-binding-to-frame! var val frame)
+  (set-car! frame (cons var (car frame)))
+  (set-cdr! frame (cons val (cdr frame))))
+
+(define (extend-environment vars vals base-env)
+  (if (= (length vars) (length vals))
+      (cons (make-frame vars vals) base-env)
+      (if (< (length vars) (length vals))
+          (error "Too many arguments supplied " vars vals)
+          (error "Too few arguments supplied " vars vals))))
+
+(define (lookup-variable-value var env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((equal? var (car vars))
+             (car vals))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable " var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (set-variable-value! var val env)
+  (define (env-loop env)
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (env-loop (enclosing-environment env)))
+            ((equal? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (if (eq? env the-empty-environment)
+        (error "Unbound variable -- SET! " var)
+        (let ((frame (first-frame env)))
+          (scan (frame-variables frame)
+                (frame-values frame)))))
+  (env-loop env))
+
+(define (define-variable! var val env)
+  (let ((frame (first-frame env)))
+    (define (scan vars vals)
+      (cond ((null? vars)
+             (add-binding-to-frame! var val frame))
+            ((equal? var (car vars))
+             (set-car! vals val))
+            (else (scan (cdr vars) (cdr vals)))))
+    (scan (frame-variables frame)
+          (frame-values frame))))
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo.scm b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo.scm
new file mode 100644
index 0000000..d957e7f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/logo.scm
@@ -0,0 +1,179 @@
+;;; logo.scm         part of programming project #4
+
+
+;;; Problem A1   make-line-obj
+
+(define (make-line-obj text)   
+  (error "make-line-obj not written yet!")) 
+
+
+;;; Problem A2   logo-type
+
+(define (logo-type val)   
+  (error "logo-type not written yet!")) 
+
+(define (logo-print val)   
+  (logo-type val)  
+  (newline) 
+  '=no-value=) 
+
+(define (logo-show val)   
+  (logo-print (list val)))   
+
+
+
+;;; Problem 4   variables   (logo-meta.scm is also affected)
+
+(define (make env var val) 
+  (error "make not written yet!") 
+  '=no-value=) 
+
+
+;;; Here are the primitives RUN, IF, and IFELSE.  Problem B2 provides
+;;; support for these, but you don't have to modify them.   
+
+(define (run env exp)
+  (eval-line (make-line-obj exp) env))
+
+(define (logo-if env t/f exp) 
+  (cond ((eq? t/f 'true) (eval-line (make-line-obj exp) env))
+        ((eq? t/f 'false) '=no-value=)
+        (else (error "Input to IF not true or false " t/f))))  
+
+(define (ifelse env t/f exp1 exp2)  
+  (cond ((eq? t/f 'true) (eval-line (make-line-obj exp1) env))
+        ((eq? t/f 'false) (eval-line (make-line-obj exp2) env))   
+        (else (error "Input to IFELSE not true or false " t/f))))  
+
+
+;;; Problem B2   logo-pred
+
+(define (logo-pred pred)   
+  pred)      ;; This isn't written yet but we fake it for now.
+
+
+;;; Here is an example of a Scheme predicate that will be turned into  
+;;; a Logo predicate by logo-pred:  
+
+(define (equalp a b)
+  (if (and (number? a) (number? b))  
+      (= a b)   
+      (equal? a b)))   
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
+;;;  Stuff below here is needed for the interpreter to work but you  ;;;  
+;;;  don't have to modify anything or understand how they work.      ;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
+
+
+;;; The Logo reader
+
+(define left-paren-symbol (string->symbol (make-string 1 #\( )))
+(define right-paren-symbol (string->symbol (make-string 1 #\) )))
+(define quote-symbol (string->symbol (make-string 1 #\" )))
+
+(define (logo-read)  
+  (define lookahead #f)   
+  (define (logo-read-help depth)   
+    (define (get-char)  
+      (if lookahead  
+          (let ((char lookahead))   
+            (set! lookahead #f)   
+            char) 
+          (let ((char (read-char)))   
+            (if (eq? char #\\)
+                (list (read-char))  
+                char)))) 
+    (define (quoted char)   
+      (if (pair? char)   
+          char 
+          (list char)))  
+    (define (get-symbol char)   
+      (define (iter sofar char)
+        (cond ((pair? char) (iter (cons (car char) sofar) (get-char))) 
+              ((memq char  
+                     '(#\space #\newline #\+ #\- #\* #\/  
+                               #\= #\< #\> #\( #\) #\[ #\] ))
+               (set! lookahead char)   
+               sofar) 
+              (else (iter (cons char sofar) (get-char))) ))   
+      (string->word (list->string (reverse (iter '() char)))) )
+    (define (get-token space-flag)   
+      (let ((char (get-char)))   
+              (cond ((eq? char #\space) (get-token #t))  
+              ((memq char '(#\+ #\* #\/ #\= #\< #\> #\( #\) ))   
+               (string->symbol (make-string 1 char)))
+              ((eq? char #\-)   
+               (if space-flag  
+                   (let ((char (get-char)))   
+                     (let ((result (if (eq? char #\space)  
+                                       '- 
+                                       '=unary-minus=))) 
+                       (set! lookahead char)   
+                       result)) 
+                   '-)) 
+              ((eq? char #\[) (logo-read-help (+ depth 1)))  
+              ((pair? char) (get-symbol char))
+              ((eq? char #\")   
+               (let ((char (get-char)))   
+                 (if (memq char '(#\[ #\] #\newline))  
+                     (begin (set! lookahead char) quote-symbol)
+                     (string->symbol (word quote-symbol
+					   (get-symbol (quoted char)))))))
+	      (else (get-symbol char)) )))
+
+    (define (after-space)
+      (let ((char (get-char)))
+	(if (eq? char #\space)
+	    (after-space)
+	    char)))
+    (let ((char (get-char)))   
+      (cond ((eq? char #\newline)
+             (if (> depth 0) (set! lookahead char))   
+             '()) 
+	    ((eq? char #\space)
+	     (let ((char (after-space)))
+	       (cond ((eq? char #\newline)
+		      (begin (if (> depth 0) (set! lookahead char))
+			     '()))
+		     ((eq? char #\])
+		      (if (> depth 0) '() (error "Unexpected ]")))
+		     (else (set! lookahead char)
+			   (let ((token (get-token #t)))
+			     (cons token (logo-read-help depth)))))))
+            ((eq? char #\])   
+             (if (> depth 0) '() (error "Unexpected ]")))
+            ((eof-object? char) char)   
+            (else (set! lookahead char)
+                  (let ((token (get-token #f)))
+                    (cons token (logo-read-help depth)) ))))) 
+  (logo-read-help 0))  
+
+
+;;; Assorted stuff   
+
+(define (make-logo-arith op)   
+  (lambda args (apply op (map maybe-num args))))   
+
+(define (maybe-num val)
+  (if (word? val)
+      (string->word (word->string val))
+      val))
+
+(define tty-port (current-input-port))   
+
+(define (prompt string)   
+  (if (eq? (current-input-port) tty-port)
+  (begin (display string) (flush))))  
+
+(define (meta-load fn)   
+  (define (loader)  
+    (let ((exp (logo-read)))   
+      (if (eof-object? exp)   
+          '() 
+          (begin (eval-line (make-line-obj exp)
+			    the-global-environment) 
+		 (loader))))) 
+  (with-input-from-file (symbol->string fn) loader)
+  '=no-value=) 
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/obj.scm b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/obj.scm
new file mode 100644
index 0000000..d4a9d7a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/Project4/obj.scm
@@ -0,0 +1,279 @@
+;;; obj.scm version 4.0 5/18/2000
+;;; -- implementation of the object-oriented syntax
+;; By Matt Wright, based on a handout from MIT
+;; Revised for STk by Brian Gaeke - removed scm and procedure->macro
+
+;;; Utilities
+
+;; MAKNAM: create a new symbol whose name is the concatenation of the 
+;; names of those in the symbol list SYMBOLS.
+(define (maknam . symbols)
+  (string->symbol (apply string-append (map symbol->string symbols))))
+
+;; ASK: send a message to an object
+
+; The dot in the first line of the definition of ASK, below, makes it
+; take a variable number of arguments.  The first argument is associated
+; with the formal parameter OBJECT; the second with MESSAGE; any extra
+; actual arguments are put in a list, and that list is associated with
+; the formal parameter ARGS.  (If there are only two actual args, then
+; ARGS will be the empty list.)
+
+; APPLY takes two arguments, a procedure and a list, and applies the
+; procedure to the things in the list, which are used as actual
+; argument values.
+
+(define (ask object message . args)
+  (let ((method (object message)))
+    (if (method? method)
+	(apply method args)
+	(error "No method " message " in class " (cadr method)))))
+
+(define (no-method name)
+  (list 'no-method name))
+
+(define (no-method? x)
+  (if (pair? x)
+      (eq? (car x) 'no-method)
+      #f))
+
+(define (method? x)
+  (not (no-method? x)))
+
+
+;; INSTANTIATE and INSTANTIATE-PARENT:  Create an instance of a class
+
+; The difference is that only INSTANTIATE initializes the new object
+
+(define (instantiate class . arguments)
+  (let ((new-instance (apply (class 'instantiate) arguments)))
+    (ask new-instance 'initialize new-instance)
+    new-instance))
+
+(define (instantiate-parent class . arguments)
+  (apply (class 'instantiate) arguments))
+
+;; GET-METHOD: Send a message to several objects and return the first
+;; method found (for multiple inheritance)
+
+(define (get-method give-up-name message . objects)
+  (if (null? objects)
+      (no-method give-up-name)
+      (let ((method ((car objects) message)))
+	(if (method? method)
+	    method
+	    (apply get-method (cons give-up-name
+				    (cons message (cdr objects)) ))))))
+
+
+
+;; USUAL: Invoke a parent's method
+;; Note: The 'send-usual-to-parent method is put in automatically by
+;; define-class.
+
+(define-macro (usual . args)
+	     `(ask dispatch 'send-usual-to-parent . ,args))
+
+
+;; DEFINE-CLASS:  Create a new class.
+
+; DEFINE-CLASS is a special form.  When you type (define-class body...)
+; it's as if you typed (make-definitions (quote body...)).  In other
+; words, the argument to DEFINE-CLASS isn't evaluated.  This makes sense
+; because the argument isn't Scheme syntax, but rather is the special
+; object-oriented programming language we're defining.
+; Make-definitions transforms the OOP notation into a standard Scheme
+; expression, then uses EVAL to evaluate the result.  (You'll see EVAL
+; again in chapter 4 with the metacircular evaluator.)
+
+; When you define a class named THING, for example, two global Scheme
+; variables are created.  The variable THING has as its value the
+; procedure that represents the class.  This procedure is invoked by
+; INSTANTIATE to create instances of the class.  A second variable,
+; THING-DEFINITION, has as its value the text of the Scheme expression
+; that defines THING.  This text is used only by SHOW-CLASS, the
+; procedure that lets you examine the result of the OOP-to-Scheme
+; translation process.
+
+(define-macro (define-class . body) (make-definitions body))
+
+(define (make-definitions form)
+  (let ((definition (translate form)))
+    (eval `(define ,(maknam (class-name form) '-definition) ',definition))
+    (eval definition)
+    (list 'quote (class-name form))))
+
+(define (show-class name)
+  (eval (maknam name '-definition)) )
+
+; TRANSLATE does all the work of DEFINE-CLASS.
+; The backquote operator (`) works just like regular quote (') except
+; that expressions proceeded by a comma are evaluated.  Also, expressions
+; proceeded by ",@" evaluate to lists; the lists are inserted into the
+; text without the outermost level of parentheses.
+
+(define (translate form)
+  (cond ((null? form) (error "Define-class: empty body"))
+	((not (null? (obj-filter form (lambda (x) (not (pair? x))))))
+	 (error "Each argument to define-class must be a list"))
+	((not (null? (extra-clauses form)))
+	 (error "Unrecognized clause in define-class:" (extra-clauses form)))
+	(else 
+	 `(define ,(class-name form)
+	    (let ,(class-var-bindings form)
+	      (lambda (class-message)
+		(cond
+		 ,@(class-variable-methods form)
+		 ((eq? class-message 'instantiate)
+		  (lambda ,(instantiation-vars form)
+		    (let ((self '())
+			  ,@(parent-let-list form)
+			  ,@(instance-vars-let-list form))
+		      (define (dispatch message)
+			(cond
+			 ,(init-clause form)
+			 ,(usual-clause form)
+			 ,@(method-clauses form)
+			 ,@(local-variable-methods form)
+			 ,(else-clause form) ))
+		      dispatch )))
+		 (else (error "Bad message to class" class-message)) )))))))
+
+(define *legal-clauses*
+  '(instance-vars class-vars method default-method parent initialize))
+
+(define (extra-clauses form)
+  (obj-filter (cdr form)
+	      (lambda (x) (null? (member (car x) *legal-clauses*)))))
+
+(define class-name caar)
+
+(define (class-var-bindings form)
+  (let ((classvar-clause (find-a-clause 'class-vars form)))
+    (if (null? classvar-clause)
+	'()
+	(cdr classvar-clause) )))
+
+(define instantiation-vars cdar)
+
+(define (parent-let-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (parent-and-args)
+	       (list (maknam 'my- (car parent-and-args))
+		     (cons 'instantiate-parent parent-and-args)))
+	     (cdr parent-clause)))))
+
+(define (instance-vars-let-list form)
+  (let ((instance-vars-clause (find-a-clause 'instance-vars form)))
+    (if (null? instance-vars-clause)
+	'()
+	(cdr instance-vars-clause))))
+
+(define (init-clause form)
+  (define (parent-initialization form)
+    (let ((parent-clause (find-a-clause 'parent form)))
+      (if (null? parent-clause)
+	  '()
+	  (map
+	   (lambda (parent-and-args)
+	     `(ask ,(maknam 'my- (car parent-and-args)) 'initialize self) )
+	   (cdr parent-clause) ))))
+  (define (my-initialization form)
+    (let ((init-clause (find-a-clause 'initialize form)))
+      (if (null? init-clause) '()
+	  (cdr init-clause))))
+  (define (init-body form)
+    (append (parent-initialization form)
+	    (my-initialization form) ))
+
+  `((eq? message 'initialize)
+    (lambda (value-for-self)
+      (set! self value-for-self)
+      ,@(init-body form) )))
+
+(define (variable-list var-type form)
+  (let ((clause (find-a-clause var-type form)))
+    (if (null? clause)
+	'()
+	(map car (cdr clause)) )))
+
+(define (class-variable-methods form)
+  (cons `((eq? class-message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? class-message ',variable) (lambda () ,variable)))
+	     (variable-list 'class-vars form))))
+
+(define (local-variable-methods form)
+  (cons `((eq? message 'class-name) (lambda () ',(class-name form)))
+	(map (lambda (variable)
+	       `((eq? message ',variable) (lambda () ,variable)))
+	     (append (cdr (car form))
+		     (variable-list 'instance-vars form)
+		     (variable-list 'class-vars form)))))
+
+(define (method-clauses form)
+  (map
+   (lambda (method-defn)
+     (let ((this-message (car (cadr method-defn)))
+	   (args (cdr (cadr method-defn)))
+	   (body (cddr method-defn)))
+       `((eq? message ',this-message)
+	 (lambda ,args ,@body))))
+   (obj-filter (cdr form) (lambda (x) (eq? (car x) 'method))) ))
+
+(define (parent-list form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	'()
+	(map (lambda (class) (maknam 'my- class))
+	     (map car (cdr parent-clause))))))
+
+(define (usual-clause form)
+  (let ((parent-clause (find-a-clause 'parent form)))
+    (if (null? parent-clause)
+	`((eq? message 'send-usual-to-parent)
+	  (error "Can't use USUAL without a parent." ',(class-name form)))
+	`((eq? message 'send-usual-to-parent)
+	  (lambda (message . args)
+	    (let ((method (get-method ',(class-name form)
+				      message
+				      ,@(parent-list form))))
+	      (if (method? method)
+		  (apply method args)
+		  (error "No USUAL method" message ',(class-name form)) )))))))
+
+(define (else-clause form)
+  (let ((parent-clause (find-a-clause 'parent form))
+	(default-method (find-a-clause 'default-method form)))
+    (cond
+     ((and (null? parent-clause) (null? default-method))
+      `(else (no-method ',(class-name form))))
+     ((null? parent-clause)
+      `(else (lambda args ,@(cdr default-method))))
+     ((null? default-method)
+      `(else (get-method ',(class-name form) message ,@(parent-list form))) )
+     (else
+      `(else (let ((method (get-method ',(class-name form)
+				       message
+				       ,@(parent-list form))))
+	       (if (method? method)
+		   method
+		   (lambda args ,@(cdr default-method)) )))))))
+
+(define (find-a-clause clause-name form)
+  (let ((clauses (obj-filter (cdr form)
+			     (lambda (x) (eq? (car x) clause-name)))))
+    (cond ((null? clauses) '())
+	  ((null? (cdr clauses)) (car clauses))
+	  (else (error "Error in define-class: too many "
+		       clause-name "clauses.")) )))
+
+(define (obj-filter l pred)
+  (cond ((null? l) '())
+	((pred (car l))
+	 (cons (car l) (obj-filter (cdr l) pred)))
+	(else (obj-filter (cdr l) pred))))
+
+(provide "obj")
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume1/hw.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/hw.pdf
new file mode 100644
index 0000000..4bf9a8c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume1/hw.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/CS 61A Course Reader, Volume 2.html b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/CS 61A Course Reader, Volume 2.html
new file mode 100644
index 0000000..56f5a05
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/CS 61A Course Reader, Volume 2.html
@@ -0,0 +1,154 @@
+<html><head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8"><title>CS 61A Course Reader, Volume 2</title><style type="text/css">@namespace url(http://www.w3.org/1999/xhtml);
+@font-face {
+  font-family: 'EasyRead2';
+  font-style: normal;
+  font-weight: 400;
+  src: local('EasyRead2'), url(https://cdn.rawgit.com/PullJosh/files/gh-pages/Arial-LargePeriod2.woff) format('woff');
+}input[type="text"], input[type="textarea"], textarea {
+    font-family: "EasyRead2" !important;
+  }</style></head>
+<body>
+ 
+<center>
+<h1> CS61A: Structure and Interpretation of Computer Programs </h1>
+<h3> Course Reader, Volume 2: Reference Documents </h3>
+</center>
+
+<p><b>These documents are here for online reference!  Please do not print
+these on the printers in Berkeley computer labs.  Lab printers are for your
+homework and project solutions, not for reference documents.  Thank you.</b>
+
+</p><p>For many years I resisted the trend to putting course materials online,
+but I've been convinced because of the increasing numbers of people who
+aren't at Berkeley but use the
+<a href="http://wla.berkeley.edu/main.php?course=cs61a">online lectures</a>
+to study SICP.  Welcome, visitors!
+
+</p><ul>
+<li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/OOP/aboveline.pdf">
+Object-Oriented Programming: Above the Line View</a>
+</li><li>&nbsp;&nbsp;&nbsp;<a href="OOP/ref-man.pdf">
+Reference Manual for the OOP Language</a>
+</li><li><a href="OOP/belowline.pdf">
+Object-Oriented Programming: Below the Line View</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/gnuemacs.pdf">
+Highlights of GNU Emacs</a><sup>*</sup>
+</li><li>&nbsp;&nbsp;&nbsp;<a href="quick.pdf">
+Emacs Quick Reference Guide</a><sup>*</sup>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/exit.pdf">
+Exit Information (Read at end of semester!)</a>
+</li><li><a href="Therac-25.pdf">
+An Investigation of the Therac-25 Accidents</a><sup>**</sup>
+</li><li><a href="r5rs.pdf">
+Revised<sup>5</sup> Report on Scheme</a><sup>***</sup><br />
+(the last <i>real</i> version of Scheme before its hostile takeover
+by industrial programmers)
+</li><li><a href="mapreduce-osdi04.pdf">
+MapReduce: Simplified Data Processing on Large Clusters</a><sup>****</sup>
+</li><li>Sample Exams:
+<ul>
+<li><b>Please read this:</b>
+
+<p>These exams are made up of actual past exam questions, but reorganized to
+make each sample more comprehensive and to choose the best possible questions.
+Some of the exams are a little longer (by one question) than actual exams, but
+they're in the right ballpark.
+
+</p><p>Since the questions within a sample are taken from different semesters,
+don't try to compare the number of points between problems. The solutions
+include scoring information only to give you an idea of how part credit is
+awarded within each problem.
+
+</p></li><li>Midterm 1
+<ul>
+<li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Midterm1/mt1-1.pdf">
+Sample exam 1</a>
+</li><li><a href="Midterm1/mt1-1.soln.txt">
+Solutions to sample exam 1</a>
+</li><li><a href="Midterm1/mt1-2.pdf">
+Sample exam 2</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Midterm1/mt1-2.soln.txt">
+Solutions to sample exam 2</a>
+</li><li><a href="Midterm1/mt1-3.pdf">
+Sample exam 3</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Midterm1/mt1-3.soln.txt">
+Solutions to sample exam 3</a>
+</li></ul>
+</li><li>Midterm 2
+<ul>
+<li><a href="Midterm2/mt2-1.pdf">
+Sample exam 1</a>
+</li><li><a href="Midterm2/mt2-1.soln.txt">
+Solutions to sample exam 1</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Midterm2/mt2-2.pdf">
+Sample exam 2</a>
+</li><li><a href="Midterm2/mt2-2.soln.txt">
+Solutions to sample exam 2</a>
+</li><li><a href="Midterm2/mt2-3.pdf">
+Sample exam 3</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Midterm2/mt2-3.soln.txt">
+Solutions to sample exam 3</a>
+</li></ul>
+</li><li>Midterm 3
+<ul>
+<li><a href="Midterm3/mt3-1.pdf">
+Sample exam 1</a>
+</li><li><a href="Midterm3/mt3-1.soln.txt">
+Solutions to sample exam 1</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Midterm3/mt3-2.pdf">
+Sample exam 2</a>
+</li><li><a href="Midterm3/mt3-2.soln.txt">
+Solutions to sample exam 2</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Midterm3/mt3-3.pdf">
+Sample exam 3</a>
+</li><li><a href="Midterm3/mt3-3.soln.txt">
+Solutions to sample exam 3</a>
+</li></ul>
+</li><li>Final exam
+<ul>
+<li><a href="Final/f-1.pdf">
+Sample exam 1</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Final/f-1.soln.txt">
+Solutions to sample exam 1</a>
+</li><li><a href="Final/f-2.pdf">
+Sample exam 2</a>
+</li><li><a href="Final/f-2.soln.txt">
+Solutions to sample exam 2</a>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/Final/f-3.pdf">
+Sample exam 3</a>
+</li><li><a href="Final/f-3.soln.txt">
+Solutions to sample exam 3</a>
+</li></ul>
+</li></ul>
+</li><li><a href="mapreduce-osdi04.pdf">
+Mapreduce: Simplified Data Processing on Large Clusters</a><sup>****</sup>
+</li><li><a href="https://people.eecs.berkeley.edu/~bh/61a-pages/Volume2/notes.pdf">
+Lecture Notes</a>
+</li><li><a href="sicp-errata.txt">
+SICP Errata</a><sup>*****</sup>
+</li><li><a href="word.txt">
+Berkeley Word/Sentence Functions</a>
+</li><li>Ergonomic Information (external links):
+<ul>
+<li><a href="https://www.uhs.umich.edu/computerergonomics">
+Computer Workstation Ergonomics (UMich)</a>
+</li><li><a href="https://www.ors.od.nih.gov/sr/dohs/HealthAndWellness/Ergonomics/Pages/ergonomics_home.aspx">
+Ergonomics (NIH DOHS)</a>
+</li></ul>
+</li></ul>
+
+<p>
+*: Prof. Paul Hilfinger, UCB EECS<br>
+**: Nancy G. Leveson, Clark S. Turner. IEEE <cite>Computer</cite>, July 1993<br>
+***: Richard Kelsey, William Clinger, Jonathan Rees (Editors), et al., 1998<br>
+****: Jeffrey Dean, Sanjay Ghemawat, Google, Inc., OSDI 2004<br>
+*****: Harold Abelson, Gerald Jay Sussman, Julie Sussman, 1999
+</p><p>&nbsp;
+</p><p>&nbsp;
+</p><p>&nbsp;
+</p><p><a href="../Volume1/CS&#32;61A&#32;Course&#32;Reader,&#32;Volume&#32;1.html">Volume 1</a>
+</p><p><a href="../../61a-pages">Back to class web page</a>
+
+
+</p></body></html>
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-1.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-1.pdf
new file mode 100644
index 0000000..65ea079
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-1.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.pdf
new file mode 100644
index 0000000..d5d8ddb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.soln.txt
new file mode 100644
index 0000000..4f1a8a1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-2.soln.txt
@@ -0,0 +1,540 @@
+CS 61A		Solutions to sample final exam #2
+
+1.  HOFs in 21 project
+
+A higher order procedure is one that uses procedures as data -- either as
+arguments or as its return value.  Many people forgot about the latter.
+
+BEST-TOTAL takes a hand (a sentence) as argument and returns a number.
+No procedures; not higher order.
+
+STOP-AT-17 takes a hand (a sentence) and a card (a word) as arguments,
+returning #T or #F.  No procedures; not higher order.
+
+PLAY-N takes a strategy (which is a procedure!) and a number as arguments,
+returning a score.  It's higher order.
+
+STOP-AT takes a number as argument, returning a strategy -- a procedure.
+So it's higher order.
+
+MAJORITY takes three strategies as arguments and returns a strategy.
+Clearly higher order!
+
+
+Scoring: 2 points if correct; 1 point if all but one correct (usually
+leaving out STOP-AT).
+
+
+2.  Foo and baz.
+
+(foo 3) ==> (if 3 (foo #f) 5)
+        ==> (foo #f)
+        ==> (if #f (foo #f) 5)
+        ==> 5
+
+(baz 3) ==> (and 3 (baz #f) 5)
+        ==> (and (baz #f) 5)       ; since 3 is true
+        ==> (and (and #f (baz #f) 5) 5)
+        ==> (and #f 5)             ; inner AND is false
+        ==> #f
+
+Scoring: 1 point each.
+
+
+3.  Iterative and recursive.
+
+FOO is iterative; BAZ is recursive.
+
+In FOO, when IF decides to evaluate (foo #f), it already knows that whatever
+the answer from (foo #f) is will be the answer to the entire problem.
+
+In BAZ, after the (baz #f) returns, AND must check whether the answer is
+true or false.  If false (as, in fact, it is), then indeed the answer to
+(baz #f) is also the answer to (baz 3).  But AND didn't know that until the
+recursive call is complete!  If (baz #f) had been true, the answer would
+have been 5.
+
+A good one-sentence answer:  "An iterative process is one in which
+the caller has no more work to do once the recursive callee returns."
+
+Many people quoted sentences from the book, often the one about "deferred
+operations"; we accepted these if it sounded as if you might have some idea
+what it actually meant.
+
+Some people quoted a sentence about how something "depends on the return
+value" but mostly these answers were wrong: the answer to the overall
+problem does depend, in both cases, on the answer to the recursive call.
+The question is whether it also depends on anything else!
+
+Worst of all was "FOO is iterative because IF is a special form."
+Sorry -- AND is a special form, too!
+
+Scoring: 2 points if you had FOO iterative and BAZ recursive, with a
+convincing sentence.  1 point if you had FOO iterative and BAZ recursive.
+(If you had FOO recursive and/or BAZ iterative, we didn't even read your
+sentence.)
+
+
+4.  How are the pairs connected?
+
+We know that A's box and pointer diagram looks like this:
+
+A --> [1 . -]---> [2 . -]---> [ | . -]---> [6 . /]
+                                |
+                                V
+                               [3 . -]---> [4 . -]---> [5 . /]
+
+We also know that (CDDR B) is the same pair as (CADDR A), which is the pair
+whose car is 3.  Therefore the list (3 4 5) is shared between A and B, so
+the diagram is
+
+A --> [1 . -]---> [2 . -]---> [ | . -]---> [6 . /]
+                                |
+                                V
+ B --> [1 . -]---> [2 . -]---> [3 . -]---> [4 . -]---> [5 . /]
+
+We also know that (CADDR C) is *not* the same pair as (CADDR A), so the list
+C must have its own distinct pair with 3 in the car.  On the other hand,
+(CDADDR C) *is* the same as (CDDDR B), so the pairs with 4 and 5 in the cars
+are shared between C and the other lists:
+
+A --> [1 . -]---> [2 . -]---> [ | . -]---> [6 . /]
+                                |
+                                V
+ B --> [1 . -]---> [2 . -]---> [3 . -]---> [4 . -]---> [5 . /]
+                                          ^
+                                         /
+                               [3 . -]--/
+                                ^
+                                |
+C --> [1 . -]---> [2 . -]---> [ | . -]---> [6 . /]
+
+(Actually, we don't know whether or not A and C share the pair whose car is
+6.  But this will turn out not to affect the solution.)
+
+Now we make two changes to the box and pointer diagram, changing one of the
+threes to a seven, and changing the four to an eight:
+
+A --> [1 . -]---> [2 . -]---> [ | . -]---> [6 . /]
+                                |
+                                V
+ B --> [1 . -]---> [2 . -]---> [7 . -]---> [8 . -]---> [5 . /]
+                                          ^
+                                         /
+                               [3 . -]--/
+                                ^
+                                |
+C --> [1 . -]---> [2 . -]---> [ | . -]---> [6 . /]
+
+We can read the results directly from the diagram:
+
+B is (1 2 7 8 5)
+C is (1 2 (3 8 5) 6)
+
+Scoring: 1 point each.
+
+
+5.  OOP to normal Scheme
+
+(define (make-echo saved)
+  (let ((count 0))
+    (lambda (message)
+      (cond ((eq? message 'count) count)
+	    ((eq? message 'saved) saved)
+	    (else (set! count (+ count 1))
+		  (let ((result saved))
+		    (set! saved message)
+		    result))))))
+
+The code for the ELSE clause is exactly the code for the default-method
+in the OOP class definition!  We didn't understand why so many people
+invented much more complicated ways to do it -- or, worse, incorrect ways.
+
+Scoring:
+3  correct
+2  has the idea (at least a dispatch procedure inside the let)
+1  has an idea
+0  other
+
+Most people did okay on this, but a fairly frequent one-point answer had the
+LET (for COUNT) inside the LAMBDA instead of outside.  This means you missed
+the whole idea about local state variables.
+
+A noteworthy zero-point solution tried to avoid the problem that the inner
+LET solves this way:
+
+           (else (set! count (+ count 1))
+                 (display saved)               ; wrong wrong wrong!
+		 (set! saved message))
+
+By now everyone should understand that procedures return values, and that
+printing isn't the same as returning, because it doesn't allow for
+composition of functions, the most important programming technique you will
+ever learn.
+
+
+6.  mystery stream
+
+The stream is made by sticking a 1 in front of an interleave of the integers
+with something:
+
+1   1 ___ 2 ___ 3 ___ 4 ___ 5 ___ 6 ___ 7 ___ 8 ___ 9 ___ 10
+
+Then you just fill in the blanks with the elements of MYSTERY, including all
+of them -- the initial 1, the integers, and the underlined ones:
+
+1   1 _1_ 2 _1_ 3 _1_ 4 _2_ 5 _1_ 6 _3_ 7 _1_ 8 _4_ 9 _2_ 10
+
+
+Scoring: 3 points for the above solution.  2 points for small errors (such
+as one number missing); there weren't many of those.  1 point for the
+following wrong sequence:
+
+        1 1 1 2 1 3 2 4 1 5 3 6 2 7 4 8 1 9 5 10
+
+which is reached by forgetting about the initial 1 and trying to create
+(interleave mystery integers) instead, making the initial 1 part of the
+interleaved values.
+
+
+7.  Infix in metacircular evaluator.
+
+This was an interesting question because the most aesthetically pleasing
+solution isn't the easiest solution.
+
+This problem asks you to change the notation of expressions, not their
+meaning.  EVAL is about expressions; APPLY is about what it means to call a
+function.  So the right place for this change is in EVAL, changing the COND
+clause for procedure calls to this:
+
+      ((application? exp)
+       (let ((left (eval (operator exp) env)))
+	 (if (or (compound-procedure? left)
+		 (primitive-procedure? left))
+	     (apply left (list-of-values (operands exp) env))
+	     (if (= (length exp) 3)
+		 (apply (eval (cadr exp) env)
+			(list left (eval (caddr exp) env)))
+		 (error "Applying non-procedure" left)))))
+
+It's important to do the evaluating of subexpressions exactly right:  only
+once each (just in case the expression involves side effects), but before
+testing for procedureness (because it's the value that's a procedure -- or a
+number, if you're testing for numbers -- not the expression).  That's why I
+had to use a LET to save the result of evaluating the first subexpression.
+
+This is an important point, missed by many students.  The example in the
+exam was just (2 + 3), but it should also work to say (x + 3), or
+((2 * 5) + 3), and in those cases the first subexpression is not itself
+a number.  The *value* of the expression is a number.  Similarly, if you're
+looking at the second subexpression, the problem could be
+        (2 (car (list + - *)) 3)
+in which the second subexpression has an arithmetic operator as its value.
+
+All of that is avoided if you make the change in APPLY, where you take apart
+the arguments you're given and rearrange them if needed.  But it's not an
+aesthetically pleasing solution, partly because applying a procedure to
+arguments is a semantic operation that shouldn't know anything about the
+shape of the expression the user typed, and partly because it means
+disassembling an argument called "arguments" to look for a procedure in it,
+and using the argument called "procedure" as an argument.
+
+Another solution would be to have an intermediate step between EVAL and APPLY,
+like this:
+
+(define (eval exp env)
+  (cond ...
+	((application? exp) (check-infix (list-of-values exp env)))
+	...))
+
+(define (check-infix values)
+  (if (and (not (meta-procedure? (car values)))
+	   (= (length values) 3)
+	   (meta-procedure? (cadr values)))
+      (apply (cadr values) (cons (car values) (cddr values)))
+      (apply (car values) (cdr values))))
+
+(define (meta-procedure? thing)
+  (or (primitive-procedure? thing)
+      (compound-procedure? thing)))
+
+Some solutions treated the problem as one of syntactic rewriting, like
+changing a COND to an IF or vice versa.  This can work, except for the fact
+that you have to partly evaluate the expression in order to know whether or
+not to do the rewriting, and then you'll end up evaluating something twice.
+
+Another solution, very clever and elegant in its intent, has the same
+problem of double evaluation: rewriting the OPERATOR and OPERANDS selectors,
+similar in spirit to the way the selectors for a DEFINE expression recognize
+the implicit-lambda special case.  But in the DEFINE situation, we can tell
+just from the notation -- the syntax -- whether or not an implicit lambda is
+involved.  In the case of infix arithmetic we're not sure until we've
+evaluated some subexpressions.
+
+Other solutions reordered the expression by mutation.  We didn't take off
+for that if it was otherwise correct, but you should try not to develop the
+habit of mutating data structures that you get as arguments unless that's
+specifically in the "contract" with the caller of your procedure.  That same
+data structure might be shared with some other purpose.
+
+The intent of the problem was that *any* two-argument procedure should be
+usable in infix notation.  The problem statement says "[i]f a compound
+expression has three subexpressions, of which the second is a procedure but
+the first isn't..."  But since the problem statement did also mention "infix
+arithmetic," we accepted solutions that work only for the specific operator
+symbols +, -, *, and so on.  However, such solutions aren't very Schemely,
+since the binding of those symbols to arithmetic functions isn't guaranteed.
+A Scheme program could say
+
+        (let ((plus +) (+ word)) ...)
+
+and then the value of (+ 3 4) would be 34!
+
+Note how my solution checks for a procedure.  Strictly speaking, you can't
+use PROCEDURE? to check, because that's a Scheme primitive that checks for
+whether something is a procedure in the underlying Scheme, not a procedure
+in the metacircular Scheme.  But we didn't take off for this subtle error.
+
+
+Scoring:
+
+4  correct
+
+3  subexpression(s) evaluated twice
+   failure to check that the first subexpression isn't a procedure
+	[consider the case (map - '(4 5 6)) which isn't infix!]
+
+2  testing unevaluated subexpressions for being procedures or numbers
+
+1  no evaluation at all
+   infix works but prefix doesn't
+
+0  references to line-obj or other such Logo interpreter structures
+
+Of course not every error is listed above, but these are the common ones.
+
+
+8.  Logic programming
+
+(a) Less
+
+The solution we were expecting was this:
+
+(rule (less () (a . ?y)))           ; 0 < anything positive
+
+(rule (less (a . ?x) (a . ?y))      ; if x < y then x+1 < y+1
+      (less ?x ?y))
+
+Several variants were also okay.  The first rule above could be replaced by
+
+(rule (less () ?x)
+      (not (same ?x ())))
+
+but not just by
+
+(rule (less () ?x))       ; wrong!
+
+because that would allow the case 0 < 0, and not by
+
+(rule (less () (?x)))     ; wrong!
+
+because that only allows for 0 < 1, not for other larger numbers.  But
+having a 0 < 1 rule is okay if you also include a rule
+
+(rule (less ?x (a . ?y))            ; if x < y then x < y+1
+      (less ?x ?y))
+
+But it's quite wrong to have a rule, as many papers did, that if x < y
+then x+1 < y.  That's not true!
+
+(Some combinations of these rules would lead to the query system giving
+the same answer more than once, which is unaesthetic.  The first set of
+rules above avoid that.)
+
+Another approach would use PLUS, which you're given:
+
+(rule (less ?x ?y)
+      (plus ?x (a . ?z) ?y))
+
+This says that x < y if adding some positive number to x gives y.  This is
+elegant because a single rule handles all cases.
+
+
+(b) Divide
+
+Only one rule is needed:
+
+(rule (divide ?dividend ?divisor ?quotient ?remainder)
+      (and (times ?divisor ?quotient ?x)
+	   (plus ?x ?remainder ?dividend)
+	   (less ?remainder ?divisor)))
+
+The third clause is needed to prevent solutions such as 12/4 = 1 remainder 8.
+
+Many people included a lot of base case rules for dividing zero by things,
+dividing things by zero, and so on -- or wrote the rules to exclude zero by
+calling the divisor (a . ?foo).  None of this is necessary; there won't be
+any successful matches of this rule when the divisor is zero.  (This is
+easy to prove: the remainder would have to be less than zero!)
+
+The reason no base case is needed is that this is not a recursive rule;
+there is no reference to DIVIDE in the conditions of the rule.  There is
+still some recursion going on, but it's hidden inside the PLUS and TIMES
+rules.
+
+Scoring:  Each half was worth 2 points if correct, 1 point for a solution that
+has the general idea but with details wrong.  (A common mistake was to think
+that the remainder has to be less than the quotient, or less than the dividend.)
+
+No credit for composition of functions:
+
+  (plus (times ?divisor ?quotient) ?remainder ?dividend)  ; WRONG WRONG WRONG!!!
+
+
+9.  Environment diagram
+
+In the diagram there are three frames:
+
+G:  x=3, y=4, foo=P2 [see below]    (the global frame)
+E1: x=7, extends G
+E2: y=10, extends E1
+
+and two procedures:
+
+P1: parameter x, body (lambda (y) (+ x y)), created in G
+P2: parameter y, body (+ x y), created in E1
+
+When we define FOO, Scheme evaluates the expression
+
+     ( (lambda (x) (lambda (y) (+ x y)))
+       (+ x y) )
+
+The value of the first subexpression is procedure P1, created in the
+global environment (obviously, since it's the only one we have so far).
+The value of the second subexpression is 7, computed using the global
+values of X and Y.
+
+We invoke P1, creating environment E1, in which P1's parameter X is bound to
+the actual argument value 7.  In that new environment we evaluate the body
+of P1, which is another lambda expression, creating P2.
+
+Then DEFINE binds FOO to that result, P2, in the global environment.
+
+When we evaluate the expression (foo 10), environment E2 is created.  FOO's
+parameter Y is bound to the argument value 10, in the new frame.  Then we
+evaluate the body of P2, (+ x y), using the values in E2: x=7 (from E1),
+y=10.  So the answer is 17.
+
+
+Scoring: 1 point for the answer 17.  For the diagram, 3 points minus the
+number of mistakes.  In counting mistakes we looked for three frames,
+two procedures, and five arrows (two arrows extending environments,
+two arrows from procedures to environments, and the arrow binding FOO).
+
+There were too many rearrangement errors to classify, but one common error
+that's worth mention was to say that in E1, X is bound to x+y.  By the time
+E1 is created, we no longer know where the argument value 7 came from;
+that's what it means to say that Scheme uses applicative order.
+
+
+10.  Locate.
+
+The most elegant solution, I think, is this:
+
+(define (locate value struct)
+  (define (help struct fn)
+    (cond ((equal? value struct) fn)
+	  ((pair? struct)
+	   (or (help (car struct) (compose car fn))
+	       (help (cdr struct) (compose cdr fn))))
+	  (else #f)))
+  (help struct (lambda (x) x)))
+
+This is a case in which an iteration-like style, with a helper procedure
+with an extra argument, makes things simpler instead of more complicated.
+(It's not really iterative, of course, since there's a tree recursion,
+but the second recursion, for the cdr, *is* iterative.)
+
+Here's a more straightforward solution:
+
+(define (locate value struct)
+  (cond ((equal? value struct) (lambda (x) x))
+	((pair? struct)
+	 (let ((left (locate value (car struct))))
+	   (if left
+	       (compose left car)
+	       (let ((right (locate value (cdr struct))))
+		 (if right
+		     (compose right cdr)
+		     #f)))))
+	(else #f)))
+
+Note that for both the car and the cdr you have to check whether the
+recursive call actually returned a procedure, rather than #F, before you
+try to compose the procedure with something.
+
+Instead of using COMPOSE you could equivalently use lambda expressions:
+               (lambda (x) (left (car x)))
+
+Notice, by the way, that the iterative-style solution does the composing
+backwards from the recursive-style solution; this is analogous to the list
+reversal that plagues iterative solutions to list-building problems.
+
+One point that many students missed is that the problem says "If the value
+is not found in the structure, LOCATE should return #F" -- not a procedure
+that returns #F!  So you can't say
+
+(define (locate value struct)
+  (lambda (other-struct) ...))         ; wrong
+
+Another commonly missed point is that the problem does *not* say the values
+have to be atomic.  (locate '(a b) '(x y (a b) z)) should work, returning
+the procedure caddr.  In particular, this means that solutions that flatten
+the structure into a simple sequence of atoms, although clever in a way,
+miss the point and aren't satisfactory.
+
+Even worse were the solutions that assume the values are numbers, just
+because the given example had numbers.  A relatively mild version of that
+was to use = for equality checking; much worse was to use list-ref to look
+for the desired element.
+
+A couple of students used AMB in their solutions.  Although we had in mind
+a solution using standard Scheme, we would have allowed this, because it's
+such an appropriate idea -- the problem involves backtracking, so a
+nondeterministic solution makes sense.  But actually getting it right is
+tricky, and nobody managed it:
+
+(define (locate value struct)
+  (define (locate1)
+    (define (help struct fn)
+      (cond ((equal? value struct) fn)
+	    (else (require (pair? struct))
+		  (let ((cxr (amb car cdr)))
+		    (help (cxr struct) (compose cxr fn))))))
+    (help struct (lambda (x) x)))
+  (amb (locate1) #f))
+
+That LOCATE1 subprocedure is required because in case of failure, the
+natural response of the nondeterministic evaluator is to print a message
+saying no more values were found, but we want it to return #F to some
+calling procedure.
+
+Many students made the program much more complicated than necessary, with
+special cases for (car struct), (cadr struct), etc.  Partly this is because
+students don't believe in leaf nodes of trees, and partly it's because
+some students found a somewhat similar problem, called SELECT, in a previous
+exam in the course reader.  But SELECT really did require complications,
+because the first element of a sublist had a special meaning in that problem.
+Here the elements are treated uniformly.
+
+
+Scoring:
+
+4  correct
+3  small errors (typical: only works for atoms, only works if no #F in a list,
+   returns (lambda (x) #f) instead of #f)
+2  has the idea (domain and range correct, uses tree recursion) but
+   more serious errors
+1  not tree recursive (typical: if the car is a list, and doesn't have the
+   value, then the cdr isn't checked)
+0  incoherent
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-3.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-3.soln.txt
new file mode 100644
index 0000000..0c4cc82
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Final/f-3.soln.txt
@@ -0,0 +1,1125 @@
+CS 61A		Solutions to sample final exam #3
+
+1.  Domain and range
+
+The domain of a procedure is the TYPE of thing(s) it accepts as argument(s).
+The range is the TYPE of thing it returns.  So we wanted types as the answers
+to this question.  That's generally what you gave for the domain, but for the
+range, several people instead gave explanations of the purpose of the
+procedure, e.g., "Range: the children of the tree node."
+
+(a) CHILDREN
+
+CHILDREN takes one argument, a Tree (which is the same as a node).
+It returns a forest, which is a list of Trees.  So:
+
+	Domain: TREE or NODE
+	Range:  FOREST or LIST OF TREES or just LIST
+
+Most people got this one.
+
+(b) OWNER
+
+OWNER takes one argument, a THING object.  It returns the *name of* the
+person who owns the thing (not the person, not the name of the thing).
+A name is a word, not an object!  So:
+
+	Domain: OBJECT or THING OBJECT or THING INSTANCE
+	Range:  WORD
+
+We also accepted NAME for the range, although that isn't really a type.
+The most common wrong answer for the range was PERSON; that's a kind of
+object, not a word.  A fairly common wrong answer for the domain was CLASS;
+the procedure takes a particular thing as its argument, not the class of all
+things.  Another common wrong answer was PROCEDURE; it's true that we use
+procedures to represent objects, but not every procedure is an object, and
+not every procedure can be used as the argument to OWNER.
+
+(c) SET-CDR!
+
+SET-CDR! takes two arguments; the first must be a pair, and the second can be
+of any type.  Its return value is unspecified, since it is used for its effect
+rather than for its return value, so we accepted anything for the range in
+this part.
+
+	Domain: PAIR and ANYTHING (you had to say both).
+	Range:  UNSPECIFIED (but we accepted anything).
+
+We didn't accept LIST for the domain; there is no requirement that the first
+argument to SET-CDR! be a pair whose cdr is a list (which is what it means for
+a pair to be a list).  Also, the LIST domain would include the empty list,
+which can't be used as the first argument to SET-CDR!.
+
+Scoring: One point each, all or nothing.
+
+
+2.  Data abstraction
+
+The argument is a LIST of RATIONALs.  For the list itself, the appropriate
+selectors are CAR and CDR.  (Constructors for lists include CONS, LIST, and
+APPEND, but in this problem we are not constructing a list!)  For a rational
+number, the constructor is MAKE-RAT and the selectors are NUMER and DENOM.
+So the corrected version is
+
+(define (ratprod lst)
+  (define (helper lst n d)
+    (if (null? lst)
+	(MAKE-RAT n d)
+	(helper (CDR lst) (* n (NUMER (CAR lst)) (* d (DENOM (CAR lst)))))))
+  (helper lst 1 1))
+
+The call to CDR doesn't change because it is selecting part of a list, not
+part of a single rational number.  The calls to CAAR and CDAR do change,
+as shown above; they both select the first element of the list (CAR), and
+each then selects one piece of a rational number (NUMER or DENOM).
+
+Scoring: -1 point per error, either a required change not made or something
+changed that shouldn't have been.  But 0 points if no correct change was
+made at all (e.g., if the question was left blank).
+
+
+3.  Order of growth
+
+(a)
+
+(define (two-to-the n)
+  (if (zero? n)
+      1
+      (let ((prev (two-to-the (- n 1))))
+	(* prev 2) )))
+
+Each call to this procedure does three constant-time operations (ZERO?, -,
+and *) in addition to making one recursive call.  So there are N recursive
+calls, each of which takes constant time.  Therefore, this procedure takes
+time Theta(N).
+
+(b)
+
+(define (two-to-the n)
+  (if (zero? n)
+      1
+      (let ((prev (two-to-the (- n 1))))
+	(+ prev prev) )))
+
+The only difference here is (+ PREV PREV) instead of (* PREV 2).  This
+is still a single, constant-time arithmetic operation, although both operands
+are the variable PREV rather than including the explicit number 2.  But
+finding the value of a variable is also constant time, so this doesn't affect
+the program's running time, which is still Theta(N).
+
+(c)
+
+(define (two-to-the n)
+  (if (zero? n)
+      1
+      (+ (two-to-the (- n 1))
+	 (two-to-the (- n 1)) )))
+
+In this version, each call to TWO-TO-THE gives rise to *two* recursive
+calls.  So, for example, (two-to-the 5) calls (two-to-the 4) twice; each
+of those makes two calls, for a total of four calls of (two-to-the 3).
+Similarly, there are eight (two-to-the 2) calls and 16 of (two-to-the 1).
+Increasing N by 1 doubles the total number of recursive calls, so the
+running time for this procedure is exponential, Theta(2^N).
+
+The most common error was to think that the last version was Theta(N^2).
+
+Scoring: One point each.
+
+
+4.  Functions of functions.
+
+The point of this question is to illustrate some of the ways in which
+functions can be manipulated on their own, without explicit reference to
+the arguments of the functions.  You've seen COMPOSE before, in lecture;
+the other two tools given here are similar in spirit.
+
+One way to think about these questions would be to try writing the
+desired procedure without using COMPOSE, SPECIALIZE, or SWAP-ARGS, and
+then think about how you did it.
+
+[a] INITIALS
+
+(define (initials sent)
+  (every first sent))
+
+So INITIALS is a specialized version of EVERY, in which the first
+(procedure) argument is FIRST.  Thus we have the answer:
+
+(define initials (specialize every first))
+
+
+[b] POSITIVE?
+
+(define (positive num)
+  (> num 0))
+
+This is a specialization of >, in which the *second* argument is held
+constant (zero), not the first argument as in INITIALS.  So SPECIALIZE
+won't quite do the job by itself.  One solution would be to use <
+instead of >:
+
+(define (positive num)
+  (< 0 num))
+
+(define positive (specialize < 0))
+
+but that wasn't one of the choices.  Instead we use SWAP-ARGS to get
+the arguments in the right order:
+
+(define positive (specialize (swap-args >) 0))
+
+
+[c] LEAF?
+
+(define (leaf? node)
+  (null? (children node))
+
+This is a composition of functions:
+
+(define leaf? (compose null? children))
+
+
+Scoring: One point each.
+
+
+5.  Mystery function on Trees
+
+(define (mystery tree)
+  (if (null? (children tree))
+      (make-tree (datum tree) '())
+      (make-tree (+ (datum tree) 100)
+		 (map mystery (cdr (children tree))))))
+
+This function says:  If the node is a leaf, return a leaf node with the
+same datum.  (This is actually unnecessarily complicated; it could have
+just returned the argument TREE itself, since the node it constructs has
+the same datum and the same (empty) children.)  If the node isn't a leaf,
+add 100 to its datum, and recursively apply the same function to its
+children, but omit the first child (because of the CDR call).
+
+In the given tree, the root node (datum 1) has three children, so we add
+100 to its datum (giving 101), we omit the subtree headed by the node with
+datum 2, and we recursively process nodes 3 and 4.
+
+Node 3 (I'm using this as an abbreviation for "the node with datum 3" and
+similarly for the other nodes) has two children, so we add 100 to its
+datum, omit the first child (6), and recursively process the other child
+(node 7).
+
+Node 7 has no children, so we just return a leaf with datum 7.
+
+Node 4 has one child.  So we add 100 to its datum, omit its first (only)
+child 8, and recursively process its other children -- but there aren't
+any, so the node with datum 104 will be a leaf node in the resulting tree.
+
+Omitting a node doesn't just mean omitting the datum of that node; we
+never look at its children either.  So we don't have to think about nodes
+5, 9, and 10.
+
+Don't forget that this function builds a new tree!  It doesn't mutate the
+argument tree.  In particular, one common wrong answer was to return a
+tree with 10 nodes, just like the argument tree, but with 100 added to
+some of the data.  The correct answer is a tree with only the four nodes
+mentioned earlier as part of the result:
+
+			       101
+			      /   \
+			    103   104
+			     |
+			     7
+
+Another too-common mistake was to draw a tree in which some nodes have
+lists as the datum.  For example, the child of the 103 node was shown as
+having (7) as its datum, or the 104 node had a child with the empty list
+as its datum.  These errors, I think, come from not respecting the data
+abstraction, but instead trying to translate the tree selectors and
+constructor into operations on pairs.  As you can see from the explanation
+above, there is no need to think about how tree nodes are represented!  The
+only pair operation used is the CDR in the procedure, and that's because
+(CHILDREN TREE) returns a forest -- a list of trees -- rather than a single
+tree node.
+
+Several people thought that a Scheme error would result from the expression
+
+	(map mystery (cdr (children tree)))
+
+when it is applied to the 4 node, which has only one child, because in this
+case the expression is equivalent to
+
+	(map mystery '())
+
+But there's nothing wrong with this -- MAP is happy to take the empty list
+as its second argument, in which case it returns the empty list without
+ever calling MYSTERY.  Empty lists are legitimate lists!
+
+
+Scoring:
+
+5  Correct.
+
+4  Correct except that instead of 101, 103, and 104, the values in those
+   nodes are computed by some different arithmetic; most commonly these
+   nodes have the data 101, 301, and 401.  Node 7 must be correct.
+
+3  Right shape, but one incorrect datum (most often 107 instead of 7).
+
+2  The four correct nodes plus one or two extras, including the case of
+   "error" as a child of node 104.
+
+2  The solution obtained by ignoring the CDR in the procedure: 10 nodes
+   in the same shape as the original, but with 1, 2, 3, 4, and 8 changed
+   to 101, 102, 103, 104, and 108.
+
+0  "Error" as the complete answer without an explanation.
+
+0  Any list structure in the tree data.
+
+0  Anything else, including the "mutation" solution mentioned earlier with
+   10 nodes like the original but with 1, 3, and 4 changed to 101, 103, 104.
+
+
+
+6.  Scheme to OOP
+
+We are given
+
+(define foo
+  (let ((a 3))
+    (LAMBDA (B)			;; This is the class FOO
+      (let ((c 4))
+	(LAMBDA (MESSAGE)	;; This is the instance's dispatch procedure
+	  (cond ((eq? message 'hi)
+		 (+ a b))
+		(else
+		 (+ c message))))))))
+
+The scope of the LET variable A encloses the procedure representing the class,
+so it's a class variable.  B is an argument to the class, so it's an
+instantiation variable.  And C is inside the scope of the class, but outside
+the scope of the instance, so it's an instance variable -- each instance has
+its own C.  Therefore:
+
+(define-class (foo b)
+  (class-vars (a 3))
+  (instance-vars (c 4))
+  (method (hi)
+    (+ a b))
+  (default-method
+    (+ c message)))
+
+The dispatch procedure looks explicitly for the message HI and provides
+a method for it; the ELSE clause in the dispatch procedure handles any
+other message, so it's a default method.
+
+Most people got the translation of the LET expressions for A and C right,
+although a few people reversed them and a few people thought A and C were
+the same kind of variable.  B was trickier; some people didn't realize
+that that LAMBDA represents the class, and instead thought that B was a
+formal parameter of a method.
+
+Similarly, some people thought the inner LAMBDA expression represents a
+method rather than a dispatch procedure, so they wrote methods with
+MESSAGE as a parameter.
+
+As in any object class definition, it's possible to have only a default
+method that checks for particular messages explicitly:
+
+  (default-method
+    (if (eq? message 'hi)
+	(+ a b)
+	(+ c message)))
+
+and we accepted that, although it's contrary to the spirit of OOP.  But
+most people who were confused about the meaning of the inner LAMBDA came
+up with incorrect solutions, such as
+
+  (method (hi message b) ...)
+  (default-method (message) ...)
+  (method (hi) (if ...))
+
+Scoring:  The correct solution has five components: the use of B as an
+instantiation variable, and the four clauses within the define-class (A, C,
+HI, and DEFAULT-METHOD).  We subtracted one point for each missing or
+incorrect component.  Incorrect solutions that tried to combine the HI
+method with the default method lost both points, except for the
+  (method (hi) (if ...))
+version (no parameter to HI!), which lost only one point for the methods.
+
+
+7.  Environment diagrams
+
+The diagrams have many features in common:  They all have a global frame
+and an additional frame E1; they all have a symbol F bound to a procedure.
+But there are two things that differ among diagrams:
+
+	* The symbol F is in frame G (diagrams A and B) or in frame
+	  E1 (diagrams C and D).
+
+	* The procedure's right bubble points to frame G (diagrams
+	  A and C) or to frame E1 (diagrams B and D).
+
+So, to figure out this question, for each of the four Scheme programs we
+have to ask "where is the procedure created?" and "where is F bound?"
+
+(let ((f (lambda (x) x)))
+ 'okay) 
+
+	Here the LAMBDA expression is evaluated in the global environment,
+	because LET value expressions are evaluated *before* the implicit
+	procedure created by the LET is invoked.  But the binding for F is
+	made locally, in the frame E1 that's created by the LET.  So this
+	is diagram C: procedure points to G, F bound in E1.
+
+(define f
+ (let ()
+   (lambda (x) x)))
+
+	This time the LAMBDA expression is evaluated in the body of the LET,
+	so its current environment is E1, and so that's what the right bubble
+	remembers.  But the DEFINE is in the global environment, so that's
+	where F is bound.  This is diagram B: procedure points to E1, F
+	bound in G.
+
+(let ()
+ (define f (lambda (x) x)))
+
+	This time both the LAMBDA and the DEFINE are in the body of the LET,
+	so both of them have E1 as the current environment.  This is diagram
+	D: procedure points to E1, F bound in E1.
+
+(define (f) f)
+(f)
+
+	Here we have a straightforward global definition of a procedure F,
+	so both the (implicit) LAMBDA and the DEFINE happen in G.  So this
+	is diagram A: procedure points to G, F bound in G.  (Frame E1 is
+	created by the second, separate expression, which invokes F.)
+
+Most students got this correct.  The most common wrong answer was DBCA.
+Choosing D for the first expression comes from the frequent misunderstanding
+in which students think that the expressions that provide the values for the
+LET variables are evaluated inside the scope of the LET.  I'm not sure how
+anyone would choose C for the third expression, but probably it's because you
+assumed (correctly) that each diagram was used once.
+
+Scoring: one point each.
+
+
+8.  CADR for message-passing pairs
+
+A pair made by MAKE-PAIR can handle CAR and CDR messages directly because
+its local state variables X and Y contain the desired values.  But in order
+to handle the CADR message, it has to find its own CDR (which is Y) and
+send a CAR message to that other pair:
+
+(define (make-pair x y)
+  (lambda (msg)
+    (cond ((eq? msg 'car) x)
+	  ((eq? msg 'cdr) y)
+	  ((EQ? MSG 'CADR) (Y 'CAR))	;; <<=== This line added!
+	  (else (error "I have no idea what you're talking about.")) )))
+
+One common mistake was (ASK Y 'CAR); this has the idea, but we're using
+plain Scheme message passing, not the OOP language.
+
+Many students used roundabout means to find the pair's CDR, such as
+
+	   ((eq? msg 'cadr) (((make-pair x y) 'cdr) 'car))
+
+presumably because you mistrusted a simple Y as something you can invoke.
+This works, but it really violates the spirit of the problem -- it creates a
+new pair every time you look at the pair -- and didn't get full credit.
+
+Another common error was (CAR Y).  Unless you explicitly redefine CAR to
+use the message-passing pairs, this will invoke the ordinary CAR that
+expects a built-in Scheme pair as its argument, not a procedure.  We
+named the pair constructor MAKE-PAIR rather than CONS to make it clear
+that we didn't mean to eliminate the regular pairs, and our example says
+(ABC 'CAR) rather than (CAR ABC).
+
+Of course the worst mistake was to build the specific example ABC into
+the solution!
+
+Scoring:
+
+3  Correct.
+
+2  (ASK Y 'CAR)
+
+2  (X 'CDR)		; this would give the CDAR, not the CADR.
+
+2  Working solutions that call MAKE-PAIR.
+
+1  (X 'CAR) or (Y 'CDR)	; CAAR and CDDR.
+
+0  Anything else, including (CAR Y).
+
+
+
+9.  List mutation.
+
+Here is the box-and-pointer diagram *before* doing any mutation:
+
+---> XX------------> XX------------> X/
+     |               |               |
+     V               V               V
+
+     XX---> X/       XX---> X/       E
+     |      |        |      |
+     V      V        V      V
+
+     A      B        C      D
+
+The expression (SET-CAR! (CADR LST) (CDDR LST)) modifies the pair that is
+the CADR of the original list -- the CAR of the CDR.  (CDR LST) is the
+second pair of the spine, in the top row.  CAR of that pair is the first
+pair in the spine of the sublist (C D).  So we are going to change the CAR
+of that pair, replacing C with something.  With what?  With the value of
+(CDDR LST), the second argument to SET-CAR!.  (CDDR LST) is the third
+pair of the spine of the entire list, the one whose CAR is E.  So after
+this first mutation we have
+
+---> XX------------> XX---------->-> X/
+     |               |          /    |
+     V               V          *    V
+                                *
+     XX---> X/       XX---> X/  *    E
+     |      |        *      |   *
+     V      V        *      V   *
+                     *          *
+     A      B        *      D   *
+                     *          *
+                     ************
+
+The second mutation, (SET-CAR! (CAR LST) (CADDR LST)), modifies (CAR LST),
+which is the first element of the big list -- the first pair of the spine
+of the sublist (A B).  We change the CAR of this pair, so that instead of
+pointing to A, it points to the CADDR of the big list, which is the third
+element, the symbol E:
+
+---> XX------------> XX---------->-> X/
+     |               |          /    |
+     V               V          *    V
+                                *
+     XX---> X/       XX---> X/  *    E
+     *      |        *      |   *
+     *      V        *      V   *    ^
+     *               *          *    *
+     *      B        *      D   *    *
+     *               *          *    *
+     *               ************    *
+     *                               *
+     *********************************
+
+Notice that the first mutation points to a pair, not to E, but the second
+one points to E.  This is the difference between (CDDR LST) and (CADDR LST).
+
+It's okay if you draw another E underneath the relevant pair, instead of
+drawing an arrow over to the original E.  Since two equal symbols are always
+EQ, it's not important to distinguish two equal symbols in the diagram.
+
+The third mutation is (SET-CDR! (CAR LST) (CDAR LST)).  This says, "change
+the CDR of (CAR LST) to the CDR of (CAR LST)"!  In other words, it doesn't
+really change anything:
+
+---> XX------------> XX---------->-> X/
+     |               |          /    |
+     V               V          *    V
+                                *
+     XX***> X/       XX---> X/  *    E
+     *      |        *      |   *
+     *      V        *      V   *    ^
+     *               *          *    *
+     *      B        *      D   *    *
+     *               *          *    *
+     *               ************    *
+     *                               *
+     *********************************
+
+Finally we have (SET-CAR! (CDDR LST) 'X).  This modifies (CDDR LST), which
+is the last pair of the spine.  Its CAR used to point to E, but now points
+to X instead:
+
+---> XX------------> XX---------->-> X/
+     |               |          /    *
+     V               V          *    *
+                                *    V
+     XX***> X/       XX---> X/  *    
+     *      |        *      |   *    X
+     *      V        *      V   *    
+     *               *          *    
+     *      B        *      D   *    E
+     *               *          *    
+     *               ************    ^
+     *                               *
+     *********************************
+
+So the printed representation of the final result is:
+
+	((E B) ((X) D) X)
+
+The most common wrong answer was ((X B) ((X) D) X).  This comes from thinking
+that the last mutation changes *everything* that points to E so that it points
+to X instead.  But that would be true only if the pair (CAR LST) pointed to
+the *pair* (CDDR LST), whose CAR is changed from E to X, rather than pointing
+directly to E.
+
+Another common wrong answer was ((E B) (X D) X), ignoring the fact that the
+first mutation replaces the letter C with the *pair* (CDDR LST), which is a
+list, not a symbol; its printed representation is (X).
+
+A common error in the diagram itself was to create new pairs, most often
+making a *copy of* (CDDR LST) to be the CAR of (CADR LST).
+
+Another misunderstanding, which led to huge errors in the diagram, was to
+think that (CAR LST) means the first *pair in the spine* of LST, rather
+than the first *element* of LST.  Similarly, students misinterpreted
+(CADR LST) to mean the second pair of the spine, and so on.
+
+Scoring:  We subtracted one point per wrong change in the diagram (out of
+the four possible changes), and one point if the printed representation
+didn't match your diagram.
+
+
+10.  Scheme vs Logo evaluators
+
+In Scheme, evaluating the expression (+ A 3) requires the evaluator to look up
+two variables: + and A.  Since we are giving MC-EVAL an environment that only
+has a binding for A, this first expression gives the result
+
+	ERROR: Unbound variable +
+
+In Logo, procedure names aren't part of the environment, but are found in a
+separate, global table that's used automatically by LOGO-EVAL.  So in order to
+evaluate the Logo expression (SUM 2 :A), we have to look up A in the
+environment, but we don't need SUM in the environment.  Therefore the result
+of this evaluation is
+
+	5
+
+
+One too-common error was to say (+ A 3) as the value returned in the first
+case.  Presumably students who said this were reacting to the fact that the
+expression (+ A 3) is quoted when used as an argument to MC-EVAL.  But this
+just means that the argument is (+ A 3) rather than being the result of
+evaluating (+ A 3) in the underlying STk evaluator!
+
+Scoring:  Two points each.  We accepted any ERROR message for the first part.
+
+For the second part, we accepted 6 instead of 5 (because it's not important
+if you didn't notice that the second expression used 2 rather than 3) for
+full credit.
+
+We gave half credit (one point) to either of two particular wrong answers
+to the second part:
+
+	You don't say what to do with 5
+
+(which would be correct if we were calling DRIVER-LOOP instead of LOGO-EVAL),
+and
+
+	5  =no-value=
+
+(which can't be correct, since it's two values instead of one, but presumably
+is meant to show the values computed by EVAL-LINE, although that isn't right
+either because EVAL-LINE returns a value as soon as it gets anything other
+than =no-value= from evaluating an expression).
+
+
+11.  Streams
+
+The first two elements are explicitly given as A and B.  The remaining
+elements are the result of interleaving two streams, so we can draw a
+picture like this:
+
+
+	A  B  ___       ___       ___       ___
+
+                   ___       ___       ___       ___
+
+
+The second argument to INTERLEAVE is a stream containing only elements
+that are the symbol B, so we can start to fill this in:
+
+
+	A  B  ___       ___       ___       ___
+
+                   _B_       _B_       _B_       _B_
+
+
+To fill in the top row, we just copy the entire stream FOO.  We already
+know FOO's first two elements, so we can fill those in, and that tells us
+FOO's third and fifth elements.  (Its fourth element is the first B on the
+bottom row.)
+
+
+	A  B  _A_       _B_       _A_       _B_
+
+                   _B_       _B_       _B_       _B_
+
+
+Putting this back into a single row gives the solution:
+
+	A  B  A  B  B  B  A  B  B  B
+
+
+Scoring:  We subtracted one point per wrong letter.  This means that the
+common error in which only the first letter is A [A B B B B B B B B B B]
+got one point.
+
+Exception:  Some people apparently think that STREAM-FILTER keeps only
+the elements that *don't* satisfy the predicate, so they put a stream of
+As in the bottom row rather than a stream of Bs.  This gives the incorrect
+solution A B A A B A A A A A, to which we gave one point.
+
+
+12.  Logic programming
+
+As a reminder, here's ASSOC written in Scheme:
+
+(define (assoc key alist)
+  (cond ((null? alist) #f)
+	((equal? key (caar alist)) (car alist))
+	(else (assoc key (cdr alist)))))
+
+The first COND clause does not have any analog in the logic program!  In
+logic programming, if nothing satisfies the question we're asking, we just
+don't match any rule.  We don't want a rule that shows a value of #F.
+
+Here's the rule corresponding to the second COND clause:
+
+(assert! (rule (assoc ?key ((?key . ?value) . ?rest) (?key . ?value))))
+
+No condition is necessary for this rule; the pattern says it all.  But
+it would be okay to show this rule in a form closer to that of the Scheme
+program:
+
+(assert! (rule (assoc ?key (?car . ?cdr) ?car)
+	       (and (same ?car (?caar . ?cdar))
+		    (same ?key ?caar))))
+
+The second COND clause is a little tricky, because we only want to allow
+the recursion if the key doesn't match the first entry.  In Scheme, COND
+automatically handles this, because COND can only return one value, so it
+doesn't look at any clauses after the first successful one.  But logic
+programming allows multiple results, so we have to explicitly disable the
+recursion in case of a match:
+
+(assert! (rule (assoc ?key ((?caar . ?cdar) . ?rest) ?result)
+	       (and (assoc ?key ?rest ?result)
+		    (not (same ?key ?caar)))))
+
+To make this work we also have to define the SAME relation:
+
+(assert! (rule (same ?x ?x)))
+
+but we didn't require this to be explicitly included in your solution.
+
+
+Some people tried to use a single rule that matches any association list
+that has the desired key anywhere in it, like this:
+
+(rule (assoc ?key (?left . (?key . ?value) . ?right) (?key . ?value))) ;WRONG!
+
+This isn't such a bad idea, except that there is no (x . y . z) notation for
+a list that has element Y in the middle.  But the desired result can be
+obtained using the APPEND rules:
+
+(assert! (rule (assoc ?key ?alist (?key . ?value))
+	       (and (append ?left ((?key . ?value) . ?right) ?alist)
+		    (not (assoc ?key ?left ?something)))))
+
+The NOT clause is required to eliminate duplicate matching keys.  Alas,
+most people who tried this didn't quite use APPEND correctly.  The worst
+problem was to try to use it as a function rather than a relation:
+
+	(rule (assoc ?key (append ?left ((?key . ?value) . ?right))
+		          (?key . ?value)))	; WRONG!!!
+
+This is an attempt to use the "return value" from APPEND as part of the
+pattern for the ASSOC rule, but APPEND doesn't return a value.  It's a
+relation that succeeds or fails, and the appended list is one of the
+components of the relation, as in the correct version above.
+
+
+The most common error was to include spurious base cases, such as
+
+	(rule (assoc ?key () #f))	; WRONG!
+
+A more subtle error was to try to eliminate duplicate keys in the
+association list in the wrong rule:
+
+(assert! (rule (assoc ?key ((?key . ?value) . ?rest) (?key . ?value))
+	       (not (assoc ?key ?rest ?something))))	; WRONG!
+
+This rule would find the last matching key, not the first matching key,
+in the association list.
+
+
+Scoring:
+
+5  Correct.
+
+4  Extracts just the key, or just the value, rather than the entire pair.
+
+4  Finds the last matching key rather than the first one.
+
+3  Finds all matching keys (no NOT clause).
+
+3  Spurious base case for empty list.
+
+2  No recursive rule at all.
+
+2  Other "has the idea" but non-working solutions with a rule that tries
+   to match the car of the association list.
+
+0  No rule matching the car of the association list (recursive rule only).
+
+0  Has the example built in (e.g., only works for lists of length four).
+
+0  Composition of functions (like the incorrect APPEND version above).
+
+0  Anything not mentioned above.
+
+
+13.  Concurrency
+
+All of the examples try to call the procedures F and G, which both modify
+the variable X, and must therefore be protected against each other.
+Therefore, we must use the same serializer for both of them.
+
+(parallel-execute (s f) (t g))
+
+	This uses two different serializers for the two thunks, so they
+	are not protected against each other.  This can give rise to
+	INCORRECT RESULTS.
+
+(parallel-execute (s f) (s g))
+
+	This is the correct way to do it -- a single serializer protects
+	the variable X, and every process that depends on X is protected
+	using S.  So it produces NEITHER incorrect results nor deadlock.
+
+(parallel-execute (s (t f)) (t g))
+
+	This has an unnecessary invocation of serializer S.  Both processes
+	are protected by T, so no incorrect results are possible, and nothing
+	is added by calling S also.  But since S is used for only one process,
+	there will be NEITHER incorrect results nor deadlock.
+
+(parallel-execute (s (t f)) (s g))
+
+	This is just like the previous case: S does the needed protection,
+	and T is unhelpful but not harmful either, since only one process
+	uses it.  So NEITHER problem can arise.
+
+(parallel-execute (s (t f)) (t (s g)))
+
+	There won't be incorrect results, since both processes use the same
+	serializer (either S or T can be considered as the useful one).  The
+	second serializer is unnecessary.  But this time, since two processes
+	use the same two serializers, in different orders, DEADLOCK is
+	possible.
+
+Scoring: One point each.
+
+
+14.  Tree to binary tree.
+
+The crucial point here is that two different abstract data types (Tree and
+Binary Tree) are involved.  A binary tree isn't just a Tree!  It's different
+because if a node has exactly one child, a Binary Tree can distinguish whether
+this is the left child or the right child; the Tree type doesn't allow for
+this distinction.  So, for example, you couldn't use the Tree type to
+represent a binary search tree.
+
+We are given a Tree as argument, and asked to return a Binary Tree.
+Therefore, our program should use the *selectors* for the Tree type (namely
+DATUM and CHILDREN), but should use the *constructor* for the Binary Tree
+type (MAKE-BT).
+
+We didn't say explicitly in the problem what the arguments to MAKE-BT should
+be, but we did say it's based on the Binary Tree type in the text (see page
+157), except changing the name from MAKE-TREE to MAKE-BT.  It takes three
+arguments, the three components of a Binary Tree node: entry, left, and right.
+
+(define (tree->bt tree)
+  (if (> (length (children tree)) 2)
+      #f
+      (let ((kids (map tree->bt (children tree))))
+	(cond ((member #f kids) #f)	; propagate failure upward
+	      ((null? kids) (make-bt (datum tree) '() '()))
+	      ((null? (cdr kids)) (make-bt (datum tree) (car kids) '()))
+	      (else (make-bt (datum tree) (car kids) (cadr kids)))))))
+
+The most common error was to forget the first COND clause.  It's not good
+enough to return #F if *this* node has three or more children; we also have to
+return #F if any *child* (or grandchild, etc.) of this node has too many
+children.  So we see if the value returned by any recursive call to TREE->BT
+is false, and if so we return false too.
+
+Since MAKE-BT has separate arguments for the left and right branches,
+we need three COND clauses for each of the possible number of children
+in order to put the child(ren) in the right place(s).
+
+We accepted solutions in which MAKE-BT takes a list of length exactly two,
+every time, to specify the two branches of the new node.  But we didn't accept
+solutions in which MAKE-BT takes a list of any number of children, because
+that interface wouldn't allow the user to distinguish the case of a node with
+only a left child from the case of a node with only a right child.  (In this
+problem we say that we aren't going to create any nodes with only a right
+child, but you can't specify a constructor for Binary Trees that doesn't allow
+for that possibility.)
+
+Another common error was data abstraction violations.  These come in two
+forms:  (1) mixing the selectors and constructors for Trees with those for
+Binary Trees, and (2) using list/pair selectors and constructors (CONS, CAR,
+etc.) for either Trees or Binary Trees.  We considered the first category less
+severe than the second, although either kind of DAV really shows a failure to
+understand the point of data abstraction!  (This is true despite the fact that
+a few students wrote essays to try to justify their violations.)
+
+Another severe error was to try to mutate the tree instead of constructing a
+new data structure.  This was rarely explicit (e.g., using SET-CAR!); the
+usual thing was for students to call MAP, ignore its return value, and think
+(apparently) that something has changed in the argument tree.  We referred to
+this in the grading as the "MAP!" error -- using MAP as if it were a mutator.
+
+Scoring:
+
+6  Correct.
+
+4  Correct except that #F from a child isn't propagated to the parent.
+
+2  Case analysis errors, e.g., two-child nodes handled correctly but
+   one-child nodes handled incorrectly.
+
+2  Tree vs. Binary Tree DAV.
+
+0  Tree vs. Pair DAV [e.g., (CAR TREE)].
+
+0  No deep recursion (grandchildren not examined).
+
+0  Pseudo-mutation (using MAP as if it were MAP! mutator).
+
+0  Anything worse.
+
+
+
+15.  SWAP!
+
+This was a relatively easy mutation problem, since there was no need to
+examine inside any lists found as elements of the argument list.  We only
+care about elements of the top-level list.
+
+The first decision to be made is whether this is a job for SET-CAR! or
+for SET-CDR!.  The best choice is SET-CAR!, because we don't want to change
+which pair comes first in the list's spine, in case some variable used in the
+calling procedure is bound to this list.
+
+We want to mutate the pairs of the spine, not any pairs that might be elements
+of the list.  And we need a temporary variable to remember one of the elements
+while we're doing the swapping.
+
+(define (swap! lst)
+  (cond ((null? lst) lst)
+	((null? (cdr lst)) lst)
+	(else (let ((temp (car lst)))
+		(set-car! lst (cadr lst))
+		(set-car! (cdr lst) temp)
+		(swap! (cddr lst))
+		lst))))
+
+Scoring:
+
+6  Correct.
+
+5  Swaps correctly but doesn't return a value.
+
+5  Correct except for base cases.
+
+4  Has the idea:
+    * Uses a temporary variable; and
+    * SET-CAR! of two pairs, with at least one in the spine; and
+    * Recursive;
+   but...
+     - recurs on (CDR LST) instead of (CDDR LST); or
+     - uses SET-CDR! and reorders correctly but loses the head pair; or
+     - has the wrong value in TEMP (a spine pair instead of an element).
+
+3  (set-car! (CAR lst) (cadr lst)) and (set-car! (CADR lst) temp).
+
+2  Has an idea:
+    - only one SET-CxR!; or
+    - no temporary variable; or
+    - mutates two wrong pairs; or
+    - thinks SET! will change a pair, but also uses SET-CxR!.
+
+0  Other, including:
+    - allocates pairs (CONS, LIST, APPEND, etc.); or
+    - no recursion; or
+    - no SET-CxR!; or
+    - SET! of a non-symbol [e.g., (SET! (CAR LST) (CADR LST))].
+
+
+16.  Partial application in MCE
+
+The feature we want to add, which in the programming language literature is
+generally called "partial application," is used when a procedure is called.
+Procedure calling is the job of MC-APPLY, so that's where we have to make the
+change.  (It's possible to do it elsewhere, but less straightforward.)
+
+We are asked to construct a new procedure.  How do we do that?  The best
+answer is to call MAKE-PROCEDURE.  There's no need to construct and then
+evaluate a LAMBDA expression!
+
+What should the procedure look like?  One solution is to do exactly what's
+shown in the question: a procedure whose body is an invocation of the
+underlying procedure.  But this is actually a little tricky, because when we
+get to APPLY we no longer know what *expression* has that procedure as its
+value!  We only have the procedure itself.  So the easiest thing will be if we
+can create a procedure with the same body as the original procedure.  For
+example, if the original procedure is
+
+	(lambda (base exp)
+	  (cond ((= exp 0) 1)
+		((even? exp) (fast-exp (* base base) (/ exp 2)))
+		(else (* base (fast-exp base (- exp 1))))))
+
+then we'll create a procedure
+
+	(lambda (EXP)		;; only this line is different
+	  (cond ((= exp 0) 1)
+		((even? exp) (fast-exp (* base base) (/ exp 2)))
+		(else (* base (fast-exp base (- exp 1))))))
+
+but we'll create it in an environment with BASE bound to 2, as if the
+user had typed
+
+	(let ((base 2))
+	  (lambda (exp)
+	    (cond ((= exp 0) 1)
+		  ((even? exp) (fast-exp (* base base) (/ exp 2)))
+		  (else (* base (fast-exp base (- exp 1)))))))
+
+But of course we can't build this particular example into the solution;
+it has to work for any procedure, with any number of parameters, and with
+any smaller number of arguments given in the invocation.
+
+(define (mc-apply procedure arguments)
+  (cond ((primitive-procedure? procedure)
+	 (apply-primitive-procedure procedure arguments))
+	((compound-procedure? procedure)
+	 (IF (< (LENGTH ARGUMENTS) (LENGTH (PROCEDURE-PARAMETERS PROCEDURE)))
+	     (MAKE-PROCEDURE
+	      (BUTFIRST-N (LENGTH ARGUMENTS)
+			  (PROCEDURE-PARAMETERS PROCEDURE))	; parameters
+	      (PROCEDURE-BODY PROCEDURE)			; body
+	      (EXTEND-ENVIRONMENT				; environment
+	       (FIRST-N (LENGTH ARGUMENTS)
+			(PROCEDURE-PARAMETERS PROCEDURE))
+	       ARGUMENTS
+	       (PROCEDURE-ENVIRONMENT PROCEDURE))) 	; lexical scope!
+	     (eval-sequence
+	      (procedure-body procedure)
+	      (extend-environment
+	       (procedure-parameters procedure)
+	       arguments
+	       (procedure-environment procedure)))))
+	(else
+	 (error
+	  "Unknown procedure type -- APPLY" procedure))))
+
+This solution uses helper procedures to extract the first N parameters,
+and all but the first N parameters, from the original procedure's list of
+parameters:
+
+(define (first-n n lst)
+  (if (= n 0)
+      '()
+      (cons (car lst) (first-n (- n 1) (cdr lst)))))
+
+(define (butfirst-n n lst)
+  ((repeated cdr n) lst))
+
+This is the most elegant solution, because it deals only with values,
+not with expressions -- there's no need to call MC-EVAL anywhere in it.
+It's also possible to solve the problem by manipulating the text of the
+procedure in various ways.  For example, we could try to substitute the
+argument values for the first N parameters in the body, so we'd get the
+procedure
+
+	(lambda (exp)
+	  (cond ((= exp 0) 1)
+		((even? exp) (fast-exp (* 2 2) (/ exp 2)))
+		(else (* 2 (fast-exp 2 (- exp 1))))))
+
+for our example.  This is trickier than it looks to get correct, though.
+In this example the actual argument is a number, which is self-evaluating.
+But suppose the actual argument value is a non-numeric word or a list.
+It won't work to substitute the argument *value* into the body; we have
+to find the argument *expression* (which means we'd have to do the job in
+MC-EVAL rather than in MC-APPLY), or else we have to quote the value each
+time we substitute it.
+
+The key point is to be clear on the difference between an expression and a
+value -- for example, a LAMBDA expression versus a procedure.  We want to
+return a procedure, so either we call MAKE-PROCEDURE or we call
+
+	(mc-eval (make-lambda ...) some-environment)
+
+Which environment should we extend?  The one in the original procedure,
+of course -- we don't want to break Scheme's lexical scope rule.  Some
+solutions passed the current environment from MC-EVAL to MC-APPLY, thereby
+switching to dynamic scope.
+
+Many students came up with solutions modifying EXTEND-ENVIRONMENT instead of
+modifying MC-APPLY.  This is a reasonable first idea, since the problem is
+about matching formal parameters with actual arguments, and that's the job of
+EXTEND-ENVIRONMENT.  But it's really tricky to get this right, because the
+context in which EXTEND-ENVIRONMENT is called is that MC-APPLY is going to use
+the resulting environment to evaluate the body of the procedure, and we don't
+want to evaluate the body in the case of partial application.  Some of you
+actually managed to work around this problem by modifying EVAL-SEQUENCE as
+well as EXTEND-ENVIRONMENT, something along these lines:
+
+	(define (extend-environment vars vals base-env)
+	  (if (= (length vars) (length vals))
+	      (cons (make-frame vars vals) base-env)
+	      (if (< (length vars) (length vals))
+		  (error "Too many arguments supplied" vars vals)
+		  (MAKE-PROCEDURE ...))))
+
+	(define (eval-sequence exps ENV-OR-PROC)
+	  (cond ((COMPOUND-PROCEDURE? ENV-OR-PROC) ENV-OR-PROC)
+		((last-exp? exps) (mc-eval (first-exp exps) env))
+		(else (mc-eval (first-exp exps) env)
+		      (eval-sequence (rest-exps exps) env))))
+
+but this is an ugly solution.  For one thing, EVAL-SEQUENCE might be used
+someplace other than in MC-APPLY, so we shouldn't change its behavior without
+thinking about those other callers.  But even if the call to EVAL-SEQUENCE in
+MC-APPLY is the only one in the program, it's ugly to have a procedure named
+EVAL-SEQUENCE that sometimes doesn't actually evaluate a sequence!  We
+accepted working solutions on this model, but you shouldn't get in the habit
+of designing this way.
+
+
+Scoring:  There are too many variants to list them all.  We decided to group
+them according to one central issue: do they actually return a procedure?
+
+6  Correct.
+
+5  Correct except for some trivial error.
+
+4  Has the idea: Checks for length mismatch between parameters and arguments,
+   and returns a procedure if there are fewer parameters, but something is
+   wrong with the new procedure's parameters, body, or environment.
+
+2  Has an idea:  Checks for length mismatch, but then returns a lambda
+   expression, an environment, or something else that isn't an MCE procedure
+   (including an STk procedure formed by an underlying-Scheme LAMBDA
+   expression!).
+
+0  Anything else, including modifying only EVAL-SEQUENCE.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-1.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-1.soln.txt
new file mode 100644
index 0000000..80fa31f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-1.soln.txt
@@ -0,0 +1,423 @@
+CS 61A          Solutions to sample midterm 1 #1
+
+1.  What will Scheme print?
+
+> (every - (keep number? '(the 1 after 909)))
+(-1 -909)
+
+	The KEEP part of the expression has the value (1 909), selecting the
+	numbers from the given sentence.  (By the way, not everyone recognized
+	this as the name of a Beatles song, from the album _Let It Be_, the
+	last one they released, but the next-to-last one they recorded.)
+
+	(every - '(1 909)) computes (- 1) and (- 909), putting the results in
+	a sentence.  Some people thought this was an error because - requires
+	two arguments, but it doesn't.  With one argument it means negation,
+	rather than subtraction.  (Look it up in the Scheme reference manual
+	at the back of your course reader!)
+
+	A few people said -908, because they thought EVERY would call the
+	function once, giving both numbers as arguments.  That would be
+	(APPLY - '(1 909)), not EVERY.
+
+
+> ((lambda (a b) ((if (< b a) + *) b a)) 4 6)
+24
+
+	Substitute 4 for A and 6 for B in the body of the lambda:
+		((if (< 6 4) + *) 6 4)
+	(< 6 4) is false, so the IF expression returns the multiplication
+	procedure, which is the value of the expression *.  This procedure
+	is then called with 6 and 4 as its arguments.
+
+
+> (word (first '(cat)) (butlast 'dog))
+CATDO
+
+	The wrong answer we expected was CDO, but FIRST of a sentence is its
+	entire first word, even if there's only one word in it.  Another
+	fairly common wrong answer was ERROR, presumably from people who
+	rightly thought that WORD won't accept a sentence as argument, but who
+	didn't see that FIRST of a sentence is a word, which makes it an okay
+	argument to WORD.
+
+	A few people said CATOG because they didn't notice that it was
+	BUTLAST rather than BUTFIRST.  We didn't take off for this.
+
+> (cons (list 1 2) (cons 3 4))
+
+((1 2) 3 . 4)
+
+
+    ---------      ---------
+    |   |   |      |   |   |
+--->| | |  ------->| | | | |
+    | | |   |      | | | | |
+    --|------      --|---|--
+      |              |   |    
+      |              V   V
+      |
+      |              3   4
+      |
+      V
+    ---------      ---------
+    |   |   |      |   |  /|
+    | | |  ------->| | | / |
+    | | |   |      | | |/  |
+    --|------      --|------
+      |              |
+      V              V
+
+      1              2
+
+	There were two important points to this problem: knowing the
+	difference between CONS and LIST, and knowing how Scheme prints
+	improper lists.  (The two upper pairs in the diagram form the
+	spine of an improper list, which is a cdr-linked set of pairs in
+	which the cdr of the last pair isn't the empty list.)
+
+
+> (let ((p (list 4 5)))
+    (cons (cdr p) (cddr p)) )
+
+((5))
+
+        p is bound to (4 5)
+        (cdr p) evaluates to (5), and (cddr p) evaluates to ()
+        (cons '(5) '()) evaluates to ((5))
+
+Box and pointer diagram:
+    +---+---+
+--->| o | / |
+    +-+-+---+
+      |
+      v
+    +---+---+
+    | o | / |
+    +-+-+---+
+      |
+      v
+      5
+
+> (cadadr '((a (b) c) (d (e) f) (g (h) i)))
+(e)
+
+--->X/
+    |
+    V
+    e
+
+	We didn't take off for including other pairs from the large argument
+	in your picture, as long as there was a clear start arrow showing
+	where the return value starts.
+
+	The quickest way to solve this problem is to remember that CADR means
+	the second element, and to view CADADR as (CADR (CADR ...)) -- the
+	second element of the second element of the argument.  Alternatively,
+	we can spell it out step by step:
+
+        (cdr '((a (b) c) (d (e) f) (g (h) i)))  ==>  ((d (e) f) (g (h) i))
+        (car '((d (e) f) (g (h) i)))            ==>  (d (e) f)
+        (cdr '(d (e) f))                        ==>  ((e) f)
+        (car '((e) f))                          ==>  (e)
+
+	The crucial point is to see that it's CAR of CDR of CAR of CDR of the
+	list, which means the first step is CDR -- you have to work from
+	inside out, which in a case like this means from right to left.  If
+	you start by taking the CAR of the big list, you end up with the empty
+	list.
+
+
+
+Scoring: one point each.
+
+
+2.  Order of growth
+
+(define (foo n)
+  (if (< n 2)
+      1
+      (+ (baz (- n 1))
+	 (baz (- n 2)) )))
+
+(define (baz n)
+  (+ n (- n 1)))
+
+FOO is Theta(1).
+
+	Since FOO calls BAZ twice, we have to know the running time of BAZ
+	before we can figure out the running time of FOO.
+
+	BAZ does not contain any recursive calls, either to baz itself or to
+	foo.  Rather, it performs two fixed-time operations, an addition and a
+	subtraction, and so its running time is Theta(1).
+
+	Therefore, everything FOO does is fixed-time!  It calls <, +, -, and
+	BAZ, all of which are Theta(1).  And so FOO itself is also Theta(1).
+
+	The most frequent wrong answer was Theta(2^n).  People who thought
+	that put too much weight on the *form* of procedure FOO.  They saw two
+	procedure calls, and thought that the process was therefore comparable
+	to the Fibonacci computation or the Pascal's Triangle computation.
+	But in those cases, the two calls are *recursive* calls, not calls to
+	a fixed-time helper.
+
+(define (garply n)
+  (if (= n 0)
+      0
+      (+ (factorial n) (garply (- n 1))) ))
+
+(define (factorial n)
+  (if (= n 0)
+      1
+      (* n (factorial (- n 1))) ))
+
+GARPLY is Theta(n^2).
+
+	GARPLY calls itself recursively N times, so it's tempting to think
+	that it's Theta(n), the most common wrong answer.  But each of those N
+	invocations of GARPLY includes an invocation of FACTORIAL, which is
+	itself Theta(n).  So N calls to a Theta(N) procedure makes a total of
+	N*N fixed-time operations.
+
+Scoring: one point each.
+
+
+3.  Normal and applicative order.
+
+The expression (* (counter) (counter)) has the value 2 under both
+applicative and normal order.
+
+Under applicative order, all subexpressions are evaluated before * is called.
+There are two subexpressions of the form (counter), each of which is
+evaluated separately.  The first evaluation returns 1; the second returns 2.
+(It doesn't matter whether they are evaluated left to right or right to
+left, since 1 times 2 = 2 times 1.)
+
+Under normal order, you might think that things would get more complicated,
+but since * is a primitive (as the problem statement says), its arguments
+are evaluated before it is invoked even under normal order.  It's only
+arguments to user-defined procedures that are handled differently.
+
+But even if we did something like this:
+
+	(define (times a b)
+	  (* a b))
+
+	(times (counter) (counter))
+
+it wouldn't change the result.  Normal order *would* affect the call to
+TIMES, so that instead of substituting 1 and 2 for A and B, we'd
+substitute the expression (COUNTER) for both A and B in the body of
+TIMES.  The result of that substitution would be
+
+	(* (counter) (counter))
+
+which is the same thing we started with.
+
+The most common error was to say that the answer would be 1 under applicative
+order.  People who said that were confusing this problem with a different one,
+more like what I did in lecture:
+
+	(define (square x)
+	  (* x x))
+
+	(square (counter))
+
+For *that* problem, the answer would be 1 under applicative order and 2 under
+normal order.  But this is the opposite of the situation you were given.
+Normal order can turn one subexpression into multiple copies (which are then
+separately evaluated), but it can't turn two expressions, even if identical,
+into a single expression to be evaluated once.
+
+Interestingly, almost as many people said that the answer would be 1 under
+*normal* order.  My guess is that they were thinking of the square problem,
+but instead of actually working through that problem, they just remembered
+that normal order is the one that gives the weird answer.  :-)
+
+Scoring: 1 point, all or nothing.
+
+
+4.  Recursive or iterative process?
+
+(define (butfirst-n num stuff)
+  (if (= num 0)
+      stuff
+      (butfirst-n (- num 1) (bf stuff))))
+
+ITERATIVE PROCESS.  The recursive call is the last thing the procedure has
+to do.  (It's inside an IF, but it isn't evaluated until after IF has decided
+which branch to take.)
+
+
+(define (member? thing stuff)
+  (cond ((empty? stuff) #f)
+	((equal? thing (first stuff)) #t)
+	(else (member? thing (bf stuff)))))
+
+ITERATIVE PROCESS.  Again, the recursive call is the last thing the
+procedure has to do.
+
+
+(define (addup nums)
+  (if (empty? nums)
+      0
+      (+ (first nums)
+	 (addup (bf nums)))))
+
+RECURSIVE PROCESS.  The recursive call is the last *line* of the procedure
+definition, but it's inside a call to the + procedure, so the after the
+recursion finishes we still have to call +.
+
+Scoring: one point each.
+
+
+5.  Recursive procedures.
+
+This is the only one that I didn't expect to be immediately obvious
+to all of you.  There are lots of ways to do it.  Here is the one
+suggested by the hint:
+
+(define (syllables wd)
+  (define (chop wd)
+    (cond ((empty? wd) "")
+	  ((vowel? (first wd))
+	   (chop (bf wd)))
+	  (else wd)) )
+  (cond ((empty? wd) 0)
+	((vowel? (first wd)) (+ (syllables (chop wd)) 1))
+	(else (syllables (bf wd))) ))
+
+Another way is to count a vowel only if the next letter isn't one:
+
+(define (syllables wd)
+  (cond ((empty? wd) 0)
+	((vowel? (first wd))
+	 (cond ((empty? (bf wd)) 1)
+	       ((vowel? (first (bf wd))) (syllables (bf wd)))
+	       (else (+ (syllables (bf wd)) 1)) ))
+	(else (syllables (bf wd))) ))
+
+Yet another way is to use a state variable to remember whether
+or not the previous letter was a vowel:
+
+(define (syllables wd)
+  (define (s1 wd was-cons)
+    (cond ((empty? wd) 0)
+	  ((vowel? (first wd)) (+ was-cons (s1 (bf wd) 0)))
+	  (else (s1 (bf wd) 1)) ))
+  (s1 wd 1) )
+
+There were too many kinds of errors to list.  The trick here is
+that the program structure can't be exactly like the examples
+seen earlier, but you have to cope with that while not forgetting
+everything you know about functional programming.  For example,
+many people wanted to keep a count of the number of syllables so
+far in a state variable, so they said things like
+           (if (vowel? (first wd))
+	       (+ count 1)
+	       (... something else ...))
+as if + CHANGED THE VALUE of the variable count.  Thinking in BASIC!
+
+
+6.  Higher order procedures.
+
+(define (in-order? pred sent)
+  (cond ((empty? sent) #t)
+	((empty? (bf sent)) #t)
+	((pred (first sent) (first bf sent))
+	 (in-order? pred (bf sent)) )
+	(else #f) ))
+
+(define (order-checker pred)
+  (lambda (sent) (in-order? pred sent)) )
+
+One common error was to use (in-order? pred (bf (bf sent))) as the
+recursive step, on the theory that the first two elements have already
+been looked at.  The trouble is that you have to compare overlapping
+pairs of elements.  For example, (in-order? < '(2 8 5 9)) should be
+false, even though 2<8 and 5<9, because 8>5.
+
+Scoring: For part (a), three if it's right, two if it's correctly
+typed (that is, your procedure takes a two-argument predicate and
+a sentence as arguments, and returns true or false), one if it has
+some idea, zero if not.  For part (b), two if it's right, one if
+it's correctly typed (takes a predicate function of two arguments
+and returns a predicate function of one argument), zero if not.
+
+
+7.  Time ADT
+
+(define (time-print-form time)
+  (word (hour time) ': (two-digit (minute time)) (category time)))
+
+(define (two-digit num)
+  (if (< num 10)
+      (word 0 num)
+      num))
+
+
+(define (24-hour time)
+  (+ (* (hour time) 100)
+     (minute time)
+     (if (equal? (category time) 'pm) 1200 0)))
+
+
+(define (make-time hr min cat)
+  (+ (* hr 100)
+     min
+     (if (equal? cat 'pm) 1200 0)))
+
+(define (hour time)
+  (if (>= time 1200)
+      (- (div time 100) 12)
+      (div time 100)))
+
+(define (minute time)
+  (remainder time 100))
+
+(define (category time)
+  (if (>= time 1200) 'pm 'am))
+
+
+The most common serious errors were writing a non-function in part (a) and
+rewriting make-time with the wrong number of arguments in part (c).  These
+errors were the ones that gave rise to the most complaints about harsh
+grading, but I really think they're about crucial issues in the course.
+
+Part (a) says, "Write a FUNCTION time-print-form that takes a time as its
+argument and RETURNS a word of the form 3:07pm."  In week 7 of the course
+you should know what it means for a function to return a value!  Some people
+said they were confused by the fact that the word "print" is part of the
+function's name, but a "print form" is the form in which we want things to
+be printed; computing the print form of a time doesn't mean that we should
+actually print it!  Maybe the print form will be used as part of a larger
+sentence that we'll want to print later.
+
+Part (c) says, "Now we decide to change the *internal* representation of
+times to be a number in 24-hour form.  BUT WE WANT THE CONSTRUCTOR AND
+SELECTORS TO HAVE THE SAME INTERFACE SO THAT PROGRAMS USING THE ABSTRACT
+DATA TYPE DON'T HAVE TO CHANGE."  That means that the arguments to make-time
+must be the same things they were all along: an hour (in 12-hour time), a
+minute, and a category (am/pm).
+
+
+Many people returned 3:7pm instead of 3:07pm in part (a), because they
+thought that it would be sufficient to say something like
+        (time-print-form (make-time 3 07 'pm))
+The trouble is that Scheme interprets 07 as the number 7; Scheme doesn't
+remember exactly how you typed the number.  This was a minor error.
+
+Many people, in part (c), changed the internal representation to something
+other than a number, e.g., a list of two numbers.  I've spoken with four
+students who didn't understand why this was wrong, and I asked them to
+read the first sentence of part (c), and they said "... representation of
+times to be in 24-hour form."  And I said, "No, read it again."  On the
+third or fourth try they'd finally read the words "a number."  Sigh.
+
+Typical errors and scores:
+
+4  3:7pm
+3  changes internal form to (15 7) instead of 1507
+2  printing in (a) or wrong args in (c), as above
+1  glimmers of using the abstraction
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-2.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-2.pdf
new file mode 100644
index 0000000..e7f1e90
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-2.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-3.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-3.pdf
new file mode 100644
index 0000000..09e97c3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm1/mt1-3.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.pdf
new file mode 100644
index 0000000..0b90000
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.soln.txt
new file mode 100644
index 0000000..e80be44
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-1.soln.txt
@@ -0,0 +1,411 @@
+CS 61A          Solutions to sample midterm 2 #1
+
+1.  What will Scheme print?
+
+Note: Please draw actual boxes, as in the book and the lectures, not XX and X/
+as in these ASCII-art solutions.
+
+Also, please put in the start arrows!  Sometimes it's hard to know where your
+diagrams are supposed to begin, especially if you use leftward and upward
+pointing arrows.
+
+> (map caddr '((2 3 5) (7 11 13) (17 19)))
+ERROR
+
+	(caddr '(2 3 5)) is 5; (caddr '(7 11 13)) is 13.  But (17 19)
+	doesn't have a caddr, which would be the third element of a
+	two-element list.  The error is attempting to take the car of
+	the empty list.
+
+	The most common wrong answer was (5 13), thinking that the error
+	would just slide under the rug.
+
+> (list (cons 2 (cons 3 5)))
+((2 3 . 5))
+
+
+--->X/
+    | 
+    XX--->XX---> 5
+    |     |
+    V     V
+    2     3
+
+	There were two points to note in this problem:  (cons 3 5) creates
+	an improper list, and LIST is called with one argument, making a
+	one-element list (whose spine is the topmost pair in the diagram).
+
+	One error was to think that every call to CONS results in something
+	that prints with a dot, like this: ((2 . (3 . 5)))  But in fact
+	Scheme never prints a dot if the cdr is a pair; if the ultimate
+	pair of a chain of cdr-linked pairs doesn't have the empty list as
+	its cdr, you get the improper list notation (2 3 . 5)
+
+	The extra parentheses in the printed form show that the result is
+	a one-element list whose element is a list structure (in this case,
+	an improper list rather than an actual list).
+
+
+> (append (list '(2) '(3)) (cons '(4) '(5)))
+((2) (3) (4) 5)
+
+
+--->XX--->XX--->XX--->X/
+    |     |     |     |
+    V     V     V     V
+    X/    X/    X/    5
+    |     |     |     
+    V     V     V     
+    2     3     4    
+
+	The most problematic part of this for most students was the CONS.
+	Some people, remembering that the arguments to APPEND must be
+	lists, said that this produced an error -- but of course CONS can
+	produce a list, if its second argument is a list, as it is here.
+	[Fine print: In fact the *last* argument to APPEND is *not* required
+	to be a list, although the others are.  See the Scheme reference
+	manual.]  In this case, the CONS call produces the list ((4) 5).
+	The asymmetry in the handling of (4) and (5) comes from the meaning
+	of CONS in creating a list: the first argument, the car of the new
+	pair, is an *element* of the resulting list, whereas the second
+	argument, the cdr of the new pair, is a *sublist* of the resulting
+	list.  If this confuses you, think about what you'd expect
+			(cons 4 '(5))
+	to do.
+
+	The most common error, still about the CONS call, was to see that
+	it has to do something different from the LIST call, but still
+	try to make it treat its arguments symmetrically, resulting in
+	the wrong answer ((2) (3) 4 5).
+
+
+> (list (cons '(0) '(1)) (append '(2) '(3)))
+(((0) 1) (2 3))
+
+--->XX------------->X/
+    |               |
+    V               V
+    XX--->X/        XX--->X/
+    |     |         |     |
+    V     V         V     V
+    X/    1         2     3
+    |
+    V
+    0
+
+	LIST returns a list with as many elements as it has arguments -- in
+	this case, two elements.  The top two pairs in the diagram are the
+	ones generated by LIST.
+
+	CONS generates exactly one new pair.  In this problem, the first pair
+	on the second line of the diagram is the one generated by CONS.  Its
+	car is the pair on the third line, which is the list (0); its cdr is
+	the second pair on the second line, which is the list (1).  The
+	important thing to see here is that the lists (0) and (1) do not play
+	similar roles in the result, because of the way lists are defined.
+	The car of a pair is a list *element*; the cdr of the same pair is a
+	*sublist*.  So the value returned by the CONS invocation is a list of
+	two elements, namely (0) and 1 -- not (0) and (1); not 0 and 1.
+
+	APPEND strings together the elements of its arguments, so in this
+	case, the result of the APPEND invocation is the list (2 3).
+
+There were two common wrong answers to this part.  One mistake was to put
+the last element of a sublist in the cdr of a pair, like this:
+
+--->XX------------->X/		; WRONG!
+    |               |
+    V               V
+    XX--->1         XX--->3
+    |               |  
+    V               V  
+    X/              2  
+    |
+    V
+    0
+
+The numbers 1 and 3 are attached to the cdrs of their parent pairs,
+rather than to the cars.
+
+The other common mistake was to leave out the pair just above the zero,
+like this:
+
+--->XX------------->X/          ; WRONG!
+    |               |
+    V               V
+    XX--->X/        XX--->X/
+    |     |         |     |
+    V     V         V     V
+    0     1         2     3
+
+A less common, but more serious, error was to leave out part of the
+work by having parentheses in the diagram:
+
+--->XX------------->X/          ; WRONG!
+    |               |
+    V               V
+    XX--->(1)       XX--->(3)
+    |               |
+    V               V
+    (0)             2
+
+There are never any parentheses in a box and pointer diagram.  The
+parentheses in the *printed representation* of a list structure are
+just a notation to represent *pairs* in the actual structure.
+
+
+Scoring:  One point for each printed result; one point for each diagram,
+except for the first part, which got two points or none.
+
+
+2.  Binary search trees
+
+Although the ADT doesn't include empty trees, the program is easier to
+write if you allow for the possibility of getting an empty list as
+argument instead of a tree, because that's what happens when you try to
+recur for the children of a leaf node.  On that assumption, here's one
+way to write it:
+
+(define (all-smaller? tree num)
+  (or (null? tree)
+      (and (< (entry tree) num)
+	   (all-smaller? (left-branch tree) num)
+	   (all-smaller? (right-branch tree) num))))
+
+(define (bst? tree)
+  (or (null? tree)
+      (and (all-smaller? (left-branch tree) (entry tree))
+	   (all-larger? (right-branch tree) (entry tree))
+	   (bst? (left-branch tree))
+	   (bst? (right-branch tree)))))
+
+Most people wrote equivalent programs using COND, which is fine, but I
+find this style cleaner when writing predicates.
+
+A BINARY TREE is just a tree in which each node has at most two
+children.  A BINARY SEARCH TREE is a binary tree with the ordering
+constraints as described in the text.  The text doesn't make that
+entirely clear, because their only use of binary trees is to represent
+the SET ADT, for which a BST is needed.  Therefore, we didn't take off
+points if in part (a) you assumed the ordering relationship and therefore
+only checked the right branch of the tree, as long as you did the tree
+recursion properly in (b).
+
+Scoring:  This and the remaining problems are graded on the scale
+		5    correct
+		3-4  has the idea
+		1-2  has an idea
+		0    other
+
+Having the idea, in this problem, means doing a tree recursion.  The most
+common form of not having the idea was to think, in part (b), that the
+ordering must be checked only with respect to the root node, so you left
+out the recursive calls to BST?.
+
+We took off one point if you violated the binary tree ADT, using CAR and
+CDR instead of ENTRY, LEFT-BRANCH, and RIGHT-BRANCH.  (If you thought
+that those three things are names of trees, rather than of procedures,
+you didn't have the idea.)
+
+A too-common error was to say things like
+	(< (left-branch tree) (entry tree))
+as if the left branch were a number!  It's not; it's a tree.
+
+
+3.  Tree fanout.
+
+The best answer is
+
+(define (max-fanout tree)
+  (accumulate max
+	      (length (children tree))
+	      (map max-fanout (children tree))))
+
+This takes advantage of the fact that ACCUMULATE requires a starting value
+for the accumulation, usually 0 or 1 in the book's examples, but we can use
+the fanout of this node as the starting value.
+
+Here's the non-higher-order, mutual-recursion version:
+
+(define (max-fanout tree)
+  (max (length (children tree))
+       (max-fanout-forest (children tree))))
+
+(define (max-fanout-forest forest)
+  (if (null? forest)
+      0
+      (max (max-fanout (car forest))
+	   (max-fanout-forest (cdr forest)))))
+
+Some people made this more complicated by using a one-element forest as
+the base case in max-fanout-forest, thereby requiring that max-fanout
+check for the special case of a leaf node.  If this were a general
+problem about accumulating the MAX of arbitrary numbers, we couldn't use
+0 as the base case, because all the numbers might be negative, so if
+anything the base case would have to be negative infinity.  But here
+the numbers are node fanouts, and there's no such thing as a negative
+number of children!
+
+Note that max-fanout does not need a base case.  The recursion happens
+either in MAP, for the first solution, or in MAX-FANOUT-FOREST, for
+the second solution.
+
+Having the idea, in this problem, mostly meant understanding the Tree ADT.
+The totally wrong solutions were ones that applied CAR and CDR to a Tree --
+or, equivalently, the ones that said DATUM and CHILDREN but meant CAR and
+CDR.  Note that there is no reference to DATUM in a correct solution to
+this problem!  The fanout has nothing to do with the values in the nodes,
+only with the Tree's shape.
+
+Not only is CAR/CDR recursion a data abstraction violation, it's also a
+fundamental misunderstanding of this particular problem.  It's often the
+case that similar problems could be posed for abstract Trees and for
+list structures viewed as trees.  But if you use CAR/CDR recursion, you
+are thinking of each pair as a node in a binary tree, essentially, so
+the fanout is always 2!  The whole issue of fanout doesn't arise unless
+you have real Trees to think about.
+
+CAR/CDR programs, or their equivalent -- such as programs with expressions
+of the form (not (pair? tree)) -- got at most 2 points, but more often 0 or 1.
+So did programs that confused trees with forests.
+
+Some not-so-bad programs tried to apply MAX to a list of lists of numbers,
+rather than to a list of numbers.  Our general rule was that if we could
+fix your program by replacing a call to MAP with a call to FLATMAP, it
+got 3 points.
+
+A common problem, not so bad, was to get confused about the domain of MAX.
+This procedure takes numbers as arguments, not lists; you can't say
+        (max '(1 2 3 4))
+but you *can* say
+        (apply max '(1 2 3 4))
+or in this case, because all the numbers are positive,
+        (accumulate max 0 '(1 2 3 4))
+The advantage of ACCUMULATE over APPLY is that in some cases, people who
+used APPLY ended up applying MAX to an empty list -- in other words, trying
+to call MAX with no arguments.  That's not allowed, but ACCUMULATE always
+calls MAX with exactly two arguments, if at all, so it doesn't have the
+same potential bug.  All problems in this category lost only one point.
+
+The comments in the solution to question 2 about making unnecessary data
+structures apply here, too.  Several people made trees in which the datum
+of each node was replaced by its fanout.  Others made linear sequences of
+tree nodes.  All of these things only complicate the program; whatever you
+end up doing to create the structure and then process it could instead
+solve the problem directly in one step.
+
+Scoring:  3 or more points for a solution that uses the Tree ADT correctly
+and actually computes fanouts and maximums.  2 or fewer points for a solution
+with car/cdr recursion, tree/forest confusion, nothing about fanouts, or
+nothing about maximum.
+
+
+4.  Data-directed programming.
+
+(define (plus x y)
+  (let ((tx (type x))
+	(ty (type y)))
+    (if (eq? tx ty)
+	(attach-tag tx (+ (contents x) (contents y)))
+	(let ((gxy (get tx ty))
+	      (gyx (get ty tx)))
+	  (cond ((number? gxy)
+		 (attach-tag ty (+ (* gxy (contents x)) (contents y))))
+		((number? gyx)
+		 (attach-tag tx (+ (contents x) (* gyx (contents y)))))
+		(else (error "You can't add apples and oranges.")))))))
+
+
+The use of LET in this solution isn't essential; various rearrangements
+are possible and are equally good.
+
+Surprising numbers of people had trouble understanding what the problem
+was asking for.  They wrote programs in which 3 dynes PLUS 4 centimeters
+equals 12 ergs!  Sorry, 3 plus 4 is not 12 no matter how clever your
+coding style is.  As the problem clearly stated, you were asked to write
+one procedure, the addition procedure, for a larger project that would
+also include a multiplication procedure when completed.  Moral: don't
+be in such a hurry to write code.  Make sure you understand the problem
+you are being asked to solve first!
+
+Another common way to get in trouble was to try to apply the number you
+found in the table (12, in the example) as a procedure.  Just because
+there is an example in the book in which a table contains procedures as
+entries, that doesn't mean that every table has to contain procedures!
+This particular table contains numbers, for units that can be added
+together, and symbols, for units that can be multiplied.
+
+Scoring: 8 points for a perfect solution.
+	 4-7 points for a flawed solution not grossly confused.
+	 2-3 points for a grossly confused but not clueless solution.
+	 0-1 point for a solution showing no understanding at all.
+
+In general we subtracted two points for each flaw, down to the
+minimum for the categories as indicated.  Here are some 2-point errors
+that bottomed at 4 points:
+
+-- not checking the number? predicate
+-- not checking for the arguments being backwards in the table
+-- incorrect conversion formula
+-- violation of the attach-tag data abstraction
+-- wrong args to GET
+
+Here are some errors eligible for the 2-3 point range:
+
+-- checking explicitly for 'ft or 'in
+-- applying a non-procedure
+-- Lisp syntax errors like non-symbol formal parameters
+
+
+5.  OOP
+
+The central point of this question is that in the OOP paradigm, objects are
+used for everything, and the structure of the object classes reflects the
+structure of the real-world situation being simulated.
+
+(a) parenthood
+
+The class VANILLA has the class SCOOP as its parent, because a vanilla scoop
+is a particular kind of scoop.
+
+Is a scoop a special kind of cone?  No.
+
+Is a cone a special kind of scoop?  No.
+
+So the correct answer is "Neither."  Most people got this; the most common
+wrong answer was to say that SCOOP should have CONE as its parent, probably
+because a scoop can be viewed as *part of* a cone.  But the parent/child
+relationship isn't "a part of"; it's "a kind of."
+
+(b) flavors method
+
+(method (flavors)
+  (map (LAMBDA (S) (ASK S 'FLAVOR)) scoops))
+
+You *could* write the CONE class so that its instance variable SCOOPS would be
+a list of flavors (i.e., names of flavors) instead of a list of scoop objects.
+But that wouldn't be following the OOP paradigm.  (Not to mention that using
+the name SCOOPS for a list of flavors would be really confusing!)  So if we
+want to know the flavors in a cone, we have to ask each scoop for its flavor.
+
+A few people said something like (USUAL 'FLAVOR) instead of (ASK S 'FLAVOR),
+presumably because FLAVOR is a method of the SCOOP class, rather than of the
+VANILLA or CHOCOLATE class.  But even if this could work, the whole idea of
+inheritance is that you can send the child class (e.g., VANILLA) the same
+messages you can send to the parent class (SCOOP).  You don't have to know
+whether VANILLA handles the FLAVOR message itself or delegates the message to
+its parent.  And in any case it wouldn't work; USUAL can only be used inside
+a DEFINE-CLASS, because otherwise it doesn't know what object you're talking
+about!
+
+
+(c) adding a scoop
+
+Given a particular ice cream cone, we want to add a particular scoop of
+vanilla ice cream to it -- not the VANILLA class, and not the word VANILLA.
+So the right answer is the last one listed:
+	(ask my-cone 'add-scoop (instantiate vanilla))
+The argument to INSTANTIATE is a class, not the name of a class.
+
+Scoring: 2 points each.  No partial credit except that in part (B) leaving
+out the quotation mark before FLAVOR got one point.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-2.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-2.soln.txt
new file mode 100644
index 0000000..701905a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-2.soln.txt
@@ -0,0 +1,609 @@
+CS 61A          Solutions to sample midterm 2 #2
+
+1.  What will Scheme print?
+
+Please put in the start arrows!  Sometimes it's hard to know where your
+diagrams are supposed to begin, especially if you use leftward and upward
+pointing arrows.
+
+> (list (cons 2 3) 4)
+((2 . 3) 4)
+
+          +---+---+     +---+---+
+          |   |   |     |   |  /|
+--------->| | | ------->| | | / |
+          | | |   |     | | |/  |
+          +-|-+---+     +-|-+---+
+            |             | 
+            |             V 
+            |                               
+            |             4
+            |                                  
+            V                                  
+          +---+---+
+          |   |   |
+          | | | | |
+          | | | | |
+          +-|-+-|-+
+            |   |
+            V   V
+
+            2   3
+
+Most people got this.  The ones who didn't most often left out the dot
+in the printed version.
+
+
+> (append (cons '(a) '(b)) '(c))
+((A) B C)
+
+           +---+---+   +---+---+   +---+---+
+           |   |   |   |   |   |   |   |  /|
+---------> | | | ----->| | | ----->| | | / |
+           | | |   |   | | |   |   | | |/  |
+           +-|-+---+   +-|-+---+   +-|-+---+
+             |           |           |
+             |           V           V
+             |
+             |           B           C
+             V
+           +---+---+
+           |   |  /|
+           | | | / |
+           | | |/  |
+           +-|-+---+
+             | 
+             V 
+
+             A 
+
+Many people were confused about this one, especially the CONS part.
+Here is a box and pointer diagram of (cons '(a) '(b)).  The starred
+pair is the one created by the CONS:
+
+
+          ***********
+          *+---+---+*        +---+---+
+          *|   |   |*        |   |  /|
+--------->*| | | ----------->| | | / |
+          *| | |   |*        | | |/  |
+          *+-|-+---+*        +-|-+---+
+          ***|*******          | 
+             |                 V 
+             |                                 
+             |                 B 
+             |                                  
+             V                                  
+	   +---+---+
+	   |   |  /|
+	   | | | / |
+	   | | |/  |
+	   +-|-+---+
+	     | 
+	     V 
+
+	     A 
+
+Even though this structure was created using CONS rather than LIST,
+it's a list, because the cdr of the new pair is a list.  This list
+has two elements; the first is (A) and the second is B.  So in
+effect the call to APPEND is (append '((a) b) '(c)).
+
+We weren't very sympathetic to people who drew diagrams like this:
+
+	   +---+---+
+	   |   |   |
+---------->| | | ------> etc
+	   | | |   |
+	   +-|-+---+
+	     | 
+	     V 
+
+	    (A)
+
+Things in parentheses in the printed representation must be shown
+as pairs in the diagram!
+
+
+
+> (cdadar '((e (f) g) h))
+()
+
+Note that the result is (), not '()!
+
+There really is no need for a box-and-pointer diagram for an empty
+list, which is an atom.  We accepted
+
+	   +---+
+	   |  /|
+---------->| / |
+	   |/  |
+	   +---+
+
+but *NOT* this:
+
+	   +---+---+
+	   |  /|  /|
+---------->| / | / |
+	   |/  |/  |
+	   +---+---+
+
+because that would be a pair, representing the list (()), not an empty list.
+
+Some people got this wrong because they figured the cdadar incorrectly.
+Here's how to get there:
+
+(car '((e (f) g) h))  ===>   (e (f) g)
+(cdr '(e (f) g))      ===>   ((f) g)
+(car '((f) g))        ===>   (f)
+(cdr '(f))            ===>   ()
+
+CDADAR is an abbreviation for (cdr (car (cdr (car ...)))), so you have
+to start at the inside and take the CAR of the argument first.  Some
+people read CDADAR left to right as "take the cdr, then the car, ..."
+but that's wrong.
+
+Scoring:  One point for each, with both printed form and b&p diagram
+correct to get the point.  One point total for people who got all three
+printed results correct but left out the b&p diagrams.
+
+
+
+2.  Fill in the blank.
+
+> (CADADR '(g (h i) j))
+I
+
+
+The letter I is the second element of (H I), so it's
+      (cadr '(h i))
+But the sublist (h i) is the second element of the entire argument,
+so it's
+      (cadr '(g (h i) j))
+So we want
+      (cadr (cadr '(g (h i) j)))
+and that's abbreviated as CADADR.
+
+Scoring: one point, all or nothing!
+
+
+3.  Proj2 data abstraction
+
+(a)  Type-tagged segment ADT.  The solution we wanted was this:
+
+(define (make-segment start end)
+  (attach-tag 'segment (cons start end)))
+
+(define (start-segment seg)
+  (car (contents seg)))
+
+(define (end-segment seg)
+  (cdr (contents seg)))
+
+Alternatively, you could use LIST instead of CONS and CADR instead of CDR.
+
+Here is the crucial point to understand about data abstraction:  WE WANT
+THIS CHANGE NOT TO BREAK EXISTING PROCEDURES IN THE PROJECT!  That means
+that start-segment, for example, must return a vector, just as it did
+before the change.
+
+Some people wrote
+
+(define (start-segment seg)    ;; wrong!!!
+  (attach-tag 'segment (car seg)))
+
+One problem with this is that the start-segment of a segment isn't the
+car of the argument anymore, once we have a type attached.  But it's
+much worse to attach the SEGMENT type to the result, because the result
+isn't a segment!  It's a vector.
+
+Other people gave make-segment only one argument.  Probably this means
+that you don't know what a segment is, because you let your partner do
+all the work on the project.
+
+
+Scoring:
+2  As shown above.
+1  Working code, but not respecting the tagged-data abstraction
+     (e.g., cons instead of attach-tag, cadr and cddr in the selectors).
+0  Anything else.
+
+
+(b) Find the midpoint of a segment or frame.
+
+(define (midpoint shape)
+  (cond ((eq? (type-tag shape) 'segment)
+	 (scale-vect 0.5
+		     (add-vect (start-segment shape)
+			       (end-segment shape))))
+	((eq? (type-tag shape) 'frame)
+	 ((frame-coord-map shape) (make-vect 0.5 0.5)))
+	(else #f)))
+
+We accepted less elegant but correct algorithms for the midpoints of
+the shapes.  For a segment another approach is
+
+         (make-vect (/ (+ (xcor-vect (start-segment shape))
+			  (xcor-vect (end-segment shape)))
+		       2)
+		    (/ (+ (ycor-vect (start-segment shape))
+			  (ycor-vect (end-segment shape)))
+		       2))
+
+For frames we saw two other correct approaches.  One was essentially
+to rewrite frame-coord-map:
+
+         (add-vect (origin-frame shape)
+		   (scale-vect 0.5
+			       (add-vect (edge1-frame shape)
+					 (edge2-frame shape))))
+
+Another was to find the midpoint of a diagonal of the parallelogram:
+
+         (midpoint (make-segment (add-vect (origin-frame shape)
+					   (edge1-frame shape))
+				 (add-vect (origin-frame shape)
+					   (edge2-frame shape))))
+
+Most people had correct algorithms for the midpoint of a segment.  There
+were two common incorrect algorithms for frames; one wrong approach was
+to ignore the frame's origin, and the other was to assume that the frame's
+edge1 contributes only to the x-coordinate of the midpoint and that its
+edge2 contributes only to the y-coordinate.
+
+One reason for incorrect solutions to the midpoint of a frame was that
+people confused the origin of the FRAME with the origin of the COORDINATE
+SYSTEM -- that is, the point (0, 0).  The vector returned by
+(origin-frame shape) points from the coordinate system origin (0, 0) to
+the frame's origin, which is one of its corners.  That corner might or
+might not be at (0,0)!  For example, when you wrote procedures like
+BELOW in the project that combine two pictures in adjacent frames, at
+least one of those frames doesn't begin at (0, 0).
+
+Some people wrote a data-directed solution, including things like
+
+   (put 'frame 'midpoint frame-midpoint)
+
+This was okay, but more work than the problem required.  Other people
+tried to use message passing, with less success.  A correct use of
+message passing means that the data -- the frames and segments -- must
+be represented as procedures:
+
+(define (make-segment start end)
+  (lambda (message)
+     ...))
+
+But this is incompatible with part (a)!  Some people tried to use a
+dispatch procedure for the *operator*:
+
+(define (midpoint shape)   ;; wrong!
+   (lambda (message)
+      ...))
+
+but that doesn't make any sense.  You send messages to objects, not
+to operators.  In general, the way to learn in this course is to focus
+on the IDEAS, not on the SYNTAX.  Don't think:  "Message passing means
+that you say (lambda (message) ...) somewhere."  Instead think:
+"Message passing means that the data objects in the system know how
+to carry out operations on themselves."
+
+
+Some people either didn't read or didn't understand the sample exams
+in the course reader.  Here is a quote from the spring 1995 solutions:
+
+    *** RESPECTING THE DATA ABSTRACTION DOES **NOT** MEAN SAYING "DATUM"
+    *** WHENEVER YOU MEAN CAR, AND "CHILDREN" WHENEVER YOU MEAN CDR!!  That
+    is precisely DISrespecting the data abstraction!  Respecting it means to
+    distinguish between a Tree, whose component parts are called datum and
+    children, and other data types that have other component parts, such as
+    forests (car and cdr, since a forest is just a particular kind of
+    sequence), rational numbers (numer and denom), and so on.
+
+The same thing is true here, except that instead of Trees, this problem
+used tagged data.  RESPECTING THE DATA ABSTRACTION DOES **NOT** MEAN
+SAYING "TYPE-TAG" WHENEVER YOU MEAN CAR, AND "CONTENTS" WHENEVER YOU MEAN CDR!
+That is precisely DISrespecting the data abstraction!  Respecting it means
+to distinguish between a type-tagged datum, whose component parts are
+called type-tag and children, and other data types that have other component
+parts, such as segments, frames, and vectors.
+
+
+Scoring:
+
+3  Correct.
+
+2  The structure of the COND correct, and also
+     (a) both algorithms work, but have data abstraction violations, or
+     (b) one algorithm is correct, and there are no DAVs.
+
+1  At least one working algorithm.
+
+0  Other.
+
+
+4.  Maximum path in Tree
+
+(define (maxpath tree)
+  (if (null? (children tree))
+      (datum tree)
+      (+ (datum tree)
+	 (biggest (map maxpath (children tree))))))
+
+Notice that there is no CAR or CDR in this program!
+
+If you didn't want to use MAP, the equivalent recursive solution is
+
+(define (maxpath tree)
+  (if (null? (children tree))
+      (datum tree)
+      (+ (datum tree)
+	 (maxpath-forest (children tree)))))
+
+(define (maxpath-forest forest)
+  (if (null? (cdr forest))
+      (maxpath (car forest))
+      (max (maxpath (car forest))
+	   (maxpath-forest (cdr forest)))))
+
+This solution does take the CAR and the CDR of a forest (which is
+a sequence of Trees), but still does not apply CAR or CDR to a Tree.
+
+In either case, the algorithm is to find the maxpath of each child,
+take the biggest of those, and add the value at the root.  So, for
+the example in the exam, the maxpath values for the three children
+are 10 (7+3), 11 (2+9), and 10 (4+6).  The biggest of those is 11,
+so we add 5 to that and the overall answer is 16.
+
+It doesn't work to find the largest immediate child of the root
+and work downward from there.  In this example, the largest of the
+children is 7, the first child, but the largest overall path doesn't
+go through that child.
+
+
+PLEASE don't ever try to solve a tree problem iteratively!  Iteration
+is good for sequences of information -- that is, for one-dimensional
+structures.  But tree problems are fundamentally recursive.  A lot of
+solutions had the form
+
+(define (maxpath tree)
+  (maxpath-helper tree (children tree) tree '() '() 0 (datum tree)))
+
+or some similar thing with zillions of extra arguments.  All such
+solutions turned out to be quite wrong, and what's worse, they take
+a long time for us to grade!  :-(
+
+
+Here's another correct solution that some people tried:
+
+(define (maxpath tree)
+  (biggest (maxpath-helper tree)))
+
+(define (maxpath-helper tree)
+  (if (null? (children tree))
+      (LIST (datum tree))
+      (map (lambda (t) (+ (MAXPATH t) (datum tree)))
+	   (children tree))))
+
+Unfortunately, most people who tried this made two mistakes; one was
+to leave out the LIST, using just (datum tree) as the base case, and
+the other was to call maxpath-helper instead of the capitalized
+MAXPATH above.  Both of these errors could be avoided by thinking
+about the domains and ranges of the functions involved:
+
+	function	argument	  return
+
+	biggest		list of numbers	  number
+	maxpath		Tree		  number
+	maxpath-helper	Tree		  list of numbers
+
+Since BIGGEST expects a list as its argument, maxpath-helper
+must return a list, even in the base case.  And since + expects
+numbers as arguments, you can't use maxpath-helper to provide
+one of the arguments to +, because maxpath-helper returns a list.
+
+
+This was apparently the hardest problem, mainly because people don't
+understand the Tree Abstract Data Type.  The two parts of a Tree
+are its DATUM, which is a number, and its CHILDREN, which is a forest,
+that is, a list of Trees.  A list of Trees is not a Tree!  An expression
+such as (maxpath (children tree)) has to be wrong because maxpath
+requires a Tree as its argument, not a list of Trees.
+
+
+Scoring:  There were so many wrong approaches that I can't possibly
+list them all.  The general strategy we tried to follow was
+
+5     correct
+3-4   has the idea
+1-2   has an idea
+0     no idea
+
+Here are a few common cases:
+
+4   correct except for the base case
+3   recursive call to maxpath-helper as described above
+2   (maxpath (children tree))
+2   binary tree ADT (e.g., calls to left-branch and right-branch)
+1   (biggest (children tree)) with no recursion
+
+
+5.  Debugging the broken EVAL-1.
+
+Of the six test cases given, the four that don't give error messages
+give the correct answer; it's the two that say ERROR that are wrong.
+What do those two have in common?  A compound expression -- a procedure
+call -- is used as an argument to another procedure.
+
+(In the first case, the expression (* 2 2) provides an argument to +;
+in the second, the expression (+ 1 1) provides an argument to the
+procedure created by the lambda expression.)
+
+So there's something wrong with the evaluation of argument subexpressions.
+That evaluation of subexpressions happens on line 11.  The correct line is
+
+	(map eval-1 (cdr exp)) ))  ; closing earlier open parentheses
+
+The reason some of the test cases *do* work is that numbers are
+self-evaluating, so using the argument expressions instead of the argument
+values doesn't matter if the argument is just a number.  The student said
+
+	(cdr exp) ))	; This is what you should have in your solution.
+
+leaving out the MAP EVAL-1 part.
+
+The most common error was to say that the error was
+
+	(eval-1 (cdr exp)) ))
+
+omitting just the MAP.  But that would be a disaster; none of the examples
+would have worked.  Take the first test case: (+ 2 3).  If that's EXP,
+then (CDR EXP) is (2 3).  But if we try to EVAL-1 that list, we are asking
+to invoke the procedure 2 with the argument 3!
+
+By the way, the reason the last test case doesn't fail is that IF is a
+special form, so eval-1 never reaches line 11; the subexpressions are
+evaluated on lines 6-8.
+
+Scoring: 5 if correct, 2 if line 11 changed incorrectly, otherwise 0.
+(But in the rare cases where the correct change was attributed to line
+10 or 12, we figured you just misread the line numbers and didn't take
+off points.)  We ignored any explanations you gave, which was a good thing
+in some cases because the explanations were iffy.
+
+
+6.  Data directed programming
+
+I said at least twice in lecture that data-directed programming does NOT
+mean using get and put; the book's example of data-directed programming
+is just one example of a more general idea.  The idea is that instead of
+building the specific details of one problem into our procedures, we
+write more general procedures that use some auxiliary data structure to
+specify the precise problem we're supposed to solve.  In this case, the
+list of transitions ((1 A 2) (1 B 3) ...) is the data structure that
+tells our GENERAL fsm interpreter which SPECIFIC fsm we're using.
+
+To make that clearer, here is a program for the particular fsm used as
+the example in the question, NOT using data-directed programming:
+
+(define (transition state letter)
+  (cond ((= state 1) (state1 letter))
+	((= state 2) (state2 letter))
+	((= state 3) (state3 letter))
+	((= state 4) (state4 letter)) ))
+
+(define (state1 letter)
+  (cond ((eq? letter 'A) 2)
+	((eq? letter 'B) 3)
+	((eq? letter 'C) 4)
+	(else 0) ))
+
+(define (state2 letter)
+  (cond ((eq? letter 'A) 1)
+	(else 0) ))
+
+... and so on for the other two states.  This program has the specific
+transition information built into its procedures.  If you wanted to
+change a transition, you'd have to rewrite some procedure.  Some people
+did in fact offer solutions like this, and got no credit.  Here is the
+solution we had in mind:
+
+(define (transition fsm state letter)
+  (cond ((null? fsm) 0)
+	((and (= state (caar fsm))
+	      (eq? letter (cadar fsm)) )
+	 (caddar fsm) )
+	(else (transition (cdr fsm) state letter)) ))
+
+(define (process fsm state wd)
+  (if (empty? wd)
+      state
+      (process fsm (transition fsm state (first wd)) (bf wd)) ))
+
+This program works not only for the particular fsm diagrammed in the
+question, but for ANY fsm, if we give it the appropriate list of
+transitions as an argument.
+
+For some reason that I don't understand, practically everyone returned
+(cddar fsm) instead of the correct (caddar fsm).  You want the third
+ELEMENT of the transition sublist, not a SUBLIST of the transition sublist.
+But we didn't take off for that.
+
+It's perfectly fine if you want to avoid things like "caddar" (pretty hard
+to work through, isn't it?) by defining an abstract data type for
+transitions.  But please don't think that "data-directed programming"
+MEANS using abstract data types.  The two ideas are quite distinct, even
+though we talked about tagged data during the same week as ddp.  If
+you want to use an abstract data type your program will look like this:
+
+(define start-state car)
+(define arrow-label cadr)
+(define end-state caddr)
+
+(define (transition fsm state letter)
+  (cond ((null? fsm) 0)
+	((and (= state (start-state (car fsm)))
+	      (eq? letter (arrow-label (car fsm)) )
+	 (end-state (car fsm)) )
+	(else (transition (cdr fsm) state letter)) ))
+
+You could also define selectors like first-transition and rest-transitions
+for the fsm list itself, but I wouldn't bother.  Car and cdr are clear
+enough for a sequence of any number of the same kind of thing, such as a
+sequence of transition triples.
+
+But, speaking of data types, it won't work at all to use car and cdr on
+the word we're processing in part B!  Car and cdr only work on pairs
+(and lists, which are made of pairs), not on words.
+
+It would indeed be possible to use GET and PUT to implement a data-directed
+fsm program.  You'd set up the program for a particular fsm by PUTting each
+transition, with the start state and letter as the row and column labels,
+and the end state as the contents of each cell.  This isn't exactly what we
+asked for, but we gave full credit if you did that properly.  But we gave
+no credit at all if you tried to invoke the contents of the cell as a
+procedure!  If you did that, you were just blindly copying the example from
+the book without understanding it.
+
+Scoring:  Having the idea in part A meant using the fsm list to write a
+general program.  No credit if the letters A, B, and C appeared in your
+program (not data directed) nor if you invoked something you found in a
+table (totally off the wall).  Having the idea in part B meant using the
+procedure you wrote in part A!  People who tried to do part B from scratch
+invariably wrote programs that CDRed down the fsm list once, then lost it
+and couldn't process the second letter.  If you got part A completely right
+but totally messed up part B, that was three points.  The other way around
+was two points.  If you partially messed up both parts, we used our
+judgement in accord with the standard five-point formula.
+
+
+7. OOP
+
+(a) Parents and children.  A child class is /a kind of/ the parent class, or
+/a specialization of/ the parent class, /not/ a part or subset of the parent.
+
+Is a keypad a kind of cell phone?  NO, a keypad is part of a cell phone.
+
+Is an office building a kind of building?  YES.
+
+Is a staple a kind of stapler?  NO, it's something you put into a stapler.
+
+Is an arm bone a kind of arm?  NO, it's part of the arm.
+
+Is an arm bone a kind of bone?  YES.
+
+Is an arm bone a kind of person?  NO, it's part of a person.
+
+(b) Class or instance variable.  It's a class variable if it's the same for
+every instance of the class; it's an instance variable if each instance has
+its own value.
+
+The number of taxis in the city isn't different for each taxi; it's a property
+of the entire CLASS of taxis.
+
+The number of milk cartons in a fridge is different for each fridge; mine has
+quite a few because my son and I can't agree about whether to use fat-free
+milk or high-fat (2%) milk, so we get both kinds.  A fridge in a photographic
+studio might be full of film, and have no milk cartons at all.  So the number
+is different for each INSTANCE of the fridge class.
+
+Scoring: 1/2 point each, rounded down to an integer.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-3.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-3.pdf
new file mode 100644
index 0000000..47a822a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm2/mt2-3.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.pdf
new file mode 100644
index 0000000..e79cafe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.soln.txt
new file mode 100644
index 0000000..174ff1a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-1.soln.txt
@@ -0,0 +1,526 @@
+CS 61A		Solutions to sample midterm 3 #1
+
+1.  Box and pointer.
+
+(let ((x (list 1 2 3)))
+   (set-car! x (list 'a 'b 'c))
+   (set-car! (cdar x) 'd)
+   x)
+
+((a d c) 2 3) is printed.
+
+X-->[o|o]-->[o|o]-->[o|/]
+     |       |       |      
+     |       V       V
+     |       2       3      
+     V      
+    (o|o)-->{o|o}-->[o|/]
+     |       |       |      
+     V       V       V      
+     a       d       c 
+
+The result of the first set-car! is ((a b c) 2 3); the second set-car! changes
+the B to D.  (car x) is the pair in (parentheses) in the diagram above, so
+(cdar x) is the pair in {braces}.
+
+
+(define x 3)
+(define m (list x 4 5))
+(set! x 6)
+m
+
+(3 4 5) is printed.
+
+M-->[o|o]-->[o|o]-->[o|/]
+     |       |       |      
+     V       V       V      
+     3       4       5
+
+The point of this example is that once (list x 4 5) has been evaluated, it
+doesn't matter that the 3 came from X; the list contains the values, not the
+expressions that produced the values.  So the list M doesn't "know" that X's
+value is later changed.
+
+
+
+(define x (list 1 '(2 3) 4))
+(define y (cdr x))
+(set-car! y 5)
+x
+
+(1 5 4) is printed.
+
+              Y
+              |
+              |
+              V
+X-->[o|o]-->[o|o]-->[o|/]
+     |       |       |      
+     V       V       V      
+     1       5       4
+
+In this example, Y names the same pair as (cdr x).  So changing the car of Y
+changes the cadr of X, replacing (2 3) with 5.
+
+
+
+(let ((x (list 1 2 3)))
+  (set-cdr! (cdr x) x)
+  x)
+
+(1 2 1 2 1 2 1 2 ...    is printed.
+
+     +---------+
+     |         |
+     V         |
+X-->[o|o]-->[o|o]
+     |       |      
+     V       V      
+     1       2
+
+This example creates a circular list.
+
+
+Scoring: One point per printed representation; one point per diagram.
+
+
+
+2.  Local state.
+
+If we call PREV several times, each of the resulting procedures remembers
+its own previous invocation.  In OOP terminology, PREV represents a class, and
+SLOW-SQUARE is an instance of the class.  So OLD-RESULT should be an instance
+variable.
+
+Of the four choices offered, the first is the one in which OLD-RESULT is an
+instance variable, because the LET happens once per call to PREV, i.e., once
+for each instantiation of the class.
+
+In the second choice, the LET happens only once, when PREV is defined, so
+OLD-RESULT would be a class variable.  In the third choice, the LET happens
+every time an *instance* (such as SLOW-SQUARE) is called, so it's not a state
+variable at all, and SLOW-SQUARE would always return #F.
+
+In the fourth choice, PREV doesn't take an argument!  So that can't be right,
+and you don't even have to look at the LET.
+
+Scoring: 4 points, all or nothing.
+
+
+3.  Environment diagram.
+
+There are four frames (including the global one) and three procedures
+in the diagram.
+
+In the global frame, X is bound to 4, BAZ is bound to procedure P1,
+and FOO is bound to procedure P3.
+
+Frame E1 extends the global environment.  In it, X is bound to 30
+and * is bound to procedure P2.
+
+Frame E2 extends E1.  In it, Y is bound to 8.
+
+Frame E3 extends E1.  In it, A is bound to 30, and B is bound to 8.
+
+Procedure P1 is created in the global environment with parameter X
+and body (define ...) (lambda ...)
+
+Procedure P2 is created in E1 with parameters A and B, and body (+ a b).
+
+Procedure P3 is created in E1 with paremeter Y and body (* x y).
+
+---------
+
+The first expression just adds the X binding to the global environment.
+
+The second expression creates P1 and binds BAZ to it in the global
+environment.
+
+The third expression invokes BAZ, so it creates E1 with X bound to 30.
+[A common error was to bind X to 13, thinking that * means addition
+in the expression (* 3 10).  But procedure P2 hasn't even been created
+yet when (* 3 10) is evaluated, let alone the fact that this expression
+is evaluated in the global environment because it was typed at a Scheme
+prompt.]  Then it evaluates the body of BAZ in environment E1.  This
+creates P2, binds * to it in E1, creates P3, and returns P3 as the
+value from BAZ.  Then FOO is bound to that value, P3, in the global
+environment.
+
+The fourth expression computes (* 2 x) in the global environment,
+getting 8, and creates E2 with Y bound to 8.  [A common mistake was
+to use the value 30, in E1, for X and also use P2 for *, thereby
+computing the value 32 for Y.]  Then, with E2 as the
+current environment, it evaluates the body of FOO, which is (* x y).
+Since E2 is the current environment, and it extends E1, the symbol *
+represents procedure P2 in this expression.  Since this is a
+user-defined procedure, not a primitive, this creates E3 with A
+bound to 30 (the value of X found in E1) and B bound to 8 (the value
+of Y found in E2). Then (+ a b) is evaluated in E3, returning the
+value 38, which is the value of the entire expression.
+
+---------
+
+Scoring of common mistakes:
+
+  3  correct
+
+  2  correct return value 38, but...
+      E3 extends E2
+      E3 variables are named X and Y instead of A and B
+      E3 binds A to "X" instead of 30 and B to "Y"
+      E3 left out altogether
+      P3 right bubble points to E2
+
+  1  X=13 in E1
+     Y=32 in E2
+     E2 extends global environment
+     In E1, "(* a b)" is bound to "(+ x y)"
+     The third expression is interpreted as if it were
+	(define (foo) (baz (* 3 10)))
+      thereby making FOO a procedure of no arguments that calls BAZ
+
+  0  P3's right bubble points to the global frame
+     E1 extends E2 (very strange sequence of events!)
+     Y=30, as if it were
+        (define (baz y) (* x y))
+     extra/missing frames or procedures except as noted earlier
+     several errors
+
+
+4.  List mutation.
+
+The easiest way to do a problem like this is to use a LET in which
+you give names to every relevant piece of the list structure.  Then,
+inside the LET, you can mutate the pairs in any old order without
+risk of error:
+
+(define (make-alist! lst)
+  (if (null? lst)
+      'done
+      (let ((car1 (car lst))
+	    (cdr1 (cdr lst))
+	    (car2 (cadr lst))
+	    (cdr2 (cddr lst)))
+	(set-car! lst cdr1)
+	(set-cdr! lst cdr2)
+	(set-car! cdr1 car1)
+	(set-cdr! cdr1 car2)
+	(make-alist! cdr2)))
+  lst)
+
+But that's more work than is really needed.  If you're clever about
+the order in which you do the mutation, you can get by with only one
+temporary variable.  There are several such solutions; here's one:
+
+(define (make-alist! lst)
+  (if (null? lst)
+      'done
+      (let ((tmp (cddr lst)))
+	(set-cdr! (cdr lst) (cadr lst))
+	(set-car! (cdr lst) (car lst))
+	(set-car! lst (cdr lst))
+	(set-cdr! lst tmp)
+	(make-alist! tmp)))
+  lst)
+
+Both of these solutions use the original first pair as the top-left pair
+of the resulting association list; the original second pair becomes the
+bottom-left pair.  Several people noticed that you can rearrange the
+pairs with no temporary variables at all if you reverse those roles,
+so that what used to be the second pair becomes the head of the new
+association list.  Unfortunately, this isn't quite a correct solution,
+because the caller of MAKE-ALIST! probably has some variable that still
+has the original first pair as its value, so the caller will think that
+that first pair is the new a-list.
+
+Neither of these solutions uses the value returned by recursive calls.
+It's also possible to write a solution that does:
+
+(define (make-alist! lst)
+  (if (null? lst)
+      'done
+      (let ((tmp (make-alist! (cddr lst))))
+	(set-cdr! (cdr lst) (cadr lst))
+	(set-car! (cdr lst) (car lst))
+	(set-car! lst (cdr lst))
+	(set-cdr! lst tmp)))
+  lst)
+
+Note that you must check (NULL? LST) *before* you try to take its
+CAR or CDR.
+
+Scoring of typical solutions:
+
+4  OK
+3  Bad/missing base case;
+   rearranges by mutation but the order isn't quite right;
+   leaves second pair on top;
+   uses return value from recursive call but doesn't return a value.
+2  No temporary variable (via LET or helper procedure).
+1  Uses CONS (or LIST or APPEND, etc).
+0  (set! (car lst) ...) or similar confusions.
+
+Solutions using CONS scored lower than other errors because the problem
+explicitly said not to allocate new pairs.  It's important that you 
+understand the difference between allocating a pair and making a new
+pointer to an already-existing pair.  Although it's true that the old
+pairs would be reclaimed, so the total storage requirement of the program
+wouldn't increase with solutions using CONS, sometimes it's important not
+to allow a delay for garbage collection.  For example, if your program is
+creating video animation in real time, a garbage collection might bring
+the animation to a halt for a substantial time, perhaps half a second.
+
+
+5.  Vectors.
+
+To solve this problem it's important to understand what it's about.  The
+result (histogram) vector is separate from the argument (scores) vector; the
+two vectors have different sizes; there is no simple correspondence between
+one element of the result and one element of the argument.  Each element of
+the result depends on examining *every* element of the argument.  The kind of
+higher order function strategy that we often use for lists is not appropriate
+in this problem.
+
+Having passed that hurdle, there is an insight about algorithms that helps
+to simplify the solution if you see it:  Although each element of the result
+depends on every element of the argument, each element of the *argument*
+contributes to *only one* element of the result.  Therefore, a solution that
+works by iterating through the elements of the argument can run in Theta(N)
+time, whereas a solution that iterates through the elements of the result
+will require Theta(N^2) time, and more complicated code.
+
+Here is the Theta(N) solution:
+
+(define (histogram scores)
+  (define (help result i)
+    (if (< i 0)
+	result
+	(begin (vector-set! result
+			    (vector-ref scores i)
+			    (+ (vector-ref result (vector-ref scores i)) 1))
+	       (help result (- i 1)))))
+  (help (make-vector (+ (vector-max scores) 1) 0)
+	(- (vector-length scores) 1)))
+
+It's important that the call to MAKE-VECTOR initializes every element of the
+histogram vector to zero, because we're going to be adding to those values in
+the HELP loop.
+
+You might find it easier to read this slight variant:
+
+(define (histogram scores)
+  (define (help result i)
+    (if (< i 0)
+	result
+	(let ((score (vector-ref scores i)))
+	  (vector-set! result
+		       score
+		       (+ (vector-ref result score) 1))
+	  (help result (- i 1)))))
+  (help (make-vector (+ (vector-max scores) 1) 0)
+	(- (vector-length scores) 1)))
+
+Here's the Theta(N^2) version:
+
+(define (histogram scores)
+  (define (count-score score total j)
+    (cond ((< j 0) total)
+	  ((= (vector-ref scores j) score)
+	   (count-score score (+ total 1) (- j 1)))
+	  (else
+	   (count-score score total (- j 1)))))
+  (define (help result i)
+    (if (< i 0)
+	result
+	(begin (vector-set! result
+			    i
+			    (count-score i 0 (- (vector-length scores) 1)))
+	       (help result (- i 1)))))
+  (help (make-vector (+ (vector-max scores) 1))
+	(vector-max scores)))
+
+And, yes, instead of writing COUNT-SCORE as above, you could use
+(VECTOR-LENGTH (VECTOR-FILTER ...)) to find the count of students with a
+given score.  But that would be pretty inefficient (although only by a
+constant factor), because VECTOR-FILTER examines every element of the
+argument vector twice, and creates a new vector, which you use only long
+enough to count its elements, then throw it away.  VECTOR-FILTER makes a good
+homework problem, but it's not something you would ever really want to use in
+vector-based programming.
+
+It's possible to use the Theta(N^2) algorithm with only one helper procedure,
+instead of two, by having the helper take two index arguments, one for each
+vector.  But it's really, really hard to get that right, and even if you do,
+it's really, really hard for anyone else (or you, next week) to read the
+resulting program.
+
+
+The first index in a vector is 0; the last is (- (vector-length vec) 1).
+Many people lost a point by trying
+	(vector-ref vec (vector-length vec))
+
+People found many ways to make the problem more complicated than necessary,
+such as using
+	(define (helper i)
+	  ...
+	  (set! i (+ i 1))
+	  (helper i)...)
+instead of
+	(define (helper i)
+	  ...
+	  (helper (+ i 1))...)
+This isn't incorrect, but at this late stage in the semester it shows an iffy
+understanding of recursion.
+
+The only two places you can use DEFINE are at the Scheme prompt or at the
+beginning of a procedure body.  You can't, for example, say
+	(cond (some-test
+	       (define ...)
+	       ...)
+	 ...)
+
+
+Scoring:
+
+7  correct.
+
+6  off-by-one error in calculating vector length or end test.
+
+5  in Theta(N) algorithm, doesn't initialize result elements to zero.
+5  computes vector correctly but doesn't return it.
+5  right logic, but a Scheme language error (e.g., misplaced DEFINE).
+
+4  (VECTOR-REF RESULT INDEX) instead of
+   (VECTOR-REF RESULT (VECTOR-REF SCORES INDEX)).
+
+2  No allocation of new vector (result overwrites argument).
+
+0  Uses lists, or takes car/cdr of a vector.
+
+There were other, less common errors; generally "has the idea" got 5, while
+"has an idea" got 2.
+
+
+6.  Parallelism in real life.
+
+For this question we got several essays trying to justify solutions other
+than the obvious ones.  For the most part we didn't accept these -- the
+problem did say "the answer which BEST describes..." -- with one exception
+noted in part (b) below.
+
+(a) People at tables can't get food; people waiting for food can't get
+tables.  This is a potential deadlock, and that was the answer we wanted.
+It's true that the deadlock might not happen, because some people at
+tables may actually have food and might eventually leave, letting the line
+continue moving.  It depends partly on whether the restaurant servers
+believe you when you say "it's okay to serve me because my friend is already
+sitting at a table and saving me a seat."  Even if they do, a deadlock can
+happen if someone comes in alone (so doesn't have a friend to grab a table)
+and when that person gets to the front of the line, all the tables are filled
+with friends of people behind him/her in line.
+
+You may think "it's UNFAIR for people who don't have food yet to hog the
+tables" or "it's INEFFICIENT for people to sit at tables when they don't
+have food yet."  But these are technical terms about parallellism errors,
+and the particular situation described in the problem is technically a
+deadlock.
+
+(b) There are several inspectors serving several lines in parallel, but
+there's only one metal detector, which acts as a single serializer for
+all the inspectors.  This is inefficiency (too much serialization).
+
+Some people argued that the metal detector is best viewed as an actual
+resource, not as a serializer, and so this is correct, if unfortunate,
+serialization of a shared resource.  We accepted that reasoning, so we
+also accepted "none of the above" as a correct answer.
+
+(c) You write while your friend researches.  This is correct parallelism,
+with two processors carrying out parallelizable tasks.
+
+Some people argued that the tasks *aren't* correctly parallellizable
+because the research has to come before the writing.  That idea has some
+merit for a short paper, but you wouldn't be writing a short paper as a
+team anyway; it'd be an individual assignment.  We meant that you were
+writing one part of the paper while your friend was researching a different
+part of the paper.
+
+Some people said "unfairness" because you have to do the boring writing
+while your friend is off doing the interesting research.  One of the
+nice things about working in groups is that sometimes you're lucky and
+your interests complement those of your friend!  But even if you would
+feel an unfairness in this arrangement, it's not unfair in the technical
+sense -- a parallelism unfairness would be if the librarians always get
+books for your friend before they get books for you.
+
+Scoring: One point each.
+
+
+7.  Streams.
+
+The easiest solution is in two steps:  First we make a stream of all possible
+strings of {\tt OVER} and {\tt UNDER}, and then we filter out the ones that
+don't satisfy the condition of having at least one of each:
+
+(define foo
+  (cons-stream '()
+               (interleave (stream-map (lambda (p) (cons 'over p)) foo)
+                           (stream-map (lambda (p) (cons 'under p)) foo))))
+
+(define patterns
+  (stream-filter (lambda (p) (and (member 'over p) (member 'under p)))
+                 foo))
+
+You can't combine these two steps; several people tried this:
+
+(define patterns     ;;; wrong!
+  (stream-filter (lambda ...)
+                 (cons-stream '() (interleave (stream-map ... patterns)
+                                              (stream-map ... patterns)))))
+
+The trouble is that this process will never get started, because the two calls
+to stream-map can only operate on patterns that have previously been
+generated, and there won't be any of those until something makes it through
+the filter.  As a result, the variable PATTERNS hasn't been defined when the
+calls to stream-map try to use it.
+
+Another wrong solution was to try to avoid the need for filtering by "priming
+the pump" with initial patterns other than the empty one, like this:
+
+(define patterns         ;;; wrong!
+  (cons-stream '(over under)
+     (cons-stream '(under over)
+        (interleave ...))))
+
+This indeed gets started correctly, and generates only legal patterns,
+but it doesn't generate all of them.  In particular, it won't generate
+the example shown in the problem:
+
+    (over over under over under under)
+
+because this pattern, although legal, doesn't end with OVER UNDER or
+UNDER OVER.
+
+Some people, recognizing the problem with that last solution, tried to
+get around it by adding words both front and back.  That might possibly
+work, but the people who tried it wanted to add words at the end with
+             (cons p 'over)
+which of course doesn't make a valid list.
+
+Another intriguing method involved the use of random numbers to make
+a randomly chosen pattern for each element of the stream.  It can be
+argued that if the random number generator has perfectly well-distributed
+results, this approach will eventually generate any desired pattern.
+(And, since the number of already-generated patterns is finite, and
+the number of not-yet-generated patterns is infinite, the probability
+of duplication of patterns is zero!  Alas, this doesn't mean it can't
+happen.  :-)  But we didn't accept these solutions because part of the
+idea in an infinte stream is that you have to be able to guarantee that
+any particular element is reachable in bounded time.
+
+
+Scoring:  We graded this one very leniently:
+
+3  correct
+2  interleave correct, filtering missing or incorrect
+1  interleave wrong, but a good try
+0  not close
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-2.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-2.soln.txt
new file mode 100644
index 0000000..759cb3b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-2.soln.txt
@@ -0,0 +1,484 @@
+CS 61A		Solutions to sample midterm 3 #2
+
+1.  Box and pointer.
+
+(let ((x (list 1 2 3)))
+  (set-cdr! (car x) 4)
+  x)
+
+prints: *** Error:
+    set-cdr!: wrong type of argument: 1
+
+(CAR X) is 1, not a pair, so it has no cdr to mutate.
+
+
+(let ((x (list 1 2 3)))
+  (set-cdr! x 4)
+  x)
+
+(1 . 4) is printed.
+
+X-->[o|o]--> 4      
+     |      
+     V      
+     1 
+
+Since we are changing the list's cdr to a non-pair, it becomes a "dotted pair."
+
+
+(let ((x (list 1 2 3)))
+  (set-car! (cdr x) x)
+  x)
+
+(1 (1 (1 (1 (1 ...   is printed.
+
+
+      +------+
+      |      |
+      V      |
+X-->[o|o]-->[o|o]-->[o|/]
+     |               |      
+     V               V      
+     1               3
+
+The list's second element is replaced with the list itself, making a circular
+list.  3 is still the third element, but the print procedure never reaches it.
+
+
+(define a ((lambda (z) (cons z z)) (list 'a)))
+(set-cdr! (car a) '(b))
+a
+
+((a b) a b) is printed.
+
+A-->[o|o]
+     | | 
+     | |
+     | |    
+     | |    
+     V V    
+    {o|o}-->[o|/]
+     |       |      
+     V       V      
+     a       b 
+
+Note that the two arrows downward from the first pair point to the same place!
+An arrow to a pair points to the entire pair, not just to its car or its cdr.
+(By contrast, an arrow *from* a pair *does* come from one half of the pair,
+not from the entire pair.)
+
+The pair in {braces} is the one whose cdr is changed (from being the empty
+list) by the set-cdr! invocation.
+
+
+Scoring: One point per printed representation; one point per diagram.
+
+
+
+2.  Assignment, state.
+
+(define (make-player room)
+  (lambda (message)
+    (set! room (next-room room message))
+    room))
+
+That's it!  There's no need to check for specific messages such as South,
+since next-room will take care of that for you.
+
+Scoring:
+
+4  correct
+3  sets room correctly but doesn't return it
+2  domain and range of make-player and of the lambda correct, but
+   something's wrong with setting room.
+1  room is set, but no lambda
+0  even worse
+
+
+3.  Environment diagram.
+
+
+First of all, in this problem there are two procedures created:
+
+P1: parameters X and F, body (IF ...)
+
+P2: parameter Y, body (+ X Y)
+
+
+There are also four environment frames:
+
+G: the global frame
+
+E1: has X bound to 3, F bound to #F
+
+E2: has X bound to 5, F bound to procedure P2
+
+E3: has Y bound to 7
+
+
+Solutions not satisfying the above generally got no points.
+
+The hard part is how to hook these up.  When FOO is defined, a binding
+for FOO is made in the global environment.  Also, the global environment
+is current when the (outer) LAMBDA expression is evaluated, so FOO is P1
+and P1's right bubble points to G.
+
+By the way, that first expression could have been written as
+
+        (define (foo x f) ...)
+
+with exactly the same meaning.
+
+That's all that happens when the first expression is evaluated.
+Procedure P2 and frames E1 through E3 are all created during the
+evaluation of the second expression.
+
+First we call FOO with arguments 3 and #F.  This creates frame E1,
+which extends G, because G is what P1's right bubble points to.
+
+Now we evaluate the body of P1 (a/k/a FOO), using E1 as the current
+environment.  The body is the IF expression.  F is false, so we must
+evaluate (FOO 5 (LAMBDA ...)).
+
+To evaluate a procedure call we first evaluate all the subexpressions.
+In particular, the inner LAMBDA expression is evaluated at this time,
+with E1 as the current environment.  Therefore, P2's right bubble
+points to E1.
+
+Once we've evaluated the subexpressions, we create a new frame, E2,
+binding FOO's parameters to these new arguments.  So in E2 the value
+of X is 5, and the value of F is procedure P2.  Note that this
+binding for F is in E2, but the procedure to which F is bound was
+created in E1.  That's really important, and many groups missed it.
+
+What environment does E2 extend?  Since we are calling P1 (a/k/a FOO),
+we extend the environment in P1's right bubble, namely G.  This, too,
+is a really important point.  If you had E2 extend E1, you are using
+dynamic scope, not lexical scope, which is correct for Scheme.
+
+We now evaluate the body of P1, the IF expression, with E2 current.
+The value of F is true in this environment (since anything other than
+#F is considered true), so we now evaluate (F 7).
+
+To do that, we make a frame, E3, in which Y is bound to 7.  What environment
+does E3 extend?  The procedure we're calling, P2, was created in E1, so E3
+must extend E1 -- not E2, even though that's the current environment.
+
+Since E3 extends E1, the relevant value of X is 3, and so the answer
+that Scheme prints is 10, which is 3+7.
+
+The most common wrong answer was 12, which is 5+7.  (Only a handful of
+papers had any answer other than 10 or 12.)  As it turns out, there were
+two ways of getting the answer 12, with different scores:
+
+  * Many groups thought that procedure P2 was created in environment E2,
+    and so E3 would extend E2 even following the lexical scope rule.
+    This was a relatively mild error, getting 2 points.
+
+  * Many other groups used dynamic scope, getting 1 point.  You were
+    deemed to be using dynamic scope if E3 extended E2 even though P2's
+    right bubble pointed to E1.  You were also deemed to be using
+    dynamic scope if E3 extended E2, and E2 extended E1, regardless of
+    where P2 pointed.
+
+    (A few papers had E2 extending E1, but E3 correctly extending E1,
+    the diagram otherwise correct, and an answer of 10.  These groups
+    were not deemed to be believers in dynamic scope, but merely
+    careless, getting 2 points.)
+
+Several groups got the answer 10 despite incorrect diagrams.  This was a
+surprise, but it turned out that they did it by mixing the substitution
+model with the environment model.  (Since the expressions in the problem
+did not involve mutation, the substitution model does yield the right
+value for (FOO 3 #F) even though it's not what Scheme really does.)
+More specifically, these solutions had (+ 3 Y) instead of (+ X Y) as the
+body of P2.  Such papers got 1 point.
+
+Some papers had P2's right bubble pointing to E3, a frame that didn't
+even exist when P2 was created.  We don't understand what those groups
+were thinking.
+
+Another zero-point solution was to have bindings to expressions rather
+than to values.  For example, some papers had a binding in E2 of the form
+
+	F: (lambda (y) (+ x y))
+
+It's really important to understand that Scheme's job is to translate
+expressions into values, and that only values get into environments.
+(This is what it means to say that Scheme uses applicative order
+evaluation, rather than normal order.)
+
+Scoring:
+
+3  OK
+2  lexical scope, but some error
+1  dynamic scope, or substitution model
+0  gibberish, extra frames, expressions in environments
+
+
+4.  List mutation.
+
+We were surprised at how hard you found this problem.  The solution
+we wanted is pretty short and simple:
+
+(define (merge! a b)
+  (cond ((null? a) b)
+	((null? b) a)
+	((<= (car a) (car b))
+	 (set-cdr! a (merge! (cdr a) b))
+	 a)
+	(else
+	 (set-cdr! b (merge! a (cdr b)))
+	 b)))
+
+This solution DEPENDS CRITICALLY on the fact that merge! RETURNS A VALUE.
+Most of you got in trouble by forgetting to return a value.
+
+The easiest way to think about this problem may be to start by writing
+a functional (non-mutating) version:
+
+(define (merge a b)        ; Not a solution to the exam problem!
+  (cond ((null? a) b)
+	((null? b) a)
+	((<= (car a) (car b))
+	 (cons (car a) (merge (cdr a) b)))
+	(else
+	 (cons (car b) (merge a (cdr b))))))
+
+There's a stream version of this procedure in the book, and in any case
+you should find it easy to invent this.  The mutating version has the
+SAME STRUCTURE, but instead of calling CONS it has to mutate an
+existing pair, and separately return a value.
+
+One of the most important ideas you can learn is the mathematical
+concept of SYMMETRY.  In this case, what that means is that you should
+notice that merge! treats its two arguments equivalently; if you
+interchanged the order of the arguments you should still get the same
+answer.  Therefore, your program should be symmetrical as well; anything
+you do to A should be done in the same way to B.  Many people used
+asymmetrical kludges, and therefore had incredibly long programs that
+didn't work.
+
+Another good idea to learn is QUIZMANSHIP.  Some time around your
+11th or 12th cond clause, you ought to stop and think, "They wouldn't
+assign something this complicated on an exam."  (This is quite
+different from the sort of quizmanship in which you try to guess at
+answers based on irrelevant factors.)
+
+Several solutions had cond clauses with complicated conditions such as
+    (and (< (car a) (car b)) (> (car a) (cadr b)))
+There are a few situations in which you really do have to use this
+degree of complexity, but they're rare.  Really what this means is
+that you're not trusting the recursion to do its job with the second
+elements of the lists.
+
+Several solutions rearranged things in a way that would work only if
+the second-smallest number is in the other list from the smallest
+number.  That is, you hook the two cars together and then recursively
+deal with the two cdrs.  Think about a case like
+   (merge! (list 1 2 3) (list 4 5 6))
+In this example the result should be the same as if you'd appended
+the lists, not the same as if you interleaved them.
+
+A few people did append the lists, and then sort them by insertion
+sort or bubble sort or some such thing.  This can work, and we
+gave full credit for working solutions of this kind, but you should
+be aware that it makes the problem take O(n^2) time instead of
+O(n), and it's more complicated to write correctly, too!  By
+appending the two lists you're losing the valuable information
+that each of them is already ordered.
+
+In a problem about lists, you have to remember that the car and
+the cdr of a pair do NOT play symmetrical roles in the representation
+of a list.  Each car is an element; each cdr is a sublist.  In a
+list of numbers, each car is a number; no cdr is a number.  Therefore,
+any solution that interchanges cars and cdrs or tries to mutate a
+car of something just can't be right:
+   (set-car! (car x) ...)
+   (set-cdr! (car x) ...)
+   (set-cdr! x (car y))
+   (set-car! x (cdr y))
+For solutions of this sort we subtracted three points from what
+the score would otherwise be.
+
+Grading:
+7  correct
+6  base case error
+5  no return value, but it only matters to the ultimate caller
+4  no return value, and so the recursion doesn't work
+4  rearranges pairs with set-cdr! but incorrectly
+3
+2  uses set-car! to rearrange pairs.  (Some set-car! solutions are correct.)
+1
+0  allocates pairs (calls CONS, LIST, APPEND, etc.)
+0  uses set! to rearrange pairs.  (Some uses of set! are okay, but they
+                                    never actually help the solution.)
+
+Then subtract 3 points for the cases mentioned in the previous paragraph.
+
+
+5.  Vectors.
+
+There are many ways to do this, but they all share two essential points:
+First, there must be a helper procedure that recursively moves through the
+vector, changing one element at a time; second, there must be some way to
+remember one element (generally the original last element) of the vector,
+either through a LET or through an extra argument to the helper.
+
+Here's a straightforward solution:
+
+(define (rotate! v)
+
+  (define (help i)
+    (if (= i 0)
+	'this-value-doesnt-matter
+	(begin (vector-set! v i (vector-ref v (- i 1)))
+	       (help (- i 1)))))
+
+  (let ((temp (vector-ref v (- (vector-length v) 1))))
+    (help (- (vector-length v) 1))
+    (vector-set! v 0 temp)
+    v))
+
+The last line (with just the V) is there so that ROTATE! returns the vector,
+since the return value from VECTOR-SET! is unspecified.
+
+The elements of a vector of N elements are numbered from 0 to N-1, not from
+1 to N.  That's why the expression (- (VECTOR-LENGTH V) 1) is used to find
+the index of the rightmost element.
+
+It's very important that this program starts at the right end and works
+down to the left end, so that if we are given (A B C D) to rotate, the
+intermediate results are
+	(a b c d)
+	(a b c c)
+	(a b b c)
+	(a a b c)
+	(d a b c)
+If we started at the left end instead, we'd get
+	(a b c d)
+	(a a c d)
+	(a a a d)
+	(a a a a)  ; maybe stop here, or
+	(d a a a)  ; maybe something like this.
+There are other ways to organize the program so that left-to-right operation
+does produce the desired result.  Here's one that works from left to right,
+always swapping the chosen element with the last element:
+
+(define (rotate! v)
+
+  (define (swap v i j)
+    (let ((temp (vector-ref v i)))
+      (vector-set! v i (vector-ref v j))
+      (vector-set! v j temp)))
+
+  (define (help i)
+    (if (< i (vector-length v))
+	(begin (swap v i (- (vector-length v) 1))
+	       (help (+ i 1)))))
+
+  (help 0)
+  v)
+
+When we ran across this solution in the grading, it took us some time to
+convince ourselves that it really works.  Here's a trace of intermediate
+results:
+	(a b c d)
+	(d b c a)
+	(d a c b)
+	(d a b c)
+	(d a b c)
+
+The problem told you to mutate the given vector, not create a new one.
+That rules out any call to MAKE-VECTOR, either directly or through a
+helper procedure such as VECTOR-COPY; it also rules out things like
+	(list->vector (list-rotate (vector->list v)))
+
+A few students recognized that they should use a LET to save something,
+but instead of saving one element, tried to save the entire vector with
+something along the lines of
+	(let ((new-v v)) ...)
+If this did what they intended, it would be ruled out by the problem
+statement, but in fact it does *not* make a copy of the vector.  It just
+makes a new variable that's bound to the same (as in EQ?, not EQUAL?)
+vector as the original variable V.
+
+
+Scoring:
+
+7  correct.
+
+6  indexing off by one (1 to N instead of 0 to N-1).
+   vector rotated, but not returned.
+
+4  one element lost (no LET or equivalent).
+   new vector allocated, but no VECTOR->LIST or LIST->VECTOR.
+   no base case in recursive helper.
+   one value propagated by shifting left-to-right.
+
+2  LIST->VECTOR etc.
+   no recursion (just two values swapped).
+   other messed up reorderings (such as reversal).
+
+0  Total misunderstanding of vectors, such as (CAR V).
+
+We did not assign scores 1, 3, or 5.
+
+
+6.  Concurrency.
+
+(a)  The only possible value is 10.  If the first process runs first,
+it sets BAZ to 5, and then the second process sets it back to 10.  If the
+second process runs first, it sets BAZ to 20, and then the first process
+sets it back to 10.
+
+(b)	5: P1 computes baz/2 = 5, then P2 runs completely, then P1 stores 5.
+	10: either correct sequential order
+	15: P2 loads BAZ once from memory (getting 10), then P1 runs
+		completely (setting BAZ to 5), then P2 loads BAZ again
+		(getting 5), adds 10+5, stores 15.
+	20: P2 computes baz+baz = 20, then P1 runs completely, then
+		P2 stores 20.
+
+
+Scoring:
+
+3  correct
+2  (a) correct, (b) missing one value and no wrong ones added
+1  (a) correct or (b) correct
+0  neither correct
+
+
+7.  Streams.
+
+(define stream-car car)       ; unchanged from the stream-only version
+
+(define (stream-cdr sl)
+  (if (procedure? (cdr sl))   ; or PROMISE?
+      (force (cdr sl))
+      (cdr sl) ))
+
+;;;;;;;; or
+
+(define (stream-cdr sl)
+  (if (or (pair? (cdr sl)) (null? (cdr l)))
+      (cdr sl)
+      (force (cdr sl)) ))
+
+Scoring: 1 point for stream-car, 3 for stream-cdr.  Part credit in the latter
+for any attempt that shows understanding of the need to distinguish the two
+cases, especially if it's clear that what needs to be distinguished is the
+nature of the cdr rather than of the entire argument.
+
+Comment: Many of you seem to be upset because you never heard of the
+predicate PROCEDURE? and therefore couldn't figure out how to do the
+test.  I'm unsympathetic to this problem, for several reasons:
+
+        1.  You came across PROCEDURE? in the adventure game project,
+        where it is used in the version of PERSON? that you rewrote.
+
+        2.  You own a copy of the Scheme reference manual, which has
+        a perfectly good index.
+
+        3.  If you couldn't think of PROCEDURE? you could have used
+        PAIR? or ATOM? or LIST? to distinguish the two cases.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-3.soln.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-3.soln.txt
new file mode 100644
index 0000000..20db87b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Midterm3/mt3-3.soln.txt
@@ -0,0 +1,459 @@
+CS 61A		Solutions to sample midterm 3 #3
+
+1.  Box and pointer.
+
+(let ((x (list 1 2 3)))
+  (set-cdr! (cdr x) (cddr x))
+  x)
+
+(1 2 3) is printed.
+
+X-->[o|o]-->[o|o]==>[o|/]
+     |       |       |      
+     V       V       V      
+     1       2       3
+
+In this example the SET-CDR! call effectively does nothing, since it
+replaces the cdr of (cdr x) with the cddr -- the cdr of the cdr -- of X.
+The arrow drawn with = instead of - above is the one that's replaced with
+itself.
+
+
+(let ((x (list 1 2 3)))
+  (set-car! x (cddr x))
+  x)
+
+((3) 2 3) is printed.
+
+     +----------------+
+     |                |
+     |                V
+X-->[o|o]-->[o|o]-->[o|/]
+             |       |      
+             V       V      
+             2       3
+
+The set-car! invocation changes (car x), i.e., the first element of X.
+It's changed to (cddr x), which is a *sublist*, not just an element, of X.
+Thus the new first element is not 3, but (3).
+
+
+
+(let ((x (list 1 2 3)))
+  (set-car! (cdr x) (cdr x))
+  x)
+(1 ((((((((( ...  is printed.
+
+             +-+
+             | |
+             | V
+X-->[o|o]-->[o|o]-->[o|/]
+     |               |      
+     V               V      
+     1               3 
+
+Note that the arrow at the top of the diagram points *from the car* of the
+second pair, but points *to the entire pair* (because that's how pointers
+always work), not just to the cdr, even though that's where the arrowhead
+happens to be.
+
+There's still a 3 in this list, but it'll never be printed.
+
+
+
+(let ((x (list 1 2 3 4)))
+  (set-cdr! (cddr x) (cadr x))
+  x)
+
+(1 2 3 . 2) is printed.
+
+X-->[o|o]-->[o|o]-->[o|o]--> 2      
+     |       |       |      
+     V       V       V      
+     1       2       3
+
+In this example we change the cdr of a pair (because we're doing SET-CDR!) to
+point to a non-pair, (CADR X), the second element of X, which is 2.  Thus the
+result is an improper list, so there's a dot in the printed version.
+
+It doesn't matter, in the diagram, whether you have two 2s, as above, or have
+two arrows pointing to the same 2.  It *does* matter when the thing being
+pointed to is a pair; then there's a big difference between two pointer to the
+same pair, and two pairs that have the same values in them.
+
+
+Scoring: One point per printed representation; one point per diagram.
+
+
+2.  Local state.
+
+Does Louis's MEMOIZE give wrong answers?  YES.
+
+Explanation:  It has one table shared among all memoized functions,
+instead of a separate table per function.
+
+Example:
+
+[Louis has defined MEMO-FIB, as shown in the question.]
+
+> (memo-fib 4)
+3
+> (define memo-square (memoize (lambda (x) (* x x))))
+> (memo-square 4)
+3
+
+Since MEMO-FIB and MEMO-SQUARE share the same table, (memo-square 4)
+returns the value previously remembered from (memo-fib 4).
+
+Some students who checked NO explained why the answer is really YES, so
+we figured people misread the question, and went by your explanantion
+rather than by which choice you checked.
+
+Pretty much any explanation with a phrase like "a single table" or
+"universal table" or "global table" was accepted.  (It's not quite right
+to say "a table in the global environment"; the table is actually a local
+state variable of MEMOIZE.)
+
+Explanations that merely restate the form of Louis's change to the program
+were not accepted:  "The program gives wrong answers because Louis has moved
+the LET to outside of the LAMBDA."  You had to explain what *effect* that
+would have on the program's *behavior*.
+
+The example didn't necessarily have to take the form of a specific Scheme
+interaction as above, but did have to assert that two different functions are
+memoized.
+
+Scoring:
+
+4  correct
+2  correct explanation, no/bad example;
+   iffy explanation (like "global environment" discussed above)
+0  bad explanation (including saying that it doesn't give wrong answers)
+
+No odd scores were assigned.
+
+
+3.  Environment diagram.
+
+Bindings A=8 and B=9 go in the global environment.
+
+Then comes the LET, which is equivalent to an invocation of the procedure
+generated by an implicit LAMBDA:
+
+	((lambda (a f) (f 5))
+	 3
+	 (lambda (b) (+ a b)))
+
+As with any procedure invocation, **first all the subexpressions are
+evaluated!**  This evaluation takes place in the global environment -- we
+haven't invoked any procedures yet.
+
+Thus, two procedures are created whose right bubbles point to the global
+environment.  Only then do we invoke the (lambda (a f) ...) procedure, which
+creates a frame in which A is bound to 3, and F is bound to the
+(lambda (b) ...) procedure.  That new frame, of course, extends the global
+environment.
+
+With that frame as (the first frame of) the current environment, we can
+evaluate the body of the LET, which is (F 5).  We find a binding for F in
+the current environment; it's the (lambda (b) ...) procedure.  So we can
+invoke that with the argument 5.
+
+Since F's right bubble points to the global environment, that's what we
+extend with the new frame that binds B=5.  So when we evaluate F's body,
+which is (+ A B), we find the bindings A=8 and B=5.
+
+Thus, the final answer is 13.
+
+
+The overwhelmingly most common mistake was to think that the (lambda (b) ...)
+procedure's right bubble points to the A=3 frame, so the B=5 frame points
+there also, and the final value is 8.  You should know, though, that a LET
+binding can't depend on another binding in the same LET; for example, if the
+problem had been
+
+	(let ((a 3)
+	      (c (+ a b)))
+	  (+ a c))
+
+I hope most people would have known that C would be 8+9, using the global
+bindings for both A and B.  The fact that the computation using A happens
+inside a lambda body doesn't change the fact that the LET's binding for A
+isn't available to it.
+
+A few people drew the environment diagram that would give an answer of 8,
+but instead wrote 13 as their final answer, which means either that they
+copied someone else's final answer or that they *do* know how Scheme
+evaluates expressions, but don't make any connection between that and
+the environment model.  We graded this as if they'd said 8.
+
+A couple of people had procedure F's right bubble correctly pointing to the
+global environment, but nevertheless had the B=5 frame extending the A=3
+frame, using dynamic scope instead of lexical scope.  This gave the same
+wrong final answer of 8.
+
+Scoring:
+
+6  correct.
+3  answer was (or should have been) 8, as discussed above.
+0  even worse (too many frames, no arrows at all -- there weren't many).
+
+
+4.  List mutation
+
+(define a (list 'x))
+(define b (list 'x))
+(define c (cons a b))
+(define d (cons a b)) 
+
+(eq? a b)                    => #F
+
+	Each call to LIST generates new pairs (one new pair, in this case,
+	because each list has only one element).
+
+(eq? (car a) (car b))        => #T
+
+	Both CARs are the symbol X, and equal symbols are always EQ.
+
+(eq? (cdr a) (cdr b))        => #T
+
+	Both CDRs are the empty list, and there's only one empty list.
+
+(eq? c d)                    => #F
+
+	Each call to CONS generates a new pair.
+
+(eq? (cdr c) (cdr d))        => #T
+
+	Both CDRs are the pair named B -- the same pair.
+
+(define p a)
+(set-car! p 'squeegee)
+(eq? p a)                    => #T
+
+	P and A are two names for the same pair.  Mutating the pair
+	doesn't change the variable bindings.
+
+(define q a)
+(set-cdr! a q)
+(eq? q a)                    => #T
+
+	This one looks trickier because the pair now points to itself,
+	but it's really the same as the previous question: Q and A are
+	two names for the same pair.
+
+(define r a)
+(set! r 'squeegee)
+(eq? r a)                    => #F
+
+	This time we didn't mutate a pair; we changed the binding of
+	one of the variables.  So R and A now name two different things;
+	A is still a pair, but R is now a symbol.
+
+Score: 1/2 point each, rounded down to the nearest whole point.
+
+
+5.  Vector programming
+
+(define (ssort! vec)
+  (define (help start)
+    (if (= start (vector-length vec))
+	vec
+	(let ((smallest (subvec-min-start vec start)))
+	  (let ((temp (vector-ref vec smallest)))
+	    (vector-set! vec smallest (vector-ref vec start))
+	    (vector-set! vec start temp)
+	    (help (+ start 1))))))
+  (help 0))
+
+The key point to understand is that you need to walk through the vector,
+bringing the smallest element out to position 0, then the next-smallest to
+position 1, and so on, until you run out of elements.  Thus we have a helper
+procedure with an argument, START, whose value is the position that we're
+up to in the vector; it starts at 0 and is increased by 1 on each recursive
+invocation.
+
+The next important point is that you can't exchange two elements without
+using a temporary variable to remember one of them, hence the LET that
+creates the variable TEMP.  There are two nested LETs because the value of
+SMALLEST is needed to find the value of TEMP in this solution; I could have
+simplified things a little by remembering the other value in the swap instead:
+
+(define (ssort! vec)
+  (define (help start)
+    (if (= start (vector-length vec))
+	vec
+	(let ((smallest (subvec-min-start vec start))
+	      (temp (vector-ref vec start)))
+	  (vector-set! vec start (vector-ref vec smallest))
+	  (vector-set! vec smallest temp)
+	  (help (+ start 1))))))
+  (help 0))
+
+Scoring:
+
+6  correct
+5  trivial error (e.g. base case off by one)
+3  right structure, gets swap wrong
+2  serious algorithm confusion
+0  allocates new vector, uses lists, or incoherent
+
+
+6.  Concurrency
+
+(define (make-mutex)
+  (let ((in-use #f)
+	(s (make-serializer)))
+    (define (the-mutex m)
+      (cond ((eq? m 'acquire)
+	     (if ((s (lambda ()
+		       (if in-use
+			   #t
+			   (begin (set! in-use #t)
+				  #f)))))
+		 (the-mutex 'acquire)))     ; retry
+	    ((eq? m 'release)
+	     (set! in-use #f))))
+    the-mutex))
+
+The structure of the above is just like that of the MAKE-MUTEX in the book,
+except that when an atomic test-and-set operation is needed, it's done by
+including the (IF IN-USE ...) and the (SET! IN-USE #T) within the same
+serialized procedure, rather than by relying on a TEST-AND-SET! primitive.
+
+Many people found the problem deeply confusing.  You learned that
+serialization has three levels of abstraction: the hardware support,
+the critical section mechanism (mutex) based on the hardware, and
+the more abstract level in which procedures are protected rather than
+sequences of instructions.  So what does it mean to define a mutex
+in terms of a serializer?  But actually this could happen.  Suppose
+you are using a language such as Java, with high-level serialization
+built in (and presumably implemented using hardware support), to write
+an operating system that is supposed to provide a mutex capability to
+its users.  You would then write something equivalent to what this
+problem asks for.  What defines an abstraction is its behavior, not
+how it's implemented -- this is the whole idea behind abstraction.
+
+The SICP version uses (LET ((CELL (LIST FALSE))) ...) because their
+TEST-AND-SET! tests and modifies a pair, not a variable, mainly so that
+it can be an ordinary procedure rather than a special form.  In this
+version there's no need to use a pair, although it wouldn't be wrong.
+
+The ugly (IF ((S (LAMBDA () ...))) ...) is necessary because of the way
+serializers work: they take a procedure as argument and return a protected
+version of that procedure, which must then actually be invoked.
+We didn't take off for minor failures in the notation, accepting even
+solutions in which the argument to the serializer was an expression to
+be evaluated atomically: (IF (S (IF IN-USE ...)) ...)  But we didn't
+accept solutions in which the serializer was given data, rather than
+activity, as its argument.  (More on that below.)
+
+The reason for the nested IFs is a little subtle; the recursive call
+to THE-MUTEX to retry the operation if it fails can't be inside the
+serialized procedure, because then it'll block waiting for S, which is
+held by this process itself -- in effect, setting up a deadlock within a
+single process.  But we didn't take off points for missing this subtlety.
+
+Some people used a single global serializer instead of a separate one
+for each mutex.  At first we considered this a serious error, because
+it means that two mutexes can't be acquired at the same time.  But then
+we realized that the serializer just protects the acquiring of the mutex,
+not the critical section that the mutex itself protects, so any mutex
+holds the serializer only for a very short time.  So we allowed a global
+serializer, except in papers that also missed the point in the previous
+paragraph.  If a mutex can get into a deadlock with itself, while holding
+a serializer needed by all the other mutexes, that's serious enough to
+lose a point.
+
+Some solutions never actually tested whether the mutex was in use before
+acquiring it.  Presumably those people thought that the serializer would
+protect the entire critical section, not just the acquiring, so that if
+an acquire operation could get into the serializer the mutex must be free.
+But that's not the case; the mutex returns to its caller once it has
+set its in-use flag, so the caller's critical section is *not* keeping the
+serializer busy.  Such solutions got at most one point.
+
+There were a few common zero-point solutions.  The strangest were the
+ones that called parallel-execute.  The job of a mutex is to protect
+critical sections against other processes, not to create other processes.
+
+Another zero-point solution had expressions such as (S CELL) that showed
+a lack of understanding of the key fact that a serializer protects
+activities, not data.  Similarly, no points for anything that included
+
+        (something . args)       ;; pfui
+
+which indicated mindless copying from the MAKE-SERIALIZER in the book
+without understanding.  Serializers accept as arguments procedures with
+any number of arguments, but any particular use of a serializer isn't
+going to be that complicated -- and none of these solutions found any
+use for the ARGS variable anyway.
+
+Scoring:
+3  OK
+2  at least an atomic test-and-set implementation
+1  no test-and-set, but some idea
+0  way off
+
+
+7.  Streams.
+
+The answer we expected was
+
+(define all-integers
+  (cons-stream 0 (interleave integers
+                             (scale-stream -1 integers))))
+
+The stream generated by this expression looks like this:
+
+        0, 1, -1, 2, -2, 3, -3, 4, -4, ...
+
+You had to understand two key points to get this solution:
+
+1.  You can't have all the integers in size order.  A stream must have
+a definite first element!  There's no smallest negative integer.  Some
+people tried to REVERSE the stream of integers; that's meaningless.
+
+2.  You can't APPEND-STREAMS two infinite streams.  This is explained
+in the handout you got in lecture.  Since the first stream will never
+finish, it's as if the second stream isn't there at all!  (A few people
+used MERGE, which works for two sorted, increasing streams, but not
+in a case like this where one stream is growing up and one growing down.)
+
+There were many other correct solutions, most of which essentially
+reinvented INTERLEAVE.  Special mention for the following beautiful
+solution (which the student unfortunately didn't get quite right):
+
+(define zeros-ones (cons-stream 0 (cons-stream 1 zeros-ones)))
+
+(define all-integers (subtract-streams zeros-ones
+                                       (cons-stream 0 all-integers)))
+
+where subtract-streams is like add-streams with the obvious difference.
+Work this out to convince yourself that it really works!
+
+Scoring:
+
+4  correct
+3  small mistakes, like leaving out zero
+2  append-stream etc.
+1  stream of streams, like (cons-stream negatives positives)
+0  not a stream at all
+
+We heard from several students who thought that the stream-of-streams
+solution was graded too harshly.  Here's the reasoning behind this
+grading policy:  Most errors come from uncertainty about how to
+implement an infinite stream successfully.  But this error indicates
+a misunderstanding about what the stream abstraction is for!  Think
+about the example of testing whether a number is prime.  We create
+a stream containing a range of numbers (range 2 14) and then we use
+that as an argument to FILTER:
+        (filter (lambda (number) (= (remainder 15 number) 0))
+                (range 2 14))
+
+If RANGE returned a stream of streams, then this FILTER wouldn't
+work, because the elements of the stream wouldn't be numbers!  So,
+even though the problem said "a stream containing all the integers"
+instead of "a stream containing all the integers, in which each
+element is a single integer," it's unreasonable to think that a
+stream whose elements aren't numbers would be acceptable.
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/belowline.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/belowline.pdf
new file mode 100644
index 0000000..5458cba
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/belowline.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/ref-man.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/ref-man.pdf
new file mode 100644
index 0000000..05aec70
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/OOP/ref-man.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Therac-25.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Therac-25.pdf
new file mode 100644
index 0000000..cbd6860
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/Therac-25.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/mapreduce-osdi04.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/mapreduce-osdi04.pdf
new file mode 100644
index 0000000..fce8825
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/mapreduce-osdi04.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/quick.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/quick.pdf
new file mode 100644
index 0000000..b91e5f7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/quick.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/r5rs.pdf b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/r5rs.pdf
new file mode 100644
index 0000000..7cce72d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/r5rs.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/sicp-errata.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/sicp-errata.txt
new file mode 100644
index 0000000..1467159
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/sicp-errata.txt
@@ -0,0 +1,56 @@
+
+
+
+
+   Errata for Structure and Interpretion of Computer Programs 2nd
+   edition
+     ________________________________________________________________
+   
+     Positive line numbers count from the top of the page or exercise,
+     negative line numbers count from the bottom.
+     
+     Page 45, line -13:   Exponent should be n/2, not b/2
+     
+     Page 112, line 2 of exercise 2.30:   Square-LIST should be
+     square-TREE. ("That is, square-tree should behave as follows:")
+     
+     Page 118, lines 1-2:   Should say "...the product OF THE SQUARES
+     of the odd integers..."
+     
+     Page 176, before procedures rectangular? and polar?:   Should say
+     "rectangular and polar numbers, respectively"
+     
+     Page 181, line -5:   Should not refer to exercise 3.24, just to
+     section 3.3.3.
+     
+     Page 185, exercise 2.73a:   Should ask about VARIABLE?, not
+     SAME-VARIABLE?
+     
+     Pages 246 and 247, figures 3.7 and 3.8:   There is an extra ')' at
+     the end of the code.
+     
+     Page 287, figure 3.28:   Rightmost box should have +, not *
+     
+     Page 324, exercise 3.50:   Should refer to section 2.2.1, not
+     2.2.3.
+     
+     Page 341, line 3 of exercise 3.66:   Should say "For example,
+     APPROXIMATELY how many pairs..."
+     
+     Page 375, line 1 of exercise 4.7:   Last LET should be LET*
+     ("...bindings of the let* variables...")
+     
+     Last updated 08/09/99
+     
+
+
+
+
+
+
+
+
+
+
+
+				374
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/Volume2/word.txt b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/word.txt
new file mode 100644
index 0000000..e47aa23
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/Volume2/word.txt
@@ -0,0 +1,121 @@
+
+    WORD AND SENTENCE MANIPULATION PROCEDURES
+
+    The first chapter of the textbook deals exclusively with numeric data.
+    To allow some variety, with interesting examples that aren't about
+    calculus, we are going to use some additional Scheme procedures that
+    manipulate linguistic data: words and sentences.  A word can be
+    considered as a string of characters, such as letters and digits.
+    (Numbers can be treated as words.)  A sentence is a string of words
+    in parentheses.
+
+
+    PROCEDURES TO TAKE APART WORDS AND SENTENCES:
+
+    FIRST	    returns the first character of a word, or
+		    the first word of a sentence
+
+    BUTFIRST	    returns all but the first character of a word,
+		    or all but the first word of a sentence
+
+    BF		    same as BUTFIRST
+
+    LAST	    returns the last character of a word, or
+		    the last word of a sentence
+
+    BUTLAST	    returns all but the last character of a word,
+		    or all but the last word of a sentence
+
+    BL		    same as BUTLAST
+
+    Examples:
+
+    > (first 'hello)
+    h
+
+    > (butlast '(symbolic data are fun))
+    (symbolic data are)
+
+
+    PROCEDURES TO COMBINE WORDS AND SENTENCES
+
+    WORD	    arguments must be words; returns the word with
+		    all the arguments strung together
+
+    SENTENCE	    returns the sentence with all the arguments
+		    (words or sentences) strung together
+
+    SE		same as SENTENCE
+
+    Examples:
+
+    > (word 'now 'here)
+    nowhere
+
+    > (se 'lisp '(is cool))
+    (lisp is cool)
+
+
+
+					    375
+
+
+
+
+
+
+
+					    
+
+
+    PREDICATE PROCEDURES
+
+    EQUAL?	    returns true if its two arguments are the same word
+		    or the same sentence (a one-word sentence is not
+		    equal to the word inside it)
+
+    MEMBER?	    returns true if the first argument is a member of
+		    the second; the members of a word are its letters
+		    and the members of a sentence are its words
+
+    EMPTY?	    returns true if the argument is either the empty
+		    word [which can be represented as "" ] or the
+		    empty sentence [which can be represented as '() ]
+
+
+
+    MISCELLANEOUS
+
+    COUNT	    returns the number of letters in the argument word, or
+		    the number of words in the argument sentence.
+
+    ITEM	    takes two arguments: a positive integer N, and a word or
+		    sentence; returns the Nth letter of the word, or the Nth
+		    word of the sentence (counting from 1).
+
+
+
+    Examples:
+
+    (define (buzz n)
+      (cond ((member? 7 n) 'buzz)
+	    ((= (remainder n 7) 0) 'buzz)
+	    (else n) ))
+
+    (define (plural wd)
+      (if (equal? (last wd) 'y)
+	  (word (bl wd) 'ies)
+	  (word wd 's) ))
+
+
+
+
+
+
+
+
+
+
+
+
+					    376
diff --git a/js/games/nluqo.github.io/~bh/61a-pages/first-day-handout.pdf b/js/games/nluqo.github.io/~bh/61a-pages/first-day-handout.pdf
new file mode 100644
index 0000000..d3e3743
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/first-day-handout.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/61a-pages/style.css b/js/games/nluqo.github.io/~bh/61a-pages/style.css
new file mode 100644
index 0000000..34e3304
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/61a-pages/style.css
@@ -0,0 +1,54 @@
+h1 {
+	text-align:center;
+}
+
+h1.subtitle {
+	font-size: large;
+}
+
+h3 {
+	font-family: monospace;
+	font-size: large;
+	font-weight: normal;
+}
+
+table {
+	border-width:0px;
+	border-collapse:collapse;
+}
+
+td {
+	padding-left:1em;
+	padding-right:1em;
+	padding-bottom:0.3em;
+}
+
+table.staff td {
+	padding-bottom:1em;
+	vertical-align:top;
+}
+
+table.weekdays td, table.weekdays th {
+	border:1px solid #ccc;
+	text-align:center;
+	padding:0.5em;
+}
+
+table.weekdays th {
+	padding:1em;
+}
+
+table th.empty {
+	border-width:0;
+}
+
+.note {
+	font-size: normal;
+	font-style: italic;
+}
+
+
+hr {
+	text-align:center;
+	width:90%;
+}
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/~bh/BJC.pdf b/js/games/nluqo.github.io/~bh/BJC.pdf
new file mode 100644
index 0000000..aed7c59
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/BJC.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/BYOB.pdf b/js/games/nluqo.github.io/~bh/BYOB.pdf
new file mode 100644
index 0000000..0cecd47
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/BYOB.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/HOPL.pdf b/js/games/nluqo.github.io/~bh/HOPL.pdf
new file mode 100644
index 0000000..1ae82a4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/HOPL.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/alliance.html b/js/games/nluqo.github.io/~bh/alliance.html
new file mode 100644
index 0000000..b88cb9f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/alliance.html
@@ -0,0 +1,491 @@
+<HTML>
+<HEAD>
+<TITLE>Harmful to Children?</TITLE>
+</HEAD>
+<BODY>
+<H1>Harmful to Children?<BR>
+The <CITE>Alliance for Childhood</CITE> Report</H1>
+
+<P>Brian Harvey<BR>
+Computer Science Division<BR>
+University of California, Berkeley<BR>
+Berkeley, CA  9420-1776  USA<BR>
+<CODE>bh@cs.berkeley.edu</CODE>
+
+<H3>Abstract</H3>
+
+<P>The idea of educational computing is under attack.  One notable
+example is the Alliance for Childhood, which issued a sweeping but carefully
+researched condemnation a year ago.  They cite physical, emotional, social,
+intellectual, and moral hazards.  Is Logo an exception?  In some ways it is,
+but in other ways Logo is subject to the same criticisms as any other use of
+computers in schools.
+
+<P><B>Keywords:</B> hazards of educational computing, Alliance for Childhood
+
+<H2>1.  Introduction</H2>
+
+<P>In the early days of Logo research, the idea that kids in school could have
+regular access to powerful computers was visionary; today it's commonplace.
+During the past 20 years we've fought intellectual battles with many competing
+approaches to educational computing.  Perhaps the earliest of these battles
+was against the drill-and-practice approach; other early battles were against
+other programming languages (BASIC, Pascal).  Later battles were about the
+nature of Logo itself: Is the power of a full programming language important,
+or is turtle geometry all that matters?
+
+<P>As technology has improved, some of these old battles have changed their
+character.  The simple-minded arithmetic drill programs of the 1980s have
+evolved into ``intelligent tutoring'' systems that can analyse a learner's
+specific mistakes to develop a cognitive model of that particular student's
+misunderstanding, or can provide ``scaffolding'' that supports a learner's
+efforts with hints that start out doing most of the work but gradually fade
+away as the learner masters the desired skills.  At root these programs are
+still ``the computer programming the child,'' but the arguments are no longer
+so one-sided.
+
+<P>Still, all of these debates start from the assumption that educational
+computing, in some form, is good for children.  This assumption has rarely
+been challenged in any intellectually compelling way, but recently such
+challenges have begun.  I'll discuss one particular example:  In August, 2000,
+a group called the Alliance for Childhood issued a ``Call for Action''
+proposing a moratorium on new computer purchases by schools, accompanied by a
+100-page scholarly report: <CITE>Fool's Gold: A Critical Look at Computers in
+Childhood.</CITE>  Here are their recommendations:
+
+<BLOCKQUOTE>
+<NL>
+<LI>A refocusing in education, at home and school, on the
+essentials of a healthy childhood: strong bonds with caring adults; time for
+spontaneous, creative play; a curriculum rich in music and the other arts;
+reading books aloud; storytelling and poetry; rhythm and movement; cooking,
+building things, and other handcrafts; and gardening and other hands-on
+experiences of nature and the physical world.
+<P>
+<LI>A broad public dialogue on how emphasizing computers is affecting the real
+needs of children, especially children in low-income families.
+<P>
+<LI>A comprehensive report by the U.S. Surgeon General on the full extent of
+physical, emotional, and other developmental hazards computers pose to
+children.
+<P>
+<LI>Full disclosure by information-technology companies about the physical
+hazards to children of using their products.
+<P>
+<LI>A halt to the commercial hyping of harmful or useless technology for
+children.
+<P>
+<LI>A new emphasis on ethics, responsibility, and critical thinking in
+teaching older students about the personal and social effects of technology.
+<P>
+<LI>An immediate moratorium on the further introduction of computers in early
+childhood and elementary education, except for special cases of students with
+disabilities. Such a time-out is necessary to create the climate for the above
+recommendations to take place.
+</NL>
+</BLOCKQUOTE>
+
+<P>Logo activists are unlikely to embrace this report completely, but it
+should not be dismissed as simplistic; there may be important lessons for us
+in it.  My purpose is to raise questions for discussion, not to answer them.
+
+<H2>2. What's Wrong with Computers?</H2>
+
+<P>The report describes many hazards of computer use by young children,
+organized in four categories.
+
+<P><EM>Physical hazards</EM> include wrist and neck injury, eyestrain, obesity
+(to the extent that computer use replaces physical activity in a child's
+lifestyle), and the possibility of toxic emissions and radiation.  (The report
+presents evidence that these risks may be greater for young children than for
+older computer users.)  These concerns apply to Logo as much as they do to any
+other form of educational computing, but the very widespread use of computer
+games is arguably a greater danger than classroom computing.  Computer games
+may replace physical activity; classroom computing typically replaces other
+non-ergonomic classroom practices.  Still, concern about these hazards might
+call into question the vision of the computer-intensive school in which every
+subject is studied online, with a computer for every child.  (The report
+specifically mentions laptops as an ergonomic problem, because when using a
+laptop either the screen is too low or the keyboard is too high.)
+
+<P><EM>Emotional and social hazards</EM> include social isolation, weakened
+bonds with teachers, lack of self-discipline and self-motivation, emotional
+detachment from community, and commercial exploitation.  In this area, it
+seems to me that Logo does have something to say.  The Alliance is envisioning
+a style of work in which each child sits in front of a computer, in isolation
+from classmates, searching the Web for someone else's answer to the teacher's
+question.  That's not a Logo classroom!  Our students collaborate on creative
+projects.  On the other hand, in <CITE>The Connected Family</CITE> Papert does
+suggest that the availability of information on the Web may make it easier for
+kids to avoid school entirely, using computers to facilitate homeschooling.
+
+<P><EM>Intellectual hazards</EM> include lack of creativity, stunted
+imagination, poor language and literacy skills, attention deficit, too little
+patience, plagiarism, and distraction from meaning.  This is the most
+surprising category; educational computing enthusiasts generally list
+intellectual gains as the area in which we excel.  This is also the area in
+which the Alliance points specifically to Logo as problematic, because we push
+kids too quickly into advanced stages of cognitive processing.  This point
+requires a careful answer.  Logo does, however, seem exempt from some of the
+other criticisms in this category; unlike the currently popular Web-search
+approach, we ask kids to be creative, so we shouldn't be stunting their
+imagination.  On the other hand, the point about distraction from meaning does
+raise questions for the recent emphasis on multimedia in Logo projects.  Do we
+run the risk of unintentionally teaching children to value form over content?
+
+<P><EM>Moral hazards</EM> include exposure to online violence, pornography,
+bigotry, an emphasis on information devoid of ethical content, lack of
+purpose, and irresponsibility in applying knowledge.  This category is
+primarily related to the World Wide Web, and I think these concerns are quite
+real for Web-based learning.  But Logo is a shining example of using computers
+in quite the opposite way.  Should we remove the Web browsers from our school
+computer labs?
+
+<P>Finally, the Alliance repeats a longstanding concern that teachers have had
+about the <EM>cost</EM> of computer-based learning: the computers themselves,
+maintenance, teacher training, and software are expensive.  Some of us have
+argued that the expense is not really so great, but school budgets are often
+not so great either; it's not unreasonable to ask where computers should fit
+into budget priorities.  The extreme examples, in which one hears of schools
+with leaky roofs, no new textbooks in 40 years, and rooms full of shiny
+computers, do make one wonder if we aren't sometimes overenthusiastic in our
+advocacy.  The Alliance report dramatically illustrates this point by
+comparing then-President Clinton's budget proposal for school computing ($8
+billion per year, forever) with their own proposal to spend that money on
+removing lead paint from schools and homes (estimated one-time cost of $50
+billion).  The Alliance also wants to spend more money on the obvious needs of
+schools: smaller classes, higher teacher salaries, new buildings, and so on.
+
+<BLOCKQUOTE>
+<P>Parents and policymakers often assume that poor children without access to
+a computer at home will suffer academically. They push for highly computerized
+classrooms as the best chance to cross the ``digital divide'' and help poor
+children compete academically with those who have home computers.
+
+<P>We know that computers pose hazards to children and can distract adults
+from children's real needs. But the most disadvantaged children may be at
+particular risk of educational failure if we insist that they interact with
+computers for much of the school day. Often, what they most desperately need
+is more personal, caring attention from teachers, school counselors, and other
+adults who will take the time to work with their strengths and weaknesses and
+to convey patient confidence in the child's ability. The research evidence for
+the wisdom of such special attention is overwhelming.
+
+<P>So the real danger for disadvantaged children, as one technology expert has
+suggested, is just the opposite of what many parents fear: ``In the end, it is
+the poor who will be chained to the computer; the rich will get teachers.''
+
+<P ALIGN=RIGHT><CITE>Fool's Gold</CITE>, page 48
+</BLOCKQUOTE>
+
+<P>The Alliance does support the use of computers in secondary schools but
+still with a critical (in the sense of thoughtful, not in the sense of
+antagonistic) attitude toward the technology:
+
+<BLOCKQUOTE>
+<P>TECHNOLOGY LITERACY:
+<P>Guidelines for a More Democratic Future
+
+<P>1. In early childhood and at least through elementary school, concentrate
+on developing the child's own inner powers, not exploiting external machine
+powers.
+
+<P>2. Infuse the study of ethics and responsibility into every technology
+training program offered in school.
+
+<P>3. For high school students, consider making the study of the fundamentals
+of how computers work part of the core curriculum.
+
+<P>4. Make the history of technology as a social and political force a part of
+every high school student's schooling.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold,</CITE> page 73
+</BLOCKQUOTE>
+
+<H2>3. Cognitive Skills and Mechanical Thinking</H2>
+
+<BLOCKQUOTE> <P>The womb is a living metaphor for the nurturing,
+developmentally responsive environment--at home, at school, and in the
+community--that best serves the full range of children's needs.
+Mechanistic models of education, in contrast, are guided by the dead metaphor
+of computer engineering.  They see the child's mind as a machine that can and
+should be powered up and programmed into adult levels of operation as quickly
+as possible.  The fallacy of this premature focus on cognitive skills... is
+now evident.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold,</CITE> page 6
+
+<P>Seymour Papert...
+has been particularly influential in promoting the use of computers by young children.  But such an emphasis seems designed for training children to think in ways that appear more mechanistic than childlike.  For example, Papert himself, referring
+to Logo... has said
+
+<BLOCKQUOTE> <P>I have invented ways to take educational advantage of the
+opportunities to master the art of deliberately thinking like a computer...
+[so] the learner becomes able to articulate what mechanical thinking is and
+what it is not.
+</BLOCKQUOTE>
+
+<P>But can young children really differentiate between their own human
+thinking and the powerful operations of a machine?  Is it even fair to impose
+such a task on them?
+
+<P ALIGN=RIGHT><CITE>Fool's Gold,</CITE> pages 19-20
+</BLOCKQUOTE>
+
+<P>This is a fair question.  Claims of teaching deep mathematical ideas to
+young children were at the heart of early writing about Logo.  Papert came to
+the Logo project with a background of work with Jean Piaget, so he was aware
+of Piaget's idea that certain kinds of formal reasoning were unavailable to
+young children.  Papert's idea wasn't quite to <EM>accelerate</EM> those stage
+transitions, but rather to <EM>finesse</EM> them by embodying abstract
+mathematical ideas in concrete form--namely, computer programs and their
+graphical results.
+
+<P>Indeed, the specific mathematical content of Logo was central to our early
+arguments with proponents of other programming languages.  We said that the
+use of <EM>recursion</EM> in Logo was important partly because it introduced
+the idea of mathematical induction in concrete form; we said that <EM>turtle
+graphics</EM> was important partly because we could describe its behaviour
+mathematically, as in the Total Turtle Trip Theorem.
+
+<P>These days, Logo enthusiasts don't talk about mathematics, or about formal
+reasoning, as much as we did then.  Instead, much of our talk is about
+physical artefacts (``constructionism'').  We do still hope that Lego-Logo
+users abstract away from their projects some general ideas, such as friction
+and gear ratios.  But current Logo work doesn't seem to push so hard against
+Piagetian limits.
+
+<P>Also, it's clear from the phenomenal success of computer video games that
+young children can think more abstractly in that context than they do in
+school.
+
+<P>On the other hand, if we're not trying to teach advanced cognitive skills,
+why use Logo?  Why not prepare those multimedia geography reports in
+PowerPoint?  It's clear that we do still care about giving kids the power of a
+programming language.  Logo today is in a more ambiguous position, with one
+foot in the world of powerful mathematical ideas and the other foot in the
+mainstream computer-education world of multimedia and the World Wide Web.
+
+<P>The Alliance for Childhood is questioning the Logo emphasis on
+metacognition, asking children to think explicitly about thinking.  This is a
+good research question; what are the actual benefits, and harms if any, from
+thinking about thinking?  Do children who program computers develop an
+implicit model of human thinking as being like the way a computer carries out
+its program?  (I think that this is what the Alliance fears.)  Certainly the
+ability to think like a computer is helpful in debugging.  But other school
+practices also promote mechanical thinking.  For example, ``reading
+comprehension'' tests encourage kids to use pattern matching techniques to
+find the answers to questions without actually reading and understanding the
+text.  The recent anti-new-math counterrevolution explicitly puts rote
+learning of arithmetic algorithms before understanding their meaning.  That's
+very different from the situation in Logo work, in which we encourage kids to
+<EM>find</EM> meaning in the working-out of mechanical and computational
+processes.  Which of these is more of a threat to children's intellectual
+development?
+
+<BLOCKQUOTE>
+<P>Researchers have documented how much young children learn intuitively
+through their bodies, and how this lays a critical foundation for later
+conscious comprehension of the world.  The child's first experience of
+geometric relationships and physics, for example, is literally a visceral one.
+As she moves herself through space, she actually begins to `learn'
+unconsciously in her body about relationships, shape, size, weight, distance,
+and movement--the basis for later abstract, conscious comprehension.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold</CITE>, page 9
+</BLOCKQUOTE>
+
+<P>This couldn't be improved upon as a description of the intellectual basis
+for turtle graphics!  We can't be accused of ignoring the importance of body
+learning.  Here the question is entirely one of timing:  How long should we
+wait before introducing children to the turtle as a bridge from body learning
+to abstraction?
+
+<H2>4. The Essential Human Touch</H2>
+
+<BLOCKQUOTE>
+<P>Proponents of computers in schools argue that they shift the classroom
+focus to the student instead of the teacher, whose traditional role they
+describe as the ineffective ``sage on the stage.'' In the high-tech classroom,
+they suggest, the teacher becomes ``guide on the side,'' encouraging students
+to take charge of constructing their own education. The result is supposed to
+be ``student-centered'' education. But the ubiquitous pictures in the news
+media of both students and teachers concentrating intently on a computer
+screen--instead of each other--clearly illustrates a new sage dominating
+center stage. The actual shift is to computer-centered, not student-centered,
+education.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold</CITE>, page 29
+
+<P>At every stage... studies indicate that strong emotional rapport with
+responsible adults--the human touch--provides support that is critical in
+helping children master the appropriate developmental challenges.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold</CITE>, page 7
+</BLOCKQUOTE>
+
+<P>The isolated child staring into a computer screen is a long-standing
+stereotype.  But Logo teachers and researchers don't work that way.  We cite
+Lev Vygotsky on the social nature of learning and the importance of social
+relations in the classroom.  We work with the kids, and they work with each
+other.  We encourage informal peer interaction so that kids help each other
+debug.
+
+<P>Or do we?  That's certainly the <EM>best</EM> Logo practice, but I don't
+know whether it's typical.  Like any form of progressive education, good Logo
+practice places heavy demands on the teacher.  When Logo use is restricted to
+the most committed and self-selected teachers, we can expect good social
+interactions.  But when Logo finds its way into a national curriculum, as has
+happened occasionally in Europe, what is the style of work in typical
+classrooms?  Since it hasn't happened in the USA, I don't know the answer.  I
+<EM>have</EM> seen Logo curricula in standard lesson-plan form, with
+behavioural objectives.
+
+<P>It's worth noting that there are other approaches to classroom computing
+that make social interaction a more central focus than Logo.  For example, Tom
+Snyder Productions is a company that specializes in software for the
+one-computer classroom.  In their activities, kids spend most of their time
+working in groups, with the computer appealed to occasionally as a mediator, a
+judge, or a source of information.  Their software can't be used by one child
+in isolation.  By contrast, you <EM>can</EM> use Logo on your own.
+
+<P>It's also worth investigating the implications of computer-mediated social
+activity, such as Internet pen pal projects.  These can give kids an exposure
+to cultural differences that they wouldn't ordinarily meet.  But
+computer-mediated communication has weaknesses compared to old-fashioned
+talking, such as the notorious tendency to anger and rudeness (``flaming'') in
+e-mail and newsgroups.
+
+<P>Moderation and balance may be the answer.  The computer as a social medium
+might be harmful if it tends to <EM>replace</EM> ordinary face-to-face
+interaction, but might not be harmful as a supplement.
+
+<BLOCKQUOTE>
+<P>The elementary-age child fine-tunes these motor skills, as his senses,
+organs, muscles, and bones continue to mature. His thinking skills, of course,
+are also advancing. But his whole being is naturally tuned to learn through
+the window of feelings, as he makes correspondingly dramatic gains in
+emotional and social development. This is a time for storytelling, music,
+creative movement, song, drama, making things with the hands, practical and
+fine arts of every kind--in short, every educational technology that touches
+children's hearts. They capture children's imagination, waken their interest
+in learning, and serve their ever-expanding sense of the world around them.
+Only around puberty does the child's dominant mode for learning finally shift
+toward the conscious intellect, as abstract considerations of logic and
+cause-and-effect reasoning gradually begin to hold sway in his mind.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold</CITE>, page 7
+</BLOCKQUOTE>
+
+<P>This picture of the child as storyteller and artist cuts both ways, as it
+applies to Logo.  It definitely supports Logo as compared with other models of
+computer learning, and in particular it supports the shift from mathematics to
+storytelling in recent animated Logo implementations such as Microworlds.  On
+the other hand, telling a story in any computer-based medium does require some
+shift in the child's attention from the story itself to the technical
+challenge of teaching the computer how to tell the story.
+
+<P>It's also worth remarking that the Alliance is concentrating on the
+<EM>early</EM> elementary school years.  ``Around puberty'' can mean as early
+as age 10, which is when many children are introduced to Logo.  (They do say
+elsewhere in the report that full cognitive development takes about 20 years,
+though, and that emotional connection with adults is still important for
+teenagers.)
+
+<H2>5. The World Wide Web and the Locus of Control</H2>
+
+<BLOCKQUOTE>
+<P>The current interest in ``Web-based education'' and ubiquitous Internet
+access for every student, from the age of five up, assumes that a lack of
+access to information has been a major problem in elementary schools.
+Actually, experts on math and science education have argued just the opposite.
+They have concluded, in part based on analyses of the disappointing
+performance of American students in international comparisons, that American
+children have been subjected to far too broad and too shallow a sweep of
+scientific information.  A deeper, less sweeping but more personally
+engaging approach--exactly what hands-on classes embody--would serve our
+children better, science educators have argued.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold</CITE>, page 58
+
+<P>The emphasis on connecting every child to the Internet raises a host of
+issues related to exposing children to a flood of commercial messages
+promoting everything from candy and electronic toys to pornography, violence,
+drugs, and race hatred...
+
+<P>The Website of MaMaMedia.com, for example, promotes itself as presenting
+``playful learning'' activities aimed at children 12 and under, based on
+extensive research at Harvard and M.I.T. The co-founder of M.I.T.'s
+prestigious Media Lab is listed as chairman of MaMaMedia's advisory board.
+The site also features the names of its commercial sponsors--which
+include the producers of high-sugar drinks and foods and video games. The site
+links children to one advertiser's new release, ``X-Men Mutant Academy,''
+which will allow young children to ``Brawl your way around the world, one
+opponent at a time.'' It also links children to the Websites of a
+long list of candy companies. On one link children are able to download a
+screensaver of Hershey's Miniatures ``stacking up before your eyes,'' or
+``Flying Reese's Peanut Butter Cups,'' thereby setting up their own background
+ad for a chocolate break.
+
+<P ALIGN=RIGHT><CITE>Fool's Gold</CITE>, pages 31-32
+</BLOCKQUOTE>
+
+<P>What is our stance toward the World Wide Web?  When I've taught Logo to
+middle schoolers recently, I've found it hard to hold their attention on Logo;
+instead they want to play games on the Web.  The ones who are interested in
+programming want to learn about web-authoring tools such as Shockwave, rather
+than Logo. Partly as a result of these experiences, I hate the Web.  But other
+Logoites have embraced the Web, adding Web-authoring capability to Logo
+products.
+
+<P>The Alliance for Childhood tells several horrifying stories about the
+commercialisation of school computing.  The one I've cited above isn't the
+worst; I chose it because MaMaMedia is a product of the Logo community,
+founded by Idit Harel with Seymour Papert as a participant and endorser.  The
+worst stories are about companies that offer free equipment to schools
+provided that the schools <EM>require</EM> students to watch the
+advertising that these companies supply.
+
+<P>The Alliance also mentions the much-publicized issue of pornography on the
+net.  Some attacks on Internet pornography have been so sensationalistic, and
+based on such ill-researched data, that it is easy to dismiss any mention of
+pornography as sensation-mongering.  But the Alliance puts pornography in
+perspective, as just one more example of the misinformation and the appeal to
+irrationality on the Web, less ubiquitous and ultimately less important than
+the commercial content.
+
+<P>Logoites often compare our process orientation with the product orientation
+of schooling in general and other approaches to computer learning in
+particular.  But if we are infatuated with the World Wide Web, we put
+ourselves in the opposite camp.  Even the emphasis on multimedia in recent
+Logo implementations can be seen as an emphasis on form over content, a less
+obvious but essentially similar version of other educators' preference for
+PowerPoint presentations over handwritten reports.  Searching the Web for
+source material puts the focus on finding out facts rather than understanding
+them; pasting Web pages verbatim into student reports is the high-tech version
+of copying paragraphs verbatim from the encyclopedia.  By contrast, requiring
+children to summarize, compare, and interpret multiple sources of information
+emphasizes understanding over mere information retrieval.
+
+<P>Let me note in passing that there are better ways to use the Internet than
+Web browsing.  Learners who use newsgroups and e-mail are participants in a
+conversation rather than consumers of professionally produced content.  (Using
+Logo for Web authoring, too, is better than Web browsing.)  One way to
+understand this question is in terms of locus of control; Web browsing is best
+understood as a (subtle, disguised) form of letting the computer program the
+kid.
+
+<H2>6. References</H2>
+
+<P>Alliance for Childhood (2000)
+<A HREF="http://www.allianceforchildhood.net/projects/computers/computers_reports_fools_gold_contents.htm"> <CITE>Fool's Gold:  A Critical Look at
+Computers in Childhood</CITE></A>
+
+<P>Papert S (1996) <A HREF="http://www.connectedfamily.com/main.html"><CITE>The Connected Family: Bridging the Digital Generation Gap</CITE></A> Longstreet Press, Atlanta.
+
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/announce b/js/games/nluqo.github.io/~bh/announce
new file mode 100644
index 0000000..3b624e5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/announce
@@ -0,0 +1,69 @@
+# UCBLogo
+
+## Berkeley Logo interpreter
+
+This is a free (both senses) interpreter for the Logo programming language.
+
+The interpreter was written primarily by Daniel Van Blerkom, Brian Harvey,
+Michael Katz, Douglas Orleans and Joshua Cogliati. Thanks to Fred Gilham for the X11 code.
+Emacs logo-mode by Hrvoje Blazevic.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see https://www.gnu.org/licenses/.
+
+## About this project
+
+This uses the repository https://github.com/jrincayc/ucblogo-code
+created for further UCBLogo development.
+The current version is 6.2
+
+Changes for this release:
+* Added optional object oriented LOGO features ( --enable-objects )
+* autoconf based build system
+* Variety of bug fixes
+
+Here is an overview of the repository:
+* csls - Programs form [Brian Harvey's trilogy "Computer Science Logo Style"](https://people.eecs.berkeley.edu/~bh/).
+* docs - Usermanual in variety formats and brief manual page.
+* helpfiles - files for UCBLogo interactive help.
+* test - Unit tests.
+* / - program source code and [a Program Logic Manual](/plm).
+
+The executable file in this distribution includes libraries from the
+[wxWidgets project](http://wxwidgets.org/).  The Microsoft Windows version
+is distributed with runtime library libgcc_s_dw2-1.dll and libstdc++-6.dll,
+from the [MinGW project](http://www.mingw.org/).
+Those libraries are also covered by the Gnu GPL.  We
+do not distribute their source code; you can download it from their
+respective web sites.
+
+## Usage
+
+To build Logo under *nix, install wxWidgets and other dependencies
+and then do this:
+```
+	autoreconf --install
+	./configure
+	make
+```
+
+Note that if you don't have autoconf, the release .tar.gz have already built
+configure files.
+
+[UCBLogo Releases](https://github.com/jrincayc/ucblogo-code/releases)
+
+## Previous versions
+
+For getting UCBLogo previous versions such as version 6.0 if you're running wxWidgets or 5.4 if not, please visit [Brian Harvey's UCBLogo GitHub repository](https://github.com/brianharvey/UCBLogo).
+
+The distribution for frozen platforms includes version 5.3 for DOS and Mac Classic (pre-OS X) still may be reached at [Brian Harvey's personal page](https://people.eecs.berkeley.edu/~bh/).
diff --git a/js/games/nluqo.github.io/~bh/art.html b/js/games/nluqo.github.io/~bh/art.html
new file mode 100644
index 0000000..cc49895
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art.html
@@ -0,0 +1,332 @@
+<HTML>
+<HEAD>
+<TITLE>My Art Collection</TITLE>
+</HEAD>
+<BODY>
+<H1>My Art Collection</H1>
+
+<P>I can't afford Van Goghs or anything like that, but I like to get originals
+by local artists, which are cheaper, and bring home original art as
+<A HREF="art.html#SOUVENIRS">souvenirs of places I visit</A>.  You've never heard of
+any of the artists, probably.  Here are some examples from a few of my
+favorite artists:
+
+<P>&#160; &#160; &#160; <A HREF="art.html#LEBA">Lebadang</A>
+&#160; &#160; &#160; <A HREF="art.html#RIFE">Jon Rife</A>
+&#160; &#160; &#160; <A HREF="art.html#FARB">Gerta Farber</A>
+&#160; &#160; &#160; <A HREF="art.html#VOIGT">David Voigt</A>
+
+<P>&#160; &#160; &#160; <A HREF="art.html#HOLDSWORTH">Anthony Holdsworth</A>
+&#160; &#160; &#160; <A HREF="art.html#AVERELL">Sue Averell</A>
+&#160; &#160; &#160; <A HREF="art.html#HARCOS">Bela Harcos</A>
+&#160; &#160; &#160; <A HREF="art.html#DION">David Dion</A>
+
+<P>&#160; &#160; &#160; <A HREF="art.html#PETYARRE">Kathleen Petyarre</A>
+&#160; &#160; &#160; <A HREF="art.html#REYES">Fernando Reyes</A>
+&#160; &#160; &#160; <A HREF="art.html#CORNING">Judith Corning</A>
+&#160; &#160; &#160; <A HREF="art.html#WEBER">Kay Weber</A>
+
+<P>The pictures on this page really don't do justice at all to
+the actual artwork.  (To make good photos of art that's framed behind
+glass, as is most of my collection, you have to un-frame it, so as not
+to see reflections, and you have to have your camera on a tripod.
+I don't have a tripod and I don't trust myself to get the artwork back
+together properly afterwards, so I just found the least glare-filled
+spot in my house and put the framed works there.  So I got dim and
+crooked pictures, which I then tweaked digitally to the best of my
+poor ability.)  Just use your imagination, and then follow the links below
+to see some professionally done web pages of these artists' works.
+
+<P>According to the EFF, the court ruling in the ditto.com case says that
+posting "thumbnails" of images is fair use under the copyright act, but
+linking to full-size images in a separate window isn't.  So I have reason
+to hope this page is legal!
+
+<P><A NAME="LEBA">&#160; &#160; &#160; 
+
+<P><B>Lebadang</B> is a Vietnamese artist who lived in France until his
+recent death.  What you can't see very
+well in these photos (but try zooming in!) is that an important part of his
+work is using custom-sculpted paper, with designs raised, especially in the
+white areas you see here.  Many of those images are of family groups.  So,
+while these are multiple-original works, to call them "prints" suggests an
+image that doesn't do them justice.  Lebadang also did paint-on-canvas works,
+sculptures, and rugs (as shown below) in the same 3-D style.
+
+<P><IMG LENGTH=30% SRC="art/LebaTall.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/LebaBlue.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/LebaRed.jpg">
+
+<P><IMG LENGTH=30% SRC="art/Leblitho.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Leboffice.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Lebrug.jpg">
+
+<P>To see more:
+<A HREF="http://viettouch.com/lebadang/">http://viettouch.com/lebadang/</A>
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="RIFE">&#160; &#160; &#160; 
+
+<P><B>Jon Rife</B> is a San Francisco artist.  He's very interested
+in textures, and I'm fascinated by the way he can represent
+textures in a flat monoprint, most of which is lost on you in these
+bad reproductions.  (A monoprint is made by painting onto a smooth
+surface, glass or metal, and then transferring the paint onto paper
+in a press.)  Rife's more recent works include both direct paint-to-canvas
+and the integration of digital imagery with his painting.
+The <A HREF="index.html#CSLS">covers</A>
+of my <CITE>Computer Science Logo Style</CITE> books
+are taken from three of his works.
+
+<P><IMG LENGTH=30% SRC="art/RifeOil.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/RifeLeft.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/RifeRight.jpg">
+
+<P><IMG LENGTH=30% SRC="art/RifeOld.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Rife3474.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Rife3603.jpg">
+
+<P>To see more:
+<A HREF="http://www.jonrife.com/">http://www.jonrife.com/</A>
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="FARB">&#160; &#160; &#160; 
+
+<P><B>Gerta Farber</B> is a local artist, living in Oakland, who does mostly
+watercolors on a range of subjects: landscapes, portraits, and
+abstracts.  Here we see a California mission church (the first original
+artwork I ever bought!), a house, and some
+semi-abstract trees.
+
+<P><IMG LENGTH=30% SRC="art/FarbMiss.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/FarbHouse.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/FarbTrees.jpg">
+
+<P>Alas, her artwork seems to have disappeared from the Web since she
+retired, so I can't give a link.
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="VOIGT">&#160; &#160; &#160; 
+
+<P><B>David Voigt</B> is an Australian artist whose work I find interesting
+partly because of the way he depicts motion (the birds' flight, the
+wind, the river).  He mostly does
+landscapes from nature.  These are watercolors; he also does even
+more dramatic acrylic paintings.
+
+<P><IMG LENGTH=30% SRC="art/VoigtDry.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/VoigtHills.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/VoigtTree.jpg">
+
+<P>To see more:
+<A HREF="http://www.davidvoigt.com/">http://www.davidvoigt.com/</A>
+<!-- <A HREF="http://www.breewood.com.au/exhibition4/firstEX4.htm">http://www.breewood.com.au/exhibition4/firstEX4.htm</A> -->
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="HOLDSWORTH">&#160; &#160; &#160; 
+
+<P><B>Anthony Holdsworth</B> is a local artist, living in Oakland, who does
+very realistic acrylic paintings.  My favorites are his urban landscapes
+featuring careful attention to the actual street surfaces, but he also loves
+to paint the Italian countryside.
+
+<P><IMG LENGTH=30% SRC="art/Holdsworth1.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Holdsworth2.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Holdsworth3.jpg">
+
+<P>To see more:
+<A HREF="http://www.anthonyholdsworth.com/">http://www.anthonyholdsworth.com/</A>
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="AVERELL">&#160; &#160; &#160; 
+
+<P><B>Sue Averell</B> is a local Marin County artist who paints very dramatic
+acrylic semi-realistic works.  I love the freedom in her style, and the
+bold, thick blocks of color.
+
+<P><IMG LENGTH=30% SRC="art/Averell1.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Averell2.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Averell3.jpg">
+
+<P>To see more:
+<A HREF="http://www.sueaverell.com/">http://www.sueaverell.com/</A>
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="HARCOS">&#160; &#160; &#160; 
+
+<P><B>Bela Harcos</B> is a San Francisco artist who paints very vibrant
+abstract acrylics.  I love the colors and the textures!  He's also a sculptor.
+
+<P><IMG LENGTH=30% SRC="art/Harcos1.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Harcos2.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Harcos3.jpg">
+
+<P>To see more:
+<A HREF="http://www.evolvingartgallery.com/artist_harcos_bela.htm">http://www.evolvingartgallery.com/artist_harcos_bela.htm</A>
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="DION">&#160; &#160; &#160; 
+
+<P><B>David Dion</B> is a San Francisco sculptor who works in wood and
+plastics.  He makes tabletop-sized fantasy buildings, boats, and things I'm
+not sure about!
+
+<P><IMG LENGTH=30% SRC="art/Dion1.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Dion2.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Dion3.jpg">
+
+<P>To see more:
+<A HREF="http://www.mesart.com/artworks.jsp.que.artist.eq.987.shtml">http://www.mesart.com/artworks.jsp.que.artist.eq.987.shtml</A>
+
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="PETYARRE">&#160; &#160; &#160; 
+
+<P><B>Kathleen Petyarre</B> is one of the most famous living Australian
+Aboriginal artists.  I confess that most Aboriginal art leaves me cold, but
+the artists in the Utopia region are an exception, and the greatest of those
+(imho) is Kathleen Petyarre.  Her work has a depth that I can stare at for
+hours.  The pictures tell stories at several levels, but I know next to
+nothing about that, I'm afraid.
+
+<P><IMG LENGTH=30% SRC="art/Kathleen1.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Kathleen2.jpg">&#160; &#160; &#160; 
+
+<P>To see more:
+<A HREF="http://www.gallerieaustralis.com/aspx/kathleen_petyarre.aspx">http://www.gallerieaustralis.com/aspx/kathleen_petyarre.aspx</A>
+<BR><A HREF="http://www.aboriginalartstore.com.au/artists/kathleen-petyarre.php">http://www.aboriginalartstore.com.au/artists/kathleen-petyarre.php</A>
+<BR><A HREF="http://www.aboriginalartdirectory.com/artists/slideshow/kathleen-petyarre/">http://www.aboriginalartdirectory.com/artists/slideshow/kathleen-petyarre/</A>
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="REYES">&#160; &#160; &#160; 
+
+<P><B>Fernando Reyes</B> is an Oakland artist who does landscapes and
+thoughtful portraits in addition to his works in the style shown here, my
+favorites, featuring parts of people's bodies overlayed in interesting
+patterns.
+
+<P><IMG LENGTH=30% SRC="art/Reyes5.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Reyes6.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Reyes1.jpg">&#160; &#160; &#160; 
+
+<P>To see more:
+<A HREF="http://www.freyesart.com">http://www.freyesart.com</A>
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="CORNING">&#160; &#160; &#160; 
+
+<P><B>Judith Corning</B> lives a block away from me!  She does these gorgeous,
+detailed nature paintings in acrylic, among other styles.
+
+<P><IMG LENGTH=30% SRC="art/Corning1.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Corning2.jpg">&#160; &#160; &#160; 
+
+<P>To see more:
+<A HREF="http://judithcorning.com/">http://judithcorning.com/</A>
+<P>&#160; &#160; &#160; 
+
+<P><A NAME="WEBER">&#160; &#160; &#160; 
+
+<P><B>Kay Weber</B> is in San Francisco.  He does these very intricate paper
+cutouts; the ones in these pictures are made from gift wrap paper.  He also
+volunteers some of his time teaching art to teenagers, several of whom tend
+to pop in during his Open Studios stints, which is fun.
+
+<P><IMG LENGTH=30% SRC="art/Weber1.jpg">&#160; &#160; &#160; 
+<IMG LENGTH=30% SRC="art/Weber2.jpg">&#160; &#160; &#160; 
+
+<P>To see more:
+<A HREF="http://www.kayweberartstudio.com">http://www.kayweberartstudio.com/</A>
+<P>&#160; &#160; &#160; 
+
+
+<P><A NAME="SOUVENIRS">&#160; &#160; &#160; 
+
+<H2>Souvenirs of exotic places</H2>
+
+<P>The cities mentioned below are where I bought the artworks, which may not
+be exactly where the artist lives and works.
+(For example, Jan Neil's studio is in Melbourne, but I bought this piece at
+a gallery in Darwin.)  In a couple of cases I was unable to find a web link.
+<P>&#160; &#160; &#160; 
+
+<P>From Bratislava, Slovakia (artist: Igor Piacka)
+
+<P><IMG LENGTH=30% SRC="art/Piacka.jpg">
+
+<P>To see more:
+<A HREF="http://piacka.com/igor/malba_2008.php">http://piacka.com/igor/malba_2008.php</A>
+<P>&#160; &#160; &#160; 
+
+<P>From Berlin, Germany (artist: Falko Behrendt)
+
+<P><IMG LENGTH=30% SRC="art/Behrendt.jpg">
+
+<P>To see more:
+<A HREF="http://www.kunstmarkt.de/pagesjob/falko_behrendt/_i74070-/kunst_kaufen.html?words=Behrendt,+Falko">http://www.kunstmarkt.de/pagesjob/falko_behrendt/_i74070-/kunst_kaufen.html?words=Behrendt,+Falko</A>
+<P>&#160; &#160; &#160; 
+
+<P>From Birmingham, England (artist: M. Hazel Mason)
+
+<P><IMG LENGTH=30% SRC="art/Mason.jpg">
+<P>&#160; &#160; &#160; 
+
+<P>From Darwin, Australia (artist: Jan Neil)
+
+<P><IMG LENGTH=30% SRC="art/Neil.jpg">
+
+<P>To see more:
+<A HREF="http://www.janneilozimages.com.au/gallery.htm">http://www.janneilozimages.com.au/gallery.htm</A>
+<P>&#160; &#160; &#160; 
+
+<P>From Reykjavik, Iceland (artist: Sigrun Eldjarn)
+
+<P><IMG LENGTH=30% SRC="art/Eldjarn.jpg">
+
+<P>To see more (but in a very different style):
+<A HREF="http://www.sim.is/Index/Islenska/Artotek/Listamadur/110">http://www.sim.is/Index/Islenska/Artotek/Listamadur/110</A>
+<P>&#160; &#160; &#160; 
+
+<P>From Toronto, Canada (artist: Gino Hollander)
+
+<P><IMG LENGTH=30% SRC="art/Hollander.jpg">
+
+<P>To see more:
+<A HREF="http://www.hollanderart.com/sitepages/pid14.php">http://www.hollanderart.com/sitepages/pid14.php</A>
+<P>&#160; &#160; &#160; 
+
+<P>From Warsaw, Poland (artist: A. Urbaniak)
+
+<P><IMG LENGTH=30% SRC="art/Urbaniak.jpg">
+<P>&#160; &#160; &#160; 
+
+<P>From Bergen, Norway (artists: Kristian Finborud, Svein Bolling)
+
+<P><IMG LENGTH=60% SRC="art/Finborud.jpg">
+&#160; &#160; &#160; <IMG LENGTH=30% SRC="art/Bolling.jpg">
+
+<P>To see more:
+<A HREF="http://www.finborud.no/">http://www.finborud.no/</A><br>
+<A HREF="http://www.artnet.com/artists/svein-bolling/">http://www.artnet.com/artists/svein-bolling/</A>
+<P>&#160; &#160; &#160; 
+
+<P>From Vilnius, Lithuania (artist: Valentinas Ajauskas)
+
+<P><IMG SRC="art/Ajauskas.jpg">
+
+<P>To see more:
+<A HREF="https://www.paveikslai.lt/en/416_valentinas-ajauskas">https://www.paveikslai.lt/en/416_valentinas-ajauskas</A>
+<P>&#160; &#160; &#160; 
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/art/Ajauskas.jpg b/js/games/nluqo.github.io/~bh/art/Ajauskas.jpg
new file mode 100644
index 0000000..2f57a59
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Ajauskas.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Averell1.jpg b/js/games/nluqo.github.io/~bh/art/Averell1.jpg
new file mode 100644
index 0000000..89d1554
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Averell1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Averell2.jpg b/js/games/nluqo.github.io/~bh/art/Averell2.jpg
new file mode 100644
index 0000000..e46366c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Averell2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Averell3.jpg b/js/games/nluqo.github.io/~bh/art/Averell3.jpg
new file mode 100644
index 0000000..768f0cd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Averell3.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Behrendt.jpg b/js/games/nluqo.github.io/~bh/art/Behrendt.jpg
new file mode 100644
index 0000000..da6fda5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Behrendt.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Bolling.jpg b/js/games/nluqo.github.io/~bh/art/Bolling.jpg
new file mode 100644
index 0000000..678eced
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Bolling.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Corning1.jpg b/js/games/nluqo.github.io/~bh/art/Corning1.jpg
new file mode 100644
index 0000000..d30f73b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Corning1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Corning2.jpg b/js/games/nluqo.github.io/~bh/art/Corning2.jpg
new file mode 100644
index 0000000..b40f148
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Corning2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Dion1.jpg b/js/games/nluqo.github.io/~bh/art/Dion1.jpg
new file mode 100644
index 0000000..f52fe0a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Dion1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Dion2.jpg b/js/games/nluqo.github.io/~bh/art/Dion2.jpg
new file mode 100644
index 0000000..9f9ed00
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Dion2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Dion3.jpg b/js/games/nluqo.github.io/~bh/art/Dion3.jpg
new file mode 100644
index 0000000..0aceb19
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Dion3.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Eldjarn.jpg b/js/games/nluqo.github.io/~bh/art/Eldjarn.jpg
new file mode 100644
index 0000000..24734ae
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Eldjarn.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/FarbHouse.jpg b/js/games/nluqo.github.io/~bh/art/FarbHouse.jpg
new file mode 100644
index 0000000..fa989af
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/FarbHouse.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/FarbMiss.jpg b/js/games/nluqo.github.io/~bh/art/FarbMiss.jpg
new file mode 100644
index 0000000..1d3589d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/FarbMiss.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/FarbTrees.jpg b/js/games/nluqo.github.io/~bh/art/FarbTrees.jpg
new file mode 100644
index 0000000..fbfc0b8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/FarbTrees.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Finborud.jpg b/js/games/nluqo.github.io/~bh/art/Finborud.jpg
new file mode 100644
index 0000000..f4a1ab1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Finborud.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Harcos1.jpg b/js/games/nluqo.github.io/~bh/art/Harcos1.jpg
new file mode 100644
index 0000000..b583b2f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Harcos1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Harcos2.jpg b/js/games/nluqo.github.io/~bh/art/Harcos2.jpg
new file mode 100644
index 0000000..f4809d1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Harcos2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Harcos3.jpg b/js/games/nluqo.github.io/~bh/art/Harcos3.jpg
new file mode 100644
index 0000000..341d818
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Harcos3.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Holdsworth1.jpg b/js/games/nluqo.github.io/~bh/art/Holdsworth1.jpg
new file mode 100644
index 0000000..4518d66
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Holdsworth1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Holdsworth2.jpg b/js/games/nluqo.github.io/~bh/art/Holdsworth2.jpg
new file mode 100644
index 0000000..a4a2023
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Holdsworth2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Holdsworth3.jpg b/js/games/nluqo.github.io/~bh/art/Holdsworth3.jpg
new file mode 100644
index 0000000..bded80e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Holdsworth3.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Hollander.jpg b/js/games/nluqo.github.io/~bh/art/Hollander.jpg
new file mode 100644
index 0000000..d0546a8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Hollander.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Kathleen1.jpg b/js/games/nluqo.github.io/~bh/art/Kathleen1.jpg
new file mode 100644
index 0000000..9886415
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Kathleen1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Kathleen2.jpg b/js/games/nluqo.github.io/~bh/art/Kathleen2.jpg
new file mode 100644
index 0000000..fea2377
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Kathleen2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/LebaBlue.jpg b/js/games/nluqo.github.io/~bh/art/LebaBlue.jpg
new file mode 100644
index 0000000..1f99d5e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/LebaBlue.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/LebaRed.jpg b/js/games/nluqo.github.io/~bh/art/LebaRed.jpg
new file mode 100644
index 0000000..3b4a55b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/LebaRed.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/LebaTall.jpg b/js/games/nluqo.github.io/~bh/art/LebaTall.jpg
new file mode 100644
index 0000000..c036237
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/LebaTall.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Leblitho.jpg b/js/games/nluqo.github.io/~bh/art/Leblitho.jpg
new file mode 100644
index 0000000..163318f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Leblitho.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Leboffice.jpg b/js/games/nluqo.github.io/~bh/art/Leboffice.jpg
new file mode 100644
index 0000000..67f4748
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Leboffice.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Lebrug.jpg b/js/games/nluqo.github.io/~bh/art/Lebrug.jpg
new file mode 100644
index 0000000..d2fcb17
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Lebrug.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Mason.jpg b/js/games/nluqo.github.io/~bh/art/Mason.jpg
new file mode 100644
index 0000000..e9401da
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Mason.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Neil.jpg b/js/games/nluqo.github.io/~bh/art/Neil.jpg
new file mode 100644
index 0000000..a54838f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Neil.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Piacka.jpg b/js/games/nluqo.github.io/~bh/art/Piacka.jpg
new file mode 100644
index 0000000..1c913f2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Piacka.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Reyes1.jpg b/js/games/nluqo.github.io/~bh/art/Reyes1.jpg
new file mode 100644
index 0000000..79a7a1e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Reyes1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Reyes5.jpg b/js/games/nluqo.github.io/~bh/art/Reyes5.jpg
new file mode 100644
index 0000000..743bfca
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Reyes5.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Reyes6.jpg b/js/games/nluqo.github.io/~bh/art/Reyes6.jpg
new file mode 100644
index 0000000..7ebe151
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Reyes6.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Rife3474.jpg b/js/games/nluqo.github.io/~bh/art/Rife3474.jpg
new file mode 100644
index 0000000..d950201
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Rife3474.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Rife3603.jpg b/js/games/nluqo.github.io/~bh/art/Rife3603.jpg
new file mode 100644
index 0000000..e98a55f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Rife3603.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/RifeLeft.jpg b/js/games/nluqo.github.io/~bh/art/RifeLeft.jpg
new file mode 100644
index 0000000..c6a6ef2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/RifeLeft.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/RifeOil.jpg b/js/games/nluqo.github.io/~bh/art/RifeOil.jpg
new file mode 100644
index 0000000..d6d9c92
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/RifeOil.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/RifeOld.jpg b/js/games/nluqo.github.io/~bh/art/RifeOld.jpg
new file mode 100644
index 0000000..2476d6b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/RifeOld.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/RifeRight.jpg b/js/games/nluqo.github.io/~bh/art/RifeRight.jpg
new file mode 100644
index 0000000..934c5c9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/RifeRight.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Urbaniak.jpg b/js/games/nluqo.github.io/~bh/art/Urbaniak.jpg
new file mode 100644
index 0000000..7e6038c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Urbaniak.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/VoigtDry.jpg b/js/games/nluqo.github.io/~bh/art/VoigtDry.jpg
new file mode 100644
index 0000000..e40d3de
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/VoigtDry.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/VoigtHills.jpg b/js/games/nluqo.github.io/~bh/art/VoigtHills.jpg
new file mode 100644
index 0000000..d8c1fe3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/VoigtHills.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/VoigtTree.jpg b/js/games/nluqo.github.io/~bh/art/VoigtTree.jpg
new file mode 100644
index 0000000..eea3672
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/VoigtTree.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Weber1.jpg b/js/games/nluqo.github.io/~bh/art/Weber1.jpg
new file mode 100644
index 0000000..9894431
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Weber1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/art/Weber2.jpg b/js/games/nluqo.github.io/~bh/art/Weber2.jpg
new file mode 100644
index 0000000..62b7836
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/art/Weber2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/beard.jpg b/js/games/nluqo.github.io/~bh/beard.jpg
new file mode 100644
index 0000000..bcd2bef
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/beard.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/bh-tiny.jpg b/js/games/nluqo.github.io/~bh/bh-tiny.jpg
new file mode 100644
index 0000000..b4fe5dc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/bh-tiny.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/bjc/bh/bjc200.png b/js/games/nluqo.github.io/~bh/bjc/bh/bjc200.png
new file mode 100644
index 0000000..4b9876d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/bjc/bh/bjc200.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/bjc/index.html b/js/games/nluqo.github.io/~bh/bjc/index.html
new file mode 100644
index 0000000..76b9ce1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/bjc/index.html
@@ -0,0 +1,385 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    
+
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="description" content="The Beauty and Joy of Computing is an endorsed AP Computer Science Principles course that is a rigorous introduction to programming and that the ways we interact with and are affected by technology every day.">
+<meta name="author" content="Dan Garcia, Brian Harvey, Tiffany Barnes, Michael Ball, Lauren Mock">
+<meta name="keywords" contnet="AP CSP, advanced placement, computer scince principles, comp sci, snap, programming, computing, BJC, computer science, cs10, bjcx, bjc4nyc">
+
+<title>BJC | The Beauty and Joy of Computing</title>
+
+<!-- Bootstrap core CSS -->
+<link rel="stylesheet" href="https://people.eecs.berkeley.edu/assets/css/bootstrap.min.css">
+<link href="https://people.eecs.berkeley.edu/assets/font-awesome/css/font-awesome.min.css" rel="stylesheet">
+<link rel="shortcut icon" href="https://people.eecs.berkeley.edu/assets/img/bjcfav.png" type="image/png">
+
+<!-- Custom CSS -->
+<link href="https://people.eecs.berkeley.edu/assets/css/styles.css" rel="stylesheet">
+
+<!-- Google Fonts -->
+<link href="https://fonts.googleapis.com/css?family=Montserrat|Open+Sans" rel="stylesheet">
+
+<!-- Open graph, twitter tags, etc. -->
+<!-- Begin Jekyll SEO tag v2.7.1 -->
+<title>The Beauty and Joy of Computing | BJC</title>
+<meta name="generator" content="Jekyll v3.9.1" />
+<meta property="og:title" content="The Beauty and Joy of Computing" />
+<meta name="author" content="Dan Garcia, Brian Harvey, Tiffany Barnes, Michael Ball, Lauren Mock" />
+<meta property="og:locale" content="en_US" />
+<meta name="description" content="The Beauty and Joy of Computing is an endorsed AP Computer Science Principles course that is a rigorous introduction to programming and that the ways we interact with and are affected by technology every day." />
+<meta property="og:description" content="The Beauty and Joy of Computing is an endorsed AP Computer Science Principles course that is a rigorous introduction to programming and that the ways we interact with and are affected by technology every day." />
+<link rel="canonical" href="https://bjc.berkeley.edu/" />
+<meta property="og:url" content="https://bjc.berkeley.edu/" />
+<meta property="og:site_name" content="BJC" />
+<meta name="twitter:card" content="summary" />
+<meta property="twitter:title" content="The Beauty and Joy of Computing" />
+<meta name="twitter:site" content="@cspbjc" />
+<meta name="twitter:creator" content="@Dan Garcia, Brian Harvey, Tiffany Barnes, Michael Ball, Lauren Mock" />
+<meta name="google-site-verification" content="KuWL2ZXn4a2LNuAH4B-ghSObfCQ3tI6yXiSIRo6f05k"" />
+<script type="application/ld+json">
+{"@type":"WebSite","url":"https://bjc.berkeley.edu/","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://bjc.berkeley.edu/assets/img/bjc.png"},"name":"Dan Garcia, Brian Harvey, Tiffany Barnes, Michael Ball, Lauren Mock"},"headline":"The Beauty and Joy of Computing","sameAs":["https://twitter.com/cspbjc","https://www.facebook.com/cspbjc","https://github.com/beautyjoy","https://instagram.com/cspbjc"],"author":{"@type":"Person","name":"Dan Garcia, Brian Harvey, Tiffany Barnes, Michael Ball, Lauren Mock"},"description":"The Beauty and Joy of Computing is an endorsed AP Computer Science Principles course that is a rigorous introduction to programming and that the ways we interact with and are affected by technology every day.","name":"The Beauty and Joy of Computing","@context":"https://schema.org"}</script>
+<!-- End Jekyll SEO tag -->
+
+
+  </head>
+  <body>
+    <!--
+  This displays a red banner above the navbar on domains that aren't bjc.b.e
+-->
+
+
+<nav
+  class="navbar navbar-fixed-top navbar-inverse warning-nav-top"
+  role="navigation">
+  <div class="container">
+    <div class="navbar-header">
+      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
+        <span class="sr-only">Toggle navigation</span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+        <span class="icon-bar"></span>
+      </button>
+      <!-- You'll want to use a responsive image option so this logo looks good on devices - I recommend using something like retina.js (do a quick Google search for it and you'll find it) -->
+      <a class="navbar-brand" href="https://people.eecs.berkeley.edu/" aria-label="home page">
+        <img alt="" src="https://people.eecs.berkeley.edu/assets/img/bjc.png" aria-hidden="true">
+      </a>
+    </div>
+
+    <!-- Collect the nav links, forms, and other content for toggling -->
+    <div class="collapse navbar-collapse navbar-ex1-collapse">
+      <ul class="nav navbar-nav navbar-right list-unstyled">
+        
+          
+            
+            <li class="dropdown">
+              <a href="index.html#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+                <span class="hover-accent">About</span>
+                <span class="caret" aria-hidden="true"></span>
+              </a>
+              <ul class="dropdown-menu">
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/team/leadership">
+    <span class="hover-accent">Meet the team</span>
+  </a>
+</li>
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/partners">
+    <span class="hover-accent">Partners</span>
+  </a>
+</li>
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/contact">
+    <span class="hover-accent">Contact</span>
+  </a>
+</li>
+                
+              </ul>
+            </li>
+          
+        
+          
+            
+            <li class="dropdown">
+              <a href="index.html#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+                <span class="hover-accent">Curriculum</span>
+                <span class="caret" aria-hidden="true"></span>
+              </a>
+              <ul class="dropdown-menu">
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/curriculum">
+    <span class="hover-accent">BJC CS Principles</span>
+  </a>
+</li>
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/sparks/">
+    <span class="hover-accent">BJC Sparks</span>
+  </a>
+</li>
+                
+              </ul>
+            </li>
+          
+        
+          
+            <li>
+  <a href="https://people.eecs.berkeley.edu/ap-cs-principles">
+    <span class="hover-accent">AP CS Principles</span>
+  </a>
+</li>
+          
+        
+          
+            <li>
+  <a href="https://people.eecs.berkeley.edu/summer-pd/">
+    <span class="hover-accent">Summer PD</span>
+  </a>
+</li>
+          
+        
+          
+            <li>
+  <a href="https://people.eecs.berkeley.edu/resources">
+    <span class="hover-accent">Resources</span>
+  </a>
+</li>
+          
+        
+          
+            
+            <li class="dropdown">
+              <a href="index.html#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
+                <span class="hover-accent">News</span>
+                <span class="caret" aria-hidden="true"></span>
+              </a>
+              <ul class="dropdown-menu">
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/news">
+    <span class="hover-accent">All News</span>
+  </a>
+</li>
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/announcements">
+    <span class="hover-accent">Announcements</span>
+  </a>
+</li>
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/research">
+    <span class="hover-accent">Publications & Talks</span>
+  </a>
+</li>
+                
+                  <li>
+  <a href="https://people.eecs.berkeley.edu/press">
+    <span class="hover-accent">Press Articles</span>
+  </a>
+</li>
+                
+              </ul>
+            </li>
+          
+        
+      </ul>
+    </div><!-- /.navbar-collapse -->
+  </div><!-- /.container -->
+  <div class="trapezoid"></div>
+</nav>
+    <main>
+      <div class="jumbotron homepage">
+  <div class="background-overlay"></div>
+  <div class="container">
+    <h1>The Beauty and Joy of Computing</h1>
+    <p>An AP CS Principles Curriculum</p>
+    <a href="https://bjc.edc.org" target="_blank" class="btn">
+      Try the Curriculum
+    </a>
+    <a href="https://people.eecs.berkeley.edu/summer-pd/" class="btn">Join PD Summer 2022</a>
+  </div>
+</div>
+
+<section class="section">
+  <div class="container-fluid">
+    <div class="row">
+      <div class="col-xs-12 col-sm-10 col-sm-offset-1 text-center">
+        <img src="https://people.eecs.berkeley.edu/assets/img/bjc.png" class="bjc-logo">
+        <p class="lead">
+          <strong>The Beauty and Joy of Computing (BJC)</strong> is an introductory computer
+          science curriculum developed at the University of California, Berkeley,
+          intended for non-CS majors at the high school junior through undergraduate
+          freshman level.  It was one of the five initial pilot programs for the
+          <a href="https://csprinciples.org">AP CS Principles</a> course being
+          developed by the College Board and the National Science Foundation.
+          We offer it as <a href="https://cs10.org/">CS10</a> at Berkeley.
+        </p>
+        <a href="https://people.eecs.berkeley.edu/curriculum" class="btn">
+          How is BJC Special?
+        </a>
+      </div>
+    </div>
+  </div>
+  <div class="trapezoid"></div>
+</section> <!-- /. section -->
+
+<div class="jumbotron headlines">
+  <div class="background-overlay"></div>
+  <div class="container">
+    <h3><a href="https://people.eecs.berkeley.edu/news/2015/01/01/bjc-for-new-york/">We're bringing BJC to New York City!</a></h3>
+    <a href="https://people.eecs.berkeley.edu/news/2015/01/01/bjc-for-new-york/" class="btn">Learn More</a>
+  </div>
+</div>
+
+<div class="section homepage">
+  <div class="container-fluid">
+    <div class="row">
+      <div class="col-sm-4">
+        <div class="circle-frame">
+  <img
+    src="https://people.eecs.berkeley.edu/assets/img/suit-and-tie-icon.png"
+    alt=""
+    aria-hidden="true"
+  />
+</div>
+<h3 class="text-center">Professional Development</h3>
+
+<h4 class="text-center">2022 PD</h4>
+
+<!-- <p>If you are interested in attending Summer 2021 PD, please leave us your information on <a href="https://bjc.link/BJCinterest2020">our Summer 2020 PD interest form</a> so we can notify you when more details are available!</p> -->
+
+<p>If you are ready to <em>apply</em> to BJC Summer 2022 PD, please apply on our <a href='https://bjc.berkeley.edu/summer-pd/'>Summer PD 2022 page</a>! Our summer PD is free for all public school teachers.</p>
+
+
+<p>
+
+<!--
+<p>We are now accepting applications for our 2019 Summmer PD through May 15, 2019.</p>
+<p>Learn about our PD and apply here: <a href="/summer-pd/">
+  2018 BJC and PD Informational Flyer</a></p>
+  </a>
+<!-- <p>Thanks for a great summer 2018!
+  We'll have more updates about 2019 as we get closer to the summer.</p>
+<p>Sign up on our interest list for summer 2019 PD here: <a href="http://bjc.link/pdinterest19">http://bjc.link/pdinterest19</a></p>
+<!-- <h4 class="text-center">
+  <a href="/documents/2018/bjc-pd-2018-flyer.pdf">
+    2018 BJC and PD Informational Flyer
+  </a>
+</h4>
+
+<h4 class="small">Pathfinders Institute July 15-20, 2018</h4>
+<p>
+  BJC will offer free computer science professional development at the Indiana University Bloomington campus July 15-20, 2018 for up to 80 high school teachers with generous support from Infosys Foundation. See the <a href="https://www.infosys.org/infosys-foundation-usa/media/press/Pages/free-cs-training-800-teachers-summer2018.aspx">Pathfinders Institute announcement</a> for more info.
+</p> -->
+
+      </div>
+      <div class="col-sm-4">
+        <div class="circle-frame">
+  <span class="vcenter"></span>
+  <img
+    src="https://people.eecs.berkeley.edu/assets/img/partners/snap.png"
+    alt="snap! logo"
+    class="vcenter"
+  />
+</div>
+
+<h3 class="text-center">Snap! Programming Language</h3>
+<p><a href="https://snap.berkeley.edu/">Snap<em>!</em></a> (formerly BYOB) is a visual, drag-and-drop programming language.  It is an extended reimplementation of <a href="https://scratch.mit.edu/" target="_blank">Scratch</a> (a project of the Lifelong Kindergarten Group at the MIT Media Lab) that allows you to Build Your Own Blocks. It also features first class lists, first class procedures, and continuations.  These added capabilities make it suitable for a serious introduction to computer science for high school or college students.</p>
+      </div>
+      <div class="col-sm-4">
+        <div class="circle-frame">
+  <img src="https://people.eecs.berkeley.edu/assets/img/blown-to-bits.png"
+    alt="blown to bits book" class="shrink-height" />
+</div>
+
+<h3 class="text-center">Textbook on Social Implications</h3>
+<p>In the non-programming part of our course we try to balance a fundamental optimism about the future of computer technology with an understanding of its limitations and potential for harm. Student readings are taken mainly from the excellent textbook <a href="http://www.bitsbook.com/" target="_blank"><i>Blown to Bits,</i></a> which is available for free online download.</p>
+
+      </div>
+    </div>
+  </div>
+  <div class="trapezoid"></div>
+</div> <!-- /. section -->
+
+    </main>
+    <footer>
+  <div class="container">
+    <div class="row">
+      <div class="col-xs-12 social-icons">
+        <a href="https://twitter.com/cspbjc">
+          <i
+            class="fa fa-twitter-square fa-2x"
+            aria-label="Visit BJC Twitter"></i>
+        </a>
+        <a href="https://facebook.com/cspbjc">
+          <i
+            class="fa fa-facebook-square fa-2x"
+            aria-label="Visit BJC Facebook"></i>
+        </a>
+        <a href="https://instagram.com/cspbjc">
+          <i
+            class="fa fa-instagram fa-2x"
+            aria-label="Visit BJC Instagram"></i>
+        </a>
+        <a href="https://people.eecs.berkeley.edu/contact">
+          <i class="fa fa-envelope-o fa-2x"
+             aria-label="Send us an email"
+             style="position: relative; top -2px"
+             ></i>
+        </a>
+      </div>
+    </div>
+    <div class="row footer-links">
+      <div class="col-xs-12">
+        <span class="footer--requiredNotice">
+        <span xmlns:dct="https://purl.org/dc/terms/" property="dct:title">
+          The Beauty and Joy of Computing
+        </span>
+        ©
+        <span xmlns:cc="https://creativecommons.org/ns#" property="cc:attributionName">
+          University of California, Berkeley
+        </span>
+        is licensed under a
+        <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
+          Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
+        </a>.
+        <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
+            <img alt="Creative Commons License" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" />
+        </a>
+    </span>
+      <br />
+      <br />
+      <span class="footer--requiredNotice">
+        The development of this site has been funded by the National Science Foundation under grant nos. 1138596, 1441075, and 1837280; the U.S. Department of Education under grant number S411C200074; and the Hopper-Dean FoundationAny opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation or our other funders. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation or our other funders. 
+      </span>
+      <br />
+      <p>Last updated at: <time>2022-08-02 10:31:29 -0700</time></p>
+    </div>
+  </div>
+</footer>
+<!-- /container -->
+
+<script src="https://people.eecs.berkeley.edu/assets/js/jquery.js"></script>
+<script src="https://people.eecs.berkeley.edu/assets/js/bootstrap.min.js"></script>
+<script src="https://people.eecs.berkeley.edu/assets/js/scripts.js"></script>
+
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-110683264-1"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', 'UA-110683264-1');
+</script>
+
+
+  </body>
+</html>
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/~bh/bridge.html b/js/games/nluqo.github.io/~bh/bridge.html
new file mode 100644
index 0000000..73492dd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/bridge.html
@@ -0,0 +1,470 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<!--Converted with LaTeX2HTML 96.1 (Feb 5, 1996) by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds -->
+<HTML>
+<HEAD>
+<TITLE>Symbolic Programming vs. the A.P. Curriculum</TITLE>
+</HEAD>
+<BODY LANG="EN">
+<H1>Symbolic Programming vs. the A.P. Curriculum</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+<P>
+A popular metaphor in recent years compares the process of writing a
+computer program to that of designing and building a bridge.  The point
+of the metaphor is that it's not acceptable to debug a new bridge
+design by building the bridge, opening it to traffic, and waiting to see
+whether or not it collapses.  People who use this metaphor argue that the
+analogous technique isn't acceptable in computer programming either.
+The phrase <I>software engineering</I> was coined to evoke the comparison
+with civil engineering and other, similar disciplines.  The view of
+programming as software engineering has had a profound influence on
+computer science education.  The purpose of this paper is to examine that
+influence, particularly at the high school level through the College Board
+Advanced Placement curriculum, and suggest an alternative view.
+<P>
+(I am focusing attention on the A.P. curriculum to make the point concrete,
+but it is just one of many similar influences.  The College Board did not
+invent the software engineering view; it tries to follow the lead of its
+client colleges.  At the college level, the ACM curriculum standard could be
+cited instead.  I teach at both levels, but I feel most strongly about the
+inappropriateness of the software engineering approach in secondary
+education.)
+<H2>Software Engineering: Programming as Discipline</H2>
+<P>
+What are the characteristics of the software engineering approach?  One
+fundamental assumption is that <I>the goal of a project is given in
+advance</I>.  It is not the civil engineer's job to decide where a bridge
+should be built, or whether a bridge should be built in the first place.
+Those decisions are made by someone else--politicians, traffic flow
+experts, perhaps railroad owners.  The engineer is employed to carry out
+a predefined project, and is given a formal specification of the
+requirements.
+<P>
+A natural consequence of externally-provided goals is a <I>top-down
+design</I> technique.  Ideally, beginning with the formal goal specification,
+the engineer maps out large subtasks, then develops each subtask into more
+and more detailed structure by a process called ``stepwise refinement,'' one
+of the central elements of the <I>structured programming</I> methodology.
+Mastery of this technique is the main content, apart from programming
+language syntax, of most introductory computer science courses.
+<P>
+If a bridge falls down, its designer can be sued for damages.  A similar
+standard of <I>professional liability</I> should apply to the authors of
+computer programs, if lives or property are endangered by their failure.
+Some professional societies have begun to propose uniform standards for
+licensing of software engineers.  If programmers are held liable for their
+failures, it pays to use <I>conservative techniques</I> in the design of
+new programs.  Just as civil engineers rely on a few well-understood
+designs for bridges, programmers should use proven algorithms to ensure
+program correctness.  Mistakes should not be debugged by trial and error,
+but should be prevented in advance by redundant error checking, strict
+adherence to design standards, and formal proofs of correctness, techniques
+that one popular text calls <I>antibugging</I> [Cooper and Clancy, 1985].
+<P>
+One person can't build a bridge alone.  Bridges are built by large teams,
+and it's important that each team member have a well-defined job.
+Similarly, software engineering emphasizes the needs of <I>programming
+teams</I> in which each programmer is assigned a subtask.  The top-down
+design approach is particularly important in a team environment so that
+each program segment has a well-defined interface to the rest of the project.
+Rigid standards are required about things like scope of variables and
+documentation of subprocedures.
+<P>
+Finally, an <I>emphasis on product</I> has been implicit throughout this
+description.  What is most important is the program, rather than the style
+of work of the programmers.  A software engineer derives job satisfaction
+from seeing people use the product, more than from the programming itself.
+<P>
+(In a recently-published polemic, Edsger Dijkstra, one of the founders of
+the structured programming methodology, dissociates himself from the name
+``software engineering'' because he thinks that it evokes a methodology
+based on testing, rather than on the formal mathematical reasoning that
+Dijkstra prefers.  Still, from the point of view I am presenting, Dijkstra
+and the software engineers are in the same camp because they both focus
+on producing a program that meets a prior specification, rather than on
+the development of that specification.)
+<H2>Artificial Intelligence: Programming as Art</H2>
+<P>
+Some computer programs actually do control processes in which a malfunction
+could threaten human life.  In those cases, I agree that programmers should
+regard their work as closely analogous to other engineering disciplines,
+with the same professional standards and the same conservative techniques.
+Much programming, though, does not have this character.  If a video game,
+for example, malfunctions, no lives are lost.  Reliability is still
+desirable, of course, but other characteristics, such as creativity in
+the design of the game, are equally important.  Unlike bridge-building,
+much computer programming is done by hobbyists for their own personal
+satisfaction, and professional liability does not apply in this case.
+<P>
+Among professional programmers, research work is in some ways more like
+hobbyist programming than like civil engineering.  Reliability may be less
+important than the flexibility to explore new techniques.  (Of course,
+reliability is itself the topic of some computer science research, but even
+then the research cannot proceed by invoking already-known
+methods.)  In particular, artificial intelligence research is
+characterized by the desire to extend the limits of what can be done with a
+computer; the researcher typically does not have a body of well-understood,
+reliable methods to follow.  It is not surprising, then, that AI researchers
+have developed programming tools and approaches quite different from those
+of software engineering.
+<P>
+In a research project, <I>the goal of a project evolves in the work</I>.
+That is, the programmer starts with a broad idea, but often cannot specify
+the detailed behavior of the program until it's written.  She starts with
+a partial understanding, attempts to program some better-understood corner
+of the project, and then interacts with the resulting program to see in what
+direction to proceed.  The goals are chosen by the same person doing the
+programming.
+<P>
+If the goal is not precisely known in advance, a strict top-down design
+process is impossible.  Researchers use <I>interactive design</I>
+techniques, which may include some top-down components but also may
+include a bottom-up approach in which the work already done provides
+a software toolkit that itself suggests new higher-level modules.
+Instead of a single programming methodology like stepwise refinement,
+the researcher uses <I>eclectic techniques</I>.
+<P>
+Since the result of a research project is rarely destined to be used
+directly in real applications, there is <I>no danger</I> and no
+liability.  Instead of following conservative, well-understood patterns,
+the researcher is encouraged to <I>take risks</I> and invent new
+methods.  Program debugging can be interactive; other members of the
+research community are often encouraged to try out the program, not
+only discovering coding bugs but also contributing to the incremental
+design process by suggesting improvements.
+<P>
+Research programs are rarely written by large teams.  One reason is that
+you can't get a Ph.D. for writing one percent of a program; another is
+that it's hard to coordinate large teams without a precise, formal
+design document.  But the most important reason is that large teams
+are rarely creative.  Instead, <I>individual creation</I> is required to
+solve new problems.
+<P>
+To summarize, there must be an <I>emphasis on process</I> in the research
+programming environment.  The resulting program may be demonstrated once
+and never used again, since it will probably be slow and clumsy, but by
+writing it, the researcher learns new ideas that can be refined and
+applied later.  In education, too, the actual programs written by students
+are unimportant; the student, not the program, is the ``product'' of the
+teaching and learning activities.  We should not be surprised if
+process-centered approaches to programming turn out to be most helpful
+in education.
+<P>
+Even when a program is developed for practical use, the development
+process may include steps that are more like research than like
+building bridges.  Consider spreadsheet programs.  The history of
+their development, starting from VisiCalc and continuing to current
+products like Lotus 1-2-3, has been a classic software engineering effort,
+with large development teams and precise goals.  But the first step,
+starting from nothing and getting to VisiCalc, took two people, one
+of whom had the idea, ``here is a new thing we can do with a computer,''
+and the other of whom was a virtuoso computer hacker, trained in the
+MIT research environment.
+<P>
+(By the way, I do not mean to suggest that there is no research among
+civil engineers!  No doubt new bridge designs grow out of a development
+methodology much like the one I'm describing for programming research.
+The contrast I am making is not between programming and civil engineering,
+but between research of any kind and the one-sided caricature of civil
+engineering that provides the metaphor for the software engineering school.)
+<P>
+The metaphor of bridge-building powerfully captures the spirit of the
+software engineering view of programming.  As an equally powerful metaphor
+for this alternative view, I suggest considering programming as an art form,
+and the programmer as an artist.
+<H2>How to Train an Artist</H2>
+<P>
+I am discussing the nature of computer programming to make a point about
+the nature of computer programming education.  There are two very different
+kinds of programming activity, bridge-building and art.  I suggest that our
+standard computer science curriculum does a good job of preparing students
+for the first kind, but not for the second.  If we want to develop
+computer programming artists, we should explore the training of other
+kinds of artists.
+<P>
+(Both of these approaches are extremes.  Some
+readers may feel more comfortable with an intermediate position,
+representable in metaphor by professions such as medicine and architecture
+that combine the need for individual creativity with careful attention to
+conservative techniques.  Still, I am trying to call attention to an
+imbalance in our current educational practice, and in this context I think
+it is valuable to show what the opposite extreme would be like.  I hope that
+even this extreme will not seem impractical, even if we ultimately settle on
+a compromise view.)
+<P>
+The training of artists is not the exact opposite of the training of
+engineers; art schools do not merely throw the student into a room full of
+materials and say, ``go to it!'' There is a discipline to art also,
+including a collection of well-understood, conservative techniques.
+<P>
+I suggest that the training of an artist can be divided into three
+categories of learning.  There is <I>technical knowledge</I>, such as
+the differences between oil paints and water colors, or the rules of
+perspective.  There is <I>technical skill</I>, such as the ability to
+draw a straight line freehand without wiggling, or the ability to
+stretch a canvas evenly before painting on it.  And there is <I>
+inspiration</I>, seeing the world with an artist's eye and finding something
+worth painting at all.
+<P>
+All three of these are essential to a great artist, but inspiration
+comes first!  I am not an artist, and my personal experience of art
+instruction has been limited to a couple of introductory courses when
+I was in high school.  In those courses, though, the teachers made a
+big fuss about staying away from technique.  ``Never mind what it
+looks like'' was a frequent comment.  One beginning exercise was to draw
+a chair with our eyes closed; the point was to overcome our anxiety about
+photographic exactness and get us to enjoy moving a pencil over paper in
+broad strokes.  The teachers promised that technical instruction, for
+those of us who did develop a deeper interest in art, would come later.
+<P>
+Art instruction that began with endless practice at drawing straight lines
+and perspective cubes would chase away any true potential artists.  At best
+it would produce ``commercial artists,'' a classic oxymoron.  This is the
+risk we run in computer science education.  (Commercial artists are socially
+useful, and so are the members of software engineering teams.  But there
+could be no commercial art without true creative artists to invent the
+language and the tools of art.)
+<H2>The Programming Language Paradox</H2>
+<P>
+Software engineers believe in constructing a program top-down.  That is,
+they start with the broad ideas of the program, and fill in the details
+later.  You would think their design tools would support programming in
+terms of broad ideas.  Yet the programming languages of software engineering,
+of which Pascal is the prototype, focus attention on low-level details.
+They use explicit storage allocation, so the programmer must think about the
+size, location, and extent in time of each data aggregate.  They use strong
+typing, encouraging the programmer to concentrate on the precise encoding
+of symbolic information rather than on the meaning.  They provide half a
+dozen specific, hardwired control structures, emphasizing the sequence of
+events in a computation rather than the input-output behavior of functions.
+Complex data structures are manipulated with explicit pointers, a common
+source of confusion and bugs.
+<P>
+Some of these low-level properties of software engineering languages are
+the result of their early history as merely an abbreviation for machine
+language instructions.  But, for example, the transition from C (a hacker's
+language) to C++ (a software engineer's language) has brought more attention,
+not less, to these low-level details.  The improvement is that in C++ the
+details can be represented more rigorously, with less need to rely on
+<I>ad hoc</I> escape hatches such as type casting.
+<P>
+Software engineers recognize the inadequacy of their programming languages
+as design tools.  That is why they develop their programs using
+``pseudocode,'' essentially English with indentation to indicate block
+structure.  English is a good high-level design language precisely because
+it does not require the programmer to think about memory allocation, variable
+types, and so on.  The difficulty is that if one really designs in English,
+it's possible to write an instruction that has no obvious translation (or
+even no translation at all) into any programming language.  To end up with
+useful pseudocode, the programmer must actually cheat, writing the program
+mentally in something like Pascal and then translating into English and
+leaving out most of the details.
+<P>
+There are programming languages that don't require such extreme attention to
+low-level details as the ones software engineers love.  These symbolic
+programming languages can readily express overall design as well as
+details.  Why don't the software engineers choose higher-level languages?
+The reason is that they overemphasize their concern with reliability, and in
+particular with possible low-level bugs.  For example, although a language
+with explicit variable typing forces the programmer
+to be concerned with low-level details, it also may help catch bugs in which
+an incorrect value is assigned to a variable.
+<P>
+The educational cost of the software engineering languages is that much
+of the time and effort in introductory courses goes into syntactic details,
+and into such low-level semantic issues as binary representation, word
+length, ASCII codes, and pointer arithmetic.  By contrast, an introductory
+computer science course that uses Lisp [Abelson and Sussman, 1996], coming
+from the artificial intelligence research tradition, can focus attention
+on such high-level semantic issues as functional programming, object-oriented
+programming, and logic programming methodologies, data abstraction, and
+higher levels of abstraction such as the design and implementation of a
+programming language.  There is no pseudocode in this text; a Lisp procedure
+written in terms of subprocedures that may not yet be defined provides the
+right level of abstraction, while retaining technical rigor.
+<P>
+The title of this paper is ``Symbolic Programming vs. the A.P. Curriculum.''
+It could equally well have been ``High-Level Semantics vs. the A.P.
+Curriculum'' or ``Programming as Art vs. the A.P. Curriculum.'' For my
+purposes, what's important about symbolic programming is that it allows us to
+step back from technical details, in a way somewhat analogous to blindfold
+drawing exercises.  There are technical ideas in the curriculum, but they
+are high-level ideas, and they don't deaden the hacker spirit (that is, the
+artistic spirit).  In fact, as an introductory college-level course, I think
+the Abelson and Sussman course works better than the traditional curriculum
+even from a bridge-building perspective, because even software engineers
+should start with the big ideas.  Data abstraction, for example, is part of
+the structured programming approach as well as the artificial intelligence
+approach to program development.
+<P>
+I want to address a possible misunderstanding of the point I'm making.  The
+choice of programming language is not the central issue in designing an
+educational process.  It would be possible to teach a software engineering
+curriculum in any language, including Lisp.  (Indeed, these curricula
+generally make a point of not specifying a language, and the authors of the
+curricula respond to accusations of language chauvinism by pointing that
+out.)  Such a curriculum would be just as bad as the same course taught in
+Pascal.  Rather, my point is that an examination of the programming
+languages that the adherents of each approach actually do choose sheds light
+on how these approaches work out in educational practice.  The principle of
+top-down design sounds great when expressed in the abstract, but the real
+teaching done in its name too easily gets bogged down in low-level technical
+details.
+<H2>What High School Students Need</H2>
+<P>
+In the United States at present, high school computer science education is
+strongly affected by the accidental fact that there is no official secondary
+curriculum, but there <I>is</I> an official college-level curriculum for
+secondary schools in the form of the College Board Advanced Placement exam.
+The result is that most high school students who are interested in
+programming are now taught from a model that was designed (and badly
+designed, as I have argued above, at that) for a college population.
+The problem is not the College Board's fault; a lack of creative leadership
+at the secondary level has allowed what should be an advanced curriculum for
+a minority of students to set the tone for all programming instruction.
+<P>
+At the college level, where we are engaged in the training of professional
+programmers, the software engineering approach is sensible, even if not
+the whole story.  I have not suggested abandoning concerns about professional
+liability, conservative design, and teamwork in the context of programming
+projects in which lives or property are at risk.  Rather, I have argued that
+software engineering concerns should be balanced by a lively sense of the
+artistic, creative side of professional programming, and that large ideas
+should come before technical details in the curriculum.
+<P>
+At the high school level, I want to argue for a more extreme view.  High
+school students are not about to enter the job market as professional
+programmers.  Rather, they are exploring a possible interest in programming,
+and preparing for further instruction at the college level.  <I>They can
+learn discipline later</I>.  Now they need a kind of apprenticeship: real tasks
+to work on, the freedom to experiment and to risk failure, but in an
+environment that models respect for commitment.  They need teachers who
+serve as experts available for consultation, rather than lecture on
+technical knowledge or set exercises of technical skills.
+<P>
+(I am concerned here with the needs of those students who are interested in
+computer programming.  The design of a ``computer literacy'' curriculum for
+all students is a separate issue.  I have argued elsewhere that it is
+really a non-issue; students should be quite comfortable with word processors
+and other utility programs long before they leave elementary school.  The
+widely perceived need for a secondary school ``literacy'' curriculum is a
+temporary result of the fact that computers have only recently entered the
+schools in significant numbers.)
+<P>
+Not every teenager wants to program computers, but many do.  Computers are
+powerful, responsive tools.  Apart from reading, few intellectual skills
+appeal so strongly to young people, especially not formal, technical ones.
+We educators are lucky that computer programming ranks almost as high as
+skateboarding and playing the guitar!  We should teach programming in a way
+that nurtures this excitement, not turning it into one more academic
+subject full of facts to be paraded on exams.  Instead, high school
+programming instruction should be project-based, with projects chosen by
+the students themselves as much as possible.  The A.P. curriculum is
+particularly bad, because of its emphasis on conservative technique and
+correspondingly low-level details, but <I>any</I> fixed curriculum would
+interfere.
+<P>
+Of course the student's apprenticeship can't begin without an initial period
+devoted to learning the rules of a programming language.  But I think we
+should look upon this early work as an unfortunate necessity, rather than as
+the focus of our curriculum, and we should try to get it over with smoothly
+and quickly.  (In practice the division into stages is not so
+clear-cut.  Students can be working on independent projects in parallel with
+formal instruction in the language.  Still, the two are very
+different in style, and will probably be experienced by students as separate
+activities.)  To this end, we should choose a high-level language such as
+Lisp to minimize the time spent on syntax and machine representation
+issues.  (Abelson and Sussman use the Scheme dialect of Lisp in their text;
+for high school students I prefer the Logo dialect, which provides many of
+the same high-level mechanisms along with a user interface that is less
+intimidating to a beginner.)  I also like to minimize formal lectures,
+relying instead on a self-paced format and scheduling advanced students into
+the lab at the same time as the beginners to allow for informal one-on-one
+tutoring.
+<P>
+In this early stage, I have come to think that debugging (and antibugging)
+should <I>not</I> be a large part of the student's experience.  It's true
+that debugging is excellent mental exercise, but real beginners tend to make
+uninteresting mistakes.  Spending 15 minutes struggling with an unnoticed
+punctuation error just teaches frustration, and so I will often debug a
+beginner's program myself and encourage the student to get on with the big
+idea that the bug interrupted.  Only if the bug seems to indicate a serious
+conceptual misunderstanding do I make any fuss about it.
+<P>
+The second stage of the student's apprenticeship focuses on projects.  This
+effort should be supported structurally with a curriculum-free lab course
+that can be repeated for credit; interested students may enroll in the lab
+throughout half a dozen semesters.  (One problem with the ``back to basics''
+movement is that it has encouraged a uniform set of courses for all students.
+One semester of programming is more than many students need, but not nearly
+enough for many others.)  If the school will allow the course to be taught
+without assigning grades, so much the better.  The teacher's role at the
+beginning of the semester is to ensure that each student takes on a project
+that is challenging but not overwhelming; later, the teacher serves as a
+consultant, looking over shoulders when that feels appropriate.  It is also
+appropriate to make concrete suggestions about programming style, pointing
+out how a particular student program could be organized more clearly, but I
+think teachers should not insist on universal adherence to broad <I>a
+priori</I> rules.
+<P>
+For most high school students, this second stage can last through the senior
+year.  If the programming projects are selected well, each student will learn
+certain universally important ideas (such as recursion), and also each
+student will learn many other ideas that happen to be relevant to his or
+her projects but are different from another student's learning.  This project
+laboratory will be excellent preparation for a more rigorously structured
+computer science curriculum in college.  Some students, however, will
+eventually get tired of projects and will ask for more formal instruction
+about meatier ideas.  For them, a third-stage course can introduce computer
+science topics such as automata theory or compiler construction;
+alternatively, a true Advanced Placement course can be offered using the
+Abelson and Sussman text.
+<P>
+I have written a series of three texts, using Logo, to support these three
+stages [Harvey, 1997].  The first (introducing the language)
+and the third (computer science topics) are meant to be read sequentially,
+like most texts.  The second is primarily a collection of projects,
+intended to serve as an inspiration and to provide starting points
+for student projects rather than to be read from cover to cover.  A series
+like this has the advantage of a uniform style and the ability to rely on
+earlier learning in the later volumes, but alternatives are available for
+each of the three stages.  In particular, there are many collections of
+programming projects available, and the computer lab should have a wide
+assortment.  In the third stage, even a Pascal-based text covering the
+official Advanced Placement curriculum wouldn't be too harmful; my concern
+is that that curriculum has become, by default, the only programming
+experience for many high school students.
+<H2>Conclusion</H2>
+<P>
+To summarize, I am presenting for computer science an argument that has
+come up before in many other areas of science and mathematics education.
+Our official curricula, I think, run the same risk as the official
+physics curriculum that caused Albert Einstein to drop out of school.
+Such rigidity would be particularly regrettable in a subject like
+computer programming, which lends itself so readily to a flexible,
+experimental approach.
+
+<P>[Note added 30 May 2003:  An interesting related but independent paper
+is <A HREF="http://www.paulgraham.com/hp.html">"Hackers and Painters"</A>
+by Paul Graham.]
+
+<H2>References</H2>
+<P>
+Abelson, Harold, and Gerald Jay Sussman.  <I>Structure and Interpretation
+of Computer Programs</I>, Second Edition, MIT Press, 1996.
+<P>
+Cooper, Doug, and Michael Clancy.  <I>Oh! Pascal!</I> Second Edition,
+Norton, 1985.
+<P>
+Harvey, Brian.  <I>Computer Science Logo Style</I>, Second Edition,
+MIT Press, 1997.
+<UL>
+<LI>Volume 1: <I>Symbolic Computing</I>
+<LI>Volume 2: <I>Advanced Techniques</I>
+<LI>Volume 3: <I>Beyond Programming</I>
+</UL>
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/bridge.ps b/js/games/nluqo.github.io/~bh/bridge.ps
new file mode 100644
index 0000000..5897f8e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/bridge.ps
@@ -0,0 +1,1206 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software
+%%Title: bridge.dvi
+%%Pages: 9
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%DVIPSCommandLine: dvips bridge.dvi -o bridge.ps
+%DVIPSParameters: dpi=300, comments removed
+%DVIPSSource:  TeX output 1994.07.21:1332
+%%BeginProcSet: tex.pro
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
+/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
+mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
+ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
+hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
+TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
+round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
+0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
+begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
+array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
+setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
+FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
+pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
+B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
+length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
+/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
+0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
+index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
+ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
+ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
+ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
+/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
+sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
+}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
+moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
+userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
+/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
+65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
+0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
+{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
+getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
+ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
+false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
+scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0
+ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
+0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
+B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
+3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
+-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
+3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1200 300 300
+(/home/anarres/g/users/bh/papers/bridge.dvi) @start /Fa
+35 122 df<006000F001F001F001E001E003E003E003C003C003C0078007800780070007
+0007000E000E000E000C000C001C0018001800000000000000000000007000F800F800F0
+00E0000C237BA20F>33 D<0E1F1F1F1D010102020408081020C0080F7E840F>44
+D<FFC0FFC0FF800B037B8B12>I<00000300000007000000070000000F0000001F000000
+1F0000003F0000003F0000006F80000067800000C7800000C78000018780000387800003
+07800006078000060780000C0780000C0780001807800018078000300780007FFF80007F
+FF8000C0078000C00780018003C0018003C0030003C0030003C0060003C01F0007C0FFC0
+7FFCFFC07FFC1E227DA125>65 D<0000FC040007FF0C001F839C003C00FC00F800F801E0
+007803C00078078000780F8000300F0000301F0000303E0000303E0000607C0000007C00
+00007C000000F8000000F8000000F8000000F8000000F8000000F0000000F0000180F000
+0180F0000300F0000300F800060078000C0078000C003C0018001E0070000F81C00007FF
+800000FC00001E2278A124>67 D<00FFFC00FFFC000780000780000F00000F00000F0000
+0F00001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000
+780000F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00007
+C000FFFC00FFFC0016227EA113>73 D<007FFE0000FFFE000007800000078000000F0000
+000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000
+003C0000003C00000078000000780000007800000078000000F0000000F000C000F000C0
+00F0018001E0018001E0018001E0030001E0030003C0070003C00E0003C01E0007C07E00
+7FFFFC00FFFFFC001A227DA11F>76 D<0001FC00000F0700001C0380007001C000E001E0
+01C000E003C000F0078000F00F0000F00F0000F81E0000F83E0000F83E0000F87C0000F8
+7C0000F87C0000F8F80001F0F80001F0F80001F0F80001E0F80003E0F00003E0F00007C0
+F00007C0F0000F80F0000F00F0001F0078001E0078003C00380078003C00E0001E01C000
+0707000001F800001D2278A126>79 D<007FFFE000FFFFF80007807C0007803C000F001E
+000F001E000F001E000F001E001E003E001E003E001E003E001E003C003C007C003C0078
+003C00F0003C01E0007807C0007FFF00007800000078000000F0000000F0000000F00000
+00F0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000007C00000
+7FFC0000FFFC00001F227DA122>I<0003E080000FF980003C1F8000700F8000E0070000
+C0070001C0070001C0070003800600038006000380000003C0000003C0000003F0000001
+FE000001FFC00000FFE000003FF0000007F0000000F80000007800000078000000780000
+0078003000700030007000300070003000E0007000E0007801C000780380006E070000C7
+FE000081F8000019227CA11C>83 D<0FFFFFFC0FFFFFFC0F01E03C1C01E01C1C03C01C18
+03C01C3003C0183003C01830078018600780186007801860078018000F0000000F000000
+0F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000003C000000
+3C00000078000000780000007800000078000000F0000000F0000000F0000001F000007F
+FFC000FFFFC0001E2278A124>I<00F180038B80070F800E07001E07001C07003C070038
+0E00780E00780E00780E00F01C00F01C00F01C20F01C30F03860F0386070786070D8C031
+98801E0F0014157B9419>97 D<03C03F803F800380038007000700070007000E000E000E
+000E001C001CF81D8C1E0E3C063C073807380F700F700F700F700FE01EE01EE01EE03CE0
+38E038607060E031C01F0010237BA217>I<007C01C2030307070E0F1C0F3C0038007800
+78007800F000F000F000F000F00170037006301C18380FC010157B9417>I<0000780007
+F00007F00000700000700000E00000E00000E00000E00001C00001C00001C00001C00003
+8000F380038B80070F800E07001E07001C07003C0700380E00780E00780E00780E00F01C
+00F01C00F01C20F01C30F03860F0386070786070D8C03198801E0F0015237BA219>I<00
+F803840E061C063C063806780CF038FFE0F000F000E000E000E000E000E002E006600C70
+3830700F800F157A9417>I<00007C0000CE00019E00039E00038C000300000700000700
+000700000700000E00000E00000E00000E0001FFF001FFF0001C00001C00001C00001C00
+001C0000380000380000380000380000380000700000700000700000700000700000E000
+00E00000E00000E00001C00001C00001C00001C000038000738000F30000F30000660000
+3C0000172D82A20F>I<001F180031B800E0F801C0F001C0700380700780700700E00F00
+E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E03800E0780060F80061F0001E7
+00000700000700000E00000E00000E00701C00F01800F0300060E0003F8000151F7E9417
+>I<00F0000FE0000FE00000E00000E00001C00001C00001C00001C00003800003800003
+8000038000070000071E0007638007C1800F81C00F01C00E01C00E01C01C03801C03801C
+03801C0380380700380700380E08380E0C700E18701C18701C30700C20E00C6060078016
+237DA219>I<00E000E001E000C00000000000000000000000000000000000001E003300
+63806380C380C700C70007000E000E000E001C001C001C40386038C070C0708031803100
+1E000C227CA10F>I<0001C00003C00003C0000180000000000000000000000000000000
+000000000000000000000000003C00004600008700018700030700030700030700000E00
+000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000
+00700000700000700000E00000E00000E00071C000F18000F380006600003C0000122C82
+A10F>I<00F0000FE0000FE00000E00000E00001C00001C00001C00001C0000380000380
+000380000380000700000701E00706300708700E10F00E20F00E20600E40001D80001E00
+001FC0001CE0003870003830003838203838307070607070607070407030C0E01880600F
+0014237DA217>I<01E01FC01FC001C001C0038003800380038007000700070007000E00
+0E000E000E001C001C001C001C0038003800380038007000700071007180E300E300E300
+620066003C000B237CA20D>I<1E07C07C00331861860063B033030063E03E0380C3C03C
+0380C3C03C0380C38038038007807807000700700700070070070007007007000E00E00E
+000E00E00E000E00E01C100E00E01C181C01C01C301C01C038301C01C038601C01C01840
+38038018C01801800F0026157C9429>I<1E0780003318E00063B0600063E07000C3C070
+00C3807000C38070000700E0000700E0000700E0000700E0000E01C0000E01C0000E0382
+000E0383001C0386001C0706001C070C001C030800380318001801E00019157C941C>I<
+007C0001C6000303000603800E03C01C03C03C03C03803C07803C07803C07803C0F00780
+F00780F00780F00F00F00E00701E00701C003038001860000F800012157B9419>I<03C1
+E00666300C7C380C781818781C18701C18701C00E03C00E03C00E03C00E03C01C07801C0
+7801C07801C0700380E003C0E003C1C003C380076700073C000700000700000E00000E00
+000E00000E00001C00001C0000FFC000FFC000161F7F9419>I<00F840018CC00707C00E
+07800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E00F0
+1C00701C00703C00307C0030F8000F380000380000380000700000700000700000700000
+E00000E0000FFE001FFE00121F7B9417>I<1E1F0033318063E1C063C3C0C3C3C0C38180
+C380000700000700000700000700000E00000E00000E00000E00001C00001C00001C0000
+1C000038000018000013157C9415>I<007801840306020E061E061E0608070007F007F8
+03FC007C001E000E700EF00CF00CE008601030601F800F157D9414>I<006000E000E000
+E000E001C001C001C001C00380FFF8FFF8038007000700070007000E000E000E000E001C
+001C001C101C18383038303860186018C00F000D1F7C9E11>I<0F003011807021C07061
+C0E0C1C0E0C380E0C380E00381C00701C00701C00701C00E03800E03800E03840E03860E
+070C0C070C0E070C0E0B1806131003E1E018157C941B>I<0F01C01183C021C3E061C1E0
+C1C0E0C380E0C380E00380C00700C00700C00700C00E01800E01800E01800E03000E0300
+0E02000E04000E0C0006180001E00014157C9417>I<0F003070118070F021C070F861C0
+E078C1C0E038C380E038C380E0380381C0300701C0300701C0300701C0300E0380600E03
+80600E0380600E0380C00E0380C00E0780800E078180060F83000319860001F078001E15
+7C9421>I<0F003011807021C07061C0E0C1C0E0C380E0C380E00381C00701C00701C007
+01C00E03800E03800E03800E03800E07000C07000E07000E0F00061E0003EE00000E0000
+0E00001C00301C0078380078300070600060C0002180001E0000151F7C9418>121
+D E /Fb 78 125 df<000FE1F80078178C00E03E1E01C07E3E03C07C3E07807C1C07803C
+0007803C0007803C0007803C0007803C0007803C0007803C0007803C00FFFFFFE0FFFFFF
+E007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C
+0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C007FF1FF
+E07FF1FFE01F2380A21D>11 D<000FC0000078300000E0080001C03C0003C07C0007807C
+0007807C0007803800078000000780000007800000078000000780000007800000FFFFFC
+00FFFFFC0007807C0007803C0007803C0007803C0007803C0007803C0007803C0007803C
+0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C
+007FF1FFC07FF1FFC01A2380A21C>I<000FEC0000783C0000E07C0001C07C0003C07C00
+07803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C00
+FFFFFC00FFFFFC0007803C0007803C0007803C0007803C0007803C0007803C0007803C00
+07803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C0007803C00
+07803C007FF1FFC07FF1FFC01A2380A21C>I<000FE03F00003819E0C000E007802001C0
+1F00F003C03F01F007803E01F007803E01F007801E00E007801E000007801E000007801E
+000007801E000007801E000007801E0000FFFFFFFFF0FFFFFFFFF007801E01F007801E00
+F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F0
+07801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007801E00F007
+801E00F07FF0FFC7FF7FF0FFC7FF282380A22A>I<70F8F8F8F8F8F8F870707070707070
+70707070202020202020000000000070F8F8F87005237CA20E>33
+D<701CF83EFC3FFC3F741D0401040104010401080208021004100420084010100F7EA219
+>I<70F8FCFC7404040404080810102040060F7CA20E>39 D<0010002000400080018003
+00060006000C001C001C0018003800380030007000700070007000F000E000E000E000E0
+00E000E000E000E000E000E000F000700070007000700030003800380018001C001C000C
+00060006000300018000800040002000100C327DA413>I<800040002000100018000C00
+06000600030003800380018001C001C000C000E000E000E000E000F00070007000700070
+00700070007000700070007000F000E000E000E000E000C001C001C00180038003800300
+060006000C00180010002000400080000C327DA413>I<00C00000E00000C00000C00040
+C080E0C1C0F0C3C07CCF801EDE0003F00000C00003F0001EDE007CCF80F0C3C0E0C1C040
+C08000C00000C00000E00000C00012157DA419>I<000180000001800000018000000180
+000001800000018000000180000001800000018000000180000001800000018000000180
+00000180000001800000018000FFFFFFFFFFFFFFFF000180000001800000018000000180
+000001800000018000000180000001800000018000000180000001800000018000000180
+0000018000000180000001800020227D9C27>I<70F8FCFC740404040408081010204006
+0F7C840E>I<FFF0FFF0FFF00C037F8B11>I<70F8F8F87005057C840E>I<00600000E000
+03E000FFE000FDE00001E00001E00001E00001E00001E00001E00001E00001E00001E000
+01E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E000
+01E00001E00001E00001E0007FFF807FFF8011207D9F19>49 D<03F8000FFF00181F8020
+07C04003E0F801E0FC01F0FC00F0FC00F07800F03001F00001E00001E00003E00003C000
+0780000700000E00001C0000380000700000E00000C00001001002001004001008003010
+00203FFFE07FFFE0FFFFE0FFFFE014207E9F19>I<03F8000FFE00180F803803C07C03C0
+7C03E07C01E03C01E01803E00003C00003C0000780000F00001C0003F800000E00000780
+0003C00003E00001E00001F00001F03001F07801F0FC01F0FC01E0FC03E0F803C06007C0
+380F801FFE0003F80014207E9F19>I<000180000180000380000780000F80000F800017
+800027800067800047800087800107800307800207800407800807801807801007802007
+80400780C00780FFFFFCFFFFFC00078000078000078000078000078000078000078000FF
+FC00FFFC16207F9F19>I<1800401E03801FFF801FFF001FFC0013F00010000010000010
+000010000010000010000011FC001606001803801003C00001C00001E00001E00001F000
+01F07001F0F801F0F801F0F801F0F801E04003E04003C03007801C0F000FFE0003F00014
+207E9F19>I<003E0000FF8003C0C00700E00E01E01C03E01C03E03801C0380000780000
+700000700000F0F800F30600F40380F401C0F801C0F800E0F000E0F000F0F000F0F000F0
+7000F07000F07000F03800E03801E01801C01C03800F070007FE0001F80014207E9F19>
+I<4000006000007FFFF07FFFF07FFFE07FFFE0400040C000808001008001008002000004
+0000080000080000100000300000300000700000700000E00000E00000E00001E00001E0
+0001E00001E00003E00003E00003E00003E00003E00003E00003E00001C00014227DA119
+>I<01F80007FF000C07801001C02000C06000606000607000607800607C00C03F00C03F
+81801FE6000FFC0007FC0001FF0006FF800C3FC0381FE03007E07001F0E000F0E000F0E0
+0070E00070E000707000607000E03801C01E07800FFE0001F80014207E9F19>I<01F800
+07FE000E0F001C03803801C07801C07001E0F000E0F000E0F000E0F000F0F000F0F000F0
+7000F07001F03801F03802F01C02F0060CF001F0F00000F00000E00000E00001E03801C0
+7C01C07C0380780700300E00303C001FF80007E00014207E9F19>I<70F8F8F870000000
+000000000000000070F8F8F87005157C940E>I<70F8F8F8700000000000000000000000
+70F8F8F87808080808101010204040051F7C940E>I<07F000181C00200E00400700F007
+80F80780F80780F80780700780000F00000E00001C0000380000700000600000C0000080
+000080000180000100000100000100000100000100000100000000000000000000000000
+0000000003800007C00007C00007C00003800011237DA218>63 D<000180000001800000
+0180000003C0000003C0000003C0000007E0000007E000000FF0000009F0000009F00000
+11F8000010F8000010F8000020FC0000207C0000207C0000403E0000403E0000403E0000
+801F0000801F0000FFFF0001FFFF8001000F8003000FC0020007C0020007C0040007E004
+0003E00C0003E01E0003F0FFC03FFFFFC03FFF20227EA125>65 D<FFFFF800FFFFFE0007
+C00F8007C007C007C003E007C001E007C001F007C001F007C001F007C001F007C001F007
+C001E007C003E007C007C007C00F8007C03E0007FFFE0007C0078007C003C007C001E007
+C001F007C000F007C000F807C000F807C000F807C000F807C000F807C000F807C001F007
+C001F007C003E007C00FC0FFFFFF00FFFFFC001D227EA123>I<0007F008003FFC1800FC
+073801F001B803C000F8078000780F0000381E0000183E0000183C0000187C0000087C00
+000878000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
+0000780000007C0000087C0000083C0000083E0000081E0000100F0000100780002003C0
+004001F0018000FC0700003FFE000007F0001D227DA124>I<FFFFF800FFFFFE0007C00F
+8007C003C007C001E007C000F007C0007807C0007807C0003C07C0003C07C0001E07C000
+1E07C0001E07C0001F07C0001F07C0001F07C0001F07C0001F07C0001F07C0001F07C000
+1F07C0001F07C0001E07C0001E07C0003E07C0003C07C0003C07C0007807C000F007C001
+E007C003C007C00F80FFFFFF00FFFFF80020227EA126>I<FFFFFFE0FFFFFFE007C003E0
+07C000E007C0006007C0002007C0003007C0003007C0001007C0201007C0201007C02010
+07C0200007C0600007C0E00007FFE00007FFE00007C0E00007C0600007C0200007C02000
+07C0200407C0200407C0000407C0000807C0000807C0000807C0001807C0001807C00038
+07C0007807C001F0FFFFFFF0FFFFFFF01E227EA122>I<FFFFFFE0FFFFFFE007C003E007
+C000E007C0006007C0002007C0003007C0003007C0001007C0001007C0201007C0201007
+C0200007C0200007C0600007C0E00007FFE00007FFE00007C0E00007C0600007C0200007
+C0200007C0200007C0200007C0000007C0000007C0000007C0000007C0000007C0000007
+C0000007C00000FFFF0000FFFF00001C227EA121>I<0007F008003FFC1800FC073801F0
+01B803C000F8078000780F0000381E0000183E0000183C0000187C0000087C0000087800
+0008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFF7800
+3FFF7C0000F87C0000F83C0000F83E0000F81E0000F80F0000F8078000F803C000F801F0
+017800FC0638003FFC180007F00820227DA127>I<FFFE7FFFFFFE7FFF07C003E007C003
+E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003
+E007C003E007C003E007FFFFE007FFFFE007C003E007C003E007C003E007C003E007C003
+E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003E007C003
+E007C003E0FFFE7FFFFFFE7FFF20227EA125>I<FFFEFFFE07C007C007C007C007C007C0
+07C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C0
+07C007C007C007C007C007C0FFFEFFFE0F227FA112>I<0FFFF00FFFF0001F00001F0000
+1F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0000
+1F00001F00001F00001F00001F00001F00001F00001F00001F00301F00781F00FC1F00FC
+1F00FC1E00783E00403C003070000FC00014227EA11A>I<FFFF0000FFFF000007C00000
+07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
+07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
+07C0004007C0004007C0004007C0004007C000C007C000C007C0008007C0018007C00180
+07C0078007C01F80FFFFFF80FFFFFF801A227EA11F>76 D<FFC00003FF80FFC00003FF80
+07C00003F00005E00005F00005E00005F00004F00009F00004F00009F00004F00009F000
+04780011F00004780011F00004780011F000043C0021F000043C0021F000043C0021F000
+041E0041F000041E0041F000040F0081F000040F0081F000040F0081F00004078101F000
+04078101F00004078101F0000403C201F0000403C201F0000401E401F0000401E401F000
+0401E401F0000400F801F0000400F801F0000400F801F00004007001F0001F007001F000
+FFE0703FFF80FFE0203FFF8029227EA12E>I<FFC007FFFFE007FF07F000F805F0002004
+F8002004F80020047C0020047E0020043E0020041F0020041F8020040F80200407C02004
+07E0200403E0200401F0200401F0200400F8200400FC2004007C2004003E2004003F2004
+001F2004000FA004000FE0040007E0040003E0040003E0040001E0040001E0040000E01F
+000060FFE00060FFE0002020227EA125>I<000FF00000781E0000E0070003C003C00780
+01E00F0000F01E0000781E0000783C00003C3C00003C7C00003E7800001E7800001EF800
+001FF800001FF800001FF800001FF800001FF800001FF800001FF800001F7800001E7C00
+003E7C00003E3C00003C3E00007C1E0000781E0000780F0000F0078001E003C003C000E0
+070000781E00000FF00020227DA127>I<FFFFF800FFFFFE0007C01F0007C007C007C003
+C007C001E007C001E007C001F007C001F007C001F007C001F007C001F007C001E007C003
+E007C003C007C0078007C01F0007FFFC0007C0000007C0000007C0000007C0000007C000
+0007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C000
+00FFFE0000FFFE00001C227EA122>I<FFFFE00000FFFFFC000007C01F000007C0078000
+07C003C00007C003E00007C001E00007C001F00007C001F00007C001F00007C001F00007
+C001E00007C003E00007C003C00007C007000007C03E000007FFF0000007C03C000007C0
+1E000007C00F000007C00F800007C007C00007C007C00007C007C00007C007C00007C007
+C00007C007C00007C007C00007C007C00007C007C04007C003C04007C003E080FFFE00F1
+80FFFE003E0022227EA125>82 D<03F8100FFE301E07703801F0780070700030F00030F0
+0010F00010F00010F80000F800007E00007FC0003FFC001FFF000FFFC007FFE000FFE000
+0FF00001F00000F80000F8000078800078800078800078C00070C00070E000E0F001E0FE
+03C0C7FF8080FE0015227DA11C>I<7FFFFFFC7FFFFFFC7807C03C6007C00C4007C00440
+07C004C007C006C007C0068007C0028007C0028007C0028007C0020007C0000007C00000
+07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00000
+07C0000007C0000007C0000007C0000007C0000007C0000007C0000007C0000007C00003
+FFFF8003FFFF801F227EA124>I<FFFE07FFFFFE07FF07C000F807C0002007C0002007C0
+002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0
+002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0002007C0
+002007C0002007C0002003C0004003E0004001E000C000F0018000700300003C0E00001F
+FC000003F00020227EA125>I<FFFC00FFC0FFFC00FFC00FC0001E0007C000080007C000
+080003E000100003E000100003F000100001F000200001F000200000F800400000F80040
+0000F8004000007C008000007C008000007E008000003E010000003E010000001F020000
+001F020000001F820000000F840000000F840000000FCC00000007C800000007C8000000
+03F000000003F000000003F000000001E000000001E000000000C000000000C000000000
+C0000022227FA125>I<FFFC3FFF03FFFFFC3FFF03FF0FC003F000780FC001F0003007C0
+01F0002007C001F8002007E001F8002003E001F8004003E001FC004003E0027C004001F0
+027C008001F0027E008001F0043E008000F8043E010000F8043E010000F8081F0100007C
+081F0200007C081F0200007C100F8200003E100F8400003E100F8400003E2007C400001F
+2007C800001F2007C800001F4003E800000FC003F000000FC003F000000F8001F000000F
+8001F00000078001E00000070000E00000070000E00000030000C0000002000040003022
+7FA133>I<FFFC007FE0FFFC007FE00FE0001E0007E000080003E000180003F000100001
+F000200001F800200000FC004000007C004000007E008000003E008000003F010000001F
+830000000F820000000FC600000007C400000007E800000003F800000003F000000001F0
+00000001F000000001F000000001F000000001F000000001F000000001F000000001F000
+000001F000000001F000000001F000000001F00000003FFF8000003FFF800023227FA125
+>89 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07317BA40E>91 D<080210042008200840104010
+8020802080208020B82EFC3FFC3F7C1F380E100F7AA219>I<FEFE060606060606060606
+060606060606060606060606060606060606060606060606060606060606060606060606
+FEFE07317FA40E>I<1FF000381C007C0E007C0F007C078038078000078000078000FF80
+07C7801E07803C0780780780700780F00784F00784F00784F00F84780F843C33F80FC1F0
+16157E9419>97 D<0F0000FF0000FF00001F00000F00000F00000F00000F00000F00000F
+00000F00000F00000F00000F00000F1F800F60E00F80300F00380F001C0F001E0F000E0F
+000F0F000F0F000F0F000F0F000F0F000F0F000F0F000E0F001E0F001C0F00380E80700C
+60E0081F8018237FA21C>I<01FE000707000C0F801C0F80380F80780700700000F00000
+F00000F00000F00000F00000F00000F000007000007800403800401C00800C0100070600
+01F80012157E9416>I<0000F0000FF0000FF00001F00000F00000F00000F00000F00000
+F00000F00000F00000F00000F00000F001F8F00706F00E01F01C00F03800F07800F07000
+F0F000F0F000F0F000F0F000F0F000F0F000F0F000F07000F07800F03800F01C01F00C03
+F80704FF01F8FF18237EA21C>I<01FC000707000C03801C01C03801C07800E07000E0F0
+00E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E008007
+030000FC0013157F9416>I<003E0000E30001C78003CF80038F80078700078000078000
+078000078000078000078000078000078000FFF800FFF800078000078000078000078000
+078000078000078000078000078000078000078000078000078000078000078000078000
+0780007FFC007FFC00112380A20F>I<01F078071D9C0E0E1C1C07001C07003C07803C07
+803C07803C07801C07001C07000E0E000F1C0019F0001000001000001800001C00001FFF
+000FFFE00FFFF03800F870003860001CE0001CE0001CE0001C6000187000383800700F03
+C001FE0016207F9419>I<0F000000FF000000FF0000001F0000000F0000000F0000000F
+0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0FC0000F
+30E0000F4070000F8078000F8078000F0078000F0078000F0078000F0078000F0078000F
+0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F007800FF
+F3FF80FFF3FF8019237FA21C>I<0E001F001F001F000E00000000000000000000000000
+000000000F00FF00FF001F000F000F000F000F000F000F000F000F000F000F000F000F00
+0F000F000F00FFE0FFE00B2280A10D>I<007000F800F800F80070000000000000000000
+00000000000000007807F807F800F8007800780078007800780078007800780078007800
+7800780078007800780078007800780078007800787078F870F870F8E071C01F000D2C82
+A10F>I<0F0000FF0000FF00001F00000F00000F00000F00000F00000F00000F00000F00
+000F00000F00000F00000F03FC0F03FC0F01E00F01800F03000F04000F08000F18000F38
+000F7C000FBE000F1E000F1F000F0F800F07800F07C00F03C00F03E00F01F0FFE7FEFFE7
+FE17237FA21A>I<0F00FF00FF001F000F000F000F000F000F000F000F000F000F000F00
+0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
+0F00FFF0FFF00C2380A20D>I<0F0FE03F80FF3070C1C0FF403900E01F803E00F00F803E
+00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00
+F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F00F003C00F0
+FFF3FFCFFFFFF3FFCFFF28157F942B>I<0F0FC000FF30E000FF4070001F8078000F8078
+000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078
+000F0078000F0078000F0078000F0078000F007800FFF3FF80FFF3FF8019157F941C>I<
+00FC000703800E01C01C00E0380070780078700038F0003CF0003CF0003CF0003CF0003C
+F0003CF0003C7000387800783800701C00E00E01C007038000FC0016157F9419>I<0F1F
+80FF60E0FF80700F00380F001C0F001E0F001E0F000F0F000F0F000F0F000F0F000F0F00
+0F0F000F0F001E0F001E0F001C0F00380F80700F60E00F1F800F00000F00000F00000F00
+000F00000F00000F00000F0000FFF000FFF000181F7F941C>I<01F020070C600E02E01C
+03E03801E07801E07801E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001E078
+01E03801E01C03E00C03E0070DE001F1E00001E00001E00001E00001E00001E00001E000
+01E00001E0001FFE001FFE171F7E941A>I<0F1E00FF2300FF47801F87800F83000F8000
+0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
+0F0000FFF800FFF80011157F9414>I<0FC4383C600C6004E004E004F000FE007FE03FF0
+1FF807FC007E801E800EC00EC00EC00CE01CD83887E00F157E9414>I<01000100010001
+00030003000300070007000F003FF8FFF80F000F000F000F000F000F000F000F000F000F
+000F040F040F040F040F040F040788038800F00E1F7F9E13>I<0F007800FF07F800FF07
+F8001F00F8000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F00
+78000F0078000F0078000F0078000F0078000F00F8000F00F80007017C0003827F8000FC
+7F8019157F941C>I<FFE1FEFFE1FE1F00700F00200F802007804007804003C08003C080
+03E08001E10001E10000F20000F20000FA00007C00007C00003800003800003800001000
+17157F941A>I<FFCFFC7F80FFCFFC7F801F01F01E000F00E00C000F00F008000F01F008
+000781781000078178100007C238300003C23C200003C23C200001E41C400001E41E4000
+01E41E400000F80E800000F80F800000F80F800000700700000070070000007007000000
+2002000021157F9424>I<FFE3FEFFE3FE0F81E007818007C10003C20001E60001F40000
+F800007800003C00003C00005E00008F00018F800107800203C00603E01E03E0FF87FFFF
+87FF18157F941A>I<FFE1FEFFE1FE1F00700F00200F802007804007804003C08003C080
+03E08001E10001E10000F20000F20000FA00007C00007C00003800003800003800001000
+001000002000002000002000F84000F84000F88000B980006300003E0000171F7F941A>
+I<3FFFC0380780300F80200F00601E00403E00403C0040780000F80000F00001E00003C0
+0007C0400780400F00401F00C01E00803C00807C0180780780FFFF8012157F9416>I<FF
+FFFFFFFFFF803101808C32>124 D E /Fc 38 122 df<0007F800007FFC0001FC1E0003
+F01F0007E03F000FC03F000FC03F000FC03F000FC01E000FC00C000FC000000FC000000F
+C0FF80FFFFFF80FFFFFF80FFFFFF800FC01F800FC01F800FC01F800FC01F800FC01F800F
+C01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800FC01F800F
+C01F800FC01F807FF8FFF07FF8FFF07FF8FFF01C237FA220>12 D<3C7EFFFFFFFF7E3C08
+087C8710>46 D<3C7EFFFFFFFF7E3C0000000000003C7EFFFFFFFF7E3C08167C9510>58
+D<000078000000007800000000FC00000000FC00000000FC00000001FE00000001FE0000
+0003FF00000003FF00000003FF000000073F800000073F8000000F3FC000000E1FC00000
+0E1FC000001C0FE000001C0FE000003C0FF000003807F000003807F000007003F8000070
+03F80000FFFFFC0000FFFFFC0000FFFFFC0001E001FE0001C000FE0003C000FF00038000
+7F000380007F000780007F80FFF807FFFCFFF807FFFCFFF807FFFC26227EA12B>65
+D<0003FE00C0001FFFC1C0007FFFF3C001FF80FFC003FC003FC007F0000FC00FE00007C0
+1FC00007C03FC00003C03F800003C07F800001C07F000001C07F000001C0FF00000000FF
+00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F00
+0000007F000001C07F800001C03F800001C03FC00003C01FC00003800FE000078007F000
+0F0003FC001E0001FF807C00007FFFF800001FFFE0000003FF000022227DA129>67
+D<FFFFFF8000FFFFFFF800FFFFFFFC0007F001FF0007F0007F8007F0001FC007F0000FE0
+07F00007E007F00007F007F00007F007F00003F807F00003F807F00003F807F00003FC07
+F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F00003FC07F0
+0003FC07F00003F807F00003F807F00003F807F00007F007F00007F007F0000FE007F000
+1FC007F0003F8007F001FF00FFFFFFFE00FFFFFFF800FFFFFFC00026227EA12C>I<FFFF
+FFFC00FFFFFFFC00FFFFFFFC0007F001FE0007F0007E0007F0003E0007F0001E0007F000
+0E0007F0000E0007F01C0E0007F01C070007F01C070007F01C070007F03C000007F07C00
+0007FFFC000007FFFC000007FFFC000007F07C000007F03C000007F01C038007F01C0380
+07F01C038007F01C070007F000070007F000070007F0000F0007F0000F0007F0001F0007
+F0003F0007F001FE00FFFFFFFE00FFFFFFFE00FFFFFFFE0021227EA126>I<FFFF81FFFF
+FFFF81FFFFFFFF81FFFF07F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007
+F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007FF
+FFFFE007FFFFFFE007FFFFFFE007F0000FE007F0000FE007F0000FE007F0000FE007F000
+0FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000FE007F0000F
+E007F0000FE0FFFF81FFFFFFFF81FFFFFFFF81FFFF28227EA12D>72
+D<FFFFE0FFFFE0FFFFE003F80003F80003F80003F80003F80003F80003F80003F80003F8
+0003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F8
+0003F80003F80003F80003F80003F80003F80003F800FFFFE0FFFFE0FFFFE013227FA116
+>I<FFFFE000FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0000007F0
+000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0
+000007F0000007F0000007F0003807F0003807F0003807F0007007F0007007F0007007F0
+00F007F000F007F001F007F007F007F01FE0FFFFFFE0FFFFFFE0FFFFFFE01D227EA122>
+76 D<FFF0001FFFFFF8001FFFFFFC001FFF07FE0000E007FF0000E007FF8000E0077FC0
+00E0073FC000E0071FE000E0070FF000E00707F800E00707FC00E00703FE00E00701FE00
+E00700FF00E007007F80E007003FC0E007003FE0E007001FF0E007000FF0E0070007F8E0
+070003FCE0070001FEE0070000FFE0070000FFE00700007FE00700003FE00700001FE007
+00000FE007000007E007000007E0FFF80003E0FFF80001E0FFF80000E028227EA12D>78
+D<FFFFFF8000FFFFFFE000FFFFFFF80007F003FC0007F000FE0007F000FF0007F0007F00
+07F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F0007
+F000FF0007F000FE0007F003FC0007FFFFF80007FFFFC00007F000000007F000000007F0
+00000007F000000007F000000007F000000007F000000007F000000007F000000007F000
+000007F000000007F0000000FFFF800000FFFF800000FFFF80000021227EA127>80
+D<FFFFFE0000FFFFFFE000FFFFFFF80007F003FC0007F000FE0007F000FF0007F0007F00
+07F0007F8007F0007F8007F0007F8007F0007F8007F0007F8007F0007F0007F000FF0007
+F001FE0007F007F80007FFFFE00007FFFF800007F00FE00007F007F00007F003F80007F0
+01FC0007F001FC0007F001FC0007F001FC0007F001FE0007F001FE0007F001FE0007F001
+FE0707F001FF0707F000FF07FFFF80FF8EFFFF803FFCFFFF800FF828227EA12B>82
+D<01FE060007FFCE001FFFFE003F01FE003C007E0078003E0078001E00F8000E00F8000E
+00F8000E00FC000000FF000000FFF000007FFF80003FFFE0003FFFF8001FFFFC0007FFFE
+0003FFFF00003FFF000001FF0000003F8000001F8000001F80E0000F80E0000F80E0000F
+80F0000F00F0001F00FC001E00FF807C00FFFFF800E7FFF000C07FC00019227DA120>I<
+7FFFFFFFC07FFFFFFFC07FFFFFFFC07E03F80FC07C03F807C07803F803C07003F801C0F0
+03F801E0F003F801E0E003F800E0E003F800E0E003F800E0E003F800E00003F800000003
+F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
+00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
+000003F8000003FFFFF80003FFFFF80003FFFFF80023217EA028>I<FFFF07FFF81FFFFF
+FF07FFF81FFFFFFF07FFF81FFF07F0003F8000E007F0003F8000E003F8003F8001C003F8
+003FC001C003FC003FC003C001FC007FE0038001FC007FE0038001FE007FE0078000FE00
+FFF0070000FE00E7F00700007F00E7F00E00007F01C3F80E00007F01C3F80E00003F81C3
+F81C00003F8381FC1C00003FC381FC3C00001FC781FE3800001FC700FE3800001FE700FE
+7800000FEF00FF7000000FEE007F70000007FE007FE0000007FC003FE0000007FC003FE0
+000003FC003FC0000003F8001FC0000003F8001FC0000001F8001F80000001F0000F8000
+0000F0000F00000000E00007000038227FA13B>87 D<07FE00001FFF80003F07E0003F03
+F0003F01F0003F01F8001E01F8000001F8000001F80000FFF80007FFF8001FE1F8003F01
+F8007E01F800FC01F800FC01F800FC01F800FC01F8007E03F8007F0EFF801FFCFF8007F0
+3F8019167E951C>97 D<FF800000FF800000FF8000001F8000001F8000001F8000001F80
+00001F8000001F8000001F8000001F8000001F8000001F8000001F8FF0001FBFFC001FF0
+7E001FC01F001F801F801F800FC01F800FC01F800FE01F800FE01F800FE01F800FE01F80
+0FE01F800FE01F800FE01F800FC01F800FC01F800FC01F801F801FC01F001FF07E001E3F
+FC001C0FE0001B237EA220>I<00FF8007FFE00FC3F01F03F03F03F07E03F07E01E07E00
+00FE0000FE0000FE0000FE0000FE0000FE00007E00007E00007F00003F00701F80E00FE1
+E007FFC000FE0014167E9519>I<0001FF000001FF000001FF0000003F0000003F000000
+3F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000FE3F0007FF
+FF000FC1FF001F007F003F003F007E003F007E003F007E003F00FE003F00FE003F00FE00
+3F00FE003F00FE003F00FE003F00FE003F007E003F007E003F003F003F001F007F000FC1
+FFE007FFBFE001FE3FE01B237EA220>I<00FE0007FF800F87E01F03E03F01F07E01F07E
+01F8FE00F8FE00F8FFFFF8FFFFF8FE0000FE0000FE0000FE00007E00007F00383F00381F
+80700FC1F003FFC000FF0015167E951A>I<001F8000FFE001F1F003E3F007E3F00FC3F0
+0FC1E00FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE000FC0000FC000
+0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000
+0FC0000FC0007FFC007FFC007FFC0014237EA212>I<00FE0F8003FFBFC00F83F3C01F01
+F3C01F01F3803F01F8003F01F8003F01F8003F01F8003F01F8001F01F0001F01F0000F83
+E0000FFF80001CFE00001C0000001C0000001E0000001FFFE0001FFFFC000FFFFF000FFF
+FF003FFFFF807C001FC0F8000FC0F80007C0F80007C0F80007C07C000F803E001F001F80
+7E000FFFFC0001FFE0001A217F951D>I<FF800000FF800000FF8000001F8000001F8000
+001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F87F0
+001F9FFC001FB87E001FE03E001FC03F001FC03F001F803F001F803F001F803F001F803F
+001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F
+00FFF1FFE0FFF1FFE0FFF1FFE01B237DA220>I<0E003F807F807F807F807F803F800E00
+000000000000000000000000FF80FF80FF801F801F801F801F801F801F801F801F801F80
+1F801F801F801F801F801F801F80FFF0FFF0FFF00C247EA30F>I<FF80FF80FF801F801F
+801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
+801F801F801F801F801F801F801F801F801F80FFF0FFF0FFF00C237EA20F>108
+D<FF03F803F800FF0FFE0FFE00FF383F383F001F601F601F001FC01FC01F801FC01FC01F
+801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
+801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F801F
+801F801F801F80FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF0FFF02C167D9533>I<FF07F000
+FF1FFC00FF387E001F603E001FC03F001FC03F001F803F001F803F001F803F001F803F00
+1F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F00
+FFF1FFE0FFF1FFE0FFF1FFE01B167D9520>I<00FF0007FFE00FC3F01F00F83F00FC7E00
+7E7E007E7E007EFE007FFE007FFE007FFE007FFE007FFE007FFE007F7E007E7E007E3F00
+FC1F00F80FC3F007FFE000FF0018167E951D>I<FF8FF000FFBFFC00FFF07E001FC03F00
+1F801F801F801FC01F801FC01F800FE01F800FE01F800FE01F800FE01F800FE01F800FE0
+1F800FE01F800FC01F801FC01F801FC01F801F801FC03F001FF07E001FBFFC001F8FE000
+1F8000001F8000001F8000001F8000001F8000001F8000001F800000FFF00000FFF00000
+FFF000001B207E9520>I<FF0F80FF3FE0FF33F01F63F01FC3F01FC3F01FC1E01F80001F
+80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8000FFF800FF
+F800FFF80014167E9518>114 D<07F9801FFF80380F80700780F00380F00380F80000FF
+0000FFF8007FFE003FFF001FFF8007FF80003FC0E007C0E003C0F003C0F003C0F80380FC
+0F00FFFE00C3F80012167E9517>I<01C00001C00001C00001C00003C00003C00003C000
+07C00007C0000FC0003FFF00FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC000
+0FC0000FC0000FC0000FC0000FC3800FC3800FC3800FC3800FC3800FC30007E70003FE00
+00FC0011207F9F16>I<FF81FF00FF81FF00FF81FF001F803F001F803F001F803F001F80
+3F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F803F001F80
+3F001F803F001F807F001F80FF000FC1FFE007FF3FE001FE3FE01B167D9520>I<FFF03F
+E0FFF03FE0FFF03FE00FC00E000FE01E0007E01C0007E01C0003F0380003F0380003F878
+0001F8700001FCF00000FCE00000FCE000007FC000007FC000007FC000003F8000003F80
+00001F0000001F0000000E00001B167F951E>I<FFE3FF8FFCFFE3FF8FFCFFE3FF8FFC0F
+C07C01C00FC07E01C00FC07E03C007E07E038007E0FF038003F0FF070003F0FF070003F1
+CF870001F9CF8E0001FBCFCE0001FF87DE0000FF87DC0000FF03FC00007F03F800007F03
+F800007E01F800003E01F000003E01F000001C00E00026167F9529>I<FFF0FFC0FFF0FF
+C0FFF0FFC007E0780007F0F00003F0E00001F9E00000FFC000007F8000007F0000003F00
+00001F8000003FC000007FE00000F7F00001E3F00001C1F80003C0FC000780FE00FFC1FF
+E0FFC1FFE0FFC1FFE01B167F951E>I<FFF03FE0FFF03FE0FFF03FE00FC00E000FE01E00
+07E01C0007E01C0003F0380003F0380001F8780001F8700001FCF00000FCE00000FEE000
+007FC000007FC000003FC000003F8000003F8000001F0000001F0000000E0000000E0000
+001E0000001C0000783C0000FC380000FC780000FC70000079E000007FC000001F000000
+1B207F951E>I E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 368 50 a Fc(Sym)n(b)r(o)o(lic)19 b(Program)n(m)m(ing)d(vs.)j
+(the)g(A.P)-5 b(.)20 b(Curriculum)829 129 y Fb(Brian)c(Harv)o(ey)611
+193 y(Univ)o(ersit)o(y)i(of)f(California,)h(Berk)o(eley)100
+293 y(A)e(p)q(opular)g(metaphor)e(in)j(recen)o(t)f(y)o(ears)f(compares)
+f(the)i(pro)q(cess)f(of)i(writing)g(a)f(computer)e(pro-)0
+357 y(gram)j(to)j(that)g(of)f(designing)h(and)f(building)h(a)f(bridge.)
+30 b(The)20 b(p)q(oin)o(t)f(of)h(the)g(metaphor)d(is)j(that)f(it's)0
+420 y(not)e(acceptable)h(to)g(debug)e(a)h(new)g(bridge)g(design)g(b)o
+(y)f(building)j(the)e(bridge,)g(op)q(ening)g(it)h(to)g(tra\016c,)0
+484 y(and)f(w)o(aiting)i(to)f(see)g(whether)f(or)h(not)f(it)i
+(collapses.)27 b(P)o(eople)18 b(who)f(use)h(this)g(metaphor)e(argue)h
+(that)0 548 y(the)22 b(analogous)f(tec)o(hnique)i(isn't)f(acceptable)h
+(in)f(computer)e(programm)o(ing)f(either.)39 b(The)21
+b(phrase)0 611 y Fa(softwar)m(e)d(engine)m(ering)i Fb(w)o(as)14
+b(coined)i(to)f(ev)o(ok)o(e)g(the)h(comparison)d(with)j(civil)i
+(engineering)d(and)g(other,)0 675 y(similar)i(disciplines.)25
+b(The)17 b(view)h(of)f(programm)n(ing)e(as)h(soft)o(w)o(are)g
+(engineering)i(has)e(had)g(a)h(profound)0 739 y(in\015uence)j(on)h
+(computer)d(science)j(education.)34 b(The)20 b(purp)q(ose)g(of)g(this)h
+(pap)q(er)f(is)h(to)g(examine)f(that)0 802 y(in\015uence,)15
+b(particularly)h(at)f(the)g(high)g(sc)o(ho)q(ol)f(lev)o(el)j(through)c
+(the)i(College)i(Board)d(Adv)m(anced)g(Place-)0 866 y(men)o(t)h
+(curriculum,)g(and)h(suggest)g(an)g(alternativ)o(e)i(view.)100
+935 y(\(I)i(am)e(fo)q(cusing)i(atten)o(tion)h(on)e(the)h(A.P)l(.)f
+(curriculum)g(to)h(mak)o(e)e(the)i(p)q(oin)o(t)g(concrete,)g(but)g(it)0
+999 y(is)j(just)f(one)g(of)h(man)o(y)d(similar)j(in\015uences.)39
+b(The)22 b(College)i(Board)e(did)h(not)f(in)o(v)o(en)o(t)g(the)h(soft)o
+(w)o(are)0 1063 y(engineering)18 b(view;)i(it)g(tries)e(to)g(follo)o(w)
+i(the)e(lead)h(of)f(its)h(clien)o(t)g(colleges.)28 b(A)o(t)19
+b(the)f(college)i(lev)o(el,)g(the)0 1126 y(A)o(CM)e(curriculum)f
+(standard)f(could)j(b)q(e)f(cited)i(instead.)27 b(I)18
+b(teac)o(h)h(at)f(b)q(oth)h(lev)o(els,)h(but)e(I)g(feel)i(most)0
+1190 y(strongly)h(ab)q(out)f(the)h(inappropriateness)f(of)h(the)f(soft)
+o(w)o(are)g(engineering)h(approac)o(h)e(in)i(secondary)0
+1254 y(education.\))0 1383 y Fc(Soft)n(w)n(are)e(Engineering:)26
+b(Program)n(m)m(ing)16 b(as)j(Discipline)100 1512 y Fb(What)d(are)f
+(the)i(c)o(haracteristics)f(of)g(the)g(soft)o(w)o(are)f(engineering)i
+(approac)o(h?)i(One)d(fundamen)o(tal)0 1576 y(assumption)g(is)j(that)f
+Fa(the)i(go)m(al)g(of)g(a)g(pr)m(oje)m(ct)h(is)f(given)f(in)h(advanc)m
+(e)p Fb(.)28 b(It)19 b(is)g(not)f(the)g(civil)j(engineer's)0
+1640 y(job)e(to)g(decide)g(where)f(a)h(bridge)g(should)f(b)q(e)h
+(built,)h(or)f(whether)f(a)h(bridge)f(should)g(b)q(e)h(built)i(in)e
+(the)0 1703 y(\014rst)h(place.)37 b(Those)20 b(decisions)i(are)e(made)g
+(b)o(y)g(someone)f(else|p)q(oliti)q(ci)q(ans,)24 b(tra\016c)d(\015o)o
+(w)f(exp)q(erts,)0 1767 y(p)q(erhaps)15 b(railroad)i(o)o(wners.)j(The)c
+(engineer)h(is)g(emplo)o(y)o(ed)e(to)h(carry)g(out)h(a)f(prede\014ned)f
+(pro)s(ject,)h(and)0 1831 y(is)h(giv)o(en)g(a)g(formal)e(sp)q
+(eci\014cation)j(of)f(the)g(requiremen)o(ts.)100 1900
+y(A)j(natural)h(consequence)f(of)g(externally-pro)o(vided)i(goals)e(is)
+h(a)g Fa(top-down)h(design)k Fb(tec)o(hnique.)0 1964
+y(Ideally)l(,)16 b(b)q(eginning)e(with)h(the)f(formal)f(goal)h(sp)q
+(eci\014cation,)i(the)e(engineer)g(maps)d(out)j(large)g(subtasks,)0
+2028 y(then)23 b(dev)o(elops)g(eac)o(h)g(subtask)f(in)o(to)i(more)d
+(and)h(more)g(detailed)i(structure)e(b)o(y)h(a)g(pro)q(cess)f(called)0
+2091 y(\\step)o(wise)15 b(re\014nemen)o(t,")e(one)i(of)g(the)g(cen)o
+(tral)g(elemen)o(ts)g(of)g(the)g Fa(structur)m(e)m(d)i(pr)m(o)m(gr)m
+(amming)22 b Fb(metho)q(d-)0 2155 y(ology)l(.)29 b(Mastery)18
+b(of)h(this)h(tec)o(hnique)f(is)g(the)g(main)f(con)o(ten)o(t,)g(apart)h
+(from)d(programm)o(ing)g(language)0 2219 y(syn)o(tax,)g(of)h(most)e(in)
+o(tro)q(ductory)h(computer)f(science)i(courses.)100 2288
+y(If)j(a)g(bridge)f(falls)j(do)o(wn,)d(its)i(designer)e(can)h(b)q(e)g
+(sued)f(for)h(damages.)29 b(A)21 b(similar)f(standard)e(of)0
+2352 y Fa(pr)m(ofessiona)q(l)f(liability)h Fb(should)13
+b(apply)g(to)h(the)f(authors)f(of)i(computer)d(programs,)f(if)15
+b(liv)o(es)f(or)f(prop)q(ert)o(y)0 2415 y(are)g(endangered)f(b)o(y)h
+(their)h(failure.)22 b(Some)12 b(professional)h(so)q(cieties)j(ha)o(v)o
+(e)d(b)q(egun)g(to)g(prop)q(ose)g(uniform)0 2479 y(standards)22
+b(for)h(licensing)j(of)e(soft)o(w)o(are)f(engineers.)43
+b(If)24 b(programm)n(ers)c(are)k(held)g(liable)i(for)d(their)0
+2543 y(failures,)16 b(it)g(pa)o(ys)e(to)h(use)f Fa(c)m(onservative)j
+(te)m(chniques)i Fb(in)d(the)f(design)f(of)h(new)g(programs)o(.)k(Just)
+14 b(as)g(civil)0 2606 y(engineers)e(rely)h(on)e(a)h(few)h(w)o
+(ell-understo)q(o)q(d)f(designs)g(for)f(bridges,)i(programm)n(ers)8
+b(should)k(use)g(pro)o(v)o(en)0 2670 y(algorithms)17
+b(to)g(ensure)g(program)d(correctness.)24 b(Mistak)o(es)17
+b(should)g(not)h(b)q(e)f(debugged)g(b)o(y)g(trial)i(and)963
+2790 y(1)p eop
+%%Page: 2 2
+2 1 bop 0 50 a Fb(error,)13 b(but)h(should)f(b)q(e)i(prev)o(en)o(ted)d
+(in)j(adv)m(ance)f(b)o(y)g(redundan)o(t)e(error)g(c)o(hec)o(king,)j
+(strict)g(adherence)e(to)0 113 y(design)k(standards,)d(and)i(formal)g
+(pro)q(ofs)g(of)h(correctness,)e(tec)o(hniques)i(that)g(one)f(p)q
+(opular)h(text)h(calls)0 177 y Fa(antibugging)j Fb([Co)q(op)q(er)16
+b(and)g(Clancy)l(,)h(1985].)100 244 y(One)22 b(p)q(erson)f(can't)i
+(build)g(a)f(bridge)h(alone.)40 b(Bridges)22 b(are)g(built)i(b)o(y)e
+(large)h(teams,)g(and)e(it's)0 307 y(imp)q(ortan)o(t)d(that)h(eac)o(h)g
+(team)f(mem)o(ber)e(ha)o(v)o(e)j(a)g(w)o(ell-de\014ned)g(job.)29
+b(Similarly)l(,)20 b(soft)o(w)o(are)e(engineer-)0 371
+y(ing)k(emphasizes)e(the)i(needs)f(of)h Fa(pr)m(o)m(gr)m(amming)j(te)m
+(ams)h Fb(in)d(whic)o(h)e(eac)o(h)g(programm)o(er)d(is)23
+b(assigned)0 435 y(a)e(subtask.)34 b(The)21 b(top-do)o(wn)e(design)i
+(approac)o(h)e(is)i(particularly)i(imp)q(ortan)o(t)d(in)h(a)g(team)f
+(en)o(viron-)0 498 y(men)o(t)14 b(so)i(that)g(eac)o(h)g(program)d
+(segmen)o(t)h(has)h(a)h(w)o(ell-de\014ned)g(in)o(terface)h(to)f(the)g
+(rest)g(of)g(the)g(pro)s(ject.)0 562 y(Rigid)22 b(standards)d(are)h
+(required)h(ab)q(out)g(things)g(lik)o(e)h(scop)q(e)f(of)g(v)m(ariables)
+h(and)e(do)q(cumen)o(tation)g(of)0 626 y(subpro)q(cedures.)100
+692 y(Finally)l(,)d(an)f Fa(emphasis)j(on)f(pr)m(o)m(duct)k
+Fb(has)15 b(b)q(een)h(implicit)i(throughout)c(this)j(description.)22
+b(What)0 756 y(is)e(most)d(imp)q(ortan)o(t)h(is)i(the)f(program,)e
+(rather)h(than)h(the)g(st)o(yle)i(of)e(w)o(ork)f(of)i(the)f(programm)o
+(er)o(s.)27 b(A)0 820 y(soft)o(w)o(are)18 b(engineer)h(deriv)o(es)f
+(job)h(satisfaction)h(from)d(seeing)i(p)q(eople)h(use)e(the)h(pro)q
+(duct,)f(more)f(than)0 883 y(from)e(the)i(program)o(m)o(ing)d(itself.)
+100 950 y(\(In)20 b(a)g(recen)o(tly-published)g(p)q(olemic,)h(Edsger)e
+(Dijkstra,)i(one)f(of)g(the)g(founders)f(of)h(the)g(struc-)0
+1014 y(tured)11 b(programm)o(ing)e(metho)q(dology)l(,)j(disso)q(ciates)
+h(himself)f(from)e(the)j(name)d(\\soft)o(w)o(are)h(engineering")0
+1077 y(b)q(ecause)i(he)g(thinks)h(that)g(it)g(ev)o(ok)o(es)f(a)g(metho)
+q(dology)g(based)g(on)g(testing,)h(rather)f(than)g(on)g(the)g(formal)0
+1141 y(mathematical)k(reasoning)g(that)h(Dijkstra)g(prefers.)25
+b(Still,)20 b(from)c(the)i(p)q(oin)o(t)g(of)g(view)h(I)e(am)g(presen)o
+(t-)0 1205 y(ing,)f(Dijkstra)h(and)e(the)g(soft)o(w)o(are)g(engineers)g
+(are)h(in)g(the)g(same)e(camp)g(b)q(ecause)h(they)h(b)q(oth)g(fo)q(cus)
+f(on)0 1268 y(pro)q(ducing)i(a)h(program)c(that)k(meets)f(a)g(prior)g
+(sp)q(eci\014cation,)i(rather)e(than)h(on)f(the)h(dev)o(elopmen)o(t)e
+(of)0 1332 y(that)h(sp)q(eci\014cation.\))0 1458 y Fc(Arti\014cial)22
+b(In)n(telligenc)q(e:)28 b(Program)n(m)m(ing)17 b(as)h(Art)100
+1585 y Fb(Some)d(computer)f(programs)g(actually)k(do)f(con)o(trol)f
+(pro)q(cesses)g(in)h(whic)o(h)g(a)f(malfunction)h(could)0
+1648 y(threaten)i(h)o(uman)d(life.)32 b(In)19 b(those)g(cases,)h(I)f
+(agree)g(that)g(programm)o(er)o(s)d(should)j(regard)f(their)i(w)o(ork)0
+1712 y(as)15 b(closely)i(analogous)e(to)h(other)f(engineering)h
+(disciplines,)h(with)f(the)g(same)e(professional)h(standards)0
+1776 y(and)20 b(the)h(same)f(conserv)m(ativ)o(e)h(tec)o(hniques.)36
+b(Muc)o(h)20 b(program)o(m)o(ing,)f(though,)i(do)q(es)g(not)g(ha)o(v)o
+(e)f(this)0 1839 y(c)o(haracter.)h(If)c(a)g(video)h(game,)d(for)h
+(example,)g(malfunctions,)g(no)h(liv)o(es)h(are)e(lost.)24
+b(Reliability)19 b(is)e(still)0 1903 y(desirable,)f(of)f(course,)f(but)
+h(other)g(c)o(haracteristics,)h(suc)o(h)e(as)g(creativit)o(y)k(in)e
+(the)f(design)g(of)g(the)h(game,)0 1967 y(are)j(equally)j(imp)q(ortan)o
+(t.)31 b(Unlik)o(e)22 b(bridge-building,)f(m)o(uc)o(h)c(computer)h
+(programm)n(ing)g(is)i(done)f(b)o(y)0 2030 y(hobb)o(yists)f(for)g
+(their)i(o)o(wn)d(p)q(ersonal)i(satisfaction,)h(and)e(professional)h
+(liability)i(do)q(es)e(not)f(apply)h(in)0 2094 y(this)e(case.)100
+2161 y(Among)f(professional)j(programm)n(ers)o(,)d(researc)o(h)h(w)o
+(ork)h(is)h(in)g(some)d(w)o(a)o(ys)i(more)e(lik)o(e)k(hobb)o(yist)0
+2224 y(programm)n(ing)14 b(than)h(lik)o(e)j(civil)h(engineering.)j
+(Reliabili)q(t)o(y)d(ma)o(y)14 b(b)q(e)j(less)f(imp)q(ortan)o(t)f(than)
+g(the)h(\015exi-)0 2288 y(bilit)o(y)h(to)e(explore)g(new)f(tec)o
+(hniques.)21 b(\(Of)15 b(course,)f(reliability)j(is)e(itself)i(the)d
+(topic)i(of)e(some)f(computer)0 2352 y(science)22 b(researc)o(h,)d(but)
+i(ev)o(en)g(then)f(the)h(researc)o(h)e(cannot)i(pro)q(ceed)f(b)o(y)h
+(in)o(v)o(oking)g(already-kno)o(wn)0 2415 y(metho)q(ds.\))f(In)15
+b(particular,)g(arti\014cial)i(in)o(telligence)h(researc)o(h)13
+b(is)i(c)o(haracterized)g(b)o(y)f(the)h(desire)g(to)g(ex-)0
+2479 y(tend)e(the)g(limits)g(of)g(what)g(can)f(b)q(e)h(done)f(with)i(a)
+f(computer;)e(the)i(researc)o(her)e(t)o(ypically)16 b(do)q(es)c(not)h
+(ha)o(v)o(e)0 2543 y(a)18 b(b)q(o)q(dy)g(of)g(w)o(ell-understo)q(o)q
+(d,)g(reliable)i(metho)q(ds)d(to)h(follo)o(w.)27 b(It)19
+b(is)f(not)g(surprising,)f(then,)h(that)h(AI)0 2606 y(researc)o(hers)d
+(ha)o(v)o(e)h(dev)o(elop)q(ed)h(programm)o(ing)d(to)q(ols)k(and)f
+(approac)o(hes)e(quite)j(di\013eren)o(t)f(from)e(those)0
+2670 y(of)h(soft)o(w)o(are)e(engineering.)963 2790 y(2)p
+eop
+%%Page: 3 3
+3 2 bop 100 50 a Fb(In)11 b(a)h(researc)o(h)e(pro)s(ject,)i
+Fa(the)h(go)m(al)h(of)h(a)e(pr)m(oje)m(ct)i(evolves)f(in)f(the)h(work)p
+Fb(.)20 b(That)12 b(is,)h(the)f(programm)n(er)0 113 y(starts)19
+b(with)i(a)f(broad)f(idea,)i(but)e(often)i(cannot)e(sp)q(ecify)i(the)g
+(detailed)g(b)q(eha)o(vior)f(of)g(the)g(program)0 177
+y(un)o(til)k(it's)f(written.)41 b(She)22 b(starts)g(with)i(a)e(partial)
+i(understanding,)f(attempts)e(to)i(program)d(some)0 241
+y(b)q(etter-understo)q(o)q(d)h(corner)g(of)h(the)g(pro)s(ject,)h(and)e
+(then)h(in)o(teracts)g(with)h(the)f(resulting)h(program)0
+304 y(to)c(see)g(in)g(what)g(direction)h(to)f(pro)q(ceed.)28
+b(The)19 b(goals)g(are)f(c)o(hosen)g(b)o(y)g(the)h(same)e(p)q(erson)h
+(doing)h(the)0 368 y(programm)n(ing.)100 455 y(If)k(the)h(goal)g(is)f
+(not)h(precisely)g(kno)o(wn)f(in)h(adv)m(ance,)h(a)e(strict)h(top-do)o
+(wn)e(design)h(pro)q(cess)g(is)0 518 y(imp)q(ossible.)31
+b(Researc)o(hers)18 b(use)h Fa(inter)m(active)i(design)j
+Fb(tec)o(hniques,)c(whic)o(h)g(ma)o(y)e(include)j(some)c(top-)0
+582 y(do)o(wn)f(comp)q(onen)o(ts)e(but)j(also)g(ma)o(y)e(include)i(a)g
+(b)q(ottom-up)e(approac)o(h)g(in)i(whic)o(h)g(the)g(w)o(ork)f(already)0
+646 y(done)h(pro)o(vides)g(a)g(soft)o(w)o(are)g(to)q(olkit)k(that)d
+(itself)h(suggests)e(new)g(higher-lev)o(el)i(mo)q(dules.)24
+b(Instead)17 b(of)0 709 y(a)j(single)i(programm)n(ing)c(metho)q(dology)
+i(lik)o(e)j(step)o(wise)d(re\014nemen)o(t,)f(the)i(researc)o(her)d
+(uses)i Fa(e)m(cle)m(ctic)0 773 y(te)m(chniques)p Fb(.)100
+860 y(Since)i(the)g(result)h(of)f(a)g(researc)o(h)e(pro)s(ject)i(is)h
+(rarely)f(destined)g(to)h(b)q(e)f(used)f(directly)j(in)f(real)0
+923 y(applications,)e(there)e(is)h Fa(no)h(danger)26
+b Fb(and)18 b(no)h(liabili)q(t)o(y)l(.)33 b(Instead)19
+b(of)g(follo)o(wing)i(conserv)m(ativ)o(e,)g(w)o(ell-)0
+987 y(understo)q(o)q(d)c(patterns,)g(the)h(researc)o(her)e(is)i
+(encouraged)e(to)i Fa(take)h(risks)k Fb(and)17 b(in)o(v)o(en)o(t)g(new)
+h(metho)q(ds.)0 1051 y(Program)10 b(debugging)j(can)g(b)q(e)g(in)o
+(teractiv)o(e;)j(other)d(mem)o(bers)d(of)k(the)f(researc)o(h)f(comm)n
+(unit)o(y)f(are)i(often)0 1114 y(encouraged)g(to)i(try)f(out)g(the)h
+(program,)d(not)i(only)h(disco)o(v)o(ering)f(co)q(ding)h(bugs)e(but)h
+(also)h(con)o(tributing)0 1178 y(to)i(the)g(incremen)o(tal)f(design)g
+(pro)q(cess)g(b)o(y)g(suggesting)g(impro)o(v)o(emen)n(ts.)100
+1264 y(Researc)o(h)i(programs)e(are)j(rarely)h(written)g(b)o(y)g(large)
+g(teams.)29 b(One)19 b(reason)g(is)h(that)g(y)o(ou)f(can't)0
+1328 y(get)f(a)g(Ph.D.)g(for)f(writing)j(one)d(p)q(ercen)o(t)h(of)g(a)g
+(program;)e(another)h(is)h(that)h(it's)f(hard)f(to)i(co)q(ordinate)0
+1392 y(large)d(teams)f(without)h(a)g(precise,)g(formal)e(design)i(do)q
+(cumen)o(t.)k(But)c(the)g(most)e(imp)q(ortan)o(t)h(reason)g(is)0
+1455 y(that)j(large)g(teams)f(are)g(rarely)h(creativ)o(e.)26
+b(Instead,)18 b Fa(individual)i(cr)m(e)m(ation)j Fb(is)18
+b(required)g(to)g(solv)o(e)g(new)0 1519 y(problems.)100
+1606 y(T)l(o)h(summar)o(ize,)g(there)h(m)o(ust)e(b)q(e)i(an)g
+Fa(emphasis)j(on)e(pr)m(o)m(c)m(ess)27 b Fb(in)21 b(the)f(researc)o(h)e
+(programm)o(ing)0 1669 y(en)o(vironmen)o(t.)34 b(The)21
+b(resulting)h(program)c(ma)o(y)i(b)q(e)h(demonstrated)e(once)i(and)g
+(nev)o(er)f(used)h(again,)0 1733 y(since)14 b(it)h(will)h(probably)d(b)
+q(e)h(slo)o(w)f(and)g(clumsy)l(,)g(but)g(b)o(y)g(writing)i(it,)g(the)f
+(researc)o(her)d(learns)i(new)h(ideas)0 1797 y(that)19
+b(can)f(b)q(e)g(re\014ned)f(and)h(applied)h(later.)27
+b(In)18 b(education,)h(to)q(o,)g(the)f(actual)h(programs)c(written)k(b)
+o(y)0 1860 y(studen)o(ts)d(are)g(unimp)q(ortan)o(t;)e(the)j(studen)o
+(t,)f(not)h(the)g(program,)c(is)k(the)g(\\pro)q(duct")f(of)h(the)g
+(teac)o(hing)0 1924 y(and)23 b(learning)i(activiti)q(es.)47
+b(W)l(e)25 b(should)e(not)h(b)q(e)h(surprised)d(if)j(pro)q(cess-cen)o
+(tered)e(approac)o(hes)f(to)0 1988 y(programm)n(ing)14
+b(turn)i(out)h(to)g(b)q(e)g(most)e(helpful)i(in)g(education.)100
+2074 y(Ev)o(en)j(when)g(a)h(program)d(is)j(dev)o(elop)q(ed)h(for)e
+(practical)i(use,)f(the)g(dev)o(elopmen)o(t)f(pro)q(cess)g(ma)o(y)0
+2138 y(include)e(steps)e(that)h(are)f(more)f(lik)o(e)j(researc)o(h)d
+(than)h(lik)o(e)i(building)g(bridges.)j(Consider)16 b(spreadsheet)0
+2201 y(programs.)36 b(The)22 b(history)g(of)h(their)g(dev)o(elopmen)o
+(t,)f(starting)h(from)d(VisiCalc)25 b(and)c(con)o(tin)o(uing)i(to)0
+2265 y(curren)o(t)13 b(pro)q(ducts)h(lik)o(e)j(Lotus)d(1-2-3,)g(has)g
+(b)q(een)h(a)g(classic)h(soft)o(w)o(are)e(engineering)h(e\013ort,)g
+(with)h(large)0 2329 y(dev)o(elopmen)o(t)d(teams)f(and)i(precise)g
+(goals.)21 b(But)15 b(the)f(\014rst)f(step,)i(starting)f(from)e
+(nothing)i(and)g(getting)0 2392 y(to)k(VisiCalc,)j(to)q(ok)e(t)o(w)o(o)
+f(p)q(eople,)h(one)f(of)g(whom)e(had)i(the)g(idea,)h(\\here)e(is)i(a)f
+(new)g(thing)h(w)o(e)f(can)f(do)0 2456 y(with)g(a)g(computer,")d(and)h
+(the)i(other)f(of)h(whom)d(w)o(as)i(a)g(virtuoso)h(computer)d(hac)o(k)o
+(er,)h(trained)i(in)g(the)0 2520 y(MIT)f(researc)o(h)f(en)o(vironmen)o
+(t.)100 2606 y(\(By)g(the)g(w)o(a)o(y)l(,)f(I)g(do)h(not)f(mean)f(to)i
+(suggest)e(that)i(there)g(is)g(no)f(researc)o(h)f(among)f(civil)17
+b(engineers!)0 2670 y(No)12 b(doubt)g(new)g(bridge)g(designs)f(gro)o(w)
+g(out)i(of)f(a)g(dev)o(elopmen)o(t)f(metho)q(dology)g(m)o(uc)o(h)f(lik)
+o(e)j(the)g(one)f(I'm)963 2790 y(3)p eop
+%%Page: 4 4
+4 3 bop 0 50 a Fb(describing)17 b(for)f(programm)n(ing)e(researc)o(h.)
+20 b(The)d(con)o(trast)e(I)i(am)e(making)h(is)h(not)f(b)q(et)o(w)o(een)
+g(program-)0 113 y(ming)f(and)g(civil)j(engineering,)e(but)g(b)q(et)o
+(w)o(een)f(researc)o(h)f(of)i(an)o(y)f(kind)h(and)f(the)h(one-sided)f
+(caricature)0 177 y(of)i(civil)i(engineering)e(that)g(pro)o(vides)f
+(the)h(metaphor)d(for)i(the)h(soft)o(w)o(are)f(engineering)h(sc)o(ho)q
+(ol.\))100 243 y(The)h(metaphor)e(of)i(bridge-building)h(p)q(o)o(w)o
+(erfully)g(captures)f(the)g(spirit)h(of)g(the)g(soft)o(w)o(are)e(engi-)
+0 307 y(neering)g(view)h(of)e(programm)o(ing.)k(As)c(an)h(equally)h(p)q
+(o)o(w)o(erful)f(metaphor)d(for)i(this)i(alternativ)o(e)g(view,)0
+370 y(I)f(suggest)e(considering)i(programm)n(ing)e(as)h(an)g(art)g
+(form,)f(and)h(the)g(programm)o(er)d(as)j(an)h(artist.)0
+496 y Fc(Ho)n(w)i(to)g(T)-5 b(rain)20 b(an)e(Artist)100
+622 y Fb(I)12 b(am)e(discussing)i(the)h(nature)e(of)h(computer)e
+(programm)o(ing)f(to)k(mak)o(e)e(a)h(p)q(oin)o(t)g(ab)q(out)g(the)h
+(nature)0 685 y(of)18 b(computer)d(programm)n(ing)g(education.)25
+b(There)17 b(are)g(t)o(w)o(o)g(v)o(ery)g(di\013eren)o(t)h(kinds)g(of)f
+(programm)o(ing)0 749 y(activit)o(y)l(,)g(bridge-building)e(and)f(art.)
+21 b(I)15 b(suggest)e(that)i(our)f(standard)f(computer)f(science)j
+(curriculum)0 813 y(do)q(es)g(a)f(go)q(o)q(d)h(job)g(of)g(preparing)e
+(studen)o(ts)h(for)h(the)f(\014rst)h(kind,)g(but)g(not)f(for)h(the)g
+(second.)20 b(If)15 b(w)o(e)g(w)o(an)o(t)0 876 y(to)20
+b(dev)o(elop)f(computer)e(programm)o(ing)f(artists,)21
+b(w)o(e)e(should)f(explore)i(the)g(training)g(of)f(other)g(kinds)0
+940 y(of)e(artists.)100 1006 y(\(Both)22 b(of)g(these)h(approac)o(hes)c
+(are)j(extremes.)37 b(Some)20 b(readers)h(ma)o(y)f(feel)k(more)c
+(comfortable)0 1070 y(with)e(an)e(in)o(termediate)h(p)q(osition,)h
+(represen)o(table)e(in)h(metaphor)e(b)o(y)h(professions)g(suc)o(h)g(as)
+g(medicine)0 1133 y(and)g(arc)o(hitecture)h(that)h(com)o(bine)d(the)i
+(need)g(for)g(individual)i(creativit)o(y)g(with)f(careful)g(atten)o
+(tion)g(to)0 1197 y(conserv)m(ativ)o(e)e(tec)o(hniques.)22
+b(Still,)c(I)e(am)e(trying)i(to)g(call)h(atten)o(tion)g(to)f(an)f(im)o
+(balance)g(in)h(our)e(curren)o(t)0 1261 y(educational)19
+b(practice,)f(and)f(in)h(this)g(con)o(text)g(I)g(think)h(it)f(is)h(v)m
+(aluable)g(to)f(sho)o(w)e(what)i(the)f(opp)q(osite)0
+1324 y(extreme)d(w)o(ould)h(b)q(e)h(lik)o(e.)23 b(I)15
+b(hop)q(e)g(that)g(ev)o(en)h(this)f(extreme)g(will)i(not)e(seem)f
+(impractical,)i(ev)o(en)f(if)h(w)o(e)0 1388 y(ultimately)i(settle)g(on)
+f(a)f(comprom)o(ise)f(view.\))100 1454 y(The)d(training)i(of)f(artists)
+g(is)g(not)g(the)g(exact)h(opp)q(osite)f(of)g(the)g(training)h(of)f
+(engineers;)h(art)e(sc)o(ho)q(ols)0 1517 y(do)j(not)g(merely)f(thro)o
+(w)h(the)g(studen)o(t)f(in)o(to)i(a)f(ro)q(om)e(full)k(of)e(materials)g
+(and)f(sa)o(y)l(,)h(\\go)g(to)g(it!")23 b(There)15 b(is)0
+1581 y(a)i(discipline)h(to)f(art)g(also,)f(including)i(a)f(collection)i
+(of)e(w)o(ell-understo)q(o)q(d,)f(conserv)m(ativ)o(e)i(tec)o(hniques.)
+100 1647 y(I)c(suggest)f(that)h(the)g(training)h(of)f(an)g(artist)h
+(can)e(b)q(e)i(divided)g(in)o(to)f(three)g(categories)h(of)f(learning.)
+0 1711 y(There)k(is)g Fa(te)m(chnic)m(al)i(know)s(le)m(dge)p
+Fb(,)f(suc)o(h)e(as)h(the)g(di\013erences)g(b)q(et)o(w)o(een)g(oil)h
+(pain)o(ts)f(and)g(w)o(ater)f(colors,)0 1774 y(or)g(the)h(rules)g(of)g
+(p)q(ersp)q(ectiv)o(e.)27 b(There)17 b(is)i Fa(te)m(chnic)m(al)h(skil)s
+(l)p Fb(,)d(suc)o(h)g(as)g(the)h(abilit)o(y)j(to)d(dra)o(w)e(a)i
+(straigh)o(t)0 1838 y(line)f(freehand)d(without)h(wiggling,)i(or)e(the)
+g(abilit)o(y)j(to)d(stretc)o(h)f(a)h(can)o(v)m(as)g(ev)o(enly)h(b)q
+(efore)f(pain)o(ting)g(on)0 1902 y(it.)31 b(And)18 b(there)h(is)h
+Fa(inspir)m(ation)p Fb(,)i(seeing)d(the)h(w)o(orld)e(with)i(an)f
+(artist's)g(ey)o(e)g(and)g(\014nding)f(something)0 1965
+y(w)o(orth)e(pain)o(ting)h(at)g(all.)100 2031 y(All)h(three)f(of)f
+(these)h(are)f(essen)o(tial)h(to)g(a)f(great)h(artist,)g(but)f
+(inspiration)i(comes)c(\014rst!)22 b(I)16 b(am)f(not)0
+2095 y(an)k(artist,)j(and)d(m)o(y)f(p)q(ersonal)i(exp)q(erience)h(of)e
+(art)h(instruction)h(has)e(b)q(een)h(limited)h(to)f(a)g(couple)g(of)0
+2158 y(in)o(tro)q(ductory)h(courses)e(when)i(I)g(w)o(as)f(in)h(high)g
+(sc)o(ho)q(ol.)35 b(In)21 b(those)f(courses,)h(though,)g(the)g(teac)o
+(hers)0 2222 y(made)15 b(a)i(big)g(fuss)f(ab)q(out)g(sta)o(ying)h(a)o
+(w)o(a)o(y)f(from)f(tec)o(hnique.)22 b(\\Nev)o(er)17
+b(mind)e(what)i(it)h(lo)q(oks)g(lik)o(e")g(w)o(as)0 2286
+y(a)d(frequen)o(t)g(commen)n(t.)k(One)c(b)q(eginning)h(exercise)g(w)o
+(as)e(to)h(dra)o(w)f(a)h(c)o(hair)g(with)h(our)e(ey)o(es)h(closed;)h
+(the)0 2349 y(p)q(oin)o(t)c(w)o(as)e(to)h(o)o(v)o(ercome)e(our)h
+(anxiet)o(y)i(ab)q(out)f(photographic)g(exactness)g(and)f(get)i(us)e
+(to)h(enjo)o(y)g(mo)o(ving)0 2413 y(a)k(p)q(encil)h(o)o(v)o(er)f(pap)q
+(er)f(in)h(broad)f(strok)o(es.)20 b(The)15 b(teac)o(hers)f(promised)f
+(that)i(tec)o(hnical)i(instruction,)e(for)0 2477 y(those)h(of)h(us)f
+(who)g(did)h(dev)o(elop)g(a)f(deep)q(er)h(in)o(terest)g(in)g(art,)f(w)o
+(ould)g(come)f(later.)100 2543 y(Art)20 b(instruction)i(that)f(b)q
+(egan)f(with)h(endless)g(practice)g(at)g(dra)o(wing)f(straigh)o(t)g
+(lines)i(and)e(p)q(er-)0 2606 y(sp)q(ectiv)o(e)k(cub)q(es)e(w)o(ould)h
+(c)o(hase)f(a)o(w)o(a)o(y)f(an)o(y)i(true)f(p)q(oten)o(tial)j(artists.)
+40 b(A)o(t)23 b(b)q(est)g(it)h(w)o(ould)f(pro)q(duce)0
+2670 y(\\commercial)e(artists,")i(a)f(classic)i(o)o(xymoron.)36
+b(This)23 b(is)f(the)h(risk)f(w)o(e)g(run)f(in)i(computer)d(science)963
+2790 y(4)p eop
+%%Page: 5 5
+5 4 bop 0 50 a Fb(education.)36 b(\(Commercial)20 b(artists)h(are)g(so)
+q(cially)i(useful,)g(and)d(so)h(are)f(the)i(mem)n(b)q(ers)c(of)j(soft)o
+(w)o(are)0 113 y(engineering)d(teams.)k(But)c(there)f(could)h(b)q(e)f
+(no)g(commercial)f(art)h(without)h(true)f(creativ)o(e)h(artists)g(to)0
+177 y(in)o(v)o(en)o(t)e(the)h(language)g(and)f(the)g(to)q(ols)i(of)f
+(art.\))0 304 y Fc(The)i(Program)n(m)m(ing)d(Language)j(P)n(arado)n(x)
+100 430 y Fb(Soft)o(w)o(are)f(engineers)h(b)q(eliev)o(e)j(in)e
+(constructing)f(a)h(program)c(top-do)o(wn.)29 b(That)20
+b(is,)g(they)g(start)0 494 y(with)g(the)f(broad)e(ideas)i(of)g(the)g
+(program,)d(and)i(\014ll)j(in)e(the)g(details)h(later.)30
+b(Y)l(ou)18 b(w)o(ould)h(think)g(their)0 557 y(design)g(to)q(ols)h(w)o
+(ould)e(supp)q(ort)g(programm)o(ing)e(in)j(terms)f(of)h(broad)e(ideas.)
+29 b(Y)l(et)20 b(the)f(programm)o(ing)0 621 y(languages)j(of)g(soft)o
+(w)o(are)f(engineering,)i(of)f(whic)o(h)g(P)o(ascal)g(is)g(the)h
+(protot)o(yp)q(e,)g(fo)q(cus)f(atten)o(tion)g(on)0 685
+y(lo)o(w-lev)o(el)k(details.)45 b(They)24 b(use)f(explicit)k(storage)d
+(allo)q(cation,)k(so)23 b(the)h(programm)o(er)c(m)o(ust)i(think)0
+748 y(ab)q(out)h(the)h(size,)i(lo)q(cation,)h(and)22
+b(exten)o(t)i(in)g(time)g(of)f(eac)o(h)g(data)g(aggregate.)43
+b(They)23 b(use)g(strong)0 812 y(t)o(yping,)e(encouraging)d(the)i
+(programm)o(er)c(to)k(concen)o(trate)f(on)g(the)h(precise)g(enco)q
+(ding)f(of)h(sym)o(b)q(olic)0 876 y(information)f(rather)g(than)h(on)f
+(the)i(meaning.)30 b(They)20 b(pro)o(vide)g(half)g(a)g(dozen)g(sp)q
+(eci\014c,)h(hardwired)0 939 y(con)o(trol)e(structures,)f(emphasizing)g
+(the)h(sequence)f(of)h(ev)o(en)o(ts)f(in)i(a)f(computation)e(rather)h
+(than)h(the)0 1003 y(input-output)12 b(b)q(eha)o(vior)g(of)h
+(functions.)20 b(Complex)12 b(data)g(structures)f(are)h(manipulated)g
+(with)h(explicit)0 1067 y(p)q(oin)o(ters,)j(a)h(common)c(source)j(of)g
+(confusion)h(and)e(bugs.)100 1133 y(Some)20 b(of)i(these)h(lo)o(w-lev)o
+(el)h(prop)q(erties)e(of)g(soft)o(w)o(are)f(engineering)i(languages)f
+(are)f(the)i(result)0 1197 y(of)c(their)h(early)g(history)f(as)g
+(merely)f(an)h(abbreviation)h(for)e(mac)o(hine)g(language)h
+(instructions.)30 b(But,)0 1261 y(for)19 b(example,)h(the)g(transition)
+h(from)d(C)i(\(a)g(hac)o(k)o(er's)e(language\))i(to)g(C++)g(\(a)g(soft)
+o(w)o(are)e(engineer's)0 1324 y(language\))12 b(has)f(brough)o(t)f
+(more)g(atten)o(tion,)j(not)f(less,)g(to)g(these)g(lo)o(w-lev)o(el)h
+(details.)22 b(The)12 b(impro)o(v)o(em)o(en)o(t)0 1388
+y(is)19 b(that)h(in)f(C++)f(the)h(details)i(can)d(b)q(e)h(represen)o
+(ted)e(more)g(rigorously)l(,)i(with)h(less)f(need)g(to)g(rely)g(on)0
+1452 y Fa(ad)g(ho)m(c)h Fb(escap)q(e)d(hatc)o(hes)f(suc)o(h)f(as)h(t)o
+(yp)q(e)h(casting.)100 1518 y(Soft)o(w)o(are)11 b(engineers)i
+(recognize)g(the)g(inadequacy)g(of)g(their)g(programm)n(ing)e
+(languages)h(as)g(design)0 1582 y(to)q(ols.)32 b(That)20
+b(is)g(wh)o(y)f(they)h(dev)o(elop)g(their)g(programs)c(using)k
+(\\pseudo)q(co)q(de,")f(essen)o(tially)j(English)0 1645
+y(with)17 b(inden)o(tation)h(to)f(indicate)h(blo)q(c)o(k)f(structure.)k
+(English)c(is)g(a)g(go)q(o)q(d)f(high-lev)o(el)j(design)d(language)0
+1709 y(precisely)k(b)q(ecause)e(it)h(do)q(es)g(not)f(require)h(the)f
+(programm)o(er)d(to)j(think)i(ab)q(out)e(memory)d(allo)q(cati)q(on,)0
+1773 y(v)m(ariable)g(t)o(yp)q(es,)f(and)e(so)h(on.)21
+b(The)13 b(di\016cult)o(y)i(is)e(that)h(if)h(one)e(really)i(designs)e
+(in)h(English,)g(it's)g(p)q(ossible)0 1836 y(to)i(write)h(an)f
+(instruction)h(that)f(has)g(no)f(ob)o(vious)h(translation)h(\(or)f(ev)o
+(en)g(no)f(translation)i(at)g(all\))h(in)o(to)0 1900
+y(an)o(y)j(programm)o(ing)e(language.)38 b(T)l(o)22 b(end)f(up)h(with)g
+(useful)h(pseudo)q(co)q(de,)f(the)g(programm)o(er)c(m)o(ust)0
+1964 y(actually)e(c)o(heat,)e(writing)g(the)g(program)d(men)o(tally)j
+(in)g(something)e(lik)o(e)j(P)o(ascal)f(and)f(then)g(translating)0
+2027 y(in)o(to)k(English)g(and)f(lea)o(ving)i(out)e(most)f(of)i(the)g
+(details.)100 2094 y(There)g(are)h(programm)n(ing)e(languages)h(that)h
+(don't)g(require)g(suc)o(h)f(extreme)g(atten)o(tion)i(to)f(lo)o(w-)0
+2158 y(lev)o(el)i(details)g(as)d(the)i(ones)e(soft)o(w)o(are)g
+(engineers)h(lo)o(v)o(e.)27 b(These)17 b(sym)o(b)q(olic)h(programm)o
+(ing)d(languages)0 2221 y(can)21 b(readily)i(express)e(o)o(v)o(erall)h
+(design)g(as)f(w)o(ell)i(as)f(details.)38 b(Wh)o(y)22
+b(don't)f(the)h(soft)o(w)o(are)e(engineers)0 2285 y(c)o(ho)q(ose)d
+(higher-lev)o(el)i(languages?)25 b(The)17 b(reason)g(is)h(that)g(they)g
+(o)o(v)o(eremphasize)e(their)i(concern)f(with)0 2349
+y(reliability)l(,)f(and)11 b(in)i(particular)f(with)i(p)q(ossible)f(lo)
+o(w-lev)o(el)h(bugs.)19 b(F)l(or)11 b(example,)i(although)f(a)g
+(language)0 2412 y(with)k(explicit)h(v)m(ariable)f(t)o(yping)f(forces)g
+(the)f(programm)o(er)d(to)k(b)q(e)g(concerned)f(with)h(lo)o(w-lev)o(el)
+i(details,)0 2476 y(it)h(also)f(ma)o(y)e(help)i(catc)o(h)f(bugs)g(in)h
+(whic)o(h)f(an)g(incorrect)h(v)m(alue)h(is)f(assigned)f(to)h(a)f(v)m
+(ariable.)100 2543 y(The)11 b(educational)h(cost)f(of)g(the)h(soft)o(w)
+o(are)e(engineering)i(languages)e(is)i(that)g(m)o(uc)o(h)c(of)j(the)h
+(time)f(and)0 2606 y(e\013ort)17 b(in)g(in)o(tro)q(ductory)g(courses)e
+(go)q(es)i(in)o(to)g(syn)o(tactic)h(details,)g(and)e(in)o(to)h(suc)o(h)
+f(lo)o(w-lev)o(el)i(seman)o(tic)0 2670 y(issues)j(as)h(binary)f
+(represen)o(tation,)h(w)o(ord)f(length,)i(ASCI)q(I)f(co)q(des,)h(and)e
+(p)q(oin)o(ter)h(arithmetic.)37 b(By)963 2790 y(5)p eop
+%%Page: 6 6
+6 5 bop 0 50 a Fb(con)o(trast,)18 b(an)f(in)o(tro)q(ductory)h(computer)
+e(science)j(course)e(that)i(uses)e(Lisp)h([Ab)q(elson)h(and)e(Sussman,)
+0 113 y(1985],)c(coming)g(from)e(the)j(arti\014cial)h(in)o(telligence)i
+(researc)o(h)12 b(tradition,)i(can)g(fo)q(cus)f(atten)o(tion)h(on)f
+(suc)o(h)0 177 y(high-lev)o(el)20 b(seman)o(tic)e(issues)h(as)f
+(functional)i(programm)n(ing,)d(ob)s(ject-orien)o(ted)i(programm)n
+(ing,)e(and)0 241 y(logic)i(programm)n(ing)14 b(metho)q(dologies,)j
+(data)g(abstraction,)g(and)f(higher)h(lev)o(els)h(of)f(abstraction)g
+(suc)o(h)0 304 y(as)f(the)g(design)g(and)g(implemen)o(tation)f(of)h(a)g
+(programm)o(ing)d(language.)22 b(There)16 b(is)g(no)g(pseudo)q(co)q(de)
+f(in)0 368 y(this)h(text;)i(a)d(Lisp)h(pro)q(cedure)f(written)i(in)f
+(terms)e(of)i(subpro)q(cedures)d(that)k(ma)o(y)d(not)i(y)o(et)g(b)q(e)g
+(de\014ned)0 432 y(pro)o(vides)g(the)h(righ)o(t)f(lev)o(el)j(of)d
+(abstraction,)h(while)h(retaining)f(tec)o(hnical)h(rigor.)100
+516 y(The)d(title)k(of)d(this)g(pap)q(er)g(is)g(\\Sym)o(b)q(olic)g
+(Programm)n(ing)e(vs.)i(the)g(A.P)l(.)f(Curriculum.")20
+b(It)d(could)0 579 y(equally)g(w)o(ell)g(ha)o(v)o(e)e(b)q(een)g
+(\\High-Lev)o(el)i(Seman)o(tics)d(vs.)i(the)f(A.P)l(.)g(Curriculum")f
+(or)h(\\Programm)o(ing)0 643 y(as)23 b(Art)g(vs.)g(the)g(A.P)l(.)g
+(Curriculum.")40 b(F)l(or)22 b(m)o(y)g(purp)q(oses,)h(what's)f(imp)q
+(ortan)o(t)g(ab)q(out)h(sym)o(b)q(olic)0 707 y(programm)n(ing)16
+b(is)j(that)f(it)i(allo)o(ws)f(us)e(to)i(step)f(bac)o(k)g(from)e(tec)o
+(hnical)k(details,)f(in)g(a)f(w)o(a)o(y)g(somewhat)0
+770 y(analogous)d(to)h(blindfold)i(dra)o(wing)c(exercises.)23
+b(There)15 b(are)g(tec)o(hnical)j(ideas)e(in)g(the)g(curriculum,)e(but)
+0 834 y(they)23 b(are)f(high-lev)o(el)h(ideas,)h(and)d(they)i(don't)f
+(deaden)f(the)i(hac)o(k)o(er)e(spirit)i(\(that)g(is,)h(the)e(artistic)0
+898 y(spirit\).)27 b(In)17 b(fact,)i(as)e(an)g(in)o(tro)q(ductory)h
+(college-lev)o(el)j(course,)c(I)g(think)i(the)f(Ab)q(elson)g(and)f
+(Sussman)0 961 y(course)f(w)o(orks)h(b)q(etter)h(than)e(the)i
+(traditional)h(curriculum)d(ev)o(en)h(from)f(a)h(bridge-building)h(p)q
+(ersp)q(ec-)0 1025 y(tiv)o(e,)k(b)q(ecause)d(ev)o(en)h(soft)o(w)o(are)e
+(engineers)i(should)f(start)g(with)i(the)f(big)g(ideas.)31
+b(Data)20 b(abstraction,)0 1089 y(for)15 b(example,)g(is)h(part)f(of)g
+(the)h(structured)e(programm)n(ing)f(approac)o(h)g(as)i(w)o(ell)i(as)e
+(the)h(arti\014cial)h(in)o(tel-)0 1152 y(ligence)h(approac)o(h)d(to)i
+(program)c(dev)o(elopmen)o(t.)100 1236 y(I)18 b(w)o(an)o(t)g(to)h
+(address)e(a)i(p)q(ossible)h(misunderstanding)c(of)j(the)g(p)q(oin)o(t)
+g(I'm)e(making.)28 b(The)19 b(c)o(hoice)0 1300 y(of)g(program)o(m)o
+(ing)d(language)i(is)h(not)f(the)h(cen)o(tral)g(issue)f(in)h(designing)
+g(an)f(educational)h(pro)q(cess.)27 b(It)0 1364 y(w)o(ould)19
+b(b)q(e)g(p)q(ossible)h(to)g(teac)o(h)f(a)g(soft)o(w)o(are)f
+(engineering)i(curriculum)e(in)h(an)o(y)g(language,)h(including)0
+1427 y(Lisp.)i(\(Indeed,)14 b(these)g(curricula)h(generally)h(mak)o(e)d
+(a)h(p)q(oin)o(t)h(of)f(not)h(sp)q(ecifying)h(a)e(language,)h(and)f
+(the)0 1491 y(authors)j(of)i(the)g(curricula)g(resp)q(ond)f(to)h
+(accusations)f(of)h(language)g(c)o(hauvinism)f(b)o(y)g(p)q(oin)o(ting)i
+(that)0 1555 y(out.\))h(Suc)o(h)13 b(a)h(curriculum)e(w)o(ould)i(b)q(e)
+g(just)f(as)h(bad)f(as)g(the)h(same)e(course)h(taugh)o(t)h(in)g(P)o
+(ascal.)21 b(Rather,)0 1618 y(m)o(y)13 b(p)q(oin)o(t)j(is)f(that)h(an)e
+(examination)h(of)g(the)g(programm)o(ing)d(languages)j(that)g(the)g
+(adheren)o(ts)e(of)j(eac)o(h)0 1682 y(approac)o(h)e(actually)19
+b(do)c(c)o(ho)q(ose)h(sheds)f(ligh)o(t)j(on)e(ho)o(w)f(these)h(approac)
+o(hes)e(w)o(ork)i(out)g(in)h(educational)0 1746 y(practice.)28
+b(The)18 b(principle)i(of)f(top-do)o(wn)e(design)h(sounds)f(great)h
+(when)g(expressed)f(in)i(the)g(abstract,)0 1809 y(but)e(the)h(real)g
+(teac)o(hing)g(done)f(in)h(its)h(name)d(to)q(o)i(easily)h(gets)f(b)q
+(ogged)f(do)o(wn)g(in)h(lo)o(w-lev)o(el)i(tec)o(hnical)0
+1873 y(details.)0 2017 y Fc(What)f(High)h(Sc)n(ho)r(ol)f(Studen)n(ts)g
+(Need)100 2161 y Fb(In)g(the)h(United)h(States)f(at)g(presen)o(t,)f
+(high)h(sc)o(ho)q(ol)f(computer)f(science)j(education)f(is)g(strongly)0
+2224 y(a\013ected)e(b)o(y)f(the)h(acciden)o(tal)h(fact)f(that)g(there)g
+(is)g(no)f(o\016cial)i(secondary)d(curriculum,)h(but)g(there)g
+Fa(is)0 2288 y Fb(an)g(o\016cial)h(college-lev)o(el)j(curriculum)16
+b(for)h(secondary)f(sc)o(ho)q(ols)h(in)h(the)f(form)f(of)h(the)h
+(College)h(Board)0 2352 y(Adv)m(anced)12 b(Placemen)o(t)g(exam.)19
+b(The)12 b(result)h(is)f(that)h(most)e(high)h(sc)o(ho)q(ol)g(studen)o
+(ts)f(who)h(are)g(in)o(terested)0 2415 y(in)18 b(programm)n(ing)d(are)i
+(no)o(w)g(taugh)o(t)g(from)e(a)i(mo)q(del)g(that)h(w)o(as)e(designed)i
+(\(and)f(badly)g(designed,)g(as)0 2479 y(I)k(ha)o(v)o(e)e(argued)h(ab)q
+(o)o(v)o(e,)g(at)h(that\))g(for)g(a)f(college)i(p)q(opulation.)35
+b(The)20 b(problem)f(is)i(not)g(the)f(College)0 2543
+y(Board's)15 b(fault;)i(a)f(lac)o(k)g(of)g(creativ)o(e)h(leadership)f
+(at)g(the)h(secondary)d(lev)o(el)k(has)d(allo)o(w)o(ed)i(what)f(should)
+0 2606 y(b)q(e)h(an)f(adv)m(anced)g(curriculum)f(for)h(a)g(minorit)o(y)
+g(of)g(studen)o(ts)g(to)g(set)h(the)g(tone)f(for)g(all)i(programm)o
+(ing)0 2670 y(instruction.)963 2790 y(6)p eop
+%%Page: 7 7
+7 6 bop 100 50 a Fb(A)o(t)21 b(the)g(college)h(lev)o(el,)i(where)c(w)o
+(e)g(are)g(engaged)g(in)i(the)f(training)g(of)g(professional)f
+(program-)0 113 y(mers,)f(the)h(soft)o(w)o(are)g(engineering)g(approac)
+o(h)f(is)i(sensible,)g(ev)o(en)g(if)g(not)f(the)h(whole)g(story)l(.)32
+b(I)21 b(ha)o(v)o(e)0 177 y(not)f(suggested)f(abandoning)g(concerns)g
+(ab)q(out)h(professional)g(liabili)q(t)o(y)l(,)j(conserv)m(ativ)o(e)e
+(design,)g(and)0 241 y(team)o(w)o(ork)c(in)i(the)g(con)o(text)h(of)f
+(programm)n(ing)e(pro)s(jects)h(in)i(whic)o(h)e(liv)o(es)j(or)d(prop)q
+(ert)o(y)g(are)h(at)g(risk.)0 304 y(Rather,)f(I)h(ha)o(v)o(e)f(argued)g
+(that)h(soft)o(w)o(are)e(engineering)j(concerns)d(should)h(b)q(e)h
+(balanced)g(b)o(y)f(a)h(liv)o(ely)0 368 y(sense)13 b(of)i(the)f
+(artistic,)i(creativ)o(e)f(side)g(of)f(professional)g(programm)o(ing,)e
+(and)h(that)i(large)f(ideas)h(should)0 432 y(come)g(b)q(efore)i(tec)o
+(hnical)h(details)g(in)f(the)g(curriculum.)100 501 y(A)o(t)24
+b(the)h(high)f(sc)o(ho)q(ol)g(lev)o(el,)k(I)d(w)o(an)o(t)e(to)h(argue)g
+(for)g(a)g(more)e(extreme)i(view.)46 b(High)25 b(sc)o(ho)q(ol)0
+564 y(studen)o(ts)14 b(are)h(not)g(ab)q(out)g(to)g(en)o(ter)g(the)g
+(job)g(mark)o(et)e(as)i(professional)g(programm)n(ers.)j(Rather,)d
+(they)0 628 y(are)h(exploring)i(a)e(p)q(ossible)i(in)o(terest)f(in)g
+(programm)n(ing,)d(and)i(preparing)f(for)i(further)e(instruction)j(at)0
+692 y(the)e(college)i(lev)o(el.)23 b Fa(They)18 b(c)m(an)g(le)m(arn)g
+(discipline)g(later)p Fb(.)k(No)o(w)16 b(they)g(need)f(a)h(kind)h(of)f
+(appren)o(ticeship:)0 755 y(real)e(tasks)g(to)g(w)o(ork)f(on,)h(the)g
+(freedom)d(to)j(exp)q(erimen)o(t)g(and)f(to)h(risk)g(failure,)h(but)e
+(in)i(an)e(en)o(vironmen)o(t)0 819 y(that)19 b(mo)q(dels)f(resp)q(ect)g
+(for)g(commitmen)n(t.)26 b(They)18 b(need)g(teac)o(hers)g(who)g(serv)o
+(e)g(as)g(exp)q(erts)h(a)o(v)m(ailable)0 883 y(for)g(consultation,)i
+(rather)e(than)g(lecture)i(on)e(tec)o(hnical)i(kno)o(wledge)f(or)f(set)
+h(exercises)g(of)g(tec)o(hnical)0 946 y(skills.)100 1015
+y(\(I)i(am)e(concerned)h(here)g(with)h(the)g(needs)f(of)h(those)g
+(studen)o(ts)e(who)h(are)h(in)o(terested)g(in)g(com-)0
+1079 y(puter)17 b(programm)n(ing.)23 b(The)18 b(design)f(of)h(a)g
+(\\computer)d(literacy")20 b(curriculum)c(for)h(all)i(studen)o(ts)e(is)
+h(a)0 1143 y(separate)h(issue.)32 b(I)20 b(ha)o(v)o(e)f(argued)g
+(elsewhere)h(that)g(it)i(is)e(really)i(a)d(non-issue;)i(studen)o(ts)d
+(should)i(b)q(e)0 1206 y(quite)e(comfortable)e(with)i(w)o(ord)e(pro)q
+(cessors)f(and)i(other)f(utilit)o(y)k(programs)14 b(long)j(b)q(efore)g
+(they)g(lea)o(v)o(e)0 1270 y(elemen)o(tary)c(sc)o(ho)q(ol.)21
+b(The)13 b(widely)i(p)q(erceiv)o(ed)f(need)g(for)f(a)g(secondary)f(sc)o
+(ho)q(ol)i(\\literacy")h(curriculum)0 1334 y(is)i(a)g(temp)q(orary)e
+(result)h(of)h(the)g(fact)g(that)g(computers)e(ha)o(v)o(e)h(only)h
+(recen)o(tly)g(en)o(tered)f(the)h(sc)o(ho)q(ols)f(in)0
+1397 y(signi\014can)o(t)h(n)o(um)o(b)q(ers)o(.\))100
+1466 y(Not)g(ev)o(ery)g(teenager)g(w)o(an)o(ts)f(to)h(program)d
+(computers,)g(but)j(man)o(y)e(do.)23 b(Computers)14 b(are)j(p)q(o)o(w-)
+0 1530 y(erful,)22 b(resp)q(onsiv)o(e)e(to)q(ols.)36
+b(Apart)20 b(from)f(reading,)i(few)g(in)o(tellectual)j(skills)f(app)q
+(eal)f(so)e(strongly)h(to)0 1593 y(y)o(oung)13 b(p)q(eople,)i(esp)q
+(ecially)i(not)d(formal,)g(tec)o(hnical)h(ones.)21 b(W)l(e)14
+b(educators)f(are)h(luc)o(ky)h(that)f(computer)0 1657
+y(programm)n(ing)k(ranks)h(almost)g(as)g(high)h(as)f(sk)m(ateb)q
+(oarding)h(and)f(pla)o(ying)i(the)f(guitar!)32 b(W)l(e)20
+b(should)0 1721 y(teac)o(h)e(programm)o(ing)d(in)k(a)g(w)o(a)o(y)e
+(that)i(n)o(urtures)d(this)j(excitemen)o(t,)g(not)f(turning)g(it)i(in)o
+(to)f(one)f(more)0 1784 y(academic)e(sub)s(ject)g(full)i(of)f(facts)f
+(to)h(b)q(e)g(paraded)e(on)h(exams.)k(Instead,)c(high)h(sc)o(ho)q(ol)f
+(programm)o(ing)0 1848 y(instruction)21 b(should)e(b)q(e)h(pro)s
+(ject-based,)g(with)g(pro)s(jects)g(c)o(hosen)f(b)o(y)g(the)i(studen)o
+(ts)d(themselv)o(es)h(as)0 1912 y(m)o(uc)o(h)11 b(as)j(p)q(ossible.)22
+b(The)14 b(A.P)l(.)g(curriculum)f(is)h(particularly)i(bad,)e(b)q
+(ecause)f(of)i(its)g(emphasis)d(on)i(con-)0 1975 y(serv)m(ativ)o(e)j
+(tec)o(hnique)g(and)e(corresp)q(ondingly)h(lo)o(w-lev)o(el)i(details,)g
+(but)d Fa(any)22 b Fb(\014xed)16 b(curriculum)e(w)o(ould)0
+2039 y(in)o(terfere.)100 2108 y(Of)f(course)e(the)j(studen)o(t's)d
+(appren)o(ticeship)i(can't)f(b)q(egin)i(without)g(an)e(initial)17
+b(p)q(erio)q(d)c(dev)o(oted)g(to)0 2172 y(learning)j(the)g(rules)g(of)f
+(a)h(programm)n(ing)e(language.)21 b(But)16 b(I)g(think)g(w)o(e)g
+(should)f(lo)q(ok)i(up)q(on)e(this)h(early)0 2235 y(w)o(ork)c(as)g(an)h
+(unfortunate)f(necessit)o(y)l(,)h(rather)f(than)h(as)f(the)h(fo)q(cus)f
+(of)h(our)f(curriculum,)g(and)g(w)o(e)h(should)0 2299
+y(try)k(to)h(get)g(it)g(o)o(v)o(er)f(with)h(smo)q(othly)f(and)f(quic)o
+(kly)l(.*)26 b(T)l(o)17 b(this)h(end,)f(w)o(e)g(should)g(c)o(ho)q(ose)f
+(a)h(high-lev)o(el)0 2363 y(language)h(suc)o(h)g(as)g(Lisp)g(to)h
+(minimize)f(the)h(time)f(sp)q(en)o(t)g(on)g(syn)o(tax)g(and)g(mac)o
+(hine)f(represen)o(tation)0 2426 y(issues.)k(\(Ab)q(elson)c(and)e
+(Sussman)d(use)j(the)h(Sc)o(heme)e(dialect)k(of)d(Lisp)h(in)h(their)f
+(text;)h(for)e(high)h(sc)o(ho)q(ol)p 0 2487 600 2 v 50
+2543 a(*)25 b(In)19 b(practice)i(the)f(division)h(in)o(to)f(stages)g
+(is)g(not)g(so)f(clear-cut.)32 b(Studen)o(ts)18 b(can)i(b)q(e)g(w)o
+(orking)f(on)0 2606 y(indep)q(enden)o(t)c(pro)s(jects)g(in)g(parallel)i
+(with)f(formal)f(instruction)h(in)f(the)h(language.)21
+b(Still,)d(the)e(t)o(w)o(o)e(are)0 2670 y(v)o(ery)h(di\013eren)o(t)g
+(in)h(st)o(yle,)g(and)e(will)k(probably)d(b)q(e)g(exp)q(erienced)h(b)o
+(y)f(studen)o(ts)f(as)g(separate)h(activitie)q(s.)963
+2790 y(7)p eop
+%%Page: 8 8
+8 7 bop 0 50 a Fb(studen)o(ts)13 b(I)h(prefer)f(the)h(Logo)g(dialect,)i
+(whic)o(h)e(pro)o(vides)f(man)o(y)f(of)i(the)g(same)e(high-lev)o(el)k
+(mec)o(hanism)o(s)0 113 y(along)g(with)h(a)f(user)g(in)o(terface)g
+(that)h(is)f(less)h(in)o(timidating)g(to)f(a)g(b)q(eginner.\))23
+b(I)16 b(also)g(lik)o(e)i(to)f(minimize)0 177 y(formal)g(lectures,)i
+(relying)h(instead)f(on)f(a)g(self-paced)g(format)f(and)h(sc)o
+(heduling)g(adv)m(anced)g(studen)o(ts)0 241 y(in)o(to)f(the)g(lab)g(at)
+g(the)f(same)f(time)i(as)f(the)h(b)q(eginners)f(to)h(allo)o(w)g(for)g
+(informal)f(one-on-one)f(tutoring.)100 307 y(In)f(this)h(early)h
+(stage,)f(I)g(ha)o(v)o(e)f(come)f(to)i(think)h(that)f(debugging)f
+(\(and)h(an)o(tibugging\))g(should)f Fa(not)0 371 y Fb(b)q(e)20
+b(a)g(large)g(part)f(of)h(the)g(studen)o(t's)e(exp)q(erience.)33
+b(It's)20 b(true)f(that)h(debugging)g(is)g(excellen)o(t)i(men)o(tal)0
+434 y(exercise,)h(but)e(real)g(b)q(eginners)g(tend)g(to)g(mak)o(e)f
+(unin)o(teresting)h(mistak)o(es.)34 b(Sp)q(ending)21
+b(15)g(min)o(utes)0 498 y(struggling)15 b(with)g(an)f(unnoticed)h
+(punctuation)f(error)f(just)i(teac)o(hes)f(frustration,)g(and)g(so)g(I)
+h(will)i(often)0 562 y(debug)23 b(a)g(b)q(eginner's)g(program)e(m)o
+(yself)i(and)g(encourage)f(the)i(studen)o(t)f(to)h(get)g(on)f(with)i
+(the)f(big)0 625 y(idea)f(that)g(the)f(bug)g(in)o(terrupted.)39
+b(Only)23 b(if)g(the)g(bug)e(seems)g(to)h(indicate)i(a)f(serious)f
+(conceptual)0 689 y(misunderstanding)14 b(do)i(I)h(mak)o(e)e(an)o(y)h
+(fuss)g(ab)q(out)g(it.)100 755 y(The)23 b(second)h(stage)g(of)g(the)g
+(studen)o(t's)f(appren)o(ticeship)h(fo)q(cuses)f(on)h(pro)s(jects.)44
+b(This)24 b(e\013ort)0 819 y(should)18 b(b)q(e)h(supp)q(orted)f
+(structurally)i(with)f(a)g(curriculum-free)e(lab)i(course)f(that)h(can)
+g(b)q(e)g(rep)q(eated)0 882 y(for)h(credit;)k(in)o(terested)d(studen)o
+(ts)f(ma)o(y)f(enroll)j(in)f(the)g(lab)g(throughout)f(half)h(a)g(dozen)
+f(semesters.)0 946 y(\(One)g(problem)f(with)i(the)g(\\bac)o(k)f(to)h
+(basics")f(mo)o(v)o(emen)n(t)e(is)j(that)g(it)g(has)f(encouraged)f(a)i
+(uniform)0 1010 y(set)c(of)f(courses)g(for)g(all)i(studen)o(ts.)j(One)
+16 b(semester)f(of)h(programm)o(ing)e(is)j(more)d(than)j(man)o(y)d
+(studen)o(ts)0 1073 y(need,)20 b(but)g(not)f(nearly)i(enough)d(for)i
+(man)o(y)e(others.\))31 b(If)20 b(the)g(sc)o(ho)q(ol)g(will)i(allo)o(w)
+f(the)f(course)f(to)h(b)q(e)0 1137 y(taugh)o(t)d(without)h(assigning)f
+(grades,)f(so)h(m)o(uc)o(h)e(the)i(b)q(etter.)25 b(The)17
+b(teac)o(her's)f(role)i(at)g(the)f(b)q(eginning)0 1201
+y(of)d(the)g(semester)e(is)i(to)g(ensure)e(that)i(eac)o(h)g(studen)o(t)
+e(tak)o(es)i(on)f(a)h(pro)s(ject)f(that)i(is)f(c)o(hallenging)h(but)e
+(not)0 1264 y(o)o(v)o(erwhelming;)j(later,)i(the)f(teac)o(her)g(serv)o
+(es)f(as)h(a)g(consultan)o(t,)g(lo)q(oking)i(o)o(v)o(er)d(shoulders)g
+(when)h(that)0 1328 y(feels)g(appropriate.)k(It)c(is)g(also)g
+(appropriate)e(to)i(mak)o(e)e(concrete)h(suggestions)g(ab)q(out)g
+(programm)o(ing)0 1392 y(st)o(yle,)h(p)q(oin)o(ting)f(out)g(ho)o(w)e(a)
+i(particular)g(studen)o(t)f(program)d(could)k(b)q(e)g(organized)f(more)
+f(clearly)l(,)j(but)0 1455 y(I)g(think)g(teac)o(hers)f(should)g(not)g
+(insist)i(on)e(univ)o(ersal)h(adherence)f(to)g(broad)g
+Fa(a)i(priori)23 b Fb(rules.)100 1522 y(F)l(or)d(most)h(high)h(sc)o(ho)
+q(ol)g(studen)o(ts,)g(this)h(second)e(stage)h(can)f(last)i(through)e
+(the)h(senior)g(y)o(ear.)0 1585 y(If)d(the)f(programm)o(ing)e(pro)s
+(jects)i(are)g(selected)h(w)o(ell,)h(eac)o(h)e(studen)o(t)g(will)j
+(learn)e(certain)g(univ)o(ersally)0 1649 y(imp)q(ortan)o(t)i(ideas)h
+(\(suc)o(h)f(as)g(recursion\),)i(and)e(also)h(eac)o(h)f(studen)o(t)g
+(will)k(learn)c(man)o(y)f(other)i(ideas)0 1713 y(that)17
+b(happ)q(en)g(to)g(b)q(e)g(relev)m(an)o(t)h(to)f(his)g(or)g(her)f(pro)s
+(jects)h(but)f(are)h(di\013eren)o(t)g(from)e(another)h(studen)o(t's)0
+1776 y(learning.)22 b(This)15 b(pro)s(ject)f(lab)q(oratory)h(will)i(b)q
+(e)e(excellen)o(t)h(preparation)e(for)g(a)h(more)d(rigorously)j(struc-)
+0 1840 y(tured)22 b(computer)e(science)j(curriculum)e(in)i(college.)42
+b(Some)21 b(studen)o(ts,)h(ho)o(w)o(ev)o(er,)h(will)i(ev)o(en)o(tually)
+0 1904 y(get)d(tired)f(of)h(pro)s(jects)e(and)h(will)i(ask)e(for)g
+(more)f(formal)g(instruction)i(ab)q(out)f(meatier)f(ideas.)36
+b(F)l(or)0 1967 y(them,)14 b(a)h(third-stage)f(course)g(can)h(in)o(tro)
+q(duce)g(computer)d(science)k(topics)g(suc)o(h)d(as)i(automata)e
+(theory)0 2031 y(or)k(compiler)g(construction;)h(alternativ)o(ely)l(,)i
+(a)e(true)f(Adv)m(anced)h(Placemen)o(t)f(course)f(can)i(b)q(e)g
+(o\013ered)0 2095 y(using)e(the)h(Ab)q(elson)g(and)f(Sussman)e(text.)
+100 2161 y(I)e(ha)o(v)o(e)f(written)j(a)e(series)g(of)g(three)h(texts,)
+g(using)f(Logo,)h(to)g(supp)q(ort)e(these)h(three)g(stages)g([Harv)o
+(ey)l(,)0 2224 y(1985,)19 b(1986,)h(1987].)30 b(The)19
+b(\014rst)f(\(in)o(tro)q(ducing)i(the)g(language\))f(and)g(the)g(third)
+h(\(computer)d(science)0 2288 y(topics\))k(are)e(mean)o(t)g(to)h(b)q(e)
+g(read)f(sequen)o(tially)l(,)k(lik)o(e)f(most)c(texts.)33
+b(The)20 b(second)f(is)h(a)g(collection)j(of)0 2352 y(pro)s(jects,)14
+b(in)h(no)f(particular)h(order,)f(in)o(tended)g(to)h(serv)o(e)f(as)g
+(an)g(inspiration)h(and)f(to)h(pro)o(vide)f(starting)0
+2415 y(p)q(oin)o(ts)19 b(for)f(studen)o(t)g(pro)s(jects)f(rather)h
+(than)g(to)h(b)q(e)g(read)f(from)e(co)o(v)o(er)i(to)h(co)o(v)o(er.)27
+b(A)19 b(series)f(lik)o(e)i(this)0 2479 y(has)15 b(the)h(adv)m(an)o
+(tage)f(of)h(a)g(uniform)e(st)o(yle)i(and)f(the)h(abilit)o(y)i(to)e
+(rely)h(on)e(earlier)i(learning)f(in)g(the)g(later)0
+2543 y(v)o(olumes,)d(but)h(alternativ)o(es)i(are)e(a)o(v)m(ailable)j
+(for)d(eac)o(h)g(of)g(the)h(three)f(stages.)21 b(In)14
+b(particular,)h(there)f(are)0 2606 y(man)o(y)i(collections)k(of)e
+(programm)o(ing)d(pro)s(jects)i(a)o(v)m(ailable,)j(and)e(the)g
+(computer)d(lab)k(should)e(ha)o(v)o(e)g(a)0 2670 y(wide)12
+b(assortmen)o(t.)18 b(In)12 b(the)g(third)g(stage,)g(ev)o(en)g(a)g(P)o
+(ascal-based)e(text)j(co)o(v)o(ering)f(the)g(o\016cial)h(Adv)m(anced)
+963 2790 y(8)p eop
+%%Page: 9 9
+9 8 bop 0 50 a Fb(Placemen)o(t)19 b(curriculum)f(w)o(ouldn't)h(b)q(e)h
+(to)q(o)g(harmful;)f(m)o(y)f(concern)h(is)h(that)g(that)g(curriculum)e
+(has)0 113 y(b)q(ecome,)d(b)o(y)i(default,)g(the)g(only)g(programm)n
+(ing)d(exp)q(erience)k(for)e(man)o(y)f(high)i(sc)o(ho)q(ol)f(studen)o
+(ts.)0 237 y Fc(Conclusion)100 360 y Fb(T)l(o)i(summ)o(ar)o(ize,)f(I)h
+(am)f(presen)o(ting)g(for)h(computer)e(science)j(an)e(argumen)o(t)f
+(that)i(has)g(come)f(up)0 424 y(b)q(efore)h(in)h(man)o(y)d(other)i
+(areas)g(of)g(science)h(and)f(mathematics)e(education.)27
+b(Our)18 b(o\016cial)h(curricula,)0 488 y(I)g(think,)i(run)d(the)i
+(same)d(risk)j(as)f(the)g(o\016cial)i(ph)o(ysics)d(curriculum)g(that)i
+(caused)e(Alb)q(ert)j(Einstein)0 551 y(to)h(drop)e(out)i(of)g(sc)o(ho)q
+(ol.)37 b(Suc)o(h)20 b(rigidit)o(y)k(w)o(ould)d(b)q(e)h(particularly)h
+(regrettable)f(in)g(a)g(sub)s(ject)f(lik)o(e)0 615 y(computer)14
+b(programm)n(ing,)g(whic)o(h)i(lends)g(itself)i(so)e(readily)h(to)f(a)g
+(\015exible,)i(exp)q(erimen)o(tal)e(approac)o(h.)0 738
+y Fc(References)0 897 y Fb(Ab)q(elson,)25 b(Harold,)g(and)e(Gerald)h
+(Ja)o(y)e(Sussman.)39 b Fa(Structur)m(e)23 b(and)i(Interpr)m(etation)g
+(of)f(Computer)100 960 y(Pr)m(o)m(gr)m(ams)p Fb(,)18
+b(MIT)e(Press,)g(1985.)0 1059 y(Co)q(op)q(er,)g(Doug,)g(and)g(Mic)o
+(hael)i(Clancy)l(.)k Fa(Oh!)i(Pasc)m(al!)30 b Fb(Second)16
+b(Edition,)h(Norton,)f(1985.)0 1157 y(Harv)o(ey)l(,)g(Brian.)23
+b Fa(Computer)17 b(Scienc)m(e)h(L)m(o)m(go)i(Style)p
+Fb(,)c(MIT)g(Press.)100 1221 y(V)l(olume)g(1:)21 b Fa(Interme)m(diate)e
+(Pr)m(o)m(gr)m(amming)p Fb(,)f(1985.)100 1285 y(V)l(olume)e(2:)21
+b Fa(Pr)m(oje)m(cts,)f(Styles,)e(and)g(T)l(e)m(chniques)p
+Fb(,)f(1986.)100 1348 y(V)l(olume)f(3:)21 b Fa(A)m(dvanc)m(e)m(d)g(T)l
+(opics)p Fb(,)c(1987.)963 2790 y(9)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/js/games/nluqo.github.io/~bh/byob/bh/Logo5.png b/js/games/nluqo.github.io/~bh/byob/bh/Logo5.png
new file mode 100644
index 0000000..38ac4ab
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/byob/bh/Logo5.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/byob/bh/arrow3.gif b/js/games/nluqo.github.io/~bh/byob/bh/arrow3.gif
new file mode 100644
index 0000000..fd7f34b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/byob/bh/arrow3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/byob/bh/forexample.gif b/js/games/nluqo.github.io/~bh/byob/bh/forexample.gif
new file mode 100644
index 0000000..2bf5b3d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/byob/bh/forexample.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/byob/bh/forscript.gif b/js/games/nluqo.github.io/~bh/byob/bh/forscript.gif
new file mode 100644
index 0000000..6ca61b1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/byob/bh/forscript.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/byob/bh/fortalking.gif b/js/games/nluqo.github.io/~bh/byob/bh/fortalking.gif
new file mode 100644
index 0000000..c91dd34
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/byob/bh/fortalking.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/capitalist.html b/js/games/nluqo.github.io/~bh/capitalist.html
new file mode 100644
index 0000000..e969164
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/capitalist.html
@@ -0,0 +1,660 @@
+<HTML>
+<HEAD>
+<TITLE>Logo: Capitalist Tool?</TITLE>
+</HEAD>
+<BODY>
+<H1>Logo: Capitalist Tool?</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>In 1964, John Holt wrote <CITE>How Children Fail</CITE>, based on his careful
+observation of actual interactions in classrooms.  He found several common
+ways in which the events of classroom life led to miseducative results.
+Holt's stance at that time was that once teachers understood these mistakes,
+they'd be corrected, and schools would be much better places.
+
+<P>By 1972, Holt had seen his ideas become widely accepted, at least in
+the abstract, but schools were as bad as ever.  In his book <CITE>Freedom and
+Beyond</CITE> he asks himself why:
+
+<BLOCKQUOTE>
+<P>In a way this book marks the end of an argument.  For some time I
+and others have been saying--some before I was born--that children are by
+nature smart, energetic, curious, eager to learn, and good at learning;
+that they do not need to be bribed and bullied to learn; that they learn
+best when they are happy, active, involved, and interested in what they
+are doing; that they learn least, or not at all, when they are bored,
+threatened, humiliated, frightened.  Only a few years ago this was
+controversial, not to say radical, talk.  Not any more.  Almost any body
+of educators, hearing such things, will yawn and say, ``So what else is
+new?''
+
+<P>This is not to say that everyone has been won over.  Some may never
+be.  But on the whole these once radical and crazy ideas have become
+part of the conventional wisdom of education.  Students in most colleges
+of education are regularly required to read, and I suppose take tests
+on, books by people who not long ago were being called ``romantic''
+critics.  The unthinkable has become respectable.
+
+<P>At any rate, what concerns me now is that so many people seem to be
+saying that our schools must stay the way they are, or at any rate are
+going to stay the way they are, <EM>even if</EM> it means that children will
+learn less in them.  Or, to put it a bit differently, our schools are
+the way they are for many reasons that have nothing whatever to do with
+children's learning.  If so, convincing people that most of our present
+schools are bad for learning is not going to do much to change them;
+learning is not principally what they are for...
+
+<P>More and more it appeared that a large part of our problem is that
+few of us really believe in freedom.  As a slogan, it is fine.  But we
+don't understand it as a process or mechanism with which or within which
+people can work and live.  We have had in our own lives so little
+experience of freedom, except in the most trivial situations, that we
+can hardly imagine how it might work, how we might use it, or how it
+could possibly be of any use to us when serious work was to be done.
+For our times the corporate-military model seems to be the only one we
+know, trust, and believe in.  Most people, even in democracies, tend to
+see democracy as a complicated process for choosing bosses whom all must
+then obey, with this very small difference--that every so often we get a
+chance to pick a new set of bosses.
+
+<P>Not understanding freedom, we do not understand authority.  We think
+in terms of organization charts, pecking orders, stars on the collar and
+stripes on the sleeve.  If someone is above us on the chart, then by
+virtue of being there he has a right to tell us to do what he wants, and
+we have a duty to do whatever he tells us, however absurd, destructive,
+or cruel.  Naturally enough, some people, seeing around them the
+dreadful works of this kind of authority, reject it altogether.  But
+with it they too often reject, naturally but unwisely, all notions of
+competence, inspiration, leadership.  They cannot imagine that of their
+own free will they might ask someone else what he thought, or agree to
+do what he asked, because he clearly knew or perhaps cared much more
+about what he was doing than they did.  The only alternative they seem
+to see to coercive authority is none at all.  I have therefore tried to
+explore a little further the nature of freedom, so that we may better
+understand how people of varying ages and skills may live together and
+be useful to each other without some of them always pushing the others
+around.
+</BLOCKQUOTE>
+
+<P>Perhaps Holt's discovery that schools are not mainly about learning
+merely demonstrates a specifically American naivete.  Perhaps intellectuals
+in the civilized world, with a tradition of political discourse, would sum
+up Holt's entire argument by saying, ``The purpose of schools is to reproduce
+the class structure of society.'' Indeed, much of Holt's book is taken up
+with statistics about poverty, and with a debunking of the idea that better
+education would bring everyone out of poverty.  (But most of the book is
+filled with quite specific, practical suggestions for building alternative
+institutions in which adults and children can live together in freedom.)
+
+<P>What does this have to do with Logo?  We, too, have seen our ideas
+about education move from the lunatic fringe to the mainstream, with hardly
+any actual change in the practice or the results of schooling.  Just as John
+Holt had to come to terms with this contradiction in <CITE>Freedom and Beyond</CITE>,
+Seymour Papert takes up the problem in his 1993 <CITE>The Children's Machine:
+Rethinking School in the Age of the Computer</CITE>.  But Papert reaches his
+analysis of the institution of schooling by way of a technical detour
+through what he calls ``pilotage'' or ``emergent programming.'' Suppose you want
+to get a Logo screen turtle to follow a specific path--for example, through a
+maze drawn on the screen.  You can accomplish this straightforwardly by
+writing a program that embodies the exact desired path as a sequence of
+precise moves and turns.  But this ``dead reckoning'' approach will not work
+for a physical robot turtle trying to follow the same path on the floor,
+because the real-world imprecision in the robot's movements will accumulate
+so that it soon ends up moving in entirely the wrong direction.  Instead, a
+maze program for a physical robot must use feedback--from touch sensors or
+light sensors--to correct its movements dynamically.  Papert's point is that
+such a program does not directly embody the desired path.  Rather, the
+robot's motion along the path ``emerges'' from a combination of the program's
+rules and the feedback from the actual situation.  Central planning is bad;
+reacting to the local situation is good.
+
+<BLOCKQUOTE>
+<P>When one is overwhelmed, as everyone must be from time to time, by a
+sense that School is too firmly implanted ever to change, it is helpful
+to contemplate the political changes across the globe that were until
+recently considered quite impossible...
+
+<P>Mikhail Gorbachev, whose name has deservedly become emblematic of
+change, is also one of history's most interesting examples of resistance
+to change.  Even as he ushered in previously unthinkable reforms, he
+continued to pay allegiance to the ideas on which the system was
+founded, and renounced the Communist party only when he was on the verge
+of being renounced himself.  His slogan of perestroika (which literally
+means ``restructuring'') became synonymous with a policy of struggling to
+reform a system in serious crisis without calling in question the
+foundations on which it was built.  It should be clear by now that I see
+most of those who talk loudly about ``restructuring'' in education in much
+the same light--though few of them have the courage to carry the reforms
+as far in their realm as Gorbachev did in his.  In their case a more
+appropriate phrase than ``restructuring'' might be ``jiggering the system.''
+
+<P>The analogy between perestroika and education reform would be
+instructive even if it went no further than highlighting these general
+features of change and resistance to change.  But there is more.  Using
+the language of system dynamics developed earlier, the problems of both
+the old Soviet Union and School can be described in terms of a conflict
+between tightly and emergently programmed systems.
+</BLOCKQUOTE>
+
+<P>This seems to me to be an extremely simplistic analysis.  The ideas
+to which Gorbachev maintains his allegiance are <EM>not</EM> primarily a belief in
+tightly programmed systems!  Rather, they are ideas about the class nature
+of society, about the fact that different societies work differently because
+they are planned that way:  Each society is controlled by certain people,
+who set up institutions that serve their needs.  A profound critique of the
+Soviet Union would have to ask who controlled it, and whose interests it
+served, rather than what administrative structures were used.
+
+<P>In the United States, the current organizational wisdom tells us
+that airplane travel should be run in a decentralist manner, whereas rail
+travel should be centrally planned.  Our telephone system, once the best in
+the world, was built by central planning--but by a private company, not by
+government.  In the name of decentralism we have replaced that central
+planning with a maze, so that ordinary people can no longer figure out which
+of three companies to call for help with a telephone problem (the
+manufacturer of their telephone equipment, the local operating company, or a
+long distance carrier), although big business benefits from competition through
+price breaks for large-volume customers.  The key point about all of these
+examples is that the central or decentral organization is actually not so
+important; trains and planes are both run to serve the rich.  The ``smart
+bombs'' that Papert admires in this book[*] may work by emergent programming,
+but their development was funded by a massive concentration of political and
+economic power, not by market forces or individual initiative!
+
+<BLOCKQUOTE>
+<P>[*] (Footnote added later.)  Nobody ever believes me about this, so here
+is an excerpt from the relevant section, starting on page 179, the beginning
+of Chapter 9, "Cybernetics":
+
+<P>Television pictures of the war over Iraq gave millions of people their
+most vivid view of cybernetic technology, in the form of the "smart" missile,
+which seemed to hover like an insect before lunging into the entrance of a
+hangar or other building.
+
+<P>It is depressing to feel again that the best way to open a discussion is
+with a military image, but it reflects a real fact of life that has played
+a big role in the strategies that have guided my work.  The people who forge
+new technological ideas do not make them for children.  They often make them
+for war, keep them in secret places, and show them in distant views...
+
+<P>Most people watching the missiles on TV would not have been able to give
+a better explanation, if asked how they worked, than that "they are programmed
+to do it."  The booty I am after is a set of ideas (and technologies to allow
+children to appropriate them) that would allow a more specific answer.  Of
+course the missiles are programmed.  But they are programmed in a particular
+way, using specific ideas whose development has played an important role in
+the intellectual history of our century and whose implications might play an
+even bigger role in the coming one.  My hope is that for anyone who has
+appropriated these ideas, the smart missiles will become transparent and,
+with them, a whole range of technologies and areas of science...
+
+<P>The outline of this new subject will emerge gradually, and the problem of
+situating it in the context of School and the larger learning environment will
+best be broached when we have it in front of us.  Here I give a preliminary
+definition of the subject--but only as a seed for discussion--as <em>that
+kernel of knowledge needed for a child to invent (and, of course, build)
+entities with the evocatively lifelike qualities of smart missiles.</em>
+[Emphasis in original.]
+</BLOCKQUOTE>
+
+<P>Seymour Papert is not the only Logoite for whom the contemplation of
+emergent programming has given rise to bad political analysis.  Papert's MIT
+colleague Mitchel Resnick, in his 1994 book <CITE>Turtles, Termites, and Traffic
+Jams: Explorations in Massively Parallel Microworlds</CITE>, moves beyond Papert's
+mixture of praise and criticism for Gorbachev.  Resnick's political hero is
+Boris Yeltsin, the new Russian tsar.  Because Yeltsin dissolved the
+centralist Soviet Union, Resnick takes at face value his claim to be a
+democrat and a decentralist.  But the people of Chechnya understand, as
+Resnick does not, that Yeltsin is neither of those things.  What looks like
+decentralism to Resnick is mere ethnocentrism (Russian Jews, in particular,
+face much worse antisemitism than they did even in the Soviet Union days),
+and what looks like democracy is opportunism.
+
+<BLOCKQUOTE>
+<P>The spread of decentralized ideas can be seen in organizations of
+all sizes and types--countries, companies, schools, clubs.  Although
+details are different in each case, the basic idea is always the same:
+pushing authority and power down from the top, distributing rights and
+responsibilities more widely.  For some countries (such as the Soviet
+Union) decentralization has meant breaking apart into separate pieces.
+But changes in national boundaries are not nearly as important as
+changes in political and economic structures. Politically, countries
+throughout the world are shifting away from totalitarianism toward
+democracy.  Economically, countries are shifting away from centrally
+controlled economies toward market-oriented economies.  As a result,
+decision making (both political and economic) is becoming more
+decentralized than ever before.  Of course, there are exceptions to the
+trend.  In China, the government reasserted its centralized power with
+the brutal crackdown in Tiananmen Square.  And on many of the former
+Soviet republics, democracy is very fragile.  But the overall trend is
+clear.  Between 1989 and 1991, countries with a combined population of
+1.5 billion people, more than one-quarter of the world's population,
+moved away from autocratic toward more democratic forms of government,
+according to Freedom House, an American human-rights group.  Now, for
+the first time ever, more than half of all countries are democracies.
+</BLOCKQUOTE>
+
+What's wrong with this passage is that Freedom House is <EM>not</EM> a ``human rights
+group.'' Rather, Freedom House is a well-funded cold war propaganda mill.
+
+<BLOCKQUOTE>
+<P>Both the Freedom House survey and the State Department reports seem
+to have a clear bias reflecting American foreign policy interests and/or
+reflecting an undifferentiated, visceral anticommunism. Thus, the Freedom
+House reports during the 1980s consistently rated El Salvador and
+Guatemala, two countries allied with the United States that have been
+notorious for government-allied ``death squads,'' which murdered thousands
+of their citizens, as having a comparable or (usually) more favorable
+human rights climate than Hungary or Yugoslavia, two one-party Communist
+regimes which were not engaged in the slaughter of their citizens.
+[Robert Justin Goldstein, ``The Limitations of Using Quantitative Data in
+Studying Human Rights Abuses,'' in <CITE>Human Rights and Statistics: Getting
+the Record Straight</CITE>, edited by Thomas B. Jabine and Richard P. Claude,
+University of Pennsylvania Press, 1992.]
+</BLOCKQUOTE>
+
+<P>In describing the behavior of ants, termites, robot turtles, and
+other mindless agents, the idea of decentral control, of emergent
+programming, truly does capture all of the important aspects of the
+mechanism by which such simple devices can give rise to seemingly complex
+behaviors.  Emergent programming may even turn out to explain how human
+intelligence itself arises from the simple behavior of neurons.  But once we
+set out to describe a system in which the ``elements'' are intelligent human
+beings, there is much more to be said.  Papert and Resnick both fall victim
+to technocentrism; having discovered the power of central vs. decentral
+control as an explanation, they take on such questions as autocratic vs.
+democratic, governmental vs. private, and led vs. leaderless as if all of
+those were merely central vs. decentral in different words.
+
+<H2>Autocratic / Democratic Is Not Central / Decentral</H2>
+
+<P>Mitchel Resnick's anticommunist friends at Freedom House use
+``autocratic'' to mean communist and ``democratic'' to mean capitalist.  This
+use of language confusingly blends several distinct questions:
+
+<UL>
+<LI>Are there elections?
+
+<LI>Are the means of production privately or publicly owned?
+
+<LI>Is planning done centrally or decentrally?
+
+<LI>Who holds power?
+</UL>
+
+So, for example, the current movement in the United States to eliminate
+federally funded programs in favor of state funded programs is a move toward
+decentralist planning, but it is not a move toward democracy; the state
+governments are no more and no less under popular control than the federal
+government.
+
+<P>The history of the Soviet Union, following the abandonment of
+communism by Lenin and Stalin, makes it easy to blend all these questions.
+It may be helpful, therefore, to review the nature of the only government
+ever blessed by Marx himself as authentically communist: the short-lived
+Paris Commune of 1870-71.  The following is from Engels' introduction to
+Marx's <CITE>The Civil War in France</CITE>.  (I quote Engels because Marx writes at
+much greater length, but it's worth reading the third part of Marx's book, in
+which he describes the Commune; the other parts are about the external
+political and military events that led to its formation and then its
+defeat.)  In brackets I'll point out how this passage is relevant to the
+issues under consideration here.
+
+<BLOCKQUOTE>
+<P>The members of the Commune were divided into a majority, the
+Blanquists... and a minority, members of the International Working Men's
+Association, chiefly consisting of adherents of the Proudhon school of
+socialism.  [That is, the Commune was multi-party.] ...  Naturally, the
+Proudhonists were chiefly responsible for the economic decrees of the
+Commune, both for their praiseworthy and their unpraiseworthy aspects; as
+the Blanquists were for its political commissions and omissions.  And in
+both cases the irony of history willed--as is usual when doctrinaires
+come to the helm--that both did the opposite of what the doctrines of
+their school prescribed.
+
+<P>Proudhon, the Socialist of the small peasant and master-craftsman,
+regarded association with positive hatred.  [He was a decentralist, like
+Papert and Resnick.]  He said of it that there was more bad than good in
+it; that it was by nature sterile, even harmful, because it was a fetter
+on the freedom of the worker; that it was a pure dogma, unproductive and
+burdensome... that, as compared with it, competition, division of labor,
+and private property were economic [i.e., good] forces.  Only in the
+exceptional cases--as Proudhon called them--of large-scale industry and
+large establishments, such as railways, was the association of workers
+in place.
+
+<P>By 1871, large-scale industry had already so much ceased to be an
+exceptional case even in Paris, the centre of artistic handicrafts, that
+by far the most important decree of the Commune instituted an
+organization of large-scale industry and even of manufacture which was
+not only to be based on the association of the workers in each factory,
+but also to combine all these associations in one great union...
+[Economic planning was done centrally, but bottom-up.  The workers of a
+particular factory were the experts on how that factory could best
+contribute.]
+
+<P>The Blanquists fared no better.  Brought up in the school of
+conspiracy, and held together by the strict discipline which went with
+it, they started out from the viewpoint that a relatively small number of
+resolute, well-organized men would be able, at a given favourable moment,
+not only to seize the helm of state, but also, by a display of great,
+ruthless energy, to maintain power until they succeeded in sweeping the
+mass of the people into the revolution and ranging them round the small
+band of leaders.  This involved, above all, the strictest, dictatorial
+centralization of all power in the hands of the new revolutionary
+government.  [These ideas of the Blanquists were reinvented barely a
+dozen years later by Lenin.  Too bad he didn't appreciate Engels'
+critique!  In Lenin's defense, the conditions in which he worked, under
+the brutal oppression of Tsarist Russia, were different from the
+relatively free conditions in Paris.]  And what did the Commune, with
+its majority of these same Blanquists, actually do?  In all its
+proclamations to the French in the provinces, it appealed to them to
+form a free federation of all French Communes with Paris, a national
+organization which for the first time was really to be created by the
+nation itself.  It was precisely the oppressing power of the former
+centralized government, army, political police, bureaucracy, which
+Napoleon had created in 1798 and which since then had been taken over by
+every new government as a welcome instrument and used against its
+opponents--it was precisely this power which was to fall everywhere,
+just as it had already fallen in Paris.
+
+<P>From the very outset the Commune was compelled to recognize that the
+working class, once come to power, could not go on managing with the old
+state machine; that in order not to lose again its only just conquered
+supremacy, this working class must, on the one hand, do away with all the
+old repressive machinery previously used against it itself, and, on the
+other, safeguard itself against its own deputies and officials, by
+declaring them all, without exception, subject to recall at any moment.
+What had been the characteristic attribute of the former state?  Society
+had created its own organs to look after its common interests,
+originally through simple division of labour.  But these organs, at
+whose head was the state power, had in the course of time, in pursuance
+of their own special interests, transformed themselves from the servants
+of society into the masters of society.  [The government is ``at the
+head'' of social institutions, but fundamentally no different from any
+other.  The sort of ``decentralization'' that transfers control from a
+government agency to a private company is irrelevant to democracy vs.
+autocracy.]  This can be seen, for example, not only in the hereditary
+monarchy, but equally so in the democratic republic.  Nowhere do
+``politicians'' form a more separate and powerful section of the nation
+than precisely in North America.  There, each of the two major parties
+which alternately succeed each other in power is itself in turn
+controlled by people who make a business of politics, who speculate on
+seats in the legislative assemblies of the Union as well as of the
+separate states, or who make a living by carrying on agitation for their
+party and on its victory are rewarded with positions.  It is well known
+how the Americans have been trying for thirty years to shake off this
+yoke, which has become intolerable, and how in spite of it all they
+continue to sink ever deeper in this swamp of corruption...  [If the
+part about shaking off the yoke seems less familiar and truthful to the
+modern American reader than the part about professional politicians,
+remember that Engels wrote this passage in 1891, at the height of the
+activities of the Knights of Labor, and just five years after the
+Haymarket massacre and rebellion in Chicago that are still remembered
+worldwide as the workers' holiday, May 1.]
+
+<P>Against this transformation of the state and the organs of the state
+from servants of society into masters of society--an inevitable
+transformation in all previous states--the Commune made use of two
+infallible means.  In the first place, it filled all
+posts--administrative, judicial and educational--by election on the
+basis of universal suffrage of all concerned, subject to the right of
+recall at any time by the same electors.  And, in the second place, all
+officials, high or low, were paid only the wages received by other
+workers...
+
+<P>Of late, the Social-Democratic philistine has once more been filled
+with wholesome terror at the words: Dictatorship of the Proletariat.
+Well and good, gentlemen, do you want to know what this dictatorship
+looks like?  Look at the Paris Commune.  That was the Dictatorship of
+the Proletariat.
+</BLOCKQUOTE>
+
+<H2>Governmental / Private Is Not Central / Decentral</H2>
+
+<P>I shall have little to say about this obvious point.  In the United States,
+such educational initiatives as the Head Start program are federally funded,
+and standards are set federally, but the programs are controlled and
+administered separately by each school district.  By contrast, the
+assignment of telephone area codes to cities is done centrally, but by
+private companies: originally by AT&amp;T and now by a consortium of telephone
+operating companies.
+
+<P>In practice, mixed approaches are most common.  Government agencies
+such as the Food and Drug Administration set minimum standards that private
+companies must meet, but the private companies have room for initiative
+within those standards.  It is worth noting that private companies sometimes
+<EM>encourage</EM> government regulation, because every company in an industry may
+know how to make a safe product, and may want to make a safe product, but
+may be afraid that some competitor will undercut their prices by making
+unsafe products.
+
+<P>The theory of the ``free'' market is that over the long run, consumers
+will reject bad ideas, and so businesses will be forced by market pressure
+to provide good products without government regulation.  Adam Smith wrote
+about these ideas in a time of small industry and personal craftsmanship.
+But in the era of monopoly capital, and of complex technology, people's
+lives are strongly affected by economic decisions over which they have no
+market influence.  The most dramatic recent example was the Savings and Loan
+catastrophe in the United States, in which deregulation paved the way not
+for healthy competition but for widespread theft.  (Did the United States
+learn its lesson?  No; right now we are having a similar scandal about
+``derivatives'': a form of legalized gambling with stockbrokers as the
+bookies.  The news media now wish us to believe that the money lost by
+cities and pension funds has just vanished, instead of finding out who has
+gotten richer.  Why didn't we learn?  Because the deregulation enthusiasts
+in the government, while they speak the language of Papert and Resnick to
+``prove'' that deregulation helps the economy in general, are really promoting
+their own class interests rather than those of consumers.)  But even when
+deliberate theft is not at issue, how can a consumer, for example,
+realistically be expected to check on the safety standards of different
+airline companies?  We can't watch the mechanics work on the airplanes, and
+most of us wouldn't know how to judge their procedures if we did see them.
+But government <EM>can</EM> check.
+
+<H2>Led / Leaderless Is Not Central / Decentral</H2>
+
+<P>In Resnick's book, the word ``leader'' is repeatedly used to mean ``controller.''
+
+<BLOCKQUOTE>
+<P>Most strikingly, the students' strategies were almost always
+centralized, relying on a leader to make decisions.  Fadhil centralized
+control at the spaceship: ``If a robot finds gold, it sends a signal to
+the spaceship.  Then, the spaceship sends signals back to the other
+robots, telling them where to go.  The spaceship would be constantly
+monitoring all of the robots.'' Benjamin suggested that ``the leader robot
+should send the others in all directions, like the spokes of a wheel.''
+Ramesh had a similar idea: ``One robot is in charge, sending all these
+robots out.  Where most gold is found, it sends more in that direction.
+And where the gold is not found, you eliminate that direction...''
+</BLOCKQUOTE>
+
+<P>As with many emergent programming ideas, this use of language is
+appropriate in its original context, but not as a metaphor for human social
+behavior.  Robots do not form societies; they obey programs.  For robots, a
+``leader'' can only mean one who gives orders.  But that's not true for human
+beings, as John Holt reminds us in the passage I quoted near the beginning
+of this paper.  Here is an example of how Resnick gets in trouble by
+thinking that leadership means giving orders:
+
+<BLOCKQUOTE>
+<P>Conspiracy theories are another example of centralized thinking.
+For almost every perceived problem in society, people look for a clearly
+identifiable culprit to blame.  Something is wrong with the world
+economy?  Blame the Trilateral Commission.  Traditional family values
+are on the decline?  Blame the producers in Hollywood.  In general,
+people tend to focus blame on a centralized cause rather than sort
+through the complex, interacting factors that underlie most social
+phenomena.
+</BLOCKQUOTE>
+
+<P>This passage is misleading in two ways.  First, equating leadership,
+even coercive leadership, with conspiracy is a red herring.  The passage,
+despite its lip service to complexity, seems to leave us with a choice of
+only two extremes:  Either we eliminate human agency and self-interest from
+our world view or we must be paranoid conspiracy theorists.  Blaming
+Hollywood, at least in part, for the rise in violence in our society is <EM>not</EM>
+like blaming the Trilateral Commission for the state of the economy.  Paul
+Goodman understood the middle ground; the second paragraph of what follows,
+from <CITE>Growing Up Absurd</CITE>, makes the key point:
+
+<BLOCKQUOTE>
+<P>In American society we have perfected a remarkable form of
+censorship: to allow every one his political right to say what he
+believes, but to swamp his little boat with literally thousands of
+millions of newspapers, mass-circulation magazines, best-selling books,
+broadcasts, and public pronouncements that disregard what he says and
+give the official way of looking at things.  Usually there is no
+conspiracy to do this; it is simply that what he says is not what people
+are talking about, it is not newsworthy.
+
+<P>(There is no conspiracy, but it is not undeliberate.  ``If you mean
+to tell me,'' said an editor to me, ``that <CITE>Esquire</CITE> tries to have
+articles on important issues and treats them in such a way that nothing
+can come of it--who can deny it?'' Try, also, to get a letter printed in
+the <CITE>New York Times</CITE> if your view on the issue calls attention to an
+essential factor that is not being generally mentioned.)
+</BLOCKQUOTE>
+
+<P>The second flaw in Resnick's analysis is that he equates leadership
+with coercive leadership.  Most of the StarLogo programs in his book
+demonstrate emergent techniques working out admirably for the ants,
+termites, and so on that he simulates.  But one of his simulations shows how
+the individual actions of independent agents can combine to produce a result
+that nobody desires:  In a mixed community of turtles and frogs, the desire
+of each individual to have at least a few same-species neighbors leads
+eventually to a complete segregation of the two groups into ghettos, even
+though each individual would be happy to live in a mixed community, even as
+a member of the minority in that neighborhood.
+
+<BLOCKQUOTE>
+<P>This turtle/frog scenario was inspired by the writings of Harvard
+economist Thomas Schelling.  In an article titled ``On the Ecology of
+Micromotives,'' Schelling (1971) notes that the ``micromotives'' of
+individuals can lead to ``macro'' patterns that are not necessarily
+desired by any of the individuals.  At a cocktail party, for instance,
+men and women might end up in single-gender conversation clusters, even
+if everyone would prefer mixed-gender clusters.  And a residential
+neighborhood might become more segregated ethnically or racially than
+any individual would find desirable.
+</BLOCKQUOTE>
+
+<P>Resnick goes on to explain the mathematical principles that make
+these undesired results emerge from the situation.  But he stops there,
+without suggesting a solution.  That's because the obvious
+solution--leadership--would work against his desire to equate human society
+with ant society.  In the example of unintended segregation, people who
+understand how the result emerges from the individual behaviors could teach
+other people to understand it also.  Then, neighbors could voluntarily agree
+not to behave in the way that makes the segregation emerge.  At the same
+time, members of a local majority who understand the risk could be led to go
+out of their way to make their minority neighbors feel at home.  This is not
+telling people where to live by force of law, but it <EM>is</EM> leadership.
+
+<H2>Mindful / Mindless Is Not Central / Decentral</H2>
+
+<P>Resnick's central pedagogic point is about what he calls the ``centralized
+mindset'':  People expect every phenomenon to be the result of deliberate
+planning.  We ascribe social organization to insects, for example, when
+really each insect is separately following simple, built-in rules of
+behavior.  Religion is the same mistake applied to the creation of the
+world; according to the centralized mindset, if there is a world, there must
+have been Someone who planned it.  One way of expressing Resnick's point is
+that people expect phenomena to be the result of mindful behavior, whereas
+really many phenomena result from mindless, automatic processes.
+
+<P>As with several of the points discussed earlier, I think that this
+dichotomy between central, mindful, deliberate, conscious, planned behavior
+and decentral, mindless, automatic, unconscious behavior is completely
+appropriate in describing insects, traffic jams, and even neurons in the
+human brain.  But it is inappropriate when applied to the interactions of
+human beings.  One example is that Resnick gives a rather idiosyncratic
+description of the history of psychoanalysis, a description that I believe
+all the researchers he mentions would reject, because he equates ``Ego'' with
+``conscious, central, rational'' and ``Id'' with ``unconscious, decentral,
+irrational.'' It's true that in psychoanalytic theory the human consciousness
+is <EM>part of</EM> the Ego, but it's a very tiny part; most of the Ego (and
+certainly the part interesting to psychoanalysts) is unconscious.
+
+<P>Neither Papert nor Resnick would say ``planning is bad'' in so many
+words.  Indeed, both explicitly disclaim that position.  Nevertheless, their
+merging of the ideas ``centralist'' and ``planned'' is what leads both Papert
+and Resnick to embrace laissez-faire capitalism, deregulation, and the
+exaltation (as in Adam Smith) of individual greed, as the alternative to
+Soviet-style oppression.
+
+<P>Instead, Papert and Resnick would do better to study examples of
+democratic, decentral social structures that are nevertheless planned,
+mindful, and humane.  I've already mentioned the Paris Commune as an
+example; another that I like is the Society of Friends (the Quakers).  The
+Friends are the group that has most carefully developed the process of
+decision-making by consensus instead of by vote; <EM>everyone</EM> must agree to a
+proposed change of policy.  Decisions affecting the members of a particular
+Meeting House are made by those members directly.  Decisions for the Society
+as a whole are made bottom up; after consensus is reached at each Meeting,
+representatives are sent to regional and then national or international
+meetings to seek a wider consensus.  If there is no wider consensus, the
+issue is sent back to the local Meetings for further discussion.
+
+<P>When decisions are made by consensus and by direct participation of
+all members, there are no political parties and no professional
+politicians.  It's hard to change a major policy if everyone must agree to
+the change, but when the policy does change, the new policy is carried out
+wholeheartedly by the entire membership.  (This is what was wrong with
+Soviet planning: not that large scale plans were made, but that those plans
+were made top-down, by decree, and presented to a rank and file with no
+commitment to the plans.)  So, for example, in the United States before the
+Civil War, the Society of Friends was very late in joining the movement for
+the abolition of slavery, because for many years they had no consensus about
+slavery.  But once the Friends did decide to join the movement, they quickly
+became a leading organization in the struggle, because all of their members
+joined the fight with energy and dedication.  And of course it matters that
+the decisions of the Society are, because of the consensus process, always
+principled decisions, in sharp contrast to the <EM>quid pro quo</EM> that is typical
+of virtually all governmental processes.  In the language of this paper, the
+Society's decisions are democratic because they are both decentral and
+profoundly mindful, not at all like the ``invisible hand'' of Adam Smith's
+marketplace of individual greedy entrepreneurs.
+
+<H2>Conclusion</H2>
+
+<P>All of this is obvious; in some ways I'm embarrassed to be writing a paper
+saying so little.  But it seems not to be obvious in Massachusetts.  Seymour
+Papert and Mitchel Resnick will both, I think, be distressed to see
+themselves presented as allies of the right wing Republican Party in the
+United States.  (Indeed, Papert harshly criticizes then-President George
+Bush's educational plans in <CITE>The Children's Machine</CITE>.)  But their arguments
+support the right wing; they express themselves in the vocabulary of the
+right wing; and ultimately they embrace the main economic standard of the
+right wing, namely, that what matters is the efficiency of a nation's
+economy on average, rather than the position of the poorest members of a
+society.
+
+<P>You see, those ants and termites achieve their successes for the
+group as a whole through behaviors that sacrifice many individual members of
+the group.  If everyone looks for food randomly, rather than according to a
+plan, some individuals will, by chance, find a new food supply that benefits
+the entire group.  But other individuals will, by chance, not find food at
+all, and will starve.  For the process of evolution, by which insect
+behaviors develop, all that matters is the survival of the species; it's
+perfectly okay for individuals to die needlessly.  And that is precisely the
+Republican position about human beings; in fact, they're happy to have a
+class of poor people--what Marx called the reserve army of the unemployed--as
+a weapon to use against labor unions.
+
+<P>What makes Papert and Resnick's position both ironic and dangerous
+is that their newfound political allies, the ones from whom they learned the
+vocabulary of ``economic freedom'' and deregulation, are promoting freedom
+<EM>only</EM> for capitalists.  The same politicians, in the United States right
+now, are hard at work taking away reproductive freedom from women,
+establishing a state religion, chipping away at the constitutional
+protections against unwarranted search and seizure, and attacking freedom of
+speech.  Papert and Resnick, whatever their personal beliefs, are
+contributing to this attack on freedom by helping its architects pretend
+that Science is on their side.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/csls1-tiny.jpg b/js/games/nluqo.github.io/~bh/csls1-tiny.jpg
new file mode 100644
index 0000000..21457e5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/csls1-tiny.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/csls1.jpg b/js/games/nluqo.github.io/~bh/csls1.jpg
new file mode 100644
index 0000000..39b94c1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/csls1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/csls2-tiny.jpg b/js/games/nluqo.github.io/~bh/csls2-tiny.jpg
new file mode 100644
index 0000000..763e140
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/csls2-tiny.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/csls2.jpg b/js/games/nluqo.github.io/~bh/csls2.jpg
new file mode 100644
index 0000000..3d5aff5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/csls2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/csls3-tiny.jpg b/js/games/nluqo.github.io/~bh/csls3-tiny.jpg
new file mode 100644
index 0000000..6482297
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/csls3-tiny.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/csls3.jpg b/js/games/nluqo.github.io/~bh/csls3.jpg
new file mode 100644
index 0000000..d2655d4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/csls3.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/docs/html/usermanual.html b/js/games/nluqo.github.io/~bh/docs/html/usermanual.html
new file mode 100644
index 0000000..39a6002
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/docs/html/usermanual.html
@@ -0,0 +1,12160 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>BERKELEY LOGO 6.2</title>
+
+<meta name="description" content="BERKELEY LOGO 6.2">
+<meta name="keywords" content="BERKELEY LOGO 6.2">
+<meta name="resource-type" content="document">
+<meta name="distribution" content="global">
+<meta name="Generator" content="makeinfo">
+<link href="usermanual.html#Top" rel="start" title="Top">
+<link href="usermanual.html#INDEX" rel="index" title="INDEX">
+<link href="usermanual.html#SEC_Contents" rel="contents" title="Table of Contents">
+<link href="https://people.eecs.berkeley.edu/~bh/docs/html/dir.html#Top" rel="up" title="(dir)">
+<style type="text/css">
+<!--
+a.summary-letter {text-decoration: none}
+blockquote.indentedblock {margin-right: 0em}
+blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
+blockquote.smallquotation {font-size: smaller}
+div.display {margin-left: 3.2em}
+div.example {margin-left: 3.2em}
+div.lisp {margin-left: 3.2em}
+div.smalldisplay {margin-left: 3.2em}
+div.smallexample {margin-left: 3.2em}
+div.smalllisp {margin-left: 3.2em}
+kbd {font-style: oblique}
+pre.display {font-family: inherit}
+pre.format {font-family: inherit}
+pre.menu-comment {font-family: serif}
+pre.menu-preformatted {font-family: serif}
+pre.smalldisplay {font-family: inherit; font-size: smaller}
+pre.smallexample {font-size: smaller}
+pre.smallformat {font-family: inherit; font-size: smaller}
+pre.smalllisp {font-size: smaller}
+span.nolinebreak {white-space: nowrap}
+span.roman {font-family: initial; font-weight: normal}
+span.sansserif {font-family: sans-serif; font-weight: normal}
+ul.no-bullet {list-style: none}
+-->
+</style>
+
+
+</head>
+
+<body lang="en">
+<h1 class="settitle" align="center">BERKELEY LOGO 6.2</h1>
+
+
+
+
+
+ 
+
+<a name="SEC_Overview"></a>
+<h2 class="shortcontents-heading">Short Table of Contents</h2>
+
+<div class="shortcontents">
+<ul class="no-bullet">
+<li><a name="stoc-Introduction" href="usermanual.html#toc-Introduction">1 Introduction</a></li>
+<li><a name="stoc-Data-Structure-Primitives" href="usermanual.html#toc-Data-Structure-Primitives">2 Data Structure Primitives</a></li>
+<li><a name="stoc-Objects" href="usermanual.html#toc-Objects">3 Objects</a></li>
+<li><a name="stoc-Communication" href="usermanual.html#toc-Communication">4 Communication</a></li>
+<li><a name="stoc-Arithmetic" href="usermanual.html#toc-Arithmetic">5 Arithmetic</a></li>
+<li><a name="stoc-Logical-Operations" href="usermanual.html#toc-Logical-Operations">6 Logical Operations</a></li>
+<li><a name="stoc-Graphics" href="usermanual.html#toc-Graphics">7 Graphics</a></li>
+<li><a name="stoc-Workspace-Management" href="usermanual.html#toc-Workspace-Management">8 Workspace Management</a></li>
+<li><a name="stoc-Control-Structures" href="usermanual.html#toc-Control-Structures">9 Control Structures</a></li>
+<li><a name="stoc-Macros" href="usermanual.html#toc-Macros">10 Macros</a></li>
+<li><a name="stoc-Error-Processing" href="usermanual.html#toc-Error-Processing">11 Error Processing</a></li>
+<li><a name="stoc-Special-Variables" href="usermanual.html#toc-Special-Variables">12 Special Variables</a></li>
+<li><a name="stoc-Internationalization" href="usermanual.html#toc-Internationalization">13 Internationalization</a></li>
+<li><a name="stoc-INDEX-1" href="usermanual.html#toc-INDEX-1">INDEX</a></li>
+
+</ul>
+</div>
+
+<a name="SEC_Contents"></a>
+<h2 class="contents-heading">Table of Contents</h2>
+
+<div class="contents">
+<ul class="no-bullet">
+<li><a name="toc-Introduction" href="usermanual.html#INTRODUCTION">1 Introduction</a>
+<ul class="no-bullet">
+  <li><a name="toc-Overview" href="usermanual.html#OVERVIEW">1.1 Overview</a></li>
+  <li><a name="toc-Getter_002fSetter-Variable-Syntax" href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">1.2 Getter/Setter Variable Syntax</a></li>
+  <li><a name="toc-Entering-and-Leaving-Logo" href="usermanual.html#ENTERING-AND-LEAVING-LOGO">1.3 Entering and Leaving Logo</a></li>
+  <li><a name="toc-Tokenization" href="usermanual.html#TOKENIZATION">1.4 Tokenization</a></li>
+</ul></li>
+<li><a name="toc-Data-Structure-Primitives" href="usermanual.html#DATA-STRUCTURE-PRIMITIVES">2 Data Structure Primitives</a>
+<ul class="no-bullet">
+  <li><a name="toc-Constructors" href="usermanual.html#CONSTRUCTORS">2.1 Constructors</a>
+  <ul class="no-bullet">
+    <li><a name="toc-word" href="usermanual.html#WORD">word</a></li>
+    <li><a name="toc-list" href="usermanual.html#LIST">list</a></li>
+    <li><a name="toc-sentence" href="usermanual.html#SENTENCE">sentence</a></li>
+    <li><a name="toc-fput" href="usermanual.html#FPUT">fput</a></li>
+    <li><a name="toc-lput" href="usermanual.html#LPUT">lput</a></li>
+    <li><a name="toc-array" href="usermanual.html#ARRAY">array</a></li>
+    <li><a name="toc-mdarray" href="usermanual.html#MDARRAY">mdarray</a></li>
+    <li><a name="toc-listtoarray" href="usermanual.html#LISTTOARRAY">listtoarray</a></li>
+    <li><a name="toc-arraytolist" href="usermanual.html#ARRAYTOLIST">arraytolist</a></li>
+    <li><a name="toc-combine" href="usermanual.html#COMBINE">combine</a></li>
+    <li><a name="toc-reverse" href="usermanual.html#REVERSE">reverse</a></li>
+    <li><a name="toc-gensym" href="usermanual.html#GENSYM">gensym</a></li>
+  </ul></li>
+  <li><a name="toc-Data-Selectors" href="usermanual.html#SELECTORS">2.2 Data Selectors</a>
+  <ul class="no-bullet">
+    <li><a name="toc-first" href="usermanual.html#FIRST">first</a></li>
+    <li><a name="toc-firsts" href="usermanual.html#FIRSTS">firsts</a></li>
+    <li><a name="toc-last" href="usermanual.html#LAST">last</a></li>
+    <li><a name="toc-butfirst" href="usermanual.html#BUTFIRST">butfirst</a></li>
+    <li><a name="toc-butfirsts" href="usermanual.html#BUTFIRSTS">butfirsts</a></li>
+    <li><a name="toc-butlast" href="usermanual.html#BUTLAST">butlast</a></li>
+    <li><a name="toc-item" href="usermanual.html#ITEM">item</a></li>
+    <li><a name="toc-mditem" href="usermanual.html#MDITEM">mditem</a></li>
+    <li><a name="toc-pick" href="usermanual.html#PICK">pick</a></li>
+    <li><a name="toc-remove" href="usermanual.html#REMOVE">remove</a></li>
+    <li><a name="toc-remdup" href="usermanual.html#REMDUP">remdup</a></li>
+    <li><a name="toc-quoted" href="usermanual.html#QUOTED">quoted</a></li>
+  </ul></li>
+  <li><a name="toc-Data-Mutators" href="usermanual.html#MUTATORS">2.3 Data Mutators</a>
+  <ul class="no-bullet">
+    <li><a name="toc-setitem" href="usermanual.html#SETITEM">setitem</a></li>
+    <li><a name="toc-mdsetitem" href="usermanual.html#MDSETITEM">mdsetitem</a></li>
+    <li><a name="toc-_002esetfirst" href="usermanual.html#dSETFIRST">.setfirst</a></li>
+    <li><a name="toc-_002esetbf" href="usermanual.html#dSETBF">.setbf</a></li>
+    <li><a name="toc-_002esetitem" href="usermanual.html#dSETITEM">.setitem</a></li>
+    <li><a name="toc-push" href="usermanual.html#PUSH">push</a></li>
+    <li><a name="toc-pop" href="usermanual.html#POP">pop</a></li>
+    <li><a name="toc-queue" href="usermanual.html#QUEUE">queue</a></li>
+    <li><a name="toc-dequeue" href="usermanual.html#DEQUEUE">dequeue</a></li>
+  </ul></li>
+  <li><a name="toc-Predicates" href="usermanual.html#PREDICATES">2.4 Predicates</a>
+  <ul class="no-bullet">
+    <li><a name="toc-wordp" href="usermanual.html#WORDP">wordp</a></li>
+    <li><a name="toc-listp" href="usermanual.html#LISTP">listp</a></li>
+    <li><a name="toc-arrayp" href="usermanual.html#ARRAYP">arrayp</a></li>
+    <li><a name="toc-emptyp" href="usermanual.html#EMPTYP">emptyp</a></li>
+    <li><a name="toc-equalp" href="usermanual.html#EQUALP">equalp</a></li>
+    <li><a name="toc-notequalp" href="usermanual.html#NOTEQUALP">notequalp</a></li>
+    <li><a name="toc-beforep" href="usermanual.html#BEFOREP">beforep</a></li>
+    <li><a name="toc-_002eeq" href="usermanual.html#dEQ">.eq</a></li>
+    <li><a name="toc-memberp" href="usermanual.html#MEMBERP">memberp</a></li>
+    <li><a name="toc-substringp" href="usermanual.html#SUBSTRINGP">substringp</a></li>
+    <li><a name="toc-numberp" href="usermanual.html#NUMBERP">numberp</a></li>
+    <li><a name="toc-vbarredp" href="usermanual.html#VBARREDP">vbarredp</a></li>
+  </ul></li>
+  <li><a name="toc-Queries" href="usermanual.html#QUERIES">2.5 Queries</a>
+  <ul class="no-bullet">
+    <li><a name="toc-count" href="usermanual.html#COUNT">count</a></li>
+    <li><a name="toc-ascii" href="usermanual.html#ASCII">ascii</a></li>
+    <li><a name="toc-rawascii" href="usermanual.html#RAWASCII">rawascii</a></li>
+    <li><a name="toc-char" href="usermanual.html#CHAR">char</a></li>
+    <li><a name="toc-member" href="usermanual.html#MEMBER">member</a></li>
+    <li><a name="toc-lowercase" href="usermanual.html#LOWERCASE">lowercase</a></li>
+    <li><a name="toc-uppercase" href="usermanual.html#UPPERCASE">uppercase</a></li>
+    <li><a name="toc-standout" href="usermanual.html#STANDOUT">standout</a></li>
+    <li><a name="toc-parse" href="usermanual.html#PARSE">parse</a></li>
+    <li><a name="toc-runparse" href="usermanual.html#RUNPARSE">runparse</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Objects" href="usermanual.html#OBJECTS">3 Objects</a>
+<ul class="no-bullet">
+  <li><a name="toc-Constructors-1" href="usermanual.html#OBJECT-CONSTRUCTORS">3.1 Constructors</a>
+  <ul class="no-bullet">
+    <li><a name="toc-kindof" href="usermanual.html#KINDOF">kindof</a></li>
+    <li><a name="toc-something" href="usermanual.html#SOMETHING">something</a></li>
+    <li><a name="toc-oneof" href="usermanual.html#ONEOF">oneof</a></li>
+  </ul></li>
+  <li><a name="toc-Mutators" href="usermanual.html#OBJECT-MUTATORS">3.2 Mutators</a>
+  <ul class="no-bullet">
+    <li><a name="toc-exist" href="usermanual.html#EXIST">exist</a></li>
+    <li><a name="toc-have" href="usermanual.html#HAVE">have</a></li>
+    <li><a name="toc-havemake" href="usermanual.html#HAVEMAKE">havemake</a></li>
+  </ul></li>
+  <li><a name="toc-selectors" href="usermanual.html#OBJECT-SELECTORS">3.3 selectors</a>
+  <ul class="no-bullet">
+    <li><a name="toc-self" href="usermanual.html#SELF">self</a></li>
+    <li><a name="toc-parents" href="usermanual.html#PARENTS">parents</a></li>
+    <li><a name="toc-mynames" href="usermanual.html#MYNAMES">mynames</a></li>
+    <li><a name="toc-mynamep" href="usermanual.html#MYNAMEP">mynamep</a></li>
+    <li><a name="toc-myprocs" href="usermanual.html#MYPROCS">myprocs</a></li>
+    <li><a name="toc-myprocp" href="usermanual.html#MYPROCP">myprocp</a></li>
+  </ul></li>
+  <li><a name="toc-Messages" href="usermanual.html#MESSAGES">3.4 Messages</a>
+  <ul class="no-bullet">
+    <li><a name="toc-talkto" href="usermanual.html#TALKTO">talkto</a></li>
+    <li><a name="toc-ask" href="usermanual.html#ASK">ask</a></li>
+  </ul></li>
+  <li><a name="toc-Queries-1" href="usermanual.html#OBJECT-QUERIES">3.5 Queries</a>
+  <ul class="no-bullet">
+    <li><a name="toc-whosename" href="usermanual.html#WHOSENAME">whosename</a></li>
+    <li><a name="toc-whoseproc" href="usermanual.html#WHOSEPROC">whoseproc</a></li>
+  </ul></li>
+  <li><a name="toc-usual" href="usermanual.html#USUAL">3.6 usual</a></li>
+</ul></li>
+<li><a name="toc-Communication" href="usermanual.html#COMMUNICATION">4 Communication</a>
+<ul class="no-bullet">
+  <li><a name="toc-Transmitters" href="usermanual.html#TRANSMITTERS">4.1 Transmitters</a>
+  <ul class="no-bullet">
+    <li><a name="toc-print" href="usermanual.html#PRINT">print</a></li>
+    <li><a name="toc-type" href="usermanual.html#TYPE">type</a></li>
+    <li><a name="toc-show" href="usermanual.html#SHOW">show</a></li>
+  </ul></li>
+  <li><a name="toc-Receivers" href="usermanual.html#RECEIVERS">4.2 Receivers</a>
+  <ul class="no-bullet">
+    <li><a name="toc-readlist" href="usermanual.html#READLIST">readlist</a></li>
+    <li><a name="toc-readword" href="usermanual.html#READWORD">readword</a></li>
+    <li><a name="toc-readrawline" href="usermanual.html#READRAWLINE">readrawline</a></li>
+    <li><a name="toc-readchar" href="usermanual.html#READCHAR">readchar</a></li>
+    <li><a name="toc-readchars" href="usermanual.html#READCHARS">readchars</a></li>
+    <li><a name="toc-shell" href="usermanual.html#SHELL">shell</a></li>
+  </ul></li>
+  <li><a name="toc-File-Access" href="usermanual.html#FILE-ACCESS">4.3 File Access</a>
+  <ul class="no-bullet">
+    <li><a name="toc-setprefix" href="usermanual.html#SETPREFIX">setprefix</a></li>
+    <li><a name="toc-prefix" href="usermanual.html#PREFIX">prefix</a></li>
+    <li><a name="toc-openread" href="usermanual.html#OPENREAD">openread</a></li>
+    <li><a name="toc-openwrite" href="usermanual.html#OPENWRITE">openwrite</a></li>
+    <li><a name="toc-openappend" href="usermanual.html#OPENAPPEND">openappend</a></li>
+    <li><a name="toc-openupdate" href="usermanual.html#OPENUPDATE">openupdate</a></li>
+    <li><a name="toc-close" href="usermanual.html#CLOSE">close</a></li>
+    <li><a name="toc-allopen" href="usermanual.html#ALLOPEN">allopen</a></li>
+    <li><a name="toc-closeall" href="usermanual.html#CLOSEALL">closeall</a></li>
+    <li><a name="toc-erasefile" href="usermanual.html#ERASEFILE">erasefile</a></li>
+    <li><a name="toc-dribble" href="usermanual.html#DRIBBLE">dribble</a></li>
+    <li><a name="toc-nodribble" href="usermanual.html#NODRIBBLE">nodribble</a></li>
+    <li><a name="toc-setread" href="usermanual.html#SETREAD">setread</a></li>
+    <li><a name="toc-setwrite" href="usermanual.html#SETWRITE">setwrite</a></li>
+    <li><a name="toc-reader" href="usermanual.html#READER">reader</a></li>
+    <li><a name="toc-writer" href="usermanual.html#WRITER">writer</a></li>
+    <li><a name="toc-setreadpos" href="usermanual.html#SETREADPOS">setreadpos</a></li>
+    <li><a name="toc-setwritepos" href="usermanual.html#SETWRITEPOS">setwritepos</a></li>
+    <li><a name="toc-readpos" href="usermanual.html#READPOS">readpos</a></li>
+    <li><a name="toc-writepos" href="usermanual.html#WRITEPOS">writepos</a></li>
+    <li><a name="toc-eofp" href="usermanual.html#EOFP">eofp</a></li>
+    <li><a name="toc-filep" href="usermanual.html#FILEP">filep</a></li>
+  </ul></li>
+  <li><a name="toc-Terminal-Access" href="usermanual.html#TERMINAL-ACCESS">4.4 Terminal Access</a>
+  <ul class="no-bullet">
+    <li><a name="toc-keyp" href="usermanual.html#KEYP">keyp</a></li>
+    <li><a name="toc-linep" href="usermanual.html#LINEP">linep</a></li>
+    <li><a name="toc-cleartext" href="usermanual.html#CLEARTEXT">cleartext</a></li>
+    <li><a name="toc-setcursor" href="usermanual.html#SETCURSOR">setcursor</a></li>
+    <li><a name="toc-cursor" href="usermanual.html#CURSOR">cursor</a></li>
+    <li><a name="toc-setmargins" href="usermanual.html#SETMARGINS">setmargins</a></li>
+    <li><a name="toc-settextcolor" href="usermanual.html#SETTEXTCOLOR">settextcolor</a></li>
+    <li><a name="toc-increasefont" href="usermanual.html#INCREASEFONT">increasefont</a></li>
+    <li><a name="toc-settextsize" href="usermanual.html#SETTEXTSIZE">settextsize</a></li>
+    <li><a name="toc-textsize" href="usermanual.html#TEXTSIZE">textsize</a></li>
+    <li><a name="toc-setfont" href="usermanual.html#SETFONT">setfont</a></li>
+    <li><a name="toc-font" href="usermanual.html#FONT">font</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Arithmetic" href="usermanual.html#ARITHMETIC">5 Arithmetic</a>
+<ul class="no-bullet">
+  <li><a name="toc-Numeric-Operations" href="usermanual.html#NUMERIC-OPERATIONS">5.1 Numeric Operations</a>
+  <ul class="no-bullet">
+    <li><a name="toc-sum" href="usermanual.html#SUM">sum</a></li>
+    <li><a name="toc-difference" href="usermanual.html#DIFFERENCE">difference</a></li>
+    <li><a name="toc-minus" href="usermanual.html#MINUS">minus</a></li>
+    <li><a name="toc-product" href="usermanual.html#PRODUCT">product</a></li>
+    <li><a name="toc-quotient" href="usermanual.html#QUOTIENT">quotient</a></li>
+    <li><a name="toc-remainder" href="usermanual.html#REMAINDER">remainder</a></li>
+    <li><a name="toc-modulo" href="usermanual.html#MODULO">modulo</a></li>
+    <li><a name="toc-int" href="usermanual.html#INT">int</a></li>
+    <li><a name="toc-round" href="usermanual.html#ROUND">round</a></li>
+    <li><a name="toc-sqrt" href="usermanual.html#SQRT">sqrt</a></li>
+    <li><a name="toc-power" href="usermanual.html#POWER">power</a></li>
+    <li><a name="toc-exp" href="usermanual.html#EXP">exp</a></li>
+    <li><a name="toc-log10" href="usermanual.html#LOG10">log10</a></li>
+    <li><a name="toc-ln" href="usermanual.html#LN">ln</a></li>
+    <li><a name="toc-sin" href="usermanual.html#SIN">sin</a></li>
+    <li><a name="toc-radsin" href="usermanual.html#RADSIN">radsin</a></li>
+    <li><a name="toc-cos" href="usermanual.html#COS">cos</a></li>
+    <li><a name="toc-radcos" href="usermanual.html#RADCOS">radcos</a></li>
+    <li><a name="toc-arctan" href="usermanual.html#ARCTAN">arctan</a></li>
+    <li><a name="toc-radarctan" href="usermanual.html#RADARCTAN">radarctan</a></li>
+    <li><a name="toc-iseq" href="usermanual.html#ISEQ">iseq</a></li>
+    <li><a name="toc-rseq" href="usermanual.html#RSEQ">rseq</a></li>
+  </ul></li>
+  <li><a name="toc-Numeric-Predicates" href="usermanual.html#NUMERIC-PREDICATES">5.2 Numeric Predicates</a>
+  <ul class="no-bullet">
+    <li><a name="toc-lessp" href="usermanual.html#LESSP">lessp</a></li>
+    <li><a name="toc-greaterp" href="usermanual.html#GREATERP">greaterp</a></li>
+    <li><a name="toc-lessequalp" href="usermanual.html#LESSEQUALP">lessequalp</a></li>
+    <li><a name="toc-greaterequalp" href="usermanual.html#GREATEREQUALP">greaterequalp</a></li>
+  </ul></li>
+  <li><a name="toc-Random-Numbers" href="usermanual.html#RANDOM-NUMBERS">5.3 Random Numbers</a>
+  <ul class="no-bullet">
+    <li><a name="toc-random" href="usermanual.html#RANDOM">random</a></li>
+    <li><a name="toc-rerandom" href="usermanual.html#RERANDOM">rerandom</a></li>
+  </ul></li>
+  <li><a name="toc-Print-Formatting" href="usermanual.html#PRINT-FORMATTING">5.4 Print Formatting</a>
+  <ul class="no-bullet">
+    <li><a name="toc-form" href="usermanual.html#FORM">form</a></li>
+  </ul></li>
+  <li><a name="toc-Bitwise-Operations" href="usermanual.html#BITWISE-OPERATIONS">5.5 Bitwise Operations</a>
+  <ul class="no-bullet">
+    <li><a name="toc-bitand" href="usermanual.html#BITAND">bitand</a></li>
+    <li><a name="toc-bitor" href="usermanual.html#BITOR">bitor</a></li>
+    <li><a name="toc-bitxor" href="usermanual.html#BITXOR">bitxor</a></li>
+    <li><a name="toc-bitnot" href="usermanual.html#BITNOT">bitnot</a></li>
+    <li><a name="toc-ashift" href="usermanual.html#ASHIFT">ashift</a></li>
+    <li><a name="toc-lshift" href="usermanual.html#LSHIFT">lshift</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Logical-Operations" href="usermanual.html#LOGICAL-OPERATIONS">6 Logical Operations</a>
+<ul class="no-bullet">
+  <li><a name="toc-and" href="usermanual.html#AND">and</a>
+  <ul class="no-bullet">
+    <li><a name="toc-or" href="usermanual.html#OR">or</a></li>
+    <li><a name="toc-not" href="usermanual.html#NOT">not</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Graphics" href="usermanual.html#GRAPHICS">7 Graphics</a>
+<ul class="no-bullet">
+  <li><a name="toc-Turtle-Motion" href="usermanual.html#TURTLE-MOTION">7.1 Turtle Motion</a>
+  <ul class="no-bullet">
+    <li><a name="toc-forward" href="usermanual.html#FORWARD">forward</a></li>
+    <li><a name="toc-back" href="usermanual.html#BACK">back</a></li>
+    <li><a name="toc-left" href="usermanual.html#LEFT">left</a></li>
+    <li><a name="toc-right" href="usermanual.html#RIGHT">right</a></li>
+    <li><a name="toc-setpos" href="usermanual.html#SETPOS">setpos</a></li>
+    <li><a name="toc-setxy" href="usermanual.html#SETXY">setxy</a></li>
+    <li><a name="toc-setx" href="usermanual.html#SETX">setx</a></li>
+    <li><a name="toc-sety" href="usermanual.html#SETY">sety</a></li>
+    <li><a name="toc-setheading" href="usermanual.html#SETHEADING">setheading</a></li>
+    <li><a name="toc-home" href="usermanual.html#HOME">home</a></li>
+    <li><a name="toc-arc" href="usermanual.html#ARC">arc</a></li>
+  </ul></li>
+  <li><a name="toc-Turtle-Motion-Queries" href="usermanual.html#TURTLE-MOTION-QUERIES">7.2 Turtle Motion Queries</a>
+  <ul class="no-bullet">
+    <li><a name="toc-pos" href="usermanual.html#POS">pos</a></li>
+    <li><a name="toc-xcor" href="usermanual.html#XCOR">xcor</a></li>
+    <li><a name="toc-ycor" href="usermanual.html#YCOR">ycor</a></li>
+    <li><a name="toc-heading" href="usermanual.html#HEADING">heading</a></li>
+    <li><a name="toc-towards" href="usermanual.html#TOWARDS">towards</a></li>
+    <li><a name="toc-scrunch" href="usermanual.html#SCRUNCH">scrunch</a></li>
+  </ul></li>
+  <li><a name="toc-Turtle-and-Window-Control" href="usermanual.html#TURTLE-AND-WINDOW-CONTROL">7.3 Turtle and Window Control</a>
+  <ul class="no-bullet">
+    <li><a name="toc-showturtle" href="usermanual.html#SHOWTURTLE">showturtle</a></li>
+    <li><a name="toc-hideturtle" href="usermanual.html#HIDETURTLE">hideturtle</a></li>
+    <li><a name="toc-clean" href="usermanual.html#CLEAN">clean</a></li>
+    <li><a name="toc-clearscreen" href="usermanual.html#CLEARSCREEN">clearscreen</a></li>
+    <li><a name="toc-wrap" href="usermanual.html#WRAP">wrap</a></li>
+    <li><a name="toc-window" href="usermanual.html#WINDOW">window</a></li>
+    <li><a name="toc-fence" href="usermanual.html#FENCE">fence</a></li>
+    <li><a name="toc-fill" href="usermanual.html#FILL">fill</a></li>
+    <li><a name="toc-filled" href="usermanual.html#FILLED">filled</a></li>
+    <li><a name="toc-label" href="usermanual.html#LABEL">label</a></li>
+    <li><a name="toc-setlabelheight" href="usermanual.html#SETLABELHEIGHT">setlabelheight</a></li>
+    <li><a name="toc-textscreen" href="usermanual.html#TEXTSCREEN">textscreen</a></li>
+    <li><a name="toc-fullscreen" href="usermanual.html#FULLSCREEN">fullscreen</a></li>
+    <li><a name="toc-splitscreen" href="usermanual.html#SPLITSCREEN">splitscreen</a></li>
+    <li><a name="toc-setscrunch" href="usermanual.html#SETSCRUNCH">setscrunch</a></li>
+    <li><a name="toc-refresh" href="usermanual.html#REFRESH">refresh</a></li>
+    <li><a name="toc-norefresh" href="usermanual.html#NOREFRESH">norefresh</a></li>
+  </ul></li>
+  <li><a name="toc-Turtle-and-Window-Queries" href="usermanual.html#TURTLE-AND-WINDOW-QUERIES">7.4 Turtle and Window Queries</a>
+  <ul class="no-bullet">
+    <li><a name="toc-shownp" href="usermanual.html#SHOWNP">shownp</a></li>
+    <li><a name="toc-screenmode" href="usermanual.html#SCREENMODE">screenmode</a></li>
+    <li><a name="toc-turtlemode" href="usermanual.html#TURTLEMODE">turtlemode</a></li>
+    <li><a name="toc-labelsize" href="usermanual.html#LABELSIZE">labelsize</a></li>
+  </ul></li>
+  <li><a name="toc-Pen-and-Background-Control" href="usermanual.html#PEN-AND-BACKGROUND-CONTROL">7.5 Pen and Background Control</a>
+  <ul class="no-bullet">
+    <li><a name="toc-pendown" href="usermanual.html#PENDOWN">pendown</a></li>
+    <li><a name="toc-penup" href="usermanual.html#PENUP">penup</a></li>
+    <li><a name="toc-penpaint" href="usermanual.html#PENPAINT">penpaint</a></li>
+    <li><a name="toc-penerase" href="usermanual.html#PENERASE">penerase</a></li>
+    <li><a name="toc-penreverse" href="usermanual.html#PENREVERSE">penreverse</a></li>
+    <li><a name="toc-setpencolor" href="usermanual.html#SETPENCOLOR">setpencolor</a></li>
+    <li><a name="toc-setpalette" href="usermanual.html#SETPALETTE">setpalette</a></li>
+    <li><a name="toc-setpensize" href="usermanual.html#SETPENSIZE">setpensize</a></li>
+    <li><a name="toc-setpenpattern" href="usermanual.html#SETPENPATTERN">setpenpattern</a></li>
+    <li><a name="toc-setpen" href="usermanual.html#SETPEN">setpen</a></li>
+    <li><a name="toc-setbackground" href="usermanual.html#SETBACKGROUND">setbackground</a></li>
+  </ul></li>
+  <li><a name="toc-Pen-Queries" href="usermanual.html#PEN-QUERIES">7.6 Pen Queries</a>
+  <ul class="no-bullet">
+    <li><a name="toc-pendownp" href="usermanual.html#PENDOWNP">pendownp</a></li>
+    <li><a name="toc-penmode" href="usermanual.html#PENMODE">penmode</a></li>
+    <li><a name="toc-pencolor" href="usermanual.html#PENCOLOR">pencolor</a></li>
+    <li><a name="toc-palette" href="usermanual.html#PALETTE">palette</a></li>
+    <li><a name="toc-pensize" href="usermanual.html#PENSIZE">pensize</a></li>
+    <li><a name="toc-pen" href="usermanual.html#PEN">pen</a></li>
+    <li><a name="toc-background" href="usermanual.html#BACKGROUND">background</a></li>
+  </ul></li>
+  <li><a name="toc-Saving-and-Loading-Pictures" href="usermanual.html#SAVING-AND-LOADING-PICTURES">7.7 Saving and Loading Pictures</a>
+  <ul class="no-bullet">
+    <li><a name="toc-savepict" href="usermanual.html#SAVEPICT">savepict</a></li>
+    <li><a name="toc-loadpict" href="usermanual.html#LOADPICT">loadpict</a></li>
+    <li><a name="toc-epspict" href="usermanual.html#EPSPICT">epspict</a></li>
+  </ul></li>
+  <li><a name="toc-Mouse-Queries" href="usermanual.html#MOUSE-QUERIES">7.8 Mouse Queries</a>
+  <ul class="no-bullet">
+    <li><a name="toc-mousepos" href="usermanual.html#MOUSEPOS">mousepos</a></li>
+    <li><a name="toc-clickpos" href="usermanual.html#CLICKPOS">clickpos</a></li>
+    <li><a name="toc-buttonp" href="usermanual.html#BUTTONP">buttonp</a></li>
+    <li><a name="toc-button" href="usermanual.html#BUTTON">button</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Workspace-Management" href="usermanual.html#WORKSPACE-MANAGEMENT">8 Workspace Management</a>
+<ul class="no-bullet">
+  <li><a name="toc-Procedure-Definition" href="usermanual.html#PROCEDURE-DEFINITION">8.1 Procedure Definition</a>
+  <ul class="no-bullet">
+    <li><a name="toc-to" href="usermanual.html#TO">to</a></li>
+    <li><a name="toc-define" href="usermanual.html#DEFINE">define</a></li>
+    <li><a name="toc-text" href="usermanual.html#TEXT">text</a></li>
+    <li><a name="toc-fulltext" href="usermanual.html#FULLTEXT">fulltext</a></li>
+    <li><a name="toc-copydef" href="usermanual.html#COPYDEF">copydef</a></li>
+  </ul></li>
+  <li><a name="toc-Variable-Definition" href="usermanual.html#VARIABLE-DEFINITION">8.2 Variable Definition</a>
+  <ul class="no-bullet">
+    <li><a name="toc-make" href="usermanual.html#MAKE">make</a></li>
+    <li><a name="toc-name" href="usermanual.html#NAME">name</a></li>
+    <li><a name="toc-local" href="usermanual.html#LOCAL">local</a></li>
+    <li><a name="toc-localmake" href="usermanual.html#LOCALMAKE">localmake</a></li>
+    <li><a name="toc-thing" href="usermanual.html#THING">thing</a></li>
+    <li><a name="toc-global" href="usermanual.html#GLOBAL">global</a></li>
+  </ul></li>
+  <li><a name="toc-Property-Lists" href="usermanual.html#PROPERTY-LISTS">8.3 Property Lists</a>
+  <ul class="no-bullet">
+    <li><a name="toc-pprop" href="usermanual.html#PPROP">pprop</a></li>
+    <li><a name="toc-gprop" href="usermanual.html#GPROP">gprop</a></li>
+    <li><a name="toc-remprop" href="usermanual.html#REMPROP">remprop</a></li>
+    <li><a name="toc-plist" href="usermanual.html#PLIST">plist</a></li>
+  </ul></li>
+  <li><a name="toc-Workspace-Predicates" href="usermanual.html#WORKSPACE-PREDICATES">8.4 Workspace Predicates</a>
+  <ul class="no-bullet">
+    <li><a name="toc-procedurep" href="usermanual.html#PROCEDUREP">procedurep</a></li>
+    <li><a name="toc-primitivep" href="usermanual.html#PRIMITIVEP">primitivep</a></li>
+    <li><a name="toc-definedp" href="usermanual.html#DEFINEDP">definedp</a></li>
+    <li><a name="toc-namep" href="usermanual.html#NAMEP">namep</a></li>
+    <li><a name="toc-plistp" href="usermanual.html#PLISTP">plistp</a></li>
+  </ul></li>
+  <li><a name="toc-Workspace-Queries" href="usermanual.html#WORKSPACE-QUERIES">8.5 Workspace Queries</a>
+  <ul class="no-bullet">
+    <li><a name="toc-contents" href="usermanual.html#CONTENTS">contents</a></li>
+    <li><a name="toc-buried" href="usermanual.html#BURIED">buried</a></li>
+    <li><a name="toc-traced" href="usermanual.html#TRACED">traced</a></li>
+    <li><a name="toc-stepped" href="usermanual.html#STEPPED">stepped</a></li>
+    <li><a name="toc-procedures" href="usermanual.html#PROCEDURES">procedures</a></li>
+    <li><a name="toc-primitives" href="usermanual.html#PRIMITIVES">primitives</a></li>
+    <li><a name="toc-names" href="usermanual.html#NAMES">names</a></li>
+    <li><a name="toc-plists" href="usermanual.html#PLISTS">plists</a></li>
+    <li><a name="toc-namelist" href="usermanual.html#NAMELIST">namelist</a></li>
+    <li><a name="toc-pllist" href="usermanual.html#PLLIST">pllist</a></li>
+    <li><a name="toc-arity" href="usermanual.html#ARITY">arity</a></li>
+    <li><a name="toc-nodes" href="usermanual.html#NODES">nodes</a></li>
+  </ul></li>
+  <li><a name="toc-Workspace-Inspection" href="usermanual.html#WORKSPACE-INSPECTION">8.6 Workspace Inspection</a>
+  <ul class="no-bullet">
+    <li><a name="toc-po" href="usermanual.html#PO">po</a></li>
+    <li><a name="toc-poall" href="usermanual.html#POALL">poall</a></li>
+    <li><a name="toc-pops" href="usermanual.html#POPS">pops</a></li>
+    <li><a name="toc-pons" href="usermanual.html#PONS">pons</a></li>
+    <li><a name="toc-popls" href="usermanual.html#POPLS">popls</a></li>
+    <li><a name="toc-pon" href="usermanual.html#PON">pon</a></li>
+    <li><a name="toc-popl" href="usermanual.html#POPL">popl</a></li>
+    <li><a name="toc-pot" href="usermanual.html#POT">pot</a></li>
+    <li><a name="toc-pots" href="usermanual.html#POTS">pots</a></li>
+  </ul></li>
+  <li><a name="toc-Workspace-Control" href="usermanual.html#WORKSPACE-CONTROL">8.7 Workspace Control</a>
+  <ul class="no-bullet">
+    <li><a name="toc-erase" href="usermanual.html#ERASE">erase</a></li>
+    <li><a name="toc-erall" href="usermanual.html#ERALL">erall</a></li>
+    <li><a name="toc-erps" href="usermanual.html#ERPS">erps</a></li>
+    <li><a name="toc-erns" href="usermanual.html#ERNS">erns</a></li>
+    <li><a name="toc-erpls" href="usermanual.html#ERPLS">erpls</a></li>
+    <li><a name="toc-ern" href="usermanual.html#ERN">ern</a></li>
+    <li><a name="toc-erpl" href="usermanual.html#ERPL">erpl</a></li>
+    <li><a name="toc-bury" href="usermanual.html#BURY">bury</a></li>
+    <li><a name="toc-buryall" href="usermanual.html#BURYALL">buryall</a></li>
+    <li><a name="toc-buryname" href="usermanual.html#BURYNAME">buryname</a></li>
+    <li><a name="toc-unbury" href="usermanual.html#UNBURY">unbury</a></li>
+    <li><a name="toc-unburyall" href="usermanual.html#UNBURYALL">unburyall</a></li>
+    <li><a name="toc-unburyname" href="usermanual.html#UNBURYNAME">unburyname</a></li>
+    <li><a name="toc-buriedp" href="usermanual.html#BURIEDP">buriedp</a></li>
+    <li><a name="toc-trace" href="usermanual.html#TRACE">trace</a></li>
+    <li><a name="toc-untrace" href="usermanual.html#UNTRACE">untrace</a></li>
+    <li><a name="toc-tracedp" href="usermanual.html#TRACEDP">tracedp</a></li>
+    <li><a name="toc-step" href="usermanual.html#STEP">step</a></li>
+    <li><a name="toc-unstep" href="usermanual.html#UNSTEP">unstep</a></li>
+    <li><a name="toc-steppedp" href="usermanual.html#STEPPEDP">steppedp</a></li>
+    <li><a name="toc-edit" href="usermanual.html#EDIT">edit</a></li>
+    <li><a name="toc-editfile" href="usermanual.html#EDITFILE">editfile</a></li>
+    <li><a name="toc-edall" href="usermanual.html#EDALL">edall</a></li>
+    <li><a name="toc-edps" href="usermanual.html#EDPS">edps</a></li>
+    <li><a name="toc-edns" href="usermanual.html#EDNS">edns</a></li>
+    <li><a name="toc-edpls" href="usermanual.html#EDPLS">edpls</a></li>
+    <li><a name="toc-edn" href="usermanual.html#EDN">edn</a></li>
+    <li><a name="toc-edpl" href="usermanual.html#EDPL">edpl</a></li>
+    <li><a name="toc-save" href="usermanual.html#SAVE">save</a></li>
+    <li><a name="toc-savel" href="usermanual.html#SAVEL">savel</a></li>
+    <li><a name="toc-load" href="usermanual.html#LOAD">load</a></li>
+    <li><a name="toc-cslsload" href="usermanual.html#CSLSLOAD">cslsload</a></li>
+    <li><a name="toc-help" href="usermanual.html#HELP">help</a></li>
+    <li><a name="toc-seteditor" href="usermanual.html#SETEDITOR">seteditor</a></li>
+    <li><a name="toc-setlibloc" href="usermanual.html#SETLIBLOC">setlibloc</a></li>
+    <li><a name="toc-setcslsloc" href="usermanual.html#SETCSLSLOC">setcslsloc</a></li>
+    <li><a name="toc-sethelploc" href="usermanual.html#SETHELPLOC">sethelploc</a></li>
+    <li><a name="toc-settemploc" href="usermanual.html#SETTEMPLOC">settemploc</a></li>
+    <li><a name="toc-gc" href="usermanual.html#GC">gc</a></li>
+    <li><a name="toc-_002esetsegmentsize" href="usermanual.html#g_t_002eSETSEGMENTSIZE">.setsegmentsize</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Control-Structures" href="usermanual.html#CONTROL-STRUCTURES">9 Control Structures</a>
+<ul class="no-bullet">
+  <li><a name="toc-Control" href="usermanual.html#CONTROL">9.1 Control</a>
+  <ul class="no-bullet">
+    <li><a name="toc-run" href="usermanual.html#RUN">run</a></li>
+    <li><a name="toc-runresult" href="usermanual.html#RUNRESULT">runresult</a></li>
+    <li><a name="toc-repeat" href="usermanual.html#REPEAT">repeat</a></li>
+    <li><a name="toc-forever" href="usermanual.html#FOREVER">forever</a></li>
+    <li><a name="toc-repcount" href="usermanual.html#REPCOUNT">repcount</a></li>
+    <li><a name="toc-if" href="usermanual.html#IF">if</a></li>
+    <li><a name="toc-ifelse" href="usermanual.html#IFELSE">ifelse</a></li>
+    <li><a name="toc-test" href="usermanual.html#TEST">test</a></li>
+    <li><a name="toc-iftrue" href="usermanual.html#IFTRUE">iftrue</a></li>
+    <li><a name="toc-iffalse" href="usermanual.html#IFFALSE">iffalse</a></li>
+    <li><a name="toc-stop" href="usermanual.html#STOP">stop</a></li>
+    <li><a name="toc-output" href="usermanual.html#OUTPUT">output</a></li>
+    <li><a name="toc-catch" href="usermanual.html#CATCH">catch</a></li>
+    <li><a name="toc-throw" href="usermanual.html#THROW">throw</a></li>
+    <li><a name="toc-error" href="usermanual.html#ERROR">error</a></li>
+    <li><a name="toc-pause" href="usermanual.html#PAUSE">pause</a></li>
+    <li><a name="toc-continue" href="usermanual.html#CONTINUE">continue</a></li>
+    <li><a name="toc-wait" href="usermanual.html#WAIT">wait</a></li>
+    <li><a name="toc-bye" href="usermanual.html#BYE">bye</a></li>
+    <li><a name="toc-_002emaybeoutput" href="usermanual.html#dMAYBEOUTPUT">.maybeoutput</a></li>
+    <li><a name="toc-goto" href="usermanual.html#GOTO">goto</a></li>
+    <li><a name="toc-tag" href="usermanual.html#TAG">tag</a></li>
+    <li><a name="toc-ignore" href="usermanual.html#IGNORE">ignore</a></li>
+    <li><a name="toc-_0060" href="usermanual.html#back_002dquote">&lsquo;</a></li>
+    <li><a name="toc-for" href="usermanual.html#FOR">for</a></li>
+    <li><a name="toc-do_002ewhile" href="usermanual.html#DOdWHILE">do.while</a></li>
+    <li><a name="toc-while" href="usermanual.html#WHILE">while</a></li>
+    <li><a name="toc-do_002euntil" href="usermanual.html#DOdUNTIL">do.until</a></li>
+    <li><a name="toc-until" href="usermanual.html#UNTIL">until</a></li>
+    <li><a name="toc-case" href="usermanual.html#CASE">case</a></li>
+    <li><a name="toc-cond" href="usermanual.html#COND">cond</a></li>
+  </ul></li>
+  <li><a name="toc-Template_002dbased-Iteration" href="usermanual.html#TEMPLATE_002dBASED-ITERATION">9.2 Template-based Iteration</a>
+  <ul class="no-bullet">
+    <li><a name="toc-apply" href="usermanual.html#APPLY">apply</a></li>
+    <li><a name="toc-invoke" href="usermanual.html#INVOKE">invoke</a></li>
+    <li><a name="toc-foreach" href="usermanual.html#FOREACH">foreach</a></li>
+    <li><a name="toc-map" href="usermanual.html#MAP">map</a></li>
+    <li><a name="toc-map_002ese" href="usermanual.html#MAPdSE">map.se</a></li>
+    <li><a name="toc-filter" href="usermanual.html#FILTER">filter</a></li>
+    <li><a name="toc-find" href="usermanual.html#FIND">find</a></li>
+    <li><a name="toc-reduce" href="usermanual.html#REDUCE">reduce</a></li>
+    <li><a name="toc-crossmap" href="usermanual.html#CROSSMAP">crossmap</a></li>
+    <li><a name="toc-cascade" href="usermanual.html#CASCADE">cascade</a></li>
+    <li><a name="toc-cascade_002e2" href="usermanual.html#CASCADEd2">cascade.2</a></li>
+    <li><a name="toc-transfer" href="usermanual.html#TRANSFER">transfer</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Macros" href="usermanual.html#MACROS">10 Macros</a>
+<ul class="no-bullet">
+  <li><a name="toc-_002emacro" href="usermanual.html#dMACRO">.macro</a>
+  <ul class="no-bullet">
+    <li><a name="toc-_002edefmacro" href="usermanual.html#dDEFMACRO">.defmacro</a></li>
+    <li><a name="toc-macrop" href="usermanual.html#MACROP">macrop</a></li>
+    <li><a name="toc-macroexpand" href="usermanual.html#MACROEXPAND">macroexpand</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Error-Processing" href="usermanual.html#ERROR-PROCESSING">11 Error Processing</a>
+<ul class="no-bullet">
+  <li><a name="toc-Error-Codes" href="usermanual.html#ERROR-CODES">11.1 Error Codes</a></li>
+</ul></li>
+<li><a name="toc-Special-Variables" href="usermanual.html#SPECIAL-VARIABLES">12 Special Variables</a>
+<ul class="no-bullet">
+  <li><a name="toc-allowgetset" href="usermanual.html#ALLOWGETSET">allowgetset</a>
+  <ul class="no-bullet">
+    <li><a name="toc-buttonact" href="usermanual.html#BUTTONACT">buttonact</a></li>
+    <li><a name="toc-caseignoredp" href="usermanual.html#CASEIGNOREDP">caseignoredp</a></li>
+    <li><a name="toc-commandline" href="usermanual.html#COMMANDLINE">commandline</a></li>
+    <li><a name="toc-erract" href="usermanual.html#ERRACT">erract</a></li>
+    <li><a name="toc-fullprintp" href="usermanual.html#FULLPRINTP">fullprintp</a></li>
+    <li><a name="toc-keyact" href="usermanual.html#KEYACT">keyact</a></li>
+    <li><a name="toc-loadnoisily" href="usermanual.html#LOADNOISILY">loadnoisily</a></li>
+    <li><a name="toc-printdepthlimit" href="usermanual.html#PRINTDEPTHLIMIT">printdepthlimit</a></li>
+    <li><a name="toc-printwidthlimit" href="usermanual.html#PRINTWIDTHLIMIT">printwidthlimit</a></li>
+    <li><a name="toc-redefp" href="usermanual.html#REDEFP">redefp</a></li>
+    <li><a name="toc-startup" href="usermanual.html#STARTUP">startup</a></li>
+    <li><a name="toc-unburyonedit" href="usermanual.html#UNBURYONEDIT">unburyonedit</a></li>
+    <li><a name="toc-usealternatenames" href="usermanual.html#USEALTERNATENAMES">usealternatenames</a></li>
+    <li><a name="toc-logoversion" href="usermanual.html#LOGOVERSION">logoversion</a></li>
+    <li><a name="toc-logoplatform" href="usermanual.html#LOGOPLATFORM">logoplatform</a></li>
+  </ul></li>
+</ul></li>
+<li><a name="toc-Internationalization" href="usermanual.html#INTERNATIONALIZATION">13 Internationalization</a></li>
+<li><a name="toc-INDEX-1" href="usermanual.html#INDEX">INDEX</a></li>
+
+</ul>
+</div>
+
+
+
+<a name="Top"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#INTRODUCTION" accesskey="n" rel="next">INTRODUCTION</a>, Previous: <a href="https://people.eecs.berkeley.edu/~bh/docs/html/dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="https://people.eecs.berkeley.edu/~bh/docs/html/dir.html#Top" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<h1 class="node-heading">Top</h1>
+
+
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#INTRODUCTION" accesskey="1">INTRODUCTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="2">DATA STRUCTURE PRIMITIVES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OBJECTS" accesskey="3">OBJECTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COMMUNICATION" accesskey="4">COMMUNICATION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ARITHMETIC" accesskey="5">ARITHMETIC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="6">LOGICAL OPERATIONS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GRAPHICS" accesskey="7">GRAPHICS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="8">WORKSPACE MANAGEMENT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="9">CONTROL STRUCTURES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MACROS">MACROS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERROR-PROCESSING">ERROR PROCESSING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SPECIAL-VARIABLES">SPECIAL VARIABLES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#INTERNATIONALIZATION">INTERNATIONALIZATION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#INDEX">INDEX</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="INTRODUCTION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="n" rel="next">DATA STRUCTURE PRIMITIVES</a>, Previous: <a href="usermanual.html#Top" accesskey="p" rel="prev">Top</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Introduction"></a>
+<h2 class="chapter">1 Introduction</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OVERVIEW" accesskey="1">OVERVIEW</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX" accesskey="2">GETTER/SETTER VARIBLE SYNTAX</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ENTERING-AND-LEAVING-LOGO" accesskey="3">ENTERING AND LEAVING LOGO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TOKENIZATION" accesskey="4">TOKENIZATION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="OVERVIEW"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX" accesskey="n" rel="next">GETTER/SETTER VARIBLE SYNTAX</a>, Previous: <a href="usermanual.html#INTRODUCTION" accesskey="p" rel="prev">INTRODUCTION</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Overview"></a>
+<h3 class="section">1.1 Overview</h3>
+
+<a name="index-Copyright"></a>
+<a name="index-Computer_005fScience_005fLogo_005fStyle"></a>
+
+<p>Copyright &copy; 1993 by the Regents of the University of California
+</p>
+<p>This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+</p>
+<p>This program is distributed in the hope that it will be useful,
+but <var>WITHOUT ANY WARRANTY</var>; without even the implied warranty of
+<var>MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE</var>.  See the
+GNU General Public License for more details.
+</p>
+<p>You should have received a copy of the GNU General Public License
+along with this program.  If not, see &lt;https://www.gnu.org/licenses/&gt;.
+</p>
+<p>This is a program that is still being written.  Many things are missing,
+including adequate documentation.  This manual assumes that you already know
+how to program in Logo, and merely presents the details of this new
+implementation.  
+</p>
+<p>Read <cite>Computer Science Logo Style, Volume 1: 
+ Symbolic Computing</cite> by Brian Harvey (MIT Press, 1997) for a tutorial
+on Logo programming with emphasis on symbolic computation.
+</p>
+<p>Here are the special features of this dialect of Logo:
+</p>
+<div class="display">
+<pre class="display">
+
+Source file compatible among Unix, DOS, Windows, and Mac platforms.
+
+Random-access arrays.
+
+Variable number of inputs to user-defined procedures.
+
+Mutators for list structure (dangerous).
+
+Pause on error, and other improvements to error handling.
+
+Comments and continuation lines; formatting is preserved when
+procedure definitions are saved or edited.
+
+Terrapin-style tokenization (e.g., [2+3] is a list with one member)
+but LCSI-style syntax (no special forms except TO).  The best of
+both worlds.
+
+First-class instruction and expression templates (see APPLY).
+
+Macros.
+</pre></div>
+
+<p>Features <strong>not</strong> found in Berkeley Logo include robotics, music,
+animation, parallelism, and multimedia.  For those, buy a commercial version.
+</p>
+
+<hr>
+<a name="GETTER_002fSETTER-VARIBLE-SYNTAX"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ENTERING-AND-LEAVING-LOGO" accesskey="n" rel="next">ENTERING AND LEAVING LOGO</a>, Previous: <a href="usermanual.html#OVERVIEW" accesskey="p" rel="prev">OVERVIEW</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Getter_002fSetter-Variable-Syntax"></a>
+<h3 class="section">1.2 Getter/Setter Variable Syntax</h3>
+<a name="index-getter"></a>
+<a name="index-setter"></a>
+
+<p>Logo distinguishes <var>procedures</var> from <var>variables</var>.  A procedure
+is a set of instructions to carry out some computation; a variable is a
+named container that holds a data value such as a number, word, list, or
+array.
+</p>
+<p>In traditional Logo syntax, a non-numeric word typed without punctuation
+represents a request to invoke the procedure named by that word.  A word
+typed with a preceding quotation mark represents the word itself.  For
+example, in the instruction
+</p><div class="example">
+<pre class="example">	PRINT FIRST &quot;WORD
+</pre></div>
+<p>the procedures named <code>FIRST</code> and <code>PRINT</code> are invoked, but the
+procedure named <var>WORD</var> is not invoked; the word <var>W-O-R-D</var> is the
+input to FIRST.
+</p>
+<p>What about variables?  There are two things one can do with a variable:
+give it a value, and find out its value.  To give a variable a value,
+Logo provides the primitive procedure <code>MAKE</code>, which requires two
+inputs: the name of the variable and the new value to be assigned.  The
+first input, the name of the variable, is just a word, and if (as is
+almost always the case) the programmer wants to assign a value to a
+specific variable whose name is known in advance, that input is quoted,
+just as any known specific word would be:
+</p><div class="example">
+<pre class="example">	MAKE &quot;MY.VAR FIRST &quot;WORD
+</pre></div>
+<p>gives the variable named <code>MY.VAR</code> the value <code>W</code> (the first letter of
+<code>WORD</code>).
+</p>
+<p>To find the value of a variable, Logo provides the primitive procedure
+<code>THING</code>, which takes a variable name as its input, and outputs the value
+of the accessible variable with that name.  Thus
+</p><div class="example">
+<pre class="example">	PRINT THING &quot;MY.VAR
+</pre></div>
+<p>will print <code>W</code> (supposing the <code>MAKE</code> above has been done).  Since
+finding the value of a specific, known variable name is such a common
+operation, Logo also provides an abbreviated notation that combines
+<code>THING</code> with quote:
+</p><div class="example">
+<pre class="example">	PRINT :MY.VAR
+</pre></div>
+<p>The colon (which Logo old-timers pronounce &quot;dots&quot;) replaces <code>THING</code>
+and <code>&quot;</code> in the earlier version of the instruction.
+</p>
+<p>Newcomers to Logo often complain about the need for all this punctuation.
+In particular, Logo programmers who learned about dots and quotes without
+also learning about <code>THING</code> wonder why an instruction such as
+</p><div class="example">
+<pre class="example">	MAKE &quot;NEW.VAR :OLD.VAR
+</pre></div>
+<p>uses two different punctuation marks to identify the two variables.
+(Having read the paragraphs above, you will understand that actually
+both variable names are quoted, but the procedure <code>THING</code> is
+invoked to find the value of <code>OLD.VAR</code>, since it&rsquo;s that value, not
+<code>OLD.VAR</code>&rsquo;s name, that <code>MAKE</code> needs to know.  It wouldn&rsquo;t make
+sense to ask for <code>THING</code> of <code>NEW.VAR</code>, since we haven&rsquo;t given
+<code>NEW.VAR</code> a value yet.)
+</p>
+<p>Although Logo&rsquo;s punctuation rules make sense once understood, they
+do form a barrier to entry for the Logo beginner.  Why, then, couldn&rsquo;t
+Logo be designed so that an unpunctuated word would represent a
+procedure if there is a procedure by that name, or a variable if
+there is a variable by that name?  Then we could say
+</p><div class="example">
+<pre class="example">	PRINT MY.VAR
+</pre></div>
+<p>and Logo would realize that <code>MY.VAR</code> is the name of a variable, not
+of a procedure.  The traditional reason not to use this convention
+is that Logo allows the same word to name a procedure and a variable
+at the same time.  This is most often important for words that name
+data types, as in the following procedure:
+</p><div class="example">
+<pre class="example">	TO PLURAL :WORD
+	OUTPUT WORD :WORD &quot;S
+	END
+</pre></div>
+<p>Here the name <code>WORD</code> is a natural choice for the input to <code>PLURAL</code>, since
+it describes the kind of input that <code>PLURAL</code> expects.  Within the procedure,
+we use <code>WORD</code> to represent Logo&rsquo;s primitive procedure that combines two
+input words to form a new, longer word; we use <code>:WORD</code> to represent the
+variable containing the input, whatever actual word is given when
+<code>PLURAL</code> is invoked.
+</p><div class="example">
+<pre class="example">	? PRINT PLURAL &quot;COMPUTER
+	COMPUTERS
+</pre></div>
+
+<p>However, if a Logo instruction includes an unquoted word that is <strong>not</strong>
+the name of a procedure, Logo could look for a variable of that name instead.
+This would allow a &quot;punctuationless&quot; Logo, <strong>provided that users who
+want to work without colons for variables choose variable names that are not
+also procedure names.</strong>
+</p>
+<p>What about assigning a value to a variable?  Could we do without the
+quotation mark on <code>MAKE</code>&rsquo;s first input?  Alas, no.  Although the
+first input to <code>MAKE</code> is <strong>usually</strong> a constant, known
+variable name, sometimes it isn&rsquo;t, as in this example:
+</p><div class="example">
+<pre class="example">	TO INCREMENT :VAR
+	MAKE :VAR (THING :VAR)+1	; Note: it's not &quot;VAR here!
+	END
+
+	? MAKE &quot;X 5
+	? INCREMENT &quot;X
+	? PRINT :X
+	6
+</pre></div>
+<p>The procedure <code>INCREMENT</code> takes a variable name as its input and
+changes the value of that variable.  In this example there are two
+variables; the variable whose name is <code>VAR</code>, and whose value is the
+word <code>X</code>; and the variable whose name is <code>X</code> and whose value changes
+from 5 to 6.  Suppose we changed the behavior of <code>MAKE</code> so that it
+took the word after <code>MAKE</code> as the name of the variable to change;
+we would be unable to write <code>INCREMENT</code>:
+</p><div class="example">
+<pre class="example">	TO INCREMENT :VAR		; nonworking!
+	MAKE VAR (THING VAR)+1
+	END
+</pre></div>
+<p>This would assign a new value to <code>VAR</code>, not to <code>X</code>.
+</p>
+<p>What we can do is to allow an <strong>alternative</strong> to <code>MAKE</code>, a
+&quot;setter&quot; procedure for a particular variable.  The notation will be
+</p><div class="example">
+<pre class="example">	? SETFOO 7
+	? PRINT FOO
+	7
+</pre></div>
+<p><code>SETFOO</code> is a &quot;setter procedure&quot; that takes one input (in this case
+the input 7) and assigns its value to the variable named <code>FOO</code>.
+</p>
+<p>Berkeley Logo allows users to choose either the traditional notation, in
+which case the same name can be used both for a procedure and for a
+variable, or the getter/setter notation, in which variable <code>FOO</code> is
+set with <code>SETFOO</code> and examined with <code>FOO</code>, but the same name
+can&rsquo;t be used for procedure and variable.
+</p>
+<p>Here is how this choice is allowed: Berkeley Logo uses traditional
+notation, with procedures distinct from variables.  However, if there is
+a variable named <code>AllowGetSet</code> whose value is TRUE (which
+there is, by default, when Logo starts up), then if a Logo instruction
+refers to a <strong>nonexistent</strong> procedure (so that the error message
+&quot;I don&rsquo;t know how to ...&quot; would result), Logo tries the following two
+steps:
+<a name="index-AllowGetSet"></a>
+</p>
+<div class="display">
+<pre class="display">	1.  If the name is at least four characters long, and the first three
+	characters are the letters <code>SET</code> (upper or lower case), and if the name
+	is followed in the instruction by another value, and if the name
+	without the <code>SET</code> is the name of a variable that already exists, then
+	Logo will invoke <code>MAKE</code> with its first input being the name without the
+	<code>SET</code>, and its second input being the following value.
+
+	2.  If step 1&rsquo;s conditions are not met, but the name is
+	the name of an accessible variable, then Logo will invoke
+	<code>THING</code> with that name as input, to find the variable&rsquo;s value.
+</pre></div>
+
+<p>Step 1 requires that the variable already exist so that misspellings of names
+of <code>SETxxx</code> primitives (e.g., <code>SETHEADING</code>) will still be caught, instead of
+silently creating a new variable.  The command <code>GLOBAL</code> can be used to create
+a variable without giving it a value.
+</p>
+<p>One final point:  The <code>TO</code> command in Logo has always been a special
+case; the rest of the line starting with <code>TO</code> is not evaluated as
+ordinary Logo expressions are.  In particular, the colons used to
+mark the names of inputs to the procedure do not cause <code>THING</code> to be
+invoked.  They are merely mnemonic aids, reminding the Logo user
+that these words are names of variables.  (Arguably, this nonstantard
+behavior of <code>TO</code> adds to Logo beginners&rsquo; confusion about colons.)
+To a programmer using colonless variable references, the colons in
+the <code>TO</code> line are unnecessary and meaningless.  Berkeley Logo therefore
+makes the colons optional:
+</p><div class="example">
+<pre class="example">	TO FOO :IN1 :IN2
+</pre></div>
+<p>and
+</p><div class="example">
+<pre class="example">	TO FOO IN1 IN2
+</pre></div>
+<p>are both allowed.
+</p>
+
+<hr>
+<a name="ENTERING-AND-LEAVING-LOGO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TOKENIZATION" accesskey="n" rel="next">TOKENIZATION</a>, Previous: <a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX" accesskey="p" rel="prev">GETTER/SETTER VARIBLE SYNTAX</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Entering-and-Leaving-Logo"></a>
+<h3 class="section">1.3 Entering and Leaving Logo</h3>
+
+<a name="index-starting-ucblogo"></a>
+<a name="index-leaving-ucblogo"></a>
+
+<p>The process to start Logo depends on your operating system:
+</p>
+<dl compact="compact">
+<dt>Unix:</dt>
+<dd><p>Type the word <tt>logo</tt> to the shell.  (The directory in which you&rsquo;ve
+installed Logo must be in your path.)
+</p>
+</dd>
+<dt>DOS:</dt>
+<dd><p>Change directories to the one containing Logo (probably
+<code>C:\UCBLOGO</code>).  Then type <tt>UCBLOGO</tt> for the large memory
+version, or <tt>BL</tt> for the 640K version.
+</p>
+</dd>
+<dt>Mac:</dt>
+<dd><p>Double-click on the <code>LOGO</code> icon within the &quot;UCB Logo&quot; folder. 
+</p>
+</dd>
+<dt>Windows:</dt>
+<dd><p>Double-click on the <code>UCBWLOGO</code> icon in the <code>UCBLOGO</code> folder.
+</p></dd>
+</dl>
+
+<p>To leave Logo, enter the command <code>bye</code>.
+</p>
+<p>On startup, Logo looks for a file named <samp>startup.lg</samp> in the system Logo
+library and, if found, loads it.  Then it looks for <samp>startup.lg</samp> in the
+user&rsquo;s home directory, or the current directory, depending on the operating
+system, and loads that.  These startup files can be used to predefine
+procedures, e.g., to provide non-English names for primitive procedures.
+</p>
+<p>Under Unix, DOS, or Windows, if you include one or more filenames on the
+command line when starting Logo, those files will be loaded before the
+interpreter starts reading commands from your terminal.  If you load a file
+that executes some program that includes a <code>bye</code> command, Logo will run
+that program and exit.  You can therefore write standalone programs in Logo
+and run them with shell/batch scripts.  To support this technique, Logo does
+not print its usual welcoming and parting messages if you give file arguments
+to the logo command.
+</p>
+<p>If a command line argument is just a hyphen, then all command line arguments
+after the hyphen are not taken as filenames, but are instead collected in a
+list, one word per argument; the buried variable <code>COMMAND.LINE</code> contains
+that list of arguments, or the empty list if there are none.  On my Linux
+system, if the first line of an executable shell script is
+<tt>#!/usr/local/bin/logo&nbsp;<span class="nolinebreak">-</span></tt><!-- /@w --> (note the hyphen) then the script can be given
+command line arguments and they all end up in <code>:COMMAND.LINE</code> along with
+the script&rsquo;s path.  Experiment.
+</p>
+<p>If you type your interrupt character (see table below) Logo will stop what
+it&rsquo;s doing and return to top-level, as if you did <tt>THROW&nbsp;&quot;TOPLEVEL</tt><!-- /@w -->.  If
+you type your quit character Logo will pause as if you did <code>PAUSE</code>.
+</p>
+<div class="example">
+<pre class="example">            wxWidgets      Unix       DOS/Windows     Mac Classic
+
+toplevel      alt-S   usually ctrl-C    ctrl-Q     command-. (period)
+
+pause         alt-P   usually ctrl-\    ctrl-W     command-, (comma)
+</pre></div>
+
+<p>If you have an environment variable called <code>LOGOLIB</code> whose value is the
+name of a directory, then Logo will use that directory instead of the default
+library.  If you invoke a procedure that has not been defined, Logo first
+looks for a file in the current directory named <samp><var>proc</var>.lg</samp> where
+<var>proc</var> is the procedure name in lower case letters.  If such a file
+exists, Logo loads that file.  If the missing procedure is still undefined, or
+if there is no such file, Logo then looks in the library directory for a file
+named <samp><var>proc</var></samp> (no <samp>.lg</samp>) and, if it exists, loads it.  If
+neither file contains a definition for the procedure, then Logo signals an
+error.  Several procedures that are primitive in most versions of Logo are
+included in the default library, so if you use a different library you may
+want to include some or all of the default library in it.
+</p>
+
+<hr>
+<a name="TOKENIZATION"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#ENTERING-AND-LEAVING-LOGO" accesskey="p" rel="prev">ENTERING AND LEAVING LOGO</a>, Up: <a href="usermanual.html#INTRODUCTION" accesskey="u" rel="up">INTRODUCTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Tokenization"></a>
+<h3 class="section">1.4 Tokenization</h3>
+
+<p>Names of procedures, variables, and property lists are case-insensitive.  So
+are the special words <code>END</code>, <code>TRUE</code>, and <code>FALSE</code>.  Case of
+letters is preserved in everything you type, however.
+</p>
+<a name="index-case_002dinsensitive"></a>
+<a name="index-delimiters"></a>
+<a name="index-runparsing"></a>
+<a name="index-line_002dcontinuation"></a>
+<a name="index-comments"></a>
+
+<p>Within square brackets, words are delimited only by spaces and square
+brackets.  <code>[2+3]</code> is a list containing one word.  Note, however, that
+the Logo primitives that interpret such a list as a Logo instruction or
+expression (<code>RUN</code>, <code>IF</code>, etc.) reparse the list as if it had not
+been typed inside brackets.
+</p>
+<p>After a quotation mark outside square brackets, a word is delimited by
+a space, a square bracket, or a parenthesis.
+</p>
+<p>A word not after a quotation mark or inside square brackets is delimited by a
+space, a bracket, a parenthesis, or an infix operator <code>+-*/=&lt;&gt;</code>.  Note
+that words following colons are in this category.  Note that quote and colon
+are not delimiters.  Each infix operator character is a word in itself, except
+that the two-character sequences <code>&lt;=</code>, <code>&gt;=</code>, and <code>&lt;&gt;</code> (the
+latter meaning not-equal) with no intervening space are recognized as a single
+word.
+</p>
+<p>A word consisting of a question mark followed by a number (e.g., <code>?37</code>),
+when runparsed (i.e., where a procedure name is expected), is treated
+as if it were the sequence
+</p>
+<div class="example">
+<pre class="example">( ? 37 )
+</pre></div>
+
+<p>making the number an input to the ? procedure.  (See the discussion of
+templates, below.)  This special treatment does not apply to words read
+as data, to words with a non-number following the question mark, or if
+the question mark is backslashed.
+</p>
+<p>A line (an instruction line or one read by <code>READLIST</code> or <code>READWORD</code>)
+can be continued onto the following line if its last character is a tilde (<code>~</code>).
+<code>READWORD</code> preserves the tilde and the newline; <code>READLIST</code> does not.
+</p>
+<p>Lines read with <code>READRAWLINE</code> are never continued.
+</p>
+<p>An instruction line or a line read by <code>READLIST</code> (but not by <code>READWORD</code>)
+is automatically continued to the next line, as if ended with a tilde,
+if there are unmatched brackets, parentheses, braces, or vertical bars
+pending.  However, it&rsquo;s an error if the continuation line contains
+only the word <code>END</code>; this is to prevent runaway procedure definitions.
+Lines explicitly continued with a tilde avoid this restriction.
+</p>
+<p>If a line being typed interactively on the keyboard is continued, either
+with a tilde or automatically, Logo will display a tilde as a prompt
+character for the continuation line.
+</p>
+<p>A semicolon begins a comment in an instruction line.  Logo ignores
+characters from the semicolon to the end of the line.  A tilde as the
+last character still indicates a continuation line, but not a continuation
+of the comment.  For example, typing the instruction
+</p>
+<div class="example">
+<pre class="example">print &quot;abc;comment ~
+def
+</pre></div>
+
+<p>will print the word <code>abcdef</code>.  Semicolon has no special meaning in data
+lines read by <code>READWORD</code> or <code>READLIST</code>, but such a line can later be reparsed
+using <code>RUNPARSE</code> and then comments will be recognized.
+</p>
+<p>The two-character sequence <code>#!</code> at the beginning of a line also starts a
+comment.  Unix users can therefore write a file containing Logo commands,
+starting with the line
+</p><div class="example">
+<pre class="example">#! /usr/local/bin/logo
+</pre></div>
+<p>(or wherever your Logo executable lives) and the file will be executable
+directly from the shell.
+</p>
+<p>To include an otherwise delimiting character (including semicolon or tilde)
+in a word, precede it with backslash (<code>\</code>).  If the last character of a line
+is a backslash, then the newline character following the backslash will be
+part of the last word on the line, and the line continues onto the following
+line.  To include a backslash in a word, use <code>\\</code>.  If the combination
+backslash-newline is entered at the terminal, Logo will issue a backslash as
+a prompt character for the continuation line.  All of this applies to data
+lines read with <code>READWORD</code> or <code>READLIST</code> as well as to instruction lines.
+</p>
+<p>A line read with <code>READRAWLINE</code> has no special quoting mechanism; both
+backslash and vertical bar (described below) are just ordinary characters.
+</p>
+<p>An alternative notation to include otherwise delimiting characters in words
+is to enclose a group of characters in vertical bars.  All characters between
+vertical bars are treated as if they were letters.  In data read with <code>READWORD</code>
+the vertical bars are preserved in the resulting word.  In data read with
+<code>READLIST</code> (or resulting from a <code>PARSE</code> or <code>RUNPARSE</code> of a word) the vertical bars
+do not appear explicitly; all potentially delimiting characters (including
+spaces, brackets, parentheses, and infix operators) appear unmarked, but
+tokenized as though they were letters.  Within vertical bars, backslash may
+still be used; the only characters that must be backslashed in this context
+are backslash and vertical bar themselves.
+</p>
+<p>Characters entered between vertical bars are forever special, even if the
+word or list containing them is later reparsed with <code>PARSE</code> or <code>RUNPARSE</code>.
+Characters typed after a backslash are treated somewhat differently:  When a
+quoted word containing a backslashed character is runparsed, the backslashed
+character loses its special quality and acts thereafter as if typed normally.
+This distinction is important only if you are building a Logo expression out
+of parts, to be <code>RUN</code> later, and want to use parentheses.  For example,
+</p>
+<div class="example">
+<pre class="example">PRINT RUN (SE &quot;\( 2 &quot;+ 3 &quot;\))
+</pre></div>
+
+<p>will print 5, but
+</p>
+<div class="example">
+<pre class="example">RUN (SE &quot;MAKE &quot;&quot;|(| 2)
+</pre></div>
+
+<p>will create a variable whose name is open-parenthesis.  (Each example would
+fail if vertical bars and backslashes were interchanged.)
+</p>
+<p>A normally delimiting character entered within vertical bars is <code>EQUALP</code>
+to the same character without the vertical bars, but can be distinguished by
+the <code>VBARREDP</code> predicate.  (However, <code>VBARREDP</code> returns <code>TRUE</code>
+only for characters for which special treatment is necessary: whitespace,
+parentheses, brackets, infix operators, backslash, vertical bar, tilde, quote,
+question mark, colon, and semicolon.)
+</p>
+
+<hr>
+<a name="DATA-STRUCTURE-PRIMITIVES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OBJECTS" accesskey="n" rel="next">OBJECTS</a>, Previous: <a href="usermanual.html#INTRODUCTION" accesskey="p" rel="prev">INTRODUCTION</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Data-Structure-Primitives"></a>
+<h2 class="chapter">2 Data Structure Primitives</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CONSTRUCTORS" accesskey="1">CONSTRUCTORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SELECTORS" accesskey="2">SELECTORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MUTATORS" accesskey="3">MUTATORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PREDICATES" accesskey="4">PREDICATES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#QUERIES" accesskey="5">QUERIES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="CONSTRUCTORS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SELECTORS" accesskey="n" rel="next">SELECTORS</a>, Previous: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="p" rel="prev">DATA STRUCTURE PRIMITIVES</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Constructors"></a>
+<h3 class="section">2.1 Constructors</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WORD" accesskey="1">WORD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LIST" accesskey="2">LIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SENTENCE" accesskey="3">SENTENCE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FPUT" accesskey="4">FPUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LPUT" accesskey="5">LPUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ARRAY" accesskey="6">ARRAY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MDARRAY" accesskey="7">MDARRAY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LISTTOARRAY" accesskey="8">LISTTOARRAY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ARRAYTOLIST" accesskey="9">ARRAYTOLIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COMBINE">COMBINE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REVERSE">REVERSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GENSYM">GENSYM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="WORD"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LIST" accesskey="n" rel="next">LIST</a>, Previous: <a href="usermanual.html#CONSTRUCTORS" accesskey="p" rel="prev">CONSTRUCTORS</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="word"></a>
+<h4 class="unnumberedsubsec">word</h4>
+<a name="index-word"></a>
+
+<div class="example">
+<pre class="example">WORD word1 word2
+(WORD word1 word2 word3 ...)
+</pre></div>
+
+<p>outputs a word formed by concatenating its inputs.
+</p>
+<hr>
+<a name="LIST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SENTENCE" accesskey="n" rel="next">SENTENCE</a>, Previous: <a href="usermanual.html#WORD" accesskey="p" rel="prev">WORD</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="list"></a>
+<h4 class="unnumberedsubsec">list</h4>
+<a name="index-list"></a>
+
+<div class="example">
+<pre class="example">LIST thing1 thing2
+(LIST thing1 thing2 thing3 ...)
+</pre></div>
+
+<p>outputs a list whose members are its inputs, which can be any Logo datum
+(word, list, or array).
+</p>
+
+<hr>
+<a name="SENTENCE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FPUT" accesskey="n" rel="next">FPUT</a>, Previous: <a href="usermanual.html#LIST" accesskey="p" rel="prev">LIST</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="sentence"></a>
+<h4 class="unnumberedsubsec">sentence</h4>
+<a name="index-sentence"></a>
+<a name="index-se"></a>
+
+<div class="example">
+<pre class="example">SENTENCE thing1 thing2
+SE thing1 thing2
+(SENTENCE thing1 thing2 thing3 ...)
+(SE thing1 thing2 thing3 ...)
+</pre></div>
+
+<p>outputs a list whose members are its inputs, if those inputs are not
+lists, or the members of its inputs, if those inputs are lists.
+</p>
+<hr>
+<a name="FPUT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LPUT" accesskey="n" rel="next">LPUT</a>, Previous: <a href="usermanual.html#SENTENCE" accesskey="p" rel="prev">SENTENCE</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="fput"></a>
+<h4 class="unnumberedsubsec">fput</h4>
+<a name="index-fput"></a>
+
+<div class="example">
+<pre class="example">FPUT thing list
+</pre></div>
+
+<p>outputs a list equal to its second input with one extra member, the
+first input, at the beginning.  If the second input is a word,
+then the first input must be a one-letter word, and FPUT is
+equivalent to WORD.
+</p>
+
+
+<hr>
+<a name="LPUT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ARRAY" accesskey="n" rel="next">ARRAY</a>, Previous: <a href="usermanual.html#FPUT" accesskey="p" rel="prev">FPUT</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="lput"></a>
+<h4 class="unnumberedsubsec">lput</h4>
+<a name="index-lput"></a>
+
+<div class="example">
+<pre class="example">LPUT thing list
+</pre></div>
+
+<p>outputs a list equal to its second input with one extra member, the
+first input, at the end.  If the second input is a word,
+then the first input must be a one-letter word, and LPUT is
+equivalent to WORD with its inputs in the other order.
+</p>
+<hr>
+<a name="ARRAY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MDARRAY" accesskey="n" rel="next">MDARRAY</a>, Previous: <a href="usermanual.html#LPUT" accesskey="p" rel="prev">LPUT</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="array"></a>
+<h4 class="unnumberedsubsec">array</h4>
+<a name="index-array"></a>
+
+<div class="example">
+<pre class="example">ARRAY size
+(ARRAY size origin)
+</pre></div>
+
+<p>outputs an array of <var>size</var> members (must be a positive integer), each of
+which initially is an empty list.  Array members can be selected with
+<code>ITEM</code> and changed with <code>SETITEM</code>.  The first member of the array is member
+number 1 unless an <var>origin</var> input (must be an integer) is given, in
+which case the first member of the array has that number as its index.
+(Typically 0 is used as the origin if anything.)  Arrays are printed by
+<code>PRINT</code> and friends, and can be typed in, inside curly braces; indicate an
+origin with <tt>{a&nbsp;b&nbsp;c}@0</tt><!-- /@w -->.
+</p>
+
+<p>See <a href="usermanual.html#ITEM">ITEM</a> ,
+<a href="usermanual.html#SETITEM">SETITEM</a> .
+</p>
+<hr>
+<a name="MDARRAY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LISTTOARRAY" accesskey="n" rel="next">LISTTOARRAY</a>, Previous: <a href="usermanual.html#ARRAY" accesskey="p" rel="prev">ARRAY</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="mdarray"></a>
+<h4 class="unnumberedsubsec">mdarray</h4>
+<a name="index-mdarray"></a>
+
+<div class="example">
+<pre class="example">MDARRAY sizelist				(library procedure)
+(MDARRAY sizelist origin)
+</pre></div>
+
+<p>outputs a multi-dimensional array.  The first input must be a list of
+one or more positive integers.  The second input, if present, must be a
+single integer that applies to every dimension of the array.  
+</p>
+<p>Ex: <tt>(MDARRAY&nbsp;[3&nbsp;5]&nbsp;0)</tt><!-- /@w --> outputs a two-dimensional array whose members
+range from <tt>[0&nbsp;0]</tt><!-- /@w --> to <tt>[2&nbsp;4]</tt><!-- /@w -->.
+</p>
+
+<hr>
+<a name="LISTTOARRAY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ARRAYTOLIST" accesskey="n" rel="next">ARRAYTOLIST</a>, Previous: <a href="usermanual.html#MDARRAY" accesskey="p" rel="prev">MDARRAY</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="listtoarray"></a>
+<h4 class="unnumberedsubsec">listtoarray</h4>
+<a name="index-listtoarray"></a>
+
+<div class="example">
+<pre class="example">LISTTOARRAY list
+(LISTTOARRAY list origin)
+</pre></div>
+
+<p>outputs an array of the same size as the input list, whose members are
+the members of the input list.
+</p>
+
+<hr>
+<a name="ARRAYTOLIST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#COMBINE" accesskey="n" rel="next">COMBINE</a>, Previous: <a href="usermanual.html#LISTTOARRAY" accesskey="p" rel="prev">LISTTOARRAY</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="arraytolist"></a>
+<h4 class="unnumberedsubsec">arraytolist</h4>
+<a name="index-arraytolist"></a>
+
+<div class="example">
+<pre class="example">ARRAYTOLIST array
+</pre></div>
+
+<p>outputs a list whose members are the members of the input array.  The
+first member of the output is the first member of the array, regardless
+of the array&rsquo;s origin.
+</p>
+
+<hr>
+<a name="COMBINE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REVERSE" accesskey="n" rel="next">REVERSE</a>, Previous: <a href="usermanual.html#ARRAYTOLIST" accesskey="p" rel="prev">ARRAYTOLIST</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="combine"></a>
+<h4 class="unnumberedsubsec">combine</h4>
+<a name="index-combine"></a>
+
+<div class="example">
+<pre class="example">COMBINE thing1 thing2				(library procedure)
+</pre></div>
+
+<p>if <var>thing2</var> is a word, outputs <tt>WORD&nbsp;thing1&nbsp;thing2</tt><!-- /@w -->.  If <var>thing2</var>
+is a list, outputs <tt>FPUT&nbsp;thing1&nbsp;thing2</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#WORD">WORD</a> ,
+<a href="usermanual.html#FPUT">FPUT</a>
+</p>
+<hr>
+<a name="REVERSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GENSYM" accesskey="n" rel="next">GENSYM</a>, Previous: <a href="usermanual.html#COMBINE" accesskey="p" rel="prev">COMBINE</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="reverse"></a>
+<h4 class="unnumberedsubsec">reverse</h4>
+<a name="index-reverse"></a>
+
+<div class="example">
+<pre class="example">REVERSE list					(library procedure)
+</pre></div>
+
+<p>outputs a list whose members are the members of the input list, in
+reverse order.
+</p>
+<hr>
+<a name="GENSYM"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#REVERSE" accesskey="p" rel="prev">REVERSE</a>, Up: <a href="usermanual.html#CONSTRUCTORS" accesskey="u" rel="up">CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="gensym"></a>
+<h4 class="unnumberedsubsec">gensym</h4>
+<a name="index-gensym"></a>
+
+<div class="example">
+<pre class="example">GENSYM						(library procedure)
+</pre></div>
+
+<p>outputs a unique word each time it&rsquo;s invoked.  The words are of the form
+<code>G1</code>, <code>G2</code>, etc.
+</p>
+<hr>
+<a name="SELECTORS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MUTATORS" accesskey="n" rel="next">MUTATORS</a>, Previous: <a href="usermanual.html#CONSTRUCTORS" accesskey="p" rel="prev">CONSTRUCTORS</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Data-Selectors"></a>
+<h3 class="section">2.2 Data Selectors</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FIRST" accesskey="1">FIRST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FIRSTS" accesskey="2">FIRSTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LAST" accesskey="3">LAST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BUTFIRST" accesskey="4">BUTFIRST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BUTFIRSTS" accesskey="5">BUTFIRSTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BUTLAST" accesskey="6">BUTLAST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ITEM" accesskey="7">ITEM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MDITEM" accesskey="8">MDITEM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PICK" accesskey="9">PICK</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REMOVE">REMOVE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REMDUP">REMDUP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#QUOTED">QUOTED</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="FIRST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FIRSTS" accesskey="n" rel="next">FIRSTS</a>, Previous: <a href="usermanual.html#SELECTORS" accesskey="p" rel="prev">SELECTORS</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="first"></a>
+<h4 class="unnumberedsubsec">first</h4>
+<a name="index-first"></a>
+
+<div class="example">
+<pre class="example">FIRST thing
+</pre></div>
+
+<p>if the input is a word, outputs the first character of the word.  If the
+input is a list, outputs the first member of the list.  If the input is
+an array, outputs the origin of the array (that is, the <em>index of</em> the
+first member of the array).
+</p>
+<hr>
+<a name="FIRSTS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LAST" accesskey="n" rel="next">LAST</a>, Previous: <a href="usermanual.html#FIRST" accesskey="p" rel="prev">FIRST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="firsts"></a>
+<h4 class="unnumberedsubsec">firsts</h4>
+<a name="index-firsts"></a>
+
+<div class="example">
+<pre class="example">FIRSTS list
+</pre></div>
+
+<p>outputs a list containing the <code>FIRST</code> of each member of the input list.
+It is an error if any member of the input list is empty.  (The input
+itself may be empty, in which case the output is also empty.)  This
+could be written as
+</p>
+<div class="example">
+<pre class="example">to firsts :list
+output map &quot;first :list
+end
+</pre></div>
+
+<p>but is provided as a primitive in order to speed up the iteration tools
+<code>MAP</code>, <code>MAP.SE</code>, and <code>FOREACH</code>.
+</p>
+<div class="example">
+<pre class="example">to transpose :matrix
+if emptyp first :matrix [op []]
+op fput firsts :matrix transpose bfs :matrix
+end
+</pre></div>
+
+<hr>
+<a name="LAST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BUTFIRST" accesskey="n" rel="next">BUTFIRST</a>, Previous: <a href="usermanual.html#FIRSTS" accesskey="p" rel="prev">FIRSTS</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="last"></a>
+<h4 class="unnumberedsubsec">last</h4>
+<a name="index-last"></a>
+
+<div class="example">
+<pre class="example">LAST wordorlist
+</pre></div>
+
+<p>if the input is a word, outputs the last character of the word.  If the
+input is a list, outputs the last member of the list.
+</p>
+<hr>
+<a name="BUTFIRST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BUTFIRSTS" accesskey="n" rel="next">BUTFIRSTS</a>, Previous: <a href="usermanual.html#LAST" accesskey="p" rel="prev">LAST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="butfirst"></a>
+<h4 class="unnumberedsubsec">butfirst</h4>
+<a name="index-butfirst"></a>
+<a name="index-bf"></a>
+
+<div class="example">
+<pre class="example">BUTFIRST wordorlist
+BF wordorlist
+</pre></div>
+
+<p>if the input is a word, outputs a word containing all but the first
+character of the input.  If the input is a list, outputs a list
+containing all but the first member of the input.
+</p>
+<hr>
+<a name="BUTFIRSTS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BUTLAST" accesskey="n" rel="next">BUTLAST</a>, Previous: <a href="usermanual.html#BUTFIRST" accesskey="p" rel="prev">BUTFIRST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="butfirsts"></a>
+<h4 class="unnumberedsubsec">butfirsts</h4>
+<a name="index-butfirsts"></a>
+<a name="index-bfs"></a>
+
+<div class="example">
+<pre class="example">BUTFIRSTS list
+BFS list
+</pre></div>
+
+<p>outputs a list containing the <code>BUTFIRST</code> of each member of the input list.
+It is an error if any member of the input list is empty or an array.
+(The input itself may be empty, in which case the output is also empty.)
+This could be written as
+</p>
+<div class="example">
+<pre class="example">to butfirsts :list
+output map &quot;butfirst :list
+end
+</pre></div>
+
+<p>but is provided as a primitive in order to speed up the iteration tools
+<code>MAP</code>, <code>MAP.SE</code>, and <code>FOREACH</code>.
+</p>
+<hr>
+<a name="BUTLAST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ITEM" accesskey="n" rel="next">ITEM</a>, Previous: <a href="usermanual.html#BUTFIRSTS" accesskey="p" rel="prev">BUTFIRSTS</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="butlast"></a>
+<h4 class="unnumberedsubsec">butlast</h4>
+<a name="index-butlast"></a>
+<a name="index-bl"></a>
+
+<div class="example">
+<pre class="example">BUTLAST wordorlist
+BL wordorlist
+</pre></div>
+
+<p>if the input is a word, outputs a word containing all but the last
+character of the input.  If the input is a list, outputs a list
+containing all but the last member of the input.
+</p>
+<hr>
+<a name="ITEM"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MDITEM" accesskey="n" rel="next">MDITEM</a>, Previous: <a href="usermanual.html#BUTLAST" accesskey="p" rel="prev">BUTLAST</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="item"></a>
+<h4 class="unnumberedsubsec">item</h4>
+<a name="index-item"></a>
+
+<div class="example">
+<pre class="example">ITEM index thing
+</pre></div>
+
+<p>if the <var>thing</var> is a word, outputs the <var>index</var>th character of the word.
+If the <var>thing</var> is a list, outputs the <var>index</var>th member of the list.  If
+the <var>thing</var> is an array, outputs the <var>index</var>th member of the array.
+<var>Index</var> starts at 1 for words and lists; the starting index of an array
+is specified when the array is created.
+</p>
+<hr>
+<a name="MDITEM"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PICK" accesskey="n" rel="next">PICK</a>, Previous: <a href="usermanual.html#ITEM" accesskey="p" rel="prev">ITEM</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="mditem"></a>
+<h4 class="unnumberedsubsec">mditem</h4>
+<a name="index-mditem"></a>
+
+<div class="example">
+<pre class="example">MDITEM indexlist array				(library procedure)
+</pre></div>
+
+<p>outputs the member of the multidimensional <var>array</var> selected by the list
+of numbers <var>indexlist</var>.
+</p>
+<hr>
+<a name="PICK"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REMOVE" accesskey="n" rel="next">REMOVE</a>, Previous: <a href="usermanual.html#MDITEM" accesskey="p" rel="prev">MDITEM</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pick"></a>
+<h4 class="unnumberedsubsec">pick</h4>
+<a name="index-pick"></a>
+
+<div class="example">
+<pre class="example">PICK list					(library procedure)
+</pre></div>
+
+<p>outputs a randomly chosen member of the input list.
+</p>
+<hr>
+<a name="REMOVE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REMDUP" accesskey="n" rel="next">REMDUP</a>, Previous: <a href="usermanual.html#PICK" accesskey="p" rel="prev">PICK</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="remove"></a>
+<h4 class="unnumberedsubsec">remove</h4>
+<a name="index-remove"></a>
+
+<div class="example">
+<pre class="example">REMOVE thing list				(library procedure)
+</pre></div>
+
+<p>outputs a copy of <var>list</var> with every member equal to <var>thing</var> removed.
+</p>
+<hr>
+<a name="REMDUP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#QUOTED" accesskey="n" rel="next">QUOTED</a>, Previous: <a href="usermanual.html#REMOVE" accesskey="p" rel="prev">REMOVE</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="remdup"></a>
+<h4 class="unnumberedsubsec">remdup</h4>
+<a name="index-remdup"></a>
+
+<div class="example">
+<pre class="example">REMDUP list					(library procedure)
+</pre></div>
+
+<p>outputs a copy of <var>list</var> with duplicate members removed.  If two or more
+members of the input are equal, the rightmost of those members is the
+one that remains in the output.
+</p>
+<hr>
+<a name="QUOTED"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#REMDUP" accesskey="p" rel="prev">REMDUP</a>, Up: <a href="usermanual.html#SELECTORS" accesskey="u" rel="up">SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="quoted"></a>
+<h4 class="unnumberedsubsec">quoted</h4>
+<a name="index-quoted"></a>
+
+<div class="example">
+<pre class="example">QUOTED thing					(library procedure)
+</pre></div>
+
+<p>outputs its input, if a list; outputs its input with a quotation mark
+prepended, if a word.
+</p>
+
+
+<hr>
+<a name="MUTATORS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PREDICATES" accesskey="n" rel="next">PREDICATES</a>, Previous: <a href="usermanual.html#SELECTORS" accesskey="p" rel="prev">SELECTORS</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Data-Mutators"></a>
+<h3 class="section">2.3 Data Mutators</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETITEM" accesskey="1">SETITEM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MDSETITEM" accesskey="2">MDSETITEM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dSETFIRST" accesskey="3">dSETFIRST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SETFIRST  
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dSETBF" accesskey="4">dSETBF</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SETBF
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dSETITEM" accesskey="5">dSETITEM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">SETITEM
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PUSH" accesskey="6">PUSH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POP" accesskey="7">POP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#QUEUE" accesskey="8">QUEUE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DEQUEUE" accesskey="9">DEQUEUE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="SETITEM"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MDSETITEM" accesskey="n" rel="next">MDSETITEM</a>, Previous: <a href="usermanual.html#MUTATORS" accesskey="p" rel="prev">MUTATORS</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setitem"></a>
+<h4 class="unnumberedsubsec">setitem</h4>
+<a name="index-setitem"></a>
+
+<div class="example">
+<pre class="example">SETITEM index array value
+</pre></div>
+
+<p>command.  Replaces the <var>index</var>th member of <var>array</var> with the new <var>value</var>.
+Ensures that the resulting array is not circular, i.e., <var>value</var> may not
+be a list or array that contains <var>array</var>.
+</p>
+<hr>
+<a name="MDSETITEM"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#dSETFIRST" accesskey="n" rel="next">dSETFIRST</a>, Previous: <a href="usermanual.html#SETITEM" accesskey="p" rel="prev">SETITEM</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="mdsetitem"></a>
+<h4 class="unnumberedsubsec">mdsetitem</h4>
+<a name="index-mdsetitem"></a>
+
+<div class="example">
+<pre class="example">MDSETITEM indexlist array value			(library procedure)
+</pre></div>
+
+<p>command.  Replaces the member of <var>array</var> chosen by <var>indexlist</var> with the
+new <var>value</var>.
+</p>
+<hr>
+<a name="dSETFIRST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#dSETBF" accesskey="n" rel="next">dSETBF</a>, Previous: <a href="usermanual.html#MDSETITEM" accesskey="p" rel="prev">MDSETITEM</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002esetfirst"></a>
+<h4 class="unnumberedsubsec">.setfirst</h4>
+<a name="index-_002esetfirst"></a>
+
+<div class="example">
+<pre class="example">.SETFIRST list value
+</pre></div>
+
+<p>command.  Changes the first member of <var>list</var> to be <var>value</var>.
+</p>
+<p>WARNING: Primitives whose names start with a period are <strong>dangerous</strong>.
+Their use by non-experts is not recommended.  The use of <code>.SETFIRST</code> can
+lead to circular list structures, which will get some Logo primitives
+into infinite loops, and to unexpected changes to other data structures that
+share storage with the list being modified.
+</p>
+<hr>
+<a name="dSETBF"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#dSETITEM" accesskey="n" rel="next">dSETITEM</a>, Previous: <a href="usermanual.html#dSETFIRST" accesskey="p" rel="prev">dSETFIRST</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002esetbf"></a>
+<h4 class="unnumberedsubsec">.setbf</h4>
+<a name="index-_002esetbf"></a>
+
+<div class="example">
+<pre class="example">.SETBF list value
+</pre></div>
+
+<p>command.  Changes the butfirst of <var>list</var> to be <var>value</var>.
+</p>	
+<p>WARNING: Primitives whose names start with a period are <strong>dangerous</strong>.
+Their use by non-experts is not recommended.  The use of <code>.SETBF</code> can lead
+to circular list structures, which will get some Logo primitives into
+infinite loops; unexpected changes to other data structures that share
+storage with the list being modified; or to Logo crashes and coredumps if the
+butfirst of a list is not itself a list.
+</p>
+<hr>
+<a name="dSETITEM"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PUSH" accesskey="n" rel="next">PUSH</a>, Previous: <a href="usermanual.html#dSETBF" accesskey="p" rel="prev">dSETBF</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002esetitem"></a>
+<h4 class="unnumberedsubsec">.setitem</h4>
+<a name="index-_002esetitem"></a>
+
+<div class="example">
+<pre class="example">.SETITEM index array value
+</pre></div>
+
+<p>command.  Changes the <var>index</var>th member of <var>array</var> to be <var>value</var>,
+like <code>SETITEM</code>, but without checking for circularity.
+</p>
+<p>WARNING: Primitives whose names start with a period are <b>dangerous</b>.
+Their use by non-experts is not recommended.  The use of <code>.SETITEM</code> can
+lead to circular arrays, which will get some Logo primitives into
+infinite loops.
+</p>
+<p>See <a href="usermanual.html#SETITEM">SETITEM</a>.
+</p>
+<hr>
+<a name="PUSH"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POP" accesskey="n" rel="next">POP</a>, Previous: <a href="usermanual.html#dSETITEM" accesskey="p" rel="prev">dSETITEM</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="push"></a>
+<h4 class="unnumberedsubsec">push</h4>
+<a name="index-push"></a>
+
+<div class="example">
+<pre class="example">PUSH stackname thing				(library procedure)
+</pre></div>
+
+<p>command.  Adds the <var>thing</var> to the stack that is the value of the
+variable whose name is <var>stackname</var>.  This variable must have a list as
+its value; the initial value should be the empty list.  New members are
+added at the front of the list.
+</p>
+<hr>
+<a name="POP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#QUEUE" accesskey="n" rel="next">QUEUE</a>, Previous: <a href="usermanual.html#PUSH" accesskey="p" rel="prev">PUSH</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pop"></a>
+<h4 class="unnumberedsubsec">pop</h4>
+<a name="index-pop"></a>
+
+<div class="example">
+<pre class="example">POP stackname					(library procedure)
+</pre></div>
+
+<p>outputs the most recently <code>PUSH</code>ed member of the stack that is the value
+of the variable whose name is <var>stackname</var> and removes that member from
+the stack.
+</p>
+<hr>
+<a name="QUEUE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DEQUEUE" accesskey="n" rel="next">DEQUEUE</a>, Previous: <a href="usermanual.html#POP" accesskey="p" rel="prev">POP</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="queue"></a>
+<h4 class="unnumberedsubsec">queue</h4>
+<a name="index-queue"></a>
+
+<div class="example">
+<pre class="example">QUEUE queuename thing				(library procedure)
+</pre></div>
+
+<p>command.  Adds the <var>thing</var> to the queue that is the value of the
+variable whose name is <var>queuename</var>.  This variable must have a list as
+its value; the initial value should be the empty list.  New members are
+added at the back of the list.
+</p>
+<hr>
+<a name="DEQUEUE"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#QUEUE" accesskey="p" rel="prev">QUEUE</a>, Up: <a href="usermanual.html#MUTATORS" accesskey="u" rel="up">MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="dequeue"></a>
+<h4 class="unnumberedsubsec">dequeue</h4>
+<a name="index-dequeue"></a>
+ 
+<div class="example">
+<pre class="example">DEQUEUE queuename				(library procedure)
+</pre></div>
+
+<p>outputs the least recently <code>QUEUE</code>d member of the queue that is the value
+of the variable whose name is <var>queuename</var> and removes that member from
+the queue.
+</p>
+
+<hr>
+<a name="PREDICATES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#QUERIES" accesskey="n" rel="next">QUERIES</a>, Previous: <a href="usermanual.html#MUTATORS" accesskey="p" rel="prev">MUTATORS</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Predicates"></a>
+<h3 class="section">2.4 Predicates</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WORDP" accesskey="1">WORDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LISTP" accesskey="2">LISTP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ARRAYP" accesskey="3">ARRAYP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EMPTYP" accesskey="4">EMPTYP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EQUALP" accesskey="5">EQUALP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NOTEQUALP" accesskey="6">NOTEQUALP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BEFOREP" accesskey="7">BEFOREP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dEQ" accesskey="8">dEQ</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">EQ
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MEMBERP" accesskey="9">MEMBERP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SUBSTRINGP">SUBSTRINGP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NUMBERP">NUMBERP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#VBARREDP">VBARREDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="WORDP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LISTP" accesskey="n" rel="next">LISTP</a>, Previous: <a href="usermanual.html#PREDICATES" accesskey="p" rel="prev">PREDICATES</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="wordp"></a>
+<h4 class="unnumberedsubsec">wordp</h4>
+<a name="index-wordp"></a>
+
+<div class="example">
+<pre class="example">WORDP thing
+WORD? thing
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is a word, <code>FALSE</code> otherwise.
+</p>
+<hr>
+<a name="LISTP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ARRAYP" accesskey="n" rel="next">ARRAYP</a>, Previous: <a href="usermanual.html#WORDP" accesskey="p" rel="prev">WORDP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="listp"></a>
+<h4 class="unnumberedsubsec">listp</h4>
+<a name="index-listp"></a>
+<a name="index-list_003f"></a>
+
+<div class="example">
+<pre class="example">LISTP thing
+LIST? thing
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is a list, <code>FALSE</code> otherwise.
+</p>
+<hr>
+<a name="ARRAYP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EMPTYP" accesskey="n" rel="next">EMPTYP</a>, Previous: <a href="usermanual.html#LISTP" accesskey="p" rel="prev">LISTP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="arrayp"></a>
+<h4 class="unnumberedsubsec">arrayp</h4>
+<a name="index-arrayp"></a>
+<a name="index-array_003f"></a>
+
+<div class="example">
+<pre class="example">ARRAYP thing
+ARRAY? thing
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is an array, <code>FALSE</code> otherwise.
+</p>
+<hr>
+<a name="EMPTYP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EQUALP" accesskey="n" rel="next">EQUALP</a>, Previous: <a href="usermanual.html#ARRAYP" accesskey="p" rel="prev">ARRAYP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="emptyp"></a>
+<h4 class="unnumberedsubsec">emptyp</h4>
+<a name="index-emptyp"></a>
+<a name="index-empty_003f"></a>
+
+<div class="example">
+<pre class="example">EMPTYP thing
+EMPTY? thing
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is the empty word or the empty list, <code>FALSE</code>
+otherwise.
+</p>
+<hr>
+<a name="EQUALP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NOTEQUALP" accesskey="n" rel="next">NOTEQUALP</a>, Previous: <a href="usermanual.html#EMPTYP" accesskey="p" rel="prev">EMPTYP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="equalp"></a>
+<h4 class="unnumberedsubsec">equalp</h4>
+<a name="index-equalp"></a>
+<a name="index-equal_003f"></a>
+<a name="index-_003d"></a>
+
+<div class="example">
+<pre class="example">EQUALP thing1 thing2
+EQUAL? thing1 thing2
+thing1 = thing2
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the inputs are equal, <code>FALSE</code> otherwise.  Two numbers are
+equal if they have the same numeric value.  Two non-numeric words are
+equal if they contain the same characters in the same order.  If there
+is a variable named <code>CASEIGNOREDP</code> whose value is <code>TRUE</code>, then an upper case
+letter is considered the same as the corresponding lower case letter.
+(This is the case by default.)  Two lists are equal if their members are
+equal.  An array is only equal to itself; two separately created arrays
+are never equal even if their members are equal.  (It is important to be
+able to know if two expressions have the same array as their value
+because arrays are mutable; if, for example, two variables have the same
+array as their values then performing <code>SETITEM</code> on one of them will also
+change the other.)
+</p>
+<p>See <a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a> ,
+<a href="usermanual.html#SETITEM">SETITEM</a>
+</p>
+<hr>
+<a name="NOTEQUALP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BEFOREP" accesskey="n" rel="next">BEFOREP</a>, Previous: <a href="usermanual.html#EQUALP" accesskey="p" rel="prev">EQUALP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="notequalp"></a>
+<h4 class="unnumberedsubsec">notequalp</h4>
+<a name="index-notequalp"></a>
+<a name="index-notequal_003f"></a>
+<a name="index-_003c_003e"></a>
+
+<div class="example">
+<pre class="example">NOTEQUALP thing1 thing2
+NOTEQUAL? thing1 thing2
+thing1 &lt;&gt; thing2
+</pre></div>
+
+<p>outputs <code>FALSE</code> if the inputs are equal, <code>TRUE</code> otherwise.  See <code>EQUALP</code>
+for the meaning of equality for different data types.
+</p>
+<hr>
+<a name="BEFOREP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#dEQ" accesskey="n" rel="next">dEQ</a>, Previous: <a href="usermanual.html#NOTEQUALP" accesskey="p" rel="prev">NOTEQUALP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="beforep"></a>
+<h4 class="unnumberedsubsec">beforep</h4>
+<a name="index-beforep"></a>
+<a name="index-before_003f"></a>
+
+<div class="example">
+<pre class="example">BEFOREP word1 word2
+BEFORE? word1 word2
+</pre></div>
+
+<p>outputs <code>TRUE</code> if <var>word1</var> comes before <var>word2</var> in ASCII collating sequence
+(for words of letters, in alphabetical order).  Case-sensitivity is
+determined by the value of <code>CASEIGNOREDP</code>.  Note that if the inputs are
+numbers, the result may not be the same as with <code>LESSP</code>; for example,
+<tt>BEFOREP&nbsp;3&nbsp;12</tt><!-- /@w --> is false because 3 collates after 1.
+</p>
+<p>See <a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a> ,
+<a href="usermanual.html#LESSP">LESSP</a> 
+</p>
+<hr>
+<a name="dEQ"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MEMBERP" accesskey="n" rel="next">MEMBERP</a>, Previous: <a href="usermanual.html#BEFOREP" accesskey="p" rel="prev">BEFOREP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002eeq"></a>
+<h4 class="unnumberedsubsec">.eq</h4>
+<a name="index-_002eeq"></a>
+
+<div class="example">
+<pre class="example">.EQ thing1 thing2
+</pre></div>
+
+<p>outputs <code>TRUE</code> if its two inputs are the same datum, so that applying a
+mutator to one will change the other as well.  Outputs <code>FALSE</code> otherwise,
+even if the inputs are equal in value.  
+</p>
+<p>WARNING: Primitives whose names start with a period are <strong>dangerous</strong>.
+Their use by non-experts is not recommended.  The use of mutators can
+lead to circular data structures, infinite loops, or Logo crashes.
+</p>
+<hr>
+<a name="MEMBERP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SUBSTRINGP" accesskey="n" rel="next">SUBSTRINGP</a>, Previous: <a href="usermanual.html#dEQ" accesskey="p" rel="prev">dEQ</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="memberp"></a>
+<h4 class="unnumberedsubsec">memberp</h4>
+<a name="index-memberp"></a>
+<a name="index-member_003f"></a>
+
+<div class="example">
+<pre class="example">MEMBERP thing1 thing2
+MEMBER? thing1 thing2
+</pre></div>
+
+<p>if <var>thing2</var> is a list or an array, outputs <code>TRUE</code> if <var>thing1</var> is
+<code>EQUALP</code> to a member of <var>thing2</var>, <code>FALSE</code> otherwise.  If
+<var>thing2</var> is a word, outputs <code>TRUE</code> if <var>thing1</var> is a one-character
+word <code>EQUALP</code> to a character of <var>thing2</var>, <code>FALSE</code> otherwise.
+</p>
+<p>See <a href="usermanual.html#EQUALP">EQUALP</a> .
+</p>
+<hr>
+<a name="SUBSTRINGP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NUMBERP" accesskey="n" rel="next">NUMBERP</a>, Previous: <a href="usermanual.html#MEMBERP" accesskey="p" rel="prev">MEMBERP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="substringp"></a>
+<h4 class="unnumberedsubsec">substringp</h4>
+<a name="index-substringp"></a>
+<a name="index-substring_003f"></a>
+
+<div class="example">
+<pre class="example">SUBSTRINGP thing1 thing2
+SUBSTRING? thing1 thing2
+</pre></div>
+
+<p>if <var>thing1</var> or <var>thing2</var> is a list or an array, outputs <code>FALSE</code>.  If
+<var>thing2</var> is a word, outputs <code>TRUE</code> if <var>thing1</var> is <code>EQUALP</code> to a substring of
+<var>thing2</var>, <code>FALSE</code> otherwise.
+</p>
+<p>See <a href="usermanual.html#EQUALP">EQUALP</a> .
+</p>
+<hr>
+<a name="NUMBERP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#VBARREDP" accesskey="n" rel="next">VBARREDP</a>, Previous: <a href="usermanual.html#SUBSTRINGP" accesskey="p" rel="prev">SUBSTRINGP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="numberp"></a>
+<h4 class="unnumberedsubsec">numberp</h4>
+<a name="index-numberp"></a>
+<a name="index-number_003f"></a>
+
+<div class="example">
+<pre class="example">NUMBERP thing
+NUMBER? thing
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is a number, <code>FALSE</code> otherwise.
+</p>
+<hr>
+<a name="VBARREDP"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#NUMBERP" accesskey="p" rel="prev">NUMBERP</a>, Up: <a href="usermanual.html#PREDICATES" accesskey="u" rel="up">PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="vbarredp"></a>
+<h4 class="unnumberedsubsec">vbarredp</h4>
+<a name="index-vbarredp"></a>
+<a name="index-vbarred_003f"></a>
+
+<div class="example">
+<pre class="example">VBARREDP char
+VBARRED? char
+BACKSLASHEDP char                               (library procedure)
+BACKSLASHED? char                               (library procedure)
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input character was originally entered into Logo
+within vertical bars (|) to prevent its usual special syntactic meaning,
+<code>FALSE</code> otherwise.  (Outputs <code>TRUE</code> only if the character is a
+backslashed space, tab, newline, or one of <code>()[]+-*/=&lt;&gt;&quot;:;\~?|</code> )
+</p>
+<p>The names <code>BACKSLASHEDP</code> and <code>BACKSLASHED?</code> are included in the
+Logo library for backward compatibility with the former names of this
+primitive, although it does <em>not</em> output <code>TRUE</code> for characters
+originally entered with backslashes.
+</p>
+
+
+<hr>
+<a name="QUERIES"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#PREDICATES" accesskey="p" rel="prev">PREDICATES</a>, Up: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="u" rel="up">DATA STRUCTURE PRIMITIVES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Queries"></a>
+<h3 class="section">2.5 Queries</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COUNT" accesskey="1">COUNT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ASCII" accesskey="2">ASCII</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RAWASCII" accesskey="3">RAWASCII</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CHAR" accesskey="4">CHAR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MEMBER" accesskey="5">MEMBER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOWERCASE" accesskey="6">LOWERCASE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UPPERCASE" accesskey="7">UPPERCASE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#STANDOUT" accesskey="8">STANDOUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PARSE" accesskey="9">PARSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RUNPARSE">RUNPARSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="COUNT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ASCII" accesskey="n" rel="next">ASCII</a>, Previous: <a href="usermanual.html#QUERIES" accesskey="p" rel="prev">QUERIES</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="count"></a>
+<h4 class="unnumberedsubsec">count</h4>
+<a name="index-count"></a>
+
+<div class="example">
+<pre class="example">COUNT thing
+</pre></div>
+
+<p>outputs the number of characters in the input, if the input is a word;
+outputs the number of members in the input, if it is a list or an array.
+(For an array, this may or may not be the index of the last member,
+depending on the array&rsquo;s origin.)
+</p>
+<hr>
+<a name="ASCII"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RAWASCII" accesskey="n" rel="next">RAWASCII</a>, Previous: <a href="usermanual.html#COUNT" accesskey="p" rel="prev">COUNT</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ascii"></a>
+<h4 class="unnumberedsubsec">ascii</h4>
+<a name="index-ascii"></a>
+
+<div class="example">
+<pre class="example">ASCII char
+</pre></div>
+
+<p>outputs the integer (between 0 and 255) that represents the input
+character in the ASCII code.  Interprets control characters as
+representing vbarred punctuation, and returns the character code for
+the corresponding punctuation character without vertical bars.  (Compare
+<code>RAWASCII</code>.)
+</p>
+<hr>
+<a name="RAWASCII"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CHAR" accesskey="n" rel="next">CHAR</a>, Previous: <a href="usermanual.html#ASCII" accesskey="p" rel="prev">ASCII</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="rawascii"></a>
+<h4 class="unnumberedsubsec">rawascii</h4>
+<a name="index-rawascii"></a>
+
+<div class="example">
+<pre class="example">RAWASCII char
+</pre></div>
+
+<p>outputs the integer (between 0 and 255) that represents the input
+character in the ASCII code.  Interprets control characters as
+representing themselves.  To find out the ASCII code of an arbitrary
+keystroke, use <tt>RAWASCII&nbsp;RC</tt><!-- /@w -->.
+</p>
+<hr>
+<a name="CHAR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MEMBER" accesskey="n" rel="next">MEMBER</a>, Previous: <a href="usermanual.html#RAWASCII" accesskey="p" rel="prev">RAWASCII</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="char"></a>
+<h4 class="unnumberedsubsec">char</h4>
+<a name="index-char"></a>
+
+<div class="example">
+<pre class="example">CHAR int
+</pre></div>
+
+<p>outputs the character represented in the ASCII code by the input, which
+must be an integer between 0 and 255.
+</p>
+<p>See <a href="usermanual.html#ASCII">ASCII</a> .
+</p>
+<hr>
+<a name="MEMBER"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOWERCASE" accesskey="n" rel="next">LOWERCASE</a>, Previous: <a href="usermanual.html#CHAR" accesskey="p" rel="prev">CHAR</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="member"></a>
+<h4 class="unnumberedsubsec">member</h4>
+<a name="index-member"></a>
+
+<div class="example">
+<pre class="example">MEMBER thing1 thing2
+</pre></div>
+
+<p>if <var>thing2</var> is a word or list and if <code>MEMBERP</code> with these inputs would
+output <code>TRUE</code>, outputs the portion of <var>thing2</var> from the first instance of
+<var>thing1</var> to the end.  If <code>MEMBERP</code> would output <code>FALSE</code>, outputs the empty
+word or list according to the type of <var>thing2</var>.  It is an error for
+<var>thing2</var> to be an array.
+</p>
+<p>See <a href="usermanual.html#MEMBERP">MEMBERP</a> .
+</p>
+<hr>
+<a name="LOWERCASE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UPPERCASE" accesskey="n" rel="next">UPPERCASE</a>, Previous: <a href="usermanual.html#MEMBER" accesskey="p" rel="prev">MEMBER</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="lowercase"></a>
+<h4 class="unnumberedsubsec">lowercase</h4>
+<a name="index-lowercase"></a>
+
+<div class="example">
+<pre class="example">LOWERCASE word
+</pre></div>
+
+<p>outputs a copy of the input word, but with all uppercase letters changed
+to the corresponding lowercase letter.
+</p>
+<hr>
+<a name="UPPERCASE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#STANDOUT" accesskey="n" rel="next">STANDOUT</a>, Previous: <a href="usermanual.html#LOWERCASE" accesskey="p" rel="prev">LOWERCASE</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="uppercase"></a>
+<h4 class="unnumberedsubsec">uppercase</h4>
+<a name="index-uppercase"></a>
+
+<div class="example">
+<pre class="example">UPPERCASE word
+</pre></div>
+
+<p>outputs a copy of the input word, but with all lowercase letters changed
+to the corresponding uppercase letter.
+</p>
+<hr>
+<a name="STANDOUT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PARSE" accesskey="n" rel="next">PARSE</a>, Previous: <a href="usermanual.html#UPPERCASE" accesskey="p" rel="prev">UPPERCASE</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="standout"></a>
+<h4 class="unnumberedsubsec">standout</h4>
+<a name="index-standout"></a>
+
+<div class="example">
+<pre class="example">STANDOUT thing
+</pre></div>
+
+<p>outputs a word that, when printed, will appear like the input but
+displayed in standout mode (boldface, reverse video, or whatever your
+version does for standout).  The word contains machine-specific magic
+characters at the beginning and end; in between is the printed form (as
+if displayed using <code>TYPE</code>) of the input.  The output is always a word,
+even if the input is of some other type, but it may include spaces and
+other formatting characters.  Note: a word output by <code>STANDOUT</code> while Logo
+is running on one machine will probably not have the desired effect if
+printed on another type of machine.
+</p>
+<p>In the Macintosh classic version, the way that standout works is incompatible with the
+use of characters whose ASCII code is greater than 127.  Therefore, you
+have a choice to make:  The instruction 
+</p><div class="example">
+<pre class="example">CANINVERSE 0 
+</pre></div>
+<p>disables standout, but enables the display of ASCII codes above 127, and
+the instruction
+</p><div class="example">
+<pre class="example">CANINVERSE 1 
+</pre></div>
+<p>restores the default situation in which standout is enabled and the
+extra graphic characters cannot be printed.
+</p>
+<hr>
+<a name="PARSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RUNPARSE" accesskey="n" rel="next">RUNPARSE</a>, Previous: <a href="usermanual.html#STANDOUT" accesskey="p" rel="prev">STANDOUT</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="parse"></a>
+<h4 class="unnumberedsubsec">parse</h4>
+<a name="index-parse"></a>
+
+<div class="example">
+<pre class="example">PARSE word
+</pre></div>
+
+<p>outputs the list that would result if the input word were entered in
+response to a <code>READLIST</code> operation.  That is, <tt>PARSE&nbsp;READWORD</tt><!-- /@w --> has the same
+value as <code>READLIST</code> for the same characters read.
+</p>
+<p>See <a href="usermanual.html#READLIST">READLIST</a> .
+</p>
+
+<hr>
+<a name="RUNPARSE"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#PARSE" accesskey="p" rel="prev">PARSE</a>, Up: <a href="usermanual.html#QUERIES" accesskey="u" rel="up">QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="runparse"></a>
+<h4 class="unnumberedsubsec">runparse</h4>
+<a name="index-runparse"></a>
+
+<div class="example">
+<pre class="example">RUNPARSE wordorlist
+</pre></div>
+
+<p>outputs the list that would result if the input word or list were
+entered as an instruction line; characters such as infix operators and
+parentheses are separate members of the output.  Note that sublists of a
+runparsed list are not themselves runparsed.
+</p>
+
+<hr>
+<a name="OBJECTS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#COMMUNICATION" accesskey="n" rel="next">COMMUNICATION</a>, Previous: <a href="usermanual.html#DATA-STRUCTURE-PRIMITIVES" accesskey="p" rel="prev">DATA STRUCTURE PRIMITIVES</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Objects"></a>
+<h2 class="chapter">3 Objects</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="1">OBJECT CONSTRUCTORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OBJECT-MUTATORS" accesskey="2">OBJECT MUTATORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OBJECT-SELECTORS" accesskey="3">OBJECT SELECTORS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MESSAGES" accesskey="4">MESSAGES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OBJECT-QUERIES" accesskey="5">OBJECT QUERIES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#USUAL" accesskey="6">USUAL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<p>Note: The object implementation in UCBLogo is new and still being
+worked on. It also is optional and may not be compiled into the
+version you are using. Bug reports and patches are greatly
+appreciated.
+</p>
+<p>An object is a data structure, like a list, except that instead of just
+a sequence of elements, an object has <var>named</var> elements, which are
+either variables or procedures.  (A procedure that belongs to an object
+is sometimes called a <var>method</var>.)  In the object metaphor, instead of
+just having the one computer that does everything, we think of each
+object as capable of doing things.  One object can ask another object to
+do something for it.
+</p>
+<p>At any moment, there is a <var>current object</var>.  That object might have
+its own version of procedures that are available globally and documented
+in this manual.  So workspace operations such as <code>pots</code> or
+<code>erase</code> might have different effects depending on the current
+object.
+</p>
+<p>The initial current object is called <code>logo</code>; there is an operation
+that outputs that object.  Every object has one or more <var>parents</var>,
+and ultimately the parent of the parent... of an object has to be
+<code>logo</code>.  The primitive procedures in this manual belong to the
+<code>logo</code> object, as do global variables.
+</p>
+<p>Turtles are objects.  This is valuable in part so that you can customize
+the behavior of a turtle.  For example, if you&rsquo;re simulating a
+kaleidoscope, you might want half your turtles to swap the meanings of
+the <code>left</code> and <code>right</code> commands.  But given what&rsquo;s said above
+about there being a current object, and that the initial current object
+is <code>logo</code>, which isn&rsquo;t a turtle, you might think that you can&rsquo;t run
+<code>forward 100</code> without first creating a turtle object and making it
+the current object.  But a goal of this object system is that things
+that were easy in traditional Logo should still be easy.  And so, in
+addition to the current object, there is also a <var>default turtle</var>; if
+a turtle procedure is addressed to an object that isn&rsquo;t a turtle, there
+is a <code>logo</code> procedure for each turtle procedure that does the
+equivalent of
+</p><div class="example">
+<pre class="example">to forward :distance
+ask defaultturtle [forward :distance]
+end
+</pre></div>
+
+<p>Unlike some other object oriented languages, Berkeley Logo does not
+distinguish between classes (kinds of objects, which mostly specify the
+procedures (the methods) of objects of that kind) and instances
+(individual concrete objects, with state memory in the form of variables
+belonging to the instance).  Instead we use <var>prototyping</var> OOP, in
+which any object (instance) can serve as the model, the prototype (the
+class), for other objects.
+</p>
+<p>Class/instance OOP is the right thing for large teams of programmers who
+need a detailed specification (in the form of class definitions) of the
+desired program behavior before they start writing code.  But
+prototyping OOP is the right thing for tinkering, for having a glimmer
+of an idea and playing around with it without a rigid specification.
+So, you want to have dogs in your program.  You start by <var>building a
+dog</var>, one you can see on the screen as you invent behaviors such as
+<code>roll.over</code> and <code>wag.tail</code>.  Then you make a bunch of objects
+with that dog as their parent, using that dog as a prototype.  But the
+prototype dog is still a particular dog, with a particular position,
+color, and so on.
+</p>
+<p>Having said that, sometimes you do want to distinguish a class object,
+which will mostly have procedures, with few or no variables, and its
+instance objects, which mostly inherit procedures from the class, but
+have their own individual variables.  To accommodate that style of work,
+we distinguish two ways to make a child object from a parent object.
+<code>Kindof</code> takes an object as input, and outputs a new object that
+inherits from the input object.  This is how to make a subclass that is
+mostly like the given class, but overrides certain behaviors.
+<code>Oneof</code> makes a child object, but <code>ask</code>s the new object to
+<code>exist</code> before outputting it.  Every object has an <code>exist</code>
+procedure, because it inherits one from <code>logo</code> if no intermediate
+ancestor specifies one.  The details come a little later in this
+section, in the <var>Constructors</var> subsection, but this is the general
+idea of how class/instance programming can be accommodated in a
+prototyping OOP language.
+</p>
+
+<hr>
+<a name="OBJECT-CONSTRUCTORS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="n" rel="next">OBJECT MUTATORS</a>, Previous: <a href="usermanual.html#OBJECTS" accesskey="p" rel="prev">OBJECTS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Constructors-1"></a>
+<h3 class="section">3.1 Constructors</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#KINDOF" accesskey="1">KINDOF</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SOMETHING" accesskey="2">SOMETHING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ONEOF" accesskey="3">ONEOF</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="KINDOF"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SOMETHING" accesskey="n" rel="next">SOMETHING</a>, Previous: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="p" rel="prev">OBJECT CONSTRUCTORS</a>, Up: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="u" rel="up">OBJECT CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="kindof"></a>
+<h4 class="unnumberedsubsec">kindof</h4>
+<a name="index-kindof"></a>
+
+<div class="example">
+<pre class="example">KINDOF object
+KINDOF objectlist
+(KINDOF object1 object2 ...)
+</pre></div>
+
+<p>creates and outputs an object whose parent is <var>object</var>, or whose
+parents are <var>object1</var>, <var>object2</var>, etc., or the elements of
+<var>objectlist</var>.  There must be at least one input, and if a list, it
+may not be empty.
+</p>
+<hr>
+<a name="SOMETHING"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ONEOF" accesskey="n" rel="next">ONEOF</a>, Previous: <a href="usermanual.html#KINDOF" accesskey="p" rel="prev">KINDOF</a>, Up: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="u" rel="up">OBJECT CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="something"></a>
+<h4 class="unnumberedsubsec">something</h4>
+<a name="index-something"></a>
+
+<div class="example">
+<pre class="example">SOMETHING
+</pre></div>
+
+<p>creates and outputs an object whose parent is the <code>Logo</code> object.
+<code>make &quot;foo something</code> is equivalent to <code>make &quot;foo kindof
+logo</code>.
+</p>
+
+<hr>
+<a name="ONEOF"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#SOMETHING" accesskey="p" rel="prev">SOMETHING</a>, Up: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="u" rel="up">OBJECT CONSTRUCTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="oneof"></a>
+<h4 class="unnumberedsubsec">oneof</h4>
+<a name="index-oneof"></a>
+
+<div class="example">
+<pre class="example">ONEOF object
+ONEOF objectlist
+(ONEOF object input1 input2 ...)
+(ONEOF objectlist input1 input2 ...)
+</pre></div>
+
+<p>creates an object whose parent is <var>object</var> or whose parents are the
+elements of <var>objectlist</var>.  <code>Ask</code>s the new object to
+<code>exist</code>, and then outputs the object.  Before the object is <code>Ask</code>ed to
+<code>exist</code>, all remaining inputs after the first are collected into a
+list, which is made the value of the global variable <code>initlist</code>.
+The convention is that <code>initlist</code> contains alternating names and
+values, which serve to <var>initialize</var> the newly created object.
+</p>
+<p>The output of <code>oneof</code> is usually called an <var>instance</var>.
+</p>
+<p>See <a href="usermanual.html#EXIST">EXIST</a>.
+</p>
+<hr>
+<a name="OBJECT-MUTATORS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="n" rel="next">OBJECT SELECTORS</a>, Previous: <a href="usermanual.html#OBJECT-CONSTRUCTORS" accesskey="p" rel="prev">OBJECT CONSTRUCTORS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Mutators"></a>
+<h3 class="section">3.2 Mutators</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EXIST" accesskey="1">EXIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#HAVE" accesskey="2">HAVE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#HAVEMAKE" accesskey="3">HAVEMAKE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="EXIST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#HAVE" accesskey="n" rel="next">HAVE</a>, Previous: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="p" rel="prev">OBJECT MUTATORS</a>, Up: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="u" rel="up">OBJECT MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="exist"></a>
+<h4 class="unnumberedsubsec">exist</h4>
+<a name="index-exist"></a>
+
+<div class="example">
+<pre class="example">exist
+</pre></div>
+
+<p>Initializes a new object.  It is run automatically by <code>oneof</code>.
+</p>
+<p>The default <code>exist</code> procedure creates object-local variables with
+the odd-numbered elements of <code>initlist</code> as names, and the
+corresponding even-numbered elements as values.  Thus
+</p>
+<div class="example">
+<pre class="example">make &quot;obj (oneof logo &quot;foo &quot;bar &quot;baz &quot;garply)
+</pre></div>
+
+<p>will create a new object and then tell it to <code>exist</code>, which will in
+effect tell it to
+</p>
+<div class="example">
+<pre class="example">havemake &quot;foo &quot;bar
+havemake &quot;baz &quot;garply
+</pre></div>
+
+<p>Example:  Objects do not usually keep track of their instances.  To make
+one that does, you can specialize <code>exist</code>:
+</p>
+<div class="example">
+<pre class="example">? make &quot;recordingobject something
+? ask :recordingobject [havemake &quot;instances []]
+? ask :recordingobject [to exist]
+&gt; usual.exist
+&gt; make &quot;instances [fput self :instances]
+&gt; end
+</pre></div>
+
+<p>See <a href="usermanual.html#ONEOF">ONEOF</a>. <a href="usermanual.html#USUAL">USUAL</a>, <a href="usermanual.html#HAVEMAKE">HAVEMAKE</a>.
+</p>
+<hr>
+<a name="HAVE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#HAVEMAKE" accesskey="n" rel="next">HAVEMAKE</a>, Previous: <a href="usermanual.html#EXIST" accesskey="p" rel="prev">EXIST</a>, Up: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="u" rel="up">OBJECT MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="have"></a>
+<h4 class="unnumberedsubsec">have</h4>
+<a name="index-have"></a>
+
+<div class="example">
+<pre class="example">HAVE name
+HAVE namelist
+</pre></div>
+
+<p>tells the current object to create an object variable named <var>name</var>,
+or object variables whose names are the elements of <var>namelist</var>.
+</p>
+<p>See <a href="usermanual.html#HAVEMAKE">HAVEMAKE</a>.
+</p>
+<hr>
+<a name="HAVEMAKE"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#HAVE" accesskey="p" rel="prev">HAVE</a>, Up: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="u" rel="up">OBJECT MUTATORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="havemake"></a>
+<h4 class="unnumberedsubsec">havemake</h4>
+<a name="index-havemake"></a>
+
+<div class="example">
+<pre class="example">HAVEMAKE name value
+</pre></div>
+
+<p>tells the current object to create an object variable named <var>name</var>,
+and give it the value <var>value</var>.  Since procedure input values are
+computed before the procedure is run, the <var>value</var> expression may
+refer to the object&rsquo;s parent&rsquo;s variable named <var>name</var>:
+</p>
+<div class="example">
+<pre class="example">havemake &quot;size :size/2
+</pre></div>
+
+<p>See <a href="usermanual.html#HAVE">HAVE</a>, <a href="usermanual.html#MAKE">MAKE</a>.
+</p>
+
+<hr>
+<a name="OBJECT-SELECTORS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MESSAGES" accesskey="n" rel="next">MESSAGES</a>, Previous: <a href="usermanual.html#OBJECT-MUTATORS" accesskey="p" rel="prev">OBJECT MUTATORS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="selectors"></a>
+<h3 class="section">3.3 selectors</h3>
+
+<p>All selectors apply to the current object.  If you want to select from
+another object, use <code>ask</code>.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SELF" accesskey="1">SELF</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PARENTS" accesskey="2">PARENTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MYNAMES" accesskey="3">MYNAMES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MYNAMEP" accesskey="4">MYNAMEP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MYPROCS" accesskey="5">MYPROCS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MYPROCP" accesskey="6">MYPROCP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="SELF"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PARENTS" accesskey="n" rel="next">PARENTS</a>, Previous: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="p" rel="prev">OBJECT SELECTORS</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="self"></a>
+<h4 class="unnumberedsubsec">self</h4>
+<a name="index-self"></a>
+
+<div class="example">
+<pre class="example">SELF
+</pre></div>
+
+<p>outputs the current object (not its name!).
+</p>
+<hr>
+<a name="PARENTS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MYNAMES" accesskey="n" rel="next">MYNAMES</a>, Previous: <a href="usermanual.html#SELF" accesskey="p" rel="prev">SELF</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="parents"></a>
+<h4 class="unnumberedsubsec">parents</h4>
+<a name="index-parents"></a>
+
+<div class="example">
+<pre class="example">PARENTS
+</pre></div>
+
+<p>outputs a list containing the parent(s) of the current object.  All
+objects except for <code>logo</code> have at least one parent.  Note that the
+elements of the output list are objects, not names of objects.
+</p>
+<p>Examples:
+</p>
+<div class="example">
+<pre class="example">to grandparents
+output remdup (map.se [ask ? [parents]] parents)
+end
+
+to ancestors
+if emptyp parents [output (list self)]   ; can happen only if self=logo
+output remdup sentence parents map.se [ask ? [ancestors]] parents
+end
+</pre></div>
+
+<hr>
+<a name="MYNAMES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MYNAMEP" accesskey="n" rel="next">MYNAMEP</a>, Previous: <a href="usermanual.html#PARENTS" accesskey="p" rel="prev">PARENTS</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="mynames"></a>
+<h4 class="unnumberedsubsec">mynames</h4>
+<a name="index-mynames"></a>
+
+<div class="example">
+<pre class="example">MYNAMES
+</pre></div>
+
+<p>output a list of the names of the object variables owned (not inherited)
+by the current object.
+</p>
+<hr>
+<a name="MYNAMEP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MYPROCS" accesskey="n" rel="next">MYPROCS</a>, Previous: <a href="usermanual.html#MYNAMES" accesskey="p" rel="prev">MYNAMES</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="mynamep"></a>
+<h4 class="unnumberedsubsec">mynamep</h4>
+<a name="index-mynamep"></a>
+<a name="index-myname_003f"></a>
+
+<div class="example">
+<pre class="example">MYNAMEP name
+MYNAME? name
+</pre></div>
+
+<p>outputs <code>true</code> if <var>name</var> is the name of an object variable
+owned (not inherited) by the current object, <code>false</code> otherwise.
+</p>
+<p>See <a href="usermanual.html#MYNAMES">MYNAMES</a>.
+</p>
+<hr>
+<a name="MYPROCS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MYPROCP" accesskey="n" rel="next">MYPROCP</a>, Previous: <a href="usermanual.html#MYNAMEP" accesskey="p" rel="prev">MYNAMEP</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="myprocs"></a>
+<h4 class="unnumberedsubsec">myprocs</h4>
+<a name="index-myprocs"></a>
+
+<div class="example">
+<pre class="example">MYPROCS
+</pre></div>
+
+<p>outputs a list of the names of the procedures (methods) owned by (not
+inherited by) the current object.
+</p>
+<hr>
+<a name="MYPROCP"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#MYPROCS" accesskey="p" rel="prev">MYPROCS</a>, Up: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="u" rel="up">OBJECT SELECTORS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="myprocp"></a>
+<h4 class="unnumberedsubsec">myprocp</h4>
+<a name="index-myprocp"></a>
+<a name="index-myproc_003f"></a>
+
+<div class="example">
+<pre class="example">MYPROCP name
+MYPROC? name
+</pre></div>
+
+<p>outputs <code>true</code> if <var>name</var> is the name of a procedure (a method)
+owned (not inherited) by the current object, <code>false</code> otherwise.
+</p>
+<p>See <a href="usermanual.html#MYPROCS">MYPROCS</a>.
+</p>
+<hr>
+<a name="MESSAGES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OBJECT-QUERIES" accesskey="n" rel="next">OBJECT QUERIES</a>, Previous: <a href="usermanual.html#OBJECT-SELECTORS" accesskey="p" rel="prev">OBJECT SELECTORS</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Messages"></a>
+<h3 class="section">3.4 Messages</h3>
+
+<p>The procedures in this section are for changing the current object,
+either permanently (unless changed again) or just to send one message.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TALKTO" accesskey="1">TALKTO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ASK" accesskey="2">ASK</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="TALKTO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ASK" accesskey="n" rel="next">ASK</a>, Up: <a href="usermanual.html#MESSAGES" accesskey="u" rel="up">MESSAGES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="talkto"></a>
+<h4 class="unnumberedsubsec">talkto</h4>
+<a name="index-talkto"></a>
+
+<div class="example">
+<pre class="example">TALKTO object
+</pre></div>
+
+<p>changes the current object to <var>object</var>.  (Note that the input is an
+object, not the name of an object.)  <code>Talkto</code> can be used only at
+toplevel or within a <code>pause</code>  (when typing into a Logo prompt, not
+inside a procedure).
+</p>
+<p>See <a href="usermanual.html#ASK">ASK</a>.
+</p>
+<hr>
+<a name="ASK"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#TALKTO" accesskey="p" rel="prev">TALKTO</a>, Up: <a href="usermanual.html#MESSAGES" accesskey="u" rel="up">MESSAGES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ask"></a>
+<h4 class="unnumberedsubsec">ask</h4>
+<a name="index-ask"></a>
+
+<div class="example">
+<pre class="example">ASK object runlist
+</pre></div>
+
+<p>command or operation.  Temporarily sets the current object to
+<var>object</var> while running the instructions or expression in
+<var>runlist</var>.  If <var>runlist</var> is an expression, then <code>ask</code>
+outputs its value.  As soon as <var>runlist</var> finishes, the current
+object is set back to its previous value.
+</p>
+<p>See <a href="usermanual.html#TALKTO">TALKTO</a>.
+</p>
+<hr>
+<a name="OBJECT-QUERIES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#USUAL" accesskey="n" rel="next">USUAL</a>, Previous: <a href="usermanual.html#MESSAGES" accesskey="p" rel="prev">MESSAGES</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Queries-1"></a>
+<h3 class="section">3.5 Queries</h3>
+
+<p>These procedures are particularly useful when debugging.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WHOSENAME" accesskey="1">WHOSENAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WHOSEPROC" accesskey="2">WHOSEPROC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="WHOSENAME"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WHOSEPROC" accesskey="n" rel="next">WHOSEPROC</a>, Previous: <a href="usermanual.html#OBJECT-QUERIES" accesskey="p" rel="prev">OBJECT QUERIES</a>, Up: <a href="usermanual.html#OBJECT-QUERIES" accesskey="u" rel="up">OBJECT QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="whosename"></a>
+<h4 class="unnumberedsubsec">whosename</h4>
+<a name="index-whosename"></a>
+
+<div class="example">
+<pre class="example">WHOSENAME name
+</pre></div>
+
+<p>outputs the object that owns the currently accessible variable named
+<var>name</var>.  If there is no such accessible variable, or it&rsquo;s a
+procedure-local variable, an error is signalled.
+</p>
+<hr>
+<a name="WHOSEPROC"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#WHOSENAME" accesskey="p" rel="prev">WHOSENAME</a>, Up: <a href="usermanual.html#OBJECT-QUERIES" accesskey="u" rel="up">OBJECT QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="whoseproc"></a>
+<h4 class="unnumberedsubsec">whoseproc</h4>
+<a name="index-whoseproc"></a>
+
+<div class="example">
+<pre class="example">WHOSEPROC name
+</pre></div>
+
+<p>outputs the object that owns the currently accessible procedure named
+<var>name</var>.  If there is no such procedure, an error is signalled.
+</p>
+<hr>
+<a name="USUAL"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#OBJECT-QUERIES" accesskey="p" rel="prev">OBJECT QUERIES</a>, Up: <a href="usermanual.html#OBJECTS" accesskey="u" rel="up">OBJECTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="usual"></a>
+<h3 class="section">3.6 usual</h3>
+<a name="index-usual"></a>
+
+<div class="example">
+<pre class="example">to foo ...
+...
+USUAL.foo ...
+...
+end
+</pre></div>
+
+<p><code>Usual</code> is not a procedure.  It&rsquo;s a special notation that can be
+used only inside a procedure definition; the word <code>usual</code> must be
+followed by a period and then the name of the procedure being defined.
+(That is, <code>usual.foo</code> can be used only inside the definition of
+<code>foo</code>.)  It refers to the procedure that would be inherited from a
+parent if this (re)definition didn&rsquo;t exist; it allows a specialized
+method to invoke the ordinary version.
+</p>
+<div class="example">
+<pre class="example">make &quot;bigturtle kindof turtle
+ask :bigturtle [to forward :length]
+usual.forward 2 * :length
+end
+</pre></div>
+
+<p>If there is no inherited procedure of the same name, then calling
+<code>usual.___</code> does nothing if used as a command, or outputs an empty
+list if used as an operation.
+</p>
+<p>If an object has multiple parents, the behavior of <code>usual</code> may be
+confusing.  Suppose the current object has two parents, <code>A</code> and
+<code>B</code>, in that order.  Then <code>usual.foo</code> in the current object&rsquo;s
+own <code>foo</code> method refers to object <code>A</code>&rsquo;s <code>foo</code>, but
+<code>usual.foo</code> within object <code>A</code>&rsquo;s <code>foo</code> refers to object
+<code>B</code>&rsquo;s <code>foo</code> in this situation, even though <code>A</code>&rsquo;s parent
+isn&rsquo;t <code>B</code>.
+</p>
+<div class="example">
+<pre class="example">make &quot;dashedturtle kindof turtle
+ask :dashedturtle [to forward :length]
+if not pendownp [usual.forward :length stop]
+if :length &lt;= 5 [usual.forward :length stop]
+usual.forward 5
+penup
+usual.forward (ifelse :length &lt;= 10 [:length-5] [5])
+pendown
+if :length &gt; 10 [forward :length-10]    ; Note no USUAL here.
+end
+
+ask :dashedturtle [forward 25]
+- - -►
+
+make &quot;bigdashed oneof (list :bigturtle :dashedturtle)
+make &quot;dashedbig oneof (list :dashedturtle :bigturtle)
+ask :bigdashed [forward 25]
+- - - - - ►
+ask :dashedbig [forward 25]
+--  --  --►
+</pre></div>
+
+
+<hr>
+<a name="COMMUNICATION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ARITHMETIC" accesskey="n" rel="next">ARITHMETIC</a>, Previous: <a href="usermanual.html#OBJECTS" accesskey="p" rel="prev">OBJECTS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Communication"></a>
+<h2 class="chapter">4 Communication</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TRANSMITTERS" accesskey="1">TRANSMITTERS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RECEIVERS" accesskey="2">RECEIVERS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FILE-ACCESS" accesskey="3">FILE ACCESS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TERMINAL-ACCESS" accesskey="4">TERMINAL ACCESS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="TRANSMITTERS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RECEIVERS" accesskey="n" rel="next">RECEIVERS</a>, Previous: <a href="usermanual.html#COMMUNICATION" accesskey="p" rel="prev">COMMUNICATION</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Transmitters"></a>
+<h3 class="section">4.1 Transmitters</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRINT" accesskey="1">PRINT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TYPE" accesskey="2">TYPE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SHOW" accesskey="3">SHOW</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<p>Note:  If there is a variable named <code>PRINTDEPTHLIMIT</code> with a nonnegative
+integer value, then complex list and array structures will be printed
+only to the allowed depth.  That is, members of members of... of members
+will be allowed only so far.  The members omitted because
+they are just past the depth limit are indicated by an ellipsis for each
+one, so a too-deep list of two members will print as <tt>[...&nbsp;...]</tt><!-- /@w -->.
+</p>
+<p>If there is a variable named <code>PRINTWIDTHLIMIT</code> with a nonnegative integer
+value, then only the first so many members of any array or
+list will be printed.  A single ellipsis replaces all missing data
+within the structure.  The width limit also applies to the number of
+characters printed in a word, except that a <code>PRINTWIDTHLIMIT</code> between 0 and 9
+will be treated as if it were 10 when applied to words.  This limit
+applies not only to the top-level printed datum but to any substructures
+within it.
+</p>
+<p>See <a href="usermanual.html#PRINTDEPTHLIMIT">PRINTDEPTHLIMIT</a> ,
+<a href="usermanual.html#PRINTWIDTHLIMIT">PRINTWIDTHLIMIT</a>
+</p>
+<p>If there is a variable named <code>FULLPRINTP</code> whose value is <code>TRUE</code>, then
+words that were created using backslash or vertical bar (to include
+characters that would otherwise not be treated as part of a word) are
+printed with the backslashes or vertical bars shown, so that the printed
+result could be re-read by Logo to produce the same value.  If
+<code>FULLPRINTP</code> is <code>TRUE</code> then the empty word (however it was created) prints
+as <code>||</code>.  (Otherwise it prints as nothing at all.)
+</p>
+<p>See <a href="usermanual.html#FULLPRINTP">FULLPRINTP</a> .
+</p>
+<hr>
+<a name="PRINT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TYPE" accesskey="n" rel="next">TYPE</a>, Previous: <a href="usermanual.html#TRANSMITTERS" accesskey="p" rel="prev">TRANSMITTERS</a>, Up: <a href="usermanual.html#TRANSMITTERS" accesskey="u" rel="up">TRANSMITTERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="print"></a>
+<h4 class="unnumberedsubsec">print</h4>
+<a name="index-print"></a>
+<a name="index-pr"></a>
+
+<div class="example">
+<pre class="example">PRINT thing
+PR thing
+(PRINT thing1 thing2 ...)
+(PR thing1 thing2 ...)
+</pre></div>
+
+<p>command.  Prints the input or inputs to the current write stream
+(initially the screen).  All the inputs are printed on a single line,
+separated by spaces, ending with a newline.  If an input is a list,
+square brackets are not printed around it, but brackets are printed
+around sublists.  Braces are always printed around arrays.
+</p>
+<hr>
+<a name="TYPE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SHOW" accesskey="n" rel="next">SHOW</a>, Previous: <a href="usermanual.html#PRINT" accesskey="p" rel="prev">PRINT</a>, Up: <a href="usermanual.html#TRANSMITTERS" accesskey="u" rel="up">TRANSMITTERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="type"></a>
+<h4 class="unnumberedsubsec">type</h4>
+<a name="index-type"></a>
+
+<div class="example">
+<pre class="example">TYPE thing
+(TYPE thing1 thing2 ...)
+</pre></div>
+
+<p>command.  Prints the input or inputs like <code>PRINT</code>, except that no newline
+character is printed at the end and multiple inputs are not separated by
+spaces.  Note: printing to the screen is ordinarily <em>line buffered</em>;
+that is, the characters you print using <code>TYPE</code> will not actually appear on
+the screen until either a newline character is printed (for example, by
+<code>PRINT</code> or <code>SHOW</code>) or Logo tries to read from the keyboard (either at the
+request of your program or after an instruction prompt).  This buffering
+makes the program much faster than it would be if each character
+appeared immediately, and in most cases the effect is not disconcerting.
+To accommodate programs that do a lot of positioned text display using
+<code>TYPE</code>, Logo will force printing whenever <code>SETCURSOR</code> is invoked.  This
+solves most buffering problems.  Still, on occasion you may find it
+necessary to force the buffered characters to be printed explicitly;
+this can be done using the <code>WAIT</code> command.  <tt>WAIT&nbsp;0</tt><!-- /@w --> will force printing
+without actually waiting.
+</p>
+<p>See <a href="usermanual.html#SETCURSOR">SETCURSOR</a> ,
+<a href="usermanual.html#WAIT">WAIT</a>
+</p>
+<hr>
+<a name="SHOW"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#TYPE" accesskey="p" rel="prev">TYPE</a>, Up: <a href="usermanual.html#TRANSMITTERS" accesskey="u" rel="up">TRANSMITTERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="show"></a>
+<h4 class="unnumberedsubsec">show</h4>
+<a name="index-show"></a>
+
+<div class="example">
+<pre class="example">SHOW thing
+(SHOW thing1 thing2 ...)
+</pre></div>
+
+<p>command.  Prints the input or inputs like <code>PRINT</code>, except that if an input
+is a list it is printed inside square brackets.
+</p>
+<p>See <a href="usermanual.html#PRINT">PRINT</a> .
+</p>
+
+<hr>
+<a name="RECEIVERS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FILE-ACCESS" accesskey="n" rel="next">FILE ACCESS</a>, Previous: <a href="usermanual.html#TRANSMITTERS" accesskey="p" rel="prev">TRANSMITTERS</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Receivers"></a>
+<h3 class="section">4.2 Receivers</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#READLIST" accesskey="1">READLIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#READWORD" accesskey="2">READWORD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#READRAWLINE" accesskey="3">READRAWLINE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#READCHAR" accesskey="4">READCHAR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#READCHARS" accesskey="5">READCHARS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SHELL" accesskey="6">SHELL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="READLIST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#READWORD" accesskey="n" rel="next">READWORD</a>, Previous: <a href="usermanual.html#RECEIVERS" accesskey="p" rel="prev">RECEIVERS</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="readlist"></a>
+<h4 class="unnumberedsubsec">readlist</h4>
+<a name="index-readlist"></a>
+<a name="index-rl"></a>
+
+<div class="example">
+<pre class="example">READLIST
+RL
+</pre></div>
+
+<p>reads a line from the read stream (initially the keyboard) and outputs
+that line as a list.  The line is separated into members as though it
+were typed in square brackets in an instruction.  If the read stream is
+a file, and the end of file is reached, <code>READLIST</code> outputs the empty word
+(not the empty list).  <code>READLIST</code> processes backslash, vertical bar, and
+tilde characters in the read stream; the output list will not contain
+these characters but they will have had their usual effect.  <code>READLIST</code>
+does not, however, treat semicolon as a comment character.
+</p>
+<hr>
+<a name="READWORD"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#READRAWLINE" accesskey="n" rel="next">READRAWLINE</a>, Previous: <a href="usermanual.html#READLIST" accesskey="p" rel="prev">READLIST</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="readword"></a>
+<h4 class="unnumberedsubsec">readword</h4>
+<a name="index-readword"></a>
+<a name="index-rw"></a>
+
+<div class="example">
+<pre class="example">READWORD
+RW
+</pre></div>
+
+<p>reads a line from the read stream and outputs that line as a word.  The
+output is a single word even if the line contains spaces, brackets, etc.
+If the read stream is a file, and the end of file is reached, <code>READWORD</code>
+outputs the empty list (not the empty word).  <code>READWORD</code> processes
+backslash, vertical bar, and tilde characters in the read stream.  In
+the case of a tilde used for line continuation, the output word <em>does</em>
+include the tilde and the newline characters, so that the user program
+can tell exactly what the user entered.  Vertical bars in the line are
+also preserved in the output.  Backslash characters are not preserved in
+the output.
+</p>
+
+<hr>
+<a name="READRAWLINE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#READCHAR" accesskey="n" rel="next">READCHAR</a>, Previous: <a href="usermanual.html#READWORD" accesskey="p" rel="prev">READWORD</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="readrawline"></a>
+<h4 class="unnumberedsubsec">readrawline</h4>
+<a name="index-readrawline"></a>
+
+<div class="example">
+<pre class="example">READRAWLINE
+</pre></div>
+
+<p>reads a line from the read stream and outputs that line as a word.  The
+output is a single word even if the line contains spaces, brackets, etc.
+If the read stream is a file, and the end of file is reached, <code>READRAWLINE</code>
+outputs the empty list (not the empty word).  <code>READRAWLINE</code> outputs the
+exact string of characters as they appear in the line, with no special
+meaning for backslash, vertical bar, tilde, or any other formatting
+characters.
+</p>
+<p>See <a href="usermanual.html#READWORD">READWORD</a> .
+</p>
+<hr>
+<a name="READCHAR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#READCHARS" accesskey="n" rel="next">READCHARS</a>, Previous: <a href="usermanual.html#READRAWLINE" accesskey="p" rel="prev">READRAWLINE</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="readchar"></a>
+<h4 class="unnumberedsubsec">readchar</h4>
+<a name="index-readchar"></a>
+<a name="index-rc"></a>
+
+<div class="example">
+<pre class="example">READCHAR
+RC
+</pre></div>
+
+<p>reads a single character from the read stream and outputs that character
+as a word.  If the read stream is a file, and the end of file is
+reached, <code>READCHAR</code> outputs the empty list (not the empty word).  If the
+read stream is the keyboard, echoing is turned off when <code>READCHAR</code> is
+invoked, and remains off until <code>READLIST</code> or <code>READWORD</code> is invoked or a Logo
+prompt is printed.  Backslash, vertical bar, and tilde characters have
+no special meaning in this context.
+</p>
+<p>See <a href="usermanual.html#READLIST">READLIST</a> .
+</p>
+<hr>
+<a name="READCHARS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SHELL" accesskey="n" rel="next">SHELL</a>, Previous: <a href="usermanual.html#READCHAR" accesskey="p" rel="prev">READCHAR</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="readchars"></a>
+<h4 class="unnumberedsubsec">readchars</h4>
+<a name="index-readchars"></a>
+<a name="index-rcs"></a>
+
+<div class="example">
+<pre class="example">READCHARS num
+RCS num
+</pre></div>
+
+<p>reads <var>num</var> characters from the read stream and outputs those characters
+as a word.  If the read stream is a file, and the end of file is
+reached, <code>READCHARS</code> outputs the empty list (not the empty word).  If the
+read stream is the keyboard, echoing is turned off when <code>READCHARS</code> is
+invoked, and remains off until <code>READLIST</code> or <code>READWORD</code> is invoked or a Logo
+prompt is printed.  Backslash, vertical bar, and tilde characters have
+no special meaning in this context.
+</p>
+<p>See <a href="usermanual.html#READLIST">READLIST</a> ,
+<a href="usermanual.html#READWORD">READWORD</a>
+</p>
+<hr>
+<a name="SHELL"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#READCHARS" accesskey="p" rel="prev">READCHARS</a>, Up: <a href="usermanual.html#RECEIVERS" accesskey="u" rel="up">RECEIVERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="shell"></a>
+<h4 class="unnumberedsubsec">shell</h4>
+<a name="index-shell"></a>
+
+<div class="example">
+<pre class="example">SHELL command
+(SHELL command wordflag)
+</pre></div>
+
+<p>Under Unix, outputs the result of running <var>command</var> as a shell command.
+(The command is sent to &lsquo;<samp>/bin/sh</samp>&rsquo;, not &lsquo;<samp>csh</samp>&rsquo; or other alternatives.)
+If the command is a literal list in the instruction line, and if you want a
+backslash character sent to the shell, you must use <code>\\</code> to get the
+backslash through Logo&rsquo;s reader intact.  The output is a list containing
+one member for each line generated by the shell command.  Ordinarily
+each such line is represented by a list in the output, as though the
+line were read using <code>READLIST</code>.  If a second input is given, regardless
+of the value of the input, each line is represented by a word in the
+output as though it were read with <code>READWORD</code>.  Example:
+</p>
+<div class="example">
+<pre class="example">to dayofweek
+output first first shell [date]
+end
+</pre></div>
+
+<p>This is <code>first first</code> to extract the first word of the first (and only)
+line of the shell output.
+</p>
+<p>Under MacOS X, <code>SHELL</code> works as under Unix.  <code>SHELL</code> is not
+available under Mac Classic.
+</p>
+<p>Under DOS, <code>SHELL</code> is a command, not an operation; it sends its input to a
+DOS command processor but does not collect the result of the command.
+</p>
+<p>Under Windows, the wxWidgets version of Logo behaves as under Unix (except
+that DOS-style commands are understood; use <code>dir</code> rather than <code>ls</code>).
+The non-wxWidgets version behaves like the DOS version.
+</p>
+
+<hr>
+<a name="FILE-ACCESS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="n" rel="next">TERMINAL ACCESS</a>, Previous: <a href="usermanual.html#RECEIVERS" accesskey="p" rel="prev">RECEIVERS</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="File-Access"></a>
+<h3 class="section">4.3 File Access</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETPREFIX" accesskey="1">SETPREFIX</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PREFIX" accesskey="2">PREFIX</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OPENREAD" accesskey="3">OPENREAD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OPENWRITE" accesskey="4">OPENWRITE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OPENAPPEND" accesskey="5">OPENAPPEND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OPENUPDATE" accesskey="6">OPENUPDATE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CLOSE" accesskey="7">CLOSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ALLOPEN" accesskey="8">ALLOPEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CLOSEALL" accesskey="9">CLOSEALL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERASEFILE">ERASEFILE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DRIBBLE">DRIBBLE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NODRIBBLE">NODRIBBLE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETREAD">SETREAD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETWRITE">SETWRITE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#READER">READER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WRITER">WRITER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETREADPOS">SETREADPOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETWRITEPOS">SETWRITEPOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#READPOS">READPOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WRITEPOS">WRITEPOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EOFP">EOFP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FILEP">FILEP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="SETPREFIX"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PREFIX" accesskey="n" rel="next">PREFIX</a>, Previous: <a href="usermanual.html#FILE-ACCESS" accesskey="p" rel="prev">FILE ACCESS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setprefix"></a>
+<h4 class="unnumberedsubsec">setprefix</h4>
+<a name="index-setprefix"></a>
+
+<div class="example">
+<pre class="example">SETPREFIX string
+</pre></div>
+
+<p>command.  Sets a prefix that will be used as the implicit beginning of
+filenames in <code>OPENREAD</code>, <code>OPENWRITE</code>, <code>OPENAPPEND</code>,
+<code>OPENUPDATE</code>, <code>LOAD</code>, and <code>SAVE</code> commands.  Logo will put the
+appropriate separator character (slash for Unix, backslash for DOS/Windows,
+colon for MacOS Classic) between the prefix and the filename entered by the
+user.  The input to <code>SETPREFIX</code> must be a word, unless it is the empty list, to
+indicate that there should be no prefix.
+</p>
+<p>See <a href="usermanual.html#OPENREAD">OPENREAD</a> , 
+See <a href="usermanual.html#OPENWRITE">OPENWRITE</a> ,
+See <a href="usermanual.html#OPENAPPEND">OPENAPPEND</a> ,
+See <a href="usermanual.html#OPENUPDATE">OPENUPDATE</a> ,
+See <a href="usermanual.html#LOAD">LOAD</a> ,
+See <a href="usermanual.html#SAVE">SAVE</a> .
+</p>
+<hr>
+<a name="PREFIX"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OPENREAD" accesskey="n" rel="next">OPENREAD</a>, Previous: <a href="usermanual.html#SETPREFIX" accesskey="p" rel="prev">SETPREFIX</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="prefix"></a>
+<h4 class="unnumberedsubsec">prefix</h4>
+<a name="index-prefix"></a>
+
+<div class="example">
+<pre class="example">PREFIX
+</pre></div>
+
+<p>outputs the current file prefix, or [] if there is no prefix.
+</p>
+<p>See <a href="usermanual.html#SETPREFIX">SETPREFIX</a> .
+</p>
+
+<hr>
+<a name="OPENREAD"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OPENWRITE" accesskey="n" rel="next">OPENWRITE</a>, Previous: <a href="usermanual.html#PREFIX" accesskey="p" rel="prev">PREFIX</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="openread"></a>
+<h4 class="unnumberedsubsec">openread</h4>
+<a name="index-openread"></a>
+
+<div class="example">
+<pre class="example">OPENREAD filename
+</pre></div>
+
+<p>command.  Opens the named file for reading.  The read position is
+initially at the beginning of the file.
+</p>
+<hr>
+<a name="OPENWRITE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OPENAPPEND" accesskey="n" rel="next">OPENAPPEND</a>, Previous: <a href="usermanual.html#OPENREAD" accesskey="p" rel="prev">OPENREAD</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="openwrite"></a>
+<h4 class="unnumberedsubsec">openwrite</h4>
+<a name="index-openwrite"></a>
+
+<div class="example">
+<pre class="example">OPENWRITE filename
+</pre></div>
+
+<p>command.  Opens the named file for writing.  If the file already
+existed, the old version is deleted and a new, empty file created.
+</p>
+<p><code>OPENWRITE</code>, but not the other <code>OPEN</code> variants, will accept as input
+a two-element list, in which the first element must be a variable
+name, and the second must be a positive integer.  A character
+buffer of the specified size will be created.  When a <code>SETWRITE</code> is
+done with this same list (in the sense of .EQ, not a copy, so
+you must do something like
+</p>
+<div class="example">
+<pre class="example">? make &quot;buf [foo 100]
+? openwrite :buf
+? setwrite :buf
+    [...]
+? close :buf
+</pre></div>
+
+<p>and not just
+</p>
+<div class="example">
+<pre class="example">? openwrite [foo 100]
+? setwrite [foo 100]
+</pre></div>
+
+<p>and so on), the printed characters are stored in the buffer;
+when a <code>CLOSE</code> is done with the same list as input, the characters
+from the buffer (treated as one long word, even if spaces and
+newlines are included) become the value of the specified variable.
+</p>
+<hr>
+<a name="OPENAPPEND"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OPENUPDATE" accesskey="n" rel="next">OPENUPDATE</a>, Previous: <a href="usermanual.html#OPENWRITE" accesskey="p" rel="prev">OPENWRITE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="openappend"></a>
+<h4 class="unnumberedsubsec">openappend</h4>
+<a name="index-openappend"></a>
+
+<div class="example">
+<pre class="example">OPENAPPEND filename
+</pre></div>
+
+<p>command.  Opens the named file for writing.  If the file already exists,
+the write position is initially set to the end of the old file, so that
+newly written data will be appended to it.
+</p>
+<hr>
+<a name="OPENUPDATE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CLOSE" accesskey="n" rel="next">CLOSE</a>, Previous: <a href="usermanual.html#OPENAPPEND" accesskey="p" rel="prev">OPENAPPEND</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="openupdate"></a>
+<h4 class="unnumberedsubsec">openupdate</h4>
+<a name="index-openupdate"></a>
+
+<div class="example">
+<pre class="example">OPENUPDATE filename
+</pre></div>
+
+<p>command.  Opens the named file for reading and writing.  The read and
+write position is initially set to the end of the old file, if any.
+Note: each open file has only one position, for both reading and
+writing.  If a file opened for update is both <code>READER</code> and <code>WRITER</code> at the
+same time, then <code>SETREADPOS</code> will also affect <code>WRITEPOS</code> and vice versa.
+Also, if you alternate reading and writing the same file, you must
+<code>SETREADPOS</code> between a write and a read, and <code>SETWRITEPOS</code> between a read
+and a write.
+</p>
+<p>See <a href="usermanual.html#READER">READER</a> ,
+<a href="usermanual.html#WRITER">WRITER</a> ,
+<a href="usermanual.html#SETREADPOS">SETREADPOS</a> ,
+<a href="usermanual.html#SETWRITEPOS">SETWRITEPOS</a>
+</p>
+<hr>
+<a name="CLOSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ALLOPEN" accesskey="n" rel="next">ALLOPEN</a>, Previous: <a href="usermanual.html#OPENUPDATE" accesskey="p" rel="prev">OPENUPDATE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="close"></a>
+<h4 class="unnumberedsubsec">close</h4>
+<a name="index-close"></a>
+
+<div class="example">
+<pre class="example">CLOSE filename
+</pre></div>
+
+<p>command.  Closes the named file.  If the file was currently the
+reader or writer, then the reader or writer is changed to the
+keyboard or screen, as if <tt>SETREAD&nbsp;[]</tt><!-- /@w --> or <tt>SETWRITE&nbsp;[]</tt><!-- /@w --> had been done.
+</p>
+
+<hr>
+<a name="ALLOPEN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CLOSEALL" accesskey="n" rel="next">CLOSEALL</a>, Previous: <a href="usermanual.html#CLOSE" accesskey="p" rel="prev">CLOSE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="allopen"></a>
+<h4 class="unnumberedsubsec">allopen</h4>
+<a name="index-allopen"></a>
+
+<div class="example">
+<pre class="example">ALLOPEN
+</pre></div>
+
+<p>outputs a list whose members are the names of all files currently open.
+This list does not include the dribble file, if any.
+</p>
+<hr>
+<a name="CLOSEALL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERASEFILE" accesskey="n" rel="next">ERASEFILE</a>, Previous: <a href="usermanual.html#ALLOPEN" accesskey="p" rel="prev">ALLOPEN</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="closeall"></a>
+<h4 class="unnumberedsubsec">closeall</h4>
+<a name="index-closeall"></a>
+
+<div class="example">
+<pre class="example">CLOSEALL					(library procedure)
+</pre></div>
+
+<p>command. Closes all open files. Abbreviates <tt>FOREACH&nbsp;ALLOPEN&nbsp;[CLOSE&nbsp;?]</tt><!-- /@w -->
+</p>
+<p>See <a href="usermanual.html#FOREACH">FOREACH</a> ,
+<a href="usermanual.html#CLOSE">CLOSE</a>
+</p>
+<hr>
+<a name="ERASEFILE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DRIBBLE" accesskey="n" rel="next">DRIBBLE</a>, Previous: <a href="usermanual.html#CLOSEALL" accesskey="p" rel="prev">CLOSEALL</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erasefile"></a>
+<h4 class="unnumberedsubsec">erasefile</h4>
+<a name="index-erasefile"></a>
+<a name="index-erf"></a>
+
+<div class="example">
+<pre class="example">ERASEFILE filename
+ERF filename
+</pre></div>
+
+<p>command.  Erases (deletes, removes) the named file, which should not
+currently be open.
+</p>
+<hr>
+<a name="DRIBBLE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NODRIBBLE" accesskey="n" rel="next">NODRIBBLE</a>, Previous: <a href="usermanual.html#ERASEFILE" accesskey="p" rel="prev">ERASEFILE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="dribble"></a>
+<h4 class="unnumberedsubsec">dribble</h4>
+<a name="index-dribble"></a>
+
+<div class="example">
+<pre class="example">DRIBBLE filename
+</pre></div>
+
+<p>command.  Creates a new file whose name is the input, like <code>OPENWRITE</code>,
+and begins recording in that file everything that is read from the
+keyboard or written to the terminal.  That is, this writing is in
+addition to the writing to <code>WRITER</code>.  The intent is to create a transcript
+of a Logo session, including things like prompt characters and
+interactions.
+</p>
+<p>See <a href="usermanual.html#OPENWRITE">OPENWRITE</a> ,
+<a href="usermanual.html#WRITER">WRITER</a>
+</p>
+<hr>
+<a name="NODRIBBLE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETREAD" accesskey="n" rel="next">SETREAD</a>, Previous: <a href="usermanual.html#DRIBBLE" accesskey="p" rel="prev">DRIBBLE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="nodribble"></a>
+<h4 class="unnumberedsubsec">nodribble</h4>
+<a name="index-nodribble"></a>
+
+<div class="example">
+<pre class="example">NODRIBBLE
+</pre></div>
+
+<p>command.  Stops copying information into the dribble file, and closes
+the file.
+</p>
+<hr>
+<a name="SETREAD"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETWRITE" accesskey="n" rel="next">SETWRITE</a>, Previous: <a href="usermanual.html#NODRIBBLE" accesskey="p" rel="prev">NODRIBBLE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setread"></a>
+<h4 class="unnumberedsubsec">setread</h4>
+<a name="index-setread"></a>
+
+<div class="example">
+<pre class="example">SETREAD filename
+</pre></div>
+
+<p>command.  Makes the named file the read stream, used for <code>READLIST</code>, etc.
+The file must already be open with <code>OPENREAD</code> or <code>OPENUPDATE</code>.  If the input
+is the empty list, then the read stream becomes the keyboard, as usual.
+Changing the read stream does not close the file that was previously the
+read stream, so it is possible to alternate between files.
+</p>
+<p>See <a href="usermanual.html#READLIST">READLIST</a> ,
+<a href="usermanual.html#OPENREAD">OPENREAD</a> ,
+<a href="usermanual.html#OPENUPDATE">OPENUPDATE</a>
+</p>
+<hr>
+<a name="SETWRITE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#READER" accesskey="n" rel="next">READER</a>, Previous: <a href="usermanual.html#SETREAD" accesskey="p" rel="prev">SETREAD</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setwrite"></a>
+<h4 class="unnumberedsubsec">setwrite</h4>
+<a name="index-setwrite"></a>
+
+<div class="example">
+<pre class="example">SETWRITE filename
+</pre></div>
+
+<p>command.  Makes the named file the write stream, used for <code>PRINT</code>,
+etc.  The file must already be open with <code>OPENWRITE</code>, <code>OPENAPPEND</code>, or
+<code>OPENUPDATE</code>.  If the input is the empty list, then the write stream
+becomes the screen, as usual.  Changing the write stream does
+not close the file that was previously the write stream, so it is
+possible to alternate between files.
+</p>
+<p>If the input is a list, then its first element must be a variable
+name, and its second and last element must be a positive integer; a
+buffer of that many characters will be allocated, and will become the
+writestream.  If the same list (same in the <code>.EQ</code> sense, not a copy)
+has been used as input to <code>OPENWRITE</code>, then the already-allocated
+buffer will be used, and the writer can be changed to and from this
+buffer, with all the characters accumulated as in a file.  When the
+same list is used as input to <code>CLOSE</code>, the contents of the buffer
+(as an unparsed word, which may contain newline characters) will
+become the value of the named variable.  For compatibility with
+earlier versions, if the list has not been opened when the <code>SETWRITE</code>
+is done, it will be opened implicitly, but the first <code>SETWRITE</code> after
+this one will implicitly close it, setting the variable and freeing
+the allocated buffer.
+</p>
+<p>See <a href="usermanual.html#PRINT">PRINT</a> ,
+<a href="usermanual.html#OPENWRITE">OPENWRITE</a> ;
+<a href="usermanual.html#OPENAPPEND">OPENAPPEND</a> ;
+<a href="usermanual.html#OPENUPDATE">OPENUPDATE</a>
+</p>
+<hr>
+<a name="READER"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WRITER" accesskey="n" rel="next">WRITER</a>, Previous: <a href="usermanual.html#SETWRITE" accesskey="p" rel="prev">SETWRITE</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="reader"></a>
+<h4 class="unnumberedsubsec">reader</h4>
+<a name="index-reader"></a>
+
+<div class="example">
+<pre class="example">READER
+</pre></div>
+
+<p>outputs the name of the current read stream file, or the empty list if
+the read stream is the terminal.
+</p>
+<hr>
+<a name="WRITER"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETREADPOS" accesskey="n" rel="next">SETREADPOS</a>, Previous: <a href="usermanual.html#READER" accesskey="p" rel="prev">READER</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="writer"></a>
+<h4 class="unnumberedsubsec">writer</h4>
+<a name="index-writer"></a>
+
+<div class="example">
+<pre class="example">WRITER
+</pre></div>
+
+<p>outputs the name of the current write stream file, or the empty list if
+the write stream is the screen.
+</p>
+<hr>
+<a name="SETREADPOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETWRITEPOS" accesskey="n" rel="next">SETWRITEPOS</a>, Previous: <a href="usermanual.html#WRITER" accesskey="p" rel="prev">WRITER</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setreadpos"></a>
+<h4 class="unnumberedsubsec">setreadpos</h4>
+<a name="index-setreadpos"></a>
+
+<div class="example">
+<pre class="example">SETREADPOS charpos
+</pre></div>
+
+<p>command.  Sets the file pointer of the read stream file so that the next
+<code>READLIST</code>, etc., will begin reading at the <var>charpos</var>th character in the
+file, counting from 0.  (That is, <tt>SETREADPOS&nbsp;0</tt><!-- /@w --> will start reading from
+the beginning of the file.)  Meaningless if the read stream is the
+keyboard.
+</p>
+<p>See <a href="usermanual.html#READLIST">READLIST</a> .
+</p>
+<hr>
+<a name="SETWRITEPOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#READPOS" accesskey="n" rel="next">READPOS</a>, Previous: <a href="usermanual.html#SETREADPOS" accesskey="p" rel="prev">SETREADPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setwritepos"></a>
+<h4 class="unnumberedsubsec">setwritepos</h4>
+<a name="index-setwritepos"></a>
+
+<div class="example">
+<pre class="example">SETWRITEPOS charpos
+</pre></div>
+
+<p>command.  Sets the file pointer of the write stream file so that the
+next <code>PRINT</code>, etc., will begin writing at the <var>charpos</var>th character in the
+file, counting from 0.  (That is, <tt>SETWRITEPOS&nbsp;0</tt><!-- /@w --> will start writing from
+the beginning of the file.)  Meaningless if the write stream is the
+screen.
+</p>
+<p>See <a href="usermanual.html#PRINT">PRINT</a> .
+</p>
+<hr>
+<a name="READPOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WRITEPOS" accesskey="n" rel="next">WRITEPOS</a>, Previous: <a href="usermanual.html#SETWRITEPOS" accesskey="p" rel="prev">SETWRITEPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="readpos"></a>
+<h4 class="unnumberedsubsec">readpos</h4>
+<a name="index-readpos"></a>
+
+<div class="example">
+<pre class="example">READPOS
+</pre></div>
+
+<p>outputs the file position of the current read stream file.
+</p>
+<hr>
+<a name="WRITEPOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EOFP" accesskey="n" rel="next">EOFP</a>, Previous: <a href="usermanual.html#READPOS" accesskey="p" rel="prev">READPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="writepos"></a>
+<h4 class="unnumberedsubsec">writepos</h4>
+<a name="index-writepos"></a>
+
+<div class="example">
+<pre class="example">WRITEPOS
+</pre></div>
+
+<p>outputs the file position of the current write stream file.
+</p>
+<hr>
+<a name="EOFP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FILEP" accesskey="n" rel="next">FILEP</a>, Previous: <a href="usermanual.html#WRITEPOS" accesskey="p" rel="prev">WRITEPOS</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="eofp"></a>
+<h4 class="unnumberedsubsec">eofp</h4>
+<a name="index-eofp"></a>
+<a name="index-eof_003f"></a>
+
+<div class="example">
+<pre class="example">EOFP
+EOF?
+</pre></div>
+
+<p>predicate, outputs <code>TRUE</code> if there are no more characters to be read in
+the read stream file, <code>FALSE</code> otherwise.
+</p>
+<hr>
+<a name="FILEP"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#EOFP" accesskey="p" rel="prev">EOFP</a>, Up: <a href="usermanual.html#FILE-ACCESS" accesskey="u" rel="up">FILE ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="filep"></a>
+<h4 class="unnumberedsubsec">filep</h4>
+<a name="index-filep"></a>
+<a name="index-file_003f"></a>
+
+<div class="example">
+<pre class="example">FILEP filename
+FILE? filename					(library procedure)
+</pre></div>
+
+<p>predicate, outputs <code>TRUE</code> if a file of the specified name exists and can
+be read, <code>FALSE</code> otherwise.
+</p>
+
+<hr>
+<a name="TERMINAL-ACCESS"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#FILE-ACCESS" accesskey="p" rel="prev">FILE ACCESS</a>, Up: <a href="usermanual.html#COMMUNICATION" accesskey="u" rel="up">COMMUNICATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Terminal-Access"></a>
+<h3 class="section">4.4 Terminal Access</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#KEYP" accesskey="1">KEYP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LINEP" accesskey="2">LINEP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CLEARTEXT" accesskey="3">CLEARTEXT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETCURSOR" accesskey="4">SETCURSOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CURSOR" accesskey="5">CURSOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETMARGINS" accesskey="6">SETMARGINS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETTEXTCOLOR" accesskey="7">SETTEXTCOLOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#INCREASEFONT" accesskey="8">INCREASEFONT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETTEXTSIZE" accesskey="9">SETTEXTSIZE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TEXTSIZE">TEXTSIZE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETFONT">SETFONT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FONT">FONT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="KEYP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LINEP" accesskey="n" rel="next">LINEP</a>, Previous: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="p" rel="prev">TERMINAL ACCESS</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="keyp"></a>
+<h4 class="unnumberedsubsec">keyp</h4>
+<a name="index-keyp"></a>
+<a name="index-key_003f"></a>
+
+<div class="example">
+<pre class="example">KEYP
+KEY?
+</pre></div>
+
+<p>predicate, outputs <code>TRUE</code> if there are characters waiting to be read from
+the read stream.  If the read stream is a file, this is equivalent to
+<tt>NOT&nbsp;EOFP</tt><!-- /@w -->.  If the read stream is the terminal, then echoing is turned
+off and the terminal is set to <code>cbreak</code> (character at a time instead of
+line at a time) mode.  It remains in this mode until some line-mode
+reading is requested (e.g., <code>READLIST</code>).  The Unix operating system
+forgets about any pending characters when it switches modes, so the
+first <code>KEYP</code> invocation will always output <code>FALSE</code>.
+</p>
+<p>See <a href="usermanual.html#EOFP">EOFP</a> ,
+<a href="usermanual.html#READLIST">READLIST</a>
+</p>
+<hr>
+<a name="LINEP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CLEARTEXT" accesskey="n" rel="next">CLEARTEXT</a>, Previous: <a href="usermanual.html#KEYP" accesskey="p" rel="prev">KEYP</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="linep"></a>
+<h4 class="unnumberedsubsec">linep</h4>
+<a name="index-linep"></a>
+<a name="index-line_003f"></a>
+
+<div class="example">
+<pre class="example">LINEP
+LINE?
+</pre></div>
+
+<p>predicate, outputs <code>TRUE</code> if there is a line waiting to be read from
+the read stream.  If the read stream is a file, this is equivalent to
+<tt>NOT&nbsp;EOFP</tt><!-- /@w -->.  If the read stream is the terminal, then typed characters
+will be displayed and may be edited until <tt class="key">RET</tt> is pressed.
+</p>
+<p>See <a href="usermanual.html#EOFP">EOFP</a> .
+</p>
+<hr>
+<a name="CLEARTEXT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETCURSOR" accesskey="n" rel="next">SETCURSOR</a>, Previous: <a href="usermanual.html#LINEP" accesskey="p" rel="prev">LINEP</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="cleartext"></a>
+<h4 class="unnumberedsubsec">cleartext</h4>
+<a name="index-cleartext"></a>
+<a name="index-ct"></a>
+
+<div class="example">
+<pre class="example">CLEARTEXT
+CT
+</pre></div>
+
+<p>command.  Clears the text window.
+</p>
+<hr>
+<a name="SETCURSOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CURSOR" accesskey="n" rel="next">CURSOR</a>, Previous: <a href="usermanual.html#CLEARTEXT" accesskey="p" rel="prev">CLEARTEXT</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setcursor"></a>
+<h4 class="unnumberedsubsec">setcursor</h4>
+<a name="index-setcursor"></a>
+
+<div class="example">
+<pre class="example">SETCURSOR vector
+</pre></div>
+
+<p>command.  The input is a list of two numbers, the x and y coordinates of
+a text window position (origin in the upper left corner, positive direction
+is southeast).  The text cursor is moved to the requested position.
+This command also forces the immediate printing of any buffered
+characters.
+</p>
+<hr>
+<a name="CURSOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETMARGINS" accesskey="n" rel="next">SETMARGINS</a>, Previous: <a href="usermanual.html#SETCURSOR" accesskey="p" rel="prev">SETCURSOR</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="cursor"></a>
+<h4 class="unnumberedsubsec">cursor</h4>
+<a name="index-cursor"></a>
+
+<div class="example">
+<pre class="example">CURSOR
+</pre></div>
+
+<p>outputs a list containing the current x and y coordinates of the text
+cursor.  Logo may get confused about the current cursor position if,
+e.g., you type in a long line that wraps around or your program prints
+escape codes that affect the screen strangely.
+</p>
+<hr>
+<a name="SETMARGINS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETTEXTCOLOR" accesskey="n" rel="next">SETTEXTCOLOR</a>, Previous: <a href="usermanual.html#CURSOR" accesskey="p" rel="prev">CURSOR</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setmargins"></a>
+<h4 class="unnumberedsubsec">setmargins</h4>
+<a name="index-setmargins"></a>
+
+<div class="example">
+<pre class="example">SETMARGINS vector
+</pre></div>
+
+<p>command.  The input must be a list of two numbers, as for <code>SETCURSOR</code>.
+The effect is to clear the screen and then arrange for all further
+printing to be shifted down and to the right according to the indicated
+margins.  Specifically, every time a newline character is printed
+(explicitly or implicitly) Logo will type <var>x_margin</var> spaces, and on every
+invocation of <code>SETCURSOR</code> the margins will be added to the input x and y
+coordinates.  (<code>CURSOR</code> will report the cursor position relative to the
+margins, so that this shift will be invisible to Logo programs.)  The
+purpose of this command is to accommodate the display of terminal
+screens in lecture halls with inadequate TV monitors that miss the top
+and left edges of the screen.
+</p>
+<p>See <a href="usermanual.html#SETCURSOR">SETCURSOR</a> .
+</p>
+
+<hr>
+<a name="SETTEXTCOLOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#INCREASEFONT" accesskey="n" rel="next">INCREASEFONT</a>, Previous: <a href="usermanual.html#SETMARGINS" accesskey="p" rel="prev">SETMARGINS</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="settextcolor"></a>
+<h4 class="unnumberedsubsec">settextcolor</h4>
+<a name="index-settextcolor"></a>
+<a name="index-settc"></a>
+
+<div class="example">
+<pre class="example">SETTEXTCOLOR foreground background
+SETTC foreground background
+</pre></div>
+
+<p>command (wxWidgets only).  The inputs are color numbers, or RGB color lists,
+as for turtle graphics.  The foreground and background colors for the
+textscreen/splitscreen text window are changed to the given values.  The
+change affects text already printed as well as future text printing; there is
+only one text color for the entire window.
+</p>
+<p>Command (non-wxWidgets Windows and DOS extended only).  The inputs are color
+numbers, as for turtle graphics.  Future printing to the text window will use
+the specified colors for foreground (the characters printed) and background
+(the space under those characters).  Using <code>STANDOUT</code> will revert to the default
+text window colors.  In the DOS extended (<samp>ucblogo.exe</samp>) version, colors in
+textscreen mode are limited to numbers 0-7, and the coloring applies only to
+text printed by the program, not to the echoing of text typed by the user.
+Neither limitation applies to the text portion of splitscreen mode, which is
+actually drawn as graphics internally.
+</p>
+<p>See <a href="usermanual.html#STANDOUT">STANDOUT</a> .
+</p>
+<hr>
+<a name="INCREASEFONT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETTEXTSIZE" accesskey="n" rel="next">SETTEXTSIZE</a>, Previous: <a href="usermanual.html#SETTEXTCOLOR" accesskey="p" rel="prev">SETTEXTCOLOR</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="increasefont"></a>
+<h4 class="unnumberedsubsec">increasefont</h4>
+<a name="index-increasefont"></a>
+<a name="index-decreasefont"></a>
+
+<div class="example">
+<pre class="example">INCREASEFONT
+DECREASEFONT
+</pre></div>
+
+<p>command (wxWidgets only).  Increase or decrease the size of the font
+used in the text and edit windows to the next larger or smaller
+available size.
+</p>
+<hr>
+<a name="SETTEXTSIZE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TEXTSIZE" accesskey="n" rel="next">TEXTSIZE</a>, Previous: <a href="usermanual.html#INCREASEFONT" accesskey="p" rel="prev">INCREASEFONT</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="settextsize"></a>
+<h4 class="unnumberedsubsec">settextsize</h4>
+<a name="index-settextsize"></a>
+
+<div class="example">
+<pre class="example">SETTEXTSIZE height
+</pre></div>
+
+<p>command (wxWidgets only).  Set the &quot;point size&quot; of the font used in
+the text and edit windows to the given integer input.  The desired
+size may not be available, in which case the nearest available size
+will be used.  Note: There is only a slight correlation between these
+integers and pixel sizes.  Our rough estimate is that the number of
+pixels of height is about 1.5 times the point size, but it varies for
+different fonts.  See <code>SETLABELHEIGHT</code> for a different approach used for
+the graphics window.
+</p>
+<hr>
+<a name="TEXTSIZE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETFONT" accesskey="n" rel="next">SETFONT</a>, Previous: <a href="usermanual.html#SETTEXTSIZE" accesskey="p" rel="prev">SETTEXTSIZE</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="textsize"></a>
+<h4 class="unnumberedsubsec">textsize</h4>
+<a name="index-textsize"></a>
+
+<div class="example">
+<pre class="example">TEXTSIZE
+</pre></div>
+
+<p>(wxWidgets only) outputs the &quot;point size&quot; of the font used in the text
+and edit windows.  See <code>SETTEXTSIZE</code> for a discussion of font sizing.
+See <code>LABELSIZE</code> for a different approach used for the graphics window.
+</p>
+<hr>
+<a name="SETFONT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FONT" accesskey="n" rel="next">FONT</a>, Previous: <a href="usermanual.html#TEXTSIZE" accesskey="p" rel="prev">TEXTSIZE</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setfont"></a>
+<h4 class="unnumberedsubsec">setfont</h4>
+<a name="index-setfont"></a>
+
+<div class="example">
+<pre class="example">SETFONT fontname
+</pre></div>
+
+<p>command (wxWidgets only).  Set the font family used in all windows
+to the one named by the input.  Try <samp>Courier</samp> or <samp>Monospace</samp> as likely
+possibilities.  Not all computers have the same fonts installed.  It&rsquo;s
+a good idea to stick with monospace fonts (ones in which all
+characters have the same width).
+</p>
+<hr>
+<a name="FONT"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#SETFONT" accesskey="p" rel="prev">SETFONT</a>, Up: <a href="usermanual.html#TERMINAL-ACCESS" accesskey="u" rel="up">TERMINAL ACCESS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="font"></a>
+<h4 class="unnumberedsubsec">font</h4>
+<a name="index-font"></a>
+
+<div class="example">
+<pre class="example">FONT
+</pre></div>
+
+<p>(wxWidgets only) outputs the name of the font family used in all
+windows.
+</p>
+
+
+<hr>
+<a name="ARITHMETIC"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="n" rel="next">LOGICAL OPERATIONS</a>, Previous: <a href="usermanual.html#COMMUNICATION" accesskey="p" rel="prev">COMMUNICATION</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Arithmetic"></a>
+<h2 class="chapter">5 Arithmetic</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="1">NUMERIC OPERATIONS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="2">NUMERIC PREDICATES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RANDOM-NUMBERS" accesskey="3">RANDOM NUMBERS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRINT-FORMATTING" accesskey="4">PRINT FORMATTING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="5">BITWISE OPERATIONS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+<hr>
+<a name="NUMERIC-OPERATIONS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="n" rel="next">NUMERIC PREDICATES</a>, Previous: <a href="usermanual.html#ARITHMETIC" accesskey="p" rel="prev">ARITHMETIC</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Numeric-Operations"></a>
+<h3 class="section">5.1 Numeric Operations</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SUM" accesskey="1">SUM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DIFFERENCE" accesskey="2">DIFFERENCE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MINUS" accesskey="3">MINUS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRODUCT" accesskey="4">PRODUCT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#QUOTIENT" accesskey="5">QUOTIENT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REMAINDER" accesskey="6">REMAINDER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MODULO" accesskey="7">MODULO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#INT" accesskey="8">INT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ROUND" accesskey="9">ROUND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SQRT">SQRT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POWER">POWER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EXP">EXP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOG10">LOG10</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LN">LN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SIN">SIN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RADSIN">RADSIN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COS">COS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RADCOS">RADCOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ARCTAN">ARCTAN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RADARCTAN">RADARCTAN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ISEQ">ISEQ</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RSEQ">RSEQ</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="SUM"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DIFFERENCE" accesskey="n" rel="next">DIFFERENCE</a>, Previous: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="p" rel="prev">NUMERIC OPERATIONS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="sum"></a>
+<h4 class="unnumberedsubsec">sum</h4>
+<a name="index-sum"></a>
+<a name="index-_002b"></a>
+
+<div class="example">
+<pre class="example">SUM num1 num2
+(SUM num1 num2 num3 ...)
+num1 + num2
+</pre></div>
+
+<p>outputs the sum of its inputs.
+</p>
+<hr>
+<a name="DIFFERENCE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MINUS" accesskey="n" rel="next">MINUS</a>, Previous: <a href="usermanual.html#SUM" accesskey="p" rel="prev">SUM</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="difference"></a>
+<h4 class="unnumberedsubsec">difference</h4>
+<a name="index-difference"></a>
+<a name="index-_002d"></a>
+
+<div class="example">
+<pre class="example">DIFFERENCE num1 num2
+num1 - num2
+</pre></div>
+
+<p>outputs the difference of its inputs.  Minus sign means infix difference
+in ambiguous contexts (when preceded by a complete expression), unless
+it is preceded by a space and followed by a nonspace.  (See also <code>MINUS</code>.)
+</p>
+<hr>
+<a name="MINUS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PRODUCT" accesskey="n" rel="next">PRODUCT</a>, Previous: <a href="usermanual.html#DIFFERENCE" accesskey="p" rel="prev">DIFFERENCE</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="minus"></a>
+<h4 class="unnumberedsubsec">minus</h4>
+<a name="index-minus"></a>
+
+<div class="example">
+<pre class="example">MINUS num
+- num
+</pre></div>
+
+<p>outputs the negative of its input.  Minus sign means unary minus if
+the previous token is an infix operator or open parenthesis, or it is
+preceded by a space and followed by a nonspace.  There is a difference
+in binding strength between the two forms:
+</p>
+<div class="example">
+<pre class="example">MINUS 3 + 4     means   -(3+4)
+- 3 + 4         means   (-3)+4
+</pre></div>
+
+<hr>
+<a name="PRODUCT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#QUOTIENT" accesskey="n" rel="next">QUOTIENT</a>, Previous: <a href="usermanual.html#MINUS" accesskey="p" rel="prev">MINUS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="product"></a>
+<h4 class="unnumberedsubsec">product</h4>
+<a name="index-product"></a>
+<a name="index-_002a"></a>
+
+<div class="example">
+<pre class="example">PRODUCT num1 num2
+(PRODUCT num1 num2 num3 ...)
+num1 * num2
+</pre></div>
+
+<p>outputs the product of its inputs.
+</p>
+<hr>
+<a name="QUOTIENT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REMAINDER" accesskey="n" rel="next">REMAINDER</a>, Previous: <a href="usermanual.html#PRODUCT" accesskey="p" rel="prev">PRODUCT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="quotient"></a>
+<h4 class="unnumberedsubsec">quotient</h4>
+<a name="index-quotient"></a>
+<a name="index-_002f"></a>
+
+<div class="example">
+<pre class="example">QUOTIENT num1 num2
+(QUOTIENT num)
+num1 / num2
+</pre></div>
+
+<p>outputs the quotient of its inputs.  The quotient of two integers is an
+integer if and only if the dividend is a multiple of the divisor.  (In
+other words, <tt>QUOTIENT&nbsp;5&nbsp;2</tt><!-- /@w --> is 2.5, not 2, but <tt>QUOTIENT&nbsp;4&nbsp;2</tt><!-- /@w -->
+is 2, not 2.0 &mdash; it does the right thing.)  With a single input,
+<code>QUOTIENT</code> outputs the reciprocal of the input.
+</p>
+<hr>
+<a name="REMAINDER"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MODULO" accesskey="n" rel="next">MODULO</a>, Previous: <a href="usermanual.html#QUOTIENT" accesskey="p" rel="prev">QUOTIENT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="remainder"></a>
+<h4 class="unnumberedsubsec">remainder</h4>
+<a name="index-remainder"></a>
+
+<div class="example">
+<pre class="example">REMAINDER num1 num2
+</pre></div>
+
+<p>outputs the remainder on dividing <var>num1</var> by <var>num2</var>; both must be
+integers and the result is an integer with the same sign as <var>num1</var>.
+</p>
+<hr>
+<a name="MODULO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#INT" accesskey="n" rel="next">INT</a>, Previous: <a href="usermanual.html#REMAINDER" accesskey="p" rel="prev">REMAINDER</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="modulo"></a>
+<h4 class="unnumberedsubsec">modulo</h4>
+<a name="index-modulo"></a>
+
+<div class="example">
+<pre class="example">MODULO num1 num2
+</pre></div>
+
+<p>outputs the remainder on dividing <var>num1</var> by <var>num2</var>; both must be
+integers and the result is an integer with the same sign as <var>num2</var>.
+</p>
+<hr>
+<a name="INT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ROUND" accesskey="n" rel="next">ROUND</a>, Previous: <a href="usermanual.html#MODULO" accesskey="p" rel="prev">MODULO</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="int"></a>
+<h4 class="unnumberedsubsec">int</h4>
+<a name="index-int"></a>
+
+<div class="example">
+<pre class="example">INT num
+</pre></div>
+
+<p>outputs its input with fractional part removed, i.e., an integer
+with the same sign as the input, whose absolute value is the
+largest integer less than or equal to the absolute value of
+the input.
+</p>
+<hr>
+<a name="ROUND"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SQRT" accesskey="n" rel="next">SQRT</a>, Previous: <a href="usermanual.html#INT" accesskey="p" rel="prev">INT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="round"></a>
+<h4 class="unnumberedsubsec">round</h4>
+<a name="index-round"></a>
+
+<div class="example">
+<pre class="example">ROUND num
+</pre></div>
+
+<p>outputs the nearest integer to the input.
+</p>
+<hr>
+<a name="SQRT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POWER" accesskey="n" rel="next">POWER</a>, Previous: <a href="usermanual.html#ROUND" accesskey="p" rel="prev">ROUND</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="sqrt"></a>
+<h4 class="unnumberedsubsec">sqrt</h4>
+<a name="index-sqrt"></a>
+
+<div class="example">
+<pre class="example">SQRT num
+</pre></div>
+
+<p>outputs the square root of the input, which must be nonnegative.
+</p>
+<hr>
+<a name="POWER"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EXP" accesskey="n" rel="next">EXP</a>, Previous: <a href="usermanual.html#SQRT" accesskey="p" rel="prev">SQRT</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="power"></a>
+<h4 class="unnumberedsubsec">power</h4>
+<a name="index-power"></a>
+
+<div class="example">
+<pre class="example">POWER num1 num2
+</pre></div>
+
+<p>outputs <var>num1</var> to the <var>num2</var> power.  If <var>num1</var> is negative, then
+<var>num2</var> must be an integer.
+</p>
+<hr>
+<a name="EXP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOG10" accesskey="n" rel="next">LOG10</a>, Previous: <a href="usermanual.html#POWER" accesskey="p" rel="prev">POWER</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="exp"></a>
+<h4 class="unnumberedsubsec">exp</h4>
+<a name="index-exp"></a>
+
+<div class="example">
+<pre class="example">EXP num
+</pre></div>
+
+<p>outputs <i>e</i> (2.718281828+) to the input power.
+</p>
+<hr>
+<a name="LOG10"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LN" accesskey="n" rel="next">LN</a>, Previous: <a href="usermanual.html#EXP" accesskey="p" rel="prev">EXP</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="log10"></a>
+<h4 class="unnumberedsubsec">log10</h4>
+<a name="index-log10"></a>
+
+<div class="example">
+<pre class="example">LOG10 num
+</pre></div>
+
+<p>outputs the common logarithm of the input.
+</p>
+<hr>
+<a name="LN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SIN" accesskey="n" rel="next">SIN</a>, Previous: <a href="usermanual.html#LOG10" accesskey="p" rel="prev">LOG10</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ln"></a>
+<h4 class="unnumberedsubsec">ln</h4>
+<a name="index-ln"></a>
+
+<div class="example">
+<pre class="example">LN num
+</pre></div>
+
+<p>outputs the natural logarithm of the input.
+</p>
+<hr>
+<a name="SIN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RADSIN" accesskey="n" rel="next">RADSIN</a>, Previous: <a href="usermanual.html#LN" accesskey="p" rel="prev">LN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="sin"></a>
+<h4 class="unnumberedsubsec">sin</h4>
+<a name="index-sin"></a>
+
+<div class="example">
+<pre class="example">SIN degrees
+</pre></div>
+
+<p>outputs the sine of its input, which is taken in degrees.
+</p>
+<hr>
+<a name="RADSIN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#COS" accesskey="n" rel="next">COS</a>, Previous: <a href="usermanual.html#SIN" accesskey="p" rel="prev">SIN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="radsin"></a>
+<h4 class="unnumberedsubsec">radsin</h4>
+<a name="index-radsin"></a>
+
+<div class="example">
+<pre class="example">RADSIN radians
+</pre></div>
+
+<p>outputs the sine of its input, which is taken in radians.
+</p>
+<hr>
+<a name="COS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RADCOS" accesskey="n" rel="next">RADCOS</a>, Previous: <a href="usermanual.html#RADSIN" accesskey="p" rel="prev">RADSIN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="cos"></a>
+<h4 class="unnumberedsubsec">cos</h4>
+<a name="index-cos"></a>
+
+<div class="example">
+<pre class="example">COS degrees
+</pre></div>
+
+<p>outputs the cosine of its input, which is taken in degrees.
+</p>
+<hr>
+<a name="RADCOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ARCTAN" accesskey="n" rel="next">ARCTAN</a>, Previous: <a href="usermanual.html#COS" accesskey="p" rel="prev">COS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="radcos"></a>
+<h4 class="unnumberedsubsec">radcos</h4>
+<a name="index-radcos"></a>
+
+<div class="example">
+<pre class="example">RADCOS radians
+</pre></div>
+
+<p>outputs the cosine of its input, which is taken in radians.
+</p>
+<hr>
+<a name="ARCTAN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RADARCTAN" accesskey="n" rel="next">RADARCTAN</a>, Previous: <a href="usermanual.html#RADCOS" accesskey="p" rel="prev">RADCOS</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="arctan"></a>
+<h4 class="unnumberedsubsec">arctan</h4>
+<a name="index-arctan"></a>
+
+<div class="example">
+<pre class="example">ARCTAN num
+(ARCTAN x y)
+</pre></div>
+
+<p>outputs the arctangent, in degrees, of its input.  With two inputs,
+outputs the arctangent of y/x, if x is nonzero, or 90 or &ndash;90 depending
+on the sign of y, if x is zero.
+</p>
+<hr>
+<a name="RADARCTAN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ISEQ" accesskey="n" rel="next">ISEQ</a>, Previous: <a href="usermanual.html#ARCTAN" accesskey="p" rel="prev">ARCTAN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="radarctan"></a>
+<h4 class="unnumberedsubsec">radarctan</h4>
+<a name="index-radarctan"></a>
+
+<div class="example">
+<pre class="example">RADARCTAN num
+(RADARCTAN x y)
+</pre></div>
+
+<p>outputs the arctangent, in radians, of its input.  With two inputs,
+outputs the arctangent of y/x, if x is nonzero, or pi/2 or &ndash;pi/2
+depending on the sign of y, if x is zero.
+</p>
+<p>The expression <tt>2*(RADARCTAN&nbsp;0&nbsp;1)</tt><!-- /@w --> can be used to get the value of pi.
+</p>
+<hr>
+<a name="ISEQ"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RSEQ" accesskey="n" rel="next">RSEQ</a>, Previous: <a href="usermanual.html#RADARCTAN" accesskey="p" rel="prev">RADARCTAN</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="iseq"></a>
+<h4 class="unnumberedsubsec">iseq</h4>
+<a name="index-iseq"></a>
+
+<div class="example">
+<pre class="example">ISEQ from to					(library procedure)
+</pre></div>
+
+<p>outputs a list of the integers from <var>from</var> to <var>to</var>, inclusive.
+</p>
+<div class="example">
+<pre class="example">? show iseq 3 7
+[3 4 5 6 7]
+? show iseq 7 3
+[7 6 5 4 3]
+</pre></div>
+
+<hr>
+<a name="RSEQ"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#ISEQ" accesskey="p" rel="prev">ISEQ</a>, Up: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="u" rel="up">NUMERIC OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="rseq"></a>
+<h4 class="unnumberedsubsec">rseq</h4>
+<a name="index-rseq"></a>
+
+<div class="example">
+<pre class="example">RSEQ from to count				(library procedure)
+</pre></div>
+
+<p>outputs a list of <var>count</var> equally spaced rational numbers between
+<var>from</var> and <var>to</var>, inclusive.
+</p>
+<div class="example">
+<pre class="example">? show rseq 3 5 9 
+[3 3.25 3.5 3.75 4 4.25 4.5 4.75 5] 
+? show rseq 3 5 5
+[3 3.5 4 4.5 5]
+</pre></div>
+
+
+<hr>
+<a name="NUMERIC-PREDICATES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="n" rel="next">RANDOM NUMBERS</a>, Previous: <a href="usermanual.html#NUMERIC-OPERATIONS" accesskey="p" rel="prev">NUMERIC OPERATIONS</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Numeric-Predicates"></a>
+<h3 class="section">5.2 Numeric Predicates</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LESSP" accesskey="1">LESSP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GREATERP" accesskey="2">GREATERP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LESSEQUALP" accesskey="3">LESSEQUALP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GREATEREQUALP" accesskey="4">GREATEREQUALP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
+
+</pre></th></tr></table>
+
+
+<hr>
+<a name="LESSP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GREATERP" accesskey="n" rel="next">GREATERP</a>, Previous: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="p" rel="prev">NUMERIC PREDICATES</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="lessp"></a>
+<h4 class="unnumberedsubsec">lessp</h4>
+<a name="index-lessp"></a>
+<a name="index-less_003f"></a>
+<a name="index-_003c"></a>
+
+<div class="example">
+<pre class="example">LESSP num1 num2
+LESS? num1 num2
+num1 &lt; num2
+</pre></div>
+
+<p>outputs <code>TRUE</code> if its first input is strictly less than its second.
+</p>
+<hr>
+<a name="GREATERP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LESSEQUALP" accesskey="n" rel="next">LESSEQUALP</a>, Previous: <a href="usermanual.html#LESSP" accesskey="p" rel="prev">LESSP</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="greaterp"></a>
+<h4 class="unnumberedsubsec">greaterp</h4>
+<a name="index-greaterp"></a>
+<a name="index-greater_003f"></a>
+<a name="index-_003e"></a>
+
+<div class="example">
+<pre class="example">GREATERP num1 num2
+GREATER? num1 num2
+num1 &gt; num2
+</pre></div>
+
+<p>outputs <code>TRUE</code> if its first input is strictly greater than its second.
+</p>
+<hr>
+<a name="LESSEQUALP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GREATEREQUALP" accesskey="n" rel="next">GREATEREQUALP</a>, Previous: <a href="usermanual.html#GREATERP" accesskey="p" rel="prev">GREATERP</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="lessequalp"></a>
+<h4 class="unnumberedsubsec">lessequalp</h4>
+<a name="index-lessequalp"></a>
+<a name="index-lessequal_003f"></a>
+<a name="index-_003c_003d"></a>
+
+<div class="example">
+<pre class="example">LESSEQUALP num1 num2
+LESSEQUAL? num1 num2
+num1 &lt;= num2
+</pre></div>
+
+<p>outputs <code>TRUE</code> if its first input is less than or equal to its second.
+</p>
+<hr>
+<a name="GREATEREQUALP"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#LESSEQUALP" accesskey="p" rel="prev">LESSEQUALP</a>, Up: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="u" rel="up">NUMERIC PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="greaterequalp"></a>
+<h4 class="unnumberedsubsec">greaterequalp</h4>
+<a name="index-greaterequalp"></a>
+<a name="index-greaterequal_003f"></a>
+<a name="index-_003e_003d"></a>
+
+<div class="example">
+<pre class="example">GREATEREQUALP num1 num2
+GREATEREQUAL? num1 num2
+num1 &gt;= num2
+</pre></div>
+
+<p>outputs <code>TRUE</code> if its first input is greater than or equal to its second.
+</p>
+
+<hr>
+<a name="RANDOM-NUMBERS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PRINT-FORMATTING" accesskey="n" rel="next">PRINT FORMATTING</a>, Previous: <a href="usermanual.html#NUMERIC-PREDICATES" accesskey="p" rel="prev">NUMERIC PREDICATES</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Random-Numbers"></a>
+<h3 class="section">5.3 Random Numbers</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RANDOM" accesskey="1">RANDOM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RERANDOM" accesskey="2">RERANDOM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="RANDOM"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RERANDOM" accesskey="n" rel="next">RERANDOM</a>, Previous: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="p" rel="prev">RANDOM NUMBERS</a>, Up: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="u" rel="up">RANDOM NUMBERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="random"></a>
+<h4 class="unnumberedsubsec">random</h4>
+<a name="index-random"></a>
+
+<div class="example">
+<pre class="example">RANDOM num
+(RANDOM start end)
+</pre></div>
+
+<p>with one input, outputs a random nonnegative integer less than its
+input, which must be a positive integer.
+</p>
+<p>With two inputs, <code>RANDOM</code> outputs a random integer greater than or
+equal to the first input, and less than or equal to the second
+input.  Both inputs must be integers, and the first must be less
+than the second.  <tt>(RANDOM&nbsp;0&nbsp;9)</tt><!-- /@w --> is equivalent to <tt>RANDOM&nbsp;10</tt><!-- /@w -->;
+<tt>(RANDOM&nbsp;3&nbsp;8)</tt><!-- /@w --> is equivalent to <tt>(RANDOM&nbsp;6)+3</tt><!-- /@w -->.
+</p>
+<hr>
+<a name="RERANDOM"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#RANDOM" accesskey="p" rel="prev">RANDOM</a>, Up: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="u" rel="up">RANDOM NUMBERS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="rerandom"></a>
+<h4 class="unnumberedsubsec">rerandom</h4>
+<a name="index-rerandom"></a>
+
+<div class="example">
+<pre class="example">RERANDOM
+(RERANDOM seed)
+</pre></div>
+
+<p>command.  Makes the results of <code>RANDOM</code> reproducible.  Ordinarily the
+sequence of random numbers is different each time Logo is used.  If you need
+the same sequence of pseudo-random numbers repeatedly, e.g. to debug a
+program, say <code>RERANDOM</code> before the first invocation of <code>RANDOM</code>.  If
+you need more than one repeatable sequence, you can give <code>RERANDOM</code> an integer
+input; each possible input selects a unique sequence of numbers.
+</p>
+
+<hr>
+<a name="PRINT-FORMATTING"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="n" rel="next">BITWISE OPERATIONS</a>, Previous: <a href="usermanual.html#RANDOM-NUMBERS" accesskey="p" rel="prev">RANDOM NUMBERS</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Print-Formatting"></a>
+<h3 class="section">5.4 Print Formatting</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FORM" accesskey="1">FORM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="FORM"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#PRINT-FORMATTING" accesskey="p" rel="prev">PRINT FORMATTING</a>, Up: <a href="usermanual.html#PRINT-FORMATTING" accesskey="u" rel="up">PRINT FORMATTING</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="form"></a>
+<h4 class="unnumberedsubsec">form</h4>
+<a name="index-form"></a>
+
+<div class="example">
+<pre class="example">FORM num width precision
+</pre></div>
+
+<p>outputs a word containing a printable representation of <var>num</var>, possibly
+preceded by spaces (and therefore not a number for purposes of
+performing arithmetic operations), with at least <var>width</var> characters,
+including exactly <var>precision</var> digits after the decimal point.  (If
+<var>precision</var> is 0 then there will be no decimal point in the output.)
+</p>
+<p>As a debugging feature, (<tt>FORM&nbsp;num&nbsp;<span class="nolinebreak">-1</span>&nbsp;format</tt><!-- /@w -->) will print the floating
+point <var>num</var> according to the C printf <var>format</var>, to allow
+</p>
+<div class="example">
+<pre class="example">to hex :num
+op form :num -1 &quot;|%08X %08X|
+end
+</pre></div>
+
+<p>to allow finding out the exact result of floating point operations.  The
+precise format needed may be machine-dependent.
+</p>
+
+<hr>
+<a name="BITWISE-OPERATIONS"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#PRINT-FORMATTING" accesskey="p" rel="prev">PRINT FORMATTING</a>, Up: <a href="usermanual.html#ARITHMETIC" accesskey="u" rel="up">ARITHMETIC</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Bitwise-Operations"></a>
+<h3 class="section">5.5 Bitwise Operations</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BITAND" accesskey="1">BITAND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BITOR" accesskey="2">BITOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BITXOR" accesskey="3">BITXOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BITNOT" accesskey="4">BITNOT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ASHIFT" accesskey="5">ASHIFT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LSHIFT" accesskey="6">LSHIFT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="BITAND"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BITOR" accesskey="n" rel="next">BITOR</a>, Previous: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="p" rel="prev">BITWISE OPERATIONS</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="bitand"></a>
+<h4 class="unnumberedsubsec">bitand</h4>
+<a name="index-bitand"></a>
+
+<div class="example">
+<pre class="example">BITAND num1 num2
+(BITAND num1 num2 num3 ...)
+</pre></div>
+
+<p>outputs the bitwise <var>and</var> of its inputs, which must be integers.
+</p>
+<p>See <a href="usermanual.html#AND">AND</a> .
+</p>
+<hr>
+<a name="BITOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BITXOR" accesskey="n" rel="next">BITXOR</a>, Previous: <a href="usermanual.html#BITAND" accesskey="p" rel="prev">BITAND</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="bitor"></a>
+<h4 class="unnumberedsubsec">bitor</h4>
+<a name="index-bitor"></a>
+
+<div class="example">
+<pre class="example">BITOR num1 num2
+(BITOR num1 num2 num3 ...)
+</pre></div>
+
+<p>outputs the bitwise <var>or</var> of its inputs, which must be integers.
+</p>
+<p>See <a href="usermanual.html#OR">OR</a> .
+</p>
+<hr>
+<a name="BITXOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BITNOT" accesskey="n" rel="next">BITNOT</a>, Previous: <a href="usermanual.html#BITOR" accesskey="p" rel="prev">BITOR</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="bitxor"></a>
+<h4 class="unnumberedsubsec">bitxor</h4>
+<a name="index-bitxor"></a>
+
+<div class="example">
+<pre class="example">BITXOR num1 num2
+(BITXOR num1 num2 num3 ...)
+</pre></div>
+
+<p>outputs the bitwise <var>exclusive or</var> of its inputs, which must be integers.
+</p>
+<hr>
+<a name="BITNOT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ASHIFT" accesskey="n" rel="next">ASHIFT</a>, Previous: <a href="usermanual.html#BITXOR" accesskey="p" rel="prev">BITXOR</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="bitnot"></a>
+<h4 class="unnumberedsubsec">bitnot</h4>
+<a name="index-bitnot"></a>
+
+<div class="example">
+<pre class="example">BITNOT num
+</pre></div>
+
+<p>outputs the bitwise <var>not</var> of its input, which must be an integer.
+</p>
+<p>See <a href="usermanual.html#NOT">NOT</a> .
+</p>
+<hr>
+<a name="ASHIFT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LSHIFT" accesskey="n" rel="next">LSHIFT</a>, Previous: <a href="usermanual.html#BITNOT" accesskey="p" rel="prev">BITNOT</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ashift"></a>
+<h4 class="unnumberedsubsec">ashift</h4>
+<a name="index-ashift"></a>
+
+<div class="example">
+<pre class="example">ASHIFT num1 num2
+</pre></div>
+
+<p>outputs <var>num1</var> arithmetic-shifted to the left by <var>num2</var> bits.  If
+<var>num2</var> is negative, the shift is to the right with sign extension.  The
+inputs must be integers.
+</p>
+<hr>
+<a name="LSHIFT"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#ASHIFT" accesskey="p" rel="prev">ASHIFT</a>, Up: <a href="usermanual.html#BITWISE-OPERATIONS" accesskey="u" rel="up">BITWISE OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="lshift"></a>
+<h4 class="unnumberedsubsec">lshift</h4>
+<a name="index-lshift"></a>
+
+<div class="example">
+<pre class="example">LSHIFT num1 num2
+</pre></div>
+
+<p>outputs <var>num1</var> logical-shifted to the left by <var>num2</var> bits.  If
+<var>num2</var> is negative, the shift is to the right with zero fill.  The inputs
+must be integers.
+</p>
+
+
+<hr>
+<a name="LOGICAL-OPERATIONS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GRAPHICS" accesskey="n" rel="next">GRAPHICS</a>, Previous: <a href="usermanual.html#ARITHMETIC" accesskey="p" rel="prev">ARITHMETIC</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Logical-Operations"></a>
+<h2 class="chapter">6 Logical Operations</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#AND" accesskey="1">AND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OR" accesskey="2">OR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NOT" accesskey="3">NOT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="AND"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OR" accesskey="n" rel="next">OR</a>, Previous: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="p" rel="prev">LOGICAL OPERATIONS</a>, Up: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="u" rel="up">LOGICAL OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="and"></a>
+<h3 class="unnumberedsec">and</h3>
+<a name="index-and"></a>
+
+<div class="example">
+<pre class="example">AND tf1 tf2
+(AND tf1 tf2 tf3 ...)
+</pre></div>
+
+<p>outputs <code>TRUE</code> if all inputs are <code>TRUE</code>, otherwise <code>FALSE</code>.  All inputs
+must be <code>TRUE</code> or <code>FALSE</code>.  (Comparison is case-insensitive regardless
+of the value of <code>CASEIGNOREDP</code>.  That is, <code>true</code> or <code>True</code> or <code>TRUE</code>
+are all the same.)  An input can be a list, in which case it is
+taken as an expression to run; that expression must produce a <code>TRUE</code>
+or <code>FALSE</code> value.  List expressions are evaluated from left to right;
+as soon as a <code>FALSE</code> value is found, the remaining inputs are not
+examined.  Example:
+</p>
+<div class="example">
+<pre class="example">MAKE &quot;RESULT AND [NOT (:X = 0)] [(1 / :X) &gt; .5]
+</pre></div>
+
+<p>to avoid the division by zero if the first part is false.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OR" accesskey="1">OR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NOT" accesskey="2">NOT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="OR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NOT" accesskey="n" rel="next">NOT</a>, Previous: <a href="usermanual.html#AND" accesskey="p" rel="prev">AND</a>, Up: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="u" rel="up">LOGICAL OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="or"></a>
+<h4 class="unnumberedsubsec">or</h4>
+<a name="index-or"></a>
+
+<div class="example">
+<pre class="example">OR tf1 tf2
+(OR tf1 tf2 tf3 ...)
+</pre></div>
+
+<p>outputs <code>TRUE</code> if any input is <code>TRUE</code>, otherwise <code>FALSE</code>.  All inputs
+must be <code>TRUE</code> or <code>FALSE</code>.  (Comparison is case-insensitive regardless
+of the value of <code>CASEIGNOREDP</code>.  That is, <code>true</code> or <code>True</code> or <code>TRUE</code>
+are all the same.)  An input can be a list, in which case it is
+taken as an expression to run; that expression must produce a <code>TRUE</code>
+or <code>FALSE</code> value.  List expressions are evaluated from left to right;
+as soon as a <code>TRUE</code> value is found, the remaining inputs are not
+examined.  Example:
+</p>
+<div class="example">
+<pre class="example">IF OR :X=0 [some.long.computation] [...]
+</pre></div>
+
+<p>to avoid the long computation if the first condition is met.
+</p>
+<hr>
+<a name="NOT"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#OR" accesskey="p" rel="prev">OR</a>, Up: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="u" rel="up">LOGICAL OPERATIONS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="not"></a>
+<h4 class="unnumberedsubsec">not</h4>
+<a name="index-not"></a>
+
+<div class="example">
+<pre class="example">NOT tf
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is <code>FALSE</code>, and vice versa.  The input can be
+a list, in which case it is taken as an expression to run; that
+expression must produce a <code>TRUE</code> or <code>FALSE</code> value.
+</p>
+
+<hr>
+<a name="GRAPHICS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="n" rel="next">WORKSPACE MANAGEMENT</a>, Previous: <a href="usermanual.html#LOGICAL-OPERATIONS" accesskey="p" rel="prev">LOGICAL OPERATIONS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Graphics"></a>
+<h2 class="chapter">7 Graphics</h2>
+
+<p>Berkeley Logo provides traditional Logo turtle graphics with one turtle.
+Multiple turtles, dynamic turtles, and collision detection are not supported.
+This is the most hardware-dependent part of Logo; some features may exist
+on some machines but not others.  Nevertheless, the goal has been to make
+Logo programs as portable as possible, rather than to take fullest advantage
+of the capabilities of each machine.  In particular, Logo attempts to scale
+the screen so that turtle coordinates [&ndash;100 &ndash;100] and [100 100] fit on the
+graphics window, and so that the aspect ratio is 1:1.
+</p>
+<p>The center of the graphics window (which may or may not be the entire
+screen, depending on the machine used) is turtle location [0 0].  Positive
+X is to the right; positive Y is up.  Headings (angles) are measured in
+degrees clockwise from the positive Y axis.  (This differs from the common
+mathematical convention of measuring angles counterclockwise from the
+positive X axis.)  The turtle is represented as an isoceles triangle; the
+actual turtle position is at the midpoint of the base (the short side).
+However, the turtle is drawn one step behind its actual position, so that
+the display of the base of the turtle&rsquo;s triangle does not obscure a line
+drawn perpendicular to it (as would happen after drawing a square).
+</p>
+<p>Colors are, of course, hardware-dependent.  However, Logo provides partial
+hardware independence by interpreting color numbers 0 through 7 uniformly
+on all computers:
+</p>
+<div class="example">
+<pre class="example">0  black        1  blue         2  green        3  cyan
+4  red          5  magenta      6  yellow       7 white
+</pre></div>
+
+<p>Where possible, Logo provides additional user-settable colors; how many
+are available depends on the hardware and operating system environment.
+If at least 16 colors are available, Logo tries to provide uniform
+initial settings for the colors 8-15:
+</p>
+<div class="example">
+<pre class="example"> 8  brown        9  tan         10  forest      11  aqua
+12  salmon      13  purple      14  orange      15  grey
+</pre></div>
+
+<p>Logo begins with a black background and white pen.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TURTLE-MOTION" accesskey="1">TURTLE MOTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="2">TURTLE MOTION QUERIES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="3">TURTLE AND WINDOW CONTROL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="4">TURTLE AND WINDOW QUERIES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="5">PEN AND BACKGROUND CONTROL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PEN-QUERIES" accesskey="6">PEN QUERIES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="7">SAVING AND LOADING PICTURES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MOUSE-QUERIES" accesskey="8">MOUSE QUERIES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+
+<hr>
+<a name="TURTLE-MOTION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="n" rel="next">TURTLE MOTION QUERIES</a>, Previous: <a href="usermanual.html#GRAPHICS" accesskey="p" rel="prev">GRAPHICS</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Turtle-Motion"></a>
+<h3 class="section">7.1 Turtle Motion</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FORWARD" accesskey="1">FORWARD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BACK" accesskey="2">BACK</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LEFT" accesskey="3">LEFT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RIGHT" accesskey="4">RIGHT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETPOS" accesskey="5">SETPOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETXY" accesskey="6">SETXY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETX" accesskey="7">SETX</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETY" accesskey="8">SETY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETHEADING" accesskey="9">SETHEADING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#HOME">HOME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ARC">ARC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="FORWARD"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BACK" accesskey="n" rel="next">BACK</a>, Previous: <a href="usermanual.html#TURTLE-MOTION" accesskey="p" rel="prev">TURTLE MOTION</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="forward"></a>
+<h4 class="unnumberedsubsec">forward</h4>
+<a name="index-forward"></a>
+<a name="index-fd"></a>
+
+<div class="example">
+<pre class="example">FORWARD dist
+FD dist
+</pre></div>
+
+<p>moves the turtle forward, in the direction that it&rsquo;s facing, by the
+specified distance (measured in turtle steps).
+</p>
+<hr>
+<a name="BACK"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LEFT" accesskey="n" rel="next">LEFT</a>, Previous: <a href="usermanual.html#FORWARD" accesskey="p" rel="prev">FORWARD</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="back"></a>
+<h4 class="unnumberedsubsec">back</h4>
+<a name="index-back"></a>
+<a name="index-bk"></a>
+
+<div class="example">
+<pre class="example">BACK dist
+BK dist
+</pre></div>
+
+<p>moves the turtle backward, i.e., exactly opposite to the direction that
+it&rsquo;s facing, by the specified distance.  (The heading of the turtle does
+not change.)
+</p>
+<hr>
+<a name="LEFT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RIGHT" accesskey="n" rel="next">RIGHT</a>, Previous: <a href="usermanual.html#BACK" accesskey="p" rel="prev">BACK</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="left"></a>
+<h4 class="unnumberedsubsec">left</h4>
+<a name="index-left"></a>
+<a name="index-lt"></a>
+
+<div class="example">
+<pre class="example">LEFT degrees
+LT degrees
+</pre></div>
+
+<p>turns the turtle counterclockwise by the specified angle, measured in
+degrees (1/360 of a circle).
+</p>
+<hr>
+<a name="RIGHT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETPOS" accesskey="n" rel="next">SETPOS</a>, Previous: <a href="usermanual.html#LEFT" accesskey="p" rel="prev">LEFT</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="right"></a>
+<h4 class="unnumberedsubsec">right</h4>
+<a name="index-right"></a>
+<a name="index-rt"></a>
+
+<div class="example">
+<pre class="example">RIGHT degrees
+RT degrees
+</pre></div>
+
+<p>turns the turtle clockwise by the specified angle, measured in degrees
+(1/360 of a circle).
+</p>
+<hr>
+<a name="SETPOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETXY" accesskey="n" rel="next">SETXY</a>, Previous: <a href="usermanual.html#RIGHT" accesskey="p" rel="prev">RIGHT</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setpos"></a>
+<h4 class="unnumberedsubsec">setpos</h4>
+<a name="index-setpos"></a>
+
+<div class="example">
+<pre class="example">SETPOS pos
+</pre></div>
+
+<p>moves the turtle to an absolute position in the graphics window.  The input is
+a list of two numbers, the X and Y coordinates.
+</p>
+<hr>
+<a name="SETXY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETX" accesskey="n" rel="next">SETX</a>, Previous: <a href="usermanual.html#SETPOS" accesskey="p" rel="prev">SETPOS</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setxy"></a>
+<h4 class="unnumberedsubsec">setxy</h4>
+<a name="index-setxy"></a>
+
+<div class="example">
+<pre class="example">SETXY xcor ycor
+</pre></div>
+
+<p>moves the turtle to an absolute position in the graphics window.  The two
+inputs are numbers, the X and Y coordinates.
+</p>
+<hr>
+<a name="SETX"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETY" accesskey="n" rel="next">SETY</a>, Previous: <a href="usermanual.html#SETXY" accesskey="p" rel="prev">SETXY</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setx"></a>
+<h4 class="unnumberedsubsec">setx</h4>
+<a name="index-setx"></a>
+
+<div class="example">
+<pre class="example">SETX xcor
+</pre></div>
+
+<p>moves the turtle horizontally from its old position to a new absolute
+horizontal coordinate.  The input is the new X coordinate.
+</p>
+<hr>
+<a name="SETY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETHEADING" accesskey="n" rel="next">SETHEADING</a>, Previous: <a href="usermanual.html#SETX" accesskey="p" rel="prev">SETX</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="sety"></a>
+<h4 class="unnumberedsubsec">sety</h4>
+<a name="index-sety"></a>
+
+<div class="example">
+<pre class="example">SETY ycor
+</pre></div>
+
+<p>moves the turtle vertically from its old position to a new absolute
+vertical coordinate.  The input is the new Y coordinate.
+</p>
+<hr>
+<a name="SETHEADING"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#HOME" accesskey="n" rel="next">HOME</a>, Previous: <a href="usermanual.html#SETY" accesskey="p" rel="prev">SETY</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setheading"></a>
+<h4 class="unnumberedsubsec">setheading</h4>
+<a name="index-setheading"></a>
+<a name="index-seth"></a>
+
+<div class="example">
+<pre class="example">SETHEADING degrees
+SETH degrees
+</pre></div>
+
+<p>turns the turtle to a new absolute heading.  The input is a number,
+the heading in degrees clockwise from the positive Y axis.
+</p>
+<hr>
+<a name="HOME"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ARC" accesskey="n" rel="next">ARC</a>, Previous: <a href="usermanual.html#SETHEADING" accesskey="p" rel="prev">SETHEADING</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="home"></a>
+<h4 class="unnumberedsubsec">home</h4>
+<a name="index-home"></a>
+
+<div class="example">
+<pre class="example">HOME
+</pre></div>
+
+<p>moves the turtle to the center of the screen.  Equivalent to 
+<tt>SETPOS&nbsp;[0&nbsp;0]&nbsp;SETHEADING&nbsp;0.</tt><!-- /@w -->
+</p>
+<p>See <a href="usermanual.html#SETPOS">SETPOS</a> ,
+See <a href="usermanual.html#SETHEADING">SETHEADING</a> .
+</p>
+<hr>
+<a name="ARC"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#HOME" accesskey="p" rel="prev">HOME</a>, Up: <a href="usermanual.html#TURTLE-MOTION" accesskey="u" rel="up">TURTLE MOTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="arc"></a>
+<h4 class="unnumberedsubsec">arc</h4>
+<a name="index-arc"></a>
+
+<div class="example">
+<pre class="example">ARC angle radius
+</pre></div>
+
+<p>draws an arc of a circle, with the turtle at the center, with the
+specified radius, starting at the turtle&rsquo;s heading and extending
+clockwise through the specified angle.  The turtle does not move.
+</p>
+
+<hr>
+<a name="TURTLE-MOTION-QUERIES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="n" rel="next">TURTLE AND WINDOW CONTROL</a>, Previous: <a href="usermanual.html#TURTLE-MOTION" accesskey="p" rel="prev">TURTLE MOTION</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Turtle-Motion-Queries"></a>
+<h3 class="section">7.2 Turtle Motion Queries</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POS" accesskey="1">POS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#XCOR" accesskey="2">XCOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#YCOR" accesskey="3">YCOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#HEADING" accesskey="4">HEADING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TOWARDS" accesskey="5">TOWARDS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SCRUNCH" accesskey="6">SCRUNCH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="POS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#XCOR" accesskey="n" rel="next">XCOR</a>, Previous: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="p" rel="prev">TURTLE MOTION QUERIES</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pos"></a>
+<h4 class="unnumberedsubsec">pos</h4>
+<a name="index-pos"></a>
+
+<div class="example">
+<pre class="example">POS
+</pre></div>
+
+<p>outputs the turtle&rsquo;s current position, as a list of two numbers, the X
+and Y coordinates.
+</p>
+<hr>
+<a name="XCOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#YCOR" accesskey="n" rel="next">YCOR</a>, Previous: <a href="usermanual.html#POS" accesskey="p" rel="prev">POS</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="xcor"></a>
+<h4 class="unnumberedsubsec">xcor</h4>
+<a name="index-xcor"></a>
+
+<div class="example">
+<pre class="example">XCOR						(library procedure)
+</pre></div>
+
+<p>outputs a number, the turtle&rsquo;s X coordinate.
+</p>
+<hr>
+<a name="YCOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#HEADING" accesskey="n" rel="next">HEADING</a>, Previous: <a href="usermanual.html#XCOR" accesskey="p" rel="prev">XCOR</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ycor"></a>
+<h4 class="unnumberedsubsec">ycor</h4>
+<a name="index-ycor"></a>
+
+<div class="example">
+<pre class="example">YCOR						(library procedure)
+</pre></div>
+
+<p>outputs a number, the turtle&rsquo;s Y coordinate.
+</p>
+<hr>
+<a name="HEADING"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TOWARDS" accesskey="n" rel="next">TOWARDS</a>, Previous: <a href="usermanual.html#YCOR" accesskey="p" rel="prev">YCOR</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="heading"></a>
+<h4 class="unnumberedsubsec">heading</h4>
+<a name="index-heading"></a>
+
+<div class="example">
+<pre class="example">HEADING
+</pre></div>
+
+<p>outputs a number, the turtle&rsquo;s heading in degrees.
+</p>
+<hr>
+<a name="TOWARDS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SCRUNCH" accesskey="n" rel="next">SCRUNCH</a>, Previous: <a href="usermanual.html#HEADING" accesskey="p" rel="prev">HEADING</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="towards"></a>
+<h4 class="unnumberedsubsec">towards</h4>
+<a name="index-towards"></a>
+
+<div class="example">
+<pre class="example">TOWARDS pos
+</pre></div>
+
+<p>outputs a number, the heading at which the turtle should be facing so
+that it would point from its current position to the position given as
+the input.
+</p>
+<hr>
+<a name="SCRUNCH"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#TOWARDS" accesskey="p" rel="prev">TOWARDS</a>, Up: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="u" rel="up">TURTLE MOTION QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="scrunch"></a>
+<h4 class="unnumberedsubsec">scrunch</h4>
+<a name="index-scrunch"></a>
+
+<div class="example">
+<pre class="example">SCRUNCH
+</pre></div>
+
+<p>outputs a list containing two numbers, the X and Y scrunch factors, as used by
+<code>SETSCRUNCH</code>.  (But note that <code>SETSCRUNCH</code> takes two numbers as inputs, not one
+list of numbers.)
+</p>
+<p>See <a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a> .
+</p>
+
+
+<hr>
+<a name="TURTLE-AND-WINDOW-CONTROL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="n" rel="next">TURTLE AND WINDOW QUERIES</a>, Previous: <a href="usermanual.html#TURTLE-MOTION-QUERIES" accesskey="p" rel="prev">TURTLE MOTION QUERIES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Turtle-and-Window-Control"></a>
+<h3 class="section">7.3 Turtle and Window Control</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SHOWTURTLE" accesskey="1">SHOWTURTLE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#HIDETURTLE" accesskey="2">HIDETURTLE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CLEAN" accesskey="3">CLEAN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CLEARSCREEN" accesskey="4">CLEARSCREEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WRAP" accesskey="5">WRAP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WINDOW" accesskey="6">WINDOW</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FENCE" accesskey="7">FENCE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FILL" accesskey="8">FILL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FILLED" accesskey="9">FILLED</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LABEL">LABEL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETLABELHEIGHT">SETLABELHEIGHT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TEXTSCREEN">TEXTSCREEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FULLSCREEN">FULLSCREEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REFRESH">REFRESH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NOREFRESH">NOREFRESH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="SHOWTURTLE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#HIDETURTLE" accesskey="n" rel="next">HIDETURTLE</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="p" rel="prev">TURTLE AND WINDOW CONTROL</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="showturtle"></a>
+<h4 class="unnumberedsubsec">showturtle</h4>
+<a name="index-showturtle"></a>
+<a name="index-st"></a>
+
+<div class="example">
+<pre class="example">SHOWTURTLE
+ST
+</pre></div>
+
+<p>makes the turtle visible.
+</p>
+<hr>
+<a name="HIDETURTLE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CLEAN" accesskey="n" rel="next">CLEAN</a>, Previous: <a href="usermanual.html#SHOWTURTLE" accesskey="p" rel="prev">SHOWTURTLE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="hideturtle"></a>
+<h4 class="unnumberedsubsec">hideturtle</h4>
+<a name="index-hideturtle"></a>
+<a name="index-ht"></a>
+
+<div class="example">
+<pre class="example">HIDETURTLE
+HT
+</pre></div>
+
+<p>makes the turtle invisible.  It&rsquo;s a good idea to do this while you&rsquo;re in
+the middle of a complicated drawing, because hiding the turtle speeds up
+the drawing substantially.
+</p>
+<hr>
+<a name="CLEAN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CLEARSCREEN" accesskey="n" rel="next">CLEARSCREEN</a>, Previous: <a href="usermanual.html#HIDETURTLE" accesskey="p" rel="prev">HIDETURTLE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="clean"></a>
+<h4 class="unnumberedsubsec">clean</h4>
+<a name="index-clean"></a>
+
+<div class="example">
+<pre class="example">CLEAN
+</pre></div>
+
+<p>erases all lines that the turtle has drawn on the graphics window.  The
+turtle&rsquo;s state (position, heading, pen mode, etc.) is not changed.
+</p>
+<hr>
+<a name="CLEARSCREEN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WRAP" accesskey="n" rel="next">WRAP</a>, Previous: <a href="usermanual.html#CLEAN" accesskey="p" rel="prev">CLEAN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="clearscreen"></a>
+<h4 class="unnumberedsubsec">clearscreen</h4>
+<a name="index-clearscreen"></a>
+<a name="index-cs"></a>
+
+<div class="example">
+<pre class="example">CLEARSCREEN
+CS
+</pre></div>
+
+<p>erases the graphics window and sends the turtle to its initial position
+and heading.  Like <code>HOME</code> and <code>CLEAN</code> together.
+</p>
+<p>See <a href="usermanual.html#HOME">HOME</a> .
+</p>
+<hr>
+<a name="WRAP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WINDOW" accesskey="n" rel="next">WINDOW</a>, Previous: <a href="usermanual.html#CLEARSCREEN" accesskey="p" rel="prev">CLEARSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="wrap"></a>
+<h4 class="unnumberedsubsec">wrap</h4>
+<a name="index-wrap"></a>
+
+<div class="example">
+<pre class="example">WRAP
+</pre></div>
+
+<p>tells the turtle to enter wrap mode:  From now on, if the turtle is
+asked to move past the boundary of the graphics window, it will &quot;wrap
+around&quot; and reappear at the opposite edge of the window.  The top edge
+wraps to the bottom edge, while the left edge wraps to the right edge.
+(So the window is topologically equivalent to a torus.)  This is the
+turtle&rsquo;s initial mode.  Compare <code>WINDOW</code> and <code>FENCE</code>.
+</p>
+<p>See <a href="usermanual.html#FENCE">FENCE</a> .
+</p>
+<hr>
+<a name="WINDOW"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FENCE" accesskey="n" rel="next">FENCE</a>, Previous: <a href="usermanual.html#WRAP" accesskey="p" rel="prev">WRAP</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="window"></a>
+<h4 class="unnumberedsubsec">window</h4>
+<a name="index-window"></a>
+
+<div class="example">
+<pre class="example">WINDOW
+</pre></div>
+
+<p>tells the turtle to enter window mode:  From now on, if the turtle is
+asked to move past the boundary of the graphics window, it will move
+offscreen.  The visible graphics window is considered as just part of an
+infinite graphics plane; the turtle can be anywhere on the plane.  (If
+you lose the turtle, <code>HOME</code> will bring it back to the center of the
+window.)  Compare <code>WRAP</code> and <code>FENCE</code>.
+</p>
+
+<hr>
+<a name="FENCE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FILL" accesskey="n" rel="next">FILL</a>, Previous: <a href="usermanual.html#WINDOW" accesskey="p" rel="prev">WINDOW</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="fence"></a>
+<h4 class="unnumberedsubsec">fence</h4>
+<a name="index-fence"></a>
+
+<div class="example">
+<pre class="example">FENCE
+</pre></div>
+
+<p>tells the turtle to enter fence mode:  From now on, if the turtle is
+asked to move past the boundary of the graphics window, it will move as
+far as it can and then stop at the edge with an &quot;out of bounds&quot; error
+message.  Compare <code>WRAP</code> and <code>WINDOW</code>.
+</p>
+<p>See <a href="usermanual.html#WRAP">WRAP</a> .
+</p>
+<hr>
+<a name="FILL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FILLED" accesskey="n" rel="next">FILLED</a>, Previous: <a href="usermanual.html#FENCE" accesskey="p" rel="prev">FENCE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="fill"></a>
+<h4 class="unnumberedsubsec">fill</h4>
+<a name="index-fill"></a>
+
+<div class="example">
+<pre class="example">FILL
+</pre></div>
+
+<p>fills in a region of the graphics window containing the turtle and
+bounded by lines that have been drawn earlier.  This is not portable; it
+doesn&rsquo;t work for all machines, and may not work exactly the same way on
+different machines.
+</p>
+<hr>
+<a name="FILLED"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LABEL" accesskey="n" rel="next">LABEL</a>, Previous: <a href="usermanual.html#FILL" accesskey="p" rel="prev">FILL</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="filled"></a>
+<h4 class="unnumberedsubsec">filled</h4>
+<a name="index-filled"></a>
+
+<div class="example">
+<pre class="example">FILLED color instructions
+</pre></div>
+
+<p>runs the instructions, remembering all points visited by turtle
+motion commands, starting <em>and ending</em> with the turtle&rsquo;s initial
+position.  Then draws (ignoring penmode) the resulting polygon,
+in the current pen color, filling the polygon with the given color,
+which can be a color number or an RGB list.  The instruction list
+cannot include another FILLED invocation.  (wxWidgets only)
+</p>
+<hr>
+<a name="LABEL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETLABELHEIGHT" accesskey="n" rel="next">SETLABELHEIGHT</a>, Previous: <a href="usermanual.html#FILLED" accesskey="p" rel="prev">FILLED</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="label"></a>
+<h4 class="unnumberedsubsec">label</h4>
+<a name="index-label"></a>
+
+<div class="example">
+<pre class="example">LABEL text
+</pre></div>
+
+<p>takes a word or list as input, and prints the input on the graphics
+window, starting at the turtle&rsquo;s position.
+</p>
+<hr>
+<a name="SETLABELHEIGHT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TEXTSCREEN" accesskey="n" rel="next">TEXTSCREEN</a>, Previous: <a href="usermanual.html#LABEL" accesskey="p" rel="prev">LABEL</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setlabelheight"></a>
+<h4 class="unnumberedsubsec">setlabelheight</h4>
+<a name="index-setlabelheight"></a>
+
+<div class="example">
+<pre class="example">SETLABELHEIGHT height
+</pre></div>
+
+<p>command (wxWidgets only).  Takes a positive integer argument and tries
+to set the font size so that the character height (including
+descenders) is that many turtle steps.  This will be different from
+the number of screen pixels if <code>SETSCRUNCH</code> has been used.  Also, note
+that <code>SETSCRUNCH</code> changes the font size to try to preserve this height
+in turtle steps.  Note that the query operation corresponding to this
+command is <code>LABELSIZE</code>, not <code>LABELHEIGHT</code>, because it tells you the width
+as well as the height of characters in the current font.
+</p>
+<hr>
+<a name="TEXTSCREEN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FULLSCREEN" accesskey="n" rel="next">FULLSCREEN</a>, Previous: <a href="usermanual.html#SETLABELHEIGHT" accesskey="p" rel="prev">SETLABELHEIGHT</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="textscreen"></a>
+<h4 class="unnumberedsubsec">textscreen</h4>
+<a name="index-textscreen"></a>
+
+<div class="example">
+<pre class="example">TEXTSCREEN
+TS
+</pre></div>
+
+<p>rearranges the size and position of windows to maximize the space
+available in the text window (the window used for interaction with
+Logo).  The details differ among machines.  Compare <code>SPLITSCREEN</code> and
+<code>FULLSCREEN</code>.
+</p>
+<p>See <a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a> .
+</p>
+<hr>
+<a name="FULLSCREEN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SPLITSCREEN" accesskey="n" rel="next">SPLITSCREEN</a>, Previous: <a href="usermanual.html#TEXTSCREEN" accesskey="p" rel="prev">TEXTSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="fullscreen"></a>
+<h4 class="unnumberedsubsec">fullscreen</h4>
+<a name="index-fullscreen"></a>
+<a name="index-fs"></a>
+
+<div class="example">
+<pre class="example">FULLSCREEN
+FS
+</pre></div>
+
+<p>rearranges the size and position of windows to maximize the space
+available in the graphics window.  The details differ among machines.
+Compare <code>SPLITSCREEN</code> and <code>TEXTSCREEN</code>.
+</p>
+<p>Since there must be a text window to allow printing (including the printing of
+the Logo prompt), Logo automatically switches from fullscreen to splitscreen
+whenever anything is printed.
+</p>
+<p>In the DOS version, switching from fullscreen to splitscreen loses the part of
+the picture that&rsquo;s hidden by the text window.  [This design decision follows
+from the scarcity of memory, so that the extra memory to remember an invisible
+part of a drawing seems too expensive.]
+</p>
+<hr>
+<a name="SPLITSCREEN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETSCRUNCH" accesskey="n" rel="next">SETSCRUNCH</a>, Previous: <a href="usermanual.html#FULLSCREEN" accesskey="p" rel="prev">FULLSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="splitscreen"></a>
+<h4 class="unnumberedsubsec">splitscreen</h4>
+<a name="index-splitscreen"></a>
+<a name="index-ss"></a>
+
+<div class="example">
+<pre class="example">SPLITSCREEN
+SS
+</pre></div>
+
+<p>rearranges the size and position of windows to allow some room for text
+interaction while also keeping most of the graphics window visible.  The
+details differ among machines.  Compare <code>TEXTSCREEN</code> and <code>FULLSCREEN</code>.
+</p>
+<p>See <a href="usermanual.html#TEXTSCREEN">TEXTSCREEN</a> .
+</p>
+<hr>
+<a name="SETSCRUNCH"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REFRESH" accesskey="n" rel="next">REFRESH</a>, Previous: <a href="usermanual.html#SPLITSCREEN" accesskey="p" rel="prev">SPLITSCREEN</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setscrunch"></a>
+<h4 class="unnumberedsubsec">setscrunch</h4>
+<a name="index-setscrunch"></a>
+<a name="index-scrunch_002edat"></a>
+
+<div class="example">
+<pre class="example">SETSCRUNCH xscale yscale
+</pre></div>
+
+<p>adjusts the aspect ratio and scaling of the graphics display.  After
+this command is used, all further turtle motion will be adjusted by
+multiplying the horizontal and vertical extent of the motion by the two
+numbers given as inputs.  For example, after the instruction
+<tt>SETSCRUNCH&nbsp;2&nbsp;1</tt><!-- /@w --> motion at a heading of 45 degrees will move twice
+as far horizontally as vertically.  If your squares don&rsquo;t come out
+square, try this.  (Alternatively, you can deliberately misadjust the
+aspect ratio to draw an ellipse.)
+</p>
+<p>For all modern computers, both scale factors are initially 1.
+For DOS machines, the scale factors are initially set according to what
+the hardware claims the aspect ratio is, but the hardware sometimes
+lies.  For DOS, the values set by <code>SETSCRUNCH</code> are remembered in a file (called
+<samp>scrunch.dat</samp>) and are automatically put into effect when a Logo session
+begins.
+</p>
+<hr>
+<a name="REFRESH"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NOREFRESH" accesskey="n" rel="next">NOREFRESH</a>, Previous: <a href="usermanual.html#SETSCRUNCH" accesskey="p" rel="prev">SETSCRUNCH</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="refresh"></a>
+<h4 class="unnumberedsubsec">refresh</h4>
+<a name="index-refresh"></a>
+
+<div class="example">
+<pre class="example">REFRESH
+</pre></div>
+
+<p>(command) tells Logo to remember the turtle&rsquo;s motions so that they
+can be used for high-resolution printing (wxWidgets) or to refresh
+the graphics window if it is moved, resized, or overlayed
+(non-wxWidgets).  This is the default.
+</p>
+<hr>
+<a name="NOREFRESH"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#REFRESH" accesskey="p" rel="prev">REFRESH</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="u" rel="up">TURTLE AND WINDOW CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="norefresh"></a>
+<h4 class="unnumberedsubsec">norefresh</h4>
+<a name="index-norefresh"></a>
+
+<div class="example">
+<pre class="example">NOREFRESH
+</pre></div>
+
+<p>(command) tells Logo not to remember the turtle&rsquo;s motions, which may
+be useful to save time and memory if your program is interactive or
+animated, rather than drawing a static picture you&rsquo;ll want to print
+later (wxWidgets).  In non-wxWidgets versions, using NOREFRESH may
+prevent Logo from restoring the graphics image after the window is
+moved, resized, or overlayed.
+</p>
+
+<hr>
+<a name="TURTLE-AND-WINDOW-QUERIES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="n" rel="next">PEN AND BACKGROUND CONTROL</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-CONTROL" accesskey="p" rel="prev">TURTLE AND WINDOW CONTROL</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Turtle-and-Window-Queries"></a>
+<h3 class="section">7.4 Turtle and Window Queries</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SHOWNP" accesskey="1">SHOWNP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SCREENMODE" accesskey="2">SCREENMODE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TURTLEMODE" accesskey="3">TURTLEMODE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LABELSIZE" accesskey="4">LABELSIZE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="SHOWNP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SCREENMODE" accesskey="n" rel="next">SCREENMODE</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="p" rel="prev">TURTLE AND WINDOW QUERIES</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="shownp"></a>
+<h4 class="unnumberedsubsec">shownp</h4>
+<a name="index-shownp"></a>
+<a name="index-shown_003f"></a>
+
+<div class="example">
+<pre class="example">SHOWNP
+SHOWN?
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the turtle is shown (visible), <code>FALSE</code> if the turtle is
+hidden.  See <code>SHOWTURTLE</code> and <code>HIDETURTLE</code>.
+</p>
+<p>See <a href="usermanual.html#SHOWTURTLE">SHOWTURTLE</a> ,
+<a href="usermanual.html#HIDETURTLE">HIDETURTLE</a> .
+</p>
+
+<hr>
+<a name="SCREENMODE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TURTLEMODE" accesskey="n" rel="next">TURTLEMODE</a>, Previous: <a href="usermanual.html#SHOWNP" accesskey="p" rel="prev">SHOWNP</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="screenmode"></a>
+<h4 class="unnumberedsubsec">screenmode</h4>
+<a name="index-screenmode"></a>
+
+<div class="example">
+<pre class="example">SCREENMODE
+</pre></div>
+
+<p>outputs the word <code>TEXTSCREEN</code>, <code>SPLITSCREEN</code>, or <code>FULLSCREEN</code> depending
+on the current screen mode.
+</p>
+<hr>
+<a name="TURTLEMODE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LABELSIZE" accesskey="n" rel="next">LABELSIZE</a>, Previous: <a href="usermanual.html#SCREENMODE" accesskey="p" rel="prev">SCREENMODE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="turtlemode"></a>
+<h4 class="unnumberedsubsec">turtlemode</h4>
+<a name="index-turtlemode"></a>
+
+<div class="example">
+<pre class="example">TURTLEMODE
+</pre></div>
+
+<p>outputs the word <code>WRAP</code>, <code>FENCE</code>, or <code>WINDOW</code> depending on the current
+turtle mode.
+</p>
+<hr>
+<a name="LABELSIZE"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#TURTLEMODE" accesskey="p" rel="prev">TURTLEMODE</a>, Up: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="u" rel="up">TURTLE AND WINDOW QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="labelsize"></a>
+<h4 class="unnumberedsubsec">labelsize</h4>
+<a name="index-labelsize"></a>
+
+<div class="example">
+<pre class="example">LABELSIZE
+</pre></div>
+
+<p>(wxWidgets only) outputs a list of two positive integers, the width
+and height of characters displayed by <code>LABEL</code> measured in turtle steps
+(which will be different from screen pixels if <code>SETSCRUNCH</code> has been
+used).  There is no <code>SETLABELSIZE</code> because the width and height of a
+font are not separately controllable, so the inverse of this operation
+is <code>SETLABELHEIGHT</code>, which takes just one number for the desired height.
+</p>
+
+
+<hr>
+<a name="PEN-AND-BACKGROUND-CONTROL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PEN-QUERIES" accesskey="n" rel="next">PEN QUERIES</a>, Previous: <a href="usermanual.html#TURTLE-AND-WINDOW-QUERIES" accesskey="p" rel="prev">TURTLE AND WINDOW QUERIES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Pen-and-Background-Control"></a>
+<h3 class="section">7.5 Pen and Background Control</h3>
+
+<p>The turtle carries a pen that can draw pictures.  At any time the pen
+can be UP (in which case moving the turtle does not change what&rsquo;s on the
+graphics screen) or DOWN (in which case the turtle leaves a trace).
+If the pen is down, it can operate in one of three modes: PAINT (so that it
+draws lines when the turtle moves), ERASE (so that it erases any lines
+that might have been drawn on or through that path earlier), or REVERSE
+(so that it inverts the status of each point along the turtle&rsquo;s path).
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENDOWN" accesskey="1">PENDOWN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENUP" accesskey="2">PENUP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENPAINT" accesskey="3">PENPAINT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENERASE" accesskey="4">PENERASE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENREVERSE" accesskey="5">PENREVERSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETPENCOLOR" accesskey="6">SETPENCOLOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETPALETTE" accesskey="7">SETPALETTE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETPENSIZE" accesskey="8">SETPENSIZE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETPENPATTERN" accesskey="9">SETPENPATTERN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETPEN">SETPEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETBACKGROUND">SETBACKGROUND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="PENDOWN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PENUP" accesskey="n" rel="next">PENUP</a>, Previous: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="p" rel="prev">PEN AND BACKGROUND CONTROL</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pendown"></a>
+<h4 class="unnumberedsubsec">pendown</h4>
+<a name="index-pendown"></a>
+<a name="index-pd"></a>
+
+<div class="example">
+<pre class="example">PENDOWN
+PD
+</pre></div>
+
+<p>sets the pen&rsquo;s position to <code>DOWN</code>, without changing its mode.
+</p>
+<hr>
+<a name="PENUP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PENPAINT" accesskey="n" rel="next">PENPAINT</a>, Previous: <a href="usermanual.html#PENDOWN" accesskey="p" rel="prev">PENDOWN</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="penup"></a>
+<h4 class="unnumberedsubsec">penup</h4>
+<a name="index-penup"></a>
+<a name="index-pu"></a>
+
+<div class="example">
+<pre class="example">PENUP
+PU
+</pre></div>
+
+<p>sets the pen&rsquo;s position to <code>UP</code>, without changing its mode.
+</p>
+<hr>
+<a name="PENPAINT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PENERASE" accesskey="n" rel="next">PENERASE</a>, Previous: <a href="usermanual.html#PENUP" accesskey="p" rel="prev">PENUP</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="penpaint"></a>
+<h4 class="unnumberedsubsec">penpaint</h4>
+<a name="index-penpaint"></a>
+<a name="index-ppt"></a>
+
+<div class="example">
+<pre class="example">PENPAINT
+PPT
+</pre></div>
+
+<p>sets the pen&rsquo;s position to <code>DOWN</code> and mode to <code>PAINT</code>.
+</p>
+<hr>
+<a name="PENERASE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PENREVERSE" accesskey="n" rel="next">PENREVERSE</a>, Previous: <a href="usermanual.html#PENPAINT" accesskey="p" rel="prev">PENPAINT</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="penerase"></a>
+<h4 class="unnumberedsubsec">penerase</h4>
+<a name="index-penerase"></a>
+<a name="index-pe"></a>
+
+<div class="example">
+<pre class="example">PENERASE
+PE
+</pre></div>
+
+<p>sets the pen&rsquo;s position to <code>DOWN</code> and mode to <code>ERASE</code>.
+</p>
+<hr>
+<a name="PENREVERSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETPENCOLOR" accesskey="n" rel="next">SETPENCOLOR</a>, Previous: <a href="usermanual.html#PENERASE" accesskey="p" rel="prev">PENERASE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="penreverse"></a>
+<h4 class="unnumberedsubsec">penreverse</h4>
+<a name="index-penreverse"></a>
+<a name="index-px"></a>
+
+<div class="example">
+<pre class="example">PENREVERSE
+PX
+</pre></div>
+
+<p>sets the pen&rsquo;s position to <code>DOWN</code> and mode to <code>REVERSE</code>.  (This may interact
+in system-dependent ways with use of color.)
+</p>
+<hr>
+<a name="SETPENCOLOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETPALETTE" accesskey="n" rel="next">SETPALETTE</a>, Previous: <a href="usermanual.html#PENREVERSE" accesskey="p" rel="prev">PENREVERSE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setpencolor"></a>
+<h4 class="unnumberedsubsec">setpencolor</h4>
+<a name="index-setpencolor"></a>
+<a name="index-setpc"></a>
+
+<div class="example">
+<pre class="example">SETPENCOLOR colornumber.or.rgblist
+SETPC colornumber.or.rgblist
+</pre></div>
+
+<p>sets the pen color to the given number, which must be a nonnegative
+integer.  There are initial assignments for the first 16 colors:
+</p>
+<div class="example">
+<pre class="example"> 0  black	 1  blue	 2  green	 3  cyan
+ 4  red		 5  magenta	 6  yellow	 7 white
+ 8  brown	 9  tan		10  forest	11  aqua
+12  salmon	13  purple	14  orange	15  grey
+</pre></div>
+
+<p>but other colors can be assigned to numbers by the <code>PALETTE</code> command.
+Alternatively, sets the pen color to the given RGB values (a list of
+three nonnegative numbers less than 100 specifying the percent saturation
+of red, green, and blue in the desired color).
+</p>
+<hr>
+<a name="SETPALETTE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETPENSIZE" accesskey="n" rel="next">SETPENSIZE</a>, Previous: <a href="usermanual.html#SETPENCOLOR" accesskey="p" rel="prev">SETPENCOLOR</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setpalette"></a>
+<h4 class="unnumberedsubsec">setpalette</h4>
+<a name="index-setpalette"></a>
+
+<div class="example">
+<pre class="example">SETPALETTE colornumber rgblist
+</pre></div>
+
+<p>sets the actual color corresponding to a given number, if allowed by the
+hardware and operating system.  Colornumber must be an integer greater than or
+equal to 8.  (Logo tries to keep the first 8 colors constant.)  The second
+input is a list of three nonnegative numbers less than 100 specifying the
+percent saturation of red, green, and blue in the desired color.
+</p>
+<hr>
+<a name="SETPENSIZE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETPENPATTERN" accesskey="n" rel="next">SETPENPATTERN</a>, Previous: <a href="usermanual.html#SETPALETTE" accesskey="p" rel="prev">SETPALETTE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setpensize"></a>
+<h4 class="unnumberedsubsec">setpensize</h4>
+<a name="index-setpensize"></a>
+
+<div class="example">
+<pre class="example">SETPENSIZE size
+</pre></div>
+
+<p>sets the thickness of the pen.  The input is either a single positive
+integer or a list of two positive integers (for horizontal and
+vertical thickness).  Some versions pay no attention to the second
+number, but always have a square pen.
+</p>
+<hr>
+<a name="SETPENPATTERN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETPEN" accesskey="n" rel="next">SETPEN</a>, Previous: <a href="usermanual.html#SETPENSIZE" accesskey="p" rel="prev">SETPENSIZE</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setpenpattern"></a>
+<h4 class="unnumberedsubsec">setpenpattern</h4>
+<a name="index-setpenpattern"></a>
+
+<div class="example">
+<pre class="example">SETPENPATTERN pattern
+</pre></div>
+
+<p>sets hardware-dependent pen characteristics.  This command is not
+guaranteed compatible between implementations on different machines.
+</p>
+<hr>
+<a name="SETPEN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETBACKGROUND" accesskey="n" rel="next">SETBACKGROUND</a>, Previous: <a href="usermanual.html#SETPENPATTERN" accesskey="p" rel="prev">SETPENPATTERN</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setpen"></a>
+<h4 class="unnumberedsubsec">setpen</h4>
+<a name="index-setpen"></a>
+
+<div class="example">
+<pre class="example">SETPEN list					(library procedure)
+</pre></div>
+
+<p>sets the pen&rsquo;s position, mode, thickness, and hardware-dependent
+characteristics according to the information in the input list, which should
+be taken from an earlier invocation of <code>PEN</code>.
+</p>
+<p>See <a href="usermanual.html#PEN">PEN</a> .
+</p>
+<hr>
+<a name="SETBACKGROUND"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#SETPEN" accesskey="p" rel="prev">SETPEN</a>, Up: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="u" rel="up">PEN AND BACKGROUND CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setbackground"></a>
+<h4 class="unnumberedsubsec">setbackground</h4>
+<a name="index-setbackground"></a>
+<a name="index-setbg"></a>
+
+<div class="example">
+<pre class="example">SETBACKGROUND colornumber.or.rgblist
+SETBG colornumber.or.rgblist
+</pre></div>
+
+<p>set the screen background color by slot number or RGB values.
+See <code>SETPENCOLOR</code> for details.
+</p>
+<p>See <a href="usermanual.html#SETPENCOLOR">SETPENCOLOR</a> .
+</p>
+<hr>
+<a name="PEN-QUERIES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="n" rel="next">SAVING AND LOADING PICTURES</a>, Previous: <a href="usermanual.html#PEN-AND-BACKGROUND-CONTROL" accesskey="p" rel="prev">PEN AND BACKGROUND CONTROL</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Pen-Queries"></a>
+<h3 class="section">7.6 Pen Queries</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENDOWNP" accesskey="1">PENDOWNP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENMODE" accesskey="2">PENMODE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENCOLOR" accesskey="3">PENCOLOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PALETTE" accesskey="4">PALETTE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PENSIZE" accesskey="5">PENSIZE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PEN" accesskey="6">PEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BACKGROUND" accesskey="7">BACKGROUND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="PENDOWNP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PENMODE" accesskey="n" rel="next">PENMODE</a>, Previous: <a href="usermanual.html#PEN-QUERIES" accesskey="p" rel="prev">PEN QUERIES</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pendownp"></a>
+<h4 class="unnumberedsubsec">pendownp</h4>
+<a name="index-pendownp"></a>
+<a name="index-pendown_003f"></a>
+
+<div class="example">
+<pre class="example">PENDOWNP
+PENDOWN?
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the pen is down, <code>FALSE</code> if it&rsquo;s up.
+</p>
+<hr>
+<a name="PENMODE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PENCOLOR" accesskey="n" rel="next">PENCOLOR</a>, Previous: <a href="usermanual.html#PENDOWNP" accesskey="p" rel="prev">PENDOWNP</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="penmode"></a>
+<h4 class="unnumberedsubsec">penmode</h4>
+<a name="index-penmode"></a>
+
+<div class="example">
+<pre class="example">PENMODE
+</pre></div>
+
+<p>outputs one of the words <code>PAINT</code>, <code>ERASE</code>, or <code>REVERSE</code> according to the
+current pen mode.
+</p>
+<hr>
+<a name="PENCOLOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PALETTE" accesskey="n" rel="next">PALETTE</a>, Previous: <a href="usermanual.html#PENMODE" accesskey="p" rel="prev">PENMODE</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pencolor"></a>
+<h4 class="unnumberedsubsec">pencolor</h4>
+<a name="index-pencolor"></a>
+<a name="index-pc"></a>
+
+<div class="example">
+<pre class="example">PENCOLOR
+PC
+</pre></div>
+
+<p>outputs a color number, a nonnegative integer that is associated with
+a particular color, or a list of RGB values if such a list was used as
+the most recent input to <code>SETPENCOLOR</code>.  There are initial assignments
+for the first 16 colors:
+</p>
+<div class="example">
+<pre class="example"> 0  black        1  blue         2  green        3  cyan
+ 4  red          5  magenta      6  yellow       7 white
+ 8  brown        9  tan         10  forest      11  aqua
+12  salmon      13  purple      14  orange      15  grey
+</pre></div>
+
+<p>but other colors can be assigned to numbers by the <code>PALETTE</code> command.
+</p>
+<hr>
+<a name="PALETTE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PENSIZE" accesskey="n" rel="next">PENSIZE</a>, Previous: <a href="usermanual.html#PENCOLOR" accesskey="p" rel="prev">PENCOLOR</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="palette"></a>
+<h4 class="unnumberedsubsec">palette</h4>
+<a name="index-palette"></a>
+
+<div class="example">
+<pre class="example">PALETTE colornumber
+</pre></div>
+
+<p>outputs a list of three nonnegative numbers less than 100 specifying the
+percent saturation of red, green, and blue in the color associated with the
+given number.
+</p>
+<hr>
+<a name="PENSIZE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PEN" accesskey="n" rel="next">PEN</a>, Previous: <a href="usermanual.html#PALETTE" accesskey="p" rel="prev">PALETTE</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pensize"></a>
+<h4 class="unnumberedsubsec">pensize</h4>
+<a name="index-pensize"></a>
+<a name="index-penpattern"></a>
+
+<div class="example">
+<pre class="example">PENSIZE
+</pre></div>
+
+<p>outputs a list of two positive integers, specifying the horizontal
+and vertical thickness of the turtle pen.  (In some implementations,
+including wxWidgets, the two numbers are always equal.)
+</p>
+<div class="example">
+<pre class="example">PENPATTERN
+</pre></div>
+
+<p>outputs system-specific pen information.
+</p>
+<hr>
+<a name="PEN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BACKGROUND" accesskey="n" rel="next">BACKGROUND</a>, Previous: <a href="usermanual.html#PENSIZE" accesskey="p" rel="prev">PENSIZE</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pen"></a>
+<h4 class="unnumberedsubsec">pen</h4>
+<a name="index-pen"></a>
+
+<div class="example">
+<pre class="example">PEN						(library procedure)
+</pre></div>
+
+<p>outputs a list containing the pen&rsquo;s position, mode, thickness, and
+hardware-specific characteristics, for use by <code>SETPEN</code>.
+</p>
+<p>See <a href="usermanual.html#SETPEN">SETPEN</a> .
+</p>
+<hr>
+<a name="BACKGROUND"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#PEN" accesskey="p" rel="prev">PEN</a>, Up: <a href="usermanual.html#PEN-QUERIES" accesskey="u" rel="up">PEN QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="background"></a>
+<h4 class="unnumberedsubsec">background</h4>
+<a name="index-background"></a>
+<a name="index-bg"></a>
+
+<div class="example">
+<pre class="example">BACKGROUND
+BG
+</pre></div>
+
+<p>outputs the graphics background color, either as a slot number or
+as an RGB list, whichever way it was set.  (See <code>PENCOLOR</code>.)
+</p>
+<hr>
+<a name="SAVING-AND-LOADING-PICTURES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MOUSE-QUERIES" accesskey="n" rel="next">MOUSE QUERIES</a>, Previous: <a href="usermanual.html#PEN-QUERIES" accesskey="p" rel="prev">PEN QUERIES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Saving-and-Loading-Pictures"></a>
+<h3 class="section">7.7 Saving and Loading Pictures</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SAVEPICT" accesskey="1">SAVEPICT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOADPICT" accesskey="2">LOADPICT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EPSPICT" accesskey="3">EPSPICT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="SAVEPICT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOADPICT" accesskey="n" rel="next">LOADPICT</a>, Previous: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="p" rel="prev">SAVING AND LOADING PICTURES</a>, Up: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="u" rel="up">SAVING AND LOADING PICTURES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="savepict"></a>
+<h4 class="unnumberedsubsec">savepict</h4>
+<a name="index-savepict"></a>
+
+<div class="example">
+<pre class="example">SAVEPICT filename
+</pre></div>
+
+<p>command.  Writes a file with the specified name containing the state of
+the graphics window, including any nonstandard color palette settings,
+in Logo&rsquo;s internal format.  This picture can be restored to the screen
+using <code>LOADPICT</code>.  The format is not portable between platforms, nor is it
+readable by other programs.  <a href="usermanual.html#EPSPICT">EPSPICT</a> to export Logo graphics for
+other programs.
+</p>
+
+<hr>
+<a name="LOADPICT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EPSPICT" accesskey="n" rel="next">EPSPICT</a>, Previous: <a href="usermanual.html#SAVEPICT" accesskey="p" rel="prev">SAVEPICT</a>, Up: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="u" rel="up">SAVING AND LOADING PICTURES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="loadpict"></a>
+<h4 class="unnumberedsubsec">loadpict</h4>
+<a name="index-loadpict"></a>
+
+<div class="example">
+<pre class="example">LOADPICT filename
+</pre></div>
+
+<p>command.  Reads the specified file, which must have been written by a
+<code>SAVEPICT</code> command, and restores the graphics window and color palette
+settings to the values stored in the file.  Any drawing previously on
+the screen is cleared.
+</p>
+<p>See <a href="usermanual.html#SAVEPICT">SAVEPICT</a> .
+</p>
+
+<hr>
+<a name="EPSPICT"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#LOADPICT" accesskey="p" rel="prev">LOADPICT</a>, Up: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="u" rel="up">SAVING AND LOADING PICTURES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="epspict"></a>
+<h4 class="unnumberedsubsec">epspict</h4>
+<a name="index-epspict"></a>
+
+<div class="example">
+<pre class="example">EPSPICT filename
+</pre></div>
+
+<p>command.  Writes a file with the specified name, containing an
+Encapsulated Postscript (EPS) representation of the state of the
+graphics window.  This file can be imported into other programs that
+understand EPS format.  Restrictions: the drawing cannot use <code>FILL</code>,
+<code>PENERASE</code>, or <code>PENREVERSE</code>; any such instructions will be ignored in the
+translation to Postscript form.
+</p>
+
+<hr>
+<a name="MOUSE-QUERIES"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#SAVING-AND-LOADING-PICTURES" accesskey="p" rel="prev">SAVING AND LOADING PICTURES</a>, Up: <a href="usermanual.html#GRAPHICS" accesskey="u" rel="up">GRAPHICS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Mouse-Queries"></a>
+<h3 class="section">7.8 Mouse Queries</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MOUSEPOS" accesskey="1">MOUSEPOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CLICKPOS" accesskey="2">CLICKPOS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BUTTONP" accesskey="3">BUTTONP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BUTTON" accesskey="4">BUTTON</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="MOUSEPOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CLICKPOS" accesskey="n" rel="next">CLICKPOS</a>, Previous: <a href="usermanual.html#MOUSE-QUERIES" accesskey="p" rel="prev">MOUSE QUERIES</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="mousepos"></a>
+<h4 class="unnumberedsubsec">mousepos</h4>
+<a name="index-mousepos"></a>
+
+<div class="example">
+<pre class="example">MOUSEPOS
+</pre></div>
+
+<p>outputs the coordinates of the mouse, provided that it&rsquo;s within the
+graphics window, in turtle coordinates.  If the mouse is outside the
+graphics window, then the last position within the window is returned.
+Exception:  If a mouse button is pressed within the graphics window
+and held while the mouse is dragged outside the window, the mouse&rsquo;s
+position is returned as if the window were big enough to include it.
+</p>
+<hr>
+<a name="CLICKPOS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BUTTONP" accesskey="n" rel="next">BUTTONP</a>, Previous: <a href="usermanual.html#MOUSEPOS" accesskey="p" rel="prev">MOUSEPOS</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="clickpos"></a>
+<h4 class="unnumberedsubsec">clickpos</h4>
+<a name="index-clickpos"></a>
+
+<div class="example">
+<pre class="example">CLICKPOS
+</pre></div>
+
+<p>outputs the coordinates that the mouse was at when a mouse button
+was most recently pushed, provided that that position was within the
+graphics window, in turtle coordinates.  (wxWidgets only)
+</p>
+<hr>
+<a name="BUTTONP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BUTTON" accesskey="n" rel="next">BUTTON</a>, Previous: <a href="usermanual.html#CLICKPOS" accesskey="p" rel="prev">CLICKPOS</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="buttonp"></a>
+<h4 class="unnumberedsubsec">buttonp</h4>
+<a name="index-buttonp"></a>
+<a name="index-button_003f"></a>
+
+<div class="example">
+<pre class="example">BUTTONP
+BUTTON?
+</pre></div>
+
+<p>outputs <code>TRUE</code> if a mouse button is down and the mouse is over the
+graphics window.  Once the button is down, <code>BUTTONP</code> remains true until
+the button is released, even if the mouse is dragged out of the
+graphics window.
+</p>
+<hr>
+<a name="BUTTON"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#BUTTONP" accesskey="p" rel="prev">BUTTONP</a>, Up: <a href="usermanual.html#MOUSE-QUERIES" accesskey="u" rel="up">MOUSE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="button"></a>
+<h4 class="unnumberedsubsec">button</h4>
+<a name="index-button"></a>
+
+<div class="example">
+<pre class="example">BUTTON
+</pre></div>
+
+<p>outputs 0 if no mouse button has been pushed inside the Logo window
+since the last call to <code>BUTTON</code>.  Otherwise, it outputs an integer
+between 1 and 3 indicating which button was most recently pressed.
+Ordinarily 1 means left, 2 means right, and 3 means center, but
+operating systems may reconfigure these.
+</p>
+<hr>
+<a name="WORKSPACE-MANAGEMENT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="n" rel="next">CONTROL STRUCTURES</a>, Previous: <a href="usermanual.html#GRAPHICS" accesskey="p" rel="prev">GRAPHICS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Workspace-Management"></a>
+<h2 class="chapter">8 Workspace Management</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="1">PROCEDURE DEFINITION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="2">VARIABLE DEFINITION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PROPERTY-LISTS" accesskey="3">PROPERTY LISTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="4">WORKSPACE PREDICATES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="5">WORKSPACE QUERIES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="6">WORKSPACE INSPECTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="7">WORKSPACE CONTROL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="PROCEDURE-DEFINITION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="n" rel="next">VARIABLE DEFINITION</a>, Previous: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="p" rel="prev">WORKSPACE MANAGEMENT</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Procedure-Definition"></a>
+<h3 class="section">8.1 Procedure Definition</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TO" accesskey="1">TO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DEFINE" accesskey="2">DEFINE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TEXT" accesskey="3">TEXT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FULLTEXT" accesskey="4">FULLTEXT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COPYDEF" accesskey="5">COPYDEF</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="TO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DEFINE" accesskey="n" rel="next">DEFINE</a>, Previous: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="p" rel="prev">PROCEDURE DEFINITION</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="to"></a>
+<h4 class="unnumberedsubsec">to</h4>
+<a name="index-to"></a>
+
+<div class="example">
+<pre class="example">TO procname :input1 :input2 ...			(special form)
+</pre></div>
+
+<p>command.  Prepares Logo to accept a procedure definition.  The procedure
+will be named <var>procname</var> and there must not already be a procedure by
+that name.  The inputs will be called <var>input1</var> etc.  Any number of
+inputs are allowed, including none.  Names of procedures and inputs are
+case-insensitive.
+</p>
+<p>Unlike every other Logo procedure, TO takes as its inputs the actual
+words typed in the instruction line, as if they were all quoted, rather
+than the results of evaluating expressions to provide the inputs.
+(That&rsquo;s what <em>special form</em> means.)
+</p>
+<p>This version of Logo allows variable numbers of inputs to a procedure.
+After the procedure name come four kinds of things, <em>in this order</em>:
+</p>
+<div class="example">
+<pre class="example">    1.   0 or more REQUIRED inputs    :FOO :FROBOZZ
+    2.   0 or more OPTIONAL inputs    [:BAZ 87] [:THINGO 5+9]
+    3.   0 or 1 REST input            [:GARPLY]
+    4.   0 or 1 DEFAULT number        5
+</pre></div>
+
+<p>Every procedure has a <var>minimum</var>, <var>default</var>, and <var>maximum</var> number of inputs.
+(The latter can be infinite.)
+</p>
+<p>The <var>minimum</var> number of inputs is the number of required inputs, which
+must come first.  A required input is indicated by the
+</p>
+<div class="example">
+<pre class="example">:inputname
+</pre></div>
+
+<p>notation.
+</p>
+<p>After all the required inputs can be zero or more optional inputs,
+each of which is represented by the following notation:
+</p>
+<div class="example">
+<pre class="example">[:inputname default.value.expression]
+</pre></div>
+
+<p>When the procedure is invoked, if actual inputs are not supplied for
+these optional inputs, the <var>default value expression</var>s are evaluated to
+set values for the corresponding input names.  The inputs are processed
+from left to right, so a default value expression can be based on
+earlier inputs.  Example:
+</p>
+<div class="example">
+<pre class="example">to proc :inlist [:startvalue first :inlist]
+</pre></div>
+
+<p>If the procedure is invoked by saying
+</p>
+<div class="example">
+<pre class="example">proc [a b c]
+</pre></div>
+
+<p>then the variable <code>inlist</code> will have the value <tt>[A&nbsp;B&nbsp;C]</tt><!-- /@w --> and the
+variable <code>startvalue</code> will have the value <tt>A</tt>.  If the procedure is invoked
+by saying
+</p>
+<div class="example">
+<pre class="example">(proc [a b c] &quot;x)
+</pre></div>
+
+<p>then <code>inlist</code> will have the value <tt>[A&nbsp;B&nbsp;C]</tt><!-- /@w --> and <code>startvalue</code>
+will have the value <tt>X</tt>.
+</p>
+<p>After all the required and optional input can come a single <em>rest</em>
+input, represented by the following notation:
+</p>
+<div class="example">
+<pre class="example">[:inputname]
+</pre></div>
+
+<p>This is a rest input rather than an optional input because there is no
+default value expression.  There can be at most one rest input.  When
+the procedure is invoked, the value of this <var>inputname</var> will be a list
+containing all of the actual inputs provided that were not used for
+required or optional inputs.  Example:
+</p>
+<div class="example">
+<pre class="example">to proc :in1 [:in2 &quot;foo] [:in3 &quot;baz] [:in4]
+</pre></div>
+
+<p>If this procedure is invoked by saying
+</p>
+<div class="example">
+<pre class="example">proc &quot;x
+</pre></div>
+
+<p>then <code>in1</code> has the value <tt>X</tt>, <code>in2</code> has the value <tt>FOO</tt>,
+<code>in3</code> has the value <tt>BAZ</tt>, and <code>in4</code> has the value <tt>[]</tt> (the
+empty list).  If it&rsquo;s invoked by saying
+</p>
+<div class="example">
+<pre class="example">(proc &quot;a &quot;b &quot;c &quot;d &quot;e)
+</pre></div>
+
+<p>then <code>in1</code> has the value <tt>A</tt>, <code>in2</code> has the value <tt>B</tt>,
+<code>in3</code> has the value <tt>C</tt>, and <code>in4</code> has the value <tt>[D&nbsp;E]</tt><!-- /@w -->.
+</p>
+<p>The <em>maximum</em> number of inputs for a procedure is infinite if a rest input
+is given; otherwise, it is the number of required inputs plus the number
+of optional inputs.
+</p>
+<p>The <em>default</em> number of inputs for a procedure, which is the number of
+inputs that it will accept if its invocation is not enclosed in
+parentheses, is ordinarily equal to the minimum number.  If you want a
+different default number you can indicate that by putting the desired
+default number as the last thing on the <code>TO</code> line.  example:
+</p>
+<div class="example">
+<pre class="example">to proc :in1 [:in2 &quot;foo] [:in3] 3
+</pre></div>
+
+<p>This procedure has a minimum of one input, a default of three inputs,
+and an infinite maximum.
+</p>
+<p>Logo responds to the <code>TO</code> command by entering procedure definition mode.
+The prompt character changes from <code>?</code> to <code>&gt;</code> and whatever instructions you type become part of the definition until you type a line containing
+only the word <code>END</code>.
+</p>
+<hr>
+<a name="DEFINE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TEXT" accesskey="n" rel="next">TEXT</a>, Previous: <a href="usermanual.html#TO" accesskey="p" rel="prev">TO</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="define"></a>
+<h4 class="unnumberedsubsec">define</h4>
+<a name="index-define"></a>
+
+<div class="example">
+<pre class="example">DEFINE procname text
+</pre></div>
+
+<p>command.  Defines a procedure with name <var>procname</var> and text <var>text</var>.  If
+there is already a procedure with the same name, the new definition
+replaces the old one.  The <var>text</var> input must be a list whose members are
+lists.  The first member is a list of inputs; it looks like a <code>TO</code> line
+but without the word <code>TO</code>, without the procedure name, and without the
+colons before input names.  In other words, the members of this first
+sublist are words for the names of required inputs and lists for the
+names of optional or rest inputs.  The remaining sublists of the <var>text</var>
+input make up the body of the procedure, with one sublist for each
+instruction line of the body.  (There is no <code>END</code> line in the text input.)
+It is an error to redefine a primitive procedure unless the variable
+<code>REDEFP</code> has the value <code>TRUE</code>.
+</p>
+<p>See <a href="usermanual.html#REDEFP">REDEFP</a> .
+</p>
+<hr>
+<a name="TEXT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FULLTEXT" accesskey="n" rel="next">FULLTEXT</a>, Previous: <a href="usermanual.html#DEFINE" accesskey="p" rel="prev">DEFINE</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="text"></a>
+<h4 class="unnumberedsubsec">text</h4>
+<a name="index-text"></a>
+
+<div class="example">
+<pre class="example">TEXT procname
+</pre></div>
+
+<p>outputs the text of the procedure named <var>procname</var> in the form expected
+by <code>DEFINE</code>: a list of lists, the first of which describes the inputs to
+the procedure and the rest of which are the lines of its body.  The text
+does not reflect formatting information used when the procedure was
+defined, such as continuation lines and extra spaces.
+</p>
+<hr>
+<a name="FULLTEXT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#COPYDEF" accesskey="n" rel="next">COPYDEF</a>, Previous: <a href="usermanual.html#TEXT" accesskey="p" rel="prev">TEXT</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="fulltext"></a>
+<h4 class="unnumberedsubsec">fulltext</h4>
+<a name="index-fulltext"></a>
+
+<div class="example">
+<pre class="example">FULLTEXT procname
+</pre></div>
+
+<p>outputs a representation of the procedure <var>procname</var> in which formatting
+information is preserved.  If the procedure was defined with <code>TO</code>, <code>EDIT</code>,
+or <code>LOAD</code>, then the output is a list of words.  Each word represents one
+entire line of the definition in the form output by <code>READWORD</code>, including
+extra spaces and continuation lines.  The last member of the output
+represents the <code>END</code> line.  If the procedure was defined with <code>DEFINE</code>, then
+the output is a list of lists.  If these lists are printed, one per
+line, the result will look like a definition using <code>TO</code>.  Note: the output
+from <code>FULLTEXT</code> is not suitable for use as input to <code>DEFINE</code>!
+</p>
+<p>See <a href="usermanual.html#TEXT">TEXT</a>.
+</p>
+
+<hr>
+<a name="COPYDEF"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#FULLTEXT" accesskey="p" rel="prev">FULLTEXT</a>, Up: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="u" rel="up">PROCEDURE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="copydef"></a>
+<h4 class="unnumberedsubsec">copydef</h4>
+<a name="index-copydef"></a>
+
+<div class="example">
+<pre class="example">COPYDEF newname oldname
+</pre></div>
+
+<p>command.  Makes <var>newname</var> a procedure identical to <var>oldname</var>.  The
+latter may be a primitive.  If <var>newname</var> was already defined, its
+previous definition is lost.  If <var>newname</var> was already a primitive, the
+redefinition is not permitted unless the variable <code>REDEFP</code> has the value
+<code>TRUE</code>.
+</p>
+<p>Note: dialects of Logo differ as to the order of inputs to <code>COPYDEF</code>.
+This dialect uses &quot;<code>MAKE</code> order,&quot; not &quot;<code>NAME</code> order.&quot;
+</p>
+<p>See <a href="usermanual.html#REDEFP">REDEFP</a> ,
+<a href="usermanual.html#SAVE">SAVE</a> ,
+<a href="usermanual.html#PO">PO</a> ,
+<a href="usermanual.html#POT">POT</a> .
+</p>
+
+<hr>
+<a name="VARIABLE-DEFINITION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PROPERTY-LISTS" accesskey="n" rel="next">PROPERTY LISTS</a>, Previous: <a href="usermanual.html#PROCEDURE-DEFINITION" accesskey="p" rel="prev">PROCEDURE DEFINITION</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Variable-Definition"></a>
+<h3 class="section">8.2 Variable Definition</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MAKE" accesskey="1">MAKE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NAME" accesskey="2">NAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOCAL" accesskey="3">LOCAL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOCALMAKE" accesskey="4">LOCALMAKE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#THING" accesskey="5">THING</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GLOBAL" accesskey="6">GLOBAL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="MAKE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NAME" accesskey="n" rel="next">NAME</a>, Previous: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="p" rel="prev">VARIABLE DEFINITION</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="make"></a>
+<h4 class="unnumberedsubsec">make</h4>
+<a name="index-make"></a>
+
+<div class="example">
+<pre class="example">MAKE varname value
+</pre></div>
+
+<p>command.  Assigns the value <var>value</var> to the variable named <var>varname</var>,
+which must be a word.  Variable names are case-insensitive.  If a
+variable with the same name already exists, the value of that variable
+is changed.  If not, a new global variable is created.
+</p>
+<hr>
+<a name="NAME"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOCAL" accesskey="n" rel="next">LOCAL</a>, Previous: <a href="usermanual.html#MAKE" accesskey="p" rel="prev">MAKE</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="name"></a>
+<h4 class="unnumberedsubsec">name</h4>
+<a name="index-name"></a>
+
+<div class="example">
+<pre class="example">NAME value varname				(library procedure)
+</pre></div>
+
+<p>command.  Same as <code>MAKE</code> but with the inputs in reverse order.
+</p>
+<hr>
+<a name="LOCAL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOCALMAKE" accesskey="n" rel="next">LOCALMAKE</a>, Previous: <a href="usermanual.html#NAME" accesskey="p" rel="prev">NAME</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="local"></a>
+<h4 class="unnumberedsubsec">local</h4>
+<a name="index-local"></a>
+
+<div class="example">
+<pre class="example">LOCAL varname
+LOCAL varnamelist
+(LOCAL varname1 varname2 ...)
+</pre></div>
+
+<p>command.  Accepts as inputs one or more words, or a list of words.  A
+variable is created for each of these words, with that word as its name.
+The variables are local to the currently running procedure.  Logo
+variables follow dynamic scope rules; a variable that is local to a
+procedure is available to any subprocedure invoked by that procedure.
+The variables created by <code>LOCAL</code> have no initial value; they must be
+assigned a value (e.g., with <code>MAKE</code>) before the procedure attempts to read
+their value.
+</p>
+<p>See <a href="usermanual.html#MAKE">MAKE</a> .
+</p>
+<hr>
+<a name="LOCALMAKE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#THING" accesskey="n" rel="next">THING</a>, Previous: <a href="usermanual.html#LOCAL" accesskey="p" rel="prev">LOCAL</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="localmake"></a>
+<h4 class="unnumberedsubsec">localmake</h4>
+<a name="index-localmake"></a>
+
+<div class="example">
+<pre class="example">LOCALMAKE varname value				(library procedure)
+</pre></div>
+
+<p>command.  Makes the named variable local, like <code>LOCAL</code>, and assigns it the
+given value, like <code>MAKE</code>.
+</p>
+<p>See <a href="usermanual.html#LOCAL">LOCAL</a> ,
+See <a href="usermanual.html#MAKE">MAKE</a> .
+</p>
+
+<hr>
+<a name="THING"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GLOBAL" accesskey="n" rel="next">GLOBAL</a>, Previous: <a href="usermanual.html#LOCALMAKE" accesskey="p" rel="prev">LOCALMAKE</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="thing"></a>
+<h4 class="unnumberedsubsec">thing</h4>
+<a name="index-thing"></a>
+
+<div class="example">
+<pre class="example">THING varname
+:quoted.varname
+</pre></div>
+
+<p>outputs the value of the variable whose name is the input.  If there is
+more than one such variable, the innermost local variable of that name
+is chosen.  The colon notation is an abbreviation not for <code>THING</code> but for
+the combination
+</p>
+<div class="example">
+<pre class="example">thing &quot;
+</pre></div>
+
+<p>so that <tt>:FOO</tt><!-- /@w --> means <tt>THING&nbsp;&quot;FOO</tt><!-- /@w -->.
+</p>
+<hr>
+<a name="GLOBAL"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#THING" accesskey="p" rel="prev">THING</a>, Up: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="u" rel="up">VARIABLE DEFINITION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="global"></a>
+<h4 class="unnumberedsubsec">global</h4>
+<a name="index-global"></a>
+
+<div class="example">
+<pre class="example">GLOBAL varname
+GLOBAL varnamelist
+(GLOBAL varname1 varname2 ...)
+</pre></div>
+
+<p>command.  Accepts as inputs one or more words, or a list of
+words.  A global variable is created for each of these words, with
+that word as its name.  The only reason this is necessary is that
+you might want to use the &quot;setter&quot; notation <code>SETXYZ</code> for a variable
+<code>XYZ</code> that does not already have a value; <tt>GLOBAL&nbsp;&quot;XYZ</tt><!-- /@w --> makes that legal.
+Note: If there is currently a local variable of the same name, this
+command does *not* make Logo use the global value instead of the
+local one.
+</p>
+
+<hr>
+<a name="PROPERTY-LISTS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="n" rel="next">WORKSPACE PREDICATES</a>, Previous: <a href="usermanual.html#VARIABLE-DEFINITION" accesskey="p" rel="prev">VARIABLE DEFINITION</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Property-Lists"></a>
+<h3 class="section">8.3 Property Lists</h3>
+
+<p>Note: Names of property lists are always case-insensitive.  Names of
+individual properties are case-sensitive or case-insensitive depending
+on the value of <code>CASEIGNOREDP</code>, which is <code>TRUE</code> by default.
+</p>
+<p>See <a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a> .
+</p>
+<p>In principle, every possible name is the name of a property list, which is
+initially empty.  So Logo never gives a &quot;no such property list&quot; error, as it
+would for undefined procedure or variable names.  But the primitive procedures
+that deal with &quot;all&quot; property lists (<code>CONTENTS</code>, <code>PLISTS</code>, etc.)
+list only nonempty ones.  To &quot;erase&quot; a property list <a href="usermanual.html#ERASE">ERASE</a> means to make
+it empty, removing all properties from it.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PPROP" accesskey="1">PPROP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GPROP" accesskey="2">GPROP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REMPROP" accesskey="3">REMPROP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PLIST" accesskey="4">PLIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="PPROP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GPROP" accesskey="n" rel="next">GPROP</a>, Previous: <a href="usermanual.html#PROPERTY-LISTS" accesskey="p" rel="prev">PROPERTY LISTS</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pprop"></a>
+<h4 class="unnumberedsubsec">pprop</h4>
+<a name="index-pprop"></a>
+
+<div class="example">
+<pre class="example">PPROP plistname propname value
+</pre></div>
+
+<p>command.  Adds a property to the <var>plistname</var> property list with name
+<var>propname</var> and value <var>value</var>.
+</p>
+<hr>
+<a name="GPROP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REMPROP" accesskey="n" rel="next">REMPROP</a>, Previous: <a href="usermanual.html#PPROP" accesskey="p" rel="prev">PPROP</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="gprop"></a>
+<h4 class="unnumberedsubsec">gprop</h4>
+<a name="index-gprop"></a>
+
+<div class="example">
+<pre class="example">GPROP plistname propname
+</pre></div>
+
+<p>outputs the value of the <var>propname</var> property in the <var>plistname</var> property
+list, or the empty list if there is no such property.
+</p>
+<hr>
+<a name="REMPROP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PLIST" accesskey="n" rel="next">PLIST</a>, Previous: <a href="usermanual.html#GPROP" accesskey="p" rel="prev">GPROP</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="remprop"></a>
+<h4 class="unnumberedsubsec">remprop</h4>
+<a name="index-remprop"></a>
+
+<div class="example">
+<pre class="example">REMPROP plistname propname
+</pre></div>
+
+<p>command.  Removes the property named <var>propname</var> from the property list
+named <var>plistname</var>.
+</p>
+<hr>
+<a name="PLIST"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#REMPROP" accesskey="p" rel="prev">REMPROP</a>, Up: <a href="usermanual.html#PROPERTY-LISTS" accesskey="u" rel="up">PROPERTY LISTS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="plist"></a>
+<h4 class="unnumberedsubsec">plist</h4>
+<a name="index-plist"></a>
+
+<div class="example">
+<pre class="example">PLIST plistname
+</pre></div>
+
+<p>outputs a list whose odd-numbered members are the names, and whose
+even-numbered members are the values, of the properties in the property
+list named <var>plistname</var>.  The output is a copy of the actual property
+list; changing properties later will not magically change a list output
+earlier by <code>PLIST</code>.
+</p>
+
+<hr>
+<a name="WORKSPACE-PREDICATES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="n" rel="next">WORKSPACE QUERIES</a>, Previous: <a href="usermanual.html#PROPERTY-LISTS" accesskey="p" rel="prev">PROPERTY LISTS</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Workspace-Predicates"></a>
+<h3 class="section">8.4 Workspace Predicates</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PROCEDUREP" accesskey="1">PROCEDUREP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRIMITIVEP" accesskey="2">PRIMITIVEP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DEFINEDP" accesskey="3">DEFINEDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NAMEP" accesskey="4">NAMEP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PLISTP" accesskey="5">PLISTP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="PROCEDUREP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PRIMITIVEP" accesskey="n" rel="next">PRIMITIVEP</a>, Previous: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="p" rel="prev">WORKSPACE PREDICATES</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="procedurep"></a>
+<h4 class="unnumberedsubsec">procedurep</h4>
+<a name="index-procedurep"></a>
+<a name="index-procedure_003f"></a>
+
+<div class="example">
+<pre class="example">PROCEDUREP name
+PROCEDURE? name
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is the name of a procedure.
+</p>
+<hr>
+<a name="PRIMITIVEP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DEFINEDP" accesskey="n" rel="next">DEFINEDP</a>, Previous: <a href="usermanual.html#PROCEDUREP" accesskey="p" rel="prev">PROCEDUREP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="primitivep"></a>
+<h4 class="unnumberedsubsec">primitivep</h4>
+<a name="index-primitivep"></a>
+<a name="index-primitive_003f"></a>
+
+<div class="example">
+<pre class="example">PRIMITIVEP name
+PRIMITIVE? name
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is the name of a primitive procedure (one
+built into Logo).  Note that some of the procedures described in this
+document are library procedures, not primitives.
+</p>
+<hr>
+<a name="DEFINEDP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NAMEP" accesskey="n" rel="next">NAMEP</a>, Previous: <a href="usermanual.html#PRIMITIVEP" accesskey="p" rel="prev">PRIMITIVEP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="definedp"></a>
+<h4 class="unnumberedsubsec">definedp</h4>
+<a name="index-definedp"></a>
+<a name="index-defined_003f"></a>
+
+<div class="example">
+<pre class="example">DEFINEDP name
+DEFINED? name
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is the name of a user-defined procedure,
+including a library procedure.
+</p>
+<hr>
+<a name="NAMEP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PLISTP" accesskey="n" rel="next">PLISTP</a>, Previous: <a href="usermanual.html#DEFINEDP" accesskey="p" rel="prev">DEFINEDP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="namep"></a>
+<h4 class="unnumberedsubsec">namep</h4>
+<a name="index-namep"></a>
+<a name="index-name_003f"></a>
+
+<div class="example">
+<pre class="example">NAMEP name
+NAME? name
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is the name of a variable.
+</p>
+<hr>
+<a name="PLISTP"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#NAMEP" accesskey="p" rel="prev">NAMEP</a>, Up: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="u" rel="up">WORKSPACE PREDICATES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="plistp"></a>
+<h4 class="unnumberedsubsec">plistp</h4>
+<a name="index-plistp"></a>
+<a name="index-plist_003f"></a>
+
+<div class="example">
+<pre class="example">PLISTP name
+PLIST? name
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the input is the name of a <em>nonempty</em> property list.
+(In principle every word is the name of a property list; if you haven&rsquo;t
+put any properties in it, <code>PLIST</code> of that name outputs an empty list,
+rather than giving an error message.)
+</p>
+
+<hr>
+<a name="WORKSPACE-QUERIES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="n" rel="next">WORKSPACE INSPECTION</a>, Previous: <a href="usermanual.html#WORKSPACE-PREDICATES" accesskey="p" rel="prev">WORKSPACE PREDICATES</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Workspace-Queries"></a>
+<h3 class="section">8.5 Workspace Queries</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CONTENTS" accesskey="1">CONTENTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BURIED" accesskey="2">BURIED</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TRACED" accesskey="3">TRACED</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#STEPPED" accesskey="4">STEPPED</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PROCEDURES" accesskey="5">PROCEDURES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRIMITIVES" accesskey="6">PRIMITIVES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NAMES" accesskey="7">NAMES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PLISTS" accesskey="8">PLISTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NAMELIST" accesskey="9">NAMELIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PLLIST">PLLIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ARITY">ARITY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#NODES">NODES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<p>Note:  All procedures whose input is indicated as <var>contentslist</var> will
+accept a single word (taken as a procedure name), a list of words (taken
+as names of procedures), or a list of three lists as described under the
+<code>CONTENTS</code> command above.
+</p>
+<hr>
+<a name="CONTENTS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BURIED" accesskey="n" rel="next">BURIED</a>, Previous: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="p" rel="prev">WORKSPACE QUERIES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="contents"></a>
+<h4 class="unnumberedsubsec">contents</h4>
+<a name="index-contents"></a>
+
+<div class="example">
+<pre class="example">CONTENTS
+</pre></div>
+
+<p>outputs a &quot;contents list,&quot; i.e., a list of three lists containing names
+of defined procedures, variables, and property lists respectively.  This
+list includes all unburied named items in the workspace.
+</p>
+<hr>
+<a name="BURIED"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TRACED" accesskey="n" rel="next">TRACED</a>, Previous: <a href="usermanual.html#CONTENTS" accesskey="p" rel="prev">CONTENTS</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="buried"></a>
+<h4 class="unnumberedsubsec">buried</h4>
+<a name="index-buried"></a>
+
+<div class="example">
+<pre class="example">BURIED
+</pre></div>
+
+<p>outputs a contents list including all buried named items in the
+workspace.
+</p>
+<hr>
+<a name="TRACED"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#STEPPED" accesskey="n" rel="next">STEPPED</a>, Previous: <a href="usermanual.html#BURIED" accesskey="p" rel="prev">BURIED</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="traced"></a>
+<h4 class="unnumberedsubsec">traced</h4>
+<a name="index-traced"></a>
+
+<div class="example">
+<pre class="example">TRACED
+</pre></div>
+
+<p>outputs a contents list including all traced named items in the
+workspace.
+</p>
+<hr>
+<a name="STEPPED"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PROCEDURES" accesskey="n" rel="next">PROCEDURES</a>, Previous: <a href="usermanual.html#TRACED" accesskey="p" rel="prev">TRACED</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="stepped"></a>
+<h4 class="unnumberedsubsec">stepped</h4>
+<a name="index-stepped"></a>
+
+<div class="example">
+<pre class="example">STEPPED
+</pre></div>
+
+<p>outputs a contents list including all stepped named items in the
+workspace.
+</p>
+
+<hr>
+<a name="PROCEDURES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PRIMITIVES" accesskey="n" rel="next">PRIMITIVES</a>, Previous: <a href="usermanual.html#STEPPED" accesskey="p" rel="prev">STEPPED</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="procedures"></a>
+<h4 class="unnumberedsubsec">procedures</h4>
+<a name="index-procedures"></a>
+
+<div class="example">
+<pre class="example">PROCEDURES
+</pre></div>
+
+<p>outputs a list of the names of all unburied user-defined procedures in
+the workspace.  Note that this is a list of names, not a contents list.
+(However, procedures that require a contents list as input will accept
+this list.)
+</p>
+
+<hr>
+<a name="PRIMITIVES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NAMES" accesskey="n" rel="next">NAMES</a>, Previous: <a href="usermanual.html#PROCEDURES" accesskey="p" rel="prev">PROCEDURES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="primitives"></a>
+<h4 class="unnumberedsubsec">primitives</h4>
+<a name="index-primitives"></a>
+
+<div class="example">
+<pre class="example">PRIMITIVES
+</pre></div>
+
+<p>outputs a list of the names of all primitive procedures
+in the workspace.  Note that this is a list of names, not a
+contents list.  (However, procedures that require a contents list
+as input will accept this list.)
+</p>
+<hr>
+<a name="NAMES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PLISTS" accesskey="n" rel="next">PLISTS</a>, Previous: <a href="usermanual.html#PRIMITIVES" accesskey="p" rel="prev">PRIMITIVES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="names"></a>
+<h4 class="unnumberedsubsec">names</h4>
+<a name="index-names"></a>
+
+<div class="example">
+<pre class="example">NAMES
+</pre></div>
+
+<p>outputs a contents list consisting of an empty list (indicating no
+procedure names) followed by a list of all unburied variable names in
+the workspace.
+</p>
+<hr>
+<a name="PLISTS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NAMELIST" accesskey="n" rel="next">NAMELIST</a>, Previous: <a href="usermanual.html#NAMES" accesskey="p" rel="prev">NAMES</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="plists"></a>
+<h4 class="unnumberedsubsec">plists</h4>
+<a name="index-plists"></a>
+
+<div class="example">
+<pre class="example">PLISTS
+</pre></div>
+
+<p>outputs a contents list consisting of two empty lists (indicating no
+procedures or variables) followed by a list of all unburied nonempty property
+lists in the workspace.
+</p>
+<hr>
+<a name="NAMELIST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PLLIST" accesskey="n" rel="next">PLLIST</a>, Previous: <a href="usermanual.html#PLISTS" accesskey="p" rel="prev">PLISTS</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="namelist"></a>
+<h4 class="unnumberedsubsec">namelist</h4>
+<a name="index-namelist"></a>
+
+<div class="example">
+<pre class="example">NAMELIST varname				(library procedure)
+NAMELIST varnamelist
+</pre></div>
+
+<p>outputs a contents list consisting of an empty list followed by a list
+of the name or names given as input.  This is useful in conjunction with
+workspace control procedures that require a contents list as input.
+</p>
+<hr>
+<a name="PLLIST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ARITY" accesskey="n" rel="next">ARITY</a>, Previous: <a href="usermanual.html#NAMELIST" accesskey="p" rel="prev">NAMELIST</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pllist"></a>
+<h4 class="unnumberedsubsec">pllist</h4>
+<a name="index-pllist"></a>
+
+<div class="example">
+<pre class="example">PLLIST plname					(library procedure)
+PLLIST plnamelist
+</pre></div>
+
+<p>outputs a contents list consisting of two empty lists followed by a list
+of the name or names given as input.  This is useful in conjunction with
+workspace control procedures that require a contents list as input.
+</p>
+<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> .
+</p>
+<hr>
+<a name="ARITY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#NODES" accesskey="n" rel="next">NODES</a>, Previous: <a href="usermanual.html#PLLIST" accesskey="p" rel="prev">PLLIST</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="arity"></a>
+<h4 class="unnumberedsubsec">arity</h4>
+<a name="index-arity"></a>
+
+<div class="example">
+<pre class="example">ARITY procedurename
+</pre></div>
+
+<p>outputs a list of three numbers: the minimum, default, and maximum
+number of inputs for the procedure whose name is the input.  It is an
+error if there is no such procedure.  A maximum of -1 means that the
+number of inputs is unlimited.
+</p>
+<hr>
+<a name="NODES"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#ARITY" accesskey="p" rel="prev">ARITY</a>, Up: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="u" rel="up">WORKSPACE QUERIES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="nodes"></a>
+<h4 class="unnumberedsubsec">nodes</h4>
+<a name="index-nodes"></a>
+
+<div class="example">
+<pre class="example">NODES
+</pre></div>
+
+<p>outputs a list of two numbers.  The first represents the number of nodes
+of memory currently in use.  The second shows the maximum number of
+nodes that have been in use at any time since the last invocation of
+<code>NODES</code>.  (A node is a small block of computer memory as used by Logo.
+Each number uses one node.  Each non-numeric word uses one node, plus
+some non-node memory for the characters in the word.  Each array takes
+one node, plus some non-node memory, as well as the memory required by
+its elements.  Each list requires one node per element, as well as the
+memory within the elements.)  If you want to track the memory use of an
+algorithm, it is best if you invoke <code>GC</code> at the beginning of each
+iteration, since otherwise the maximum will include storage that is
+unused but not yet collected.
+</p>
+<hr>
+<a name="WORKSPACE-INSPECTION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="n" rel="next">WORKSPACE CONTROL</a>, Previous: <a href="usermanual.html#WORKSPACE-QUERIES" accesskey="p" rel="prev">WORKSPACE QUERIES</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Workspace-Inspection"></a>
+<h3 class="section">8.6 Workspace Inspection</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PO" accesskey="1">PO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POALL" accesskey="2">POALL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POPS" accesskey="3">POPS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PONS" accesskey="4">PONS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POPLS" accesskey="5">POPLS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PON" accesskey="6">PON</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POPL" accesskey="7">POPL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POT" accesskey="8">POT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#POTS" accesskey="9">POTS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="PO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POALL" accesskey="n" rel="next">POALL</a>, Previous: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="p" rel="prev">WORKSPACE INSPECTION</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="po"></a>
+<h4 class="unnumberedsubsec">po</h4>
+<a name="index-printout"></a>
+<a name="index-po"></a>
+
+<div class="example">
+<pre class="example">PRINTOUT contentslist
+PO contentslist
+</pre></div>
+
+<p>command.  Prints to the write stream the definitions of all procedures,
+variables, and property lists named in the input contents list.
+</p>
+<hr>
+<a name="POALL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POPS" accesskey="n" rel="next">POPS</a>, Previous: <a href="usermanual.html#PO" accesskey="p" rel="prev">PO</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="poall"></a>
+<h4 class="unnumberedsubsec">poall</h4>
+<a name="index-poall"></a>
+
+<div class="example">
+<pre class="example">POALL						(library procedure)
+</pre></div>
+
+<p>command.  Prints all unburied definitions in the workspace.  Abbreviates
+<tt>PO&nbsp;CONTENTS</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> .
+</p>
+<hr>
+<a name="POPS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PONS" accesskey="n" rel="next">PONS</a>, Previous: <a href="usermanual.html#POALL" accesskey="p" rel="prev">POALL</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pops"></a>
+<h4 class="unnumberedsubsec">pops</h4>
+<a name="index-pops"></a>
+
+<div class="example">
+<pre class="example">POPS						(library procedure)
+</pre></div>
+
+<p>command.  Prints the definitions of all unburied procedures in the
+workspace.  Abbreviates <tt>PO&nbsp;PROCEDURES</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#PO">PO</a> ,
+<a href="usermanual.html#PROCEDURES">PROCEDURES</a> .
+</p>
+<hr>
+<a name="PONS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POPLS" accesskey="n" rel="next">POPLS</a>, Previous: <a href="usermanual.html#POPS" accesskey="p" rel="prev">POPS</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pons"></a>
+<h4 class="unnumberedsubsec">pons</h4>
+<a name="index-pons"></a>
+
+<div class="example">
+<pre class="example">PONS						(library procedure)
+</pre></div>
+
+<p>command.  Prints the definitions of all unburied variables in the
+workspace.  Abbreviates <tt>PO&nbsp;NAMES</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#PO">PO</a> ,
+<a href="usermanual.html#NAMES">NAMES</a> .
+</p>
+<hr>
+<a name="POPLS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PON" accesskey="n" rel="next">PON</a>, Previous: <a href="usermanual.html#PONS" accesskey="p" rel="prev">PONS</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="popls"></a>
+<h4 class="unnumberedsubsec">popls</h4>
+<a name="index-popls"></a>
+
+<div class="example">
+<pre class="example">POPLS						(library procedure)
+</pre></div>
+
+<p>command.  Prints the contents of all unburied nonempty property lists in the
+workspace.  Abbreviates <tt>PO&nbsp;PLISTS</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#PO">PO</a> ,
+<a href="usermanual.html#PLISTS">PLISTS</a> .
+</p>
+<hr>
+<a name="PON"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POPL" accesskey="n" rel="next">POPL</a>, Previous: <a href="usermanual.html#POPLS" accesskey="p" rel="prev">POPLS</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pon"></a>
+<h4 class="unnumberedsubsec">pon</h4>
+<a name="index-pon"></a>
+
+<div class="example">
+<pre class="example">PON varname					(library procedure)
+PON varnamelist
+</pre></div>
+
+<p>command.  Prints the definitions of the named variable(s).  
+<br>
+Abbreviates <tt>PO&nbsp;NAMELIST&nbsp;varname(list)</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#PO">PO</a> ,
+<a href="usermanual.html#NAMELIST">NAMELIST</a> .
+</p>
+<hr>
+<a name="POPL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POT" accesskey="n" rel="next">POT</a>, Previous: <a href="usermanual.html#PON" accesskey="p" rel="prev">PON</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="popl"></a>
+<h4 class="unnumberedsubsec">popl</h4>
+<a name="index-popl"></a>
+
+<div class="example">
+<pre class="example">POPL plname					(library procedure)
+POPL plnamelist
+</pre></div>
+
+<p>command.  Prints the definitions of the named property list(s).
+<br>
+Abbreviates <tt>PO&nbsp;PLLIST&nbsp;plname(list)</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#PO">PO</a> ,
+<a href="usermanual.html#PLLIST">PLLIST</a> .
+</p>
+<hr>
+<a name="POT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#POTS" accesskey="n" rel="next">POTS</a>, Previous: <a href="usermanual.html#POPL" accesskey="p" rel="prev">POPL</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pot"></a>
+<h4 class="unnumberedsubsec">pot</h4>
+<a name="index-pot"></a>
+
+<div class="example">
+<pre class="example">POT contentslist
+</pre></div>
+
+<p>command.  Prints the title lines of the named procedures and the
+definitions of the named variables and property lists.  For property
+lists, the entire list is shown on one line instead of as a series of
+<code>PPROP</code> instructions as in <code>PO</code>.
+</p>
+<p>See <a href="usermanual.html#PPROP">PPROP</a> ,
+<a href="usermanual.html#PO">PO</a> .
+</p>
+<hr>
+<a name="POTS"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#POT" accesskey="p" rel="prev">POT</a>, Up: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="u" rel="up">WORKSPACE INSPECTION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pots"></a>
+<h4 class="unnumberedsubsec">pots</h4>
+<a name="index-pots"></a>
+
+<div class="example">
+<pre class="example">POTS						(library procedure)
+</pre></div>
+
+<p>command.  Prints the title lines of all unburied procedures in the
+workspace.  Abbreviates <tt>POT&nbsp;PROCEDURES</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#PROCEDURES">PROCEDURES</a> .
+</p>
+
+<hr>
+<a name="WORKSPACE-CONTROL"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#WORKSPACE-INSPECTION" accesskey="p" rel="prev">WORKSPACE INSPECTION</a>, Up: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="u" rel="up">WORKSPACE MANAGEMENT</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Workspace-Control"></a>
+<h3 class="section">8.7 Workspace Control</h3>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERASE" accesskey="1">ERASE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERALL" accesskey="2">ERALL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERPS" accesskey="3">ERPS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERNS" accesskey="4">ERNS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERPLS" accesskey="5">ERPLS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERN" accesskey="6">ERN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERPL" accesskey="7">ERPL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BURY" accesskey="8">BURY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BURYALL" accesskey="9">BURYALL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BURYNAME">BURYNAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNBURY">UNBURY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNBURYALL">UNBURYALL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNBURYNAME">UNBURYNAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BURIEDP">BURIEDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TRACE">TRACE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNTRACE">UNTRACE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TRACEDP">TRACEDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#STEP">STEP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNSTEP">UNSTEP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#STEPPEDP">STEPPEDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDIT">EDIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDITFILE">EDITFILE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDALL">EDALL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDPS">EDPS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDNS">EDNS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDPLS">EDPLS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDN">EDN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#EDPL">EDPL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SAVE">SAVE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SAVEL">SAVEL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOAD">LOAD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CSLSLOAD">CSLSLOAD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#HELP">HELP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETEDITOR">SETEDITOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETLIBLOC">SETLIBLOC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETHELPLOC">SETHELPLOC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETCSLSLOC">SETCSLSLOC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#SETTEMPLOC">SETTEMPLOC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GC">GC</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#g_t_002eSETSEGMENTSIZE">.SETSEGMENTSIZE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="ERASE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERALL" accesskey="n" rel="next">ERALL</a>, Previous: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="p" rel="prev">WORKSPACE CONTROL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erase"></a>
+<h4 class="unnumberedsubsec">erase</h4>
+<a name="index-erase"></a>
+<a name="index-er"></a>
+
+<div class="example">
+<pre class="example">ERASE contentslist
+ER contentslist
+</pre></div>
+
+<p>command.  Erases from the workspace the procedures, variables, and
+property lists named in the input.  Primitive procedures may not be
+erased unless the variable <code>REDEFP</code> has the value <code>TRUE</code>.
+</p>
+<p>See <a href="usermanual.html#REDEFP">REDEFP</a> .
+</p>
+<hr>
+<a name="ERALL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERPS" accesskey="n" rel="next">ERPS</a>, Previous: <a href="usermanual.html#ERASE" accesskey="p" rel="prev">ERASE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erall"></a>
+<h4 class="unnumberedsubsec">erall</h4>
+<a name="index-erall"></a>
+
+<div class="example">
+<pre class="example">ERALL
+</pre></div>
+
+<p>command.  Erases all unburied procedures, variables, and property lists
+from the workspace.  Abbreviates <tt>ERASE&nbsp;CONTENTS</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> .
+</p>
+<hr>
+<a name="ERPS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERNS" accesskey="n" rel="next">ERNS</a>, Previous: <a href="usermanual.html#ERALL" accesskey="p" rel="prev">ERALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erps"></a>
+<h4 class="unnumberedsubsec">erps</h4>
+<a name="index-erps"></a>
+
+<div class="example">
+<pre class="example">ERPS
+</pre></div>
+
+<p>command.  Erases all unburied procedures from the workspace.
+<br>
+Abbreviates <tt>ERASE&nbsp;PROCEDURES</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#ERASE">ERASE</a> ,
+<a href="usermanual.html#PROCEDURES">PROCEDURES</a> .
+</p>
+<hr>
+<a name="ERNS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERPLS" accesskey="n" rel="next">ERPLS</a>, Previous: <a href="usermanual.html#ERPS" accesskey="p" rel="prev">ERPS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erns"></a>
+<h4 class="unnumberedsubsec">erns</h4>
+<a name="index-erns"></a>
+
+<div class="example">
+<pre class="example">ERNS
+</pre></div>
+
+<p>command.  Erases all unburied variables from the workspace.  Abbreviates
+<tt>ERASE&nbsp;NAMES</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#ERASE">ERASE</a> ,
+<a href="usermanual.html#NAMES">NAMES</a> .
+</p>
+<hr>
+<a name="ERPLS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERN" accesskey="n" rel="next">ERN</a>, Previous: <a href="usermanual.html#ERNS" accesskey="p" rel="prev">ERNS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erpls"></a>
+<h4 class="unnumberedsubsec">erpls</h4>
+<a name="index-erpls"></a>
+
+<div class="example">
+<pre class="example">ERPLS
+</pre></div>
+
+<p>command.  Erases all unburied property lists from the workspace.
+<br>
+Abbreviates <tt>ERASE&nbsp;PLISTS</tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#ERASE">ERASE</a> ,
+<a href="usermanual.html#PLISTS">PLISTS</a> .
+</p>
+<hr>
+<a name="ERN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERPL" accesskey="n" rel="next">ERPL</a>, Previous: <a href="usermanual.html#ERPLS" accesskey="p" rel="prev">ERPLS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ern"></a>
+<h4 class="unnumberedsubsec">ern</h4>
+<a name="index-ern"></a>
+
+<div class="example">
+<pre class="example">ERN varname					(library procedure)
+ERN varnamelist
+</pre></div>
+
+<p>command.  Erases from the workspace the variable(s) named in the input.
+Abbreviates <tt>ERASE&nbsp;NAMELIST&nbsp;<var>varname(list)</var></tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#ERASE">ERASE</a> ,
+<a href="usermanual.html#NAMELIST">NAMELIST</a> .
+</p>
+<hr>
+<a name="ERPL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BURY" accesskey="n" rel="next">BURY</a>, Previous: <a href="usermanual.html#ERN" accesskey="p" rel="prev">ERN</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erpl"></a>
+<h4 class="unnumberedsubsec">erpl</h4>
+<a name="index-erpl"></a>
+
+<div class="example">
+<pre class="example">ERPL plname					(library procedure)
+ERPL plnamelist
+</pre></div>
+
+<p>command.  Erases from the workspace the property list(s) named in the
+input.  Abbreviates <tt>ERASE&nbsp;PLLIST&nbsp;<var>plname(list)</var></tt><!-- /@w -->.
+</p>
+<p>See <a href="usermanual.html#ERASE">ERASE</a> ,
+<a href="usermanual.html#PLLIST">PLLIST</a> .
+</p>
+<hr>
+<a name="BURY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BURYALL" accesskey="n" rel="next">BURYALL</a>, Previous: <a href="usermanual.html#ERPL" accesskey="p" rel="prev">ERPL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="bury"></a>
+<h4 class="unnumberedsubsec">bury</h4>
+<a name="index-bury"></a>
+
+<div class="example">
+<pre class="example">BURY contentslist
+</pre></div>
+
+<p>command.  Buries the procedures, variables, and property lists named in
+the input.  A buried item is not included in the lists output by
+<code>CONTENTS</code>, <code>PROCEDURES</code>, <code>VARIABLES</code>, and <code>PLISTS</code>, but is included in the list
+output by <code>BURIED</code>.  By implication, buried things are not printed by
+<code>POALL</code> or saved by <code>SAVE</code>.
+</p>
+<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> ,
+<a href="usermanual.html#PROCEDURES">PROCEDURES</a> ,
+<a href="usermanual.html#PONS">PONS</a> ,
+<a href="usermanual.html#PLISTS">PLISTS</a> ,
+<a href="usermanual.html#POALL">POALL</a> ,
+<a href="usermanual.html#SAVE">SAVE</a> .
+</p>
+<hr>
+<a name="BURYALL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BURYNAME" accesskey="n" rel="next">BURYNAME</a>, Previous: <a href="usermanual.html#BURY" accesskey="p" rel="prev">BURY</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="buryall"></a>
+<h4 class="unnumberedsubsec">buryall</h4>
+<a name="index-buryall"></a>
+
+<div class="example">
+<pre class="example">BURYALL                                         (library procedure)
+</pre></div>
+
+<p>command.  Abbreviates <tt>BURY CONTENTS</tt>.
+</p>
+<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> .
+</p>
+<hr>
+<a name="BURYNAME"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UNBURY" accesskey="n" rel="next">UNBURY</a>, Previous: <a href="usermanual.html#BURYALL" accesskey="p" rel="prev">BURYALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="buryname"></a>
+<h4 class="unnumberedsubsec">buryname</h4>
+<a name="index-buryname"></a>
+
+<div class="example">
+<pre class="example">BURYNAME varname				(library procedure)
+BURYNAME varnamelist
+</pre></div>
+
+<p>command.  Abbreviates <tt>BURY NAMELIST <code>varname(list)</code></tt>.
+</p>
+<p>See <a href="usermanual.html#BURY">BURY</a> ,
+<a href="usermanual.html#NAMELIST">NAMELIST</a> .
+</p>
+<hr>
+<a name="UNBURY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UNBURYALL" accesskey="n" rel="next">UNBURYALL</a>, Previous: <a href="usermanual.html#BURYNAME" accesskey="p" rel="prev">BURYNAME</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="unbury"></a>
+<h4 class="unnumberedsubsec">unbury</h4>
+<a name="index-unbury"></a>
+
+<div class="example">
+<pre class="example">UNBURY contentslist
+</pre></div>
+
+<p>command.  Unburies the procedures, variables, and property lists named
+in the input.  That is, the named items will be returned to view in
+<code>CONTENTS</code>, etc.
+</p>
+<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> .
+</p>
+<hr>
+<a name="UNBURYALL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UNBURYNAME" accesskey="n" rel="next">UNBURYNAME</a>, Previous: <a href="usermanual.html#UNBURY" accesskey="p" rel="prev">UNBURY</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="unburyall"></a>
+<h4 class="unnumberedsubsec">unburyall</h4>
+<a name="index-unburyall"></a>
+
+<div class="example">
+<pre class="example">UNBURYALL					(library procedure)
+</pre></div>
+
+<p>command.  Abbreviates <tt>UNBURY BURIED</tt>.
+</p>
+<p>See <a href="usermanual.html#BURIED">BURIED</a> .
+</p>
+<hr>
+<a name="UNBURYNAME"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BURIEDP" accesskey="n" rel="next">BURIEDP</a>, Previous: <a href="usermanual.html#UNBURYALL" accesskey="p" rel="prev">UNBURYALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="unburyname"></a>
+<h4 class="unnumberedsubsec">unburyname</h4>
+<a name="index-unburyname"></a>
+
+<div class="example">
+<pre class="example">UNBURYNAME varname				(library procedure)
+UNBURYNAME varnamelist
+</pre></div>
+
+<p>command.  Abbreviates <tt>UNBURY NAMELIST <var>varname(list)</var></tt>.
+</p>
+<p>See <a href="usermanual.html#UNBURY">UNBURY</a> ,
+<a href="usermanual.html#NAMELIST">NAMELIST</a> .
+</p>
+<hr>
+<a name="BURIEDP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TRACE" accesskey="n" rel="next">TRACE</a>, Previous: <a href="usermanual.html#UNBURYNAME" accesskey="p" rel="prev">UNBURYNAME</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="buriedp"></a>
+<h4 class="unnumberedsubsec">buriedp</h4>
+<a name="index-buriedp"></a>
+<a name="index-buried_003f"></a>
+
+<div class="example">
+<pre class="example">BURIEDP contentslist
+BURIED? contentslist
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the first procedure, variable, or property list named in
+the contents list is buried, <code>FALSE</code> if not.  Only the first thing in the
+list is tested; the most common use will be with a word as input, naming
+a procedure, but a contents list is allowed so that you can <code>BURIEDP [[]
+[<var>variable</var>]]</code> or <code>BURIEDP [[] [] [<var>proplist</var>]]</code>.
+</p>
+
+
+<hr>
+<a name="TRACE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UNTRACE" accesskey="n" rel="next">UNTRACE</a>, Previous: <a href="usermanual.html#BURIEDP" accesskey="p" rel="prev">BURIEDP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="trace"></a>
+<h4 class="unnumberedsubsec">trace</h4>
+<a name="index-trace"></a>
+
+<div class="example">
+<pre class="example">TRACE contentslist
+</pre></div>
+
+<p>command.  Marks the named items for tracing.  A message is printed
+whenever a traced procedure is invoked, giving the actual input values,
+and whenever a traced procedure <code>STOP</code>s or <code>OUTPUT</code>s.  A message is printed
+whenever a new value is assigned to a traced variable using <code>MAKE</code>.  A
+message is printed whenever a new property is given to a traced property
+list using <code>PPROP</code>.
+</p>
+<p>See <a href="usermanual.html#STOP">STOP</a> ,
+<a href="usermanual.html#OUTPUT">OUTPUT</a> ,
+<a href="usermanual.html#MAKE">MAKE</a> ,
+<a href="usermanual.html#PPROP">PPROP</a> .
+</p>
+<hr>
+<a name="UNTRACE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TRACEDP" accesskey="n" rel="next">TRACEDP</a>, Previous: <a href="usermanual.html#TRACE" accesskey="p" rel="prev">TRACE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="untrace"></a>
+<h4 class="unnumberedsubsec">untrace</h4>
+<a name="index-untrace"></a>
+
+<div class="example">
+<pre class="example">UNTRACE contentslist
+</pre></div>
+
+<p>command.  Turns off tracing for the named items.
+</p>
+<hr>
+<a name="TRACEDP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#STEP" accesskey="n" rel="next">STEP</a>, Previous: <a href="usermanual.html#UNTRACE" accesskey="p" rel="prev">UNTRACE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="tracedp"></a>
+<h4 class="unnumberedsubsec">tracedp</h4>
+<a name="index-tracedp"></a>
+<a name="index-traced_003f"></a>
+
+<div class="example">
+<pre class="example">TRACEDP contentslist
+TRACED? contentslist
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the first procedure, variable, or property list named in
+the contents list is traced, <code>FALSE</code> if not.  Only the first thing in the
+list is tested; the most common use will be with a word as input, naming
+a procedure, but a contents list is allowed so that you can <code>TRACEDP [[]
+[<var>variable</var>]]</code> or <code>TRACEDP [[] [] [<var>proplist</var>]]</code>.
+</p>
+
+<hr>
+<a name="STEP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UNSTEP" accesskey="n" rel="next">UNSTEP</a>, Previous: <a href="usermanual.html#TRACEDP" accesskey="p" rel="prev">TRACEDP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="step"></a>
+<h4 class="unnumberedsubsec">step</h4>
+<a name="index-step"></a>
+
+<div class="example">
+<pre class="example">STEP contentslist
+</pre></div>
+
+<p>command.  Marks the named items for stepping.  Whenever a stepped
+procedure is invoked, each instruction line in the procedure body is
+printed before being executed, and Logo waits for the user to type a
+newline at the terminal.  A message is printed whenever a stepped
+variable name is <em>shadowed</em> because a local variable of the same name is
+created either as a procedure input or by the <code>LOCAL</code> command.
+</p>
+<p>See <a href="usermanual.html#LOCAL">LOCAL</a> .
+</p>
+<hr>
+<a name="UNSTEP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#STEPPEDP" accesskey="n" rel="next">STEPPEDP</a>, Previous: <a href="usermanual.html#STEP" accesskey="p" rel="prev">STEP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="unstep"></a>
+<h4 class="unnumberedsubsec">unstep</h4>
+<a name="index-unstep"></a>
+
+<div class="example">
+<pre class="example">UNSTEP contentslist
+</pre></div>
+
+<p>command.  Turns off stepping for the named items.
+</p>
+
+<hr>
+<a name="STEPPEDP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDIT" accesskey="n" rel="next">EDIT</a>, Previous: <a href="usermanual.html#UNSTEP" accesskey="p" rel="prev">UNSTEP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="steppedp"></a>
+<h4 class="unnumberedsubsec">steppedp</h4>
+<a name="index-steppedp"></a>
+<a name="index-stepped_003f"></a>
+
+<div class="example">
+<pre class="example">STEPPEDP contentslist
+STEPPED? contentslist
+</pre></div>
+
+<p>outputs <code>TRUE</code> if the first procedure, variable, or property list named in
+the contents list is stepped, <code>FALSE</code> if not.  Only the first thing in the
+list is tested; the most common use will be with a word as input, naming
+a procedure, but a contents list is allowed so that you can <code>STEPPEDP [[]
+[<var>variable</var>]]</code> or <code>STEPPEDP [[] [] [<var>proplist</var>]]</code>.
+</p>
+
+
+<hr>
+<a name="EDIT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDITFILE" accesskey="n" rel="next">EDITFILE</a>, Previous: <a href="usermanual.html#STEPPEDP" accesskey="p" rel="prev">STEPPEDP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="edit"></a>
+<h4 class="unnumberedsubsec">edit</h4>
+<a name="index-editor"></a>
+<a name="index-temp"></a>
+<a name="index-edit"></a>
+<a name="index-ed"></a>
+
+<div class="example">
+<pre class="example">EDIT contentslist
+ED contentslist
+(EDIT)
+(ED)
+</pre></div>
+
+<p>command.  If invoked with an input, <code>EDIT</code> writes the definitions of the
+named items into a temporary file and edits that file, using an editor that
+depends on the platform you&rsquo;re using.  In wxWidgets, and in the MacOS Classic
+version, there is an editor built into Logo.  In the non-wxWidgets versions
+for Unix, MacOS X, Windows, and DOS, Logo uses your favorite editor as
+determined by the <code>EDITOR</code> environment variable.  If you don&rsquo;t have an
+<code>EDITOR</code> variable, edits the definitions using <code>jove</code>.  If invoked
+without an input, <code>EDIT</code> edits the same file left over from a previous
+<code>EDIT</code> or <code>EDITFILE</code> instruction.  When you leave the editor, Logo
+reads the revised definitions and modifies the workspace accordingly.  It is
+not an error if the input includes names for which there is no previous
+definition.
+</p>
+<p>If there is a variable <code>LOADNOISILY</code> whose value is <code>TRUE</code>, then,
+after leaving the editor, <code>TO</code> commands in the temporary file print
+&lsquo;<samp><var>procname</var> defined</samp>&rsquo; (where <var>procname</var> is the name of the
+procedure being defined); if <code>LOADNOISILY</code> is <code>FALSE</code> or undefined,
+<code>TO</code> commands in the file are carried out silently.
+</p>
+<p>If there is an environment variable called <code>TEMP</code>, then Logo uses its
+value as the directory in which to write the temporary file used for
+editing.
+</p>
+<p>Exceptionally, the <code>EDIT</code> command can be used without its default input
+and without parentheses provided that nothing follows it on the
+instruction line.
+</p>
+<p>See <a href="usermanual.html#LOADNOISILY">LOADNOISILY</a> ,
+See <a href="usermanual.html#EDITFILE">EDITFILE</a> .
+</p>
+<hr>
+<a name="EDITFILE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDALL" accesskey="n" rel="next">EDALL</a>, Previous: <a href="usermanual.html#EDIT" accesskey="p" rel="prev">EDIT</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="editfile"></a>
+<h4 class="unnumberedsubsec">editfile</h4>
+<a name="index-editfile"></a>
+
+<div class="example">
+<pre class="example">EDITFILE filename
+</pre></div>
+
+<p>command.  Starts the Logo editor, like <code>EDIT</code>, but instead of editing a
+temporary file it edits the file specified by the input.  When you leave the
+editor, Logo reads the revised file, as for <code>EDIT</code>.  <code>EDITFILE</code> also
+remembers the filename, so that a subsequent <code>EDIT</code> command with no input will
+re-edit the same file.
+</p>
+<p><code>EDITFILE</code> is intended as an alternative to <code>LOAD</code> and <code>SAVE</code>.
+You can maintain a workspace file yourself, controlling the order in which
+definitions appear, maintaining comments in the file, and so on.
+</p>
+<p>In the wxWidgets version, <code>EDITFILE</code> asks whether or not you want to
+load the file into Logo when you finish editing.  This allows you to use
+<code>EDITFILE</code> to edit data files without leaving Logo.
+</p>
+
+<hr>
+<a name="EDALL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDPS" accesskey="n" rel="next">EDPS</a>, Previous: <a href="usermanual.html#EDITFILE" accesskey="p" rel="prev">EDITFILE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="edall"></a>
+<h4 class="unnumberedsubsec">edall</h4>
+<a name="index-edall"></a>
+
+<div class="example">
+<pre class="example">EDALL						(library procedure)
+</pre></div>
+
+<p>command.  Abbreviates <tt>EDIT CONTENTS</tt>.
+</p>
+<p>See <a href="usermanual.html#CONTENTS">CONTENTS</a> .
+</p>
+<hr>
+<a name="EDPS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDNS" accesskey="n" rel="next">EDNS</a>, Previous: <a href="usermanual.html#EDALL" accesskey="p" rel="prev">EDALL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="edps"></a>
+<h4 class="unnumberedsubsec">edps</h4>
+<a name="index-edps"></a>
+
+<div class="example">
+<pre class="example">EDPS						(library procedure)
+</pre></div>
+
+<p>command.  Abbreviates <tt>EDIT PROCEDURES</tt>.
+</p>
+<p>See <a href="usermanual.html#EDIT">EDIT</a> ,
+<a href="usermanual.html#PROCEDURES">PROCEDURES</a> .
+</p>
+<hr>
+<a name="EDNS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDPLS" accesskey="n" rel="next">EDPLS</a>, Previous: <a href="usermanual.html#EDPS" accesskey="p" rel="prev">EDPS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="edns"></a>
+<h4 class="unnumberedsubsec">edns</h4>
+<a name="index-edns"></a>
+
+<div class="example">
+<pre class="example">EDNS						(library procedure)
+</pre></div>
+
+<p>command.  Abbreviates <tt>EDIT NAMES</tt>.
+</p>
+<p>See <a href="usermanual.html#EDIT">EDIT</a> ,
+<a href="usermanual.html#NAMES">NAMES</a> .
+</p>
+<hr>
+<a name="EDPLS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDN" accesskey="n" rel="next">EDN</a>, Previous: <a href="usermanual.html#EDNS" accesskey="p" rel="prev">EDNS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="edpls"></a>
+<h4 class="unnumberedsubsec">edpls</h4>
+<a name="index-edpls"></a>
+
+<div class="example">
+<pre class="example">EDPLS						(library procedure)
+</pre></div>
+
+<p>command.  Abbreviates <tt>EDIT PLISTS</tt>.
+</p>
+<p>See <a href="usermanual.html#EDIT">EDIT</a> ,
+<a href="usermanual.html#PLISTS">PLISTS</a> .
+</p>
+<hr>
+<a name="EDN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#EDPL" accesskey="n" rel="next">EDPL</a>, Previous: <a href="usermanual.html#EDPLS" accesskey="p" rel="prev">EDPLS</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="edn"></a>
+<h4 class="unnumberedsubsec">edn</h4>
+<a name="index-edn"></a>
+
+<div class="example">
+<pre class="example">EDN varname					(library procedure)
+EDN varnamelist
+</pre></div>
+
+<p>command.  Abbreviates <tt>EDIT NAMELIST <var>varname(list)</var></tt>.
+</p>
+<p>See <a href="usermanual.html#EDIT">EDIT</a> , 
+<a href="usermanual.html#NAMELIST">NAMELIST</a> .
+</p>
+<hr>
+<a name="EDPL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SAVE" accesskey="n" rel="next">SAVE</a>, Previous: <a href="usermanual.html#EDN" accesskey="p" rel="prev">EDN</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="edpl"></a>
+<h4 class="unnumberedsubsec">edpl</h4>
+<a name="index-edpl"></a>
+
+<div class="example">
+<pre class="example">EDPL plname					(library procedure)
+EDPL plnamelist
+</pre></div>
+
+<p>command.  Abbreviates <tt>EDIT PLLIST <var>plname(list)</var></tt>.
+</p>
+<p>See <a href="usermanual.html#EDIT">EDIT</a> , 
+<a href="usermanual.html#PLLIST">PLLIST</a> .
+</p>
+<hr>
+<a name="SAVE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SAVEL" accesskey="n" rel="next">SAVEL</a>, Previous: <a href="usermanual.html#EDPL" accesskey="p" rel="prev">EDPL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="save"></a>
+<h4 class="unnumberedsubsec">save</h4>
+<a name="index-save"></a>
+
+<div class="example">
+<pre class="example">SAVE filename
+</pre></div>
+
+<p>command.  Saves the definitions of all unburied procedures, variables,
+and nonempty property lists in the named file.  Equivalent to
+</p>
+<div class="example">
+<pre class="example">to save :filename
+local &quot;oldwriter
+make &quot;oldwriter writer
+openwrite :filename
+setwrite :filename
+poall
+setwrite :oldwriter
+close :filename
+end
+</pre></div>
+
+<p>Exceptionally, <code>SAVE</code> can be used with no input and without parentheses
+if it is the last thing on the command line.  In this case, the
+filename from the most recent <code>LOAD</code> or <code>SAVE</code> command will be used.  (It
+is an error if there has been no previous <code>LOAD</code> or <code>SAVE</code>.)
+</p>
+<hr>
+<a name="SAVEL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOAD" accesskey="n" rel="next">LOAD</a>, Previous: <a href="usermanual.html#SAVE" accesskey="p" rel="prev">SAVE</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="savel"></a>
+<h4 class="unnumberedsubsec">savel</h4>
+<a name="index-savel"></a>
+
+<div class="example">
+<pre class="example">SAVEL contentslist filename			(library procedure)
+</pre></div>
+
+<p>command.  Saves the definitions of the procedures, variables, and
+property lists specified by <var>contentslist</var> to the file named <var>filename</var>.
+</p>
+<hr>
+<a name="LOAD"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CSLSLOAD" accesskey="n" rel="next">CSLSLOAD</a>, Previous: <a href="usermanual.html#SAVEL" accesskey="p" rel="prev">SAVEL</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="load"></a>
+<h4 class="unnumberedsubsec">load</h4>
+<a name="index-load"></a>
+
+<div class="example">
+<pre class="example">LOAD filename
+</pre></div>
+
+<p>command.  Reads instructions from the named file and executes them.  The file
+can include procedure definitions with <code>TO</code>, and these are accepted even
+if a procedure by the same name already exists.  If the file assigns a list
+value to a variable named <code>STARTUP</code>, then that list is run as an
+instructionlist after the file is loaded. If there is a variable
+<code>LOADNOISILY</code> whose value is <code>TRUE</code>, then <code>TO</code> commands in the
+file print &lsquo;<samp><var>procname</var> defined</samp>&rsquo; (where <var>procname</var> is the name of
+the procedure being defined); if <code>LOADNOISILY</code> is <code>FALSE</code> or
+undefined, <code>TO</code> commands in the file are carried out silently.
+</p>
+<p>See <a href="usermanual.html#STARTUP">STARTUP</a> ,
+See <a href="usermanual.html#LOADNOISILY">LOADNOISILY</a> .
+</p>
+
+<hr>
+<a name="CSLSLOAD"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#HELP" accesskey="n" rel="next">HELP</a>, Previous: <a href="usermanual.html#LOAD" accesskey="p" rel="prev">LOAD</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="cslsload"></a>
+<h4 class="unnumberedsubsec">cslsload</h4>
+<a name="index-cslsload"></a>
+
+<div class="example">
+<pre class="example">CSLSLOAD name
+</pre></div>
+
+<p>command.  Loads the named file, like <code>LOAD</code>, but from the directory
+containing the Computer Science Logo Style programs instead of the
+current user&rsquo;s directory.
+</p>
+<p>See <a href="usermanual.html#LOAD">LOAD</a> .
+</p>
+<hr>
+<a name="HELP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETEDITOR" accesskey="n" rel="next">SETEDITOR</a>, Previous: <a href="usermanual.html#CSLSLOAD" accesskey="p" rel="prev">CSLSLOAD</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="help"></a>
+<h4 class="unnumberedsubsec">help</h4>
+<a name="index-logohelp"></a>
+<a name="index-help"></a>
+
+<div class="example">
+<pre class="example">HELP name
+(HELP)
+</pre></div>
+
+<p>command.  Prints information from the reference manual about the
+primitive procedure named by the input.  With no input, lists all the
+primitives about which help is available.  If there is an environment
+variable <code>LOGOHELP</code>, then its value is taken as the directory in which to
+look for help files, instead of the default help directory.
+</p>
+<p>If <code>HELP</code> is called with the name of a defined procedure for which there
+is no help file, it will print the title line of the procedure
+followed by lines from the procedure body that start with semicolon,
+stopping when a non-semicolon line is seen.
+</p>
+<p>Exceptionally, the <code>HELP</code> command can be used without its default input
+and without parentheses provided that nothing follows it on the
+instruction line.
+</p>
+<hr>
+<a name="SETEDITOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETLIBLOC" accesskey="n" rel="next">SETLIBLOC</a>, Previous: <a href="usermanual.html#HELP" accesskey="p" rel="prev">HELP</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="seteditor"></a>
+<h4 class="unnumberedsubsec">seteditor</h4>
+<a name="index-seteditor"></a>
+
+<div class="example">
+<pre class="example">SETEDITOR path
+</pre></div>
+
+<p>command.  Tells Logo to use the specified program as its editor
+instead of the default editor.  The format of a path depends on your
+operating system.
+</p>
+<hr>
+<a name="SETLIBLOC"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETCSLSLOC" accesskey="n" rel="next">SETCSLSLOC</a>, Previous: <a href="usermanual.html#SETEDITOR" accesskey="p" rel="prev">SETEDITOR</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setlibloc"></a>
+<h4 class="unnumberedsubsec">setlibloc</h4>
+<a name="index-setlibloc"></a>
+
+<div class="example">
+<pre class="example">SETLIBLOC path
+</pre></div>
+
+<p>command.  Tells Logo to use the specified directory as its library
+instead of the default.  (Note that many Logo &quot;primitive&quot; procedures
+are actually found in the library, so they may become unavailable if
+your new library does not include them!)  The format of a path depends
+on your operating system.
+</p>
+<hr>
+<a name="SETCSLSLOC"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETHELPLOC" accesskey="n" rel="next">SETHELPLOC</a>, Previous: <a href="usermanual.html#SETLIBLOC" accesskey="p" rel="prev">SETLIBLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="setcslsloc"></a>
+<h4 class="unnumberedsubsec">setcslsloc</h4>
+<a name="index-setcslsloc"></a>
+
+<div class="example">
+<pre class="example">SETCSLSLOC path
+</pre></div>
+
+<p>command.  Tells Logo to use the specified directory for the <code>CSLSLOAD</code>
+command, instead of the default directory.  The format of a path
+depends on your operating system.
+</p>
+<p>See <a href="usermanual.html#CSLSLOAD">CSLSLOAD</a> .
+</p>
+<hr>
+<a name="SETHELPLOC"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SETTEMPLOC" accesskey="n" rel="next">SETTEMPLOC</a>, Previous: <a href="usermanual.html#SETCSLSLOC" accesskey="p" rel="prev">SETCSLSLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="sethelploc"></a>
+<h4 class="unnumberedsubsec">sethelploc</h4>
+<a name="index-sethelploc"></a>
+
+<div class="example">
+<pre class="example">SETHELPLOC path
+</pre></div>
+
+<p>command.  Tells Logo to look in the specified directory for the information
+provided by the HELP command, instead of the default directory.
+The format of a path depends on your operating system.
+</p>
+<hr>
+<a name="SETTEMPLOC"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GC" accesskey="n" rel="next">GC</a>, Previous: <a href="usermanual.html#SETHELPLOC" accesskey="p" rel="prev">SETHELPLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="settemploc"></a>
+<h4 class="unnumberedsubsec">settemploc</h4>
+<a name="index-settemploc"></a>
+
+<div class="example">
+<pre class="example">SETTEMPLOC path
+</pre></div>
+
+<p>command.  Tells Logo to write editor temporary files in the specified
+directory rather than in the default directory.  You must have write
+permission for this directory.  The format of a path depends on your
+operating system.
+</p>
+<hr>
+<a name="GC"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#g_t_002eSETSEGMENTSIZE" accesskey="n" rel="next">.SETSEGMENTSIZE</a>, Previous: <a href="usermanual.html#SETTEMPLOC" accesskey="p" rel="prev">SETTEMPLOC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="gc"></a>
+<h4 class="unnumberedsubsec">gc</h4>
+<a name="index-gc"></a>
+
+<div class="example">
+<pre class="example">GC
+(GC anything)
+</pre></div>
+
+<p>command.  Runs the garbage collector, reclaiming unused nodes.  Logo
+does this when necessary anyway, but you may want to use this command to
+control exactly when Logo does it.  In particular, the numbers output by
+the <code>NODES</code> operation will not be very meaningful unless garbage has been
+collected.  Another reason to use <code>GC</code> is that a garbage collection takes
+a noticeable fraction of a second, and you may want to schedule
+collections for times before or after some time-critical animation.  If
+invoked with an argument (of any value), <code>GC</code> runs a full garbage
+collection, including <acronym>GCTWA</acronym> (Garbage Collect Truly Worthless Atoms,
+which means that it removes from Logo&rsquo;s memory words that used to be
+procedure or variable names but aren&rsquo;t any more); without an argument,
+<code>GC</code> does a generational garbage collection, which means that only
+recently created nodes are examined.  (The latter is usually good
+enough.)
+</p>
+
+<hr>
+<a name="g_t_002eSETSEGMENTSIZE"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#GC" accesskey="p" rel="prev">GC</a>, Up: <a href="usermanual.html#WORKSPACE-CONTROL" accesskey="u" rel="up">WORKSPACE CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002esetsegmentsize"></a>
+<h4 class="unnumberedsubsec">.setsegmentsize</h4>
+<a name="index-_002esetsegmentsize"></a>
+
+<div class="example">
+<pre class="example">.SETSEGMENTSIZE num
+</pre></div>
+
+<p>command.  Sets the number of nodes that Logo allocates from the
+operating system at once to <var>num</var>, which must be a positive integer.
+The name is dotted because bad things will happen if you use a
+number that&rsquo;s too small or too large for your computer.  The
+initial value is 16,000 for most systems, but is smaller for
+68000-based Macs.  Making it larger will speed up computations
+(by reducing the number of garbage collections) at the cost of
+allocating more memory than necessary.
+</p>
+
+<hr>
+<a name="CONTROL-STRUCTURES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MACROS" accesskey="n" rel="next">MACROS</a>, Previous: <a href="usermanual.html#WORKSPACE-MANAGEMENT" accesskey="p" rel="prev">WORKSPACE MANAGEMENT</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Control-Structures"></a>
+<h2 class="chapter">9 Control Structures</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CONTROL" accesskey="1">CONTROL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="2">TEMPLATE-BASED ITERATION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+
+<hr>
+<a name="CONTROL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="n" rel="next">TEMPLATE-BASED ITERATION</a>, Previous: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="p" rel="prev">CONTROL STRUCTURES</a>, Up: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="u" rel="up">CONTROL STRUCTURES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Control"></a>
+<h3 class="section">9.1 Control</h3>
+
+<p>Note: in the following descriptions, an <em>instructionlist</em> can be a list or
+a word.  In the latter case, the word is parsed into list form before it is
+run.  Thus, <tt>RUN&nbsp;READWORD</tt><!-- /@w --> or <tt>RUN&nbsp;READLIST</tt><!-- /@w --> will work.  The
+former is slightly preferable because it allows for a continued line (with <code>~</code>)
+that includes a comment (with <code>;</code>) on the first line.
+</p>
+<p>A <var>tf</var> input must be the word <code>TRUE</code>, the word <code>FALSE</code>, or a list.  If it&rsquo;s a
+list, then it must be a Logo expression, which will be evaluated to produce
+a value that must be <code>TRUE</code> or <code>FALSE</code>.  The comparisons with <code>TRUE</code> and <code>FALSE</code>
+are always case-insensitive.
+</p>
+<p>A runlist can consist of either a single expression (that produces a value)
+or zero or more instructions (that do something, rather than output a value),
+depending on the context:
+</p>
+<div class="example">
+<pre class="example">PRINT IFELSE :X&lt;0 [&quot;NEGATIVE] [&quot;POSITIVE]  ; one value in each case
+REPEAT 4 [PRINT &quot;A PRINT &quot;B]  ; two instructions
+</pre></div>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RUN" accesskey="1">RUN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#RUNRESULT" accesskey="2">RUNRESULT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REPEAT" accesskey="3">REPEAT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FOREVER" accesskey="4">FOREVER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REPCOUNT" accesskey="5">REPCOUNT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#IF" accesskey="6">IF</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#IFELSE" accesskey="7">IFELSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TEST" accesskey="8">TEST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#IFTRUE" accesskey="9">IFTRUE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#IFFALSE">IFFALSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#STOP">STOP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#OUTPUT">OUTPUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CATCH">CATCH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#THROW">THROW</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERROR">ERROR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PAUSE">PAUSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CONTINUE">CONTINUE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WAIT">WAIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BYE">BYE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dMAYBEOUTPUT">dMAYBEOUTPUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MAYBEOUTPUT
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#GOTO">GOTO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TAG">TAG</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#IGNORE">IGNORE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#back_002dquote">back-quote</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FOR">FOR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DOdWHILE">DOdWHILE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">DO.WHILE
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#WHILE">WHILE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#DOdUNTIL">DOdUNTIL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">DO.UNTIL
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNTIL">UNTIL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CASE">CASE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COND">COND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="RUN"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#RUNRESULT" accesskey="n" rel="next">RUNRESULT</a>, Previous: <a href="usermanual.html#CONTROL" accesskey="p" rel="prev">CONTROL</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="run"></a>
+<h4 class="unnumberedsubsec">run</h4>
+<a name="index-run"></a>
+
+<div class="example">
+<pre class="example">RUN instructionlist
+</pre></div>
+
+<p>command or operation.  Runs the Logo instructions in the input list;
+outputs if the list contains an expression that outputs.
+</p>
+<p>See <a href="usermanual.html#READWORD">READWORD</a> ,
+<a href="usermanual.html#READLIST">READLIST</a> .
+</p>
+<hr>
+<a name="RUNRESULT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REPEAT" accesskey="n" rel="next">REPEAT</a>, Previous: <a href="usermanual.html#RUN" accesskey="p" rel="prev">RUN</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="runresult"></a>
+<h4 class="unnumberedsubsec">runresult</h4>
+<a name="index-runresult"></a>
+
+<div class="example">
+<pre class="example">RUNRESULT instructionlist
+</pre></div>
+
+<p>runs the instructions in the input; outputs an empty list if those
+instructions produce no output, or a list whose only member is the
+output from running the input instructionlist.  Useful for inventing
+command-or-operation control structures:
+</p>
+<div class="example">
+<pre class="example">local &quot;result
+make &quot;result runresult [something]
+if emptyp :result [stop]
+output first :result
+</pre></div>
+
+<hr>
+<a name="REPEAT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FOREVER" accesskey="n" rel="next">FOREVER</a>, Previous: <a href="usermanual.html#RUNRESULT" accesskey="p" rel="prev">RUNRESULT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="repeat"></a>
+<h4 class="unnumberedsubsec">repeat</h4>
+<a name="index-repeat"></a>
+
+<div class="example">
+<pre class="example">REPEAT num instructionlist
+</pre></div>
+
+<p>command.  Runs the <var>instructionlist</var> repeatedly, <var>num</var> times.
+</p>
+<hr>
+<a name="FOREVER"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REPCOUNT" accesskey="n" rel="next">REPCOUNT</a>, Previous: <a href="usermanual.html#REPEAT" accesskey="p" rel="prev">REPEAT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="forever"></a>
+<h4 class="unnumberedsubsec">forever</h4>
+<a name="index-forever"></a>
+
+<div class="example">
+<pre class="example">FOREVER instructionlist
+</pre></div>
+
+<p>command.  Runs the &quot;instructionlist&quot; repeatedly, until something inside
+the instructionlist (such as <code>STOP</code> or <code>THROW</code>) makes it stop.
+</p>
+<p>See <a href="usermanual.html#STOP">STOP</a> ,
+See <a href="usermanual.html#THROW">THROW</a> .
+</p>
+
+<hr>
+<a name="REPCOUNT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#IF" accesskey="n" rel="next">IF</a>, Previous: <a href="usermanual.html#FOREVER" accesskey="p" rel="prev">FOREVER</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="repcount"></a>
+<h4 class="unnumberedsubsec">repcount</h4>
+<a name="index-repcount"></a>
+
+<div class="example">
+<pre class="example">REPCOUNT
+</pre></div>
+
+<p>outputs the repetition count of the innermost current <code>REPEAT</code> or
+<code>FOREVER</code>, starting from 1.  If no <code>REPEAT</code> or <code>FOREVER</code>
+is active, outputs &ndash;1.
+</p>
+<p>The abbreviation <code>#</code> can be used for <code>REPCOUNT</code> unless the
+<code>REPEAT</code> is inside the template input to a higher order procedure
+such as <code>FOREACH</code>, in which case <code>#</code> has a different meaning.
+</p>
+<hr>
+<a name="IF"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#IFELSE" accesskey="n" rel="next">IFELSE</a>, Previous: <a href="usermanual.html#REPCOUNT" accesskey="p" rel="prev">REPCOUNT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="if"></a>
+<h4 class="unnumberedsubsec">if</h4>
+<a name="index-if"></a>
+
+<div class="example">
+<pre class="example">IF tf instructionlist
+(IF tf instructionlist1 instructionlist2)
+</pre></div>
+
+<p>command.  If the first input has the value <code>TRUE</code>, then <code>IF</code> runs the second
+input.  If the first input has the value <code>FALSE</code>, then <code>IF</code> does nothing.
+(If given a third input, IF acts like <code>IFELSE</code>, as described below.)  It
+is an error if the first input is not either <code>TRUE</code> or <code>FALSE</code>.
+</p>
+<p>For compatibility with earlier versions of Logo, if an <code>IF</code> instruction is
+not enclosed in parentheses, but the first thing on the instruction line
+after the second input expression is a literal list (i.e., a list in
+square brackets), the <code>IF</code> is treated as if it were <code>IFELSE</code>, but a warning
+message is given.  If this aberrant <code>IF</code> appears in a procedure body, the
+warning is given only the first time the procedure is invoked in each
+Logo session.
+</p>
+<hr>
+<a name="IFELSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TEST" accesskey="n" rel="next">TEST</a>, Previous: <a href="usermanual.html#IF" accesskey="p" rel="prev">IF</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ifelse"></a>
+<h4 class="unnumberedsubsec">ifelse</h4>
+<a name="index-ifelse"></a>
+
+<div class="example">
+<pre class="example">IFELSE tf instructionlist1 instructionlist2
+</pre></div>
+
+<p>command or operation.  If the first input has the value <code>TRUE</code>, then
+<code>IFELSE</code> runs the second input.  If the first input has the value <code>FALSE</code>,
+then <code>IFELSE</code> runs the third input.  <code>IFELSE</code> outputs a value if the
+<var>instructionlist</var> contains an expression that outputs a value.
+</p>
+<hr>
+<a name="TEST"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#IFTRUE" accesskey="n" rel="next">IFTRUE</a>, Previous: <a href="usermanual.html#IFELSE" accesskey="p" rel="prev">IFELSE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="test"></a>
+<h4 class="unnumberedsubsec">test</h4>
+<a name="index-test"></a>
+
+<div class="example">
+<pre class="example">TEST tf
+</pre></div>
+
+<p>command.  Remembers its input, which must be <code>TRUE</code> or <code>FALSE</code>, for
+use by later <code>IFTRUE</code> or <code>IFFALSE</code> instructions.  The effect of
+<code>TEST</code> is local to the procedure in which it is used; any corresponding
+<code>IFTRUE</code> or <code>IFFALSE</code> must be in the same procedure or a subprocedure.
+</p>
+<p>See <a href="usermanual.html#IFFALSE">IFFALSE</a> .
+</p>
+<hr>
+<a name="IFTRUE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#IFFALSE" accesskey="n" rel="next">IFFALSE</a>, Previous: <a href="usermanual.html#TEST" accesskey="p" rel="prev">TEST</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="iftrue"></a>
+<h4 class="unnumberedsubsec">iftrue</h4>
+<a name="index-iftrue"></a>
+<a name="index-ift"></a>
+
+<div class="example">
+<pre class="example">IFTRUE instructionlist
+IFT instructionlist
+</pre></div>
+
+<p>command.  Runs its input if the most recent <code>TEST</code> instruction had a <code>TRUE</code>
+input.  The <code>TEST</code> must have been in the same procedure or a
+superprocedure.
+</p>
+<hr>
+<a name="IFFALSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#STOP" accesskey="n" rel="next">STOP</a>, Previous: <a href="usermanual.html#IFTRUE" accesskey="p" rel="prev">IFTRUE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="iffalse"></a>
+<h4 class="unnumberedsubsec">iffalse</h4>
+<a name="index-iffalse"></a>
+<a name="index-iff"></a>
+
+<div class="example">
+<pre class="example">IFFALSE instructionlist
+IFF instructionlist
+</pre></div>
+
+<p>command.  Runs its input if the most recent <code>TEST</code> instruction had a <code>FALSE</code>
+input.  The <code>TEST</code> must have been in the same procedure or a
+superprocedure.
+</p>
+<p>See <a href="usermanual.html#TEST">TEST</a> .
+</p>
+<hr>
+<a name="STOP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#OUTPUT" accesskey="n" rel="next">OUTPUT</a>, Previous: <a href="usermanual.html#IFFALSE" accesskey="p" rel="prev">IFFALSE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="stop"></a>
+<h4 class="unnumberedsubsec">stop</h4>
+<a name="index-stop"></a>
+
+<div class="example">
+<pre class="example">STOP
+</pre></div>
+
+<p>command.  Ends the running of the procedure in which it appears.
+Control is returned to the context in which that procedure was invoked.
+The stopped procedure does not output a value.
+</p>
+<hr>
+<a name="OUTPUT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CATCH" accesskey="n" rel="next">CATCH</a>, Previous: <a href="usermanual.html#STOP" accesskey="p" rel="prev">STOP</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="output"></a>
+<h4 class="unnumberedsubsec">output</h4>
+<a name="index-output"></a>
+<a name="index-op"></a>
+
+<div class="example">
+<pre class="example">OUTPUT value
+OP value
+</pre></div>
+
+<p>command.  Ends the running of the procedure in which it appears.  That
+procedure outputs the value <var>value</var> to the context in which it was
+invoked.  Don&rsquo;t be confused: <code>OUTPUT</code> itself is a command, but the
+procedure that invokes <code>OUTPUT</code> is an operation.
+</p>
+<hr>
+<a name="CATCH"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#THROW" accesskey="n" rel="next">THROW</a>, Previous: <a href="usermanual.html#OUTPUT" accesskey="p" rel="prev">OUTPUT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="catch"></a>
+<h4 class="unnumberedsubsec">catch</h4>
+<a name="index-catch"></a>
+
+<div class="example">
+<pre class="example">CATCH tag instructionlist
+</pre></div>
+
+<p>command or operation.  Runs its second input.  Outputs if that
+<var>instructionlist</var> outputs.  If, while running the instructionlist, a
+<code>THROW</code> instruction is executed with a tag equal to the first input
+(case-insensitive comparison), then the running of the <var>instructionlist</var> is
+terminated immediately.  In this case the <code>CATCH</code> outputs if a value input is
+given to <code>THROW</code>.  The <var>tag</var> must be a word.
+</p>
+<p>If the tag is the word <code>ERROR</code>, then any error condition that arises
+during the running of the instructionlist has the effect of <tt>THROW&nbsp;&quot;ERROR</tt><!-- /@w -->
+instead of printing an error message and returning to toplevel.  The
+<code>CATCH</code> does not output if an error is caught.  Also, during the running
+of the instructionlist, the variable <code>ERRACT</code> is temporarily unbound.  (If
+there is an error while <code>ERRACT</code> has a value, that value is taken as an
+instructionlist to be run after printing the error message.  Typically
+the value of <code>ERRACT</code>, if any, is the list <code>[PAUSE]</code>.)
+</p>
+<p>See <a href="usermanual.html#ERROR">ERROR</a> ,
+<a href="usermanual.html#ERRACT">ERRACT</a> ,
+<a href="usermanual.html#PAUSE">PAUSE</a> .
+</p>
+<hr>
+<a name="THROW"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERROR" accesskey="n" rel="next">ERROR</a>, Previous: <a href="usermanual.html#CATCH" accesskey="p" rel="prev">CATCH</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="throw"></a>
+<h4 class="unnumberedsubsec">throw</h4>
+<a name="index-throw"></a>
+
+<div class="example">
+<pre class="example">THROW tag
+(THROW tag value)
+</pre></div>
+
+<p>command.  Must be used within the scope of a <code>CATCH</code> with an equal tag.
+Ends the running of the instructionlist of the <code>CATCH</code>.  If <code>THROW</code> is used
+with only one input, the corresponding <code>CATCH</code> does not output a value.
+If <code>THROW</code> is used with two inputs, the second provides an output for the
+<code>CATCH</code>.
+</p>
+<p><tt>THROW&nbsp;&quot;TOPLEVEL</tt><!-- /@w --> can be used to terminate all running procedures and
+interactive pauses, and return to the toplevel instruction prompt.  Typing the
+system interrupt character (<tt class="key">alt-S</tt> for wxWidgets; otherwise normally
+<tt class="key">control-C</tt> for Unix, <tt class="key">control-Q</tt> for DOS, or <tt class="key">command-period</tt> for
+Mac) has the same effect.
+</p>
+<p><tt>THROW&nbsp;&quot;ERROR</tt><!-- /@w --> can be used to generate an error condition.  If the error
+is not caught, it prints a message (<code>THROW&nbsp;&quot;ERROR</code><!-- /@w -->) with the usual
+indication of where the error (in this case the <code>THROW</code>) occurred.  If a
+second input is used along with a tag of <code>ERROR</code>, that second input is
+used as the text of the error message instead of the standard message.
+Also, in this case, the location indicated for the error will be, not
+the location of the <code>THROW</code>, but the location where the procedure
+containing the <code>THROW</code> was invoked.  This allows user-defined procedures
+to generate error messages as if they were primitives.  Note: in this
+case the corresponding <tt>CATCH&nbsp;&quot;ERROR</tt><!-- /@w -->, if any, does not output, since the
+second input to <code>THROW</code> is not considered a return value.
+</p>
+<p><tt>THROW&nbsp;&quot;SYSTEM</tt><!-- /@w --> immediately leaves Logo, returning to the operating
+system, without printing the usual parting message and without deleting
+any editor temporary file written by EDIT.
+</p>
+
+<hr>
+<a name="ERROR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PAUSE" accesskey="n" rel="next">PAUSE</a>, Previous: <a href="usermanual.html#THROW" accesskey="p" rel="prev">THROW</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="error"></a>
+<h4 class="unnumberedsubsec">error</h4>
+<a name="index-error"></a>
+
+<div class="example">
+<pre class="example">ERROR
+</pre></div>
+
+<p>outputs a list describing the error just caught, if any.  If there was not an
+error caught since the last use of <code>ERROR</code>, the empty list will be
+output.  The error list contains four members: an integer code corresponding
+to the type of error, the text of the error message (as a single word
+including spaces), the name of the procedure in which the error occurred, and
+the instruction line on which the error occurred.
+</p>
+<hr>
+<a name="PAUSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CONTINUE" accesskey="n" rel="next">CONTINUE</a>, Previous: <a href="usermanual.html#ERROR" accesskey="p" rel="prev">ERROR</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="pause"></a>
+<h4 class="unnumberedsubsec">pause</h4>
+<a name="index-pause"></a>
+
+<div class="example">
+<pre class="example">PAUSE
+</pre></div>
+
+<p>command or operation.  Enters an interactive pause.  The user is
+prompted for instructions, as at toplevel, but with a prompt that
+includes the name of the procedure in which <code>PAUSE</code> was invoked.  Local
+variables of that procedure are available during the pause.  <code>PAUSE</code>
+outputs if the pause is ended by a <code>CONTINUE</code> with an input.
+</p>
+<p>If the variable <code>ERRACT</code> exists, and an error condition occurs, the
+contents of that variable are run as an instructionlist.  Typically
+<code>ERRACT</code> is given the value <code>[PAUSE]</code> so that an interactive pause will be
+entered in the event of an error.  This allows the user to check values
+of local variables at the time of the error.
+</p>
+<p>Typing the system quit character (<tt class="key">alt-S</tt> for wxWidgets; otherwise
+normally <tt class="key">control-\</tt> for Unix, <tt class="key">control-W</tt> for DOS, or
+<tt class="key">command-comma</tt> for Mac) will also enter a pause.
+</p>
+<p>See <a href="usermanual.html#ERRACT">ERRACT</a> .
+</p>
+<hr>
+<a name="CONTINUE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WAIT" accesskey="n" rel="next">WAIT</a>, Previous: <a href="usermanual.html#PAUSE" accesskey="p" rel="prev">PAUSE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="continue"></a>
+<h4 class="unnumberedsubsec">continue</h4>
+<a name="index-continue"></a>
+<a name="index-co"></a>
+
+<div class="example">
+<pre class="example">CONTINUE value
+CO value
+(CONTINUE)
+(CO)
+</pre></div>
+
+<p>command.  Ends the current interactive pause, returning to the context
+of the <code>PAUSE</code> invocation that began it.  If <code>CONTINUE</code> is given an input,
+that value is used as the output from the <code>PAUSE</code>.  If not, the <code>PAUSE</code> does
+not output.
+</p>
+<p>Exceptionally, the <code>CONTINUE</code> command can be used without its default
+input and without parentheses provided that nothing follows it on the
+instruction line.
+</p>
+<hr>
+<a name="WAIT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BYE" accesskey="n" rel="next">BYE</a>, Previous: <a href="usermanual.html#CONTINUE" accesskey="p" rel="prev">CONTINUE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="wait"></a>
+<h4 class="unnumberedsubsec">wait</h4>
+<a name="index-wait"></a>
+
+<div class="example">
+<pre class="example">WAIT time
+</pre></div>
+
+<p>command.  Delays further execution for <var>time</var> 60ths of a second.  Also
+causes any buffered characters destined for the terminal to be printed
+immediately.  <tt>WAIT&nbsp;0</tt><!-- /@w --> can be used to achieve this buffer flushing without actually waiting.
+</p>
+<hr>
+<a name="BYE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#dMAYBEOUTPUT" accesskey="n" rel="next">dMAYBEOUTPUT</a>, Previous: <a href="usermanual.html#WAIT" accesskey="p" rel="prev">WAIT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="bye"></a>
+<h4 class="unnumberedsubsec">bye</h4>
+<a name="index-bye"></a>
+
+<div class="example">
+<pre class="example">BYE
+</pre></div>
+
+<p>command.  Exits from Logo; returns to the operating system.
+</p>
+<hr>
+<a name="dMAYBEOUTPUT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#GOTO" accesskey="n" rel="next">GOTO</a>, Previous: <a href="usermanual.html#BYE" accesskey="p" rel="prev">BYE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002emaybeoutput"></a>
+<h4 class="unnumberedsubsec">.maybeoutput</h4>
+<a name="index-_002emaybeoutput"></a>
+
+<div class="example">
+<pre class="example">.MAYBEOUTPUT value				(special form)
+</pre></div>
+
+<p>works like <code>OUTPUT</code> except that the expression that provides the input
+value might not, in fact, output a value, in which case the effect is
+like <code>STOP</code>.  This is intended for use in control structure definitions,
+for cases in which you don&rsquo;t know whether or not some expression
+produces a value.  Example:
+</p>
+<div class="example">
+<pre class="example">to invoke :function [:inputs] 2
+.maybeoutput apply :function :inputs
+end
+
+? (invoke &quot;print &quot;a &quot;b &quot;c)
+a b c
+? print (invoke &quot;word &quot;a &quot;b &quot;c)
+abc
+</pre></div>
+
+<p>This is an alternative to <code>RUNRESULT</code>.  It&rsquo;s fast and easy to use, at the
+cost of being an exception to Logo&rsquo;s evaluation rules.  (Ordinarily, it
+should be an error if the expression that&rsquo;s supposed to provide an input
+to something doesn&rsquo;t have a value.)
+</p>
+<p>See <a href="usermanual.html#OUTPUT">OUTPUT</a> ,
+<a href="usermanual.html#STOP">STOP</a> ,
+<a href="usermanual.html#RUNRESULT">RUNRESULT</a> .
+</p>
+<hr>
+<a name="GOTO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TAG" accesskey="n" rel="next">TAG</a>, Previous: <a href="usermanual.html#dMAYBEOUTPUT" accesskey="p" rel="prev">dMAYBEOUTPUT</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="goto"></a>
+<h4 class="unnumberedsubsec">goto</h4>
+<a name="index-goto"></a>
+
+<div class="example">
+<pre class="example">GOTO word
+</pre></div>
+
+<p>command.  Looks for a <code>TAG</code> command with the same input in the same
+procedure, and continues running the procedure from the location of that
+<code>TAG</code>.  It is meaningless to use <code>GOTO</code> outside of a procedure.
+</p>
+<hr>
+<a name="TAG"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#IGNORE" accesskey="n" rel="next">IGNORE</a>, Previous: <a href="usermanual.html#GOTO" accesskey="p" rel="prev">GOTO</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="tag"></a>
+<h4 class="unnumberedsubsec">tag</h4>
+<a name="index-tag"></a>
+
+<div class="example">
+<pre class="example">TAG quoted.word
+</pre></div>
+
+<p>command.  Does nothing.  The input must be a literal word following a
+quotation mark (<code>&quot;</code>), not the result of a computation.  Tags are used by
+the <code>GOTO</code> command.
+</p>
+<hr>
+<a name="IGNORE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#back_002dquote" accesskey="n" rel="next">back-quote</a>, Previous: <a href="usermanual.html#TAG" accesskey="p" rel="prev">TAG</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="ignore"></a>
+<h4 class="unnumberedsubsec">ignore</h4>
+<a name="index-ignore"></a>
+
+<div class="example">
+<pre class="example">IGNORE value					(library procedure)
+</pre></div>
+
+<p>command.  Does nothing.  Used when an expression is evaluated for a side
+effect and its actual value is unimportant.
+</p>
+<hr>
+<a name="back_002dquote"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FOR" accesskey="n" rel="next">FOR</a>, Previous: <a href="usermanual.html#IGNORE" accesskey="p" rel="prev">IGNORE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_0060"></a>
+<h4 class="unnumberedsubsec">&lsquo;</h4>
+<a name="index-_0060"></a>
+
+<div class="example">
+<pre class="example">` list						(library procedure)
+</pre></div>
+
+<p>outputs a list equal to its input but with certain substitutions.  If a
+member of the input list is the word &lsquo;<samp>,</samp>&rsquo; (comma) then the following
+member should be an instructionlist that produces an output when run.
+That output value replaces the comma and the instructionlist.  If a
+member of the input list is the word &lsquo;<samp>,@</samp>&rsquo; (comma atsign) then the
+following member should be an instructionlist that outputs a list when
+run.  The members of that list replace the &lsquo;<samp>,@</samp>&rsquo; and the instructionlist.
+Example:
+</p>
+<div class="example">
+<pre class="example">show `[foo baz ,[bf [a b c]] garply ,@[bf [a b c]]]
+</pre></div>
+
+<p>will print
+</p>
+<div class="example">
+<pre class="example">[foo baz [b c] garply b c]
+</pre></div>
+
+<p>A word starting with &lsquo;<samp>,</samp>&rsquo; or &lsquo;<samp>,@</samp>&rsquo; is treated as if the rest of the
+word were a one-word list, e.g., &lsquo;<samp>,:foo</samp>&rsquo; is equivalent to &lsquo;<samp>,[:Foo]</samp>&rsquo;.
+</p>
+<p>A word starting with &lsquo;<samp>&quot;,</samp>&rsquo; (quote comma) or &lsquo;<samp>:,</samp>&rsquo; (colon comma)
+becomes a word starting with &lsquo;<samp>&quot;</samp>&rsquo; or &lsquo;<samp>:</samp>&rsquo; but with the result of
+running the substitution (or its first word, if the result is a list)
+replacing what comes after the comma.
+</p>
+<p>Backquotes can be nested.  Substitution is done only for commas at
+the same depth as the backquote in which they are found:
+</p>
+<div class="example">
+<pre class="example">? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f]
+[a ` [b , [1+2] , [foo 4 d] e] f]
+
+?make &quot;name1 &quot;x
+?make &quot;name2 &quot;y
+? show `[a `[b ,:,:name1 ,&quot;,:name2 d] e]
+[a ` [b , [:x] , [&quot;y] d] e]
+</pre></div>
+
+<hr>
+<a name="FOR"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DOdWHILE" accesskey="n" rel="next">DOdWHILE</a>, Previous: <a href="usermanual.html#back_002dquote" accesskey="p" rel="prev">back-quote</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="for"></a>
+<h4 class="unnumberedsubsec">for</h4>
+<a name="index-for"></a>
+
+<div class="example">
+<pre class="example">FOR forcontrol instructionlist			(library procedure)
+</pre></div>
+
+<p>command.  The first input must be a list containing three or four
+members: (1) a word, which will be used as the name of a local variable;
+(2) a word or list that will be evaluated as by <code>RUN</code> to determine a
+number, the starting value of the variable; (3) a word or list that will
+be evaluated to determine a number, the limit value of the variable; (4)
+an optional word or list that will be evaluated to determine the step
+size.  If the fourth member is missing, the step size will be 1 or &ndash;1
+depending on whether the limit value is greater than or less than the
+starting value, respectively.
+</p>
+<p>The second input is an instructionlist.  The effect of <code>FOR</code> is to run
+that instructionlist repeatedly, assigning a new value to the control
+variable (the one named by the first member of the <var>forcontrol</var> list) each
+time.  First the starting value is assigned to the control variable.
+Then the value is compared to the limit value.  <code>FOR</code> is complete when the
+sign of <code>(current - limit)</code> is the same as the sign of the step size.  (If
+no explicit step size is provided, the instructionlist is always run at
+least once.  An explicit step size can lead to a zero-trip <code>FOR</code>, e.g.,
+<tt>FOR&nbsp;[I&nbsp;1&nbsp;0&nbsp;1]&nbsp;...</tt>)<!-- /@w -->. Otherwise, the instructionlist is run, then the step is added to the current value of the control variable and FOR returns to
+the comparison step.
+</p>
+<div class="example">
+<pre class="example">? for [i 2 7 1.5] [print :i]
+2
+3.5
+5
+6.5
+?
+</pre></div>
+
+<p>See <a href="usermanual.html#RUN">RUN</a> .
+</p>
+<hr>
+<a name="DOdWHILE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#WHILE" accesskey="n" rel="next">WHILE</a>, Previous: <a href="usermanual.html#FOR" accesskey="p" rel="prev">FOR</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="do_002ewhile"></a>
+<h4 class="unnumberedsubsec">do.while</h4>
+<a name="index-do_002ewhile"></a>
+
+<div class="example">
+<pre class="example">DO.WHILE instructionlist tfexpression		(library procedure)
+</pre></div>
+
+<p>command.  Repeatedly evaluates the <var>instructionlist</var> as long as the
+evaluated 
+remains <code>TRUE</code>.  Evaluates the first input first,
+so the <var>instructionlist</var> is always run at least once.  The
+<var>tfexpression</var> must be an expressionlist whose value when evaluated is
+<code>TRUE</code> or <code>FALSE</code>.
+</p>
+<hr>
+<a name="WHILE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#DOdUNTIL" accesskey="n" rel="next">DOdUNTIL</a>, Previous: <a href="usermanual.html#DOdWHILE" accesskey="p" rel="prev">DOdWHILE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="while"></a>
+<h4 class="unnumberedsubsec">while</h4>
+<a name="index-while"></a>
+
+<div class="example">
+<pre class="example">WHILE tfexpression instructionlist		(library procedure)
+</pre></div>
+
+<p>command.  Repeatedly evaluates the <var>instructionlist</var> as long as the
+evaluated
+remains <code>TRUE</code>.  Evaluates the first input first,
+so the <var>instructionlist</var> may never be run at all.  The <var>tfexpression</var>
+must be an expressionlist whose value when evaluated is <code>TRUE</code> or <code>FALSE</code>.
+</p>
+<hr>
+<a name="DOdUNTIL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UNTIL" accesskey="n" rel="next">UNTIL</a>, Previous: <a href="usermanual.html#WHILE" accesskey="p" rel="prev">WHILE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="do_002euntil"></a>
+<h4 class="unnumberedsubsec">do.until</h4>
+<a name="index-do_002euntil"></a>
+
+<div class="example">
+<pre class="example">DO.UNTIL instructionlist tfexpression		(library procedure)
+</pre></div>
+
+<p>command.  Repeatedly evaluates the <var>instructionlist</var> as long as the
+evaluated
+remains <code>FALSE</code>.  Evaluates the first input
+first, so the <var>instructionlist</var> is always run at least once.  The
+<var>tfexpression</var> must be an expressionlist whose value when evaluated is
+<code>TRUE</code> or <code>FALSE</code>.
+</p>
+<hr>
+<a name="UNTIL"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CASE" accesskey="n" rel="next">CASE</a>, Previous: <a href="usermanual.html#DOdUNTIL" accesskey="p" rel="prev">DOdUNTIL</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="until"></a>
+<h4 class="unnumberedsubsec">until</h4>
+<a name="index-until"></a>
+
+<div class="example">
+<pre class="example">UNTIL tfexpression instructionlist		(library procedure)
+</pre></div>
+
+<p>command.  Repeatedly evaluates the <var>instructionlist</var> as long as the
+evaluated
+remains <code>FALSE</code>.  Evaluates the first input
+first, so the <var>instructionlist</var> may never be run at all.  The
+<var>tfexpression</var> must be an expressionlist whose value when evaluated is
+<code>TRUE</code> or <code>FALSE</code>.
+</p>
+<hr>
+<a name="CASE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#COND" accesskey="n" rel="next">COND</a>, Previous: <a href="usermanual.html#UNTIL" accesskey="p" rel="prev">UNTIL</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="case"></a>
+<h4 class="unnumberedsubsec">case</h4>
+<a name="index-case"></a>
+
+<div class="example">
+<pre class="example">CASE value clauses					(library procedure)
+</pre></div>
+
+<p>command or operation.  The second input is a list of lists (clauses);
+each clause is a list whose first element is either a list of values
+or the word <code>ELSE</code> and whose butfirst is a Logo expression or
+instruction.  <code>CASE</code> examines the clauses in order.  If a clause begins
+with the word <code>ELSE</code> (upper or lower case), then the butfirst of that
+clause is evaluated and <code>CASE</code> outputs its value, if any.  If the first
+input to CASE is a member of the first element of a clause, then the
+butfirst of that clause is evaluated and <code>CASE</code> outputs its value, if
+any.  If neither of these conditions is met, then <code>CASE</code> goes on to the
+next clause.  If no clause is satisfied, <code>CASE</code> does nothing.  
+Example:
+</p>
+<div class="example">
+<pre class="example">to vowelp :letter
+output case :letter [ [[a e i o u] &quot;true] [else &quot;false] ]
+end
+</pre></div>
+
+<hr>
+<a name="COND"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#CASE" accesskey="p" rel="prev">CASE</a>, Up: <a href="usermanual.html#CONTROL" accesskey="u" rel="up">CONTROL</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="cond"></a>
+<h4 class="unnumberedsubsec">cond</h4>
+<a name="index-cond"></a>
+
+<div class="example">
+<pre class="example">COND clauses						(library procedure)
+</pre></div>
+
+<p>command or operation.  The input is a list of lists (clauses); each
+clause is a list whose first element is either an expression whose
+value is <code>TRUE</code> or <code>FALSE</code>, or the word <code>ELSE</code>, and whose butfirst is a Logo
+expression or instruction.  <code>COND</code> examines the clauses in order.  If a
+clause begins with the word <code>ELSE</code> (upper or lower case), then the
+butfirst of that clause is evaluated and <code>CASE</code> outputs its value, if
+any.  Otherwise, the first element of the clause is evaluated; the
+resulting value must be <code>TRUE</code> or <code>FALSE</code>.  If it&rsquo;s <code>TRUE</code>, then the
+butfirst of that clause is evaluated and <code>COND</code> outputs its value, if
+any.  If the value is <code>FALSE</code>, then <code>COND</code> goes on to the next clause.  If
+no clause is satisfied, <code>COND</code> does nothing.  Example:
+</p>
+<div class="example">
+<pre class="example">to evens :numbers	; select even numbers from a list
+op cond [ [[emptyp :numbers] []]
+          [[evenp first :numbers]	; assuming EVENP is defined
+           fput first :numbers evens butfirst :numbers]
+          [else evens butfirst :numbers] ]
+end
+</pre></div>
+
+<hr>
+<a name="TEMPLATE_002dBASED-ITERATION"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#CONTROL" accesskey="p" rel="prev">CONTROL</a>, Up: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="u" rel="up">CONTROL STRUCTURES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Template_002dbased-Iteration"></a>
+<h3 class="section">9.2 Template-based Iteration</h3>
+<a name="index-template"></a>
+
+<p>The procedures in this section are iteration tools based on the idea of a
+<em>template.</em>  This is a generalization of an instruction list or an
+expression list in which <em>slots</em> are provided for the tool to insert varying
+data.  Four different forms of template can be used.
+</p>
+<p>The most commonly used form for a template is &lsquo;<samp>explicit-slot</samp>&rsquo; form, or
+&lsquo;<samp>question mark</samp>&rsquo; form.  Example:
+</p>
+<div class="example">
+<pre class="example">? show map [? * ?] [2 3 4 5]
+[4 9 16 25]
+?
+</pre></div>
+
+<p>In this example, the <code>MAP</code> tool evaluated the template <code>[?&nbsp;*&nbsp;?]</code><!-- /@w -->
+repeatedly, with each of the members of the data list <code>[2&nbsp;3&nbsp;4&nbsp;5]</code><!-- /@w -->
+substituted in turn for the question marks.  The same value was used for every
+question mark in a given evaluation.  Some tools allow for more than one datum
+to be substituted in parallel; in these cases the slots are indicated by
+<code>?1</code> for the first datum, <code>?2</code> for the second, and so on:
+</p>
+<div class="example">
+<pre class="example">? show (map [(word ?1 ?2 ?1)] [a b c] [d e f])
+[ada beb cfc]
+?
+</pre></div>
+
+<p>If the template wishes to compute the datum number, the form <code>(?&nbsp;1)</code><!-- /@w --> is
+equivalent to <code>?1</code>, so <code>(?&nbsp;?1)</code><!-- /@w --> means the datum whose number is given in
+datum number 1.  Some tools allow additional slot designations, as shown
+in the individual descriptions.
+</p>
+<p>The second form of template is the &lsquo;<samp>named-procedure</samp>&rsquo; form.  If the
+template is a word rather than a list, it is taken as the name of a procedure.
+That procedure must accept a number of inputs equal to the number of parallel
+data slots provided by the tool; the procedure is applied to all of the
+available data in order.  That is, if data <code>?1</code> through <code>?3</code> are
+available, the template <code>&quot;PROC</code> is equivalent to <tt>[PROC&nbsp;?1&nbsp;?2&nbsp;?3]</tt><!-- /@w -->.
+</p>
+<div class="example">
+<pre class="example">? show (map &quot;word [a b c] [d e f])
+[ad be cf]
+?
+
+to dotprod :a :b	; vector dot product
+op apply &quot;sum (map &quot;product :a :b)
+end
+</pre></div>
+
+<p>The third form of template is &lsquo;<samp>named-slot</samp>&rsquo; or &lsquo;<samp>lambda</samp>&rsquo; form.  This
+form is indicated by a template list containing more than one member, whose
+first member is itself a list.  The first member is taken as a list of names;
+local variables are created with those names and given the available data in
+order as their values.  The number of names must equal the number of available
+data.  This form is needed primarily when one iteration tool must be used
+within the template list of another, and the <code>?</code> notation would be ambiguous in
+the inner template.  Example:
+</p>
+<div class="example">
+<pre class="example">to matmul :m1 :m2 [:tm2 transpose :m2]	; multiply two matrices
+output map [[row] map [[col] dotprod :row :col] :tm2] :m1
+end
+</pre></div>
+
+<p>The fourth form is &lsquo;<samp>procedure text</samp>&rsquo; form, a variant of lambda form.  In
+this form, the template list contains at least two members, all of which are
+lists.  This is the form used by the <code>DEFINE</code> and <code>TEXT</code> primitives,
+and <code>APPLY</code> accepts it so that the text of a defined procedure can be
+used as a template.
+</p>
+<p>Note:  The fourth form of template is interpreted differently from the others,
+in that Logo considers it to be an independent defined procedure for the
+purposes of <code>OUTPUT</code> and <code>STOP</code>.  For example, the following two
+instructions are identical:
+</p>
+<div class="example">
+<pre class="example">? print apply [[x] :x+3] [5]
+8
+? print apply [[x] [output :x+3]] [5]
+8
+</pre></div>
+
+<p>although the first instruction is in named-slot form and the second is in
+procedure-text form.  The named-slot form can be understood as telling Logo to
+evaluate the expression <tt>:x+3</tt><!-- /@w --> in place of the entire invocation of
+apply, with the variable <code>x</code> temporarily given the value <code>5</code>.  The
+procedure-text form can be understood as invoking the procedure
+</p>
+<div class="example">
+<pre class="example">to foo :x
+output :x+3
+end
+</pre></div>
+
+<p>with input <code>5</code>, but without actually giving the procedure a name.  If
+the use of <code>OUTPUT</code> were interchanged in these two examples, we&rsquo;d get errors:
+</p>
+<div class="example">
+<pre class="example">? print apply [[x] output :x+3] [5]
+Can only use output inside a procedure
+? print apply [[x] [:x+3]] [5]
+You don't say what to do with 8
+</pre></div>
+
+<p>The named-slot form can be used with <code>STOP</code> or <code>OUTPUT</code> inside a procedure,
+to stop the enclosing procedure.
+</p>
+<p>The following iteration tools are extended versions of the ones in Appendix
+B of the book <cite>Computer Science Logo Style, Volume 3:  Advanced Topics</cite> by
+Brian Harvey [MIT Press, 1987].  The extensions are primarily to allow for
+variable numbers of inputs.
+</p>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#APPLY" accesskey="1">APPLY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#INVOKE" accesskey="2">INVOKE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FOREACH" accesskey="3">FOREACH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MAP" accesskey="4">MAP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MAPdSE" accesskey="5">MAPdSE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">MAP.SE
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FILTER" accesskey="6">FILTER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FIND" accesskey="7">FIND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REDUCE" accesskey="8">REDUCE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CROSSMAP" accesskey="9">CROSSMAP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CASCADE">CASCADE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CASCADEd2">CASCADEd2</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">CASCADE.2
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#TRANSFER">TRANSFER</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="APPLY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#INVOKE" accesskey="n" rel="next">INVOKE</a>, Previous: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="p" rel="prev">TEMPLATE-BASED ITERATION</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="apply"></a>
+<h4 class="unnumberedsubsec">apply</h4>
+<a name="index-apply"></a>
+
+<div class="example">
+<pre class="example">APPLY template inputlist
+</pre></div>
+
+<p>command or operation.  Runs the <var>template</var>, filling its slots with the
+members of <var>inputlist.</var>  The number of members in <var>inputlist</var> must be an
+acceptable number of slots for <var>template</var>.  It is illegal to apply the
+primitive <code>TO</code> as a template, but anything else is okay.  <code>APPLY</code> outputs
+what <var>template</var> outputs, if anything.
+</p>
+
+<hr>
+<a name="INVOKE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FOREACH" accesskey="n" rel="next">FOREACH</a>, Previous: <a href="usermanual.html#APPLY" accesskey="p" rel="prev">APPLY</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="invoke"></a>
+<h4 class="unnumberedsubsec">invoke</h4>
+<a name="index-invoke"></a>
+
+<div class="example">
+<pre class="example">INVOKE template input				(library procedure)
+(INVOKE template input1 input2 ...)
+</pre></div>
+
+<p>command or operation.  Exactly like <code>APPLY</code> except that the inputs are
+provided as separate expressions rather than in a list.
+</p>
+<hr>
+<a name="FOREACH"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MAP" accesskey="n" rel="next">MAP</a>, Previous: <a href="usermanual.html#INVOKE" accesskey="p" rel="prev">INVOKE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="foreach"></a>
+<h4 class="unnumberedsubsec">foreach</h4>
+<a name="index-foreach"></a>
+
+<div class="example">
+<pre class="example">FOREACH data template				(library procedure)
+(FOREACH data1 data2 ... template)
+</pre></div>
+
+<p>command.  Evaluates the <var>template</var> list repeatedly, once for each member
+of the <var>data</var> list.  If more than one <var>data</var> list are given, each of them
+must be the same length.  (The <var>data</var> inputs can be words, in which case
+the template is evaluated once for each character.)
+</p>
+<p>In a template, the symbol <code>?REST</code> represents the portion of the
+<var>data</var> input to the right of the member currently being used as the
+<code>?</code> slot-filler.  That is, if the <var>data</var> input is
+<code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and the template is being evaluated with <code>?</code>
+replaced by <code>B</code>, then <code>?REST</code> would be replaced by
+<code>[C&nbsp;D&nbsp;E]</code><!-- /@w -->.  If multiple parallel slots are used, then
+<tt>(?REST&nbsp;1)</tt><!-- /@w --> goes with ?1, etc.
+</p>
+<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var>
+input of the member currently being used as the <code>?</code> slot-filler.  That is, if
+the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and the template is being evaluated with
+<code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced by <code>2</code>.
+</p>
+<hr>
+<a name="MAP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MAPdSE" accesskey="n" rel="next">MAPdSE</a>, Previous: <a href="usermanual.html#FOREACH" accesskey="p" rel="prev">FOREACH</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="map"></a>
+<h4 class="unnumberedsubsec">map</h4>
+<a name="index-map"></a>
+
+<div class="example">
+<pre class="example">MAP template data				(library procedure)
+(MAP template data1 data2 ...)
+</pre></div>
+
+<p>outputs a word or list, depending on the type of the <var>data</var> input, of the
+same length as that <var>data</var> input.  (If more than one <var>data</var> input are
+given, the output is of the same type as <var>data1</var>.)  Each member of the
+output is the result of evaluating the <var>template</var> list, filling the slots
+with the corresponding member(s) of the <var>data</var> input(s).  (All <var>data</var>
+inputs must be the same length.)  In the case of a word output, the results of
+the template evaluation must be words, and they are concatenated with
+<code>WORD</code>.
+</p>
+<p>In a template, the symbol <code>?REST</code> represents the portion of the data
+input to the right of the member currently being used as the <code>?</code>
+slot-filler.  That is, if the <var>data</var> input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and
+the <var>template</var> is being evaluated with <code>?</code> replaced by <code>B</code>, then
+<code>?REST</code> would be replaced by <code>[C&nbsp;D&nbsp;E]</code><!-- /@w -->. If multiple parallel
+slots are used, then <tt>(?REST&nbsp;1)</tt><!-- /@w --> goes with <code>?1</code>, etc.
+</p>
+<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var>
+input of the member currently being used as the <code>?</code> slot-filler.  That
+is, if the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and the template is being
+evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced
+by <code>2</code>.
+</p>
+<p>See <a href="usermanual.html#WORD">WORD</a> .
+</p>
+<hr>
+<a name="MAPdSE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FILTER" accesskey="n" rel="next">FILTER</a>, Previous: <a href="usermanual.html#MAP" accesskey="p" rel="prev">MAP</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="map_002ese"></a>
+<h4 class="unnumberedsubsec">map.se</h4>
+<a name="index-map_002ese"></a>
+
+<div class="example">
+<pre class="example">MAP.SE template data				(library procedure)
+(MAP.SE template data1 data2 ...)
+</pre></div>
+
+<p>outputs a list formed by evaluating the <var>template</var> list repeatedly and
+concatenating the results using <code>SENTENCE</code>.  That is, the members of the
+output are the members of the results of the evaluations.  The output
+list might, therefore, be of a different length from that of the <var>data</var>
+input(s).  (If the result of an evaluation is the empty list, it
+contributes nothing to the final output.)  The <var>data</var> inputs may be words
+or lists.
+</p>
+<p>In a template, the symbol <code>?REST</code> represents the portion of the data
+input to the right of the member currently being used as the <code>?</code>
+slot-filler.  That is, if the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and the
+template is being evaluated with <code>?</code> replaced by <code>B</code>, then
+<code>?REST</code> would be replaced by <code>[C&nbsp;D&nbsp;E]</code><!-- /@w -->. If multiple parallel
+slots are used, then <tt>(?REST&nbsp;1)</tt><!-- /@w --> goes with <code>?1</code>, etc.
+</p>
+<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var>
+input of the member currently being used as the <code>?</code> slot-filler.  That
+is, if the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and the template is being
+evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced
+by <code>2</code>.
+</p>
+<p>See <a href="usermanual.html#SENTENCE">SENTENCE</a> .
+</p>
+<hr>
+<a name="FILTER"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FIND" accesskey="n" rel="next">FIND</a>, Previous: <a href="usermanual.html#MAPdSE" accesskey="p" rel="prev">MAPdSE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="filter"></a>
+<h4 class="unnumberedsubsec">filter</h4>
+<a name="index-filter"></a>
+
+<div class="example">
+<pre class="example">FILTER tftemplate data				(library procedure)
+</pre></div>
+
+<p>outputs a word or list, depending on the type of the <var>data</var> input,
+containing a subset of the members (for a list) or characters (for a
+word) of the input.  The template is evaluated once for each member or
+character of the data, and it must produce a <code>TRUE</code> or <code>FALSE</code> value.  If
+the value is <code>TRUE</code>, then the corresponding input constituent is included
+in the output.
+</p>
+<div class="example">
+<pre class="example">? print filter &quot;vowelp &quot;elephant 
+eea 
+?
+</pre></div>
+
+<p>In a template, the symbol <code>?REST</code> represents the portion of the
+<var>data</var> input to the right of the member currently being used as the
+<code>?</code> slot-filler.  That is, if the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w -->
+and the template is being evaluated with <code>?</code> replaced by <code>B</code>, then
+<code>?REST</code> would be replaced by <code>[C&nbsp;D&nbsp;E]</code><!-- /@w -->.
+</p>
+<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var>
+input of the member currently being used as the <code>?</code> slot-filler.  That
+is, if the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and the template is being
+evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced
+by <code>2</code>.
+</p>
+<hr>
+<a name="FIND"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REDUCE" accesskey="n" rel="next">REDUCE</a>, Previous: <a href="usermanual.html#FILTER" accesskey="p" rel="prev">FILTER</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="find"></a>
+<h4 class="unnumberedsubsec">find</h4>
+<a name="index-find"></a>
+
+<div class="example">
+<pre class="example">FIND tftemplate data				(library procedure)
+</pre></div>
+
+<p>outputs the first constituent of the <var>data</var> input (the first member of a
+list, or the first character of a word) for which the value produced by
+evaluating the <var>template</var> with that consituent in its slot is <code>TRUE</code>.
+If there is no such constituent, the empty list is output.
+</p>
+<p>In a template, the symbol <code>?REST</code> represents the portion of the
+<var>data</var> input to the right of the member currently being used as the
+<code>?</code> slot-filler.  That is, if the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w -->
+and the template is being evaluated with <code>?</code> replaced by <code>B</code>, then
+<code>?REST</code> would be replaced by <code>[C&nbsp;D&nbsp;E]</code><!-- /@w -->.
+</p>
+<p>In a template, the symbol <code>#</code> represents the position in the <var>data</var>
+input of the member currently being used as the <code>?</code> slot-filler.  That
+is, if the data input is <code>[A&nbsp;B&nbsp;C&nbsp;D&nbsp;E]</code><!-- /@w --> and the template is being
+evaluated with <code>?</code> replaced by <code>B</code>, then <code>#</code> would be replaced
+by <code>2</code>.
+</p>
+<hr>
+<a name="REDUCE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CROSSMAP" accesskey="n" rel="next">CROSSMAP</a>, Previous: <a href="usermanual.html#FIND" accesskey="p" rel="prev">FIND</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="reduce"></a>
+<h4 class="unnumberedsubsec">reduce</h4>
+<a name="index-reduce"></a>
+
+<div class="example">
+<pre class="example">REDUCE template data				(library procedure)
+</pre></div>
+
+<p>outputs the result of applying the <var>template</var> to accumulate the members of
+the <var>data</var> input.  The template must be a two-slot function.  Typically it
+is an associative function name like <code>SUM</code>.  If the <var>data</var> input has
+only one constituent (member in a list or character in a word), the output is
+that consituent.  Otherwise, the template is first applied with <code>?1</code>
+filled with the next-to-last consitient and <code>?2</code> with the last
+constituent.  Then, if there are more constituents, the template is applied
+with <code>?1</code> filled with the next constituent to the left and <code>?2</code> with
+the result from the previous evaluation.  This process continues until all
+constituents have been used.  The data input may not be empty.
+</p>
+<p>Note: If the template is, like <code>SUM</code>, the name of a procedure that is
+capable of accepting arbitrarily many inputs, it is more efficient to
+use <code>APPLY</code> instead of <code>REDUCE</code>.  The latter is good for associative
+procedures that have been written to accept exactly two inputs:
+</p>
+<div class="example">
+<pre class="example">to max :a :b
+output ifelse :a &gt; :b [:a] [:b]
+end
+
+print reduce &quot;max [...]
+</pre></div>
+
+<p>Alternatively, <code>REDUCE</code> can be used to write <code>MAX</code> as a procedure
+that accepts any number of inputs, as <code>SUM</code> does:
+</p>
+<div class="example">
+<pre class="example">to max [:inputs] 2
+if emptyp :inputs ~
+   [(throw &quot;error [not enough inputs to max])]
+output reduce [ifelse ?1 &gt; ?2 [?1] [?2]] :inputs
+end
+</pre></div>
+
+<hr>
+<a name="CROSSMAP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CASCADE" accesskey="n" rel="next">CASCADE</a>, Previous: <a href="usermanual.html#REDUCE" accesskey="p" rel="prev">REDUCE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="crossmap"></a>
+<h4 class="unnumberedsubsec">crossmap</h4>
+<a name="index-crossmap"></a>
+
+<div class="example">
+<pre class="example">CROSSMAP template listlist			(library procedure)
+(CROSSMAP template data1 data2 ...)
+</pre></div>
+
+<p>outputs a list containing the results of template evaluations.  Each
+<var>data</var> list contributes to a slot in the template; the number of slots is
+equal to the number of <var>data</var> list inputs.  As a special case, if only one
+<var>data</var> list input is given, that list is taken as a list of data lists,
+and each of its members contributes values to a slot.  <code>CROSSMAP</code> differs
+from <code>MAP</code> in that instead of taking members from the data inputs in
+parallel, it takes all possible combinations of members of data inputs,
+which need not be the same length.
+</p>
+<div class="example">
+<pre class="example">? show (crossmap [word ?1 ?2] [a b c] [1 2 3 4])
+[a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4]
+?
+</pre></div>
+
+<p>For compatibility with the version in the first edition of CSLS
+<a name="DOCF1" href="usermanual.html#FOOT1"><sup>1</sup></a>, <code>CROSSMAP</code> templates may
+use the notation <code>:1</code> instead of <code>?1</code> to indicate slots.
+</p>
+<p>See <a href="usermanual.html#MAP">MAP</a> .
+</p>
+<hr>
+<a name="CASCADE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CASCADEd2" accesskey="n" rel="next">CASCADEd2</a>, Previous: <a href="usermanual.html#CROSSMAP" accesskey="p" rel="prev">CROSSMAP</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="cascade"></a>
+<h4 class="unnumberedsubsec">cascade</h4>
+<a name="index-cascade"></a>
+
+<div class="example">
+<pre class="example">CASCADE endtest template startvalue		(library procedure)
+(CASCADE endtest tmp1 sv1 tmp2 sv2 ...)
+(CASCADE endtest tmp1 sv1 tmp2 sv2 ... finaltemplate)
+</pre></div>
+
+<p>outputs the result of applying a template (or several templates, as
+explained below) repeatedly, with a given value filling the slot the
+first time, and the result of each application filling the slot for the
+following application.
+</p>
+<p>In the simplest case, <code>CASCADE</code> has three inputs.  The second input is a
+one-slot expression template.  That template is evaluated some number of
+times (perhaps zero).  On the first evaluation, the slot is filled with
+the third input; on subsequent evaluations, the slot is filled with the
+result of the previous evaluation.  The number of evaluations is
+determined by the first input.  This can be either a nonnegative
+integer, in which case the template is evaluated that many times, or a
+predicate expression template, in which case it is evaluated (with the
+same slot filler that will be used for the evaluation of the second
+input) repeatedly, and the <code>CASCADE</code> evaluation continues as long as the
+predicate value is <code>FALSE</code>.  (In other words, the predicate template
+indicates the condition for stopping.)
+</p>
+<p>If the template is evaluated zero times, the output from <code>CASCADE</code> is the
+third (<var>startvalue</var>) input.  Otherwise, the output is the value produced
+by the last template evaluation.
+</p>
+<p><code>CASCADE</code> templates may include the symbol <code>#</code> to represent the
+number of times the template has been evaluated.  This slot is filled with 1
+for the first evaluation, 2 for the second, and so on.
+</p>
+<div class="example">
+<pre class="example">? show cascade 5 [lput # ?] []
+[1 2 3 4 5]
+? show cascade [vowelp first ?] [bf ?] &quot;spring
+ing
+? show cascade 5 [# * ?] 1
+120
+?
+</pre></div>
+
+<p>Several cascaded results can be computed in parallel by providing additional
+template-startvalue pairs as inputs to <code>CASCADE</code>.  In this case, all
+templates (including the endtest template, if used) are multi-slot, with the
+number of slots equal to the number of pairs of inputs.  In each round of
+evaluations, <code>?2</code>, for example, represents the result of evaluating the
+second template in the previous round.  If the total number of inputs
+(including the first endtest input) is odd, then the output from CASCADE is
+the final value of the first template.  If the total number of inputs is even,
+then the last input is a template that is evaluated once, after the end test
+is satisfied, to determine the output from <code>CASCADE</code>.
+</p>
+<div class="example">
+<pre class="example">to fibonacci :n
+output (cascade :n [?1 + ?2] 1 [?1] 0)
+end
+
+to piglatin :word
+output (cascade [vowelp first ?] ~
+                [word bf ? first ?] ~
+                :word ~
+                [word ? &quot;ay])
+end
+</pre></div>
+
+<hr>
+<a name="CASCADEd2"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#TRANSFER" accesskey="n" rel="next">TRANSFER</a>, Previous: <a href="usermanual.html#CASCADE" accesskey="p" rel="prev">CASCADE</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="cascade_002e2"></a>
+<h4 class="unnumberedsubsec">cascade.2</h4>
+<a name="index-cascade_002e2"></a>
+
+<div class="example">
+<pre class="example">CASCADE.2 endtest temp1 startval1 temp2 startval2  (library procedure)
+</pre></div>
+
+<p>outputs the result of invoking <code>CASCADE</code> with the same inputs.  The only
+difference is that the default number of inputs is five instead of three.
+</p>
+<hr>
+<a name="TRANSFER"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#CASCADEd2" accesskey="p" rel="prev">CASCADEd2</a>, Up: <a href="usermanual.html#TEMPLATE_002dBASED-ITERATION" accesskey="u" rel="up">TEMPLATE-BASED ITERATION</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="transfer"></a>
+<h4 class="unnumberedsubsec">transfer</h4>
+<a name="index-transfer"></a>
+
+<div class="example">
+<pre class="example">TRANSFER endtest template inbasket		(library procedure)
+</pre></div>
+
+<p>outputs the result of repeated evaluation of the <var>template</var>.  The template
+is evaluated once for each member of the list <var>inbasket</var>.  <code>TRANSFER</code>
+maintains an <em>outbasket</em> that is initially the empty list.  After each
+evaluation of the template, the resulting value becomes the new
+outbasket.
+</p>
+<p>In the template, the symbol <code>?IN</code> represents the current member from the
+inbasket; the symbol <code>?OUT</code> represents the entire current outbasket.
+Other slot symbols should not be used.
+</p>
+<p>If the first (<var>endtest</var>) input is an empty list, evaluation continues
+until all inbasket members have been used.  If not, the first input must
+be a predicate expression template, and evaluation continues until
+either that template&rsquo;s value is <code>TRUE</code> or the inbasket is used up.
+</p>
+
+
+<hr>
+<a name="MACROS"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERROR-PROCESSING" accesskey="n" rel="next">ERROR PROCESSING</a>, Previous: <a href="usermanual.html#CONTROL-STRUCTURES" accesskey="p" rel="prev">CONTROL STRUCTURES</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Macros"></a>
+<h2 class="chapter">10 Macros</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dMACRO" accesskey="1">dMACRO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dDEFMACRO" accesskey="2">dDEFMACRO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MACROP" accesskey="3">MACROP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MACROEXPAND" accesskey="4">MACROEXPAND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="dMACRO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#dDEFMACRO" accesskey="n" rel="next">dDEFMACRO</a>, Previous: <a href="usermanual.html#MACROS" accesskey="p" rel="prev">MACROS</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002emacro"></a>
+<h3 class="unnumberedsec">.macro</h3>
+<a name="index-_002emacro"></a>
+<a name="index-_002edefmacro"></a>
+
+<div class="example">
+<pre class="example">.MACRO procname :input1 :input2 ...			(special form)
+.DEFMACRO procname text
+</pre></div>
+
+<p>A macro is a special kind of procedure whose output is evaluated as Logo
+instructions in the context of the macro&rsquo;s caller.  <code>.MACRO</code> is exactly
+like <code>TO</code> except that the new procedure becomes a macro; <code>.DEFMACRO</code>
+is exactly like <code>DEFINE</code> with the same exception.
+</p>
+<p>Macros are useful for inventing new control structures comparable to
+<code>REPEAT</code>, <code>IF</code>, and so on.  Such control structures can almost, but
+not quite, be duplicated by ordinary Logo procedures.  For example, here is an
+ordinary procedure version of <code>REPEAT</code>:
+</p>
+<div class="example">
+<pre class="example">to my.repeat :num :instructions
+if :num=0 [stop]
+run :instructions
+my.repeat :num-1 :instructions
+end
+</pre></div>
+
+<p>This version works fine for most purposes, e.g.,
+</p>
+<div class="example">
+<pre class="example">my.repeat 5 [print &quot;hello]
+</pre></div>
+
+<p>But it doesn&rsquo;t work if the instructions to be carried out include
+<code>OUTPUT</code>, <code>STOP</code>, or <code>LOCAL</code>.  For example, consider this
+procedure:
+</p>
+<div class="example">
+<pre class="example">to example
+print [Guess my secret word.  You get three guesses.]
+repeat 3 [type &quot;|?? | ~
+          if readword = &quot;secret [pr &quot;Right! stop]]
+print [Sorry, the word was &quot;secret&quot;!]
+end
+</pre></div>
+
+<p>This procedure works as written, but if <code>MY.REPEAT</code> is used instead of
+<code>REPEAT</code>, it won&rsquo;t work because the <code>STOP</code> will stop
+<code>MY.REPEAT</code> instead of stopping <code>EXAMPLE</code> as desired.
+</p>
+<p>The solution is to make <code>MY.REPEAT</code> a macro.  Instead of actually carrying
+out the computation, a macro must return a list containing Logo
+instructions.  The contents of that list are evaluated as if they
+appeared in place of the call to the macro.  Here&rsquo;s a macro version of
+<code>REPEAT</code>:
+</p>
+<div class="example">
+<pre class="example">.macro my.repeat :num :instructions
+if :num=0 [output []]
+output sentence :instructions ~
+                (list &quot;my.repeat :num-1 :instructions)
+end
+</pre></div>
+
+<p>Every macro is an operation &mdash; it must always output something.  Even in
+the base case, <code>MY.REPEAT</code> outputs an empty instruction list.  To show how
+<code>MY.REPEAT</code> works, let&rsquo;s take the example
+</p>
+<div class="example">
+<pre class="example">my.repeat 5 [print &quot;hello]
+</pre></div>
+
+<p>For this example, <code>MY.REPEAT</code> will output the instruction list
+</p>
+<div class="example">
+<pre class="example">[print &quot;hello my.repeat 4 [print &quot;hello]]
+</pre></div>
+
+<p>Logo then executes these instructions in place of the original invocation of
+<code>MY.REPEAT</code>; this prints <code>hello</code> once and invokes another
+repetition.
+</p>
+<p>The technique just shown, although fairly easy to understand, has the
+defect of slowness because each repetition has to construct an
+instruction list for evaluation.  Another approach is to make <code>MY.REPEAT</code>
+a macro that works just like the non-macro version unless the
+instructions to be repeated include <code>OUTPUT</code> or <code>STOP</code>:
+</p>
+<div class="example">
+<pre class="example">.macro my.repeat :num :instructions
+catch &quot;repeat.catchtag ~
+      [op repeat.done runresult [repeat1 :num :instructions]]
+op []
+end
+
+to repeat1 :num :instructions
+if :num=0 [throw &quot;repeat.catchtag]
+run :instructions
+.maybeoutput repeat1 :num-1 :instructions
+end
+
+to repeat.done :repeat.result
+if emptyp :repeat.result [op [stop]]
+op list &quot;output quoted first :repeat.result
+end
+</pre></div>
+
+<p>If the instructions do not include <code>STOP</code> or <code>OUTPUT</code>, then
+<code>REPEAT1</code> will reach its base case and invoke <code>THROW</code>.  As a result,
+<code>MY.REPEAT</code>&rsquo;s last instruction line will output an empty list, so the
+evaluation of the macro result by the caller will do nothing.  But if a
+<code>STOP</code> or <code>OUTPUT</code> happens, then <code>REPEAT.DONE</code> will output a
+<code>STOP</code> or <code>OUTPUT</code> instruction that will be executed in the
+caller&rsquo;s context.
+</p>
+<p>The macro-defining commands have names starting with a dot because
+macros are an advanced feature of Logo; it&rsquo;s easy to get in trouble by
+defining a macro that doesn&rsquo;t terminate, or by failing to construct the
+instruction list properly.
+</p>
+<p>Lisp users should note that Logo macros are <em>not</em> special forms.  That is,
+the inputs to the macro are evaluated normally, as they would be for any
+other Logo procedure.  It&rsquo;s only the output from the macro that&rsquo;s
+handled unusually.
+</p>
+<p>Here&rsquo;s another example:
+</p>
+<div class="example">
+<pre class="example">.macro localmake :name :value
+output (list &quot;local          ~
+             word &quot;&quot; :name   ~
+             &quot;apply          ~
+             &quot;&quot;make          ~
+             (list :name :value))
+end
+</pre></div>
+
+<p>It&rsquo;s used this way:
+</p>
+<div class="example">
+<pre class="example">to try
+localmake &quot;garply &quot;hello
+print :garply
+end
+</pre></div>
+
+<p><code>LOCALMAKE</code> outputs the list
+</p>
+<div class="display">
+<pre class="display">[local &quot;garply apply &quot;make [garply hello]]
+</pre></div>
+
+<p>The reason for the use of <code>APPLY</code> is to avoid having to decide whether or
+not the second input to <code>MAKE</code> requires a quotation mark before it.  (In
+this case it would &mdash; <code>MAKE &quot;GARPLY &quot;HELLO</code> &mdash; but the quotation mark
+would be wrong if the value were a list.)
+</p>
+<p>It&rsquo;s often convenient to use the <tt>`</tt> function to construct the instruction
+list:
+</p>
+<div class="example">
+<pre class="example">.macro localmake :name :value
+op `[local ,[word &quot;&quot; :name] apply &quot;make [,[:name] ,[:value]]]
+end
+</pre></div>
+
+<p>On the other hand, <tt>`</tt> is pretty slow, since it&rsquo;s tree recursive and
+written in Logo.
+</p>
+<p>See <a href="usermanual.html#TO">TO</a> ,
+<a href="usermanual.html#DEFINE">DEFINE</a> ,
+<a href="usermanual.html#APPLY">APPLY</a> ,
+<a href="usermanual.html#STOP">STOP</a> ,
+<a href="usermanual.html#OUTPUT">OUTPUT</a> .
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#dDEFMACRO" accesskey="1">dDEFMACRO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MACROP" accesskey="2">MACROP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#MACROEXPAND" accesskey="3">MACROEXPAND</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="dDEFMACRO"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MACROP" accesskey="n" rel="next">MACROP</a>, Previous: <a href="usermanual.html#dMACRO" accesskey="p" rel="prev">dMACRO</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="g_t_002edefmacro"></a>
+<h4 class="unnumberedsubsec">.defmacro</h4>
+
+<p>See <a href="usermanual.html#dMACRO">dMACRO</a> .
+</p>
+<hr>
+<a name="MACROP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#MACROEXPAND" accesskey="n" rel="next">MACROEXPAND</a>, Previous: <a href="usermanual.html#dDEFMACRO" accesskey="p" rel="prev">dDEFMACRO</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="macrop"></a>
+<h4 class="unnumberedsubsec">macrop</h4>
+<a name="index-macrop"></a>
+<a name="index-macro_003f"></a>
+
+<div class="example">
+<pre class="example">MACROP name
+MACRO? name
+</pre></div>
+
+<p>outputs <code>TRUE</code> if its input is the name of a macro.
+</p>
+<hr>
+<a name="MACROEXPAND"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#MACROP" accesskey="p" rel="prev">MACROP</a>, Up: <a href="usermanual.html#MACROS" accesskey="u" rel="up">MACROS</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="macroexpand"></a>
+<h4 class="unnumberedsubsec">macroexpand</h4>
+<a name="index-macroexpand"></a>
+
+<div class="example">
+<pre class="example">MACROEXPAND expr				(library procedure)
+</pre></div>
+
+<p>takes as its input a Logo expression that invokes a macro (that is, one
+that begins with the name of a macro) and outputs the the Logo
+expression into which the macro would translate the input expression.
+</p>
+<div class="example">
+<pre class="example">.macro localmake :name :value
+op `[local ,[word &quot;&quot; :name] apply &quot;make [,[:name] ,[:value]]]
+end
+
+? show macroexpand [localmake &quot;pi 3.14159]
+[local &quot;pi apply &quot;make [pi 3.14159]]
+</pre></div>
+
+
+
+<hr>
+<a name="ERROR-PROCESSING"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="n" rel="next">SPECIAL VARIABLES</a>, Previous: <a href="usermanual.html#MACROS" accesskey="p" rel="prev">MACROS</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Error-Processing"></a>
+<h2 class="chapter">11 Error Processing</h2>
+
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERROR-CODES" accesskey="1">ERROR CODES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<p>If an error occurs, Logo takes the following steps.  First, if there is an
+available variable named <code>ERRACT</code>, Logo takes its value as an
+instructionlist and runs the instructions.  The operation <code>ERROR</code> may be
+used within the instructions (once) to examine the error condition.  If the
+instructionlist invokes <code>PAUSE</code>, the error message is printed before the
+pause happens.  Certain errors are <em>recoverable</em>; for one of those errors,
+if the instructionlist outputs a value, that value is used in place of the
+expression that caused the error.  (If <code>ERRACT</code> invokes <code>PAUSE</code> and
+the user then invokes <code>CONTINUE</code> with an input, that input becomes the
+output from <code>PAUSE</code> and therefore the output from the <code>ERRACT</code>
+instructionlist.)
+</p>
+<p>It is possible for an <code>ERRACT</code> instructionlist to produce an
+inappropriate value or no value where one is needed.  As a result, the same
+error condition could recur forever because of this mechanism.  To avoid that
+danger, if the same error condition occurs twice in a row from an
+<code>ERRACT</code> instructionlist without user interaction, the message
+&lsquo;<samp>Erract loop</samp>&rsquo; is printed and control returns to toplevel.  &quot;Without user
+interaction&quot; means that if <code>ERRACT</code> invokes <code>PAUSE</code> and the user
+provides an incorrect value, this loop prevention mechanism does not take
+effect and the user gets to try again.
+</p>
+<p>During the running of the <code>ERRACT</code> instructionlist, <code>ERRACT</code> is
+locally unbound, so an error in the <code>ERRACT</code> instructions themselves will
+not cause a loop.  In particular, an error during a pause will not cause a
+pause-within-a-pause unless the user reassigns the value <code>[PAUSE]</code> to
+<code>ERRACT</code> during the pause.  But such an error will not return to
+toplevel; it will remain within the original pause loop.
+</p>
+<p>If there is no available <code>ERRACT</code> value, Logo handles the error by
+generating an internal <tt>THROW&nbsp;&quot;ERROR</tt><!-- /@w -->.  (A user program can also
+generate an error condition deliberately by invoking <code>THROW</code>.)  If this
+throw is not caught by a <tt>CATCH&nbsp;&quot;ERROR</tt><!-- /@w --> in the user program, it is
+eventually caught either by the toplevel instruction loop or by a pause loop,
+which prints the error message. An invocation of <tt>CATCH&nbsp;&quot;ERROR</tt><!-- /@w --> in a
+user program locally unbinds <code>ERRACT</code>, so the effect is that whichever of
+<code>ERRACT</code> and <tt>CATCH&nbsp;&quot;ERROR</tt><!-- /@w --> is more local will take precedence.
+</p>
+<p>If a floating point overflow occurs during an arithmetic operation, or a
+two-input mathematical function (like <code>POWER</code>) is invoked with an illegal
+combination of inputs, the &lsquo;<samp>doesn't like</samp>&rsquo; message refers to the second
+operand, but should be taken as meaning the combination.
+</p>
+<p>See <a href="usermanual.html#ERRACT">ERRACT</a> ,
+<a href="usermanual.html#THROW">THROW</a> ,
+<a href="usermanual.html#ERROR">ERROR</a> ,
+<a href="usermanual.html#CATCH">CATCH</a> ,
+<a href="usermanual.html#PAUSE">PAUSE</a> ,
+<a href="usermanual.html#CONTINUE">CONTINUE</a> .
+</p>
+<hr>
+<a name="ERROR-CODES"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#ERROR-PROCESSING" accesskey="p" rel="prev">ERROR PROCESSING</a>, Up: <a href="usermanual.html#ERROR-PROCESSING" accesskey="u" rel="up">ERROR PROCESSING</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Error-Codes"></a>
+<h3 class="section">11.1 Error Codes</h3>
+<a name="index-errors"></a>
+
+<p>Here are the numeric codes that appear as the first member of the list
+output by <code>ERROR</code> when an error is caught, with the corresponding messages.
+Some messages may have two different codes depending on whether or not
+the error is recoverable (that is, a substitute value can be provided
+through the <code>ERRACT</code> mechanism) in the specific context.  Some messages are
+warnings rather than errors; these will not be caught.  Errors 0 and 32 are
+so bad that Logo exits immediately.
+</p>
+<div class="example">
+<pre class="example">  0	Fatal internal error&nbsp;&nbsp;<span class="roman">(can&rsquo;t be caught)</span>
+  1	Out of memory
+  2	Stack overflow
+  3	Turtle out of bounds
+  4	<var>proc</var> doesn't like <var>datum</var> as input&nbsp;&nbsp;<span class="roman">(not recoverable)</span>
+  5	<var>proc</var> didn't output to <var>proc</var>
+  6	Not enough inputs to <var>proc</var>
+  7	<code>proc</code> doesn't like <code>datum</code> as input&nbsp;&nbsp;<span class="roman">(recoverable)</span>
+  8	Too much inside ()'s
+  9 	You don't say what to do with <var>datum</var>
+ 10	')' not found
+ 11	<var>var</var> has no value
+ 12	Unexpected ')'
+ 13	I don't know how to <var>proc</var>&nbsp;&nbsp;<span class="roman">(recoverable)</span>
+ 14	Can't find catch tag for <var>throwtag</var>
+ 15	<var>proc</var> is already defined
+ 16	Stopped
+ 17	Already dribbling
+ 18	File system error
+ 19	Assuming you mean IFELSE, not IF&nbsp;&nbsp;<span class="roman">(warning only)</span>
+ 20	<var>var</var> shadowed by local in procedure call&nbsp;&nbsp;<span class="roman">(warning only)</span>
+ 21	Throw &quot;Error
+ 22	<var>proc</var> is a primitive
+ 23	Can't use TO inside a procedure
+ 24	I don't know how to <var>proc</var>&nbsp;&nbsp;<span class="roman">(not recoverable)</span>
+ 25	IFTRUE/IFFALSE without TEST
+ 26	Unexpected ']'
+ 27	Unexpected '}'
+ 28	Couldn't initialize graphics
+ 29	Macro returned <var>value</var> instead of a list
+ 30	You don't say what to do with <var>value</var>
+ 31	Can only use STOP or OUTPUT inside a procedure
+ 32	APPLY doesn't like <var>badthing</var> as input
+ 33	END inside multi-line instruction
+ 34	Really out of memory&nbsp;&nbsp;<span class="roman">(can&rsquo;t be caught)</span>
+ 35	user-generated error message (THROW &quot;ERROR <var>message</var>)
+ 36	END inside multi-line instruction
+ 37	Bad default expression for optional input: <var>expr</var>
+ 38	Can't use OUTPUT or STOP inside RUNRESULT
+ 39 	Assuming you meant 'FD 100', not FD100&nbsp;&nbsp;<span class="roman">(or similar)</span>
+ 40	I can't open file <var>filename</var>
+ 41	File <var>filename</var> already open
+ 42	File <var>filename</var> not open
+ 43	Runlist [<var>expr</var> <var>expr</var>] has more than one expression.
+</pre></div>
+
+
+<hr>
+<a name="SPECIAL-VARIABLES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#INTERNATIONALIZATION" accesskey="n" rel="next">INTERNATIONALIZATION</a>, Previous: <a href="usermanual.html#ERROR-PROCESSING" accesskey="p" rel="prev">ERROR PROCESSING</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Special-Variables"></a>
+<h2 class="chapter">12 Special Variables</h2>
+
+<p>Logo takes special action if any of the following variable names exists.
+They follow the normal scoping rules, so a procedure can locally set one
+of them to limit the scope of its effect.  Initially, no variables exist
+except for <code>ALLOWGETSET</code>, <code>CASEIGNOREDP</code>, and
+<code>UNBURYONEDIT</code>, which are <code>TRUE</code> and buried.
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ALLOWGETSET" accesskey="1">ALLOWGETSET</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BUTTONACT" accesskey="2">BUTTONACT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CASEIGNOREDP" accesskey="3">CASEIGNOREDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COMMANDLINE" accesskey="4">COMMANDLINE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERRACT" accesskey="5">ERRACT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FULLPRINTP" accesskey="6">FULLPRINTP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#KEYACT" accesskey="7">KEYACT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOADNOISILY" accesskey="8">LOADNOISILY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="9">PRINTDEPTHLIMIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRINTWIDTHLIMIT">PRINTWIDTHLIMIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REDEFP">REDEFP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#STARTUP">STARTUP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNBURYONEDIT">UNBURYONEDIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#USEALTERNATENAMES">USEALTERNATENAMES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOGOVERSION">LOGOVERSION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOGOPLATFORM">LOGOPLATFORM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="ALLOWGETSET"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#BUTTONACT" accesskey="n" rel="next">BUTTONACT</a>, Previous: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="p" rel="prev">SPECIAL VARIABLES</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="allowgetset"></a>
+<h3 class="unnumberedsec">allowgetset</h3>
+<a name="index-allowgetset"></a>
+
+<div class="example">
+<pre class="example">ALLOWGETSET                           (variable)
+</pre></div>
+
+<p>if <code>TRUE</code>, indicates that an attempt to use a procedure that doesn&rsquo;t exist
+should be taken as an implicit getter or setter procedure (setter if the
+first three letters of the name are <code>SET</code>) for a variable of the same name
+(without the <code>SET</code> if appropriate).
+</p>
+<table class="menu" border="0" cellspacing="0">
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#BUTTONACT" accesskey="1">BUTTONACT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#CASEIGNOREDP" accesskey="2">CASEIGNOREDP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#COMMANDLINE" accesskey="3">COMMANDLINE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#ERRACT" accesskey="4">ERRACT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#FULLPRINTP" accesskey="5">FULLPRINTP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#KEYACT" accesskey="6">KEYACT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOADNOISILY" accesskey="7">LOADNOISILY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="8">PRINTDEPTHLIMIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#PRINTWIDTHLIMIT" accesskey="9">PRINTWIDTHLIMIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#REDEFP">REDEFP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#STARTUP">STARTUP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#UNBURYONEDIT">UNBURYONEDIT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#USEALTERNATENAMES">USEALTERNATENAMES</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOGOVERSION">LOGOVERSION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="usermanual.html#LOGOPLATFORM">LOGOPLATFORM</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
+</td></tr>
+</table>
+
+<hr>
+<a name="BUTTONACT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#CASEIGNOREDP" accesskey="n" rel="next">CASEIGNOREDP</a>, Previous: <a href="usermanual.html#ALLOWGETSET" accesskey="p" rel="prev">ALLOWGETSET</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="buttonact"></a>
+<h4 class="unnumberedsubsec">buttonact</h4>
+<a name="index-buttonact"></a>
+
+<div class="example">
+<pre class="example">BUTTONACT                           (variable)
+</pre></div>
+
+<p>if nonempty, should be an instruction list that will be evaluated
+whenever a mouse button is pressed.  Note that the user may have
+released the button before the instructions are evaluated.  <code>BUTTON</code>
+will still output which button was most recently pressed.  <code>CLICKPOS</code>
+will output the position of the mouse cursor at the moment the
+button was pressed; this may be different from <code>MOUSEPOS</code> if the
+user moves the mouse after clicking.
+</p>
+<p>Note that it&rsquo;s possible for the user to press a button during the
+evaluation of the instruction list.  If this would confuse your
+program, prevent it by temporarily setting <code>BUTTONACT</code> to the empty
+list.  One easy way to do that is the following:
+</p>
+<div class="example">
+<pre class="example">make &quot;buttonact [button.action]
+
+to button.action [:buttonact []]
+... ; whatever you want the button to do
+end
+</pre></div>
+
+<hr>
+<a name="CASEIGNOREDP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#COMMANDLINE" accesskey="n" rel="next">COMMANDLINE</a>, Previous: <a href="usermanual.html#BUTTONACT" accesskey="p" rel="prev">BUTTONACT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="caseignoredp"></a>
+<h4 class="unnumberedsubsec">caseignoredp</h4>
+<a name="index-caseignoredp"></a>
+
+<div class="example">
+<pre class="example">CASEIGNOREDP                                (variable)
+</pre></div>
+
+<p>if <code>TRUE</code>, indicates that lower case and upper case letters should be
+considered equal by <code>EQUALP</code>, <code>BEFOREP</code>, <code>MEMBERP</code>, etc.  Logo
+initially makes this variable <code>TRUE</code>, and buries it.
+</p>
+<p>See <a href="usermanual.html#EQUALP">EQUALP</a> ,
+<a href="usermanual.html#BEFOREP">BEFOREP</a> ,
+<a href="usermanual.html#MEMBERP">MEMBERP</a> .
+</p>
+<hr>
+<a name="COMMANDLINE"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#ERRACT" accesskey="n" rel="next">ERRACT</a>, Previous: <a href="usermanual.html#CASEIGNOREDP" accesskey="p" rel="prev">CASEIGNOREDP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="commandline"></a>
+<h4 class="unnumberedsubsec">commandline</h4>
+<a name="index-commandline"></a>
+
+<div class="example">
+<pre class="example">COMMANDLINE                                (variable)
+</pre></div>
+
+<p>contains any text appearing after a hyphen on the command line used
+to start Logo.
+</p>
+<hr>
+<a name="ERRACT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#FULLPRINTP" accesskey="n" rel="next">FULLPRINTP</a>, Previous: <a href="usermanual.html#COMMANDLINE" accesskey="p" rel="prev">COMMANDLINE</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="erract"></a>
+<h4 class="unnumberedsubsec">erract</h4>
+<a name="index-erract"></a>
+
+<div class="example">
+<pre class="example">ERRACT                                      (variable)
+</pre></div>
+
+<p>an instructionlist that will be run in the event of an error.  Typically
+has the value <code>[PAUSE]</code> to allow interactive debugging.
+</p>
+<p>See <a href="usermanual.html#PAUSE">PAUSE</a> .
+</p>
+<hr>
+<a name="FULLPRINTP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#KEYACT" accesskey="n" rel="next">KEYACT</a>, Previous: <a href="usermanual.html#ERRACT" accesskey="p" rel="prev">ERRACT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="fullprintp"></a>
+<h4 class="unnumberedsubsec">fullprintp</h4>
+<a name="index-fullprintp"></a>
+
+<div class="example">
+<pre class="example">FULLPRINTP                               (variable)
+</pre></div>
+
+<p>if <code>TRUE</code>, then words that were created using backslash or vertical bar
+(to include characters that would otherwise not be treated as part of a
+word) are printed with the backslashes or vertical bars shown, so that
+the printed result could be re-read by Logo to produce the same value.
+If FULLPRINTP is <code>TRUE</code> then the empty word (however it was created)
+prints as <code>||</code>.  (Otherwise it prints as nothing at all.)
+</p>
+<hr>
+<a name="KEYACT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOADNOISILY" accesskey="n" rel="next">LOADNOISILY</a>, Previous: <a href="usermanual.html#FULLPRINTP" accesskey="p" rel="prev">FULLPRINTP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="keyact"></a>
+<h4 class="unnumberedsubsec">keyact</h4>
+<a name="index-keyact"></a>
+
+<div class="example">
+<pre class="example">KEYACT                               (variable)
+</pre></div>
+
+<p>if nonempty, should be an instruction list that will be evaluated
+whenever a key is pressed on the keyboard.  The instruction list
+can use <code>READCHAR</code> to find out what key was pressed.  Note that only
+keys that produce characters qualify; pressing <code>SHIFT</code> or <code>CONTROL</code>
+alone will not cause <code>KEYACT</code> to be evaluated.
+</p>
+<p>Note that it&rsquo;s possible for the user to press a key during the
+evaluation of the instruction list.  If this would confuse your
+program, prevent it by temporarily setting <code>KEYACT</code> to the empty
+list.  One easy way to do that is the following:
+</p>
+<div class="example">
+<pre class="example">make &quot;keyact [key.action]
+
+to key.action [:keyact []]
+... ; whatever you want the key to do
+end
+</pre></div>
+
+<hr>
+<a name="LOADNOISILY"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="n" rel="next">PRINTDEPTHLIMIT</a>, Previous: <a href="usermanual.html#KEYACT" accesskey="p" rel="prev">KEYACT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="loadnoisily"></a>
+<h4 class="unnumberedsubsec">loadnoisily</h4>
+<a name="index-loadnoisily"></a>
+
+<div class="example">
+<pre class="example">LOADNOISILY                                 (variable)
+</pre></div>
+
+<p>if <code>TRUE</code>, prints the names of procedures defined when loading from a file
+(including the temporary file made by <code>EDIT</code>).
+</p>
+<p>See <a href="usermanual.html#EDIT">EDIT</a> .
+</p>
+<hr>
+<a name="PRINTDEPTHLIMIT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#PRINTWIDTHLIMIT" accesskey="n" rel="next">PRINTWIDTHLIMIT</a>, Previous: <a href="usermanual.html#LOADNOISILY" accesskey="p" rel="prev">LOADNOISILY</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="printdepthlimit"></a>
+<h4 class="unnumberedsubsec">printdepthlimit</h4>
+<a name="index-printdepthlimit"></a>
+
+<div class="example">
+<pre class="example">PRINTDEPTHLIMIT                             (variable)
+</pre></div>
+
+<p>if a nonnegative integer, indicates the maximum depth of sublist
+structure that will be printed by <code>PRINT</code>, etc.
+</p>
+<p>See <a href="usermanual.html#PRINT">PRINT</a> .
+</p>
+<hr>
+<a name="PRINTWIDTHLIMIT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#REDEFP" accesskey="n" rel="next">REDEFP</a>, Previous: <a href="usermanual.html#PRINTDEPTHLIMIT" accesskey="p" rel="prev">PRINTDEPTHLIMIT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="printwidthlimit"></a>
+<h4 class="unnumberedsubsec">printwidthlimit</h4>
+<a name="index-printwidthlimit"></a>
+
+<div class="example">
+<pre class="example">PRINTWIDTHLIMIT                             (variable)
+</pre></div>
+
+<p>if a nonnegative integer, indicates the maximum number of members in any
+one list that will be printed by <code>PRINT</code>, etc.
+</p>
+<p>See <a href="usermanual.html#PRINT">PRINT</a> .
+</p>
+<hr>
+<a name="REDEFP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#STARTUP" accesskey="n" rel="next">STARTUP</a>, Previous: <a href="usermanual.html#PRINTWIDTHLIMIT" accesskey="p" rel="prev">PRINTWIDTHLIMIT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="redefp"></a>
+<h4 class="unnumberedsubsec">redefp</h4>
+<a name="index-redefp"></a>
+
+<div class="example">
+<pre class="example">REDEFP                                      (variable)
+</pre></div>
+
+<p>if <code>TRUE</code>, allows primitives to be erased (<code>ERASE</code>) or redefined
+(<code>COPYDEF</code>).
+</p>
+<p>See <a href="usermanual.html#ERASE">ERASE</a> ,
+<a href="usermanual.html#COPYDEF">COPYDEF</a> .
+</p>
+<hr>
+<a name="STARTUP"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#UNBURYONEDIT" accesskey="n" rel="next">UNBURYONEDIT</a>, Previous: <a href="usermanual.html#REDEFP" accesskey="p" rel="prev">REDEFP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="startup"></a>
+<h4 class="unnumberedsubsec">startup</h4>
+<a name="index-startup"></a>
+
+<div class="example">
+<pre class="example">STARTUP                                     (variable)
+</pre></div>
+
+<p>if assigned a list value in a file loaded by <code>LOAD</code>, that value is run as
+an instructionlist after the loading.
+</p>
+<p>See <a href="usermanual.html#LOAD">LOAD</a> .
+</p>
+<hr>
+<a name="UNBURYONEDIT"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#USEALTERNATENAMES" accesskey="n" rel="next">USEALTERNATENAMES</a>, Previous: <a href="usermanual.html#STARTUP" accesskey="p" rel="prev">STARTUP</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="unburyonedit"></a>
+<h4 class="unnumberedsubsec">unburyonedit</h4>
+<a name="index-unburyonedit"></a>
+
+<div class="example">
+<pre class="example">UNBURYONEDIT                            (variable)
+</pre></div>
+
+<p>if <code>TRUE</code>, causes any procedure defined during <code>EDIT</code> or <code>LOAD</code>
+to be unburied, so that it will be saved by a later <code>SAVE</code>.  Files that
+want to define and bury procedures must do it in that order.
+</p>
+<p>See <a href="usermanual.html#EDIT">EDIT</a> ,
+See <a href="usermanual.html#LOAD">LOAD</a> ,
+See <a href="usermanual.html#SAVE">SAVE</a> .
+</p>
+<hr>
+<a name="USEALTERNATENAMES"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOGOVERSION" accesskey="n" rel="next">LOGOVERSION</a>, Previous: <a href="usermanual.html#UNBURYONEDIT" accesskey="p" rel="prev">UNBURYONEDIT</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="usealternatenames"></a>
+<h4 class="unnumberedsubsec">usealternatenames</h4>
+<a name="index-usealternatenames"></a>
+
+<div class="example">
+<pre class="example">USEALTERNATENAMES					(variable)
+</pre></div>
+
+<p>if <code>TRUE</code>, causes Logo to generate non-English words (from the
+<samp>Messages</samp> file) instead of <code>TRUE</code>, <code>FALSE</code>, <code>END</code>, etc.
+</p>
+
+
+<p>Logo provides the following buried variables that can be used by programs:
+</p>
+<hr>
+<a name="LOGOVERSION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#LOGOPLATFORM" accesskey="n" rel="next">LOGOPLATFORM</a>, Previous: <a href="usermanual.html#USEALTERNATENAMES" accesskey="p" rel="prev">USEALTERNATENAMES</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="logoversion"></a>
+<h4 class="unnumberedsubsec">logoversion</h4>
+<a name="index-logoversion"></a>
+
+<div class="example">
+<pre class="example">LOGOVERSION                                   (variable)
+</pre></div>
+
+<p>a real number indicating the Logo version number, e.g., 5.5
+</p>
+<hr>
+<a name="LOGOPLATFORM"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#LOGOVERSION" accesskey="p" rel="prev">LOGOVERSION</a>, Up: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="u" rel="up">SPECIAL VARIABLES</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="logoplatform"></a>
+<h4 class="unnumberedsubsec">logoplatform</h4>
+<a name="index-logoplatform"></a>
+
+<div class="example">
+<pre class="example">LOGOPLATFORM                                   (variable)
+</pre></div>
+
+<p>one of the following words: <code>wxWidgets</code>, <code>X11</code>, <code>Windows</code>,
+or <code>Unix-nographics</code>.
+</p>
+
+
+<hr>
+<a name="INTERNATIONALIZATION"></a>
+<div class="header">
+<p>
+Next: <a href="usermanual.html#INDEX" accesskey="n" rel="next">INDEX</a>, Previous: <a href="usermanual.html#SPECIAL-VARIABLES" accesskey="p" rel="prev">SPECIAL VARIABLES</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="Internationalization"></a>
+<h2 class="chapter">13 Internationalization</h2>
+
+<p>Berkeley Logo has limited support for non-English-speaking users.
+Alas, there is no Unicode support, and high-bit-on ASCII codes work in
+some contexts but not others.
+</p>
+<p>If you want to translate Berkeley Logo for use with another language,
+there are three main things you have to do:
+</p>
+<div class="example">
+<pre class="example">1. Primitive names
+2. Error (and other) messages
+3. Documentation
+</pre></div>
+
+<p>For primitive names, the easiest thing is to provide a startup file that
+defines aliases for the English primitive names, using <code>COPYDEF</code>:
+</p>
+<div class="example">
+<pre class="example">COPYDEF &quot;AVANT &quot;FORWARD
+</pre></div>
+
+<p>This should take care of it, unless your language&rsquo;s name for one primitive
+is spelled like the English name of a different primitive.  In that case
+you have to turn <code>REDEFP</code> on and be sure to copy the non-conflicting name
+before overwriting the conflicting one!
+</p>
+<p>&quot;Primitives&quot; that are actually in the Logo library, of course, can just
+be replaced or augmented with native-language-named Logo procedures and
+filenames.
+</p>
+<p>Of course Logo programs will still not look like your native language if
+the word order is dramatically different, especially if you don&rsquo;t put
+verbs before their objects.
+</p>
+<p>For error messages, there is a file named <samp>Messages</samp> in the
+<samp>logolib</samp> directory with texts of messages, one per line.  You can
+replace this with a file for your own language.  Do not add, delete, or
+reorder lines; Logo finds messages by line number.  The sequences <code>%p</code>,
+<code>%s</code>, and <code>%t</code> in these messages represent variable parts of the
+message and should not be translated.  (%p <code>PRINT</code>s the variable part,
+while %s <code>SHOW</code>s it &ndash; that is, the difference is about whether or not
+brackets are shown surrounding a list.  %t means that the variable part is a C
+text string rather than a Logo object.)  If you want to change the order of
+two variable parts (no reorderable message has more than two), you would for
+example replace the line
+</p>
+<div class="example">
+<pre class="example">%p doesn't like %s as input
+</pre></div>
+
+<p>with
+</p>
+<div class="example">
+<pre class="example">%+s is a lousy input to %p
+</pre></div>
+
+<p>The plus sign tells the message printer to reverse the order; you must
+reverse the order of %p and %s, if both are used, to match.  The plus
+sign goes just after the first percent sign in the message, which might
+not be at the beginning of the line.  The sequence <code>\n</code> in a message
+represents a newline; don&rsquo;t be fooled into thinking that the <code>n</code> is part
+of the following word.
+</p>
+<p>Some messages appear twice in the file; this isn&rsquo;t a mistake.  The two spaces
+before <code>to</code> in <code>I don't know how\ \ to</code> aren&rsquo;t a mistake either.
+The message containing just <code>%p</code> is for user-provided error messages in
+<code>THROW&nbsp;&quot;ERROR</code><!-- /@w -->.  The message &quot;<code>\ \ in %s\n%s</code>&quot; is the part of all
+error messages that indicates where the error occurred if it was inside a
+procedure; you might want to change the word <code>in</code> to your language.  
+<code>%s&nbsp;defined\n</code><!-- /@w --> is what <code>LOAD</code> prints for each procedure defined
+if the variable <code>LOADNOISILY</code> is <code>TRUE</code>.
+&quot;<code>to&nbsp;%p\nend\n\n</code>&quot;<!-- /@w --> is what <code>EDIT</code> puts in the temporary file if
+you ask to edit a procedure that isn&rsquo;t already defined.
+</p>
+<p>Also in the <samp>Messages</samp> file are lines containing only one word each; the
+first of these is the word <code>true</code>.  Some of these words are recognized by
+Logo in user input; some are generated by Logo; some are both.  For example,
+the words <code>TRUE</code> and <code>FALSE</code> are recognized as Boolean values by
+<code>IF</code> and <code>IFELSE</code>, and are also generated by Logo as outputs from
+the primitive predicates such as <code>EQUALP</code>.  The word <code>END</code> is
+recognized as the end of a procedure definition, and may be generated when
+Logo reconstructs a procedure body for <code>PO</code> or <code>EDIT</code>.  I&rsquo;ve used
+capital letters in this paragraph for easier reading, but the words in the
+<samp>Messages</samp> file should be in lower case.
+</p>
+<p>If you replace these with non-English words, Logo will <em>recognize</em> both the
+English names and your alternate names.  For example, if you replace the
+word <code>true</code> with <code>vrai</code> then Logo will understand both of these:
+</p>
+<div class="example">
+<pre class="example">IF &quot;TRUE [PRINT &quot;YES]
+IF &quot;VRAI [PRINT &quot;YES]
+</pre></div>
+
+<p>The variable <code>UseAlternateNames</code> determines whether Logo will
+<em>generate</em> other-language names &ndash; for example, whether predicate
+functions return the other-language alternates for <code>TRUE</code> and
+<code>FALSE</code>.  This variable is <code>FALSE</code> by default, meaning that the
+English words will be generated.
+</p>
+<p>You might wish to have English-named predicate functions generate English
+<code>TRUE</code> and <code>FALSE</code>, while other-language-named predicates generate
+the alternate words.  This can be done by leaving <code>UseAlternateNames</code>
+false, and instead of defining the other-language predicates with
+<code>COPYDEF</code>, do it this way:
+</p>
+<div class="example">
+<pre class="example">to french.boolean :bool
+if equalp :bool &quot;true [output &quot;vrai]
+if equalp :bool &quot;false [output &quot;faux]
+output :bool	; shouldn't happen
+end
+
+to make.french.predicate :french :english :arity
+define :french `[[[inputs] ,[:arity]]
+                 [output french.boolean
+			    apply ,[word &quot;&quot; :english] :inputs]]
+end
+
+? make.french.predicate &quot;egal? &quot;equal? 2
+? pr egal? 3 4
+faux
+? pr egal? 4 4
+vrai
+? pr equal? 3 4
+false
+? pr equal? 4 4
+true
+</pre></div>
+
+<p>The third input to <code>make.french.predicate</code> is the number of inputs that
+the predicate expects.  This solution isn&rsquo;t quite perfect because the infix
+predicates (<code>=</code>, <code>&lt;</code>, <code>&gt;</code>) will still output in English.  If
+you want them to generate alternate-language words, set
+<code>UseAlternateNames</code> to <code>TRUE</code> instead.
+</p>
+<p>Some of the words in this section of the <samp>Messages</samp> file are names of
+Logo primitives (<code>OUTPUT</code>, <code>STOP</code>, <code>GOTO</code>, <code>TAG</code>,
+<code>IF</code>, <code>IFELSE</code>, <code>TO</code>, <code>.MACRO</code>).  To translate these
+names, you must use <code>COPYDEF</code> as described earlier, in addition to
+changing the names in <samp>Messages</samp>.  You should be consistent in these two
+steps.  Don&rsquo;t forget the period in <code>.macro</code>!
+</p>
+<p>For documentation, there are two kinds: this manual and the help files.
+The latter are generated automatically from this manual if you have a
+Unix system, so in that case you need only translate this manual,
+maintaining the format.  (The automatic helpfile generator notices
+things like capital letters, tabs, hyphens, and equal signs at the
+beginnings of lines.)  The program <code>makefile.c</code> may require modification
+because a few of the primitive names are special cases (e.g., <code>LOG10</code> is
+the only name with digits included).
+</p>
+<p>If you don&rsquo;t have Unix tools, you can just translate each helpfile
+individually.  A period in a primitive name is represented as a <code>D</code> in
+the filename; there are no files for question marks because the <code>HELP</code>
+command looks for the file named after the corresponding primitive
+that ends in <code>P</code>.
+</p>
+
+<hr>
+<a name="INDEX"></a>
+<div class="header">
+<p>
+Previous: <a href="usermanual.html#INTERNATIONALIZATION" accesskey="p" rel="prev">INTERNATIONALIZATION</a>, Up: <a href="usermanual.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="usermanual.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="usermanual.html#INDEX" title="Index" rel="index">Index</a>]</p>
+</div>
+<a name="INDEX-1"></a>
+<h2 class="unnumbered">INDEX</h2>
+
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-1"><b>*</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-2"><b>+</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-3"><b>-</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-4"><b>.</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-5"><b>/</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-6"><b>&lt;</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-7"><b>=</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-8"><b>&gt;</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-9"><b>`</b></a>
+ &nbsp; 
+<br>
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-B"><b>B</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-C"><b>C</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-D"><b>D</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-E"><b>E</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-F"><b>F</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-G"><b>G</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-H"><b>H</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-I"><b>I</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-K"><b>K</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-L"><b>L</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-M"><b>M</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-N"><b>N</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-O"><b>O</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-P"><b>P</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Q"><b>Q</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-R"><b>R</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-S"><b>S</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-T"><b>T</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-U"><b>U</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-V"><b>V</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-W"><b>W</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-X"><b>X</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Y"><b>Y</b></a>
+ &nbsp; 
+</td></tr></table>
+<table class="index-cp" border="0">
+<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-1">*</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002a">*</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRODUCT">PRODUCT</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-2">+</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002b">+</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SUM">SUM</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-3">-</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002d">-</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DIFFERENCE">DIFFERENCE</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-4">.</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002edefmacro">.defmacro</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#dMACRO">dMACRO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002eeq">.eq</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#dEQ">dEQ</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002emacro">.macro</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#dMACRO">dMACRO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002emaybeoutput">.maybeoutput</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#dMAYBEOUTPUT">dMAYBEOUTPUT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetbf">.setbf</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#dSETBF">dSETBF</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetfirst">.setfirst</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#dSETFIRST">dSETFIRST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetitem">.setitem</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#dSETITEM">dSETITEM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002esetsegmentsize">.setsegmentsize</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#g_t_002eSETSEGMENTSIZE">.SETSEGMENTSIZE</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-5">/</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_002f">/</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#QUOTIENT">QUOTIENT</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-6">&lt;</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_003c">&lt;</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LESSP">LESSP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_003c_003d">&lt;=</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LESSEQUALP">LESSEQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_003c_003e">&lt;&gt;</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NOTEQUALP">NOTEQUALP</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-7">=</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_003d">=</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EQUALP">EQUALP</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-8">&gt;</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_003e">&gt;</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GREATERP">GREATERP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_003e_003d">&gt;=</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GREATEREQUALP">GREATEREQUALP</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_symbol-9">`</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-_0060">&lsquo;</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#back_002dquote">back-quote</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-A">A</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-allopen">allopen</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ALLOPEN">ALLOPEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-AllowGetSet">AllowGetSet</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">GETTER/SETTER VARIBLE SYNTAX</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-allowgetset">allowgetset</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ALLOWGETSET">ALLOWGETSET</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-and">and</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#AND">AND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-apply">apply</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#APPLY">APPLY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-arc">arc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ARC">ARC</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-arctan">arctan</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ARCTAN">ARCTAN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-arity">arity</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ARITY">ARITY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-array">array</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ARRAY">ARRAY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-array_003f">array?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ARRAYP">ARRAYP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-arrayp">arrayp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ARRAYP">ARRAYP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-arraytolist">arraytolist</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ARRAYTOLIST">ARRAYTOLIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ascii">ascii</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ASCII">ASCII</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ashift">ashift</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ASHIFT">ASHIFT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ask">ask</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ASK">ASK</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-B">B</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-back">back</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BACK">BACK</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-background">background</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BACKGROUND">BACKGROUND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-before_003f">before?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BEFOREP">BEFOREP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-beforep">beforep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BEFOREP">BEFOREP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bf">bf</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTFIRST">BUTFIRST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bfs">bfs</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTFIRSTS">BUTFIRSTS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bg">bg</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BACKGROUND">BACKGROUND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bitand">bitand</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BITAND">BITAND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bitnot">bitnot</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BITNOT">BITNOT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bitor">bitor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BITOR">BITOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bitxor">bitxor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BITXOR">BITXOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bk">bk</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BACK">BACK</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bl">bl</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTLAST">BUTLAST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-buried">buried</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BURIED">BURIED</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-buried_003f">buried?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BURIEDP">BURIEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-buriedp">buriedp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BURIEDP">BURIEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bury">bury</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BURY">BURY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-buryall">buryall</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BURYALL">BURYALL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-buryname">buryname</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BURYNAME">BURYNAME</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-butfirst">butfirst</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTFIRST">BUTFIRST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-butfirsts">butfirsts</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTFIRSTS">BUTFIRSTS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-butlast">butlast</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTLAST">BUTLAST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-button">button</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTTON">BUTTON</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-button_003f">button?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTTONP">BUTTONP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-buttonact">buttonact</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTTONACT">BUTTONACT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-buttonp">buttonp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BUTTONP">BUTTONP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-bye">bye</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#BYE">BYE</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-C">C</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cascade">cascade</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CASCADE">CASCADE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cascade_002e2">cascade.2</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CASCADEd2">CASCADEd2</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-case">case</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CASE">CASE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-case_002dinsensitive">case-insensitive</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-caseignoredp">caseignoredp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CASEIGNOREDP">CASEIGNOREDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-catch">catch</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CATCH">CATCH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-char">char</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CHAR">CHAR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-clean">clean</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLEAN">CLEAN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-clearscreen">clearscreen</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLEARSCREEN">CLEARSCREEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cleartext">cleartext</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLEARTEXT">CLEARTEXT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-clickpos">clickpos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLICKPOS">CLICKPOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-close">close</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLOSE">CLOSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-closeall">closeall</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLOSEALL">CLOSEALL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-co">co</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CONTINUE">CONTINUE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-combine">combine</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#COMBINE">COMBINE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-commandline">commandline</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#COMMANDLINE">COMMANDLINE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-comments">comments</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-Computer_005fScience_005fLogo_005fStyle">Computer_Science_Logo_Style</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OVERVIEW">OVERVIEW</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cond">cond</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#COND">COND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-contents">contents</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CONTENTS">CONTENTS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-continue">continue</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CONTINUE">CONTINUE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-copydef">copydef</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#COPYDEF">COPYDEF</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-Copyright">Copyright</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OVERVIEW">OVERVIEW</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cos">cos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#COS">COS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-count">count</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#COUNT">COUNT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-crossmap">crossmap</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CROSSMAP">CROSSMAP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cs">cs</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLEARSCREEN">CLEARSCREEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cslsload">cslsload</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CSLSLOAD">CSLSLOAD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ct">ct</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CLEARTEXT">CLEARTEXT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-cursor">cursor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#CURSOR">CURSOR</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-D">D</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-decreasefont">decreasefont</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#INCREASEFONT">INCREASEFONT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-define">define</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DEFINE">DEFINE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-defined_003f">defined?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DEFINEDP">DEFINEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-definedp">definedp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DEFINEDP">DEFINEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-delimiters">delimiters</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-dequeue">dequeue</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DEQUEUE">DEQUEUE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-difference">difference</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DIFFERENCE">DIFFERENCE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-do_002euntil">do.until</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DOdUNTIL">DOdUNTIL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-do_002ewhile">do.while</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DOdWHILE">DOdWHILE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-dribble">dribble</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#DRIBBLE">DRIBBLE</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-E">E</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ed">ed</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-edall">edall</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDALL">EDALL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-edit">edit</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-editfile">editfile</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDITFILE">EDITFILE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-editor">editor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-edn">edn</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDN">EDN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-edns">edns</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDNS">EDNS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-edpl">edpl</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDPL">EDPL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-edpls">edpls</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDPLS">EDPLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-edps">edps</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDPS">EDPS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-empty_003f">empty?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EMPTYP">EMPTYP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-emptyp">emptyp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EMPTYP">EMPTYP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-eof_003f">eof?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EOFP">EOFP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-eofp">eofp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EOFP">EOFP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-epspict">epspict</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EPSPICT">EPSPICT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-equal_003f">equal?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EQUALP">EQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-equalp">equalp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EQUALP">EQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-er">er</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERASE">ERASE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erall">erall</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERALL">ERALL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erase">erase</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERASE">ERASE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erasefile">erasefile</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERASEFILE">ERASEFILE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erf">erf</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERASEFILE">ERASEFILE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ern">ern</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERN">ERN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erns">erns</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERNS">ERNS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erpl">erpl</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERPL">ERPL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erpls">erpls</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERPLS">ERPLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erps">erps</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERPS">ERPS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-erract">erract</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERRACT">ERRACT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-error">error</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERROR">ERROR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-errors">errors</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ERROR-CODES">ERROR CODES</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-exist">exist</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EXIST">EXIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-exp">exp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EXP">EXP</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-F">F</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fd">fd</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FORWARD">FORWARD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fence">fence</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FENCE">FENCE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-file_003f">file?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FILEP">FILEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-filep">filep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FILEP">FILEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fill">fill</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FILL">FILL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-filled">filled</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FILLED">FILLED</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-filter">filter</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FILTER">FILTER</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-find">find</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FIND">FIND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-first">first</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FIRST">FIRST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-firsts">firsts</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FIRSTS">FIRSTS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-font">font</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FONT">FONT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-for">for</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FOR">FOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-foreach">foreach</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FOREACH">FOREACH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-forever">forever</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FOREVER">FOREVER</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-form">form</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FORM">FORM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-forward">forward</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FORWARD">FORWARD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fput">fput</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FPUT">FPUT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fs">fs</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FULLSCREEN">FULLSCREEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fullprintp">fullprintp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FULLPRINTP">FULLPRINTP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fullscreen">fullscreen</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FULLSCREEN">FULLSCREEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-fulltext">fulltext</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#FULLTEXT">FULLTEXT</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-G">G</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-gc">gc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GC">GC</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-gensym">gensym</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GENSYM">GENSYM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-getter">getter</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">GETTER/SETTER VARIBLE SYNTAX</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-global">global</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GLOBAL">GLOBAL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-goto">goto</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GOTO">GOTO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-gprop">gprop</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GPROP">GPROP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-greater_003f">greater?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GREATERP">GREATERP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-greaterequal_003f">greaterequal?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GREATEREQUALP">GREATEREQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-greaterequalp">greaterequalp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GREATEREQUALP">GREATEREQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-greaterp">greaterp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GREATERP">GREATERP</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-H">H</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-have">have</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HAVE">HAVE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-havemake">havemake</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HAVEMAKE">HAVEMAKE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-heading">heading</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HEADING">HEADING</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-help">help</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HELP">HELP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-hideturtle">hideturtle</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HIDETURTLE">HIDETURTLE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-home">home</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HOME">HOME</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ht">ht</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HIDETURTLE">HIDETURTLE</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-if">if</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#IF">IF</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ifelse">ifelse</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#IFELSE">IFELSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-iff">iff</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#IFFALSE">IFFALSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-iffalse">iffalse</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#IFFALSE">IFFALSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ift">ift</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#IFTRUE">IFTRUE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-iftrue">iftrue</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#IFTRUE">IFTRUE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ignore">ignore</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#IGNORE">IGNORE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-increasefont">increasefont</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#INCREASEFONT">INCREASEFONT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-int">int</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#INT">INT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-invoke">invoke</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#INVOKE">INVOKE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-iseq">iseq</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ISEQ">ISEQ</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-item">item</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ITEM">ITEM</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-K">K</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-key_003f">key?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#KEYP">KEYP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-keyact">keyact</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#KEYACT">KEYACT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-keyp">keyp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#KEYP">KEYP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-kindof">kindof</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#KINDOF">KINDOF</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-L">L</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-label">label</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LABEL">LABEL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-labelsize">labelsize</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LABELSIZE">LABELSIZE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-last">last</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LAST">LAST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-leaving-ucblogo">leaving <tt>ucblogo</tt></a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ENTERING-AND-LEAVING-LOGO">ENTERING AND LEAVING LOGO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-left">left</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LEFT">LEFT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-less_003f">less?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LESSP">LESSP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-lessequal_003f">lessequal?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LESSEQUALP">LESSEQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-lessequalp">lessequalp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LESSEQUALP">LESSEQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-lessp">lessp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LESSP">LESSP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-line_002dcontinuation">line-continuation</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-line_003f">line?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LINEP">LINEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-linep">linep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LINEP">LINEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-list">list</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LIST">LIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-list_003f">list?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LISTP">LISTP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-listp">listp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LISTP">LISTP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-listtoarray">listtoarray</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LISTTOARRAY">LISTTOARRAY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ln">ln</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LN">LN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-load">load</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOAD">LOAD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-loadnoisily">loadnoisily</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOADNOISILY">LOADNOISILY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-loadpict">loadpict</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOADPICT">LOADPICT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-local">local</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOCAL">LOCAL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-localmake">localmake</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOCALMAKE">LOCALMAKE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-log10">log10</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOG10">LOG10</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-logohelp">logohelp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#HELP">HELP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-logoplatform">logoplatform</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOGOPLATFORM">LOGOPLATFORM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-logoversion">logoversion</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOGOVERSION">LOGOVERSION</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-lowercase">lowercase</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LOWERCASE">LOWERCASE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-lput">lput</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LPUT">LPUT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-lshift">lshift</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LSHIFT">LSHIFT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-lt">lt</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#LEFT">LEFT</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-M">M</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-macro_003f">macro?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MACROP">MACROP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-macroexpand">macroexpand</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MACROEXPAND">MACROEXPAND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-macrop">macrop</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MACROP">MACROP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-make">make</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MAKE">MAKE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-map">map</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MAP">MAP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-map_002ese">map.se</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MAPdSE">MAPdSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-mdarray">mdarray</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MDARRAY">MDARRAY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-mditem">mditem</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MDITEM">MDITEM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-mdsetitem">mdsetitem</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MDSETITEM">MDSETITEM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-member">member</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MEMBER">MEMBER</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-member_003f">member?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MEMBERP">MEMBERP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-memberp">memberp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MEMBERP">MEMBERP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-minus">minus</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MINUS">MINUS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-modulo">modulo</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MODULO">MODULO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-mousepos">mousepos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MOUSEPOS">MOUSEPOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-myname_003f">myname?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MYNAMEP">MYNAMEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-mynamep">mynamep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MYNAMEP">MYNAMEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-mynames">mynames</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MYNAMES">MYNAMES</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-myproc_003f">myproc?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MYPROCP">MYPROCP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-myprocp">myprocp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MYPROCP">MYPROCP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-myprocs">myprocs</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#MYPROCS">MYPROCS</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-name">name</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NAME">NAME</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-name_003f">name?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NAMEP">NAMEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-namelist">namelist</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NAMELIST">NAMELIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-namep">namep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NAMEP">NAMEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-names">names</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NAMES">NAMES</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-nodes">nodes</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NODES">NODES</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-nodribble">nodribble</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NODRIBBLE">NODRIBBLE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-norefresh">norefresh</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NOREFRESH">NOREFRESH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-not">not</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NOT">NOT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-notequal_003f">notequal?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NOTEQUALP">NOTEQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-notequalp">notequalp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NOTEQUALP">NOTEQUALP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-number_003f">number?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NUMBERP">NUMBERP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-numberp">numberp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#NUMBERP">NUMBERP</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-O">O</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-oneof">oneof</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ONEOF">ONEOF</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-op">op</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OUTPUT">OUTPUT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-openappend">openappend</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OPENAPPEND">OPENAPPEND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-openread">openread</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OPENREAD">OPENREAD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-openupdate">openupdate</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OPENUPDATE">OPENUPDATE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-openwrite">openwrite</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OPENWRITE">OPENWRITE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-or">or</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OR">OR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-output">output</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#OUTPUT">OUTPUT</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-P">P</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-palette">palette</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PALETTE">PALETTE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-parents">parents</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PARENTS">PARENTS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-parse">parse</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PARSE">PARSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pause">pause</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PAUSE">PAUSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pc">pc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENCOLOR">PENCOLOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pd">pd</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENDOWN">PENDOWN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pe">pe</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENERASE">PENERASE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pen">pen</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PEN">PEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pencolor">pencolor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENCOLOR">PENCOLOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pendown">pendown</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENDOWN">PENDOWN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pendown_003f">pendown?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENDOWNP">PENDOWNP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pendownp">pendownp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENDOWNP">PENDOWNP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-penerase">penerase</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENERASE">PENERASE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-penmode">penmode</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENMODE">PENMODE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-penpaint">penpaint</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENPAINT">PENPAINT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-penpattern">penpattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENSIZE">PENSIZE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-penreverse">penreverse</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENREVERSE">PENREVERSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pensize">pensize</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENSIZE">PENSIZE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-penup">penup</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENUP">PENUP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pick">pick</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PICK">PICK</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-plist">plist</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PLIST">PLIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-plist_003f">plist?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PLISTP">PLISTP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-plistp">plistp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PLISTP">PLISTP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-plists">plists</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PLISTS">PLISTS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pllist">pllist</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PLLIST">PLLIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-po">po</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PO">PO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-poall">poall</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POALL">POALL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pon">pon</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PON">PON</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pons">pons</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PONS">PONS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pop">pop</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POP">POP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-popl">popl</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POPL">POPL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-popls">popls</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POPLS">POPLS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pops">pops</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POPS">POPS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pos">pos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POS">POS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pot">pot</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POT">POT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pots">pots</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POTS">POTS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-power">power</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#POWER">POWER</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pprop">pprop</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PPROP">PPROP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ppt">ppt</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENPAINT">PENPAINT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pr">pr</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRINT">PRINT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-prefix">prefix</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PREFIX">PREFIX</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-primitive_003f">primitive?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRIMITIVEP">PRIMITIVEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-primitivep">primitivep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRIMITIVEP">PRIMITIVEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-primitives">primitives</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRIMITIVES">PRIMITIVES</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-print">print</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRINT">PRINT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-printdepthlimit">printdepthlimit</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRINTDEPTHLIMIT">PRINTDEPTHLIMIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-printout">printout</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PO">PO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-printwidthlimit">printwidthlimit</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRINTWIDTHLIMIT">PRINTWIDTHLIMIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-procedure_003f">procedure?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PROCEDUREP">PROCEDUREP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-procedurep">procedurep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PROCEDUREP">PROCEDUREP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-procedures">procedures</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PROCEDURES">PROCEDURES</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-product">product</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PRODUCT">PRODUCT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-pu">pu</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENUP">PENUP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-push">push</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PUSH">PUSH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-px">px</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#PENREVERSE">PENREVERSE</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-Q">Q</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-queue">queue</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#QUEUE">QUEUE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-quoted">quoted</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#QUOTED">QUOTED</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-quotient">quotient</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#QUOTIENT">QUOTIENT</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-radarctan">radarctan</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RADARCTAN">RADARCTAN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-radcos">radcos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RADCOS">RADCOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-radsin">radsin</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RADSIN">RADSIN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-random">random</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RANDOM">RANDOM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rawascii">rawascii</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RAWASCII">RAWASCII</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rc">rc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READCHAR">READCHAR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rcs">rcs</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READCHARS">READCHARS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-readchar">readchar</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READCHAR">READCHAR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-readchars">readchars</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READCHARS">READCHARS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-reader">reader</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READER">READER</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-readlist">readlist</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READLIST">READLIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-readpos">readpos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READPOS">READPOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-readrawline">readrawline</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READRAWLINE">READRAWLINE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-readword">readword</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READWORD">READWORD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-redefp">redefp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REDEFP">REDEFP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-reduce">reduce</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REDUCE">REDUCE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-refresh">refresh</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REFRESH">REFRESH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-remainder">remainder</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REMAINDER">REMAINDER</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-remdup">remdup</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REMDUP">REMDUP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-remove">remove</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REMOVE">REMOVE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-remprop">remprop</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REMPROP">REMPROP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-repcount">repcount</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REPCOUNT">REPCOUNT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-repeat">repeat</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REPEAT">REPEAT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rerandom">rerandom</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RERANDOM">RERANDOM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-reverse">reverse</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#REVERSE">REVERSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-right">right</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RIGHT">RIGHT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rl">rl</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READLIST">READLIST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-round">round</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ROUND">ROUND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rseq">rseq</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RSEQ">RSEQ</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rt">rt</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RIGHT">RIGHT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-run">run</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RUN">RUN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-runparse">runparse</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RUNPARSE">RUNPARSE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-runparsing">runparsing</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TOKENIZATION">TOKENIZATION</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-runresult">runresult</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#RUNRESULT">RUNRESULT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-rw">rw</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#READWORD">READWORD</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-S">S</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-save">save</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SAVE">SAVE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-savel">savel</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SAVEL">SAVEL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-savepict">savepict</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SAVEPICT">SAVEPICT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-screenmode">screenmode</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SCREENMODE">SCREENMODE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-scrunch">scrunch</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SCRUNCH">SCRUNCH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-scrunch_002edat">scrunch.dat</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-se">se</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SENTENCE">SENTENCE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-self">self</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SELF">SELF</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-sentence">sentence</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SENTENCE">SENTENCE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setbackground">setbackground</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETBACKGROUND">SETBACKGROUND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setbg">setbg</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETBACKGROUND">SETBACKGROUND</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setcslsloc">setcslsloc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETCSLSLOC">SETCSLSLOC</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setcursor">setcursor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETCURSOR">SETCURSOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-seteditor">seteditor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETEDITOR">SETEDITOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setfont">setfont</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETFONT">SETFONT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-seth">seth</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETHEADING">SETHEADING</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setheading">setheading</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETHEADING">SETHEADING</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-sethelploc">sethelploc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETHELPLOC">SETHELPLOC</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setitem">setitem</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETITEM">SETITEM</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setlabelheight">setlabelheight</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETLABELHEIGHT">SETLABELHEIGHT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setlibloc">setlibloc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETLIBLOC">SETLIBLOC</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setmargins">setmargins</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETMARGINS">SETMARGINS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setpalette">setpalette</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPALETTE">SETPALETTE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setpc">setpc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPENCOLOR">SETPENCOLOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setpen">setpen</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPEN">SETPEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setpencolor">setpencolor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPENCOLOR">SETPENCOLOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setpenpattern">setpenpattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPENPATTERN">SETPENPATTERN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setpensize">setpensize</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPENSIZE">SETPENSIZE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setpos">setpos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPOS">SETPOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setprefix">setprefix</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETPREFIX">SETPREFIX</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setread">setread</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETREAD">SETREAD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setreadpos">setreadpos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETREADPOS">SETREADPOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setscrunch">setscrunch</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETSCRUNCH">SETSCRUNCH</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-settc">settc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETTEXTCOLOR">SETTEXTCOLOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-settemploc">settemploc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETTEMPLOC">SETTEMPLOC</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setter">setter</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#GETTER_002fSETTER-VARIBLE-SYNTAX">GETTER/SETTER VARIBLE SYNTAX</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-settextcolor">settextcolor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETTEXTCOLOR">SETTEXTCOLOR</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-settextsize">settextsize</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETTEXTSIZE">SETTEXTSIZE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setwrite">setwrite</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETWRITE">SETWRITE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setwritepos">setwritepos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETWRITEPOS">SETWRITEPOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setx">setx</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETX">SETX</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-setxy">setxy</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETXY">SETXY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-sety">sety</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SETY">SETY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-shell">shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SHELL">SHELL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-show">show</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SHOW">SHOW</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-shown_003f">shown?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SHOWNP">SHOWNP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-shownp">shownp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SHOWNP">SHOWNP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-showturtle">showturtle</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SHOWTURTLE">SHOWTURTLE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-sin">sin</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SIN">SIN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-something">something</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SOMETHING">SOMETHING</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-splitscreen">splitscreen</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-sqrt">sqrt</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SQRT">SQRT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ss">ss</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SPLITSCREEN">SPLITSCREEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-st">st</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SHOWTURTLE">SHOWTURTLE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-standout">standout</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#STANDOUT">STANDOUT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-starting-ucblogo">starting <tt>ucblogo</tt></a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#ENTERING-AND-LEAVING-LOGO">ENTERING AND LEAVING LOGO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-startup">startup</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#STARTUP">STARTUP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-step">step</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#STEP">STEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-stepped">stepped</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#STEPPED">STEPPED</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-stepped_003f">stepped?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#STEPPEDP">STEPPEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-steppedp">steppedp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#STEPPEDP">STEPPEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-stop">stop</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#STOP">STOP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-substring_003f">substring?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SUBSTRINGP">SUBSTRINGP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-substringp">substringp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SUBSTRINGP">SUBSTRINGP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-sum">sum</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#SUM">SUM</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-T">T</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-tag">tag</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TAG">TAG</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-talkto">talkto</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TALKTO">TALKTO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-temp">temp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#EDIT">EDIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-template">template</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TEMPLATE_002dBASED-ITERATION">TEMPLATE-BASED ITERATION</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-test">test</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TEST">TEST</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-text">text</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TEXT">TEXT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-textscreen">textscreen</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TEXTSCREEN">TEXTSCREEN</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-textsize">textsize</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TEXTSIZE">TEXTSIZE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-thing">thing</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#THING">THING</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-throw">throw</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#THROW">THROW</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-to">to</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TO">TO</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-towards">towards</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TOWARDS">TOWARDS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-trace">trace</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TRACE">TRACE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-traced">traced</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TRACED">TRACED</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-traced_003f">traced?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TRACEDP">TRACEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-tracedp">tracedp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TRACEDP">TRACEDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-transfer">transfer</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TRANSFER">TRANSFER</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-turtlemode">turtlemode</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TURTLEMODE">TURTLEMODE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-type">type</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#TYPE">TYPE</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-U">U</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-unbury">unbury</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UNBURY">UNBURY</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-unburyall">unburyall</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UNBURYALL">UNBURYALL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-unburyname">unburyname</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UNBURYNAME">UNBURYNAME</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-unburyonedit">unburyonedit</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UNBURYONEDIT">UNBURYONEDIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-unstep">unstep</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UNSTEP">UNSTEP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-until">until</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UNTIL">UNTIL</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-untrace">untrace</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UNTRACE">UNTRACE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-uppercase">uppercase</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#UPPERCASE">UPPERCASE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-usealternatenames">usealternatenames</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#USEALTERNATENAMES">USEALTERNATENAMES</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-usual">usual</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#USUAL">USUAL</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-V">V</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-vbarred_003f">vbarred?</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#VBARREDP">VBARREDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-vbarredp">vbarredp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#VBARREDP">VBARREDP</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-W">W</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-wait">wait</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WAIT">WAIT</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-while">while</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WHILE">WHILE</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-whosename">whosename</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WHOSENAME">WHOSENAME</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-whoseproc">whoseproc</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WHOSEPROC">WHOSEPROC</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-window">window</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WINDOW">WINDOW</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-word">word</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WORD">WORD</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-wordp">wordp</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WORDP">WORDP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-wrap">wrap</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WRAP">WRAP</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-writepos">writepos</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WRITEPOS">WRITEPOS</a></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-writer">writer</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#WRITER">WRITER</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-X">X</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-xcor">xcor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#XCOR">XCOR</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+<tr><th><a name="INDEX_cp_letter-Y">Y</a></th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="usermanual.html#index-ycor">ycor</a>:</td><td>&nbsp;</td><td valign="top"><a href="usermanual.html#YCOR">YCOR</a></td></tr>
+<tr><td colspan="4"> <hr></td></tr>
+</table>
+<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-1"><b>*</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-2"><b>+</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-3"><b>-</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-4"><b>.</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-5"><b>/</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-6"><b>&lt;</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-7"><b>=</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-8"><b>&gt;</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_symbol-9"><b>`</b></a>
+ &nbsp; 
+<br>
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-A"><b>A</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-B"><b>B</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-C"><b>C</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-D"><b>D</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-E"><b>E</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-F"><b>F</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-G"><b>G</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-H"><b>H</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-I"><b>I</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-K"><b>K</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-L"><b>L</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-M"><b>M</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-N"><b>N</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-O"><b>O</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-P"><b>P</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Q"><b>Q</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-R"><b>R</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-S"><b>S</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-T"><b>T</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-U"><b>U</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-V"><b>V</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-W"><b>W</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-X"><b>X</b></a>
+ &nbsp; 
+<a class="summary-letter" href="usermanual.html#INDEX_cp_letter-Y"><b>Y</b></a>
+ &nbsp; 
+</td></tr></table>
+
+<div class="footnote">
+<hr>
+<h4 class="footnotes-heading">Footnotes</h4>
+
+<h3><a name="FOOT1" href="usermanual.html#DOCF1">(1)</a></h3>
+<p><cite>Computer Science Logo Style</cite></p>
+</div>
+<hr>
+
+
+
+</body>
+</html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/UCBLogo-6.0.dmg.gz b/js/games/nluqo.github.io/~bh/downloads/UCBLogo-6.0.dmg.gz
new file mode 100644
index 0000000..4baa2cd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/UCBLogo-6.0.dmg.gz
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/downloads/UCBLogo.dmg b/js/games/nluqo.github.io/~bh/downloads/UCBLogo.dmg
new file mode 100644
index 0000000..d5c3153
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/UCBLogo.dmg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/downloads/blogo.exe b/js/games/nluqo.github.io/~bh/downloads/blogo.exe
new file mode 100644
index 0000000..92e1991
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/blogo.exe
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/Makefile.am b/js/games/nluqo.github.io/~bh/downloads/csls-programs/Makefile.am
new file mode 100644
index 0000000..4b015f2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/Makefile.am
@@ -0,0 +1,5 @@
+cslsdir=$(pkgdatadir)/csls
+
+dist_csls_DATA = algs basic buttons cards crypto diff doctor dotgame	\
+ format fsm master match math mines multi pascal playfair plot poker	\
+ pour psort solitaire streams student tower ttt
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/basic b/js/games/nluqo.github.io/~bh/downloads/csls-programs/basic
new file mode 100644
index 0000000..499461b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/basic
@@ -0,0 +1,235 @@
+to basic
+make "linenumbers []
+make "readline []
+forever [basicprompt]
+end
+
+to basicprompt
+print []
+print "READY
+print []
+make "line basicread
+if emptyp :line [stop]
+ifelse numberp first :line [compile split :line] [immediate :line]
+end
+
+to compile :commands
+make "number first :commands
+make :number :line
+ifelse emptyp butfirst :commands ~
+       [eraseline :number] ~
+       [makedef (word "basic% :number) butfirst :commands]
+end
+
+to makedef :name :commands
+make "definition [[]]
+foreach :commands [run list (word "compile. first ?) ?]
+queue "definition (list "nextline :number)
+define :name :definition
+make "linenumbers insert :number :linenumbers
+end
+
+to insert :num :list
+if emptyp :list [output (list :num)]
+if :num = first :list [output :list]
+if :num < first :list [output fput :num :list]
+output fput first :list (insert :num butfirst :list)
+end
+
+to eraseline :num
+make "linenumbers remove :num :linenumbers
+end
+
+to immediate :line
+if equalp :line [list] [foreach :linenumbers [print thing ?] stop]
+if equalp :line [run] [run (list (word "basic% first :linenumbers)) stop]
+if equalp :line [exit] [throw "toplevel]
+print sentence [Invalid command:] :line
+end
+
+;; Compiling each BASIC command
+
+to compile.end :command
+queue "definition [stop]
+end
+
+to compile.goto :command
+queue "definition (list (word "basic% last :command) "stop)
+end
+
+to compile.gosub :command
+queue "definition (list (word "basic% last :command))
+end
+
+to compile.return :command
+queue "definition [stop]
+end
+
+to compile.print :command
+make "command butfirst :command
+while [not emptyp :command] [c.print1]
+queue "definition [print []]
+end
+
+to c.print1
+make "exp expression
+ifelse equalp first first :exp "" ~
+       [make "sym gensym
+        make word "%% :sym butfirst butlast first :exp
+        queue "definition list "type word ":%% :sym] ~
+       [queue "definition fput "type :exp]
+if emptyp :command [stop]
+make "delimiter pop "command
+if equalp :delimiter ", [queue "definition [type char 9] stop]
+if equalp :delimiter "\; [stop]
+(throw "error [Comma or semicolon needed in print.])
+end
+
+to compile.input :command
+make "command butfirst :command
+if equalp first first :command "" ~
+   [make "sym gensym
+    make "prompt pop "command
+    make word "%% :sym butfirst butlast :prompt
+    queue "definition list "type word ":%% :sym]
+while [not emptyp :command] [c.input1]
+end
+
+to c.input1
+make "var pop "command
+queue "definition (list "make (word ""% :var) "readvalue)
+if emptyp :command [stop]
+make "delimiter pop "command
+if equalp :delimiter ", [stop]
+(throw "error [Comma needed in input.])
+end
+
+to compile.let :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+make "exp expression
+queue "definition (sentence "make (word ""% :var) :exp)
+end
+
+to compile.if :command
+make "command butfirst :command
+make "exp expression
+make "delimiter pop "command
+if not equalp :delimiter "then [(throw "error [Need then after if.])]
+queue "definition (sentence "if :exp (list c.if1))
+end
+
+to c.if1
+local "definition
+make "definition [[]]
+run list (word "compile. first :command) :command
+ifelse (count :definition) = 2 ~
+       [output last :definition] ~
+       [make "newname word "% gensym
+        define :newname :definition
+	output (list :newname)]
+end
+
+to compile.for :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = after for.])]
+make "start expression
+make "delimiter pop "command
+if not equalp :delimiter "to [(throw "error [Need to after for.])]
+make "end expression
+queue "definition (sentence "make (word ""% :var) :start)
+queue "definition (sentence "make (word ""let% :var) :end)
+make "newname word "% gensym
+queue "definition (sentence "make (word ""next% :var) (list (list :newname)))
+queue "definition (list :newname)
+define :name :definition
+make "name :newname
+make "definition [[]]
+end
+
+to compile.next :command
+make "command butfirst :command
+make "var pop "command
+queue "definition (sentence "make (word ""% :var) (word ":% :var) [+ 1])
+queue "definition (sentence [if not greaterp]
+                            (word ":% :var) (word ":let% :var)
+                            (list (list "run (word ":next% :var) "stop)))
+end
+
+;; Compile an expression for LET, IF, PRINT, or FOR
+
+to expression
+make "expr []
+make "token expr1
+while [not emptyp :token] [queue "expr :token
+                           make "token expr1]
+output :expr
+end
+
+to expr1
+if emptyp :command [output []]
+make "token pop "command
+if memberp :token [+ - * / = < > ( )] [output :token]
+if memberp :token [, \; : then to] [push "command :token  output []]
+if numberp :token [output :token]
+if equalp first :token "" [output :token]
+output word ":% :token
+end
+
+;; reading input
+
+to basicread
+output basicread1 readword [] "
+end
+
+to basicread1 :input :output :token
+if emptyp :input [if not emptyp :token [push "output :token]
+                  output reverse :output]
+if equalp first :input "| | [if not emptyp :token [push "output :token]
+                             output basicread1 (butfirst :input) :output "]
+if equalp first :input "" [if not emptyp :token [push "output :token]
+                             output breadstring butfirst :input :output "]
+if memberp first :input [+ - * / = < > ( ) , \; :] ~
+   [if not emptyp :token [push "output :token]
+    output basicread1 (butfirst :input) (fput first :input :output) "]
+output basicread1 (butfirst :input) :output (word :token first :input)
+end
+
+to breadstring :input :output :string
+if emptyp :input [(throw "error [String needs ending quote.])]
+if equalp first :input "" ~
+   [output basicread1 (butfirst :input)
+                      (fput (word "" :string "") :output)
+                      "]
+output breadstring (butfirst :input) :output (word :string first :input)
+end
+
+to split :line
+output fput first :line split1 (butfirst :line) [] []
+end
+
+to split1 :input :output :command
+if emptyp :input [if not emptyp :command [push "output reverse :command]
+                  output reverse :output]
+if equalp first :input ": [if not emptyp :command
+                              [push "output reverse :command]
+                           output split1 (butfirst :input) :output []]
+output split1 (butfirst :input) :output (fput first :input :command)
+end
+
+;; Runtime library
+
+to nextline :num
+make "target member :num :linenumbers
+if not emptyp :target [make "target butfirst :target]
+if not emptyp :target [run (list (word "basic% first :target))]
+end
+
+to readvalue
+while [emptyp :readline] [make "readline basicread]
+output pop "readline
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/buttons b/js/games/nluqo.github.io/~bh/downloads/csls-programs/buttons
new file mode 100644
index 0000000..d5527b1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/buttons
@@ -0,0 +1,211 @@
+;;; Primitive GUI for Logo games.
+
+;;; Displays buttons, then accepts mouseclicks or keystrokes
+;;; to control actions.
+
+;;; To clear the screen and all the remembered buttons:
+;;;   init.buttons
+
+;;; To install a button:
+;;;   SETBUTTON [150 130] [40 25] [make "mysecret "true throw "newgame] ~
+;;;             :mysecret 0 [Logo guess] []
+;;;
+;;; Inputs are:
+;;;   1. Position of lower left corner of button
+;;;   2. Size [x y] of button
+;;;   3. Action to take if button pressed
+;;;   4. TRUE if box should be drawn thick, FALSE if thin
+;;;   5. Color to fill box (0 if no fill)
+;;;   6. Text caption inside button (a word or a two-word list for
+;;;        a two-line caption) or empty list for no caption
+;;;   7. Equivalent keystroke (empty list if no equivalent keystroke)
+;;;        (DEL means char 8 or 127; RET means char 10 or 13)
+;;;        (Keystroke inside list, e.g., [X], means don't draw it.)
+
+;;; REBUTTON (same inputs as SETBUTTON) looks for existing matching button
+;;; and, if found, just redraws border (possibly changing thickness).
+
+;;; To display a descriptive caption (e.g., for a group of buttons)
+;;; without making a button:
+;;;   CAPTION [150 130] [40 25] [Number |of boxes:|]
+;;;   CENTER.CAPTION [150 130] [40 25] [Number |of boxes:|]
+;;;
+;;; Inputs are position, size, caption.
+;;; CENTER.CAPTION centers the text within the box; CAPTION puts it
+;;; at the left edge of the box.
+
+;;; To loop reading keystrokes or mouseclicks and taking actions as set:
+;;;   ACTION.LOOP
+;;; Within an action, :CHAR is the character typed (or zero if the action
+;;; was triggered by a mouse click), :BUTTON is the mouse button pressed
+;;; (or zero if the action was triggered by a keystroke), and :MOUSEPOS is
+;;; the mouse position (or unspecified for a keystroke).  Actions triggered
+;;; by a mouse click happen when the mouse button is released.
+
+; -----------------------------
+
+;;; IMPORTANT:  Here is how we know the size of a text character as
+;;; drawn by the LABEL command.  Change these numbers if necessary:
+
+make "labelcharsize ifelse equalp :LogoPlatform "Windows [[8 13]] [[6 11]]
+; if equalp :LogoPlatform "wxWidgets [make "labelcharsize [7 14]]
+if equalp :LogoPlatform "wxWidgets [make "labelcharsize labelsize]
+
+; -----------------------------
+
+to init.buttons
+cs ht
+make "buttons []
+end
+
+; -----------------------------
+
+to setbutton :corner :size :action :thickp :fillcolor :caption :key
+center.caption :corner :size :caption
+pu setpos :corner
+seth 0
+pd setpensize ifelse :thickp [[3 3]] [[1 1]]
+setpc 7
+apply "button.rectangle :size
+setpensize [1 1]
+if not equalp :fillcolor 0 [
+  button.offset :corner 5 5
+  setpc :fillcolor
+  fill
+  setpc 7
+]
+if (and (not listp :key) (not emptyp :key) (not equalp :key :caption)) [
+  caption (list (sum first :corner first :size 4) last :corner) ~
+                 (list (first :labelcharsize) (last :size)) ~
+                 :key
+]
+if and (listp :key) (not emptyp :key) [make "key first :key]
+push "buttons (list :corner :size :key :action)
+end
+
+to rebutton :corner :size :action :thickp :fillcolor :caption :key
+localmake "thekey :key
+if and listp :key not emptyp :key [make "thekey first :key]
+localmake "test (list :corner :size :thekey :action)
+localmake "button find [equalp ? :test] :buttons
+if emptyp :button ~
+   [setbutton :corner :size :action :thickp :fillcolor :caption :key  stop]
+penup setpos :corner
+seth 0
+setpc 7
+penerase setpensize [3 3]
+apply "button.rectangle :size
+penpaint setpensize ifelse :thickp [[3 3]] [[1 1]]
+apply "button.rectangle :size
+setpensize [1 1]
+end
+
+to button.offset :corner :dx :dy
+penup setxy (first :corner)+:dx (last :corner)+:dy
+end
+
+to button.rectangle :x :y
+repeat 2 [fd :y rt 90 fd :x rt 90]
+end
+
+; -----------------------------
+
+to caption :corner :size :caption
+if emptyp :caption [stop]
+localmake "oldscrunch scrunch
+if not namep "caption.scrunch [localmake "caption.scrunch 1]
+localmake "myscrunch map [? * :caption.scrunch] :oldscrunch
+localmake "y (last :labelcharsize)*:caption.scrunch
+setpc 7
+ifelse listp :caption [
+  button.offset :corner 0 ((14-:y)+((last :size)-25)/3)
+  if :caption.scrunch <> 1 [apply "setscrunch :myscrunch]
+  label last :caption
+  if :caption.scrunch <> 1 [apply "setscrunch :oldscrunch]
+  button.offset :corner 0 ((14-:y)+:y+2*((last :size)-25)/3)
+  if :caption.scrunch <> 1 [apply "setscrunch :myscrunch]
+  label first :caption
+  if :caption.scrunch <> 1 [apply "setscrunch :oldscrunch]
+] [
+  button.offset :corner 0 ((17-:y)+((last :size)-17)/2)
+  if :caption.scrunch <> 1 [apply "setscrunch :myscrunch]
+  label :caption
+  if :caption.scrunch <> 1 [apply "setscrunch :oldscrunch]
+]
+end
+
+to center.caption :corner :size :caption
+if emptyp :caption [stop]
+localmake "oldscrunch scrunch
+if not namep "caption.scrunch [localmake "caption.scrunch 1]
+localmake "myscrunch map [? * :caption.scrunch] :oldscrunch
+localmake "halfx (first :labelcharsize)*:caption.scrunch/2
+localmake "y (last :labelcharsize)*:caption.scrunch
+setpc 7
+ifelse listp :caption [
+  button.offset :corner (1+(first :size)/2-:halfx*(count last :caption)) ~
+                        ((14-:y)+((last :size)-25)/3)
+  if :caption.scrunch <> 1 [apply "setscrunch :myscrunch]
+  label last :caption
+  if :caption.scrunch <> 1 [apply "setscrunch :oldscrunch]
+  button.offset :corner (1+(first :size)/2-:halfx*(count first :caption)) ~
+                        ((14-:y)+:y+2*((last :size)-25)/3)
+  if :caption.scrunch <> 1 [apply "setscrunch :myscrunch]
+  label first :caption
+  if :caption.scrunch <> 1 [apply "setscrunch :oldscrunch]
+] [
+  button.offset :corner (1+(first :size)/2-:halfx*(count :caption)) ~
+                        ((17-:y)+((last :size)-17)/2)
+  if :caption.scrunch <> 1 [apply "setscrunch :myscrunch]
+  label :caption
+  if :caption.scrunch <> 1 [apply "setscrunch :oldscrunch]
+]
+end
+
+; -----------------------------
+
+to action.loop [:buttonact [button.mouseclick]] [:keyact [button.readkey]]
+action.once
+forever [wait 100]
+end
+
+to action.off
+ern [buttonact keyact]
+ern "keyact
+end
+
+to action.once
+if keyp [button.readkey]
+if buttonp [button.mouseclick]
+end
+
+to button.readkey [:char rc] [:button 0] [:buttonact []] [:keyact []]
+foreach :buttons [
+  localmake "key item 3 ?
+  ifelse equalp :key "DEL [
+    if memberp (ascii :char) [8 127] [run last ? action.once stop]
+  ] [
+    ifelse equalp :key "RET [
+      if memberp (ascii :char) [10 13] [run last ? action.once stop]
+    ] [
+      if equalp :char :key [run last ? action.once stop]
+    ]
+  ]
+]
+end
+
+to button.mouseclick [:mousepos clickpos] [:button button] [:char 0] ~
+                     [:buttonact []] [:keyact []]
+while [buttonp] []	; wait for release of button
+foreach :buttons [
+  if apply "button.inrange ? [run last ? action.once stop]
+]
+end
+
+to button.inrange :corner :size :key :action
+(foreach :mousepos :corner :size [
+   if ?1 < ?2 [output "false]
+   if ?1 > (?2 + ?3) [output "false]
+])
+output "true
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/cards b/js/games/nluqo.github.io/~bh/downloads/csls-programs/cards
new file mode 100644
index 0000000..e0df3c6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/cards
@@ -0,0 +1,63 @@
+program cards;
+ {Shuffle a deck of cards}
+
+var ranks:array [0..51] of integer;
+    suits:array [0..51] of char;
+    i:integer;
+
+procedure showdeck;
+ {Print the deck arrays}
+
+  begin {showdeck}
+    for i := 0 to 51 do
+      begin
+        if i mod 13 = 0 then writeln;
+        write(ranks[i]:3,suits[i]);
+      end;
+    writeln;
+    writeln
+  end; {showdeck}
+
+procedure deck;
+ {Create the deck in order}
+
+  var i,j:integer;
+      suitnames:packed array [0..3] of char;
+
+  begin {deck}
+    suitnames := 'HSDC';
+    for i := 0 to 12 do
+      for j := 0 to 3 do
+        begin
+          ranks[13*j+i] := i+1;
+          suits[13*j+i] := suitnames[j]
+        end;
+    writeln('The initial deck:');
+    showdeck
+  end; {deck}
+
+procedure shuffle;
+ {Shuffle the deck randomly}
+
+  var rank,i,j:integer;
+      suit:char;
+
+  begin {shuffle}
+    for i := 51 downto 1 do {For each card in the deck}
+      begin
+        j := random(i+1); {Pick a random card before it}
+        rank := ranks[i]; {Interchange ranks}
+        ranks[i] := ranks[j];
+        ranks[j] := rank;
+        suit := suits[i]; {Interchange suits}
+        suits[i] := suits[j];
+        suits[j] := suit
+      end;
+    writeln('The shuffled deck:');
+    showdeck
+  end; {shuffle}
+
+begin {main program}
+  deck;
+  shuffle
+end.
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/crypto b/js/games/nluqo.github.io/~bh/downloads/csls-programs/crypto
new file mode 100644
index 0000000..7b1a835
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/crypto
@@ -0,0 +1,355 @@
+to crypto :text
+make "text map "uppercase :text
+make "fulltext :text
+make "moretext []
+make "textstack []
+if not procedurep "letterp [copydef "letterp "namep]
+forletters "A "Z "initvars
+make "maxcount 0
+initcount "single
+initcount "triple
+cleartext
+histogram :text
+redisplay "false
+if or guess.single guess.triple [showclear :text]
+parseloop
+end
+
+;; Initialization
+
+to initcount :type
+setlist. :type []
+setcount. :type 0
+end
+
+to initvars :letter
+setcnt :letter 0
+make :letter "| |
+setunbound :letter
+end
+
+;; Histogram
+
+to histogram :text
+foreach :text [localmake "word filter "letterp ?
+               foreach :word "histlet
+               prepare.guess :word]
+end
+
+to histlet :letter
+localmake "cnt 1+cnt :letter
+setcursor list (index :letter) (nonneg 24-:cnt)
+type :letter
+setcnt :letter :cnt
+if :maxcount < :cnt [make "maxcount :cnt]
+end
+
+;; Guessing letters
+
+to prepare.guess :word
+if equalp count :word 1 [tally "single :word]
+if equalp count :word 3 [tally "triple :word]
+end
+
+to tally :type :word
+localmake "countvar word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :countvar 0]
+localmake "count (thing :countvar)+1
+make :countvar :count
+if :count > (count. :type) ~
+   [setcount. :type :count   setmax. :type :word]
+end
+
+to guess.single
+if emptyp (list. "single) [output "false]
+if emptyp butfirst (list. "single) ~
+   [qbind first (list. "single) "A  output "true]
+qbind (max. "single) "A
+qbind (ifelse equalp first (list. "single) (max. "single)
+              [last (list. "single)]
+              [first (list. "single)]) ~
+      "I
+output "true
+end
+
+to guess.triple
+if emptyp (list. "triple) [output "false]
+if :maxcount < (3+cnt last (max. "triple))	 ~
+   [qbind first (max. "triple) "T
+    qbind first butfirst (max. "triple) "H
+    qbind last (max. "triple) "E
+    output "true]
+output "false
+end
+
+;; Keyboard commands
+
+to parseloop
+forever [parsekey uppercase readchar]
+end
+
+to parsekey :char
+if :char = "@ [fullclear stop]
+if :char = "+ [moretext stop]
+if :char = "- [lesstext stop]
+if not letterp :char [beep stop]
+bind :char uppercase readchar
+end
+
+;; Keeping track of guesses
+
+to bind :from :to
+if not equalp :to "| | [if not letterp :to [beep stop]
+                        if boundp :to [beep stop]]
+if letterp thing :from [dark thing :from]
+make :from :to
+fixtop :from
+if letterp :to [light :to]
+showclear :text
+end
+
+to qbind :from :to
+if letterp thing :from [stop]
+make :from :to
+fixtop :from
+light :to
+end
+
+;; Maintaining the display
+
+to redisplay :flag
+cleartext
+showtop
+alphabet
+showcode :text
+if :flag [showclear :text]
+end
+
+;; Top section of display (letter counts and guesses)
+
+to showtop
+setcursor [0 0]
+showrow "A "E
+showrow "F "J
+showrow "K "O
+showrow "P "T
+showrow "U "Y
+showrow "Z "Z
+end
+
+to showrow :from :to
+forletters :from :to [setposn ? cursor   onetop ?]
+print []
+end
+
+to onetop :letter
+localmake "count cnt :letter
+if :count = 0 [type word :letter "|      | stop]
+localmake "text (word :letter "- twocol :count "- thing :letter)
+ifelse :maxcount < :count+3 [invtype :text] [type :text]
+type "| |
+end
+
+to twocol :number
+if :number > 9 [output :number]
+output word 0 :number
+end
+
+to fixtop :letter
+setcursor posn :letter
+onetop :letter
+end
+
+;; Middle section of display (guessed cleartext letters)
+
+to alphabet
+setcursor [6 6]
+forletters "A "Z [ifelse boundp ? [invtype ?] [type ?]]
+end
+
+to light :letter
+setcursor list 6+(index :letter) 6
+invtype :letter
+setbound :letter
+end
+
+to dark :letter
+setcursor list 6+(index :letter) 6
+type :letter
+setunbound :letter
+end
+
+;; Bottom section of display (coded text)
+
+to showcode :text
+make "moretext []
+showcode1 8 0 :text
+end
+
+to showcode1 :row :col :text
+if emptyp :text [make "moretext [] stop]
+if :row > 22 [stop]
+if and equalp :row 16 equalp :col 0 [make "moretext :text]
+if (:col+count first :text) > 37 [showcode1 :row+2 0 :text stop]
+codeword :row :col first :text
+showcode1 :row (:col+1+count first :text) butfirst :text
+end
+
+to codeword :row :col :word
+setcursor list :col :row
+invtype :word
+end
+
+;; Bottom section of display (cleartext)
+
+to showclear :text
+showclear1 8 0 :text 2
+end
+
+to showclear1 :row :col :text :delta
+if emptyp :text [stop]
+if :row > 23 [stop]
+if keyp [stop]
+if (:col+count first :text) > 37 ~
+   [showclear1 :row+:delta 0 :text :delta stop]
+clearword :row :col first :text
+showclear1 :row (:col+1+count first :text) butfirst :text :delta
+end
+
+to clearword :row :col :word
+setcursor list :col :row+1
+foreach :word [ifelse letterp ? [type thing ?] [type ?]]
+end
+
+;; Windowing commands
+
+to fullclear
+cleartext
+showclear1 0 0 :fulltext 1
+print []
+invtype [type any char to redisplay]
+ignore readchar
+redisplay "true
+end
+
+to moretext
+if emptyp :moretext [beep stop]
+push "textstack :text
+make "text :moretext
+redisplay "true
+end
+
+to lesstext
+if emptyp :textstack [beep stop]
+make "text pop "textstack
+redisplay "true
+end
+
+;; Iteration tool for letters
+
+to forletters :from :to :action
+for [lettercode [ascii :from] [ascii :to]] ~
+    [apply :action (list char :lettercode)]
+end
+
+;; Data abstraction (constructors and selectors)
+
+to setbound :letter
+make word "bound :letter "true
+end
+
+to setunbound :letter
+make word "bound :letter "false
+end
+
+to boundp :letter
+output thing word "bound :letter
+end
+
+to setcnt :letter :thing
+make (word "cnt :letter) :thing
+end
+
+to cnt :letter
+output thing (word "cnt :letter)
+end
+
+to setposn :letter :thing
+make (word "posn :letter) :thing
+end
+
+to posn :letter
+output thing (word "posn :letter)
+end
+
+to setcount. :word :thing
+make (word "count. :word) :thing
+end
+
+to count. :word
+output thing (word "count. :word)
+end
+
+to setlist. :word :thing
+make (word "list. :word) :thing
+end
+
+to list. :word
+output thing (word "list. :word)
+end
+
+to setmax. :word :thing
+make (word "max. :word) :thing
+end
+
+to max. :word
+output thing (word "max. :word)
+end
+
+;; Miscellaneous helpers
+
+to index :letter
+output (ascii :letter)-(ascii "A)
+end
+
+to beep
+tone 440 15
+end
+
+to invtype :text
+type standout :text
+end
+
+to nonneg :number
+output ifelse :number < 0 [0] [:number]
+end
+
+;; Sample cryptograms
+
+make "cgram1 [Dzynufqyjulli, jpqhq ok yr hoxpj qnzeujory qceqwj xhrtoyx
+   zw oyjr u trhjptpolq trhln. oynqqn, rzh qceqkkogq eryeqhy tojp
+   whrvlqfk rd qnzeujory uj whqkqyj kofwli fquyk jpuj jpq |xhrty-zwk| nr
+   yrj pugq kzep u trhln. u nqeqyj qnzeujory uofk uj, whqwuhqk drh, u
+   frhq trhjptpolq dzjzhq, tojp u noddqhqyj erffzyoji kwohoj, noddqhqyj
+   reezwujoryk, uyn frhq hqul zjoloji jpuy ujjuoyoyx kjujzk uyn kuluhi.]
+
+make "cgram2 [Lvo vfkp lfzj md opaxflimn iz lm gitokflo fnp zlkonblvon f
+   hmalv'z inilifliuo, fnp fl lvo zfyo liyo lm zoo lm il lvfl vo jnmwz
+   wvfl iz noxozzfkh lm xmco wilv lvo mnbminb fxliuilioz fnp xaglako md
+   zmxiolh, zm lvfl viz inilifliuo xfn to kogoufnl. il iz ftzakp lm
+   lvinj lvfl lviz lfzj xfn to fxxmycgizvop th zm yaxv zillinb in f tms
+   dfxinb dkmnl, yfnicagflinb zhytmgz fl lvo pikoxlimn md pizlfnl
+   fpyinizlkflmkz. lviz iz kflvok f wfh lm kobiyonl fnp tkfinwfzv.]
+
+make "cgram3 [Pcodl hbdcx qxdrdlh yihcodr, hbd rzbiier gxd lih ziyqdhdlh
+   hi hdgzb gwhbdlhcz echdxgzf, xdgnclp gr g ydglr ia ecudxghcil gln
+   zwehcoghcil. gln c niwuh hbgh yirh ia wr jbi rdxciwref xdgn gln jxchd
+   hbd dlpecrb eglpwgpd dodx edgxldn ch uf hbd xiwhd ia "xwl, rqih, xwl"
+   hi rcegr ygxldx.]
+
+make "cgram4 [Jw btn xnsgsyp ejke gfebbcg, dtyjbn fbccsksg, ryu fbccsksg
+   nswcsfpsu pes usgjns, wnssuba, ryu wtptns bw pes qbtyk, pesns zbtcu
+   ls yb knrujyk, yb psgpjyk svfsxp rg r psrfejyk aspebu, ryu yb
+   lcrfilbrnu dtykcsg. jy wrfp, zs rns ksppjyk cbfigpsx gfesutcjyk ryu
+   knrujyk pb pes xbjyp bw pbnptns.]
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/diff b/js/games/nluqo.github.io/~bh/downloads/csls-programs/diff
new file mode 100644
index 0000000..8991bdc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/diff
@@ -0,0 +1,174 @@
+to diff :file1 :file2 :output
+local "caseignoredp
+make "caseignoredp "false
+openread :file1
+openread :file2
+if not emptyp :output [openwrite :output]
+setwrite :output
+print [DIFF results:]
+print sentence [< File 1 =] :file1
+print sentence [> File 2 =] :file2
+diff.same (makefile 1 :file1) (makefile 2 :file2)
+print "==========
+setread []
+setwrite []
+close :file1
+close :file2
+if not emptyp :output [close :output]
+end
+
+;; Skip over identical lines in the two files.
+
+to diff.same :fib1 :fib2
+local [line1 line2]
+do.while [make "line1 getline :fib1
+          make "line2 getline :fib2
+          if and listp :line1 listp :line2 [stop]    ; Both files ended.
+] [equalp :line1 :line2]
+addline :fib1 :line1                                 ; Difference found.
+addline :fib2 :line2
+diff.differ :fib1 :fib2
+end
+
+;; Remember differing lines while looking for ones that match.
+
+to diff.differ :fib1 :fib2
+local "line
+make "line readline :fib1
+addline :fib1 :line
+ifelse memberp :line lines :fib2 ~
+       [diff.found :fib1 :fib2] ~
+       [diff.differ :fib2 :fib1]
+end
+
+to diff.found :fib1 :fib2
+local "lines
+make "lines member2 (last butlast lines :fib1) ~
+                    (last lines :fib1) ~
+                    (lines :fib2)
+ifelse emptyp :lines ~
+       [diff.differ :fib2 :fib1] ~
+       [report :fib1 :fib2 (butlast butlast lines :fib1)
+             (firstn (lines :fib2) (count lines :fib2)-(count :lines))]
+end
+
+to member2 :line1 :line2 :lines
+if emptyp butfirst :lines [output []]
+if and equalp :line1 first :lines equalp :line2 first butfirst :lines ~
+   [output :lines]
+output member2 :line1 :line2 butfirst :lines
+end
+
+to firstn :stuff :number
+if :number = 0 [output []]
+output fput (first :stuff) (firstn butfirst :stuff :number-1)
+end
+
+;; Read from file or from saved lines.
+
+to getline :fib
+nextlinenum :fib
+output readline :fib
+end
+
+to readline :fib
+if savedp :fib [output popsaved :fib]
+setread filename :fib
+output readword
+end
+
+;; Matching lines found, now report the differences.
+
+to report :fib1 :fib2 :lines1 :lines2
+local [end1 end2 dashes]
+if equalp (which :fib1) 2 [report :fib2 :fib1 :lines2 :lines1 stop]
+print "==========
+make "end1 (linenum :fib1)+(count :lines1)-1
+make "end2 (linenum :fib2)+(count :lines2)-1
+make "dashes "false
+ifelse :end1 < (linenum :fib1) [
+    print (sentence "INSERT :end1+1 (word (linenum :fib2) "- :end2))
+] [ifelse :end2 < (linenum :fib2) [
+    print (sentence "DELETE (word (linenum :fib1) "- :end1) :end2+1)
+] [
+    print (sentence "CHANGE (word (linenum :fib1) "- :end1)
+                            (word (linenum :fib2) "- :end2))
+    make "dashes "true
+]]
+process :fib1 "|< | :lines1 :end1
+if :dashes [print "-----]
+process :fib2 "|> | :lines2 :end2
+diff.same :fib1 :fib2
+end
+
+to process :fib :prompt :lines :end
+foreach :lines [type :prompt print ?]
+savelines :fib butfirst butfirst chop :lines (lines :fib)
+setlines :fib []
+setlinenum :fib :end+2
+end
+
+to chop :counter :stuff
+if emptyp :counter [output :stuff]
+output chop butfirst :counter butfirst :stuff
+end
+
+;; Constructor, selectors, and mutators for File Information Block (FIB)
+;; Five elements: file number, file name, line number,
+;; differing lines, and saved lines for re-reading.
+
+to makefile :number :name
+local "file
+make "file array 5               ; Items 4 and 5 will be empty lists.
+setitem 1 :file :number
+setitem 2 :file :name
+setitem 3 :file 0
+output :file
+end
+
+to which :fib
+output item 1 :fib
+end
+
+to filename :fib
+output item 2 :fib
+end
+
+to linenum :fib
+output item 3 :fib
+end
+
+to nextlinenum :fib
+setitem 3 :fib (item 3 :fib)+1
+end
+
+to setlinenum :fib :value
+setitem 3 :fib :value
+end
+
+to addline :fib :line
+setitem 4 :fib (lput :line item 4 :fib)
+end
+
+to setlines :fib :value
+setitem 4 :fib :value
+end
+
+to lines :fib
+output item 4 :fib
+end
+
+to savelines :fib :value
+setitem 5 :fib (sentence :value item 5 :fib)
+end
+
+to savedp :fib
+output not emptyp item 5 :fib
+end
+
+to popsaved :fib
+local "result
+make "result first item 5 :fib
+setitem 5 :fib (butfirst item 5 :fib)
+output :result
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/dotgame b/js/games/nluqo.github.io/~bh/downloads/csls-programs/dotgame
new file mode 100644
index 0000000..f68d3fb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/dotgame
@@ -0,0 +1,268 @@
+;;; Connect-the-dots game
+
+to dotgame :size
+; Connect-the-dots game.  Input is the number of dots on each side.
+if :LogoPlatform = "Windows [maximize.window "true]
+ht cs
+setpc 7
+setpensize [6 6]
+localmake "offset (:size-1)*20
+pu setpos list -:offset -:offset
+board :size
+localmake "lines ~
+   se (crossmap [list (list ?1 ?2) (list ?1 1+?2)]
+                (iseq 0 :size-1) (iseq 0 :size-2)) ~
+      (crossmap [list (list ?1 ?2) (list 1+?1 ?2)]
+                (iseq 0 :size-2) (iseq 0 :size-1))
+localmake "computer 0
+localmake "person 0
+localmake "numboxes (:size-1)*(:size-1)
+localmake "boxlists (array 5 0)
+localmake "oldmove []
+for [i 1 4] [setitem :i :boxlists []]
+setitem 0 :boxlists ~
+        (crossmap [list ?1 ?2] (iseq 0 :size-2) (iseq 0 :size-2))
+localmake "boxes (array :size-1 0)
+for [i 0 :size-2] [setitem :i :boxes (array :size-1 0)]
+
+CATCH "WIN [FOREVER [PERSONMOVE COMMOVE]]	; play the game!
+
+if not emptyp :oldmove [	; make the last move white
+  setpc 7
+  pu
+  setpos map [40*? - :offset] first :oldmove
+  pd
+  setpos map [40*? - :offset] last :oldmove
+]
+if computer > :person ~
+   [print (se [you lost] :computer "to :person)]
+if :computer < :person ~
+   [print (se [you won] :person "to :computer)]
+if :computer = :person [print (se [tie game])]
+setpensize [1 1]
+end
+
+; --------------- Initial board display -------------------------
+
+to board :num
+repeat :num [dots :num]
+end
+
+to dots :num
+pd
+repeat :num [fd 0 pu rt 90 fd 40 lt 90 pd]
+pu lt 90 fd 40 * :num rt 90 fd 40
+end
+
+; -------------- Human player's move ---------------------
+
+to personmove
+; Read a mouse click, turn it into a move if legal.
+localmake "move gmove
+if not legal? :move [print [Not a legal move!  Try again.]
+                     personmove stop]
+drawline :move 6
+localmake "direction reverse (map "difference (last :move) (first :move))
+localmake "found "false
+fillboxes 6 "person
+if :found [personmove]
+end
+
+to gmove
+while [not buttonp] []
+while [buttonp] []
+output findline (map [? + :offset] mousepos)
+end
+
+to findline :pos
+; Find the nearest vertical or horizontal line to the mouse click.
+localmake "xrem remainder (first :pos)+10 40
+localmake "yrem remainder (last :pos)+10 40
+localmake "xpos (first :pos)+10-:xrem
+localmake "ypos (last :pos)+10-:yrem
+if :xrem > :yrem ~
+   [output list (list :xpos/40 :ypos/40) (list :xpos/40+1 :ypos/40)]
+output list (list :xpos/40 :ypos/40) (list :xpos/40 :ypos/40+1)
+end
+
+to legal? :move
+; Output true if this is an undrawn line segment connecting two dots.
+output memberp :move :lines
+end
+
+; ----------------- Computer's move ----------------------
+
+to commove
+; The computer chooses a move, does the housekeeping for it.
+; Strategy: complete boxes if possible, otherwise pick a move that doesn't
+; let the opponent complete a box.
+ifelse not emptyp (item 3 :boxlists) [
+  localmake "move lastline first (item 3 :boxlists)
+] [
+  localmake "goodlines filter "lineokay? :lines
+  ifelse not emptyp :goodlines [
+    localmake "move pick :goodlines
+  ] [
+    localmake "cohorts []
+    makecohorts :lines
+    localmake "move lastline first smallest :cohorts
+  ]
+]
+drawline :move 4
+localmake "direction reverse (map "difference (last :move) (first :move))
+localmake "found "false
+fillboxes 4 "computer
+if :found [commove]
+end
+
+to lineokay? :move
+; Output true if this move won't let the opponent complete a box.
+localmake "direction reverse (map "difference (last :move) (first :move))
+output and (boxokay? first :move) ~
+           (boxokay? (map "difference (first :move) :direction))
+end
+
+to boxokay? :box
+; Output true if this box has fewer than 2 edges already drawn.
+if or ((first :box) < 0) ((last :box) < 0) [output "true]
+if or ((first :box) > (:size-2)) ((last :box) > (:size-2)) [output "true]
+localmake "count item (last :box) item (first :box) :boxes
+if emptyp :count [make "count 0]
+output :count<2
+end
+
+to lastline :box
+; Box has three lines drawn; find the missing one for us to draw.
+if memberp (list :box (map "sum :box [0 1])) :lines [
+  output (list :box (map "sum :box [0 1]))]
+if memberp (list :box (map "sum :box [1 0])) :lines [
+  output (list :box (map "sum :box [1 0]))]
+if memberp (list (map "sum :box [0 1]) (map "sum :box [1 1])) :lines [
+  output (list (map "sum :box [0 1]) (map "sum :box [1 1]))]
+if memberp (list (map "sum :box [1 0]) (map "sum :box [1 1])) :lines [
+  output (list (map "sum :box [1 0]) (map "sum :box [1 1]))]
+output []	; box was full already (from makecohort)
+end
+
+to makecohorts :lines
+; Partition the available boxes into chains, to look for the smallest.
+; Note, the partition is not necessarily optimal -- this algorithm needs work.
+; It's important that LINES be a local variable here, so that we can "draw"
+; lines hypothetically that we're not really going to draw on the board.
+while [not emptyp :lines] [
+  localmake "cohort []
+  makecohort first :lines
+  push "cohorts :cohort
+]
+end
+
+to makecohort :line
+; Group all the boxes in a chain that starts with this line.
+; Mark the line as drawn (locally to caller), then look in both directions
+; for completable boxes.
+make "lines remove :line :lines
+localmake "direction reverse (map "difference (last :line) (first :line))
+makecohort1 (map "difference (first :line) :direction)
+makecohort1 first :line
+end
+
+to makecohort1 :box
+; Examine one of the boxes adjoining the line just hypothetically drawn.
+; It has 0, 1, or 2 undrawn sides.  (If 3 or 4, wouldn't have gotten here.)
+; 0 sides -> count the box if not already, but no further lines in the chain.
+; 1 side -> count the box, continue the chain with its last side.
+; 2 sides -> the box isn't ready to complete, so it's not in this chain.
+if or ((first :box) < 0) ((last :box) < 0) [stop]
+if or ((first :box) > (:size-2)) ((last :box) > (:size-2)) [stop]
+localmake "togo filter [memberp (list (map "sum :box first ?)
+				      (map "sum :box last ?))
+				:lines] ~
+		       [[[0 0] [0 1]] [[0 0] [1 0]]
+		        [[1 0] [1 1]] [[0 1] [1 1]]]
+if (count :togo)=2 [stop]
+if not memberp :box :cohort [push "cohort :box]
+if emptyp :togo [stop]
+localmake "line (list (map "sum :box first first :togo)
+                      (map "sum :box last first :togo))
+makecohort :line
+end
+
+to smallest :cohorts [:sofar []] [:minsize :numboxes+1]
+if emptyp :cohorts [output :sofar]
+if (count first :cohorts) < :minsize ~
+   [output (smallest bf :cohorts first :cohorts count first :cohorts)]
+output (smallest bf :cohorts :sofar :minsize)
+end
+
+; ----------- Common procedures for person and computer moves --------
+
+to drawline :move :color
+; Actually draw the selected move on the screen.
+if not emptyp :oldmove [
+  setpc 7
+  pu
+  setpos map [40*? - :offset] first :oldmove
+  pd
+  setpos map [40*? - :offset] last :oldmove
+]
+setpc :color
+pu
+setpos map [40*? - :offset] first :move
+pd
+setpos map [40*? - :offset] last :move
+make "oldmove :move
+end
+
+to fillboxes :color :owner
+; Implicit inputs (inherited from caller):
+;   :move is the move someone just made.
+;   :direction is [1 0] for vertical move, [0 1] for horizontal.
+; Note that the line is drawn, check the two boxes (maybe) on either side,
+; color them and count them for the appropriate player, see if game over.
+make "lines remove :move :lines
+if boxbefore? :move [fillbox (map "difference (first :move) :direction)]
+if boxafter? :move [fillbox first :move]
+testwin
+end
+
+to boxafter? :move
+; Output true if the box above or to the right of the move is now complete.
+output (increment first :move)=4
+end
+
+to boxbefore? :move
+; Output true if the box below or to the left of the move is now complete.
+localmake "p3 (map "difference (first :move) :direction)
+output (increment :p3)=4
+end
+
+to increment :box
+; If this isn't a box at all (might be if the move was on a border),
+; just output [].  Otherwise, increment the number in the :boxes array,
+; and move this box from one of the :boxlists to the next higher one.
+; Output the new count of number of lines drawn in this box.
+if or ((first :box) < 0) ((last :box) < 0) [output []]
+if or ((first :box) > (:size-2)) ((last :box) > (:size-2)) [output []]
+localmake "count item (last :box) item (first :box) :boxes
+if emptyp :count [make "count 0]
+setitem (last :box) item (first :box) :boxes :count+1
+setitem :count :boxlists (remove :box item :count :boxlists)
+setitem :count+1 :boxlists (fput :box item :count+1 :boxlists)
+output :count+1
+end
+
+to fillbox :box
+; Color in a completed box, increase the box count of its owner, and
+; flag that a box was completed.
+pu
+setpos (map [40*? - :offset] :box)
+filled :color [repeat 4 [fd 40 rt 90]]
+make :owner (thing :owner)+1
+make "found "true
+end
+
+; ------------------- Endgame processing --------------------
+
+to testwin
+if :computer+:person = :numboxes [throw "win]
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/format b/js/games/nluqo.github.io/~bh/downloads/csls-programs/format
new file mode 100644
index 0000000..13042b1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/format
@@ -0,0 +1,157 @@
+to format :from :to
+openread :from
+openwrite :to
+setread :from
+setwrite :to
+init.vars
+loop
+setread []
+setwrite []
+close :from
+close :to
+end
+
+to init.vars
+make "pageheight 66
+make "topmar 6
+make "lines 54
+make "leftmar 7
+make "width 65
+make "filltab 5
+make "nofilltab 0
+make "parskip 1
+make "spacing 1
+make "started "false
+make "filling "true
+make "printed 0
+make "inline []
+end
+
+to loop
+forever [if process nextword [stop]]
+end
+
+;; Add a word to the output file, starting a new line if necessary
+
+to process :word
+if listp :word [output "true]
+if not :started [start]
+if (:linecount+1+count :word) > :width [putline]
+addword :word
+output "false
+end
+
+to addword :word
+if not emptyp :line [make "linecount :linecount+1]
+make "line lput :word :line
+make "linecount :linecount+count :word
+end
+
+to putline
+repeat :leftmar+:indent [type "| |]
+putwords :line ((count :line)-1) (:width-:linecount)
+newline
+skip :spacing
+end
+
+to putwords :line :spaces :filler
+local "perword
+if emptyp :line [stop]
+type first :line
+make "perword ifelse :spaces > 0 [int ((:filler+:spaces-1)/:spaces)] [0]
+if :filler > 0 [repeat :perword [type "| |]]
+type "| |
+putwords (butfirst :line) (:spaces-1) (:filler-:perword)
+end
+
+;; Get the next input word, reading a new line if necessary
+
+to nextword
+if not emptyp :inline [output extract.word]
+if not :filling [break]
+make "inline readword
+if listp :inline [break output []]
+if emptyp :inline [break output nextword]
+if equalp first :inline "|*| ~
+   [run butfirst :inline
+    make "inline "]
+make "inline skipspaces :inline
+output nextword
+end
+
+to extract.word
+local "result
+make "result firstword :inline
+make "inline skipfirst :inline
+output :result
+end
+
+to firstword :word
+if emptyp :word [output "]
+if equalp first :word "| | [output "]
+output word (first :word) (firstword butfirst :word)
+end
+
+to skipfirst :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces :word]
+output skipfirst butfirst :word
+end
+
+to skipspaces :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces butfirst :word]
+output :word
+end
+
+;; Formatting helpers
+
+to start
+make "started "true
+repeat :topmar [print []]
+newindent
+end
+
+to newindent
+newline
+make "indent ifelse :filling [:filltab] [:nofilltab]
+make "linecount :indent
+end
+
+to newline
+make "line []
+make "indent 0
+make "linecount 0
+end
+
+to break
+if emptyp :line [stop]
+make "linecount :width
+putline
+newindent
+if :filling [skip :parskip]
+end
+
+;; Formatting commands to be invoked by the user
+
+to skip :howmany
+break
+repeat :howmany [print []]
+make "printed :printed+:howmany
+if :printed < :lines [stop]
+repeat :pageheight-:printed [print []]
+make "printed 0
+end
+
+to nofill
+break
+make "filling "false
+newindent
+end
+
+to yesfill
+break
+if not :filling [skip :parskip]
+make "filling "true
+newindent
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/fsm b/js/games/nluqo.github.io/~bh/downloads/csls-programs/fsm
new file mode 100644
index 0000000..27915e7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/fsm
@@ -0,0 +1,355 @@
+;;; Finite State Machine Interpreter (FSM)
+
+to game :which
+fsm thing word "mach :which
+end
+
+to fsm :machine
+cleartext
+setcursor [0 3]
+localmake "start startpart :machine
+localmake "moves movepart :machine
+localmake "accept acceptpart :machine
+fsm1 :start
+end
+
+to fsm1 :here
+ifelse memberp :here :accept [accept] [reject]
+fsm1 (fsmnext :here readchar)
+end
+
+to fsmnext :here :input
+blank
+if memberp :input (list char 13 char 10) ~
+   [print ifelse memberp :here :accept ["| ACCEPT|] ["| REJECT|]
+    output :start]
+type :input
+catch "error [output last find [fsmtest :here :input ?] :moves]
+output -1
+end
+
+to fsmtest :here :input :move
+output and (equalp :here arrowtail :move) (memberp :input arrowtext :move)
+end
+
+;; Display machine state
+
+to accept
+display "accept
+end
+
+to reject
+display "reject
+end
+
+to blank
+display "|      |
+end
+
+to display :text
+localmake "oldpos cursor
+setcursor [15 1]
+type :text
+setcursor :oldpos
+end
+
+;; Data abstraction for machines
+
+to startpart :machine
+output first :machine
+end
+
+to movepart :machine
+output first bf :machine
+end
+
+to acceptpart :machine
+output last :machine
+end
+
+to make.machine :start :moves :accept
+output (list :start :moves :accept)
+end
+
+;; Data abstraction for arrows
+
+to arrowtail :arrow
+output first :arrow
+end
+
+to arrowtext :arrow
+output first butfirst :arrow
+end
+
+to arrowhead :arrow
+output last :arrow
+end
+
+to make.arrow :tail :text :head
+output (list :tail :text :head)
+end
+
+;; Machine descriptions for the guessing game
+
+make "mach1 [1 [[1 AB 1]] [1]]
+make "mach2 [1 [[1 ABC 2] [2 ABC 1]] [1]]
+make "mach3 [1 [[1 A 2] [2 B 3] [3 ABC 3]] [3]]
+make "mach4 [1 [[1 A 2] [1 B 3] [1 C 4] [2 A 1] [3 B 1] [4 C 1]] [1]]
+make "mach5 [1 [[1 ABC 2] [2 B 1]] [1]]
+make "mach6 [1 [[1 A 2] [2 AB 2] [2 C 3] [3 AB 2] [3 C 3]] [3]]
+make "mach7 [1 [[1 AB 1] [1 C 2] [2 C 1]] [1]]
+make "mach8 [1 [[1 A 2] [1 BC 1] [2 A 1] [2 BC 2]] [1]]
+make "mach9 [1 [[1 AB 1] [1 C 2] [2 A 3] [2 B 1] [3 A 1]] [1]]
+make "mach10 [1 [[1 A 2] [1 BC 1] [2 A 2] [2 B 3] [2 C 1]
+                 [3 A 2] [3 B 1] [3 C 4] [4 A 2] [4 B 5] [4 C 1]
+                 [5 A 6] [5 BC 1] [6 ABC 6]]
+              [6]]
+
+
+;;; Regular Expression to FSM Translation (MACHINE)
+
+to machine :regexp
+localmake "nextstate 0
+output optimize determine nondet :regexp
+end
+
+;; First step: make a possibly nondeterministic machine
+
+to nondet :regexp
+if and (wordp :regexp) (equalp count :regexp 1) [output ndletter :regexp]
+if wordp :regexp [output ndor reduce "sentence :regexp]
+if equalp first :regexp "or [output ndor butfirst :regexp]
+if equalp first :regexp "* [output ndmany last :regexp]
+output ndconcat :regexp
+end
+
+;; Alphabet rule
+
+to ndletter :letter
+localmake "from newstate
+localmake "to newstate
+output make.machine :from (list (make.arrow :from :letter :to)) (list :to)
+end
+
+;; Concatenation rule
+
+to ndconcat :exprs
+output reduce "string (map "nondet :exprs)
+end
+
+to string :machine1 :machine2
+output (make.machine (startpart :machine1)
+                     (sentence (movepart :machine1)
+                               (splice acceptpart :machine1 :machine2)
+                               (movepart :machine2))
+                     (stringa (acceptpart :machine1)
+                              (startpart :machine2)
+                              (acceptpart :machine2)))
+end
+
+to stringa :accept1 :start2 :accept2
+if memberp :start2 :accept2 [output sentence :accept1 :accept2]
+output :accept2
+end
+
+;; Alternatives rule
+
+to ndor :exprs
+localmake "newstart newstate
+localmake "machines (map "nondet :exprs)
+localmake "accepts map.se "acceptpart :machines
+output (make.machine :newstart
+                     (sentence map.se "movepart :machines
+                               map.se "or.splice :machines)
+                     ifelse not emptyp find [memberp (startpart ?)
+                                                     (acceptpart ?)]
+                                            :machines
+                            [fput :newstart :accepts]
+                            [:accepts])
+end
+
+to or.splice :machine
+output map [newtail ? :newstart] (arrows.from.start :machine)
+end
+
+;; Repetition rule
+
+to ndmany :regexp
+localmake "machine nondet :regexp
+output (make.machine (startpart :machine)
+                     sentence (movepart :machine)
+                              (splice (acceptpart :machine) :machine)
+                     fput (startpart :machine) (acceptpart :machine))
+end
+
+;; Generate moves from a bunch of given states (:accepts) duplicating
+;; the moves from the start state of some machine (:machine).
+;; Used for concatenation rule to splice two formerly separate machines;
+;; used for repetition rule to "splice" a machine to itself.
+
+to splice :accepts :machine
+output map.se [copy.to.accepts ?] (arrows.from.start :machine)
+end
+
+to arrows.from.start :machine
+output filter [equalp startpart :machine arrowtail ?] movepart :machine
+end
+
+to copy.to.accepts :move
+output map [newtail :move ?] :accepts
+end
+
+to newtail :arrow :tail
+output make.arrow :tail (arrowtext :arrow) (arrowhead :arrow)
+end
+
+;; Make a new state number
+
+to newstate
+make "nextstate :nextstate+1
+output :nextstate
+end
+
+;; Second step: Turn nondeterministic FSM into a deterministic one
+;; Also eliminates "orphan" (unreachable) states.
+
+to determine :machine
+localmake "moves movepart :machine
+localmake "accepts acceptpart :machine
+localmake "states []
+localmake "join.state.list []
+localmake "newmoves nd.traverse (startpart :machine)
+output make.machine (startpart :machine) ~
+                    :newmoves ~
+                    filter [memberp ? :states] :accepts
+end
+
+to nd.traverse :state
+if memberp :state :states [output []]
+make "states fput :state :states
+localmake "newmoves (check.nd filter [equalp arrowtail ? :state] :moves)
+output sentence :newmoves map.se "nd.traverse (map "arrowhead :newmoves)
+end
+
+to check.nd :movelist
+if emptyp :movelist [output []]
+localmake "letter arrowtext first :movelist
+localmake "heads sort map "arrowhead ~
+                          filter [equalp :letter arrowtext ?] :movelist
+if emptyp butfirst :heads ~
+   [output fput first :movelist
+                check.nd filter [not equalp :letter arrowtext ?] :movelist]
+localmake "check.heads member :heads :join.state.list
+if not emptyp :check.heads ~
+   [output fput make.arrow :state :letter first butfirst :check.heads ~
+                check.nd filter [not equalp :letter arrowtext ?] :movelist]
+localmake "join.state newstate
+make "join.state.list fput :heads fput :join.state :join.state.list
+make "moves sentence :moves ~
+                     map [make.arrow :join.state arrowtext ? arrowhead ?] ~
+                         filter [memberp arrowtail ? :heads] :moves
+if not emptyp find [memberp ? :accepts] :heads ~
+   [make "accepts sentence :accepts :join.state]
+output fput make.arrow :state :letter :join.state ~
+            check.nd filter [not equalp :letter arrowtext ?] :movelist
+end
+
+to sort :list
+if emptyp :list [output []]
+output insert first :list sort butfirst :list
+end
+
+to insert :value :sorted
+if emptyp :sorted [output (list :value)]
+if :value = first :sorted [output :sorted]
+if :value < first :sorted [output fput :value :sorted]
+output fput first :sorted insert :value butfirst :sorted
+end
+
+;; Third step: Combine redundant states.
+;; Also combines arrows with same head and tail: [1 A 2] [1 B 2] -> [1 AB 2].
+
+to optimize :machine
+localmake "stubarray array :nextstate
+foreach (movepart :machine) "array.save
+localmake "states sort fput (startpart :machine) ~
+                            map "arrowhead movepart :machine
+localmake "start startpart :machine
+foreach reverse :states [optimize.state ? ?rest]
+output (make.machine :start
+                     map.se [fix.arrows ? item ? :stubarray] :states
+                     filter [memberp ? :states] acceptpart :machine)
+end
+
+to array.save :move
+setitem (arrowtail :move) :stubarray ~
+        stub.add (arrow.stub :move) (item (arrowtail :move) :stubarray)
+end
+
+to stub.add :stub :stublist
+if emptyp :stublist [output (list :stub)]
+if (stub.head :stub) < (stub.head first :stublist) ~
+   [output fput :stub :stublist]
+if (stub.head :stub) = (stub.head first :stublist) ~
+   [output fput make.stub letter.join (stub.text :stub)
+                                      (stub.text first :stublist)
+                          stub.head :stub
+                butfirst :stublist]
+output fput first :stublist (stub.add :stub butfirst :stublist)
+end
+
+to letter.join :this :those
+if emptyp :those [output :this]
+if beforep :this first :those [output word :this :those]
+output word (first :those) (letter.join :this butfirst :those)
+end
+
+to optimize.state :state :others
+localmake "candidates filter (ifelse memberp :state acceptpart :machine
+                                     [[memberp ? acceptpart :machine]]
+                                     [[not memberp ? acceptpart :machine]]) ~
+                             :others
+localmake "mymoves item :state :stubarray
+localmake "twin find [equalp (item ? :stubarray) :mymoves] :candidates
+if emptyp :twin [stop]
+make "states remove :state :states
+if equalp :start :state [make "start :twin]
+foreach :states ~
+        [setitem ? :stubarray 
+                 (cascade [emptyp ?2]
+                          [stub.add (change.head :state :twin first ?2) ?1]
+                          filter [not equalp stub.head ? :state] item ? :stubarray
+                          [butfirst ?2]
+                          filter [equalp stub.head ? :state] item ? :stubarray)]
+end
+
+to change.head :from :to :stub
+if not equalp (stub.head :stub) :from [output :stub]
+output list (stub.text :stub) :to
+end
+
+to fix.arrows :state :stublist
+output map [stub.arrow :state ?] :stublist
+end
+
+;; Data abstraction for "stub" arrow (no tail)
+
+to arrow.stub :arrow
+output butfirst :arrow
+end
+
+to make.stub :text :head
+output list :text :head
+end
+
+to stub.text :stub
+output first :stub
+end
+
+to stub.head :stub
+output last :stub
+end
+
+to stub.arrow :tail :stub
+output fput :tail :stub
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=A
new file mode 100644
index 0000000..a9fb169
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=A
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/csls-programs</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/csls-programs</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="Makefile.am">Makefile.am</a>            </td><td align="right">2020-12-30 07:37  </td><td align="right">218 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/algs">algs</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="basic">basic</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">6.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buttons">buttons</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="cards">cards</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="crypto">crypto</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">7.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="diff">diff</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/doctor">doctor</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 26K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="dotgame">dotgame</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">8.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="format">format</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fsm">fsm</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="master">master</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match">match</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/math">math</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">7.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mines">mines</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="multi">multi</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">658 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pascal">pascal</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 29K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="playfair">playfair</a>               </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="plot">plot</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">928 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/poker">poker</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pour">pour</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="psort">psort</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="solitaire">solitaire</a>              </td><td align="right">2020-12-30 07:37  </td><td align="right">9.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="streams">streams</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="student">student</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right"> 35K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="tower">tower</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/ttt">ttt</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">3.5K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=D
new file mode 100644
index 0000000..e6a9e17
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=D;O=D
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/csls-programs</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/csls-programs</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/ttt">ttt</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">3.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="tower">tower</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="student">student</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right"> 35K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="streams">streams</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="solitaire">solitaire</a>              </td><td align="right">2020-12-30 07:37  </td><td align="right">9.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="psort">psort</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pour">pour</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/poker">poker</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="plot">plot</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">928 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="playfair">playfair</a>               </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pascal">pascal</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 29K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="multi">multi</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">658 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mines">mines</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/math">math</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">7.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match">match</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="master">master</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fsm">fsm</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="format">format</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="dotgame">dotgame</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">8.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/doctor">doctor</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 26K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="diff">diff</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="crypto">crypto</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">7.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="cards">cards</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buttons">buttons</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="basic">basic</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">6.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/algs">algs</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="Makefile.am">Makefile.am</a>            </td><td align="right">2020-12-30 07:37  </td><td align="right">218 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=A
new file mode 100644
index 0000000..ca7b486
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=A
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/csls-programs</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/csls-programs</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="Makefile.am">Makefile.am</a>            </td><td align="right">2020-12-30 07:37  </td><td align="right">218 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/algs">algs</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="basic">basic</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">6.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buttons">buttons</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="cards">cards</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="crypto">crypto</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">7.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="diff">diff</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/doctor">doctor</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 26K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="dotgame">dotgame</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">8.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="format">format</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fsm">fsm</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="master">master</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match">match</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/math">math</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">7.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mines">mines</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="multi">multi</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">658 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pascal">pascal</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 29K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="playfair">playfair</a>               </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="plot">plot</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">928 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/poker">poker</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pour">pour</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="psort">psort</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="solitaire">solitaire</a>              </td><td align="right">2020-12-30 07:37  </td><td align="right">9.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="streams">streams</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="student">student</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right"> 35K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="tower">tower</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/ttt">ttt</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">3.5K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=D
new file mode 100644
index 0000000..e6a9e17
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=M;O=D
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/csls-programs</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/csls-programs</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/ttt">ttt</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">3.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="tower">tower</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="student">student</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right"> 35K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="streams">streams</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="solitaire">solitaire</a>              </td><td align="right">2020-12-30 07:37  </td><td align="right">9.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="psort">psort</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pour">pour</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/poker">poker</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="plot">plot</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">928 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="playfair">playfair</a>               </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pascal">pascal</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 29K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="multi">multi</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">658 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mines">mines</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/math">math</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">7.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match">match</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="master">master</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fsm">fsm</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="format">format</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="dotgame">dotgame</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">8.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/doctor">doctor</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 26K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="diff">diff</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="crypto">crypto</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">7.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="cards">cards</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buttons">buttons</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="basic">basic</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">6.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/algs">algs</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="Makefile.am">Makefile.am</a>            </td><td align="right">2020-12-30 07:37  </td><td align="right">218 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=N;O=D
new file mode 100644
index 0000000..e6a9e17
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=N;O=D
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/csls-programs</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/csls-programs</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/ttt">ttt</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">3.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="tower">tower</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="student">student</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right"> 35K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="streams">streams</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="solitaire">solitaire</a>              </td><td align="right">2020-12-30 07:37  </td><td align="right">9.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="psort">psort</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pour">pour</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/poker">poker</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="plot">plot</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">928 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="playfair">playfair</a>               </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pascal">pascal</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 29K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="multi">multi</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">658 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mines">mines</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/math">math</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">7.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match">match</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="master">master</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fsm">fsm</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="format">format</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="dotgame">dotgame</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">8.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/doctor">doctor</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 26K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="diff">diff</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="crypto">crypto</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">7.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="cards">cards</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buttons">buttons</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="basic">basic</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">6.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/algs">algs</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="Makefile.am">Makefile.am</a>            </td><td align="right">2020-12-30 07:37  </td><td align="right">218 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=A
new file mode 100644
index 0000000..ed69dfa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=A
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/csls-programs</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/csls-programs</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="Makefile.am">Makefile.am</a>            </td><td align="right">2020-12-30 07:37  </td><td align="right">218 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="multi">multi</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">658 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="plot">plot</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">928 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="tower">tower</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="cards">cards</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/poker">poker</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="psort">psort</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="playfair">playfair</a>               </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="streams">streams</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="format">format</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pour">pour</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match">match</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/ttt">ttt</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">3.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="diff">diff</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/algs">algs</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="basic">basic</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">6.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buttons">buttons</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/math">math</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">7.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="crypto">crypto</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">7.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="dotgame">dotgame</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">8.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fsm">fsm</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="solitaire">solitaire</a>              </td><td align="right">2020-12-30 07:37  </td><td align="right">9.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="master">master</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mines">mines</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/doctor">doctor</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 26K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pascal">pascal</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 29K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="student">student</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right"> 35K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=D
new file mode 100644
index 0000000..2dd432e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/index.html?C=S;O=D
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/csls-programs</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/csls-programs</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/?C=N;O=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="student">student</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right"> 35K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pascal">pascal</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 29K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/doctor">doctor</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 26K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="mines">mines</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="master">master</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right"> 12K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="solitaire">solitaire</a>              </td><td align="right">2020-12-30 07:37  </td><td align="right">9.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="fsm">fsm</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">9.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="dotgame">dotgame</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">8.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="crypto">crypto</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">7.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/math">math</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">7.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="buttons">buttons</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="basic">basic</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">6.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/algs">algs</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">6.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="diff">diff</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">3.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/ttt">ttt</a>                    </td><td align="right">2020-12-30 07:37  </td><td align="right">3.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match">match</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">3.4K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="pour">pour</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="format">format</a>                 </td><td align="right">2020-12-30 07:37  </td><td align="right">2.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="streams">streams</a>                </td><td align="right">2020-12-30 07:37  </td><td align="right">2.1K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="playfair">playfair</a>               </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="psort">psort</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">2.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/csls-programs/poker">poker</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.5K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="cards">cards</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.2K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="tower">tower</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">1.0K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/text.gif" alt="[TXT]"></td><td><a href="plot">plot</a>                   </td><td align="right">2020-12-30 07:37  </td><td align="right">928 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="multi">multi</a>                  </td><td align="right">2020-12-30 07:37  </td><td align="right">658 </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="Makefile.am">Makefile.am</a>            </td><td align="right">2020-12-30 07:37  </td><td align="right">218 </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/master b/js/games/nluqo.github.io/~bh/downloads/csls-programs/master
new file mode 100644
index 0000000..f876c6a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/master
@@ -0,0 +1,381 @@
+; [Mastermind game]
+
+cslsload "buttons
+cslsload "streams
+
+to master [:numsquares 4] [:dup.ok "false] [:mysecret "true]
+; Mastermind game program.
+; Program is controlled by mouse clicks or keystrokes.
+if :LogoPlatform = "Windows [maximize.window "true]
+window
+if :LogoPlatform = "wxWidgets [localmake "fontsize labelsize]
+localmake "colors "ROYGBV
+localmake "colornums [[R 4] [O 14] [Y 6] [G 2] [B 1] [V 13]]
+localmake "exact "true
+local [numguesses numcolors column guess gotnum winloop permuting]
+local [perms oldcount newcount guess.exact guess.inexact guess.word]
+catch "quit [forever [
+  catch "master [
+    make "numguesses 0
+    make "numcolors 0
+    make "column 0
+    make "winloop "false
+    initdraw		 ; Clear screen, draw color palette 
+    ifelse :mysecret [
+	ifelse :dup.ok	 ; Choose secret permutation
+	   [make "secret (choose.dup :numsquares :colors)]
+	   [make "secret (choose.nodup :numsquares :colors)]
+        newguess	 ; Display first guess frame
+        action.loop	 ; Read keyboard characters or mouse clicks 
+    ] [
+	catch "win [	 ; User's secret, program has to guess.
+	  ifelse :dup.ok [
+	    make "permuting "false	; Lots of cases with dups okay, so
+	    make "perms (list copies :numsquares "x)
+	    make "newcount 0		; find colors systematically first.
+	    catch "perm [
+	      for [i 1 6] [	; Learn how many red, then orange, etc.
+		make "oldcount :newcount
+		doguess subst :i "x head :perms
+		make "newcount :guess.exact + :guess.inexact
+	    	make "perms flatten stream.map
+		   `[insert ,[:newcount-:oldcount] ,:i ?] :perms
+		make "perms stream.filter
+                          `[okay? ? ,:guess.exact ,:guess.inexact ,:guess.word]
+			  :perms
+		check.consistency :perms
+		if equalp :newcount :numsquares [throw "perm]
+	      ]
+	      check.consistency []	; Tried all colors, user lied.
+	    ]
+	    make "permuting "true
+	  ] [
+	    make "perms perms "123456 :numsquares	; not :dup.ok
+	    make "permuting equalp :numsquares 6
+	  ]
+	  forever [			; common portion
+	    doguess head :perms
+	    if equalp :numsquares :guess.exact + :guess.inexact ~
+	      [make "permuting "true]
+	    make "perms stream.filter
+                          `[okay? ? ,:guess.exact ,:guess.inexact ,:guess.word]
+			  :perms
+	    check.consistency :perms
+	  ]
+	  ; Can't get here; either doguess finds a winner or
+	  ; check.consistency complains.
+	] ; We get here on throw "win from doguess.
+	move [15 12]
+	setpc 7 label "WIN!
+	ct print (sentence [I win in] :numguesses "turns.)
+	make "winloop "true
+	action.loop
+    ]
+]]]
+cs ct setpc 7 st
+end
+
+;;; ================== LOGIC FOR MY GUESSES (USER SECRET) =================
+
+to doguess :guessword
+; Present computer's guess to user and ask about matches.
+newguess				; Draw frame for guess.
+make "guess.word :guessword		; Remember my colors.
+foreach :guessword [apply "putguess item ? :colornums]	; Show colors.
+askexact				; Ask user for exact matches.
+make "gotnum "false
+catch "ready [action.loop]
+pu setpos [150 205] setpc 0 filled 0 [repeat 2 [fd 35 rt 90 fd 110 rt 90]]
+setpc 7
+ifelse :guess.exact < :numsquares [	; Not all colors are exact.
+  ifelse :permuting [			;   If we know all the colors,
+    make "exact "false			;   compute how many are inexact
+    getnum :numsquares-:guess.exact	;   without asking.
+  ] [
+    askinexact				;   Otherwise, ask for inexact.
+    make "gotnum "false
+    catch "ready [action.loop]
+    pu setpos [150 205] setpc 0 filled 0 [repeat 2 [fd 35 rt 90 fd 110 rt 90]]
+    setpc 7
+    if :guess.exact + :guess.inexact > :numsquares ~
+       [check.consistency []]	; Quick error message if too many matches.
+  ]
+] [
+  throw "win				; All colors are exact, we win.
+]
+end
+
+to subst :new :old :word
+; For dups-okay guessing:  Substitute the next trial color for
+; all unknown squares in a partial permutation.
+output map [ifelse equalp ? :old [:new] [?]] :word
+end
+
+to copies :num :letter
+output cascade :num [word ? :letter] "
+end
+
+to insert :num :new :word
+; For dups-okay guessing:  We've learned that there are :NUM instances
+; of color :NEW in the secret combination, so stick that many of them into
+; a still-possible partial permutation, in every possible size=:NUM
+; subset of the unknown slots.
+; The result is a *stream* of possible (partial) permutations.
+if :num=0 [output (list :word)]		; No slots needed, just one result.
+if emptyp :word [output []]		; Not enough slots, no results!
+if equalp first :word "x 		; Else combine results of choosing or ~
+   [op flatten				; not choosing to replace into this X.
+	 stream insert :num-1 :new word :new butfirst :word
+	      `[(list stream.map [word "x ?] insert ,:num ",:new bf ",:word )]]
+output stream.map `[word ",[first :word] ?] insert :num :new butfirst :word
+end
+
+to check.consistency :str
+; If the stream of still-possible permutations is empty, then
+; the user has lied to us.
+if emptyp :str [ct print [Error -- inconsistent answers!]
+		repeat 2 [setbg 4 wait 1 setbg 0 wait 1]
+		type [Click or type anything to restart.] wait 0
+		waitforclick
+		throw "master]
+end
+
+to perms :word :num
+; Output the stream of permutations of :NUM letters chosen from :WORD.
+if :num=0 [output (list "|| )]
+if emptyp :word [output []]	; Can't happen (would mean :num>count :word).
+output flatten stream.map ~
+   `[[letter] stream.map `[word ,:letter ?]
+                         perms remonce :letter ,:word ,[:num-1]] ~
+   :word
+end
+
+to okay? :perm :guess.exact :guess.inexact :guess.word
+output and (equalp :guess.exact exact :perm :guess.word) ~
+           (equalp :guess.inexact inexact :perm :guess.word)
+end
+
+to askexact
+; ct type "|How many EXACT matches? |
+; pu setpos [185 210] setpc 6 label "EXACT?
+localmake "caption.scrunch 1.5
+setbutton [152 210] [100 25] [] "true 0 "EXACT? []
+ern "caption.scrunch
+make "exact "true
+end
+
+to askinexact
+; ct type "|How many INEXACT matches? |
+; pu setpos [185 210] setpc 6 label "INEXACT?
+localmake "caption.scrunch 1.5
+setbutton [152 210] [100 25] [] "true 0 "INEXACT? []
+ern "caption.scrunch
+make "exact "false
+end
+
+;;; ================== LOGIC FOR USER GUESSES (MY SECRET) =================
+
+to choose.dup :number :colors
+if :number = 0 [output "]
+output word (pick :colors) (choose.nodup :number-1 :colors)
+end 
+ 
+to choose.nodup :number :colors
+if :number = 0 [output "]
+make "color pick :colors
+output word :color (choose.nodup :number-1 remonce :color :colors)
+end
+
+;;;;; ================ Used by both kinds of logic ======================
+ 
+to exact :secret :guess
+if empty? :secret [output 0]
+output ehelp + (exact butfirst :secret butfirst :guess)
+end
+
+to ehelp
+ifelse equal? (first :secret) (first :guess) [output 1] [output 0]
+end 
+
+to inexact :secret :guess
+output (anymatch :secret :guess) - (exact :secret :guess)
+end
+
+to anymatch :secret :guess
+if empty? :secret [output 0]
+if member? first :secret :guess ~
+   [output 1 + anymatch (butfirst :secret) (remonce first :secret :guess)]
+output anymatch butfirst :secret :guess
+end 
+
+to remonce :this :those
+if empty? :those [output "]
+if equal? :this first :those [output butfirst :those]
+output word (first :those) (remonce :this butfirst :those)
+end
+
+;;;;; =================== USER INTERFACE (DRAWING) =======================
+
+to initdraw
+fs init.buttons
+localmake "bigwidth ifelse :LogoPlatform = "wxWidgets [5*first :fontsize] [40]
+localmake "bigbutton list :bigwidth 25
+localmake "tallheight ifelse :LogoPlatform="wxWidgets [2+2*last :fontsize] [30]
+localmake "tallbutton list :bigwidth :tallheight
+ifelse :mysecret ~
+  [colorchart 6 "ROYGBV [4 14 6 2 1 13] 165
+   setbutton [-245 -15] :bigbutton [clear] "false 0 "erase "DEL] ~
+  [numchart 0 165]
+setbutton pos0 [-245 -45] :bigbutton [if not :winloop [guess]] "true 0 "OK "RET
+setbutton nxt :tallheight :tallbutton [throw "master] "false 0 [new game] "N
+setbutton nxt 25 :bigbutton [throw "quit] "false 0 "quit "Q
+ignore nxt 10
+setbutton nxt :tallheight :tallbutton [make "mysecret "true  throw "master] ~
+   :mysecret 0 [I guess] "I
+setbutton nxt :tallheight :tallbutton [make "mysecret "false  throw "master] ~
+   (not :mysecret) 0 [Logo guess] "L
+caption [-245 206] [65 29] [Number |of colors:|]
+numsquares -170 2 6
+caption [-10 206] [65 29] [Duplicates allowed:]
+ifelse :LogoPlatform = "wxWidgets [
+localmake "buttonx ((first :fontsize)*10)-5
+setbutton list :buttonx 210 [25 25] [make "dup.ok "true throw "master] ~
+   :dup.ok 0 "yes []
+setbutton list :buttonx+30 210 [25 25] [make "dup.ok "false throw "master] ~
+   (not :dup.ok) 0 "no []
+] [
+setbutton [70 210] [25 25] [make "dup.ok "true throw "master] ~
+   :dup.ok 0 "yes []
+setbutton [100 210] [25 25] [make "dup.ok "false throw "master] ~
+   (not :dup.ok) 0 "no []
+]
+end
+
+to numsquares :xcor :num :last
+if :num > :last [stop]
+setbutton (list :xcor 210) [25 25] `[make "numsquares ,:num throw "master] ~
+   (:num = :numsquares) 0 :num []
+numsquares :xcor+30 :num+1 :last
+end
+
+to colorchart :num :names :colors :ycor
+if :num = 0 [stop]
+setbutton (list -245 :ycor) [25 25] ~
+  `[putguess ",[first :names] ,[first :colors]] "false ~
+  (first :colors) [] (first :names)
+colorchart :num-1 bf :names bf :colors :ycor-30
+end
+
+to numchart :num :ycor
+if :num > :numsquares [stop]
+setbutton (list -245 :ycor) [25 25] ~
+  `[if not :winloop [getnum ,:num]] "false 0 :num :num
+numchart :num+1 :ycor-30
+end
+
+to pos0 :pos
+make "controlpos :pos
+output :pos
+end
+
+to nxt :height
+make "controlpos list (first :controlpos) ((last :controlpos) - (:height + 5))
+output :controlpos
+end
+
+to move :start
+; Move the turtle to the given coordinates
+; relative to the lower left corner of the first empty square
+; in the current frame.
+; Depends on :COLUMN (0 or 1 for >14 guesses), :NUMGUESSES, and :NUMCOLORS
+; Note, since :NUMGUESSES starts at 1,
+; first frame is at [-180 170] not [-180 200].
+pu
+setpos (list (-145 + (first :start) + 210*:column + 25*(:numcolors-1))
+	     (200 + (last :start) - 30*(:numguesses - 14*:column)))
+pd
+end 
+
+; -----------------------------------------------
+
+to newguess
+; Called from MASTER for first guess frame,
+; then from GUESS for later guess frames (my secret),
+; or from DOGUESS (user's secret).
+make "numguesses :numguesses+1
+if :numguesses > 14 [make "column 1]
+make "numcolors 1
+move [0 0]
+drawframe
+make "guess "
+end
+
+to drawframe
+setpc 7 seth 0
+repeat :numsquares [square 25 rt 90 fd 25 lt 90]
+end
+
+to square :side
+repeat 4 [fd :side rt 90]
+end
+
+;;;;; =================== USER INTERFACE (READING) =======================
+
+to waitforclick
+action.off
+; Wait for any key or mouse click, then return, ignoring which/where.
+if buttonp [while [buttonp] []  stop]
+if keyp [ignore rc  stop]
+waitforclick
+end
+
+; ----------- Procedures to carry out user commands ---------------
+
+to getnum :num [:cursor cursor]
+; Called for digit key or mouse click on digit button.
+make ifelse :exact ["guess.exact] ["guess.inexact] :num
+move list ifelse :exact [15] [35] 12
+setpc 0 filled 0 [repeat 4 [fd 20 rt 90]]
+setpc 7 label :num
+; type :num setcursor :cursor
+make "gotnum "true
+end
+
+to putguess :colorletter :colornumber
+; Called from mouse click in color palette;
+;   first input is a letter for :GUESS (e.g. R for red),
+;   second input is a Logo color number for SETPC (e.g. 4 for red).
+if :numcolors < 1 [stop]
+if :numcolors > :numsquares [stop]
+if not :dup.ok [if member? :colorletter :guess [stop]]
+make "guess word :guess :colorletter
+move [0 0]
+filled :colornumber [repeat 4 [fd 25 rt 90]]
+make "numcolors :numcolors+1
+end
+
+to clear
+; Called by clicking ERASE button
+if :numcolors < 2 [stop]
+make "guess butlast :guess
+make "numcolors :numcolors-1
+move [0 0]
+filled 0 [repeat 4 [fd 25 rt 90]]
+end
+
+to guess
+; Called by clicking GUESS button.
+if not :mysecret [if :gotnum [ct wait 0 throw "ready] stop]
+if not (:numcolors > :numsquares) [stop]
+ifelse equal? :guess :secret [
+    move [15 12]
+    setpc 7 label "WIN!
+    print (sentence [You win in] :numguesses "turns.)
+] [
+    move [15 12]
+    setpc 7 label exact :secret :guess
+    move [35 12]
+    setpc 7 label inexact :secret :guess
+    newguess
+]
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/match b/js/games/nluqo.github.io/~bh/downloads/csls-programs/match
new file mode 100644
index 0000000..7b1d3b6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/match
@@ -0,0 +1,165 @@
+to match :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen [output match butfirst :pat butfirst :sen]
+output "false
+end
+
+;; Parsing quantifiers
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+;; Exactly one match
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output match butfirst :pat butfirst :sen
+end
+
+;; Zero or one match
+
+to match?
+make :special.var []
+if emptyp :sen [output match butfirst :pat :sen]
+if not try.pred [output match butfirst :pat :sen]
+make :special.var first :sen
+if match butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output match butfirst :pat :sen
+end
+
+;; Zero or more matches
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+;; One or more matches
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+;; Zero or more matches (as few as possible)
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+;; Match words in a group
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if match butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+;; Applying the predicates
+
+to try.pred
+if listp :special.pred [output match :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output match :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+;; Special predicates
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if match first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/mines b/js/games/nluqo.github.io/~bh/downloads/csls-programs/mines
new file mode 100644
index 0000000..76cf095
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/mines
@@ -0,0 +1,483 @@
+;  Minesweeper game
+
+;  Mouse clicks call HIT procedure
+
+;  Main data structure: array of arrays, e.g.,
+;      (ITEM (ITEM STATUS 3) 5) for row 3 column 5.
+;  Values are: HIDDEN (tan square),
+;              FLAGGED (flagged as a mine),
+;              SHOWN (open, non-mine, shows number of mined neighbors),
+;              BORDER (just outside of actual playing field).
+;  Notice that a FLAGGED square might not really be a mine.
+;  (Player can make mistakes!)
+;  Actual mines are listed in MINES (list of [row col] lists).
+
+cslsload "buttons
+
+to mines
+if :LogoPlatform = "Windows [maximize.window "true]
+localmake "inference "false
+localmake "newnmines 100
+localmake "newsize 15
+localmake "halfsize 10
+localmake "squaresize 2*:halfsize
+localmake "maxxmax :halfsize*15*2
+localmake "maxymax :halfsize*15
+localmake "sizechoice 3
+localmake "hardchoice 2
+localmake "sizes [5 10 15]
+localmake "hardness [38.1 44.45 59.26]
+localmake "windows ifelse :LogoPlatform="Windows [16] [0]
+if :LogoPlatform="wxWidgets [make "windows 16]
+norefresh
+catch "quit [forever [catch "newgame [setup :newnmines :newsize :newsize*2]]]
+refresh
+cs ct setpc 7 st
+end
+
+; ------------------------ Initial setup ---------------------------------
+
+to setup :nmines :rows :columns
+cs ct wait 0 ht fs
+localmake "mines []	; list of [row col] lists
+localmake "statuses (array :rows+2 -1)	; status of each square
+localmake "xmax :halfsize*:columns
+localmake "ymax :halfsize*:rows
+localmake "opening "true
+localmake "playing "true	; false only at end of game
+for [i -1 :rows] [setitem :i :statuses (array :columns+2 -1)]
+putmines :nmines	; Choose mined squares randomly.
+setbg 0
+setup.buttons
+make "nhidden :rows * :columns
+borderrow -1 :columns
+borderrow :rows :columns
+    ; mark nonexistent squares just outside field as BORDER
+    ; to simplify how-many-of-my-neighbors computations
+bordersides :rows-1
+hint		; open some safe squares so we don't have to guess blindly
+localmake "prevmines -1
+pu setxy :maxxmax-100-2*:windows :maxymax+14 setpc 7
+label [Mines left:]
+showminesleft
+action.loop
+end
+
+to putmines :num
+; Choose random square, and make it a mine unless it already was one.
+if :num = 0 [stop]
+localmake "row random :rows
+localmake "col random :columns
+if member? (list :row :col) :mines [putmines :num  stop]
+make "mines fput (list :row :col) :mines
+putmines :num-1
+end
+
+to setup.buttons
+init.buttons
+setbutton (list -:maxxmax :maxymax+10) [60 20] [throw "newgame] ~
+          "false 0 "|NEW GAME| "G
+setbutton (list 80-:maxxmax :maxymax+10) [40 20] [action.off throw "quit] ~
+          "false 0 "QUIT "Q
+caption (list 160-:maxxmax-:windows :maxymax+10) [60 20] "infer:
+drawinferbuttons
+caption (list -:maxxmax -(:maxymax+30)) [60 20] "size:
+caption (list 160-:maxxmax-:windows -(:maxymax+30)) [80 20] "difficulty:
+drawsizebuttons
+setbutton (list -:xmax -:ymax) (list 2*:xmax 2*:ymax) ~
+          [hit :mousepos  showminesleft] "false 9 "|| []
+          ; Entire board is one big button.
+showboard "false   ; input is TRUE to uncover entire board at end of game 
+pu
+end
+
+to drawinferbuttons
+rebutton (list 200-:maxxmax :maxymax+10) [20 20] ~
+         [make "inference "true  drawinferbuttons] ~
+         :inference 0 "Y "Y
+rebutton (list 230-:maxxmax :maxymax+10) [20 20] ~
+         [make "inference "false  drawinferbuttons] ~
+         not :inference 0 "N "N
+end
+
+to drawsizebuttons
+make "newsize item :sizechoice :sizes
+make "newnmines int (item :hardchoice :hardness)*:newsize*:newsize/100
+rebutton (list 40-:maxxmax -(:maxymax+30)) [20 20] ~
+         [make "sizechoice 1  drawsizebuttons] ~
+         :sizechoice=1 0 "S "S
+rebutton (list 70-:maxxmax -(:maxymax+30)) [20 20] ~
+         [make "sizechoice 2  drawsizebuttons] ~
+         :sizechoice=2 0 "M "M
+rebutton (list 100-:maxxmax -(:maxymax+30)) [20 20] ~
+         [make "sizechoice 3  drawsizebuttons] ~
+         :sizechoice=3 0 "L "L
+rebutton (list 230-:maxxmax -(:maxymax+30)) [20 20] ~
+         [make "hardchoice 1  drawsizebuttons] ~
+         :hardchoice=1 0 "1 "1
+rebutton (list 260-:maxxmax -(:maxymax+30)) [20 20] ~
+         [make "hardchoice 2  drawsizebuttons] ~
+         :hardchoice=2 0 "2 "2
+rebutton (list 290-:maxxmax -(:maxymax+30)) [20 20] ~
+         [make "hardchoice 3  drawsizebuttons] ~
+         :hardchoice=3 0 "3 "3
+end
+
+to showminesleft
+if :prevmines=:nmines [stop]
+setpensize [2 2]
+penerase
+if :prevmines > 99 [pu seth 0 setxy :maxxmax-30 :maxymax+14
+                    invoke word "draw int :prevmines/100 7]
+if :prevmines > 9  [pu seth 0 setxy :maxxmax-19 :maxymax+14
+                    invoke word "draw int (remainder :prevmines 100)/10 7]
+if :prevmines > -1 [pu seth 0 setxy :maxxmax-8 :maxymax+14
+                    invoke word "draw remainder :prevmines 10 7]
+penpaint
+if :nmines > 99 [pu seth 0 setxy :maxxmax-30 :maxymax+14
+                 invoke word "draw int :nmines/100 7]
+if :nmines > 9  [pu seth 0 setxy :maxxmax-19 :maxymax+14
+                 invoke word "draw int (remainder :nmines 100)/10 7]
+if :nmines > -1 [pu seth 0 setxy :maxxmax-8 :maxymax+14
+                 invoke word "draw remainder :nmines 10 7]
+make "prevmines :nmines
+pu seth 0 setpensize [1 1]
+end
+
+; --------------------------- Mark border squares -------------------------
+
+to borderrow :row :col
+; Mark all squares on this row (including -1 and :columns) as border
+setstatus :row :col "border
+if :col < 0 [stop]
+borderrow :row :col-1
+end
+
+to bordersides :row
+; Mark squares -1 and :columns on all rows as border
+if :row < 0 [stop]
+setstatus :row -1 "border
+setstatus :row :columns "border
+bordersides :row-1
+end
+
+; ---------------------- Initial and final display of entire board --------
+
+to showboard :over
+; Input is FALSE during setup, TRUE when a mine is uncovered and game ends.
+setpc 7
+for [y -:ymax :ymax :squaresize] [pu setxy -:xmax :y pd setxy :xmax :y]
+for [x -:xmax :xmax :squaresize] [pu setxy :x -:ymax pd setxy :x :ymax]
+pu
+turtlerows :rows-1
+end
+
+to turtlerows :row
+if :row < 0 [stop]
+turtlerow :columns-1
+turtlerows :row-1
+end
+
+to turtlerow :col
+if :col < 0 [stop]
+ifelse :over [		; game over, only hidden squares need be displayed
+  if "hidden = status :row :col [onesquare]
+  if and ("flagged = status :row :col)
+         (not member? (list :row :col) :mines) [
+			; but indicate mistakenly flagged ones
+     setx (:col*:squaresize)-:xmax
+     sety (:row*:squaresize)-:ymax
+     setpensize [3 3]
+     setpc 4		; draw red X over mine symbol
+     pd setxy xcor+:squaresize ycor+:squaresize
+     pu setx xcor-:squaresize
+     pd setxy xcor+:squaresize ycor-:squaresize
+     pu setpensize [1 1] setpc 7
+  ]
+] [			; game starting, mark each square as hidden
+  setstatus :row :col "hidden
+ ]
+turtlerow :col - 1
+end
+
+to onesquare
+action.once
+setx (:col*:squaresize)-:xmax
+sety (:row*:squaresize)-:ymax
+ifelse member? (list :row :col) :mines [
+  setpc 2			; thick green border
+  pu setxy xcor+1 ycor+1
+  pd repeat 4 [fd :squaresize-2 rt 90]
+  pu setxy xcor+1 ycor+1
+  pd filled 13 [repeat 4 [fd :squaresize-4 rt 90]]
+] [
+  setpc 11			; grey in aqua border for empty
+  pu setxy xcor+1 ycor+1
+  pd filled 15 [repeat 4 [fd :squaresize-2 rt 90]]
+]
+end
+
+; ---------------- Start game by uncovering a few safe squares --------------
+
+to hint [:tries 30] [:inference "true]
+if :tries=0 [stop]		; limit number of attempts
+localmake "ohidden :nhidden
+localmake "ry random :rows
+localmake "rx random :columns
+if and equalp status :ry :rx "hidden not member? (list :ry :rx) :mines [
+  catch "error [hitsquare :ry :rx]
+  if (:ohidden - :nhidden) > 5 [stop]
+	; stop when at least 5 neighbors were opened
+]
+(hint :tries-1)
+end
+
+; -------- Main player activity, mouse clicks on minefield squares -----
+
+to hit :pos
+; Convert mouse (pixel) coordinate to column and row numbers
+; (square is :squaresize x :squaresize pixels)
+if not :playing [stop]
+localmake "opening equalp :button 1	; true to open, false to flag
+catch "error [hitsquare (int (((last :pos) + :ymax) / :squaresize))
+			(int (((first :pos) + :xmax) / :squaresize))]
+end
+
+to hitsquare :row :col
+; Called on player mouse click and automatic opening of neighbors
+; when infering.
+if :nhidden = 0 [stop]		; No hidden squares, game is over.
+if (or (:row<0) (:row>=:rows) (:col<0) (:col>=:columns)) [stop]
+penup
+setx (:col*:squaresize)-:xmax	; Move turtle over chosen square
+sety (:row*:squaresize)-:ymax
+localmake "status status :row :col
+localmake "near neighbors :row :col "minecheck
+if not equal? :status "shown [	; Clicking on hidden or flagged square.
+  if not :opening [showflag stop]	; FLAG mode.  (Below is OPEN mode.)
+  if :status = "flagged [showflag stop]	; Can't open flagged square.
+  setstatus :row :col "shown		; This square is now shown.
+  if member? (list :row :col) :mines [lose stop]	; Oops!
+  setpc 11				; aqua border
+  pu setxy xcor+1 ycor+1
+  pd filled 15 [repeat 4 [fd :squaresize-2 rt 90]]
+  setpensize [2 2] seth 0 pu
+  setxy xcor+6 ycor+3
+  if :near>0 word "draw :near	; Run procedure to draw digit
+  pu setpensize [1 1] seth 0
+  make "nhidden :nhidden - 1	; Keep track of number of squares still hidden.
+  if :nhidden = 0 [win stop]	; If all squares shown or flagged, we win!
+  if and (not equal? :near 0) (not :inference) [stop]
+	; Finished if no automatic inference
+]
+	; Automatic inference section:
+localmake "hnear neighbors :row :col "hiddencheck
+localmake "fnear neighbors :row :col "flaggedcheck
+ifelse :fnear = :near [		; If number of neighboring mines equals
+  localmake "opening "true	;   number of flagged neighbors,
+  hitfriends :row :col		;   all hidden neighbors must be safe
+			        ;   (unless player has flagged wrongly!)
+] [
+  if (:hnear + :fnear) = :near [ ; If number of neighboring mines equals
+    localmake "opening "false 	 ;  number of non-shown (hidden or flagged)
+    hitfriends :row :col	 ;  neighbors, all hidden neighbors must be
+			         ;  mines.
+  ]
+]
+end
+
+; --------------- Automatic inference to speed up game ------------------
+
+; Either OPEN or FLAG all eight immediate neighbors unless already open or
+; flagged. Note mutual recursion: HITSQUARE calls HITFRIENDS to do inference;
+; HITFRIENDS calls HITSQUARE for each inferred opening/flagging.
+
+to hitfriends :row :col
+hitfriendsrow :row-1 :col
+hitfriendsrow :row :col
+hitfriendsrow :row+1 :col
+end
+
+to hitfriendsrow :row :col
+hitfriend :row :col-1
+hitfriend :row :col
+hitfriend :row :col+1
+end
+
+to hitfriend :row :col
+if "hidden = status :row :col [hitsquare :row :col]
+end
+
+; Here's where we count the neighbors that have some property
+; (being truly mined, being flagged as mined, or being hidden).
+; Third input is a procedure that takes ROW and COL inputs,
+;   returning 1 if property is satisfied, 0 if not.
+
+to neighbors :row :col :check
+output (nrow :row-1 :col) + (nrow :row :col) + (nrow :row+1 :col)
+end
+
+to nrow :row :col
+output (invoke :check :row :col-1) + (invoke :check :row :col) + ~
+       (invoke :check :row :col+1)
+end
+
+; Here are the three property-checking procedures.
+
+to minecheck :row :col
+output ifelse member? (list :row :col) :mines [1] [0]
+end
+
+to hiddencheck :row :col
+output ifelse "hidden = status :row :col [1] [0]
+end
+
+to flaggedcheck :row :col
+output ifelse "flagged = status :row :col [1] [0]
+end
+
+; --------------------- Flag mode (user says where mines are) --------------
+
+to showflag
+if :nhidden = 0 [stop]		; Game is over, no action allowed.
+localmake "flagged status :row :col
+ifelse :flagged = "hidden [	; Square was hidden, so flag it.
+    if :nmines = 0 [stop]	; But don't allow more flags than actual mines.
+    setstatus :row :col "flagged
+    setpc 7
+    filled 2 [repeat 4 [fd :squaresize rt 90]]
+    pu setxy xcor+6 ycor+3
+    drawflag			; with purple flag
+    make "nmines :nmines-1
+    make "nhidden :nhidden-1
+] [
+    if not equal? :flagged "flagged [stop] ; Square was shown, can't flag it.
+    setstatus :row :col "hidden
+    setpc 7
+    filled 9 [repeat 4 [fd :squaresize rt 90]]
+    make "nmines :nmines + 1
+    make "nhidden :nhidden + 1
+]
+if :nhidden = 0 [win]			; Flagged last mine, so win.
+end
+
+to drawflag
+setpc 13			; purple for flag
+setpensize [2 2]
+pd fd 5 filled 13 [repeat 4 [fd 5 rt 90]]
+end
+
+; ------------ Notify user when game is won or lost -------------------
+
+to win
+make "playing "false
+make "nhidden 0
+; print [You win!!!!]
+pu setxy :xmax+3 0	; flash screen green
+repeat 5 [setpc 2 fill wait 0 action.once setpc 0 fill wait 0]
+end
+
+to lose
+make "playing "false
+setpc 6						; Yellow square on purple
+setpensize [3 3]
+pu setxy xcor+3 ycor+3 pd
+filled 13 [repeat 4 [fd :squaresize-6 rt 90]]	; Show which mine was hit
+setpensize [1 1]
+make "nhidden 0
+; print [You lose!!!!]
+pu setxy :xmax+3 0	; flash screen red
+repeat 5 [setpc 4 fill wait 0 action.once setpc 0 fill wait 0]
+showboard "true
+end
+
+; --------------- data abstraction for statuses array -------------
+
+to status :row :col
+output item :col (item :row :statuses)
+end
+
+to setstatus :row :col :value
+setitem :col (item :row :statuses) :value
+end
+
+
+; -------------------- draw digits ----------------------
+
+to draw1 [:color 4]
+setpc :color		; red
+pd rt 90 fd 6 bk 3
+lt 90 fd 12
+lt 90+45 fd 4
+end
+
+to draw2 [:color 13]
+setpc :color		; purple
+pu setxy xcor-1 ycor+2
+pd rt 90 fd 6 bk 6
+lt 45 fd 8
+rt 45 pu bk 3 pd arc -180 3
+end
+
+to draw3 [:color 0]
+setpc :color		; black
+pu fd 12 rt 90
+pd fd 6
+rt 90+45 fd 7
+pu lt 45 fd 3 pd arc -130 3
+end
+
+to draw4 [:color 8]
+setpc :color		; brown
+pu fd 6 
+pd fd 6 bk 6
+rt 90 fd 6 bk 3
+lt 90 fd 6 bk 12
+end
+
+to draw5 [:color 10]
+setpc :color		; forest
+pu fd 12
+pd rt 90 fd 6 bk 6
+rt 90 fd 5
+pu fd 3 pd arc -180 3
+end
+
+to draw6 [:color 12]
+setpc :color		; salmon
+pu fd 7 rt 90 fd 1 pd
+repeat 270 [fd 0.07 rt 1]
+repeat 45 [fd 0.3 rt 2]
+end
+
+to draw7 [:color 1]
+setpc :color		; blue
+pu fd 11 rt 90
+pd fd 6
+rt 90+30 fd 9
+end
+
+to draw8 [:color 5]
+setpc :color		; magenta
+pu fd 3 rt 90 fd 2
+pd arc 359 3
+pu lt 90 fd 6
+pd arc 359 3
+end
+
+to draw9 [:color 7]
+setpc :color
+pu fd 12 rt 90 fd 6 rt 90	; like 6 but upside down
+pu fd 7 rt 90 fd 1 pd
+repeat 270 [fd 0.07 rt 1]
+repeat 45 [fd 0.3 rt 2]
+end
+
+to draw0 [:color 7]
+setpc :color
+pu fd 6 pd
+repeat 90 [fd (2-repcount/90)*6/150 rt 1]
+repeat 90 [fd (1+repcount/90)*6/150 rt 1]
+repeat 90 [fd (2-repcount/90)*6/150 rt 1]
+repeat 90 [fd (1+repcount/90)*6/150 rt 1]
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/multi b/js/games/nluqo.github.io/~bh/downloads/csls-programs/multi
new file mode 100644
index 0000000..53b7be3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/multi
@@ -0,0 +1,36 @@
+program multi;
+ {Multinomial expansion problem}
+
+var memo: array [0..4, 0..7] of integer;
+   i,j:  integer;
+
+function t(n,k:integer) : integer;
+
+  function realt(n,k:integer) : integer;
+   {without memoization}
+
+    begin {realt}
+      if k = 0 then
+        realt := 1
+      else
+        if n = 0 then
+          realt := 0
+        else
+          realt := t(n,k-1)+t(n-1,k)
+    end; {realt}
+
+  begin {t}
+    if memo[n,k] < 0 then
+      memo[n,k] := realt(n,k);
+    t := memo[n,k]
+  end; {t}
+
+begin {main program}
+  {initialization}
+  for i := 0 to 4 do
+    for j := 0 to 7 do
+      memo[i,j] := -1;
+
+  {How many terms in (a+b+c+d)^7?}
+  writeln(t(4,7));
+end.
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/pascal b/js/games/nluqo.github.io/~bh/downloads/csls-programs/pascal
new file mode 100644
index 0000000..0aae43c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/pascal
@@ -0,0 +1,1217 @@
+to compile :file
+if namep "peekchar [ern "peekchar]
+if namep "peektoken [ern "peektoken]
+if not namep "idlist [opsetup]
+if not emptyp :file [openread :file]
+setread :file
+ignore error
+catch "error [program]
+localmake "error error
+if not emptyp :error [print first butfirst :error]
+setread []
+if not emptyp :file [close :file]
+end
+
+;; Global setup
+
+to opsetup
+make "numregs 32
+make "memsize 3000
+pprop "|=| "binary [eql 2 [boolean []] 1]
+pprop "|<>| "binary [neq 2 [boolean []] 1]
+pprop "|<| "binary [less 2 [boolean []] 1]
+pprop "|>| "binary [gtr 2 [boolean []] 1]
+pprop "|<=| "binary [leq 2 [boolean []] 1]
+pprop "|>=| "binary [geq 2 [boolean []] 1]
+pprop "|+| "binary [add 2 [[] []] 2]
+pprop "|-| "binary [sub 2 [[] []] 2]
+pprop "or "binary [lor 2 [boolean boolean] 2]
+pprop "|*| "binary [mul 2 [[] []] 3]
+pprop "|/| "binary [quo 2 [real []] 3]
+pprop "div "binary [div 2 [integer integer] 3]
+pprop "mod "binary [rem 2 [integer integer] 3]
+pprop "and "binary [land 2 [boolean boolean] 3]
+pprop "|+| "unary [plus 1 [[] []] 4]
+pprop "|-| "unary [minus 1 [[] []] 4]
+pprop "not "unary [lnot 1 [boolean boolean] 4]
+make "idlist `[[trunc function int [1 ,[framesize.fun+1]]]
+               [round function round [1 ,[framesize.fun+1]]]
+               [random function random [1 ,[framesize.fun+1]]]]
+make "int [integer real]
+make "round [integer real]
+make "random [integer integer]
+end
+
+;; Block structure
+
+to program
+mustbe "program
+localmake "progname token
+ifbe "|(| [ignore commalist [id]  mustbe "|)|]
+mustbe "|;|
+localmake "lexical.depth 0
+localmake "namesused []
+localmake "needint "false
+localmake "needround "false
+localmake "needrandom "false
+localmake "idlist :idlist
+localmake "frame [0 0]
+localmake "id (list :progname "program (newlname :progname) :frame)
+push "idlist :id
+localmake "codeinto word "% :progname
+make :codeinto []
+localmake "framesize framesize.proc
+program1
+mustbe ".
+code [exit]
+foreach [int round random] "plibrary
+make :codeinto reverse thing :codeinto
+end
+
+to program1
+localmake "regsused (array :numregs 0)
+for [i reg.firstfree :numregs-1] [setitem :i :regsused "false]
+ifbe "var [varpart]
+.setfirst butfirst :frame :framesize
+if :lexical.depth = 0 [code (list "add reg.globalptr reg.zero reg.zero)
+                       code (list "add reg.frameptr reg.zero reg.zero)
+                       code (list "addi reg.stackptr reg.zero :framesize)]
+localmake "bodytag gensym
+code (list "jump (word "" :bodytag))
+tryprocpart
+code :bodytag
+mustbe "begin
+blockbody "end
+end
+
+to plibrary :func
+if not thing (word "need :func) [stop]
+code :func
+code (list "rload reg.firstfree (memaddr framesize.fun reg.frameptr))
+code (list (word "s :func) reg.retval reg.firstfree)
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+end
+
+;; Variable declarations
+
+to varpart
+local [token namelist type]
+make "token token
+make "peektoken :token
+if reservedp :token [stop]
+vargroup
+foreach :namelist [newvar ? :type]
+mustbe "|;|
+varpart
+end
+
+to vargroup
+make "namelist commalist [id]
+mustbe ":
+ifbe "packed []
+make "type token
+ifelse equalp :type "array [make "type arraytype] [typecheck :type]
+end
+
+to id
+local "token
+make "token token
+if letterp ascii first :token [output :token]
+make "peektoken :token
+output []
+end
+
+to arraytype
+local [ranges type]
+mustbe "|[|
+make "ranges commalist [range]
+mustbe "|]|
+mustbe "of
+make "type token
+typecheck :type
+output list :type :ranges
+end
+
+to range
+local [first last]
+make "first range1
+mustbe "..
+make "last range1
+if :first > :last ~  
+   [(throw "error (sentence [array bounds not increasing:]
+                            :first ".. :last))]
+output list :first (1 + :last - :first)
+end
+
+to range1
+local "bound
+make "bound token
+if equalp first :bound "' [output ascii first butfirst :bound]
+if equalp :bound "|-| [make "bound minus token]
+if equalp :bound int :bound [output :bound]
+(throw "error sentence [array bound not ordinal:] :bound)
+end
+
+to typecheck :type
+if memberp :type [real integer char boolean] [stop]
+(throw "error sentence [undefined type] :type)
+end
+
+to newvar :pname :type
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+push "idlist (list :pname :type (list :lexical.depth :framesize) "false)
+make "framesize :framesize + ifelse listp :type [arraysize :type] [1]
+end
+
+to arraysize :type
+output reduce "product map [last ?] last :type
+end
+
+;; Procedure and function declarations
+
+to tryprocpart
+ifbeelse "procedure ~
+         [procedure tryprocpart] ~
+         [ifbe "function [function tryprocpart]]
+end
+
+to procedure
+proc1 "procedure framesize.proc
+end
+
+to function
+proc1 "function framesize.fun
+end
+
+to proc1 :proctype :framesize
+localmake "procname token
+localmake "lexical.depth :lexical.depth+1
+localmake "frame (list :lexical.depth 0)
+push "idlist (list :procname :proctype (newlname :procname) :frame)
+localmake "idlist :idlist
+make lname :procname []
+ifbe "|(| [arglist]
+if equalp :proctype "function ~
+   [mustbe ":
+    localmake "type token
+    typecheck :type
+    make lname :procname fput :type thing lname :procname]
+mustbe "|;|
+code lname :procname
+code (list "store reg.retaddr (memaddr frame.retaddr reg.frameptr))
+program1
+if equalp :proctype "function ~
+   [code (list "rload reg.retval (memaddr frame.retval reg.frameptr))]
+code (list "rload reg.retaddr (memaddr frame.retaddr reg.frameptr))
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+mustbe "|;|
+end
+
+to arglist
+local [token namelist type varflag]
+make "varflag "false
+ifbe "var [make "varflag "true]
+vargroup
+foreach :namelist [newarg ? :type :varflag]
+ifbeelse "|;| [arglist] [mustbe "|)|]
+end
+
+to newarg :pname :type :varflag
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+localmake "pointer (list :lexical.depth :framesize)
+push "idlist (list :pname :type :pointer :varflag)
+make "framesize :framesize + ifelse (and listp :type not :varflag) ~
+                                    [arraysize :type] [1]
+queue lname :procname ifelse :varflag [list "var :type] [:type]
+end
+
+;; Statement part
+
+to blockbody :endword
+statement
+ifbeelse "|;| [blockbody :endword] [mustbe :endword]
+end
+
+to statement
+local [token type]
+ifbe "begin [compound stop]
+ifbe "for [pfor stop]
+ifbe "if [pif stop]
+ifbe "while [pwhile stop]
+ifbe "repeat [prepeat stop]
+ifbe "write [pwrite stop]
+ifbe "writeln [pwriteln stop]
+make "token token
+make "peektoken :token
+if memberp :token [|;| end until] [stop]
+make "type gettype :token
+if emptyp :type [(throw "error sentence :token [can't begin statement])]
+if equalp :type "procedure [pproccall stop]
+if equalp :type "function [pfunset stop]
+passign
+end
+
+;; Compound statement
+
+to compound
+blockbody "end
+end
+
+;; Structured statements
+
+to pfor
+local [var init step final looptag endtag testreg]
+make "var token
+mustbe "|:=|
+make "init pinteger pexpr
+make "step 1
+ifbeelse "downto [make "step -1] [mustbe "to]
+make "final pinteger pexpr
+mustbe "do
+make "looptag gensym
+make "endtag gensym
+code :looptag
+localmake "id getid :var
+codestore :init (id.pointer :id) (id.varp :id) 0
+make "testreg newregister
+code (list (ifelse :step<0 ["less] ["gtr]) :testreg :init :final)
+code (list "jumpt :testreg (word "" :endtag))
+regfree :testreg
+statement
+code (list "addi :init :init :step)
+code (list "jump (word "" :looptag))
+code :endtag
+regfree :init
+regfree :final
+end
+
+to prepeat
+local [cond looptag]
+make "looptag gensym
+code :looptag
+blockbody "until
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :looptag))
+regfree :cond
+end
+
+to pif
+local [cond elsetag endtag]
+make "cond pboolean pexpr
+make "elsetag gensym
+make "endtag gensym
+mustbe "then
+code (list "jumpf :cond (word "" :elsetag))
+regfree :cond
+statement
+code (list "jump (word "" :endtag))
+code :elsetag
+ifbe "else [statement]
+code :endtag
+end
+
+to pwhile
+local [cond looptag endtag]
+make "looptag gensym
+make "endtag gensym
+code :looptag
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :endtag))
+regfree :cond
+mustbe "do
+statement
+code (list "jump (word "" :looptag))
+code :endtag
+end
+
+;; Simple statements: write and writeln
+
+to pwrite
+mustbe "|(|
+pwrite1
+end
+
+to pwrite1
+pwrite2
+ifbe "|)| [stop]
+ifbeelse ", [pwrite1] [(throw "error [missing comma])]
+end
+
+to pwrite2
+localmake "result pwrite3
+ifbe ": [.setfirst (butfirst :result) token]
+code :result
+if not equalp first :result "putstr [regfree last :result]
+end
+
+to pwrite3
+localmake "token token
+if equalp first :token "' ~
+   [output (list "putstr 1 (list butlast butfirst :token))]
+make "peektoken :token
+localmake "result pexpr
+if equalp first :result "char [output (list "putch 1 pchar :result)]
+if equalp first :result "boolean [output (list "puttf 1 pboolean :result)]
+if equalp first :result "integer [output (list "putint 10 pinteger :result)]
+output (list "putreal 20 preal :result)
+end
+
+to pwriteln
+ifbe "|(| [pwrite1]
+code [newline]
+end
+
+;; Simple statements: procedure call
+
+to pproccall
+localmake "pname token
+localmake "id getid :pname
+localmake "lname id.lname :id
+localmake "vartypes thing :lname
+pproccall1 framesize.proc
+end
+
+to pproccall1 :offset
+code (list "store reg.newfp (memaddr frame.save.newfp reg.stackptr))
+code (list "add reg.newfp reg.stackptr reg.zero)
+code (list "addi reg.stackptr reg.stackptr (last id.frame :id))
+code (list "store reg.frameptr (memaddr frame.prevframe reg.newfp))
+localmake "newdepth first id.frame :id
+ifelse :newdepth > :lexical.depth ~
+       [code (list "store reg.frameptr
+                   (memaddr frame.outerframe reg.newfp))] ~
+       [localmake "tempreg newregister
+        code (list "rload :tempreg (memaddr frame.outerframe reg.frameptr))
+        repeat (:lexical.depth - :newdepth)
+               [code (list "rload :tempreg 
+                           (memaddr frame.outerframe :tempreg))]
+        code (list "store :tempreg (memaddr frame.outerframe reg.newfp))
+        regfree :tempreg]
+if not emptyp :vartypes [mustbe "|(|  procargs :vartypes :offset]
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "store :i (memaddr frame.regsave+:i reg.frameptr))]]
+code (list "add reg.frameptr reg.newfp reg.zero)
+code (list "rload reg.newfp (memaddr frame.save.newfp reg.frameptr))
+code (list "jal reg.retaddr (word "" :lname))
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "rload :i (memaddr frame.regsave+:i reg.frameptr))]]
+end
+
+to procargs :types :offset
+if emptyp :types [mustbe "|)|  stop]
+localmake "next procarg first :types :offset
+if not emptyp butfirst :types [mustbe ",]
+procargs butfirst :types :offset+:next
+end
+
+to procarg :type :offset
+local "result
+if equalp first :type "var [output procvararg last :type]
+if listp :type [output procarrayarg :type]
+make "result check.type :type pexpr
+code (list "store :result (memaddr :offset reg.newfp))
+regfree :result
+output 1
+end
+
+to procvararg :ftype
+local [pname id type index]
+make "pname token
+make "id getid :pname
+make "type id.type :id
+ifelse wordp :ftype ~
+       [setindex "true] ~
+       [make "index 0]
+if not equalp :type :ftype ~
+   [(throw "error sentence :pname [arg wrong type])]
+localmake "target memsetup (id.pointer :id) (id.varp :id) :index
+localmake "tempreg newregister
+code (list "addi :tempreg (last :target) (first :target))
+code (list "store :tempreg (memaddr :offset reg.newfp))
+regfree last :target
+regfree :tempreg
+output 1
+end
+
+to procarrayarg :type
+localmake "pname token
+localmake "id getid :pname
+if not equalp :type (id.type :id) ~
+   [(throw "error (sentence "array :pname [wrong type for arg]))]
+localmake "size arraysize :type
+localmake "rtarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "pointreg newregister
+code (list "addi :pointreg reg.newfp :offset)
+localmake "ltarget (list 0 :pointreg)
+copyarray
+output :size
+end
+
+;; Simple statements: assignment statement (including function value)
+
+to passign
+local [name id type index value pointer target]
+make "name token
+make "index []
+ifbe "|[| [make "index commalist [pexpr] mustbe "|]|]
+mustbe "|:=|
+make "id getid :name
+make "pointer id.pointer :id
+make "type id.type :id
+passign1
+end
+
+to pfunset
+local [name id type index value pointer target]
+make "name token
+make "index []
+if not equalp :name :procname ~
+   [(throw "error sentence [assign to wrong function] :name)]
+mustbe "|:=|
+make "pointer (list :lexical.depth frame.retval)
+make "type first thing lname :name
+make "id (list :name :type :pointer "false)
+passign1
+end
+
+to passign1
+if and (listp :type) (emptyp :index) [parrayassign :id  stop]
+setindex "false
+make "value check.type :type pexpr
+codestore :value (id.pointer :id) (id.varp :id) :index
+regfree :value
+end
+
+to noimmediate :value
+if equalp exp.mode :value "immediate ~
+   [localmake "reg newregister
+    code (list "addi :reg reg.zero exp.value :value)
+    output (list exp.type :value "register :reg)]
+output :value
+end
+
+to check.type :type :result
+if equalp :type "real [output preal :result]
+if equalp :type "integer [output pinteger :result]
+if equalp :type "char [output pchar :result]
+if equalp :type "boolean [output pboolean :result]
+end
+
+to preal :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "real [output exp.value :pval]
+output pinteger :pval
+end
+
+to pinteger :expr [:pval noimmediate :expr]
+local "type
+make "type exp.type :pval
+if memberp :type [integer boolean char] [output exp.value :pval]
+(throw "error sentence exp.type :pval [isn't ordinal])
+end
+
+to pchar :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "char [output exp.value :pval]
+(throw "error sentence exp.type :pval [not character value])
+end
+
+to pboolean :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "boolean [output exp.value :pval]
+(throw "error sentence exp.type :pval [not true or false])
+end
+
+to parrayassign :id
+localmake "right token
+if equalp first :right "' ~
+   [pstringassign :type (butlast butfirst :right)  stop]
+localmake "rid getid :right
+if not equalp (id.type :id) (id.type :rid) ~
+   [(throw "error (sentence "arrays :name "and :right [unequal types]))]
+localmake "size arraysize id.type :id
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "rtarget memsetup (id.pointer :rid) (id.varp :rid) 0
+copyarray
+end
+
+to pstringassign :type :string
+if not equalp first :type "char [stringlose]
+if not emptyp butfirst last :type [stringlose]
+if not equalp (last first last :type) (count :string) [stringlose]
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+pstringassign1 newregister (first :ltarget) (last :ltarget) :string
+regfree last :ltarget
+end
+
+to pstringassign1 :tempreg :offset :reg :string
+if emptyp :string [regfree :tempreg  stop]
+code (list "addi :tempreg reg.zero ascii first :string)
+code (list "store :tempreg (memaddr :offset :reg))
+pstringassign1 :tempreg :offset+1 :reg (butfirst :string)
+end
+
+to stringlose
+(throw "error sentence :name [not string array or wrong size])
+end
+
+;; Multiple array indices to linear index computation
+
+to setindex :parseflag
+ifelse listp :type ~
+       [if :parseflag
+           [mustbe "|[|  make "index commalist [pexpr]  mustbe "|]| ]
+        make "index lindex last :type :index
+        make "type first :type] ~
+       [make "index 0]
+end
+
+to lindex :bounds :index
+output lindex1 (offset pinteger noimmediate first :index
+                       first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to lindex1 :sofar :bounds :index
+if emptyp :bounds [output :sofar]
+output lindex1 (nextindex :sofar
+                          last first :bounds
+                          pinteger noimmediate first :index
+                          first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to nextindex :old :factor :new :offset
+code (list "muli :old :old :factor)
+localmake "newreg offset :new :offset
+code (list "add :old :old :newreg)
+regfree :newreg
+output :old
+end
+
+to offset :indexreg :lowbound
+if not equalp :lowbound 0 [code (list "subi :indexreg :indexreg :lowbound)]
+output :indexreg
+end
+
+;; Memory interface: load and store instructions
+
+to codeload :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "rload :reg targetaddr)
+regfree last :target
+end
+
+to codestore :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "store :reg targetaddr)
+regfree last :target
+end
+
+to targetaddr
+output memaddr (first :target) (last :target)
+end
+
+to memaddr :offset :index
+output (word :offset "\( :index "\))
+end
+
+to memsetup :pointer :varflag :index
+localmake "depth first :pointer
+localmake "offset last :pointer
+local "newreg
+ifelse equalp :depth 0 ~
+       [make "newreg reg.globalptr] ~
+       [ifelse equalp :depth :lexical.depth
+               [make "newreg reg.frameptr]
+               [make "newreg newregister
+                code (list "rload :newreg
+                           (memaddr frame.outerframe reg.frameptr))
+                repeat (:lexical.depth - :depth) - 1
+                       [code (list "rload :newreg
+                                   (memaddr frame.outerframe :newreg))]]]
+if :varflag ~
+   [ifelse :newreg = reg.frameptr
+           [make "newreg newregister
+            code (list "rload :newreg (memaddr :offset reg.frameptr))]
+           [code (list "rload :newreg (memaddr :offset :newreg))]
+    make "offset 0]
+if not equalp :index 0 ~
+   [code (list "add :index :index :newreg)
+    regfree :newreg
+    make "newreg :index]
+output list :offset :newreg
+end
+
+to copyarray
+localmake "looptag gensym
+localmake "sizereg newregister
+code (list "addi :sizereg reg.zero :size)
+code :looptag
+localmake "tempreg newregister
+code (list "rload :tempreg (memaddr (first :rtarget) (last :rtarget)))
+code (list "store :tempreg (memaddr (first :ltarget) (last :ltarget)))
+code (list "addi (last :rtarget) (last :rtarget) 1)
+code (list "addi (last :ltarget) (last :ltarget) 1)
+code (list "subi :sizereg :sizereg 1)
+code (list "gtr :tempreg :sizereg reg.zero)
+code (list "jumpt :tempreg (word "" :looptag))
+regfree :sizereg
+regfree :tempreg
+regfree last :ltarget
+regfree last :rtarget
+end
+
+;; Expressions
+
+to pexpr
+local [opstack datastack parenlevel]
+make "opstack [[popen 1 0]]
+make "datastack []
+make "parenlevel 0
+output pexpr1
+end
+
+to pexpr1
+local [token op]
+make "token token
+while [equalp :token "|(|] [popen  make "token token]
+make "op pgetunary :token
+if not emptyp :op [output pexprop :op]
+push "datastack pdata :token
+make "token token
+while [and (:parenlevel > 0) (equalp :token "|)| )] ~
+      [pclose  make "token token]
+make "op pgetbinary :token
+if not emptyp :op [output pexprop :op]
+make "peektoken :token
+pclose
+if not emptyp :opstack [(throw "error [too many operators])]
+if not emptyp butfirst :datastack [(throw "error [too many operands])]
+output pop "datastack
+end
+
+to pexprop :op
+while [(op.prec :op) < (1 + op.prec first :opstack)] [ppopop]
+push "opstack :op
+output pexpr1
+end
+
+to popen
+push "opstack [popen 1 0]
+make "parenlevel :parenlevel + 1
+end
+
+to pclose
+while [(op.prec first :opstack) > 0] [ppopop]
+ignore pop "opstack
+make "parenlevel :parenlevel - 1
+end
+
+to pgetunary :token
+output gprop :token "unary
+end
+
+to pgetbinary :token
+output gprop :token "binary
+end
+
+to ppopop
+local [op function args left right type reg]
+make "op pop "opstack
+make "function op.instr :op
+if equalp :function "plus [stop]
+make "args op.nargs :op
+make "right pop "datastack
+make "left (ifelse equalp :args 2 [pop "datastack] [[[] []]])
+make "type pnewtype :op exp.type :left exp.type :right
+if equalp exp.mode :left "immediate ~
+   [localmake "leftreg newregister
+    code (list "addi :leftreg reg.zero exp.value :left)
+    make "left (list exp.type :left "register :leftreg)]
+ifelse equalp exp.mode :left "register ~
+       [make "reg exp.value :left] ~
+       [ifelse equalp exp.mode :right "register
+               [make "reg exp.value :right]
+               [make "reg newregister]]
+if equalp :function "minus ~
+   [make "left (list exp.type :right "register reg.zero)
+    make "function "sub
+    make "args 2]
+if equalp exp.mode :right "immediate ~
+   [make "function word :function "i]
+ifelse equalp :args 2 ~
+       [code (list :function :reg exp.value :left exp.value :right)] ~
+       [code (list :function :reg exp.value :right)]
+if not equalp :reg exp.value :left [regfree exp.value :left]
+if (and (equalp exp.mode :right "register)
+        (not equalp :reg exp.value :right)) ~
+   [regfree exp.value :right]
+push "datastack (list :type "register :reg)
+end
+
+to pnewtype :op :ltype :rtype
+local "type
+make "type op.types :op
+if emptyp :ltype [make "ltype :rtype]
+if not emptyp last :type [pchecktype last :type :ltype :rtype]
+if and (equalp :ltype "real) (equalp :rtype "integer) [make "rtype "real]
+if and (equalp :ltype "integer) (equalp :rtype "real) [make "ltype "real]
+if not equalp :ltype :rtype [(throw "error [type clash])]
+if emptyp last :type ~
+   [if not memberp :rtype [integer real]
+       [(throw "error [nonarithmetic type])]]
+if emptyp first :type [output :rtype]
+output first :type
+end
+
+to pchecktype :want :left :right
+if not equalp :want :left [(throw "error (sentence :left "isn't :want))]
+if not equalp :want :right [(throw "error (sentence :right "isn't :want))]
+end
+
+;; Expression elements
+
+to pdata :token
+if equalp :token "true [output [boolean immediate 1]]
+if equalp :token "false [output [boolean immediate 0]]
+if equalp first :token "' [output pchardata :token]
+if numberp :token [output (list numtype :token "immediate :token)]
+localmake "id getid :token
+if emptyp :id [(throw "error sentence [undefined symbol] :token)]
+localmake "type id.type :id
+if equalp :type "function [output pfuncall :token]
+local "index
+setindex "true
+localmake "reg newregister
+codeload :reg (id.pointer :id) (id.varp :id) :index
+output (list :type "register :reg)
+end
+
+to pchardata :token
+if not equalp count :token 3 ~
+   [(throw "error sentence :token [not single character])]
+output (list "char "immediate ascii first butfirst :token)
+end
+
+to numtype :number
+if memberp ". :number [output "real]
+if memberp "e :number [output "real]
+output "integer
+end
+
+to pfuncall :pname
+localmake "id getid :pname
+localmake "lname id.lname :id
+if namep (word "need :lname) [make (word "need :lname) "true]
+localmake "vartypes thing :lname
+localmake "returntype first :vartypes
+make "vartypes butfirst :vartypes
+pproccall1 framesize.fun
+localmake "reg newregister
+code (list "add :reg reg.retval reg.zero)
+output (list :returntype "register :reg)
+end
+
+;; Parsing assistance
+
+to code :stuff
+if emptyp :stuff [stop]
+push :codeinto :stuff
+end
+
+to commalist :test [:sofar []]
+local [result token]
+make "result run :test
+if emptyp :result [output :sofar]
+ifbe ", [output (commalist :test (lput :result :sofar))]
+output lput :result :sofar
+end
+
+.macro ifbe :wanted :action
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output []
+end
+
+.macro ifbeelse :wanted :action :else
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output :else
+end
+
+to mustbe :wanted
+localmake "token token
+if equalp :token :wanted [stop]
+(throw "error (sentence "expected :wanted "got :token))
+end
+
+to newregister
+for [i reg.firstfree :numregs-1] ~
+    [if not item :i :regsused [setitem :i :regsused "true  output :i]]
+(throw "error [not enough registers available])
+end
+
+to regfree :reg
+setitem :reg :regsused "false
+end
+
+to reservedp :word
+output memberp :word [and array begin case const div do downto else end ~
+                      file for forward function goto if in label mod nil ~
+                      not of packed procedure program record repeat set ~
+                      then to type until var while with]
+end
+
+;; Lexical analysis
+
+to token
+local [token char]
+if namep "peektoken [make "token :peektoken
+                     ern "peektoken   output :token]
+make "char getchar
+if equalp :char "|{| [skipcomment output token]
+if equalp :char char 32 [output token]
+if equalp :char char 13 [output token]
+if equalp :char char 10 [output token]
+if equalp :char "' [output string "']
+if memberp :char [+ - * / = ( , ) |[| |]| |;|] [output :char]
+if equalp :char "|<| [output twochar "|<| [= >]]
+if equalp :char "|>| [output twochar "|>| [=]]
+if equalp :char ". [output twochar ". [.]]
+if equalp :char ": [output twochar ": [=]]
+if numberp :char [output number :char]
+if letterp ascii :char [output token1 lowercase :char]
+(throw "error sentence [unrecognized character:] :char)
+end
+
+to skipcomment
+if equalp getchar "|}| [stop]
+skipcomment
+end
+
+to string :string
+local "char
+make "char getchar
+if not equalp :char "' [output string word :string :char]
+make "char getchar
+if equalp :char "' [output string word :string :char]
+make "peekchar :char
+output word :string "'
+end
+
+to twochar :old :ok
+localmake "char getchar
+if memberp :char :ok [output word :old :char]
+make "peekchar :char
+output :old
+end
+
+to number :num
+local "char
+make "char getchar
+if equalp :char ". ~
+   [make "char getchar ~
+    ifelse equalp :char ". ~
+           [make "peektoken ".. output :num] ~
+           [make "peekchar :char output number word :num ".]]
+if equalp :char "e [output number word :num twochar "e [+ -]]
+if numberp :char [output number word :num :char]
+make "peekchar :char
+output :num
+end
+
+to token1 :token
+local "char
+make "char getchar
+if or letterp ascii :char numberp :char ~
+   [output token1 word :token lowercase :char]
+make "peekchar :char
+output :token
+end
+
+to letterp :code
+if and (:code > 64) (:code < 91) [output "true]
+output and (:code > 96) (:code < 123)
+end
+
+to getchar
+local "char
+if namep "peekchar [make "char :peekchar  ern "peekchar  output :char]
+if eofp [output char 1]
+output rc1
+end
+
+to rc1
+local "result
+make "result readchar
+type :result
+output :result
+end
+
+;; Data abstraction: ID List
+
+to newlname :word
+if memberp :word :namesused [output gensym]
+if namep word "% :word [output gensym]
+push "namesused :word
+output word "% :word
+end
+
+to lname :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 3 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to gettype :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 2 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to getid :word [:list :idlist]
+if emptyp :list [output []]
+if equalp :word first first :list [output first :list]
+output (getid :word butfirst :list)
+end
+
+to id.type :id
+output item 2 :id
+end
+
+to id.pointer :id
+output item 3 :id
+end
+
+to id.lname :id
+output item 3 :id
+end
+
+to id.varp :id
+output item 4 :id
+end
+
+to id.frame :id
+output item 4 :id
+end
+
+;; Data abstraction: Frame slots
+
+to frame.retaddr
+output 0
+end
+
+to frame.save.newfp
+output 1
+end
+
+to frame.outerframe
+output 2
+end
+
+to frame.prevframe
+output 3
+end
+
+to frame.regsave
+output 4
+end
+
+to framesize.proc
+output 4+:numregs
+end
+
+to frame.retval
+output 4+:numregs
+end
+
+to framesize.fun
+output 5+:numregs
+end
+
+;; Data abstraction: Operators
+
+to op.instr :op
+output first :op
+end
+
+to op.nargs :op
+output first bf :op
+end
+
+to op.types :op
+output item 3 :op
+end
+
+to op.prec :op
+output last :op
+end
+
+;; Data abstraction: Expressions
+
+to exp.type :exp
+output first :exp
+end
+
+to exp.mode :exp
+output first butfirst :exp
+end
+
+to exp.value :exp
+output last :exp
+end
+
+;; Data abstraction: Registers
+
+to reg.zero
+output 0
+end
+
+to reg.retaddr
+output 1
+end
+
+to reg.stackptr
+output 2
+end
+
+to reg.globalptr
+output 3
+end
+
+to reg.frameptr
+output 4
+end
+
+to reg.newfp
+output 5
+end
+
+to reg.retval
+output 6
+end
+
+to reg.firstfree
+output 7
+end
+
+;; Runtime (machine simulation)
+
+to prun :progname
+localmake "prog thing word "% :progname
+localmake "regs (array :numregs 0)
+local filter "wordp :prog
+foreach :prog [if wordp ? [make ? ?rest]]
+localmake "memory (array :memsize 0)
+setitem 0 :regs 0
+if not procedurep "add [runsetup]
+prun1 :prog
+end
+
+to prun1 :pc
+if emptyp :pc [stop]
+if listp first :pc [run first :pc]
+prun1 butfirst :pc
+end
+
+to rload :reg :offset :index
+setitem :reg :regs (item (item :index :regs)+:offset :memory)
+end
+
+to store :reg :offset :index
+setitem (item :index :regs)+:offset :memory (item :reg :regs)
+end
+
+to runsetup
+foreach [[add sum] [sub difference] [mul product] [quo quotient]
+         [div [int quotient]] [rem remainder] [land product]
+         [lor [tobool lessp 0 sum]] [eql [tobool equalp]]
+         [neq [tobool not equalp]] [less [tobool lessp]]
+         [gtr [tobool greaterp]] [leq [tobool not greaterp]]
+         [geq [tobool not lessp]]] ~
+        [define first ?
+                `[[dest src1 src2]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  (item :src2 :regs)]]
+         define word first ? "i
+                `[[dest src1 immed]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  :immed]]]
+foreach [[lnot [difference 1]] [sint int] [sround round] [srandom random]] ~
+        [define first ?
+                `[[dest src]
+                  [setitem :dest :regs ,@[last ?] (item :src :regs)]]
+         define word first ? "i
+                `[[dest immed]
+                  [setitem :dest :regs ,@[last ?] :immed]]]
+end
+
+to tobool :tf
+output ifelse :tf [1] [0]
+end
+
+to jump :label
+make "pc fput :label thing :label
+end
+
+to jumpt :reg :label
+if (item :reg :regs)=1 [jump :label]
+end
+
+to jumpf :reg :label
+if (item :reg :regs)=0 [jump :label]
+end
+
+to jr :reg
+make "pc item :reg :regs
+end
+
+to jal :reg :label
+setitem :reg :regs :pc
+jump :label
+end
+
+to putch :width :reg
+spaces :width 1
+type char (item :reg :regs)
+end
+
+to putstr :width :string
+spaces :width (count first :string)
+type :string
+end
+
+to puttf :width :bool
+spaces :width 1
+type ifelse (item :bool :regs)=0 ["F] ["T]
+end
+
+to putint :width :reg
+localmake "num (item :reg :regs)
+spaces :width count :num
+type :num
+end
+
+to putreal :width :reg
+putint :width :reg
+end
+
+to spaces :width :count
+if :width > :count [repeat :width - :count [type "| |]]
+end
+
+to newline
+print []
+end
+
+to exit
+make "pc [exit]
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/playfair b/js/games/nluqo.github.io/~bh/downloads/csls-programs/playfair
new file mode 100644
index 0000000..259b3d5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/playfair
@@ -0,0 +1,79 @@
+to playfair :keyword :message
+local [matrix a b c d e f g h i j k l m n o p q r s t u v w x y z]
+setkeyword jtoi lowercase :keyword
+output encode (reduce "word :message)
+end
+
+;; Prepare the code array
+
+to setkeyword :word
+make "matrix reorder word :word (remove :word "abcdefghiklmnopqrstuvwxyz)
+make "j :i
+end
+
+to remove :letters :string
+if emptyp :string [output "]
+if memberp first :string :letters [output remove :letters bf :string]
+output word first :string remove :letters bf :string
+end
+
+to reorder :string
+output reorder1 :string (mdarray [5 5]) 1 1
+end
+
+to reorder1 :string :array :row :column
+if :row=6 [output :array]
+if :column=6 [output reorder1 :string :array :row+1 1]
+mdsetitem (list :row :column) :array first :string
+make first :string (list :row :column)
+output reorder1 (butfirst :string) :array :row :column+1
+end
+
+;; Encode the message
+
+to encode :message
+if emptyp :message [output "]
+if emptyp butfirst :message [output paircode first :message "q]
+if equalp (jtoi first :message) (jtoi first butfirst :message) ~
+   [output word (paircode first :message "q) (encode butfirst :message)]
+output word (paircode first :message first butfirst :message) ~
+            (encode butfirst butfirst :message)
+end
+
+to paircode :one :two
+local [row1 column1 row2 column2]
+make "row1 first thing :one
+make "column1 last thing :one
+make "row2 first thing :two
+make "column2 last thing :two
+if :row1 = :row2 ~
+   [output letters (list :row1 rotate (:column1+1)) ~
+                   (list :row1 rotate (:column2+1))]
+if :column1 = :column2 ~
+   [output letters (list rotate (:row1+1) :column1)  ~
+                   (list rotate (:row2+1) :column1)]
+output letters (list :row1 :column2) (list :row2 :column1)
+end
+
+to rotate :index
+output ifelse :index = 6 [1] [:index]
+end
+
+to letters :one :two
+output word letter :one letter :two
+end
+
+to letter :rowcol
+output itoj mditem :rowcol :matrix
+end
+
+;; I and J conversion
+
+to jtoi :word
+output map [ifelse equalp ? "j ["i] [?]] :word
+end
+
+to itoj :letter
+if :letter = "i [if (random 3) = 0 [output "j]]
+output :letter
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/plot b/js/games/nluqo.github.io/~bh/downloads/csls-programs/plot
new file mode 100644
index 0000000..bb144b9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/plot
@@ -0,0 +1,36 @@
+to plot :inputs
+keyword :inputs [maxharm 5 deltax 2 yscale 75 cycles 1 xrange 230 skip 2]
+localmake "xscale :cycles*180/:xrange
+splitscreen clearscreen hideturtle penup
+setpos list (-:xrange) 0
+pendown
+for [x :deltax [2*:xrange] :deltax] ~
+    [setpos list (xcor+:deltax) (:yscale * series :maxharm)]
+end
+
+;; Compute the Fourier series values
+
+to series :harmonic
+if :harmonic < 1 [output 0]
+output (term :harmonic)+(series :harmonic-:skip)
+end
+
+to term :harmonic
+output (sin :xscale * :harmonic * :x) / :harmonic
+end
+
+;; Handle keyword inputs
+
+.macro keyword :inputs :defaults
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make "inputs sentence (first :defaults) :inputs]
+output `[local ,[filter [not numberp ?] :defaults]
+         setup.values ,[:defaults]
+         setup.values ,[:inputs]]
+end
+
+to setup.values :list
+if emptyp :list [stop]
+make first :list first butfirst :list
+setup.values butfirst butfirst :list
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/pour b/js/games/nluqo.github.io/~bh/downloads/csls-programs/pour
new file mode 100644
index 0000000..ee561e7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/pour
@@ -0,0 +1,130 @@
+;; Initialization
+
+to pour :sizes :goal
+local [oldstates pitchers won]
+make "oldstates (list all.empty :sizes)
+make "pitchers fput 0 (map [#] :sizes)
+make "won "false
+win breadth.first make.path [] all.empty :sizes
+end
+
+to all.empty :list
+output map [0] :list
+end
+
+;; Tree search
+
+to breadth.first :root
+op breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+if :won [output last :queue]
+op breadth.descend sentence (butfirst :queue) ~
+                            (children first :queue)
+end
+
+;; Generate children
+
+to children :path
+output map.se [children1 :path ?] :pitchers
+end
+
+to children1 :path :from
+output map.se [child :path :from ?] :pitchers
+end
+
+to child :path :from :to
+local [state newstate]
+if :won [output []]
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+make "newstate (newstate :state :from :to)
+if memberp :newstate :oldstates [output []]
+make "oldstates fput :newstate :oldstates
+if memberp :goal :newstate [make "won "true]
+output (list make.path (fput list :from :to path.moves :path) :newstate)
+end
+
+to newstate :state :from :to
+if riverp :to [output replace :state :from 0]
+if riverp :from [output replace :state :to (size :to)]
+if (water :from) < (room :to) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((water :from)+(water :to))]
+output replace2 :state ~
+                :from ((water :from)-(room :to)) ~
+                :to (size :to)
+end
+
+;; Printing the result
+
+to win :path
+if emptyp :path [print [Can't do it!] stop]
+foreach (reverse path.moves :path) "win1
+print sentence [Final quantities are] (path.state :path)
+end
+
+to win1 :move
+print (sentence [Pour from] (printform first :move)
+                [to] (printform last :move))
+end
+
+to printform :pitcher
+if riverp :pitcher [output "river]
+output size :pitcher
+end
+
+;; Path data abstraction
+
+to make.path :moves :state
+output fput :moves :state
+end
+
+to path.moves :path
+output first :path
+end
+
+to path.state :path
+output butfirst :path
+end
+
+;; Pitcher data abstraction
+
+to riverp :pitcher
+output equalp :pitcher 0
+end
+
+to size :pitcher
+output item :pitcher :sizes
+end
+
+to water :pitcher
+output item :pitcher :state
+end
+
+to room :pitcher
+output (size :pitcher)-(water :pitcher)
+end
+
+;; List processing utilities
+
+to replace :list :index :value
+if equalp :index 1 [output fput :value butfirst :list]
+output fput first :list (replace butfirst :list :index-1 :value)
+end
+
+to replace2 :list :index1 :value1 :index2 :value2
+if equalp :index1 1 ~
+   [output fput :value1 replace butfirst :list :index2-1 :value2]
+if equalp :index2 1 ~
+   [output fput :value2 replace butfirst :list :index1-1 :value1]
+output fput first :list ~
+            replace2 butfirst :list :index1-1 :value1 :index2-1 :value2
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/psort b/js/games/nluqo.github.io/~bh/downloads/csls-programs/psort
new file mode 100644
index 0000000..69aca33
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/psort
@@ -0,0 +1,97 @@
+program psort;
+ {partition sort demo}
+
+var data: array [0..100] of integer;
+    i: integer;
+
+procedure showdata;
+ {print the array}
+
+  var i: integer;
+
+  begin {showdata}
+    for i := 0 to 99 do
+      begin
+        if i mod 20 = 0 then writeln;
+        write(data[i]:3)
+      end;
+    writeln;
+    writeln
+  end; {showdata}
+
+function median(lower,upper:integer):integer;
+  {find the median of three values from the data array}
+  var mid: integer;
+
+  begin
+    mid := (lower+upper) div 2;
+    if (data[lower] <= data[mid]) and (data[mid] <= data[upper]) then
+      median := mid
+    else if (data[lower] >= data[mid]) and
+            (data[mid] >= data[upper]) then
+      median := mid
+    else if (data[mid] <= data[lower]) and
+            (data[lower] <= data[upper]) then
+      median := lower
+    else if (data[mid] >= data[lower]) and
+            (data[lower] >= data[upper]) then
+      median := lower
+    else median := upper
+  end;
+
+procedure sort(lower,upper:integer);
+ {sort part of the array}
+
+  var key,i,j:integer;
+
+  procedure exch(var a,b:integer);
+   {exchange two integers}
+
+    var temp:integer;
+
+    begin {exch}
+      temp := a;
+      a := b;
+      b := temp
+    end; {exch}
+
+  begin {sort}
+    if upper > lower then
+      begin
+        exch (data[lower],data[median(lower,upper)]);
+        key := data[lower];
+        i := lower;
+        j := upper+1;
+        repeat
+          i := i+1
+        until data[i] >= key;
+        repeat
+          j := j-1
+        until data[j] <= key;
+        while (i <= j) do
+          begin
+            exch(data[i], data[j]);
+            repeat
+              i := i+1
+            until data[i] >= key;
+            repeat
+              j := j-1
+            until data[j] <= key
+          end;
+        exch(data[lower], data[j]);
+        sort(lower,j-1);
+        sort(i,upper)
+      end
+  end; {sort}
+
+begin {main program}
+  data[100] := 200;
+  for i := 0 to 99 do
+    data[i] := random(100);
+  writeln('Data before sorting:');
+  showdata;
+
+  sort(0,99);
+  writeln('Data after sorting:');
+  showdata
+end.
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/solitaire b/js/games/nluqo.github.io/~bh/downloads/csls-programs/solitaire
new file mode 100644
index 0000000..24211dc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/solitaire
@@ -0,0 +1,484 @@
+to solitaire
+print [Welcome to solitaire]
+instruct
+localmake "allranks [A 2 3 4 5 6 7 8 9 10 J Q K]
+localmake "numranks map "ranknum :allranks
+localmake "suits [H S D C]
+localmake "reds [H D]
+localmake "deckarray (listtoarray (crossmap "word :allranks :suits) 0)
+localmake "upping "false
+catch "exit [forever [onegame cleartext]]
+cleartext
+end
+
+to s
+solitaire
+end
+
+to onegame
+print [Shuffling, please wait...]
+local [card cards digit pile where]
+localmake "onto []
+local map [word "top ?] :suits
+local cascade 9 [(sentence (word "shown #) (word "hidden #) ?)] []
+localmake "ranks :allranks
+localmake "numstacks 7
+local map [word "num ?] :numranks
+foreach :numranks [make word "num ? 4]
+localmake "hand shuffle 52 :deckarray
+setempty "pile
+initstacks
+foreach :suits [settop ? "]
+redisplay
+catch "endgame [forever [catch "bell [parsecmd]]]
+end
+
+;; Initialization
+
+to instruct 
+print [] print [Here are the commands you can type:]
+type "|    | type (sentence standout "+ standout "=)
+type "|  | print [Deal three cards onto pile]
+instruct1 "P [Play top card from pile]
+instruct1 "R [Redisplay the board]
+instruct1 "? [Retype these instructions]
+instruct1 "card [Play that card]
+instruct1 "M [Move same card again]
+instruct1 "W [Play up as much as possible (Win)]
+instruct1 "G [Give up (start a new game)]
+instruct1 "X [Exit to Logo]
+print [A card consists of a rank:]
+type "|   | print (sentence standout [A 2 3 4 5 6 7 8 9 10 J Q K]
+                            "or standout "T [for 10])
+print [followed by a suit:]
+type "|   | print standout [H S D C]
+print (sentence [or followed by] standout ".
+                [to play all possible suits up])
+print [] print [If you make a mistake, hit delete or backspace.]
+print [] print [To move an entire stack,]
+type "|   | print [hit the shifted stack number:]
+type "|     | print (sentence standout [! @ # $ % ^ &] [for stacks])
+type "|     | print [1 2 3 4 5 6 7]
+print []
+end
+
+to instruct1 :key :meaning
+type "|    |
+type standout :key
+repeat 5-count :key [type "| |]
+print :meaning
+end
+
+to shuffle :len :array
+if :len=0 [output arraytolist :array]
+localmake "choice random :len
+localmake "temp item :choice :array
+setitem :choice :array (item :len-1 :array)
+setitem :len-1 :array :temp
+output shuffle :len-1 :array
+end
+
+to initstacks
+for [num 1 7] [inithidden :num
+               turnup :num]
+end
+
+to inithidden :num
+localmake "name hidden :num
+setempty :name
+repeat :num [push :name deal]
+end
+
+;; Reading and interpreting user commands
+
+to parsecmd
+if emptyp :digit [setcursor [1 22] type "|      | setcursor [1 22]]
+local "char
+make "char uppercase readchar
+if equalp :char "T [parsedigit 1 parsezero stop]
+if memberp :char [1 2 3 4 5 6 7 8 9 A J Q K] [parsedigit :char stop]
+if equalp :char "0 [parsezero stop]
+if memberp :char :suits [play.by.name :char stop]
+if equalp :char ". [allup stop]
+if equalp :char "W [wingame stop]
+if equalp :char "M [again stop]
+if memberp :char [+ =] [hand3 stop]
+if equalp :char "R [redisplay stop]
+if equalp :char "? [helper stop]
+if equalp :char "P [playpile stop]
+if and equalp :char "|(| not emptyp :digit [cheat stop]
+if and equalp :char "|)| not emptyp :digit [newstack stop]
+if memberp :char [! @ # $ % ^ & * ( )] ~
+   [playstack :char [! @ # $ % ^ & * ( )] stop]
+if memberp :char (list "| | char 8 char 127) [rubout stop]
+if equalp :char "G [throw "endgame]
+if equalp :char "X [throw "exit]
+bell
+end
+
+to parsedigit :char
+if not emptyp :digit [bell]
+make "digit :char
+type :digit
+end
+
+to parsezero 
+if not equalp :digit 1 [bell]
+make "digit 10
+type 0
+end
+
+to rubout 
+setcursor [1 22]
+type "|    |
+setcursor [1 22]
+setempty "digit
+end
+
+to bell
+if not :upping [type char 7]
+setempty "digit
+throw "bell
+end
+
+;; Deal three cards from the hand
+
+to hand3 
+if not emptyp :digit [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+repeat 2 [if not emptyp :hand [push "pile deal]]
+dispile dishand
+end
+
+to deal 
+if emptyp :hand [make "hand reverse :pile setempty "pile]
+if emptyp :hand [output []]
+output pop "hand
+end
+
+;; Select card to play by position (pile or stack) or by name
+
+to playpile 
+if emptyp :pile [bell]
+if not emptyp :digit [bell]
+make "card first :pile
+make "where [rempile]
+carddis :card
+playcard
+end
+
+to playstack :which :list
+if not emptyp :digit [bell]
+foreach :list [if equalp :which ? [playstack1 # stop]]
+end
+
+to playstack1 :num
+if greaterp :num :numstacks [bell]
+if stackemptyp shown :num [bell]
+make "card last thing shown :num
+make "where sentence "remshown :num
+carddis :card
+playcard
+end
+
+to play.by.name :char
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+type :char
+wait 0
+make "card word :digit :char
+setempty "digit
+findcard
+if not emptyp :where [playcard]
+end
+
+to findcard 
+if findpile [stop]
+make "where findshown
+if emptyp :where [bell]
+end
+
+to findpile 
+if emptyp :pile [output "false]
+if equalp :card first :pile [make "where [rempile] output "true]
+output "false
+end
+
+to findshown
+for [num 1 :numstacks] ~
+    [if memberp :card thing shown :num [output sentence "remshown :num]]
+output []
+end
+
+;; Figure out all possible places to play card, then pick one
+
+to playcard
+setempty "onto
+if not coveredp [checktop]
+if and not :upping ~
+       or (emptyp :onto) (not upsafep rank :card) ~
+   [checkonto]
+if emptyp :onto [bell]
+run :where
+run first :onto
+end
+
+to coveredp 
+if equalp :where [rempile] [output "false]
+output not equalp :card first thing shown last :where
+end
+
+to upsafep :rank
+if memberp :rank [A 2] [output "true]
+output equalp 0 thing word "num ((ranknum :rank)-2)
+end
+
+to checktop 
+if (ranknum rank :card) = 1 + (ranknum top suit :card) ~
+   [push "onto (list "playtop word "" suit :card)]
+end
+
+to checkonto
+for [num :numstacks 1] ~
+    [ifelse stackemptyp shown :num
+            [checkempty :num]
+            [checkfull :num thing shown :num]]
+end
+
+to checkempty :num
+if equalp rank :card "k [push "onto (list "playonto :num)]
+end
+
+to checkfull :num :stack
+if equalp (redp :card) (redp first :stack) [stop]
+if ((ranknum rank first :stack) = 1 + (ranknum rank :card)) ~
+   [push "onto (list "playonto :num)]
+end
+
+;; Play card, step 1: remove from old position
+
+to rempile 
+make "cards (list (pop "pile))
+dispile
+end
+
+to remshown :num
+setempty "cards
+remshown1 :num (count thing shown :num)
+if stackemptyp shown :num [turnup :num disstack :num]
+end
+
+to remshown1 :num :length
+do.until [push "cards (pop shown :num)] ~
+         [equalp :card first :cards]
+for [i 1 [count :cards]] ~
+    [setcursor list (5*:num - 4) (5+:length-:i) type "|   |]
+end
+
+to turnup :num
+setempty shown :num
+if stackemptyp hidden :num [stop]
+push (shown :num) (pop hidden :num)
+end
+
+;; Play card, step 2: put in new position 
+
+to playtop :suit
+localmake "var word "num ranknum rank :card
+settop :suit rank :card
+distop :suit
+make :var (thing :var)-1
+if (thing :var)=0 [make "ranks butfirst :ranks]
+end
+
+to playonto :num
+localmake "row 4+count thing shown :num
+localmake "col 5*:num-4
+for [i 1 [count :cards]] ~
+    [localmake "card pop "cards
+     push (shown :num) :card
+     setcursor list :col :row+:i
+     carddis :card]
+end
+
+;; Update screen display
+
+to redisplay 
+cleartext
+for [num 1 :numstacks] [disstack :num]
+foreach :suits "distop
+dispile
+dishand
+setcursor [1 22]
+setempty "digit
+end
+
+to disstack :num
+setcursor list (-3 + 5 * :num) 4
+type ifelse stackemptyp hidden :num ["| |] ["-]
+if stackemptyp shown :num [setcursor list (-4 + 5 * :num) 5
+                           type "|   | stop]
+localmake "stack (thing shown :num)
+localmake "col 5*:num-4
+for [i [count :stack] 1] ~
+    [setcursor list :col :i+4
+     carddis pop "stack]
+end
+
+to distop :suit
+if emptyp top :suit [stop]
+if equalp :suit "H [distop1 4 stop]
+if equalp :suit "S [distop1 11 stop]
+if equalp :suit "D [distop1 18 stop]
+distop1 25
+end
+
+to distop1 :col
+setcursor list :col 2
+carddis word (top :suit) :suit
+end
+
+to dispile 
+setcursor [32 23]
+ifelse emptyp :pile [type "|   |] [carddis first :pile]
+end
+
+to dishand 
+setcursor [27 23]
+type count :hand
+type "| |
+end
+
+to carddis :card
+ifelse memberp suit :card :reds [redtype :card] [blacktype :card]
+type "| |
+end
+
+to redtype :word
+type :word
+end
+
+to blacktype :word
+type standout :word
+end
+
+
+;; Miscellaneous user commands
+
+to again
+if not emptyp :digit [bell]
+if emptyp :onto [bell]
+make "where list "remshown last pop "onto
+if emptyp :onto [bell]
+carddis :card
+run :where
+run first :onto
+end
+
+to helper
+cleartext 
+instruct
+print standout [type any key to continue]
+ignore rc
+redisplay
+end
+
+to allup
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+localmake "upping "true
+type ". wait 0
+foreach map [word :digit ?] [H S D C] ~
+        [catch "bell [make "card ?
+                      findcard
+                      if not emptyp :where [playcard]]]
+setempty "digit
+end
+
+to wingame
+type "W
+localmake "cursor cursor
+foreach :ranks [if not upsafep ? [stop]
+                make "digit ? ~
+                allup ~
+                setempty "digit ~
+                setcursor :cursor]
+if equalp (map "top [H S D C]) [K K K K] ~
+   [ct print [you win!] wait 120 throw "endgame]
+end
+
+to newstack
+localmake "num :numstacks+1
+setcursor [1 22] type "|   |
+if not equalp :digit 9 [bell]
+setempty hidden :num
+setempty shown :num
+make "numstacks :num
+setempty "digit
+end
+
+to cheat 
+setcursor [1 22] type "|   |
+if not equalp :digit 8 [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+dispile
+dishand
+setempty "digit
+end
+
+;; Data abstraction (ranks)
+
+to rank :card
+output butlast :card
+end
+
+to ranknum :rank
+if emptyp :rank [output 0]
+if numberp :rank [output :rank]
+if :rank = "A [output 1]
+if :rank = "J [output 11]
+if :rank = "Q [output 12]
+if :rank = "K [output 13]
+end
+
+;; Data abstraction (suits)
+
+to suit :card
+output last :card
+end
+
+to redp :card
+output memberp (suit :card) :reds
+end
+
+;; Data abstraction (tops)
+
+to top :suit
+output thing word "top :suit
+end
+
+to settop :suit :value
+make (word "top :suit) :value
+end
+
+;; Data abstraction (card stacks)
+
+to shown :num
+output word "shown :num
+end
+
+to hidden :num
+output word "hidden :num
+end
+
+;; Data abstraction (pushdown stacks)
+
+to stackemptyp :name
+output emptyp thing :name
+end
+
+to setempty :stack
+make :stack []
+end
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/streams b/js/games/nluqo.github.io/~bh/downloads/csls-programs/streams
new file mode 100644
index 0000000..3fc96a9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/streams
@@ -0,0 +1,85 @@
+; Implementation of SICP streams (lazy-evaluation lists) in Logo.
+
+; Since we don't have special forms, we put the second argument to STREAM
+; in a (quoted) list.
+
+; Since we don't have lexical scope, we use substitution (`) into saved
+; expressions.
+
+to stream :car :delayed.cdr
+output fput :car (list "*delayed* :delayed.cdr)
+end
+
+to head :stream
+output first :stream
+end
+
+to tail :stream
+if emptyp bf :stream [output []]
+if not equalp first bf :stream "*delayed* [output bf :stream]
+localmake "result run last :stream
+.setbf :stream :result
+output :result
+end
+
+; higher order functions for streams
+
+; Remember that if the functional argument uses local variables, it has to
+; be backquoted.
+
+to stream.map :fun [:streams] 2
+if emptyp first :streams [output []]
+output stream apply :fun firsts :streams ~
+           `[(apply "stream.map fput ,[quoted :fun] (map "tail ,[:streams]))]
+end
+
+to stream.filter :fun :stream
+if emptyp :stream [output []]
+if invoke :fun head :stream ~
+  [output stream head :stream `[stream.filter ,[quoted :fun] tail ,[:stream]]]
+output stream.filter :fun tail :stream
+end
+
+to flatten :stream.of.streams
+if emptyp :stream.of.streams [output []]
+output flatten1 head :stream.of.streams :stream.of.streams
+end
+
+to flatten1 :stream :delayed.more.streams
+if emptyp :stream [output flatten tail :delayed.more.streams]
+output stream (head :stream) ~
+              `[flatten1 tail ,[:stream]
+                         ,[:delayed.more.streams]]
+end
+
+; helper for debugging
+
+to show.stream :stream [:num 10]
+show show.stream1 :stream :num
+end
+
+to show.stream1 :stream :num
+if emptyp :stream [output []]
+if equalp :num 0 [output [...]]
+output fput head :stream (show.stream1 tail :stream :num-1)
+end
+
+; examples
+
+to integers.from :n
+output stream :n `[integers.from ,[:n+1]]
+end
+
+make "integers integers.from 1
+
+to sieve :stream
+output stream (head :stream) ~
+              `[sieve stream.filter [not divisiblep ? ,[head :stream]]
+                                    tail ,[:stream]]
+end
+
+to divisiblep :big :small
+output 0 = remainder :big :small
+end
+
+make "primes sieve tail :integers
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/student b/js/games/nluqo.github.io/~bh/downloads/csls-programs/student
new file mode 100644
index 0000000..0e3df7c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/student
@@ -0,0 +1,1181 @@
+to student :prob
+say [The problem to be solved is] :prob
+make "prob map.se [depunct ?] :prob
+localmake "orgprob :prob
+student1 :prob ~
+         [[[the perimeter of ! rectangle]
+           [twice the sum of the length and width of the rectangle]]
+          [[two numbers] [one of the numbers and the other number]]
+          [[two numbers] [one number and the other number]]]
+end
+
+to student1 :prob :idioms
+local [simsen shelf aunits units wanted ans var lasteqn
+       ref eqt1 beg end idiom reply]
+make "prob idioms :prob
+if match [^ two numbers #] :prob ~
+   [make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms ~
+    tryidiom stop]
+while [match [^beg the the #end] :prob] [make "prob (sentence :beg "the :end)]
+say [With mandatory substitutions the problem is] :prob
+ifelse match [# @:in [[as old as] [age] [years old]] #] :prob ~
+       [ageprob] [make "simsen bracket :prob]
+lsay [The simple sentences are] :simsen
+foreach [aunits wanted ans var lasteqn ref units] [make ? []]
+make "shelf filter [not emptyp ?] map.se [senform ?] :simsen
+lsay [The equations to be solved are] :shelf
+make "units remdup :units
+if trysolve :shelf :wanted :units :aunits [print [The problem is solved.] stop]
+make "eqt1 remdup geteqns :var
+if not emptyp :eqt1 [lsay [Using the following known relationships] :eqt1]
+student2 :eqt1
+end
+
+to student2 :eqt1
+make "var remdup sentence (map.se [varterms ?] :eqt1) :var
+make "eqt1 sentence :eqt1 vartest :var
+if not emptyp :eqt1 ~
+   [if trysolve (sentence :shelf :eqt1) :wanted :units :aunits
+       [print [The problem is solved.] stop]]
+make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms
+if not emptyp :idiom [tryidiom stop]
+lsay [Do you know any more relationships among these variables?] :var
+make "reply readlist
+if equalp :reply [yes] [print [Tell me.] make "reply readlist]
+if equalp :reply [no] [print [] print [I can't solve this problem.] stop]
+make "reply map.se [depunct ?] :reply
+if dlm last :reply [make "reply butlast :reply]
+if not match [^beg is #end] :reply [print [I don't understand that.] stop]
+make "shelf sentence :shelf :eqt1
+student2 (list (list "equal opform :beg opform :end))
+end
+
+;; Mandatory substitutions
+
+to depunct :word
+if emptyp :word [output []]
+if equalp first :word "$ [output sentence "$ depunct butfirst :word]
+if equalp last :word "% [output sentence depunct butlast :word "percent]
+if memberp last :word [. ? |;| ,] [output sentence depunct butlast :word last :word]
+if emptyp butfirst :word [output :word]
+if equalp last2 :word "'s [output sentence depunct butlast butlast :word "s]
+output :word
+end
+
+to last2 :word
+output word (last butlast :word) (last :word)
+end
+
+to idioms :sent
+local "number
+output changes :sent ~
+    [[[the sum of] ["sum]] [[square of] ["square]] [[of] ["numof]]
+     [[how old] ["what]] [[is equal to] ["is]]
+     [[years younger than] [[less than]]] [[years older than] ["plus]]
+     [[percent less than] ["perless]] [[less than] ["lessthan]]
+     [[these] ["the]] [[more than] ["plus]]
+     [[first two numbers] [[the first number and the second number]]]
+     [[three numbers]
+      [[the first number and the second number and the third number]]]
+     [[one half] [0.5]] [[twice] [[2 times]]]
+     [[$ !number] [sentence :number "dollars]] [[consecutive to] [[1 plus]]]
+     [[larger than] ["plus]] [[per cent] ["percent]] [[how many] ["howm]]
+     [[is multiplied by] ["ismulby]] [[is divided by] ["isdivby]]
+     [[multiplied by] ["times]] [[divided by] ["divby]]]
+end
+
+to changes :sent :list
+localmake "keywords map.se [findkey first ?] :list
+output changes1 :sent :list :keywords
+end
+
+to findkey :pattern
+if equalp first :pattern "!:in [output first butfirst :pattern]
+if equalp first :pattern "?:in [output sentence (item 2 :pattern) (item 3 :pattern)]
+output first :pattern
+end
+
+to changes1 :sent :list :keywords
+if emptyp :sent [output []]
+if memberp first :sent :keywords [output changes2 :sent :list :keywords]
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes2 :sent :list :keywords
+changes3 :list :list
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes3 :biglist :nowlist
+if emptyp :nowlist [stop]
+if changeone first :nowlist [changes3 :biglist :biglist stop]
+changes3 :biglist butfirst :nowlist
+end
+
+to changeone :change
+local "end
+if not match (sentence first :change [#end]) :sent [output "false]
+make "sent run (sentence "sentence last :change ":end)
+output "true
+end
+
+;; Division into simple sentences
+
+to bracket :prob
+output bkt1 finddelim :prob
+end
+
+to finddelim :sent
+output finddelim1 :sent [] []
+end
+
+to finddelim1 :in :out :simples
+if emptyp :in ~
+   [ifelse emptyp :out [output :simples] [output lput (sentence :out ".) :simples]]
+if dlm first :in ~
+   [output finddelim1 (nocap butfirst :in) []
+                      (lput (sentence :out first :in) :simples)]
+output finddelim1 (butfirst :in) (sentence :out first :in) :simples
+end
+
+to nocap :words
+if emptyp :words [output []]
+if personp first :words [output :words]
+output sentence (lowercase first :words) butfirst :words
+end
+
+to bkt1 :problist
+local [first word rest]
+if emptyp :problist [output []]
+if not memberp ", first :problist ~
+   [output fput first :problist bkt1 butfirst :problist]
+if match [if ^first , !word:qword #rest] first :problist ~
+   [output bkt1 fput (sentence :first ".)
+                     fput (sentence :word :rest) butfirst :problist]
+if match [^first , and #rest] first :problist ~
+   [output fput (sentence :first ".) (bkt1 fput :rest butfirst :problist)]
+output fput first :problist bkt1 butfirst :problist
+end
+
+;; Age problems
+
+to ageprob
+local [beg end sym who num subj ages]
+while [match [^beg as old as #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg years old #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg will be when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg "in :sym [years . in] :sym "years :end)]
+while [match [^beg was when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg :sym [years ago .] :sym [years ago] :end)]
+while [match [^beg !who:personp will be in !num years #end] :prob] ~
+      [make "prob (sentence :beg :who [s age in] :num "years #end)]
+while [match [^beg was #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg will be #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg !who:personp is now #end] :prob] ~
+      [make "prob (sentence :beg :who [s age now] :end)]
+while [match [^beg !num years from now #end] :prob] ~
+      [make "prob (sentence :beg "in :num "years :end)]
+make "prob ageify :prob
+ifelse match [^ !who:personp ^end s age #] :prob ~
+       [make "subj sentence :who :end] [make "subj "someone]
+make "prob agepron :prob
+make "end :prob
+make "ages []
+while [match [^ !who:personp ^beg age #end] :end] ~
+      [push "ages (sentence "and :who :beg "age)]
+make "ages butfirst reduce "sentence remdup :ages
+while [match [^beg their ages #end] :prob] [make "prob (sentence :beg :ages :end)]
+make "simsen map [agesen ?] bracket :prob
+end
+
+to ageify :sent
+if emptyp :sent [output []]
+if not personp first :sent [output fput first :sent ageify butfirst :sent]
+catch "error [if equalp first butfirst :sent "s
+                 [output fput first :sent ageify butfirst :sent]]
+output (sentence first :sent [s age] ageify butfirst :sent)
+end
+
+to agepron :sent
+if emptyp :sent [output []]
+if not pronoun first :sent [output fput first :sent agepron butfirst :sent]
+if posspro first :sent [output (sentence :subj "s agepron butfirst :sent)]
+output (sentence :subj [s age] agepron butfirst :sent)
+end
+
+to agesen :sent
+local [when rest num]
+make "when []
+if match [in !num years #rest] :sent ~
+   [make "when sentence "pluss :num make "sent :rest]
+if match [!num years ago #rest] :sent ~
+   [make "when sentence "minuss :num make "sent :rest]
+output agewhen :sent
+end
+
+to agewhen :sent
+if emptyp :sent [output []]
+if not equalp first :sent "age [output fput first :sent agewhen butfirst :sent]
+if match [in !num years #rest] butfirst :sent ~
+   [output (sentence [age pluss] :num agewhen :rest)]
+if match [!num years ago #rest] butfirst :sent ~
+   [output (sentence [age minuss] :num agewhen :rest)]
+if equalp "now first butfirst :sent ~
+   [output sentence "age agewhen butfirst butfirst :sent]
+output (sentence "age :when agewhen butfirst :sent)
+end
+
+;; Translation from sentences into equations
+
+to senform :sent
+make "lasteqn senform1 :sent
+output :lasteqn
+end
+
+to senform1 :sent
+local [one two verb1 verb2 stuff1 stuff2 factor]
+if emptyp :sent [output []]
+if match [^ what are ^one and ^two !:dlm] :sent ~
+   [output fput (qset :one) (senform (sentence [what are] :two "?))]
+if match [^ what !:in [is are] #one !:dlm] :sent ~
+   [output (list qset :one)]
+if match [^ howm !one is #two !:dlm] :sent ~
+   [push "aunits (list :one) output (list qset :two)]
+if match [^ howm ^one do ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "have))]
+if match [^ howm ^one does ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "has))]
+if match [^ find ^one and #two] :sent ~
+   [output fput (qset :one) (senform sentence "find :two)]
+if match [^ find #one !:dlm] :sent [output (list qset :one)]
+make "sent filter [not article ?] :sent
+if match [^one ismulby #two] :sent ~
+   [push "ref (list "product opform :one opform :two) output []]
+if match [^one isdivby #two] :sent ~
+   [push "ref (list "quotient opform :one opform :two) output []]
+if match [^one is increased by #two] :sent ~
+   [push "ref (list "sum opform :one opform :two) output []]
+if match [^one is #two] :sent ~
+   [output (list (list "equal opform :one opform :two))]
+if match [^one !verb1:verb ^factor as many ^stuff1 as
+          ^two !verb2:verb ^stuff2 !:dlm] ~
+         :sent ~
+   [if emptyp :stuff2 [make "stuff2 :stuff1]
+    output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (sentence :factor [the number of] :stuff2 :two :verb2)))]
+if match [^one !verb1:verb !factor:numberp #stuff1 !:dlm] :sent ~
+   [output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (list :factor)))]
+say [This sentence form is not recognized:] :sent
+throw "error
+end
+
+to qset :sent
+localmake "opform opform filter [not article ?] :sent
+if not operatorp first :opform ~
+   [queue "wanted :opform queue "ans list :opform oprem :sent output []]
+localmake "gensym gensym
+queue "wanted :gensym
+queue "ans list :gensym oprem :sent
+output (list "equal :gensym opform (filter [not article ?] :sent))
+end
+
+to oprem :sent
+output map [ifelse equalp ? "numof ["of] [?]] :sent
+end
+
+to opform :expr
+local [left right op]
+if match [^left !op:op2 #right] :expr [output optest :op :left :right]
+if match [^left !op:op1 #right] :expr [output optest :op :left :right]
+if match [^left !op:op0 #right] :expr [output optest :op :left :right]
+if match [#left !:dlm] :expr [make "expr :left]
+output nmtest filter [not article ?] :expr
+end
+
+to optest :op :left :right
+output run (list (word "tst. :op) :left :right)
+end
+
+to tst.numof :left :right
+if numberp last :left [output (list "product opform :left opform :right)]
+output opform (sentence :left "of :right)
+end
+
+to tst.divby :left :right
+output (list "quotient opform :left opform :right)
+end
+
+to tst.tothepower :left :right
+output (list "expt opform :left opform :right)
+end
+
+to expt :num :pow
+if :pow < 1 [output 1]
+output :num * expt :num :pow - 1
+end
+
+to tst.per :left :right
+output (list "quotient ~
+          opform :left ~
+          opform (ifelse numberp first :right [:right] [fput 1 :right]))
+end
+
+to tst.lessthan :left :right
+output opdiff opform :right opform :left
+end
+
+to opdiff :left :right
+output (list "sum :left (list "minus :right))
+end
+
+to tst.minus :left :right
+if emptyp :left [output list "minus opform :right]
+output opdiff opform :left opform :right
+end
+
+to tst.minuss :left :right
+output tst.minus :left :right
+end
+
+to tst.sum :left :right
+local [one two three]
+if match [^one and ^two and #three] :right ~
+   [output (list "sum opform :one opform (sentence "sum :two "and :three))]
+if match [^one and #two] :right ~
+   [output (list "sum opform :one opform :two)]
+say [sum used wrong:] :right
+throw "error
+end
+
+to tst.squared :left :right
+output list "square opform :left
+end
+
+to tst.difference :left :right
+local [one two]
+if match [between ^one and #two] :right [output opdiff opform :one opform :two]
+say [Incorrect use of difference:] :right
+throw "error
+end
+
+to tst.plus :left :right
+output (list "sum opform :left opform :right)
+end
+
+to tst.pluss :left :right
+output tst.plus :left :right
+end
+
+to square :x
+output :x * :x
+end
+
+to tst.square :left :right
+output list "square opform :right
+end
+
+to tst.percent :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output opform (sentence butlast :left ((last :left) / 100) :right)
+end
+
+to tst.perless :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output (list "product ~
+          (opform sentence butlast :left ((100 - (last :left)) / 100)) ~
+          opform :right)
+end
+
+to tst.times :left :right
+if emptyp :left [say [Incorrect use of times:] :right throw "error]
+output (list "product opform :left opform :right)
+end
+
+to nmtest :expr
+if match [& !:numberp #] :expr [say [argument error:] :expr throw "error]
+if and (equalp first :expr 1) (1 < count :expr) ~
+   [make "expr (sentence 1 plural (first butfirst :expr) (butfirst butfirst :expr))]
+if and (numberp first :expr) (1 < count :expr) ~
+   [push "units (list first butfirst :expr) ~
+    output (list "product (first :expr) (opform butfirst :expr))]
+if numberp first :expr [output first :expr]
+if memberp "this :expr [output this :expr]
+if not memberp :expr :var [push "var :expr]
+output :expr
+end
+
+to this :expr
+if not emptyp :ref [output pop "ref]
+if not emptyp :lasteqn [output first butfirst last :lasteqn]
+if equalp first :expr "this [make "expr butfirst :expr]
+push "var :expr
+output :expr
+end
+
+;; Solving the equations
+
+to trysolve :shelf :wanted :units :aunits
+local "solution
+make "solution solve :wanted :shelf (ifelse emptyp :aunits [:units] [:aunits])
+output pranswers :ans :solution
+end
+
+to solve :wanted :eqt :terms
+output solve.reduce solver :wanted :terms [] [] "insufficient
+end
+
+to solve.reduce :soln
+if emptyp :soln [output []]
+if wordp :soln [output :soln]
+if emptyp butfirst :soln [output :soln]
+local "part
+make "part solve.reduce butfirst :soln
+output fput (list (first first :soln) (subord last first :soln :part)) :part
+end
+
+to solver :wanted :terms :alis :failed :err
+local [one result restwant]
+if emptyp :wanted [output :err]
+make "one solve1 (first :wanted) ~
+                 (sentence butfirst :wanted :failed :terms) ~
+                 :alis :eqt [] "insufficient
+if wordp :one ~
+   [output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one]
+make "restwant (sentence :failed butfirst :wanted)
+if emptyp :restwant [output :one]
+make "result solver :restwant :terms :one [] "insufficient
+if listp :result [output :result]
+output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one
+end
+
+to solve1 :x :terms :alis :eqns :failed :err
+local [thiseq vars extras xterms others result]
+if emptyp :eqns [output :err]
+make "thiseq subord (first :eqns) :alis
+make "vars varterms :thiseq
+if not memberp :x :vars ~
+   [output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :err]
+make "xterms fput :x :terms
+make "extras setminus :vars :xterms
+make "eqt remove (first :eqns) :eqt
+if not emptyp :extras ~
+   [make "others solver :extras :xterms :alis [] "insufficient
+    ifelse wordp :others
+           [make "eqt sentence :failed :eqns
+            output solve1 :x :terms :alis (butfirst :eqns)
+                      (fput first :eqns :failed) :others]
+           [make "alis :others
+            make "thiseq subord (first :eqns) :alis]]
+make "result solveq :x :thiseq
+if listp :result [output lput :result :alis]
+make "eqt sentence :failed :eqns
+output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :result
+end
+
+to solveq :var :eqn
+local [left right]
+make "left first butfirst :eqn
+ifelse occvar :var :left ~
+   [make "right last :eqn] [make "right :left make "left last :eqn]
+output solveq1 :left :right "true
+end
+
+to solveq1 :left :right :bothtest
+if :bothtest [if occvar :var :right [output solveqboth :left :right]]
+if equalp :left :var [output list :var :right]
+if wordp :left [output "unsolvable]
+local "oper
+make "oper first :left
+if memberp :oper [sum product minus quotient] [output run (list word "solveq. :oper)]
+output "unsolvable
+end
+
+to solveqboth :left :right
+if not equalp first :right "sum [output solveq1 (subterm :left :right) 0 "false]
+output solveq.rplus :left butfirst :right []
+end
+
+to solveq.rplus :left :right :newright
+if emptyp :right [output solveq1 :left (simone "sum :newright) "false]
+if occvar :var first :right ~
+   [output solveq.rplus (subterm :left first :right) butfirst :right :newright]
+output solveq.rplus :left butfirst :right (fput first :right :newright)
+end
+
+to solveq.sum
+if emptyp butfirst butfirst :left [output solveq1 first butfirst :left :right "true]
+output solveq.sum1 butfirst :left :right []
+end
+
+to solveq.sum1 :left :right :newleft
+if emptyp :left [output solveq.sum2]
+if occvar :var first :left ~
+   [output solveq.sum1 butfirst :left :right fput first :left :newleft]
+output solveq.sum1 butfirst :left (subterm :right first :left) :newleft
+end
+
+to solveq.sum2
+if emptyp butfirst :newleft [output solveq1 first :newleft :right "true]
+localmake "factor factor :newleft :var
+if equalp first :factor "unknown [output "unsolvable]
+if equalp last :factor 0 [output "unsolvable]
+output solveq1 first :factor (divterm :right last :factor) "true
+end
+
+to solveq.minus
+output solveq1 (first butfirst :left) (minusin :right) "false
+end
+
+to solveq.product
+output solveq.product1 :left :right
+end
+
+to solveq.product1 :left :right
+if emptyp butfirst butfirst :left [output solveq1 (first butfirst :left) :right "true]
+if not occvar :var first butfirst :left ~
+   [output solveq.product1 (fput "product butfirst butfirst :left)
+                           (divterm :right first butfirst :left)]
+localmake "rest simone "product butfirst butfirst :left
+if occvar :var :rest [output "unsolvable]
+output solveq1 (first butfirst :left) (divterm :right :rest) "false
+end
+
+to solveq.quotient
+if occvar :var first butfirst :left ~
+   [output solveq1 (first butfirst :left) (simtimes list :right last :left) "true]
+output solveq1 (simtimes list :right last :left) (first butfirst :left) "true
+end
+
+to denom :fract :addends
+make "addends simplus :addends
+localmake "den last :fract
+if not equalp first :addends "quotient ~
+   [output simdiv list (simone "sum
+                               (remop "sum list (distribtimes (list :addends) :den)
+                                                first butfirst :fract))
+                       :den]
+if equalp :den last :addends ~
+   [output simdiv (simplus list (first butfirst :fract) (first butfirst :addends))
+                  :den]
+localmake "lowterms simdiv list :den last :addends
+output simdiv list (simplus (simtimes list first butfirst :fract last :lowterms)
+                            (simtimes list first butfirst :addends
+                                           first butfirst :lowterms)) ~
+                   (simtimes list first butfirst :lowterms last :addends)
+end
+
+to distribtimes :trms :multiplier
+output simplus map [simtimes (list ? :multiplier)] :trms
+end
+
+to distribx :expr
+local [oper args]
+if emptyp :expr [output :expr]
+make "oper first :expr
+if not operatorp :oper [output :expr]
+make "args map [distribx ?] butfirst :expr
+if reduce "and map [numberp ?] :args [output run (sentence [(] :oper :args [)])]
+if equalp :oper "sum [output simplus :args]
+if equalp :oper "minus [output minusin first :args]
+if equalp :oper "product [output simtimes :args]
+if equalp :oper "quotient [output simdiv :args]
+output fput :oper :args
+end
+
+to divterm :dividend :divisor
+if equalp :dividend 0 [output 0]
+output simdiv list :dividend :divisor
+end
+
+to factor :exprs :var
+local "trms
+make "trms map [factor1 :var ?] :exprs
+if memberp "unknown :trms [output fput "unknown :exprs]
+output list :var simplus :trms
+end
+
+to factor1 :var :expr
+localmake "negvar minusin :var
+if equalp :var :expr [output 1]
+if equalp :negvar :expr [output -1]
+if emptyp :expr [output "unknown]
+if equalp first :expr "product [output factor2 butfirst :expr]
+if not equalp first :expr "quotient [output "unknown]
+localmake "dividend first butfirst :expr
+if equalp :var :dividend [output (list "quotient 1 last :expr)]
+if not equalp first :dividend "product [output "unknown]
+localmake "result factor2 butfirst :dividend
+if equalp :result "unknown [output "unknown]
+output (list "quotient :result last :expr)
+end
+
+to factor2 :trms
+if memberp :var :trms [output simone "product (remove :var :trms)]
+if memberp :negvar :trms [output minusin simone "product (remove :negvar :trms)]
+output "unknown
+end
+
+to maybeadd :num :rest
+if equalp :num 0 [output :rest]
+output fput :num :rest
+end
+
+to maybemul :num :rest
+if equalp :num 1 [output :rest]
+output fput :num :rest
+end
+
+to minusin :expr
+if emptyp :expr [output -1]
+if equalp first :expr "sum [output fput "sum map [minusin ?] butfirst :expr]
+if equalp first :expr "minus [output last :expr]
+if memberp first :expr [product quotient] ~
+   [output fput first :expr
+                (fput (minusin first butfirst :expr) butfirst butfirst :expr)]
+if numberp :expr [output minus :expr]
+output list "minus :expr
+end
+
+to occvar :var :expr
+if emptyp :expr [output "false]
+if wordp :expr [output equalp :var :expr]
+if operatorp first :expr [output not emptyp find [occvar :var ?] butfirst :expr]
+output equalp :var :expr
+end
+
+to remfactor :num :den
+foreach butfirst :num [remfactor1 ?]
+output (list "quotient (simone "product butfirst :num) (simone "product butfirst :den))
+end
+
+to remfactor1 :expr
+local "neg
+if memberp :expr :den ~
+   [make "num remove :expr :num  make "den remove :expr :den  stop]
+make "neg minusin :expr
+if not memberp :neg :den [stop]
+make "num remove :expr :num
+make "den minusin remove :neg :den
+end
+
+to remop :oper :exprs
+output map.se [ifelse equalp first ? :oper [butfirst ?] [(list ?)]] :exprs
+end
+
+to simdiv :list
+local [num den numop denop]
+make "num first :list
+make "den last :list
+if equalp :num :den [output 1]
+if numberp :den [output simtimes (list (quotient 1 :den) :num)]
+make "numop first :num
+make "denop first :den
+if equalp :numop "quotient ~
+   [output simdiv list (first butfirst :num) (simtimes list last :num :den)]
+if equalp :denop "quotient ~
+   [output simdiv list (simtimes list :num last :den) (first butfirst :den)]
+if and equalp :numop "product equalp :denop "product [output remfactor :num :den]
+if and equalp :numop "product memberp :den :num [output remove :den :num]
+output fput "quotient :list
+end
+
+to simone :oper :trms
+if emptyp :trms [output ifelse equalp :oper "product [1] [0]]
+if emptyp butfirst :trms [output first :trms]
+output fput :oper :trms
+end
+
+to simplus :exprs
+make "exprs remop "sum :exprs
+localmake "factor [unknown]
+catch "simplus ~
+      [foreach :terms ~
+               [make "factor (factor :exprs ?) ~
+                if not equalp first :factor "unknown [throw "simplus]]]
+if not equalp first :factor "unknown [output fput "product remop "product :factor]
+localmake "nums 0
+localmake "nonnums []
+localmake "quick []
+catch "simplus [simplus1 :exprs]
+if not emptyp :quick [output :quick]
+if not equalp :nums 0 [push "nonnums :nums]
+output simone "sum :nonnums
+end
+
+to simplus1 :exprs
+if emptyp :exprs [stop]
+simplus2 first :exprs
+simplus1 butfirst :exprs
+end
+
+to simplus2 :pos
+local "neg
+make "neg minusin :pos
+if numberp :pos [make "nums sum :pos :nums stop]
+if memberp :neg butfirst :exprs [make "exprs remove :neg :exprs stop]
+if equalp first :pos "quotient ~
+   [make "quick (denom :pos (maybeadd :nums sentence :nonnums butfirst :exprs)) ~
+    throw "simplus]
+push "nonnums :pos
+end
+
+to simtimes :exprs
+local [nums nonnums quick]
+make "nums 1
+make "nonnums []
+make "quick []
+catch "simtimes [foreach remop "product :exprs [simtimes1 ?]]
+if not emptyp :quick [output :quick]
+if equalp :nums 0 [output 0]
+if not equalp :nums 1 [push "nonnums :nums]
+output simone "product :nonnums
+end
+
+to simtimes1 :expr
+if equalp :expr 0 [make "nums 0 throw "simtimes]
+if numberp :expr [make "nums product :expr :nums stop]
+if equalp first :expr "sum ~
+   [make "quick distribtimes (butfirst :expr)
+                             (simone "product maybemul :nums sentence :nonnums ?rest)
+    throw "simtimes]
+if equalp first :expr "quotient ~
+   [make "quick
+          simdiv (list (simtimes (list (first butfirst :expr)
+                                       (simone "product
+                                               maybemul :nums
+                                                        sentence :nonnums ?rest)))
+                       (last :expr))
+    throw "simtimes]
+push "nonnums :expr
+end
+
+to subord :expr :alist
+output distribx subord1 :expr :alist
+end
+
+to subord1 :expr :alist
+if emptyp :alist [output :expr]
+output subord (substop (last first :alist) (first first :alist) :expr) ~
+              (butfirst :alist)
+end
+
+to substop :val :var :expr
+if emptyp :expr [output []]
+if equalp :expr :var [output :val]
+if not operatorp first :expr [output :expr]
+output fput first :expr map [substop :val :var ?] butfirst :expr
+end
+
+to subterm :minuend :subtrahend
+if equalp :minuend 0 [output minusin :subtrahend]
+if equalp :minuend :subtrahend [output 0]
+output simplus (list :minuend minusin :subtrahend)
+end
+
+to varterms :expr
+if emptyp :expr [output []]
+if numberp :expr [output []]
+if wordp :expr [output (list :expr)]
+if operatorp first :expr [output map.se [varterms ?] butfirst :expr]
+output (list :expr)
+end
+
+;; Printing the solutions
+
+to pranswers :ans :solution
+print []
+if equalp :solution "unsolvable ~
+   [print [Unable to solve this set of equations.] output "false]
+if equalp :solution "insufficient ~
+   [print [The equations were insufficient to find a solution.] output "false]
+localmake "gotall "true
+foreach :ans [if prans ? :solution [make "gotall "false]]
+if not :gotall [print [] print [Unable to solve this set of equations.]]
+output :gotall
+end
+
+to prans :ans :solution
+localmake "result find [equalp first ? first :ans] :solution
+if emptyp :result [output "true]
+print (sentence cap last :ans "is unitstring last :result)
+print []
+output "false
+end
+
+to unitstring :expr
+if numberp :expr [output roundoff :expr]
+if equalp first :expr "product ~
+   [output sentence (unitstring first butfirst :expr)
+                    (reduce "sentence butfirst butfirst :expr)]
+if (and (listp :expr)
+         (not numberp first :expr)
+         (not operatorp first :expr)) ~
+   [output (sentence 1 (singular first :expr) (butfirst :expr))]
+output :expr
+end
+
+to roundoff :num
+if (abs (:num - round :num)) < 0.0001 [output round :num]
+output :num
+end
+
+to abs :num
+output ifelse (:num < 0) [-:num] [:num]
+end
+
+;; Using known relationships
+
+to geteqns :vars
+output map.se [gprop varkey ? "eqns] :vars
+end
+
+to varkey :var
+local "word
+if match [number of !word #] :var [output :word]
+output first :var
+end
+
+;; Assuming equality of similar variables
+
+to vartest :vars
+if emptyp :vars [output []]
+local [var beg end]
+make "var first :vars
+output (sentence (ifelse match [^beg !:pronoun #end] :var
+                         [vartest1 :var (sentence :beg "& :end) butfirst :vars]
+                         [[]])
+                 (vartest1 :var (sentence "# :var "#) butfirst :vars)
+                 (vartest butfirst :vars))
+end
+
+to vartest1 :target :pat :vars
+output map [varequal :target ?] filter [match :pat ?] :vars
+end
+
+to varequal :target :var
+print []
+print [Assuming that]
+print (sentence (list :target) [is equal to] (list :var))
+output (list "equal :target :var)
+end
+
+;; Optional substitutions
+
+to tryidiom
+make "prob (sentence :beg last :idiom :end)
+while [match (sentence "^beg first :idiom "#end) :prob] ~
+      [make "prob (sentence :beg last :idiom :end)]
+say [The problem with an idiomatic substitution is] :prob
+student1 :prob (remove :idiom :idioms)
+end
+
+;; Utility procedures
+
+to qword :word
+output memberp :word [find what howm how]
+end
+
+to dlm :word
+output memberp :word [. ? |;|]
+end
+
+to article :word
+output memberp :word [a an the]
+end
+
+to verb :word
+output memberp :word [have has get gets weigh weighs]
+end
+
+to personp :word
+output memberp :word [Mary Ann Bill Tom Sally Frank father uncle]
+end
+
+to pronoun :word
+output memberp :word [he she it him her they them his her its]
+end
+
+to posspro :word
+output memberp :word [his her its]
+end
+
+to op0 :word
+output memberp :word [pluss minuss squared tothepower per sum difference numof]
+end
+
+to op1 :word
+output memberp :word [times divby square]
+end
+
+to op2 :word
+output memberp :word [plus minus lessthan percent perless]
+end
+
+to operatorp :word
+output memberp :word [sum minus product quotient expt square equal]
+end
+
+to plural :word
+localmake "plural gprop :word "plural
+if not emptyp :plural [output :plural]
+if not emptyp gprop :word "sing [output :word]
+if equalp last :word "s [output :word]
+output word :word "s
+end
+
+to singular :word
+localmake "sing gprop :word "sing
+if not emptyp :sing [output :sing]
+if not emptyp gprop :word "plural [output :word]
+if equalp last :word "s [output butlast :word]
+output :word
+end
+
+to setminus :big :little
+output filter [not memberp ? :little] :big
+end
+
+to say :herald :text
+print []
+print :herald
+print []
+print :text
+print []
+end
+
+to lsay :herald :text
+print []
+print :herald
+print []
+foreach :text [print cap ? print []]
+end
+
+to cap :sent
+if emptyp :sent [output []]
+output sentence (word uppercase first first :sent butfirst first :sent) ~
+                butfirst :sent
+end
+
+;; The pattern matcher
+
+to match :pat :sen
+if prematch :pat :sen [output rmatch :pat :sen]
+output "false
+end
+
+to prematch :pat :sen
+if emptyp :pat [output "true]
+if listp first :pat [output prematch butfirst :pat :sen]
+if memberp first first :pat [! @ # ^ & ?] [output prematch butfirst :pat :sen]
+if emptyp :sen [output "false]
+localmake "rest member first :pat :sen
+if not emptyp :rest [output prematch butfirst :pat :rest]
+output "false
+end
+
+to rmatch :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen [output rmatch butfirst :pat butfirst :sen]
+output "false
+end
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output rmatch butfirst :pat butfirst :sen
+end
+
+to match?
+make :special.var []
+if emptyp :sen [output rmatch butfirst :pat :sen]
+if not try.pred [output rmatch butfirst :pat :sen]
+make :special.var first :sen
+if rmatch butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output rmatch butfirst :pat :sen
+end
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if rmatch butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+to try.pred
+if listp :special.pred [output rmatch :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output rmatch :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if rmatch first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
+
+;; Sample word problems
+
+make "ann [Mary is twice as old as Ann was when Mary was as old as Ann is now.
+  If Mary is 24 years old, how old is Ann?]
+make "guns [The number of soldiers the Russians have is
+  one half of the number of guns they have. They have 7000 guns.
+  How many soldiers do they have?]
+make "jet [The distance from New York to Los Angeles is 3000 miles.
+  If the average speed of a jet plane is 600 miles per hour,
+  find the time it takes to travel from New York to Los Angeles by jet.]
+make "nums [A number is multiplied by 6 . This product is increased by 44 .
+  This result is 68 . Find the number.]
+make "radio [The price of a radio is $69.70.
+  If this price is 15 percent less than the marked price, find the marked price.]
+make "sally [The sum of Sally's share of some money and Frank's share is $4.50.
+  Sally's share is twice Frank's. Find Frank's and Sally's share.]
+make "ship [The gross weight of a ship is 20000 tons.
+  If its net weight is 15000 tons, what is the weight of the ships cargo?]
+make "span [If 1 span is 9 inches, and 1 fathom is 6 feet,
+  how many spans is 1 fathom?]
+make "sumtwo [The sum of two numbers is 96,
+  and one number is 16 larger than the other number. Find the two numbers.]
+make "tom [If the number of customers Tom gets is
+  twice the square of 20 per cent of the number of advertisements he runs,
+  and the number of advertisements he runs is 45,
+  what is the number of customers Tom gets?]
+make "uncle [Bill's father's uncle is twice as old as Bill's father.
+  2 years from now Bill's father will be 3 times as old as Bill.
+  The sum of their ages is 92 . Find Bill's age.]
+
+;; Initial data base
+
+pprop "distance "eqns ~
+  [[equal [distance] [product [speed] [time]]]
+   [equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "feet "eqns ~
+  [[equal [product 1 [feet]] [product 12 [inches]]]
+   [equal [product 1 [yards]] [product 3 [feet]]]]
+pprop "feet "sing "foot
+pprop "foot "plural "feet
+pprop "gallons "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "gas "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "inch "plural "inches
+pprop "inches "eqns [[equal [product 1 [feet]] [product 12 [inches]]]]
+pprop "people "sing "person
+pprop "person "plural "people
+pprop "speed "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "time "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "yards "eqns [[equal [product 1 [yards]] [product 3 [feet]]]]
diff --git a/js/games/nluqo.github.io/~bh/downloads/csls-programs/tower b/js/games/nluqo.github.io/~bh/downloads/csls-programs/tower
new file mode 100644
index 0000000..62e2824
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/csls-programs/tower
@@ -0,0 +1,31 @@
+program tower;
+ {This program solves the 5-disk tower of hanoi problem.}
+
+procedure hanoi(number:integer;from,onto,other:char);
+ {Recursive procedure that solves a subproblem of the original problem,
+ moving some number of disks, not necessarily 5.  To move n disks, it
+ must get the topmost n-1 out of the way, move the nth to the target
+ stack, then move the n-1 to the target stack.}
+
+  procedure movedisk(number:integer;from,onto:char);
+   {This procedure moves one single disk.  It assumes that the move is
+   legal, i.e., the disk is at the top of its stack and the target stack
+   has no smaller disks already.  Procedure hanoi is responsible for
+   making sure that's all true.}
+
+    begin {movedisk}
+      writeln('Move disk ',number:1,' from ',from,' to ',onto)
+    end; {movedisk}
+
+  begin {hanoi}
+    if number <> 0 then
+       begin
+         hanoi(number-1,from,other,onto);
+         movedisk(number,from,onto);
+         hanoi(number-1,other,onto,from)
+       end
+  end; {hanoi}
+
+begin {main program}
+  hanoi(5,'a','b','c')
+end.
diff --git a/js/games/nluqo.github.io/~bh/downloads/index.html b/js/games/nluqo.github.io/~bh/downloads/index.html
new file mode 100644
index 0000000..764ce49
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/index.html
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads</h1>
+  <table>
+   <tr><th valign="top"><img src="../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="UCBLogo-6.0.dmg.gz">UCBLogo-6.0.dmg.gz</a>     </td><td align="right">2009-06-01 20:10  </td><td align="right">6.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="UCBLogo.dmg">UCBLogo.dmg</a>            </td><td align="right">2021-12-29 14:07  </td><td align="right">4.4M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="blogo.exe">blogo.exe</a>              </td><td align="right">2019-12-29 16:55  </td><td align="right">1.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="csls-programs">csls-programs/</a>         </td><td align="right">2020-12-30 07:37  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="macosx-ucblogo-5.5-Installer.hqx">macosx-ucblogo-5.5-I..&gt;</a></td><td align="right">2008-12-16 07:09  </td><td align="right">2.9M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="simply">simply/</a>                </td><td align="right">2006-07-05 05:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="ucblogo-4.xo">ucblogo-4.xo</a>           </td><td align="right">2019-12-29 16:55  </td><td align="right">2.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/layout.gif" alt="[   ]"></td><td><a href="ucblogo.pdf">ucblogo.pdf</a>            </td><td align="right">2021-12-29 23:10  </td><td align="right">502K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="ucblogo.sea.hqx">ucblogo.sea.hqx</a>        </td><td align="right">2019-12-29 16:55  </td><td align="right">2.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="ucblogo.tar.gz">ucblogo.tar.gz</a>         </td><td align="right">2021-12-29 23:10  </td><td align="right">1.6M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/ucblogosetup.exe">ucblogosetup.exe</a>       </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="ucbwlogosetup.exe">ucbwlogosetup.exe</a>      </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/text.gif" alt="[TXT]"></td><td><a href="usermanual">usermanual</a>             </td><td align="right">2021-12-29 23:31  </td><td align="right">152K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=A
new file mode 100644
index 0000000..60e7d6b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=A
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads</h1>
+  <table>
+   <tr><th valign="top"><img src="../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="simply">simply/</a>                </td><td align="right">2006-07-05 05:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="macosx-ucblogo-5.5-Installer.hqx">macosx-ucblogo-5.5-I..&gt;</a></td><td align="right">2008-12-16 07:09  </td><td align="right">2.9M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="UCBLogo-6.0.dmg.gz">UCBLogo-6.0.dmg.gz</a>     </td><td align="right">2009-06-01 20:10  </td><td align="right">6.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="blogo.exe">blogo.exe</a>              </td><td align="right">2019-12-29 16:55  </td><td align="right">1.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="ucblogo.sea.hqx">ucblogo.sea.hqx</a>        </td><td align="right">2019-12-29 16:55  </td><td align="right">2.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="ucblogo-4.xo">ucblogo-4.xo</a>           </td><td align="right">2019-12-29 16:55  </td><td align="right">2.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="csls-programs">csls-programs/</a>         </td><td align="right">2020-12-30 07:37  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="UCBLogo.dmg">UCBLogo.dmg</a>            </td><td align="right">2021-12-29 14:07  </td><td align="right">4.4M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="ucblogo.tar.gz">ucblogo.tar.gz</a>         </td><td align="right">2021-12-29 23:10  </td><td align="right">1.6M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/layout.gif" alt="[   ]"></td><td><a href="ucblogo.pdf">ucblogo.pdf</a>            </td><td align="right">2021-12-29 23:10  </td><td align="right">502K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/ucblogosetup.exe">ucblogosetup.exe</a>       </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="ucbwlogosetup.exe">ucbwlogosetup.exe</a>      </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/text.gif" alt="[TXT]"></td><td><a href="usermanual">usermanual</a>             </td><td align="right">2021-12-29 23:31  </td><td align="right">152K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=D b/js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=D
new file mode 100644
index 0000000..38d91ee
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/index.html?C=M;O=D
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads</h1>
+  <table>
+   <tr><th valign="top"><img src="../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/text.gif" alt="[TXT]"></td><td><a href="usermanual">usermanual</a>             </td><td align="right">2021-12-29 23:31  </td><td align="right">152K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="ucbwlogosetup.exe">ucbwlogosetup.exe</a>      </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/ucblogosetup.exe">ucblogosetup.exe</a>       </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/layout.gif" alt="[   ]"></td><td><a href="ucblogo.pdf">ucblogo.pdf</a>            </td><td align="right">2021-12-29 23:10  </td><td align="right">502K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="ucblogo.tar.gz">ucblogo.tar.gz</a>         </td><td align="right">2021-12-29 23:10  </td><td align="right">1.6M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="UCBLogo.dmg">UCBLogo.dmg</a>            </td><td align="right">2021-12-29 14:07  </td><td align="right">4.4M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="csls-programs">csls-programs/</a>         </td><td align="right">2020-12-30 07:37  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="ucblogo-4.xo">ucblogo-4.xo</a>           </td><td align="right">2019-12-29 16:55  </td><td align="right">2.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="ucblogo.sea.hqx">ucblogo.sea.hqx</a>        </td><td align="right">2019-12-29 16:55  </td><td align="right">2.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="blogo.exe">blogo.exe</a>              </td><td align="right">2019-12-29 16:55  </td><td align="right">1.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="UCBLogo-6.0.dmg.gz">UCBLogo-6.0.dmg.gz</a>     </td><td align="right">2009-06-01 20:10  </td><td align="right">6.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="macosx-ucblogo-5.5-Installer.hqx">macosx-ucblogo-5.5-I..&gt;</a></td><td align="right">2008-12-16 07:09  </td><td align="right">2.9M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="simply">simply/</a>                </td><td align="right">2006-07-05 05:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=A
new file mode 100644
index 0000000..764ce49
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=A
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads</h1>
+  <table>
+   <tr><th valign="top"><img src="../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="UCBLogo-6.0.dmg.gz">UCBLogo-6.0.dmg.gz</a>     </td><td align="right">2009-06-01 20:10  </td><td align="right">6.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="UCBLogo.dmg">UCBLogo.dmg</a>            </td><td align="right">2021-12-29 14:07  </td><td align="right">4.4M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="blogo.exe">blogo.exe</a>              </td><td align="right">2019-12-29 16:55  </td><td align="right">1.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="csls-programs">csls-programs/</a>         </td><td align="right">2020-12-30 07:37  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="macosx-ucblogo-5.5-Installer.hqx">macosx-ucblogo-5.5-I..&gt;</a></td><td align="right">2008-12-16 07:09  </td><td align="right">2.9M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="simply">simply/</a>                </td><td align="right">2006-07-05 05:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="ucblogo-4.xo">ucblogo-4.xo</a>           </td><td align="right">2019-12-29 16:55  </td><td align="right">2.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/layout.gif" alt="[   ]"></td><td><a href="ucblogo.pdf">ucblogo.pdf</a>            </td><td align="right">2021-12-29 23:10  </td><td align="right">502K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="ucblogo.sea.hqx">ucblogo.sea.hqx</a>        </td><td align="right">2019-12-29 16:55  </td><td align="right">2.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="ucblogo.tar.gz">ucblogo.tar.gz</a>         </td><td align="right">2021-12-29 23:10  </td><td align="right">1.6M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/ucblogosetup.exe">ucblogosetup.exe</a>       </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="ucbwlogosetup.exe">ucbwlogosetup.exe</a>      </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/text.gif" alt="[TXT]"></td><td><a href="usermanual">usermanual</a>             </td><td align="right">2021-12-29 23:31  </td><td align="right">152K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=D
new file mode 100644
index 0000000..16e3e37
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/index.html?C=N;O=D
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads</h1>
+  <table>
+   <tr><th valign="top"><img src="../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/text.gif" alt="[TXT]"></td><td><a href="usermanual">usermanual</a>             </td><td align="right">2021-12-29 23:31  </td><td align="right">152K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="ucbwlogosetup.exe">ucbwlogosetup.exe</a>      </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/ucblogosetup.exe">ucblogosetup.exe</a>       </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="ucblogo.tar.gz">ucblogo.tar.gz</a>         </td><td align="right">2021-12-29 23:10  </td><td align="right">1.6M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="ucblogo.sea.hqx">ucblogo.sea.hqx</a>        </td><td align="right">2019-12-29 16:55  </td><td align="right">2.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/layout.gif" alt="[   ]"></td><td><a href="ucblogo.pdf">ucblogo.pdf</a>            </td><td align="right">2021-12-29 23:10  </td><td align="right">502K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="ucblogo-4.xo">ucblogo-4.xo</a>           </td><td align="right">2019-12-29 16:55  </td><td align="right">2.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="simply">simply/</a>                </td><td align="right">2006-07-05 05:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="macosx-ucblogo-5.5-Installer.hqx">macosx-ucblogo-5.5-I..&gt;</a></td><td align="right">2008-12-16 07:09  </td><td align="right">2.9M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="csls-programs">csls-programs/</a>         </td><td align="right">2020-12-30 07:37  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="blogo.exe">blogo.exe</a>              </td><td align="right">2019-12-29 16:55  </td><td align="right">1.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="UCBLogo.dmg">UCBLogo.dmg</a>            </td><td align="right">2021-12-29 14:07  </td><td align="right">4.4M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="UCBLogo-6.0.dmg.gz">UCBLogo-6.0.dmg.gz</a>     </td><td align="right">2009-06-01 20:10  </td><td align="right">6.7M</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/downloads/index.html?C=S;O=A
new file mode 100644
index 0000000..bfdb3a2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/index.html?C=S;O=A
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads</h1>
+  <table>
+   <tr><th valign="top"><img src="../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/?C=S;O=D">Size</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/?C=D;O=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="csls-programs">csls-programs/</a>         </td><td align="right">2020-12-30 07:37  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/folder.gif" alt="[DIR]"></td><td><a href="simply">simply/</a>                </td><td align="right">2006-07-05 05:00  </td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/text.gif" alt="[TXT]"></td><td><a href="usermanual">usermanual</a>             </td><td align="right">2021-12-29 23:31  </td><td align="right">152K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/layout.gif" alt="[   ]"></td><td><a href="ucblogo.pdf">ucblogo.pdf</a>            </td><td align="right">2021-12-29 23:10  </td><td align="right">502K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="blogo.exe">blogo.exe</a>              </td><td align="right">2019-12-29 16:55  </td><td align="right">1.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="ucblogo.tar.gz">ucblogo.tar.gz</a>         </td><td align="right">2021-12-29 23:10  </td><td align="right">1.6M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="ucblogo.sea.hqx">ucblogo.sea.hqx</a>        </td><td align="right">2019-12-29 16:55  </td><td align="right">2.1M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="ucblogo-4.xo">ucblogo-4.xo</a>           </td><td align="right">2019-12-29 16:55  </td><td align="right">2.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binhex.gif" alt="[   ]"></td><td><a href="macosx-ucblogo-5.5-Installer.hqx">macosx-ucblogo-5.5-I..&gt;</a></td><td align="right">2008-12-16 07:09  </td><td align="right">2.9M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/unknown.gif" alt="[   ]"></td><td><a href="UCBLogo.dmg">UCBLogo.dmg</a>            </td><td align="right">2021-12-29 14:07  </td><td align="right">4.4M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="https://people.eecs.berkeley.edu/~bh/downloads/ucblogosetup.exe">ucblogosetup.exe</a>       </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/binary.gif" alt="[   ]"></td><td><a href="ucbwlogosetup.exe">ucbwlogosetup.exe</a>      </td><td align="right">2021-12-29 23:10  </td><td align="right">4.7M</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../icons/compressed.gif" alt="[CMP]"></td><td><a href="UCBLogo-6.0.dmg.gz">UCBLogo-6.0.dmg.gz</a>     </td><td align="right">2009-06-01 20:10  </td><td align="right">6.7M</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/macosx-ucblogo-5.5-Installer.hqx b/js/games/nluqo.github.io/~bh/downloads/macosx-ucblogo-5.5-Installer.hqx
new file mode 100644
index 0000000..44a8c91
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/macosx-ucblogo-5.5-Installer.hqx
@@ -0,0 +1 @@
+(This file must be converted with BinHex 4.0)
:('eKBfpcH#eeBf*XEfG[,68Z05e*ER0dB@aXCA)!39"36&C*8c-N!!!J`j8!!H1
ETDG69N08!!!!!ArVB(fr)VjRJ!%$$3!!!!%!!!!!!!GU&pKF9U-!)(mIJ!%$$3!
!!!"+EhNKF'9QCR"hF'-!!!!"ZrZY"!!!!!!!!!!!!!!!!!!$!!)!!!!!rrrrr`!
!!!!!"`*J!!F#B!!(!Q!!!#b`!!3%!2rrrrm!!!!!!!"di!!!8CS!!$VA!!F[%!)
""!$rrrrr!!!!!!!!!!!!!!!!!!!X,!!!!)!%"!3!!!!!!!!!!!%!!"Q3!2rrrrm
!!!!!rrrrr`!!!!!!!!!$!!!#3`!!!!%!!!QB!!!+X!!!,#3!!!!"!!!!!!!!!!!
!!!!!!!!!!!!!!FJ!!!!!!!!!!!!!!!S!!!!!!!!!!!!!!'!!!!()3!!!!!!!!"3
!!!!!!!!!!!!!!"X!!!)S3!!!!!)!!#`#!!!d!J!!2!)!!%8#!!"8!J!!B3)!!(%
#!!"m!J!!K3)!!*F#!!#T!J!!X`)!!-N#!!$@!J!!j`)!!2)#!!%%!J!"$`)!!5-
#!!%Z!J!"1!)!!8B#!!&4!J!"A`)!!@`#!!&l!J!"KJ)!!CX#!!'M!J!"V3)!!EX
#!!('!J!"fJ)!!HF#!!(l!J!##`)!!Km#!!)Z!J!#1J)!!N)#!!*B!J!#B`)!!RF
#!!+%!J!#N3)!!UJ#!!+[!J!#Z`)!!X3#!!,6!J!#h3)!!ZJ#!!,c!J!$!3)!!a!
#!!-H!J!$+J)!!d3#!!06!J!$A`)!!fX#!!1"!J!$MJ)!!jB#!!1I!J!$U`)!!lX
#!!21!J!$fJ)!!qS#!!33!J!%'`)!"#`#!!3k!J!%4`)!"'%#!!4[!J!%HJ)!")8
#!!59!J!%S3)!",!#!!5k!J!%`J)!"-S#!!66!J!%i`)!"1m#!!6m!J!&#J)!"4m
#!!9"!J!&4`)!"8m#!!9C!J!&D3)!"A3#!!9k!J!&L!)!"CJ#!!@K!J!&Y`)!"F-
#!!A2!J!&h3)!"Hd#!!Al!J!'"J)!"KB#!!BZ!J!'13)!"NN#!!C8!J!'C3)!"R%
#!!Cr!J!'M3)!"TJ#!!Dk!J!'aJ)!"Y3#!!EM!J!'m`)!"[`#!!F8!J!((J)!"b`
#!!Fl!J!(4`)!"e)#!!GL!J!(I!)!"j%#!!HE!J!(S`)!"l%#!!Hj!J!(`J)!"p)
#!!IE!J!(m3)!"rd#!!J0!J!)&`)!##!#!!Je!J!)6!)!#&i#!!KS!J!)G3)!#(`
#!!L*!J!)Q3)!#+%#!!Lb!J!)`J)!#0N#!!ML!J!)m!)!#2J#!!N2!J!*'3)!#5%
#!!NY!J!*0`)!#9!#!!PE!J!*F!)!#AF#!!Pq!J!*L3)!#CB"!!QN!J!*a3)!#G-
#!!RN!J!*p`)!#JJ#!!S8!J!+(!)!#M3#!!T%!J!+63)!#Q-#!!TU!J!+H!)!#SB
#!!UA!J!+S`)!#Um#!!Ui!J!+`!)!#XF#!!V3!J!+eJ)!#[%#!!Vj!J!,"3)!#a%
#!!XI!3!,+!)!#d)#!!Y-!J!,AJ)!#fB#!!Yi!J!,N3)!#k-#!!ZU!J!,X`)!#li
#!![-!J!,e`)!#r)#!![p!J!-%J)!$"S#!!`V!J!-0`)!$%%#!!aA!J!-C`)!$(S
#!!b#!J!-L3%!$*B"!!bX!J!-[3)!$-X#!!c6!J!-h`)!$1m#!!d"!J!0$!)!$4m
#!!d`!J!013)!$8%#!!e3!J!0G3)!$B!#!!f1!J!0QJ)!$D8#!!fc!J!0Z`)!$FF
#!!h3!J!0f!)!$Gi#!!hX!J!0pJ)!$J-#!!iT!J!1-J)!$Mi#!!j-!J!19!)!$QB
#!!ji!J!1L`)!$TB#!!kK!J!1X!)!$VS#!!l0!J!1e`)!$Z-#!!lb!J!1rJ)!$`X
#!!mJ!J!203)!$dB#!!p6!J!2AJ)!$fd#!!pp!J!2M`)!$j`#!!qc!J!2`3)!$mi
#!!rE!J!2j3)!$r8#!!rr!J!3#`)!%"X#!"!Q!J!3,J)!%$8#!""+!J!3A3)!%'d
#!""l!J!3JJ)!%)m#!"#8!J!3SJ)!%,X#!"$0!J!3e`)!%1N#!"$d!J!3rJ)!%3`
#!"%B!J!4*3)!%6%#!"%r!J!45!)!%9X#!"&R!J!4F`)!%B%#!"',!J!4N3)!%CN
#!"'b!J!4ZJ)!%FN#!"(8!J!4j!)!%J%#!")'!J!5)!)!%Mm#!"*2!J!5A!)!%Q`
#!"*m!J!5KJ)!%T3#!"+I!J!5UJ)!%V8#!",%!J!5cJ)!%Y8#!",R!J!5p3)!%`3
#!"-5!J!6*!)!%bm#!"0!!J!663)!%e`#!"0X!J!6I`)!%i`#!"1A!J!6U3)!%l-
#!"1p!J!6f`)!%qN#!"2j!J!8"!)!&"!#!"3D!J!8)3)!&$)#!"4-!J!89!)!&&i
#!"4S!J!8F!)!&)!#!"50!J!8Q`)!&+B#!"5b!J!8`J)!&-`#!"6T!J!8m`)!&2`
#!"8'!J!9$`)!&4N#!"8T!J!923)!&93#!"9S!J!9JJ)!&BN#!"@I!J!9U!)!&ES
#!"A%!J!9d`)!&GX#!"AZ!J!@!!)!&Jd#!"BB!J!@+!)!&MJ#!"C)!J!@8J)!&PN
#!"CS!J!@FJ)!&SF#!"D8!J!@Q`)!&UJ#!"D[!J!@Z3)!&XX#!"E6!J!@i`)!&Zi
#!"Ef!J!A"!)!&ad#!"FN!J!A-!)!&cm#!"G,!J!A9`)!&fB#!"Gf!J!AK3)!&jd
#!"HU!J!AZ`)!&mS#!"IA!J!Al3)!&rN#!"J$!J!B&3)!'#X#!"Ja!J!B1`)!'%d
#!"KD!J!BC!)!'(3#!"Kk!J!BL!)!'*-#!"LL!J!BX!)!',S#!"M+!J!BfJ%!'1F
#!"N"!J!C#`)!'4X#!"NR!J!C-S)!'8##!"P4JJ!CB))!'A5#!"Q,JJ!CUB)!'E5
#!"R(JJ!Cei)!'Hb#!"RqJJ!D"S)!'KZ#!"SYJJ!D2))!'N5#!"T9JJ!DDi)!'Rf
#!"U9JJ!DSi)!'Vb#!"V&JJ!DeB)!'Z'#!"VaJJ!E!))!'aH#!"XLJJ!E,i)!'cq
#!"Y+JJ!ECB)!'h##!"YjJJ!EL))!'jZ#!"ZYJJ!EZS)!'m@#!"[JJJ!EmB)!(!5
#!"`3JJ!F)B)!(#k#!"a"JJ!FAS)!((5#!"b#JJ!FMi)!(*Q#!"bXJJ!F[B)!(-b
#!"cQJJ!FqB)!(3Q#!"dLJJ!G+i)!(6L#!"e%JJ!G8))!(@##!"eeJJ!GKB)!(C1
#!"fEJJ!GUi)!(EZ#!"h0JJ!Gf))!(Hq#!"i!JJ!H&B)!(LL#!"ilJJ!H8B)!(PU
#!"jdJJ!HKi)!(TQ#!"kUJJ!H[S)!(Xf#!"lJJJ!HqS)!(`@#!"mAJJ!I*S)!(cL
#!"p1JJ!IDS)!(hQ#!"q3!))!(jH#!"qQJJ!IZ))!(mU#!"rGJJ!IlB)!)!5#!#!
DJJ!J*))!)%##!#"@JJ!JD))!)('#!###JJ!JRB)!),@#!#$&JJ!JfB)!)1##!#$
UJJ!Jqi)!)45#!#%MJJ!K+B)!)6##!#%fJJ!K9S)!)@-!!3!!!!!!L`!!!!"+Uf#
Y5KPJb8S@B10+h@($5PUN!!)J5L&#4D3!!Kp#)@$)3N4!!%*+B1&K`N),B1*#$'#
X3K4!!%)f3!&#!8!"3M*!!%)!3!"##N!!3J0!!%),3!"#&d!#3Ma!!%)43!&#!%!
"3J*!!8)+3!"#!%!!3J&!!8)%3!&##%!!3JK!!%))3!"##8!!3Kp!"8)%3!"#&S(
r4TD!"d!IJ!p!&`D"!-%#33f"J"p!%B#,3"Z!%d!)J"Y!&J2"!-%#3B$A3"'!"d!
MJ#G!5i$R3!q!#d!eJ4Y!%)8$3#D!Fd!)J40!9S%(3!Q!(d!)L(G#!!""!8-!33)
"!%%"3`""!J%!33&$!%'"8d#DJ#p!%S"*3J'J!&#`3!Y#'3!!3f&bBQpZ6'PL!%0
KFQ*[ENaTBJ""F("XC6Y$BA*LEfil6Q9dGfpbDfPZC`"(CA43Eh*d!%C63fa[Ff8
!9%9*ER0PFR3!3@4N5@0[EP4[8h9TG'8!8%*6CA4&6dC6H@jM!%a6CA4%FQ&hD@j
R6@pNC3"6DATP9fPZC'ph!&4PH(4'B@0P!%0'8h4bD@jR4f9d9(P`C8P%!%GPG&G
TEQ4[GdCbEfe3Eh*d!%0[G@jd4%P86!"$4N*eEQ4XC8GPG%eKD@j#G@jNE'8!8Q9
cEfafC8&XD@&c!%GPG%0[ER4bEfa#Eh9ZC(-!6@pfC9GTEQ4[G`"6CA43Eh*d9fP
ZC'ph8'pbG!"%FQ&R9fPZC'ph!%PMEfj5C@C8EdPMEfj'B@eTE(N!8f9d8Q9c6'p
KC!"8494PH(4#EhJ!8%*)6h"PEP*'8hPZB`"'D@jN4QpXC'9b!%GPG%4TB@a[Ce"
[FR3!8%*(CA4&6dC6H@jM!&4&8f9d3@aTCfjYC@jd!%GPG%PMEfj5C@B!3dC%D@0
dD@pZBA*j4f9d9Q&XG@8!4f9d4NjeE3"*ER0PG&*PBh3!4'PcF'pcC8KKEQ4XC3"
(CA45CA0*EQC[!%0[F(P3BA0MB@a6G(*TEQG8Ed-!9A"NBA4P4'PKE'pR!&4PFh4
%CACTBf9"G(4bD@*eG'8!3fa[Ff9$EfjZC@0dD@pZ!%GPG&GTEQ4[Ge"[FR4#Eh9
ZC(-!8Q9XC@&cC8PMEfj5C@B!6h"PEP"TBh4eFQ8!6%&NC&*[G`"$4P0dFQPZCdG
PG%0SBA*KBh4PFR-!8f9d8Q9c5@jQE`"(CA4$EfjdFQpX8Q9QCA*PEQ0P!%a[B@4
5CA0[GA*MC3"%D@&XEfG6C@aPBh3!3dC"FR*KH8GPG&CKE(9P3A4*EQ4PH!"-D@j
P9'm!5fPXE&"TBh4eFQ8!9'9iG%C[ER3!8Q9YEhCP8Q9cEh9bBf8!4@jN9A"NBA4
P!&9ZE@peER4@Ef`!4(*KGd4TB@a[C`"*Fd4TB@a[Cd9fC@jd!%4PE'9dC8ePER9
*G'9Y!%&&8(9d8'&bB@e3G()!6@pfC80[ER4bEf`!3dC"FR*KH9*PE@pfC9CKE(9
P3A4*EQ4PH!"-68GPG%0eFN&`6Q&YC3"0Ef4KE%4TB@a[C`")D@4P3fpZG(*[E!"
*FeGTEQ4[Ge9`C'&dC9"PEQ4TEQF!3dC%BA4K3h*PBA4P!%a6Bh*[E'`!8f9MG&*
PBh3!3Q9RD@j9F'4KG'8!8f9d3fpZG(*[E&4TG'aP!%GPG&GTEQ4[Ge9cCA*6G'&
dC3"%FQ&h6@9ZG8*KFJ"33N483@4N39"36&0jEQ-!3dC98Na$FQ9KG'9$Eh"j3A"
`C@jND@jR8'&dD%0[EA"[EQ9ZG!""F("PEQ4%594-!%0'3A*bBAP(CA48HA"P583
!4'PcF'pcC808B@*XC3")6h"PEP*PFdCTE'8!3dC6G(*TEQG(CA46HA0dC@e&EQ0
[C'PZC`"9F'4KG'95CA0'D@aP!%ePER96C@aPBh3!4QPZC&GTEQ4[G`"(CA4$Efj
dFQpX9'PdE'8!9A"`CA*6G(*TEQF!3dC1G@eLCA*$FQ9KG'8!4P0`3h*PBA4P!&0
jFd*PCA!!8'9Z8fPkC3"8CAKd6@pNC3"33NK$Eh"j4QPXC90jEQ-!4'PcF'pcC8e
PER8!389$Ef9bBf9%CA0M!%&&8fPkC8pQ8'&bB@d!3dC%D@0dD@pZBA*j3@4N9Q&
XG@8!3dC#G@jNE'9(CA4'G@jMG'P[EP"[D@jdCA*'Eh*1B@eP!&4&6Q9h!%GPG%C
3Eh-!3dC5C@aPBA0P!%jPGd&XD@&c6@PZD@eKE!"&GQ9ZG%&fB@PX!&4&5f9j!&G
KDA41CAKd4ACPER3!4f9d8'pbG&4PH(4'B@0P!&4bB@0V3Qpi!%0'8h4bD@jR4f9
d3e0dFQPZCe"dFJ"33N484f9d8'&dD!"6DATP3fpZG(*[E!""48GPG&"KFQ&Y8(4
b!%GPG&"[FR48CAKd6@pNC3"33N484QaeFfK6H@jM!%C6F%0KG%e[GQ8!4f9d8Q9
c4QPXC8&dG(*c!%0'8h4bD@jR4f9d8'&cBf&X8h4bD@jR!&T[EfeAD@jNEhF!3dC
"FR*KH8GPG%0[G@jd!&4&3@0dDACKG'8!4f9d6Q&YC@45CA0[GA*MC3"'E(9cD%9
fC@jdF`"(CA4%D@&XEfG*G'9Y!%GPG&GTEQ4[Ge"[FR3!8%*5C@&N8hPZB`"$4N*
eEQ4XC8GPG&"KBfYKCf9*EQC[5@j%DA*PBh4[FRN!8%*AFQPdC90jEQ-!4f9d6Q9
iG&GTEQ4[G`"1CAG)B@jNE'9$E'9KFJ"6CA40C@je5A4PE94PH(3!8Q9c4A*bEh)
!4f9d4'PKE'pR9'9iG%9NDA4)B@jNE'8!3fKKFPGTC(4S!&"#5&*PEQ&YC90jEQ-
!3893GA43BA*KE84PFf-!3dC(CA48HA"P583!4'9XCA4P6@9ZG3"(CA43Eh*d9'9
iG&0THQ8!4f9d3fpZG(*[E&"[F(9`6@9ZG8KKEQ4XC3"$4P956%0bC@&dC8CbEfe
'8e*PCJ"8490PG&4PH(3!4f9d3faTF!"6CA4%D@&XEfG*G'9Y!%CbC@90C@d!4f9
d6@peFf8!8%*%DA*$FQ9KG'96H@jM!%0[F(P0BA0V!%0'8(*PCQ9bC@jMCA06CA4
@B@aeC3"1G@e8Ee0dFQPZC`"(CA40C@je5A4PE94PH(3!4f9d3e46C@9N!&4PH(4
6DATP!%&&8Q9YEhCP4ACPER4)B@jNE'9b!%0'3R9ZC'aP4f9d8'&MDf&RC8PZCQm
!4f9d-8jKE@9N8Q9cEh9bBf8!9@jTFA9P-8P%!%4bBAFa3fpZG(*[E!"0EhCP9'm
!4f9d5@jN8h4bD@jR!%Pc9fPZC'ph9QPcD@*XC3"3C@j0Ef4P!&"#8f9d3f&d5@j
QEe0jEQ-!8Q9XC@&cC9*PFfpeFQ0P!%0'3R9ZC'aP6'pKC%9iC@0eG'&LE'8!4@e
`G(P5Cfi!9'9YF%jPGdKKEQ4XC3"0C@je5f9j!&0PG&GTEQ4[Ge0dB@jNBA*N8h4
KG'8!6Q9h5'&ZC'aP!%e[GQ9)5'N!4(*KGe"TBh4eFQ8!8'a[G%0*BfpZ!%GPG&"
[FR4#DA40BA"'Eh*$Eh"j3QPdF`"9Ff95CA0'D@aP!&0PG&4SC@eP4(*KGfPZCe0
dBA4P!%&&8f9ZC!"1CAG5Cfi!8(4b3@jN5'&ZC!"(CA41CAKd4ACPER3!4f9d6@&
TEN4PGQPMC3"V3dC3FQ9QCA*PEQ0PFd0eFR*PER4"F("XD@0KG'P[EJ"(CA41CAK
d4'9fD@0P!&"#4f9d4N0#5@jQEe0jEQ-!3dC"FR*KH8&`F'9ZC&CKE(9P!%C6F%0
bC@&dC9*PFdCTE'8!8f&YC9"bEf0PFh-!ER9Y-Q4PB`"$4P956%0[F(P'D@aP8hP
cG'9Y8'&dD!"6CA45CA0'D@aP3A4dFR-!9%99F'4KG'8!4f9d8Q9cEh9bBf96DAT
P6fj%DA0V!%*eG(4[EJ"33N0KG%e[GQ96H@jM!&"#5%p`C@j%4P0jEQ-!8Q9cEfa
fC8&XD@&c4QPXC3"(CA4'Efjd5@jQE`"'D@jN3fpZG(*[E!"0C@e&FR*[FJ"-4'9
X8Qph!%a$E'PMD`"1CAG"E'PKF`"%C@aKH3"(CA4%D@&XEfG,CAPLEf&bC%C[Bh9
c5A4PE3"(CA4,CAPc!%CbEfjd9fPZC'ph!%GPG%4KG'98D@eP!%&&4f9d4'9cBd4
KG'%!3fp`H8*TG(-!Dd0'3@aXEf0KG'pb8hPcG'9Y4'9QBA9XG!")8R0d4Na[BfX
!389(CA4%CA0M4'&dB90THQ8!5%0bC@&dC3"(CA444%GXEf*KE(0"FR*[G`"$4N*
eEQ4XC8GPG&CPFR0TEfj1G@eLCA)!8f9d3fpZG(*[E%eKH'PYG@d!6Q9h8(4b!%&
&8(9d8(4b!%jPGd0[ER4bEf`!8%*6CA4'8'pc8hPZB`""F("PEQ40C@je!%j[FQe
KE'PkC94SC@eP4(*KGfPZCe0dBA4P!%pQCR0PG&*PBh3!8f9d4'PKE'pR4'9QBA9
XG%PdC@d!4f9d6@9ZG3"33NGPG%0KG%PZCQp6H@jM!%9aG@&X8h4bD@jR!%*XEf0
V6@pfC3"33NGPG&C[E%e[G@jd5@jQEe0THQ8!3dC6G(*TEQG$Efe`BA*P!%&&5@j
dCA*KBh4ADA4S9A0PFJ"6CA43Eh*d!&*KEQ4[E3"1CAG*BfpZ8h9TG'8!Dd0'8(*
PCQ9bC@jMCA0"ERP)Eh0d!'Y$4N*eEQ4XC8jKE@9,CAN!3dC"FR*KH80bC@&dC3"
-9A"NBA4P!%GPG%aTFh43Eh*d!&"#5&0PG%C*EQC[8hPZB`"33NGPG&C[E%e[G@j
d5@jQE`"6D'ph9fPZC'ph!%0'4'PMG'P[EQ&bH80bC@&dC3"%DA0`Eh0P5@0[EP0
eDA4P!%0XDA"5C@0d!%4TCQC5Cfi!6%e(CA4#Efpd4(*TGQ8!3dC#G@jNE'9(CA4
@B@aeC8C[FNPZCQp%D@0dD@pZBA*j5f9j!%GbEhGAD@jNEhF!389%DA0`Eh0P4'9
cB`"$Eh9ZG$&8HA"PF`")D@4P9fPZC'ph!&0PBfpZC(08Ed4KG'8!8f9d8Q9MG!"
(CA45CA0"G(4bF`"(CA4$5@0[EJ")6h"PEP*'!%a%FQ&h!%4KG'98Ee0PBfpZC(-
!6Q9h8'Pi6@&`!%&&3h*PBA4P6'PcG!"$4N*eEQ4XC80[F(P*EQC[4'PMG'P[EQ&
bH8PZ4'PbC@0dEh*j!%CXGA0S9QpX!&4&8f9d8f9XC@0d!&"#5%0bC@&dC90jEQ-
!5%4PE'9dC3"(CA444%GXEf*KE(0#E'&MD`"(CA4$GA*bC@jd8(*[Bf9cF`""480
bC@&dC8&`F'aP4ACPER3!5@jTG%0eFR0[FJ"6CA4A8Q9Q3fpZ!%0'3R9ZC'aP3h*
PBA4P!%GPG%08B@*XC3"33N484f9d3fpYE@9ZG&0jEQ-!8(4b9'p)B@jN!&0dFQP
ZCeGTC(4S!%4PG'&MD&*PFfpeFQ0P!&0PG&*PFd&dG(*c!%GPG$&5CA0[GA*MC3"
2F'9Z4'9QBA9XG%0[EA"[EQ9ZG!"(CA48D'9YC84bBAGTEQG6G'&dC3"(CA444%G
XEf*KE(0(FQ&j!%C[ER48Ee0MFQP`G!"(CA4A8Q9Q3fpZ!%PZFf9bG%ePER9*G'9
Y!%4TFf&LE'90C@je5A4PE3"(CA4%D@&XEfG*G'9Y9'9iG!"54d*#B@0V3fpXEh)
!4f9d884(E'pLB@ac8f0bC@9Z3QPdF`"#E'pMDde[GQ9%BA4K!%GPG%jPGd4TB@a
[C`""480bC@&dC84PFf-!4QpbC80[E'pb!&"#4&4"C'4*BfpZ8hPZB`"3B@PZG&*
PBh3!4f9d-8PZC&4jF'8!8%*)4f9d9NPZCQp6H@jM!%0eFP*PFdCTE'8!4f9cG'&
XG!"'8e*PB@3!8f9XC@0d4'PKE'pR5A4PE94PH(3!3dC6G(*TEQG(CA4$8h4bD@j
R!&"#5%GPG%C*EQC[8hPZB`"33PC[E(9YC8e[G@jd!&0PG%924J"(CA43BA*KE94
PH(3!6@pfC3"(CA43Eh*d8'Pi6@&`!%0'8(*PCQ9bC@jMCA06H@jMD(*[EQPkC3"
$4P0dFQPZCdGPG%aPEQGdD!")8f9d8h4KG'8!6'&eEQ0S3A"`E'PMBA4TEfi!5'&
ZC&4[5'&ZC!")4f9d8h4KG'8!5'PXDA4P3fpZG(*[E!"&H'Pd9'p6D'9XE!"(CA4
#B@0V3fpXEh)!6%e6CA45CA0&FR)!4'PcF'pcC84TB@a[C`"3G%PZ8Q9MG!"33N4
88f9d3fpYE@9ZG&0jEQ-!389(CA41G'K3G()!5'&ZC%&ZC%KKEQ3!6'pMB@a8EdG
XEf*KE!"&FQ&cC9*PBh3!5%a[BfX!8f9d4P"[F`"(CA46Bh*TF(40B@jKCf9b9Q&
bD@&LE'8!5%GPG&C[E!"'8h"2F'9Z8Q9c4QPXC3"(CA4@8Q9Q6R9Y!%GPG%CbEfj
d8(*[Bf9cF`"$4P0dFQPZCd0bC@&dC9GTG'K$D'&bB@0dCA*c!%aTEQ8!3dC3FQ9
QCA*PEQ0PFd0[F(P"F("@B@aeC3"$4P0dFQPZCd0bC@&dC9GTG'K3BA0MB@a6G(*
TEQF!8f9d4R*[ER43FQpMCA0c!&"#9@jYEh9ZG&C[E!"33NK5Fh4'6'pMDe0jEQ-
!4f9d5@jdE&*PFfpeFQ0P!%C6F%p`C@j%4J"3E'pd5@0[EP0eDA4P!%GPG&"TBh4
eFQ8!4(*KGe0dFQPZC`"-8f9d8f9XC@0d!%CbB@eP8QpeEQ45C@0d!%YPH90MFQP
`G!"#DA46CA3!4f9d8f0bDA"d9Q&bD@&LE'8!4f9d4'9fD@0P6'PcG!"33N486h"
PENPZCQpbE3"(CA403Q&b5'9TCfKd!&0PG&"[FR4%D@&XEfG3Eh*d!%a(CA46C@a
PBh3!4f9d3fpZG(*[E%KTE'PdC3"$E'pcC9"TBh4eFQ8!8fK[Gd4TB@a[CdPdC@d
!5@jfB@aAD@jNEhG5C@0d!%GPG%PMEfj5C@C'FQpY4QPXC3"'8deKDf9'8e0`C@-
!4f9d8hPc4QpZG!"(CA444%GXEf*KE(0AD'PdC3"'8h"%C@aPG'8!9%9%DA0`Eh0
P!%0'4'PMG'P[EQ&bH80bC@&dC8eeG'&LE'9$Eh"j!%4TFh"[Ff93DAK0BA!!3fp
eER3a8Q9cEh9bBf9c!%PZGQ9bG&*PBh3!8h4bD@jR9'p1G@d!8h4TE'a%EhGZ!%e
eEQGPFJ"6CA4$EfjdFQpX3QpeEQ4c!%0'3R9ZC'aP3fp`H89iC@0eG'&LE'998N`
!8f9d3faTF!"848GPG&4PH(3!9%9$B@a8CAKd!%C69h*TG'8!8%*)8f9d4Na[BfY
6H@jM!%0XEh0P8Q9c4QPXC3"33NK%C@aPG'96H@jM!%KTE'PdC8ePER8!6@pbC8e
KFh4PFR-!4f9d8'pbG&4PH(4'Efjd!%C6F%p`C@j54J"IAd0'8h4bD@jR6@&VC80
[ER0dB@jd8h4bD@jR!&4TBfY$Eh9ZG!"'D@aX8Q9MG!"(CA4(9fpbE'3!6%4TFh"
[Ff8!4R*KE@95C@0d!%GPG$&*EQ45CA0[GA*MC3"(CA4%D@&XEfG'FQpY9fPZC'p
h!%0'8(*PCQ9bC@jMCA0$Eh"j9Q&XG@8!3893FQpMCA0c3A"`E'9&GQ9ZG!"$4P0
dFQPZCd0bC@&dC9GTG'K$8h4bD@jR!%*TG&4cG!"(CA43FQpMCA0c5@jQEh*YBA4
TEfi!5%j[8(9bCf8!389(CA4"G(4bD@*eG'93G()!8f9d9e4TG'aP!%KTC'9%D@&
XEfG*G'9Y!%K9EQa[BfX!8%*)4f9d9QpX8'&bEA06H@jM!&"#@%GPG&C[E%PZCQp
6H@jM!&*(3NC[FQ9$Efa[FJ"%DA0`Eh0P8(4b!&0PG%0[ER4bEfa@B@aeC3"(CA4
5C@GTEfj#Eh9ZC(-!4f9d3fpZG(*[E&CKE(9P!%K6CA4'5@jQE`")8(9bCf8!4'P
cF'pcC80[ER4bEf`!5%GPG%C*EQC[!%GPG&"[FR4@DA0TBQaP8Q9RD@pZ!&4&4'9
KBh4TGQ&dC3"#DA4$E()!4(*KGdGbEhG*BfpZ!&"PEP"KG!"%DA*$FQ9KG'8!8%*
)6h"PEP*'4'9ZH90jEQ-!5&*PEQ&YC3"33N0KG&0PBA*MD&0jEQ-!4f9d4h*KH9*
REJ"5C@0d8QGZ!%GPG%KKEQ4XC90THQ8!3dC"FR*KH80bC@&dC8eeG'&LE'9$Eh"
j!%GPG%924J""C'45CA0[GA*MC3"33P0PG&C*EQC[8hPZB`"33NK2F'9Z8hPZB`"
(CA45CA0[GA*MC3")3h*PBA4P8Q9c4QPXC3"$D'&ZCf9N8Q9cEh9bBf8!4f9d6@9
Y4R*KCfePER3!3dC6G(*TEQG$FQ9KG'9ADA4S3RPdCA-!4f9d4QpbC80[E'pb!%C
6F%9iBfKKEQGP4QPXCA-!4f9d6Q9iG&"bEf0PFh-!9(*KBfY$EfjdFQpX!%PMEfj
'B@eTE(P8EdPMEfj6G@PdC3"1CAG3G(*$E'9KFJ")8f9d4Na[BfX!3fKKFQ&MG'9
b3RPdC94jF'8!389*ER0dB@aX4ACPER4)B@jNE'9b!%a6DATP!%&&8(9d4'9cB`"
6CA4%D@&XEfG*G'9Y9'9iG!"6C@aPBh4AD@jNEhF!4f9d3h9bFfpb!&"#5%p`C@j
%C@jj8hPZB`"-8Q9MG!"6CA4)B@jNE'96DATP!%4TFh"[Ff95Cfi!4QPZC%4TB@a
[CdPdC@d!4fa[BQ&X9'p-Ef0KE!"6CA4$GA*cEh)!4f9d4'PKE'pR9fPZC'ph!%G
PG&GTEQ4[Ge*PCfP[EJ"-690PG&*ZC&0PC@3!Dd0'8(*PCQ9bC@jMCA0$GA*bC@j
d9A0PFJ"3BA*KE94PH(3!9Q&XD@4AD@jNEhG5C@0d!%a"GA4[8f0bEfaX!%PZFf9
bG%ePER8!9h*TG'95CA0[GA*MC3"3690PFh0TEfj&EQ43B@GP!%jPGdjKGN9fC@j
d99"3!%jPGdaTFh4$E'PMDda[Eh"98&!!4'PcF'pcC89fC@jd5'&ZC'aPFP938!"
3690PFh0TEfj%C@CKG@ad8(*TER46CA4dD@jRF`"8D@eP8h4bD@jR!%4TFh"[Ff9
1BAC&GQ9ZG&938!"8@%j%C@aPG'92BQTPBh3!8%e6CA0cD@pZ8(*TER4%D@&XEfF
!3faPBA*$GA*bC@jd8f0bBA!!5806G'&bG!"1CAG"489fC@jd5'&ZC'aPFP938!"
44%CXGA0S8'pbG%*eCQCPFJ"8@%j5CA0THQ9'FQ&YC3"8@%j%FQ&h!&4B6P"[D@j
d9'p2CQCcCA3!8%e$FQ9KG'93FQPZG&0PG(4TEQGc!%jKGP0PFRCTBf9c3f&Z8R9
Z!&4B6P0PG&4B6NpLDQ9MG%0[ER4bEfac!%0[EA"KFQ96G(*TEQF!4QPZC&0`C@0
TCQPM4ACPER4*EP&eCA9P!&4B6P"bD@jd!%C68Q9ZB@eP9@jTBfpNC3"'6Nj[G'P
QH8&XE!"'68&MG'PfBA4P4QpZG(-!8%e6CA0cD@pZ4A*bEh)!9&K14(*KGd0'8h4
bD@jR9'9iG%*[H!"8@%j6CA4%BA4K!%C6F%eKDf9'8e*PCJ"1BAC$D'p[Ff9'Efa
NCA)!9&K15f9j4'phEJ"1BAC(CA4%C@CKG@ad4'PKE'pR6h"dD@pZF`"%BA4P8h4
bD@jR!&4B6P"KFh4P!%C64'9XCA4P6f*UC@0d!%GPG&0MFQ&`4QaKGQpb4'&dB3"
(CA40B@PZ4ACPER44G@9eC3"8@%j3B@GP8f9dGA!!6e0"4AKPBh9dC3"3690PFh0
TEfj%C@CKG@ad8'&RC8C[FQeKG!"$FQ9KG'9$GA0dEfe-DA0d!&4B6P0PG%4KG'&
'FQpY4QPXC3"8@%j%BA4K8fPkC3"8@%j6D'ph8f9XC@0dD@pZ!%a[BfY3Eh*d3QP
dF`"5C@e[GQ9&GQ9ZG%KKEQ4XCA)!3fpZGQ9bG%9fC@jd8Q9Q9'p&GQ9ZG&*PBfp
bC!"1CAG&GQ9ZG%0[EA"KFQ&dEh*98&!!4P05C@C0B@YP8'&dD!"8@%j1CAG2BQT
PBh3!8%e5C@aPBA0P!%jPGd9fC@jd5'&ZC'aPFP938!"'8e0PG%0KG'&XEfG*EQC
[!%jPGe9cCA**G'9Y99"3!&4B6N0[ERCPFR4'FQpY8(9LE'PM8f0bBA!!4P00B@Y
P4P05C@C9EQPMEf4P!&"03h*PBA4P8f9cFfP[EJ"3690PFh0TEfj3B@GP8f9dGA"
%D@&XEfF!4Nj1Eh4TCRN!4P0'D@jN4QpXC'9b!&4B6N&MG'PfBA4P!%P$6'&eEQ0
S99*-!&4B6P0PG&0PE'9MG'P[EJ"3690PFh0TEfj&EQ4%Ef0eE@9ZG!"'8dGPG&C
[E(9YC8PZCQm!6Q9h6'PcG%4PCP938!"28d&-Ef&N!%jKGN4TFh"[Ff95CA"XH3"
(CA4$GA*bC@jd8f0bBA!!6Q9h6@pNB@a'D@adCA*98&!!6e0"4'PcF'pcC3"8@%j
8CA*YD@jKG'98CAKdC@jcD@pZ!%C64f9d3f&dB@a[CdPZCQm!8Q9YEhCP4ACPER4
'FQpY8A9PG@8!4'PcF'pcC99cCA**G'9Y99"3!%GPG&0MFQ&`4QaKGQpb8fPkC3"
%DA0`Eh0P6@pNB@a'D@adCA*98&!!9&K13faTBfX!4f9d3A"`E'PMBA4TEfj&GQ9
ZG&4KFQGPG!"3690PFh0TEfj#C@GTEP"KCf8!4f9d4ACPER43BA*KE@9dCA)!9&K
18f9d3Q&MDfGbEh9ZC!"*ER0dB@aX4ACPER4)B@jNE'9b!&4B6NGPG&CTCAG5C@0
d!&"03h*PBA4P8'&RC8C[FQeKG!"%DA0`Eh0P4ACPER4$Efe`BA*KG'pb99"3!%j
KGP"eG%CTE'8!6Q&f6'PLFQ&bH9CPFR0TEfi!3fpeER40C@je5A4PEA-!9&K15@j
TG&4PH(4PER0TEfi!8%e(CA4"C'TeFh4PC&"KCf95C@0d!&0PG%ePER9*G'9Y9'9
iG&GTG'K$4P0dFQPZC`"3GA46Bh*KF%CXBAC[FJ"3690PFh0TEfj#C@GTEN4[Bh9
YC@jd!%P$8h4[F!"9EQa[BfY3Eh*d3QPdF`"29&0PG%&cH@jMD(*[EQpeF`"29%P
ZDA4*EQ9d3@4NFQ9cF`"%DA0`Eh0P6e41Eh4TCRP98&!!6e4$E'pcC9"bEhCTC'9
b!%p88Q0f6h*NCA*XH84TFf0[EQjPBh3!6e4*EQ9d8h4bD@jR9'p"C'4bCA0c!%p
86@9YHQ9bE`"$E'pcC8p`C@j8FQ&ZFh"[FR4*EN0[ER4PH(3!6e4$FQ9KG'9$Efj
QD@GeFQ&dD@pZ!%p85@jcG'&XE%j[G'PQD@9b!%p89@jLD@jN!%p88f9d8hPZBfK
bEfj[GA-!5@jTG%p`C@j8FQ&ZFh"[FR4*EN0[ER4PH(3!6e42F'9Z4@jNF'pTER4
*EN0[ER4PH(3!6e45BhC%DA0MEfjZC@0d!%p89A0P8hPZBdPNE'9&GQ9ZG(-!6e4
#D@jN!%p83fpZEQ9MG!"29&0PG%j[EN*XEf0VD@jR!%p83f&ZBf9X8hPZBfKbEfj
[GA0$B@aXF`"1CAG29%j[G'PQH9938!"29&*MGJ"29%a[EfX!6e46EQ3!6e42F'9
Z5@jdCA*ZCA46CA*fD@0PFdPZ3fpZG'9iG!"29&*MGN0[EQjPBh3!6e46CA4#E'p
MDfPZC`!!!!!!!!!!!!!!!!!!!!"m#!+QN!!"!!L8)Ir!1#%!3)!"!!Km#!1Q6S!
!)!!!!!!iB!!!6S!!)!!!!!!!!!!!6S!!)!!!!!!!!!!!!!!!!$KJ!!"1J!!J!!!
!!!!!!!!iB!!!6S!!)!!!!!!!!!!![i(rm(`)!UCmI"Yi1m*4Y(b$)hJlS!!"N!!
"!!L8)Iq`5!6i!@!!!!"mIaYiJ(i!!%J'`PQ!33!8Iq!(0)"q!!!F!!3@J'-!!(r
M!K4rJq0i1*m!3%J%Q4eJ!!!!L"`!!#J!!!"!JJ!iIi2MH$L!!qJiS!!45!Dr[B"
"!"4rirYiIiIMH$L!!!!iS!!!1-!!!%J%KH&J!!!!1k!!!)"q!!")"XA"J%%!&(q
MkhL!!3"B1#%!8(`)!kDlJIr`6S!!))%$!!#T*!!!L1J$FMN)""Bj+3!"5!!!*)L
S!h*mi!FdI!8!!%#"!#Ji!!!!Q!J"@6NT!!%j#!3@1+*@Y(dQ"c5S"3!!I!B!!%'
!rp#4!`!!X53!!%k!!#!!!!!!!!!!!,kKrp4m#!+Q1b*@YRae'hJl3Pbm1f*D[(b
A)hJlJPbiJk),X$[#9K3liP'dN!!"!!L8)Ie`5!4q2@!!!!!i!!!!I(BEH*!!!3!
iJ(i!!%J'`3@!33!81)*FZRaM"c5S"!!!I!!B!%'#"FKqSkYi5!DpjB""!"4qSkY
iIZ5lH$LK!%a)"*!!m@!!!!"qSkYiIZ5lH%J&Er&J!!!!9X!'2d##!'JiB3!i5!E
&[B""!"4)"XA0J%%!&(qNkhJiB3!m5!4E0@!!!!!iB3"-1)!!!MLJ!!*)"XA"J%%
!&$KK!%a)"XApJ%%!&$KK!$a)"&YCB!!!!)"K!$JiJ!!"5!E'@B""!"4)!!8X1'!
!!%J'a,'!33!81'!!!%J'a,f!33!81'!!$%J'a-Q!33!8J(i!!%J'`#@!33!8U"`
!!(aM"c4m!"J!3))!$),E!"K)!!!XJ(i!!%J'`!'!33!8U"S!!(aM"c4m!"J!3))
!$),E!9*)!!!)1X!!!#J@!!""JJ$NIX1cH%J'[qQ!33!81'%!1%J'a0@!33!85!E
%jB""!"4rT1Yi1'%!2%J%@NeJ!!!!1'%!6$L!!!)iS!!#5!E%fB""!"3iB3"-5!E
&&B""!"3iB3"-1)!!!MLJ!!")"X5jJ%%!&(l$XhK)"X'9J%%!&(aN'hL!GJ!!1+%
!6$M!!!")"X40J%%!&$KK!%`iJ2rq1+!!!%J'a)'!33!81'%!2%J%@L9J!!!!IX1
cH%J'`aQ!33!8IU1VH%J'ZXf!33!81)%!6%J'bMQ!33!8J'%!1$L!!!&)"X8"J%%
!&%J!!p3iB3"%5!E+-B""!"5SS3"'1'%!6+M"!%3iJ!!#1!8!!R`'!K4m&JFd1+!
!!NJ'a!Q!33!81'%!6%J'a%@!33!81'%!6$L!rriiS2rq5!E$kB""!"4qf`FdU)%
!6UKK!%`i'rrq1)3!#R`$!K4mQ!FdI"F(0$KK!%`iJ!!#1+!!!NJ'`l@!33!81'%
!1%J'`hQ!33!85!E$LB""!"4rT1Yi1'%!2%J%@2&J!!!!1'%!6%J'`mf!33!8J(i
!!%J'[MQ!33!8U"`!!(aM"c4m!"J!3))!H$KL9d#)!`#-,!!!!N'#!$K!J!!3,!!
!!8#!!"4)!!#`,!!!"%#!!+K)!!!d1'%"9$L!!qJiS!!%5!DlUB""!"4)!!#-1'%
"9$L!!qJiS!!N5!DlNB""!"4)!!"d1'%"9$L!!qJiS!!C5!DlHB""!"4)!!"FJ(i
!!%J'[DQ!33!8U"S!!(aM"c4m!"J!3))!($KK!93iJ!2S1+!!-%J'Zd@!33!85!!
!+)"q!!")"VeeJ%%!&(aN'hJiB3&85rrkpDKK!%ii!rrlX!%!6UM"!%`iB3&9U)%
!6MLK!%`iaJ!"1!3!"l$"!%b)J3&81-!!!,!"!%j)"X)PJ%%!&+M"!%`iB3"-U+%
!6ML!rriia[rr1!ArqE$"!%`iS2rqX!%!6NJ'`N'!33!81'%!9$L!!qJiS!!Q5!D
kVB""!"5S!3"3IZ3(0)"q!!!lS!!!I!3!8(b!fpBi"2rrI"8(0%J'[-@!33!8U"`
!!(aM"c4m!"J!3B)!))"q!!")"VbTJ%%!&+JD!!"mB`FdI!!B!%##!95!I`!!5!D
mTB""!"3lB!!!5!!")$L#9I"rB`FdI+!(0)#%!!!X!!!"9'!)2)"N!!"mB`+Z3)%
!$(aJ"c9"JJ$`I'!(0)"r!!!FJ!3@J+-!!(qM"c4qS!FdI!-!!(p&)K4"JJ!NL"S
$FLJ!!!"!JJ$!Id26H%J%@JeJ!!!!9'!'2d##!+arS`FdIU!(0(`$!!"!JJ!NL"S
$FLJ!!!"!JJ#SId26H%J%@GeJ!!!!9'!'2d##!*4qpl)8I`2$H(lNZhK)"XFTJ%%
!&$KK!&4)"XFeJ%%!&(qM"c4qS!FdI!-!!%##!$bSH3!!If3(0$J$rrpm"!!!3)!
!+$KK!93iJ!2S1+!!#NJ'Z8f!33!81'%"9%J'a['!33!85!!!,(p$dhK)"XEKJ%%
!&$Zp!!%lH`!"U,N!!(pM"c4mS!FdI!-!!%'!rY5!I`!!5!Dr1B""!"3iB3!m5!4
@,@!!!!#!B3!i1)!!!8J'`5f!33!8J!%#Q$JK!T!!ZU(re(`)!kC1J!!J[d(rk(`
)!UCmHaYiI*SMH*!!!3!)P#(qN!")"VIjJ%%!&(pMfhKr400i1+%!5%J%L`9J!!!
!1'*A3)J$!)`X!!!#3B)!1%#!!"!X!!!"3)!!&%J!!&3X!!!%3)!!6%J!!$3iB3"
31)!$k$LJ!!P)"VKPJ%%!&%J!!$!iB3"31)!$k$LJ!#0)"VK0J%%!&%J!!"JiB3"
31)!$k$LJ!$*)"VJeJ%%!&$KJ!!&)"Vl4J%%!&$KJ!!&)"VlGJ%%!&$KJ!!P)"Vl
TJ%%!&$KJ!!&)"VleJ%%!&(p!"c3X!!!)3B)#Q+LK!%JiB!3!U)%!5MLP!!-i"!!
+I,`(0(`E"c4)"XcYJ%%!&(ap'hK)"XcjJ%%!&)###l!iB3!i5!48Q@!!!!#SB3"
+Ii3(0$[N!!%i!`!"1d3!!RpQfhJiB3"!I!3(0(rP"c4r4`Fd5!DrXB""!"3iB3"
!5!Dr4B""!"3iB3"35!E-ZB""!"3i!`!+U'%!6Rpq"c4m(J)8I!3(0$J$!!%iB3"
!Iq8(0(`'"c4r4`Fd5!DrDB""!"3iB3"!5!DqrB""!"5S`3"11'%!3+L"!%arj3F
d11B!!6M'!!)i"!!#I13(0(c'"c4m"`Fd5!Dr,B""!"3iB3"!5!Dq`B""!"5T!3"
-1'%!3+M"!%USJ3"11+J!!6MQ!!%ia!!#1!J!!RcN"c4mT3FdI-B(0(`("c4)"Vl
TJ%%!&$KK!%")"VjpJ%%!&+M"!%SiB3"!U)%!6(rP"c3ijJ!"1-B!!MJ%!!&mj!F
dI-B(0(`("c4)"VkYJ%%!&$KK!%")"Vj"J%%!&$KK!$K)"&1GB!!!!+L"!%TrKH0
iIfEEH$KK!%"rj`Fd5!DqHB""!"4rSqYi1)%!3%J'ab'!33!81'%!8%J'bhf!33!
81!-!#UM"!%jm(J)8I!3(0(q&ihJiB3"!IqF(0%J'[MQ!33!8Ik2VH$L"!%")"XE
KJ%%!&+L"!%jrKH0iU-%!6$KK!%!ij!!"1!B!!AcQ"c4m"`Fd5!Dq!B""!"4rSqY
i1)%!3%J'aUQ!33!8U+%!6$KK!%#SJ3"+1!8!!DM"!%jm"`Fd5!DpdB""!"4rSqY
i1)%!3%J'aRQ!33!8U)%!5Rq&ihLSi3"-1'%!3$J%!!&m"JFd5!DpSB""!"4rSqY
i1)%!3%J'aNQ!33!85!!!-+L"!%USB3"-1)3!!cJ$rrpmJ`FdI!3(0%J'`Yf!33!
81'%!8%J'`ZQ!33!81'!!!%J'["f!33!8J!%"H$JK!A#l3IrSI!J$TNk!!#"m#!+
Q1)!!$*!!!3!)P#(r`$LK!$K)")GGB!!!!$L#A,iiB3!iU+%!2+L%!!!i"2rr9!!
31R`&!K5`!3!m5!DmRB""!"5!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!!!!!!![i(
rm(`)!UCmI"YiI*dMH$[J!!!l`!!!N!!"!!L8)IqJ5!DcdB""!"4rJq0iIk6VH$L
K!$Si`3!m11%!3%J'XM@!33!81'!!!8J'Za'!33!81'!!!%J'Zaf!33!81'!!#8J
'ZbQ!33!8Ii2MH%[rrc9rJq0i1+%!1$L!!!")"1p&B!!!!$LLA,iiB3"!U-%!1$L
!!!#S"3!!I!B!8&3!%$Tm"3Fd5!DdcB""!"3iBPD`U!-!!#`!!!*!JJ#S1'*@C+K
M!!C)")`0B!!!!$L#9UjmC3FdU!3!!(`&!!"!J!&)1'*4X"`&!'5!B`!!J'-!!(a
M!K5)!`"M+!!!!%'#!##!``"-1'%!3$L!!!!iS!!!5!E*5B""!"4)!!%-J)-!8#J
%!!""JJ!BJ'-!6$LK!%")"'!4B!!!!%J!!1b$i`"-+"m!!%'#!1"rirYi1+%!3$L
!!!")"&rYB!!!!%J!!-JiBPbXJ'-!!#J$!!""JJ!F1)*FX$LK!%#!K!!!5!4Ia@!
!!!")!!#J1'*ICSJ$!!!S!!!!3B)!0$aJ58-iBdiM1)!(dNJ'aSf!33!82)"TBha
r'hJiC'`i1)!(dNJ'aR@!33!8I(iEH#JI!!"!JJ!F2'"*3cKM6L-iJ!2U5!E'9B"
"!"4mIaYi+"i!!%##!"`mB'PM1'0X1$L!!qT)"XBeJ%%!&(aq'hJS(`!!3B)!'(r
MqhKra20i1+%!3%J%Ab9J!!!!J!%!D$JK!'#lJIr`I!J$TNk!!#!!!!!!!!!!!,r
"rrKm#!+QI(iEH(bI)hJiB!!"N!!"!!L8)Iq3!%J'Z2f!33!81'!!!%J'Z3Q!33!
81'!!#8J'Z4@!33!81'!!!8J'Z5'!33!81!!!!*!!!3!mIm2cH$L"!$`iS3!i5!6
Y*@!!!!"r`r0iIq6lH$LK!%")")4KB!!!!$KK!%")"VQpJ%%!&)"K!$a)"V4"J%%
!&$L#A,iiBPq!U+%!1)!$!!#SK!!!9!!%2RaP)&#SJ3"!9'-B1(aN'K3X!!N!X'%
!3%'!!,!iJ!!QJ'%!2$J!!!#3!)%!5*!!!3"35!Df!B""!"5!J3!mI'8EH$M#AN3
iB!!!J)3!!)$'!!!ii!!!5!E(aB""!"4mIaYj3))!3%J'YLf!33!8I(mEH)"K!$a
)"V@pJ%%!&)#"!$amC4YiIqElH)#%!!!iB!!!11!!!%J'ai@!33!8I(mEH(rMqhJ
iJ3"!1-%!5$LJ!!")"XH"J%%!&(rMqhK)"V3pJ%%!&%J!!#b!B3!m5!DeCB""!"5
!S3!mI'3EH$M!!!#!C3!!1+%!3%J'Z"Q!33!8J'%!2%J'Y`@!33!8J'%!2%J'Zr'
!33!81'!!!%J'Ykf!33!8J!%!H$JK!(#l`IriI!J$TNk!!##rSIrdI!J#TM[L9d"
mI4YiI*iMH*!!!3!)P#(qX)JI!)dS!!!"3))"#$KJ!!&)"VFGJ%%!&$KJ!!")"VF
TJ%%!&$KJ!!P)"VFeJ%%!&$KJ!!&)"VG"J%%!&)JI!)`X!!!#3B)!1%#!!"!X!!!
"3)!!&%J!!&3X!!!%3)!!6%J!!$3iB3"!1)!$k$LJ!!P)"V!9J%%!&%J!!$!iB3"
!1)!$k$LJ!#0)"UrpJ%%!&%J!!"JiB3"!1)!$k$LJ!$*)"UrPJ%%!&$KK!%!iJK2
B5!5)4@!!!!"rSqYiIm6cH$LK!$K)"))KB!!!!$KK!%")"X6pJ%%!&+J"!$kSJ3!
mI!-!8(`$"c3i"2rpI!3(0%J'[5f!33!81'%!3%J'[6Q!33!81'!!!%J'YQf!33!
8J!%"@$JK!9#lSIrdI!J$TNk!!##6iIrmI!J#TRbI)hL3!!%!#*3KrV!iS3!i5!5
"U@!!!!!i!!!2Iq-(0(`!"c4m!"K3-!$rrh`!!4!iS!!$I+!U&$KK!%!iJ!2S5!D
['B""!"3iB!!"5!DeYB""!"3iB!!!5!De`B""!"3iB!!*5!DecB""!"3iB!!"5!D
efB""!"5)J3"!1'%!36LK!$Ji`2rr5!Df#B""!"3iB!!!5!DeYB""!"5!!3&B1#%
"8)2Krram#!1Q6S!!)!!!!!!!!!!![k(rp(`)!UBl`P'`1q*A3*!!!3!)1!!!!*3
KrU#3!!%!1$LK!%4)")$GB!!!!$KJ!!")"V8CJ%%!&$KJ!!a)"V8pJ%%!&$KL9Q5
SB`!'5!5'G@!!!!!iJPDZI'8(0+J%!!"m"3!!3)!"6)"q!!!IT3"NJ!-!!(aJkK5
)!`"G+!!!!%'#!"`iB3"-1)!$m6LJ!"")"Ui4J%%!&%J!!*!!L!-!ALJ!!!""JJ!
d1(m!LcL!!!&)"Uq*J%%!&&4J"Mp!JJ!F1'%!6$L!!r%iS!!95!DYeB""!"4)!!"
8L"m!M5J!!!9"JJ!F1(m!MML!!!")"Up0J%%!&&4J"Mp"JJ!F1'%!6$L!!r%iS!!
T5!DYQB""!"4)!!!B1'%!6$L!!r%iS!!45!DYJB""!"5!IJ!!11%!6$L!!!#!!`!
!1+!!!$M!!!"mB1S85!4cR@!!!!!iB3!i5!DdSB""!"4)"V5aJ%%!&)###l!iB3!
m5!4+'@!!!!!iB3"%5!DdpB""!"5)J3"-1'%!66LK!%3i`!!!5!Dd6B""!"3iB3!
m5!4+1@!!!!#!B3!i1)!!!8J'Y6Q!33!8J!%"D$JK!@#lSIrdI!J$TNk!!#!!!!!
!!!!!!!!!!!#r`IriI!J#TM[L9K53!!%!#*3KrV!iS3"!5!4r'@!!!!!iBPCNU'-
!"NJ%K-PJ!!!!1)*@VRaP"c5S"!!!I!8!!%#!!#!iBP'`(!8!C)"M!!#!B`!!I'-
#&)2$!%K)!!!)1m!#!)"r!!")"UkTJ%%!&$L#A,amB`FdU!3!!(`!'!"!JJ!-1q!
!!%J!!%#!I`!!5!DZJB""!"3iSPbiI'-(0(r%mhLS"3!!1+!!!$M!!!"m!"K3I!!
!0&3$hMj)"*!!0@!!!!"mIaYi1'!!!8J'XUf!33!81'!!!%J'XVQ!33!81'!!#8J
'XX@!33!81'!!!8J'XY'!33!8Iq6lH$KK!%JiS!!"5!5#(@!!!!!iJPdJ1'%!1%J
%5*eJ!!!!L)%!5$KK!%NiS3"!1-!!!%J'XYf!33!81'%!1%J%5-PJ!!!!1'!!!%J
'XRf!33!8J!%"@$JK!9#l`IriI!J$TNk!!##6iIrmI!J#TT!!!3!)P#(qX$LK!$K
)"(fpB!!!!$KL9Q5SB`!'5!5$E@!!!!!iJPDZI(mEH(rM"c5S"!!!I!-!!%#!!+`
iB!!"5!DadB""!"3iB!!!5!DahB""!"3iB!!*5!DakB""!"3iB!!"5!DapB""!"3
iBP'`Iq!(0"`!!'5!B`!!J'-!!(aM!K5)!`"L+!!!!%'#!"`iB3"!1)!$k$LJ!"j
)"UV0J%%!&%J!!"L!J`"%1'%!3$LJ!!&)")%&B!!!!)L"!%!iB3""1+%!1$M!!!"
)"V(9J%%!&$KJ!!")"V'"J%%!&%J!!"!iB3!i5!Db5B""!"5!!3&B1#%"8)2Krra
m#!1Q6S!!)!!!!!#rJIr`I!J#TMML9V!i`!!"1+*@k$[#9Q4mIaYiI*`MH*!!!3!
)P#(rX+J(!!#Ba3!!,!!!!N##!"LSIJ!'5!5#4@!!!!"mI4Yi5!!!%$J!!!+`"`!
!1k$rrhrMqhJiS3!i1)!!$8J%I&eJ!!!!1'%!1%J'XEQ!33!81'*@VMZp!!&rT!F
dU!-!!(`%!!""J!!)1k!!!$L#8E"rS`Fd1"d!!B#N!!!FJ`"NJ+8!!(q$ihKrT5)
8I!3(0%J'YV'!33!8U"d!@(qNkhJiIJ!+X"i!"NJ%JY&J!!!!1)*@B$J!!!)iSQ`
SIq2lH*!!"!!!1)!!$*!!"3!!5rrd[ArMqhJiJ!!05rrfmB!"!&Ji)3"3Zi(rm(`
)!kC1J!!J!!!!!!!!!!"1J!!J!!!!!!!!!!!!!!!![Q(rc(`)!UBl!Q`SI(mEH$X
L9Q!lJPCNI*-MH$Y#A,!lBPbX1*crr$ZL9V!l`PG!N!!"!!Ji!!!*I!N$TT3Kp)#
#q3!!1+%!q),B!!#!C!!%K!3!#*!!C3!%P!8!#%)!rr#J"!!%1'%#5$L!!qL`"3!
%1+!!(%J'U,f!33!81'*@mSJ$!!!S!!!!3B)"Y)"L$e4)"XSCJ%%!&$L#AfCmG4Y
i1S!!!)J%!!!S!!!!3B)!)$Kq!C%iJ!!!5!DU%B""!"48B!Br3B)!#$U!!!&@P!B
r3B)!'$KK!%3iJ!!!1+!!!%J$Th&J!!!!1'%$5%J'bG@!33!8J'%$5P4J"Hp"JJ!
-1!2r!*!!!30+1(i!H$L!!"K)"UQjJ%%!&&4J"Mp"JJ!8J'%$5MJ!!3"mB!0iN!!
"!dSiB3K51)%#5%J%J6PJ!!!!1!!!!C!!!3P5IUDVH$L"!8JiS30)1'!!!$MJ!!!
j!!!!5!E*HB""!"4mIKYiIU1VH%J'bB'!33!89S!'2d'#!"JiB3"%1)!!!$LJ!!&
)!kE&B!!!!)J"!8SiB!!!+!!!!%'#!""r`!Fe3))!#$KJ!!'BI!!!L"`!!#J!!!"
"JJ#81!!!!$b!CR13!!%!1$KK!8iiT(-J1-%!3$MK!$`j!3#d18%!1$L!!!%j)!"
'5!E*(B""!"4mB!Fe3))!,+J"!,3iI!!+1)%!ZV!F!!C)")"PB!!!!)!"!,D3!"N
!!*!!'!!!5!!!$$J!!!#B(!!!1'%"5%J'b2'!33!85!!!'$J!!!#B(!!!1'!!!8J
'T!'!33!81'!!!$L!!!")"%cCB!!!!(rMqhK)"UB0J%%!&)JF!!!S!!!!3B)"))#
i!!!iB3#dU*`!"MM#%pam[LYi5!4IY@!!!!!iB3#d1+%!5$L!rrp)!lUaB!!!!(a
J"c9!JJ#`U"`!"L`H!!+`%`!!NpN!!%##!"!i!!!#X"d!!%J!!&5!H`!!1!!!!E!
G!!!S!`!!3B)!&%J'XA@!33!81!!!!*!!'`!!J(S!!#J$!!""JJ!85!Da@B""!"3
i!!!!N!!D!!#SI!!'Im6cH%J%4UPJ!!!!1)*@k$J!!!%iI!!+Q!3!!$L"!,T)"(m
pB!!!!(rMqhJiJ!!-5rra2ArMqhJiJ!!05rrcF6KJ!!&)!!"d1!!!#A`*!kBi[2r
m1)%!q)"N!!5%"!!)N!"P!!58"3!)3J$rm+!%!!55q3!!X!8!"*,B!!")!!!i1!!
!#A`*!kBi[2rm1)%!q)"N!!5%"!!)N!"P!!58"3!)3J$rm+!%!!55q3!!X!8!"*,
B!!!iB!!!J!%,L$JK#i#kBIr-I!J$TNk!!##rSIrdI!J#TMaJCR-iBb!J1k!!!*!
!!3!)P#(pS$L"!$K)"U)"J%%!&(aJ"c9!JJ!8J!%!1&3!"V9"JJ!)1k!!!9Hp"Mi
li!!!1rm!!6KK!85ci3"B1!$rrj!!B3"11'%!2,!"!&*)"Ue&J%%!&(aq'hKr`!F
e3))!a&HJ"Mp"JJ!`1)%"4,2K!03iB2rr1!!!!,"K!-iiB3#iN!#"!-U3!!%!d%J
'X$Q!33!8I(iEH(r!"c9!JJ#)U'%!8NJ%I,PJ!!!!1)*@VRaM"c5S"!!!I!-!!%#
!!'Ji`P'`(+-!C)#"!'bJB3"kJ-B!!&HJ"MpmC"R@J)B!!(b%+K53!'3!4$KJ!!#
BC!"L3B)!0)"K!6S`!rrrI!!C%*J%!'+!!3%k+!!!!%'#!"!i!2rkN!!%!%4)!!!
-J!%"2T!!"!"%Im!(0#`!rpe!J[m)J!%#D$JK!Q#lSIrdI!J$TNk!!#!!!!!!!!!
!!,pKrqam#!+Q1m*9p$ZL8F`liP'dN!!"!!L8)Iq3!)!H!!!S!!!!3B)"B%J'S`Q
!33!8J(d!!$L#9VL!B`!!U!3!!)#M!"L!``!8I!3(0*!!S3"-Ui%!6*!!`3")Ii8
(0(`&)!"rKq0i3)%!#(`(!hLVB3")5!!!1)#q!!"rC!FdJ0m!!&5%#$b!T3!!J-B
!!(b&)UiFK!3@I)BL&)L%!9NS"!!!3))!j$Yl!!&rC3FdI13(0(`&)!""J2r!1f!
!!%J!!,L![J!!If3(0)$I!!"8K!JmJ+8!!)$'!!"mK5+Z()3%&Rb')K5)K!&C+!3
!!%'#!)5!J`!!J!-!"*!!J3"!N!!"!%4)"UU*J%%!&(aq'hJiJ3"!5!DUNB""!"5
!JJZ`1'%!1%J%2l&J!!!!J*d!!(r$mhK)"UUKJ%%!&(r$mhK)"UUYJ%%!&$JFrrq
![3!!I!$B8(`%"c3iB!!!5!E2XB""!"3iB3!i5!3r[@!!!!")!!!B1hX!!ApP"c4
m"!FdI!8J!%'!rd#!!3"i1#%!F,YKrqam#!1Q6S!!)!!!!!!!!!!![f(rl(`)!UB
liPG!1i!!!6ZLA3!l`PpF1f!!!j!!!3!)I'!(0*3Krj!!L(m!IA`$!!"!JJ%X2'"
3FcKM9f3iJ!(d5!4"3@!!!!!S!`!!N!"q!!""JJ$S5!DY$B""!"5!IJ!!5!DN5B"
"!"3iB3!i1)!!!%J%C6&J!!!!9'!'2d'#!,4rSqYi1)%!1%J%H`PJ!!!!1'*D[$L
"!$JiB`&b5!4kp@!!!!!iI`"i1)!!$NJ'Scf!33!89'!'2d'#!""rSqYi5!+Vi@!
!!!")!UPCB!!!!$LLC25!RJ!!N!"P!!"rSqYi5!+Ud@!!!!"8B!BrI(`EH%##!'`
lHrrrIf!(08#"!#`iB!!"5!DHCB""!"3iB!2f1)!$m6LJ!"`i`!!!5!4YY@!!!!"
,rrp%1i!!!%J!!$!lJ!!!5!!!+$KJ!!")"$q9B!!!!%J'Saf!33!8I'3EH$KJ!!"
)"1HGB!!!!(q$ihL!!3"i1#%!F(`)!kDlBIrX6S!!)!!!!!!!!!!!!!!!!(`)!UB
i`!!!N!!"!!L8)Ir!J!)8!*!!!3!i5!!!5$L#9I4m`!Fd9!!)2)#%!!"mC3FdJ)3
!!(`%!Ujm"3!!3))!),$"!$JiJP(-J'%!1)#%!!")"VJ*J%%!&%J!!"`iaJ!"1)*
@Z(c&"c5S"!!!I!8!!%'!rkb!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!!!!!!![m(
rq(`)!UCmRL0iN!!"!!K8S!BrP#(rX%'#!"`iJPAdI'!(0&3!#$b!C!!!J'-!!(a
M!Uk`B3!i1'*4Y+LK!$L!B`!!(!8%&S"M!!"mJ`)8N!#"!$`iC!3@1!8!!B[N!h+
3!'%!2,!"!$K)!!#XJ+%!2(rJ"c5)C30bI!-!!%#"!,!iJPB!1'8$DS#%!!")"00
eB!!!!&4J"Mp"JJ!mJ'%!2)J$!@!S!!!!3))!,*[$!9QSB3!i5rrq[DL"!$L!B3!
m1)3!!6J$""D`J3!iN!!"!$a)!!"%J'%!2$J!!!#B!`&CJ)%!2)J%!@3S!!!"3)%
!&$KK!$`iJ3!i5rrIf8J!!"LSB3!i1!3%&T!!!3!m1!-!!E!"!$JiBPDdU)%!1+J
$!!"mJ`FdI!-!!%'!rd5!!3"B1#%!8,["rrKm#!1Q6S!!),p"rqKm#!+QI*SMH$Y
J!!#3!!%!#&5!"MmiJPAdP#(rS)#L%rb3!+%!2%'#!"L!T!!!I'!(0&3!#$b!C3!
!I'-#VV"K!$JiBP'dU!%!1)"M!!!F!!3@J'-!!(rM!K5,R`0b5!!!,)JI!h*8!`B
r3B)!,(q!"c4m!`!!3B!!)+KK!$Jlrr[U1!2rrl!"!$LS`3!iI-!(08#!rp"m`!F
e3B!"V$MJ!!")!!!`J'3!!(cJ"c48!!JmJ'-!!(c&"c4m!`+ZI!8!!%##!!amqcY
i5!!!($MR!!%iBPDiI18(0+J$!!"m"3!!3B$ra+KK!$JiR`3@Nq%!3$[!!!!i!`!
"N!#"!%!lS!!!X!%!1)ZI!h*)!!#dJ+%!3)J&!h*8!`Br3B)![(q!"c4m!`!!3)%
!X$L#9J!iC30UJ)3!!%J%dBPJ!!!!9'!'2d'#!%L!B3"!L!-"B#J!!!"!JJ!iL!-
"@5J!!!""JJ!-1"i!!A`H"c5SJ3!i1ld!!B"K!%!iK!!"1!-%&V#"!$L3!!%!3%J
!!$L!J3"!L!3"C#J!!!&!J3!81'%!3$L"!$K,rphY5!!!'+KK!$Ji"!3@N!!"!%!
i!`!"X!%!1$KL9V5SJ3!iU!-!!(b$"c4m!`!!3B$r2(r!"c9"JJ!XIm-(0(qJ"c4
m!`!!3))!%$J!!!'B(`&C5!!!'$J!!!+B(`&C5!!!$$J!!!#B(`&CXf%!2$L#8Fb
!B3!mJ)3!!%J'Y'Q!33!8L"m$FLJ!!!""JJ!BIf!(08#"!""rBpYiId66H%[rrEf
!!3"S1#%!B,Y"rqKm#!1Q6S!!)!!!!!#r)IrNI!J#TRbD)hJlSP(-1m*9p$[L8E5
3!!%!#&5!"MmiJ!!!P#(rS,#"!$TmI!Fd1"crrh`E"c4)!!#)9d!'2d'#!#b!IJ!
!If!(0)#I!!"8!!JmJ'-!!)#%!!"m!`+Z(!!%&RmN!K4)!!!BIf!(0)"r!!!F!!3
@J'-!!(mM!K4r)mYi5!3m6@!!!!"8B!Br3))!1)JC!9NS!!!!3B)!)$J!!!#cB3!
iQ"N"@B"K!$L!R3!!5!DcGB""!"3lHrrrIf!(08#!rhJi(!!"I"X(0%J!!)KA3!B
r3B)!,)"q!!"rB!FdJ*m!!&3!#$b!B`!!J)3!!(`$!UiF!!3@Ib3#&%J!!"KrB!F
dJ(m!!"`!""D!B`!!Ib-#&(mMbhK)"$ZeB!!!!&4J"Mp!JJ"%L"N"@5J!!!""JJ!
J1!!!!,0K!$LB'3&CJ'%!1)#G!!")"V,GJ%%!&$Yl!!%iBPDiIf3(0+J$!!"m"!!
!3B$rE)!"!'Ji)3"JZb(rj(`)!kC1J!!J[b(rj(`)!UBiBPEQ1m*9l$[L9HL3!!%
!#$J!rrq8)IqJX!%!1)J$!!!S!!!!3B)"R$KK!$JiJ!!)5!DKBB""!"3iB3!i1)!
!#8J'S9'!33!8J(m!!$YJ!!#$J`!!5!!!0$Km!)iiJ!!%5!DF8B""!"48B!Br3))
!&+Km!+kS!3!iI'!!1,!F!+ilR!%11hX!!B!H!!"rB`FdI!-!!%'!rm3iBP'd1d!
!!)"M!!#$S`!!5!!"")JG!9NS!!!"3))!m)JG!9SS!!!!3))!j(qMkhK)"$U"B!!
!!&4J"Mp!JJ$3Lcd"9hmJ"c9"JJ$%J(m!!$YJ!!#$J`!!5!!!T$Km!)iiJ!!%5!D
EYB""!"48B!Br3))!K$Km!+iiJ!!05!DERB""!"48B!Br3B)!E$Km!+iiJ!!15!D
EKB""!"48B!Br3B)!9$Km!0*r*!Fd5!DEEB""!"48B!Br3B)!2)JG!9XS!!!!3B)
!&$Km!+iiJ!!)5!DJ3B""!"5)(3&F+!!!!%'#!"3iI!#Z1)!!#8J'S#@!33!81j`
"$MYl!!'!(J!!If-(0(`$!!""J2p81ld%&MYD!!%iBPDdId3(0+J$!!"m"!!!3B$
qm)!"!'Ji)3"JZb(rj(`)!kC1J!!J!!!!!,q"rr"m#!+Q15!!!Aam'hKmR50iI2i
lH(dI3hL3!!%!#&6!"Mmi`PESP#(rX*NQ!!""JJ!-Q,`"@8J!!##)(!&C+!!!!8#
#!"!i!!!!Q"`"@8J!!!LC2!&CL"`"C#J!!!&!J3!8L*`"@AqMkhKraI0i5rriNBJ
F!h)S!!!!3B)!%(qMkhKra20i5rrjZ9I!"Mp"JJ!N1!!!!$KL8FbcS3!iJ)-!!,!
"!$U!B3!i5!D`(B""!"5)(!&G+!!!!%'#!""rSqYiIm6cH%[rqpPAi!Br3B)!'%[
rr8diBPpX1)!!%)"M!!",rqZ0J!%!@$JK!&#lJIr`I!J$TNk!!#!!!!!!11!!!$M
!!!")!!!d1)*9p(c!"c48!!JmJ)3!!(aP"c5!K!!!I!3#VR`&!!"!JJ!-I-FcH%J
!!"`iaJ!"1)*@Z(c&"c5S"!!!I!8!!%'!rm"micYi6S!!)!!!!!!!!!!![d(rk(`
)!UBliP'dI(XEH$L!!!!lS!!!N!!"!!L8)IqJ5!!!B&HJ%$TmH`)8J!-$G#`!!!"
"JJ!-1)!!!8J!!%b!!`18,!!!!%'#!!`iJ!!"5!!!1)!$!l3X!!!!3B)!$$L!!!&
)!!!NJ!-$e#`!!!""JJ!-1)!!!8J!!"!l[3!","d!#%'!rk"8J!Br3B)"H%J%FV&
J!!!!J(m!!%J'QE@!33!89'!'-)"r!!"8(!Bq5!DCLB""!"5!I`!!1k!!!)2$!!"
)!!%8L"X"9iLH!9Gm!#"!3B)!r)JE!9Nl3!!!+!!!!8##!&!iH`0d5!DBMB""!"4
8B!Br3B)!&$J!!!'B(J&C1d!!!8J!!(b)RJ&A1(X$P%J'Q'@!33!89'!'2d'#!'3
i!!!!Q"i"@6Y!!!&)!!"8+!!!!%##!%`iH`1d5!DB1B""!"48B!Br3B)!&$J!!!'
B(J&C1d!!!8J!!#L)RJ&A1(X$e%J'Q"'!33!89'!'2d'#!"!i!!!!Q"i"@6Y!!!&
A3!Br3B)!5)Lq!9Pr`r0iIk3(0$M!!!%ii!!!13!!!%[rr2di!!!!X!%!1RqM"c4
,rrhYX'%!1$L#8Fb!B3!iJ)3!!%J'VD'!33!81pi%&MZp!!%iBPDdU!-!!(`G!!"
"J2lN5!4b5@!!!!"AJ!Br3))!%)"r!!")"T`9J%%!&%[rqVdiBPpX1)!!%)"M!!"
,rqMpJ!%!D$JK!'#l3IrSI!J$TNk!!#!!!!!![Z(rh(`)!UBlJPpXI(NEH$ZL8E!
l`PbmI*SMH*!!!3!)P#(qN!")"T60J%%!&$KL9Q5SB`!'5!4YR@!!!!!iJPDZI(m
EH(rM"c5S"!!!I!-!!%#!!U3iBPB8J'-!!%J'Pj@!33!81+*FZRaR"c3iJPbiU+8
!!+J%!!!iJ!!!I-FS8$#QrrpmT6%3I!F!!&5l"Mj"JJ!8U"i!!(`(!!""JJ!)1)!
!!DJH!!"mB`Fd9)3'2R`$!!"!JJ!-1'!!!%J!!$Kri!FdJ(d!!"`!!'5!B`!!9)3
'2RaM!K4mK3!dJ)-!5&5MhMiiS!!!1-!!!%J%H19J!!!!J,d!!(rJ"c3FJ!"NJ+8
!!(m&)K4AB!BrJ[J!4(ap'hK"JJ!JI!1i3%#"!"JiBPj!1!$rhM[!!2q`!`!!5!!
!#$[!!!"r)mYi1+%!3$L!!"0)"'E0B!!!!)JB!&ili!!!+!!!!%'#!#3iBPG!1)!
!!6KM!)Y)"TAKJ%%!&&4J"Mp!JJ!)1q!!!9GJ"MpAi`Bq3B)!L)JB!&dS!!!!3))
!&(`GZ%""J3!-9'!'2d'#!'aAB!Br3B)!S%J$5d9J!!!!J)),X$KK!$K)"$$9B!!
!!(mMbhK)"T(CJ%%!&$L"!%")"U%9J%%!&)"m!!!iJ!!85!DK(B""!"5!I!!!1)!
!&8J'S3f!33!81'%!1%J%-1&J!!!!5!!!3)"m!!!iJ!!85!DJ[B""!"5!I!!!1)!
!&8J'S+f!33!89f!'2d'#!"")!dUpB!!!!%J!!!a)!dZ4B!!!!)"m!!!iJ!!65rr
88AmMbhJiJ!!"5!4Qj@!!!!"ra20i5!D4XB""!"4A3!Br3B)!J(mMbhJiS3"!1)!
!%%J%CBeJ!!!!1'!!!8J'QFQ!33!81'!!!%J'QG@!33!81'!!#8J'QH'!33!81'!
!!8J'QHf!33!8Ik6VH$KK!%JiS!!"5!4T1@!!!!#)J3")1'%!56LK!%!i`!!!5!D
D#B""!"3iB!!!5!DCYB""!"5!!3&i1#%"F,VKrpam#!1Q6S!!)!!!!!!!!!!![b(
rj(`)!UCmRL0i1b*@B$LL9ZJi`!!"1q*@'$Y#A,"mI4Yi1f*FV$Z#9Q3iJPD`N!!
"!!L8)Il`J"N!!*M&!!!X!!!#3))!%$J!!!+`"!!!5!!!8)"l!!#`a!!!+!-!!%'
#!"4)"TePJ%%!&$J!!!#3!"X!!)"k!!!S!`!!3B)!&%J'R8Q!33!81!!!!*!!'J!
!U(`!"S#C!!")"$+CB!!!!+LF!!BiB3!iJ,N!!$M#%pa)"%X"B!!!!$KK!$JiS3#
!1)$rrdJ$TIeJ!!!!I(NEH(mJ"c9!JJ#J1(`!#ML"!$j)"'X"B!!!!)!I!!!S!!!
!3B)!6+Km!!C)"'R*B!!!!$L#9UjmC3FdU!3!!(`&!!"!J!!X1!-!!B"r!!"m"!F
d5!DHLB""!"4A`!Br3))!%)"r!!")"TjGJ%%!&&I!"Mp!JJ!dIk2VH$L!!!a,rpb
PIk2VH$L!!!e,rplCIk2VH$L!!"*,rqA0Ik2VH$L!!!&,rrZ"Ib2,H)!"!4Ji)3%
3I!J$TVXKrq41J!!J!!!!!,h"rlKm#!+Q1d*@C(ar'hJl!PCJ1S*C5(b2)hJkSPE
B1RS!"MV#AN!j`PpXI,!VH$VL8F`l)P'`1f*A3)1##l!lSPB8N!!"!!L8)Im3JPJ
!!+Sk!!C)"SrpJ%%!&$[#@VaqC*YiJ0X!#(m&`hLarJ%q1'!!!$MJ!!&)"+lTB!!
!!(aJ"c9"JJ!-1!!!",!H!6k!'!!!I")!!%##!"5S%`!!IL-(0(`$!!""JJ!3Iq2
lH$L!!!",rrfpU"i"2LJ!!"C"J3C81')DQ&3!%$TmB`!ZI'N$TNk!"#!k!!!!1'!
!"%[rlH&8B!Br3))!$$S!!!&)!!*mJ(N!!%J'NU'!33!8J(N!!%J'NQ@!33!8U(-
!!%J%D#&J!!!!X'%!1S"j!!#S!3!kJ'-!!"`!!'4pi`)8L!m!A5J!!!""JJ"%IH0
lH$L!!!!iS!!!1-!!!%J'Mr@!33!81'!$pML!!r%iS!!(1-!!!%J%A#eJ!!!!1!$
rdV!@!!!k!!!"5!!"k$L#9ZJi!!!"J(d!!*J%!!")"T(&J%%!&$L#A,amB`FdU!3
!!(`!'!"!JJ!-1'!!!%J!!$b!I3!!5!D4RB""!"3i`PbiI'-(0)#2!%JiS!!!U!B
!!$M!!!"m!"K3I!!!0&3$hMj)"(04B!!!!)!2!%4m!`"!3)%!K(hMHhJiJ!!!1+!
!!$M!!!")"SmpJ%%!&)JE!)dS!!!&3B)!($Kl!)iiJ!!!5!D3!)Q!33!89'!'2d'
#!#!iB!2f1)!$m6LJ!#Ni`!!!5!4E8@!!!!")!!!F1'!$pML!!r%iS!!41-!!!%J
%@c9J!!!!1!$rhV!@!!!k!!!"5!!!m)J2!&iS!!!!3B)!A$Kl!)XiJ!!"5!D3!#'
!33!89'!'2d##!%4pihYi1)!!!$LJ!!!i`!!!5!D1QB""!"3iB!2f1)!$m6LJ!"8
i`!!!5!4Dd@!!!!!i!2r'X"B!!$S!!!&)!!#-1)*@[$KL9X5Sa!!!1+*@ZS!$!!!
iJPE!X-8!!)"p!!#3!!3!!%J'N!"9J%%!&%J"MIeJ!!!!5rrSYArMqhK)"SdpJ%%
!&(rMqhJiJ!!55rrLIB"p!!")"T!!*B""!"3iJPbkI'-(0+J%!!"m!"J!3))!%(r
MqhK,rqR95!!!%)"Z!!!iJ!!!5rri"B"j!!")"T2GJ%%!&&B!"Mp"JJ1N1'*@p)J
$!!"m!!Ge3B)$P$KLAfJi!!!"Q!-!!%J!!i3iB!!!5!6@q@!!!!")!!0d1)*@'(r
MqhL!K!!!5rrM!ArMqhJiJ!!55rrKjArMqhJiJ!!"5rrhQ8J!!dJiB!(d5!((M@!
!!!")!!-i1)*@h$J!rrpqSkYiX!3!!)!3!!U3!"8!!%J'R"Q!33!8Ii6MH$KK!%4
)"#RTB!!!!)"e!!#JN!!!$S#h!!")"V&YJ%%!&$KK!%4)"#SCB!!!!)"h!!!iJ3!
mJ'-!!)"M!"a)"SUTJ%%!&)"e!!!iJ3!m5!D+iB""!"48B!Br3))#Z(rMqhJiJ!!
"5rrfq8J!!UL)'`#-+!!!!N##!65!H!!!1H%!@UJ6!!!k'J!+N!"K!&CpihYiX!%
!9(i%JhK)"'@eB!!!!%J%CmeJ!!!!5!5h&@!!!!#SS3"8IS1MH)$"!&Bj!3!i1)$
rrcMJ!!!j)!!!5!*@!@!!!!#S!3!i,!!!!8'#!$"qJk0i5!)[#@!!!!"mC"YiIS1
MH$M"!&3iS!!!5!+qm@!!!!"8B!Br3B)!M$KL@UJi!!!)I!N$TMLK!&#!B`!!J'-
!!$L$rrk!C!!%K!3!#*!!C3!%P!8!#%)!rr#!C!!%J"J!!*!!C3!%S'3!#,"P!!L
!J3"@I!3!!%##!"5SB3"8U"-!!(`$!!""JJ!XU!%!9(i$JhL3!*J!!(hNHhL`%`!
!5!4Nc@!!!!#!EJ!!1)!!!8[rq0e)",BTB!!!!%J%Cm&J!!!!5!!!%(rMqhJiJ3!
k5rrL,ArMqhJiS3"-1)!!$8J%ADeJ!!!!1'%!6%J'N`Q!33!8Iq2lH$L!!!a,rpD
"Iq2lH$L!!!e,rpLeIq2lH$L!!"*,rpqTIq2lH$L!!!",rr9G5!!"$(q%ihJiB3"
%1J!!!%J%*pPJ!!!!1!!!!,!"!$T)!!$)1)*9p(bJ"c3iBP'd9!!)2)#%!!#!B`!
!J)3!!)"M!!"m"!+ZI!!(0"`!""Cp``)8IF0cH%J%+Z&J!!!!9'!'2d##!(5)$J0
b+!!!!%##!'a@!!Br3))!C)J1!9dS!!!!3B)!#$S!!!'SJ3!kIF0cH$LJ!!%i`!!
"11!!!6N!!!&,rr%P1'*@liJ$!!!S!!!!3B)!+(jNQhKr"F0i1'!!!$M!!!%ii!!
)5!5SM@!!!!")!!!)1J!!!+KK!$Si!`!"X!%!1MKL9VLSS3!kU!-!!(bM"c4m!`!
!3B$r+$KK!%4)"#FeB!!!!)!"!2Ji)3$`ZF(rZ(`)!kC1J!!J!!!!!!!!!!#r`Ir
iI!J#TMLLAfamIKYi1)!!!C!!!3!)P#(q`)"P!!")"&e4B!!!!$L#A,ara3FdI(m
EH+J%!!"m"3!!3))!$$[!!#p)!!"%1'*A3)J$!)`X!!!#3B)!+%#!!"!X!!!"3)!
!&%J!!#3X!!!%3)!!(%J!!"3l`!!B5!!!%$[!!#*)!!!)1m!!&hr&mhJiB3!i1)!
$k%J'L8f!33!8Iq2lH$L"!$K)"U19J%%!&)!"!8Ji)3&!Zm(rq(`)!kC1J!!J[`(
ri(`)!UBiSPB8I(SEH$[#9KJliP(-I*XMH*!!!3!)P#(rJ)"P!!")"SXjJ%%!&$L
#A,TmC`FdId26H+J%!!!iS3!i1-%!2(b!1&!`"2rrI!!K%&3F"Miii3")1)!!"dJ
'KS'!33!8U!%!6(p$dhLSS3!i11%!5(`!fK5`!3"-1)!!"i$"!$a)"SL"J%%!&(p
$dhJiS3!i1-%!2$MK!%JiJ!!65!D'2B""!"5V)3"-Id26H+LK!$Jii3")I"RD&,!
"!%`iJ!!6J-%!2%J'L$f!33!81`!!!8J!!%ar3p0iI`6$H$LK!$Ji`3!m11%!5%J
'KI'!33!8U'%!5(mJ"c4m!`!!3)%!((p$dhKr"-0iIfEEH$LJ!!")"&PTB!!!!$X
B!!&r!!Fd,!!!%d'!rl"r3p0iIfEEH$L!!"FiS!!!5!4C3@!!!!#!IJ!!1)%!5%J
'KDQ!33!8U'%!5(mJ"c4m!`!!3)%!,(pPfhJiB3")1)!!!%J'L'f!33!8J(i!!+L
"!%USS3")5!D)FB""!"4AJ!Br3B)!D)#I!!!iB!!!5!DSiB""!"5!I`!!1!!!!$L
"!%L!B`!!Jk-!(*!!!`!FIk2VH%J'K6@!33!8U)%!5(qMkhLS!3"-U-%!5ULK!%j
m"!"3I"X#&(b'+&"mK!FdI!8(0%J'UQf!33!8J,m!!)#&!!#!C!!!J!3!"*!!B3"
3N!!"!&5SB3"3U!%!9+M"!&*m!`"3U)%!9R`E!K4mCL"3I'-(0(`%"c4)"VL"J%%
!&&H!"Mp"JJ!JJ*m!!$KJ!!'!K!!!Nk3!()#I!!")"UJPJ%%!&(p$dhK)"S5TJ%%
!&(ai'hJiJ3"!5!D%XB""!"4mC"YiI`2$H%J'Np'!33!8J!%!L$JK!)#l!IrJI!J
$TNk!!#!!!!!!!!!!!!!!!!#rSIrdI!J#TRap'hKmRL0iN!!"!!L8)IqJ5!D%5B"
"!"3iJ3!m5!D%9B""!"5Vi3"!Im#'F(`!q!""JJ#3!(qMkhK)"S9aJ%%!&$KK!$a
)"ShYJ%%!&$L#8Far`)C`Ik2VH)#%!!#!K!!!J)3!%*!!J3!iU)%!1(`!)pCmK!(
@1m3!#%J'Jq'!33!8U)%!3Rr&"c3i`!!!5!D'EB""!"4rSqYi5!D$`B""!"3iJ3!
m5!D$cB""!"5S!3"!Ik2VH(`I!&"m"!Fd5rrmMB!"!'Ji)3"JZk(rp(`)!kC1J!!
J!!!!!,q"rr"m#!+QI(iEH(br+hL3!!%!#*3Kri#3!)%!R%J'Jf@!33!8J)%!R(r
PqhK)"VF9J%%!&&4J"Mp"JJ%XIm2cH%J'K*'!33!8Im2cH%J'Jc@!33!81)%!6%J
'Jd'!33!81'%!6%J'M2@!33!8Iq!(0#`!!!K!JJ#N1)*4c$KK!&5!K!!!J)3!!)!
%!"#3!!%!1%J'K('!33!8J)-!"S!$!!Tr`r0iN!#"!%53!!%!5+ZK!%5S!3")1*d
!-h`%!&"m(!Fd5!D#`B""!"3iJ3!m5!DfMB""!"5SJ3!iIi-(0$JG!#YmBb2@X!%
!2(aN'GBi!`!)I"`(0+J"!$ar`r0iI!$L&,!"!%")"S*pJ%%!&$L"!$a)"VCKJ%%
!&+ZK!&"r`r0i5!D#BB""!"4rj2Yi1+!!!8J'YPQ!33!8Im2cH%J'JN@!33!81)%
!6%J'JP'!33!8U!%!8(r$mhKm(3"3I!3(0%[rqa'!!3#)1#%!J,Z"rr"m#!1Q6S!
!)!!!!!!!!!!![Z(rh(`)!UBlBPBBI(NEH$X#Af`lJPCJ1k*@k$[#9Q3liPB8N!!
"!!L8)IpJ1'%!C%J'Je'!33!8J+-!"ML"!%#!!`!+J(N!#T!!S3"-N!!"!&#3!'%
!2%J'NSf!33!8I'!EH)"K!%"m&`0i5!DGSB""!"4qi!Fd+!!!#(ak'hK"J31X1))
Dp&3!%$TmK!!ZI)N$TNk!"##!'!!!I"S!3%##!ia)"S+aJ%%!&(p$dhK)"S&9J%%
!&$L"!&4)"S&KJ%%!&+M"!%`iB3"FU!%!8$LJ!4LSJ3"DI!B!8(b')hKm"`Fd5!D
,@B""!"4r3p0i5!D"&B""!"5!Q3!+1+%!A%J'Y*@!33!8I(JEH8'#!b"r3p0iI`6
$H%[rr)e)!!-3J)%!2(p$dhKqjEYi5rrp@8J!![b!B3"!5!D4aB""!"5!'!!!I"S
!3%##!Z3iB3!m5!D4aB""!"5!H`!!1)%!4%J'J)f!33!8J'%!2$L"!%4)"S$&J%%
!&&4J"Mp"JJ&8J(X!!%J'K0'!33!8I(NEH)"l!!#!J3!m1+$rrdJ'NDQ!33!8J(X
!!%J'K+f!33!8X'%!1(mJ"c5S`3!iI!!`!%'#!Q`iBPDZU!-!!(`'!!"!J3"FJa`
!!(p$dhJiJ3!i5rrC"94J"Mp"JJ!FU'%!1%J%@N9J!!!!1!-!!E!"!$K)!!!-Xb%
!1*-F!!#!H`!!U)%!1%J'M`Q!33!8J(X!!%J'MZ@!33!85!!!6$KL8E!i"[rr1)*
@X$LJ!!+!i`!!X+3!!"aQ!'5!K`!!(!!!C(aN'K5SSrrd1(i!#Rb%!K5`[J!'5!4
Dm@!!!!!i!!!#N!!F!!!i!!!"Q"d!!(p$dhJiS3"F1)!!$8J%8qeJ!!!!1'%!A%J
'L8Q!33!8Id26H$L!!!a,rmc"Id26H$L!!!e,rmleId26H$L!!"*,rpATId26H$L
!!!&,rqZG5!!"B)"r!!!iJ3"%5!Cr&B""!"5!B3!m1)%!4%J'Idf!33!89'!'2d'
#!+b!I`!!5!D$@B""!"4mB"YiJ(m!!)#"!$am'!0i1+$rrdJ'N!!YJ%%!&)"r!!"
)"S-aJ%%!&,"K!$Kr"!FdU'%!1(aJ"c4m"!!!3B)!l$J!!!'B(3!!5rrfkAp$dhJ
iJ!!05rr166KLA,USJ3!iU!-!!(b$"c4m!`"3I!!!0&3$hMj)!`kYB!!!!+L"!$K
r!m0i5!5jA@!!!!"r3p0i1)!!!8[rkXe)!!#3!$LL8F`iJ3"FJ'%!2)#P!!#!T3!
!J-8!!)!&!!53!!%!B+LK!'+3!-%!A$J&!"#`!3"L5!CqCB""!"48B!Br3B)!8(p
$dhKr*FYi1)!!"d[rlaP)!!!m5!CrBB""!"4r3p0i5!Cq"B""!"5!J3!m5!3GH@!
!!!")!!!BJ'%!2%J'XJQ!33!85!4I-@!!!!#!!3#S1#%!S,VKrpam#!1Q6S!!)!!
!!!#rBIrXI!J#TRal'hJlSPG!N!!"!!L8)Iq`S!-!$S#$!!*8!`AZI!-!d(`!'(K
8RJBq9"`2rNJ'QJf!33!8I(mEH%J'QBQ!33!8+"m!!(ar'hK"JJ#m+"m!!%'#!,4
A`!Bq,!!!#8'#!'4!J!!3,!!!!d'#!"4)!!"m,!!!$8'#!!K)!!"`Iq2lH$L!!!&
)"&,9B!!!!%J'IA@!33!89'!%2d##!'arirYi1)!!!8J%6r9J!!!!Iq2lH(pPfhJ
iJ!!"5rrZ!8J!!%L)(3#-+!!!!N'#!$b)(3#0+!!!"8'#!$"rCGYi1)!!"8[rlGP
)!!!J9i!'2d'#!"KA``Bq5!Da&B""!"4)"&i0B!!!!)!"!&Ji)3"3Zf(rl(`)!kC
1J!!JI!J#TMKL9I53!!%!#*3Krm#!B`!!+!-!!%##!!`iB!!!5!!!2(b!"c5!B`!
!9!!)2$M#8E4m!`+ZI+3VH)"Q!!!iS!3@(!!%&S"M!!"mB`)85!D!+B""!"3iB!!
!J!%!5$JK!%"m#!1Q6S!!)!!!!!#r)IrNI!J#TRaj'hJli!!"N!!"!!K8S!Bq+!!
!!T3Krk"!JJ!BJ'3!!$ZM!!JlJ`!S1d-!D%J!!"5!C!!!1k-!L$Z$!'Jl3`!SJ'3
!!$[!!!!lB`")5!!!F$KK!$a)"T8PJ%%!&)"K!$ar*-Yi5!ClpB""!"48B!BrI(m
EH%'#!#4A`!Br3))!((q$ihKr*-Yi1m!!!8J$*9eJ!!!!5!!!+&IJ"Mp!JJ!J9m!
'2d'#!"KrSqYiIb6,H$[!!!")!b8eB!!!!%J'P0@!33!89'!'2d##riKAi!Br3))
!$$KJ!!")!!"B1)%!1$KJ!!4)"T6&J%%!&(pMfhKr*-Yi5!-Np@!!!!!iJ3!i1'!
!"%J'P+@!33!8Id26H(mNbhK)!b69B!!!!$L"!$JiB!!%5!D8KB""!"3iB!!"J!%
!D$JK!'#l)IrNI!J$TNk!!#!!!!!![i(rm(`)!UCm[#YiI(mEH(cG-hL3!!%!#*3
Kri#)"3&N+!!!!N'!!3#![`!!1'%!3$L!!!#$a3"%1+!!!$M!!"!ii!!35!D%eB"
"!"5SI3!#1!-!!E!"!$US(3!!U'%!1V!"!$Ji!`!3U'%!1,!"!$ii!`!3X!%!2)J
F!@3S!!!$3))!,)$H!!#!TJ)UJ)B#,S"Q!M+J"J)fN!#K!&L3!)%!A*!!B3"JX!%
!C%J!!#L!hJ!!J+B"mS#'!ID!CJ(kS!B"rT!!S3"BN!#"!&b3!'%!B,!"!'5!`3"
BIq2lH)#K!&b!J3"JS!%!C*!!`3")N!#K!%b3!)%!8,!"!&4)"T-PJ%%!&%J'NFf
!33!8J)-!!$KK!%JiS3"!1-%!1$MJ!!!j!!!!5!D4aB""!"5!!3#)1#%!J,Z"rr"
m#!1Q6S!!)!!!!!!!!!!![X(rf(`)!UCmGKYi1k*9p(lI"c3l`P'd1b!!!$Z#9VL
3!!%!#&IJ#$b8)Iq3!)#G!!#!IJ!!J)3!!)"M!!"mK!)8Ua`!!+Y%rriF'J3@If-
#&)Vl!h)l@J!"5!!!f)"q!!!F'J3@J'-!!(lN"c4rB`)8L(X$FR`$)!"!J3$)1!3
!!A`$!!"!JJ#S1)*@!$Kl!fU!K!!!5!5Zh@!!!!"8B!Br3B)!M(pMfhK)",+CB!!
!!&4J"Mp!JJ"iL"X"C#J!!!&!J3!-1!!!!TJE!@3i'!!"J(d!!&3%#$a)"S44J%%
!&(m'`hK)!!!JJ(d!!&6%#$`ia[rrJ+-!!(aP)K5S!rrqI!8M,Rl!"c4m"J!!3B(
rh)"p!!"8!!Jm1YB!!B"M!!!l13!"1aJ!!Ap$!bil@J!"1'*@Y+J$!!"m'J!!3B$
r)#`C!!""JJ"%U"`!!$KK!$L!JJZ`I!$+&,!F!!")""FeB!!!!$LL8Far)`FdIq3
(0)#P!!")"T(GJ%%!&$KK!$K)""GKB!!!!)!"!(Ji)3"`ZX(rf(`)!kC1J!!J!!!
!!,kKrp4mPb0iI!J#TMYL9VKqi`Fd1)!!!$Z#8F`lSPAdI,8VH)2##l!liP'dN!!
"!!L8)Iq!U"X!!*!!J3!iI!-!!%'!!!`iB!!!5!!#Z)#G!!"8B!JmJ(m!!)#%!!#
!B`!!I+3#VRbJ"c3I3!3@Ib25&)VC!@4@`!Bq+!!!!8'"!!`iB!!!5!!#I#J'!!"
"JJ!`U'B!!MJ$!!'`!3"+U!B!!+KK!%U`!3")1!-!%+KK!%L`!3"11!-!%,!"!%`
S&3!!3B)!9#J'!!""JJ"-Im6cH$KK!%")""BGB!!!!(kNUhKqaE0i1'%!5%[rqZP
8B!Br3))!'$KK!%")""C*B!!!!$KJ!!")!!(m1'%!3%J%&M9J!!!!1!!!!,,K!$`
iB3!iX!%!2NJ'J$f!33!85!D!6B""!"4@`!Bq+!!!!N##!$L!R`!!1+!!!i"K!$b
!"!!!I)$5&*LN!@5!R!!!5!D3!$f!33!81"F!!A`$"c4,rrce5!!"I)#I!!!iS!!
#J'%!2)!%!!"mJ0)8Q+3"C)#r!!#!R!!!J!8!!(bJdK5+T30b5!D2qB""!"3i&`!
"I"S(0(p@dhJl!!!!1Z!!!%J!!(L!R3!!IX!(0)"r!!"8"3JmJ-3!!)#$!!"qS!F
dI+BUVRbM"c3FB`3@Ib3D&)Kj!h*m!`!!3)%!9$L#9J!iH30UJ)3!!%J%UmeJ!!!
!9'!'2d'#!##)'3&N+!!!!8#"!!`i!!!#Q"N"C(lBXhJkp`!"1YB!!DMl!!"q``F
dI1!(0(`$!!""J2pmI`!(08'#!+!l'!!"I`-(0(cJ"c4m!`!!3)!!5(m@`hK)!!!
`J*d!!(m$"c4r3!FdJ)3!!&4M#$a8!!JmI'3DVMV@!!%l'!!"I'3$,MYD!!'S'`!
!IX-(0(`$!!""J2r)Im6cH$KK!%")""4"B!!!!+L"!$aqilYiJ,`!!$J%!!&m"!F
d5!D1rB""!"3iB3"!5!38D@!!!!#S'`!!I"F!8,!E!!#!B3!i1)!!!8J'Ief!33!
81'!!!)!"!)Ji)3#!ZU(re(`)!kC1J!!J!!!!!!!!!!!!!!!![i(rm(`)!UCm[bY
iI(iEH(cF-hKrirYiN!!"!!L8)Iq3!%J%&`&J!!!!9'!'2d##!8L![J!!1'%!3$L
!!!#$T3"%1+!!!$M!!"!ii!!35!CqcB""!"5SI!!#1!-!!E!"!$US(!!!U'%!1V!
"!$Ji!`!3U'%!1,!"!$ii!`!3X!%!2)JI!9NX!!!"3B)!5%#!!"!X!!!!3)!!&%J
!!)3X!!!$3)!!I%J!!&5!R3!!J'3#BS!%!QD3!'%!5*!!!3"-J!3#DT!!!3"3S!3
#EV!"!&4)!!"3J*d!!)"N!R#!"!*dN!"K!%L3!!%!6)!%!RL3!!%!8+!%!Rb`!3"
85!!!+)#G!!#!C!*qJ!3#JT!!B3")N!!"!%b!"!+'N!!"!&#J"!++X!%!9$L#9XS
iB3!iL0m$FMLJ!!#S"!!!I!B"eR`%"c4)"RCjJ%%!&(r$mhK)"Sc9J%%!&%J'Lhf
!33!8J)-!!$KK!%JiS3"!1-%!1$MJ!!!j!!!!5!D,GB""!"5!!3"i1#%!F,Z"rr"
m#!1Q6S!!)!!!!!!!!!!![i(rm(`)!UCm[5Yi1m*@bRcI-hKrSqYiN!!"!!L8)Iq
`5!39F@!!!!"8B!Br3B)!K+LI!!!iB!3!U"m!"(`%!&"m!!j`I!!"P(`%!K4m(!F
d5!D++B""!"4mI4Yi5!D+0B""!"5ShJ!!1"`!!DKr!!CrKH0iU*m!!MM'!"CmKL"
31--!*$KK!$KmK!FdI-B(0(`("c4)"RceJ%%!&(qMkhJiJ3!i5!D&RB""!"4)!!"
NL*d$FMKJ!!#S(J!!I!3"eR`F"c4)"RY&J%%!&$KJ!!")"RY4J%%!&$KJ!!a)"RY
GJ%%!&+JI!!+SI`!%I)$L&$J$rramJ`FdI!3(0%J'JIf!33!8Ik2VH%J'JJQ!33!
8J!%!@$JK!&#lJIr`I!J$TNk!!#!!!!!!!!!!!!!!!!#r`IriI!J#TRaq'hKmhc0
iI+-VH*!!!3!)P#(rX%J%&%9J!!!!9'!'2d##!&bSR`!#Im2cH$J%!!'`!3!kU"m
!!+L"!$U`!3!i1!3!%+L"!$L`!3!q1!3!%,!"!$a)"SVpJ%%!&%J'LD@!33!8J'-
!!$L"!$JiS!2[1-!!!%J$'T9J!!!!J!%!@$JK!&#l`IriI!J$TNk!!#!!!!!!!!!
!!,p"rqKm#!+QI*SMH$[#8FamZbYiI0`cH$ZJ!!'3!!%!#*3Krj!!N!"K!)L!IJ!
!J)3!!)!D!!53!)%!2*!!!3"!5!D+IB""!"4)"SNPJ%%!&(q!"c@$i`!!3B)!1$J
!!!#cB3!iJ,i!!(qHihL`!3!k1'%!2)#"!$K)"SRpJ%%!&+KK!%)i!rrFX!%!3NJ
!!!Jl`!2[U(S!!Rq!"c8i!`!"X!%!4UJD!!#SB3"'X!%!4$J$!"#SB3"%X!%!5MJ
$!"#`!3")3B)!'$KK!%3iJ!!!1+!!!8J'Fi'!33!81'!!#NJ'LS@!33!8Iq2lH(r
&mhJiJ3"%1-!!!8J$'AeJ!!!!5!!!6)"K!)JiJ3!m5!C`UB""!"48CJBq9k!'2R`
'!%"mI"Yi3B)!((rMqhKraI0i1)%!4%J$'8&J!!!!IjhMH$KK!)K)"SQ4J%%!&%J
'LD'!33!89'!'2d##rkaAS!Br3B)!((rMqhKraI0i1)%!4$M!!!")!aN"B!!!!$K
J!!K)"SRPJ%%!&(qMkhL!!3"i1#%!F(`)!kDl3IrS6S!!)!!!!!#r)IrNI!J#TML
L9I4mQ50i1m*@bM[L8E4mfM0iI2XlH*!!!3!)P#(rN!#!T3!!N!"K!)JS"3!!3))
!$$KJ!!")!!)i1'*@Z(mN"c5S!`!!I!3!!%'!!!`iB!!!5!!#()"P!!"8J!JmJ*m
!!(`$!Uk!C!!!(!!%&RqM!K4rSqYi5!34T@!!!!"8B!Br3B)!$$KJ!!")!!(N9f!
'2d##!"L)(30b+!!!!%'#!!`iB!!!5!!"b)JG!9NX!!!"3B)!+%#!!"!X!!!!3)!
!&%J!!#3X!!!$3)!!(%J!!"3lJ!2Y5!!!%$Z!!qj)!!!)1i!$m)#D!!"AB!BrJ(S
!"*!!J3"!N!"K!%5SJ3"!U'%!4$L%rrmi!rrrX)%!3,!"!%4!JJ!NL*d$FMKK!%#
S(J!!1+!!!(`%!GCm"!Fd5!CaIB""!"5!JJZ`1'%!1%J%$BeJ!!!!L*d$FRmPbhL
S(J!!IiEMH)"K!)Km"!(@1)%!3(`("c4,rrce9'!'2d'#!2#)(3&C9!!'2d'#!!`
S!!!#3))!L$KL9d!iJ!!"1'-!L8J'FI'!33!89'!'2d'#!'b!I`!!11!!!$M!!!#
!S`!!5!!!))J&!9NS!!!"3))!$$MR!!&)!!!J1+8%&MM'!!%iBPDdI-3(0+J$!!"
m"!!!3B$re(cJ"c9"JJ!J1'!$pML!!r%iS!!-1-!!!%J%2'eJ!!!!5!!!@(qMkhK
r*-Yi1+!!!$M!!!!ii!!"13!!!%[reSNiBPE[L!-!!#J!!!""JJ!N1)*@C$KJ!!!
iSPCJ1-!!!6L%!!Bii!!)5!50l@!!!!"rSqYi5rrAX6KK!$K)"!bjB!!!!$KJ!!#
!!3"i1#%!F,XKrq4m#!1Q6S!!)!!!!!!!!!!!I!J#TMMJ!!#3!!%!#*3Krm#3!'%
!@%[rr9f!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!#rBIrXI!J#TMML9I4m[#Yi1q*
@bRbE)hKmh60iN!!"!!L8)IqJJ+F!!*!!B3"i+!8!!%##!!`iB!!!5!!"[$KL9VK
rC!FdU!-!!(`%!!""J!!-1'!!!%J!!D#!C3!!9)!)2$L#8E4m!`+ZJ'3!!"`!""D
!B`!!Im-#&(r$mhK)"!lPB!!!!&4J"Mp"JJ!-1'!!!%J!!@5!R3!!1'!!!)!G!!5
3!)%!2*!!!3"!5!Ce-B""!"3iB!!-5!Ce9B""!"4r`r0i5!D$ZB""!"5SJ3!q1+!
!!+JI!!"mC"S8X'%!3MKK!$b)RJ0bI!3"eR`%"c4)"Qm&J%%!&)"K!(JiJ3!m5!C
X9B""!"48B!Br3B)!G$J!!!!iJP(-Xf%!1$KK!$b!T!!!X!%!1S#"!$K)"S6TJ%%
!&+L"!$iiB3!mU0m!!$LJ!!!i"!!@X!%!3SJH!h*m!$(@I!B#&(`%"c4)"QkCJ%%
!&)"K!(KrC0YiIiAMH$M"!$`ii!!"5rrlc8J!!(L)RJ0b+!3!!%'#!'bSI`!!1!6
rri#p!!!iJ3!mJ0d!"(`$!GD!B3"iN!#K!$bSS3!qN!$"!%"mS#S81!Arr,!"!$k
SS3!q1!8!&V!"!%*)"QZ*J%%!&&4J"Mp"JJ!FJ'%!H(pNfhKrKH0i1-%!2$MJ!!&
,rrY91'!!!)!"!'Ji)3"JZf(rl(`)!kC1J!!J!!!!!!!!!!#r!IrJI!J#TM[#Afa
mR50i1q*4Y(cB-hL3!!%!#*3KrS#3!'%"Q)"L#[4)"Q["J%%!&(aJ'hL!BJV`I"`
$H%J'Dkf!33!8I'!EH)"L#Zam'`0i5!CVQB""!"4mB"YiJ')+k(`D!hK)"QZ&J%%
!&$L#9I4mH4YiJ-3!!#J'!!"!JJ!-1'!!!%J!!`JiBPDiIk8(0+J$!!"m"3!!3B!
!$$KJ!!")!!,X1)*@h&5J#$b!I`!!Xk3!!)#'!!#!S`!!I!3#VK`!""CrT3)85!C
ZXB""!"4rSqYi5!3-I@!!!!"8B!Br3))#R)"K!CKr"-0i1+!!!$M!!!!ii!!!5rr
iQ94J"Mp"JJ*m1'%!2%J'D[Q!33!8J(i!!%J'Ddf!33!8J(i!!%J'DI'!33!81)%
!3%J'DIf!33!81'%!3%J'Hf'!33!81'%!4%J'He@!33!81'%!8%J'Dd'!33!8J!-
!#UL"!%53!!%!6)!$!!CmJ`FdU+%!6*!!!3")I+!(0(`$!!"!J3!FI!3S8$KK!%"
m"3Fd1)!!!%J'E&'!33!81'!$k6L!!!")"#84B!!!!(ai'hK)"QUeJ%%!&(m$`hK
)"QPCJ%%!&$L"!%")"$qYB!!!!$KJ!!&)"R(jJ%%!&$KJ!!P)"R)GJ%%!&(m$`hJ
iJ!!"5!CUeB""!"4r!m0iIiAMH$L!!!K)"$dKB!!!!(m$`hKrCGYi1)!!!dJ%23e
J!!!!I`2$H(pPfhJiJ!!&5!3mq@!!!!"r!m0iIdA6H$L!!!G)"$cPB!!!!(m$`hK
r*FYi1)!!#NJ%20&J!!!!I`2$H(qPkhJiJ!!#5!3pr@!!!!#!R3&11'%!B$LJ!!&
)"%$jB!!!!(m$`hJiS3"J1)!!"%J%2G9J!!!!L"d"3#J!!!""JJ!FI`2$H$Lp!8!
iJ!!'5!3pY@!!!!")!!!X1'%!B$L!!qJiS!!55!CUAB""!"4r!m0i1+%!B$L!!!C
)"$f*B!!!!+LG!8TmJ!Fe3)%!+$aJD@-iBf`i5!3*A@!!!!!mB%P$U*d"5MKM6L0
)"!P*B!!!!(m$`hK)"QIpJ%%!&%J'D[@!33!81)%!1$KJ!!")"QX9J%%!&(m$`hK
)"QXKJ%%!&(q$ihK)"QY&J%%!&(pMfhK)"QXjJ%%!&(p$dhK)"QXYJ%%!&(mMbhK
)"QXKJ%%!&)"K!$a)"QXYJ%%!&)"r!!")"Qr4J%%!&$KJ!!#!!3')1#%"J,X"rq"
m#!1Q6S!!),m"rq"m#!+Q1b*4c$M!!!!iBPDd1)*@f$X!!!%liPEFN!!"!!L8)Ip
JJ,N!!+N$!!#!j3!!J)3!!(d!"c5$T`"%J+F!&)"R!"L``3!qN!"K!&bV33"FN!#
K!&Kr3`FdI!-!!+J"!&L3!)%!1%#"!!Kp'N0iI"`$H%J!!@#cJ3!m1'%!@)#j!!#
!J3!m5!CrfB""!"5!B3!i1)%!@%J'C`Q!33!89'!'2d'#!5bS(`!!Ii-(0(`$!!"
"JJ%`J(d!!$Y!!!#$)`+BUf-!"%J!!2"r3!FdJ*N!!"aJ!"Ji!!!$I)3D&(`*!kB
iS3"F1)6rr)"N!!5%"!!)N!"P!!58"3!)3J$rm)2"!'`S(J!!3B)!V)!"!'#!S3"
BN!!"!%L!J3"FU-%!5S"K!'4m`!FeN!#K!&#3!)%!9*!!B3"-3B)!%+J"!&Tm"J)
8X!%!8UKK!%jmB!Fe3B)!%+J"!&Tm!`)8X!%!9S"K!$JiJ3"35!CQ2B""!"48B!B
r3B)!4)###l!iB3"!5!3%j@!!!!#!B3!iIi6MH(qPkhKrc20i1-%!8%J'QRQ!33!
8I(JEH$KK!%")"!8*B!!!!%J!!"Jl@J!"Id-(0(pJ"c4m!`!!3B$r#,1I!!")!!!
B1j`!!Aq$"c4r3!FdI!-!!%'!rTKA!`BqJ!%!U$JK!+"m#!1QZ`(ri%k!!#!!!!!
!I!J#TMb!E@Q3!!%!#$bJ+LSiK(0cP#(r`$LP+LSii!!!1-%!2$NK!$Jj!!!!5!C
rKB""!"4mB!Fd,!$j@d##!!`iB!!!5!!!'(aJ"c8i!2P83B)!#(aJ'hKm!`0iJ!%
!5$JK!%"m#!1Q6S!!)!!!!!"m#!+QN!!"!!L8)Iq`5rrrKAaJ"c9"JJ!)5!!!+$K
LAf`iS3!i1)!!")"M!!",rpA91)*@j6J!!!%iB!!!Q!3!!)!"!&Ji)3"3I!J$TNk
!!#"m#!+QN!!"!!L8)Ir!5rrr0AaJ"c3J!!!!I!!"%(aM!$L!!3")1#%!3(`)!kC
1J!!J[i(rm(`)!UCmI"Yi1q*@&$KJrrmiJ!!!1+!!!*!!!3!)P#(qX%J'NA@!33!
8I'!(08'#!!`iB2P85!!"-$b!,5dmS&4&Ii2MH$L%,5diT9K81-%!1$MK!%%j)3!
m13!!rdJ'IKQ!33!8I(iEH(r!"c9"JJ!)5!!!p)!"!$`X!!$r3)%!$$KJq94)!!$
JQ!%!3$KK!%!iJ!!!5!D'#B""!"3iJKXB1'%!3%J%2YPJ!!!!9'!'2d'#!!`lJ!!
"5!!!,$L#'b!iB3"!5!3qZ@!!!!"8B!Br3B)!$$Z!!!*)!!!-1'$j9%J!!)5!I`!
!5!CRjB""!"4mI4YiIk-(0(q!"c4m!`!!3B)!B)"r!!"rK10i5!CbLB""!"5!I`!
!5!CbCB""!"3iBPbkIi3(0+J$!!"m"!"3I!!!0&3$hMj)![0PB!!!!(qMkhKrK10
i5!5H&@!!!!!iBPpX1)!!!B"M!!",rmq"Im2cH)!"!9Ji)3&3Zi(rm(`)!kC1J!!
J!!!!!,q"rr"m#!+QI(`EH(bq+hJiB2rr1)!!!$LJ!!#3!!%!#*3KrV")"SreJ%%
!&(aJ"c9!JJ%i2)!Y,6bJ9%9rJq0i1)3Y,6LP@&3i`3!i11%!36NK!$`j!!$r5!C
mSB""!"4mIaYiIq!(08##!35!!3!m,!!!rd#"!!`iB2P85!!!p*J"!%!lJ!!!5!!
!c$KL8E4rJ!Fd(!!%&S"M!!#!J`!!1'%!3$LJ!!"rT!)8Ik6VH$M!!!")"Ql&J%%
!&&4J"Mp"JJ#3!#`H!!""JJ!NIk2VH(q%ihJiS!!!1-!!!6MJ!!!j!!!"5rr+l8J
!!#"rSqYiIi6MH$LJ!!%i`!!"11!!!$N!!!&,rmV01'*@liJ$!!!S!!!!3B)!*$L
#9Q3iB!!!1+*@B$M!!!%iK!!'11!!#%J%JM&J!!!!1'*IE$L!!!H!B`!!5!-Cc@!
!!!")!!!J1j`!!6KL9V4rK!FdU!-!!(`%!!""J2mS1q$j9(rMqhL!!3&B1#%"8,Z
"rr"m#!1Q6S!!)!!!!!!!!!!!!!!!!,l"rpKm#!+Q1m*H3$cJ,5emQ#0i1d*DY$c
!9%9mZ5Yi1f*IDMZ#@U`lSPEdI(FEH$[LAf`iKbdY1X*D[$LQ@&3j!!$rN!!"!!J
i!!!!P#(mm,!H!!!i`3"!11%"j$NK!%4)"RX*J%%!&(aJ"c9!JJ*iJ!%!4#`!!2p
!J3!-1'$j9%J!!`3mB&4&1!0B9$b!8e@3!!%!3(lMZhJiK%*-1+%!3$M"!%4)"RV
GJ%%!&(aJ"c9!JJ")J'%!4#`$!!""JJ!m5!CS-B""!"4mCaYiJ3%!4$b!8e@3!2B
"j$bJ9%9qilYi1)4#6$LP@&3i`3"!16B"k%J'HRQ!33!82'"QFcJ$Fb!mJ%P1N!!
"!%"qilYi1)4-3cLK!%!i`3"%5!CkDB""!"4mB!Fe3))!X)!"!%3X!!!!3B)!T#J
!!%C!J3!-1!!!4T!!!3"%2)"*6S%"!%3mS'CcIZ1lH$L%6%-iTA-J1-%!3$MK!*`
j)3"%5!Ck!B""!"4mB!Fe3))!B$KLAe!ii!!"U-%!R$LL9Q5!!3#H1)*@B*MM!!#
!I`!!X-8!"T!!"!!!5!CIdB""!"4)"RRaJ%%!&&4J"Mk!I`!!I!!!0&3%hMj,rmm
KX(i!!+JH!!!X!!!!3))"H(lMZhK,rrSTI'!(08'#!!K)!!'J,"N!!N##!2JiBPE
T1!!!!Aq%ihLB!`!!1'%"j$XJ!!-iS!!)5!CM2B""!"3iI!!"1)!!!NJ'B[f!33!
81)*FYMLJ!!!i`PpTL!3!!*KQ!!!S!!!!Q,X!!%'#!+3mJ'&N2+"`FhlMZhJiK'4
b1+9Z)$M"!$`ii3")15%!1$N!!!K)"RP*J%%!&(aJ"c9!JJ"J1+!!!$KK!15BS3$
N1!!!2*!!B3"N1'%!5$L"!'#3!+%!Q*!!!3"J5!CV(B""!"4mB!Fe3))!,)!D!!!
S!!!!3))!))!D!!3S!!!!3))!&)"K!%L!!3"-N!"k!!#3!"S!"$J!!!'B'`!!1'!
!!%J!!+3iJPpS1!!!!*Xp!!!iS3"3J(m!!*J%!!!iJ!!"5rr2F6J!!!!X'3!#Q"d
!!%'#!!`X'3!$3))!'$L#9P)i!!!!1'*@8CJ%!!#B!`!!U"i!!#`!!!"!JJ!31'*
J%+KM!!")!!"!+"J!!%'#!$5!'!!%+!!!!%'#!#JmJ'9b2+"cD(m$`hKra[0i1)4
bEMLPEh)ii!!#5!D*'B""!"3iB!!!J!%$'$JK!a#k`IrBI!J$TNk!!#!!!!!!!!!
!!,qKrr4m#!+QI(dEH$[L9Q4mRL0i1'$rrcL!!!#3!!%!#$LJ!!#8)Ie`5!D+`B"
"!"5`B3!iU!%!1#`!!!"!JJ(B2)!Y,6bJCR0rSqYi1)3Y,6LPFb!i`3!m11%",$N
K!%!j!!"'5!ChCB""!"5`B3!iU!%!1#`!!!"!JJ")U-%",$LK!6+!J3%Z1!!!!,$
"!-BiB3"%N!#K!&D``3"DN!#"!(5`!3"J5!CMlB""!"5`B3!iU!%!1#`!!!"!JJ&
F5!!!`$b!,5dmS&4&Ik2VH$L%,5diT9K81-%!2$MK!A8j)3"!13!!rdJ'GZ@!33!
8X'%!1+J"!$JX!!!!3))"()"K!%!X!`$r3)%!$$KJq94)!!&31!!!!*KK!A3iJ3&
dX!%!@MKK!%53!)%!9V!"!'#3!!%!G%J'Bf'!33!8X'%!1+J"!$JX!!!!3))!d$J
"!A3iB!!!N!!"!-)i!2rrX'%!aMKK!,#`!3$-5!CQeB""!"5`B3!iU!%!1#`!!!"
!JJ#FU'%!aNJ%0S&J!!!!1)*@VRaS"c5S"!!!I!J!!%#!!(3iBP'`1!!!!S#"!(4
m"[j`J1-!!(`%!"!iBPD`9)82rS#(!!!F#!"NI)3#&(bQ+43i!!!"I!8#&,!$!!!
iI`!+U!3!@,!I!!C)"$FpB!!!!$KLAf`iJ!!!J!%!G$LL9Q#!B`!!N!!&!!",rmX
p5!!!$$J!rmL`!3!iU!%!1#`!!!""JJ!m+"i!!%'#!$5!(J!%+!!!!%'#!#JmJ'9
b2+"cD(r$mhJiK(*Z1+9[FMM"!$Jii!!#5!D'SB""!"5SB3!iJ!%#Q$JK!T!!Zk(
rp(`)!kC1J!!J[k(rp(`)!UBliPpXI(dEH*!!!3!)P#(rS$KK!$K)"P`eJ%%!&)"
r!!")"Pb*J%%!&%J'C0Q!33!8I(iEH%J'E5@!33!8J(m!!%J'@aQ!33!81)%!2%J
'@b@!33!8U+%!3MKK!$bSJ3"!1+Arm6J%rr'`S3!qX!%!2%J'E3'!33!89k!'2d'
#!"b!I`!!5!CDeB""!"4)"Sd0J%%!&%J!!"!iB3!m5!CNPB""!"4r`r0i5!CY@B"
"!"4r`r0i5!CNVB""!"5!B3!i5!CH+B""!"5!!3"S1#%!B,ZKrr4m#!1Q6S!!)!!
!!!!!!!!!!!!!!(`)!UD3!!%!#*3Krm",rr6eI'!(08'#!!K)!!")1'!!!$L!!!&
)"!*GB!!!!$KK!$K)"PXaJ%%!&$KLAf`iJ!!!J'-!!%[raSf!B3!i5!CGYB""!"3
iB!!"5rrqZ6KJ!!#!!3")1#%!3(`)!kC1J!!J[m(rq(`)!UBmJ#dY1q*KcMbJFfJ
i`Q(311!!!C!!!3!)1!!!!(aq'hL8)Iq`1)3Y,6LPEh+BjJ!!1-%!3$MK!$L`(`!
!15%!2$N!!!*)"R1YJ%%!&(aJ"c9!JJ!-U!%!1,!I!!"r`r0i5rrd+B!"!&Ji)3"
3Zm(rq(`)!kC1J!!JNq(rr(`)!UBmJ#dYN!!"!!JmS(0SI(mEH*3Krl!iK#dY1+9
[FMM"!%!ii3!i15%!2$N!!!*)"R0&J%%!&(aJ"c9!JJ!3U'%!1%J$9-PJ!!!!Iq2
lH%[rmlf!!3"B1#%!8)2Krram#!1Q6S!!)!!!!!#6iIrmI!J#TMb!,5f3!!%!#$b
JFfKmIaYiP#(rX$L%,5diT@pb1-%!3$MK!$Jj)3!m13!!!NJ'FY@!33!8I'!(08#
#!"!iBQ!01!!!!CJ$!!"rirYi5rrc6B!"!&Ji)3"3Jq(rr(`)!kC1J!!J!!!!!,r
"rrKm#!+QI(iEH(bI)hL3!!%!#(r!4R"8!`BqP#(qN!!iJ3"F5!3kr@!!!!!iB3"
F1))6i%J%-ZeJ!!!!9m-'2ML"!$K)"$Y0B!!!!$KL%q!iS3!i1)!!!NJ%,mPJ!!!
!1'%!A$L"!$K)"$+jB!!!!(rMqhJiJ3"F5!3cH@!!!!#)(`!!I!3(0(`I)+iS!!!
%3)%!*#J!!$"!JJ!FI(mL&)J$rrmS!!!Z3))!$$J%rrkB(`!!J!%"H$JK!A#l`Ir
iI!J$TNk!!#!!!!!!!!!!!,l"rpKm#!+Q1)*ICcKJ!!!lBPEP1d*4R$Z#AfJlSPp
X1m*@B$[L9d#3!!%!#*3Kri#)"!!!Q(X!!#J!!!""JJ"3Q'3!!(p&dhL!I3!!1)!
!!8[rb)%iBPEdL!-!!#`!!!0!JJ!J1)*@8MLJ!!!iBPC41!!!!CLN!!#BS`!!Q"X
!!)JE!!!S!!!!3))#b$KL9YmiS!!!1)*D[)J$!!!l*!%q+!!!!,#N!6j"JJ!N2'!
!!Ap%dhJiBrrr1+!!#MM!!!")"PjKJ%%!&%J!!"JmB!!"Id66H$KMrrp)"PjKJ%%
!&(p$dhK)"R5PJ%%!&&4J"Mp"JJ"3Id26H(mPbhJiJ3!m5!CdSB""!"48B!Br3B)
!0)"K!$a)"PDpJ%%!&%J'DX@!33!8,!-!#%##!K#!B3!mIdA6H+LC!!",rmHC5!!
"r$KL9Q3i!!!!X"N!!(r&mhJl!`!'J[i!!(m%`hLU``!'1'!!!)$I!!Jii!!"5!4
fa@!!!!"mB!Fe3B)!%$J!!!5`'3!!5!!"Y)!H!!"m&`!!3))!&+JB!!"q``FdI!-
!!%'#!"#!I3!!1)!!!%[raC@J'J!!+!!!&d'"!B!iBKXS9!!31RaM!#jmD31Q6S!
%))JF!!!S!!!!3B)"B$J!!!#B(!!!1(m!MML!!!")"PQ0J%%!&&4J"Mp"JJ!SJ(d
!!$LK!%!iJ!!"5rr'b6KJ!!!i!!!"Q(`!!*JE!!")!!!m1'*IBSJ$!!!S!!!!3))
!,)"p!!")"P@GJ%%!&%J'@*@!33!8J(d!!%J'9BQ!33!85!D$FB""!"3iBPpQL!-
!!#J!!!""JJ$81'!!!$L!!!")!reaB!!!!%J!!-"r3p0i5rr688J!!,4r3p0iIb6
,H%[rei&)!!#N1'!!!8[rqG9)!!#BId26H%J'CTQ!33!8L"X!!#J!!!""JJ#!1!!
!",!C!!")!!"dJ(S!!P4J!Fp"JJ"S9'!(rd'#!&3iJPES1!!!!6KJ!!#B"!!!1)!
!!%J$r2&J!!!!1'%!1%J'9F@!33!8J(d!!$L!!!",rm%PJ(d!!$L!!!G)!`c*B!!
!!)"K!$K)"PJpJ%%!&)!D!!*8!`Iq5rrj2BJE!!!S!!!!3))!%+JC!!!X!!!%3),
p3)!"!)Ji)3#!ZX(rf(`)!kC1J!!J!!!!!!!!!!!!!!!![k(rp(`)!UBmB("#1m*
@A$[L9d!iBh4c1)!$k*!!!3!)1!!!!*3Krl#3!"i!!%J$pA9J!!!!I(dEH8'#!#4
)"Q&&J%%!&)#G!!"rSqYiJ!3!!*!!(J!!5!CK4B""!"3mB%0"1'0-6$L!!qK)!r8
jB!!!!(ap'hP"JJ!SJ(d!!(rNqhJiS!'@5!CAYB""!"4rSqYi5!CJ`B""!"4)!!"
N1)!!!%J!!"KmJ!Fd9!!31MKJ!!"mI`%Z1)3!!Ab!"c3X!!!H3B$rj$KL9Z8iS!!
!1!!!!C!![`"i1)!'"*!![`#!X*m!K*Lr!)DB[`#(Q"m!L*Lr!)QB(`#+Q,m!LjJ
$!!#!!3"B1#%!8,ZKrr4m#!1Q6S!!),p"rqKm#!+QI*XMH)2L#TJmJ'CbI(SEH$L
%B@dlS!!!1i!!!$KJJ!'3!!%!#$J!!!!iS!!"P#(rB*!!'`!!1-%!1%J'9pQ!33!
8I(i(08##!##!I`!!1)%!1%J'9pQ!33!8I(dEH8##!!Jl`1bJ,"i!!%##!#L!I`!
!Ik6VH(p&dhJi`!!!5!CAaB""!"4mI"Yj3))!#$[!l+!X(J!!3))!+)"r!!"rK10
i5!CAZB""!"53!(X!!)!E!!!S!!!!3))!#$[!l+!X(J!!3))!()"l!!")"PHTJ%%
!&&4J"Mp!JJ!)1m$XS#`H!!""JJ!JJ(X!!#J$!!""JJ!85!CAQB""!"3i!!!!N!!
E!!!S(!!!3B)!%(q$ihK)"PGpJ%%!&#JG!!""JJ!3Ik2VH%J'9fQ!33!8Im2cH)!
"!+Ji)3#JI!J$TVY"rqK1J!!J!!!!!!!!!!#rSIrdI!J#TRap'hJli!!!N!!"!!L
8)IiJ1'%!1%J'AN@!33!81!%!a$KK!(b3!!%!4$J!!$b3!'%!H$KK!$JiJ3"!N!!
"!%")"Pi&J%%!&(aJ"c9!JJ$%1'%!I$L!!!")"3b&B!!!!(aJ"c9!JJ#XL!%!a#J
!!"T!J3!-1!!!'TJ"!-3iJKZ)1'%!a%J%+rPJ!!!!1m%!JRr$mhJiJ3$%5!3XY@!
!!!"AS!Br3B)!5$c!G(5SB3"m21"84B#"!(jraI0i1-CiG$MR@&4)"PE"J%%!&(a
J"c3X!2r33))!#$KJ!!"mB!Fe3))!-$[J!!&)!!!S1'%!I%J$BjeJ!!!!I'!(08#
#!"3iB3!i1q!!!8J'Ch@!33!8Iq2lH)!"!HJi)3(JI!J$TVZKrr41J!!J!!!!!*2
Krram#!+QN!!"!!L8)IkJ1'%!6$J"!-L3!'%!N!!iB!!mN!"K!)`iB3!mN!!"!-4
)"Pd&J%%!&$KK!$`iJ3#-5!CFhB""!"3i!!!!1'%"%*!!!3"%N!"K!-53!!%!5%J
!!-3iB3!m1)%!4$LK!$K)"QF"J%%!&(aJ"c9!JJ#SL!%!1#J!!!"!JJ#F1'%!4$L
"!)a)"Pb0J%%!&(aJ"c9!JJ#%U'%"%+J"!-Km!`!!3))!G)"K!4+!!3$+I!-!!%#
#!'3iB3%@1)%!cNJ%+`eJ!!!!9'!'2d'#!%`iB3"%5!CQHB""!"4mB!Fe3))!1$[
J!!")!!!N2'!!!6L#8C`iBrqr1+!!,6M!!!")"PFGJ%%!&$[r!!&ri!Fd,!!!"8'
!rpJiB3"%5!CQBB""!"4mB!Fe3B,r-)!"!@Ji)3&JJq(rr(`)!kC1J!!J!!!!!!!
!!!!!!!!![m(rq(`)!UBiBKZ3!$[J!!#3!!%!#$J!!$+8)IhJN!!"!$K)"P34J%%
!&$L"!%",rr`&,!-!!%##!23iBKZN5!C6pB""!"4mC"YiJ'%!3%J'9)f!33!8+!-
!!%'#!0"mE"Yi1'!!!8J'Jlf!33!8I(iEH%J'9HQ!33!8I'BEH(r$mhJiJ3%-1+!
"!%J'9T'!33!81')EY%J'8jf!33!81)%!2%[rqj%X!`!!3))!J$KL'mK)"P1"J%%
!&(aN'hL!B3!m5!C8'B""!"3S!`!!3B)!A(aX'hJiB3%-1+%!4$M"!$JiJ!!!5!D
$2B""!"3X!`!!3))!1$L!!!")!!!N9)!31MKK!%4m!`!Z,!!!8%##!!`li!!"5!!
!&$L%!!'!!3!iI!3!!%'!rpKrirYiJ!%#+$JK!L"m#!1QZm(rq%k!!##r!IrJI!J
#TML#'r"mH"Yi1i*J&$ZLAf%iK2rm1m*IC6[L8Cb3!!%!#$J!!!4m#31QP#(p8$L
K!'L!C!!%K!3!#*!!C3!%P!8!#%)!rr!iiK`S1b!!!$KL9d#!K`!!J-F!"$YM!C'
!T`!)If2EH)!(!!b3!)%!A$L!!!#3!-%!B*!!S3"NN!!"!'K)"P&PJ%%!&$LLAdK
8B!BqI!F!0)"P!!!iJ3"FJ-8!"$J"!'b3!'%!4$LJ!!%iB!!#N`%!4&6ihMk3!-%
!5*!!S3"8N!#"!&L3!'%!6*!!!3"35rrpmCKq!!"rBpYi1)!!!8J'83Q!33!89'!
'2d'#!"L)(J!!+!!!!%##!!`l)2rr5!!%%&F!"Mp!JJ3)1')F1%J'8H'!33!81)%
!2%[rqG9mH4Yj3))$l$KL(%a)"P(&J%%!&(aN'hL!B3!m5!C5AB""!"3S!`!!3))
!$$XJp3j)!!"3I'`EH$M"!%!iB!!!1)!!!$LJ!!")"S&jJ%%!&(aJ'hJiBKaJI"N
$H%J'8A@!33!8I'3EH)"K!$a)"P)0J%%!&(ak'hP!JJ!)1b$e$L`C!!"!JJ0XJ'%
!3(p-dhJiJ3"81+!!!$M!!!!ii!!!5!D")B""!"4mH4Yj3))!+$KJ!!",rrTY9'!
'2d'#!!`i!!!"Q"d!!$J!!!'B(J!!5!!$)$KJ!!",rrT*9'!'2d'#!"Ji!!!"Q"i
!!$XJ!!#B(3!!5!!#r$KLAi#!!`!!9!!%2L`!%"""J!!`J'%!3(p-dhJiJ3"81+!
!!$M!!!-ii!!!5!D!RB""!"4mH4Yj3))#`%J!!,`iB3#-1)%"M$XJrrp)""%pB!!
!!&4J"Mp"JJ+J1'%!M(aN'hK)"P(GJ%%!&$KK!BamC"Yi5!C4cB""!"3iB3'-5!9
55@!!!!!i!3'-N!"K!(!iB3#-N!!"!(4)"9)aB!!!!$J"!)b3!'%!J)"K!%"r600
iN!!"!)3iJ3"81+%!6$M!!!)ii!!!5!D!"B""!"4mH4Yj3))#'$J!!!'B(J!!1'!
!!%[rq8P8B!Br3B)!%$J!!!'B(3!!5!!#"$KL((K)"NrGJ%%!&(aN'hL!B3!m5!C
3GB""!"4mH"Yj3))!#$XJp3iX'3!!3))"e%J'5f'!33!81d-!Y$KK!$K)"N[KJ%%
!&$KJ"#XiJ!!"5!3'J@!!!!"mHaYj3B)!E%J'5Y'!33!85!C0bB""!"4rBpYi5!C
-$B""!"4rBpYi5!C+XB""!"4)"PXTJ%%!&(pMfhK)"NfeJ%%!&(pMfhK)"NU4J%%
!&%J'@b'!33!8If2EH%J'@bf!33!81)!!!%J'@cQ!33!8U(`!!(aJ"c9"JJ!85!0
FV@!!!!!i!!!!X"`!!)"K!%"r$-0i1))FR$M"!%3iS!!!11!!!%J'IY@!33!8I(N
EH8##!-3iB!!!5!2UX@!!!!!iB!!"5rri&8J!!$`mB!!"Iq6lH$KMrlmiS!!H1-!
!!%J'88Q!33!82'!!!ArNqhJiBrqr1+!!(MM!!!")"P%YJ%%!&%J'5M@!33!8I!2
33%'!rl`S'`!!3B)!&(pMfhK)"Nd"J%%!&$YJ!!",rrMG1')Fm%J'6P@!33!8I'3
EH)"K!$a)"NlYJ%%!&(aX'hP"JJ!8J'%!3$L!!!K)"RiGJ%%!&$KJ!!%iJ!!!5!5
5(@!!!!!S'`!!3B)!%(pMfhK)"NbKJ%%!&)"K!$K)"NcGJ%%!&%J!!"3iB!!!5!C
)CB""!"4,rre-Ib2,H)!"!VJi)3+`I!J$TVX"rq"1J!!J!!!!!!!!!!#6iIrmI!J
#TMML(33iJ!!"N!!"!!L8)IqJ1!%!5)"R!!#3!!%!4)$(!!5!T`!)J!F!$*!!B3"
)1')F1*!!`3"-N!#K!&#3!!%!9*!!J3"!5!C0HB""!"3iJ3!i5rreEAar'hP!JJ$
J1')F6%J'69f!33!8I'3EH)"K!$K)"NheJ%%!&#J$!!"!JJ!)1q$e$L`I!!"!JJ#
`I'`EH$M"!$`iB!!!1)!!!$LJ!!")"Rd0J%%!&(ar'hP!JJ#-1')FB%J'63Q!33!
8I'3EH)"K!$K)"NfKJ%%!&(aX'hP!JJ!)1q$e$L`I!!"!JJ"FJ'%!2$L"!%!iS!!
!1-!!!$MJ!!")"RbjJ%%!&#`$!!"!JJ!i1')Fm%J'6,@!33!8I'3EH)"K!$K)"Ne
0J%%!&(aX'hP"JJ!8J'%!2$L!!!K)"RapJ%%!&)!"!'Ji)3"JJq(rr(`)!kC1J!!
J[i(rm(`)!UBiiP'`I(iEH#J'!!"mR#0iI,mVH*!!!3!)P#(q3)"R!!"ra`FdJ'-
!!+J$!&KmC`"3-!2rrh`!'4"8(3Bq3B)!'(rMqhKma$0i5!3L`@!!!!")!!!-1!!
!!*JI!!!i!3#NNi%!R*!!!3"+J!%!R$L!rrqc`3"11'%!1,#"!&53!!%!D%J'6IQ
!33!8I'!(08##!%KAS!Br3))!%)!"!'JX!!!#3B)!0$KK!+3iJK2N5!3KM@!!!!"
rjIYi1'%!T$L!!!&)""jjB!!!!)!"!'JX!!!#3),rQ&HJ"Mp"JJ!F1')G&(rPqhJ
iJ!!"5!3H8@!!!!")!!!BIqAlH$KL%q3iJ!!"5!3H1@!!!!#!!3()1#%"`,Z"rr"
m#!1Q6S!!)!!!!!!!!!!!!!!!!,pKrqam#!+QI(XEH(bF)hJlS2r9N!!"!!Ji!!!
!P#(rX*J$!!")"PbpJ%%!&#J$!!""JJ"F5!CFaB""!"4mIaYj3B)!6$L!!!")"N`
aJ%%!&(aq'hP"JJ!X2-!)!(pNfhKrK3Fd1-B"!%J'6F'!33!8Im2cH%J'5ef!33!
81k!!!(rMqhK)"NY0J%%!&(qMkhL!!3"B1#%!8(`)!kDlBIrX6S!!)!!!!!!!!!!
!!!!!!,q"rr"m#!+QI(`EH$KL@VamR50i1'-"MT!!!3!)1!!!!*3Krf#B(!!!1)%
!1%J'5e@!33!8I'!(08##!'!iJ3!i1'!!!%J'5Rf!33!8I(iEH8'#!%JiJ!!!5!C
,FB""!"4mIaYj3B)!+$c!#!"rK10iIk8(0$M'!3")"Nd"J%%!&(rMqhK)"NUGJ%%
!&(r$mhK)"NU4J%%!&)!"!+Ji)3#JZi(rm(`)!kC1J!!J!!!!!,r"rrKm#!+Q1q*
@lT!!!3!)P#(r`)JI!!!S!!!!3))!)$KL9d!iJ!!#1'-!L8J'5+f!33!89'!'2d'
#!'`i!!!!2'"*ETJI!!!iBh0,1)!$k%J$jL&J!!!!I(iEH8'#!#K)"PLCJ%%!&&4
J"V9!JJ!-1!!!!CJI!!"r`r0i5!C4TB""!"5)(`!!+!!!!%##!"JiBPEP1!!!!CJ
$!!!iB2rC5!!!#$KJ!!#!!3")1#%!3,["rrKm#!1Q6S!!)!!!!!#rSIrdI!J#TMK
LAfBl`PB%1q*A3*!!!3!)P#(m8)J$!!!S!!!!3B)!4$KK!8JiJ!*B5rrpXAaJ"c9
"JJ!31'%"5$L!!PK,rrj01'%"5%[rpH8X!`!!3B)!&$J!!!@`!3!i1m!$mdJ!!N`
mB(0j1'0cGML"!$a)"N,GJ%%!&+LI!)5`B3!iI)!(08'#!%5!!3!mI)-(0(`!'!"
!J!!d1)%!5%[rkc%iB3")1)!!!$LJ!!!i`!!!5!C&rB""!"3i!!!"X!%!1$[!!r0
)!!(S1'!!!$L!!!!iS!!!1-!!!%J'4G@!33!8J(m!J#`$!!""JJ"d1!!!!*!!B3"
!J*i!!$KK!%#3!!%!4)#%!!#SK!!!1)3!!8J'4`Q!33!89'!'2d'#!"3iB3"!1)!
!2dJ'5qQ!33!8J*i!!$KK!%!iS3!i5!4eT@!!!!"8B!Br3))!'+KK!$Jl`!2d1!-
!!E!"!$K)!!&8L"m!KM[!!r-S!!!!3B)!E$aJFQ%iBfdJ1)%!2%J'3G@!33!8X'%
!1+J"!$JX!!!!3))!5)!"!$b)I`#'9!"P2R`!'%"!J!!d1)%!5%J'4)f!33!81'%
!5$L!!!!iS!!!1-!!!%J'41f!33!81!!!!V!"!$K)!!$F2'"cHBZr!)FiBh0K1)%
!2%J'3@Q!33!8X'%!1+J"!$JX!!!!3B)!)$aJF()iBfpM1)%!2%J'38@!33!8X'%
!1%J!!#`mB'0`1'0eG$L"!$a)"N%TJ%%!&(qJ"c5`B3!i,!!!"N'#!!Jl[IrrU!%
!1#`!!!"!JJ"FIk!(0#`!!!C!JJ!)1k!"!B"K!$arS!FdI!-!!%#!!$b)[`#(1'%
!5$L!!qP)"N3&J%%!&$KK!%JiJ!!!1+!!!$M!!!")"N3GJ%%!&$J!!!1`!3!i5!!
!$$KJ!!")!!#N1(m!J$L!!"p)"N9KJ%%!&&4J"Mp"JJ!dU+%!1(r%mhJiB!2h1-!
!!$MJ!!&)"!ePB!!!!(aJ"c3X!!!#3))!1$KJ!!")!!"FU+%!1(r%mhJiB!2f1-!
!!%J%$rPJ!!!!Im!(0#`!!r4!JJ!-1!$U8V!"!$JiBQ!8U'-!!(aJ"c9"JJ!-5!0
6M@!!!!#SJ3!i1'!!!%J%LGeJ!!!!1'!!!)!"!lJi)31`Zk(rp(`)!kC1J!!J!!!
!!!!!!!!!!!!![i(rm(`)!UCmI4YiI*iMH$[J!!#3!!%!#*3Kre#SB`!!1)%!4%J
'81@!33!8I'!(08##!35SI3!!1)%!3%J'81@!33!8I'!(08##!0Ji!!"5J'%!3*!
!!3!m1+%!2$L$rkkSI3!!1-%!5%J$9FPJ!!!!I'!(08##!+b!B3")2!1XUbJ!3Na
!JJ#FJ'%!6$`$[UXS!%j$3))!M)"K!&!m!lHY+!"348##!(`lJ3"8Ii2MH$LK!$J
iJ!!"5!C'HB""!"4mB!Fe3))!A$J!!!Km#31Q1,lrr$LFrrb!C!!%K!3!#*!!C3!
%P!8!#%)!rr#!"!!%N!!&!!5J"!!)X!8!#+Kp!!")!e*4B!!!!+L"!$Ji!!!"1'*
IB$[J!!'`R3!!Q!-!!+Kp!!!iJ!!"J+%!4%J'8!f!33!89q!'2d##!##SRJ!!1'!
!!%J%c%eJ!!!!I'!(08##!!Jli!!"Iq2lH)!"!,Ji)3#`I!J$TVZ"rr"1J!!J[Z(
rh(`)!UBp)%&923")8hcC-hJp3&0915P13cN)8%9mGaYiI*JMH(ck1hJifIrmN!!
"!!Ji#N*-P#(pX*!!!3(-1!!!#(`*!kBii3(8N5%"d*%"!G5!CJ!%K!B!#*!!C`!
%P!F!#%)!rr#!"J!%1q%",ML!!!#3!!F!"$["!8Ji'3!'S-B!#$KK!4L`a`!)U-8
!0,$"!5k`J3%dJ)8!1T!!J3&)N!!"!5T)"N@YJ%%!&(al'hKrB!Fe3))#N!!lS3'
+Ji%"@(qMkhJiQ3!'5!3D'@!!!!#!S3%iJ)%"2)"K!8#!!3&%N!#K!-#3!)%!a*!
!B3$)N!!"!-b)'3!'+!!!(8#"!!`i!!!GQ"N!"MKj!!BiJK2S5!3C"@!!!!!iJ!!
!X[m!!$JC!!D3!)%"*$KK!4L3!!%"+T-H!!#`J3%d5!C&(B""!"4mHaYiIf!(08'
#!"L6(J!!1'%"'%J'5CQ!33!8I(XEH(pJ"c9"JJ"-2'"dCArQqhKrar0i1)0YF$K
JJ!8iS!!"5!C$KB""!"3iB3%B5!C%bB""!"4mHaYiIf!(08'#!"3iB3%B5!C*5B"
"!"4mHaYiIf!(08##!C5S[`!!1'%!eS!H!!!iQ3!'X+%!d*!!!3$55!3C&@!!!!!
iB3$31)!"rcLJ!!!i`!!!5!2DE@!!!!#!RJ!!1'%"K+JI!!#3!)%"KV!"!B4)!e!
KB!!!!(qNkhJiH3!'5!3Bd@!!!!!i!!!)I!N$TMMK!"3iQIrmJ'3!")3%!!L3!'F
!"*3(!!K#!2r`J'3!"$J!!!Km#31Q1-%!A*!!C`!%1+%"J+!%!!L`"`!)J'8!")3
&!!L3!'B!"*3'!!K#!2r`J)8!"$KK!-!i!!!"N!#'!!5JK3!)X)B!#*!!B3#SNd%
!V*1"!,#3!!%!Y)"K!"L!J3!FJ+%!))$"!#5!i3!SJ3%!,)%K!$#"33!d5!#H#@!
!!!"mHaYiIf!(08##!(`iB3'%1)!!!$LJ!Ip)!pMCB!!!!$KK!B3iS3#i1)!!!dJ
'3Y@!33!8I(XEH(pJ"c9!JJ")U'%!Z$L"!,a)"NbTJ%%!&(al'hKrB!Fe3))!)+K
K!,Ji`3(-J)%![$LJ!&*)!e(eB!!!!(al'hLSB3#i5!01T@!!!!"rB!Fe3B)!)$K
J!rBiJ!2a1+!!+MM!!!")"!V&B!!!!%J!!$Ji!!!)I!N$TMLjrr`iJ3'!J'3!")3
%!!L3!'8!"*3&!!K#!2r`J!3!"*!!"3!%S!3!#,!&!!KrBpYiJ!%#@$JK!P"m#!1
QZZ(rh%k!!#!!!!!!!!!!!!!!!!#r`IriI!J#TMLL9X`i`!!!I(iEH(bI)hL3!!%
!#*3KrJ#ST3!!1!%!l,$"!&`iB3"!X-%!9V#K!&L3!!%!8NJ'4kf!33!8I'!(08#
#!+bSB3"d1!%!l)#"!(SiS!!!X'%!PMKK!)#`S3#FN!#"!,#3!!%!NNJ'3L'!33!
8I'!(08##!(JiBPpQL!-!!#J!!!""JJ!S2'"dC6L$EA!i`3!i11%!2$KJJ!8iS!!
"5!,GH@!!!!")!!!N2'"KF$L$F(-i`3!i11%!2$KJJ!!iS!!"5!,G9@!!!!"mB!F
e3))!(+KK!$Kra[0iJ)%!2(rRqhJiS3"!5rrl8B!"!JJi)3)!Zm(rq(`)!kC1J!!
J!!!!!!!!!!#pSIqdI!J#TRb4)hJjSPpM23"(6(ab'hJkSPB-1S*@"(b`+hJl`PP
)I-mcH$TL9J!liPDdI1ilH$KS8e3lS!!!1)!$k*!!!3!)1!!!!*3KqP#3!!%",$J
!!!#B!39)5!2ET@!!!!!S!`!!N!"c!!""JJ!B5!C(FB""!"5!F`!!5!,1&@!!!!!
mB%G-1'069$L!!qP)!pYaB!!!!#J$!!#3!(3!!%'#!"K)"NFpJ%%!&)"d!!")!Xh
KB!!!!$aJ58`iBe081)!$k%J$fceJ!!!!+!-!!*!!G3!!3B)!$%J'4`Q!33!81'*
PF$J!!!!mJ&CKN!!$!!!iC(*c1)!6L%J$f`PJ!!!!+!-!!%'#!#")!S6jB!!!!,"
K!%5SB3"%I'!(08'#!!K)!#5JIN56H(iPLhKq"S0i1'%"L%J$p+eJ!!!!1+*J&$K
K!BJiJ!!"5!BrUB""!"5`B3"%U'%!4(aJ"c9"JJ!)5!!NB$KLB"5S!`!!2'!!!MK
MJ!#`!3"#5!C!bB""!"4mI"Yi5!C%pB""!"5`B3"%U!%!4#`!!!"!JL2d1!!!,+K
K!%+3!!%!D$LK!'Ji`3#3!$L!!!")!dipB!!!!,"K!%5S!3"%,!!!!%##)m3mB%j
@J)%!N!!i!d08I!3!8(`$!$3m"+bU9'2H2LJ!3e5BE3!!3B)!()J0!!!S!!!!3))
!%$J!rrq`!3"%5!!MK#`2!!"!JJ#3!(h!"c9!JJ#)J!%!T#`!!!&!J3"m1'%!3ML
"!BK,rrH49'!'2d'#!$bS!3"#1'*J&+N"!BJiiPDk1-*@[)%K!BSiSPE!1)*@a,!
$!!#a"`!!X3B!!*%P!!#4*!!!5!!!-)#"!+`iB3')5rrmG6KK!BJiJ!J!5!'QZ@!
!!!!iB!!"1)!!!%J%J0PJ!!!!1!!!C+KK!%+3!!%!D$LK!'L!J3#d1-%"*%J$66P
J!!!!X'%!4+J"!%3X!!!!3))L`)"K!53m!lbU+!"$9%'#!"!i!2rqX!%!4%J!)U5
!B3#dJ!%",$KM!'3X!!!!N!"K!'4"JJ!XU'%!3ML"!%+!`3%S1+%!C%J#dpeJ!!!
!X'%!4+J"!%3X!!!!3))LC+J"!63FB!%15!C$,B""!"3iJPASN!"N!!")"N-eJ%%
!&(aJ"c9"JJ!85!C$*B""!"5`B3"%5!!L,$KLAp`i!!!!1)!!!*!!!`!!1'!!!%J
%&JPJ!!!!U-%"0$aJ4PBiSPAX110$9$b!4&D3!-8!!$J%3e3i`P'X13!!!)"K!'5
4"J!!IiAMH+L"!%)i`3"BN!$K!h#3!!%#d%J#b8&J!!!!1'!!!*1"!&`i!!!"X!%
&5V"K!%")!!UB1'%%1$L!!3j)"(ETB!!!!$J!!!5SB3"#N!!"!'KrKq0iJ)%!C$L
K!'Ji`3"J13%!A$NK!&K)!XPYB!!!!,"K!%5!B3"NU!%!4$KM!!3X!!!!N!"K!'4
!JL&BJ'%!B$`$ZDSS!%083B)!($`$ZkSS!%083B)!%$J!rrf`!3"%5!!K-$`$ZDS
S!%083))#P$J!!-+SB3"#N!!"!'KrKq0iJ)%!C$LK!'Ji`30d13%!A$NK!&K)!XM
aB!!!!,"K!%5S!3"%,!!!!%##)1JiB30`1)!!aNJ%&0&J!!!!J-%$J$LJ!##!!31
SN!$""95!`33UN!!""-+!!398N!$""9#!J3"N1-*Ih$RN!-+V)323N!"Q!!!i`!!
!LJ%$kML""3U#)31iJN%$`$KK"!L#B31dJS%$[)+K!l##`31XJZ%$b)-"!mbV332
5JB%$e)&K!pL"332FJ5%$R)%"!k#!i31NJF%$I)QK!hZ3!!%%bS!""9#4i3"NNJ%
!D*)K"*U5335HNQ%%NT+""*D5S34qNX%%HT,K")+6!35+Qb%%p,$""*!!Nd%%ST'
""+D4B35UN8%%VT%K",D4!35kN!$K",k4`36'QD%&#*!!!3615!BiqB""!"5$!31
3!$T!!!##i31-1'%&2S,"!j5+S32N1)!!(iU"!q@UB31BJL%$a+)"!q#"i30dSF%
$iU'K!hL*J30kJ@%$l)&"!r#")32dJ3%$q)MK"#L)`31)J+%%,S!""$+6!36HNZ%
%fT,""1+DS36fQS%%pl*K"1DD336cNL%%XV)""1L4i36ZXF%%kV'K"1bCJ36bN@%
%q*&""2b4)38!N3%&"*MK"6DB`38mN!#K"6k3!!%&3NJ'1"'!33!89'!'2d'#!$5
!!35f,!!!!%##!#L!!35k,!!!!%##!"`mJ(0X2'"bD$L%EQXi!f&`N!#"",D3!!%
%ZS!"!+JX!!!"3))!&$KK"-BiJ!!(5!BmYB""!"3iB36'1)!!"%J'0kf!33!89'!
'2d'#!"#S!39+N!!""+*)!!!FL!%%pLJ!!!"!JJ!3J!%%SR`!"c5`!39+J!%%"*!
!!38b5!!"Q$J!!*bSB3"#N!!"!'KrKq0iJ)%!C$LK!'Ji`3,813%!A$NK!&K)!XC
KB!!!!,"K!%5S!3"%,!!!!%##(PJiB3,31)!!S%J%%N&J!!!!J)%!C$M!!!#Si3-
B1D3!R+J""8U*J3-J1)%%YS&K!Z5"33,SJ5%#m)%"!Z`iSPrFND%!C*!!C3!!1'%
#e$LJ!"#4J3"SN@%%HT&""(k4)35#N3%%LTMK"25``353!*!!`35QN!!""+*)"ME
YJ%%!&)#"![3ii!!!J-%#q$KK!d5!!30NN!#""-BiJ38+1+!!)*MK"3L3!-%%bT!
!!3615!BfZB""!"5#`3-)1J!!%)+K!`5#J3--JQ%$%)T"!aU+)3-ELH%$*i("!`#
KS3-8SB%$&U&K!b+*33-KJ5%$+)%"!bb!i3-`J-%$0)LK!b@)J3-QJ'%$D)!"!fb
5`36HNU%%fT+""1+5B35UQN%%pTSK"2HD!36cNH%%XT(""1kaS36SXB%%kV&K"1b
C336bN5%%q*%""2b3!1%&!*!!`38%Q+%&0TL""6b3!'%&2T!!!39#J!%!D$QK!G'
SB3"#IDCVH*J"!G#!J3"NIiIMH$LK!'Jj!3"F15%!@%J#a@PJ!!!!X'%!4+J"!%3
X!!!!3))F`)J"!G!S!!!I3)%!%$J!rrb`!3"%5!!FU$KK"$JiJ3(35!30)@!!!!!
iB36'1)!!"%J'0@Q!33!89'!'2d'#!q#!J3"NIiMMH)!"!'Ji`3"SU'%!3Rb%!K5
)S32VN!#"!'3ii3"%15%!A$P"!&K)!XCPB!!!!+J"!%53!'%%eL`!!!"!JK`mL!%
%pbJ!!"&"J313!$KL(5K8!"!kI'-!,RaT!kC1J!3JJ)%!C(q)ihL!!3"S1-%!D+K
K!%*mK!)8J+%%`*!!J3"N11%!4$NK!&`j33"B5!,'!@!!!!#S!3"%N!"K"-!X!!!
!3))Ef%J!!c5!J3"NIiMMH)!"!'Ji`3"SU'%!3Rb%!K5!S36!N!#"!'3ii3"%15%
!A$P"!&K)!X@jB!!!!+J"!%53!'%%`#`!!!"!JKZ3!)#K!'3i!!!"J)%!D(q(ihL
SB3"#I)8L&*!!!3"S1+%!D*!!J3"N1-%"d$N"!&`j)3"B5!,$m@!!!!#`B3"%U!%
!4#`!!!"!JKY)L!%"d(fQDhLSB3"#IiIMH*!!!3"SJ)%!C$LK!'Jj!3"F15%!@%J
#`l9J!!!!X'%!4+J"!%3X!!!!3))E$)KK!G!S!`!I3)%!%$J!rrU`!3"%5!!Dp$J
$!!'3!!%!D%J!!NL!S3"N1!!!!B#"!'KrKq0iU'%!3Rb&)K53!!%!D$LK!'L3!)%
!C$M"!G!j!3"F15%!@%J#`dPJ!!!!X'%!4+J"!%3X!!!!3))DS)J"!G"pTQYiU'%
!3Rq(ihL3!!%!D)#"!'3iS3"S13%!A$NK!&K)!X-0B!!!!,"K!%5S!3"%,!!!!%#
#'Q5)B3(3+!-!(d#"!"!i!2rjX!%!4%J!'N`i!`!"N!!"!'K)!!'JJ)%!C(q)ihL
!!3"S1-%!D+KK!%*mK!)8J+%%YT!!J3"N11%!4$NK!&`j33"B5!,%*@!!!!#S!3"
%N!"K",BX!!!!3))Cr)#"!'4rL10iJ!%!D$M"!'LSB3"#I)3#&)#K",U3!)%!C$M
K!%3j)3"F18%!@%J#`q&J!!!!U!%!4*!!B35k,!!!!%##'EL!J3"NIiMMH)!"!'J
i`3"SU'%!3Rb%!K5!S36!N!#"!'3ii3"%15%!A$P"!&K)!X1GB!!!!+J"!%53!'%
%`#`!!!"!JKPd5!!!d)#"!'4rL10iJ!%!D$M"!'LSB3"#I)3#&)#K"6k3!)%!C$M
K!%3j)3"F18%!@%J#`e9J!!!!U!%!4*!!B38q,!!!!%##'5b!J3"NIiMMH)!"!'J
i`3"SU'%!3Rb%!K5!S39#N!#"!'3ii3"%15%!A$P"!&K)!X-4B!!!!+J"!%53!'%
&3L`!!!"!JKMSJ)%!C(q)ihL!!3"S1-%!D+KK!%*mK!)8J+%%`*!!J3"N11%!4$N
K!&`j33"B5!,#c@!!!!#S!3"%N!"K"-!X!!!!3))BT$KK"&NiJ3(35!3*(@!!!!#
)!36c1'$rrj!!B38i+!!!!%'#!!b*`3-I5!!!#)R""#NX$J!!3B)!f)!"!'KpTQY
iJ'%!C(q(ihLC`3(3I)-#&+KK!%+3!)%!C$LK!'Jj!3"FNF%!D$NK!&K)!X$0B!!
!!,"K!%5S!3"%,!!!!%##'#5)!3(3+!!!2d#"!"!i!2riX!%!4%J!'!`iBP'XNF%
!D)"M!!!S!`!!3))!($KJ!%")"MM&J%%!&$L#8Db3!'3!!%J!!"3i(3!"9!3`-NJ
'1*'!33!85!BiZB""!"4mB!Fe3))!,$KL8DaAS$!b1)%"d)"M!!#!B`!!I'-#&%J
%##PJ!!!!Nk%&1$Zp!!%iSPE-1)!!!+KK!%!i!!!KU-8!!"bM!3iiBPASN!#"")C
m#31QJ'-!!,$"")iiJ33dJ!-!!(bJ+K3iTIrmJ'3!")3%!!L3!'8!"*3&!!K#!2r
`J!3!"*!!"3!%S!3!#,!&!!LSB3"!J+%!C)#"!'Ji!`!"X!%!3(`&)K53!!%!C+K
K!%#S!3%dI!-!!%'!p@#!J3#`,!3!!%'#!#!iBPrFJ!-!!(`%!%""JJ!31!$rql!
"!%4)!"EN1'%!9%J'0`Q!33!81!!!"UKK!%+3!!%!D(q(ihL!J3"N1+%!D$M"!)J
j!3"F15%!@%J#[U9J!!!!X'%!4+J"!%3X!!!!3))@R)"K!)Jm!kqr+!"$5d'#!"!
i!2rhX!%!4%J!&S#S!3#-J'%!R,!I!!!q!rriJ)%!C)"K!'Jk%"F!U"m!!(b%'K3
FB!3@N!#"!'4)"MFPJ%%!&$L#8E53!'3!!%J'0bf!33!8X'%!4+J"!%3X!!!!3))
@,$KL8E5!B`!!5!B[[B""!"3iBP'd1!!!!)"M!!#"S`!!X!%!3%J!!$!i!!!!Q!d
!!*J0!9Q3!!d"8T!!$3&QN!!0!fU3!!d$EMQY""DSB3"!1!-!!E!"!%#SB3"!U"m
!!(`$!!""J2r)J'%!9)!"!*am!`"!3B%!$(`$J%"!J!!-1!!!!CJ""8JiBP'd1!!
!!)"M!!#"S`!!X!%!3%J!"[LSB3"#IiEMH$L"!'3iS3(311%!A$N"!&K)!Vl*B!!
!!,"K!%5S!3"%,!!!!%##&@"pSfYi1)%"d%J%"GPJ!!!!U'%!3Rq'ihJiJ3"N1+%
"d$MK!&`j!3"B5!+qL@!!!!#`B3"%U!%!4#`!!!"!JK8J1'd!3$L"!G")"!@CB!!
!!+KK!%*rKZ0i1)%!C$LK!G!ii3"F13%!@%J#[NPJ!!!!X'%!4+J"!%3X!!!!3))
8i$KY!8!iJ3(35!3&@@!!!!!i!!!#U'%!3T!!!3"SIiIMH)#"!'3iS3"S1-d"5MN
"!&`j)3"B5!+mR@!!!!#`B3"%U!%!4#`!!!"!JK58J+%!C$J!!!5!J3"SIiIMH+K
K!%*mK5)8N!!"!'JiS3"SN!#"!'3ic3&113%!A$NK!&K)!Va9B!!!!,"K!%5S!3"
%,!!!!%##&%b!S3"N1!!!!B#"!'KrKq0iU'%!3Rb&)K53!!%!D$LK!'L3!)%!C$M
"!$Jj!3"F15%!@%J#[!eJ!!!!X'%!4+J"!%3X!!!!3))8")#K!'3iB3!iJ!%!D$L
!!!9m"3)8N!!"!'4)"Lc&J%%!&*KY!9iiB3!i1)!!"%J',,'!33!8Q'd"B$KK!$J
iJ!!(5!BXRB""!"5BE3&@1'%!1$L!!!")"Lb*J%%!&*KY!9SiB3!i1)!!"NJ',(@
!33!8Q'd"A6KK!$JiJ!!$5!BXBB""!"48B!Br3B)!&$J!!!'B$3&EQ!d"A%J!!#`
iB3!i1)!!!8J',$Q!33!8Q'd"@cKK!$JiJ!!#5!BX*B""!"5BE3&FL!d"@bJ!!!"
!JJ!3L!d"A#J!!!""JJ!81'*@jMJ!!!'B!`!!5!!!$$J!!!'B$3&D1!!!!DKK!%+
3!!%!D(q(ihL!J3"N1+%!D$M0!9Fj!3"F15%!@%J#ZYeJ!!!!X'%!4+J"!%3X!!!
!3))5e)#K!'3i!!!#J)%!D(q(ihLSB3"#I)8L&*!!!3"S1+%!D*!!J3"N1-d"6$N
"!&`j)3"B5!+kP@!!!!#`B3"%U!%!4#`!!!"!JK+-J+%!C$J!!!+!J3"SIiIMH+K
K!%*mK5)8N!!"!'JiS3"SN!#"!'3i`3!m13%!A$NK!&K)!VT0B!!!!,"K!%5S!3"
%,!!!!%##%N5!`3"N1'%!2)#K!'JiJ!!!U!%!2(bQ+K53!+%!C*J0!9K)"LVpJ%%
!&*KY!9miB3!m1)!!!NJ'+ZQ!33!8Q'd"BMKK!$`iJ!!$5!BUeB""!"5BE3&M1'%
!2$L!!!&)"LV"J%%!&*KY!@%iB3!m1)!!"NJ'+Uf!33!8I'iEH$KK!$`iJ!!&5!B
UQB""!"4m!h)8Q!d$Fhq'ihJiJ3"NU'%!3MLK!G!ii3"F13%!@%J#ZZPJ!!!!X'%
!4+J"!%3X!!!!3))4J$KY!@SiJ3(35!3"q@!!!!#SB3"#IiEMH$L"!'3iS3(311%
!A$N"!&K)!VUTB!!!!,"K!%5S!3"%,!!!!%##%8!iE3*U1)%"d%J%!EPJ!!!!1!!
!#+KK!%+3!!%!D(q(ihL!J3"N1+%!D$M0!fSj!3"F15%!@%J#Z2eJ!!!!X'%!4+J
"!%3X!!!!3))3p)#K!'3i!!!"J)%!D(q(ihLSB3"#I)8L&*!!!3"S1+%!D*!!J3"
N1-d$FMN"!&`j)3"B5!+iY@!!!!#`B3"%U!%!4#`!!!"!JK#XJ+%!C$J!!##!J3"
SIiIMH+KK!%*mK5)8N!!"!'JiS3"SN!#"!'3ic30d13%!A$NK!&K)!VKYB!!!!,"
K!%5S!3"%,!!!!%##%'5!S3"N1!!!))#"!'KrKq0iU'%!3Rb&)K53!!%!D$LK!'L
3!)%!C$M0!j3j!3"F15%!@%J#Z#9J!!!!X'%!4+J"!%3X!!!!3))3()#K!'3i!!!
JJ)%!D(q(ihLSB3"#I)8L&*!!!3"S1+%!D*!!J3"N1-d$Y$N"!&`j)3"B5!+hh@!
!!!#`B3"%U!%!4#`!!!"!JJr8J+%!C$J!!##!J3"SIiIMH+KK!%*mK5)8N!!"!'J
iS3"SN!#"!'3ic32813%!A$NK!&K)!VH9B!!!!,"K!%5S!3"%,!!!!%##$ib!S3"
NIiEMH)!"!'JiJ3"NU'%!3R`&!K53!!%!C$LK!G!ii3"F13%!@%J#Z,9J!!!!X'%
!4+J"!%3X!!!!3))26$KY!r3iJ3(35!2ra@!!!!#)$30b+!!!!%'#!(apSfYi5!2
'R@!!!!"8B!Br3))!D$KL9ZFiJ!!"Q)-!!)"K"8b)!`&I+!!!!%'#!##BJ`&NL!d
"AbJ!!!""JJ"!1!!!!TJ0!@4)!!!mL)d$FSJ$!h*8J`BqI!-!3%#"!"b)$3&I+!!
!!%##!"5!B39-1!!!!TJ$!@54S39-1!!!!*J0!@5SB3"!1Dd%&MJ$!!'`!3"!U'%
!3+JI!!"m!`!!3B$j!$KL8E3i!!!!J'-!!)'M!!#`!3"!5!!!Q(fMDhK)!mAKB!!
!!&4J"Mp"JJ"dL!d"A5J!!!""JJ"SU'%!3$QY""Bi!`!"X!%!3%J!!$"pSfYi5!2
&V@!!!!"8B!Br3))!,$J!!!'B$3&G1Dd%&UKK!%!i!`!"X!%!3+KK!%#S(`!!I!-
!!%'!rmLSB3"!U"m!!(`$!!"!J!!S5rrrJ+KK!%!jV33@1!-!!E!"!%#SB3"!U"m
!!(`$!!""J2pJ1'*4Y)"M!!")"LXjJ%%!&$J!!!bSB3"#N!!"!'KrKq0i1-*4Z$L
K!'L!J3"N13%!A$NK!&K)!V@0B!!!!,"K!%5S!3"%,!!!!%##$B3iBP'iJ'-!!$`
$[EiS!(*N3B)!%$J!rrD`!3"%5!!0C$KL8EJiJ!!!J+%!D+J$!!3iBP(%J-%!C#`
!!!+3!)-!!(aQ+K53!'%!C*!!J3"S3B)!0%#!!"!X!!!"3)!!&%J!!%JX!!!%3)!
!3%J!!#`iBP'iU!-!#K`!!"D3!!%!D%J!!#JiBP'iU!-!#"`!!"D3!!%!D%J!!"3
iBP'iU!-!"K`!!"D3!!%!D)"K!'JX!`!!3B)!Q%J',D@!33!81)*4a*!!C!!!5!B
YVB""!"5`B3"%U!%!4#`!!!"!JJbX1'*4a)"M!!")"LBpJ%%!&$KL8F4rKq0iJ)%
!C$LK!'L!``!!U'%!3MN"!&b!aJ!!15%!@%J#Y'PJ!!!!X'%!4+J"!%3X!!!!3))
-B)#"!'5!!3"S1'*4a(`%!K5!B`!!N!!"!'4)"LQjJ%%!&$J!!!DSB3"#N!!"!'K
rKq0iJ)%!C$LK!'Ji`3#!13%!A$NK!&K)!V30B!!!!,"K!%5S!3"%,!!!!%##$!5
!B3#!2!1mX5J!4%9"JJ!31!$rp,!"!%4)!![SU!%!K$KL9V+!S3"NX!-!!)#"!'L
S!`!!I)8L&"aJ!$L3!)%!C%J',*@!33!81)*4b*!!C!!!5!BXRB""!"5`B3"%U!%
!4#`!!!"!JJZF1'*4b$J!!!#!B`!!JD-!!,!"!%")!!!J1!!!!*J0!!#3!!d!-$Q
Y!$LSB3"!1!-!!E!"!%!iBPDbU)%!3+J$!!"mJ`FdI!-!!%'!rp!iBP()1!!!!)"
M!!#"S`!!X!%!3%J!!CJi!!!"U'%!3T!!!3"SIiIMH)#"!'3iS3"S1-%"d$N"!&`
j)3"B5!+c"@!!!!#`B3"%U!%!4#`!!!"!JJVmL!%"d)"K!'48!!Br1)-!!C!!J3"
N3B)!5*!!!3"SIiIMH+KK!%)iS3"S1-%"d6N"!&`j)3"B5!+bZ@!!!!#`B3"%U!%
!4#`!!!"!JJU`J'%!C)!"!'Km!`)8N!!"!'4pSfYi1)%"d%J$qaPJ!!!!1!!!#+K
K!%+3!!%!D(q(ihL!J3"N1+%!D$M0!#!j!3"F15%!@%J#XPeJ!!!!X'%!4+J"!%3
X!!!!3))+9)#K!'3i!!!%J)%!D(q(ihLSB3"#I)8L&*!!!3"S1+%!D*!!J3"N1-d
!+$N"!&`j)3"B5!+b&@!!!!#`B3"%U!%!4#`!!!"!JJS-J+%!C$J!!!5!J3"SIiI
MH+KK!%*mK5)8N!!"!'JiS3"SN!#"!'3ic3!X13%!A$NK!&K)!V(0B!!!!,"K!%5
S!3"%,!!!!%###F5SB3"!1Dd!1)#K!'3i!`!"J)%!D,!"!%"m"5)8N!!"!'3iBPD
bU)%!3+J$!!"mJ`FdI!-!!%'!rPJi!!!'U'%!3T!!!3"SIiIMH)#"!'3iS3"S1-%
!H$N"!&`j)3"B5!+a@@!!!!#`B3"%U!%!4#`!!!"!JJP3J'%!H$`$YV)S!%413B)
!%$J!!!#`!3"m5!!!&)"K!'5!!3"SI!-#&*!!!3"NU!%!I$KL9XL`!`!!U'-!!(a
J"c9"JJ*%I'!(0"aJ!&T)"LR9J%%!&$L#9JL3!'3!!%J'+Gf!33!8I'!(08'#!"4
)"LR0J%%!&,"K!%4)!!M81'*@#)"M!!")"L*PJ%%!&$KL9JJi!!!!J'-!!)'M!!#
`!3"!5!!"[$J!!!'SB3"#N!!"!'KrKq0iJ)%!C$LK!'Ji`3(313%!A$NK!&K)!V"
jB!!!!,"K!%5S!3"%,!!!!%###(#)!3(3J'%!C&3!"MmiJ`!"N!#"!'4"JJ")N!!
"!'KrKq0iU'%!3MLK!'Ji`3(413%!A$NK!&K)!V!YB!!!!,"K!%5S!3"%,!!!!%#
###5!B3"NJ!%!D(`$!K53!!%!C(fMDhJiJ3(35!2iM@!!!!!i!!!%U'%!3T!!!3"
SIiIMH)#"!'3iS3"S1-d!)$N"!&`j)3"B5!+[d@!!!!#`B3"%U!%!4#`!!!"!JJI
)J+%!C$J!!!5!J3"SIiIMH+KK!%*mK5)8N!!"!'JiS3"SN!#"!'3ic3!N13%!A$N
K!&K)!Uq*B!!!!,"K!%5S!3"%,!!!!%##"i#!S3"N1!!!!S#"!'KrKq0iU'%!3Rb
&)K53!!%!D$LK!'L3!)%!C$M0!#Jj!3"F15%!@%J#Vd&J!!!!X'%!4+J"!%3X!!!
!3))(1)#"!'3i!!!!J'%!D(aN'K53!'%!C*!!$3"+J!%!R*!!$3"1J!%!Q*!!$3"
5U'%!3$J$!!'3!!d!9MQY!&USB3"!1!-!!E!"!%!iBPE)U)%!3+J$!!"mJ`FdI!-
!!%'!rM3iBPB)J'-!!%J'*%@!33!8Im2cH$L!!3j)"&`&B!!!!$J!!'LSB3"#N!!
"!'KrKq0iJ)%!C$LK!'Ji`3#m13%!A$NK!&K)!Uk*B!!!!,"K!%5S!3"%,!!!!%#
#!Hb!B3#m2!1lQLJ!58a!JJ(FJ+%!C(r$mhL!!3"S1)%!`(`&!K53!!%!C%J$pYP
J!!!!J@%""MRq!(k"33%+11!!")-K!1#$!3$N1Ei!HS,K!1Jj)!!!JX%!l)+K!2!
j`3%2JS%!p(h$FhL#B3$iUN%!r$L!!!H#)3$qJB%"!SN"!3k!`3%BJ+%"()!"!5#
4IJ#'N9i!LT-q!,D6(J"HN[i!@T,H!'+5[J"'NTi!3T*q!)kbAJ#ZNMi!IT'H!)+
42J#)Q4i![TMq!,q42J"kN!$H!'D3!,i!FT!!(J"f5!BHJB""!"48B!Br3B)!&(f
MDhJiJ!!25!BMBB""!"4p`h0i1)!!"NJ'(PQ!33!89'!'2d'#!"4pSfYi1)!!$%J
')cQ!33!8IF0cH$L!!!9)"KiaJ%%!&&4J"Mp"JJ!8ID0VH$L!!!P)"L-4J%%!&(h
$FhJiJ!!%5!BH#B""!"48B!Br3B)!&(fMDhJiJ!!"5!BLkB""!"3iBQ9`J'-!!#J
$!!""JJ"mU!-!!#`!!!""JJ"`1!!!"#J$!!#3!!%!8%##!!K)!!!BIH0lH$L"!&!
iS!!%5!*KC@!!!!!iBQ9`J!-!!$KJ!!53!'%!8#J!!!"!JJ!)5!!!,$Kq!))iJ3"
31+!!"%J#B69J!!!!5!!!&)"K!'L!!3"FI!-!8*!!!3"F1'%"MSJ"!BiS!!!D3)%
!$$J!!"UB!`!!1))G)%J$p"eJ!!!!1'%"L$LK!%!iJ!!"5!BIZB""!"5`B3"%U!%
!4#`!!!"!JJ!X1'*J&+KM!!")!bZjB!!!!+LK!%!i!!!"1)*IC$KLB"5B"!!!X+-
!!$KL9d!iJ!!#1'-!L8J'(1@!33!8I'iEH$L#9ZiiBPG!QF3!!$L!!!8jS`#,ID0
VH%J'(-'!33!89'!'2R`!!$4pSfYi9"(H2ML!!!G)"KbPJ%%!&(ab'hKpSfYi1)!
!"NJ'(*'!33!82)"84AaY'hJiC&K81)!$k8J$ZK&J!!!!1)*D[#J$!!#3!'3!'%'
#!!a)"LACJ%%!&$aJ9%8iBeK81)!(d8J$ZH9J!!!!1)*D[#J$!!#3!'3"8N'#!!a
)"L@YJ%%!&%[rde@`B3"%U!%!4#`!!!"!JJ-i1!!!!E!"!%")!!,8I'3(0#`%!!0
"JJ"-3)!!&#`%!!&"JJ!B3)!!+%J!!)3X"!!&3)!!I%J!!$49`!BqI!!!0&3!hMk
B!39*5!!!C&BJ"Mjm!!!d9!$H2TJ""8P)!!"3QN%&58J!!%K9S!Br1!!!!*J""8P
"JJ!iJ'%!9)!"!*am!`"!3)%!+$KL9Z8i!!!"Q!-!!$J!!!%iB3"XQ!%&5%J''-'
!33!85!!"q)J""8P8!!Br3B)#(#`%!!*"JJ!m3)!!%#`%!!&!J!!85!!!B#`%!!4
!J!"B5!!!2$KK!G!iJ!2a1+!!#NJ''CQ!33!81f!%!NJ!!$JiB3(31)!Uq$LJ!!K
)"KPpJ%%!&$YJ+a*)!!!F1'%"d$L!!r%iS!!Q5!BCBB""!"3lB!3%1'%"d$L"!%K
)"LXGJ%%!&$KK!'a)"KJKJ%%!&(pMfhJiJ!!"5!25`@!!!!"mEaYi1+%!1MM"!%`
ii3"`1)!!!NJ'&Y@!33!8J'%!6%J'(A'!33!8I(XEH$KJ!!!iJ!!!5!2eT@!!!!!
X'`!!3B)!')"K!%arC0YiJ'-!!%J$pBPJ!!!!1)*@jBJ%!!!S!!!!3))!R+J"!%!
X!!!$3))!4)!"!%JiJ!!!I!-!3%##!"bS!3"`,!!!!%##!"#S!3"b,!!!!%'#!!J
iJ!!"1'*@j6J!!!#B!39)Q)-!!%J!!&#!!3")1)!!!(`$!%"!JJ!dU!%!F#`!!!"
!JJ!SU!%!FL`!!!"!JJ!FJ'%!9)!"!*am!`"!3B%!$(`$J%"!J!!)1)!!!6KL9Z@
BJ`!!5!B9@B""!"4pihYi5!B@$B""!"4)"KN&J%%!&+L"!%"pihYi5!2e*@!!!!!
iJ3!q1'!!!%J''4@!33!8IH0lH%J''5'!33!8L!%&5&3!"Mp"JJ!F1'!$pML!!r%
iS!!&1-$FB8J$j%9J!!!!J'%!E%J''6Q!33!8U'%!3$J$!!'`!3"!U'%!3(aJ"c3
X!!!%3)(p*$KJ!!&,rh9"9'!'2d##!$`iB!!!5!1f!@!!!!#!!3%X,!!!!%'#!"5
SB3"#1)!!!%J$Y99J!!!!1'!!!$L!r'&)"&heB!!!!%J#TLeJ!!!!J!%",#`!!!"
"JJ!8U'%!3ML!!!")!l8KB!!!!#JF!!""JJ!3Ii2MH%J'(,f!33!8U'%!4)!""EJ
i)3@`ZD(rY(`)!kC1J!!J!!!!!!!!!!!!!!!![D(rY(`)!UBkJPDiI(dEH$VL9VB
k!PAiI*iMH$SL9H`k3PAS1Q*@!$UL8F`k`PAd1`*9m$QLA,`l)P'dN!!"!!K8B!B
r1'!!!*3Krh#`G`!!X(3!!%'#!$3iB!!J5!BJ*B""!"53!(J!!$KJ!#")"L!9J%%
!&*!!GJ!!1'!!)%J')!@!33!8N!"`!!#!FJ!!1q!!!)(M!!")!!%d1F!!!6L!!!"
)!!!SI)!(0&3!%$TmE`)8J!-!dL`!!!""JJ!-1F!!!%J!!"3iK!!"I)!(0#`!!!K
"J2r8J*-!!$K[!**)"%R9B!!!!(ak'hJiE`$!5!4*p@!!!!"mHaYi1'm!b%J%5M9
J!!!!I(`EH$K[!0)iJ!!!5!BAHB""!"48B!Br3))!$&A!"Mp"JJ!`9d!'2d'#!#K
AB!Br3B)!)&H!"Mp"JJ!B1'm!MML!!!")"K`jJ%%!&%J!!(!iE`#11)!!!%J'(!f
!33!8L!m!ZbJ!!!""JJ"8LFm![$R[!3ilr`!"5!!!,)K[!,a9`!BqI!-!3%#"!#`
iE`#11)!!!%J''p'!33!81rm!!6R[!3k!%3!!Iq-(0(`$!!""J2r-1HrqmM[rrrm
jl`%11rm!!B!4!!"ri`FdI!-!!%'!rX3iB!!"5!1eG@!!!!"mI"YiJ(N!!%J'&ef
!33!8J(N!!$[J!!#$3`!!5!!#0)#6!!!iHJ0U5!4)T@!!!!"8B!BrI'iEH%'#!55
)'J&J+!!!!%'#!#ar3p0i5!1dm@!!!!"8B!Br3))!'&H!"Mp"JJ$mL"S"9bJ!!!"
!JJ$`9i!'2d##!"#)'J&A+!!!!%'#!-L)'J0b+!!!!%'#!"#)'J&N+!!!!d##!,#
SP!!!J(B!!$J%!!&8"!Jm5!BGfB""!"5!PJ!!Id26H+J8!!#!K!!!9!!)2(rN!bk
SP!!!1!3!!E!8!!")!l4PB!!!!&4J"Mp"JJ"iU"3!!#`!!!&!JJ!31!!!!,!8!!"
)!!&-3)%"5)"f!!"8!!JmJ*N!!)"M!!#!K!!!I'-#&+J$rr`F!!3@I'3#&%J$Y"9
J!!!!9'!'2d'#!45SG!!!1!2rrl!8!!")!!%%Id26H%J$Xr&J!!!!9'!'2d##!2"
9`!Br3B)!k)JD!h)S!!!!3))!G)"b!!!j`!!!1f!!!)(M!!")!!")1'm!MML!!!"
)"K8CJ%%!&&4J"Mp"JJ!JL*S"9cK[!0*)"K8"J%%!&&4J"MpmEKYi3))!*&A!"Mm
jl`%13))!'$Yl!!'!%3!!If-(0(`$!!""J2q`9F!'2d'#!'bSP`!!J(J!!$J%!!&
8"!Jm5!BFPB""!"5!H!!!U"F!!)"M!!"8!!JmIq-$,ULA!!#!F!!!1!3!!93%#$a
)"KaTJ%%!&)"`!!#S&`!!L*S"9i"M!!"8!!JmI)-$,UKh!!!i!`!"X"F!!$YD""B
lr`!"1'*@Y+J$!!"ri`FdI!-!!%'!rF#S&!!!,!!!!%##!&!iBPbkUF-!!(h!"c9
"JJ"!1'*@&)"M!!")"LNGJ%%!&(h%FhK)"KhTJ%%!&+L0!!!i!!!!1'*FZL`%!!#
`!`!!3B)!$$J%rrq`$3!!1'*@Y&I!"MqSP!!!U'-!!(`%'&"m(`Fd3B)!8)#9!!!
iB!!!5!BcMB""!"5!Y3!!1'!!!$L!!!")"LR4J%%!&+Kd!!!iJ!!!J,8!!%J'+D@
!33!8J*8!!$KJ!!&)"M09J%%!&%J!!%KAS!Br3B)!3(rJ"c9"JJ!iJ*8!!$KJ!!"
)"M-aJ%%!&)#e!!"rirYi1)!!!%J'+A@!33!8J*8!!$KJ!!&)"M-0J%%!&)"j!!"
)"KI4J%%!&)!"!*Ji)3#3!,QKrl4m#!1Q6S!!)!!!!!"m#!+QN!!"!!L8)Ir!5!B
2(B""!"3mJ!!&1!56i(`$!!"!J!!X1'!$pML!!r%iS!!#1-!!!%J$hFeJ!!!!1'!
!!6L!rj4)"&IGB!!!!)!"!%Ji)3"!I!J$TNk!!#!!!!!![k(rp(`)!UBiJKe`I(m
EH*!!!3!)P#(qX$KK!$K)!qT&B!!!!$[!!!!lS!!!5!!!0)LI!!"AhL!f1'%!1%J
$kP9J!!!!I'!(08'#!""mB!FdIm$b&$[Hrrmlr`!"1ld!!AqJ"c3X!!!)3B$rb(r
$mhL!!3&B1#%"8(`)!kDlSIrd6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+Q1q*DY$L
!!!#3!!%!#$J!!"#8)IqJN!!"!$JiS3!i1-%!2%J$)iPJ!!!!I(iEH(r!"c9!JJ!
F1'%!2%[rrc'3!(m!!$KK!%4,rrmPN!"r!!4r`r0iJ!%!D$JK!'"m#!1QZm(rq%k
!!#!!!!!![m(rq(`)!UCmIKYi1')GK*!!!3!)1!$rrj3Krl#3!"i!!%J'%U'!33!
81)%!1%[rZT9mIaYj3))!C$KL(D4)"K+&J%%!&(aN'hL!B3!i5!B6(B""!"3S!`!
!3))!#$[Jp3iX(`!!3))!0(aX'hJiJ3!m1'!!!$LJ!!")"N)jJ%%!&#J$!!""JJ!
8J!%!2*!!(J!!5!B5`B""!"5!!3"B1#%!8,["rrKm#!1Q6S!!)!!!!!#rJIr`I!J
#TMKL9Z-iJ!!"1q*@k6ZLAf)l`PUdN!!"!!L8)IiJL!-!!*LI!!!S!!!!3B)#Z$K
LAfBi!3$)1)!!!*!!!3")L!-!!$KJ!$b3!)%!I#J!!!#3!'%!4%'#!)L3!)%!3$K
K!$a,rrlYJ!%!2#`!rrp"JJ"81'%!3$L"!$`iS!!!5!-1%@!!!!!mB(4P1)0YF$M
"!)!ii3##1'#!"6LJ!!")"K)aJ%%!&(am'hJiB3"!1)!!!$LJ!!&)!`hCB!!!!%J
!!%4)"K"GJ%%!&$L"!)")"+G"B!!!!(am'hK)!!!S2'"dC6L$EA!i`3#!11%!JMK
JJ!!iS!!!5!B4fB""!"4mI"YiIi!(08##!3!i!!!!1))Ga,!"!$JiB3#'5!2RP@!
!!!!iB3#!1+%!1$L!!!&)"K*KJ%%!&(am'hKrJ!Fd,!$re8##!%JmB(4P1)0YF$M
"!)!ii3##1'#!!MLJ!!")"K&aJ%%!&(am'hKrJ!Fe3))!($KK!)!iS3!i1)!!!8J
'%K'!33!8I(`EH(q!"c9!JJ"XU'%!1%[rr8PmB!Fe3))!4(r$mhJiJ3"%5!BArB"
"!"4mB!Fe3))!,)"K!&Jm!lk1+!"ZD8##!"`iBPpT1)!!!6J!!!#BR3!!Q)-!!*J
I!!#SB3!i5!-Gb@!!!!!iB3#!5!-Gr@!!!!#)(3!!+!!!!%##!13iBPpML!-!!#J
!!!""JJ!81'!!!$L!kXK)"&2aB!!!!$aJE'BiBfC[1)!6L%J$V'eJ!!!!+!-!!%'
#!"b!B`!!L'-!!$!$rrpm!"N3Q"m!!%J!!)4r`r0i5!BABB""!"4r`r0i1)%!4%J
'&cQ!33!8I'!(08##!'#!S3"X1'%!E)!"!(!iJ3"%N!#q!!#3!"i!"%J'&a'!33!
8I'!(08##!$L!B3"B2!1b[bJ!3e0"JJ!d2!15QLJ!C(*"JJ!S2!1TYbJ!8c0"JJ!
F1!!!!*JI!!")!!!31!!!!*!!(J!!N!!H!!5!!3(S1#%"i,Z"rr"m#!1Q6S!!)!!
!!!#r3IrSI!J#TMKL9Yil3!!!1f*@mcZ#9ZXlSPEU1m*IJ$[LAfD3!!%!#*3Krk#
)!`!!+!!!!%'#!mJmB'eK1'0MD$L"!$K)"JMpJ%%!&$aJEh-iBb!J1)%!1%J'#1Q
!33!8I'!(08##!##!!3!i9!!'G#`!!'"!JJ!31'*@i$J!!!'B!`!!2'"aC$KM)#!
iJ3!i5!B)XB""!"4mB!Fe3))!@)!"!$JX!!%!3B!!6$KJULT)!q24B!!!!&4J"Mp
"JJ!i1'#U&%J$ileJ!!!!9'!'2d'#!#3iB+S95!2MU@!!!!"8B!Br3B)!%$KL9Z%
i!!!"Q!-!!$aJFhNiBh0f1)%!1%J'#%'!33!8I'!(08##!%5!`3!i1!!(!&3%$ri
iBPEMI-AqF(`!-"#3!0i!!(`&)45B!`!!,!B)!$J!!!""J!!3,!B)8%#!!!Ji!!!
"9"S'2MaJFhNiBh0K1)%!1%J'"q@!33!8I'!(08##!%5!!3!i,!!!!N##!$JmB'0
`1'0eG$L"!$K)"JHpJ%%!&(aJ"c9!JJ!FJ!%!1#`!!3"!J3!31'*@j$J!!!'B!`!
!9d!'2d'#!$`mB(KX1'0KG$L"!$K)"JH"J%%!&(aJ"c9!JJ!JJ!%!1&3!"riX!!!
"3))!%$KL9Z)i!!!"Q!-!!$J!!!!mB'CZQ"d!!$KMC()iJ3!i5!B(3B""!"4mB!F
e3))!*$KK!$JiJ!!H5!B,mB""!"48B!Br3B)!$$J!!!'B(3!!J(i!!$J!!!!iS"!
!Q"`!!&4Q"$jma2j`9+-2rR`&-""m""N82'"QETJI!!!iBf4b1)%!1%J'"Yf!33!
8I'!(08##!#3iB3!i1)!!(%J'#if!33!89'!'2d'#!!`i!!!"Q"`!!)JI!!!S!!!
!3B)!$$J!!!'B(!!!9d!'2d'#!"!i!!!!Q"`!!*JG!!#!(J!!,!!)8%'!!!`i!!!
!Q"d!!$KJ!!!iJ!!!1+!!"dJ'%ff!33!8I'!(08##!"!iBPE`1!!!!CJ$!!#)(`!
!1'!!!CKl!!!S!!!!3))!+$aJBQ)iBfpi1)%!1%J'"LQ!33!8I'!(08'#!!`i!!!
!Q"X!!$aJFf-iBh*T1)%!1%J'"J@!33!8I'!(0$L#9Zam!!!d9!$H2MaJBA1B"!!
!1'0MFML"!$Jl3!!!5!B&fB""!"4mB!Fe3))!&)!"!$K8!!Ir3B)!#$Y!!!%iJPE
Y2'"YC6KMER@E4!!!1)%!1$YJ!!")"J@KJ%%!&(aJ"c9!JJ!8J!%!1&3!"le"JJ!
)1f!!!B!##J`l3!!!1'*@m5J!!!#EB`!!3B)!'%J'%SQ!33!89'!'2d'#!!Jl3!!
"1'*@mTY$!!",rrN05!!!,$KJ!rBiJ!2a1+!!"$M!!!")!p6PB!!!!$KJ!!%iJ!"
Q5!41p@!!!!#!!3"S1#%!B,Y"rqKm#!1Q6S!!)!!!!!!!!!!![m(rq(`)!UBiBPp
Q1q)DP*!!!3!)P#(r!)J$!!!S!!!!3B)!K$J!!!!mB'eKQ"m!!$L$Bh-i`3!i11%
!1MKJJ!BiS!!!5!B,6B""!"4mB!Fe3))!9$["!$ii!!!!Q!%!2MKK!$JiS3#!1)$
rrdJ$'q9J!!!!I'!(08##!#`iJKhFIm2cH$LJ!!!i`!!"5!B5$B""!"48B!Br3))
!$$J!!!'B(`!!J!%"#$JK!3#l`IriI!J$TNk!!#!!!!!!!!!!!*2Krram#!+QN!!
"!!L8)Iq`1+%!1%J$fEeJ!!!!1)*FY$aJ8%NiBd08U)3!!%J$TR9J!!!!I(mEH8'
#!"`iJ3!i5!BB%B""!"4rirYi5!B5"B""!"5!!3"B1#%!8)2Krram#!1Q6S!!)!!
!!!!!!!!![k(rp(`)!UBiBPpQ1q*@C*!!!3!)P#(rF)J$!!!S!!!!3B)!a$ZK!$S
mB'&`IkIVH$L$F(-i`3!i1'#!!MLJ!!")!UF"B!!!!(aq'hKr`!Fe3))!C%J'"2f
!33!81m%!2Rr%mhK)"JC9J%%!&+L"!$Kra[0iJ,d!!$KK!$K)!lq9B!!!!$KK!$J
iJ!!!1+!!!$M!!!")!a#pB!!!!(aq'hKr`!Fe3))!%$KK!$K)!aE9B!!!!(r!"c9
"JJ"32'"KF(qRkhJiJh"c1-%!1$KJJ!8iS!!"5!+QE@!!!!"mIKYi5!!!+$b!BA#
SI`!'1)4`FcM"!$Jii3!k1+!!!%J#TN9J!!!!I(iEH(r!"c9!JJ!BU)%!1)!"!$S
iBPCJX*m!"T!!!`!!J!%!Q$JK!*!!Zk(rp(`)!kC1J!!J!!!!!!!!!!#q`IrBI!J
#TML#9Q4mGaYi1i*C5$ZL9Q!l4!!'1X*I@$Km!+ilBPbd1m*A3$[L@Vb3!!%!#*3
KrR#S(!#ZJcd!!#`!!!#V"!!'3B)"Q$L#Ae#)"!!!+!!!!%##!BJiJ!!25!B'qB"
"!"48B!Br3B)!$%[rrP&)!!&X1'%!3%J'"#@!33!81'!%+ML!!!&)!ll&B!!!!*!
!GJ!!1'%!C$L!!qJiS!!P5!B&(B""!"5!GJ!!1+%!C$L!!!&)!pK*B!!!!$Kq!)i
iJ!!!5!B'NB""!"48B!Br3))!2)"f!!")"J,9J%%!&%J'"Ff!33!8J(B!!%J'"GQ
!33!8J(B!!%J'%f@!33!81)!!!%J'%h'!33!85!2J%@!!!!")"#pCB!!!!+Lk!!"
rJq0iJ0d!!(lSZhJiJ2rr11!!!MNJ!!")!Fj&B!!!!(ah'hK)!q$*B!!!!)"K!%"
)"JAYJ%%!&)"f!!")"J@CJ%%!&$J!!!#3!"B!!$Km!)iiJ!!&5!B&iB""!"48B!B
r3B)!')"m!%US(!"BN!"p!!#`'J!!5!!!3(lJ"c9"JJ!i1'!$pML!!r%iS!!C1-!
!!%J$d)eJ!!!!1'!!!%J$SS&J!!!!1'!!!$L!!(K)"%U4B!!!!%J%,TPJ!!!!1!!
!!)$H!!b`(`%qId66H(qPkhJiB!!!11!!!%J%)K9J!!!!I(BEH(l!"c9"JJ!J1'!
!!%J$SLeJ!!!!IX5cH$KJ!!")"%SpB!!!!)!G!!#SI`!3I"N!!*Kq!)K!JJ!8U"S
!!(m$"c4m!`!!3B)!&$KLAf`iJ!!"J'-!!%[rF-8iBPEKL!-!!#J!!!""JJ!`5!B
B#B""!"5!B`!!J'-!&S"M!!#S!`!J,!!!#%'!!"!i!!I4X"X!!%J!!!`i!!I3X"X
!!$KL9ZQ)!`!!+!!!!%'#!#!iBPUX1)!!!$KM!!*)"J5CJ%%!&&4J"Mp!JJ!-1X!
!!%J!!&JmB&"*U*X!!$KM3e4)!k)0B!!!!(af'hP!JJ!mU(X!!#`$"p"!JJ!31!-
!!E!E!!")!!!-1!2rrl!E!!!mB&"*U*X!!$KM3e4)!k(4B!!!!(af'hJS&J!!3B)
$1$KJ"p!iJ!!!5!1m&@!!!!#!PJ!!I(SEH$KK!&5!"!!#J+3!"T!!!3"8U)%!9UJ
"!&4mK!$3N!#K!&JJ!!!%I)3(0(`&"c4)"J-*J%%!&$KK!'4)!Z-YB!!!!$KJ!!&
)"JMCJ%%!&$KJ!!")"JMPJ%%!&$KJ!!P)"JMaJ%%!&$KK!'4)"KG9J%%!&$J$!!5
SJ3"DI!8(0(b$"c4mS#YiI!-!!%#"!!amQb0i5!!!+(`$!&"m!!j`I!!"P(bl+hJ
iB3"8I!3(0$LJ!!")"J+&J%%!&(p$dhJiS3!i1-%!2$MK!&`iJ!!"5!ArDB""!"5
SJ3"H1'%!A+J"!&amK!$3I!!!d(b%"c4m"3Fd5!B#4B""!"5S!3"LIhB(0+L"!&J
iB3"FI!#`8(`!$R"mS!'81!3!#RbN"c4m"3Fd5!B#&B""!"5SS3!iId26H)$"!$`
ii3"F1)!!!8J'!5'!33!8J'%!2+L"!&kSS3"F5!B"rB""!"5SJ3"JId26H$LK!$J
i"!!8I"F(0$M"!$`ii3"-1)!!!NJ&rVf!33!8U)%!6MKK!%bS!3"-I)3!d(`!!0"
mK!FdI!8(0%J'!CQ!33!8U!%!8MKK!%bSJ3"BI!#`8(`!$R"mS!'81!3!"RbN"c4
m"3Fd5!B"EB""!"5SS3!iId26H)$"!$`ii3"-1)!!!NJ'!(Q!33!8Id26H$L!!!&
)"J!KJ%%!&(p$dhK)"IjPJ%%!&(pNfhKqjEYi1-!!!%J'!2'!33!8Id26H%J&rN@
!33!85!29I@!!!!"r3p0i1+%!1$M"!$`ii3"F1)!!!dJ&rI'!33!8U+%!1(p$dhL
!`3!m11%!9$L!!!0)"IrpJ%%!&)"L#Ia)"Il4J%%!&(aP'hL3!+)8-(p$dhJiJ!!
$5!24m@!!!!")"IdCJ%%!&(p$dhK)"Ih0J%%!&%J'!-@!33!8Id26H%J&rEQ!33!
81)%!9%J&rF@!33!8U'%!@)#"!&Ji!rrdX!%!9)"K!&4)!Z(4B!!!!(p$dhK)"J#
GJ%%!&(p$dhK)"IejJ%%!&(af'hJiJ3"%5!ApJB""!"4mC"YiIX1cH%J'$0'!33!
8Id26H%J!!!JiB!!!J!%"Q$JK!C!!ZX(rf(`)!kC1J!!J[m(rq(`)!UBiBP'dN!!
"!!L8)Ir!J'-!!)"M!!#)!`&J+!!!!%##!!`iB!!"5!!!@$KL9HJl`!!!J'-!!)2
M!!")!!!X1(m!dML!!!")"J#0J%%!&&4J"Mp"JJ!-1'!!!%J!!#3lr`%11pi!!6K
L9Hara!FdJ!-!!(`%!!""J2r)1'!!!B!"!%Ji)3"!Zm(rq(`)!kC1J!!J!!!!!!!
!!!#rSIrdI!J#TM[LAfamI4Yi1)!!!C!!!3!)P#(qX)"r!!")!p)4B!!!!(aq'hJ
iB3!i1)!$k$LJ!#*)"IjTJ%%!&(r$mhJiJ3!i5!BBXB""!"5!I`!!1)!!"8J'#fQ
!33!89k!'2d'#!"L!I`!!1)!!#NJ'#i'!33!85!!!&)"r!!!iJ!!+5!B,2B""!"3
iBPBB1)!!!$LJ*a#!B`!!5!AqhB""!"5!I`!!1)!!#8J'#a@!33!8J(m!!$L!!"G
)"JX&J%%!&)!"!9Ji)3&3Zk(rp(`)!kC1J!!J!!!!!!!!!!#r3IrSI!J#TRal'hJ
l`PAm1q*4Y(bF)hJlS!!!1'!!!*!!!3!)1!!!!*3Krk#B"!!!5!B()B""!"53!(i
!!)"r!!")"IrCJ%%!&$J!!!'`!3!i5!!"%(b!"c5!I`!!(!!%&S"M!!"r3`)8Id2
6H%J%019J!!!!9'!'2d'#!*Kr3p0i5!1GF@!!!!"8B!Br3B)!,(pMfhJiJK2X5!B
Z!B""!"5!RJ!!1'%!1$LJ!!*)"K$GJ%%!&%J!!+"rBpYi1))6m%J',GQ!33!8If2
EH%J'#E@!33!8I'3EH(pMfhKr4G0i5!B*FB""!"5S!3!i,!!!!%'#!'5!RJ!!1'%
!1$ZJ!!%iS!!#5!B3KB""!"4)!!")1)*@!$Kk!fU!K!!!5!3`C@!!!!"8B!Br3B)
!,+J"!$JX!!!!3))!'$KJ!!&)!jcPB!!!!&4J"Mp"JJ!-1!!!!CJF!!#SB3!i1!-
!!E!"!$JiBPDdU)%!1+J$!!"mJ`FdI!-!!%'!rZ#!I`!!5!B#GB""!"4rSqYiJ!%
!D$JK!'"m#!1QZd(rk%k!!#!!!!!![`(ri(`)!UBlSPB8I(mEH$Y#9d!lBPbm1i*
FZ$[#A,U3!!%!#*3KrU#!I3!!5!B5MB""!"4mH4Yi5!B)UB""!"4mH"Yi5!!!'(m
MbhKr"-0i5!B(3B""!"3l'2rrI`!(0#`!!!*"JIrNL"S!M#J!!!0!JJ"81'%!2$L
!!qJiS!!e5!AlSB""!"4r)mYi1+%!2$L!!!&)"JJGJ%%!&$KK!$`iJ!2S1+!!0NJ
&qhQ!33!8Ib2,H$LK!$`iJ!!#5!B(pB""!"4Ai!Br3B)!)$LL8E4r)mYi1)!!!B#
P!!#!T3!!5!B(dB""!"3i!!!"1'!!!V!F!!!i!!!!X(i!!$X!!!#`'`!!5rrlh94
J"Mp"JJ!81'!!!$J!!!'`I!!!X"i!!(mMbhJiJ3!i5rrp1BJ"!$KmIaYi+!!!!%#
#!!`i!!!!X"i!!+JH!!!X!!!!3))!&(mMbhJiJ!!#5!B'1B""!"5S(!!!,!!!!%#
#!"4r)mYi1)!!!8J'"Kf!33!8L"S!L#J!!!*!JJ!3U"i!!*JD!)K)!!!-U"`!!*J
D!)L)'J#)+!!!!%##!!`i!!!"Q"S!L$KJ!"")!jV0B!!!!&4J"Mp"JJ"%L"S!M#J
!!!&!JJ!i1'%!2$L!!qJiS!![5!Ak4B""!"4r)mYi1)%!2%J'+`f!33!8Ib2,H%J
'"ZQ!33!8X(X!!+JF!!!iB!!!,!!!!%##!"5S(J!!,!!!!%##!!JiB!!"9(i'2d'
#!$LS'`!!,!!!!%##!#aAi!Br3))!*$L#(Har)mYi5!BUXB""!"3i!!!"X"`!!$X
!!!'B'J#)9m!'2d'#!"aAi!Br3B)!&$KJ!!!iJ!!"5!3bH@!!!!"r)mYi5!B'AB"
"!"4mB!Fd,!!!!8##!"!i!!!"Q"S!L$X!!!&r)mYi1)$rrdJ'"Kf!33!8J"d!!#J
!!!""JJ!JIb2,H%J'"Kf!33!8I'3EH)"p!!")"JBPJ%%!&(m$`hL!!3&S1#%"B(`
)!kDl!IrJ6S!!)!!!!!!!!!!!!!!!!*2Krram#!+Q1q!!!*!!!3!)P#(rX$L"!$K
)"LP4J%%!&&4J"Mp"JJ!dS!%!1#J!!"G!JJ!SJ'%!1M`$XUSS!'Pc3))!')"K!%)
m!l+U+!"KD8##!!Jli!!"Iq2lH)!"!&Ji)3"3I!J$TS2Krra1J!!J[k(rp(`)!UB
iBPpQ1q*FYT!!!3!)P#(rN!#)!`!!+!!!!%##!!`iB!!!5!!!f$J!!!'B(`!!1)%
!5$KJ!!SiS!!+1-!!!%J&rDf!33!81)%!5$KJ!!SiS!!+1-!!!%J&rC@!33!81)%
!5$KJ!!SiS!!+1-!!!%J&rAf!33!8J')1h%J'+*'!33!8I(iEH%J'+*f!33!8Im6
cH$LJ!!")"LLPJ%%!&(ap'hKr`r0i5!BSVB""!"3S(3!!3B)!0(qMkhJiJ3!i5!B
S0B""!"4)"LKGJ%%!&(qNkhK)"LLCJ%%!&$KK!$K)"JFYJ%%!&$!GrrmiB!!!I!$
T%*Kr!!"8!`BqJ!%!H$JK!(#lSIrdI!J$TNk!!#!!!!!!!!!!!!!!!!#rBIrXI!J
#TMaJCAD$BJRNJi)*k$ZLA,BiBfjd1m*DV$[L9d#3!!%!#$J!!!#8)Iq3!*!!!3!
i1)%!1%J&p#Q!33!8I'!(08##!M5!!3!i9!!(rd'#!LL!BJRd5!BKqB""!"3mJ(&
e2-"KCAaP'hJiCRCd1)4TG$M!!!!ii!!!5!BKlB""!"5!BJR`5!BKbB""!"3mJ'p
K2-"KCAaP'hJiCRCd1)4`F$M!!!!ii!!!5!BK[B""!"5!BJRX5!BKQB""!"3mJ%e
@I'8EH$KNDA-iK'9M1-!!!$MJ!!")"L'4J%%!&(q$ihK)"L&YJ%%!&$b!69CmC4Y
i1'4TFcL%Ff8i`!!!11!!!%J')@@!33!8Ii2MH%J')8'!33!82)"09RaP'hJiC'P
c1)4NFcM!!!%ii!!!5!BK1B""!"4rBpYi5!BK&B""!"3mJ%e@I'8EH$KNDA-iK'P
Z1-!!!6MJ!!")"L%0J%%!&(pMfhK)"L$TJ%%!&$b!69CmC4Yi1'4TFcL%B@Ni`!!
#11!!!%J')1'!33!8J')*i%J'),f!33!82)"09RaP'hJiC'Pc1)4cC$M!!!!ii!!
!5!BJYB""!"5!BJRF5!BJNB""!"3mJ%e@I'8EH$KNDA-iK(9N1-!!!$MJ!!")"L#
*J%%!&)"L$YK)"L"PJ%%!&$b!4QNm`%e@I'8EH$KQDA-iK'jT1-!!!$MJ!!")"L"
CJ%%!&)"L$Y4)"L!eJ%%!&$b!8()m`%e@I'8EH$KQDA-iK'pR1-!!!$MJ!!")"L!
TJ%%!&)"L$Y")"L!&J%%!&$b!3@)m`%e@I'8EH$KQDA-iK'pb1-!!!$MJ!!")"Kr
jJ%%!&$KLAf+)!`!!+!!!!%##!Q3iJ3!m1'!%!%J&mRQ!33!89'!'2d'#!Nb!B3!
q2!1bULJ!DA0!JJ)`J'%!4M`$XUSS!'&T3))#,$J!!!'B(3!!1)%!2$KJ"!!iS!!
!1-!!!%J&qIQ!33!89'!'2d'#!"!iB3!m5!B%"B""!"3iBPpT1!!!!*JG!!#)!`!
!+!!!!%##!4`lIJ!#If2EH$L!!!")"IB4J%%!&&4J"Mp!JJ!X1(m!H$L!!"0)"IA
jJ%%!&&4J"Mp"JJ!8If2EH$L!!!")"IVCJ%%!&(pMfhJiJ!!#5!AedB""!"48B!B
r3))!3$Kr!(JiJ!!95!AeZB""!"48B!Br3B)!'(pMfhJiJ!!#5!AkQB""!"4)!!!
81'*@A$L!!!G)"IU&J%%!&(pMfhJiJ!!"5!AeIB""!"48B!Br3))!,$Kr!(JiJ!!
85!AeCB""!"48B!Br3B)!&(pMfhJiJ!!"5!Ak4B""!"4rBpYi1)!!!dJ&p6f!33!
89'!'2d##!#`iI`"i1)!!&NJ&p5@!33!89'!'2d'#!"4rBpYi1)!!!dJ&qJ@!33!
81hi!!hpMfhJiJ!!!5!AdqB""!"48B!Br3B)!)$Kr!)iiJ!!!5!AjfB""!"3iBPp
R1!!!!CJ$!!"rBpYi1)!!!8J&p-@!33!89'!'2d'#!"3iI`#11)!!!8J&qD@!33!
8If2EH$L!!!*)"I5GJ%%!&&4J"Mp"JJ!81(m!MML!!!*)"IPpJ%%!&)!H!!3X!!!
!3B)!'$J!!!)iBPUmQ"m!L)JI!)L`!`!31'*@p$J!!!1B!`!!5!!!%%[rqJ98B!B
r3),q%)!"!(Ji)3"`Zf(rl(`)!kC1J!!J!!!!!$KLAfBiJPj%L!-!!#J!!!"0JJ!
J1'*@e+KM!!!i!rre+!!!'df"!#!iBKhm9!!31RaM!#jmD31Q6S!%)$J!!!'3!!3
!!%k!!#!i!!!$N!!%!!"1J!!J1!!!!T!!"!!!6S!!)$J!!"Q3!!3!!%k!!#!i!!!
GN!!%!!"1J!!J!!!!!!!!!!#rSIrdI!J#TM[LA-#3!!%!#*3KrV#)(`!!+!!!!%#
#!@JmB&081'05)cL!*a")!j%9B!!!!#J$!!""JJ!i1'%!1$L!*a!iS!!"5!AabB"
"!"5)!3!i+!!!!%'#!5arirYi1)%!1%J$bZeJ!!!!5!!"'$KL9HJlS!!!J'-!!)2
$!!")!!$dL"i!ZbJ!!!""JJ$JL"i![#J!!!"!JJ$8J"i!MP3!"MiX!!!"3))!a$L
#9J!iIJ#5J)3!!%J%*4PJ!!!!9'!'2d'#!+JiIJ$!5!3P0@!!!!"8B!Br3B)!P$K
q!-K)"#9aB!!!!&4J"Mp"JJ#!1(i!KML!!!*)"I+aJ%%!&&4J"Mp!JJ"S1(i![cL
!!!9)"I+CJ%%!&&4J"Mp!JJ"3Iq2lH(r%mhK)!mSTB!!!!(r$mhK)"$JGB!!!!&4
J"Mp"JJ"%1)*4V(rMqhL!(J%!J)3!!&3!-$+!K!!!I)3#&%J$bI&J!!!!5!!!($[
H!3il[3!"1'*9l)!$!!"m(3!!3B$r")!"!9Ji)3&3Zk(rp(`)!kC1J!!J!!!!!!!
!!!#pSIqdI!J#TMKLANJj`Pp`1Q*@d$L$rr`k)PTJ1J*@e$U#CA!jiPE-1D*DV$U
L9XSk`PBB1Z*IE$X#8F`l)PCJ1d*A3$YL@V`lJPB81k*@Y$[#8E53!!%!#$J!!#"
m#31QP#(pF$LK!6#!C!!%K!3!#*!!C3!%P!8!#%)!rr")"I'PJ%%!&,"[!!!iB+'
Y5!2(p@!!!!!iJPEHQ'3!!$KJU'")!mIKB!!!!$L#9Ymi!!!!1B*@iMPL9Z!j3PE
N15*@icN#Ai!iiPEQ1-*@m$LL9[+BC!!!1'*@iCJ-!!#B#`!!Q!S!!*J$!!#B#3!
!N!!)!!#B"`!!Q!B!!*J&!!",rq-&5rrR36LLB!Fi!!!!18*FX$KJ!3!j)PEPQ!8
!!$L!!3FiSPER1B*@9$PLA+`j!PC411*@8$M#9P)k3PEd1q*J&T!!#J!!18*J&*J
*!!!j)PbhQ!8!!$LL9Nb3!!`!!*!!#`!!X!S!!*J*!!#B#!!!Q!F!!*J'!!#B%J!
!X"m!!,!&!!")!mR"B!!!!$KL9PJiJ!!!1!!!!C!!J`!!1'!!!$L#9ZLB"!!!5!1
1R@!!!!!iB!!"5!11N@!!!!#SV`!!1'!!!$L!!!")!ikGB!!!!$L#Ca3ji!!!1'*
9r$J!!!)jJQ`S1@*X,$NJrrmj3Q!B11*Ij$N#Aq`i`PD`1+*@h$T#@0JliPMFNH3
!!$L#9I54i`!!1'*FU*(X!!#ak`!!QHS!!,%S!!#3!!F!!*!!'3!!X!B!!,%P!!#
4j!!!NIB!!*(b!!#4r`!!XI%!!*(a!!+Cm3!'NH-!!%J&lmf!33!81)%!l%J%KV&
J!!!!1H%!mMKL9[Kpj(Yi5!2(2@!!!!#T!3$X1!!!!$KL9VSiiPDm1)*Bi)%K!1i
i`PE!1+*@a,%$!!!iBPNSX3F!!*%Q!!#4*3!!Q!3!"NJ&q&@!33!81'*C-%J&q''
!33!81'*C1%J&q'f!33!81+*H3$M!!!!i!2rrX0X"2ML!!"!mB%PZN!$E!!JiBh0
,X*X!!$L!!qL3!0X!$*!!'`&DN!!E!9k3!0X"BT!!f`&QN!$E!@U3!0X"ETME!A+
3!0X"j*!!f`(SX-8!!%J$M(PJ!!!!+!-!!*!!B3"-3B)!))#$!!#SK!!!1!6rrl!
3!!")"IJ&J%%!&%J!!!`i!!!!X"!!!$aJ8h)iBd4c1)!$k%J$M$9J!!!!+!-!!*!
!B3"-3B)!+%J&pqQ!33!8,!-!"%##!"L!J3"-1')DN!#!K!!!J!3!!*!!!`!!5rq
@A8J%-`PJ!!!!5!3A-@!!!!"mF"YiIJ!(08##&@!iB!0%5!Af1B""!"4mF4Yi5!A
f4B""!"4mF"YiIJ!(08##&6`iB!"J5!Af&B""!"4mIaYi5!Af)B""!"4mF"YiIJ!
(08##&4JiB!!"1)!!!8J$NPeJ!!!!1!!!!,!"!*!!X!%!LNJ&lIQ!33!81"X"P,"
K!)`iB3"dN!!"!)C)"IBjJ%%!&(aJ"c9!JJ!8U'%!U)!"!+k`H`'1N!!E!C!!5!A
`fB""!"3iJPj%1+!!!$M!!!'3!+%!Z$J!!!+3!'3!!$KK!,3iJ!!!N!$"!,53!+%
![*!!!3$3N!#K!1")!k5jB!!!!(a`'hKq!!Fe3))8H$L#A-!i!!!!U'%!l(hPHhL
B"!!!J)%!lMM!!!!ii!!!5rqZeAa`'hKq!!Fe3B)!0%J&k-@!33!8IJD$H$KJ!rB
iJ!2a1+!!"8J$YreJ!!!!IJ5$H$KJ!!")"$)0B!!!!%J#H*9J!!!!2'"54$KMFh3
iJ!2S5!1+J@!!!!!iJPbS+!-!!*!!C!!!3B)!$%J&pNQ!33!8J*i!!$LJ!!!iBKh
X1-!!!)#%!!")"I@&J%%!&&4M"MiiJPCNI'B!0$KL9Xii!2rrX!-!!$T%!!C8cpi
qN!!6!!"q4*0iIbA,H$KJ!!!i`!!"11!!"dJ%#5eJ!!!!I(!EH(i!"c9"JJ!8IJ5
$H$KJ!!")"$&KB!!!!)!E!9iiB!!!X(X"2L`!!!""J!!)N!!6!!!iJPAX1'!!!6L
L9XL!"!!!1)!!!+M&!!#Sr3!!I!8(0%J#EU&J!!!!J"X"@L`!rrp!JJ!N1'*@cUK
M!!!X!`2S3)%!%$J$r"H3!"X"@NJ!!!L3!(X"@S!E!9iX!2rr3))!$)!6!!#3!"X
"AN[rpkP,rk1eJ(i!!%J&l)@!33!8J(i!!$TJ!!##!`!!5!!!V)!8!!!S!!!!3))
!#%J!!"4q!i0i1)!!2dJ#-&eJ!!!!J"3!!#J!!!"!JJ!)5!!!&$K`!%!iJ!$r5!)
`2@!!!!#!&!!!+!!!!%##!!K)!!!81(!"3$L!!!P)!M!GB!!!!)!8!!!S!!!!3))
!#%J!!"3iF!&U1)!!rdJ#,reJ!!!!J"3!!#J!!!"!JJ!)5!!!&$K`!QSiJ!$r5!)
[h@!!!!!k%!3@1R-!!DJG!!"qB`FdI!-!!%'!rdb!IJ!!5!A[LB""!"5!&!!!+!!
!!%##!!K)!!!3J(X!'%J#,%eJ!!!!J"3!!#J!!!"!JJ!)5!!!%)"l!9*)!L`aB!!
!!)!8!!!S!!!!3))!#%J!!"3iBPP)1)!!)%J#,f&J!!!!J"3!!#J!!!"!JJ!)5!!
!&$Kk!*)iJ!!I5!)[3@!!!!",rrE*J"3!!#J!!!"!JJ!)5!!!&$KLA-!iJ!!r5!)
[(@!!!!")!r4eB!!!!$aJ@(-iBfKL1)!R$NJ$Kp&J!!!!-!2rrh`!'4!iBPE[Q!-
!!$KJ!qP)"I2GJ%%!&$L#Ah53!'3!!$L!!!")"I8CJ%%!&$KL9[')!`!!+!!!!%#
#!#!iB!2U5!AcVB""!"53!'i!!$L!!!")"I6YJ%%!&$KJ!qY)"I14J%%!&(a`'hJ
iJ!!!5!AddB""!"4q!i0i1)!!!%J&r1Q!33!85!AmqB""!"3iB!2S1)!!!8J$SC&
J!!!!N!"h!!")"HFeJ%%!&)"h!!")"HACJ%%!&$L#9[K)"IcGJ%%!&)"h!!")"HA
"J%%!&$L!!!K)"IRGJ%%!&$KL9Z')!`!!+!!!!%'#!"!iBPdJ5!AZXB""!"5!G`!
!1+%!C$L!!!e)!lReB!!!!+M"!'3i!!!-U'%!D$L!!!%iSPbqI-BB8)"h!!"m"J2
@X!8!!%J&j`Q!33!8J')*D%J&jL@!33!8I'8EH)"h!!#3!+)8,$L!!"0)!lP&B!!
!!)"L#@4)"HB"J%%!&(aP'hL!G`!!N!#L&#JiJ!!,5!1j)@!!!!#!G`!!1)!!#)#
L&#K)!lN0B!!!!)"L#@")"HA*J%%!&(aP'hL!G`!!N!#L&#3iJ!!-5!1ik@!!!!#
!BJl%5!APTB""!"4mC4YiJ(F!!*!!SK3J1)!!$8J$Z-9J!!!!J')1`%J&jB'!33!
8I'8EH)"h!!#3!+)8($L!!"G)!lLKB!!!!)"L#9a)"H9GJ%%!&(aP'hL!G`!!N!#
L&"JiJ!!25!1iI@!!!!#!BJPB5!AP1B""!"4mC4YiJ(F!!*!!SK381)!!%%J$Z&P
J!!!!J')*A%J&j4@!33!8I'8EH)"h!!#3!+)8%$L!!"&)!lJeB!!!!)"L$Va)"H6
aJ%%!&(aP'hL!G`!!N!#L&!`iJ!!55!1i%@!!!!#!BJP85!ANcB""!"4mC4YiJ(F
!!*!!SK3)1)!!&%J$YqeJ!!!!J(F!!$LK!&`iJ!!*5!1i1@!!!!#!G`!!5!AM[B"
"!"3i!!!!N!!"!$JiJ3"F1+)6h$M!!!%ii!!!13!$mMNJ!!%j3!2a5!Am)B""!"5
3!(B!!$L!!!&)"I+CJ%%!&)"f!!")"I`GJ%%!&$L#9K#3!'3!!%J$Kb9J!!!!J(F
!!$LK!%3i`3"-11%!C$L!!!G)"H-CJ%%!&+KK!'3iJ!!3U-%!CMMK!'3i!`#%U+%
!DV#"!&"mKLK3J(F!!,#"!&)iJ!!(U+%!4)$"!%b`!3"S5!AP!B""!"3iB3"N1)!
!!MLJ!!*)"Hb&J%%!&$KK!'`iJ!!!1+!!!$M!!!%ii!!!5!AY%B""!"5SB3"U1!!
!!*!!!3"81!2rmB"L#8b`!3"U5!AlHB""!"53!'%!@)"h!!")"H+TJ%%!&$J!!!'
!S3"3N!!"!$KmCaYi1'%!C*-"!$`iJ3"X1-%!9$N!!!%j)!!!18!!!%J&qdf!33!
8J')1Z%J&qh'!33!8J*J!!)#%!!#3!'3!0(iMLhK)"HETJ%%!&(iMLhK)"HDYJ%%
!&$LL8G!iJ!!!J(%!!)!##853!+-#S)"a!!#3!)-#R)"a!!#3!)-#N!#!F3!!N!#
$!Tb!F3!!Nq-#Q)"a!!#3!!-#M)"i!!#!B`!!NL-!4)"a!!")!ScaB!!!!$KL9ZH
)!`!!+!!!!%'#!'#!F3!!1)!!"$J!!"+`J`!%1'%!E$L!!!#`&3!!1+!!!$M!!"!
ii!!!5!AVkB""!"5!I`!!1)%!E)#L#8!ii!!!J-)*2$N!!!")!jd"B!!!!$J!!!'
`!3"#5!!!()"a!!!iJ!!$1!!!!,#$!!5`&3!!X!%!3UL9!!!iB3"X1+!!!$J%!"C
mK!FdI!B(0$MJ!!")"HZ"J%%!&+J"!%)iJ3"XJ(m!!$MJ!!!F!!!BJ+)*1)$##64
mB`)813!!!%J$R)eJ!!!!U28!!$KK!'bSJ3"#1+!!!+J"!'Sia!!"1)F!*,$"!%)
ia`!@I!3!8(c%"c4m"JFd11!!!%J&kaQ!33!8U!%!3ML"!'b!I`!!11!!!"`!!"L
!SJN`J-)*,(aM!K3j!!!!5!1F*@!!!!#S`3"#1'%!E+L"!'SiS!!!1-B!!6J%rpb
``3"#I!3(0$M!!!!ii!!!5!AU[B""!"5S!3"#1)%!E)"r!!!ii!!!(!!!')#L#5L
!`JNNI'-#&$N!!!")!j[*B!!!!)"L#5")"H%PJ%%!&(aP'hL!G`!!N!#L&!3iJ!!
(5!1d4@!!!!#SI3!!1)!!!)#i!!")"IR4J%%!&$L#9HJiS!!!LAS!L$J!!2q!j!!
!1)*9l$S0!!+TA3!!IJ1$H)$%!!#"2J!!1)!!"B%A!!#aH`!3X9X!%T%l!"54'`%
kN!$l!8+3!0X"4V#l!8U3!,X"6*J0!!*)"HK*J%%!&$KLA,Bi!!!!1Ld!"*J0!!1
3!!d!"*J$!!",rqSK1'%!3%[rfqQ)QJ#)I(-EH(b!"h9!J!!-I!3!d*JD!)L!G`!
!1+%!A$L!!!0)!l2KB!!!!)"h!!")"GpPJ%%!&$J!!!#3!!%!1$L"!&`iSK2F1-!
!!6MJ!!!j!!2c15!!!6P!!r&)"II*J%%!&*!!I!!!L*S!L%J&lN'!33!8IH0lH%[
rj3e8B!BrI'dEH%'#!#JiB3"F1)"!!$LJ3!")"H(4J%%!&)"m!!!iJ3"F5!B4mB"
"!"3iB!!!5!ATCB""!"3mB&"*1'0$9$L!%iK)!i!4B!!!!#J$!!#3!'%!6%##!'#
!G`!!1+%!A$L!!!*)!l-KB!!!!)"h!!!iJ!!#5!AYdB""!"5!G`!!1+%!C$L!!!j
)!l,pB!!!!+LK!'SiJ!!1U!%!BMM!!!#!G`!!I!8!8(`&"c4)!l(CB!!!!$KJ!!&
)"HMGJ%%!&&@J"Mp"JJ#XJ!%!6#J!!!"!JJ#3!$aJ9%8iBeK81)!"p%J$Ih9J!!!
!+!-!!%##!(3iB!!15!1!N@!!!!"8B!Br3))!B)"h!!!iS3"%1-%!6$MK!&`iJ!!
$5!AGcB""!"5!G`!!1+%!4$M"!%`ii3"X1)!!%dJ&hE'!33!8U!%!A$MK!'b!G`!
!1)!!%l!"!'bSS3"%J-%!6%J&hl@!33!8J(F!!$L!!!0)"HcGJ%%!&$KJ!!%iJ!!
!5rr)[5J6!!""JJ!m1'!!2cL!!!")"GcjJ%%!&$L"!%)iB!!!5!AJUB""!"4qBjY
i5!AJYB""!"5!G`!!5!AHXB""!"3iB!!#5rmp&94J"Mp!JJ!J1'!!!%J$IG9J!!!
!1'!!!$L!r'&)"#APB!!!!$KL9ZQ)!`!!+!!!!%##!"3iBPpRL!-!!#J!!!""JJ"
i1'!!2cL!!!")"GaeJ%%!&(i$JhJiJ!!"5!AJRB""!"48B!Br3B)!%$KJ!PK)!4P
"B!!!!$KJ!$miJ!!!5!AF3B""!"3iB!!(5!0r0@!!!!"8B!Br3))!%$KJ!I4)!4N
4B!!!!$KJ!$miJ!!!5!AF%B""!"3iB!!$5rmm994J"Mp!JJ!J1'!!!%J$I49J!!!
!1'!!!$L!r'&)"#8PB!!!!$Qk!)PpSfYi1)!!"NJ&i!Q!33!89'!'2d'#!2JiBPb
SJ!-!!#J!!!""JJ$S1'*@kBJ$!!!S!!!!3B)!f)JD!C-S!!!"3))!++Kk!C3iJ3"
%5!'Jr@!!!!"mB!Fe3))!%+KK!%4)"!ZCB!!!!(fMDhJiJ!!$5!AISB""!"48B!B
r3B)!N!!iB3%d1)!,`MLJ!!T)"GhYJ%%!&$KL9[')!`!!+!!!!%'#!$JiBPpd1)%
"0$LJ!!'!B`!!5!ATpB""!"3iBPpd1))6p$LJ!!+!B`!!5!AThB""!"4)!!!iJ'i
!!$L"!63iS!!!5!ATaB""!"5!EJ!!1))6p$LJ!!&)"HQaJ%%!&$KLA,Fi!!!#Q!-
!!%J$j,eJ!!!!1'*DA$L#@PK)!mXGB!!!!$aJ!!)iBi!!5!AL[B""!"3iJPr`N!"
N!!")"HEPJ%%!&(a`'hKq!!Fe3))&h$aJ9%8iBeK81)!"p%J$I%eJ!!!!+!-!!%#
#!"5!G`!!1)!!$NJ&kL@!33!8L"S!M#J!!!*!JJ!X1!!!!DL"!%"m!!FdI)!#H(`
$$R"m!#!iI!!B8&3$$rj,rpia5!!#9)JD!)dX!!!$3B)!P%#!!"3X!!!"3B)!(%#
!!$a)!!)d,!!!"8'#!GK!J!)S5!!!f)"h!!!iJ!!&5!ATXB""!"5!G`!!1)!!#NJ
&kD'!33!85!!#!)"h!!!iJ!!&5!ATMB""!"5!GJ!!1)!!!$LJ*a")"GdaJ%%!&)"
h!!!iJ!!*5!ATDB""!"5!G`!!1)!!&dJ&k9Q!33!85!!"Z$KL9UkS!`!!,!!!!N#
!!"5!G`!!1)!!"8J&k6@!33!8J(F!!$L!!!T)"HNPJ%%!&)"f!!!iJ!!!1+!R%%J
&h-Q!33!8J(F!!$L!!!P)"HN"J%%!&)"h!!!iJ!!A5!ASmB""!"4)!!&3J(F!!$L
K!'3iJ!!,5!1Z'@!!!!#!G`!!1+%!A$L!!!9)!ki&B!!!!+LK!')iJ!!&U!%!DMM
!!!#!G`!!I+8!8$J&rrCm"3Fd5!1Xh@!!!!#!G`!!1+%!C$L!!!9)!kh*B!!!!)"
h!!!iS3"F1)!!#NJ$VE9J!!!!U+%!BML!!!US!3"Q1-!!!)"h!!"mT3"31!ArpR`
&"c4)!kb0B!!!!)"f!!!iJ!!!1+!R%%J&fr'!33!8J(F!!$L!!!P)"HJTJ%%!&)"
h!!!iJ!!A5!AS'B""!"3iBPDZU!-!!#`!!!*!J!"XJ(F!!$L!!!9)"HIjJ%%!&%J
!!&L!G`!!1)!!"8J&jq@!33!8J(F!!$L!!!T)"HI9J%%!&)"f!!!iJ!!!1+!R%%J
&fhQ!33!8J(F!!$L!!!P)"HHaJ%%!&)"h!!!iJ!!A5!ARSB""!"5!!K2i1D!!!*!
!!3")5!!!()"K!%KpT'Yi1+!!!$M!!!",rf"*1Dd!!6KL9VLS!`!!ID-(0(`$!!"
"J2rB1D!!!%J!!+3iBPAdID3(0)!4!!"8K3JmJ--!!)"q!!!X!!!!J-B!!)"M!!"
mTLUZI+!(0"`!""Cp``)83B)!&(iMLhK)"GZ4J%%!&*KZ!@')$J&K+!!!!%'#!%a
p`h0iID4VH$LJ!!%i`!!"11!!!6N!!!",rd#*1'*@liJ$!!!S!!!!3B)!)(j%NhK
r*FYi1'!!!$M!!!%ii!!)5!2hm@!!!!!jV3!"1'*@Z+J$!!"pS`FdI!-!!%'!re!
jS!!!5!!!()"K!%KpT'Yi1+!!!$M!!!",repC1Dd!!6KL9VLS!`!!ID-(0(`$!!"
"J2rBJ(`!!)LD!)K)"HC0J%%!&$KLA,U)QJ#)U!-!!(`%!!"!JJ!35!+45@!!!!"
)!!!B5!+3!&eJ!!!!1'!!!%J#Cb&J!!!!J(F!!$L!!!",rd041)*ID$J!!!'!I!!
!Q!3!!%J&fbf!33!85rp2"6KJ!!")!6lpB!!!!$KL9a`i!!!"Q!-!!$KJ!!")"Ha
eJ%%!&#J$!!""JJ!BJ'-!!)J$!!%iBPFFQ!-!!8J!!"!iBPFF1!!!,*J$!!%iBPF
J1)!$k$LJ!"9)"GL*J%%!&$KL9c!iJ!2S1+!!&NJ&f(@!33!81!!!!,!E!""q4*0
iIbA,H$KJ!!!i`!!"11!!#dJ$pU&J!!!!I(!EH(i!"c9"JJ!J1'!!!%J$GVPJ!!!
!IJ5$H$KJ!!")""l*B!!!!+JE!"!X!!!!3B)"&)"m!!")"GT4J%%!&+JE!"#`B3"
#I!!!d)"m!!#`'`!3U*X!%%J&j2Q!33!81'*FZULE!"#S!`!!I)-(0(`$!!"!JJ!
35!+2m@!!!!")!!!-5!+2"@!!!!!iBPbkU*X!%+J$!!"mJ`FdI!-!8(`!!$48!pi
q5!*PX@!!!!#SB3"#U*X!%%J%%'&J!!!!1)*@k$J!!!'!G`!!Q!3!!$L!!!",rd(
&1'*F[+LE!"#SB`!!I'!(0(`%!!"!JJ"B5rp0H8J!!&!iBQ!8U'-!!(aJ"c9"JJ!
-5!,RJ@!!!!"q"S0i1'!$pML!!r%iS!!"5!1MU@!!!!!iB!!!5!0eR@!!!!"q")0
i1'!!!%J%(DeJ!!!!J!%#Q$JK!T!!ZD(rY(`)!kC1J!!JI!J#TT!!!3!)P#(rX%J
&e"@!33!85!A8*B""!"4)"G3GJ%%!&%J&e"@!33!82'!!!6KMqrmiJ!!!5!A8'B"
"!"3mB!!"1'2rrcL"!$K)"G3GJ%%!&$aJ!!%iBrrr1)%!1%J&e!Q!33!82'!!!6K
MrrmiJ3!i5!A6pB""!"5!!3"B1#%!8(`)!kC1J!!J!!!!!,q"rr"m#!+QI(iEH*!
!!3!)P#(rS%J&e$f!33!85!AS4B""!"5$i`!!I(dEH(r$mhJiS3!i1-%!2$MK!%J
iJ!!$5!A6iB""!"5SR`!%Ik2VH$J%!+#`(`!%U!%!6V!I!!C)"GCjJ%%!&)#p!!#
SC3"HI'!(0#`!!!*!J!!)1'!!!RaJ"c5SJ3")U'%!6&3!)$Cm(`FdU!8!"(aN'&"
mBrK3I(m(0$Kr!+"m!`"3X!8!"(r$mhJii3")J0d!!$L!!!-iS!!!U!B!$(`!qK5
`"J!-U!%!6)$"!$am!2S8X!%!6%J&e@Q!33!8Iq!(08'#!64r`r0i5!A6AB""!"3
iJ3"!5!A6DB""!"5SJ3"!Im2cH+J"!%5S`3"#U+%!4R`%!&"m(!FdI!BS8(`G"c4
rR2S85!A6)B""!"4rT1YiIiAMH$M!!!")"G@YJ%%!&+M"!%Kr`r0iU)%!5MLK!$L
S!3"1X-%!3$M"!$`ii3")X)%!3ML!!!'`!3"'5!A5UB""!"3iB3")I'8EH$L"!%"
)"G9pJ%%!&&4J"Mp"JJ!FIm2cH(rQqhJiJ!!"1+!!!%J$TK9J!!!!Im2cH$LK!$J
i`3!m11%!5$L!!!&)"G*CJ%%!&(r$mhJiS3!i1-%!2$MK!%JiJ!!&5!A52B""!"3
iB3")I'8EH$L"!%")"G84J%%!&&4J"Mp"JJ!FIm2cH(rQqhJiJ!!&1+!!!%J$TDP
J!!!!J!%!D$JK!'#lJIr`I!J$TNk!!#!!!!!!!!!!!!!!!!"m#!+QN!!"!!L8)Ir
!5!A5"B""!"4)"HB0J%%!&)$$!!"mC"Yi1'%!1)#Q!!L!"J!-N!#K!$L3!!%!2%J
&l3Q!33!8J!%!5$JK!%"m#!1Q6S!!),q"rr"m#!+QJ')1Y$[!!!#3!!%!#*3Krk"
)"G+"J%%!&$J!!!#`!3!iI(dEH$KK!$a)"G+"J%%!&$KJ!$miJ!!!5!A3mB""!"3
mB("81'0iG$L!!!&)"Hk9J%%!&(am'hJiB!4#1)!!!$LJrrp)"G+0J%%!&(ar'hP
"JJ&X5!A5PB""!"3iB!!"5!AD1B""!"3iB!!!5!ACjB""!"3iB!!-5!AD#B""!"3
S(!!!3B)!U(rMqhJiS3"!1)!!!dJ$TA9J!!!!1'%!3(aN'hK)"HKPJ%%!&(aq'hK
rirYi5!A3jB""!"4ra20i5!AP!B""!"4rJq0i5!A90B""!"4rJq0i5!AA1B""!"4
mC"YiJ(`!!(r&mhK)"HZYJ%%!&(q$ihK)"GMKJ%%!&(rMqhKrTHYi1)!!!dJ$T*e
J!!!!Iq2lH$L!!!&)"G)YJ%%!&(rMqhK,rr`KIq2lH%J&d'Q!33!85!1RS@!!!!"
rirYi5!A39B""!"4)"G00J%%!&(rMqhK)"G0CJ%%!&$L"!$JiB!!!5!A6BB""!"5
S!3!i,!!!"8'#!!`X!!!"3),ri#JH!!""JJ!3Im2cH%J&jj'!33!8Iq2lH%J&dd@
!33!8Ik2VH%J&dfQ!33!8J'%!2%J&dh@!33!81!!!!DKK!$Km!!FdI!-!8(`!!$4
8!piqJ!%!D$JK!'"m#!1QZi(rm%k!!##rJIr`I!J#TM[#B!XiJ!HS1+*J$)2L#35
3!!%!#$J!!!#8)IJ!Q"i!!$KK!$bB"3!!5!32N@!!!!!iB!!"Nq%$BML!"kJi!!!
!Q'%$CcaJF(+3!)%!2$KMD83iJ!2UN!!"!%")!h#4B!!!!(ap'hP"JJ!B5!52B@!
!!!"rSqYi5!AF*B""!"3mB("b1'0T4$L!!qK)!h"KB!!!!(ar'hP"JJ(X1'*9k$Z
!!!#!B`!!Jk-!!%J!!$!iI3$31)!!"NJ&dTf!33!89'!'2d'#!"!i!!!"Q"i!!%J
!!"`l[3%11j`!!6KL9Hb!!`!!I"`!!%'!rmL!I`!!1)%!C6LJ!#&)"G+0J%%!&)"
r!!!iJ3"%1+!!)6KM!"")"G*eJ%%!&)"r!!!iJ3('1+!!%$KM!#")"G*GJ%%!&)"
r!!!iJ3#'1+!!3$KM!$")"G*&J%%!&)"r!!!iJ3$'1+!"!$KM!&")"G)YJ%%!&)"
r!!!iJ3!i1+!!"$KM!9")"G)9J%%!&)"r!!!l`32DIm6cH$KM!93iS!%!5!A4qB"
"!"3iBQ9`J!-!!#J!!!"!JJ!)5!!!&(r$mhJiJ!$r5!)@E@!!!!#!I`!!1)%'fML
J!#!iB`*85!A4[B""!"5!I`!!1)%&fMLJ!#!iB`*d5!A4TB""!"5!I`!!1)%%fML
J!#!iB`+85!A4MB""!"3iB3!i1)!!!dJ&d8f!33!8Q'%(iMKK!$JiJ!!"5!A41B"
"!"48B!Br3B)!*%[rqm&8B!Br3B)!'$KJ!!%iJ!!!5!+4I@!!!!")!!!m1'%!2%J
%LNeJ!!!!I'!(08##!"b)!30Q+!!!!%'#!"`iB3!m5!53!0eJ!!!!1'*@j6J!!!'
B!`!!J!%)#$JK#!#lJIr`I!J$TNk!!#!!!!!![i(rm(`)!UBi`PpQI(`EH(bG)hK
m[LYi1q$rrj!!!3!)P#(qd)J'!!!S!!!!3B)!I$LJ!!!iB3"3N!#K!%Ji!3$-1)!
!2*!!S3"-N!#"!*!!N!"K!*53!!%!b%J!!$`iB3")1)%!N!")"GMjJ%%!&(aJ"c9
!JJ!N1'%!N!")!1(YB!!!!&4J"Mp"JJ!32'"KC6Z$GR4)!!!d1'%!5%J&ibf!33!
8I'!(08'#rlK)!!#B1'%!5$L"!*!!5!++3@!!!!"8B!Br3B)!J$aJF(-iBfiJ1)%
!5$M"!%!iS!!)5!A8(B""!"4mIaYiIq!(08##!&KrJq0iIk6VH(r'mhJiS3"!13%
!1$MJ!!")"GmCJ%%!&(ar'hKri!Fe3))!,$KK!$JiJ!!!1+!!F6M!!!%ii2rq13!
!!$NJ!!")"GmCJ%%!&(ar'hKrirYiJ!%"1$JK!6"m#!1QZi(rm%k!!#!!!!!!!!!
!!!!!!!"m#!+Q2'"'6T!!!3!)2)"bC6KM4&+8)Ir!1)4cG$LJrrp,rrk"J!%!5$J
K!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+Q1'*@c*!!!3!)P#(r-$["!)+
SB`!!1q%!2Rr&mhKrj[Yi1)%!J%J%CB9J!!!!I'!(08##!'`i!!!!U'%!J*JI!!"
rjIYiJ*i!!$M"!)")"GAPJ%%!&(aJ"c9!JJ"%2)"dFUKK!)!iK(0S1-%!1$MK!$S
iS!!"5!A3CB""!"4mB!Fe3))!($J!!!#B(`!!1'%!J$L"!$K)"Ij0J%%!&)!"!0J
i)3$3Zm(rq(`)!kC1J!!J!!!!!!!!!!#qBIr-I!J#TRaQ'hNk`PC61q*DB$VL9["
mP#0i1`*4b$[!rrml)PDb1d*J&$YL9P)lJPEP1U*H3$TLAf`lSPG!N!!"!!L8)Ip
`3B)!3+KQ!!!iTJ!'J)B!!MM!!!&)"FPPJ%%!&(aq'hKr`!Fd,!$rrd##!"JiB!!
"5!A*BB""!"3iB2r95!!$[$KLA5K)"0F&I'!(08##!aa,rr8j1)%!1MLK!%!iB!!
!5!A*UB""!"4,rlU4IS1MH%[rfjP)"FNeJ%%!&+KK!$SiJ3!i5!,H"@!!!!#)(!!
!I(3EH#J!!!"!JJ%B1!!!!*J@!!",rrS9L"`!!#J!!!"!JJ%!5rpajBJA!!!S!!!
!3B)!&%J&eA@!33!81!!!!*JA!!#)'`!!+!!!!%'#!'JiB!!!5!$Y&@!!!!"8B!B
r3))!+$KJ!rBiJ!2a1+!!&MM!!!")!jIeB!!!!$J!!!#B'`!!5rrrL$KJ!!")!fR
GB!!!!+Kk!!"mB!Fe3B)!$%J#fiPJ!!!!5rrpJ6KJ!!")!!+i1'*@8BJ$!!!S!!!
!3B)!B)J@!!!S!!!!3B)!9$Kp!)NiJ!!!5!A-UB""!"48B!Br3B)!)$KJ!"diJ!3
15!21H@!!!!"mB!Fe3),r9%J!!#!iB!!C1)!%$NJ$cPeJ!!!!I'!(0#`!!!&"J[m
dU(S!!(aJ"c9"JJ!-5!,Dr@!!!!!iB!!!5!0T-@!!!!!iJPCN1'!!!$LL9Q!ii!!
+J0d!%$L%!!C)!qMKB!!!!+JC!!!X!!!!3B)!C)"i!!")"Fc4J%%!&)"i!!!ki!!
!JX-!!%J!!#b!&J!`N!!"!$b!!3!m+!!!!%'#!"!iB3!m5!A3UB""!"3keJ!i1[F
!!DJC!!"qi`FdI!-!!%'!rmb!H!!!5!A39B""!"3iBQ!-L!-!!#J!!!""JJ!-5!+
,M@!!!!!iBPpTL!-!!#J!!!"!JJ!81'*@p)J$!!!X!!!$3))!I$aJ4QQSP3!!1'0
ZD8J#NVPJ!!!!1'*ICSJ$!!!S!!!!3))!@$aJ!!%iBrrr1)%!4$LJ!$`i`!!!5!A
1lB""!"3mB!!"1'2rrcL"!%3iS!!m1-!!!%J&cY'!33!82'!!!6KMrrmiJ3"%1+!
!2$M!!!")"FkeJ%%!&&D!"Mp"JJ"31'*@iiJ$!!!S!!!!3B)!3$KJ!&")"Fl"J%%
!&$J!!!#3!!-!%Rad'hLS!3!kX"3!&NJ&qif!33!8+"3!!%'#!""qJk0i5!A1`B"
"!"5UP3!!5!!!#(`8!hLSI`!!I'!(08'#!"b!R`!#,!3!!%'#!"!i[`!'5!4A3@!
!!!")"!pjB!!!!(r!"c3X!2rr3B)!%(r$mhK)"G&aJ%%!&)"c!!!S!`!!3B)!&%J
&bI@!33!81!!!!*!!%`!!1'*IBBJ$!!!S!!!!3B)!#%[rIAdiBPpJL!-!!#J!!!"
"JJ!)5rrl#Ak$ShL!!3#B1#%!N!#kBIr-I!J$TNk!!#!!!!!!!!!!!!!!!!"m#!+
Q1'!!!*!!!3!)1)!!!$LJ!!#8)Ir!1-!!!%[rqi@!!3")1#%!3(`)!kC1J!!J[d(
rk(`)!UCmhc0iI,`VH(bE)hKmHKYiI2dlH(dH3hKrBpYiN!!"!!KrK10iIqAlH*3
Krl!i`!!*5!1dL@!!!!"r3p0iIf6EH(q&ihKrj[Yi5!A`NB""!"4)"FRTJ%%!&(a
J"c9"JJ!31!!!#V!H!!")!!#8Id26H%J&fq'!33!85!A*`B""!"4mB!Fe3B)!%$J
!!!Z`(J!!5!!!E(p$dhK)"GP*J%%!&(ar'hK)"FQ9J%%!&(aJ"c9"JJ!31!!!$,!
H!!")!!"!Ik$lH(p$dhKm"!Fd5!Aa,B""!"4)"FPPJ%%!&(aJ"c9"JJ!31!!!$E!
H!!")!!!31!!!!,!H!!!iB!!!J!%!@$JK!&#l3IrSI!J$TNk!!#!!!!!!!!!!!,m
Krq4m#!+QI(NEH(bD)hKmZbYiI0`cH(cp1hKp(N0iN!!"!!L8)IkJ5!ABSB""!"4
mIaYi5!A)lB""!"4mB!Fe3B)!%$J!!"5`(J!!5!!!P#JD!!""JJ!)XrS!!#JG!!"
"JJ!JIb2,H(qQkhJiJ3!i1+%!2%J&iH@!33!85!!!((mMbhJiJ3!i1+%!2$M"!%"
)"H(*J%%!&%J&b)Q!33!8I'!(08'#!"!i!!!9X"i!!%J!!$!S'`!!3B)!$+J"!$L
`'`!!+"`!!%'#!!b!!3!mN!!F!!!i!!!!X"i!!$KJ!!#!!3&S1#%"B,XKrq4m#!1
Q6S!!)!!!!!!!!!!!!!!!!,qKrr4m#!+QI*iMH(ap'hL3!!%!#*3KrV!iJ3!i1+%
!2$M"!%")"H%eJ%%!&)"K!$`iS3"!U)%!1$M!!!K)!l*PB!!!!(qMkhK)"GH"J%%
!&(ar'hK)"FI0J%%!&(aJ"c9"JJ!31!!!(V!H!!")!!#!Iq-(0&4J"cP"JJ!d9'!
(GRqMkhKm"!Fd5!A[@B""!"4)"FH4J%%!&(aJ"c9"JJ!31!!!(l!H!!")!!"%Ik2
VH%J&lf'!33!85!A(DB""!"4mB!Fe3B)!%$J!!##`(J!!5!!!((qMkhK)"G"KJ%%
!&$J!!!#`(J!!1'!!!)!"!9Ji)3&3Zk(rp(`)!kC1J!!J[b(rj(`)!UCmH4YiI*S
MH(bl+hKmh$0iI2dlH(dH3hL3!!%!#*3Krk#S!`!!,!!!!%##!$JmB(0Q1!0ZG*!
!'J!!J(S!!+LC!!4)!f2jB!!!!(ar'hP!JJ"S1!!!+,!H!!!iB2p!5!!!N!!mB%j
'U*N!"$KM6P4)!f20B!!!!(ar'hP!JJ!`2'"'6kLC!!3iBdj85!0MX@!!!!"mIaY
j3))!&$J!!#Q`(J!!1'$r3%J!!%JmB%j'1!019*!!'J!!Iq2lH(pNfhKrKq0iImM
cH$LJ!!!i`!!!5rrp,AaJ"c9"JJ!)5!!!&*2p!!!i!!!!1'!!!,!H!!#!!3"S1#%
!B,XKrq4m#!1Q6S!!)!!!!!!!!!!![`(ri(`)!UCmH"YiI*NMH(bk+hKmfc0iI2`
lH(dG3hJiB!!!N!!"!!L8)IqJ5!A-4B""!"5SQJ!%If2EH%J$B[9J!!!!I(mEH8'
#!&4rBpYi5!AZ@B""!"4mIKYiIm!(0#`!!!&!JIrS,!!rrd#!rq#cfJ!%Iq2lH%J
&cQQ!33!85!A&NB""!"4mB!Fe3B)!&$J!!$+`(3!!5!!!5+[D!!3iB!!"5!A,cB"
"!"4r!m0iIf6EH(r&mhKrKZ0iIbI,H(qSkhK,rrX0I'!(08'#!!K)!!!31!!!!,!
G!!!iB!!!J!%!D$JK!'#l!IrJI!J$TNk!!#!!!!!!!!!!!!!!!!#r3IrSI!J#TRa
k'hKmQb0iI,iVH(cF-hKmr6Yi1'!!!*!!!3!)P#(rX%J&bdQ!33!82'"'6hr%mhJ
iBdj%5!0Kp@!!!!"mIaYj3B)!A$aJ4NmiBdj%5!AY9B""!"4mIKYiIm!(0#`!!!&
!JIrN,!!rrd#!rpb!QJ!!Iq2lH,2%!!*)"FeKJ%%!&%J&a)Q!33!8I'!(08'#!"!
i!!!mX"d!!%J!!%JiB!!"5!A+bB""!"3mJ%C2Id26H(r&mhKrKZ0iIfIEH(qSkhJ
iK%j%5rrk"AaJ"c9"JJ!)5!!!%$J!!!#`(3!!1'!!!)!"!&Ji)3"3Zd(rk(`)!kC
1J!!J!!!!!)%$!!!j3!!!U'J!0$NS!$Bi!`!"I!J(0%J!!%#SD3!!U!3!!(`$!!"
!JJ!SU'N!!UJ%!!*m!`!!3))!',&&!!!i!!!"1'!!!*J'!!"1J!!J18S!!6NT!!C
p3`FdI3!(0(`$!!""J2qi1!!!!*J'!!!iB!!!X!F!!%k!!#!!!!!![`(ri(`)!UC
mHaYiI*`MH(bp+hKmhM0i1q!!!*!!!3!)P#(rS)$M!!#SC`!d1!-!!A`&"c4)!!%
XIq3(0)!F!!!I*!!'1aN!0RaR`#jm!`!!3B%!%(bJ"c4m"!!!3))"!(pMfhK)"F@
&J%%!&(ak'hKrBpYi5!A(2B""!"4rBpYi1*S!"NJ&bR@!33!85!A+RB""!"4mH"Y
iIf2EH%J&`cf!33!8I`!(08'#!"3i!!"'X"i!!(m$`hK)!!#mJ"X!!$XC!$Cr!-)
8I!$!8(m$`hJiQ!!'I+$38%J&`R'!33!8U"`!!,!B!!#S(!!#X"J!!UJF!!5`'!!
%J*X!!)"N!"!X!`!!3B)!$$J$!!D3!!3!%)"N!"3X!`!!3B)!$$J$!!D3!!3!&)"
N!"JX!`!!3B)!$$J$!!D3!!3!')#l!!!i!!!!1'!!!+L&!$3iK!!"X)8!0,2p!!#
`(J!!5!!!($[r!!&ri`FdI+!(0(`$!!"!JIl-1'!!!)!"!'Ji)3"JZ`(ri(`)!kC
1J!!J!!!!!!!!!!#qJIr3I!J#TRam'hKmQL0iI,NVH(cI-hL3!!%!#*3KrB")"F(
*J%%!&$aJ4NmiBdj%5!AD`B""!"4mH"Yi1k!!!8J!"&4rJq0i5!A"SB""!"3mB%C
2Ik6VH$KM6N4)"GUYJ%%!&(aq'hP!JJ!B1!!!8,!I!!")"F'0J%%!&%J!"$4rk2Y
i1)%!2$LK!$iii3&-1-!!!%[rq%emB!Fe3B)!#%J!"""r`r0i5!A+@B""!"4)"F&
4J%%!&(aJ"c9"JJ!31!!!8E!I!!")!!2SIm2cH%J&e&'!33!8Im2cH%J&`Cf!33!
8Im2cH%J&`@'!33!8Id26H%J&`2@!33!82'"'6cKM6N3iJ3&-5!ACdB""!"4mHaY
j3B)!,%J&e!Q!33!8If2EH%J&`9@!33!8If2EH%J&`4Q!33!8IhIEH%J!!!Krer0
iJ(i!!$UJ!!#SB`!d1!-!!A`@"c4)!!(3+"X!!%'#!-"qS!FdJ,i!!"k!!!BiP!!
fIf2EH(rRqhKmK5)81+%!1MM"!$K,rraTI'!(08'#!!K)!!-FL!%!1#J!!!"!JJ!
XJ"i!!$L8!$CrBpYiIqElH(b!)K3iS3!k5rrmYAaJ"c9"JJ"S5!!#k&FJ"rp"JJ"
FU!%!1RrSqhL!Z`!!1)%!4"aJ!!BiB`!fI'8D&$LK!%!i`3"-11%!5%[rq19mB!F
e3))!+)"K!%Krj2Yi5rrhdAaJ"c9"JJ!85!!#P$J!!!#bS3!kQ!%!1)J"!$JS!!!
!3B)!$&FJ"rp"JJ$SIi2MH%J&[k@!33!8IU!(0)#H!!!FB!!'1'-!0RrSqhKmC"S
81)%!4$LK!%!i`3"-11%!5%[rq'emB!Fe3B)!#%J!!M#!B3")5!A)HB""!"4)"Ep
aJ%%!&(aJ"c9"JJ!31!!!8V!I!!")!!))J'%!5%J&dR'!33!8Id26H%J&[bf!33!
8U!%!1RrSqhL"0`!!11%!6"bJ!!D!B3")U)%!3$LP!$D!`3"%I+NU&%[rq39mB!F
e3B)!#%J!!EL!B3")5!A(dB""!"4)"EljJ%%!&(aJ"c9"JJ!31!!!8l!I!!")!!'
3!$Ue!!&qS`FdIX!(0(`$!!""J2iS+"X!!%'#!6"rBpYi5!A1CB""!"4mG4Yi5!@
qXB""!"4mB!Fe3B)!%$J!!&5`(`!!5!!"5(kJ"c48&!Fj3B)!0&3!"hCrBpYiI!3
(0%J&jMf!33!85!@qGB""!"4mB!Fe3B)!%$J!!&@`(`!!5!!"$(pMfhK)"G"9J%%
!&%J&[Nf!33!8I'!(08'#!"!i!!"@X"m!!%J!!14rBpYi5!A34B""!"4)"EiPJ%%
!&(aJ"c9"JJ!31!!!9l!I!!")!!#m,"3!!%'#!$"rBpYiIU5VH%J&jEQ!33!85!@
pmB""!"4mB!Fe3B)!%$J!!&L`(`!!5!!!L(pMfhK)"FDKJ%%!&%J&[FQ!33!8I'!
(08'#!"Ji!!"CX"m!!%J&[E'!33!85!!!@(r$mhK)"FDjJ%%!&%J!!#LSJ3!mIm2
cH+LK!$jrjrYi1-%"6%[rq(&mB!Fe3B)!#%J!!#3l[3!"Ik-(0(m!"c4m!`!!3)(
lT$J!!!#`(`!!1'!!!)!"!SJi)3+!ZS(rd(`)!kC1J!!J!!!!!!!!!!!!!!!!9'2
H[Rb!"c4m!`"3I!!!0&3$hMj1J!!J!!!!!!!!!!#r`IriI!J#TRaq'hKm[bYiN!!
"!!L8)Ir!U'-!!%[rrm98B!Br3B)!(+Kq!!"ri!Fd9!!S0("Mq"pmB!0iX"i!!)!
"!%Ji)3"!Zm(rq(`)!kC1J!!J!!!!!!!!!!!!!!!![f(rl(`)!UCmHaYiI,iVH(c
I-hL3!!%!#$`%Zl3S!%p(P#(rX%##!"b!H`!!Im6cH(rPqhJiB`!55rrrD8J!!4`
m",kd+!"59%##!"b!H`!!Im6cH(rPqhJiB`!)5rrr48J!!2Jm",Zh+!"86%##!(b
!Q`!!1k!!!+KN!!!lK!!#1!-!!A`E"c4)!!"-L"`!$(`!"h3X!!!(3B)!'(`!"c3
X!!!J3B)!$#`!!%"!JJ!8Im6cH(rPqhJiI!!15rrqjBJF!!dl[3!"I!-(G$J$!!j
rR!)8Ik-(0(pJ"c4m!`!!3B$rV%J!!(3m",+l+!"198##!"L!H`!!Im6cH(rPqhK
,rrkK5!!!9$`%XViS!%&53))!5)"l!!!lS!!!Ui-!!%J!!#KrS!FdJ0X!!&3$#$`
iB`!#Im6cH(rPqhKmCKS85rrqB6Zp!!&rS`FdIi!(0(`$!!""J2r3J!%!@$JK!&#
lBIrXI!J$TNk!!#!!!!!![U(re(`)!UCmH4YiI*SMH(bl+hKmh$0iI2dlH*!!!3!
)P#(qJ%J&Z`@!33!85!AM(B""!"4mIaYi1m!!!8J!!K"r)mYi5!@kjB""!"4ra20
i1'%!3%J&i`f!33!85!@kjB""!"4mB!Fe3B)!%$J!!&U`(3!!5!!"p)"K!%!m!lZ
Z+!"@8N'#!F4)"G1TJ%%!&(ai'hJki!!"5!!"S(mMbhK)"EU*J%%!&$KJ!!")"F$
eJ%%!&)"K!%"qj,Yi5!A6MB""!"4mGKYi5!@kHB""!"4mB!Fe3B)!%$J!!&Z`(3!
!5!!"L$KJ!!&)"F#jJ%%!&(l$XhKrU1Yi1)%!1$LK!$Si`3!m11%!4%[rm4PmB!F
e3B)!#%J!!94rC0YiIiAMH$KK!$T,rrd0IX1cH%J&iNf!33!85!@k$B""!"4mB!F
e3B)!%$J!!&b`(3!!5!!"((l$XhK)"F,YJ%%!&%J&ZH@!33!8I'!(08'#!"!i!!"
GX"d!!%J!!24r3p0i5!@jVB""!"3iB!!!5!A!'B""!"5!B3"!U)%!1NJ$9XPJ!!!
!I(8EH$KJ!!&)"ErjJ%%!&#J9!!""JJ!FIU1VH(qNkhK,rr&KI'!(08'#!!K)!!#
FJ)%!2(l$XhKrCGYiIiEMH%[rr,'!J3!mIX1cH+LK!$TrU1YiU1%!1$M"!%4,rqm
&I'!(08'#!!K)!!"JIX1cH%J&`J'!33!85!@j+B""!"4mB!Fe3B)!%$J!!&k`(3!
!5!!!1$Vh!!&qi`FdI`!(0(`$!!"!JIjB1pi!!Ar$"c4ri!FdI!-!!%#"rHJi!!!
!X"d!!$KJ!!#!!3')1#%"J,UKrp4m#!1Q6S!!)!!!!!#r!IrJI!J#TRaj'hKmQL0
iI,XVH*!!!3!)P#(rS%J&Z)f!33!85!AJTB""!"4mIaYi1m!!!8J!!9ar)mYi5!@
iEB""!"4ra20i1'%!2%J&i*@!33!85!@iEB""!"4mB!Fe3B)!%$J!!'5`'`!!5!!
"3)"K!$`m!lZZ+!"@8N'#!4")"G%aJ%%!&(ap'hJlJ!!"5!!!l(mMbhK)"EJ4J%%
!&$KJ!!")"EjpJ%%!&)"K!$arK10i5!A4&B""!"4mH"Yi5!@i!B""!"4mB!Fe3B)
!%$J!!'@`'`!!5!!!e$KJ!!&)"Ej"J%%!&#JB!!""JJ#-I`2$H(pSfhJiS3!i1)!
!!$M!!!!ii!!!5rrZQAaJ"c9"JJ!)5!!!Q+KK!$Kr400i5rrkF94J"Mp"JJ!SI`2
$H(pNfhK,rqpYI'!(08'#!!K)!!"X1jcrrcZprrp)!!!XI`2$H%J&`$f!33!85!@
hCB""!"4mB!Fe3B)!%$J!!'D`'`!!5!!!1$ZF!!&rJ`FdIk!(0(`$!!"!JIm-1pi
!!Ar$"c4ri!FdI!-!!%#"rT`i!!!!X"X!!$KJ!!#!!3"S1#%!B,X"rq"m#!1Q6S!
!),lKrpam#!+QI(XEH(bF)hKm[5YiI0icH*!!!3!)P#(qN!")"EE*J%%!&$aJ4&)
iBeC55!A2`B""!"4mHKYi1q!!!8J!!UarBpYi5!@fSB""!"3mB%45Iq6lH$KM9P*
)"FqYJ%%!&(aj'hP!JJ!B1!!!EV!H!!")"ED0J%%!&%J!!Sarb20i1)%!2$LK!$S
ii3"!1-!!!%[rl8emB!Fe3B)!#%J!!QKr)mYi5!@r@B""!"4)"EC4J%%!&(aJ"c9
"JJ!31!!!El!H!!")!!*!Ib2,H%J&b9'!33!8Ib2,H%J&YTf!33!8Ib2,H%J&YQ'
!33!8Ii2MH%J&YI@!33!82'"%8MKM9P)iJ3"!5!A1dB""!"4mGaYj3B)!`(r)mhJ
iS3!i1)!!!$M!!!!ii!!!5rrXYAaJ"c9"JJ!)5!!"d(lMZhK)"FMKJ%%!&(lMZhK
)"EBYJ%%!&(lMZhK)"EAaJ%%!&&HJ"rp"JJ!iIZ1lH(r%mhK,rqeaI'!(08'#!!K
)!!'-U)%!1(q$ihKraI0i5rrmYAaJ"c9"JJ"!5!!"F(lMZhK)"EiaJ%%!&%J&Y9Q
!33!8I'!(08'#!"!i!!"`X"i!!%J!!8Kr)mYi5!@q8B""!"4)!!%BIi2MH%J&Y4'
!33!81'!!!%J&Zhf!33!81Z!!$$X!rrp)!!"32'"%8RlNZhJiBeC55!05(@!!!!!
S!`!!3))!$(liZhK)!!!i5!@pYB""!"4)"E6GJ%%!&(aJ"c9"JJ!31!!!FE!H!!"
)!!$-1[F!!AlJ"c3X!!!D3)(rV$KJ!!&)"EX0J%%!&(m!"c3X!2rr3))!$$KJrrj
)!!#F2)"%8UMK!$ar)mYiI`A$H(r)mhJiK&C51-%!3%[rkM9mB!Fe3B)!#%J!!("
r)mYi5!@p-B""!"4)"E4CJ%%!&(aJ"c9"JJ!31!!!FV!H!!")!!")U+%!1RpMfhK
rK10iI`E$H(r(mhK,rrMTI'!(08'#!!K)!!!N1rm!!ArM"c4r3!FdI!-!!%#"r8`
i!!!!X"i!!$KJ!!#!!3&i1#%"F,VKrpam#!1Q6S!!)!!!!!#qSIr8I!J#TRap'hK
mQ50iI,FVH(cH-hKmrcYiN!!"!!L8)Ik!5!@cTB""!"4)"GZpJ%%!&(af'hJlJ!!
"5!!#p(qMkhK)"E1&J%%!&(q%ihJiB3"%5!AEVB""!"4Ai!Br3B)!()"K!%3m!iQ
E+!"bFd##!!`lB!!!5!!!&)"K!%4)"Fa4J%%!&(al'hJl3!!"5!!#M(qMkhK)"E-
aJ%%!&)"K!%4r400i5!A-3B""!"4mH"Yj3))!'$J!!(L`(J!!5!@c)B""!"4)!!+
%ImMcH$L"!$SiS3!m1-%!3$MK!%K,rqRKI'!(08'#!!K)!!*JI`2$H%J&Zqf!33!
85!@bjB""!"4mB!Fe3B)!%$J!!(Q`(J!!5!!#1(mMbhK)"E+YJ%%!&$KJ!!")"EN
CJ%%!&&IJ"Mp"JJ"dJ'%!3$`$ZE8S!%9C3))!C)J"!%JS!!!!3B)!@)"K!%3iJ3"
)5!A,AB""!"4mG4Yj3B)!+(r)mhJiJ3!i1+%!2$M"!%!ii3")5rrT3AaJ"c9"JJ!
d5!!"`)"K!%5SJ3!m5!02D@!!!!"mG4Yi5!!!')"K!%5SJ3!m5!028@!!!!"mG4Y
i1'!!!8J&Z)'!33!8+"8!!%'#!$a@i!Ir3B)!*(kMUhKra20i5rrTiAaJ"c9"JJ!
)5!!"B$UJ!!")!!!8I`2$H%J&Z[f!33!85!!"&&IJ"Mp"JJ#mJ'%!3$`$ZE8S!%9
C3))!V#J9!!""JJ#NIb2,H%J&XCf!33!81'!!!%J&Z!Q!33!81!$rrl!"!$`kS!!
!5!!!8$aJ4NYqT+Yi1'0&@8J$6U9J!!!!+!-!!%##!!bbS3!m5!!!1%J&ZMf!33!
85!@aCB""!"4mB!Fe3B)!%$J!!(Z`(J!!5!!!Z$Ue!!&qS!Fd,!!!#8#"rk`iB!!
"5!@hPB""!"5S!3!m,!$rrd##!!`iB2rp5!!!L)#"!%"r!m0iU+%!2(r)mhLSi3!
k1-%!5%[rjX&mB!Fe3B)!#%J!!'"r!m0i5!@j[B""!"4)"E$PJ%%!&(aJ"c9"JJ!
31!!!HV!H!!")!!!i1eS!!Ap$"c4rB!FdI!-!!%#"r@`lR!!"Ii-(0(l!"c4m!`!
!3)(p"$J!!!#`(J!!1'!!!)!"!BJi)3'!ZU(re(`)!kC1J!!JNq(rr(`)!UD3!!%
!#(bJ"c3X!!!#P#(r`%'#!$4!J!!3,!!!!8#!!"4)!!"-,!!!"%#!!%4)!!!XI-8
cH(cQ1hK,rrP"I(mEH%J!!#ama60iI1BlH%[rlLemIaYi5!!!'(c&-hKmjMYiI3G
$H%[rr$9mIaYi1'!!!8J&YQQ!33!8Iq2lH)!"!%Ji)3"!I!J$TS2Krra1J!!J!!!
!!!!!!!#r3IrSI!J#TMb!4&*mIaYi1'4@8ML!!!'3!!%!#*3KrU")"FM*J%%!&(a
k'hP"JJ-FIqMlH$L"!$SiS3!i1-%!3$MK!%K,rqCpI'!(08'#!!K)!!-%U!%!1#`
!!!a!JJ!BId26H%J&Z%f!33!81'!!!%J!!Z4r3p0i1+%!5$L!!!a)"GFjJ%%!&%J
&VeQ!33!8I'!(08'#!"!i!!#%X"m!!%J!!V5SJ3!kId26H%J&e[@!33!85!@[,B"
"!"4mB!Fe3B)!%$J!!)@`(`!!5!!#L(p$dhK)"F%0J%%!&%J&V`@!33!8I'!(08'
#!"!i!!#'X"m!!%J!!Q"r3p0i5!A!rB""!"4)"DlGJ%%!&(aJ"c9"JJ!31!!!Kl!
I!!")!!)iId26H%J&Yif!33!85!@ZYB""!"4mB!Fe3B)!%$J!!)L`(`!!5!!#%%J
&eU'!33!8I(dEH$Z!!!&)!!(JIi6MH$KK!%4)"GDGJ%%!&%J&VR@!33!8I'!(08'
#!"!i!!##X"m!!%J!!G#!B3"%2!1lVLJ!9P*"JJ'J5!A(1B""!"4mIKYi1f!!!8J
!!A`iB!!!5!@dNB""!"5!B3"%If6EH%J&abQ!33!8I(SEH%J&VK@!33!8I'!(08'
#!"!i!!#$X"m!!%J!!A!iB!!"5!@d9B""!"4r3p0iIqMlH$L"!$SiS3!m1-%!3$M
K!%K,rq5eI'!(08'#!!K)!!%mU)%!1$KK!$`iS!!-5rr`UAp$dhK)"GATJ%%!&)#
"!%"r3p0iU+%!1$M!!!a,rr$TU)%!2(p$dhJiS3")5!A9BB""!"4)"Df"J%%!&(a
J"c9"JJ!31!!!K,!I!!")!!$FU)%!1Rp$dhK)"G8GJ%%!&%J&V9@!33!8I'!(08'
#!"!i!!#&X"m!!%J!!,"r3p0i5!@r0B""!"4)"DdYJ%%!&(aJ"c9"JJ!31!!!KV!
I!!")!!#)Id26H%J&[b@!33!85!@Y"B""!"4mB!Fe3B)!%$J!!)H`(`!!5!!!B(p
$dhK)"E@eJ%%!&%J&V0f!33!8I'!(08'#!"!i!!#)X"m!!%J!!$JlH`!"If-(0(r
!"c4m!`!!3)(qI$ZF!!&rJ`FdIk!(0(`$!!"!JIiB1!!!!,!I!!!iB!!!J!%"D$J
K!@#l3IrSI!J$TNk!!#!!!!!!!!!!!,q"rr"m#!+Q11*JGhbm+hKmh60iN!!"!!L
8)ImJL!F!!#J!!!""JJ#d1!!!!*JF!!#`B3!i1'%!1*!!J3!k1)%!J*J"!$j)"Df
YJ%%!&(aJ"c9!JJ#3!$L"!)!iB!!!5!@XeB""!"4mIKYj3B)!H$L!!!&)"Dh*J%%
!&(ar'hP"JJ"-Ii6MH$LJ!3!i`!!!5!@YaB""!"4rirYi5!@XqB""!"3S(3!!3B)
!*(q$ihJiJK3d5!1#)@!!!!"rJq0iIk6VH%J$JK&J!!!!Im2cH%J&V-@!33!85!!
!$%J$ZpPJ!!!!J!%!k$JK!1#lJIr`I!J$TNk!!#!!!!!!!!!!!!!!!!#rJIr`I!J
#TRbp+hKmI"YiN!!"!!Ji!!!!P#(qX,#"!+3li3#UJ)8!!$LK!1b3!)%!TML"!+5
B!3#U5!"0+@!!!!"mIJFe3))!J$KK!1`ii3#N1)!!!$LJ!!!i`!!!13!!!%J&V+Q
!33!8I(iEH(r!"c9!JJ"8U)%!T$LJ!!#!!3#Q1'%!1*!!S3"%Nq%!5V#"!%k3!!%
!D,#K!&4)"DejJ%%!&(aq'hKr`!Fe3))!()!"!'KrJq0iIq6lH*!!(3!!5!1"j@!
!!!"r`r0iJ!%"@$JK!9"m#!1QZi(rm%k!!#!!!!!![d(rk(`)!UCmQL0i13*J&Ra
r'hKmZbYiI0`cH(cp1hKrAY0iN!!"!!L8)IqJU!J!!#`!!!"!JJ!`1'*A3$L!!!8
iB`#*5!@TeB""!"48B!Br3B)!&+Kr!!!iJ!!#5!1B&@!!!!"AS!Br3B)!D$KLAi#
!!`!!,!!)!%'!!!`X!!J33)%!&$YJ!!!lJ!!!1m!!!%J!!%#!ZJ!!1m%!1)!D!!3
iB3"!1)!!"j!!S3!iN!!"!$b!ZJ!)J"S!$*!!S3"!N!!"!%4)"DijJ%%!&$J!!!#
3!!%!3RrMqhKra20iIfAEH(q'ihK)!V(aB!!!!)!"!'Ji)3"JZd(rk(`)!kC1J!!
J!!!!!(`)!UD3!!%!#(c!"c3X!2rFP#(r`%##!!JiS!!@5!0cj@!!!!#!!3")1#%
!3(`)!kC1J!!J!!!!!!!!!!!!!!!![m(rq(`)!UBliP'd1+!!!*!!!3!)P#(r`%J
!!'!iBPA`I+!(0&3!#$b!B`!!J'-!!(r$!Ujr`!Fe3))!2)"r!!")"DPCJ%%!&(r
!"c5!I`!!(!!%&S"M!!"mB`)85!+H0@!!!!#!I`!!5!@Y#B""!"4)!!!F1+8!!6K
L9VCmT!FdU!-!!(`%!!""J2q8J!%!5$JK!%#l`IriI!J$TNk!!##6iIrmI!J#TM[
L8E53!!%!#*3Krl!iJ3!i5!)p'@!!!!#S!3!i,!!!rd##!!a,rrme5!!!1)"r!!"
)"DM"J%%!&+J"!$L!I`!!(!!%&S"M!!"mB`)85!+GR@!!!!#!I`!!5!@XFB""!"5
!!3"B1#%!8)2Krram#!1Q6S!!)!!!!!#6iIrmI!J#TRar'hL3!!%!#$KJ!!L8)Ir
!5!+Fk@!!!!!iB!!'5!0'A@!!!!"8B!Br3B)!)$KLArk)!`!!+!!!!%##!%"rirY
i5rrr18J!!$4rirYi5!*L6@!!!!"8B!Br3B)!&$Kr!#&)!Td*B!!!!%J!!""rirY
i5!+Fq@!!!!#!I`"LJ"m!CRaM!K4)!Tf9B!!!!)!"!%Ji)3"!Jq(rr(`)!kC1J!!
J!!!!!!!!!!"m#!+Q1'*R&*!!!3!)1)!!!*3Krm#!B`!!+!-!!%'#!%4)"D0"J%%
!&%J$3EPJ!!!!9'!'2haN'hK!JJ!S1'*R%)"M!!!S!`!!3B)!'%J&Sa@!33!85!0
"M@!!!!"mC"YiI)-MH)!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!#6iIrmI!J
#TT!!!3!)P#(r`%[rrh&8B!Br3B)!)%J#S)9J!!!!5!@M(B""!"3iJPq3!$J$!PL
3!!3!!%J#RRPJ!!!!9'!'2har'hK"JJ!J5!0FC@!!!!"8B!BrI(mEH%##!!a)!U"
"B!!!!$KLB!f)!`!!+!!!!%'#!!Jli!!"Iq2lH)!"!%Ji)3"!I!J$TS2Krra1J!!
J!!!!!!!!!!!!!!!![m(rq(`)!UBliPr3I*iMH*!!!3!)P#(r`%J&cGQ!33!89'!
'2d'#!"K,rrmj9'!'2d'#!!`iB!!"5!!!,)!I!!"m(J!!3)!!$$KJ!!")!!!BI'$
`8%J#R4eJ!!!!Npm!!$KJ!!#!!3")1#%!3,["rrKm#!1Q6S!!)!!!!!!!!!!![`(
ri(`)!UBiiQ!@I,XVH(bC)hJliQ!*I0`cH(dG3hKmH"YiIf6EH*!!!3!)1!!!!*3
KrI#Sj`!!I18(0*J)!!"mS!!dIiAMH&3HhMj,rrSPI(S(08##!#4r)mYiI`6$H%J
$I,&J!!!!1!!!!CJG!!!iB!!!5!!"@$L!!!#6)3#51'%!J*!!J3#-Xf%!PS!F!!#
3!!%!X,#"!*a)"DITJ%%!&(ak"c9!JJ"3L!%!RP3!"[G!JJ!iL"m!!#J!!!""JJ!
-1d$re8J!!35![!!!I`2$H(pNfhK)!NJGB!!!!(ak"c9!JJ$S5!!!%$J!!!'B(3!
!5!!!9)!F!!!iB3#!N!!"!,")"D`CJ%%!&(ak"c9"JJ!-,"Vrd%##!,5cB3!iIb6
,H$KK!$k!(!!!N!!"!$T)!h[PB!!!!(m%`hJiB3!i5!-qC@!!!!#!!3#`N!!F!!#
)(`!!+!!!!%##!(3iBPG!1)!!"6KM!)P)"D3&J%%!&&4J"Mp"JJ"B9m!'2d'#!"b
!R!!!If2EH%J$NMeJ!!!!1m!!"%J!!!Jl`!!2J*`!!(pMfhJiS3$X1-!!!%[rpmQ
)(3!!+!!!!%##!"4ra20i1'%!l%J$MF&J!!!!Id-(0)!"!KJi)3)3Z`(ri(`)!kC
1J!!J[d(rk(`)!UCmIKYi1d$rrj!!!3!)P#(rX%J#1#PJ!!!!9'!'2d##!!`iB2r
r5!!!a$KL9V5S!`!!,!!!!%##!!`iB!$r5!!!V$L#9I!li!!!1'*9q)#%!!#!B`!
!Jk3!!)1$!!")!!"dUhd!!$Kq!0+SR!!!5!@M&B""!"48B!Br3B)!6$KL8E4rB!F
d(!!%&S"M!!#!B`!!I'-#&)J$!9mS!!!!3B)!*)J$!h)S!!!!3))!%)J$!@3S!!!
!3))!$$KJrrp)!!!XIhVEH$Zp!!)lR!!#1rm!!6KL9VCrj!FdU!-!!(`%!!""J2q
!Id26H)!"!&Ji)3"3Zd(rk(`)!kC1J!!J!!!!!!!!!!!!!!!![f(rl(`)!UBjB!!
!1q!!!*!!!3!)P#(rS)J"!4H3!)%!I&3!"Mq!J3%)N!"K!(L$S3%-N!#K!)#$`3%
3N!$"!)53!1%!L*%"!)b4)3#3!*&"!*5aB3!i3B)"($KK!-!iS!!!1-!!!%J#UY&
J!!!!I'!(08'#!3")!!%JIq!(08##!%`X(3!!3B)!k(qmkhJiB3$!1+%!1ML!!!0
)"D4YJ%%!&(al'hKrB!Fe3))!C$KK!(JiS3!i1)!!!8J&T%f!33!8I(XEH%J!!%J
X(J!!3B)!S(rFmhJiB3$!1+%!1ML!!!0)"D3pJ%%!&(al'hKrB!Fe3))!($KK!(J
iS3!i1)!!!8J&T"f!33!8I(XEH(pJ"c9!JJ"dU'%!1(q(ihLSJ3!k1+!!!$M!!!!
j!!!!15!!!$P!!!&)!"+"B!!!!(aJ'hLSB3!kI"X$H%J#VpeJ!!!!U'%!1(aJ"c9
"JJ!-5!+[b@!!!!"rB!Fe3))!($[r!!&ri!Fd,!!!!N'!r`!iB!!!5!!!&$KK!-"
)!UrGB!!!!(pMfhL!!3"S1#%!B,YKrqam#!1Q6S!!)!!!!!!!!!!!!!!!!,q"rr"
m#!+Q1'*Ij$Z!!!!l`PrS1q*Il*!!!3!)P#(p`)1M!!!iJKjX1'%!p%J$H%9J!!!
!Ii!(08'#!#4rJ`Fd1)%!d%J&RU@!33!81'%!p$L"!0")!hG0B!!!!+JI!!!iB3$
dN!"K!HiiB3(FX!%"mT1K!Ja)"DJ&J%%!&(aJ"c9"JJ!FI'!(0#`!rp""JJ!)5!!
"M$ZF!!&,rrq-U'%"mRqNkhL!!3)-1+%!p,"r!!!i`3$!N!!H!!!ii3#mU(m!!$N
"!,K)!q&0B!!!!(aJ"c9"JJ!)5!!"5$KLB&3iJ3$d5!0hN@!!!!!iB3$31)%!p%J
$Gi&J!!!!U,m!!$KK!25!(J!!1)!!!*!!B3%U1'%"',#K!5k3!)%"0*!!!3%mNk%
"5%J&Th'!33!8I'!(08'#!!K)!!$X1+*IrcJ!!!'SR`!!1'%"P*J&!!#![J!!1-%
!p%J$9[&J!!!!U*m!!(qPkhJiB3&-1-%!p%J$9YPJ!!!!1!!!#(`*!kBii3!81)%
"N!#!C!!%K!3!#*!!C`!%P!F!#%)!rr#!C!!%1!!!#(`*!kBi`3"FN!"R!!3iS3&
)S!3!#,!(!!L!C3!%K!8!#*!!CJ!%P!B!#%)!rr#!K3!%1'%!`$J!!!'3!)B!"+#
&!!L`KJ!)N!"K!+L!B3#mN!"K!+b!B3#iN!"K!,#3!!%!Y)"K!"L!J3!FJ+%!))$
"!#5!i3!SJ3%!,)%K!$#"33!d5rrm1B!"!NJi)3*!Zi(rm(`)!kC1J!!J[m(rq(`
)!UD!BJbJN!!"!!L8)Iq`5!@EYB""!"4mIKYi1'%!2%J&Qlf!33!81'!$q$L!!!&
)!eCGB!!!!(ar'hJiJ!!"5!@FAB""!"4rirYi5!@DSB""!"4)"CfCJ%%!&$L"!$J
iB!!!5!@GZB""!"5S!3!i1'!!rL`!!!&!JJ!)1'!!ql"K!$KrirYi5!@GVB""!"4
r`r0i5!@GdB""!"5!B3!m5!@GhB""!"5SB3!iJ!%!@$JK!&"m#!1QZm(rq%k!!#!
!!!!!!!!!!!!!!!"m#!+Q2)"QEj!!!3!)1)4ZG$LJ!!'8)Ir!1-%!1$MK!$a)!Ma
4B!!!!(aJ"c4m!!!d9!2H2S!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!#rBIr
XI!J#TMKL9HJlS!!!1i!!!6YJ!!!l`!!!N!!"!!L8)Iq`J'-!!)2M!!")!!(!1(m
!MML!!!4)"Ce"J%%!&&4J"Mp!JJ'J1'*IrSJ$!!!S!!!!3B)!0$Kr!)iiJ!!!5!@
G'B""!"48B!Br3B)"H(rMqhK)!)40B!!!!(aJ"c9!J!!F5!!"B(rMqhK)!M+PB!!
!!(aJ"c9"J!&-J"m!MP3!"MiX!!!63B)!&%#!!6JX!!!$3B)",%J!!5`iBQ!"L!-
!!#J!!!"!JJ%F9i!'2d'#!#`iBPG!1)!!"$KM!)P)"CbCJ%%!&&4J"Mp"JJ!-5rr
pmAap'hJlJ!!!J,m!IM`&ZESS!%P-3B)!($`&LjSS!'PX3B)!%$`&QCSS!'PX3))
!3)#I!)iiB2m!Ik!(0Ab!'$L3!"m!MN'#!"L!I`#1Ik!(0(aJ!hL3!"m!MNJ!!)#
!(`#1B!!!rT!!(`#15!!!F)#I!)iiB2m!Ik!(0Ab!'$L3!"m!MN'#!"L!I`#1Ik!
(0(aJ!hL3!"m!MNJ!!"#!(`#1B!!!r*!!(`#12!@cU5J!4Nj!JJ!XIk!(0#`!!2Y
"JJ!JJ(m!MMJ!r`"mB!!iN!!I!)k!(`#1B!!!qT!!(`#1Ik!(0#`!!2Y"JJ!31f!
!!8J!!!JlB!!"1rm"$M[H!!%iBPAXIm3(0)!$!!"m"!!!3B$q0(pMfhL!!3"B1#%
!8(`)!kDlBIrX6S!!)!!!!!!!!!!![i(rm(`)!UCmh60i11*9k(bm+hJi`!!!1m!
!!*!!!3!)P#(rX)#R!!#$j3!!5!!!8+!I!,"8K33qI!8!3%##!$JiI`#11)!!"8J
&Qa'!33!89'!'2d##!!`l`2rr5!!!0+JI!&L`(!!!J"m!5T!!(3!!5!!!)$[r!3i
iaJ!"I-8(0(aJ"c4m"3!!3B$rU$[!rp9r`r0iJ!%!@$JK!&"m#!1QZi(rm%k!!#!
!!!!!!!!!!,pKrqamR#0iI!J#TMLL9HKmHaYi1pcrrcZJ!!!iJ!!%N!!"!!KrB!F
d(!!"$T3Krl#!C3!!J'-!!(rM!K3iI`#15!@DDB""!"48B!Br3))!a)JI!,XS!!!
!3))!,)"r!'+!(`"QI'2b&(`!mK4mBq2@I!$MeRqm'GCm(!(@Ild#&%J!!*!!L,m
![$Yl!!%lr`%15!!!E)Kr!,a8S!BqI!-!3%#"!(#)(`#l+!!!!%##!%L!(`#19!!
'2L`!!!&"JJ!3I!!(0#`!!2Y!JJ!XJ(m!BS!I!'CmBr)8I'2MeR`!mK4m!12@I(`
CeR`F!GCr[4S8Ild#&$[r!3ilH`!"1'*9l(pN"c5!!`!!I!3!!%'!riKrSqYiJ!%
!@$JK!&"m#!1QZf(rl%k!!#!!!!!!!!!!!%k!!#!!!!!!!!!!!!!!!!#piIqmI!J
#TM[L9Q4mPL0i1Q*4X$SL9UjmG4Yi1S*@B(bh+hJlSQ`S1m*X,(cB-hKmq6Yi1*r
rr*!!!3!)1!!!#A`*!kD8)I4J1+%!r)"N!!5%"!!)N!"P!!58"3!)3J$rm+!%!!5
VRJ!!X!8!")0p!!#$9!!!5!0cV@!!!!"r"F0i1'%#6$L!"$K)"CG*J%%!&(mMbhJ
ii3*-1)!!!$LJ!!!i`!!!5!0GE@!!!!!iBPEbL!-!!#J!!!""JJ'FJ')2I%J&Z)Q
!33!81)*ICRa`'hJk3!!!L!3!!#J!!!""JJ!N1'*A3$L!!!!iB`'45!@BIB""!"4
8B!Br3B)!#$T!!!&@6`Br3B)!'$KK!%3iJ!!!1+!!!%J#PGeJ!!!!1'%!5%J&PC'
!33!81'%$6%J&Z$@!33!81'%)9ML"!Na)!fr9B!!!!$J!!!'3!!%*9Ri'JhJiJ3&
-1+%$6$KJ!!!ii!!!13!!!%J&Z"@!33!8I()EH(i$JhK)"EJGJ%%!&&AJ"Mp"JJ!
B1'%!4$L!!!!iS!!"5!+9B@!!!!#)!3&11'!!!#J!!!""JJ!3IN!(08##!!JiB!!
"Q(m!!)JI!!!S!!!!3B)!K$J!!!!mJ'CcN!!"!$JiB3&51+4c)$M"!%!ii3!m13%
!Z$P"!$JiJ!!"15!!4NJ&YlQ!33!8I'!(08##!$5S!3#i1(m!#ML"!,k`(`!'5!0
[!@!!!!#!B3#kU!%!Z*!!I3!!X"i!!*!!G!!!5!!!$$J!!!#B(`!!1'%"6%J&Yi@
!33!8J'%!5%J&P`Q!33!85!!!'$J!!!#B(`!!1'!!!8J&NSQ!33!8L"m!!#J!!!"
"JJ$`U*i!!$KK!,L![3!!1-)81%J$6PeJ!!!!1'%!Z$LK!%`iJ2rr5!+T@@!!!!"
mFKYiIN!(08##!0bS%3!!,!!!!8#"!*LSIJ!!U!%""RaN"c4m"!!!3B)!K%J$E59
J!!!!U"%!!(aN"c4m"!!!3)!!E)"c!!!H"!"NJ!-!!(kMUhKmJ))8J)3!5%[rqm@
!N`!!J!3!!(b!JK5!"!"%I!!B3%#!!$KmJb0i1)!!!$LJ!!!i`!!!5!@8fB""!"3
iB!2f1)!$m6LJ!"%i`!!!5!0K%@!!!!",rrddJ"d!!*!!&`!!U"i!!,!@!!")!!!
S5!0--@!!!!"8B!Br3B)!$$T!rr9)!!!35!0`U@!!!!",rrcm1!!!#A`*!kBi[rr
m1)%!r)"N!!5%"!!)N!"P!!58"3!)3J$rm+"N!!4q3!FeXji!!,"P!!56I3!!Ne3
!!%##!!a)!fpYB!!!!%[rlT98B!Br3B)!$%J#MkPJ!!!!IN16H)!"#kJi)3ZJI!J
$TVRKrla1J!!J!!!!!!!!!!#qiIrFI!J#TRah'hJj3PpQ1'*JI(bB)hKmZ5YiI0S
cH(cl1hKp(%0iI6e,H*!!!3!)1!!!!*3Krj!!X!%!1)J+!!!S!!!!3B)!e$L#B(D
)"!!!+!!!!%##!-4qi!Fe3B!![$L#9HKqi!Fd(!!"$U[k!!#!K!!!J)3!!(b%!K5
)"!%%+!!!#%'"!'JiJKk!9!!31Rb%!#jmL31Q6S!%)$J!J!#`'J!!5!!!5$J!J!'
`'J!!5!!!2$J!J!+`'J!!5!!!-$J!J!1`'J!!5!!!*$J!J!5`'J!!5!!!'$J!J!@
`'J!!5!!!$$J!J!D`'J!!J'-!!(m%`hKr4G0iIfEEH$MK!$K)!TA4B!!!!&4J"Mp
!JJ!SXrS!!%J!!##!B`!!I`6$H(p&dhKrCYYi11%!1%J#PD9J!!!!9'!'2d##!I"
r!`Fd5!(SX@!!!!"r!!Fd,!!!!Aaq'hK"JJ!-,!!!qd##!!`iB!!!5!!#$#`!!!4
"JJ!-,!!!"d##!"aqilYiIb6,H(p&dhKrCYYi5rriL8J!!H3X!!!'3))!)(lMZhK
r400iIfAEH(q'ihKrTqYi5rrk98J!!F!X!!!)3))!+$L#8E!i!!!#1'!!!)#%!!#
!K!!!U)3!@,#D!!#3!"X!!%J!!C3iBPG!L!-!LL`!!!*"JJ!S3)!!%#`!!!&!J!!
85!!!+#`!!!4!J!!J5!!!&$[JJ!")!!!8UrS!!%J!!!`iBPr'Uq-!!(m!"c3X!!!
$1+!!!%'#!"3X!!$q3B)!$#`!!2p!JJ!N1+*Il$KJ!!!iJPrSU!8!!,!D!!#!"!!
!N!!E!!")!!%3,!!!r8'#!!`X!!$m3))!%$aJE@%l`f0c5!!!-$b!CAKrirYiIdE
6H(pRfhJiK(4Z1+!!!%J#-APJ!!!!I'!(0(`!!$48"Giq1'*@iiJ$!!!S!!!!3))
!*$`HQjXS!(0V3))!'$J!!!+3!"X!!$J!!!#`!3!i5!!!)(rMqhKra20iIdE6H(p
RfhK)!M%PB!!!!,"K!$LS!3!i,!$r3%##!#JmJ'eKIq2lH(p'dhKrCpYi1)4MFcL
J!!")!M$eB!!!!,"K!$LS`3!iI-!(08'#!$ama!Fd,!6rrd'#!$!iBQ!*L!-!!#J
!!!""JJ!-,!6re8'#!"JiB!2f1)!$m$LJ!!&)!ecYB!!!!+KK!$L!!3"i1#%!F,V
Krpam#!1Q6S!!)!!!!!!!!!!!!!!!!(`)!UBi`PASN!!"!!KmB!Fd(!!"$T3Krm#
!aJ!!I+FVH$N!!!+!TJ!!I)BMH(dP!K5!#3#1S+N!XP3!"Mjm"!0i5rrm-B!"!%J
i)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!#rSIrdI!J#TMLLAfTmI4YiI*iMH$[J!!#
3!!%!#*3Krl#)"3!!+!!!!%##!%3iI3#11)!!"%J&N8@!33!89'!'2d##!#b)(3#
l+!!!!%##!#!iI3#r1)!!"8J&N5'!33!89'!'2d'#!!Jli!!"9q-'2d'#!#")!U)
YB!!!!(aM"c4r`!FdI!!B8(`!!$48!piqJ!%!@$JK!&#lSIrdI!J$TNk!!#!!!!!
!!!!!!!!!!!#rJIr`I!J#TRar'hJl`Q!1J')-S*!!!3!)P#(rX%J&MGf!33!8I(`
EH$Kr!+iiJ!!15!@3!*Q!33!89'!'2d'#!E!iI`#Z1)!!$8J&N!#"J%%!&&4J"Mp
!JJ!)5!!"P$Kr!+iiJ!!#5!@3!'@!33!89'!'2d'#!A`iBPrqL!-!!#J!!!"!JJ!
i1(m!VML!!!K)"C!!2B""!"48B!Br3))"9$Kr!+iiJ!!*5!@3!#@!33!89'!'2d'
#!!K)!!%iL"i!!#J!!!""JJ!S1'!!$%J$,XPJ!!!!9'!'2d'#!"5)(J!!+!!!!8'
#!1a)!!%)5!0UQ@!!!!!iB3!m5!@0(B""!"3iB!301)!!!%J$4leJ!!!!I(dEH(r
MqhJiJ!!!1+!!!$M!!!")"Bj"J%%!&(qMkhJiJ!!"5!@0SB""!"4rSqYi5!@,jB"
"!"4)!f-GB!!!!(qMkhK)"B[4J%%!&%J&MXQ!33!81)%!1$KJ!!")"BlTJ%%!&+J
"!$JX!!!"3B)!$#`!!!*!J[rJIk2VH%J&MZ'!33!8Ii2MH%J&M`@!33!8J'%!2%J
&Ma'!33!85!0Sk@!!!!")!SNaB!!!!+KK!$KmB!FdQ(i!!#`!!!&!JJ!N1(m!VML
!!!&)"C2YJ%%!&$Kr!+iiJ!!!5!@6hB""!"5!!3"B1#%!8,Z"rr"m#!1Q6S!!),i
Krm4m#!+Q1Z*IM(ai'hKmQ50iI,SVH(cE-hKmr$YiI4e$H(dq5hKpAe0i1X!!!$U
J!!!qJ!!$N!!"!!L8)Iq!IS1MH%J&NPf!33!8I(-EH%J&PSQ!33!8I()EH(j!"c9
"JJ!F,"33!%#"!54qJ!j`IS!"P%[rrma)!!%85!@,"B""!"5!&`!!I!-!3%#"!#K
,rqHa9'!'2d'#!!`k32re5!!!h%J&LYf!33!81!-!@T!!&`!!I"DL&*+"!$Km!1!
!3B!!$(`@i&#3!!%!1)!"!$JX!!!!3B)!U(m$`hKr400iIQDEH$LK!$K)!TpTB!!
!!(ab'hKq3!Fe3))!K)#K!$JX"3!!3B)!H&IJ"Mp"JJ!FIb2,H(pNfhKqCTYi5!+
IP@!!!!"mFKYi9m!'2d'#!$##)3!iI"@+&(`!k!""J!!)IMAS8#`4!!"!J3!8IL1
,H%J#K3&J!!!!IV@+&)"K!$Km!k!!3))!'(j!"c9rHaS8IeSD&(l@'K4"J[m%IQ1
EH%J&N9'!33!8IN16H)!"!)Ji)3#!ZL(ra(`)!kC1J!!J[k(rp(`)!UBii!!"I(d
EH(bq+hKmhc0iN!!"!!Ji!!!kP#(pm*MK!2`iB3$mQ!%!r8J$Bp&J!!!!1)*@`(q
MkhJiS3$mJ)3!!$M"!$K)"C2pJ%%!&+KK!$JiJ!!!J+%!1MM"!$k`B3#@1'!!!9I
J"Mq3!-%!NT!!S3#`Q)%!QTKK!*Z3!)%!R%'#!"3iB3#!5!@aAB""!"4)!!!31'%
!J%J&XC@!33!8I'!(08'#!"!i!!!!X"i!!%J!!!bS!3#BX"i!!)!"!KJi)3)3Zk(
rp(`)!kC1J!!J!!!!!!!!!!!!!!!![S(rd(ad'hKm#!+Q1q*9k(b9)hKmYLYiI0F
cH(kFShKqQk0iN!!"!!KqJ!Fd(m!"$T3Krj!!J(m!!)!$!!"rS2)8L(d![&4J"Mp
!JJ!d9Z!'2d'#!"KqSkYi1*d!)8J$Bj9J!!!!5!!"I(kMUhKrT1Yi5!0MJ@!!!!"
)!!&S9Z!'2iXG!,jmHKYiI(NEH%'#!"KqSkYi1*d!)8J$BePJ!!!!5!!!&(kMUhK
rT1Yi5!0M4@!!!!"@`!Br3))!J$KLB!L+``!!5!!!G)JG!,XS!!!!3B)!9&E!"Mp
!JJ!8L(d![PF!"Mjm!`"!3))!*)LG!,aA)!Bq9)-'2R`$!%"!J!!3Ij[MH(bC)hK
)!!!FL*d![&FJ"Mj8J`BqI!-!3%#!!!KmQ50iL"d![#J!!!""JJ!N1jcrrcZpr[*
rJ!Fe3)$rM&E!"Mp"JJ!-Ii!(08'#rhb!I`!!J!-!!(qJmK4)!!"dL"d!ZbJ!!!"
"JJ"JL(d![&G!"Mjm!`"!3)!!8(kPUhJiBK3d1)!!!8J$ATPJ!!!!9Z!'2d'#!"a
qTDYi1(d!)6L!!!&)!ejpB!!!!%J!!"KrSqYiIU@VH$L!!!&)!ejPB!!!!$YDrrm
kP2rr1lhqmRk$"c4rB!FdI!-!!%#!ri5!!3"i1#%!F,U"rp"m#!1Q6S!!)!!!!!!
!!!!!!!!!!,qKrr4m#!+QI)3(0&5'"R*m[5YiN!!"!!K8J!FqI"i$H(r!"c58)Ip
!I)B!d(b%-(JX!!!&9*m2rN'#!!`iB!!!5!!!8$LK!$JiJ!!!5!+FK@!!!!"mB!F
e3B)!0&IJ"Mp"JJ!NIm2cH(qNkhK)!M9&B!!!!&4J"Mp"JJ!-1'!!!%J!!"!iB2r
r5!!!#$KJ!!#!!3$)1#%!`,ZKrr4m#!1Q6S!!)!!!!!!!!!!!!!!!!*2Krram#!+
Q1)*IJ(ar'hL3!!%!#*3Krb#!"!!!9!!%2L`!%!""J!"B,!!3%d#!!&!iJ3#!5!@
,AB""!"4mB!Fe3))!2$KK!)!ii3!i1)!%!$LJ!!!i`!!!13!!!%J&Ldf!33!8I'!
(08##!"3iI`!'1)%!2NJ$B-eJ!!!!J!%!k$JK!1#$iIrmI!J$TNk!!##rSIrdI!J
#TRap'hKmRL0iI,mVH*!!!3!)Ik!(0#`!rp#8)Iq`3))!,(rMqhK,rrp&J"i!MRr
MqhKra20i9!$'2R`&"c4)!MApB!!!!(ap'hKrS!Fe3B)!-(qJ"c3X!2rr3B)!*#`
!rr9"JJ!FIkEVH$KJ!rBiJ!2`1+!!"8J$8h9J!!!!Ik2VH)!"!&Ji)3"3I!J$TVZ
Krr41J!!J!!!!!*2Krram#!+QI(mEH*!!!3!)I)-(0$LJ!!#8)Ij31-!!!6L"!+4
,rr[p1')80$LK!+3iJ!!"5!0F$@!!!!!iBPDk1+%!T$L#9X!i`3!iU'-!!)#%!!"
)""!pB!!!!(aJ"c9!JJ!iL!%!9P3!"[G"JJ!XJ!%!@*!!(`"qJ!%!A*!!(`##J!%
!BT!!(`#)U!%!CV!I!)b!!3#-N!!I!(+!!3'i1#%"X)2Krram#!1Q6S!!)!!!!!#
rJIr`I!J#TRbH)hJj!!!"I(mEH(cF-hKmr6YiN!!"!!Ji!!!kI+3VH*3KrN#C!3#
N1'%!T*J"!+9)!ejCB!!!!$L#9X"r`r0i1+%!T)#%!!!i`3!i5!32M@!!!!"mIKY
iIm!(08##!&#!!3"Z1'!!&j!!(!!!J!%!H*!!(3!!J!%!J*!!(`"#J!%!K*!!(`"
'5!-Pp@!!!!"8B!Br3B)!$)!"!'+3!"m!L)!"!&L3!"m!IS!"!&b3!"m!JRr$mhL
!!3()1#%"`(`)!kDlJIr`6S!!)!!!!!#q!Ir!I!J#TMTL9KamIaYi1J*J!MSL@Va
mQL0i1N*@ZRbq+hKmh60iI2BlH(d93hKp1dYi1`!!!$XJ!!%ki!!!N!!"!!Ji!!!
!P#(pB,!"!,b`!3#kX!%!Z)!$!)j8!!BqI"`$H#`F!!&"JJ!XIi!(0#`!!2Y"JJ!
JId26H(r%mhKrTHYi5rrdMAad'hKqJ!Fe3))*S&GJ"Mp"JJ"!U*i!!$LK!4!i`3%
51'!!!8J#*c9J!!!!I(3EH(k!"c9!JJPd5!@#iB""!"3iJ3%@5!@%2B""!"4)!!$
iJ0m!TRrMqhKra20iIkAVH$MJ!!4)!k+eB!!!!(ad'hKqJ!Fe3))*0+J4!8!X!!!
!3))!$$U!rrp)!!NJIq2lH%[rhKPrirYi5rre!ArMqhK)!N#TB!!!!&4J"Mp"JJ!
iU"i!!(r&mhKrTZYiX"B!!$KJ!!'!(3!!N!!9!!#SRJ!!5!)QL@!!!!"mG"YiIS!
(08###-LSRJ!!Iq2lH)#p!!")!LMjB!!!!(ad'hKqJ!Fe3)))U+LH!!"rj[YiJ,d
!!$KK!4")!cc&B!!!!)!I!)jrjIYi1'%"%&3!aMjm"!Fd5rrkkAaJ"c9"JJ!-1S$
rrdJ!#'Kr3p0i1)%"@$LJ!!!i`!!"5rria6Kr!0!iJ!!"5!@&!B""!"48B!Br3))
!F+L5!!"rirYi1+%"@$M"!-3ii3$!5rrp*Aad'hKqJ!Fe3B)!$$VJ!!&)!!*SJ(m
!IM`$UlXS!&K83))!0)"r!))m!iZ-+!"iG%##!#3iB!!I5!-MD@!!!!"8B!Br3B)
!%$aJG(3i!h*[N!!I!(k)(`#m+!!!!%##!"3iBQ"eL!-!!#J!!!""JJ!BIi!(0#`
!!!&"JJ!m,!!!qd'#!$3iI`#'1)!!"dJ&L5f!33!81'%"%$LI!(iiS!!!1-!!!$M
J!!",rpSCI(3EH%J!!##![`"#1'%"%)$I!%BiR`"q11!!!8[rfIPmG"YiIS!(08'
#!*aAB!Br3B)!+(k!"c3X!2r33))!(%J&J+@!33!81)%"&NJ&JJ'!33!85rrr9(k
!"c3X!2r33))!0$KK!4",rrSYJ"m!MRrNqhJiB3%39!$'2R`&"c4)!M$PB!!!!(a
d'hKqJ!Fe3B)!0(k!"c3X!2rr3B)'f#`!rr9"JJE3ISDMH$KJ!rBiJ!2`1+!!"8J
$6PeJ!!!!5!!'Y&GJ"Mp!JJ!m1(m!MML!!!9)"BK4J%%!&+JH!!!iI`$31)!!!,!
I!&L!(3!!N!!I!%T)"B-jJ%%!&&4J"Mp!JJ+)1(m!d$L!!!&)"B-KJ%%!&&4J"Mp
!JJ*`5!!#((aJ"c9!JJ"8J!%!a#`!!!""JJ(mJVm!BR`@!hJiB3%31+%!ZML!!!0
)"B9YJ%%!&(ad'hKqJ!Fe3))!E+Kb!!!iJ3&B1+%!Z$M!!!&,rr@CI(3EH%J!!&#
!!3$!,!!!!%'#!Db#[`"QI"B$H$KK!4!iS3#k1)!!!dJ&K6@!33!8I(3EH(k!"c9
!JJ!FU()!!$L"!9JiS3#i1-!!!%[rp8PmG"YiIS!(08'#!&3iB!!95!-K*@!!!!"
8B!Br3B)!$$U!rrp)!!9XIq2lH$L!!!!iS!!!1-!!!%J&J-f!33!8ISDMH$KJ!rB
iJ!2`1+!!"NJ$639J!!!!5!!&1+J4!8!j3!!",!!!!N'#!#4!J!!i,!!!!8#!!!K
)!!!XU!%![(`!!$48#Yiq5!!!($J!!!'SB3#mI!!(0(`$!&"m!!!d9!VH2UKK!,K
qal0iU)%!ZRkSUhJiS!!!1-!!!$NJ!!&,rr,PI'!EH+KK!,Tm&!0i5!+3!%9J!!!
!U'%!Z$J!!!#`!3#kI'!(08'#!"4)!T!!+@!!!!!i!!!!X!%!Z(k!"c9"JJ"XIS!
(0#`!rr9!JJ!`1'*J$BJ$!!!S!!!!3))%G$KJ!rBiJ!2`1+!!%MM!!!")!d`PB!!
!!%J!"&KrirYi1)!!!$LJ!!!i`!!!5!9rZB""!"4qKU0i1'!$pML!!r!iS!!45rr
Am8J!"#LSB3#m1!-!!E!"!,bSB3#mI'!(0#`!!!*"J2hF9f!'2d'#!#5JI`#`1)%
"%%J$VIeJ!!!!I(3EH(k!"c9!JJ2S5!!%5$Kr!0!iJ!!"5!@!YB""!"48B!Br3B)
"X$Kr!0!iJ!!"5!@!RB""!"48B!Br3B)!%)!I!(T8%33q5!!!#+)r!,"q)iYi1)%
![%J$V5eJ!!!!I(3EH(k!"c9"JJ"BIL1,H(p%"c4)!j3KB!!!!$L#9HK8F33qIL#
,H)"N!!!F!!%1J'-!!(aM!K5)!`#q+!!!!%'#!h3iB!!95!-Hl@!!!!"8B!Br3B)
$B$U!rrp)!!-dU'%![$L"!-K)!khpB!!!!$KK!-JiJ3$%1+%!`%J#&"PJ!!!!I(3
EH(k!"c9!JJ-%1!!!#(`*!kBii3!81-%!a)"Q!!5%"J!)N!"R!!58"`!)3J$rm)"
Q!!3i!!!)I!N$TMLK!&b3!'F!"$L"!3bJ"J!)X!F!#)"N!!5%"!!)N!"P!!58"3!
)3J$rm)!%!!3iB!!!N!!&!!5J"!!)X!8!#*!!B3#SJ!%!a*!!!3#XJ!%!`*!!!3#
`N!"K!,5!B3!BJ)%!()#K!##!`3!NJ1%!+)%"!#b")3!`J8%!0%[rh-&mG"YiIS!
(08'#!#aA)!Br3B)!*(rNqhJiS3%35rrf%Aad'hKqJ!Fe3))#-$XJ!!",rrmSIS!
(08##!L#)%!!!+!!!!%##!#LSRJ!!Iq2lH%[rl@e8B!Br3B)!&&GJ"Mp!JJ!-1!!
!!CJ3!!"rirYi1)%"%%J"h*PJ!!!!I(3EH(k!"c9!JJ'X1(m![cL!!!4)"AkPJ%%
!&&4J"Mp"JJ!B1(m!KML!!!G)"B0YJ%%!&%J!!&JiBPEUL!-!!#J!!!""JJ")1(m
!KML!!!G)"AjTJ%%!&&4J"Mp"JJ!`U,m!L$Kr!)BiJ!!(1!@ai,!I!)LS[`#+1!@
ai,!I!)T)"B-CJ%%!&$X!!!'![`"#IiIMH)$I!%BiB3%31*m!INJ$IK&J!!!!I(3
EH$Kr!)BiJ!!(5!9q"B""!"48B!Br3))!$&F!"Mp"JJ!BIq2lH(q&ihJiJ3%35!0
r'@!!!!"qJ!Fe3))!0(rNqhJiB3%35!-@F@!!!!"rJ!Fd,!!!"%##!"KrirYi1)%
"%%J!'b9J!!!!I(3EH(k!"c9!JJ!`1(m![cL!!!G)"Af4J%%!&&4J"Mp"JJ!BU'%
"%$LK!4D!J3%55!@HlB""!"4qJ!Fe3))!*)$I!+TrirYiIm6cH(qPkhJii!!&5!1
D#@!!!!"mG"YiJ(-!!$KMrrq3!(-!!%J#FM&J!!!!Iq2lH$L"!4")!#%aB!!!!%[
reTP8B!Br3B)!$$KJrr9)!!#BIS1MH%J!!*!!U'%!ZRaJ"c9"JJ!-5!+,S@!!!!#
SB3#iI'!(08'#!!a)!SZ0B!!!!$Kr!)iiJ!!&5!@"YB""!"4@i!Br3))!%$KK!4"
)!SZTB!!!!&GJ"Mp!JJ!iIS!(0#`!rrp!JJ!BJ(m!BS!I!'CmB`)85!*d)@!!!!#
!F`!!1'2rrj!!F`!!5!*aI@!!!!"qJk0iJ!%#U$JK!U#k!Ir!I!J$TNk!!#!!!!!
!!!!!!!!!!!#6iIrmI!J#TMKL9HJi`!!!N!!"!!JliPr!P#(r`)"M!!#!S`!!5!!
!1$KL9XbSK3"@U!-!!(b$"c4m!`!!3B)!-+JI!!"m!`!!3))!$$J!rrq`"3"@1-B
!!6LP!3iiBPAXJ!-!!(`'!!""J2r!1'!!!8J$'0&J!!!!U(m!!%J&JZ@!33!81'!
!!8J$'JPJ!!!!J!%!5$JK!%#$iIrmI!J$TNk!!#!!!!!!!!!!!!!!!!!iBPAS1-!
!!)"M!!#!S`!!5!!!4$KL9XbSK3"@U!-!!(b$"c4m!`!!6B)!)$KLAq#!K3"1J!-
!!(`%!!"!JJ!31'*I`+J$!!#`"3"@1-B!!6LP!3iiBPAXJ!-!!(`'!!""J2qd6S!
!)!!!!!!!!!!![U(re(`)!UCmec0i1f*J"MZ#Aj3lSPr!I(mEH$[#9XamP50iI,B
VH$X!!!#3!!%!#&6!"Mmm`&C*P#(qX$XQ8c4"JJ!-2'""8$XM8%`l33$HXq%!JT0
"!(il'!!"NX%!R$KK!'bc!3#)5!9pkB""!"4mB!Fe3))#U)J"!)T8!!Eh3))#Q)!
F!!3X!!!"3))!)$b!39#!S3#-1!436(`&!&"m!!!d9!6H2NJ!!#L!!3#-1)!!!(`
!b%""JJ!32"QTYbJ!8c4!JJ!)1)!!!95%"Mj@i!Br3B)!%)!"!+)X!!!!3B)#2&5
!"Mp"JJ)`Xq%!f$KK!0JiS3!kNX%!fML!!!&)"Ac"J%%!&(aJ"c9!JJ)-1!!!,+K
K!$U3!!%!2$LK!$`i`3"!1)!!!%J#LjPJ!!!!I'!(08##!GK@i!Br3B)!*)"K!%!
m!kbU+!"$9%'#!$3m!l'U+!"$9%##!E4)!!!NJ'%!4)!F!!4m!`!!3))"S)"m!!b
!!3"-I!-!!%##!C!!U'%!1ML!!!%iS!!!5!@'2B""!"5SJ3!k2'""8$J$8%`iSPr
%X*8!!$L#Am+!B3#-U+8!!(`$!&"m!!!d9!$H2TJE!!!iCIrrL"X!!,"N!!!S!!!
!3B)"-&EJ"Mp!JJ%SU(d!!(aN"c3X"2rr3B)!H+JH!!"m!#!!3B)!E$L"!$K)"CI
jJ%%!&%[rr0QSB3!i1)!!!%J#LCeJ!!!!9'!'2d'#!$bSB3!i5!1Y5@!!!!#SJ3!
iI(8EH$KJ!!")"CI9J%%!&(aJ"c9!JJ!8IU1VH$L!!!")!kbpB!!!!$J!rrq`(3!
!1'*IL)#"!%b!!`!!I!3!!%##!"#S(J!!X"d!!%J!!)4)"AM0J%%!&(ae'hJiB!!
!5!9rIB""!"4rirYiIX5cH(p&dhJi`!!"5!9cpB""!"5`I3!!1'!!!6L!!!#S[3!
!5!-@c@!!!!!iB!!"5!9r3B""!"4,rrbj1'!!!$L!!!%iS!!!1-!!!$MJ!!")!IV
4B!!!!(kMUhK)"ALGJ%%!&$KJ!!&)!!!JU'%!1NJ#KY&J!!!!1'!!!(aJ"c9"J[d
i1'!!!)!"!9Ji)3&3ZU(re(`)!kC1J!!J!!!!!(`)!UBmS(C[N!!"!!Jm`#dYI)-
MH*3Krm!iKLdY1+9XEMNK!$Ji`!!!11!!!MN!!!")"CDjJ%%!&+J"!$JiB!!"1)*
JH,!%!!#!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!#6iIrmI!J#TMaJBf+3!!%!#$K
MEfili!!!P#(rX$L"!$K)"A+aJ%%!&)!"!$JX!!%a3B!!#$[J!!&rirYiJ!%!@$J
K!&"m#!1QJq(rr%k!!##r3IrSI!J#TRbp+hKmHaYiI*`MH$[!!!#3!!%!#&5J"Mq
8)Ii`3B)!-(qIihJiJ!!!5!!!&$J!!!#`(`!!1rm!!ML%!!&mJ!Fd,!!!b%'!rqK
rRq0i1d!!!6KK!,5c33"81!!!!*!!B3"+1'%!1,!"!%j)"AfCJ%%!&(aJ"c9!JJ#
%9k!'2d'#!"5S!3"1X"m!!$[r!!*)!!"NIjrMH$L!!!")!!!SU(m!!(aJ"c9"JJ!
SU!%!6RaM"c4m!`!!3B)!2$[r!!)iK!!"I)!(0#`!!'4"J2r8I)!(0+KK!%iX!!"
NX(X!!$[!!!&!J!!BU!%!6V!I!!")!!!-1eS!!8[rrear`r0iJ!%"f$JK!G"m#!1
QZd(rk%k!!#!!!!!!!!!!!,q"rr"m#!+QJ1)2G(bp+hKmI"YiI0icH$LRrr`li!!
!N!!"!!Ji!!!)I!N$TT3KrJ!i`3!dJ'8!")3&!!L3!'B!"*3'!!K#!2r`1!%!j*!
!J3$FN!!"!)U!!3$F1)$rrl1"!)iiB3"iX)%!P*!!!3#S5!9ieB""!"4mB!Fe3))
"&)J"!*C8!!Eh3B)!r+!"!+"8!!5P3))!($KK!$JiJ3$N5!%@9@!!!!"8B!Br3B)
!f)!"!0`iJ2rrXi%!MMKK!(L`J3#8N!!"!+K)"AKpJ%%!&(aJ"c9!JJ#m1'*I`ML
"!13i`PB)1+!!!+J$!!#!CJ!!1-!!!"`!!&U!B`!!I'-#&%J&IIf!33!89'!'2d'
#!)5!!3$F1+!!!,1"!)jrT1Yi1'%!j,#K!*53!!%!U%J$6+PJ!!!!1'%!H%J&H!f
!33!8I'!(08##!%bSB3#1Im6cH)#K!+Ji`!!!5rrjR94J"Mp"JJ!`J+%!U$[J!!%
iJPE!U!%!MMKL9VU3!+3!!,!$!!")!!!3J!%!U#`!!!*!J[l-Iq2lH)!"!JJi)3)
!I!J$TVZ"rr"1J!!J!!!!!!!!!!!!!!!![J(r`(`)!UBiJQ!8I(BEH$ULArdkBPB
)1L!!!$U#B(Jl3Pr%1k*@ZM[#B!JliPE!N!!"!!L8)IY!U!3!!$L!!!!X!2rr3))
!&+JD!!!X!!!"3))!#$L!!!%iBPpQ9*J'2MS!!!#)!`!!+!!!!%##!"",rraa9'!
'2d'#!!Jk!!!"U*S!!&BA"Mk!X`!!1'%$G$J%rrmF!!"DJ)8!!(i%!K4q")0i5!0
,I@!!!!!iF!!S1)!!!8J&Fm@!33!8U"S!!$L!!!D!X!!J9'B'2L`!!!&mC5"3I-3
!0(aM!$48F0iq9*VH2MKJ!!"!J3!39J!'2d'#!!JiB!!"Q(i!!$T!!!!k8J!"1'%
#G,*"!8`lJ3&'1!$rrj!!B3&#1'%"-,!"!8C)"ASCJ%%!&(al'hKrB!Fe3))"#&B
J"Mp!JJ#F9d!'2d##!#3iB3*d1)%$G$LJ!!!i`!!!5!9lpB""!"48B!Br3B)!G)J
H!!"qa,0iU(`!!$LJ!!)S!!!!1-!!!%##!!aA!!Br3B)!#$M!!!&8aJBq5rrhX94
J"Mp"JJ!mU(`!!$J!!!+3!"m!!$L!!!#`I3!!5!+$3@!!!!#BG3!!1'%#G$L!!!C
)!ec0B!!!!$KJ!!")!!9B9L!'2d'#!'"@!!Br1)!!!%##!"5SI3!!U"`!!(`$!!"
!JJ!)1)!!!95!"Mp"JJ!iU(`!!+L"!A*)!JNPB!!!!&4J"Mp"JJ!JU(`!!+L"!A*
)!k@0B!!!!&4J"Mp"JJ!)1P,rrhpJ"c9"J[l%9L!'2d##!6b)&3!!+!!!!%##!5L
SI3!!IX5cH)#r!!!i`!!!5rrfh94J"Mp"JJ!-1'!!!%J!",5SR3!!1'%!I)#r!!!
i`!!!5!-TD@!!!!!iB3"m1+%!a$L!rrp)!S4PB!!!!(aJ"c9!JJ$31'*I`MYK!)+
!X`!!If6EH+J$!!#!C3!!1+!!!"`!!&TmB`)81-!!!%J&HR@!33!89'!'2d'#!(5
!S3%SIf2EH+J"!0SiJ30dN!#K!(k`!3"m5!0**@!!!!!iB3"m1+%!a$L!!!")!S2
aB!!!!(aJ"c9!JJ"FU'%!fRl%XhL!S3$d1-!!!%[rpK&8B!Br3B)!3)#"!23iB!!
!U!%!fT!!R`!!X"d!!%J!!pLSI3!!IXDcH)#I!!!iS30d5rrkl94J"Mp"JJ!-1'!
!!%J!!l3k)!!"5rrpJ$KJ"!BiJ!!!5!-Sk@!!!!"mHaYi1+%!1$M"!%!ii3"N1)!
!!dJ&E2f!33!8J'%!3$L"!h4)"@lpJ%%!&(pMfhK)!bZKB!!!!(pMfhK)"@d&J%%
!&%J$4$eJ!!!!If2EH%J&E2'!33!85!9[kB""!"4rBpYi5!9[pB""!"4@i!Br3B)
!6)"L$h")"BpjJ%%!&$b!GQmiK'`J1!!!!C!!J3"FI(NEH*!!!3"J5!@2FB""!"4
r*-Yi1-%!A$N"!$`iS!!"11!!!%J&Mff!33!81)%"V$KJ!!!iS!!"5rrifApMfhK
)"@aaJ%%!&(a`'hJiJ3"85!9XHB""!"4mC"YiIJ1$H%J&HmQ!33!81)%!E$KJ!!)
iS!!H1-!!!%J&FiQ!33!89'!'2d'#!1!k!3"fJ'%!GML"!%K)"AcpJ%%!&(aJ"c3
X!!!$3))!`(pMfhK)"@`&J%%!&)!"!%Km!"K!3))!U(i$JhK)"AcpJ%%!&)"`!!!
iS3"%J)%!5%J&I3'!33!8I'!(0#`!!!T!JJ"mJ'%!4$LJrrq!N!!!!%J&I2Q!33!
8I'!(0#`!!!T!JJ"F5!-PG@!!!!"8B!Br3B)!$$S!rr9)!!'J5!0*l@!!!!"rBpY
i5!9ZQB""!"4rBpYi5!9VGB""!"4mF"Yi1)%!6%J&Dhf!33!8I'3EH(i$JhK)"AV
0J%%!&&EJ"Mp"JJ!JU(3!!(aJ"c9"J[ld1!!!!,"m!!#`&!!!5!!!A(q$ihJiJ3'
X1+!!!%[rphe8B!Br3))!4$L"!'`iB!#"1+!!(MM!!!")"A*4J%%!&&4J"Mp"J[k
XJ!%!ERq%ihJiB!!!X"`!!%J#"K&J!!!!I'!(08'#!-!iB3*d1!!!!*!!B3&#1'%
"-,!"!8a)"A8PJ%%!&(aJ"c9!JJ#F9d!'2d##!#3iB3*d1)%$G$LJ!!!i`!!!5!9
h$B""!"48B!Br3B)!G)JH!!"qa,0iU(`!!$LJ!!)S!!!!1-!!!%##!!aA!!Br3B)
!#$M!!!&8aJBq5rrbb94J"Mp"JJ!mU(`!!$J!!!+3!"m!!$L!!!#`I3!!5!*q@@!
!!!#BG3!!1'%#G$L!!!C)!eIPB!!!!$S!!!")!!!SU(`!!+L"!A*)!k$YB!!!!$L
"!D`iB!!!1+!!!8[rpPP,rrfX9Z!'2d'#!"b!B3!m5!@0*B""!"4r)mYi5!@0-B"
"!"4rBpYi5!9Y&B""!"3iBQF8J'-!!%J&D`f!33!85!*RG@!!!!"q!i0iJ!%%b$J
K"-#k!Ir!I!J$TNk!!#!!!!!![S(rd(`)!UBkiQ!5I(mEH$X#8EJl)Q!31X!!!$Y
#ArdkS!!!1f*@#$Z#Am3lSPq81m*I`*!!!3!)P#(f3%J$4l9J!!!!L"S!!#J!!!"
"JJ!BU(m!!$L"!$T)"BZKJ%%!&(af'hJiBPpJL!-!!#J!!!""JJ#`1'*J&$J!rrq
`!`!!U(m!!%J#HeeJ!!!!L"S!!#J!!!""JJ"J1'*IL)!G!!b!B`!!I!-!!%'#!%`
iBQ!'L!-!!#J!!!"!JJ!mU'%!1NJ$S,&J!!!!U)%!1Rad'hJiB!!!5!@,2B""!"4
mB!Fe3))!&(k$ShJiJ!!!5!1J*@!!!!#)'J!!+!!!!%'#!#5SRJ!!,!6rrd'#!"J
iBPE-U!-!!(`!)!""JJ!)1U!!!6J!!!#`(`!!9U!'2kJF!!#!H`!!(!!!@S"M!!"
mJ`)83B)!()"p!!b!"!"1I'-!8$!$rrpm!"N39"8'2S"N!%j@S!BrN!"p!!b!"!"
5N!!G!!L!"!"@N!!G!!4"JJ"BU(i!!$L"!$K)"BTeJ%%!&%[rle@SB3!i5!1Ih@!
!!!#SJ3!iI(3EH$KJ!!")"BTTJ%%!&(aJ"c9!JJ!8IS1MH$L!!!")!jp4B!!!!$J
!rrq`(J!!U*`!!$KL9XJi"!!"X"`!!+J$!!#SI!!!I!-!!%'"!&arirYi5rrfcE"
j!!#S'3!!,!!!!%##!$a)!d6jB!!!!+JB!!3X!!!#3))!++JF!!!iJ!!"J(X!!"`
!!&U!B`!!I'-#&)"Mrr")!P$jB!!!!+Kj!!")!!*)L"S!!#J!!!""JJ"JIX!(08#
#!&JX!`!#3)%!3+KK!$T)!jm*B!!!!+L"!$TmG"Yi1'!!!%J&LC@!33!8I'!(08#
#!#KqJk0i1)!!!8J$RReJ!!!!5!!!&+KK!$SiJ!!!5!1HD@!!!!!iBPEb1U!!!,+
h!!#)!`!!+!!!!%'#!-b!BJpm5!@+6B""!"4mG"Yi1'%"N!")"BT9J%%!&$J!!!'
3!!%(QRk'ShJiJ3#3!$LK!C!!1'!!!$MJ!!!j!!!!5!@+4B""!"4mG4YiIS1MH%J
&LNf!33!8L!%!NMKJ!!!S!!!!3B)!%(kJ"c9!JJ!)1'!!!94e"Mp"JJ"J1!!!!$b
!CR13!!%!2$KK!*BiT(-J1-%!4$MK!%!j!3")18%!2$L!!!%j)!"'5!@+$B""!"4
mB!Fe3B)!#$UJ!!!iB3#3!%J&LJf!33!85!!!%$KJ!!&)"@8PJ%%!&+Kh!!"mB!F
e3B)!',"r!!")!d09B!!!!$KJ!!")!!$89U!'2d'#!,"rjIYi1'%!5$L!!!&)"@[
aJ%%!&(af'hKq`!Fe3B)!*(l'XhJiB!2f1)!$m$LJ!!*)!c3YB!!!!(l$XhK)!!#
-U'%!5$L!!!")!RQPB!!!!+M"!%JiSPDkJ!%!5ML#9X#BHJ!!X-8!!*!!"!!!5!0
#d@!!!!#S'!!%,!!!!N##!#LS(!!!1)!!!B"l!!!F!!"DJ'-!!(aM!K5!Brr`5!*
1d@!!!!!iB!!!5!!!)%J$([&J!!!!9'!'2d'#rM3i!2reX"N!!$KJrr@!!3R)1#%
*`,U"rp"m#!1Q6S!!),kKrp4m#!+QI*NMH$[#Aj4mH"Yi1q*IM(bk+hKmfc0i1X!
!!j!!!3!)P#(rN!#!K!!!Jk8!!$L%rp5!IJ!)I"dL&(`!'!"!J3!8I!3B8*!!'J!
!1U!!!8J!!!JkS!!!J[S!!+Ki!!!iJ!!"J,N!!%J&G,f!33!8U(J!!(p&dhL!Q3!
!IfEEH%J#HCeJ!!!!I(`EH(q!"c3X!2rF3))!'(l!"c9"JJ!3N[S!!$V@rrp,rrq
dIi!(08##!""@S!Br3B)!#$Z!rpPrJ!Fe3B)"I(q!"c3X!2rC3))"A(m%`hJiB!!
!5!!em@!!!!"mB!Fe3B)!#%J!!CKr!m0i5rrkDAam'hK)!Q'aB!!!!(q!"c9!JJ%
i1!!!,*!!!3!iImEcH$LK!$LSH!!!1)!!!%J#H2PJ!!!!I(`EH(q!"c9"JJ!NIiE
MH$KJ!rBiJ!2`1+!!!dJ$-M9J!!!!Ii2MH%J!!6#!HJ!!1!!!,$LK!$KmBqK3N!"
K!$L3!"N!!)!D!!#SH!!!J*N!!(cE!K4)!RLGB!!!!(am'hKrJ!Fe3B)!,(q!"c3
X!2rC3B)!)(q'ihJiB!2f1)!$m$LJ!!4,rlh0Ii2MH%J!!-arJ!Fd,!$rf8##!"b
!J3!i1'!!!)!D!!"m"!)8N!!D!!")!!#SJ'%!1)!D!!"m!`)8I"d!!%'#!$"rKZ0
i1'!$pML!!r!iS!!%5!-aH@!!!!!iJQ!31!$rr6KJrrf`"!!!5!!!D*1k!!!iB!!
!5!!!A(q'ihJiB!2f1)!$m$LJ!!4,rle"Ii!(08##!$a)"@-&J%%!&)!I!!"m!`"
!3)%!+%[r[l&8B!Br3B)!$$Z!rr9)!!!85!9LhB""!"3i!`"DN!!I!!"rJq0iJ!%
!H$JK!(#kSIr8I!J$TNk!!#!!!!!![`(ri(`)!UBl)Q!3I*SMH$[LAp3l!PrdI,X
VH$Z!!!#3!!%!#*3Krk#S'3!!,!!!!%'#!"3i!!!!N!!D!!#SH3!!5!!"C$KLB"`
iJ3!i1m-!&+KM!"4)"A)&J%%!&(aJ"c9"JJ!-X(N!!%J!!6b!'J!!1)!!"S"i!!#
3!!%!2$KM!0")"@9jJ%%!&&4J"Mp"JJ"i1'*IqMZ!!!'!S3!mL!-!!)$B!!"8SqJ
%9+32rRaN'&#!jJ"D9'-B2LJ!!!"m[5YiI'-L&%##!!L!jJ"H,!F!#%#!!!`lJ!!
!5!!!,#`$!!""JJ!NJ"m!!(qMk&"m!#S8I!!i!%#!!"#!!3!mI!-!8*!!!3!mIm2
cH(pQfhJiJ3!i1+%!2%[rr%emH"YiI`!(08##!$KAJ!Br3B)!-$KLB!b)!`!!+!!
!!%'#!"arBpYiIk6VH%J#*&eJ!!!!I(JEH%J!!!Jl!0P"1'*IA)#r!!#!J3!mJ!-
!!(aP)K3S!!!!N!"r!!""JJ!81+*G!(pMfhK)!@c4B!!!!)#"!$arBpYi5!-rd@!
!!!#!!3!mI`2$H*!!'J!!J!%!D$JK!'#l!IrJI!J$TNk!!#!!!!!!!!!!!,kKrp4
m#!+Q1-*J%(ae'hJlBPrF1i*If(b@)hJlSPr`I,FVH$[#ArSliPrd1d!!!*!!!3!
)P#(rN!#S"J!!,!!!!%'#!"3i!!!!N!!@!!#SCJ!!5!!"4$KL@V`l!!!"JcB!!+J
$!8!X!!!#3B)!(%#!!#3X!!!"3)!!#%J!!"L,(J!!5!!!%)JH!!"m!!!d9"MH2MK
LArL)!`!!+!!!!%'#!,JiBPrjL!-!!#J!!!""JJ!mJ*d!!(lMZhL!(!!!IbA,H(b
%!K4)"@1PJ%%!&)!F!!#!I`!!I)$+&*!!R!!!J!-!AR`%!!"!JJ#XL"i!!#J!!!"
"JJ!8J(m!!),$!(+$)`"L5!!!%)"r!!##``"fJb-!CS!G!!"r*-YiI'#b&%J$2M9
J!!!!9`!'2j!!H`!!3B)!C)!G!!"qSkYiIb6,H(bJXK3i`!!"5!*e(@!!!!"mHKY
i5!!!3(lMZhKr*-Yi5!-pp@!!!!"A!!BrN!"l!!""JJ!JIU1VH(mNbhKqjEYi1-!
!!8J#G1&J!!!!I(SEH*-f!!"r3p0iJ!%!H$JK!(#kSIr8I!J$TNk!!#!!!!!!!!!
!!,m"rq"m#!+Q1+*9k(aj'hJliPG!I*SMH$M!!!!lB!!!N!!"!!L8)IlJJ'8!!+#
j!,+$``!!5!!!N!#J(J#`9+-%2R`$!%"!JJ"i1(i!MML!!!4)"@)jJ%%!&&4J"Mp
"JJ!i1(i!MML!!!9)"@)KJ%%!&&4J"Mp!JJ!-1'$rrdJ!!h!iB3"d1*i!)8J$1DP
J!!!!5!!!8)JH!,XS!!!!3B)!$$KJ!!")!!0)Im6cH$KK!(4)!cQ"B!!!!%J!!#J
lhJ%11-B!!6KL9Hama!FdJ!-!!(`%!!""J2pN1'$re8J!!a")"@("J%%!&(am'hJ
iIJ#11)!!"8J&BC@!33!89'!'2d'#!K3iB!!!5!9S@B""!"5SHJ!!1,S!"S#D!!)
i`!!"5!9FdB""!"4mI4YiIk!(0#`!rrp"JJ'S1(m!H$L!!!&)"@&*J%%!&&4J"Mp
!JJ#)U*i!@$KK!,5![J"+1-%!G%J$'+&J!!!!1!!!#(`*!kBi`3!81+%!X)"P!!5
%"3!)N!"Q!!58"J!)3J$rm)#&!!3iB3"`1!%!E*!!KJ!%S)8!#,#'!!L3!'%!B*!
!!3"NJ'%!')#"!"b!S3!JJ-%!*)$K!#L"!3!XJ5%!-)&"!$4)!j8eB!!!!+Kq!&J
iS3"dJ*i!5MM!!!0)"9`0J%%!&(ai'hKr!!Fd,!$rrd##!)K)"@%&J%%!&(al'hK
rB!Fd,!$rf8##!'#SIJ"B1+%!G)#H!%T)"A+aJ%%!&%J&B0Q!33!8I(XEH(pJ"c9
!JJ!iU(i!@$LK!(5!RJ"+1-!!!dJ&@k@!33!8I(JEH(m!"c3X!2rr3))!)%J&B*f
!33!8I(XEH(qMkhK)"@FGJ%%!&%J!!93iB!!"5!9QhB""!"4rJq0i5!9J@B""!"4
rSqYiI`6$H$MK!'JiS!!$1-!!!6N!!!",rkr4B!!!!(al'hKrSqYi5!9QdB""!"4
r!m0i5!9QaB""!"4rB!Fe3))!q)!C!')X!!!!3B)!-+LH!&JiB3#dJ,i!5MM"!(4
)!aF*B!!!!(p$dhJiJ3#d5!'Xb@!!!!"mHaYi1(m!H$L!!!&)"9pYJ%%!&&4J"Mp
!JJ#)U*i!@$KK!,5![J"+1-%!G%J$&X9J!!!!1!!!#(`*!kBiS3!81)%!X)"N!!5
%"!!)N!"P!!58"3!)3J$rm)!%!!53!!8!"+!%!!L`"3!)J!%!F*!!!3"JJ!%!E*!
!!3"NJ'%!')#"!"b!S3!JJ-%!*)$K!#L"!3!XJ5%!-)&"!$4)!j3CB!!!!(q$ihK
)"9meJ%%!&(p$dhK)!QfaB!!!!(pMfhK)!!!J1'!!!8J&CBf!33!8Ii2MH%J&A`Q
!33!8If2EH)!"!5Ji)3%JZ`(ri(`)!kC1J!!J[i(rm(`)!UBiJPr`I(dEH$[J!!!
lJ!!!N!!"!!L8)Iq`J!-!$)2%!!#3!!-!%$aJ!!)i!i!!N!!"!$JmI`!#1!1!!)"
p!!am!"J!3B!!$(`I'&#3!!%!1)!"!$JX!!!!3B)!H+Kp!"4raI0i1)%!1%[rq#9
mI"YiIi!(08##!&b!!3!i,!!!!%'#!&#SI3!@ImAcH$L"!$K,rrQpJ)%!1(am'hJ
m"2rr+!#!!%##!#arrb)8Ik2VH(rNqhK,rlIT9'!'2d'#!!`lJ2re5!!!$(q!"c9
"J[pFIi2MH)!"!&Ji)3"3I!J$TVZ"rr"1J!!J!!!!!,q"rr"m#!+Q1-*JGham'hK
mR50iI,mVH$[!rrq3!!%!#*3Kqm#)"J!!+!!!!%'#!4K)!k-4B!!!!&4J"Mp"JJ%
)U*d!!$J!!!!iB3$JX)%!i$L"!*!!J,d!!T!!S3$LQ!%!jNJ&Ac'!33!8I(i(08#
#!0JiB3)S1)!#!%J$QBPJ!!!!1)*4V$KK!5L!(!%!J)3!!&3!-$+!K!!!I)3#&%J
$0+9J!!!!5!9J*B""!"4mC4Yi1)%"+$KJ!!")"@!TJ%%!&(ap'hK)"Ae&J%%!&(a
q'hJiJ!!!Nm%!2(qMkhL3!)%!1(r&mhJi`3)S5!9p1B""!"4rSqYi5!9H2B""!"4
ra20i1'%!N!!iS3)S11%!3$M!!!")"AdTJ%%!&(aq"c9!JJ!S1!!!#R`*!kBi[rr
m1)%!2)"N!!5%"!!)N!"P!!58"3!)3J$rm(r$mhL!!34)1#%%3(`)!kDlJIr`6S!
!)!!!!!"m#!+QN!!"!!L8)Ip`1+%!1%[rrT%X!`!!3))!&$KK!$K)"AdaJ%%!&(a
M"c5!!3#B1#%!N!"m#!1Q6S!!)!!!!!#rSIrdI!J#TMLLB(GmI4YiI*mMH*!!!3!
)P#(lF)J&!!!S!!!!3B)"A%J$SAPJ!!!!9'!'2d'#!8arirYi1)%"+%J&AE'!33!
8I'!(08##!63iB3*i1)!#!%J$Q!PJ!!!!1)*4V$KK!AL!(3%!J)3!!&3!-$+!K!!
!I)3#&%J$-b9J!!!!5!9HTB""!"4mC4Yi1)%"H$KJ!!")"9kTJ%%!&(aq'hK)"A[
&J%%!&(ap'hJiJ!!!Nk%!2(r$mhL3!)%!1(qPkhJi`3*i5!9lZB""!"4rT1Yi1'%
"+$LK!RJi`!!!11!!!%J&I"@!33!8I'!(0#`!rp"!JJ#!1!!!!*J"!%BiB3"!1)%
!f+JI!!#`!3"!J"m!!T!!!3"#5!9FfB""!"4mB!Fe3))!8(qNkhJiB3$B1+%#H$M
K!)Ji`!!!5!9lAB""!"4mB!Fe3))!,$KK!)K)"A["J%%!&(qNkhJiB3%S1+%#H$M
!!!!ii!!!5!9lMB""!"4r`r0i5!9F'B""!"5!!35B1#%%N!#lSIrdI!J$TNk!!#!
!!!!!!!!!!!!!!!#r`IriI!J#TML#B(GmIKYi1q*J&T!!!3!)P#(qX)J%!!!S!!!
!3B)!K%J$RpPJ!!!!9'!'2d'#!(3iJP'X1'%!2)!H!3#!K!!!9!!`-S#%!!"mK!)
85!-aV@!!!!#SI`!!1)%!1%J&CP@!33!8I'!(08##!$L)IJ!!1)!!!B!"!$JiS`!
"U(m!!(bP!&")"@CGJ%%!&$KK!$`iJ!!!1+!!!8J$3`&J!!!!J!%"@$JK!9#l`Ir
iI!J$TNk!!#!!!!!![D(rY(`)!UBlJPrjI'mEH$ZLArJl`Q!FI*!!)hJliPBFI,%
VH(c5-hKmmcYiI3j$H(dY5hKp9&0i1`!!!6VJ!!%k`!!"1U!!!*!!!3!)1!!!!*3
KrQ#`!3#kX!%!Z)!$!)k$B`"Z9!!'2R`D!hJX'J!"3B)!0(p!"c3X!!$l3B)!+&D
!"Mp!JJ!JIJ1$H(j%NhKqCCYi5rr(,Aaj'hKr)!Fe3)),E$K[!)iiJ!!$5!9BlB"
"!"4@J!BrQ(d!!%'#!%#SNJ!!1+%"#$M"!3SiB!!"5!(j`@!!!!"mH4YiIb!(08#
##ba)"99YJ%%!&$L"!3j)"9E*J%%!&%J!!2b!c`#QIH0lH(j%NhKqCCYi11!!"%J
$G8&J!!!!I(NEH(mJ"c9!JJVX1'*D[+J$!8!X!!!!3))!$$XJrrp)!!V8IH0lH%[
rX+&pihYi5rr(LAhMHhK)!K-aB!!!!&4J"Mp"JJ!iU")!!(j&NhKqCTYiX!i!!$K
J!!'!%`!!N!!0!!#SNJ!!5!(j%@!!!!"mH4YiIb!(08###RbSNJ!!IH0lH)#c!!"
)!IZ"B!!!!(aj'hKr)!Fe3))+A+L5!!"pjRYiJ,-!!$KK!3K)!`p0B!!!!)!2!)j
pjAYi1'%"#&3!aMjm"!Fd5rr0FAaJ"c9"JJ!-1b$rrdJ!#Kb)$`#m+!!!!%##!"3
iBQ"eL!-!!#J!!!""JJ!BId!(0#`!!!&"JJ!m,!!!qd'#!$3iE`#'1)!!"dJ&A%f
!33!81'%"#$L2!(iiS!!!1-!!!$MJ!!",rkdjI(NEH%J!!##!V`"#1'%"#)$2!%B
iM`"q11!!!8[rV4PmH4YiIb!(08'#!*a@J!Br3B)!+(mJ"c3X!2r33))!(%J&8m@
!33!81)%"$NJ&95'!33!85rrr9(mJ"c3X!2r33))!0$KK!3K,rme0J!m!MRhNHhJ
iB3%)9!$'2R`&"c4)!J3&B!!!!(aj'hKr)!Fe3B)!0(mJ"c3X!2rr3B)**#`!rr9
"JJNFIbE,H$KJ!rBiJ!2`1+!!"8J$)AeJ!!!!5!!*!&D!"Mp!JJ!m1'm!MML!!!9
)"9YaJ%%!&+J5!!!iE`$31)!!!,!2!&L!%`!!N!!2!%T)"9CCJ%%!&&4J"Mp!JJ2
31'm!d$L!!!&)"9C"J%%!&&4J"Mp!JJ1i1'*Ih$J!!!!iJ!!!N!!$!!!iB!!!5!-
a0@!!!!!iBPpFJ!-!!#J!!!""JJ!31'*G!%J"A8PJ!!!!L"d!!$L!!!%iBPrd+!!
!!*LF!!#4i`!!3B)$&$KLAmb!!`!!I"X!!%'#!!b6B`!!5!!#r$J!!!#B(!!!5!!
#m(aJ"c9!JJ!mJ!m!BL`!!!""JJ,3JDm!@MKK!3JiS3#i1)!!!dJ&@"f!33!81)*
IqMJ!!!&mH4YiQ!3!!%J!!%b!$`"Q,!!!!%'#!TL)(3!!+!!!!%'#!!b"V`"D5!!
!#)'[!&iiB3%)1+%!Z$L!!!0)"9ITJ%%!&$L#ArSi!!!!I(NEH*J%!!"r)!Fe3B)
!1(hMHhJiJ!!!1+!!!$M!!!")"91aJ%%!&(mQbhJiB!2f1)!$m$LJ!!C)!arTB!!
!!%J!"e#)(!!!+!!!!%'#!F3iJPr81!!!!$KLAp#3!!3!!*!!!`!!1'*Ia)!2!'U
SB`!!I!-!!%'#!*!!9Z!'2d'#!)Kq*)Yi1'!!!%J!)ZPJ!!!!I(NEH(mJ"c9!JJE
NJ)m!DRiMLhJi"2rr1)*Ia,!%!!",rqG4I(NEH(mJ"c9!JJE!1!!!,$M#Aj53!!%
![$LK!,`iJ!!!U(%!!%J#CHPJ!!!!I(NEH(mJ"c9"JJ!FIbE,H$KJ!rBiJ!2`1+!
!!d[rUb9)!!Cm9`!'2d'#!"bSF3!!1)!!!B#[!'j)"@#aJ%%!&$X!!!!iJPrB1+!
!!*'q!!`iE`#1U!%!Z*!!T!!!1)!!"kLa!!#`[J!8X"i!&NJ&8qf!33!89'!'2d'
#!""r`r0i5rre88J!!"4r`r0i1)!!!%J$#a&J!!!!U*i!&(aJ"c9mH4YiX*%!!%#
#"@#)(3!!+!!!!%'#!"!i!!!!Q"`!!%J!!+LS!3#k,!!!!%##!$5!(J!3J)m!BR`
!)!""JJ!-1b$rr%J!"53iBPr3J!-!!(aJ)&")!NVYB!!!!%J!!'b!(J!3J)m!CR`
!)!""JJ!-1b$rr%J!"23iBPr3J!-!!(aJ)&")!NUpB!!!!%J!!$bS!3#k,!!!!%#
#!"`iSPr`1)m!BUKK!,L!T3!!5rrZe8J!!"JiSPr`1)m!CUKK!,L!T3!!5rrZ[DK
K!,K)!Q'9B!!!!$J!!!#`!3#i1Z!!!+KK!,Si!`!"X!%!ZUKK!,TmB!Fd,!!!!N'
!r3K@J!Br3B)!*+"[!,!iJ3%)5!0re@!!!!"mH4YiIb!(08##"%a)!!9%1'm!d$L
!!!&)"9+0J%%!&&4J"Mp"JJ(%1'm!d$L!!!&)"9*eJ%%!&&4J"Mp"JJ!3J!m!HP3
0"$j)!!!)SDm!X(fMDhJiJ3#k5!0r"@!!!!"mH4YiIb!(08'#!&KpSfYiIJ3(0%J
$CIPJ!!!!1)*9k&4Y"$jpS'YiJ'3!!"`!!3k!B`!!I'-#&)J$!,iS!!!!3B)$Y$K
J!"9)![$&B!!!!&4J"Mp"JJ1J1b$rrdJ!"%#SB3#k1)%!`%J$Ip9J!!!!1!!!#(`
*!kBii3!81-%![)"Q!!5%"J!)N!"R!!58"`!)3J$rm)"Q!!3i!!!)I!N$TMLK!&b
3!'F!"$L"!35J"J!)X!F!#)"N!!5%"!!)N!"P!!58"3!)3J$rm)!%!!3iB!!!N!!
&!!5J"!!)X!8!#*!!B3#SJ!m!BT!!!3#XJ!m!CT!!!3#`N!"K!,5!B3!BJ)%!()#
K!##!`3!NJ1%!+)%"!#b")3!`J8%!0%[rVVPmH4YiIb!(08'#!#a@`!Br3B)!*(h
NHhJiS3%)5rr)#Aaj'hKr)!Fe3))$H$V!!!",rrmSIb!(08##!U3iE`#11)!!"8J
&9H'!33!8U")!!,!2!&L!%`!!N!!2!%U!E`"LJ!m!CRaM!K4)!NK0B!!!!$KLB!+
)!`!!+!!!!%##!#bSNJ!!IH0lH%[r[be8B!Br3B)!'&D!"Mp!JJ!31'*J!MJ!!!'
B!`!!IH0lH$L"!3K)!Dj9B!!!!(aj'hKr)!Fe3))#($K[!,miJ!!%5!93BB""!"4
8B!Br3B)!'$K[!)BiJ!!(5!99+B""!"4)!!"B1'*@kSJ$!!!S!!!!3B)!5$K[!)B
iJ!!(5!93*B""!"48B!Br3B)!-+L[!)JiE`#'1)!!"cJ&XH#`$`#)U+m!LMJ&XH#
`$`#+5!98eB""!"3kS!!"J+m!3Rp(dhL!c`"'1'%"#$L2!(j)!dr0B!!!!(aj'hJ
iE`#'1)!!"dJ&6m'!33!89'!'2d##!!a@S!Br3B)!'(hMHhKr4G0i1)%"#%J$809
J!!!!Ib!(08##!$"pj(Yi1'%"#%J#k#eJ!!!!Id!(0#`!!!4!JJ!8IH0lH$L"!3K
,rqcKI(NEH(mJ"c9!JJ!`1'm![cL!!!G)"8p4J%%!&&4J"Mp"JJ!BU'%"#$LK!3k
!J3%+5!9`VB""!"4r)!Fe3))!*)$2!+TpihYiIN56H(jPQhJii!!&5!0Vb@!!!!"
mH4Yi1'm!d$L!!!&)"8lpJ%%!&&4J"Mp!JJ"31'*Ih)!2!(U!B`!!I!-!3%'#!$a
pihYi1)!!!$LJ!!!i`!!!5!90BB""!"3iB!2f1)!$m$LJ!"!i`!!!5!-CQ@!!!!!
l)2rr5!!!k(hMHhK)!JQ&B!!!!&4J"Mp!JJ!3IH0lH$L"!3K,rr+0J(m!!$KMrrq
3!(m!!%J#3feJ!!!!5rqRj94J"Mp"JJ!-1'$rp8J!!3Kr)mYi5!!"!$KK!3iiJ!!
!1+!!!$M!!!")"8cCJ%%!&(mJ"c3X!2re3))!&$J!!"+`!3#k1d!!!%J!!$JX!2r
F3))!%$J!!"D`!3#k5!!!)#`!rpj!JJ!31!!!&l!"!,T)!!!-1!!!%E!"!,Tr1XY
i1'*J$BJ$!!!S!!!!3))!)+LK!,Tr4Y0i1'!$pML!!r!ii!!"5!-9l@!!!!#SB3#
iI'!(08'#!!a)!PaCB!!!!$K[!)iiJ!!&5!95JB""!"3iB3%)5!*FI@!!!!"r)!F
d,!$rrd##!"L!E`"LJ!m!CRaM!K4)!N6pB!!!!)"r!!!iBrrrN!"r!!")!N*CB!!
!!(mMbhL!!3'S1#%"S,QKrl4m#!1Q6S!!)!!!!!!!!!!![i(rm(`)!UBiJPASI(d
EH$Z!!!#3!!%!#(qJ"c3F!!%1P#(rX)"N!!!iJ!!&J'-!!(rM!K3iI`#r5!90!B"
"!"48B!Br3B)!$$KJ!!&)!!$d1'!!&%J#kkeJ!!!!9'!'2d'#!!`iB!!!5!!!f)[
I!,`l[3!"1rm"$NJ!!,#)I`#m9m!'2R`$!%"!J3#d1(m!MML!!!4)"8bPJ%%!&&4
J"Mp"JJ!NIq2lH%J!piPJ!!!!I'!(0#`!!!P!JJ"N1'!!!%J!!)"A``BqL*m![$J
$!!&m"!!!3))!5)!I!)j8!!Bq,!!!!8'#!"Km!!Fd,!!!qd'#!!`X!!!%3))!*$K
r!)iiJ!!#5!9-0B""!"48B!Br3))!$$KJ!!")!!!S1i!!!6[r!3il[3!"1'*9l(q
N"c5!!`!!I!3!!%'!rd4rJq0iJ!%!@$JK!&#lJIr`I!J$TNk!!#!!!!!!!!!!!!!
!!!#rSIrdI!J#TRar'hKm[LYiI*dMH(r$mhL3!!%!#$LI!#'8)Iq`5!-MA@!!!!#
!(`#19!!'2L`!!!G!JJ#%1'*9k$LJ!!#JR`#bJ'-!!)2M!!")!!"FS"m!X&5$"$j
m!`"!3))!4$Kr!)iiJ!!&5!9,EB""!"48B!Br3B)!4(rMqhK)!1bKB!!!!&4J"Mp
"JJ!`Im2cH$LI!#&)!b,TB!!!!%J!!"`lr`%11+8!!AbM"c4rS!FdI!-!!%'!rjb
!!3"B1#%!8,ZKrr4m#!1Q6S!!),r"rrKm#!+QI(mEH$LL9HJiI`#1N!!"!!JF"!%
1P#(r`)#&!!#!T!!!1)!!"Ar&!K4)"8VCJ%%!&&4J"Mp"JJ!B1(i!MML!!!9)"8q
jJ%%!&%J!!"3iIJ#11)!!"8J&6if!33!81(m!MML!!!&)"8UGJ%%!&&4J"Mp"JJ!
B1(i!MML!!!&)"8ppJ%%!&%J!!"3iIJ#11)!!!8J&6e'!33!81(m!MML!!!0)"8T
KJ%%!&&4J"Mp"JJ!B1(i!MML!!!0)"8p"J%%!&%J!!"3iIJ#11)!!!dJ&6a@!33!
81(m!MML!!!*)"8SPJ%%!&&4J"Mp"JJ!B1(i!MML!!!*)"8m&J%%!&%J!!"3iIJ#
11)!!!NJ&6YQ!33!8U"m!@,!H!&L!(`"+N!!H!%U)(`#pQ"i![B!I!,D3!"i!YSJ
H!,XS!!!!3B)!')!H!'iX!!!!3))!$)!I!'k3!"i!EMKr!)iiJ!!%5!9*UB""!"4
8B!Br3B)!*)JI!,mS!!!%3))!'$Kq!#%iR`!K5!-K,@!!!!")!!"-1(m!MML!!!4
)"8PaJ%%!&&4J"Mp!JJ!dL"m!ZbJ!!!""JJ!SIq2lH%J$M[PJ!!!!9'!'2d'#!"4
r`r0iIq6lH%J$)1&J!!!!J!%!5$JK!%#l`IriI!J$TNk!!#!!!!!![U(re(`)!UC
mI"Yi1b*DU(bG)hKm[LYiI0mcH(ch1hJiI!"k1)!!#j!!!3!)P#(q%%J&51Q!33!
8I(8EH$Km!(SiJ!!(5!9)eB""!"4mHKYi1(`!HML!!!T)"8M"J%%!&$L!!!5)[!#
r9)3'2RbP)&"@S!Br-)Arrhb%+4"mHaYi9*B'2MUJ!!""JJ*N1`%!GML#9Q56i3"
f1'%!HML%!!Uc`3"d5!-J(@!!!!")!b)eB!!!!%J$FAeJ!!!!U+%!G(q$ihL!f!!
!IZQlH(qN"c3j!3"`11!!!%J"%'PJ!!!!I(FEH%J$)ZeJ!!!!1(`!MML!!!0)"8J
PJ%%!&&4J"Mp"JJ$%U!%!F#`!!!""JJ#i9d!'2d'#!*KAB!Br3B)!@)JF!,mS!!!
%3))!))"j!!#!B`!!U!-!!#`!!!&!JJ!-1U!!!8J!!%"rJq0i5!$T&@!!!!"mC"Y
iIi2MH(l&XhJi`3"d5!&ir@!!!!"mG4Yi5!!!&)"m!)K)!56jB!!!!(ae'hK@S!B
r3))!2$Km!(SiJ!!25!9(KB""!"48B!Br3B)!*$VJrpP)!!!FJ(N!!)"M!!#SB`!
!I!-!d(`!'(K8&3rq9U!'2d'#!8`kS!!!5!!![(kJ"c3FB!"'1!!!#(aP'K4m#31
Q1+%!F$L$rrk!C!!%K!3!#*!!C3!%P!8!#%)!rr#!C!!%1!!!#(`*!kBj!3!NN!"
P!!3ii3"`S!3!#,!&!!L!C`!%K!F!#*!!D!!%P!J!#%)!rr#!"`!%Ii2MH(r&mhL
3!!J!"(rQqhKrT!FdS!F!#,!)!!L!i3!SJ3%!,)%K!$#"33!d5!%cZ@!!!!"mGaY
iIZ!(08'#!""qi!Fd,!$rrd##!#!kY3!"J(N!!(kN"c5!S`!!U!8!!(`%!!""J2m
dIZ!(08##!#5!h!#UIi2MH(m&`hJiJ3"d11!!"8J$Ba&J!!!!I(FEH$Km!(SiJ!!
25!9'4B""!"48B!Br3))!0$VJ!!")!!!XIi2MH(r&mhKrj[YiIZQlH(qN"c3ii!!
"13!!!%J"$MPJ!!!!I(FEH%J$EaeJ!!!!IZ!(0#`!rpP"JJ!-,!$rh8##!&JiI!"
k1)!!$dJ&4H'!33!89'!'2d'#!%!iB3#m1)!$pMLJ!!9)"83YJ%%!&$KK!,`iJK3
d5!-FM@!!!!"rK10i1'%![$LJ!!!i`!!!5!9%0B""!"4qi!Fe3))!&%[rR`98B!B
r3B)!#$VJrr9qilYiJ!%"q$JK!I"m#!1QZU(re%k!!#!!!!!!!!!!!!!!!!#q3Ir
)I!J#TRcl1hNkJPB!1U*J"$V#CA"mIaYi1i*4V(bC)hJk3Pr%1Z*@B(cD-hJlSPA
S1`*JGj!!!3!)1!!!!*3Kq5#3!!%!5*!!!3"%N!!"!%""JJ!-1!$rrj!!'`!!Iri
(0)#G!!!FIJ%1J)3!!$J!!#&mK"S8I!N$TMLK"B`iK2rmJ'3!")3%!!L3!'8!"*3
&!!K#!2r`J!3!"*!!"3!%S!3!#,!&!!L)!3C,+!!!!%##!$`iB3BH1)!!"%J&4+'
!33!89'!'2d##!#5)!3C19!-'2d'#!"LS%J!!I!-!!%'#!!`iB!!!5!!1J$KK"C!
!1)%!5$LK!%3i`3"!5!$L@@!!!!"mFaYiIQ!(08##$M!iBPr!U)%&jUJ$!!"mJ`F
dI!-!!%'#!+4r*-Yi1'!!!%J!%Q9J!!!!I(-EH(jJ"c9!JJhmU()!!$J$!!'`%J!
!5!!!,(mNbhJiB!!"5!!51@!!!!"mFaYiIQ!(08##$G#SFJ!!1!-!!E!5!!#S%J!
!J'%&qR`!'!""J2r-1!2rrl!5!!#S%J!!,!!!!%#!!!`i!!!!X")!!)!""Gjr)mY
i1)*Ii*!!"!!!5rr@EAac'hKqB!Fe3))0H$T#9Q4A3!BrJ(F!!+J5!!D3!'%!8,!
"!$j"JJ!JS'%'3$L!!!")!h!TB!!!!(aJ"c9"JJdi5!!(#+!""N3S!!!!3B)!0$K
K"KiiJ!!%5!9$5B""!"48B!Br3))!((rNqhJiB3@3!%J"#APJ!!!!9'!'2d'#$3#
!&J!!+!!!!%##!!K)!!!81'%&N!!iJ!!J5!'(d@!!!!#!&J!!+!!!!%##!!K)!!!
81'%&X6L!!#")!BHaB!!!!)J""NXS!!!!3B)&3)J9!!!S!!!!3B)!4)#8!!!iB3B
L5!0dk@!!!!"8B!Br3B)-N!!iB3C35!0e"@!!!!"8B!Br3B)-I$KK"PK)!h9"B!!
!!&4J"Mp"JJaSJ-%'0MKK"C!!1)%!2MLK!&!ii!!%5!0I,@!!!!"mFaYiIQ!(08#
#$%3iBPUmU!-"3#`!!!""JJ``Iq2lH%[rp498B!Br3))-*+KK!$ikS3BHU")!"S#
""Kjm!`!!9)!'2R`8!hK!JJ#JJ'%!8)!A!!"m!`!!3))!N!"qJ!Fd,!!!!8'#!!`
X!!$l3))!)(rMqhJiJ3!q1+%!8%J$IXPJ!!!!I(-EH%J!!&KrirYi1)%!2MLK!&"
,rkrpI(-EH(jJ"c3X!2rr3))!+(k!"c3X!!!%3))!((rMqhJiJ3!q1+%!8%J$D)&
J!!!!I(-EH+J"!$iiB!!"Q'%'6E!""HKqB!Fe3)),D)*"!&"qSkYi1)!!!8J&3AQ
!33!89'!'2d'#!"#!!3ADN!!"!&")!!1NL!%'6$KK"C!!U+%!2RaN'hKm!!!d1-%
!8&3(hMij!3!i5rqEeAac'hKqB!Fe3B)!0(jJ"c3X!2r33B)!+#`!rr9"JJVmIQD
EH$KJ!rBiJ!2`1+!!#8J$#r&J!!!!5!!+i(jJ"c9!JJ$XJ')2E$J!!!Km#31Q1+%
!8$L$rrb!C!!%K!3!#*!!C3!%P!8!#%)!rr#)!3!i+!!!!%'#!,JiB3B@1)!!!NJ
&3,Q!33!89'!'2d##!"`iB3"81)%&N!")!1&TB!!!!&4J"Mp"JJ#)U!%!2MKK!3D
533%#1)%&N!#`!3%!5!-B*@!!!!#!&3!!1'%"!**"!&!iJ3@3!&3!aMjm"3Fd5!(
YP@!!!!"qB!FeI(BEH%##!#b)!3C-1'%&N!#SS3!qI'3EH(`!!$3i`3"39!IH2MN
"!$K,rjV"I(-EH(l!"c3X!2rr3))!$$TJrrp)!!R`IQ!(08##!Nb!!3"3IU1VH$L
!!!'3!!%&fNJ&41f!33!8IU1VH$L!!!9)"86GJ%%!&)J"!$JiJ!!"U'%!2LJ!!!#
BJ3C0X'%&k%##!!L3!)%&rMKJ!"G)!Yk"B!!!!&4J"Mp"JJ!3Im6cH$KK"C!!5rq
h1DL"!$jq4C0i1'%"5$M""C!!5!,h"@!!!!#)!3C-+!!!!%##!"3iBQ"eL!-!!#J
!!!""JJ!SIS!(0#`!!!&!JJ!F1'%'6cL!!!4)"6p9J%%!&&4J"Mp"JJ!31!$rrj!
!!3BB5!!!2$KL9ZU)!`!!+!!!!%'#!#bS`3BB1'%'&ULK"KSiJ!!(1-Dai$J&XH#
``3BBX!%''NJ&3qQ!33!81'%'($L!!!Y)"82CJ%%!&)J"!$JS!!!!3))!B)#K"G)
iB3&)J-%&eML""Jk!i3B#J3%'#NJ#5c9J!!!!I(-EH(jJ"c9"JJ!JIQDEH$KJ!rB
iJ!2`1+!!#8J$#C&J!!!!5!!)J$KK"C!!1)%"5%[riTdiB3@3!%[rj$@)!3!i+!!
!!%'#!-4r`r0i5!(b-@!!!!"8B!Br3))!X$JI!!'!I3!!I")(0)L""Naq3*0iJ'-
!!"`!!3iiK!!"9*-'2Rk$!K4)!!"`L(3![&CJ"Mjm!`"!3B!!G%##!&3iG!#11)!
!"%J&2L'!33!89'!'2d##!$`iG!#11)!!!NJ&2JQ!33!89'!'2d##!#5!&!#19!!
'2L`!!!&!JJ!81(3![cL!!!4)"8,CJ%%!&$U8!3ik8J!"1'*9l(j%"c5!!`!!I!3
!!%'!ri5!`3Bk1'%&N!!iJ3!q1+%!8$MJ!!9)!eTKB!!!!(ac'hK)!!GmL"8!!#J
!!!""JJ"FJ*3!!$KK"L*)!fqYB!!!!&4J"Mp!JJ!-1'!!!%J!"h`iB3C35!0[`@!
!!!"8B!Br3))!$$KJ!!")!!GJ1'%'@%J$Er9J!!!!9'!'2d##!!`iB!!!5!!(4$T
""Kk!!3BHIN16H$L!!!48!!BqI"3$H%J&24f!33!89'!'2d'#!#`iB3B+1)!!$NJ
&23@!33!89'!'2d'#"Y5)!3C1+!!!"d##!$!kJ!!"IS!(0#`!!!&"JJ!-,!!!qd#
#!"KrirYi1)%!2MLK!&")!hQGB!!!!(j$NhJiJ!!%5!8mYB""!"48B!Br3B)!8)!
@!!!S!!!!3))!$$J!!!")!!!81'%&N!")!B*&B!!!!(aJ"c4m%`Fe3))'A+LK!$j
ra20iJ-%!8(pRfhJiB3@3!%[rmdemFaYi5!!!m$KK"C!!5!(h2@!!!!"8B!Br3B)
!'%J&12f!33!81)%&N!")"6TCJ%%!&)"K"Jim!kZl+!"B9%##!$5!B3B52!1,M#J
!H(4!JJ!N1'!!(dJ#fY9J!!!!9'!'2d'#!"!mB(4d1!0bEj!!!3B1L!%'6LJ!!!"
!JJ!`Iq6lH(mPbhKr5Y0i1'%&N!!i`3!q11%!8$N"!$`j)3"-5rrL,Aac'hK)!!"
!Iq6lH(p*dhJiB3@3!$LK!$ii`3"311%!2$N"!%a,rl5e9d!'2hac'hK!JJ!81'%
'(ML!!!*)"8"pJ%%!&)"K!&#S!3!qN!"K"GU`!3ASIQ!(0#`!rrp!JJ!)1Q!!!$T
""Kjq3j0i1)!!"8J&1e'!33!89'!'2d'#"54q3j0i1)!!"%J&1cQ!33!89'!'2d#
#"3`iB3@3!%J"pJeJ!!!!9'!'2d'#!Darj2Yi1'%&N!!iS313!$UJ!!&,rqmYU+%
!2$KK!j!!J)%!6$J!!!#3!'%!TMKK!*5`S3#UN!#"!-5`!3#`5!8ppB""!"4mFaY
iIQ!(08##!03iBQ!+L!-!!#J!!!""JJ#mU'%!2MLK"C!!J)%!8$N"!j!!U-%!2)$
K!%`j)3!k5!&+K@!!!!"mFaYiIQ!(08'#!2KqB`Fd1)%%N!")"6LKJ%%!&$KK"*!
!1))82%J$%8PJ!!!!1'%%N!!iJ!!C5!-Nk@!!!!#SB3!m1+%%N!#!J3"-1-%$N!"
,rij41'%%N!!iJ!!!1+!!!8J$)i&J!!!!1'%%N!!iJ!2e1+!!'8J&1)f!33!81'%
%N!!iJ313!$LJ!!!i`!!!5!8iTB""!"4)!!"`1Q$rR%J!!'JiB353!$L!!rBiS!!
&5!8i9B""!"3iB353!$L!!"P)!b4PB!!!!$KK!j!!1)!!!$LJ!!&)!b-4B!!!!$K
K"*!!1)!$p6LJ!"P)"6JGJ%%!&$KK"*!!1)%$N!!iS!!!1-!!!%J&1$@!33!8U)%
!2MKK!8L!S3"31-%&N!")![$pB!!!!$KK!8K)!NKKB!!!!%J!!"Kq3j0i1U!!!$L
!!!9)"6jCJ%%!&$KLB"Bi`!!"1+*J!kJ$!!#SJ3!qJ'%!8#`!!!#Ba3!!X)%&k*!
!B3AD3B)#H(jJ"c9!JJ*`J")!!&3!"Mjm&!0i,"3!!d'#!"KqJ!Fd,!!!rN'#!!`
X!!$r3))!X$KK"*!!1)!$p6LJ!!9)"6GCJ%%!&$KK"*!!1)!!!6LJ!!")!b)PB!!
!!$KK"C!!1)!!!6LJ!!")!b)4B!!!!$KK"*!!1)!$p6LJ!!G)"6FGJ%%!&$KK"*!
!1)!!!6LJ!!")!b(TB!!!!$KLAq`iS353!$L#Aq3i`!!!U'-!!)#%!!",rib*1'%
%N!!iJ!!!1+!!!%J$)EPJ!!!!1'*J9$L!!!!iS!!"5!-KT@!!!!")!!'F,!!!!8'
#!*3X!!$l3B)!M&DJ"Mp"JJ!FU'%!2$LK"*!!J)%!6$M"!j!!5rq--8J!!23iB3+
3!$L""C!!5!-2`@!!!!#)'!!!+!!!!%'#!$JiB3@3!%J$IDPJ!!!!9'!'2d'#!#5
!R!!!1'%#N!#!!3D3!)#%!!"8!$!bI)3#&%J$$i&J!!!!U'%!2MLK"*!!J)%!8$M
"!T!!5rq,b8J!!)b)'!!!+!!!!%'#!'`iB3'3!$L""C!!5!-26@!!!!#)'!!!+!!
!!%'#!$JiB3@3!%J$I69J!!!!9'!'2d'#!#5!R!!!1'%"N!#!!3D3!)#%!!"8!$!
bI)3#&%J$$`eJ!!!!U'%!2MLK"*!!J)%!8$M"!C!!5rq,98J!!"KrirYi1)%%N!!
iS!!"1-!!!%[rUZe@S!Br3B)!A$KK"*!!1)!!%dJ$)DPJ!!!!1')83$L!!!!iS!!
!5!-J9@!!!!#SS3!k1'%%N!!iJ!2e1!8!#(`&"c4)"69CJ%%!&$KK"*!!1)!!!$L
J!!&)!b!PB!!!!%J!!"`iB353!$L!!!9)!b$KB!!!!$KK"C!!5rrFC9DJ"Mp"JJ#
8IQ!(08'#!)aqB!Fd,!$rP%##!#!iB!2f1)!Uq$LJ!!%i`!!!5!-"G@!!!!")!!!
mIN16H$L!!!C)"6CjJ%%!&&4J"Mp!JJ!-1Q!!!%J!!"aqCTYi1'!$pML!+[SiS!!
#5!-"1@!!!!!iBK3iI'3EH(aP'hKmCKYi5!8ddB""!"4)!!!31Q!!!%J!!!JkB2r
rJ+%!5(rNqhL!`3"%1'%&N!#!i3"!5!$90@!!!!"ra20i1'%&N!",rqVeIQ1EH)!
""ZJi)3EJZN(rb(`)!kC1J!!J!!!!!!!!!!#r`IriI!J#TRaq'hJiIJ#11q!!!*!
!!3!)1)!!!T3Krm")"6@jJ%%!&&4J"Mp!JJ"S1'*IrSJ$!!!S!!!!3B)!($Kq!)i
iJ!!!5!8eNB""!"4mIaYi5!!!3$KLB!5)!`!!+!!!!%'#!#ar`r0i5!**"@!!!!"
8B!Br3B)!((r$mhK)!FY"B!!!!(aJ"c9"J!!)1q!!!ArMqhL!!3")1#%!3(`)!kD
l`Iri6S!!)!!!!!#rJIr`I!J#TML#9HKmI4Yi1q*@(*!!!3!)Ik!(0"`!!3k8)Iq
`J'3!!)"M!!"r``)8L"i!ZbJ!!!"!JJ"81(i!MML!!!4)"66PJ%%!&&4J"Mp!JJ!
mIm2cH%[rr[P8B!Br3B)!,)"q!'+!(J"QI'-#&%J#,%&J!!!!J(m!!$KMrrq3!(m
!!%J#+CeJ!!!!Lji![$[H!3il[3!"5!!!e)Kq!,aAJ!BqI!-!3%#"!0L)(J#l+!!
!!%##!+!iIJ#11)!!!NJ&0'Q!33!89'!'2d##!)JiIJ#11)!!"8J&0&'!33!89'!
'2d##!(!iIJ#11)!!"%J&0$Q!33!89'!'2d##!&L)(J#q9!3'2d'#!"3iBPr%U!-
!!(`%!!""J3!mIm2cH%[rrM&8B!Br3B)!,)"q!'+!(J"QI'-#&%J#+hPJ!!!!J(m
!!$KMrrq3!(m!!%J#+09J!!!!1(i!MML!!!*)"6M&J%%!&$[H!3il[3!"1'*9l(q
N"c5!!`!!I!3!!%'!rb#!!3"B1#%!8,Z"rr"m#!1Q6S!!)!!!!!!!!!!!!!!!!&4
N"MmiS!!!3B)!'$KLAm5S!`!!I!3!!%##!!JiS!!"9+-'2Nk!!#!!!!!!!!!!!,m
Krq4m#!+Q1f*9k(aj'hKmQL0iI,iVH$[J!!#3!!%!#*3Krk#JC!#dIb6,H%J$4[9
J!!!!I(`EH8'!!*!!J(X!!"`F!3k!B`!!1)!!"(qM!K3iI3#15!8c"B""!"48B!B
r3B)!D$Kp!)iiJ!!#5!8blB""!"48B!Br3))!8$Kp!)iiJ!!$5!8beB""!"48B!B
r3))!1(r%mhKrJ`Fd1+!!!$M!!!!ii!!!5rrY@Aar'hKri!Fe3))!`$Kp!)iiJ!!
#5!8hNB""!"5JHJ#bIb6,H%J$4P&J!!!!I(dEH8'!!*Km(1J!3B)!N!#!H`!!("d
"$S"M!!!iJ!!%If-#&$Kl!)j)"6*CJ%%!&&4J"Mp"JJ"S1(X!MML!!!*)"6*"J%%
!&&4J"Mp!JJ"31(X!MML!!!0)"6)TJ%%!&&4J"Mp!JJ!iIm6cH(qM"c3iS!!!1-!
!!$MJ!!",rqbYI(mEH(rJ"c9!JJ!81(X!MML!!!*)"6EPJ%%!&(rMqhL!!3"S1#%
!B(`)!kDl)IrN6S!!)!!!!!#r)IrNI!J#TRbI)hJlSPr%1m*9l$Y#9HKmH4Yi1)*
RR*!!!3!)P#(rB$KK!$a)!`P&B!!!!$KLArk)!`!!+!!!!%'#!L#!HJ!!1f!!!)1
$!!")!!)!L(`![N[rrHP8B!Br3B)!K$Km!0!iJ!!!5!8aAB""!"48B!Br3B)!E&F
J"Mp"JJ!SU*d!!(rMqhJi"2rrX"d!!%[r`remHKYiId!(06XJ!!"!JJ1)S(`!X$L
"!$K)!eh4B!!!!(aJ"c9"JJ'-Iq6lH(pM"c3iS!!!1-!!!6MJ!!",rqZGI(SEH(p
!"c9!JJ1%1(`!MML!!!")"6$GJ%%!&&4J"Mp"JJ&31(`!MML!!!*)"6$&J%%!&&4
J"Mp!JJ%i1(`!MML!!!9)"6#YJ%%!&&4J"Mp!JJ%J1(`!MML!!!4)"6#9J%%!&&4
J"Mp!JJ%)L(`![N[rr2P8B!Br3B)!q(q$ihK)!"HjB!!!!(aJ"c9"J!$NS"`!Y#J
!!!"!JJ!3S"`!XLJ!!!""JJ!JIf2EH(q%ihKrjIYi5rrmjAak'hKr3!Fe3))#c&F
J"Mp"JJ"XS"`!Y#J!!!""JJ!m1(`!MML!!!4)"6!4J%%!&&4J"Mp!JJ!NIi2MH(p
N"c4)!2C"B!!!!&4J"Mp!JJ!-1d$rrdJ!!%5SR3!!Iq2lH$J%rrq`(3!!5rr#QAa
k'hKr3!Fe1b!!!%##!#"rj2YiIf-(0$LJ!!!i`!!!11!!!%[rkP&mHKYiId!(0#`
!rrp!JJ!3If-(0%[rqQNl3!!!Id!(08##!L!lR!%11hX!!B!H!!"m'`!!3B$pr%J
!!J5!HJ!!1f!!!)1$!!")!!(SL(`![N[rqme8B!Br3B)!K$Km!0!iJ!!!5!8[3B"
"!"48B!Br3B)!E&FJ"Mp"JJ!SU*d!!(rMqhJi"2rrX"d!!%[r`H&mHKYiId!(06X
J!!"!JJ&XS(`!X$L"!$K)!eZeB!!!!(aJ"c9"JJ&dIq6lH(pM"c3iS!!!1-!!!6M
J!!",rqQ"I(SEH(p!"c9!JJ&S1(`!MML!!!*)"5l"J%%!&&4J"Mp!JJ%i1(`!MML
!!!9)"5kTJ%%!&&4J"Mp!JJ%J1(`!MML!!!4)"5k4J%%!&&4J"Mp!JJ%)L(`![N[
rq[98B!Br3B)!q(q$ihK)!F3PB!!!!(aJ"c9"J!$NS"`!Y#J!!!"!JJ!3S"`!XLJ
!!!""JJ!JIf2EH(q%ihKrjIYi5rrkiAak'hKr3!Fe3))!b&FJ"Mp"JJ"XS"`!Y#J
!!!""JJ!m1(`!MML!!!4)"5i0J%%!&&4J"Mp!JJ!NIi2MH(pN"c4)!23pB!!!!&4
J"Mp!JJ!-1d$rrd[rrN#SR3!!Iq2lH$J%rrq`(3!!5rr!PAak'hKr3!Fe1b!!!%#
#!#"rj2YiIf-(0$LJ!!!i`!!!11!!!%[rk%emHKYiId!(0#`!rrp!JJ!3If-(0%[
rq'8l3!!!Id!(08##!"`lR!%11hX!!B!H!!"m'`!!3B$q&$Y!!!!iB!!)5!)LU@!
!!!!iB3!m5!)M$@!!!!"r3p0iJ!%!U$JK!+"m#!1QZb(rj%k!!#!!!!!!!!!!!!!
!!!#rSIrdI!J#TMKL9HJli!!!1k!!!*!!!3!)P#(rX)"M!!#$``!!5!!!U(r$mhK
)!HIPB!!!!&4J"Mp"JJ!-1q!!!8J!!+!iIJ#11)!!"%J&,0f!33!89'!'2d'#!'b
)(J#r+!!!$8##!'"r`r0i5!0b4@!!!!"8B!Br3B)!6$KL8D`iJ3!iJ"i"!$LJ!!L
!B`!!9!!`-S"M!!"mB`)85!8X[B""!"3iB3!k1)!!"8J&,(f!33!89'!'2d'#!!`
li!!"5!!!)$[H!3il[3!"1'*9l(qN"c5!!`!!I!3!!%'!rd`iB!!&5!,,$@!!!!"
8B!Br3))!($KLAfb!B`!!5!8SKB""!"4)"8AYJ%%!&$KJ!!")!*@"B!!!!%J!MqP
J!!!!5!-lF@!!!!!iJPG!1m!!#)J%!)`S!!!$3))!#$[!!!`iiPBJIm6cH$M#Ai4
mC4YiJ'F!!)!'!!"rj[YiI'-#&%J#&k&J!!!!1'*@()"M!!")!L#aB!!!!(r$mhK
)!L$eB!!!!$KJ!!C)!XTTB!!!!&4J"Mp"JJ!B1'*IrSJ$!!!S!!!!3B)!#%[rJUQ
!!3"B1#%!8,ZKrr4m#!1Q6S!!),r"rrKm#!+Q1)*9l$KL9HL3!!%!#*3Kr`#!K!!
!J'-!!$J%rrpm(`FdJ'-!!(rJqhJF!!%1Im-#&%J!!1!iIJ#11)!!"8J&+b@!33!
89'!'2d'#!-!iIJ#11)!!"%J&+`f!33!89'!'2d##!+L)(J#l+!!!!%'#!&L!(J"
Z,!!!!%'#!*!!1!%!2T!!!3#51!$rrcKK!)#SRJ"BX)%!PV!"!*b!(J"+N!!"!,"
)"5hCJ%%!&(aJ"c9!JJ"FU'%!PS!"!15`B3!iN!!"!$T)!!!mIm2cH%J"jB&J!!!
!9'!'2d##!$5SRJ"BImEcH)#q!%SiB3!i5!,Km@!!!!"r`r0i1)%!1%[rcM%iB3!
i5!)j5@!!!!!lh[lb1rrrrhrJ"c9!J2mJJ!%"#$JK!3#l`IriI!J$TNk!!#!!!!!
!!!!!!!!!!!"m#!+QI'8(0*!!!3!)1'!!!6L#A,U8)Ir!U!3!!(`&!!"!JJ#B1)*
4Y$LJ!!#!K!!!J13!!%J!!"L)"`&C+!!!!%##!(Jij`3@1+8!!6L#9V4mTJFdU!3
!!(`'!!""J2rF1'*A3)J$!)`X!!!#3B)!+%#!!"!X!!!"3)!!&%J!!#3X!!!%3)!
!(%J!!"3iS!!)5!!!%$LJ!!P)!!!)1+!!(6KJ!rBiJ!2a1-!!!%J#p'9J!!!!1'!
!!)!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!,r"rrKm#!+Q1q*A3$[!!!!iJ!!-1(m
!H*!!!3!)P#(rX%J&+6Q!33!89'!'2d'#!(JmB'eK1)0MFcM"!$Jii3!m1'#!!$L
J!!&)"5VCJ%%!&(aJ"c9!JJ"3U'%!1%J#ri9J!!!!1)*@VRaP"c5S"!!!I!8!!%#
!!$!iBP'`(!8!C)"M!!#!B`!!I'-#&)J$!&dS!!!!3B)!%$J!!!1B(`#+1m!!!Ar
$mhL!!3"B1#%!8(`)!kDl`Iri6S!!)!!!!!#q!Ir!I!J#TRaa'hJkSPpU1X*@C$V
L9HamQL0i1J*9k(bl+hJl!PDd1b*4Y(cF-hKmr6Yi1q!!!$KJ!!f3!!%!#$J!!!#
8)Iq!Q!3!!*J&!!")!XF4B!!!!*Km!!#S'!!!,!!!!%'#!c"@)!Br3B)"S)"`!!!
k3!!!JQ-!!%J!!A`iF`#11)!!!%J&+"'!33!89'!'2d'#!9aqBjYi1m!!!%J"[,&
J!!!!9'!'2d'#!3!iBPA`1`!!!)"M!!##J`!!5!!!f+S8!!!iF`$5IJ5$H%J&*mQ
!33!89'!'2d'#!,5!H3!!("!%&S"M!!!l`!!"I'-#&)J$!9BS!!!!3B)!')J9!!!
S!!!!3))!$$J!!!'B'J!!1(-!MML!!!4)"5GpJ%%!&&4J"Mp"JJ"SJ"-!HRjMQhK
8!!3qI"!(0%J!dG9J!!!!9'!'2d##!"aq!!Fd,!!!#N'!!"!X!!!F3B%!#$[J!!'
)(!!!+!!!!%##!#5)%`#r+!!!!N##!"Kq!!Fd,!!!#%##!!`i!!!"Q"`!!$U8!!)
l'!!"1'*@YRm%"c5S!`!!I!3!!%'!raaA`!Br3B)!3)!6!)j8!!BqI"!$H#`3!!&
"JJ!XIJ!(0#`!!2Y"JJ!J,!!!"%'#!"JX!!!'3B)!%#`!!!G"JJ!)1q!!!6Tc!3i
k8J!"J"F!!(j$"c4m!`!!3B$qI%J!!Bb!F!!!1N!!!)*M!!")!!&X1(-!MML!!!*
)"5CeJ%%!&&4J"Mp!JJ&-IQ1EH$[!!!")!EX9B!!!!&4J"Mp"JJ$`J(N!!$SJ!!#
#J`!!5!!!d)J8!9NS!!!"3))![)L8!9FiF`$55!8Q+B""!"48B!Br3B)!T)J8!9B
l`!!"+!!!!%'#!"L)&3!!+!!!!%##!!`i!!!"Q"S!!$Kc!)iiJ!!%5!8PlB""!"4
8B!Br3B)!D)!6!(TqBjYi9!!%2R`3"c4)!0"&B!!!!&4J"Mp!JJ!FIJ!(0#`!!!T
"J!!3,!!!(%'"!!Jli!!"L"`!!#J!!!"!JJ!NL"-![bJ!!!*!JJ!BIJ!(0#`!!!K
!JJ!-1!!!!CJF!!!kP!3@1M%!!DJB!!"q)`FdI!-!!%'!rbKA`!Br3B)!3)!6!)j
8!!BqI"!$H#`3!!&"JJ!XIJ!(0#`!!2Y"JJ!J,!!!"%'#!"JX!!!'3B)!%#`!!!G
"JJ!)1q!!!6Tc!3ik8J!"J"F!!(j$"c4m!`!!3B$qM$KLB!"Ai!BrQq-!!%'#!2J
iBPG!L!-!LL`!!!*"JJ!i3)!!%#`!!!&!J!!85!!!R#`!!!4!J!#85!!!@%[rqh&
8B!Br3))!6$J!J!#`(3!!5!!!H+J@!!D`(3!!U(d!!%J"h*eJ!!!!9'!'2d##!&`
iB!2f1)!$m6LJ!"3i`!!!5!,[E@!!!!!iB2rr5!!!R+J@!!CrSqYiX"d!!%J"GG&
J!!!!I'!(08'#!!K)!!"mU,d!!$J!!!!iJPr'1'*Ir,#N!!#B!`!!U(d!!%[rKR%
iJQ!"Q'3!!%[rKV@BH`!!L"X!!#J!!!""JJ!mL"8!!#J!!!"!JJ!`1!!!!CJD!!"
)!!!NL"S!!#J!!!"!JJ!3L"`!!#J!!!""JJ!-1!#!!,!G!!!iB!!!J!%!L$JK!)#
k!Ir!I!J$TNk!!##r)IrNI!J#TML#9d"mHKYi1i*@&$ZLA,Jl`P'`1q*@C*!!!3!
)P#(qJ)J%!)SX!!!#3B)!,%#!!"!X!!!"3)!!&%J!!$3X!!!%3)!!,%J!!"`i!)!
!X!%!1%J!!"bS(`!'X!%!1%J!!"!iBPr'U!-!!,!"!$JmJ'eKU'%!1$L%Bh-i`3!
i11%!4$LJ!!")!F(PB!!!!(aJ"c9"JJ!-1'!!!%J!!B5SB3!i1+%!@)#"!%3i`3"
)11%!3$N"!$a)!f49B!!!!(aJ"c9"JJ!-1'!!!%J!!95SB3!i5!,jH@!!!!!iJPD
ZI'-(0+J%!!"m!`!!3)!"-)#H!!!IB`"NU(m!"S-N!!#S!3!iI*RD&(`$!!#$j!"
%3))!3)"m!!")"509J%%!&+JG!!"mC!FdI(RD&(`!)&#!J`")I!!!0&3$hMiiS!!
!1-!!!8J$"3PJ!!!!5!!!9)"m!!")"5-CJ%%!&+JG!!"mC!FdI(RD&(`!)&#!J`"
)I!!!0&3$hMiiS!!"1-!!!8J$"-eJ!!!!1-*@($L#AmL!TJ!!J!3!!(`&!K53!!B
!!&G!"Mp"JJ!8J!%!2)#"!%"mB"S8I'3D&$aM!!3i!qJ!I"m!3%#!!&JiB3"BI*m
!8$LJ!!&)![DTB!!!!)#H!!!iB3"B1+!!!)!%!!!i`!!!I)$D&%J&)'Q!33!81'!
$pML!!r%iS!!21-!!!%J#l+&J!!!!1'!!!8J!!!JiB!!!J!%"L$JK!B#l)IrNI!J
$TNk!!#!!!!!!!!!!!*2Krram#!+QI,mVH*!!!3!)P#(r`+!%!!!S!!!$3))!2)!
%!!*8!!Bq,!!!!d'#!""m!!Fd,!!!$8##!#!iJ!!"5!,`J@!!!!!i!!!"X"m!!$K
J!!&)!!"81'!!1dJ#Zk9J!!!!I'!(08'#!$`iB!!k5!+lN@!!!!"mB!Fe3B)!+$K
J!!a)!VYpB!!!!(aJ"c9"JJ!81!!!Bl!I!!!iB!!"5!!!#$KJ!!#!!3")1#%!3)2
Krram#!1Q6S!!)!!!!!#rJIr`I!J#TMZ#9Z-lSPG!J')2D*!!!3!)P#(qX%J&(C@
!33!8I'!EH)"L$+"m(`0i5!8GbB""!"3iJQ!(I(iEH)J%!!!S!!!!3))!+$KJ!!0
)!Vp"B!!!!&4J"Mp!JJ!81'*@p)J$!!"m!!Ge3B)!$$KJ!!&)!!)-L"d!M#J!!!0
!JJ#)1(d!H$L!!!")"5!pJ%%!&&4J"Mp"JJ!JL"`!!#J!!!""JJ!-1k!!)dJ!!0`
lS!!N5!!!e$Kp!)NiJ!!!5!8J#B""!"48B!Br3B)!))JF!!!S!!!!3B)!$$ZJ!"p
)!!#S1k!!)%J!!+#)(!!!+!!!!%'#!!`lS!!K5!!!M$ZJ!#*)!!#%1(d!H$L!!!"
)"4qjJ%%!&&4J"Mp"JJ!JL"`!!#J!!!""JJ!-1k!!'NJ!!&JlS!!E5!!!8$Kp!)N
iJ!!!5!8IKB""!"48B!Br3B)!))JF!!!S!!!!3B)!$$ZJ!!e)!!!N1k!!$NJ!!"b
)(!!!+!!!!%'#!!`lS!!55!!!#$ZJ!"-iB3!m5!8FKB""!"3iB!3(1)!!!%J#eb9
J!!!!I(`EH(qPkhJiB3"!1)!$m8J&(Af!33!8Ii2MH$LK!%!iJ!!$5!,`U@!!!!"
rJq0i1)!!!8J&(2Q!33!8Ii2MH%J#fFeJ!!!!Ii2MH%J&'c'!33!85!,bD@!!!!"
rJq0i5!8E(B""!"4)"4i9J%%!&(q$ihK)"4iKJ%%!&(rMqhJiJ3!i5!8H+B""!"5
S!3!i,!!!!8'#!"3X!!!&3B)!$#`!!'0!J[rBIi2MH%J&(KQ!33!8Iq2lH%J&(L@
!33!8Im2cH%J&(M'!33!8J'%!2%J&(Mf!33!8U'%!1)!"!9Ji)3&3Zi(rm(`)!kC
1J!!J!!!!!!!!!!!!!!!![m(rq(`)!UBiBPAS1)!!!$[L9Q#3!!%!#*3Kr`#!B`!
!Jm-!!%J!!$5)(J#l+!!!!%'#!##)(J#m+!!!!%##!"5!(J#19!!'2L`!!!&"JJ!
J1pi"$ML%!!%iBPAXJ!-!!(`%!!""J2r%5!!!C$L#9Q3iB3!iJ,m!!$M#&$LSK!!
'5!,9)@!!!!!iB3!i1+%!J$L!rrp)!M!GB!!!!(aJ"c9!JJ!XIm6cH$KK!$iiS!!
!1-!!!8J&*N@!33!89'!'2d'#!!b!!3$NN!!I!!#!!3%)1#%"!,["rrKm#!1Q6S!
!)*2Krram#!+Q1q*D[*!!!3!)P#(rF+JI!8SX!!!!3))!0$J!!!#B!3!q1'%!1$L
!!!")!XfKB!!!!(aJ"c9!JJ!8U'%!1)!"!$U`I`&+N!!I!8b!!3#B1#%!N!#$iIr
mI!J$TNk!!#!!!!!!!!!!!!!!!!#r3IrSI!J#TMML9P&mHKYi1m*@8M[L9Z9mQb0
iI,dVH(cF-hL3!!%!#*3Krl#)"`!!+!!!!%'#!#`iBPG!1)!!!$KM!)P)"4b9J%%
!&&4J"Mp"JJ!)5!!!%(ppfhK)!!!)Ieh6H(qMkhKrK10i5!-H9@!!!!"rT!FdId!
(0(`%!!"!JJ!N1!!!!AaM"c4m!!FdI!-!8(`!!$48!0iqQ"m!!%J!!&4rB!FdI!3
!!%##!$"mC!Fd,!3!!d'#!$`iB!!"I'!(0*Kr!!"m"!"3I!!!0&3!hMkB(J!!5!!
!((aJ"c3X!!!"3))!%$J!!!'B(J!!Q"m!!)JI!!!S!!!!3B)!%$KL9P-i!!!!Q!-
!!)!"!&Ji)3"3Zd(rk(`)!kC1J!!J[i(rm(`)!UCmIKYiI,`VH(cG-hJli!!!N!!
"!!K8i!BrP#(rX%'#!#3iJPNSIk2VH%J&2Z'!33!81'!!!NJ&)0@!33!85!!!)$L
#@6"rSqYi5!8q`B""!"3iB!!!5!8JYB""!"4r`r0i5!8`iB""!"4)"6j"J%%!&$K
J!!")"5"0J%%!&$KJ!!a)"5"aJ%%!&+LG!!*rJq0iU"d!"ML%!!Tm"!"3I"i(0%J
&,X'!33!8I'-(0(r!"c4m!`!!3)%!8$KJ!#")"5!GJ%%!&(q$ihK)"5kCJ%%!&(a
M"c4r`!FdI!-!!%#"!#3iB!!!5!8IpB""!"4rJq0iIm6cH%J#m&9J!!!!5!!!#$[
J!#"rirYi5!8IdB""!"5SR3!#U(d!"$L%!!Ji!rrmI)-(0(`%"c4)"5D*J%%!&(q
$ihK)"5D9J%%!&$KJ!!")"4qCJ%%!&$KJ!!")"4qpJ%%!&)!"!&Ji)3"3Zi(rm(`
)!kC1J!!J1-*9k(aJ"c3F!!%1J'B!!)"M!!!ij2rrI--#&)!'!')X!!!!3B)!((`
!1K5!C3!!I!!MeR`%!GCm!`)8N!!&!!#!"J"Q,!!!!%f#!#"m!$S8J'8!!(`!)pC
m"!(@I!-#&*!!"3!!6S!!)!!!!!!!!!!![f(rl(`)!UBiSPASI*XMH$ZJ!!!lJ!!
!N!!"!!JF!`%11'*4Y*3Krl#!T3!!J'-!!)#&!!#$``!!Iq3#&%J!!+KrS`FdIf!
(0(`$!!"!JJ!`5!!!')JH"iJlhJ3@1ld!!5J!!!""JJ#!Ik-(0(bJ"c4m!`!!3B$
ri%J!!'`iBPrqL!-!!#J!!!""JJ!SIk!(08'#!%b)RJ&A1(m!dNJ&'6f!33!89'!
'2d##!#a)!!!`L"i"@5J!!!&!JJ!NL*i"9cKr!0*)"4N9J%%!&&4J"Mp"JJ!-1i!
!!8J!!#3lhJ3@1ld!!6KL9V4rT!FdU+-!!(bJ"c4m"!!!3B$r5(q$ihL!!3"B1#%
!8(`)!kDlBIrX6S!!)!!!!!!!!!!!!!!!!,q"rr"m#!+QI(`EH*!!!3!)P#(rX%J
"V9eJ!!!!9'!'2d##!!`iB2rr5!!!G$KL9V5S!`!!,!!!!%##!!`iB!$r5!!!A$K
L9I!l`!!!J'-!!)2M!!")!!!`Ulm!!$Km!0*rT!Fd5!8B9B""!"48B!Br3B)!$(q
MkhK)!!!N1rm!!M[H!!%iBPDfIm3(0+J$!!"m"!!!3B$ra$KJrrq!!3"B1#%!8,Z
"rr"m#!1Q6S!!)$L#9I!j!!!!11!!!)#%!!#!a!!!5!!!*+J'!!"mC!FdI!3!!%#
#!!`j!!!"5!!!)$M'!!)ij`!"1)*@YRcP"c5S"!!!I!8!!%'!rp"p!d0i6S!!)!!
!!!!!!!!!!!!!!,fKrl4m#!+QI'dEH$YLAmJii!!!1F*9k(b4)hJlJP'dI,dVH)"
L$!KmhM0i1U!!!$TJ!!!l!!!!1J!!!*!!!3!)1!!!!C3KqK#3!1%!4,!"!%+`i3"
!5!882B""!"4mB"YiJ')-S(`I!hK)"44aJ%%!&(aJ'hL!BJ`%N!!""Ca)"44GJ%%
!&(a['hJiB3"-5!88CB""!"3iB!3!5!8I#B""!"4mGKYi5!8I&B""!"4mB!Fe3B)
!$$KJ!!&)!![`1'*IrSJ$!!!iB!!!N!"K!(K8!`Br3B)!($L#9I"q)`Fd9'-)2)#
%!!#!K!!!IL3DVRiM"c5!R!!!(d-%&S"N!!"r)p)8L(N"BTKK!)')H3&MQ'%!J)K
j!@3S!`!"3))#E$KL9V48!!BrUN-!!%##!!`i!!!#Q"N"@AiM"c3l133@1S-!!8J
!!Jb)'30b+!!!!%'#!J`iBPrqL!-!!#J!!!""JJ!8IS-(0%[rrMe8B!Br3B)"f#`
6!!"!JJ!-L[N"AdJ!!!LDq3&I,"-!!%##!-5)!3#"+!!!!%##!,L)'3&I+!!!!%'
#!+`kF`!"IX1cH&CN%$T)"4hCJ%%!&%J&(J'!33!8I'!(08###U#!GJ!!9Q!31S#
"!%3S&3!!I'-#&*!!JrrmJ'%!4$J$!!'3!!%!4%##!"JiB!!'5!8GVB""!"4mG4Y
i5!!!&"b!!!CqSkYi5!8GIB""!"4)"4fPJ%%!&(aJ"c9!JJT%J)%!4$KJrrq!Y3!
!1!!!!$L%rrmFK!!'I`8L&*!!H!!!Q"J!"*JB!!8kF`!"IX1cH&CN%$T)"4daJ%%
!&%J&(9Q!33!8I'!(08###IK@i!Br3B)!Z$J!!!'B'3&C1'!!!PCJ%$UBH3&N+"8
!!$S!!!'!GJ!!J)%!4(aM!K53!)2rr)"K!%3i!`!"N!!"!%4!JJ!B1'!!"NJ&(1Q
!33!8I(8EH%J!!"3FJ!!'IU1VH%J&(,Q!33!85!8FiB""!"4mB!Fe3))*J)"K!%3
iS!!!J*8!!$J!!!)iBrrr('-!"Rm%'K55Q!!!IU5VH$KK!%5BZ!!%1-%!3*JB!!@
)Z3&A5!)qX@!!!!")!!!F1!!!!*JC!9P@B"!kJ(B!!(aM!K55Jrrm1cN%&MU8!!&
q3!FdI"3!!%'!rI#!B3"%9J!'2cX!!!'3!'%!H%##!2#!I!!!1)!!!S!$!!"mB0)
8Q)-"@8J!!0L!EJ!!1S!!!)*$!!")!!#iL")!ZbJ!!!"!JJ#N1()!dRfN"c4)"43
"J%%!&&4J"Mp"JJ#-1()!MML!!!4)"42TJ%%!&&4J"Mp!JJ"dIN16H%J#*feJ!!!
!9'!'2d'#!'!iJKkNIN16H%J#ka9J!!!!9'!'2d##!$`kF`!"IX1cH&CN%$T)"4Z
"J%%!&%J&'kQ!33!8I'!(08###%L!GJ!!9Q!31RaM!K55Jrrm5!!!%+KK!%!i!`!
"X!%!3$T5!3ikP!!"1'*9l)!$!!"m&!!!3B$r3#`6!!""JJJ)NQ%!I$KJ""8iJ!!
"5!,,0@!!!!"mGaYi5!82LB""!"3iJ3"S5!8MTB""!"4A!!Br3B)!&(lMZhJiJ!!
$5!8HPB""!"5![!!!IZ1lH$L!!!D!"3!!Ib$5&(mPbhK)!Z59B!!!!)JC!@SS!!!
!3B)!'(lMZhJiZ3&U1)!!#NJ#j(9J!!!!L"N#DLJ!!!""JJ!BIZ1lH$Lj!QSiJ!!
,5!,N9@!!!!#!'3&Q+!!!!%##!#"qilYi1)!!"dJ#j)PJ!!!!1)!!rdJ&$e@!33!
8IZ1lH$LK!'!iJ!!%5!,M1@!!!!!iB3"B1)!!!$LJ!!!i`!!"11!!!%J&'1@!33!
8U+%!BMJ!!"#SJ3"Q1'!$4,!"!%Km"5"3X!%!5NJ&'LQ!33!8N!"K!'K)"4SeJ%%
!&(aJ"c9"JJ!`IZ1lH%J&%E'!33!8Iq2lH%J&%Ef!33!8IX1cH%J&'iQ!33!81'!
!!8J!"Za@!`Bq1!-!!A`5"c3FFJ!B5!8CdB""!"5!J3"SJ)3!!*!!C!+B5!8CeB"
"!"4mB!Fe3B)!2(lMZhK)"4&4J%%!&(rMqhK)"4&GJ%%!&)"K!'K)"4XTJ%%!&(l
$XhK)"4XGJ%%!&$KJ!!&)!!D!9J!'2j,"!(#5S3"d3B)!')"K!'L!!J`!J'-!!*!
!!`+-5!!!-&F!"Mp"JJ!BJ'%!D)!##rb!B`!!N!!$!Sa)!!!8J'%!D)!##rL!B`!
!N!!$!S`i!!!!J')*6*!!!3"35!8Q1B""!"53!'%!9(lMZhK)"3eTJ%%!&$J!!!'
3!!%!1(aR'hJi!QJ)1'%!B$L"!&L3!!%!2$M"!&!j!!!"J+%!5$NJ!!!j3!!!5!8
Q#B""!"3iBQJ)9`!'2i#"!'L!B`!!N!"K!'b!B`!!N!#$!%4"JJ!JJ'),m%J&*Jf
!33!8J)%!E)#%!!#3!'3!0%J!!"5!B3"X1!!!!)"M!!#3!!-!0)"K!'K)"4&aJ%%
!&)"K!'K)"4%eJ%%!&&F!"Mp"JJ!BJ'%!D$J"!B5!B`!!N!!$!U")!!!8J'%!D$J
"!)5!B`!!N!!$!U#!B3"S1!!!!)"M!!#3!!-#R)"K!'L!B`!!XN-!")"K!'L!B`!
!5!'hG@!!!!"@!!Br3B)!N!!iB3"B1)!!!$LJ!!!i`!!311!!!%J&&SQ!33!8J'%
!D$L"!&L!SJ[X11!!!)"M!!#!`J[S13!!!)"M!TL!B`!!5!,(P@!!!!!iJ!!5J'%
!D$J!!!#`J3"DJ+),j$L"!&L`!3"H11!!!)$##q#!B`!!13!!!)"M!TL!B`!!1'-
!'%J#ae9J!!!!5!!!K$KK!&JiJ!!!1+!!!$M!!!!ii!!!5!89rB""!"4A!!Br3B)
!0)"K!'JiJ3"BJ-),i$MJ!!#!B`!!J+),h$N!!!#!B`+BJ'-!!%J#a`&J!!!!5!!
!-)"K!'JiJ3"BJ+),f$M!!!#!B`!!11!!!)"M!TJj!!!!J'-!!%J#aY&J!!!!L!%
!J5J!!!""JJ!JIZ1lH$L!!!&)!Z$PB!!!!$L!!2p)"3ZaJ%%!&(lMZhJiJ!!"5!8
-fB""!"4qilYiIH9lH$L!!!4)!YmPB!!!!)#K!'aqB`Fd1)!!!%J&*,'!33!8IZ1
lH%J&#[@!33!85!80lB""!"5!J3"X1'!!!8J&,Nf!33!8Iq2lH$L"!%*)"3hpJ%%
!&+J"!%)X!!!(3B)!6%#!!'!X!!!$3B)!#%J!!&3i!!!!X!%!5MU!!!")!!!JXS%
!5$KJ!!'!S3"XJ)%!5%J&-1'!33!81T3!!A`8Q!""J2rJ5!!!()"m!!#!!`!!I'$
5&)"M!@C)!eAaB!!!!+KK!%*mB!Fd,!!!!8'#!!`X!!!#3),rF(aJ"c3X!!!"3))
#,$KJ!!"A!!BrX'%!5N##!*!!1S!!!%J!!(bbJ3")9S!31S#K!'`iJ3")J0B!!$K
J!!"m"J!ZI!d(0%J&-$f!33!89'!'2d##!#apS!FdJ)i!!"aJ!3k!"!!!1'-!MRa
J'K3iJ!!#5!85FB""!"4)!!!JID0VH(qNkhKraI0i5rrc'B"l!!!i!`!"N!!E!!!
kP!!"I"5B!%'!ri4)!!&X9J!'2d'#!0#$&3!!1S!!!%J!!,5)'!!&+!!!!%'#!#5
!'!!!1)!!!B"m!!!F!!3@J'-!!(aM!K5BJ`&C5!!!J)"i!!!X!`!!3B!!G)JB!!3
S!!!!3))!6(iNLhK,rr-09'!'2d##!#b!'!!!1)!!!S#Z!!!FB!%1J!8!!$KM!)j
mB"S85!84YB""!"4)!!!`J(X!!$J$!!'3!"X!!%J!!#"rT1YiImAcH(aM"c4,rr*
0J(X!!$J$!!'3!"X!!$XB!!BkP!!"J!%!4(`8!!""J2p)5!!!Q)#F!!!jS!!!J'i
!!)!%!!##3`!!Ib$5&%J!!'L)Q3&A1()!dNJ&$%Q!33!89'!'2d'#!%Kq3j0i5!'
Kl@!!!!"mB!Fe3)!!'$Kb!)iiJ!!#5!84&B""!"4)!!!JID0VH(qNkhKraI0i5rr
a[B"l!!!i!`!"N!!E!!!k8J%11Dd!!6KL9Hb!!`!!ID-(0(`$!!""J2q-1'*@(+J
"!%#!J`!!J(X!!(b%'K3iBPBFI!3#&*!!J`!!N!!$!!"qilYi5!8)#B""!"4)"59
aJ%%!&)"K!'a)"5pYJ%%!&)"K!'L!B`!!J'-#Q%J&&4Q!33!8J'%!D%J&&3f!33!
8IZ1lH%J&#a'!33!8Iq2lH%J&#af!33!8J'%&R%J&#bQ!33!8IH0lH%J&#af!33!
8J'%!6%J&#bQ!33!8IX1cH%J&&-@!33!8+"8!!%'#!""qSkYi5!88XB""!"3i!!!
"U'%!3R`!"c4m!`"3I!!!0&3$hMk!!3Ai1#%&m,QKrl4m#!1Q6S!!)!!!!!#r3Ir
SI!J#TMKL9Q3lB!!!1k*4X$[#9V3liP'dN!!"!!Ji!!!!P#(qS*!!!3!iU'-!"NJ
#i8&J!!!!I'!(0)#G!!!iBPrq(i!!C)#%!!#)!`!!I'6L&#J!!!#$3`")3B)!q+J
H!!!X!!!!3B)"J%J!!(!iJPA`If!(0)"r!!"8!!JmJ)3!!)"M!!#!K!!!I!3#VR`
!"c3F!!3@I'-#&)J$!9mS!!!!3B)!0)J$!h)S!!!!3))!+)KM!9GrC0YiIdA6H$M
"!$K,rr*p9'!'2d##!!`iB!!!5!!"'$Yl!!%iBPDfIf3(0+J$!!"m"!!!3B$rK%J
!!(4rB!FdJ(m!!"`!""D!B`!!I'-#&)J$!9NS!!!"3))!3)J$!9mS!!!!3B)!0)J
$!h)S!!!!3))!+)KM!9GrC0YiIdA6H$M"!$K,rr)&9'!'2d##!!`iB!!!5!!!S$Y
l!!'S(J!!If-(0(`$!!""J2q8J+%!1$KLAi5!R3!!N!#M!!!iBPCBJ)3!!)!$!!"
mC1)8Jd-!4(`&!K4m!0"!3)%!@$KK!$amQJ"31+!!!8J#hJ&J!!!!J*d!!$KK!$`
iS!!!J!3!!$M!!!"mJ1)85!8(`B""!"3iB!2f1)!$m6LJ!#8i`!!!5!,6q@!!!!!
iB!!!5!!!#$KJ!!'!!3&S1#%"B,Y"rqKm#!1Q6S!!)$L#9V`iBPE%U+3!!$L#9VU
!!`!!1'*@`,#N!!#3!!-!!%k!!#!!!!!!!!!!!!!!!!#r`IriI!J#TMKL9HJli!!
!N!!"!!L8)Ij3J'-!!)2$!!")!!#S1(i!MML!!!9)"3L0J%%!&&4J"Mp"JJ#)L"i
!ZbJ!!!""JJ"mJ"i!EL`!!!"!JJ"`1!%!T$KJ!!#3!!%!5MJ!rrqBB3#N1'%!1+L
H!&L`J3"1X!%!9)!H!%U3!!%!D%J&#e'!33!8I'!(08##!$3i!!!!Q!%!T$KK!)5
S(J"BX!%!6S!H!%U3!!%!D%J&$ef!33!81'%!1%J&$cQ!33!81pi"$M[r!!%iBPA
XJ!-!!(`I!!""J2p3J!%"Z$JK!E#l`IriI!J$TNk!!#!!!!!![i(rm(`)!UCmR50
i1q*F`$c!8e4mI"YiI,iVH$KQ8L13!!%!#$L!*a#8)Ih`5!+P0@!!!!!S!`!!3B)
"*)JI!!"8!!Br3B)"'#J!!"p"J3%31'%!m$L!!3j)!d2CB!!!!$aJri!i!2rrN!"
K!ICrj2YiN!!"!I!iB3$`5!,Hq@!!!!#)!3$`+!!!!%'#!05![3!!Ii6MH$KK!$`
i`K3i5!+qT@!!!!!iB3!m1+%!K$L!rrp)!KQKB!!!!(aJ"c9!JJ!X1'%!3ML"!2!
iS!!!1-!!!8J&$mQ!33!89'!'2d'#!!aA`!Br3))!H&I!"Mp"JJ"!1!!!%$KK!2#
B!3'VI'3EH(q&ihKrTZYi13%!1$MJ!!&,rf&4L!%!1$KLB(9m!!!d9!$H2TJ$!!"
)!!!dJ*d!!(q$"c3iS3$`1-!!!8J#l[9J!!!!I'!(08##!"3iB3$`1)!!%8J#m)e
J!!!!J!%#'$JK!K#lJIr`I!J$TNk!!#!iBP'd1+!!!$MJ!!#!B`!!J--!!%J!!)3
iBPrqL!-!!#J!!!""JJ!31!!!!*J'!9P)!!"JL'B$FP4J"Mp!JJ!)I-8cH)J'!@3
S!!!"3))!+)J'!9NS!!!#3))!%$J!!!'B"J&C5!!!,$J!!!#B"J&C5!!!)&4J"Mp
"JJ!BL!8"C#J!!!&!JJ!-1!!!!*J'!9NiaJ3@11F!!6KL9V4mj!FdU!-!!(`%!!"
"J2p`6S!!),r"rrKm#!+Q2'"YB6LLAq`liQ"81)0MFj!!!3!)P#(qX+KP!!!i`3!
i11%!2$LJ!!")!D3KB!!!!(aJ"c9"JJ!)5!!!Y$KJ!!")"3`jJ%%!&+KK!$KrjIY
iJ)%!2$M!!!0)"3#aJ%%!&(aq'hJiB!!"5!8-%B""!"4r`!Fd,!$rrd##!"")"3@
GJ%%!&%J!!'LSB3!iIqElH)#"!$`iS3"!5!-9`@!!!!!iSPrSIm6cH$KK!%#!T3!
!5!-@@@!!!!"mIaYiIm2cH%J&,d'!33!8B'!!3(r$mhKm"!Fd5!8[4B""!"4r`r0
i5!8,bB""!"4rirYiJ!%"@$JK!9#l`IriI!J$TNk!!#!!!!!!!!!!!$KL9HJi`!!
!J'-!!)#M!!")!!#FJ'8!MP4J"MiX!!$p3B)!D%#!!"`X!!$l3B)!*%#!!$JX!!$
k3)!!-%J!!'JX!!$r3B)!4%#!!&a)!!!F1!$r!(aJ!$L3!!8!MS!&!)jJ!!!"N!!
&!)k!C3#11!$r!(aJ!$L3!!8!MS!&!)jJ!!!6N!!&!)j)!!!JJ'8!MMJ!r`"mB!!
iN!!&!)k!"3#1B!!!$T!!"3#11+8"$MM'!!%iBPAXI-3(0)!$!!"m"!!!3B$r@%k
!!#!!!!!!!!!!!!!!!!#6iIrmI!J#TRar'hL3!!%!#(rN"c3X")!!P#(qN!""JJ#
)1'*4X)"M!!#!B`!!U!-!@(`%!!""JJ"`1'%!1,2K!)ii!!!!N!"K!)SiB3"iX!%
!P%J&#MQ!33!8I'!(08##!%L!J3$5,!3!!%'#!$`iB3!iXq%"#MJ!rrq3!'%""MK
K!25`!3%3N!#"!54)"3CCJ%%!&(aJ"c9!JJ!31'*JGMJ!!!'B!`!!J!%"H$JK!A#
$iIrmI!J$TNk!!#!!!!!!!!!!!*2Krram#!+Q1)*ICM[J!!#3!!%!#*3Krk#)"!!
!+!!!!%'#!,!iJP'd11!!!)#%!!#!a!!!5!!!')J'!9mS!!!!3))!N!!iaJ3@11F
!!6L#9V4mj3FdU!3!!(`&!!""J2rFI'8(0#`&J!""JJ"N1)*4X)#%!!#!K!!!U!3
!@(`&!!""JJ"-1!!!(*!!!3!iI'3EH$LK!$`i`3!i1'!!!%J$KP9J!!!!I'!(08#
#!#LS!3!m,!!!!d'!!!b!!3"35!!!#$J!!!"8!!De3B)!#$[J!!&rirYiJ!%!D$J
K!'"m#!1QJq(rr%k!!#!!!!!!!!!!!,r"rrKm#!+Q1+*9l(aq'hJli!!!N!!"!!L
8)Ir!J!8!!(`%!!"!JJ!d1(i!MML!!!4)"3(TJ%%!&&4J"Mp"JJ!F1!!!$)Kq!,p
8!!BqI!-!8(`!!$48(piqIq2lH)!"!%Ji)3"!I!J$TV["rrK1J!!J[D(rY(`)!UB
iJP'`I(XEH$RL9P%k!Q!!1k!!!$SLAf`k3Q!F1Q*J&$U#Am3lJPq81U*I`$V#@V`
liPDk1Z*@B$X#9H`l)PAS1F*IrcQLAril3PG!N!!"!!Ji!!!!P#(p8)"N!!#!B`!
!U'-!@,"K!$k!BJbJQ!%!1%J%rQ'!33!8N!"K!PJi!!!!1)*H3$KLD!5`"!!!Q!-
!!(pMfhK,rpEP9'!'2d'#%J3iBPbmIf8(0$J!!!!iJPpiU'-!!*!!"!!!1)!!"Ra
P'&"mC3!d1'*II&5PhMk`!`!!1"S!L6KLB!Q3!!%#A*LM!!"m!`0i5!8![B""!"4
8B!Br3B)!9$KLA+L!!`!!+!!!!%'#!%3iBQ!*L!-!!#J!!!"!JJ!dL"S"NbJ!!!*
!JJ!SU(S"P$L"!$a)!-'aB!!!!(aJ"c9!JJ!3U'%!2%J$,%eJ!!!!J*B!#$J!!!!
iBQ!+Q!-!!&5$!(`i!!!"N!"f!!JiBQ!+Q!-!!%J"#c&J!!!!1')81(aN'hKmC4Y
iI'BEH%J%rVQ!33!8U"-!!#`!rrp!JJ"%1+*@[$J!!!%iJPE%IQ1EH+M&!!#!T!!
!1)*@`,$I!!#3!+3!!,!8!!",riYYI'!(08'#!"!i!2rrX"-!!%J!%)LSF`!!1!!
!,*!!!3")IiEMH$LK!%L`B3"!1)!!!+KK!%")!K%eB!!!!(aq'hKr`!Fe3B)!)(r
'mhJiB!2f1)!$m$LJ!!0)!XTaB!!!!%J!%$JiBPpNL!-!!#J!!!""JJ!F2'#!!$J
!!!%iBrrrN!!F!"53!(`!#*!!(!!%5rrfE6KL9X`iJ!!!U!-!!+Kr!!#`&3!!5!)
2Y@!!!!!iJQ!BU!3!!$L#ArdX!!!!Q'3!!%##!"#!(!!81'*J',!$!!#!(!!-2'"
*6MLLAiJiBdP81)!$kC!!"3!!5!+FN@!!!!!iJPbi-+2rrhaP'4#S"!!!If3(0&4
m"Mjm"!"3I!!!0$KK!%"8"0iq5!#,d@!!!!"mIKYiIm!(08'#!$4r`!Fd,!$rp8'
#!#JX!2rH3B)2X(r'mhJiB!2f1)!$m6LJ!!9)!XPjB!!!!%J!$j5!H3!!1!!!!)2
M!!#`!3"#5!!!N!!i!!!!X"m!@$Kr!)iiJ!!"5!8$3B""!"3iI`#11)!!!NJ&!c'
!33!81(m!MML!!!9)"3-KJ%%!&$J!!!#B(`#p1(m!MML!!!4)"2iTJ%%!&&4J"Mp
"JJ!81(m!MML!!!0)"3,aJ%%!&)JI!,XS!!!!3B)!$$J!!!#3!"m!EUKK!%)lr`%
11!-!!E!"!%+SB3"#J"J!!(`$!!""J2pS1'*Id$N!!!!i!!!"1+*J$T%$!!!iBPr
)1B!!!i&L$f!mi!!+N3-!!$KLArb"3JpFQ!-!!$KLB!D")JpBQ!-!!$KLB(8i`Pq
%Q3-!!$KLArXiJPr#Q3-!!$KLB!)l`Pr-Q3-!!$KLB!-liPr'Q3-!!$KLB!LC"3!
!1+*J%*N$!!!iBPC5NC)!!*N$!!!iBQ!0NA)!"*N$!!!iBPC6N9)!#*%b!#b4%J!
FN4)!)*!!mJ!NN4)!+*!!%J!`N4)!0,!8!!#4"J!!X38!!,%%!!#4(J!!X4m!!*N
3!!#C$J!!Q!-!!%J%qDf!33!81)*IM$J$!&U3!!3!!%J%qCQ!33!81)*FZ$KM!PJ
iSPq3!+J%!!"rC!FdN!"P!!!iS!!!I!3!!%'#!"3iBPbmU!-!!(`%!!"!JJ!)1+!
!!CLY!!!k3!!!L!d!!#J!!!"!JJ!S1'!!#%J#Qe&J!!!!9'!'2d##!"4)!Yk4B!!
!!&4J"Mp"JJ!)1N!!!B!B!!!iS!!!1'*J"$L#B"DD3`!!1'%!9,#N!!#3!"B"4NJ
%qBf!33!8J"F!!$KL8E53!!%!8)"M!!")"2dGJ%%!&$KL8E5!B`!!5!6mhB""!"5
!H3!!5!6p!B""!"5!H3!!5!6maB""!"5)E3!!1)%!1cLK!$Si`3!j11%!2N[rde&
mB!Fe3))-3+KK!$j,rrM41)*ICMLJ!!!i`Q"hL!3!!$L#B(BS!!!!Q'B!!*LN!!"
"JJ!-U'%!2N[rpq8iBQ"m1)!!!8J"rZPJ!!!!1'*S")J$!!!S!!!!3)),l)J3!!!
iJ!!!1'*J"5J!!!#BJ`!!3))!()J"!$XS!!!!3))!%)J"!$NS!!!!3B)!@$b!E@'
SB3!q1-*Il$L%Bh-iiPrN1+!!!8J"QHPJ!!!!I'!(08###j4)!JaCB!!!!$L#Aqa
mB`FdU!3!!(`!'!"!JJ!m1'*J"6J!!!'B!`!!5!!!,$aJE@%i`PrX1)0MFcMLAq3
iB)!!1+!!!8J%r,@!33!8I'!(08###d!iB!!05!+CS@!!!!"8B!Br3B)!#%[rhB%
iBPCNIZ@lH)$D!!!ii!!#1N-!"Rj%NhJiB!!!5!-AB@!!!!"mB!Fe3))+r+Kb!!"
qj,Yi1+!!!8[rmX8iBPbmU!-!!(pM"c4m!`!!3))!0%[rh%f!B3"35!$f4@!!!!"
AJ!Br3B)+`+J@!8SX!!!!3B)+Y%J"8!PJ!!!!5!!+U%[rlee8B!Br3))!$%[rmq&
)!!U8L'%!1P4J"Mp!JJ!3L"!!!#J!!!""JJ!8L*!!!!",rpC09'!'2d###Q`iHJ"
i1)!!!%J%qJ'!33!89'!'2d##!##)!3!l+!!!!%'#!B!iBQ!&L!-!!#J!!!""JJ%
85rrC$E"K!%+SJ3"#,!3!"8##!#JiB!!$1)!!!8J#la&J!!!!U()!!$L"!&!iS!!
!5rrah8J!#J!iBPEdL!-!!(`!"h9!JJ$-,!3!Bd##!"b!F3!!5!6efB""!"4)"40
"J%%!&%J!!'!iB!!"5!!C8@!!!!"8B!Br3))!3$Kk!)iiJ!!!5!6j8B""!"48B!B
r3))*T)"a!!")"2@9J%%!&%J%q)f!33!8J(%!!%J%q*Q!33!85!!*J$KLB!Fi!!!
"Q!-!!$Kk!)iiJ!!!5!6j#B""!"48B!Br3))!1$KJ!!9)!THpB!!!!&4J"Mp"JJ!
NJ(%!!%J%p6Q!33!85!6i-B""!"5!F3!!5!6i2B""!"5)!3!k+!!!!%'#!#4,rmZ
45!,5I@!!!!#SB3!q5rpAiAaq'hKr`!Fe3))$0)J"!$XS!!!!3B)!()J2!!!S!!!
!3))!#$ZJ!!%i!!!"Q!m!!)J"!$SS!!!!3))!%%[rbd&)!Y)YB!!!!$KLCa5!!`!
!+!!!!%##!"!i!!!!N!!B!!")!!LN1'*@X+J$!!!X!!!"3))!#%[rfJQ)$3!!1'!
!!,"K!%+!H3!!+!!!!)2M!!""JJ)i5!!"($Kr!0!iJ!!!5!6i"B""!"48B!Br3B)
!2+KK!%*)!BVTB!!!!&4J"Mp"JJ!SU'%!3ML"!%!iS!!"1-!!!6MJ!!",rl*eI(i
EH(r!"c9!JJ*B1(m!MML!!!")"2HeJ%%!&&4J"Mp"JJ#N1(m!MML!!!*)"2HGJ%%
!&&4J"Mp!JJ#-Iq2lH%[rhY&mB!Fe3B!!I+KK!%)iJ3"!11%!6$LJ!!%i`!!!5rq
b%Aaq'hKr`!Fd,!$rrd##!"#SB3"#5rr#+6[!!!"r`!Fe3))"h)#"!%`X"!!!3B!
!0(rMqhK,rr8C9'!'2d##!F#!!3"-J(N!!,!"!%+S!3"#J'-!!"`!!3jri`)85!!
!&+KK!%)lr`%11!-!!E!"!%+SB3"#J"J!!(`$!!""J2lF5!!"'$Kr!0!iJ!!!5!6
ffB""!"48B!Br3B)!2+KK!%*)!BQpB!!!!&4J"Mp"JJ!SU'%!3ML"!%!iS!!"1-!
!!6MJ!!",rl&*I(iEH(r!"c9!JJ%X1(m!MML!!!*)"2D*J%%!&&4J"Mp!JJ#3!(r
MqhK)!B`YB!!!!(aJ"c9"J!"mU'%!3ML"!%!ii3"-1+!!!6M!!!",rl$jI(iEH(r
!"c3X!2rr3))!%+KK!%*,rm%41m!!!(r!"c9!JJ$%J)%!6#`%!!""J!!dIq2lH%[
rp!&8B!Br3))!U)!"!%b!H3!!X!%!3UJ"!%+!B`!!(!!"$RrM!K4)!!!8U'%!3M[
r!3ii!`!"X!%!3UKK!%+!'!!!I!-!!%'!r[!iJ3"!1'!!!%[r`remIKYiIm!(08#
#!&#SG!!!1!-!!E!8!!")!!!S1)%!3$KJ!!&,rm29I(iEH(r!"c9!JJ!SU(3!!$J
$!!'`&!!!1'*J'+L8!!#S!`!!I)-(0(`$!!"!JIr)L!m!!#J!!!"!JJ!XL!i!!#J
!!!"!JJ!J1'*J!SJ$!!!S!!!!3))!%+J@!8SX!!!!3B)!P$KLB!+)!`!!+!!!!%'
#!!`i!!!"Q!m!!(r!"c9"JJ"!L!i!!#J!!!""JJ!85!&-d@!!!!"mB!Fe3))!%)J
3!!!S!!!!3B)!6&H!"Mp"JJ"%5!&+R@!!!!")!!!iL!i!!#J!!!""JJ!F5rr[*Aa
q'hKr`!Fe3B)!$%J"6)9J!!!!9i!'2d'#!!a)!8TPB!!!!+L9!!!X"2rr3B)!)$K
L9XbS!`!!I!!J!%'#!"",rhJa1!$rrl!9!!"r`!Fe3))!3%J"kheJ!!!!1'*@()!
$!!!X!!!!3)%!+$J!!!#3!!-!!$KJ!!")!HP*B!!!!$L"!%3iB!!m5!8+'B""!"4
)!XlaB!!!!+KK!%"mB!Fe3B)![+J6!!"mC!FdI!3!!%'#!+`iJPrpL!3!!#J!!!"
"JJ!B1)%!3NJ&%X'!33!8I'dEH%J!!"JiJ3"#1+%!1%J"La&J!!!!I'dEH+KK!%"
)!J+"B!!!!$KLArf)!`!!+!!!!%##!"#)!3!i+!!!!%'#!%4pS!Fe3))!2+KK!%*
)!bIKB!!!!,"K!%!iB!!!U)%!3NJ&%Qf!33!8I'!(08##!"5SB3"!1)!!!%J$*e9
J!!!!1!!!!,!"!%")!HH&B!!!!(r!"c9"JJ!m1!$XH(r$"c4m!!FdI!!B8$!!rrp
mB!%31!!$lR`$!K5`!3"#1'!!!cL!!!&)!ZL*B!!!!%J!!&JiB!!#1)!!!%J#k(9
J!!!!1'*J!iJ$!!!S!!!!3))!%)JD!)`S!!!$3))!&$J!"!k`!3"#5rrU18J!!"`
iB!2[9k!'2l"K!%*"JJ!-1!!!!*J2!!"r`!Fe3B)!6%[raf&AS!Br3B)!$$J!!!#
B$`!!1'*Bf)!$!!!X!!!!3B)!$%J#TeeJ!!!!1'*J#SJ$!!!S!!!!3B)!+%J!rZ9
J!!!!5!!!($KL@0L!!`!!,!!!!%'#!!a)!U8CB!!!!$KLB!U)!`!!+!!!!%'#!!a
)!2eaB!!!!$KL@0b!B`!!+!-!!%'#!"K)"2[4J%%!&$KL@0`i!!!!N!!$!!!iBQ"
m1!!!!$L#@0L!B`!!N!!%!!!S!`!!3B)!'%J%qk'!33!81'*JI$J!!!#3!!-!!$K
LAhbS!`!!,!!!!%'#!!a)!b!eB!!!!(r!"c9!JJ!B1'!!!8J!@d&J!!!!5!!lk@!
!!!"r`!Fe3B)!-$KLB"#!PJ!)U!-!!$KLAN"JK!!",!!!!*!!PJ!)Xm-!!%##!!`
iBQ!3Xm-!!%[rkcf!B3*F1)!!"NJ%mBQ!33!89'!'2d'#!&`iBPbSJ!-!!#J!!!"
"JJ"-1'*J#BJ$!!!S!!!!3))!2(r!"c9!JJ!dL"S"NbJ!!!0!JJ!SU(S"P$L"!$a
)!,*eB!!!!(aJ"c9!JJ!3U'%!2%J$(4&J!!!!J0S!"(j%NhKqjEYi1'!!!$MJ!!0
)!`h&B!!!!$L#9[5)K!!!I)!(G8'#!""mJ!Gd,!!!!d##!8amB!Fe3))"4(r!"c3
X!2re3B)"1+M"!%*m`!Fd,!!$lN'#!!`X!!2Y3))!`(c$"c3iJ!!"5!+SV@!!!!#
)'J#-I'dEH#J!!!0!JJ!X1'%!@$L!!r%iS!!H5!6ZqB""!"4pSfYi1+%!@$L!!!0
)!X)PB!!!!(fMDhJiJ!!"5!6ZGB""!"3iB3&B1)!!!$LJ!!!i`!!!5!6ZeB""!"4
pSfYi5!+SX@!!!!"pSfYi5!6XPB""!"4)"1q0J%%!&$L"!%)iB!!!5!6[VB""!"4
pSfYi5!6[ZB""!"5!B3*B5!6[hB""!"4)!!"N,!!%$N##!%`iHJ#,1)!!"%J%lr'
!33!89'!'2d'#!"bS`3"#1'!!)6L!!"NiS!!G5rr5q8J!!#bS`3"#1'!!!6L!!!8
iS!!*5rr5i8J!!"3iB!!01)!!%6LJ!"9,rp,0U*8!!#`%rrp"JJ!J1'*@c+J$!!"
m!#!!3B)!%%[rFbdi!2rrX"8!!)!"!&#!B3"8N!!A!!")"1p9J%%!&)"j!!")"22
jJ%%!&$KL8E5!B`!!5!6ckB""!"5SB3"!I'!(08'#!"bS%`!!I'3(0(`%!!""JJ!
-5!(pe@!!!!!iBPCNU)-!"MKJ!!")"4&TJ%%!&%[rkRQ!&J!)9!!!I*!!&J!)1'*
ID$J!!!'B!`!!5!"B$@!!!!#!!3+i1#%#X,QKrl4m#!1Q6S!!))#$!"!iS!!!2!5
jXLJ!4&*!JJ!NJ'-!&$`$NTSS!'4b3B)!%$`$QBiS!'9N3))!#$LJ!!&8S`Bq6S!
!)!!!!!#!S`!31)!!!$`&RT!!+!"`C8'#!"!m"Ek`+!"36%##!"L!B`!82!1Vh#J
!-Q0!JJ!)1)!!!95$"Mj1J!!J!!!!!(`)!UBiS!!!N!!"!!L8)Ir!J)-!%$`%[V!
S!&"-3))!4)#$!"3m"*1C+!"ZGd##!!`iS!!"5!!!,$`%`-%S!$mr3))!))"M!!3
iS!!!1))HV$M!!!&)"2E9J%%!&(aP'hKmSbYiJ!%!5$JK!%"m#!1Q6S!!)!!!!!!
!!!!!!!!!!)#$!"!iS!!!2!5qX#J!8%a!JJ!BJ'-!&$`$M)FS!(9T3))!#$LJ!!&
8S`Bq6S!!))#$!"!iS!!!2!5qX#J!8%a!JJ!BJ'-!&$`$Qj%S!'0V3))!#$LJ!!&
8S`Bq6S!!))$$!"!iS!!!2!DqX#J!8%a!JJ!8J)-!&$`%RCiS!'pi3B)!)$`'ZE)
S!%453))!')"M!"3m!jfH+!"[H%##!!JiS!!"9+-'2Nk!!#!!!!!![m(rq(`)!UC
mIKYi1q!!!*!!!3!)P#(r`)!$!"K8!!9V3B)!$$[J!!&)!!#-5rrq*94J"Mp"JJ!
-1q!!!8J!!(Kr`r0i5rrq694J"Mp"JJ!-1q!!!8J!!'"r`r0i5rrqG94J"Mp"JJ!
-1q!!!8J!!%Kr`r0i5rrqh94J"Mp"JJ!-1q!!!8J!!$"r`r0i5rrqp94J"Mp"JJ!
-1q!!!8J!!"Kr`r0i5rrr$94J"Mp"JJ!)1q!!!ArMqhL!!3")1#%!3(`)!kDl`Ir
i6S!!)!!!!!#rJIr`I!J#TRap'hKmRL0i1q!!!*!!!3!)1!!!!*3Kr`#3!!%!5*!
!!3"%N!!"!%#3!!%!2$KK!$a)"2mYJ%%!&(am'hKrJ!Fe3))!R(qMkhJiJ3!m1+%
!1%J%r[@!33!8L!%!1#J!!!"!JJ"d1'%!6$J"!+L3!'%!F$KJ!$b3!'%!E$KK!$`
iJ3"XN!!"!+4)"24aJ%%!&)"K!)!m!l+r+!"$8d##!#L!B3"m2!1jXLJ!4&*!JJ!
BJ'%!2)!"!%#3!'%!4*!!!3")5!!!'$KK!'a,rrjT9'!'2d##rf")!!!iIi!(08'
#re3iB!!@5!++2@!!!!"8B!Br3))!')"K!%5!!3")N!"K!$b3!!%!3%J!!!Jli!!
"J-%!2(qMkhL!!3"!1)%!2$LK!$L3!0i!!*!!(J!%5!6q)B""!"4mB!Fe3))!&)J
"!$JS!!!!3B)!#$[J!!&rirYiJ!%"#$JK!3"m#!1QZi(rm%k!!#!iSQ#!1'!!!+L
&!!!i"!!"X!8!!%k!!#!!!!!!!!!!!(`)!UBiBPpQN!!"!!JiS!!mP#(rS)J$!!!
S!!!!3B)!#$LJ!!SiJ3"%1'!!3$M!!!")"1j4J%%!&&4J"Mp"JJ#SS!%!4#J!!!C
!JJ#F1'%!4%J&"*Q!33!89'!'2d'#!)JiB3"%1)%!3$LK!$K)"359J%%!&$KK!$a
)"1HTJ%%!&)"K!%")"1IpJ%%!&)"K!%")"1DKJ%%!&%J%paQ!33!8J'%!3%J%kD@
!33!8J'%!3%J%jS'!33!85!6h%B""!"5!B3"!5!6h(B""!"3iJ!!!5!6h+B""!"5
!B3!m5!6TjB""!"5!!3"S1#%!B(`)!kC1J!!J!!!!!!!!!!!!!!!![m(rq(`)!UC
mIKYiN!!"!!L8)Ir!N!#"!&b!J`!!N!#K!'#Vj!!!N!$"!'53!1%!D*%"!'b4)3"
`N8%!G%J%l('!33!8I'3EH(r$mhJiK!"'5!6aEB""!"4)"2'9J%%!&(aJ"c9!JJ"
8((m!4S#H!!!i!!!)I'3D&(`*!kBiSrrq1)%!@)"N!!5%"!!)N!"P!!58"3!)3J$
rm)"N!!5J"!!)N!"P!!5`"3!)J*i!!+KN!!!i!`!"X!3!!)!"!%Ji)3"!Zm(rq(`
)!kC1J!!J!!!!!!!!!!#6iIrmI!J#TM[J!!#3!!%!#*3Krm#SS`!!U!3!!(`&!!"
!JJ!`J+-!!S!%!!*m"3!!3))!)$KM!!BiK!!'5!,!*@!!!!"8B!Br3B)!#$[J!!&
rirYiJ!%!5$JK!%"m#!1QJq(rr%k!!#!!!!!!!!!!!,iKrm4m#!+QI(`EH)0#$i3
lBQ#!1b!!!$X!!!!ki!!!1'!!!T!!!3!)P#(qF%J%mK@!33!8I(mEH$KK!*!!1U!
!!$[!!!%lS!!!1S!!2%J%m3@!33!81'*IE)"M!!")"159J%%!&%J&!If!33!81!!
!!$aJ8f53!!%!M$KM4AL3!!%!L$L!!qL3!!%!K*!!!3#!5!+&T@!!!!!iJPpQ1!!
!!,!E!!"mGKYiL!3!!#J!!!""JJ!)1S!!#Rp$dhK)"4%*J%%!&$b!B@im`'&PI'8
EH$KQGR3iK(0b1-!!!$MJ!!")"4$pJ%%!&$KK!)K)"2UjJ%%!&(ac'hKqB!Fe3))
#b$Vh!!&,rrc"1'%!N!!iJ3#)1+%!D6SJ!!&)"2TeJ%%!&$KK!+Ji!3%%N!"K!-`
iB!!mN!"K!-JiB3#)1)%!b*!!!3%!5!6[rB""!"5)!3"T+!!!!%##!%a@S!Br3))
!4)"K!0`m!l+r+!"$8d##!$#!B3$B2!1jXLJ!4&*!JJ!JJ'%!L$SJ!!#!!3#-1U!
!!C!!B3#!N!!"!)4)!!!)1L!!!6KK!-K,rrR99'!'2d##rd!S&J!!3B)!8$T!!!"
)!!!dIN!(0)"K!0K8!"JiI)3#&)!%!!*m!`"!3))!&)"K!0b!"!!'I!-!3%'#r`3
k8J!"J*B!!(j$"c5S"!!!I!-!!%'!rm!k3!!!5!!!+(j!"c3FB!"'1)-!!MKK!34
mK5)85rrpH94J"Mp!J[l%1P)!!B#r!!"q3`FdU!8!!(`$!!""J2r-IQ!(08##!AL
)!3"T+!!!!%##!@a@)!Br3B)"C$aJF(-iBfiJ1)%!L$M"!(!iS!!)5!6UCB""!"4
mFKYiIN!(08##!$!mB'&P2)"aG6KMGR3iK'Pd1+%!F$N"!(Ji`2rr11!!!%J%p9Q
!33!8I()EH(j!"c9!JJ!31'%!F%J%pBQ!33!85rrl!Aj!"c9!JJ#-1'%!H$L!!!!
iS!"b1-!!!$MJrrmj!!!!15!!!%J%p8'!33!8I'!(08##!'!iB3#)5!6iGB""!"4
mB!FeIS@MH$L"!*JiB!!31-!!!%J%k5Q!33!8IS@MH$L"!*JiB!!31-!!!%J%k4'
!33!8IS@MH$L"!*JiB!!31-!!!%J%k2Q!33!81aJ!!6KK!(K)"26TJ%%!&$J!!!K
m#31Q1+%!'$L"!3#!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%Iq2lH*!!"3!%S!3
!#,!&!!L!J3!FJ+%!))$"!#5!i3!SJ3%!,)%K!$#"33!d5rrl$AjJ"c9"J[dS5rr
k!5J@!!""JJ!`IX1cH%J%lK'!33!85!!!)+!"!*JS!!!A3))!%$KK!*K)"2*eJ%%
!&%[rqFeqNk0iIS@MH$L"!*JiB!3!1-!!!%J%k$@!33!89'!'2d##rm4)!Vj&B!!
!!(`BZ&"m&`Fd1!!!!*!!!3#-1N!!!*!!!3#)5!!!k$aJ!!&qCCYi1'2rrcL"!*J
i`!!!1P)!!8J%jqQ!33!89'!'2d'#!-#J!3#B+!!!&d##!)3iB3#B5!6akB""!"4
qCCYi1)%!Q$KJ!"!i`!!!5!6RXB""!"4qCCYi1)%!Q$KJ!"!i`!!!5!6RQB""!"4
qCCYi1)%!Q$KJ!"!i`!!!5!6RJB""!"5SH`!!I`!(0(`$!!"!J[pB+"N!!%'#!1a
)"1"aJ%%!&(`$b%""J2p!5!!!f#J!!!C!JJ!X1'%!Q%J%rDQ!33!89'!'2d'#!"J
iB3#B1)%!E$LK!'T)"2fPJ%%!&$KK!)K)"2CjJ%%!&(aJ"c9"J[m-IN-(0(lJ"c4
m!`!!3B%!)#JC!!""JJ(F5!6J!B""!"4m!mK!3B$qd%J!!FJiB3#)5!8-LB""!"4
mB!Fe3),qZ$KK!*!!1)%!L$LK!'K)"2B&J%%!&(aJ"c9!J[kFL!%!D#J!!!""J[k
3!+Kl!!"r!!FdI!-!!%##rS!S'3!!3B)!&%J%hjQ!33!8I!2)3%'!rQJi!!!!N!!
"!)`k3!!!N!!"!)K)!!!)1P)!!6KK!)K)"2@pJ%%!&(aJ"c9"J[rXIN-(0(lJ"c4
m!`!!3)%"+&H!"Mp"JJ%B1'$rrcL!!!!iS!!!5!8,mB""!"3iB3#3!%J%p8f!33!
82'!!!6KMrrmiJ3#B5!6H3B""!"3mB!!"1'2rrcL"!*K)"0iYJ%%!&$aJ!!%iBrr
r1)%!Q%J%hKQ!33!81!%!U$KJ!$b3!!%!c$J!!!#3!'%!b$KK!*!!1)%!L*!!!3%
!5rreZ94J"Mp!JJ#B1'%!L$L"!-K)"1UGJ%%!&)"K!0`m!iLH+!"cD%##!#5!B3$
B2!1HN!!S!("P3))!&%J%hSf!33!81b-!H%[rr9`iB2rr1)!!!$LJ!!")"3XTJ%%
!&$KK!+JiJ!!!1+!!!$M!!!")"1!jJ%%!&%J#[&&J!!!!1'!$pML!!r%iS!!,1-!
!!%J#V'PJ!!!!1m!!!$ZJ!!%iB!!@5!+!0@!!!!"8B!Br3))!k)!"!)3S!!!!3))
!%)!"!)!S!!!!3B)!d&HJ"Mp!JJ$)2'"`FcKMEL!iJ3#!1-%!F$LJ!!K)"19KJ%%
!&(ab'hKq3!Fe3))!-$aJB@8mJ(&e1'0fG$L%DA3iS3"`13%!H$M!rrmii!!!5!6
`9B""!"4mFKYiIN!(08##!"!iB3"`5!6`KB""!"4q3!Fe3))!0$KK!(JiJ!!!1+!
!FMM!!!!ii2rr13!!!$NJ!!")"2""J%%!&$ZJ!!%l'!!"1[IrrcKK!(K)"2""J%%
!&&HJ"Mp"JJ!85!6G3B""!"3l)`"i5rrm%%J#Zc&J!!!!Id26H%J&#C@!33!82)"
KEMc!B@9mC4Yi1'CfG$L%Fh)i`!!!5!8*eB""!"4rirYi5!6TdB""!"4r`r0iJ!%
"Q$JK!C!!I!J$TVSKrm41J!!J!!!!!!!!!!#rJIr`I!J#TM[#9PamI"YiN!!"!!L
8)Iq`1'%!1%J%h8@!33!81'!%)$L!!!&)!TIPB!!!!(ap'hP"JJ!i5!6F0B""!"4
)"0mYJ%%!&(qMkhK)"0mjJ%%!&(qMkhK)"1c&J%%!&$L!!!")"1c4J%%!&$KJ!"C
)!RjYB!!!!(ar'hKr`r0i1)!!&NJ%j)Q!33!8Ii2MH%[rpZeAi!BrI(mEH%##!"4
r`r0i1)!!&NJ%j%f!33!8+"d!!%'#!""rSqYi5!6HqB""!"5!B3!i5!6I0B""!"4
rirYiJ!%!@$JK!&"m#!1QZi(rm%k!!#!!!!!![Z(rh(`)!UCmI4YiI*FMH$Z!!!#
3!!%!#*3Kr`")"0YPJ%%!&%J%lff!33!8J)),X(ar'hJiB3"J1m!!!%J#HM9J!!!
!9Z!'2d'#!$3iJPE12'"84DLr!!)iBeK8U)3!!$J%r"Km"3)8I"J(0(m%`hK)!Ra
4B!!!!(aq'hJS(J!!3B)!$,-I!!*)!!!F2'"84DLI!!)iBeK85!*m+@!!!!"mIKY
i+"i!!%'#"c4r`r0i5!6RmB""!"4r`r0i1i!!!8J%i6Q!33!8J*i!!$Y!!!")!!!
JL!3!!#`!!!T!JJ!-1!!!$CJ%!!!iK!!"1eS!!A`D'!""J2rJ2'"cG+LI!!)iBhP
X5!6`$B""!"53!(m!")"r!!3S!`!!3B)!$%J%ji@!33!81'!!!%J%jIQ!33!8N!"
r!!U)(`!!+!!!!%'#!"bSI`!#1!2q$"aJ!'3i!diJI"S(0%J!!"LSI`!#1!2pU"a
J!'3i!h8`I"S(0$aJ8%Pr400i1'0$9$XJ!!")!RY&B!!!!(ah'hK)!!$N1cN!!B"
r!!Tr1!Fd(*J!$%J%j@f!33!85!6PPB""!"4mB!Fe3))!a)"r!!SIH!!-J!-!!#J
A!!"mB0S8NZ2rp%'#!%b!Y`!!IZ1lH)#&!!+!"3!'N!#"!(#3!!%!G%J%mVQ!33!
8U)%!FMKK!(#S!3"`I)3!d(`!!0"mK!FdI!8(0%J%h%@!33!85!!!)$KK!(!iJ2r
r1+$rrcM!rrmii2rr5!6MMB""!"5!R`!+2'"35B#K!(!l@J!"J-3!!)!"!(4r400
iI-ED&*!!T[ri1'0$9*!!"[rm5!*kB@!!!!"mGaYi+"F!!%##rabc2`!)Ik2VH$L
K!(!iJ!!%5!+YE@!!!!!iB3"`1)!!!6LJ!!&)"1*jJ%%!&%J%iSQ!33!8I(XEH%J
%kY@!33!81'%!D$L!!!!iS!!!1-!!!$MJ!!")"1,aJ%%!&$KK!'K)"1V&J%%!&(q
MkhK)"0LKJ%%!&$J"!&b3!!%!1$J!!!!m`&4&N!!"!$amC"Yi13CB9$LK!(!jA`!
B1'!!!$M!!!Jii!!"15!!!%J&"lf!33!8I'!(08##!$#!BK4%1-%!@)!#&%Jii3"
8N!"K!&JiJ!!!N!!"!&3iS!!"J(m!'%J&"k'!33!8Npm!&(r$mhL!!3"FN!!I!"a
)"0k4J%%!&(aj'hKr`r0i5!6FFB""!"5!IJ!!J'-!!$`$K+3S!(*d3))"2$KLAfD
)!`!!+!!!!%'#!#JmB'4[1)0MFcM"!)3ii3#'1'#!"6LJ!!&)"0deJ%%!&%J!!#3
mB'4[1)0MFcM"!)3ii3#'1'$rrcLJ!!&)"0d4J%%!&%J%erQ!33!81`%!LRm%`hK
)"0P4J%%!&$L#(VKr!m0i5!+aq@!!!!#SB3#%I`A$H)#"!)Bi`!!!11!!!%J%h1@
!33!8I'!(08##!*`iB3#%1+%!3$L!!!-i`!!"5!(T,@!!!!"mGaYiIZ!(08##!'5
SB3"!IbA,H)$H!!!iJ!!!5!(XU@!!!!#SB3"!1)!!!6LJ!!")"1FpJ%%!&$bJ9%@
!I`!BU)%!3(mQbhJiT9K811!!!$N!!!")"3CTJ%%!&(ah"c5SB3"!5!(T)@!!!!!
iB3#%5!(T9@!!!!"qi!Fe3B)"U$KK!%`l3!!!5!6a0B""!"3X!`!!3))!M$b!9%@
!B3"-1)4B9$LK!&")"2%YJ%%!&#`$!!"!JJ"XJ'%!8#`$!!"!J3"J5!6L%B""!"4
mHKYj3B)!8%J%fXQ!33!82)"84B"K!%b!fJ!!1)4B9$LK!&")"2$pJ%%!&(ai'hK
r3p0i5!6HGB""!"3X'!!!3B)!&(p$dhK)"10CJ%%!&$Y!!!")"3@eJ%%!&$KK!%a
)"2#4J%%!&$b!9%@!B3"-J2i!!(mQbhJiK&K81+!!!%J&"D'!33!8J(m!"#J$!!"
"JJ")5!6D2B""!"5$(`!%I`2$H%J%h$f!33!8I'BEH)"K!%`mJ(0dJ2J!!$L%H@`
iS!!!5!8&AB""!"5!I`!%5!6GfB""!"4)"39KJ%%!&)"r!"K)"39YJ%%!&%J&"4f
!33!8+"S!!%'#!'!iB3"-5!6[mB""!"4r3p0i5!6CaB""!"4r3p0i5!6EbB""!"4
mCKYiJ'%!6$b!9%@!qJ!!1)4B9$LJ!!")"36TJ%%!&(p$dhK)"0ePJ%%!&(p$dhK
)"1*4J%%!&(qMkhJki!!!5!69#B""!"3iJ3"S5!69&B""!"5S(`!)Jai!!#`!!!"
"JJ#B1d!!!%J!!)L)'!!!+!!!bN##!(4qi!FdJ(m!#K`!!!b!B`!!Ik-!,RqMkhK
)"0NKJ%%!&(qMkhK)"0XPJ%%!&(aQ'hL!I`!B2)"35B#p!!"r4p0i1)4$9$ND!!&
)"35*J%%!&(qMkhK)"0bpJ%%!&$Vh!!'S(`!)IZ-(0(`$!!"!J!!81aJ!!6YD!!&
m'XJ!3B$rH(r$mhK)"0b0J%%!&)"r!"JiJ!!!1+!!!%J&"&'!33!8J(m!'$L!!!"
)"34CJ%%!&)$#$k3iJ3"iJ+B!!)"Q!!5J"J!)N!#K!(L3!'%!I,!"!)#!I`!B5!8
%4B""!"3i!!!!N!!"!%3mB(0X1'0cG*!!!3"%1-%!5$MK!%53!'%!5$L!!!!iS!!
"N!!"!%5!I`!B5!8$0B""!"4rBpYi5!6QBB""!"4rBpYi5!6GYB""!"3iB3"J5!*
bi@!!!!"rJq0iJ!%"#$JK!3"m#!1QZZ(rh%k!!##q`IrBI!J#TRbB)hL3!!%!#*3
KrT!!5!66EB""!"4)"1GeJ%%!&(ap'hJiB!!N5!6SrB""!"4mIKYi1d!!!$XJ!!!
iB"1)5!6JTB""!"53!(d!%$[J!PL)(3!!+!!!!%'#!!Jli!(d1f!!!%J!!6!iB!!
!5!6GNB""!"4ri!FdIh`(0(lJiK3mB&4&1'0B9(lN"c4)!R3aB!!!!(af'hJiB!!
"5!6GBB""!"3S&J!!3B)!k(pJ"c@S(3!#I!#i!%##!!`i'J!"X"d!$Rl$XhJiJ3!
i1+%!2$M"!%")"2!"J%%!&)JG!!#)B3"!+!!!!$J$rrK8!!Bq3B)!$$J$rrP8!!B
qQ!%!3$KK!%")"1R4J%%!&(aM"c4r)!FdI!-!!%#"!"3iB3"!5!6TYB""!"4mH4Y
iJ(d!%(p&dhJiJK4-5!6JKB""!"3l@J!"J(d!%(p%dhJiS3"!5!6JcB""!"3X(J!
!3))!0$JFrr3S!!!@3B%!+$KL(X"8!"!kI'-!,RaT!kC1J!3JJ(d!%&G%"$j)"1M
9J%%!&$Yl!!&rB!Fd,!!!C%'!rXar3!Fd,!!!!N#!!"L!I3!35!8#,B""!"3i!!!
!N!!G!"#!I3!3+!-!!%'#!"!iJ2rr5!6JCB""!"3i'3!SX"J!!(p$dhL!!3&i1#%
"F(`)!kDk`IrB6S!!)!!!!!#rSIrdI!J#TRap'hKmRL0iN!!"!!L8)IqJ5!64DB"
"!"4)"19aJ%%!&)###l"mIaYi1'%!1%J#F$eJ!!!!Ik2VH(r%mhJiS3"!5!+PU@!
!!!#SJ3"'1'%!3$J%rr'`!3"'5!6DqB""!"3iB3"!5!6E0B""!"5!I`!B1)!!!%J
&!%@!33!81'%!1%J#F$PJ!!!!J!%!D$JK!'#lSIrdI!J$TNk!!#!!!!!!!!!!!!!
!!!#r`IriI!J#TRaq'hL3!!%!#*3Krl")"0#pJ%%!&%J%j-@!33!8I(mEH)J$!!!
S!!!!3))!H)"r!"JiJ3"!5!8"$B""!"5SB3"%1+%!1+L"!%Bi`rrrJ(m!'$J%rr'
``3!mX!%!2S#"!$a)"3$jJ%%!&)"r!"K)"3%&J%%!&)!"!$K8BrKqI!!B3%'!!#"
r`r0i1)!!!8J#TGeJ!!!!1)!!!%J%d+Q!33!8J!%!@$JK!&#l`IriI!J$TNk!!#!
!!!!![d(rk(`)!UCmI4YiI*SMH(bq+hL3!!%!#*3Krk")"-reJ%%!&%J%irf!33!
8S"S!!(al'hJli!!",!!!!d'#!8"!J!!3,!!!!8'#!"4)!!)8,!!!"8'#!5K)!!)
)J(S!#ML"!%")"1#0J%%!&(am'hKrSqYi5!62RB""!"5!S3"!I!8B3%##!GarJ!F
d,!!!"%##!"L!QJ!+I+-VH%J#E[9J!!!!5!!"[#`!!!0!JJ'dJ"S!#MKK!$b3!!%
!2%J%i'@!33!8Ik2VH%J%cdQ!33!8I'3EH)"K!$`iS3!i5!6JAB""!"4mB!Fe3B)
!H)"K!$K)"2rKJ%%!&#`$%iK!JJ"NJ'%!1$LJrrq!J3!m5!6J4B""!"4mB!Fe3B)
"6)"K!$K)"00"J%%!&+JE!!jmB`FdI!!B!%'#!##!B3!i5!66*B""!"5`H`!11!!
6L,!H!!")!!%81!!!Bl!H!!")!!%)J(X!'(p%dhK)"2q"J%%!&(qMkhK,rrh05!!
!k)!D!!*8!!Bq,!!!$8'#!$K!J!!F,!!!!d'#!#a"J!$),!!!#d#!!+4)!!#m,!!
!,N'#!'4!J!#`,!!!'d'#!$")!!#NL"X!!#J!!!""JJ#BIk2VH$L!!!&)!U%GB!!
!!$J!!!'`(J!!5!!!J)JE!!!S!!!!3))!F(qMkhJiJ!!'5!+Jp@!!!!!i!!!'X"i
!!%J!!&L)'`!!+!!!!%##!%LJ'J!19!!&ld#"!$arSqYi1)!!"NJ#S-&J!!!!1!!
!"V!H!!")!!!NJ(X!'(p%dhK)"2keJ%%!&(qMkhK,rrcT5!!!#$[J!!"rirYiJ!%
!D$JK!'"m#!1QZd(rk%k!!#!!!!!![m(rq(`)!UBX!`!!I*iMH*!!!3!)P#(rX%#
#!)#!IJ!DS!-!!#J!!!C!JJ"`I,mVH(rMqhK)"-eGJ%%!&)#H!"TmIKYiJ!3!!R`
!m%"!JJ"-1'%!1%J%cLf!33!8Iq2lH%J%cS'!33!8Im2cH%J%hD@!33!8Iq2lH%J
%d$'!33!8Im2cH%J%hD@!33!8J'%!1%J%d*'!33!8J!%!@$JK!&#l`IriI!J$TNk
!!#!!!!!![d(rk(`)!UCmIKYiN!!"!!L8)I0!5!6-cB""!"4)"1$9J%%!&(ar'hJ
lJ!!'1f!!"8J%d('!33!8L"m!!(ap'hJS!!!!3))!$$Z!!#%lB!!J1'%!8$L"!%a
)!VaCB!!!!(q&ihJiB31F1)!$k%J%cS@!33!8IfAEH$KK!T`iJ!2S5!61FB""!"3
iBPEbL!-!!#J!!!""JJ&SJ')2R%J%lmf!33!81)*ICRak'hJlJ!!!L!3!!#J!!!"
"JJ!N1'*A3$L!!!!iB`'45!62`B""!"48B!Br3B)!#$Z!!!&AQ`Br3B)!'$KK!%J
iJ!!!1+!!!%J"c5&J!!!!1'%%R%J%li@!33!81'%)TML"!Ta)!UFPB!!!!%J%r6@
!33!8I'3EH$KK"+C)!UF0B!!!!$KK#DBiJ31F5!+Qr@!!!!!i!!!"J1%!8*!!!3U
QIdE6H)%"!%arbI0i1)%"R$LK"*`iB!!!5!6p!B""!"4mIKYiId26H%J%ld'!33!
89f!'2d'#!"JiB3")1)!!!$LJ!!&)!Fb&B!!!!)J"!CiiB!!!+!!!!%'#!""r`!F
e3))!#$KJ!!&8I!Br3B)!@$J!!!!mJ'CcN!!"!$`iB3'L1+4c)$M"!%3ii3"!13%
!9$P"!$`iJ!!"15!!4NJ%lZ@!33!81'%"R%J%l['!33!85!!!&$Z!!!!iB!!"5!6
+"B""!"4AJ!Br3B)#J$KK!&4)"2aKJ%%!&)#"!%`iB3"8J+%!8$M!rrp)"2aKJ%%
!&(aq'hKr`!Fe3B)!%(r!"c3X!2r33))#*$KK!&3iJ!!!1+!"rdJ#CU9J!!!!1'%
!9$LK!$SiJ!!$5!63SB""!"4mIKYiIm!(08'#!""r`!Fd,!$rcd##!%#!I`!85!6
3aB""!"5![`!8I'3EH+KK!$Si`!!!J+8!!%J"i!&J!!!!I'!EH+KK!$Tm(J0i5!(
FE@!!!!#!(`!%+!!!!%'#!Car`!Fe3))"P)#"!%`iB3"8J+%!8$M!rrp)"2ZjJ%%
!&$KK!&3iJ!!$5!6dkB""!"5`B3!kU!%!1L`!rrp"JJ&32)"cG)"r!!3iK(PX1-)
88$LJ!)")"24eJ%%!&%J%cFf!33!8I(iEH(r!"c9!JJ!FJ(m!"%J%hmf!33!8J(m
!"%J%eUQ!33!81f!!!%J!!04rB!FdJ(m!#Kq!!!b!B`!!Id2J,LJD!!""JJ#dId2
6H%J%pE'!33!8Id26H$L"!$JiS3"31-%!R%J%jTQ!33!8Id26H%J%eP@!33!81"X
$k$b!8%Pr3p0i1)4$9(`&"c3i`K435!6ceB""!"4r3p0i5!6I3B""!"4r3p0i5!6
9lB""!"4rSqYi5!6-qB""!"3mB&"*U)%!1$KM3e4)!QSGB!!!!)#I!!SS!`!!J)3
!!(aNi5j"JJ!-5!6KiB""!"5SB3!k5!6-[B""!"3lH`!"U"m!#(pM"c4m!`!!3B$
r*+KK!$T)"00&J%%!&(qMkhK)"-b4J%%!&%J!!"")"-bGJ%%!&(aq'hKr`!Fe3B)
!((r'mhJiB!2f1)!$m6LJ!!C)!TETB!!!!)!"$-Ji)3c!Zd(rk(`)!kC1J!!J!!!
!!!!!!!!!!!!!Nq(rr(`)!UD3!!%!#*3KrE")"-JKJ%%!&%J%h#Q!33!8I(mEH)"
M!"!iS3&!U*m!$NJ%qH'!33!8L"m!!#J!!!""JJ!B1))I($KK!8")!U*PB!!!!%J
!!"3iJKmN1'%"3%J#SP&J!!!!2'"846KM@&3iJ3&!5!6jYB""!"4mIaYi1)%!1$L
K!$`i`3"!5!6NrB""!"4rirYi5!68LB""!"5SB3!iJ!%#@$JK!P"m#!1QJq(rr%k
!!#!!!!!!!!!!!,mKrq4m#!+QI(NEH(bD)hL3!!%!#*3Krk")"-GCJ%%!&%J%ff'
!33!8I(mEH+L$!!)iB!"N2+"#G(`%'pCm!"R@I'!J8$J$!qJiC@j8I!3(0%J#D'&
J!!!!I(iEH8##!!KrAY0i+"i!!%'#!+ar`r0i5!6,DB""!"5$[J!!1i!!!6YJ!!%
l[3!#5!!!B(pJ"c3X!!!&3))!')JI!!!S!!!!3))!9$Z!!!&)!!!3,!!!!d##!!J
lR!!#Ib2,H(q%ihK)!Ta4B!!!!(qNkhK)"1-0J%%!&)JG!!!lR!!"1hX!!Aqp!K3
l[3!"If!(0#`!!!9!JIqFIm2cH%J%cVQ!33!8I"l33%'#!""r`r0i5!669B""!"5
!!3"S1#%!B,XKrq4m#!1Q6S!!)!!!!!!!!!!![d(rk(`)!UCmHKYiN!!"!!L8)Iq
`5!6',B""!"4)"0SeJ%%!&(ar'hJiB!&!5!66CB""!"4mIKYi5!64`B""!"4mB!F
e3))!U(r$mhK)"-TGJ%%!&)1q!!!lJ!!"1f!!!6Zp!!*)!!")If!(0#`!!!0!JJ!
-1"`!!R`F"c4r3p0iIi6MH%J#QeeJ!!!!Ik6VH%J%iJ'!33!8L"d!!$ZF!!%lH`!
"Ild#&$Zp!!&rB!Fd,!!!"%#"rl5)(`!!+!!!!%##!#"r3p0i1)!!!8J#Qa9J!!!
!Ik6VH%J%iEQ!33!8Im2cH%J%cCf!33!8Im2cH)!"!&Ji)3"3I!J$TVY"rqK1J!!
J!!!!!!!!!!!!!!!![d(rk(`)!UCmI"YiN!!"!!L8)Iq3!$KK!&")!TVjB!!!!+K
K!&+S!3"@U)%!8(`$!&#SB3"8I"m(0(rJqhKmC"K3,!!#J(aq"c4!J!%dIi2MH%J
%a1'!33!81)%!3%J%a1f!33!8U+%!3MZJ!!'SJ3"'U'%!3+J"!%4mK5"3I)3(0(`
$!&"m!!FdI(mJ8(`H!&"mH`FdI"S(0%J!!+4rJq0iIk6VH$LK!$Ji`3!m11%!5%J
%a&'!33!8Ik!(0#`!!!4!JJ!JU'%!6UJ"!%amHaK3I"S!8,"K!%k`!3"-5!!!3(b
E!0"m'J$31'%!5(b%"c4m"3Fd5!6($B""!"5S!3!i9!!(Hd'#!"L!B3!mU)%!5UL
K!%K)"-F&J%%!&+LK!$KrJq0iJ-%!2(qNkhJii3")5!6&qB""!"3l[3!"Ik!(0#`
!!!C!JIpBIi2MH%J%`q@!33!8Iq6lH(r&mhJi`!!!5!6'FB""!"4rJq0i5!6$aB"
"!"4)!TVpB!!!!)!"!(Ji)3"`Zd(rk(`)!kC1J!!J[d(rk(`)!UCmHKYiJ')-S*!
!!3!)P#(qB%J%a''!33!8I'!EH)"L$j!!I"`$H%J%a%f!33!8I(XEH$KK!%4)"-4
9J%%!&%J%`Tf!33!81'!$r6L!!!&)!RlYB!!!!(ap'hK)"-0"J%%!&$L"!'")"0G
GJ%%!&(p!"c3X!!(d1'!!!%'!!"!X!!*B3)!!#$KJ!!%iJ!!!Q'%!B$J!!!'c33"
LIk2VH,#"!'L3!)%!DV!"!'k3!)%!F*!!J3"NN!#"!(L3!)%!G%[rrE&rSqYi1)!
!!8[rje98B!Br3))!1(qMkhK)"-B0J%%!&(q$ihK)"-BaJ%%!&(pMfhK)"-BPJ%%
!&)"K!%4)"-BaJ%%!&%J!"Bb)J3"J1!!!"cKL9d!JK!!!I)3K%(`%!K5`!3"#1q-
!H(rMqhLSJ3"#5!6'&B""!"48B!Br3))!b(qMkhJiJ3"!5rrZeB!"!(#`B3"#+!!
!!%'#!+arSqYi5!6#2B""!"3iJ3")5!6#5B""!"5SJ3"+1'%!5+MK!%`iK!!+U!%
!3$LRrq0ma!)81!Irphb%"c4mT3FdI-B(0(`("c4)"-`aJ%%!&(qMkhK)"-(YJ%%
!&$J!%iL3!!%!1$L"!%JiSK431-!!!6MJ!!!j!"1)15$rrcP!!r&)"0T4J%%!&+L
"!'jmIKYi5!63bB""!"5SJ3"#Im2cH%J%d)Q!33!8L!%!B#J!!!""JJ!BIk2VH$L
!!!&)"--eJ%%!&%J!!"4rSqYi1)!!!%J%`b'!33!8Ik2VH(pPfhJiJ!!%5!+9E@!
!!!#)!3"J1'!!),"K!%)S!!!!3B)!$$J!!!@`!3"#U+%!3MKK!)!iJ!2S5!6$2B"
"!"4rSqYi5!6")B""!"3iJ3#!5!6B*B""!"3iB!!!5!6*`B""!"3iB!!-5!6*jB"
"!"5)!3"J+!!!!%##!03iB3#!1)!$k$LJ!"p)"-,YJ%%!&(qMkhJiJ!!"5!+@E@!
!!!!iJ3#!5!6G+B""!"4rSqYi1+%!5$L!!!C)!T8GB!!!!+LK!%TrSqYiU!%!6ML
!!!)i`!!!I+8!8$J&!!U`!3"#U!%!3R`!!0"m"3Fd5!+6k@!!!!#S!3"#Ik2VH$L
!!!9m!!$3I!8(0$M!!!")!T2*B!!!!(rMqhJiJ!!%5!6$mB""!"48B!Br3B)!0(q
MkhJiJ!!"5!+9d@!!!!!iJ!$r5!6!RB""!"4)!!!8Ik2VH$L!!!C)"-p"J%%!&(q
MkhK,rrR&I(iEH(qMkhJiJ!!!5rriKAqMkhK)",rYJ%%!&%J%`Z@!33!8Ik2VH%[
rl`Q!BJq-Ik6VH$LK!&!i`3"#5!+!C@!!!!#S!3"#,!!!"8'#!#"!J!!3,!!!!N'
#!,K)!!'-,!!6L%'#!,K)!!'!5!6$9B""!"4mB"YiJ'%!H(`D!hK)"2#*J%%!&#`
$!!"!JJ!3J'%!H%J%m)f!33!8Id26H%J%`fQ!33!8Ik2VH$LK!%JiJ!!%5!+6[@!
!!!!iB3")1)!!!6LJ!!&)"-M*J%%!&+L"!%USB3"1U+%!5+J"!%amK"K3J'%!H)$
"!(amT3"35!6`5B""!"5!B3"i1+!!!B#"!(a)"2"0J%%!&%J!!0arSqYi5rrb$8J
!!0"rSqYi5rrfXB!"!(5`B3"L+!!!!%'#!"Km!`0i5!6-!B""!"3i!!!!N!!"!(5
!B3"N+!-!!%'#!"4)"-[PJ%%!&$J!!!#3!!%!C)"K!'Si!!!!X!%!D#J$!!""JJ!
85!6,`B""!"3i!!!!N!!"!'TrSqYi1)!!!%[ri[')!3"J+!!!!%##!$KrirYi1)!
!"%J%`J'!33!89'!'2d'#!#"rSqYi1)!!!8J#Nq&J!!!!1)!!rdJ%[Uf!33!8Ik2
VH(r%mhK,rrDeIk2VH%[rl8fS!3"#,!!!!8'#!!`X!!!'3),q0)"K!(3S!`!!3B)
!&%J%bc'!33!81!!!!*!!!3"dJ'%!C#J$!!""JJ!85!6,&B""!"3i!!!!N!!"!'5
!B3"U+!-!!%'#!"4)"-VjJ%%!&$J!!!#3!!%!DLJH!!""JJ!3Im2cH%J%bYf!33!
8J'%!H#J$!!""JJ!-5!6[SB""!"5!!3"`+!!!!%'#!"!iB"1)5!6[SB""!"4rSqY
i5!6!YB""!"4rJq0i5!6!fB""!"4rBpYi5!6!cB""!"5S!3"#,!!!!8'#!#b)!3"
J+!!!!%##!#!iB!!!5!*G`@!!!!!iB!!!1)!!"8J$"G&J!!!!J'%!4%J%`+@!33!
8J!%"U$JK!D#l3IrSI!J$TNk!!#!!!!!!!!!!!,r"rrKm#!+Q1'*9k$L!!!!l`!!
!N!!"!!Ji!2rrP#(qd*!!J3#fJ'-!!*!!J3"+X!%!9)2M!!")!!%8L"m!ZbJ!!!"
"JJ%!1(m!MML!!!C)"-"0J%%!&&4J"Mp"JJ$S1(m!MML!!!&)"-!eJ%%!&&4J"Mp
"JJ$3U*m!@$J!!!!iB3#NX)%!ZV!"!-")"-E4J%%!&(aJ"c9!JJ#XJ)%""L`%!!"
!JJ"-J"m!5MKK!+53!!%""NJ%kT'!33!85!!!L)!I!%Tm"!!!3B)!I+JI!&JiB3!
iX!%!6T!!J3"S5!6#fB""!"4mB!Fe3))!A)#"!*!!,!3!!%##rmb!(`"+1'%!1*!
!!3#3!%J%aY'!33!8U"m!@$KK!$L`!3"1J"m!5T!!!3"S5!6#PB""!"4mB!Fe3))
!'$J!!!#3!!%!N!!iB3!i5!6'QB""!"3lr`%11pi!!6KL9Hara!FdJ!-!!(`%!!"
"J2lJJ!%"1$JK!6#l`IriI!J$TNk!!##r`IriI!J#TRaq'hKmJb0iI+3VH*!!!3!
)1+)89*3Krh!i`3!m5!6'*B""!"4mIaYiIq!(08##!(JiJ3!m1+%!1$KJ!!")"16
&J%%!&(ar'hKri!Fe3))!@)"K!$K)",q0J%%!&)"K!$K)"-'4J%%!&)#"!$JmS'&
XI'FEH$d!,5f!a!!!Im2cH$L),5diT@Pc5!6Q%B""!"4mB"YiJ'%!1(`I!hK)"-J
9J%%!&(rMqhL!!3#B1#%!N!"m#!1QZm(rq%k!!#!!!!!!!!!!!!!!!!"m#!+QI'B
EH*!!!3!)P#(rJ+L$!&L!S`"+1'%!1%J#GE9J!!!!1'%!1$L!!!!iS!!!1-!!!8J
%k1@!33!8J!%!L$JK!)"m#!1Q6S!!)!!!!!#r`IriI!J#TMbJ68%iJPpQ1+9$8ha
q'hL3!!%!#$[J!!#8)IqJL!3!!*!!S3!i+!!!!%'#!3`mB(0T1'0REML"!$Ji`3"
)1+!!"%J%`IQ!33!8I(m(08##!1JmB'CZ2)"QG6KMC()iK("N1+%!5$N"!%!i`2r
r11!!!%J%c2'!33!8I(m(0$KK!%K)"-dTJ%%!&#`I!!"!JJ#SIm2cH$L"!$a)"1K
"J%%!&(ar"c9!JJ#3!)"K!$a)",i9J%%!&)"K!$a)"-!CJ%%!&)#"!$`mS'&XI'F
EH$d!,5f!a!!!1'%!3$L),5diT@Pc5!6NQB""!"4mI`Fe3))!5)"K!$a)"-DGJ%%
!&$KK!%!iJ!!!1+!!!6M!!!!ii2rr13!!!$NJ!!")"-ajJ%%!&(ar"c9!JJ!31'%
!3%J%c(f!33!8Iq2lH)!"!'Ji)3"JI!J$TV["rrK1J!!J!!!!!!!!!!!!!!!![b(
rj(`)!UCmI"Yi1q*ICMcJ4Nim`(0[2'"QFhbC)hJl`f9XI,dVH(q%ihL3!!%!#$Y
R4&)l4R"PP#(rF$KJ!!!iS3!m5!6L4B""!"4mB!Fe3))#J)"K!$a)",d4J%%!&)J
I!!!S!!!!3))!+$aJF(0r*-Yi1'0Z)$M"!'JiS!!)5!6!BB""!"4mB!Fe3))#,)J
I!!!S!!!!3B)!6$aJ68%i!d062-"KCC!!!3!i2+"[C$b!,5dmB(0T1fCfG$Y&Ef-
la#dY1'0REML"!$Ji`3"S1+!!"%J%`!f!33!8I'!(08##!GKrBpYiId66H$LK!'J
j!3"J1-$rrcMJ!!")"-X0J%%!&(aJ"c9!JJ'NL"m!!#J!!!"!JJ"d9k!'2d'#!&#
!B3!m5!5q9B""!"5!J3!m2-"KE(aP'hL!K!!!1'CTFcM"!%")",qGJ%%!&$b!,5d
iB3"J1)3Y,6LK!%")"-V&J%%!&(ak'hK)!!!BU*`!!$KK!'#![!!#5rrm#Aak'hK
r3!Fe3))"+$M"!%JiB!!!1)!!!$LJ!!")"1C*J%%!&(aJ"c9!JJ$S9k!'2d'#!&L
!B3!m5!5paB""!"5!J3!m2-"KE(aP'hL!K!!!1'CTFcM"!&")",m0J%%!&$KK!%J
iS3"31)!!!%J%jK'!33!8I(SEH$KK!&")"-TCJ%%!&%J!!$L!B3!m5!5pFB""!"5
!J3!m2+"KE(aR'hL!a!!!1'%!5$LPDA-iJ!!!5!6PjB""!"4mHKYiId!(08##!&"
ra20i1'%!B$LK!%K)"-R9J%%!&(aJ"c9!JJ!d1'%!5%J%bI'!33!81'%!B$L"!&J
iS!!41-!!!$MJrrmj!!!!15!!!%J%bE@!33!89k!'2d'#!"b)(`!!+!!!!%##!"!
iB3"!5!6*VB""!"3iB3"J5!6*SB""!"5!B3!m5!5qKB""!"5!B3!m5!6$FB""!"5
!!3#B1#%!N!#l)IrNI!J$TNk!!#!!!!!!!!!!!!!!!!#rBIrXI!J#TML#9HJl``!
"1q!!!*!!!3!)I'!(0"`!!3k8)Iq`J)3!!)#%!!"rT!)8L(d![$ZG!3ii!`!"9"X
'2NJ!!(L)I!#mL"d![(`$!%"!J3"m9f!'2R`$!%"!JJ"8L"`!ZbJ!!!"!JJ")1(`
!MML!!!4)",P&J%%!&&4J"Mp!JJ!`1(`!MML!!!9)",NYJ%%!&&4J"Mp"JJ!BS"`
!KP3!"+9"JJ!-1q!!!8J!!#!lhJ!"1j`"$MKL9Hara!FdJ!-!!(`%!!""J2pmIq2
lH)!"!&Ji)3"3I!J$TVYKrqa1J!!J!!!!!!!!!!!!!!!![i(rm(`)!UBiJPASI(m
EH*!!!3!)Iq!(0"`!!3k8)Iq`J'3!!$L!!!+!B`!!Im-#&)Zq!,`iIJ#'5!5iNB"
"!"48B!BrI(`EH%##!)"AS!Br3B)!H%J!!'b)I[qZ9k!'2M[Hr[*m!`"!1rrrrd#
!!%L)(J#l+!!!!%'#!$`iIJ#11)!!"%J%Z%@!33!89'!'2d##!#3iIJ#'1)!!!NJ
%Z#f!33!89'!'2d'#!!`lJ!!"5!!!')JH!,`S!!!!3B)!$(rJ"c9"JIq8Ii2MH)!
"!&Ji)3"3I!J$TVZ"rr"1J!!J[i(rm(`)!UCmR50iI(`EH$[!!!#3!!%!#*3Krc!
iJ3"`5!5j`B""!"4mB!Fe3))!h)"L#TJiJ3"`J'-!!%J%Z1@!33!8I(mEH8'#!-"
AS!Br3))!0$L"!'`iS3"S5!6LVB""!"48B!Br3B)!($aJ5d@!J3"X1!0B9(`%!&"
m!!!d9"hH2PHJ"Mp"JJ"d1!!!#(`*!kBi`3!81,crr)"P!!5%"3!)N!"Q!!58"J!
)3J$rm)#&!!3iB!!!1!!!!C!!KJ!%S)8!#,#'!!L3!'%!B*!!!3"NJ'%!')#"!"b
!S3!JJ-%!*)$K!#L"!3!XJ5%!-)&"!$4)!NZ"B!!!!$[!!!&rirYi5!5iJB""!"4
r`r0iJ!%!f$JK!0"m#!1QZi(rm%k!!#"m#!+QN!!"!!L8)Ip3L!-!(P3!"[G!JJ!
NU!-!&MM"!'L!J`"NJ+-!%R`$"c4)",fpJ%%!&%J!!##S!`!@1+)89)#$!$!i`3"
SI!-(0%J%[Cf!33!8I'!(08##!(!i!!!)I!N$TMM"!"3iS3"NJ'8!")3&!!L3!'B
!"*3'!!K#!2r`J)8!"$KJ!!!i!!!"N!#'!!5JK3!)X)B!#*!!B3"JN!!"!'5!B3!
BJ)%!()#K!##!`3!NJ1%!+)%"!#b")3!`J8%!0%J#5T&J!!!!J!%!Z$JK!,"m#!1
Q6S!!)!!!!!!!!!!![b(rj(`)!UBiSQ,F1d!!!)"L$q`l`PG!1q*ICT!!!3!)1!!
!#(`*!kD8)Id`J)8!!)!&!!3iS3"-N!#"!%!iJrrmN!!"!%5!C!!%K!3!#*!!C3!
%P!8!#%)!rr!mB(0j1'0cGML"!$a)",#pJ%%!&(aJ"c9!JJ!SJ!%!2#`!"`""J!!
F1'%!5$L"!*!!5!&[Q@!!!!"8B!Br3))!$%[rp,P)!!5B1'*9k$Z!!!#!B`!!Jk-
!!%J!"$L)(3#l+!!!!%##!C3iI3#11)!!"8J%Y5'!33!89'!'2d'#"!`iI3#11)!
!"%J%Y3Q!33!89'!'2d'#!(!iI3#11)!!"NJ%Y2'!33!89'!'2d'#!pbS(3#-,!!
!!8##!#LSI3"B1,d!)B#G!%Si`3&N5!5ljB""!"4mB!Fe3))$X%J!!i5SI3"B1+)
89)#G!%Si`3&N5!5l`B""!"4mB!Fe3))$M%J!!f!iBQ!"L!-!!#J!!!""JJ!FJ"d
!MP3!"MiX!!!63))!$(qMkhK,rrB4L"m!!#J!!!""JJ#)J(d!IM`$[V!S!&"-3))
!*+LG!&KrTZYiJ,d!5MKK!@4)!QZaB!!!!$KK!@4,rrBPJ"d!MP3!"MiX!!!"3B)
!5+Kp!&JiSK48J*d!5MM"!@4)",XTJ%%!&$KK!@3iJ3%85!5emB""!"4mB!Fe3))
!'$KK!43iJ!!"1+!!!%J%hXf!33!81(d!MML!!!C)",20J%%!&&4J"Mp"JJ+iU(d
!@(qPkhL!R3"+1-%"C%J%ZXf!33!8I'!(08##!TK)!!*X1(d!MML!!!&)",14J%%
!&&4J"Mp"JJ*mU(d!@$LL&&5!R3"+1-%"C%J%ZT'!33!8I'!(08##!P`iBPEVL!-
!!#J!!!""JJ)N+"S!!%##!-`iB3!i5!5`MB""!"3iB!3U1)!!!8J#DbeJ!!!!L"i
!M(ak'hJS!!!$3))!,$KK!D`iJ!2S1+!!0dJ%XAQ!33!8Id26H$LK!D`iJ!!"5!+
%T@!!!!!iIJ#11)!!!NJ%XZf!33!89'!'2d##!%`iBPpTL!-!!#J!!!"!JJ!mId2
6H%J%Vb'!33!85!5b'B""!"4r3p0i5!5b*B""!"4r3p0i5!5rXB""!"3iJ!!!5!5
r[B""!"4)"+p0J%%!&$YM!$a)!Sa4B!!!!)JI!!!S!!!!3))!&(q$ihK,rrQT9'!
'2d##!+b!!3&Q,!!!!N##!&LS(3"B1'%!3(b!!0")",*0J%%!&&4J"Mp!JJ!mU"d
!@$KK!%"mJ!$35!5h+B""!"5SI3"B1+)89$M"!-`iJ!!#5!5j1B""!"3iB3$-5!&
UK@!!!!!iBPq!J!-!!#`!#3""J!!`L"d![#J!!!""JJ!8Ii2MH%[rq#e8B!Br3B)
!)$KK!@4)!@T0B!!!!%J!!"!iB3&N5!&U2@!!!!!iB3"31)%"DNJ!8ReJ!!!!I(N
EH$Kp!)BiJ!!#5!5aSB""!"48B!Br3))!$&FJ"Mp"JJ"F1'%"C%[rmhf)(`!!+!!
!!%'#!%JiIJ'41)!!!%J%X@f!33!89'!'2d'#!$"r*-Yi1'%"C%[rq@e8B!Br3B)
!()#L$qJiB3&N1)!!!$M!!!")!c!4B!!!!$Kp!)iiJ!!'5!5a+B""!"48B!Br3B)
!&)Lp!,XiB3&N1)%!5%[rp'8l[3%11j`!!6KL9HarK!FdJ!-!!(`%!!""J2Zm+"S
!!%'#!$4)"+fGJ%%!&(`$f%""J2rd5!+,M@!!!!"r3p0i5!5`DB""!"5!B3!i5!5
`TB""!"5!!3,B1#%#d,XKrq4m#!1Q6S!!)!!!!!!!!!!![f(rl(`)!UBliPMJI*`
MH(al'hJiRrrmN!!"!!Ji!!!)I!N$TT3KrX!i`3$8J'3!")3%!!L3!'B!"*3'!!K
#!2r`J+3!"$J!!!#JK!!)1'%!f*!!TJ!%1+%!E,#'!!Jl`!!!1k!!!,!"!$JiJ!!
!5!(#Y@!!!!"mB!Fe3))!F)J"!)T8!!Eh3B)!C$L#(c!iB3$H5!+(X@!!!!#!!3#
F1'%!f$LK!'b3!!%!fML!!!")!F*eB!!!!(aJ"c9!JJ!`J!%!R$KJ!!'`B3#)1'%
!E*!!!3$D5!5biB""!"4mB!Fe3))!$$ZJ!!&)!!!i1!!!#(`*!kBiS3$81*rrr)"
N!!5%"!!)N!"P!!58"3!)3J$rm)"N!!5J"!!)N!"P!!5`"3!)1!!!!*JF!!!iB3$
B1+%!1$L!!!&)",(aJ%%!&(aJ"c9!JJ"i1!!!,+KK!$L3!!%!2$LK!$`i`3"!1)!
!!%J"`-PJ!!!!I'!(08##!$b!B3"!2!1XULJ!3e4!JJ!XJ)%!D$J!!`K8!`rq9)8
%2RbNrR#3!+%!D(`!+""m""N8Q"X!!$[!!!'SB3!iI'!(08'#!!a)!Ef9B!!!!$K
K!0JiJ!!"5!6@2B""!"5`B3!iU!%!1#`!rrp"JJ"%2'"$36KM6%`iJ!2S5!*-8@!
!!!!S!`!!3B)!()"M!!!iJ!!!1'-"N8J%VTf!33!8Q(`!!+KK!$K)",@9J%%!&&I
!"Mp"JJ"39k!'2d'#!%JiBPpQL!-!!#J!!!"!JJ!i1!!!#(`*!kBi[rrm1)%!e)"
N!!5%"!!)N!"P!!58"3!)3J$rm)"N!!5J"!!)N!"P!!5`"3!)Im2cH)!"!8Ji)3&
!I!J$TVYKrqa1J!!J[d(rk(`)!UBliPUdI2dlH$YLCa4p(N0iN!!"!!L8)Iq3!*!
!B3#)S!%!L*!!J3#-,!!!"T!!S3#3!*!!`3#83B)!)%#!!"!X!!!"3B)!c%J!!J3
X!!!A3B)!X%J!!IL!B3#+N!"K!$a)"-BCJ%%!&$L#BZ4mHKYiJ!3!!(`D!%""JJ!
BJ'%!2%J%[J'!33!8,!-%%N##!&JiB3"!5!5UcB""!"5!B3!m5!5XdB""!"5!B3!
m5!5k[B""!"5!B3!m5!5k1B""!"4r3p0i5!5XaB""!"5!B3!m5!5k1B""!"5!B3"
!5!5Y*B""!"4,r`BYB!!!!&4J"Mp"JJ&F5!'R2@!!!!")!!&31'%!L%J%ZYf!33!
85!!"3#JG!!""JJ%iJ"X!!#J!!!""JJ%X1d%!NS"K!*)iJ3!m5!5k)B""!"4mI"Y
iIi!(0#`!!!0"JJ!-,!!!"%##!3#!H`!!5!5T(B""!"5!!3!mI!!B3%##!1Km!`0
i5!5jrB""!"4rJ!Fd,!!!!d##!,"r3p0i5!5jrB""!"5!HJ!!1+%!1)#"!$a)",S
"J%%!&(aJ"c3X!!!+3))!T$L#Cab!B3!iJ!3!!(`$!%"!JJ#3!)#D!!!iS2rr5!5
jkB""!"4mB!Fd,!!!#N##!(5!r`!!2'""BS$I!!3iBfpbJ,i!!)!H!!3iJ!!!N!$
K!%53!-%!5*!![`!!N!!I!!4)!A0CB!!!!)#"!%3i!2reJ'%!5*!!R`!!N!"r!!5
`(3!!5!!!*#`!!!4!JJ!FJ'%!2)#D!!")!NHeB!!!!%J"THeJ!!!!J!%!H$JK!(#
l3IrSI!J$TNk!!##rSIrdI!J#TM[L@1"mI4Yi1m!!!*!!!3!)P#(qi$L"!%`i!3$
)N!#"!*!!1)!!2*!!J3#-1'%!2*!!!3$%5!5d1B""!"3iB3!m1)%!M%J%Y"'!33!
81!!!!*!!!3"%N!!"!%K)!!#S1'%!2$L"!%3iS3!i5!5q2B""!"4mB!Fe3))!M)J
"!$JS!!!!3))!J$KK!%3iJ3#-5!5cbB""!"4mB!Fe3))!D+KK!-LS(`!!I!-!!%#
#!&L!B3$+J"m!!R`$!!"!JJ")1'%!cMLI!!C)!S**B!!!!&4J"Mp"JJ!`1'%!4%J
%[E@!33!8I'!(08##!"b!B3"%1m!!!B!"!%L3!(d!!*!!(3!%5!!!'$KK!%4)",f
jJ%%!&(aJ"c9"J[p-Im2cH)!"!5Ji)3%JI!J$TVZKrr41J!!J[k(rp(`)!UD3!!%
!#$J!!!#8)IpJN!"K!,JiB3#iJk%"!*!!J3#m1)%!1*!!S3$!N!$"!-53!1%!b*%
"!-b4)3$3N8%!e*JG!!")"+`pJ%%!&(aJ"c9!JJ"`1)%!1$KJ!!")"+YPJ%%!&(a
q'hP"JJ"B1)!!!%J%V&Q!33!8I(mEH8'#!$JmS!J!Ik6VH$M&!3!iS!%!5!5X8B"
"!"4rSqYiIk6VH%J%V&Q!33!8Iq2lH%J%Uh@!33!8Im2cH%J%UfQ!33!8J!%!U$J
K!+#lSIrdI!J$TNk!!#!!!!!!!!!!!!!!!!#rJIr`I!J#TMLL(eKmRL0i1+Arr*!
!!3!)1!!!"(`*!kD8)IaJ1-%!D)#&!!5%"3!)N!#'!!58"J!)3J$rm$N#BY3ii!!
!15)IN!!iS3"FJ)J!!)'*!!!i!3"XN!#"!%3i`!!"J@N!")&*!!JiJ!!#J5N!$)%
)!!53!'%!4$KL(k#4J3"FN@%!B*&"!'54)3"SN3%!5*!!rJ!!N!$q!!53!-%!9*!
!S3"BN!#"!%b3!!%!8%J%UJQ!33!81)%!2%[q8IeJ!!!!I(dEH8##!Y3iBKqd5!5
TkB""!"4mC"YiJ'%!2%J%US'!33!8+!-!!%##!!`lS2815!!!8(aX'hJi`3"!1'!
!!$L!!!!iS!!!5!6CRB""!"4mB"Yi1')Ib(`G!hK)"+QCJ%%!&(aN'hL!B3!m5!5
U-B""!"4mIaYj3))!#$ZJp3iX(3!!3))#9)"K!%"rl2Yi1)%!9$LJ!!!i`!!!11!
!!%J%f8@!33!8I(dEH8'#!0JiBPq!J!-!!&3!"$iX!"!33B!!-)"K!%"rl2Yi1)%
!9$LJ!!!i`!!$11!!!%J%f3Q!33!8I(dEH8##!I")!!#B1'%"M$L"!S`lS2rr5!*
TU@!!!!"8B!Br3B)"d$KK!BamC"Yi5!5U5B""!"3iB3+-I'3EH%J%UMQ!33!81'%
#M%J$UV9J!!!!1!%#M*!!B3"`1'%"M*!!!3"d5!1UR@!!!!!i!3'-N!"K!)#!B3"
!IqclH*!!!3#%1)%!9$LK!%`i`!!#11!!!%J%f('!33!8I(dEH8##!8JiBKrJ5!5
SEB""!"4mC"YiJ'%!2%J%U3@!33!8I(mEH8##!!JlS281,"d!!%##!5JiBQ(81!!
!)(`*!kBiS3#)1)2rr)"N!!5%"!!)N!"P!!58"3!)3J$rm%J%SmQ!33!81i-!Y$K
K!)`iJ!2S1+!!2%J%T@'!33!8L!%!M#J!!!""JJ!N1'%!M$L"!$K)",F9J%%!&%J
%Sif!33!8J!%!1(q!'K5!B3"!IqclH$L#)!3i`3"%1+!!!$MJ!!")"0HPJ%%!&(a
p'hP!JJ#-5!!!-$aJ!!%iJP'F1'2r[cLJ!"ii`!!!5!5U,B""!"4r`r0i5rrk`94
J"Mp!JJ!85!5M*B""!"4m!q"!3B$rb$KL)&K)"+GKJ%%!&(aN'hL!B3!m5!5RqB"
"!"4mE"Yj3B)!+)"K!%!iJ!!)5!6A+B""!"4)!!!81'!!!%J%SD'!33!85rrq((q
MkhL!!31S1#%$S(`)!kDlJIr`6S!!)!!!!!#r3IrSI!J#TMZLBG"mIaYi1+*KcMZ
#@V`l3!!!1m*Bi*!!!3!)1!!!!*3KrA#3!!%!F$KK!'NiJ3"SX!%!DTJ"!'QB(3!
!X!8!!*!!!3#)5rre&5JI!!!lB!!!3B)!+&4J"Mp"JJ!J1(m!!6L!!!")"+@0J%%
!&&4J"Mp"JJ!)1f!!!6J"!+56`3%31+"-3j!!!3%S1)!!)$KJ!!!i!%J!X+%""PG
Q"Mq3!)%"#,"K!3b`!3%13B)%'$L#9Q3iB3%X1+*@B$M#&&5SK!!'J+8!!%J#A+9
J!!!!1'*A3$L!!!!iB`'45!5P'B""!"48B!Br3B)"q)J"!'JS!!!!3B)"l$KLAfD
)!`!!+!!!!%'#!G`i!!!)I!N$TMLK!"3iR[rmJ'3!")3%!!L3!'8!"*3&!!K#!2r
`J'3!"$J"!A53!'8!"+"N!!L`C3!)N!!"!'#!B3!BJ)%!()#K!##!`3!NJ1%!+)%
"!#b")3!`J8%!0%[rqJNl33%8Id66H$KK!A4,rrVCI(X(08##!d!mB("cId66H$K
MEL!i`3"m1+!!#%J%U*Q!33!8I(XEH(pJ"c9!JJ@i2)"09MKNDA-iK'&T1+%!I$N
"!)3i`2rr11!!!%J%Xj'!33!8I(XEH$KK!(a)",2*J%%!&(pJ"c9!JJ9mL!%!D5J
!!!""JJ$)2'"84ArNqhJiBeK81-%!I$LJ!!K)"+JTJ%%!&(aJ"c9!JJ!d2)!Y,6K
K!)3iK#dY1+%!I%J%XdQ!33!8I(XEH(pJ"c9!JJ8S1'%!I%J%Xf'!33!8J2`"k#`
(!!""JJ!XJ0`"j#J'!!""JJ!J2)"696bJ9%8iB3#%1)4#6$LP@&4)"-VpJ%%!&$K
r!!)iJ!!%5!5MGB""!"48B!Br3B)!+$b!58imS'Cc1'%!K$L%6%-iTA-J1-%",$M
J!%C)"-V"J%%!&$KK!)3iJ!!!1+!!F6M!!!%ii2rq13!!!$NJ!!")",+eJ%%!&(a
l'hK)!!(J2'"09MLJ!!!i!fPcN!#K!+SiJf&T1'!!&j!!!3#Q1!!!!V"K!+3iB3"
dN!#"!+k`S3#bN!!"!,53!+%!Z%J%Uj@!33!82'"`FcKMEL!iJ3"d1-%!I$LJ!!K
)"+EjJ%%!&(al'hKrB!Fe3))%'$b!69BiC'Pc1)4KD6LK!(`j!3#%1-$rrcMJ!!"
)",(aJ%%!&(al'hJiB3"m5!5b+B""!"4rB!Fe3))$h)J"!'NS!!!!3B)!b$aJ9%9
rj2Yi1'0B9$M"!(`iS!!)5!5QLB""!"4mB!Fe3))!0$b!,5diB3#%1)3Y,6LK!(a
)",'TJ%%!&(al'hKrB!Fe3))$L$KK!(a)",("J%%!&)$m!HJX"`!!3B)!,)$F!H3
S"J!!3B)!)$b!8e8mS&4&1'%!K$L%3N`iT9K85!6*AB""!"3iI`!#1)!!"%J%SG@
!33!89'!'2d'#!#JmJ%P12+"QFcKK!)3iK%a$1+9c)$M"!5`ii!"'5!6*)B""!"3
mJ'&`1'%!K$L%F'%iS3"m5!6*)B""!"5!B3#!5!5L4B""!"3iB3"m5!6*)B""!"4
mHKYi5!5P4B""!"4mHaYiIf6EH(p&dhJiB3"m5!6*&B""!"56B3%S1'%"!%J%X3@
!33!8I(XEH$Y!!!")!!!BN!"K!5JiB3%!5!5`kB""!"4mHaYiIf!(08##!S!S(`!
!3B)!6)!"!)JS!!!!3B)!%$KK!)4)",#PJ%%!&$Kr!!%iJ!!"5!5JlB""!"48B!B
r3B)#5$KJ!!K)!CBKB!!!!$Kq!!C)!CD&B!!!!$Z"!44rJq0i5!5cPB""!"3lB!!
!5!!!3$aJ!!%iBrrr1)%!P%J%T''!33!89'!'2d'#!##!B3#811!!!)#"!*Jj!!!
!J+%!R)$"!+",rr*K1hX!!ApJ"c3X!!!$3B$r[$KK!(!lB!!!5!5RVB""!"5!B3"
`1!-!!j!!!3"`2'!!!6KMrrmiJ3#81+!!2$M!!!")"+2GJ%%!&&4J"Mp"JJ")+"m
!!%'#!#5!B3#8IiMMH)#"!*Jii3"UJ+%!R)$"!+",rr(Y5!!!))"K!*3ii!!!J)%
!Q$N!!!#!S3#FJ-%!S%[rmFf)(3!!+!!!!%##!43iJ!!!1!!!2*!!J3$)Ii2MH*!
!J3$m1)%!a*!!!3$%5!5S@B""!"4mB!Fe3))!k(pJ"c9!J[pF9d!'2d'#re3iB3"
X5!5QjB""!"5!B3"XJ!%!F(`$!%""J2mi2'"`Fhq%ihJiBfiJ1-%!I$LJ!!K)"+1
KJ%%!&(al'hKrB!Fe3))!H$aJB@8mJ(&e1'0fG$L%DA3iS3"m13%!M$M!rrmii!!
!5!5ZPB""!"4mHaYi1'%!I%J%VXf!33!8If!(08##!#`iB3#-1)!!!$LJ!(%i`!!
!11$rrMN!!!!j)!!!5!5ZLB""!"4mHaYi1'%!M%J%VT'!33!81'%!F%J%TLf!33!
8J'%!F$J$!!13!!%!F%[rrS!S(`!!3B)!+$Kr!!)iJ!!&5!5HYB""!"48B!Br3B)
!%$KJ!'4)!CD*B!!!!+KK!'TmB!Fe3B)!#(al'hJi!!!!Q"i!"RpMfhL!!3+B1#%
#N!"m#!1QZd(rk%k!!##rSIrdI!J#TRap'hKmRb0iN!!"!!L8)Iq`5!5DUB""!"4
)"+kaJ%%!&(aq'hKrSqYi5!5EiB""!"4rSqYiIq6lH$LK!$K)!QlYB!!!!%J%T"f
!33!8I(mEH$L"!$K)"+3PJ%%!&(rMqhKra20i5!5N4B""!"4rirYi5!5N8B""!"5
!!3"B1#%!8,ZKrr4m#!1Q6S!!)!!!!!!!!!!!!!!!!(`)!UBiBQ#%N!!"!!KmJ!F
d9!!)2*3Krm#!B`!!J'-!!(`$!Ujm!!Fd,!$rrd##!"JiJPEiI+-VH%J#G6PJ!!!
!5!!!,$L#9J`FB!&%J)3!!$KM!!+!"!!!I+3VH$LJ!84mB"S85!5GPB""!"3iB!!
!J!%!5$JK!%"m#!1Q6S!!),pKrqam#!+QJ1)2Z(bE)hJl`PEK1q*Kc(bm+hKmh60
iN!!"!!L8)IqJJ'F!!+!(!!53!'%!1$KJ!!#`!3!m5!5L(B""!"3iB!!!5!5L+B"
"!"3iB!!-5!5L0B""!"5SR3!#U(d!"$L%!!8i!rrmI)-(0(`%"c4)"+M9J%%!&+J
I!!"rB`FdI!-!!%'#!$L)(J!!+!!!!%'#!#!iB3"!5!5UlB""!"3iB3!i5!5V+B"
"!"4)!!!31'!!"%J%SHQ!33!8Ii2MH%J%U*f!33!8U"m!!(pM"c4m!`!!3B)!,)J
H!!!S!!!!3B)!&$KK!%")"+VPJ%%!&%J!!"!iB!!!5!5KTB""!"5!!3"S1#%!B,Y
Krqam#!1Q6S!!)!!!!!!!!!!![m(rq(`)!UBiBQ,N1q*Kc*!!!3!)P#(rX)"M!!!
S!`!!3B)!I%J%Q&f!33!85!5XCB""!"5SR`!!I(iEH(b!"c9"J!!`1'!!!,#"!$J
i!2rrX'%!1Rr%mhL`(`!!J'%!1%J%XEQ!33!8U!%!1,!I!!#SI`!!1!!!!,!"!$T
ra20i1!-!!E!I!!#S(`!!X!%!1)"K!$K)",'&J%%!&)!"!&Ji)3"3Zm(rq(`)!kC
1J!!J[X(rf(`)!UBlJPB-I(BEH$L#BF`lSQ#%1m*Lj*!!!3!)1!$rrj3Krf#!I!!
!X!3!!#J$!!""JJ2-J'-!!+J$!!!X!!!!3))!#%J!!lL!(J!!+!!!!%##!j!!1'!
%16L!!!")!P-4B!!!!#J$!!#3!(i!!%##!$L!I!!!5!5NNB""!"5!IJ!!1!!!!*!
!(!!!+!-!!%'#!h")"*U&J%%!&$J!!!#3!"i!!%J!!e`iB!0%5!5NGB""!"4mHaY
i5!5LdB""!"4mB!Fe3),rX$KJ!"K)"+49J%%!&(ar'hK)"++aJ%%!&(aJ"c9!J[q
3!)"m!!#!B`!!U'-!!$J$!!&m'!Fd9`-)2%J%T#'!33!8N!"p!!")"+*pJ%%!&(a
J"c9!J[pFJ(`!!%J%QaQ!33!81b!!!$Y!!!")!!#BJ(`!!$J!!!#!B`!!X!%!3$V
M!!*)!!")1(F"3(p%"c4)"*SPJ%%!&&4J"Mp"JJ!JJ(d!!(mJ"c5SJ3"!9!!)2)"
M!!!l13!"I)-$,UKK!%!kp`&%1!-!!E!"!%#SB3"!1"Mrrh`$!!""J2q`Id!(08#
#!##!I3!!Ib!(0&3!#$b!B`!!1)$rrcXj!!&mJ`-Z1eS!!Ap!"c3X!!!#3B$rC)"
m!!")"*ijJ%%!&(pMfhK)"*U&J%%!&(pMfhK)"*T*J%%!&$M#B)JiS!!!J(X!!$J
!!!'!JJqdN!$$!U#!H`!!N!#M!Tb!H`!!N!#M!T!!J(X!!*!!S`+FJ(X!!*2M!TL
!H`!!N!#$!Sb!H`!!X!-!")"l!!")!8#0B!!!!$KK!'JiJ!!!1+!!!$M!!!!ii!!
!5!5IUB""!"5!I`!!1)%!D)#L$l!i`!!!11!!!$N!!!")!P$"B!!!!)"q!!!iS3"
!1-%!5$MK!'JiJ!!$5!59"B""!"4A!b!fU!%!D(aj"c4m!-S8X!%!E$KK!'!iJ!!
!1+!!!$M!!!%ii!!!5!5I2B""!"5SS3"U1'!!%+L"!'ii!!!!X'%!4(b&)&#!BJP
-N!!"!&#`J3"'5!5YQB""!"53!'%!9)"q!!")"*6*J%%!&$J!!!#!S3"%N!!"!$J
i!3"-I'FEH*!!!3!m1'%!D$L"!'!i`3"313!!!6NJ!!!j3!!!5!5YDB""!"5!B3"
-J'-!!*0M!%5!IJ!!5!58HB""!"5!J3"-5!5SPB""!"5!S3"-I`2$H$L!!!")"+i
*J%%!&)"L$ka)"*8PJ%%!&(aP'hL!IJ!!N!#L&&JiJ!!$5!*S4@!!!!#!IJ!!5!5
8+B""!"3iJ3"B5!580B""!"5!IJ!!5!58%B""!"5SS3"X1-!!!+L"!&ii"3!"I!8
(0%J%PT@!33!89X!'2d'#!"L!IJ!!5!56iB""!"4)"*ECJ%%!&)!"!+Ji)3#JZX(
rf(`)!kC1J!!J!!!!!!!!!!!!!!!!I!J#TML#9Jb3!!%!#(aJ"c3FB!&%P#(q`)#
%!!#!"!!!1)-!3MKK!$KmJ#)85!*Ze@!!!!!iBPDm1+%!1$L#9X5SB`!!J)3!!$M
#@1")"*iYJ%%!&)!"!8Ji)3&!I!J$TNk!!#!!!!!!!!!!!!!!!!"m#!+Q1'*Lj*!
!!3!)P#(r`)"M!!!S!`!!3B)!)%J%Nb@!33!85!5`MB""!"3iBQ(-1!$rrl!$!!#
!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!#rBIrXI!J#TML#B!PmI4Yi1q*@$$Z#BZ5
3!!%!#*3Krk#)"!!!+!!!!%##!5L!(!!!+!!!!%'#!4b!I`!!,"d!!)"M!!#SB`!
!1!-!!A`H"c4!JJ"`1'%!1%J%NiQ!33!8J(`!!%J%NSf!33!85!59KB""!"5!I!!
!5!56bB""!"5!I!!!5!55EB""!"4)"+,PJ%%!&)"m!!")"*9aJ%%!&)"m!!")"**
0J%%!&%J%SYf!33!8J'%!1%J%PFQ!33!81i!!!%J!!(!iBQ#%Ii!(0&3!#$b!B`!
!J'-!!(pM!UjrB!Fd,!$rrd'#!%JFB!&%J*m!!)!%!!!iB`&#Ik6VH(aJ'K4)"*@
9J%%!&&4J"Mp"JJ!J5rrjAApMfhK,rriPI'!(08##!!`iB!!!5rr[G6ZF!!&rJ`F
dIm!(0(`$!!""J2q),"d!!8##!!K,rrjPJ!%!D$JK!'#lBIrXI!J$TNk!!#!!!!!
!!!!!!!!!!!"m#!+Q1+!!)*!!!3!)1!!!!*3Krj!!N!"K!%JiB%a$X'%!2MKK!$L
3!+%!3,!"!%5`J3"'N!!"!'")"+5eJ%%!&)!"!(Ji)3"`I!J$TNk!!#!!!!!![b(
rj(`)!UCmHKYiI*XMH(bm+hJl`!!!N!!"!!L8)Il!L!B!!&3$"Mi`!rrrI!!C%&3
G"Mp"JJ!8I-3cH$KK!0j)!Qa"B!!!!$[K!0kc33##Nq%!IPHJ"Mp!JJ!-1"i!!A`
H"c5c`3#)1'%!E*1"!*a)"*H"J%%!&(aj'hKr)!Fe3))"-)J"!)T8!!Eh3))"*)"
K!)`m!lk`+!"36%##!45c33$B1'%!f$LK!$L6J3$D1)!!!8J%PUf!33!8I(NEH(m
J"c9!JJ$X1!!!,+KK!$L3!!%!2$LK!$`i`3"!1)!!!%J"TB&J!!!!I'!(08##!,5
!!3"%,!!!!8##!+LSB3!i1)!!!6LJ!!")"+"KJ%%!&+L"!$Ji!!!&1'*IP(`*!kD
`Q`!!1+2rr$L"!$b!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%N!!&!!4)"*1TJ%%
!&(aj'hJiB!!!5!5D@B""!"4r3p0iIi6MH(rPqhJi`!!"5!51dB""!"3iJPr!X'3
!!$KJ!!&)"*SYJ%%!&(mMbhK)"*1TJ%%!&$KJ!!&)!!!SU'%!1$XJ!!")!D(CB!!
!!&HJ"Mp!JJ!-Ib!(08'#rTJiB!!!J!%"5$JK!8#l)IrNI!J$TNk!!#!!!!!!!!!
!!,lKrpam#!+Q1i*IrAah'hJlSPE!1m*@ZRbB)hJl)!!!N!!"!!L8)If`1'%!5%J
%N!!9J%%!&$J!!!#B!3"XI`2$H$L!!$T)!QU0B!!!!(ak'hKr3!Fe3B)!6(m%`hJ
iB3"X5!*U3@!!!!!i'[rrQ"J!!$KK!'`iJ!!k5!*U@@!!!!"mB!Fe3)%!#$YDrrp
r400i1+%!E$KJ!!&)!QTjB!!!!$Y!!!!l@J!"1'%!V,0"!E`lB3'f1!$rrj!!B3'
b1'%"S,!"!EC)"*MeJ%%!&(ar'hKri!Fe3))!Y&FJ"Mp!JJ"SI`6$H$KK!+`iS!!
!1-!!!%J%QYQ!33!89'!'2d'#!)bSH`!!IZ5lH$M"!'`iS!!#5rrp%94J"Mp"JJ"
`U(X!!$J!!!+3!"d!!$L!!!#`IJ!!5!'L3@!!!!#BI!!!1'!!!%J!!l#SH`!!U*i
!!(aJ"c4m"!!!3))!0+L"!H*)!5K9B!!!!&4J"Mp"JJ!JU(X!!+L"!H*)!X5pB!!
!!&4J"Mp"JJ!)1eVrrhrJ"c9"J[mB9b!'2d##!-L)(!!!+!!!!%##!,5SRJ!!1'%
!l)#p!!!i`!!!5!*)[@!!!!!iB3$X1+%"0$L!rrp)!D1jB!!!!(aJ"c9!JJ#!L!%
"8P3!"[G"JJ"dJ+%"Q(m%`hLS!3&+1'%!mT!!S3$ZX!%!l%J#D+9J!!!!1'%!l$L
K!63iJ!!!5!'MF@!!!!"mB!Fe3))!1+KK!8Tqj,YiJ+%"C$M"!'a,rr[a9'!'2d'
#!"b!J3&N1'!!!+J"!8U3!*d!!,!H!!")!!+J1b!!!8[rrNJiB!3'1)!!!%J#5)e
J!!!!I(mEH$LK!$Ji`3!m11%!9$L!!!0)")bKJ%%!&)"K!$ar"-0i5!51SB""!"3
iB3#X1)!$k$LJ!"Y)")kpJ%%!&(rMqhJiJ!!%5!*L2@!!!!!iJ3#X5!5SqB""!"4
rirYi5!*,&@!!!!"rirYi5!5-HB""!"4)!Q1aB!!!!(rMqhK)")aPJ%%!&%J%Mef
!33!8Iq2lH%J%MfQ!33!8Iq2lH%J%M%@!33!8I(NEH$L"!%a)")a0J%%!&(aN'hK
r)mYi5!5ERB""!"3iJ3"F1'!!!NJ%Nhf!33!89'!'2d'#!*!!1b%!CS"K!'BiJ3"
%5!5FfB""!"4mB!Fd,!!!!d##!("rirYi5!5,iB""!"5!!3"%I!!B3%##!&Kr)mY
i5!5FfB""!"5!H3!!1+%!3)#"!%4)"*cGJ%%!&(aJ"c3X!!!+3))!,)"K!%!iS2r
rJ*N!!%J%R0@!33!8I'!(0#`!!!T!JJ!-1Z$rp8J!!3!iJ3"F1'!!J8J%NYQ!33!
89'!'2d'#rdL!!3"HIf6EH$KJ!!#`'`!!5!%QJ@!!!!"mB!Fe3B)!Y$KK!+`i!!!
!N!"K!E)iB3'JX!%"[%J%PC@!33!8I'!(08'#!"LSH`!!U)%"iNJ#`I9J!!!!5rr
qm(m%`hJiB3#X1+!!!$M!!!")"*GaJ%%!&&4J"Mp"JJ")U(X!!(lNZhJi`3"X1+!
!!N[rqDP8B!Br3B)!,+Kl!!!i!!!#N!!G!!!iJ!!!X(i!!%J"RYPJ!!!!Q(`!!$V
J!!")!!!XU(X!!+L"!H*)!X&pB!!!!%[rrRLSJ3(L1'"rrdJ#`@PJ!!!!5rrqC(r
MqhK)")h"J%%!&)"K!%K)")hpJ%%!&(lMZhL!!3*B1#%#8,VKrpam#!1Q6S!!)!!
!!!!!!!!!!!!!!,fKrl4m#!+Q1-*@iAah'hJl`PDb1q*9k(b1)hJlS!!!1i!!!$Q
J!!#3!!%!#*3Kqa#)"J!!X+%&%LJ!!!""JJ!S5!5JbB""!"5!B`!!J'-!&S"M!!#
S!`!J,!!!#%'!!!JjS!!"9D!'2TJ""(aqilYiIF4cH%[rqRf`B3!kU'%!1RaJ"c9
"JJ!)5!!D6$aJ!!)iBi!!5!54,B""!"4mHKYi5!59@B""!"5`B3!kU!%!1L`!!!"
!JKR31!!!,*!!!3"-1+%!6$M"!(5SG`!!1)!!!%J"RU&J!!!!X'%!1UJ"!$SX!!!
!3))!))"K!(3m!kbU+!"$9%'#!"`m!l'U+!"$9%'#!"!i!2rrX!%!1NJ!'AJi!!"
NJ)%!Q*!!!3"-1+%!6$M"!+#SG`!!5!'H5@!!!!#`B3!kU!%!1L`!!!"!JJ!8J'%
!S$`$[+SS!%083B)!%$J!rrq`!3!k5!!C,)"K!*L!!3#S1'-!C#`!!!#3!'%!5%'
#!$#SG`!!IZ5lH)$"!+3iS3")X'%%INJ"*1PJ!!!!X'%!1UJ"!$SX!!!!3))Bk)"
r!!")"*!!hB""!"3iBPAXU!%!X)#$!!#!I`!!I!3#&"b!!3j)"*3&J%%!&%J%P#f
!33!8X'%!1S"r!!")")c0J%%!&+J"!$SX!!!!3))BQ+J"!,#!h`!!1'*9l"b!!3k
!!`!!J'B!!"bJ!3jmJb)8N!#"!%#!CJ!!5!5-!B""!"3iBPrF1!!!!$L!!!#3!!-
!!$KJ!!")!QE0B!!!!$bJ4PD!B3")2)"%9MLP3e3i"%08N!#K!U4r4G0iN!!"!J3
i`3!mU*F!!%J"'KeJ!!!!Nd%!3$XJ!!#!I`!!1f!!!)'M!!")!!!NS)d!X&FJ"$j
8J`3qI!-!3%#"!!KmQ50i1Dd"$MYl!!%iBPAXIf!(0)#$!!"m!#!!3B$rd$KL8Db
S!3#`J'-!!(`%!K3iJPAX+!-!!*!!"!!!3B)!%%J%MH'!33!89(h4[MJ!!!'`!35
!1f!!!%J!#[`i!!!%J)%!5*!!!3"-IdI6H$LK!%bSG`!!1-%!4$N"!%!j)3!m5!%
Ck@!!!!#`B3!kJ'%!5+J"!$SiB`!%,!!!!*!!B3")3))!))"K!%3m!lQU+!"$9%'
#!"`m!lZU+!"$9%'#!"!i!2rrX!%!1NJ!&b3m!lQU+!"$9%##!P`i!!$#J)%!5*!
!!3"-IdI6H$LK!%bSG`!!1-%#U$N"!%!j)3!m5!%CE@!!!!#`B3!kU!%!1L`!!!"
!JKEF1'%#T$L!!-C)!Q90B!!!!)#K!V#!!3,8N!#K"*!!L+%#Vj!!!32ZJ!%%N!#
3!+%%K)#K!V53!!%$qS!"")53!+%%L)#K!ekB!33mJ!%%L*!!S35-J)%!5$LLAp`
ka!$#U@%$"*!!C3!!1+!!!)UK!aiiJ!!!JS%#l)*K![3iB3-mJN%#k))K![##!3,
NJH%#i)("![b"J3-!U8%$"S%K!`L"!3--J1%$%)$"!Y#$!3,BJD%#h*!!!32qJ!%
%M*,"!%L5S3"-NS%$cT*K!p+5332'NL%$bT)"!l+4i31ZNF%$YT'"!lkCB33SX+%
$a*&"!pD4)32DN3%$hT!!i32LN!$"!qU6!32bND%$pT!!!33#5!5*1B""!"5!`3#
-I(JEH)#K!X3jS!!!J)%#`)!"!XJX"J!"LF%$')RK!aQU!3,-JL%#q+*"!a5#B3+
SSS%$&U+K!Ub+`3+ZJB%$))&K!b5"33-SJ5%$,)N"!eb)i3+mJ-%$BS"K!fD3!+%
%%T!!J331N!!"""DC`33UQH%%+l)"""UCS33RNL%$jV*"""b5B33LXS%%(V+K"##
D`33QNB%%,*&K"$#4333dN5%%1*N""'UBi34`N!$""(+3!'%%GN##!"3iB32k1)!
!"dJ%M@Q!33!81'%$qML!!!4)")KKJ%%!&&4J"Mp"JJ!3U!%%J*!!!32@5!!!()J
""#SS!!!!3))!%)!"!pCm!!FdX!%%J)!"!cL3!!%%CNJ!!C`i!!#FJ)%!5*!!!3"
-IdI6H$LK!%bSG`!!1-%##$N"!%!j)3!m5!%A&@!!!!#`B3!kU!%!1L`!!!"!JK5
%1'%#"$L!!+")!Q,eB!!!!)#"!%Ji`!!!U1%#6$QN!*bS!35!LB%#9$L"!qU"B3)
BJ8%#()%K!L5"!3)J1+*Ih*'K!%L3!'8!!$KK!JJiS!!3NB%!6*&K!kk4331bN5%
$YT%"!lkBi33SX-%$a*!!`32DN!!"!pC)")HKJ%%!&)#"!LJi`!!!J+%#,$KK!RL
!!3+BN!#"!rSiJ!!!Q-%%2*!!S32qN!!""!*)")G"J%%!&)$K!MamH"Yi1U!!!)$
"!ML!S3*!J)%#4$V!!"#)!3*1LS%#6i*K!M5L33*)SL%#5U)"!PD*i3*9JF%#A)'
K!Q#"J3*NJ@%#D)P"!PQ*)3*DJ3%#R)"K!U#3!1%%%T!!`331N!#K""D3!)%$hTJ
""#UDJ33VQX%%*j+K!qD5B33LXN%%(,)K""kb!33JQH%%*T(""#b4S33`NB%%0*&
K"$LC334UQ5%%F*%""(+3!'%%GT+K"'DJB33FS!%%(Raj'K3iB`!"+!!!!,"K""a
"JJ!3I(N#&$J$!!'`!33HS!%%)#J!!!""JJ!3I(N#&$J$!!'`!33JJ'%%CLJ$!!"
"JJ"-9'#%2R`%!hK8B)3r9'!%2R`&!hK"JJ!3I(NL&$J$!!&8"!3q9+!%2d'#!""
mH5S81!-!!93&"$j8Ji!H9+!%2R`$!K53!!%%CMKK"$`iJ!!"5!5&lB""!"48B!B
r3B)!'$JC!!'!B32Q9!!%2R`$!K53!!%$jS!"!%`jS3%&J)%!5(fQDhLB!3%%IdI
6H+Kh!!!iS3"-13%!3$NK!$a)!49CB!!!!,"K!$SiB30X1)%""%J#A69J!!!!1'%
$qML!!!4)")9pJ%%!&&4J"Mp"JJ2)J'%!5(p)dhL!!3"-1-%!6)LK!apmJ`)8N!#
"!%Jii3!k15%!3+Kh!!!j33!m5!%@H@!!!!#S!3!kN!"K"!SX!!!!3))4b)J""#X
S!!!43B%$H$KL)'a8!"!kI'-!,RaT!kC1J!3JJ'%!5(p)dhL!!3"-1-%!6)#K!r4
mJ`)8N!#"!%Jii3!k15%!3+Kh!!!j33!m5!%@&@!!!!#S!3!kN!"K!r3X!!!!3))
4C%J!!ab!B3")IdM6H)!"!%`i`3"-J+%$p(b$!K53!)%!5$MK!$Sj)3"!U(F!!$P
"!$a)!4A0B!!!!+J"!$U3!'%$p#`!!!"!JK%FJ)%!5$J!!!'!B3"-IdI6H$LK!%a
mK"S8N!!"!%`i`3%%N!#"!%Jj!3"!15%!2+Kh!!")!43&B!!!!,"K!$US!3!k,!!
!!%##%05)!3%%IDCVH)#"!%Kr4p0iN!!"!%`iS3"-U(F!!$N"!%!j)3!m5!%6b@!
!!!#`B3!kU!%!1L`!!!"!JK#BL'%""#J$!"p"J4#-1!-!!C!!!3"-5!!#2)#"!%J
i!!!"J'%!6(p(dhJiS3"-I)3D&*!!!3"-1-%""*!!J3")13%!3$NK!$bSG`!!5!%
6D@!!!!#`B3!kU!%!1L`!!!"!JK!iL!%""(fQDhL!J3")IdI6H*!!!3"-1+%!6+K
h!!!j!3"!15%!2%J"%beJ!!!!X'%!1UJ"!$SX!!!!3))2r)KK!33S!`!I3B%2m$J
$!!'3!!%!6%J!!D#!B3")IdM6H)!"!%`i`3"-J+%$kRb$!K53!)%!5$MK!$Sj)3"
!U(F!!$P"!$a)!444B!!!!+J"!$U3!'%$kL`!!!"!JJqJJ'%!5(p)dhL!!3"-1-%
!6)#K!qjmJ`)8N!#"!%Jii3!k15%!3+Kh!!!j33!m5!%8$@!!!!#S!3!kN!"K!qi
X!!!!3))2A)"K!%Kr500iJ!%!6$M"!%b!S32dI)-#&*!!J3")11%!1MNK!%#SG`!
!18%!2%J"%mPJ!!!!U!%!1T!!B32d,!!!!%##$aK)!!$3J'%!5(p)dhL!!3"-1-%
!6)#K"(*mJ`)8N!#"!%Jii3!k15%!3+Kh!!!j33!m5!%6J@!!!!#S!3!kN!"K"()
X!!!!3))1d)"K!%Kr500iJ!%!6$M"!%b!S34fI)-#&*!!J3")11%!1MNK!%#SG`!
!18%!2%J"%ceJ!!!!U!%!1T!!B34f,!!!!%##$Sb!B3")IdM6H)!"!%`i`3"-J+%
$p(b$!K53!)%!5$MK!$Sj)3"!U(F!!$P"!$a)!4,jB!!!!+J"!$U3!'%$p#`!!!"
!JJj)1'%$M6L"!34)!PP*B!!!!)J""#FiB2rrN!"K"'`S!!!!3B)!$)R"!P0)!!!
)LF%$A5`1!!""JJ$-J!%!6(fQDhL!B3")IdI6H*R"!34mJ`)8N!#"!%JiS3"-13%
!3*("!%`j)3!mU(F!!%J"%2PJ!!!!X'%!1UJ"!$SX!!!!3))0b)J"!33S!!!r3B%
0[$KL8Db4`3"-J'-!!#J$!!"!JJ!F1'!!3%J%L2f!33!81)*4V*!!C!!!5!!!&$J
G!!&8"$!b5!5)bB""!"4)")MaJ%%!&(aJ"c9!JJ!X1'*4V&HJ-$)iJ3%%J'-!!)"
M!!"mB`)85!*BB@!!!!#6S34X1ld!!6QK"$jpSfYi1)!!)%J#[39J!!!!9`!'2d'
#!#4pSfYi1)!!!%J%KAf!33!8U)%&%RfMDhK)")9YJ%%!&$KLAm"rB!FdJ*m!!+L
M!!#SB385X+%$`T!!B31k('!"$S#%!!!i!!!KI+3D&(`*!kBiTIrm1)%$D)"N!!5
%"!!)N!"P!!58"3!)3J$rm)!%!!3lH`!"N!!&!!5J"!!)X!8!#)"K!%L!!3"-I!-
#&*!!!3")U!%!X(pM"c4m!`!!3B$dr)#"!*3X"!!!3B)!)$KLApb!!`!!I!3!3%'
#!"!i!2rrX!%!1NJ!$'4)"(rGJ%%!&$J!!!D!J3")N!!"!%amEKYiIdI6H+Kh!!!
iS3"-1-%!B$N"!%!j)3!m5!%1V@!!!!#`B3!kU!%!1L`!!!"!JJ`FJ'%!B$`$Vlm
S!%0,3))-$)"K!%JlB!!!J!%!6(`$!K53!!%!5%J!!TLSG`!!IdE6H$L"!%JiS3%
%11%!3$N"!$a)!3qeB!!!!,"K!$US!3!k,!!!!%###m5SG`!!IdE6H$L"!%JiS3%
%11%!3$N"!$a)!3q&B!!!!,"K!$US!3!k,!!!!%###j5SG`!!IdE6H$L"!%JiS3%
%11%!3$N"!$a)!3p9B!!!!,"K!$US!3!k,!!!!%###f3i!!!+J)%!5*!!!3"-IdI
6H$LK!%bSG`!!1-%""$N"!%!j)3!m5!%0Z@!!!!#`B3!kU!%!1L`!!!"!JJXSJ)%
!5$J!!!+!B3"-IdI6H$LK!%amK"S8N!!"!%`i`3!iN!#"!%Jj!3"!15%!2+Kh!!"
)!3eaB!!!!,"K!$US!3!k,!!!!%###Z#!B3")IdE6H)!"!%`iJ3")1+%""(`$!K5
3!!%!5$MK!%!j!3!mU(F!!%J"$T&J!!!!X'%!1UJ"!$SX!!!!3))+S+Kh!!"r4Y0
i1)%!5$LK!33ii3"!13%!2%J"$Q&J!!!!X'%!1UJ"!$SX!!!!3))+F$J!!!L!J3"
)N!!"!%ar4p0i1+%!6+Kh!!!i`3%%13%!3$NK!$a)!3c&B!!!!,"K!$US!3!k,!!
!!%###M5!J3")1!!!!B"K!%ar4p0i1+%!6(b%'K53!!%!6$M"!353!)%!5$N"!%!
j)3!mU(F!!%J"$(eJ!!!!X'%!1UJ"!$SX!!!!3))*l)#"!%Ji!!#!J'%!6(p(dhJ
iS3"-I)3D&*!!!3"-1-%""*!!J3")13%!3$NK!$bSG`!!5!%-0@!!!!#`B3!kU!%
!1L`!!!"!JJQNJ'%!5(p'dhL!!3"-1)%!5$LK!34m!`)8N!!"!%Jii3"!13%!2+K
h!!")!3e9B!!!!,"K!$US!3!k,!!!!%###@3lH`!"U!%!C(pM"c4m!`!!3B$pB$J
!!!b!J3")N!!"!%ar4p0i1+%!6+Kh!!!i`3"S13%!3$NK!$a)!3ZPB!!!!,"K!$U
S!3!k,!!!!%###45!B3"S2!1p[LJ!FQ4!JJN%U!%!E$KJ!!#!J3"-J+%!5#`!!!+
3!'%!6(aP)K53!'%!5%'#!$"!J!!3,!!!!8#!!"4)!!!m,!!!"%#!!$4)!!!NU!%
!FK`!!"D3!!%!6%J!!##S!3"`(!!!&T!!!3"-5!!!%+J"!'iF!!!@N!!"!%b!B3"
-,!-!!%'#!)4)")2PJ%%!&(am'hK)")2aJ%%!&,"K!$US!3!k,!!!!%###'KrJq0
i5!4mKB""!"5SG`!!IdI6H)#"!%JiS3"-J0`!!$N"!%!j)3!m5!%+Z@!!!!#`B3!
kU!%!1L`!!!"!JJJSJ)%!5(q$ihL!!3"-I!3#&*!!!3")5!5!$B""!"3i!!!'J)%
!5*!!!3"-IdI6H$LK!%bSG`!!1-%!@$N"!%!j)3!m5!%+B@!!!!#`B3!kU!%!1L`
!!!"!JJI3J'%!@$`$[,%S!%4&3))(`+J"!&b!J3")J'%!6#`!!!"m""S8N!!"!%K
"JJ$X1'*4b)"M!!")"(q9J%%!&+LH!!#S!3"F1'*4b(`%!K3FJ!!iJ'-!!%J%JVf
!33!85!5#jB""!"5`B3!kU!%!1L`!!!"!JJGF1'*4b$YJ!!#S(J!!J'-!!"`!!$L
!B`!!ID-#&%J!!"3i!!!!Q!d!!$QY!$JlH`!"U!%!A(pM"c4m!`!!3B$rj)"r!!!
lB!!!JD-!!%J!!%5!$3#Q+!!!!%##!"#!$3#U+!!!!%'#!#5!E3#QU"i!!(aJ"$#
3!!d!TS"Y!+US(J!!I'!%-*!!$3#U1Dd"$MYl!!'S!3#`If-(0(`$!!""J2qd1'*
4b)"M!!")"(V9J%%!&$KL8FJlB!!!U"i!!)"M!!!F!!!iJ'-!!(fM!K4)!!(m1!!
!!B#"!%L3!!%!6(p(dhJiS3"-U(F!!$M"!33j!3"!15%!2%J"#1&J!!!!X'%!1UJ
"!$SX!!!!3))'8)J"!35!B3")9!!'2cL$!!'3!)%!5%'#!%L3!!%!6(p(dhJiS3"
-U(F!!$M"!38j!3"!15%!2%J"#*9J!!!!X'%!1UJ"!$SX!!!!3))'")"K!%L!!3"
-I!-#&*!!!3")ID0VH$L"!34)!P$eB!!!!$J!!!L!J3")N!!"!%ar4p0i1+%!6+K
h!!!ic3!J13%!3$NK!$a)!3JjB!!!!,"K!$US!3!k,!!!!%##"DL!J3")1!!!")"
K!%ar4p0i1+%!6(b%'K53!!%!6$M0!#L3!)%!5$N"!%!j)3!mU(F!!%J""r&J!!!
!X'%!1UJ"!$SX!!!!3))&B)#"!%Ji!!!%J'%!6(p(dhJiS3"-I)3D&*!!!3"-1-d
!,*!!J3")13%!3$NK!$bSG`!!5!%(U@!!!!#`B3!kU!%!1L`!!!"!JJ8B1'*I`)#
K!%LSB`!!J)%!6(aJ"c3X!2rrI!8L&*!!!3")3B)!$%J%H,@!33!81H!!!%J!!$4
pj!Fd9)!31RaY!K5!B`!J+!-!!%'#!"K8J!JmI)d#&+L%!#K)!K@jB!!!!$R[!!&
pi!Fd,!!!!N'!rmKp`h0i5!4iCB""!"3jV3!i1hX!!DJ"!&arB`FdI!-!!%'!rI`
iBP()J'-!!%J%I(@!33!8U*i!!$J!!!DSB3"FIdI6H*!!!3"-I!3D&)#"!%L`(J!
!1+%!6$M"!&#SG`!!13%!3$NK!$a)!3DjB!!!!,"K!$US!3!k,!!!!%##"#L!B3"
32!1fXLJ!4%j"JJ!31!!!!,!"!&4)!!!8J'%!5)!"!%am!`)8N!!"!%LS!3"8,!!
!!%'#!j3iBPE)J)%!L+KM!!#`J3"8I'!(08'#!0#SJ3"8I'!(0$KL9JKm"!)8()!
!@S"M!!")"(m"J%%!&$KL9JLSJ3"8J+-!!$KL9XJFK!"DU!-!!)"P!!!FS!"DI)-
L&%J%Gb@!33!8U)%!X)"r!!"mJ!Fd(!!"$S"M!!"mQb0iID-#&%J!!%b!V3"U1'd
!MS!"!)JiJ!!%I!8#&*!!$3"U5!4fYB""!"48B!Br3))!()KY!,iS!`!!3B)!%)!
"!)Km!`)8Q!d![MQY!3ilH`!"1'*9l)!$!!"rB`FdI!-!!%'!rkK)!!!FU!%!9"a
J!&T)"(jGJ%%!&$L#9JL3!'3!!%J%IQ@!33!8X'%!1UJ"!$SX!!!!3))#h$KL9XL
S!3"8U)-!!$KL9JKm"!)81)*@b)"M!!#`"!!!5!4fhB""!"3iBPB)1f!!!)"M!!#
"S`!!5!!#*$J!!!'!J3")N!!"!%ar4p0i1+%!6+Kh!!!i`3%%13%!3$NK!$a)!36
eB!!!!,"K!$US!3!k,!!!!%##!Q5)!3%%J'%!5&3!"MmiJ`!"N!#"!%K"JJ")N!!
"!%ar4p0i1+%!6+Kh!!!i`3%&13%!3$NK!$a)!35TB!!!!,"K!$US!3!k,!!!!%#
#!KL!B3")J!%!6(`$!K53!!%!5(fMDhJiJ3%%5!*0#@!!!!!i!!!%J)%!5*!!!3"
-IdI6H$LK!%bSG`!!1-d!)$N"!%!j)3!m5!%%6@!!!!#`B3!kU!%!1L`!!!"!JJ'
mJ)%!5$J!!!5!B3"-IdI6H$LK!%amK"S8N!!"!%`ic3!NN!#"!%Jj!3"!15%!2+K
h!!")!33&B!!!!,"K!$US!3!k,!!!!%##!A5!J3")1!!!!S"K!%ar4p0i1+%!6(b
%'K53!!%!6$M0!#L3!)%!5$N"!%!j)3!mU(F!!%J"!leJ!!!!X'%!1UJ"!$SX!!!
!3))",)#K!%KrB`FdJ)%!6$J$!!'!B3#!I)8L&*!!J3")N!"Y!%k!B3"mN!"Y!&+
3!!d!9UL"!'`X"!!#3))!&$KL8ELS!`!%I!3!!%'#!"!i!!!!N!!0!%T)!!"81'*
I`+KM!!"mB!Fd,!$rrd'#!!a)"(5&J%%!&(pJ"c5!I!!!(!!!&SLK"(amJ`)8U'3
!"UL%!!4)!RdjB!!!!*!!E3"+IF0cH%J%G&'!33!81Dd!@MYl!!'S!3"8If-(0(`
$!!""J2h81'*@#)"M!!")"(KKJ%%!&$KLAm!i!!!!X!%!1UKM!!")"(34J%%!&+L
K!,!iB!!!U-%!9$L!!!!ii!!!5!$f(@!!!!"p`h0i5!4ckB""!"3iJQ!BJ!%!L+K
N!!"m!`)8X!3!!%J"!,9J!!!!J!%!U#`!!!""JJ!FU(F!!$L!!!")!JqTB!!!!+J
""(k`&`!!+"`!!%'#!""rJq0i5!4maB""!"3S'J!!3B)!%(p$dhK)"(FTJ%%!&+K
K!$U!!36i1#%%m,QKrl4m#!1Q6S!!)!!!!!!!!!!![H(r[(`)!UCmHaYi1H*A3$V
#8E!kiP'dI*`MH$X#9HJiB!)!1b*@ZMY#Am#3!!%!#*3KrR")"(UpJ%%!&)#A!!"
mG4Yi1S!!!))%!!!l`!!!1k!!!$T!!!!li!!!5!!"F)J3!9iS!!!!3B)"A&H!"Mp
!JJ!3L"!"@5J!!!&!JJ&)L"!!3#J!!!G"J!%m1'%!2$L3!!"!5!*+$@!!!!!i!!!
&1))JY*J"!$`iB3!m5!**T@!!!!"8B!Br3B)"$)J3!%!iS3!m1'!!!CJ"!$`iJ!!
&5!*+3@!!!!!iB3!m1)!!$8J#5I&J!!!!I'!(08'#!0Ji!rrr1)*IrCJ"!$`iB3!
iLL3!!$L"!$bUH3!!L,!"9d[rj!&mIKYiIm!(08##!)3iJQ!8U(X!!+J%!!"mC!F
dI!3!!%'#!%")!B"TB!!!!&BJ"Mp"JJ!`U(N!!(jJ"c4m!`!!3B)!)#J9!!""JJ!
BIk!(0)"e!!"8!!JmIQ-$,MZp!!'!P`!!Iq!(0"aJ""DS!3!iJ)3!!,!E!!"q""S
81!!!!*J3!9ik3!!"5!!!+(r!"c3X!2re3))!1(rJ"c5!G`!!(!!%&S"M!!"q!`)
81m!!!$S3""Blr`!"1'*@Y(rN"c5S!`!!I!3!!%'!rS4@3!Br3B)"l(r!"c9!JJ(
N1'!!!$L!!!",rPKjB!!!!)"i!!!k!!!!1L$rri#M!!#Vj3"@5!!!D$L#9XbSC3"
@U!3!!(aN"c4m"!!!3B)!B(rJ"c4m"!!!3B)!2(iJ"c4m"!!!3B)!+#`%rrpmF4Y
i3B)!(%J%Gkf!33!8J(J!!"`3!3k!B`!!I+-#&$J!rrq`"3"@1K!!!6LP!3iiBPA
XJ!-!!(`3!!""J2q3!(qJ"c9"JJ"S1q!!!%J!!&"ri!FdJ(8!!&3!#$aqB`+ZIQ1
EH%J#T)&J!!!!I(%EH(jNQhJiB!!!5!52$B""!"4mB!Fe3))!&(iMLhJiJ!!!5!+
Mp@!!!!!lr`!"Iq-(0(qJ"c4m!`!!3B$rU+Lk!!!iB!!"1)!!!%J#$NeJ!!!!5!4
`"B""!"4mB"YiU(S!!(`I!hK)"(!jJ%%!&$KJ!!!iJ!!"1+!!!$M!!!!ii!!!5!$
b4@!!!!"rirYi5!4`%B""!"3iBPCNUrS!!+KM!!C)!NBPB!!!!,"K!$JiBPDZU)%
!1+J$!!"mJ`FdI!-!!%'!!!`i!!!!X!%!1$L#9ZJiS!!"U!%!1(q$ihLBT!!!J*B
!!"`!!'5!K!!!1+!!!(b%!K5!K!")1-!!!8J#8FPJ!!!!XrS!!(ad'hK)!R6TB!!
!!#J9!!""JJ!3IU1VH%J%H+f!33!8+"3!!%'#!*5S!3!iJ(B!!"`!!'5!B`!!I'-
#&)!$!%4m&!"!3)%!G$L!!!!iS!!!1-!!!%J%EAQ!33!8L!m!M5J!!!9"JJ!F1'm
!MML!!!")"'l&J%%!&&4J"Mp"JJ!J1'!$pML!!r%iS!!T1-!!!%J#1BeJ!!!!5!!
!($KJ!rBiJ!2a1+!!%6M!!!")!MPaB!!!!$[!rpjr`r0iJ!%"Q$JK!C!!I!J$TVR
Krla1J!!J!!!!!!!!!!!!!!!![i(rm(`)!UCmI"YjI*dMH(bq+hL3!!%!#*3Krl"
"JJ"35!4a#B""!"4mI`Fd,"m!rd#"!!Jli!$rJ(`!!$LG!!&rj3Fd5!4Z4B""!"3
S(J!!Qrd!!%'#!$"rSqYi5!5"VB""!"5`IJ!!5!!!(#JH!!""JJ!-1!!!!,!H!!!
i!!!!Q"d!!)!"!&Ji)3"3Zi(rm(`)!kC1J!!J!!!!!!!!!!#r`IriI!J#TRaq'hJ
iRJ!'1q!!!*!!!3!)P#(r%$KK!$K)!N9"B!!!!$J"!$L3!!%!LMJ!!!!iB3"iU*i
!!,#"!)k`!3#8J"i!!T!!!3#S5!4`KB""!"4mB!Fe3))!'+!"!+"8!`3JI!-!d(`
!'(K8(`rqIq2lH)!"!2Ji)3$`I!J$TV["rrK1J!!J!!!!!!!!!!#r`IriI!J#TRa
q'hJiRJ!'1q!!!*!!!3!)P#(r%$KK!$K)!N5aB!!!!$J"!$L3!!%!LMJ!!!#SIJ!
!X'%!MV!"!*5!(J!#N!!"!+JiB3"i5!4[pB""!"4mB!Fe3))!5)J"!$NiB!!!+!!
!,N'#!"#J!3#J9!!%Bd#"!!JiB!!"9(m'2d##!##!B3$F,!-!!N#"!"3i!2rrN!"
K!+L`!3#85rrrV(rMqhL!!3$i1#%!m(`)!kDl`Iri6S!!)!!!!!!!!!!![k(rp(`
)!UCmRL0iI(dEH(r$mhJli!!!N!!"!!L8)IqJ5!+ad@!!!!"8B!Br3B)!i(qMkhK
,rrjp9'!'2d'#!"arSqYi1+%!16M"!$JiJ!!"5!56BB""!"3iBPMJ1!!!#(`*!kB
ihIrm112rr)"Q!!5%"J!)N!"R!!58"`!)3J$rm)!'!!3iJ3!m1'*4V$LJ!!L3!!F
!")"M!!#J"J!)X!F!#)!H!3#!B`!!9!!`-RaM!K4)"'[TJ%%!&$KK!$iiJ!!&5!4
VUB""!"48B!Br3B)!%$KJ!'4)!@(pB!!!!$KK!$a,rm@4B!!!!$L#BG"mIaYiL!3
!!#J!!!""JJ!8Iq!(08##!!`iBQ(1Uq-!!(rMqhL!!3"S1#%!B(`)!kDlSIrd6S!
!)!!!!!!!!!!!!!!!!,qKrr4m#!+Q1+!!!(bG)hJi`rrmN!!"!!Ji!!!)I!N$TT3
Kr@#`S3!k11%!2)"Q!!5%"J!)N!"R!!58"`!)3J$rm)#'!!3i!!!JI!N$TMKLBqL
3!)F!"$LK!B5J"J!)1)2rr,!(!!L,h3$qJ'3!")3%!!L3!'8!"*3&!!K#!2r`1'*
Lk$J!!#"m#31Q1+%!K$L$rrb!C!!%K!3!#*!!C3!%P!8!#%)!rr#!I3%'1)%"L$L
J!!",rr`aJ(d"#ML"!)L,i3')1+!!!%[rr"er`!FdLm%!L#`!!!4"JJ0J3)!!(#`
!!!*"JJ&)3)!"d#`!!!&!J!!B5!!(h#`!!!C"JJC%3)!(d%J!",4r`!Fe3))!$$J
!rmk`!3!kU!%!1L`!!!"!JJHi1'%!3$LK!$JiJ!!$5!4XPB""!"5`B3!kU!%!1L`
!!!"!JJH8U'%!1$L"!$a)"(CPJ%%!&,"K!$US!3!k,!!!!%##!,L!B3!mIm!(0$L
"!$TmB`)85!54RB""!"5S!3!kI(dEH#`!!!"!JJ#3!%J%DQf!33!8J"d!!(rH"c5
SB3!i1+%!2(c!mK3iJ!!!5!&l&@!!!!#`B3!kU!%!1L`!!!"!JJ"!J*d!!(r&mhJ
iB3#*5!4TQB""!"4rSqYi5!4X,B""!"4mC4YiU'%!1)$G!!!iJ!!!5!&l,@!!!!#
`B3!kIk2VH%J%EFf!33!8Ik2VH%J%FVQ!33!8U'%!1%J"Gm9J!!!!5!!'X(r!"c9
!JJ!-1!$rcV!"!$US!3!k,!!!!%##"T3iB3"!1+%!1$L!!!0)"'YaJ%%!&,"K!$U
S!3!k,!!!!%##"R#SB3!i1)%!2%J%G8'!33!8X'%!1UJ"!$SX!!!!3))!)+KK!$K
ra3FdJ)%!2$M"!)P)!AU*B!!!!,"K!$USB3!i5!&h1@!!!!")!!BNIq!(08##!!`
i!2r1X!%!1UJ"!$SX!!!!3))'#$KK!%!iS3!i1)!!!dJ%DZ@!33!8X'%!1UJ"!$S
X!!!!3))&j+KK!$JiJ3!m5!4dYB""!"5`B3!kU!%!1L`!!!"!JJ%8J'%!2$L"!$T
)")reJ%%!&+J"!$TmI4Yi,!!!!%##!24)"'M&J%%!&+KK!$JiS3!mJ0d!!$L!!!"
)!APeB!!!!,"K!$TrSqYi5!4XGB""!"5S!3!k,!!!!%##!+b)`3')Ik2VH$LK!BN
ii3#*1)!!!$N!!!")"'TTJ%%!&#`$!!"!J!!-1!$i&V!"!$US!3!k,!!!!%##!("
rSqYi5!4S5B""!"4rSqYi5!4U6B""!"4mC4YiU'%!1)$G!!!iJ!!!5!&j6@!!!!#
`B3!kU!%!1L`!!!"!JJ!NIk2VH%J%DKQ!33!8I'3EH+KK!$K)")mTJ%%!&,"K!$T
rSqYi5!4V`B""!"4rSqYi5!4`VB""!"5SB3!i5!&eZ@!!!!")!!5NIq!(08##!!`
i!2r1X!%!1Rr!"c9!JJ!-1!$rcV!"!$US!3!k,!!!!%##"(JiB3"!1+%!1$L!!!0
)"'P9J%%!&,"K!$US!3!k,!!!!%##"&5SB3!i1)%!2%J%Fb@!33!8X'%!1UJ"!$S
X!!!!3))"")"K!$`iJ3!k5!51CB""!"5S!3!kI(dEH#`!!!"!JJ$N5!4R0B""!"5
SB3!i1+%!2)$G!!!iJ!!!5!&hj@!!!!#`B3!kIk2VH%J%DZ@!33!8U!%!1L`!!!"
!JJ#FL-%"L(qMkhJiS3'*1)!!!$MJ!!!j!!!!5!4SfB""!"4mC"Yj3)!!$$J!q"D
`!3!kU!%!1L`!!!"!JJ"JL3%!L(qMkhJii3#*1+!!!$M!!!")"'LKJ%%!&(qMkhK
)"'DGJ%%!&(qMkhK)"'LKJ%%!&(aP'hLSB3!iJ0d!!$L!!!")!AHKB!!!!,"K!$T
rSqYi5!4U3B""!"4rSqYi5!4[,B""!"5SB3!i5!&d1@!!!!")!!-NIq!(08##!!`
i!2r1X!%!1Rr!"c9!JJ!-1!$rcV!"!$US!3!k,!!!!%##![JiB3"!1+%!1$L!!!0
)"'I9J%%!&,"K!$US!3!k,!!!!%##!Y5SB3!i1)%!2%J%FD@!33!8X'%!1UJ"!$S
X!!!!3))"$)"K!$`iJ3!k5!5-jB""!"5S!3!kI(dEH#`!!!"!JJ$X5!4PYB""!"5
SB3!i1+%!2)$G!!!iJ!!!5!&fC@!!!!#`B3!kIk2VH%J%D@@!33!8U!%!1L`!!!"
!JJ#NL-%"L(qMkhJiS3'*1)!!!$MJ!!!j!!!!5!4R@B""!"4mC"Yj3)!!$$J!q"D
`!3!kU!%!1L`!!!"!JJ"SIq!(0)N"!)KrSqYiI)3#&$MK!)NiS!!!1-!!!%J%CaQ
!33!8Ik2VH%J%C4@!33!8Ik2VH%J%CaQ!33!8I'8EH+KK!$L!h3!!1)!!!%J"GKP
J!!!!X'%!1RqMkhK)"'LjJ%%!&(qMkhK)"'fPJ%%!&+KK!$K)!A+aB!!!!%J!!Ca
ri!Fe3))!$$J!rmk`!3!kIm!(08##!!`i!2r1X!%!1UJ"!$SX!!!!3))"F$KK!%!
iS3!i1)!!!dJ%CNf!33!8X'%!1UJ"!$SX!!!!3))"6+KK!$JiJ3!m5!4`(B""!"5
`B3!kU!%!1L`!!!"!JJ%8J'%!2$L"!$T)")YGJ%%!&+J"!$TmI4Yi,!!!!%##!24
)"'3YJ%%!&+KK!$JiS3!mJ0d!!$L!!!")!A6GB!!!!,"K!$TrSqYi5!4RhB""!"5
S!3!k,!!!!%##!+b)`3')Ik2VH)N"!)JiS3'*11%!L6L!!!")"'A4J%%!&#`$!!"
!J!!-1!$i&V!"!$US!3!k,!!!!%##!("rSqYi5!4MXB""!"4rSqYi5!4PYB""!"4
mC4YiU'%!1)$G!!!iJ!!!5!&dY@!!!!#`B3!kU!%!1L`!!!"!JJ!NIk2VH%J%CB'
!33!8I'3EH+KK!$K)")U4J%%!&,"K!$TrSqYi5!4R+B""!"4rSqYi5!4X&B""!"5
SB3!i5!&a)@!!!!")!!!-1!$rr,!"!$USB3!kJ!%#U$JK!U"m#!1QZk(rp%k!!#!
!!!!!I!J#TML!!!#3!!%!#*3Krm#!!`!!+!!!!%'#!"")"(BPJ%%!&(aN'hKmJb0
iJ!%!5$JK!%"m#!1Q6S!!)!!!!!#rBIrXI!J#TRaq'hKmQb0iI,`VH(cI-hJiIJ#
11k!!!*!!!3!)1)!!"*3Krl")"'(GJ%%!&&4J"Mp"JJ$BL"i![bJ!!"&"J3$-1')
J[&3!%$TmB`!ZI'N$TNk!"##!(J#)1(i!L*!!(`!!5rrr@Aap'hK)!!#JJ"i!IMK
q!(k3!"X!!%[rrd&mI4YiIk!(08##!)5!(J##1(i!JT!!(!!!5rrr*Aap'hKrS!F
e3))!D)!H!)JiIJ#)N!!I!!",rrm*I(dEH%J!!&#!(J%'1(i""T!!'`!!5rrqmAa
p'hKrS!Fe3))!0)!H!3SiIJ%+N!!F!!",rrl9I(dEH(qJ"c9!JJ!BJ"i!L$Kq!)L
3!"m!!%[rrVPmI4YiIk2VH)!"!&Ji)3"3I!J$TVYKrqa1J!!J!!!!!!!!!!#rBIr
XI!J#TRam'hJliPASI*XMH(bp+hKmhM0i1(`!MML!!!53!!%!#*3Krl#3!1%!H%J
%B+Q!33!89'!'2d'#!3#)(!#r+!!!%8'"!23iBL%%9!!31RaM!#jmD31Q6S!%)$K
m!)K)!TcpB!!!!)#"!(KrB!Fd(!!"$T!!R!#)J(m!!)"M!!"mB`)8N!#$!)K)!!#
`1(`!INJ#R-eJ!!!!1(`!JNJ#R-&J!!!!1(`!L%J#R,9J!!!!Nl`!IRpJ"c5!J3"
i(!!"$T2F!)+3!*`!L)"r!!#!B`!!I'-#&*1M!(k6``##N!#$!)K)!!"B1(`""NJ
#R(9J!!!!1(`"#NJ#R'PJ!!!!1(`!L%J#R&eJ!!!!Nl`""RpJ"c5!J3"i(!!"$T2
F!3U3!*`!L)"r!!#!B`!!I'-#&*1M!3D6``%+N!#$!)L!!3"B1#%!8,YKrqam#!1
Q6S!!),r"rrKm#!+QI*iMH$LJ!!!i`!!"N!!"!!L8)Ir!L!-!!)[N!!#B"!!!5!4
S-B""!"5ErJ!!J!%!5$JK!%"m#!1QZm(rq%k!!#!!!!!!!!!!!,r"rrKm#!+QI(i
EH*!!!3!)P#(rJ)[M!!!iB!!!L!3!!&IP"Mjm"3"!3B%!1(aP!&!iB`!"I'3D&$L
"!$P)"&mYJ%%!&*[K!$Kr`r0i1)%!1$LJ!!!i`!!"5!4RXB""!"5!!3#)1#%!J,[
"rrKm#!1Q6S!!)!!!!!!!!!!!!!!!!*2Krram#!+Q1q!!!*!!!3!)P#(r`+J$!)`
X!!!"3B)!$#`!!!0!JJ!J1'-!HML!!!&)"&k*J%%!&&4J"Mp!JJ!)1q!!!9IM"Mk
!!3")1#%!3(`)!kD$iIrm6S!!)!!!!!#6iIrmI!J#TM[J!!#3!!%!#*3Krm#S!`#
-,!!!!N'#!"`iB`"k1)!!!8J%AM'!33!89'!'2d'#!!Jli!!"9q-'2S!"!%Ji)3"
!I!J$TS2Krra1J!!J!!!!!!!!!!!!!!!!1!!!!kKM!)am!!FdI!-!8(`!!$48!pi
q6S!!)!!!!!#r`IriI!J#TRaq'hJiIJ"k1q!!!C!!!3!)P#(rX*!!J3"X1)!!!C!
!S3"`N!$"!(53!1%!H*%"!(b4)3#!N8%!K%J%ACf!33!89'!'2d'#!!`li!!!5!!
!9+JH!)`X!!!"3))!1$KK!'`iJ3!i1+!!!$M!!!")!@GKB!!!!(aJ"c9!JJ!BJ'%
!1$`$[V!S!&"-3B)!#$[J!!#S(J#-,!!!!N##!!Jli!!!Iq2lH)!"!&Ji)3"3I!J
$TV["rrK1J!!J!!!!!,qKrr4m#!+QI(dEH(bH)hL3!!%!#$J!!!#8)Im`Q!%!1$K
K!$b3!!%!6V1K!&+`!3"B5!4MUB""!"4mIaYiIq!(08##!%5SJ3##1'!!!(b!"c9
"JJ!8I)!(0#`!Bh9"JJ!)1'!!!CKK!$KrSqYi1-%!1$L!!!!iS!!!11!!!%J"rq9
J!!!!Xri!!)KK!$L!!3$B1#%!d(`)!kDlSIrd6S!!)(`)!UD3!!%!#*3Krm!iJ3!
i5!4XSB""!"5!B3!i1!!!#Rb$!pCm"!(@I!!B8&3$"Mj8J#8fI!!D&*!!!3!i9!-
'2S!"!%Ji)3"!I!J$TNk!!##r`IriI!J#TRaq'hJiBL&-1q!!!*!!!3!)P#(l`%J
%A4@!33!8I'3EH(r$mhK)"(e&J%%!&#J$!!""JJ'%J))3@$J!!#"m#31Q1-%#0$L
Nrrb!K3!%K!8!#*!!KJ!%P!B!#%)!rr#!JK"81!!!)(`*!kBi`3%d1+6rr)#&!!5
%"3!)N!#'!!58"J!)3J$rm)##%&!i!!!JI!N$TMM"!$3iT2rmJ)8!")3&!!L3!)B
!"*3'!!K#!2r`1)%$1$LJ!3!i`!!!5!4G`B""!"3iB3)i1)%$1%J#-`&J!!!!1'%
#1$L!!#j)!M-KB!!!!(aJ"c9"JJ#81!2rrjJ"!MKmC"Yi1+%$1$KJ!!&)!M-pB!!
!!$KK!6JiJ3-i5!)b[@!!!!!iB3%i1)!!,NJ#-YeJ!!!!I'!(08'#!&!i!rrrQ!%
"1(aN'hJiS3-i1'!!!8J#-[PJ!!!!1'%!1$L"!cK)!M*jB!!!!$KK!$JiJ!!Z5!)
bQ@!!!!"mB!Fe3B)!$$J$rrqB!3!i1'%#1%[rrLe8IJBq1'%"1%[rrL&8I`Bq1'%
!1%[rrK98Bi)H9q#J&RaJ'K3ri`!"9m$!$M[rJ!"ri2S8Iq2lH)!""%Ji)34!I!J
$TV["rrK1J!!J!!!!!!!!!!!!!!!![i(rm(`)!UD$iJUBI*`MH$ZJ!!#3!!%!#*3
Krf!iJ3!i5!4F)B""!"4mB!Fe3))!K)"r!!!iJ3!i5!4E5B""!"4mIKYj3B)!E)"
r!!"ra20i5!4EBB""!"4mIaYj3))!&(r$mhK)"&YpJ%%!&%J!!%3S(!!!3B)!)%J
%H`'!33!8+!-!!%##!!arirYi5rrpPC!!I!!!Iq2lH%J%@dQ!33!8Im2cH%J%@cf
!33!81k!!!AqMkhL!!3#S1#%!S(`)!kDlJIr`6S!!)!!!!!!!!!!![f(rl(`)!UC
m[5YjI(XEH(bF)hJli!!%1m!!!*!!!3!)P#(q3%'#!!`i!!!!N!!G!!!i!!!)I!N
$TMLmrr`iQrrmJ'3!")3%!!L3!'8!"*3&!!K#!2r`J'3!"$J"!+53!'8!"+"N!!L
`C3!)N!!"!%U!'`!#N!!"!*bSZ`!!1)$rri!"!*`iB3!iX+%!6V#"!&53!!%!D%J
%A!'!33!8I'!(08##!+L!!3"S,!!!!N'#!*`iJL&S1'%!T%J#-"eJ!!!!9'!'2d'
#!&#)!3"@9!!'pd'#!%5!!3#F1'$rrl"K!&3iB3!iN!!"!'K)"&ZYJ%%!&(aJ"c9
!JJ"81(`!"ML"!+4)!M!PB!!!!)!"!*b3!"`!!NJ!!"`lrrrrIq!(08'#!#b!!3"
S,!!!!N##re#!!3"S,!!!!N'#!"4rJq0iIk6VH%[rrI9mIKYiIm2cH)!"!FJi)3(
!I!J$TVYKrqa1J!!J!!!!!,p"rqKm#!+QI(dEH(bk+hKmqcYiI4a$H*!!!3!)P#(
rB*!!J3#mN!$"!-4)"&J*J%%!&(q!"c3X!!!$I(`EH$[J!!&!JJ!JIk2VH$L"!$`
iS3!i5rrq894J"Mp"JJ)J5!!!M$KJ!!")"&k0J%%!&+Kp!!!i[3!'J*d!!MM!!!&
)"&-&J%%!&(ap'hJiB!!"5!4HCB""!"4rS!Fd,!$rrd'#!G`mB(CP1'0bFcL!!!&
)!I8&B!!!!(aq'hP"JJ!3J(i!!)!$!!#3!!%!1(qMkhK)"&j9J%%!&(q$ihK)"&H
KJ%%!&#JH!!""JJ'81'%![%J!qi9J!!!!1'%!1%J!qhPJ!!!!1'%!a%J!qfeJ!!!
!Id!(0#`!!!4"JJ"i3)!!(#`!!!*"JJ!m3)!!8#`!!!&!J!!B5!!"5#`!!!C"JJ%
X3)!"2%J!!,L!B3!iJ!%![(`$!%"!JJ%S1q!!!%J!!5#!B3!iJ!%![(`$!%"!J!%
31q!!!%J!!3L!B3!iJ!%![(`$!%""J3$i1q!!!%J!!2#!B3$%+!-!!%'#!%aAB!B
r3B)!*)#"!$L!!3#mI!3!3%#"!-am""K!3B%!a$[J!!")!!#mJ)%!1)!"!,am"!"
!3)%!V(`%'%"!J!#N1q!!!%J!!*b!B3!iJ!%![(`$!%"!J3#-1q!!!%J!!)5!B3$
%+!-!!%'#!%aAB!Br3B)!*)#"!$L!!3#mI!3!3%'!!'"m""K!3B%!@$[J!!")!!"
3J)%!1)!"!,am"!"!3B!!3(`%'%"!J!!i1q!!!%J!!$#!B3!iJ!%![(`$!%""J!!
J1q!!!%J!!"L!B3!iJ!%![(`$!%""JJ!)1q!!!(rMqhL!!3#S1#%!S(`)!kDl3Ir
S6S!!))KM!,mi!rrk+!!!#d'"!#!iBL&d9!!31RaM!#jmD31Q6S!%)$KJ!!&1J!!
J1'!!!%k!!#!!!!!!!!!!!!!!!!#)!`#r,!!!"8'#!#"!J!!3,!!!!N'#!"4)!!!
B,!!!"d'#!!K)!!!-1'!!!8k!!#!iB!!!6S!!)!!!!!!!!!!![m(rq(`)!UCmIKY
i1q!!!*!!!3!)P#(r`%[rrkP8B!Br3B)!%)!H!(T8!!3qI"m(0(rMqhL!!3")1#%
!3(`)!kDl`Iri6S!!)!!!!!!!!!!![i(rm(`)!UC8M!Bq1k*D[#J-!"TmhM0i1q!
!!*!!!3!)1!!!!*3Krl#$J3#)Q!B!"N'"!3!jBL'N9B!31ReV!#jpD31Q6S!%)$K
L9VSi!!!#U'-!!,"q!!#3!"i!!NJ!!3`iBP'`1!!!!S"M!!#!B`!!U'-!@,"q!!#
3!"i!!NJ!!1b`rJ!!1!!!!T!!(J!#5!!!h,%q!!!i!!!#N!!H!!*)!!$-2)"dFRd
M5hJiK(0S12i!!MLJ!!&)!2+YB!!!!(ar'hK)!!#S2)"dCAdM5hJiK'e`12i!!ML
J!!&)!2+*B!!!!(ar'hK)!!#%5rmfL@!!!!#S(3&+X"i!!)!G!8b3!"i!!NJ!!'L
`rJ!!N4i!!NJ!!&b`rJ!!Im6cH$Lq!!+4(J!#5!+3!(&J!!!!I(mEH%J!!$a8J!B
q+!!!#N#"!#`i$2rhImEcH(e)8hKrLH0iI!3(0$Mq!!*,rVhpB!!!!(ar'hK)!!!
)1q$reArMqhL!!3"B1#%!8(`)!kDlJIr`6S!!))"M!)ii!!!#9'1R[R`$!&"m!!!
d9!2H2Nk!!#!!!!!![Z(rh(`)!UCmQ#0iI,NVH(ah'hJiJ!!!N!!"!!L8)IkJ1q%
!b(rPqhK)!@9jB!!!!(aq'hKr`!Fe3))"8)$j!(jr*-YiJ0N!JMKK!%L!Z3#'J"N
!LT!!i3!iJpN!YT!!`3!mJlN!3T!!S3"!JjN!4T!!!3"%JhN!BS0C!'C)!LT*B!!
!!$KK!)JiQ!!'5!)U1@!!!!"r)mYi5rrr694J"Mp"JJ!8IZ1lH%J!pZeJ!!!!N!"
j!,D!(`")Ib2,H$LC!#'3!"N!3S!I!%b3!"N!4S!I!$D3!"N!BS!I!%#3!"N!CS!
I!##3!"N!IS!I!#53!"N!JU!I!#L`'3#'5!)Td@!!!!!iH!!'1*N!)8J#+F&J!!!
!I`2$H%[qb(9J!!!!J"N!MRm$`hKr*-Yi9!$'2R`&"c4)!2mTB!!!!*2C!,CmIKY
iJ1%!1(mMbhL6Z3"#J-%!2$L"!%L6Q3"'J+%!3*0j!'+!!3"%NeN!CT!!q3"qN!$
C!)+3!,N!KT!!'3#+5!)T8@!!!!!iH!!'1)%!L%J#+8&J!!!!Im2cH)!"!@Ji)3&
JI!J$TVVKrpa1J!!JNq(rr(`)!UBli!!!N!!"!!L8)Ir!U!3!!+M$!!"m"J!!3))
!-)$$!!+!"!!#I!B!!%##!#!iB`!'1)8!)8J#+*9J!!!!9'!'2d'#!!Jli!!"Iq2
lH)!"!%Ji)3"!I!J$TS2Krra1J!!J!!!!!!!!!!#r!IrJI!J#TRal'hKmR#0iI,J
VH(cC-hKmqMYiI4e$H$[J!!!l`!!!N!!"!!K9)!BrP#(r8%##!*L)'`!K+!!!!%#
#!"JiH`!K1*`!"NJ#+'9J!!!!1q!!!6JE!#'3!!%!1(m$`hKrTZYiJ*X!HRmRbhL
!'`$kIdM6H+Nm!!"8"B3q9)3'2MP!!!9,rr[*I'!(08##!44rSqYi1)%!3%J"Bd9
J!!!!I'!(08##!2arJq0iIk6VH(pPfhK,rrlC9'!'2d'#!%!iB2rr5!!!h$J!!!K
m#31Q1+%!2$LGrrb!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%N!!&!!5J"!!)X!8
!#(pMfhK,rr'Y9'!'2d##!"4rBpYi5rrar94J"Mp"JJ!`Ii2MH(pSfhJiJ3"!1,X
!)6M!!!!ii!!!15!!!$P!!!")!X1aB!!!!%J!!#4rJq0i1)%!3$Ll!#%i`!!!11!
!!$N!!!")!Xa0B!!!!(aJ"c9"JJ!d9m!'2d##!#amB!Fd,!$rd%##!#"rJq0iIk6
VH(pPfhJl`!!"5rrm@AaJ"c9"J[pJ9q!'2d'#!!`i!!!!Q"X!)B!"!,Ji)3#`Z`(
ri(`)!kC1J!!J!!!!!!!!!!#qiIrFI!J#TRah'hKmQ#0iI,NVH(cD-hKmqcYiI4a
$H$Kh!#%iQ!!'1k!!!*!!!3!)P#(qF%J#*UeJ!!!!1"F!)C!!!3!iIb2,H(q'ihL
!P`"kIdI6H)!A!2TrD0YiU6J!!&3&K$j8K!Bq18!!"%[rqK9mB!Fe3))#%+[F!!#
S'!!!Im-(0)2m!!*m!`!!3B)!Q(lMZhK,rr"09'!'2d##!"4qilYi5rr`R94J"Mp
"JJ!JI`2$H$L"!,4)!@&CB!!!!(aJ"c9!JJ(!5!!!1$J!!!Km#31Q1+%!X$LBrrb
!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%N!!&!!5J"!!)X!8!#(lMZhKr*FYiIdE
6H(pRfhKrL10i1)%!Y$NJ!!&,rrd95!!"C)!B!!*m(`!!3))!$$KJrmj)!!&3IZ1
lH%[rlk98B!Br3))!&(lMZhK,rqre9'!'2d'#!"ar!m0iI`6$H%J"B,&J!!!!I'!
(08##!4JiB3"!1*J!"NJ#*@PJ!!!!1'%!3,2"!4)i!!!!N!"K!3iiB3$mX!%"')!
B!!+3!!%",%J%8,'!33!8I'!(08##!#JiB3%N1)!!"dJ%8Q'!33!8J"J!!MKK!2b
3!!%",%J%9+@!33!81'%!3$LB!!C)!L8&B!!!!$KK!%#c`3%51!!!!*!!B3%11'%
!r,!"!4L6i3%X5!438B""!"4mB!Fe3B)!A$KK!%!iQ!!'5!)Nb@!!!!!iB3"!Xm%
!PMJ!!!#3!'%!NMKK!)#3!!%!R*2K!+5!'!!#N!!"!,")"&5pJ%%!&(aJ"c9"JJ!
d9k!'2d##!#amB!Fd,!$rd%##!#"r!m0iIi6MH(lPZhJlS!!"5rrjUAaJ"c9"J[q
JJ!%"Q$JK!C!!ZZ(rh(`)!kC1J!!J!!!!!!!!!!"m"4K!1!!!!%'!!""m"5"!3B%
!#$J!!!&8!`Bq6S!!),pKrqam#!+QI*XMH(bm+hKmh60iI2ilH(dI3hL3!!%!#*3
Krj!!1)%!5%J%ER'!33!81!!!!,!"!%jrK10i1'%!5,!"!&#`!3"55!4ZDB""!"3
i!!!l1'!!&l!"!&"rT1YiX'%!6MKK!%L`!3"55!4Z4B""!"3S'`!!3B)!@(pMfhJ
iJ3!i5!4Z&B""!"3i!!!!X!%!2Rr%mhJiB3!iX!%!3,!"!%*)"'i0J%%!&$J!!$X
iB!!AX!%!3(rNqhL`B3!q1'%!1,!"!%*)"'hTJ%%!&)!"!(Ji)3"`Zf(rl(`)!kC
1J!!J!!!!!!!!!!!!!!!![m(rq(`)!UBmJ(4bI(iEH$L%FfL3!!%!#$[J!!!iS!!
!P#(r3+KM!!!i`3!i11%!2%J!kJ&J!!!!I'!(08'#!#3mJ'9YU(i!!$L%F(3i`3!
i11%!2$LJ!!")!1RCB!!!!(aJ"c9!JJ"81'!!!+J"!$L3!'%!8S"q!!+3!'%!T,!
"!&D!B3#NJ!%!2(`$!!"!JJ!-1q!!!8J!!#3i!2rrN!"K!(!iB3"!X!%!A%J%6IQ
!33!8I'!(08'#rmarirYiJ!%!b$JK!-"m#!1QZm(rq%k!!##rJIr`I!J#TRbq+hK
mI"YiI*dMH(r$mhL3!!%!#*3Krk")"%eTJ%%!&(ar'hKrJq0iIk6VH$LK!$Ji`3!
m11%!3%J%4U'!33!8J'%!2#J$!!"!JJ!BIq2lH%J%8PQ!33!8N!"K!$a)!!!3Iq6
lH%J%8Lf!33!85!459B""!"4mB!Fe3))!1)#"!$arjIYiJ(i!!)#%!!")"%T9J%%
!&+LK!$KrJq0iJ-%!2(qNkhJii3"!5!4)@B""!"5!!3"S1#%!B,Z"rr"m#!1Q6S!
!)!!!!!#rSIrdI!J#TRbr+hKmI4YiI*iMH*!!!3!)P#(rS$LK!$Ji`3!m11%!3%J
%4HQ!33!8U!%!3RqMkhLSS3!iIm6cH(`!qK5!`3!m11%!3,!"!%C)"%ITJ%%!&+L
"!%+SB3"'U+%!3+J"!%4mK"K3J'%!2(b%"c4m"3"3I!8(0%J%Da@!33!8J!%!D$J
K!'#lSIrdI!J$TNk!!#!!!!!!!!!!!,lKrpam#!+QI(FEH)"L$1KmQ#0iI,NVH(c
D-hJl`!!!1k!!!*!!!3!)P#(rJ%J%4J@!33!8I'!EH)"L$+"m(!0i5!4'1B""!"4
mHaYi1'%!3%J%4N'!33!85!)MU@!!!!!iB!2k1)!!!%J#!0PJ!!!!+"J!!(ar'hK
"JJ!3I`A$H$L!!!0,rri0Iq2lH%J#!59J!!!!Iq2lH$LK!$Si`3!m11%!4$L!!!9
)"%6*J%%!&$KL9Z')!`!!+!!!!%'#!"4qilYi5!4U&B""!"4)!!!)1'!!!#J$!!#
3!'%!2%##!"`mB%P$IZ5lH$KM6dj)"&T&J%%!&*!!B3!mJ-%!2#J'!!""JJ!FU+%
!1RrMqhJii3"%1)!!"8J%4S@!33!8L"N!!#J!!!""JJ!8Ib2,H%J%@mf!33!8I(i
EH)JD!!!S!!!!3B)!&(p$dhK)"&ZaJ%%!&(ap'hKrirYi1)!!!8J#'H9J!!!!Ib6
,H%J%B+'!33!8Ik!(08'#!#4rirYi1)!!!NJ#'F&J!!!!Id66H%J%B(f!33!85!!
!&(rMqhJiJ!!#5!46-B""!"4rS`FdIm!(0(`$!!"!J3!)IllVH(rMqhJiS3!k1-%
!2$MK!%3iJ!!"5!4$SB""!"5SB3"'1ci!&+J"!%Tr13FdI!-!8(`!b!"!J!!SIq2
lH$Lq!"3iJ!!"5rrpBArMqhJi[J!81)!!!N[rr9&)!!!)1k!!!(rMqhJiS3"-1)!
!!dJ#&qPJ!!!!Iq2lH$LK!$Si`3!m11%!4$L!!!&)"%-YJ%%!&+L"!%CrirYiU!%
!5MMK!%5S`3"5I!3!8+LK!$Tm!$"3X-%!5S$"!$`iJ!!"X!%!4NJ%44f!33!8J'%
!2+L"!%DSS3"%5!4&qB""!"4rirYi1+%!1MM"!$`ii3"-1)!!"%J%3X@!33!81'%
!4$L!rr`iS2rm5!4-FB""!"5SS3!kIq2lH)$"!$`ii3"%1)!!"%J%4,f!33!8Ik!
(08'#!(arirYi1+%!6$L!!!&)!KFCB!!!!(rMqhJiS3!k1-%!2$MK!%3iJ!!#5!4
#AB""!"5SJ3"1Iq2lH+LK!$Sii3"%1!6rml!"!%SiJ!!#J-%!2+J"!%Tm'3"3X!%
!4NJ%4&'!33!8J'%!2+L"!%DSS3"%5!4&,B""!"4rirYi1)!!!8J%3q@!33!8Iq2
lH%J%3LQ!33!85!)CB@!!!!"rirYi5!4#&B""!"4)"%80J%%!&(rMqhK)"%8CJ%%
!&(q$ihJiJ3!i5!4&)B""!"5S!3!i,!!!!8'#!!`X!!!#3),ri$KJ!!)iJ!!#5!4
"2B""!"4rirYi5!4&#B""!"4rJq0i5!4&&B""!"4rBpYi5!4&)B""!"5!B3"!5!4
&,B""!"4)!Km&B!!!!+KK!$L!!3#)1#%!J(`)!kDkiIrF6S!!)!!!!!#rJIr`I!J
#TRam'hJlS!!!N!!"!!L8)If`S!-!KML"!6b!B`"q1+%!1S2F!)Km(`Fd5rr@NB"
m!))iJ3!m1+%!1%[reS'S!3!k,!!!!%##!#bS!3!i,!!!!%'#!#!iB3%m1)%!2%J
#(&eJ!!!!1!!!!*J"!$`lS!!"Iq2lH(r%mhJiS3%m1-%!2%[rqdPmB!Fd,!!!!6[
!rr9!JJ!J1(`!MML!!!9)"%PYJ%%!&&HJ"Mp!JJ!)1m!!!(r$mhL!!3*B1#%#8(`
)!kDlJIr`6S!!),q"rr"m#!+QI*iMH$[JrpQ3!!%!#$J$!!D8)Im`N!!"!&Si!!!
!U)-!!,#"!&k`!3"NJ!-!!MKK!%L3!!%!H%J%4b@!33!8I'!(08##"##S(J#-L'%
!CL`!!!*8B!Ef3B)!%&3!"Mp!JJ3%5!!!&&3!"Mp"JJ2i1q!!!%J!!r!iIJ#Z1)!
!!8J%3m@!33!89'!'2d'#!$b!RJ"qJ'%!D(`%'%""JJ!8J"i!@P3!"$iX!!!"3B)
$Z(`%'%"!JJ!8J"i!@P3!"$iX!!!#3B)$S$Kq!+iiJ!!#5!4$GB""!"48B!Br3B)
!2)#H!)+!B3"XI!3B3%'#!"5!(J"LI!#'F#`!!!&"JJ0SI!3B3%##!"5!(J"LI!#
'F#`!!!*"JJ031(i!VML!!!4)"%-PJ%%!&&4J"Mp"JJ'3!$Kq!+iiJ!!(5!4$$B"
"!"4mI4Yi1(i!VML!!!T)"%,jJ%%!&&HJ"MpmI"Yi3B)!*)"q!%)iS3"%J*i!GMM
"!%!ii3!m13%!1%[rpP9)!!!JJ(i!3MLK!%3i`3"!11%!2$N"!$JiJ!!!5rrf0B!
H!&jm!)C`,!!!"%'#!(K!J!!F,!!!!N'#!%4!J!"8,!!!!8#!!"K)!!$i,!!!"N'
#!04!J!$X5!!!M)"K!*!!J!%!4(`$!%""J!+!J!%!3(`$!%""J3*d5!!!b)"K!*!
!J!%!4(`$!%""J!#i5!!#A)"K!*!!J!%!3(`$!%"!J3#N5!!#5)"K!*!!J!%!3(`
$!%"!J3)i9k!'2d'#!)KAJ!Br3B)!&)!"!$Km!`"!3B%#(%J!!(#!!3!mI!-!3%#
!!Ja)!!"JJ'%!N!#!!3"%I!-!3%'!!IKAS!Br3B)!5&H!"Mp"JJ!8J!%!1(`$!%"
"J3(F5!!!-)!"!$am!`"!3)!"c%J!!##!B3#3!)!"!%4m!`"!3B!!%)!"!%"m!`"
!3)%"V$Kq!+iiJ!!&5!4"JB""!"48B!Br3B)"N!!iIJ#Z1)!!#%J%3@Q!33!8I(`
EH$Kq!+iiJ!!,5!4"9B""!"4AJ!BrI(dEH%'#!#5!IJ"'1+%!4)#H!()i`3"!11%
!2$N"!$K,rr5a5!!!))"q!%BiS3"%1-%!3$MK!$`j!3!i1)!!!%[rp*'!(J"H9!!
%2L`!!!4"JJ"i3)!!(#`!!!*"JJ"%3)!!9#`!!!&!J!!B5!!!q#`!!!C"JJ$83)!
!l%J!!)b!B3#8J!%!4(`$!%""J!$FJ!%!3(`$!%""J3$35!!!b)"K!*5!!3"%I!-
!3%'!!,K)!!#iJ'%!P)!"!%"m!`"!3)%!T%J!!+5!B3#8J!%!3(`$!%"!J3#89i!
'2d'#!)KAS!Br3B)!&)!"!$Km!`"!3B%!H%J!!(#!!3!mI!-!3%#!!'K)!!"JJ'%
!P)!"!%4m!`"!3B!!9&H!"Mp"JJ")9k!'2d'#!"5!!3!iI!-!3%'"!$K)!!!`J!%
!2(`$!%"!J!!S5!!!))"K!*5!!3"%I!-!3%'!!"#!!3"!I!-!3%#"!!Jli!!!Iq2
lH)!"!0Ji)3$3I!J$TVZ"rr"1J!!JI!J#TP5+"Mk3!!%!#$J!!!!S#J!BP#(r`$P
J!!#B"J!'3B%!M$NL)K"93"!kI5N!,RdT!kC1J!3J1'*@ZMJ!!!+SB`!!X'B!!*!
!"J!#5!!!P$KL8E!i!!!#J'-!!)"M!!#SB`"BX'B!!*!!"J!#5!!!G,$Q!!#4"J!
#5!!!D,$Q!!#4"J!#5!!!A$b!G'9micYi1)4YF$MQ!!)iS!!"5!$Ge@!!!!"mDaY
i5!!!1&5!"MiS!!!)3)%!+$J+rrPm"!Fd11B!!MNL&&`j!!!$5rkTP@!!!!"mDaY
i5!!!#$PJrp9pBeYiJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!,m"rq"m#!+
QI(SEH(bB)hL3!!%!#*3Krj!!5!3qbB""!"3iJPE-I(NEH+KN!!")"$lpJ%%!&$J
!!!!mB%&'X"J!!(p%dhJiBh*Y5!(F'@!!!!"mIaYi5!3qlB""!"3S(`!!I(iEH%'
#!MJiJPE11f!!!)"r!!!l3!!!U)3!!+Z$!!!i"2`BI"d(0%J!!(4r3!FdJ(m!!"`
!!!amS`)8J)8!!RqJ"c5!C3!'N!#"!$L3!'%!2+KK!$L!K3!+I!-!!*!!J3"!3))
!1$KK!$U!!3!k+!!!!%##!"#!!3!q+!!!!%'#!"a)!R#4B!!!!&4J"Mp"JJ!-1f!
!!8J!!"Jl@J!"Id-(0(q!"c4m!`!!3B$rK&GJ"Mp!JJ"i1d!!!%J!!'"r3!FdJ(m
!!"`!!!amS`)8J)8!!RqJ"c5!C3!'N!#"!$L3!'%!2+KK!$L!K3!+I!-!!*!!J3"
!3))!*)!"!$SS!!!!3))!')!"!$iS!!!!3))!$$YJ!!&)!!!B1eS!!Ap$"c4rJ!F
dI!-!!%'!rjKAB!Br3))!L$Y!!!")!!"`Id!(0)"r!!!F!!!-I)-#&)"N!!+!"!!
'N!"K!$L3!!%!2+J"!$L!C!!+,!!!!*!!B3"!3))!1$KK!$U!!3!k+!!!!%##!"#
!!3!q+!!!!%'#!"a)!Qq*B!!!!&4J"Mp"JJ!-1f!!!8J!!"Jl@J!"Id-(0(q!"c4
m!`!!3B$rL&GJ"Mp!JJ"d1d!!!%J!!&ar3!FdJ(m!!"`!!!amJ`)8J'3!!S!%!!D
3!'%!1*!!!3!mU!%!1)"N!!SX!!!!N!"K!%"!JJ!NJ!%!1LJ!!!"!JJ!BJ!%!2LJ
!!!"!JJ!-1f!!!8J!!"Jl@J!"Id-(0(q!"c4m!`!!3B$rR&GJ"Mp"JJ!-U!%!3V!
B!!"r)mYi5!3mLB""!"4r`r0iJ!%!H$JK!("m#!1QZ`(ri%k!!##r`IriI!J#TRa
q'hL3!!%!#*3Krl#!!`#f1)%!1(`$"c4,rrdKI(mEH(rJ"c9!JJ!`U!%!1#`!!!"
"JJ!N5!)@K@!!!!#SB3!i5!*RU@!!!!"mIaYi5!)9I@!!!!"ri!Fe3))!&$Kq!)i
iJ!!&5!4!PB""!"4rirYiJ!%!@$JK!&"m#!1QZm(rq%k!!#!!!!!!1'!!!8k!!#!
!!!!!!!!!!,qKrr4m#!+QI(dEH*!!!3!)P#(rS%[rrpe8B!Br3))!$$[Jr9j)!!#
!+"d!!%##!!`li2eI5!!!F(qMkhK)"$hpJ%%!&$b!2cpmIJFd1'%!3$L%2cp)"&c
YJ%%!&(ar'hP!JJ"%ImB(0)"K!%!i!!!!N!$"!$JiJK4FN!!"!$`ii3!m13%!1)#
p!!")"&c4J%%!&(aJ'hL!B3"!I"m$H%J%A0@!33!8Iq2lH)!"!'Ji)3"JI!J$TVZ
Krr41J!!J!!!!!,r"rrKm#!+QI(iEH*!!!3!)P#(r`)"M!)K,rrmTI(m(08##!"3
iIJ#11)!!"8J%2h@!33!8Iq2lH)!"!%Ji)3"!I!J$TV["rrK1J!!J!!!!!,qKrr4
m#!+Q1)*ICRap'hJl`2U)N!!"!!L8)Iq`L!3!!)2M!)JS!!!!3B)!4(rMqhK)"$X
CJ%%!&(rMqhK)"$VGJ%%!&(rMqhJiJ!!!1+!!#6M!!!")!P&pB!!!!(aq'hKrirY
i5!3qMB""!"4r`!Fe3))!&$Kp!)iiJ!!&5!3qeB""!"4r`r0iJ!%!@$JK!&"m#!1
QZk(rp%k!!#!!!!!![m(rq(`)!UCmIKYi1+!!!C!!!3!)P#(r`+"M!,48B!3r3B)
!N!"mK!Fd5!*0@@!!!!!X!`!!3B!!H$L#9HJF!`%1J'3!!)"M!!"ri`)8Iq2lH%J
!!)&J!!!!9'!'2d'#!%JiI`#11)!!"8J%19'!33!89'!'2d'#!"5)(J#kI!!!0&3
&hMj)!!!X1!!!!BKq!,T8!!BqI!-!8(`!!$48"Giq5!!!%$LJ!!")!!!)1+!!!(b
M+hL!!3")1#%!3(`)!kDl`Iri6S!!)!!!!!!!!!!!Nq(rr(`)!UCmIaYiN!!"!!J
iI`#11)!!"*3Krm")"$M0J%%!&&4J"Mp"JJ!B1(m!MML!!!0)"$LeJ%%!&%J!!"5
SI`"B-!2rrh`!'4"8!`BqJ!%!5$JK!%#$iIrmI!J$TNk!!#!!!!!!!!!!!!!!!!#
rSIrdI!J#TRap'hKmRL0i1q!!!*!!!3!)P#(rX%J#$Z9J!!!!1)*@VRaP"c5S"!!
!I!8!!%#!!&3iBP'`(!8!C)"M!!#!B`!!I'-#&)[M!'"Ai!Br3B)!0$KLAfD)!`!
!+!!!!%'#!#4A`!Br3B)!((qMkhJiJ3!i5rrDk94J"Mp"JJ!)1q!!!(rMqhL!!3"
B1#%!8(`)!kDlSIrd6S!!),fKrl4m#!+QI'mEH$V#9HamN!!MH(ca1hKp08Yi1'm
!HM[!!!!jS!!!1F!!!$Z!!!!lB!!!1)!!$j!!!3!)1!!!!*3Kr&#`S325N!$"!p5
`!3"`N3%$h%J%0i@!33!8I(SEH$K[!(SiJ!!-5!3hFB""!"53!'%$@$K[!(SiJ!!
,5!3hAB""!"4mH4Yi1'm!HML!!!G)"$G*J%%!&(ai'hJiE`"k1)!!#8J%0c@!33!
89b!'2cJ!!!"mGaYiQ!%$8$TJ!!!k3!!!3B)!&)J2!,mS!!!%3B)!#$X!!!&q)!F
e2'!!!6J$`!!kJ!!!3))!#$`!!!4m(30i1'm!MML!!!9)"$ZpJ%%!&(hMHhK,rq&
*9'!'2d'#!A#!c`#QIH0lH$L"!p)iS32811!!"%J#8fPJ!!!!X'%!F+J"!(!X!!!
!3))6V(hMHhKq")0i5rrmf94J"Mp!JJ!31!$rrl!"!(")!"1-1'm!MML!!!0)"$Y
TJ%%!&)K[!,mi!rrk+!!!#d'"!-!iBL*d9!!31RaM!#jmD31Q6S!%)(hMHhK,rr%
TX'%!F%J!!*apihYi5!"rD@!!!!#`B3"`1d!!!%J!!)4pihYi5!#$%@!!!!#`B3"
`1d!!!%J!!'apihYi5rrjqE"K!(")!!"FJ!m!qS#@!!"8!`3q5!**X@!!!!#3!(8
!!$Y!!!")!!!mJ(B!!&G!"Mq3!(8!!%'#!#`i!2rhX!%!F%J!!#"pihYi5rrl$E"
K!(")!!!3IH0lH%[rqdf`B3"`U!%!F#`!!!""JJ!B1'm!MML!!!9)"$TTJ%%!&%J
!%T!!J-m!URhMHhJiJ3251+%$e$MJ!!9)!P)KB!!!!,"K!(")!"*XIL!(08##!"L
!&J!!IH0lH(`%"c4,rrZ05!!!%(hMHhKq")0i5rrlI94J"Mp!JJ!31!$rrl!"!("
)!")`1'm!MML!!!0)"$S0J%%!&$K[!(SiJ!!'5!3e"B""!"48B!Br3B)"@)!2!2T
q"!Fd9!-%2NJ#5,&J!!!!,!-!!%'!!6!iJPAS(!-"$S"N!!#!B`!!IX-#&(l$XhK
,rr[C9'!'2d##!"!i!2rrX!%!F%J!%B5S&J"B1U%$$RkMUhL`!3-)IX5cH)!@!%U
3!!%$#NJ#$$9J!!!!1(B!MML!!!4)"$4pJ%%!&&4J"Mp"JJ"NL"B![bJ!!!4!JJ!
8IU1VH$L@!#&)!J`"B!!!!(l$XhK,rpC99'!'2d'#!"!i!!!$X!m!M%J!!("q`l0
i5rr9f94J"Mp"JJ!31!!!!V!2!)a)!!"81!!!!E!2!)a)!!")L"B!ZbJ!!!""JJ!
d1(B!KML!!!*)"$2jJ%%!&&4J"Mp"JJ!31!!!!l!2!)a)!!!B1!!!!V!2!)a)!!!
-1!!!!E!2!)`iE`"k1b!!!$L!!!G)"$1pJ%%!&(ai'hK)!!cJ1!$rrl!"!(")!""
mJ!m!qRi$JhL)M`#q1-%$#+MK!p+"!3289!8%2N[rmlf`B3"`U!%!F#`!!!"!JK"
-IH4lH$KK!`j)!JX4B!!!!$KLAeL!B`!!+!-!!%'#!!a)"$,"J%%!&)$2!+CpihY
i1+%$#ML"!`Jii!!%5!*2l@!!!!#`B3"`U!%!F#`!!!"!JJri1'*D[+J$!8!X!!!
!3))!%$J!rrq`!3"`5!!2h)J2!,iX!!!#3B)!)%#!!"!X!!!"3)!!%%J!!"!X!!!
'3)!!#$VJ!!!iE`#Z1)!!!%J%-Y'!33!89'!'2d'#!(#!$`"DI!#'F#`!!!4!JJ"
JL!m![LJ!!!&"JJ"8+!!!!d'#!%`S!!!&3B)!4#J!!!4"JJ!m9b!'2d##!$4@i!B
r3))!,$J!!!'B!303IH4lH$KK!`K,rqiPX'%!F+J"!(!X!!!!3))20%J!#-4rSqY
i5!3f+B""!"4mIKYi5!3k9B""!"5`B3"`U!%!F#`!!!""JJ!B,"d3!%#"$`"rS!j
`Ik!"P%[rrmJi!!!!N!!"![#)$`#q+!!!!8'#!"`S!!!$3B)!&#J!!!9"JJ!-+!!
!"%##!"!i!!!!N!!"!Z")!!!F1'%$#S"M!!!i!#!!N!!"!Z#3!'%#Y*!!B3*)1-!
!!)!"!Z#``3*i1'm!VQ!(!!53!-%#HML!!!#``3*qJ+%#H)!"!Rb3!1%#i*!!`3*
LN!$"!ID3!-%#G*!!`3*`N!$"!J53!-%##*!!S3)-N!!"!K")"$&pJ%%!&&4J"Mp
"JJ"NIH4lH$KK!)4)!JN0B!!!!$J"!)53!!%#BS!2!&Tm!)C`,!!!"%'#!$"!J!!
3,!!!!8#!!"4)!!!X,!!!"N#!!#4)!!!JJ!%#i'!!!!'3!!%#i%J!!"#!!3,JB!!
!!T!!!3,J1'm!VML!!!&)"$%&J%%!&&4J"Mp"JJ!iJ!m!@P3!"$iX!!!#3))!$$Q
J!!&)!!!JJ!%#i$KJrrq!M`"qB!!!#*!!J3*`N!"K!J53!!%#i$K[!+iiJ!!#5!3
`ZB""!"48B!Br3B)!1)!2!'*m!)C`,!!!!N##!!`j`!!"5!!!))!"!Z!iB2rrJ)m
!JQ!!!!L3!)%#G*!!B3))N!!"!Z!iE`#Z1)!!"%J%-'f!33!89'!'2d'#!B`iE`#
Z1)!!"dJ%-&@!33!8I(8EH$K[!+iiJ!!+5!3`3B""!"4@S!BrI(-EH%'#!#5!E`"
#1+%!J)#2!(Bi`3"m11%!H$N"!(4,rq1G5!!!))"[!%)iS3#!1-%!I$MK!(Jj!3"
d1)!!!%[rihf!$`"HI!#'F#`!!!4"JJ"`3)!!(#`!!!*"JJ!i3)!!6#`!!!&!J!!
B5!!!k#`!!!C"JJ$)3)!!h%J!!)5!B3#!J!%!I*!!B3+BN!!"!La)!!$%J'%!J$J
!!!#3!!%#Q$J$rrq3!!%#,%J!!+b!!3"m1'!!!*!!B3+BN!!"!La)!!#BJ'%!I&D
J"Mmi!`!"N!!"!TK"JJ!N9Q!'2d'#!"#!!3"dN!!"!La)!!"`J!%!H*!!!3)X5!!
!C$J!rrq3!!%#,%J!!&L!B3#!9U!'2j!!B3+B3B)!*&CJ"Mp"JJ!3J!%!G*!!!3)
X5!!!0)!"!(L3!!%#,%J!!#Ji!2rrN!!"!La)!!!FJ'%!J$YJ!!'!!3"mN!"K!TL
3!!%#,%J!!"#!!3,JB!!#!*!!!3,J1'm!VML!!!9)"#l0J%%!&&4J"Mp"JJ'-1'm
!VML!!!K)"#keJ%%!&(ae'hJiE`#Z1)!!#dJ%,U'!33!89U!'2hac'hK"JJ!NJ'm
!4MLK!)#!M`"b1-%!I$MK!(Jj!3"d5rrKr8J!!##!E`"'1+%!J$M"!(`ii3"i13%
!G$L!!!",rq(GJ!m!AP3!"$iX!!!%3B)!F%#!!"`X!!!#3B)!1%#!!%`X!!!"3)!
!'%J!!1JX!!!'3B)!b%#!!0a)!!#%J'%!J)!"!(b3!'%#R*!!!3)`5!!!a)"K!)!
i!!!!N!!"!T`i!rrrN!!"!M")!!#XJ!%!I$KJ!!#3!'%#R*!!!3)`5!!!Q)"K!(a
@S!Br1!-!!C!!!3+F3B)!*&CJ"Mp"JJ!3J!%!G*!!!3)`5!!!F)!"!(L3!!%#-%J
!!'3i!2rrN!!"!M")!!"BJ'%!J&DJ"Mq3!'%#R%'#!#4@B!Br3B)!%)!"!(53!!%
#-%J!!$5!!3"iN!!"!M")!!!S1!$rrj!!!3)`5!!!()"K!)!lJ!!"J!%!I*!!B3+
FN!!"!M")!!!3J!%#i'!!"!#3!!%#i+J2!)`X!!!#3B)!'$J!!!#B!3*ZIH0lH%[
rcb9)!!!-1!!!%*J"!Qii!!!3U)%$#*J"!J)iB!!!J!%$#RbI)hL3!!%$9%J%6d'
!33!8Iq2lH%J#!feJ!!!!1)*@VRac'hKqB`FdU!3!!(`$!!""J!!)1Q!!!$KL9d#
)!`#-+!!!!d##!"3iB!!-5!%Kp@!!!!")!!!31'!!"8J")H9J!!!!1!!!!$KL9d#
`!3"`1)!!!6KM!)Y)"#b"J%%!&&4J"Mp!JJ!NIq2lH$L"!(",rmp49'!'2d'#!"!
i!2rCX!%!F%J!!Pb)$`#q+!!!"8'#!%`S!!!%3B)!4#J!!!&"JJ!m+!!!$8'#!$3
S!!!(3B)!,#J!!!j"JJ!NIq2lH$L"!(",rmlp9'!'2d'#!"!i!2rCX!%!F%J!!JJ
iE`"k1)!!"8J%+r@!33!89'!'2d##!$3iBP'`IQ!(0"`!!'5!B`!!J'-!!(aM!K5
)!`"G+!!!!%'#!"!i!2r5X!%!F%J!!F#S!3"`,!!!!%##!Jaq)!Fd,!!!!N'#!#3
iBP'`IQ!(0"`!!'5!B`!!J'-!!(aM!K4)!5%pB!!!!)J"!e"8!!Br3)))6&C!"Mp
"JJ!31!$rfE!"!(")!!&S1+%$#,2K!Y)i`!!!1)%#8*!!S3,81'%"j$LJ!!'3!-%
#cPEJ"Mq3!+%#f*!!J3,NN!"K!ZL3!-%#l*2"!`#6S3-%N!$"!Ya!JJ!BIq2lH(m
NbhK,rr+C9'!'2d##!"b!J3081'%#[%J!CK9J!!!!X'%!F%J!!"3iB3+m5!40DB"
"!"5`B3"`U)%!F$J!rpPm!!FdI)-(0(`$!&"m!!!d,!2kk&35hMj!JJ!31!!!!*!
!!3,`5rrr0)!"!Y`X!!!!3B)!R)J2!,iS!!!"3B)!(#J!!!0"JJ!8+!!!"8'#!!`
S!!!%3))!&$KK!`K,rpla9'!'2d##r[5!!30B9!!'2d##!"3iB3-)5rqmT94J"Mp
!J[lB1'*A3$L!!"XiB`"i5!3U4B""!"48B!Br3B)!T$J!!!'SE`#-I!!(0(`$!&"
m!!!d1'%$#&3%hMj,rlca9'!'2d##rT4)!!"iI)!(08'#!!`X!rrC3))!A)J2!,i
k3!!!+!!!"8##!%`iBPDZ1R-!!AjP"c5S!`!!I!8!!%'!!"!i!2rCX!%!F%J!!#J
iBP'`1!!!!)#$!!!FC3"NJ)3!!(aN'K5Vi`"BN!!"![",rrd3U!%!F#`!!!"!JJC
`1'm!VML!!!")"#Q0J%%!&&4J"Mp"JJ#%J!m!@R`!KR!X!!!%3B)!G%#!!"3X!!!
#3B)!'%#!!#a)!!"J,!!!"N#!!&K)!!!d1'%!K$L"!`j,rmQp9'!'2d'#rF")!!!
m1'%!K$L"!`j,rmRe9'!'2d'#rDK)!!!N1'%!K$L"!`iiS!!!1-!!!8J%-Gf!33!
89'!'2d##rB3iE`#Z1)!!!dJ%+2@!33!89'!'2d'#!*!!L!m!ZbJ!!!"!JJ#%1'm
!VML!!!C)"#M4J%%!&(ae'hJiE`#Z1)!!#8J%+,f!33!89U!'2d'#!#b!$`"LI'F
EH)#2!,BiB3-)9!!%2S$2!'Cm"3FdU3m!M%[rd(9)!!!SJ!m!BMKK!`L!M`#f1-!
!!&3!"$kT$`#-I!8(0$MJ!!",rp"09'!'2d##r1"9S!Br3))!(&A!"Mp!JJ!89i!
'2d##!!aAB!Br3B)!U+LK!`JiB3-1J!%$#ML!!!#3!'%"LMKK!AL`S3'1X)%"P*!
!!3'S5!3V,B""!"4mB!Fe3))!G&@J"Mp"JJ!8J'm!IS!"!CKm!`"!3B,mG&A!"Mp
"JJ!8J'm!JS!"!Cam!`"!3B,mA&H!"Mp"JJ!FJ'%#R)#"!M#!S3(%5rrE+94J"Mp
!J[`m9f!'2d'#!"b!B3+BJ)%#,)#K!F",rpX*9'!'2d##r"bS$`#-,!!!!N##!%!
iB3-)5!*1h@!!!!!iE`"k1)!!#%J%*h@!33!89'!'2d'#!*3iB3-)5!*S#@!!!!"
8B!Br3B,lf%J!!(apihYi5rr*894J"Mp"JJ"X1'%$#$L"!6!iS!!!5rr0Z94J"Mp
"J[ZX1'%"-$LK!-3iJ!!!5!%jS@!!!!!i!!!)I!N$TMLK!`3iJ3%XJ'3!")3%!!L
3!'8!"*3&!!K#!2r`J!3!"+"N!!L3!!8!")!"!25`C3!)N!!"!`SkP!!"1'm!HML
!!!T)"#E*J%%!&(af'hJiE`"k1)!!!8J%*V@!33!89'!'2d'#!&bS$`#-,!!!!N'
#!!`X!!!$3))!*$KK!`KmC"Yi5!%jB@!!!!#`B3"`U!%!F#`!!!"!JJ0-U'%$#$L
K!`k!J3-+5!*1,@!!!!#`B3"`U!%!F#`!!!"!JJ-SL!m![bJ!!!&!JJ!m1'm!HML
!!!K)"#BjJ%%!&&4J"Mp"JJ!N1'%$#%J#CXeJ!!!!9'!'2d##!"!i!2rrX!%!F%J
!!Z4A)!Br1U!!!%'#!%KA!!Br3B)!+(hMHhK,rmFjI'3EH$KK!`K)!Np0B!!!!,"
K!(!k`!!!5!!!#$V!!!'S!3"`,!!!!%##!*3kS!!"5!!!M&F!"Mp"JJ#!9X!'2d'
#!'4pihYi5rr'lAaN'hJiB3-)5!*2!@!!!!#`B3"`U!%!F#`!!!"!JJ*F5!)!1@!
!!!"pihYi5rr'[AaN'hKpihYi1-%$#$LJ!!")!&DTB!!!!(af'hK)!ImGB!!!!%J
!!"b!E`#)5!!#R@!!!!"mGKYi5!!!#$V!!!')$`#r+!!!"%##!*!!IL!(0#`!!!%
kS!!!3B)!J%#!!"!X!!!!3)!!4%J!!(!X!!!$3)!!D(k!"c3X!!!"3))!*$KL9d!
i!!!#9!!'2SKM!)am!`"3I!!!0&39hMj)!!!m1X!!!%J!!$4pihYi5rr'$AaN'hJ
iB3-)5!*1)@!!!!#`B3"`U!%!F#`!!!"!JJ!)1U!!!6V!!!"@`!Br3B)!C$J!!!K
m#31Q1-%!*$LK!`5!C3!%K!8!#*!!CJ!%P!B!#%)!rr#!"3!%IH0lH(i%JhL3!!B
!"+!&!!L`"J!)J1%!+)%"!#b")3!`J8%!0+LK!p+!`3285!!44@!!!!#`B3"`9U!
'2d'#!&5)$`#r1'!!!#J!!!&"JJ!8+!!!!N'#!!`S!!!$3))!#$KJ!!'S!3"`9'-
'2L`!!!"!J[Km9X!'2d'#q(48B!Br3B,iE$J!!!#3!!%#m%[rq'#S!3"`I!-(0#`
$rrp"JJ!8I!-(08'#!!aA3`Br3))!A)K[!,iS!`!&3))!8(iM"c3X!`!"1U!!!8'
#!#K!J!!)5!!!-#`$!!0!J!!SIS-(0#`$!!*"J!!F1U!!!%J!!"4qJ`Fd,!-!!8'
!!!JkS!!!9U-'2d##pqKA)`Br3B)!$&F$"Mp!JJ!XI!!(08##!#5!c`#UIH0lH$L
"!`JiS3-+11!!"8J#2qeJ!!!!X'%!F)!"!p`S!!!!3B)!$(`$!hLbJ`!!IS!(08#
#!!`i!(rrX!m!@#JH!!""JJ!3Im2cH%J%*`'!33!8U!%!F#`!rrp!JJ!-1!!!!,!
"!(#S!3"`,!!!!%'#!"4A3!Br3))!$$J!!!#`!3"`U'%!F)!"!lJi)31`I!J$TVQ
Krl41J!!JNq(rr(`)!UCmIaYiN!!"!!JiJ!2k1+!!!C3KrF!iB3%i5!3JmB""!"3
iB3!i1)!$qMLJ!!*)"#$GJ%%!&(rNqhJiS3%i1-%!1$KJ!!",rpN91!!!!AaM"c4
m!!FdI!-!8(`!!$48!piqJ!%#5$JK!N"m#!1QJq(rr%k!!#!!!!!!N!"K!"JiB!!
!N!#"!"b!!3!DN!#K!#!X!!!"N!$"!#53!1%!+*%"!#b4)3!`N8%!0%b#!#!iB!!
"6S!!)!!!!!!!!!!!Nq(rr(`)!UBli!!!N!!"!!L8)Ip`N!"K!+JmB'4PN!#"!+`
iJh0VU'%!U*!!S3#`1+!!!*!!`3#d1-%!1*!!i3#i11%!2*%"!,b4)3$!N8%!a%J
!`%9J!!!!U'%!1$LL&&b!J3!m1-%!3%J%++@!33!8I'!(08##!%#SB3#SU!%!3(`
$!!"!JJ!`J'%!US!"!%*m!`!!3))!)$KK!+iiJ3"'5!(iT@!!!!"8B!Br3B)!#$[
J!!&rirYiJ!%!Q$JK!*!!I!J$TS2Krra1J!!J!!!!!!!!!!#6iIrmI!J#TT!!!3!
)1!!!!*3Kr`#3!!%!6$KK!%L3!!%!5%J%0!'!33!85!!!m$KK!&!i!3#XN!"K!(3
iB!!mN!"K!(!iB3")1)%!F*!!!3#S5!3TEB""!"5!B3#%2!1EN5J!BfY!JJ#XJ'%
!J$`$[V!S!&"-3))!R$aJF(-iBfiJ1)%!5$M"!%!iS!!)5!3NbB""!"4mB!Fe3))
!M$aJB@8mJ(&e1'0fG$L%DA3iS3"!13%!1$M!rrmii!!!5!3[`B""!"4mIaYi1'%
!3%J%,rQ!33!8Iq!(08##!%`iB3!i1)!!!$LJ!!%i`!!"11$rrcN!!!!j)!!!5!3
[YB""!"3iB3!i5!3[`B""!"4)!!!B1'%!5%J%-a'!33!8I'!(08'#ra#!!3%)1#%
"!)2Krram#!1Q6S!!)!!!!!!!!!!!!!!!!,i"rm"m#!+Q1-*ICRak'hL#)JcJJJ)
-j(b6)hKmY5Yi1X!!!$T!!!#3!!%!#*3KrL#)"J!!+!!!!%'#!#3iBPG!1)!!!$K
M!C&)""q4J%%!&&4J"Mp"JJ!)1N!!!9C8"Mp"JJ!B1'%!2$L!!!!iS!!!5!%Fm@!
!!!"r3p0i1)%!4%J%)9'!33!8I'!(08##""K@S!Br3B)!'$KL)U4)"#"&J%%!&(a
b'hK)!!!81')LY%J%)$'!33!8I()EH$KL)XK)"#!KJ%%!&(aj'hL!X!!!J0%!!(j
$NhKr*-Yi5!4%CB""!"4mIKYj3))!*$KJ!!!iJ!!!1+!!!$M!!!")"%4GJ%%!&(a
q'hP"JJ1FImAcH$KJ!!!iJ!!!5!4%@B""!"4mHaYj3))!&(r$mhK)"#"&J%%!&%J
!!h!iB!!!1)!!!$LJ!!!i`!!!11!!!$N!!!")"%3jJ%%!&(ae'hKqTDYi1'!!!$L
!!!")"%3jJ%%!&(am'hJiB!!!1)!!!$LJ!!!i`!!!11!!!$N!!!")"%2pJ%%!&(a
h'hKqjEYi1'!!!$L!!!")"%2pJ%%!&(ap'hJiB!!!1)!!!$LJ!!!i`!!!11!!!$N
!!!")"%2"J%%!&(ai'hKr"F0i1'!!!$L!!!")"%2"J%%!&(ar'hKr400i1+%!3$K
J!!")"%2"J%%!&(aJ"c9!JJ"mJ'%!3%J%(Sf!33!81))Lf$KJ!!!iS!B!5!4$XB"
"!"4mB"YiJ'%!3(`@!hK)"#"eJ%%!&)#"!%"mC4Yi1'!!!)#%!!")"%1GJ%%!&(a
P'hKrirYiIX5cH%J%3k'!33!8J'%!3%J%)J@!33!8J'%!3%J%*['!33!81'%!4$L
"!*3iS!%!5!4$MB""!"3X!`!!3))!M$J!!!!iJL,SN!!"!$JiB!!!1+!'!%J%3b'
!33!8I(BEH$L"!*3iB!!!1+!'!%J%3`Q!33!8I'8EH(rMqhKqa,0i5!4$*B""!"3
iJL,i1'!!!$LJ"J")"%,KJ%%!&(af'hJiS3!i1'!!!$L!!!P)"%-TJ%%!&(aP'hK
rirYiIX5cH%J%3Z@!33!81))M$$KJ!!!iS!B!5!4#SB""!"4mC"YiIk2VH(rPqhK
)"%+pJ%%!&$L#)aJiB!!!1+!'!%J%3RQ!33!8I(BEH(jNQhJiB!!!1+!'!%J%(l'
!33!8I'8EH(qMkhKqa,0i5!4#IB""!"3iJL-N1'!!!$LJ"J")"%)jJ%%!&(aN'hK
rJq0iIkAVH%J%3P@!33!81))M-$KJ!!!iS!B!5!4#%B""!"3iJL-mI(-EH$KJ!!!
iS!B!5!4"qB""!"4mC4YiIi2MH(jNQhK)"%)9J%%!&(pMfhKrK10i5!4#6B""!"5
!d!!!IN16H)$a!!"rC0YiIbA,H%J%3NQ!33!8J*!!!!"r)mYiJ,%!!%J%3Nf!33!
8I(BEH(r$mhK)""deJ%%!&(pMfhK)""dTJ%%!&(kMUhK)""dGJ%%!&(q$ihK)""d
4J%%!&(lMZhK)""d&J%%!&(qMkhK)""cjJ%%!&(m$`hK)""cYJ%%!&(rMqhK)""c
KJ%%!&&E!"Mp"JJ!)5rrk)9D!"Mp"JJ!B1'%!2$L!!!!iS!!"5!%BU@!!!!"q`l0
iJ!%"k$JK!H"m#!1QZJ(r`%k!!#!!!!!!!!!!!,jKrmam#!+Q1)*ICRac'hL$iJc
JJS)-j$[!!!!kS!!!N!!"!!L8)Iq!L!3!!#J!!!""JJ!N1'*A3$L!!!!iB`'45!3
DZB""!"48B!Br3B)!#$UJ!!&@[!Br3B)!'$KK!$JiJ!!!1+!!!%J"'"PJ!!!!5!3
GZB""!"4mC4YiIQ5EH$KJ!!")""fpJ%%!&(ap'hJl3!!"5!!"S(p!"c3X!!!"3))
!'$KL)U4)""YCJ%%!&(ae'hK)!!!81')LY%J%'d@!33!8I(8EH$KL)XKqZ+Yi5!3
E-B""!"4mH4YiJ,3!!)$I!!"qSkYiIb6,H%J%2h@!33!8I(FEH8'#!6KqjEYi1'!
!!$L!!!")"$q*J%%!&(af'hP!JJ!8IZ1lH%J%'h@!33!85!!"$%J%+a'!33!8I(X
EH$UJ!!")!!#BIX1cH(kNUhK)"#X0J%%!&(ac'hP"JJ"m1')M*%J%'UQ!33!8I'3
EH(jMQhK)"%"*J%%!&(ac'hP"JJ"B1')M'%J%'S@!33!8I'3EH(jMQhK)"%!PJ%%
!&(aN'hP"JJ!dIk2VH$LJ!!")"%!PJ%%!&#`$!!"!JJ!FIX1cH(kNUhK)"%!PJ%%
!&$[!!!&)!!!31V8!!A`9f!""J2pS9m!'2d'#!$5!e!!!I`2$H)$r!!"qa,0iIbA
,H%J%2if!33!8J*3!!(mMbhL![`!!5!3rNB""!"4qilYi5!3DIB""!"4q`l0i5!3
DFB""!"4A`!Br3))!&$YD!!&r3!Fd,!!!!N#"rParSqYi5!3D6B""!"4A`!Br3B)
!#%[rpieAJ!Br3B)!'$KK!$JiJ!!!1+!!!8J"&K9J!!!!Im2cH)!"!)Ji)3#!I!J
$TVTKrma1J!!J!!!!!,r"rrKm#!+Q1@*ICMQ!qSL3!!%!#*3KrF#)#`!!N!#"!P`
S!!!!J)%#S*!!B3*BLm%#Tj!!S3*JLq%#Uj!!`3*NN!$K!QL4!3*XN5%#F*&"!R4
"JJ$JL!3!!#J!!!""JJ!81'%"1%J"ll&J!!!!5!!!&$KK!6JiJ3*H5!([R@!!!!#
)!3%iI!3(0#`%!!4!J3"-1'%"0A`$)+iS!!!Z3))!2$KK!6Cm!b#Z+!!!B8##!#`
iB3%hI!-JVLJ!!("!JJ!F1'%"1(`$)+iS!!"`3))!$$J%rrbB!3%i9m!'2d'#!#J
iJL0)1'%!1%J"lbeJ!!!!IqAlH$KK!PJiJ3%i5rrhQ8J!!"`iJL081'%!1%J"l`P
J!!!!1'%"1%[rr&e8B!Br3B)!$$Q!!!")!!!)1B$rrRf$BhL!!3*)1#%#3(`)!kD
l`Iri6S!!)!!!!!!!!!!!!!!!!,p"rqKm#!+QI(mEH(bD)hL3!!%!#*3Krl")""F
CJ%%!&(am'hJiB!!!5!3GbB""!"5SHJ!!1,S!"S#D!!)i`!!"5!353B""!"4mHKY
i1'!!!8J%(D'!33!8Id!(0#`!rrp"JJ%J1f!!!%J!!1KrB!Fd,!!!!N'#!%"!J!!
8,!!!!%'#!"a!J!!N5!!!6#`!!!4"JJ!m3)!!3%J!!#JmB'PM1m0X1%J!!$!mB%P
$1m01)dJ!!#3mB'PM1m0c)dJ!!"JmB'PM1m0c1%J!!!`mB'PM1m0ZFhp$dhK)""D
KJ%%!&(r$mhJiJ,qj5!'cb@!!!!"mI4Yj3B)!@%J%(jQ!33!8Iq2lH%J%&R@!33!
8Ik2VH(r%mhJi`K4F1+#rZ8J%24@!33!85!3@EB""!"4mB!Fe3))!((qMkhK)"#K
aJ%%!&(qMkhK)""mGJ%%!&$Yl!!&rB!Fd,!!!"8'!ra4r3p0i5!3mkB""!"4r3p0
i5!3FYB""!"4rJq0i5!3@!B""!"5!!3"B1#%!8,Y"rqKm#!1Q6S!!)!!!!!!!!!!
!!!!!!,q"rr"m#!+QN!!"!!L8)IjJN!"K!EJiB3'iJi%#!*!!J3'm1)%!1)1K!J5
3!+%"`*!!`3(%N!$K!FL4!3(-N5%"d*&"!G4)""FaJ%%!&)"L#TJiJ3!iJ'-!!%J
%&Pf!33!8I(mEH8'#!14)"$`9J%%!&(aq'hP"JJ$)J"`!!#J!!!""JJ"31')MC%J
%&If!33!8I'3EH(r$mhK)"$ZGJ%%!&#J$!!""JJ!X1)%!L$LJ!3!i`!!!5!3A)B"
"!"48B!Br3B)!%$aJCQ%i!h"KN!!F!!#!(3!!+!!!!%'#!&JiBL0i5!39TB""!"4
mC"YiIm2cH%J%1d@!33!8+!-!!%'#!$3iJ3#)1+!"!$M!!!")""E*J%%!&&4J"Mp
"JJ!BIk6VH$KK!)NiS!!%5!38KB""!"4r`r0i5!39iB""!"4rirYi5!39eB""!"5
!!3'S1#%"S,Z"rr"m#!1Q6S!!)!!!!!!!!!!![k(rp(`)!UD3!!%!#*3Krk#3!'%
!H+ZK!-+3!)%!I*!!S3#!N!$"!)53!1%!L*%"!)b4)3#3!*&"!*4)""2pJ%%!&$L
#AfBi!!!!N!!"!$amIaYiL!3!!$[!!!!S!!!!3))!$$KJ!!")!!#X1'%!H$L"!%!
iS3!i5!3GbB""!"4mB!Fe3))!J)"K!%!iS3!m1)$rrdJ%(Gf!33!8I'!(08##!&K
rSqYi5!36fB""!"3mJ'PMJ'%!2$L%ER-i`K4F1+#rZ8J%1R@!33!85!36cB""!"4
mB!Fe3))!))"K!$a)"#A4J%%!&)"K!$a)""apJ%%!&$[!!!'!B3"!5!3GTB""!"4
rirYi5!36HB""!"4r`r0iJ!%!D$JK!'#lSIrdI!J$TNk!!##qiIrFI!J#TMZLAfC
mIaYiI*FMH(bi+hKmfM0i1b!!!$[!!!!lJ!!!N!!"!!L8)I`!N!$K"#LS!33SN3%
%,#`!Irq4)33`N8%%0%##!!`l)2r95!!-1%[rY%e8B!Br3))!&(rMqhK,rl5G9'!
'2d'#!#3iB33S1)%!q%J"*9PJ!!!!I(NEH(mJ"c9!JJ`!5!!!1$J!!!Km#31Q1+%
!p$L""#5!C!!%K!3!#*!!C3!%P!8!#%)!rr#!C!!%S!3!#*!!C3!%X!8!#)!I!+)
S!!!!3B)!R$YK"#jrirYiIf6EH%J"kF9J!!!!J0m!SRrMqhJiJ33S1+%%+MMJ!!P
)!LkjB!!!!(aj'hKr)!Fe3)),J(pMfhKrj2Yi5!(TM@!!!!!i!!!)I!N$TMM"!23
iS33NJ'8!")3&!!L3!'B!"*3'!!K#!2r`1'*D[)#&!!5S!`&!N!#'!!5JC3!),!!
!!,"Q!!K!JJ!-1b$rrdJ!#b5)(`#r+!!!$d'"#aJiBL1-9!!31RaM!#jmD31Q6S!
%)$KJ!!e)!3DeB!!!!$KL&&a)!3FCB!!!!(rMqhK,rl,p9'!'2d##!"4rirYi5rq
c694J"Mp"JJ#SJ!%%+L`!!!*!JJ"X1(m!HML!!!&)""%PJ%%!&&4J"Mp"JJ"81))
8A(b&)hKmKL0i1'%%,NJ%$jf!33!81'!$pcL!!qJiS!!j1-!!!$MJ!!&)!GN4B!!
!!$J!!!*mB`FdI!!(0(`$!&"m!!!d9!$H2NJ!!!Ji!!!"9!!'2d'#!##SB3$i1+%
!rS#"!2T)!TePB!!!!(aj'hK)!!!F1b!!!%J!#LJiB33S5!%IH@!!!!"mH4YiIb!
(08###K!iI`#11)!!"8J%&@f!33!85!!*r$KJ!!j)!3@YB!!!!$KL&&a)!3B4B!!
!!(rMqhKqjEYiI`E$H(p(dhJiJ33S13%"3%[r`3&mH4YiIb!(08###E`iI`#11)!
!"8J%&4Q!33!85!!*U$J!!!Km#31Q1+%!&$L"!25!C!!%K!3!#*!!C3!%P!8!#%)
!rr#!"!!%N!!&!!5J"!!)X!8!#)"K!"L!J3!FJ+%!))$"!#5!i3!SJ3%!,)%K!$#
"33!d5rrYQ94J"Mp!JJ"N1!!!#(`*!kBiS3!81)%!p)"N!!5%"!!)N!"P!!58"3!
)3J$rm)!%!!53!!8!"+!%!!L`"3!)J'%!')#"!"b!S3!JJ-%!*)$K!#L"!3!XJ5%
!-)&"!$4,rqej9'!'2d'#!!`l)2rq5!!!9$KK!2JiR`!K5!%I(@!!!!"mH4YiIb!
(0#`!rp"!JJ!d1'%!q(aN'hKrjIYi5rqm#Aaj'hKr)!Fe3))!'$KK!2JiR`!K5!%
Hi@!!!!"mH4YiIb!(08##!'!i!!!)I!N$TMLK!"3iJ3$dJ'3!")3%!!L3!'8!"*3
&!!K#!2r`J!3!"*!!"3!%S!3!#,!&!!L!B3!BJ)%!()#K!##!`3!NJ1%!+)%"!#b
")3!`J8%!0%J"("PJ!!!!Ib!(08####3iI`#11)!!"8J%%i'!33!85!!)%)JI!#%
S!!!!3B)!d$J!!!Km#31Q1-%"K$LK"#5!C3!%K!8!#*!!CJ!%P!B!#%)!rr#!K3!
%Iq2lH+!&!!L3!)B!",!'!!K,rkrK9'!'2d##!"4rirYi5rq`-94J"Mp"JJ!81'%
"L(aN'hK)!5$YB!!!!+KK!BJiS3,3J)%"LMM"!Bj)!KkeB!!!!(rMqhK,rkqC9'!
'2d##!"4rirYi5rq[k94J"Mp"JJ!81'%#d$L#&'")!H5PB!!!!$KLCA#!!`!!+!!
!!%'#!"3iI`!K1)%#d%J!8X9J!!!!U!%%+$Kr!#%iJ33ZX"m!@)!""#U3!"m!5NJ
"j69J!!!!1(m!MML!!!9)""*eJ%%!&%J!"`3i!!!)I!N$TMLK!B3iJ33NJ'3!")3
%!!L3!'8!"*3&!!K#!2r`J'3!"+!%!!L3!'8!",!&!!LJ(`#'+!!!!%'#!54rirY
i5rqZe94J"Mp!JJ!8Iq2lH%[rVb98B!Br3B)!&$KK!BKmC"Yi5!%Ii@!!!!!i!!!
)I!N$TMLK!"JiJ3'%J'3!")3%!!L3!'8!"*3&!!K#!2r`J!3!"(rMqhL3!!8!"+!
%!!L`"3!)J)%!()#K!##!`3!NJ1%!+)%"!#b")3!`J8%!0%[rVY8i!!!)I!N$TMM
K!"3i`3'%J)B!")3'!!L3!)F!"*3(!!K#!2r`J+B!"$JI!#%iJQ!*N!#R!!5JTJ!
)X+F!#*!!!3"JL!3!!(`!!$48!0iqN!!"!'53!'%!D)"K!"L!J3!FJ+%!))$"!#5
!i3!SJ3%!,)%K!$#"33!d5rrccAaj'hKr)!Fe3))&Z$Kr!)iiJ!!&5!34&B""!"4
)!!@N2+"036b!CQ3mB!!"1!4bF$L$J!#3!!%!K$KJrrmi!!!!X)%!M$L&3e-lB3#
)N!"K!)jrirYiN!#"!)L`!3#55rqY(94J"Mp"JJ"iU"m!M#`!!!0"JJ"X1'%"L$L
"!(3iS!!!1-!!!%J"&D9J!!!!I(NEH(mJ"c9!JJ8XJ+%!G$aJB@5!J3"i1'0bF$`
&[V!S!&"-N!#E!!""JJ!)I+-VH+!"!(b3!'%!K&3!"@Y"JJ"iS!%!M'!!"!#`!3#
-5!!!D$J!!!Km#31Q1+%!&$L"!25!C!!%K!3!#*!!C3!%P!8!#%)!rr#!C!!%1!%
!K*!!C3!%S'3!#,"P!!L3!!%!B*0K!'5!B3!BJ)%!()#K!##!`3!NJ1%!+)%"!#b
")3!`J8%!0%[rpAdiB3$81*m!)6[!!!&)!H+0B!!!!)JI!#%S!!!!3))!($KK!G!
iJ!2S1+!!1NJ%#5f!33!85!!!&$KK!G!iR`!K5!(L@@!!!!!lB3'1If2EH$MK!G!
iJ!!!1+!!!$M!!!")!FmjB!!!!)J"!G!S!!!I3)%!$$J!!"qB!3(31(m!)6L"!G"
)!H)9B!!!!$JI!#'3!!%!1(lMZhKr"m0iJ*m!HRp)dhL!(`$kI`R$H&5%"Mj8"B3
q1-%"3$P!!!C,rl9pI(NEH(mJ"c9!JJ1i1d%"4Rp$dhJiR`!K5!(K`@!!!!#S!3&
!X"m!@)!"!8+3!"m!5MKK!8!iJ3#%1+!!!$M!!!")!4+TB!!!!(aj'hKr)!Fe3B)
!H(mJ"c3X!2r33))$C(rNqhJiB3#85!(KF@!!!!"rirYi1*m!)8J"i@&J!!!!1'%
"3%[qJ"9J!!!!J"m!MRrNqhJiB3&!9!$'2R`&"c4)!,E*B!!!!(aj'hKrirYi1)%
!P%J"i59J!!!!Ib!(08'#rh")!!,mIq2lH%[rU`e8B!Br3))!&(rMqhK,rkYG9'!
'2d'#!!`i!!!!Q"X!!$L"!BJiS3"`1'!!!%J%,a@!33!8I(NEH(mJ"c9"JJ"!Ib!
(0#`!rrp"JJ!N,!$rp8'#!"ar*XYi1'!$pML!!r!iS!!&5!(6j@!!!!!iB3&!5!%
Af@!!!!")!!*iU'%"3(p&dhL!J3&#5!3E)B""!"4)"!P*J%%!&(aj'hKr)!Fe3),
rS+KK!8"r4G0iJ)%"3MM!!!0)"!39J%%!&(ak'hKr3!Fd,!$rrd##!"4)"!N0J%%
!&(aj'hK,rrpSS!%!M&3!"@Y"JJ!-1)%"L%[rm9f)(3!!+!!!!%'#!)#)'`!!+!!
!!%'#!"4rirYi5rqUA94J"Mp"JJ"N1!!!#(`*!kBiS3!81)%"K)"N!!5%"!!)N!"
P!!58"3!)3J$rm)!%!!53!!8!"+!%!!L`"3!)Nd%!B)"K!"L!J3!FJ+%!))$"!#5
!i3!SJ3%!,)%K!$#"33!d5rrcfAam'hJmJ'&XJ'%!F$L%DA-i`K4F1+!!!%J%,Zf
!33!85!3)4B""!"4mH4YiIb!(08##rTb!B3"`5!3D4B""!"4)"!JPJ%%!&(aj'hK
r)!Fe3),qI(p$dhK)"!kGJ%%!&)JG!!!S!!!!3B)!'&H!"Mp"JJ!31'%"3%J#P[e
J!!!!1'%"3$L!!!!iS!(p5!'If@!!!!!iI`#11)!!"8J%$%Q!33!85!!!f$KJ!!p
)!2b*B!!!!$KL&&a)!2cYB!!!!(rMqhKqjEYiI`E$H(p(dhJiJ3$i13%"3$NJ!!"
,rlB*I(NEH(mJ"c9!JJ#81(m!MML!!!9)"![aJ%%!&%J!!)"rj2Yi1'%!q%[rQRe
mH4YiIb!(08##!"JiI`#11)!!"8J%#m@!33!85!!!9$Kr!)iiJ!!&5!3,QB""!"4
)!!"!Iq6lH$KK!2K,rjYYI(NEH(mJ"c9!JJ!B1(m!MML!!!9)"!Z&J%%!&%J!!"3
iI`#11)!!"8J%#eQ!33!89m!'2d'#!"3iI`!K1)%!e%J"hJPJ!!!!Ib2,H)!""!J
i)33!I!J$TVVKrpa1J!!J!!!!!!!!!!#r`IriI!J#TRaq'hKmRb0iN!!"!!L8)Il
!J'-!!$L"!$K)"!3jJ%%!&(rMqhK)"!`pJ%%!&+LI!!5SI`!#1!6rr(`%"c4)""(
eJ%%!&$KK!$K)"")"J%%!&)#H!!!iBPp81!6rrj!!(J!!J'-!!#J$!!""JJ!B5!3
5cB""!"3iJ!!!5!35fB""!"5!!3&)1#%"3,["rrKm#!1Q6S!!)!!!!!#6iIrmI!J
#TRbr+hL3!!%!#*3Krm#J"!!!+!!!!d##!$b!"!!#9!!'2L`!!!0"JJ!3I!!(0#`
!!!e!JJ!J1)!!!8J"e*&J!!!!1!!!!E!I!!!iB!!"5!!!9$KJ!$Y)!CqeB!!!!(a
J"c9"JJ!m1'!!1NJ"Rk&J!!!!I'!(08'#!#JiB!!-5!'IM@!!!!"mB!Fe3B)!&$J
!!'1`(`!!1'!!!8J!!!JiB!!!J!%!5$JK!%#$iIrmI!J$TNk!!#!!!!!![k(rp(`
)!UCmI4Yi1m!!!*!!!3!)P#(qX*!!J3!k1q%!2RrMqhLcS3!iI+3VH%J"h&9J!!!
!1'%!1$LK!0!iJ!!!5!%A)@!!!!"mB!Fe3))!6)!"!3"rirYi1))Mc*!!!3!k5!(
F)@!!!!#!!3!k1)!!!*2K!*)iB3#!N!#"!)bcS3#@N!!"!,")"!I0J%%!&(aJ"c9
!JJ!)1m!!!Ar$mhL!!3&B1#%"8(`)!kDlSIrd6S!!),i"rm"m#!+Q1J*@C$[J!!%
k`Q9`1U*9l$X!!!!kBPCF1N*ICMSL9d!l`Pp8N!!"!!Ji!!!!P#(mX*!!B30SJ')
3F*!!!3")N!!"!%53!!%!3%J%!-@!33!8I'!EH)"L$+"m&!0i5!3!qB""!"4mGaY
i1'%!6%J%!3'!33!81(%!H$L!!"G)"!1TJ%%!&&4J"Mp"JJ!31!!!Bl!"!$T)!!$
)1'!%"cL!!!")!EYpB!!!!(aj'hJiB3$d1)!$m6LJ!#0)"!(9J%%!&(mMbhJiS3$
d1)!!!dJ"e3&J!!!!Ib2,H%J"[M9J!!!!Ib2,H$L!!!&)"!&&J%%!&(mMbhK)!rq
*J%%!&%J"eX&J!!!!Ib2,H%J$rh@!33!85!3#EB""!"4r)mYi5!3#HB""!"4qJk0
i1)%!1NJ%!S'!33!8U!%!1L`!!!&"JJ!8,!!!"8'#!!`X!!"M3),rf(mMbhK)"!*
aJ%%!&(k$ShK)"!*pJ%%!&(lMZhK)"!+*J%%!&+J"!$SX!!!&3))!&)"K!%a)"!+
*J%%!&%J!#,JX!!"M3B)!L)J5!!!S!!!!3B)!($KJ!!4)"!YPJ%%!&)"M!!")!rr
TJ%%!&$KJ!"C)!D%YB!!!!&4J"MpmG"Yi3))!&(jMQhJiJ!!@5!3(3B""!"3iB!!
"5rmL*@!!!!"@J!Br3))!&(jMQhJiJ!!@5!3("B""!"5)%J!!+!!!!%'#!!a)!rf
TJ%%!&$KJ"")iJ!!"5!'jq@!!!!#3!(i!!%J$rNf!33!81)!%%NJ%%QQ!33!8J(i
!!$LK!&`iJ!!#5!(5R@!!!!#!IJ!!5!2q)B""!"4)"!%CJ%%!&)"q!!")"!%PJ%%
!&)"q!!")"!kaJ%%!&$L!!!")"!kpJ%%!&%J$rNf!33!81c%!L6VM!$ar)mYi1)!
!"8J%!Af!33!89'!'2d'#!"3iB2rr1)!!!NJ"lleJ!!!!J"8!!$Y!!!#3!!%!@%J
!"P4r3!Fe3))!&)19!!!lS!!!1f!!!8J!"M#!G3!!1i$rrcYJrrmlSrrr5!!'($L
#9HJi!!!K((d"$R`*!kD!K!!!J!3!!$N"!I"m`"S81-Err)"Q!!5%"J!)N!"S!!5
8#!!)3J$rm)#'!!3i!2rr1'%"p*!!L!!%1)%!5$LK!%5JjJ!)1-%!3,$S!!L3!!%
!8%[rRVPJ!!!!I'!(08##"@JkJ3+#J!%#JP3!"Mjm%J0i,")!!d'#"9"q3!Fd,!!
!rN'#"83X!!$r3B)&2)!@!!!S!!!!3))!#%J!!"3iB3(d1)!!)%J!469J!!!!J"B
!!#J!!!"!JJ!)5!!!&$KK!K8iJ!!J5!"&&@!!!!"qJk0i1)!!"%J%!$f!33!89'!
'2d##!$3iB3+c1)!!"NJ%!#@!33!89'!'2d'#"-aqJk0i1)!!!%J%!!f!33!89'!
'2d'#",3iBPCJL!%#VkL3!!!'J'-!!#J!!!#`J3!mN!"K!&4"JJ&!IN!(0#`!!!&
"JJ!-,!!!qd##!#"rS`Fd1)%!2$LK!&4)!Mb9B!!!!(ac'hK)!!!XIk-(0$L"!$`
iS3"85rjYb@!!!!#S!3!m1)!!!CL"!V&mFaYiX!%#6(jJ"c9!JJ3dIS1MH$L!!!&
)!rpeJ%%!&&4J"Mp"JJ!3Id!(08##!Sa)!!33L!%#X$KK!I5SS3!mI'3EH(`!!$3
i`3"89!IH2MN"!$K,rPR4B!!!!(aJ"c9!JJ"iJ!%!9(k$ShJiJ!!"N!!"!Mj)"!3
4J%%!&(k$ShJiJ!!&5!3%!B""!"5)!3!i1'!!!DL"!$`S!!!!Q'%#XE#"!Na!JJ!
SJ+%!9$J!!!#`J3#X1'%"p$L"!+b3!+%!VTJ"!,*,rU,4B!!!!(p!"c9!JJ(S5!!
$E(aJ"c3X!2r93B)$B$[J!!")!!0BId!(08##!e"qJk0i1)!!"%J$rT'!33!89'!
'2d'#!(!iB3*Z1)!!$8J$rRQ!33!89'!'2d'#!b!iJPB!1'%#KS#%!!")!M#&B!!
!!&4J"Mp"JJ-%1'%#Y%J#-+&J!!!!9'!'2d'#![!iB3+m5!)`h@!!!!"8B!Br3B)
#h)J"!V)S!!!(3))!1$T!!!&q3!Fd,!!!!8'#!!`X!!$l3))!)(qM"c3iJ3!m1+%
!9%J#1XeJ!!!!I'!(08##!TaqJk0i1)!!"%J$rGf!33!89'!'2d'#!-b!&J!!+!!
!!%##!!`i!!!!5!!!&$KK!I4)!%0YB!!!!(aJ"c4m%`Fe3))#@+LK!$arT1YiJ-%
!9$KK!I3ii3"35rkdG@!!!!"mB!Fe3B)!+)#K!%JiB3(dJ-%!4(qN"c5!i3"!5rq
FN@!!!!!li!!!5!!#J)"q!!")!rQYJ%%!&%J"Q#9J!!!!9'!'2d'#!I5!IJ!!5!2
jNB""!"4)"!S*J%%!&)"q!!")!rb9J%%!&)"q!!")!rPaJ%%!&%J%#J'!33!85!!
"[(j!"c3X!!!"3B)!+#`!!2Y"JJ!JIk-(0$L"!$`iS3"85rjV$@!!!!"mB!Fe3))
"M$KK!&JiJ3"F5rrfPDKK!$`iS3(dJ)%!9%J%!"f!33!8JS%!9$KK!I5U33!m1)%
!2)$"!TSiS3"811!!"%J#'9&J!!!!U'%!2$LK!I5!J3"89dB'2NJ"j1PJ!!!!I(-
EH(jJ"c3X!2r93))!2+L"!$`i!!!!J+%!9$KK!I5`J3"N1)%!C*!!S3"QQ!%!DN[
qS"&J!!!!I(-(0#`6rrp!JJ!)1Q!!!(p!"c9"JJ"%IQ!(0#`!rp&!JJ!iU'%!2$L
K!I5!J3"85rrh194J"Mp"JJ!JU'%!2$LK!I5!J3"89dB'2NJ"j&eJ!!!!I(-EH(j
J"c@5J3"8XN%!2%'#!(aqB!Fd,!$re8'#!!Jli!!!1'%"p$L!!"*)!HC*B!!!!(j
MQhK)!F'pB!!!!,"K!$USS3!kI+!(08'#!"JiB3$d1)!$pNJ$qIf!33!85!!!&(j
M"c3iJ3$d5!2jSB""!"3iB3$d1)!!!$LJ!!&)!H5eB!!!!%J!!"JiB3(d1)!!%8J
"jA&J!!!!1`!!!B#K!%JiB3(dJ-%!4(qN"c5!i3"!5rqDB@!!!!"rT1Yi1'%"p%[
qX#&J!!!!J!%!8#`!!!""J!!-I"d$H%J!!!Kr[GS8I"hJ!%##qH3l@J!"Id!(0#`
!!!*"J2QSU(!!"ML"!fJiS!!!5rlc(@!!!!"r)mYi1)!!"8J$qY@!33!89'!'2d'
#!#3iB!!!1)!!!%J"m"9J!!!!5!!!%$KK!&JiJ3"F5rrdFB!"!&JX!!!!3)$rl%J
$pe'!33!8I!1i3%'!rr5!IJ!!5!2k*B""!"3i!!!!J'%!6*!!(J!!5!2k@B""!"4
A!!Br3))!#$[J!!!k%3#1IJ1$H$L!!!")!rT4J%%!&&4J"Mp!JJ!F1'*IE)"M!!"
)!rD4J%%!&%J$qBQ!33!8IJ1$H$L!!!*)!rSKJ%%!&&4J"Mp!JJ!X9q-'2MJ$!"H
`!3!k1'!$pML!!r'SS3!k1-!!!%J"a0eJ!!!!5!!!$%J"e+&J!!!!J!%$@$JK!e#
k!Ir!I!J$TNk!!#!!!!!!I!J#TMKJ"!#3!!%!#*3Krm")!rf4J%%!&$L!!!")!!"
!I)8MH$M!!!K)!!!J9+!(re5Jq(j"JJ!-E!$YZ'J!Jb"m"30i1-Errb`'!!"!J[r
J9)!31RbM!5iiK!!",!3"!%'!rm#!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!!!!!!
!1'*Nk)!$!!K8!!3qB!-!!QKJ!!&m!`(@9!2'2Nk!!#!j!Q6S2)!)#6LLC23i")3
&J1J!!)%P!!"mj"TiJ-J!"&5%&EU"5!!)I+NJ,P6R`Mj94-)qI1FUH&6P"Mk3!1J
!!(c'+K4mTJ(@N!$)!!3i"3!"9!9'2T!!#!!%I8!UH&3!&ETm#3!ZI)!#H*!!#!!
)6S!!),qKrr4m#!+Q2+!M46MLC1Jm`")d2)!d9MLPCiQ3!!%!#$J'9RJlS`!"P#(
rX$[J!!#3!!F!!$J%H*!!N!#R!!53!!F!#)J$!!"m(JGd5!!!')Kp!!"mB`Gd5rr
r26Zp!!%lr`!"I"r`!%'!rqL!!3"B1#%!8,ZKrr4m#!1Q6S!!)!!!!!#rSIrdI!J
#TT!!!3!)P#(rS)1N!!",rrpY1m!!!%J!!#b,r3!!1ld!!8[rrXPri"Ti9"m'2Rr
MqhK,rrlC1'%!1(rMmDilhJ!","i!$%'!rp5)!3"#+!!!!%##!"L)!3"$+!!!!%#
#!!`iB!!"5!!!#$KJ!!#!!3"S1#%!B,ZKrr4m#!1Q6S!!)!!!!!!!!!!![i(rm(`
)!UCmI"YiI*dMH$[J!!#3!!%!#*3Krl")!!!SLp`!!%[rrMer`"Ti9"i'2Rr$mhK
,rrj0Q(`!!$ZF!!%lr`!"I"rS!%'!rpL!!3"B1#%!8,Z"rr"m#!1Q6S!!),pKrqa
m#!+QI(dEH*!!!3!)P#(qJ)[$!!!iJ3"N1,i!!8J$peQ!33!81!!!!*J"!%3li!!
"5!!!@(rM"c3iJ3"NI!3BVLJ!!$""J!"!+!!!18'"!$JX!`!"3)%!3$KK!%4)!Fk
4B!!!!$LIrrqBJ3"%1+%!C$KJ!!&)!FlTB!!!!)["!'4)!!!81rm!!ArJ"c4m!2!
!3)(rT$[J!!&)!!!NIq-(0$L"!'4m""LZ+!!!6d##!!`i!!!`I!3CVM[r!!&ri`F
d9m!'2R`$!!"!JIr81'%!C$L!!#e)!Fj*B!!!!(ar'hKri!Fe3B)"1$JIrrqB!3"
N1'%!C$L"!%")"!D&J%%!&*["!'4rj2Yi1+%!C$KJ!!&)!Fj0B!!!!$KJ!%')J3"
P9'-'2RaN'&!i!!"#I'-!0&4mhMj8!!BqI'3!8(aM!$4rJ10j9([H2N##!!aAB!B
r3B)!'$LK!'3iB!!"1)!!!8J"cIeJ!!!!1'%!C$L!!#e)!FfYB!!!!(ar'hKri!F
e3B)!R)["!'3i(rrr1'%!C*J"!'3iJ3!m5!3&jB""!"5E`3"NIq6lH$LK!'3iB!!
"5!(0V@!!!!"AJ!Br3B)!&)!"!$`F!2rrN!!"!$a)!!!B9f!'2d'#!"#!!3!mI!"
'F*!!!3!m1'%!C$L"!$K)"!@4J%%!&)#K!%"rT1YiJ'%!1)!"!$amT4R@N!#K!%"
mC3)8N!"K!%")!r04J%%!&)!"!BJi)3'!Zf(rl(`)!kC1J!!J!!!!!!!!!!!!!!!
!1)*Nr$J!!!!iBQ6iN!!%!!#3!!-!!%k!!#!!!!!!!!!!!*2Krram#!+Q1q*Nr*!
!!3!)P#(r`)"r!!!S!`!!3B)!&%J$rPQ!33!81!!!!*!!(`!!1'*Nq$J!!!#3!!-
!!)!"!%Ji)3"!I!J$TS2Krra1J!!J[d(rk(`)!UBliQ6mI(SEH$[#C2KmQb0iN!!
"!!L8)Iq`J(m!!#J$!!""JJ!FJ*i!!$J%!!%FJ!"15!2m3B""!"4)!!!81'!!6NJ
$r%Q!33!8N!"r!!")!ra9J%%!&(ap'hKrS!Fe3))!G)"r!!")!r6YJ%%!&)!H!!!
iQJ!'J,m!!"aJ!%kS'J!!Ji8!!(qF'K5`(!!!1(`!"S!D!!+3!"`!!NJ"bk&J!!!
!J"X!!MKm!#`iQ`!'N!!F!#K)!FZ*B!!!!)#H!!#!I`!!1!3!!C!!(J!!5!2iBB"
"!"4rSqYiJ!%!@$JK!&"m#!1QZd(rk%k!!##rJIr`I!J#TM[LC2`l`!!!N!!"!!L
8)Ik!J(m!!#J$!!""JJ()5!2d4B""!"5!I`!!Jk-!!%J!!CLSI3!!5!(*p@!!!!!
iJPDZI'-(0+J%!!"m!`!!3B)"F)JG!#`S!!!!3B)"C$JG!#b3!!%"$MJ!!!!iB3$
mU*d!!,#"!4+!R3!SN!#"!5b`!3%B5!2f1B""!"4mB!Fe3))"-$JG!!D3!!%"$MJ
!!!!iB3$mU*d!!,#"!4+!R3!#N!#"!5b`!3%B5!2f"B""!"4mB!Fe3))!r+LG!!!
iB3#dJ,d!!MMG!!C)!DT&B!!!!+LG!!!iB3"XJ,d!+$MG!#a)!DSYB!!!!$KL9Z-
lJ!!!L!-!!#J!!!""JJ!J1'%!E$L"!,4)""dKJ%%!&(aJ"c9!JJ!)1i!!!9H!"Mp
"JJ"81'%!Y%J"!9PJ!!!!1'%!E$LG!!C)!3)jB!!!!(aJ"c9!JJ"`1'%!FMLG!!C
)!FRaB!!!!)#K!83iB3"XJ-%"5$L"!4a)!2cTB!!!!%J!!%3iB3"X5!%"#@!!!!#
S(3!!1*d!"MKK!$L`!3"11!!!!)#p!!+3!+%!D)#p!#L3!+%!A*!!J3"+N!!"!&4
)!rQeJ%%!&$[H!!%l[3"11'*Nq)!$!!"m(J!!3B$qB)"r!!")!rCKJ%%!&)!"!BJ
i)3'!Zi(rm(`)!kC1J!!J!!!!!(`)!UD3!!%!#*3Krl")!!"N1'*@hiJ$!!!S!!!
!3B)!*$aJ!!%iBrrr1)%!1$LJ!!!i`!!!5!2e(B""!"4)!!!B2'!!!6KMrrmiJ3!
i5!2e(B""!"48B!Br3B)!'+!"!$JS!!!'3))!$%J!kePJ!!!!2'!!!6KMrrmiJ3!
i5!2Y$B""!"48B!Br3),rL)!"!&Ji)3"3I!J$TNk!!#!!!!!!6S!!)!!!!!!!!!!
!!!!!!,qKrr4m#!+QN!!"!!L8)Il3N!"K!8JiB3&)Jk%"N!#3!)%"6$L"!$L$`3'
8N!#K!9#3!-%"9*!!i3&BN3%"A*%K!@#433&N5!2bXB""!"4mIaYiIq!(08##!(3
S(3!!1)!!!%'#!!KNK!!#+"i!!%'#!!KJK!3!1'%!1$LK!)Ji`!!!11!!!$N!!!"
)!r+&J%%!&(ar'hKri!Fe3))!-#JG!!""JJ!-L!%!PCJG!!!S(J!!3B)!'(r%mhJ
iB3$!1+!!%%J$m'f!33!8Iq2lH)!"!6Ji)3%`I!J$TVZKrr41J!!J!!!!!,mKrq4
m#!+Q1m*P!(cC-hJliQF8I2`lH(dD3hKp1dYiN!!"!!L8)IeJX'%"-(bM+hJiS!"
!N!#"!6)iJ3%f5!2`$B""!"3lS3$ZXb%!k(p$dhL6J3$UIk6VH$LJ!%")!qrYJ%%
!&$aJ@%-iBde%1)!!J8J%!C'!33!8I(`EH8##!!`lJ2p!5!!#,%J$m)'!33!8Ii2
MH%J$m%@!33!8Ii2MH%J%!a'!33!81'!!!$J!!!LBB3#QI!N$TMM"!"3iS3$NJ'8
!")3&!!L3!'B!"*3'!!K#!2r`J)8!"$KJ!!!i!3"XN!#'!!5JK3!)X)B!#*!!B3"
JN!!"!'5!B3!BJ)%!()#K!##!`3!NJ1%!+)%"!#b")3!`J8%!0%[rrJdi!3%`J(m
!!$L"!1L3!!%!IMJ"!+#!`Jcm11!!JT!!J3##J+)-q*!!!3#'J))3I,$K!(b!!K"
iU2X!!,$K!)U3!-%!M*!!S3#3!*!!J3#8N!!"!*L3!'%!R%J$k`Q!33!85!2r%B"
"!"4mHKYi1'!!#dJ!iq&J!!!!Ik2VH%J!j%9J!!!!1'!!!8J!e9PJ!!!!5!(*-@!
!!!")!qk*J%%!&$L#9XamI4YiU'3!!%J$lVf!33!8J"i!!#J!!!"!JJ"!Ii2MH%J
$m4@!33!8I'!EH)"m!!"m"!0iImMcH$LL&'3ii3"S15%"H$M!!!&)!r,0J%%!&(a
m'hK)!!!)1i!!!(q!"c9!JJ!BJCi!!$KK!(a)""laJ%%!&(am'hKrSqYi5!2Z5B"
"!"5S!3#+X"X!!)"r!!")!qSYJ%%!&(p%dhK)!rj*J%%!&)#K!(3iB3#J1)!!!$M
!!!!ii!!!13!!!8J"K'&J!!!!Ii!(08##!##S!3#+,!!!$N##!"3iB3$S1)%!S%[
rq1emI"Yi1'!!!%J!e&&J!!!!5!((1@!!!!"rJq0iJ!%#U$JK!U"m#!1QZb(rj%k
!!#!!!!!!!!!!!,qKrr4m#!+QI(dEH(bH)hL3!!%!#$J!!!#8)Ij!N!!"!%3iS3#
N1!$rrkKM!!#`B3"11'%!1)#G!!+3!)%!D*!!S3"+X!%!9%J$m"f!33!8I(mEH(r
J"c9!JJ!NJ!%!R$Kq!!BiJ3#NN!!H!!+S(3!!X"i!!%J"a)&J!!!!Iq2lH)!"!FJ
i)3(!I!J$TVZKrr41J!!JI)3(0$J%rrmF!!!QI5-#&%J!!+Ji!!!%I!N$TMMKrp3
ibIrmJ)B!")3'!!L3!)F!"*3(!!K#!2r`J+B!"$J!!!5JKJ!)I!N$TT!!T`!%13R
rr,#(!!JiirrmJ)F!")3(!!L3!)J!"*3)!!K#!2r`J)F!"$J!!!4m#31Q1-2rr*!
!L!!%1+(re+!(!!L`#!!)J)8!")3&!!L3!)B!"*3'!!K#!2r`J)8!"$KM!#DJ"3!
)15RrfT!!KJ!%X!B!#(`*'%""JIpB6S!!)!!!!!!!!!!!!!!!!,pKrqam#!+Q1m*
P&(al'hJliQ8FN!!"!!Ji!!!!P#(q3)"q!!#3!"m!!%J$l)'!33!8J(i!!$J"!+5
$J`!!N!!"!%U!'`!#N!!"!*bSZ`!!1)$rri!"!*`iB3!iX+%!6V#"!&53!!%!D%J
$lTf!33!8I(dEH(qJ"c9!JJ"mL!%!9P3!"[G"JJ!XS!%!B&3!"+9"JJ!JJ*i!!$K
J!!!i!!2VJi3!!*!!I`!!N!!F!!*)!!!-1!!$kC!!(!!#J"m!!$Km!!BiJ3#NX"`
!!%J"`XeJ!!!!J(m!!$ZF!#Bi!`!",!!!#T!!(`!!3B)!%)!"!'JX!!!#3),rA)"
q!!#!(`!!J'-!!(`%"c4,rria1)!!!%J!!"L!IJ!!(!3!*S"M!!"mJ`-Z1)3!!B!
I!!"m"!!!3B$rj#`!!!"!J3"!U(X!!$L!!!")!2XPB!!!!&4J"Mp"JJ!BJ(i!!$J
!!qk!B`!!N!!$!!*)!!!8J(i!!$J!!qL!B`!!N!!$!!+!IJ!!5!2[$B""!"4rSqY
iJ!%"b$JK!F"m#!1QZf(rl%k!!#!!!!!!!!!!!!!!!!#rBIrXI!J#TMZLC5"mHaY
i1m*P%$[LC4amR#0iN!!"!!Ji!!!!P#(r8*!!!3!i1'%!2%J$jf'!33!81'*PE)"
M!!")!qHaJ%%!&$KK!$K)!qqeJ%%!&%J$lm@!33!8J)),X$KK!%")!B8YB!!!!&G
J"Mp"JJ!J1'*DU(q%"c5!B`!!J+-!!+J&!!"m"!!!3B!!,$J!!!#![J!!N!!I!!!
iB!!!1)!!!%J$rm@!33!81!$rrl!G!!")!!#-U"d!!(`%!!""JJ"B('3!4MKM!!*
mC4S81)%!5$LJ!%C)!qQKJ%%!&$KK!%K,rrepXjd!!$KJ!!#![J!!1)!!!%J$rh'
!33!8J"m!!$L!!!'![J!!I!-(0%J$rd'!33!81'%!3%J"K-9J!!!!J'%!1$L!!!&
)!qr&J%%!&)"K!$a)!qMjJ%%!&)!"!,Ji)3#`Zf(rl(`)!kC1J!!J!!!!!!!!!!!
!!!!![i(rm(`)!UBliQ8BI(`EH$ZL@UJl`Q9XN!!"!!L8)Iq`1'%!1%J$jJf!33!
8J(i!!%J$jQ'!33!81!!!!)#r!!#3!!%!2$L"!$`iB!!"5!3,0B""!"48B!Br3B)
!F(q!"c9!J!!8U!%!2#`!!!"!JJ!N5!!!a)"p!!#SJ3!mJ'-!!+KM!!!i!rrrI!3
!!%#!!+L!J3!m1'!!!)#r!!")"!VpJ%%!&+J"!$`iB!!"J,m!!(`!iK5`!3!mJ)%
!2%J%#Yf!33!85!!!6)"p!!#!B`!!U!-!!#`!!!""JJ!i1)!!!)#r!!#3!)%!2$K
J!!&)"!UYJ%%!&)"q!!!iJ!!"5!'jj@!!!!!iJ!!!5!2NXB""!"5!I`!!5!3+RB"
"!"5SJ3!m1'!!!8[rrAf!B3!i5!2RTB""!"5!!3"B1#%!8,Z"rr"m#!1Q6S!!)!!
!!!!!!!!![k(rp(`)!UCmI4YiI,iVH$[J!!#3!!%!#*3Krl#!"!!#9!!'2L`!!"Y
"JJ#X3)!!(#`!!!e"JJ!i3)!!h#`!!!0"JJ!X5!!!d#`!!"p"JJ"i3)!!%#`!!"j
!J!"F5!!!Z#`!!#j"JJ#-5!!!V(qMkhJiJ!!"5!'j(@!!!!!S!`!!3B)!P%J$il@
!33!89'!%2d##!)4rSqYi1)!!!8J"YM9J!!!!1!!!!E!H!!!li!!"5!!!C$KJrrp
,rrhj1q!!!8J!!&3iB!!"5rrpk6[J!!&)!!"%1)!!!NJ"YIPJ!!!!1!!!!V!H!!!
li!!"5!!!++!%!!j8!!A[3)%!($L!!!*)!EA4B!!!!$J!!!+`(J!!1q!!!ArMqhL
!!3"B1#%!8(`)!kDlSIrd6S!!)!!!!!!iB!!!6S!!)!!!!!!!!!!![i(rm(`)!UC
mI"YiI*dMH(bq+hL3!!%!#*3Krk")!q`pJ%%!&$J!!!#3!!%!1(ar'hJiB3!m5!2
MEB""!"4rJq0i5!2M`B""!"3iB3!i5!2VaB""!"4)!q[9J%%!&)###l!iB3"!5!'
"2@!!!!"rJq0iIk6VH$LK!%K)!EDTB!!!!$KK!%K)!q`&J%%!&(q$ihK)!q)KJ%%
!&%J$rDQ!33!8Iq6lH%J$rVf!33!8Iq2lH(r%mhK)!q[YJ%%!&(rMqhK)!q[jJ%%
!&$KK!%")!B%PB!!!!$KK!%JiJ2rr1+$rrdJ$kf'!33!81'%!5%J$kq@!33!8J'%
!1$L!!!&)!q`&J%%!&)"K!$a)!q8jJ%%!&)!"!'Ji)3"JZi(rm(`)!kC1J!!J!!!
!!!!!!!!!!!!![m(rq(`)!UCmIKYiI*mMH*!!!3!)1!!!!*3Krk#3!!%!1$KK!$a
)!q*0J%%!&(r$mhK)!q+KJ%%!&$KK!$K)!qUPJ%%!&%J$kV@!33!8J)),X$KK!%"
)!B!GB!!!!(r$mhKrj2Yi1+%!5%J"YBPJ!!!!1'*C1%J$mmf!33!81'%!5%J$kb'
!33!81'*C+%J$ml@!33!81'%!5$L!!!%iS!!"5!2UFB""!"3iB3")5!2UVB""!"3
iB!$05!2c@B""!"3iJQ8%1'%!5)#%!!#!a!!!J+B!#)!'!!b3!+%!5*!!!3"-5!2
ldB""!"3iB!!K5!2c*B""!"3iB3"!5!&rb@!!!!#!B3!i1)!!!8J$kXQ!33!8J'%
!2%J$irf!33!8J!%!D$JK!'#l`IriI!J$TNk!!##r)IrNI!J#TM[LC@`lS!!!1m*
P"*!!!3!)P#(rN!#!I`!!5!2J-B""!"3iJ3"!5!2J2B""!"5!hJ!!U+%!3UL"!%B
S"J!!U'%!3+J"!%4mK5"3I*X(0(`$!&"m'JFd3B)!0)"Q!!#SJ`"HU'-!'(b!"c3
X!!!&3B!!#$L!!!9mJ!Fe3B)!%(aN'GBi!`!'I"d(0)"r!!!iS3!i1-%!2$MK!%J
iJ!!(5!2IIB""!"4rS!Fe3B)!E+LK!%KrZ3FdU)%!6$MK!%Km"FS8I)8J8)"r!!"
mR!FdX!%!6+LK!$JiJ!!(J-%!2%J$i@@!33!8J(i!!$LCrrU!B`!!U!-!!(`!)K5
`!`!%J(i!!)"M!!#S!`!)I!!L&,!$!!a)!!"JU+%!5$KK!%JiJ0M`1!8!!A`G"c3
iS0M`5!2KlB""!"5!I`!!11%!5+LK!$JiJ!!(J-%!2%J$i2Q!33!8J(m!!$LK!$J
i`3!m11%!5$L!!!4)!pkeJ%%!&+Z"!%Ji!!!"X!%!1%J!!#am(H"3J(m!!(`!!0"
m"JFd1+!!!%J"XLPJ!!!!U'%!1$J$!!'`!3!iU)%!1(b!"c3X!!!(3B$rc)"r!!"
)!pk4J%%!&(`Gi&"m!0"3If6EH(`&"c3i`!!!5!2K&B""!"5!!3"i1#%!F,XKrq4
m#!1Q6S!!)!!!!!!!!!!!I!J#TMLLC4L3!!%!#*3Krm#!T3!!5rrlMB!"!%Ji)3"
!I!J$TNk!!#!!!!!!!!!!!(`)!UBiSQ83N!!"!!L8)Ir!J+8!!%[rqef!!3")1#%
!3(`)!kC1J!!J!!!!!!!!!!#r)IrNI!J#TRak'hKmQb0iI,`VH(cG-hKmrMYiN!!
"!!L8)IqJ1'%!1%J%"1'!33!8I'!(08##!2`li!!!5!!!`(rJ"c9!JJ!3Id$6H(p
MfhK)!!!8Ii!(08'!!,"rJ10iIk2VH(`!"c3X!!!%3B)!E%#!!"`X!!!#3B)!2%#
!!#`X!!!"3)!!'%J!!&JX!!!'3B)!-%#!!%a)!!!d2)"*3cXN6L0)!!!m2)"TBcX
NE$K)!!!`2)"TBcXNE$4)!!!N2)"TBcXNFcK)!!!B2)"TBcXNFc4)!!!-2)"TBcX
NFb1!J3!iIbA,H%J%"$Q!33!8I'!(08##!#`lr`!"Iq!(0#`!!!*"J2mmJ-%!1(r
$mhJiJ!!!1+!!!%J$p*'!33!8J'%!1$L!!!")"!34J%%!&)!"!'Ji)3"JZb(rj(`
)!kC1J!!J!!!!!!!!!!!!!!!![f(rl(`)!UCmI"YiI*dMH(br+hKmfc0iN!!"!!L
8)Iq3!%J$i%'!33!8I(iEH$KK!%!iJ!!!1+!!!$M!!"!ii!!35!2QQB""!"5S(`!
#2'"TBhqNkhL`!3!k1'0c)kJI!!#`!3!iU"m!"V!"!$kS(`!%X!%!2%J"I@eJ!!!
!I(mEH8'#!54)!q#&J%%!&&GJ"Mp"JJ!B1)*C+$KK!$K)"!-&J%%!&%J!!"3iJPN
`1'%!1%J%!['!33!81'*@iiJ$!!!S!!!!3B)!J$KL9Z')!`!!+!!!!%'#!(")!r+
4J%%!&)"M!!#!B`!@J'-!!+J$!#!X!!!)3B!!8$aJD@0rT1Yi1'0c1%J"I0eJ!!!
!I(dEH8'#!$4)!preJ%%!&(qNkhKrj[Yi11%!1$KJ!!BiS!!%5rrpJAqMkhK)!q1
TJ%%!&%J!!'5!R`!!1!!!!MKK!%k3!)%!5$L!!!!iS!!!X!%!6$M!!"!ii!!35!2
PFB""!"4rJq0i5!2f[B""!"4)!r-0J%%!&)#$!!!iB3")1+%!3$M"!$Jii!!#13!
!!%J$m`@!33!8Im2cH%J$h`'!33!8+"m!!%'#!""rirYi5!2M*B""!"5!!3"i1#%
!F,YKrqam#!1Q6S!!)!!!!!!!!!!![d(rk(`)!UBliQ88I*XMH(cG-hKp'N0iN!!
"!!L8)Iq3!%J$mpQ!33!85!3"1B""!"4rB!FdJ*m!!"r!!#D!K!!!I!6bVRam'hK
8!aJi1!-!!h`E"c3iB3!i5!2E@B""!"4rJq0i5!2V9B""!"5!JJZ`1'%!4%J"H6e
J!!!!1)*C-(qMkhK)"!%pJ%%!&+JG!!*rJq0iJ*m!!(p'dhKm!0S8X!%!2MLK!$b
S(3!!U1%!2V!"!$`i"`!3U1%!2,!"!%)i"`!3X!%!3)!%!!"mJ2)8J!3!!R`%"c4
,rre*1'!!!%J$iV'!33!81'!!!%J$iY@!33!81'!!!8J$iS'!33!81'!!#8J$iU@
!33!8U)%!3UKp!!3iK!!#1!2rr(b$"c4m"!Fd5!2T4B""!"5!R`!!1(i!"S!%!!"
mB"S85!2T4B""!"3iB!!!5!2L-B""!"3iB!!-5!2L9B""!"3iB3"%5!&iS@!!!!#
!B3!i5!2FjB""!"5!!3"i1#%!F,Y"rqKm#!1Q6S!!)!!!!!!!!!!![`(ri(`)!UD
$)JUBI,SVH$[LC@Tmfc0iI2`lH(dG3hL3!!%!#*3KrG")!r*"J%%!&%J$rk'!33!
8I(iEH$KK!%")!pRKJ%%!&(r$mhK)!qRGJ%%!&)###l!iB3"85!&ha@!!!!!i!!!
!N!!"!&`iB3%%1*S!"NJ"Y!eJ!!!!L"m!!#J!!!"!JJ!XId26H$L"!,a,rqm"I'!
(08##!1!iB3%%1)%!`NJ"XpeJ!!!!5!!!c(p$dhJiJ3!m1+%!1%J#CF9J!!!!I'!
(08##!,#)!3!i+!!!!%'#!+4r3p0i1)%!E%J$hI'!33!8I'!(08##!)b!H3!!1)%
!E%J$h4Q!33!8I(JEH8'#!(5!H3!!I`6$H%J$h6'!33!8I(NEH8'#!&#!JJdBJ)3
!!%J$r2Q!33!8+!-!!%'#!"JiJ3%%1+!"!$M!!!")!phYJ%%!&(mMbhJiJ3"F1+%
!B%J$rT'!33!8Ib2,H%J$h3f!33!8I`2$H%J$h3'!33!81'!!!%J$i'f!33!81'!
!$%J$i*'!33!81'!!!%J$i'f!33!89k!'2d'#!"3iB!!#5!2JLB""!"4)!!!31'!
!!%J$i(Q!33!8U(X!!Rq!"c3X!!!#1!-!"E!"!%kSQ`!!U'%!6MJ%!!'`!3"-1!-
!%+KK!%b`!3"51!-!%,!"!&"!JJ$%5!2JhB""!"4mH"Yi5!2JdB""!"4mH4Yi5!2
JaB""!"5!Q`!!J"X!"(al'hKr!m0iN!#"!%53!!%!5%J$k2f!33!8Ib2,H$L"!%4
)!q#YJ%%!&(pMfhJiJ3"-5!2JRB""!"4r)mYiIf6EH(mPbhK)!rfCJ%%!&(mMbhK
)!qPPJ%%!&$KK!%4)!rfCJ%%!&(m$`hK)!qP0J%%!&(m$`hK)!q#KJ%%!&(mMbhK
)!q#9J%%!&(pMfhK)!q#*J%%!&%J!!&aAS!Br3B)!'$L#@5KrBpYi5!2pCB""!"4
)!!!81)*C-(pMfhK)!re4J%%!&+LE!!+SH`!%1)3!'6J$rrYmJ`FdI!3(0%J$jGQ
!33!81'%""%J$jH@!33!8L"m!!#J!!!""JJ"SJ!%!A#J!!!"!JJ!FU(S!!$Lk!!D
!QJ!#1-%!A%J$kA@!33!8J'%!A$`$[V!S!&"-3))!((r$mhKrTZYi1+%!6$L!!qY
,rrNY5!!!K(r$mhKrTZYi1+%!6$L!!qa,rrN95!!!E)!"!,iX!!!"3))!6+KK!,`
iJ!!!5!$TZ@!!!!"8B!Br3B)!((r$mhKrTZYi1+%!6$L!!qj,rrMC5!!!-(r$mhK
rTZYi1+%!6$L!!r",rrM"5!!!'(r$mhKrTZYi1+%!6$L!!qp,rrLT1'!!!%J$hK'
!33!81'!!!%J$hM@!33!81'!!!%J$hH'!33!81'!!$%J$hJ@!33!81'%!9%J"G&&
J!!!!J'%!3%J$f*@!33!8J!%#1$JK!M#l!IrJI!J$TNk!!#!!!!!!!!!!!$KL@UK
mK!FdJ'-!!)$$!!#S"J!!I!3!!%'!!!`iB2r96S!!)"aN!%Bi!!!)I'BD&(`*!kB
iTIrm1)2rrS"N!!5%"!!)N!"P!!58"3!)3J$rm)!%!!3iB!!!N!!&!!5J"!!)X!8
!#%k!!#!!!!!!!!!!!(`)!UBiJ!!!N!!"!!L8)Ir!5!)!)@!!!!!i!2rr1)*P'(a
Q"c4m!!FdJ+3!!(`!-&!`!2rrI!!"%(aJ!(JiJ!!!X!%!1$KJ!!'`J3!kJ)%!1%J
$qRQ!33!8U)%!1$KJ!!&,rqeaJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!,k
Krp4m#!+QI(BEH)-#$3KmRb0iI,FVH$XLC3`l3Q8)1'!(d6YLC33iJ!!!1i*P'$Z
LC4!iS2rr1m*PE*!!!3!)P#(qB%J$e1@!33!8N!"q!!")!p6aJ%%!&)"q!!")!p1
9J%%!&$L!"p&)!qHaJ%%!&)"q!!!iJ!!"5!29+B""!"3iB!!-5!2I$B""!"53!(S
!!%J$haQ!33!8I(8EH(kJ"c9"JJ!XJ(i!!%J$eT'!33!81'!!!%J"FmeJ!!!!IU5
VH$KJ!!")!K[GB!!!!)"k!!")!pHjJ%%!&)"k!!")!pGpJ%%!&$KJ!!a)!pkTJ%%
!&*!!H3!!5!2HYB""!"4mG4YiIU!(08'#!#b!IJ!!5!2@,B""!"3iB!!!5!&cD@!
!!!"qT+Yi1'!!!%J#'hPJ!!!!J(N!!%J$ee@!33!8J(N!!%J$eaQ!33!8J(S!!#J
A!!#!!K#FJ'-!!)##%*L3!!-!!$J#C55!HJ!!J'-!!*!!J`!)J(S!!)"M!!#3!!-
!"%'#!5aqilYi5!2BjB""!"3X!`!!3)%"'$KJ!!")!pXTJ%%!&$KJ!!")!pY0J%%
!&$KJ!!&)!pVjJ%%!&$KJ!!P)!pXGJ%%!&)"q!!!iS3"B1)!!"dJ"TT&J!!!!1'%
!@$L!!!-iS!!$5!2ERB""!"3iB3"BI'3EH%J$k@f!33!8N!"l!!"mC"Yi1'$rrNJ
$q8Q!33!8IZ1lH%J$f&@!33!8I(8EH(lMZhK)!pBeJ%%!&)"h!!"qT+YiJ,X!!%J
$l3'!33!8IZ1lH%J$fHf!33!8J(X!!%J$e#Q!33!85rra5B"l!!")!p3CJ%%!&$K
J!!")!pSpJ%%!&$KJ!!a)!pTKJ%%!&)"L%*4)!p*&J%%!&(aP'hL!IJ!!N!#L&(!
iJ!!(5!'PC@!!!!")!!!31!!!!*!!'`!!5rr`mB"q!!!iS3"J1)!!"%J"TD&J!!!
!1+*DU$KK!&JiJ!!!J18!!$LJ!!!i`!!"J1F!!+MR!!")!pY"J%%!&+LK!')iB!!
5U)%!CMJ!!!#`B3"%I)8J8*!!!3"3I`2$H,#"!%C)!qQGJ%%!&*!!B3"8J(i!!%J
$d-f!33!81!!!!B#K!%53!!%!1(aR'hJiB3"JNi%!2$L"!&Ji`3"313!!!6NJ!!!
j3!!!5!2TFB""!"5!I!!!9X!'2i#D!!#!B`!!N!#$!%4!JJ!8J(`!!$J!ri#!B`!
!Q!-!*)"L%*!!5!242B""!"4mC4YiJ(i!!*!!SK4X1)!!"%J"T&eJ!!!!1'*P($L
J!!!iJQ8J1!$rrj!!S`!!1'!"I,!%!!")!p[*J%%!&$L#C453!'3!!%J$fp'!33!
8I(8EH(kJ"c9"JJ!XJ(i!!%J$ddQ!33!81'!!!%J"F)9J!!!!IU5VH$KJ!!")!KL
9B!!!!)"j!!!i!!!!J1)3M$LK!'#!B`!!J-)3L$L!!!D3!1-!!)"j!!#!B`!!N!$
$!!L!H3!!J'-!!*!!!`!%J(i!!%J"T"&J!!!!1'%!@$L!!!!iS!!!1-!!!6MJ!!"
)!pQpJ%%!&+LK!')iB!!3U)%!CMJ!!!#`B3"%I)8J8*!!!3")I`2$H,#"!%C)!qJ
CJ%%!&*!!B3"-J(i!!%J$cdQ!33!81!!!!B#K!%53!!%!1(aR'hJiB3"JNk%!2$L
"!&Ji`3")13!!!6NJ!!!j3!!!5!2RlB""!"5!I3!!1!!!!)#j!!#!J`!!J')3K*!
!T!"%J*d!!)#%!!#B"!!N5!22`B""!"4mC4YiJ(i!!*!!SK4S1)!!"NJ"SZ&J!!!
!Iq2lH%[rqP8i!!!!J,`!!*!!!3"!1)%!3$KJ!!&)!r6YJ%%!&&4J"Mp!JJ!JJ(i
!!$L!!!&)!D3eB!!!!$L!!2p)!mm"J%%!&$KLC@U)!`!!+!!!!%'#!"`iB3"S1)!
$k$LJ!#K)!p"eJ%%!&%J!!"JiB3"S1)!$k$LJ!#G)!p"GJ%%!&)"q!!")!mj"J%%
!&$L"!'K)!q9&J%%!&)"q!!")!miTJ%%!&%J"T@&J!!!!J(i!!%J$cK@!33!85!2
4$B""!"5!!3'S1#%"S,UKrp4m#!1Q6S!!),mKrq4m#!+Q1q*P'(bF)hJl)Q83I(X
EH(bp+hJl`!!!N!!"!!L8)Iq3!+!%!!!X!!!$3B)!)%#!!"!X!!!"3B)!,%J!!MJ
X!!!&3B)!#%J!!LarBpYiIi6MH(qPkhK,rqQPI(iEH%J!!K5!I!!+1)%!4%J$hQ'
!33!8I(SEH(pMfhK)!meaJ%%!&)#K!%4m"4K!3))"k(p!"c3X!!!%3B)!&%#!!GJ
X!!!$3)!!*%J!!Fb!R!!+I+-VH%J"E,PJ!!!!1!!!!,!F!!")!!'`J"`!#MKK!%#
3!!%!3%J$hLQ!33!8J,N!!$L"!%L!B3"!J+8!!)$&!!#!"3!%N!!"!%bSS3"1N!$
"!%Ji"3!3X+%!5V!"!%j)!md4J%%!&&4J"Mp"JJ!FJ'%!3+#F!!k!Z3!!5!2c6B"
"!"4)!!&%J,m!!$L"!%L!B3"!J+8!!)$&!!#!"3!%N!!"!%bSS3"1N!$"!%Ji"3!
3X!%!6NJ$c,f!33!89'!'2d'#!3L!B3"!S*`!$S#r!!")!r,jJ%%!&(ak'hKrBpY
i1)!!!8J"SIeJ!!!!1!!!!)#r!!#3!!%!2(aj'hJiJ3!m1'!!!8J$mRf!33!89'!
'2ham'hK"JJ!BIb2,H$L!!!")!mbCJ%%!&%J!!"4r)mYi1)!!rdJ$c)@!33!8J!%
!2$L"!$L![`!!1'!!!C!!!3!iU-%!1$J'!!'`!3!i5!2b*B""!"48B!Br3B)!&$J
!rrq`!3!m1i!!!$Y!!!#SJ3!mIi2MH%[rj4eA3!Br3B)!2)#r!!!iJ3!m1'!!!8J
$mH@!33!89'!'2d'#!#"rBpYi1)!!!8J"RQeJ!!!!1!!!!E!G!!!l`!!"Im2cH)!
"!(Ji)3"`I!J$TVXKrq41J!!JNq(rr(`)!UCmIaYiN!!"!!L8)Ir!J'-!!#J$!!"
"JJ!85!21ZB""!"3i!!!!N!!I!!#!!3")1#%!3)2Krram#!1Q6S!!)!!!!!!!!!!
!!!!!!,l"rpKm#!+QI(BEH$[LBZ3lBPp81i*R&(bA)hJlSQ8BI,JVH$[#@UL!BK#
!I0ScH*!!!3!)1!!!!T3Krj!!X!%!1%J$bf'!33!8I(NEH$KK!%")!mZaJ%%!&)"
m!!!S!`!!3B)!&%J$bUf!33!85!2S&B""!"5!H`!!+!-!!%'#!"4)!mU4J%%!&%J
$jrQ!33!8J(m!!#J$!!""JJ!85!2+GB""!"4)!qIGJ%%!&$LLC@Tr!m0iId66H*V
P!!#!YJ#)5rrfB8J"U"eJ!!!!Ib2,H$L"!$K)!meYJ%%!&+J"!$JX!!!"3B)!$#`
!!!*!J[rJ5!'S8@!!!!#S!3!i,!!!!8##!,`iB!!#5!2A@B""!"4mB"YiJ(i!!(`
D!hK)!mjGJ%%!&$J!!!#3!!%!2%J!!&LS!3!mId66H)$H!!!iS!"'('!!4S!'!!!
iB`!#I'!D&%J$hjQ!33!85!29FB""!"4mB!Fe3))!2)#D!!#SC!!!1!-!!E!%!!#
SB3!m1!-!!E!"!$b![3!!1)%!2$KJ!!&)!qr"J%%!&&4J"Mp!J[q8J(i!!%J$dDf
!33!8J(i!!%J$eTQ!33!8Nei!!$KLC4#!B`!!+!-!!%'#!!a)!r#pJ%%!&)"p!!!
S!`!!3B)!$%J$m+Q!33!81'*P#)"M!!!S!`!!3B)!$%J$eP'!33!81'*P$)"M!!!
S!`!!3B)!$%J$eMQ!33!81'*P&)"M!!!S!`!!3B)!$%J$eL'!33!81'*P")"M!!!
S!`!!3B)!$%J$i&Q!33!81'*PE)"M!!")!m`*J%%!&(mMbhK)!m`9J%%!&$KL&(4
,rre*1')8F%[rr8%iBK4X5rrp16KL&'K,rrdaJ(`!!#J$!!""JJ!J5!2)JB""!"4
)!mYjJ%%!&)"m!!")!mZ&J%%!&)"l!!!S!`!!3B)!)%J$b&Q!33!85!2,8B""!"5
!H`!!5!2,AB""!"5!I`!!+!-!!%'#!#")!mJaJ%%!&%J$bbQ!33!8J(m!!%J$bc@
!33!8J'%!3%J$bk'!33!81!!!!DKK!$Km!!FdI!-!8(`!!$48!piqJ!%!H$JK!("
m#!1QZX(rf%k!!#!!!!!!!!!!!!!!!!#6iIrmI!J#TRbr+hQ3!!%!#*3KrX""JJ"
F+!-!!,#I!"C!JJ!81!!!!*!!(`!5X"m!(%J!!#L)S`!!1)%!1$LP!!&)!mYTJ%%
!&$J"!$L3!"m!%MJ!rrq`(`!FIq2lH%J$dGf!33!81!!!!*!!(`!55!!!#$KJrmk
!!3&)1#%"3)2Krram#!1Q6S!!)!!!!!!!!!!![m(rq(`)!UCm[LYiI0mcH*!!!3!
)P#(r3$LK!$K,rrp9I'!(08##!$5S!3"1X"i!!+#"!'DS!3"1J+%!D(`!)K5S`3"
qI!!U&)#"!&Cm!$)8I!3#&*!!(`!!J!%!b$JK!-#l`IriI!J$TNk!!#!!!!!![k(
rp(`)!UCm[LYi9'-%2RbG)hL3!!%!#$J!!!U8)Iq`J-8!!(bQ!jBi!`!"I!8!3%#
#!$4rSqYi1)B!b%J$dKf!33!85!254B""!"4mIaYiIk2VH%J$c2@!33!8N!"q!!"
)!!!)1q!!!(rMqhL!!3"B1#%!8(`)!kDlSIrd6S!!))!$!"L")`!S+!!!!)$M!#a
"JJ%S+!N!!%'#!5#"!`!N1!#rr(d!!$P"JJ!-+!F!!%'#!3Ji!!!!Q!3!!*J&!!#
B"J!!J!-!*&3!"lp"JJ!XJ3N!%LJ)!!""JJ$JL!J!!&3!"Mp"JJ$8+!!!2d'"!-`
i!!!"Q!B!!)!$!#48!!Gl3B)!9)M(!"ii!2rZI-B(G(c!!$P!JJ#N9-!'pd'#!#L
)#3!H9!!'pd'#!"!i!!!"Q!8!!%J!!#`i!!!"Q!3!!%J!!#!i!!!"Q!8!!*J%!!"
)!!!31!!!!CJ&!!#B"!!!L+8!!&5J"Mp"JJ!FJ!-!*&3!"hY"JJ!3L!F!(P3!"rp
!JJ!iL!3!!#J!!!""JJ!3J!-!*&3!"[G!JJ!J9+!'2d'#!"#!!`!N9!!&p8##!!`
iB!!!6S!!)$KJrmj1J!!J15!!!8J!!$#!i`!!J!3!!)%&!!"mi!*iI3!!18'#!!J
j)!!!1'-!"$L%!!3iT3!%1-Errhc!"c9"JJ!395!'2LJ!!!&"J[r%I50,H%k!!##
r)IrNI!J#TRak'hKmQb0iI,NVH$Z!!!#3!!%!#*3Krf#)!`!HJq3!*&3!"[H$a!!
SJk3!,%##!""8`!Br3B)#1%J!!!a8i!Br3B)#,&IJ"rp"JJ"FJ(S!%SJ$!!"8"3B
r3B)#&#J&!$p"J3)-1)%!1$LP!!&)!mJPJ%%!&$KK!$JiJ!!"5!2QAB""!"4r*-Y
i1'%!1%J"S'eJ!!!!9'!'2d'#!G3X(`!"3B)"b&IJ"le"JJ!XJ(S!%RmNbhJiS!!
!1-!!!8J$d(@!33!89'!'2d'#!D3X(`!#3B)"Q&IJ"hY"JJ!SL(S!(SJH!"k)R3!
HI'-(G(`!"h4mK!GdI'!#H(b!!$P!JJ&`9q!'pd'#!##JHJ!dS"i!0(`$!%""J!&
BS"d!0(`$!%""J3&-9q!(18'#!#!iHJ!J1*i!)$Lp!#!i`!!%5rrqE94J"Mp"JJ%
S9q!%jd'#!#!iHJ"81*i!9$Lp!&3i`!!%5rrq594J"Mp"JJ%%9q!'Y8'#!##!HJ!
fJ"i!0R`$!%""J!$XJ"d!0R`$!%""J3$J9q!'Fd'#!##!HJ!kJ"i!1R`$!%""J!$
)J"d!1R`$!%""J3#m9q!'-8'#!##!HJ"!J"i!3(`$!%""J!#NJ"d!3(`$!%""J3#
B9q!&ld'#!##!HJ"%J"i!4(`$!%""J!#!J"d!4(`$!%""J3"d9q!&V8'#!##!HJ"
)J"i!5(`$!%""J!"FJ"d!5(`$!%""J3"39q!&Dd'#!##!HJ"-J"i!6(`$!%""J!!
iJ"d!6(`$!%""J3!X9q!&+8'#!##!HJ"3J"i!8(`$!%""J!!8J"d!8(`$!%""J3!
)1i!!!9IJ"'0"JJ!39i!'2R`!!$48(0iq9i!'2d'#!(b!'`!JU*S!&K`!!%D!H`!
BI)-$,S!E!##!H`!B(!!!4S#D!'4mB`)8N!#$!!+!HJ!5L!-!!#J!!$p!J3!-1!!
!2jJ$!!#!'`!JJ(S!%Kb!!%D!'`!BL+-!!$L%!!CmJ#)81+8!!8J$aD@!33!8J(X
!)$J$!!'3!"X!))!"!+Ji)3#JZb(rj(`)!kC1J!!J!!!!!(`)!UD3!!%!#$J!rrq
8)Im`1+%!1,"K!'iiB!!!Q'%!1$KK!&L3!+%!DT!!J3#)X!%!G%J$b$'!33!8I'!
(08##!!b!B3#N5!!!#$KJrrq!!3$B1#%!d(`)!kC1J!!J!!!!!,pKrqam#!+QI*`
MH(al'hL3!!%!#*3KrV!iJ3!k1+%!16M"!$K,rrV0I(dEH(qJ"c9!JJ0i1!!!!*!
!'`!JL!%!1#J!!!""JJ!`J(X!+$L"!%5!B`!5L+-!!$LP!!&)!m5pJ%%!&$KK!%3
iJ!!"5!2LpB""!"5!!K4m1rX!0#J!!!"!JJ!81'!!b%J$c&Q!33!8N!"L&(b!BK4
m+!-!!%'#!`K)!mFCJ%%!&*!!BK4iJ"m!!#`!!!"!JJ!dJ(X!%RrQqhLSQ`!@1+%
!2%[rq6PmI4YiIk!(08##!,!i!!!!X"m!"$[!rrp)!!#JJ(X!%MLK!$bSQ`!@1-%
!3%[rq3PmI4YiIk!(08##!)#!I`!!J!%!3(`$!!"!JJ"XS(m!"#J$!!""JJ"B1!2
rrl!I!!5J(`!%J))8I"`!!!USB3!mJ)3!!(b%!K5$K!!%Um3!#(q%ihK,rrj4S"m
!")##&(`F!!!+J)3!!(`%!#jm!`!!3B)!'$ZJqZK)!!!31k$rcNJ!!!JlS2VSIk!
(08##!L#S!3!m1'%!K*!!B3$@X!%!fV2"!1!iB3$%Ni%!p%J$aPQ!33!8Im!(0#`
!rrpmI4Yi3B)"+(qJ"c9!JJ#`L-%!1RpNfhL)i3!j1'%!a$LK!%4,rrUPL!%!iM[
H!!&8!!Eh3B)"(+"r!!3iSK4iJ))8I%[rq(9mI4YiIk!(08##!3#J(`!%Ii6MH)"
L&(`F!!!+J'-!!(aM!K56J`!%S"m!")"L&(`F!!!+J'-!!(aM!K5c``!)U'%!2%[
rr9fJ(`!%1m!!!B##&(`F!!!+J)3!!(aN!5kJI`!%1!-!!E!I!!5$J3$d5!!!Q+"
r!!3S!`!!3B)!B$J$rrq`(`!%S"m!")##&(`F!!!+U'%!2)#%!!"mK!)8Ji3!"+[
%!!KrK10i5rrmpD!I!!5!JK4m(!!!#S#%!!"m"!!ZI!-!!%'#!!`lS2VS5!!!1$Z
J!!")!!!`1k$rf8J!!#KrS!Fe3))!))M"!$TrC0YiL1%!16KK!-3iS3"%5rrjJ6[
!!!&rS!Fe3))!&)"l!"b!'`!JI!-!!%'"rS"rS!Fe3))!K+"r!!3iSK4iJ))8I%[
rpcemI4YiIk!(08##!'LJ(`!%Ii6MH)"L&(`F!!!+J'-!!(aM!K56J`!%S"m!")"
L&(`F!!!+J'-!!(aM!K5c``!)U'%!2%[rr#@J(`!%J))8I"`!!!U!K!!!I'3",U"
r!!3i!`!"X"m!"%J!!!JlS2q8Ik2VH)!"!9Ji)3&3I!J$TVYKrqa1J!!JI1-L&$L
!!!")!!!NL!F!!#`!!#9!JJ!8I!-i8*!!"J!!1)!!!8J!!"3ij`!"I!-U&(`(!%"
"J2rBI)-MH%k!!##rBIrXI!J#TRbm+hPmHaYiI0dcH(cq1hJli!!!N!!"!!L8)Iq
J3B)!$(`%i!""J!!-1'!!!%J!!)!i`3!m5rrrK94J"Mp"JJ"XJ)%!2(pMfhKrKH0
i1)3!!6M"!$K,rrpP9'!'2d'#!%b!J3!mJ!%!1(aN!&!i!rrrI!!(0#J!!"p!J3!
)1!!!(j!!R3!!1*i!!A`&"c5B(J!!1q!!!B"K!$`iB`!"I(XD&%J$`('!33!8Iq2
lH)!"!'Ji)3"JZf(rl(`)!kC1J!!J!!!!!!!!!!#r3IrSI!J#TRak'hJiBQ9`I*X
MH$[J!!#3!!%!#*3Krl#)'J!!J'-!!#J!!!#VJ`!!3))!%,1E!!!li!!"5!!!6$Z
M!!)l`!!!5!!!-(p%dhJiI3!"5!'A(@!!!!"8B!Br3B)!%,2E!!!li!!"5!!!($Z
p!#BlhJ!"Im-(0(q!"c4m!`!!3B$rb(rMqhL!!3"B1#%!8(`)!kDl3IrS6S!!)*2
Krram#!+QI*mMH*!!!3!)P#(rX$L"!$K,rrp*9'!'2d'#!#5S!3!i1)*PF"`!!#D
!K!!!I)3#&)!%!#53!"m!!%J!!!`i!!!!N!!I!!#!!3"B1#%!8)2Krram#!1Q6S!
!))P$!!"mL50i13!!!$Q!!!!jB!!!5!!!B(cN@K4m`f#ZL!F!!(`!"h4m"J!!3))
!*#`-!!"!JJ!)I1NlH$Q-!!&m$&!!3B!!,(dS5hK)!!!`,!`!!%#"!"Km#5"!3)%
!$(eN5&")!!!)1@[rrcQ!!!!jD`!"I!XS!%'!rk"p!d0i6S!!)!!!!!!!!!!!!!!
!!,mKrq4m#!+QI(SEH6[J!!!lB!!!N!!"!!L8)Ik!3B)#$%J$`6Q!33!8I(iEH(p
$dhK)!lmCJ%%!&%J!!F3iB3"!1)%!1%[rrXe8B!Br3B)"S)"K!$K)!m%&J%%!&(a
p'hJiB3"J1)%!3%J"PFPJ!!!!1')8J$LK!'!iJ!!"5!'4j@!!!!!iB3"J1))8J%J
"P09J!!!!J)%!1(qPkhJiB3"JJ)3!!%[rrXdS!`!!3B)!')KK!%#!!3!m1f-!!Rp
JfK4)!!%mL'%!3$Z$!!*m(H!!3)%!N!"r3p0i5!2#5B""!"4r21K3Id26H(bHbK4
)!m9pJ%%!&%J$aD@!33!8I(mEH(rJ"c9!JJ%BId26H%J$[Mf!33!8J)%!2)"k!!"
m"1)8I)-L&(aNiK4mK1S8I+$`8%J$[BQ!33!8J'%!1(qPkhL!QJ!!J!%!2)"M!!"
mK!)85!1pDB""!"4rhXS85!!!S)"K!$KrTHYiJ*S!!)!"!$b!B`!!I)3#&%J$[8'
!33!8J)%!2)"k!!"m"1)8I)-L&(aNiK4mK1S8I+$`8%J$[4f!33!8I"cS8(p$dhK
rhJ)85!2"FB""!"4r3p0iIm6cH%J$a+Q!33!85!2%dB""!"4mIaYiIq!(08##!%4
r3p0i5!1pDB""!"4)!!!8L'%!3)!"!$`lB`!#If$D&)"k!!"rC0YiImAcH$M"!$`
ii3"!5rrlN94J"Mp!J[iNId26H%J$`3'!33!8Iq2lH)!"!BJi)3'!I!J$TVXKrq4
1J!!J[b(rj(`)!UCmR#0iI(XEH(bp+hJl`!!!N!!"!!L8)Iq!Jq3!!%J!!+3iB3"
!1)%!1%[rr+&8B!Br3B)!J)"K!$K)!llCJ%%!&)L"!%"mHKYiI"r5&$XN!!*m'3"
3I!$S!%'"!%b!!3!mI*X#&(`!bK4mC-S8I)65&(bJq&")!l[pJ%%!&)"K!$Kr4G0
iJ!%!2)"M!!"mQ`)85!1liB""!"4m'G"3Irm#&%J!!##!!3!mIm$+&%J!!"5)B3"
!J!%!2$[$!!*r`2)8If2EH(r%mhKrjIYi1-%!2$MK!%",rrU&9'!'2d##rd56r!!
!1'!!!)!"!)Ji)3#!I!J$TVXKrq41J!!J!!!!!!!!!!!!!!!!Nq(rr(`)!UCmIaY
iN!!"!!KmK50iP#(rX)J$!!!iI`!"1)%!1*!!!3!i5rrqbB!"!$LB(`!!J!%!@$J
K!&"m#!1QJq(rr%k!!#!!!!!!!!!!!,qKrr4m#!+QI*dMH$[Jrrq3!!%!#*3Krl!
iJ3!i5rrkY94J"Mp"JJ"JU!%!1$L#CA!FB!!QJ!3!!$[$!!*r`2)8J(i!)LJ$!!"
"JJ!mL*d!!%J$`RQ!33!85!2#SB""!"4mIaYiIq!(08##!"b!RJ!L1(d!!BLp!!#
!K!!!5!1kRB""!"4rirYiJ!%!@$JK!&"m#!1QZk(rp%k!!#!!!!!![m(rq(`)!UB
liQ9`I(iEH*!!!3!)P#(rX)J$!,miB!!!+!!!$d'"!'JiJL3J9!!31Rb%!#jmL31
Q6S!%))#I!!#S"!!!,!!!!%'#!%3i!!!%N!!"!$JiIJ"q1)%!1$LJ!!4,rrfKI'!
(08##!9Ji!!!%N!!"!$JiIJ##1)%!1$LJ!!4,rrf"I'!(08##!6L)(J#r+!!!%8'
"!5`iJL2B9!!31Rb%!#jmL31Q6S!%))!I!!!S!!!!3))!$$J!!!")!!!3J(i!L%[
rq[emB!FdI!-(0%J!!2#!(`!!+!!!!%##!!`i!!!!5!!!%)"q!(j,rrV9I'!(0(`
$"c9!JJ$)J"m!!#J!!!"!JJ!-1!!!!%J!!"#!IJ##5rrkVAaJ"c4m!`Fe3))!S)!
I!!!S!!!!3))!$$J!!!")!!!3J(i!L%[rqS9mB!FdI!-(0%J!!(L!(`!!+!!!!%#
#!!`i!!!!5!!!%)"q!3C,rrTGI'!(0(`$"c9!JJ"3J"m!!#J!!!"!JJ!-1!!!!%J
!!"#!IJ%+5rrk0AaJ"c4m!`Fe3))!+)!I!!!S!!!!3))!$$J!!!")!!!3J(i!L%[
rqJemB!FdI!-(0)!"!&Ji)3"3Zm(rq(`)!kC1J!!J!!!!!!!!!!!!!!!![Z(rh(`
)!UCmH"Yi1q*PF*!!!3!)P#(rN!#!B`!!Uf-!!(pp"c3i(3!"('!!*MKM!!*)!l1
*J%%!&*!!I`!!5!2!2B""!"4mI"YiIi!(08##!6L!I`!!+"J!!,0M!!""JJ$3I`2
$H%J$Z-@!33!8J(J!!$XJ!!!l3`!#5!!!S"rC!#D)HJ!!J"m!!$KM!!&8I!Bq1*i
!!hp$dhKmJ#)8IiAMH%J$YrQ!33!89i!'2RpD!K4A3!Ir3B)!*)JD!!#JHJ!"9"I
!$SJD!!08Bd!ZI[FD&(lh!K4)!!!)J[S!!$YD!!4r3p0iIZ@lH$L"!$a)!m2&J%%
!&(am'hKrJ!Fe3))!*)!I!!"r@VS8J)%!2$Xj!!&mB2)8N!#$!#4m'HJ!3B$rB(m
$`hK)!l[GJ%%!&(q!"c9!JJ"8If!(0)"r!!!I!!!Q1!!!*CJ"!$KmBm)81!!!!*J
$!!-iB3!i1)%!2$LJ!!&)!m04J%%!&(am'hKrJ!Fe3))!&)!I!!#!J3!mI'$#&*!
!J`!NIi2MH)!"!(Ji)3"`I!J$TVVKrpa1J!!J!!!!!,qKrr4m#!+QI(iEH$[J!!!
lS!!!N!!"!!L8)IfJ1)%!2%[rpc&8B!Br3B)$G)"K!$a)!lPTJ%%!&(aJ"c3X!!$
r3)%!#$J!!2q!B3!m1)%"4CJ"!84m"3FdJ'-!!%J$YTf!33!81'%!4$LH!#&)!Bi
&B!!!!$KK!83iJ!!!5!28aB""!"3iB3"%1)!!!%J$e,@!33!81(i!HML!!!")!lB
YJ%%!&&4J"Mp"JJ&X1'%"4$L"!%")!mC0J%%!&$KK!%3iJ3!i5!2'2B""!"5!(J"
DI!#'F#J!!!P"J3+J1')NL&3!%$TmB`!ZI'N$TNk!"#!iB3&%1)%!4%J"MQPJ!!!
!I(dEH%J!!R5)!3"%1'%"4$L"!%5B!3&%5!'0#@!!!!"mI4Yi5!!#9)L"!%3iS3&
%L!%"4$KJ!!&m"!"3I!3(0%J"MD&J!!!!1'%"4$L"!%4)!Bc4B!!!!(ap'hK)!!)
FJ'%!3)!"!$Km!`"3I!!!0&3GhMj)!!)%J)%!3)!"!$KmJ!*iI!-1F(`!)$Km!"K
39"d2rNJ!!H5!S3"!J!%!1(bNrR"8!`rqI!!S%(`%'448(3Bq5!!"a)!"!%#!J3!
iI)!#H(`$$R"m!#!iI!!B8&3G$rj)!!'NJ!%!1)#K!%"m"2j`9+-2rR`&!""m""N
89"d'2NJ!!B5!B3"!J!%!1(aM!&!`!rrrI!!C%&3G"Mj)!!&SJ"i!@R`!KR!S!!!
*3B%"@$KL*'"8!"!kI'-!,RaT!kC1J!3J1'%"4$L"!%4)!BdKB!!!!(ap'hK)!!%
XL!%!4$KK!83iJ3"%Q!%"4%J"Lm&J!!!!I(dEH%J!!3b)J3"%1+%"4)J"!83iB!!
"I!3!8(`%"c4)!BaCB!!!!$KK!83iJ3"%5!',L@!!!!"mI4Yi5!!!e$KK!83iJ3"
%5!',F@!!!!"mI4Yi5!!![$KK!83iJ3"%1+!!!%J$eEf!33!8I'-(0(`$!0"m!"K
i9"d2rNJ!!*3iB3&%1)%!4$LJ!!")!p@9J%%!&(aJ"c48!!rqD!!!!93G"Mj)!!"
X1'%"4$L"!%3iS!!!5!29EB""!"4mB!Fd9"d2rNJ!!%`iB3&%1)%!4$LJ!!")!p9
0J%%!&(aJ"c4m!!!d1'!!!9aJ"rj8(3Bq5!!!)$KK!83iJ3"%5!'+[@!!!!"8B!B
qI!!!0&3GhMjAS!Br3B)!'$Kq!)iiJ!!&5!1i1B""!"4)!!!31q$rrdJ!!!Jli2r
rIq2lH)!"!QJi)3*JI!J$TVZKrr41J!!J!!!!!!!!!!#r`IriI!J#TRaq'hJiRJ!
KN!!"!!L8)Ir!5rri#Aar'hKri!Fe3))!&$Kq!)iiJ!!&5!1hdB""!"4rirYiJ!%
!5$JK!%"m#!1QZm(rq%k!!##r`IriI!J#TRaq'hKmJb0i1)!!!j!!!3!)P#(rX$L
K!$T)!l8KJ%%!&(ar'hKri!Fe3))!A+KK!$SiJ3!m5!1qpB""!"4mIaYiIq!(08#
#!)"r`r0i1+%!1$L!!!&)!l6PJ%%!&(ar'hKri!Fe3))!B+KK!$JiJ3"!5!1qZB"
"!"4mIaYiIq!(08##!$Kri!Fe3))!5+KK!$JiS!!!U)%!1MN!!!#!`3!mJ1%!3$N
J!!!j3!!"5riM2@!!!!"mIaYiU'%!1%J!`*eJ!!!!U'%!1NJ!`*&J!!!!Iq2lH)!
"!&Ji)3"3I!J$TV["rrK1J!!J[f(rl(`)!UCmHaYiI*`MH(bp+hKmhM0i1'!!!C!
!!3!)P#(rX%J$Z(f!33!8Ii2MH(qNkhK)!8mYB!!!!(ar'hP"JJ!B5!2ClB""!"4
rirYi5!1l#B""!"3iB!!!5!1i4B""!"4rBpYiIi6MH(qPkhJi`K5%5!2BEB""!"4
rBpYi5!2$fB""!"4rBpYiIm6cH%J$fA'!33!8J!%!@$JK!&#lBIrXI!J$TNk!!#!
!!!!!Nq(rr(`)!UCmIaYiN!!"!!L8)Iq`1+%!1$M"!$`ii3"!5!1Y)B""!"4rirY
i5!1Y4B""!"4)!m&0J%%!&$L#8E!FS`"NJ'3!!)!$!!"mB#S8L!-!BbJ!!!""JJ!
JJ--!6$KK!%!iJ!!!1+!!!%J$a,f!33!85!!!4)#$!&!S"!!!3B)!')"M!%`iS3"
!5!&EK@!!!!")!!!NJ'-!6#J$!!#3!'%!2%'#!"3iS3"!1)!!!%J"@f&J!!!!J!%
!@$JK!&#$iIrmI!J$TNk!!#!!!!!!Nq(rr(`)!UCmIaYiN!!"!!L8)If`1+%!1%J
"J2PJ!!!!1'!!!8J$Y6@!33!81'!!!%J$Y8'!33!81'!!#8J$Y8f!33!8Iq2lH%J
$V&Q!33!85!2!BB""!"3iJP'`(+-!C)"N!!#!!`!!I'!U&)J$!')S!!!!3B)!($K
K!8!iJ!2S1+!!(NJ$VLf!33!85!!!')#$!%3iB3&!1+!!!8J"K'9J!!!!1'%!3$L
!!qJiS!!,5!1Z!B""!"3iB3&!1)%!3%J"KQ&J!!!!L)%"3$KK!8%iS3!i1-!!!8J
$Y4'!33!8J!%#@$JK!P#$iIrmI!J$TNk!!#!!!!!!!!!!!!!!!!#6iIrmI!J#TRa
r'hL3!!%!#*3KrV!iS3!i5!&rq@!!!!!iB!!"5!1d0B""!"3iB!!!5!1d3B""!"3
iB!!*5!1d6B""!"4rirYi5!1V@B""!"4)!lpKJ%%!&$L#8E!FS`"NJ)3!!$KK!%#
!"!!!I)!U&%J"KS&J!!!!L)%!3$KK!%%iS3!i1-!!!8J$Y''!33!8J!%"@$JK!9#
$iIrmI!J$TNk!!#!!!!!!!!!!!!!!!!#q`IrBI!J#TRah'hJliP'`J')-S$[!!!#
3!!%!#*3KrT!!5!1VUB""!"4mB"YiJ')0B(`F!hK)!kZ9J%%!&(aJ'hL!BJeFI"X
$H%J$Ui'!33!8I'!EH)"L$9Km'J0i5!1VEB""!"4mB"YiJ')09(`C!hK)!kYCJ%%
!&)#I!!"mH"Yi13!!!)#N!!#Sj3"BI+BVH%J!!&5)"J"F+!!!!%'#!%#)"J"G+!!
!!%##!$5S"J"BI1-(0(`$!!"!JJ!8J'B!3$`!!&"m!`"!3)%!&(r!"c3iB3"!I3-
"VM[H!!%j#!!"1-B!C$KL9Ujp"!FdU!-!!(`%!!""J2qJIm!(08##!"3i!)!!X"F
!!$KJ!!")!!)!Im!(0#`!!!&!JJ!JL!%!3$KJ!!!F!!"NI)8#&+J%!&L`&`!!5!!
"f$KK!$a)!kUPJ%%!&$KJ"!-iJ!!"5!&P4@!!!!"mGKYi5!1TQB""!"5)J3"!5!1
pYB""!"4q`l0i1k!!!$L!!!&)!kXTJ%%!&(l$XhKrCGYi1)!!"%J"IA9J!!!!IX1
cH(p&dhJiJ!!*5!&pB@!!!!"q`l0iIbA,H$L!!!C)!Ae0B!!!!(l$XhKr"F0i1)!
!"dJ"I6PJ!!!!IX1cH%J$U4f!33!85!1X&B""!"3iJ3!i1'!!!%J$V$@!33!8U!%
!1#`!!!K!JJ"J1ld!!AqM"c4r`!FdI!-!!%'!!!JlS!!!IX1cH%J$U0@!33!8Ik!
(0$L"!%"mK!#Z5!1mkB""!"4q`l0i1)!!"%[rqd&q`l0i1)!!"N[rr39q`l0i1)!
!"d[rqrQS!3!i,!!!!8'#!!`X!!!#3),rH(l$XhK)!k[&J%%!&(q$ihK)!k[TJ%%
!&(pMfhK)!k[GJ%%!&(p$dhK)!k[4J%%!&(mMbhK)!k[&J%%!&(m$`hK)!kZjJ%%
!&)"K!$a)!k[&J%%!&+J"!$JX!!!#3))!'$L#B"!i!2re1'$rpE!%!!")!!!XIk!
(0)#I!!!iB3"!I!-!VMKJ!!#!K!!!(!!!C(b%!K5S"!"BX"F!!)!"!AJi)3&`ZX(
rf(`)!kC1J!!J9'!'2L`!!"""JJ$83)!!3#`!!!Y"JJ#-3)!!(#`!!!&"JJ"S3B!
"!#`!!!T!J!"S5!!!p#`!!!j"JJ#-3)!!P#`!!!e!J!"d5!!!C#`!!"9"JJ$)3)!
!(#`!!"0"JJ#N3)!!V#`!!"*!J!#-5!!!I#`!!2Y"JJ!83)!!V#`!!2T!J!!J5!!
!S$aJ)#!iBb!J6S!!)$aJE@%iBf0c6S!!)$aJCAJiBh4Z6S!!)$aJBh3iBh*X6S!
!)$aJF()iBf9Q6S!!)$aJB@diBfje6S!!)$aJC'8iBh0V6S!!)$aJFh3iBh*d6S!
!)$aJG'8iBfe`6S!!)$aJF()iBfjd6S!!)$aJCQmiBfjd6S!!)$aJFfJiBf4Q6S!
!)$aJFf3iBf9f6S!!)$aJ)#!iBb!J6S!!),r"rrKm#!+Q1'*ICM[LAqb3!!%!#*3
Krd#)!`!!+!!!!%##!GJmJ'9iU(m!!$L%G'ii`3!i11%!2$LJ!!")!%LeB!!!!(a
J"c9"JJ!X2)"YBDKr!!!iK'0c1-%!1$MK!$`iS!!!5!")M@!!!!"mB!Fe3))"L$a
J58iiBdP81)!$k8J"4f&J!!!!I(mEH8'#!@a)!l-aJ%%!&$L#*,!iB3"!5!'"8@!
!!!#SJ3!i1+%!3)!"!$`iB!!!N!"K!(!iB3"NN!#K!(D`J3"kN!!"!*4)!kceJ%%
!&+KK!$JiS3"!J)%!2%J$Zl'!33!85!1TfB""!"4mB!Fe3))!D+LK!$Ji!!!!J)%
!2$KK!'5`S3"kN!#"!*5B!3"qX!%!J%J$X,'!33!8I'!(08##!$L!!3!m2)"*6Ma
JC(BiT%P8N!!"!*3iJfPc1!!!!*!!S3#%1'%!C*!!J3#)Q!%!INJ$X)f!33!8I'!
(08'#!"4rirYi5!1bFB""!"4)!!#)U'%!1$LK!%#!J3!m1-!!!dJ$T#f!33!8I(i
EH(r!"c3X!2rr3B)!B$b!58jrirYi1)4*9$M#&)3iS!2T5!22XB""!"4rirYi5!1
iVB""!"4rirYi1)!!9%J$d,@!33!8Iq2lH%J$ZZQ!33!8Iq2lH%J$Z[@!33!8Im2
cH%J$Vf'!33!8J!%!b$JK!-#l`IriI!J$TNk!!#!!!!!![f(rl(`)!UBmB'eK1q*
Il$[#AqJiJf0c1k!!!$Z!!!!iS!!!N!!"!!L8)Ik3!+Kr!!!i`3!i11%!2%J!4UP
J!!!!I'!(08'#!!K)!!%`U(m!!$J"!%#3!!%!qV"K!2k3!!%!UV"K!+k!(J!!1ld
!!E1K!33iB3$SN!!"!4K)!kVCJ%%!&(al'hKrB!Fe3))!Y)J"!3C8!!Eh3))!U$K
LB&3iJ3"!5!&qm@!!!!"8B!Br3B)!D)!"!$`iB3#BN!!"!-K)!kVeJ%%!&+MI!!!
iB3"!J)%!2$LJ!!#!(J!!N!"K!(BiB3"NX-%!HT!!S3#!N!#"!)L3!!%!P%J$Va'
!33!8I(XEH(pJ"c9"JJ!-1i!!!8J!!$3l[Irr5!!!,)!H!!!iB3#BN!!"!-K)!kU
4J%%!&(aJ"c9!JJ!-1lhrrdJ!!!JlJ!!"If!(08'#rb4rJ!Fe3))!,)!H!!!iB!!
!N!"K!+SiB3#BN!!"!-K)!kT4J%%!&(aJ"c9"JJ!)1i!!!Aq$ihL!!3&i1#%"F,Y
Krqam#!1Q6S!!)!!!!!#r3IrSI!J#TRam'hKmR50iI,iVH*!!!3!)P#(rX)"M!!#
!J`!!1q3!)%J$U9'!33!8I(XEH$M!!!")!!!3U"m!+$M'!!&rr`)8I!ES!%'!rr#
!I!!!Iq6lH+Lr!#L!!`!!I(mU&(`!fK4mS`"3IemB8%J$TQQ!33!8J(`!!%J$UX@
!33!8J(`!!(bDf&")!khpJ%%!&)"m!!")!kE4J%%!&%J$VKQ!33!8I'!(08##!&L
!R!!!IkEVH)#N!!#!K3!F1!6rrj!!"3!FJ*`!!)#%!!#!K!!F5!!!+)JI!"FX!!!
"3))!%)!I!"Km(J"3N!!I!"LS(`!S1-B!!Arr!K4m"L!!3B$rf)!"!&Ji)3"3Zd(
rk(`)!kC1J!!J!!!!!!!!!!#rBIrXI!J#TRbm+hKmHaYi1q!!!*!!!3!)P#(rS)$
$!!!iB2rrJ+B!!)$&!"`iT3!J5!!"X)!&!!"m!#"!3))"Q)J&!"Gm!!Gd,!!!!8#
#!6bSC3!S1"m!!B2&!"Km"`FdJk8!((aP'K4)!!"-L!-!&b`!!!&!JJ!mJ!-!!(`
!)%"!JJ!`J!-!'(`H!!"!JJ!NJ!-!((`G!!"!JJ!BIf2EH(rNqhJiS!!!5rrq18J
!!6`ij`!"I1!(0(`!-!""J2q`Ii2MH$L"!$K)!l%jJ%%!&(aJ"c9!JJ%8,"d!!%#
#!#5$S3!iIi2MH$L!!!")!mb0J%%!&(aJ"c9!JJ$`5!!!H$JG!!q!B3!iI!!QF(`
!!C48(5!fI"lU&(`!'!"!J3!)IliB8(bqkK4mj4K43)%!,(q$ihKrK10iImEcH$N
!!!!j)!!!18!!!8[q&APJ!!!!I'!(08##!*5!!3!iIi2MH(bG!&")!m`9J%%!&(a
J"c9!JJ"iIf2EH(rNqhKrTHYi5rrpB8J!!'3X!!!#3))!5)!&!"b!C3!BI!3(0%J
"3B9J!!!!I(`EH8'#!"K)!ma&J%%!&(q$ihK)!keKJ%%!&(pMfhKrj2Yi1+!!!%[
rr49)!!!BU!8!+$[r!!&mT3)8I"m`!%'!rP#!!3"S1#%!B,YKrqam#!1Q6S!!)!!
!!!#rSIrdI!J#TRbH)hJmS'0QI(dEH$KPFQH3!!%!#$J!!!!li!!!P#(rX$L!!!#
3!!%!2,!"!$K)!8$YB!!!!#J$!!#3!'%!2%'#!,a)!lECJ%%!&)"K!$a)!k2eJ%%
!&(r$mhJiS3!i1)!!!dJ$TDQ!33!8I(mEH(rJ"c9!JJ#)U+%!1(qNkhJiB3!m5rr
pHAar'hKri!Fe3B,rk(rJ"c3X!2rr3))!#$[J!!#!B3!m5!1RGB""!"5!B3!m5!1
i5B""!"5!B3!mJ)-!!)!%!"`X!!!!3B)!(%J$Y5f!33!8J'%!2%J$Y6Q!33!85!!
!'%J$b`@!33!85!1M$B""!"4mIaYiU'%!1(aJ"c9"JJ!-5!#a*@!!!!#!B3!m+!-
!!%'#!#4)!kF"J%%!&)"K!$a)!lI9J%%!&)"K!$a)!kZCJ%%!&(rMqhL!!3"B1#%
!8(`)!kDlSIrd6S!!)!!!!!!!!!!![`(ri(`)!UCmI4YiI*mMH$Kp!+il3!!!1`!
R%$Z!!!!iJ!!1N!!"!!L8)Ik3!%J$SIf!33!89'!'2d'#"f`iI3#Z1)!!$8J$SH@
!33!89'!'2d'#"e3iBPrqL!-!!#J!!!"!JJ#!1(d!VML!!!K)!k'pJ%%!&&4J"Mp
!JJ!F1(d!VML!!!P)!k'PJ%%!&&4J"Mp"JJ"31(d!VML!!!K)!k'0J%%!&&4J"Mp
"JJ!F1(d!VML!!!P)!k&eJ%%!&&4J"Mp!JJEN1(d!VML!!!K)!k&GJ%%!&&4J"Mp
!JJ2)5!!!A$Kp!+iiJ!!!5!1K3B""!"48B!Br3B)!($Kp!+iiJ!!"5!1K+B""!"4
8B!Br3))'Q$KL9Z5)!`!!+!!!!%'#!f`iI3#Z1)!!!8J$S3'!33!89'!'2d##"R"
)!k%*J%%!&(aq'hJiB!!!5!1RZB""!"5SI`!!1,m!"S#I!!)i`!!$5!1F-B""!"4
mHaYiIf!(0#`!rrp"JJ,i1'!!!8J$Ti@!33!82'"$6cKM4%8iJ!!!5!%q-@!!!!#
3!'%!6%J$S3@!33!8I'!(0#`!rj4!JJ"3If2EH%J$Thf!33!8Ik2VH$L!!!!iS!!
!1-!!!%J$R[@!33!81'!$pML!!r!iS!!C1-!!!%J"DbeJ!!!!5!1JYB""!"4mHKY
i5!!&V)"K!%`S!`!!3B)!e)#$!!#S"!!8X!%!1%J$U9f!33!82'"$6kL"!$JiBd4
&5!%pQ@!!!!!S!`!!N!"K!%a"JJ#JJ+-!!)#&!")m"+Qh+!"648##!)`mJ!)JJ+8
!&MJ%!!&m"3!!3B!!H$L"!$JiS3!m1-%!8%J$Z@Q!33!8J'%!6%J$Vmf!33!8I(N
EH(mJ"c48'!Fj3B)!'&3!"hD!B3"-I!3(0%J$am'!33!8J'%!6$LK!&!iJ#F35!2
(aB""!"3X'!!!3B)!&)"K!%ar*-Yi5!2(PB""!"3l!#F31'!!!%J$TL@!33!81b!
!!6aJ3dpr*-Yi1'0%48J$Z,@!33!8+!-!!*!!B3"-3B)!Y%J$RjQ!33!8I'!(08#
#!+5!B3"-1)%!1$LK!$`i`3"35!1iXB""!"5SB3!iI`!(0(`$!!"!JJ!-1cN!!8[
rrk5!B3"-5!1ZrB""!"4mB`Fd9'!(18'#!#a8B!GfJ'%!6(`%"c4)!mEeJ%%!&%J
$Rbf!33!8I(SEH(p!"c9!JJ$3J'%!6%J$a`@!33!85!1I$B""!"4mHKYiId!(08#
#!,#!B3"-5!1S$B""!"4,rrmd2'"%36KM9%%iJ!!!5!%lr@!!!!!S!`!!N!"K!%a
"JJ"J5!1ZFB""!"4mB`Fd9'!(18'#!#a8B!GfJ'%!6(`%"c4)!mCTJ%%!&%J$RU'
!33!8I(SEH(p!"c9!JJ"%J'%!6%J$aRQ!33!85!1HJB""!"4mHKYiId!(08##!#3
iB!!"5!1NbB""!"3mB'dfIq6lH$KM1'Y,rrT9I(SEH(pMfhK)!k6CJ%%!&(p!"c9
!JJ!)1i!!!6KJ!!&)!k54J%%!&(r$mhK)!ji0J%%!&%J!!*JiI3#Z1)!!!%J$RCQ
!33!89'!'2d##!`K)!jfKJ%%!&(aq'hJiB!!!5!1N8B""!"5SI`!!1,m!"S#I!!)
i`!!$5!1BbB""!"4mHaYi1'!!!8J$T#Q!33!8If!(0#`!rrp"JJ!N2'"`GhrNqhJ
iBh"M5rrjUAak'hKrBpYi5!1N,B""!"4r`r0i5!1GHB""!"4)!!+-1(d!VML!!!4
)!jd&J%%!&&4J"Mp"JJ*d9i!'2d'#!Q`mB%021'0%46L!!qK)!6TjB!!!!#J$!!#
3!'%!6%'#!N`mB%021'0%46L!!qP)!6TCB!!!!#J$!!#3!'%!5%'#!L`mB%&-1'0
59$L!DUe)!6SjB!!!!#J$!!#3!'%!4%'#!J`mB%4*1'086$L!DUe)!6SCB!!!!#J
$!!#3!'%!3%'#!Hb!B3"-5!1XLB""!"4mB"YiJ'%!5(`C!hK)!kaeJ%%!&(aJ'hL
!B3"%I"`$H%J$V''!33!8I'!EH)"K!%"m(30i5!1X6B""!"4mH"Yi1'%!6%J$X"@
!33!8I'!(08##!B`iB3")5!1`!B""!"4mB!Fe3B)!&)"K!%a)!k@&J%%!&%J!!@J
iB3"%5!1[hB""!"4mB!Fe3B)!))"K!%a)!k9KJ%%!&)"K!%K)!k99J%%!&%J!!6J
iB3"!5!1[VB""!"4mB!Fe3B)!,)"K!%a)!k8aJ%%!&)"K!%K)!k8PJ%%!&)"K!%4
)!k8CJ%%!&%J!!2a)!jZ9J%%!&(aq'hJiB!!!5!1L4B""!"5SI`!!1,m!"S#I!!)
i`!!$5!1@[B""!"4mHaYiIf!(0#`!rrp"JJ"d2)"$6i"K!%ar*XYi1)4%46LJ!!"
,rqPK2)"$6i"K!%KrKZ0i1)4%46LJ!!&,rqP*2)""6)"K!%4rTZYi1)459$LJDUe
,rqNa2)"%5B"K!%"r"X0i1)486$LJDUe,rqNCIf2EH%J$SH'!33!85!!!0)"K!%a
)!k4CJ%%!&)"K!%K)!k40J%%!&)"K!%4)!k4"J%%!&)"K!%")!k3eJ%%!&$KJ!!&
)!k&aJ%%!&(r$mhK)!jVYJ%%!&(p$dhL!!3&i1#%"F(`)!kDl!IrJ6S!!)!!!!!#
rJIr`I!J#TMbJG%emC"Yi1'98H$[J!!#3!!%!#*3Krk")!6IKB!!!!(aq'hP"JJ%
F5!1MXB""!"4r`r0i5!1DlB""!"5$[J!!Im2cH%J$R1f!33!8IjdD&$KJ!!")!k)
&J%%!&(ar'hK)!!$!Ik2VH$L"!$JiS!!)5!1D)B""!"5SB3!k1ld!#%J$SGQ!33!
8N!"K!%#SB3!m5!1KbB""!"53!'%!4+KK!$j)!k'jJ%%!&*!!B3")Ik2VH)#"!%#
SS3!kJ)3!!%J$QG@!33!8U!%!1S"K!%4r[3)8U+%!2)#$!!"rSqYi5!1CYB""!"5
S!3!mJ'%!5(qp!K5SS3!qJ)-!!(qMkhK)!jQ9J%%!&+J"!$jrj2Yi1'%!1(qp!K3
iS!!85!1VHB""!"4m(H"!3B$r3(r$mhK)!jh0J%%!&(r$mhK)!k+jJ%%!&(rMqhL
!!3"S1#%!B(`)!kDlJIr`6S!!),q"rr"m#!+Q2+"d4RaN'hJiC94i1q!!!*!!!3!
)P#(rJ%J"0S&J!!!!I(iEH8'#!,a)!k*4J%%!&(r$mhK)!jQ0J%%!&)1q!!"r`r0
i5!1EMB""!"4rR4S81'!!!%J$S+@!33!8I(mEH%J!!'"rSqYi1)%!1$LJ!#C)!jM
"J%%!&+KK!&`l[3!Q5!1JHB""!"4mC"YiU+%!A*!!J3"HIk2VH)#%!!")!jL9J%%
!&+J"!&arj2Yi1'%!1(qp!K3iS!!U5!1UHB""!"4m(H"!3B$rS(r$mhK)!jc0J%%
!&(r$mhK)!k'jJ%%!&(rMqhL!!3#)1#%!J(`)!kDlJIr`6S!!),q"rr"m#!+Q2+"
d8RaN'hJiC@911q!!!*!!!3!)P#(rB%J"0B&J!!!!I(iEH8'#!,a)!k&4J%%!&(r
$mhK)!jL0J%%!&)1q!!"r`r0i5!1DMB""!"4rR4S81'!!!%J$Rk@!33!8I(mEH%J
!!'"rSqYi1)%!1$LJ!%C)!jI"J%%!&+KK!(`l[3"'5!1IHB""!"4mC"YiU+%!I*!
!J3"qIk2VH)#%!!")!jH9J%%!&+J"!(arj2Yi1'%!1(qp!K3iS!"+5!1THB""!"4
m(H"!3B$rS(r$mhK)!j[0J%%!&(r$mhK)!k#jJ%%!&(rMqhL!!3#S1#%!S(`)!kD
lJIr`6S!!),q"rr"m#!+Q2+"d3AaN'hJiC@a*1q!!!*!!!3!)P#(rB%J"0)&J!!!
!I(iEH8'#!,a)!k"4J%%!&(r$mhK)!jH0J%%!&)1q!!"r`r0i5!1CMB""!"4rR4S
81'!!!%J$RU@!33!8I(mEH%J!!'"rSqYi1)%!1$LJ!%C)!jE"J%%!&+KK!(`l[3"
'5!1HHB""!"4mC"YiU+%!I*!!J3"qIk2VH)#%!!")!jD9J%%!&+J"!(arj2Yi1'%
!1(qp!K3iS!"+5!1SHB""!"4m(H"!3B$rS(r$mhK)!jV0J%%!&(r$mhK)!jqjJ%%
!&(rMqhL!!3#S1#%!S(`)!kDlJIr`6S!!),q"rr"m#!+Q2+"d3haN'hJiCA"j1q!
!!*!!!3!)P#(rB%J"-i&J!!!!I(iEH8'#!,a)!jp4J%%!&(r$mhK)!jD0J%%!&)1
q!!"r`r0i5!1BMB""!"4rR4S81'!!!%J$RD@!33!8I(mEH%J!!'"rSqYi1)%!1$L
J!%C)!jA"J%%!&+KK!(`l[3"'5!1GHB""!"4mC"YiU+%!I*!!J3"qIk2VH)#%!!"
)!j@9J%%!&+J"!(arj2Yi1'%!1(qp!K3iS!"+5!1RHB""!"4m(H"!3B$rS(r$mhK
)!jR0J%%!&(r$mhK)!jkjJ%%!&(rMqhL!!3#S1#%!S(`)!kDlJIr`6S!!),q"rr"
m#!+Q2+"d4(aN'hJiC@9-1q!!!*!!!3!)P#(rJ%J"-S&J!!!!I(iEH8'#!,a)!jj
4J%%!&(r$mhK)!j@0J%%!&)1q!!"r`r0i5!1AMB""!"4rR4S81'!!!%J$R+@!33!
8I(mEH%J!!'"rSqYi1)%!1$LJ!#C)!j6"J%%!&+KK!&`l[3!Q5!1FHB""!"4mC"Y
iU+%!A*!!J3"HIk2VH)#%!!")!j59J%%!&+J"!&arj2Yi1'%!1(qp!K3iS!!U5!1
QHB""!"4m(H"!3B$rS(r$mhK)!jM0J%%!&(r$mhK)!jfjJ%%!&(rMqhL!!3#)1#%
!J(`)!kDlJIr`6S!!),q"rr"m#!+Q2+"d6AaN'hJiC@p@1q!!!*!!!3!)P#(rJ%J
"-B&J!!!!I(iEH8'#!,a)!je4J%%!&(r$mhK)!j50J%%!&)1q!!"r`r0i5!1@MB"
"!"4rR4S81'!!!%J$Qk@!33!8I(mEH%J!!'"rSqYi1)%!1$LJ!#C)!j2"J%%!&+K
K!&`l[3!Q5!1EHB""!"4mC"YiU+%!A*!!J3"HIk2VH)#%!!")!j19J%%!&+J"!&a
rj2Yi1'%!1(qp!K3iS!!U5!1PHB""!"4m(H"!3B$rS(r$mhK)!jI0J%%!&(r$mhK
)!jbjJ%%!&(rMqhL!!3#)1#%!J(`)!kDlJIr`6S!!),m"rq"m#!+Q1q*9k(ai'hK
mQ50iI,SVH*!!!3!)P#(rS)"r!!#$S`!!5!19XB""!"4rI4S8I`2$H%J$Nj'!33!
8JpJ!!$Z!!!")!!"dL"i!!#J!!!""JJ"JS(i!)U#G!,"8B!3qI!3!3%##!"4m(GJ
!3)!!$(qMkhK)!!!XId66H%J"TP&J!!!!,!-!!%'!!#L!R`!!(!-"$S"N!!"mB`)
8I(dEH(r%mhK)!@S*B!!!!$Zp!3ilhJ!U1j`!!A`Fb!""J2q-I`2$H%J$PYQ!33!
8J!%!D$JK!'#l!IrJI!J$TNk!!#!!!!!!!!!!!!!!!!#r3IrSI!J#TRak'hKmQb0
iI,`VH*!!!3!)P#(rX%J$NVf!33!8JrS!!$ZJ!!")!!"mS(m!3(q%ihK)!D@TB!!
!!#`$!!""J!"FL"m!!#J!!!""JJ"31)*9k"`$!3k!C!!!J'-!!(r$!K4r`r0i5!(
A9@!!!!"8B!Br3B)!+$KL8Darj2YiJ"i"!)"M!!"8!$!bJ'-!!(aM!K4)!@NTB!!
!!$[r!%)l[3!"I"hB!%'!ri4r3p0i5!19rB""!"5!!3"B1#%!8,Y"rqKm#!1Q6S!
!),p"rqKm#!+Q1+*@cRak'hKmQb0iN!!"!!L8)Iq`U'8!!%[rpX&mIaYj3B)!`%J
$NGf!33!8Jpm!!$Z!!!")!!#-S(i!!(pNfhK)!D6*B!!!!#`$!!""J!"X1)*9k"`
$!3k!C!!!J'-!!(qM!K5!I3#)+!-!!%'#!!a)!jTKJ%%!&)!H!!L3!"d!L)"p!(i
S!`!!3B)!$%J$QN@!33!8J"i!$*!!(3"qJ(d!JLJ$!!""JJ!-5!1D+B""!"5!(J!
3N!!G!))lhJ!81j`!!A`Fd!""J2pdIq2lH%J$P3f!33!8Iq2lH%J$QIQ!33!8J!%
!@$JK!&#l3IrSI!J$TNk!!#!!!!!![d(rk(`)!UBiSPE1I(SEH(bE)hL3!!%!#*3
Krl#SC3!!5rrh)Aar'hP"JJ#B5!13!0f!33!8Jpm!!$Z!!!")!!"NS(i!!(pNfhK
)!D2*B!!!!#`$!!""J!"%1)*9k"`$!3k!C!!!1*i!!S"M!!"rS`)8Ik2VH%J"Che
J!!!!J(d!L#J$!!""JJ!-5!1C8B""!"5!(J!QN!!G!)JlhJ!U1j`!!A`Fd!""J2q
FIq2lH%J$P$@!33!8Iq2lH%J$Q5'!33!8J!%!@$JK!&#l3IrSI!J$TNk!!#!!!!!
!!!!!!!!!!!#r3IrSI!J#TMLL9XjmHKYiI*XMH*!!!3!)P#(rX+KP!!",rrT"I(m
EH8'#!*K)!irpJ%%!&)2I!!!lJ!!!5!!!C+"q!!"rC0Yi5!'Lk@!!!!!X!`!!3B!
!4$L#9HJF!`%1J'3!!$LH!!+!B`!!Ik-#&(qMkhK)!@DGB!!!!)"p!)JS!`!!3B)
!$%J$Q('!33!8J"i!*T!!(3#)1pi!+MZF!!&m(0!!3B$rR(rMqhK)!j09J%%!&(r
MqhK)!jK"J%%!&)!"!&Ji)3"3Zd(rk(`)!kC1J!!J!!!!!!!!!!!!!!!![d(rk(`
)!UBiSPE1I(SEH(bE)hL3!!%!#*3Krl#SC3!!5rrkBAar'hP"JJ#B5!12(B""!"5
$h`!!1i!!!%J!!'5JIJ!!If6EH%J"SJPJ!!!!,!-!!%'!!%3iJPAS(!-"$S"N!!!
iRJ!#J'-!!(qM!K4rSqYi5!&P[@!!!!#!I3#)+!-!!%'#!!a)!jH4J%%!&)!H!#D
3!"d!L$[H!#SlR!!"I"c3!%'!rjarirYi5!15GB""!"4rirYi5!1ABB""!"5!!3"
B1#%!8,Y"rqKm#!1Q6S!!)!!!!!!!!!!!!!!!!,p"rqKm#!+Q1+*@cRak'hKmQb0
iN!!"!!L8)Iq`U'8!!%[rpB&mIaYj3B)!`%J$MMf!33!8Jpm!!$Z!!!")!!#-S(i
!!(pNfhK)!D%TB!!!!#`$!!""J!"X1)*9k"aM!3k)(J!MJ)3!!#J!!!#!"!!!Ik!
D&%'#!"3iI3!K1*i!)dJ"C0&J!!!!L"i!!LJ!!!""JJ!8Ik2VH$LH!!*)!@5eB!!
!!)"p!)JS!`!!3B)!$%J$PSQ!33!8J"i!4T!!(3#)1pi!5MZF!!&m(0!!3B$rG(r
MqhK)!j&YJ%%!&(rMqhK)!jCCJ%%!&)!"!&Ji)3"3Zd(rk(`)!kC1J!!J!!!!!,p
"rqKm#!+Q1+*@cRak'hKmQb0iN!!"!!L8)Iq`U'8!!%[rpB&mIaYj3B)!`%J$M6f
!33!8Jpm!!$Z!!!")!!#-S(i!!(pNfhK)!D!TB!!!!#`$!!""J!"X1)*9k"aM!3k
)(J!MJ)3!!#J!!!#!"!!!Ik!D&%'#!"3iI3!K1*i!)dJ"Bp&J!!!!L"i!!LJ!!!"
"JJ!8Ik2VH$LH!!*)!@1eB!!!!)"p!)JS!`!!3B)!$%J$PBQ!33!8J"i!4T!!(3#
)1pi!5MZF!!&m(0!!3B$rG(rMqhK)!j!!EB""!"4rirYi5!19@B""!"5!!3"B1#%
!8,Y"rqKm#!1Q6S!!)!!!!!#r3IrSI!J#TMLL9XjmHKYiI*XMH*!!!3!)P#(rX+K
P!!",rr@"I(mEH8'#!-")!i`pJ%%!&)2I!!!lJ!!!5!!!M+"q!!"rC0Yi5!'I+@!
!!!!X!`!!3B!!E$L#9HJFB`%1L"i!)i#%!!!S!!!!J!3!!(qJ'K4"JJ!81(d!)6L
H!#0)!@,4B!!!!)JH!!)S!!!!3B)!&(qMkhJiRJ!#5!&LY@!!!!#!I3#)+!-!!%'
#!!a)!j5*J%%!&)!H!%D3!"d!L$[H!%SlR!!"I"c3!%'!rh4rirYi5!12EB""!"4
rirYi5!18@B""!"5!!3"B1#%!8,Y"rqKm#!1Q6S!!)!!!!!#r`IriI!J#TMaJG%3
liPE11'0*6*!!!3!)P#(r`+LI!!")!5JKB!!!!(aq'hP"JJ")5!1,1B""!"5!RJ!
!L!3!!#J!!"p!J3!-1!!!(jJ%!!!iBPP)5!&Kr@!!!!"r`r0i5!11iB""!"4r`r0
i5!16KB""!"3mB(4-U*m!!$KMCdj)!5I"B!!!!(aq'hP"JJ"-5!1+fB""!"5!RJ!
!L!3!!#J!!"p!J3!-1!!!(jJ%!!!iBPG!1'-!NNJ"BCPJ!!!!Im2cH%J$MRf!33!
8Im2cH%J$Nb'!33!82'"d6DLI!!!iBf&R5!%RA@!!!!"mIKYj3B)!@%J$Nbf!33!
8Im2cH%J$LQQ!33!8J(i!!$L$!!+)!`!#+!!!(d#"!!`i!!!IQ!3!!$KLA-")!@%
TB!!!!(r$mhK)!ii0J%%!&(r$mhK)!j,jJ%%!&)!"!%Ji)3"!Zm(rq(`)!kC1J!!
J!!!!!$LL8E3ii!!!J+8!!)$&!!")!!!NS!B"6&4P"$jm"3"!3))!$(cM"c41J!!
J1-B%&MMR!!&mj3FdI)!(0(`&!!""J2r81'$rrdk!!#!!!!!![d(rk(`)!UCmHKY
iI*XMH(bm+hL3!!%!#*3Krl")!iQGJ%%!&)2k!!!lS!!!5!!!I+"r!9"rK10i5rr
rHAaJ"c9"J!"J1'*4Y(`!"c3F!!3@J'-!!)"M!!"r``)8Im2cH%J"*c&J!!!!9'!
'2d##!$4r`r0iIq6lH%J"B#PJ!!!!1(i!3$LI!%")!@!CB!!!!$Kq!8!iR`&!5!&
J#@!!!!!lr`0F1ld!!AqM"c4rB!FdI!-!!%'!rhar3p0i5!1-eB""!"5!!3"B1#%
!8,Y"rqKm#!1Q6S!!)!!!!!!!!!!![d(rk(`)!UCmHKYiI*XMH(bm+hL3!!%!#*3
Krl")!iLpJ%%!&$KL9JJlS!!!JrS!!)"M!!#$``!!5!!!2(qM"c4rJ!FdI!-!!%#
!!$b)(`!!+!!!!%'#!"4r`r0iIq6lH%J"Af&J!!!!1rm!)M[H!&Sl[3!"Ik-(0(p
J"c4m!`!!3B$r[(p$dhK)!i`TJ%%!&)!"!&Ji)3"3Zd(rk(`)!kC1J!!J!!!!!!!
!!!!!!!!![m(rq(`)!UBiJL6-I(iEH$[J!!!iS!!&N!!"!!L8)Ir!5!+,3@!!!!!
X!`!!3))!$$[J!!*)!!")1))Ne(r$mhJiS!!&5!+,(@!!!!!X!`!!3))!$$[J!!p
)!!!N1))Nh(r$mhJiS!!&5!++q@!!!!!X!`!!3))!#$[J!&*rirYiJ!%!5$JK!%"
m#!1QZm(rq%k!!#!!!!!!!!!!!!!!!!#r`IriI!J#TML#*14mIKYi1q!!!6LJ!!@
3!!%!#*3Krm")!SUKB!!!!#`$!!"!JJ!-1q!!#dJ!!%JiJL6XIm2cH$LJ!!9)!ST
pB!!!!#`$!!"!JJ!-1q!!%NJ!!#3iJL6dIm2cH$LJ!!9)!STCB!!!!#`$!!"!JJ!
)1q!!BRrMqhL!!3")1#%!3(`)!kDl`Iri6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+
Q1))Nr(aq'hJli!!$1+!!"C!!!3!)P#(r`%J#LJ&J!!!!,!-!!%##!!`li!!65!!
!*$L#*34r`r0i1+!!"8J#LGeJ!!!!,!-!!%##!!Jli!"FIq2lH)!"!%Ji)3"!I!J
$TV["rrK1J!!J[d(rk(`)!UCmQb0iI(SEH(bm+hJli2rr1m$rrcL!!!#3!!%!#*3
Krl")!jFCJ%%!&(ap'hP!JJ!J5!1)XB""!"4mC"YiId26H%J$P[Q!33!8I(dEH$L
#*3arSqYi5!+*&@!!!!!X!`!!3))!%$[J!!!l`!!!5!!%V$L#*44rSqYi5!+)m@!
!!!!X!`!!3))!%$[J!!%l`!!"5!!%L$L#*4arSqYi5!+)c@!!!!!X!`!!3))!%$[
J!!)l`!!$5!!%C$L#*54rSqYi5!+)U@!!!!!X!`!!3))!%$[J!!Xl`!!15!!%3$L
#*6"rSqYi5!+)K@!!!!!X!`!!3))!%$[J!!Fl`!!*5!!%($L#*6KrSqYi5!+)B@!
!!!!X!`!!3))!%$[J!!dl`!!45!!$q$L#*8"rSqYi5!+)2@!!!!!X!`!!3))!%$[
J!!Nl`!!-5!!$e$L#*8arSqYi5!+)'@!!!!!X!`!!3))!%$[J!!8l`!!(5!!$X$L
#*94rSqYi5!+(p@!!!!!X!`!!3))!%$[J!!Bl`!!)5!!$M$L#*9arSqYi5!+(d@!
!!!!X!`!!3))!%$[J!!-l`!!%5!!$D$L#*@4rSqYi5!+(V@!!!!!X!`!!3))!%$[
J!!3l`!!&5!!$4$L#*@arSqYi5!+(L@!!!!!X!`!!3))!%$[J!"Fl`!!c5!!$)(q
MkhJiJK5)1+!!!NJ#Kk&J!!!!,!-!!%##!"KrSqYi1q!!!%[rr#PmIKYi5!!#m(q
MkhJiJK5-1+!!!NJ#Kh&J!!!!,!-!!%##!"KrSqYi1q!!!8[rr*PmIKYi5!!#`(q
MkhJiJK53!$LJ!!*)!SG"B!!!!#`$!!"!JJ!BIk2VH$[J!!*,rrd*I(iEH%J!!T!
!Ik2VH$L#&*3iS!!#5!+(%@!!!!!X!`!!3))!%$[J!!Xl`!!15!!#D(qMkhJiJK5
B1+!!!NJ#KZPJ!!!!,!-!!%##!"!li!!(1m!!#8J!!N"rSqYi1))8R$LJ!!*)!SE
"B!!!!#`$!!"!JJ!31q!!$6[!!"&)!!)BIk2VH$L#&+!iS!!#5!+'Q@!!!!!X!`!
!3))!%$[J!!Nl`!!-5!!"m(qMkhJiJK5N1+!!!NJ#KR&J!!!!,!-!!%##!"!li!!
&1m!!"dJ!!FKrSqYi1))8U$LJ!!*)!SC*B!!!!#`$!!"!JJ!31q!!"M[!!!K)!!'
JIk2VH$L#&+`iS!!#5!+')@!!!!!X!`!!3))!-$L#*A4rSqYi1q!!!c[!!!3iS!!
&5!+&r@!!!!!X!`!!3))"B$[!!#4)!!&BIk2VH$L#&,!iS!!#5!+&f@!!!!!X!`!
!3))!-$L#*AarSqYi1q!!"$[!!!8iS!!&5!+&Y@!!!!!X!`!!3))"'$[!!!C)!!%
3Ik2VH$L#&,3iS!!#5!+&N@!!!!!X!`!!3))!%$[J!"Fl`!!c5!!!k(qMkhJiJK5
i1+!!!NJ#K@PJ!!!!,!-!!%##!$!iJL@%Ik2VH$[J!!Jl`!!+1+!!"8J#K89J!!!
!,!-!!%##!+Jl`!"(5!!!S$L#*BarSqYi1+!!"8J#K5&J!!!!,!-!!%##!"!li!!
61m!!08J!!(JiJL@8Ik2VH$LJ!!9)!S6jB!!!!#`$!!"!JJ!31q!!)6[!!$4)!!"
3Ik2VH$L#&,`iS!!#5!+%d@!!!!!X!`!!3))!%$[J!#Bl`!!i5!!!+(qMkhJiJK6
!1+!!!NJ#K+PJ!!!!,!-!!%##!!`li!!11m!!&,2l!!#ch!!!J!%!@$JK!&"m#!1
QZd(rk%k!!#!!!!!![`(ri(`)!UCmI"Yi1')PR(bG)hKm[LYiI0mcH*!!!3!)P#(
rS%J$J9f!33!8J))08)#%!!")!j%pJ%%!&(aj'hP"JJ#d5!144B""!"4mHaYi5!1
48B""!"4m!pK!3))!Q(mMbhK)!j&9J%%!&$Y$rrp)!!"mIb2,H(p%dhK)!j&9J%%
!&(ai'hK)!j%"J%%!&(al'hK)!j&9J%%!&(`$f%"!JJ")I`2$H$L"!$JiS3!k5rr
k%DKK!$KmB!Fd,!$rrd'#!""A`!Br3B)!#,"m!!#SB3!k,!2rrd'#!""Ai!Br3B)
!#*!!I3!!1eVrrb`D!!"!J2q%J!%!D$JK!'#l!IrJI!J$TNk!!#!!!!!!!!!!!,q
Krr4m#!+Q1'*A3$L!!!FiB`#*N!!"!!L8)Iq`5!0r6B""!"48B!Br3B)"U$[J!!"
)!!'8Iq!(0#`!!!&"JJ!S3)!!%#`!!!"!J!!85!!!*#`!!!0!J!!F5!!!&$[!"p"
)!!!31m!%$dJ!!!Jl`!2`2'"NBhr%mhJiBh4L5!%FK@!!!!"mI4Yj3B)!R(r!"c3
X!!323B)!)%#!!"!X!!2`3B)!1%J!!'JX!!I33B)!#%J!!&`mJ!!"J(d!!$J%rrq
`!`!+J(d!!,!$!!b!I3!!X!-!$NJ!!$JiB!!25!%G9@!!!!"8B!Br3))!*$b!!!'
!I3!!1!6rrl!$!!U!I3!!X!-!$)"p!!#`!`!1Ik2VH%J$N!$4J%%!&(qMkhK)!j!
!hB""!"3mB'4XIm6cH$KMChK)!4[4B!!!!(ap'hP"JJ#%Im!(0#`!"!p"JJ!J3)!
!%#`!!r""JJ!X5!!!8#`!"p""JJ!)5!!!4)"p!!!iJ!!I1'-!!NJ$JY@!33!85!!
!,$KJ!!p)!4bYB!!!!&4J"Mp!JJ!BJ(d!!$L!!"miB`!#5!1#UB""!"4rSqYi5!1
3!$@!33!8Ik2VH%J$N!""J%%!&$[r!!&ri!Fd,!!!!d'!rQL!!3"B1#%!8,ZKrr4
m#!1Q6S!!)!!!!!!!!!!!!!!!!,jKrmam#!+Q1f*D[(ar'hJk`PE31i*@cRb6)hJ
l`P'`I,NVH(cD-hKmpcYi1k!!!$X!!!!kS!!!N!!"!!K8B!BrP#(p)%'#!G`i!2r
rU(`!!(`!"c4m!`"3I!!!0&3$fAp"JJ!-1!!!!,!F!!!X!`!!3))!#$X!!!'!GJ!
!1!$rrh`$!&"m!!!d9!2CId'#!!`i!!!!N!!@!!!X!`!!3))!#$UJ!!&A!!Br3))
"H&DJ"Mp!JJ&`1'!!1dJ"&cPJ!!!!I'!(08'#!9`iB!!k5!%A*@!!!!"mB!Fe3B)
"5$KJ!!&)!hJCJ%%!&$KJ!!&)!hJ0J%%!&$J!!!#B!3#S1)%!3$KJ!#K)!i!eJ%%
!&&4J"Mp"J[rXJ!%!3P3!"Mjm"J0i,!B!-%'!!""m``Fd,!-!18#"!"3iB!!"5!0
h`B""!"4,rrqm1'2rd$L"!DK)!hT0J%%!&$KK!+JiJ3'S5!&5p@!!!!#)!3#S+!!
!!N'!rj!!1'%!U$L"!$a)!i`jJ%%!&)"K!$`i!!!!Q!%!U,"m!!!iJ3"!1'!!+%J
$Ik'!33!89'!'2d'#rqb!!3"#9!!'2R`'!hJX"J!`3B!!%(c$"c3X!`!j3)%!&$K
J!!&)!hFYJ%%!&%[rrl`iBrr31)%"U%J$HEQ!33!81'%!U$L"!DK)!9*KB!!!!)J
"!+JS!!!#3B$rN!!iB3#S1)%!2%J$Lk@!33!8J!%!2*!!&J!!5!!"U$KL9Zb)!`!
!+!!!!%'#"XKAi!Br3B)"S$KLAfD)!`!!+!!!!%'#!)4A!!Br3B)!$&DJ"Mp!JJ"
dUT`!!&F$"Mj@S!BqJRB!!$L!rrpmC3!dX*`!!(`!!$53!*B!!(q$ihKqa,0i9+A
H2P3'hMj,rrTeU"`!!#`!rrp"JJ!)1`!!!DJF!!!X!2rr3))!#,+F!!#!&J!!,!$
rrd'#!!`kS!!"5!!!#**f!!"A!!Br3))!C%J$M%Q!33!85!1-@B""!"4mFaYi1)!
!(%J$M''!33!8X(`!!+JF!!!X!!!!3))!0(jJ"c9"JJ!X2'"TG(jNQhJiBfaL5!1
-6B""!"3S!`!!3B)!%)"M!!#S!`!-X"`!!&DJ"Mp!JJ#3!$KJ!#K)!i`pJ%%!&#`
$!!'3!(B!!%##!$!iB!!!5!1-2B""!"5!B`!!U!-!(R`!4R!X!!!,N!!@!!"!JJ!
-1!!!!E!F!!#!&J!!,!!!4d##!%!iBPq!J!-!!#`!#4"!JJ!`1'!!!%J$Lr@!33!
8J'-!!+J$!"jm!%C`,!!!4j!!&J!!3))!$$J!!!L`(!!!U(`!!$J$!qQ`(!!!5!!
!$&CJ"Mp!JJ)i2'"d4+LF!!!iBf&d5!%A+@!!!!"mGKYj3B)#($aJG%DSR!!!1'0
TE%J"&`eJ!!!!I(JEH8'#!#a)!i,GJ%%!&)#@!!"r!m0iIb8(0+L%!!",rqC&I`2
$H%J$JY@!33!82'"d4ULF!!!iBfCZ5!%@b@!!!!"mH"Yj3B)!,%J$JTQ!33!8J*B
!!(m$`hKr*3FdU)3!&%[rj[&r!m0i5!1#NB""!"4qi!Fe3B)!5$aJG&#SR!!!1'0
KDdJ"&ReJ!!!!I(JEH8'#!#a)!i*0J%%!&)#@!!"r!m0iIZ@lH+L%!!*,rqr&I`2
$H%J$JN@!33!82'"d4+LF!!!iBh0V5!%@1@!!!!"mH"Yj3B)!,%J$JJQ!33!8J*B
!!(m$`hKr4G0iU)3!"%[rm'&r!m0i5!1#!B""!"5!GJ!!Ic-(0(jNQhLSB`!+5rr
R%B"f!!"qC*YiU'-!#%[rk!'!GJ!!IQ5EH+KM!!C,rqU4J(B!!(jNQhLSB`!-5rr
S`B"f!!"qC*YiU'-!$N[rkC'!GJ!!IQ5EH+KM!"",rqYKJ(B!!(jNQhLSB`!55rr
X88[rl8eAi!Br3B)$D$aJ9%@SR!!!1'0B9%J"&A9J!!!!I(-EH8'#!#4)!i&&J%%
!&)"l!"JS!`!!3B)!$%J$J8Q!33!8NRX!'$aJFP5SR!!!1'0iG%J"&6PJ!!!!I(-
EH8'#!#a)!i%*J%%!&)"l!9)S!`!!3B)!$%J$J3f!33!8NRX"8NJ!!!K)!!,S2'"
*6+LF!!!iBh*c5!%8p@!!!!"mH"Yj3B)#c%J$J-@!33!8I`2$H%J$HK'!33!8U,`
!!(aj'hJiJPE81!Am&i"q!!#`"!!!5!0hiB""!"5!IJ!!1-!!!)#M!!")!!(iL!8
!ALJ!!!"!JJ(NL!8!A5J!!!"!JJ(BJ!8!4(`!b%"!J3(-I"N!8*!!"3"%1Z%!BRl
QZhLSK3"B1+%!B$KJ!!&)!"I"B!!!!(ac'hKqB!Fe3))"j%J$Fff!33!81X%!CRl
%XhK)!h6&J%%!&$KK!'")!)@"B!!!!$c!8P1SB3"J21"bFi#A!!"qaE0i1-C&4$M
RFQ0)!hK9J%%!&(ac'hKqB!Fe3))"N!#SB3"JIX@cH)#A!!!i`3"35!1'+B""!"4
mB!Fe3))!++!"!&KqaE0iU'%!B$M"!&"J!%!!J*F!!,!"!&K)!iB9J%%!&+KK!'"
qaE0iJ*F!!%J$L&Q!33!85!0fJB""!"4mFaYiIQ!(08##!55SB3"JIX@cH)#A!!!
ii3!i1-!!!dJ$L%'!33!8I(-EH(jJ"c9!JJ$mU'%!1(mPbhL!f!!!1)!!!%J!Kk9
J!!!!I(-EH(jJ"c9"JJ!8U'%!1%J!K%eJ!!!!5!!!b+KK!$K)!)3pB!!!!+KK!'"
qaE0iJ*F!!$M!!!0)!h$PJ%%!&,"K!$K)!hATJ%%!&(ac'hKqB!Fe3))!M%[rpI9
Ai!Br3B)!(+L"!$JiB!!!1+!!!%J"%jeJ!!!!5!!!'+L"!$JiB!!"1+!!!%J"%i9
J!!!!1k!!!8J!!#!iT3"N1-B!!6KL9Ujma!FdU!-!!(`%!!""J2hm9k!'2d##!!`
kB2rG5!!!)(m$`hK)!hjpJ%%!&)"q!!")!hPjJ%%!&%J!!&4r!m0i5!0qBB""!"5
!IJ!!5!0jAB""!"4qCTYi1'!$pML!!r!iS!!&5!%rP@!!!!!iB3"J5!#$L@!!!!"
mFaYiIQ5EH$KJ!!")!EQ9B!!!!)!"!ZJi)3,JZQ(rc(`)!kC1J!!J!!!!!!!!!!#
r3IrSI!J#TM[L9HJlB!!!1m*9l*!!!3!)P#(rX)"r!!#$S`!!5!!!R)JG!,iS!!!
!3B)!L$Kp!0!iJ!!!5!0d,B""!"48B!Br3B)!F)"r!!!l3!!!Ji-!!%J!!&5!I!"
kS"d!X(`$!%"!JJ!m1(`!d$L!!!&)!h2eJ%%!&&4J"Mp"JJ!N1(`!MML!!!4)!h2
GJ%%!&&4J"Mp!JJ!-L"d![TJF!,ilR!%11eS!!B!H!!"m'J!!3B$rU$Zp!3ilH`!
"J"i!!(`E!!""J2pJJ!%!@$JK!&#l3IrSI!J$TNk!!##r`IriI!J#TRaq'hJliPp
X1'!!#T!!!3!)P#(r`%J"%M9J!!!!9'!'2d##!*!!9m!'2d'#!%L!I`!!1)!!$dJ
$I`@!33!8J(m!!$L!!"")!hleJ%%!&)"r!!!iJ!!45!0qjB""!"5!I`!!1)!!%NJ
$IY@!33!85!!!4)"r!!!iJ!!25!0qNB""!"5!I`!!1)!!%%J$IS'!33!8J(m!!$L
!!"&)!hjaJ%%!&)"r!!!iJ!!55!0qBB""!"5!!3")1#%!3,["rrKm#!1Q6S!!)!!
!!!#r!IrJI!J#TM[#9H`liPASN!!"!!L8)IqJJ(i!!#`$!!""JJ%31f2rri"r!!!
F'`%1J'-!!(qM!K4)!!$`L"d!ZbJ!!!""JJ$F1(d!MML!!!4)!h*TJ%%!&&4J"Mp
!JJ$%1'!!!*!!I3"D1eX!!4`D!3k3!(d!AT!!I3"LN!"p!'D!I`!!Lcd![)"M!!!
iQ3!"9*J'2Rq$!K4)!!#!L(`![&FJ"Mjm!`"!3)%!I&F!"Mjm!`"!3))!A$Km!)i
iJ!!%5!0arB""!"48B!Br3))!4)"p!&U!(!"DI!-#&*!!(3"DJ(d!AS!F!&jm!`)
8N!!G!&k!I3"LJ"`!BR`$!K53!"d!BS"p!'D!(!"QI!-#&*!!(3"Q1eS!!6ZF!3k
!(J!!I"S!!%'!rh`lHrrr1lhqmL`E!!"!J2m3J!%!D$JK!'#l!IrJI!J$TNk!!#!
!!!!!!!!!!!!!!!#r`IriI!J#TMcJ!!*m[LYiI0mcH*!!!3!)1!H!!(r'mhL8)Iq
`N!!"!$KmB"YiI)-MH(`%!hJiS3!i5!##Z@!!!!#!J3!iI'!(0#`!rpPmRL)8N!#
I!!"!JJ!8J!%!1#`!!!""JJ!)1'!!!)!"!&Ji)3"3Zm(rq(`)!kC1J!!J!!!!!,q
"rr"m#!+QI,`VH(dI3hKmDKYiI0dcH(cq1hL3!!%!#*3Krl#!T3!!J3J!!)!*!!"
mD#S8I!-!!%#"!#KmJb0iI846H(r&mhKp*NYi5rrr0AaJ"c9"JJ!)5!!!-*2I!!#
!I`!!Ik6VH)#m!!")!h#YJ%%!&)#I!!!iB!!!J"`!!(`%!K53!"m!!)!"!&Ji)3"
3Zi(rm(`)!kC1J!!J!!!!!,qKrr4m#!+QI,dVH(cH-hJli!!!N!!"!!L8)Iq`J!8
!!#`!!!""JJ!X5rrr1Aar'hKri!Fe3))!()#G!!"r`r0i5!&,)@!!!!!iJPrFN!"
N!!"rirYiJ!%!@$JK!&"m#!1QZk(rp%k!!#!!!!!!!!!!!)"M!!!iS!!!U--!!$L
$!!*)!!!JS'3!"&4J"Mp!JJ!-B'!!!E!%!!3iT3!"1)3!+RbM"c4m`!FdI!-!!%'
!rpK1J!!J!!!!!!!!!!!!!!!![d(rk(`)!UCp(d0iI2ilH(cG-hKm[#YiI*XMH(a
k'hKrKZ0iN!!"!!Ji!!!"IkIVH*3Krk"rb20iIqRlH*!!!3!i1+%!1)#%!!",rrj
CI'!(08##!&L!Q`!!1!3!!C!!'`!!L"`!!&3!"Mp"JJ"!N!!"!$Kr3p0iIkIVH)#
E!!"rb20iIqRlH$LK!$Jih!!"5rrq&AaJ"c9!JJ!8J*X!!)!"!$Km"!)8N!!E!!#
!!3"S1#%!B,Y"rqKm#!1Q6S!!)!!!!!#qiIrFI!J#TRah'hKmf60iI*JMH(ck1hK
p'd0iI6a,H(eG8hJli!!!1m!!!*!!!3!)P#(rS*!!S3#!N!#Q!!#!B3#!,!-!!%'
#!(a)!hCjJ%%!&(ar'hK)!hD&J%%!&(aq'hKr`!Fe3))!A(rMqhK)!fmGJ%%!&)$
I!!"qilYiI`6$H(pRfhKrL10iIkRVH$LK!)",rrhaI(iEH(rMqhK)!h,&J%%!&(r
!"c9"JJ!3Iq2lH%J$GkQ!33!8J!%!J*!!'3!!XpS!!(rMqhL!!3"S1#%!B(`)!kD
kiIrF6S!!)!!!!!#r`IriI!J#TRaq'hJiIJ#11q!!!*!!!3!)1)!!!*3Krm")!fh
*J%%!&&4J"Mp"JJ!d1(i!MML!!!*)!ffaJ%%!&&4J"Mp!JJ!FIm2cH%[q919J!!!
!I'!(08'!!!Jli!!"9q-'2S!"!%Ji)3"!I!J$TV["rrK1J!!J!!!!!!!!!!#r`Ir
iI!J#TRaq'hJiIJ#11q!!!*!!!3!)1)!!!T3Krm")!fe*J%%!&&4J"Mp!JJ!FIm2
cH%J!!ZeJ!!!!I'!(08'!!!Jli!!"9q-'2S!"!%Ji)3"!I!J$TV["rrK1J!!J[f(
rl(`)!UBFJ`%11+*9k$KLAril`PAX1q!!!C!!!3!)P#(rX)J$!!#!T3!!+!!!!)"
P!!"mI4YiIi-L&%'#!'arJq0i5rrqh94J"Mp!JJ$%1f!!!%J!!%3iI3$31)!!!8J
$E+Q!33!89'!'2d'#!#5!I3"kS"`!X(`$!%"!JJ!8Ik2VH%[rrTe8B!Br3))!K$Z
p!3ilH`!"J"i!!(`E!!""J2qi5!!!D(q$ihK,rrle9'!'2d##!&`lB!!!5!!!4$K
p!0!iJ!!"5!0X3B""!"48B!Br3B)!*)"p!(UJ(!#`I!-!3%##!"4rSqYi5rrqY94
J"Mp!JJ!F1ld"$MYl!!'!(J!!I"X!!%'!rlJli!!!Iq2lH)!"!&Ji)3"3I!J$TVY
Krqa1J!!J!!!!!!!!!!#rSIrdI!J#TRap'hKmRL0iI,mVH$LG!!D3!!%!#*3KrN!
iB3#N5!&$A@!!!!!i!3#NN!!"!%Si!!!!1'%!1+LG!!#`J3"1J*d!!T!!J3"SX!%
!9%J$EU'!33!8I'!(08##!"5!!3"ZN!!H!!#!!3"iN!!I!!#!!3()1#%"`,ZKrr4
m#!1Q6S!!)!!!!!!!!!!!!!!!!$M!!!%iS!!!5!!!)(bJ"c48!"!kI)-#&)!%!0)
X!!!!3))!'$LP!!&mS!Fd,!!!#%'!rp`i`!!!I--cH%k!!##rBIrXI!J#TM[L9V4
mR#0iI(XEH*!!!3!)1!!!rj3Krl#`"!!!5rrrR94J"Mp!JJ!-1'$rrdJ!!(LS(`!
!,!!!!%##!!`iB!$r5!!!C$KL8E3lS!!!J'-!!)2$!!")!!!mL"i"@5J!!!&!JJ!
SL*i"9cKl!0*)!fU9J%%!&&4J"Mp"JJ!3Xl`!!)Kq!9G)!!!J1pi%&MZp!!'S(`!
!Ik-(0(`$!!""J2qm1'$rri!"!&Ji)3"3Zf(rl(`)!kC1J!!JI!J#TT!!!3!)P#(
r`$L"!$K,rrmaJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!,pKrqam#!+Q1q*
@Y(al'hJlJ2rrN!!"!!L8)Iq`5rrqY94J"Mp!JJ!-1'$rrdJ!!)5S(`!!,!!!!%#
#!!`iB!$r5!!!F$KL8E3lS!!!J'-!!)2$!!")!!")L*i"9cKl!0*)!fQjJ%%!&&4
J"Mp"JJ!SL"i"@5J!!!&!JJ!FL"i"AbJ!!!""JJ!-1'$rrdJ!!#5,RJ&A1pi%&MZ
p!!'S(`!!Ik-(0(`$!!""J2q`Ii2MH)!"!&Ji)3"3Zf(rl(`)!kC1J!!J!!!!!!!
!!!!!!!!!Nq(rr(`)!UCmC"YiN!!"!!Ji!!!F1q!!!*3Krk!iB!!!N!!"!$JiS3!
m1-%!1%J"l39J!!!!I'!(08##!"3iB3!m5!([!@!!!!"mIaYiIq2lH)!"!'Ji)3"
JI!J$TS2Krra1J!!J!!!!!!!!!!!!!!!![k(rp(`)!UCmR50iI,iVH*!!!3!)P#(
rX%J$Ki'!33!8I(mEH(rJ"c9!JJ!8U(d!!$L!!!",rrpGQ(i!!(rMqhL!!3"B1#%
!8(`)!kDlSIrd6S!!)!!!!!!!!!!!!!!!!,qKrr4m#!+QI*iMH(ap'hL3!!%!#$J
!!!#8)Iq`X!%!1$LK!$LSK!!!5!(Y+@!!!!"mB!Fe3))!8+KK!$K)!f10J%%!&(a
r'hP"JJ!dU*i!!(qMkhKrjIYi5!(Y1@!!!!"mB!Fe3))!)(rMqhKra20i5!(YB@!
!!!")!!!-5!0`$B""!"5!!3"B1#%!8,ZKrr4m#!1Q6S!!)!!!!!!!!!!!I!J#TT!
!!3!)P#(r`%J$Gp@!33!8J!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!(`)!UB
i`!!!N!!"!!L8)Ir!J)3!!%J!HEeJ!!!!J!%!5$JK!%"m#!1Q6S!!)!!!!!#r)Ir
NI!J#TMML8E"mI"YiI*dMH(bq+hKmhc0iN!!"!!Ji!!!!P#(r%,!"!$L!C`!!J'-
!!+J$!&L`!3#%1d%!KUL"!)4r4Y0i1+%!K$KJ!!&)!!JKB!!!!%J$BpQ!33!81f%
!LRpNfhK)!f8aJ%%!&$KK!)3iJ!!!1+!!!$M!!!")!'qaB!!!!(aj'hKr)!Fe3B)
!+(mJ"c3X!2r53B)!$#`!rp4!JJ%%U'%!K$J$rrq`!3#%5rrrL+KK!)4rCGYiJ*S
!!$M"!$a)!hD*J%%!&(aJ"c9!JJ!SS!%!4(pPfhLSB3#%1-%!2'!!3!#!QJ!!X!%
!4%J$GR@!33!81'%!K$LK!$JiJ!!$5!0SqB""!"4mH4YiIb!(08##!*!!J,i!!(q
$ihJiJ!!"5!0biB""!"5!JK$)1+!!!)$L%-3iB!!$U-%!1$J!!!'3!'%!6$KK!%b
3!)%!8$L!!!#3!1%!9*2K!&LcJ3"JX-%!BT!!S3"SN!#K!'b3!+%!F*!!S3"dN!#
K!(L3!!%!I*!!S3#!5!%G2@!!!!"mH4YiIb!(08##!"5SB3!i1!!!!,"p!!#3!"i
!!(mJ"c9"JJ"!U'%!1(aJ"c9"JJ!d5!"dC@!!!!!iB3#%5!"dQ@!!!!"r)!Fd,!$
rhN##!"5SB3#%1!2rrl!"!)4,rrj8Ib2,H)!"!2Ji)3$`I!J$TVXKrq41J!!J!!!
!!!!!!!!!!!!!9'32rP4J"rjm!#*iI'3!8(`$!0"m!"Ki9!-2rNk!!##rJIr`I!J
#TRbq+hKmI"Yi1+!!!(bG)hKmhc0iN!!"!!L8)Ip!Xi%!6MKK!$L3!+%!4*2"!%U
!"!!!N!!"!'L`S3"85!0S)B""!"4mB!Fe3))!*)J"!&C8!!Eh3B)!%)!"!'L3!"d
!!%J!!#`iB2r35!!!*&IJ"Mp"JJ!FJ*d!!(q$ihKraI0iIkEVH%J$Dl'!33!8J!%
!b$JK!-#lJIr`I!J$TNk!!#!!!!!!!!!!!!!!!!#r!IrJI!J#TRai'hKmQ50iI,S
VH(cE-hKmr$YiN!!"!!L8)IkJ5!0P6B""!"4mI4YiI`2$H%J$C5@!33!81!!!!*J
"!$Kr!m0i5!0R)B""!"5$q!!!IpmD&$[r!!*)!!"NJ"m!"(`!b%"!JJ!iL"m!)$K
r!#%iJ3!jQ!%!1)LK!$K)!f4*J%%!&(pMfhKr400iIiEMH$LK!$K,rrkj5!!!,)`
I!#"ri2S81rm!!ArMqhK,rrk"9'!'2d'#!!Jlr`!"I"r`!%'!rjar!m0iIk6VH%J
$CeQ!33!8J!%"D$JK!@#l!IrJI!J$TNk!!#!!!!!![Z(rh(`)!UCmH4YiI*FMH(b
k+hKmfc0iI2`lH(dG3hL3!!%!#*3Krk")!f4CJ%%!&(aq'hKr)mYi5!0N-B""!"3
i!!!!Q"S!!(mMbhK)!fBYJ%%!&)2j!!"r(aS81rm!!NJ!!1L!(`!%I!#i3%##!,`
mB("bJ,m!%$L$C@Cm"5!!3B)!D%#!!#`mB'eK1!0MFh`&!!""JJ"d3)!!D$aJCAJ
iJh4ZI!8J!%'#!#K)!!"82'"bEcJ$Eh4m"3!!3B)!#%J!!%!i!!!#N!!E!!")!!!
mIb2,H(pPfhKrKZ0iIkIVH%[rrM&)!!!NIb2,H(pPfhKrKZ0iIkIVH%[rrKP)!!!
-1!!!!T!!'`!!L"m!)$Kr!#%iQJ!"Q"S!!)Lk!!")!f+pJ%%!&%J!!#b-(`!JIq$
k&$[r!!&rirYi5rrp#94J"Mp"JJ!)1rm!!A`I`!""J2mBIb2,H(r%mhK)!fAKJ%%
!&)!"!'Ji)3"JZZ(rh(`)!kC1J!!J!!!!!!!!!!!!!!!![d(rk(`)!UCmHKYiI*X
MH(bm+hL3!!%!#*3Krl")!f,PJ%%!&(ap'hKr3p0i5!0L[B""!"3i!!!!Q"`!!(p
$dhK)!f5jJ%%!&)2k!!"rhaS85!!!8)!I!!"m!0K!3))!*)JI!!FiI`!)1*`!!CJ
F!!#)[!!!5!0KjB""!"4)!!!XM"m!"hrJqK3lr`!"Iq2lH%[rr$&8B!Br3B)!#$[
r!!&m(r!!3B$rX(p$dhKrT1Yi5!0P#B""!"5!!3"B1#%!8,Y"rqKm#!1Q6S!!)!!
!!!#r!IrJI!J#TRaj'hKmQL0iI,XVH(cF-hKmr6YiN!!"!!L8)IiJ5!0K6B""!"4
r*!Fd,!5!!(aq'hK"JJ(%1'*4X)"M!!#!B`!!U!-!@(`%!!""JJ'X1'%!Y,-K!%i
i!!!!N!"K!%SiB3!iX!%!9%J$Ckf!33!8I(JEH(m!"c9!JJ'-J)%!NL`%!!""JJ'
!2"U5RbJ!Bh0!JJ!8Xc`!!)!"!*+3!"d!!%J!!B4r)mYi1+%!Y$M!!!!ii!!!13!
!!%J"SH9J!!!!I'!(08##!8!iB!!!5!0RBB""!"5!J3#5Ib2,H$LK!,3i`!!"5!0
EfB""!"4mIaYi1'!!!8J$CcQ!33!8Iq!(0#`!rrp"JJ%!2'"ZCMKMC#-iJ!!!5!$
pf@!!!!!S!`!!3B)!C)!"!**r400iIkEVH*!!(3!!IbI,H(pSfhJiS3#d5rrmEBJ
"!,3S!!!!3B)!1(mMbhKrT1YiIfEEH$LK!,4,rrUYI(JEH(m!"c9!JJ#!Xc`!!(r
MqhK)!fEPJ%%!&%J!!+3mB'CX1'0N)cL!!!")!2eGB!!!!#J$!!""JJ"3J!%!NRp
%dhJiS3#dN!!G!!",rrepL!%!Y#J!!!""JJ!`Ib2,H(qNkhKrCYYi1+%!Y%[rqMf
c2!!!I(JEH(rMqhK)!fCpJ%%!&%J!!$arirYi5!0QEB""!"4r`r0i5!0IZB""!"4
r)mYiId66H(pPfhKrKZ0iIkIVH%J$B3@!33!8I(JEH(r$mhK)!eq0J%%!&(m$`hL
!!3(S1#%"i(`)!kDl!IrJ6S!!)!!!!!#r)IrNI!J#TM[L@Q"mR#0iI,dVH(cH-hL
3!!%!#&4J"Mq8)Ik!3B)!A(q$ihK)!69PB!!!!$L#9UjmC3FdU!3!!(`&!!"!J!!
m1'*4X"`&!'5!B`!!J'-!!(b$!K5!"!"8,!!!!%'#!"bS"!"B1'!!!,!G!!#!"!"
8N!!H!!")!!)!2)"dCAq$ihKrTZYiImIcH$L%EA!iS!!"5rrp'Aaj'hKr)!Fe3))
"#$KLAfD)!`!!+!!!!%'#!)LSI3!!1+)8K)#H!!!i`3$)5!0PBB""!"3iB3$)5!(
YI@!!!!#SB3$)1+)8K)#"!-Si`3#!5!0P2B""!"5SB3#!1+)8K)#"!))i`3!i5!0
P*B""!"5!!3!k,!!!!N##!#JiJL@X1'%!2NJ"08&J!!!!9'!'2d'#!"!iB3!i5!(
Y(@!!!!")!eU&J%%!&$YK!4CrC0Yi5!0EhB""!"5SR3!!IfEEH)#q!!!iB3%35!%
9(@!!!!!iB3%31)!!!$LJ!!!i`!!!5!"Q4@!!!!"mH4YiIb!(08##!"3iB3%35!"
XA@!!!!")!!!3Ib!(0#`!rp""J[q8Ib!(08'#!+!mJ'4PIi2MH(qQkhKrar0i1)4
cDcLJ!!&,rr[PI(NEH(mJ"c9!JJ"i1hm!"ML#*EarBpYi5!%db@!!!!#$AJ!!If2
EH+LG!!"raI0i5!"QB@!!!!"mH4YiIb!(08##!%#SR3!!Iq2lH(p&dhKrCYYi5!%
8A@!!!!"rirYi1)!"rcLJ!!!i`!!!5!$ej@!!!!"rirYi5!(X#@!!!!"r)!Fe3B)
!*$b!CQarJq0iIkEVH(r(mhJiK'jd1+!!!8[rqd&mH4YiIb2,H)!"!BJi)3'!Zb(
rj(`)!kC1J!!J[m(rq(`)!UCmIKYiI*mMH(r'mhL3!!%!#*3Kr`!iB3!i5!%6d@!
!!!!iB3!i1+%!J$L!!!")!'l0B!!!!(aJ"c9!JJ"dL!%!RSKq!,Y8!!EfI!-!!%'
#!'!S!`!!1'!!%d'#!!JiB!!3Im6cH%J!"39J!!!!9'!'2d##!!`iB2re5!!!1)J
H!,XS!!!!3B)!&$KK!$K)!'V0B!!!!%J!!"L!J3$NIq2lH)#K!**)!HL&B!!!!$K
J!!#!!3%)1#%"!,["rrKm#!1Q6S!!)!!!!!#!J`!!9)!%2LJ!J!"-JJ!J1!!!rhb
!!hL3!!-!!%k!!##r`IriI!J#TRar'hL3!!%!#$J!!!#8)Iq`N!!"!$K)!eZ&J%%
!&(aq'hJiB!!!5!0L0B""!"5SI`!!1,m!"S#I!!)i`!!"5!0@VB""!"4mIaYi1'!
!!8J$BJf!33!8Iq!(0#`!rrp"JJ"!2'"fC6KMFR-iJ!!"5!$iV@!!!!!S!`!!3B)
!')#$!!!iB3!iJ!3!!*!!!3!i5rrr6ArMqhK)!f(eJ%%!&(r$mhK)!eY"J%%!&)"
K!$L!!3"B1#%!8(`)!kDl`Iri6S!!)!!!!!!!!!!![f(rl(`)!UCmR#0i21"65Aa
l'hKmhc0iI+3VH$KR3dk3!!%!#*3Krk")!2JTB!!!!(aq'hP"JJ#)5!0E@B""!"4
mI3GdIm2cH%J$@c'!33!8Iq!(0)"q!!"8!#JdI'-#&$J!!!+3!'%!1$[K!$k`!3!
mIq2lH$L!!!!iS!!!1-!!%$MJ!"")!f$&J%%!&(pNfhKrjIYiIiEMH$KK!$Jii!!
!13!!!%J$EQf!33!8Im2cH(qN"h4)!ef9J%%!&)!"!'Ji)3"JZf(rl(`)!kC1J!!
J[m(rq(`)!UCmIaYiI*iMH*!!!3!)P#(rS$KK!$`iJ3!i5!0YmB""!"3i!!!#Nq%
!3$[K!%D`!3"%Iq2lH$L!!!!iS!!!1-!!%$MJ!"")!f!YJ%%!&)"K!$a)!fh4J%%
!&)#$!!"rjIYiImEcH$KK!%!ii!!!13!!!%J$EFQ!33!8J!%!D$JK!'#l`IriI!J
$TNk!!#!!!!!!!!!!!!!!!!#rJIr`I!J#TRbF)hJmi&0*I'3EH(bp+hKmhM0iN!!
"!!JiCd01P#(rX%J$D`Q!33!8I(mEH)"M!!"rJ!Fd9!!S0(qNkhKmB`)81+!!)%J
$@5f!33!8Iq2lH%J$EQQ!33!8Nli!!$J!!!)iIJ!'X"i!"$L!!!!iS!!!1-!!%$M
J!"")!epCJ%%!&)!"!&Ji)3"3Zi(rm(`)!kC1J!!J!!!!!*2KrramIaYiI!J#TML
r!3L3!!%!#$MI!Q+8)Ir!1'!$l6L!!!",rrmp1,m"+$MI!R!iB!2Z1)!!!%[rrbN
i[`&)10m#IMKJ!r!iJ!!!5rrr&6Lr!!Jih`(b1'!$m6L!!!",rrm"1,m!+$MI!J!
iB!2a1)!!!8[rrZdi[`")10m#$MKJ!r%iJ!!#5rrqf6Lr!'Jih`)F1'!$m6L!!!0
,rrl&1,m!L$MI!LSiB!2a1)!!"%[rrV%i!!!!X"m!!S!"!%Ji)3"!I!J$TS2Krra
1J!!J[m(rq(`)!UCmIaYiJ')-S*!!!3!)P#(rX%J$92'!33!8I(iEH$KK!$a)!e6
jJ%%!&(rM"c3iJ!!"5!%2Q@!!!!"mIaYi1)!!!8J$9CQ!33!8Iq2lH%J$8pf!33!
85!0@eB""!"3iJ3!i1'!!!%J$9[@!33!8U!%!1#`!!!&!J!!-,!!!"%'"rq"rirY
i5!0@lB""!"4r`r0i5!0A%B""!"5!B3!m5!0A(B""!"5SB3!iJ!%!@$JK!&"m#!1
QZm(rq%k!!#!!!!!!!!!!!!!!!!#rBIrXI!J#TRam'hL!BJbJI*dMH*!!!3!)P#(
pN!")!e3GJ%%!&(aq'hK)!6'CB!!!!$KK!%")!e3GJ%%!&$KJ"!iiJ!!!5!%1[@!
!!!"mIaYi1)!!!8J$9,f!33!8IjX(0$JE!!)iB3&-I!8(0$L!!rG)!e8"J%%!&(r
MqhJiS3!i1-%!2$MK!%3iJ!!#5!05TB""!"5!B3!m1)%"6%J$Ebf!33!81"X!!6K
K!8am"3Fd1)!$pdJ$9,f!33!8Iq2lH$LK!$Ji`3!m11%!4$L!!!&)!e*KJ%%!&)"
K!$`iJ3&-5!0ZkB""!"3iBPCNU'-!"NJ",+&J!!!!X'%!1MKL9UkSJ3!kU!-!!(`
%!!"!J!!S1'*4X"`%!'5!J`!!1'%!6)#%!!"mK!)85!%YL@!!!!")!!!-1!!!!*J
"!%arKH0i1'%"6$L!!rG)!e3TJ%%!&(qMkhJiJ3"-11%"6$LJ!!!i`!!!5!%D6@!
!!!"rirYi1+%"6$L!!!4)!5FjB!!!!$KJ!!!iJ!!!1+!!!$M!!!")!e34J%%!&(r
MqhK)!4"9B!!!!(rMqhJiJ!!$5!0JjB""!"4rirYi5!04UB""!"4)!5MKB!!!!(r
MqhK)!e'9J%%!&%J$9)f!33!8Iq2lH%J$9*Q!33!81)%!1MKJ!!")!e5KJ%%!&+J
"!$SX!!!"3B)!$#`!!!*!J[rJIq2lH%J$9*Q!33!8Im2cH%J$9,f!33!8J'%!3%J
$9-Q!33!85!%ZS@!!!!")!%lTB!!!!$J!!!+SB3!kI!!(0(`$!&"m!!!d9!2H2S!
"!RJi)3*`I!J$TVYKrqa1J!!J!!!!!(`)!UD3!!%!#(aJ"c3S!!!(P#(r`%'"!&!
iBLA-9!!31RaM!#jmD31Q6S!%)$KJ!!&)!!!m1'!!&NJ!!$3iB!!C5!!!,$KJ!!4
)!!!N1'!!"dJ!!"`iB!!+5!!!&$KJ!!e)!!!-1'!!!%J!!!K,rrdPJ!%!5$JK!%"
m#!1Q6S!!),q"rr"m#!+QI(iEH$[J!!#3!!%!#*3Krb#SB`!!5!%UK@!!!!!iJPD
ZI'8(0+J%!!"m"3!!3B)!r$KL8E!F"3"NJ'-!!)"M!!"rJ`)8J"`!9#`!!!"!JJ!
SU*`!@$LK!$Ji`3!m1'!!!8[rp+PmB!Fe3))!`)!"!$b3!"`!9)1m!&5!(J!#I"d
!!%##!"5SI!"BU"i!!(`$!!""JJ#BIm2cH(qNkhK)!32pB!!!!(aJ"c4m!!!d9"r
H2d##!(JX(3!!3B)!F$J!!!Km#31Q1-%!I$Lqrrb!C3!%K!8!#*!!CJ!%P!B!#%)
!rr#!"3!%1'%!J$L"!%#3!!B!"+!&!!L`"J!)Nk%!JNJ"!PeJ!!!!I'!(08##!#"
r`r0iIk6VH%J"!i9J!!!!I'!(0(`!!$48(piqIq2lH)!"!1Ji)3$JI!J$TVZ"rr"
1J!!J!!!!!!!!!!#q`IrBI!J#TRbI)hJlSPrlI(iEH(bh+hJiI`#11X!!!$L!!!5
3!!%!#*3KrU")!e+GJ%%!&&4J"Mp"JJ!8L"m![bJ!!!9!JJ!)1X!!!Alm"c4AK3C
b9i-'-(b&!0"mK#KiI!-!d(`!'(KAK3FqI,FVH&5C$rjr`r0i9YB'2P3B$riiS3$
-1)!!!%J!C-PJ!!!!I(XEH(pJ"c9"JJ!)5!!&d(lJ"c3X!!!'3B)$E&H!jliX!!!
"3B)!'%#!!!K)!!#B,!!!!d#!!*!!5!!!+&E!"Mp"JJ!-1'$rrdJ!!!L!I`"#J!%
"&*!!B3"!N!!"!$a)!!#)9X!'2d'#!"!i!2rrN!!"!%")!!!8J"m!YMKK!%#3!!%
!3%[rpK')(`#l+!!!!%'#!#Ji!!!!N!!"!$ar`r0i1)%!2%[qpe&J!!!!1'%!2%[
rpH9)!!!dIm2cH%[rpIQ3!'%!2%J!!#4@`!Br3B)!$$KJrrp)!!!)J(m!4S!"!4L
3!'%!3*!!!3!mIZ!(0#J!!!K"J3+3!$KL*Ha8!"!kI'-!,RaT!kC1J!3JJ'%!3)!
"!$am!`"!3B%#G&FJ"Mp"JJ!BIZ1lH(rNqhK,rrap9'!'2d##!PJiB2rr5!!%U)"
K!%#!!3!mI!-!3%#!!N"A)!Br3B)!'(lMZhKrj2Yi5rrm594J"Mp!JJ)N1'$rrdJ
!"(5!B3"!J!%!2(`$!%"!J3)-9b!'2d'#!"KqilYiIq6lH%[rr"98B!Br3))"m$K
Jrrp)!!4!J'%!3)!"!$am!`"!3B!"f&FJ"Mp"JJ!BIZ1lH(rNqhK,rr[K9'!'2d#
#!E`iB2rr5!!%$&E!"Mp!JJ'XJ(m!4S!"!4Km!`"!3))"R)"r!%+!!3%8I!-!3%#
#!Bb!I`"LJ!%"!R`$!!"!JJ&mJ(m!CS!"!3am!`!!3))"E)"r!(k!!3$XI!-!3%#
#!9b!I`##J!%!m(`$!%"!JJ&-S"m!KMKK!$SiJ!!(X!%!1NJ$9-f!33!8S!%!p$K
K!$JiJ!!(X!%!1%J$9,@!33!8U'%!1UJ"!$Km!`!!3))"$&FJ"Mp"JJ!BIZ1lH(r
NqhK,rrX99'!'2d##!2!iB2rr5!!$3&FJ"Mp"JJ!BIZ1lH(rNqhK,rrVa9'!'2d#
#!-`iB2rr5!!$()JG!!!S!!!!3))!Z(rMqhJiJ!!!1+!!!$M!!!")!dhaJ%%!&%J
"+JPJ!!!!1'!%!8[rpfemHKYi5!"*9@!!!!")!5MpB!!!!(p!"c3X!!!$3B)!F%#
!!"3X!!!"3B)!'%#!!"a)!!"F,!!!"8#!!&4)!!!N1'$rrdJ!!U")!38KB!!!!&4
J"Mp"J[q%1'$rp8J!!SJi!!!"Q"d!!%J!!#5!B3"!J!%!2(`$!%""J3!81'$rrdJ
!!Q3iB2rr5!!#A&F!"Mp"JJ!NIm2cH$L"!%4)!2hYB!!!!(al'hKrB!Fe3B)!p%J
!!M4r`r0i5rrkF94J"Mp!JJ$JL"m!Zi"r!)iS!!!!9'!'2R`D!hK"JJ!`Im2cH$L
"!)4)!'%eB!!!!+KK!)3iS3#+J)%!KNJ"f`&J!!!!I(XEH%J!!#LSIJ!!1,i!"S#
H!!*)!e'0J%%!&(r$mhK)!&d*B!!!!(al'hKrB!Fe3B)!F(p!"c3X!!!"1f$rrd'
#!&!X!!$l3B)!5#`!!!4"JJ"!,!!!"N'#!$JX!!!(3B)!-$KLAqbSRJ!!U!-!!(b
$"c4m!`!!3))!'(r$mhJiJ!!!5!$q4@!!!!"mHaYiIf!(08'#!!arBpYi5!!"5$K
r!)iiJ!!%5!00QB""!"48B!BrI(BEH%'#!&3iBQ!*L!-!!#J!!!""JJ!N1(m!HML
!!!e)!deYJ%%!&&4J"Mp!JJ!X1'$rrdJ!!2`iI`"k1)!!$NJ$68f!33!89'!'2d#
#!!`iB2rr5!!!h&E!"Mp!JJ#-L"m!ZbJ!!!"!JJ#!L"m![#J!!!""JJ!`Id!(0#`
!!!&"JJ"),!!!qd'#!%!X!!!%3B)!1#`!!!C"JJ!`,!!!"d'#!#Kr`r0i1*m!IML
J!!!i`!!!11!!!%[pSVeJ!!!!I(XEH%J!!#5![`"#Im2cH)$I!%BiR`"q11!!!8[
pSTPJ!!!!I(XEH&F!"Mp!JJ"!L"m!ZbJ!!!"!JJ!dJ!%!pMKr!)BiJ!!(N!!I!)K
)!e&jJ%%!&(r$mhJiR`"q1+!!!$M!!!")!&FKB!!!!(pMfhL!!3&S1#%"B,V"rpK
m#!1Q6S!!),pKrqam#!+Q1)*9k(al'hJlJ!!!1k!!!*!!!3!)("X"$T3Krl#!C!!
!J'-!!(ar'hKr``)85!!!A)JI!,XS!!!!3B)!5)Kr!,b)(J#mI!-!3%##!$L!(`"
Z,!!!!8##!#arirYiIm6cH$LJ!!!i`!!"5!08UB""!"48B!Br3B)!$$Z!!!&)!!!
81rm"$MZp!!&m(GJ!3B$rT(q$ihL!!3"B1#%!8(`)!kDlBIrX6S!!),qKrr4m#!+
Q1+*@&(ap'hKmRL0iN!!"!!Ji!!!!P#(rS*!!!3!iJ'8!!%J$6"Q!33!81)*FZRa
M"c5S"!!!I!!B!%##!1arSqYi5!0)qB""!"3iB3!i5!03rB""!"4)!e%0J%%!&(q
MkhKra20i1+%!4%J"'r&J!!!!1'%!4$L!!!)iS!!#5!03rB""!"4)!e%0J%%!&(a
r'hJiJ3"%5!04&B""!"5!JJZ`1'%!2%J!jM9J!!!!1'%!4%J$84'!33!81)*4c(r
MqhL!K!!!5!04&B""!"3iB3!m5!$Q@@!!!!"rirYi5!04&B""!"3iB3"%1)$rrcL
Jrrp)!e#*J%%!&$KK!%4)!e%0J%%!&(qMkhKra20i5!(k,@!!!!#!B3!i1)!!!8J
$84f!33!8J!%!D$JK!'#lSIrdI!J$TNk!!##r`IriI!J#TM[LAfb3!!%!#*3Krl#
!I`!!5!0(kB""!"3iBP(-1)%!1)"M!!#!B`!!Jm-!((r$mhK)!dCKJ%%!&+J"!$S
X!$k!3)!!I)"r!!!iS3"!1)!!"dJ"'XPJ!!!!1'%!3$L!rriiS2rq5!02eB""!"3
iB3"!5!03%B""!"5!I`!!1)!!"dJ$99Q!33!8U+%!1Rr$mhLSJ3!i1+8qJ$J%2S"
mT!FdI!8(0%J$51f!33!8J(m!!$L!!"C)!e8PJ%%!&)!"!&Ji)3"3Zm(rq(`)!kC
1J!!J!!!!!!!!!!#r`IriI!J#TM[LAfb3!!%!#*3Krl#!I`!!5!0(#B""!"4)!3F
KB!!!!&4J"Mp!JJ!S1'*@&)"M!!")!dRTJ%%!&$L#A,TmB`FdU!3!!(`!'!"!JJ%
)J(m!!$LK!$JiJ!!(5!%Ci@!!!!#S!3!q,!!R%%#"!$L!I`!!1+%!1$L!!"0)!4R
"B!!!!$KK!$JiJ2rr1+$rrdJ$6Xf!33!81'%!1%J$6`Q!33!8J(m!!$L!!!G)!e5
"J%%!&$KL8F`iJ3!iJ'-!!)"M!!#$``!FIm2cH%J$41Q!33!8U'%!1RaJ"c3X!$k
!3)%!2+L"!$JiSm'!Im2cH$J%`B"mT!FdI!8(0%J$4lQ!33!8Im2cH%J$8m@!33!
8J(m!!$L!!!G,rrc&1'!!$NJ!jaeJ!!!!9'!'2d'#!"L!I`!!1)!!&NJ$8r@!33!
85!!!&)"r!!!iJ!!@5!06XB""!"5!!3"B1#%!8,["rrKm#!1Q6S!!)!!!!!!iJP'
`11!!!)#%!!#!a!!!5!!!*+L'!&KmB!FdI!3!!%##!!b)CJ"F6S!!)$MR!!%iaJ"
N1)*@VRcP"c5S"!!!I!8!!%'!rp!iB!!!6S!!)(`)!UBiB!!"N!!"!!JiJ!!!P#(
r`%J$FUf!33!81'!!!B!"!%Ji)3"!I!J$TNk!!##6iIrmI!J#TRar'hL3!!%!#*3
Kra!iB3"!1)%!B%J!!D9J!!!!9'!'2d'#!A`i!!!)I!N$TMLK!*JiRrrmJ'3!")3
%!!L3!'8!"*3&!!K#!2r`J!3!"$KLAfD3!!8!")J$!!#JC!!)+!!!!,"P!!K"JJ!
81'%!R%[rree8B!Br3))"+$aJF(-iBfiJ1)%!3$M"!&JiS!!)5!0,,B""!"4mB!F
e3))""$aJCQimJ'Ce1'0NFML%F'3iS3"B13%!8$M!rrmii!!!5!0@*B""!"4mB!F
e3))!b$aJCR-iBh-J1)%!R$M"!$JiS!"'5!0+fB""!"4mB!Fe3))!Q$b!,5diB3"
31)3Y,6LK!$K)!eAjJ%%!&(aJ"c9!JJ"X1'*IJ)!$!!!X!!K33B!!,$KK!&!iJ!!
!1+!!!6M!!!%ii2rr13!!!$NJ!!")!eA9J%%!&%J!!$3iB3"31)%!5$LJ!!-i`!!
"11$rrcN!!!!j)!!!5!09VB""!"3iB3")5!09ZB""!"3iB3!i5!09VB""!"3iB3"
35!09SB""!"3iB3"B5!09PB""!"5!!3$i1#%!m)2Krram#!1Q6S!!)!!!!!!!!!!
![m(rq(`)!UCmRb0i1)!!2(aq'hL3!!%!#$J!!!#8)Ip3N!!$!!#3!!-!"$KK!$J
i!3"FN!#I!!#3!(m!"*!!(`!i5!!!4(r$mhKrj2Yi5!01)B""!"4mB!Fe3))!,)"
r!"!m!lQb+!"%8N##!"b!I`!82!1b[bJ!3e0!JJ!-1'!!!8J!!"ar`r0i5!0B6B"
"!"4mB!Fe3B,rX$KJ!!#!!3#i1#%!X,["rrKm#!1Q6S!!)!!!!!#r`IriI!J#TRa
q'hJiIJ#11q!!!*!!!3!)1)!!"*3Krm")!d6jJ%%!&&4J"Mp!JJ"-J(i!IM`$UDd
S!&933))!2)"q!))m!kQY+!"9-8'#!"!m!kQh+!"c08##!#!iIJ#r1)!!"NJ$4,@
!33!89'!'2d##!!Jli!!"Iq2lH)!"!%Ji)3"!I!J$TV["rrK1J!!J[b(rj(`)!UC
mQ50iI,SVH(dl5hL3!!%!#(aJ"c3iB!!!P#(rF#`!!!13!-%!Y*!!B3!i3)!"E#`
!!!&!J!!)5!!"B)#l!!"rBpYiU)%!Y)2&!%5![J!!Ji8#S)'&!Sb$T3+BIiAMH%J
$G4f!33!8I'!(08##!5`iB3!i5!0*bB""!"4)!dRCJ%%!&)###l!iB3!m5!$I3@!
!!!"r3p0i5!0+(B""!"3iB3!m5!$IH@!!!!#!IJ!!1m!!!+[M!!4)!!#dIm!(0)#
G!!!FB!!B1!!!!hb%'K4m#31Q1+%!8$L%rrb!C!!%K!3!#*!!C3!%P!8!#%)!rr#
"J3"F+!`!!%'#!(#!!3"BJ'%!9*!!!3"3J,S!!+M"!&+!QJ!%I-!(0C!!B3"-N!#
K!%53!)%!5%'#!"#S!3"'I!B#&,!"!%USB3"1I'!(08'#!"#S!3"'I!!D&,!"!%D
SJ3#dIf2EH(q&ihKr*mYi1-%!4%J$G"f!33!81pi!!Ar$"c4ri!FdI!-!!%'!rd5
!B3!i1)!!!8J$5DQ!33!81'!!!%J$5%f!33!8J!%!Q$JK!*!!Zb(rj(`)!kC1J!!
J[d(rk(`)!UCmHKYi1'!!!(bE)hKm[#YiI6e,H*!!!3!)Id!(0#`!!!18)Iq3!*!
!`3#8N!"K!$K!J!$%,!!!!8#!!!K)!!#iJ,d!!(qMkhLSJ3#8Jq8!4)#r!!#$a3!
%JB8!!(r&mhK)!h0YJ%%!&(aJ"c9!JJ#)1'%!1%J$5"Q!33!85!0)+B""!"5!JJZ
`1'%!2%J!hC&J!!!!J0`!!(qMkhL!(!!%ImAcH+L"!*53!-%!4(p(dhKrD0YiN!!
"!%Ji`3"%J6m!!)'*!!K)!h-*J%%!&$KK!$a)!0fGB!!!!)"K!$JiJ!!"5!0)RB"
"!"3iB!!!5!0(3B""!"5!!3"i1#%!F,Y"rqKm#!1Q6S!!)!!!!!#rJIr`I!J#TRa
P'hJlSQF)1m*R$$Z#*K!iK3!"1q)p[*!!!3!)1!!!!*3Krd#3!"d!!$KK!$b3!"i
!!)LP!!")!J,PB!!!!(rMqhJiJ3!i5!-iZ@!!!!"mI`Fe3))!q)"K!$Jli2p!5!0
&2B""!"3S!`!!N!"q!!""JJ$F1'!!!6L!!!#3!'%!G$J!!##3!*d!!*!!B3"iN!!
"!)#3!'%!I%J$2HQ!33!85!0`XB""!"3li!!!5!!!'%J$F,Q!33!8Iq!(0(am!Di
lr`!"Iq!(0#`!!#""J2rNIi2MH$L"!)3iS!!J5!0"(B""!"5!S3!i1)%!G)$q!!!
iB!!!J4d!!$M!!!")!cLKB!!!!(ar"c9!JJ")1!!!!6L!!!#3!!%!5$KK!$b3!)%
!4$L"!&3iS!!)N!!"!%b3!!%!8%J$3-Q!33!8J(i!!$L"!%3iSQ9d5!+X"@!!!!"
mI`FdIq2lH)!"!-Ji)3$!I!J$TVZ"rr"1J!!J!!!!!!!!!!"m#!+QI)BMH*!!!3!
)I'8EH$MLC`b8)Ir!1)*PG)"R!!"mTbYi5!+[M@!!!!"mB`FdJ!%!5$JK!%"m#!1
Q6S!!),r"rrKm#!+Q1q*R$$[#C`L3!!%!#*3Krm#!I`!!+!-!!%'#!#JiJQ9d5!+
Zb@!!!!#!I`!!5!-kR@!!!!#!I`!!5!0$iB""!"5!IJ!!+!-!!%'#!!a)!d20J%%
!&$J!!!#3!"m!!*!!(J!!J!%!5$JK!%"m#!1QZm(rq%k!!#!!!!!![Q(rc(`)!UC
mFaYj1f*@&$Z#9V3lSPpXI*3MH$[#@V`liP'dN!!"!!L8)Ik!3B)!)#`6!!%k`!!
"3B)!'$KL9Z8i!!!"Q!-!!%J!!!Jk`!!#J(m!!%J$3!@!33!8J(m!!$X!!!#$)`!
!5!!!3)Kj!h0@`!BqI!-!3%##!#Ji!2rrN!!C!fSiB2rq1!!!!*!!H30ZQ"N"@CJ
C!9kB'3&JQ"N"B6Xj""Bl'!!"U"`!!(m$"c4m!`!!3B$rZ#`!!!&!J3$81'*9k$X
!!!#!B`!!Jd-!!%J!!+`iHJ$51)!!!%J$2Vf!33!89'!'2d'#!)b!I`!!1U!!!6V
J!!'!B`!!1b-%&NJ!!$b)H30c9X!'2R`$!%""JJ!NL*N"9cKk!0*)!cjpJ%%!&&4
J"Mp"JJ!-1U!!!%J!!"`l133@1[F!!DJF!!"qi`FdI!-!!%'!rla@S!Br3B)!*$K
k!0)iJ!!!5!0$(B""!"3i!2rrN!!D!*)i!2rqN!!D!*Bl@J%11aJ!!6KL9Har"!F
dJ!-!!(`%!!""J2p)J(m!!%J$3Tf!33!81'!$mdJ$E(Q!33!8J(X!!%J$E9f!33!
8J(d!!$L!!!0)!dQ9J%%!&)"p!!!iS3"!1)!!!dJ"$T&J!!!!J(d!!%J$1K@!33!
81!!!!*!!!3!i1)%!3$LL&)3i`!!"11!!!$N!!r-j)!!"18!$m8J$8RQ!33!81)*
A3*!!H`!!L)3!L%J$51f!33!8J*m!!$LJ!!!iBLB`1-!!!)#%!!")!dBaJ%%!&&4
J"Mjm!!!d9!2H2N[p2j9J!!!!9'!'2d'#!$3iB3"!1)"!!$LJ3!")!caCJ%%!&)"
l!!!iJ3"!5!0XHB""!"5!H`!!5!0R4B""!"3iB!!!1)!!!8[p*(eJ!!!!+"3!!%'
#!@5!&!0dJc3$H#`!!!""JJ#F+"N!!%'#!*4r)mYi5!-pQB""!"3l!!!!5!!!F(m
!"c5#Z3!!(!!#3(ke!K5)&3)J+!!!!%'#!&!iG3)J1)%!5$LJ!$p)!cc4J%%!&$K
LB!Z)!`!!+!!!!%'#!%!iB3")5rrk[6L#B""mB!FeX'3!!%##!#JiBQ!-1!!!!CJ
$!!")!!!B1aJ!!B!8!h4r!`FdI!-!!%'!riJX%`!!3))!Y)!8!h3X!!!!3B)!E#J
C!!""JJ"N('!#)%J$4#@!33!8+!-!!*!!IJ(B3B)!6)!8!h3l!!!!N!!H!G5#Z3!
!JQ-!!%J!!#4qSkYiIQ5EH$LJ!L")!c`PJ%%!&$Ue!N!kF`)J1aJ!!B!8!h4r!`F
dI!-!!%'!rp3kIJ(FIQ5EH$Kd!i3iS!!)5!-lmB""!"5!%`!!,!!!!%'#!"`iIJ(
JJ"i"i#J!!!""JJ!-5!02PB""!"5!!3')1#%"J,TKrmam#!1Q6S!!)!!!!!!!!!!
!1)*4Y$MJ!!!j)!!!J)3!!$N!!!#!a!!!5!!!I$L#Ark)"!!!+!!!!%'#!$#!TJ&
5+!8!!%'#!&Kp*!FdI'!(0(`%!!"!JJ!-I+FVH%J!!&`j+3!"5!!!1)J'!9NS!!!
!3B)!,)#Q!9)S"3!!3B)!)(dN"c4mB!FdI!3!!%##!!amTbYi5!!!*$NT!!%iaJ3
@13J!!6L#9V4p"3FdU!3!!(`&!!""J2piI1-lH%k!!##rBIrXI!J#TM[#8F4mHaY
i1q*R+$ZJ!!!lJ!!!N!!"!!L8)Iq`5!-hAB""!"5!(J!!N!"r!!!S!!!!3B)!H(`
$!hK)!cY*J%%!&)"q!!!i`!!!J+-!!%J!!%5!K3!%+!3!!%'#!$"rB!FdI"`!!%#
#!##S"3!#I*dMH)#I!!!F!!!mI!3#&*!!(`!!5!!!)$ZF!!%iT3!@1-B!!6L#8EL
S"!!+I!B!!%'!rl4)!ckjJ%%!&(qMkhL!!3"B1#%!8(`)!kDlBIrX6S!!)!!!!!!
!!!!!Nq(rr(`)!UCmIaYiN!!"!!L8)Ir!5!0(aB""!"3iI`!%5!0(ZB""!"5!!3"
)1#%!3)2Krram#!1Q6S!!)!!!!!#r`IriI!J#TML#9Z'3!!%!#*3Krl#)"!!!+!!
!!%'#!-5!J`!!1q!!!B!$!!3iB3"!N!#"!%#3!!%!4%[rriP)!dGeJ%%!&(aq'hK
)!!#)Im2cH$L!!!p)!dGeJ%%!&&4J"Mp"JJ"JIm2cH$L!!!e)!dGGJ%%!&&4J"Mp
"JJ")J(i!!$L"!%!iS3!i1'-!)NJ$1$f!33!8U'%!1UJ"!$jm!`!!3B)!))"q!!#
!B`!@J'-!!+J$!#!X!!!%3)!!#$[J!!"r`r0i5!0((B""!"4mIKYi+"i!!%##rhK
rirYi5!!!#$KJ!!#!!3"B1#%!8,["rrKm#!1Q6S!!)!!!!!!!!!!![m(rq(`)!UB
mS("cI(iEH$KPEL#3!!%!#$[JJ!%iS!!)P#(rS,#"!(ii`3")1)*DY%J$2-'!33!
8I'!(08##!0!mB%e@Im6cH$KMDA-iS3")13%!3$M!rrmii!!!5!0([B""!"4mB!F
e3))!Q$aJFfJiBfpb1)%!IMM"!$JiS!!#5!-mFB""!"4mB!Fe3))!D$b!,5diB3"
!1)3Y,6LK!$K)!dH4J%%!&(aJ"c9!JJ!m2"kjPbJ!EQP!JJ!-1"m#!(`I"c3iB3"
!Iq8(0$L!!!!i`!!"11$rrcN!!!!j)!!!5!0(DB""!"3iB3!i5!0(GB""!"3iB3"
!5!0(DB""!"3iB3")5!0(AB""!"5!!3"S1#%!B,["rrKm#!1Q6S!!),fKrl4m#!+
QI'mEH6M#CrL!BK(!J+)4[(b3!#0i1F*RhMY#CbijSQFQ1f*R,)1#$DJk)QFi1k*
R2$[#Cd!liPEKN!!"!!L8)Im!J3B!!+$Q!!5!``!!S)-!")"P!!#J"3!%N3%!6,$
K!&#3!-%!4,#"!%L3!'%!2,!"!%""JJT!1'%!1%J$0''!33!8IH0lH%J$0,@!33!
8IH0lH(i%JhJiS3"d5!%(`@!!!!!iB3"d5rrp0BJI!!"mF"Yi+!!!!%'#!"`iB3"
X5!-m4B""!"3iB3"N5!0&#B""!"5![J!!1'%!A)!H!!3iJ!!"N!#K!&`iS!!"N!!
"!'")!cb0J%%!&)"K!&bS(3!!N!"K!&5!J3"JI!-(0+LK!&D3!)%!@(bJ"c4m!`!
!3)!!#,#p!!#SJ3"DU(d!!(b!"c4m!`!!3)%!#,#G!!!iJQFd2'!"5$J$VK5!K!!
!I!3!3%#"!"L!%3!!1'!!C(jN'jCqJ"Z@5!!!$(b6)hL#N3!!I"5B3%#"!!KqG*Y
i+"-!!%'#!$JmB!&)1!1Z&(`%!%"!J3!B1!!!C(`6!jCm&!1@I"8(0%J!!"JF&!"
NI!#EPR`9"c4)!!!)1U!!C+M"!&jqT3FdU)%!BMKJ!'4@!!BrI)BJ8(b&)GCmC"[
@I'BD&,"K!'+S!3"LX!%!9N'#"Q")!cZPJ%%!&+M"!(BmS%-`U)%!HMJ6rrq!iK'
iI-BJ8)##%E3ia[rmN!#K!*aXaS!!b'F!!*!!`3#JI()EH-K%!!!k!!!!b!%!R*!
!!3#Br+!B+-J#&3#3!+%!P-JK!*6m"3!SNS%!N!$m)4!SN!#K!)cmK3JNb#%!M*!
!S3"mr#%3+2`N!(,m)!JHf#%!K))K!)Kq)!FdE!#!!*!!!3#!b#%!I2`K'#Mm!3"
!3)%!(-J#&2Jk!!!"r!8!+2`!!"lB!3"mJL%!J(j$NhK)!d-jJ%%!&$KK!(4)!d0
&J%%!&$Km!#4)!d04J%%!&+L"!(LSB3"f1!6rrR`%"c4)!d#aJ%%!&+KK!(DSJ3"
d5!0$3B""!"5SB3"kU)%!G$J$rrjm!`Fd5!0$+B""!"4rJq0i5!0$"B""!"5SJ3"
kU'%!G$L%rrmi!`!"I)-(0(`%"c4)!d"GJ%%!&+L"!(USB3"i1)6rrcJ$rrpmJ`F
dI!3(0%J$3Yf!33!8U)%!GUKK!(JiK!!"1!2rrhb$"c4m"!Fd5!0#[B""!"3iB3"
d1)!!!6LJ!!&)!cRaJ%%!&#J8!!""JJ0i1(`!-%J$3Rf!33!8U)%!GUKK!(3iK!!
#1!-!!Ab$"c4m"!Fd5!-reB""!"3iB2rr1)!!!%J$3Rf!33!81'!!!$L!!!P)!d*
YJ%%!&$KJ!!%iJ2rr5!0#GB""!"3iB!!!1)!!!%J$3Nf!33!81'!!!6L!rrp)!d*
9J%%!&(iMLhJiJ!!!5!0#,B""!"3iB!!"1)$rqNJ$3M@!33!8IMN(0$JC!!&qi!$
3IZ-(0$L!!!")!d)"J%%!&$XF!$ar!m0i5!0"`B""!"3iB!!!1)$rrdJ$3IQ!33!
81YN!!Rl$"c3iJ!!!5!0"cB""!"3iI!"#5!0"NB""!"3iB!!#1)!!!%J$3FQ!33!
89J!'2d##!"JiB!!!1)!!#8J$3CQ!33!85!!!&$KJ!!!iJ!!*5!0"RB""!"4r!m0
i5!0"5B""!"3iB2rp1)$rq8J$3B'!33!81'!!!$L!!!C)!d&CJ%%!&(lM"c3iJ!!
!5!0"5B""!"3iB2rr1)!!!8J$39'!33!81'!!!$L!!!")!d%TJ%%!&$Km!"j)!d$
YJ%%!&$KJ!!!iJ2rq5!0"*B""!"3iB!!!1)!!!%J$32f!33!81'!!!6L!rrp)!d%
&J%%!&(iMLhJiJ!!!5!0!hB""!"3iB!!!1)$rr%J$31@!33!8I[N!d(lM"c3iJ!!
!5!0!ZB""!"3iB2rr1)$rrdJ$3-'!33!81'!!!$L!!!")!d#CJ%%!&$Km!"*)!d"
GJ%%!&$KJ!!!iJ!!"5!0!PB""!"3iB!!!1)!!!%J$3'f!33!81'!!!6L!!!&)!d"
eJ%%!&(iMLhJiJ!!!5!0!6B""!"3iB!!!1)!!!NJ$3$f!33!8IZ-(0$L!!!")!d!
YJ%%!&$KJrrmiJ!!"5!0!0B""!"3iB!!!1)!!!%J$3!f!33!81(`!"NJ$2p'!33!
81'!!!$L!rrp)!d!*J%%!&$KJ!!!iJ2rq5!-riB""!"3iB!!"1)!!!8J$2qQ!33!
81"Rrrh`$"c3iJ!!!5!-r[B""!"3iI!")5!-rJB""!"3iB!!$1)$rr8J$2lQ!33!
81'!!!$L!!!K)!cq4J%%!&(`@!0"m!`Fd1)!!!%J$2hf!33!81'!!)8J$2k'!33!
89J!'2d##!#Ji'3!$I!-(0$L!!!")!cpYJ%%!&$KJ!!!iJ2rh5!-r4B""!"4@!!B
r3))"((`8Q%"!J!%8+"3!!%'#!"LSB3"f1"%!#(`$!K5`!3"f5!!!%+KK!(Bi!`!
"X!%!GMKm!#T)!cl4J%%!&+L"!(LSB3"f1!6rrR`%"c4)!c`aJ%%!&$KJ!!!iJ2r
h5!-qfB""!"5SJ3"kU'%!G$L%rrii!`!"I)-(0(`%"c4)!ckKJ%%!&$Km!!a)!cj
pJ%%!&$KJ!!!iJ!!"5!-qYB""!"3iB!!!1)!!#%J$2Sf!33!8U)%!GUKK!(JiK!!
"1!2rrRb$"c4m"!Fd5!-q9B""!"3iI!!B5!-e-B""!"5SJ3"f1'%!G+M"!(5SS3"
i113!!DL"!(SiaJ!#1+ArrMJ%rrk`i3"fX-%!G,#K!(L`!3"k5!-eRB""!"4q3j0
i5!-qBB""!"4q3j0i5!-eYB""!"4)!!#iL"m!!#J!!!""JJ!J1'%!4%J$2F'!33!
81'%!6%J$0,@!33!85!!!%$KL@6")!cieJ%%!&$KK!&4)!cj"J%%!&)JI!!!S!!!
!3B)!)$KK!$a)!cf"J%%!&$KK!'a)!c4eJ%%!&%J!!"!iBPNS5!-ppB""!"5U(3!
!5!!!',)"!')iB3"F5!-ppB""!"3k%!!%U)%!9Ri$"c4mJ!FdI!-!!%'!rpb`J3"
L1'%!A%J$2Ff!33!8L"m!!#J!!!""JJ!81'%!6%J$23f!33!85!!!%$KL@5K)!cf
0J%%!&+J"!&Cr`r0iX"d!!%J$00Q!33!8U,X!!(kJ"c4m!#J!3)%!e$KL8ELS!`!
%,!!!!N'#!-4!J!!3,!!!!8#!!"4)!!#d,!!!"%#!!+a)!!"NU!d!!#`!!!""JJ#
F5!-UbB""!"3iJQFSJ!3!!(`$!%""J!#%U!d!!$L!!'5SHJ!!I)3$eULl!!!i!`!
"X"S!!(`&)K5`'`!!U(S!!%[rm`NiJ!!"5!!6`@!!!!")!!")1'*R*+KM!!"mB!F
e3B)!1(aJ"c5SHJ!!1)!!C(b%!pBi!`!"X"S!!(`&)K5`'`!!U(S!!%[rmK%iJ!!
"5!!6H@!!!!#)(`!!+!!!!%'#!"`iB3"X5!-bmB""!"3iB3"N5!-ljB""!"3iBPp
TL!-!!#J!!!"!JJ!J1'*DV$L!!!8iB`!#5!-Y1B""!"48B!Br3B)!++KZ!!"qS!F
dI!-!!%'#!"JmB&"bIU5VH$KMEfG,rr49XUi!!(hMHhK)!cS*J%%!&$L!!!")!cS
9J%%!&)"K!$K)!bc4J%%!&)!"!3Ji)3%!ZD(rY(`)!kC1J!!J!!!!!,iKrm4m#!+
Q11*Rm(ae'hQ!SK'XJ-)4U$XLCd`l3QG31f*R9$Z#@5L$SJfS1m*@iC!!!3!)P#(
r%)&(!!#K*`!%J38!!+$P!!5!TJ!!S!B!"*&"!%ba)3"3N3%!4,$K!%L3!+%!2,!
"!%""JJMS1+%!G%J!r5&J!!!!1'%!G%[rmT9mIaYi1'%!1%J$+BQ!33!8IU1VH%J
$+Gf!33!8L"i!!#J!!!""JJ!F1'%!E%J$-Bf!33!81'%!C%J$1P'!33!8J,X!!$K
K!&b!'`!%1)!!!C!!S3"F1+!!!C!!!3"J5!-aeB""!"5!B3"FU"S!!*!!B3"8J)%
!B(`$"c5SS3"@N!#"!&KmS!FdI!-!!%#!!!L`ZJ!!U)%!@UKk!!"mJ!FdI!-!!%#
"!!L`QJ!!1)*R5$aJ!8Ji!ki8J)3!!(`%!%"!J3!BJ"N!!$KJ!'4r""Z@Ib!EPNJ
!!!amQ#0iJcN!!(`C`%"!J3!)IaR$H#JB!!#SS3"H3B)!&"`C!'4m!-1@I!3(0%J
!!!JiJ!"NU'%!BRb%"c4Ai!BrI'8B8(b%'GBiB!"NI'3EeRaP'K5`B3"LU!%!BV!
"!&C"JJCJ5!-a%B""!"5S`3"f2+"$-+L"!(Si'2rrJ1)4Z(c')&#!JK'd1-Err*!
!S3#FE-D!!-KR!!#3!-%!S(ar'hM)4!!!1X!!!-J"!*b3!!%!Q2bJ'#M)!K8!N!#
K!*6))3#8r!8!+*-K!*!!r#%3+*!!S3#-r)8)*-JK!)b3!+%!I2`K%#Mm*!"br#!
)(YJK!)5#i3#)IZ!(0'`!J!#3!!%!J-JK!(cm)4JSr!%!3%#"!"c)!K6i1X!!!I`
&!#Mm!!!Hf!%!I),K!)"rirYi5!-iTB""!"3iB3"d5!-iXB""!"3iI3!N5!-i[B"
"!"5SJ3"iU'%!GMJ%rrjm"!Fd5!-f(B""!"5SB3"fU)%!G%J$1+f!33!8U'%!HUL
"!(3i!rrqI!-(0%J$1*@!33!8Ik2VH%J$1('!33!8U)%!HUKK!(3iK2rr1!-!!Ab
$"c4m"!Fd5!-ebB""!"5SJ3"kU'%!H$L%rrmi!rrrI)-(0(`%"c4)!cK*J%%!&+L
"!(DSB3"i1)3!!6J$rrpmJ`FdI!3(0%J$1#Q!33!81'%!G$L!!!%iS!!"5!-[AB"
"!"3S'3!!3B)$H$Kp!$")!cITJ%%!&+L"!(DSB3"d1)3!!MJ$!!&mJ`FdI!3(0%J
$08'!33!81'$rrcL!!!")!cITJ%%!&$KJ!!!iJ!!*5!-hfB""!"3iB!!"1)$rrdJ
$0q'!33!81'!!!$L!!!")!cHjJ%%!&$KJ!!%iJ2rr5!-h`B""!"4qilYi1)!!!%J
$0jQ!33!81'!!!6L!rrT)!cHKJ%%!&(ld"c3i&!!"IN!!d(j$"c3iJ!!!5!-hEB"
"!"3kI3!mIQ1EH%J$0bf!33!81'!!!$L!rrp)!cGPJ%%!&$Sd!!*q)`Fd1)!!!%J
$0cQ!33!81(d!3NJ$0[f!33!81'!!!ML!!!")!cFeJ%%!&&E!"Mp!JJ!B1'!!!$L
!!!P)!cF&J%%!&%J!!"3iB!!!1)!!#8J$0`Q!33!8IQ1EH%J$0V@!33!81'$rr6L
!rrP)!cEYJ%%!&$KJ!!!iJ!!'5!-faB""!"4q3`Fd1)!!!%J$0V@!33!81'$rrcL
!!!&)!cDpJ%%!&$KJ!!!iJ!!!5!-fPB""!"3iI3!H5!-f@B""!"3iB!!!1)$rrNJ
$0T'!33!81'!!!$L!!!")!cCTJ%%!&$KJ!!%iJ2rr5!-fFB""!"4qilYi1)!!!%J
$0NQ!33!81'!!!$L!rra)!cC4J%%!&(j8!0"q3`Fd1)!!!%J$0L@!33!81'$rrcL
!rrp)!cBYJ%%!&$KJ!!!iJ!!!5!-f"B""!"3iI3!55!-ebB""!"3iB!!!1)!!!8J
$0J'!33!81'!!!$L!!!")!cACJ%%!&$KJ!!%iJ!!"5!-eiB""!"4qilYi1)!!!%J
$0EQ!33!81'!!!$L!!!*)!c@TJ%%!&(j$"c3iJ!!!5!-eQB""!"3iB2rr1)!!!8J
$0D'!33!81'!!!$L!!!")!c9jJ%%!&$Kp!!C)!c8pJ%%!&$KJ!!!iJ2rr5!-eGB"
"!"3iB!!!1)$rrNJ$08f!33!81'!!!6L!!!&)!c99J%%!&$J8rrpm!`Fd1)!!!%J
$05Q!33!81(d!5%J$01f!33!81'!!!cL!rre)!c8PJ%%!&$KJ!!!iJ!!)5!-drB"
"!"4m%3$3I!-(0$L!!!")!c6TJ%%!&$KJ!#&)!c80J%%!&&E!"Mp!JJ!S1"3!!h`
$"c3iJ!!!5!-dfB""!"3iB!!!1)$rpdJ$0,'!33!89X!'2d##!4am'F"!3)!"&#J
C!!""JJ!BU'%!GMJA!!Km!`)8X!%!GNJ!!"#SB3"f1!-!!E!"!(BiI3!U5!-d2B"
"!"5SJ3"iU'%!GMJ%rrjm"!Fd5!-aRB""!"3iB!!!1)$rpdJ$0%@!33!8U)%!HUK
K!(3iK2rq1!-!!Ab$"c4m"!Fd5!-d$B""!"3iI3!-5!-ckB""!"3iB!!!1)!!!8J
$0#'!33!81'!!!$L!!!K)!c2jJ%%!&+L"!(DSB3"i1)3!!6J$rrjmJ`FdI!3(0%J
$-m'!33!81(d!'%J$+Tf!33!8U)%!GMKK!(5S`3"dU+%!H$MN!!'SJ3"k1-B!!ML
Prrii"2rqX1%!GV$"!(5`S3"iX!%!HNJ$+`Q!33!8Iq2lH%J$-mf!33!8Iq2lH%J
$+b'!33!85!!![)JH!!!S!!!!3B)!)$KK!%4)!c-YJ%%!&$KK!%a)!bSKJ%%!&%J
!!"!iBPN`5!-cSB""!"3iB3"85!-cVB""!"5)(J!!+!!!!%'#!#!iB3!m5!-blB"
"!"3iB3"X5!-TiB""!"4)!!!3Ii2MH%J$-f'!33!81'*R2+SM!!")!!!BXL%!BMK
K!&a)!c0GJ%%!&$Sa!!5SJ3"@IL-(0(b!"c4m!`!!3B$rh,#"!')iB3"F5!-c0B"
"!"5)(J!!+!!!!%'#!"3iB3"-5!-bGB""!"4)!!!3Ii2MH%J$-[@!33!8U!%!9Rp
MfhL`'J!!5!-U3B""!"5)(J!!+!!!!%'#!"`iB3"X5!-T1B""!"3iB3"N5!-b,B"
"!"4qSkYi5!-`SB""!"3iJ!!!5!-`VB""!"5!B3!i5!-MDB""!"5!!3$i1#%!m,S
Krm4m#!1Q6S!!)!!!!!!!!!!!!!!!!,pKrqam#!+Q11*Rk(ap'hQ!SK'JJ-)4R(b
E)hL$`JfS1q*@iC!!!3!)P#(rF)&(!!#K*`!%J38!!+$P!!5!TJ!!S!B!"*&"!%b
a)3"3N3%!4,$K!%L3!+%!2,!"!%""JJ)m1+%!C%J!mleJ!!!!1'%!C%[rk6&mI"Y
i1'%!1%J$)#@!33!8Ik2VH%J$)(Q!33!8L"m!!#J!!!""JJ!F1'%!A%J$+#Q!33!
81'%!9%J$-1f!33!8Ik2VH(pNfhJiS3"N5!$cB@!!!!!iB3"N1)!!!6LJ!!&)!bK
YJ%%!&&H!"Mp"JJ$mU)%!CMKq!#Si"!!"X!%!CNJ$-1f!33!8U)%!D+KK!'Bi"2r
qI!3(0%J$,Nf!33!81'!!!$L!rrG)!c$eJ%%!&+L"!'USB3"N1)6rrMJ$!!&mJ`F
dI!3(0%J$-,f!33!81(i!$%J$-*Q!33!81'!!!$L!!!&)!c$4J%%!&$KJ!!!iJ!!
)5!-`UB""!"5SJ3"QU'%!D$L%!!%i!rrqI)-(0(`%"c4)!c"aJ%%!&$Kq!"K)!bG
0J%%!&+L"!'BiB3"NU-%!C+LK!'Jij!!"U)%!DMM'!!)iTIrq1!6rrV$K!'D``3"
NX+%!D,!"!'T)!bHjJ%%!&%J!!%5)(`!!+!!!!%'#!#!iB3!m5!-[pB""!"3iB3"
F5!-QkB""!"4)!!!31'*C-%J$-'Q!33!81'%!C%J$-(@!33!8L"m!!#J!!!""JJ!
81'%!6%J$,l@!33!85!!!%$KL@5K)!c!eJ%%!&$KLCe4)!bH*J%%!&)JI!!!S!!!
!3B)!($KK!&a)!bD"J%%!&$KK!&4)!bpeJ%%!&(qMkhK)!bhTJ%%!&$L!!!")!bh
eJ%%!&)"K!$K)!b#aJ%%!&)!"!*Ji)3#3!,YKrqam#!1Q6S!!)!!!!!"m#!+Q1)*
@e*!!!3!)P#(r`+J%!!!S!!!Q3B%"#$L#+a48!"!kI)3!,Rb*!kC1J!3J1))Q3%J
!q"eJ!!!!5!!!m$L#*T!!5!$i$@!!!!")!!$J1))Qk%J!preJ!!!!5!!!d$L#*ca
)!2IYB!!!!%J!!-!iJLH85!$hh@!!!!")!!#`1))Rh%J!pmeJ!!!!5!!!S$L#+#a
)!2HpB!!!!%J!!*!!1))SH%J!pkeJ!!!!5!!!J$L#+-a)!2HGB!!!!%J!!(!iJLN
F5!$hM@!!!!")!!"J1))TH%J!pheJ!!!!5!!!8$L#+EK)!2GYB!!!!%J!!%!iJLR
d5!$hA@!!!!")!!!`1))U3%J!pdeJ!!!!5!!!)$L#+Ra)!2FpB!!!!%J!!"!iJLV
)5!$h,@!!!!#!!3")1#%!3(`)!kC1J!!J!!!!!(`)!UD3!!%!#*3KrX#3!'%"@$K
K!$L3!)%"A%[rrUNiB!!"5!-N@B""!"3iB!!!5!-NCB""!"3iB!!*5!-NFB""!"5
)J3!i1'%!16LK!9Ji`!!"5!-NZB""!"5!!3&)1#%"3(`)!kC1J!!J!!!!!!!!!!#
6iIrmI!J#TRbI)hL3!!%!#*3Krl")!aXpJ%%!&$L"!$K)!aY*J%%!&+MK!$USB3!
qU,m!!(aR'&#S(`!%I'B1F+LI!!*mT3"3U(m!"UJ"!$amT3FdI'3B8(b'!C4mCJF
dI'8!8(b()K4m`$0i1'2rqhb&"c5`I`!!I!!1F(b!!C4mSbYiI!3B8,!I!!*m!b)
8U'%!2$KMrrZ`I`!%X"m!"S!"!&Ji)3"3I!J$TS2Krra1J!!J!!!!!!!!!!!!!!!
![f(rl(`)!UCmIaYiI,dVH(cE-hKmJb0iN!!"!!L8)Iq!5!-V)B""!"3iJQIJI(i
EH)#L%9!iB3"3J13!!+$%!!5!K3!!S!8!"*!!i3"!X-%!4*!!J3!iX!%!2%J$,#'
!33!81'%!5%J$)d@!33!8J(m!I$ZI!"KrT1YiJk-!!(pPfhJiB3"BJ"d!'*!!(`!
BJ"d!%*!!(`"#J0m!(S!I!#+3!-%!B*!!!3"NN!$"!&L3!!%!A%J$(,@!33!81'%
!3%J$,!Q!33!81'%!1%J$)[f!33!8J"d!($Zr!%Tr`r0iN!!I!%T)!dG&J%%!&)2
m!#ii!!!!Jhd!,Rr$mhL3!"`!,T!!(3!Z5!-l9B""!"3i`3"JI'8EH(q$ihKrT1Y
iI-FcH$N"!&K)!dFGJ%%!&*2m!#jr`r0iNhd!,NJ$4b'!33!81'%!8%J$+i@!33!
81'%!5%J$)RQ!33!8J!%!L$JK!)#lBIrXI!J$TNk!!#!!!!!!!!!!!!!!!!#rSIr
dI!J#TM[#D!"mI4YiN!!"!!L8)Iq`5!-C#B""!"4)!c-TJ%%!&&4J"Mp"JJ"SIk2
VH%J$'Mf!33!8J(i!!%J#*ePJ!!!!I(m(0)"q!!")!LFaB!!!!(aQ"c4rjrYi1'%
!1$L!!!!iS!!!5!-LlB""!"4rSqYi1)%!1%[rr9@!IJ!!Ik6VH+LK!$US`3!i5rr
q!B!"!&Ji)3"3Zk(rp(`)!kC1J!!J!!!!!!!!!!#r`IriI!J#TM[LChamIKYiN!!
"!!L8)Iq`1+%!1$M"!$`ii3"!5!-B(B""!"3iB!!!5!-JqB""!"3iB!!!5!-K"B"
"!"3iB!!-5!-K%B""!"4rirYi5!-[GB""!"5S!3"'U)%!3(`$!&"m!`Fd1!3!$(`
%"c4)!bHPJ%%!&$KK!%")!b(*J%%!&(rMqhK)!bHPJ%%!&(r$mhK)!bL*J%%!&$L
!!!")!bL9J%%!&)!"!&Ji)3"3Zm(rq(`)!kC1J!!J[m(rq(`)!UCmIKYjI*mMH*!
!!3!)P#(rX%'#!-3iS3!i1-%!2$MK!%")!aGCJ%%!&$KJ!!")!b!eJ%%!&$KJ!!"
)!b""J%%!&$KJ!!a)!b"0J%%!&+L"!%+SB3"!1)3!!6J$!!amJ`FdI!3(0%J$*Zf
!33!81'%!3%J$)4'!33!8Iq!(0#`!!!4"JJ!m3)!!%#`!!!0!J!!85!!!,#`!!!C
!J!!N5!!!&$KLCea)!bE&J%%!&%J!!"!iBQHF5!-QYB""!"4r`r0i5!-RQB""!"3
iJ!!!5!-RTB""!"5!!3"B1#%!8,["rrKm#!1Q6S!!)*2Krram#!+Q1q*R)*!!!3!
)P#(rX)!I!!!S!!!!3B)!+$LK!$Ji`3!m11%!3%J$&Q@!33!8J(m!!$L"!%")!bP
eJ%%!&)!"!&Ji)3"3Jq(rr(`)!kC1J!!J!!!!!!!!!!#r`IriI!J#TRbH)hJiSPU
XI(mEH$KP!!+3!!%!#$L!!!18)IqJ5!-CjB""!"48B!Br3B)!R#JI!!""JJ#81'*
R)&I!"Mq6i`!!3B)!K$KLCa#!!`!!+!!!!%'#!""m(`0i1m!!!8J!!"!iBQF81m!
!#B2M!!!iB3"!5!-@fB""!"4rirYi5!-A,B""!"4rirYiIm6cH$LK!$Ji`3!m11%
!4%J$&C'!33!81'%!4%J$(if!33!8Iq2lH(r%mhK,rrlPJ'%!3%J$'5f!33!8J!%
!D$JK!'#l`IriI!J$TNk!!##r`IriI!J#TM[LCa4mIKYi1)!!#T!!!3!)P#(rX)"
r!!!iS3!i1-%!2$MK!%")!a8PJ%%!&&I!"Mp"JJ!`J(m!!$MK!%#SS3!i1)!!#S$
#&-a)!aFTJ%%!&)"r!!!iJ!!+5rreF8J!!#b!I`!!11%!3+LK!$JiJ!!+J-)8b%J
$&[f!33!8J(m!!$L!!!T,rq[9J!%!@$JK!&#l`IriI!J$TNk!!#!!!!!!!!!!!!!
!!!#r)IrNI!J#TMZLCa4mH4YiI*SMH$[#Ce4mZbYi1q*R3(cF-hKr*-YiN!!"!!L
8)Iq3!)"p!!!iS3!i1-%!2$MK!%")!a4KJ%%!&+J"!%CrCGYi1'%!3(`!dK5`!3"
'1)!!!%J$&d'!33!8J(d!!(mNbhLSS3!iIiEMH$MK!%")!aC0J%%!&(mJ"c3X!!!
'3))!,)#K!%"rirYiJ!%!4$L!!!'3!,m!!$LJ!!'3!"m!"%J$(E@!33!85!!!-#`
!!!T!JJ!SJ+%!3(r$mhL!!3"%1)!!!C!![J!!1+!!!C!!(J!%5!-GKB""!"5!!3"
i1#%!F,XKrq4m#!1Q6S!!)!!!!!!!!!!![d(rk(`)!UBliQF8I(SEH(bE)hJl`QF
FI,`VH(cG-hKr400iN!!"!!L8)IqJJ(m!!$LK!$Ji`3!m11%!3%J$%f@!33!8Id!
(0#`!!!%iB3"!3))!$(pNfhK)!!!8If!(0(`!$R"m!!'8I!3(0(q&ihK)!aBaJ%%
!&#JG!!""JJ!)Nk%!2)"r!!"r400iU+%!1$MK!%#!`3!m5!-9-B""!"4r3!Fd,!!
!!8##!%L!B3!mU)%!3ULK!%")!aB"J%%!&)!"!$`iJ!!"1'*A3*!!(J!!1'-!MNJ
$&U@!33!89'!'2d'#!"#!IJ!!5!0!`B""!"5!!3"S1#%!B,Y"rqKm#!1Q6S!!)!!
!!!!!!!!!!!!!!,qKrr4m#!+Q2'"KF$[#Ca3liQF31'0`FT!!!3!)P#(rN!!iJ3!
i5!-4IB""!"4mB!Fe1k!!!%##!"5!!3!i,!!!!%#"!!JlS!!"1'%!5%J$%f@!33!
8J(i!!%J$%lQ!33!81!!!!*!!!3"%1'%!4%J$)pf!33!8J(m!!%J$%jQ!33!8J(m
!!%J$%Mf!33!81)%!6%J$%NQ!33!8U)%!8$KK!$bS!3"5X)%!2,!"!$j)!b1GJ%%
!&$J!!!#3!!%!3$KK!%")!b1*J%%!&+L"!%4AS!BrU'%!2(`%'&"m!!j`I'!"P$J
$!!jm"3Fd3B)!$$J&!!*m"3FdU'%!3+J"!%4mK4K3J(m!!(`!+K5`J3"!X!%!4%J
$%E'!33!8U)%!3MM!!!#SS3"!5!-60B""!"5!IJ!!5!-4NB""!"5SJ3"'1-!!!DL
K!%4)!a-9J%%!&)"K!%K)!a8"J%%!&)!"!(Ji)3"`Zk(rp(`)!kC1J!!J!!!!!,q
Krr4m#!+Q1m*@j6L!!qJiS!!lN!!"!!L8)Ik`1'%!2%J$%d'!33!81'%!2$L"!$K
)!b8"J%%!&$aJ4dNiBdC'1)!!J%J!XNeJ!!!!I(mEH%J$&hQ!33!8I(dEH$KJ!!!
iJ!!!5!$[V@!!!!!X(3!!3B)!&)"r!!"rT1Yi5!$[P@!!!!#!!3!iI'!B8$!$rrp
m!"N3Q"i!!)JH!!!S!!!!3B)!%$KLCa3i!!!!N!!$!!#!!3&B1#%"8,ZKrr4m#!1
Q6S!!)!!!!!!!!!!!!!!!!,iKrm4m#!+Q1i*R&(ae'hL#)Je`JN)45(b@)hJlSQF
3I,FVH$[#@U`kJPpTI0JcH$TLCbil3!!!1q*R,$XJ!!#3!!%!#*3KrQ#!(!!!+!!
!!%##"KL!BK&-5!-4!B""!"53!')8a(j$NhK)!a$aJ%%!&*!!BK6-IL1,H%J$%1'
!33!8N!"L&-K)!a1pJ%%!&$b!4dNiK%C'1+!!J%J#(FPJ!!!!1)*S!*!!C!!!1'*
R'%J$%-@!33!8+"F!!%'#!0JiB!!25!#b-@!!!!"8B!Br3B)!a$KJ"!miJ!!!1+$
rrdJ$%0f!33!8N!"p!!!iB3")J*F!!)!%!!+!T!!'N!!"!%LSJ3"+U!%!5(b%!0#
3!+%!6(`!!0"mK!FdI!8(0%J$%MQ!33!8J(d!!$LK!$Ji`3!m11%!@$L!!!&)!`m
GJ%%!&)"p!!!ii3")U+%!1$L!!!'!`K6%5!-4+B""!"5!I3!!5!-2*B""!"5SJ3"
11-!!!+LK!%a)!a'aJ%%!&)"p!!")!`m&J%%!&%J!jMeJ!!!!5!!!$$J!!!#3!"d
!!$KJ!r!iJ!!!1+$rrdJ$%"@!33!8N!"m!!")!a!KJ%%!&$KLCp`i!2rr+"F!!,!
$!!""JJ$m1'!!$dJ!X5&J!!!!9'!'2d##!1L!I!!!5!-1RB""!"3iJ3"!5!-1UB"
"!"5V)3"'1+%!1)"m!!!i`3!m11%!@$L!!!P)!`j"J%%!&)#A!!!iB3")J!3!!S#
N!!D3!!%!5+L"!%US!3")I)3!d*!!S3"-)!!!"(b%"c4m"3Fd5!-4#B""!"5SJ3"
1Ib!(0(b$"c4m!`!!3)%!$(bE)hK)!!!SI!-!8(`!$R"m!!'8Ic[,H$KK!%Km"!F
d1+!!!%J$%-Q!33!8J(`!!$MK!%LSS3!i1)!!#B$#&-4)!`r9J%%!&+KK!%am'GK
3I"S(0$J$!!Tm'3Fd5!!!))"m!!")!`fjJ%%!&$L"!%")!`h&J%%!&+YK!%BiBQF
J9`!'2j,M!!""JJ!XIL1,H%J$$Q@!33!8N!"L&14mCKYiId66H(mPbhJiB!!+5rr
iS8J!!9#!I!!!1)!!#NJ$(*'!33!8IN16H%J$$Lf!33!8N!"L&1"mCKYiId66H$K
J!!SiS!2S5rriDB"m!!!iS3"B1)!!"8J!iCPJ!!!!J(`!!$LK!&!iJ!!'5!$KK@!
!!!#S`3"B1)!!"UJ"!&!iS!!!J(`!!(`'!&#`!3!iU-%!1$J'rram!!$3I!B(0%J
!i&&J!!!!U-%!1$L!!!@!I!!!1+!!!$J'!!&m"JFd5!$J-@!!!!#S`3!i1)!!")"
m!!!iS!!!1!B!!A`'"c4)!1!4B!!!!)"m!!!iJ!!"1+!!!$M!!!9)!0rjB!!!!(p
!"c9!JJ"JJ(`!!$LK!$Ji`3!m11%!@$L!!!9)!``eJ%%!&)"m!!")!`aCJ%%!&$L
"!%")!`aPJ%%!&+LK!%Bii3"BJ(`!!$L!!!8i"IrlU+%!1,!"!&k!`3!m5!-1(B"
"!"5!BK&%5!--mB""!"53!')8h(aQ'hKr400iIbA,H$KJ!!K,rrFYJ')43%J$$-f
!33!8N!"L&0KmCKYiId66H(mPbhJiB!!'5rrh#B"L%6a)!`bTJ%%!&*!!BK68I'B
EH(mPbhJiB!!$1)!!!%[rpq@!`K68Id66H(mPbhJiB!!&5rrfdAmPbhJiB!!(1)!
!!$M!!!",rrHpIbA,H$KJ!!)iJ!!!1-!!!%[rpkQ!BK%i5!--5B""!"53!')8d(a
Q'hKr*FYi1'!!"$L!!!",rrH&Id66H(mPbhJiB!!"1-!!!%[rph&A!!Br3B)!,)"
m!!")!`XaJ%%!&$JC!'prC0YiI!8(0$M!!!")!`fjJ%%!&%J!!#L!I!!!5!-,#B"
"!"3i'3"JIf6EH(`&"c3i`!!!5!-0NB""!"5!I!!!5!-+jB""!"4)!1)GB!!!!(l
!"c9"JJ"NIX@cH$KK!'!iJ!2b5!--dB""!"5)J3"J9*N'2d'#!%4r)!Fd1'%!B(`
$!+iS!!!k3B)!$$J%rrqB!3"JL)%!B)"m!!!i"2rrQ!%!B%J$#S'!33!81)%!B%J
$)B@!33!8J"d!!#J!!!""JJ"-5rrhSBJ8!!!S!!!!3))!2$Kq!!)iJ!!&5!-0mB"
"!"48B!Br3))!*)"p!!")!`SeJ%%!&%J$$5f!33!8J(d!!%J$$6Q!33!81'*4Z+J
$!!3X!!!#3B)!T%#!!"!X!!!"3)!!&%J!!*3X!!!%3)!!M%J!!%`S&`!!3B)!+$K
LCbDSB`!!I'!(08'#!"KmB!Fd1'!!C(`$!pD`(`!!5!!!$$J!!'q`(`!!1!!!!,!
6!!!iB!!!5rr5M8J!!%!S&`!!3B)!+$KLCb5SB`!!I'!(08'#!"KmB!Fd1'!!C(`
$!pD`(`!!5!!!$$J!!'q`(`!!1!!!!,!6!!",rrJCIU1VH%J!!m&J!!!!L"3!!$L
JrrmiJQFm1'*R8#J!!!#`T!!!X+-!!%##!)#!(!!!+!!!!%'#!(3iIJ!#1)!!"8J
$$-f!33!89'!'2d##!&b!I!!!5!-*%B""!"4)!``*J%%!&)"m!!")!`MpJ%%!&%J
$0Z@!33!8J(`!!%J$#MQ!33!8J(`!!%J$#r@!33!8J(`!!%J$'B'!33!81)!!!%J
$'Bf!33!81)*R-$J!!!!iBQIHN!!%!!#`!`!!J!%"U$JK!D"m#!1QZL(ra%k!!#!
!!!!!Nq(rr(`)!UCmIaYiN!!"!!L8)Ir!J'-!!#J$!!""JJ!85!-,kB""!"3i!!!
!N!!I!!#!!3")1#%!3)2Krram#!1Q6S!!)!!!!!!!!!!!!!!!!,qKrr4m#!+Q1k*
R&$[#Ca!liQJ!N!!"!!L8)Iq`J"d!!#J!!!""JJ#NJ(m!!#J$!!""JJ!85!)@R@!
!!!!i!!!!N!!I!!#!I3!!5!-,3B""!"5!IJ!!+!-!!%'#!!a)!`XYJ%%!&$J!!!#
3!"d!!$KL&153!"i!!%[rrcdiBK6J5rrr06KL&0a,rrmY1')8f%[rrb8iBK685rr
r(6KL&0",rrm91')8c%[rr`diBK6)5rrr"6KL&-4,rrlp1'*R')"M!!")!`X4J%%
!&)!"!&Ji)3"3Zk(rp(`)!kC1J!!J!!!!!(`)!UBX!`!!N!!"!!L8)Ir!3)!!#$K
J!!!iJQGF5!-*$B""!"3iBQF81)!!!i"M!!",rqq"J!%!5$JK!%"m#!1Q6S!!)!!
!!!!!!!!!!!!!!*2Krram#!+Q1q*R&*!!!3!)1+*Rh*3Krm#!(`!!+!!!!%'#!$L
S"3!!I'3(0(`%!!""JJ!SX'8!!(aP'hJiBQGm1)!$mNJ$#0f!33!8J(m!!$L!!!4
,rqj0J!%!5$JK!%#$iIrmI!J$TNk!!#!!!!!![k(rp(`)!UBl`QF8I(dEH$[LCjb
3!!%!#*3Krl#!(J!!+!!!!%'#!'arirYiIk6VH%J!iA&J!!!!9'!'2d##!&5!IJ!
!1+%!1$L!!!9)!0V&B!!!!(rMqhKrT1Yi5!$KP@!!!!#SJ3!kIq2lH+J"!$jmK!"
31!6rqA`%"c4)!0pPB!!!!)"q!!!iJ!!&5rrZCB!"!&Ji)3"3Zk(rp(`)!kC1J!!
J!!!!!!!!!!!!!!!!I!J#TMNLCdL3!!%!#$N!!!!iiQG-1!$rrj3Krm!i`QG31)!
!#MLLCa53!'N!!)"P!!#4"`!!X!B!!%[rh*Q!!3")1#%!3(`)!kC1J!!J!!!!!(`
)!UBj)QFdN!!"!!Jj!!!!11*R1$J!rrq8)Ir!1-*R2$L!!!BiSQF8N!"T!!#!C3!
!N3F!!,!'!!",rp&jJ!%!5$JK!%"m#!1Q6S!!)!!!!!#r`IriI!J#TML#CcJiBQF
d1m*R&*!!!3!)1q*R6*3Krm#!"!!!J'-!!(`!'%"!J!!8N!"N!!!iJ!!'J(i!!%[
rd58iBQG)J"m!!)"M!!"m!"K!3)!!&*!!I`!!1)!!#S"q!!",rp[4J!%!5$JK!%#
l`IriI!J$TNk!!#!!!!!!!!!!!*2Krram#!+Q11*R1$L!!!D3!!%!#$LLCdb8)Ir
!1q*R&)$(!!#!"3!!I-BD&(`!'K53!-F!!)"r!!#3!!8!!%[rd+@!I`!!1)!!#N[
rffQ!!3")1#%!3)2Krram#!1Q6S!!)(`)!UBi`QG-N!!"!!JiJ!!+1+*R&*3Krm#
3!'B!!)"P!!",rpXaJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!,q"rr"m#!+
Q1q*R-$[!!!#3!!%!#*3Krk")!`4jJ%%!&)!I!!"m!"K3+!!!$%#"!@JiBPpTL!-
!!#J!!!""JJ!N2'!!!6KMqVmiJ3"!1+!!2$M!!!")!`XYJ%%!&%J!!$3mB!!"1'2
k[cL"!%")!`00J%%!&&4J"Mp"JJ%32'!!!6KMqVmiJ3"!5!-,%B""!"48B!Br3B)
!p+!"!%!S!!!"3))!k$Z"!%U!B3"+1)%!2%J$&''!33!8I(dEH(qJ"c3X!!!$3B)
!$#`!!!4!JJ#m1'*R&)"M!!")!`0CJ%%!&)!"!$am!"K!3))!S(`$!hK)!a3jJ%%
!&(qJ"c3X!!!$3))!D(q$ihK)!a3jJ%%!&)"m!!!iS3!iJ)%!2%J$&$f!33!8I'!
(0#`!!!T!JJ"F1)*R()"K!$L!"!!!I!-!3%##!%L!R!!!1+$rrdJ$&#@!33!8I'!
(0#`!!!T!JJ!X1m!!!8J!!#3X!!!%3))!()"K!$b!R!!!5!#L1@!!!!")!!"aB!!
!!%J$!`Q!33!8N!"r!!!iBPpUL!-!!#J!!!""JJ!`1)%!3$KJ"!!iS!!!1-!!!%J
$#Ff!33!89'!'2d'#!"!iB3"!5!-6fB""!"4r`r0iJ!%!D$JK!'"m#!1QZi(rm%k
!!#!!!!!!!!!!!,r"rrKm#!+Q1m*R&$[LCa#3!!%!#*3Krl!iB3!i5!-$&B""!"5
!I`!!+!-!!%'#!%")!`0KJ%%!&)"r!!")!`)&J%%!&%J$%Rf!33!8J(m!!%J$"3Q
!33!8J(m!!%J$!H@!33!85!-5GB""!"5!IJ!!5!-$)B""!"5!IJ!!5!-"aB""!"4
)!a)pJ%%!&)"q!!")!`6*J%%!&)"q!!")!`'PJ%%!&%J$%M@!33!8J(i!!%J$%N'
!33!81)!!!%J$%Nf!33!8J'%!1%J$"3Q!33!8J!%!@$JK!&#l`IriI!J$TNk!!#!
!!!!!!!!!!!!!!!")!!!-Q)-!!$KM!!&mS!Fe1+Arrd##rr"1J!!J!!!!!,qKrr4
m#!+QI(dEHAbH)hL3!!%!#*3Krl""JJ"B5!-(MB""!"4mIaYiIk2VH(r%mhK)!`b
*J%%!&(`Hq!"!J3!dIk2VH%J$"9@!33!8J(d!!(`Im&"m"3FdI'2k&$L!!!",rrq
"Ik2VH%J$#3Q!33!8J!%!@$JK!&#lSIrdI!J$TNk!!#!!!!!!!!!!!!!!!!#qiIr
FI!J#TRah'hKmQ#0iI,NVH(cD-hL3!!%!#*3Krh")!`4"J%%!&)#A!!!mS%P-I(m
EH+L%!!BiC80$5!#KT@!!!!"mHaYj3B)"3%J$"0@!33!8I(i(G(pMfhK)!`6GJ%%
!&(pMfhK)!`5KJ%%!&(pMfhK)!`DPJ%%!&(am'hKqilYi5!-%RB""!"4mI3GdIZ1
lH%J$"(@!33!81!!!"$KL9Q5`!3!i1-!!!+LM!!BiJ!!(J4F!!)$S!!!i#!!+1'J
!"C!!i3!kX-%!9V-"!&L`S3"!J,S!!*!!S3"DU+J!#,#K!&#3!!%!8NJ$!f'!33!
813*IJ$NJ!!!iiPDkIiAMH$M#9X!iJQ``J3J!!+MR!!#!aJ!!J!3!"*KK!$iiB3!
iN5%!4*%"!%L`i3"HN!$"!'#3!!%!C)#E!!")!4ITB!!!!(lMZhKrT!Gd5!-'NB"
"!"4rBpYiIm3(G%J$"S'!33!8UZ%!9UJ"!&JiBQJ%X"N!!)!"!&U3!"S!!)!"!%4
8!!IqQ!-!!%J!!"a)!`-jJ%%!&$J!rrq`'3!!I(FEH*!!'J!!Iq2lH%J$!`@!33!
8IZ1lH)!"!*Ji)3#3!(`)!kDkiIrF6S!!)!!!!!!!!!!!!!!!!,q"rr"m#!+Q1')
VX(bm+hL3!!%!#*3Krl")!`0TJ%%!&$L"!$a,r+YGB!!!!#`$!!"!JJ!F1')Va%J
$!dQ!33!81)%!1%[mUceJ!!!!,!-!!%##!5JiBL[N5!-$+B""!"4mC"YiJ'%!2%J
$!m'!33!8I(iEH8'#!33iBL[`5!-$"B""!"4mC"YiJ'%!1%J$!jf!33!8I(mEH8'
#!1!iBL`35!-#iB""!"4mC"YiJ'%!2%J$!hQ!33!8I(dEH8'#!,aAJ!Br3B)!((r
-mhJiB!!!1)!!!%J$-Tf!33!85!!!R(rXqhJiB!!!1)!!!$LJ!!")!c+"J%%!&(a
r'hP"JJ"m1'!S!%J$"8f!33!8I(`EH%J$"*Q!33!8I'BEH(rMqhKrK10i1+!S!%J
$"8'!33!8Iq2lH%J$!Yf!33!8Ii2MH(qXkhK)!c)YJ%%!&(ar'hKrJq0i5!-&,B"
"!"3S(`!!3B)!')#I!!Krc20i1'!!!%J$-J'!33!8J!%!@$JK!&#lJIr`I!J$TNk
!!#!!!!!![Z(rh(`)!UBliP'`I,FVH(cB-hKmq6Yi1i!!!*!!!3!)I)!(0"`!!!k
8)Iq3!)"M!!"mB`)8Jm2rp$KJ!!!i!2rrJ*i!!)1N!!!iJ!!(N!"K!%#3!!%!2+J
&!!#`!3!iJ(i!!$KM!!9)!`#&J%%!&$L#AfCmHaYi1d!!!)J%!!!S!!!!3B)!-+J
A!!!X!)!&3))!*$KL9d!iJ!!!1'-"N8J$!%f!33!89'!'2d'#!!Jl3!!"9eS'2d'
#!"3iB3"!1)!!!$LJ!!",rrfYJ(i!!)J$!!3X!!!$3B)"2%#!!"3X!!!"3B)!'%#
!!%a)!!%S,!!!"8#!!5")!!$NU'%!1(qNkhKrCGYi1-%!1$MK!$a,rjk&B!!!!(a
m'hKrJ!Fe3B)!p$J!rrq`!3!iN!!"!$a)!!$N1'*JGMZ!rp@)!`!!+!!!!%'#!&5
SB3!iIk6VH(pPfhJi`3!i11%!2%[rRMPJ!!!!2"dlLLJ!Ef0mI"Yi3))!+$b!CRD
SB3!iIfAEH$L%Ef-i`3!i11%!2%[rRJPJ!!!!I(`EH(q!"c9"JJ!FU)%!1(r$mhJ
iS3!i1-%!2%[rq[9mI"YiIi!(08'#!&L!I`!!1!!!!S"M!!#SB`"BX'%!1*!!!3!
m5!!!2$`G[B`S!&*d1i!!!%##!##!I`!!1!!!!S"M!!#SB`"BX'%!1*!!!3!m5!!
!%$J!rrq`!3!iN!!"!$bcQ3!!9d!'2i!"!$b3!"J!!+J"!$L`&`!!3B)!&$KK!%!
iJ!!!1+!!!8[rr$Q!!3"i1#%!F,VKrpam#!1Q6S!!),p"rqKm#!+QI(SEHAbI)hK
mZbYiI0`cH(cp1hJl`!!!N!!"!!L8)IqJ3B)"R%J$!6f!33!81!!!$RaM!jCri!F
e3)%"I(rN"c4m""J!3B%"F$KLAfD)!`!!+!!!!%'#!$"r3p0iIq6lH(pPfhKrKZ0
iIkIVH%[rr6fS'`!!X!%!1)!F!!#3!!%!2%J!!33Ij!!1J,S!!(b&qK5)"2rb+!!
!!%'#!-#!C2rd+!-!!%'#!,5)"2rc+!!!!N##!%5SK2rk1+%!1$M"!$a,rrQ*X(d
!!+JG!!!X!!!!3B)!1$KL8E!i!!!#J'-!!)"M!!#SB`"BX'%!1*!!!3!m5!!!'$J
!!!#`(3!!1!$rrl!"!$L3!!%!2)!D!!"mB2S8L!2rmLJ!!!&!JJ!-1!!!!*J$rr+
!'J!!U*d!!(aJqK5`JrriJ"S!!+L"!$KmB2S8X)2rqS!D!!#!J3!mI'$k&*!!Jrr
m5!!!-(aPqK5S!rriX"d!!)!D!!"mB2S8U!2rqV!"!$L!'J!!I'$k&)!$rrb3!!%
!2+KK!$KmB!Fd,!$rrd##!"#!!3!m,!$rrd'#!##`H`!!1m!!!B!"!$b3!"`!!%J
!!!`i!2r9X"d!!(r$mhL!!3"S1#%!B(`)!kDl3IrS6S!!)!!!!!#qBIr-I!J#TM[
L8E"mH4YiI*SMH$TJ!!#3!!%!#*3KrS")![baJ%%!&&G!"MpmIKYi3B)!j$KJ!#"
)![I4J%%!&(ac'hP"JJ$31'*9k$UJ!!#!B`!!JS-!!%J!!+`iG!#11)!!"%J#r&@
!33!89'!'2d'#!(5)G!#q1!2rqA`!"c9!J3!8IQ1EH(`%"c4)!`%PJ%%!&)J8!,m
X!!!&3B)!)%#!!"!X!!!#3B)!&%J!!&!X!!!(3B)!#%J!!%5!&!"k9!-%2MJ$rrG
m!!Fe3)%!-(jMQhKm"!Fd5!-!fB""!"4)!!!FJ"3!MRjMQhK8!!BqI!3(0%J$!,f
!33!81T3"$MUe!!%iBPAXJ!-!!(`9!!""J2p-1'*@c+KM!!")![[pJ%%!&$KJ!!"
)!`*TJ%%!&$aJ58iiBda$5!-8kB""!"4mH"Yi1'!!!%J$!fQ!33!8N!"j!!!ki(8
`1k!!!$V!!!!mB%P1IZ5lH$KM6%-kJ!!"5!#Bi@!!!!"mG4Yj3B)!M&G!"Mp"JJ!
`+"-!!%'#!#Kqi`Fd1'1+d$J!!!TmJ`2@IQ1EH$L%!!&)![X4J%%!&(ad'hK@J!B
r3B)!6(kMUhJiJ3!k1+%!2$M"!%4)!a5GJ%%!&(qN"c5!H3!!1!3!!4b!!!j,rrA
pIk!(0)"j!!!F!!!1U)%!1S"M!!"mB`)8X)-!#$V@!!&q``FdI`!(0(`$!!!l[3!
"1[F!#N'!rd4rS!FdJ(N!!"b!!!j,rr@e+"-!!%'#!""qBjYi5!,qKB""!"3iB!!
"5!-"5B""!"3iBPG!L!-!LL`!!!*"JJ!S3)!!%#`!!!&!J!!85!!!,#`!!!4!J!!
N5!!!'$Z!J!")!!!B1'*@C+Z$!!C)!!!-1'*IaUZ$!!!l3!!!5!!#Q(p!"c5!H3!
!(`!!$S!$!!"mB-)8UZ-!#(lJ"c9"JJ*d2'"*6RlNZhJiBda$5!#AK@!!!!"mG4Y
j3B)"q)"e!!!iJ!!(1'-!"8J#qG'!33!81)*ICRad'hJk`!!"L!3!!#J!!!"!JJ!
FJ(8!!$L!!!BiB`!&5!,jTB""!"4mGKYi9X!'2cTJ!!""JJ!NJ(8!!$L!!!8iB`!
&5!,jJB""!"48B!Br3B)!#$TJ!!'!G3!!9RF'2SJ$!!3X!!!$3B)!m%#!!"3X!!!
"3B)!'%#!!%a)!!$F,!!!"8#!!04)!!#8J)-!!(q$ihKqKD0i1-%!1$MK!%",rjI
0B!!!!(al'hKrB!Fe3B)!U$J!rrq`!3!iN!!"!%")!!#B9X!'2d'#!"Ji!2rrXi%
!1$YJ!!#3!!%!3%J!!(aqSkYiIi6MH$LK!$Ji`3"!5rrdMAal'hKrB!Fe3B)!A)"
r!!!i!!!#J'-!!+KM!&L`B3!iN!!"!%")!!"!J'-!!$YJ!!!m!lf-+!"5G%##!##
!I`!!1!!!!S"M!!#SB`"BX'%!1*!!!3"!5!!!%$J!rrq`!3!iN!!"!%#!Q3!!I"D
k&$KLD!5!K!!!I!6"VS#C!!#!Y3!!J!3!!)LP!!4mJ-)8Q+3!!B#C!!#!"!!!I)$
#&*+N!!+!Q3!!J!3!!(b!`K5cC!!'J*N!!+LK!$L!"!!!I)$#&,#N!!L!Q3!!J+%
!3)!%!!"mJ-)8N!#N!!U)!`!!+!!!!%##!(a)!!"NJ(N!!$LJ!!!iJ!!"J'-!!(b
M`Dk!H3!!J!-!!(aJ`K5BJ`!"J(N!!)!$!!"mB-)8N!#M!!*)![JYJ%%!&)#j!!!
iJ!!!J!8!!(bJ`K5`C3!'J(N!!)!$!!"mB-)8X)-!#$YD!!&r3`FdIk!(0(`$!!"
"J2eJIm2cH%J#pp'!33!8J!%"L$JK!B#kBIr-I!J$TNk!!#!!!!!!!!!!!!!!!!#
rJIr`I!J#TRam'hJii!!!I*dMH(bq+hKmhc0iN!!"!!Ji(!!'P#(rB*!!!3"+N!$
K!%5S!`!!1'%!1,!"!%k!(!!#N!!"!'LBi3"55!,qDB""!"4mC!Fd2!3!!#J!S!K
!JJ!)1'!!!(aJ"c9!JJ!N+"d!!%'#!"arJq0iIk6VH(r&mhKrj[Yi5!!"I@!!!!#
!!3#S1#%!S,Z"rr"m#!1Q6S!!),qKrr4m#!+QI(dEH(bH)hKm[bYiN!!"!!Ji!!!
!P#(qm*1K!*SiB3#)Xm%!RS#&!!#3!)%!Z,!"!+4)![Q*J%%!&(aJ"c9!JJ!3J!%
!Z*!!(`!!5!!!-*1K!%SiB3!iXm%!6S!I!!#3!!%!D%J#rI'!33!8I'!(08##!!b
!!3"SN!!I!!#!!3%B1#%"%,ZKrr4m#!1Q6S!!)!!!!!!!!!!!!!!!!,pKrqam#!+
QI(iEH(bE)hKm[#YiI0dcH$KJ!&#3!!%!#*3Krl")![%eJ%%!&$JH!!D3!!-!%Ra
r'hLS(J!!X!-!&S!H!!+3!!-!-%J#r8'!33!8I(iEH(r!"c9!JJ!iIf6EH$Kr!#!
iS!!35!,edB""!"3S(!!!3B)!$)!I!%L3!"`!!#JG!!""JJ!-J"m!6*!!(3!!Iq2
lH%J#qAf!33!8Im2cH)!"!&Ji)3"3I!J$TVYKrqa1J!!J!!!!!!!!!!!!!!!![i(
rm(`)!UCmI"Yi11!!!(bG)hKm[LYiI0mcH*!!!3!)1"`!"T3Krf#3!!%!5T!!i3"
%U!-!!$KK!$L`!3"1J"`!!T!!!3"SQ1%!8V$K!&4)![apJ%%!&(aJ"c9!JJ"N+"i
!!%'#!!L6`3#!+"m!!%'#!!L6i3#%J"d!!*!!!3"BJ"d!"*!!!3"FJ(d!#M`$!!%
S!2rr3B)!#*!!B3"LS*d!#$J!!!!iB3!iX)%!B)#F!!+3!)%!D*J"!&*)![`YJ%%
!&)!"!+Ji)3#JZi(rm(`)!kC1J!!J[b(rj(`)!UBj3!!!I*NMH(bk+hKmfc0iI2`
lH(dG3hKp2NYiN!!"!!Ji!`!'P#(r-*!!!3"+N8%!4+J$!!#`!3"1X8%!9)!$!!)
iB3!iN!!"!'K)![G"J%%!&(ar'hKri!Fe3))!D(mNbhJiB3"B1+!!%%J#p$Q!33!
8+"S!!%'#!!b!!3"SN!!D!!!S'`!!3B)!$)!"!)#3!"X!!#JF!!""JJ!-J!%!K*!
!(!!!+"d!!%'#!!b!!3#-N!!G!!!S(J!!3B)!$)!"!*53!"i!!(rMqhL!!3$B1#%
!d(`)!kDl)IrN6S!!),p"rqKm#!+QI(iEH(bI)hJiB!!!I,SVH(cE-hKp(%0iN!!
"!!Ji(J!'P#(r3)#%!!U3!1%!k*!!!3"11!$rrh`%!&"m"!!dN!"K!%K8RGiqU"i
!!,"K!&JiB3!mX!%!8S!H!!+3!!%!E%J#pNf!33!8I'!(08##!)JS'J!!3B)!#*0
"!)3S'`!!3B)!#*0K!)KAS!Br3B)!$)!"!'D3!!%!1(rMqhJiJ3"F1+!!%%J#mb'
!33!89k!'2d'#!"5!!3!i,!!!!%'#!!L3!!%!CS!"!1JX!!!!3B)!#*!!!3#3!)!
H!!)X(!!!N!!"!'a"JJ!)Qi%!Q$KK!$a)![RKJ%%!&)!"!-Ji)3$!Zd(rk(`)!kC
1J!!J!!!!!(`)!UD3!!%!#$J!!!Km#31QP#(rB*!!B3#i1B%!5$PK!,53!)%![*!
!S3$!N!$"!-53!1%!b*%"!-b4)3$3N8%!e)"V!!5%#`!)N!"X!!58$!!)3J$rm)#
,!!3i!!!!S+X!#$KK!%b3!)`!"$L"!$b`V!!)1+!!!$M!!!#B!3"511!!!$N!!!!
j)!!!5rrpMAaJ"c9!JJ!X1'%!1%J#q8@!33!8J-%!1$KK!%`iJ3!m1+!!!$MJ!!!
j!!!!5rrq2B!"!+Ji)3#JI!J$TNk!!#!!!!!!!!!!!*2Krram#!+QI,mVH*!!!3!
)9-!'2j3Krm""JJ!8I)3(G%J#p#'!33!85!!!%(b%"h4)![3TJ%%!&(aJ"c9"JJ!
-1!!!!,!I!!#!!3")1#%!3)2Krram#!1Q6S!!)!!!!!"m#!+QN!!"!!KmB!Fe1!$
rcC3Krm""JJ!35!,d3B""!"4mB"YiI!-$H)!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!
!!*2Krram#!+QI(mEH*!!!3!)1,m!"T3Krh#SB`!!J*m!!NJ#p&Q!33!81"m!"T!
!!3"+1'%!1+JI!!#`!3"1J"m!!T!!!3"S5!,d6B""!"5!!3#B1#%!N!#$iIrmI!J
$TNk!!##6iIrmI!J#TMM$rrb3!!%!#$J!!!Km#31Q1q!!!*3Kr`!ii3!dJ'B!")3
'!!L3!'F!"*3(!!K#!2r`J!B!"$KK!$JiS3#!N!!(!!3iJ!!!S!B!#,!(!!K)!!,
YB!!!!(aJ"c9!JJ!-L!%!RP3I"rjrirYiJ!%"#$JK!3"m#!1QJq(rr%k!!#!!!!!
!!!!!!!!!!!#rSIrdI!J#TRap'hKmRL0iN!!"!!L8)Im`5rrr@94J"MpmIaYi3B)
!'+Kp!!!i[3!'J*d!!NJ#me@!33!81"d!"T!!!3"+1'%!1+JG!!#`!3"1J"d!!T!
!!3"SNm%!9%J$%5f!33!89q!'2har'hK"JJ!BU(d!!(r&mhL!R3!#5!-4*B""!"4
rirYiJ!%!f$JK!0"m#!1QZk(rp%k!!#!!!!!![k(rp(`)!UCmI4YiI*iMH$[J!!#
3!!%!#$J!!!#8)Im`N!!"!%3iB3!iX!%!9*!!!3"+Xk%!6NJ#pK@!33!8I'!(08'
#!!`iB!!!5!!!5#JH!!""JJ!-U!%!HV!H!!#!J3"SS!%!CMKL'T!!I)3"eS!$!!"
m"!!!3)!!'(qMkhJiJ!!!5rq&`@!!!!"mIaYiIq2lH)!"!0Ji)3$3Zk(rp(`)!kC
1J!!J!!!!!!!!!!!!!!!!I!J#TT!!!3!)1!!!!*3Krd#3!!%!5NJ$&Z@!33!81!!
!!,"K!%iiB3!iX!%!9%J#p@f!33!8I'!(08'#!!`iB!!!5!!!#+KK!%k!!3$)1#%
!`(`)!kC1J!!J!!!!!!!!!!#6iIrmI!J#TRbr+hL3!!%!#$J!!#'8)Iq!X'%!8$K
K!$L3!-%!@)#P!!#3!+%!A,!"!'53!)%!CNJ#pXf!33!8J!%!B*!!(`!!J!%!L$J
K!)"m#!1QJq(rr%k!!#!!!!!!!!!!!(`)!UD3!!%!#$J!!#'8)Iq3!,"K!&!iB3!
iN!$"!&L3!+%!A,!"!'53!)%!CNJ#m0Q!33!8J!%!H$JK!("m#!1Q6S!!)(`)!UD
3!!%!#&6!"Mq8)Iq3!,"K!&!iB!!!N!#K!&L3!)%!A,"K!'4"JJ!3U'%!C$J$!##
`!3"N1!!!!*!!!3"Q1'%!1%J#m)'!33!8J!%!H$JK!("m#!1Q6S!!)!!!!!!!!!!
!I!J#TT!!!3!)1!-!"T3Krm#3!!8!%UJ$!!#`"3!@X)8!()!$!!*mSbYiN!!&!$"
)!["PJ%%!&)!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!#r`IriI!J#TRar'hK
mRL0i1(m!"T!!!3!)1+!!3*3Kra!iJ3!i5!,Y0B""!"3i!3!iN!!"!)Si!2rr1'%
!H+LI!!#`J3#1X!%!P)!I!!+3!!%!U%J#lr'!33!8I(mEH(rJ"c9!JJ!mJ!%!h#`
!!!&!JJ!31!!!!T!!(J!#5!!!#*!!(J!#U!%!MMKK!$JiRJ!'X"i!!$LJ!%")!Zc
&J%%!&(rMqhL!!3$i1#%!m(`)!kDl`Iri6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+
QI(iEH$L#9J!iIJ#51q!!!*!!!3!)P#(r`)#%!!")!4jYB!!!!&4J"Mp"JJ!`1(i
!`%J"(SPJ!!!!9'!'2d'#!"`iIJ$)5!%Ha@!!!!"8B!Br3B)!#$[J!!&rirYiJ!%
!5$JK!%"m#!1QZm(rq%k!!#!!!!!!!!!!!,mKrq4m#!+Q1d*S#$L!!!!iBPEB1b!
!!C!!!3!)P#(rB)#k!!#!!`!!J'8!!,#"!$k$``"%J)-!&)"M!"L3!!%!1*!!J3"
BN!"K!&bVS3"BUf%!A%J!!8bcS3!m1'%!@)#k!!#!J3!m5!-!cB""!"5!B3!i1)%
!@%J#jrf!33!89'!'2d'#!4L!IJ!!1f!!!)0$!TLVJ`!%5!!!m(pJ"c5!QJ!!('!
!'$J!!!0mK"S8I!N$TMLK!&`iK2rmJ'3!")3%!!L3!'8!"*3&!!K#!2r`Jq%!E#J
I!!""JJ#XJ!%!B)#K!&L3!!%!5)#"!&bS`3"+J'%!C(c!"c@3!+%!8*!!J3"8N!"
K!%a"JJ!3U!%!@R`'!K5`!3"5U'%!6RaJ"c9"JJ!3U!%!@R`$!K5`!3"@J'%!1$L
"!&")!ZG"J%%!&&4J"Mp"JJ"%J)),X$KK!%")!)ATB!!!!)"K!$KrT1YiImAcH(r
XqhJi`3"35!-EIB""!"4mH4Yi1'%!3%J!KJeJ!!!!5!!!-$Yl!!&rB`FdIi!(0(`
$!!""J2m)5!!!'$Zp!!&rS`FdIf!(0(`$!!""J2kX9b-'2S!"!+Ji)3#JI!J$TVX
Krq41J!!J!!!!!!!!!!!!!!!![m(rq(`)!UCmRL0iI,mVH*!!!3!)P#(r`%J#rj'
!33!85!--mB""!"4)![TCJ%%!&)#$!!Kr`!Fd9!!31S"M!!b!T!!!J)-!!$KJ!!"
m"3!Z(!!!"Rb%!K5!"!!!N!!I!!#J"!!%X"m!")!"!%Ji)3"!I!J$TV["rrK1J!!
J!!!!!,r"rrKm#!+QI*iMH(br+hL3!!%!#*3Krm")![m4J%%!&%J$$('!33!85!,
jfB""!"3iJP'd1!!!JS$$!!Kr``FdJ+3!!)#'!!"8Ba!kJ-8!!(`*!kCmC"JZ1,r
rr"`$""CmKJ)81)6rr)"N!!5%"!!)N!"P!!58"3!)3J$rm)!%!!3iB!!!N!!&!!5
J"!!)X!8!#)!"!%Ji)3"!I!J$TV["rrK1J!!J!!!!!!!!!!!!!!!![m(rq(`)!UC
mRL0iI,mVH*!!!3!)P#(r`%J#rQ'!33!85!-,`B""!"4)![NTJ%%!&)"M!!Kr`!F
d1)*9k&3!%$U!B`!!J)3!!(`$!#k!K!!!(!!"$Rr%!K4r`r0i5!%Z0@!!!!"8B!B
r3B)!,$L#8DarirYiJ"i"!)#%!!"8!$!bJ)3!!(b%!K4)!-!*B!!!!%J!!"4rirY
iIm6cH%J![r9J!!!!1'*PF)!$!!!S!!!!3))!#%J!!"4rirYi1)!!rd[r,2&J!!!
!1'!!!)!"!%Ji)3"!I!J$TV["rrK1J!!J[i(rm(`)!UCmI"YiI*dMH*!!!3!)P#(
rS%J#lI'!33!81!!!!*!!!3!iI(iEH(q$ihK)!Z3aJ%%!&%J#q$Q!33!8I(mEH(q
$ihK)!Z9TJ%%!&$KK!$K)!ZeYJ%%!&%J#lAf!33!8J)),X$KK!$a)!),PB!!!!(q
$ihKrT1Yi1+%!4%J!Z&&J!!!!1'%!4%J#lDf!33!8Ii2MH%J#imQ!33!85!,r8B"
"!"4ra20i5!-!CB""!"5!R`!%Im2cH%J#lC@!33!8Im2cH%J#lD'!33!81'%!2%J
!JXeJ!!!!1'%!4$L!rrmiS2rr5!,Y#B""!"3iB3"%5!,YMB""!"5!B3!i1)!!!8J
#lDf!33!8J!%!D$JK!'#lJIr`I!J$TNk!!##rBIrXI!J#TRbp+hKmhM0iI(`EH$[
J!!!iJ!!!1+!!!*!!!3!)1-!!%$MJ!"#8)Iq3!)"M!!#$B`"%1'%!3%J#l6f!33!
8U(i!!MJ$!!'`!3!kU"i!!+KK!$U`!3!i1!-!%+KK!$L`!3!q1!-!%,!"!$b)(3&
C,!!!!8'#!%K!J!!3,!!!!%#!!"4)!!#%,!!!!d#!!(a)!!"8J*X!!)"N!Q+!"!*
QN!"K!%L3!!%!6)!%!QU3!!%!8+!%!Qk`!3"85!!!8)#E!!#!C!*`J!3#G*!!B3"
)N!!"!%b!"!*iN!!"!&#J"!*mX!%!9%J!!#L!Q`!!J'3#IS!%!S+3!'%!5*!!!3"
-J!3#KT!!!3"3S!3#LV!"!&4rJq0i5!,lDB""!"4)![S4J%%!&)#$!!!iB3")1+%
!3$M"!$Jii!!!13!!!%J#qJQ!33!81'!!!%J#kV@!33!81'!!$%J#kYQ!33!8U*i
!!RqMkhLS(J!'1)3!'R`%!&"m'`Fd5!,j+B""!"4mB`FdIf!(0(`$!!"!J3"31'!
!)%J#kS@!33!8Ik2VH%J#q3'!33!8I'-(0(pJ"c4m!`!!3)%!*$KJ!!")!ZTGJ%%
!&(qMkhKrC0Yi5!#k[@!!!!")!!!)1q!!)(rMqhK)!ZSjJ%%!&+LH!!+SIJ!%1)3
!'$J$rramJ`FdI!3(0%J#m2'!33!8Ik2VH%J#m2f!33!81'!!!%J#kJ'!33!81'!
!!%J#kL@!33!8J!%!H$JK!(#lBIrXI!J$TNk!!#!!!!!!!!!!!,pKrqam#!+QI,d
VH(am'hKmhM0i1q!!!*!!!3!)P#(qN!#)"3!&+!!!!%##!)b!(3!!,!!!!%#!!"`
iB3"B1)!$k$LJ!$K)!Z,0J%%!&%J!!)`iBPAS(!!"$S"M!!#!B`!!If-#&(pMfhK
)!5RTB!!!!&4J"Mp"JJ!X1)*4V$KK!&L!'`%!J)3!!&3!-$+!K!!!I)3#&%J!Zle
J!!!!5!!!2(pNfhJiB3"B5!#lU@!!!!")!!!S1)*4Y$KK!&L!(3!!J)3!!"`!""D
!K!!!I)3#&%J!Zi&J!!!!J,`!!$KK!%!iJ!!!Jf8!4$LJ!!!i`!!311!!%%J#kN@
!33!8U(i!!MJ$!!'`!3!kU"i!!+KK!$U`!3!i1!-!%+KK!$L`!3!q1!-!%,!"!$b
)(3!%,!!!!8'#!%K!J!!3,!!!!%#!!"4)!!#%,!!!!d#!!(a)!!"8J*X!!)"N!Q+
!"!*QN!"K!%L3!!%!6)!%!QU3!!%!8+!%!Qk`!3"85!!!8)#E!!#!C!*`J!3#G*!
!B3")N!!"!%b!"!*iN!!"!&#J"!*mX!%!9%J!!#L!Q`!!J'3#IS!%!S+3!'%!5*!
!!3"-J!3#KT!!!3"3S!3#LV!"!&4rJq0i5!,iFB""!"4)![FCJ%%!&)#$!!!iB3"
)1+%!3$M"!$Jii!!!13!!!%J#pa'!33!81'!!!%J#jlf!33!81'!!$%J#jq'!33!
8U*i!!MKK!&LS(J!'1)3!'R`%!&"m'`Fd5!,f-B""!"4mB`FdIf!(0(`$!!"!J3"
31'!!)%J#jif!33!81'%!@%J#pJQ!33!8I'-(0(pJ"c4m!`!!3)%!*$KJ!!")!ZG
PJ%%!&(pNfhJiB3"B5!#ha@!!!!")!!!)1q!!)(rMqhK)!ZG"J%%!&+LH!!+SIJ!
%1)3!'$J$rramJ`FdI!3(0%J#lIQ!33!81'%!@%J#lJ@!33!81'!!!%J#j`Q!33!
81'!!!%J#jbf!33!8J!%"H$JK!A#lBIrXI!J$TNk!!##r3IrSI!J#TRbD)hJlSQJ
)I,XVH(cH-hJli!!"N!!"!!L8)Iq3!*!!B3#)J(d!!)#%!!#!'J!%N!#"!$b3!!%
!3%J#p`f!33!85!,eYB""!"3i!!!!Ji-!!,0K!$JiB3!mJ,d!!,!"!$U!J3!i5!,
fQB""!"5SZJ!#1'%!4$L!!!!i"3!"X!%!4MLJ!!'S'J!!U-%!4V!"!%3i"J!3U-%
!4,!"!%Si"J!3X!%!5%J#i$Q!33!81'!!#NJ#pcf!33!8Ii2MH(r&mhJiJ3"%1-!
!!8[rKM9J!!!!5!!!6)"K!)JiJ3!m5!,GBB""!"48CJBq9q!'2R`'!%"mI4Yi3B)
!((q$ihKraI0i1)%!4%[rKIPJ!!!!IlrVH$KK!)K)![C*J%%!&%J#pPQ!33!89'!
'2d##rkaAi!Br3B)!((q$ihKraI0i1)%!4$M!!!",ri@jB!!!!$KJ!!K)![DGJ%%
!&(rMqhL!!3"i1#%!F(`)!kDl3IrS6S!!)!!!!!!!!!!!!!!!!,p"rqKm#!+QI(X
EH(bF)hJlS!!!N!!"!!L8)Iq`J-3!#)"N!!aAC"!kJ+B!!)!$!!"mC5!Z1m-!!4r
q!!CraI0iI)$k&%J!!"b)"!!&+!!!!%##!"`l[3!"1+8!!6L%!!D!(!!3I!8!!%'
!rq!X(3!!3B)!e)!F!"4m`c0iI!$U&&3%%$T)!ZH9J%%!&%J#jlf!33!8I'!(08#
#!+b![!!)1(d!!B!F!"3iQ`!"I(XD&(`%!&#!T3!!9*S31P4N%$TmCG)8I)8L&&3
&%$T)!YqGJ%%!&)#F!!araI0iJ(`!#)#%!!#!!`!!I)6k&(aJdK4)!!!JL!3!"5J
!!!"!JJ!JN!#M!!!iT3!"1)3!"MKM!!5!(!!3I!8!!%'!rpb!R!!81"X!!6LLD!K
rS`FdI)6U&*!!R!!8I!3(0)#P!!")![8&J%%!&)!"!&Ji)3"3Zd(rk(`)!kC1J!!
J!!!!!!!!!!#rSIrdI!J#TRbH)hKmI4Yi1q!!!*!!!3!)9k!31T3Krl#!K!!)J(i
!$)$%!!#!B`!!I)B!,ML%!!%F"!!'I'-#&%J!!"b)!`!&+!!!!%##!"`lr`!"1)3
!!6KM!!D!(J!3I!3!!%'!rq!X(`!!3B)!F$LI!!'!(J!81(d!!AbG)K48K4!k9'3
31R`$!&"mCLS8I)BL&&3&%$T)!YjaJ%%!&)!H!"4m(`"3N!!H!"5!(J!8J(i!#&3
%%$T)!ZB"J%%!&$L#D!Ji(3!"Iq-(0)#N!!"m"!Fd5!,d*B""!"5!!3"B1#%!8,Z
Krr4m#!1Q6S!!),lKrpam#!+Q1q*S#(bB)hKmZ5YiI0ScH*!!!3!)P#(rJ)"r!!"
)![09J%%!&%J$!,@!33!85!,Z(B""!"5!!`!8Iad(0(am'hKm(3!!3B!!$$KJ!!"
)!!%dJ,`!#&HN%$U!I!!-J+8!!)!$!!"mC5!Z(m-!"RbJmK5)"3!&+!!!!%##!!`
iB!!!5!!"!$L#8E3iB3"%J!8!!)#%!!!F!!3@U,S!!S$%!!#!JJZ`IfB#&)Vl!@3
i"3!"X!%!2UJD!!#SS3!qX!%!2$J&!"#SS3!mX!%!3MJ&!"#`!3"!5!"i9@!!!!"
r*-YiIZ@lH$KK!$a,r&dKB!!!!&4J"Mp"JJ"mJ*`!$&EJ"MiiB!!!X`%!1)#%!!!
S!!!#X'%!1RbNmK4!JJ!`1!!!!i"K!$LB'`&NQ!8!"B#I!!")![+KJ%%!&(qMkhK
rK10i5rrmD8J!!#`i!!!#J'%!1*JE!@5B"3!&J*m!!%J#mR@!33!8Ik2VH(q%ihK
,rrfG1'%!4%J!H!9J!!!!1'!!!)!"!)Ji)3#!ZZ(rh(`)!kC1J!!J!!!!!)#N!!J
i`!!!J+8!!%J!!##!"3!!I!!B!%##!!am``Fd6S!!)$LP!!3iaJ!"J!3!&(`'!!"
"J2rF1'!!!%k!!##q3Ir)I!J#TMZLD!KmRL0i1i*4Y(c5-hJli!$rN!!"!!L8)Ip
`N!"K!+L!I3!!5!,aEB""!"4)![l0J%%!&(ak'hK)!Z`aJ%%!&)!$!"4rf`FdI(N
EH(`E!!""J!!-1'!!!%J!"(L$'3!)9f!31S#C!!b!H!!!+!3!!(kM!#j"JJ!m("8
!"S"N!!"q``)8L"B!"6VJ!!#+GJ!%+!!!!%'#!$#!&J!!J(`!!"`!""D!B`!!IZ-
#&%J!!"L!I!!!("8%&S"M!!"qi`)8LRF"@AjJ"c3X!!!"3B)!+%#!!"!X!!!!3)!
!&%J!!#3X!!!$3)!!(%J!!"3kJ!2Y5!!!%$U!!qj)!!!)1S!$m)#b!!!iB3!mJ")
!")###l#3!+%!4*!!!3")U-%!4+LK!%Jia[rr1!Arrl$"!%5`!3")5!"f'@!!!!#
!B3#SImAcH(k'ShJiJ3"%5rrj!94J"Mp"JJ0`J,N!$$J!!!&qB`FdI!!(0(aM!&!
iJ!!!-!2rrl#"!$SS"3!!IQ!C%%'#!Lb)'3!B+!!!!%##!"!S&`!!3B)!#$TJ!!!
FP3!'J!8!!(aJ)K3S&`!!QQ-!"%'#!)5)'3!B+!!!!%##!!JkB!!!J(N!$$U9!!'
!!`!!I`!L&$VB!!C)!!")L"B!"5J!!!"!JJ")QRB!")JB!!8S!!!$3))!*(k$ShK
r*-Yi5rrp[E"K!$L!R3!!J'%!1%J#lq@!33!81YB!"MU8!!'!'3!3I"3!!%'!rl5
DG`&C5!!"0$U9rrq!H3!-("3!"S"M!!"r!`)85!!!')JB!!8S!!!!3))!&$XBrrS
kP2rr,"3!!%#!rqJX&!!!3B!!q(kAShJkf!!'1N!!!$TJ!!!kP!!"5!!!D)J@!!8
S!!!!3))!D)JC!"JS!!!!3))!0(`8U!""JJ!X1!!!!*J@!!4qJk0iIb6,H%[rr3@
`B3!iJ*d!!)"K!$K)!ZmYJ%%!&)J@!!3S!!!!3B)!#$T5!!%kF`!"1T3!!6V@!!D
!'3!3I"3!!%'!rj3X%J!!3B)!*(`5Q!"!JJ!31!!!!CJB!!4)!!!B1!!!!TJB!!4
)!!!-1!!!!*JB!!5!'!!!IZ1lH)#m!!"r*-Yi(!!%&S#P!!#+H!!%I+8#&*TP!9P
,rraaX'%!1)#G!!#!B3!i5!,ZQB""!"5)'3!C+!!!!%'#!45!H3!-1S!!!),$!!"
)!!!JL"B!"#J!!!""JJ!-1q!!!%J!!2!keJ!'1T3!!B!C!""m&!!!3B$rh%J!!0L
)'3!B+!!!!%##!(4qB!Fd,!!!!8##!'JkJ!!!5!!!9(`8f!""JJ")J(J!!&D!%$U
!R!!!I!-!,S"N!!!F!!3@I'-#&)J$!9NS!!!!3B)!)$J!!!#bJ3!iQ!-"@B"K!$L
!R3!!5!,YjB""!"3kP!!"J"N!&(`8!!""J2qSQRF"@BJC!"NS!!!!3B)!6$U!!!"
)!!!iJ(J!!&D!%$U!R!!!I!-!,S"N!!!F!!3@I'-#&)J$!9NS!!!!3B)!$$[J!!"
)!!!81T3!!B!C!"4m&!!!3B$ra,2"!$L!R3!!J'%!1%J#l@Q!33!8L"N!'5J!!!"
"JJ!SId26H%J#lm'!33!81)!!!8J!U8eJ!!!!Iq6lH%J#e"Q!33!81'%!2%J!FY9
J!!!!1'!!!)!"!*Ji)3#3!,T"rmKm#!1Q6S!!)!!!!!#rJIr`I!J#TRbm+hKmIaY
iI0dcH*!!!3!)P#(rJ)J&!!8S!!!!3B)"!)#r!!!iB3"!1)!!!)2&!%3iS!!!1-!
!%$MJ!"")!YePJ%%!&+Kp!!)i!`!"X!%!1UJG!!#SB3!kX!%!1$J$!"#SB3!iX!%
!2MJ$!"#`!3!mL"`!"5J!!!0!JJ!XJ0i!!)#Q!LU!KJ)ZJ'B#-U!'!MD3!+%!@*!
!J3"FN!"K!'#`!3"N5!!!+)$H!!#!TJ(bJ)B"pS"Q!IUJ"J(qN!#K!&L3!)%!A*!
!B3"JX!%!C)$"!&KrirYiJ+%!A)#"!'#J!3"NN!$"!%L3!+%!6*!!J3"3X!%!9%J
#kl@!33!85!,UAB""!"5!J`!!1'%!5$LK!%!i`3!i11!!!$N!!!")!ZT9J%%!&)!
"!)Ji)3#!Zi(rm(`)!kC1J!!J!!!!!!!!!!#r)IrNI!J#TMML9HKmH4YiI*SMH(b
l+hKmh$0i1m!!!*!!!3!)P#(rS)1M!!#!C`!!Jq-!!%J!!-5)(`#l+!!!!%##!,!
iI`$5If3(0%J#eBf!33!89'!'2d'#!*JiI`#11)!!"%J#eA@!33!89'!'2d##!)"
rirYi5rrSq94J"Mp"JJ"`1))X((rMqhK)!+bPB!!!!&4J"Mp"JJ!8U(`!!$J$!!'
`(!!!5!!!5$Zp!!%FR3!'Id26H%J#h3'!33!85!,G+B""!"4mB!Fe3))!2$JGrrq
!HJ!!(!!!"RaM!K56``!!1!!!!*J$!!5B!`!&1rm"$M[H!!%iBPAXJ!-!!(`H!!"
"J2mdNlN!!)!"!'Ji)3"JI!J$TVXKrq41J!!J[i(rm(`)!UCmR50iI(`EH(bq+hJ
li!!!N!!"!!L8)IqJS!3!!#J!!!&!JJ%-J(d!#ML"!$b3!'%!1%J#iEQ!33!8I'!
(0#`!!!0"JJ!)5!!"9)"K!$a)!Z'eJ%%!&(q$ihK)!Y#aJ%%!&)!"!$am!"K!3))
"-(q$ihK)!Y#CJ%%!&%J#j+'!33!8I(`EH$KK!$K)!Z'4J%%!&)#m!!3iJ3")J'%
!1)#P!!#!a3!!J!8!"*!!!3"-U+%!6T!!`3")1!8!%,!"!%j)!Y"pJ%%!&&4J"Mp
"JJ$31+*@f$KK!%#!!3!iJ)),X*!!"3!!5!"['@!!!!#!B3!iS*d!$S#m!!4)![D
GJ%%!&&4J"Mp"JJ!31!!!Bl!H!!")!!!-1!!!!,!H!!!iB3"!5!"[,@!!!!!li!!
"5!!!F#J!!!0!JJ"SJ"d!!P3!"MiX!!!$3B)!%(`!"c3X!!!03))!6(q$ihJiJ!!
"5!#P8@!!!!")!XraJ%%!&&4J"$p!JJ!JIi2MH$L!!!&)!+*aB!!!!$J!!!'`(J!
!5!!!$$J!!!#`(J!!1q!!!ArMqhL!!3"S1#%!B(`)!kDlJIr`6S!!)!!!!!!!!!!
!Nq(rr(`)!UCm[bYiN!!"!!KmK!Fd1!6rrj3KrX"8!"!k10rrr)$M!!"m"`)8N!!
$!!!i!!!#I!N$TS#$!!#S"!!#I+F#&$LPrrb!K3!%K!8!#*!!KJ!%P!B!#%)!rr#
!"3!%N!!'!!5!B`!!U!-!!&3!"#&"JJ!SU"m!!$KK!$KmK`)85!#U)@!!!!"rj2Y
i1'%!1%J#kMQ!33!8J!%"5$JK!8#$iIrmI!J$TNk!!#!!!!!![k(rp(`)!UCmI4Y
iI*iMH$[J!!#3!!%!#*3Krl#!B`!!5!,1XB""!"48B!Br3B)!))"p!!4ra20i5!,
1QB""!"48B!Br3B)!#$[J!!&Ai`BqJ!%!@$JK!&"m#!1QZk(rp%k!!#!!!!!!!!!
!!!!!!!#r`IriI!J#TRaq'hJli!!!N!!"!!L8)Iq`1+%!3%J!SS9J!!!!Im2cH%J
#cJQ!33!81)%!1%J#cK@!33!81'%!3$L"!$K,rrp09'!'2d'#!!Jli!!"Iq2lH)!
"!&Ji)3"3I!J$TV["rrK1J!!J!!!!!(`)!UD3!!%!#*3Krm")!B%&B!!!!)!"!%J
i)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!"m#!+QN!!"!!L8)Iq`1+%!1$M"!$`ii3"
!5!,05B""!"3iB!!#1)!!!NJ#cK'!33!81'%!3%J#ehf!33!81'!!!6L!!!&)!Xh
eJ%%!&)!"!&Ji)3"3I!J$TNk!!#!!!!!![i(rm(`)!UCmIKYiI*`MH*!!!3!)P#(
rX%J#c4Q!33!82)#qlcL%!#")!4EjB!!!!(ar'hKr`r0iIi6MH$LK!$K)!+&KB!!
!!%J#eT'!33!8I(dEH%J#hYf!33!81'%!1%J#hZQ!33!8Im2cH(q%ihK)!AjaB!!
!!+L"!$Kr`r0i1!3!"E!"!$K)!XbTJ%%!&%J#k$'!33!85!,SLB""!"4mIKYi1'!
!!8J#e8'!33!81'!!#8J#e@@!33!81'!!!8J#e8'!33!81'!!!%J#e@@!33!8U)%
!1UKK!$JiK!!&1!-!"(b$"c4m"!Fd5!,ElB""!"3iBK8)5!,EqB""!"4rJ`FdJ*m
!$MJ$rrmFB!")J!3!!$KM!!KmB"S85!,EeB""!"3iBK8)5!,EbB""!"4r`r0i5!,
8rB""!"4rSqYi5!,HQB""!"4rSqYi5!,9lB""!"5!!3"B1#%!8,Z"rr"m#!1Q6S!
!)!!!!!!!!!!![f(rl(`)!UCmI"YiI*XMH(bp+hJl`!!!N!!"!!L8)IqJ5!,,SB"
"!"3mJ,l[1)3!)%J"&B&J!!!!I(mEH(pJ"c5!B`!1(!!!5)"M!!"m!`+Z,!!!"d#
#!*!!1"X!!Aq$ihKm"!Fd1+%!1%J!RmPJ!!!!1f!!!%J!!'"rB!FdJ(m!$K`!!%L
!B`!!I!-#VL`!!!K!JJ"!1"X!!Aq$ihKm"!Fd1+%!3%J!RieJ!!!!J'%!1$L"!%"
)!XXpJ%%!&&4J"Mp"JJ!3Xhd!!$[!!!&)!!!B1hX!!DJI!!KrB`FdI!-!!%'!rjK
r`r0iJ!%!D$JK!'"m#!1QZf(rl%k!!#!!!!!![b(rj(`)!UCmI"YiI*dMH*!!!3!
)P#(qF%J#bUQ!33!82)#qlcL%!#")!45*B!!!!(ar'hJl`!!!5!!#%(r!"c5!I`!
1(f!!5)!$!!!iQ`!S1'%!5(b!)K4)!+@jB!!!!)J"!%JS!!!!3B)"h)"r!!k!!`!
!I)$D&+J%!!!S!!!)3B%"a$KL,#48!"!kI'-!,RaT!kC1J!3JIm-(0$KM!!&rS!F
dI!-!!%##!C`iB3")1)3!#%[r%XeJ!!!!5!!"L$JH!!&rJq0iI!3(0$LK!'K)!*l
aB!!!!$KK!%JiJ3"S5rm5S@!!!!")!!&F1"i!!Aq$ihKm"!Fd5!#ID@!!!!")!Xi
4J%%!&(aJ"c9"JJ!B1'%!5$L#&3a,ra*TB!!!!%J!!53iB3")1))9%%[r%P9J!!!
!5!!"%$JH!!&rJq0iI!3(0%J!RaeJ!!!!5!,0aB""!"4mB!Fe3B)!'$KK!%JiJK8
-5rm5(@!!!!")!!$B1'%!5$L#&4",ra)*B!!!!%J!!-3i(J!"Ii2MH(`%"c3iS3"
!5!#GR@!!!!!l)!!!5!!!P(mM"c5!R`!1(d-!5)#%!!"m"0+Z,!!!"d##!(3lB`!
"Ii2MH(pN"c3iS3!i5!#GB@!!!!#!B3!i1)%!3%J#b4'!33!89'!'2d'#!%4rJq0
iIf3(0%J!RQPJ!!!!5!,0%B""!"4mB!Fe3B)!*)#r!!iiQJ!)1'%!5)!&!!"mJ#)
85rm4A@!!!!")!!!B1cN!!DJI!!Kr)`FdI!-!!%'!rf3lhJ!"U"m!#(r$"c4m!`!
!3B$pk)!"!CJi)3'3!,XKrq4m#!1Q6S!!)!!!!!#6iIrmI!J#TRbI)hL3!!%!#*3
Krm")!XJpJ%%!&$b![ZmiK!!J5!%5(@!!!!"ri!FdJ'-!$K`!!%L!B`!!I'-#&)!
"!%LSBrqm1#%!3(`)!kD$iIrm6S!!)!!!!!!!!!!!Nq(rr(`)!UCmRb0iN!!"!!L
8)Ir!5!,(hB""!"3mJ,l[1)3!)%J"%EeJ!!!!Iq3(0$J%rrq!J`!1('!!5)!%!!!
iB`!#I'!D&$L!!!*)!XY0J%%!&&4M"Mk!!3")1#%!3(`)!kD$iIrm6S!!)!!!!!#
rSIrdI!J#TRap'hL3!!%!#*3Krl")!XGYJ%%!&$b![ZmiK!!J5!%46@!!!!"mIaY
i1m!!!%J!!'4r`!FdJ(m!$K`!!%L!B`!!I'-#&+J$!!3X!!!%3B)!)%#!!"!X!!!
"3B)!&%J!!$!X!!!'3B)!#%J!!#3i(J!"Ik2VH(`%"c4)!*bKB!!!!$L!!2p)!XG
YJ%%!&$[H!!'S(`!)Im-(0(`$!!""J2q8J!%!@$JK!&#lSIrdI!J$TNk!!#!!!!!
!I!J#TRbQ+hL3!!%!#*3Krl!iS3!i11%!2%J#aRQ!33!8J!%!@$JK!&"m#!1Q6S!
!),pKrqam#!+Q1i*PF(aq'hL3!!%!#*3KrU")!XCjJ%%!&$b![ZmiK!!J5!%3@@!
!!!"mI4Yi1q!!!%J!!44ri!FdJ(d!$K`!!%L!B`!!I'-#&+J$!!!X!!!%3B)!E%#
!!"3X!!!"3B)!B%#!!#")!!$F,!!!#%'#!,4!J!$3,!!!"d#!!%4)!!$%1"m!!Ar
$mhKm"!Fd1+%!1%[rrcQ!B3!i+!-!!%'#!+5!(!!!+!!!!%##!!K)!!#85rm+q@!
!!!")!!#)Iq-(0$YM!!&r`r0iIf3(0%J!QeeJ!!!!1)%!2%J#iJ'!33!8J"`!!#J
!!!"!JJ!)5!!!&$KK!$`iJ!$r5rm1!@!!!!"r`r0iIf3(0%J!Qb&J!!!!1)%!2%J
#iGf!33!85!!!*)!F!!!S!!!!3))!#%J!!"3iB`!)1)!!(d[r$F&J!!!!1rm!!DJ
G!!Kri`FdI!-!!%'!rZ5!!3&S1#%"B,YKrqam#!1Q6S!!),qKrr4m#!+QI(dEH*!
!!3!)P#(rX%J#a3f!33!82)#qlcL%!#")!3lYB!!!!(ar'hJl`!!!5!!!@(r!"c5
!I`!1(!!!5)"M!!"mB`)8U!-!!#`!!!0!JJ!d1'-!!ML!!!C)!XKTJ%%!&&4J"Mi
S!!!"3))!'$JH!!&rSqYiI!3(0%J#dp'!33!81pi!!DJI!!Kr``FdI!-!!%'!rk#
!!3"B1#%!8,ZKrr4m#!1Q6S!!),qKrr4m#!+QI(dEH*!!!3!)P#(rX%J#a&f!33!
82)#qlcL%!#")!3ipB!!!!(ar'hJl`!!!5!!!@(r!"c5!I`!1(!!!5)"M!!"mB`)
8U!-!!#`!!!&!JJ!d1'-!!ML!!!*)!XHjJ%%!&&4J"Mp"JJ!F1"i!!AqMkhKm"!F
d5!,&TB""!"4)!!!B1pi!!DJI!!Kr``FdI!-!!%'!rk#!!3"B1#%!8,ZKrr4m#!1
Q6S!!),p"rqKm#!+QI(iEH(bI)hL3!!%!#*3Krk")!X1TJ%%!&$b![ZmiK!!J5!%
0L@!!!!!mJ%4*I(dEH$KN9%`iJ!2R5!,C%B""!"4mI"YiIm2cH%J#aFQ!33!8I(X
EH$Y!!!")!!#XId!(0)"p!!iF!!")J'-!!(aM!K5S!`!!,!!!!d##!)JiB`!#1)!
!!8J#aYf!33!89'!'2d'#!(!i'J!"Im2cH(`%"c3iS3!i5!#AK@!!!!!iB3!i1)$
rr6LJrre)!Xb4J%%!&(r$mhKrK10i1+!!!%J#ebf!33!81hX!!Ar$mhKrC0Yi1+%
!1%J!Ph9J!!!!Im2cH(pNfhKrjIYi5!#@d@!!!!!l@J!"U"d!#(p$"c4m!`!!3B$
r6(q$ihK)!Xq4J%%!&)!"!'Ji)3"JZd(rk(`)!kC1J!!J!!!!!,p"rqKm#!+QI(i
EH(bI)hL3!!%!#*3Krk")!X*TJ%%!&$b![ZmiK!!J5!%-5@!!!!!mJ%4*I(dEH$K
N9%`iJ!2R5!,AdB""!"4mI"YiIm2cH%J#a)Q!33!8I(XEH$Y!!!")!!#XId!(0)"
p!!iF!!")J'-!!(aM!K5S!`!!,!!!!N##!)JiB`!#1)!!!dJ#aCf!33!89'!'2d'
#!(!i'J!"Im2cH(`%"c3iS3!i5!#@4@!!!!!iB3!i1)$rrcLJrrp)!XY4J%%!&(r
$mhKrK10i1+!!!%J#eHf!33!81hX!!Ar$mhKrC0Yi1+%!1%J!PM9J!!!!Im2cH(p
NfhKrjIYi5!#9N@!!!!!l@J!"U"d!#(p$"c4m!`!!3B$r6(q$ihK)!Xj4J%%!&)!
"!'Ji)3"JZd(rk(`)!kC1J!!J!!!!!,q"rr"m#!+QI(`EH*!!!3!)P#(rS%J#`5f
!33!82)#qlcL%!#")!3X0B!!!!(ar'hJlS!!!5!!!P(qJ"c5!I`!1(!!!5)"M!!"
mB`)8U!-!!#`!!!K!JJ"`1'-!!ML!!!C)!X5*J%%!&&4J"MiS!!!"3))!9(qM"c3
l``!"Ii2MH(r%"c3iS3!i1-%!2$MK!%")!X#"J%%!&)"L%U")!X&pJ%%!&(aQ'hL
SS3!iN!$#&6KrJq0iIm3(0$MK!%")!X*pJ%%!&$Zp!!'S(`!)Ik-(0(`$!!""J2p
NJ!%!D$JK!'#lJIr`I!J$TNk!!#!!!!!![m(rq(`)!UCmIKYiI*mMH*!!!3!)P#(
r`%[rr[Pr`r0i5rrl`Ar$mhKrj2Yi5rrpTB!"!%Ji)3"!Zm(rq(`)!kC1J!!J!!!
!!!!!!!!!!!!![b(rj(`)!UCmHKYiI*XMH*!!!3!)9+!'2j3Kri"!JJ!F5!,6fB"
"!"4mB`FdIf!(0(`!'!""JJ*SId26H%J#`M@!33!8I(iEH%J#faQ!33!8J,i!!(p
$dhL!K3!)J!8!$*!!J3"%N!!"!%K)!VqCJ%%!&$L"!%4)!Xl9J%%!&(p$dhK)!Vq
"J%%!&$b![ZmiK!!J5!%*B@!!!!"mIaYiJ'-!#LJ$!!""JJ(i5!,$`B""!"5![`!
+If6EH$KK!$L!"3!!1+%!6*!!!3!i5rr[kAp$dhK)!VmaJ%%!&%J#fVQ!33!85!,
DbB""!"4mI4YiId26H%J#[a'!33!85!,DQB""!"4)!YV"J%%!&(am'hKr3p0i5!+
qmB""!"4)!YTjJ%%!&%J#fVQ!33!89(X'2Rp$dhK)!Vl4J%%!&%J#fPQ!33!85!,
DXB""!"5!J3!iI(SEH+J%!!"8!!Ir3B)!%+KK!%a)!XGCJ%%!&)"K!$LS!`!!9!!
(Hd'#!"#SB3"35!,(EB""!"5!B3!iU!-!!&3!"le"JJ!8Lb%!6RmMbhK)!XFeJ%%
!&)"K!$LS!`!!9!!%Bd'#!"#SB3"H5!,(5B""!"3iB3!m5!,0cB""!"5SB3"#U!%
!2UL"!$am!"S8J(i!!(`%!K5`!`!BU!%!2)"q!!#`!`!DJ'%!1+J$!!"8!!Ir3B)
!%+J"!%b!IJ!!X!-!5S"K!$LS!`!!9!!(Hd'#!"#S!3"3J(i!!,!$!&#!B3!iU!-
!!&3!"le"JJ!-J(i!!*XM!%b!B3!iU!-!!&3!"'0"JJ!3U!%!AS"q!!#`!`"1Ik2
VH%J#aP@!33!8Ii2MH%J#aRQ!33!8If2EH%J#aP@!33!8Id26H%J#aRQ!33!8J(m
!#NJ#aDf!33!8J!%!L$JK!)#l)IrNI!J$TNk!!##rBIrXI!J#TRal'hKmR#0iI,d
VH*!!!3!)P#(rS%J#[6@!33!82)#qlcL%!#")!3F9B!!!!$JG!!&mIaYiIf2EH(`
%"c3iS3"!5!#4H@!!!!!lS!!!5!!!I(qN"c4rJ!FdI!3!!%'#!'L!I`!1(!3!5)"
M!!"m!`+Z,!!!"d##!&!la!!"If2EH(r%"c3iS3!i5!#4-@!!!!#!B3!i1)%!3%J
#[1'!33!89'!'2d'#!#"rBpYiIm3(0%J!NMPJ!!!!1)!!!%J#bk@!33!81ld!!DJ
I!!KrS`FdI!-!!%'!rh`i(!!"If2EH(`%"c4)!*)&B!!!!$L!!!&)!XYaJ%%!&)!
"!'Ji)3"JZf(rl(`)!kC1J!!J!!!!!!!!!!!!!!!!Nq(rr(`)!UBli!!!N!!"!!L
8)Ik`L!-!!#J!!!""JJ"d1)%!2%[r!$eJ!!!!9'!'2d'#!'#!B3!m5!,#FB""!"3
X!`$rN!"K!$K!J3!-1!!!rj!!!3!iJ+%!1$L"!%'!B3!mQ+%!3)"M!!")!VqKJ%%
!&$KK!%!iJ3!i5!,2QB""!"5!B3!i-!2rrh`!'4"8(`BqIq2lH)!"!9Ji)3&3I!J
$TS2Krra1J!!J!!!!!!!!!!#rJIr`I!J#TRar'hL3!!%!#*3Krl")!VYYJ%%!&$b
![ZmiK!!J5!%&6@!!!!"mIKYi1i!!!%J!!,"rJ!FdJ(i!$KqJ!%L!!`!!I'$U&+J
$!!!X!!!%3B)!$#`!!!G!JJ#%1'-!!ML!!!9)!Vl"J%%!&&4J"Mp!JJ!JJ*i!$MK
p!#L!"!!!I'!D&%[rrXP8B!Br3B)!8(rMqhKrK10i1+%!1%[rlb&8B!Br3B)!'+L
K!$KrirYiIi6MH%[rrAP)!!!N1"`!!ArMqhKm"!Fd5!#3!&9J!!!!1)!!!8J#bF'
!33!81j`!!DJH!!KrJ`FdI!-!!%'!rdL!!3"B1#%!8,Z"rr"m#!1Q6S!!)!!!!!!
!!!!![f(rl(`)!UCmHaYi1k!!!C!!!3!)P#(qS%J#ZPQ!33!82)#qlcL%!#")!33
jB!!!!(ar'hJlJ!!!5!!![(q!"c5!R`!1('!!5)!%!!!iB`!#I'!D&$L!!!&)!Vh
"J%%!&&4J"Mp"JJ#-Ii-(0$[$!!&rBpYiIm3(0$LK!$Ji`3!m11%!3%J#ZEf!33!
8J'%!2$L"!%K)!XieJ%%!&)J"!%JS!!!!3))!6$KJ!rBiJ![#1+!!!6M!!!")!)K
*B!!!!(pMfhKra!Fd1+!!!%[rqD9rBpYiIm3(0$LJ!!!i`!!!5!,8!B""!"3lS!!
!5!!!'$ZF!!'S(`!)Ii-(0(`$!!""J2mmIk2VH)!"!@Ji)3&JI!J$TVYKrqa1J!!
J!!!!!,r"rrKm#!+QI(iEH(bI)hL3!!%!#*3Krl!iS3!i5!#0T@!!!!"r`r0iIq6
lH%J#b&@!33!81'%!1%J#`['!33!8J!%!@$JK!&#l`IriI!J$TNk!!#!!!!!!!!!
!!!!!!!#r`IriI!J#TRaq'hL3!!%!#*3Krm")!VSYJ%%!&(r$mhJiJ!!'5!#1E@!
!!!")!Vd9J%%!&(aJ"c9"JJ"N1q!!"dJ!!"Kr`r0iIq6lH%J#b!@!33!81rm!!Ar
J"c3X!!!13)(rj(r$mhK)!VVjJ%%!&%J#eL'!33!8Im2cH%J#ZZ@!33!8I'8EH$K
J!!!iJ!$r5!,6HB""!"4)!!!m1q!!"dJ!!"4r`r0iIq6lH%[rr[8lr`!"Iq!(0#`
!!!j!JIrSIm2cH%J#ZTf!33!85!,6KB""!"5!!3")1#%!3,["rrKm#!1Q6S!!)!!
!!!!!!!!![b(rj(`)!UD!`K+FI*iMH(ap'hJiK[rmN!!"!!Ji!!!%I!N$TT3Kri!
iS3!dJ'3!")3%!!L3!'8!"*3&!!K#!2r`J"i!!M[J!!"8!!BqI"X$H#`E!!P"JJ&
i3)!!%#`E!!K!J!!F5!!!L#`E!#"!J!#!,"X!(%#!!9K)!!"dIk2VH%J#ZI'!33!
8J'-!!+XM!#+V3`!JIb!(08'#!64r3`FdIb!(0(`$!!""JJ!-1"S!!A`D"c4rSqY
i5!+h5B""!"4)!XY4J%%!&(bDb&"mI"Yi1!3!!Ap$dhKrKH0iI!3(0%J!NZ&J!!!
!5!!!j(pJ"c3X!!!J3B!!b#`!!(p"JJ$!Ik2VH%J#Y[f!33!85!,,"B""!"4mI"Y
iIk2VH%J#Z9@!33!8J'-!!+XM!#+V3`!JIb!(0(p$"c4m!`!!3B)!+$YD!!&mHXK
31!-!!Ap$dhKrKH0iI!3(0%J!NQPJ!!!!5!!!#$YD!!')(!!!+!!!2d#!!$LEB3!
jId66H(q&ihJiB3!i5!#0r@!!!!#!(J!#9!!!,T!!(J!#J(i!!MJ$!+@3!"i!!NJ
!!#Jli!!"1'!!!8J#YAQ!33!85!!!&$[J!!%iB!!"5!+eCB""!"4rirYiJ!%!L$J
K!)"m#!1QZb(rj%k!!#!!!!!!!!!!!!!!!!#rJIr`I!J#TRam'hKmR50iI,iVH*!
!!3!)P#(rX%J!I49J!!!!9'!'2har'hK!JJ"-S"d!!#J!!!0!JJ"!Ii2MH%J#bFQ
!33!8I'!(0#`!!!j!JJ!SIi2MH(qNkhK,rrfe9'!'2har'hK"JJ!31!!!!,!G!!#
`(J!!Iq2lH)!"!&Ji)3"3I!J$TVZ"rr"1J!!JNq(rr(`)!UCm[bYiN!!"!!L8)Iq
`1+%!1$M"!$`ii3"!5!+e-B""!"5!B3!mIq6lH%J#Yc'!33!8J!%!@$JK!&#$iIr
mI!J$TNk!!#!!!!!![`(ri(`)!UBl3Q`81'#SY6YLE"BlJQS-1k*T$$[#D!b3!!%
!#*3KrS")!)mTB!!!!(ar'hK)!*,0B!!!!$KK!%")!VAKJ%%!&$KJ$k!iJ!!"5!"
`J@!!!!"Ai!BrI(NEH%'#!#`iB!!@5!,+FB""!"4mH"Yi1'$rldJ#dN'!33!81'$
rp%J#dM@!33!8Ib2,H(r&mhJiJ!!(5rrr'AmMbhKrTHYi1)!!$%[rr`Q)I!!!9'!
'2d'#!&3i!!!"Q'%!9,!"!$K)!!!JU'%!1(b&"c3iJ3"81!-!!6KJ!+@`!3!iI'3
TVUL"!$L)!3"8I)-(0(`$!!"!JIr8Ib2,H$LK!&3iJ!!15rrqVAmMbhK)!V3PJ%%
!&(q%ihK)!XK"J%%!&(mMbhJiJ!!"5!+eZB""!"5J'`!!9!-%2d'#!#!iJ3"85!+
eZB""!"4r)mYi1+%!9$L!!!P,rrjGL"S!!#J!!!""JJ"%Ib2,H$L!!!C)!)PPB!!
!!$L!!!&)!X,4J%%!&(mMbhK)!VBGJ%%!&(aP'hJiB!!!1)!!rdJ#cV'!33!85!!
!$(mMbhK,rrUCIb2,H%J#Xi'!33!85!+fHB""!"3iB!!q1)!!!%J#XYQ!33!8J')
5Q(mNbhJiS3"%1-%!1%J!Fr&J!!!!U!%!1#`!!!C"JJ!)5!!!2(mMbhJiJ!!'5!#
)d@!!!!"mI"Yi5!+hGB""!"3J!`!"I!3(0(q$ihK)!X)TJ%%!&(mMbhK,rrS9U'%
!1(aJ"c3X!!!"3B)!$#`!!!*!J[q-I'!(0#`!!!&!JJ#dIb2,H$L!!!P)!)KeB!!
!!(r%mhK)!XFKJ%%!&)JH!!!S!!!!3))!%$J!!!#`'`!!5!!!((r$mhJiJ3!m5!,
'JB""!"5!!3!mX"X!!(mMbhJiJ!!(5!#)+@!!!!"ra20i5!,'eB""!"4r)mYi1)!
!$%J!L!eJ!!!!Ik6VH%J#aVQ!33!8Ib2,H$L!!!C)!)IaB!!!!%J#YTQ!33!8I'-
(0(`$!0"m!"Ki9!!2rTJD!!"r)mYi5!+eFB""!"5!B3"!5!+eVB""!"4Ai!Br3B)
!($KJrrP)!Xq4J%%!&(m$"c4)!Xq&J%%!&%J!N!!PB!!!!$J!!!'SB3!iI!!(0(`
$!&"m!!!d9!2H2S!"!BJi)3'!I!J$TVX"rq"1J!!J[i(rm(`)!UBl`QJ-N!!"!!L
8)IkJ5!+eEB""!"3mJ("bI(mEH$L%C@Bi`3!i11%!2$Z!!!!iB)!!1+!!!8J#Y[@
!33!8I'!(08##!5`iB!!!5!+lmB""!"5SB3!i1-!!!B#"!$`iSLa)5!+`DB""!"4
mI4Yi1'!!!8J#ZmQ!33!8Ik!(0#`!rrp"JJ$XIk2VH%J#Y6Q!33!82'"69$KM8L-
iJ!I45!"5A@!!!!!S!`!!3B)!V$KK!%3iJ!I41+!!"8J#Xa'!33!8L!%!4#J!!!"
"JJ#-Im2cH$L"!%4)!)`eB!!!!$KK!%3iJ!I91+!!&dJ#XZ'!33!8U!%!4#`!!6&
"JJ!31!!!!*JH!!")!!"31'%!4$L!"p%iS!!+5!+bYB""!"5)!3"%+!!!!%'#!#!
iB3"%1)%!3%J#a'Q!33!8J!%!3$KLE"D`!`!!1'*X&$J!!!%lJ!!"Q!-!!(qMkhK
)!VX4J%%!&(rMqhK)!V4GJ%%!&(q$ihL!!3&S1#%"B(`)!kDlJIr`6S!!)!!!!!#
rSIrdI!J#TRbG)hKm[LYiI0mcH(qPkhL3!!%!#$L!!!-i`!!"P#(rX%[r`IPJ!!!
!I'!(08##!%5SI3!!1)%!1%J#`"'!33!8J!%!1*!!(`!!J'%!1%J#Yef!33!8N!"
q!!!iS3!i1)!!!+Kp!!#!hJ!!5rr%m@!!!!#!!3"B1#%!8,ZKrr4m#!1Q6S!!)!!
!!!#)j!!!1-3!!Ad$+K4)!!"FI!0!3%#"!!`iB!!!6S!!)&5%"Mj8i!BqI!3!3%#
#!$amD4YiI-ScH)L*!!!j+3!"L+S!!$P+!!&m"#K!3))!$&5!"Mp!J[rN9+!'2d#
#!!`iBrrr6S!!))L$!!!iB`!"9)!'2d##rj`iB!!!6S!!),q"rr"m#!+QI*dMH$L
#,'amI"YiI,mVH(cH-hL3!!%!#*3KrV!iB3!i5!'eZ@!!!!"rT1Yi1'%!1%J"YKP
J!!!!1'%!1$L#&44)!EB*B!!!!(q$ihKrjIYi1)%!1%[rrb9mIaYj3B)!&$KK!$K
)!E99B!!!!(rr'K3`(rrrNri!!(`!q4"8!`BqJ!%"@$JK!9"m#!1QZi(rm%k!!#!
!!!!!1!!!!*J%!!!iT!!"1-!!!%J!!!JiB`!"L!-!!#`!!#*!J[rd1'-!!8J!!"L
)!`!!1-B!!6KM!!'B"3!!1+8!!BJ$!!!X!!!L3),rj*M%!!"1J!!J!!!!!!!!!!!
!!!!!I!J#TMM!!!#3!!%!#$J!!!#8)Il!N!!%!!!iS3!j5!!!#$KM!!')!`!!I!!
(G#`!!$""J2r`,!!!18'"rqK)!!!BL!-!!$M'!!%iB`!"Q!8!!$LP!!')!`!!I!!
(G#`!!$""J!!-,!!!18#"rpLB`3!i1'%!1%J#`Bf!33!8J!%"5$JK!8"m#!1Q6S!
!)!!!!!"m#!+QN!!"!!Ji!!!!P#(rX*!!!3"!1)%!1$LK!%!i`3")5rrp3AaJ"c9
!JJ#d1!!!!)"K!%#3!!%!2$M"!$`iJLb)J+%!5%[rrLe8B!Br3B)!K)"K!$`iJ3"
%5rrr'B!"!%3X!!!"3))!E$L#E"3i!!!"J'%!3$M"!$bB"!!!1))XN!#!S3")5rr
pl94J"Mp"JJ!3J'%!2$L#D!a,rrjjJ'%!3$M"!$`iJLbBJ+%!5%[rrF98B!Br3B)
!()"K!$`iJ3"%5rrqXB!"!%3iBQ`@X!-!!+KK!$K,rlm0B!!!!)"K!%!S!`!!3B)
!$%J#Y&Q!33!8J!%!@$JK!&"m#!1Q6S!!))MM!!#*"!!!91!'2P8'"Mjm!$"!3)!
!#(`'!hJj)!!"5!!!,(bM5+jm"%LZI!8!3%#!!!`iB2rr6S!!)%#"!!`iB!!"6S!
!)$NT!!&m#6!!3)(re&6M"Mj9!!BqI!-!3%#!!!`iB2rr6S!!)(`$!&"8!!rqI!-
(0%k!!#!!!!!![Z(rh(`)!UBl`Lc%1q*X&*!!!3!)P#(km%J#VlQ!33!82)"`FRa
l'hJiK'9Q1-%!1MMK!%!l3!!!1'#!!$LJ!!")!V&"J%%!&(aJ"c9!JJ,S1b!!!%J
!!"ar)!Fd9!!S0$KK!Q3iJ!!!I)-"VMXj!!&r)!Fd,!!!&%'!rq!iB!!!5!+f%B"
"!"5SB3!k1-!!!B#"!%!iSLbN5!+ULB""!"4mI"Yi1'!!!8J#YHQ!33!8Ii!(08#
"!6JmB'&X1'0TFdJ#b''!33!8I(FEH$XJ!!&)!!$d2'"KE(mNbhJiBfPc5!,)@B"
"!"4mH"Yj3B)!e(m%`hJiS3%F1-%!1$KJ!!")!XK4J%%!&(aJ"c9!JJ#dI`2$H$L
"!$`iS3"%1-%"C%J#b%Q!33!8I`2$H%J#Yp@!33!81`%")Rm%`hJiB3")5!#')@!
!!!"r!m0i1))9'%J!KK&J!!!!I`2$H$L"!%K)!)8aB!!!!(m$`hKra20i5!#&)@!
!!!!iB3%F5rrp"Ap!dhKm!!Fd9!!S0$KK!Q4mB`)81)%"C$YD!!&)!)A&B!!!!(p
!"c3X!!!83B!!&(q$ihK)!V80J%%!&%J!!AJl13!"Ib-(0(lJ"c4m!`!!3)(r"(q
$ihK)!V6TJ%%!&)JI!!!S!!!!3))"6$ZK!5)iJLcFIk2VH%J!K@PJ!!!!U+%!1ML
!!!#!!3"!1'%!X*1K!-+`S3$'X)%!c*!!!3$J5!+`XB""!"5SJ3!k1i%!ES#K!1!
i!!!!X)%!D(ai'hLSJ3"SN!#K!'U`J3%FN!#K!4k6J3$#X)%!aV!"!-a)!!$3U)%
!c$KK!,#!!3"U1Z!!!$L%!!'`J3$-N!!"!1")!V"9J%%!&(ai'hKr!!Fe3))!S)J
"!-j8!!Eh3B)!P$XJ!!")!!!`Ib!(0&3!+$3iB3*NIi6MH(aM!K4,rrc*I'!(08'
#!!`ki!!"5!!!'$Xj!!&r)`FdId!(0(`$!!""J2r)9Z!'2d##!%KrSqYi1))9'%J
!K(&J!!!!Ik2VH(q%ihK)!)14B!!!!(qMkhKra20i5!#$J@!!!!!iB3%F5rrlCBJ
I!!!S!!!!3))!$(m!"c9"J[m`If2EH%J#V1'!33!8L(m!!)!""4Ji)383I!J$TVV
Krpa1J!!J!!!!!!!!!!#6iIrmI!J#TM[J!!'3!!%!#*3Krm",rrb09'!'2d##!!a
,rrE4I(mEH(rMqhL!!3")1#%!3(`)!kD$iIrm6S!!),r"rrKm#!+QJ-)5G(bI)hK
mIKYi1)Err*!!!3!)1!!!#(`*!kD8)Ip`1+%!0)"N!!5%"!!)N!"P!!58"3!)3J$
rm+!%!!4r`r0iX!8!"%J"VX9J!!!!I'!(0$L!!!!iB!!!5!!!K(aT"c4mhNLZI)8
(0(eq8K48aJBk13%!1(c'&R"mb$#ZI2mU&(eH8K4mhbQZ1)3!"$KM!!0mhNLZL+X
!!Ac'"h48T3BfI+8QF&$&*VCmU#LZQ+F!!BM,!!')UJ!#I-B(G&5Pelj3a4DkI+J
SVTLR!!+)UJ!#9+8'[RbS++kBT`!$I!F(0$M!!!0mTc2@I+8aeRc&1&"mDJFdI+B
i8(`++!""J2pJ,!B!!RbM"c4"JJ!83)!!X#`'!!&!J!"S5!!!T(aM"c5)!3"iI4i
D&)LS!!!ii3!iI)-(0&5P"MTmT4C`I-FSVRbr'K4mhaQZL-J!!)KS!!&maJGd9'2
R2P$$*VCmCaLZQ'8!!BKS!!&8BaDkI'FBVTKP!!+B"3!$5!!!5(aS"c5)!3"iI(j
!VMMK!$KmK3Fd9'2f[Rc('+jmIbS8I0mTVRbq3+j8T5DfI+FSVTLM!!'B!`!#Q!-
!!dJ!!!JiK2rmI)!(0(ar!K3i!!!!Q!-!")!"!*Ji)3#3!(`)!kDl`Iri6S!!)!!
!!!#r3IrSI!J#TMaJF()lSQ`@1)0PCM[LD!`lB2rr1m*U$$KJJ!!iS!!!N!!"!!J
i!!!!P#(rB$Z"!$kB(`!!IiIMH,!G!!!i`3!m5!+VUB""!"4mB!Fe3))"K$YK!%)
iJLc`If2EH%J!J@eJ!!!!U'%!2(pPfhL!R!!!1-!!!8J#T4@!33!8I(XEH(pJ"c3
X!2rr3B)"5$b!58-mB%091i458$KM8P!iJ!#!5!"('@!!!!!S!`!!3B)!$)"M!!#
$J`!!1))Y#(q$ihK)!X+aJ%%!&#J$!!""JJ%%J'-!!)J$!!4m!!Ge3B)!p$L#,4K
rJq0i5!,#LB""!"4mHKYj3B)!h)"k!!"rj2Yi1+!"!$KM!!4)!UP*J%%!&$L#E"3
i!!!"Id26H*J%!!")!V**J%%!&$L#,5KrJq0i5!,#3B""!"4mHKYj3B)!+)"k!!!
iS!%!1)*T$$KM!!4)!UN"J%%!&(p$dhK)!V)0J%%!&$L#,6KrJq0i5!,#"B""!"4
mHKYj3B)!@)"k!!"ra20i1+!"!$KM!!4)!UM&J%%!&(p$dhK)!V(4J%%!&$M!!!&
)!!!FI-3(0(aq)+ii"3"91-B!!AaJ!RKm(L'ZL"i!!(c&"c4m"3!!3)(rh(pJ"c3
X!2rr3B)!%(pMfhK)!Up*J%%!&)JI!!!S!!!!3))!#%[rqp@)(`!!9"X'2d'#!,K
rB!Fd,!!!"d#"!%3i!!!(1')Y6*JI!!"rj2Yi1+!!!$M!!!")!V$*J%%!&&4J"Mq
EI`!!3B)!'(rPqhJiB!!"1)!!"dJ!Ir&J!!!!Iq2lH$L!!$T)!(qKB!!!!(aJ"c9
"JJ"8I(X(0)JI!!"mHrS81i%!3MLF!!&mZ`"31'-!!8J#Tmf!33!8L"m!!(q$ihJ
iJ3!iI"X!8*JF!!")!VHjJ%%!&)"K!$Ji'rrrQ"m!!,"p!!#!!3#S1#%!S,Y"rqK
m#!1Q6S!!)!!!!!!!!!!!!!!!!,m"rq"m#!+Q1q*S$(ai'hJlSQS-1m*T$(bC)hK
mZLYiI0XcH$Z!!!#3!!%!#*3KrU#)(`!!+!!!!%'#!13iJQ`8L!3!!#J!!!""JJ$
81))Y9$Z!!!&)!DTpB!!!!(mNbhJiB3!i5!"qM@!!!!!iB3!iI'3EH%J#U8@!33!
8I`2$H$L"!$K)!DT0B!!!!(mMbhKrj2Yi5!"qA@!!!!!iBQ`@S'-!!&4J"$p"JJ!
)X(S!!$J!!!#B'`!!L"i!!#J!!!""JJ"FL"d!!#J!!!""JJ"3Im6cH$KK!$K)!(i
CB!!!!$KK!$JiJK8B5!"p1@!!!!"rT1Yi1'%!1%J!I5PJ!!!!1'%!1(aN'hK)!UL
aJ%%!&(pNfhJiB3!i5rrk'Aq$ihL!!3&S1#%"B(`)!kDl!IrJ6S!!)!!!!!!!!!!
!!!!!!&4J"MiS!!!J1'!!!%'!!"!S!!"q3B%!#$KJ!!&8B`Bq6S!!)!!!!!!!!!!
!!!!!!)L$!!!iS!!!1!6rJ#J!!&C"J35%1))YA&3!%$TmK!!ZI)N$TNk!"#!i!!#
$Q!-!!$LJ!!&)!!4J1!!!KCJ$!!!iS!!"5!!%8$J!!)DB!`!!1+!!!8J!"%!i!!#
-Q!-!!$LJ!!&)!!3`1!!!NTJ$!!!iS!!"5!!%)$J!!*1B!`!!1+!!!8J!""!i!!#
8Q!-!!$LJ!!&)!!3!1!!!PCJ$!!!iS!!"5!!$m$J!!*QB!`!!1+!!!8J!!q!i!!#
FQ!-!!$LJ!!&)!!231!!!SCJ$!!!iS!!"5!!$`$J!!++B!`!!1+!!!8J!!l!i!!#
MQ!-!!$LJ!!&)!!1J1!!!TCJ$!!!iS!!"5!!$N!!i!!#RQ!-!!$LJ!!&)!!1!1!!
!U*J$!!!iS!!"5!!$F$J!!+QB!`!!1+!!!8J!!f!i!!#VQ!-!!$LJ!!&)!!031!!
!V*J$!!!iS!!"5!!$3$J!!+fB!`!!1+!!!8J!!c!i!!#ZQ!-!!$LJ!!&)!!-J1!!
!VjJ$!!!iS!!"5!!$%$J!!,#B!`!!1+!!!8J!!`!i!!#aQ!-!!$LJ!!&)!!,`1!!
!Y*J$!!!iS!!"5!!#i$J!!,@B!`!!1+!!!8J!!Y!i!!#fQ!-!!$LJ!!&)!!,!1!!
!ZjJ$!!!iS!!"5!!#X$J!!,qB!`!!1+!!!8J!!U!i!!$!Q!-!!$LJ!!&)!!+3!$J
!!-1B!`!!1+!!!8J!!S!i!!$%Q!-!!$LJ!!&)!!*`1!!!aCJ$!!!iS!!"5!!#B$J
!!-DB!`!!1+!!!8J!!P!i!!$(Q!-!!$LJ!!&)!!*!1!!!bCJ$!!!iS!!"5!!#-$J
!!0'B!`!!1+!!!8J!!L!i!!$9Q!-!!$LJ!!&)!!)31!!!eTJ$!!!iS!!"5!!#!$J
!!0LB!`!!1+!!!8J!!I!i!!$FQ!-!!$LJ!!&)!!(J1!!!hjJ$!!!iS!!"5!!"d$J
!!1#B!`!!1+!!!8J!!F!i!!$KQ!-!!$LJ!!&)!!'`1!!!iTJ$!!!iS!!"5!!"S$J
!!11B!`!!1+!!!8J!!C!!1!!!j*J$!!!iS!!"5!!"J$J!!1@B!`!!1+!!!8J!!A!
i!!$QQ!-!!$LJ!!&)!!&J1!!!jjJ$!!!iS!!"5!!"8$J!!1LB!`!!1+!!!8J!!8!
i!!$TQ!-!!$LJ!!&)!!%`1!!!kTJ$!!!iS!!"5!!")$J!!1ZB!`!!1+!!!8J!!4!
i!!$XQ!-!!$LJ!!&)!!%!1!!!lCJ$!!!iS!!"5!!!m$J!!1kB!`!!1+!!!8J!!1!
i!!$[Q!-!!$LJ!!&)!!$31!!!m*J$!!!iS!!"5!!!`$J!!2'B!`!!1+!!!8J!!,!
i!!$bQ!-!!$LJ!!&)!!#J1!!!mjJ$!!!iS!!"5!!!N!!i!!$dQ!-!!$LJ!!&)!!#
!1!!!pCJ$!!!iS!!"5!!!F$J!!2DB!`!!1+!!!8J!!'!i!!$hQ!-!!$LJ!!&)!!"
31!!!q*J$!!!iS!!"5!!!3$J!!2QB!`!!1+!!!8J!!$!i!!$kQ!-!!$LJ!!&)!!!
J1!!!qjJ$!!!iS!!"5!!!%$J!!2bB!`!!1+!!!AbM+hK1J!!J!!!!!)LM!!!i`!!
"5!!!)(c%"c4m!b#Z+!!!)%##!!`i!!!VI!-KVMM'!!&ma!FdI+!(0(`%!!"!JIr
B6S!!)!!!!!#rBIrXI!J#TRal'hJlJK8F1m!!!*!!!3!)P#(qX%J!!#JiiLkiIf2
EH$LL&5!iJ!!!1-!!!MN!!!C)!U0jJ%%!&(aq'hJX(J!!3)$rf(pMfhJl`!!!5!+
MGB""!"4mIaYi5!!!N!#!'`!!Ik$b&)Kp!!",rrU"9'!'2d##!(4rSqYi5rrkS94
J"Mp"JJ!-1pi!!8J!!'#)I3!!1)%!1%J!Ik9J!!!!L+%!1ApMfhL)!3!kIm6cH*L
m!!&rTHYiQ"`!!Rq(ihJi`!!"13!!!dJ#SZ@!33!8,!-!!%'!!!amIKYi5!!!%$[
H!!&)!!!)1pi!!A`Hq!""J2p`1m!!!%J!!#KrBpYi1+)9*$ML&5JiJ!!!1-!!!6N
!!!&)!U+CJ%%!&(aq'hJX(J!!3)$rf$KJ!!#!!3&B1#%"8(`)!kDlBIrX6S!!)!!
!!!!!!!!!!!!!!,k"rp"m#!+QJ@)56(b@)hJliQJ-I(8EH(bh+hKmf$0iI2NlH(d
D3hKp1dYiI9a6H$L,rr`lS"!!N!!"!!Ji!!"NI!N$TT3Kq$!iS34mJ'3!")3%!!L
3!'8!"*3&!!K#!2r`1!!!8,!"!$KrSqYi5!+M&B""!"4mIKYi5!+R3B""!"4mB!F
e3B)!%(qJ$R"rS!'85rrrf%J"12eJ!!!!IU5VH$KK!9a)!(DYB!!!!$KK!9amC"Y
i5!+KCB""!"4rj2Yi1'%!A%J!GSeJ!!!!IU5VH$KK")!iS3!i1-%#A%[rpi@)&J!
"I(3EH#`!!#p"JJ!81'%%J$L#&5a)!D)jB!!!!(l$XhKqa,0i5!+K%B""!"4qa,0
i1'%%J%J"SKPJ!!!!1))Z`$KK")")!D)*B!!!!$L#,X`iB35!5!'Kq@!!!!!iB35
!1)%"A%J"SHPJ!!!!9S!'2d'#!$JiB3*F5!'K4@!!!!!S!`!!3B)!*$L#,Y3iB35
!5!'K[@!!!!!iB35!1)%#A%J"SDeJ!!!!1))Zp$KK")")!D'GB!!!!(mNbhJiB35
!5!'KM@!!!!!iB35!1))9-%J"SAeJ!!!!1))[!$KK")")!D&YB!!!!$L#,c3iB35
!5!'KA@!!!!!iJLpS1'%%J%J"S8eJ!!!!1'%%J$L"!9a)!D%pB!!!!(l%XhJiB35
!5!'K,@!!!!!iB35!1))9)%J"S4eJ!!!!1))[I$KK")")!D%0B!!!!(m$`hJiJ3!
m5!+EPB""!"3iB3!mI'3EH%J#Rp@!33!81'%%J$L"!$a)!D$GB!!!!$L#,j!!1'%
%J%J"S-eJ!!!!IU1VH(kNUhK)!TqPJ%%!&+#K!$KqT+YiIdE6H$KK!ea)!6M9B!!
!!)!""()X!!!!3))!b$KJ!!'EB34m1!!!!*KK"(XiB30FNi%$E*!!!30S5!%kj@!
!!!#!!34b,!!!!%##!*JiB35!5!'Ic@!!!!"mC4Yi1'%$A$L"")")!6aTB!!!!)!
""()X!!!!3))!E$U!!!"AT33qI"3U&(`!`!""J!!-I"6!8&3&"$j8Y33r3B)!2(r
%mhKqTDYiI(HL&%J#R+f!33!89U8%2Rr%mhKqP+S81'%$A%J"2!eJ!!!!J!%%FL`
!!!""J[qX1'%$A%J"3a9J!!!!Iq2lH$L"!&a)!(2PB!!!!$KK!ea)!6ZCB!!!!$K
K!ea)!6NpB!!!!%J"0X9J!!!!+"i!!%'#!""r`r0i5!+J%B""!"5!B34bJ!%(f$J
K"p"m#!1QZS(rd%k!!##qiIrFI!J#TRam'hKmQb0iN!!"!!L8)IZ!5!+B+B""!"3
mJ,l[1)3!)%J!iJPJ!!!!I(dEH)"M!!j)!TaaJ%%!&$KJ!!")!U1GJ%%!&(ar'hJ
iB3*-1)!,`MLJ!!G)!TReJ%%!&$KK!8`iJ![#1+!!#%J#QH'!33!81'%!6$L!#m)
iS!!*5!+CcB""!"3l`!!!5!!$S(r!"c5!I3!1(d!!5)"M!!"r!p+Z1Z!!!(m!"c3
X!!!(3))!)(q$ihKra20i1+%!1%[rble8B!Br3))!#$VJ!!%i'2rp9!!%2LJ!!!&
@p`Bq3)%!'(m!"c3X!!!)3B)!$&EJ"Mp"JJ-d1')9)%J"RH&J!!!!I'8EH(rNqhJ
iBK8J5!+Y"B""!"4mH4YiIb!(08##!bL![3!11(S!#ArNqhL!"3!!I+$5&)LP!!K
mB"S85!+XeB""!"4mH4YiIb!(08##![L)!3*-9!8'2d'#!#"rj2Yi1'%#68J#V+f
!33!8I(NEH(mJ"c9!JJ,3I`!(0#`!!!G"JJ&-3)!!(#`!!!4"JJ$%3)!#P#`!!!0
!J!!85!!#L#`!!!P!J!+!5!!"U$JH!!&rJq0iI!3(0$LK!da)!'YpB!!!!)J"!d`
S!!!!3B)#@$KK!d`iJ!!Q5!"ai@!!!!"mGaYi5!!!3(lMZhJiS30-1)!!!8J!FJ9
J!!!!IZ5lH$KL&63iS30-5!"YX@!!!!!iB30-1)!!*NJ!FD&J!!!!I(FEH(lJ"c9
!J[r!L+%$6(rNqhJiB3005!+VfB""!"4mH4YiIb!(08##!Ia)!!(B1"i!!Aq$ihK
m"!Fd5!"VI@!!!!")!TSPJ%%!&(aJ"c9"JJ!`L!%"6&3&"Mp"JJ'SIq6lH$KK!8e
)!UZ*J%%!&(aj'hKr)!Fe3))"V%J!!BL)!3"-9!8'2d'#!Aarj2Yi1'%!68J#Uef
!33!8I(NEH(mJ"c9!JJ'!5!!"A&EJ"Mp"JJ&81"i!!Aq$ihKm"!Fd5!"Uq@!!!!"
)!TQKJ%%!&(aJ"c9"JJ!`L!%"6&3&"Mp"JJ%NIq6lH$KK!8e)!UX&J%%!&(aj'hK
r)!Fe3))"+%J!!35)!3"-9!8'2d'#!2Krj2Yi1'%!68J#UYQ!33!8I(NEH(mJ"c9
!JJ$m5!!!f$JH!!&rJq0iI!3(0$LK!%4)!'P*B!!!!$XJ!!")!!#SIb-(0)#G!!i
I!`")J)3!!(`%`UiX!!!(3))!L$VM!!&rJq0iIZ3(0$LK!$a)!'N0B!!!!)"K!$`
iJ3"%5!+8[B""!"48B!Br3B)!@(q$ihKqj!Fd5!"U&@!!!!")!TLpJ%%!&(aJ"c9
"JJ!iJ,d!$MKi!!Prj2YiJ!8!!(bJ`K5)T3!)I'!D&%J#UKQ!33!8I(NEH(mJ"c9
!JJ!m5!!!'$Xj!!'S(3!)Ib-(0(`$!!""J2p31pi!!DJG!!Kr``FdI!-!!%'!r&K
rirYi5rrfVAaj'hL!I3!15!+F-B""!"4r)!Fe3B)!#$[J!!!S'`!!3B)!#,-l!!"
rirYiJ!%%L$JK")"m#!1QZZ(rh%k!!#!!!!!!!!!!!,lKrpam#!+QJ-)5*(bG)hJ
l`QF8I(`EH$L'rrb3!!%!#$J!!#"m#31QP#(lN!!iS3-iJ'3!")3%!!L3!'8!"*3
&!!K#!2r`J')5)$J!!#"m#31Q1+%#1$L$rrb!C!!%K!3!#*!!C3!%P!8!#%)!rr!
iBQX81!!!)(`*!kBiS3%i1)2rr)"N!!5%"!!)N!"P!!58"3!)3J$rm$VL,jJl)Lq
J1f)[U$Y#,l4,rqb0J(i!!#J$!!""JJ!85!+5rB""!"4)!V"PJ%%!&(qMkhK)!T,
TJ%%!&%J#X&'!33!85rrGUAai'hKrSqYi5!+5cB""!"4)!TA&J%%!&)"q!!!S!`!
!3B)!&%J#NV'!33!85!+9UB""!"4A!!Br3B)$9$KK!$K)!T1&J%%!&%J!EreJ!!!
!1'!,eML!!!!iS2rr5!+6XB""!"4mIKYi5!+6[B""!"4r`r0i5!+5BB""!"4)!'Q
CB!!!!(r$mhK)!T*0J%%!&%J#P8@!33!8Im2cH%J#P9'!33!81'!!!%J#RFf!33!
8I(mEH%J#RGQ!33!8I(JEH(m!"c9!JJ)XIZ1lH%J"Q+PJ!!!!I'8EH(lMZhKrj2Y
i5!+RcB""!"4mH"YiI`!(08##!J#)[!$dIq6lH$Km!29)!UHYJ%%!&(ai'hKr!!F
e3))"i(mMbhK)!CKGB!!!!(aP'hKr)mYiIq6lH%J#Ti'!33!8I(JEH(m!"c9!JJ'
dL,`!Y(rNqhJiI!#e5!+RBB""!"4mH"YiI`!(08##!C4rBpYi5!'B%@!!!!"mC4Y
iIf2EH(rNqhK)!UFeJ%%!&(ai'hKr!!Fe3))"D)JF!63S!!!!3B)!'$KK!$`iR!%
d5!"XK@!!!!")!!!B1'%!2$L!#m)iS!!&5!+6,B""!"3iB3!m5rrcJBJ"!$a8"3B
r3B)!)(rNqhJiB3!p5!+QdB""!"4mH"YiI`!(08##!34r3p0i5!'AJ@!!!!"mC4Y
iId26H(rNqhK)!UDPJ%%!&(ai'hKr!!Fe3))!f(qMkhJiJ!!!5rriFAah'hP"JJ"
!5!+9$B""!"4qilYiIq6lH%J#VRf!33!8I(JEH(lMZhK)!TM&J%%!&(lMZhK)!Tf
aJ%%!&(m!"c9!JJ#)Iq2lH%J#P-f!33!8Jam!!$KJ!!T)!T[eJ%%!&(ah'hJiJ!!
!5!+EcB""!"4rirYi5!+@XB""!"4mCKYiI`A$H(lSZhJiB3-m1)%#2$MK!6`j)!!
"18!!!%[rp"&mH!Fd,"McUN##!!Jl!!!!Iq2lH%J#Q$Q!33!8IZ1lH%J#R5@!33!
8+"m!!%'#!""rirYi5!+G%B""!"4r`r0i5!+6&B""!"5!B3!i5!+68B""!"3iB!!
r1)!!!%J#Mb'!33!85!"Z#@!!!!"r!`Fd,!2rp8'#!&4r!!Fe3B)!,#`$rrp!JJ!
)1`$rpAm'`hJiB!2f1)!,`MLJ!!*)!&i"B!!!!%J!!#3iB!3@1)!,`MLJ!!3i`!!
!5!"Gj@!!!!")!!!)1`$rpAm!"c4m!!!d9!2H2S!""(Ji)34`I!J$TVVKrpa1J!!
J!!!!!,q"rr"m#!+QI(`EH$[!!!#3!!%!#*3Krk")!T&KJ%%!&(ar'hJlS!!"5!!
!C(q$ihKrT1Yi1+%!1$M"!$`ii3"!5!+1XB""!"5S!3!i,!!!"%'#!!`X!!#!3))
!'(q$ihKrT1Yi5!+GlB""!"4)!!!FU)%!4(r!"c4mJ`FdI!-!!%#"!!KmRL0i1ld
!!AqM"c4ri!FdI!-!!%#"rj4r`r0iJ!%!D$JK!'"m#!1QZi(rm%k!!#!!!!!!!!!
!!!!!!!#rJIr`I!J#TM[J!!@3!!%!#*3Krl!iB3!m5!+21B""!"3iB![-1)!!!$L
Jrrp)!SpYJ%%!&(ap'hK)!SpjJ%%!&(qMkhK)!SiGJ%%!&%J!C99J!!!!Ik2VH%J
#MJQ!33!85!+4!B""!"3l`!!!5!+00B""!"4rSqYi1)!!!8J#Mj@!33!8Ik2VH$L
!!!9)!'0eB!!!!$L!!!&)!TcKJ%%!&$L"!$JiB!!!5!+3!1Q!33!8U!%!1#`!!!*
"JJ!`3)!!%#`!!!&!J!!F5!!!J#`!!!K!J!"i,!!!"8#!!"a)!!"X1m!!!8J!!'3
l`!!"1q!!!%J!!&Jli!!&5!!!*(qMkhKrj2Yi5!"Lr@!!!!!iJ!!!5!+FDB""!"3
lr`!"Iq!(0#`!!!G!JIrBU)%!1(qMkhK)!',4B!!!!$L!!!&)!T`pJ%%!&+[K!$K
A`!Br3B,r9(qMkhK)!T!!9B""!"4)!UQ&J%%!&(aq'hK)!!#iIm2cH%J#U2Q!33!
8I(dEH%J#M1@!33!85!+TGB""!"48B!Br3B)!J%J#PR@!33!8I(`EH(qMkhK)!Si
0J%%!&(qMkhK)!SbaJ%%!&%J#R5Q!33!8Ik2VH%J#M*f!33!85!+S*B""!"4rK10
i5!+T1B""!"4rSqYiIi6MH%J#U8'!33!8Ii2MH%J#PR@!33!8Ik2VH%J#M''!33!
85!+FmB""!"4r`r0i5!+T,B""!"4mIKYi+"i!!%##rdL!B3!m5!+2aB""!"4rirY
iJ!%!@$JK!&"m#!1QZi(rm%k!!#!!!!!![i(rm(`)!UD!SK))I(`EH$[#9Z'3!!%
!#*3Krj!!J)8!!$KK!$LJ"3!%N!#"!$b`!3"!5!+-dB""!"4rJq0i5!+0*B""!"4
rJq0i5!+,bB""!"3iJ3"-5!+,eB""!"4rJq0i5rrmNBJH!!#`B3"3+!!!!%'#!"`
iB3"%5!+8XB""!"3iB3!m5!+8[B""!"3iB3"-5!+Y+B""!"4mI4Yj3B)!R(q$ihK
)!SYYJ%%!&$L"!%a)!TUTJ%%!&(q$ihK)!SY9J%%!&%J#MNf!33!8Ii2MH%J#MPQ
!33!81'*ICSJ$!!!S!!!!3B)!6(q$ihK)!T[9J%%!&%J#V0f!33!8I(mEH(q$ihK
)!TZpJ%%!&%J#V-@!33!81+%!6(rNqhKmTLYi11!!!$N!!!")!U,TJ%%!&%J#V,Q
!33!8L"i!!#J!!!""JJ!31'%!4%J#NrQ!33!8J'%!1%J#MNf!33!8Ik2VH)!"!(J
i)3"`I!J$TVZ"rr"1J!!J!!!!!!!!!!!!!!!!Nq(rr(`)!UCmIaYjN!!"!!L8)Iq
`N!#"!'b3!+%!F%'#!-5!h`!!1!!!!i"Q!!+!aJ!'N!"K!$L3!)%!3+KK!$U3!+%
!4+MK!%#SJ3"%N!$"!$amKb"3U+%!3Rc%!pDSJ3"'U!%!2Rc'"c4mac)8I)8J8,$
"!%4mKJFdI+-!8+L"!%4m`$0iI'FJ8(`&!!"mC`Fd3)!!#(bQ"c5SJ3!iI1!(0+K
K!$amC"K3I!-!!%#!!!KmC`Fd1'%!3$L!!!!iS!!!5!+8$B""!"4rirYi1)%!3%J
#R,@!33!8Iq2lH%J#Um'!33!8J!%!@$JK!&#$iIrmI!J$TNk!!#!!!!!!!!!!!!!
!!!#r)IrNI!J#TRam'hKmR50iI,mVH(cC-hKmqMYiI4Y$H(dq5hL3!!%!#*3Krk"
)!TN0J%%!&&IJ"MiFB!!'1!-!!Rqr"c4m!2K3Ii2MH(`%"c4)!TZ*J%%!&(qNkhJ
iI!!$5!+BfB""!"4A)!Bq('!!"MJ$!!*m!2K31(`!!h`%"c4)!TYCJ%%!&(qNkhJ
iI!!'5!+BUB""!"4A3!Bq('!!"MJ$!!*m!2K31(`!"R`%"c4)!TXTJ%%!&(qNkhJ
iI!!*5!+BHB""!"4AB!Bq('!!"MJ$!!*m!2K31(`!#A`%"c4)!TVjJ%%!&(qNkhJ
iI!!-5!+B5B""!"4A`!Bq('!!"MJ$!!*m!2K31(`!$(`%"c4)!TV*J%%!&)!"!'J
i)3"JZb(rj(`)!kC1J!!J!!!!!,pKrqam#!+QI(`EH)$L%J4mR50iI,iVH$KJ!!!
li!!"N!!"!!L8)IqJJ-F!!)#R!!5!K`!)J!F!$*!!`3!iN!#K!$b3!)%!3*!!!3"
%5!!!*(rJ"c4mRJ#Z0!6rd%'!!"!X!!!*3B%!#(aM!K3lr`!"L"i!!(rN"c4m"!!
!3)(re$L!!!Tm!b2@I!!KeRaJ'&&"JJ!))'-!#ML"!$K)!SQ4J%%!&(r$mhJiJ3!
i5!"L1@!!!!"rJq0iIk6VH%J#Pe'!33!8Ik-(0$YMrrKrJq0iIf3(0%J#QGQ!33!
81q!!!6ZF!!0)!!'BIq!(0(aq!+ii!rr3+!!!#8'"!B!iBLr!9!!31RaM!#jmD31
Q6S!%)(q$ihKrT1Yi1+!!!6M!!!%ii!!!13!!!$NJ!!",rrfT5!!"4(q$ihKrT1Y
i1+!!!$M!!!!ii!!!13!!!6NJ!!&,rrf&5!!")(q$ihKrT1Yi1+!!!$M!!!!ii!!
"13!!!$NJ!!&,rreK5!!!r(q$ihKrT1Yi1+!!!$M!!!!ii!!"13!!!6NJ!!",rrd
p5!!!f(q$ihKrT1Yi1+!!!$M!!!%ii!!!13!!!$NJ!!&,rrdC5!!!Y(q$ihKrT1Y
i1+!!!$M!!!%ii!!!13!!!6NJ!!",rrce5!!!N!"rJq0iIk6VH$LJ!!!i`!!"11!
!!6N!!!!j)!!!5rrmd8J!!'arJq0iIk6VH$LJ!!%i`!!!11!!!$N!!!!j)!!"5rr
mV8J!!%KrJq0iIk6VH$LJ!!%i`!!!11!!!$N!!!%j)!!!5rrmL8J!!#4rJq0iIk6
VH$LJ!!%i`!!!11!!!6N!!!!j)!!!5rrmC6ZF!!mlr`!"L"i!!(rM"c4m!`!!3)(
qB(q$ihKrT1Yi5!+9HB""!"4rJq0iIf3(0%J#Q!Q!33!8J!%!D$JK!'#lBIrXI!J
$TNk!!#!!!!!![b(rj(`)!UCmH4Yj1d!!!C!!!3!)P#(qN!#3!+%"N!#3!)%"M+Z
K!C!!Um%"NU[K!Bj"JJ+)L"N#0#J!!!"!JJ!F1(N!D$L"!$K)!TNpJ%%!&$Y!!!"
)!!!NL"N!+#J!!!""JJ!31!!*a*!!!3!i5!!!$$J!#LL3!!%!1)!"!$Km!`Fd5!+
F6B""!"4mI"Yj3B)!$%J#NM@!33!8+"`!!%'#!Kb!r!!!1'%!4$L!!!#!a`!#1+!
!!)!(!!D3!-%!4*!!!3")U3%!4UMK!%US`3"%U!%!5(cS1&"mq`FdI!B!8(`("c4
rCYYi5!+1qB""!"5SJ3'-Ik-(0$J!!!0mC"K3I!-$eR`&"c4ri`FdIm!(0(`$!&"
rC!FdI!3!8(`!$R"m!!'8I!3(0$KK!%4)!SG0J%%!&(q$ihJiJ3"%5!+AAB""!"4
A3!Br3B)"D$KJ!"9)!Sd4J%%!&)!"!$JX!!R%3))!E$KJ!!C)!SdTJ%%!&$L#,qJ
iB3"-5!"IJ@!!!!!iB3"-1*N!+%J!AU&J!!!!1'%!6$L!!!")!UBaJ%%!&+L"!%D
SB3"%1)3!b$J$!'KmJ`FdI!3(0%J#NjQ!33!81'%!6%J#Nk@!33!81'!!$%J#M-'
!33!81'%!6$LC!M4)!&mCB!!!!$KK!%`iJ!!!5!+PfB""!"5!B3"%J!%!1*!!B3!
mJ)%!5#`!#F5SB3!qN!#"!%!i!`$EX!%!2N##!"#SB3!q1!-!pE!"!%+S`3!m1'%
!6BL"!%`iS3!m1!B!Pl!"!$`i`!!!U1%!2$J(!&U`!3"!5!+-RB""!"5!!3!i,!!
*a%##!$3iB3"-1*N!D%J!ASPJ!!!!U)%!4MLK!%bSB3"%1)3"3MJ$!2pmJ`FdI!3
(0%[rqV8iB!!"5!+,aB""!"3iB!!*5!+,kB""!"4rJq0i5!+3!#f!33!8J!%"H$J
K!A#l)IrNI!J$TNk!!#!!!!!!!!!!!,m"rq"m#!+QI*`MH(al'hL3!!%!#*3KqT!
!U)3!!$J%!"jm(3Fd5!+#VB""!"3mJ,l[1)3!)%J!c)eJ!!!!I(mEH)"M!!j)!SE
eJ%%!&$KK!N`iJ![#1+!!"dJ#K)Q!33!81'%"6$L!#m)iS!!)5!+%GB""!"3iB3"
-1)!,`MLJ!!P)!S4KJ%%!&$[!!!")!!+%Im!(0)"r!!iI)!")J'-!!(m$bUil3!!
!I`!(0#`!!!G!JJ!JIf2EH(r%mhJiS3!i5rqf894J"Mp!JJ!)1d!!!6JBrre8!!3
q+!!!!9GD"Mj!J3!BI`!(0#`!!!K"JJ!-9d!'2d'#!KL![`!11*N!#$KK"%b!"3!
!I)!L&%J!A49J!!!!1'%%6$L"!Na)!&`eB!!!!(m!"c3X!!!(3B)!T%#!!"`X!!!
%3B)!6%#!!DJX!!!$3)!!&%J!!C`X!!!*3)!"P%J!!0!i(J!"If2EH(`%"c3iS30
-5!"@D@!!!!!iB34-1)%$6%J!@pPJ!!!!5!!"C$JH!!&rBpYiI!3(0%J!9Z&J!!!
!5!+&LB""!"4mB!Fe3B)!'$KK"%`iJ3&-5!"ES@!!!!")!!%X1'%%6$L"!%a)!&Z
0B!!!!%J!!4KA3!Br3B)"%$JH!!&rBpYiI!3(0%J!9SeJ!!!!5!+&0B""!"4mB!F
e3B)!'$KK"%`iJ3&-5!"E6@!!!!")!!$B1'%%6$L"!%a)!&XjB!!!!%J!!-3i(J!
"If2EH(`%"c3iS3"%5!"9$@!!!!!l!!!!5!!!P(m$"c5!R`!1(d-!5)#%!!"m"0+
Z,!!!"d##!(3l)`!"If2EH(mN"c3iS3!m5!"8d@!!!!#!B3!m1)%!4%J#J)'!33!
89'!'2d'#!%4rBpYiIb3(0%J!9GPJ!!!!5!+%JB""!"4mB!Fe3B)!*)#r!!iiQJ!
)1'%%6)!&!!"mJ#)85!"DM@!!!!")!!!B1aJ!!DJI!!Kr!`FdI!-!!%'!rf5SI!!
#Ik6VH$J$!!Tm!`Fd5!+2KB""!"3iB34-5!+2NB""!"3l[3!H1pi!!DJI!!Kr``F
dI!-!!%'!rA5!!39i1#%&F,X"rq"m#!1Q6S!!)!!!!!!!!!!!!!!!!,q"rr"m#!+
QI(iEH(bI)hKm[#YiN!!"!!Ji!!!!P#(r8*J"!$JiB3"%N!!"!%#3!!%!2%J#J&'
!33!81'%!5%J#Rr@!33!8,!-!!%'#!$!iB!2f1)!$m6LJ!#Fi`!!!5!"0a@!!!!#
!B3"%5!+#ZB""!"3iB!!!5!!#M$KK!%")!Tr0J%%!&(ap'hP!JJ!JJ)%!3#J%!!"
"JJ!8J'%!5%J#Rm@!33!8I(dEH#`G!!"!JJ!81'%!2%J#Rm@!33!8I(dEH#`G!!"
!JJ!JJ)%!2#J%!!""JJ!8J'%!5%J#RlQ!33!8I(dEH#`G!!"!JJ!XJ'%!5$LK!$L
!J3"!5!+IXB""!"5)!3!iI(dEH#J!!!"!JJ!)1k!!J#`G!!"!JJ!`J'%!5$M"!$L
!J3!mJ+%!3%J#Rj@!33!8L!%!1(ap'hJS!!!!3))!#$ZJ!)!X(3!!3))"9)"K!%K
)!Tq&J%%!&#`$!!"!JJ&!J'%!5)#"!$b!S3"!5!+IJB""!"4mI4Yj3))"*)"K!%!
iJ3"B5!+IJB""!"4mI4Yj3))!')"K!%K)!TmpJ%%!&#`$!!""JJ!8J'%!5%J#Rh'
!33!85!!!k-KK!&KAJ!Brb%%!B-JK!'MmB"JHb!%!F2a!%"lm)!JHr!!!(YKK!*!
!f%%!L)#K!*6B)3#!J)%!M0J"!(L!B3#%J!%!I,#K!%b`J3"1X'%!8,!"!&*"JJ"
BU)%!8(rMqhJi"2r%X!%!8%[rm9emB"YiJ'%!5)#"!%"m(`0i1+!!!%J#Rd@!33!
8J)%!6(rMqhL!S3"35rrbXB#"!%ar`r0iJ+%!8%[rpj&)!!!NJ'%!5$LJ!!#!J3"
!5!+I$B""!"4rirYi1)%!6%[rqMf!B3")5!+I2B""!"5!B3")5!+HLB""!"5!B3"
!+!-!!%'#!!a)!TmeJ%%!&)"K!$`S!`!!3B)!$%J#Rb'!33!8,"d!!%##!"5!B3"
)5!+H"B""!"4mI4YiJ'%!5%J#R[f!33!8J'%!4%J#J$'!33!8Ik!!0&3$hMk!!3#
i1#%!X,Z"rr"m#!1Q6S!!)!!!!!!!!!!!!!!!!,qKrr4m#!+QI(dEH(bH)hJli!!
!N!!"!!L8)Iq`5rrYpAaJ"c9"JJ"XI'!(0#`!!!C"JJ!d3)!!%#`!!!9!J!!85!!
!8#`!!!K!J!")5!!!-(qMkhKra20i5rrSDAar'hK)!!!`Ik2VH(r%mhJiS!!"5rr
mFAar'hK)!!!BIk2VH(r%mhJiS!!!5rrm@Aar'hKrirYiJ!%!@$JK!&"m#!1QZk(
rp%k!!#!!!!!!!!!!!,r"rrKm#!+QI(iEH(bI)hL3!!%!#$J!rrq8)Iq`X!%!1%J
#IIQ!33!8I'-(0(rJ"c4m!"J!3B%!)(r$mhKrj2Yi1+%!1$M"!$`ii3"!5!*l4B"
"!"5SB3!iJ!%!@$JK!&"m#!1QZm(rq%k!!#!!!!!![i(rm(`)!UCmIaYiI*`MH*!
!!3!)P#(rX%J#Mc'!33!8I(iEH(rMqhK)!Rf"J%%!&&H!"MpmI4Yi1i!!!%'#!2J
i([rrI"i(0%J!!'4rirYiIm6cH%[rrcemB!Fd,!!!%%##!%KrirYiIm6cH%[rV,9
8B!Br3B)!0(rMqhKra20i1+!!!%[rZXerirYiIm6cH$LJ!!!i`(d!5!+9+B""!"3
lJ!!"5!!!&$[Hrrpr`!Fd,!!!!8#!rjKAJ!Br3))"F(qqkhK)!!"JIq2lH(r%mhK
,rrl"I'!(0#`!!""!JJ"%Iq2lH(r%mhK,rk`j9'!'2d'#!$"rirYiIm6cH$LJ!!"
,rlT4Iq2lH(r%mhJiS!!!1-"p!%J#P+f!33!85!!"%$[Hrrpr`!Fd,!!!!8#!rja
)!!$m1"i!!A`H"c4)!!"NIq2lH(r%mhK,rrj*I'!(0#`!!""!JJ")Iq2lH(r%mhK
,rk["9'!'2d'#!$4rirYiIm6cH$LJ!!",rlRCIq2lH(r%mhJiS!!!1-"p!%J#P$@
!33!81i!!!8J!!"JlhJ!"Im-(0(qJ"c4m!`!!3)(rP&H!"Mp!JJ"i1m!!!8J!!'"
rirYiIm6cH%[rrFPmB!Fd,!!!%%##!%4rirYiIm6cH%[rUd&8B!Br3B)!-(rMqhK
ra20i1+!!!%[rZ9PrirYiIm6cH$LJ!!!i`(d!5!+6YB""!"4)!!!B1pi!!Ar$"c4
rS!FdI!-!!%#"rjL!!3"B1#%!8,Z"rr"m#!1Q6S!!),pKrqam#!+QI*`MH(al'hJ
l`!!!N!!"!!Ji!!!!P#(rX,!%!!")!RY&J%%!&(ar'hJlS!!"5!!!3(pMfhKrT1Y
i5rrp%AaJ"c3X!!!33))!*(pMfhKrT1Yi5rqUL94J"Mp"JJ!3Xl`!!$[!!!&)!!!
B1ld!!AqM"c4ri!FdI!-!!%#"rlKA``BqJ!%!@$JK!&"m#!1QZf(rl%k!!#!!!!!
![i(rm(`)!UCmI"YiI*dMH$[!!!#3!!%!#$J!!!#8)Iq`N!!"!$`iB3!m5!+5dB"
"!"4mI`Fe3))!J)"K!$arK10i1+%!1%J#NXf!33!8I(m(08##!'5!B3!i,!-!!%#
"!&K)!S1aJ%%!&(aq'hK)!RaYJ%%!&)"K!$arK10iJ0i!!$LK!$K)!T+PJ%%!&(a
r"c4r`r0i5!+!(B""!"4ri!Fe3B)!&(r$mhK)!S8"J%%!&$[!!!#6h3!!Iq2lH)!
"!&Ji)3"3I!J$TVZ"rr"1J!!J[f(rl(`)!UCmRb0iJ+)4q(rR"c4mIKYi91-2rT!
!!3!)1!!!rh`'"c58)If3!+!&!!5!K3!!I-AqF,!"!%"m"c!3I!8C&*!!J3!m9"`
'2MKK!%3iJ3!m5!!@2@!!!!!mB&4&1'0B9$L"!$K,rrl*I'!(08##!Cb!B3!i5!*
pSB""!"4mI4YiIlX(0#`E!2p!J3!)1f!!ri"K!$JiJ3&9If8(0)"M!!")!RV9J%%
!&*YK!95!RJ!!U'3!)+J%!#*m!`!!3B)!&(r%mhJiB!!)5!+4TB""!"4AJ!Br3B)
"%(r$mhK)!T'TJ%%!&)#H!!!lS3"9J'-!!+LN!$arT1Yi5!*kIB""!"5!IJ!!L!%
"9+KM!$bBB3"8L)%!9(`!)K3X!!$r3)%!$#!%!2qB!3&8J(i!!+KM!#"m!b!!3))
!'$KK!&3iJ3&85!"3h@!!!!")!!!F1!-!!6KK!94m"!Fd1+%!9%J!6F&J!!!!L'%
!9(rJ"c4m!`!!3)%!#*[K!&5!RJ!!Ik2VH)J"!94raI0iU-3!))L"!&4m"J)8I"`
(0%J#N3@!33!8J*i!!(q$"c4raI0iXi3!)(aN'hK)!T%"J%%!&)$H!!"ra20i1'%
!6)#Q!!L!"J!-N!#K!%b3!!%!8%J#N!$eJ%%!&%J!!#L!B3!iIk6VH(r&mhL!B`!
!5!+3!2'!33!8J'%!1%J#JY@!33!81'%!4%J!&0&J!!!!J!%#H$JK!R#lBIrXI!J
$TNk!!#!!!!!![d(rk(`)!UCmRL0iI(dEH(br+hL3!!%!#*3Krj!!S)3!$S!H!!T
8K3AZ9)-&V*!!!3"!I)8!d(`$!0"m!"KiI)3SH&5E$rj8'Jrq1'%!3%J#KM@!33!
8J)%!3(qMkhK)!SpYJ%%!&$J$!!&m(!Fe3)%!4(qMkhKrK10i5rrj1AaJ"c3X!!!
33))!)$KJ!!&)!S&eJ%%!&)"M!!")!RAjJ%%!&%J!!"K)!R30J%%!&%J!!!a)!R3
"J%%!&+!H!!!X!!!%3B)%V%#!!"`X!!!#3B)%S%#!!"`X!!!"3)!#N!")!!53!#`
!!!C"JJ3m3)!%K)!H!!*8!!Bq,!!!38'#!64!J!"!,!!!$8'#!(4!J!!F,!!!#8'
#!NK!J!4B,!!!!d'#!&a)!!4-,!!!,N'#!64!J!4!,!!!'d'#!+a)!!3d,!!!B8'
#!1a!J!!F,!!!9d'#!@4!J!3F,!!!9N#!!Da)!!33,!!!Gd'#!8a!J!3%,!!!GN#
!!C4)!!2iIk2VH$L!!!&,rrJaI'!(0#`!!!4!JJ"8Ik2VH$L!!!&,rk[TI'!(08'
#!marSqYi1)!!!8J!5@9J!!!!5!*d"B""!"48B!3r3))$V(qMkhJiJ!!"5!"'K@!
!!!!i!!!"X"m!!%J!!jKrSqYi1)!!!N[rpmPmB!Fd,!!!"%##!#arSqYi1)!!!N[
rUb&mB!Fd,!!!!d##!"4rSqYi1)!!!NJ!4MPJ!!!!1!!!Bl!I!!")!!0-9f!'2d'
#!carSqYi5!+(-B""!"4mC"YiIk2VH$LJ!!!i`(d!5!+0NB""!"4)!!-F9f!'2d'
#!`arSqYi1)!!!N[rpd9mB!Fd,!!!"%##!#arSqYi1)!!!N[rUTemB!Fd,!!!!d#
#!"4rSqYi1)!!!NJ!4E9J!!!!1!!!Bl!I!!")!!,)9f!'2d'#!VKrSqYi1)!!!N[
rp[&mB!Fd,!!!"%##!#arSqYi1)!!!N[rUNPmB!Fd,!!!!d##!"4rSqYi1)!!!NJ
!4@&J!!!!1!!!Bl!I!!")!!*d9f!'2d'#!Q4rSqYi5!+'@B""!"4mI"YiIi!(08#
"!NarSqYiIi6MH%[rpS9mB!Fd,!!!%%##!M4rSqYi5!*dSB""!"3iJ!$r5rrkKE1
I!!")!!)JIk2VH(p%dhK,rrE"5!!#%)"q!!SiJ3!mN!"K!%")!S,GJ%%!&(ar'hL
!B3!m5!+0pB""!"4m!qK!3))"h(rJ"c3X!!!$3))",(qMkhK)!R-GJ%%!&$KK!%"
)!S,4J%%!&(qMkhKrK10i5rremAaJ"c3X!!!&3))!9(qMkhKrK10i5!"(1@!!!!#
!J3"!I(SEH$LJrrp)!S,&J%%!&(aJ"c9"JJ&mId26H%J#GF'!33!8)!-!!A`%"c4
r3p0i5!+!GB""!"4)!!&B,!!!"N##!)KrSqYiIi6MH%J!4Z&J!!!!J)%!3(ak'hJ
iS2rr5!+#EB""!"4mB!Fe3B)"*(q$"c3l`rrrIk2VH(r%"c3iS3!i5rqP594J"Mp
"JJ!BU+%!1(qMkhKra!Fd5rqcS8J!!2"r3p0i5!*e0B""!"3J!`!"I!3(0(p$dhK
)!RrTJ%%!&%J!!-`X!!!33))![(qMkhKrK10i1+!!!%[rX,&)!!#S,!!!"%##!+!
iJQX-J'3!!)!%!!53!'%!4*!!!3")5!+-VB""!"3iJ3"%5!+-ZB""!"4rSqYi5!*
`GB""!"5!J3"!1+%!4%J#JEf!33!81!!!!,!H!!")!!"BJ"i!!R`!k%"!JJ"%Ik2
VH%J#FC'!33!8Ik2VH%J#F$@!33!85!+!VB""!"4rSqYi5!*c1B""!"4rSqYi5!*
`&B""!"4)!S#PJ%%!&$KJ!!")!!!)1'!!!B!"!(Ji)3"`Zd(rk(`)!kC1J!!J!!!
!!*2Krram#!+QI(mEH*!!!3!)P#(r`)"M!!!S!`!!3B)!&%J#FcQ!33!81!!!!*!
!(`!!J!%!5$JK!%#$iIrmI!J$TNk!!#!!!!!!!!!!!!!!!!#r)IrNI!J#TRbG)hJ
mi&*'I(`EH(bq+hKma$0i1'GbE6YJrrq3!!%!#*3Krk")!"#PB!!!!#J$!!#3!'%
!1%'#!4!iB3!i5!+'lB""!"4mB!Fe3))!r)"K!$K)!R1KJ%%!&)#"!$KrJq0iJq3
!!+JI!!!lr`!#X"d!!+JG!!"mJ2(@5!*kQB""!"4rJq0i5!*cEB""!"3l3!!!5!!
!I(p!"c5!I!!!I"i"eRmM!K4rirYiIb6,H$LJ!!K)!R+aJ%%!&)br!!JiQ3!)1!8
!!A`!"c4m'`0iIq2lH(pPfhK)!R+0J%%!&(rrfK5)[`!!Iq2lH$LC!#Ji"3!"I!!
(0(`E!hKrCGYi5!*bCB""!"4rrpS81eS!!DJG!!"r3`FdI!-!!%'!rharJq0i5!*
fUB""!"5!B3!i5!*fRB""!"5!B3!i5!*lLB""!"3lB!!!If2EH)!"!'Ji)3"JI!J
$TVXKrq41J!!J!!!!!!!!!!!!!!!![U(re(`)!UCmHKYiJ3)4m(bA)hL!BK(XI,8
VH(cE-hKmr$Yi1b!!!*!!!3!)P#(rJ)#)!!#!#!!%N!#"!%#3!!%!4%J#ER'!33!
8I'!EH)"L%HKm(`0i5!*ZTB""!"4mB"YiJ')4j(`H!hK)!Qk4J%%!&(ap'hJiB3!
m5!*ZQB""!"3i!!!!X"`!!$KJ!"*)!Qb0J%%!&(ai'hK)!RP"J%%!&(aJ"c9"JJ!
-1'!!!%J!",!i!!!!X"J!#$KJ!!")!RN&J%%!&*!!H!!15!*a'B""!"4qi!FeI(B
EH%'#!""qilYi5!*a5B""!"5!H!!1IUDVH$LB!!JiS!")5rrpQAaJ"c9!JJ3%2'"
TBhkNUhJiBh4L5!!18@!!!!#3!(J!#S!B!!SS!!!!3B)!)$Ki!!T)!S59J%%!&(a
J"c9"JJ!-1!!!!*!!'!!+1'*ICSJ$!!!S!!!!3B)!0$aJC'aqT+Yi1'0RH%J!$J&
J!!!!+!-!!%'#!"L!B`!!1)!!(cKM!!*)!R9&J%%!&(kMUhJiJ!!!1+$rrdJ#EFQ
!33!8I(FEH%J#EG@!33!81!$rrcaJ[Zq3!"J!!$J$!##3!"J!"(lMZhK)!QaPJ%%
!&(m%`hK)!S#"J%%!&(lMZhK,rk@pIZ1lH%[rTb9qilYiIk6VH%[rUqPqilYi5rq
`X5JD!!"!JJ!-IZ1lH%[rT+&qilYi5!*YDB""!"4qilYi5!%LE@!!!!"qilYiIm6
cH%[rU$eqilYi5!*VpB""!"4)!%-YB!!!!(lMZhK)!Q[KJ%%!&%J#EYQ!33!8IZ1
lH$L"!$K,rr+j9'!'2d'#!#bSJ3!iIZ1lH$LJ!!&,rkZaU)%!1(lMZhJiS!!!1-"
p!%J#KJf!33!81U!!!(rMqhJiJ3!i5!*ZZB""!"5SJ3!iI)!(0#`!!'0!JJ!F+"X
!!$UJ!!&"JJ(J1!$rpE!E!!")!!(8IZ1lH%[rlj9mB!Fd,!!!"%##!F#SJ3!iIZ1
lH%[rSZemB!Fd+!!!#%'"!DJiBM!)9!!31RaM!#jmD31Q6S!%)#JD!!""JJ'-IZ1
lH%[rX*e8B!Br3B)"I+L"!$KqilYi5rqJ1Ap$dhKqj,Yi5rrZI94J"Mp"JJ&F1b!
!!6UJ!!&)!!&3IZ1lH%[rX'&8B!Br3B)"3+L"!$KqilYi5rqIr6XJ!!%kS!!"5!!
"+#JE!!!kS!!"3B)"($J!rr@`'`!!5!!"%#JD!!""JJ%)IZ1lH%[rX"P8B!Br3B)
!q+L"!$KqilYi5rqIYAp$dhKqj,Yi1+!!!8[rkY98B!Br3B)!e$XJ!!%kS!!"5!!
!b(lMZhK,rkrC9'!'2d'#!,LSJ3!iIZ1lH%[rRh9r3p0iIZ5lH$LJ!!",rqU99'!
'2d'#!*3l)!!"1U!!!8J!!)JS'J!!3B)!J(lMZhK,rkq49'!'2d'#!(#SJ3!iIZ1
lH%[rRber3p0iIZ5lH%[reM&8B!Br3B)!8$XJ!!%kS!!"5!!!4(lMZhK,rkp99'!
'2d'#!$5S!3!iIZ1lH)#B!!iF!!")J)3!!(b%!K5S"2qqX"`!!+L"!$K,rjl91b!
!!6UJ!!&@S!Br3B,pp)"i!!SS!`!!3B)!$%J#GUf!33!8J(J!$NJ#GU'!33!81!!
!!*!!'!!1I`2$H%J#F3@!33!8IZ1lH%J#E*'!33!8Im2cH%J#E,@!33!8Ik2VH%J
#E+Q!33!81')91%[rq89)!!!XJ(J!$LJ$!!""JJ!85!*f5B""!"3i!!!!N!!B!!j
r!m0i5!*`VB""!"4rirYi5!*X8B""!"5!B3!m5!*XGB""!"4q`l0i5!*XiB""!"4
)!QJ4J%%!&(mMbhL!!3#)1#%!J,UKrp4m#!1Q6S!!),q"rr"m#!+QN!!"!!Ji!!!
!P#(rB*!!B3#i1'%!Z)1"!3#3!)%![$L"!$L,S3%(N!#K!-#3!-%!a*!!i3$)N3%
!c*%K!0#433$8Q"`!!%J#EJQ!33!8I'!(08##!(JiJ3!i1'!!!%J#E6'!33!8I(i
EH8'#!'!iJ!!!5!*Z*B""!"4mIaYj3B)!3$bJ#!"rK10i1-8"!$LJ!3")!QiGJ%%
!&&HJ"Mp"JJ!8Ii2MH(q%ihK)!QiGJ%%!&(rMqhK)!QdjJ%%!&(r$mhK)!QdYJ%%
!&)!"!+Ji)3#JZi(rm(`)!kC1J!!J[b(rj(`)!UBjBPG!N!!"!!L8)Ij`N!"K!DJ
iD`'4Jf%"m*!!J3'X1)!!!)XK!IH3!+%"X*!!`3'dN!$K!EL4!3'mN5%"`*&"!F4
)!QXeJ%%!&#`E!!"mIaYi3))!$&IJ"Mp"JJ'mIhk'F8'#!"4Ai!Br3B)!$&GJ"$p
"JJ'N1')`,%J#E!@!33!81)%!D%[m%rPJ!!!!,!-!!%##!B3iBM"!5!*VjB""!"4
mC"YiJ'%!D%J#E(f!33!8I(dEH8'#!@"A)!Br3B)!%$YJ!!!l3!!!5!!!c$KL-%K
)!QZYJ%%!&(aN'hL!B3"S5!*X4B""!"4mH4Yj3B)"+#`E!!"!JJ!S1')`8%J#Di'
!33!8I'3EH)"K!'K)!Q`CJ%%!&(am'hP"JJ$mIbc,H%J#Qdf!33!89f!%2hal'hK
"JJ"!,!!!!N'#!#K!J!!3,!!!!8#!!"4)!!!i,!!!"%#!!$")!!!81d!!!%J!!#3
l3!!85!!!($Y!!&")!!!8IicMH%J#Q[Q!33!8I(SEH#`H!!""JJ!39q!'2d'#!!J
lB2rr1!!!#(`*!kBi`3!81)%"T)"N!!5%"!!)N!"Q!!58"J!)3J$rm)#N!!3iB3"
XS)3!#$J!!!'3!+B!",#'!!L3!'%!B*!!!3"NJ'%!')#"!"b!S3!JJ-%!*)$K!#L
"!3!XJ5%!-)&"!$4,rrdPIf6EH(p&dhKrV1Yi1'%!E%J#QQ'!33!8J!%"Q$JK!C!
!Zb(rj(`)!kC1J!!J!!!!!,p"rqKm#!+Q15*@mhaq'hKmQL0iI,XVH(cI-hKmr$Y
iI4e$H*!!!3!)P#(qS)J*!!!S!!!!3B)"F$L"!'K)!QX&J%%!&(aJ"c9!JJ&F1'%
!D$LK!,JiJ!3!1-!!!$MJ!!!j!!!!5!*UpB""!"4mB!Fe3))"0&HJ"Mq!J3$i3B)
!$*0K!2K)!!!-I)$EH*!!!3$i9i!'2d##!#`S'J!!3B)!K)"k!!!m!ib8+!"ZDd#
#!(5!HJ!%2!10Q#J!BA"!JJ"N1'!!!&HJ"Mq3!'%!m*!!B3$d3B)!($aJ!!'!J3$
i1!1J!(b!!hL3!!%!q%J!!"JmB!!"J)%!q$J$SIpmJ!0iN!!"!2Ji!!!!N!!"!2`
iB3"S1+%!Z$L!"!")!QTGJ%%!&%J!!#5!!3$iI!!J3%'#!"JiB3"S1+%!Z$L!"!"
)!QSjJ%%!&$J!!!Km#31Q1+%!&$LHrrb!C!!%K!3!#*!!C3!%P!8!#%)!rr#!C!!
%1!!!!*!!C3!%S'3!#,"P!!L6i3"JN!!"!'5!B3!BJ)%!()#K!##!`3!NJ1%!+)%
"!#b")3!`J8%!0%[rr$'!!3&S1#%"B,Y"rqKm#!1Q6S!!)!!!!!!!!!!!I!J#TMM
!!!#3!!%!#$MJ!!!j!!!!P#(r`%[rrLQ!!3")1#%!3(`)!kC1J!!J!!!!!,q"rr"
m#!+QI*dMH(am'hJl`!!"N!!"!!L8)Iq`J!3""P3I6Ip!JJ!-1q!"r6[!!!!iI3%
'1)!!(dJ#Cb'!33!8J0d"#RaR'hKrJq0iIqAlH(r)mhJiR3"q5rrpZB!"!&Ji)3"
3Zi(rm(`)!kC1J!!J[i(rm(`)!UBiiPEcI(`EH(bG)hKm[bYiI0icH*!!!3!)P#(
qS)J(!!!S!!!!3B)!i$L"!'K)!QLYJ%%!&(aJ"c9!JJ$-1'%!D$LK!,JiJ!3!1-!
!!$MJ!!!j!!!!5!*SRB""!"4mB!Fe3))!T&I!"Mq!B3$i3B)!$*1K!2K)!!!-I'$
VH*!!!3$iJ!%!q(`!'%""JJ!B1'%!D$LK!,JiJ!3!5!*SFB""!"3i!!!)I!N$TML
K!"3iR2rmJ'3!")3%!!L3!'8!"*3&!!K#!2r`J'3!"$J!!!#3!'8!"+"N!!L`C3!
)Nq%!B*!!!3"NJ'%!')#"!"b!S3!JJ-%!*)$K!#L"!3!XJ5%!-)&"!$4,rrTTJ!%
"D$JK!@#lJIr`I!J$TNk!!#"m#!+Q1-!!!C!!!3!)P#(r`)!%!3C8!%hr3))!$$J
!!Idi`!!!J+3"#R`%!hK,rrkeJ!%!5$JK!%"m#!1Q6S!!)*2Krram#!+QI(mEH*!
!!3!)P#(rX$KK!$K)!RC4J%%!&&IJ"$jm!"j`1'%!1(aM!+jAi!GqI'!'-&3!"rj
m!`FdJ!%!@$JK!&"m#!1QJq(rr%k!!#!!!!!!!!!!!!!!!!#r`IriI!J#TRaq'hL
3!!%!#*3Krm")!QX9J%%!&(ar'hKr`r0iIqAlH$L!!#*)!R'PJ%%!&(rMqhK)!R'
aJ%%!&&4J"Mjm!!!dIq2lH&3IhMj)!QXjJ%%!&(rMqhL!!3")1#%!3(`)!kDl`Ir
i6S!!)*2Krram#!+Q1+*@iAbI)hL3!!%!#*3Krm#)"3!!+!!!!%'#!"K)!QS&J%%
!&(rMqhK)!QS4J%%!&)!"!%Ji)3"!Jq(rr(`)!kC1J!!J!!!!!(`)!UBiJPEKN!!
"!!L8)Ir!L!3!!#J!!!""JJ!-5!*TeB""!"5!!3")1#%!3(`)!kC1J!!J!!!!!!!
!!!!!!!!!Nq(rr(`)!UCmIaYiN!!"!!L8)IqJN!#"!(`iB3"!5!*KjB""!"5!``!
'1)$rr)!$!!SiB3!i1+$rr*!!`3!iN!!"!$a)!QR4J%%!&+M"!$KrirYiJ)%!I$L
K!$Ji"J!3X!%!1%J#FAQ!33!8J!%!D$JK!'#$iIrmI!J$TNk!!#!!!!!![m(rq(`
)!UCmIKYi1+!!!(bI)hL3!!%!#*3Kre!i!3!iXm%!G$KK!&b`S3"iX+%!FT!!!3"
Z5!*VjB""!"4mB!Fe3))!2&IJ"Mp"JJ!8Im2cH%J#DQ'!33!85!!!%(r$mhK,rh(
aB!!!!+KK!*!!1+%!1)#"!*C)!R2pJ%%!&)!"!,Ji)3#`Zm(rq(`)!kC1J!!JI!J
#TT!!!3!)I'!(0$KL@8"8!"!kP#(r`(aM!UjmB!Fd,!$rrd'#!"4mB!Fe3B)!$$L
!!!&,rrmpJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!11!!!%J!!%Kmi!Fd1)*C3&3
!%$Tma!)8U+B!!(aN"c4mS!FdI!3!!%##!!bSCJ!#6S!!)+J'!!*m"!!!3))!$(b
M+hK1J!!J11F!!AcJ"c3X!!!#3B$rY$KJrrp1J!!J[i(rm(`)!UCmI"YiI*dMH*!
!!3!)P#(rX%J#BTQ!33!8I(mEH8##!&a)!Q*CJ%%!&(aq'hK,rrpYI'!(0#`!rrp
"JJ"!5!*LKB""!"4rJq0iIk6VH%J#BPf!33!8I(mEH%J#BS'!33!8Im2cH%J#BPf
!33!81'!!!%J#BS'!33!8Iq2lH)!"!&Ji)3"3I!J$TVZ"rr"1J!!J!!!!!!!!!!"
mB!Fd1'*C3&3%%$Si!2rrI!-M,RaM)K5`!`!#6S!!)(b!"c8i`PP!3B)!%(aJ"c4
8!"!kI)B$,RbJ"c90JJ!JI'!(0&3!%$TmCJ)8X+-!!Nk!!#!!!!!!!!!!!!!!!!"
m#!+Q1))92*!!!3!)P#(r`%J!1,&J!!!!J!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!
!I!J#TRaN'hL3!!%!#$KL9Pb8)Ir!5!*K*B""!"5!!3")1#%!3(`)!kC1J!!J!!!
!!,pKrqam#!+Q1m*FX(al'hJliPbXI*dMH*!!!3!)P#(qX%J#B3'!33!81!!!!$L
#-&L3!"m!!(am'hJiB3!iN!!H!!")!$KaB!!!!$J!!!fB!3!pIf2EH(qNkhJiS3!
i1-!!!8J#A"'!33!8I(dEH(qJ"c3X!2rr3B)!J$aJ58-iBdiM1)#rZ8[rrKdS!`!
!N!"r!!""JJ!-5!*TlB""!"3mB'PM1'0X1$L![lP,rrhj+!-!!*!!IJ!!3B)!%%J
#DFQ!33!85!!!+$aJD@-iBf`d1)#rZ8[rrG%S!`!!N!"q!!""JJ!-5!*TSB""!"4
rSqYi5!*R*B""!"4rJq0i5!*JFB""!"5!!3&B1#%"8,YKrqam#!1Q6S!!)!!!!!!
!!!!!!!!!!,p"rqKm#!+Q1k*@%$[#8E!liPBBN!!"!!L8)IbJ1'%!1%J#A4'!33!
81'*IE)"M!!")!PeKJ%%!&)"r!!!S!`!!3B)!($L"!$a)!P[KJ%%!&$KK!$a)!QA
&J%%!&)"q!!")!Q"*J%%!&)"q!!!lB!!!Ji-!!%J!!3#!I3!!IfAEH$L#&8")!QR
pJ%%!&$KLAi#!!`!!9!!%2L`!#3""J!#iU(`!@$N"!83iJ!!!1+!!!$M!!!!ii!!
!15!!!%J#DGf!33!8S+%"4$L"!8BiB!!!5!*TiB""!"4mB"YiJ(d!!(`D!hJi'`!
"IdA6H&3%"$j)!QRCJ%%!&%J#BL'!33!8I'BEH(p$dhJiJ3"%1+!"!%J#B6'!33!
8L!%!4&3!"Mp"JJ!N+!!!2d#"!!`i!!!rQ!%!4(q$ihJiJ3"%5!!f9@!!!!"r3p0
i5!*J1B""!"4)!!!F1"X!!B"p!!"rKH0iI!3(0%J#DAf!33!81hX!!6ZF!'3iBPD
ZIf3(0+J$!!"m"!!!3B$qp)"q!!")!Q,eJ%%!&)"p!!!iJ2rr5!*TAB""!"5!(`!
!+!!!!%'#!#b!I3!!5!*TAB""!"4mC"YiJ(m!!%J#D@@!33!8J(m!!%J#DA'!33!
8J'%!1%J#AI@!33!8J!%$D$JK!f#l3IrSI!J$TNk!!#!!!!!!!!!!!*2Krram#!+
QI(mEH*!!!3!)P#(r`)"M!%`S!`!!3B)!&%J#CeQ!33!81!!!!*!!(`"-J(m!8#J
$!!""JJ!85!*R2B""!"3i!!!!N!!I!&#!!3")1#%!3)2Krram#!1Q6S!!),r"rrK
m#!+Q1m*@VM[L8E#3!!%!#*3Krm#S(J!!,!!!!N##!*b!I`!!2)!!-)"M!!#!S`"
!1--!C(`&)%"!J!!3J!B!3(`!)%""J!"d2)!!-(`&)%""J!!3J!B!3(`!)%"!J!"
F2!!!-(`&!%"!J!"!5rrr-B"r!!!i!!!-I!N$TS"M!!!iSrrm1)-!B)"N!!5%"!!
)N!"P!!58"3!)3J$rm)!%!!53!!8!"%J!!!am`c0i5rrqm6J!!!'`(J!!J!%!5$J
K!%#l`IriI!J$TNk!!##rBIrXI!J#TRbF)hPmHaYiI,dVH(cH-hKmrcYiN!!"!!L
8)Ip33B)!$$J!!!#B(!!!+"d!!%'#!!`i!!!!Q"d!!$aJCR-iBb!J1)%!1%J#9k@
!33!8I'!(08##!,!iJ3!mXf%!EMKJ!!!i!!!FN!"K!'SiB3"BN!#"!(L3!!%!I%J
#CN@!33!8I'!(08##!)!S(!!!3B)!')!"!$j8!!Ba3B)!$$J!!!'B(!!!+"d!!%'
#!"L!!3!q9!!%jd'#!!`i!!!"Q"d!!#JH!!""JJ!BJ!%!4L`!!!""JJ!-1!!!!CJ
H!!!S(`!!3B)!*+J"!$`X!!!$3B!!$)!"!&")!!!)1!!!!&3!PrkB(`!!J!%!Z$J
K!,#lBIrXI!J$TNk!!#!!!!!![S(rd(`)!UBl!PCN2+"QFhap'hJl)PDZI*iMH$V
#9K!iC5!J1d*4X$YLAf`kS!!!1S*FX$Z#A+b3!!%!#*3Kr5!iJ3"%5!*@MB""!"4
mB!Fe3))!&)!"!%48!!De3B)!#$UJ!!&AS!Br9Vm'2N'#!#JiB!"N5!*M(B""!"5
3!(S!!$KJ!r*)!Q69J%%!&*!!GJ!!5!!!A)"k!!")!P["J%%!&)"k!!!ki!!!JU-
!!%J!!#5!GJ!!1)!!!8J#C,Q!33!8IU1VH%[rr1dkp`!"1V8!C+JC!!"qi`FdI!-
!!%'!rp5!HJ!!5!*I6B""!"3i!!!!X"N!!$VJ!!!kp`!"1'%"U,,K!,`i!2rrN!"
K!,)iB3#JX!%!YNJ#B8@!33!8I(BEH(l!"c9!JJ1%9q!'2d'#!$JiJ3'SXZ%"1$K
Jrrmi!!!!X'%"-MKK!4b3!)%",T!!!3%d5!*N1B""!"4mB!Fe3B)!#$[J!!"q`!F
e3))$3)"k!!")!Pl"J%%!&+LC!!#!HJ!!1!3!!4b!!'4)!Q(aJ%%!&)"k!!")!PV
&J%%!&+JC!!!iJ3'SJ(S!!"`!!'5!B`!!IU-#&(kMUhK)!$'*B!!!!+KK!,BiJ!!
!9q!'2l"e!&LBP3"MQ*8!BS"K!0#J!3$1I!-"eT!!&3"!J'%!d+!"!0jm!`(@N!!
9!%4"JJ!3S!%"A,!9!&T)!!!)X*8!@U!9!&SS!%JV3))!%)!"!8b3!"8!5%J!!!b
!!3$3N!!9!%KAi!Br3B)!0)"K!Ci`!rrrI!!C%*J9!'+)&3"L+!!!!%'#!"!i!2r
kN!!9!%4)!!!-J!%"ST!!&3"%2)"YBDKe!&JiK'0c1-%!1MMK!%`iS!!!5rlha@!
!!!"mGKYiIX!(06L!!!"!JJ!BU'%!1UJ9!&Km!`!!3))!#$L!!!'BP3"F1'!!!+L
"!-C8J!Ba3))!$&5!"#&"JJ!)1'!!!CKe!&diB!!!U)%!jRb!"c9"JJ!8I)!(0#`
!Bh9"JJ!)1'!!!CKe!&iiP3"J1,8!BDKK!,Bie3"H128!Ad[rqpf)&3"I+!!!!%#
#!"LJ&3"D+!"$38'#!!`S!%Y(3))!0)"k!!")!Pd&J%%!&+JC!!#!HJ!!()!!C%J
#B$Q!33!8J(S!!%J#@3f!33!85!!"9$J!!!#3!"8!9)J9!&dS!!!!3))!,+L9!&J
iS3!k1-%!6$KJ!!",r[N9B!!!!(aJ"c9!JJ!-J!%!6*!!&3"8U(8!@$L!!!*,rrE
eJ"`!!#J!!!"!JJ$B2'"TBcKMEfiiJ3"%5!*6'B""!"4mB!Fe3))![)!"!%48!!G
l3B)!X$J!!!'B&3"M1'%!@$M#&85SP3"B1+!!!NJ!$b9J!!!!1'%!@$L"!%!iS3!
i5!*KZB""!"4mB!Fe3B)!*$b!E@%mB'KN1)4MFcLMFfXi`3"!1'#!!%J#BDQ!33!
8I'!(08##!%b!B3"!1+%!2$L!rrp)!Q'PJ%%!&(aJ"c9!JJ!NJ'%!2(q&ihJiJ!!
&5!*KSB""!"5!B3!m5!*J[B""!"5!B3"!5!*KSB""!"5!(!!!1)!!!*!!&3"-J"3
!!*!!&3"3U(N!!*!!R!!!1!-!!C!!P!!!X"N!!(l!"c3X!2rG3),m5%[rq9eAS!B
r3B)!+)#D!!!iH!!+JU3!!+J9!&KqT+YiX"J!"NJ!,QPJ!!!!5!!!q%[rpXfSH!!
'5!!Y0@!!!!#S'3!!I'-(0(`$!!""J!"BJ,S!!$Ki!!SiJ3'SJU8!!+J9!&L`'!!
'5!!Z*@!!!!!iBPBB1!!!!MLL9V!iJ!!"J'-!!,!&!!")!Q(0J%%!&)"l!!!iJ!!
"5rZr"@!!!!!l`!!"1'*A3$L!!!!iB`#15!*@0B""!"48B!Br3))!D&I!"Mp"JJ"
J1'%!5%J#8f'!33!8J(X!!%J#8l@!33!8J(X!!%J#9A'!33!8J(X!!%J#8Nf!33!
8I(3EH$L"!&")!P*9J%%!&(aN'hKqJk0i5!*KTB""!"5!B3")5!*9XB""!"5!!3,
S1#%#i,U"rp"m#!1Q6S!!)!!!!!#rSIrdI!J#TRar'hKmR50iI,iVH*!!!3!)P#(
rS$KK!$`iJ3!i5!*TVB""!"3i!!!%Nq%!3$[K!%D`!3"%Iq2lH$L!!!!iS!!!1-!
!)$MJ!#")!P[TJ%%!&)"K!$a)!QQ0J%%!&)#$!!"rjIYiIkEVH(r(mhJiB3"!13!
!!%J#DB@!33!8J!%!D$JK!'#lSIrdI!J$TNk!!#!!!!!!!!!!!,p"rqKm#!+QI(X
EH(bF)hKm[5Yi1d!!!*!!!3!)P#(rJ%J#9DQ!33!8J*X!!$J!!!3iB3"D1+3!J,!
"!&JiJ!!!N!#K!&3iS!!!1-!!)$MJ!#")!PY*J%%!&$KK!$K)!P(eJ%%!&$KL9Z'
)B`!!9'!'2d'#!!`S(!!!3))!a&4J"Mp"JJ#N1'%!4%J#BX'!33!81'%!2%J#@H@
!33!8Ik2VH%J#@TQ!33!81!!!!,!"!&!iB3"-X!%!6V!"!%a)!Q,9J%%!&$aJ!!%
i!rrrX!%!8$KK!%b`!3"1X!%!6%J#@E@!33!8J(X!!(qNkhJiS!!$1'-!J%[rrQf
!H`!!Ik6VH$LJ!!&,rrjG1'%!4%J#BS@!33!81'%!2%J#@AQ!33!85!!!&)"l!!"
rT1Yi1+!!!%[rrM%l3!!"5!!#9%'#!P"rJq0i5!*8KB""!"3iB!!)5!*S+B""!"4
mIaYj3B)#*$KJ!94)!PZGJ%%!&(aq'hP"JJ)%J(i!!$J!!!!iJ!!!N!!$!!!iS!!
!1-!!))"q!!!ii!!J1'-!"NJ#@J'!33!8J(i!!$PJ!!JiJ)!JX@-!)$P!!!!j)!"
)J(i!!$N!!!%i!!!%X)-!"$L!!!!iS!!!J(i!!$M!!#!ii!!JX8-!$S"q!!#a3`!
3J(i!!*&$!"+!IJ!!N5-!&S"q!!#4)`!DJ(i!!,&$!"k!IJ!!X3-!)S"q!!#aB`!
NJ(i!!*&$!#D!IJ!!N8-!,S"q!!#`!`!fJ(i!!*&$!$+!IJ!!1'-!1%J#@9Q!33!
8J,i!!(r$mhL!K3!bJ!8!0T!!K3"!N!!&!%5!"3!kN!!&!%LJ"3!qX!8!6)#H!!#
6K!"1J*i!!*2N!#T)!P0*J%%!&)#H!!!iS!#!J(X!!$Y%!&)iB`#!Id66H%J#8TQ
!33!8J(X!!$LD!)!iS!#!5!*5KB""!"4r`r0i5!*@iB""!"4rSqYi5!*BEB""!"3
iB3"%5!*JFB""!"3iB3!m5!*APB""!"3i!!!!X!%!8$KK!%b`!3"1X!%!6%J#B*'
!33!82'!!!6J$rrq`!3"31'%!6,!"!%k`!3"-5!*AFB""!"5!H`!!Ik6VH$LJ!!-
iB`#!5rrm+AqMkhKra20i5!*Q6B""!"3iB3"%5!*J3B""!"3iB3!m5!*A0B""!"4
r`r0i5!*E-B""!"3l3!!"Iq2lH%J#CM'!33!8Ii2MH%J#9Kf!33!8If2EH%J#9K'
!33!89d!'2d##!""rSqYi5!*APB""!"5!!3#)1#%!J,Y"rqKm#!1Q6S!!),q"rr"
m#!+QI(`EH$aJ580mR50iIi6MH$KM6L13!!%!#$[!!!#8)Iq`5rrZZAar'hP!JJ!
8Ik2VH%J#9d'!33!85!!!1$KL9Z')!`!!+!!!!%'#!"JmB'PMIi6MH$KME$K,rqk
"I(iEH(rMqhKra20iIkAVH%[rqmf!!3"B1#%!8,Z"rr"m#!1Q6S!!)!!!!!#rSIr
dI!J#TRap'hKmRL0i1q!!!*!!!3!)P#(qX+!#&8L`!3!iIm2cH$LG!!C)!#JeB!!
!!$[r!!&ri`Fd1)%!2%J#6TQ!33!81'%!1$LK!$`iJ!!"5!!N2@!!!!#)J3!mL(i
!!&5!"Mjm!`)8,!!!(d#"!!am""K3Q"i!!(r$mhJiJ3!m5!!R$@!!!!"rSqYiIm6
cH%[rAreJ!!!!I'!(08'#!""mB!Fd,!$rd%'#rhL!!3&B1#%"8,ZKrr4m#!1Q6S!
!)!!!!!!!!!!!!!!!!,r"rrKm#!+QI(iEH$[LAq`mJ'CXImIcH*!!!3!)1)4ZG$L
J!!'8)Iq`U(m!!$M"!$K)!P'"J%%!&(aJ"c9"JJ!FU*m!!(r'mhJiS3!i1'!!!8[
qm*&J!!!!J!%!@$JK!&#l`IriI!J$TNk!!#!!!!!![b(rj(`)!UCmQb0j1i*Bf$Z
L@0`l`PrNI(SEH$XLAfBliPrXN!!"!!L8)Ik3!%'#!!arCGYi5!!!i$L#-'!iB3!
i5!!Qi@!!!!#)'3!!1)%!1+Kr!!!S!!!!N!#"!++`B3#Q3B)!'$KK!-",rrmTI'!
(08##!Ba)!!!-J"i!!*!!!3$!1!!!!,!"!+`iB3#3!%J#8J@!33!8I'!(08##!!b
!S3$!5!!!9)JC!!!iJ3!iU(m!!#J!!!#3!)%"$V"K!4*"JJ!B1'%",%[rrXemB!F
e3))"-%J!!!b!(J!!N!!"!5`iB3$m5!*@5B""!"4mB!Fe3))"%)#K!5b)'J!'+!!
!!%##!"LS(`!!1'!!!,!D!!#3!,S!!NJ!!2!i'J!'N!!"!'ii!!!!1'%!A+LD!!#
`J3"bN!!"!(L3!+%!J)!D!!+3!!%!M%J#9J@!33!8I'!(08##!,5!I3!!+!-!!%'
#!"b!R!!!1!3!!4b!!#T)!PAeJ%%!&%J!!"3iB!!U5!*9rB""!"53!(d!!%J#9JQ
!33!8I'!(08##!(#!I3!!5!*1TB""!"5!(!!!1*S!"S#p!!!FB!!UJ"S!!S#P!!"
r*4S8N!!C!!!iH3!)U"S!!,!C!!4)!#9CB!!!!$!Errpm!0N3X"N!"S#F!!#!I3!
!1!3!!C!!(!!!5!*5*B""!"3iB!!!5!!!#$KJrrq!!3&i1#%"F,XKrq4m#!1Q6S!
!)!!!!!!!!!!!!!!!!,pKrqam#!+Q1q*Bh$Z!!!#3!!%!#$J!!!#8)Il!Q!%!1)"
r!!")!NheJ%%!&)"r!!#$S`!!5!!"V+JG!!BX!!!!3B)"Q+Kp!!4)!#1CB!!!!$L
#9UjmC3FdU!3!!(`&!!""JJ&i1'*4X$["!0iF"3"NJ'-!!)#M!!"r`r0i1*d!#(b
P!K5!"3"8N!!"!0T)!#4eB!!!!+JG!!3iB3$B1)%!2,!"!0JiS3!i1f!!!%J!eP9
J!!!!L!%!1#J!!!""JJ!FU'%!f(r&mhL!J3$D5!$C4@!!!!")!!!31'%!f%[r@f9
J!!!!I'!(08'#!2!mJ(4bU'%!f$L%FfJi`3!k11%!3$LJ!!&,rZVpB!!!!(aJ"c9
!JJ$)U-%!1MLJ!!#!J3"!1'%!T)!"!0U6`3#fX-%!ZT!!S3$!N!#"!-L3!!%!e%J
#8q@!33!8I'!(0#`!rp"!JJ#-If-(0$L"!%4)!NSKJ%%!&)L"!%5)IJ!!9)!'2R`
$!K3X!!!I3)%!$(`%'&#B(J!!Im2cH$LG!!K)!#0jB!!!!$KK!'3iR3!)5!!MD@!
!!!!iB3"N1)%!4%J!)SPJ!!!!1'%!f$L"!'4,reYjB!!!!(r$mhJiJ3"N5!!M1@!
!!!!lH`!"5rrr3$ZF!!%l[3!U1'*Bf)!$!!"m(!!!3B$q6)"r!!")!NrpJ%%!&)!
"!8Ji)3&!Zf(rl(`)!kC1J!!J[i(rm(`)!UBliPMF1i!!!$L#-'!l`!!!N!!"!!L
8)Il`1'%!1%J!)XeJ!!!!1'*ICMLK!$JiJPrXL!-!!+KN!!!S!!!!N!#K!++`B3#
Q3B)!&$KK!-",rrX0I(`EH%J!!"!iBPrNJ!-!!*!!!3$!1'!!!(q!"c@`B3#X3))
!&$KK!*!!5!*0iB""!"4mI"YiIi!(08'#!!`lS!!!5!!!#)1K!-#!I`!!5!*,CB"
"!"5!I`!!Ji-!!%J!!)`i(!!)N!!"!'ii!!!!U(`!","K!(+3!!%!H)!F!!#3!!%
!J+JF!!BX!!!!3B)!3%J!)1eJ!!!!1)*@VRaP"c5S"!!!I!8!!%'#!$`iBP'`(!8
!C)"M!!#!B`!!I'-#&)!$!&53!!%!M%J!!"!X(3!!3B)!&*1K!)`iB3"F5!*4iB"
"!"3lhJ!"1j`!+MKL@0L!!`!!I"i!!%'!rfb!I`!!5!*1MB""!"5!!3%B1#%"%,Z
"rr"m#!1Q6S!!),r"rrKm#!+QJ')-S*!!!3!)P#(rX%J#4[@!33!8I(iEH$KK!$a
)!NEpJ%%!&%J!*'9J!!!!1'!%#6L!!!")!!'9B!!!!(ar'hJiJ!!"5!*(PB""!"4
rirYi5!*&fB""!"4)!"d4B!!!!(rMqhK)!NA&J%%!&%J#5,f!33!8Iq2lH%J#5-Q
!33!81)%!1$KJ!!")!NM4J%%!&+J"!$JX!!!"3B)!$#`!!!9!J[rJ1'!!!ML!!!*
)!N6YJ%%!&(rMqhK)!NLjJ%%!&(r$mhK)!NMGJ%%!&)"K!$a)!NMTJ%%!&+J"!$J
X!!!"3))!$%J!)V9J!!!!1!!!"DKK!$Km!!FdI!-!8(`!!$48!piqJ!%!@$JK!&"
m#!1QZm(rq%k!!#"m#!+QN!!"!!L8)Ir!5!#@T@!!!!#!!3")1#%!3(`)!kC1J!!
J!!!!!!!!!!!!!!!!I!J#TLJ'!!#3!!%!#*3Krm#`J`!!N!#M!!*"JJ!BI-3cH$K
M!!C)!#!0B!!!!%J!!!`i!!!!Q!-!"S!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!)%
N!!#!"!!%N5-!!*!!!`!%N!#M!!L3!--!$*!!i`!3N3-!&%k!!#!!!!!!!!!!!!!
!!!#r`IriI!J#TRbH)hKmB`Fd1)!!!*!!!3!)1+$rrj3Krm")!N9jJ%%!&(ar'hP
"JJ!S5!*&JB""!"4A`!Br3B)!'(rMqhK)!N3GJ%%!&%J!'e9J!!!!Iq2lH)!"!%J
i)3"!I!J$TV["rrK1J!!J!!!!!,m"rq"m#!+QI(SEH*!!!3!)P#(kF%J#4M@!33!
8I(mEH$ZJ!!&)!!)dId26H(qNkhJiS3!k1-%!3$MK!&a)!N1&J%%!&+J"!$T8!!C
q,!!!#%##!J5!B3"!1)%%C%J#9qf!33!81'%$C$L"!Q3iS3&N1-%!C%J#4D@!33!
81'%$C$L"!Q3iS3&N1-%!C$MK"'4)!!ZaB!!!!)"K!%!iJ34N5!*&-B""!"3iB3"
FI'3EH%J#@V'!33!8I(iEH8'#!CL![J!!U)8!"$J%!+#`"3!%J*i!!)!"!%#$K!!
qN!!%!$j)!N@CJ%%!&)#q!!"r3p0iU!%!A(qNkhLSa3"HU3%!B$MK!&a8aL!fU+%
!1RcE"c4m!%"3J-%!3(`!f&"m'`FdI!MD&,!"!'")!N6"J%%!&(pJ"c9"JJ%-Id2
6H%J#3V@!33!81)%!4%J#3X'!33!8U)%!4(p$dhLS!3")U-%!4ULK!%Tm"!"3I"J
(0(`'+&"m'3FdIaMD&%J#3RQ!33!8Ib6,H(m&`hJi`!!!5!*&"B""!"5!J3"FId2
6H)!"!'#3!)%!6*!!!3"35!*#5B""!"3iJ3"%5!*#9B""!"5S!3")1b!!!E!"!&"
)!!"SIb-(0(qJ"c4m!`!!3B)!9(p$dhKr*-Yi1+%!1$M"!$`ii3"85!*"dB""!"3
iB3"8I'8EH$L"!%a)!N5PJ%%!&&4J"Mp"JJ!FId26H(mNbhKrCYYi1+!!!%J!&6e
J!!!!1cN!!AmM"c4ri!FdI!-!!%#"rj!!J*i!!(r$mhL6K!!q5!*C,B""!"3l[3!
"Ik-(0(rJ"c4m!`!!3)(pa)!""CJi)3@3!,X"rq"m#!1Q6S!!)!!!!!#r3IrSI!J
#TRam'hL3!!%!#*3Kri")!N1eJ%%!&(ar'hJl`!!"5!!"`(q$ihKra20i1+%!1MM
"!%!ii3"F5!*""B""!"5S!3!k9!!'IL`!!""!JJ'3!(q$ihK)!N1*J%%!&(ap'hL
!S`!!U)8!"$J%!+#`"3!%U!%!BS#$!!#`"!!'5!*$HB""!"5![3!!Ii2MH+J"!&a
ra20iU38!AULK!'!ii3"F93JJ0S$"!%"p(3FdI!!S8(`!k&"m(3FdI!AU&,!"!'!
iS!#)5!*#SB""!"4rS!Fe3B)"$(q$ihK)!N#9J%%!&$L"!%4)!N#KJ%%!&+L"!%4
rJq0iU!%!5+M"!%DSS3"+I!3!8(`D"c4m"LK3I"X(0(pDkK4)!N"CJ%%!&(pNfhK
r4G0i1-!!!%J#3Z@!33!8J)%!A(q$ihL!!3"JN!#"!%b3!!%!8%J#3#Q!33!81)%
!4%J#3$@!33!8U!%!5$Y!!!'`!3"35!!!D(p$"c4r`!FdI!-!!%'#!&4rJq0iId6
6H$LK!$Ji`3!m11%!9%J#2l'!33!81'%!9(aP'hJiJ3"-5!*#KB""!"48B!Br3B)
!((q$ihKr400iIkEVH$LJ!!")!"-GB!!!!$YD!!&r3`FdIq!(0(`$!!"!JIq3!$[
H!!&r``FdIq!(0(`$!!"!JIiiJ!%!L$JK!)#l3IrSI!J$TNk!!#!!!!!!!!!!!,q
"rr"m#!+Q11*@hham'hKmR50iI,iVH(cI-hL3!!%!#*3Krl#)"`!!+!!!!%'#!#3
mB!!"Im6cH$KMrrmiS!!+1-!!!%J#4Qf!33!85!!!'$aJ!!&ra20i1'2rrdJ#4Qf
!33!81!!!!,!I!!"rSqYiIm6cH(rPqhKrM10i5!*cKB""!"48B!Br3))!,(r$mhK
)!Pb*J%%!&&4J"Mp"JJ!BIm2cH(rPqhJiJ3!i5!*FKB""!"5!!3"B1#%!8,Z"rr"
m#!1Q6S!!)!!!!!!!!!!![k(rp(`)!UBiBPCN1k*@&$[#8E#3!!%!#*3Krl#SB`!
'5!!BS@!!!!!iJPDZI(mEH(rM"c5S"!!!I!-!!%#!!25!I3!!5!*#RB""!"3iJPb
mI'-(0+J%!!"m!"J!3))!$$ZJ!!")!!"8J(d!!%J#3R@!33!81+*FZ(rJ"c5!RJ!
!I'B(0+LP!!#!C!!!(!!!C(b&-&"mK3!dI)-#&&5MhMk!K!")1+!!!$M!!!")!#3
9B!!!!(ap'hKri!FdJ(i!!"`!!'5!B`!!Iq-#&)JI!&il`!!!+!!!!%'#!#3iBPG
!1)!!!6KM!)Y)!N&4J%%!&&4J"Mp!JJ!)1m!!!B!I!%4A``BqI"d!3%'"!"L)(`"
G+!!!!%##!!a8B!Br3B)!$$KJ!!")!!!31'!!!8J!!!JiB!!!J!%!@$JK!&#lSIr
dI!J$TNk!!#!!!!!!!!!!!,mKrq4m#!+QI*`MH(al'hKm[5Yi1q!!!*!!!3!)P#(
rS+!#&8b`!3!iS!3!!#J!!!0"JJ!-+!!!"8##!P#J(!!11d!!!$KLE&"8"!AZJ,`
!!SJ$!!"mC!$3I'-JH&5N"MiS!!!!I*iMH&4j$rj"JJ!FIf2EH%J#8-@!33!8I'!
(0#`!!!C!JJ!)1d!!!Ar!"c3X!!!09d-'2N'#!&"!J!!S,!!!#%'#!)a!J!!3,!!
!!d'#!$K)!!$X,!!!#N#!!14)!!(),!!!)%#!!"3X!!!E3B)!3%#!!E4)!!$),!!
!,N'#!#K)!!#m1!!!!E!G!!"rBpYiU*d!!%J!$bPJ!!!!1q!!!8J!!B4A)!Br3B)
!T$J!!!+`(3!!If2EH+LG!!")!!m"B!!!!$[J!!&)!!&FIf2EH%J#2Rf!33!8J'-
!!+ZM!#+V3`!JIk!(08'#!6ar3`FdIk!(0(`$!!""JJ!-1"S!!A`D"c4rBpYi5!)
leB""!"4)!NrGJ%%!&(bDk&"mH4Yi1!3!!Ap$dhKr*FYiI!3(0%J!&feJ!!!!5!!
!l&FJ"Mp"JJ!-1q!!!8J!!0a8B!Br3B)!e(r!"c3X!!!J3B!!Z#`!!(p"JJ#`If2
EH%J#1h'!33!85!*2HB""!"4mH4YiIf2EH%J#2FQ!33!8J'-!!+ZM!#+V3`!JIk!
(0(p$"c4m!`!!3B)!+$YD!!&mHZK31!-!!Ap$dhKr*FYiI!3(0%J!&YeJ!!!!5!!
!#$YD!!')'3!!+!!!'8#!!#LE`3!jId66H(mPbhJiB3!i5!!5F@!!!!!i!!#PQ"`
!"8J!!#JiB!!"5!)k!B""!"3li!!"5!!!&$KJ!!&)!MRYJ%%!&$[J!!&rirYiJ!%
!D$JK!'"m#!1QZb(rj%k!!##r)IrNI!J#TMM#EL"mR50i1+!$kM[LE&"mI"Yi1)E
rr$[!!!#3!!%!#$J!!#"m#31QP#(qS,#K!$JiS3!mJ'3!")3%!!L3!'8!"*3&!!K
#!2r`J')5r%J#1Yf!33!8I'!EH)"L$+"m'J0i5!)l%B""!"4mH4Yi1'%!2%J#1aQ
!33!85!)jBB""!"3`(IrrI!$T%*JI!!#)(`!!+!!!!%'#!!`i!!4(X!%!1+KK!$J
iJ!!"5rreNAal'hJiJ!!"5!)lPB""!"4rBpYi5!)jfB""!"3iJ3"!5!*0pB""!"4
rBpYi5!$`)@!!!!"rBpYi5!)jYB""!"4)!MbYJ%%!&(pMfhK)!MbjJ%%!&(p$dhJ
iJ3!i5!)m`B""!"5SB3!iI'!(0#`!!!&"JJ!-,!!!!N##rpamB!Fd,!!!!8##!$K
rJq0i1)%!3%J!&+eJ!!!!L"m!!#J!!!""JJ!BIf2EH(qPkhJiJ!!%5!!12@!!!!!
l`!!"If2EH%J#2(@!33!8Id26H%J#2)'!33!8Ib2,H%J#2)f!33!8J'%!2%J#2*Q
!33!8Im2cH)!"!@Ji)3&JI!J$TVXKrq41J!!J!!!!!!!!!!#rJIr`I!J#TRbF)hK
mIaYiI,dVH$[!!!!iJ!!#N!!"!!L8)IqJ5!!1A@!!!!!iJ3"!5!)iQB""!"4rirY
i5!)iTB""!"3iJ3!i5!)iXB""!"5!B3"!1)%!1%J#1,Q!33!81!!!!,!G!!#J(!!
!,!!!"%'#!*a!J!!3,!!!!d#!!"")!!#-,!!!"N#!!)5!(!!#9!!'2R`%"h3X"!!
$3B)!%(b!"h3X!!!03))!$$J!!!'`(3!!9'!'2d'#!$KmJ!Gd,!!!'d##!!`i!!!
#X"d!!(b!"h3X!!!Z3))!'+!F!!j8!!A[3B)!$$J!!!+`(3!!U*d!!(b!"c9"JJ!
8Iq2lH%J!#X&J!!!!1m!!!Ar$mhL!!3"S1#%!B(`)!kDlJIr`6S!!)!!!!!!!!!!
!!!!!!,m"rq"m#!+QI2`lH(ai'hKmQ50iI,SVH(cE-hJlr!!"1m!!!*!!!3!)1!!
!!*3KrU#B!3!iLkF!!%J!!1L)(`!!,!!!AN##!,5-(`!"I!!(G#`!!$*"JJ"F3)!
!&#`!!$""JJ!B3)!!-%J!!)!X!!!d3)!!H%J!!&JS'!!!3B)!G(m%`hJiB3!i5!!
4U@!!!!")!!"J+"N!!%'#!&Kr*-Yi1'%!1%J!%BeJ!!!!5!!!4#JD!!""JJ!mId6
6H$KK!$K)!"&aB!!!!%J!!#JS'`!!3B)!)(pNfhJiB3!i5!!49@!!!!")!!!-1rr
rrdJ!!!`lhJ!"5!!!*)L"!$JiB3!i1!3!!CJ"!$K8"!BqI)!MH)LI!!"mJ`'Z1pi
!!6[r!!&r``FdIk!(0(`$!!""J2m3Ii2MH$L"!$K)!"(*B!!!!)!"!@Ji)3&JZ`(
ri(`)!kC1J!!J!!!!!!!!!!!!!!!!I'!(0#`!rj3iB!!!3B)"&%#!!&JX!1aS3B)
"+%#!!#JX!+BF3B)",%#!!"!X!+BB3B)"+%k!!#!X!0aK3B)"$%k!!#!X!1ai3B)
!k%#!!"!X!1aZ3B)!j%k!!#!X!2mq3B)!b%k!!#!X!2r93B)!M%#!!#`X!2r43B)
!Q%#!!"3X!2r23B)!M%#!!*!!6S!!)#`!rp0"JJ"X5!!!F#`!rpa"JJ"!3)!!(#`
!rpT0JJ!J3)!!1#`!rpP!J!!i6S!!)#`!rpj"JJ!-6)!!)%J!!!`iB!!"6S!!)$K
J!!*1J!!J1'!!$Nk!!#!iB!!$6S!!)$KJ!!41J!!J1'!!"8k!!#!iB!!'6S!!)$K
J!!G1J!!J1'!!#%k!!#!iB!!*6S!!)$KJ!!T1J!!J1'!!#dk!!#!iB!!-6S!!)$K
J!!K1J!!J1'!!$8k!!#!iB!!26S!!)$KJ!""1J!!J1'!!%8k!!##r`IriI!J#TRa
q'hKmJb0iN!!"!!L8)Ik`5rrqLAar'hKri!Fe3))!3(r$mhJiS3!i1-%!2$MK!%!
iJ!!'5!)dKB""!"5!`3!mIm2cH$MK!%!iJ!!'1+!!#%J#0T'!33!85!!!4(r$mhJ
iS3!i1-%!2$MK!%!iJ!!'5!)d5B""!"4rjIYi1'%!5$L!!rC)!MCeJ%%!&)"K!$`
iJ3")5!)f0B""!"5!!3&B1#%"8,["rrKm#!1Q6S!!)!!!!!!!!!!![`(ri(`)!UC
mH"YiJ')-k(bC)hKmZLYiI0XcH(cm1hL3!!%!#*3KqC!!5!)dQB""!"4mB"YiJ')
-S(`H!hK)!M60J%%!&(ap'hJiB3"!5!)deB""!"4)!")pB!!!!(m$"c3iJ!!!5rr
[EAar'hJiJ!!"5!)eFB""!"4rB!Fe3B)!X(rMqhJiS3!i1-%!2$MK!%3iJ!!&5!)
cEB""!"4r)`Fd1)%&6%J#09@!33!81'%&6$L#&9")!!hpB!!!!(p$"c3iJ34-5!)
e0B""!"3iB39-1)%%6%J!$GeJ!!!!1'%&6$L#&94)!!h0B!!!!(pM"c3iJ34-5!)
e"B""!"3iB39-1)%%6%J!$DeJ!!!!J'%!2$L""8a)!M6pJ%%!&(rMqhKrC0Yi5rr
q(8J!!%Kr!!Fd,!!$pN##!$arirYi1+%!1$M"!$`ii3"%1)!!"NJ#-V@!33!8J-%
!2(rMqhJii3"%1)!!"MLJ!!K)!M6"J%%!&(rMqhJiS3!i1-%!2$MK!%3iJ!!$5!)
bIB""!"4r*-YiIdA6H$KK"8a)!M5TJ%%!&$KK!d`iJ3*-1+%"6$M"!%a)!M5TJ%%
!&$KK!d`iJ3*-1+%"6$M"!%`ii39-5rrkY6KJ!!!iJ!!!1+!!!$M!!!")!M54J%%
!&)"K!$`iJ39-5!)d)B""!"4rirYi5rr`aArMqhK)!M)YJ%%!&%J!#@9J!!!!Iq2
lH%J#-KQ!33!85!)e%B""!"4rirYi5!)e(B""!"4r`r0i1)%!1NJ#05@!33!89i!
'2d'#!"bS!3!k,!!!!8'#!"`X!!!#3),rf%J!!"#S!3!k,!!!!8##rmKrirYi5!)
e"B""!"4r`r0i5!)e%B""!"4rSqYi5!)e(B""!"5!B3"!5!)e+B""!"5SB3!kJ!%
'H$JK"R"m#!1QZ`(ri%k!!#!!!!!!!!!!!(`)!UBii!!!N!!"!!L8)Ir!5rrp-B!
"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!#r`IriI!J#TRaq'hKmRb0iN!!"!!L
8)Iq`5!)bHB""!"4r`r0iIq6lH$LK!$Ji`3!m11%!3%J#-0f!33!81'*C1%J#3m'
!33!8U'%!3UL"!%4)!N#CJ%%!&+KK!%DSJ3"%5!*$+B""!"3iBPNS5!*$PB""!"5
!!3"B1#%!8,["rrKm#!1Q6S!!)!!!!!!!!!!!Nq(rr(`)!UBiiPAdN!!"!!Ji`PE
FP#(rX)$R!!!iS3!iU!B!!)$(!!"8!!Jm11*4Y(`'!Uk!a`!!(!!%&S$'!!"rjJ)
85!!%h@!!!!#SI`&+I'!(08#"!"!iJ3!i5rrLY8J!!"!iJ3!i1'!$k%[riU@!!3"
B1#%!8)2Krram#!1Q6S!!)!!!!!!!!!!!!!!!!*2Krram#!+QI*mMH*!!!3!)P#(
qX$LK!$K)!!4jB!!!!$KJ!!&)!MLeJ%%!&$KJ!!P)!MMCJ%%!&$KJ!!&)!MLeJ%%
!&(rJ"c3X!!!%3B)!,%#!!"!X!!!$3)!!&%J!!"`X!!!'3)!!&%J!!!`li!!25!!
!#$[J!""rjIYi1'%!3$L!!qK)!M'YJ%%!&)L"!%!iB3""1+%!1$M!rrp)!MM0J%%
!&$KJ!!")!MK*J%%!&)!"!9Ji)3&3Jq(rr(`)!kC1J!!J!!!!!!!!!!!!!!!!Nq(
rr(`)!UBiiPAdN!!"!!Ji!!!!1-*@h*3KrU!j!P'dN!!"!$JiS3"%U!B!!)$R!!"
8!!JmJ-F!!)$S!!"m"J+ZJ-F!!"`!""CrjJ)85!!$G@!!!!!iB3!i5!)i@B""!"4
)!MKTJ%%!&)###l!iB3!m5rr0dBJI!%!S!!!!3B)!R$KK!%`iR`"!5!!+'@!!!!#
)!3"-+!!!"d'!!'3i!!!&1))`I*J"!%`iB3"-5!!*T@!!!!#)R`"!9'!'2jL"!%a
"JJ!m1'%!6$L!!!e)!!S&B!!!!(aJ"c9"JJ!NI'3EH$LK!%`iB!!"5!!++@!!!!#
)!3"-+!!!!%'#!##)J3"-1'%!66LK!%3i`!!!5!)hMB""!"4)!!")1'%!6$L!!qJ
iS!!45!)`2B""!"4rirYi11%!6$L!!!!iS!!!1-!!!%[rpQ')J3"-1'%!66LK!%3
i`!!!5!)h4B""!"3iB3!m5rr0-B"K!$JiJ!!"5!)i0B""!"5!!3&S1#%"B)2Krra
m#!1Q6S!!)!!!!!!!!!!!I!J#TT!!!3!)P#(r`%J!i69J!!!!J!%!5$JK!%"m#!1
Q6S!!)!!!!!!!!!!!!!!!!(`)!UD3!!%!#*3Krl!iS3!i1-%!2$MK!%")!Le*J%%
!&$KJ!!-iJ!!$5!)Z%B""!"3iB3"!1)!!%$LJ!"")!Li9J%%!&$KJ!!%iJ!!"5!)
YlB""!"5!!3"B1#%!8(`)!kC1J!!J!!!!!!!!!!!!!!!!Nq(rr(`)!UD3!!%!#*3
Krl!iS3!i1-%!2$MK!%")!Lc9J%%!&)"K!$a)!Le"J%%!&&4J"$p!JJ"%5!)Y5B"
"!"4mIaYiJ'%!2$L!!!&)!Le0J%%!&%J#,5f!33!81"m!"R`!'%""JIr`J'%!2$L
!!!")!LdTJ%%!&)!"!&Ji)3"3Jq(rr(`)!kC1J!!J!!!!!,q"rr"m#!+QI,iVH(c
I-hKmI"YiI*dMH*!!!3!)P#(rS$LK!$Ji`3!m11%!3%J#,$@!33!8Im6cH(rPqhJ
iB3"!5!)[)B""!"5SS3!iIi2MH)$"!$arT1Yi11%!3%J#,Lf!33!8U!%!1&3!"hY
"JJ!BJ'%!2+L"!%+SS3"!5!)ZrB""!"5!!3"S1#%!B,Z"rr"m#!1Q6S!!)!!!!!!
!!!!![k(rp(`)!UCm[bYiI(dEH(bH)hL3!!%!#*3Krk!iS3!i1-%!2$MK!%")!LZ
CJ%%!&+LK!$KrSqYiIm6cH(rQqhJii3"!5!)YTB""!"5!!3"S1#%!B,ZKrr4m#!1
Q6S!!)(`)!UCmTbYiN!!"!!L8)Ir!1+%!1$M"!$a)!LY*J%%!&)!"!%Ji)3"!I!J
$TNk!!##rSIrdI!J#TRbr+hKmI4YiI*iMH*!!!3!)P#(rS$LK!$Ji`3!m11%!3%J
#+`Q!33!8U+%!1(qMkhL!`3!mIm6cH(rRqhK)!Ld9J%%!&)!"!'Ji)3"JZk(rp(`
)!kC1J!!JNq(rr(`)!UCm[bYiN!!"!!L8)Iq`1+%!1$M"!$`ii3"!5!)UXB""!"5
!B3!mIq6lH%J#2bQ!33!8J!%!@$JK!&#$iIrmI!J$TNk!!#!!!!!!Nq(rr(`)!UC
m[bYiN!!"!!L8)Iq`1+%!1$M"!$`ii3"!5!)UBB""!"5!B3!mIq6lH%J#,''!33!
8J!%!@$JK!&#$iIrmI!J$TNk!!#!!!!!!I!J#TT!!!3!)P#(rX$LK!$Ji`3!m11%
!3%J#+KQ!33!8J'%!2)!"!&Ji)3"3I!J$TNk!!#!!!!!!!!!!!!!!!!#r`IriI!J
#TRaq'hL3!!%!#*3Krk")!LYeJ%%!&(ar'hJiB3"!5!)VIB""!"5!J`!'Iq!(0B!
$!!U3!)%!1+KK!$L3!!%!2$J$!"4m!!Fd3B)!$(`$qK4m!!FdX!%!1)!"!$b!B3!
iN!"q!!#3!"i!")!"!'Ji)3"JI!J$TV["rrK1J!!JNq(rr(`)!UCmIaYiN!!"!!L
8)Iq`J+3!!)!%!!3iJ3"!N!#K!$L3!!%!2%J#+C'!33!8U'%!3UJ"!%DSi3!kI'-
!8+J"!$jmCJFdU)%!3(bR!&#SB3"%I!8`!(`%'&"m!`Fd3)%!'(`'+&"m!!j`I!!
"P(`'"c4)!!!)1-!!!+L"!$KmB`FdU!%!2(`%!&"m!"J!3)%!((`$!&"m!!j`I!!
"P(`%!K4m"3Fd5!!!#(b&)hKm"c)8Iq2lH(`%"c3i`!!!5!)UHB""!"5!!3"B1#%
!8)2Krram#!1Q6S!!)!!!!!#6iIrmI!J#TRar'hL3!!%!#*3Krl!iB3!i5rrqLAr
MqhJiJ3!i5rrqrB!"!&Ji)3"3Jq(rr(`)!kC1J!!J!!!!!(`)!UCmK`FdN!!"!!K
mE"YiP#(r`)J&!!#*!`!!I!B(0(`(-!"!J3!BI+-VH(f%BhK)!!,4B!!!!%J!!*4
mC$"31!-!!A`*"c4p!`FdI5",H(aM!K4mK6S81@2rrhe&-K4pC&S811!!!%J!!"L
)#J!!18VrrcMR!!'B#`!!1@[rrhcM"c4p)!FdI!-!!%'!rq"mLb0i18`!!6MJ!!"
)!!!BL!S!!$P+!!%ij`!"Q!X!!$PV!!&mi`FdI3!(0(`$!!""J2rJI!C#&*J&!!#
!!3")1#%!3(`)!kC1J!!J!!!!!*2Krram#!+QI(mEH*!!!3!)1!3#!(rNqhL8)Il
!9!1b[NJ!!%&J!!!!1'%!1$L!!qJiS!!(5!)TIB""!"4rirYi1)%!1%J!!GeJ!!!
!J!%"5$JK!8#$iIrmI!J$TNk!!##rSIrdI!J#TM[L9aamR50iN!!"!!L8)Iq`5!)
SmB""!"5,h3!!Im!(0#`!!!4"J!!m1"lrrRrMqhKrTHYiI!3(0%[rrS%i(J!"I!!
(0#`!!!K"J!!B1"lrqhrMqhKrTHYiI!3(0%[rrPf!!3"B1#%!8,ZKrr4m#!1Q6S!
!)!!!!!#r3IrSI!J#TRap'hKmRL0i1q!!rj!!!3!)P#(rX%J#2If!33!8I(XEH(p
M"c4r`!FdI!-!!%#"!)`iB!!Z5!*-PB""!"3F!`!$I"S(0%J!!%b)(3!!9!$iIR`
F"c9"JJ"8Ii2MH(qPkhJiJ!!"5!!#&@!!!!"rSqYi5!)pSB""!"4rK!FdIq!(0(`
%!!"mHaYi3)!!#(qIihKrB`FdId!(0(r%"c4m!`)8I!3!!%'!rk4rj2YiIkAVH$K
L&9K,rrf&J!%!@$JK!&#l3IrSI!J$TNk!!#!!!!!!!!!!!!!!!!!iB!!"6S!!)!!
!!!!!!!!!1)*4X$MJ!!#!K!!!J-3!!%J!!#5SKJ"BI'!(0(`%!!"!JJ!-I1-lH%k
!!#!iaJ"N11F!!6L#9Ujmj3FdU!3!!(`&!!""J2r3I1-lH%k!!##)i`!!L+3!!&6
Q"Mjm"LS8,!!!rd'"!#"8U!BqI!G#&$LQ!!'B!`!!I+-U&$M%!!&)!!!J1!!!rjJ
$!!!i!`%!1-3!!BN%!!"p!d0iI+-!8(d$3hK)!!!BL!B!!$M'!!%iBrrrQ!8!!$L
P!!&mB!Fe3),rk%k!!#!!!!!!!!!!!)M$!!#)"!!!9-8'2R`&!%"!JJ!i11!!!%J
!!"L-S`!"M!3!!A`&!%"!JJ!J11F!!96P"Mj8`!BqI!8!3%'!rq!iB!!"6S!!)$K
J!!"1J!!JL+3!!%J!!"L)"!!!1)3!!6LPrrqB!`!!1'-!!AbJ"c9!J2rS6S!!)!!
!!!!!!!!!L--!!$MJ!!&)!!!JM+-!!95!"Mjm"3"!3))!$(cM1hK1J!!J11F!!Ac
P"c4m`!FdI!8!!%#"rpJiB!!!6S!!))M&!!"mb$0iI-3`8(c!"c9!J!!)1-!!!(c
!"c@Ba3!!6B)!)(aQ"c4mJ`FdI1-U&$KMrrpm"N"3I!-!8(b&-K4mjMS8I!B(0$L
J!!")!!!BL!F!!$MR!!%iT3!"Q!3!!$L%!!&mS`FdI-!(0(`$!!""J2rJ6S!!)!!
!!!!!!!!!L--!!$N!!!#)j!!!I-!(0(cP"c4m"3!!3B%!J(bR-&!i"3!"I!N(0$M
!!!&mbM0i1@!!!8J!!#4pC3FdI1!(0(`&!!"!JJ!-13!!!8J!!!`jD`!"18S!!98
!"Mp!JJ!FI88(0(eJ"c4mSbLZI!3!VR`&!%""J[r%93!'2d##!!`iaJ!"15Rrrhd
J"c9"JJ!-93!'2d'#rjKp!d0i6S!!),qKrr4m#!+QI(i(0$[L9NjmIL"3N!!"!!J
i!`!"P#(rX,!I!!#S(`!!,!!!#N#"!!`i!!!+X"m!!$ZJ!!")!!!SI"hb&(`$"c4
)!LpTJ%%!&(qJ"c3iJPBN9!!31RaN!5il[3!"U"m!!(qM"c4m!`!!3B$rd)!"!&J
i)3"3Zk(rp(`)!kC1J!!J!!!!!!!!!!"m#!+Q1'*Yh*!!!3!)1!!!#(`*!kBiJrr
mP#(rJ$LK!$5!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%1'%!1*!!"3!%5!)M@B"
"!"4)!L0TJ%%!&)!"!)Ji)3#!I!J$TNk!!#"m#!+Q1'*YQ*!!!3!)1!!!#(`*!kB
iJrrmP#(rJ$LK!$5!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%1'%!1*!!"3!%5!)
LqB""!"4)!L-*J%%!&)!"!)Ji)3#!I!J$TNk!!#"m#!+Q1'*X**!!!3!)P#(r`)J
$!!!S!!!!3B)!#%[rrb@!!3")1#%!3(`)!kC1J!!JI!J#TMKLE953!!%!#$J!!!K
m#31Q1)2rr*3Kri!iS3!dJ'3!")3%!!L3!'8!"*3&!!K#!2r`J!3!"$KK!$L3!!8
!"%J#)QQ!33!85!)LHB""!"5!!3#)1#%!J(`)!kC1J!!J+!-!!$ML-)4!JJ!-1-$
rrdJ!!$#!`K9dL!-!!&6&"MidK2rrI+!#H&3!&ETm"`!Z9-A#2MKM!!&mTJ*i3),
rh'c$rrq3!-)9G'KMrrp1J!!JL!-!!$5%rrmiSM5%I!8!VTJ$!!!iB`!"3),rk%k
!!##rBIrXI!J#TRbF)hJmS(CPI(XEH$KPFR-iJ!!"N!!"!!L8)IkJ5rr"lAap'hP
"JJ%FJ(d!!$[K!%&rj2Yi1m-!"SJ$!!Cm!!GdIm$b&)Lq!!%iIJ!#I+8(G%J#*&'
!33!8L"i!!AqMkhLB!3"!5!)Y9B""!"3iB!!"5!)T%B""!"3iB!!!5!)T(B""!"3
iB!!*5!)T+B""!"4rBpYi5!)J0B""!"3iJ3!i5!)J3B""!"4rJ!Fd,!!!!d'#!%4
!J!!8,!!!!8'#!"K!J!!N5!!!6#`!!!9!J!"%5!!!0+KK!$`i!rr*X!%!1%J!!$#
SB3!m1!2ral!"!$K)!!!JU'%!2$J$rlQ`!3!i5!!!%+KK!$`i!rqYX!%!1)L"!%"
rirYi1+%!1$M!!!&)!LMaJ%%!&$KJ!!")!LK9J%%!&$KJ!!a)!LKjJ%%!&)!"!@J
i)3&JZf(rl(`)!kC1J!!J!!!!!,r"rrKm#!+QJ')-S*!!!3!)P#(rX%J#)$@!33!
8I(iEH$KK!$a)!L!pJ%%!&$KJ"miiJ!!"5rrDhAar'hP"JJ"B1)!!!8J#)0f!33!
8Iq2lH%J#(b'!33!85!)L'B""!"4rirYi1)!!"%[rrMPrirYi5!)L'B""!"3iJ3!
i1'!!!%J#)L'!33!8Iq2lH%J#)Lf!33!8Im2cH%J#)P'!33!8J'%!2%J#)Pf!33!
8J!%!@$JK!&#l`IriI!J$TNk!!##r`IriI!J#TM[L9d#3!!%!#(aJKR"m(JFeP#(
qX&4J"$k`!3!i3B)!p%J#(FQ!33!8Im!(0#`!!qP!JJ"mU)%!1(b!"c3X!!!#3B)
!(%#!!&!X!!!"3)!!#%J!!%4,rrlP5!!!V$KL9[')!`!!+!!!!%'#!*bSI`'81)%
!1%[pia9J!!!!I'!(08##!)5SB3!i5!"0X@!!!!")!!"d1'*IG$LK!$b!B`!!5!*
2kB""!"4)!!"F,!!$kN##!&3iBPbhU)%!1)J$!!"m!`Gd1!-!!A`%!!"!JJ!81'*
@j6J!!!'B!`!!5!!!++Kr!C3iJ3!i5rhLS@!!!!"mB!Fe3))!%+KK!$K)!%dpB!!
!!$KJ!!")!P(CJ%%!&)!"!9Ji)3&3Zm(rq(`)!kC1J!!J!!!!!,r"rrKm#!+QI*i
MH&4r"ck3!!%!#&4Jjcq8)Il!3B)!&(`$!hK)!KmPJ%%!&%J!!!`i!!!!Q"i!!&I
M"MiiJ3!i5!)I#B""!"4r`r0i1)%!1%[rpl&r`r0iJ!%"5$JK!8"m#!1QZm(rq%k
!!#!!!!!![m(rq(`)!UCmRb0i1))eK(aq'hL3!!%!#*3KrX!iB3!i5rri39I%"Mp
"JJ!X1!!!!TJI!!!iS3!j9)$R2RaP!+j8J!FqQ(m!!A`&!+kB(`!#5!!!%(rMqhJ
iJK9F5rri"B!"!8Ji)3&!Zm(rq(`)!kC1J!!J!!!!!!!!!!!!!!!!11*9k$NJ!!#
!j`!!J3F!!%J!!%5Jk!#`9)!%2R`(!%"!JJ!XJ!J!MLJ'!!"8!!BqX!8!!%f#!##
)#!#lI!!!0&3!hMkB"J!!6S!!)$NT!!%j#!%1I5F(0(aJ"c4m"`!!3B$rY%k!!#!
!!!!!!!!!!(`)!UBiJPASN!!"!!KmB!Fd(!!"$T3Krm#!K!!!J)3!!(bN!K5!"3#
19!!'2V!"!$L)a3#m9-!'2d'#!$`iBrrr1+AqmNJ!!(L)"3#l+!!!!%'#!'5)K3#
m9-!'2R`%!%"!J!"8J!8!MP3!"Mk`!3!iL-8![+J"!$JX!!!%3))!'+#&!,)iS3!
i1-!!!%[rr`9)!!!d,!!!!8'#!"3X!!$l3B)!$#`!!!C!JJ!F9-!'2d'#!"3iBrr
r1+AqmRaJ"c9!J2q)U'%!1)!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!&4J"MmiSPD
d1)*4Y$KJ!!!ii!!!3B)!3)#%!!#!a!!!5!!!))J'!9iS!!!!3B)!$)!'!8jmB`)
811F!!6M'""DS"3!!I13(0(`%!!""J2rB6S!!))#%!!#!a!!!5!!!,)J'!9iS!!!
!3B)!')J'!9NS!!!"3))!$)!'!8jmB`)811F!!6M'""DS"3!!I13(0(`%!!""J2r
-6S!!)!!!!!#rSIrdI!J#TRap'hKmRL0i1q!!!*!!!3!)P#(rX%[qf49J!!!!9'!
'2d'#!"L!(3#fI(i#&$J$rrpm!21@Iri"eRrMqhL!!3"B1#%!8(`)!kDlSIrd6S!
!)!!!!!!!!!!!I!J#TMKL9K53!!%!#*3Krm#!B`!!5!)HIB""!"3iJPbiI'8(0$K
J!!'S"!!!I!8!!%'#!#3iJPbkU!3!!(`&!!""JJ!81)*F[+J%!!"m"3!!3))!#$K
J!!#!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!#pSIqdI*!!)hKm#!+Q11*@B$L#9Q4
mEaYi1m*I`$R#9HamX5Yi1i*D[(c5-hJlSPBF1D*@@$X3rrmliPAS1d!!!$XJ!!!
kB!!!N!!"!!L8)IpJJ'F!!+J%!!D3!'%!3$KJ!!LU[J!!X!%!1N[rZpP8B!Br3))
!%%[rrae8B!Br3B)!#$TJ!!%iBPES9R3'2SJ$!!!S!!!!3))!&&BJ"Mp!JJ!-Jbd
!!%J!",`i!!!!J(m!!*!!(3!!5!)GRB""!"48F`Ba3))!%)"r!!")!KeaJ%%!&)"
r!!"9i!BrJf-!!%'#!K`k`!!!5!!#!$Kl!)iiJ!!!5!)FLB""!"48B!Br3B)"i)J
E!,XS!!!!3))"e$Kl!)iiJ!!%5!)FCB""!"48B!Br3))"[(pMfhK,r(M*B!!!!(a
J"c9"J!'S9N!'2d'#!!bS'`"@X"i!!)$E!+CrBpYi1)%!1MLK!%!ii!!'5!!ie@!
!!!"mB!Fe3))"D+JF!8!X!!!!3B)"A)"l!)j@)!BrJ*X!BP4J"Mk!H`"QIeSL&,!
"!$ar@KS83B)!(+J"!$`X!!!"3))!%(l$XhK,rr`&X'%!2+J"!$`iB!!!Q'%!1#`
!!!4!JJ!BS*X!XRl$XhJiS3!m1-%!1%[rqfP@)!Br3B)!++J"!$`X!!!"3B)!j#`
!!2Y"JJ$F,!!!"N'#!03X!!!(3B)!c)"l!')X!`!!3B)!9+JF!8!X!!!$3B)!$#`
!!!&!JJ"!I!2#&(`!JpCqm!(@1(X!d$L!!!")!KXpJ%%!&&4J"Mp"JJ!)IcQk&)J
"!$JS!!!!3B)!#&Eh#$ar1ES8J(X!CL`$!!""JJ"8U"`"3#`!!!0"JJ!-,!!!!N#
#!%"m!m)8I!#$eRl`!GBiH`$31)!!!%J#'Z'!33!89'!'2d'#!!Kr1ES8L!%!1#J
!!!""JJ!)9[F)2(mjZK4rBpYiIJ5$H%[rr'Pr14S8J(d!!$J$!!'3!"d!!$Yl!3i
keJ!"J!i!!(l$"c4m!`!!3B$pq%J!!K`k`!!!5!!#")JE!,XS!!!!3))"m$Kl!)i
iJ!!%5!)DCB""!"48B!Br3))"f(pMfhK,rV!jB!!!!(aJ"c9"J!(%9S!'2d'#!"K
rBpYi5rmYc@!!!!"8B!Br3B)"U&C!"Mp"JJ!-U"X!9V!H!!#!f`#QIf2EH$L"!$S
iS3"!11!!"NJ!0VPJ!!!!I'!(08##!@LS(!&!,!!!!%'#!9b!H`#19L!'2i#E!'*
8B!BqJ(X!CRpD)K5`!3!mIeSD&%'#!"bS!3!m,!!!!8##!""q`l0i5rrjkE"K!$b
S!3!m1'!!!*KK!$JX!!!%3))!'+#E!,*q`l0i1+%!2$M"!$K,rrP09L!'2d'#!#L
S!3!m,!!!!8'#!13X!!$l3B)!h#`!!!C"JJ$8,!!!"d'#!-b!H`"L,!-!!%'#!&5
S(!&!,!!!!d'#!!`X!!!"3))!3(`$`K4m!)2@I[!"eMKl!0!iJ!!!5!)C)B""!"4
8B!Br3B)!#(mjZK5)!3!i+!!!!%'#!!K@p`JmIcQk&)"l!'BX!`!!3B)!9+JF!8!
X!!!$3B)!$#`!!!*!JJ"!I!2#&(`!JpCqm!(@1(X!d$L!!!")!KM&J%%!&&4J"Mp
"JJ!)IcQk&)J"!$JS!!!!3B)!#&Eh#$ar1ES8If2EH(i%JhK,rrT0IcND&)"p!!!
i!`!"N!!G!!!lH`%11YB!!B!1!!"q``FdI!-!!%'!rI4@B!Br3))!%)"r!!")!Kc
eJ%%!&#JC!!""JJ!-9J!B1(mj!K4@)!Br3))!+(hMHhK,rrP4IcND&$L#9L!iBPE
S1!!!!*-Y!!#64!!!Q!-!!,+q!!"r)mYiJ!%!U$JK!+"m#!1QZD(rY%k!!#!!!!!
![k(rp(`)!UCmR50iI,iVH(cI-hKmC"YiN!!"!!L8)Ip`1'%!2N[rlhf6`3!k1'%
!1,1K!$K)!$mGB!!!!(aJ"c9!JJ!-J!%!1T!!(`!!J!%!Q$JK!*!!Zk(rp(`)!kC
1J!!J[b(rj(`)!UCmH4YiI*SMH(bl+hKmh$0i1m!!!C!!!3!)P#(q8$J!!!#6B3"
+1q%!D,-K!%iiB3!iN!!"!%5633"S5!)DdB""!"4mI4YiIk!(08'#!("rS!Fd,!$
re8'#!'4AJ!Br3B)!A&I!"Mp"JJ"8If2EH(p&dhKrj[YiIb3(0%[rrb&mB!Fe3))
!1$L#9d!iB3#)1m!!!$L%!**,rqkP1!%!L,-K!%iiB3!iN!!"!%T)!KTKJ%%!&(a
J"c9"J[pSIk2VH)!"!EJi)3'`I!J$TVXKrq41J!!J!!!!!!!!!!#rJIr`I!J#TM[
LB"CmI"YiI*dMH(bq+hL3!!%!#*3Krl#S(`!!,!!!!%'#!*3iJQ9`J!3!!#J!!!"
!JJ!)5!!!%$L!!2p,rPXpB!!!!)LF!!!i[!!"U(m!!$M!!!",rbL&B!!!!(aJ"c9
!JJ"89k!'2d'#!#3i!!!JU(m!!*J"!$JiS3!i1)!!!6M!!!",rbK9B!!!!&I!"Mp
"JJ!N1!!!$DKr!!#B!3!i1+%!1$L!!!%i`!!!5rmS,@!!!!#!!3"B1#%!8,Z"rr"
m#!1Q6S!!)*2Krram#!+Q1+*J&Rar'hL3!!%!#*3KrX#S"3!!,!!!!%'#!$KmK50
i1'%!1$L!!r9)!K3KJ%%!&$KK!$JiJ!!"1+!!!%[rrZerirYi1)!!!$LJ!!&,rrl
GJ!%"5$JK!8#$iIrmI!J$TNk!!#!!!!!!Nq(rr(`)!UBiSQ!@I(mEH*!!!3!)P#(
q`+J&!!!X!!!!3B)!1(b&)hJiB3!i1)!$p8J#%l'!33!81'%!1$L!!!%iS!!!5rr
qIArMqhJiJ!!"1+!!!%[rrQf!!3&)1#%"3)2Krram#!1Q6S!!)!!!!!#rJIr`I!J
#TMMLB"CmR#0iI,dVH(cH-hL3!!%!#*3KrV#S"`!!N!"K!@JX!!!!3B)!m%J#&2'
!33!81)*@c(ar'hLSC!!!5!)9*B""!"4raI0i1'%!1$L!!r9)!K-CJ%%!&(rMqhK
)!K8&J%%!&$KK!$JiJ!!"1+!!!%[rrGNi!!!%Q!%!1$KK!@JiJ3!j1+!!"%J#&+Q
!33!81'%!1$L!!!%iS!!!5rrpVBLp!!"rJ`Fd1)%!1$!&rrpm!#N39"m'2NJ#%QQ
!33!89q!'2R`!!$4rj2Yi1'%!1&3&hMj,rree9q!'2d'#!$JiJPFJ1'%!1%[rkm&
rT1Yi1'%!1%[rkZ8iJPF`1'%!1%[rkYNiB3!i1)!!!$LJ!!&,rrdjJ!%"@$JK!9#
lJIr`I!J$TNk!!##r`IriI!J#TRbI)hJmS%aRI(iEH*!!!3!)1'983cL!!qL8)Ir
!5rqa65J$!!""JJ!SJ)-!!)!%!!#3!"i!!)#$!!#!"!!%N!!I!!")!KcCJ%%!&%J
!!%JiBPpQL!-!!#J!!!""JJ!J2'"846J$@&3mB(4PN!!H!!!i!hKdN!!I!!")!!!
F2'"846J$@&3mB(4dN!!H!!!i!hKdN!!I!!#!!3")1#%!3,["rrKm#!1Q6S!!)!!
!!!#6iIrmI!J#TM[L@P`jB2rrN!!"!!JjJPTB1!!!!*3Krl#$r`!!JB`!!*!!B3"
S1'%!D*!!J3"X1)%!1*!!S3"`1+!!!*!!`3"d1-!!!*!!i3"iN3%!I*%K!)#433#
%Nq%!1*'"!$b4B3"#X!%!3%[r'hPJ!!!!I(mEH(rJ"c9!JJ!81'%!D$L!!!!iS!(
r5rqV'ArMqhL!!3"B1#%!8(`)!kD$iIrm6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+
QI(iEH(r%mhL3!!%!#*3KrE!iB3%m5rrU"6KK!6`iJ!!Z5rrU+Aar'hKri!Fe3B)
!A$KK!$`iJ3%m5rrTiArNqhJiS3!m1'!!!8[rkN%iB3!m1)%!1%J#)P@!33!8J'%
!1$L"!$`iB`!"N!"K!$K)!K!PJ%%!&*[K!6`iB3%m1)%!2%[rk-P)!!!31'%"2$L
#&@",rqLjL!%"2#J!!$p!J3!-1!!!2jJ"!6ar`r0i1)%"2%[rk@Q!!3*B1#%#8,[
"rrKm#!1Q6S!!),mKrq4m#!+Q1+*ICMYJ!!!lJPrq1k*J#6[#B"Bl)PCN1q*A3*!
!!3!)P#(q-)J&!!#`B3(U+!!!!*!!J3(XNf%!B%'#!#!iI`'41)!!!%J#%9f!33!
89'!'2d'#!!JlB!!"L"d!!&Gl"MiS!!!!3))!-)JI!C!!,!!!!d'#!$K!J!!8,!!
!!8'#!,K!J!!85!!!X#`!!!9!J!#S5!!!0+Kj!!Bi!!!#N!!"!Hb`B3(U5!!!N!#
SQ3!'1+%"kMM"!H`iB!!"5rkai@!!!!")!!"d9f!'2d'#!"JiB3"J1)!!!$LJ!!"
,r`j4B!!!!$b!D@bSH3!'1)4RCMM"!HSii3(X1+!!!8J#%R'!33!8I'!(08'#!"5
SH3!'1!!!!T!!!3(XX'%"kPGJ"Mp"JJ!B1'%!B$L!!!!iS!!"5rm0r@!!!!#SJ3(
U1f%!ES!"!HarBpYiX)%!D$LI!*+3!!%!DN[rjrQ)(`'5,!!!!N'#!)a!J!!3,!!
!!8#!!"4)!!'m,!!!"%#!!E4)!!$J1'%!D%[r(`PJ!!!!1!!!#(`*!kBiS3!81)%
!C)"N!!5%"!!)N!"P!!58"3!)3J$rm)!%!!53!!8!"+!%!!L`"3!)J'%!')#"!"b
!S3!JJ-%!*)$K!#L"!3!XJ5%!-)&"!$4,rrbGI(SEH%J!!83i!!!)I!N$TMLK!"3
iJ3"NJ'3!")3%!!L3!'8!"*3&!!K#!2r`J!3!"*!!"3!%S!3!#,!&!!L!B3!BJ)%
!()#K!##!`3!NJ1%!+)%"!#b")3!`J8%!0%[rr$emHKYiId!(0#`!rp"!JJ$F1d!
!!%J!!03i!!!)I!N$TMLK!"3iJ3"NJ'3!")3%!!L3!'8!"*3&!!K#!2r`J!3!"*!
!"3!%S!3!#,!&!!L!B3!BJ)%!()#K!##!`3!NJ1%!+)%"!#b")3!`J8%!0%[rqme
mHKYi5!!!D(pMfhK,rraY1!!!#(`*!kBiS3!81)%!C)"N!!5%"!!)N!"P!!58"3!
)3J$rm)!%!!53!!8!"+!%!!L`"3!)J'%!')#"!"b!S3!JJ-%!*)$K!#L"!3!XJ5%
!-)&"!$4,rrYPI(SEH(p!"c3X!2r33B,rP(p!"c9!JJ(iImAcH$KK!'JiJ!!$5!)
3lB""!"4mB!Fe3))"h)JI!C)S!!!#3))!D+Kq!!!iJ3"N5!)DZB""!"5SIJ!!1)!
!!B#K!'4)!KUpJ%%!&$J!!##B!3#`1)%!X6KJ!!")!!!81!!!AjJ%!!!iK!!"1'-
!!AaJ"c3X!!!J3B$rk$KK!,!iJ!!!1+!!!8[rpc%iB3"N5!)9-B""!"5!B3"N1+%
!X$L!!!%i`!!!5!)ZQB""!"3iB3#`1)!!!6LJ!!",rrEpJ'%!C$LK!,!iJ!!!1-!
!!%J#,SQ!33!81'%!X$L!!!%iS!!!5rrfe6KK!,!iJ!2e1+!!!8J##q@!33!81'%
!X$L!!!!iS!!"5rrfX6KL9[JiJ!!!1+!!!8[rpU')(3!!1'%!X$L!!r8S!!!!3B)
!$$LJ!"")!!!BL"`!!(`!!$48"GPq1!8!$(`&"c4)!JZ0J%%!&$KK!,!iJ!!,5rr
h,BJF!!!S!!!!3))!G$KK!,!iJ!2e1+!!$NJ##f'!33!81'%!X$L!!!!iS!!"5rr
f,6KL8E3l3!!!J'-!!)-M!!")!!!SL"N"@5J!!!&!JJ!8Ib2,H$L!!!!iS!!"5rr
er6Xj""Bl@J!"1'*@Y(p%"c5S!`!!I!3!!%'!rmbSS3(U1)*X')!"!H`iBQ`FX+3
!!*!!!`!!J!%"f$JK!G#l)IrNI!J$TNk!!##rJIr`I!J#TML#9HamIaYi1m*A3*!
!!3!)1!!!!T3KrX#3!!%!C+"q!Bk!K!!!5!!J"@!!!!!X!rrr3B)"2$L#9HJF!`%
1J'3!!)"M!!"rJ`)8L"`!ZbJ!!!""JJ%F1(`!MML!!!&)!J`&J%%!&&4J"Mp"JJ%
%U"`!@$ZK!(TrSqYiX!%!G$LH!*+!(!"+N!!"!(C,rq1"1'%!G$LK!,`iJ!!!5rm
H8@!!!!"mB!Fe3))!I)JH!C)X!!!#3B)!-%#!!"!X!!!"3)!!&%J!!'!X!!!%3)!
!@%J!!$!iB3"d5rmDG@!!!!")!!"%Iq2lH$L"!(4,rPM"B!!!!(aJ"c9"JJ"S5!!
!G(qMkhK,rrMT1'%!G$LK!,`iJ!!!5rmGf@!!!!"mB!Fe3B,ri$J!!!#3!!%!1(q
TkhJi[`!'N!!"!$`j!K9%18!!!+Kr!!#!R`!#U0`!@)$m!%T)!)&GB!!!!(aJ"c9
!JJ!8Iq2lH%[r'HPJ!!!!5!!!-$JI!!D3!!%!8MJ!!!!iB3"!U*m!!,#"!&D3!!%
!A)!I!!+3!!%!F%J#%TQ!33!8J!%"5$JK!8#lJIr`I!J$TNk!!#!!!!!!!!!!!!!
!!!#rBIrXI!J#TM[#B"CmHaYi1q*A3(bF)hL3!!%!#*3KrL#SIJ!!I'!(08'#!6!
i!!!!X'%!9$ZK!)+`!3"B1'%!2,!"!&+6S3"15!)5dB""!"4mB!Fe3))!'+KK!(#
!!3"fX'%!I*!!!3"q5!!!+$M#E"KrSqYi1+*X($LI!*+SaJ!!J!8!!,$"!(b3!!%
!IN[riF9AJ!Br3))!K$KK!$K)!K&GJ%%!&)"K!$JiS3$%1)!!!6M!!!")!LV&J%%
!&$KK!-3iJ!!"1+!!!%[rmbQ!B3!i1+%!a$L!!!!i`!!!5!)UYB""!"3iB3$%1)!
!!$LJ!!&,rr-"IfAEH$KK!-3iJ!2e5!))%B""!"3iB3$%1)!!!$LJ!!&,rr,GU(i
!!%[r'$9J!!!!1'!!!&H!"Mq`IJ!!3B)!&$KK!(a,raKCB!!!!%J!!"L)(`'3!#J
!!!0!JJ!-1'%!I%[rr1f!!3(S1#%"i,YKrqam#!1Q6S!!)!!!!!"m#!+QN!!"!!J
i!!!!P#(rB*!!B3"X1'%!1*!!!3"%N!#"!%U``3"3N!!"!&53!+%!D%J#-G@!33!
8I'!(08##!"!iB3!i5!)afB""!"5!!3#S1#%!S(`)!kC1J!!J!!!!!!!!!!!iB!!
"6S!!)!!!!!!!!!!!1'!!!%k!!#!!!!!!!!!!!,mKrq4m#!+QI,XVH(aj'hKmQL0
iI0`cH$[!!!!lS!!"N!!"!!KrB!FeP#(r3%#"!,JiB!)!5!)$eB""!"4mIaYiIf!
(0(p$dhKrj2Yi9!831NJ##*Q!33!81'*@iMM!!!!mJ("KN!$"!%5)!`!!1'4eE,-
K!&!iS!%!1)!!rj!!`3"8+!!!!*2K!&L3!+%!A*L"!'@6J3"XN!"K!(""JJ!31'%
!1%[rrd&mI4Yi9k!'2d'#!#`iB3!i5!)`rB""!"4mIKYiIm!(08##!"3iB3!i5!)
`cB""!"4mIKYiIq2lH%J##q@!33!8Im2cH)!"!-Ji)3$!I!J$TVXKrq41J!!J!!!
!!,lKrpam#!+QI(NEH(bD)hKmZbYiI0`cH(cp1hKp(N0i1Z!!!$[J!!#3!!%!#*3
Krk")!!#-Iq!(0&3$'$Km'KJZI*SD&(q$ihL3!"N!1*2C!#5EZ3!YU)3!"N[rT2P
mH"Yj3B)!@%J#"mf!33!8I'!(08##!%Kr!m0i5!))!B""!"5!'!!!Ib2,H*!!'3!
J5!)`*B""!"4mGaYiI`2$H%J##l@!33!8I`2$H%J#%&Q!33!8IZ!(08##!"Jlr`!
"Iq-(0(pJ"c4m!`!!3B$rE(lMZhL!!3"S1#%!B(`)!kDkiIrF6S!!)!!!!!!!!!!
!!!!!!,r"rrKm#!+Q21"*3hbH)hKm[bYiN!!"!!Ji!!!!13!"!*3Kre#`B3"31'%
!1*!!`3"X1-G1)cMJ!!'3!!%!4*!!!3"85rrqdAaJ"c9!JJ$B2-"TBhr%mhKrjIY
i1'%!1$M'Fb-ii!!%13!!3%[rrUPmB!Fe3))!X$c!D@0ra20iIqAlH$KK!$JiaQ`
i11!!!cN!"!",rrk"I'!(08##!)Jm`'PMIm6cH(rPqhJiB3!i1-CX0$MJ!!)j!!)
!5rrq@AaJ"c9!JJ"J2-"TBhr%mhKrjIYi1'%!1$M'FcJii!!'13!"!%[rrM&mB!F
e3))!1$c!D@0ra20iIqAlH$KK!$JiaR-d11!!"6N!!)",rri*I'!(08##!"!iB3!
i5!)ZNB""!"5!!3#i1#%!X,["rrKm#!1Q6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+
QI(iEH(br+hL3!!%!#*3Krm#!B`!!5!)&RB""!"5!(J!!I!$k&*!!(J!!J!%!5$J
K!%"m#!1QZm(rq%k!!#!!!!!!!!!!!!!!!!#r!IrJI!J#TRbj+hKmQ#0iI2XlH(d
p5hKmfM0iI4a$H*!!!3!)1!!!!*3Krj!!N!!"!%`iJ3"%X!%!3,!"!$k`!3!mX!%
!1V!"!$L`"3!!1+!!",!(!!#`#3!!J!-!!$KK!%b3!!%!6%[rrddiB3"-1)%!1$L
J!!*,rrmp1'%!6$L"!%!iS!!#5rrr,DKK!%!l`!!!1!-!!E!"!%")!!&d1'%!6$L
"!%JiS!!%5rrr#6KK!%`iJ3!q1+!!!N[rr[QSB3!q1q!!!$J$!!'`!3!q5!!",$K
K!%`iJ3!m1+!!!N[rrY8iB3"-1)%!1MLJ!!*,rrl&J'%!5$`$ZDiS!%9'3))!T$a
J4P+SJ3!k1'0&4N[rSF8S!`!!3B)!i+JE!!#!J`!!(!!!"S#%!!"mQJ%ZU"X!!+L
K!$`F!!!'I*S#&,#N!!5SQ`!!1!3!!E!E!!#!J`!!J+3!!$`&[V!S!&"-3B)!1$`
&MjmS!(9X3B)!,&5N!!im")d!+!!!!%'#!"bS(3!!9!!31Rbm!5kSR3!!1!3!!E!
G!!")!JcYJ%%!&%J!!&Jm!lDp+!"1)d##!%bS'3!!2'!r2cKM2cp8!"JiI(J",UJ
C!!#SJ3!m9!!B1(ai!K5`J`!%U"N!!+L"!$T8!"JiI(J#&,#$!!DSH3!!1!-!!E!
C!!!lr`!"U!%!2RrM"c4m!`!!3B$qc$[H!!'S!3"!Im-(0(`$!!""J2k%11!!!%J
!!&Jj!!!!5!!!2(cJ"c4p!`Fd(+!!"P4Q'$KmQ$)8I(SU&+L%!!5S!`!%I)-(0(`
$!!"!JJ!-I"SS,R`B-5ij#!!"U"N!!(d$"c4m!`!!3B$r[$MR!!'S'`!!I1-(0(`
$!!""J2qJ1'!!!)!"!(Ji)3"`I!J$TVX"rq"1J!!JNq(rr(`)!UBli!!!N!!"!!L
8)Ir!5rrC$6L#9UjmC3FdU!3!!(`&!!"!J!!F1'*4X"`&!'5!B`!!J'-!!(aM!K5
,i`"KIq2lH)!"!%Ji)3"!I!J$TS2Krra1J!!J!!!!!,l"rpKm#!+QI(JEH(b@)hK
mZ5Yi1Z!!!*!!!3!)1!!!!*3KqV#`!3!mX!%!1V!"!$LJ!`#'9!!%T8'#!H!iBPE
ML!-!!#J!!!"!JJ!-1'$rrdJ!!Faq`l0i5rrr594J"Mp!JJ!-1'$rrdJ!!E3i!!!
!XX%!9MKK!%#3!!%!8T!!!3"-5!)PkB""!"4mGaYiIZ!(08##!BLVS3"BIk!(08'
#!Aa)!J'aJ%%!&(ak'hJiB!!!5!))BB""!"4q`l0iIb6,H(m&`hJi`!!"5!(mfB"
"!"4mHaYi1'!!!8J##$Q!33!8If!(0#`!rrp!JJ!-1'!!!%J!!5`mB%*11'0%6%J
#'U@!33!8I(mEH$Z!!!&)!!$JIf2EH%J#!B@!33!82'"#6Rq%ihJiBd4-5!)DNB"
"!"4mIKYi5!)"aB""!"3iBPELJ*i!!)J$!!##a!!!+!!!!%'#!!arSqYi5rri'Al
$XhKr"-0iIbA,H(qQkhK,rrH9I(FEH(lJ"c9!JJ!SIm2cH$L"!bJiS3!m1-%"U$M
K!$Sj!3#S15%!1%[rqfPmGaYiIZ!(08##!"bSS3!mIk2VH(l'XhJiJ3-S5rrjZAa
h'hKqi!Fe3))!'+LK!$KrSqYiIXDcH$L"!+K,rrHTIm2cH%J#"2'!33!81j`!!Aq
$"c4ri!FdI!-!!%#"raKrBpYi1Z!!!%J#"cf!33!8Id26H%J#!)Q!33!8IZ1lH)!
""9Ji)393ZX(rf(`)!kC1J!!J[k(rp(`)!UCmRb0jI(iEH$ZJ!!#3!!%!#*3Krl"
"JJ"FI1!(0#`!!!j!JJ"31'*@iiJ$!!!S!!!!3B)!3)"r!!!m!lZk+!"*6%##!$#
!I`!%2!1lXbJ!6eC!JJ!J2'"NCMJ$D@`mB'e[N!!I!!!i!hCbN!!I!!3lS!!"Im2
cH(rNqhK,r`T"B!!!!&HJ"MpmI4Yi3B)!P$aJ4%Bi!dP-2'"%6C!!(`!!1'029Rq
J"c@3!(m!"%##!(4)!IpYJ%%!&(aJ'hLSIJ!!J*i!!R`I!hJi[J!'1-!!!dJ"qTf
!33!8I(iEH(r!"c3X!2rr3))!&%J"rj@!33!8I(dEH%J!!#`iB3!i5ra2S@!!!!"
mI4YiIm2cH%J#"J'!33!8Iq2lH%J"rdf!33!8Ik2VH)!"!&Ji)3"3I!J$TVZKrr4
1J!!J!!!!!,qKrr4m#!+Q1-*@kRap'hKmRL0iI,mVH*!!!3!)P#(rX)J'!!!S!!!
!3B)!&$KL9ZZ)!`!!+!!!!%##!'#J(3#'9!!%T8'#!&5SRJ!!Ik2VH)#q!!*,rr`
pI'!(08'#!$`iI3#'1)!!"dJ#!d'!33!8J,d!3Rr$mhL!h3"'IqIlH$LG!(j,rri
p1(d!KML!!!G)!J-aJ%%!&)!"!&Ji)3"3Zk(rp(`)!kC1J!!J!!!!!,pKrqam#!+
QI(XEH$[#9d#!BJbJI*`MH*!!!3!)P#(qN!")!IXTJ%%!&$[q!)jmI4YiIq2lH$L
!!!*)!IhKJ%%!&&4J"Mp"JJ!-1'!!!8J!!UarirYi1)!!!%J"rF'!33!89'!'2d'
#!!`lJ!311f!!)6J!!!1)IJ#-9!!'2R`$!&"m!!!d9!2CIMJ!!rKm!`)8I"m$H$K
K!%4)!IV*J%%!&(q$"c3iJ!!!5rqeDAq!"c3X!!2[I(iEH$J!!!9!JJ!)1!!!"l!
"!$Tr`r0i1)!!!8J"qe'!33!81!!!!E!"!$T)!!"dI"XD&(rNqhJiB3"3I!8(0%J
"qif!33!8L!%!8#J!!!""JJ!`U)%!1Rr$mhJiS3!i1-%!3$MK!%K)!INPJ%%!&)"
K!%!iJ3"35!)9VB""!"5)!3"31'%!1kL"!$Tm!!!d9!AH2MJ%!!&mSb'ZX!%!1UK
K!$TmB!Fd,!!!!d#"ri4rj2YiIfAEH$KK!&")!IX4J%%!&(r$mhJiS3"31)!!"%[
rcMer`r0i5rqhGAq!"c3X!!313))!R$KLAfD)!`!!+!!!!%##!)ar`r0i1+%!1$M
"!%!ii3")1)!!"NJ"q)'!33!81'*@iBJ$!!!S!!!!3B)!&$KJ!!&)!Kh0J%%!&%J
!!!JiB!!!+!-!!*!!B3"!3))!($aJ58-iBdp11)!!!8J#$If!33!8N!"K!%#!`3"
!+!B!!%'#!"bSS3!iIm2cH$MK!%JiJ!!'5!(k2B""!"3i!!!"X!%!1NJ!!$"mJ!F
d1'%!1h`$!+iS!!!!3B)!%(r$mhK)!JG*J%%!&+KK!$Si!`!"X!%!1UL"!$TmJ!F
d,!!!!d#"rmKr`r0i5!(hmB""!"4,rmmTIm2cH%J"pq'!33!85!(kfB""!"4r`r0
i5!(kjB""!"3iJ3!k1'!!!%J"qZf!33!8U!%!1L`!!!&"J2rS,!!!!d'"rq"r`r0
i5!(kjB""!"4rSqYi5!(l#B""!"5!B3"%5!(l&B""!"5SB3!kJ!%"H$JK!A#lBIr
XI!J$TNk!!#!!!!!![m(rq(`)!UCmRL0i1q*@9(bN+hL3!!%!#*3Krm#![J!!J(m
!!%J"qa@!33!8J*m!!$KJ!!#!(J!!I!3#&*!!(`!!J!%!5$JK!%"m#!1QZm(rq%k
!!#!!!!!!!!!!!!!!!!#r`IriI!J#TM[LE#"mRL0iI+-VH*!!!3!)P#(r`)#N!!#
!R`!!5!(kYB""!"5!R`!!1'!!!)!H!!"m"!)8N!!I!!#!!3")1#%!3(`)!kDl`Ir
i6S!!)!!!!!!!!!!!!!!!!,k"rp"m#!+Q1m*4Z$Z#9JJlSP(%1q*4Y*!!!3!)P#(
rB+JH!!3X!!!#3B)!P%#!!"!X!!!"3)!!&%J!!T`X!!!%3)!#P%J!!15S(J!+,!!
!!%'#!S5!I3!!5!(kbB""!"4mG3GdJ(d!!%J"qU'!33!8J(d!!$V!!!#$)`!!5!!
!()-C!!3S'!!!3))"$*-C!!3l13!@1YB!!DJH!!Tq``FdI!-!!%'!rpb!I3!!IU3
(G%J"r5Q!33!85!!#()"m!!")!ITKJ%%!&(ae"h5!I!!!5!(k1B""!"5!I!!!1X!
!!)0$!!")!!!FJaS!5LJB!!"!JJ#NNaS!5MYD!&SkeJ!"1'*@b(l%"c5S!`!!I!3
!!%'!rpL!I!!!IU3(G%J"r,f!33!85!!"X)"r!!")!IReJ%%!&(ae"h5!I`!!5!(
jcB""!"5!I`!!1X!!!)0M!!")!!!FJaX"8LJB!!"!JJ!iNaX"8MYl""BkeJ!"1'*
@Y(l%"c5S!`!!I!3!!%'!rpL!I`!!IU3(G%J"r&'!33!85!!"4(m$`hK)!IZ"J%%
!&#`$!!4!J3%)J*J!!)"N!!!m!kQh+!"648##!25!C!!)5!)!JB""!"4mGaYi5!)
!MB""!"4mB!Fe3B)!'(m$`hK)!J(jJ%%!&$X!!!")!!$!I`2$H%J"q4@!33!8IZ1
lH%J"q3Q!33!8J')5h$J!!!1"!K,B11!!!*!!!3!i1!!!!6M#E##3!'%!2$KK!$J
iSPC81)!!!*%"!%#"'!!!J3J!"*%"!%53!1%!@*!!i3"FN!$K!'#3!1%!C*!!!3"
SJ"F!!*!!"J!!J0J!!$J'!!b3!!8!!%[rVb9mG"YiIZ1lH%J"r'Q!33!8I`2$H%J
"r&f!33!8I`2$H%J#!8Q!33!8IS!(08'#!!`l!!!!5!!!#(liZhLS(J!%,!!!!N'
#rN"!J!!3,!!!!8#!rFa)!!!3,!!!"%#!!!K,rrk3!)!"!+Ji)3#JZS(rd(`)!kC
1J!!J!!!!!!!!!!#rSIrdI!J#TRaM"c48[JBqN!!"!!KmJ!Fd9!!)2(rM!K58)Iq
`2)"35A`HqK3iC%08I!3(0%[rP,emI4Yj3))!)#!H!!&m!2S82'"356KM3e4m"!F
d5rq8RAap'hJS(3!!3B)!%(qMkhK)!J"TJ%%!&(qMkhL!!3"B1#%!8(`)!kDlSIr
d6S!!)!!!!!!!!!!![k(rp(`)!UCmI4YiI*iMH$[J!!#3!!%!#(qJ"c@8)Iq`3))
!$(r!"c9"JJ#N9+!'2d'#!%KrS!Fe3B)!'$aJ8%PrT1Yi1'0$9%[rP"PmIaYi+"m
!!%##!'4r`!Fe3B)!A$aJ8%Pra20i1'0$9%[rNr9mIaYi5!!!4(r!"c9"JJ!B2'"
35Ar%mhJiBd085rq6eAar'hJS(`!!3))!)(qJ"c9"JJ!B2'"35AqNkhJiBd085rq
6XAar'hJS(`!!3B)!%(rMqhK)!IppJ%%!&(rMqhL!!3"B1#%!8(`)!kDlSIrd6S!
!)!!!!!!!!!!!!!!!!,k"rp"m#!+Q1'*@i6U!!!!l)PE11d*@b$YL9JJlJP(%1k*
4Z$[#9V3liP'dN!!"!!L8)Iq3!)J$!!!S!!!!3B)!+%J##,Q!33!8J'-!!)"M!"D
!B`!!U!-!)#`!!!K"J!!)1S!!!DJG!!4qPJFd,!!!!N'#!2a!J!!3,!!!!8#!!"4
)!!1B,!!!"%#!!j!!5!!#1+JG!!SX!!!!3B)$J)"m!!")!IAjJ%%!&)#F!!!i!!!
!U(N!!$VJ!!#!T!!!1'2m&hbe+hKmG!Fd5!!!*+L9!!aqJ`FdI!3B!%##!!`i!!!
"5!!!'$Ue!"Bkp`!"U(d!#R`A'!""J2rB9!!'2d##!!JkJ2rrI,8VH(bi+hJki!!
!5!!!3+Ke!!aqJ!FdI!-!!%##!"bSG3!'9X8'2UL9!!4,rrhKN!"i!!4)!!!-1!!
!!*!!'!!%1aJ!&MUe!"Bkp`!"U"d!#R`A!!""J2qmJ(`!!%J"q4'!33!85!!#X+J
D!!!X!!!!3B)#T+JG!!JX!!!!3B)#Q)"l!!")!I84J%%!&)#E!!#!I!!!J`3!!%J
"p2f!33!81Z!!!%J!!0L!R!!!1!!!!+Lj!!!iB!!!J-3!!$L&r"Gme60iI*3(0%J
!!$5JY3!!1*F!!A`&)!"!JJ!FU,8!$(k%"c4m"5!!3))!$$J!!!&)!!!B1V8!&MK
M!!'SR3!)I!-J!%'!rmK8!!Br3))!#$U!rrmi!!!!N!!B!%Tme60i1'!!!%J!!%5
JP3!!1"F!!A`%!!"!JJ!XU*8!$(k!"c4m"!!!3))!(+Ke!!C@a3BqU*8!"%[rr,Q
3!(J!5NJ!!"JkY3!@1'-!!DJG!!Km!`!!3B$rZ$XB!&Skp`!"U"S!!(`A!!""J2m
NJ(X!!%J"pq'!33!8J(`!!%J"pp@!33!8J(`!!#J$!!""JJ&X5!(mZB""!"3i!!!
!N!!F!!")!!&BU"i!!#`!!!""JJ&-U"d!"L`!!!""JJ&!J(m!!%J"mlQ!33!8J*m
!!)"m!!#$4!!!5!(cTB""!"3ki!!!5!!!f)#F!!!i!!!!U,N!!$KJ!!#!a!!!1)A
m&hc9-hKmP!Fd5!!!0+#e!!#JQJ&-I!8J3%##!"bSY3!-IS3(0(`&)!"!JJ!-1!!
!!8J!!"JkY3!@1'-!!DLG!!Cm!b!!3B$rb&3!"Mp!JJ!)1S$rrcJ!!!#3!"S"8Rc
9-hJiB!!!5!!!4+#9!!#J'J&-I!3!3%##!#bSP3!-IS!(0(`%!!"!JJ!FU(8!"PE
&"MkSP3!%5rrlBC!!HJ&55!!!'$Ue!"BiB`!"U"d!"R`$!!""J2qi1eS%&MVh!!'
S(J!!I"F!!%'!rb5!I`!!5!(fLB""!"5!I!!!5!(fIB""!"5!I!!!+!-!!%'#!"4
)!IYKJ%%!&$J!!!#3!"`!!)"r!!")!I*pJ%%!&)"r!!!ki!!!Jd-!!%J!!#b)'J&
I+!!!!%'#!"Kqj!Fd9X8'2MKJ6L&,rrSeN!"k!@Bl@J3@1[F!!DJH!!"m&`!!3B$
rd)"r!!")!IB&J%%!&)!"!(Ji)3"`ZS(rd(`)!kC1J!!J!!!!!!!!!!!iJP'd1!!
!!$M#Cb3iB!!!J)3!!,!'!!!j!!!!J13!!%J!!(3iJPrqL!3!!#J!!!""JJ!XJ!F
"8LJ!!!""JJ"3U)B!!#J$!!!i"!!"X!B!!%##!$b!C`&55!!!0)J(!9NS!!!"3))
!+)!(!9)S!!!!3B)!(+L'!!!S!`!!1!3!!E!'!!"!JJ!)J'F"8MMR""Bj#!!"1)*
@Y(d&"c5S"!!!I!8!!%'!ri"1J!!J!!!!!,q"rr"m#!+Q1'*DV$[!!!!lJQFQ1q*
4a$L!!!-lSP'i1'-!!T!!!3!)P#(rX%J"m'f!33!89'!'2d'#!2bS(3!%,!!!!N'
#!+K!J!!3,!!!!8#!!"4)!!$J,!!!"%#!!0K)!!$-1!!!!,!F!!!iS!!!5!!!-)"
r!!!F"3!@J'-!!(aM!K5!!`!%+!!!!%'#!"#SI!!!1!-!!E!F!!!iT3!"U*d!#R`
&)!""J2r-U"`!!#`!!!""JJ#!1+!!!%J!!#5!I`!!(!8!&S"M!!"mB`)8Jm-!"#J
H!!"!JJ"F1+8!!A`&)!""J2rF5!!!6$LJ!!")!!!S1'*@#"`&!&U!B`!!J'-!!(a
M!K5$``"++"i!!%##!#3iT3!"1'*@b+J$!!"m"3!!3B$rd%J!!!a,rriPI(iEH(r
$mhL!!3"B1#%!8(`)!kDlJIr`6S!!)!!!!!#rSIrdI!J#TLJ'!!"mI4YiI*iMH(b
r+hL3!!%!#*3KrN""JJ!8Iq2lH(c%-hK,rmE&5!!!$$J!!!#B(`!!1!%!T*2"!*b
3!!%!5S!"!*`iJ2rrXk%!6MKK!$L`J3"8N!!"!'K)!I)"J%%!&$KK!+3iJK935rr
&XArPqhJiB3#N1)!!!8[r`U'!!3"S,!!!!N##rlb!!3()1#%"`,ZKrr4m#!1Q6S!
!)!!!!!!!!!!!!!!!!,mKrq4m#!+Q1q*Il(ak'hKmQb0iI,`VH$[!!!#3!!%!#*3
KrX#SI`!!1!%!2*!!!3$#N!!"!(+`B3$'X'%!GM[H!!'6J3$J1'%!X,2"!-a)!I&
PJ%%!&(ap'hKrS!Fe3))"d)J"!-j8!!Eh3B)!*)#K!1"r3p0iIf6EH%[rriPmI4Y
iIk!(08##!EK)!!'N1'*J9$L"!$a,rm9G9'!'2d##!C!!1'!!!%J"p-f!33!8U(m
!!(q%ihJiS3!m1-!!!8J"k8@!33!8I(NEH%J"lNQ!33!8I(dEH$KJ!!&)!I5CJ%%
!&(mJ"c3X!2rr3B)!X)"K!0!m!jZD+!"TE%'#!"!m!lZk+!"*6%##!!`lS!!"5!!
!0$`$ZESS!%P-3B)!($`$LjSS!'PX3B)!%$`$QCSS!'PX3))!$$ZJ!!*)!!!)1k!
!!cKLB"DS!`!!,!!!!%'#!"`iB3!m1)!!#N[remPr3p0i1)!!"d[reder)mYiIf6
EH(qPkhJii3!i1-!!!6N!!!&,r$d4B!!!!(ap'hKr)mYi5!(d%B""!"4rS!Fe3B)
!E(qJ"c3X!2rq3))!$$ZJ!"4)!!!B,!$rr8##!!`lS!!B5!!!#$ZJ!"8iB3!m1)!
!!$LJ!!!i`!!!5!(V@B""!"5S`3!iIkAVH$KJ!rBiJ!2`5rqhNAqJ"c3X!!!93B)
!3$ZJ!!")!!!iIk!(08##!##6J3#3!$KK!'")!HrjJ%%!&(aJ"c9!JJ!)1plrrhq
J"c9"J[i-1'!!!%J!!!KrSqYiJ!%"5$JK!8#l)IrNI!J$TNk!!#!!!!!!!!!!!!!
!!!!iSPAS11!!!)#P!!#!a3!!5!!!*+!'!,"8C33qI!8!3%##!!amicYi6S!!)$M
'!3iij`!"I!FJ!%'!rp`iB2rr6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+QI(iEH(c
r1hNiB!!!N!!"!!L8)Ik`3B)!%)!I!$!S!!!!3))!4(b$)hKma$0i1+)94$MK!$J
j!3!m15%!3$M!!!&)!I"4J%%!&#JI!!""JJ!NJ!%!1*!!(`!`J!%!2*!!(`!d5!!
!%*!!!3!iJ"m!0*!!!3!mI'!(08##!"5"J3!mIm2cH%J#(&Q!33!8+"m!!%##!"!
iB3!i5!(`&B""!"5!!3&B1#%"8,["rrKm#!1Q6S!!)!!!!!!!!!!!Nq(rr(`)!UC
mIaYiN!!"!!KmJb0iI+3VH*3KrV!iSK9%1-!!!6MK!$Jj!3!m15%!3%J"lkQ!33!
8I'!(08##!"5"J3!mIq2lH%J#'pQ!33!81'%!1%J"ljf!33!8J!%"@$JK!9#$iIr
mI!J$TNk!!#"m#!+Q1)*C3*!!!3!)P#(r`+KN!!4mB!Fd,!$rrd'#!"")!HVjJ%%
!&%J!!"bSC!!'I'!(0#`!rrp"JJ!-5!(UhB""!"5!!3")1#%!3(`)!kC1J!!J!!!
!!!!!!!!!!!!![k(rp(`)!UBiJPpQ1m!!!(ar'hL3!!%!#*3Krk#)"!!!Nm%!1#J
!!!""JJ!N1'*A3$L!!!!iB`'45!(U)B""!"48B!Br3B)!#$[!!!%iBPEY9pd'2SJ
$!!!S!!!!3B)!r%J!$,&J!!!!9k!'2d'#!"JiB3!i1)!!!$LJ!!",rZGPB!!!!$a
JEh-mJ(0M1'0K)$L%F(4)!HhPJ%%!&(aq'hKrirYi5!(UGB""!"4rirYi5!(XHB"
"!"5!R`!!2-"cBhaP'hJiCR"d1-%!4%J"lF@!33!8Im2cH$L"!%3i`3"!1+!!!%J
"lF@!33!8I'!(08##!%#!J3"!Im2cH$MK!$`iS!!!1-!!!%J"lEQ!33!8J)%!3(r
$mhK)!Hh"J%%!&)#"!$ar`r0i5!(YXB""!"4AS!Br3B)!'$KK!$JiJ!!!1+!!!8[
qjTeJ!!!!Iq2lH%J"lD'!33!8J!%!D$JK!'#lSIrdI!J$TNk!!#!!!!!!Nq(rr(`
)!UCmRb0iN!!"!!JiJ2rrP#(r`)!$!#3S!!!!3B)!&+L$!#Tm!`0i5rq'9AaN'hJ
i!!!"X"m!!(b$)hL!!3")1#%!3(`)!kD$iIrm6S!!)!!!!!!!!!!!!!!!!,m"rq"
m#!+Q11*ICRak'hJliPUmI*XMH(bm+hKmh60i1`!!!*!!!3!)P#(k))J(!!!S!!!
!3B)%k(q!"c3X!!!'3B)%h$KL-#a)!HP*J%%!&$L"!(",qj%pB!!!!(ai'hP!JJ5
m1')eQ%J"k5Q!33!8I'3EH)"K!(")!HR"J%%!&(aq'hP!JJ!)1`$e$L`B!!"!JJ5
-+"d!!%##!(Jl!3"f2'"KFhm(`hJiJh9`1-%!G$KJJ!8iS!!"5!(TQB""!"4)!H5
"J%%!&$XK!(Tr*-Yi5!(PfB""!"5SB3"dIbA,H)#B!!!i`!!!11!!!%J"kAf!33!
8I(J(08##"#3iB3"d1)!!!$LJ!Ip,rhrj5!!!6$J!!!Km#31Q11%!F$MGrrb!CJ!
%K!B!#*!!C`!%P!F!#%)!rr#!"J!%1'%!G$L!!!#3!!F!"$LJ!IqJ"J!)X!F!#%[
rIl&)!!#J1'%!G$LK!'SiJ!!$1-!!!8[qp@PJ!!!!I(J(08##!j3iB!!01!!!#TK
K!'NiJ!!!Q!%!D%J!!#4r3p0i1+%!D6MK!'Ji`!!"13!!!8J"kCf!33!8I'3EH#`
%!!"!J2rFId26H%J"kCf!33!8I'8EH+KK!'U!fJ!!1)!!!%[qq*eJ!!!!I(J(0+K
K!'T,r[90B!!!!#`B!!"!JJ-B1!!!#(`*!kBi`3!81+%!F)"P!!5%"3!)N!"Q!!5
8"J!)3J$rm)#&!!3iB3+m1!!!!*!!KJ!%S)8!#,#'!!L3!'%!B*!!!3"NJ'%!')#
"!"b!S3!JJ-%!*)$K!#L"!3!XJ5%!-)&"!$4,rhRC1')9C$LK!V`iJ!!"5rqjq6K
K!V`iJK9N5rqml6KK!V`iJ31m5!(SHB""!"4rJ!Fd1'!!!#`!!!5BB3+m3B)!$#`
!!!9!JJ$i1!!!!*J"!E`iI`#U1`!!!6L!!!4)!HA4J%%!&&4J"Mp"JJ!J1(m!(%[
pKf9J!!!!9'!'2d'#!"`l!!!!5!!!&)JI!0FS!!!!3B)!#$X!!!"A!!Br3B)!%$K
K!E`iR`!F5rqp,DKr!(3iS3+mJ*m!CMM"!Ea,qjS*B!!!!&F!"Mp!JJ!3L'%#[$J
$rrqB!3+m5!(SKB""!"4mC4Yi1)%#[$KJ!!")!HL*J%%!&$bJ#!!ia3%!I(JEH$L
"!V`iS!%!5!(RIB""!"4r!m0i5!(QXB""!"3iB3+mI'3EH%J"jhQ!33!81'%"[$L
I!"a,rlbK5!!!#*KK!E`iB31m1))9D%J!k'eJ!!!!1'%$[$L"!Va)!1KGB!!!!$K
LE&3i!!!JI!N$TMLK!,JiJrrmJ'3!")3%!!L3!'8!"*3&!!K#!2r`1!!!!$KK!Eb
3!!%!E(aN'hK)!HF&J%%!&$KK!l`iJK9X5!$S$@!!!!!iB31m1)%"[%J!jreJ!!!
!1'*PF)!$!!!S!!!!3B)!A$KL0D!iJ3"X5riNh@!!!!#!B3"X+!-!!%'#!%")!HF
4J%%!&(ai'hJX'!$r3)%!#$X!!2q!B3"XI`A$H$L"!,b!B`!!5!(N5B""!"3iB3#
m1!!!!(`$`DiiB31m1))9E%J!ji9J!!!!1'%$[$L"!,a)!1GeB!!!!(pMfhJiJ3+
m5!(KrB""!"3iB3+mI'3EH%J"jMf!33!81'%$[$L#&@a)!1G&B!!!!$KK!l`iJ3+
m5!$R0@!!!!!iB31m1))9F%J!jb9J!!!!ImccH$KK!la)!K5&J%%!&(ai'hJS(3!
!3))!%$KK!(4,r[*GB!!!!(m$"c5!!3AS1#%&i(`)!kDl!IrJ6S!!)!!!!!!!!!!
!!!!!!,h"rlKm#!+QI*`MH$N#9d"mHaYi1S*4b(bp+hJl)P'FI2ilH$RL9Xil3PU
m1'J!H$T#9K3ki!!!1F*IE$L!!"Q3!!%!#*3KrM#3!-%"p%J"i[f!33!8J!%"p$L
!!!1`QJ&!I(-EH#`!!!"!JJ!-1'!!!%J!"A4)!H,YJ%%!&(ae'hK,rlca1'*J&LJ
E!!#!Z3!!U--!!)#C!!5!H3!)J"N!$,$D!9#3!,S"+T!!QJ%ZN!"k!6+3!"S"0V2
D!!*"JJ!BIf2EH$LD!"`iS!%15!(LXB""!"5!(3!!IpJ(0#`B!!L3!"S!CUJF!!#
`'J"d3B)!5%#!!"!X'!!(3)!!&%J!!)!X'!!,3B)!@%J!!(5S$`!!2'"BFcKMD'+
`'J%q1)!R$d[rIm9mF4Yj1N!!!8##!P")!!5F1!!!!$aJ@(1`'J%q1'0SBML!*`j
,rhqGI(%EH6T!!!&!JJ)S5!!%G$aJ@(-iBfKL1)!R$8[rIhemF4Yj1N!!!8##!JK
)!!48J()!!$b!J!#!ZJ!)1!6rl5J$!!"mS!!iN!!D!!K"JJ"J5!(L@B""!"3iJPb
kI'8(0)!D!!LSK!!!J()!!(b%+&"mK!!d9)6K2(`!)hL3!"S!#%J"iLQ!33!81)*
F[(aP"c5!'J!)U'3!!(aM+&"mB`!d9'2iGR`!'hL3!"S!#$KLAm#SJ`!!,!6rrd'
#!#`iBPE-U!-!!(`!)!""JJ!FIm!(0#`!!!4"J!!3,!!!"N'"!!K,rrCTJ(3!!%J
"iGQ!33!81X!!!%J!!Y"qd!FdIJ5$H$KK!I4)!H$pJ%%!&&4J"Mp"JJ+`J(3!!"`
3!$L!B`!!1)%!1(lM!K4qilYi5rrhlAaa'hJm%3!"+!$rrd'#!S3S%3!!3B)#8)#
A!#bS!3!iN!#D!!48!"!kI*F#&)#%!#!m")bB+!"cBd##!'K)!H&YJ%%!&(ar"h4
q)iYi5!(KGB""!"4q)iYi5!(K1B""!"5!QJ!%IL1,H(r&mhJi`!!!5rrhfAa`'hK
q)iYiIq3(G%J"iq'!33!8IJ!(08'#!95!'J!)B!!!!C!!'J!)5!!"4$`%M*dS!("
d3))!4%J"i2f!33!8I(m(G(iMLhK)!H%&J%%!&(iMLhK)!H$*J%%!&(iMLhK,rr@
PIL1,H(rN"h4)!H1"J%%!&%J!!2JmB(Kc1!0SBR`%!&"m!!!d9",H2LJA!!""JJ!
3J"F!-#J!!!"!JJ!XIL1,H%J"i*'!33!8I(m(G(iMLhK)!H#CJ%%!&(iMLhK)!H"
GJ%%!&(iMLhK)!H*KJ%%!&)##%XJi!!!JI!N$TRa`'hJiS3#!1)6rr)"N!!5%"!!
)N!"P!!58"3!)3J$rm&CJ"Mp!JJ!XL-%!K(iMLhJiS3#&1)!!!$MJ!!!j!!!!5!(
KpB""!"3X!`!!3)!!()#4!!"r3p0iIN@6H(i'JhKqjlYi5rrc-5JA!!""JJ!3J"F
!-#J!!!"!JJ!8IL1,H(rN"h4)!H+*J%%!&)!D!!K8!!Ir3B)!%(r!"c3X!!!$3))
!Y#`B!!K"JJ!X3)!!%#`B!!G!J!!85!!!K#`B!!Y"JJ%X5!!!H+JD!6k`$`!!5!!
"(+JD!6iX!!!!3B)"%$LL9ZJi!!!"J'i!!$L!!"#B"3!!5rX`)@!!!!#!EJ!!1)!
!"d[qNZ&J!!!!5!!!i$KJ!"Y,rhda9'!'2d##!#"r`!Fd,!!!"N'#!#b!'J!)B!!
!!C!!'J!)5!!!($V@!!%iBPDbIX3(0+J$!!"m"!!!3B$p*)"d!!")!H+pJ%%!&(k
MUhK)!GjjJ%%!&#JE!!""JJ!BIf6EH$Kk!"`iS!%15!(H,B""!"5!'J!)J,S"+P3
!"hZ!QJ%ZJ(S"-S!D!6D3!,N!!*!!Q3!%N!"j!!L3!"N!$%'#!$bS'J&+,!!!!%#
#!$!i!!!!Q!%!3MKK!$`iJ!!!5rq10AaJ"c9!JJ!8U'%!2)!"!$k`HJ&+N!!D!8b
!'J"QN!!G!!#S'J"dX"`!!)"k!!Ji!2re9'-(rRaM!0"m&KJi5rqhpAl$XhL!!3(
B1#%"d,R"rlKm#!1Q6S!!)!!!!!!!!!!!Nq(rr(`)!UBli!!!N!!"!!L8)Iq`5!!
!4$KL9Yq)!`!!+!!!!%'#!#!iJ3!i1'!"!$LJ!!Si`!!!5!(JZB""!"4)!!!81)%
!1$KJ!3")!H#pJ%%!&$[r!!&ri!Fd,!!!!N'!rlL!!3"B1#%!8)2Krram#!1Q6S!
!)!!!!!!!!!!![`(ri(`)!UBliPASI*JMH$[#B!PmZ5YiI(XEH$Z!!!#3!!%!#(a
J"c3F!!%1P#(qN!#!h`!!J-B!!(qQ!K5)h3#m5!!!S)LG!,am``FdI!3B!%'"!)L
)(3#l+!!!!%'#!(am""J!3))!2$Kp!)iiJ!!"5!(F@B""!"48B!Br3B)!*)!G!%U
3!"N!!)JG!,dS!!!!3B)!@+JG!&L`'!!!5!!!6$Kp!,miJ!!&5!(F)B""!"48B!B
r3))!'(q!"c48!!Jm1'%!L(pM!bilR!!"L0d![(c!"c9"JJ!81h[rrcZpr[*rB!F
e3)$rB$JFrrpm'`Fd5!!#K(pJ"c5!R`!!9!!)2$KK!)L!T!!!Id-#VML!!!&r3!F
d(!!"$RqP!K3iI3#15!(EUB""!"48B!Br3B)!*)!G!%U3!"N!!)JG!,dS!!!!3B)
#-+JG!&L`'!!!5!!#*(p$dhKr"-0iIbA,H%[m5C9J!!!!JjN!!$J!!!&rSqYiQ"d
![AqNkhKr*XYiU"J!!$N"!$L`(3"BL"d![+Li!!"m!!!d9!IH2N[m0FPJ!!!!I(S
EH(p!"c9"JJ"!Id-(0#`$rp""JJ!dL"i!!#J!!!"!JJ!J,!2rp8'#!"Kr4Y0i1'!
$pML!!r!iS!!*5rqPeAp$dhK)!!'FId!(08##!B5!'3!!1(d!MML!!!'3!"d!5NJ
"hm'!33!81(d!MML!!!9)!GqaJ%%!&$KJ!!'BI3#pU"J!!,!G!&L)!3!i+!!!!%#
#!!L3!(d!EULB!!"rKH0iIkEVH$KK!%",rj(jL"i!!#J!!!"!JJ%FL"d![#J!!!"
!JJ!81'*JGBJ$!!!S!!!!3B)!,)!G!)j8!!Bq,!!!!8##!"`iI3#r1)!!"%J"fMf
!33!89'!'2d'#!"L!I3#)1!$rrj!!B3!mN!!G!)K)!!!m1'*@kSJ$!!!S!!!!3B)
!,+Lp!)JiI3#'1)!!"cJ&XH#`(3#)U,d!LMJ&XH#`(3#+5!(HbB""!"5)!3!i+!!
!!%##!$JiI3#-1)!!#dJ"hUf!33!8J,d!3MKK!%#!h3"'1*d!IS$p!(+"(3"k5rl
Q&@!!!!"mHKYiL"d![#J!!!""JJ!8J"d!MP3!"MiX!!!"3B)!$)!"!$b3!"d!L(p
!"c9"JJ!JIdE6H$KJ!rBiJ!2`1+!!#8[rT%er3p0i5!!!&$YlrrprB!Fe3)$pI$K
J!!#!!3&i1#%"F,X"rq"m#!1Q6S!!)!!!!!!!!!!!!!!!!,qKrr4m#!+Q1-*9k(a
R"c4mR50iI,iVH(cN1hL3!!%!#"`(!3k8)Iq`1q$reB"Q!!#!B`!!I'-#&+"M!,*
,rqbe,!-!!%'!!"KrT1YiImAcH(aM"c4,rr`0I(mEH(rMqhL!!3"B1#%!8(`)!kD
lSIrd6S!!)!!!!!!!!!!!!!!!!*2Krram#!+QI(mEH*!!!3!)1"m!"ML!!!#8)Ip
3N!!"!%SiB3!iN!#"!%5S(`!!X!%!6V#"!&5!(`!#N!!"!'K)!GZ&J%%!&(aJ"c9
!JJ!-J!%!D*!!(`!#J!%!Z$JK!,#$iIrmI!J$TNk!!#!!!!!!!!!!!(`)!UBS"3!
!N!!"!!L8)Ip33B)!+$J!rrq`B3"11'%!1*!!S3"+N!#"!'L`!3"85!(E*B""!"4
)!!!)1'$rcS!"!,Ji)3#`I!J$TNk!!#!!!!!![f(rl(`)!UBlJPUSI(dEH(bH)hJ
li!!!N!!"!!L8)Iq`J(`!!)"M!!#VB`!!5!!!E(rJ"c5!I!!!(-!!4S#p!!+!i`!
!I)Fb&)!%!!4m"3!!3))!4+Kp!!#S"!!#I!-!!%##!$4A`!Br3B)!*$L'!!JiI3!
'I)FL&%[rVXP8B!Br3B)!&(rMqhK)!!!JIq2lH%J!!"Jlr`!"Iq!(0(`!f!""J2q
3!$KJrrq!!3"B1#%!8,YKrqam#!1Q6S!!)!!!!!"m#!+Q1'!!!T!!!3!)P#(r`%J
"i-'!33!81)*DU*!!C!!!5!(I'B""!"5!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!#
6iIrmI!J#TM[L@UJiJ!!#N!!"!!L8)Ir!J(m!!%J"hUf!33!8J(m!!$J!!!#!B`!
!X!-!!%J"hX@!33!8J!%!5$JK!%#$iIrmI!J$TNk!!##rBIrXI!J#TM[L@UKmI"Y
i1k!!!*!!!3!)P#(rX%[rrT9mB!Fd,!$rrd##!-#!I`!!J)-!!+YN!!")!GNaJ%%
!&$KMrrii!!"'I!-$PR`!"c4rB`Fd1m-!!A`$!hKm(KJ!3)%!,$J$!!U!I`!!I!!
(0"b!!%BiK!!#5!(H!B""!"4)!GiTJ%%!&(ap'hKrS!Fe3))!@(pJ"c5!R`!!('!
!4S#%!!!i!!!)I'3D&(`*!kBiSrrq1*crr)"N!!5%"!!)N!"P!!58"3!)3J$rm)!
%!!53!!8!"+!%!!L`"3!)J(m!!)"M!!#c``!!Ik2VH)!"!&Ji)3"3I!J$TVYKrqa
1J!!J[i(rm(`)!UBliPbSI(`EH$ZJ!!#3!!%!#$J!!!#8)Ib!N!!$!!#!(`!!+!!
!!%'#!6`l`!!!5!!!G(r!"c3FB!-d1!!!CRaP'K4m#31Q1+%!0$L$rrk!C!!%K!3
!#*!!C3!%P!8!#%)!rr#!"!!%1'%!@*!!"3!%J!%!@#J!!!"!JJ!3J!%!A#J!!!"
"JJ!F5!!(Y@!!!!"8B!Br3B)!$$ZJ!!&)!!!J1pi!!B"r!!"ra!FdJ+-!!+J&!!"
m"!!!3B$rI&HJ"Mp!JJ#!1m!!!%J!!'"r`!Fd('!$0$J!!'CmC4S8I!N$TMLK!$3
iJrrqJ'3!")3%!!L3!'8!"*3&!!K#!2r`J!3!"*!!"3!%J!%!@#J!!!"!JJ!BJ!%
!A#J!!!"!JJ!-1k!!!8J!!#!lhJ!"J(m!!(r%"c5!S`!!U!8!!(`%!!""J2q3!&H
J"Mp"JJ!JIm!(0)#I!!!FB!-dJ)3!!$J$!!*m"!)8N!!F!!#!!31)1#%$J,Z"rr"
m#!1Q6S!!)!!!!!#6iIrmI!J#TM[LA+L3!!%!#$J!!!#8)Iq`X'%!DS"r!!#`!3!
k+!-!!,!"!$K"JJ!-5!(8UB""!"3iB3!m5rrq46L#9X`i`3!kJ'%!2$MK!$LSK!!
!U+%!DN[rBIPJ!!!!9'!'2d'#!$bS!3!k,!!!!%##!$#SB3!iI'!(08'#!#3iJ3"
U5rf8c@!!!!"mB!Fe3))!%$J!!!#`!3!i5rrrT)"r!!!S!`!!3B)!$%J"f!@!33!
8U'%!1S!"!&Ji)3"3I!J$TS2Krra1J!!J!!!!!$LLAhJj!!!!15!!!)#P!!!S"3!
!3B)!5)$P!!")!!!XS+F!4P4J"$jm"3"!3))!&#J%!!""JJ!XX33!!%J!!#3j#!!
"11F!5$LLAhap"JFdU!8!!(`'!!""J2r)15$reAdM5hK1J!!J!!!!!!!!!!#rJIr
`I!J#TMZLAhKmIKYi1q*II(bF)hL3!!%!#*3Krl#!I3!!+!-!!%##!"JiB!")5!(
DSB""!"53!(d!!%J!!"LSR`!!1!3!!4b!!%K)!GTYJ%%!&%J"fT@!33!8I'!(08#
#!&bSR`!!1!!!#)#p!!"m#31Q(!3!5)$P!!"mj`)81-Irr$Lmrrb!K3!%K!8!#*!
!KJ!%P!B!#%)!rr#!"3!%N!!'!!5J"3!)X!B!#,2(!%DSR`!!1!3!!E!I!!#!!3"
B1#%!8,Z"rr"m#!1Q6S!!)$LLAhKmB`Fd1!!!#)#P!!!FB`")I!N$TS$&!!!iT2r
mI-BD&$L'rrb!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%N!!&!!5J"!!)X!8!#%k
!!##rSIrdI!J#TM[#Ah`lS!!!1q*IH*!!!3!)P#(rF%J!!#"rSqYi1)%!1%[rriN
iB3!i5rlJF@!!!!!l[3!"U"i!!(qM"c4m!`!!3B$rf)"r!!")!GVjJ%%!&$J!!!#
3!"m!!,!H!!#!!3#B1#%!N!"m#!1QZk(rp%k!!#!!!!!!!!!!!,lKrpam#!+QI*J
MH(ah'hKmZ5Yi1)!!2j!!!3!)P#(rN!")!G%CJ%%!&(ar'hK8B!Br1'$rrl"j!!!
l3!!"3B)!&(lMZhJiJ!!r5!(9dB""!"5!&`!!,!!!!%##!"#!&`!%,!!!!%'#!XJ
S'!!!3B)#`(m$`hK)!G'&J%%!&)"i!!!lJ!!!Uk-!!$[$!!*)!!+%IZ1lH(q%"c4
)!G#KJ%%!&&4J"Mp"JJ*N2+"*ES"q!!!i"8aRI!-!!%'#!)"!J!!X2)"$6$J%8d0
m!`!!3B)!V%#!!,`mJ%&%1!406R`$!!""JJ#%5!!!U$b!883i"&*AI!-!!%'#!"K
!J!#81!95Ch`$!!""JJ"-5!!!K$L#9Z%iB!!!L!3!!#J!!!""JJ!31!!!!C!!!3!
i5!!!F$J!!!#3!!%!1%J!!'3iJPE11'!!!+L%!!!i"2`AN!!"!$K)!!"-1)*@d$K
J!!#!"!!!N!!"!$K)!!!i1)*IC6KJ!!#)"!!!N!!"!$K)!!!N1))DP$KJ!!#)"!!
!N!!"!$K)!!!31)%!1%J"bZ'!33!8S*i!"&5!"MiX!!!#3B)!,%#!!"!X!!!"3)!
!&%J!!$!X!!!%3)!!+%J!!"amB!Fe3))")%J!!"KmB!Fe3))"0%J!!4"mB!Fe3))
"+&5%"#iX"#!!3B)!M%#!!#JX"!J!3B)!Y%#!!"!X"!3!3B)!a%J!!0JX""!!3B)
!J%J!!-`mB!!"1!1!!(`%!!""JJ!83)!!Z#`%3!""JJ!S5!!!V)#"!$L!(J!'I)!
#H(`$$R"m!#!iI!!B8&3E$rj)!!#-J!%!1)#H!!CmJ!*iI!-1F(`!)$Km!"K39"X
2rNJ!!'b!B3!iJ"i!"R`$!&"m!!!d9"[H2NJ!!&5!B3!iJ"i!"RaM!&!`!rrrI!!
C%&3E"Mj)!!!iJ(i!"S!"!$KmB!!iI!-!8(`!!$48'piq5!!!()"q!!D!!3!iI'!
!H(`$!&"m!!!d9"[H2PGJ"Mp!JJ!B9q!'2l1C!!!l3!!!3B)!,%J!!""Ai!Br1d!
!!8##!"`lR!!"1pi!+Rq$"c4rS!FdI!-!!%'!rA4r!m0i5!(5VB""!"4Ai!Br3B)
!&(lMZhJiJ!!r5!(5pB""!"4r3p0iJ!%!H$JK!("m#!1QZZ(rh%k!!#!!!!!!I!J
#TT!!!3!)P#(r`$LK!$K,rrb4J!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!(`
)!UD3!!%!#*3Krm#!!`!!J)-!"#J!!!"!JJ!8+!3!!%##!!`iB!!"5!!!'$L#9Xk
SK!!!1)6m&dJ"cA'!33!8J!%!5$JK!%"m#!1Q6S!!)(`)!UBiJPE3N!!"!!Ji`!!
!P#(r`)!$!!#!S`!%+!!!!%##!"3S"3!!3))!$$KJ!!&)!!"-J+3!!#`&!#0!J3!
-1!B!!h`'"c3X"3!f3)%!$$J'!!&m"JFd,!8!3%#"!!`i"J!$I!B(0)!%!!"ma!F
dI)3!8%J"c1@!33!8J!%!5$JK!%"m#!1Q6S!!)!!!!!#6iIrmI!J#TML!!!#3!!%
!#(aJ"c3X!(rrP#(r`$LJ!!&"JJ!NI'3EH$KJ!!")!HYeJ%%!&(aN'hKmJ!FdI!!
!0&3&hMjmJ!Fe3B)!%(b!"c3X!2rG3B)!%(b!"c4m!!!d9"rH2PIJ"MmiB!!!3B)
!%&5J"Mp"JJ!)1'!!!94M"Mk!!3")1#%!3(`)!kD$iIrm6S!!)!!!!!!!!!!!!!!
!!(`)!UBmB!!"N!!"!!JiBrrrP#(rX$L"!$K)!Fr4J%%!&$aJ!!%iBrrr1)%!1%J
"clf!33!82'!!!6KMrrmiJ3!i5!(2UB""!"5!!3"B1#%!8(`)!kC1J!!J!!!!!!!
!!!"m#!+QN!!"!!Ji!!!!P#(r`,!"!$JiJ3!i5rlF+@!!!!#SB3!iJ!%!5$JK!%"
m#!1Q6S!!)!!!!!!!!!!!!!!!!,q"rr"m#!+QN!!"!!L8)Iq`N!"K!'JiB!"3Ji%
!X*!!J3"XJk%!Y*!!S3"`N!$"!(53!1%!H*%"!(b4)3#!N8%!K%J"aTf!33!81!%
!ET!!!`!5I(mEH+J"!'L`!`!@J!%!DT!!!`!`5!(5UB""!"4mIKYiIm!(08##!#3
S(!!!3B)!$)!I!%L3!"`!!#JG!!""JJ!-J"m!6*!!(3!!Iq2lH%J"c[Q!33!8Im2
cH)!"!&Ji)3"3I!J$TVZ"rr"1J!!J!!!!!!!!!!#r`IriI!J#TMQ!!!#3!!%!#*3
Krh#3!'%!U$PK!+k$`3$`1'%!1*!!J3#XU)%!U)!"!+U3!+%!X)2K!253!-%!Y*!
!i3#iN3%![*%K!-#433$%NB%!4*&K!%U`J3"1N!!"!'LCJ3"5XB%!9%J"dH@!33!
8I'!(08##!$JX(J!!3B)!#*2"!)!X(`!!3B)!#*2K!)5!J3#U1!!!!*J"!&)iB3!
iN!#"!'K)!G("J%%!&)!"!*Ji)3#3!,["rrKm#!1Q6S!!)!!!!!#r`IriI!J#TRa
q'hJiJPB!1(i$DM[J!!#3!!%!#*3Krm#!K!!!5rrm$94J"Mp"JJ!8L"i"B#J!!!"
"JJ!)1q!!!ArMqhL!!3")1#%!3(`)!kDl`Iri6S!!)!!!!!!!!!!![f(rl(`)!UB
iJPbiI(`EH$[L8E3l`!!!1k!!!*!!!3!)P#(rX+J%!!!X!!!!3B)!#$ZFrrmiBPb
kU!-!!#`!!!""JJ!)1jcrri"r!!")!FSGJ%%!&$YJ!!&)!!"%If!(0)"r!!!F!!3
@J'-!!(aM!K4,rrma9'!'2d'#!#!l[3!"Ik-(0(q!"c4m!`!!3))!$(pqfhK)!!!
F1hX!!6KL9V4rC!FdU!-!!(`%!!""J2q`J(m!!%J"cBf!33!8Im2cH)!"!&Ji)3"
3I!J$TVYKrqa1J!!J!!!!!!!!!!!!!!!![X(rf(`)!UCmGKYi1+*FZ(l$"c3lJPb
kI*FMH$ZL9V3l`P'dN!!"!!L8)IqJU+8!!(bJ"c4m!`!!3))!&+JF!!"qi`FdI!-
!!%'#!GbS(!!!IX-(0(`$!!"!JJ!8IZ-(0(bJ"c4m!`!!3B)"[)"q!!")!FNCJ%%
!&)"q!!!l)!!!Jd-!!%J!!"3i!!!!Q"S"@6YD""Bl13!"U"d!!(mM"c4m!`!!3B$
rj+JF!!"qj!FdI!3!!%#"!2JiBPbmU'-!!(aJ"c4m"!!!3B!!$(aJ"c9!JJ$FIZ1
lH%[rrNPmI`FdJ*i!!"pr""D!"!!!Id$D&)XD!h)iB!!"1"m!!CKk!9Pm'3Fd5!!
!2$L#9J!iHJH!1eS%&S#%!!",rrRC9'!'2d'#!$#)HJ0bI`!(0(`$!!"!J3!J1!!
!!CJD!9Nl13!"U"d!!(mM"c4m!`!!3B$r[)"q!!!i(rrrI"N(0)!$!!"r30S85!!
!3$YDqqTr3p0i5rpPm94J"Mp!JJ!dL(S$FRm!"c4m!`!!3)!!$$J!!!+B'J&CL"S
$FLJ!!!""JJ!31cRrrhmJ"c9"JIr!U(`!!(l!"c4m!"J!3)%!B(lJ"c4m!"J!3))
!9$XJ!!")!!!i1'*9p(mJ"c5!RJ!!9!!)2)"M!!#!K!!!1cN!!B"M!!"m!`+Z(!!
%&Rp%!K5)'J&KQ"S"@6KL9VKr*!FdU!-!!(`%!!""J2qmJ(i!!%J"bd@!33!8J!%
!D$JK!'#k`IrBI!J$TNk!!#!!!!!!!!!!!,lKrpam#!+Q1q*@C(al'hJlSPc!1m*
@X(bA)hKmZ#YiN!!"!!L8)Ij3U(m!"N[rR18iJPDZI'8(0+J%!!"m"3!!3)!!*$K
L8E!F"3"NJ)-!!$KK!%#!K!!!I)3#&%[rRG9)!!!-1!!!!*J"!%!iBPG!L!-!M#`
!!!*"JJ#3!%#!!"!X!!!"3)!!&%J!!,3X!!!%3)!!V%J!!*!!1'*@&)"M!!")!FD
4J%%!&$L#A,amB`FdU!3!!(`!'!"!JJ!-1d!!-8J!!(b)(3!!+!!!!%'#!##S(J!
!,!!!!8##!!`l3!!X5!!!A$Y!!#T)!!"8U"i!!#`!!!&!JJ!-1d!!+dJ!!%!l3!!
T5!!!1+JH!!!X!!!"3))!$$Y!!#e)!!!N1d!!-dJ!!"bS(J!!,!!!!8##!!`l3!!
d5!!!#$Y!!#jrBpYi1+%!1$L!!!e,rjB*1'!#!%J"c6'!33!8I(iEH%J"aHf!33!
8Jji!!(p&dhJiB3#!1f!!!$L!!qK)!F0jJ%%!&$Y!!!&)!!#NId!(0$KK!)"mJ`#
Z9)!'2LJ!!&j!JJ"m1eS!!Ap!"c4m!`#Z,!!!4N'#!#K!J!!3,!!!4%'#!#4)!!!
N,!!!58'#!!K)!!!BIlRVH%J!!"!l2`!+5!!!#$XK!%!iJ!!"5!!!((b!"c4m'3#
Z1hX!!6L%!!'B(!!!1j`!!BJC!!"mJ`FdI!-!!%#"rpa)!!!3Q*`!!$ZF!!%lH`!
"1eS!!BJ"!)"r3`FdI!-!!%#"re4r`r0i5!()jB""!"4r`r0iIf3(0%J"c"f!33!
81'%!1(aN'hK)!GIeJ%%!&(aj'hP"JJ!mJ*N!!)0%!$k6a!!q5!(#mB""!"5!Q3!
!Ib2,H+J%!&k`'!!!J*N!!*0%!$j)!GI4J%%!&%J!!"!iBPbqU!-!!,!B!!!S&`!
!3B)!&*2A!!"qilYi5!(A`B""!"4r`r0i5!(06B""!"5!!3'i1#%"X,VKrpam#!1
Q6S!!)!!!!!!!!!!!5!!!%$J!!!#B!`!!1'-!!Ab!"c8iK2rr3),rl%k!!##6iIr
mI!J#TRar'hL3!!%!#*3Krm#!B`!!+!-!!%'#!#")!FIaJ%%!&)"r!!")!FcGJ%%
!&$J!!!#3!"m!!)!"!%Ji)3"!Jq(rr(`)!kC1J!!J[X(rf(`)!UBi`rrr1q*9k$[
#B!PmPL0iI,FVH(cC"c3l3!!!N!!"!!KmB!Fd(!!"$T3KrS#!I`!!J'-!!(qM!K5
)r3#mI1!(08##!!`iB!!!5!!$D$Zpr[*)!!#FL*d![(cM"c4m""J!3)!!K)JG!,X
S!!!!3B)!H$J$rrpm"!!!3))!2$Kp!)iiJ!!"5!(#RB""!"48B!Br3B)!*)!G!%U
3!"F!!)JG!,dS!!!!3B)!8+JG!&L`&J!!5!!!4$Kp!,miJ!!&5!(#CB""!"48B!B
r3))!'(p!"c48!!Jm1'%!L(mM!bil@J!"L2d![$Xjrrml[IlbIb!(08#!rf3i'[r
rI"N(0%J!!UKr)!FdJ*m!!&3!#$`iB3#)J+3!!(m$!UiiJ!!"I`!(0"`!!3jrT3)
81(d!MNJ"`I@!33!89'!'2d'#!#5!(3"+N!!A!!#)(3#p+!!!!%'#!P5S(3"BX"B
!!%J!!NKr!m0iIX5cH(lPZhK,r#rKB!!!!)1A!!!i!!!"Uhd!@(qMkhL,A3#pIk6
VH*JG!,eqjVYi13%!1+J@!!#`(3"BL"d![+Lf!!"m!!!d9!IH2N[m(!eJ!!!!I(J
EH(m!"c9"JJ"-I`-(0#`$rp""JJ"!L"i!!#J!!!""JJ!3Xhd!@*YG!,e)!!!J,!2
rp8'#!"Kr"X0i1'!$pML!!r!iS!!*5rq-$Am$`hK)!!'XI`!(08##!C5!&`!!1(d
!MML!!!'3!"d!5NJ"aIQ!33!81(d!MML!!!9)!FATJ%%!&$KJ!!'BI3#pU"B!!,!
G!&L)!3!i+!!!!%##!!L3!(d!EUL@!!"rKH0iIkEVH$KK!%",rhJaL"i!!#J!!!"
!JJ%FL"d![#J!!!"!JJ!81'*JGBJ$!!!S!!!!3B)!,)!G!)j8!!Bq,!!!!8##!"`
iI3#r1)!!"%J"`(@!33!89'!'2d'#!"L!I3#)1!$rrj!!B3!mN!!G!)K)!!!m1'*
@kSJ$!!!S!!!!3B)!,+Lp!)JiI3#'1)!!"cJ&XH#`(3#)U,d!LMJ&XH#`(3#+5!(
&!B""!"5)!3!i+!!!!%##!$JiI3#-1)!!#dJ"a1@!33!8J,d!3MKK!%#!h3"'1*d
!IS$p!(+"(3"k5rl-6@!!!!"mH"YiL"d![#J!!!""JJ!8J"d!MP3!"MiX!!!"3B)
!$)!"!$b3!"d!L(m!"c9"JJ!JI`E$H$KJ!rBiJ!2`1+!!#8[rLS9r!m0i5!!!*(q
MkhJiJ3"!5raMN@!!!!!l1IrrIb!(08#!r9JiB!!!J!%"L$JK!B#k`IrBI!J$TNk
!!#!!!!!!I!J#TT!!!3!)P#(r-$J"!$L3!!%!EMJ!!!'SJ`!!X)%!FS#$!!)iB3"
FN!#"!)b`!3"i5!(#3B""!"3i!2r9I'-(0(`!"c4m!`"3I!!!0&3$hMk!!3$B1#%
!d(`)!kC1J!!JI!J#TMKN!!U3!!%!#$J!6%Z8)Ir!X!3!!$L#0Da,rjD&1'!!!)!
"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!#r3IrSI!J#TRbE)hKmHKYiI,`VH(c
G-hKmrMYiI4p$H*!!!3!)P#(r!$L"!$K,rrq9I'!(08'#!!K)!!#BU!%!1#`!6%Y
!JJ#)Ii2MH$L"!%*,rjB41!!!!*1"!)BiB3"dXd%!LV!"!*!!Nf%!T%J"`@@!33!
8I'!(08##!&3S(3!!3B)!*)"K!*5!!3#BN!"p!!#3!"d!")"K!*b!!3#JN!"p!!L
3!"d!$#JH!!""JJ!-J!%!UT!!(J!!+"m!!%'#!!b!!3#dN!!I!!!iB!!!5!!!#$K
Jrp@!!3%)1#%"!,Y"rqKm#!1Q6S!!)!!!!!!!!!!!!!!!!(`)!UD3!!%!#*3Krm"
,rkF&J!%!5$JK!%"m#!1Q6S!!)(`)!UBiSQ9`N!!"!!L8)Ir!J!8!!#J!!!""JJ!
35rhq&@!!!!")!!!-1!!!!*!!"!!!J!%!5$JK!%"m#!1Q6S!!)(`)!UBiSQ9`N!!
"!!L8)Ir!J!8!!#J!!!""JJ!35ri#C@!!!!")!!!)1'!!!)!"!%Ji)3"!I!J$TNk
!!#!!!!!!6S!!)!!!!!!!!!!!!!!!!,qKrr4m#!+Q1m*@A$ZJ!!!liPG!N!!"!!L
8)Iq`N!"K!'L3!)%!E%J!!2arT1Yi1'%!D%J"[1Q!33!89'!'2d'#!1!X(3!#3B)
!J%#!!"3X(3!!3B)!'%#!!&4)!!$%,"d!"%#!!,a)!!#J1'%!E$L!!!")!EbTJ%%
!&&4J"Mp"JJ!BIm2cH$L!!!G)!F'*J%%!&%J!!)ar`r0i1)!!"dJ"`9f!33!85!!
!H$KK!'`iJ!!"5!'mDB""!"3iJPpRQ'3!!%J!!&`iB3"X1)!!!NJ"[%f!33!89'!
'2d'#!"JiI`#,1)!!"%J"`5f!33!85!!!-$Kr!)XiJ!!%5!("!B""!"4)!!!F1'%
!E$L!!!0)!E`0J%%!&$L#9Z@BC!!!1ld!!5`G!!4"J2m%J!%!@$JK!&#lSIrdI!J
$TNk!!#!!!!!!Nq(rr(`)!UBiSPASI*mMH*!!!3!)(!-"$MKL9J#8)Ir!J+8!!)#
$!!#!C3!!I'-#&$KM!**,rqh0Q(m!!)!"!%Ji)3"!I!J$TS2Krra1J!!JI!J#TT!
!!3!)P#(r`%[q@L9J!!!!J!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!$P#E$#
")K,!J3)5[)$L%VL!`K+dJ+)5X)##%Ub!!K+S1'*D[*%U!!#4#J!%N!$U!!L3!-S
!$*!!UJ!3N!#+!"53!!S!(*&$!9C1J!!J!!!!!!!!!!"1J!!J!!!!!!!!!!!!!!!
!Nq(rr(`)!UCmRb0iN!!"!!K8B!BrP#(r`%##!$`iJPG!1'!!!$N#9Q3ii!!+1+*
@B)$%!"!iL!!'5rrAH6KL9[#)!`!!+!!!!%'#!!a)!F,9J%%!&$KLA5Krj!Fd5!$
%9@!!!!#!!3")1#%!3)2Krram#!1Q6S!!)!!!!!!!!!!!J!-"!&3!$rjS!!!"9!-
'2Nk!!#!!!!!!!!!!!!!!!!#6iIrmI!J#TM[J!!#3!!%!#*3Krm#!!`%!,!!!!%'
!!#!iB`#11)!!"%J"ZM'!33!89'!'2d##!!Jli!!"9q-'2S!"!%Ji)3"!I!J$TS2
Krra1J!!J!!!!!!!!!!!!!!!!I!J#TT!!!3!)P#(r`%J"bP@!33!8J'-!"&4N!"i
m"%%4+!!!!%'#!!JiB2rrJ!%!5$JK!%"m#!1Q6S!!)!!!!!#rSIrdI!J#TRap'hK
mRL0i1q!!!*!!!3!)P#(rX%[rrk9m!r!!3))!&(qMkhK)!FReJ%%!&(ar'hKrirY
iJ!%!@$JK!&"m#!1QZk(rp%k!!##r`IriI!J#TM[#Eb"mIaYiN!!"!!L8)Iq`1+%
!1$M"!$`ii3"!5!'eEB""!"3iB3"!5!'rDB""!"5)(J!!+!!!!%'#!#"rirYi5!'
eHB""!"4)!FQ"J%%!&(ar'hK)!!!`Iq2lH%J"Y9f!33!85!(*CB""!"4mC!Fd2'"
356KM3e4,reD"B!!!!(ar'hJS(`!!3B)!,(rMqhJiJ3"!5!()&B""!"5)(J!!+!!
!!%##!""rirYi5!("rB""!"5!!3"B1#%!8,["rrKm#!1Q6S!!),r"rrKm#!+QI(i
EH(r$"c4m[bYiN!!"!!KmJ!FdI!!B8$!!rrq8)Ir!I)!"%$J!!2pm`c0iI!3J1%J
"Y6'!33!81!!6L(r$"c4m!!FdI!!B8$!!rrpmJ!%31!!!rhrMqhKm"#!i5!'e"B"
"!"5!!3")1#%!3,["rrKm#!1Q6S!!),lKrpam#!+QI(`EH$[LEb#!BJbJ1f!6L$Y
!%iL3!!%!#*3Krh")!E8PJ%%!&(aJ'hL!BJhiI"N$H%J"Y4'!33!8-"crrh`!i4#
B(`!!I(JEH)JI!!!S!!!!3B)!()#F!!#!C!!#J!3!"T!!B3"8N!!"!&K)!!#82'"
356KM3e3iJ"1)5rp9-@!!!!!S!`!!3B)&F)#M!!#!K3!#J!8!"T!!J3"8N!!"!&K
)!FcYJ%%!&$KJ!!")!Ej"J%%!&$JD!!%mB&"*1'0$9(`%"c4,re6TB!!!!*!!B3!
m5!'h[B""!"4mB!Fe3))!')!"!$`S!!!!3B)!$$YD!!&,rrr%1'!!!8J"[I@!33!
81'%!3%J"Y&Q!33!81'!%#$L!!!",rfljB!!!!)JI!!"mIKYi+!!!!%'#!"a)!E0
"J%%!&(q%ihK)!FGGJ%%!&%J!!"K)!E-TJ%%!&$L!%iK)!FG&J%%!&+L"!&BiB3"
8U!%!9(b%!0!J!!!%I)3(0(`&"c4)!EA*J%%!&+KK!&TmB!Fd,!!"AN#"!!amI4Y
i5!!!+#!!!9jm!!j`I!!"P$KK!&4m"!Fd1k!"AMLJ!!")!E@0J%%!&(r$mhJiS3!
i1-%!2$MK!&`iJ!!"5!'bFB""!"5SJ3"H1'%!A+J"!&amK!$3I!!!d(b%"c4m"3F
d5!'e6B""!"5S!3"LIlm(0+L"!&JiB3"FI+$i8$LPrrBi"!!+I+3(0(`&"c4)!E8
KJ%%!&+LK!$Kr`r0iJ-%!2$MK!&`iJ!!"5!'d,B""!"5!B3!mU)%!AULK!&a)!E8
*J%%!&+L"!'"r`r0i1+%!1$J%!!jm(!Fd1-%!2$MK!%`iJ!!#5!'abB""!"5SJ3"
11'%!6+J"!%amK!$3I!!!d(b%"c4m"3Fd5!'dTB""!"5S!3"51'%!6+L"!&KmS2K
31+ArqMJ%!!CmT!FdI!8(0%J"Y(f!33!8U+%!1(r$mhL!`3!m11%!6$L!!!*)!E1
*J%%!&(r$mhJiJ!!"5!'c-B""!"4r`r0i1+%!1$M"!$`ii3"-1)!!"%J"X6@!33!
8U-%!6MKK!%bSJ3"HU+%!6+J"!&amKL"3I)3(0(`&!&"m"3Fd5!'d#B""!"5SJ3"
11'%!6+J"!&)iS!!!I)3!8$J%!"jm!!$3I!3(0%J"Xq'!33!8U+%!1(r$mhL!`3!
m11%!6$L!!!4)!E,YJ%%!&)"K!$bSJ3"1U+%!6%J"XmQ!33!8Jq%!2(r$mhJiS3!
i1-%!2$MK!&`iJ!!$5!'`NB""!"5!J3"-1'%!A)!"!&!iS!!!N!#"!&b3!!%!B+L
"!&kS!3"LI)3!8$J%!!pm!!$3I!3(0%J"XeQ!33!8U+%!1(r$mhL!`3!m11%!A$L
!!!0)!E*PJ%%!&)"K!$bSJ3"HU+%!A%J"Xd'!33!8JZ%!2(r$mhK)!E"*J%%!&(q
NkhKrKH0i1-!!!%J"XY@!33!8Im2cH%J"X#Q!33!85rq(B@!!!!"r`r0i1+%!1$M
"!$`ii3"F1)!!"8J"Vp@!33!8U+%!1(r$mhL!`3!m11%!9$L!!!9)!E(KJ%%!&(r
$mhKr"F0i1)!!"8[rJq9J!!!!Im2cH%J"VmQ!33!85!'b`B""!"4r`r0i5!'bcB"
"!"4r`r0i5!'[UB""!"4mI"Yi1)%!4%J"Vl'!33!8I'3EH(q$ihK)!Em"J%%!&(p
%dhKqjEYiIqElH$KJ%iK,rrU"1)%!1$KJ!!")!E+9J%%!&+J"!$JX!!!%3B)!6%#
!!)!X!!!$3)!!#%J!!(4rB!Fd,!!6L%'#!'Kr`r0i1h[rrdJ"Vbf!33!8If3(0%J
"`dQ!33!8Im2cH$L!!!9,rrP45!!!2(pM"c4r3!FdI!-!!%'#!#ar`r0i1hX!!8J
"V['!33!8If3(0%J"``f!33!8Im2cH$L!!!9,rrN9U!%!1#`!!!&"JJ!BIf2EH(p
%dhKqjEYiIqElH%[rqF@S!3!i,!!!!8##rcar`r0i5!'akB""!"4r)mYi5!'b$B"
"!"4r!m0i5!'b!B""!"5!B3"!5!'b$B""!"5!!3#B1#%!N!#kiIrFI!J$TNk!!##
rSIrdI!J#TRap'hJliR"X1)*[*$KLEe53!!%!#$J!!!#8)Iq`X"m!!*1N!!")!,X
9U(m!!(aJ"c9!JJ"SIk2VH%J!!)&J!!!!J"d!!#`!!!0"JJ!`3)!!%#`!!!&"JJ!
85!!!4#`!!!9!J!!m5!!!*%J!!)&J!!!!I(iEH%J!!#K)!!%4B!!!!(aq'hK)!!!
B5!!#!@!!!!"mIKYi5!!!#(aq'hKr`r0iJ!%!@$JK!&"m#!1QZk(rp%k!!#!!!!!
!1+*`F)$$!#b!"3!!I!B!3%'#!!`iJQmXN!$%!!#!!`!XN!!&!!"1J!!J!!!!!!!
!!!#r`IriI!J#TMKLEb3l`Qp)1q*[2*!!!3!)1!!!!*3Krm#3!"i!!)"M!!#3!"m
!!)!$!"a8!!Hr3B)!4$aJ!!&)!E5eJ%%!&*!!I`!!5!'iiB""!"4mB!Fe3))!,$a
J!!&)!E59J%%!&*!!IJ!!5!'i`B""!"4mB!Fe3))!$$KJ!!")!!!35!!")@!!!!!
iB2rqJ!%!5$JK!%#l`IriI!J$TNk!!##r`IriI!J#TM[LEb3l`Qmd1)*[5*!!!3!
)P#(r`)%r!!#!U3!J+!8!!%'#!$5!D3!N2!!!!R`$!!"!J!!-1'$rrNJ!!+`iBQm
mN!#M!!#!D3!J2!-!!C!!"!!!5!!!')!%!!!S!!!!3))!$$KJrre)!!#!21!!!6L
LEe!iJQp!13!!!$M#Ed`i"i!!1'*[4*%%!!!iJQmiN!!$!!!iBQm`N3B!!*!!j3!
!J!N!$*!!"!!!Q3-!!*%H!!")!!$YB!!!!%J!&e9J!!!!I'!(08'#!!K)!!!J1'!
!!8J!!ceJ!!!!J"i!!$KJ!!#!R`!!N!!%!"#!!3")1#%!3,["rrKm#!1Q6S!!)(`
)!UBiBQmmN!!"!!L8)Ir!J'-!!#J$!!""JJ!-5!'cCB""!"3iBQp)J'-!!#J$!!"
"JJ!-5!'c6B""!"3iB!!!J!%!5$JK!%"m#!1Q6S!!)(`)!UBiBQmNN!!"!!Ji!!!
!P#(r`)"M!!#"J`!X+!`!!%'#!"JiJQmdJ)3!!%J"hr@!33!8I'!EH(`$!hL!!3"
)1#%!3(`)!kC1J!!J!!!!!*2Krram#!+Q1q*[4*!!!3!)1)*[**3Krl!iBQmmJ"m
!!$LK!$L!a!!!9!!)2)#$!!#3!!%!1+KQ!"4)!!%*B!!!!)$"!$JiS!!!1)*[3$K
LEbKm`!j`N!#N!!#3!--!!*!!(`!!J!%!@$JK!&"m#!1QJq(rr%k!!#!!!!!!!!!
!!!!!!!#rBIrXI!J#TMKLEc!lSQp!1m*[2$[LEd53!!%!#*3Krk#)!`!!+!!!!%'
#!!`iB!!!5!!!G)"p!!#!(`!!J*i!!&4m#$am!`"39"X)2(aNiK4rCGYi5!'k0B"
"!"3iBQmN1+%!1)!H!!#6J3!iJ'-!!(b!fK5SB`!85!!!5@!!!!#!!3!i1'!!!C!
!I3!!I!$D&)"q!!"m!!j`I!!"P*!!(`!!S'-!!)!"!'Ji)3"JZf(rl(`)!kC1J!!
J!!!!!!!!!!#r`IriI!J#TM[LEcKm[LYiN!!"!!L8)Iq`J!8!!)$I!!#3!!%!1(`
!-!""J!!81+*[-$J!!!'3!-%!1*J&!!!i`QmNI)8MH$L"!$L!aJ!!JBB!"%J"hN'
!33!8I'BEH(c!"c9"JJ!F1+*`E$L!!!!iBQp8X-8!!%J!YYeJ!!!!J'%!1)!I!!"
m!`"3N!!I!!#3!(i!!)!"!&Ji)3"3I!J$TV["rrK1J!!J!!!!!!!!!!!!!!!!I!J
#TMMLEc53!!%!#(b))hJi`QmNP#(r`)!(!!!iJ3!iN!#K!$Km!#S8J-B!!*!!"`!
!I39$H)''!!K)!GfTJ%%!&(aQ'hKm`!Fe3B)!($LLF'`iJ!!!1'*[9,$&!!")!,C
&B!!!!)!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!!!!!!#rSIrdI!J#TM[#EdKmI4Y
i1q*[6*!!!3!)P#(rX%[rr59J!!!!9'!'2d'#!#!iSR"X1!$rp6KLEe3iJ!!!X!8
!!%J!YH&J!!!!J(m!!#`$!!""JJ"S9k!'2d##!!`i!i!!N!!I!!!iBQmNJ*i!!)"
M!!#![`!!U'-!&N[rr`PAS!Br3))!-)#H!!!mB!!"J"m!!$LMJ!"mC!)85!'i!B"
"!"3mB!!"1!1!!*!!(`!!5!!!$$J!!!#3!"m!!)!"!&Ji)3"3Zk(rp(`)!kC1J!!
J!!!!!$LJ!!")!!!81!!!!*J$!!!iB`!"1+8!!A`&)!""J2rX6S!!)!!!!!!!!!!
!!!!!!,hKrlam#!+QI*8MH(ac'hKmYLYiI0FcH(ci1hKp'80iI6&,H$L!!%53!!%
!#*3KqM!iB3$%5rrrRAjpQhKqX+YiJ"d!!$L"!-3f%2rr9!831RaN+#il[3!%1!-
!!A`%+5j!J[rJJ!%!a(`!U%"!JJ!B1!!!!*!!'3!!1'!!!*!!%3!!5!!$e)24!!!
ji!!"5!!!(&AJ%$SiB3$%I!-!,LJ!!!"!JJ!31Hm!!5J2!""!JIrNI"ji3(hrHhK
!J!!)IIjlH$S!!"")!!!F9J!31MKK!-4m!`!Z+!!!!%##!"!k%2rr+"!!!%##rq4
m(S"!IK+$H%#"!!Kq(S0i1!!!!C24!!"m'hJ`5!!!+&AJ%$SiB3$%I!-!,RpJf&&
!J!!-1'$rqdJ!!c4AH`Jm1Hm!!A`2J%""J2rB9J-31ML"!-4m""JZIf$B88#!!!`
iB2rl5!!$#(`!fK3ji!!!I!3C,MZK!-L4i3#%1)%!L%J!!"L!(3!!1ld!"(h[!K5
4j!!!1)3!"$B3rrp!J[rSIRfEH$S!!!#"r3!!1ld!"#J2!!""JJ!N9HF31MM"!)"
mTMJZ1'%"#$L&!!&8S"!kI)Bj,Ri$!5ik%!!"I"#S3%'!rmJk!!!!1!!!!*)"!)!
lS3%)N!!"!%"rRJ$31L$rrcKJ!!!l3!!!5!!#3&IJ%$SkJ3$%IT3#&)*d!!")!!)
FIjcb&(pFN!"3I"V`3(p$dhJk-3!"3)%!#(r$mhKpr2K31!!!!A`'H$!i%`!"I!B
!3%#"!$4qK+0iI-!`8%J!!"b!"!!%9-B)2$L%!!4m"J"!3)%!&(c!-&!jl`!"I!m
B3%'!rq!i!!!"I"Ti-$JD!!%FB!!'5!'XaB""!"3S!`!!3))!)#`4!!""JJ!3J'%
!3%J!!GPJ!!!!1'$rqNJ!!E!i!`!'N!!C!!!X%3!!1b-!!MJ!!!!iB`!'N!!C!!"
@*a!k1)%!3(aN15j"JJ"%I*lJ8*!!B3!k1+m!%(i2*$#BS3!i1)%!2+!"!$bE`3!
j(+m!"Rc%1#k!J3!iI+BU&*!!K3!!1)%!J(i%15k`"3!%I"cb&(`I!!""JIlX9U8
31ML"!3KmK#S8I"ci8(`G)%#B!3!j3B!!%$L!!'1BJ3!i5!!!9)$G!!"m"V"!3)!
!,$L!!3#``3!kI)3`%(b%)4"mT!$31)!!$hb&)K5BJ3!i1ld!"%J!!#"mPM"39)3
)2(bi)Lil[3!%I*FL,TLK!$L`J3!k1)!!!Ab'!$"q$q3`5!!!)"b[!!D!J3!iS!%
!2(bM+K53!)8!!(h[-K5`"3!%I!r33%'!rq!i(rrr1)!!!Ab2!$")!!!-IK"kH&A
[q(jq!(Jj3),rp(i3HRK)!!!-IjlJ8$Sarrmi!!!"I!6J-$LNrrp@)"!k1)%!J(`
%!#jq"#JiI!3!3%##rpJS%`!!1R2rrd##rZ`lr`!"I"q3!!"!JIh!,"X!!%'#!"3
X%J!!3B)!$$KJrra)!!!)1'!!!)!""GJi)3A3ZH(r[(`)!kC1J!!J!!!!!!!!!!#
6iIrmI!J#TT!!!3!)P#(r`%J!!"L$irrm1'2rqNJ"UZ@!33!8Iq2lH#J$!!"!J[r
S1'!!!)!"!%Ji)3"!I!J$TS2Krra1J!!J!!!!!!!!!!#pSIqdI!J#TRai'hJiBR"
dI,SVH$VLEda8T3Jm1X)fq(cE-hJk3Qp31D*[5(bC)hJkBQp%1S*[3$ULEcb3!!%
!#&6!#$b8)Ip`Jk-!!$KLF(L"e`!!Ui-!!(rf+LjreJ)Z5!!!4)#8!!#!%`!!I!3
!!%#!!"`i"!!"J(8!!*!!&!!!9)!)2(aM!Lj)!!!-5rrha@!!!!"8B!3qI!"i-(q
p!hJlR!!3Iim(0(`2d!""J2qiIk$i1"`!!!Cpq!)8LLm!!(iJ"c3X!!!33)%!U(i
J"c3X!!"M3))!$$KJrrK)!!1XL!m!!Aqp"$"rJ1"35!!!5)#8!!#!%`!!I!3!!%#
!!"`i"!!"J(8!!*!!&!!!9)!)2(aM!Lj)!!!-5rrh1@!!!!"rJ!Fd9'-%2RaJ!$"
r[30i1j`!%$J4rr"rJ`FdI!!(0(`$!!""J2qX9!!)2)"[!!*m&J)ZIk!!1"`!!!C
pi`)8LLm!!(iJ"c3X!!!33B(rB(iJ"c5)E`!",!!!%(qp($"rJq"33))!4+#2!!*
p`(0iJ'd!!$R1!!&mJ`'ZJ()!!$J$r[Tm$J"!3B$qr*(A!!!iB!!!5rriM@!!!!!
mB!!"1F1!!%[rrZ!X!!!23B)#T%J!!%L!P!!!J"-!!(`%!!"!J!!F1!3!!B"e!!#
3!"3!!&5!#$amB`)Z5!!!$%[rpP9J!!!!Ii!(0&4M"$jmB!!`Ild$H$ZF!""rJ!F
dIL3(0(`!)!""J2q`9)!)2+"[!!*m&J)ZIj(J8(qJ!$Kq!`)8IldN-%J!!%5!P!!
!J"-!!(`%!!"!J!!F1!3!!B"e!!#3!"3!!&5!#$amB`)Z5!!!$%[rpH&J!!!!9'!
%2R`!H$"r[30i1j`!%(q2"c4m$pJ!3B$rZ(qJm$JF!!!'IIN#&)S[!!"q)!Fd,!!
!%%#"!+Kq)!Fd,!!!Bd##!!`iB2ri5!!"b)J2!!&r[33`Ii$J8%J!!%L!P!!!J"-
!!(`%!!"!J!!F1!3!!B"e!!#3!"3!!&5!#$amB`)Z5!!!$%[rp99J!!!!Ii!(0&4
M"$jmB!!`Ild$H$ZF!"!i%Ir`Ii-(0(`!"c4m!`!!3B$rV&3!#$b!E`!#I"B#,Rq
J!$JF!!!'IH-#&)S[!!"q)!Fd,!!!%%'"rf#)$`!"Ild%-(q!i&")!!")J*3!!)!
6!!"m"!!!3)!!($J%!!'!G3!!N!!8!!"8J!JmI'-#,NJ!!!a,rr6&B!!!!(q!"c4
8B`3qI'!!-(qp!hJlR!!3Ii!(0(iN"c4m!#!!3B$rX&5$#$bJ$`!#I(BD,Rq4i&"
m!("3Ik-B1(hM!&"r[53`J*)!!(h$FhJi"2rrIHm!1(`2F%"!J3!)IH0lH(`$)&"
m%3FdI"'!3(iJLhK!J3!)IJ#$H(`4"c4q%B"3J+d!!(hJHhKp`h0iI)8!VMSarrp
q)!FeI)8CVMR[!!%jcJ!"3),rh)"b!!!i!rlkI!i!3%'!!"b4e`!!1'!!!%[rpHe
J!!!!2'!!!6R$J!!S%!!!3),rF%[rr$JiJR"d1'!!!*(A!!#6T!!!1)*`H,1%!!#
!!3#B1#%!N!#jSIqdI!J$TNk!!#!!!!!![N(rb(`)!UBkSR"i1S*`G$V#0E3lJQp
%1k*[3$YLEcb3!!%!#*3KqT!!Jp3!!+[e!!")!!")J*d!!)!F!!"m"!!!3)!!($J
%!!'!H`!!N!!G!!"8J!JmI'-#,NJ!!!a,rr09B!!!!(rJ"c48B`3qI'!!-(rH!hJ
lr`!3Iq!(0#`!!!9"J2qd9m-'rMY$!3&AhYPq1rrrqdJ!!%L!R3!!J"`!!(`%!!"
!J!!F1!3!!B"l!!#3!"d!!&5!#$amB`)Z5!!!$%[rm[&J!!!!Iq!(0&4M"$jmB!!
`Ipi$H$[r!""ri!Fd,!!!"8'!rl4A``Eq1b-!!9IHfAilrrrl5!!!5)#G!!#!(!!
!I!3!!%#!!"`i"!!"J(X!!*!!(3!!9)!)2(aM!Lj)!!!-5rrbM@!!!!"ri!Fd9'-
%2RaJ!$"rhJ0i1rm!%(rJ"c3X!!!%3B$rY#JD!4jA``Fq1Q-!"&IHi6ilrrrm3B%
!$#JC!"j!J3!-1'$rq8J!")3k3!!!5!!!H)#G!!#!(!!!I!3!!%#!!"`i"!!"J(X
!!*!!(3!!9)!)2(aM!Lj)!!!-5rrb$@!!!!"ri!Fd9'-%2RaJ!$"rhJ0i1rm!%(r
J"c3X!!!$3B$rY&C!%$Tm&J!Z9m3(IMKK!%K8!"!kI)-",PIHk2ilrrrp1P)!!A`
5Q%""J2r-5!!!)&C!%$Tm&J!Z1'%!5$L!!!"8!"!kI)-",MT5!!%S%J!63B$ri$J
!!!H3!!%!2$KK!%Jj!3"%15%!2$L!!"-iS!!61-!!!$MJ!!",rr4GI(J(08'#!"`
X'2rm3))!$)"K!%4,rrLeI`-(0%J!!j!!J!%!2$TJ!!!iBMEiIRLEH&3!#$aq``)
ZI[V+&%J!!RL!R3!!J"`!!(`%!!"!J!!F1!3!!B"l!!#3!"d!!&5!#$amB`)Z5!!
!$%[rm3&J!!!!9'!%2R`!N!!`Ipi$H$[r!"#!!3!mIr)(0(`5!%""J2qdIm#`1)"
K!%3F!!!'I'-#&*!!B3"!LN-!!A`5q&"rhT3`SN-!!R`I"c3S%J!33)!!(&F!%$S
iB3")IN-",Rj6NhJl'!!"5!!"i%##!*a)!!")J*d!!)!F!!"m"!!!3)!!($J%!!'
!H`!!N!!G!!"8J!JmI'-#,NJ!!!a,rr"KB!!!!(rJ"c48B`3qI'!!-(rH!hJlr`!
3Iq!(0#`!!!*"J2qd9m-([MT$!!0m'*)8I!#i3&IHm,ilrrrq3)%!($KJrrP)!!*
F9`!31MKK!%KqB`%Z1aJ!!5J5!!!k8[rr3),rk%J!!83S%J!43))!k%J!!%L!R3!
!J"`!!(`%!!"!J!!F1!3!!B"l!!#3!"d!!&5!#$amB`)Z5!!!$%[rlm&J!!!!Iq!
(0&4M"$jmB!!`Ipi$H$[r!""ri!Fd,!!!!d'!rl4A``Gq1N-!!h`BNK4m!,K!9pl
SrM[rrre!J3!J1'$rq8J!!EaA!"!k1'%!5$L!!!"mJ`%Z1aJ!!5J5!!!k8[rr3),
rj$TJ!!")!!#FJ*d!!)!F!!"m"!!!3)!!($J%!!'!H`!!N!!G!!"8J!JmI'-#,NJ
!!!a,rqmPB!!!!(rJ"c48B`3qI'!!-(rH!hJlr`!3Iq!(0#`!!!G"J2qd9m-'IMT
$!!Ym'*)8I!#i3&IHbIilrrrj3)%!)$KJrrP)!!%J9`!31MKK!%JiJ!!!I)-",MX
B!!%S%J!!1P,rrd##rq3kB!!!I"Li3%'!rFL!B3"%5rrf#6LL0aar400iNp3!!$K
K!%L!"3!!Xr8!!$N"!%3i`MB!15%!2*!!!3!m11)f3$LJ!3&,rr&PI(J(08'#!"`
X'2rm3))!$)"K!%4,rr@pI`-(0%J!!*JiJMFJ9d!31MKK!%Ji`MD!J+3!!$ML0Va
r*-YiN!#K!$KmB`)813%!3$NK!$JiS!!!5rra%Aai"c9"JJ!N,"Mrr%##!!b!B3"
!5rreDB"K!%4,rr9KI`-(0%J!!$b!B3"%J)%!3)#K!$b!`3!i5rrePAai"c9"JJ!
-I`-(0%J!!"L!B3"%5rre,B"K!%",rr8P1'!!!)!""AJi)39`ZN(rb(`)!kC1J!!
J!!!!!!!!!!#qSIr8I!J#TM[#F(JliR"d1k*[6$Y#Ed3lBQp!1i*[2*!!!3!)P#(
rN!#SIJ!!J[m!!&4j"ck$(3!!I"NB8(lhc$"m&JFd5!!!5)#E!!#!'J!!I!3!!%#
!!"`i"!!"J(`!!*!!'`!!9)!)2(aM!Lj)!!!-5rrY-@!!!!"q`!Fd9'-%2RaJ!$"
qp`0i1YB!%(l!"c3X!!!33B$rY&Ej"$j@p3Iq9[H%2MV@rr")!!")J*X!!)!D!!"
m"!!!3)!!($J%!!'!I!!!N!!E!!"8J!JmI'-#,NJ!!!a,rqc0B!!!!(l!"c48B`3
qI'!!-(lh!hJkeJ!3IX!(0#`!!"""J2qdIZ#iq&3!"$jm'3"!3B)!$$KJrrC)!!%
J9[H%2MV@rr")!!#8J*X!!)!D!!"m"!!!3)!!($J%!!'!I!!!N!!E!!"8J!JmI'-
#,NJ!!!a,rqaCB!!!!(l!"c48B`3qI'!!-(lh!hJkeJ!3IX!(0#`!!!K"J2qd1)*
[5(m!`hJiBQp31aJ!!B#%!!"qj!'ZJ!-!!(`B!%"!JJ!BNad!!$KJ!!&,rqheB!!
!!$X!!!"@pm)q1YErq#JC!!!l1Irr3),rV&DJ"Mp"JJ"J5!!!5)#E!!#!'J!!I!3
!!%#!!"`i"!!"J(`!!*!!'`!!9)!)2(aM!Lj)!!!-5rrVX@!!!!"q`!Fd9'-%2Ra
J!$"qp`0i1YB!%(l!"c3X!!!)3B$rY&Eh`Mike[riNad!!$KJ!!#5r`!!XYi!!)!
"!(Ji)3"`ZU(re(`)!kC1J!!J!!!!!!!!!!!!!!!![`(ri(`)!UBl`R"iI(JEH$[
LF(3lBQp%1i*[3$ZLEcb3!!%!#*3Krk#$A`!!Uci!!%J!!%L!R!!!J"X!!(`%!!"
!J!!F1!3!!B"p!!#3!"`!!&5!#$amB`)Z5!!!$%[rk[9J!!!!Ib!(0&4M"$jmB!!
`IeS$H$Xj!""r)!Fd,!!!!8'!rl4A3!IqQ"J!!&GDq(il1Irr5!!!5)#F!!#!'`!
!I!3!!%#!!"`i"!!"J(d!!*!!(!!!9)!)2(aM!Lj)!!!-5rrUN@!!!!"r)!Fd9'-
%2RaJ!$"r@J0i1cN!%(mJ"c3X!!!#3B$rY&G!"ljm"30iI+!(0&G%m,iiHIrqN!#
I!!!X!!!#X(i!!%##!!a,rrD95!!!'(bJ"c9!JJ!-5rrmP8J!!!JiB2rhJ!%!D$J
K!'#l!IrJI!J$TNk!!#!!!!!!Nq(rr(`)!UBliR"iN!!"!!Ji!!!!1)*[6*3Krl!
iBR"dN!!%!!#`(`!!N!!$!!!iB3!i5rrqNAaJ"c9"JJ!)5!!!6)J"!$JS!!!!3B,
rj%J!!#!iJQp!U,m!!)"N!!!iTIr`1!2rrl#r!!#3!!3!!+JI!!!X!!!33)$rh$K
J!!&,rqZ&B!!!!$KJ!!#!!3"B1#%!8)2Krram#!1Q6S!!)!!!!!#rSIrdI!J#TRa
p'hKmRL0i1q!!!C!!!3!)P#(rX,2q!&iiIJ"#Nli!FNJ"QVQ!33!8X(i!!+JH!!!
X!!!!3))"!)'H!,SS$!!!3B)!'$Kq!%*)!FKaJ%%!&&4J"Mp"JJ$JL"i!B&3!"[G
"JJ!FJ(i!FRr%mhK,rrq01!!!!,!H!!")!!#mJ(i!H&4J"Ip"JJ!89'1kIMJ$!!'
3!"i!YNJ!!!a8B,TqN!!H!,D!RJ#fJ"i!VRaN!jCm!`(@I!!J88'#!"L!(J#bI'-
#&$J$!!'3!"i!XNJ!!"#!(J#bI!!D&*!!(J#bJ(i!JP4J"Ip"JJ!89'1kIMJ$!!'
3!"i!YNJ!!!a8B,TqN!!H!,D!RJ#fJ"i!VRaN!jCm!`(@I!!J88'#!"L!(J#bI'-
#&$J$!!'3!"i!XNJ!!"#!(J#bI!!D&*!!(J#bU"i!!$[r!!%X!!!!3B,qe)!"!&J
i)3"3Zk(rp(`)!kC1J!!J[f(rl(`)!UCmHaYiI*mMH(cF-hKmr6YiI+3VH$KJ!!#
3!!%!#*3KrQ!iS3$i5!!Ge@!!!!"mIKYiIm!(08##!'#!B3%S1!%!1ML!!!#!`3&
k9'@kIT!!J3$UIq2lH)$K!AiiJ3!iN!#K!1C8rlJqN!!"!)a3hlJ3Xf%!N!#6J3$
b5rrq*B#"!1SiB2rrJ!%!jR`%!GCm!2J3I!-"N!#B(3!!Im2cH)!"!DJi)3'JI!J
$TVYKrqa1J!!J!!!!!!!!!!!!!!!![d(rk(`)!UCmI4YiI*iMH(br+hJlB!!"N!!
"!!L8)IUJXhm!FMKr!&D6[`#'5!'BPB""!"5`I`!3U(m!%(aJ"c9!JJ3JJCm!$#J
-!!""JJ!B1(m!9NJ"aNf!33!89'!'2d'#"'#)(`"d9!!'pd'#!Ib6`3)N1*m!&MM
"!L5!I`$#13%#)+Lr!"3ii!!!5r[[Y@!!!!#`I`!3U(m!%(aJ"c9!JJ&`1'*ICSJ
$!!!S!!!!3B)!U+JI!'`l33-'Id26H,!"!`#6S3-#J*m!D%[rE)9J!!!!1'%$!$L
"!dK)!#`&B!!!!&4J"Mp"JJ"`U,m!&(p$dhL!!3)N1))9H,#K!`#3!!%$!N[rE%e
J!!!!1!!!3(`*!kBiS3!B1)%$4)"N!!5%"!!)N!"P!!58"3!)3J$rm)#"!"`iB3-
!J+%!))$"!#5!i3!SJ3%!,)%K!$#"33!d5!!XS@!!!!#!I`#'IqAlH)#"!L4mI"Y
i5rrqQBJI!")S!!!!3))!h+Kr!'arK10iU0m!&$LJ!!#!i3)N13!!!%J!&k&J!!!
!U(m!E(q%ihLSh`!81+!!!)$K!L3j!!!!15!!!8J!*&eJ!!!!X(m!%+Kr!""mB!F
e3B)!L)'I!!JS$!!!3B)!-+Lr!'arKZ0iU4m!&$L!!!5")3)N11!!!$P!!!")!F5
YJ%%!&*Kr!"*)!!"31!!!!CJI!"*)!!"%JCm!##J-!!""JJ!`U,m!E(q'ihLT(`!
8ImRcH$PI!"BiJ!!&11!!!%J"a'Q!33!8Q(m!%NJ!!!`i!!!"Q"m!%SJI!")S!!!
!3))#D$J!!!#`(`!35!!#A$Y!!!#!I`!%1!!!!(r(mhL3!'%!1$Lr!"Bj!!!!N!!
"!$`j)!!!U(m!E)#I!,USh`!8J9m!!%J!#99J!!!!X(m!%+JI!"!X!2r33))"'&G
!"Mp!JJ%3J(m!`ML"!N`l3!!"1+!!)8J"N`f!33!8J(m!`ML"!LJiS!!K1'-!)8J
"N[@!33!8J*m!`MKr!"BiS!!K5!'5iB""!"5!R`$#1(m!&MLJ!#%iK!!K5!'5bB"
"!"5S(`"X1(m!&ML"!Vk`!3+i1+!!3)!I!,U3!!%#ZNJ"NU@!33!8U"m!&$Kr!"B
iJ3*fX!%#F$LJ!%#6`3*b5!'5KB""!"5![`$#1'%#Z$L"!R",r6mTB!!!!,"r!"#
S(`!3,!!!!%##!#`iB3*`5rkK$@!!!!"mB!Fe3B)!&(aJ"c3X!2r93))!#$KJ!!#
`I`!3U(m!%(aJ"c9"J[kmI'!(0#`!rrp!JJ!-1!!!!,!I!""A3!Br3B)!-)#I!-)
iB3*-1+!!)8J"NIf!33!8J*m!`MKK!LJiS!!K1)3!)8J"NH@!33!8U(m!%(aJ"c9
"JJ#mJCm!##J-!!""JJ"%U,m!E(r*mhL!h`#k12m!&UNI!"3iJ!!'18!!!%J"`R'
!33!8Q(m!%SJI!")S!!!!3))!I$J!!!#`(`!35!!!F$J!!!'B(`!55!!!C(aJ"c3
X!2r93B)!@)'I!!JS$!!!3B)!4+Lr!'arTZYi1)!!!6MJ!!!j!!!!15!!!$P!!!"
)!F)0J%%!&*Kr!"+)(`!5+!!!!%##!"Ji!!!!X"m!%%J!!!`i!!!"Q"m!%UJI!"!
lH`!",!!!!%##!"#)(`!5+!!!!%'#qdL!!39S1#%&B,Y"rqKm#!1Q6S!!),k"rp"
m#!+QI9Y6HAbj+hKp&80iI6T,H(bA)hJli!!!N!!"!!L8)IS3J`%',,"K"JU$J3B
SN!#""Jb+`3BcX-%'&S1K"M53!1%'')2""ML6!31Z3))!3$Z!3!!iB%!!5!'80B"
"!"4mHaYj3))!*$Z!!J!iB!)!5!'8(B""!"4mHaYj3))!$$KJrj4)!!3%1q!!!DK
K"JTr*FYiJ)%'$$M""J`ii3)K5!!C6@!!!!"mG"YiIS!(08##!m#)!3)K+!!!!%#
#!!`kJ2q)5!!$V)!""KJX!!!"3))!(#J9!!"!JJ!81!!!!C!!!3BBQ!%#)8J!!%#
SB3B@IU@VH)#""KJi`3BB11%#)8J!'1eJ!!!!I(3EH(k!"c9!JJ0JL!%#)5J!!!"
!JJ!-1S$rL%J!!dbSJ3B+Ib2,H$LK"JT)!"JTB!!!!(ad'hKqJ!Fe3))$,+L""KC
qSkYi1+%'&NJ!'!PJ!!!!I(3EH(k!"c9!JJ--9X!'2d'#!$bSB3B+ImEcH)#""J`
ii3)JU+%'&N[rq-PmG"YiIS!(08##!Z#)!3)J+!!!!%##!!`kJ2rH5!!#c#JD!!"
"JJ!SL"S!!#J!!!""JJ!FId26H$L"!Q3iS!"!5!'2(B""!"4)!!!NU'%'#MLK!Q5
!J3B-5!!B[@!!!!"mG"YiIS!(08##!S#!!3BB,!!!!8##!(bSB3B@1+%#*$L!!!*
)!"L4B!!!!(ad'hKqJ!Fe3))"2#JD!!""JJ!BId26H$L"!Q3iS!!J5!'1XB""!"3
iB3*NI'3EH$LJ!"Y)!"5eB!!!!+KK"KBiS3)N1-%#C$L!!!&)!E*9J%%!&$J!!!+
3!!%''(ad'hK)!!$NU+%'&Rm$`hJiJ3*N1-%''$N"!L!ii!!!5r[S[@!!!!"mG"Y
iIS!(08##!,JiBPpQL!-!!#J!!!""JJ#SU!%'#MUK!UU5i3+QIU1VH(mNbhL`!3+
N5rpPN@!!!!!iB3+N1)%$Y%J!*4&J!!!!9'!'2d'#!(#SS3B@IU1VH)!""KJiJK9
iX+%#T*!!!3+Q5rpP@@!!!!!i!!"!I!N$TMLK!"JiJ31`J'3!")3%!!L3!'8!"*3
&!!K#!2r`J)%!($KK!U5!S3!JJ-%!*)$K!#L"!3!XJ5%!-)&"!$4)!#@YB!!!!(k
!"c9"JJ"!+"d!!%'#!3bSS3B+IS1MH)$""JarV1YiU3%'&S%K"KJj33*N1)!!"6M
J!!")!EiKJ%%!&&4J"Mp!JJ$BU3%'&MMK!`+S`3B+1!!!!*0K!Zb!B3B-1+%#l*1
"![#!J3BBX3%$!*!!i308X-%$@*1K![5B!3,qNm%#q%[rpc@)!3,qUS%#r#J!!!"
!JJ#)U'%'#MLJ!!#!J3B-13!!!+M""KD!i3BB5!!31@!!!!#SB3B+1+!!!)#""J`
j!!!!U-%'&S$K"KJj)!!"5!!Fp@!!!!"mG"YiIS!(08'#!$JS(3!!3B)!-+LK"JT
rV1YiJ-%'$$L!!!5T!3B@J5%''$MJ!!!j3!!!5!'p5B""!"5BB3,q9q!'2d'#!""
rBpYi5!'3!%'!33!8IS1MH)!""IJi)3A`ZS(rd(`)!kC1J!!JI!J#TT!!!3!)1!!
!!*3Krl#3!1%!1(b()hL4!3!m13F!"T%K!%"mU5Yi1+-!"T&"!%4mbM0iN!!"!%L
S"!!!U--!!)#$!!*m``FdJ1F!!R`'"c4,rrX4J!%!@$JK!&"m#!1Q6S!!)!!!!!!
!!!!!!!!!!,q"rr"m#!+QI0`cH(cp1hKp(N0iN!!"!!Ji!!!!P#(r3*J"!&Fi`3!
i5!!6U@!!!!#!!3"SI(mEH*!!(!!!L!%!9P3!jrkB(3!!L'%!9dJ!%B9J!!!!Q(i
!!(rMqhL!!3$)1#%!`(`)!kDlJIr`6S!!),r"rrKm#!+QI0icH(cr1hL3!!%!#$J
!!!#8)Ip!X'%!6MKK!$L3!+%!5TJ"!&+3!)%!D,!"!&4)!C+&J%%!&)#"!'i`"2r
rI!!K%*JH!!#!J3"i-!6rrh`!)4#B(`!!J!%!b$JK!-"m#!1QZm(rq%k!!##rBIr
XI!J#TRal'hKmR#0iI,iVH(dG3hKm`c0iI13lH*!!!3!)P#(r)$LK!$K)!")eB!!
!!(aJ"c9!JJ$!J-%!D$J!!!#!S3#q1'%!1*2"!%U!J3#k9,qi2V0K!%j8hVTq8*q
i%*J"!&+6J3"SX!%!9%J"NGQ!33!8I'!(08##!(b!J3"Z9)!&re5&ZRj"JJ!)1+8
!!Ab&mjCm"2(@I!!S88'#!!`ia!!"5!!!#(b')hL!J3"i9)!&re5&ZRj"JJ!)1+8
!!Ab&mjCm"2(@I!!S88'#!!`i"!!"5!!!#(b!)hKm"J)8I"i"eR`!q"!i!2rrI!!
"N!#B(3!!J!%!k$JK!1#lBIrXI!J$TNk!!#!!!!!![X(rf(`)!UBjB!!!I(iEH(b
G)hKm[bYiI4C$H(dj5hKpA&0i1`!!!$Y!!!#3!!%!#*3Kq`#)!38rX-%&*P3!"Mq
$B38iN!$K"5LaB3)XX@%#+V&K!LK"JJ!dU1%&*Rl'XhJj!3)L5rrqMAaJ"c9"JJ!
)5!!&d)J"!L)S!!!!3))!$$KJrpj)!!@mU'%&*Rl&XhL!J38S1-%&+$MK!L3j!3)
M5rrpFAah'hKqi!Fe3))&*)J"!L3S!!!!3))!$$KJriK)!!@!U)%&*Rl$XhJiS38
Q5!!4N@!!!!"mGaYiIZ!(08##"2!i!!!FN!!"!M"rirYiIm6cH$LK!M3i`3)`5!!
-T@!!!!"mB!Fe3B)!&(aJ"c3X!2r13B)!#%J!"5KmB!Fd,!$rcN'#!43iB3)d5!!
1C@!!!!"8B!Br3B)"!$J!!"b#`3)qN!!"!M!iS3)dU)%&*MM"!M!iB!!!5!!-5@!
!!!"mB!Fe3B)!&(aJ"c3X!2r13B)!#%J!"-amB!Fd,!$rcN'#!,L!!3)qI"B!!%#
#!+bS`38QIm2cH)$K"5KrT1YiIqAlH(mTbhJj!!!!5!!-P@!!!!"mGaYiIZ!(08'
#!!K)!!5!+"N!!%'#!#bS`38QIm2cH)$K"5KrT1YiIqAlH(mSbhJj)!!"5!!B1@!
!!!")!!"!Iq2lH$L"!P")!"(eB!!!!(aJ"c9!JJ!SU-%&*Rr$mhL!i38SIk6VH(r
PqhJj!3*315!!!8J!&rPJ!!!!IZ1lH%J!"!`S(!!!3))!3$YJ3!!iB%!!5!',5B"
"!"4mI"Yj3))!*$YJ!J!iB!)!5!',-B""!"4mI"Yj3))!$$KJrj4)!!2-1d!!!Ar
$mhKrT1YiIqAlH$MK!L`i`!!K5!!CN@!!!!"mB!Fe3B)!#%J!!k!S'3!!3B)!))L
j!!"r)mYi1)%#8$LP!!&)!BFYJ%%!&%J!!#LSB3)X1)%#*MLK!M!i`3*35!!GH@!
!!!"mGaYiIZ!(08##!ZLSB38Q1+%#8)#""5K)!!X*B!!!!(ah'hKqi!Fe3))#b)J
"!L-l!!!"+!!!!%'#!$5S`38QIm2cH)$K"5KrT1YiIqAlH$N"!P!j)!!!5!!@k@!
!!!"mGaYiIZ!(08##!SLS`38QIm2cH)$K"5KrT1YiIqAlH$N"!P")!!RGB!!!!(r
$mhKrT1YiIqAlH$M"!L%ii3)J5rrl!Aah'hKqi!Fe3))#4)J"!L%S!!!!3B)!,+K
K"5BiS3*3J)%&+$MK!LSi`!!b5!!BF@!!!!"mGaYiIZ!(08##!K#)!3)J+!!!!%'
#!#bSB38Q1+%#8)#""5Jii3)S1-!!-NJ!'CeJ!!!!I(FEH(lJ"c9!JJ(FL!%#)5J
!!!""JJ"3U'%#,(q&ihLSJ3)UIfEEH%J!'VeJ!!!!I(FEH(lJ"c9!JJ'XU'%#,%J
"L)f!33!8U'%#+NJ"L)'!33!81!!!!,!"!LU`!3)X5!!!'+KK!La)!BKPJ%%!&$J
!!!#`!3)XL!%#)#J!!!""JJ"dIm2cH(qNkhKrjIYi11%#,$M!!#&)!"MpB!!!!(a
h'hKqi!Fe3))"2+KK!LarKH0iU)%#+(pQfhK)!"STB!!!!(ah'hKqi!Fe3))"'+K
K!La)!BIjJ%%!&+KK!LK)!BIYJ%%!&$J!!!#`!3)SX!%#,&G!"Mp"JJ!3Ii2MH%J
"L0@!33!8U-%&*Rr$mhL!i38SIk6VH(rPqhJj!3*315!!!8J!&4&J!!!!1'*ICSJ
$!!!S!!!!3B)!T$V"!TDc`3+3!(l$XhL6S3+5Iq6lH%[rA#9J!!!!1'%#N!!iJ3,
B5!!ET@!!!!"8B!Br3B)!F+LK"5Cq`l0iJ!%&+$L"!P#`S3+3!*!!!3+55rpEl@!
!!!!i!!"!I!N$TMLK!"JiJ3,8J'3!")3%!!L3!'8!"*3&!!K#!2r`J)%!($KK!T!
!J+%!))$"!#5!i3!SJ3%!,)%K!$#"33!d5!!F3@!!!!!iB!!!5!!!G+KK!LamB!F
e3B)!$%J"KYf!33!8U'%#+RaJ"c9"JJ!-5!''bB""!"5SB3)SI'!(08'#!!a)!BD
eJ%%!&&F!"Mp"JJ!BU'%&*MLK!P#!J38S5!'8BB""!"4A3!Br3B)!%(q$ihK)!BH
0J%%!&(lMZhL!!38)1#%&!,V"rpKm#!1Q6S!!)!!!!!!!!!!!!!!!!(`)!UCmDaY
iN!!"!!KmU5YiI-ScH*3Krm!iU`!'N!$K!$L4!3!mI)JMH+J%!!#!k!!#13J!"UK
M!!"m"JFdJ)X!!N[rq@'!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!!!!!!![k(rp(`
)!UCmI4YiI*mMH*!!!3!)P#(rX+!%!,48!`3r3B)!%+!I!,Cm!"K!3)!!Z+"r!,B
l`!!"1!-!!E!I!,Dch`!J1(m!"*1r!$4)!BA&J%%!&,"r!,#S(`#`,!!!!%##!%#
![`#i1(m!")'I!!!iR`#b5!'cIB""!"5)(`!L9!!'pd'#!"b)(`#b+!!!!%##!"#
!I`!dIq6lH%[rrf@SI`#`1pi!!AaJ"c9!JJ!3L"m!XLJ!!!""J[q)I'!(0#`!rp9
"JJ!-,!$XH%##!!`i!!!!X"m!X+"r!,Bi!rrrX"m!YS!"!&Ji)3"3Zk(rp(`)!kC
1J!!J!!!!!!!!!!#rBIrXI!J#TRcq1hPmHaYiI,`VH(cG-hKp(d0iN!!"!!L8)Il
J3B)!N!!i`3!m11%!1%J!#`&J!!!!I'!(08##!(b)!3!i+!!!!8##!'4rJq0iIf6
EH$LK!$T)!!T*B!!!!(aJ"c9!JJ"8U+%!1MJ!!!!i`3#`Nm%!3)"K!$b3!-%!9ML
"!%#`S3"DQ!%!X,!"!2#B!3$bXk%!p,!"!2D6i3$i5rrqBDKK!2")!!!31'$rL%J
!!!JiB2r1J!%"+$JK!5#lBIrXI!J$TNk!!#!!!!!!I!J#TRaT'hL3!!%!#(bR+hK
mb$0iP#(r`$LT!!DS!`!!I)-MH)#*!!*mCKYiI!-(0%[rr`'!!3")1#%!3(`)!kC
1J!!J!!!!!!!!!!!!!!!![m(rq(`)!UBli!!"1m!!!*!!!3!)1!!!!*3Krd#3!)%
!5V"K!%kB!3"51!!!!V2K!&3iB3!iN!!"!'K)!BJKJ%%!&(aJ"c9!JJ!SJ)%!@$`
%ZE)S!%453))!')#"!&`m",UZ+!"*5d##!!Jl`!!"I'!(06[r!!&!JJ!-9m!'2d'
#rkb!!3$)1#%!`,["rrKm#!1Q6S!!)!!!!!!!!!!!!!!!!,q"rr"m#!+QI,iVH(c
I-hKmI"YiI*dMH*!!!3!)1!!!(*3Krc#3!!%!1$LK!$`i`3!i5!!$m@!!!!"mB!F
e3))!E$KK!$a)!!AGB!!!!&4J"Mp"JJ"8Ni%!DMKK!&LcS3"Z5!'MmB""!"5!!3"
d9!!(rQJ%!!&mB!FdQ*m!!#`!rmj!JJ!B1'%!@%J"Sq'!33!81!!!!*JI!!#S!3"
`X"i!!%J!!!JiB2r1J!%!f$JK!0#lJIr`I!J$TNk!!#!!!!!![k(rp(`)!UCm[LY
iI*dMH(cI-hL3!!%!#(aJ'hKr`r0iP#(r3(`%!hJiS3!k1-%!1%[rra&mB!Fe3))
!4+KK!$Si(`!"Nm%!6V"K!&56S3"XN!!"!&b)(`!!+!!!b%'"!!b3!!%!B%J!!!`
i!!$)N!!"!'!iB3!m5!'MCB""!"5!!3$)1#%!`,ZKrr4m#!1Q6S!!)*2Krram#!+
QI0mcH*!!!3!)P#(r8$M"!$K)!!EjB!!!!+J"!*D`(`!!J!%!Z$JK!,"m#!1QJq(
rr%k!!#!!!!!![f(rl(`)!UCmfc0iI(dEH(bm+hL3!!%!#*3KrU!i`3!k5rrrSAa
q'hKr`!Fe3))"'+J"!$SX!!!!3B)"#(q$ihKrT1Yi1+%!1%J!"`PJ!!!!I(iEH(r
!"c9!JJ$XU'%!1$L"!$a,rreYI(iEH(r!"c9!JJ$)5!&q6B""!"4mI4Yi1'!!!%J
"K2f!33!8U'%!1$LK!$`iJ!!#1-!!!8J"HA@!33!8I(`EH$KJ!!&)!B69J%%!&(q
!"c3X!2rr3B)!G$aJ4N1SJ3!k1'009%J"IL@!33!8I(mEH8'#!$K)!B#GJ%%!&#`
$!!"!J3!JJ(m!!(pNfhL)S`!!1+8!!8J"IGf!33!85!!!%$[!l'a)!!!)1m$XE(q
MkhK)!AhaJ%%!&(q$ihK)!B50J%%!&%J!!"Jl`1aX5!!!%$[!l'a)!!!)1m$XE(r
$mhL!!3&S1#%"B(`)!kDlBIrX6S!!)!!!!!#rJIr`I!J#TRcI-hPmI"YiI*dMH(b
q+hL3!!%!#*3Krd""JJ#B1!!!!*JI!!"r`r0iIi6MH$LK!$Si`3!i5rrmeAaJ"c9
!JJ"3L!%!1#J!!!"!JJ"XU+%!1MLI!!%i!!$rNm%!6MKK!$b`S3"8Nk%!E*!!J3"
FN!!"!'")!D%CJ%%!&(aJ"c9!JJ!iJ!%!C*JI!!")!!!XIi2MH(qNkhKraI0iIqE
lH%[rrIemB!Fe3B)!%$KJl'a)!!!)1'$rcS!"!-Ji)3$!Zi(rm(`)!kC1J!!J[k(
rp(`)!UCmh60iI2ilH(dI3hL3!!%!#*3KrV!i`3!i5rrr%AaJ"c9!JJ!NL!%!1#J
!!!""JJ!BIk2VH(r%mhKrjIYi1-%!1%[rr,Q!!3&B1#%"8,ZKrr4m#!1Q6S!!)*2
Krram#!+QI0mcH*!!!3!)P#(r3*!!B3"+1'%!1,#"!%k3!+%!@)!'!!#3!!%!A%J
"KI@!33!8I'!(08##!!b!!3"JN!!I!!#!!3$)1#%!`)2Krram#!1Q6S!!)!!!!!!
!!!!!I!J#TT!!!3!)1!!!!*3Krd#`B3"11'%!1*!!S3"+Q!%!8T!!J3"S5!'#rB"
"!"5!!3$)1#%!`(`)!kC1J!!J!!!!!(`)!UD3!!%!#*3Krd#`B3"11'%!1*!!J3"
SN!#K!%U``3"3N!$K!&b4!3"8N5%!@%J"Rpf!33!8J!%!b$JK!-"m#!1Q6S!!)!!
!!!!!!!!!!!!!!(`)!UD3!!%!#*3Krh#3!'%!5MKK!$L`J3"1N!#K!&K)!CTGJ%%
!&)!"!*Ji)3#3!(`)!kC1J!!J!!!!!!!!!!!!!!!!I!J#TT!!!3!)P#(rF*!!B3"
+1'%!1,#"!%k3!+%!@%J"QM@!33!8J!%!Q$JK!*!!I!J$TNk!!#!!!!!!!!!!!!!
!!!#6iIrmI!J#TRbI)hL3!!%!#*3Krh#3!'%!@$KK!$K)!CS0J%%!&(aJ"c9!JJ!
-U!%!6V!I!!#!!3#B1#%!N!#$iIrmI!J$TNk!!#!!!!!!!!!!!+J$!!!X!!!$3B!
!$)"M!"41J!!J1'!!!%k!!#!!!!!!J!-!!P3$Mrj1J!!J!!!!!)!$!!*8!jIq6S!
!)!!!!!#!!`!#9!1RrNk!!#!!!!!!I!J#TT!!!3!)P#(r`%[rrk98B`IqJ!%!5$J
K!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!&4M"hii!!!$I!-!8(`!!$48!piq6S!!)!!
!!!!!!!!![k(rp(`)!UCmRL0jI(dEH(br+hL3!!%!#*3Krl""JJ#)+"d!!%'#!)#
)IJ!!Iq!(0(`$!!"!J3"%5!!!0$JIrrmiIJ!"I!3(0$LJrrp)!Ce9J%%!&(aJ"c9
"JJ!NI'!(0#`!!!&"JJ!B1rrrrhrJ"c9!J[r-5!!!#(ar'hKm(ZK!Qrd!!%'#!#"
)!!!8Iq-(0(`H'+ilrrrrI"dCVRrJ"c9!J[rXJ!%!@$JK!&#lSIrdI!J$TNk!!#!
!!!!!!!!!!*2Krram#!+QI,mVHC!!!3!)P#(q`%'#!&`S!`!!X*m!&N##!"3i!!!
!N!!I!"+`(`!F5!!!+)LM!!!iJ3!i1+8!!8J"H1Q!33!81!%!1*!!(`!51!$rrl!
I!"arirYi5!&rAB""!"3i!!!!N!!I!"*)!!!)1'$rcS!"!8Ji)3&!Jq(rr(`)!kC
1J!!J!!!!!!!!!!#6iIrmI!J#TRbr+hQ3!!%!#*3KrX""JJ"JX*m!&MJ!!!!S!`!
!N!!I!"K!JJ!3N!!I!"+`(`!F5!!!+)LM!!!iJ3!i1+8!!8J"H&@!33!81!%!1*!
!(`!51!$rrl!I!"arirYi5!'"qB""!"3i!!!!N!!I!"*)!!!)1'$rcS!"!8Ji)3&
!Jq(rr(`)!kC1J!!J!!!!!*2Krram#!+Q+!8!!*!!!3!)I0mcH*3Krk""JJ!3L!8
!!#J!!!"!JJ!J1!!!!*J"!$JiS3!i1!$rrj!![`!5X"m!(%J!!"#3!,m!%MJ!!!#
`(`!FX(m!&RrMqhL3!*m!-%J"HT@!33!81!!!!*!!(`!5J!%!D$JK!'"m#!1QJq(
rr%k!!##6iIrmI!J#TRbr+hL3!!%!#*3Krd!iS3!i5rrq5AaJ"c9!JJ!-U!%!6V!
I!!#!!3$)1#%!`)2Krram#!1Q6S!!)(`)!UD3!!%!#*3Krd!iS3!i5rrq%AaJ"c9
!JJ!NU)%!AP5!"M&"JJ!-1'$re%J!!""8J!3K3B)!#$KJrp+!!3$)1#%!`(`)!kC
1J!!J!!!!!,r"rrKm#!+QI0icH(cr1hL3!!%!#*3Kre!i`3!i5rrqeAaJ"c9!JJ!
`L!%!9P3!jrkB(`!!L"m!!#J!!!""JJ!3J!%!D*!!(J!!5!!!$)!"!*b3!"i!!)!
"!,Ji)3#`Zm(rq(`)!kC1J!!J!!!!!!!!!!"m#!+QI'JEH*!!!3!)I+FVH(b')hL
8)Ir!1+J!"UKM!!#!L!!#5rrrEB!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!(`)!UB
S"3!!N!!"!!L8)Ip33B)!+$J!rrq`B3"11'%!1*!!S3"+N!#"!'L`!3"85!&j"B"
"!"4)!!!)1'$rcS!"!,Ji)3#`I!J$TNk!!#!!!!!!I!J#TLJ$!!#3!!%!#$J!!!#
8)Ir!Q!3!!%'#!,L)S`!!9+B'2d'#!+4m`!FdI!-!VLJ!!$T!JJ!)1-Errhc!"c4
m!`#ZI-FcH#J!!$T"JJ"d5!!!#$M'rrpm`!Fe3B)!&(c!"c4m!`#Z+!!!1N##rqK
m`!Fe3))!&&5J"Mjm!`#Z+!!!1N'#!$4maJFdI1!(0(bQ!&"mS!GdI'BD&*J%!!!
iB`!"1)3!!8J"G9'!33!81'!!!%J!!#!iB2VU5!!!'$KJqZT)!!!31'$kkNJ!!!J
iB2VUJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!,qKrr4m#!+QI(dEH(bH)hL
3!!%!#*3Krl!i(J!#N!!H!&3i!!!"1(i!3V!H!&k6[J"b5!&h`B""!"5`IJ!!U"i
!!#`!!!"!JJ"mL"i!B(qrkhK8!!Eh3B)!()"q!(*ra20iI(mEH%[rrjdi!!!!N!!
H!&5S(J!!,!!!!%##!%L6rJ"b1!!!!$Kq!%+B(J"F5!&haB""!"5`IJ!!U"i!!#`
!rp0!JJ!J1(i!3NJ"P1Q!33!81(i!3NJ"Gjf!33!8X(i!!+Kq!!"mB!Fe3B,r8(a
J"c3X!2r93))!$$J!!!#`(J!!J!%!@$JK!&#lSIrdI!J$TNk!!#!!!!!!!!!!!!!
!!!#6iIrmI!J#TRbr+hL3!!%!#*3Kr[#`B3%U1-%",$MK!$L3!)%",+KK!5T,rrc
TI'!(08##!%L)!3!i+!!!!%'#!$LSJ3%UIq2lH$LK!5T,rr`eI'!(08##!#5S!3%
U1)%!2)"K!5b`!3#85rrqQDKK!$a)!!!)1'$rL)!"!4Ji)3%3Jq(rr(`)!kC1J!!
J!!!!!,qKrr4m#!+QI(dEH(bH)hKm[bYiN!!"!!L8)Iq`5rrr9AaJ"c9!JJ"-Ik2
VH(r%mhKrjIYi5!'$hB""!"4mB!Fd,!$rdd##!#arSqYiIm6cH(rPqhK)!AC9J%%
!&(qMkhKra20iIqAlH%J"JkQ!33!8J!%!@$JK!&#lSIrdI!J$TNk!!#!!!!!!!!!
!!!!!!!#6iIrmI!J#TLJ&!!#3!!%!#(bI)hL8)Im`3B)!%)J&!!!S!!!!3))!)$J
"!$`iJ!!!N!!"!'ii!2rrQ)%!2,!"!(K)!!!31!!!!*!!S3"ZX!%!H,"K!()iB3"
FNq%!M%J"GA@!33!8I'!(08##!&JiB3!i5!&jQB""!"5!J3!iJ!%!U(`%!%"!JJ!
-1)3!!C!!J3!iJ'%!EMJ"!$b3!)%!U(`$!%"!JJ!3J!%!`*!!!3#-5!!!#*2K!)`
iB3"F5!&j1B""!"5!!3$B1#%!d)2Krram#!1Q6S!!)!!!!!!!!!!!!!!!!,pKrqa
m#!+QI,mVHAap'hKmRL0iI0`cH(cl1hL3!!%!#*3Krb""JJ!3L"m!!#J!!!"!JJ!
J1!%!2$KJ!!#3!!%!EMJ!rrqBB3!mX!%!H%J!!"!i!!!!Nq%!EV!"!(LcS3"b1'%
!A*2"!)a)!A5*J%%!&(aJ"c9!JJ#3!&H!"Mq$J3$!3B)!&+!"!)4m!0YiX!%!K%J
!!"#J!3#%I!$BH,!"!)5!B3"Z1!%!2(`$!%"!JJ!3J!%!`*!!!3#-5!!!#*2"!)`
iB3"F5!&i6B""!"4mB!Fe3))!0#`F!!&"JJ!XIq2lH(qNkhJiS3!i5rrjQAaJ"c9
!JJ!8U'%!1(q%ihJiS!!!5rrq)B!"!1Ji)3$JZf(rl(`)!kC1J!!J!!!!!!!!!!"
m#!+Q1+-!"T!!!3!)1-!!!6MJ3!#8)Ir!U!-!!)#$!!*m!`Fd5rrq[B!"!%Ji)3"
!I!J$TNk!!#!!!!!!!!!!!(`)!UBiS`!'N!!"!!Ji`!!"11!%!*3Krm#S!`!!J)-
!!R`$"c4,rrjpJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!I!J#TT!!!3!)P#(qN!#
3!'%"L$KK!BL3!)%"M$L"!)L3!+%"N!#3!-%"P*!!i3'BN3%"R*%K!D#433'N5!&
arB""!"3iB3(31)%!1%J"FHf!33!81'%!L$LK!0JiJ!3!1-!!!$MJ!!!j!!!!5!&
ajB""!"4mB!Fe3))!'$KK!$JiS3$B1)!%!%J"FH'!33!8J!%"H$JK!A"m#!1Q6S!
!)!!!!!!!!!!![Z(rh(`)!UCmZ5YjI(FEH(bB)hKmfM0iI2XlH(dF3hKp28YiN!!
"!!L8)Ih`XZ%"ET-"!BK"JJ!3L"N!!#J!!!"!JJ!J1!%!U$KJ!!#3!!%"DMJ!rrq
BB3#SX!%"G%J!!"!i!!!!Nb%"DV!"!A3iB3&B5!&b3B""!"4mIaYiIq!(08##!@#
)!3&f+"`!!,0"!@j8(ZIqNf%"L%'#!"b)(!!!+!!!!%##!"!i!!!!N!!"!@T)!!!
)Ni%"DU!"!B!iB3&B9!!',,!"!B")!AB*J%%!&(ar'hKri!Fe3))!4&HJ"Mp"JJ!
mL!%"GP3!"rp"JJ!`1!!!!*J"!A)iB3&B5!'6&B""!"4mIaYiIq!(08'#!""A`!B
r3B)!#$[J!!"ri!Fe3))!`(lMZhKr"-0iIbA,H$M"!4")!A@&J%%!&(p$dhKrC0Y
iIiAMH$M"!-K)!A9YJ%%!&$J!!!Km#31Q11%!&$M"!3b!CJ!%K!B!#*!!C`!%P!F
!#%)!rr#!CJ!%1!!!#(`*!kBiS3"FN!"R!!3iJ3$%S!B!#,!(!!L!C!!%K!3!#*!
!C3!%P!8!#%)!rr#!"!!%N!!&!!5J"!!)X!8!#)"K!"L!J3!FJ+%!))$"!#5!i3!
SJ3%!,)%K!$#"33!d5rrpKArMqhL!!3)B1#%#%(`)!kDkiIrF6S!!)!!!!!!!!!!
![d(rk(`)!UCmHKYiI,XVH$KJ!"amh$0iI2mlH*!!!3!)1!!!!*3Kra#3!)%!L(p
%dhJiS3!mN!"K!$KrBpYi1-%!1*0K!'U3!!%!G*J"!(+c33"Z5rra-@!!!!"mI4Y
iIk!(08##!$3iB3!m5rrbq94J"Mp"JJ!NXi%!FMKK!&K)!C(&J%%!&+J"!("mI4Y
iX"m!!%J!!,"rS!Fe3B)!%(qJ"c3X!2r13))!R(qH"c4A`!Hp3B)!&(pMfhKr400
i5rrea8J!!!JiB!!!I'!(0Aap'hK!JJ"`Ii!(0#`!!!*"JJ!-,!!!!d##!"!i!!!
%Q!%!FdJ!!"aA`2!#9m-2rR`$!&"8!"!qI!!D&*J"!(-iB3"B5!'45B""!"4mI4Y
iIk!(0#`!rmj!JJ!81'%!@%J"N8@!33!8I(dEH+J"!(#`(`!!Ik2VH)!"!2Ji)3$
`I!J$TVY"rqK1J!!J!!!!!!!!!!#r3IrSI!J#TRak'hKmZbYi1'!!((cF-hKmrcY
iN!!"!!Ji!!!!P#(r%*!!J3#)Id66H$LK!$b3!'%!1(pMfhJi`3!iNf%!DT!!!3"
dQ!%!FV0"!'j,rqr4B!!!!(ap'hKrS!Fe3))!4$KK!$a,rr'C9'!'2d'#!$3iB3!
m5rraL94J"Mp"JJ#dXi%!FMKK!&K)!C!!RB""!"5S!3"`I(dEH,!I!!")!!#8Ik!
(08'#!""rS!Fd,!$rcN##!)"rRJFd9m!([8'#!"4rBpYiId66H%[rp&9)!!!)1'!
!!(aJ"c9mI4Yi3))!9(q!"c3X!!!#3B)!$#`!!!0!JJ!31!!!"*J"!(0)!!!F9m$
`!PI$$rjm!`"39!!32R`!'K5B!3"c1'%!@%J"N!!KJ%%!&+J"!("mI4YiX"m!!(q
MkhL!!3$i1#%!m(`)!kDl3IrS6S!!)!!!!!#rSIrdI!J#TRbp+hPmhM0iN!!"!!L
8)Im33B)!$#`H!!"!JJ!-1'$rcNJ!!6b`B3#J1'%!L,#"!&")!Br4J%%!&(aJ"c9
"JJ!)5!!"()!"!+3iB3!iN!!"!&4)!Br*J%%!&(aJ"c9"JJ!)5!!!r$KJ!!%i!!!
!X'%!Y$KK!)L3!!%!YNJ"MlQ!33!8I(mEH(rJ"c9"JJ!)5!!!d$KJ!!%i!!!!X'%
!C$KK!$L3!!%!CNJ"Mif!33!8I'3EH(b!"c9"JJ!)5!!!T$J!!##6S3#S,"i#!,!
"!,4"J!!B9m!&rd'#!""A`!!XN!!"!+a)!!!)Nm%!V$J!!##6S3"BX!%!C%J!!#`
iB3#)5!&bEB""!"5!!3#`I(mEH$KK!$L3!!%!A%J"E,@!33!8I'3EH(rJ"c9!JJ!
-I)!(08'#rmamJ!Fe3B)!$(b$)hK)!!!J1!$rfArM"c4m!!FdI!!B8#!!!!"m!!%
3Iq-!1)!"!2Ji)3$`Zk(rp(`)!kC1J!!J!!!!!!!!!!#r`IriI!J#TRbH)hKm[bY
iN!!"!!Ji!!!!P#(rJ,"K!&!iB3!iN!$"!%U`!3"1X!%!9%J"FDQ!33!8I'!(08#
#!"5S!3"XX"i!!)!"!(+3!"m!!)!"!)Ji)3#!Zm(rq(`)!kC1J!!J!!!!!!!!!!!
!!!!!I!J#TMLN!!+3!!%!#$M%!!D8)Ir!5rrrIB!"!%Ji)3"!I!J$TNk!!#!!!!!
!!!!!!,qKrr4m#!+QI(dEH(bH)hJiI3!'1q!!!*!!!3!)1)!!)j3Kr`",rd"pB!!
!!(aJ"c9"JJ$!1!!!(*!!!3!i1+%!2$M"!$LSR3!!1'!!!%[rl'9J!!!!I'!(08#
#!*LS!3!m,!!!!d'!!!b!!3"35!!!#$J!!!"8!!De3B)!H+JG!!!iI3!'1)%!AV!
"!&JiS!!rJ"d!!T!!!3"D5!&SBB""!"3iB3"B1)%!S%J"DKQ!33!8I'!(08##!$a
ra[0i1'%!S$L!!!!iS!!!11!!!$N!!!")!@S*J%%!&(aJ"c9!JJ!8S"i!!#J!!"p
!J3!)1q!!!ArMqhL!!3%)1#%"!(`)!kDlSIrd6S!!)!!!!!!!!!!![k(rp(`)!UC
mI4Yi1m!!!*!!!3!)P#(qJ*!!J3'F1)%")*!!S3'JN!$"!D53!1%"U*%"!Db4)3'
`N8%"Y%J"DAQ!33!8I'!(08##!,`li3'HS)%"R(rPqhJiB3%J1-!!!$MJ!!")!BK
CJ%%!&(aJ"c3X!2r33))!K+LG!!!i!!!!1'%!1,#"!$JiJ3$3J,d!!T!!S3!kQ!%
!2NJ"D4f!33!8I'!(08##!'#JJ3'FIqAlH$KK!0!ii3#!1-!!!%J"Kk'!33!8I'!
(08##!$`iB3#!5!')"B""!"5JJ3'FIqAlH$KK!5!i`!!!11!!!%J"Kp'!33!8I'!
(0#`!!!"!JJ!)1m!!!Ar$mhL!!3')1#%"J(`)!kDlSIrd6S!!)!!!!!!!!!!!Nq(
rr(`)!UBmS#!!N!!"!!Ji"3!4I!3!!*3Krm"mIaYi3B)!&%#!!%3X"!!#3B)!0%J
!!$K)!!&pB!!!!(aJ"c9"JJ!S1!$rrj!!(`%@1)$cP)"r!!")!B#eJ%%!&%J!!!`
i!!!"Q"m")B!"!%Ji)3"!Jq(rr(`)!kC1J!!J!!!!!*2Krram#!+Q1q*`K*!!!3!
)P#(rX)JI!!!S!!!!3))!L$aJEh3iBf&Z1)%!1%J"B5@!33!8I'!(08##!#3iJR"
m1'!!!8J"J#f!33!8I'-(0(aJ!$48!0iqQ"m!!)JI!!!S!!!!3))!,(aQ'hJiB!2
f1)!$mcLJ!!4,rc#*B!!!!$KJ!!%iJ!!%5rqUQ@!!!!#!BK0%5!'!$B""!"3iJR#
!N!"N!!#!!3"B1#%!8)2Krram#!1Q6S!!)!!!!!!!!!!![m(rq(`)!UBliR#%1m*
`J*!!!3!)P#(r`)JI!!!S!!!!3B)!1$KLF(b!B`!!5!'"pB""!"5!IJ!!1!!!!*J
I!!!S!`!!3B)!&%J"JI'!33!81!!!!*!!(J!!J!%!5$JK!%#l`IriI!J$TNk!!#!
!!!!![m(rq(`)!UCmIKYi1q!!!$KJ!"L3!!%!#*3Krl!iJ3!i5!&SLB""!"48B!B
r3B)!1+!"!$JS!!!$3))!,)!"!$SiB!!!9!!'2LJ!!#j!JJ!8S!%!4P3!"Hp!J3!
)1'!!!Aar"c4ri!Fe3))!()'H!!`S$!!!3B)!%%J"P@Q!33!8I(mEH(rMqhL!!3"
B1#%!8(`)!kDl`Iri6S!!)!!!!!#rJIr`I!J#TRbG)hKmI"YiI,iVH(cI-hJiJ!%
LN!!"!!L8)Iq`5!&qaB""!"3mB!!"1'1!!%J"Cqf!33!8N!"m!!5!(!!%+!!!!%#
#!!`i!2q8N!!F!4D!(!%@,!!!!%##!$!iBK9m5!&qRB""!"3iSR"m10`"&ML!!!#
!j3!!1+!!!%J"ITQ!33!8N!"m!!#!(!%@,!!!!%##!*L!I!!!5!&qPB""!"5!I!!
!5!&qSB""!"3iJR#!IiAMH)"m!!#!K!!!5!&qSB""!"3mB'pd1'0fFML"!$K)!9k
YJ%%!&(aJ"c9!JJ!NJ!%!1(`!KR!X!!%J3)%!&)"m!!!iJ!!"5!&qIB""!"5!I!!
!1)!!!$LJ!!")!Ak"J%%!&*!!I!%@J"`"&R`!!$48!0iqQ"`"(RqMkhJiR!!81+!
"!%J"Bd'!33!8Xp`"&*2m!!L!!3"B1#%!8(`)!kDlJIr`6S!!)!!!!!#6iIrmI!J
#TRar'hL3!!%!#*3Krm#!B`!!+!-!!%'#!!a)!AkjJ%%!&)"r!!3S!`!!3B)!$%J
"CVf!33!8J!%!5$JK!%#$iIrmI!J$TNk!!##r`IriI!J#TRaq'hL3!!%!#*3Krm"
)!9mpJ%%!&$[M!i4r`r0i5rrpMAaJ"c9"JJ!-1!$rrj!!(J%@J"i"&L`!!!"!JJ!
F5!&I$B""!"4m!rK!3)%!$$J!TKL3!"i"&S!H!4BX!!!!3))!%)JH!5%S!!!!3B,
rX)!"!%Ji)3"!Zm(rq(`)!kC1J!!J!!!!!!!!!!#rJIr`I(iEH(`)!UBiJR"m1,i
"&M[J!!!iB2rpN!!"!!L8)Ij3J-3!!$L!!!")!AdpJ%%!&)!H!4CmI"Yi,!!!!%#
#!4`iRJ!81+%!F%J"I6@!33!8N!"q!4D!(J%@,!!!!%##!2!lS3&`S*i"&&IJ&ET
m[3!Z1'%!1%J"I5'!33!81'%!5$L!!#K)!A`KJ%%!&$KK!$Ji!!!3N!"K!&#3!!%
!6)"q!!")!Ad0J%%!&)"q!!!iJ3")1+!!!%J"I4'!33!8N!"q!4D!(J%@,!$cTN#
#!!`i!!!!N!!H!4D!(J%@,!!!!%##!!ar`r0i5rrqLB"q!!")!A`"J%%!&)JH!5%
S!!!!3B)!')"q!!!iJ!!!5!&meB""!"53!(i"&S!H!4BX!!!!3B)!-#`!rrp"JJ!
S1rm!!DKq!4aAi!BqI!-!!%#"!"48!"!kI"d!,LJ!!!"!J[mBIi2MH%J"I+@!33!
8J!%"Z$JK!E#lJIr`I!J$TNk!!#"m#!+QN!!"!!L8)Ir!L!-"(LJ!!!""JJ!3J'-
!!%J"I5f!33!8J!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!*2Krram#!+QI(m
EH*!!!3!)1-!!!*3Krm#!B`!!5!&m4B""!"3X!`!!3)%!%$J!!!#3!"m"&NJ!!!L
3!(m"&S!"!%Ji)3"!Jq(rr(`)!kC1J!!JL-8!!(`$-!"0J3!J,!-!!8#!!!K1J!!
J,!3!rdf"!#!X"!!"3)!!(%k!!#")!!!8I18D&(`()+iiB`!"Q!F!!(`$-!""J2r
XI!3`8*J&!!"1J!!J!!!!!!!!!!!!!!!!L--!!)J%!!"8a3BqI!8!3%##!$Jii!!
!5!!!')bM!!'-"!!"I!8!3%##!#!ij`!"918'2P6!"Mjm"3"!3B$ri$KJ!!&1J!!
J1'!!!%k!!##rSIrdI!J#TRap'hL3!!%!#*3Krl#)"!!!9"i'2d'#!$5,r3!!I"r
b&#`!!2p"J3!N1'3!!6LI!!&raI0iI*dL&%J"AdQ!33!8I"rb&*JG!!#!!3"B1#%
!8,ZKrr4m#!1Q6S!!)!!!!!!!!!!!!!!!!,pKrqam#!+QI(XEH(bF)hKm[5YiI0i
cH*!!!3!)P#(qS%J"CX'!33!8I(mEH%J"CXf!33!81!$rrj!!(3!!1)!!!(aJ"c@
3!*i!!%##!63X'`!!3B)"))#I!!"rJq0iIfAEH%J"AVQ!33!8J(m!!)"M!!!m!lH
X+!"88%##!2JmB!d+1!-0#T!!!3!iIq2lH$LK!$JiJ!!!1-!!"$MJ!!!j!!!!5!&
K!B""!"4mC"Yj3)%!'$J%!!53!"i!!(rMqhK)!@B0J%%!&$L#0b3iB3!m5rmea@!
!!!#)`3!mIq2lH$LK!$diJ!!!11!!!$N!!!")!@#eJ%%!&#`$!!"!J3"iL!%!2$M
J!!&m!`)8N!!"!$KrR!)85!!!2)MF!!"m`!Gd,!!!-%'!!$JX!!!j3B%!-)"K!$K
8j3Bq1)%!2$J$!!&ma#QZ1j`!!C!!!3!i11F!!B!"!$Km!0J!3)(r`$J(rrqB!3!
mIk6VH$KK!$a)!@fjJ%%!&(rMqhK)!@F&J%%!&)!"!@Ji)3&JZf(rl(`)!kC1J!!
J[d(rk(`)!UCmHaYiI*`MH*!!!3!)P#(pS)J$!4q!B`!)+!!!!(aq'hK"JJ!85!&
IrB""!"53!'%!1%J!!&KmB`Fd1)%!1%J"DBf!33!8J'%!1%J"C3'!33!8I(iEH8'
#!$5!'`!)1)!!!6LJ!!"m!`Fd5!&THB""!"5!'`!)1)%!1)#q!!"m!`Fd5!&XfB"
"!"3S(J!!3B)!%)!"!$JX!!!!3))!$$ZJ!!&)!!+m2'!0#MJ$$3U3!!%!2(r$mhJ
iS3!m1)!!!$M!!!3ii!!!13!!!%J"Ad'!33!8I'3EHC!!J3!i3)%!'(r$mhJiK!!
"5!&N6B""!"4)!!"-2'!+#MJ$#JU3!!%!2(r$mhJiS3!m1)!!!$M!!!)ii!!!13!
!!%J"A[@!33!8I'3EHC!!J3!i3)%!&(r$mhJiK!!"5!&N!B""!"3iJMFX1'%"3$Z
J!!&,rc1eB!!!!$[K!8')`3&!Im2cH(rPqhJiJ!!!11!!!$N!!!")!9kKJ%%!&(a
P'hQ3!+%!1%#"!H5)!3&!1'%"3$L#0cKm"3)8N!!"!$K,rc0TB!!!!)#"!$Kr`r0
iL-%"3(rPqhJii!!!13!!!%J"APQ!33!8,!-!!*!!B3!i3)%"R)LK!8!iJ!!"1!!
!#TL"!8"mJbS8I*SMH*!!J3!iIm2cH)M"!8"rjIYiQ!%"36MJ!!!j!!!!5!&H%B"
"!"3i!!!0N!"K!$L)`3&!Im2cH*J"!8&r400iIqAlH$MJ!!!j!!!!5!&GjB""!"5
!!3!i,!$rrd##!!b3!'%!1%J!!"Km!`!!3)!!%#`$!!"!J3!)N!"K!$L!!3!iI,S
!8#`&!2q3!+%!1%'"!2L!(J!!Iq6lH(aJdK4)!9X0J%%!&)!"!$JiB3"!1)%"3*J
"!8",rc*YB!!!!$KK!8!iJ!![5rmbM@!!!!"8C!Br3B)!R$L%rrmS(!!!Q)%!3%'
#!)a8K!Bq1+%"3$KJ!!&,rrU"L)%"3&5!"MiS!!!"3)%!C$KK!8"m!`#Z+!!!,d#
#!$3i"2rrQ!%"3(q%ihK,rrX"L)%"3%J!!"a8J!Bq1'%"3(`$!+iS!!![3B)!%$L
%rrp8J!Br3),rj*L"!8"rJq0i1)%"3%[r-FPJ!!!!5!!!$$J!!!#B(!!!1'%!3$L
E!"3iS!%!5!&D-B""!"3lS!!!Ik!(08'#!!JlS2l5L"X"(bJ!!!"!JJ!B+"i!!%'
#!""r`r0i5!&MBB""!"4rSqYiJ!%#D$JK!Q"m#!1QZd(rk%k!!#!!!!!!!!!!!,q
"rr"m#!+QI*dMH(am'hKm[LYiI0mcH(qMkhL3!!%!#*3Krl")!9T&J%%!&)!G!!"
rJq0iIqAlH(b!mK4)!9QGJ%%!&(qMkhK)!9hjJ%%!&)!"!&Ji)3"3Zi(rm(`)!kC
1J!!J!!!!!!!!!!!!!!!![`(ri(`)!UCmH"Yi1m!!!$Z!!!!lB!!!1d!!!6XJ!!#
3!!%!#$J!rrq8)Ip`N!!"!%#$S`!)J'-!!%J"G5'!33!82+!!!B"i!!#!Q!!%1+@
!!$M"!$K)!A8GJ%%!&(aN'hQ3!)%!4%#"!P"rB!Fe3))#5&G!"Mp"JJ'!1!!!#jJ
"!%JiJ3"*1+!!$)"i!!4)!9MGJ%%!&$J!!#SiJMG!Q!%!6MKK!%LB!3"35rrikAa
J"c9!JJ"B1!!!$$L#0dbB!3")1'%!5%[rq-emB!Fe3B)!$$XJ!!&)!!!d1+%!5$K
J!!%iJ!!*5rri66KK!%JiJ3"!5!&SJB""!"5$J3"!,"`!!%##!!JlJ2r9J'%!4$L
K!%#!Q!!%1-%!2$Y!!!",rrNeL"J"))2K!$`S!!!!3B)!(&FJ"Mp!JJ!8J!%!4(`
I!&#3!!%!4%J!!!`i!!!!N!!"!$b)'!%I+!!!!%'#!%b!J3"%Ik2VH%J"Al@!33!
85!&IhB""!"4mB!Fe3B)!$$YJrrp)!!")J(J!"(qNkhL!!3!m1+!!!)$"!%4mB`)
85rrpp8J!!#L!H!!)1)%!4)#i!!5!!3!mI'-(0(bP!K4)!A20J%%!&(al'hKA)!B
r3))"P)JB!5#$`3"%+!!!!%##!)L!!3"!,!!!!%#"!(arhr"35!!!G)JB!4mS!!!
!3B)!4(qMkhKmRL)85!&I%B""!"4)!9mjJ%%!&(aJ"c9"JJ!-1f$rrdJ!!$L!H!!
%Ik6VH)$"!%4raI0i5rrp@8J!!##!'!!)1)%!4)#i!!4m!`Fd5!&c1B""!"4mHaY
iJ!%!4(rH!K5"Q!!3+!`!!%'#!"L!B3"%Im6cH)#K!%")!BHeJ%%!&(m$`hK,rr(
*I'!(08'#!!`i!2rrN!!B!4D!!3"!,!!!!%#"!&4m(J!!3)!!Y%J!!%KrB!Fe3))
!$)1"!%4)!!!-Ih`(0*1B!4BX(21Q3B)!$#`FmkG!JJ!)1i!!!(m$`hK,rr&YI'!
(08'#!!`i!2rrN!!B!4BX(21U3))!8)"i!!")!A+GJ%%!&(am'hJX(!#!3))!')"
i!!")!A+GJ%%!&(am'hK)!!!i,"`!%%##!"b!H!!!1)!!!%J"FT@!33!8I(`EH%J
!!"JX(!!!3))!%)!B!4BX!!!!3B,mj&FJ"Mp"JJ!JI`2$H$L!!!",rrKaI(`(08#
#!!JlJ!%ZNjJ"&S!B!4BX!!!!3))!#*1B!4D!H!!!5!&`SB""!"5!!3#B1#%!N!#
l!IrJI!J$TNk!!#!!!!!!!!!!!!!!!!#6iIrmI!J#TMKL9Z%li!!!N!!"!!L8)Iq
`L!-!!#J!!!""JJ!m1'%!1%J"@X'!33!8S!%!1#J!rrp!JJ!SS!%!1LJ!rrp!JJ!
FS!%!2#J!rrp!JJ!31q!!!8J!!!Jli!!"Iq2lH)!"!&Ji)3"3I!J$TS2Krra1J!!
J!!!!!!!!!!#6iIrmI!J#TS#L%f"mIaYiN!!"!!L!JK0FP#(rS)$&!!#JT3!%J'3
!!+!%!!53!-%!5,#K!%b3!'%!3,!"!%5SI`!!1!-!"E!I!!",rrmj9'!'2d'#!'b
SR`!%Iq2lH$J%rrq`(`!%U*m!"MJ%rrq`(`!'5!&E!B""!"5SI`!#U*m!"$J$!!0
m!`Fd5!&JFB""!"5SI`!'U*m!"%J"B`'!33!8U*m!!+Kr!!Bi"!!$I!3(0%J"BZQ
!33!85!!"r$KK!&")!9QTJ%%!&$KK!%")!9QeJ%%!&+NI!!)iB3!iU*m!!$M)!!'
Sr`!%1+3!!6J)!!*ma!FdI+8(0(`'"c4)!9U0J%%!&$KK!$K)!9SKJ%%!&+Mr!!!
iB3!iU*m!!MLR!!'Sh`!'1)3!!6J(!!*mK!FdI+8(0(`("c4)!9T4J%%!&$KK!$K
)!9RPJ%%!&+MI!!BiB3!iU*m!!$LQrrqSr`!%1!3!!AbN"c4m"3Fd5!&D(B""!"3
iB3!i5!&CXB""!"5Sr`!%1'%!1+LI!!)i"rrrU0m!"ML%!!&mK!FdI!8(0%J"@HQ
!33!81'%!1%J"@Af!33!81'%!5%J"@-Q!33!8U*m!!MKK!$LSh`!%113!!DLr!!!
i"[rrI1B(0(`("c4)!9QTJ%%!&$KK!$K)!9NpJ%%!&+Lr!!!iB3!iU0m!"MJ&!!'
SR`!#1-Errhc'"c4m"`Fd5!&CGB""!"3iB3!i5!&C#B""!"5Sh`!'1'%!1+Lr!!#
SR`!%11ErrMLP!!%ia[rr1!6rrhcN"c4mT3FdI-B(0(`("c4)!9NaJ%%!&$KK!$K
)!9M&J%%!&+NI!!3iB3!iU,m!"MMSrrkSR`!#1-ArrcJ)rrpmj3FdI-B(0(`("c4
)!9MeJ%%!&$KK!$K)!9L*J%%!&$KK!&")!9I9J%%!&)!"!'Ji)3"JJq(rr(`)!kC
1J!!J!!!!!!!!!!"m#!+QI+FVH*!!!3!)P#(r`$LK!$Ji`3!m5!&11B""!"5!!3"
)1#%!3(`)!kC1J!!JI!J#TT!!!3!)P#(r`$LK!$K,rrr"1'%!1%[rr1Q!!3")1#%
!3(`)!kC1J!!J!!!!!*2Krram#!+QJ+)6@(ar'hL3!!%!#)##%e58)IqJJ-8!!+#
P!!5!C!!!S!3!"*!!`3")X+%!6*!!B3"!X!%!4%[rr"98B!Br3B)!&(rMqhK)!9I
eJ%%!&%J!!33iB3"35!&@hB""!"3iB3")5!&@kB""!"5SR`!#1'%!1+MI!!3ij!!
"U,m!!$J'rrpmjJFdI!F(0%J"9mQ!33!81'%!1%J"9ef!33!8U,m!!$KK!$LSh`!
'1!8!!DLI!!)ia[rrI-B(0(`("c4)!9H9J%%!&$KK!$K)!9FTJ%%!&$KK!%")!9C
eJ%%!&+MI!!BiB3!iU*m!!$LQrrqSr`!%1!3!!AbN"c4m"3Fd5!&A9B""!"3iB3!
i5!&@kB""!"5Sr`!%1'%!1+LI!!)i"rrrU0m!"ML%!!&mK!FdI!8(0%J"9b'!33!
81'%!1%J"9V@!33!81'%!8%J"9J'!33!8J!%!D$JK!'#$iIrmI!J$TNk!!#!!!!!
!I!J#TT!!!3!)P#(r`$LK!$K,rriK1'%!1%[rrRQ!!3")1#%!3(`)!kC1J!!J!!!
!!,r"rrKm#!+QI(iEH$LL9Z&mRb0iJ-)68*!!!3!)J')66*3Krj!!1)*`L)J&!!#
""J!!S1B!"#J!!!#!``!!S+-!")"N!!#J"!!%N3%!8,$K!&53!-%!5,#K!%b3!'%
!3,!"!%4"JJ*N1'%!@%J"96'!33!8Im2cH(rNqhJiS3"J5rrpKDMK!'3iB3!iU)%
!BMLRrrmi"!!"I+8(0(`'"c4)!9BGJ%%!&$KK!$K)!9@aJ%%!&+LK!'!iB3!iU-%
!CMJ&!!%iK[rrI)3(0(`("c4)!9AYJ%%!&$KK!$K)!9@"J%%!&$KK!&")!960J%%
!&+L"!')iB3!iU-%!C$MN!!'SS3"J1!ErrhcQ"c4m"`Fd5!&9VB""!"3iB3!i5!&
93B""!"5SS3"J1'%!1+M"!'Bi"3!"U)%!BMM'rrpmaJFdI!F(0%J"9AQ!33!81'%
!1%J"93f!33!81'%!5%J"9&Q!33!8U-%!CMKK!$LSJ3"J1+ErrkMK!'3i"!!"I+3
(0(`&"c4)!98jJ%%!&$KK!$K)!960J%%!&+MK!'3iB3!iU)%!BMJ(rrqS`3"Q1)3
!!Ab%"c4m"3Fd5!&9"B""!"3iB3!i5!&8QB""!"3iB3"J1)!!!MLJ!!*)!93pJ%%
!&+L"!')iB3!iU+%!B$J%!!'Si3"NI!B(0%J"9-@!33!81'%!1%J"9&Q!33!8U+%
!B$KK!$LSJ3"L1!8!!DM"!'Cm"`Fd5!&8QB""!"3iB3!i5!&8,B""!"5S`3"Q1'%
!1+LK!'!i"[rrU1%!C(`%"c4)!94YJ%%!&$KK!$K)!93"J%%!&+MK!'3iB3!iU)%
!BMJ(rrqS`3"QI!8(0%J"9%'!33!81'%!1%J"8p@!33!81'%!3%J"8b'!33!81'%
!B$L!rrmiS2rr5!&6EB""!"3iB3"J5!&6mB""!"3iB3"B5!&5pB""!"5!!3"i1#%
!F,["rrKm#!1Q6S!!)!!!!!!!!!!![d(rk(`)!UCmHKYiJ')1A*!!!3!)P#(rS%J
"5Q'!33!81)*@iAal'hL)"!!!+!!!!%'#!0JmB%4*1'086$L!!qG)!8e4J%%!&(a
r'hKr3p0i5!&,UB""!"4mIKYiIphcH$Z!!!&)!!#)Id26H(q%ihJiS3!i1-%!2$M
K!%")!8MeJ%%!&+J"!$K8!!Cq,!!!%%##!&JiB3"!1)$rr6LJrre)!9+4J%%!&(p
$dhKrj2Yi1+!!!%J"A5f!33!81ld!!Ap$dhKrT1Yi1+%!3%[r(A9J!!!!Id26H(q
NkhKrCGYi5rmFd@!!!!!lR!!"Ii-(0(r!"c4m!`!!3)(rF(rMqhK)!9@4J%%!&)!
"!'Ji)3"JZd(rk(`)!kC1J!!J!!!!!*2Krram#!+QN!!"!!L8)Im`N!"K!1Jli3#
#2'"dFT!!J3$X1)0cD$KJJ!#3!+%!m$LJ!!'3!-%!p$M"!)#3!1%!q(rRqhL4!3$
mN5%"!*&"!34)!8fPJ%%!&(aJ"c9!JJ#B1!!!!*J"!)BiB3$S1)%!J%J"Hif!33!
8I'!(0#`!rp"!JJ"d1!!!#(`*!kBii3!d1-%!j)"Q!!5%"J!)N!"R!!58"`!)3J$
rm)!'!!3iS3!qS'B!#*!!"`!%U!%!J,"R!!L!R`!!X!%!1*!!J3!kU'%!1%J"6Vf
!33!81'%!1%J"H8'!33!81'%!k$L"!)")!AX4J%%!&)!"!0Ji)3$3Jq(rr(`)!kC
1J!!J!!!!!!!!!!!!!!!![k(rp(`)!UD3!!%!#$J!!!#8)Ip`UB%!m)&K!2+3!'%
!U$KK!+L3!)%!V$L"!$L3!+%!X*!!`3#dN!$K!,L4!3#mN5%!`*&"!-5aJ3!iN@%
!1TJ"!$j)!AUCJ%%!&(ap'hKrS!Fe3))!5$["!+ili3$fIm2cH(rNqhJiS!!!1-!
!!8J"8ff!33!89'!'2d##!##SB3$`ImAcH)#"!2*rj[Yi5!&ZIB""!"4mI4YiIk2
VH)!"!*Ji)3#3!(`)!kDlSIrd6S!!),qKrr4m#!+QI(dEH(bH)hL3!!%!#*3Krj!
!5!&'qB""!"3iJ3!i5!&)9B""!"3m`(4d21"84AqMkhKra20i1+%!1$M'H(3ijeK
85!&,mB""!"4mIaYiIq!(08##!"KrSqYiIm6cH$LK!$K)!9UjJ%%!&(rJ"c4m!!!
d9!$CIR`$"c5!!3"i1#%!F(`)!kDlSIrd6S!!)!!!!!!!!!!!!!!!!,r"rrKm#!+
QI(iEH$KL0eamRb0i1+!"!*!!!3!)P#(q8$L"!+4)!8R&J%%!&$KK!+5c`3"11!!
!!*!!B3"+1'%!1,!"!&5!(`!!N!!"!'K)!8b&J%%!&(aJ"c9!JJ!-J!%!D*!!(`!
!I'!(0(`!!$48!piqJ!%"Z$JK!E"m#!1QZm(rq%k!!#!!!!!!!!!!!!!!!!#rSIr
dI!J#TRbH)hKmI4YiN!!"!!L8)Iq`Jq3!!%[rre98B!Br3B)!&)#H!!"rSqYi5rr
qS94M"Mj8B!Br3))!#*2q!!#!!3"B1#%!8,ZKrr4m#!1Q6S!!)!!!!!!!!!!![i(
rm(`)!UCmI"Yi1')hA(bG)hJiR!!'1m!!!6LJ!%#3!!%!#*3Kr`")!8M4J%%!&$K
LAfD)!`!!+!!!!%'#!+`mB'&cIiEMH$L$GA!ir!!#1'#!!cLJ!!&)!8SjJ%%!&(a
r'hKri!Fe3))!'+Km!!!iR!!#5rrr,94J"Mp!JJ&NIq!(06[!!!"!JJ!BU(`!!)#
F!!*,rrhGI'!(08##!(!mB'&cIiEMH$L$GA!ir!!#1'#!"6LJ!!&)!8RCJ%%!&(a
r'hKri!Fe3))!'+Km!!#!R!!#5rrpRAaJ"c9!JJ!`1q$rdNJ!!#JmB'&cIiEMH$L
$GA!ir!!#1'#!!$LJ!!&)!8Q4J%%!&(ar'hKri!Fe3))!d)"m!!)i(!!'1)!!!*!
!B3"S1'%!1*!!J3"%N!!"!%US(!!!X!%!6V#"!&5BJ3"55!&+SB""!"3i!!!)I!N
$TRar'hJiS3#J1*crr)"N!!5%"!!)N!"P!!58"3!)3J$rm)"N!!4ri!FeN!"P!!5
J"!!)X!8!#%'#!#bSI!!!1,`!"S#F!!)ih!!#5!&1)B""!"4mIaYiIq!(08##!$K
)!!!8Iq!(08##!#b!!3"SN!!F!!*ri!Fe3))!($KK!+3iJ!(r1+!!!$M!!!",rZ!
*B!!!!#JG!!""JJ!)Qpd!!(rMqhL!!3%)1#%"!(`)!kDlJIr`6S!!)!!!!!!!!!!
!!!!!!,p"rqKm#!+QI(`EH*!!!3!)P#(pi%J"4Vf!33!8I(iEH$KK!,3iJ3#S1k$
rrd[rrF9mHKYiId!(08##!V3li3#k1')hD(rNqhJl32r91+!!3%J"4TQ!33!8U'%
!Y(rPqhL!J3#f1-!!!8J"3EQ!33!8I(dEH(qJ"c3X!2rr3B)#F$aJFR-iBh*M1)"
KU%J"4R@!33!8I(XEH8'#!P4)!8EGJ%%!&(pMfhK)!9QTJ%%!&(pMfhK)!8M9J%%
!&(aJ'hL!H`!!I!3$H$LL&B!ii3#X13%!X$NK!2`i`!!"5!&+MB""!"4mB!Fe3))
!&)'"!,"rJq0i5!&f[B""!"3iB3#X5!&+JB""!"5!(!0d,!!!!%'#!"#!I!0i5!&
2-B""!"5!(!0m,!!!!%'#!"#!I!1!5!&2'B""!"5!(!1%,!!!!%'#!"#!I!1)5!&
2!B""!"5!(!HH,!!!!%'#!"#!I!HL5!&1kB""!"3i!!!!N!!F!hKrBpYiN!!F!i#
3!"`$L*!!(!HL5!&1JB""!"5)(!-X+!!!!%'#!9KrSqYi5!&-+B""!"5SB3#dIqA
lH)#"!,BlS2rr5!&)DB""!"3iB3#d5!&blB""!"4mB!Fe3B)!D$J!!!Km#31Q1+%
!&$L"!,#!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%N!!&!!5J"!!)X!8!#)"K!"L
!J3!FJ+%!))$"!#5!i3!SJ3%!,)%K!$#"33!d5rriFAak'hKr3!Fe3))!`$J!!!K
m#31Q11%!&$MF!bU!CJ!%K!B!#*!!C`!%P!F!#%)!rr#!CJ!%1!!!#(`*!kBiS3"
FN!"R!!3iJ3#`S!B!#,!(!!L!C!!%K!3!#*!!C3!%P!8!#%)!rr#!"!!%N!!&!!5
J"!!)X!8!#)"K!"L!J3!FJ+%!))$"!#5!i3!SJ3%!,)%K!$#"33!d5rrikAak'hK
r3!Fe3B)!&$Km!bj)!A(GJ%%!&%J!!"Ji!!!!Q"`$+jJF!ba,rreBUe`$M(qJ"c3
X!2rr3B)!%(qMkhK)!8V&J%%!&(r$mhK)!834J%%!&(p$dhL!!3)S1#%#)(`)!kD
l3IrS6S!!)!!!!!!!!!!![d(rk(`)!UCmHKYiN!!"!!L8)Ih35!&$MB""!"3i!!!
!X!%!K(ap'hJiB3$-1)%!B$Z!rrmlB!!"5rrkLAaJ"c9!JJ,XId26H$L"!'3iS3"
`1-%"&%J"A1@!33!81'%"&$L"!'K)!90GJ%%!&$[K!0)iBMGSIq6lH$LJ!%")!8-
pJ%%!&+KK!-arjIYiJ)%!cMM!!!&)!6jGJ%%!&(am'hKrJ!Fd,!$rrd##!#")!80
9J%%!&(aJ"c3X!2r93))#F$YJ!!")!!"81!!!!$aJGQ@3!!%!E$KMFR-iJ!!"5!&
#pB""!"3S!`!!3B)!%)"M!!#!!`!!N!!"!'arJq0i5!&*PB""!"5!B3"S1i$rri!
"!'am!`"!3)%#'+L"!-aAB!BrJ'%!cV#"!)53!'%!KN'#!"a)!6m4J%%!&$L"!)T
)!8"YJ%%!&%J!!"KrirYi1)%!LMLJ!%")!8*PJ%%!&$["!)USB3#%2-"@5B#"!)B
mi'96ImAcH$M'Fc8ijf9X5!&$lB""!"4mB!Fe3))!2$KK!)3iJ!!!1+!"rd[qfQP
J!!!!U'%!K(r&mhL!J3#'5!&8*B""!"4)!8*0J%%!&(aJ"c9"JJ!31!!!!,!"!)4
)!!&J1'%!K$LK!')iJ!!$5!&%6B""!"4mB!Fe3))"4(p$dhK)!8VjJ%%!&*!!B3"
X1)%!E+KK!'+!ZJ!!5!&GdB""!"4mHKYiU'%!BNJ"4('!33!8Id!(08##!3LSB3#
%ImAcH)#"!)Bi`3"d5!&4+B""!"4mHKYiId!(08##!#LJ!3"mImAcH+KK!)3i`3"
dB!!%!)#"!)D`!3"m5!&4%B""!"4AB!Br3B)!U+KK!-arjIYiJ)%!cNJ"4'@!33!
81'%!c%J"EZQ!33!8I'!(08'#!'3i!!!)I!N$TMLK!"3iJ3$)J'3!")3%!!L3!'8
!"*3&!!K#!2r`J!3!"*!!"3!%S!3!#,!&!!L!B3!BJ)%!()#K!##!`3!NJ1%!+)%
"!#b")3!`J8%!0%[rp'emB!Fe3))!-+KK!)4raI0iJ)%!KRrQqhK)!@4jJ%%!&(a
k'hKr3!Fe3))!$$J!!!#`!3#%Ii!(0#`!rrp"JJ!3Ii2MH%J"4e@!33!8U!%!K#`
!!!""JJ!31'%!K%J"EL@!33!8Ik2VH%J"3)Q!33!8J!%#1$JK!M#l3IrSI!J$TNk
!!#!!!!!![f(rl(`)!UCmIaYiN!!"!!L8)Ij35!&!$B""!"3i!!!"N!!I!!4mI4Y
i1'%!4$L"!$JlJ2rr5rrh$Aal'hKrB!Fe3))!i$["!%SiBMGSIm6cH$YJrp8iS!"
!5!%riB""!"5SB3"%ImAcH)#"!%Bi`!!"5!%l!B""!"4mI"YiIi!(0#`!rrp"JJ#
F2'"bFcKMFQ-iJ''S5!%r[B""!"4mIKYj3B)!J%J"3#@!33!8Im2cH%J"8['!33!
8Im2cH%J"3Kf!33!8I'!EH)"q!!"m"!0i1+)9J$MK!$`j!3"!15%!M$M!!!&)!82
9J%%!&(aJ"c9!JJ!8JB%!3(rMqhK)!A!&J%%!&$KK!$a)!82*J%%!&(r$mhJlB!!
!5!&)1B""!"4rJ!Fd,!$rrd'#!""rJq0i5!&&iB""!"4rSqYi5!%r,B""!"4rBpY
iJ!%"Z$JK!E"m#!1QZf(rl%k!!#!!!!!!18!!!$NJ!!")!!#XL!3!!$L%!!%i`MH
%I!!(G(d'!+iS#!!J3))!$$KJ!!"1J!!J,!S!!%##!!`i!!!!Q!-!!#$U!!-X"`!
!3)%!&&8!"Mjm!$J`9!B'2NJ!!#"!J!!B93B'2R`(!0"m`!B`9!B'2NJ!!!Kp"N0
iL!-!!#`+!!0m!$0iQ!-!!%#!!!`j5J!&5!!!)$9+rrdiB`!"3B)!&&8'"MiJ#J!
)I-!!-*J$!!!j+3!"I!NS!%'!re3iB!!"6S!!)!!!!!!!!!!!!!!!!*2Krram#!+
Q1)*aQ*2"rrKmIKYi1q*aP*!!!3!)P#(r`)!%!!!X!!!!3))!+%J!4"9J!!!!JCm
!!#J-!!""JJ!85!&ZNB""!"3i!!!!N!!I!!"r`r0i5!!!,@!!!!#!!3")1#%!3)2
Krram#!1QJm(rq%k!!#!!!!!!!!!!!!!!!!#6iIrmI!J#TM[LF*!!Nm(rq$[#FC!
!N!!"!!L8)Ir!5!!!))"L&B3iBrrr9'!31T!!BK@%ICm!,NJ"EKf!33!8J!)9K#`
!!!""JIrFJCi!!#J-!!""JJ!85!&YrB""!"3i!!!!N!!H!!")!@h0J%%!&)!"!%J
i)3"!Jq(rr(`)!kD$`Iri6S!!)!!!!!!!!!!!!!!!!*2Krram#!+Q1+$rrC2"rrK
mIKYiN!!"!!Ji!2rlP#(r`)$%!!"ma5Ji9-F!0T!!T!!!I-3k&)#Q!!"mS!!iN!!
'!!#3!1Err)!$!"48!`!f1q2rr(rqqK5!I`!!+!-!!%'#!%L!!`!)N!!%!!L!C!!
)N!#$!!b!(`!!N!!%!!b!I`!!N!#$!!L3!*m!!(rNqhL!I`!!5!!!CC!!I`!!Iq6
lH)"r!!")!!$e5!!!%*!!R`!!N!#%!!L3!)3!$)"r!!#!RJ!3J!-!!&3!!$Cm"!"
!3)!!#*!!(J!3J!%!5$JK!%#$iIrmI!J$TS2"rrK1J!!J!!!!!!!!!!!!!!!!J!-
!!&3!"hY-JJ!JJ-2rr&6!"le-JJ!JI1BB8)!(!!"8!!FqN!!(!!#!!`!!J+F!!&3
!!$Cm"J)89!!!0RbJ!hL3!!F!!)!(!!"8!!Hp3))!')!$!!"8!!!fI+B#&$J&rra
mT`%ZJ+3!!(`&'%"!JJ!-J!8!$*!!"!!!J!-!#)#$!!b3!!3!#)#M!!amicYiJ)8
!#*!!T!!-6S!!)!!!!!!!!!!!J+-!!&5R!$Cp!cS8J-J!!&6!"le-JJ!J9+!(2T!
!!`!!9-!!0Rc(!K5!S`!!9-!!0RbJ!hL3!!-!!)!$!!"8!!Hp3))!$$J'rram``%
ZJ!-!!&3!"le!JJ!BI+-`,MJ!rrYmS!!iI!-a,NJ!!""m!c!ZB!!!"(`$-5k!C!!
!I!0!3%##!!b!!`!-N!!%!!#!"!!!I!"!3%##!!`i!!!!N!!%!!#!#!!)J'J!$*!
!!`!)J!J!$)"S!!L3!!-!$%k!!#!!!!!!J+3!"(`&)%"!JJ!)1+!!!)!$!!"m!#"
!3))!#*!!S`!!+!8!!%'#!"5!"!!!N!!&!!#!C3!!N!#M!!3i!!!!N!!%!!4mSbY
iN!!%!!"1J!!J!!!!!*2Krram#!+Q1)6rq*2"rrKmIKYiN!!"!!L8)Ir!J!3!"&3
I!$arirYi5rrp1B"r!"JiS!!!9'!([8##!##!(`!89'3!0P3$!$Bi!rrJI!3!3%#
#!!JiS!!",!8!!%'#!"ar`r0iIq6lH%[rrdPrirYi5!!8i@!!!!#!!3")1#%!3)2
Krram#!1QJm(rq%k!!#"m#!+Q1)!!!*!!!3!)1+!!0*3Krm")!",YB!!!!)!"!%J
i)3"!I!J$TNk!!#!!!!!!Nq(rr(`)!UBliR'FN!!"!!L8)Ir!L!)9L#J!!!"!JJ!
8Iq2lH%[rrkdi!!!"Q!)9L(rMqhL!!3")1#%!3(`)!kD$iIrm6S!!)!!!!!!!!!!
!I!J#TS$#%hL3!!%!#$MJ!!#8)Ir!5!!!$$M'!!3ij`!"J!B!!(`&!%""JIr`136
rr)#%rra8j4Ji1+8!")!%!!amSbS8+!!!!%##!(5!a3!%I!BJ3%'#!'L!"3!!I!!
J3%##!"b!"J!!N!!&!!5!a3!!J!B!!*!!"3!!5!!!4)!%!!5!a!!!N!!'!!5!"!!
!J-3!"*!!"J!!J!8!"*!!"!!%J-3!")!'!!#3!!3!!)$%!!#3!)B!")$%!!53!)B
!!*!!K3!%J!3!$*!!#!!%N33!$)$%!"!d"[rrN!!%!""!JJ"`J!8!"(`!)%"!JJ!
-J!3!"*!!"3!%J!8!!(`!)%"!JJ!-J!3!!*!!"3!!J!3!")$%!!#3!!B!")!%!!#
!a!!%N!!'!!#!"3!%I!!J3%##!!`i!!!!N!!&!!5!"3!!I!!J3%##!!`i!!!!N!!
&!!",rrfaJ!%!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!(`)!UBS"!!!N!!"!!L
8)Ir!3B)!1)#Nrra8S!Ir3))!$)#P!!K)!!!3J!6rq&3&!$BiTIri+!8!6%'"!!a
,rrjP5!!!#%[rr8f!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!#6iIrmI!J#TRar'hL
3!!%!#*3Krm",rrhGIq6lH%[rri@!!3")1#%!3)2Krram#!1Q6S!!)!!!!!!!!!!
!!!!!!*2Krram#!+Q1q)iK*!!!3!)P#(r`%J!!'LJ(`!%9!$AId'#!""rirYi5!!
(1@!!!!"rirYiJrm!8)J$!"!S!!!!3B)!%%[rrheJ!!!!5!!!-+!$!!3iJ!!$8)!
emLJI!!#`!`!%3B)!')JI!"!S!!!!3B)!$$J!!!#3!!-!8#JI!!"!J[qBJ!%!5$J
K!%#$iIrmI!J$TNk!!#!!!!!!!!!!!*2Krram#!+Q1q!!!*2"rrJl`ML%N!!"!!L
8)Ir!5!!!,+!H!!48!0Gr3B)!((r$mhK)!!GKB!!!!#`$!!""JJ!)1q$rri2H!&!
S(J!!3),re(rMqhL!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#!!!!!!J!3!!$L!!!S
S!!!!I!N$TMJ!!!e0JJ!JL+-!!#J&!!e!JJ!-Q)-!!%J!!"!S"3!+3))!#*J$!!!
iB`!"3J$rh%k!!#!!!!!!!!!!!!!!!!#!!`!JN!!$!#L!!`!NN!!$!#b!S`!FJ)-
!-)!$!#amT#!iI!3!8*!!!`!XJ!-!(*!!!`!i6S!!)!!!!!!!!!!!!!!!!*2Krra
m#!+QI*mMH*2"rrKmIKYiN!!"!!L8)Ir!J'-!))!H!#Km!`"43B)!D*!!(J!XL"i
!"93!lrp!JJ!3J(i!)$LH!#a,rrmYJ(i!!$Lq!#b!RJ!JJ0i!6)'H!%4)!@B9J%%
!&#JI!!""JJ!-J"i!,*!!(`!!,!-!!%'#!!K)!!!JJ(i!()!H!#am!`)8N!!H!"a
r`r0i5rrr,6KJ!!#!!3")1#%!3)2Krram#!1QJm(rq%k!!#!!!!!!!!!!!!!!!!#
6iIrmI!J#TM[J!!#3!!%!#*3Krm#!!K@-,!!!!8##!!`iB!!"5!!!8#`!!!"!JJ"
%5!!2S@!!!!!iB!!!5rTbG@!!!!"mB!Fe3B)!%$J!!!+3!!)9M%J!!"b!JJj`1!!
!!6KLFC!!1q!!!C!!!K@-N!#$!!"rirYiJ!%!5$JK!%#$iIrmI!J$TNk!!#!!!!!
!!!!!!*2Krram#!+QI,mVH*2"rrKmRL0iN!!"!!L8)Ir!5rrr95`$!!"!JJ!-1'!
!!8J!!$JiBML%1'-!9%J!"3PJ!!!!J*m!!(r$mhK,qR)*B!!!!*!!I`!!J"m!!#!
!rrpm!!!d9!2CIS!"!%Ji)3"!Jq(rr(`)!kD$`Iri6S!!)!!!!!#6iIrmI!J#TRb
r+hL6`IriI*iMH*!!!3!)P#(r`%[rrY8X!`!!3))!$$KJ!!&)!!!SJ*m!!(r$mhK
,qR'*B!!!!*!!I`!!J"m!!#!!rrpm!!!d9!2CIS!"!%Ji)3"!Jq(rr(`)!kD$`Ir
i6S!!)!!!!!!iB!!!6S!!)!!!!!!!!!!!I!J#TT!!!3!)P#(r`%J!!#9J!!!!J!%
!5$JK!%"m#!1Q6S!!)!!!!!!!!!!!!!!!!,mKrq4m#!+QI*NMH(cD-hKmHaYiI,`
VH(p$dhJiJ!!!N!!"!!L8)IqJ5!!h5@!!!!!X!`!!3))!&(p$dhJiJ2rr5!!h-@!
!!!"rZH(A3B)!()JD!!dS!!!!3))!%+!D!!48!0Gr3))!$$KJ!!")!!+d,!!!!N#
#!!a)!!fCB!!!!)JD!!8li!!"1'!!!&3!lrp"JJ!8L"S!"&3!rliS!!!#3))!#$K
J!!%X!`!!3))!')JD!!48!2qq+!!!!8'#!!Jli!!!L"S!#&3!hhp!JJ"FL(S!"&4
Jlle8B1pq3B)!6&3!"hY"JJ!SId26H$L!!!!iS!!#5!!'r@!!!!!X!`!!3B)!$$K
J!!")!!)BL"S!#$KJ!!&3B#idQ"S!#(p$dhK,rr`KB!!!!)JD!!K8!0pq+!!!!8'
#!"`i!!!"Q"S!$6J!!!!iB!!!N!!D!#a)!!(8+"d!!(pqfhJlJ!!!3B)",)#D!#L
!HJ!JI!3B3%##!!`X(`!!3B)"&)!D!#4mBb"3I!-!8*!!'J!XJ"S!,$YJ!!"m!1K
!N!!"!$K!J3!)Nk%!1)JD!!48!2qq+!!!!8##!$5!S3!i+!8!!%'#!#Kr`r0i1)!
!#NJ!#`eJ!!!!I(XEH8'#!"!i'`!"I"i!8*!!!3!iJ+%!1#J&!!""JJ"!J(S!+(r
%mhK)!!H0B!!!!)"K!$L!'J!SIpiD&(`!'K53!"S!+(qF'K4rSqK3J'%!1)!D!#a
m!`"3N!!D!#b!'J!X+!!!!%'#!"JS'`!!3))!%)JD!!48!2qr3))!0(p$dhJiJ!!
!5rrl-@!!!!!X!`!!3B)!($J!!!'B'J!01!!!!$ZJ!!#3!"S!,%J!!"3S(3!!3B)
!$#`I!!"!J[m%+"d!!%'#!(!X(`!!3))!D)0k!#"m(ZS8JrS!*(p$dhJiJ3!iNpS
!)*1k!#53!"S!+%[rqXPJ!!!!,!-!!%'#!"3i!!!"Q"S!$6J!!!#3!"S!,)!"!$K
r3p0iNhS!)(qF!K56qJ!N5rrk9@!!!!!i!!!!N!!D!#b)'J!%9!$r[LJ!!!*"JJ!
-1!!!!*!!'J!X1"Rrrh`F!K4mB-Z@J!%!D$JK!'#l)IrNI!J$TNk!!#!!!!!!!!!
!!!!!!!#6iIrmI!J#TT2"rrL6SIrdI(dEHC!!!3!)P#(rX%##!!`iB2rr5!!!L+!
G!!48!0Gr3))!$$KJ!!")!!"d5!!!P@!!!!"mIKYiJ(d!!)'G!%K)!@"KJ%%!&+!
G!!3iJ!!!8)!emV!G!!4mIaYiN!#G!!#)(3!)9!$Rrd'#!"#!I3!J5rrhi@!!!!!
X(J!!1'!!!%##!!`X(`!!3B)!#$KJ!!&m!`$3I!!EH(`$rR#!!3"B1#%!8)2Krrb
$`IriI!J$TS1Krr41J!!J!!!!!!!!!!#6iIrmI!J#TRar'hQ6`IriN!!"!!L8)Ir
!3))!%%[rq&9J!!!!5!!"#)JI!!dS!!!!3))!%+!I!!48!0Gr3))!$$KJrrp)!!$
SL"m!"&3!lhiS!!!"3))!$$KJ!!")!!$3L(m!#&4JhhiS!!!$3B!!%$J!!!*3!bi
dQ(m!#)JI!!K8!0pq+!!!!N##!!`i!!!!N!!I!#b)I`!)9'$IILJ!!!&"JJ!B1!!
!!&!$,M5BI`!)1'!!!%J!!(LJ(`!%9!$AIL`!!!&"JJ!-1m!!!%J!!"4rirYi5!!
!r@!!!!"mIKYiIq2lH$L!!!",rrL*B!!!!#`$!!""JJ!F1!!!!CJI!!di!!!!1'$
rrj!!(`!X5!!!))JI!!JiJ!!!8)!Z0*JI!!JiB!!!Npm!(*!!R`!XJ!%!5$JK!%#
$iIrmI!J$TS2"rrK1J!!J!!!!!!!!!!!!!!!!S!-!"&3!ehiS!!!"3B)!$#J!!!*
!JJ!3L!-!$5J!!!""JJ!B1)*de$J!!#JiB2rrN!!%!!"1J!!JL!-!#&3&hhp!JJ!
-J'-!(%k!!##!J`!J+!8!!i!$!#L!B`!iI!3!8(aM!K40J!!J1!ArrRaJ'&"1J!!
J!!!!!!!!!!!!!!!!I!J#TT!!!3!)P#(r`%[rrh@!!3")1#%!3(`)!kC1J!!JNq(
rr(`)!UBliR68Nm(rq(bq+hL6SIrdI(dEH*!!!3!)P#(rX*!!J3"XS!-!"&3!ehi
S!!!"3))!%)JG!!dS!!!!3B)!&$J!!#L3!"m!!$KJrrp)!!&mL"d!#&3!hhiS!!!
"3))!1$L!!!",rrFCB!!!!#`$!!""JJ!N1!!!!CJG!!diB!!!1!!!+*!!I3!X1'$
rrj!!(`!!5!!"1#`H!!&!JJ!FIk2VH$[!!!",rrkjJ!%!E(`!'K53!!%!E#`H!!*
"JJ#3!)JG!!48!1pq+!!!!d'#!)#)(3!)9!$IILJ!!!*"JJ!-+!!!!d##!'L!B3"
XJ"d!((`$!%"!J!!3J"d!1(`$!%"!J!!BL"d!#$KJ!!"3B#idQ"d!#%J!!%L!R3!
JI!!B8$KJ!!*m"!)8N!!G!#L!J3"XJ"d!((`%!&#3!"d!,)JG!!K3B#idQ"d!#%J
!!"5)(3!)1'!!!&"J,M5B(3!)L"d!#&3!hhp!JJ"NJCd!2#J-!!""JJ"%J(d!!(r
&mhL!h3"-1)%!E%J"A'f!33!8,!-!!%'#!#3i!!!"Q"d!$6KJ!!!i!!!SN!"p!#`
iB2rrN!!I!!")!!!F1'!!!*Kp!!b!!3"XN!!G!"b3!(d!,$KJ!!#!!3"B1#%!8)2
Krrb$`IriI!J$TS1Krr41J!!J!!!!!!!!!!"m#!+QN!!"!!L8)Ir!5rrq"B!"!%J
i)3"!I!J$TNk!!##!!K@3!#J$!!#3!!(rq%##!!`iB!!!6S!!)&5!"$iS!!#!3)!
!$$LJ!!&)!!!B+!!)!%#!!!`iS!!#5!!!#$LJ!!-X"3!#I--U&%'#!#a!J!!3,!8
!!8#!!$")!!!m,!8!"%#!!$48J!DqB!!!J*`'rrp8K0@q9)!'[Q!!!)#F"[rr9)6
9[MKKrrKm!bLZI)!$H*J'rrpmSbYi6S!!)!!!!!"m#!+QN!!"!!L8)Ir!5rrr9B!
"!%Ji)3"!I!J$TNk!!##rBIrXI!J#TRal'hPm[#Yi1q!!!*!!!3!)P#(rS%'#!!`
S"!!!3))!$$KJ!!")!!"NI*dMH%J!!&#JR3!!+!3!!%##!"!i!!!!I"[jVNJ!!%!
iB3!i1ld!!N[rriPmIKYiI"rb&(`!i%""J3!NImAcH(alqK3iJ3!i5!!Xk@!!!!"
rrr)8I"rJ3%#"rl"rirYiJ!%!D$JK!'#lBIrXI!J$TNk!!#!!!!!!!!!!!!!!!!!
S"3!J3)!!T#J&!!"0JJ!J112rrcM%rrmj!!!!6)%!)#J&!!JiKIri3)%!B$J%!!G
8!1Mq+!3!!(`*!kC!J3"-L!B!!6N)!!LB"`!"L!B!!TJ(!!+)"J!$Q!F!!iJ'!!5
B"`!%L!B!"CJ(!!@)"J!'Q!F!"SJ'!!HB"`!(M!B!#*`(!!K#!2qmI!JS8(`)+%"
m#31Q6)!!))`'!!'F"`!"3J$rq%k!!#"8B!GrI'BEH%'#!#3iK2rrM!3!!6LPrrq
B"J!!1-B!!96!"hp!J[rX1)3!!95!"hp"JJ#d9+R`[LJ*!!!j!!!!1-Err$L%rra
!J3#3!#J*!!JikIri3)%!C$J(!!G8!1Mq+!F!!(`*!kC!J3"3J!3!"$LPrq!j#!!
)N!!'!!5!"!!)N!!'!!L!"!!-N!!'!!b!"!!3N!!'!"#!"!!8N!!'!"5!"!!BN!!
'!"L!"!!FN!!'!"b%"!!JP!B!)%)!rlKm#%K3I!K)3(`*!kC!J!!8K!3!"$LPrrb
8"J!%3J$rp$L%!!3iaJ!%5!!!X&5Tk2iS#3!!13!!!$M'rrJiK2ri3)%!N!!S#3!
)11Rrq%#"!'3i"`!(9!$SrLJ(!!"m#31Q3)%!8-J%!!JiTIr!13J!#0J'!!M)"!!
3f!B!%-J%!"MB"J!Bb!3!)0J'!#$)"!!Sf!B!+-J%!$$B"J!`b!3!10J'!$M-"!"
!h!B!3%)!rlKm#%K3I!K)3(`*!kC!J!!8c!3!#$LPrrMF"J!)3J$rp$L%!!JiaJ!
)+!8!!$N!!!!iK2rr1-Errdb"!#!S"3!)11Arq%#"!'!i"`!(9!$SrLJ(!!"m#31
Q3)%!6)J%!!%j#!!)Q!B!!BJ%!!+B"J!#L!3!!jJ'!!1)"!!%Q!B!")J%!!@B"J!
&L!3!"TJ'!!D)"!!(Q!B!"i`%!!LF"J!)3J$r[(`)+&"m##K!I!N$TNb!!##-"!!
"R!B!!8)!rrK1J!!J!!!!!!!!!!!!!!!!Nq(rr(`)!UCmIaYiN!!"!!L8)Ir!5!!
!h@!!!!"rirYiJ!%!5$JK!%"m#!1QJq(rr%k!!#!!!!!!!!!!!!!!!!"8K!Bq1'2
rrcLP!!&)!!!3M!-!!A`!)%"0JJ!JB!!!!$5Prrp!J[rX1'!!!%k!!#"8K!BqI'-
U&$LP!!&)!!!3M!2rrh`!)%"0JJ!JB!!!!$5Prrp!J[rX1'!!!%k!!#!i`rrr116
rrcL&!!&)!!!`M'B!!B`(!!&m!`"!3B)!*)L'!!!iB!!"L!F!!(`%!%"-J!!J1'$
rrdk!!#"J!!!!0)6rrd##rm`iB!!!6S!!)#J&!#"8K!BqI)FMH$M$rrp"J!#BI-!
`q&3$"lp"JJ!BI+-S8'!!!!!dBrrrR1B!!8##rrJS"`!!3B)!(&6M`!j8i)!H914
!,RaJ!hKmJ!0iI1F$H&5MfAmiK[rp3B)!,*!!j!!%0'2rrj!!j!!)N!$N!!b3!13
!%*!!j!!8N!$N!"L3!13!(*6N!#"!J[rF9+2hId'#!"!dBrrrP13!"%##rrJi!!!
$1-3!!hbP!$JS"3!!6B)!)$5PrrqFjJ!"3),rq%k!!##!!Jji1'*aP*!!!`!!6S!
!)(`)!UD3!!%!#*3Krm")!5M9J%%!&)!"!%Ji)3"!I!J$TNk!!#!!!!!!!!!!!!!
!!!#rBIrXI!J#TMM!!!!liMR811!!!AbE)hKm[#Yi1m-!!C!!!3!)P#(rF)ZM!!'
B`3!jIld(G#`G!#@Bi3!iQ-%!1TM"!$ZB`3!mN!$"!%#3!-%!4%##!)#ES3!p1(i
!!B#"!$L!!3!mN!#F!!#!S3")N!!F!!5!J3"-N!$F!!L!!3"3N!$F!!b!`3"8N!#
m!"#!S3"BN!#F!"5!J3"FN!!F!"L!!3"JN!$F!"b!`3"NN!#m!##!S3"SN!#F!#5
!J3"XN!!F!#L!!3"`N!$F!#b3!,`!-*!!R!!dN!!F!$K)!!G`1')9P*M"!(!i!K@
BN!"K!%b3!!%!8*!!i3"81!!!!*!!!3"B1"hri#J!!#!iJ!!"3B%!K$KL1l48!"!
kI'-!,RaT!kC1J!3J1!!!!*J"!$K)!!"S1!!!!CJ"!$P)!!"FL!%!15J!!!&"JJ"
31!!!!TJ"!$P)!!"%1!!!!CJ"!$Y)!!!iL!%!1#J!!!""JJ!X1!!!!TJ"!$K)!!!
JL!%!F#J!!!"!JJ!31!!!!C!!!3"B5!!!#$L!!!!X"!!!3B)!))Zq!!%i!!!"Nm%
!8$[H!!&r[3GdN!!"!&4,rrp-J!%!@#`!!!""JJ!NJ(X!!$KM!!53!(X!!)"Mrrb
3!'%!6%J!*GPJ!!!!N!"K!&3X(3!U3))!A)"l!!!iB`!%N!"l!!#!!rrm,!!!!*!
!!3"!3)!!&(`!!0!iB!!!N!!"!%#BB3!iMli!!Aqp"h4)!!!d5!!!))!"!%!F!!!
+I(d#&)qq!!%i!rr3N!!"!%"r[3Gd9k!'2R`I!+j8!!Eh3),rf)$K!%!X"`(p3)%
!L$KJ!2q!!3!iQ'%!26Kq!!'!`3"%N!!F!!#!!3!mJ+%!5*!!(!!%J)%!6*!!r!!
)J!%!8*!!h!!-J-%!9*!![!!3J+%!@*!!R!!8J)%!A*!!(!!BJ!%!B*!!h!!FJ-%
!C*!![!!JJ+%!D*!!R!!NJ)%!E*!!(!!SJ!%!F*!!h!!XN!#m!$#3!*`!0*!!(!!
i5!!&E#`G!#j!JJ"mMli!!6J!!!'B!3!kIld(G#`G!#T!JJ"8J(X!!$KM!!53!(X
!!)!$rr`X!!!!N!!"!%4!J!!-1!!!!*J"!$U2[J!"Ild(G%J!!$4)!!!JJ!%!4"`
!!!TmI3)8Mli!!6J$rp#3!!%!4(qp"h4AS!BqI"m!VP3!"[G!J[rB1!!!!5`G!(D
3!!%!D%##!"b2[J!"1)!!!MKJ!!DBJ3"`Ild(G*KK!$`X(3"S3B)!)%#!!"!X(3"
-3B)"'%J!!5JX(3"X3B)!K%J!!4b)B3!m+!-!!%##!!`iB!!#Q'%!2)Lq!!%iB!!
)1)!!!C!!B3")I+8(G$KJ!!#BJ3"a,!8!D*!!B3"S3))!&*L"!$am[5Yi1pi!!8J
!!03X"3"f3))!c)KK!(!S!`!#3B)!`$L!!!)iB!!'Q)%!F(bp+hLBB3!m1pi!!8J
!!+5)B3!m+!-!!%##!!`iB!!$Q'%!2)Kq!!%iJ!!%1+!!!T!!J3")I'3(G$KJ!!#
BS3"a,!3!GT!!B3"S3))!*)KK!(!S!`!#3B)!'$KJ!!DBS3"`I*dMH*KK!$`lhJ!
"L(i!!AaP"h3X"3"X3))!1$L!!!3iB!!#Q)%!2(bp+hLBB3"`1pi!!8J!!"`iJ!!
&1'!!!TL"!$bBB3"`5!!!#$J!!!!X!!!!3B)!$)qq!!&r[3GdL!%!F#J!!!&!JJ#
BL!%!2#J!!!C"JJ#-1!!!ri#"!$LB!3!pIm2cH)!"!%#3!*`!!)#"!$b!S3"%N!#
F!!5!J3")N!!F!!L!!3"-N!#m!!b!S3"3N!#F!"#!J3"8N!!F!"5!!3"BN!#m!"L
!S3"FN!#F!"b!J3"JN!!F!##!!3"NN!#m!#5!S3"SN!#F!#L!J3"XN!!F!#b!!3"
`N!#m!$#3!*`!0*!!(!!i5!!#e$JGrlqES3!p+!!!0d'"!K!iBMV89!!31RaM!#j
mD31Q6S!%))J"!$`S!!!'3B)!'#J!!!9!JJ!31!!!rjJ"!$e)!!)8L!%!1LJ!!!"
!JJ!31!!!!C!!!3"%5!!"r)J"!$JS!!!#3))"m$J!!!'B!3!i5!!"j)J"!$`S!!!
'3B)!)#J!!!*"JJ!-+!!!"%##!"!i!!$rQ!%!28J!!Eb)!3!k+!!!!%##!E!i!!!
'N!!"!%4)!!'NL!%!1LJ!!!"!JJ!-1!!!$C!!!3"%L!%!2#J!!!*"JJ!8+!!!"%'
#!!`S!!!"3))"G$J!!2qB!3!p5!!"D)!"!%3X!!!!3))!$$J!!!'3!!%!4)J"!$`
S!!!'3B)!+#J!!!*"JJ!8+!!!"%'#!!`S!!!"3))!%$J!!2qB!3!p5!!"*)J"!$S
S!!!!3))"'$J!!!D3!!%!4%J!!3b)!3!m1)!!H$KJ!!'BJ3!p+!!!"TKK!$Y"JJ!
B1'!!!cJ!!!LBB3!mN!!"!%4)!!$FN!"K!%4)!!$8L'%!2#J$!!C"JJ$)+!-!!d#
#!"!i!!!(Q!%!2%J!!,5)!3!k+!!!!%##!!`S!`!!3B)!S$J!!2qB!3!p5!!!P)J
"!$`S!!!'3))!%$J!!!#B!3!m5!!!I#J!!!0!JJ!31!!!"jJ"!$a)!!"S+!!!!%'
#!'!i!!$rQ!%!28J!!&5)!3!m+!!!"8##!%Ji!!$rQ!%!28J!!$b)!3"`+!!!!%#
#!#Ji!!!"Lli!!CJ"!("r[3GdNm%!8*2"!%`lhJ!"N!!"!&4,rrNd1!!!rjJ"!$f
!!3!i1(i!!B$"!%#3!"`!!)!"!$b!i3"%N!!F!!5!S3")N!$F!!L!J3"-N!$m!!b
!!3"3N!#m!"#!S3"8N!#F!"5!J3"BN!!F!"L!!3"FN!#m!"b!S3"SN!#F!##!J3"
XN!!F!#5!!3"`N!$F!#L3!2`!,*!![!!`N!#F!$53!1%!C*!!`3"JN!!F!$L!!3#
B1#%!N!#lBIrXI!J$TNk!!##6iIrm,!-!!$PNrrq6`Iri1m!!!$Q!!!#3!+%!)*!
!`3!NL-%!)j&"!$3j3!!!L+%!*C!!i3!SL!%!)C%"!#b4)3!`Qm6rrd##!#3X#!!
!3))!(#J'!!""JJ!-+!8!Ed'#!!apBeYi5!!"d$[&rkJS(J!J3B%!8$[L2$KAhK!
kIrr`,RrT!kC1J!3J,!-!!$NJ!!T!J!!`I'-!d$Q!!!&)!!!N15!!#$J!!!")!!!
B15!!#MJ!!!")!!!-15!!%$J!!!"ridZ@Irp*eRrI'&"mBdZ@,"i!#N#!!!`lhJ!
`5!!!'#J&!(K!JJ!-1pi!9dJ!!!JlhJ!h+!-!!*[,rrmjDrrr18S!!8##rl`S#3!
)3))!*#J'!!""JJ!FL'X!!#`$!$""JJ!31'!!-*aVrrmj5J!"L'%!)#J$!!*!JJ!
`,!`!!(cS1hK!JJ!-9!-'2d'#!!Jj#2rr+!N!%%##!"!S"J!!3B)!#$N)rrjmDb"
3I'JD&#`$!Ie!J3!-1'!!!%J!!,Km#N!!I)T!8$MJ!$"!J!"-9)2SrhaT!kC"JJ!
`Q1[rrjMVrrkBkrrpQ1[rr*MVrrZBkrrkQ1[rqCcVrrK#!2rJF)3!"d'#!"4mL31
QB!!!!*cVrrp#!2rm+!N!%%##!"JS"J!!3B)!%*LVrrmiB!!`R'[rrL`-!!""JJ!
31!!!,C`,rrp)!!!X9!!'2LJ!!!&!JJ!31!!!+j`,rrp)!!!8+!!!!N##!!`i!!!
JR![rrheM@hL$iIrmJm(rq%k!!##q3Ir)I!J#TRbk+hKp&d0iI6P,H(b6)hKmG"Y
i1lVrrcYJ!!!lJ!!!N!!"!!L8)Iq3!*!!`3#81-!!!(b&-RL3!1%!Q(aJ-RKmS!0
jLU%!Pj%"!*b+`3#CN5%!S)X"!*@433#NQ0Vrrd##!#3X#3!!3))!(#J9!!""JJ!
-+"B!Ed'#!!arSqYi5!!#@$J@rkJS!!!J3B%!I$LL2,a8!"!kI+8!,RbT!kC1J!3
J1!!!!'aPJ!"X!i!!I!!J%(aM+4"mC5N3I'-!d6[!!!Sli!!!3B)!3#*c!!"qP!'
3!$YJ!!&)!!!`1m!!#$[J!!!l!!!!5!!!)$[!!!Sli!!!1`!!!%J!!"!l`!!31q!
!!$X!!!"J!!!!IS1MH(jNQhKrjIYiImEcH%J!)9&mNL0iIS1MH(jNQhKrjIYiImE
cH%J!)%NX%J!+I*-MH(ad'hK!J!!-1")!-%J!!"JS&J"i3))!$$J5!&G)!!!)1")
!0cL!!!#F(IrrIQ-LH(k!)RKmB!0j1j`!!8##rj!!1!!!#(r$!RKri#*iI'!$H8#
#!#3S&3!!3B)!()JG!!!X!!!`3B)!%$J!!$#F(Irr1j`!!BJ"!*3S!!!#3))!3#`
E!!"qqEYi3))!$&F!"Mp"JJ!)1cRrrcKJ!"!i!!!!Im-DH(rJ!RKmB!0j3))!%#J
9!!""JJ!)1cRrrR`Gd&"m'3)8,!!"r8#"!!`iB!!!5!!!b(`Fb!"mI-K31)!!-%#
!!%a8B1MrI!N$TN'#!$#BRIrrQ*hrrTLGrrfBRIrmQ*hrqjLGrrUBRIrjR*hrq%)
!rq"`B`!(3B)!&(aT!kCJ!!!!R*hrrd)!rr`iB!!31!!!!(r$'RKri!*iI'!$H8#
#!"JS&3!!3B)!%*VGrrmi!!!`R"hrrL`E!!""JJ!31!!!,C`Grrp)!!!X9`!'2LJ
!!!&!JJ!31!!!+j`Grrp)!!!8+!!!!N##!!`i!!!JR"hrrhqMkhL!!3"i1#%!F,T
"rmKm#!1Q6S!!),lKrpam#!+QI6a,H#`F!IemZbYiN!!"!!L8)Im!N!$"!553!1%
"+)["!5IB)3%BLk%"+C%"!5b,i3%PN5%"-*&"!66B)3"N3)%!$$KJ!!")!!-)1'!
!!$J!!##BB3"J1'%!B,!"!')i`3"X5!&'HB""!"5)!3"a+!!!58##!(bS!3"N9!!
%)8'#!$JS(3""1[[rqd##!"JiJMe!IZ1lH%J!'D9J!!!!5!!!5$L#28KqilYi5!!
CN@!!!!")!!!d+"d!36Vlrra!JJ!BIZ1lH$L#&Ca)!"PaB!!!!%J!!"4qilYi1))
9S%J!'9eJ!!!!IZ1lH%J!!Q3S!!"13))!I)J"!4K8!!Ba3B)!1#JG!%%kqrrl3))
!'$L#29"qilYi5!!C*@!!!!")!!")1))p@(lMZhK)!"N4B!!!!%J!!$3S(3""1[[
rr%##!"KqilYi1))9T%J!'2&J!!!!5!!!&(lMZhJiJK@S5!!Bh@!!!!"qilYi5!!
"j$X!!!#S!3"N1Z!!!CX"!*SiS!"NJb%!U&3!jAkBS3#GI!-(0)0"!+bDi3#BIf6
EH)'"!,!iBr`"QZ%!QB&K!,5E!3#EJ8%!Z)!"!*LE!3#FJ5%![*!!!3!JJ!%!R)%
"!-#3!!%!*)$K!-56!3!SJ-%!b*,K!#b!S3$-Nb%!-)!"!0#633!dNB%!1*&K!$b
433"!N5%!4*%"!%L3!1%!6*!!`3"3N!#K!&53!!%!@*-"!+#!S3!JNZ%!T)$"!#5
!i3!SJ3%!,)%K!$#"33!d5rriP5JG!'&!JJ!31!!!F*`$rrp)!!!-1!!!8*`$rrm
X(!!"IiN$TRq)ihJi`3%B3B!!D&8&$rjm"8)8I!31F$L%!!&9!!IqI1BJVR`%+RK
mK5"491$R2R`%"h4"JJ!)913(2Rb!"h3X!!!+3)!!$$J%!$")!!!B+"d!B8##!!`
i"!"A5!!!#$J%!$HF!rrr13Mrrd)!rk!X(!!!3))!$#JH!!""JJ!-1!!!,T`$rrm
i!!!a+"d!BCJ$rrp!JJ!31!!!H*`$rrj)!!!-1!!!@*`$rrkS!3"N1)!!-*b$rrp
8!!3K3B)!%$J!!#fF!rrr5!!!+#JI!!&!JJ!31!!!+j`$rrp)!!!8+"m!!N##!!`
i!!!JR!2rri!"!3Ji)3%!ZZ(rh(`)!kC1J!!J!!!!!!!!!!!X"!!!3)!!)$J!!!#
`!`!#1)!!!6J!!$#BJ`!%Q!-!"8k!!##)i`!%I!3i!%b!!#"m`b)8L+B!"6N'!!8
i"Ir3I!B(G#`'!!9!JJ"%I+-k&$LP!!9J!!!!1+Arrh`&3%"!J3!3L!8!!#`!!$"
"J[rXI!9!3%##!"#)#2rr9!8(rNJ!!'`iS!!"5!!!C$J!!!9m`!*iI!81F(`!-$K
m!#K39!82rNJ!!%L-#2rrI+!U&$J&rp"m"`GdI1!bH(`&$R"m!$JiI!!S8&3&$rp
!JJ!-I1!(G8##!!`iK2rr5!!!&$J(!$#B#!!!5!!!%$M!!!NX"!!!3),rY#`&!!"
"JJ!NU+-!!ML!!!%i!!!a1+8!!E#M!!+BJ`!%Q!-!"8k!!#!X"!!!3B,qj*L$!!4
1J!!Jfq(rq(`)!UEri!L3!,mKrp4p1NYi,"S"r6[L1G4mZ5YiN!!"!!L8)IpJN!$
"!-53!1%!b)Z"!-H,B3$*N3%!c)ZK!-@4)3$3N8%!e%#"!!`iB!!!5!!'3$KJ!!!
i!!!JQ'%!1$KK!$L`!3!k1-%!2%J"3G@!33!8L!%!3$["!%&m[J)85!!!)'!!!!#
)J3"!U'%!2ML%rrmi!`!"Q)%!3,!"!$k)!3"!+!!!!8#"!"#-"Irr,!!!-%'#rp5
)!3"",!!!58'#!#a!J!!3,!!!-%'#!"4)!!%F,!!!6N'#!*4)!!%31!!!!,!"!$j
)!!%%b!)9Z2`I!%"!J!!mI"rBVMXjrrY8!!Ba3B)!'$L#28"r)mYi5!!8N@!!!!"
)!!"-1))p5(mMbhK)!"4pB!!!!%J!!$Km(pLZ1cRrr&3!"M&"JJ!BIb2,H$L#&Ca
)!"4CB!!!!%J!!"4r)mYi1))9S%J!&%9J!!!!Ib2,H%J!"5L)!3!mI!!(G8'#!$a
m(pLZ1cRrqe3!"M&"JJ!B1))p8(mMbhK)!"34B!!!!%J!!%`iJMeBIb2,H%J!%re
J!!!!5!!!1(`If+il1Irm9!!'-8'#!"Kr)mYi1))9T%J!%pPJ!!!!5!!!&(mMbhJ
iJK@S5!!6a@!!!!"r)mYi5!!%U+L"!$iX'`"PL'%!3$J!!!!lqIrrI'-L&$KMrrq
`B3!qQ"Rrrd'#!-4!J!!S,"X!4N'#!J4!J!!3,"X!48#!!+a)!!4J,"X!5%#!"&K
)!!!8,"X!Cd'#!!a!J!4)5!!"f)J"!%"m!0!!3)%!%(p%dhJiB3!m5rrmFDKK!$i
X!rrm3B!!$(`$d!""J!!d+"`!!%'#!!`l@[rr5!!!$)KK!%!l3rrr+"X!Cd##!!`
lB!"P5!!!1$YJ!%9)!!!`+"`!!%'#!"!i!`!"Id$38%J!!@L)!3"!1'-!!Ap$!&&
!J!&B1d!!!%J!!9#)!3"!1*S!!A`!)!"!J3!-1'%!2%[rqqQS`3!q13!!+b`'!!"
!J!!-I-B!d$N!!#dmB'CQ1)0QCcMJ!!")!!!iI+3`PRbJ&R"8!`rqI!!D&"`!!!T
mB$"31'-!-*KrrrpmS"C`9!-2rRc!'K3ij`!"1rrrrb`'!!"!J[r),!F!!N'!rm#
C(rrrRhrrrR`Ib&"m'J)8,!!"r8#"!!`iB!!!5!!$()KK!%!i'J!"I!-!!%#!!#!
i'J!#I'-!8$J!!$")!!!)R"rrrc4Mrrp!J[riL'%!3(bH'K4)!!!-M!6rrj`Irrm
dBrrr3),rp#`D!!"!JJ!-+"`!!%'#!!`i!!!ZR"rrriJ"!%'F(rrrL!%!2(`!"h9
"JJ!31!!!,C`Irrp)!!+B+"d!!8##!"!i!!!VR"rrrdJ!!S3S(3!#3))#I$J!!##
F(rrr5!!#F+J"!$k)J3"!I'!J8$8$rrp!J!!)13!!!(`)d!"!J3!XI"T!8$KK!$a
mJ#"35rrkKDKK!$k)!3"!I'-!8$8$rrp!J!!)13!!!+KK!$idi`!"3)!!#$MJ!!"
m"d)8,!!"r8#"!!`iB!!!5!!##)J"!%"mL0"41+!!!(cH!K4!J3"X,!3!#$KNrrK
!J3"%1!-!"e3!k2iX!`!!I!N$TMJ!!$"!J3!XQ"rrrcLP!!LB(rrqQ"rrrCJIrrb
B(rrlQ"rrqTJIrrQF(rri3J$rh(`&)&"m"5!!I!N$TMJ!!$"!J!!-R"rrrd)!rr`
iB!!!5!!!%)`'rrmiB`!"R"rrrh`$3!"!J!!3L!%!3(`$!!""J2rNI!0!!(aM3&!
iJ!!`3)!!6&4Jk2pm#31Q3B)!-*LIrrqBRrrqQ*rrrCLIrrbBRrrlQ*rrqTLIrrQ
FRrri3J$ri("M!!G"JJ!8I'N$TQ!!!!#FRrrr3J$rr#`D!!"!JJ!-+"`!!%'#!!`
i!!!ZR"rrrb`(!!""JJ#N1)!!!$KJ!$")!!!3B!!!!*arrrmiK!!"L!%!3(`!1&"
m"!!!3B$rl(`%1!"mC$K33)!!H&4Jk2pm#31Q3B)!8)J'rrqB(rrrL!ErrTJIrrk
)"[rpQ"rrrBJ'rrbB(rrmL!ErqjJIrrZ)"[rkQ"rrqSJ'rrQB(rrjM!Erq*`IrrK
#!2r!F'-!"d'#!#"mD31QM!Errj`Irrp#!2ri5!!!$$J!!$#F(rrrL!%!2(`!"h9
"JJ!31!!!,C`Irrp)!!!S+"d!!8##!"!i!!!VR"rrrdJ!!"3S(3!#3))!$$J!!##
F(rrrIq2lH)!"!+Ji)3#Jbq(rq,XKrp4m#!1Q6S!!)!!!!!!!!!!!fq(rq(`)!UD
p`IqSI(mEH(bH)hKmX#Yi1f!!!*!!!3!)1!!!)*3Kr2#3!-%$0$VK!V!kJ3+[Q!%
!B6R"!'4)!!f%IJ1$H$L!!#9)!!r*B!!!!(a['hP!JJ"!IJ1$H%J!$R9J!!!!I'8
EHApl+K4"JJeJIm2cH(i%JhKrl2Yi5!%m9B""!"3S!`!!3))04$KJrrp)!!e!I,"
i8Apl+K4"JJ!SIm2cH(i%JhKrl2Yi5!%m*B""!"3S!`!!3))!$$KJrrp)!!d3IH0
lH$L"!c3iS3"d5rrQBAa`'hKpf(0iIGPcH(hDFhJlJ!!!L!%!H5`!!'K"JJU!3)!
!B#`!!&K"JJ-S3)!!-#`!!%&"JJFm3)!!%#`!!#9"JJT)5!!+@#`!!%K!J!T3,!!
!48#!"@a)!!T%,!!!Bd'##5a!J!!3,!!!B8'#"`4)!!SX,!!!C8#!"8K)!!"J,!!
!G%'##KK!J!!`,!!!Ed'#!X"!J!!B,!!!EN#!#)`X!!"U3)!*q%J!!$3X!!"c3)!
(Q%J!#HJX!!"i3B)#P%#!!"!X!!"f3)!*e%J!!S3X!!$r3B)*b%J!#F5)!3"i+!!
!"N##!+!X(!!!3))!9)!"!+3X!!!!3B)!&$KJ!"!i!!!!N!"K!)5B!3#YJ'%$0$J
$!!p8!`!f1--!%*!!`3-dJ+-!!)#$!!5!B`!)J!Err*!!S3"NN!#"!'L3!'%!E*!
!!3"`L!%!V5`!!!&"JJ!X3)!!%#`!!!"!J!!85!!!H#`!!!0!J!"`5!!!')Zi!!"
r[3Gd5!!!B+Zj!!")!!"BJlS!!%J!!&!S!!!$3))!')"K!c3iB`!%N!"K!c5$Srr
m5!!!0#J!!!4!JJ!FJ'%$0$KM!!L3!'%$0)+MrrL#`rrm5!!!&)"K!c3iB`!%N!"
K!c5$SrrmL'%!H#J$!!*!JJ!-Ik!(0(`G!hJS!`!"3))!$(qJ"h4m(30i+!-!"%#
#!+b!`3"dIX5cH)!"!(KqSkYiIZ@lH*!!`3!NN!!"!#L!`3"mJ!%!J*!!`3!XN!!
"!$#!`3#%J!%!L*!!`3!dN!!"!$L!`3#-J!%!N!#3!-%!2*!!!3"!J-%!P)!"!*L
3!-%!4*!!!3")J-%!R)!"!+#3!-%!6*!!!3"3J-%!T)!"!+L3!-%!9*!!!3"BJ!%
!V*!!!3"FJ-%!*)$K!#L"!3!XJ5%!-)&"!$4,rqjCI(-EH8'##!")!!#SJ+%!G(q
MkhL!!3"iIZ5lH*!!S3!JN!!"!#5!S3"mJ!%!J*!!S3!SN!!"!#b!S3#%J!%!L*!
!S3!`N!!"!$5!S3#-J!%!N!#3!+%!1*!!!3!mJ+%!P)!"!*L3!+%!3*!!!3"%J+%
!R)!"!+#3!+%!5*!!!3"-J+%!T)!"!+L3!+%!8*!!!3"8J!%!V*!!!3"BJ+%!))$
"!#5!i3!SJ3%!,)%K!$#"33!d5rrVFAac'hP"JJGBIP1J8%J!"j5)!3"i+!!!"N#
#!*`X(!!!3))!9)!"!+3X!!!!3B)!&$KJ!"!i!!!!N!"K!)5B!3#YJ'%$0$J$!!p
8!`!f1--!%*!!`3-dJ+-!!)#$!!5!B`!)J!Err*!!S3"NN!#"!'L3!'%!E*!!!3"
`L!%!V5`!!!&"JJ!S3)!!%#`!!!"!J!!85!!!G#`!!!0!J!"X5!!!&)Zi!!")!!"
JSlN!!%J!!&L$ZJ!!5!!!8#J!!!0!JJ!BJ'%$0$KM!!53!'%$0)1Mrra)!!!d+!!
!"%##!"b!B3-d1'-!#*!!B3-dJU2rq),$rra)!!!8J'%$0$KM!!53!'%$0)1Mrrb
)B3"i+!-!!N##!!aAS!3qI"d$H#J$!!&!JJ!-9k!'2R`G!hJS!`!%3))!V)$"!(4
qa,0iJ!%!H(kMUhKqjEYiN!$"!#53!!%!+)$"!(b!!3#!N!$"!#b3!!%!-)$"!)5
!!3#)N!$"!$53!!%!1)$"!)b!!3#3!*!!`3!mN!!"!%#!`3#8J!%!Q*!!`3"%N!!
"!%L!`3#FJ!%!S*!!`3"-N!!"!&#!`3#NJ!%!U*!!`3"8N!!"!&L!!3#XN!!"!&b
!`3!NJ1%!+)%"!#b")3!`J8%!0%[rkqPmFaYj3B)&N!")!!#SJ+%!G(qMkhL!!3"
iIZ5lH*!!S3!JN!!"!#5!S3"mJ!%!J*!!S3!SN!!"!#b!S3#%J!%!L*!!S3!`N!!
"!$5!S3#-J!%!N!#3!+%!1*!!!3!mJ+%!P)!"!*L3!+%!3*!!!3"%J+%!R)!"!+#
3!+%!5*!!!3"-J+%!T)!"!+L3!+%!8*!!!3"8J!%!V*!!!3"BJ+%!))$"!#5!i3!
SJ3%!,)%K!$#"33!d5rrT!Aac'hP"JJ6SIP1J8%J!"55)!3"i+!!!"N##!03X(!!
!3))!9)!"!+3X!!!!3B)!&$KJ!!3i!!!#N!"K!)5B!3#YJ'%$0$J$!!p8!`!f1--
!%*!!`3-dJ+-!!)#$!!5!B`!)J!Err*!!S3"NN!#"!'L3!'%!E*!!!3"`L!%!V5`
!!!&"JJ"%3)!!%#`!!!"!J!!85!!!M#`!!!0!J!#%5!!!6)LB!!!m!%-`J')6I*!
!J3+db#-!!*!!!3+`b!%#X2rJ##K)!!"FS*N!!$`!3c#!BK0mN!#"!V6))`!!N!!
"!V$)!3+`rq!)+%J!!$M$qJ!!5!!!-#J!!!9!JJ!BJ'%$0$KM!!L3!'%$0-[MrrK
)!!!8J'%$0$KM!!L3!'%$0-[MrrL!B3"dr#$iN!#!!3"iIZ@lH*!!B3!NN!!"!#L
!B3"mJ!%!J*!!B3!XN!!"!$#!B3#%J!%!L*!!B3!dN!!"!$L!B3#-J!%!N!#3!'%
!2*!!!3"!J'%!P)!"!*L3!'%!4*!!!3")J'%!R)!"!+#3!'%!6*!!!3"3J'%!T)!
"!+L3!'%!9*!!!3"BJ!%!V*!!!3"FJ-%!*)$K!#L"!3!XJ5%!-)&"!$4,rr%KI(-
EH8'#!cKq8k"35!!$G)J"!(JS!!!&3))!')"K!c3iB`!)N!"K!c6,irri5!!!&)"
K!c3iB`!)N!"K!c6,irriJ'%!G2`Jq*!!J!%!H(lPZhL3!'%!**!!!3!SJ'%!I)!
"!)#3!'%!,*!!!3!`J'%!K)!"!)L3!'%!0*!!!3!iJ'%!M)!"!*!!N!"K!$b3!!%
!3)"K!*5!!3#BN!"K!%53!!%!5)"K!*b!!3#JN!"K!%b3!!%!8)"K!+5!!3#SN!"
K!&53!!%!@)!"!+b3!!%!A)$"!#5!i3!SJ3%!,)%K!$#"33!d5rrVUAac'hP"JJ*
JIP1J8%J!!Tb)!3"i+!!!"d##!%#!B3-d1'-!"*!!B3-dJ)2rr#J%!!"!JJ!)1))
9V$KK!,!iS!)!5rrBC@!!!!!X!`!!3B!#'$TK!,")!!!8J'%$0$KM!!53!'%$0)*
Mrr`S%`!!3))!#$TL&CL)!3"h+!!!!%'#!#b)!3"fLP-!!$Tc!!%S!!!!3B)#')!
"!)"m%J!!3)%#$(`5!hK)!!)%L!%!GLJ!!!""JJ!XJN%!J(jMQhJiJ!!!IN@6H%[
rfl&J!!!!+!-!!%'#!GKq8aK35!!"d(jMQhK)!!6PB!!!!(ab'hK)!!'mJ'%$0)J
"!(JiB`!%N!"K!c3X!!!#J'2rr%'#!#a!J!!3,!!!!%'#!"K)!!1%,!!!"%'#!#4
!J!0i5!!!&*0M!!")!!0XXf-!!%J!!f56B`!!5!!$A*0M!!4rB2j`N!!$!!")!!0
-L!%!H$TK!,!S!!!'3))!e#`F!!"!JJ#!J!%!T#`!!!""JJ!81'!!%$J!!!#3!'%
!K*J"!+f!!3#8,!!!!%##!#5!B3#-N!"K!)L)!`!!I!-(G(`$!0"m!"Yi9!!2rT!
!!3#3!)"K!c3i!`!29!-!0MM$!"#3!-%$0)#M!!#!J`!%J'-!#)!'rrb3!+%!C*!
!J3"SN!"K!'b3!!%!F)J"!+dX!!!"3B)!,%#!!"!X!!!!3)!!&%J!!%JX!!!$3)!
!3%J!!"b)'!!!Q!%!X%J!!$#J'3!!Q!%!X%J!!#5!'J!!Q!%!X%J!!"L!B3-d1'-
!"*!!B3-dJ!2rr*J"!,!k3!!"5!!!A$J!!#@B!3#`1Q%!X$T!!!&)!!")IH0lH%J
!!eeJ!!!!I'8EHApl+K4"JJ!SIm2cH(hNHhKrl2Yi5!%a2B""!"3S!`!!3))!$$K
Jrrp)!!)SIf2EH%J!!L#)!3"dIP'6H#J!!!""JJ#`+!!!!MJ!!#"!JJ!)1!!!-*J
"!'')%`!!I!!(G#`!!#Y"JJ!8,!!!,8'#!!`X!!!J3))!F)J"!'%X!!!`3))!C(r
$mhKqC*YiIqclH$LJ!!&)!6#pJ%%!&#J$!!"!JJ!-1'$rrdJ!!DJkF`!"1P,rrdJ
!!$"r`r0iIqclH$L"!'%iS!!"5!%`LB""!"3S!`!!3))!$$KJrrp)!!&d1M%!!B!
"!(am%3!!3B$rc#`5!!""JJ!XIm2cH(jNQhKq4C0iIqclH%J"-%Q!33!8+!-!!%#
#!!`iB2rr5!!"0)J"!(3S!!!!3))!8$T!!#")!!!mB!!!!*T"!'"r`r0iIqclH$L
"!'!iS!!"5!%`"B""!"3S!`!!3))!%$KJrrp)!!$`B!!!!$Sa!!'!!3"mI"%!!%'
!rm5)!3"iIhZ+&#J!!!C!JJ#NJ!%!K$ZF!!%l13!#I"`!!$YD!!3l'!!"3)!!L)#
"!)JS"!!!3B)!C)#K!*!!,!8!!%#"!&JX"3!"3))!+(r$mhKrl2Yi1+!!!8J",i'
!33!8+!-!!%##!#`iB2rr5!!!E(r$mhKrl2Yi5!%[BB""!"3S!`!!3))!$$KJrrp
)!!"-J!%!N!"rH`)8J)%!R$J!!##!B3#JN!#"!(b3!'%!J*J"!'')!3"i+!!!"N#
#!"#!!3#%I"`!!%'!mbb)%!!!I!!(G8##mRKrBpYiJ!%$'$JK!a$,iIriZF(rU(`
)!kC1J!!J!!!!!!!!!!#6iIrmI!J#TRbr+hL6`IriI(iEH(b$)hL3!!%!#(r'mhJ
iJ!!"P#(r`%[rbTPJ!!!!I"mB3%##!!ar`r0i5!!!#$KJ!!#!!3")1#%!3)2Krra
m#!1QJm(rq%k!!#!!!!!!Nq(rr(`)!UD3!!%!#*3Krm#3!'%!@$KL1)53!)%!A$L
!rrmli`"8N!#K!'"rirYiN!$"!'53!1%!D*%"!'b4)3"`N8%!G%J!!F&J!!!!,!-
!!%'!!!`iB2rr5!!!')"L$Rarj2YiJ+%!@$M"!&a,rr&*J!%!5$JK!%#$iIrmI!J
$TNk!!#!iJrrr1'$rri`%!!%iB`!"+!!!!%##rr41J!!J!!!!!$L%rrmiSrrrM!3
!!5J!!!#F"3!"3),rp%k!!#!!!!!!1)6rrcM$rrmiT3!"5!!!,)`%!!%S!!!!R!B
!!8##!"`i!!!!5!!!#*`'!!%dTIrr3),rq%k!!#!dTIrr3),re%k!!#!!!!!!!!!
!!!!!!!!iK2rr1+2rri`&!!%S!!!!3),rq$LPrrq-"!!"+!!!!*`&!!&!J[rd6S!
!)!!!!!!iBrrr1)6rrdJ!!"KJ!!!!+!!!!%##!!`iB!!!6S!!))`$!!'-T!!"I!!
S3%'#rq4mC3"36S!!)!!!!!!!!!!!1'2rrcL%rrmia3!"5!!!*)`$!!'-T!!"I!!
S3%'#!!amC3"36S!!)#J!!!""JJ!-0-Errd##rp`iB!!!6S!!)$KMrrp8J!Bq5!!
!%'!!!!"m"!"!6B)!))b$!!%S"!!!3),rm#J!!!"0JJ!J1'!!!%k!!#!!!!!!!!!
!!!!!!!!S!`!!3B)!%+!$!!48!0Gr3))!$$KJ!!"1J!!JL+-!"95JjliX!!!"3B)
!@%#!!"!X!!!!3)!!&%k!!#!X!!!$6)!!)%J!!$3X"!!!3)%!&$J!!!*3"5DfQ+-
!"8J!!"4!J!!31!!!!9!&*VDBS`!&I)-MH%k!!#!iB!!"6S!!)$KJrrp1J!!J!!!
!!!!!!!"m#!+Q[Z(rh(aj'hKmQL0iI,XVH(cF-hKmr6YiI4j$H(dr5hL3!!%!#*3
Krj!!L!)9`5J!!!"!JJ")J!)%G$KJ!!'BBKA"+!!!!%'#!$3mB("`1)%!1$KMBfC
)!2ACJ%%!&(aJ"c9!JJ!BJ!%!1&3!"[G"JJ!-1!!!!CJ#&F#!JKA%1Z!!!$X!!!!
i!!!J5!!!8(b&)hKm#31QJ'8!##J$!!"!JJ!SNb8!#(lMZhL643!-Nf8!%*1&!"5
6T3!!Nm8!"*2P!"K)!!"m1+8!($Vh!!&#!2r)I*JMH)#%!i!S"!!!3),rX)!#"U`
S!!!!3B)!8$KJ!i4)!299J%%!&#J$!!""JJ!m+"J!!%##!!b3!')9a%J!!!L3!(J
$J*-M!!L63`!-Nf-!%*1$!"56S`!!Nm-!"*2M!"KqilYi5!!!#$KJrrq!!3"i1#%
!F(`)!kDkiIrF6S!!)!!!!!!!!!!!!!!!!*2Krram#!+Q1q*df*!!!3!)P#(r`%J
!!##!"3!!1)$rrj!!(`!!J'8!#)'&!!4)!5TPJ%%!&)#r!!!S"3!!3),rh)!"!%J
i)3"!Jq(rr(`)!kC1J!!J!!!!!!!!!!!!!!!!1'!!!*!!B3!!6S!!)!!!!!"m3a0
i6S!!)!!!!!!!!!!!I!J#TT!!!3!)P#(r`$J!!!#3!!%!1%[rrme,rrrCI'NEH)"
L$Tb!JJkB1+)!!$M#G0b!iJk-J3)1L%[rrHPJ!!!!N!"L&FK,qMDYB!!!!$L"!$J
iB!!!5rXZc@!!!!!iB!!!5rqki@!!!!#!!3")1#%!3(`)!kC1J!!J!!!!!!!!!!!
X!`!!I'!!0(b*!$4!JJ!)1!N!)#`&!!"mU3!dI-S!0%##!!Jj+J!JI!")!#&!!%"
"J3#`15N!!5%T!%"m!%S8I5P38(dT!kBX#3!J11Rri%'!!""mD$``11!!!%J!!"K
mL%``)1N!)(aR1$"p#$YiI'G--#`!!#!a)2rJ3B!!%(b$5$!iJ!!!5!!!'(aM!$!
K)!!JI)P--(aM5hKmK!!`18$rrc$R!!"mK#%8I'-C&(d)344mjcN8I!C!%(dP14&
"J!!3I!J$H(dR5hJ`#J!"3J$rf(b%)44mBaN86S!!)$L!!!!iB!!!6S!!)!!!!!!
X!`!!I'!!0(b*!$4!JJ!)1!N!)#`&!!"mU3!dI-S!0%##!!Jj+J!JI!")!#&!!%"
0J3!J15N!!5%T!%"m!%S8I5P38(dT!kBX#3!J11Rri%'!!""mD$``11!!!%J!!"K
mL%``)1N!)(aR1$"p#$YiI'G--#`!!#!a)2rJ3B!!%(b$5$!iJ!!!5!!!'(aM!$!
K)!!JI)P--(aM5hKmK!!`18$rrc$R!!"mK#%8I'-C&(d)344mjcN8I!C!%(dP14&
"J!!3I!J$H(dR5hJ`#J!"3J$rf(d%3hKmicYi6S!!)(bS!UCm`!!QN!#M!!#3!--
!"*!!)`!)N!"$!!bpS`!8r!!%MYR$!'$Ci`"SfJ-!F0SM!(MD3`#!fQ-!L0U$!*!
!fU-!Q0V$!+$Di`#Sf`-!X0XM!,ME3`$!ff-!b0Z$!0$ES`$Bfm-!i0[M!1MB!`$
`1'!!!%k!!#!!!!!!!!!!!!!!!!#!S`!!J--!"(bS!kCmcr%JJ#-!#)"$!!bjS`!
8bF-!B-RM!'M+!`"`bL-!H-T$!)$+B`#)bS-!N!$+S`#BbX-!S-VM!+M,!`#`bb-
!Z-Y$!-$,B`$)bi-!d-ZM!0M,``$Jb!-!m-[M!1JX"!!!I)-MH2hq"Bj-JJ!J1'!
!!8k!!#"m#!+Q[m(rq*!!!3!)P#(r`,"K!&U3!)%!A,#K!'+SB3"DJ)%!A+LK!'*
)!#4eB!!!!(ar'hP!JJ!-1'!!!%J!!$"rirYi5!!"V@!!!!!l``!!1(m!!%J!*Ce
J!!!!Iq2lH%J!qA'!33!8Im2cH)!"!%Ji)3"!I!J$TV["rrK1J!!J+!-!!%##!!`
iB2rr6S!!)+"M!!"1J!!J+!-!!%##!!`iB2rr6S!!)+"M!!K1J!!JI!J#TVr"rrL
3!!%!#*3Krm"mIaYj3))!$$KJ!!")!!#!J"m!%#J!!!""JJ!3J(m!%%J!q2'!33!
8J"m!&#J!!!""JJ!3J(m!&%J!q0Q!33!8J"m!I#J!!!""JJ!dJ(m!I)2$!!")!!!
8Im2cH%J!!%9J!!!!I(iEH#JH!!"!J[rXJ(m!I%J!q*f!33!8Iq2lH%J!q*'!33!
81'!!!)!"!%Ji)3"!I!J$TV["rrK1J!!JI!J#TVr"rrL3!!%!#*3Krm"mIaYj3))
!$$KJ!!")!!"JJpm!))!I!"3S!!!!3B)!%)"r!"4)!2JpJ%%!&)!I!"JS!!!!3B)
!%)"r!"K)!2JPJ%%!&)!I!"`S!!!!3B)!%)"r!"a)!2J0J%%!&(rMqhK)!2J"J%%
!&(r$mhL!!3")1#%!3(`)!kDl`Iri6S!!)(`)!UD6iIrmN!!"!!L8)Ir!I(mEH8#
#!!`iB!!!5!!!'(rMqhK)!!!PB!!!!%J!(A&J!!!!J!%!5$JK!%"m#!1QJq(rr%k
!!#"m#!+Q[J(r`*!!!3!)P#'qX*!!B8&S1`$rrcVJ!!!k`!!!J!&"D*!!!3$%1'!
!J%J!lV@!33!8I(mEHC2K!-K!JJ!-1'!!!%J!'@`iB!!"X(m!$MKJ!"K)!1k0J%%
!&*!!B3$!J'%!`#J$!!"!JJ!8Iq2lH%[rrJPJ!!!!5!!C1%J"(,@!33!8J)%!`*!
!C!!!1!!!!)"K!-#`!`!%1!!!!B"K!-#`!`!'J'%!`$ZM!"!mB!!"1'2rrl"p!!)
mB!!"1'2rrl"p!!3mB!!"1'2rrl"p!!D!!3$!N!!I!"3iB!!%5!$Z"B""!"4mHKY
j3))!&(rMqhK,rrf*B!!!!%J!',L6A`"m+"S!!%'#!"!iB!!!Q'%!c%J!'#JiB!!
5Q'%!c%J!'"b)!3$-+!!!%N'"'!!iBMe`9!331RaM)#jmD31Q6S!%))"K!-3iJ!!
$5!!KZ@!!!!#3!'&!f)"K!-4)!#**B!!!!&4M"Mp"JJ!XJ'%!b+"M!!BS!`!!3B)
!%$KJ!"1BB3$-5!!AZ$LJ!"+BS3$-5!!AV$L!!!'BJ3$-5!!AS$J!!!1`!3#iJ'&
!f*!!B3#m1S)9c%J!!%b)G!!!I'-(G)#"!,b)K!!!I)8(G(`$+!""JJ!-1U!!!%J
!!%#)G!!!I'!(G8##!!`kS!!"5!!!,)#"!,`iK!!"N!#"!,`kP!!"U'%!Z$J$rrq
`!3#iI'-(08##rkJkS!!"9U3'2d'#!'#!B3$%1)!!!dJ!)0eJ!!!!N!"K30L!B3$
%5!!KE@!!!!"8B!Br3B)!,)"K!-LJ!`!'+!!!!%'#!"!iB!!6Q'%!c%J!&Y`i!!!
5Q!%!c%J!&Y!i!!!#Q!%!c%J!&X5!B3$%1)!!!%J!))&J!!!!N!"K30L!B3$%5!!
K%@!!!!"8B`Br3B)!,)"K!-LJ!`!'+!!!!%'#!"!i!!!6Q!%!c%J!&S!iB!!5Q'%
!c%J!&R3iB!!5Q'%!c%J!&QJiB!!$X'%!X)"K30L3!'%!Y$T#&G")!!"-L()!!(a
N"h5!B3#dL!-!!(`!"h4m"!!!3B)!$$TJ!!")!!"!L")!!(`$"h9!JJ!-1Q!!!8J
!!#b!B3#d1'-!!C!!B3#d1P)!!DL"!,!iC2rrX'%!X(b$"c9!J[qS1Q!!!9CJ"Mp
"JJ!31'!!@E"r!!*)!!#-1!!!!l!"!+L!B8$BN!"K!+`k!KA85!!!6)L`!!"mT!G
dJ'%!V)J$!!"m"3GdI!3S!%'#!!`k)!!!5!!!3)J3!!"m!`Ge3))!$$SJ!!&)!!!
XJ'%!V$J$!!'3!!%!V$S3!!'SB3#S1!2rrl!"!+KmB`Fe3),rU$SJ!!&@)`Br3B)
!$$KJ!&H`I`!#S"m!!LJ!!!""JJ"JJ'%!a$L!!!G)!"m&B!!!!*!!B8$BJ'%!a%J
!(j9J!!!!9'!'2d'#!#b!J3$)S'3!"LJ$!!""JJ!31'!!%jKK!-a)!"8%1!!!%TJ
"!-a)!"6i1)!!!jL"!-a)!"6XJ'%!a$L!!!")!"kTB!!!!*!!B8$BJ'%!a%J!(cP
J!!!!9'!'2d'#!#b!B3$)S'-!"LJ$!!""JJ!31'!!%jKK!-a)!"5S1'!!%TKK!-a
)!"5F1!!!%TJ"!-a)!"53!)"K30L3!'%!T)"K!+5)S`!!J'%!T)L$!!&3K83ZX,m
!!)#"30JiC!!#N!"K!+#!J3#JL'3!!)#"!+#)"!!"8!0%,V"r!!L!B8$BL)-!"E#
I!!U!J8$B1!3!"*!!!3#FJ'%!R)KM!!"8B!Ba3B)"2)"K30JiB`!%N!"K!*JiB!!
#J)%!Q)L%!!"8J!GqI'-!-&4M"$ilJ`!!Xjm!"$Km!!&8BaJi5!$TPB""!"53!'%
!`)#"!-!S"!!!3))!B)"K!-3iJ!!!5!!GP@!!!!#3!'&!f)"K!-4)!"iPB!!!!&4
J"Mp"JJ!XJ)%!b+!%!!BS!!!!3B)!%$KJ!"1BB3$-5!!6P$KJ!"+BB3$-5!!6L$J
!!"+B!3$-5!!6I%J"&h'!33!8J)%!`*!!C!!!1!!!!)"K!-#`!`!%1*crri"K!-#
`J`!'J!%!`*!!(`!3J'%!a"`F!!0m"!Fd5!!G"@!!!!#3!'&!f)"K!-4)!"f9B!!
!!&4M"Mp"JJ!XJ'%!b+"M!!BS!`!!3B)!%$KJ!"1BB3$-5!!6"$KJ!"+BB3$-5!!
5q$KJ!!5BB3$-5!!5l$Z!!!#!B3$%1)!!!8J!(+9J!!!!N!"K30L!B3$%5!!G0@!
!!!"8B!Br3B)!,)"K!-LJB`!'+!-!!%'#!"!iB!!6Q'%!c%J!%U3i!!!5Q!%!c%J
!%TJiB!!&Q'%!c%J!%Sb!B3$!1k-!#$YJ!!")!!"8J'&!f$J$!!'3!!&!f)L$!!"
8Jd3ZX(d!!S"K30Ji!`!"N!!"30L)J`!!9)"%,V!G!!5!J8$B1'3!!C!!B8$BL'3
!!&4J4#k`(3!'1ld!#$Yl!!&m'q!!3B$rV)"K!-3iJ!!"5!!Ei@!!!!#3!'&!f)"
K!-4)!"aaB!!!!&4J"Mp"JJ!XJ'%!b+"M!!BS!`!!3B)!%$J!!"1B!3$-5!!4i$K
J!"+BB3$-5!!4e$J!!!@B!3$-5!!4b)"K30L)!`!!,!!!,%'#!14!J!!F,!!!)8'
#!(a!J!'-,!!!!%'#!5K)!!'!,!!!1d'#!!K)!!&dJ'%!a$L!!!")!"Y0B!!!!*!
!B8$BJ'%!a%J!'peJ!!!!9'-'2d'#!#b!B3$)S!-!"LJ!!!""JJ!31'!!%jKK!-a
)!"&-1'!!%TKK!-a)!"&!1!!!%jJ"!-a)!"%dJ'%!a$L!!!*)!"VaB!!!!*!!B8$
BJ'%!a%J!'i&J!!!!9'-'2d'#!#b!B3$)S!-!"LJ!!!""JJ!31!!!%jJ"!-a)!"$
`1'!!%TKK!-a)!"$N1'!!"TKK!-a)!"$BJ'%!a$L!!!P)!"U9B!!!!*!!B8$BJ'%
!a%J!'b9J!!!!9'-'2d'#!#b!B3$)S)-!"LJ%!!""JJ!31!!!%jJ"!-a)!"#81'!
!%TKK!-a)!"#)1!!!$CJ"!-a)!""mJ'%!a$L!!!&)!"SjB!!!!*!!B8$BJ'%!a%J
!'XPJ!!!!9'-'2d'#!#b!B3$)S'-!"LJ$!!""JJ!31!!!%jJ"!-a)!"!i1'!!%TK
K!-a)!"!X1'!!"CKK!-a)!"!JJ'%!a$L!!!")!"RGB!!!!*!!B8$BJ'%!a%J!'Qe
J!!!!9'!'2d'#!#b!B3$)S)-!"LJ%!!""JJ!31'!!%jKK!-a)!!rF1'!!%TKK!-a
)!!r31'!!%TKK!-a)!!r%J'&!f)KM!!%S!`!!3B)"E)"K30JiJ`!"N!#"30L)!`!
!,!!!rd'#!(a!J!$N,!!!q8'#!!K)!!$BJ'&!f)KM!!#`B3#8J'%!a+L"!*4)!"N
pB!!!!*!!B8$BJ'%!a%J!'FeJ!!!!9'3'2d'#!#b!S3$)S'8!"LJ$!!""JJ!31!!
!%jJ"!-a)!!mm1)!!%TL"!-a)!!m`1)!!"jL"!-a)!!mNJ'&!f)KM!!#`B3#5J'%
!a+L"!**)!"M9B!!!!(aJ'hL3!!&!f)"K!-4)!"PKB!!!!&4N"Mp"JJ!XJ'%!b+"
M!!BS!`!!3B)!%$J!!"1B!3$-5!!1d$KJ!"+BB3$-5!!1a$J!!!LB!3$-5!!1Z)"
K30L)!`!!X!%!N!#!B3$%U)%!N!")!"KTB!!!!(aJ'hL3!!&!f)"K!-4)!"MeB!!
!!&4M"Mp"JJ!XJ'%!b+"M!!BS!`!!3B)!%$J!!"1B!3$-5!!1C$J!!"+B!3$-5!!
1@$KJ!!ZBB3$-5!!16)"K!-3iJ!!"5!!B#@!!!!#3!'&!f)"K!-4)!"LCB!!!!&4
M"Mp"JJ!XJ'%!b+#$!!BS"!!!3B)!%$KJ!"1BB3$-5!!1#$J!!"+B!3$-5!!0r$J
!!!@B!3$-5!!0m)!"30L3!!%!M)"K!)b)B`!!9'-(rd'#!"#!J8$BL`3!!dJ!!!J
l!2rrJ)&!f*!!J3#)J'%!L)KM!!"8G[GqJ'&!f$J$!!'3!!%!K)"K!)5)S`!!J)%
!K)KN!!&3C83Z9+!%2KaJ!!BiB`!&1!!!#RaM!pCmG`FdJ'%!a$L!!!&)!"FjB!!
!!*!!B8$BJ'%!a%J!&mPJ!!!!9'-'2d'#!#b!B3$)S'-!"LJ$!!""JJ!31!!!%jJ
"!-a)!!di1'!!%TKK!-a)!!dX1'!!$*KK!-a)!!dJ1!!!#,!"!(D!J8$BN!#"!(J
iBMeGN!"K!(a)!!"NJ'%!I)J$!!"m"!GdJ'%!H)KM!!"mB!GdI!3!!%'#!"!iB!!
!Q'%!J%J!!&L!B3"mL'-!!(aM"h9!JJ!31!!!!CJ"!)")!!!mJ'%!I$KM!!'3!'%
!I)#K!(JiC3!"N!"K!(LSJ3"f1'3!!$LNrrq`S3"fI'3(08##ri`iB!!"Q'%!J)L
"!)!S"!!!3))!U$KJ!!L`B3"UJ)&!f*!!J3"X1!)pCT!!!3"`5!!!C)#"!(#)C!!
!I'-(G)#"!'b)K!!!I)!(G(`$!!""JJ!31'!!!*KK!(4)!!"8J'%!F)J$!!"m!`G
e3))!%$KJ!!'BB3"d5!!!1)"K!(!iJ`!"N!#"!(#!J3"X1!3!!C!!!3"XU'%!DMJ
$rrq`!3"UI'-(08##rj!!1'!!!CKK!(5)J3"d+!3!!%'#!'#!B3$%1)!!!8J!&C&
J!!!!N!"K30L!B3$%5!!@)@!!!!"8B!Br3B)!,)#"!-LJ"!!'+!!!!%'#!"!iB!!
6Q'%!c%J!#j!!1'!!%TKK!-a)!!Z%1!!!#CJ"!-a)!!YiJ'%!a$L!!!&)!"8eB!!
!!*!!B8$BJ'%!a%J!&F9J!!!!9'!'2d'#!#b!B3$)S)-!"LJ%!!""JJ!31'!!%jK
K!-a)!!Xd1!!!%TJ"!-a)!!XS1!!!$*J"!-a)!!XFJ'&!f)KM!!!S!`!!3B)!E)"
K30L)B`!!X'%!D)"K!-5SJ3"S5!!8[@!!!!#3!'&!f)"K!-4)!"90B!!!!&4M"Mp
"JJ!XJ'%!b+"M!!BS!`!!3B)!%$KJ!"1BB3$-5!!+[$J!!"+B!3$-5!!+X$KJ!!U
BB3$-5!!+T)"K!-3iJ!!"5!!8B@!!!!#3!'&!f)"K!-4)!"6aB!!!!&4J"Mp"JJ!
XJ'%!b+"M!!BS!`!!3B)!%$KJ!"1BB3$-5!!+B$KJ!"+BB3$-5!!+9$J!!!@B!3$
-5!!+5)#"30L3!)%!C)"K!'5)!`!!9!-(ILJ$!!&!JJ!XJ'&!f$J$!!'3!!%!B)#
"!'#)T!!!J'%!B)J$!!%iK3!!8!4%,V#I!!k!B3$%1)!!!8J!%m&J!!!!N!"K30L
!B3$%5!!88@!!!!"8B!Br3B)!,)#"!-LJ"!!'+!!!!%'#!"!iB!!6Q'%!c%J!#F!
iB!!5Q'%!c%J!#E3i!!!*Q!%!c%J!#DL!B3$%1)!!!8J!%f9J!!!!N!"K30L!B3$
%5!!6p@!!!!"8B!Br3B)!,)"K!-LJ!`!'+!!!!%'#!"!iB!!6Q'%!c%J!#@3i!!!
5Q!%!c%J!#9JiB!!-Q'%!c%J!#8b!B8$BL'-!!#J$!!""JJ"XJ'&!f)J$!!#`!3"
FJ'%!a+L"!&a)!",YB!!!!*!!B8$BJ'%!a%J!%heJ!!!!9'!'2d'#!#b!B3$)S'-
!"LJ$!!""JJ!31'!!%jKK!-a)!!MX1'!!%TKK!-a)!!MJ1!!!#jJ"!-a)!!M8J'%
!a$L!!!&)!"+4B!!!!*!!B8$BJ'%!a%J!%b&J!!!!9'-'2d'#!#b!B3$)S'-!"LJ
$!!""JJ!31'!!%jKK!-a)!!L3!$L!!"+BJ3$-5!!)K$J!!!@B!3$-5!!)H$KJ!#4
)!0iCJ%%!&(aq'hP!JJ"NJ'%!a$L!!!")!")KB!!!!(aJ'hL3!!&!f)"K!-4)!"+
YB!!!!&4M"Mp"JJ!XJ'%!b+"M!!BS!`!!3B)!%$KJ!"1BB3$-5!!)($J!!"+B!3$
-5!!)%$KJ!"+BB3$-5!!)"*2D!!!lAJ!JS(m!"LJ$!!"!JJ!)Xam!$,-H!!bbrJ!
'XYi!$MX!rrmki!!!1X!!!)"K30L3!'%!@)"K!&L)!`!!J'%!@)L$!!&m!`0i8)0
%,V"q!!+!B8$B1'-!!T!!B3"8J'%!9)KM!!#!S3"8L)8!!9#$4#k`IJ!+J'&!f$K
M!!53!'%!8)#"!&#)K!!!J+%!8)KP!!&3C%3ZX)%!cV#H!!#!J8$B1'3!"T!!B3"
-J'%!6)J$!!#!B3"-L)-!!A`$!hK3Jd3ZX'%!d,"q!!LJ(`!'+!!!!%##!&#J(`!
!S'%!cR`!'%""J!!JS"m!#+"K!0"m!"K!3B!!%+"r!!)S!`"A3))!*+"K!-k`I`!
!S'%!d,"r!!Ji!!!!X"i!!MJ!!!#`(J!+S(m!"MKM!!'`I`!'S'%!cV"K!%K)!!!
3S'%!5$KM!!'`B3")S)%!5&5$"lp!J[rXS!%!5,!"!%UJ!3"+X!%!dU!"!-kJB3$
5I'!B8,"K33L!B8$B1)-!#*!!J3"%J)%!4)KN!!"8B`Cc3B)!K+!"!0!S!!!)3B!
!(+"K!0*8B"JiN!!"33SiB!!"X'&""NJ!!(#JS3$3+!8!"%'!!"bJJ3$59)-31T!
!B8%+1!!!!V!"33C)!!"-S+%!d#J&!!*"J!!FS!%!dP3$#$b3!'&"#MKJ!!1`B8%
'5!!!++!"!0+3!!&"#MKJ!!#`B8%'5!!!&+"K!0+3!'&"#MJ!!!#`!8%'J'&!f$K
M!!L3!'%!3)"K!%#)!`!!9!-'-8'#!85!B8$B1!-!#*!!!3!m1)!!!S"K!$b)B`!
!9'!(IRb%!$"8J`3q1i-!!,1H!!3i(!!"9!-B1%J!fcQ!33!8N!"K!-#!B3$!+!-
!!%##!'#!B3$%1)!!!%J!$cPJ!!!!N!"K30L!B3$%5!!2b@!!!!"8B!Br3B)!,)"
K!-LJB`!'+!-!!%'#!"!iS!!6Q+%!c%J!"6JiB!!5Q'%!c%J!"5`iJ!!5Q)%!c%J
!"5")!3N9J%%!&)#K!-#3!'8!!$L!!!#!B3$!X)-!"$LFrrq!B3$!X)-!"S#"!-#
3!*i!&$J"!-#3!"i!%)"K!-3FR!!$I)3(0%J!$U&J!!!!N!"K30L!B3$%5!!2-@!
!!!"8C!Br3B)!,)#"!-LJ"!!'+!!!!%'#!"!iB!!6Q'%!c%J!"+!iB!!5Q'%!c%J
!"*3i!!!1Q!%!c%J!")JiI`!3N!"q!"#!B3$%1)!!!8J!$MeJ!!!!N!"K30L!B3$
%5!!1c@!!!!"8C!Br3B)!,)#"!-LJ"!!'+!!!!%'#!"!iB!!6Q'%!c%J!"$`iB!!
5Q'%!c%J!"$!i!!!2Q!%!c%J!"#5!B3$!1k-!#$YJ!!")!!"BJ'&!f$L$!!!iB`!
"N!"K30L)C!!!9'"%,V!G!!+!B8$B1!-!!C!!!8$BL'-!!&4M4#k`I3!%J)&!f$J
%!!'3!!&!f)J%!!"8!d3ZX(d!"MZp!!JlH`!"I"[J!%'!rkL!B3$%1)!!!8J!$A9
J!!!!N!"K30L!B3$%5!!1"@!!!!"8B`Br3B)!,)"K!-LJB`!'+!-!!%'#!"!iB!!
6Q'%!c%J!!h3iB!!5Q'%!c%J!!fJi!!!2Q!%!c%J!!eb!B8$BL'-!!,"K32SiB!!
"U!&!qRaM!$"mB`FdX'&"!+KK32SiB`!"X'&!rMJ!!!'SJ8$qI!-J-$J$rrq`!8%
#U'&"!$KM!!+`B8$m1'$rrl"K333i!!!!X!&!pR`%"c53!)&!mMLK-0H3!+&!j$X
K)0BlB!!!5!!!&(pMfhLBH3!!1cN!!6Yl!!'SJ8%!I"XJ!%'!rqLJJ3$5S'%!d(q
%'GBiI!!!5!$BAB""!"4mH4Yj3))!C)"K!-3iJ!!!5!!-C@!!!!"mB"YiN!!"30L
!B3$%5!!-m@!!!!"8B!Br3B)!,)"K!-LJB`!'+!-!!%'#!"!i!!!6Q!%!c%J!!Q!
iB!!5Q'%!c%J!!P3iB!!5Q'%!c%J!!NL62J!BNb&!h*-K31#S!8%)J'&!i(`!'&"
mB1)8N!"K31b!!8$JS'%!cRaJ'K53!'&!k)"K!-3iJ!!"5!!,e@!!!!#3!'&!f)"
K!-4)!!aPB!!!!&4J"Mp"JJ!XJ'%!b+"M!!BS!`!!3B)!%$J!!"1B!3$-5!!"e$K
J!"+BB3$-5!!"b$KJ!"#BB3$-5!!"[)"K30L)B`!!X'&!q+J"32JX!!!!3B)!D+K
K32L`B3!iJ'%!a+L"!$K)!!YCB!!!!*!!B8$BJ'%!a%J!#qPJ!!!!9'-'2d'#!#b
!B3$)S'-!"LJ$!!""JJ!31)!!%jL"!-a)!!&B1!!!%TJ"!-a)!!&-1'!!%CKK!-a
)!!&!J'%!a$L!!!&)!!VpB!!!!(aJ'hL3!!&!f)"K!-4)!!Z*B!!!!&4M"Mp"JJ!
XJ'%!b+"M!!BS!`!!3B)!%$KJ!"1BB3$-5!!!q$J!!"+B!3$-5!!!l$KJ!!@BB3$
-5!!!i$KK!-4)!!&PB!!!!&4M"Mp"JJ"JJ'%!a$L!!!&)!!U*B!!!!*!!B8$BJ'%
!a%J!#aPJ!!!!9'-'2d'#!#b!J3$)S'3!"LJ$!!""JJ!31'!!%jKK!-a)!!#)1'!
!%TKK!-a)!!"m1'!!%*KK!-a)!!"`J'%!a$L!!!")!!SYB!!!!*!!B8$BJ'%!a%J
!#VeJ!!!!9'8'2d'#!#b!J3$)S!3!"LJ!!!""JJ!31'!!%jKK!-a)!!!X1'!!%TK
K!-a)!!!J1'!!%TKK!-a)!!!8Iq2lH%[rj8eJ!!!!5!!!I)L"!-`S"!!63),Ri+#
r!!C8Sa!k5!$9PB""!"4mHKYj3))!&(rMqhK,rq8CB!!!!%J!!%L!R`"mJm3!!)"
r!(a)!0iKJ%%!&*0I!(`lB!!!5!!!')#I!(aABa!kIm3C,S2H!#!lH`!"S(m!"R`
E'!""J2rNIq2lH)!"39Ji)8&3I!J$TVS"rm"1J!!JI!J#TVi"rm#3!!%!#*3Kri"
mIaYiJQ0!&)0$3#!k2c!61YmJ%MTI!"##Sd!ZUb0!-UZM3$LU!d!fUi0!1UX$3$k
UJd!mUf0!3)VM3#a)!!'iL"-!!(mM"c4m!"J`IV8#&$Xj!!K)!!'-I`!(0(kq!$K
rJ!FdIV8%-(mmb&"r`!FdIS-(0(`!'!"!JJ!N1j!!!!%i!!!"Ii-(0(`$'$!l!rr
r1l3!!MYJrrp)!!&)Im!(0(k$"c3iB`!"I!!B!%'#!84rB!Fd,!$rrd##!#3iI`!
!Im!(0(b@!+j)!!&pB!!!!$Yq!!"Ae`Bq5!!"#(r!"c4rS`FdI!!B!%#"!!`iB!!
!5!!"3,2"!$Kr`!FdIk-(0(`!'!"!JJ"3Q[S!!$[E!!!l@J!"5!!!3(r$"c4r`!F
d9!!)2(`5!Ljm!`!!3))!$$KJ!!")!!$mIm!(0(`@!+kB'J!!Im!(0&3!#$ardJ+
Z1eS!!Ar!"c4qJ`FdI!!B!%'"rlKr`!FdI[B!VTVk!!"rS!Fd9!!)2(pb!bjrS!F
dI[B"VMZp!!&rS!Fd,!!3!$YD!!&!J3!-1'!!!%J!!*4rS!FdI`-(0(`!'$P!JJ!
BIk!(0#`!%!"!J!!-IaMU&$ZF!!'VB3!iIq2lH)bDrrp)!!"eB!!!!(`DL%""JIr
XIb!(0(q$"c4m!"J!3)$qE$Tc!!'SId!d1!2rrl!I3$4mB!Fe3B(q2**r3"56Ad!
JNVp!,V-r3$+c[d!iXjp!1V-I3$kcId"!Q[p!,$KJ!!'!!3#)1#%!J(`)!kDk!Ir
!6S!!))#M3"Ji"3!"N!!$3"LBK3!!J+0!')!$3#4m"3"!6))!))#M3#5!!d"'I!8
#&*!!!d!NJ+0!*)!$3#Km"3"!3)%!l+J$3%)X!!!#3B)!8%#!!"3X!!!!3B)!c%#
!!"K)!!$%,!!!"%'#!*K!J!#i5!!!B)$$3"bJS`!+S!-!$P3!%$Tm"3)8I!B#&*!
!!d!N1!!!!V!$3%*)!!#8J-0!(+#M!!UJ!`!19!!)2(`&!K4m"J)8N!!$3#5J!`!
19!!31T!!!d"'1!!!!l!$3%*)!!"JJ-0!(+#M!!UJ!`!1I!8#&(`'!K53!!0!*+!
$!!j8!!JmN!!$3%Bi!!!%X!0!3NJ!!$#!Sd!FS!-!#R`&!K53!!0!*+!$!!k3!!0
!4MJ!!!#`!d"#5!!!$$J!!!#`!d!dS+-!#S!$3#4m"3"3N!!$3"K1J!!JI!J#TVi
"rm#3!!%!#*3Kre"mIaYj1!!!!V!"!&a!JJ!-1'!!!%J!"0LLI`!!IR#EH%J!!!J
k%!!"9J!([d##rrLb!3"8SX%!9+*I!!K@``3q9N!%2Rm$!GDS(`!'X!%!@UJI!!U
`!3"H1'%!BML!!!!iS!!!10-!!$Mb!!")!0a4J%%!&)"K!'+!!3"QN!"K!%L3!!%
!6%J!rf'!33!8N!"K!&#!B3"3J'-!!$Lr!"!iJrri1!!!"R`*!kD%C!!)J!3!"*4
P!!L3!!8!"%)!rr#J"!!)X!8!#)"K!&")!2meJ%%!&',!J!#`(`!FJ'%!5)!"!%b
3!(m!(T!!(`!L1!!!!,!I!$Bi!!!)X"m!1$J!!!L`(`!m1!!!!E!I!$U!B3"LJ!%
!CT!!B3!mN!!"!%")!2l0J%%!&*!!B3"%J'%!4)"M!!!i[`"#1)2rq$J!!!Cm#31
QK'3!#)!%!!58C3!)N!!&!!4#!2r`S!3!#,!&!!L!B3"%5!$qSB""!"4L`)!!X"m
!6S"K!$b!!3"!N!"r!&#3!"m!9$J!!!#`(`"S1!!!#,!I!'Si!!!)X"m!EMJ!!!'
`(`"X1"m!&*!!(`"d1U!!!%J!!c#!I`"mIU!(0&3!%$TrS`!ZS[d!!+)p!!LVA3!
-9Z-%2PCJ"$jm!`"!3))!&&BM"$j@3!3qI!-!3%'#!PKr!m0i5!$2NB""!"4mH4Y
j3))!&(rMqhK,rpm9B!!!!%J!!Z4r2-YiU!%!A#`!!!*"JJ!B3)!!#%J!!+!X!!!
%3)!!Q%J!!&4r3!Fd,!$rrd##!#Jl`!!!5!!!&+J"!&kB(!!!1j`!!6[H!!&m(X!
!3B$rl%J!!+!l`!!!5!!!%*YF!!!lR!!"1pi!!A`H`!""J2r`5!!!J)#I!(aqS`F
d1!2rrP3!%$TmC!!ZJf-!'$[!!!")!!!BL"X!!*JF!!!lR!!"1pi!!6Yl!!&m(X!
!3B$rk%J!!%#!R`"mIU-(0$J$rrp8!"!kI'3!,S0M!"Jl`!!!5!!!')JE!!#B(!!
!1j`!!6[H!!%lH`!"I"l!!%'!rqLbi3!i5!!!%+"K!$Ji!`!"X!%!1+!"!$K8!!H
r3),rl+!"!$L`!3!kS!%!1V!"!'#J!3"JI"F!8,!"!&Km&l"3X!%!9U"p!!T@`!3
qI'-"eU!G!!*rJ`)8IjRL&)0p!"Kr3!Fd,!$rrd##!&`l`!!!5!!!4$U!!!")!!!
BL"X!!*JF!!!lR!!"1T3!!6Yl!!&qJ!Fd9Z-%2R`!'!""J2rJU!%!9RqF!K5S!3"
BIhX#&$[H!!&@)!3qI"i!!%'!rlK)!!"S1m!!!%J!!&3kJ!!!5!!!+)Kl!!"A3!B
qI!-!3%'#!!b)'`!!Q"`!!$ZF!!%lH`!"1T3!!Ak!"c4@i`3qI!!B!%'!rp#S!3"
@Ij`#&+J"!&KrH`)81pi!!9BJ"$jm(J!!3B$rU)"p!"K)!0B0J%%!&*-p!"LbI3!
!XPd!#+JG!!k`!3"F1!!!!,!G!!ii!!!!X"d!!MJ!!!#`(3!+Uem!$,0G!!ar3!F
d,!$rrd'#!'Kr!m0i5!$0#B""!"4mH4Yj3))!&(rMqhK,rpb0B!!!!%J!!&b623!
FIcc,H)0p!"Jl`!!!5!!!+)Kl!!"A3!BqI!-!3%##!!`i!!!"Q"`!!$ZF!!%lH`!
"1pi!!A`H`!""J2rB1V8!!AkM"c5S!3"DI!-!!%'!r-KrirYiJ!%!Z$JK!,"m#!1
QZJ(r`%k!!#"m#!+Q[i(rm*!!!3!)P#(rX*!!J3"XX+%!FMKJ!"K)!-aKJ%%!&(a
r'hP!JJ!-1'!!!%J!!&L!B3"XU)%!FNJ!d6Q!33!8I(iEH8'#!$ar`r0i5!$4RB"
"!"4r`r0i5!$6SB""!"4mI"YiJli!!*2I!"56[`!%Nlm!#(`GiK53!"m!$*1I!!"
rirYiJ!%!@$JK!&"m#!1QZi(rm%k!!#"m#!+Q[k(rp*!!!3!)P#(rX(ar'hNla!!
!3B)!%)JI!"!S!!!!3B)!$$KJ!!")!!"JJ"m!#(aJmK5!(`!-I!-!3%'!!$arirY
i5!!!p@!!!!#!(`!)I'$b&)!I!!am!`"!3B!!()!I!!b3!"m!#$J!!!'B(`!31'!
!!%J!!"5!I`!)J"m!#(`!mK53!"m!#)!"!&Ji)3"3I!J$TVZKrr41J!!J+!-!!%#
#!!`iB!!"6S!!))KM!""1J!!JI!J#TT2Krrb3!!%!#*3Krm"mIaYj3B)!A+JI!")
X!!!!3B)!1+Kr!"*)!0+aJ%%!&$J!!!#`(`!5J"m!"#J!!!""JJ!BJ(m!"%J!djQ
!33!81!!!!*!!(`!%J"m!&#J!!!""JJ!3J(m!&%J!e!Q!33!8J!%!5$JK!%"m#!1
QJq(rr%k!!#"m#!+Q[d(rk*!!!3!)P#(rS(ar'hP"JJ#NL"m!%#J!!!"!JJ#BJpm
!")1r!!L$A`!-J"m!!*!!!3!iUjm!%Rq!"c9"JJ"F5!!!))JG!!#B(J!!J'%!1$J
$rrq3!!%!1$Zp!!%lhJ!"I"h33%'!rq!iI!!!1)%!1$Lq!!")!0lPJ%%!&$YM!!"
rB!Fe3B)!((pJ"c3X!2rC3))!*%J!!!`i!!!!N!!"!$L!(`!%N!!I!!L!!3!iI"i
#&*!!(`!-J!%!D$JK!'"m#!1QZd(rk%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L
8)G+`1k-!!$[%!!!i!!!!I!$`3%##!!`iB!!05!!!b$J!!!#3!"i!!(qMkhK)!!$
9B!!!!(ar'hJX(`!!3B)!$(rMqhK)!!#J1(d!!$L"!$K)!!CYB!!!!#`$!!""JJ!
-1'!!!dJ!!)!iB3!i1)!!!6LJ!!3i`Mmd5!#je@!!!!!X!`!!3B)!$$KJ!!0)!!"
B1'%!1$L!!!#"R3"15!$qdB""!"3X!`!!3B)!$$KJ!!0)!!!d1'%Y1)#",1L"K!!
B5!$qVB""!"3X!`!!3B)!$$KJ!!0)!!!3J!%Y1*!!(J!!1'!!!)!",9Ji)5e3I!J
$TS2Krrb$`IriJk(rp%k!!#"m#!+QNq(rr*!!!3!)P#(rX(ar'hJi!!!!I!$i3%#
#!!`iB!B)5!!!D$Kr!!!iJ3!m5!!!r@!!!!!X!`!!3B)!$$KJ"J&)!!")1'!!"$L
I!#)iS!!"1-%!1%J!`ceJ!!!!,!-!!%'#!!`iB!!$5!!!))"K!$L!!3!mI!-!3%'
#!!`iB!B"5!!!#$KJ!!#!!3"B1#%!8(`)!kD$iIrm6S!!)*2Krrb6`Iri+!3!!%#
#!!`iB!!"5!!!E#J$!!"!JJ!-1'!!!8J!!&`l`!!!5!!!5)!&!!"8"L!fI!6`VR`
'!K53!!8!!)!&!!"8(`!'+"m!!%'#!"5!a3!!9q"'2Rc!!RL3!!8!!)!&!!"m!2K
iN!!&!!!lhJ!"I"iB3%'!rlJiB!!!Jq(rr)2"rrK1J!!JI!J#TT2Krrb6`IriN!!
"!!L8)Iq`1q-!!$[%!!!i!!!!N!!H!!#)(`!J,!!!!N'#!!K)!!3mL"m!)5`!!!"
"JJ!)5!!%*$KJ!#!iR`!!1,i!!%[rrb8X!`!!3B)!$$KJ!!&)!!3B1'!!!6LI!#!
i[J!!5rrr"5`$!!""JJ!-1'!!!8J!!rJiB!!"1*m!)6Lq!!",rrlP,!-!!%'#!!`
iB!!"5!!$f$KJ!!)iR`!Q1,i!!%[rrX8X!`!!3B)!$$KJ!!&)!!1i1'!!!MLI!#B
iS!!"1-%!2%J!`)eJ!!!!,!-!!%'#!!`iB!!"5!!$N!!iB!!"1*m!+$Lq!!",rrj
p,!-!!%'#!!`iB!!"5!!$F$KJ!!%iR`!S1+!!!6M"!$K)!-"&B!!!!#`$!!""JJ!
-1'!!!8J!!dL!!3!i+!!!)%#"!!`iB!!"5!!$0)"K!$`i!rrr9!2SrMKM!!'!!3!
iI!-!3%'#!!`iB!!"5!!$%$KJ!!%iR`!T1,i!!%[rrIdX!`!!3B)!$$KJ!!&)!!,
`J'%!1$LI!#Si[J!!5rrph5`$!!""JJ!-1'!!!8J!!Y#!B3!i1*m!8MLq!!",rrf
p,!-!!%'#!!`iB!!"5!!#X)"K!$JiR`"b1,i!!%[rrCdX!`!!3B)!$$KJ!!&)!!+
3!)!"!$K8!`Jm1*m!NMLq!!",rrej,!-!!%'#!!`iB!!"5!!#E$KJ!!)iR`$51,i
!!%[rr9NX!`!!3B)!$$KJ!!&)!!*-1'!!!MLI!0)iS!!"1-%!1%J![b&J!!!!,!-
!!%'#!!`iB!!"5!!#*)!"!$JS!!!!3B)!')"K!$Ji!rrr9!2SrMJ$!!&)!!!)1!!
!!*!!!3!iJ!%!1#J!!#"!J3!-1'!!!8J!!HL!B3!i1*m!e$Lq!!",rrc9,!-!!%'
#!!`iB!!"5!!"b$KJ!!)iR`$d1,i!!%[rr,8X!`!!3B)!$$KJ!!&)!!'S1'!!!ML
I!23iS!!"1-%!1%J![ReJ!!!!,!-!!%'#!!`iB!!"5!!"J)!"!$JS!!!!3B)!')"
K!$Ji!rrr9!2SrMJ$!!&)!!!)1!!!!*!!!3!iJ!%!1#J!!#"!J3!-1'!!!8J!!85
!B3!i1*m!pMLq!!",rr`a,!-!!%'#!!`iB!!"5!!"*$KJ!!)iR`%@1,i!!%[rr"%
X!`!!3B)!$$KJ!!&)!!%%1'!!!MLI!4BiS!!"1-%!1%J![GPJ!!!!,!-!!%'#!!`
iB!!"5!!!h)!"!$JS!!!!3B)!')"K!$Ji!rrr9!2SrMJ$!!&)!!!)1!!!!*!!!3!
iJ!%!1#J!!#"!J3!-1'!!!8J!!+#!B3!i1*m"'$Lq!!",rrZ0,!-!!%'#!!`iB!!
"5!!!J$KJ!!%iR`!S1+!!!6M"!$K)!,e9B!!!!#`$!!""JJ!-1'!!!8J!!&L!B3!
i1*m"1$Lq!!",rrY&,!-!!%'#!!`iB!!"5!!!1)"K!$JiR`&B1,i!!%[rqb8X!`!
!3B)!($KJ!!&)!!!B1'!!!8J!!"!iB!!"5!!!#$KJ!!#!!3"B1#%!8(`)!kD$iIr
mJm(rq%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Ik!1m-!!$[N!!#)(J!J,!!
!!N'#!!K)!!HFL"i!)5`!!!""JJ!)5!!(K$KJ!!%iRJ!J1+!!!6MI!**)!,b"B!!
!!#`$!!""JJ!-1'!!!8J!"h!iB!!"1*i!)6LJ!!%ih`#@5!#m@@!!!!!X!`!!3B)
!$$KJ!!&)!!G)1(i!!$L"!@",rrVCB!!!!#`$!!""JJ!-1'!!!8J!"bJiB!!%1*i
!)MLJ!!%i`3&F5!#p'@!!!!!X!`!!3B)!$$KJ!!&)!!F!J'%"A)!"!@"m!`"!3B)
!$$KJ!!&)!!ES1'!!!6LH!#NiS!!"1-%"@%J!Zp&J!!!!,!-!!%'#!!`iB!!"5!!
'`)!"!9JX!!!$3B)!3%#!!"`X!!!"3B)!,%#!!%!X!!!!3)!!'%J!!%3X!!!&3B)
!0%#!!$K)!!!F1k!!!%J!!$3lS!!"5!!!,$ZJ!!*)!!!N1k!!!dJ!!"`lS!!%5!!
!&$ZJ!!C)!!!-1'!!!8J!"P#6[bci1'!!!MLH!#BiS!!"1-%"9%J!Zc9J!!!!,!-
!!%'#!!`iB!!"5!!'*)!"!953!"mXp)!"!93S!!!!3B)!%)!"!93S!!%!3)%!$$K
J!!&)!!Am1'!!!6LH!#JiS!!"1-%"8%J!ZZ9J!!!!,!-!!%'#!!`iB!!"5!!&e$K
r!!!iRJ!UJCi!5NJ!pU'!33!8Iq2lH)#"!9!i[J"510m!QNJ!QfPJ!!!!,!-!!%'
#!!`iB!!"5!!&Q(rMqhL!J3&31,i!FMMI!,T)!*Y"B!!!!#`$!!""JJ!-1'!!!8J
!"A!iI`!!1*m!QMLK!8K)!*b0B!!!!#`$!!""JJ!-1'!!!8J!"8`iI`!!1*m!QML
K!8a)!*k&B!!!!#`$!!""JJ!-1'!!!8J!"5JiI`!!1)%"*%J!R[9J!!!!J'%"*)!
"!5L3!'%""*!!!3%)J'%",)!"!6#3!'%"$*!!!3%3J'%"0)!"!6L3!'%"&*!!!3%
BJ'%"2)!"!8#3!'%"(*!!!3%J1(m!!$L"!33iS3%N1-%""%J!QLPJ!!!!1(m!!$L
"!33iS3%N1-%""%J!QK&J!!!!1(m!!$LI!*SiS3%%1-%""%J!QIPJ!!!!1(m!!$L
"!33iS3&%5!#EV@!!!!!X!`!!3B)!$$KJ!!&)!!4X1(m!!$LI!,SiS3%!5!#GT@!
!!!!X!`!!3B)!$$KJ!!&)!!4)L(i!!8J!"&dX!rrr3))!$$KJ!!&)!!3`L(i!!8J
!"%@3!(m!hMKr!1)iRJ!!J,m!hN[rQS&J!!!!Iq2lH)#"!94rTHYiJ!%"8&3'#$`
irJ#514m"!NJ!#2eJ!!!!,!-!!%'#!!`iB!!"5!!$h$KJ!!)iRJ$51+!!!6MI!8*
)!,M&B!!!!#`$!!""JJ!-1'!!!8J!!l5!(`&#+!!!!%'#!"#!(`&#+!!"!%#"!!`
iB!!"5!!$P)"r!8)i!rrr9!2SrMKM!!%iRJ$81,m"4NJ!#K9J!!!!,!-!!%'#!!`
iB!!"5!!$C$KJ!!)iRJ$d1+!!!6MI!@a)!,K0B!!!!#`$!!""JJ!-1'!!!8J!!cb
!(`&X+!!!!%'#!"#!(`&X+!!"!%#"!!`iB!!"5!!$()"r!@`i!rrr9!2SrMKM!!%
iRJ$f1,m"F%J!#CeJ!!!!,!-!!%'#!!`iB!!"5!!#l$KJ!!)iRJ%@1+!!!6MI!CC
)!,I9B!!!!#`$!!""JJ!-1'!!!8J!!X5!(`'@+!!!!%'#!"#!(`'@+!!"!%#"!!`
iB!!"5!!#T)"r!CBi!rrr9!2SrMKM!!%iRJ%B1,m"QNJ!#59J!!!!,!-!!%'#!!`
iB!!"5!!#G)"r!A#!(`&dN!"K!0L3!!%!h)"r!AL!(`&mN!"K!1#3!!%!j)"r!B#
!(`'%N!"K!1L3!!%!l)"r!BL!(`'-N!"K!2#3!!%!p)!I!C!!N!!"!2LJ(`'8X!%
!r)"r!8D!(`&+N!"K!'L3!!%!E)"r!8k!(`&5N!"K!(#3!!%!G)"r!9D!(`&DN!"
K!(L3!!%!I)"r!9k!(`&LN!"K!)#3!!%!K)!I!@D3!!%!L+!I!@U`!3#-1'%!D$L
"!0JiS3#3!%J!R19J!!!!,!-!!%'#!!`iB!!"5!!"X)"r!CU!(`'HN!"K!%#3!!%
!4)"r!D+!(`'QN!"K!%L3!!%!6)"r!DU!(`'ZN!"K!&#3!!%!9)"r!E+!(`'fN!"
K!&L3!!%!A)!I!EU3!!%!B+!I!Ek`!3"N1'%!N!!iJ3"!1+%!2%J!TGeJ!!!!,!-
!!%'#!!`iB!!"5!!"2)!"!$`X!!!!3))!$$KJ!!&)!!%SIq2lH)#"!9!i[J%i10m
"`%J!PY&J!!!!,!-!!%'#!!`iB!!"5!!"!(rMqhL!J3&31,i"@$MI!H")!*DTB!!
!!#`$!!""JJ!-1'!!!8J!!0JiI`!!1*m"i$LK!$K)!*IeB!!!!#`$!!""JJ!-1'!
!!8J!!,5!(bci,!!!!d##!%#!!3!i,!!!!%'#!"!i!!!$N!!I!0T)!!#-J!%"4#`
!!!"!JJ!31!!!"*!!(`$D5!!!G$J!!!@3!"m!fNJ!!'L!!3%!,!!!!%##!%#!!3&
-,!!!!%##!"!i!!!"N!!I!0T)!!"%J!%"5#`!!!"!JJ!31!!!!*!!(`$D5!!!,$J
!!!+3!"m!fNJ!!#!i!!!#N!!I!0T)!!!81'!!!8J!!"!iB!!"5!!!#$KJ!!#!!3'
)1#%"J(`)!kD$iIrmJm(rq)1Krr41J!!JI!J#TT2Krrb6`IriN!!"!!L8)Ir!I(i
EH&I!"MiS!!!I3)!!&&I$"Mili`!#Iq2lH%J!!"3iBMmj5rr##@!!!!!iB2rrJ!%
!5$JK!%"m#!1QJq(rr)2"rrK1J!!JI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3
KrX"mIaYiN!#"!9`lK3!!1kB!!$[(!!!iI`!!1*d!!$LK!5")!*CjB!!!!#`$!!&
!JJ!-1'!!!8J!"#5!!3%J,!!!!%##!!`iB!!"5!!%%)#"!9b!C!!!J!3!"*!!B3$
JN!!"!15!C!!)J!3!$*!!B3$SN!!"!1b!C!!3J!3!&*!!B3$`N!!"!25!C!!BJ!3
!(*!!B3$iN!!"!2b!C!!JJ!3!**!!B3%!N!!"!35!C!!SJ!3!,*!!B3%)N!!"!3b
!C!!`J!3!0*!!B3%3N!!"!45!C!!iJ!3!2*!!B3%BN!!"!4`iI`!!1)%!i$LK!0a
)!(0*B!!!!#`$!!""JJ!-1'!!!8J!!fL!!3$F,!!!!%##!"3i!!!"N!!H!!!iB!!
!5!!$6)!I,2JX!!!$3))"M$Kr!!!iJ3%!1+%![%J!PJ&J!!!!,!-!!8##!!`iB!!
"5!!$($Kr!!!iJ3$J1+%!I%J!PGeJ!!!!,!-!!8##!!`iB!!"5!!#q)"m!!#!(!!
%N!"K!&b3!!%!B)"m!!L!(!!-N!"K!'53!!%!D)"m!"#!(!!8N!"K!'b3!!%!F)"
m!"L!(!!FN!"K!(53!!%!H$Kr!!!iJ3"m1+%!A$M"!*a)!*-GB!!!!#`$!!&!JJ!
-1'!!!8J!!T!!1(m!!$L"!1!iS3#F1-%!R%J!PS&J!!!!,!-!!8##!!`iB!!"5!!
#D)"p!!#!(3!%N!"K!$b3!!%!3)"p!!L!(3!-N!"K!%53!!%!5)"p!"#!(3!8N!"
K!%b3!!%!8)"p!"L!(3!FN!"K!&53!!%!@$Kr!!!iJ3#F1+%!2$M"!*a)!*+0B!!
!!#`$!!&!JJ!-1'!!!8J!!J!iI`!!1)%![$LK!*`i`3!i5!#41@!!!!!X!`!"3))
!$$KJ!!&)!!(BJ!%!1#`!!!"!JJ!-1!!!!8J!!!Ji!!!!N!!H!!")!!'d1(m!!$L
"!3!iS3$J1-%![%J!NKeJ!!!!,!-!!8##!!`iB!!"5!!"N!!iI`!!1)%"!$LK!,`
i`3#m5!#9J@!!!!!X!`!"3))!$$KJ!!&)!!&S1(m!!$L"!1!iS3"m5!#8+@!!!!!
X!`!"3))!$$KJ!!&)!!&%J(`!!)!F!!53!'%!A*!!!3"JJ(`!#)!F!!b3!'%!C*!
!!3"SJ(`!%)!F!"53!'%!E*!!!3"`J(`!')!F!"b3!'%!G*!!!3"i1(m!!$L"!1!
iS3"F1-%!R%J!N@PJ!!!!,!-!!8##!!`iB!!"5!!!h$Kr!!!iJ3"m1+%!R$M"!*a
)!*60B!!!!#`$!!&!JJ!-1'!!!8J!!,5!I3!!J"d!"*!!B3!mN!!"!%#!I3!)J"d
!$*!!B3"%N!!"!%L!I3!3J"d!&*!!B3"-N!!"!&#!I3!BJ"d!(*!!B3"8N!!"!&J
iI`!!1)%!R$LK!$`i`3#F5!#3!0PJ!!!!,!-!!8##!!`iB!!"5!!!6$Kr!!!iJ3#
m1+%!R$M"!$K)!)q&B!!!!#`$!!&!JJ!-1'!!!8J!!#5!!3!i,!!!!%##!!`i!!!
"5!!!#$J!!!#3!"i!!$KJ!!#!!3&)1#%"3(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!
!)(`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Iq`I(`EH*!!J3"X1kF!!$[)!!#
!B3"X1!2rre3$k2ili`!"1(`!!$LI!!!i[3!!10i!!%J!N!"PB!!!!#`$!!""JJ!
-1'!!!8J!!$!iI!!!1*m!!(bpqK3ihJ!J5!#3!$eJ!!!!,!-!!%'#!!`iB!!"5!!
!#$KJ!!#!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)(`)!UDr)IrNN!!
"!!L8)IqJ1d-!!$XN!!!lK3!!1(S!!$L"!$K)!*h"B!!!!#JC!!"!JJ!-1'!!!8J
!!*5!!3!iI"N!3%#!!!`iB!!"5!!!J$[jrrmlB!!!5!!!6&GM#$`i!`!%IlS#,M[
!!!")!!!NIlcjVM[rrrpAS`3q1!!!#&3!"$jmB!B`9"d%2M[H!!%S(J!#3)!!$#`
I!!"!J2r81hX!!B!D!!"m!0J!3B(rX%J!!"!i!!!!I"cjVM[rrrmX(`!!3)$rm$K
J!!#!!3"S1#%!B(`)!kDl)IrN6S!!),pKrq`i!`!"9"[iIP4m"riS!`!!3))!$$K
J!!&)!!%%+"X!)%#"!!`iB!!"5!!!p$[lrrmii!!!9qB)2$J'!!4mj3-Z1k!!!%J
!!#aAjJJm1!B!"(`&!Lj8"N!ZI!6SVRcQ!K4AjJJm1!B!"(cP!bil[3!"I"cS!%'
"rp3X(!!!3))!$$J!!!")!!!)1!!!!ArJq&")!!"%1m!!!%J!!$"AjJJm1!B!"(`
&!Lj8"N!ZI!6SVRcQ!K4AjJJm1!B!"(cP!bil[3!"1pi!!5JH!!*"J2r31rrrrb`
I!!"!J2qmNf8!!%J!!"#!a3!!1!Errj!!"3!!J-8!!$J'rrp8"JJm1!B!"(`&!Li
S!!!!3))!%)!&!!!X!!!!3B(rd$KJ!!#lBIrX6S!!)(`)!UD6iIrmNm(rq*1Krr5
6JIr`N!!"!!L8)Iq`1k-!!$[N!!#!(3!),!!!!8##!#!iI3!35!!KI@!!!!!X!`!
!3))!$$KJ!!&)!!-SJ"d!$#`!!!&!JJ!J1(d!%%J!)D&J!!!!,!-!!%'#!!`iB!!
#5!!$!$Kp!"!iR`!35!!HY@!!!!!lJ!!"J"d!"#`!!!&!JJ&B1pd!')JH!!#3!"m
!N!!lhJ!"J*m!N!#)IJ!!9'"%,Rb!!hL3!"m!N!!lhJ!"J*m!N!#)IJ!!9'##(Rb
!!hL3!"m!N!!lhJ!"J*m!N!#)IJ!!9'$!$Rb!!hL3!"m!N!!lhJ!"L"i!!*!!(`#
81pi!!B#I!*5)IJ!!9'"%,Rb!!hL3!"m!P$[H!!'!R`#8L(i!!&4JJKjmJ!0iN!!
I!*3lhJ!"J*m!P)Kq!!"8B-!1I)!$H*!!(`#81pd!))JH!!#3!"m!Q$[H!!'!R`#
BL(i!!&4J4#jmJ!0iN!!I!*JlhJ!"J*m!Q)Kq!!"8B))HI)!$H*!!(`#B1pi!!B#
I!*L)IJ!!9'$!$Rb!!hL3!"m!Q$[H!!')(J!!N!!I!*`lhJ!"J*m!R)Kq!!"8B%3
ZI)!$H*!!(`#F1pi!!B#I!*b)IJ!!9'##(Rb!!hL3!"m!R$[H!!'!R`#FL(i!!&4
J`!jmJ!0iN!!I!*`lJ!!$J"d!"#`!!!*!JJ#`J"d!##`!!!&!JJ!m1(d!'%J!(ke
J!!!!,!-!!%##!!`iB!!"5!!"@$Kp!#")!"q4B!!!!#`$!!"!JJ!-1'!!!8J!!6b
!(3!-,!!!!8##!$`iI3!B5!!IY@!!!!!X!`!!3B)!$$KJ!!*)!!%81(d!)%J!(jP
J!!!!,!-!!%'#!!`iB!!#5!!!q$Kp!"JiR`#3!%J!(+eJ!!!!1(d!)$LI!4")!"b
GB!!!!$Z!!!1!(3!!,!!!!8'#!,4AJaJi1m-!%(rGmK5)(J!!N!!I!!JlhJ!"J*m
!#)Kq!!"8B%3ZI)!$H*!!(`!)1pi!!B#I!!L)IJ!!9'##(Rb!!hL3!"m!#$[H!!'
!R`!)L(i!!&4J`!jmJ!0iN!!I!!JlhJ!"L"i!!*!!(`!-1pi!!B#I!!b)IJ!!9'"
%,Rb!!hL3!"m!$$[H!!'!R`!-L(i!!&4JJKjmJ!0iN!!I!!`lhJ!"J*m!$)Kq!!"
8B-!1I)!$H*!!(`!-J"d!!*!!(`!!J"d!"*!!(`!%1'!!!)!"!&Ji)3"3I!J$TS2
Krrb$`IriJk(rp)1"rr"1J!!JI!J#TT!!!3!)P#(r`*!!B3"BJ'%!@$L!!!!iS!'
3!%[rMGeJ!!!!J!%!5$JK!%"m#!1Q6S!!)(`)!UDr3IrSN!!"!!L8)Iq3!$[M!!!
l4!!!1k8!!$Z'!!!lB!!!J"m!!&3!"[G"JJ!F1f!!!B!I!!L3!!%!5)!I!!b3!!%
!6%J!!-Kr[ZYiL"i!!*!!!3")1pi!!B#"!%L)IJ!!9'"%,Rb!!hL3!!%!5$[H!!'
!J3")L(i!!&4JJKjmJ!0iN!!"!%JlhJ!"J)%!5)Kq!!"8B-!1I)!$H*!!!3")1pi
!!BJH!!#3!!%!6$[H!!'!J3"-L(i!!&4J4#jmJ!0iN!!"!%`lhJ!"J)%!6)Kq!!"
8B))HI)!$H*!!!3"-1pi!!B#"!%b)IJ!!9'$!$Rb!!hL3!!%!6)!I!!!X!!!#3))
!&)!"!%L3!!%!3)!"!%b3!!%!4)!I!!3X!!!"3))!9)!I!!"8!!Eh3B)!+)"K!%L
!(`#3!(aJ!RL3!!%!5)"K!%b!(`#8I'!#H*!!!3"-5!!!*)"K!%L!(`#BI'!#H*!
!!3")J'%!6)!I!*amB!*iN!!"!%b!(`!%,!!!!N##!%3X'`!!3))!)$KK!%JiR`!
31,m!N!!ih`%35!!B,@!!!!")!!!d1'%!5$LI!"!i[`#3!$MI!4")!"CGB!!!!%J
!!"JiB3")1*m!%$Ll!!")!!-9B!!!!)!I!!3X!!!"3))!9)!I!!"8!!Eh3B)!+)"
K!%L!(`#BI'!#H*!!!3")J'%!6)!I!*amB!*iN!!"!%a)!!!NJ'%!5)!I!*!!I'!
#H*!!!3")J'%!6)!I!*4mB!*iN!!"!%b!(`!!,!!!&%##!4#!!3")N!!I!!L!!3"
-N!!I!!`l`3!iJ'%!5*Kq!!!lhJ!"J!%!5&3!aMkB(J!!1pi!!B!"!%K8!)BqQ"i
!!$[H!!'!!3")9!"'2TJH!!!lhJ!"J'%!6*Kq!!!lhJ!"J!%!6&3!aMkB(J!!1pi
!!B!"!%a8!)BqQ"i!!$[H!!'!!3"-9!"'2TJH!!#)I3!!L!%!1(aJ!RLB(!!!L(d
!!BJ"!$PmB!*iQ"`!!BKp!!+)!3!kI'!#H*JF!!+)I3!$L!%!1haJ!RLB(!!$L(d
!")J"!$amB!*iQ"`!")Kp!!@)!3!pI'!#H*JF!!@)I3!'L!%!2RaJ!RLB(!!'L(d
!"iJ"!$pmB!*iQ"`!"dJ!!AL!(`!!,!!!!8'#!25!(`!!,!!!'%##!+ar[ZYiL"i
!!*!!(`!)1pi!!B#I!!L)IJ!!9'"%,Rb!!hL3!"m!#$[H!!'!R`!)L(i!!&4JJKj
mJ!0iN!!I!!JlhJ!"J*m!#)Kq!!"8B-!1I)!$H*!!(`!)1pi!!BJH!!#3!"m!$$[
H!!'!R`!-L(i!!&4J4#jmJ!0iN!!I!!`lhJ!"J*m!$)Kq!!"8B))HI)!$H*!!(`!
-1pi!!B#I!!b)IJ!!9'$!$Rb!!hL3!"m!$)"K!%L!(`!)I'!#H*!!!3")J'%!6)!
I!!amB!*iN!!"!%b!(`!!,!!!!N##!"5!!3"!N!!I!!L!!3"%N!!I!!arRZ0iJ'%
!5*Kq!!!lhJ!"J!%!5&3!aMkB(J!!1pi!!B!"!%K8!)BqQ"i!!$[H!!'!!3")9!"
'2TJH!!!lhJ!"J'%!6*Kq!!!lhJ!"J!%!6&3!aMkB(J!!1pi!!B!"!%a8!)BqQ"i
!!$[H!!'!!3"-9!"'2TJH!!!l[3!)1j`!#$GDrrp!J[YSJ!%!H$JK!("m#!1QZd(
rk%k!!##q!Ir!1m)rE)1$!!#$S`!%9k$K2R`!iRJm`!m21-B2$h`B-$KrR-*i9`!
J0Rqp!RKAKS3qI-$UH&3B"$jr[F*i9`#!(RqF!RKAS2#qI!ILH$c!-c-iaM-cI2J
`1(qF`RKA!"!kIld#H&H!`Mjm!1Ti2-!!rcM'!2pm'$!iIlh#H&F!3#jrR!*i9k$
iIR`!iRJm`&991-C99A`B-$KrR-*i9`!)2(qp!RKAJ"pq9iBB1(q!-K4AS"pq9kB
B1(qJ-K4mQ50i,!8!!%'#!rJl3!!!5!!$j&G!%$Tm'3!ZIjX#H$JD!!&8!"!kI0N
!,RqI-RKrGNC`9f!'1T!!!Iq`9YB'1PIJi6jAjZ!'Iq!b&)!"rl"m(J!ZIld#H$J
@!J"m(J!ZIld#H&GeK$jAG%Bq9V8'1PD8"MSi&33!I"i!,Rqp!RJi&!B!I"i!,Rq
p!RKrpNC`9qB'1T!!`Iq`9YB'1S$"rl!i"J%!I0i!,Rqp-RJi&J-!I"i!,Rqp!RK
ApB3q9r4'2PDe"MT@P!Bk1"8&!(`H!#jr[3*i1"3(!(`H!#jr[3*i1"S!!P3!%$T
m'3!ZIlX#H$JD!!08!"!kI"N!,Rqr!RKrFdC`9f!'1T!!!IqX9R-'1PIQi6jAi1!
'IqB#&)!"rkamhJ!ZIj`bH$J6!J"m(J!ZIj`#H&GbK$jAF8Bq9P)'1PBa"MSi%J3
!I"i!,RqF!RJi%3B!I"i!,RqF!RKrmdC`9q!'1T!!!IqX9R-'1S$"rk`iaJ%!I"i
`,RqF!RJi%`-!I0i!,RqF-RKAmS3q9r&'2PC5"MT@-3Bk1")&!(`H!#jrR!*i1"%
(!(`H!#jrR!*i1"S!"&3!%$Tmf3!ZIjXbH$JD!!98!"!kI0N!,RqI-RKrF%C`9f!
'1T!!!IqS9K!'1PIJi6jAjZ!'Iq!b&)!"rkKm(J!ZIld#H$J3!J"m(J!ZIld#H&G
JK$k3!!(rT&GQ4Mk3!-(rS)!"rk48!!BkN!!"rk5!`IqJ9-!'1T!!!IqJJ-(rT$J
'"!"m(J!ZIld#H)$"rk!i"JB!I"i!,Rqp!RKrm%C`9q!'1T!!!IqS9K!'1S$"rkJ
i"J%!I"i!,Rqp!RJi%!-!I0i!,Rqp-RKAi)3qN!!"rk4Ai%BqN!!"rk#!!IqN9!B
'1T!!`IqNJ!(rS&3!"MU3!!(rS)$"rk3i"J8!I"i!,Rqp!RL!`IqJ1!B(!(`H!#j
r[3*i10S!"P6!%$Tm'3!ZIlX#H$MD!!G8`"!kI"N!,Rqr!RKrB%C`N!!"rjKAB!B
kN!!"rjb!!IqB9!!'1T!!!IqB9qEK2PIJi!CrjJ)8J!(rR(cH!#jrR$*iJ-(rQ$J
'!J"m(J!ZIj`#H&GJK$k3!!(rP&GJ4Mk3!!(rN!#!!Iq89!!'1T!!!Iq8J!(rN!"
8"JBkN!$"rj!!J-(rP$J'"!"mhJ!ZIj`bH)$"rj!!1!B'!(cH!#jrR$*iIq"'F*!
!!IqB9qB'1T!!`IqFJ!(rQ&3!"MU3!!(rQ)$Krj`ia`%!I"i`,RqF!RL!`IqB1!B
$!(cH!#jrR$*i9q#%2T!!!Iq89q"'2T!!!Iq3!)!"rj48"JBkN!$"rj5!!Iq3!&3
!"MU3!!(rN!#!`Iq81!B&!(`H!#jrR!*iJ1(rN!!ia`F!I"i`,RqF!RJl@J!),"S
!)%'!r"a)!!681d!!(NJ!"-4A3"!kI"N!,RqE!RJi'J!"9!!31R`C!#jrR`*iIf"
'F*!!!Iq)9f!'1T!!!Iq-J!(rL&3!"MU3!!(rL&IQi6jAi1!'IqB#&)!"riam(J!
ZIld#H)$"riJi"J)!I"i!,Rqp!RKAB)3qN!!"ri4AB%BqN!!"ri#!!Iq%9!!'1T!
!!Iq%J!(rJ&3!"MU3!!(rJ)$"ri3i"J3!I"i!,Rqp!RL!`Iq!1!B'!(`H!#jr[3*
iIq"'F*!!!Iq)9q!'1T!!!Iq-J!(rL&3!"MU3!!(rL)$"ri`i"J%!I"i!,Rqp!RL
!`Iq)1!B$!(`H!#jr[3*i9q#%2T!!!Iq%9q"'2T!!!Iq!J!(rK&3!"MU3!!(rK)!
"ri"8!!BkN!!"ri#!`Iq%1!B&!(`H!#jr[3*iJ-(rJ$J'"`"m(J!ZIld#H$JDrrj
8!"!kI"N!,Rql!RJi'[rr9!!31R`C!#jr[`*iIf"'F*!!!Ipi9f!'1T!!!IpmJ-(
rH&6!"MU3!!(rH&IQi6jAi1!'IqB#&)!"rham(J!ZIj`#H)$KrhJia`)!I"i`,Rq
F!RKAB)3qN!!"rh4AB%BqN!!"rh#!`Ipd9-!'1T!!!IpdJ!(rF&3!"MU3!!(rF)$
"rh3i"J3!I"i!,RqF!RL!`Ip`1!B'!(cH!#jrR$*iIq"'F*!!!Ipi9q!'1T!!!Ip
mJ!(rH&3!"MU3!!(rH)$"rh`i"J%!I"i!,RqF!RL!`Ipi1!B$!(`H!#jrR!*i9q#
%2T!!!Ipd9q"'2T!!!Ip`J!(rG&3!"MU3!!(rG)!"rh"8!!BkN!!"rh#!`Ipd1-B
&!(`H-#jrR!*iJ-(rF$J'"`"m(J!ZIj`#H$JDrra8!"!kI"N!,RqE!RJi'[rp9!!
31R`C!#jrR`*iIf"'F*!!!IpS9f!'1T!!!IpXJ!(rD&3!"MU3!!(rD&IJi6jAjZ!
'Iq!b&)!"rfam(J!ZIld#H)$"rfJi"J)!I"i!,Rqp!RKAB)3qN!!"rf4AB%BqN!!
"rf#!!IpN9!!'1T!!!IpNJ!(rB&3'"MU3!-(rB)$"rf3i"J3!I"i!,Rqp!RL!`Ip
J1!B'!(`H!#jr[3*iIq"'F*!!!IpS9q!'1T!!!IpXJ!(rD&3!"MU3!!(rD)$"rf`
i"J%!I"i!,Rqp!RL!`IpS1!B$!(`H!#jr[3*i9qD%2T!!`IpN9q"'2T!!!IpJJ!(
rC&3!"MU3!!(rC)!"rf"8!!BkN!!"rf#!`IpN1!B&!(`H!#jr[3*iJ-(rB$J'"`"
mhJ!ZIldbH$JDrrT8!"!kI0N!,Rql-RJi'[rl9!!31R`C!#jr[`*iIfC'F*!!`Ip
B9f!'1T!!!IpFJ!(r@&3!"MU3!!(r@&IQi6jAi1!'IqB#&)!"ream(J!ZIj`#H)$
"reJi"J)!I"i!,RqF!RKACS3qN!$"re4AB%BqN!!"re#!!Ip89!B'1T!!`Ip8J!(
r8&3!"MU3!!(r8)$"re3i"J3!I"i!,RqF!RL!`Ip31!B'!(`H!#jrR!*iIq"'F*!
!!IpB9q!'1T!!!IpFJ!(r@&3!"MU3!!(r@)$"re`i"J%!I"i!,RqF!RL!`IpB1-B
$!(`H-#jrR!*i9q#%2T!!!Ip89q"'2T!!!Ip3J!(r9&3!"MU3!!(r9)!"re"8!!B
kN!!"re#!`Ip81-B&!(`H-#jrR!*iJ-(r8$M'"`"m(M!ZIj`#H$YDrrJX'J!!3B(
l2&HQk2jAS1J%IkB#&&H'k2jAJ1J%IiB#&&H!q(jm"qTi2-"996M'999mpc!iIlf
kH&EJ#$arR!*i9kE#2Rc!iRJm`!$r1-B!rh`A-$KrR,Ti9Z"!,Rqp!RKAJ2#qI!$
UH$c!-c-iaM-cI"F`1(qpZRK@i"!kIj`#H&HJK$jm"Z*i90F%2RqFZRK@i)!HIld
#H&H!i6jm"qTi2-!2$cM'$`pmpc!iIlfkH&EJ)$CrR!*iNk-!!*1$!!5k!Ir!6S!
!),i"rm!l`MpXJi-!!)1M!!4AKKpq9i!B1(q'!K4ATKpq9k!B1(qQ!K4mQ50i,!8
!!%'#!lJl3!!!5!!$T&G!%$Tmf3!ZIjXbH$JD!!&8!"!kI0N!,RqI-RKrH%C`9f!
'1T!!!Iqi9aJ'1PIJi6jAjZ!'Iq!b&)!"rlKm(J!ZIld#H$JB!J"m(J!ZIld#H&G
hK$jAGNBq9[F'1PE@"MSi&`3!I"i!,Rqp!RJi&JB!I"i!,Rqp!RKrq%C`9q!'1T!
!!Iqi9aJ'1S$"rlJi"J%!I"i!,Rqp!RJi'!-!I0i!,Rqp-RKApi3q9rC'2PEh"MT
@eJBk1"F&!(`H!#jr[3*i1"B(!(`H!#jr[3*i1"S!!P3!%$Tm'3!ZIlX#H$JD!!0
8"K!kI"N`,Rqr!RKrG8C`9f!'1T!!!Iqd9V8'1PIQi6jAi1!'IqB#&)!"rl4m(J!
ZIj`#H$J9!J"m(J!ZIj`#H&GdK$jAFdBq9T3'1PCc"MSi&!3!I0i!,RqF-RJi%`B
!I"i!,RqF!RKrp8C`9qB'1T!!`Iqd9V8'1S$"rl3i"J%!I"i!,RqF!RJi&3-!I"i
!,RqF!RKAp)3q9r0'2PD8"MT@F`Bk1"3&!(`H!#jrR!*i1"-(!(cH!#jrR$*i1"S
!"&3!%$Tmf3!ZIjXbH$JD!!98!"!kI"N!,RqI!RKrFNC`9f!'1T!!!Iq`9P)'1PI
Ji6jAjZ!'Iq!b&)!"rl"m(J!ZIld#H$J5!J"m(J!ZIld#H&GaK$jAF%Bq9M%'1PB
3"MSi%33!I"i!,Rqp!RJid!B!I"i`,Rqp!RKrmNC`9q!'1T!!!Iq`9P)'1S$"rl!
iaJ%!I"i`,Rqp!RJi%J-!I"i!,Rqp!RKAmB3q9r"'2PBa"MT@%!Bk1"%&!(`H!#j
r[3*i1"!(!(`H!#jr[3*i1"S!"P3'%$Tm'6!ZIlX#H$JD!!G8"K!kI"N`,Rqr!RK
rB%C`N!!"rkKAB!BkN!!"rkb!!IqS9!!'1T!!!IqS9q$K2PIQi!Cri$)8J!(rV(`
H!#jrR!*iJ-(rU$J'!J"m(J!ZIj`#H&GJK$k3!!(rT&GJ4Mk3!!(rS)!"rk48!!B
kN!!"rk5!!IqJ9!!'1T!!!IqJJ-(rT$J'"!"m(J!ZIj`#H)$"rk!i"JB!I"i!,Rq
F!RKrjNC`N!$"rkKAi!BkN!!"rkb!!IqS9!!'1T!!!IqSJ-(rV$J'!3"m(J!ZIj`
#H)$"rkJi"J-!I"i!,RqF!RKAi)3qN!!"rk4Ai%BqN!!"rk#!!IqN9!!'1T!!!Iq
NJ!(rS&3!"MU3!!(rS)$"rk3i"J8!I"i!,RqF!RL!`IqJ1!B(!(`H!#jrR!*i1eS
!##`D!#""J2aF5!!%e$Y!!"j)!!6%9d!31R`C!#jrQ`*i1"S!!93!%$Tm'3!ZIjm
#H(pJ4R#3!!(rQ&GJ"MU3!!(rR)!"rjK8!!BkN!!"rjKAjZ%q9q$J"RrQ!K5!!Iq
FI"i!,Rqp!RL!`IqB1!B#!(`H!#jr[3*i9f#%2T!!!Iq89f"'2T!!!Iq3!)!"rj4
8!!BkN!!"rj5!!Iq3!&3!"MU3!!(rN!#!`Iq81!B%!(`H!#jr[3*iJ-(rN!!i"JB
!I"i!,Rqp!RKri%C`N!!"rjKAi!BkN!!"rjb!!IqB9!!'1T!!!IqBJ-(rR$J'!3"
m(J!ZIld#H)$"rjJi"J-!I"i!,Rqp!RKAi)3qN!!"rj4Ai%BqN!!"rj!!J!(rP&3
!"MU3!!(rP)!"rj!!9!!'1T!!!Iq3!)$"rj3i"J8!I"i!,Rqp!RL!`Iq3!$J'"`"
m(J!ZIld#H$JDrrj8!"!kI"N!,Rql!RJi'[rr9!!31R`C!#jr[`*iIf"'F*!!!Iq
)9f!'1T!!!Iq-J!(rL&3!"MU3!!(rL&IQi6jAi1!'IqB#&)!"riam(J!ZIj`#H)$
"riJi"J)!I"i!,RqF!RKAB)3qN!!"ri4AB%BqN!!"ri#!!Iq%9!!'1T!!!Iq%J!(
rJ&3!"MU3!!(rJ)$"ri3i"J3!I"i!,RqF!RL!`Iq!1!B'!(`H!#jrR!*iIq"'F*!
!!Iq)9q!'1T!!!Iq-J!(rL&3!"MU3!!(rL)$"ri`i"J%!I"i!,RqF!RL!`Iq)1!B
$!(`H!#jrR!*i9q#%2T!!!Iq%9qC'2T!!`Iq!J!(rK&3'"MU3!-(rK)!"ri"8!!B
kN!!"ri#!`Iq%1!B&!(`H!#jrR!*iJ-(rJ$J'"`"m(J!ZIj`#H$MDrra8`"!kI"N
!,RqE!RJi'[rp9!!31R`C!#jrR`*iIf"'F*!!!Ipi9f!'1T!!!IpmJ!(rH&3!"MU
3!!(rH&IQi6jAi1!'IqB#&)!"rham(J!ZIld#H)$"rhJi"J)!I"i!,Rqp!RKAB)3
qN!!"rh4AB%BqN!!"rh#!!Ipd9!!'1T!!!IpdJ!(rF&3!"MU3!!(rF)$"rh3i"J3
!I"i!,Rqp!RL!`Ip`1!B'!(`H!#jr[3*iIq"'F*!!!Ipi9q!'1T!!!IpmJ!(rH&3
!"MU3!!(rH)$"rh`i"J%!I"i!,Rqp!RL!`Ipi1-B$!(`H-#jr[3*i9q#%2T!!!Ip
d9q"'2T!!!Ip`J!(rG&3!"MU3!!(rG)!"rh"8!!BkN!!"rh#!`Ipd1!B&!(`H!#j
r[3*iJ-(rF$J'"`"m(J!ZIld#H$JDrrT8!"!kI"N!,Rql!RJif[rl9-!31R`C!#j
r[`*iIf"'F*!!!IpS9f!'1T!!!IpXJ!(rD&3!"MU3!!(rD&IQi6jAi1!'IqB#&)!
"rfamhJ!ZIj`bH)$"rfJi"J)!I"i!,RqF!RKAB)3qN!!"rf4AB%BqN!!"rf#!!Ip
N9!!'1T!!!IpNJ!(rB&3!"MU3!!(rB)$"rf3i"J3!I"i!,RqF!RL!`IpJ1!B'!(`
H!#jrR!*iIq"'F*!!!IpS9q!'1T!!!IpXJ!(rD&3!"MU3!!(rD)$"rf`i"J%!I"i
!,RqF!RL!`IpS1!B$!(`H!#jrR!*i9q#%2T!!!IpN9q"'2T!!!IpJJ!(rC&3!"MU
3!!(rC)!"rf"8!!BkN!!"rf#!`IpN1!B&!(`H!#jrR!*iJ-(rB$J'"`"m(J!ZIj`
#H$YDrrJX'J!!3B(l2&HQk2jAS1J%I!B#&*!!!`!!9i$SrPH'k!4m!$)8N!!$!!5
k!Ir!6S!!)(`)!UDrBIrXN!!"!!L8)Iq`I(XEH*!!J3"XN!#K!(#3!-%!G)2l!!#
$f`!%9m$K2R`!qRJmB!m21'-2$h`G'$KrrqTi9k!J0RrH!RKAi)3qI!$bH&3G"$j
rhZTi9k#!(Rrr!RKA`2#qI!$kH$aJ-c-iBc-cI"dB1(rrkRKAS"!kIpi#H&IJ`Mj
m!2*i2'!!rcKM!2pm(4JiIplUH&HJ3#jrr`*i9m$iIR`!qRJmB&991'099A`G'$K
rrqTi9k!)2(rH!RL6q`!!NpX!"(pMfhL!J3"X1+!!!8[rpNerBpYiJ)%!F$LJ!!"
,rrBpIf2EH)#"!(3iS!!"5rrf,B2l!!#$f`!%9m$iIR`!qRJmB&991'099A`F'$K
rrq*i9i!)2(rH!RKAi-)qI!$bH$aJ!2miB`$rI"`B1(rHiRKAJ%!ZIrm#H&I!m,j
m!2Ti2'!c-cKM-c0m("JiIrrLH&H!%$TrhJ*i9q#%2R`!mRK8(!3qIplLH&H!J"j
rr`*i9m$K2R`!qRJmB!m21'-2$h`F'$Krrq*i9i!J0RrH!RL6q`!!NpX!")!"!&J
i)3"3I!J$TVYKrqa1J!!JI!J#TVpKrqb3!!%!#*3Krl"mHaYiN!#"!'b3!+%!F*!
!`3"dJrX!!)2E!!4A`1%qI!$kH$aJ$`miB`m2I"dB1(rrkRKAS#!fIpi#H&IJK$j
m!2*i9"d%2RrHkRKAS)!HIrm#H&I!m,jm!2Ti2'!c-cKM-c0m(4JiIrrUH&HJ%$T
rhJ*i9q$#2R`!mRJmB!$r1'-!rh`G'$KrhZTi9k"!,Rrr!RKA`2KqI!$kH$aJ998
iBe99I"dB1(rrkRKAS!JmIpi#H*2l!!#6f`!%If2EH)#"!(3iS!!!5rrdQApMfhL
!J3"`1+!!!8[rp)PrBpYiJ)%!E$LJ!!",rr4jJrX!!)2E!!4A`2KqI!$kH$aJ998
iBe99I"`B1(rriRKAJ!JmIpi#H&IJ`Mjm!2*i2'!!rcKM!2pm("JiIplLH&H!3#j
rr`*i9m$`[R`!qRJmB$-c1'-c-h`F'$Krrq*i9i!31RrH!RKAi)3qI!$bH&3F"$j
rhZ*i9i#!(Rrr!RKA`1%qI!$kH$aJ$`miB`m2I"`B1(rriRKAJ#!fIpi#H*2l!!#
6f`!%J!%!@$JK!&"m#!1QZf(rl%k!!##qiIrF1`*(E$VL6famQ50iLq-!!$KM!!'
)S`!!9+"%,Rrr!hJiB`!"L+-!!&5JJKjrr`0i1'-!!BLM!!"8S-!1Irm$H$KM!!'
,``!!1'-!!BLM!!"8S%3ZIpi$H$KM!!')S`!!9+##(RrH!hJiB`!"L+-!!&5J`!j
rhJ0i9m$K2R`!qRJmS!m21+82$h`F+$Krrq*i9i!J0RrH!RKAi*!!'R`!qRKd(-c
-9i9d[RrJiRKm[`*i9m#3!"Tm!2*iG"c-c&H&G,jr`1*iI,i#H&I!q(jm!2Ti2+"
996LP999m(#JiIrrLH&H!#$arhJ*i9q$#2R`!mRJmS!$r1+8!rh`F+$KrhZ*i9i"
!,Rrr!RKA`2KqI!$kH$bJ998iT999I"`S1(rriRKAJ!JmIpi#H&I!"#j6`))H8m#
'2R`H!hK6rZ%19rm"2MYJ!!")!!%SI"IBVR`!"h9"JJ!J9qA`[PIJd!Tm[`0i9mA
`[PI!d!Tm[J0i5!!!(&IPq(jAi0J)I,m$H&I&q(jA`0J)I,i$H&Ir!6jAhJ%q9q"
II&2JCrj6i&Di9!831MJ&!`"m'!!Z9q@@YP2PRcj8T4!k1+8#!(ci+#jAjFkk8qA
A[P5P%$SiT3%!I0JS,PIP&MTmZ#JZI-8VH(cP+hKm'LYi9m"@YP2!Acj8"4!k1!8
(!(bi!#jAaTik1!B'!(`B!#jAaKBk1-B%!(ci-#jAaXDk8mE2[P6'%$SiaJ8!I0J
`,RcQ-hKm!$0iI,`$H&GG"$j6RB!H9k8A[PHJ%$Tm"3)8N!!C!!!l13!%9jd!(P0
GK$jAT6Dq9k!`-R`&!K53!"N!!$Xj!!3lH`!","X!%%'!rYLkiIrF6S!!)*2Krrb
6`Iri1m*2I$[J!!")!!!NI)2iVR`$q+jm(J#ZI!3!3%'#!!`iB!!!5!!!&$[r!!%
S(`!)3B$rh$KJ!!'$iIrmJm(rq%k!!##r3IrS1d*3I$[#8)L)!`!!N!!"rq!iB`!
"J+(ri)L$!!"8J%3ZI+!$H*!!!IrJ1'-!!B#Krq#)J`!!9)##(RbJ!hL3!!(ri$K
M!!'!SIrJL)-!!&5!`!jmS!0iN!!"rq!iB`!"L!-!!*!!!IrN1'-!!B#Krq5)J`!
!9)"%,RbJ!hL3!!(rj$KM!!'!SIrNL)-!!&5!JKjmS!0iN!!"rq3iB`!"J+(rj)L
$!!"8J-!1I+!$H*!!!IrNJ!(ri$b!r[miK2lqI!!J1*!!!IrJJ!(rj$b!r[miK2l
qI!!J1*!!!IrNJ)(ri)!"rq4m"!"!3))!5$[J!!")!!!d9q!)2(`D!Lj8(B!H9q!
)2(`D!Ljr[30iJ!(ri(`!k%"!JJ!-1'!!!8J!!)3lr`!","m!"N'!rma)!!"`1q!
!!%J!!'"Ai"!kI"i#,P3FJ"jAi"!kI"i#,RqF!hKAj"!k1!3!!R`H!Lj8'i!H9q3
31MJ%!!*m(J)ZIhX$H)!"rq"m!1"!3))!')!"rq4m!0K!3))!$$KJ!!&)!!!81rm
!!5`I!!T"J2qJ1'!!!,Y"rqK1J!!JI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3
Kri"mRL0iN!#K!+!i!!!!I"i!3%##!!`iB!)&5!!$")1K!+!S(3!!3))!$$KJ!!9
)!!,`1!!!!*!!(3!!J"i!!#J!!!Y"J3()1'*3X&3!%$TmB`!ZI'N$TNk!"#!i!!!
!N!!"!$`i!!!"N!!"!$L!(J!-+!!!!8'#!D!iB!)%5!!#T$J!!!#3!!%!2$J!!!+
3!!%!1)!H!!`S!!!#3B)"I$KJ!J4)!!+!1!!!!*!!!3!m1!!!'*!!!3!iJ"i!$#J
!!!*"JJ&B1'!#"%J!!P`i!!!!N!!"!$`i!!!8N!!"!$L!(J!-+!!!!N'#!63iB!)
%5!!#1$J!!!+3!!%!2$J!!!'3!!%!1)!H!!`S!!!$3B)"%$KJ!J4)!!)81!!!!T!
!!3!m1!!!!T!!!3!iJ"i!$#J!!!4"JJ$X1'!#"%J!!I!i!!!#N!!"!$`i!!!BN!!
"!$L!(J!-+!!!"%'#!-JiB!)%5!!"c$J!!!+3!!%!2$J!!"53!!%!1)!H!!`S!!!
%3B)!T$KJ!J4)!!'S1!!!!C!!!3!m1!!!!C!!!3!iJ"i!$#J!!!0"JJ#!1'!#"%J
!!B3i!!!"N!!"!$`i!!!#N!!"!$L!(J!-+!!!"%'#!&`iB!)%5!!"B$J!!!'3!!%
!2$J!!"L3!!%!1)!H!!`S!!!%3B)!1$KJ!J4)!!%m1!!!!C!!!3!m1!!!&*!!!3!
iJ"i!$#J!!!4"JJ!81'!#"%J!!4JiB!)!5!!"%)!H!!3X!!!"3B)!&%#!!#JX!!!
!3)!!&%J!!"`i!!!"N!!"!%")!!!B1!!!!*!!!3"!5!!!$$KJ!J0)!!$8J"i!##`
!!!&"JJ!J3)!!+#`!!!"!J!!)5!!!($J!!!#3!!%!4%J!!"Ji!!!"N!!"!%4)!!!
-1'!#!dJ!!*Jli!!!5!!!-&IM'$Ji!3!i1'-!%(aJ'K4Aj"Ji1)3!%(bH)K3iS!!
)5rpS2@!!!!!lr`!"J"i!$(`I!%""J2r-1'%!1$LG!!4,rpPeB!!!!(am'hJX(!!
!3B)!,#`F!!&!JJ!-1'!#!NJ!!#`X(!!#3))!$$KJ!J&)!!!F1'!!!dJ!!"3mB%9
$1'085j!!I3!!1'!!!)!"!)Ji)3#!I!J$TS2Krrb$`IriJk(rp)1"rr"1J!!JI!J
#TT2Krrb3!!%!#*3Krm#3!)%!A)2K!&`S(`!!3))!$$KJ!!9)!!")J(m!!$`$ZVd
S!&4,3B)!)$Kr!!!iJ!!!1+!"P%[rDNeJ!!!!1'!!#NJ!!"`iI`!%5rrF3@!!!!!
i!!!!N!!I!!!iB!!!J!%!5$JK!%"m#!1QJq(rr%k!!#"m#!+Q[f(rl*!!!3!)P#(
rX$[%!!!lC3!!1kB!!$Z(!!"rhr0i+"m!!%##!!`iB!!&5!!!d)"r!!!m!lUp+!"
85d'#!#!iI`!!1)!!!$LJ!C4,rfR"B!!!!$KJ!!T)!!#N+"d!!%##!!`iB!!!5!!
!P$J!!!"m'`"!3))!)$Kq!!!iJ!!!1+!"P%[rDBPJ!!!!1'!#"dJ!!'aAS!Gr3B)
!)$Kq!!!iJ!!!1+!"P%[rD@9J!!!!1'!!"%J!!%Ji!!!!I"`!3%##!#!iIJ!!1)!
!!$LJ!C4,rfNpB!!!!$KJ!JC)!!!J1(m!"&HNk2iiZ`!!10`!!%[rfePJ!!!!1'!
!!)!"!&Ji)3"3I!J$TVYKrqa1J!!JI!J#TVpKrqb3!!%!#*3Kri!lB`!!1k3!!$Z
!!!!l`!!!1!!!!*!!!3"%1!!!!C!!!3")1!!!!C!!!3"-1!!!#*!!!3"31!!!!*!
!!3"81!!!#j!!!3"B1!!!#j!!!3"F1!!!#*!!!3"J1(d!!$L!!!!iS!"%5rpSN@!
!!!!iH`!!1)%!3%J!FP&J!!!!Ij`EH)!"!%!X!!!!3B)"*$Kl!!!iJ!!!1+%!2%J
!FdPJ!!!!Ij`EH$[J!!")!!#%1(X!!$LI!!%iS3!i5!"c+@!!!!"rR"YiJ'%!2)!
"!$K8!"!kI!$bH(aJ!RL3!!%!2&IPm2TmR5JZJ!%!2&3!%$SiB3"%I!-!,P3$"lj
Ai!lmI'!!-(b!!RKm(5NZJ!%!2&3!%$SiB3"%I!-!,P3Hm,k!!3!mI!!@F*!!!3!
m1rm!!B"K!%!i!rrrI"m!!%'!rh4)!!"JJ!%!2(`!mRL3!!%!2&IPm2TmR5JZJ!%
!2&3!%$SiB3"%I!-!,P3$"ljAi!lmI'!!-(b!!RKm(5NZJ!%!2&3!%$SiB3"%I!-
!,P3Hm,k!!3!mI!!@F*!!!3!m1rm!!B"K!%!i!`!"I"m!!%'!rjKrJq0iJ!%!L$J
K!)"m#!1QZf(rl%k!!#"m#!+Q[f(rl*!!!3!)P#(r3$[$!!!lT!!!1i8!!$YQ!!!
li!!!1(i!!$LG!!!iS3!m5!"Ni@!!!!"rraYi1(i!!$LG!#!iS3!i5!"Nb@!!!!"
rraYiJ!%!2#`!!!"!JJ#BJ!%!1#`!!!"!JJ#-J(`!!)!F!!53!(X!!*!!'`!%J(`
!#)!F!!b3!(X!#*!!'`!-J(`!%)!F!"53!(X!%*!!'`!8J(`!')!F!"b3!(X!'*!
!'`!FJ(`!))!F!#53!(X!)*!!'`!NJ(`!+)!F!#b3!(X!+*!!'`!XJ(`!-)!F!$5
3!(X!-*!!'`!dJ(`!1)!F!$b3!(X!1*!!'`!mIq2lH%J!!X!iIJ!!1*`!!$LK!$a
)!'34B!!!!(rr'hJiIJ!!1*`!)$LK!$K)!'2jB!!!!(rr'hL!!3!m,!!!!%##!*L
!!3!i,!!!!%##!)b!I3!!J"d!"*!!H`!!N!!E!!5!I3!)J"d!$*!!H`!)N!!E!!b
!I3!3J"d!&*!!H`!3N!!E!"5!I3!BJ"d!(*!!H`!BN!!E!"b!I3!JJ"d!**!!H`!
JN!!E!#5!I3!SJ"d!,*!!H`!SN!!E!#b!I3!`J"d!0*!!H`!`N!!E!$5!I3!iJ"d
!2*!!H`!iN!!E!$arirYi5!!"m$Kq!!!iR3!!1,`!!$M"!$a)!'"*B!!!!(rr'hL
!!3!m,!!!!%##!(3iIJ!!1*d!)$Lm!#!i`3!m5!"J)@!!!!"rraYiJ!%!2#`!!!"
!JJ!J1(i!!$LG!!!iZ`!!5!!"T@!!!!"rraYi5!!"J$Kq!!!iQ`!!5!"Mr@!!!!"
rraYi1(i!!$LE!#")!'2TB!!!!(rr'hK)!!&81(i!!$LF!!!i[3!!1-%!J%J!C"&
J!!!!IrmEH$Kq!!!iJ3#!1+%!J%J!B$&J!!!!IrmEH$Kq!!!iR!!J1,d!)$M"!'"
)!'2GB!!!!(rr'hJiIJ!!1)%!J$LK!'!i`3"J5!"N'@!!!!"rraYi1(i!!$L"!'!
iS3#!5!"Lc@!!!!"rraYi1(i!!$L"!)!i[3!!1-%!J%J!BieJ!!!!IrmEH$Kq!!!
iJ3#!1,`!!$M"!)")!'0aB!!!!(rr'hJiIJ!!1*d!!$LK!)!i`3"!5!"M9@!!!!"
rraYi1(i!!$L"!'!iS3"!1-%!B%J!Bj&J!!!!IrmEH)"K!)#!!3#%N!"l!!#3!"X
!")"K!)L!!3#-N!"l!!L3!"X!$)"K!*!!J!%!P*!!H`!3N!!E!"5!B3#BJ!%!R*!
!H`!BN!!E!"`iIJ!!1)%!B$Lp!#!if`!J5!"Lh@!!!!"rraYiIq2lH)!"!-Ji)3$
!I!J$TVYKrqa1J!!JI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3Kre!l``!!1k3
!!$Z&!!!li!!!1(i!!$LG!#!iS3#B5!"K&@!!!!"rraYiJ!%!Q#`!!!"!JJ!d1(i
!!$LF!!")!')CB!!!!(rr'hJiIJ!!1*`!)%J!BJ9J!!!!IrmEH(rMqhK)!!(S1(i
!!$LG!#!i[3!J1-%!H%J!A[9J!!!!IrmEH$Kq!!!iJ3"i1+%!H%J!ANPJ!!!!Irm
EH$Kq!!!iR3!!1+%!@%J!B4eJ!!!!IrmEH$Kq!!!iJ3"B1+%!@$M"!$K)!&kTB!!
!!(rr'hJiIJ!!1)%!@$LK!$Ji`3"B5!"HM@!!!!"rraYiJ(i!QS!H!*k3!'%!1*!
!!3!mJ(i!SS!H!+D3!'%!3*!!!3"%J(i!US!H!+k3!'%!5*!!!3"-J(i!XS!H!,D
3!'%!8*!!!3"81(i!!$L"!&JiS3!i1-%!@%J!AM&J!!!!IrmEH$Kq!!!iJ3"i1+%
!@$M"!&K)!''KB!!!!(rr'hJiIJ!!1)%!@$LK!(K)!'"9B!!!!(rr'hJiIJ!!1)%
!H$Lp!!!i`3"i5!"K&@!!!!"rraYi1(i!!$L"!(Ji[3!!1-%!H%J!B2PJ!!!!Irm
EH$Kq!!!iR3!!1+%!H$MF!!")!'$GB!!!!(rr'hJiIJ!!1)%!@$Lm!!!i`3"B5!"
K'@!!!!"rraYiJ'%!H)!"!(b3!(`!!*!!(!!%J'%!J)!"!)53!(`!#*!!(!!-J'%
!L)!"!)b3!(`!%*!!(!!8J'%!N!#!!3#8N!"m!"L3!"`!($Kq!!!iJ3"B1,d!)$M
F!#")!'"PB!!!!(rr'hKrirYiJ!%!Z$JK!,"m#!1QJq(rr)2"rrL$SIrdJi(rm%k
!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(rX$Z$!!!lT!!!1m8!!$[J!!!
iI!!!1*d!!$LK!$K)!&k4B!!!!(rr'hL!!3!i,!!!!%##!$`iI!!!1*d!)$LK!$K
)!&jYB!!!!(rr'hL!!3!i,!!!!%##!!`i!!!!5!!!#$J!!!'3!"i!!%J!!!`i!!!
"N!!H!!"rirYiJ!%!@$JK!&"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+QNq(
rr*2"rrL6SIrdNi(rm*!!!3!)P#(rF$[$!!!lK!!!1k8!!$[J!!!iIJ!!1*`!3$L
K!$K)!&hGB!!!!(rr'hL!!3!i,!!!!%##!%b!I!"!J"`!4*!!I3"!N!!G!%5!I!"
)J"`!6*!!I3")N!!G!%b!I!"3J"`!9*!!I3"3N!!G!&5!I!"BJ"`!A*!!I3"BN!!
G!&arirYi5!!#B$Kq!!!iR!"!1+%!A%J!AJ&J!!!!IrmEH$Kq!!!iR!!!1+%!A$M
"!$a)!&Z0B!!!!(rr'hJiIJ!!1*`!!$LK!&`i`3"F5!"HT@!!!!"rraYi1(i!!$L
"!&`iS3!m1-%!A%J!AZ&J!!!!IrmEH$Kq!!!iJ3"F1+%!A$M"!$a)!&XjB!!!!(r
r'hJiIJ!!1)%!A$LK!$`i`3"F5!"E(@!!!!"rraYi1(i!!$LF!#!i[!"!10d!3%J
!ASeJ!!!!IrmEH$Kq!!!iR3"!1,d!3$MG!%")!&VPB!!!!(rr'hJiIJ!!1*`!)$L
p!#")!&dPB!!!!(rr'hJiIJ!!1*`!!$Lp!#!i`3!m5!"H2@!!!!"rraYi1(i!!$L
"!$`iS3!m1-%!2%J!@T9J!!!!IrmEH$Kq!!!iJ3!m1+%!2$M"!$a)!&TjB!!!!(r
r'hJiIJ!!1)%!A$Lp!!")!&bjB!!!!(rr'hJiIJ!!1*d!!$LK!$`ih3!!5!"GH@!
!!!"rraYi1(i!!$LG!!!iS3!m10d!!%J!A9eJ!!!!IrmEH$Kq!!!iJ3!m1,d!!$M
"!$a)!&e"B!!!!(rr'hJiIJ!!1)%!A$LK!$`i`3!m5!"GI@!!!!"rraYi1(i!!$L
G!#!iS3"F5!"F-@!!!!"rraYi1(i!!$L"!&`iS3"F1-%!A%J!@EeJ!!!!IrmEH$K
q!!!iJ3"F1+%!A$M"!&a)!&QKB!!!!(rr'hJiIJ!!1)%!A$LK!&`i`3"F5!"CK@!
!!!"rraYi1(i!!$L"!$`iS3"F10d!)%J!A*eJ!!!!IrmEH(rMqhL!!3#B1#%!N!"
m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+Q[f(rl*!!!3!)P#(r)$[$!!!lK!!
!1f8!!$ZQ!!!li!!!1(i!!$LF!%!iS3!i5!"Dd@!!!!"rraYiJ!%!1#`!!!"!JJ!
`1,hrq$LErrJi!!!-I!N$TS4N!!L!"!!%P'8!#*!!"3!%3J$rm(rMqhK)!!0%1(i
!!$LE!%!iS3!i5!"DJ@!!!!"rraYiJ!%!1#`!!!"!JJ!`1,hrq$LFrrJi!!!-I!N
$TS4N!!L!"!!%P'8!#*!!"3!%3J$rm(rMqhK)!!,d1(i!!$LE!%!iS3#F5!"D`@!
!!!"rraYi1(i!!$LF!!!iS3#F1-%!A%J!@pPJ!!!!IrmEH$Kq!!!iQ`"!1+%!R$M
"!*a)!&ZpB!!!!(rr'hJiIJ!!1*`!)$LK!*`i`3!m5!"ES@!!!!"rraYi1(i!!$L
F!%!iS3#F5!"D9@!!!!"rraYi1(i!!$LE!!!iS3#F1-%!I%J!@feJ!!!!IrmEH$K
q!!!iR!"!1+%!R$MG!!")!&Y4B!!!!(rr'hJiIJ!!1)%!I$LK!&`i`3#F5!"Dh@!
!!!"rraYi1(i!!$LE!#!i[3!!1-%!I%J!@aPJ!!!!IrmEH$Kq!!!iJ3"m1+%!2$M
"!(a)!&UPB!!!!(rr'hJiIJ!!1)%!R$LK!$K)!&NKB!!!!(rr'hL!!3!i,!!!!%#
#!&JiIJ!!1)%!I$LK!$K)!&MpB!!!!(rr'hL!!3!i,!!!!%##!"`iIJ!!1*`!!$L
p!!",rrV&IrmEH%J!!B!iIJ!!1*d!3%J!@HPJ!!!!IrmEH%J!!@JiIJ!!1*X!3$L
K!*`ih3!!5!"DD@!!!!"rraYi1(i!!$LF!%!i[3!!10d!3%J!@NeJ!!!!IrmEH$K
q!!!iJ3#F1,d!!%J!@3&J!!!!IrmEH$Kq!!!iJ3"F1,d!!$M"!&a)!&SCB!!!!(r
r'hJiIJ!!1*d!!$LK!*`i`3#F5!"Cr@!!!!"rraYi1(i!!$L"!(`i[3!!5!"BX@!
!!!"rraYi1(i!!$LG!!!iS3#F10d!!%J!@A&J!!!!IrmEH$Kq!!!iJ3"F1+%!A$M
G!#")!&BKB!!!!(rr'hJiIJ!!1*d!!$Lp!#!ih3!!5!"C1@!!!!"rraYi1(i!!$L
"!$`iS3#F1-%!R%J!@A9J!!!!IrmEH$Kq!!!iJ3"F1,d!!$M"!$a)!&N"B!!!!(r
r'hJiIJ!!1)%!I$LK!$`i`3!m5!"C2@!!!!"rraYi1(i!!$L"!$`iS3#F10d!)%J
!@-PJ!!!!IrmEH(rMqhL!!3$S1#%!i(`)!kDlBIrX6S!!)(`)!UDrBIrXN!!"!!L
8)ImJ1m-!!$YN!!!lK3!!1kB!!$[J!!!iIJ!!1*`!3$LK!$K)!&F*B!!!!(rr'hL
!!3!i,!!!!%##!$!i[Iri1*[rq$J!!!am#31QK'3!#)!%!!58C3!)N!!&!!4#!2r
`Iq2lH%J!!Q`iIJ!!1*`!3$LK!*a)!&G*B!!!!(rr'hJiIJ!!1*X!!$LK!*`i`3"
F5!"BB@!!!!"rraYi1(i!!$LF!%!iS3#F1-%!R%J!@%9J!!!!IrmEH$Kq!!!iQ`!
J1+%!R$M"!$a)!&JTB!!!!(rr'hJiIJ!!1*`!)$LK!$`i`3"m5!"AY@!!!!"rraY
i1(i!!$LF!!!iS3"F1-%!R%J!9jPJ!!!!IrmEH$Kq!!!iJ3#F1+%!1%J!9K9J!!!
!IrmEH)!"!$JX!!!!3))!@$Kq!!!iJ3"m1+%!1%J!9I&J!!!!IrmEH)!"!$JX!!!
!3))!($Kq!!!iQ`!!1,d!!%[rplPrraYi5!!"C$Kq!!!iR3"!5!"@h@!!!!"rraY
i5!!"6$Kq!!!iR!"!1+%!R$MG!%")!&GGB!!!!(rr'hJiIJ!!1)%!R$Lp!!")!&B
4B!!!!(rr'hJiIJ!!1)%!A$Lp!!!i`3"F5!"A+@!!!!"rraYi1(i!!$LG!!!iS3#
F1-%!R%J!9`eJ!!!!IrmEH$Kq!!!iJ3"m1,d!!%J!9F&J!!!!IrmEH$Kq!!!iR3!
!1+%!R$MG!!")!&D"B!!!!(rr'hJiIJ!!1)%!A$LK!&`ih3!J5!"6-@!!!!"rraY
i1(i!!$LG!!!i[3!J10d!!%J!9NPJ!!!!IrmEH$Kq!!!iJ3!m1+%!R$M"!*a)!&D
&B!!!!(rr'hJiIJ!!1)%!A$Lp!!!i`3!m5!"@%@!!!!"rraYi1(i!!$L"!(`iS3!
m1-%!2%J!9NeJ!!!!IrmEH$Kq!!!iJ3!m1+%!R$MG!#")!&ACB!!!!(rr'hKrirY
iJ!%!k$JK!1"m#!1QZf(rl%k!!#"m#!+Q[Z(rh*!!!3!)P#(im(ak'hL3!)%(,$V
P!!!l"J!!1f!!!)"K"b`iJ3DF5rrY3@!!!!"rHaYi1b!!%%J!!!Jl1Irr,"N!!%'
!!"KA)"!k1'%'R(`$!#iS!!!!3B,rj#`C!!""J!BJJ(F!!)!A!!53!'%$R*!!!31
JJ(F!#)!A!!b3!'%$T*!!!31SJ(F!%)!A!"53!'%$V*!!!31`J(F!')!A!"b3!'%
$Y*!!!31iJ(F!))!A!#53!'%$[*!!!32!J(F!+)!A!#b3!'%$a*!!!32)J(F!-)!
A!$53!'%$c*!!!323J(F!1)!A!$b3!'%$e*!!!32B1(S!!$L"!pa)!&B&B!!!!(p
l'hJiS3-d1)%$P$J!!!am#31QK'3!#)!%!!58C3!)N!!&!!4#!2r`1(S!!$L"!l`
iS30F5!"5c@!!!!"rHaYi1(S!!$L"!j`iS32m5rrdm@!!!!"rHaYi1(S!!$L"!r`
iS35m5rrdf@!!!!"rHaYi1(S!!$L"!c`iS35m1-%%A%[rqjPJ!!!!IhXEH$Kk!!!
iJ31F1+%%[$M""4a,rrYpB!!!!(pl'hJiHJ!!1)%%[$LK"Ga,rr5*B!!!!(pl'hJ
iHJ!!1)%$2$LK"G`i`39m5rrl5@!!!!"rHaYi1(S!!$L"!j`iS3AF1-%'2%[rqbe
J!!!!IhXEH$LK!Y3iJ32d1!!!$(`*!kD%C!!)J!3!"*4P!!L3!!8!"%)!rr!iHJ!
!1)%%($LK![a)!&(CB!!!!(pl'hJiS3*d1)%%9$J!!!am#31QK'3!#)!%!!58C3!
)N!!&!!4#!2r`1(S!!$L""(`iS3+F5!"4R@!!!!"rHaYi1+%#&$L"",3i!!!-I!N
$TS4N!!L!"!!%P'8!#*!!"3!%3J$rm$Kk!!!iJ36F1+%#2%J!8@&J!!!!IhXEH$L
K!E3iJ3881!!!$(`*!kD%C!!)J!3!"*4P!!L3!!8!"%)!rr!iHJ!!1)%&2$LK!Ga
)!&%PB!!!!(pl'hJiS3&81)%&G$J!!!am#31QK'3!#)!%!!58C3!)N!!&!!4#!2r
`1(S!!$L""C`iS3&m5!"3k@!!!!"rHaYi1+%!p$L""G3i!!!-I!N$TS4N!!L!"!!
%P'8!#*!!"3!%3J$rm$Kk!!!iJ3Am1+%"(%J!8+eJ!!!!IhXEH$LK!*3iJ3Bd1!!
!$(`*!kD%C!!)J!3!"*4P!!L3!!8!"%)!rr!iHJ!!1)%'A$LK!,a)!&"aB!!!!(p
l'hJrS-!!5!!!#&Hpm,jA)"!k1'%'R(`$!#jrS!!j3B,rl$Kk!!!iJ3"m5!"4X@!
!!!"rHaYi9b!31MKK"Tam!`!ZIl`!1(`Fk%"!JJ!-1q$rrdJ!!!Jli!!"1m!!!9H
pm,iS(3!!3))"9$XjrrmrS-!!5!!"5$Kk!!!iJ3!m1+%!2%[rmL&J!!!!IhXEH&I
r#$aAhJJm9b!31MKK"Tam!`!ZIl`!1#JF!!""JJ#F,"i!!%##!#"m(H"!3))!$$[
Jrrp)!!!)1q!!!6[!!!&)!!$BI"hJ3%##!!`i!2rr5!!!#$J!!!&rr`)81(S!!$J
I!!NmJ&991)499Rb%!*C8J!rqI)3#&$J%!!&m"!j`I)3"P$JI!!Pm"!"3(!!!B$L
"!*amK!)81+%!2$M"!$a,rr5*B!!!!(pl'hJli!!!1m!!!%J!!'3X(J!)3))!A$K
k!!!i(`!*2)"996L%99CmK!#@9)!2rRb%!K3i"!!"I!31F(b%!C3i(`!*I!3!8"`
!!'!iJ3#FI)3#&$LK!$`i`3!m5rrd*@!!!!"rHaYi1q!!!$[!!!"A[I#q+"d!!%#
#rXJrS-!!1cRrrb`C!!"!J2rX,"m!!%'#!&3iHJ!!1"m!#6b!998iK&9@I)3!PP5
!$rjmK!)81!3!!A`%$R"mK!'81"m!#A`%!&!F!!"J1)%!R(b%!K3iS3!m1-%!2%[
rmkPJ!!!!IhXEH$Kk!!!iJ3"m1+%!1%J!6T&J!!!!IhXEH)!"!$JX!!!!3))!-$K
k!!!iQ!!!5!"2P@!!!!"rHaYi1(S!!$LB!#")!%q"B!!!!(pl'hK)!!#d1(S!!$L
"!(`iS3"m5!",j@!!!!"rHaYi1(S!!$L"!&`iS3"m10J!)%J!6qPJ!!!!IhXEH$K
k!!!iJ3"m1+%!I%J!6TeJ!!!!IhXEH$Kk!!!iQ!!J1+%!I$MB!#")!%qeB!!!!(p
l'hJiHJ!!1)%!2$LK!(`if!!!5!"2Q@!!!!"rHaYi5!!!,$Kk!!!iQ!!!5!"1i@!
!!!"rHaYi1(S!!$LB!#")!%l0B!!!!(pl'hKrBpYiJ!%('$JK"a"m#!1QZZ(rh%k
!!#"m#!+QNq(rr*!!!3!)P#(rJ*!!B3#BN!#"!*b3!+%!S*!!`3#N1q!!!)"K!*L
!J3#FJ+%!S$M"!$K,rrN*B!!!!(rr'hL!J3#NJ'%!1)!"!$b3!'3!!*!!"!!%J'%
!3)!"!%53!'3!#*!!"!!-J'%!5)!"!%b3!'3!%*!!"!!8J'%!8)!"!&53!'3!'*!
!"!!FIq2lH)!"!)Ji)3#!I!J$TS2Krra1J!!JI!J#TVi"rm#3!!%!#*3KmI!l3`!
!1L3!!$UP!!!k4J!!1SF!!$TS!!!lB!!!J(S#%#J$!!""JJ$i1(S!!$L9!!!iZJ%
#1-%!S%J!5DeJ!!!!IhXEH$Kk!!!iP3!J1,S")MM"!*a)!%Q4B!!!!$L$!!"rHb0
iJ!%!S#`!!!"!JJ#`J!%!R#`!!!"!JJ#N1(S!!$L!!!%iX3!!1-%!T%J!(qPJ!!!
!1+-!!(pl+hJiHJ!!1*)!!$Ld!!!i`3!i5rrhj@!!!!"rHaYi1(S!!$L"!+3iS3!
i1-%!T%[rj`&J!!!!IhXEH)#K!+5!!3#SN!#c!!#3!"-!")#"!+b!!3#`N!#6!!L
3!"-!$)"K!,5!S3#iN!"c!"#3!,-!&)#"!,b!!3$!N!#6!"L3!"-!((pMfhK)!"N
m1(S!!$L9!!!iS3#J5!",X@!!!!"rHaYi1(S!!$L9!#!iS3#F5!",Q@!!!!!i!`!
!IhX$H)"K!+!X!`!!3))!')#"!*`X"!!!3))!$$S!!!&)!!!)1J!!!$Kk!!!iP!!
!1+%!S%J!5ePJ!!!!IhXEH$Kk!!!iP!!J1+%!R%J!5d&J!!!!1!-!!(pl!hL!!3#
J,!!!!%##!"L!S3#F,!8!!%##!!`iB!!"5!!!#$KJ!!#3!'%!Q$Ka!!!iJ3f)5rr
N*@!!!!"rHaYi1()!!$L"$84,rq34B!!!!$LM!!"rHbYi1Z!!%%J!!!Jkprrr,"F
!!%'!!"K@i"!k1)%0L(`%!#iS!!!!3B,rj$V!!"")!!!)1YErrb`@!!""J!!B9X-
31MLK$84mK4JZ+!3!!%'#rq3X&`!!3B!!$#`3!!""JJ"S1(S!!$L5!!!iY!!!1-%
!T%[rpL9J!!!!IhXEH)"K!+5!!3#SN!"c!!#3!"-!")"K!+b!S3#`N!"c!!L3!,-
!$)#"!,5!!3#iN!#6!"#3!"-!&)"K!,b!!3$!N!"c!"L3!"-!((pMfhK)!"HB,"B
!!%'!!"#!B3#B,!-!!%'#!'JiHJ!!1*%!!$Le!!!i`3#N5rreV@!!!!"rHaYiJ+%
!T)!"!+L3!,-!!*!!%`!%J)%!V)!"!,#3!*-!#*!!%`!-J'%!Y)#K!,L3!(-!%*!
!X`!8J)%![)!"!-#3!*-!'*!!%`!FIf2EH%J!&b!X&`!!3B!A&#`@!!""J"F-J(8
!!)!9!!53!'%+4*!!!3T)J(8!#)#9!!b3!'%+6*!!J3T3J,8!%)!9!"53!+%+9*!
!!3TBJ(8!')!9!"b3!'%+A*!!!3TJJ(8!))#9!#53!'%+C*!!J3TSJ,8!+)!9!#b
3!+%+E*!!!3T`J(8!-)!9!$53!'%+G*!!!3TiJ(8!1)#9!$b3!'%+I*!!J3U!1(S
!!$L"#S4)!%ZeB!!!!(pl'hJi`3RF1+%+2$J!!!am#31QK'8!#)#&!!58CJ!)N!#
'!!4#!2r`1(S!!$L"#Q3iS3S%5!")I@!!!!"rHaYi1(S!!$L"#N3iS3UN5rrUS@!
!!!!i!`!!IhX$H$Kk!!!iJ3UN1+%,C%[rkS9J!!!!1+-!!(pl+hJiHJ!!1)%*j$L
K#f3i`3X%5rra3@!!!!!i!`!!IhX$H$Kk!!!iJ3T%1+%,C$M"#m4,rr%KB!!!!(p
l'hJiHJ!!1)%,C$LK$)4,rqSYB!!!!(pl'hJiHJ!!1)%*j$LK$)3i`3`N5rr`l@!
!!!!iJ`!!IhXMH$Kk!!!iJ3T%1+%-K$M"$14,rr$0B!!!!(pl'hL!G!!!J"3!"*!
!B34%N!!""%L!G!!)J"3!$*!!B34-N!!""&#!G!!3J"3!&*!!B348N!!""&L!G!!
BJ"3!(*!!B34FN!!""'#!G!!JJ"3!**!!B34NN!!""'L!G!!SJ"3!,*!!B34XN!!
""(#!&!!`J(3!0*!!!34dN!"K"(L!G!!iJ"3!2*!!B34mN!!"")!iHJ!!1)%%K%J
!5KeJ!!!!IhXEH$LK!p`iB33m1)!!$(b*!kD%J`!)J!-!"*5&!!L3!!8!"%)!rr!
iHJ!!1)%%C$LK"!4)!%EPB!!!!$L$!!"rHb0i1(S!!$L""%3iS35N5rrT"@!!!!!
i!`!!IhX$H$Kk!!!iJ35N1+%&C%[rk1PJ!!!!1!-!!(pl!hJiHJ!!1)%$j$LK"@3
i`38%5rr[T@!!!!!iJ`!!IhXMH$Kk!!!iJ34%1+%&C$M""F4,rqq&B!!!!$J$!!"
rH`0i1(S!!$L""@3iS3D%5rrSM@!!!!!i!`!!IhX$H$Kk!!!iJ32N1+%'K$M""L4
,rqp*B!!!!$J$!!"rH`0i1(S!!$L""%3iS3D%1-%'j%[rlbPJ!!!!IhXEH$Kk!!!
iJ3VN1+%,4$M"#@4)!%J*B!!!!$L$!!"rHb0i1(S!!$L"#@3iS3ZN1-%*"%J!4qP
J!!!!1)-!!(pl)hJiHJ!!1)%*"$LK$!3i`3LN5!"(b@!!!!!i!`!!IhX$H$Kk!!!
iJ3LN1+%-C$M"#%4)!%HTB!!!!$L$!!"rHb0i1(S!!$L"#%3iS3c%1-%(j%J!4iP
J!!!!1!-!!(pl!hJiHJ!!1)%(j$LK$53i`3H%5!"(D@!!!!!i!`!!IhX$H$Kk!!!
iJ3H%1+%%j$M"!m4)!%G*B!!!!$L$!!"rHb0i1(S!!$L"!m3iS39%1-%$C%J!4bP
J!!!!1!-!!(pl!hJiHJ!!1)%$C$LK"D3i`3-%5!"(#@!!!!!i!`!!IhX$H$Kk!!!
iJ3-%1+%'"$M"!U4)!%ETB!!!!$J$!!"rH`0i1(S!!$L"!U3iS3CN1-%#4%J!4XP
J!!!!IhXEH$Kk!!!iJ3*%1+%'a$M"!H4)!%DYB!!!!(pl'hJiHJ!!1)%"j$LK"b3
i`3'%5!"'N@!!!!!iJ`!!IhXMH$Kk!!!iJ3'%1+%"K%J!3P9J!!!!IhXEH$Kk!!!
iJ3'%1+%"j$M"!(K)!%CCB!!!!(pl'hJiHJ!!1)%("$LK!(Ji`3F%5!"'2@!!!!!
iJ`!!IhXMH$Kk!!!iJ3"i1+%!H%J!41eJ!!!!1)-!!(pl)hJiHJ!!1)%("$LK!(J
i`3F%5!"'!@!!!!!i!`!!IhX$H$Kk!!!iJ3EN1+%!H$M""Z4)!%AKB!!!!$L$!!"
rHb0i1(S!!$L"!B3iS3FN1-%"j%J!4F&J!!!!1!-!!(pl!hJiHJ!!1)%(*%J!4T&
J!!!!1!-!!(pl!hJiHJ!!1)%"j$LK!N3i`3"i5!"&L@!!!!!iJ`!!IhXMH$Kk!!!
iJ3DN1+%!H$M""U4)!%9TB!!!!$J$!!"rH`0i1(S!!$L"!(JiS3"i5!"%'@!!!!!
i!`!!IhX$H$Kk!!!iJ3DN1+%!H$M""U4)!%8YB!!!!$J$!!"rH`0i1(S!!$L""S3
iS3"i1-%'K%J!43eJ!!!!IhXEH$Kk!!!iJ3(N1+%'a$M"!N4)!%6aB!!!!$L$!!"
rHb0i1(S!!$L""X4)!%A"B!!!!$L$!!"rHb0i1(S!!$L"!N3iS3+N1-%!H%J!4,P
J!!!!1!-!!(pl!hJiHJ!!1)%'4$LK!(Ji`3C%5!"%Q@!!!!!iJ`!!IhXMH$Kk!!!
iJ3"i1+%!H%J!3dPJ!!!!1!-!!(pl!hJiHJ!!1)%'4$LK!(Ji`3C%5!"%A@!!!!!
i!`!!IhX$H$Kk!!!iJ3BN1+%!H$M""L4)!%3pB!!!!$L$!!"rHb0i1(S!!$L"!N3
iS3CN1-%#T%J!4"eJ!!!!1!-!!(pl!hJiHJ!!1)%'C%J!41eJ!!!!1!-!!(pl!hJ
iHJ!!1)%#T$LK!`3i`3"i5!"$j@!!!!!i!`!!IhX$H$Kk!!!iJ3AN1+%!H$M""H4
)!%2&B!!!!(pl'hJiHJ!!1)%!H$LK!(K)!%*jB!!!!$L$!!"rHb0i1(S!!$L""H3
iS3"i1-%&j%J!3ieJ!!!!1)-!!(pl)hJiHJ!!1)%&a$LK!(Ji`3A%5!"$E@!!!!!
i!`!!IhX$H$Kk!!!iJ3+N1+%'"$M"!`4)!%00B!!!!$L$!!"rHb0i1(S!!$L""J4
)!%3GB!!!!$J$!!"rH`0i1(S!!$L"!`3iS30N1-%!H%J!3a9J!!!!1!-!!(pl!hJ
iHJ!!1)%&K$LK!(Ji`3@%5!"#p@!!!!!iJ`!!IhXMH$Kk!!!iJ3"i1+%!H%J!3D9
J!!!!1!-!!(pl!hJiHJ!!1)%&K$LK!(Ji`3@%5!"#Z@!!!!!i!`!!IhX$H$Kk!!!
iJ39N1+%!H$M""@4)!%+CB!!!!$J$!!"rH`0i1(S!!$L"!`3iS3@N1-%$C%J!3RP
J!!!!IhXEH$Kk!!!iJ3@N5!"$6@!!!!!iJ`!!IhXMH$Kk!!!iJ30N1+%$a$M"!(K
)!%*&B!!!!$L$!!"rHb0i1(S!!$L""53iS3"i1-%&*%J!3L9J!!!!1!-!!(pl!hJ
iHJ!!1)%!H$LK!(K)!%$9B!!!!$L$!!"rHb0i1(S!!$L""53iS3"i1-%&*%J!3HP
J!!!!1!-!!(pl!hJiHJ!!1)%&"$LK!(Ji`38%5!""b@!!!!!i!`!!IhX$H$Kk!!!
iJ30N1+%&4$M"!m4)!%'TB!!!!$L$!!"rHb0i1(S!!$L""84)!%*jB!!!!$J$!!"
rH`0i1(S!!$L"!m3iS3H%1-%!H%J!3A&J!!!!1!-!!(pl!hJiHJ!!1)%%a$LK!(J
i`36%5!""8@!!!!!i!`!!IhX$H$Kk!!!iJ3"i1+%!H%J!3!&J!!!!IhXEH$Kk!!!
iJ36%1+%!H$M""-4)!%%CB!!!!(pl'hJiHJ!!1)%%T$LK!(Ji`35N5!"!r@!!!!"
rHaYi1(S!!$L"!m3iS36N1-%(K%J!31&J!!!!IhXEH$Kk!!!iJ36N5!""Y@!!!!"
rHaYi1(S!!$L""i3iS3IN1-%!H%J!3,&J!!!!IhXEH$Kk!!!iJ3d%1+%!H$M"$34
)!%#9B!!!!(pl'hJiHJ!!1)%!H$LK!(K)!$p*B!!!!(pl'hJiHJ!!1)%0"$LK!(J
i`3d%5!"!B@!!!!"rHaYi1(S!!$L"$13iS3"i1-%-j%J!3%9J!!!!IhXEH$Kk!!!
iJ3H%1+%0*$M""q4)!%!TB!!!!(pl'hJiHJ!!1)%0*%J!32eJ!!!!IhXEH$Kk!!!
iJ3IN1+%)4$M"!(K)!$rjB!!!!(pl'hJiHJ!!1)%-T$LK!(Ji`3bN5!!rh@!!!!"
rHaYi1(S!!$L"!(JiS3"i5!!qN@!!!!"rHaYi1(S!!$L"$+3iS3"i1-%-T%J!2kP
J!!!!IhXEH$Kk!!!iJ3b%1+%!H$M"$)4)!$q0B!!!!(pl'hJiHJ!!1)%(j$LK$-3
i`3K%5!!rF@!!!!"rHaYi1(S!!$L"$-4)!%"&B!!!!(pl'hJiHJ!!1)%)4$LK#+3
i`3"i5!!r3@!!!!"rHaYi1(S!!$L"$%3iS3"i1-%-4%J!2b9J!!!!IhXEH$Kk!!!
iJ3"i1+%!H%J!2GPJ!!!!IhXEH$Kk!!!iJ3a%1+%!H$M"$%4)!$laB!!!!(pl'hJ
iHJ!!1)%-*$LK!(Ji`3`N5!!qe@!!!!"rHaYi1(S!!$L"#%3iS3aN1-%)T%J!2VP
J!!!!IhXEH$Kk!!!iJ3aN5!!rM@!!!!"rHaYi1(S!!$L"#+3iS3N%1-%!H%J!2SP
J!!!!IhXEH$Kk!!!iJ3[N1+%!H$M"#q4)!$jYB!!!!(pl'hJiHJ!!1)%!H$LK!(K
)!$dKB!!!!(pl'hJiHJ!!1)%,j$LK!(Ji`3[N5!!q1@!!!!"rHaYi1(S!!$L"#m3
iS3"i1-%,a%J!2KeJ!!!!IhXEH$Kk!!!iJ3LN1+%-"$M"#34)!$i"B!!!!(pl'hJ
iHJ!!1)%-"%J!2Y9J!!!!IhXEH$Kk!!!iJ3N%1+%*C$M"!(K)!$h4B!!!!(pl'hJ
iHJ!!1)%,K$LK!(Ji`3Z%5!!pY@!!!!"rHaYi1(S!!$L"!(JiS3"i5!!mD@!!!!"
rHaYi1(S!!$L"#i3iS3"i1-%,K%J!2B&J!!!!IhXEH$Kk!!!iJ3YN1+%!H$M"#f4
)!$ePB!!!!(pl'hJiHJ!!1)%*"$LK#k3i`3PN5!!p5@!!!!"rHaYi1(S!!$L"#k4
)!$iGB!!!!(pl'hJiHJ!!1)%*C$LK#Z3i`3"i5!!p'@!!!!"rHaYi1(S!!$L"#b3
iS3"i1-%,*%J!22eJ!!!!IhXEH$Kk!!!iJ3"i1+%!H%J!1l&J!!!!IhXEH$Kk!!!
iJ3XN1+%!H$M"#b4)!$c*B!!!!(pl'hJiHJ!!1)%,"$LK!(Ji`3X%5!!mV@!!!!"
rHaYi1(S!!$L"#@3iS3Y%1-%!H%J!2*&J!!!!IhXEH$Kk!!!iJ3Y%5!!pC@!!!!"
rHaYi1(S!!$L"#X3iS3"i1-%+a%J!2'&J!!!!IhXEH$Kk!!!iJ3"i1+%!H%J!1a9
J!!!!IhXEH$Kk!!!iJ3V%1+%!H$M"#X4)!$`YB!!!!(pl'hJiHJ!!1)%+T$LK!(J
i`3UN5!!m%@!!!!"rHaYi1(S!!$L"#Z4)!$cPB!!!!(pl'hJiS3Pm1)%+R$J!!!a
m#31QK'3!#)!%!!58C3!)N!!&!!4#!2r`1(S!!$L"#X3iS3QN5!!jV@!!!!"rHaY
i1'%*($L"#[`i!!!-I!N$TS3%!!L!T!!%P!-!#*!!S`!%3J$rm$Kk!!!iJ3XN1+%
*4%J!1A&J!!!!IhXEH$KK#,`iS3YF1!!!$(`*!kD%K3!)J!8!"*5$!!L3!!-!"%)
!rr!iHJ!!1)%,K$LK#14)!$NeB!!!!(pl'hJiS3KF1)%,[$J!!!am#31QK'3!#)!
%!!58C3!)N!!&!!4#!2r`1(S!!$L"#q3iS3L%5!!iq@!!!!"rHaYi1)%(r$KK$"`
i!!!-I!N$TS3$!!L!S`!%P!3!#*!!T!!%3J$rm$Kk!!!iJ3a%1+%)*%J!1,eJ!!!
!IhXEH$KK"j`iS3am1!!!$(`*!kD%K3!)J!8!"*5$!!L3!!-!"%)!rr!iHJ!!1)%
-T$LK"m4)!$L"B!!!!(pl'hJiS3Fm1)%-h$KJ!!amD31QK'3!#)!%!!58C3!)N!!
&!!4#!2r`1(S!!$L"$33iS3GN5!!i4@!!!!"rHaYi1+%$I$L""*`i!!!-I!N$TS4
N!!L!"!!%P'8!#*!!"3!%3J$rm$Kk!!!iJ36%1+%$T%J!1!PJ!!!!IhXEH$KK!a`
iS36m1!!!$(`*!kD%K3!)J!8!"*5$!!L3!!-!"%)!rr!iHJ!!1)%&*$LK!d4)!$I
0B!!!!(pl'hJiS3+m1)%&A$J!!!am#31QK'3!#)!%!!58C3!)N!!&!!4#!2r`1(S
!!$L""B3iS3,N5!!hN@!!!!"rHaYi1)%#A$LK"E`i!!!-I!N$TS4P!!L!"3!%P'3
!#*!!"!!%3J$rm$Kk!!!iJ3AN1+%#K%J!0e9J!!!!IhXEH$L"!I`iS3BF1!!!$(`
*!kD%C3!)J!8!"*4N!!L3!!3!"%)!rr!iHJ!!1)%'4$LK!L4)!$FCB!!!!(pl'hJ
iJ3'F1'%'I$M!!!amb31QK+-!#)!$!!58T!!)N!!%!!4#!2r`1(S!!$L""U3iS3(
%5!!fh@!!!!"rHaYi1)%"2$KK"Y`i!!!-I!N$TS5M!!L!!`!%P+3!#*!!"!!%3J$
rm$Kk!!!iJ3F%1+%"C%J!0U&J!!!!IhXEH(`AX!"!J3!)5!!!#(lAXhJrS-!!5!!
!#&Hpm,j@ia!k1)%0L(aN'#jrSaJj3))!'&EJ%$SiB3e%I!-!,RqM!$P"J[rB9Z!
31MKK$BKm!`!ZIk-!18'#!"!li!!"1b!!!8J!!!`li!!!1b!!!&EJ%$SiB3e%I!-
!,RqJ!$P"JJ!31m!!!6X!!!&)!!!-1m!!!$X!!!!iHJ!!1)%"*%J!0feJ!!!!IhX
EH&Hpm,iS(3!!3))#E$VhrrmrS-!!5!!#B$Kk!!!iJ3$N1+%!j%[rf!9J!!!!IhX
EH&Ir#$aA13Jm9pi)2&FB#$a@i"!k1'%0L(bM!#jr[#Ji+"`!!%'#!*`X'3!!3))
!)(`Gi%"!JJ!-1q$rrdJ!!!Jli!!"1b!!!8J!!0Km(H"!3))!$$KJrrp)!!!)1'!
!!Arr'K3iHJ!!1"m!#6b!998iK&9@I)3!PP5!$rjmK!)81!3!!A`%$R"mK!'81"m
!#A`%!&!F!!"J1)%(4(b%!K3iS3$N1-%!j%[rhLeJ!!!!IhXEH$[J!!!l)!!!5!!
!C#`C!!K!JJ"F1(S!!$JI!!NmJ&991)499Rb%!*C8J!rqI)3#&$J%!!&m"!j`I)3
"P$JI!!Pm"!"3(!!!B$L""d4mK!)81+%!j$M"!14,rph*B!!!!(pl'hJli!!!1b!
!!&EM%$SiJ3e%I'3B,Rqm'$JS(!!!3B)!R#`B!!"!JJ!JI"hJ3%##!!`l`2rr5!!
!#$[!!!%l!!!"5!!!f(`Gi%"!JJ!-1'$rrdJ!!!JiB!!"IpiD&$Kk!!!i(J!*2)"
996L%99CmK!#@9)!2rRb%!K3i"!!"I!31F(b%!C3i(J!*I!3!8"`!!'!iJ3&%I)3
#&$LK!13i`3$N5rrG(@!!!!"rHaYi1m!!!$X!!!")!!"N,"J!#%##!&`iHJ!!1"i
!#6b!998iK&9@I)3!PP5!$rjmK!)81!3!!A`%$R"mK!'81"i!#A`%!&!F!!"J1)%
"4(b%!K3iS3$N1-%!j%[rh,PJ!!!!IhXEH$[!!!!l!!!!9lh`[LJG!!"!J[f`2k$
!!$VhrrmX&`!!3)$rl#`I!!""JJ"81(S!!$JI!!NmJ&991)499Rb%!*C8J!rqI)3
#&$J%!!&m"!j`I)3"P$JI!!Pm"!"3(!!!B$L""d4mK!)81+%!j$M"!14,rp`pB!!
!!(pl'hJX(J!!3B)!9$Kk!!!i(J!*2)"996L%99CmK!#@9)!2rRb%!K3i"!!"I!3
1F(b%!C3i(J!*I!3!8"`!!'!iJ3&%I)3#&$LK!13i`3$N5rrEj@!!!!"rHaYi1(S
!!$L"!53iS3#J5!!c"@!!!!"rHaYiJ'%!S#`$!!"!JJ!F1(S!!$L6!!")!$3*B!!
!!(pl'hK)!!"31(S!!$L"!53iS3%N5!!`E@!!!!"rHaYi1(S!!$L"!53iS3%N5!!
c3@!!!!"rHaYi1(S!!$L"!13iS3%N10-!!%J!0&PJ!!!!IhXEH(pMfhL!!3iB1#%
1%(`)!kDk!Ir!6S!!)(`)!UDr3IrSN!!"!!L8)IqJN!"K!(Jl4!!!1k8!!$YJ!!!
iHJ!!1)%!2%J!2MPJ!!!!IhXEH)!"!$`X!!!!3B)!c$Kp!!!iJ!!!1+!!X%[r0%9
J!!!!J'%!H$J$rrmmB#UV1'1UUhaM!*C8B!rqI'-#&$J$!!'3!"d!!$[J!!!lJ!!
!5!!!F$[!!!")!!"-1(S!!$LI!!!iS3!i5!!qj@!!!!"rHaYiJ!%!1#`!!!""JJ!
J9m-31ML$!!4mI5!Z1!!!!A`!i$"mB!0iI"dK,M[r!!%lhJ!"J"d!!(`H!!"!J!!
3J!%!2(`I!!""J2qN1j`!!5`F!!C!J!!FJ!%!2(`I!!""J2q%5!!!$$J!!!#3!"d
!!(pMfhL!!3"S1#%!B(`)!kDl3IrS6S!!)(`)!UDr)IrNN!!"!!L8)Ip`1d-!!$X
N!!!lC3!!JlX!!#`D!!"!J3#d1'%!1$L!!!!iS!!V5rmc0@!!!!"rAp0i5!!!&$J
!!!%iB3!iI!2jVM[r!!&m(qJ!3B$rl$[prrp)!!!iI(RiVR`$qpCm!2R@Im!B8$K
K!$KrJr#Z1'%!1(`$q+iiB3!iI!2aVMKK!$KrJrQZ1rrrrh`Id!"!J2r)1q!!!%J
!!#JiB3!iI!2iVLJ!!!""JJ!81)!!!&IM%$Si!`!%I*X",M[r!!&m(qJ!3B$rf%J
!!!`i!!!!N!!E!!!iB!!!J!%!Q$JK!*!!I!J$TVXKrq41J!!JI!J#TVp"rqL3!!%
!#*3Krl!lS`!!1i3!!$Y!!!#!(3!!,!!!!%'#!13iI!!!1)!!!$LJ!#C,rc)pB!!
!!$[J!!!lB!!!5!!!D$[!!!")!!")9m-31MJ$!!4mI3!Z1!!!!A`!f$"mB!!j3B)
!*&IMk2`iS`!%I*`U,MKJ!!&Ai!FqI'!!-(b!!hKm(#XZ1rm!!6[H!!'!(3!!I"i
!!%#!!!`X(`%!3B$rV$Yl!!%X'`!'3)!!$#`I!3""J2q3!$JIrrp8!q%q1!-!!C!
!(!!!5!!!%)"m!!!i!rrrN!!F!!#!I!!!1!2rre3$#$`i!`!%I"`#,LJ!!!"!JJ!
FJ"`!!#`!!!""JIr35!!!$$J!!!#3!"`!!(p$dhL!!3"B1#%!8(`)!kDl3IrS6S!
!)(`)!UDq`IrBN!!"!!L8)IiJ1f-!!$ZN!!#3!+%#!(cA-hJlJ!!!1(X!!$L"!1a
)!$!KB!!!!(qF'hJiH`!!1)%"$%J!-!eJ!!!!Ij`EH$Kl!!!iJ3%X5!![q@!!!!"
rR"YiJYX"3Rl$XhL!J3)!1+%!1%[rr%PrR"YiJb%!1$Kl!!!iJ3'-5!!a8@!!!!"
rR"Yi,"N!!%'#!83i'IrrI!-HF(aM!C3l!`!"1eMrrdJ!!53iH`!!1)%!l$LK!1a
,rp"CB!!!!(qF'hJl`!!(5!!!q(`H`GCrqJ)8I"r)!%#!!14Aj"!k1'%!1$J%!!4
ri`!Z,"m!!%'#!-`FIJr!1"rrre3!-$*m!`)8I*d#&)"N!!#!"!!%N!"K!8b3!!%
"8)"N!!L!"!!-N!"K!953!!%"@)"N!"#!"!!8N!"K!9b3!!%"B)"N!"L!"!!FN!"
K!@53!!%"D"aq$m!i(rrr9!!`-RaM!K3i!`!JI*d#&)"N!!#!"!!%N!"K!@b3!!%
"F)"N!!L!"!!-N!"K!A53!!%"H)"N!"#!"!!8N!"K!Ab3!!%"J)"N!"L!"!!FN!"
K!B53!!%"L$Kl!!!iJ3&-1+%!l$M"!1a,rp*eB!!!!(qF'hJlh[rr,"i!!%#!r`J
l@[rr,"S!!%#!rY`iH`!!1)%",$LK!1K)!#e&B!!!!(qF'hL!!3$S,!!!!%'#!)`
iH`!!1)%",$LK!5a)!#V&B!!!!(qF'hJiH`!!1)%",$LK!3`ie`!J5!!Zb@!!!!"
rR"Yi1(X!!$L"!5`iS3%X5!!YI@!!!!"rR"Yi1(X!!$L"!5`iS3$X10F!!%J!,T9
J!!!!Ij`EH$Kl!!!iJ3%X1,F!)$MA!#")!#jjB!!!!(qF'hK)!!!X1(X!!$LA!!"
)!#h"B!!!!(qF'hJiH`!!1*F!)%J!,DeJ!!!!Ij`EH(q$ihL!!3(S1#%"i(`)!kD
k`IrB6S!!)(`)!UDq`IrBN!!"!!L8)Ih!1k-!!$V%!!!lK3!!1fB!!$[!!!#!(!!
!,!!!!%'#!`JlA3)3J(d"!S!G!3D3!'%"c*!!!3(3J(d"#S!G!3k3!'%"e*!!!3(
BJ(d"%S!G!4D3!'%"h*!!!3(JJ(d"'S!G!4k3!'%"j*!!!3(SJ(d")S!G!5D3!'%
"l*!!!3(`J(d"+S!G!5k3!'%"p*!!!3(iJ(d"-S!G!6D3!'%"r*!!!3)!J(d"1S!
G!6k3!'%#"*!!!3))J(d"4S!G!8U3!'%"T*!!!3'SJ(d"6S!G!9+3!'%"V*!!!3'
`J(d"9S!G!9U3!'%"Y*!!!3'iJ(d"AS!G!@+3!'%"[*!!!3(!J"d"CT!!!3(%S"d
"DV!"!FL!(5cd2'"iH$KMH(Pm!`#@I!!HF&3$$rjmB"S81b-!!B!D!!!S!!!!3))
!*$Kp!!!iR!!!1+%"c$ME!!",rpEGB!!!!(rH'hK)!!)31(`!!$L"!D3i[!!!5!!
fY@!!!!"rhKYiJ[d"3L`@!!"!JJ#B1(F!!$LF!!!iS3"N5rriGArH'hJli!!!5!!
!+$Kp!!!iJ!!J9q!S0$LK!$KmT3)85!!q%@!!!!"rhKYi1rm!!5`I!!&"J2rB9q!
S0#-!!#XiI3!!1*J!!&IJ+$3iS3!iI+8#&%J!2GeJ!!!!IpiEH$Kj!!!iJ3!i1+%
!C%[rq5erhKYi1'%!C$LF!!",rrS9IpiEH(qMkhL!QJ!!1,`!!$ME!!",rrXPIpi
EH#`@!!"!JJ%iJ(d#&)!G!KL3!'%"9*!!!3&BJ(d#()!G!L#3!'%"A*!!!3&JJ(d
#*)!G!LL3!'%"C*!!!3&SJ(d#,)!G!M#3!'%"E*!!!3&`J"d#0*!!!3&dS"d#1,!
"!AL!I3)kJ"d#2T!!B3%8N!!"!4L!I3*#J"d#4T!!B3%FN!!"!5#!I3*+J"d#6T!
!B3%NN!!"!5L!I3*5J"d#9T!!B3%XN!!"!6#!I3*DJ"d#AT!!B3%dN!!"!6L!I3*
LJ"d#CT!!B3%mN!!"!8#!I3*UJ"d#ET!!B3&%N!!"!8L!I3*bJ"d#GT!!B3&-N!!
"!9!iI!!!1)%"9$LK!D3ih!!!5!!dX@!!!!"rhKYi1(d!!$L"!43iZ`!!10X!!%[
ra$&J!!!!IpiEH%J!!#`iI3!!1*X!!%J!+NeJ!!!!IpiEH$Kp!!!iQ`!J5!!U1@!
!!!"rhKYiIm2cH)!"!NJi)3*!I!J$TVV"rpK1J!!JI!J#TVlKrpb3!!%!#*3Krk"
mH4YiN!#"!(b3!+%!J(cH-hJl3!!!J'%!I$J$rrmmB#UV1'1UUhaM!*C8B!rqI'-
#&$VM!!%i&rrrI!-HF(aM!C3l!`!"J'%!J)#$!!#!!`!%N!#H!!#3!"i!")#$!!L
!!`!-N!#H!!L3!"i!$)#$!"#!!`!8N!#H!"#3!"i!&)#$!"L!!`!FN!#H!"L3!"i
!()#$!##!!`!NN!#H!##3!"i!*)#$!#L!!`!XN!#H!#L3!"i!,)#$!$#!!`!dN!#
H!$#3!"i!0)#$!$L!!`!mN!#H!$L3!"i!2$YJ!!&)!!$S1!!!!A`$f$!lirrr1'!
!!6JErrpmB`!`1!2rre3$-$*Ai$!bI*i#&(aq'K5!S`!!J!-!"*!!T!!!N!!%!!5
!S`!)J!-!$*!!T!!)N!!%!!b!S`!3J!-!&*!!T!!3N!!%!"5!S`!BJ!-!(*!!T!!
BN!!%!"b!S`!JJ!-!**!!T!!JN!!%!#5!S`!SJ!-!,*!!T!!SN!!%!#b!S`!`J!-
!0*!!T!!`N!!%!$5!S`!iJ!-!2*!!T!!iN!!%!$`lJ!!!5!!!+$Kj!!"Ai$!bI*i
#&&IJ-$*m[J)85rr&r@!!!!"r@KYi1j`!!A`FZ!""J2rB1hX!!5`E!!C"J2mB1k!
!!8J!!4!lB!!!5!!!r$J!!!&m!pJ`1q2rrcJGrrmFB!r!9q!`-RbM!K3FI3r!9q!
`-R`$!K4mRJ)8I(iU&)#M!!#!!`!%N!#N!!#3!!3!")#M!!L!!`!-N!#N!!L3!!3
!$)#M!"#!!`!8N!#N!"#3!!3!&)#M!"L!!`!FN!#N!"L3!!3!()#M!##!!`!NN!#
N!##3!!3!*)#M!#L!!`!XN!#N!#L3!!3!,)#M!$#!!`!dN!#N!$#3!!3!0)#M!$L
!!`!mN!#N!$L3!!3!2$Z!!!")!!!i1(N!!"bG$m"Ai$!bI)3#&(bH)K3F[3r!9q!
`-RbP!K4m[LS85rr%l@!!!!"r@KYi1j`!!A`F`!""J2r)1hX!!5`E!!C"J2m%1ld
!!5`G!!K"J2l`1k!!!%J!!)JlB!!$5!!!G$[J!!&)!!!)9rm)2(rJf$P"J[riI"[
i!%'#!&3iH3!!(*d2`$JIrrp8!$!bI)3#&(bH)K3Fh3r!I,rB8$J&rrp8!$!bI+B
#&(bq+K3Fh3r!1"[rre3!-$*maJ)8I0ib&%[r`)PJ!!!!IeSEH$Yl!!%X'`!r3)(
rM$Zp!!%X(3!)3B$rH(p$dhL!!3"S1#%!B(`)!kDkiIrF6S!!)$J!IJ#3!!-!!$K
J!!"1J!!JI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3Krh"mIaYi1k!!!$[I!K#
$R`&#J(m"!S!I!3D3!'%!1*!!!3!mJ(m"#S!I!3k3!'%!3*!!!3"%J(m"%S!I!4D
3!'%!5*!!!3"-J(m"'S!I!4k3!'%!8*!!!3"8J(m")S!I!5D3!'%!@*!!!3"FJ(m
"+S!I!5k3!'%!B*!!!3"NJ(m"-S!I!6D3!'%!D*!!!3"XJ(m"1S!I!6k3!'%!F*!
!!3"dJ"i!!#J!!!""JJ!F1(m!!$LF!!!iS3!iJ0i!!%[rqj9r[4YiIk2VH)!"!*J
i)3#3!(`)!kD$iIrmJm(rq)1Krr5$JIr`6S!!)(`)!UD6iIrmNm(rq*1Krr53!!%
!#*3KrY"mIKYiN!#"!8`lS!!!1!*3i*!!(Lb`J!%"6*!!(J)3J"i#%#J!!!""JJ'
)Im2cH%[rrXPJ!!!!IldEH$[J!!")!!!S1(i!!$L!!#"Ai$J`1+%!S(bP!K4)!$K
&B!!!!(qp'hJlr`!","m!!%'!rpJiIJ!!9q!S0##!!#"Ai$J`1+%!S(bP!K4)!$J
9B!!!!(qp'hJiB!!J1)%!S$LK!(K,rj-9B!!!!(qp'hJiB3"i1*i"4MLK!(K)!#m
jB!!!!(qp'hL!B3"iJ!%!I*!!IJ)8N!!H!KL!B3#!J!%!K*!!IJ)FN!!H!L#!B3#
)J!%!M*!!IJ)NN!!H!LL!B3#3!)!"!*53!(i#,*!!(J)`J!%!Q*!!(J)dS!%!R,!
H!MJiIJ!!1)!!!6LK!(Ji`3!i5rrf[@!!!!"r[4YiJ'%!1)!"!$b3!(i#1T!!(J)
qJ'%!3)!"!%53!(i#3T!!(J*'J'%!5)!"!%b3!(i#5T!!(J*1J'%!8)!"!&53!(i
#8T!!(J*@J'%!@)!"!&b3!(i#@T!!(J*HJ'%!B)!"!'53!(i#BT!!(J*QJ'%!D)!
"!'b3!(i#DT!!(J*ZJ'%!F)!"!(53!(i#FT!!(J*fIk2VH)!"!6Ji)3%`I!J$TS2
Krrb$`IriJk(rp%k!!#"m#!+QNq(rr*!!!3!)P#(r`(ar'hL3!)%!A*!!S3"JIq2
lH)#"!&b!S3"JJ0mXX)''!#")!([eJ%%!&)!"!%Ji)3"!I!J$TS2Krra1J!!J[b(
rj$YM,05!ibcd1!Irre3(fAilK`!"I0NcH$[J!!"rRZ0i5!!!@)$N!!#!"3!!Id$
k&(p(dK3S'J!!3))!&#JI!!""JJ!-1q!!!8J!!#"mrp"3J!3!!(`(!%"!J!!-1q!
!!8J!!!Jli!!!NeN!!$Xj!!3iK!!%1+8!"$IHrrp!J2qS+"m!!%'#!)!li!!!1m!
!!%J!!'4A`"!kI2X!,PI!%$Tm"J!ZI!F!8(qr!&!m(3!"+!$rrd##!"3S(`!!3B)
!$$[J!!&)!!!NI2hk&&I!%$Tm"J!ZI!F!3%#"!!`li!!"5!!!#$[J!!"A`"!kIkB
",M[H!!&m(Z!!3B$rR#JI!!""J[q-Zb(rj%k!!##r)IrN1f-Xe)$M,23i"rrr9!I
CIMZ(!!&mf60i1q!!!(qHihK)!!"FJ18!!)!%!!"m"`"3Iem!8$`D!!%S!2rr3))
!&#JI!!""JJ!-1q!!!8J!!#"mq[S8J!3!!(`(!%"!J3!-1q!!!8J!!!Jli!!!NeN
!!$Xj!!3iK!!%1+8!"$IHrrp!J2qN+"m!!%'#!(`li!!!1m!!!%J!!'"A`"!kI1B
!,PI!%$Tm'`!ZIk$k&(qRkK3S(3!!3))!&#JI!!""JJ!-1q!!!8J!!#4mrqK39m!
31R`'!#jm"`"!3)!!$$[J!!&)!!!)1q!!!&I!%$TrTJ%Z1pi!!A`Hi!""J2qJ+"m
!!%'#ribl)IrN6S!!)(`)!UDqSIr8N!!"!!L8)Il31U-!!$V%!!!kj3!!J(8Xp$J
$rrp8(YPq1a8XY$Ke!!!iPJ!!5!!9D@!!!!#6`3!i1q!!!%J!!"aAi"!kI*J!,PI
J%$SiB3$FI)-",M[r!!&m(r!!3)(rj$[J!!")!!!F9q!31Rb@!#jAi"!k1'%![(b
$!5ilr`!"I"r`!%#"rq3li!!!5!!!'$L!!!"Ai"!k1'%!R(b$!5ilr`!"I"r`!%#
"rqJi!!!"N!!"!(`li!!"5!!!'$L!!!"Ai"!k1'%!I(b$!5ilr`!"I"r`!%#"rqJ
iB3#m1)%!h)#K!$K)!!@*,!-!!%##!1!lJ3#m1b%!I$ZK!&`l33!m1(d!!$LF!!#
!S3!i5!!%S6Kk!!!iQ3!!1,i!!%J!"*&rQq0iIlcVH(ppfhKr1mYiIeR6H(pkfhL
!!3!i9!!31R`G!#iX!!!!3B!!($Km!!!iJ3$FJ+%!1%J!"48X!`!!3B,rS$J"!&a
m(3"!3))!B$[J!!")!!!J9q!31MKK!&amJ`!Z9q!31MKK!,amJ`%Z1rm!!B!"!$K
m(`!!3)(rh$[J!!")!!!J9q!31MKK!$amJ`!Z9q!31MKK!(amJ`%Z1rm!!A`Im!"
!JIrJ1'%!R$L"!(`i[J!!5!!#e6KK!0`iJ3#mJ+%!1%J!!cf!!3$F+!!!!8##!$`
li!!"5!!!(&IJ%$SiB3$FI!-!,LJ!!!"!JJ!81rm!!B!"!$Km(`!!3)(ri)!"!$K
m(`!!3B%#+$KK!,`iJ3$FJ+%!1%J!"$%X!`!!3B,rL%J!!$3iB3#mJ)%!1%J!!lN
iB3"m1*i!!%J!!kdiB3#m1)%!h$LK!$K)!!4K,!-!!%'#re5!!3#m9!!(rd##!"#
!!3"m9!!(rd'#rl`iB3$F1)%![)#K!$K)!!20,!-!!%##!1!lJ3$F1b%!R$ZK!&`
l33!m1(d!!$LF!!#!S3!i5!!#j6Kk!!!iQ3!!1,i!!%J!!Y9rQq0iIlcVH(ppfhK
r1mYiIeR6H(pkfhL!!3!i9!!31R`G!#iX!!!!3B!!($Km!!!iJ3#mJ+%!1%J!!eN
X!`!!3B,rS$J"!&am(3"!3))!B$[J!!")!!!J9q!31MKK!&amJ`!Z9q!31MKK!0a
mJ`%Z1rm!!B!"!$Km(`!!3)(rh$[J!!")!!!J9q!31MKK!$amJ`!Z9q!31MKK!*a
mJ`%Z1rm!!A`Im!"!JIrJ1'%!I$L"!*`i[J!!5!!"'6KK!,`iJ3$FJ+%!1%J!!B'
!!3#m+!!!!8##!$`li!!"5!!!(&IJ%$SiB3#mI!-!,LJ!!!"!JJ!81rm!!B!"!$K
m(`!!3)(ri)!"!$Km(`!!3B%!L$KK!0`iJ3#mJ+%!1%J!!R8X!`!!3B,rL%J!!$3
iB3$FJ)%!1%J!!IdiB3#F1*i!!%J!!I%iB3$F1)%![$LK!$K)!!+P,!-!!%'#re5
!!3$F9!!(rd##r*L!!3#F9!!(rd'#rla,rrb)1(8!!$LB!!!iS3#F10F!!%[rqS9
J!!!!5!!!,$[J!!")!!!F9q!31MKK!(amB`!Z9q!31Rah!5ilr`!"I"r`!%#"rq5
!!3%i1#%"-(`)!kDkSIr86S!!)*2Krrb6`Iri1m!!!%J!!&KAaa!kI--i,PI!%$T
m"!!ZI-B#&(c$15jA`"!kI!3!,R`'!%"!J!!X1ri!!8J!!"aAja!kI--i,M3'!!&
m!cNZ3))!%$[r!!&m(bJ!3)(rj$[H!!&m(LJ!3)(rU)2Krrb$`Iri6S!!)*2Krrb
6`IriNk(rp$[!!!")!!"J9m!31Rc%!#jA`"!kI!-!,RqQ!&"A`"!kI!-!,R`G!%"
!J3!`1ri!!8J!!#"Aja!kI--i,MJ'rrpm!cNZ+!B!!%##!"!lr`!"I"mS!%#"rq"
A`"!kIk-",M[H!!&m(LJ!3)(rS)2Krrb$`IriJk(rp%k!!##6iIrmI,mVH%J!!$a
Ai"!kI!3!,P3'#$aAi"!kI--",PIR%$Tm`cJZ1"rrre3!%$Tm"!!Z9!!2rRc!!hK
m!cNZ1rrrrb`I!!""JIr%J!3!!&3!#$b3!!-!!)2Krra1J!!JNq(rr$[J!!")!!!
i9q831R`$+#j8!2KqI!-T,PIQ%$TmSc!Z1"m!!93!%$Tm!`!Z9!$i!(bJ!hKm!c%
Z1rm!!A`I)!""J2r)9)831R`$+#j8!2KqI!-T,S2Krra1J!!JNq(rr(br+hK)!!"
)9q!31Rc$!#jAi"!kI!3!,R`'!%"!J!!-1'!!!%J!!$4Ai"!kI--!,PIJ%$Tm"!!
ZI!B!3%#"!!`iB!!"5!!!&$[rrrmX(`!!3)$rZ$KJ!!#$iIrm6S!!)*2Krrb$j3!
!5!!!F&IJ%$Tm``!Z9q!31R`%!#jm"J"!3)!!$$KJ!!")!!"F9q!31Rc$!#jAi"!
kI!3!,R`'!%"!J3!-1'!!!8J!!$aAi"!kI!-!,LJ!!!"!JJ!FJ!8!!(`I!!"!JJ!
3J-8!!$J'rrq3!!8!!$[rrrmX(`!!3)$rN!!iB!!!Jq(rr%k!!#"m#!+Q[X(rf*!
!!3!)P#(r8$V$!!!l*!!!1d8!!$VQ!!#!GLcd1!2rre3$fAil!`!"9`-)2$[Mrrp
)!!!B1)!!!&IJ%$SiB3"!I)-",M[rrrmX(`!!3)$rk$KK!$L!Q3!!J,S!!%J!!K9
J!!!!J!%!2*!!!3"!J!%!1*!!!3"%1q!!!8J!!5`lB!!!I"r!!%#!!)Jl`!!!5!!
!G$KK!$KA`"!kI*N!,R`Hq&"8!"!kI,S!,NJ!!FPJ!!!!Ji%!2)1K!$KAj"!k1'%
!3(`$)#jm!1)8I!-K,R`!i%"!J!!)1ld!!6JI!!&8""!k1'%!3(`$)#jm!1S8I!-
K,R`!k%"!J!!)1hX!!6[H!!&m([J!3)(rM%J!!)KmH2K31m-!!8J!!(3iB3!i9m!
31RbC!#jm([K39!!31Rbk!#j)!!&"B!!!!)1"!$b$S3!i9q331MKK!%"m!b!ZI!$
L&(`$)5jm!1"!3)!!#$Zp!!%i(`!"9!331MKK!%"m!b!ZI!$U&(`$)5jm!1K!3)!
!#$Yl!!%lhJ!"I"l!!%'!ri`i(`!#9!!31MKK!%"rB`%Z1rm!!9F$#$`i!rrqI"m
!!%'!rX`iB3!i1"Mrre3!%$TmQ3!Z1"Mrre3!%$TmZJ!Z5!!!S@!!!!#$J3!mJk%
!1&F$#$`i!rrq9!331MKK!%"m!b!ZI!$L&(`$)5jm!1"!3)!!#$Zp!!&A!`Jm1!2
rre3%%$SiB3"!I!-J,R`!kK4m!b%Z1(B!!$L"!%")!!S0B!!!!$[irrp)!!!F9q!
31MKK!%"mB`!Z9q!31Rah!5ilrrrr,"m!!%#!rq5!!3#i1#%!X(`)!kDk`IrB6S!
!)*2Krrb6`IriNk(rp&5'K$j8S)3qI!B"eT!!!`!!9)B%2P5J"$jm"J(@N!!$!!4
8KJ3q9+#%2RrQ!GCArB3q9rk!(S!$!!4m!2)8N!!$!!5!!`!%I!$`3%#!!!Jl[3!
"9+B%2P5!K$jrjJ(@9q#%2Rqp!K4ArS!HJ!-!"(`!mK53!!-!")!$!!4m!2"!3)!
!#$Zp!!'!!`!!I!$U&*!!!`!!Jq(rr)2"rrL$SIrd6S!!)(`)!UDqiIrFN!!"!!L
8)Ip31Z-!!$XN!!!l43!!1`B!!)"h,23i!rrr9!2CIMYM!!&AB`Jm1q2rrdJ!!"J
iJ!!!9q!31MKK!%"mJ`%Z1rrrrb`I!!"!J2rS1'%!1)#C!!"r4G0i5rrqm@!!!!#
!!3!mN!!"!%#!!3!iN!!"!%3li!!"5!!!J$Z!!!!iB3!i9q!31RbC!#jr4G0i5rr
q[@!!!!#$S3!mJm%!1&IN%$SiB3"!I!-J,R`!kK4m!b%ZI!$S3%#!!!JlhJ!"1"m
!!93%%$SiB3"!I!-J,R`!mK4m!b%ZI!$`3%#!!!JlR!!"1"m!!P3!%$SiB3"!Ii-
",M[r!!&m(pJ!3B$rJ$Kh!!!iJ3"!5!!)$@!!!!!lqrrr5!!!(&IJ%$SiB3"!I'-
!,PIJ%$TmH!%Z1rrrrb`I!!"!J2rNJ!%!Z$JK!,"m#!1QZZ(rh%k!!#"m#!+QNq(
rr*!!!3!)P#(r`*!!B3"BI*mMH*!!S3"JJ'%!@$LI!!!i[`!!J-%!B%[rqeeJ!!!
!J!%!5$JK!%"m#!1QJq(rr%k!!#"m#!+Q[f(rl*!!!3!)P#(qm$[M!!!lT!!!1i8
!!)"r,23i!rrr9!2CIMYM!!%l`!!!5!!!)&I$%$Si!bbdI*m!,PI!%$SiB3"BI)-
",M[H!!&m(YJ!3B$ri)!"!&K8!!Hq+!!!!d##!8Jl`!!!5!!!4&I%%$SiB3"BI!-
J,P3!m,jm!b%Z9mB31MLK!&KmK6!Z1"i!!93!%$SiB3"BI!-!,P3!m!*mJ!0iI!8
a,M[H!!%i'rrrI"i!!%'!rlKAa"!k1'%!@(`$)#j8!2#qI!-K,MKr!!!iJ3#B5!!
,L@!!!!!iI`!!1)%!@$LK!*Ji`3"B5rr`c@!!!!!iI`!!1*`!!%J!#f&J!!!!J(m
Xp$[$rre)!!"81(m!!$LF!!!i[!!!5rrqQ@!!!!!iB!!"9m!'rRaN!$"A`1Mk1'%
!@(`$!#jmJ!!j3B)!($Kr!!!iR!!!1,d!!$MF!!",rrRTB!!!!$[HrrmX(J!!3)$
rV$Kr!!!iR!!!1+%!Q%[rrN&J!!!!1(m!!$L"!*Ji[3!!5!!,5@!!!!!X!`!!3B)
!$$KJ!!&)!!9F1'!!!%J!"95!!3"B9!!(ILJ!!!9!JJ)d1m!!!%J!!%4Aa"!k1'%
!@(`$)#j8!1MqI!-K,PI'%$SiS3"BI)8`,MJH!!&8!"!k1'%!@(`$!#j8!1J%I)!
$H(`&-5ilhJ!"1"[rrh`H!!""J2qi9m331MKK!&Km!b!Z9!$SrR`$)5iiI`!!1)%
!Q%J!#M9J!!!!1(m!!$L"!&JiS3#B1-%!@%[rlhPJ!!!!1(m!!$LF!!")!!S0B!!
!!)"r,23l`rrm5!!!9$Kr!!!iR!!!1,`!!%[rr89J!!!!1'!!!9I!"[jmC!!`9m$
SqMKK!&Km!`!ZI)!!18'#!"`iI`!!1*`!!$Lp!!!ih!!!5rriP@!!!!!lh[rr,"i
!!%#!rk`iI`!!1*`!!$LK!*K,rrcYB!!!!$Kr!!!iJ3#B1,d!!%J!#I9J!!!!,!-
!!%'#!!`iB!!"5!!%#$Kr!!!iJ3$B5!!*B@!!!!!iI`!!1)%!@$LK!0Ji`3"B5rr
[Y@!!!!#!Ibcd1m2rr%J!!&3iI`!!1)%!f$LK!0K,rrb"B!!!!$KJ!!&A`!EqI'3
!-&I!k2SiB3"BI!-!,Rb!!$P"JJ!F1(m!!$L"!0JiS!!%1-%!f%[rq[9J!!!!1pl
rrb`H!!"!J2qX1(m!!$L"!0JiS!!#1-%!f%[rqY&J!!!!1(m!!$LF!!!iS3$B10`
!!%[rpj9J!!!!1(m!!$LF!!!iS3#B5rrlq@!!!!!iI`!!1)%!Q$Lp!!")!!N"B!!
!!#`$!!""JJ!-1'!!!8J!!a3iI`!!1)%!f$Lp!!")!!UjB!!!!)"r,23l`rrq5!!
!9$Kr!!!iJ3$B1+%!f%[rqk&J!!!!1'!!!9I!"[jmC!!`9m$SqMKK!&Km!`!ZI)!
!18'#!"`iI`!!1)%!f$Lp!!!i`3$B5rrfm@!!!!!lh[rr,"i!!%'"rk`iI`!!1)%
!f%J!#4PJ!!!!,!-!!%##!!`iB!!!5!!#I$[!!!")!!"%9m331MKK!&Km!b!Z9!$
iIR`$)5jAaK!k1+%!@(b&-#ii(J!"9!!31MKK!&Km!`!Z9!$i!(b!!hKm"6%Z1pi
!!6JErrpm(J!!3B$rZ&I%%$SiB3"BI!-J,P3!q(jm!b%Z1(m!!$L"!,K)!!GYB!!
!!$Kr!!!iJ3"B1+%!Z$M"!&K,rqbaB!!!!$Kr!!!iJ3!i5!!"p6Kr!!!iJ3$B5!!
(H@!!!!!iI`!!1)%!Z%J!"bPJ!!!!J(mXp$[$rrp)!!&N1(m!!$L"!,JiS!!#1-%
!Q%[rq3PJ!!!!1(m!!$L"!0JiS3!i1-%!H%[rpFeJ!!!!1(m!!$L"!*JiS3"i1-%
!H%[rl$&J!!!!1(m!!$L"!(JiS3$B1-%!H%[rpCeJ!!!!1(m!!$L"!0JiS3#B5rr
k!@!!!!!iI`!!1)%!f$LK!(K)!!MPB!!!!$Kr!!!iJ3#B1,d!!$M"!*K,rr9GB!!
!!$Kr!!!iJ3#i1+%!H%[rqF&J!!!!1(m!!$L"!(JiS3#B1-%!Z%[rl,eJ!!!!1'!
!!9I!"[jmC!!`9m$SqMKK!&Km!`!ZI)!!18'#!(3iI`!!1)%!f$LK!$Ji`3#B5rr
dq@!!!!!iI`!!1)%!Q$LK!,Ji`3#B5rrVA@!!!!!iI`!!1)%!f$Lp!!!i`3"i5rr
db@!!!!!iI`!!1)%!H$LK!,K)!!KPB!!!!$Kr!!!iJ3$B1+%!Q%J!#"&J!!!!1pl
rrb`H!!"!J2kF1(m!!$L"!,JiS3#B5rriq@!!!!!iI`!!1)%!Q$Lp!!")!!B"B!!
!!#`$!!""J[id1(m!!$LF!!!iS3#i5!!(`@!!!!!iB!!"J!%"'$JK!4"m#!1QZf(
rl%k!!##6iIrmNm(rq)2N!!!S(`!!3))!$$rJ998lre99J+-Xp$J&rrp8"GPq1m8
!!8J!!$"Ai!%*3B)!&&IJ#$aX(pGBDrmdZdJ!!!KAr`Jm1"lrre3!%$Trj!%Z1pl
rrb`H!!"!J[r3Jq(rr)2"rrK1J!!JI!J#TVm"rq#3!!%!#*3Krf!l!`!!1i3!!)"
i,23i!rrr9!2CIMY$!!&A3`Jm1f2rrdJ!!!JlHrrrI"[3!%'!!"4AB"!kI"`!,LJ
!!!""J[rSIhrEH$Xkrrp)!!!N9b-31MJ$,04mQ!!Z9q!31MKK!$KmJ`%Z1rrrrcX
jrrmX(`!!3B!!*#`C!!"!J2r85!!!'$L!!!"Ai"!k1'%!1(b$!5ilrrrr,"m!!%#
!rqK)!!%`9f!31MKK!$KmB`)89f!31RbF!K3iZJ!"5!!$K5`$!!"!J3"XIrVB8%J
!!%4Aj"!k1'%!1(`$)#j8!2KqI!-K,PIQ%$SiS3!iI)8`,MJI!!&8!"!k1'%!1(`
$!#j8!2J!I)!$H(`&-5ilr`!"I"rB!%'!rlaAj"!k1'%!1(`$)#j8!2KqI!-K,NJ
!!(`l`!!!IrVB8%J!!'KAi"!k1'%!1(aM!#jAi"!kI"`!,R`$!&"r[J"32"d!!5J
!rrp!JJ!8+"i!!%'#!!`l`!!"5!!!*(apmK4Ai"!kI"`!,R`$!%"!J3!-1m!!!8J
!!!Jl`!!!9q!31Rqm!5ilr`!"I"rB!%#"rjKAB"!k1'%!1(`$!#iS!!!!3),ql&G
J%$Tm(!!Z+!!!!%##rY`lHrrrI"[3!%#!rp5!!3#S1#%!S(`)!kDl!IrJ6S!!)(`
)!UDr!IrJN!!"!!L8)Iq!1`-!!$Z%!!#!H#cd1!2rre3$fAilB`!"9f-31MKM,,"
mH"S89f331ML%rramR#)81,X!!%J!!K%X!`!!3B%"p$[lrrp)!!!J9q-31MJ$,04
mQ!!Z9q!31MKK!$KmJ`%Z1rrrrb`I!!"!J2rJ5!!"&&GM%$Si!3!i1'2rr(aJ'K4
AC"!k1)6rr(bF)K3iZ`!!5!!"Y5`$!!"!J3"`1q!!!%J!!%4Aj"!k1'%!1(`$)#j
8!2KqI!-K,PIQ%$SiS3!iI)8`,MJI!!&8!"!k1'%!1(`$!#j8!2J!I)!$H(`&-5i
lr`!"1"[rrh`I!!""J2qi9q331MKK!$Km!b!Z9!$iIR`$)5j)!!"m1m!!!$[J!!"
)!!"S9q!31MKK!$KmB`!Z9q!31R`F!#jm!`"3Ili!8$`G!!%S!2rr3))!&#JH!!"
"JJ!-1m!!!8J!!#4mII)89q!31R`F!#jm!`"!3)%!$$[!!!&)!!!)1m!!!&IJ%$T
r[!%Z1rm!!A`If!""J2qBJ!%!1&3!"rp"J[lS9f-31MJ"!$JiBrrmI'!D&&GN%$S
iK2rmI*`L&$Ll!!")!!#C,!-!!%'"!(`l3!!!1q!!!%J!!'KAi"!k1'%!1(aM!#j
Ai"!kI"`!,R`$!&"r1J"32"N!!5J!rrp!JJ!8+"S!!%'#!!`l3!!"5!!!*(ajdK4
Ai"!kI"`!,R`$!%"!J3!-1d!!!8J!!!Jl3!!!9q!31Rmm!5ilr`!"I"rB!%'!rjL
!!3#)1#%!J(`)!kDl!IrJ6S!!)%J!!$b!``!!J!3!!(`'!%"!J3!-1'!!!8k!!##
!``!!J!3!!(`'!%"!J!!-1'$rrdk!!#!iBrrm1)6rr#`&!!!iTIrr3B(r`$KJ!!"
1J!!JI!J#TT2Krrb3!!%!#*3Krm#3!'%!@(bI)hL!B3"BIq6lH%[rr6eJ!!!!J"m
!!&3$"rk!!3")1#%!3(`)!kD$iIrm6S!!)*2Krrb!Sbcd1!Arre3&fAilj3!"1!!
!!C!!"!!!1)3!"%J!!"!i!!!!N!!%!!!iK!!%0rrrrd'"rr#$iIrm6S!!)*2Krrb
!Sbcd1!Arre3&fAilj3!"5!!!%$J!!!#3!!3!!$L%!!3hrrrr3)$rm)2Krra1J!!
JI!J#TT2Krrb6`IriNk(rp*1"rr#3!!%!#*3Krl!l``!!1i3!!$ZP!!!iIJ!!1*`
!!%[rr(9J!!!!1(i!!$LG!!",rraPB!!!!$[J!!")!!!S9q!31Ram!#jAi"!kI"d
!,R`$!%""JJ!-1'!!!%J!!#3lr`!"J(iXp$J$rrp8!pPq1!-!!A`I!%""J2r)1'!
!!B!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp)1"rr"1J!!JI!J#TT2Krrb6`IriNk(
rp*!!!3!)P#(rX$ZM!!!la!!!1(d!!$LH!!",rr[0B!!!!)!H!!!S!!!"3B)!$$K
J!!")!!"%1q!!!8J!!#"Ai"!kI"i!,LJ!!!""JJ!-1'!!!%J!!#3lr`!"J(dXp$J
$rrp8!pPq1!-!!A`I!%""J2r31'!!!B!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k
!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`1k-!!$[%!!!iI3!!1*i!!%[rqbe
J!!!!1q!!!%J!!#"Ai"!kI"i!,LJ!!!""JJ!-1'!!!%J!!#3lr`!"J(dXp$J$rrp
8!pPq1!-!!A`I!%""J2r31'!!!B!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k!!##
6iIrm1q!!!%J!!"L!"3!!N!!%!!!iK!!%1+8!"$[r!!'!`bcd1!Erre3'fAii"J!
"I"m!3%'!rpL$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)Ir!I(mEH*!!J3"FN!#K!'!
iI`!!1*mXY)#K!&b!`3"J5rrMX@!!!!#!!3")1#%!3(`)!kD$iIrm6S!!)(`)!UD
3!!%!#*3Krm#3!'%!@*!!J3"FN!#K!'#!B3"BJ)%!B)#K!&a,rrp9B!!!!)!"!%J
i)3"!I!J$TNk!!#"m#!+QNq(rr*2"rrL3!!%!#*3Krm"mIKYiN!#"!&am[bYi1(i
!!$LI!!#!S3"F5rrr%@!!!!!iIJ!!1*m!!%[rqFPJ!!!!J!%!5$JK!%"m#!1QJq(
rr)2"rrK1J!!JI!J#TT2Krrb6`IriNk(rp*!!!3!)P#(rX(aq'hL3!)%!E)"q,23
i!rrr9!2CIMZM!!%i!P%%N!!H,2ar`r0iJ*iXp$J%rrpm""j`I)3"P$L%!!'!S3"
X10iXY%J!!NeJ!!!!1q!!!%J!!#"Aia!k1!-XY(bH!#jAia!k1!-Xe(bH!5ilr`!
"I"rS!%'!rq")!!"J1rhrrdJ!!%4Aia!k1'-Xe(`H'#j8!!JmI"iC,PIM%$SiSbc
8I*iS,MJIrrp8!a!k1!-Xe(`H!#j8!!rqI)!$H(`H+5ilrrrr,"m!!%'"rlb!(Lc
89!!)2*!!(Lc81"hrre3$%$Si!bc8I"i!,L`!!!""JIq3!)!"!&Ji)3"3I!J$TS2
Krrb$`IriJk(rp%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`I(dEH*!!J3"
XN!#K!("mhM0iIk2VH)#"!'b!S3"`J0dXr)''!"a)!&aTJ%%!&(ar'hJX(`!!3))
!%$J!!!'3!"i!!%J!!#!X(`!"3))!%$J!!!#3!"i!!%J!!!`iB!!"5!!!#$KJ!!#
!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J#TT2Krrb6`IriNk(rp*!!!3!
)P#(rX$[$!!!lT!!!N!#K!(!li!!!1(i!!$LG!!!iS3!i5!!#+@!!!!"rraYiJ!%
!1#`!!!&!JJ!N1(i!!$LG!!#!S3"`J0iXr)''!!4)!&ZYJ%%!&%J!!!`iB!!"5!!
!#(rMqhL!!3"B1#%!8(`)!kD$iIrmJm(rq)1Krr41J!!JI!J#TT2Krrb3!!%!#*3
Krm"mIaYiN!#"!&b3!+%!B*!!`3"NIq2lH)#"!&b!S3"JJ-%!C)$r,2b"K`!!5!"
E3B""!"3iB!!!J!%!5$JK!%"m#!1QJq(rr%k!!#"m#!+Q[b(rj*!!!3!)P#(rJ(a
j'hL3!)%!R(bm+hL3!-%!T)"j,23i!rrr9!2CIMY$!!%lB!!!J'%!R$[Mrrp)!!"
)1k!!!$[!!!")!!!FI(ciVPI!'$KmB!!`Ild$H$[H!!%lrrrr,"m!!%'!!!`S(J!
%3B$rh&GJ%$SiB3!iIk-",MYl!!%X(`!!3B!!*(`Ed!""J2q`5!!!'$L!!!"AB"!
k1'%!1(b$!5ilH`!"I"[3!%'!rqL!'5cd9!!'rd'#!$!i'[rr9!B31MLK!$KmK6!
Z1'$rri!C,248!!Eq)!!!)(aJ"$"mJ!!iI!8a,MKj!!!iJ3!iJ+%!T)$C,2b"KJ!
m5!"D)B""!"3iB!!!J!%!L$JK!)"m#!1QZb(rj%k!!#"m#!+QNq(rr*!!!3!)P#(
r`(ar'hL3!)%!A*!!S3"JIq2lH)#"!&b!S3"JJ0mXr)''!$")!&R4J%%!&$KJ!!#
!!3")1#%!3(`)!kD$iIrm6S!!)(`)!UD6iIrmNm(rq*1Krr53!!%!#*3Krl"mI4Y
iN!#"!'am[LYiIk2VH)#"!'b![5cmJB8!)%J!@Af!33!8I(mEH#`I!!"!JJ!31!!
!!C!!(J!!5!!!)#`I!!&!JJ!31!!!!*!!(J!!5!!!$$KJ!!&)!!!)1'!!!)!"!&J
i)3"3I!J$TS2Krrb$`IriJk(rp%k!!#"m#!+QNq(rr*!!!3!)P#(rS(ar'hL3!)%
!I*!!S3#!J)%!I)"N!!#!"!!%N!"K!$L3!!%!2)"N!!L!"!!-N!"K!%#3!!%!4)"
N!"#!"!!8N!"K!%L3!!%!6)"N!"L!"!!FN!"K!&#3!!%!9$Kr!!!iJ3!iJ+%!J)$
I,2b"KJ!B5!"BVB""!"3iB!!!J!%!D$JK!'"m#!1QJq(rr%k!!#"m#!+QNq(rr*!
!!3!)P#(r`(ar'hL3!)%!A(rMqhL!J3"FJ,mXr)'&!"4)!&KPJ%%!&$KJ!!#!!3"
)1#%!3(`)!kD$iIrm6S!!)(`)!UD6iIrmN!!"!!L8)Ir!I(mEH*!!J3"FN!#K!'#
3!-%!C(rMqhL!J3"FJ+%!B)$"!'5!rbcmJBF!,%J!@!f!33!81'!!!)!"!%Ji)3"
!I!J$TS2Krra1J!!JI!J#TT2Krrb3!!%!#*3Krm"mIaYiN!#"!&b3!+%!B*!!`3"
NIq2lH)#"!&b!S3"JJ-%!C)$r,2b"K`!-5!"AYB""!"3iB!!!J!%!5$JK!%"m#!1
QJq(rr%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`I(dEH*!!J3"XI,iVH(q
MkhL!J3"XJ,dXr)'&!#4)!&GKJ%%!&(ar'hJX(`!!3))!%$J!!!'3!"i!!%J!!#!
X(`!"3))!%$J!!!#3!"i!!%J!!!`iB!!"5!!!#$KJ!!#!!3"B1#%!8(`)!kD$iIr
mJm(rq)1Krr41J!!JI!J#TT2Krrb3!!%!#*3Krm"mIaYiN!#"!&arirYiJ)%!A)#
r,2b"K3!35!"@hB""!"3iB!!!J!%!5$JK!%"m#!1QJq(rr%k!!##r)IrNJ--!!)!
%!!"m"J!!3)!!%(aj'hKmJb0iIb6,H$YM!!3l4!!%1k8!"$[!!!#$K!!!5!!!3&I
("$kJf`!!S"S!!(rJ1K4rj[S81hX!!MYD!!+cr3!!1ld!!PIJ!"p"JJ!-1!!!!8J
!!!Ji!!!!9"i%2MHFrrp!J2r!J-3!!)!$!!"rKJ"35!!!0+$E!!"A`!3qIqB#&$Y
l!!+cr3!!1ld!!PIJ!"p"JJ!-1!!!!8J!!!Ji!!!!9"i%2MHFrrp!J2r-J!-!!*!
!"3!!9m!%2d'#!#5!!`!!+!!!)%#!!"Ji!!!"X"d!!)$&!!!i"J!"N!!&!!!iB!!
!Zb(rj%k!!##q`IrBI!-S3%'#!!am"#K!3))!$$X"rj!!5!!!#(bi+hJlf!!%Ji-
!!%J!!"!i!!!!X"i!!$[H!!)hR2rr3)$rm$VN!!3l1!!%JX3!!%J!!&bM9`!!1[F
!!RmqbhJlB`!%1k!!!)1$!!")!!!`9kB%2U!H!!"A5!3qS2X!!(cS1GCrjc)8Iq$
k&$Yl!!+crJ!!1pi!!PIpK$ihR2rr3)$rd,1q!!!l13!#0YErrd#!rk5!``!!J!3
!!(`'!K53!"J!!)!B!!!X!!!!3)%!-)!B!!"8"JJm1mB!"(rBmK5N([rq+!!!!%#
#!"5!f!!!0!Errj!!'!!!3B(rk$J"rj!!I"J!3%##!#Jj"Iri12Mrq$J!!!Pm#31
QK-F!#)!(!!58b!!)N!!)!!4#!2r`1'!!!,V"rpK1J!!JNq(rr*2"rrL6SIrdNi(
rm$[J!!#!!`!!N!!&!!#!!`!!9!F)2$ZR!!4rSqS8J!8!!&3(#$`la`!%ImAb&)1
$!!")!!!X9rq!(U3Grrjrr`0i9)!%2Rcr!jDdr[rq9)F%2R`I1jCm!$R@Iq$i8$H
Frrp!J2r8J!8!!#`!!!"!J3!`J!8!!&3(#$`la`!%ImAb&+3HrriS!!!!3))!&)$
P!!!d"rrrN!!&!!""JIrSXqB!!$KJ!!#$iIrmJm(rq)1Krr5$JIr`6S!!)(`)!UD
q!Ir!N!!"!!L8)Im3N!"K!3JkT!!!1N8!!*!!`3%8J'%"#$L9!!!iS3!m5!!(f@!
!!!#!!3!m,!!!!8##!(5!S3%)J)%"&)"P!!#!"3!%N!"N!!#3!!3!")"P!!L!"3!
-N!"N!!L3!!3!$)"P!"#!"3!8N!"N!"#3!!3!&)"P!"L!"3!FN!"N!"L3!!3!()!
&!##3!!3!)+!&!#5`"!!N1()!!$L!!!")!!0jB!!!!$KJ!!")!!0BJ"8!!#`!!!&
"J3!`J'%"#+#9!!3iXJ!!1-%!1%[rrQf!B3%8S)%!1%J!!d&J!!!!1'!!!%J!!b!
k)!!2J(8!!$J$rrp8!`Jm1!-!"(qe!Lj)!!!)1M(rreHM"$ii!!!"9!!%2RaJ"M"
8(33r3),rk)"K!3JiB`!%J)%"#)#%!!!iX3!!1-%!DMMJ!#%j!3"!5!!$*@!!!!!
iG3!%J*8!!$La!!!i`3")11!!%$N"!%4)!!-&B!!!!)#"!%#!B3%)J!-!!(`%!!"
!JJ!J1)!!!)"K!%!i!`!"N!!"!%"8B!Jm1'%!DRb$!bikS3"%J!%!3&3!#$`l!3"
UIaJ#&)"e!!#!!3"!I!-!8*!!%J!!J")!!&3$#$`kJ`!%IT+L&)"e!!!i!rrr9!-
)2$J$!!4qp3)ZJ(8!!$J$rrj8!`Jm1!-!"(l9!Lk!G3!!J!%!3(i$!&")!!&m1aM
rrU"i!!#LH2rq8(1!(U"i!!"@i!3qI!-!3%'!!"!mB!!"1'2rrdJ!!!a@i!3qI(-
$PP4m"$jAJ`3q9Z!%2R`$!GCrB*K35!!!%$ZFrrp@i!3qIhX#&&GJ!"p!JJ!J9i-
%2PE!"$jm!`(@S(Mrr&0MJ"jm!"K!3B(re$ZJ!!!l93!%J"8!!&3!#$ar`-"3Jc8
!!%J!!$4AT!3q9i-%2U!D!!"m!`(@S(i!!(`!'&"rj!"31eS!!V2q!!!lhJ!#9q#
%2RqJ!0!h1Irr3)$rc&HM"$kJ(J!!Iq-!8,2q!!#hP2rq9q!!(d'#!*!!S(3!!$J
$rrq`&!!!1k!!!$Y9!!5!&3!!9!!)2(r!`&#$03!!5!!!2&HJ"$kJRJ!!S(S!!(r
M!K4rj2S81eS!!PIJ!"p"JJ!-1!!!!8J!!!Ji!!!!9"d%2V2q!!!lhJ!#0cRrrd#
!rm5JIJ!!9k!%2RrM!K4Ai!!I3B)!$$J!!!&)!!!)1!!!!,2q!!!f%2rr3)$qK)!
5!!"8!`Jm1S-!"(k5SK5N&2rq+!!!!%##!"5!FJ!!0!2rrj!!%J!!3B(rk)!"!%"
8!!Jm1m%!DRrH!K5N([rq+!!!!%##!"5!B3"!0!2rrj!!!3"!3B(rk$KK!'U!J3"
!IL@,H)$"!43iaJ!%11!!%)%"!44)!!64B!!!!$KJ!!#!!3$i1#%!m(`)!kDk!Ir
!6S!!),#$!!48J)3qX!-!"U!$!!BS!!!!3B)!%$J!!!+3!!-!!%J!!#5J!`!%+!!
!!%'#!"!i!!!"N!!$!!")!!!-1!!!!*!!!`!!1'!!!%k!!##r!IrJ9,MK2P5l"ci
M@`!3I"Ji!%'!!"3i!!!!N!!)!!!iB!!!5!!!e(`B1&"m"!!!3)!!,(bC)hJlQ!!
"IjRL&&FJ#$ar``)89i!)2(rQ!K3i!!!!Y"rrrNJ!!#ap1$K31bRrrhcm1hKA)!J
mIm-#&&H!#$arjJ)8S"i!!(`*f$#e2rrqIch,H%J!!#5K2`!!T"lrrR`!eM"p)!0
iX"m!!+!H!!"m#GJ`Y6rrrMHprrp!J2rFIah$H%J!!!`i!!!!Y"rrrMHprrp!J2r
d,"`!!%#"!#"AJ!JmIqB#&+3IrriS!!!!3))!$$HFrrp"JIr`NiJ!!$KJ!!#l!Ir
J6S!!)(`)!UD3!!%!#*3Kri#3!'%!Q*!!J3#FN!#K!+#3!-%!T)"K!*L!J3#F1+%
!1%[rphPJ!!!!1'%!1)#"!+#!S3#N5!!!(@!!!!!iB!!!J!%!L$JK!)"m#!1Q6S!
!)(`)!UD3!!%!#*3Kri#3!'%!Q*!!J3#FN!#K!+#!B3#BJ)%!R$LK!$L!`3#J5rr
k(@!!!!!iB!!!J!%!L$JK!)"m#!1Q6S!!)*2Krrb6`IriNk(rp)!$!!!X!!!!3)%
!9$[!!!#!S`!!1!Arre3&#$`i"3!%Ik-#,MrJ!!%lrrrr5!!!$&Ir#$`lhJ!"9k!
%2RrJ!$P!J[r`J+-!!$LPrrp8S#!fI"i#&*!!"!!!5!!!$$J!!!#3!!3!!$KJ!!#
$iIrmJm(rq)1Krr41J!!JNq(rr*2"rrL6SIrdJ!-!!#`!!!"!J3"S1k!!!)#M!!!
i"Irr9!8)2$J&!!4r``)Z1q!!!%J!!#KA`!Br3B)!#$Zr!!&Aa33q1!!!#&3!"$j
mS!B`9"i%2M[r!!%S(`!#3B$rf)#M!!!i"Irr9!!)2(`G!K53!!3!!%J!!!`i!!!
!N!!%!!!iB!!!Jq(rr)2"rrL$SIrd6S!!))!$!!"8!#!fI!3!3%#"!!`iB!!"6S!
!))!$!!!X!!!!3))!%$J!!!#3!!8!!%J!!#"8KZMm1!B!"(c$!Lj8J!FqI-!'-&3
!"rk3!!8!!$KJ!!"1J!!JNq(rr*2"rrL6SIrdJ--!!)!%!!"m"J!!3B)!%$J!!!#
3!!8!!%J!!&b!!`!!9!B)2$['!!4r`r)8J!3!!&3'#$`lTJ!%Ik6U&)2M!!")!!!
NT0lrrU3Grrjm"J"!3B)!&$J!!!#3!!8!!$KJ!!")!!!B0rrrrd#!rp`i!!!"N!!
&!!!iB!!!Jq(rr)2"rrL$SIrd6S!!)*2Krrb6`IriNk(rp)$$!!#!"!!!I!B!!%'
#!#L!``!!J!3!!(`'!!"!J!!-1!!!!8J!!!Ji!!!!N!!&!!")!!"dJ!-!!&3'#$`
ljJ!%Iq2k&)!%!!"8"JJm1mB!"(r%mK5$S`!!5!!!2+6IrrkN([rqI!B!3%'#!#b
Jh`!!S"i!!(`'!%"!J!!-1!!!!8J!!!Ji!!!!N!!&!!!iB!!!5!!!'$Hprrp!J2r
%1!!!!*!!"3!!1'!!!)2Krrb$`IriJk(rp%k!!##r)IrN9,RK2P5m"ciMA!!3IlN
J8#`G!!""J3!81!!!!*!!#!!!1'!!!%J!!)"m(6J!3)%!#(cp1hKmhc0i9b!)2(r
$!K3lIIrr5!!!,+!H!!"m#HB`X6m!!$[H!!+K2`!!S"i!!(`!d$"p)!0iX"m!!$[
r!!)hHrrr3)$re+!H!!"m#HB`X6m!!$[r!!+N(rrq+!!!!%##!!`h[Irr3B(rm*1
S!!!iB!!!Zb(rj%k!!#"m#!+QNq(rr*!!!3!)P#(rS(ar'hL3!)%!I*!!S3#!1!!
!!*!!(`!%J'%!I)#"!)!i[`!)5rpIf@!!!!#!(`!%B!!!!C!!(`!%J"m!!&3!"Hp
"JJ!J1(m!!$L!!!!iS!!!1-!!&$MK!$K)!!!YB!!!!)!I!!4J!!!#N!!I!!3iB!!
!J!%!D$JK!'"m#!1QJq(rr%k!!#"m#!+QNq(rr*2"rrL6SIrdNi(rm*!!!3!)P#(
qm(ar'hL3!)%",$Z&!!!lT`!!+"`!!%'#!%L!B3%X1*`!!$LK!(K,remjB!!!!$K
K!(JiR`!)1,m!#%[rmUPJ!!!!I(iEH#`H!!""JJ!-1'!!!8J!!6Ji!!!+N!!I!!J
iI`!)1)!!'$LK!&j,rei9B!!!!$KK!+")!!bjB!!!!$KJ!"3iJ3"L1+%!S%J!#3e
J!!!!1'!!,$L#8@iiS3#J5!!)q@!!!!!iB3#J1*d!!%J!#L&J!!!!1'!!&$LG!!!
iS3!i5rpHR@!!!!#!(`!!9!!([8'#!$!iB3!i1*m!9$LK!(K,rrUjB!!!!$KL88J
iJ3"i1+%!1%[rmHeJ!!!!5!!!'$KL88JiJ3!i1+%!1%[rmG9J!!!!1'%!1$LI!!J
i[`!)5rra`@!!!!!i!!!+N!!I!!L!(`!!9!!&ld'#!%b!(`!%,!!!!N'!!#`iI`!
)1*m!,MLJ!#C,r[&CB!!!!(aq'hJX(J!!3))!$$KJ!!&)!!!F1(m!,MLI!!JiS!!
Q5rlYX@!!!!!iB!!!J!%"'$JK!4"m#!1QJq(rr)2"rrL$SIrdJi(rm%k!!#"m#!+
QNq(rr*2"rrL3!!%!#*3Krj!!I(iEH*!!J3#-N!#K!*!!J'%!M)#"!*!!1+%!1%[
rABPJ!!!!1'%!1$LH!!Ji[J!)5rr`q@!!!!"mIaYi,"m!!%'#!!`iB!!"5!!!#$K
J!!#!!3"i1#%!F(`)!kD$iIrmJm(rq%k!!#"m#!+Q[`(ri*!!!3!)P#(rN!"mI"Y
iN!#"!)`l"3!!1bB!!$YR!!!S'3!!3))!$$KJ!!")!!$B+"J!!%'#!"4rJq0iJ)%
!M(m&`hK,rrp"2'$-c6KMc-em!mJ@9"hK2M[J!!")!!!i1(`!!$L!!!!iS!!!1-!
!&"`I!"4mq`)85rrp5Aaq'hJX(J!!3B)!$$KJ!!&)!!"i1rm!!A`Ik!""J2r)2'$
-c6KMc-em!mJ@9!$K2K`!!"4r3-K3,"S!!%'#!%JiI!!!1)!!!$LJ!!!i`!!811%
!1%[rr2&mIKYi,"i!!%'#!!`iB!!"5!!!)"`G!"4mH`)81)%!1$Lk!!",rZ`4B!!
!!$KJ!!#!!3"i1#%!F(`)!kDl!IrJ6S!!)(`)!UDr)IrNN!!"!!L8)Iq3!*!!B3#
)1b3!!$YP!!!S'3!!3))!$$KJ!!")!!$-Jk%!L$aJc-diBmc0I!2)&P3Fi6ili!!
!5!!!2$Kp!!JiJ!!!1+!!!$M!!"3F(`!8I2X#&%[rr%PJ!!!!I(iEH#`H!!""JJ!
-1'!!!8J!!(`lr`!"I"rJ!%'!rm3mB-c01'2-cA`$b"C8!1%q(!!!&(p!b&!X'J!
!3B)!6$Kp!!JiJ!!!1+!!!$M!!"3ii3!i5rrll@!!!!"mIKYi,"i!!%'#!!`iB!!
"5!!!)"`F!"4mH`)81)%!1$Lk!!",rZX*B!!!!$KJ!!#!!3"i1#%!F(`)!kDl)Ir
N6S!!)(`)!UD3!!%!#*3Krm#3!'%!@*!!J3"FN!#K!'#!B3"BJ)%!A)#K!'",rrl
9J!%!5$JK!%"m#!1Q6S!!)(`)!UD6iIrmNm(rq*!!!3!)P#(r3*!!B3$BN!#"!0b
3!+%!i*!!`3$NJq%!f)!"!0b3!"m!")!#$V#3!"m!JS!#$Ub3!"m!KS!#$UL3!"m
!LM[I!!Ji!!!"N!!H!!!iB3"-5!!)@@!!!!#!B3$JJ)%!j$LK!%a)!!5YB!!!!$K
K!%`iJ3!i5!!&e@!!!!!iIJ!!1)!!&$LK!$K,rrT*B!!!!$aJ48-iBe4,N!"r!!!
iB!!!J!%!b$JK!-"m#!1QJq(rr)2"rrK1J!!J[b(rj*3KrU#$K3!)Jm8!$)0P!"#
$43!8Jb8!'$KJrrq!"3!%I!-!3%#"!"5!C3!%1!-!!C!!"3!%5!!!1$aJ!)#!"3!
!1'2rrh`$!%"!J3!FJ'8!!$J$!!'3!!8!!$J!!!#3!!8!"%J!!!`iB!!"5!!$i$[
J!!")!!#N9q-31MJ$!!0m"!#Z9q-31MKM!!*mj"LZ9q-31RaN'+j8CN!Z9q-31MK
M!!&mC"LZI'BD&&4M3#jmCaS89'0!,Rc!'K4Ai"!k1'%!!(c$!5jAi"!k1'%!!(c
M!#jAKLlq8iBS0(r$f$Kr32"iI'!$H(`!bK4mB$S82k0DJMZpHCPrTZS8IeR6H(p
kfhKAfr!#8p[`[RqHihKr[1Yi1rm!!5`I!"""J2pF5!!!Y$JIrr"8!"!k1'%!!(`
$!#iiIrrb9'B31MKK!!"p!c!Z1(rrr94Q%$SiB3!!I1-`,MKrrrK8CK!k1'%!!(a
M-#jmiaTiI3-DH(`G'RKATJrq8kB)2&IJ%$SiB3!!I--",PIJ%$SiB3!!I1-!,PH
',[j6KLJdIm2B1(p!m(KmB!0iI!$+&(aJ1K3rSeU#1lejQAqQkK4r@G0iIhVEH&I
Em!*6fr#qIjlMH(qmkhJlr`!","m!&%'!rda)!!#`1"rrm&3!%$SiB3!!I!-!,MK
rrr*8CK!k1'%!!(d$-#iiIrrp9'B31MKK!!"mic!Z1(rrq&4Q%$SiB3!!I'-`,Rc
M'RKp!aTiI"dDH&HQ$rj6TJJm9q!31MKK!!"m``%Z9q!31MKK!!"mB`!Z9iBZrP1
'+$4r`0TiId!#H(`!bK4mB"S82k0ZfMZpkk&rTZS8IeR6H(pkfhKAfr!#8p[`[Rq
HihKr[1Yi1rm!!5`I!#K"J2p35!!!Z$JIrr"8!"!k1'%!!(`$!#iiIrrb9'B31MK
K!!"p!c!Z1(rrr94Q%$SiB3!!I1-`,MKrrrK8CK!k1'%!!(aM-#jmiaTiI3-DH(`
G'RKATJrq8kB)2&IJ%$SiB3!!I--",PIJ%$SiB3!!I1-!,PH',[j6KLJdIf$6H(r
$!$KrB0!iI'!$H(`!bK4mB$S82k12($Zp[0arTZS8IeR6H(pkfhKAfr!#8p[`[Rq
HihKr[1Yi1rm!!5`I!$a"J2p)5!!!X$JIrr"8!"!k1'%!!(`$!#iiIrrb9'B31MK
K!!"p!c!Z1(rrr94Q%$SiB3!!I1-`,MKrrrK8CK!k1'%!!(aM-#jmiaTiI3-DH(`
G'RKATJrq8kB)2&IJ%$SiB3!!I--",PIJ%$SiB3!!I'-!,PH',[j6KLJdIm$DH(p
!!RKm!-S8I'!D&$qMbQ-l[F(@IkEU&(pCdhKrHYYi9p[`!P2Em,jrRZ0iIlcVH$[
r!!%X(`"33B$r8)!&!!Km!1)8N!!&!!L!"3!-I!$b&*!!"3!-J!8!%(`!fK53!!8
!%)!&!"4m!0)8N!!&!"5!"3!BI!$+&*!!"3!B1'!!!$JK!@#l)IrN6S!!)(`)!UD
r3IrSN!!"!!L8)Iq`1d-!!$Z%!!!la3!!1k!!!)!H!"`S!!!!3B)!M)!H!"`MS!"
!I"VS3%#!!$5!IJ!F1'-!)(aq'K3iR!!!1,S!!%[qj8PJ!!!!J"i!((`!dK53!"i
!($KJ!!")!!#mJ(i!($KM!#"mIKS81*`!!$Lp!!",rZ8CB!!!!)!H!"am!1S8N!!
H!"b!IJ!F1*i!)$Lq!!",rrX*,!-!!%'#!!`iB!!"5!!!G(`Gd&"8'p'q1q!!!%J
!!$!iB!"!9q!`-Rb!iK4mR5)81,i!!%[rqY%X!`!!3B)!$$KJ!!&)!!!m1rm!!A`
If!""J2r3I"h38&3!"Vk3!"i!($Kq!#"Ai$!bI)$L&(bG)K5![J!F5rlNJ@!!!!!
iB!!!J!%!@$JK!&"m#!1QZd(rk%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Im
31m-!!$[N!!!lS3$B1+%!-$LHrrJi!!!-I!N$TS4N!!L!"!!%P'8!#*!!"3!%3J$
rm)!H!!"8!%JXN!!"!*L!J3#BJ(i!"&4J6IjmJ!*iN!!"!*L!(J!%9!0),)!H!"a
8!"JiI!-#&*!!!3#F1'%!S$L!!!!iS!"!5rlQY@!!!!!iB3#J1*i!))#q!"a,rZ2
"B!!!!)!H!"`S!!!i3B!!2$L!!)#!(J!F1'%!S(b$!DiiB!"!1)%!S$LK!$K,rrQ
K1'%!S$L!!!!iS!"!5rlQB@!!!!")!!!81)!!J)!H!"`iB3#JI)-"VS!"!*K8!%B
qQ"d!!)!"!*K8!)BqQ"d!!B!"!*K8!-BqQ"d!!S"K!*LBI3!$J!%!R&3!4MkB(3!
%J!%!R&3!KMkB(3!&J!%!R&3!aMkB(3!'J'%!R*Kp!!FiB!"!1)%!S$LK!$K,rrN
4J!%!3&3!4MkB(`!!J!%!3&3!KMkB(`!"J!%!3&3!aMkB(`!#J'%!3*Kr!!1!!3"
%9!"'2TJI!!5!!3"%9!#'2TJI!!@!!3"%9!$'2TJI!!D!B3"%Q(m!"i!"!%K8!%B
qQ"m!#)!"!%K8!)BqQ"m!#B!"!%K8!-BqQ"m!#S"K!%LBI`!,J!%!6&3!4MkB(`!
-J!%!6&3!KMkB(`!0J!%!6&3!aMkB(`!1J'%!6*Kr!!q!!3"39!"'2TJI!"#!!3"
39!#'2TJI!"'!!3"39!$'2TJI!"+!B3"3Q(m!%cKJ!!#!!3$i1#%!m(`)!kD$iIr
mJm(rq)1Krr41J!!JI!J#TT2Krrb3!!%!#*3Krm"mIaYi1!!!!*!!(`!%N!!I!!!
mB'G&1'-M!C!!I`!)2'$[cMKMUiQ3!(m!$$aJQ,XiBpcqN!"r!"!mB"!b1'08GT!
!I`!82'$$dcKMiI#3!(m!'$J!!!#3!"m!($Kr!#!iJ!!!1+!!3%[qj(&J!!!!1'!
!!)!"!%Ji)3"!I!J$TS2Krra1J!!J[d(rk&5k%$Tm!p"39"[`[P4m"liS"3!!3))
!$$KJ!!&)!!$J+!-!!%##!!`iB!!"5!!!d(`$d%"!J3!-1'!!!8J!!-!li!!!5!!
!&$MJ!!"Ai"!kI1B",M[r!!&m'rJ!3B(rl$MJ!!"Ai"!kI1B",MZJ!!")!!!N9q!
31R`'!#j8"d!ZI!6SVRcR!K4Ai"!kI1B",MZp!!&m(1J!3B(rh#`F!!"!JJ!-1!!
!!%J!!!Ji!!!"Irm#&%J!!$`l`!!!5!!!+&IJ%$Tm"J!Z9!G!,R`%k+jmj`)89q!
31RcQ!5il[3!"1pi!!5JH!!4"J2rB1rm!!A`$k%""JIr%1'!!!,Y"rqK1J!!J[d(
rk&5k%$Tm!p"39"[`[P4m"liS"3!!3))!$$KJ!!&)!!$J+!-!!%##!!`iB!!"5!!
!d(`$d%"!J3!-1'!!!8J!!-!li!!!5!!!&$MJ!!"Ai"!kI1B",M[r!!&m'rJ!3B(
rl$MJ!!"Ai"!kI1B",MZJ!!")!!!N9q!31R`'!#j8"d!ZI!6SVRcR!K4Ai"!kI1B
",MZp!!&m(1J!3B(rh#`F!!"!JJ!-1!!!!%J!!!Ji!!!"Irm#&%J!!$`l`!!!5!!
!+&IJ%$Tm"J!Z9!G!,R`%k+jmj`)89q!31RcQ!5il[3!"1pi!!5JH!!4"J2rB1rm
!!A`$k%""JIr%1'!!!,Y"rqK1J!!J2)"&3cL%9%Z3!)-!!$KJ!!"1J!!JI!J#TT2
Krrb6`IriNk(rp*!!!3!)P#(rX$ZM!!!la!!!1!!!!(`!m%"!JJ!-1'!!$8J!!%`
i!!!!N!!H!!!i!!!!I"d!3%##!"3i!#d!N!!H!!!li!!!5!!!*(qMkhK,rcVeB!!
!!(ar'hJX(`!!3))!$$J!,3#3!"i!!(rMqhL!!3"B1#%!8(`)!kD$iIrmJm(rq)1
Krr41J!!JI!J#TVmKrq53!!%!#*3Krj!!1m-!!$ZN!!#3!+%!N!!l4J!!1bF!!$Z
)!!"r2mYi1!!!!(`H!%""JJ!NIm2cH%[r1ReJ!!!!I(XEH#`E!!""JJ!-If2EH%J
!!R`S(3!!3))!$$KJ"JG)!!*X1(i!!$L"!%",rrljB!!!!#`$!!""JJ!-1'!!!dJ
!!Nb!B3#3!)!"!%"m!`"!3)!!$$KJ"J")!!)d+"N!!%##!!`iB!B&5!!#*$J!!!"
m(J"!3B)!@#JF!!"!JJ!8+"S!!%'#!!`iB!B'5!!#!#JF!!""JJ!i1(i!!$L"!$a
,rcM"B!!!!#`$!!""JJ!-1'!!!dJ!!GL!!3!mI"S!3%#!!!`iB!B#5!!"a$J!!!"
m(J"!3B)!*$Kq!!!iR`!!5rmr8@!!!!!X!`!!3B)!$$KJ!!0)!!'BJ"d!##`!!!*
!J!!-,!!!!%#!!!`iB!J#5!!"I)!G!!`S!!!J3B)!$$KJ#!0)!!&S1!!!!(`H!%"
"JJ!8J"d!!#`!!!-i!!!$N!!I!J!i!!!!I"i!3%'#!"5!(3!%,!!!!MJ!!!'3!"m
#"$J!!!"m(J"!3))!'$J!!!#3!"m##$J!!!#3!"m#$%J!!!b6R`))Nem#$)!G!!J
X!!!"3B)!-%#!!%JX!!!!3)!!#%J!!$`iI`!!1)!!!B#p!!`ih3!35rrb$@!!!!"
)!!!S1(m!!$L!!!'![3!-10d!%%[rmI&J!!!!5!!!$$KJ!!0)!!#X1!!!!(`H!%"
"JJ!S1(m!!$LF!!#"RJ"15!!fjB""!"3X!`!!3B)!$$KJ!!0)!!"m1!!!!(`H!%"
"JJ!`1(m!!$LI!3)i[`#D10m!ZMMK!$K,rdC*B!!!!#`$!!""JJ!-1'!!!dJ!!%3
i!!!!I"i!3%'#!"L!!3!i,!!!!%##!!`iB!B"5!!!*$Kr!)j,rrbKB!!!!#`$!!"
"JJ!-1'!!!dJ!!!JiB!!!J!%!H$JK!("m#!1QZb(rj%k!!#"m#!+QNq(rr*2"rrL
3!!%!#*3Krm"mIKYiIprcH$J!!!"m!2"!3))!$$KJ!!*)!!!mJ"m###J!!!""JJ!
BJ(m##$L!!!#![`)-5rlHD@!!!!!iI`!!1)!!!$LJ,3",rYj9B!!!!$KJ!!#!!3"
)1#%!3(`)!kD$iIrmJm(rq%k!!##"JJ4dN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
'V*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!553!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJ&)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%!*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#"F#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ(%N!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)"I*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"1b3!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ)FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"b*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#!$53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJEXN!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)!M*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"-L3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJ98N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&d*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#",53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJJJN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)"6*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"6#3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJIJN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!!*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#!bL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJE
SN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%9*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"8b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ9)N!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)%6*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!$L3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJ03N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#-*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#"X53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ)BN!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)#@*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"*!!N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)'q*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!#L3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJ(XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&U*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#!"L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ$mN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)$6*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!0b3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJ13!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!-b
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ$SN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
%a*!!33!8J!`!!)"-!!4m#31Q6S!%))'##$b3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJJdN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$F*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#"IL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ4`N!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)%8*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"#53!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ+8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"k*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#"-#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJBXN!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)%i*!!33!8J!`!!)"-!!4m#31Q6S!%))'#",#3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJ+%N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&c*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#"rL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ)-N!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)"&*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"!L3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJ*XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"G*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#!@L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ"
8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$**!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"hb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJJXN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)(h*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!XL3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJ'`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!I*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#"4b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJA)N!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)&P*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"Qb3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ(BN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#!eL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ%SN!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)&#*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!ab3!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ@iN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%T*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#!B53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ+SN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)$0*!!33!8J!`!!)"-!!4m#31Q6S!%))'#")#
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJBJN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
%+*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"&L3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJJ8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)(T*!!33!8J!`!!)"-!!4m#31Q6S!
%))'###53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJB3N!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)'N!#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ#)N!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)'5*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"6L3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ#mN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!(*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#!Mb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ&3N!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)%[*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"%L3!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ"-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%,*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#!dL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ"`N!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)#S*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"QL
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ6FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
$J*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"Yb3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJAJN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$`*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#!TL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ4XN!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)!5*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"P53!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ@dN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&D*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#!Q53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ-3N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)$l*!!33!8J!`!!)"-!!4m#31Q6S!%))'#")53!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJ1)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#**!!33!8J!`
!!)"-!!4m#31Q6S!%))'#!Yb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJEBN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)#J*!!33!8J!`!!)"-!!4m#31Q6S!%))'#![#3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJJSN!""!"5!$!!!J%`!"(`*!kC1J!3JJB))E*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#"e#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ+
dN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"d*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"Ib3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ2iN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)$A*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"Xb3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJ2dN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&F*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#"$#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ*SN!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)#e*!!33!8J!`!!)"-!!4m#31Q6S!%))'#""b3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ"dN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"i*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#!e53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ$8N!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)''*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"K53!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ9NN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!C*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#!%53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJDSN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)!N!#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ3
mN!""!"5!$!!!J%`!"(`*!kC1J!3JJB))$*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"2b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJKdN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)"j*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"`53!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJKSN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$-*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#!P#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJBNN!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)'$*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"@#3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ9FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'r*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#!ZL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ*8N!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)&+*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!f#3!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ38N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"F*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#"R53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ6NN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)'m*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!R#
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ%!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
!a*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!&L3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJFmN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"0*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#!$b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJENN!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)#l*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"U53!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ"!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&m*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#"0L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ9!N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)!K*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!V#3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJDBN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#&*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#!jb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJBFN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)!Y*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"3#3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJ58N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%A*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#"D#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJC
3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%C*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#!SL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ2mN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)"q*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!Tb3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJ1`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%U*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#"Mb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJB`N!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)%H*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!m53!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ@-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$"*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#"$L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ3%N!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)"'*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"%53!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ2`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$#*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#"353!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ(mN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)"(*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!EL
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ#`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
!)*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!C!!N!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)&E*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"$53!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJ8mN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'K*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#"1L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ8BN!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)#T*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"SL3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ2-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'M*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#"`L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!XN!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)&R*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"3b3!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ,!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'S*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#!Ub3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ4!N!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)"$*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"JL
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ8NN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
'!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#""L3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJ&XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&H*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#"+b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ8JN!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)&f*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"*L3!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ-BN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%$*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#!Sb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ%JN!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)'P*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"h53!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJ-mN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)##*!!33!8J!`
!!)"-!!4m#31Q6S!%))'##"#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJHXN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)'e*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"a53!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJBdN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$K*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#!L#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ@
3!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!`#3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJ23N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!Q*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#![53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ*JN!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)"R*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!@#3!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ*FN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'"*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#"Z#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ4mN!""!"5!$!!!J%`
!"(`*!kC1J!3JJB))(*!!33!8J!`!!)"-!!4m#31Q6S!%))'##$L3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJHBN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"J*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#"D53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ)3N!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)$k*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!Y#3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'4*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#!'b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ(
-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&a*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#!J53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ')N!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)"S*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"HL3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJCNN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'+*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#!6L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ%%N!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)$$*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!2#3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJC!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!J*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#!Gb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ*)N!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)&K*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"H53!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ!`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!H*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#!lL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ8dN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)"[*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!0#
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ#XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
%e*!!33!8J!`!!)"-!!4m#31Q6S!%))'##,L3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJM8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB))f*!!33!8J!`!!)"-!!4m#31Q6S!
%))'##+#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJLSN!""!"5!$!!!J%`!"(`*!kC
1J!3JJB))[*!!33!8J!`!!)"-!!4m#31Q6S!%))'##,53!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJM`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB))V*!!33!8J!`!!)"-!!4
m#31Q6S!%))'##-53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJM)N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB))k*!!33!8J!`!!)"-!!4m#31Q6S!%))'##*b3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJL-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB))L*!!33!8J!`
!!)"-!!4m#31Q6S!%))'##-b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJMXN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB))P*!!33!8J!`!!)"-!!4m#31Q6S!%))'##153!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJM3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB))h*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#"Db3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJM
JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB))Q*!!33!8J!`!!)"-!!4m#31Q6S!%))'
##-#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJL`N!""!"5!$!!!J%`!"(`*!kC1J!3
JJB))T*!!33!8J!`!!)"-!!4m#31Q6S!%))'##*!!N!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)(l*!!33!8J!`!!)"-!!4m#31Q6S!%))'##&b3!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJHSN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)(6*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#"ab3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJI`N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)(,*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"h#3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJKmN!""!"5!$!!!J%`!"(`*!kC1J!3JJB))F*!!33!8J!`
!!)"-!!4m#31Q6S!%))'##!L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ#8N!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)#N!#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ9BN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB))5*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!,L
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ%mN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
($*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"p53!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJ6dN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!b*!!33!8J!`!!)"-!!4m#31Q6S!
%))'##%b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJIBN!""!"5!$!!!J%`!"(`*!kC
1J!3JJB))4*!!33!8J!`!!)"-!!4m#31Q6S!%))'##&53!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ0NN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$M*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#")L3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJI!N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)('*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"53!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJF3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)(L*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#"i#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJFNN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)%d*!!33!8J!`!!)"-!!4m#31Q6S!%))'##"L3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJ5JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!R*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#"qL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ8
8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)(M*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"b#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJGNN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)(P*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!bb3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJ1SN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"p*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#"V#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ2)N!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)"Q*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"eL3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJFdN!""!"5!$!!!J%`!"(`*!kC1J!3JJB))!*!!33!8J!`!!)"
-!!4m#31Q6S!%))'##)#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ1mN!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)$e*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!q53!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ(`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'B*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#"9#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ8XN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)(!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#![L
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!NN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
#4*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!k#3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJ@)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&e*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#!hL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)$Q*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!'#3!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJAFN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)'Y*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#"Pb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ9%N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)"P*!!33!8J!`!!)"-!!4m#31Q6S!%))'#""#3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJ6-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&X*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#!953!%%!&)!-!!#!6!!%I!N$TNk!"##"JJE3N!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)#i*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"S#3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJCBN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!8*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#!&b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!
3N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$3*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"Hb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ0mN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)'F*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!j53!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJ9mN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#r*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#"I53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ$dN!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)"C*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"mb3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ&!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#Z*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#!Lb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ5FN!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)!D*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!fL3!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ$JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$i*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#"RL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ%XN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)#j*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"2#
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ$BN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
"A*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!b#3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJ-8N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#G*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#")b3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ,BN!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)$T*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"##3!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJ#JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!`*!!33!8J!`!!)"-!!4
m#31Q6S!%))'#!l53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ4SN!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)!U*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!4#3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJ'NN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)%B*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#!Nb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJFiN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)'Z*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"2L3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJ0XN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#3*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#!ML3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ2
BN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)&J*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"lb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ)SN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB))K*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!1b3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJE)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"V*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#!Xb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJDFN!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)'I*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"fb3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJ&iN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)(p*!!33!8J!`!!)"
-!!4m#31Q6S!%))'#"fL3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ(8N!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)$h*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"X#3!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJ-iN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!q*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#"d53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJI3N!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)(9*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"l#
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJF`N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
)H*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"q53!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJH3!*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"hL3!%%!&)!-!!#!6!!%I!N$TNk
!"##"JJJ%N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)(Z*!!33!8J!`!!)"-!!4m#31
Q6S!%))'##&#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ&BN!""!"5!$!!!J%`!"(`
*!kC1J!3JJB))@*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"dL3!%%!&)!-!!#!6!!
%I!N$TNk!"##"JJHdN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!T*!!33!8J!`!!)"
-!!4m#31Q6S!%))'##%#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJH%N!""!"5!$!!
!J%`!"(`*!kC1J!3JJB)(S*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"f#3!%%!&)!
-!!#!6!!%I!N$TNk!"##"JJG!N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)(r*!!33!
8J!`!!)"-!!4m#31Q6S!%))'#!153!%%!&)!-!!#!6!!%I!N$TNk!"##"JJKNN!"
"!"5!$!!!J%`!"(`*!kC1J!3JJB)&G*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!85
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ+mN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
#0*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!F#3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJFSN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)#!*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#"Nb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJI%N!""!"5!$!!!J%`!"(`*!kC
1J!3JJB)(b*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"jb3!%%!&)!-!!#!6!!%I!N
$TNk!"##"JJGFN!""!"5!$!!!J%`!"(`*!kC1J!3JJB))B*!!33!8J!`!!)"-!!4
m#31Q6S!%))'##$#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ0%N!""!"5!$!!!J%`
!"(`*!kC1J!3JJB)&Q*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"ML3!%%!&)!-!!#
!6!!%I!N$TNk!"##"JJEdN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)$G*!!33!8J!`
!!)"-!!4m#31Q6S!%))'#!X53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ'SN!""!"5
!$!!!J%`!"(`*!kC1J!3JJB)$V*!!33!8J!`!!)"-!!4m#31Q6S!%))'#"Vb3!%%
!&)!-!!#!6!!%I!N$TNk!"##"JJ'-N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"#*!
!33!8J!`!!)"-!!4m#31Q6S!%))'#!Rb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ'
dN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)"-*!!33!8J!`!!)"-!!4m#31Q6S!%))'
#"Eb3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ*iN!""!"5!$!!!J%`!"(`*!kC1J!3
JJB)&%*!!33!8J!`!!)"-!!4m#31Q6S!%))'#",L3!%%!&)!-!!#!6!!%I!N$TNk
!"#!!!!!!!!!!!)!-!!#3!%%!&(`*!kD!6!!%6S!%)%k!!#$rrrrrrrm!!!3ZBA"
`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!%,Q&`F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Irrrrrrr`!!"5jVCAKd!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!%!!3!"!!!!!!6!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%`!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
"-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!rrrrrrrrlZlZlZlZhGhGhGhGc-c-c2rrZlZlZlZlQCQ
CQIrrUUUUUUUUL)L)L)L)CQCQCXc-CQCQCQCQ-c-c-jQC99999999!!!!!&99!!!
!!!!!c-c-c2rr!!"!!%!!3!!!!-c-c-crr`!!3!"!!%!!!!$-c-c-rrm!!%!!3!"
!!!!!rrrrrrrr!!!"@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%&#3d4
&4NG)58T,6%e16e"48P0899CA@&PDB@*MC'9QCfKTDQYXE@j[F(&bFh4eGRGiHAS
`-6)c0$8f0cJj+bmp!!!!8%p69#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
5GhGh,QeTEQ4fDA0TEfiZBfpY!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!'Lp5C@G'Eh*Y,e0PEQ4&6@&TE%4KG'%ZBA0`!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2rrrrrrr`!!!AJ!!!!!!!!
!!!!!!!!!!2rrrrrrr`!!!'3!C!"N!'3-5@jdCA*QB@0P6'PL!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!UUUUUUUU!!$
rrrrrrrm!!+UUUUUUUJ!!rrrrrrrr!!#UUUUUUUS!!2rrrrrrr`!!!!!!"!!!!!`
!!!!F!!!!,!!!!$`!!!"-!!A(-)!!!94)!!!!!!A)N!#!!!"8#!!!!!!&b4#!!!"
i!!!!!!!&mk#!!!%8'!!!!!!&p,5!!!#J#!!!!!!&pH#!!!53!"!!!!!!"IT`J!!
(m"J!!!!!"J*JJ!!!A"!!!!!!"J+mJ!!%P#!!!!!!"JG3J!!!X#!!!!!!"JJ!J!!
!i$J!!!!!"JS)J!!$N!!J!!!!!!B0Q)!!!$3!!!!!!!B0c)!!"03`!!!!!!BPd)!
!!E3S!!!!!!BRK)!!!E3S!!!!!!BYU)!!!eJJ!!!!!!Ba!)!!!)!)!!!!!!BaJ)!
!!43S!!!!!!BbP)!!!F`S!!!!!!BdB)!!!m3S!!!!!!Bi*)!!!S3J!!!!!!BkU)!
!!,3J!!!!!!BlA)!!!a3J!!!!!!BqF)!!!mJS!!!!!!C#1)!!![!S!!!!!!C&+)!
!"X4)!!!!!!C,l)!!!*`)!!!!!!C-L)!!'RL!!!!!!!CR!)!!!5J`!!!!!!CS+)!
!!2Ji!!!!!!CT))!!!5J`!!!!!!CU5)!!!X43!!!!!!CY$)!!!h43!!!!!!C`J)!
!!j4)!!!!!!Cd*)!!!23J!!!!!!Ce')!!!H3B!!!!!!Cfr)!!!%`)!!!!!!CjD)!
!",4B!!!!!!D!c)!!!RK3!!!!!!D$m)!!!94)!!!!!!D&4)!!!%J)!!!!!!D&M)!
!"a!S!!!!!!D0$)!!!IK!!!!!!!D2")!!!P4!!!!!!!D4U)!!!%3)!!!!!!D5B)!
!!,!J!!!!!!D6%)!!!+!B!!!!!!D6X)!!!)`B!!!!!!D8I)!!!%J)!!!!!!D8a)!
!!$`!!!!!!!D9!)!!!&`3!!!!!!D9A)!!!5!B!!!!!!D@I)!!!*JB!!!!!!DA&)!
!!*3B!!!!!!DAU)!!!&J)!!!!!!DB!)!!!5!i!!!!!!DC))!!!&!)!!!!!!DCF)!
!!*!!'!!!!!!'QJ#!!!#8#!!!!!!'QT5!!!")#!!!!!!'QYb!!!"B#!!!!!!'Qc5
!!!"B#!!!!!!'Qib!!!#3!"J!!!!!"T`FJ!!!5!J!!!!!"TpJJ!!%')!!!!!!"U6
%J!!!@!!!!!!!"U8FJ!!!4!!!!!!!"UMBJ!!!N!!)!!!!!!DTD)!!!F3J!!!!!!D
V,)!!!(J3!!!!!!DVT)!!!4a!!!!!!!DX`)!!!3Ji!!!!!!DYb)!!!$J!!!!!!!D
Z!)!!!-!3!!!!!!Dc')!!!6J`!!!!!!Dd8)!!!Q!B!!!!!!DfX)!!!*!!#!!!!!!
'Z@5!!!#B'!!!!!!'ZIb!!!,N1!!!!!!'[1#!!!#!%!!!!!#4GL*@8i)#49dSB!a
J#aHi9c"A)&FFAr"D@&TF&p!@B"Ci&QJ@J"C`&SJ@N!!@Q"DJ8G!Ab&B3&VJ@X"E
!&XJ@d"EBAh"IG&E39XiDN!"C1&N`@5KBi&EiA+KDB&MF@0KR&&rNAqaJ''`X9PK
@6'!@B!G@8&bh9P4F`&E8&LJ@-"Bi&N!@5"C3&PK9r"BJAeKFY"U8"#*@mB)#)9E
Y9Za@meE`9ZY@kPEL9Z4@i9EJ9Yj@ieAiAf4@#&E)8FK@XP(%8EK@je'XApaIBf9
`9Ja@c&pJ9J4@lQ!8Af&IC33L9Pb#!N0IBPEI8CaICf!0BFjKd'!39P&@8PUdA,C
IDPpT@Ua@k9p39Z8C%"NB'5!C+&E+9ZpDU&P)9YK@h&pS9[4@a&E!9Va@ZPBBAN"
IE&AX9HK@jPB!C24G!&pF9VK4c&Ad9[*X+&CJ9ZKG)&j%Ai"ICPb`A+a4X&DZ9Q4
@X&bq9VC9m&G!A,aD[#*FZ)%$6!Ec1!"@&!"FZJ"@Y!"4Y!"J"3"Iq`"IH!"II!"
S"!!A!!!BB!!B5!!B@!!B8!!B3!!BL!"S#!!BF!!BH!!BJ!!BD!!B1!"Ib!"Ir!"
J!!"IK!"@)!"RR!"J!`"J#J"J"!"Ic!"If!"Iq3"Iq!"Ie!"IqJ"Ip!"J(!"J%J"
Ir3"JH!"IL!"J"J"Ia!"I`J"IP!"Ii!"I`!"@(!"J!J"JG3"J#!"IM!"J$J"IaJ"
JI!"JGJ"J!3!C5!"Ir`"J9!"Ik!"J#3"Id!"IN!!!Ca!!Ari!B(F!B)!!B)J!BF`
!B)3!Ca`!BZ3*)KNiJJ),Ae4Nk'8!'3!C#'6iC2`A`'8NC3aP#!3LC@U#!JaP"'8
BC5"P%'9XC44P('9d*K"R#'F-2E`%)KI`JJ)6&qJC-"IiCc"Rh'FB'$"R)'GFCha
S!'G-CdKR8'G8CpjR*'FZCbBLCbb"!cX'pa3!CcJ!Cc3!Cc`!Cd!!CbJ!E$!!E"3
!E"B!DJ`!D3`!D!`!E#!!E"`!E"J!E#3!9L3!9Ni!E&!!@8!!'9!!Eb!!Ec3!Ec!
!EcJ!Ee!!Ed`!Ed3!Ed!!EdJ!Ec`!F(!!Eb`!Ee3!F'`!Eb3!EbJ!0b!!0a`!0[J
!F(J!F(3!F)!!F(`!F)3!'@!!FC!!!('8!('B!$L%!"EJ!(68!"PS!"Q)!$R8!(6
B"`*J"[k8!(6F"#-(!Q!')MpXJJ)a88JDJ"U)'RJ9f"AJ&HJ9m"AiANJGr"B!&JJ
@%"BB(H`Gh"h%(D3GK"e`(5JG)"d8(33Fm"bF((JFB"a-($KI5"`S'r!Eb"Zd'k3
EN!!EL"XS'b!E'"Vd'TJ@U"ES&[!@q"kN)KF)J31#'JEcJ!!A%!Ec3!!HJ!!A'!!
HE!!A)!!HV!!A+!!A-!!I*!!I(!!A1!!H`!Ec`!!HZ!!A3!!A5!!A8!Ed$!!J@!!
J"!"Ke!!Ii!!Ib!!IY!!IS!"Le!!IN!!!(eJ!(c!!&eJ'mm`!BY`!),3!)'`!)i`
!)hJ!)f3!)e3!)dJ!)c`!)c!!)b3!)aJ!)``!)[J!)ZJ!)YJ!)XJ!)V3!)U3!)R3
!)K!!)D3!)A3!)@J'pK3'p43'p"3!)8`!)33!),`!BZJ!BqJ!&f!!)m`!&fJ!&h!
!&hJ!&i!!&iJ!&j!!!"HB!"HJ!"HS!"H`!#4J!#5)!#2B!#3J!#B`!#AX!#A-!#@
m!#@X!"IB!"IJ!#@F!#@8!#@-!#@%!#9m!#9d!#9X!#9N!#9F!#98!#9-!#9!!#8
i!#8`!#8N!#8F!#88!#8-!#8%!#6m!#6d!#6X!#6N!#6F!#68!#6-!#5`!"J!!"J
)!"J3!"JB!"JJ!"JS"[HB!'IJ!#X8!#V)!#Tm!#T!!#Rd!#Qi!#Pi!#NF!#M-!#K
i!#JX!#IF!#H8!#Fm!#ES!#D3!!!Q3!EhN!!'piJ!CqJ'pi!'phJ!Cr!!&1J!&2!
'ph!'pfJ!CrJ!,"!!+r!!+q3!+m3!+l!!,"`!-!J!'*!!!"LB!"LJ"[e%!'X-"[d
m!#rS!#r!"[dX"[dN!#qd!#qS!#qJ!#qB!'X8"[`N"[XN!#q3!!![I!![D!![0!!
[!!!Zp!!Ze!!Zc!!Z`!Ei"!!ZZ!!YA!!Y9!!Y6!!Y1!!Y+!!Y'!!Y#!!Xm!Eh`!!
Xh!!Xa!!XT!!XQ!!XN!!!,)J!,'`!,%J!'+J'pk!!',!!,#3!',J!'-!!'-J!'0!
!'0J!'1!!'1J!0D`'r8`!0D!!E&3!0CJ!'2!!'2J!0B3!0)3!-)3!E93!ECJ!EG`
!-(`!'8!!EL!!-'!!-&J!-&!!-%J!-%!!-#`!0V`!0S!!0N!!0J!!0E3!0d`!0d!
!0cJ!0b`!0b3!'9J!F)J'rR3'rQ`'rQ3'rP`'rP3'rN`!0fJ!0e`!0i3!F*!!!('
F"[jm!"@`!$eB!$e3!$e)!$e!!$bm!$`i!$V8!$Zd!$e`!$eQ!$eG!$md!$mj!%G
X!%pX!&#)!&"m!%pm!&#`!&$J!&%%!544EJ%k"L)",J)L!5m#)`)Ja!%L!5d#)J&
i!L-#+#d!25)"1JBR!b!Y2J)Y)!%NCP0eBJ-M!3&i%L)"1KiL!58')Q9ZJJ)1CR*
NC@TKC'&QD@j[FhCPFfPdEQaVEh"dBh0PE!!N)N-`"L*$-!)KJ!-L3"5'!J&!)#)
")))#"!%a!6!L,!%k)b8b-`%L$3S#)5!$)5X$)5m$)cX0#J%N!b8b0J3Q!kHVU3&
i"L)",J)L!9J#)J%k!L)",!)R!biZ,J)`-!%M!Lia!5)")J)L)#)#)b)J)J%K)JX
MG'0`%b2!i#!()dP14J%MD@jQ!50138i")fjKES8$!8-`!"3M4dP'!5-i1@%")cJ
hB3-Ll(#'!L"A%"8J$r!1)'9`C3"NJ-G`Z5"N%'#`A4"EJ&S!@G"CJ&0`8@"4-%a
J5c"*S%D!3k""i"G3%m!4m"%`#q!(`!'!!5%`K30e!4a!!9h`!9``!DC`!D#J!8S
`!5L`!GF`!Hj`!Hd!!I$`!L2!!L6J!L4J!JYJ!Vb3!!,4)!,3J!,`N!!#i'!#im!
#fm!#i$!#h3!#j9!#kD!$JT!!!hp3!hfJ!hD3!!0DJ!0D8!-5i!-4i!-4%!1Q%!1
Qd!1+N!!$T@!$RY!$Tm!$P@!$lA!$ka!$jL!$j%!$hB!$fd!$fL!$f8!$f*!!!pJ
3!pC!!r$!!r$`"%N3"!K`!r&3"3DJ"3C3"383"38!"36!"35!"34J"-H!"-FJ"*c
J"*[`"*!!`!52-!51B!50d!503!5&S!5"3!53!2!&#-!&@j!!"A)!"BX3"Bl`"Bk
!"Bi!"F4!"FN3"M4J"MJN"MUS"N8S"N[X"Nb)"Qd-"R3N"R38"R8B"RG)"RKB"RP
S"S$-"S2`"S9%"S@-"Sm%"T4m"T1`"T-3"T*J"T)X"T(X"T'S"T8!"T6%"T9F"UZ
N"UXX"UMB)6!#)3%&)MD8JJ)H-&Jc&$D80T3c*$D8-f!fP$D8-r!fP$D80T3c8$D
80T3fP$D80T3fP$D80Ba!U%#83+JpX%"`244!U$fF*cfF"%9"8eN$*`C$99086dd
$)QL!JJ)@D5aTk'NiDHKTk'P)DHKT5'RSDHKTk'RSDHKTk'PiDHKTk'RSDHKTk'R
SDHJRD93%,RKdE3-`3f&bBQpZ,QCbB@ePGfpbD`3Z3e0$Eh"j9A0PFNjKE@8#-&0
jFh4PE5jQFQ&YCAG[FQX%,'GPG'GbEh9`E'PcG!3SGA0PFQjKE@8%+("KFh0hEh*
NKJ)"'pJ))K[N$$CcHA0dC@dZF(*TGQPXC@GP,Q&NE@PZ"#)F%!`b8f9MGA*TG(N
ZCR*KE@9hEh*V!M0"GA4SEh*THQ&dD@pZ3h*PBA4P!6G"GA4SEh*THQ&dD@pZ3fp
`H9*TCfKdF`%J)N&eG'K[FQPkBA4TEfj&H'9MGA4P9fPdD&"bDACTE'9RCA-#)&%
[8hPcG'9Y,daTBR*KFRN[4R*KE@9hEh*VFbp$BA*LEfiZCR*KE@9hEh*V,eCPFR0
TEfjc,d0eFR*PER3[8h9`F'pbG#p-BA9ZBfK$4Ne"F(!$-8&eG'K[FQPkBA4TEfj
'FQ9PK3-"("!!"LS*,eC[E(9YCA-[!LB&,Q4KG'%%)T!!V))#%)ddM650I)emMAb
2%)emN!#XMQL1D*!!V*!!V*!!V)ddMq#00$100"!`-6)c0$8f0cJj38*$4%9'!ce
6HA0dC@e$EfjQD@GeFQ&dD@pZ,QCbB@ePGfpbD`-p8d0%H@jKE@PM8h4[FQ9$Eh"
j3fpZFfpXC99cCA)$0aCZCA423@GPER4IBf&XE'PZCep@590&!5d-3fpbC90PFRC
TBf9c!bd-4@&cH5"*ER0dB@aX"5,12))#'XjdcR61G-jdcR61G-jdcP61G-jdcR6
15-jdcR61G-jdcR61G-jdcR61G-jJcR61G-jdcR3fcQ`6)#!J4&C*ER0dB@aXCA)
ZG'9YF)%$#!%YV!%YA!%YD!%YV!%YG!%YJ!%YM!%YQ#N",D3&5@0[EJd#-3YXEfG
TERGTEQ4[G`3ZFR4Q"#-"l)5"!a8"l*3"l*3"l*3"l*3"l*3"l*3"l*3"l)3"l*3
"l*3"l*3"l)3"l*3"l*3"l*3"l*3"l*3"l*3"l*3"l*3"l*3d!Hb%"b"5C@&N6@8
))%aTBf9ZFf8$1!mk3fpZG'9ZG(-k6@&M6e0eFf9bEQ&YC33SF'&cFhG[FQ5'!J%
I3!JL(d`-0R0jFh4PE5j`FQPfD@aPCf8ZB@4YD@i%)Kpi$$*6C@0eFQPdH5jQFQ&
YCAG[FQX#-d&eG'K[FQPkBA4TEfj$FQ9KG'8"0d&eG'K[FQPkBA4TEfj$Eh"j8QP
RD(4c!5!L3A9dD'pbDATKG'P[EN9iC@0eG'9ADA4S8(*TGQPXC@GPF`)J85p6HA0
dC@d[6'PLFQ&bH5p'FQ&YCAG[FQYc,d0KFQ*[ELjQFQ&YCAG[FQX[9Q9bFfP[ER-
[3h9bFQ9ZG#p6GA"`Eh*d,daKG@jMD%0'68&`F!-a3A9dD'pbDATKG'P[ENCbC@8
%)`*!J)%$%!)p)!)p)!)pD!)p)!)pD!)qj!)pD!*!J!)q5!)q5!*!J!*!J!*!J!)
p)!)rY!)p)#N#25!&4'PcDcd$)`*K-)%$)J*JI!*JI!*JI!*JI!*JI!*JP!*JI!*
K-!*K-!*K-!*K-!*K-!*K-!*JI!*Jj!*JI!*JI!*LM!*KX!*KX!*KX!*KX!*KX!*
Ki!*KX!*LM!*LM!*LM!*LM!*LM!*LM!*KX!*L1!*KX$d#BE"$4N*eEQ4XC90SEh*
d9Q9bFfP[EP0dFQPZC`)T#%0[ER4PER4c"#-#E-5"!dS#E-`#E-3#E-3#E-3#E-3
#E-3#E-`#E-3#E-`#E-3#E-3#EU!#EEJ#EU!#EG!#EI!#EJ!#EK!#EU!#EPJ#ES!
#ER3#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!#EU!
#EM3#J``#JTJ#J``#JV!#JY!#JV!#J``#JY`#JY`#J``#J``#J``#J``#J``#J``
#J``#J``#J``#J``#J``#J``#J``#J``#J``#JZJ#Lq3#M)`#M#3#M!`#Lr3#M$3
#M&3#M)`#M(!#M)`#M)`b!Sb!F'9bFfPcG'9ZG#eKF("c!6&`CA*cDA0dC@jd,@p
dD'9bF`-ZBfpY,Q&`F'aP,Q4[BfX#,ep$4P956%&XD@&c4'&dB3%XAd0'99*-8h4
bD@jR"$"I3dC98Na6G(*TEQG8HA"P"#PQD@aP,@4KG'%$+QCTE'8YE'&LC@`#+A4
TE'8YC'&dB3-TG'PXC5edHA"P!bPQD@aP,A4TE'8$+3KKC'4PC#"dE`-Y$(*PE@p
fC@3JCR*[E3-c3dC#G@jNE'93B@0VB@GP9(P`C3%a3dC#G@jNE'96D@GZBA4eFQ8
%)`+lZ)%$$J+`Z!+a`!+b&!+cV!+dZ!+lZ!+kj!+lZ!+lZ!+lZ!+lZ!+lZ!+l2!+
lZ#d#Zh`*,N46Ae0dEh*P!b-$#D#"!c3$#)`$#)`$#)`$#)`$#)`$#,3$#)`$#D!
$#D!$#D!$#D!$#D!$#D!$#)`$#5`$#)`$#)`$#'`$#"`$#"`$#"`$#"`$#"`$#'`
$#"`$#'`$#'`$#'`$#'`$#'`$#"`$#'`$#"`$$YJ$$CJ$$E!$$G!$$JJ$$L!$$NJ
$$R!$$T!!!`km!`lB!`a3!`aS!`b)!`c!!`cB!`ci!`dB!`di)#3$$9JE5@jcG'&
XE'9b)%0XC@&ZGA!J4AKdC@jcD@pZC@jI4d)$*@9ZAd&9!b9PEPp$33-PCR*I3d%
$*@CbAd0)!b9QFPp#43-PC'9I3dJ$*@4PAd&8!bG&EQGXDA0S!5C'FQ9ZBfJ#*NG
PFQeKEJ)S5Q&`B@jPFf8%*N4KEQPcD!)R4QPZEQPcD!%T6QpbGf9RD@&Z!bG6Gf9
NDA0S!5G6F'&ZDA0S!5G*G'&XD@&Z!59%GA4MD!-Q5fpbC@&Z!L9TG&p$5!-PEQa
I3N8$*A"dAd*5!b9kD&p89`-PHQKI3di$,N&`F'aP6'&ZCh9KCf9c!L!J$e4PEA"
[FQ&bH5"*G'9YF`p@590&)&4PEA!J5A4PEA1"!a%$EE`$EF3$EF`$EG3$EG`$EH`
$EI3$EH3$F23$F5J$F9`$FC!!!h(%!h08!h0X!h+3!!0bY#m"!J-%"3B(#!N+#``
0$Jm"2!%#!`3&"JF)#3S,$!d1$`a&BA0j)%PZFh4KE'`$)%p13f9dG'8JD@jcG'&
XE'&dD@pZ)'%JMR51)'0bMSjP)'&fC@-JE#G*ER0dB@aXBA4PGA)J9NP645"NC5"
0D@jN9QPcD@pZ)&0[CR4hBA*P!5#"+9G%D@9cCA-J5@jcG'&XE'&dD@pZFh"bEfG
bB@eY)(GeFQ4P)'eTG#"*ER0dB@aXCA)J9NP645"fEfiJ6@PZC&CTFfP[EL"6EfC
dGf&bC5"PFR0dC@aXG#j38A9PFh4K)'PZFh4KE'aKHQP[EQ8JMb"cG'&dB5"MFQ9
KG'%JBfpZ)%PZFh4KE'aPFL"@590&)'4PE'aK)%eTEQ4@DA0TEfiJ8fpQG(GKFQ8
$)&C94'9kC5"TER0dB@aXBA4TC5"VGf&Y)(4[G#"cG'&ZC#"YCA3JBQ9SG@a`)(C
KEL"*ER0dB@aXCA)J9NP645"fB@iJ6@PZC&CTFfP[EL"6EfCdGf&bC3)JJ49(4'9
ZEQ%JD@jcG'&XE'&dD@pZ)(0VBA"KC'9c)'ePC#"*ER0dB@aXCA)J9NP645"QFSa
Z)%eTEQ4@DA0TEfiJ8fpQG(GKFQ9-4A0dB5"TER0dB@aKBfQAEL"QG@8JFQ9KE'P
kB@4K)'0[EL"PE#"TER0dB@aKC'pb)&C*8d8JC'8J6@PZC&CTFfP[EL"6EfCdGf&
bC3-J58K%C@jZC5"TER0dB@aXCA*TEQFJBQaPGL"XBACPG#"YC@3J5@jcG'&XE'9
b)&C*8d8JCR*K)%eTEQ4@DA0TEfiJ8fpQG(GKFQ8$)&054A0dB5"TER0dB@aKMBY
[)'C[D5"MFQPKC'%JBfpY)'mJ8(*[Ch*KE@%JC'8J5@jcG'&XE'9b)&C*8d8JC'%
J6@PZC&CTFfP[EL"6EfCdGf&bC3%J6Ne%C@jZC5"TER0dB@aXCA*TEQGPEL"LE'8
JEh"`FQ9dG'9d)'ePC#"*ER0dB@aXCA)J9NP645"QFQ%J6@PZC&CTFfP[EL"6EfC
dGf&bC3)J@PQ#XB,-Jd1$Ni0BJfH"@i1,JhD$MB02JiQ$J),0J8&0D@jN9QPcD@p
Z))0FJh5$Ci0&JdD$3B,-)%PZFh4KE'aPFL"@590&)),&MHb3!+b#Xi,UJYb#YB+
pJ8)#)$mq3A0PEQjeFb"XG@pdD@PZ)%eTEQ4@DA0TEfiJ8fpQG(GKFQ9Z)'pSDQ9
XE@&XE'%J5@jcG'&XE'9b)&C*8d8")$SjTEZQGlM,V%qcFEP-)%eTEQ4@DA0TEfi
J8fpQG(GKFQ8JUVSJ5@jcG'&XE'9b)&C*8d8JUpLPhkUk!L"*5-$-),bca+'d`L"
0D@jN9QPcD@pZ),c5am('VVrq[ZkrSEbY)%PZFh4KE'aPFL"@590&[mdJap5bXL#
lrEbkYFHqqVh!Y-qdf3-J1MQa[V#bel$+amfSZIdJ6@PZC&CTFfP[EL"6EfCdGf&
bC5#ea#"*ER0dB@aXCA)J9NP645#pU-'LYF3#)%T*9'&dEb"TER0dB@aKBf8JBRP
XB5"fHA4fEpjPEQ%J5@jcG'&XE'9b)&C*8d8JEf3JCQPbEANJ6@PZC&CTFfP[EL"
6EfCdGf&bC3)J5dT8D'Pc)'PZFh4KE'aKG'P[EL"hBA-JBh*PBA4PC#"hDA4S)%P
ZFh4KE'aPFL"@590&)'CbEfdJ6@PZC&CTFfP[EL"6EfCdGf&bC3)M!k+JJ3-P!k'
`!k(!!k(3!k(J!k(`!k)!!k)3!k)J!k)`!k+J!k*!!k+J!k*3!k+J!k+J!k+J!k+
J!k+J!k*J!k+J!k+J!k+J!k*`!k+J!k+J!k+J!k+J!k+J!k+J!k+J!k+J!k+J!k+
!!k+J!k+J!k+J!k+J-`1LN!"6HA0dC@dZCR*KE@9hEh*V"$e6HA0dC@e$EfjQD@G
eFQ&dD@pZ,QCbB@ePGfpbD`-SFf9dFQ9eD@3%290$4(PZB@eTBe0dEh*P3fp`H80
[ER0[E'99Ff9b!bKRCA4`GfjKE33Q"8PMEfi0!b-$pJ5"!`F$p&J$pJ3$p)!$p+`
$pJ3$pJ3$p2JJ*!2e4#!k6Q9dFf0KF'8Ja$T1CA4cBf&`C5"3FQ9QCA*PEQ0PF`-
jGA0PFPp`FQ9Q+#*ZCA4hEh*V,R"bEhKj,J-NG(P`C33ND(4dF!3TD(4dF&p`Eh*
d!ciG1NjPG(0MBA"P)&9cCA*c1P9cCA)J8(*[CQPXCA-#0K8k6Q9dFf0KF'8J8(*
PCQ9bC@jMCA-#-4!k6Q9dFf0KF'8J9A0PFR-k!c885@jdCA*ZCA3J8(*PCQ9bC@j
MCA-$,3a9Ff9)9&438(*[H(N$,Je)9&438(*[H(P)Eh0d!Ld-4P438(*[H(P9Ff9
b!c%34P438(*[H(P3BA0cGfpbC!-["fKdG(!k,bpSG(4`1Lm[!L-%(QL"!e8%(RJ
%(TJ%(UJ%(VJ%(YJ%([J%(bJ%(aJ%(cJ%(eJ%(dJ%(fJ%(iJ%(kJ%(jJ%(lJ%(mJ
%(qJ%(pJ%(rJ%)!J%)#J%)%J%)$J%)&J%)(J%)'J%),J%)+J%)-J%)0J%(*J%(GJ
%(5J%(6J%(9J%(1J%(KJ%(`J%(EJ%(AJ%(2J%(IJ%(@J%)13%(SJ%(ZJ%)13%(HJ
%)13%)13%(8J%(JJ%)"J%)13%)13%)13%)13%)13%)13%)13%(hJ%)*J%(MJ%(4J
%(CJ%)13%((J%)13%)13%(BJ%(LJ%()J%)13%(NJ%(PJ%(XJ%(+J%(3J%(DJ%(FJ
%(-J%(0J%(,J%)13T"##)*6"%*6""!LXJ5&488#ma,M!0#J%Q5'pcG$SJ!Md0#P"
bEhKj,8&eG'K[FQPkBA4TEfik)%*KFfPM)!-U$3T$EfpVD@8k)!)J-99cCA)Y3@G
PER3k)%e[HQPXE'%[0#i`)#KMEfe`BA4TBQaP1b"0B@0TER4[FfJT$3S$)$&$Efj
dC@jd,A4jF'8k)'&`F'aTBf&dD@pZ,hJYGhGh,@C[FQdYGA*XC@jMEf4PC!d+!c"
5C@CPFQ9b1L"SG(4`1Lm["$"$EfjdC@jd,8aPEQGdD$SJ"#30#Jd+"#9QFQpY23-
N*R4[233T*R0eBQTPBh3p!bNQE@9cFf&RC6d%)`3h,)%$#!3h8!3hG!3hQ!3h[!3
hi!3i"!3i+!3i6#!K"$K`(8C*8P08,80-3906)%e"58`J)#"349*0593J6NmZ!b-
%92L"!`F%8fJ%8k`%8p3%8q`%9$3%9(3%92Jc"&5i8hPcG'9Y,QCbB@ePGfpbD`3
PBfK[Gfi$*QGPG(9TC!)QCf9dCfPN!LB&5@0[ERJ#1aT%CACPE'p`CA)J9NP645"
0EhCPC#"*G'9YF`%Q"84TFfXp"L#"3RF(-*EZ$Q%XQ3P4ZJGYa"P`D[52k@1P0Cj
NPD-1fiJbHGbiT1$9k4kAdYQ)#EC-+hkaI,hRZ#d(N!#r(C%GYa"NDV!Jm[1jF8L
%[N(H'YV8I@hGj1[de,94Jp1&aa0XQ&CNDkM!r@,jHSTPbH`8!9a2B`CXfIS22@1
0#!he1fiJb%aT%&l9B%(NSQGaFM`$j0&,"04(dJf&rD8+Y@XeYDMk3V+BE0ZlbGD
X[2P!-YKXidAIA(AFeJh2Up%p@5EC-+a4hJ%JAMV)ee'![p"K&L'dp,9@Xm3MclU
9QELpT3mS!VLHA`@)#-B-fE+a#qNN,fpmKeKS6"("B4fVYQBY2AEF3C!!!GYa"TM
5),c[e4!UFE'&L3DfY4qI[q5Pk,M8-hJ(bD)2!5!Sq65@#DL1i3kB'(pU$EX)E6d
YN@4XPqCMA!&VDe(d('aKBS9P-0MbBJ%J1djX"TAY'`'PHi))p-(e$m4ACE$CaK+
hk9#,[VMUr,Q)I',G(Gm9fLe*M00mmr[86'90XQ&B1V94cU1m!5#",R68Zc$L5Yq
P36hBPGHNdF4YdpEdqd0Tk@SdEYRmV@H)4YTJZ0"%"#ec-`-GjDS+6&rG$Ac*8!9
a2#F#3DUq#a!3b3`JKPGSY58JEi@cZ@E8#FjKj*pHh[N1+GR*Q,$3Q#,(ekLd@E-
p&bkd$B'h[9`l`,TXVHfiJb#D[l1f!lEL$(5adTVUe8FjRG*hV`6E*K9ch"D$if-
,%T4N1i30E@SqHQTDU131c`Z6#IqG#J%JJ@1Z*hd(RV(`$j0%K`LMdKi"mQKT"X,
qpf*AAB"PCmXCE$CaEQX'jrl8'hD*db[J%0Tk@QIG5XcjZGp[MVl[q4Hh[N0JX)l
9eYDMk+(4Nhiif-,%6prb8Y'lCr'Q[&GR2l8'h8Lb0N[B$5[DV`SE6$B$5[C""(T
Jhf$[`kKRhe8aESl[4QQqHFYKXibmCS-D*@r5S&*SiME-$(H9Z`Y(!b)#&VP9"5B
[aESl[V+p#bJVY&U5A,0U"-,ArkHed-ma,0QHLe[HVKfEC-+`l'2b*R9USj`#EC-
+R!N'UHX10Mpb"fH&"3%JJbPA%j@r5S,LZ(S8Hl%VVJbf'cL5dSkEjG@q$AcFllF
,fpmKKY25e2(8iN*ShE2i(pU$ES'q&XhfZ5CEEl"hi4Lh4hH)#&VQr`pUF'B'1mS
4!3YFMf@HrrKLVQPKDrr6&Qc24D!+iRMA$G,Z6J5$9$N$Xm+RCbCKd'!@pdPT4dd
qERIEVY&U5YR@@Ya!h`YQ0pJlm+QmVP2HZjl&4l,2Ic#erqQp[I)FbVV#LP1cNc!
NY+1QZY!f"FhA"T08hPFT)pPR[l0QHLl%B8UiA@JE!LT[+j5d#lih``b1S9S&haX
Y!Zq0DVFfl"ACb(2S1*VI)5A3c2hF&YIM3`A&MdMDmMm3)fahI2QJSqRY4S[BV&6
1,4PHEAf(AITEQq$(lTp5UEN+dIjiGNSp4&U@N!!I*TeB'ijA@F-,Dr`GjU*rNNp
!Y!Cb6I3dUY**VHmL'V@k[bPSLC-q-J6ehZ&[qfINIJL[m+Y"JZT3$bV'0E1SbZ9
-4BUAVYCQ*e2*($`$QF%*,QNhM5pJ`UBB6RUickFk&p@HmB44$D4Na"ka-*LlH3(
fBJkbBj(,ri"ajp3")%REG5bp1618[)`lYL#&*)JVF)0ZHjbq&%GP5eD"q")4+1Y
9G+%apl!6KYeI3Y-#BC8-A+A0`!ILma!`-6)c0$8f0cJj38*$4%9'!bCcHA0dC@d
#+3K6D'9XE&CKFJ-R"P0jFh4PE33K%!-K%3-K%JFK#))#$3!(!!N!"J!+!!8!#`!
%!!`!!`!0!!)!$J!"J3-2$`!$"!!&"J!(#!!*#J!,$3!2%3!6&`!E(`!M+`!c1`"
$8`"MF`#$S`$$i`%#&L%"J3-6!3!"!3!#!J!#!J!$!`!$!`!%"!!%"!!&"3!&"3!
!B`"M!!!"!J!$"!!&"`!*$3!4'3!K-3""B3#"2F%"!3'"!J%$!33""J%)!3`"%!%
B!5!"-!&!!@!"#5%"J3-3!3!#!J!$!`!%"!!&"3!'"J!("`!)#!!*#3!+#J!,#`!
-$!!0$3!!!3!$"`!2(`!r)Am"-Im"r`2r"rm2rarr2rprrrrr"5%*!c-'"f9ZCh4
S1L!*Ef0KG'P[EMSJ!L!K"fKdG(!k,bm,5&488#mU,LSJ-M!-5&488#mU,LSJ-c!
b!bX+6@PZC&CTFfP[EJ%k'@96C@aXCA*KG'9&EQGTEQ8J+%0KFQ*[ELN#)$!J)#!
J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!"))&
2!3)%#"!$"3N4)#!J)#!J)!B+%J`8'!F,)"-0&4N1)"BD(!mA)"XG(KmJ)#!J)#!
J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!
J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!
J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!J)#!
J)#!J)#!J)#!J)#!J)#!J"#)+J"`LFG3#)3%$)R(8&L)CJ!)L'AJ#)KP`"L)if!-
M!4+!(#*be!)K!3-LFY3@)KQ!!L)CH!)L'A!')MNX!b-#%)!F)R28!L%"!b*ce"B
L'B!#)KPi!L)CF)B#!6Q!!%iJJAm"!3%"!3%"!3%#!J)#!J%"!3%"!3%"!3%"!3%
"!3%"!33)#!J)#!J)#!J)#!J)#!J`-$!`-$!`-$!`#!J)#!J)#+#JS+#JS)#!J)#
!J)#!J)#!J)#!J)#!J)#!#!J)#!J)B'"JB'"J3%"!3%"!3%"!3%"!3%"!3%"!3%!
)#!J)!B#!J)#!J)"!3%"!3%"!3%"!3%"!3%"!3%"!3%"!3%"!#!J)#!J)#%!)#!J
)#!L!J!J)#!J)#!J)#!J)#!J)3%!)#!J)#!J)#!J)")#!J)"!#!J)#!J)#!K!J!J
)#!K!3!J)#!J)J)#!J)#!J)#!J)!)J)#!J!J)#!J)#!J)#!J#)`@MS)%$J4N&T3J
&T3J&T3J&Sr!&Sf!&Sp`&T3J&T3J&T3J&T3J&T3J&T3J&T3J&T3J&T3J&T3J&T3J
&T3J&T3J&T3J&T3J&T3J&Sa!&T3J&T3J&T3J&T3J&T3J&T3J&T3J&T3J&Sk!&T3J
&T(!&Sa!&Sr!&Sf!&Sp`&T3J&Sa!&T3J&T3J&T3J&T3J&T2!&Sa!&T$J&T3J&T3J
&T,!&T3J&Sa!&T3J&T3J&Sa!&RU`&R`!&R`!&RX3&R`!&R`!&R`!&R`!&R`!&R`!
&R`!&RU!&R`!&RT3&R`!&R`!&RY!&R`!&R`!&R`!&R`!&R`!&R`!&R`!&R`!&R`!
&R`!&R`!&R`!&R`!&R`!&R`!&RZJ&TSJ&TT!!"DD3!!@QN!!&TT!!"DD3!!@QN!!
&TT!!"DD3!!@QN!!&TT!!"DD3!!@Q@!@QN!!&TT!!"DD3!!@QN!!&TPJ&TT!!"DD
3!!@QN!!&TT!!"DD3!!@QF!@QN!!&TT!!"DD3!!@QN!!&TT!!"DCm"DD3!!@QN!!
&TSJ&U4!&U4`&U4`&U4`&U4`&U4`&U4`&U4`&U4`&U4`&U4`&U4`&U,J&U4`&U4`
&U4`&U4`&U,J&U4`&U4`&U4`&U4`&U4`&U2!&U4`&U4`&U4`&U4`&U4`&U3!&U4`
&U4`R"DN3,8P14J3N,@PZCJ3N,8j"6J3N,@jKEJ%S6N988d0"8%8"+%&158e&@&4
6!b-&cpL"!a%&d$3&d@`&dd3&e8J&eJ`&f"!&fH3&fV3&h,J&hB`&hL`&hSJ&he`
&il!&j(J&jKJ&j[3S"HI!"J8VJ33")3BC)3)"*!D*kY!"-A!1"0Ym+VpLiejQJ(D
qV5#,&#)DF!)`'H$EI#UrBZ0HCS"f[UdJL")ZCCliZJ3j&ZlHL4&`+b)51`P)FMQ
C@PlRDeAj`[#BU*cPViFN`+)q$JrhG3!Q,h$EI#UrBZ0HGLMIV'9Ka4-L!3%!)#p
`fh`U[f,MARBShkaPBF8!8L4cC@9N!5!a#NaPEQGdD#"cF'9MD@CTC@3JD@iJFf9
MEfjN)%p*4#"[Bh4PG#"dEfmJE'&bCf8Z#J)M!JJ)!L%)!L%#!LB#!JJ)!J)%)`J
)!J%K#!%L!J)#)3)"*JJ)!J))#!%L!JJ%)`J#!J%M#!)###%)!5%#!5%)"5)#!J%
K#!)L#!J"*J))#!)##!3M#!)#!5%)"#%#!L%)!L))#!%L!JJ")3)#)3J")3)"*!J
#!JJ")3))*3))#!)#!5%)!L%)!53#!JJ)!L%)"#-)!J)")3J")J))!5%#!L%)!L)
)#!%K!J)K!J%M#!J#!b)#!J)M!J))!L3##!J#!5))#!%L!JJ#)3)")`J#!J8L#!)
")3J")3)&)3J#)3)$)3)"*3J#!JJ)"#-#!JJ")3)#)3J#*`J)!N!3J"!&)K#!!5*
!%!)K3!)K%!)MJ""!!5'!!L)3J!-KJ!%L3"!")4!$)K"!!5'!!L%3!5333"#!!5*
!%!8K%!%K%!)K3!%NJ""!%!%K%!)KJ!)N%)!33!JK%!%L%%!")S!3!5B3J""!%)!
")8!#)K"!"#%3"#D!%%!3J"!")4!"*""!%)!")8!")B!#*a#!%%!3J"!")4!")K"
!!L%3"#&!"5+!%!%K%!)L3"!")4!#)B!")8!%*"#!%%!"*B!33"#!!b'!"5&!!L%
3!b833"#!%!%L%)!")N!3!L*!%!%K%!%K%!3MJ""!!5'!!5&!!5+!%!-M%%!3!b)
3J!%K"!)N!33%!3-K!3%K"!%L!3%")33")J%%!b%%!5)"!3%L"!%")33")3%#)33
#)J3%"58""!3"!3)L!3%$)`%%"!%K!38K"!%N!33%!3-K!3-Q!3%%"!%"!5%%!L%
%!L-""!3")J%%!5%"!L8%!3%%"!-L"!%&)33%*J3"!33%!3-K!33K!3%K"!3L!3%
")33")`%%"!)K"!%L!3%%)`3%!3)L"!%")J3%!5%"!5%%!5)""!-N"!3"!3-K!3%
N"!%""!)L!33$*!3%!3%")33#)33")3%")33")J%"!5)%!3%K"!%K!38L"!3")3%
#)`%""!)K!3%M"!%"!L%"!5)%"!-N3"!)%!%K%!3P#""!%!J%)K"!!L%3!5)3#!%
K3!%N#""!%!%K%!)L#"!&)a!)%!)K#!%M3"!)!5&!!L%3!b)33!%K#!%L3"!$)4!
%)3J")N!3!5%3!533#""!"#%3!b)3#!8K3!%N#""!%!%K%!%K%!%L%%!"*3J33"!
)!5&!!L)33!%K#!)L%!J")8!#)4!#)3J")N!3!5%3!5%3"#-)%%!#)4!")K!)"L%
3!L&!!5%)"#)33!%N#""!%!-K%!%K%!-N%%!3#!%M3"!)!5&!!L333"!)!b))%!%
K%!)M3"!)!5&!!5%)!5*!%!%L%%!#)4!")K!)!L-3#"!$)4!#*!J33"!")3J%)3%
%)33"*JJ""#!)!3%L)!J")33#*3%%)!J"!b%""5)J#!)K)!%L!33")3J"*!3J#!%
"*#!)!33')J%%!5%)"#%"!5%J!L-%)!J")33#)`%%)!3K#!)K)!-L)!J"*J3J#!%
%)!%K!3%M)!J""#%%!b8%)!J""!%M#!%%!5%)!5)%)!%K!3%M)!J"!b%""5)J#!)
L)!J")33")3J%)J%%!53)!33J"53""#!)"5%%!L%"!5)J#!%L"#!#)33&*JJ""#!
)!3%N)!J""!-L"#!")3%$)J%%!5))!3%L)!J")33$)J3J!b%J!58""#!)!3)K#!)
L))!#)8!")5!")8!%)i!J)!)K)!%K3!)K)!%KJ!%L)%!")5!%*L"!J#!J3!%L)#!
")B!$)B!")5!")B!#)d#!)!-M)#"!!5%J!L'!!53J3)!J!5&!"L%J"#4!J#!J!5+
!)!%R3)!J)%#!)!)KJ!8L)%!$)8!")L!J!L3J)%#!!5%J!b-J3)!$)B!")5!#*L!
J3)!J)!)K)!%K3!3KJ!%K)!%KJ!8K)!%LJ#!")8!")5!$)5!"*8#!)#"!!5)J)!3
P3)!J)%!")L!J!L%J!L'!!5-J3)!#)d#!)!-M)#"!"L%J!5'!!L*!J!%P)%#!)#!
")S!J"#)J3!-M3)!J!5&!!L&!!b%#!5%"J3-G!J!"!!3"3J3!3!3!3J!!!!!"!!!
"!J3!!J3"3!!!!!3"3J!"3!!!!J3"!J3!3!!!3!3"3J3!!!!"!J!"!!3!3J!"3!3
!3J3"3J!!!!3!3J3"3!3!!J!""#0#"!'"!`T!!!&!"!!#"!"!!!!#!!%!!!&!"!%
#"!"#"!"#!!!%)3)")3'"!a)!"!!!"!%#!!!!!!%#"!%#!!"#!!!#"!"!!!&#"!%
!!!&#!!!!"!"!"!&#"!%!"!&#!!&!!!!N3!3JJ)%$(S!JJJ!!!S!!!!!J!J!!J)!
JJ!!JJS!!!)!J!!!!JJ!!!S!!JS!J!S!J!)!JJ!!!!J!!JS!!J)!J!J!JJS!J!)!
!!!!!JJ!J!!!!J!!J!S!JJ)!!J!!!!J!JJJ3KJ!%KJ!-K!J)K)!)MJ###!5'!!5%
#!5+!)!JKJJ)L))!")i!J!J%MJ#!#!b'!!51!)))&)B!")B#"!`Q!)!)!))+!!)!
!))!!)!#!!))!!!+!)!+!))!%)i!JJS%$"`!!JS!!!!!J!!!JJ)!!!J!!JS!!!!3
L%#!$)5!#)4!")3%$)3%")a!J!3)L)!%")4!#)3J$)`J3)!%K#!%K)!%L#"!")J%
)!LB"#"!J!3J"*#!"#"!$)5!$)M!J!L)J)!)K-!%K!3%K)!%K!3%M-#!"!5-J)!%
")6!#)JJJ!L-)-#!")`JJ)!%L#$!")`%))!%V!3J`)!%))#!"#$!")3L"!`F!!!J
3)!J!)!J3!!N!!!N3)!N!)!NK%!%L#!J#*JJ)%#!)#!%N)!J)%!%L#3J#*JN)%#!
*#!%N)!N)%!%K#)%$"b!!#$!J##!J#$!!#5!!#6!J#5!J#5%`!5-)##!"+`J)-#!
)##!J#!J`!5-*##!"+`N)-#!*##!J#3J`"#%#"5%J!5%#!5%J!L%J!L)#)!-L)#!
")`)J)!3L"!)#)33#)b!%!J%L)!3")5!")`3#)!%K"!%R)#!%!L!J"!)K")%$"`)
!"!!!*!)!*!!J"!)J"!!J*!)J*!)M"!3#!5)%"!)M*!3#!5)N"!%R)!3%!L!%"!%
S)#3%!L!N""!$)4)$)4!")5!")4)")5!")K!J!L)5)!)M%#!J!5-5)#!")4!#)J3
5!L)%%!%M)!35!53J""!J!5-%%L!"+J33)#!%%L!J""!")35"!`F5!!33!#35!#3
3)!35)!33)#35)#3K%!%M"!35!5-%""!")b3%%J%b*!33)!3%%L!%""!J*!35)#3
%"b%"!5%%J3-0!!!%!3%!!!%!!3%%!!%%!3!!!J!!!`!%!J!%!`%!!J%!!`%%!J%
%)3-#)3)$)J)"!5)%!J)N"!)"!3%K!J%K!3%P!J%""!)"*!%%!J%#)J)#!L)#!`%
M"!)#!53%!J-"!5-#!J%"+`)$!33#!J%%!J-)!b%)!L-"#!5"!`d!#!3"#3!!#3!
"#33!#33"#!!##!!$#!3##!3$#3!##3!$#33##33L!`J")3)")3J"*3)"#!3#!58
)"!)"#3%K!J%K#3%P!J%*"!)"*3N%!J%)!5-#!JJ"+`)$#!3#!JJ%!J-*!5-#!JN
"+J)$#33#!JN%!J-&)4!%)3%#)K!""#%)J3-+%!!)!!%)%!%)!"!!%"!!!"%!%"%
!!"!)%"!)!"%)*"!4#!3$)J33!L%%!5%"!5-%%!%")33#)`J%%!%L#!3"*`%)""!
"#!3")4!")`33%!%K"!%K%3%M""!4!5%%!5F3#!33%!J%!5B4#!33%3L"!`m#!!!
5!!!#!3!5!3!#!!J5!!J#!3J5!3J#%!!5%!!#%3!5%3!#%!J5%!J#%3JP%K%)"!)
#)J35!L-%!J%")`35!3%L"!)")`J%%J%X#!3#!3J%%J%)"!)3!5-%%K!")`3#%3%
M"")4!6!%!K!)"")3#!3#%3J%%K%)"#%3"#%"!L)3!38L""!#)33")3'"!aN%%!%
%)!!!-!!!)!%!-!%!)!!%-!!%)!%%-!%%!"!!%"!!!"%!%"%!!"!%%"!%!"%%%"%
%)"!!-"!!)"%!-"%!)"!%-"!%)"%%-"%K"!)K%!%K%!%K%!)L!4!")a!"%!-M%!3
3!5)3"!%S!4!%%!%3"#!")4!")6!")4!")b!"%!%M-!%3!5%J!5-3"$!"+K!%)!%
3"$!"%!3")K!3!5-3%"!#)K%3!5-3%4!#*a!3""!3%!3"+K%3""!4%!3J%"!")c!
3%!%M)"%3!5-`%4!"-#!3%!3`%"!%)"%3"$!4%!3%)3J')JJ)!L%)!L%%!5%)!5%
%!b-%#!J")J3)!5%#!L))!J-K!J%M#!J#!5%)!5)#"!%M#!)%!LF#"!J)!J3)!b)
"#)%$"J!"!!!*#!!*!!3"#!3"!!3*##)%#3%K!J%M!3J#!5%"!5%#!5-*#!)")3N
"*`)%!3J#"!%"+!)%#3J#"!N#J3-(!!!+!!!#!!J+!!J#"!!+"!!#"!J+*!3)!J)
#)JS#!L)#!J%M#!S#!53)!J)%!5-+!J3"+3)#"!J+!J3)!S%$"`!"#J!"!J!*#J!
*!J3"#J3"!J3*#L3%#3)#!5-"#J)")`%#!J%M#3S#!6%*!J)%!3S#"!%#!J3*#J)
%#3BK!B%$"J!)!!!)!3%!!!%!!3%)!!%)!3-K%!)L!4!")3J")4!"*!J"%!%#)K!
"!53"%!%)!583!3J"%!%K)!-L)!'"!`B!+!!!+!%")!!")!%"+!!"+!%")5!")4!
")b!"%!%K+!%K%!%P+!%3!5!"*a!")!%3!5J"*4!"+!%3!L%#J3-(!!!$!!J#!!J
$!3!#!3!$!3J#!3J$!L)#%!)L!a!")`J#%!%N#!-3!3%M!K!"!5S$%!%)!K!"#!-
3!5)J!S%$"`!J!`!S!J!S!`%J!J%J!`%S!J%S!`%M)!)3!5-J!a!")bJ#%!%c+!-
3!5!#%!%J!a!"+!)3!5J$%!3K"!3K"!)L"!3&)J)%!L%#!5%%!5-#"!3")3)#)5!
")33")5!#)J3J!5-%"#!$)b!#"!%L)!)"*`3J!J3%)!)$)L!%!L%J!5%%!5-J"!3
")5!$)L)%!L%L!5%%!5-L"!3")5)#)b!J"!%L)#!"*`3J)!3%)#!#)b!L"!%L)#)
"*`3J)J3%)#)#)3J")33")3J#)J3)!5-%"!J$)`J#"!%L#!)"*`3)!J3%#!)#)5J
")33")5J#)J3S!5-%"#J$)bJ#"!%L+!)"*`3S!J3%+!)#)`JJ"!%L##!"*`3))!3
%##!#)`JL"!%L##)"*`3))J3%##)#)bJJ"!%L+#!"*`3S)!3%+#!#)bJL"!%L+#)
"*`3S)J3%+#)#*J%"!3%"!3%Q!3%"!3%"!5##!!%"!J)%"!F(#!J,#`d0$Ji3%"-
6&48@&KNC'KSF("mI)#!M)b8P*LBT+5SU,#`[,c%a-M)d0$Fh1$Jl1cdp2Mj!3%0
$489'4NP*5NT-6%p289&58P489eGB@&YEA9eHAQ&KBQ*NC'GRD'KVDfeYEQj`F(0
cGA9fGRPjHRTmI(prJ)#$Ji@&KSD*LBU+M)b2Mj'4NT+8P*HAQ*LEQjfGRTkKSD+
LT+5RTkLSUkZYVDkZX,#cXl@eYVDjZEUk[,br[m("`X,%a-I(b-M,bmh0cXl3d02
6eGA@eYRCfYVFh0rIi1$MiqAPjZETkHVUl1c[lr(am[,dp2Ihq2Mlqrhpr[i#*[l
q(KlJi!%Lr[i"+"lJ$[$J([!1!5(J!5,`i!%Km!%S([i1r[iHrJi")4i")JiH!5%
1!5MJr[$qrZ$qm)%$+!BZ(!BZ3!BZV!BZd!B[2!B[B!BZC!BZL!BZp!B['!B[K!B
[U!!CQ!!CS!!CX!!CZ!!C`!!Cb!!Cf!!Cd!!CU!!Ck!!Cq!!D@!!D!!!D8!!D5!!
D%!!D3!!D-!!D1!!D'!!Cm!!D+!!D#!!D)!!DD!!DB!!!!3%!!!"*!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#@$b#F"KSk[Rcl(3K
Gd5L$h%Zj0[l[lj@rd+!XZRh%h2i[Hcm@2&0S!,J#P*4[DeM,kETY!H2Yc-V,J5G
LMf@2BRi4UYF44-$#SGfMD-%5KAm-T`Mamf!0D%kba,4hZHS)Vl24qh2V+9Beh[X
hlZ),JcMV%MC%XGmmBpPCH[)9Z9+Lqq8ZE#irCh-K*fXS35q`ZjL`,9AklY%NLY+
X-P*PJ+Q8ij%40j4YIFl89Z8r0E4P%Q2N81cX'1V'VP"F'Yi*p,0AeNkB14aIG%9
6(ah!6YR0+3DF'0m)E5T+D#&)qFCDkb4)18(r+B%PA9h)Sh1T$4M3(beIT08Gm!b
5EIX'ANbN&5-K*)p'AKUZ53kEjHG*DHJCD'8l(1ERLf$T&RYZQY0*"&lbTYmG1aK
G9$-bcRj#+bP[5E3jH02pPIlCj`%1&0*X51`0iL6'!kRPIm2SHU4IUM*Mlb'dD`c
IDEXN'k!@qMqM-K'P,aB9b%59X!C0)pNjkbM%XJeU,#`N0f`FD65lP-XGUYbH5Q!
jfBY"m+4M(X9+2bB6X3Jph`&8HHUmPA"0)0#ZF@c['8f%S)Z6a2#!D&r5*8G4VFE
F&VV$6VK@C,!dH"ERYNG"kQ4Mf-5JRQY$la4UcGZ@Ql'JfUR)jUaRUdN`"YPYM0P
L31pc2'M'UUFCD-dEKX@l`&K,c@2XZYdJ85$U'QMi9UHdXKTc`MDC!2+mHGS4!AY
(GTp$!&qd"3F@5[MY4VJ(RR`kDRQ&B#1lBj,iE!,4E!p!$hDB`CK(@K5#bG*Ibkh
IISArPe4-A'pEdY`J(#KTGRr-PU53!+$0rE@b[9YHQB'[d,YpqmE(d,D*lqGj([R
m"[(C(IbQ-L(fMErTAHe!NRZ"!JS,00pNFI6!)jXQ`3br'69j1Pp0LPEj0c5BG9j
r@PiNDR5(NVE`RFM(HkUQ[4*r9#&aR&NLNGRRKl*'5)cif6M`[M1"a5X6T"A'ec-
ShEI6NpQ8RV,@Hr&0@6cACL4C`kI6ZL%C8*)i+dE%,IS%!hm)A"eEHVrZiDp,X2"
#p@&j'rdGpl*mIalbq3RBIV&Kacre'`D9*2D#)cI#m*bmY2@$Yh@G1lD-l!6T3C5
#&lD)jb1%i`4`aj8FBSX*P!M%1f4MCIU$r4aISGmGX9NXY%q#ECB*088Xh$E`6R0
V1PdalNe5elm'Z`aeR,T0ZI6eaVEDf"SVYX0QPK`JIb$("#4l%(ERdj+D[h[+8b4
M`,Gb6`ZK&L)"r$(E'MYR'N6lpZDPa9XG@d&eVJE-kh*#I4bp"PkM[ddRM8!JliF
SlAej#`b-G4$TI-8XN!#3!-FEfk$(SmY!XRA'cM#L`+9J5VPAi@UFlk95"S*aN!$
31HH%bd8KSbq96[M[&XGq)"%CBDrUDq#YAFF`eqS9j#[c"P-GZ#0C8aXHSjQkD53
h18e-EDal-BJYcT`hf(RIl![Km2J[`e`RPKPYX"Ab6cb,4j8`k*D(4acE(p%4r2"
Fja4'C$lARX-3HS`T(BYdPBGG-A+cXHiiNN4ZX`[3irJ*U3cYEYD@$S!q8G@PNlf
9jBrkVrRl!-fT1NjaDZJeIX(2V"L8*`F-Q3CL8@1Ph#fVaIT[iSH82J@[TldFYR-
,LJ9qY'd"00BB!Z@%&%U6m(+jVp$6SNNH@IBMHclc'l`ZjYHm)P84mC`C2pR4SPF
m%*Fe5)lT0l6k@IMR&PQ'a%0(''EHCePFMKEmYTd$cj(5C,fh[PRp4"&T%85`9R(
G&TFY#Y[-r9M6be`56*C&C%5M8&'M[jUD@Q+KBUYZShpdZj%!XMFN`e`b1BYHJ[M
jDDkLP52m1`A+FLp3DCaYC9Y4``faNUYK&EJ$b%Xc[I2SK'F(AQC[%D04kVSMcFT
#H`!h`pP-dhi!5q5FQ()bTN1E+)D,rCarQDU%%mqEdamX[eS,B)PR-E,YMJ%(SCl
eYcY5EkZ-2fN"Bee'J*HfBk8B14m%*br3P-KH*KJQ[d5Q%jcBeZ$FdilCFmdU9!p
B"Tr@%G2A[P,RU(P`!9SeVCrHUf+d9aY5#G01iA)-%306Q@PDJ#@5NRGrL+Z2L@'
2LEHD*3`1ZEUa8)14TpI`A`08[MpU)T!!Y3"$Xp@fmF'L@lbh&Zc9PeQBHQ`6LE&
Kb64piM(T[ipq4'FA$848K`#Y8SQ@'h9%L3pXIT55+KcTqQBXlkpSXcTDB+R%QTL
pkd'4TdX-jL8-k9aP""EeZ-"PJe[h,Ql%mhlFLBkS5N-3"%eRP1G2ISbb2Iq3!+r
FXiAE4PNrjXPXb*AALGRe+Q%9i8!,#LMhSaH6jmS08`4kaUk)$lD&C2ILkCITHk(
hEE,9hX5EX`hBJ!-MVhL5B6aTTc)#e3ci0Uli$B*I'cA1MB0Cc0ae(8BNi!#4Tl*
5rrqV8*CB42i%JNR&-LXF6%f@E36cPk(i"bafc022Diik[NKZ+9QdlkRk0j484Jd
MC+IMYQ'r%49RGTjlAeULMU8SfEc0!F%G3-S,A'cf%GTp*N&rL$)Rq'I05F%lJS+
4Q4EG)2bJ4(1ElehCqB$m+HpPlj4Qa(TEYeBQS*U"1FL$QQr"r0,*0)VkNEUm@pp
Hp$-K&S+pa(GS[j@eDlSk5C*5+fZ@"*,j$#Tc"6&k5I9SAYXR"m)I*f"R$M"6SD2
![Aj63Q*C&Be16!j$Uabl1p,%kI8H%fGP`0L*SjJ'lPlE%CE@TASYbiLbYlAiXC*
"P4H-Q[PfB`k6&h-C6f+A8pm2%-[m4(bMHhUk08SG+l'KZKA2ac0il`)*+qUd,Cm
#jSfcVV*j$j9eQa,$mh$-pN@5X1NCVSj8KVJT,(B(K%JiKRp[e,)H$#,VbdCeLQN
,FZUMFT!!DG$&F5UMr%Q8+eZFrMZ8ZhNV4-kcYFZ&&D@9)%$FUhFF"&0'lpm6#AI
+Kk6',8LA*4#C0i2-'Bj#8b-['Hqm4TipNTNHC-D8q%eNDCBJpMcl#Vb3!!MA[NN
p#0b#A)pX"m(4mKi3h,HUSl0Yj(DEb#'bXib$'00JediX5B44-J&kdd4T3!EG["m
X&,aVbIQ8--HAh&qeN5-Rq9%M$R)DS2-a,)[jq`bb%2VqpAJlY0m@rd%(D2r0-(C
$J`B!Q!qDllUcchbh+$[Q,3SMEP*29C8rN!#PQ`VNGLBpMMPS6e53!09(mSI[T6d
bN`U`j(81Lc!'+1ejJp3jEcFT1[E@TlcKh3DadNNaf$!Sh,")c2@q$mM&JUF95(2
SJMESea$6""EV2ic")IJlall!"q[TRZ)fcNh!2f&#E&i2+V$VJm!R0dI&YA3T@iD
rU)rk-`NphVje)Uh6jAa,!5%V1lFi$$m+ri$+9Y`H[)XSIXLc@FcmSMBXT1GJ+dB
d4Cq1UreC!&Acke(@T5`#%dckcECj5I"$&@CX#d8GP[V)*G!hc6'Uk2jFHH4%GqR
2FD@QG*86)r-P%"TTAM#&`08MFIY@"dIk9M,6(F%BTe!M9TdUaKkYq%p"8APKJPh
8epj8ik$1fSSD!H+S%aRTL@!2A,QX$e4RR9-[1lQ('hX22(hqPN$!NMJpj!m*a43
%AQ3IjH!S3h2a26`!jjR"5p5J!GedCERM&r5Dk+aC!D4(YdHKGUYST",C$G$-B4'
k"QLDH(N,F%K[XeZ)R+p3`j!!4pC3T1b+@3BY+R2M')4XT`"2SVaHrfB4Td*%M2C
@MLlJUq''''h2PAFaH,Zi8!mABHY"L2-LcGK+e,Lj2jmTK`Ta&`Q4jGGGSMH&Rb1
R2i"($DEZ+1Gd"1pDTXKp1Bb"kqQ#[ZURdPZQjX2qRpE&-UE'j*!!B5IqFPUb8lr
&ekY`h(PNNBIFhm34GqP9)dQ@qV42CLRG*K8h4ZmT#3X,hm@di8NmRMkq%T3)Epi
*c'RqIBpNHmJ2AK8"qiPh#8l%@KC,hSIE%f1'8P&dacR*1CE1&PKMIfUX&a1TB4T
jdUc%G5Bd3Uh'8jih0cUSEh,SdrC'T9JkKaHQm1,'Z&j%a305#-kY(-J*B+3!H&8
ME)c+"&*#G+p-P4pD6K#i3YdjN!"PqA3e4&kR[)pHm+6k-#a3Q'!+GI,b[fDABX(
af1qRHKm-lkd2*b9q)YS[BeJ11!H(E)LI#Ni+5Gf0)0`jDAEJqPjl3L03T3Z#T"2
-8hT+lIh$r&"%Uh5,1*L-QB4*qVJ"[bp[+'Y$rDp4B&q[(46rf@cm-0EI41"#MiV
A(,dA!"5ca[d4(UC8rKLC@UUid,09)MJ5&QXcm2NF`5[T)UP)r[TR1pLF-TD69e4
*i4X,ed@d"%'M@rGFX+qhH1N$Ykqj4ZH5H42'Vi4d1EX3!ISc&ZZ)+1BeBQ$e[Ka
!4DpD"k8*G,r&$LB*G$PMA0m54B[DFpCH38GJ,,(Mrm+qdZeB)c3[*q68Br,CD`S
@rNND6PC,NB"D(rSj*JdIJ09q#m&aqRU"&P3,A06kY1`4QB3YI1A(SJ9qY&)`Cb+
r,6L"e5(SNfPQPR1(lY6$feSq!)hrh&UJ#R[aJYcq0UTlAlYlFePld!IH0Q+1[*h
(S)1BQJrG26"q"aj(d`(A`q`XQST'MS!+9J(*dL#1cFRqYbfMifiic*EHZhb8M9I
(pmV"YaLN$(m1fjFAUFLU`U&ijqZ#clcE4Q$+c#[K@9+6HlElX+@1Q9Ic-BcKd#`
1paA10rKm2b1)C0CLCG99pGPcd0Hia-m,c$1bLX[bbldL6f+FU'#pM5c2L&i-9X-
kAid2J#HcVN9Rr'c!k`6N5ePTXUd-F[#iG&XRmS,ZfYmEc2NES&IAdJ$VeKYHi5&
X@'`CM-jUcHUIhAQ!&e-ZUM(6CX1NdjS`i1*NR10D&*4Ib19(!Za5(BX2h,J'4SN
&lllQ8D"ac395Hbp&Xl)k8T@PQb,cJG-JAeIPUVf%fC`rNUc+-#CT@`[cdrZdb"A
PXKh`eQL!d9N6%Rr[3CQ3!""E*)#Dr1GDfDAmGPeA8q6*TV9mTlbC&Le"k2A$2@[
NT#kP)rp,SML$iFZ@-+22DXRCiG!)DI,"cXL%hHpTVNReL9h@e`HcQU-liTNUqK9
%ccR-D$'5b85b%Hbc01Zi4H(jj0'C)5V9kHP"if&)de`AfbaFMSZepHF@(+!0jTk
#Z*rRU)FDAd*V4MKJfcKXE3f$*FcTCcRYmHp)"MB[,Dj"iBX"Q*40fi518%!2BP+
m'+hKYF($L+#l(K&R98-$eXV+6F@IAN%r%ELN&#Cl18YQdpUGe!b,&-d-4%ID9CD
3!0e6UD4D-`bLG[kAqD(*"mY#hQi`jdX4DGaV11&dm#EYD$5#*K%9%A)0SH%Th*&
&Y-D$P3+Rj[5Qk,*IAV1dB*0IrUSRrL#-UDIbaC-#fQ54YI*PYp9!TS1PHE8Qp@Q
%$FB""aGfb'`+5Z#8fhNV#9-er[b!N@CR@jDXXV5!(9X#qMGJ[1XD))2&6F#T2'#
l+q[,Gi-B!1Y)X`9aeK@E3VmR*pEYU%kc&"Me[r!ITUAhdjGUUhaHmdRmfS"+5X'
Qlf06,6jNCNU"kjU4UfU6pIUA9YYF+NI%(eN94NCDHM4EBTM%ci6hMaT-fD@1"[h
p"Y4k$PFBCYU5hR,8Z(V#9"cj"0kRJj8UM()*Vme8fFQh)l"(BPVPSf25GB"cQ)r
c38ck4TM6hSPD2ZrR,(&q5ULZHkZT,QkFj(d-p9eDfB%VNP$p9fK"#C`KkdLG$%P
LUM1'XX("U)!@%VP36hQX[1C-ppkRPaD)SIl5Na+S82AJl(e9K0$Z)d&b3#H,ReT
!9+HFM'6#@-aeKKiFUXJdSX8iPL+(p`h&Ub,iq5'Lm1+NRqeQZeDcqVG!V#SP@Sl
k'Cm!"erER`)Kb`)Tr2@mRKpD)k(fljU&jMa%1rK$mLJCrZ5#ldX849i,-(&1ai)
KCB8l,%UqkD)J`F+9UdF5arrPH"%LjKMdB*aeD[cNZ*6KBj`)lf'KeDP0#)&k+qF
b-AX#c42NN`H'0-NLV%pI1CkTcAJ3Yd[$aq-M1B)$pQ!Z$r3!I8k1LbU-K+r`*ED
4K5d3AaY4HKEKciTe`KCcI"QTaGC2JXVNKfXk`FE&MjS0LEUbEZIQ6I30VCpeRcZ
[T(6"4TVmef&j3cYf3Cp*T**[dh-A(+BbFQK`ba4X*`d*PN!D,R5N[BdMH$I*c()
PAK`@JDIjiA`Ep#0i"j@*Z4KH*kT+T@-0%+(kQbb5JAdd"jDhr6aX)Vj`QeQ468&
(+J'e44$43U5J&0aV0p`aEa+8d!SXE`C`V9T9`0&Hda6LLQ01b5m2Pm2MLq[mRCC
*4)Q4-)),[eUkkeD6h"dqR`N-m#BmQ``e03Z(LZPD9"4fZLCi#QaEZ)Dlj-bD6e6
2B*Dh(N9#*6Th6'aC5B`AI6d"%aHBraX`i[2iNV-VE2i&`j5dlL@KVc2G%C!!!-a
9Y$@'KUj#'26'(bbjZ0PKj0ra2IZb#hc,h6dDS3"+TlZdVZc!b0mC10E(1RMU%C!
!53fkj3PSZ3*!`UJePY''E-*BdN1lMcT`M"8k"QZp3%!!1EKf4j`I3iM&B`GBGNP
SaLDaH"&`VCMrSJ8(#qHIRfB(m6K&la)*@TSjTJJm5B(6aGi-X4k!&)JHarNG@Sc
%DK`5Dk#ZZ0C,*'BQ*Ii)-[Z6YrYIe0fdd5[P`PdpB*!!4D11p3&BE6QV-MFj`h`
Zi`*b@GrQQ$GkjE-I%-H`dq&jdeUr51EP!k,B*E6RjA%-&4-iK,C3L@((jG@H-R%
rB3M0eZ@iGB0CcplqHi-RT1rB%c4XUSU1Mq!1ahj9V9,0KKHAV%6ZmX'J$&FL@Zr
r8!ia4'F(U-eFd-ePXdhN)$a9C(JUSaV*L0USih+Q`ml'@CdBTES(FD`fTBV&d6Z
Y5DIjh*NZV3K8DXQ6BQ$*j-fEEQQELMR'XPY(iJk6rY@aSdXf@M+&#@4m9VjchSe
*LUf%TRfBihq2Kp)YlP9-KEaN8BNCb#"Fj6M3),)RRYP5N4D1qT@birhe5E%GF[N
d)Q#p1TU+6ipSFmTZ+GffKGB@&HkVAXZ1(R)$V,QlJApdcUi+Ae8Q`%$K*h1peJ(
4PXZHd5#idFjB90D`9GYAj#f&Z)#dl*,0#ERcZ(Gh)GcMmq#1YM#e,N$2cBTqZP[
C"jEAT0ceKJXj0KfYA33V!Xf"&lA(aLHkFcmTplURQ3[-r!&m8a08"REp2Mk0KBM
4I5Nr[4kB23@)eF0bAHr'-YMbkk,@Np@'J%"Vch6#SFME56Z+EKE5!@FR0Acl"#q
SB)cLNMQ`5##Z1hfR'DD*eQdT+2iC2"BZ0PZTb`@Sm$aF-0@RPbKSYbdbiT'+Hi6
ABAV-N!$#9fhJar18j8dN)&C3K@J*8S#B#HBX'Kmr8GAQj!r4MX$-(5B`abC,LNm
ZAZ*,Lh&iA3a(-BNc8ma*!UMK+c"NQPcPC94MFA-qX@[$!P"',ZH+K$9EaI8S1,Z
B(G#h`kIZ%6"(pBkZQ3)0EckKZ9-h&Q`1pA2'c&Zcpa1dV'BhjTURa@%ZaAQeV&p
j9"#-f1&"RQm2`48SD0$"2+Vc)*pI'qPNV6b#Z)Sb0CiL5*F&R1Gedijk%I)6cUM
`,Xf-*jRiVJ[#hNZS"GFHR&Gl@#"Y&ah$P8KCrGAKHG#re)S5YNGaeIcVd1,Be"@
0`Y9Uf`&qG'+[VX6H&JCLN8d,MfZ"V*&PAPDd+@SYAk4#I&mHCLh+GZP(kchLE%!
,E)d3%qVEKJ5-5Y%5G$RMb*Aa[k1if(Z%BT+VlXkdIQp%TJpG!"a@5U8X8K0+4#+
)R)M%AE6!#'8L@dp$F)9FMf$D'+L41@RSK38f-c28!0(3F$Td[iCfrh5mfZ-!SL1
QD42kUk#)d[DViJ$@Xh6r[RFV$([kbCc`011FqU%dU@q#RDYL4YH"UPVE!kMU&Pb
VI0TkV*[!!K1(0')%%e)rcU9)M[S&BEd$!d)-`"8PlM8)@YLYa`Yc+MC8Dd"9%qS
QA6L[l*h@f&B4UI&2`"LHm("dMq*5Y@9HDD*056TU4beaDX'1J38jU2GZ"j*N[K+
f)(,UrH[fXNi6)e84kk1*9JhLQB6-RU8l!EMX,`6HGZJ`&@L5"0*$X0TJ,5GT3FZ
JNHK#&DP*-JrV+QS,N`dRb6qbaF,k44VDj5#1hI'lFe%$%0a+M!99e8CqLHLVG02
EKLGp&GfIXCBkIJlFMXB[H3+HfAUMTl@&[[Cac26pGCi2S,HC6YP1fHbA[2d*[3Q
pp,hYNEp5SG6dqH18aEH'6p-()RN38(k@Xa65U"[Fe(+4,JILJ)#(q$!$0MD2(G)
51PFqc!r0-Viqc)Ya4qX[fV$4&SLF,+Q9XDqGVhI%JY1`@Sj*jTe[,eH&FXJ(q,i
4FK4Hq%-4b"A3!j`Ib[D'RIBb08iIR0QpRC9$5B[1IlXXXcC+T@(XmlBqlNDhHrL
#q282%UlJA2MPEdSe5dfN!Bc9LlB'e[R@FLqZfG"lq14&PmLaGe#&&mdKjbH[$jj
5kfMIdiEliHc"UT&"AU,pBD)G3mrpeE%G3mmfhUE'[2MAfVBipK93m+"ZJ2#(q%G
AAE5m5$bBKLUf`qQ+AFka(AM2+KcIVVbfQSll"j8`ZGDVHT8aZAXpHLBpjb62m`6
Z"rH4hZ#hPIXZ&P#4B#DBrb63jk"JJG!Gi-bde1ce+UL@-13L+#8i(Bc+ZXQDf5T
qS*rfdhG%l%J)Tp%'Q%kGLFIjLIB4IVVDE(+Q@LhKR"VG8&J9YCb11F@"3)H[CZM
#8Zep)-*UrMPff#RBEFrp[F,EUmB%Ua%PN5hk05hl!CDHZBTAa@MJdJ5-'eH`qBN
5fpKJ%bm6&28iBGQS3GFUSchB0E*HB(b-b`&cf(#rm6Ahr$%&HTiXE@S"fX*R3U`
IU4bC&6MYh$T"qUbbIV`ALi"cTm`IGVJ1Jkk[cm"-j&Frm8#XqKPcT%$YamFa*Vp
6hqm)[JM&kNpZVKFIlPNGQGB$(YQYq2a3dYh2C0BS'+0M*f2+FG!IJb(pGeMICGm
F8"l95K%fmG6a62&%UkZVUqQVI+[b0C!!++03BfRkVq&H`CCKf@B%l-Z090arB0E
lF@5!556CLdQ),NAK)@Ecq"r,1Tq)e95qIFpEG(hC&Z8GHcE@(R+!Gc["S8'(i2j
QkcLHCij4@KPYHTb`PAHcC0-*86EPR[[edFQ0*IlPi0qp6*JU*TjZJc)6R9%AIEK
%#hEN3&+IZ%UXdhm86N*r$6P"im9S5Dmi)fSr'#Q))50Sd0`VS966YpLX&9V'R+(
65X-`Nq"#8,,IS#3*Qmh(#rK5&@hrT*8Imf'85KP$pT(Nr1`[1LL2YhTNN8G"GaA
H`+C[[8Q-QiDh5-#!@SlMKaLikL,qVmZXYZc5a3jdaVTK-eieA!UjK9a)l%2p*`1
KMZhSXa8raj+H9D+fqm0aef)VF9IQ#6q(Ja5[h[1+3&ZFPPmF"+mbF"`iUKM'4HN
F-+Q!a-p0j,pM618+4*KGZ!QYhYM1j@dQc"jQ4'CIfHG%QDSh5Fk!XM[*Q16MQ9Z
1h6G1((jA'`i-eS2'A9Q`Sm4[$)VFTR9k#hfjI&lErZG!$!KFrbdff0TMEjQ%0ia
$ej!!Vpb[PC(qM3Hd65rQJ'A'EfqRr(aZ""S)Z'jKEM)PRIVh)[T+S1%Yjmp!&Q!
kpqlU*[836d#kC1I"8913!*p+h"ak'SX2pr$KXq1hamSdGD5-&0#Ia&5$G%!l2pJ
b6CTi1i,m$9'hD@1$pp(Lf(b3!1FPK"MF-@aE&NDhIdGLHX2T4-"rQ,5UMVS$Ppl
"q6bMj)+bAYEdB$MiGimB"B+5FCm&!+"2S4fp!'NReBhVM)Zhk@A%rL`,*(pBmb6
iPRrBNa-Gli5%Ra@aC81Cd+#rX`l%lPQ(ePBD8mq20%(Y)F3&cc83+E3ierd2#6I
(3RFA&N9*KlF3er@QX"5$``[@iHc&Sl)mjL&E&NM-pCF-YmFk+Si'89%C4ICrp4h
@&Se+R-"SV51++09q9r#p2XFTMl*M)Smj#JKJIVmcjY6m#0$+aa[CCcmG4"YQShl
THp!IjR3NI)m#P#r(!5BFir'055%1pScY-#hDbmpJGS@HZ2&BPTb6)3&fD8Dm!Ie
i#F-*(4PX1N5e2(IS"VUa6`NCKCK@C0kC26mRP5dpDG3Cf-5ral6QdPTlShER&j[
kl+L8kLI2ek"K3@,(Q*kp)m-m-e6@"q&+1HC&jGUiKjRL(R)THmPN#1")e-a),Bf
LQMH*F#`#VMPE+a*!XEEP+Z9rb8kKPcBq[521R&2R*bkNeHG02,c2"Zq)-qqFjd`
0lrB-aNJ%9'[5&!B1"ERCLar`9)RcVPH9!aEih,0#0Mkp)m-mkfHUKMrh2Uq%k8h
0I`)l95+kjHKr43#JiqF"-p(VdHc8[!jIi@H6#cYI3dM[b1HL64f!jCb0r@&4YRf
K[2Ii84J2FHHkD*j$-bF9"(rMGKBNEJXh1Z-3C%h6GhpVVlb0Y#[f1-2bYT&6Y!q
j#L+3!#YC4q+L-QjL$E&Fbi&TR'R`dJ%%eGRqc+!@U0)1@AZNe6$5b'dcde@M@jJ
V3B8AGL3J!YK&NHDr[2RI'HDq(@3(46XrM`b"4bH$JKpRGT(CLM'86U[a[&5`Zc1
0J#S4XZm)E*LAfXE#N!#paPDeDdibATJ2VC*I5@(hE"*DNBkPKP[8)Yf4DP14dNE
`k[[RFE#-+q)kTPQH&,&MRV5QUFCZP1B&(pHNJ!5jDdK&Mm5q2,cfXSS0CG!6cVF
SXDGR6**NF4+[2C'52Ym25&@5j6Z&Ti[ZX)'mQH@CMPD3!&LJH3R-&1&)a*lM*pC
KcY2ZJmh3Hp0cYk)-p5eAYLI$!kY8QB+b6Q%`[Y"Zdp[$be[Jd%-cma@FdG,eE''
r+jrZSaI%*Q8V33j$fV+JSAPISrE,dX-5-,`ifC@`a+FAD2aY"21haYjb$-KFbD8
jK*d#h+#+R3DflE-S#pR,pkKl6mLrUf2K,h3V%pCfE6c,f*8e)8I28j!!f)e(Q3Z
Y(4CGZj813VT3[5XDBli1`!S'5R5Vc4%+16S,(*&[8i69jPRfkG2XlJ5AT@G8,2-
fJXKKLL0KV`p)%AYdmRG+(*,-XfX#ZFhlMhq%2P0JAE4L)fLG'Kr829HQ06Nrr$*
BGRP6!N0LMjZM)AZ+'PhQ10#$f3ZIHI38kTf@I*QDqqTjrYaCXCV!NT'9C"Y`HKU
@DYYL@$lAYKjE10YH('j[pGr'p#,lap%VL&-CkjXljNc#"br,a*M2@JVVG5DSbjr
S2@9dXHM,5YIemSc31lJ[2!8FK"b'#@MPZA4!KBKlKmG(cb0T$khdLXFl`3-[jI9
BUKCNQG1'N!$"S0+IC21C[U2Ce8D[+,GpJfYEhqE"&&8L4KRCe88[e"9SR9PpKI8
"$iD%9iDk#IDHPrA3YVMeX,3',E[9DaDZ`d$IiTY`Sc6[PRSV`*BJ2V"q@!fKrHi
R-2BJRjTi&q@aa#)@5@"PcJpRbE@Ale3M%U01IlTXifZ'SmKa"[cia(1MjmF@a!M
qeZb)-@!2X2#lqHFH+G,qNh[BIhNLdb(4QDFSNG0MHc[*P02lFS`EdmHbfE2@E*p
E(0c0fFqXa",N$d5!HEflY9`K"ISHRQL!*0RU'k21'!P3C+MCR%ak'maK'EDTUV(
NCT1VHFUDAp#ZQLh4mfJ3B(Q@d8'TA%+mGa5kZ8T'43qLeQb+XMGc0IQPYkjB"#9
*m5LkdN&B#fP"9-,TEZ[8F9@+rCLC!&AFrL9m%+LC&*UYc[5ah-QMbEB1Q42&B"A
pFjXa5dU5YpqiZkG@T'rHmNPmrrmUIQc2blD9qKD5apVIFF!kX#Bjck`DUC)(P%r
cBrNarqR5`hRMYUU3!2G+39PH!I)SZVbG,&dC8iSRRJ01V6P*3%*hYBk,CU#,TT6
+3i1%J&IqUKm1KqKT"JjK,m*FD"1S5M0SIE6`EDfFe0C[d-iTpkQ"pG*HrNKABZB
JNJ4b%jHrjSZT`1`SBK1)NUe*2VC5@-JdVQJI-"E!hd,2k-m'$8NmDe6$CFQ*2PE
mVA)cNFfU9Ap$1c'@p*ZHG2SGrq@N9di2efd8J)K+K"A50f+Kb0CN[+ArplVc[$N
-,5I`8316iUGb+Ci%2LTX`I5-bUlik5-f2,fe@rPeD5[&#QUXN!#`"@lAjS!I-9h
jQp(`"DGA+mDMUJbBAl@HNmlaHU$e+YrclT%Rf3SV+1QkBcc[L"k(ffVDc+Q!p'(
TjGVMBjlSIpi@QSfQe'P0RJN$Nq+R9bPLEXkLdTZ&@DV8hU,ilkPaR[[XU6[4R1H
TJ2@a!4ZJ@erp[f38hkFUU!)`eC3#lU)YT0H4mE2i#(Gb")Gr!Q099[%c)`H3!%!
UYDq#[#Xb3&XB'prK4e$RQSRT&QT1UrC-aZm%$&q#LNMB`9dBpJ0Vl&3S#3+$pdH
LNFA8YNBZBe(CY%iBr-)&6YIQfbTAEV1TYkDFUf6"1R)DFiPFR4`Gke-"e454NLV
IQZj)JDH&EmVR03+TpclF8)XlE3jK#S'G!l-%eZ0#5!J'2N$b)X5-2`9(KQ1"Z*k
(C)4I0LHqC2U4,E2AL2(AliH!#R#p)m-mP@JdQlrJAV1U(URCpE'1'rPBUD@JV*N
i6G'KYBK+K"8+)rcZk0'Z#P5qXIlHQ$0IYGFJ(4FNb%+-fhIUNe8[D9#!9e#VUc4
#N!!IcTL![%[VEiIQi!@`3Y82r!VKQ'40Ie,PRF5N4P!9i6UF&40LYZ(Keq[+SJb
4Tf4,5QbFhZMR4IN6&6H5em1%)3MqV#(JGl@[*F`Srk,1`5aC,kcL5XRl&f6`bY4
FfXhF94%@iQbp[%&5J5m)9D(`T03@UUSe5krBc,9@e'bUYLhEReCNiVcFLq+8ji[
C6YUK[J&pVI2AUb2ejI#+@bXE3+%BMq%K+LKKUFS9L2b%P'e#-*&(4PPkGe'4L%U
%&9M6%M0,LeX3Kcb)rC(++Yq-lQ!dXJqc1kTIjJ0%A[Q"#Rf6eIH1LdDcj`MaF[L
md9r8-S*A!`%E1e[EUP"Nm5![)baM4Ek20M6LN!!IcTMc[0@D+*f(lq)H&LNF9pS
)b%)DNq[),S'#edNM`(T5+m&I)pcQMq'6C1JeA+0A$-C)""CVjFSQ`8[6b95X8V9
95U%9L"0SMl,m`S)UQ-5[c*'5Lpq#I()4'FPj&ZYfSQ8&F)F[iVbJRiXVXqH)mCr
l[-l5@%UK&BJ!#PDLLA&mYBQXfGkaU4[e@)iqqEi'T4(#*69m*S)%eRm#1eA8ZXT
Vm2,EGf`2C#$VNqi&JCVC(6ETCAjrEZiYA&J8%LPIbA)j'F6Q(J(VEVj`3YKk81[
crND5Pa`i5jh`fFrG[Vhd3IF5Kb)IdY"Np(!Y4rZD"4qD@6$K#J@N$6hQAK`5`H-
p8@dU4bc*,I"`LK"aYH%J0K,XNhHld4rY9%l4lpT#6#!H0DT0)&)ci+a-8X[+0DZ
hJCfjbj+[hj&bA,CVmq('hJ3-M0M-BJacBKIiDCp-1b2RLr'cKSMj2-%TURr6ce'
aL%UeXKh*LrSeY%lKHEkQcfP0G3l4hY5mJPmV-KNMNkPAY9",CE$!UQ3f5QcH#@%
8+*f(lq)HFLR-X$k`B1"XFN&FYDkfcY#AM45FC68if4,@hJbRKCSL&43MaKT'3k!
mrNM!"Y05#Ylci&hf"h9ZRffK6N`C'rN`%D"X(i)M,cap+LUCj')YDRfEp,-l@B0
l$M)0[@BJPArj&SqIS&m!4HHIM"`[%Y`H$(N!Y5ZYEl#4`($@CFF5+r4*'*K9KV1
pR[4J'lZ$*2DDpX2c,,pJ'KeE5E`M$kM3r,NkSdD0jR&rRNAcVP[HJIf"hYPE&96
[+[5P+,a[e%bp(0E2RldqX9qbeKqeAp5e9c*AV'@BR0*rp6eZGG*98B@kaZ&ClHT
`BAh6TpQF5HeRBcTG%6,`HCXEP)0XP3Za4)V2CCZ(l`4DJef$#%&XQS%1C[e30CT
#CLlC$+Hr[6pBkhKjjqb5qXB-5IK5CKGTGq8&DS%I4c-k+fJ4,MiM!@ra0fbh4cb
9F1h'@e%01''#VEmJe-QD-6rTMK+U'F!&Qec#fhAQLUV%&+-0ikM#C*H4J0XeCf!
B46cjFPhfiJK5EC1E6QbIF4h3iDZVf@jK2AFqTk(k"-`Ha@ANZG9JVTA06YdEXl+
JfA-KKl%*Z'96PcI(S%FB`dIjlRm-81XX40SM,-3FI[+!KmJAh0'L")9KmSA,JGC
PF+A0&lLXj,p6Zj1d%F`*+1Q,(56LldSC9RqJ)U@"AAUFX'cqRXb$mJJSA[qC(9j
49Y,e*eTC%,&6ZPlDj'V+8j6Z"mf[k9KP6bUKDhaVI,KfZ-*Uf`'iIK"MGrS"Ac0
dMbBFbAcUm@Si1D3jGqdN1F)j$-p`81RK1PG+0PN!+U+%+L$lJ'kIDQ`2%R!"fm'
c1-@*CmC4)5JAF&Xa4ELKI`Y`)M'Md,Q"!DK8Gll-r3$d"4401pSHL6jD)"9H@XQ
MmJDkH#`%@akRir4KI5lmKpMY8D+QbNaB[CU9U9k,@h[l&Qrf-'+c)(Q%M()lj##
9N!#pN!!+32`)r&)Kq@PpGI,`G,5RjIe#drTNY*V1#G%T,ZZ+82@Q4Mb+99EYFCD
Q!p@bI5ReIfb9%@DDP6'6ZpM%&G$Lh+hlKb&Za`r0J#G1,&AKP-,dG!UrJ"SF8M4
l2[[YLB+b#fG"0U@P`L$N+ccdfD-f23jA@E1FEc@&#2`0PHp9VaQZU3fBIGR$Xr3
beV%(J++cCj6!k,Sc@j!!"NLXFhAIZA`3`pY$qS(GY,bpq#$#rP6,0[1+RFQp@4p
bXBK5R4f2fd%NhrqZJ3R&#dl'2aH`8j`qjb0XkQXrF4$X$(+f@GAf!q3G96$0PM6
-R%-ePlQT%CRc[62IA"&cEZ&M0MHFf6+F(C*q#khef)%MP3r*[9R%*KTJY&irp#1
5+J,'qVL94rl9B(dX2B$3dF[S&PFYhHr"B9%iLE[096p)[pQkehfYIKi"ah`eR&L
Cbi(#!GG[GV'-5Q$HN`S&lZrTX[mKX*lSUMR1ISE*d16'0e--YJ[)a%BIR,pX*q@
8KfkSLiSR61HL6)pY&AeXcj((pbc+%iR822XTC,0GN!"q[mmPTSH$Lc$1e64Cj%0
Bp5-h,9R#J5&cE8lpQ2+VElJ"+AlaTa*TbHUA)%h4G`QDYZTGpJUpUEB38"jGd9+
L"ANVJpalcFM&B0Uhf),23Ad(*4Z(3+edP%$*,f"(ekVLcf,j0BhfM$H*)G"E6N3
m#RRbiJq!p!%#IM2%cB*N1#1*N5`mK#A$DFU,8T0j+E2Lc0(hcS"I[8@1h"YQLG+
9hDJiD#Dd5[Tj+`b-jYS4LIA+cVbl2Z,e6RJfJa'*j'*[cl9,")#D61p'F1#`$5m
KhjPrT%[FTmGR0hG65d(a2X0i4l`e)!K[E-2lM*lmDR@9E9)U3G-hKk'!0"mG[C!
!Qf@2[HS@J`a!KUE(iRaNeaHTSr",mQE`EP#$[+ET5m5R"2XB*drUarAdrlM4+ZT
(re$$3,QpX[I2Gm@9()MK(LQ,IJq@A*Fdk%d1[XlGYASpX#"@ACUfSD)RUK2#e2'
'2[0-Q@fZ%,J6rN'Sj0XNS2R[q)5r#@LP%$b16U-,ccLKUYdfT+aNVl#pecddk-q
[ipI(CcZcVic('K9&!#KPqSKU(BR@ClD9VcaT'RG$DCH`Z&$TZl6lcU@CqK%aP9D
FM(q2-HVCQPd*mF,Ej5kUZ`!LBI1`Xi+jXl[iPU#V(@EVC%pEGCH'eDkI5kGF5!+
HGr!U&T(GkA"kqCMR2YR5dkZlh*'*@SbJJ-K-Y)AfqJ#L*J6PF0A&CKpD[aLqSdM
A9ddcpfNQ4V!9biHFU"1eaL@H'FYq3bEZ4$5fCE*KIM6LT&0C98j`#`8**B!DU$`
,Apr$rDb%LdLTDa*X-J29Q2rqAaEK`XRX*5,H(-0qrS4qPcqVC3N[%&YMPIX-DV*
+'U%r6Pl9+pK)Z$)FNMp$bNUREXl-)d1kaJaq$*GFrq2H`PAVi5Nc'j3Z`Gc@K5$
c)+5m&iCVSIC'LlA%+qNM"pHF2%Q2BT6KLqqiI0ab#"LLX3Db1ETi"[Nk2DD&j2,
dZq,N2!#Zbjf3!$9-Ke3&TR%rq5CrXCVd%@T6(0dLFqKrbLeSI12S+XV*rNQ[q2B
Fj`p24350BDSeGAMqfqVTJ*Ei%YXLJl6+dI(JHB!Nr4$LZe[H@ALB8Nef!h&1!e4
I2Q'BrDNA!GF%@l-'+&8VFGM4MD#L(Ve*VeZD&lL[#(4afPe&8EC)63B1ARQ&(0E
&UC3p6Xr!d#j$[EP,,QcS0S0M63fdb6K1YJPa2-cT[i0Qr$(F5hX![F*4TbIhp52
1B%*i$EHAqjmPEK'LQ8GFqkqFY+(hUkXi32-1rKqj)b@X@1m'XirV83[XEN&-r#J
MEEF1P!hYaqMU`3DFdIIK#XL-jb,))bbq1jFL2YdXRhKZmT)XU9,jYfYk8E&["p!
BaB&Q+$KVGP(c!CaJ,pD#Jf!$5+8bjSU[(H),ZUeM@`QA'p%PqT3!C9!j!1j)dII
Jm`UM#![erfY0S0*SLU'VZ'1')('4XXqB!NUYE%!qDS0EqC@**jX`D!HpcKpiQV!
MPC5S*2)&0bNaN!!&q[X'TC("&HJ5Ie1@[MQA)1#+-Vmq0604UG,GpL&'K6J+#T)
29b2$JdQ$@'!NDr$T1JQM9QUJXbE*k9(fqpq93CLM8pDm+)Ab&lmTIRBd"jdU#pa
p8hHH4jl3f(`b-&klhll`Z``#h(K[R)@aCa0P[)qp(U4ji!4-D)2brbU&h&X#$Nk
S1CreJi)BeQ9*BQJIBiVRq6jbDCj39m@fV`JJ)-Thj3TrP)AbbSiMP9!Ka4(0r0A
2i-V1bA#a!E1Y8SDlCdKpCl*JU)hJ2NSD4Ac5&if8L#Ue3ShN339hq6q!+5R0c#i
dQdl%#PNc%UdMDhRAXHU`F9R!p+DM!Q*aq&*M9'2iq-U*EDIKqj'PFkYjIRbLV)3
EMieJe[K+5&jFA,0'21k!f%1QJbmiU&hSNYN*`m-[VLjjQp`'C'3RJpaahiEMD1-
F)TKrN[NTSmci"epB,hK$2R`e[LDBJ$["Ed"8X"#m8i"qM[PKdB9L-$"kq[TQ8i+
9N!"L42+9Q#F-)0Lle8UIid6JMi2U*5r5bYpmk+c%eqQLrhIMQ*d'A@p5*Y9K!@(
Q+(5I'N"AAc$T+FR,Ee#Mi4TdkDap(Ibi()b0$2e65`hBK+C*)%E(R')ZZq(C89K
hHSVDj(ErJ`j639)Cq8Ep!YA1D$ecNN-H2Q+FEVK1BLlr$691)ipAkY8UB@i+#jC
%G!NA(-+(`VcjTT2diPPYffBe1V'$dU1!$1lYK)*lU'BNba!8MYRGSE(2,rGPSMk
@+[59#mN%3b4UQ26iV0bk(4SYM$IZUN41"mrX2KG$1$dYZ-b)%XCL"Nlk!m[3&Je
d-U3Ejl0Uj(1V0hL[(eVd(D@Tc6r2+iFSB@@-U(bADRP9f)%h*I5"A,@,!)UGF+&
LMAkbG`ij8B'T*@Vl(U8!S(8QQQGfG[lhabiMah[fAIr*mE6E(k+-U@EX85JD&UC
2Hmkfjf%CJ#c1P%((l"6)$q8XX8V#!(I(*DafdZbacETRdHUI+i8Q)jJJ5*lZ2,D
+LLMES,SA)hF*KiVYie3f(6hrkUfA4b3r4&rH+M&DbIm*h$FTdk9dG-a9&bL-cd,
BTV@iSArp@b(%%i5Lfjlh1Fm%DUhM)'![@`%DK8&U&de2j$![-Q2'YZ'RaBG+TNY
l)1Ij6"$eM!XpV6M8BY5#pGDQ`E`F%5q[8biCI`bV`+3Z5p*[bN2$TG,(jA9MKmN
N008&MqUL#'cN4kDkh6K90e[iphMD1U"@+CE6m)r9SNm2TNpQJ[UDAcG)eRJ2EHb
GdFd@`Gl3"hC"rlFrqK-#QGD4IL%Y4!PY"ij$8REZMm8#hRAbK,jHBEdE62&AiJZ
&d@EQZDSr4"U8Ejf`hVD)BZRCerGBH-CAeG,JU))`-EV&AZG)NaB*93JD5PVYGa-
,iPXqGBNq+#L**KK2HCKC$S$Bi6!*rQBH`4%r,*QCB'kCG8LG0$JSBRb$'%jQV(h
#`V)K"NQGMU[2#PfbKUT+QdTQKYP#6qif11*'rFN-8UClbfN$DQ2aF)l1-h&f,`A
2fa,-3I*R6fPhUrkD%5%!%jXI&5$"la$M6r#G)*EZ)`U$4@cpdMf(p9BF0Uq$lKM
B#fL$d!4M$692dm2Fqq)[Z*NlU#EFGmHJKp0HR2AXD@-+QKf,'rV+d['$*6@i6%X
*34Hm3NXD#X-PSI#&eQ19e9m+1L)3*X['4T13!!!PYG*JS*GH1!"-SZe'kZ9M1VG
EFK&*QAa`Y,4c'kl8Gjl'-Gfr`Hk(#e!-I93QL64bN!"[E8r'KR22m@lcA",*Mb4
SE'+K-emA!JrqB&J#rIfkAe*5+(3Fd%8@i$6H&p6eDc"+f[fUjeGb"MXDCkm$iE!
0NI8ji8(5S,RiAp08c$M0C-"T2B8!&5"9rU00,lQ'F'-4"&)-hLYc)iqJ&+,2@V8
)m9$98BETA'RKB,K0(,rASI5-1!i9*LR@B*12Bi*5qUC)Embl)F$*9dJ%A,Mp$6`
RT!8`[e"MSk&pZI[a`0$`'c4%+L6p`*f$q8#a8h5c6k#UbfpXZrNm&dr25lC5*FU
-YF&1rMCmPNDc!FX(8MrC46V*hZX!eZ`(*)($V3r'B`NbFfSK-aGHNXR#(j`12k3
@DTDcI0`'0@BK%dpV-8!F3-pqi(%BHpe6-hB3rj*d@XCh)$cH0),S-@B+MHef#eL
#2Z0V8M0f%2qHG0q"+f6,#'#jLc00('H*fP3F+5#S0QYDpRGhKKGD#f5YEfIXe-b
QQeKB%`X0jrqSqrdU'rFb'!CCapIMYl9B`,9e$b9Vb9aIJEDL-AE#j39eri"HYZI
Q,#,l0GF$VX,V+6cb",GZ!@)r)U"-cjd4P2C33jPHf)452,*ldD,dk"balb53!%a
r4JKXmQd,rC[[K[p5elQL-VQ8XTpKA'Z(@KF@ZIhrHF'Y'jM[J8((Mq-LFJpK(F5
-"XRj!q`C48[0,L`ZL'CN8@&DmiMqG8G-c31)hAdKQm'PJ#L,Hcfm4r[dN!"0VF@
,fH64%NhI'a45iRDBqTUi&'CPJNH%U9&"XqdN8TETpfC3FN@Xm+D-HR&*CBXK+UM
RUr4'J6MJ*'aX%h2KCY!,1D92fPhAYf'6mEE`4RcF'Cm&BUj&K%Ve$GDCDC14C,R
LaS,b4FC[d%dU4M,H8iS%$@$Pr[81li@0TkbbMDXMaYjr-"`claM4B%BpFi$!#PY
Pqhj$b9I`ZjdU*Z2PaD!GE'[r0[&#%,%3HjU6$mDMC3%,&[%jF&aNi4r6jmArHr&
VDiG3,DXk2BR5#b%5!EJakM%*bc8RJP1(@%UP8*Zd)jeIKJ,N&h&kP*dX2iCSk-@
1k2TeGfi++FYHCTdla4B)Le60AlbG9UTeC)Bqk+6&YcH,86&d&92c"5Km2BBpIY0
9&`6HY8q49&)@jdqDmA(l++kKGK`"N!!aU-X85jmclFIbhBqSRjB%GjUj#@JET29
jY@f'2cj2G6F#B"bAhbc,af1H4*kJ!NZTFqTCiJ0fLNrHb*lRFm4p$8m-Z+XXA*!
!CC-CJ%!bJTADTQAdi#'L)UNqbmlXh9lKqlJFAV(3ZDCDB8C2V[IIN@V4*$fL+3r
Z5G5Ah#cVQ)h9LCb1K-EVM8!iFPX$j%+BEhri@,51ZRRE6p6X88)S8%c918Kf,kK
'%AS6fRIGVMf0ATDTprEK5`$IIV0*R#pD3)'4&%!1S*ib`j&ICdDP6Gmck9Ke#2%
@B1MV-!p0YECPKa06&I#BKk(,"+[5!`q"LB8EMZYjAZ)Jf'B@Xp8crfq13BG5$qY
23QQ*KNE[cZ!biF(2A"[5U#SA)iL@E5E-"84`(0dKThFSG"33%"5RM[TLbEKj,CJ
Y2T-,ALSX)3ZEFV%29(BGbJL[%j2[2kaP0lGp2($9m9(GSbfr6Q&-XkRaF-1Ld@Z
**mNRLNk@@cJmGZK(PJVAPZNIMK0G-XTNkCHR6ErlN!!B5%*QJLhPr!lGB()9YMc
(AK,$Xb,Y4VLP&!VVNFL'`ZLi%JN3[4LH6N[0G9l6cR*2D`#V(kH*cMABdj(9JZb
)[-#Ji9!)Kq!G#2ICB4ZBI4&&q9Yi8c"Z9N+"CbkL0NbhQ[1(lJB[hcM4l5REIJh
K%)4YD$Ur0Dch%k5!3e-4eLpkk@mbrcUDRQQ0[5&YS$P5JfJ(f@+jdilkP,IAf2K
#QXRiKCh661P@qCpAZ'Z6T*CH02U@QVBi9G2NF!$UQS,l*VH0&Fkk4U*I2YU'8`E
X6'I$HEqMbRM6KCd6@kA*8$T(F1L-+h6UG,6(Ud@Tqi95c+dF-&)X#RH!Udq5MPT
iaLV6#-Y`a'mXZFqjh&[QR3LXl8E2CUUd,*ah1Xdmh($d6`GZYBGa"GH2XR0,iL0
YZ9iGTDXaD3JFVl0)hZ4Z0q8'r9"L!'H3!2[a!6A4CI`[D4Tfbhkm-`5C60F%l%!
3%rGq1`8e"K'GaqlZHNQJl9+DkEMpU[d!D[A`8Q[GG*cCT-l!34HD&[)Qbb0"V'K
&5CemZM@V9%a'H$JlL*,,ldj,3JqbTIiKAZ#!RE0FD*V'F1Q-NLA0kEBV@!@5QA0
k536pACj(m*`Qb#A2)HS*P2Z#%!eUDSI5PmjFkji)rIP*Je4`Maq4PcXpS8"VE[a
UmN$H+`pc-HA'2G2JkJ&a4q0VKbr0r2,"raS4`5FYbkJN84j%k5,PXkX(Zq"0*M-
m14hqUjNV5BkR6#kLi$rfc(h3QScU+HF"fR@BC8-YbkMdbb4[p$2[hN,8*8@1TRl
qjZAeHhIEfZ8C4X'q)SLYDd2R#"3FY66DXA3L*96l1P@aZCDB)RPD8K@%,ak(RXr
9c50J)Xmhi(,fi5NG@@'Z6!8F4HM,TLCZSkqiE'UfZA3TP(jC0LY&VU1IU%jD(JH
Njc(Km95(NIKbUFQa0ebZChjN@-bTTq"5A-SVVKq&4p252#MRDmZf+!T+@a&fD$d
4FlM9mXP1QeLZer9PjCe0bcNJj%6ECik1+-X543@`XZ!2CTUee%81TEr3Hf![$`*
ki[)U5$Y3JU"VG-Cqkk!HTDdrG$FrUYqY6YBjCZCB1PAU@RYpT#q)HM8,@Ebd6Ja
heBLef@6L-8aqj@[U#4UYRRQDG)B!)@GK`-Cc$YYVMlkh+`qhXV`82f$"Ij)QlD[
d!$ZfAj,T2fdA4+@SCTbJ&"AiIfGGNIl@iDX2)FPC*VC$*-qA8P[UShEcH)bZYBZ
bYJ[LZ)"X,H,q$+V6!AXi+K"iQd#`[J2E1dUr-,J8Cm+L2!HPke!ENBX,-+,,%Bc
r-D+BY0R`TA1LR1b`Lad8P2&J#BS+'@E[Dc'0c$FNPK[CSkUj6&SmMbkHL%18E,8
A14,`eTD#lIGMI0#D2R,$r2YeKHf5LTj,PdYpa%9j!KrRCVXr&YQH5BF'HYA)-Kl
3@,9BA%jUeT+Z&'528U&4f%bD&#06$P'lYT%Z&KJ$i3TkZGTVcqrTi)@@QRJiGAm
ZP%"8%V&IXcSRZpMe86c#YhYV5PZq$PVqhBTpkpME+1ehID'@6PVk%maT)-RJhrM
MbVG8l,D5baZdd&5cd$@8Gr#H9P5i5ic#Y"A%GlS&ZDF#GTd4dThihH$YZ$,)0qj
3Gfha1!BkQbAF-P19Q(59Jj8*`Y5GHN@XB+eb%fViaHf1UTPVb(hV%,,r*@C*Km,
Y5HhbTjE29!RI(*)iHR`L0$TJ9m,T0D6"b,V$-ZT29SVZF[-ZFPkI-a)IMRY15FS
k,`bUda*LYR9i9m,3Ca,BACMG28J,lAeF-6KF23`[#`F1JM%I#e$iGef!)LlA("d
!TpNI$'-Xj8"GS4"HVLBhX-dKrrB8f1iS+L*@S8Xj*jpi$`)G"JC3`YRfbU-I,CL
%AfBRV4D(r6["m&jb$#fbZ@#NJfI+f8$lf`,9h*hqIq9Q)*e!d589[VZ1IKkG!r2
HhHf@E9,K8qYEI&NlXL8)CRL-JZdqMClf8mG5kR*CF*!!k13IRjN[e'IY"(P6BAY
N"rA-@'c-@[hcf[,ICjDdCe4`hj8"MZ`KR4l!k6Vm6L'RJ-ah*&jGDV2rS9I`#h+
!IIN5C*m8#9S,YNLGG"jC!ZeVRF!'bUFjhm[aM1dK6Xa#Z@2Ub5$2QrPj*pd'hTL
G2c6+VLr8fr#YJlbPAA$NB'$Z8$(*&T!!XAcq@[GKJ4280bLbiA`4U%Z`NhImMac
`HAY%rkmq$$0%`qRCU2D6TJam1iTj9h&!c8p)VIahR&%XFldDU)1r2CNPd[ZhePR
)rcX1f!ZGkGDqHL6[a5'(bk#-rk5K2haTDHQKP0EANKI&8-9d+#d[LHTXb20FqcE
mG`&"'qVb630Mph9DQpIK#d#(Dm9Vm*hFGpdR18)6NEVKdlepN[DcX1`afTlUA9e
M+46S*-)bd5-#h83j`XpV590j5D)A`IjdDY[MN6d2hIVClS3D"qb3!%IRh$%VT,p
J[eLA6G"+fE'CT0hRCUYM)`c6KTrb`XQ&b)@3!,#&C-c@a'RFC8rqlrJ0LUr[6X"
*aNlTi"0E$%R&9I(2bqlPS!S[6V-KETK%'1eFd3!BL*0akeEKjAmkFPD,-[X*1Kb
J$jJjeLMbC3DfKb)!V($af+&DK5M64",Nb0UTM,$IKH9XF1p,$B1dR4G`dK"e)9%
[BbMG$Z6%2!VE)$`L8d)Xk+@H5$*XeIGX%',&&"cp9@BdCEa69QQcUc$YpZ2Rh2e
eDE`!#kP6P1eqQ494b*JLK&FF0G),lqQ0BG$mFZp3HmM1r%5@4JQd&PZ9UjR$Uq5
%bDA5lTh`+N`YHVD6ArB8k0k!d&l4e-9Km'AR@lJ1V48TbfS4ii0VGKicPa*p#&@
'a6L4ZM8e*NplSF#V)KH*kX4*)qpl(bGBS#h[bEU,pDATr4hQ8T!!`2GhC9K0FD)
Q[NN!9)II4*LkfDM(6!Z*Q$)5(+Z2''1X@UAU14a`*Y%&U6[SU5%&`CeDL-d68IU
ibU'ZZfhX-Q"bC[',3ji8XT[iHY+!Q-R1l`"mqGGe6GPY)Cq`d$%ST@TRA#,Q+`G
PX@*0[KPB-3VFFiFjIIPBYIXT-(cc9JQqCUGS3@FI"e2qmQ@SQXHLL6(6@GAUQTq
1#X6Vq3C+!6L)9+&rp`fdRq'm[@0PhE2@N!$&9XADr"K8B3JY1Z$(F@V%a)%FVAe
i#r(EcmR0FF8--'aCY$EIPrG!l-Mr,*fr6K2XeB(&"ppRUdFSRY)VlL*!+`"8"IH
m1XSUmSriZa-P'K+-(SQL%@!G92Z*1aBK9j,'%4Ya3&FC#EjMU*f44kjN''&f$3e
Z'lHQ4c@DmGT%Gc`IQQq8-14LY!)VNMrDX*Ur9DZpaDId)Uc%@2l2",#D8!JV*VN
@6b"Ck(kaSL0qCBCFip$I5Z3FY(5(dNP)MmD'Ua)3F3Y-F(,L9RE,`e[#QQYQeC[
mbcDSH4(kcHi1P[#&MqPLlhFi6UHNZh9bHEJHTJihi!K6pS+qi!ec*,G((DMT4ML
%KXEcpi+HP'D$(,2Yq-VhY"@+h((`,P&RPrfAcN*B3),IbAiCU5r+q,FDlTP6fIq
$%5*[K*VfREFS[iVSbU+q"K[#9E+VhpKBbYj)Q@r,@2&9!d,YV"LUP&EcF1H&ra'
KTS526CPPq[%`eCD$+&VIK8kXYjIdC+0bTah8TZe4'126(*+K0#p2[5IVF#0kMB[
PeN9)Tmh@V"aA,iPV,cUF9`kqr"T`MFL-ATN@4&Sh)'1EY,!pYb8N1Ef["hJcb(B
B5&f$HQrj&dh(p2(bhXXhf5S4qMJI)4K)rjYbIU!r0*9@'dDUNdFb-1-mH@B0rVk
iLT*B3'j3#Pc'cpCK&,H#f30JhBqBkKl4lBBP*K5(0eR@$-rQ"*i8l!I"-!J(I!Z
@IFcXSD%J`A38fE4Be24[(i$m'(mL4%j3K42r2c%fURS,,ZZ"bkS2Bh(KrdDfmkc
,QQG##(+8f6361F"5)a`1BqRK[@ZTVQSZd)N&XFmk&`*%'#lrUSJ9Dlk$RmDT(f@
%*rkKD[[CN4`bp)M0[RES+p`5cVpf,qAh#VIrJ!*XUfbfmQ4$3%I4R$cT0Y)N8-[
"cd'A!b'&cVMD%'C@"U@!+Fcr5(6p&mX8M2LimMCUl(L(@Aa3aM-K4`FTQ46aX'-
'l6&AL1m!Gj*,rGYi-T,D1Sm6iVH!)6A%'LFUqQ-4"i$a$e5*MSjMCH%A4kl$JCe
h)[pVE2%m'CIa`T9V`4!)#,Ldl8YT0bP%'Fj14JG8LV5kA*9SQj'E&N!4+IPHpV9
UI*QAq6aFUiM`XpiT08d!N!!,X#U1%P629"c0VVRL'-(r2%ZZ1Y$dihC8qLXmBiE
i)8@TYTE[c6I$LcJea$-qiF(Q6`*[BdFkPl'15k5!&LHE66L(@#%(qb5CAEi%SS!
Pp(J%MEI0lIKk&Hale*dVm#V%I+8hk3J3Ti5kTZCleN-qVf,3bmm(ca%P4q)ii`[
,AL@Nfd')FDd1TG[XML3)@HA+ZV[$*CHdbNc$I3(%P'J6ERa4VL'LB6ADD5IVMkR
%&CSFBjBGRIajRMhDQ*-dNeS8mjT!dpCp-9VaBSje3GR%!MID(59hrd!a4+dLk30
GlPACTMN@YXARe-B@DS@Zk-ceJ!9mC9pL'22[jZSLqR1BUb`jDS(KGd9Jr[iej&#
3!+``j[ZbpmGkI-kL'dP[C5Re,)0e'bJG0#A1jLh98`K18*[YV4LpQES10m4LhjZ
+`-XTr%8fY[aDE`+*`fMadE*R4qF'FN)N"$'AY)-KBG@dRUNdS9Vbd&qSF)G3'Xk
c'l3Z$VT18NTaYSAp+Bkh&(3bX5qc-SaEH+VY+HD[29#P'p"1iYN!Kpf$'R)U+VU
LY@@(-9Gr5B1CPk,"N!$dmCm6Ua3[m3&VK@%jZl6'G'U[QJPTm5"#QQPP(#FjZ,L
k'j!!3$CUIQPFN!#R3jBGAEk0(&MH&h(GUd-%jJJd!!0hV+'p,`(-hZ(1Udi![J%
kNpNl+Q9%kD1VB1BX"[+JP&CYr0I2ZF2,VL'![5Y'b&bbE"UJe#E%k+qM"r9$p$3
S+QqPeE`iZ+VMIHDUcKG`4r!%X5$*B4!0ZU&pdMe[V,AN%KC%5I@NZEfbY+j8f'f
-l*VDpCYkmJ!`iVHA9d-T%hC`iJMBm'+(T1icQ*X'MTFU0(VB*ARYIpqr%RH0T[N
K4Li5lcL*J!h0AIC9'k90M`[&5A9E5I$f')Mm-c)0[e!HpNGp!IE8J6X6J83!&TR
d$488A0(QepF(iCQ3!2AYT9qGT5(PVKS+R9c,!B!kR&4'%mpVmK)mbpQ6aZF3HV[
"0$Cq3iIbc%Ul15ch`CPhU+@RNML5Z%jmGPp#Tfh61&5&*R([XLj*keR!`4bZ+(F
GK`!ck9+5U&R1XcaddV2%jUk[[Xa3BLF&%FRV*hKP,$i0AMi%c%5MTSP2$!SQaFM
cfV''Ze4fhaRCjqICPKP$cQfdlrR$L+qEhcL9eYZk`Fi+E*E`M*VIS@#0GCDc2E3
a!1P@QSXY,5(Cma3Q#C@YeMN-M0lZ$1Im1I#i-4b04V*Pf@E+'1iqN!!4@Y"Aj-J
QFem#elLa)&Tm1B#8ZIUf9Cr#3Z30ellIF',i(1Q[lHifTQMHMhKb2r!qp2b+#&,
0CaKZka6Vh,bF))8G"PcMU)kfG%pYGI*#TjHek#q+*I#`r3[GQ[0VS2BP4f)f*4Y
jVDG4I@Z2&!6aLdYUCZXqBRL3!"MJ+NUK&BM6K#*BqhK,@DHf"S`cpPP414aB4%K
dAP5NkF0Y&q@8X0kpUI!!AX&ShRBk98U$PQ[@ITlIX,FM0Mbp9-0*LR1i,05"D,V
VrXrEE1P&"@QQ%8BNqIhIf05m'I%Q5&6$5BSRZ#Z"B4G9Ub[p-$'LVbb`I%@qCXG
i2h&p68G%-*iHE'p5%CKA"kX,!dFlPYCf,1-3lUSdSUd!G(k`URB9'GA1qf1%Vk$
JP@$%5PV`3@)V&DpPme*CG"GmHG@,6UFrG'5PhmVmi4`LC0CX9"RKiJ%e!8NFY#E
DA0ENFcl5Y2&23KK'(6*Vm)XGI$9pZ$CQGXKJ4QM)Q2821c8a-4,kd+jXGL)eJmL
'M0!1hL8'lN,AjN-!r$a5q,2UTB,XGcXFj"XqZpVpE)0pVC+#)m(B9'+P"KaBdb,
mjA)bVAR[*IT+5(%9Lbk,B8RClU6*N3%C9,aB81r%Dj`B@(8jE()PcD$VLrT*i"f
QVrJ-S,-'T,V*L`!!'*,08DkcYfYBHmPb&!paRhr9SM16X@(X`&@8548$Hl4GXRq
5MC!!b4Lj8+EFLbIk([V[im'h(&Kl10$&-HqiLNqerBZ%T!aiKHICPrHk@5QT9A0
+q``2kC9dR`TEBMk"JhTaX65"Cd!NNU$K#JK4EQpGAJ)KF,5$0b[98GC9I('&RZB
8"X$5hR9YGM[-4XYZHedK23"`3p"[*pUM6H"`bNTD"!f4&cL(M"mPSTPJ8`5-kPB
E$dfPac3,HPE$U`fqH'cVCE@'ASK4+KTf+Fhk#N(SiG2)i0UI1`23Z@AScLJHb#-
dqbDlHFMTrU@R9DqqrjefYqK5-hlUJI$pLEJZ$r2%bM#N*K(0p'6cAEBq-pG+9K*
Rk&3'GNTHF!-$M*&3h@JR+Hha&8#9"NkchBhIqZ6LAS,5%TL[0#ARG9*i%pA(HNi
D)U3%4ak9GZRB8l"!bh2k`PemIU8CJ`R!DVhDN4!Z`-$3CJA"Al(Hf%rIA$TZcDE
2-#KjQVB6X`8dFk834P9j'0e[21h1SD0Kbb0*NkfB-&[`!,kI1*(a69,hJJ2RpB"
SJkq@Y,I0,GGUA+$mrS%IrJ!`bMI4[H"'-XKc)XG)Zq$@TVM9,ED'L4$f@G[LMYV
)LqrjRePI'X#8%"Gl-QTIIh3kR$kljJA4J`$ahR))aNQ6afB23bhkXMHJ8)CGaij
T6#rM[@1fKXP)U!d9reaqH,d9")mKi6c#QkXpprIiea-#FDEAbU%3RCH)P2BmAA+
iM+HTD)#YeDC&r55MMI0ra5&3'MfV*Il1e-U(9"@!3GU4(XP#!c3r0faT+jk+8`p
3KM)d,E*99$+Sh[9XYf`q4PjjT+H9T,UbBB-bp8Tq5@r5UpbmIPaB0-Sr)lq%2+"
pCQqAU)r$5i3VUi%IbL(3'1lU6kDST!VCV$$1J3p"MhFp@Vcm9&8Fp+hr1GY2Q[k
ULfTJ`ak$9qVVT*62U*mjiJ4'D9FSiFl3L8*8"U"hUZ)l"!#!fqh!H0#4@N@H,HN
lZR+H3iriCQ#Lf+B"@$YIpj`5cfRaF6A8XqHfaKcYjbD$H'Jm5$dMCP%j*Q@&5MN
)a8jEPEKM)H12pZ4HaP,M@`BpD(,r2,@%'`LGkZ-9)ClF#-Y$951m,V+Z'R$BGIe
S18+k(ZjHB3HHRL$JjZ8'PF%5(I@9Z#&KlCQ&d2PcP"jHfE&R0XG9ef-T$@KG@mK
21q%PIPie(i[Akh'VVa-5pDXCRN"@leI[qdEdE4PPE&%AVG0+m'9+D@4*M0&0bM-
Uib&AAIQHM%jaKJ1m-Caa'cf1S6kE-a6`F!)CYc")LM2+S+Kef&A!`b+kK*D[+H-
VmcbTFBZM((#-*K1FTkG-M*GB0V4&#K!*1-#edUKh5EV2%QhVLqkA&kd[[fDQ'Lq
bZSGA[H2-9V32-aehZ3*@[%UH+k0'Z2"BRTkjT3ZbGLeEeP"mU4&3HNTQ*FN[#Ch
CB-QpDSq90PkPfmN@#D2Z()912H4@r*,VjbJA3NSG&AkF5@X+"'e-H3,RMkL1E)C
2P1YdqRlqHIBajRh+l40r#+b&rC26$B&FMY4M2%d)RbAkKmR1P6Sl[EY1JeVY10Y
mrDP1k0Z5!)dVHhljZh,h9Q[,)`@lL@QFQqJm*2q4K@B@!C@8f2FN#3Cq1C!!I",
D%9(0BSGf%(i3%PhkG3#UE#-+XRFdaj'$iUJK-eXHVa$S[kApU5X51S+%%p[b(b&
Ub5@NPEPp'AAR[CB4kKJTa$0K8mA%GfJbAYTAkh)PY#e1K-P56ZbU`iadP!PRNZh
qZT+h,0cY#CR0$pDF)r`ZabXQc9ZcP!Li!2D*'*eFe`+2M+!'BVbU@kerZc!EaGG
1,3EP'&FL!L8Y%1TNjR-VLS#%BC3VZ"qNR3UBCiFRJ6,a0j-3TSG64)+pkFZjlCJ
`Hj!!&hUb%'bbc3l4#fmK,H60V912BS33rF"G"-JlQTbZIUel#rYPl`-P$""8#1f
))66lX6j$AK-H*[TmUd!@eqI*`8&#bX8)X2q-*+%2rJL##UQ5&NYQ,2NL%bQ`Rdc
c8bPVpDi20PZJKEbk&a,0cR%'*ICJ(,8+9JGZRE'C*1R$([pqeZ,kf0#b5F#V"-,
3Kb9qj2)R,e0k8*4$R)ZL2#AE1dY55K[!H4XFpPGi$V8HTZHUm4`-lkJT&q(N1p(
Yh("`Q+Za[SV4[5IP")hp4N'K`ME9hab5Zbp'*ikXP52FX)VHZdT1mX6E)@U[Q,I
A603QFq!&ME2d&5J,ASQ529b,8RHET"A",bZ)58"3C3IE*mM#[63eL0lpp)JPEdj
QT$q296eAm&r+C1!l&4&I83)'kl2hCr!KKZNT30(p1CX$TI,,DR'P2HB@+-IZrEX
PS!cIEiZr+6kFK!Af'DlQY2JIfGS@&kb9,p-YpLLcEcPkf1`Riq#!YUc,'5R96l*
I-2!Jka4"CDQY'mX#aJL`a'p"@2MSCILhH%b0D3I-SBT*eb8a9Q6cmm51)5KZEHM
'2a(FDURIh9hHXrreAb[`LpcpKrdXaXJMTZ[M#-,`d-jQrFN2%FDH#&CqdH-66'(
D*mfQ@Xd!%%ZL1EP+9MD0,Y@3!1&d#4rM[T6KB5DT$K,P5G"cf%$R(bDAfC)`'Fp
4DI3q2"rNqI'N)AdFjmRj,RM(i'XD2!kpbU`hqfJ(6B$qeQLEM+bC-'`")*@U,kP
dSmUp@)@Db4FSQ5)hbljNPU93A#I0F&%YpaT(bM0!2jN-`UR-THHhR3rL8(04S8A
jeNXiVpZqLUAX-@aYF5A5`GG2fp2XAAP`5+p`N50`Iel1A1H6F))rkf5YAQdhjbD
()[$M(dA429eeMU&rRALY'f@JL*he+iPdq9qBJl(Vlr`D3j2YY9%Fm%j0fc09bb4
6U"j5i*BS[KY1djGbCE8I3$8UV%23m0-`JPr2(mfLr(ddPP"N3Y*Dp%,Zc$reC+&
k(C!!F$G-c@Q("3'+BX[XVkZ68V$SG5CFVJh6"%,2ekekhVPVdIcbRAJ[`jBmkJX
b#h`6TTp)8E,l@T(5H%+ql"c1ARSD"FRKm,Yk"-G[+)2ADid[YVb&N!!G1hX[eX)
b-P3Ec&Mm4#dIG+"[L6dr@d(Tm4!,)#(m4Z'8imT(1iQUeXP8&K,+JpPNi4pU(Pe
00fhBjdN@N!#C$NUfcUjGQMTY&DV3*!AZ0KqEP45GPUk!ZL)2e+H@FU1j,[G8#3i
I6*(K`!RHhp@XS8XV2%++fCB50E1ecic&,$IfjjP-I@I1*%TS)8pN1!r1RQd21P#
eA!+a'!ki`(rK&Mp)%Z-BRfBh6JaIAKPE*XlFhY`NRG@HGKfeE4U0$(D(kK!!U!3
!4!$1F'EQFSH1RBdATPi%Ai9G(([fA3H*ZEN5E#Nh)N%qA"bMr51$CTl,G3U4+4T
QhIJE&!6EbS#Jl[+ZG,kkRMMj["J((rIi18Q6U6Ia*Q(BCPa6a%N1[aUq84`MIq`
mf4U4-49M!VH,$bbc*BpabXFq*eQqQX(+UYHQS6r"F0-4))[%$hmB9dMVDYH$iqf
fp[K"`4iPaBIUCN4C&%e[2i@a1bV&&*%hQbK3+[iBPm0Nm,VE,RHR'!dqK,DTcp#
pIZK8#`Y,S33SZm01`r%6PR08QR!0R(33f(0@#jfJbCb4Cdrb!mKT(Cq!QH[@KG'
rdV&8PCkQp$GTGmNGM2Djc6NMTVQ6DQQHL&(+18'F9ahBUYre"U`*AC1N6ArF0)c
e#fX`DhB-S0djfU3Dm6'l4YPK[0rQ#N%kM@+&33A(eN`,dq,Y)UVpdNb9c!),'BS
,Xqiebd)ZD0%5PCbT[N(ac@0a0`de*+dAlqSC&*H)G6MAZ1D'h)lKL"F+pYq9mbf
,KVebJN!)'XM5D-lP0j0ZP#$3h+`3DrUF%Ga*q0%Qi%'3!+c-c2'5CUH4eM5$XcI
%8Zm9H)plDGBKrk#e2Ql5@(6-[Y1MU#c!kQGkC"F+X$CCfL"V@H'k1qGS3[F0Eiq
L#F'YB2!2l%e*b0K1id+mG[9c!-iK@)6C(2$,SLH)cJcrrMq(cYBY8rN#59@QTe5
JhR*K2YH-Yd%9*2kM2H(&q($0S1[4IAVK#9R*,kYehJepEpr"rMi"%Kk0DYb#P(Z
TDSBmqkdGABVjG#$b1rVKeG9L$N*SYVIPl)F5BjQ4rH29RG&ma8l+SX+XB++!R"q
bQ5[*QRr4ZXD8d5N&c62TM!AkiE(45%-5ba%lfNC'(rG[qJC)%!GF'Z0jLSMQl("
9dmJ4X3(mmI%iQ-Am`Xdj2853!15%-MiedUI!UTceL6$hU2"J+qZrc19"`20"rJa
!*#F05&@+092K`Kq"KCbNJ,Fp8'II92qVDS3VJU$NAq%E(3Q5Y45ZV'iTYf69d58
m(rU&(4`$L@)2+S`bC#-#"[lcZLRJlb4&Ch%N8V!j-a$IDdpB,qd0Qc%Sq*Zh3PG
pNYAKdL8D1YL'q54K)bf#PD3R'r@SPHp3V35"B2aafLiZYaVJF3h3dI"XJhI'"KU
TFIl1hKk`06Cjk"hZ`bQME*RXrF6H)$jbm+f(P,J4(`,AQ0!ea[GX%5GFEhR*8l)
"*(9AeFMC(mBZ[*33-V+dMMiRJ'mh#rT'&T[*"YfHHUQEHrX40a*`#H%6Ei9JpS`
8b65,rRZh))ZS`K@a1(%jI($H`mQHfEHDRJlK+HYBNidl"p3444GDG,ibl[)LJFB
-AL3@j%QmSmD)TdTlh1'[6Dc)fJML,U*2A5`C*#NlcS5XkC(1EGNPaUBL-Z@B(5S
08M[4pkD$[m-VI`YLpH6VE-c2L-i9N`!DCE%-'2Rdk$f,@cQ(25ZpbB'Mr!EY(UC
EbLFqL2[ldX5Bc`DD&%m5P"4#!lYp4-k'VJ#pb+lR(+$b2jPii(CF)ZIST%6-1IL
5!C!!3Kr6j+iAC)h#bfK,5CIY3[[dNB"R'H(AL*3-'5`S`[f!l@q+GJ)f6NY,19m
+(V%U9AM!8)@D6IU4MG4U&qL41*IDN!$XiI3HT3iElE&'q%mQNhf+NrRid!-Y-T!
!LL$)UC+e`24[VB6XHr"Q4r&KhYa%PlG4S[k3!!Z4m@PJ"JA`Qj3$2E-P0[lCU$1
JQbL![JS08RMYlZFN6Fl#+Xf3!10h&Blf3!RjGhA8h$658PR(pkp1"a09klL[i+$
"KPm*m@*TNk+&qNi-`Fe9YY-jG+p559JQ)BN!SrE5T`8fc%b5hrC@HG,fqUG-+Le
&1SG#5JU01VcD602%i(bDjT8$*F3A,ZZ3!"MF"r5d-e"ip"68F#&B8Fp#LV)MZ-X
qCUIKmiFE`*GV#TBLISl,"GQ%5icXJb@J(+MbMC!!MFj'I1'BD)9D!A1VTDhl(D8
HM*XF4icE4`db'34SRGN!)aXNA-80k8hjKAp)p9I'IPqLkT%LiG(J4FE3`B8-[ba
'YC!!+k'&#%B`)kkYjaiC'2!k6R-11d[$4cH'1ZP-QGH2R"Q`("))'-9E(aaH8pH
[i4RV&0P3+bY`TrY*[38[[e8eA#BP%Q$kF92fM!bI*[bQ5)N$Trc1`LZ2aZl99Ta
+4$)3U)`a#BR4mfrK+4UGrM3[qIAGEq5*Tf4DF+Biidl9(%G1I3fi$GTZ'#pjTF8
!Y!1Ec1-BZ8ENUJm-r+ZMB,XZ+ieV9lYqHX65ePGQG'&d3[&[*eb8)mTi1ULQqi@
B&Se+A1$C"`(FbB`B3a6)KUip49+[[V05Rh)pcia+eUG8b%E'VR%Tm+e`6K&b`mj
"(VJE2p9!kPBE0$3L&+c)'MiIeb"Cfkp-Sbh@*fEd4HMj2iebM#R!ASAHeUR3eL1
%GXJEcG#rJqpQB[RMVT4A1NIBpE*`$+qADllq@"KZ@50!PDHS1eSqC@*$5EKYHNV
+jKYAjNU%Z+8afTqc&0j2",NAM[C9`3EPM#9mH6@M5F0`"!T"h6rj6$MSLL9mJH9
0Gi@Qe,%[`8AG)AA"2p@1ZAbMqrRD#aqP6Up(j3"QL4F#V130CX5meKA@"5MqhMA
)A`%YJfeUNS2J*XcSGYQH"!,rB#JGmq2,KqFh[lD[RdAM*ilIKHZbRl&[b9LD9NQ
X[6adK`*JP9@E-r%eqNPM$'-EBZ[JADQ'M*FCl&cNk5rRAZIHU&k5C5JH-@,ViVJ
Q8rQ[k#!'!4JYQA!CVdlSJq[H5RTCjKh+4rB5MkcqcKh,&GIFXcbHk8bb8NS8B"r
qG$,qMNQJS52FQS(jM&69L(IC5"!#QlUDJ80)pHh'ZIYHAi9$1f"FG4Ue8*ad,I1
%HG0*GM)VG+V3iV,-YDj$&MSf2$AJ4SS-kAEFh1a(ZGUIe159&e3iN!!&a9@Udkc
edcMY'q,+Ci9L%l2iQDA0@c0cS'B@GQIGra@Kk2Y"8jrMT[RAr'DNcQ%N,6i5bi4
62%(YIa%&B%+jDVkI*Fa",fF6JL)"$d8@Jl6fA[(!F+1$V[BY)8G!CXqSP2I8LJB
BfbNDYUX!qS'+dl8m%pS+4XSUmQUdl5kG0Bi@cX1RcI$4dQRf,X8BbLMN0lIDUV!
b[kDSh@F#CC(4PTf[IN3-E6(ZkDQJ#9NbVaERHYa4VirqD,8L0)K!2Z[-$aqY#J9
Di6UG2-AjV&,NBJ$EJm,4+JHFKFJk@I+84qbp`ApNNilLP-',#QcJ9aR,4l(2hqf
2jcZM5%'0ZPh(D"r*`LSah4B2cZ9P*N2&S%@SSULSU,JZI'Q99i%)$FmkrV#B8F+
fB2lk5L5&DD"*MA'c%l$HYF)eTk%hE-,$m3"ckSa)+*eKmepU'm4fb#JFf585jrJ
lRSU0Ll(jT3I95f8r'`p"L%Im(GVrhq&K`eHfVDdDL@H%&hEKS,ihE+c%E'6U'a%
[Q"BS(qSbN5eRIbjaZ5H-`-RdM!c@+jV6BaKZq&DHAB2U,QmUNB,EBBF-$2V2LZB
FFF93`#JGFqK1BIk4#R(9P'H1)X-0Y3Eb%Ke)[1je'HdCqak[U(4%`eIRR'%Z8PK
rE8UF-5pRELALhV&DQCKla[Nq5KN%BpUpFr9RJckp30'J5(%JMaIH421[b[m%Bm6
+YlSrpUmJ+*AH22RS%baiYIapVAZmVIC8,VDN+'r#+H5p,K$4U+h3!K,RB'`eLH5
8LPG1K%6(BFVP8VGC"hp0Uaa#T[bi,-%SV5K-NN%+l&MY14iRHUhHYX49,['I6Qp
U,-(jJ["Df40QVpD#4F$kp4ZCHkl99MG$jpM6+2q03V$e)3B0%H2H#6FSJ1)2F@h
9jq,Xp61AdP5`d01LEk4'6G#@PZiSfTYYA&QcI4)cJ1-P"'$5[E!@IUDXN4QX-R2
NHQY2jUar,#Kl,8hGU-VH82adk459hkPV)L*DR5H,&8YhiU8NZ4$&jfH[PAqe%(F
,"iH$*FAEa"jB1`fd3BG$96+e'lLef&c&Xa&K*C!!alpEL"$4M&9#r0k,TX0d`k@
eY0@TSqApEqB"BFT)"S$La2X1NA0Af#Vm*h56lBpir6p%qi"h0Q%3*Xl1TDc(Bh0
Kr@"aEHrRP`6FJdQ4f-`pYc!F5T,hpcL4j42Nl9P8e`4%+""Di9Ylq04PV2L(m2K
d`eD,`&`VS"CP+mhr@d22a#Pf5-%BS#JpZk4KE*-STU!M91$BK4I()(cH++rUAS8
RC,,ii8kS3dI#CiIVaG0q169G,kf)jq8'NS*3%JrQHZF4ED#q2SG0Zf)hN!$LS,N
Ua,DpC3D,Cb'&+J#Ma`"5lmFIjm1&YppaeP1[-k*+jDrrp4&Z'a)k"X3@imp"if,
plabD+4APlU"qAAr*dU%6ckBHrj-UG%XJ2JmK&hT%HjlG3E65-&qQE4)j(cmj$,#
J5jN6+0labhK[)2rr3#J*25I`MLQCSUd@&0rYT-5$&IQ[4Vk!-rb!fk"B)fD*[3i
HpCiqC5!M3M)3r6QYEX!fcf6kBF6RML&E`-ULUZGkk+L&0T-aIP3*6Ndjm#2NAj*
3%KYr@+eDd*+aSACpGE+%rcB`bC(1lRXT(ap84S&H$Z%SJTSF,Nm'(akjmjmPSm9
Z[1ejJfIrX2hr%6'cZqm`9Y4S![kDl6pF@0i1p+VYp-,j1Y&rPm1)k4HNdQJLF8a
$Xd`T')AidPjaHfSr[SaB'aC!3"@AG'())L8Ff3UJ3-XJr*RbqDL&@MYJUh`feL6
E0kd4DMP%qIRArJjc[m(F&mijC&'$mN(ZR(hf913*!(X20kXJ[5@Jr6L@pQrQ5D(
r9eEiVB@l03Q&`I@#6r*+qi#M5lb@$Ii"G-A`1VB0,rr4EkSr9iDrp*TpHRBFe(G
hq`DmD2[,V2)S$NACel950*2`YY%QGj2)9m5j,d(FK%)f6[k4#A`Q8"rQSl"iPIA
$$A#F0pP+-+G&Ij!!42iJHURe`0SJRIpkGNF`aBj[ZU[d$ciFij3Bbah#"P[hEmf
"q4Y&pdRMD,iq8'KYG668G(S'h9,bpiE"Cj8$rQ@Tqq(r-0IM,R&aJKmBT2*Qfa&
TSFEX`DkkE,1PUXN56J0@SCYL`N(Q5[6UcBB(GcB-X+IS+kpY09aS9Fpq+HN29G6
'pEkJXX8Mk#'69!Mr"FXiUhAm&k$#`K$i64jiQYB!G*9'2he")Ma85h,H#jFAljG
i3Z(PAKKY9-4+Y!b&(2*E(FM`MHYFEFYKNeNC5j'*ffB6a@ldK6#qGI2f0VHdDA&
2H#(SIIB$ZG)2MM4iQ9%Pjh,`Dr*QB#rGfbS,3X2QjkiG*G184RpiS*!!!13IB$I
$**+X8,24YKX0pT@)EQ3+Jqj6d8D5pbALY@+LM1L4QHe`K2ek&4me@c8#D)q40j`
hXZPIX2bUKJ8AKPGQ8Aqp!%E"%Q8IX9bQ,M#"[(9EI8QR"qX8GBB,deDK0h[(Q0A
'baDL'fS0,f`3f4*LdV`+f@'SQS')94k3!,j2XkER6qm63)0Rca-@@)4LJ+`MH1Y
*09d#4UPL'cdPNRcJBDk8lFijUkeP[Dj8J$aVqmSj0'Ik429ZaB@STf2)Q6+clDB
hcLqX3)B$r&JMjjAAGMjXH5EeQTaT6+(kLadY4L`hAeh6peja``EDj3,`ijrAi"I
'Seq1r2Gad[*D$S%PDhj1m5QY0*PFRBG"`#R001rUVDN5qbE-jG"mR,6-,paJA!N
d3BGNQFXp3T&39ac*k[H*km1*p1ZC!8G1K+dLjh2M@)RGS6YH$,kASME(YFZHRA$
+[k`0mVpX08IMZl!Nmf2eal'&HHGdNR8YKRhfYS6'cXpYSdJ&6hYJaelU'626`(,
j5Z`9B5@[R*BJPFpU@-3j4V)+[G26%c$Hl$YRYdBiQ0irLYb&mlPqlh,rr"M+M`b
PNB3TEVU@31eUc#5P@A348'6ch)85r3eB+U'k,"9XUi9EblD!"Q#BZEqrep6c",Q
jH@!G,S,Bmr'RiIA(c'pLcAD@#p1*0RA4`E9[$kdLZ-4riL2h6m1-Z5q'J2U(eCE
8rH)4LJD)2J@ADF$8M&#kD8Qi,%M@!$lMalf%-QU6SEe$b'djLVJG2VQF1HSPIe@
NjrV8h(qUHU1b,'A6rZT5LE4I6%A*jI[D8A+l5ee85(qN5!8Z0I#&BYB1108M4!2
ldq@HdhZpC$kcaE-Z-Xe(KE"&Xd)A(`+cFbVHrYqZlj!!SQHBmSjaN!!rQ0*K`-0
(&8Aj5ZcZ1,SbIY!M9C85Nc-UC)Sr-5(kV!cK5-h%bE-T@3VS$R%X0PLhiZmrA@E
"fDJ[&aMHKi*UBF)"%,6Df-E6a`i!5@``#EU5M4r*I)!%f3Q0mT6`DcljBMcZTD(
8,i44M@F@c2!B[kpD+Q5JQc4e&Sp#Rha9($e'+iAL*$l"0VkIqHYr-T,5@ZcCTZp
lNU@q#r"0&pmGJ8lZ"lliGUF&mFVGSYI)1`Uk5i,%dqVrql5DlYRDiCr*5@3XjQ5
L&K$D`5K9SVlib#G$2G!()C15EIYEPBEfTU3BT06*VU[qB,H`#a"+4-d1AATaDhV
$0HCNfCiCf362rMMKLYkkm`"-eM4aH0FI3m2JAkAMqp3+8rRScb,F5hJia'!kbc*
2Ml8q'N&3NE"@KKZ4IXGN"JM-kKmm3Xi9Yq59"Za-TLc,(3ccaaDAX'8'BRqUG,G
RZUIJ#N@i'9)Sf5lPMrI@0RjR'M%b@Zjb2DjqVAl#JP!--i(Ym[`XN!"*6IK**hL
T'0Ni31iX0&VLi$-6lKRTkCQcJ&jCShdd+12Uj1-DFLlI$K-%I9c@R%jRF3I8D3T
2BU6@@JE5eQ6F`e#dc0Cm9NaLiHcAMT)hB!4b'581LHEBV90MCf+%fBL4rbB(hB(
-i2CXSBLTPCZ1X@5hdTB(S,bD$IMh%rkCJl2Y3ZIRp6K9MY0Ge*!!%XC#6602KjS
lN!!l)kSp+h5"KSD+[1q*EH2JHhbe-QQGhUdKd)a6*(h1UQkaHiILZS#AZ*TkjB3
6M#6*FC+'63kr*dFkY!qaYklF@aeAB!`1j'PTUEr4[GNiJNKA08k`NeN+QT,er1%
UV)$QkDrV"1ab4rd'dl@+3c0#6iB-1')h*0S$hS483I$+43PM"FlapR`I-[LD9`6
"aq110aCRm@1fdM$hlYi!ZZ+60+"++PdNJkSPeq0J*Ai3'(r"f3'05J*AcP#I)-D
EIEdAXhA@-J9#k`q#f@5eH,li98R0[Ff!rK8B3R@qKkCPQaJS)B''XF*,(`-E)TQ
EDpP4FP!1i9i&fcZIA*0Lf)p6aTI5mIcR#N`FGf6[dRh0ac@aV$clL@hX!+l(4&&
-X,RZE1i4S+Af-"Ae6fbdF$a4JJd4l,ScQVC"3Y46h9M"A''ES5JifrlI2fb'QdD
Lp@c-M1)pDQ*1Ej`hE$rXG[MKJ%1@df&eB[#+jP(pS5XN&[JYIQ!0NIUbYD@p8HZ
KEE2AQK6*IDPcA"9[QQHRr8P2BB)GIH%R8Tk!H0j(arAS#Xq&a`#@'NlA)biA8M1
0j+`!1r44@[flY8aJkqQiUaj"liRT!8!iHA"hHHjh4SklmZ(YE95*CBVAr2TC0hp
d*GG,FY@%fC@&[$ZL68Q64DKSVJ45BmFEKXq8$dQZVip8G5if0alP9ZmD6XPb)hY
&IjElbFbL0laUh0MF$-UNm*ji0*DBmZ`XQpXeM%25#Rmp#Hfb9,r(3-JN31eQk4C
$X9X0CEUp1q4iQjT$E'PZ3CR0!I-aU%BUYA3m$4J2'RJbGVeaXV64#2pTNpq58@S
VS%Dc9,BB,H,!IimQ[,(5Q[5XTd"@QqQ)BUT%Bqe",aL@)%*M2rfL6rHTRP$jT00
kjLjABS!MT+G$J0p*L)Fd)dF9%S@5ibNq0mJ8XShJVqCNFVSV(CN!$5JNKMPIf%J
lR#LI%A`b&VfN11qMReN69XkH'HlHFaFGL9iHL@lRfY3RXbLb[XIBkD9dMmeKV9A
e[AUf$*BB$FS,MG1BRjFS-rIlQDTlkF2*XSNmZMY)'`e1V*hKSldjbAimU1pMK(@
crk0M&EKqra'@i%GAbL-J'j1T2CeadM"R9JfNd2HGLYXc*i"r1@@F-NYAfV'8N!$
5(,(aDPX$4,m@rIVLblaUD&G&Yi5`I(E51l[C5+TS+56(f*P2#mGiXj8PfQq)M[)
@P)(XJ!#[2`#&GLJ9SVmkKePaE-PX(kjQ,"h$1FL5TLIh`B$q+BCZ3C1H"SEXIG-
1!3Rd5%GHK*,(Ff%QI%SZlBX2$rji3-m$S"()6*!!Ka&8(%NB[kQf@TKi*-km4cd
k$+4dA&)`kpi#JjV#3FraKl$2EIe8pNA-X4F)#+[`X$10JR5'V34r+c1&m!Q8Ph5
k!*%c'jQf+9X6m`QE&hlJ6eH&e#%R)'V1d9Zemip%lXHI@3$*a5AQ)$$2eE1FXqR
i@"GG@R38He1JGr,JE*!!eh3N+0U!GD5(T062lhSM2QdLcpLriE+,P$ZXbG')PDD
VB%T&SZBaDSJ&Np%Tp@dka[b(+k4K41m(UiG00e2[3@8UQH'5KY9,*'e-AQab6Cc
m4Bq%4MqGU0mH66'@X[l,'8!T,CmThBX(r'Hh2IUJ,[JA*ekJBTYf80ND4`6N2%C
f)I+AZ%9#5rRBkF&m2EVb5DqA@CId2[Bdc`FCFfqE`fh&4H#HrrH-MjFbr0D!`4h
NKQbaH'JM,R*1$MfH4Z[[Q'Df&LT1"p)S,JaIU$1EXB@KF4li28*R`c$E6!HG`'A
9QacJHBV1E6c0cU[V2b2jN!#&#*VlIDp@ZH8kHDNL1+mUAr#paXKYZU&M$@Bd*Aq
4m400YhdRQ44Vr1S+L"bNr$h-6"L$qCL6m3GrN@%&qVMS,6!p-h$5JB[S4eZ2NYN
b()mjDJ[*m)0$6k$c[2++kGH#a[DV+c9K6AUdbqJMTC,2h&9c+ia"&#lIeF2b$@Q
S1jMkSmiXSch(5adSUkeil%I4L'00m9`@6-SA1#"6NHGKhTYI)K3limRiVml`RM0
243(JKqR+EmL3!'1eiAL%$5#Am6YI1,m9ra8QaGiEAaG3KN),UPB+eM63*ipG!`q
U`XLF21UJRVb'6'pGAXF1h'U%Mp4%%6Rc"bIejAlSGX#chUJmQX8MqRS%ZqVaGP-
QqRF%`3$AI)Ik3T(Y!pNd2C4fG"Tc)LcS5G%CVkA!dL-#H1FMG'ecpUiAHXhr0QT
IU93P5dc)l(lSmSJ[5KAFBZqN6cS-3!Aj2`Nf+VE+eZhZQT)0ipSD6H%`B@8@Yb%
[*DAj#S5!bCIM5rFc-1V9b@P@rf,VlNi*lA+lh#i3K[D'NM`3T3r0RamRRj%82(H
0q%NB"4BVr4Se(FFr"%rh2'8Nm!@(2DA"K3mjRJir#H(BlhJH'QE1BS9ERRj0a0!
iNm["P%DYZJTc#X'+N!!USdLfh0G[A1&)8C%RkDR#I(dMj3FpbP+pPp64UKBqYcN
kKJe2bmCpD!0VRe+!T%Na003qI['226`N9CE[rT8*a(b%Q)TBdT5![lP,[3*kZU+
bBNXaR!8$8"F$@%(r1$X01p4&Marm"BJ1SC@jc,h"T&b4-bai2H,YQccLGmZ(P$Z
AIIN**bfD@@hq*3Gmkj(RH!+5"3LlE0j49)5I!p&MHiBp6f)rINmeT,(a83JN0hq
EfFa$jh##BFZG9c59F9`C5kmpqK8@qiL`0P"GI1MTGaeC1!,*Z!)l(eMb2DHN9PZ
U&4BBBZ,qMFP1@S6I5V!b6feN"CVQ),qYYEQKAJid`1(h6cY"C$[)r6AqH,Rqc(%
TqXNi,c2'ik+)QKPIl,S@KZEY6G3A3Fk%HiH*b[2a[eQ0d&ik9c3pNAbKHbIBQ+0
[)BZPVA%jp&IdE)M%'&X3aYla+&0Nb2'0BPDRMEeZl`,lKfch3ZJQPKNL#2mD3(D
L![rBRU&PQAFM0'Zkr[J"'0r$pd'qH`BZ0eLL`R'DaZa(r@jbJ$drG3ET,G9hYQk
eE&JM(q6hFp`ScZjUN6YLHe!r%'CVM+)b-e+I#$JbTb1mQQ*&"VcF5hmfhGE)kZp
U*6Jpm5I+M9Q0!RST")dT-Grf%-a%0f#Sm+4AY!+EreISX#hV6QEad`A-LU$`N!!
lRYl)4('+$k$X2[C+!UR)"dd(5S(iH1d%H8e&er9$K&eTS4,X0PaifY9F,'i)(QA
q4*FLTcT*rJ5#h%-cE%RL3GV$h"cd1r@,%fIZaX-'3E#UV1!F&U-+rH8aid2((Q3
2AUhfhF&RTa#&qN0Rp1MqDFH3!"T+ZD4MrQ58Z&GpiL$mi,0q!Hh,Qmr@$FShfiY
lfef(Cq1a`2e*A&l"`B5R`1(RPeFkTG8`)@RVZHZY'mfITfEpQ@!6*3HH-b[Nd&R
56$P4SRECh*UIHQS--45#CGFqehG)5+BLeE'28biJ6,[6e)G)"Pb5,[RK)h9"UQ8
V95DVrA,4EhlF@&TE%4r*,rCYLlY&d2QG2LNT%*1fbGSm21lj&VXB)H5*&+UQPc8
ck(S#Q"(("bX5ei@K42!TSfMTJbicdB$2pEp!ec+NCk694DCdeBj2*SE4"QH$r@r
-fi'H6SHHbA-[Ur%9#iC2lS29TT+"83[iS9b6'aCI+@Ae#*qBj%C1Y,+XPLjTLcr
Lq*kH'5F+IX'3!'lV4PJESLaT!'-i39jdjiEL%!G8aRaN9*F0",hEhj!!LP9'BB@
Jf+rDlR,kNV"a"Z%%2!hEAdN3i4+R&Q#XBNQ#MkmY9kfR0rbkA4GMRD%i3,aM@NR
RMT2b2c)0l4[BRAbBK&,%$Z`E`64*Nhf,d'3#"$mR2%)+TFAI3H5"dF'c0im(N!#
6,'ZG+Z%MDU*9f9a0IBRcCQ24m[mfM-ZG@fCT&CRD2hCVHRCF9S@H'r96-,$KU0m
V3C8jG'Hm*,$--eqIE$IbmCYf*qH6a%a999Zr+XPfa,"Je@hkKqPY)kA38VGR,U,
R5pY0&!')BDE4*fThHNi,-!m[)8fIq`E,abJ4JZ+P5mpE)aR2cGEAlX5j'&%C-l5
QjfTY0qS`0k6[m(D'53XMqR5p14Mk"rjbPQG-9C)30miaG%Hpe8F4KP9#1'GQ6%!
A8$eM-pe*KC0D66I"rD1FPUEkbdlAbY)NiYBe2H(ch&&&$[e")1j"Tl(hd&FF!)b
SA2@P%`ZD2-`eC8T@ND*B"(kpSBD-GLZkN!!"2p`hk%diF*L@e9Q[J1UQ56mBk&1
T+ZU%*kb%*[4MH3im6lf9*#)@#Q!S[d6AC&q2%QF@NdqFLV%#P4p`++!-+QFD8'2
,H0T0aRI2,6)Tb@8f&(Z"m@,EKlX!N[8"FJ)kfVC(NAPZSj!!9UYd6$YrPL5f1Lc
C41S1Z"SemT[Q45dTJa10QS6iJK"qfr,)6iA)VX4*("GB5C6[D0l!%#5T*p!qR&Z
TRZM5%SkJe-iGK"R9(`dl3aGPBVY!$cN2,!-XmF&1`,(3-JJ5SYTQGRD4mRKiaDb
`8%IXAVar'6lbrTrSaRp#hpHVLEFl1P&1e2Cp1YK4!kQYEr+DHb5JY%qHm,"hAmM
'YXlZm[NSe+P,mBXM3%V,E'Bc))3p3$d@KlaHD&m#MT940`+`9N0IjqPK6rqQHHN
L,h`5[qAValQE)LH3!0aYqDpDd-J`*Rj&L-$(#5qU@Pi91T-HU(J@9*GfQ6`HcBE
bHB3&4d1##MBq(`H'1TX9Cj%i9#Z[TaHNL-++S&f&@ZT"L(`"4'+*V#ZL81Tp2F4
"6j0-$81XfUL`,[G*Q9Qb)UYHSR"NP'#p9RRl+&,1,2kKbQ"k-j!!0J5Uqcr`HVc
i5#ka4e&Hf&&8lBGdRa-Q,@0Bd6LD@3-`63a)LSPCFrh)Zf*X*J#ZeFAfmf&-ZaD
%IUr6`p6dfZP-M"&Y'kr-&&cRqI"I"G)k5&@LlM4Z+3NDpA-FcBQ1fak5(I2rA(M
rU#CLTHrLUmYXhE[kL@0c+3*,184IYj!!KcFQRhQXDRiLX5pC-TkEfdbAj)ETVIJ
"2kqB[6C-h$bhmJ"%GjVa9`MISkKC1U!eTGP6YAp)&ma2"4'9#kC!cfQFpXqbH#X
S#lHD+JaS1KV%1HBMq#pd-e'F'JS%((%Pq(Uie-E9Z33)bJjXXX1mc5AYYaSBVT2
cVHkq$Q5H0J1"JqS6%4L$J(hP$Np4%Zpbqp#[LXjPfhpS(lL"ck@E6*Xj0Sl@Ffq
DL8"))qK6QS0'DMSF*qY2b1cm#d+h2JEpE"dUMFRIVEVbSaP1!qN'QZ[E68)m*UZ
8-`NjT$ShNC3#D-9Sdd8ff9'"Q4A@1a5UXiFLf,a5p'r1jYaT5-Q0Jmhl@Bl$Ma1
PJ1)6kPPd@'+9il2LL6!Q"#(Q"-KJedB$"AZq1APMCMX0KR5G!,32ECJF%Bl6SIb
(MT[`#dd2bZ-CZTG2TF+KDV#QcAl@A5lT4,2ETBj811eVRcNF9Nkk3(cXh5`X-"Y
B953@#ei9D`YBj[[UDViam"mEc-Y3-eQMfhr!H#&#i+m@9Td31P@a%)IQCFlIaFb
p9'&a&,&pLjQ,-hpfbD5C[E'J1KY@RbI#FR5j&3)6'&9$KaL9H31el*qAaEcH0&k
cB,0b'LUT'1Fk8ABHV@dGP*HdaG9H'kQ"2qAi3V[+31KJqkYq,e`5-*j5FRelKBV
HV6`c$q,dAcYC*[kD@@R3P9apA(i*`M+0IJQVeN9RYNNcHYX9h-U(6br2Ir&HkQX
#X[V6$&5kp2U++-YICcdT,M44'+dalJFRSVPSB5")Jr35jLecQiYK(YZ(JT5fSDV
'!9iGJ8N!crKUiNLFbP4-JrBb`iFf5MQRCHij#IG3AY$d08+L[p+9H0L9Y1fYl!T
q*XT)6ZRDmdh+cK6Z'!FH#PBKJc(Bb"UJKl*`f+A'2kR1(JIBLkBE-ZpPVliI5%"
@@e0ZMY0MP+GKrlZaI2r5Dh1[bhU*i5AA1PTGrZ1`5Qa@j"P59@4994LVVc5GT*!
!+#1Hq$[hG(Y#F$bqM,[8H,U,FN(iRJDZF[4`cfB@(4"pcM6U6&2#cL'Hljkhfld
r5*hSmUHjbcP!IfDJ'XF2pHfQJ3RH)2FT,V!NaCb+F6D`'V6pN!$HQJ"TeI$rk9#
XD"Nj#GAeASireMf&a"Qd0lFkiI)[dj!!)S$1QE)p(*GmYaBe',A1JIB!e#AHH#0
TMmX[a(S69+S8ZlMVJLV5rhm3S-B1)UBh16K%!"[RFS[0,JJR5)h'h64mIa)Yq88
r240hLPh,"B!A@[b&61*mVDlVF(IL&6NE-B-b(li"rD[&N[I@QmUN)dp0#%e#5I1
Ii69HVfHdVTXkKX,'-Cpf$fm!d&ce#3,P6)Fe"[59-,`BDLiD6MT"%rAA*3l*ACU
l0J'q&`Uhi2CHpH(V`*kLfah18-P@r548XRC%0`#3!%HIaH-,9%'(VF*Qfh*14H-
q%%JMc1[KJKql#qm@SFEjZHJ[f`pC+e`+#!j"qF[@D()$@[8M'SRVZ9)Xq$*$PhV
qfYKS#,ABiEpX#"412rLpbTdh*K-8hCe+q(X*33IVf3R5HR9M6j1eY2qiMSUI$l[
f4J%(HJ&qlr@4prHFV4UcPI1h"51C&[SQ!E#qZ1DmiUYC`4,e"041K(KP%B%VA-,
a19kEr&m`)"ML-""01S*h@F%I1`-HNf`1'#3jAf#9ZiY$5[)1eG-N-SN1-p1Sj&a
%c0l@8M#AeY2Qm2[!6#q3!%dIFE6"SKNQppG&j5J*!rj$*KD"pLQV&r4)cVCc3DR
iX-%HNPja()0-D+%&`6)2h1"RfFHq+j!!0AiV&k)f#Xe*+'p514N"r"%9+JbQR"+
#4j*RL3+GNPLe)-"[YmHTdA5(pf9+,P43+AP9VMM`h@E#C9HrNBjE`aJN+2PSk'T
F2CjG-Qp%bKA2UfX-Jj!!-iHAQ+3Ep1)PIKVN2c)&-qk"#G$1,PI"qLDhhCR&&@G
!XA,pbe6iJJbZ0ZK(G[rF$&&CNfd,93cS5&0CECNCG21bpSb"#426ZlDH`f$M)YB
`D)DD-Rp&YiMR3eV*2QMa$TlhJefGdLh*!AUQ,Yf"qar6a$fNTmVIKiAVa#[+$PL
$'R3KCY"`q)%Kcar0ie5CiMdahK"#K$!iSrZ8Aia"lbGlSqfSUr"*m3la$LGJ4e[
lZ6DB&Qb'`0$lLc@dZXkXf3Sa5,pKYU!bR8Kjhc1e*Uc(H'Kh1)44kU+R'@U8pEG
&L"Q1c(LF'mVd5NIj`YTr+j6$3GkTr+"&N!"BR69Kk*Ymli&F`,[659LJqBF2%+m
,%,`a!!VD%r3,1A60k,,@k'5@baC28H85'a`BR&G#U%hQ3RqeD(#"ebqEJfB!*GN
MCR5M0Kj%m)eSrKLJHr`lJqUTE*pAVSPq'qXH3Gp(H6E9KY9Cq'AD2'M(YGV6C69
K4TIN2XUBSZSF'9Ui,*5L[l&&Xe5jbUDL*cHJ-fM!LDh,GS8rZ4mUiXGq(G4C)LK
2d5KpLbhEQ'VF%Yd61%JL*9,6Cka)SGhe0kd(@iQplQ#mTmk%MqjRd"[+2YE`cNA
DbfIRkebU+#hKjfSHGaJ)p!5Xa39HEG*dTf-+fjB6%!lMb$-bPhGj#Bd'ITC'b""
D-("Bc4VdcLi4jCiSF8%HaM@hbIae!#Hii,68rKF$Z*I@PEf5QqF*!l,28RZ*3ca
%Jir5(QS"%T!!llA&NK)mNJb[(rm1pN1+TmQ#("(TTE1+d+8qQq-E2GlbkqGa4F8
"aam9)@0dJfF-ACk1QqdDK1S0cE"QHZFaci$#"YQU*&JiQqT[LPS[90*F(cRhMmi
GQ[pGXrSF#SNk$qCk$l9h5IARQ)I++$ja)N%e4N%ffApbPa9#63l6jiSq55L)TiV
4&+ZINXI$E5JH1Ih+G21J3'5NarL!23mq9i2[$L+(SJN00NYPeeIXKk9dMQh-2[G
#2M'I@$3dKHNA&YI1mhQANYq)QaG'Kj,p6'aqNfefbd$Q4FmbmZLHJrV1TKM&p!Q
Q[ZBr6eSXH'TirA3A&X,Q4Je!VpLRrC!!*Y(CkJDjbRDdL2m8h+e)K1DeP3lXG55
qX@#Q%`-mVfj$e28#Fi6(brl-re"KfhI3jApmemLKe$cU4Plbm+)A-1#5F(LMe'f
,CG-LI%QaR5ir-"(RZF4,UD+,[Hq-bj&'DXE5CA6m+,[e!cVcrqUT2$(*r$CM82(
"`#T6[YIdA4m!ENJC6hGPXS1aHDZMP*MXhe0CYZF*F,NMKBU8cqUA6!6B1RNJf0J
aJrb9PXMSUD'VD3+M%U899N$EJE%R6NPD99-9E49rSDlUj4I[SJe)f#$M`1HP@j,
3M%mr!`R1!BNUqLf[mP5HrZY#00!1R9)P,dX*,pRYdQEXNYIaQ0Yd#CKhIqS(hq%
)a9a$G0mfd*Y%`P"a-r%U!BIM*q"463"([XNr,iHEIK9+%,%3SGVlPP@8i14)I1M
1I*fHNNS$4i[5PKQS$!c#Hr)pc(kRMc4[2'"Z6`j9eqdh&3SH4emICa9`P1C6V0*
qAYVqG`hr8-GD9T3Q&daKRb8fmTrNRS"JDi)[E6M)lq8&5iH8H-PKGYi$S[[D,`A
)YhUR%RmK")F#P-)iP&q&I,,1"%U%DR'MrlZA2YL0NI)%1dDAZNYTXLBrFIr)lC5
mLBe0pe,q`0+P#jMT1NU'U1!$4lI1,GEFVlX*)b*jl1e`%(TM,RkR1GYiJeEmjQp
Ki@U%K,6@,5VXV$RViFhFESDS"19ZA#Q9935)JKXJ0U*RkqN-D+XIpA3'qLXY&#C
[U%p,EH+m9N09H4UfTPD)C1`3mk,3d143!)3Fh-U64b6"*3Gl+jFR+Za8bAF59bB
B,e8LMJNURYS8FMB2r$aqrZ`%H-cef8A#-C'KkSJfr101Ijr([,CSC+(0NIfYaRZ
DNB!J[Dr"CpLrfJ1N8Ic(NMY3h$VfTYh4"@"[LV`Lbc(#'m+&K0C3Q[JBMZ(@kp3
cNaK"J9UJl"cX[+0NBXX&"V9-*aPkC`cPcalLN!!MSBdi9@e+QlKq'bGi(0pSX'N
S!JlPSclc*G2er-HrBG0V1h4b9+1#K(iYF+D@F[8"SidhDQ)!II2IU(IBVq@*91"
"ZUSfX@S&'hZYL(a[j1TeNH)R#laLBEB0"+`F*B[L[iZPiGA*8hYaI+3SHNJ4(Fl
MFTqa""pi&IHbB+JX6*!!q-e-6+ENSY)GqR$E[($hUa[`PGRc1Q$QMNH0!LcI1r6
4RYCXhkY9A#SPPTCDJK6pMGMH-LG`r3ZVA*rFeU4p-P%CKQ(SpiZE1FANe#lCfld
RiaNNpC2e`Bd#Q1UaMGJLp[8[VF3KAL(Skm-H4d4#Sk#afTAKecqP'bIpdEp'V,#
CG2C@aEcq!@!!LT2e*RKUiQd@RMS[N[A$26`4J2&'-UZ@#kV*[8iXRrllIIrMKPi
&(1b$*NSp*9SHMKlbT$`j++*U5R9jMB)&,qSf@'F3IbdR%ci-kU&+0rBe$kNXr`b
UrN4E3$TNErKCY`'K9S%`VC'YU"D"a@$QF3I6Z"4,E$4X,-Z44[8!LJ+P55$56LE
eUaAeaXCJS`@Zl#aaCm&$YQ5h6A"jJ8K!VM1'GJ22eY+d@#(,TBD&ZkKTaeL26`T
$5ES,Y$,`,VR&DhZ+'NRhI-3[XP8bMI9c@,eUDEbK%L(MMc84%M9+&QdFS5el0)R
EbV"Vj,mHMEKKK+3&EGZ5Rer-C1'GK&-8"HUlfE`8Rk'[C-[YpF*'+JIEc%h#AMT
*6r9P2@qqr'pc$0@21q"%'&-0NNB['Md`0IRi$L`C"TbR,QICGDUR)%emrEF&E$`
J(ih(,#HH2b4JEGQA3$UGkU2-*5I-*%N)XlXF@PBcMLGkR#3-h1Pf"(5X&)Q(8ER
[NCL@0[ZX,Z%kh-%k9G[V&hQNKA0N"LfTb6S1fVmL5[Rc9[F+4A$()'!jhJpaUKG
pZB0EXNbPNDkk,N-#i(kIhL4i-HVE$#$NHL'RCc41DQdR,b@1pVcJ4hS-0'VE)5+
GPUZHj5*5)PBL)L#fYjA-R[6i04F9''!c0(%[$4aS#YQj,Pj)IZcaP2NPLjpHR+T
pVH$F@+9J`&Mhdk++LqHeHCa+-[F0)`SFQ2hJi[IL#ljrk(ML%$+-G%N12p`2PLr
+LR3*R)VXbY5Tq`q@+aYJ91Z5CJkpK-cKF`K&XJE8i)XKX(Ua(`$)ZUMqZbF[l+i
R9EjZINX@2Xa#Ji9R`-JDD)Q)3(ef3IR"+*q14IYG`-4HhQpL"U&'YDd%*dRMA5D
@M-((phKa"3EXGD&EjH2ReQ,KcripH"K*[4"0`5fIKkqPmYQq"ZqJfB06,[88(qX
mTF3SpBCcMSZEkb5k1CR!AqP+U#k,iB`(TdJMfjMkJ*5,4k-Ec9HUmd3%b*UZAbE
N4f3QfC8he8&0V'*DKdqYZk1X0i'F3PI4CXQ"@rlRF!aBG&,Q9M0'VHR`&Dcj*Eh
lJSUa9VkaY)KkqV,+lQCV-NTEL[V3A8[52D,PT1Fb80Bb#r+0&&,fER3mh$rC$%`
2(`%[i+[fSZiMC[I5SU4&KGlLQrU!ISaFS'P5-Ki3YJ1mqdb6Rh26MmG*ZFr"I,U
I*(CkP`3abEpSc58a+Zc*l8FUhZ'"K4Ul8F[&F@%Jjd6Fb3"-"abT4ZG(TBI*2TY
['-%20VS'20Kd'`"ZbQTTrjlpe1jG$6J9R[@B`FDPRN`mrIRrVRBAD03)j2%R)pc
TMN9,"k8eqpK)HA2lLh%5P2iCbYV6pJjjR'*$#YJC$)dadV1CC1k@cD2L5NC12"D
f2Rh'Q5,rp[@6hXdF&q'-abdiC*V86Z`k*"hfR2MVFklB0pMGV!XSXdFVNJfpb!)
6cH(%D1lRS$$@EI!"`$JKDSl5-k#45YI-'m@'Yj&iR+Edh5[UQTde!#2)5PJQZ'V
CG%ZqVL8&GR6C#Qa!Hb4&0eAS)l%Kd3S$+N0HqN9q$iaCBm0jjE0DXf@Q5ZbdLJN
m8,bR9J3j8a[-4ei%1R`&)S*3#$AH"+jGhKZr06*R$+6aeUlGcF#E8fKD0r[0D%U
ke8RjVT*m[UkCm2Np`F(2R[rFL0!2'r@,G9fT-MEF+JB1rTH#EHjFZ(A)YMG*@c1
C'jdA52FE3T'i,ZXmE264p1a[r5ikNJpQ2K2cm%(B,FhEmb*)N!$r!d!r,5m#0Ic
U,G@YVh8l0d@`Kb+MD9c[V'f,KhNMRSbDbANXRQHZdrrm$8KRT0@f%8UF5T!!3pr
b8YF1QlGZKCQ%UUIFSXTL`hSH2XB[#9'K0f@e2!SF5"[@5#r(kbNq2ikbdHj#HPf
hd#IJC,aCE$Ral4l5m0TCXUeV``+MmN#*a+eQ-dP*C6"qdfpNA9H@SqB+p'[!cmf
HHC!!PepETjhG+FjL5G*BSjfXaU3-ld`TS5G0FFqhT2YjT!PkLlJmAZ81L$,ASS4
Ca#VH`Tl5'AL2'*jJpp['dk!%#F'3!+,!qAqdpR"j8#-E8&FA$XhFlY,)GHFU[q@
60pU)9hY0+,$HaU"SPbq$"pAU40E1k-2h*(TA[k2l1@4c0(!eX$3I59Fd%bC5kpB
VGGX,bc0-"&"ej5e26`r"AZ$"&P0$`cChlUk0qFe%,9Z8lde(-M'lGbNI5bT*b(P
E1a$1QEHmUKTm$V,5b4j48dm1JRb,-6A05J5GH)NSPTNkAr4j-A&',a1[AhrDAdd
0YBF-kMEPM-jaDQ,J`A#K%aTGfX(BU+%IIqCfTr998Kh@-ZCAL"8aDk@&@"%JMp&
b2Q&NjY9MYA5JFF-VGTUbM&a4i!9F'X'@V,aiF"bf"pi+dq%'#YIjfN*QZKq@bR5
M$pSMB!4UB1C)#@`c1+lBYNTYm9K`(+c%1l3JJE6TfU@kQPZpT,f@TCPcPQlDjD%
L,qQC0cBjZZehAq4jbQ#@#A9%qIDl"P,Zl1T4*XT#N5Z2R-@h+""iI5FUE%q`%6$
`)LS+%16lm"!kmYiY3(9'KlZCB,Vl@aZ$3[r)e3mG*Ih&eMiNa@Q82@D`[CGV5ch
2+)drbJ%fKACe9M889UhRUN""Y&1d86F'$%9"CDYh0!*[0DZYcl0H(rk""[lhMq+
Y84J#@pLRFLbH2-K,06*M5524SeXQi(23&1hE4&4rE0p,)jQcSJNmd&5iXZ0NE@9
YjImDKc$E$I*UH6[4kN9)1[&YiD$AP(YhCKUER'#`e@QHI&fc8-hckYS)9D"l!9,
D,d1@2p0r3r#h')MVA@@V)m3@r,624h++aMQTU6lHX3SUaT@UJl!h4+AM'CdQCT&
&DD&a5)Kh`(h*r&`0hre%'eb[PrfMQ`lESF8EcS6R(`pfJap&k!Heak2*!9M"MmP
[V'%J-,2NjC%kXrQ[a)+-r-T-GmkNqC@DjYJH2Q`cH3')15-VUAP(paCRCB5cl&a
&(pRcr"B,eYSTlfILYa22Ll&9ab+P`bFH%cl"e$%D9'MACh'EKHmmU46[h['K3AU
+(NZ+'25afZ4UrTJ[MccP@3mUZ9*Jj6MQPP(d"R$r2ITmE)N49XX'M-*rDiNfKN8
HDiKd%D!LV!+(SrmUkj%L'eZpSJhGXlD(`FTKA*!!B'$I$iZ5Li,RK4,b4VmYUR+
90h4&,[[4XL`Ye2RVh$A,'XYLc`8fQ5VlhPTXiVb1Plk9A1B&B8%cXlI*Q0e)$pN
Pp+(1"K+Q&9--eFI(8IA@lXUQ4@5pr#RUQ1cH,9ZT#KHGdeaGh#air`Q9-p+b'T5
@K$q9"G8`JJ!8hHNUK5TpEAlCXqj6,,ff34YXJL&c$FXjC8V')Mr%"LMA2CHeU'F
rLETGN!!*Q-2Q+N$F)aNrU`IC+&X&HaT!N9'&(D#!BR&+[Pi"LpB8VUQ'EPQGQ'#
KV@j9i@NmqK8Y`&!65%C&Vi*FESqFp4Km9ae1N!#ZAiDEq*8+82JDS@2fA[rVb*)
D0eDUiS-`28X%H*%11I-Kir"HlH6)YaA*3@qQCaT[911f"YCYcA*4)i!I*@!"ZQ$
0[da2[ZfFLh#L$[$T(mV'k-k%E58'ZMr-'T4b)H1N@P[#4VQ)S(00Da`,rdEJl)U
Eq8%lm+j[er51Td9,!m,`$C8KUE*A8XIL&*%AmqJfNG'KbSrk`3j@e-%p-k)cbT1
CIb#dQk(cXNjd[I3ha*)aXjap#["j'6UlF(,4lRKXG*U!VMY*DTdBFMG$-Z+E&(Q
cl'$5E8U3!2,,*LDU5$Nb+0S5jfe60me4,@Z@8L'2qFN4G55aE3-JMfCX+@!SLJc
EL$C@qPEIIG!%B-qkTNSBdX)*$ir#HC&NdIj[FA'if1K!fiKU`E0kG@,9U"2U@Pa
k4)Ka,l(P')0d36BBlrpqZ0mk`l&Qcj3*aPE6H-2bSL'4QUHp+9V-TUPr0iVBU$m
8m,A-CC12Q2eS,5c#a$M06N)#p5*C,jJcZ8&hA[D*fpSeB0Xfp1M`-U3YT4&ZcU!
XY[AL3h@,NS(MdINF+IZIL[Y*5M43V$5KF[pNV`aK8Lk)1Vf'KL0,rd##`IS2*H3
CQi[fiG-*Y*EFirm%8a5Nk-qH!IR)9NpbAlKrhIe#m$Ga5*Z$-5UJka`4M(`*H&p
+S@VBASYYX(6r1e3'E@'[Bl6[CXLGe8R1lpDpaDHjCX!"VmRPjEiC(G0P9RQ2Llk
82VJe2+)cEp2)e9i*9r`8cMm%Nm$,,9Q4,'%q,("K3U,IUQ@NXKLfmUJ4NVSM'e2
-Y@$"`K6c+GD3!*R8eISJ,,FEFBb0HNi"6rXDG#1dYF-LAT!!K)L9)D$SIXCKF#*
pIPpHpP&DHV2S)9H@)N1H&[R@1Z1&XFFTlhA8GLNJKTZK6I$p@0D[!2eTj36J$1'
GeI028,i1$$Bq*Y*Z[!e&8lBBhY8l"S&FIeDa$$!"NA$HA'0r[$Z-ZDjPiR$HA'2
-3K[Uh[,"DPa19R'PVK`2LLR554S)50+M-ikr05'%%8Lp`1rVMQ+r5*2E2Rkjk8r
RXJdA+ieqU%A#4Bm2")JX6R3Y8ArkJHJ(%qMr65VqRA!rQ1+I!%3'`&,9k4KFNRk
qKX-Gd0IV6LQ%d5VSr`b'FCq`d+l0BA$54F1h1FmTVQ9m!Y%H5hP`"SKY96+8IJX
MqadP6TP)aXl'c0&3YpXef,R1FM3mHKbG8eJ-!HTHZF'STG,TB6DMkkqA60'bLM9
G-DjmJ'PlGC4*E"V'EFXL`RH)8D[XDJ+FAK5S(#RKf+P902ZqUD$JJl)brmAAG(e
N4k3G+!N#k(#9(R$4h,3XFrGeB5+c*R6#@Z4fUp(8riFM1ZcI"LFH#06)2mrjFGC
j*F1#Def)SaX&EJYJhh`hbkUqTIK8PpQNf(rilpVD1#H1RA"45"-Bq54GICN)!f"
8%fU-d3ie*@[pX2UCh+1X5k3B8AH@`SkT'dm14V[H%S8S16E,@6@",,48+SFVF52
DkI#EfQYj%8+4(1!%MkhNhPZ%'j%lQP)DPXcP'b9q@UDk90q4p'le(YPCZQr0HA-
)4rT(d5DU3Xi6DYPGC&@'3b8AE*5M"!+!C,i99Fe3phS%m*mck$GN2Sk-[E6aX#Q
pjMem$%TQ3*e&!0RaVl-'qDdBhU(YrINCT'e@`L6SEQ'TTXS&p,4THEhKjl-I3H%
jRJ2j#iLC5#J%H3233"I@CCI,`%Ge2ha8NbHG9"&)PrPj[9KL+3QcbjAQl$G[5'i
*bK8H"##G3-b9J*D%qmkekbdV,1b+S8i[R2&1JjfT4P@jYKJV!$@2)([I1$$!#`4
FKV%6-DSG['[[3QGB)e'XJK1d2AMRq("J'V)k&pI*f[rD$I2Ab#f#'@4%Xc595@L
ip",rCL%dbFLRYTQI%$[kY%Pl6@fC%5"+GbH99HK(0aVAbJ+hNr"CE**#dKErbDA
LT"3LVj!!iK@G'H5)@f*&j"D"EbXf+cdVpccAl+cN+pq9h!fPD[13!2TP'4SbFa8
V4R[ABSmmRUXF+h2K2%rkfTmd3$aL06[YqTl60%ZV@#Z"Ef)[+flk5FSdI+Y%1h-
C+cCS'$MqSCmhTaHGm(C@jMK"%14V95f5A,@!"N-U-i)qE5qd)CK(FXA*ZMEHP"[
(B(Rfk%*pP(C+E!XXb#ReekR1j(-,fh!JEP(-QC29q[UmE"V5f1VEadKq+[PIq55
`r#Q&M'M8e"["e%81UGJc4ZlSRS51D!eJ-68rL$5ZB-Dp$Xf-qXbM8F5NAqa'$a)
PFcL,%bU@6@ld%eVBLqYqU'UF[B9#E"4jT,dh%9A+aL+LkbqXQ4T0AmB4iR8"[E*
H[AkV!#FM!U8pcIb0l#1ZK1EkMheRm*M$Li53!"P%'HDm@E",UR*[2EkUmb"UYh1
%hV3i[DMq5M)1RLCeK,"3Mf`5[!#ZikJdKLALX%@VI'Fb&cmAqFVKqERHfVhaXdC
L`CU#P2&F[&!ZB%@*LY1&IMBBeNIPM83TU)`f6'RllK`UL!ALbUUaB6HFVeqdEE$
9Ca[VU[1-pQkYlM60YQ&P6L0fEPF%JT))EUm'qCQP$H"r#aDUhrbR'`%1)'('Y@4
$"PmH%eU(6M6A)eX%N4'3!$[+)N`&R%b3!+&+FIfC5&Hr@Si)!1"(U`KV,1Q2#3#
kBj&Dc1E6N!!'c@i+"*!!EeS`IQrCSA#MH9PFJf#KH6!RG@L3!-+LcN)pk1%N[&(
B'a%-9PF!U@Ad@BHMLEXrJ*8%h+@a*mqE*KXNN!$,CQq`Z[R-!(jD02A'Cb6Z%ki
E5c`1bB%h8@pTC5`,fB*#6ABeh*TV#A#$X6$ai*M6QJC1%j)m3%$dDC4F4B`VIZE
[T+kIKX-(8K!l#4&9PKpMb2GkmDF(LRl&LfHV"$m"'fT3@Q%+YNS)hC6,`!%D19"
[L-pI*NC&"A"Za-2KDZGl12hXh$LjfG0EEc4LJ"ZNq+#Rm6hj3HJFiP'1p)q-QC8
X+XrddGT*m(lDL-9,%X@2bG1i*RHlc51b#iF(Ff!dZUK`&ibXIY2EVZmT2ai@JU1
A5)`#mU494G`$"rD,5mG9!`aGV!QjZeec[Y$(@mq96ZTir0U,(ChS@Lm6MdAXLDE
XLKT,Z*Rj@8iB"VPd9A4-aH20'Pa-##fFYADD)JeHF@#3!(G3eQ"#cq!3D3[&p&j
6$2+IACP"Mk(Lb1S,"`(bkl"Qm8'!5aifd6G(V[XG9fa!SNSS$&9If+1m0jp8drk
F4!SpXAirkl"VLk%S`*&@JL4m08K@Q`*S5m$JKdXFh1,X*Zqa$(GL%Cpf`cNYMMT
"MZSN@4N3r""5TT&G+b@A3K!"Z%#l+H2pj1ZbfP)'VQ2j5Cp6DK@ZSeb-Q+Ud(9p
fTQ+pk4'NI*3BX[Z%rChN1B!%LMp)$5hESJLE,2#PC'Mq[#b%RR@TNr515R$bhje
mp#fI08,,qcjSAi5T`%,qU8S'U00b)N*!DTl,2@aA%`,'-!fSMQbPfC0#V!@iF&c
hVIXQRA"SjK&e+J9J$6+3!!QT8ZM6&"[Nf9-d'6BldC0PZ,SeBqJfK2$pX$b%%3-
IXl%i[p#Bb23a)mHI0LQe),V@+qM'C8NN4CD$h8d"U'&V1A8*LHiN#EK[6[G2K&)
eIbe9c#CV3VB3TL@&aej!)$(ND6eA'#V)0(GZ22SRJkQh'#J&k8,r[Z#@TeBY+$R
)&),cBr[hHQh4Xk6,kAhp)[d'lJ8903JIbih9#b1M5f8B6PQ*NHNj,l)XSV)`l9J
c1*`3)M8E["1U3H8N3EK2eQamDc$91I3P!V`-h86T@@Ah3NXF-)j-1-+[i!48a@p
H*UDrF,PhF$[hP%3j"eFC-2pX"6&DCIepMf[hc(CG%YUB!3Z[2aQ%JQY$ZZC6GMX
U,iUM,dZB)"EkZdZBDF(N!"GkfJ)92a&pe`2e#S2E&,ILhFqHJYmR"IrhAc52J)!
0I%D`Gi[Z0mSJ#)-BGDVUl&3p`A6DhZH+Z,`CFM[a!m6dTKJ2p%E,,h#([*bjK9q
CiFE,MM3,3k`D2iqMJHKAP,MS"PM[j"Ql#fAGMm`Cb%[N)ZR&JhlJBPPeLP@CL8'
5UJ+Na9#bJ8+GAPR9RT&$`%9Cq4HqB1jV#i8jif8bcE+aBDA!1(PqBA@HYL3eE6q
+B%IDlDkq19IbSf)6F[-q"!1j&EL"i6%[p!ZXm[jf8-iea+D$N!"e3kFFC1[bId[
b93j`jQ[`(K#93)4QUiT0SUKMFaR3l8)0T8N+@Q0kce*[`fcF&$KXV'qLD%f3!#r
rT6S5jPR,'R3Y!Efif")K1CUe,IA9-5'L9$ZKhe1BI#Lp5ZGrdZ1lN!!'P*aTKpl
BrLB*9[!dBEA#[ET#N8"kZMG4Zbj@I&V6)Q&j9%&JNH4,3AP10irkb*f!&Z%mR@f
J`L-13qpJ3T08BE-+4'(+9%2qj!XrA!)823VER8,qAIER)V@'q9b8'q6qpKc)m@B
DZ3&d1(iR+EH"l$pp5c-Tq9UQ5Yh%QcqI,TPd#ZKl&(Y4*a#NIZ321MqJR#!e`HP
R*i8NlkqPpHfqI3BT8TNBEBNXTUp')9SRjiq`2Z6R-C8RFm3h@95G5[qqfRb#TDE
d9iffb%5JpTCaE9VQ@5+-DSXcH+[%p`Z(2HN,cVNbfbq"ep48T2#U52%$8#Sk2l0
4[&6"jb9ciAdKcVR[lU`"Nm9"8E#JI0H0MV$D(&,#EHIT*b9TmL5K8CbckF,S0+S
)[!1ijG("'6K`Zm'0"PjN0`[5G+6S(a"%X9DMYT8V940J3[BfT`$#9"#EDYVJZ0@
@Q-"&aTAjL3-ZRbUPGrE#D2K%,QXQMHqdf)G)GcF@DJliY0V9L!kmT!8k3mFm@*e
p4-2d,de!M8$TB0STPQ"a,T*f'h!'rd#aj&-1FlCZrVB(mVEimMPQYG0V$,ppP31
SQC@FD!9PZaG#3QaD)eJqB3C,,PKH3!E2[3T`6[2)3*4$Y$q&qP[H$%"S@5eQP&K
p1'X3`N#kbpqKA6G305C8QQVD,N"aB22BaAPfr+5U#iAm,@YBXiUA9$+5HKbPhrC
GF!J5J&+m`ScVYBX)BIrIH,aBLhXEN`Hj'rJF@H@(cU[%9$5BcX,#2&6r1MK*rmp
B[e-SXeB!Ni5bN!#dL0XM-2be@KFkB#B40G+NT!89Dja)DeY)he[DTPK*@2(Dqd(
Em%lmbRHQCZbA0FQD6UV(f8mmGT3PIKGfG6QXhH@6G(VQ-,U$rNTdPAZ13cDSNMD
S0RqIhAVkMM%imrL+lC)S0+dTmi'0`3QQTkbZeR+SaB,&)&+ScXZAVqjiZ9!YlGC
'Mf2GDL6qKr`Q*&S+T99aD#Yi6E5-pm9*XpG8iGT'h0m+![kS"mp[R1V"pY3,RrG
hY$eBZb"!'+db`RfE*UZJNN)h,m,`DQ5bJ%F6c$N9`MF4I!MRh*h#5Ve+G!c"bef
Qced*5`DT5c3*ki#L3mDb-)9#@I[0VhSJUaZ+)-Df5dNA*6JFP)qL"DeH0+hNEhh
#aJ#`Emr8)FYJ!@ae*@$"A24cTJ9@l5pJmRDNUXM4drJ'*f"[Ah`RC!Ljcbl5-+c
[Sjr$0MJNN!$HI6NLJ!GX&C)L'pVUpKr4q(4T$RX4fbYrY9fdq+V1#Am!mQ+-36`
[MjG-6C4S%!A)J'r)TbqP-6'P9P4fD"XTK(UJbk8V3"G@F+0@lpC$A`LMk+kQhS-
'NKE!ENkAGAj"[,QjkH+FQk6L5dECTBrfDQ'b"Hfj`UPmVDRiT8UF#ViSpNkdTJ!
MVU*N6hqMjXR&"&A!&IPf6fIqM"icPA86X['CFGjkD`Ma!N#I2@Q5CT+-DJU6PiQ
#f+4iSjm*iAL$JqVamKXB8GG-NT4Zi$Q%2T,NhBcp5UkIRJT%mNPm5V%+brKdPT(
F'hXTJNd[eU)D#6#f2aHN8PT3DER2U"pS['N9lbChb!M!Akam'YSRVF%Q0K2e&T6
kkd54jY+YMR%4C9%-5U#&,rEA3$!&-,B8"XiM&NSD+3VaJ[TM[V[Dqe!4f"-JY$!
28(9iq3"hFIpbBJ&Dlr2,0P@HQDJpN!#5j#Jk9)lB8R6jSDP04XMkJA@"9Z3deHN
I(BLp0&BEj-[+$MAQk1#[[T!!f[&ARE`44A9Pq+V8P,mF#EJ20"3kqj!!i`V#Dh#
SS!338+NbVaf[jlaP50h0%X2JC2*j@&FKJN$04(KSbIq3!-rJ&#D-,PadUm52Ba2
k20EEUefqLc@kpaGIE[!Q+qM%LkI0m'Sbb)I[-piIYL8i@ZJ&ALKB3F`Z-(5ji%b
,!U$8HGUjA@q4'QYfch4`e!d3'BeQr3l-c2SJ1F%X*,"Uh(LDj,K5pK[#%M(ah@B
A2arr%eEqZS`%kC)mLqQmTqkECr6hm+rSAf+L*,c"1mDjqVGYFd$"&jC5p0++Ub,
"L6CPMY4Y'a)`B4L+M)3amGk48HqGGMXP@([")5S@+c+HE!GcNEYQ"qNmZkj4,CS
I`H6S$!IfqJHU8e-p1(fl&jpd8%p%JDH9DcDrC+KfNZVI9!8#+09eae6+XT-9HM9
BkP3k*@Bb9S*8mkr&(6V3"N#5fC2McVR+'E&b#5DKKY2`HY'CLR(c`**4Ae33#c'
J2h,VR`"-$h&Bia(pB@"6UA0eZ`2d(i'@dThIL-TNTXa(9I!@&)HJ,aJ'md[,KE!
%k,&"8lr2R$GP(DG%C#+PZePk9h9#eB-2U,84A15Y(2iE"E5Q8*fBK[YPC-ZCFGA
dS[["rBMp64YC[`K,'(2HR%TJ4c(3SY,@N@)L[Xj&Y"-(cdfP[QBCpj4S`dd#BI[
&1D[Y5e0jrl[riYQ!G%bBe(5j@Q[C8J,br#++U*e2(TrDmUdkl(hh-ZR5"Z%+%Sp
Z`i6-kUXM2c")f,!QG&l`(bJ9TFPP9EE(93TLKi&X*rS9Q8,&HL@R4m4Y6MPpXa[
qlhiF+i+,-CrpIq5k&2,Zddd$k(fG,2l60GCT[3&6CXe-`hd9eU0GjKRe+-SC,-$
FPIA(iYNbC($9D6N3%$I&C3&e6%eJj`Q5m+AUZl,IAH@U08DE`Yq54E,$@2*+*kU
lL38q3#LIN!#VKph#Mf'j5Hj-dPJTD[#"!*PQlcm(#2qDA`EG6X6eGPB'`LrbSm[
1!mpVIlPC*p8Fe+NcVqNca5iPJ9d0#FkRJ#L(`Z)M`kjjS2GbrAVEGTMkqK"SA9P
D4R%0R(feRcDURkJk'"D'MX9Yr5,X"D[U8TY'K`Mf-XLphZlMX`!2qDceM0@-`ea
D#A`UJiUaK0i![3$%Aa"CIr[-NfT1,NeaDT6k,@)`"29EQEV6ccL(bc5j+pR4+dQ
981jZGJSaae&`U'V"Tc3`!`Lh9,Q9aZKKp0B,(j,Dl'pj9)r2R[e@+J-R9*hjDfY
B1Fi,R'X94MMhrb*9a39ji*3NGUA%&el1lK(!@#HTS+I&1[4fP2*KeVR04Qb3!-)
!Kei9a#Riq&(8Cr5#PH#Ea1N0cACf&ZdPX$%CF'[Fd4*A1V"L(N'j"U9)U1qkFA(
DRMH'$hQX,*6PK[Xhh-dINVA(%%LVX0JHd+X8kL9V+G[qbKaIm'SGS,$aDcEC+kc
#m[Y!SG&jmNiJ,kF8RF-MbCcp+FC0b#i#QIT23fi"Q`Bk'*dEFX0mEYqIa!DS(&D
3!%AT'f91R03ajc2q"!r)LMm%9S(j**r%E(d0dYBG!V%e6lkB-H#)-Cd2Q2hJRpp
aGeMThZh$Xqd-dSCUp`aEcGmH)(b@m8'l+ITqR@VDcm%$1rZ1mGV2b!-Q`IE*@Uq
f,2JMhSpE1K&jr62qlX[lr33Cmm$hrUX"!H3"#@R0A$mQFhqUP1(QL-mZU'rKKF$
`Q%X1,Jif8DIccDfQC$jf11DaTf5HN!"k#CMGf1eY*TDfeMGc21PLI8Kq3M5%Ne`
4[34m1dIb4$k15lP,8ePlXZ@r(Cb*q[*I!rU0G0+-[HPkL8b2K'S@*6EBNKT"Y+a
DdALUD86b$TqRU(!SfFje"32NEe5GrjCV4-`qLJ9hQZ1F%2-XCbq6#Sj1NP`f%HL
lPErIGRFrI&BiYVi9MBrMK*LGBbA@30eT3mID6@9"iNej8[r"@*f@'YGh32Nlj4H
@8lVK-EP&m@cVIPfC5(S6J*N1GI18Dc*#P0SL"#kUUL+fV`IlCa1jDa'GZ$hXVQH
$1&@-!ik'2Y84XZhFlHG9c30i$6c9MJ-EfD6&'%#8NMTA@M3%i+TQ`1P`FcX5Dcf
*(rr#Z9HrdekE)AL%fPeH6MFlkSihF&#UHphkZkf"%Qc)1(QK0d22dMk6%j406cC
Ea#MD9MbbmUj$Jjj)d(pY4Sc'kS,"+4@S)qpZEpY3`m6JX23%&b+2'),VU8AN2HR
VQ&KBV[PkmUXR*dN-JRS34#a@,Rl%RF+8V%iiKVLc999L90plkPh6S"RUE*QU'Ye
abd%!d!'!V3'BdSkeNP(cmNjXk!lp+Tl-VfL%SE8S*X5rXRm"HZXbGR[D*X$@4&i
JTS8(pd9#`"Y`)'CG-CEF3T%)8X$kN!"B@,F[2"Q&Z@AkI9jj9)%E6!V3AqTKZLX
aM!,#E"CJK!*'F!XNYPV2r4YY,0aUeE4@SqD%A$q)*HbkJZQEG909*Jb3!0I*R(1
8(J@@AIdfQCar#HajP@#![99**E2!,!#3!0V$X`hH#+8KBXb4C+j*98Q0P@LFUm[
V85HBkDJi'GF5[1jrq1U)Ii+Ki`IeipqrKiAZJ&C%T!h,qaR1QCV2M68MU9peR#4
LR)l%%3#p**TRB`5E)Z[rjr(&5L("RA+SUBX@Y-jMbrL2FY(@+Qh0jLH9cc*lV)+
*dlE881j)T+[Hb&)NleHDeccAhpQ-RPUhQ@%DbAI)%a+q&P)2M)rNjAlmTrm8`bH
Nj'E[eP5L"biUcTkppdR,8Q8MDHciE35"("A6iH-FY`@GhE5%QfMU&#!&dKj)aah
fr)"pm&TM4IAm3jfEh+YeQJNG+,c4HaeZ[GFCUbjYj51G))US&hJReHridSdkTX*
6C[3PQI0M3+iMBccC'G!lBhU3!1$ZqXcZ,HPFjclL++##[$Y1l%LC,88e3mPdDX)
irB2#rGqk*I4ik1`i9A%T'(hUR%JN+[B6#E1pPFDjk,*i0b1[YaVe[A'RYT%[5'Y
)d[q@D%2Z8X8"e!eNCMYk[AD,-Q**1J[#m&T95IY8N!"1p,fp')*K9,b&FMUDVHl
#95H2+p0bj-dEJFJ8`[hIS*`'P0rq3GlQCL8C(EMF$'Kl9KPXJV892Mp@"#leEEB
ND"Mc14Ee6[80!1Y)"MXqpde#Z4bHV,[$5d)d'3D&qU#Yb9`R[+4AE*(&EHNIFMK
,6I($S`q!4bY4ikp`rB'EBM6Eak#5eVS',ISP*kcP6Fa&9l''M6lcMRj14SLKMk)
rD)dVp"6Q**`Uk,X"Mj2k&P)KfhQ#el4YYiUS+Y`'hT-!rd4NN!!'iMGbYdMhEqG
ML,43c,&X0c*3Sh)-PU0q(TMi"'mfISd'iAAhXU`fk@mQ15V3J'T(-9XFrIcbP,#
C8SNUK8QZ)j)l[SU#q4K8S2IRq,,fF)"'eJ(R3[aBc85C"STeL#I@D6T*)eCNY4e
8UZqq(Mp-55Kpi8I+U!-rj1i(V[2mFDaTa`5bFKJCFSl2ckLKYpk1BL`'QCl58+e
Nk$id#$qf&KGe&!cekLPl8H0U1DBlHMG$dm1)QJFMfJSU(X@FP)8jAU8lhjSfcME
ZeH"*dm!AImiCNQN33VSf&0KU[VS(N!$D)35!b%H&'Jl0G#kh@PYp6eP$Y'#kN55
F$B6`PQTT+!8PMY"@fQ`AE"i6k-QIV8$k!"a%I`e+Sq8J9Bf6`ECCXFk,je$ji"e
JJB3S)+PdL(h#G,GpG6T-CHS1eF0-#5E)C*d26$"el&%A6'Aeq()-HpU+2T[[QPd
#D-`$kK4G(THFep(F`bUb[0$`5'i`[adDArcUCpe6Xcld$(%T%ZYN[8@N9`eE@l5
pA%-#!(pbAM[Q,kDm2M",)rUCZ9*`Q"2$3FbSdM!%JMf%4RPL2+63PGNZGFcT(ah
dVaD4Q4"$20JM`be5qQ*U[EUA0$i-4&U'!Q2QA4fdjP*qfC+`MP9`@(1F2HLl!Bm
UpkV5R`1F8'"jpZ*'hKBKrjrB[A39#A$Z9eHNl)!ML"r%h*&9+k%fDP1eXr#C+$`
Hr@r*ab$Zd[c@``EF*f'Xh,VTij3AT,l$M22JmCSh11D&I9*SU&I5jPbkMQ1m-)K
1EbXDMJld0'q2RITeb!ph*b1d-Um[``,Lk`4GEQ5G4D&X,N-)aSq@FLSSQkqqe-Z
KSH-le0N$2K8T1jP-2-!M'BIpcMYA4C5A,be-TKRPQLJ*VETCaMl$fJe*SG03qGC
Y%rJlH(pL-*)H9T[,ZrKPf`"dQ34Ce2b1S5jE6MH*1FVKm[R6h!b8ZG-lCCU66Cd
YNM@F5dffdYJNNY8*&Q,kQ[0G0d0bfDkbHmHcRmGIFR5pB961ZX6YBZ+ZP91J(em
0HmGkB!Pb%aE$SNFM(528S8R4ZDLV8#Q658IbfcFCiCD)TI6peL[)Hb9B1EB-D%(
Mhi[CGFbP"'$8Cp4`jIZSq)9)H)L[a`6jQH#N(5DF1D#E,JGT52$k**P1h!b51DP
Q4rDD@D)M4QiRIB3qMI1p91JDJYQZrJk(-ea8XQB215(eQPMR$f5bhi,blpk20dH
!APqiQkXarM'DfiKLj#VR,NlaHEbTi9+#-S3Gbc%M`#6R,Dr3PhP0d!ePkPVfadU
beKF9aij$e0(B[fH'INCePQf'11+H*ljDk(!fh8IC(fBjSqcUpGb1hhf*,TZNh+#
JRKQ3!-RcAE)L1DbLdfDCF$*3YPd[[JLaN!!0f,`hpGLI4jTKp$&AHK*"!H"1*4r
-fq1krCj"2ZK)FFb*Y(*"fGb3!1+"9KTQLR4"Ed(4P-+`r5UIP1J@1"62k5@REkT
bC'9jFj(C,'h'Zl1A&MFXG(2PfL2fC#LhbUjQ@+Jm+*!!EmDbV@5"qf@5eQ9cV*,
2%V2Y#3HjpUU)1b8rdb0-XNjJRMLAXF(Se-8PQadl95NX$+F)'9UdLcBbIc0"Q3I
PUX1%m+aI6!11lkU,Mcf-V2YHd0'UJA&hr#GD&C!!I"BVNCA92ePZ#Ji)EriaTFT
9H5[[0c#EFFf)A[1GJQ8H5PSb4K"a6m1*,Li+Up"ZMh%Rmcmp6UbI3r24GB&DGeP
NK`m$a34lepA9U%TNKiN$reQ#rfP)d*M9k)`C3mTC*UK@r2@%VT&6+r0+TSN-2J,
kkRKhc[3TrDpB#cZTUqA0D63mki,)'qR"@Hp4J+i&iFaM1f)B[i308K%-rPH6(2A
Pi`lfim23$5i+UePZMh&NmcmpE#i[LV'lQFD1lFl1c48P%Q5[LP"bk2D'kmBHICK
Jl&ZAYBem'fU[f+m(APSR,G'Q`1[r``L-2K)lN!!-Z,dDl-I%)pBMqJX9%J5C%Q[
(Bd5fpiY#!%21BHciT5hked#eN!$8B`i`HX[0cNDMQ9V1SYchP6liP!'6B(bEVl#
Hr)@[d+SCcjS%%PF1JcYR*F0PpI'cPLJ8J839Cdce41U(K-GCk93!T&!NS&mXrr#
Mpe*``#I1IL,dqE[K!B6GX,&QbUkK6$j#lBGe-f15I!I1MKrB19fL@`d0,ihI*5&
e3pq4#HhpEd*NC-I[8!XU+9Y&3pqVJ$[9q&R!ULeC3TiVX3AEBeRGq0pVja(mcMS
T3K)PEh8,j!ib48Eh&%+M0TZE@$5KVRrDdMkK#"rRbm1E,pJTI3([hNX%AIYMPh2
1K3V$GJK@fVUQM6c2RilM)@G5Y#c3BV[i6aDE53BcIH-X-e4b"SrGkST`5d+IemJ
pfh9`i326pKRBKYqNEI9jV#Gbd,fdV4P2i"b#XRjrDVc`VQq-PmQiU63p[mm,irU
Td*Tq,qKpib-h*%`Jkm'6,#p8"RXD'*2pQHM0HRAMDJckj4XpMlLB)!'0lGNKV0D
apVa`@P"[)Y'-)hc5d9SKQ-1a3R15[Pa*K3-d)(#,mH5G3lR'#idEfh0X)Z@@hL&
Z"eiL4(4jHFRMp+cYVL&EB@T`5C)'FC(THIXh(N3!Y"je$%,'NQ,MY)9qrGBeDc)
PeieQHUKZiFD6Xp9pP2jcqqqcN!"hT-!4Pk&fY1`fMjeERA6CVV"eEE-[f5+SPDm
UD(#%R"9M%bj1,Ah-+0qr`"T`Pb@jfPkkEV-khpMJ&khh*EMIR+B0A)YpEcI$A)Y
cPmbe-+M4i5!UTG`h9RM,-TCEUF8@,0Yl"h3E"@'4lJH3!$q)iHfXTT9h&QJI%k9
QfE[4jR!h2S4r`Pl$F@,e)m`)CB*-Q"H#3IHFJRKFq[09MS&*Gh9$@YVe$b5)r2D
KSVhr"!PA20,PD2-%Er14K#XCC(ZQE4-Id!FNh4h*a4A46I0AqYqLNG!NEi6DVbG
HY5G%-SEQ%!i-NTc-kcPe-bUKcDZHEYKI!m*&mhKY%6K5Kj6Q5'c*R@IVdh+4IK@
M0K5)-mD)+`rB+h(JRSN',1hRNVkpXIAGBcYhm1NHa!PT(M[D5I0X9'32T*Tm"p`
$LmjrkV&Lah+IkSHmKR%CV-lhqej$mdmZqJ`)aXlFRcZaH+('1Zh1cM@q@6fImrF
+$3I'qSrLGUl)$eQQr'1!rE&P`klAm2cJcY$l3d1,6aEk5JJ4cY#IAM[E0i'9fbf
f3G3+cDP0YK+(ZFYXdi%))A$dl'bC+&3bmI8d*b%G!JDTFX8`)A[ZaieY5[*k$B`
kIJZmFd3$jr"dm#h"Cbb+CVZElH2NU@p!$$mE#Tf(4Z-#@q)BPSm8h"B*HY"5YZI
&m!lNG!QjZYmqhm8[#92Mhb*G#Y#JF3qdN!#eYBXZPGkql-'i!8F0JEq@JEp(lM9
K1"lhSH01LmB#CUM$6$,0aiQNY@*CfGRX&P%I9aRjE!JD+d@#%PjGm-$6pILA-X*
R#3aN"[UfYTSU*6ZDmrKabIjKi,aa2Z3Ak3@LZ(`XG'PA&N+NGkRT-LH&B[K)T%l
D!N8AErSF8hNSeZ*8MH32&Aq-4@VP(T*$K9NV90Sh3M&-jEr@Q'&$lmQmIZANLUr
4SVaA--X!EZi[9ehH'b$DkD3j2JpT"bDbq[D+CF[c%E6LmR,5534)XplQTLV8eL(
fl*!!,J9li[2DDAj+RihTEk8!8&*dqT3X,@+k6(93f4"lr4BU6LIHEdVSqYI[qHl
6pdKUBafD"NbF3jI["$6c[KCl[a#4"mFDe10-+NAaq1*RmK&qh'"H+RKfUl)$""&
B%@6BrFNDN[E$qfYrUD'Q-bN&%+#Umq8(9[#HS%NIBei4PjY1&rh@QAY[9qlFFKC
K&`l10NV20[#9cY"2Q!*,66B@5iX9!p*I"$I!$PX1!0rG%M$H&FASI4kL1lS#`HA
c3Iae+EpC9ikimp806-IeQC(qh2`!5%Al""PR6mDah!Jl5(LIaXlYSFik*A+Kkml
3T3BU4&N+E()2"eR3R(*8e&R32(*-'1!I0(rT$@aXNCHccLF![%0RTSS0H#I1cJA
E1j-,r80fj+&"mqN-6C-eBJ1!,6Gf'ZemKpL`4Kf)QDfa!3lHT4ABSE"Rc'`+#5V
e*h!-CI-l'C*-abGK`@jbk,+kTPKEipLZ1cjXjjSlkZP!Qlml64P[!!)bbCL6@4*
M3169rl@M5TM[c,e[)Ur'XBTUkp@+*p!Q,QcJTL8@Lj(3P+0aYa,q0YZIMK,edGa
jVj,0ii5'kjf0M3E`lQpfAa*4hU`*Gf5r3E!P#c"lXm4j4dkk#SXVX8G6JQm$CE$
Mc+29*&Z,phRrA'ERDZ5e*d0!)-kjf9H#K!VH&dK1hbf%qFV!fiQSXmj3!##dTFi
,dR-mqTQj1d#""%LfIKA3P*2[GA2IV8qdRU09Ecjj6[a@!a#rC[JUVHR4h$)4$PQ
[[cecYN&cCSeG[R4P"6#kR%-HeqYL)#%c0G[Ae5qRFQIJKFN0e$+2$@QK353+C4e
RbPVAK#6L2S[p)UZ-[cr-4Z5eVe[R)`5LYcEpp6,f[MKh8Ia-cTd*$@d+R)Fl`'p
[QBae1VJa@P1r'0BQCR8@[CRJ`2E8LqNZp2M%(-c00q)JD2"SY3#-)hTcNXc-F$%
FY,YmE00&hbL8'`dkdd[Ah,PDNrFYqFrk#iPKl8A&+DV&0JlF"%F3arMM*Ii&&LF
B+b4Y2TCX5V3!Jr*R2PSCfQL)2N)11C'EdlHNZBfJ2N-c)`M6Rbmf-fF(r2F+PHV
1rQF6(MK-A3T(L5UHTC1YEQcK-+*N,T`1i0@D$RPM@pbh)KHVm4QdXRhj(m`I1de
6E1r0BbAUMU*+Va9q5$`TfY9TVeU1&l@S40)E0UGMUEl+i"EJ&hGJHZmUMPl'P9,
!)lXm2bb6mUYM5p9A"YbjFh1@i%(MX-3AG6Dh`Vc`E-J)%P#efR@@ViDJhpK5*Uc
2j[Dc[5U"a,,[+JfX-N'1H%eNBZacd!#Y9$HN-V%fiZc+(9'Y[Vd#Tfc19e5X@S2
H0dUXE,**b0M5Q1T9h'BPPYdbahZBr3F%%8!34)l&Fe&j9L*JLL)kIMjMc@"iQ+,
2!$cLp2HVFfi,GcQiGb#mE$5JEU*-cX!NM-TGpAEHL6jDMci@M2m6#CARVMPN&(A
bEchN-VF#I'!QZ'UC1ebNTXMfZDQC''aR`kT8",TkF5"Yd*cCeCFr&pBR$PGG`PH
pa'5K'AQ*q8[-J1I5f`mbQFFi@4GIRrX8C+)&R%IY,hMLm6MZT'TNLTQfNb26RZq
A20PabNV2eM(2f0'[#N!rD-2+bY'@d8[cZYQM0T6*pPUB,9MpbYpb6EAJ+J&Q",F
@V,`4@9bYYrIa)k+,hK,JqlCXC0*3@Lf[A"*#L&XCp28Z5M1,N!!mDXkR'l[B[%Q
*32*4qGb,Q4"%IUA5SbRUMJZqk,Sqmm#@emQ02F&2YSe)c8de+BY$!9+XYZp5N!$
DKfm5DSRH&TZjC49*6'PA$V&'l32T[Q@R&4+k4+&R2V16jrFkImBLM*4RIjLhVVj
E,@5mQK*ZKB@q!iF5$Vj$$'%-eQ@%2,-ZR&a3,50NYrK,"1a[N@4S-,$0K39RC1A
Yc13,$4iUrf4G100,%h-!Y`"$ULq%"dH,*"3bUPm`ZfqYJU(DM8P$D2BHfX-U$Pr
9M)+5MPbeTa%Q)#qbF3Uq6K#P@2-mJb#@'c3EGFj"QK5ffIBS"HaZH9(S8d,`-,9
Y&b-*B0ThDS12Dp*c'i#K[R,B+q![GD0YD4ABhSKm`da6ZYFTM-P-D9F1qKVfq,d
hd([VqcI-%l)9eFKEJkL9@C5"bphY)6D00N5Jb4UVFqFpr'e*Kf0@6T*%rfC20La
D59TdGYhPAr%D,T1lSKQ,-JX&2rT6B@$f(PEVP"+Ka,0`cdJQHRP[@`Sb0jH$-jB
f#$rY6%Ere'pj&mbfhVK"eG,hVq`NJ,+aF9#MMRrC,B(eMMKZi#V(RA1FE"NZSfp
bGU[P2I1J6HQiPKR[CXq`R52C5Nlr[,VA'5HANUQ(Rld*rX1*S"i-HSERL)I!-c`
0G#%5fZ%hKkVbd+mRm3a3``TrM6CI,Ccb1J%D#,iAi1HjhQVa,aC5FaIA5V"YllS
bIUqHjqC+`p,9+*P,C8%$'c1XbJjK%N,@V(J5J!J3XT4%p[HHl0F&@MZL5SNQK2%
Sk4@VM2UbmM(84Z'D2r&[`&rHYHC2!S`h+kqH0kRdKe&fFTCp-#`,"(h!4CST1d*
"S,50me+#KQ+%pY8M%CkGVdEf))"#e[qj*r0G8fECZqAAfF"f2ea@cS2MNJJi%cD
1Zl[UDB(Sqjh2r5E*d+YJ(*9TI(#GMa0iM@5q0@er%M$34d!EN[&b9IJ%J%aTdPf
L6!16dT(NZ3GZ!F,c$JThNl4k%V$,Z8HHlhCbi8M[erT582L08Qqf'J6-jI39c`P
J&DK`If0NUcTGJMleQC%T)@2ZTS2,Dcq*j(pi35TIQ$-ZC!Bl%4T@,NQLK,DJ5iX
@RQfd&Se4Uc@SH`#Z)l9T&H#6q8Ua`&b9%#35beEJ#kK!PIi$B2lGFYcFb6VlK,j
d3fcKBLEPk483V1eQJ%aXDCK&C@PqHbhTXQh+6*0E8rD5(aSU2Y%VUAFBQ#P,0BB
PIeiZUq@JI"pk[XQkp0jbSf*V5QqmSC@DAI1SRZi8JkfA68p,YaN`*haI)`Aij@9
dJJ-@VB5GT$)pkL'F@cqG9Km6Si*Cc2pq'aQY9#qfBqB#*@S+c,'9f$[b$h&+0Ul
*beEK$bG2$$Z)%'6KkjKmJ,`2TGTe!Slk--NC'c5"iA1lbbc&ef`l(i`UlG+aB#d
`kJR['Hmr+lbr3bFhd'0aQP,f[0V(Mi(50hRmlMEbR&H)8Q249rLR$MK)2+Rm$BE
p2)6G2LTY60TSb-G&Um(k+lFkbTZ1)bjiK5M"USFC+C`l,PYZpp9PiQrAIKS90dK
R#XM2KE%Seq(9mBdqZNVRR'-%Z)21cS4XLH4@BALL,me3TDMLXG!h+V8Ir@[arMC
PmeFb8bZh@LcMLbDJC1G(D4Y5JXbb2YMUj6bK[(*F(@Bl*TNDh!2Bd`qFF94c)Y%
Cp$Bk8Gdc9!P8!la8lRik"ik-&fKTiT842UH9VM8SVeSL9KZF"XUE'D%)NdUAdYq
$j39'PAmqKh'FFZ(PX1&ChM9QZ#qqGY1KpVhZHhhARl+Dlc[2iCGp$d"a1(,%HaX
[pZ'(XfCb!hdikVG4+RAS@fb2kDlN*M8@@+G0h`5N8XREYk0K%D*AV'HlU)92BME
HUPa`2Cd"E$XJlZBh09TqB!NB#+!q,Hec&ePG!RTrlVl0frR2llVbPGab(q"eYS"
335#Q3ZaqdFMBL5khAVRXIM5C$bd`QJZ4L6$L)%$MH$HlhYLr*0Lh)9LK)JH"rTk
S@0*pQbjjH!X#`[[36aBQcFhI%Q4%a"-MZ[-aMTQMfK+X6f09`5l2jBF98F(ESeF
hb(DZ!*pQ0q,CcmTHqp40e"J5CmGfd)&5fM9lbKkLD@`["%P8XZbYMAFER&0S-mp
*#),r-0Zp[!r+kV'MLjU3!,5QYbHVm!61VEf%N!!(@L-4hJfL6"G)jmkZKQaZAXH
&H[[NS,Hf8($hX)T(e)JVE60R)RKY,CNerE53!&CY4`8i'YU&"2J*,aBYR*HKRdV
!H(&($D`b3DKi[8I4lLNhdj0k0mjj"KL`E%0H&&@M4kQLLPYM+cLLMr@0DHi@pBI
)DbX5&LKL,8e93BN,TM!Z(#FB2,jk*aMN@eH,*`Fi&[b!!&FfjkN`)",mDGA88dr
+9Kh1%LfhA,P#mm[E1TSBSBH3!1H@mam,mU5G5C,`k3G5heS,DEfEhZcBS-S)E([
qLa*piEBA#i"hkp-X"fDjjXGcS0HpBEQkb"MmQ0GN&RMqM(XULhrfGA3ALLj&BN,
"&E5)4&f9$PaLE1AV8-RFl#1bN3DJJLH[PIeMmbe4p*'1r!*SjTMb1b-dR`4mbJ`
SFDRqeDrr$k36,He*,8Y'-5RR2r+)FCD,d'G#S`qahlKCjXi%4qbDJ&Hrfqb!)l8
!M#16DCqp5JMRf[")jb*`pX)5ZI#MD8X[P"%VmHNT+raLY3H!%AX#q,1mCPY&c*Q
FFVirGL`$ZUIh4*9TZcIIEN-iP4%V$U)$T$&KP"$1'qDIH&6A%%Lf93epB)S!b9I
i[YDq[)4J0dB'EXq%G[X1qF2+bM8-',2JDjB#kk@BSMQT2cLpM"P[KE1&SaLRFf$
EkbcpX-aHGq'dC)AII6KGq1*#AqU[@U!Il26@a`TJi#AM6"Dd5*@U"-IjeJ4TbLR
Tip+i99KT+YJM6DNM#[@GKZ['@dSm3#4#Mmd%SDLTVblVVkY1)R@GmBXqkl-VCU`
P+mF`l'KHPmF9kKBY1jb2K$"KUfQ!fX*61f1kcQQa,3S+JA49M!k@m!f$4i("JDe
UpCcUZ,Ir%T6`(M4(*)EAD@8ZVP!ZeXP!8"`MK"L#%N2VKJG[QjKP52eKVkLfNGZ
LkFk%lNG-96G9#M@*[D-5AFFID-b9leBUATPJre3EmDMJEdT6rI%4cX(&YBDhI)`
F"'2FTQa"C2L1m*r[e&'[GGHR$D`S3Dh&PLc)k5`IACCi'2%qbT[(q[6V6T+EpBI
BJmeA8e$jPLaX+JKc`[AX1BaBH5$MpL4ChmTAY&dl&APSTkcT"jBHb*!!@KjFamP
MR"Q")qmEc1KAbQ60)e1-*NGDX)e*m5T$DGl&![S3C1&q*rHkJN`3ZP0$ArH-CC%
D!REl,bCZ4X1TiPb-K`%cBCU8KB6U5!fVYG"3cjZCiccr0dp)YdBMiUlKPK*pQkI
-,JU#ID(BBi2*G%ReT&d15@E[D'CjG"b9qG&`U6eBhQ6#JcjdBeELY`&hG,64iI@
ZVhBJ'`(ShGeerCpFk8qEG$N*e%R4,im3(!QPP[&`c*Y9R4LSU*bGS+rkNqP[32h
ME+,%5"Hj-2KFk!2QET!!dKY(4&42MMh2qI&PDke23SV-+r%PR+`r2aMm3!pYl')
beZC`4$@0@PfaPBDK!(Y&$fHQbNEXEBe%94*S@R9DNbLVIV`2E9`[r,dq'A8RQTc
dNjcQe5B21rkj1mqR$elYHf2A#LZrSbF+&&8MEaMIacIY$r%l61`CIri&UXHXi&k
(1G$khXp3FBc8Ka8TlS6U*2!)*bX(Ic1UBaE[`e5a9`UV*a8%ZZf'YbjDc9M2F&Q
[iYPK#p1&9+&TMFQ1B`8*@e@aRmhdERe[,V9IXQmJD[ZUQ,fLR`dIG%p,p6PGe$q
%8A1i9c&'Q-)a$PC+Lrbj$E9*Lq94VF4d[S5!&a-5RqdhA4rC[PZBU![R00@TV8`
F["YqA[&U,eAbY0eVfjE4U(-[#`LSY'5m+G$4`Bd-cMIBdTEPH)N*@`m0IBZ(bUD
4X00eT"ChjDG4ccZ(5CSH&@GDYPEGAZ4$-QdaRmA8K!@0f1R!6h1R&XrPKaHDNr&
*Xr59S)iUR[)L-"3SGHJErL989(e8'dZV(C'9-3e1T,#GMbB,V,@JGcZk(lX4EZc
RmFf,8DHVI!,#6XF(&*@-N!#(ALe8E9$dR6Nc2G(IG,J5%UAT0JKh'$I43[33AEU
B!,FI983dHI33D,Tp,)jJ3%3Fp`K9rMm5(XdAAEqdZ4$T@HU&eSr3Prca#[-L&XV
PTe(2p)HA1$,UfDpqZrBE8958LQpqEqK1GTF81[0a%EB(&a-m8%SkkjSIG%2[#Zf
Fp)+bCXP1%R9(T-h4-UI'm5lB3Z!bdIS9UL0KdCk%DS`hcf,mE@%)p!ep'B&8GBi
8pFBqURAKPVepT+HE)!3IrA@f,F0d`IN3,&BLkQ!p#3Td3SHrV)Z&"'C!$"qA9+H
!%ERX#U*a[eYVf1"AHL$c)BD*LP"f"r9hA(FLY#jSX8JkIQ-jSpF!)!@PfG%040Z
h8[bC'fV`3IFZN!#a42U#GV,#@RMBH'bZhjFj1rLG1`I1'V%6be5G@(h"Qe5Ypre
jh5T8brGMphHKmQYHlF%KHU`Z$&D8&-lrk-M0aGIYfkFJ1Bi[)RS`i[26YlULeG4
(,6b$caB(dhi*2ZmkbTS*5Rk`&IDq*cR(!dJCBdLfITP3FM8!2B*F%0$PlS(T(+2
**NT#m5rX,DA!INC@"@PM#X9"imLhlNcrMV[-JpEfQ+il"I'24$0JVTUhDchUZ8p
ThB3j)k5XYjV-6EYNX*!!,-rB")%aS%iB-P5kdBa3C`((3KNX9$pPJr``%TZ'@&X
l6`Y4NK0mH*YX)G8FRIr,fqZMc%Qb*B0rpK--`4ef!Y!95HYiBJ9NQIl)-$hq!8,
!&k&`!B[T$Ri[Q3!#R[@,c5G9VEbp8EFj(p`Z8J3I,JY%&SReP)bQp,jZZ2q!(9m
[Elhle6LA+E@4R$6hFCqQbFJb1MP86qUQG`3c"aPJdrD%!)@+Vp0rf89b!GAlklG
92[9FpT2`jJiQ89eDT+DMFPe-4)9ZIUhmkaeDGI3ia3(#3R-k%4#5$Mf!+"$E#R(
%MjP-XXBLB`Ul5jNUC8LKq+V!h-2+e6@F'$ER!c8LQp`Zp*m1#069MZF4fS80"CK
*$E$rk9fm-1i%B&q)mR8,8R&h3GhKdk(m9e))il6VK-L#%0N3U(!4QZ*1C2S8R!Z
*SQ0p31dk@5*e5h&jV5$K,`[FhAV&prF3C!Z2VEK""$,FNS#6qhbFTcCmBfCK#rS
cR)Sd26AiM0$(jhY5P'*C*d0F3[$Xi(@D3FjMSh@B1iM83GFh4k`Ym'Q(MkiC"d&
EBHp9fiG0f88NL`"SI4ar9CNrSTBli)+(XhCb!khrBb6LDI+$5Q`4Fq4@PL59QFQ
VVC!!Up`iq(I&eS`55!9k#AJj!JNS%G9ErS!DmfC#qI@@1a03M#EiK`QSbSIk3am
N,N&4-8ce8iGM#d1fHjDZLU#[lP#G5[J!EbU'G9[,Ni!&YY*#Th[2jBFA,I6EX2`
'1r03d+rrm9P,!Gli&SSe*k16JX1B+e'fG[Tp[`dM'VB4aaf[ETBA)1P+ilpIMpp
jhF(h*C&Q*f8@C@qHA96D'ejG*h[e'ZqIG8G4Bh0`S4pAFB!Ap",0-XNjBB#3!1Z
JfH)`m2peGc%aXh$hpmI+1cIcA6a(@p,bj4pHH"EJ-$9G2Y(,6md*&PNSf)kblfL
f#+M`SdFISdPMdYN5PQd&X[M+,INCbRUX[&ZCQj+(Pp%D$ETX'4DK!*&lmr`5ME"
L5h9"RVlDJb5p"KIf'%R(52Y4Xd1K#k9cd[cfmqXSm5ce@fFHpDm#ar*1j3iQ&lf
FQa4GSfk&e!,6'+j@Lfdr39h@alI[c4P*5S%'e#[J@XMmAkdV%BJ3rIVjA"c-bB@
3!!Q,,H-q9V9Ka&fh,,AMeVfr('hrfGA1J1kMf9bD,UiCMI`5@9AD9@A9L`liK'q
Q8YN455l0KqhYUdUjGYqrlRGE9eBRrm[Dfq-hRmphaF!',rDV*TQjBfZbe*!!EEe
Tq1`-m2TiDYh*YKGD-Qp1fMl)FBF4!GYk18$fN[ZAq8JeD4)Nf[5V1$%%LD0@mG4
Hf!Y(66Ch%e-pk#&VU9N$YX,#rMJG,plH"fQ%pB*cVi1ViCr$khl"pI,10G@m6`(
9e6G5P"+BQkiEjdqMLrj&hr[NETDY$NPldlhr'b1pZ-PlSA3*l2JZlqZTPfbYD13
B`kk[#A!%Dh$0f1+qpjrH",epcbd99+$UE-dkP`U)B&ma"TQ@2P#N&Sb)HE+!4Tl
pS#HqBU1(5i1)&D[G*XE*U4"b,'ERG1Y2*(kTVfljL3f-TC@QV55jSD%rKKTL[N3
N0,`#"F*#l5SMT01-C%Vh!Q9I'L9fC98QmdBK"IU2AT!!"8PSVRHDU#6Lp`HY!Sp
ke)cSU[M"A4-m,A*qV3UCbTBecEL3!+C1T!KrpTR+S%qSf,cr%%rraDURI+qXCS6
`0Z!A*1$,1N8#58&TdKKBE5%63E,,X[TZ0Iej"K(Q+i5-IUkR2JTjBh@X,PGf8$F
JJ*!!35LPjl1cYVEqJ-#(IQc8K2b,T[ALJq(TfjRhbUTpiIX5M*XB%S9mlRVcpN"
((TNm6P-r56`ATUGDRkIrm#b("db2fh!&QC[YfB-)L6(pU",`HN%LHJF!qDQE(hb
GDSmkRC0dZ1!$mCSKac3`YS$1!M((#aKZ$rJr[D#f&q8c,24)0#h4Dr',,M-BfEr
c,imDLdbS1c2r%JLP#1dX6c1-"+1*M2rc#Se032i05jV0fPU@m1&D8RS[a1PpQ*R
+PY'bZ*QaSi,4E0hfJr6H1M1Dd,Z$2V&jT(b2MbbNe5mmE!HGCAC(2#B*0rhEXF8
#HB2&X3LUA(!Qc&cc1Xm1I""Vd5UM5)c3PM2CTAH"23G,G-Q*-AaEIXC$@9QBB8q
[R90HFILe"DcME@eD4K)Krf'b0e,"%TLpIiJ-G[dNATFf)kC`qr8CS"el6kIT1RB
aK",b)DV3N@A,J!!6VTTe+Dd&qrrdk12SDMZ)pjLQ4hGf,NrG`*[41Nrc`R33Md$
j[FYe)2FAfl"EBU2ZcbXk5ShRq)"X1S)GNG-3L9YA`da")0ILJ$3BeI*$F0Pc+CH
8QCGb[rKh@CYbGM*4bXC3Hlk&CR)$$YNVl+#&ZJ3Mb)9pj!86acqXTi5dHZ33p5#
0K4UjT*F&mAIZMr0*lVM"mPZYj*JK0$r(L"m#R%I&CA8`K`'IC5d+$`GM09Dj(%a
"k!8hhNeCp)#Nba--+cP"2ZkZ@'!j4!Ih'1N3TrbPD'$+Smq)pIdV68B@0A,qJ%I
AUjd#rNcV)-G##@4Ldhdf-XfkCHPe"US8H-85E-,b[JqLHDGT(UG1Y`91i$p+$0(
C5JAI0#m+8+i"pH)CF93rmp@jYi98YNAJmJ!$r+lJLI`'raE"pC5-TZLqjL"VL`L
r4Z4+`HP8p%jj9&"89X,a)Q(qbjm$IQ!JEA2(H(QSY3Qi1%+bQF#E"A@A'pV$P$3
HAe3XT#I3q6H8`aI%48@0T(fZ995-0V&m[(3cFZbE8iACK3D['LfSFi+l96a@9U&
RVlJ!*@FYS9Za0Z)Y)Yjffc[AM)(3[dV3-%ePkK6J%8jY2!`3U%2Yk0K#V#i-NT3
8cQrS0Xf5K(1jTqSjEbmPH[hG%0pam4AKZMh$M1P#d2mr(j*G,Z0&KpcZeP5(R%p
5'G$m%PP9c982iB!`#5LV"FSClV&8Gm,N55p%1RT%e**CmB(EBrNB8"jjm2II9F@
BL-D)-)Y#fU1!Y5iSpC2U[ci''5hm%PNYBM0r4cJX)hf!3Y'Y2kejrldrGP"k9b0
DjGFSZ#rfjUAFK&Va%4jZafMNDPK30`'!3N(4C-eE3QMXMr#M*&CQ-r#rSSY(%Eq
3!2!V%Vc$0cjfeJpepa-&85fQl,"21PFIY8)b3JN$JF14A4mZRLTU"K#da%jQ@6R
Z)Vqec(-lj6F#(!qhF8AeqdqDU[5hV*9RdIA3+5*D)5TP$f`XhSfG%#5#Ld6@d`V
PTX3Vr0jZ*r+b9dl(PSA1k-D8E@L9GFG2eck!L$J!iiLJaZV'Khp+[pk1MM+2kJp
5T6rN(6P[BDe4"b,FkUkPjLh1f(lXm(ZF2,m4NI82leEB&8R$IDXppXkfV+IQcq@
(8Al"@i$+l-"SIJQd("Mki")j`dSr*%UmXS+M(AUC#Uhr0dc%4Rl%82i"J%*"f*9
q@dbf-844hN5dNK*NVE+,`B5p`pe9j*l6+fCq,@4Yr-m-"PXqf`[B6q(N&5BTARd
N2V1-Nl(1%pNDCBm)JCHLLS)Ypc,d15bK!%2$aj!!%qEelc8X-"3#kY[c#I9I`"R
U948aHp-6NYR+V[dY44+$DmeJGpPL99qDap-"LmIIa4Q*!SJ@XK0`YA$)jj!!0Br
EG5(EScJ*F2@G*M2(D[Kr4A4AHr,BheQ%CNG"96H$V08GT3C65(3FY'fM,I$9l5#
BSb-AC6#B[%ZH0cUEeBB@a,9pQcjS"Nc3N!#DR'Gd8dE)0rmBMh0f`+lhNr5IpB$
LhBbhkGmd34,Pc"(0G2C+V6#KKl0fFJ1Y'`PS,43Y5UYcj0e&Dd4dDM35F0,D`@S
JIq6mVJ8@S&(palE&cH(Y8NA@ep@Zci[E(GL@"ZMKIIQCbTE4XEM[3l@H9Yk'6K5
lL[GMV6F2'V0,ZXXBZ[Ei$#X'`li@+(*-$rhV3e2TH)6mMPP9F$0E#CGB%hZaSfl
'J"JHN!!J0M&e#T%Tjcq-#Z![%MP&%h[`lirl1hBD3SpG[f)VE`Xiepmlk$*9il'
4*RZKTd2Bp@L'd$L-`Z4ML[8%iD205dABYXb#`iC52&P2e6i4JFMMqDTIhLG3KXG
NMB+)2'SQ(*5PZrLCdZ6YD&deP"NSZH`YdYa`p5*JQjN%N9[ZNpIMjRheP"@QiEk
em@#'I[LThL(49FDm(2@E*qM+d"PLE%alQ,Qf'Zm0XQ4"5!bh0aHcVbkZGG(J89b
dV@h4`U9J98`aRTD4%NeMCbP`55eJF,E$685CYVB6,&Si[I+RTlLI9!EklBB-)23
T2TF3fI+T-T9U,r,bV"![am@&HqBXP&"+Z(5QFh)biVQhUG+l9A@1l%'T1i-9B&'
q9eb9Q9cG%5qD'EG[J$p!iXepcTR+PY(l8p-SP8ZeCC!!cKApiT9%[FkH$AIAQD3
bhYK3)+JdNG!4ZJ@mBCci04,+YZpqAcNp3P6r"d&jIpDFPRIA!Ii"-@e3qSSkC6[
Y"[ifr8#HU[c3*fhc5BUF"[Eb*S@qG4'48N+Tp+E&Va$a!HlhmF*hDk!EBG)ELql
YP4PiNX86mP&1,!9V1B&j2Fa!,Hh#b(pbBA2aCe4J+1j!0a8U+"Ai9N`20dF+X($
h)5YLh&SbD1RDPNT!qH21V$YN2G`h"6HUmQh[qf6"V90U-@Bhbj*Bf8qRD@SIQXa
+EM8Y5Mj9jC'(FXAi6I@YQ8Xc1[T"ecG(V#f&5l4U!IHmdpLN+Q"[NV3i*Ih6)Qq
5a",A'*'"N`bNcr8&4A"&6a`2$T+`l1+A+VqDL(kM[)*-h-8hkKAiPlUflEF9-lV
)VX[!$[`6Z@!G[4a"DbhBeiaFHBI16jSG[%3QYQGM2D)+aVGT!RHM&T!!P8X2q6S
K!lqd,e4Y@-V9IJaXH2AKVK@bSYJ)8mcbj8YV-6bjf@1`,,9EH)QG@Mk[p"HfK#8
X,BDLCHeEbL%jkbm-3YPVHELBJe&XAeiITV*H,%BNP%BPN!#!QaAXIdC02I[%kCR
+4m`D5aMT)9Nr5(S(P)`XTVfRcm,-c%9%)GepH!r@er$DZ$!&MkHrCRIS6T5&96M
`$N%43920B%r5V&fb2MC,K2@LE2b3!'NlRS)b%Lf)kRj#2cPe,q@6hK&3bf8B*le
`0RQ&MSbH06R*KLJB41im@M1kB)(*DAH4FD$F"L3R-Yf)@*D'kH%qkM3@%dcm*ca
Rp[jr8B*l$bll%KC'##k#K)bMJJTiMHKLcB!AUlhhT8))6889&bM3!Z2*CJmXVfh
"D-N@1bb-iqmi6*'#iK)YL1U13TFUDUE6[3!-hhi2$9P$(mNA8QX1Zq'ZQM)"#,a
H"heJVSE([(UFb&IV$VITLI5UR6$0ZP!S%FGEa[cZ0bGdUr31Lh,km6VcVim`D*&
Q5[!18MqEpk1r!jc[(A,2ZX(U3RTY%I5)TlGb!S$*kJL8qCEHC&a+,C3QPpD(D5e
d-[BBpR%NL0EmcJfS8JRi#K8+09mETM1D8JU,VDrUc1B)4rp#GGck-eCCB'52Sap
a,Pj0C#f6KrF1bTURX0'5[L$KbYqd262!HY`6EKD@$r1!hRm&RT1@9pqU8Q(`&[[
&k9,h*+kJ+E`49pA+4UpY1bB@kJbYM2`C%I@`T@-2$ikG1%pi8Cr&EbaL0p)AYUT
%Uj'JR#kBHMFd`ZY6l@&9URhlU"DATHNd0(N$rS'X5a[GbQI6E$AY&i+EL(e[I`H
UKR)2IqPD22N4-l4YQf@[JZRRKVc4NC!!0ZK,-L$ef5B9d!EY%@3bZYD(GCQ0j+j
pTQ[U6imQD#(NGFY9jH0VT[DMl(lM+Y3rNIA'Vj9l+kf)@Z$3G*S&9kpe`p@PrI1
,@Pq$&F2&Gc6$G335L&hI1S(dJpK8rDI"Q4aY8B8*Tm1h6A@LHB%AUj3Pp`Xi[Pf
Rf13,a4"`"k9IZHA+Q2[YeXl8UB1K@1J463D$(K`$RH0d5TmZD5*kPTDRF'"p#9%
JQ+hl,+Nq3#RY)iPV-NBHhIBZ'#eaIIVqaDb'Y#qpMU9phf0hl3ZD$G4N9eTd14f
9@eLi)(ai'*rVJkL$Ee'Grdmi9"@FJj&pdN&d28ri0K1IU)Mp[GM4("c-!Ne46cJ
"5B+kF0LUp+LL4BQr2``C#`GQ06mdBaFYmXj"N!#FRmY013@hj6El*R3"cE6&I1I
Y%4UfQ693,5h,`i`XmZV1)He6,3&6p+Gb1b,aGP33`U9M#Zh-d)X4[XL3!'pY-YS
3rKUECPA#1&3K@,ZPUJ0Da@[bm+R4,4a80fhqJ5AN9T3GkQVPBALFB&60reik&2M
ja6KpUKcCf[+NT*mBRc`Bi*P*83'RI2+RRldXTd4VqlJ,mTDX!MM#HYR"Jm+@$`F
3!XJF[[rKHd",Xl+3!1F20+6a14&6(V&Hb(jA)M!pe5qFGFM9JUh9`)Z!PPHq)J*
f#lSJ0dJI-K15UMDm@R,K+HicCZ((-CEJ%5iB$a$@8D`SB+I1@ZA+"U8[iLd$MH6
-1!deD*QhV*NFq#EmS#aV@@5(fVABQ!qmbAL(-3XYl6!fh9!IHDS24VDbl[+N&(a
(I@Gi!3pjj#LcZD%A@C,V'AAdlZIJ#N`S$682j1bR#AJ*Q'G0a45I(pmU0QDBbKG
r&"[Rh-S(CD%XZGapa*4KTahGf--Y8AqpU5G"aBFePSJ%hFq4clPmc3qmRqK2hP!
$0'#@bVRr#AUJCb'@4r2(S$i$#EAijjJT(r93b`k,PKlq&B@RE6qMXiip!aQXbAp
C6%J%RmVchdGa#E&G+3%$'mTH'aJK164$XYYNSIa@YdT35'abTPX'5Q"Rd"3#,4m
Kj-a9P4DCSledGUJ6*j!!Nb&VG$JiZd!8B)VQm3E3QSiEA*Xee(9KIVSq(CDj#Q6
XabVX"cUMimm3a(88f#+p0,mC8AL+*A'JH2EX*)IS3(kT36f@CR!&'(1V!13ZBD0
Jf$C)4B+U(6RFQCT&[C8j3F$8YBK9&12RkXI$*-XY[68hL3i(`bS2Z62pmXm@KCr
9rN2Q&Kk$Y%1e55cBeIiT)&*+QAqa'a"X*r8@2%fpHSAfTrr#Da05lRYDDj!!Q4C
"1P"qA4,N8Mp"-RJkThFa88Z5Mk`3Gb[aU%mjPR8(0`p)!BTeT`2Kk0q(`jeQPIC
0e68rJGdAHS+rZaqeB,%$2#IE6VjYLXZYV1Dbc3hNJi0GB)B3R9dkb$Qi1TRbYSi
I9JHC@%RJ5i'8TbB(1Gq'`QQfkU2G%8jGR@hLpLI!Cm10NIH8l5AS-f!"qRP-dL)
MX9R*`HLbG8DPdLjr6TG4h,rZY#%E0L5c1QjRQUC#mRK590F8SqeiAVa!rU0K&%h
fN39RZ')8TME#TU`rMbJAXeHqI'Ud&02p`EBqHA$MCZbI[k23T%Bc8G+4fVE"!`'
H(X%V@mT@`p6JMN6d*0Zk,p!@+FlIMSFE!e3d'95R42fQqk6,RMJ%G8G42@qdN!"
A2kaKj,QAMQY1Tc0U*9J$i*+eYP6a9$GC(mq(pQSF`BJ%[TP9NH'IP)flpNa3ZZS
hY'FT06I#$LiHe+aaih`*I84NS2cck13k(#"'mE2(A[B+JQ&i@"PE%l2(Apq)ed(
PYSHq@YIP2qZXK,V(dV,e"@!G045NR6ReQPC5Abe**!ZZ2!jPIjI'8!ehhELdP[)
c'Uaid#LB[dVY9I&D325$A!PSh,4l#E$Lqa8pm1A4YalXi3J2,AraMGZfReEKcHT
`&VHJT4aQRI'f51&h'TcMJqLY@(a)pAHU'6!10VCk[3UeV)'UD(irZec1[lcUA`Q
[$48l)M*&ac%#q['CK@6I@BiPr889rKUDNj)SrL%CcQ4`diXk,%Ab6`R11Kd2djK
`*Ee*f9eE6fH,dh!#lh+YGU)8T@mQSkG,cp16&DJVXT,q58)%CH@Mm*bJ"5Q9II1
T6@JTZ,dV+qSE6$SKVe,TX+2rpfd'j+1Yi[+GAAm9+qC0KIfl*["4BE#f9F`r5N"
)j(p@5TU)*#NIMSGBraM@kZhl"ReNdb9G1#aKmhcPRcUII(Y-fFmcZH#MIb+ASYq
JT4i+c24U&*h9jRa"R39E#dr#(32N()(M#$2(PaNjraXDkFE3J!b)*K$5Jr+YlD&
q@3kqqDrV%2ZdVIH%"EdCd@,T'0K(jQ0#e++ajDf-!bTLi#6aAPQX@BcAE[f,FNT
-K33f(FG9VUZ'a+!P!rh6c)fNHI305`ZK"lT`Z,V"Q[6H'1rDIXGYIc32X3qpAqb
3!-f9ql$H@0&)'+1rhe[pf(6e@kS5QAS%LHH)`FU9mD3l`Ddh&d5KbdQH%*1cAqC
AR,+$3j(RHB(CZV2lD@8YHqcfUr,EmUMbaGZSR%kphCA[('-l'1#p'!3M0S6kPJU
4(f'HPa!R'dK'2#5*(Xd)'@$9LS1bPK'`5*m%2c"$"LklA[b4T9@TN5Dj51CLa&e
B6$XFc6Z3!,**($5$CUMd%AfYj16iP3`T6lhUmBN%iZ'TTE``G2bCqlZXDDZ-3+M
G4*)%ip'QD'S!qH``DFSk16!Y5P-MqmQN&f+b%'`H(!Gb3d*mA&[9k)D3!,#e2#l
Z,l$9fQK"`UPKB%RfRi3TLMfhUbLDJP*kl&e6&N8YK%H4J!"AK$Y2&,jZN69hfZ,
e#[Nl%QlE#+Mh,2-G9R"`5#%1F#ZPE@D8)ZSqZ*Ma'J$-88Jd,'r&c,S9CT[)2PG
3pK4"I*+G["#BHe%0r8[lfNjFN!"l3Q43eF[A)dY%S$fMXj0[508RdVC9VZ`*aDr
'!d59!11hfJLe"YiJipY9H+$[Zak6Thk6S`De64EE2amVp@MM5"i#,V[1ZJVS@lT
b)6Y4ciY8L,rDi$29jLkiiHiHQ+k[-qTQ4bfe[ZHJ2&ilj"@0K1DF8D18VC4(m9T
'08h[ql1YH[H5p(mmUeR&eY)[RAKMKIa1A49'GYYG9'`1T5r'#-&SbB0"b$D)d6L
`4Y-M2aT'Q'eXCf3baM)1YfQ#b@-G+X"LK'IRbf@V1'#Yp2ac8Y*6aGi'DI6FdHY
fLHVHVmZFZPkAVM%!8Z9MEB6[pmhT')jJm[BZU(l$XP(LbMrQ$'dqalpb*@rcYlh
![Sr!peY46M(ef,BSF`bJKI@FLRjCdH!A&a85pUr'JB@Dpl9q$Cpi%0%Pl2XK0jY
LcPbkiilf--ek(bj9++I9EG-Ea9!2FhS)d1A5*Y@R`jNSlS@ZG+`LVl%4d005CMZ
)4B$4DUFe+IE!GD-pGI'dUS5bm!5dD1,[%1R"3HTK$9`FPY$Q80XEhK%URGrjN!#
6dD5c%ELVUHiMRaAF2RJG*ND5V59BR4!r(R9jd-T8IFZD(Yh-JlC8dKKFd,2)-Vd
U%meK+mA'N!$'A2q!dBDX,GIA%5CApVV9SZ$RkSC2CkXY!BRfm8Kl[$$TFjei4Y&
`bkEL8J&4qHQ2b%)@K1K-+A4'eK3Kq[CqR'S!G4U[QZTHi*jr&ep8cFUd4UY6PKR
"0$d&q&9[X"$aT+E,bjm-ePVhQqX"C'5'e30JaM"5AAI@dC6+"VPr*eTIVh$TMiT
L&k6%QqB+ki%LYGa1P9,E61Q*8+F&)$Bl1EMNA!#lj)rjc!pLQ09,+i@SdV&JXbl
rU!e,'TMkp1b5PDD+h0ZJ*F6lrjCmFS12R69*p5l5#amZDqAT,&m`iL'lfq`APP0
kb'`DTe!9VcJ,SlXV3KN+-"TF)#KQ`4+G+6a3m1Pq&d&Q,,dT`Cb,F2b6CHN8P8%
'QC@9CPVAA-USi8%2XI4RrU6Tr&-FD5lJp%m5SQPV-5KN!HkMX"qlLb'qK%Y+%Nc
QbHUA0XSJkXj@ZUTP*m"`Z*G-@bTZCAD9'AfL$RpGj+&JCrfd9Bam"*Z-T2pp[G-
49e(KPH(1RY[(1P[feTAdjB%-baEJG'4PKK%U&J"#E$FZjc@a)KJjfmK0FVDCQNL
i,CLj@%&kb168VlLl1@6iBNpDj$K-PT9i[qLf)E56)Hi@ENe0ehD#,e$bVl96$$P
"kG0#!@[pCe*#VAMISGb5Vp)Spf,XS6q"(j06DbAR#Rj*r9GJ1G3cF0*HkZhAJlZ
FV6IPY*!!$-SmkjPL['iqS+c&l)1k2UAdr#k!rq6%8N"bQKIe8FUULF08N!#rjZJ
iMGad8f1*dZARG3Kb,*NN*lC*fH"BDa"QVD+*D01mbhQEbL#*U4[D$+Hf5ff8H%G
$'93VE9e'LG`Ick$SBdZ`!+aa,M*G9,pb`3Y&2+r@Nh+@kDB02jB*`cET01Y`39+
Z0h@MB*`*UA+!jQkJ8()`&Lr0`RQSjNQPJE!E[1TjY@%KIXJVkP-00p!3,VAV'@J
[`(223N))M&*S3PMCfk#,fp1"lIUDiKSqa5X2U[95NjQMKL@qcNB#F@EAR0%$*4p
1V@+pjNppk6c[Jm[E*mZf+S'&Gbd&jlM1&VXG*6ce@hQEX%fX#ZK4fkJl-C6r6E)
lMSFI0T0+k'bb8bX3'DJ!L0H@&JFkmZXa6'aGF2@SjS(d!Y2QM*XkQ*@d!#N%8FG
0%1Zl5B%`5A,G`K1IE60I3G1'bBE9fC3J,ZrZ!d`B3e$XaU6cmb8l""bLV+Z-hLa
V'h&pQ`,T5dFH+'rQQ1NC,YfHXrID04`S9VkBPNY04hNpeQc`!#kC0q*Jl'k4h[4
dMF&hSBk(&5-dp55BNDZe0Lm@%lYK1q+ABMrG4dH%6%h5[r!VF5Qer2#0cHGp92I
M-UNq&e@l5F!P!91%fAVhp'Z'arCPTC[b+(eVM'IaTCPPbNEXmhk$i%21'R#IiUb
%[[1XiNm8#dj4+*(CirH&,Jq0Sp!#aVF2h46@DLY#!69#kafS5$S'E'$+-2q'BK"
r$li3MFM#NU["H6(*hfY*2fIZ!rT23V$hL!kkBIG`1mmYcr510E0@bdF#j`Hqcf@
1G4*H[PAf1Bc9b"T5,dl5pPGG#%fJGmK&PEB@DlmLQ#P0fC@Kpja+mlN%3e,20+c
*QCD#KRbMAFcp#UrQ60`S#eCkJM$#5KDdd4!GC1eXRaA#j31kQZcVL*3[L0-aX`S
EXf@)rKYP'@SKeG@-QAVJX'kGC5h%l#aU+M22EK5DQ4H[Q91[9CDN6[4+IrBHaXY
-Pd#f'iX'EAB6NZQ3!#RmJa4pKa3pmK8'h-5T-H-46[1J+pZ&Qh-EY)pIfZRNIbp
0q5c3LJieYjrIdq&JAC5CVcDXQXXq&X$(')P5L696K0#*LY1h&0Q02*GBS6XLjk&
2L%E-MDKM#(KaSf`-mDCf&*SkGKZi`"P&3LA+eJplZA1KbpUqYLbVAZHPSIrl29+
m-TFaaV`LVjN1UXf["8DjSS@UQ#&5SAIVP3d3U,r$kcR(b*qF03j*kl1$*#J1bFd
%eDPj,XAjJq%$LTkjdjGEdSm!2)p,ch!Y#`j-@AmBib'q6lX@DB8B$6T[2a*B,RJ
RlKlm%611'1,[h@,d5[Frp&jCBh-1S+TB1TFel,Je#rLhZ2*!p0NBb'jV5FALa`3
EliDX6R)Y&5FDC5M"CFV+q)ITl`+iX%Pb&Klh1BhIrYq8Z+XM)40Jl`NT2(NmD`r
DG4K'Dap9VBi4N!#8MhT&T+jjVic0UrIIarGH,H$*!L,ibRFB(*)XT'phMje9$fl
f(1HN+EN0DKmrR3VqXJ`S-R5hJ+1(DG[CK$3`8PeR4`YLak%l2"j6`2qG,-`aBBB
JlVFf)3Dm#8F,!)$@U((M*dQCApGqVS"DFi&R2@0D2plBQ6l$5N``'6ThVm,)`VP
Xb+m@%!R)j+$',V4&P(DJ,I$,A5dXN!"!+M$3dMGSaZ*IhifDh@r$Z4a*&P$j%f-
AhVhFHG%VSk)9rf6L9@cX["%J&q45'"&I"kQM*23IfkUFCK2Zpa6!rLkd50XPUCD
TU2PKeqQ*(khla2"aBp8F6+lG"UBbmrZ3!%DQ(PCM5G@DHP(MpdB5k&a"+I6[KR4
5F!jpH`cQF5B16ecFj'@`[Hl'SMVA+!bjT54TQG+FMPBqG(lFZbqr+MPSX0%!abi
'8,+hLMhPh8h)Al(dPFP2hCBZc!CqZePRCJD),+MU2Y9FqE`D!HSa+RP6A*)c-5k
4%08&#PBJHrm"8VTj%G+m%Z!Er!&QBcm[k&Pk`#P$S`9&SjceJ)Al[QBXT1@j2,"
TN!#LXkj'#$k,K6mHh4@FK$r'*IN0Djdm5q+BCENGHrL'mlQ)r(,RVl0%Pdl@RN)
YBIR[[l"RJ25+F'cr8H"iZ@SL&c9IF`UKZm331Ad*(iZXUR--lL(NGFRp6L5UA6U
ZYjh!(XmD)N&,EqP)Qc*dlS1Z!19YlAerdjf4,N2eAmY$MGH`rLTYP4CTYKkbA(h
X!$f%J+qIJ[%34CdQbmpiZ9Z9!V`c(Llk3DHck"ir$T9D'8X,60fc[qaAViBY+,6
rKa6beN6h$F5QAXbaKNJ,Y9Jl@X(+AVqGQmdXRpd%IGa'eBX#3G8GHUhL[E'XD1$
,$FG+&VQQT$eC+qQ6C5'LHQ9pK8QM0dPS#%`pICP-K$H(I@U')3#r!48L#H9a"Qa
#JLY*rfmjrIp[a6U0PJL%k@NV")Bh$a)HTPq[(fk3!#5e)f(KS+T@)8D0kIShTVh
*4NQNp8II3cUjU"VjA01YQZZRYmEdB2FCCELEB$INYPik1Ak(&1KerpQDfF+8`68
MiFDa32%,+5#3!!Xil2JfZUac,l$Sl8!bd8)+A5rbdfDA5lk$("cE`Fm"AFL@l%U
(9H6kb4V"V!*[`D@AmBCqIj[G`lI0e(S-RM1UHVNHAA-H-6[N5-p6Q3p6k`M(JbP
Fp)kfe**4c%)$H0QPM63S26iS4$i*@[d%jq[9Th5jUZc%rjIJ#2FarNBEk+LQ-"3
YcqSc&`iY49(mV[`0E[ecUhQrP1fhdD1*G2TTaj+lDqf10,M(3XL@&,0E%'QNfd`
933Dk1B#Q+i46k"rF!*BkQq0dL!k,rLA2[PGi3DDDpG)@6XHIp3D6@N@&,r%1)-P
9FQ-&(X$IVIC,Rq,R[4D'-&5CP)LhITRPdd0U#r2ZlEa39q!X!@51I8V[SmGJmkI
c%i10[S+D5VHdlQ0'-`a3@Lc%f[A4!A`2$Sj`[X@2Z(Zb`,q(f38P0"[2&TICm@j
ZFEAipLmiLf5eDB-Q9MKC'D-q4D2VVcdX2CP4XdU3!([Z"22RI9j2P3iq5hrc!rq
ZJXce#5CpEVFjm('BRIIU-!SPUAZE69&T9HjaR&5`qVH5kNJekS5XP,"EpYVU!%(
LP%hH5QT"U#51BmH[b8JH9KPY@kP)+$If``%c-ae%%XjShE89BaL0aU%#JYKGF$3
*iHAPFVH(eAB+hGpQEMZQB3NfhJ@Af+&U6S$XV3drLb@9l`F+-r,chk3[+dM2lMF
Mm1#G6UpJVLL$FVF2Ip61U[%%FHmiEi'bj3#DQYrQ%[HqRApXXMbQcic!JEZSbBY
H%Z#U5lKC8"68159"'5L[khf3!)R`$)18XYSr4AkNAbhq4XSEfU0L59`AXQ%ZlAf
%G1kH6-TYZj)@3*!!%M[6c12"i8p6)HL@!D(9PT50lRMpc'&EN!#$bJRkmb0B$&@
K`m6KI!ljcYh6,PIh2d4+i*c5B5bLXVCGiGj@N@+UL$AL#U2Br5-d&Z@mY)5D-ET
'iJJZPD4UIrHePckK1RiUfB`2!Pc)-d@q#QHCV2+UMD82Nj&CqElVbBR"JKD2C9)
JF[GrS`UD`1p(+rc!HB8MRpB2r2jXMCU%"XajVU+GebY!(PCh+XI!klfQbZ8bl4k
I2@aK"(X@RPPl@Mk)N!!["2PXSil*,+,HVRkp48942JbN*E%8NXqSrB(9QB4bAGc
X[*d-q%0mFL(BTY6F6liY4IM8#VSkYRdT'iqK%Y2'6e[iEJ9)LQdJ5)Mq6VG+c9R
6ZlC-CdU'e9Paq([m*RZ0ee$k+Z9Z-4CG$1BGGXIc#MIH(Z8aS%rTb4U@[6+T*AZ
SUaliLL3f&@@hEjSjSDplU3#faZU)6-rp'V0AfaB[aMLK*,6,95AL00-E'#[rm+c
pH-U%mp(3YL1!FDA%*9PjM'G&,U"dUTR``'L8[*A3h'i'XC9i4FrCEM6D-,)bhJe
(j+2f8XA@94f*frkFC)DM[Xk0#6)Eh@VeLBfQ',DS%R+!jb+aMIZ%P@*)+ccb8dh
kLJMXGFXEa3LmVr53!%c-'ih+Rrk1pC0$hQjm2lE$JUMemZS63cZi)FL`Q1m2Z`r
aT@V#Iac0KCPC[13dSDL1XJ1jkYbTTD&d1qTcDR(ITECf[G`ba13$0QJ8L!JA3HU
@!K3P4CIZ3&+54R-01dlk(l0E)qa@e6D[Z,UX&Fdf(D8)D!E,d(QFDL*1FGT0QRM
E+0HMCFm`3dK2pH1H%iG5C@U!REbk*5CDM$'q3fEprZKqr5l-KBNc2P"XB+2+df&
jZe[YlC,1eT+BQ'@3!*&U$VhAT-5dmPb4q005V[#)Y!%U9GlQ)@lBC$"j'5qp0UU
DP52hSJ3acXK2U9(6b[@'(V)M*D%"4j51FSE$1r&!,LXckqEDR$BZlj)Pb@kV`K-
D!8+9RRSPj0fQ"2f*F1&+A%*#Q)Gi#HXX'V*R['MK[MZG1$+5C,UK50@Ma`PZ$(-
LV!'"BK3R$2SXT`8$`2%RE[)NIQ+PV')P,-iZNE9P1,+cUQiZ51DhS31$j&,Cdb`
JA(TNA'-idkj`C9edH*%HSHMY@pmHV&lZ,N6q$iTA@eP*ZQG[CjE%"Ie&Hq$Vlkl
(%i[m"##*!*ZbEjUf8$Hb$,hV-JfK!5kmprGRGajej9UPcV'Giq@20Fq!dK%[4lk
BUApHVGBMfji-b*-*5KAAqjIMKj!!0bf0ZfdFh2@He0Y+eNFSp[81L[p-[cH(Pm*
ARj*Ie%llQD'r$m9YTP@XF"k`c&*`Q[c!,3f+!MH%0!4p)"l9!e#1@FTc0m-m#,F
YIAiq!*Rl'U%Sl"F[+IQU!TFeNJa`@8d0pHbk)DP@Xci8AF)+6,icKqFC[ZL+"l1
1YbE[Rf1+#Qq$d+$C)cAUUaD6C#3X6'q[XHZqkqP0Im+89!)iD*A4JTTA`eZiebq
cd%$e(h@EAYk5JrXBEia@-mm$f&EAZ*%1[Ar`qV+T550EkYeKDDY"J##q4XM4dJS
jL@eCq+N%,adibhlH(!RUqM[-8bF2Ec1DRp(mRfejFih`bL*HPUTp1DirEl!2N@f
jLDq6rNijdC'[)2I3llGe"BPepFBIXPHQ2AA!8+9EV6cJ2!jK8QQB,K0akirN@AP
,NqJ4#Y1fH&aQ@3MC'Hh(6NSCe"+b5!D+X[,ND(0N`A,k0mV&l&#Ij`rVZCl(-*c
fZ8kFG!PH3r'"$2UBrkN#I%S%)$2R[8`JFJc`R*D%bEF8K3&FQ4CZmHlSU5L-NL6
TiIiej5A!Q&6kZXlG6,`"@%Y&erE'X#q)%X&0I6(ifiHi@kZiPl(Ak()KDD%0Si6
`TIl@Yr6KH9,)"RYb-JM3JdpZ%6RM*8)MRZ8,l$1bMmV4NFM46*EB*HQ5Ip"DSdF
N+SR[J$XL*cJ-&r6"iF68@fH&TC(b(jGPj,eP!RXKSPPNr3+J!B)AmRcSBfaFcR)
1@eVc--MPiR8JMp#ZCi)L#FBT,kf81@GB@qKp1("Fr,jXK%Z(pHYJ@kMfK3Rbq$`
I%K3cmZmQiCeL3FHjDI@i&er44S5f&#H'B9)Ee2%$+R@4j48#('G"1qh2$$m8Cr4
#N8pc+AX'#UTdDX3#FBIIBIdj!VleM%lkDP"bY5%IjH&6(A$L5PX8!T'Z-1&pHCL
![,6!5dfX5eiG3ThDlqDip54jb!SVT8afLMMLppR62a+ka512jYj&D,9",b2M'k6
eemr`"ppHr0+Dc$,QK38%T8H6[b1E,+qeHe@K+Qf!Q#abM4)#lB9F$S1l8GcYdRV
CUBHqPPY&)HlpYEpUCAJ+9bHpqaJkf6Ze$"l,D)4`1XMh9VBMe1TrQaBT5-$DSqm
b+S[*l2B+9ic9L&pIFU(VUp$F&Pb%Jl(H*$@"8["c&Kd%f*Hpi%6Q@eUk`l&4PK9
*EJ%Br("@N!!Z0('A4q'm%ZZp6%R1)SUFUDf1L9PXZMS4$X$dYr!8%LdT#FX4f0a
bYe@S2lIJT'V3bY$(Gj@A5EbVTNNHSNS!-aSB[HYGY-HM+SMeb2&#5+`P-J56JA3
UVA,FNc3Sq&1mH2j0A)JA,0j#bSJ*NU'1pJSmaZpA$Miih)JeEK)(36F#2qUHTA(
TB[%H,2crkQ,HbE9Kc4*!'Ifeh'i,0q5[qNJ,$@H!!@9i+@c-LH*qp*SLCEX1TTf
@Te4,,PrZR+*XE6Y,@MQ#%-c,9Y6V#)hcKVE&ICVl+l,#!J)Z[`6IPlPYH$fAHT!
!49J-20R%c,PmG[JRmh#[M"h($me+Nd4M[!3MIBMBp"1CdYf8r@@0ilKM#q#hQc2
J!Ui5U8fZ,LmMYhp)[b2e$B3MXR4i4Ya5R8N"MCSm+M*D6*efRFYr0Z"Djd$@[q&
LSkl3U4f&J'0d[H9RbUG6[XTZaHd-YFGZ%prU4e-JjF&d'Clq1GmGGU9L,2J%YdL
9$$jG"!B`If60qcKKM@$4C09"RY#Qar#U*9h&k&-pSDPJE+"6bKP*RRU00'-6%b#
SRB2592M(4FKBj,6b%j9Q0&4-4)MN"GHD[*1ZU3Nlk'Gm*4YGX`0Zj(D@kef6pLG
3k'I1A+I0IHc8dS(r")hm-[[60GL[1d0'b,e@*lm1`cV[6MdATkG',dPmV)J@qX#
)U9b+2CXJYjbKRFcfBhkE$PS'&PEk0G1,kFU-FEa#%SP5(d*j+Kj&&!NlaK-eE3m
&4$3Hpk`JAE`1Km$bhl6G%he[LNQ&D233UR1E2S0Q!T!!BJVc4M-U%N@B`)cP,4f
r(L6M(HCppq"PeU8%dNG`UT,FVG%9jrfJHLIBpKTZSj6mZkcc`++98LjLbMpYRdN
8#1j#r#rM`jJY1d+J#JlE'#Rjr4IV2!Qlrd(-+9pY%N4UaP9m-"8(UV[V8iYiBG@
`F2`V5rD5%1pl$a@JqpjJ#*&-jYB0@%jaij-@5Z3T,'l6Y[FZBbL94N50RApa!Uh
MaC!!lDIpaD!'%FHrS6V5hMlId[1P$JAbqH9%IKY'%UABXrfNAXr(!)DrNUMc&Uf
I#R+3!,Db6UN%aXElNIb-!&CT(@9,f-e-"5FM#$'-fPfMc5b+I`J*P(YVS'UHi!$
K-Lhj+Y%,4-mBVk-pRF`TZ![j[GVfkekEPa,C,e5f2Rc$cE10e4eS9X*MeLQ%fN(
b4Hl1di%q1Tkf3Vjjq[9d9`IZB[hFVS6Jcrjh$Zc$(LbC*(F2`VQC%h8Fj8qbD1E
bAcN(ilBS3a3Tr3S'K`Y-[d6MN6+kiqMVE2U4XbJA%IE2!dM,A4h-khm#@1M!c@4
5e#mT#khMG6q!-*HP(bpEAG-d-j9VB(&q,!4+@@cQq"K!lG)eL#b2)*V5%9P0*Nb
Tr-#Fjr6FUBZ05QBK$,km`m4+YZ5#%aHY04q+)'4L6"KiTU#r'S0IUM),G,-8@p#
H4q*[Kh!jNTMXfkLV*$pdFeGqV#PJ'+%9f3fPGKekScMAb-F!pVJFcjIL%b4k"S9
R#9@UP3"(GhPS`&2*cp[(H*e5bSC+6JJ2#41bZd+cIq6Q[i40m%j8U5XLje5bGpI
[*9Xdf3qR%UB1aPX*9%2!JTclE&c3$&!H'6V@XIk9,@V%2cCp2m54*9`[d6+ld48
*Heqqe+kSfG@E4Z"23#a'BQlmS)'[pi`3pfhJAiQ2YmHFMcPX&`9Sb9V'*ePlL'G
$4r[#3(Ie5b[*@maXY`-ra3B1a8#9B89mKql8c)K1q(0l@j!!5!G!q6dYKeYD*)f
05mbReG0Z2ME[ebGDm4`8bm1@5RB55[mT2h2cp%mYa2i8(E)V#D!'%lHD`&bk+JH
IVFkhMG"*518HMMXbqk6A[$&KH4$cY`J%!mJPB9S',"&EAM!-4k#EXe4P)'"YefZ
U$-*S%kif-f6G1rJ!d`Bb'AlJ!MK$%Q(!H,B*m"N%+Z*2(2Raf+3#,ecELeD8a5!
%KQ83FPm#B#@ZfmblJGpfM%SJN@!`U[Mcmq92D"i&9XEM8DkpepKX!Eh[f8m2)YB
$QJRlN[LpKmN#bVA+C"h+Q9IENCph(M[T,TB1ME+j$l9-5!iG@TkAbSRFCQ35kX'
jUrJM,(ScP"l@(F@3!%DcP4%f)FhBQI41i+KA5'BFhK4''IE1Bd@+-)@#'p"J4DT
Hd!Pa+-XAeA61mS!fdMfQf-kjbZ*#PL#iVfIXPfK$M9KjR!fQ`'KSIMeEj3342U'
RUGQBMd)4,1!UP9C4d5GLNeBKP&JJ2&TAK)he+RV`UfG'f5QRH2PcpH,'m**PPr"
M+D3Y#JXY(*!!5ASR2!AC(X`[BCj`QE%6XEXpS@hAYVJ@&p)dpC!!r@MGC0-(NZE
PdDfRQXDf[fZ@EmS5(2K`'bk&I'PHmiD!UIj-#"05TcrT61C89*Xah0C)8cPXX&d
['[$*Q+3m2k'*eSHRSf95cpb4%jAB[Y,Ur0CVjH*JL*iXLYYUeXbiJG,JX2GC6&"
JXPibE04'4"Iip02ml5Le#Nlmd+ZmI+NRQKQe(1@YABRPk4iqTpf&j3'ZNjjC&$*
XpV2N)kJqM%2d`i3N"fl`4RrNr,hDPYIKBX$G&b!`jDk1V4568rPX'[6G%iJiA6j
$)C)jpHqALC@[MD+p'[TYE&Ik)N!EkcdIDU8)I8iq[&cmEP!%K(-8!(jY$lSN2cZ
+[30-@IN#E6LihB0i-+@NM9)1KT3AVD%@*YCG+`VP*Ljmk)q3!0DAH-c6`4@J@f)
YJZkZ[Nk$$Z'cXpB*C8LSi0A&JR)Ac4ZCUF$B$pj,$Q--NXaKBLGG(-Q(,1Z+h23
390pX3D%r&6Ze0%SBCq9*G,Y(LBJH+&!5dfcMaARP2+-'jmFi%N"ZCbLhfFJf5Id
GY'4+FZ4,$bq&@304h*k3!$bBQIbGUk9j*h+Q'H[[B&,1J,)-Ra,IZTT8IdhDE'H
p[8@bic$B@i'KBphmfcl5(VY)XDECC!UIb",0A[mBF)3)aKq&82[5Y@ed1mLZeDR
TbEUFK2`B8mm0b9dB%[GR1,2)+fd(KF-ir8C+aJmCHd%Mqa'qX%9`aYITR&GrGP9
b$RRE#Jk+M%MU#AmYC&(Z3XVXQCK@)JJ%mD)P*'pUk`aBiBD@2cFMXkLTYGRAmkj
!GEr#VUpUe)KQ0*)!ZUE8BLPMqGm*eaYX$JbPSqhmEd0Yi[TYFm0UhcNIpjKqCP"
ffRlAM3@9K8VA$%IeN!$p6!E@+FYiZU+&$0VS5'+8jAkIdl8KXSa,1Qa`fL,E$0R
MdE-@3el&QZhk(YI#apUbaZ6l19SC5J@TKpV4'8"4(k0CMG"hjND*C15)TDQ2-c1
mb-q)I-*4@Mq(I5+TfRBq*jrlG64jXP(Xj&U9+eqi!a"pBE*m2M),UX@886mb*XF
H5YKFmhFUd,VdDQPB9RSB9@Va-jh`I)MEZF[K-8XbQTfG)XB$IGjH[5rd(%i!UAV
a5I!4RcT2*iDC`QULPSZY-REf333KV(Tfd",!9I8GCh%Jf%"0a2N[hI*I68B*dHf
T01GV8!6dhiA$R+f29$a`G56`cV)a8GHC#PkrjBJBGkZYIlKS#Gm(1L4+fQ`N(2[
G)dNiXjbP(Yd*DkREcq-iH2a4aR1VC5hlliA3flRKqaUrG!UfR&M'bJiS$A8'L(E
"$4RK$NYDJ25&VPLF89)M&(F1m89#iAiK-5q9rdZ'*q8#X26jDhm,$J#IcqX,S(q
JD#IVZ(9h2b)rj#B`lfQITl&QLdj`bqS"U&[2MSkVGG`)dB8Kh+LDP#5YU+M-0VR
Dd,r`HNBCXdTDLJK$0-&"NcDd(j5[l`JhEB%jKqA35mpk)L5#kM6eHU-!dla4GkN
KY25dY6Ml&8RlehdMB&3D4Cm6*cKeUR82QPG!IhPF8FM!BXPAdiL)33HH3JQ'V55
jd'&-bKh5Hr%)&(e4IDPYbRYpjSDS)EHN(5Gf[m9r9'kRE@#II1RJhJK"%$-b5E&
[A"RBEXMM2-Qpf-&rA8p6*r$)#!IlqEQi-9Kr+#2S`GCX45dEdYp)`SY04(2VkV,
SM$JA3CakHZZGe#4"%LICbme4*0d#ArkfQR$b&2[4P+`(5d(Y8De4mBU-X@#r8iV
c4T6UN9bcR38GXQ"Kr%iGp!XXU1UISHdm'Z83$LrFiSLHI3@Sm3RX)4JMNVD(k&A
j#S066QST$irNqfc)'()J(Re*ZjYILp8'!)JD6%a3G[4!mKMBr(YmL!2AcTPE,S6
9M[4-hap3SB)rh`34*I4f41G("0e6Vm+A!hpMLl-5iN$L!0CSU#ZGSedTlc&+")0
E&E-BKce$q(ql%M2ieUTF4N+Ke(j,N!!M(e!b$bG@l0`jP-$Yh'TYK0QbcEP3%e3
qBU(QJVCPd)EG+Hc,c*iBhBXa9d%5F)H2QpU*+0k`,Ql$e4epaNQ-H-XhYi)@iJG
0Jh[qDK&`+9l)KD1R"N$MS8JNJC-lEX'QPdb#rNk9&(P(EZVqb$G)RPcSD"NLFLU
GDj*RGYaG34BCVbq&T59UT)3i`09N5F#feFk)a8PpI+E89P'"010XR4CB9"[bdc%
3QBhD`MI81PKpCd`,F-Fcj'Xq[F),M0YBlCNemN3$5q62MC!!`QEe2'[ETNh$(pE
BJr1AcD"#lm6"AR,PU!N1q5HX4T``AP3B)R")2F3%eAJH!Ld5*+NSclEj$Qi-(qk
`29m,I'r-SEfALmQKZcjZ($dSVi`!hZ*,RZid#3h6%(3*rdLF1P8!!AKHHRBe'Cm
1GPI)Ke&c*A80`G#ERhSRhX%f)fkI3)lYqdNVh2)biVNMec44c"c3VD3U9GP6E5l
9[BEG,H!RM+8LHZLYfP@K2!BmFNN4JN)T*HNN)"HY0U1Yb!0P3dj@*M"NY,pIG'#
iBE8[M1qd%1fVC#RmqEQXE-16&BH2K5GbdJV&aC0J$PQ3!(NTA#)8TfqJMUm5I)"
K(h`TSFLc%PPdbRcHibq(8rNDEXlBj#BQbhTARiT[PVD@q8T@MrNG)XJHK%F#Tda
pG!XLXqGNdJ%Mrll$MDbr6lAAf1J8erQ*m1#EITA))1Ri1aQ3!*RLMK*5rMBpklN
Pl'IQ3NTZE%jl[Sk+c*'+MKG)!i-Yd!D5eaYSHRC*lKPC!#-Kam2ccLH"G6`i@#6
UdI9!YSqp6[5a"NcaLXCRhVI2VT,H)C!!55I4GqmR45pm+#c%C[MPGS"KG&-04Id
"R+Ql"Amb#Z43f,'X)0c(FV5-52JN0JmCMc"&@J"rFe&3YUp65DrJVmIlTK$"Gp"
#2I`!re,d-N`j4PHq1AZ@+ChCMkPh@FaqYNSh`+SKLqr9,p([i'L)eB!FTZcUmJJ
IRY5D@`GFQlqLj@epmr8@q`djRH02"akLM(a,$PF6d&(a)P["c$jeV[ZT49DS*3V
Ye2`Z8KJ'U&k&8[-jXb4&h-'Ic$*rFhI##PMr)4ahfbl9"VJ[TL$51IqDV6AFpjc
I4I0IDb9RcGp!4qkEd4NaGm!MZd,md5BH05APdk8DLUS96bB0!F80S9BQmjdQ5Nq
+STPH'Ve8C(ddfaeIGd-,j1G4GdVBCZ0Sd[$DU(9!G5JrU2m$ZPT`MrKjFZ$6b&G
cNcbqriD*qk+$eF'VdVPi#l&0q4%a)AT0'qh-8IR*1e0ATj%j)+c@F$erG`YHNL8
U,!H#4XcD9Kk(d,5rU"4rBS)6R`!8RkPK`E1S,PQi8dpG,Ma6@L#8J%F)IhVLFBH
8bLMF0KXbk$#a`$!h[d5fJT%e04Ll-5,pF-jFS!)h&$54EZJNA&3p[FKh-LCVT(d
dI*LQ1UUFZ92#*hmMe@A-6qM,%#@4JbAfqI)X`L(9AQ9kR3f5eJ!HJXhV86(GN3$
h'j+(@YPe%S+3!')L%RMaUQ@iX[,46fh#mhc`["e!0DSd80*fjRCC,jbYIV!EULB
j2fP2+QEd$E4hh+5HR)Eq!UGPMhcS&+8F0S5rUIUJP,KI%5a8L@aU8aH5AYdfmKM
BV20`QSi6f$fjJ)UL&ZVqa40X@-Z(Q@Y!pP,jSB%XaV'f%aSHB3kCMK0SP$f)Z-!
U#XTM*f-6MTj92K()he&HZ#dTDe,TH$bH(m',S!S&KjQ52&U&Yd$iB'#(A"QIfF*
(H*dK1"kPBQmRZ%GB-iECY8KeCQD2T2Dh0-6#KZN6aX8JVP'AfF6-$+)ljCf9Fi+
-4`A,cK@8(ULLmeJ48K2KBmL4S3-)#PPdkGpDmlDcFPmS&#[Nc3*r1L9S`U'hh19
VEXANG'XfdV0CfJRA"l0kRqXY1!bX$AaZ`Q[)-)p1H!A10V2$#Ll!KEUk%hA`Y8Q
jXmEGJ4`IRPXQ`B!V0C!!8kF,I)rIRpG4#@hMXC!!qj&5KjD8i'd2EFYjKVmE6ZK
(&cN$j`Q1YY*FQ'rqaNT`88Lr`-h0BNIV+YAfj-LYY5fd%G*pbT@q(r4qpQ"#8&b
R9T[ZifL`LRb@&Br##ep,@-i[*R1Z62k(USdahDV`[pje-Yfi"Rbd`LKBkSaf$kR
jLl-)9q36*PD&ajTF$IPJ"8f2bp2L%Nq'P[H!Ai4%fSjAJ0TpN!!eqSU"@BVZB!#
j@&23DNHa3('I-#p!)B8K`)$`qF25drNr$bJ1"TE3Qc!5L1`3k(GPb+p`d(HNeDI
)ZB`,"8F6Y8MpAH5(R5)$R)8&mDHR4"RhlHhjc90E!4p3"Y-l-KN#0G@i0lfc$6P
HA0Z6E"i,bk6Y%UJ')RYHZUGfL,EGX[qS2A+Pj*'XTlQ58I6#TSML@V8[ZlIkF'5
XZfbmMaAq*B[rClTahf0kdP"SkVYD3c6EU2Sc-@ZUG(RBERa&mJ&hEGeDVDL1Ef3
hTAII%"9Q@fEm)("-`-lALT1Iqi9QIl1J*ZP,(-a"qN"Md+A&BAhcrUDDYd[01)r
p!1*6[#I'iB+(-LPh'VYCrh03`(58jCfl&lG"DkaX1jq"*Ni$9Tkpb!G)-PU&8mU
GZF*UiijSeb5JSEk*c8+XqDlRe(JcX++)'9"8cVl0A5p*VhLMR*2ql"FRm(H"V2&
`cZ[rMI*+Y`dSa,)ip@iX5-'I!8&mDeL'jJT-T3D5XCH'@$$fSTJj9!b2qKHc%CG
R4i,IL9ec'A(FQiej,2`AiNDE'V-r+K,mL!3r`E[`FakrIMq!$'0AEe'j"q`VBAM
J9A[UGT25'l!D6Irl8`MK@(UK5[M04[LGF'CJflQ['j*8KKlpBffq@#0Q`8"T3I%
kEJleNXa"'h98lLGmEaMHYe@Bc)E,NP#f*ABY)DHY[DmY6m332,qr+%eF#h`!6+K
jJfe0+1d3(9RTb0j(jCVGA219%0&Q(F5S-SFQZ!r2%i-rb2*C'F+p-[4fe6rbVQE
q"5!hhFKVJ(D6GhiS("m`6AM%3U$Y&r,!pk`aGrI5q5lSNHq,R6RNT4qh[-(k!S1
F(!qefQ!lCCpN#""BK8cV)L8LY'HP!1*b8[Mi%&T!cm*3$(Jq&#%eAl9VRk4p9BC
N1,kS$3HC0FhUdKU8I2emSh'!rl3AI&'2SmqkRee-JeEjarddUGT[Rm'TK$aT2Gl
@E4G&PMH0hDbma5DFDVN5ES-pM#JIb-2E3[D%dL%"XfiP8U@Pl@6#Q(aT5EA+KTp
R"29,Rfd6DY9EB0$#!%B!b6$PqU8m5EAdVUSaj96+`&VEc&M&eaqU1Y"%,$+mRFX
N9B!MaI`6@"3L#N%keMcPkT&VIl0!%lJb`U()(arrZiiX*L$V0(DLdX&B%#$Gfj(
Ebr6"T`X`a#1SD5Pi`HIXb(AB4VEG,q`eQD623SY6TUHe'iPfmpBH*I'CBBISh@-
0Kr'JNUF69"2lk*ci%m9#LB(plCRM+6!hRQ@*+)+Vh(p3aCPdk(Ff&UY!cR%&9TF
HKH[HPl(Pedqfl)X+[*%S+Q`Z#!r((-QEm,9b%qUqJ'pDCEKYZ[r1!hQ56I(r3UU
jBZ+GlpB5M0-IrGDPm"XV)#JYVCAKKHl0K-)kFeBhVXd&3bb1NRB$MLTY5HR-(j!
!b`T32!mIPk+2Z6Q!E[I&e,!3Adk)1QPCC9#S'VlLR6`TmDKB4-3UplJamRi8hD&
8DAJAJ"iIP19GdMN-jPEfTLT('1j9q8q)pLph%jSZ!ZD)m&0Q[R6K9c,hQN%E0Tl
-Y6!jN!#TPj`6kL3@!9&fj8SNk&4VKb`BU(CRAp%Cd%IB+m-V&$XRDZiqk2NH)r'
m1,0VAYR"fDc2(f+M-fB)HN@1CYIG*,ZIH#*b5$I&((KR&e4N1NGd1!I&8kN$&N5
Jp0!NE-6a`@TBC4hVGAYm0TM#Vk9aVrm2Nll,k8K4PEf1a8(F%b"5!FKkDf51jPT
9*AVYlrRG"ml4KL"J!pM$R43U"mr1qjKZ(i64F'a*400Zh6MGH)FSV&c)G@ESF&J
Hb*E,H&[,JIm[6EPQf5GL)MUEP8`pkJJjQqhFI0ANBT'e$l-S+%"r#lK12(RJ[e+
-8!0CTHH[!bI(GU[!p3Z2p4GV(Uc,TFBYp,8&&(D"`%M"Y0B0V0YAriCc2p0fSlM
Eb"f1Q$['HGVJi&DFl0mhSUIfhImm)SR"@6MjYiDPF'@pJK'Bl5h9+'[JN8C@hii
(T2Ul0VD*M12+4*mJ*RPQr9Sa#EA&-DG*#AHXF0a[fq&S+McT3#*kaBH+0i5P%FC
@19T"!`515+GDAbFSAjMfR`U3!0R$[LfUAr5AY0BDj8k9*m!*rmmYmZl55&(bk(-
UNd("2TTkL[$,$pa9GYmDY1M`TcIYf1fIX09N`YGbll[ce%'dfm5+SUrMh4GUZ$X
*arRjF6(1h!RSc)'i*eakkdIh'N3JrcGmlA3'3%PD&Dp2J"1[2*%F+6JfF&SAG*5
Ck%NfeP3EQf&0+AY(DTARV[J"hI08rPVMf#F"`m,&PmpN@Tf#RYYGBX$J2$D+@TY
GcbX[$iC*fq*mVdYXJYAI"A1Ub5rJp@"iEYC0L6S!Tp3hLDHAm$G&-Q39CBLd,D9
X@+ml!3Ik9$58%BFMm$1c46QfS@60lX9%)'LDAlPKqH+N[IfY,Q68#af(&EiZ$j3
r5*K@F2$0(%`d5hTimA%BAlb6Gp*iMXr&)A)2(`'(q9e1!hJK`5PD"NM#LbQT1@[
+C1ABU!Cr8-b01Z9*"T)YhE8kap+3!"ecN!!mr[l5HQ*6k*I4,RjQLpJ9QXb5EkR
4[8Jm*d@5h#mSFNT1U[F,JGdF&-!BLI+6&6Tc!a[IViFQ$3ZQ`4CV#hbUMrp&j%k
Z,4Ja8l$@@%@U-B%"k1kR4$kPK5,#52QY`k["(hHG&10M$Mh%GjC*fdiCClTl[,Z
ScJX9V&(pH,BFcieTZ)D"eFIkb!T*Bp0f,!aVHHiBMRGD"%"#bZ#aRHeQifZ2+aC
`)rVc6F8C@,4Kh"jQdH$4G90!q"fdb-G"rmmb)[[0"lN)1IRET94DND2P1!KA98h
FfB`[2@D!KMFpi!8Fmf@cHZfYpcLB5((kh4*(+UIq!RG$p5+(mX`P"mY@3M4QGdQ
B2@cb'bK*e,jq'bN3[fKi09X0m6%SL6VY%A5@5`5''2#9X4Gh`0MaT&m,a0k[+m6
fGXMc2jhZCeFJ&+)FJjjdVACe#hN&*1+ULj8Y&90l,TZq6C'TJ@%FH&hMS,UZQ#3
afbE"mkKYKkZ3!(Ee6a@3!"kpG&l(Ne`"NE&hB&U9rLD@Q%qJ`Qp66RLGPdN&Dk8
8eD+jR"kUHFK'jZ38GF+BLq%a986B%aKr"LM)*!Lq-0J`9RkmT#QU+#6p+*fP00S
8LS&pkN,4F'@GracD)6flISbBcF2qjc-+0pNdhF[j0a@QKcTj"I(#TkcfNH@M%#)
,H'Y+D)&%J2KSIkA0,V[IpkXL2%U4TaaHH69j*m8!#a%Q09D-C6E085Br'&Vd9*H
I`Sh*mG@1VTb(B[jG[40`YVPaY1ebYE&6F[mjdZUeY`25UFcDPMqRT$aT[3#"MX1
5bp)iLk#XKI+mBdQYmkL!QrZj$AH88cHRl2TMZJ(di4`!c84H5ZE$2e8S3a#3!&$
RV'm5pUG%DE+j*HiRr`rNi!@!%kEI,c!**ZQP*[Hje8HT&3kXm#,%c*m#YK1PqFp
`5dTQUF+bq%`4!lSUD09L-Rc%9cdip)'SV@)X`3B*(mJSK,1&MD5ZA2#Tl9lQ9r2
Q-CG'@X9Q6MU$-AD4iQ(jF6*TX5+kcm@!Ncb+mCM%[*'FPr[jGYTDJI*m95"`$02
$j"q`afdi#2MNreU"YREqD&K6KkA3RH6R248BD@CiH#G*)(B$m`Ephh5QdY3ia%3
R+0h)R%VAhEc0-h1kTSGFZP"!()edS(9,86NHNm08"NQ1RT5jIe#,MR-A)p5"5CG
(SpeM8V63e9F%pfY(8qM@9*Mh`BbZrH&D(lC,-D1'&F#1Nm!ZK0GTm-9-a*e)41(
Y["$V'"@D*ikmk[1Udp0+DKQjdMBIM+81P'1aF3rQPBdQZLhJ"4VjKjflJPl3)XN
RhAH8Krkd9M&GEd3TNm)NACEq-0TTmSCjk!bS5@@f6TZR"@JTbd6D`B"R5`6Ie5)
B,A8D%#+03eL'!PDbQIhLY"S!JZrhajLVS[U)YX$%8PE8"&0$5rc"`XaIM!cEKa1
FYp3ILmY5qcSj@$XqMAmpFXc[QiJ&Q9G*8rjj9!UP&"CB$`@2KVHUbT68UqVSXfX
UmCH)c'Ue&(UebE)T,j1U)-qhc"-dmm+XT`a61)%k[ejV4M4DCUYA""[h)Vq+k[a
2hIm,`q[lSTfdiP&h[BD-lK#UfaM`%5S+BTC--PF"F)Ta$23,4&*fY*KmQpcej5*
H32ljI5j8f@[4q(-6DVK@V%@h(3YZXSj0qkI!IrUcYp`l*r!')*f1H!F8Z@qb"E!
#@P(!5Y-1fe5SC(0Q#qfpDq+!DNiKDcFFG0p&$fpCHdV#bc$r!*6BJ('bN!!BB(%
D0Ti!BPG#aMUNE3[hCD,m3b-X-)b2e'c!*0C[4rq[CqRL6fiFee$LGLSEacf#0f&
2j4ITC,BV%NX$"9c-h(iC$%'$)(YC4LF0bmr&`@*[d'H13Sl*,41%U94Yd8N%Td9
i),lPA[GcD*!!eE2JcJhcA![L#DKU`2mZ6hkY5Up6K3"LBkJRQC%@FHp0I'cKYqi
rHl&Z)@)U)V%20McHNReB-XD['19H"f)D5()k5L&C@@D[[D'0%JFM%E,+JRF($aq
0'p3"#S"$2G%-&[RM-&lPZG3fE['Nqp9DaUU*mkM2C2e0P*bQTK%I[Cb&F!MI(Vl
9CXX)rK2AL"BcNYiK`)RFL6$Fc83'63Z+jI8S+Xe-)*NU'$pYZ+aCU0Hl"1k92SL
"3`3EL[Y&e+e$11I4+%EVD#T'@%V10qR5@22jQfkLLa3HP"X"K'F1U3b!pV@$[LJ
2$PQj+6!%1ml'8rU)EH&5d!dZ"DN+AV5b8(`"lFT'Z"PUGl6lDc!2`C+ba[!PD@P
Z6VjC05")IY3+Z5TT!ZNj&1bFP&E8jA&1GC63Z$X"C)JlF!-%[*!!4TH)Lq5JBrC
N8C0q3683G(50@Dl3[*`+4r6K&IdCcN2%JmqHKqQP9L4T3cR,AM0&,AUSFJ2Ti!T
SY3Z'1AiDTLYNd2U!aTRJQfLK&)a(6e)mYH0R,"XA!ZR%,"h@%ZQ'V`mi"I3VUlC
p9YRD`0a[T5Q$@I`9#JB[iVYJRmE4SXq1%8TNa'VTNqRKj,GbdaG4P`b'Ke%*UX4
Yp`&G'Ymap0I2D%"VY-4`qEj2N!#-98i%h!Xr'3dlhqpNFF'LUSEmi-B9iDcT66f
dmNGDJK$Gbc-kV,3LD"KH*32k+eaiL#+llPHaqR1,FIk!UL+GZE6hDI8hf#r#0[m
fAQMc33(f+I-#*9PqQ,X%'rE*"*2%$Hi&6Gkm4eX5j,062PQA!BH*5+0")r*A%@c
Bm0BeIYNRBEN-Xc5D1pbLmZDM`SR1"ZkQE2G[R8BMK,DYHNbfhYDCkEb#'IXI$@J
qh3VhpCrIZSL5R1"HT+qdjA!8%qIU*qmT4UM&D`24Mc@*S)m"`UpiRU&m8kp,b[&
a[*M!E1e-N!##%CU1l0%ZE*SZ$-ip0HZ-K10+"kQ8JhQq@HAF"@iZ$4*"BAl`iBY
JDX'#&&ZBPGcD9bZ*U-"KViI$BUeaJ5RjS*Jr81M*Q*U3!)3&0'BmApUDk"QKe$Z
H$ckD3c#-pkMiGmKG`[D'4$'%4-Q3!03"PfPFkj'VhhJUFEVf[RP#aAG[X`6RbCN
IUId&Xk8pX,1E)H4*eZ5fV"bN3lhlXBKYHG#"6MljGD&VLbi$RR(6L&#!2@9(p,U
qK%ATe2f)dXee%hcSmPU,Ai(Ab61V(P&-,@(Be&X$[Kh%NEC4YE9iIZj$%fe9Geh
L**1C3*2R0dC)#R9FP(D[%!50!JU3!26'S8*JR"2Nh[a@+FleZ3RLBf@139!A4j0
[5(8CdrU#"$[e9FI0I&J96dG2i&-lrpk00B`*E'1hbJ@'*)j20fZL!!!rrKJX5j&
TCVT`1j%2b9[C2MX0jRI[d6fd(2)Ep8CjdNa9aaDq%1'9bQG[CjE%"BZZeLA[#MI
$[V+XZaSS5p@3!%B-AH86!#*6JH!RhBSE0l1P8QlaJ6j)lVjqH*r6C3&2q[QLh1N
T68iE-!S5mBCRZ-RZPIUEiJ9r9"J(+8bqE@jiI!JS+ZKa,1'a)+aX[flBpJRr'R4
jmaj9c("`X)a6iH+jXUDDhCim2T[kU&i`iS6K+r6,"(pV-2CVaUqP#DE)AB$SVZM
1-2-Ke3*$&Vce$Y)@!8`3-`VR[Phk1YH%&kA8pdB9d(aI"GD$q%HqbffFUEQ*jHS
9#Lr2&"@98pKQ@p@0Z[8j&$A9&813!,+0JFBmC6K@G-c8aF%Y3bLLP-ISSc"U45!
@(5h1E3Hp'`F@U8d@+33!GLQD+IT6,[LTILm)H6,Yp)"5Um%c![C'JBDa$%H,,eb
8SU8Ai")Kc,6Aj$YeBY40Q!m1rmjASKH9%5!2*'D%SdVX8BIhS4Da"3bJ1C[B"LV
,)d%V[P`)%H)UULc,phXJQ@VJJD`[H6rpfCDSZBk-H9R[H[-iFG@K+%3YM#TAld0
[6*T+46fDd"Hj)H[@CHbI,5F$AB58edR%YpbR@6pFZHc8baR&m)1CPk$*@RZF4Y!
P8lR5P3'0dLDb,eSeBNHcdMrdaTk++QZ*VIQ0,%$*k&qrKl![L","6Adaq0Z(Z&Z
VZZ%Ck@)m6G!%pN6i44@FV4Z,*[Tb&K9jf[@8*[QfSpcD#(510(Xq,4R%'ja3E4B
Vh")Q0b0JNQrK*j!!q*SrE1!NIdK8Aj-,Ne,`444J`cHaNp$CiKS,`i'22Pp)!PP
'aFq8!dS1d2mDcR)1@eVc--MPiR8J'(QZCiMk`8ZKV8kNa+SdrI,CIqdJe*m)fCI
+r!Ja5'`Ta+5UfB3e&Z36!E-iJ4&Q2'JISLDNL2bHSimpDbdjfCb,-XjkeAdI18A
cqMK"NajpHKemKZl,`-3bVfX@e5X5S6PrN!$1lLM6iTm`J*3`SId!X`D9ZK)-!2+
ZeBNq%a'"*,rdKr2[K6QKfTd`+l`fS%2FiHrTI2MaY($3+[PGicN(V!"eUf8T0Ga
HM4[VN!"9lEVl$F'd+E9@`a*dU1Zpp'alr+'eE9AM+[AN8RME&dC0-K6'+AbGrNr
KXjCE45&'rI'iH%YA*lhl'$VC1l8-(XYSK2!k26r)%B#U2ehR",m9M,Mei`&P61!
Yd#9)pcjX)dBVe[TYk8PNE#F"aUViaJ!%CpLA[H"%jPYDZX2R89+*TQmafSc6LUG
Gc8Hb,FU9Xc1q'ihdE"5*cXR!Rk6M(`$!2lI`&")Y+3R,%GMjFX0LH$qY6ehB6LG
D%--SMrel*D(TZ%cep0*+Gr-@h-J33NLX*6)%Ni&d+Uebh*-d+2K6SRL[ZrUX+%[
R*P##f+4IQqIkB`UUmP[HX@iV,88Sc-rB6@eUKFZBK1RD`-@JZ@VT2UP-#LiS`YA
C+D4&CRfeH`fmmdpPCbN"ZAK1A+Mhrdm$lm3eZH[NfXdkpUQ,0JldU6X4qM3kTHX
q"crle"AfhMF!0UHElrYR4$QA8j6I@GPcEfIX51LCDpc'%kE`PJbGjb6@5C&REmF
mQ(Eek$lNkDDFcMI)eXlC$JMmmCaf[JqUQh%fS9)qX0UA6a4@(E'ML-HD3icXqhR
*2)$K`13')c3+3HV*f4,r0FCZdUiED`M`BBRVHaNHk`0Y,5hmGEjR$l[ECk1XJei
XmmUX4JENi4#e9PrmbG$T,H-bDk01l0-*&GliedJDJ$Z4VNfF"!K#YZb$1cq1dah
q%+!4-c#1#Id[e-SQi$)pM9B!%mCZU*f$dP6iadA)@15dmK-EN5PVe0PU'$346Kq
*,#[Nc4C)GN!'5I$0LD$JdYk-V-!+pdlc0f06b,82iYHA53,MfTP&0QcqkAN&N@9
lFXp%1(EA6qdqG3-LLX0'8'MCBU4'@HLj+0b5"dG9(Vj@FM5Q-`S5G(k%I'HLl"+
aC85pdT1r[j)0Q@LS,KT(N@UVK@Q*b8I*A#hpc"*JfqL+@,T`-e5FCH`ra$YQ2)h
rS!#2X5hk"CRJQJSA1)A9*p26hhAeVKlQNRie%,+lG6+KX[qdNR[Jr!1I"LBm"36
q5l(2D*cm23VVE$p'MYl8YNP5dJ4Kk6(Ei3S1faJTqIdAkc`*Zrp"3,(X0Nack)*
#h@Ri$c-De'A0h$p)KRI(1qUZ5f"I(Xf``f'[p#56[ar,HKea$C015Z-T&QlNYL`
ZdmRkME1e&3L5*i9&SUKqdDN+3fAP23!4i,qK1Y,H2Yr5mk81"I,jMd3Tf9*&CU4
-`jSX!F-Q*iZbB3M$hF@P8eTG@a3N-aQ,2aq`iU*6+r0d-fV9mjJC!`k-)edacGU
+Sr-XUVh6r@U`i+$KR[B!X@cU$pY"Y&IX"pTHl%,#UU2S8I0jq9h+AFrNpJ6baj&
Z""N-KJrHPq(%FAkdqHE+qRZPJ*)8CkiU"$aERBJ4!i6MNAhmSGZZGm[X`lmX&QF
a@1dk99M[9!ekIqX%Z`f-r,28,l%ZJ"NURN3Lm0%T"'d(Sa*U(C)[(q(2iS@M,2[
"b+0Tk`3#c1Krc9K5`#pN#p6M+6qY-(@PJ#qAA4mpdjN12G#I2XZ(Ih,iDN$YdM@
),)mJQY)4@8dQ6+Rm`*cRp0bTLpTS$jQNN!!M5@5hF*@'$b%Vb1`cN!!!24jM14+
M"GNTM,[Yp,8-$TdH3IFN!iUiX9CD,j4cLf#FbfeLlG,R(X9j%(MF`k@M(4dZh8q
kkP&#@%&G+R`R%-$34GM4Q`QVbZd'KKk3!)&"ZqRbG$+AQj([8f$EPEaa90'e)l$
@h`49&5&!HS3acQkq)`4rB(J3qC%!8T9Y$G1)HPB'D'%54pqMF,iC`-cQbE0A06F
8&*hd9mrlJfe#)-3$#[!q(9VJC*TTABrjh)RT%-0TUqq%Q63N$LJfK2Q*Z[FcYM[
dKa(S+)KKe6U#RXlQ#N9M,EmJBMU)l`fE96+@rfKS`JA`h2F83RZS!ZB1V'Q2ZQU
"@)11Q`Bl@i`NMBe,c+I9dfiq0ZrA*eVa("6,`jC+GK*+rbNrFr2d6bh%rK3GXLX
*S!B6YjV!A,SU"jqYcVH0d%P)j4k11c,lT0Hm-@&j%21h#!3$b#9K@JBX%9YH-!a
(S*Zc9'8JB'e6DbMS@k%6e$BcSRV2EFCE`,h!6iNI6Xl+R'FXS-6i50G3+SpkTQS
hh$$,E3X*)LLjmBaI8eLkll$,TIDX,""U`-M!C$-&4%hT88XZ+Va#ZBE6IA89MG`
q*P&b0`6rHVcEpEh0P&(C+M0IiFT5jDj5lQed"9*!)*b%`l4YM('@9N`U"Qd5U!,
pdF'-U!TMbH[RY$VC,YNNS4@X8'dG"ejfIDG4&U6-4cU0Imp!NaLFdr#[C1Eh!5i
9LFdrlc2"YMIBQh&3eIPA)KN4aerBGHIr6'8$3@C#9d@mA@(1hN!'p1(%Cf''6el
$eGHQhY3kbIh0q5Bph)P-c2Xb3TiVSJmL@F*QNcT&kGi@6"$iBN9TrCbX['jk8H)
&m*)YPbJZ+D3Y#JXY(*!!5ASR2!AC(X`[BCj`GE(MXlXpS@hAYVJ@&p)dpC!!r@M
GbL-(K1EPdDfRQXDf[fZ@EmS5(2K`'bk&I'PHmbcemm9'1%kQKAVqBYJBaAAC!qT
&8r+Y'ECa,-EK+ZA**djk+qNXET5U*3N2[%Z&8E5hi3DVGNE@+MQ1Z)MC0GdeNF-
&C!d01NIIL&j-kFd4arZqq(a"8Lj-!q6lNB6CXAh16HrVRi)Ik`hqYXThLrE)3BB
*Q*XCAPf9I)eUr,UR'+69BT`XrLl-rIr(,DC&C4*LdRIQmE0$T2)(RTaPj+JNT%d
[ejAFE*TpJkCaBKN$P`lkSQ`DqQe!9qXL(aZP2AeU2JKF6Qkm"2ac8!#%E45kIMm
2LL3$1p1p'[A*15AFh99XSTU&$+9+2DEGSeY,Y9Z*cI-a*+X3b4VXaar&FLiC(hX
%e'+3!"d5Vq-dQN'Q`-8%3pkpFXq"K+C9rJqU5`jM$*,-B@)RA4c*bfHSVb,-NhH
Z6[#Y[eH,qSaJ(,3$eII,hbf(JV,LJ*[eG)hY`lV%[!MFL'[336dpI6'kG9Rf@Ui
4r!1FQaI-P2%IQ,Ipf-q&%`bf(U(cHdXM-l'UF8T"K`QD@[jl+F4$bJIL5++X0kI
H'U,kip3%-5Hl$"r%*QpNmPdYB3[9"&-!5ErU9Y*-+RBe-&cPE)5K`d[hUGpFG+"
RDGm63pQr+$$!BE`8K,mpC9X!PpA[PT'4VP##9pS!A@)kB1N"dS$6AVhlE9l,"Qf
9CdGUG524eD-T$dFK0clrp1Sr1I(U5*6k$U`FI@LmE8Z#QI6V6&J%YD'Kf2&BaZF
3mfNJ%HqVajcc(J2TMa*V(5,iE6G%qY[AC&aKr$XH0!)c$qhYLFJ%pimi4Vd%+4%
9*(,LJmV!+ZkeTqCITI1A%p$1mC*&mPQriJCrUH3l+2&`20&YjU3'ZU$FYD%l*EQ
*%2alQ"a`6GYTBmh5NbU86L`F0XMP4F1%K!-R@GHHGFCKBS'Vp'9T,!r#Gf%d6CD
$5k*QI55mZh6HMiZ,(%R`V9&&aYdA#e)R@RdN-64k3GcXSb%1X((D8[1I!3Dc9DP
qJN"6#1h)U+Xr36!+cC8KG!Yf1r*iGD'`qh$*Z*E8P9'1A+FN#L`kRGpe!5M&k6q
Hf"`jR"MdPJc)Sbr8mT)kb"5VV6Rpiae[TM+Yb#MqI4XdEI%rS3YU%cq-)S0X#Ka
KA9T1)"4NFl"9BDJH!k)eq(4[Y*39@$4md,"d2k(4Ya"ScHTI,N#FFlT!4"iC2l5
Y85+VmBUpdA"bY#52MjafE8YKNFJX,e2dD'#3!0QN31Z4fGXc[889@0[fmbqZJ5%
5V(%H3+59-jG*+I"Q(Y)c4K5"I46FJ@+G`,ADYiVN[66C1c&@[5,eX-IdKP),2R5
H,"JiGQdk20Xa$D@4a1hSXFY%&SV2DRcia5GdBAPe#H&I9Cj`YDHC[HUbPFdEp#F
HFD@IIdm60D(FG2qm3pBk*jGE6b#hMV)Q&'$l9GQS$Z9p1+qA%Nd&p$IYYrp1F!"
930Vb`rhV9UX-@'Ta(,eV[D!CUVZ$$D*S%Ck6MqB@M)a45e1(Q5UH,Jpi9e'Jiqj
rCSa*m%Nbp#HJIm0ZC4ajQGMCcD9*UB-8T+AIX6(EIQbSmcJ)!p%3CdXM&DkN'V#
,L1V`0A[0Z%CKF3[cV0S8`FL"0,!cPbrjIeTJ(mM!"[DL(Uc#$TjaT9GUrR0K&"b
@0QXr$P,cImqB*$pd6IDYmR+LRlG@1RQYc%[2@R8XGAFEj'2Dl&FE0#f'DJa'XNf
(eVbP(k"aHfKQ1*-PUXAEDLEfHXDIQYGY*b`IaMRNSr6Ih1rG8!j1Yer*DBmcrC(
I)4r1%cK@d5ENpAIQ5KMPUSC+-,,++`%U`XSi*D#I6kC#FSNV)`6hS1(3+ZA5R(8
HE5U0L1SN!6R1R$kX21&-pTF$If1,Xa,L31)!eQLS+jfMA5R[-8S%JeX9XaL(282
iIlX5-rM@UP`G3LZhfXe2U@9r+BH$Yjll[`Ra@4jQc-N1k9d'NIq(Mq6HkG4RkrC
'S`!aYErE"fK*)EGh4Ah+-IKp`4TH9ibAAEc6QV1@FrhQ8*p"SYkCkC@&fD'QMri
BX+ciE0!$1J&8l06!hjGeh2Gr-k&SK6)Gf2j*e9aDU0i,PklDU2PMM!E6pQXL41m
a0qcmb[95I90NJJF64'--iP4ZJ"PRE[@L2NlM`J"hL#q9F&L)acNkFDF-'i13!1P
,3aASm@P6HJ*QZj!!lNc*GSZ'N[lalDbCl60qd!1Qm&F`D+`U5NN6kARR2@F')SV
J&$j1,qcSNQ0J-"SKamXHMrILfqjJXmN$X2GAHB`9c$DJ5$[Qd(MpEA&5%2l,CHY
Bmdij!T@LECqTpC'D+#61SKHLA4"%$*LHp82,fb3'VB@YiLp98'fNe*&9MXPqBSf
fcNCVeV#rf%khh%DVe0hK!R61`rd3)Q9@Q8![R6KdhSER4E5CA6ImVNU44`0l&+4
j)`h3a&bQb*ENBaZ+$%Rq-@4H*i4',#FI%LfJbHY"mchfj9i&h8e+0Y6bA3H"P5B
CllGH"&GBUa*jM@KaFp(KpM6Bf(m-cac&a[3XU4$DdRN[G(4)!5-bM24iiHJZSI+
1d2P(9&YX(*dIHF+&feBBBU5I&Ak@$[F3pYa*KH5SN!#pQ@QQq-[pi)D-,5)Rk+A
DHU'Y"P9b2"%m3NNPJL3T&qNf)+fY!k0$b&CP-%kd*PpNB,pKG#qill83M+Zd+Hh
jC+cm`lQAE)Cd%,Zp!1d%N`S1aC!!B#PC)RQRA--8AXe'hAX1[YfrQRE[(F(L"%q
0r(a3DCX`4BQQ)8+lG'XrUPk8Y+1dQqm(!D3M-8i69IY0)#T"GRC8rXl9b$@#Z9"
E&eUeILRhTXR%pirJ8A'1k8i`d@*GE096S(lK+05Yqa%1cf#hjRZildA11(+YiGc
4e*&h2%,K4`Dar9QcX1qG)LNFC)1#eFH'$(!H@pL*&(-raP9V@+P2ZYqMBrh+R"Y
jjYU,!2-qM5p6lb4`%"JN9CqD&eF*%r"iRHeSQSDC9hE)@8ZA(ea4Gb(6TPpDbL`
lpG&R`ef$q`E9V`*@NK269h9TYk9T+SL)L"L4[RV$%"(4i$FRZ4%PD5S@,493)(+
[(b#CV,"08C(9C-`UYNSh`+SKLqr9,p([i'Kbe3Q%`8jA%"@r(jp$FNXM"dff`0r
8(HqE!*rBcjUiQ&9a,ENjJ",2N9A#$mH$4#B(%!,)(,jB`Ii@8cBeM#fqR,MR0MU
N"a5R1d)*3SA%0#F`EK@ccN8Sji%5K2Ymb(Fj#pRqdq5*$GT#m9DLq8@FbL%S%KI
aYEblap)J[5NF*-BNRMUC*(BKa[aN1N0aA5Y+0VbC%Z@624l#m-CS`T5S@XSr*,m
*Nr[*'%5X[0(F%"6J-dJN-LbfbPCM,RI&0!QLhZIrl-('LN8ke9%HRP%kS(8iGY`
rBrXDFR&,c144LrY)pQr&3[DSLSk!P&5`qVFGpSIlJ@'qRia)rbkJ&'3FP1DhED$
AY8MCe[UfKj!!5lBVK2PdH0fKGSX*QK!"feS)ZPI@Z2CGJjD$Q,mQ)BPGPHB1q"E
,IKmRFYS$![A*%!j$bT[q(P*D"R-ZETrV"4NI-&[9Y8MTHJT9m&"N8A'dL6UJESF
%1Zec(iL[$Gf0b[dmMF4,fA&1Qh'k01S+Qdb,XKbj+2N*4SZp2U$'1Ka!#h0"4d$
j5iP!F(VG26e`%-p5DEk'pF4e28LS+&'(SR*NkcFm*24*E0CfYSqR@&UPVRb5Rba
f,04BYBr&%ii"RAJ$RDYcdBCQpSqNThB,@YcbKrPQ)!Ymm6-Qh%,XCqrVJ,k!Hla
Km&[1dh98$h&Y"J(AVCQf$T9b5`-I2PJZi`aGiYJKr-F#q5q&(&NqC"cQrV6*hJ!
jB@fqrJC6eELep@("A5$P"'#!d%C5PJ-$Y#PT#`(J4""fh#)K5q1!Fa`3U$jKI5F
Qrp'D!`P%PE96RHhENLEF!He!dV$Pf0NHHlN(HqUY5EkJmh[qZifEHGRGfRUGFcf
fMS9GGj(2dBK)2JdNfMNM!Ckl!56QZ@GNBA!dGKf`clq8k+"lHY(C5&p41d1-2P5
cX'9lb@eiJ4qr[$X8FeU8bhKB1JSr0EM!hI8D%'KliILmKTIqd'ff%+5Sip3%hPS
"dFQ9Ra9,QUP%L3qlM41PDeJQ4&acRf-Hm)eA%')UI%YA'1#[N`"fBX`F49U"@A-
mI4EME0hq[Ukc1'GkrH,B6@SMNRHEeMqURU!HH3`(9BdT$+fi[*&9-I+X&pkh5P'
D9TaJU'%8p[`pQ#-P(,EJEiJ6lVjDQ-ULZeP!b)B"qaY!%"1R&84[NdaN86(QmmL
*19!EK"Nf+h!%2Rp9*F%Vj6(9KF1`B4HEB*mXHUIT)P9Ipe@lVC+"&%5)lK[%!i'
h9diIK5X&qlJQ`BFX1N&fRB@&iRl)5fZ&VpH6B"6eJHmV)P5*N!$-TY(#VAch5cQ
YZhN$ZeNdCV@&kIrS+#MSKfEYiR)VTj5&R(0J&I`Q"r9@%+F%(3LIQYTmV+FciI!
'FMm6"Vc1r((3ZHYXJUd#Kqm0LaYC&a*dM-FZM$'EU`i+kr!D35JD`jYYqZ1ME[i
-(q&@j5+Q2VbKk3m0fp@Ih*!!&Re2c!&!'%S%N9&ihJN'a@HEZr[f99%MjjlkI-$
I0S'4h&-+%EF,I'lH@cI9UK116`YQ(rAApiq&1He8HG)E0m3kX6Sch"'TKM5N"A0
i@NJ6TJF@DD%THapZaSIMpRL&q!CEAdla"LeP1BZ5$*Q(AfG`Q@iP))$'r)IN&lK
[2qkqckl,f8IC,&4QC3M%drf@51RTZbqA9S"BdGJ#6"`60EL2I*Z2T#`0QlGl@rY
*JmL(lHJqH%ZK1%NrHX+Ti!rPc3rebaTlXP,e$SGaP6Vb%IR3af4DlYkhZ9RlI,N
i1T`SLa`&&SXeDdLF`I0G0R6DZPe3LpEi@F-eQ5TD+@(8Zm*U9PibZK[4f"E#&-4
%*@81@AAIMZmCV&M1F`Re*T%JT&e5MIA[X)ShVQhe83dMR$P@Hb(a0K'220EC0jE
ZJdM%Lrbq54d&[LG`E#e(HNUdLTGh*iTiHYjeSXM"S8lL$0l%Z!S'Fmj9J-0"d!f
,1b$JQrm1"'TC1M9j!E$@bU"KSG9I82V)bQ6C*a,$31T!LBa6l!1&d3dFS(AZip@
#3m`dNjIeNCCV!&"L#kBb-hqEdq2ZS0p*eP`q!L10hkZ$MSKfCb21i9c2Sc6mPm2
Er#Bq`P&Abd30m"b)qH83Y`qEmR52irQj#E!eGJL`JeC)GbE)k)FS+E6,4a0q6mY
Q6m+Ip%+1[+V&6Uar#3$CUrAI5XeM-0Y$i(f"40S95,BCaS$SDkeX$dX#@r'fAZq
McGNbbaKfi(liB`TNd(KHfE&GY))fSf-'"I$DUUVbXIqchQfYEl@XSf$EVX+Z5HM
X`AR`jE*GB0@8''5!Vdm)c-#(rHd"#Qa88d8d$8qF@E#jP1%Re[BR&dSmh@d+I,9
QI8"lDE[Ka"JB$S-ZD&KZIAG#RqbLdppH[Y(rLUm3c@Ib9@5bdqRXHb(m*YANXbF
J8h0&2eR-jZ1flM6VA"m&LlHMS&a@VKRBR%mf,G2lhA@KPEB*XQbeiU4h'YAk4aN
'$ja@#UU1P@fe-#$U2f&deRL0[)Kp2[p0[*ab`h#fQ0-5QbNX8BPKBp[NYPVKh9Y
fSEN@p3&rASIJRhDAq3#plTDifbVb*Y[aDID(R#Ajp5L'%6E92-f*T#,R!TIK!L"
Q$GP(5'CLC`5#KI2%Fa*3hjCC6MFiqQV2T1Hi$F1"!kq[3R2S`3V%%-J+1eb2M69
+mECeq0YqNGUcI$"q'QRE*M[G+*0XhaBh($l5I@82)[#B6k#r2S*maKIZ"`Lfc`[
N&jr(JiTr'BH'`RNL`pI$T-[HP`8&6*,,Y[4cSb)DkHie$MQZeTecj""B5EHq2i@
MY&#HS`R8C[kC+rUKH#j"R--8U,c'jrmp16j-f@"Cf0BL`RZ)irGp&98q%aa#H,#
0HV8!VM*(J6i0bB%@8LZ$HJ"lqZG+0R$$j('*E'5(b'Z'V!d[BD01A9k8@CZK01I
[m1$@CX0i[Yi4CfH#5A!%JTB+6"CrC#3alk6IAmKY)c'6RQ%*N!"f(hZ5*[C"68j
db"ri1Vl8N!$ha9)"FS*NAV'#,TTKZa9+$Tc-b!R24#BN9659"(e!dU`PR@jX-I3
m0#@GKQ'#'-R[8ZQ"l@ATTK,`5Ha@`q'8khYc$&,9Y@*91)ml4@f#L2A+KdiP!EV
9(fKUe4d[Nh2c@kN'N!!eH&$q+K9aFV&cFTQ!Z-KZ%EfjX-jmJcjF0hhh!V(1%`p
*#(%9)iE#I$[[M,R6EiG281EJK"EZ'iN+0R@mPU(PYZ8'eb$-638)VVVELJrRd&j
Hp*J9%MMRMFh(ejV@CI4j@U[Pb(l06e,Zq&Z1ZcH&hTQVL228EF!I&++`!meICIr
IL1CQ)YEfNrh@Njf$9Q&C8+2LIjf`p33-HhrEX+FCB8(86rT-faQjkE'M-)1$1DQ
8bK8kX&"b'ALXh[iD#CSR$Sre$d*rpC@DJ0h"Bj,V'4-LYc3Zm5qQDLj2#KKDHC`
42qZb(b9hA[cDLh`d!4YY$Yp$I)id$lKa)1+hqjBSHZ$09@&V6"5U3ARl2j!!E3%
V85$c&,F"j8+%&rk,BESNpS*jaReXQe02VfeXj'K[R%BEa4mFEirQj%Qje+LYLbm
QH[faV4e(NPm%RJ[&2l%,1&F3!b)0$PB(RXQjZ-LY%)%drm@G`8YM0KlXR!@+bGX
"'`YdfU4'@[EiB[kK`6Yl0i&3VHdDX',JL&4UJ%%X9aLZCiKNf9HUdS$QSIT4M$r
DU2hMpSq25pY[IH9,&r1kR*Fc&ecFd*0'1GUCYL4+PkB5'3*q8NKah*hGeBU*I98
qX0h@iiddYMiS`UdJ@1M)ehF*l9Jlp*!!dKFUm1RS,fjLlEFpI2%jY*fhaTfLiEI
E0KC+!,e6JAXZ!(VP+'QHe86TRd3ABbH3!(SAa@-%CDrd*$p2j8bD#*8'kKmeR!@
9YCY!GB2NmM*0ib!ahHd-YNIl(11$'D9NV3pCUUaldF9-kCUM'i@3!$QZG#INZJ1
(J$FZC'3q2PNpSm"(,ZJlQGC[k+QJL5VIHAYj"X1T`@LJKCf55-FYa6TE28fA0i6
UY2j!(8%PT`03('0[Ql*F*SYp*"JM@)QA)`4bciq#LXFM%XI2PP`0Xrfb+iimJ)Y
HD,U*S40XEebEA('+"AKNihU,9AQ)D9hTU)dRk6hUFCfS666H!i+)fMReCYh,YG#
-VmZ)Qcqr!p'd9SN,ZdL'[`KC6@PAT$!ZJiGK@HpG$q8RA*cfD@`Z1(YC0l'*9CX
mEa04rp'H3HKX1p5c30d(9$pq3V1%mU)#P3d%B2+6+iJ3fJG[V4+0E'6CqPr,"f"
FSjNDV#6c[AYYEAP0rM4-PDpr2NqNRCX5Sr'E,+9HfPIN+6"alN'PCZX#[Npe#Y-
S#fm+D+MfM-Qe011-pDm08Uim*Y2mKflijVqALh9mQ"EL[GPGFTLY!JKM(d`Ua4q
CpMcI5YcGYl+-0EAX+SeaM#4TV,@IN6RlEq*)AldN5)VhSHqb)G(XISe6'EQ-Kp[
epEk1N!"1EaH`IlU8!Y2C---M'l)d(b4rae$d1i1IS[H%c$`!%kZ08paHbqjTS)R
MXJ&KZ)KirP3[,,2'`F%9P+4(*&Z4GaNB(Tl+j`1"Cl5rd(8q[D+9S0%a#j!!bY9
G,--2dG9)+"&3rLN))qL,5`6hhrp2,f4$SLXH++T2"H%4l[1dNeil[@,lh&R'FdU
XMaPb`I3mh)KjME5L%eH@(G-Z#86ib9aLIjM(KNM)G%Vl[D`2EBh9ic&ZC1cLB56
Akk@9E)4+H*HKQIm6CK,AR&K1k1rBbp*KPRQ%XKr(Y-5b8)",cbQ1'TD4P(!'fVX
JV4'Mq[UR(MK,reY++@R66JrD!0Xdqbc64c9dAQ0aLmVG`9F-c*YNp#DqZpHL(Lh
"*++i4Kf#fVRr2,i426FVi+J!dLH"5rPp-Bf`f2I$rFV)S&i2%ld"!AN#9$d0$Yd
iK!UR1ITHqp+0m*G1ADZU@d*ep$LCAHQhd8*SV("lPE%m`eM'(,C01K-lCK"`YVB
DaT!!#Lk"Dja5[l"Hh94PLMkF$!@)[%2mkDaX3#!dArP44+9QY&1BqaKm,Ld`TNG
JDFq)eRKB1"+ZCL*`S*[56HCMlc28GJINCpZ!Iqr,RL0ZGV*#miJ-,VMYp%Rplm)
4UI'2q,m%f$j0N6NPXScD#'4eZ@%HD4K$BGHl6h"'!r`UPF4e&JP@jkN'4ZFT-#M
E'"RqNB,N$DPZ[bIZ(1V),qD60(*Em@&*8rGGQ&K4YJ1,+ZD8LX4h&HXbd9-RaZ5
5"6MbT&`f&ThCZFKp)$M*C4m*FY,9fM*BJG[ieDlD*SJf(U0XZll9CF(e[LLm0j5
!X#&[jFU@F8pDlEp4Dmc#`RPrP3kk[!L5ZRI5DH(eq22EP04*lIElh+@cH-iZHlC
!1`6Vj3$m1rZL0hr0XZXUEQ2B$*RDLpRZBT-CF26brXVQDY-42#RlL6Kr9dH[NUQ
5eMYlh4D3!&ZLp+%(EL99jM"rC%fN$[L6-#iPE`kqSF![@aF`5(eC90phFHXH("0
LbUR*I-CY)`$kMHlX4%emK,0kfhibj03U9QH-9j,'EPR-4FjjE3G[lf1UV2"9MHb
[jJaPqG,H%,-C*"Q"'HG(k35aFDhjrJfXVVNXHberJ@0KUE5@4CVak)5UkVULQAS
N+TT'KGCEYE("VYcPaCP#N!#qGk*-mMcH8@[3)[SeQ+C6$Q`AhCCa50$J8Z[!$f`
jk,!SjP21B0$"(#%ZMMA8&Z@"PaAeB&C2cC'%bQiYQ&YcUH9bMRS0*U$pH'JM9Db
FeM"EIAd`1fR+X3[XKj6KHj1RQ3iKG-m,F"194l-M6N6+4B6CNm%BCMMmV3SU``6
X(V#iClR2$["qBr81,iZDbi5Ak1"Hel8RPVIVX`dVlKmRVber'F@G(1c+4UENi)b
iX)AQ#r2&E1YR*-3Z5Qrk1l[6A*)%,HTN6d2MJ0R(A)P2JGQl`%A(fU6%GXEBe`-
kFIF(qq#@rQK[Ih&q9PCE@hiq9Y1a4!%+P--lNf&mU"H1(cf2I&+BmMZC4&Q$fN%
ETjNA"5rHBUF5Q903+SfS(Z@KL"A&cr5a68%SG,DIq%9ZpbK@LK1%fM#,h-K6"+G
r$,GR#DHEpNIp+U4*8r%[iBL9,H+)Nd(R"CIrM4pp-a,1G2)H*%8f%9pR-2efU(9
+l"MVBZ2G4!XlUr%CJqrhB[!EeURa'&ZZV9emPIFqQQ9TjLH++RLZFbf0)ci8KVl
`K(9L))9#&-&6b6kUFC[J+#,bPlBEPQZ-'PE&`D9$ST86N!"#I(3HVqRbXe(,LF0
H@pa2$8bph9-TqS@l3j5#Vkijl0&-hcQ[[apm$'pl3j!!03PDH5JUPNS+,B!DYBY
-aY&eJeV5Mke$d"9LJN(CrDVRr[58lV`i6eUUPpCrc(RK5-[fj5UPh$m`Hj@'8Tc
HCHZNA3,UP,-+6p2I!*H'pL-&SQIXdTNCXKDeSTCk1Q1+jSm)2jU&24RcD[&*+0#
L+'*46j)q"6D*d&Zf*NVJ9*3'c`bR82+`i84PBKE9HG#fLAaD3Vc'UKR4'ZaL9-@
[T@"VTXHQ6,h)pX'$Sc6cDF1cf8`VFc!bcjH*L[Q-8Pm'FScd@eU#J"G*JYrXb3%
KedF@JUp1f)f9C4*S5ae'DLU-4GNpk9+BIV"V`Z$qMEV8I-UB1SI#Rb,3JeJkdEP
2IIZ#RSh#5q6[2QL3!)4q$!-5Cr5hAd,2pqU)3MHRm)S1,TMA"S8S"[R3+E+!EqD
96GT#k+Y"Vf!CY$l2[aB,NT(mE62&(HQlmlT6M`I##d6k'#Tka0[AN!$E1[YUI31
HDHZ!Aj9a*IZPD$RRH[1e5A8*S@'Gb#UT$b)`QZ#akl[@[qDFka-'f@"CY0IMfp!
(+Z+%4X`K`@pTD8r)h"-Y[62+kE6`IIBi8L,%hi#IlH&U"#aAp&UCLPkm"GpUG)m
93LfhTIpY+#+H@APH%m%`AZ"C,b%Y"rQVGKSl4`0,EB8B%&ha8$4,L2'm'"I%96Y
qFM!Pc25f@-1!m!@chM`m[MQbA$[M*,P@0[+UNX3(+)eVkhTdeNfA[ml-D3SJfFC
SH5`J&Bc*KAl-pp1!6'NXph!#r*p'fh5EkdIYj6mZ,AV*cXjbrmpi#I$i*PS+6Q$
XM-1dRF9R5EQ9)PI+V#SN12jS*4BJCjCqhl3NXi1j@Maa,CXcNmA9Vb#M!VXfV86
m$M)kDN0qV2Xc#qbc!A2#MVEX5Rk%4JDh,bLqM'2ARrqJ-p'%6jB%"bSiJAMbbV1
f&&m@l@iN54mBS#a,3kEM(l'Lq%lB**DrYCKKS*EBXdAaBY1AqUMTfX5I0Kr8m2)
KTL#[)5%N@a(j3r-l1C,l'r8%)HdbKh6NV0J3f[ld,5DeqFS3NAdA*!(CfD'$B33
lT+r2cf%8Hf,QIf%4(R@,hIe3H1L0,mISKeUb%I-FN4-lA3c-cZ'cQm+AaaYQ&a"
6M(ah*SI54pD5)!dR%8$G0a$U8aaHBIa%k4DC4q&#pH0IU'VEPPL6q-GEMA#4!*Z
8HDp#kHiN5&UQQ50'P!$mH!MJrXYIfIke3VF9"5UG541SH(M,MSI)f[+,04%KZ-q
I#5rGbCIK(*X`+1TqiJJer2eMlUlELCKN%+rjf,$J5cCaUd@[X$3jL%IS'$DSXKF
&1j(PGSq8Hpd"+q'H"kX!U[cT#[NHp6dRbS,kU3U*X*a63Q(fBS3BKqS6CcZ1KkD
V(@)L,N')&2Z[,N&4L(j9+j[[p#!S3Mb'aZpmNVQeNI8Nm)'6ZbXM3LKU1eZNbYC
mCqR+4!jANV-ITSj-LZ2fRl4"Ij!!9HLK!ZjS,c)KH8D2Aa#eN!!V[Nrl8qjP[,i
lrVlmE,"("YDGrLY5`ci[@b9A6,"FrUlK5hD4'mA"c'YqZ!"F(4q"64BXC+"JG9F
Q1M'lQ'LQ)Tp!H*ck*Vk3!#Nb&,R*bRHe#Y-CQbkc@i@,dajrm"raac2"@p1d(Ar
$rQLM8[j0,0-5eAY-JqHrr*!!qN*#2PJ`qm(3b3GF@PU2cT`dp`L',daYibZ"5ae
mQhYRe(f'B"ZELPAP4UD04'if*fF!AfJK,V1Pd+0P!IV3,K8rV4lhfXkMP,3HCA(
!&4`-4Bc*XE8SC4)$L'Q'))bh1XIcS[,#j0iQ)G'0q3HFAfjhKf6QXPGIM&UYcF5
041GdP@'`paMa(QcUI2)BMpR`$fdd5C9@p1TP[0)dK'kT[JT5"L!+lX+KdP5bCND
+%!9c+*aLEQ3d-AYYaZ&Q)H-fEU2,6m[%A0R6%Iq+kfci$)KF!&5bNk"%Dl[jl"9
Ur(qmA[[F*ckaB6j+d+2MVQEaf`qqDS9e1T4mX1rqf8ZIHpqqcjTia%9eh3#(,C[
9i)V)S62S3hLE'dm)E$Y&"3pCqT!!@M0&%qMSlT6FJ6-`KA%$BUQ&'L*$iUDMU[@
Y3pH'B!rSfCUcl`+3!#)EG[XaP9lG,%Pm3j)pYk*#`ZYJUDEF8%e9(Q2li30m1,V
3GmfV,G@FN!"eYDBUQKhNXhIN**XRPep#G"R*m8f),VS5&NRp#idQ9AAYUIfCRIl
Q%TcI%K*S[4GU0RfIcYfeEHDM)+U$H3ld#S1YmJ5a)l)K35Z%J%rLd'H,bSfTM,0
1Cd1PS`#%RZaSDXR%4aTI*SrT+jECLB@5!MeHcCpe9*VdppYZbBD,KaVd&ibV-6[
lIXRHAhYBZdR,p!qSq%P3S8r`6Zd-5VJ8B6pVQmSA@d"5MZFp1"-BkI+aSZ-L#JI
kVN2a"'JJ6(`mP!fHqGX8i4Im*d*ZrbGk"jNYfUr1"(P@pU90`"BT'Gfh+r`B5T4
k"1!!bDK)$URUKrr)dZa*PU2qG#eUl(e2@,EZIABIPeAKeRDJM"eGq6NeM`*AV4J
q)Bm`!!aqfFi4+qqQS-i8XD25biqRr$A5*FKkdR*YGBQhIkVY%DTSHdUpbTSp,ar
D&5[)24,LX2FkmaBGpb8%'be%aeC"KiF[ikCiH6FQ%["UYbcLP+Ld[0#3!%FNA8S
PUjiYi'fIcFQIQE"KB[lKJi5Rq+`YK0lCh+9@L@X'@RcSIF`r$ClH9VR$pU@Q#V[
9ihJfH&Ec#,9Y`+#S'bJ9lE"T82fZp92LD!NCQ#+Db9!fqQ-9(q"XkXdqIQHj`*Y
STS#JS-Q`pG1,JaMUAX-)2meAqaU&ZJP13&IID2%2q0CF"-f+Kji8'fp$D0BFra+
Y4bIeHq(@DQ0Hbi"9ASPG$m$Nr2kiY0DA,2'lKAY1`134$idV(B`+Z,0FH*)A@bq
"c3b#LHe%T-X6lkBC*Y,FQ&D81K@jS&KE*YX,-hN9)d%-$34"kQh&rhc&AiFPGP&
k1PU(EC*9cabNBm4QPrR2T%rT'$Rb6aT@p5)El''!@NAQ`)j`-V2ZSDj4K'%r1,2
`I0Zf6)1dEl#qkH5di*0%,SMNMbp)rQ$`YdeVhe99Z#*k4bNZYjE(83JeZ[Qq&qP
F26S[*Ba%#[UUr#E9mbMc1DPa2"C`0%)HkX4XAl%KlqcF"E!'-mdmSPS#pYL&)B,
QTkS,@J6`3&MKENJ48qpi-MSIF$-Pj4mjk0(Pk0Z1$Q9%R$-`8c-BNr#0q#Ul%L(
f+TVGf*!!CrDR4BMRDX6*,&ljhBXE&)5mmdIUbXEMU@QhK%m!#8XMi)2GH)`@bA#
mXE4UVl,RH#'hSU*iGE3j(`L@-r3b2,c1r8M-,%-Ae-C&#ZT&T,#0Ql-kmH1('rj
jfYB$P'0FkQ"[@J-JL0'[R%)Vcidc[be&J6iiU)R46hi4T@(LhjPFqK@HX)FlkAP
fD%K68(B9IZXL9GA3A+2@UYCLrLr$[YVU&3MR+fSJr'HXbeXh99YkqX!kr%*,aH3
b!T&feUp1V8d"eKd"!)0*8RB@R`pFJ`qRU'5B`2MdESE*UAcM([HbXp1qae((H`4
(RXVd#BGpB9DIbMmL@N2PRT`FJj3E8q+jaNX!bU$,IM#i4ZNm64qFKR*fPaF`*Ka
VYX@XVK`DdjE@#*ddHHk'K8Z'0e#c"02X5e"iY%J`a,*%$HfDHG6&VlA#,,HYIAV
3p3Ri,FEd3lDBaER-!C3AaYQmHHpi`'SD+`TBb#SIUbYL"-HVFB*Z"iMPe-SR,Sk
lcf%ATU6kePD(ViXjjeYASCqi%Y")d8THq38UEp-iJDXC,J0mBJEE204,"C`Q&Vk
H"FL$ec$Y((5ak-50Ni,eLrDU'#GDM$-THPNQXLN#a!LLq,FT2#UZ4V-TB&J"r-F
lb"3ml0#aVK`k,8jUa(h1(mc"AbkmPKHp3q86V56"`+1,S5TcJmc9YQjcS#@+-aC
-cb$U#Ap-'[r3fhK,Tr,cj[#9!D-hMSUYL,V(XQj%'h$'$N!"9XGbpd!I%G%%R0D
G,MJAG6P*(5Ie!U,N,+PFKC8@F"dq+9X6UJi`XHIiVrNVUXq(Sl!@bUSBF"FcapM
q,"ekaAL0miVq2SiHJ,Tf(DV@J5[`RlC4A4GYd9FJ-#J2G[MbHRb&ie[jN!#U,a+
LQXVIS0fYAf'q[e-Mje$&8Y%mEkqJaj(VG-[03G&`"e(cHT*Ed0!CB0QX3eNPVZC
Lk(3,$3hrUpQqZ)K811U`a%djFeC1TM`'@"I&LL+I"@*V`,L3!+LQKrXk+)9kRCh
LMU3P!EP,U@bAfIEJ$d)[G()3'3PN8C!!I'(Lb)Lp5GTqaPL-lr-B0X()KhJJ()i
,5q5)#`9e+L&QhVD0*6A6!bMNId%)+VaBrFjKPMS+q#%E)X`kS8&8p"YQ82,&D0,
ldDLG4BC+[,#!riUHpVjU6l(!HFPP"KG(6JaXXMcY59`*[ia9*QGLeTYPqRk[bRE
KRI'j)TUNlkN,pTq*R6DpPAcS2AbGD8A9DZLNMNFm0,P#MRVXTb$SXq%)UUR#X9#
p'N5VfkA*TFR%pXYT@2XbYH(DJ#K#QX&`X#rRfdP34@j4Z)K&Q2r@DCEfi%ZL20+
!@6PCGQK%IKLm5`Yd%61X3[)R&p)pFb8pkDi!@)q*IIl*l6Q)qRa0qf[q0ARlUN`
pmUAmZDjj'`@VqScI,m4jI'883QcQJ(Cd`"Z`L@`hk8prHmU9mSmH8ri6)&5h)d2
qCLN0%LZBb)A#MeKiS8MYhh3Fd+MH(k-#BlaT@(dI9&88mQ,#Y@X%*H'#3#,pQeB
i'`rfk'pCNlU5e,R,'Af0c0T%P'*T[T939FqHDAC9K2F%FFDNbhE,TBeT[(ljp"T
S9h+PUe2L)Qpq+K0,re*rl@UN)fCTSQR'f!RK"E[H[ErBXd3MUDMUI@8E121i!a1
&F%4N'U"*,6Eh)@6'R1&[&3f"1*[4rHFb9,r2V%A1HID1)-K)p*GL1)pe%cTeZ-r
h'c'jjc*k52%FEhfV0Rd42'mk(,6bT9@d18*[f5Qf(jP%0,RD5qR%Eki,bj`,REG
3P5MG0&ejZL[SY"SP*maN&Aq6H%MK"FEP,*[H1kd4LDhmd1lNkA2EMc!BUdf3!0d
BUJ!`PAX#ZS9rCbe@'E462X""C4ibb1ed9Pb23U5HG+h1k1EME+h$)2pVq3qhY,A
'M$Xldi,I-VF4[f[GbAUke18Zr$(,G',jG)U+Y,1BY8Udf4&)@*S52FlTrB52VY@
ik!Y$6F#"J(#B#1(45LIp2E@+c*YZ29qjKLfZjj4Vrij1PVb-[%CSIhKGcNm6qic
1Ea9(L6)FempChXpc08-MFfV![X%F*a#`-aK5bdfKM(f#Z1HY[h2MbBc3ZJ2B8dS
AkBY`p$NUMkHQTZ`3+`kX*`Q8E@1fCBPhqU90%4mKA,'$kq-A)[%8S0er!*k)lKf
`X0UZ@*J!Ca%JMcHKFrJp#M#6hiE&R%dI0!fpIUY[""6!-'06aU[S)8,QX4VDKLM
JGK1F,jSQM%RdZ1LmrM9dimRlL'&1kIe8%k`jCEK"kK3*Ai3%m(F``EG[9b(XL)`
)l!3U+)SQ&D,L,8U&,(STrUT3[M96VVlqH3*kjKcV6@Q"PajN@FVT3ADefZ*0TJh
AI,NL%Z*i4dHa+)Bd!NkYMiAlV)EjfXJ88ji")Cl%m@C9D0lEAKHML+FilT'4lKV
*2%U&i1&SqpNl$p3ZPEpipD0Bk2e0(-j+k994(J16D!D22@YXT,M!Mbq3!&FV'4I
,&@&3dHIAQJG4$G3LQ'&3i#0*iXUDpT!!3k!YH0-#akLC1X#YfB[Fq9LfE%!NDmC
!!-MKVYV1aZEVc62mZ%!Y$4'k)h9UkYZ(MhGPDjZ4FhTjr@fYj[QFZ(2a4B%lH1l
3'mrYp@cAce4a%!dj@""rh[R&rfBc5$NZ0Ak-Mjm21%m24MZIZ49"04'FiT9-C%f
Z+aGR@Hc0Z4e4r%&XcEm'pGHD-[9"E2+Bd0Mja94!E1qp6Ur03@YGia2EZ0(Gh9C
UX*2'&V8EEaAq+!%!([*32ZjCBAT@'QU"GHb*`#SEcpRGf03*Jl2Q4bCdl,m1rM0
T65*hAVNH@[k2dDq)(,8*BVrbh@RR'mr1$ArCVAMIRa%"Q5kFB`Xka"m+m1KPPV+
rVRFhcRVJ2!lA5RI43II4bDbf-XZlE-c1iNN-[PCqh9(f@T0'la`)+N4dE4(acJ1
@+KZq88Nk@FU(44Ph8,+%Rh9UN!$FIrPI1#*lFHHQ,BqLU3Mh-UqV2cJ90$QN1-$
j"GkEJ[VXi5ifD$Ed[`k+jl&,9$N&YGV-$%QM@%P8mI!+@$iAT3ZR`PMC'Red`0&
ZlJXQU&JHNaSRrI)Tb0ZQa,5SaQLmVSd*Ec@2YqMGIShAC35[X-NETLki)I[YR%M
p`JV'drYJ81Z5TBi,Gc&`B+@-A,)JXif,`)R+M(2Yj3#RQqe9QX[I*dd"`6G![a+
'U69I``PRVRMi4[qh'S*lM"NL+2MC$'4SmAMq@#cKBZT&eJ-@SaVLIpbVBR8klc0
He,`3J,Zdqc&B14XaSYAPlK"F-I`JG#c2m8Q&1'Y$Xbb"Vbd#j1Mec!2SGa[i&c@
@ZHL1TcF'E1I6a@$e!k(UZ(@3!%hS"3AUFCbj`D9E"F9QK`0'QUMCSqIdI1!2904
*@'p(eYK9JRarYLqLi3h6@m+#5Jc(TJ[dQk2qG1`IUrr&8e[Q5kJ*Kem*hU,L[Dj
r`b#`H1TS'!j`EZ25[a`8J@4*MYl%bGl#SC!!Ykpi[Pk#[HAf[RMP)mpHk4+ZacU
ak`HM0Q!IfbPphTB0SQbjEY34#S4,+"Q2+4dd%klmfQ4L$b(Al,"(IU3!h[`A1qc
ZaE6N`rr!XdUfQN2YL)AhAJl-`FbpYI@I'U6+M`iQIIN#McK2'Tkk5J`mS-U[S-j
39FNi)@+lU#RdDEJcPE,JKB3T'Z@)"mfiEVUajQU&mJCYbUX4m!il$JE!-S@8)rc
X*0B@"iQ`e2B6fbTQ#&,IGCTj3-AB0Tq9a%L0JZRHmik,Ge1+m*XeeTcF46TT'S$
8'3+,k3(8Pq1jep5R4$2kIAf&4Z(4Y("q*-RYMPU&JPSEQ[3+jH%lp-qh$Bjl$8`
PS(6VA'eQPFk20c--3PeUS""C```B@MAH*jbUiCc6a1V2,rZFp0!$EV`JN!$lUF(
,-rFjiTq+GI&UGb9m)+kUAc5l#Vl)6G3Za8)VG%j(3cQUF6QXAjmeH032mc2*6[V
XU(b8Edd(5*3#GB`JGilK86B!VEea'P4miMH+X+YHHqJrU3&N[R'd`VXNipcY%)[
ErY*6UrDFlFB3&XG*-`-(8iA)%&N3bQk0EMY3C!e(15*2(Na#Af&Ub"R!E#h%$@`
A'4*N[GRjd-I9-K0+b(IE!FGdB@3$L%CkHDLM'I6FcI6dp,2rr`ma83C#@,-)HMK
i4'q!KE4YNQl3dVQLlIblZb#Lr,qRQC)[6idFEV,b2bUqR%Rd3AU&Q8IA#5ep6B2
-cSI0M%'Y0%f@)""Ne"p9$(fIVhJdjFkX*"j3cfcNEbLXEH&"@&hP,&!XqfME[R@
I(m@+"2iIbY56GIXF@19ih12F,dBa#3fd5iJe(""34mf6-YDXc5R+V)5HT@B$!B0
9rVN$&NQT32dcVZmdSV5jh"`GXI"`8Ul8pU2E'4SSprJ$!R)`bf-B$`HK-B8k3F#
fjpeiXQHTF`f-eX"ZIFD,FD%CSeGIP(S1p4H(Rlp8mH0X#LB#jj2Q"'HR$)e5E[K
)h@lClCl$`Fa`NpR"(KkMrBi$0LJ3l8h)1C!!S$&FDpRpCN*49VE-M,jfFP8L'il
J9159Y0-+jHY"l1G@(Y&Lc`J[rA0hLKIl&aRpffM%fqMd-Vd`!raB!aT%DMfQ%3M
5,`2p3M6af%**,KKH68JVE%f-"1qfQSb@c*L+rF9XR($4jX-MXEED8Z"1CZcC#BZ
3!%bjc[8I'G+eMRR!VaDU#IeZqr!(&+G@SdcIi(!$QDfqr-YYRQ"6q0m@C`19h,9
*`PKB'%qr#Lql[Yj91#&109M[-UPm(!-D!hNAB0q$3J0`+C&()F,#@&JeLJ,RcA5
Bc5Kl3Aq5LR#+!dR,*+4JGke"3"5@!9&be9e80a9)FjNRfMVaMXKr*2(Y5dL3!%E
LZK5ViaGaleH$rE8)Q0eGPdA&2Y,c`CS09%Ji(a!("([')P[CeDhjHSiS#6STYhH
80q'KpLNY#$dLm%%C9qcmkq32MTf64A[CcR4(c"@aHdMIem'3!#jVk,iPK9'&$,)
&9Tj!)N+UTN4UTYJL42%,#hb1#2dR-))65$iba5'15C')AIK"kPM1crph+Kf0E6-
B&,EHQR8)XBBfd3NEFM9L5"N$BV0QJ$`3m,fI(D8i3GZj,LrdU(RZHUL!(8,Y48&
QH3+Pm%j0X[q$Uj1ifjRp0Y"rYQ2A'QpQZNLl"&)X9&jIGrV1GK[I`B$[bdp0je(
*1ZFRRfh,0ifj%ia(aZ[P9,Y$*AM'5BEdX!RAL#hK8CS,I3,!3$aBk0(U&CdDFac
KrDej$XJCq'mEhCC4X&@($'"1X&'fNE#@RmeHP!D,LPLCPJYJck,$96kS-jRmFb0
bi1GJQ!A6mL5b9bq*G,80&rI1!TXFpRBP8@ZF8PKEPE59Y*1e"a!)4-[GbH4pFXG
!P2'lNpEq`4ENPV&H@MGeIXGiSZfANbGBp&%I)A*eGN"8$ARXB`290JlQB#aZ@Yj
G[Tj!PJSprZ`Y1MK-!he!aUJe[-kP61aq(2h&Y$DBIU)bZc-65Sj($"Z1PKr1(VI
[i2@59LHFFSGE+MTbFQT5G)F3-TMeL)SY$Iq5Zaa8M%(fETUF0"rf-UJF-#B,JC-
LSpVARaCM(IKbleq@&Eq-3H6[%FA+8Ym8l!S*@P*#aFTqLU@P9rG3TCXHCQdqL@,
GpQ8&E[lej'j-"6T`26!hTEpDD,589-p+828*1klh-)IeFa)G1&@*QC4IZ1N)c3k
UlYDbj$!lamDCf+UBrfM3'Ulp`a@2dL%DXaE9$)edapD-$)[ciiaRYbJ0p#1V0Q3
h`+!D%GdYrZTbG`bApVfRGI*ll"i#mRS#GHGTNl'`h6TShKb&KB0jG'Q6ePQTYP(
qQCE2SJSDMbeI@lVX8!krk`E'B&qrN!#9#1DTMjBc,)3@4X"CdDk4ZD9T2+HMJ$[
Kl%%YfpehK5BZeBZ+"Rc$aY@MjH@1kJf[bR(qJE5dJLcjN!#N5'LkM2j#$0@J@KQ
@lV,1r-lRiApZJKV'A*JZCrhA00V4Qb3Z+6l9&j[J#MNTUkJPD,i0l2P$lc)CMP9
Pef3GT0,LKUUqV9H8*Q1Z2P%A[JjmUIBGZRA@lH8Kp8KN$,D5I%k6IfIm&-a3Ji5
`PD(1[%6PZZ*bYH3$@1ecD#3d0lX@-clASmdpI,DcY&(VFI2VE36&jl8reiABE6C
q&[8CASC&`r8XPp"4Pi$PXppMGXkaD2LkEV[H3@1*!8+@-QPN#hEPL4@Mrm"jF1r
$$ED+2SCkLf)Q8rp$cAKGSqqZC226)&p%V966#I!!,[9Y@3$CE%`d1K@BKaYMhh#
4krT3*h%DL#bQ[GkcC@cRmG!rlAhBeQ9e0c0Sa1ph,&G)E'i0S+qkD5I1rSeTYG4
0Cfhq3Gh-U0kA@(9Ra([1QLm"$#L'LN82P9%IrN-J1lHDE[f6rE5deC[6KH0pZ&k
ZpE)`[K+#)YEc'GRm(jA`%P54BZ1$mU#3!+k4-Z'*l)l,'%b6F#VDE21eZMTbl(%
*4ElB8'C"!b@3!%2*qY#Qr)rSNd`dN!!q,ei8R0C&c0LQdJrr9D6LiPqlaY'Bc-d
U(NI%IrdZ2(m"9aLpBZN[hPN1L@p@*B%pMjY,8eNRl&C!5rC3FXkNpic@LLM(Edl
Be[@CQVa1!$I!H-lTCqKEA-3YU9BAM$aFR6CTRX0lQae2`AlQ6F,J0iI'G'k$A5*
a&TpL'DDHARX[,@FkqmSE[PTp`a*N2(KC2lTRSD&,Khfr!6!A`[4GH'"C[9IpK[E
J3'LA[3cL[qfFG(eeeb2,3LNh%h+biA$e'j5@T#)!q28hfXG&-*iY6#[fbAP3mZp
,jN9EIDBYiSAN'f+UQRLarkiM@6&HcjU5l0a+Xh*$E3URSYleLb4`)6HK9XldF(f
V&b&9*J#)3hN8bJ+hN!#3!#-V16EdU4T-H'Uhr6JH9p-0maDV%PP-`pKH&UK6mbN
`pGSf0k@M,a4F4*Frh6,R$!*f0F6Mrk2[p"+%(m--*[rIDSKRK@@mM'U@l8LBSa5
(PeQ"Kr%Qr"DX4iEei-V,jb6'Z,@6Amq)SpkcC@aX9GBk8P!'4EcP9J!-*1K#RQ(
pVL9BQF++'%ZX+BR5KT(jhH%SPGZpY2HrpDS%a"LN9@Ij3QPee4h52lbBmHB&FVJ
3EZAQJK61'qBi#cq)%kX`2H!aSFjN'4HH5*C'l*0)iB!9B#r3VX0Ne80+FB5khmL
ZRQm%@Y3cCDkD&pTlPQ`N@f6KeJHfUhTMX8NU&$N0#M1@4B)(&Ul@a'XPMK)2!0B
c`@`,&H[44JI[f6-VILJ2VrF"F&Q"iJ,Rc[Tj%BrI4P[LiSPJ6"#&0XM)k)dfM%X
`TLK4@(884F3IK"Bhq"d!kHD+)pkYHPf[B6lqY5Y[G6k4$EG51baT3)Xj0((+[qm
hRrSZpIIA-+0Qhqe51ci9QbYl"j5NlbQUU"6QC*!!BS5DP9lE,B1cp*QDGIjHeFd
(@DaYFM!Bl*h99JRGIMd4[jrTCLk*Mm9Z%UDEedEdp,JVB%lYp5kG,I2li8K%MHA
-NBmVQNI!fR9Sp10&2!GH[#H(hM6k,#eLUr!Vcrj#E2K5U##E1ViIG+S%!)@Ha%D
CPINA(#H'0[R1jadfiD2@EQHM3re1EMhj3#YI#G!JQ"@3!)&E6hr+ErX2iMK#ZG3
*B`9dpb%T%bZTb0j9XrJ*Y#d*eS9b0q[*N8l#Si%44QQT3A2TK&fh1m@UD8Z)IGH
+hM&3f8h0,&Bk5jTSNU3"4$"$V'j@2B@FaZY`-&B3%F4pEpfjU!8THKBN,-829UA
SAYR`4rkc*C!!0V!&YLJ9)*E+ffr9IrU&HV%l'46()i)e)JSlK3`4kbN6BUK(Vf!
Rl[C'!4FTLml'L2$AZQqbK,F6)ebc1&-iKE2%+(N@Mri%*l*YkpF@@mlPda8'!88
GbKCQ5,)Nc81+jJ!1hp!N`Dirkjqhe#dlirG&261PieSlPCdUkD5MJHfUIk6YaiQ
qfc1qj5S`GVUV$(!h6l1ba,d$PY)C'cbQ"!&qk1"S`j1I1J,Q(8jliBC#DC1iqef
%+DkTSPm&PZ[j+S#bQqf&dPplq54jD,3K+l,P4ERJdHh1N!$jcPrf2SV8IT2dD2q
Fi'bmY$T-#Z(F8IZ!P!aj@3Br#55JIUpR-e00L@3Zf3hQLG2cKQAK28RJ9YZmFb'
66d*0UJC*mraX34p++VZ1[*BTeX`IQ1[&jF3l,dm*RJm0Q`fN'61jA3Y14*FqD')
VR)i*@%02hp"!V,eBPj,jQUPZ"jrKGjK$pJ4aqL`Z'Q)Ukf92A@-MMf,GqrB*$4L
jb&RpV#p)T@RV1pfRbU"R4B,ZaHh)hjRB4%c9Y4HZ([312Rj++kqV%Ej4C(%B**i
#CHLA%e-46rT!%%QqVBbFUhJ$#lbkfkiRdZ"6kjil'MG#h)l@FC!!8"GLa6k#!)Q
r*&"YN!!qbCIcF6-Y-"8@6,RJ`1klQPilejIGTrdV%JmBXh*&$,2YpC8qm`""kH+
0[*!!cXiXb+R+A$XXQ6b9+YU8*cRK48eYb`CGEC(5a,Ki0l[*UH&q@hMN0@*l+&T
5jNR5M%,EaIjjTF$1c#F!BAZ*&ZD,3HBa@kJli%'HlE`qk!i%Q"S%%RS2p%'EDpc
P[$mB#ZZ+l0-@)U%bNf8B0CXM@Ma,299['('m#+#kM$A2P*-hVa+ckRl1K4QB2%@
P$8a9P05c8I'#j%#Sh&#EqR!'MkJ+r`P)NlJ#,1A[b6KJNGlQG#c+&0eAmkqAVQ8
i4A@LPdGE3FjAlpjTCdL)iq@L9j1'Xm5m0S6D)4NQ)%2UR`0ei`JAMi&3I%2D@&q
ISm1d)8PM3j!!&G$akl1)cJRJD&YLFNH2V,f&PjfccDIE!**RN[R+#(B'BQkFhV@
BcDZQ"+MI9Z0pl!CXZNBGjY%Bj8!)SG-fiq#XqJePaVVHX'5lj@Nk,aM[TH'SFGF
RjAmU3*iAlVK(KrmDeLB(`FG'H3)8qE"i(L0q68V8`-mj*TDNIK)$QfVf0frTB$N
9%aakS@jRBH!"h#k'rkV`#*pAGJq`XTM&V%Yr2+FM99$r#,QP-Q[%0B(C-eq(hQV
qa'kcmKaVZfEFIQBXrkJj8cI1SF*Z[2fT['83fb!dKKckc8(a9"@9dI"[lGlBHCe
U(QfBTe5TSN1+L9f6P)flf'6C&CV'PQd@0L&d1f'`Q6+DkPa2r5mQ)!($*(UDib#
d11Mq%2phRb"h(-$I"!*aRheX9D'ceL'c*Pp%12[IM-UjjK23dB2%Z6UZ#[a@a*[
aY`dAN4dpV59%UV#&i3-Lp!([Ek8C+R@cUF,2GcaJZX)+6l0GJKJE%-dS1#3(PUX
RL9SSBjQ5K#5acANZ$#2CIH#faALQqIkaF0ZCkVEB-P%'JY%YTpaI'CcGa05k"DL
$aLm063N@lEYJ6BST%C%cUYC,j(YdeDV4@B"`SEV`U-1%YqGAMpb@@kMpJTR5J[,
B(VrC0"6YdPKUfmLJPa9,b'BJ(&(IZ(qLl3eB4X%lQfKK+NLd5K0T0fhI`Y%ZZaq
IfMDILer$kHqSB3!%ib2-&&IkEj15$4ee+UPVH-c"3)IdVX*DmJ)klHd3I4mC`MJ
iqbP[re4FKL2$"8rQr,'01Z`[j1@ff90GdhZ+Y`m3Tcap21@R$p-Y9a(NY%'raHc
1,K6b[MH2`VPB0+f+@bbErM#2)*UFh4ZjfqaP1!R2k2Jj-Trh0,2F,mN,3K(jr@#
Pj#rl,K$i8mrNrdRi(AGF@`kdPlXc*Y%r`EMT32m69la%02hIcMCelEX#HA+'DVf
G*J2Ii0YIIB'lk!4G[CN33@dPb$,U+KAEeX460,IBa,R)%#el96Aa3Bk-dLIqArX
9i)im&63-ZL4"RfTldJF,9S%L*A4!8IpLbe(Peme&lE"SPMj'HahkJdSAD(G'K$i
pZkmq+)Pb[i9BJr4!RPZI,9JC91B'+@6[b&GB'HIH`eqQpeKq[19Jq&TK0ZMHma&
M)rjDi[FCq3"fD`4Qr'HIVR-Dc0Mi@-05KJ+##kA&hhlMm'"qB%h1dXCfA*'2P!)
3'erb(@8TGi61!36PNXLk!@02m@%T$`"ImZAk+4"SkJ(T+kJ#mmQLB)-hJA'ed#1
DN!!ql'Z!jT!!eRJ"`hESpk33I-qmR3J`KF)K083m)-K,ajQfUFJN)2DClPFNmSq
"96*2Uc4kkiM*Tm*L93A02mmTQZF!LUU`TaAUa-RLC5i`j1jP9l`m0Nq,NXcb%)-
3r9rY%qd264lUqHY+@4IKdTCi#9@8+iANNcCMrE(R3Qq6TlY1#%FeaeAML-iYFE,
981HL+4H8LT,rrrXI@CpZI)QYcK5Y-'q0&H9I9TRjrQk3!2'GH2DYf(GU"f+4Fe4
"#k+eQEPZ'(HR3(ra"-@T31UdL'"59P44E&ZNBbf[6E@3!+@3!"h8fL"kYb&8HN9
Yc%QjR*1L@0-U[m-*%jZSijjY[D,mamI'([Tem")8+qQa2UPR`P@P-LSI'!QVbKa
Vq'`%([H3!&k3!%3[i%3"@"eZ&DVJIA1@Jc2d3A(,iP%2+ec64q+l9iLA+*SV&T!
!qF9)GrT*Db'r`U,c[q0cjb+QMhcb0$`!KYrGT+G)Hm3'U&bqqpd[RE`S*N2K[0k
lG%rpR"Dc6DFaGd#KGTf`1)NS*c@G&,'YEKm1(*C"XTQ5fqb,Z`aK,D(9(f$jdPZ
MlR34RrlbGD!9+8kN#Kqp-NHJ0[hK5h%&&LGSE62m0h4(D&(a3cI%9&INFc('SCV
hA(@89NrH*+%J0k4R6d`l&Pc"ap'DFlVj&Da4HmH!mTiI2qE[*k$H%UK"NX-Ap3j
-$16D%l5aferD@VrUBNU3!055k+jVIh(0k4*+YYAh@EX15r"Rm4256LfaH,EU[9L
RaM4B9G%T$dQ"aYVRL4rCr(q&kC2&M(XDUeR+B86EC2ALT@jRhP0(E@lkJpTYC-m
Z*GZ'ma6&qfl%A9f-'C32FK(ZBAFj'EUcQNdq'eQp&X(Z$l!2eD-Ua2$!DMACk"h
1VDV-M&klT8M+AJCdMm3-j6IJbGkejfE`F2NEmqQe1XZ-&!*lfhUDKMTNL#kipYc
Y)8M+2G59heI9ECr1ki1a&r34ZIMMP[BmNXIq*B1bGfrP0!-5*rmDpPD)jciB5+U
P3iipJ)aUS0Z`%92@C+Pl83+G5GRd#@G(cYf9N!$abC3q$81e,!IALmfiX0m+4i(
e2![bN`eEiI`UQKCmj(F5#CJRaSH654BAqi92aTM1mNbH[N[bc#jUPhL23iJ+2+5
(4UQTQq5E%2l,JC`AqlNb#T'+Crfe#ZEFF$*p9-eV[MI%JcF"j6*0Up2)f3F,UD-
QdZcB50j9BUhULeXD!mrUC(d55VGmj8ik%khNJMLpd0RNKMVR!c$%AF[*0%jVS)r
)kK0k!$'54eifAA-V[j6aT5jqZS0jP4aHI`-f2%fN659dh3d,Ea5[aC)+@[lika0
#JPrMrq"X"AH2)TBE3ECb21%TTMC0piR`qU,jJ9-36[3PaeNbU+,bR%P$k4)m[cM
`&A10bBD3!2hU%(LZR8-+Y#3$X@&HS3NYjLLlGlXeGhfGa"6FfXN`cRGkBXHqVl`
DlHcU(Q)C"%@+p1r1LGZFP6"Ip!(9E4qm4BKp*BE*2l0TM,&[jRaU!#!Z`fmePp#
1N!#SQ5j8A9S5b-%5``LSTP$l,kTG!d`5bA9mL+%Y!DSa3F!&!FMSM*QHlA`A)*S
8RmjLac2PN!"d*JhqS"YY0NbUAZ&UVB6Z+'@P"X'KbLd3kb&GV!cQCBm%b%PH#HE
%DZGI29FbFiMV#)[80#H-eq6ZU(Ji'Kk4!PMV634KSFSK8D(-8DFHSZ6%DKdpeIk
$"HlGj'bk#ZDF9T5("+aZ,dL[e5@6TmEa2`Kp9['L2#*!9"J&X3bee@'ea-4TdlT
0-a&)L-!4KbN6pZeQA2Bc8Q4qXeaPZ)EZ&i[Ce++KhLPeh$NK"c,'dUjI!-qip1,
Y0`[N#(8LFC!!)'2TGEF&hS95CATj@HD-qfdM1"l*lbK'JmmFhZ)8VREqJ)+4j1,
SCZX0Rr)3QQ5P`JJ0BfRVj0Se+a,dDLrJS`PdDcGfb`Z$QaK%Z-,%B'I%pcBNPLP
JdUrq!Ui"bV9)GB9B!hFDCV[D!RAjpcUmDd4CB6!$6YSCb0[SRUm$$4qHVAHrAKS
Ib0&C+RM*MNpq'A0P!eL(-RGrrGb!C#ldT$N$Bb$)Ka9'FNJGIhpbE4hqRJ0H@5)
FR+qqhp[V8m9jFqp**#8HPI1)-J2F2LY!'%[)hA[JmBGfMGBQ0IaXc'lQ5!M@e*D
8mLDRQ58MRc[)*a@ZKcj%PkmlpaDf01C,FAK&r3NjlPGX+TY4lracb`SVT0+HbY)
f9beTBY8Qa[,([jFQ$q1PT%+QUAV'B$QUhfa,iPaMEUP#SCRU1G#@MS%q&0IB4EC
TM19bU8Vi552`T`8S9q5YYdqY"IABj!#lkJr@CAZZ3$ij5cD+N!$#L2A)KF+24PD
HPN%QYf6m!50@ahT!0ZKlCJY2T"b!L))(T@i[ND(32@YFQV4ZjK@A9BJG,L(N%'#
rq$"i01LBLS8ZRK+,rJLjTLF[hr+"LUVTLHY1kZ3*[p[)rap-4#%"h-YLDma!d*d
JM)%S`KJ@INNFD#'cLJ[*bJH&FDf*0*UeebcHKeFkRrC`1iM1A&[`eh(&pldZlPE
"1G6H+'h,KR")FJBkadCk[r`0`PDF%m(lV5aT1kHm["[Ufd(R#Njq"RTM'05d1QU
E6TCV4,"I-U1G**5Qhq5[&2GV!ld&j!mIS"ai-Q&iC%#ha!qa*PG5EkTQYRPBZYN
+m`HdIYm*H(1KT@G`80Td9,A3T,P)3eVZMiDH44!Nj(PHR0K"HNVDBJ4`Y5ik[eD
d@LK6Hd)XATI()GXdB3RFdf8*jNB"2cjajH+$jdbA&0Fh2q"SUFQC*YEG1AL!c[R
H`b4$r*VQZ1IH"VGDkcer,%QdR5DdV)D9VEXE@LVYUZiN,Gf%d0$Qm1"k)CDSTqr
m2K'HJJjVYfkhh@qP@aD5([IhB3l,RL*cmfaXQMRi!F5%5J[F$"S(VaN'imXRA6%
PfF5Y&)iecU"PD89e'2QM*Nip&*p9%c@YS2*@20Y"Ip2B&(@CSkN@DUlQkpDM-NL
Q-9b%Q"2"U8H'SPEm%*`UIB!-KPp6A#em`jYk4$ra@UV$G2V%#0Ykj'L[d*!!lS@
(bcpiQ2&GbLlC99p0V`+4*1c"K$@3!#Pq36-jb!i1L6Cl#*%f*be1fc$#dY(@)'I
DB([D1@Za)p0ZQID2#rZ0TS[M,`#qYB32G-*P6YCFDfF*ML-9LILGRFj3l6$bKN(
UAiHkXTMBq-CqGq"PdL*CmfBe!'H88K`&&2M9FFVrV"dAZA!fI[6Hc%eqaSm5!dP
EIU-l*ZB#hq$JBHlS!&Q[kCDK(858ZcmC8Mi#b'H"$-S-q1(2+[-CHkX$D+Haf0C
T28`q1!Maqe9aLc9*`a8Me2'LNN3!M[@EK++G0P5MBD3JIr+1p*l4dCcqM9CNV5A
S2jQJcDf!Bklc9XC*('"[4Sa6F9(P8YAbpQMJXCQp['L@HdLYPiL,Y6DZdZJGV8Y
[%kFTPCFS+C&F-Y-C(Q'(rYR-BI3D[Yh"Z"bdl4iZblZ69FqJ)b%dXbP!&('Ab16
J%)l2(d+p"@D3!*qpdlXMkL5P*5&JJ2,k1HJJ+mH2JRU@eI8i%rZYq$D$@BHU&5A
G2Kh#4($F44**K&P"Jh1Dr"[!r`NaT%NG'hYkpdR8IfeRfkP02QdV)%XNUJ85De!
VSk2Gh5XVSrK!LGQ3!$4hhMLYUIB4Db&U0FU-JA1UF[(H6M@4mJefY"HrA452IUH
&eprJ[H#%ZXY*A-(rK0bUaMI&"m648I&1ZKJ#J(NH6k+lX999Ejhr9Vrd,%KYTe'
GIT0V*FRPp+,pFRSe#cZl@[[S&UAVdDArUefY$pe9e0I1J"KAGl5Jm6&pP3FI$@C
`e3N(*&YeB6FQPI4UAA5SUcPHVH'"ifRP$pCpdjdNV#Xj@R1k9($Djf[*`M@GE*C
p3r%j*cZf!55V[ALNSQH9Z51VjIrjlG!M0qD)f5q4f"`RZL5ICZ8`I[3Jfi!!Lfc
G+Q@Pe4Gq'k'2ZAYc-*qJrVCdp"$d'[c`h4je$haik'#RliZS)QJQr(jaE$bASQ6
*Y%Q4'PbL4[@@jIb8NV,2NbQ9V%XVD2R*+j*80DZ3!#D)a5$j+d)libff+XqJ&Pa
Vj&FZie@3!0-$DRTFjeplVQCY4,90'EQU)K1XDm)p,N5rGm$k1b!VKhGMCP%MATd
XQF@6eS[U2#@X'K$('l-3QhQ(JI'REMd2m8Z(jq+C"FmJ-hMeQ!&!Ih,YjG3cE@'
XGljE(p&6[&CEIXij'U1b*0cX[i@qBAF@AM)D`b$XeJPdYfG,dc3*6b9kC,-H@ql
T3m[a+@#crj+Ti%%%[XZa+2f8Qj%[d(q'ZKl(d5F$6(5LU`Cf9XYMN!"D%%5hTRl
5)FDD3%5RZ'9efHTATmVe'r&H(2ZGp"QjQ,Y6$6d)K04ZSNelFIAEJqe3MEPRm%*
FX(5C)12[m-%)IHPeGFbaL5E3[T5VGl00eGSpqk-"PR[-eZRi%*Liech[YbbRD-U
T1UR6(Se)-!!kj$SVIIe'JjRc)"5E4M`JFC[1-Ja@[+GSc!GT6#C-+R)VKpr0NXA
,FhLU36,lel+44lQUVVY@%8I*aF3M%#Yh9XYQ$-MV-`L'Nl'-dMbIN!"qEFi3[2r
Fm!"C3[i`EiG[@Kqa(I&klNk9JaYDq2AaAPmCm1RL`hCY@,TEZriSKAq+8B2dVlY
KPK3c%8N'($*B3Tki[6L+IVqHV('+$'L3!1&$MpaZVd-bYh%pPFN3)P05X$!SD4i
!LUB08+6MU54j&CKUZY@3!2YQBi(r*CeIq3RZbKqU9-#K[N,NYXK&*964cM0Edq6
"`X'rQBm`a0DIU*`+ZQGT1K!D$qY*aUS*%XL4qk3h)RDF6A8jD)-3EJq6Vl*E+Jk
`e5AE#5,eHHcUdp),@RLEYe$Yi$%%Xmb*+a@#-Vba,rX(r49Y+UI"YjHTT'U%D8Z
Q9f1be*,)UM"h"-[Mi+j*IeH%,N-S82G'qmQm1c6AjSkh%aUXR1+(P"H-cMSj9&%
KFC(Y*!2iDLEc-hFZ,+0%Ef5kka32e%i"I#,Kk#FAqVE&R+'h@a'T2-'Yr@V85DJ
M8T58lGc$`&PMQ6-bU49Z65l#Uf!c@aJ3iB*cEQD1cr%Z'3XHK"`D%A`+D+5QH%S
(6DBZ@k*fV`![rbi8A-F1YCAQcEV*Xlc4l[#Xd&-+EE3cP,GK2B1f+0qR6$K$CJN
!4"`k2(&+Z%T%jV!TJ,fdQ4l1"mRHcPZj+S9MYDi-MfT'6'G2'GbALUb!Dm-5[5m
Qh0qj(lPI3D&iE(%CmdYp18(8BLHfUU`BqT2+`#ZB2XXALp3K!4l3RVADUl)eLR#
AP"(!NbRL4F3%IC`!UjMEI3Q8HYKT!E`QR([D`&e2E3!ie@20lMq8mU[d9N`+d4k
I1ER3ApCUHHbUa"BJ'Na[+*BKe2'Ci@qpR6epVGYMG)b19Z6a)q,ZVp363F&e2FD
Ei[G0V#rRN!$*&(!MYI9QH1(0B3$826Ul0[5PRk3e5`@'D*e&-E55JI5,Zh10+"r
hfMiL+jBq$MG-Y!hVYkB4k#'&QM1rLICf2Q#!5)aUZadjQN"`U39XEZ+9V%P*J3)
)hqc3Dm6E#B89lY[ViKr#MbMEd`0R4,S9DHKMFD4DT%5Yl3V0%@'lTIM@lPfI!c!
)-hl9[,aJ1NYTcFc3LGB-HJG8"2U`fXrF453lVZ'`J'#'CmLM9Hb*(E#"dEam3i@
L0AiPcY"!d!Q&9abjrBF4#5U,,Q()V,iZCdjF("N8BmiE!q[h,KZP2)2qN4A2df)
[XQ0$()IIE'l)UQc)6E`K'Q'l$paC5dQl!Q1%DR6q"iHXAK&l3rfV%B-CVNkGY%$
09FA3MhR&"5fYP)`SclVqa!NafCYUh!2p60LXd*%UA4DE@KX2GmHc86V5IEbHZVm
A*0QV+qRd#KhCa(#JGE0lU)l6[UJ4VRe9C&5JCZI5p0$4C!SN*mc**bTD1$kS$b1
qeM!YmI""*Y!DS"i0Q9$8JBk!D"PV`D2*)mc*8AAk8#pMV5&S+"j%CXa#&"*3TKV
kq%)KKG4qhSp!Cr9ABahqcI#%+,q!JlJ$pAHG$T8#J[jbC9"j328YJ4Y3YqD!4)4
[%12F`-EI#GidU9l%6lFe)!9QMFpfETif8(G8%IrT91XlR"LjlV5P1&`"lP)!P%h
l88@@Ye3JleH3!'$#Shh*@&T59a5b-aKfdFVT`CNrcDqq`XJ'HdRLD'$RG[QF!Xe
%JpXQ1$eH8X(4DDLMp3IE&fA,Ui6DL!6TL3Rl144aDdR#+X#!Z[*&PddMSa$Ki!3
G9!rXhi0J5$IU"FVY)6(bUKSj)U"5Q)qhQh0fJh1IVZNXl9(&KULbhlb5c*L1Cd9
j@R)X6e+iTb#+[k#2MQa#R&h'+XEm$(RUN[&bjkaL#*r0cql+fq5'6`j8BG@+NRN
h0h4Ue(e,pmde'L*'1BT(FMBTNFE00PE"-jTVE)0hI-(iEmjTM-RV*F4!!Sjk&M@
N1i4REi,dYPCPqZ*CJB`BhhrkPYPCIU#lEB'l9[G(a61JUA$1jd'5L+*ZJfX#K(5
a"f4&QcmdL+))@C(EJQMeXS2kVM1ZVfK"9*c@QNf5U,H&LGhXTbZ[j'-K09$rm[h
dPUlCAk8r8`-kYJ*)2KH%"$&bB&jJHb5%UjXY)@N!-LJT)"lk@,qK'Kc'TZ,ALl!
jHUDDp48FBNpkBX@9[aaU8FfB#eUYdG$6IG(2LlhdQ)jC5r$4`Z@aGIF["649PV,
&#5ZHV)LDHUjq-`9-L1b-k1IQVYDY[GE8lA+BeHIGp@,rN!$0Gh9mS`dBPah2FjS
cUpMAR%l@1aH@Q'4M[AMDKA0Q`cJG)L4d55&*"jLB)'"I*Qr@2UqQ4[M**VMD)"X
-q-A15Q(@Kk'Z'hS*R8HGfITGkb*YkkSV+[j8J0FpmpXYAQ!c"8MU22,!-TaAK'U
q"+TlC(JrbJF4k6L+K()$H"rd5ieZl#dV$NYVF"PaL(Si9eZ*!)TP[#fN%Upe2Kj
(iKr4qd&*e8i6fCD,Jm%S'5Y-CRb!%rP3Fc58#N6!'3%pe9'&R0(F354TZJ2aPfJ
NPM9rJa)`qY@,iI#d2q,4F0T&3Se*8e`*i"LX"LJI&1Q4f#%*ePEmEX@DTP6aFiY
[-G$YFjB9P"r`Fm"cG#C!VfB4"iiL8SXmK3R+3IYaAVJX#S!&"UYHp(2%AZT0k08
a!($2&+ih$ehcEJT))0`SA$9&j"8NLf%RbJ+XCjQPmr%Z'Kr2"ibhNM+e,bF02TX
(Sbj'JqrGrr'#&Mf&M9B'UN8HBQV6PV4639S!)4XGPiH%aH6e&%BiK9&S00m(9QE
)2Ijmb4&e!V`BKR9$fSCPl5ccZ-Ra)$*KNM$dKGURM3"pNeqUA1U6EQ1d@34[&Ek
'!dPYVL+UF1,8hV3KSaFHVZ,)(2iP61mTc,(ZX2X+,+aFXm3BD$(20Lr5K,q@K4B
2Yd[r2BSE[)A-(D+MG'Z(JI3h0UQ*$5"1r@lX*Z`$6dYRG'[GMkh*kqI3kIC+Ie!
Uk2dTI!UUYMq-eNkJXNRma2ZKJ%S9IB@kC+Cm93[@DrVYhM!Njfl5q9[99J-ka20
qCMD8bcpHMDqUdfT8T0)R6T*q%$AC2QfA&Z&3dUVC8AXAd(RT,64!94-U-e*aQEH
ZYjBm2Z5TEcCp$"XaCV9T2fP2bceeeQPLIT-D6MYChFQ1GV"+hXc$"ji%4%@S$2,
k+PI9!8,T90r68EUe&8e[J!)JR[BVrNK[fD1X5Fi%i&fjZHP[I[bh8iEHeLHDLC-
'1#l[(@%rKDXJ9i5-`F,Y9`F6A)h9bNkYmfIi[K`DHeZ4pR*[kM6RVqAKHF"&jTp
!M"fZ3@@'H(fKQKQrG+F0(6!LbE@HLUbD0P95Akm3Fa6J[Z""#d"H&0#hcVGm2C'
#FMmC[)@,2LMelrerMe4BN[J--1-,a`kCfJrB3P4U$3,(`rk%NQrB'PbMDb*dJ-'
NVm+N%A6Pi5FeGL!2`j4dGpF$*P!h+Q0YD`hFp(-#H'R$UCb,C2#Aqh[paCrI4&P
bhpR)fl*LrcFbA&%BpbRKre0J9,@8h)8%*aEc(L3BYb@dKm&jbi@SVj`r'%!cQh5
k&IjXPlZ%d0l54IkLfd#`c!`0bl!54C83DM+dG9GV3hI9H2dbNNpc`C5(f5R0(fp
28RH8L%"k4+KQEr6dBqmRe&f8HLIQUhI8(JCA@0)4N!$K#jfXGi(dR[h0-AR&q,a
DS(PcCehX2j5#1MjDFpdNfrcUDJZE"3I*30QC&KQYP2N$Fk`-NAY4HYMFDr@*GG(
mAQ`#e393"L[db9qIC6Ddm3F(d(!9NHm,PZ((KhpR"RBAFFVX+,XNA#F)4!TFiY1
pb%QYUCpc'QQEBRR(-q*KhPc59PIVSbbfqY2pMp'V%$4K%2K,"*3SDC!!hC*8BFd
33-Qk[B""Z5Yqj4+Q)%!VPrB6cEJB%H$qQZ-T4b2#SZI!Va#!UhE@9'p`"raU@mX
fphbQLKEiK!Z2dKIX@659DNbCL10!PKZZqPAB(XbaJ&QEH%aiRV#DZ-PP4J9Ulb`
55c9JD"C3cN"&S&)6$Y!d[*d#$SKMZcDAU0%4J+8jSiM4r)SSj5DXE[%3iQ-(BjM
i`&Q4LPh$cFNImR0[@Ac&`bcIAJl@VL#%MmfZEb*XKAX"*e'`J0IdQTRCaQY#r42
HbkMU@Xjd%lQLPT!!YA$pESrKJTbN0MBXXBqTSR-aGE%42VP8jMh)iC6@BFHpZfD
)"BKEA%8E)J+p$!)TriK(cEAGpKDc4[&fdk9G-i2l$,X#C+kB1BVeNFSkj[6jkVN
A'hcE%Ieb83M,&2BdPf3eG[fJQ)b@QdD)aVfYG)H[L5Y-*DqAKBfpcbT%ZX1j3j`
3P01B4#6d(Ph&@3MUbBB''PSQB9'X,p$m01$6BhKcT+F&i9525m!(KQ1PU02IaA#
5FaRZb&`H0%[)dhZkSBhh)mG'`D%bP)qCq'&jQ%Me56#(FPhUpN4S6cTbe2d1dkG
[EEbD(G,fSd3kHU&*)FBX(lXBV[1IkeSk')0a'-M6Hl4ThmIl+UYXBIa,rU3mRS[
+[eje6!q&b!&Df*!!$fRqi9-3pZ$F$dB'GYH#KA*VC,1e0qUCrFDK$qkp&Tj(eqj
fr)DZ+FB#mdhReR3P-9+1(JH'8N@lTKq'ceqQk%4i#'9+bA[TQJBU[S#)L+5Ak%U
DI8AJd3NRRDC)lS6[@Fd*KMVTiJe4BQDR%-3LViFq#GLmEBC@[2ckSCf2rk2LCb@
*4TdC*N)525M'Bf[h#Y"ff0AZRYH9[9GjZ$G-SJm#JY64eD+VN!#8Xb(fYe4A!5M
BpP*6*H35)SK4B6D`Y8-cS[Kc-'$eJqd6!jl%24)rDbaHpqk"9[DApq0ZRb!R[DB
Q1(P!aBQTX8MK(0%1r3cCSjHjPTblJSQE%hDDNUI(5kM9mp48r,VP)IA+&S1iYi6
"(BMX3m1)kJUQjSkILRQk)4ZfPiHEV'mRUHVHk(H!"5LbJc8kq3`C4S*$*@H%fJS
J#-l&`@d-VTNiL+pS!!)'fd#,e`9'TC!!GYH$SiKr&1"@i"36e)$ImC`jIrR##Qk
Sa9(l[#GY@p&2ee%1'0JpS-,4533HmlK)R55Hra5RH-$ANELd(j**TjqXl4#rUK#
RP1LR2XH(J+l%RLGcMYj+UhqSH3`dN!#T56TkKZ2-!Uh[Zi$e,k5Re@bk[BMEJS0
l8FK$Ka`V-*EYaJhb@J*9r@LkU+LS1(eL0f"[P-m9ijj"0%UUrFG[@ZJkhkKDkVX
(hFp8@"$0ebF8mZ2HHFG-d0YZ,B8$&'ZJj!bDHkM(&*%P+N!-hRN&"VaY0aIC8rp
XA!-EHQL9`jB1T@B%M8k8@jSLZ[L3!"+8V46fADML$hN3IARqk@U)E3[mh0k[TZM
HEV,F@AYMeT+!10pchl#1pp'SR[pcr"AHGDcA'3e$r)ZbP&qD"9,qfb2FbBLbj8P
B6ci9#ccr$%0(Sp@TEcUd9$U-)25h3*B)biAiRQBJc$M3$`bHb$@8rdD9&Sm",kf
N&QAkLZcN,4CV&j91(k@@%@%[)EmbIUd(&0-K%lL%ar2,,0bGV)1pcm!br*c6K@r
`RcKj@kL9HP59#c1e&4@H2"`k1V-0AqA+h!CR9*J#S-dFeY"&cm+(0f"lj+q88``
YQq&*1VDK+rNCRU(FV,cF($LpR8lY![+KS$"I2Ucr0,3&QR94YhpJ)qJrQ'6'Rqq
Ik1r(T$X2llh5`e'NT)##q8elikk530Iia'XaF*Cp--G2,S)FiCdGl"Yd+qMJSUl
9&Ba8G$+Uq!SejKG@hU-r4G9ep3S25f-[$h$IJ3"1HAEG#[SSFHKVJD"qp'S*h68
)S8p'i)EX0!"1K)('(`$d6hbd+CZI99ek-"Lf3kpqUlKQ'&5dNeU"X8e2[hemIFl
1X2EQ-3jflr!ZQ5JFcl5k`M'9f'VfQiTa'j)l3'EYj"%4SbqJ$L8D$Y)1)UUThcI
#j"VSd6AU,N8mdA6GZa&YH"FadJ#*@Uj@XlH1Sj(i%d*+ZbZlc9B4L5r"KfJTIC4
@1$+rb)#4+[GkB%-XQi"maiqmCX&T4Tia&URJe9%lA[&PL'`pdQ@BZ+2l5fJG((c
JP2'-"le1f)I!MC)iDfKpVmfcNiYlc#BFZ+V0cPUPQ!`8PYl0b09rY"h[`je)G5Z
,c"epajmaa4q,LldII81IbX@Pr2GUSG%4++PiKK"T*3j#B,'q3&I09B-G0XfERY$
&Vk3!Y%6IZr0VYKa"-T5rT$hhqmS&9e8T9pLD!LcD5TSU!'NGj&3rANXHBDCFi$Q
Fj[6krNZlSI0CmBY2i2Ldl1#@El)cX@fZXAL[Ch4!IfJ-(1ZNN!$QeZdeNGq[E!R
P1[&ACU!-ld%hfUN2j@rR6)hH9-&3G-0IciMcl-hkQb8`YM(VTIHXc#3XYm!3Pe&
mjd$@G65EYYFX(rB6$D8FmYZ#j"AZi@mj[T1E#Dh!fFhm[ZTC'KNF+e9h!qlIFfr
8$'RdUiQj$VG,CN)2@GeEm[Y+ZBhdp5fRKGGB*QhDLCP11D13!0Fh1F4,,&b$p`D
AcKI!YQTUhac$XS`1VrXSiMJMhPF2D9lB+!ZP(!2a%Dd5%PB@Mb3c*m[5RZ128RD
ViU2(25d8M1`ik+E4X"p+-cXh%)2SFB1$Pcl6bphGD(9P9248[BHlXI(h*KUVUma
6'PEY"3bi,bUGSU),rDTm'&U+29FVk4QUM'R2pAjLlU'0*J"lBKq9B!-m,d6@1EE
(me"DM@Nr0ma6U-2bNKB['"EVe0-DkA[IYVf4T[2R3*%a@S*q(@1#bK0-[#L$TD&
r%[E))m1#k&A!LJ'q[$j["ZJ[`bkS1dGJbiUA0f4e2bbfhc,ZX4A'I)f0!9G)RM[
4%PeM20D)fK84U`q)JSE8Velm0Np!RiX"%3252(#CISB"2f*L5TPqDK)+BVi$D'V
T1@,A!T4c!bp(!f8$q`Vd6%"4pINY'98Bc@T8e210hKBIF,%A%PVfG,DXrVBMEr6
Z+e@6f#Z9rmkl,5pX*BR,XVYjK(,Y,E-mJ9Aaq16A+QheNU*r06jUhS4bZjr#ll5
4hPQP26lc[p+2G83d&r5aU)(UPr++iHlPPH@QdE"Y*Bp+lATjH%)bp953!%3SlXp
![F+$j%&cK3kbrFp3r&ei8!31h@CAV@iJY(6-f3YH,GSNK&18#@DGN!!i$Z@ILJP
D%rFkF15YJZF#qUjN1jK"DPbS,3$AXSVA'V,eViTMQD(&Ij('-Sl'dZh2'@3ljUq
&hG1kcR$eP)IqajJj$V5P$02l0i'aZp`Mpa(#M%4rG8+I+r8XlPHh0!h2bCmappQ
ZG#BE*,M*FQh&Mj5*Xj!!0c)'J25Vq)ESI@MUG5UAI-2mf[6Cf3H+T[+)PBhQHj%
)[%!4&MP(FY+Uj[bG,DDU"8@`%pb,r,U`9r,jU3cC*8JSPp`8%8TpdflJRBabP4E
X1!4+"EE'`)6-M2M4X`!ihRE!2Hd[Y2h31BT&hQM3V#hNla`fd`GaZ#VZ8XY9B3i
A$)ePV+1*1GDNINp5'qD1082ZBE9mkp(NL+-@JjB,,lH,[F1I'1Y9UT-G1rSdD6f
`rMmqfG-#*8MkZRBEV5Mdcl@X@EJ)a44@TZM*SNTNCMJ@Z&-*&K*0+4$$4Z[E`hI
(r'N,9Y`65DcaV3dR0PQY%Rl51U2d*2mRB&41HpXAp2YF&5C"&!QS[h+GJNHd!U%
L$B@b8ijE9@UD*SP3$j8$P&DZ#aRl$AaUMf9bVc'[llLHj-'FlIS9K+I[&5$Sc``
p8fSN0%BMm5mcmG#Z)%4[[UAF!!8mHhPKF4r%'e2+!c!i'LbV9f6R41![#43-cQe
`-iVb+Ni6BEmD$qk%rhT@4LkLZh!4&f5J"Iq5Z`Tk+3-Gli#LaaceDhaKl"@`'4K
m&UdJ@D@L8'bakJ+!f-VD18mTcd4pPZViB2#,*YVpQ0jdcZ,D[c@GRSM5V[`TZh3
IG`-&`b`m6eaSr2`5G)XYD"[TK8'1"#&aPE8IMPh[UrFV*K'qIIUZY`@F1ik)eEI
Dk6$h6A5@#C2NX[hXb&+9r!"j"PR1q!q5llLA%m'jNEhiY'm())2Dl-hbF2j3dr@
cB!Pla,%ec!3)V9*["QKZElhID`PZ0rdHKe"+1ed!9KTC)5QCABQ`X+'5AiU`iIQ
-$X6P'DZY@ZG8VFQ@@FA$)CJCU+p)JFm22Q3LIeX"0-ab,Cj6&2dc`"+Vca0je*%
9-Z,hJe[429iiQ(J0QHK[RaaFi-QGi$f)j@Y-mhc1hUBDFJ&[,$Q'3a@HB-%J#'9
CENp(TA'BYIG0$ZM34@@+QXYa(Y6I2P9[4!dka8,b-ZAe66[&'+1+'YrMIaGDh"B
%q'Mdc*AjVdj(J80GSeU#'#0kiJ'$8PPm$8ZN83BqC`0YE8S*(Kp$@DmePZS2J8A
@X1V%)3UHPCYdAr4c[!M,l*N#j+$G3,5'j%*R&Yr6Hk+6[ZAmeV%%dCN5)"mJ#1U
8'(pi`IA0pYaUbC@PUDFD0F-dr5a[P26rKGNcF#X$I%YD%"9cXha5c$T)6i"PZp-
,c-cC'AcT-icFX6eZ-f62L$c!KrX8NE0jJBD"!3!%E5!6fT!!ekZpFFDCflK$lQ)
da(Uq#FBD!(k4bc3E'Ad$QZ4IB)+N[Q-*fEm*mfXJQdrl(bLIHhU$!jc*NM+PdD#
@$k$Qh%DlB33'3K2,06B8p)edV,L#&Z`2i-!$)j!!f6(Km(CP`(@3!)%KC8h,p""
+8aCm!9aYI)P+XjaA!$$-5db)lN"Zm[KIiqFi`FJl$*U0Xec+Q)k4PT8#!$9DK@X
Q)9LDj'6TjS4@NTj!i"XVIcHMHpiC9A+2PJHSYdaJf5cepdc'E9`P"#9&kQ0"Q#J
pl$H`f'rrUF[cP"ZN[*Fj[G2Um(C0LMQ!ZJqNY6A'F0P55cd2HL4!a%r`B,)j'cq
,0[c4QZ`1Di4VfKk0f$$#'1-Cch23+0pq6Y*)+%EeGDp*hT++XHSqG58kFJdeXL@
QFAiX5f1L)%[NX'p9pLDTRErp18+VF[HVNZPdeTKpEk9hUIf,*L@TarPkNc#")"c
C115C["!h9akUGleP51'mDEiP4XR22*MbQ9a93Y#p5"UI'Ccff6'P,Mp@RaG[""&
[2j!!f&&IkC!!%Updkh""!,hQ'Gk6YJ%l#Nfhb%$0[0@MY5CM3&SAfK5jRD%kNV3
[jcMh31rIJ#N)`6UIhLNX(5ILe*rklIJ2GX,Bd*YhfH8DIbaSNbaHLZP9,(jalV9
kBD'mA8D4YVA&M[rrC)cN#"3Id!L[%hfl55Apf1VV-fLi1JHac@MRL+Vkk#iN%KX
J&fa"2$NbhYmHK&Q)!j'L)J03cLLLUqYcX"h@e8Fqmaba)%#lV(2jRATBSSXJA6"
!$$S8ZQmJE3#ATF9Q!Mcice,@*ZQFRrXLE"HZ,&f(KqF5XbM0BB1#TkZm1GLf@fY
*"$hlcQQXGlC#m*Db#RFK"1'Ha+#q)+('Di"JilB$2+*#q$ZFM6rE*eG)V@D3!0l
3a(FaS"A+cK"aE+!Q[5[E0!*&S"prB"kTilS!REZ2(X1,i@2B[0C!*+(FS'P2`Gr
N9D"a3&K2qA6IGEcpH80[f3INE2p`&0e86c"+c"NHDeFA9#!YZA'VTQmX!'f+TTq
NR!p0DA20!RHPIr#Cf'L"%TZRXmNd10fJmaiPS9brqkSLp)@mA$K62[a-[dSGh[r
ZdJqX4QFMF#Ckc$rQV3Fa%lYJB'l4Dfp20!%0XdUR,1jr3M496`'@`I"Z#kQ"N5l
BcN,!NdbdD9Ya5HkVTV%KNZ9M3+Y68R+CI#F(Z5FSk$pPCGCP3kTBF[[G*lYVkCX
&MBM"ef$T(*3Qe*!!rFE"R0D0aP!N[65U8C1a'a(LQ[E'ZZUS9Ncp,0RNP$B2L5a
,US@EpQN+9Dm921idN!"[8BZKkjAa5R,Ah`0Y0ZcrbAqj`afYjCk9U*afa(B"-QT
@"@a#"YNTUa*83T`&jjqNG$DU3+mlK5X@idLm2)!)R93Y*N!)T$*r)KHHriM',2i
MAHc%Qq2*@bhm&pqJlSFJN4VX[HaPhGiA$(EN(QI'"P`-Kj3$JLYYI5Q(ZQ&(,AT
2T)l0qX"UQ-k5&HcSN!![)8Sq4[Yq1dTbX08P$`UV6c$N#KR-ZYNIc1,3(T`1MY'
&TH'2m`j!F!,`r'5LEiL'GUkhE!eSDFd)3UDcfU-)aipr)iV8,DfVE0(5iNKU4fq
!&'Fe@6T1c`V,DA+ST&+LUU#MLlaiX69X%+'Pb1eMJLpQ0mJYLbd!9apfm98eQCp
dc,RVN[D2Ym6Jr5GQiakRl%KP2DPJj@2qG9e(RJ!hTYDHT#941,U)NqAX#MT2JJB
I[YP9,rc,,R3iXNd!"+G8&,PmEAm-'LVI&1+BUG8aVUq2Iic&Rd2!(LYSPqRcAeI
M3*fCN9'&@`#[b$!3q0KR3"jSS9kQK[NUDdX,`P(UZ*cbE#$0NSJTNSjc!V4h-L'
b46!*dCD2rfHeD!k(T8FY,&VM36KAG4*-'2+BCY(Q(i*!Q&B'&d&("h!c8RfqG)e
HpT-@T"Z`G`"4&L$*cEb`D4*K,FeVcHd%[5C!!mGT#V[6[LL*%&b*ZeX1iIeCDl*
5jbm+%YTh$SpLSD$Je,,AS82D3aC9qFPfi`)+5p&V(MXK5#YXeRY(f9EUTD06J"2
p"X+'Q3SH9A`)miN*U+&d')&aLBdbCVdH!+qSp"TZXB@+J+R*UN[Q@mJ(fkU[Nfb
fG*P9'*J63Qd-Ik'&acqIDkVb4H98V6&&EecbQHbHcf*XE6b9TA000+a0Bjr3d&Y
*fhhX(j@%@P9EMIh%Nl-3P-XjJm55[lT(Uf5`FUS8(0`6D!-hh!8Bq&0k%k@I@-f
%cE$#ZF)hI4bC%a5GGV5G3$RNj-[lGTdQY&34G8"1G1PQ0+Ke!(*rARGHFETa#F6
&$&kQ*eM"(0TjbEX3+hG@UfD&995Jf5qRBml(5X#T)$8E-c&!b0Qk&2PlRXAE`R0
DiiZ)!YAUGNUY"dU`f"iM$8Np)UE1#-[5Fc2Kccb9jUAQrAH(0MGGjmXqTT!!0M@
+(8kP!kMfDD%L0#+[[*U@P4Sjfc'fJLPLd&f)dJr-Uhl!CZi9j,PhVe3X++EG(*9
XTfr(%MaV3AhPk&$91(DALKR1LL8Cf"U!*+@LXe5fUqcMr'FZTMpQj,3c[kU4"XU
qD0F6)2i5DeikHPY)%4Yh`T83B0U6)a!@GaJ'N!#48a8K8lab0XdEL3pB`8m`C3J
'*Qe+'9e&FXSGQ*@hQLqVG"MQTH!X!%0TMFm#rrLGBS"`[YJ6Z58HRqLR[6VY1BB
+MFNXX`MSQPEkJT)&YZQ"[D4mRKVE6Y6iZXK0SJ-lj&K$4DKTljN)IpVHc$NfD13
K2q-6jSMe`D#q5X"Y$l32P'@601rVFKQ6ZHBNLmAQ&bZhLCBJ",$5fJYfRFm9TX3
!$3MhM2'+UF)''B`VJ3ljMrKhfHfGN!!`p1mcr(a8f*D&m@FU[&P5QV22`c2S[i&
HSA`c2KAKc[pS6+&XF#l"h&fYD0*KIV4Qm"%PB'm0lS-pG*aDLU8FaCQFac"XCGF
3fc&UcH9f&JmSb4l$lP3`68VK%r-I6rJl10)p5VmY@@eLUfC@aKYh1hK@b#Rd-cS
fT)@i0*&6-Y@TP64j+5eKEFQX%2#,R`Ha%(SI8(MrjeSdZI2a@lETKlX!R+b8Uj9
i"GQfN`qCH5Bplc&!Y2K`',3%dba$p"#5UER4YLlBZ-*hC*Gc-K%ZM--40*jl%Y*
iKX[()19N3fIfVLUJmET"4!6(KCAC4ldcZKf@FD2q2R*Q4ba6PK@9'-"X155k"MU
JPF!09dL+@K6`$*4VfJ[TJGmDEB#qkDFdG9Q!dJ[ai8k-KlGq4QaK)[&Y9!!PcY$
lKQSKh)VP9LI4jH&VrQr%QK3B'c$Y34*TME("%b$$GSa)pSiTiCHiai!ZMc[Am[F
)CH4f,EUU64Z6Z18qN3TCrAXFS4rI`BcFIl3j3Zqb6I',kU,Xm$4m2!a&GrpIQ"+
FF@NmGmLSi-@bY![m$k&$AP2iN4m$ehS45HUR8HED#"jSZ`&q8%I1hG)K5fQ3!$1
)[V-eCH#+9)N1X$AqC3iA%cjqmfaYJ&`1pbq%CAYM'M8#9'Nqm(qU@0HMX$84eaI
%``6D((drGE"Urqf3!-c$i9VJf#NUI6*jF8`#V9Q%Kad)SGCUrc9Zk1,BPlR3-1U
8YmpT&#iRU([5I(aI%)3@NXFL9j!!3P`P@E6aX-#E0-m@-T1PIDUbPQqf2aE(XH#
Ml-16r`rE&8I'dr`p)QIGcD5EVc`NQ0@M12Uq`N@E``qJKC)k"dEH!j6d0Sk1-pN
,rAqc%5CDP,eVS`HRJL`#$V@4N@h`eD,9%l-3!XYj`mk@SB5,#SDm*i[3i2$pBk,
A[LK&,Di,HF`[["I(2p2HkLILV04G5[`%K4bBiqb5QPc'Z@DmLd*p@JX#Phe,41"
Cc4BLlV,ZFaI`K@28JMDAbH0+e!$FrQZ@SH*i(&,q,QZ$TqZ&MXEJVNF``kfYSed
IQ)jVr6kle,DFG`![9H6bDN33[FA3N!#%*Aa%Z)@+bXVkVCPj2DECV46i6[h4K6U
C-V@K'-"DQFIqmq(@@*DDS6qS[H(hI9Qch'LT(ikaGh*$,l2XV)!Z6j!!P9HhVH,
%hLE39HPKJ$r9fVph#aMfU81mpYRK4F2c2QV%8Vll2NY4XEIK*1bTR@3F-he+B)-
caT13!$N[J+IIkHeXmN9DE96**SQE%cLe#6@JpB$@dJ9Jj4ZT(!H3!%)"bA@#dh`
m"$XIm,eUQ+Cm,+Rl9[c[8&jVe+5KZAp-a&9M29UKRLhdhB"JC+XbeK!aTmL[dVk
B$R3#X@FD!Pmla"aPLV@"T*&[N!$YrFAfYVQHEhGiJfP3bq(E0D#rXYH8FV&-XbH
U,X[BUhF32i))&#amM((["320'qNS+F!["rT'cj8hV2Z8ZS"fIiiYC$bA5%4('[N
Y48Dm%d8j"PLba8[fJ))"FC%!PZRjDSAjf1(X)fE,0DHXMT%K,JdNH@"N"Rdq9,Y
4)-(3"-$#'5!0)lE"dbH+TGm&BZJQp9d*LYadmT2P[eS'8%(4pPU9aRa0#BiEKXU
Qlj&+4`f6,4[GbAP1Y,$rM,qPX(AbG4+f'JZ@6d`5',dV902514f'-3YY+AlUahH
p!mq(D3QVkSiDN!"r8%DK-S9"6d1dCDXJ'S9%!N1Rpdq!Cm4J-mJ32q%GVihBdCZ
#Ncp%PeLh2pIVX@B)(#5,kX&eF3BhGCP,NMAYH$eBdm&4BE6cL`'AG-%94T1LT+'
l`-!Q0Y4A4Nffr6hi0!"V-H[XZ5q9$Np'k4Z&i*X*Ffe,ZeT,jJ)H+MG`IeQFY,T
M-EF2f5+(`E!S*EVrSMjHF2diJ8Sh&Thcd`NLQaXKLZmTFUp2c)R2*iJr9`M9-B`
rd2hXhY85K5$XM62-4*SK01cBSKF#5jLq'@JjT4Q93(ji0JF($h2`jk#[5r"0Tri
Pf56R`)H!Tp6RN!$Hp'-)+HKJGRTJf*!!-b&B&+4X+Up(VZS+[JAY3P)@KHYjep,
SQ[i#2`-D!Xe)$fAd'+BfdG+0TmL6(Vj"-(2FYdilU3*SNMPd[%84$L&RIYC1XV6
8Q6&#K[SdS#kkVj3%f)e@Rr"Fm1hF$5p2&CK3c3FfMYje%J-*j-[BS5B5-$MjhMQ
69"SfH3FH5dfS,J*!pc*4GQALNcD`cdX2pP2rA%,l1['UZCZYm-cB%AT)Xk'rSCS
!qc,KBqlI$@ZkI5BlX*a[5m8#NBcMlI9"`$c12&YQeTaMDJI1#([YFU$5X!rXP'6
miPdVfl6@"iS@If!R5ZXTR'2fNKBaX6rXTTLbf)MU0AbQ28C(H,RM'b2@!9LfZV2
3P4q"c9h"p[el$24EIJSe"5bj1kN3J8#mE,Q4F9-+S)[DDhN-5Z(49elM(U$0l3b
qAbhkBj63h6"rB)HbA9BVY3X`D!3GZJEES2Pd(JLfM5l!,NjI9FEG@ibLI1,f))e
1*!VAEX"1Y'r52mL(4m*446bE9Q+,[+8FcKDf1AYNh`a)YL@e95AJb+qBjppj6$j
M3Q)-rcCq#-)ZV'D'Y9RI5[AIkh`BmqN"paRh$c8#q+b2&*YQCqp0!2bbKprV@(M
ddIRk-FV9kJq82XKPN!!,#FaBkVN(G+1JVUX&+LbRK0,[0-p13EcZdl+[8k%VP,j
CV`*5@,k18+l5MfPq*VE#q,(ZaL*hj9XF*@h0iHpfGkpp-J(M)aKDZ,'Y,@Uimcp
lUrUNF@-9rKH+`JV%DZ*q94NpA2,1#"16D6,`TYq2X3J&[m@&*'M&%EbX2jB#R-C
ihNMki$@pNpDjVdl3JF'BcXYHJ0f0(UaB@-03Tr)QeFP0Q*e9XaqRiYCMMkVf'[i
KMpiB2),)k(!$4fT@)))NY3hpP+f@3E%)cak&CEhJ6@!5Fi5h*6MU+%6"UP(J&'M
E4AirJG[N5P2GkUbVm&IPIEThaNPkbhS,i,KZ,kXfA+!fdV40UF('X!Ip[R`2Z!@
U9JdPlF1-,L0+T*9jiZ2*j)b@JLeaL`0VqS+A$I-")IqkN!#J!r4'kFc`p68dacR
I9e!K48DH9G,(Si[CFV2QY9k0HUVXN!$L"[j-q-)QalU@!`G6TXJkMr*,ZjQa$l`
VdY&Yra'Pd,Y+E`m&b9Db&2'i984R'0,d[U,hX6LbdA"V2I83E01$Vjb5l3(a1A1
BD1Tb8KeEC-HaafR2KE@M!U)aEp*YeZSD0%a)ZT,SPRqepTV[Kh@fR,RF4D(ej(e
J3RbZS`E"@P@&j5f$HT!!NIra0P!YjR&'!p63XcUMbK3rCQ@-,,MHjC3b$-A5J%i
J"T3`[YqBbqbQ*&+9S*-&mPd1hbM-VpPfAPII4m(3QG,-CkIUl088CPjZNGUJ(k'
Q@%8%XHG'd3qLpL1$9N@-&-Z6Hk5[fTYZ"Bapfl)!!m9#[6d(dA99J$J1"I-FE[k
KScYE'C(33Q"MBIF*!cR(rN*kACU1'USR(P)8N!!K96q2E",*E%ADNJQ5eNJ-&MA
P%01j@9P#R6mJQM[kYEkBJj2SEabZdk3-cF-dq(0d3TBTNK,+Q#4D6mFLGaDP39(
r*SVSX#%c5E`6fmX60LJc@KNMZNU0A%Jp%93)R2`pAE3&D&"`i-Tk"c(UPq4c$U5
pT+G`GJkCV5Rl*DmATfZI6P"m-aL2Fk4fGS1PT`-6Zi'"0&LqXXDI+PZ#AX#cZ4j
b$A&"EHARFmL!rR#Tlq26Xjf2ll+EfblmZT@'V!+br!FkUX65P)ReZiYBrGQ,M6-
i6PC*YmR958)h2@5JdS+*H[mHUB"cdC&,*NYdbmAJP8*dKrL9E9KQ@L"Rm!R&I*!
!4&b"#`%&aQX`cK0VfY*TJlXJ%`A2lS)[MVffE`TGMJ1b)"CY![h6rmCbUmRG(2@
@[G`rRFq6`jM4$(RH-B1G8'TRm0NX4D3Th&i[b'#$bVjV`%5-eEm$ea2eiq5h4RY
+"l0#,!+bS$G2S"3P'N68CJ5X,bc)Dq!)a&IMaIP2i(3-3,LQYK&Dll25Df8emDF
8DBIddKk4ZT+Dlim&%fM`)'dH*LpejJePp'5AH#maYQ([pFX6kQHNVY[XY`m*(HR
a$E@'9FI+0('rL6-cCQR5Zhq'm*T+'9`mEI38RcURfZG3ie4"lf!1bdk(MmM4F5,
ISdq)A-I9S%de0eLpPi2X$"(bj#d'GlY4'QJDXbU"T[#`'Rp5GZmKi&B4Zj-c)Y+
3!,SBmaULcY125!Rq`a,ZGRYeQaGK!"q`A4aS$h#QkeLR!aXi@'Ejqm(&[VCBCZK
C5j1ACH$5Uf8@!!Np"Ia)8S%iH9GmaVMSaj4#)35fIVDFMJN"NGX$HM&1Z,IceBj
Qk+R*5aBm$Y"NU[LIcFZ")0a+RYPkbS#mN!$+*U!5m5`KIXS(8Z2DDc$GFRdh#RY
`4I*Jq'E"i*(*8)VVbA(rCle1TR[qM%,J,k-mPALGL-8ZKmYQ*e1Ub,mD'LQe8kP
',HCPFRUaKfNCFdE@r,Kk[IGN*q2b9cdRIJJbGm0eUdVMIUFYFYKHZER'3U#i45c
)`qPAF[llPTTFXk3D#PdEXr,ZjI+KfmMk1[`cj3a$6*)r"rCEVG&iiQ@F20@9E&[
[9FBf(KqQ@2@0XprQVBB$!fj8SlY1f&2j4+HbhKGh(mC(3(pAE-0Y(P-,CVeJP9K
!qHVU)6%L3LbeT*[$Ta+QXQiL%M$2,*3)Y1jB''BZ[-rr"@4Tm0$DVq'RS'e@(#!
Rf8[)dM'XhD(dJ+`VEiU'kk)4eYDJHq`F!fcd&d$(IE!5bMV0T)4$#+l+5&UVelJ
iZXTd5+bm3lLpA0KQX3V*`KRIf1`9%,a[p&qC1'C!*#!MCc'#2'0XVX1@NK%TX$l
YFTX-X&RT1fA'p#X9P`"LPV"8GJKKGKcVj-5`LU6Jj1XS"mG6XeGT9aLH)qV`q3$
'QIcU,&Vhi$HR#DLbPiRpqe8GKZMY,q-(HbD(j2PTc9U4k(AcS!d,50'QYAk4Ebc
-XVRmjMi'I1iR1FG"8Nm4iDF4Fm!&!+H9k2`'fXe`Bc8fHA-`fXJZ2Rh6LFmIZ,q
HUk1X8!fcepeLQqp2c0I2L03&cCl3djT8bd%J!PH1Fl[*NPhDZ90VG1%8T3EpChX
,S!eeqS[p2P8U4mSccheip&Uj8)3#arN8B[9l,U-GJf$Kp,"H[D2ebMEm$JH!13`
#UmJ2TXLVPHi!8i"XJZb,I`McbXaQd@lj-KDJpjl),(IGkdR+FLfYD-F9CVPle)p
KEkpX&AjT(!!DZ,&Ndfb!MpVeAN"CQIj"4FEZ0Uh)k-XH6l`ATU0+DDLI'PE3bAD
Ad$(QY1Ej$i6idCR4'SrLh'X1c4fmV@k($h)N$%)"Qr2i-5!"$b[m#A2c,L3drcq
rQ8d&lQ-l9r,q1M8"cF)NZG$a,IPj3D4PhCQhX,6Heh+2r"("CIMkYR"dE4X)&+b
feYrfQh&b40E+dUFcT@ek6RFqICq`H%QBM`8[ilq&pUl+jQEa!dmej3S")jAV+N*
91'FRLUj)-CGbHrK)$AZK2%b&1IV2IQRVp[*4Se-,*mNLHaqD`&lXY4!m'k!@jR*
MK@$"ZcDJYb,(+iKqI3&BbI+aKJ`Y6f9D2N'hXe@-lmZ@*(%!h2``i2bSVp6NK0,
)+3T#*G%MG0X@fbKA86ERV@ic3)D8Sb%I3ZPC0fI"h#dT[I[TMTY9*8ReYTKqpl*
LH`39JCXlM$hKefjMr"NKLC**83HNZ&[[R36MeUUK%Kjl"[QrrKG3Cr`h@Z(EPAX
#pNqK"SRLr-CU4GP)Zr9IRRMTCcTp5lIZZ2cLr%8QEXQr3DiHm4RECL49`mMNVRk
51i%2Hf[ejN15qI'+1NF5LNUU9NQ1Gp2BVZ`-4G,VQf&#0T!!FUC)j'JTY24r58a
QVAih1,pkhNkYQ&@)qPiSb-(C+-KFJe[kH*!!Qpmj(`QQ1%"9q3`p'XGLSI1rEIh
PpYIQ)mFerB(PmTUFmf%9!,lH#Pbc80DKjMpY*El,CfEIV4DlFV$3!3+T*1Xe2Fi
Z*Z1T#*+cY,rHS%bT`DBp,Xp8%6(BV5,qB'0b)q%USM4CZAq,-amZ2PSZcNrpjVX
r+X(JLRQI-bPP+P,'+dT3Uicr"KG9rqi9HUEI@2EIi'184hG1V-8`TGFX@8R!h#Y
e!6+KKlB#,0e(RILS"(@Ti',G6H&rXk0@(GP+XmarjMF!pd%re+U+2)hI[bk*`3"
Kh[D,k+[4LQd4q4*`dIeUfDhZP',d*09mk4q!"M`k3[hFUib!Q8mLP6[f*kJ*K%2
mIN(8`imVDUH)`$XjRcJ%X$kKP*HXHfVVck*S8aL@"qX1Y6bhf0kJUQcf@H,GcVf
fKri`&VeP-R2"334"HFprcMk!M)XZ`%9S6RAK"iU-Q&RcA-b4RVQQ3q5,J+GbXkd
NKmB&LeKCX*E#FdXqSfSJDC&6aeV`P)c+DIf9#[jI,-AADZaL1Ga#TqkGB%pCqS(
DH3)m1iIkAPi%"2X'KAKTZ3*L4E[j4V@'QqPppLcLA0Bp9$rVb[c6[@1'Ncb'93k
Cj09Y8`&r"l9'qQFC[5+b+rBEQP&%"0rcPHIHa'L9jhNJ8+QJa#IRT8`J$#'!r`E
-B!mecD+EeUN-8GcM2KTCE%K"e@'!)JU[[IaE[jbFKRi5)`F'6%J1$+&YLIAmJjA
j&YjBRZj6JZAQPN3h!$6S$!jqi5pl[-[h$(GpX'l#P)1T,3`Y'0Y,G)BcTp$FaSV
#mG58[Q6kDHS1*+d*VNPSllbG$pHA$N6""YCi*'8CDqkc-G(Qa8rYTKJMTA(Rmca
"',DV9`e'D!ElKKQPaV0HH1Y!Z,UJF68&6K(+$q0rUQPKbd6(Jj8hh`)DY+H8D,1
)38@BX%XCjE0rGhc$Sph#RXZ*jUNfG-KFirpLY'KPdDRaGP12Dd5(!DjUY""X,hR
lqMS+J")lJ8#hlQRS+f*EGUCS*39mrca62C-h22-2YBNZKGa2HXa*L6b-+lkRm*8
jZ-lSi9U86f0H*V+4,'A4[mD4U'9!1bVFP3kj+eCe"!#3!(jTl#A9#6C3&X8#3Xl
4"P4f[1BQC%RSDH"-16d0K4XpHT)0IXI4GXm$`1%jX[U,BmT-l@6Da)Yl+d-9kI*
KG30#QJ9'JSa"+kUdCUbQ"T)6[[eY`UJKFPTT`E*D)Q[CMq''8rbJJ(E65E(U1(+
Fda+QX*(rQU-m%3KC1X$K46Bmj[Nq+lh,4pkjEXK0VlmZe(DNb+$A83Nq4PM&CB+
3!!46+Sfa4*9UC4bH`A&AMCd4'LINV-RL+R4DcKK'[e-C4LjEb+m6kbHea8UP(Ak
NH3jr#FTK'fmUPE1281jQY9L@41$bXX+(1f5c3J+HLC`JZ,rN+5")Yj2Z+Ij$)m"
fK1rmZL81N!$4eaeehmb5c8rfEZ9--%M@bHeEq0`(hZ,Fdf&3H(d'NqA0X1`PZ*,
Q2&+QeFc#4-'hP@jM-*YaiH@M!2S`hZEMGF`%S-P1F!e5fp2")'AqMG%AMTE@4G-
ZB*aIqqGSJ)Nb+%NF*k"ce#-VI"IrP4I-4bKXQZD5!-@hR3a1M8f6D8ZF*rE`-(l
l+)Ek!h2Db'6rU"Gd2rXhG6$B&&DLbH8PGMrDVm`mD%([#60Mr'8D52YEfkE"$G1
#PP%LUXm6l[G*BcI16GlmlN0c9k,03pQYXabB&DUIZLH2qZ&$SV(PcKE'qeq'(H#
6a[iISBFF4R3`RSba0m`#8HrJkl+lZG-MBC`j(V9Gbl%-qfc#k4l-$,e+!#(Q@$&
-lG0qp*mqSVd&FmDqXjL#6meTI',S$,+M&I)`!6&MGE$96M%UP"CRM`SLZpVlB4d
6T-X)EYQ&)d#8mQE0YQDdErVr#4`lehHRrkcXG6Uj*VZaLlR&m-Q,`LaBV(Z8k"F
Z-BFH#I#jNHfR"XLYGrLd81XfJ4cUIK@`IU8,H&UDLlP"4UNMi4cLIIECI(9X@YQ
RTMhNQPY"UArq@#'@p(lM(i"VeDHMV-l+1MP(5RR&m8A'$N[KK@VDlB[qiHGeKD)
1+@Db(BlMpa4ER+JLE*AQV#b-aZ!Ji1l!kQ[2cBkAXSppaH,(VLH()AZZq1j#jY[
f$9DS'YCHRZI'KD92PKmf5N%T+ZVpJk2J(X5D%TLdR(h)0k#NQXPiJ&40TCl9)q5
hkGI$)EJCU&V2S26B1N8iJC*D62iZfD`pmBk@4QrBd3G&VN!YUEkEMdp,!"2('CI
51mLj$4mN2AAb66%B!-%Bcd#&IjRRlQ4)Q3(G%&0bS(P66'1I0'*qfdplQ`','hl
d5U1DYQHKbV9iaL5@3$HBS'KlRp-pi4U8%VLKb*QmGkP#CV#&2&59RG8RaG5p&JH
RL-K1(9LmHLZAijP&H!%&H,9Ij@#+#rXQ'cIB3HTk,kaq0fEha[ASd13!@f!M*E5
M*,3UleT2f1'MEJc0M0jHG"rf(%Zc`I$Ld(E8l#[L,&HSp6c-!(a6Q1+*D8[6H9I
%PdZEGVq+Tc5r[i[!F6l"k4(N@H2NbSbm[(5EFY-Tb1%idaG1h9YCq0RA4h9"PET
4&2HABhBbdM8k")6I'0`@%KHV(YB%hQfUhGdQAQ*kYpdr6AiH1cYCqRhG8L2Pb3N
lYC*mBL8R$r3%%+K2Y@$&i0I!35$D,BSJ4-RaE8F3Z8hb')NpV9Aj2qfNK[)aHV4
P3YE6k%[c8MbZXQ%"YBqhi(I4bAF&N!#N#eC,-@51T+q5jMf#KD+Th)43NqQ4LHX
)YiXYA+4GbZK,Q(I8kFaVDLhF64Ar'R2Tib$UeL8j6`,eh,E8#V5VcF9+Gk#pcfe
V"'pVU[IFC0IhKi[SBV@5fTi"3(T%VfCB-J['lX8QTc`3JjY`G0*BCP&!!4!BB$&
V!F,#lIp*N!$YrbcamI*qGCF9IBTqqXmX+1SDkcpe-bLf@(eLb8%A5Na2-G9NQ*G
9-erbr8`bJhQAPmF$Fe1Jp#J5P4aeQ[B0Xl+6%hkXXC1IA1hTKaR1'mc5CVTa-G*
5K@*82G"5*Ip9hQ$[,LY6"chTCVLYJeblPTmH)A4)+rI3Tc50IL9"eG-3J",c5e+
TB,NdZ@"UICBU#U&43"ek#`MaA!1P2,`5aq`FGVBX'LLC1pdHqNH%mUj&h@VXZBc
F)G,NRH8JRr3m"JQ4mC!!U&K'&S[LTE*m@Sb4RIi&rfq&!aMNjMM"%[h6&-$pq0L
L%+,Zj@)DBI2a3TGm)kh`%#C,%cQ3!")&SE"AK1SD2f-,C1(P@dhl2S2c(5Nk9km
T5[-kaf&M8DBSGAHjB`90&c-`23HQ1U#X&P3aViiMbR3&4amUD'EjD&c,hHS,+me
E&4"X+V`X+U)kRrBM5Q8m,C'cCGZpAjlPimbT!5EE,eB6H0+qYhY5%FjfMi[6f6d
pEB0LE-!PRViI)+MELZ&b4fLLRc-TQ)Kde1`6FKDHhmS*8GNaEd1SbmNNB""f3L!
JJpXl$1dU4QC4*@$),85RXA&hKma&(rN%fpDcUem6UE0B+!8fj-!(Hf[ZEf!2EZa
K&hk'8Z2&(dQUrKa&X0R32RD!G80P3(I[BM,b3"#hTDLTGTD6*a8dTi8M#5#AqTH
,A*,E(PdD$eb*[e8Qj-qTif))HVUNHj1SkZbNY8RFT6G$3j!!rPeHKADP6VG`j"H
MSXb,EArdL4Hd#%Fm%MA+e8arfXmq66%Ed-S$(f8QLbhrY81-R(9cbp%$"jLJA-S
i[efl'KZEDNS1)F#KRph[j*M0k&Uk9Z3!Q9E9UeBmAflA,hG-hFNb26f9ci1II4C
bM!V*9EGMbGp%$,NHV-rMHqQHRVR`EPcUB8YP'E-e*!63)9A,2A%KhmSEKM[MUA(
Y1A89Y$GV$$Q+#PCF-NqM&5@b4[PY$3i8XQZT-iqD2d)qJrVfGQ-rKST(6VG*Zik
*C*!!Ak-#[0FM**!!4heM*Z8)0c3dDKZ),*paQ3XAAlNKeHENLaqCpTCc'ilSZq)
UKE-m0K['r5*PZNHLM@NkUBJY'U6Ecdjk`a`4p[eLqJ6-J3D1LJ3GFpRRaZ5086)
h'D4&qh9T)M1MjMGG@*Q!HYbkYShN5a8dbb'UQ5mN#d"qekfA2SR5VKb8F4d3&d2
cRLI$9(mBl96V[a"Bjk2#))RX%*(Hm&33Hh+"9DaQGFl@MhU8&&3,"L142P5L"*k
ADUAiY+CDB-aBDeP)A&,M4DL8kBN25N@mi#b3!#A"LF&G,(NE3),I0iF0*jCRM3@
6kESDABL-VNB'V0JLD41aMBY-VHGcNd$P!Gc"m+4ahUk`U$A4pU`)8G9Tbj4bd@&
fA$b&aX%T,FZpA8$Gl+TLfXeYe6%5dVKjSBc!i1NG2m#[P2BG2%-a6[feik8fil`
ae[ZZULUq,@GXRSYDa52CVlR@4%C[HrH99c85cJT"98cTrjL"q(30L[YXB2302Mc
&F!q6p&PJpr"T8Z(Y5,#Fc4TfdP2lM6V1#`'HBD3&q[BaBS0@d0*%fS2NK@"cUKE
kqP2Y'(fDMGZ`YLj@DS")f#-9CC6VJ(%TQ9S9[i&X,'1H%4%L-8D'dkqI!+#S,0A
hFF8k8fe(i'$r['Q3!+T[TS8I%A4R*CjH[3c!$9rbHKCX3"+h#JZ%"SlXXE)L9BE
p5Z9[J2%URprh@lARYFU[AL)@$E@l1l%dT*HE'JJKm&DmlF05`aYr)02!XjEAK3E
0a2'&[ACHkbLfH42*$8`qkQ`YVP&l249ee--#(3CqaH`Y6k+8@mPlqV%qJIZUEm6
i%2@CZ0fj@*4cc@,[b5aL,Ic4%9%6`,B1!Af`l`8`%M3!i+@D4Tp$e)Y2a*UX@Ep
**`qT(GAr-0DqCY$ZM1Sb-f!B[mGRd3K-A2JTSK6%BrEQ(#*%!pK51$Apa,($NQk
mM@SIaL4hhJkcd`*8jXiC`&ri9i4!rVl9RpHbhY*b(4Mmp4Dkq#0$*jFY5,)JfYp
+Q+p,44V04k,5'TJ4C9@T#YZGj1K1fNSJ8diDa!UqdD4qYII*4"06aMUiQJ(EG1d
K4(jlXT!!Nk)ZcbCp*[%Q15BQ*[&QfjMDf12f6)[fZ6G4-1'!PTGrI%K-9Me-'aE
G(1E&NLZdA")[XVjq,51'LTF0U6"11%3#!ZeqR4+29+('j"4S(e#eB+dG8`9C-!8
je#2pVP"@p@qm53@,Vrc$T!ZUG[[*QjG!D)jihS22bUGa4JcbApG)&el-5cR&FEm
cJ"%YIQ)F56EhXP*TIjAF81`'&$![Y4j`qEJaC)@GTX4DM#D"MkQ@jqELcbPc2j3
XPYCe9pVUfJY*XVUB6eT0N6lA,U`2)rX`d0(Gq5mm!@IRdUV2'!e@N!!R5pK#df`
"Y4rac1,mUP%ijm-&R)GklUp1hVa&eYqLrL&,EcIFcBLGJe8-XP"(HKlC&Eh@dmE
eJ%b'HfHZ,T48[$D9!%JIcDp#[HQMJdDCbrU,HkaZ89l"LIP)mI&Tm3[JpP2hDak
83CK)-q"PL)XIEH(3JRqLlZbYA9A5K6Pa*b6$@fHe%P5*PrbLHdd@8dcj-%0T&2G
lqXJkAEN@hK'HjSYTd18D$LmcLD&3JUp,"dJXa@F58$lj`T[K#3Y#N36NqDm2Fc)
2"#XI4E$,+-dAZDfMBA@ph,iS,RC(dE43PKBK)C16&KBK$3FrrUFE!E,iX!Yfck,
V6J`*#C!!rhbfCl+d%aXr,3Qfkl&)05+H*Mq-lrF"ZfRa)-8DFqf`RY#`Gq50pkE
BK3q+36SKM6,GF-8iJ(I4&V"`0X&@@l)lZL&hB0SiFqd3j"D%'3pli`b5[&UJ)F@
RX1epj"Y1&8a+*V`5)m$M1m#YRC!!BlBjcB*0-X`JlrXXQaj8%5K[UC0p34dbhED
"LeC(631MY(2Y'NDMK`c8L4+$L+#DTaUAlhfhcG"5f(1fV5,Lkj4k$4))09XYZTE
ik)2`p2%K[dDpT0#(S3c"B(fUaC!!lcTIj*2[%""HPj@fN!$+a&NT!JhRKkQ!)pP
!8KSTCK3Pk1a*FVqS#EDLXFF9jN)9)cDTpbc*J)A@EMeqFH1"D%@p$qJBTN%*&eX
mQr"dEa,NEl8X2#VPY)3*8A9KTL04$LBbAQ'BBa'd8'5CN!"f0)9Y)I,Q*U1!NaX
IGSSD3TiYfFfGK$A!U$lHJ8rbU15PfH#%'-!faP&pe[9bGYQS(C(r4D*pa@#e9'`
m9hS3"#U$3K9Sm-PNcV+9F&TZQ'N9&5Dc#!m0XSM1YU0YQrb3!(cZ(jRL%SC6`C9
&l2hmL1#IZ*1EC`[&L)5+mpakijj'Z(DH(pH6&*,l$'1Dah99r*%h1kB1@e+G&Df
MQpS0`e5bGM,Nfi8"9*klc$eXKUL9AIScqX1*1H[@EJUlpMr,F"FE9Ff@F%i[""[
iBT1+jC8VdieR#0j1X#AfY1D'U)k(H0*L124eYV5E&%QiqaK+XqTQH'l('Vd,25a
&"p80+6C4FA[k)bd'!4[X+`M5R&*6B3Ck&P8jmIfXSm)CKej&FGh'JP0F+kI+m,2
!S6[mVJNU12ENh+BAbjdcE("T0Q&3kEU40Q5lAqlPd9F5iNe['DZ!23)hfH#&Y"b
Kd@B8RT4!Ad&XB0!9rD"e1%9A5p4Z#pCcD,,L*5)MB!QP-iYfQUI)*ZfJpY3PCR*
8fdPR(4r@5D!"Y[k$%fGfr3YD&NSq-E3RC!KK6RXUED&GS8$BP"a)LF2Xk8Si$qZ
Vj#f2"k0%r3&*m[KZ5qhq2Kj#kKFCXNJ6JNU`hbH'MamclZjIKELG4Gq#kpS5EAN
AB4IjNrVhC`4N*G@$CFM8QYj,Y!dTKFB+Fcc-%VGlh[l8R(AH([LebM$9cID,leX
RcGim3U#NAK%IMqjY$*F,m0Zm&fYJF1`PHA51&LiAUDScX2#iD"Ci(bI2,lC$M@J
@ra(ZpIKk3bT6J!HDq"alPb4icISI*c'MAh&MSRl[90$2Rp$qf0JhX9'$eDq"$mi
jicN-ecJlGpkf!X&N#U*A@JIk''8*PiAX0dDifK&+D9T,Q+b&2crFPJk0A9G,NH6
8YKkCS&X$UAr&CP*PTZjfXRM2Hm$NX0RaTB91b9ARh+iK1VJMN!"HE6-5jj!!8pK
6Ci9C"LE#K6G9qGYRSX1e@!N22[qHG8FVXlE9-NZ3!$PrMqeBYGe`ih$ibB`Rqq'
Q8TAjVR`KCh82Lc)K',!B9l`L82jfh)[3T-(VSHrM[NH8YA88G'KA,E*d*G6SNaD
k(`,+jSc3PV2ap[Br"mVj8)qcd!eV"8iGUM,dIG16eU@9Z'AHbI1UIH1Km"e&a@S
J1H[,%SkEaGNNhMkjV#"1,ZUQd(IR"Q$q9B3N1(akJr53!)ZrE[#bQ`YK0-6r+4R
dQ*3TN!#bhaHBcBFcCFK+hl'1@9'FCUSY!8d+j(Vp9M$C8AE046HTU+IS%[dk@qQ
EKH0#AE$V0Hme198V*29#+`X@1,I%QVF+UcL`"$([+[F%Y)-9$-,AMBIXEmI@lQk
UHLilECNIp9r)fFNXj@C$ACL'Gq[XrjpZlaI-G6T!HDQJVq,GDQ3LqhplHf!Y$ic
Q3-Hf%Ik@*@Cc'pPJ[Ki"r@42Mh'@CBfmm$9J!M'e99(T)UI8#*+4FY!%r`-jRX6
rXc`8`JS'JCjDM`Im9[E'+X'A56fd246UH'a2%8Hi9LZaaK-INRY9pVf6YjemkfP
(Y+bSH&9`!2KV4#P`H'RPPCbXcI&-pH1X&k,cj%$d4dFfYAN+DSHaH%e3p`-DL&X
hTZhf6N4NVF$N$!l0rI3MID2c5jK8VV2-"2bMRIfhMAZ`kYab&`TZ$QA@JmRYq0#
p%j4,9mZPcZ%fZ(K+6#3hTeSC1im,0d5ZX#SbikH8Y-*42XBGMHNaT%#mE4RdmfS
R[eJJqHkm2B@r3F@,MD+M)0LUrMD$`T(RXL%GpFG%&AUD5CI$-BMPL1qde!cp8Hk
eJN$QdpjY)A`Y)YRXI3&8PGSAMGD@fjM+,(eb-UB,p+V+')f98DFm4,3VQ*jIQNP
0,ZKAMQ6p)f"%(9FCd6CS%22C)f"%hZCY'86p9cpI'pN#"%5UM!CCJhm)41@0L-D
d1L@DI0Nr#)hTIb0JFk*1l3MV8i8cc6[2jj0KN4dYA'iLd3G6f95Tm9h9qI0)1-q
C5Y6'aTd,'JRec6Q2GZk6h14"k3&k!qGDd"*S8hT2ElK&RC!!"k@i%D@GS!qKEI&
U"JSbR$b3!!R#IEP+NdM6dISN"kCcJM3dGlZP0#(pbKRF+qQH9fD!$-A68+iVYRr
$!B[kaUV-"PCKL9YP8iU+Ke`4S%91U3l+`dBGM'Vdf6KV`NL%(`K%2kP4S34h9C8
@-j)09iQqR'%QYXd+h*8PESfGlpra`#"3UKjGahF+5SA5J8jUQ8e)U1,U!h(+h55
Tc&T`i+"MjCCRT`mA2)BXYUMH3`$l$fjm1#ja"GC)abe+fNGA`*cTS(LJD3Q9P2S
KAI9fL)&IX5Y0c2JfHlCdKq21,FVdqG,3HYQpaC(8LkT28LdqQi@&J94aZVCSmIJ
cXN@hi)q`*der(Yp)3qM$Q85VlY&%faVIY3Spi!I-cM@fXYCk8$UFkkcSfVIV'3$
1aJM)44l-CQe`%N2Ir6#P&E5MrNfJ93Nc8P$RUTaLQ+fj"9hCAV54S[DSdekMdqh
(5Upf@p$P([pC&Z!qAI`lQ*LY5,&-akI0,MJH(Ua0VF(@1KU-j-R-*23r1SU"EV`
c9c`bQ@h`A[2R(9E-i(RV9N,aqPY90**U%l%b%pPJB3K5H`ppPIm8'@9UkJ&II4(
h3I$i*!UkqQKNpK&h,9PZEN+b4c6qqGDB5qFb&PYi`E8MaRT-RY'hbFL3!*1Nmj+
N"M2TZ202X6F"BC)0@$%TQ#ckP#JHhemk%Jkp1A%0&V(Qd`[43apJkcDc02ba5kS
33M`qb&d30f(Jq22GfY+N,r)CRGJY"jir#r6)KK6I5m0mamp1d0K$mQY'9Yraijp
4,h)B2mC`Y8SF9F`RZK*SY3[!Qc46X4KQFIm%b`cY3FX59`DjULqj2l,A@(Bd`S`
)C34V!4$#9eLl@*NAGac)8hFTKBZV3[QFj2I3)@G8RhdIre2IGlZim@#GG+%#IXk
+M8-p5h+a*KJ,3hDFFB$U%#*+K"5%0!4h)ZqN0Y&23,m,c326bp[qep9MDd22c@6
DJf2mXK'Gq*Z2ND4YrqpY#ZhA!Z+$S+3,blCmE!CrhkZdPBhk"Td0Gi-#4H8B&C4
hlEcC-)ia,kaK42@fTp[LLN1k`2+63Q"U)KSVqT&L(2+b$`PEhD4i+#CJq5J$'-E
jZcI`hqdlpIrhe'k@q4!M(4q,3Afb8&[QMeH@pF#dPZ#-'2A0hmj"CTN!A6["A08
eNEmXpAMr'-JL`S!*$2X5*+IT&S!3AA%3hU!e@U1AfGY4X+d29cZl)dRAT)+I-(G
m2Ja$INPm0m5VYPmV0QZkj1)$--qpCX)B(q2lAFj8Y#+&cSijK5-R5jJ$B4krGA2
3%#(aBPd-4CQ3!-jf9B(bU&3YFYfRDmqqAa2!I((emRb`jQbiB'3eEBM&Qc#Xl%m
SK+dA,d&qI!3XmJ$hM[,)(c62GV96cF@-&P-NiKpf-5ma!XUUDba$1)#T3Jq1b"T
qJj1a`ZpUEjEVr%ESH)ji9I3b0!e52jBUfZPh(,82)+Z2``L9kL`'("K$[LpI1Sr
kSZ%3hE)p*B'8CC&k)9JkMRbe-`[9%&KV0+K8Gb&!Kh0D3I)Jc%fG3[3U,T+Pk1N
+#mSL1+*fQ,lJq5S3I)&8l[%TRk[fU(DVH%2)4ka!mSRTLHMGA1G"RhbHSbD!rh8
K`qSfZA8jLJPhr)MrBP*F(,6eYD'&T1K(5VXj0YbAb[6[A+k@)d[['!kNZ!bCK$S
Lqj&hE"a!kPHUEbe"bfDPDJc&&C(1'ZIdG,pqp$E&a6N%B@J`FiGVfA6FJG@eq@Y
2B0JJ&b9[@8CKGkPqK5r@3e%jl56K9!JEGP%B5Re!X[%Sb,%UpcV),`+R[mSMmSj
!+9T#Tpf!LMZ(6PV4YpS#U$hSiF'2Qpdck[CH*ZJeLKTB(d#k&ZRd##)!mK-3m[3
*4C!!H[*Zm,,GPJXJADF&6CbF0Jr)5%T%%p&ENGb")JCZ$U8B,!"9#h$TI4!1[RD
aAY'Fm&&Eb1r#66M5RlCI+G'Dhb'@ZJA(1I!T6VDN-Q6mB8pD1PA-jRMF[E`UTcj
j%h8T9K5Vkl,Y1c86Z%m0SGhA@9#S36iM'NqEIKbF92i!H@SY3k,rHfY'D`(RjBH
6J)l(q"kiFbF1Z@BhD$DD#2h5h3qq(@)kT%XRA5XfBjYr6Ndi6a`&T6,Srf2V3VM
j@#)[TmekCBHh#Cl'%hUqCJ`60!X-AFLZ*Lr2NfdDGKqEf`XiD1%HcaZ9fJiB$RS
r8EQi)`Ab@DP191Z8iZLAdJRr0M)$UqV32S"2Dm#&8V$LDmBE8"@F5*9QpJ#"aSR
158QA+'K&CArbD#@NQ04BU(19K&&NdlZRmE5%#,9JY2,!"1d61$#3!&%AL4B@&4L
*UhaHRA1@bBH0I(Bple'2$YTHI9JDNd6S3THr#,J0SJ(aQ$"hhh6FKPk4*e(#)jR
PakXalEXEIR`emX&!6pF6K4V2l(!Um[&*dh-B%4am-FG)hY!85SRiL)q3!(#06B5
qX6[1SPD[[Y'%cZZSC8PaT5N4E(r&f6,dX[0cpfYTGVjI43FYrkX1#C0hZrqBrX6
9l3XTHG2[55SdFXrcra$R'Q&UHIi-*F6aVYP-BCB!,cGHpACk0[)@`j[c-pY'LNe
`*!S@RekeU#p282A6Jj!!%6dcK9*GfCSPZ)6BHc4lam+jN!"(BUJQ6D8iiqp!'T%
#8Q@[GV(U-PNfakb1)GTCB2!0*fIa[,)J12!jA64,S,lkQFCC8r%`dJqjp6*XB*H
V)5RINdk,0Xk9+$L%k!brjXk,36IH4+fAP&h)dM#pkr*EpNd*1A26+ei3+Y%!'HV
hfqpFac&P$@D+aB2EPeK2PX!fdJISaI@68C-M)(SF2R2(TB0i,rJdk5S6P$2HrPD
kCNe!*j6(Qp8,!AedjKB@+hc(rMCDU'23V#9`L30(b-8EMlY832D[piF2Z$IXBqS
)SmJ@qQCK!Zjj8K#XZ(IMpal$Z1d6Sl2Ej`2i6LXJ2rX*K#$cRfBLhI2IRh&!E'A
kjK&%@LFQ61$'NfR[1%)Z-$lFkR$V)f[8d#kAGEq'DI1&ic8MYA1"Ba+Bk0+KDLp
)hAjP$#%qDbKj4%JqhpNB1&R3'`VC3L%LM8NlF'(f3[pUfK+U(ZhdhHNaAB)Z#PD
9#M)3(!P0ahYZb*9M*0-Fd68DGJ9'kA$'`X86B!FRImJF[J!&Gk6L,-q"aGI&!5Q
J1JHd)9bj0%!2V%*63"2"deKT0GSrSUm)LJVd[a('MjaX)[HYHf%aPDV&YPQ!p$S
1q6'IE@`J0MfHN!$(@BU0C[`p5%$pA!&)8@HE!QLC8JApTK'+*5Id$%@X2df)6S`
UaDdqccG*A[+KCI6p)[S*)N0k$lkRXNjZXcMSU41Q,'U5[J[Mq[KHb(8Um+E-#'N
E*C[[8JK%pkHX+"#&FrM3`PVT98l)3f9q)$!#)9@i@,YhM0,MCFH8-4#aGcGVS6*
TMqhBHTLN#hl2fEE#pr5rS"1lk[Ha""Ib%@'LmF3cU-pKcM(qp+S"f&@Cde6Ib)1
JKfdemPM"H"FKq$FRHPlT+-r[$4V'9$F![p6MLR3%1ack-P6TpF`af')ULN4Ubf9
UXEMr",2L4rmiUJST!phNq$*ARkjQTH&2bQ#VmLp'3Vi82H-lMK[18YFk3),eRT5
+L[8qrG[1cP+U%jrRZ2*!%H2L6a[12UmF9#2M+bXE'q2eEXZ+L4Dq-e34-YUQU&4
89V'maU0K'dpEVCC,bRESp44pK`S'ic-$&R@f@'iGUG2lrh1ZG4Ai&V3,h2**aH!
&cf%l$VCK+*dTZ-0AjZ0ApN$XF*U&Y"*Bp1B5UNFN5X0SRPDr9D`5K9M$C6R3#HY
9%A&4+%(+f60!fBpehHZ3!-6#83`c9UcTaLUmFr"+&2LM)1Lf#CT0*iXESAQhq#Y
6PbIlb+LcKN'65IRi-[482U1Y@UH#G%LjBLeFEdBmN!"M*K9#6kA5U+"0cA*8Qa'
XS6Y!Ylm5!QY-LE-`c-kilI2'r)VY*"#*I('J--L5ibap$p,))28DCRTfV3F[jhi
A"%(qI-rT6if%V4F[3Ajm"1Rq3-rj($T1j05rT#J4[$90@JdL2R0[)6hm")mf0d%
%ibZi*&5,3iSa%3Vlahj93(k!GUfHI'i3aIb$IA6(I9V(Kp0*c139`aabf)-hVXH
U(D399&V$9"hmCh,A&X+$r&6[`ai05AENF-GphmIA@fXFI96eQA&b`YGp`R,mcCU
UlhS"0r"lbAI[53*8KVpbLTGV&YM#QGLDQE$eCPX4#,DLTMHBpF+1TZdhZlS*E*)
lp8PDPYppNXG!QX0fpI6MdP0#jD5pca`hSp-mXNZkPNGfmXm)5AP`cP%a+F(05Ac
GkXp2bm%$FR5pI8R$)AJJ#ikFmQk)UAImaESZ@Tm,D#rNadUDRLbD%6TphHcGlEe
K@Z6Gl-XpH@#KKb1NqM2jJlBhiSNe00ac96S"0!&JZGHL30A0X-)$2Z4GJ'6e!H9
8)jPI%reB'&a0a[VNqUFQQ')RRqh,M$8C(M4QVq'L`XHXT[)[9,SX[M+hFaV$ljT
0FYh,YS5V@a$lU!iENQ(Ur#1p,LUM0a@CcTf-YIrfcH!,aam0!pfMA'NHNU#$i+R
L6#+$#9*p92H-X5NH"8`l#cP`%b3@8dj`*Y4GDHJYKRjSKIHiQ4Z*HYjdIU99&ZN
[S'`J)HNJ`hjA!Bi3jama8FrN"*S8FS!pX"IpPHd,!,AILAT0PkA-@!%'Df!hGH6
E,L,Y`%PX-'h$T)F-XKBPKjGbC@@JE`ANFS#df6)IG*TpHjNqfk!FdU29R#YZf`L
Jb,4b6IbiPA!9FXKBNRaSSdQrSp0ab4Y&PYP*6Ya[Pk"26PfD3RHUh0ffA*fI#pd
DK5iHhAqqV`pQ500-ED-l*J)X`JCARER8VB@C[C%*6E`Ld,AdcE)`6V3*6-Gk5Ui
,JbB*E&3,ZcVkhGV-8lm,d2,,&i6J"@,h4LSIkZH`rPN0q'M"Bif[hfA1E[PNcKU
"E5bM1CRFTNLk#XI6M4j'lBUNC+p2LX#bi%0Iphk%0V*(-bSm2*239&iImE3jRVC
Gi(*2#cdEX)Xa$M%[B$6d*HU$TkV#i8&P&d"K@-)hV6*B9-@0Qr+R6Ci"GXA&M64
V(YHG%%YGD!YdclCSKF*!3BAY@2qXYQr#9+h3mX,&PJ$i@US[Z5HS`ZrVl'"5`T@
b#k&pl@EYCMHA@-D@R`Zi@mGV)Y%F&ac$&AfZDe5lEH&V"`Yb%lX5`N"!9-dJ%0R
N'lXT%cqX%)2N40bAPfYc!X)JTR"p(Z6JN!"Nr@04j-I*5f!0#CTB`PLD!,f14ik
$HJjBMU5ZHPKV@$jS`N"!9#i(%(INiBk`9'X4rNa!R'mk(*!!Dq0p)"!bZkTeH(I
PIHCjhhdeRfm0II&JBrXhII()(f"Be5d,-V$j&IbH$&0'UjYlq*l%U*&8L+bTe@r
Cm5cHfE#TR0K&Sk&Q6Q&l4h$$d4JPX!Zc,!cp&&NP8DjVI&*M3jCKG[8DIj(FD&9
e*FPCf1Eq391pim[cQjTiH0JPG5&[U))ji*I@Q3`jI$KCSTBP8"i0I6JF%"4F6+a
KpX80VNZhVB0Ujdkji%mPG8KB1K*#30"J91jVP62V6QJK9-1Z`b3d,+**YhU'&ZU
8#)i2rJRf9ld2PVUIT)fl)AUSfDR9F4Q61'JK35)PMEEBrmaH**8UaT*fMC*Fkme
"i[1KL8V81[NE2[QJ4BRfXCk9[,I2%[kHZKmq`6,(&JGN46l$&D266KjIkBJ#N!!
TQDjcU6L`bJ5+8ESk$r30cG2$+Z"D9S*-6`Vie9BbT+0!Y!!SRrdmPf3+DRq,@1E
GSZiV'jU$kj2cP2T8&AfIi!L@321#jH#d!&(TU#*$a03R"5#`QekY$G$D2!&8cP,
NZaIjZ55@hVSB$4fpD%(rmQKZ5)Hp`kL&Hj(CaGDKU8&VbZ!h9*9'I94k*EENH6J
mE-,Q'bD3!+F[jA%NI`Vl0ZB8MJFcJihD"8e)jBS)5dZ(A(6,%5BJ25M&Tf8KCQ@
eCNQI-#9ebrficd*[R3(4!4NcDP#9-I5RlUrb-JYd`A6N9RS"G-8D*ZE3D(er,@B
(-[jN6V!*6B@JiHTrrB(6Y'&-(KR!Y5-fB)$5V"1GG+N3[Dki)+KHZi9k'HqIfce
e*ZKJX6@6PS,1HJ&E5mrNk9%p)"bY,UL2JifEfYM!F#VACd9ci8JBpLfjB!dif+8
eJq(M`rY6386F9!Xm3[r+5Z8PA6%52Z%9XQ22h$29+IFCEfqDX[-83Tr,l*J(dCH
PBk*qcD%6Ne(@2J"2cNJ@V8("i$TLFR$hJ1,TQhJVYfDi&rS[bS3C18#LQfDGUf*
Uiaa[m,i[bMcQ2aA0SVPCL[,)ff`l4X8KY1B2k21Ed(I-G8r(Yi!9F!6ckQ@QP'F
2`8N*0H'0IC+TD!#,ZMmTChI9qdZCqd4SRN)YaA5P#C&(+K*!b$-lbeJUShca24m
dh38cGfA9d@J`hDS8pK$LaY$&%"5m+G#'"N*F0Se2r606e`fmVc1[l5R[809B8C&
U(@LQ6p'V50l8,**I$6Up5[Nj`iK6pC1Ifj!!bQL%FJMrXCAV6HE@Ed$)NQJdj%*
Drf%P`j!!UQBp%C961Q)H1"[SC(d[a+1%I36)2*P`8`(dbUJma9@mciAUpbBfA5r
AkYrASqYlFNl#NPCd3YR6QEapTlQ#UBZBBRZ&3+C1HMeqp,CrfZaZ$ZVmIC8LCPR
@jlY5QCTeSC+R1+!'XURNYQ@EV#FSViHUCa86#$-9%I&ZTNl&rU""&F[)U'j4"*I
")N(61(RQPJ`acj0BRV69qA3`,f'GU6)%AUp(k15@K+U3!'CC,@MMlU1(GE9HeG*
GG#lBCNZ9%A$0ZFE`&TD@++VJLI2T9L6PV[*Sa5meN!$dkRMd6adJ8e93Y-lr*dc
$4fPN6hl%,,&m0RqG9R%+TrJQf"RI'81NXmKhCNNfAjQ$TFGJ#jd5*-Bqe)pR+(2
BhQa4MiI*3V3RF*UZcNIRb%RbAkF*@H@NVhiNa(D)1Nc'N8Mi[0$)SRRh"KH@0hY
pLa4SDH[8Q4XV-!'+2%I"Fbp6-2KD)p,j8rMJ`1#U'V86JN8IA['"ebAq5DI`mI'
dkYAM*&J1CFP*4I*'+r%$%8MIDPqrQBE)L#E56Q@@L@TTN!"I&@)12qP-YF19i0)
r1cm0b*N!+1L2VP#,VpK`DNfC$)a@+MK[8lla3KmV28+D+Eq"J!VYfq,,M2Gf5i(
!Qfi3-)Cc+fVqBYfU[U)6,')d#Lrja8ISU#kqLP#l!!5c$LfdA!5+'VMe&SFc8Va
MU#qVDSb2pdq+&)pU6-CU8p4!8%ZJGJ6TQ'L-Q$5l2@p14+l2TlKpXYa6SlM!9Z#
[pCp4e3T$Z,e25c1hhIhNpfSFP&VJZhML2SM"q2K6M8M`SmFZ2!DFBjZ!3cYkaEI
"9ZE"!j@&93Qlp,fLfQ3U@$&MI`"c1fQd-fH"Yfe#%5V1Z*2,N!"#49GB[L#,1hD
5QHB9krTGld(#HihH6L,#4TPGGc`IQ`&ahbpmk+XN2a-6*L`r#1MSQHX)eY8MMN&
&%RN0SdP9kEG"Nfh(jS2QprU1)ZI2M+qNljZ)Vf(jc[b(M$Ff`&TXm0!K3@%6rJh
5e,4UdR8&i8Y'5AXdbG%-Xb[N!mN!G3M!rX@AQEkeI9KpHEeXiP)'IENCmD"PNLB
QY6"Uh6JXQI&q&6MhEri,%Q4GF&rAjPcU1L40r5%rD%*AXC**X'GUjCa'J!kXMMq
A9cjqa+R*ReU*&bf5TIZfY@Ym4hcE9P%r!%hD#aB1-5ja)PQpq95p(bZ#[D"&([K
0JE%*JbhY&p$XjC1DR4RLpUVG9acQ1cB5e6i2A2*5AfaVA)L1lkM)8K6111*Z8eK
MQX05#Fm1)Eil"!52AMZ@'p'P"aK%f'TECR+qVk$heEk(6YI(V$aBi'#-QedS%e8
*(0NRL!#Y2+k*BrlhU!`dBYHqh(idTb-[e"pqBK*FK,XI4U!hm0c9fPV(L1l0RCr
pdVl1"Si`i2c&c!6-`ZpNY@X"qR`5"Pr8L3&ZJIDPA9UlfHAqk-kea*2i-YaQ&l0
`XMkSTp5j#SUUHGB!krZDNV9XFRiGNF@)3pIh5MHKkE3FBD[4Xf+8*[[pbaR2Kjk
"!Jf2L9Nr#CahS8pSF%SH-hk5iKN9b`[,F2k2%IerLQfMGMP1IKch9[qSD#0NVLc
F3rmY'MC#Y8)#3MTZl[EP[DqY8IG0JBFAh*2ml!GfT*@QL!XqTMH-,&fPlpG(9hj
,BCZ-%dDc(1,6rQ&2f)l%mh``Fl'*3!XDIIKr#rXph3RMH1L@%2H6C&[,6'3G(L2
INH+lHTrp0T1a-IT4X9F`,m*TK0a#TNbCq`b+MBch$XNSD@hjdJH[KmK@Tb3h+A[
b+e5"c%MKH`9SJVBjB3r!-J5FP3M"AhL5$cb@J)`Ci(XH)%)@JR8'BMl@9R`MS)H
6A!TL$,(36KfVR%EeD@%CE$86SR*Q%#cl3XK#j+DHAFSHRYmDaANNK)P'EB!R%L6
!2`GH2`cceKA8SZF28fImUIJ,Q#S934f['"D21ic1jH$F-rJM0QIepefQPFh'U9%
(2rPB8C(0'113!"%r#D6fD-C*AJ8L53Df%jL1NPGE5BGPk"h,Ip6d"@-I@jq[a83
&@j!!iac`GG4XiSFJAGMG-D4c$LS+Ba9Y*P1Dem5&G8K5hNkp$IhmZ@4)ieQ8aIN
CrN)4!K$YBBISam%CYVr`Y@B"VUQArG`Zc*cH!NT'if&`)*(331R3e598i#1I"c4
)`B3jKD1i*d9*B2VMXAi'b[$&6,ZMrm'a6XkM#22k'Vl-EpA9G@)*"P3@Y,q4NNi
,4A$TLZHD-M2fFQS$@PIfRNA@p`L%)lpTD+$-p@RJjm%k%$c+-L3pT&@l)l`FZU*
NMijck`$F*TIBdDSUfNfVS-Jl[H$f8H)r3H4NpLr81mq3!$-+adCTH[EFAM*mbN)
Ubh(h-mq([G),*aB6-`q8-[%i!)C#qTc'Ya0G-qVa65c8*&2N0Bpq6%)e)$PUqH+
SRiXM4J%!IIQENrG[plHj91'(JMhdY+@YAh9#&Y#K[HH(fD4Aa2@ml4TAM&I$M!C
!BPNkKd&%0AqVZm%3I&`aYHrE!Cr2XU1BS+X&9Gl0[ijj2&i0c'c`$`r1``4RCp3
Gq!"m1&FcmqIVQ&S+XHckCG4T1+AePe9Ek4Q"T#5-$1$(KC`3!NAmfRB*#e!fm%d
4#+1DJflMm0dfZYKD9rl-r$rb[[%@RFi(hbU'J(kmCZ-j5h6p2+(A5Y+,8k*S1rb
&`r8E-3$C"iMjj0026qa)@keH*DkKbD`fK[TlG2b64BPIpYS,NpIM4S8UqSTAcLe
T@ai#EFX3-0+kBUC25YUDilMC8BQ5q,"i!#e'*r-VPlPKk[2DJPdl(E3iNSk&E1T
+I$c84c`l[&Qa+#1c&pfh-FejX[-eZZ&KEBBrB*RfPICeQIJ)0"B+4ji%A8KL"5X
YBl'@RGBNUYYqGfT"9#cb8"i6@f*M+ei3m#bMBC6deIE-YX%+JUM4,''B[XBkHd&
5Q(M3CkRDr)8`Kai)irDTLD+Mkf(J#1KLF8jJqBhdYTZN6KU-pd&D3RK"M2ZSXTR
r`B5Uc9FJFY2q*fch%dJr`56mF[B"88i0Vd(SrG"',Ni[8S"5V3S#dp2)mlp6,H1
F*M@aee8#rT!!2FQ-hM!l0Ib6(8)!U!8%f2@r[pNZQTq'9Ql,X`r6F#-TX$MmD$Z
qcRR"38N+mmA3ie!rRTTib4+5kl$ID&8#,e1i0Jd-p,Q&J2p0JqGcU-!cr)"X*3A
N0I`l0[0cSmYP6r[h2I!-[$TH@j&(Z8-49NMdJ"!qQI1`ZGpV3aakf"EXKjdhqQF
5fP)p@iH!X01$&QQ&jHCeH-DHp2IFBEIa+er91)GM"VDCR2M'E@1E,)Tqf(JPA[Y
ie5j'DD,KEZ+F@EN`*9RNbA2JK[JJediD0XdmcH[&0dc[REN8K%B(3d'E"Em*K8X
*jMSqKaED#+j`G3cq43U9F34ebpacPTRIT,C3-Y@d#*(!AYJ+E+TRXpf9hAdDpF6
R6ZB(rqM-fY4Eb*YD!XS*[Ihe+jcCCe!ajKeCKbdUqU0j%c,BZX-YU#eT0Djq3Yi
)dLS!'PINj`UP&`eHJ*NeI#95PQX4U9M)J4[#EC+QbhTJfqdI"kfZ)BjjhhHRNVN
h-S+5'K)Nk5ZCH(P-F2D"X)`MQ4aRQ*PbecECGe1-aej%``F0Hd`m2-,CiFkTURR
'mTJ[$B6[D!U+Rmq2iGVAK%4mf(Bq,IfZZYPJUikUha)[Y$JS8Ub8q+TaD[44,BI
!MjlYP1I+`e258k+*c,$rCC`Pp(AbNaNj"bUFJ+J(N!#X%64paV-pG,@L*8[lN!#
EAr1N`rP3hPSYZPQM@1XBr$jfpQeaaJ%f)rM3XL["krK)8"P60"$,VaJT3RUHYID
Y#2U2'+N-!c3rUC8(rf1VG[-T+6R&AY'L8jGFbmTQR&kFmU@L2T!!8FY#$&e[VSA
A!C1d*)ifHlAI'4GlAkTT82c,+)R*2r`Y-KF`c"pVX'Kk4*Th1e+8-5MpE'MQR@'
*cS3PEh',eLF55APRR#JF"Z-eQ0i`#D+,+!+!kGb)HGHT1DVb'02bKP(A8qLNM$L
-T[d"IF,B)DH&0*DlGFd-qT2eMU"#"[0k&6bHaTZ`Ljqf8-e5)q`MmkA-c('"'h%
FamVM)EXhE9Ep(fSTM'5b@e4ahPf`VIY'Y+a"AD`d`%!lmTAX*DIYh5Qkdkaf'i@
BIKPaK6BT#&hi-jD,XZQ$P,Ve)YrT%Z,(BE3DL1"P3lG2X20S4S'0,98E&)*K%BH
F@B6)CAF&mfbXUNNEd,*j2kiSLpSVA#5*0bJY"6MYT5jGUp45T+Ij'Ea)fG+m3Si
eE#'lR6)9YVQD'LbelZELN!#e+Z*m##$C))(LAE00VmaP9L4c@$lL5jGZe$*[,4)
RbE+aj-*2m'U[-0,`i*pMcqFXYI4*DEJLhF-j$hNhiPQCRLXR3NSUBL9CHUBN0HV
LAR*"aD+F$!ZhpZPqIbbjiBj#2aC$P-DpR)BE-q3!NNE*f0UBqFRHqi!`K(68b2r
!-+rm8@MY!Q#T!*be(MU[,5cA"B5TFiFNLG0iQjQV$pPVKcII%%AeKLSBX`0TAe%
`1D4m"88"i+L"QpaP(Fc!NGahAjIe#f%ZNTZl-SUVpXkI@-A"EQpP,V(KbU)J9cD
Y%UNbcKNe)(hMclX,R"5Jepb`#E*ql`E%kI#(SFSr81ZLd(Mcb*R!D0m-)@$42a,
Tm!lBRDL&,kcc3lfhR*G@8ifjPqedYAlQr9IiJeDV#b"DNibSYX%1#!5qYIp!%ZP
PDbqQr%h8T2FeAjN-Dfc*YEN)TAcblCk,R*5"hXjTBdcBe``'3m@MiZpMAYF'H1X
q+!'Qkrl9Ne$8N!#`bT,8J#*ZlChbYRY&ahU$DC1HX01bCe*lQ"ADH6"+aG1,Y@1
%jUU5SaNljdE`44-!Ccb2Jl`2V!&)j"PX@@RDRP1DfAHpF1*J%&MdE16SU1NLrF$
kCV'3!+*lP9aCZ)m918@jR+k+$4NaSq"IKPNAIPl'M45"C+k%$D0'9LDL2cR$JmG
K1C-S"Q@dGh(,0!"Uk8D&2HlccT8Bi@kbmI*2-+Z`H@4Np2T#(#QfCSD`+U36I,c
4K`c5)jhPV!i")ZPN+I9T"*T32kd!"&qQBXr@$8)RQ(1G1hq2mf,r@6YDL#J0ASE
mAZLS!eJmNe$FQ1bDj&XDdDVXGDLM8-lVG9l!Yh-&(lCB0P@b9lErXc(F#'FZe6,
$#F%P[$ibS'VK),QRA1D3!*+Kl(LG[VpidlVJhY+8&EB[1kpchZkR(%H"EbTYXN5
S0@b@B6Yd[H,AHT!!Lk"ZU)Rc#54R4YfY$dC2U#6,)a1DXMYI4f%!8+4qm`0GQ)%
F0FiSK$2I#paaiZCqEJVX9JfX[#U##c4dGc"(&l3a"mUS+@16JaeeaH+c*1E-#IA
JA+)&%hb+YK,8JBk'M8dKCCE219Ca&9Ie+3p+Bm%(%P2E#T`9)frfNFeGeQ$lT(p
'#Il@hI$6`$1A'0akZj*$MQ&)KL5M3eY)8Ak[#p5@X2"ZJm8kD(r)80-cY6e$I$q
KD$B-Q'$Ip%(36MqCb08e5d9XV8TIL`BpfkGjc1TXVYmq0QAX[harfimmb2$PBNE
aBTYb"CM!cdG6p1UVZ2RCfeQ(AUCGCJ*i1j'NH#qe0F9)lXl1eQLm1I2(YN)VI3[
,c4dMh,GUe2&f))kJDYFm*aUqi,aX,54T9QP&63PC*$apV$a!lFTfhfZ2`HRA@`$
5EJ3eprKT00a'CF6RSIp'Ul8cZ19++9dU-R2@A+@b[%Yci'H+jb5eGLTebPE-JGQ
fX)R1!VI),pmH`E6I,ER2Efr-3VP4,ejbiN0QC+B)R6d#MfNcmHXUVVrX!*1acXE
VdP,LVeIDdrQk!FYKf[1S[`baDHdR!SjM&&H8U9VX9[Xc"-[[hT1SBZGiJfjXVa$
l%Q3@X*P$*b&LKTCjl'"6j(@,FT6KH$UI)pB2"i+'Z4iKJL[%bQF+PePaS!&IKQD
$Xi&jbC+qXQ90)P06V!,*NU%DdCE!XriS"c&8#m`Hee3*1+9C8!FJrSCTZ6+[B'L
D5hCH'HLeFX!5+TLD%Q%c*C&)F@P+Vh#p%GJK6%iMljE`T"cM+V1SN!$16D@2j0(
e,BbfhdLP[0qXXaJ4HammI%I%R+J!NlFA4&AiR2+h3#"+CYYL&jGYUIa9Ar!,Hm8
AheUd+0HCAdGQ"L(VlTMBd4MAH56k0-S-N!!caBK`*@CRj$Ehi@a9fl",+8lQ-F$
5j+659T-#4pSmqRmhd5pelMq@@0Qrm1dFBc8$4F*Q&T+2`a56R2pp'Qj&FSA#48-
!QCCH4KPK[KLVA@kj*dQBc*JIIq0G5kkm1,Bk,GB!rT!!p'F2@e%Dk52(r21@$-h
$K!Kj&[[6Kq1H(P@dKSV)JVC+`AI*+fSQQrVL%*,ZYCfPUC!!jHRhQcT0L4,TJdL
VCZ+e`CYX8JJa02pZZ)K5f!M`D[qL-Jk9h#mJbV#BZ)50V(9aJKN$12(mX5f,#[i
U,%'AmLQZ-$-+0dK&IH""EGqCl62iXLFLQc@D!#i)YJp3!)T[DKLdM)Lbh`r4SZL
",B6i`CTbYE82VG3NC$)&hUj84-8GVR)AU[ZM,AUeBS42"NfA!*52QGRL[j%5E,Y
kj,i%p26,"SAGRF,T1LAj86ASelHZF&43+1`QD-5[SrJ*U#BFQ"ia8rm-hRUQ%iQ
E#VAPhj%eaeX&X*!!q6fq+@&K$P%U'iVjD#"p`P@J2*S@Dh!IrN4%NU!9V$ii4f8
"G%368A,PT(NHR[[G[5qXmBe%mTHH5"(5cTp'9'h3HTDUTk!!FkeQX`HU"14`C6G
IqeB-Nb3be8iSTVS!pC(J#HAQ,)ij[4b1'icN!p*bB*M*DeF#E2lp*V5Kd#*9f-0
+THB#D*`Pj1HYal$N*Gf@Q!NLU"MHG`ec5Z6[QXc&G2(FI+(Zc$R)KH($4Mb5keM
L45ZFMNG@a,$eXN-ijc'KS,5P#q6FXlDFJL,bP25QRI)YPDLb`mD'8#rYq3%UQND
)bZJ9i5B36e%E8",NpY+0FaET0&+@N!$m))LD#+,Lk-HHUCErmDaeY$AP[)5BPX&
GGd&kc%lBE2IpFkba#kVF%c)1PNNahV'9J(EBR%BL%G2J8hb#+,A1Xrrb`G[mSP4
LHi3XTm3(KhC[K'TTQ1R*1-X1a9-cpMFMb0aHa2RbZS#rY+Y)kJ@jXH-qY$P2M!-
J&0"*"rFUPBHdIb89cYPUKcfpUGM3LP@R%(@Jp)KL%Rm2+m9f&MG@,&!TH0mr4-6
Gm"6M6f+b6V1[FCmi9!c``qp`#pFTVR(2DcqePj!!"TM("#'A6R93*pZm*+dCF1U
"5mj#(Up9$AE%#%a"+JPb%")FY3HPK8GYrfB2mYF$++b@1&SkSE@4X!N*XeEm&6R
p&Eq$242RK"*I0Vj')S[2Slr&ME$h[6RJrq1$'&%AE0a4d-kPL1QffDS4Fi(0[TS
3dk(T#p15H[+PS9,'f6H5kXlNUA4T0"-c-#AMb3m6(UdMIi5eQJ8mhQGEZlleFG*
PF3q!*B[*)"3([V6PlMX4m#lP"EhT%eS!jDbF[ef6$*D[#Sl#dNCSES[Qq(k&ai&
YK(E#[1kaRcclkB4(U3lFr)ZM")2hE'jG6$UQ2bdIa59qqEf0)Kj#$A2fNDGK1GJ
$Eiq-Y8f"0E!p!S9k!kVpQB@)IG"K&YNccTGSH'YS"qq("f3P2`$DKq(JaYdl1C+
+$'KbU9[HmbQiQ'HKc5R-*3kJ65U&ZT!!f"de`fqUalJZ11U+cYjbhB#6-SGU-K3
XefKSYZ+M3RYp-A%6QS&@D[9mGNRVFa`lp*j*8S5$JE8IX@SZCd5XP$1aU%VFTZK
(U&#&U8*eB[c"5@VA*F4akDm#`4`19V%d8EJ-,VAaY(A)bYbkE1(YZ,`2%44lR&G
-qf@*iHQ1$662'2FF*"@CiLh*INf'CH3Nd'U20@8E88`4P-ieTL*T4`I'l@i"94*
`(-$1qBSL$r1TM9`#P8mq"AjcfB&4fl#XQq*15ci1DQI+9r&$B%0'f6fi#RCTAd)
1MY3fBNHHm*Z1@frf6Ch"'-SAj[4()N*h*a`)[IXSFMk89LiCADipX,(Hr6S4EhH
Eh!Q!Lp,1"@em[8L0i32@50e4TS[EH$UYm&!*UVdF[1Q&K@Q`9Um@mZRTfm9r@(V
*,E#'dIJAC-959r*3+*4PCB,GLbKi*AN"'iPN%!Mill@RBI-3I)PV9@p+cQDLe8h
A`,$,iB6V0jG,0kUFICC""VS1I1bVP%AR```r&[@VQU#T+XUfR!@TFcH9QD1)eIi
$mA5P1hd0jfPLB82)")e3i%JML@)j-DHqFK51f@R&eFRE#UQ0F4"KHc5qBNE,&H"
M6je,NBi3paA#8EJ6DrZLbFTB0(MbLQbaA1NE*E,U*$#F0%-T2Q0BK+G649M5faG
2I0UcdQTL(Vi,(!5McZJHB@j1*[18m2LcDB9`YN$5Ddd@dAeS'm,F,k,jC*E&!5a
ZGa#Q0F2+r2EBVm8RGH9Sf2)[$)blqij@[VGDa@44*pbRklIUQJ1FV##0U&Ai3(Z
AeXqb0G@YAM,)&R(q++a*`("eYL6d`HTp8Da%TRUUh@'S9@hR23QcaVr6R8l[9mm
J8)8E+*Q+VGFY$9TM`4FP)T9Ka@li$)G!j&Y*r,k6S2m@q,-r*Ke$E-S(Z[UA-%R
*A1Q!,4XGbj0MPY$TUpAMKKb(1eQRb01eeM`5*B1PDl'QhLTRRDh5HfcL"B`*111
F,#&b&+bGTL*ShhbKhL@6a9$&Q,B6@P9K(Ib@#b,4IB&ZUd3TT15()HVEfe`Ef!,
aHD#Qa8TVUN(,YNIB&BYBddhM(N$XBPCI3"Gd2m02G`%&j(Mr#j,-2kIF[D3BZaF
B8I5e(LrAY$Q@5p[))A-Cl5(2B-Pp'eK"aCH#Z9[m8*-@JQ,[hSQZNK`(NGbT6TI
G5"iicA$&D&`@Z8`3[165FXP"8e9!3eeKRQZUe1Xp-"6KQ92!Gmree!(AKVZKRT!
!2SHcA'e+Y6*`VHFke,cJ9He8+abXAp'Y8CBZ+Gdf"#ca%*!!VBC"JGNJ32Yq3X1
Qe+8QD)dLAX#H!M&D``lNQ&,6CkF!@$-,%,"f$Qji*dY0-)Gm48$DHT'MI432bRh
)hhal4qU$$6rU#hBSp%%3LLmfe(l`KbmEZi"eQ6&[#V@rM#l*NBDS6K46AqSNeGj
lLrF'fA@QKVRDl,d`$)F!laBHJB-keqDSJ61f'B4)Xd+Pjp#Ga2j2`pP1&,QC(P0
fFUNH!98[F*E*)89p"I6U+r0pciZfAQpDZGa[-+RjV#jakE"l&*4!E"Y[d"D`MF2
V,cYk!jE4Fd'YrZC!T[(BEGV05KM9FX1lie"2%VR[I(K'%pUN[2&eX)hTKPDpTf*
1UlH(Xj!!Y5GE0CiIThcCA(NY+IDGTB`TKpEkTVJ`VXJ1()1)ahEIm$YU-HQTFYe
+'cAL`EUckBA9lbh194*2QVdK9+(Jar0IIP4aY-jk*@G2[c&Y-Q,Ee"SJMq(j1pG
J1"``Ec2q+A%RGSUbNke[cI5A1mYVU2mYJJGjG5-dh*mTj-I$8&%0amMB3PMMRRY
l8c$@4d@r%j@dq+cG@UQT9P5C"C!!MMS3a#6B3p(4%011CRafdSd*9*HLdCTrJiC
pFU@(hp$2LXU*bl2"0VHfACFI-G[Ark,bGc4[i%F4TNT+DHlG"5@"e6[KhZPppYi
T41eEf'@$(A(H(NCqek"B+-fYb5*m1e1jh5S4[iUVGC)4FZ3Nl3"h%lp4J`L91U$
GB0i`8L*+X-IQL[`j[Yj%HQbYPiG`$#6f#3i#*V@3!%JbE6#$AGDd-b`YlTUC8XJ
e2"kbH(YJhP9PeHPi)Gp9&TQ8)[eiMC+L(iGT'NSk@P)a$l5'iEYD1rDqbH#XAPG
(I[dYN!$hG0"5(+f!hk5FDCN'"`+,IA-[25Jkdm+62"1+`lk,ei9%fNqa#ZIFrj!
!PIfVL#BEC40EPJPD5f(6KEIZj+Aa35%Kj1eBCmGYeY5@b$q((E*EVkQi)DlkHUQ
+Zl*p6qdiGr&4Rb3Fb98q4lBR8YmKNRGHar%E-F(HSNXGR!,9jl8`Q`p9NEpR8))
#L+JmPhEdHAH15P-rX8DIIB`DFXkdC3&ULF#3!&[ZTKDT9aGdYh98J0S-(f%[IJ`
aJ`&q,5pAV!0T)HTBpN8lp6XqAJMHrfX6lB$$*$9R0,Ap,p2iGm8bF`dL2+ibaJ8
FT4a80%epD0HY0p6I5@#NcR[1@-heaVEUeYS-jK@bb,mT%4%$"lKq)'[E!GXmZ"I
3'Y3)'L84ba%3#cP8mC!!1Cqi#kYVG#B$b+(D%(FXCI&@mRIa(pTQmGVED`,&hY!
#R9m"J#c%eed4G,XFJ`')kRdP9Pdqd%3,,,9FI6FASpTjfaGX2Xl)$2iG$mX9&,Z
5mC*4NVK4Z2e2Gpp6fi['Sh#9ZT1CH)Z[,K5C%XXe'*`))U2J*INrKSFi6L4+UaN
XVQmej99L5Kf3!(Mqh+cGXki9C@h`JZD'TlkSimqhXH(kYC*1kZ9EPq9+&8(L&Y-
4*p2$hA*e*Xq*(edM(&3eq,VI,rmCleTbdfE(2V8'-Ceba`UrV1DI89bm+!%NYKI
Q6!d086bb!84l(JbBFLPKrDLXR`RV86#Y8*bm6H%FVi"D#)kS9DB*GI5Ym$mZDTi
p89r3Gb0c@h33eHZ@p$Y'Hq-cM854jmiLSr8#Fhe4""M8pH2$BYMfPLH4aZAXbl1
MI`C1D,EjXb'hI664d!rr-Q3*mHkL@Lj!,A&Lh&V3Jl'#bJ(Z![bd'DmZaHk1d`Z
N1HdA$U-qf!H8FdH2!I&S,R[HmQ0DQeeKq@'K#a%rjcdfB[G)a4Kr#GjGAl5XXUC
piT19-Y0EJTpGH'NHZ6pS0@$0kQhiIbKbi%6Sh,MNq6!XkK`G(4,L(,)9fjh"&b%
'qj5rMZ$r)DIXc(6bR`SLij&H4Gh"9RS`SHE+UqraSC3p!ERkh`aK@BkL)KD"0`4
5e9p4+ij2"pd1"dHpB"4L&XrhNK10pl2ASS8M@`2'DZZU4m`d@B9U96pj4$f1E#S
2e,2KhKkM0JeBeAP*"S$rJQ,Zd+a2VHT`0k9kYTZ59Rd4$%A51G(rNE5FrIi*EHr
T1&V6d(ALq"!HKBkSfEiN8",-p`S9)eiAQ5CGB5%bk$Bj)%Z*#&%VZLKQLmP`S9A
6UYSABUIj8SpC!r&R(!`Dc2CB3[ILpE0EdT!!H(!R[)6FKIDfR2B()ie2Na8P5hm
i$-j#hEkb(R[#Scpk8PLAb3%QA+BGj&UXBYKVS3$,pBi(hrXBp5Vq*r'%kJ&T#SN
#MmSMeY#AMDJV3rc"d6C5"qdP1J'jS*L&"9*1&ffKcqhPjckNbXD`"'4aa68THpV
eSbcRp(EVh2cAjGPp36a`F04repX9(qLKN!$ThfPp2!jRUbjf[C!!1K6lFlLHFVC
BJ*G%+`hDjjZaK,K"1#M1Y5%QGe(rJjpBkbrC[9!0lh0mq(%f#[!ZYX()-eiBPQY
aV*!!qjdjHAi3BHLQ+'8#YDklJ'D#hPbEYYmS*)h'SCZP0[`5%1H+PrG"&M`VGF"
SDB"50LMB8T2CrNb!Z!0Jph8E'pQk1YTG`LQ+"bq8L4%AV"c!hleDK!LNEB)Hr0`
Ca%M@-YSGmLe6jNb8U6a'G)#Ep@9RMdBhhj["0IJ6SfN#kli1D,m["1-eZdH%8q*
A!,X%&EHera@-lG%@8EVTAJ`IFc(K49fmS0Mj2)!M-`)2MCjjH3Q3!)eG*9j9Aph
B"94X@b2@h8`jbG,a9)I5khDJfqDDi`K$XDqfqJ`0TVl9EK**AJ*HcK5AaN@P&Hp
8QfALi+ZXU+5,4llpXG9ZVbGI)$%@U(h[`#+5JeaFRmKkUC!!5ZPUjRPR4c@-G0F
DGh&6cSAY8%lk"j!!pCRpVD*54q1lBrUiM,r,!BLbBN!k@@!mVh!qqHNFNDV4B`V
J[6HIUHYG+'aeL@8JT,,!2$TMkq9i1imFiBMR%NN3IhmRN4$1jUPmpd&PYQ-`UT%
,0ieFIA0epNG*(-P#H2pd&AZJr2#,CGPeGI94f45'lMGh[*PPKR%5,,iJ'$NklVp
qijAQ+QjNUZ9$6TZ0QKCX2iK)ai'&LNl18XD9LS3qB@!Y"!DJ)P(qqVC9-LdY@MI
d89V'ZCr,A9I'4J$*NqAKhbFKk`11i23eGTp&V3iN&MMF6hfHrhPmpRG-a*Pc1JM
X+KYQT)#"*CbE'(rKkLA8cJjT5Q@4,$)Sk#NM5Nl5[LH54lrj"+khJSZGk(P#`Gq
%paBh#P%X"[%`a0EG*S%9ZEbT2HQQDf*59cX1RHHedJSmUiS2,"PlpLicCl&JJD&
dAj*K(iI4Jl2B$FD3!-cQ$dmfJ"0S@SJ1T)a)K14[-S$@BaMbkNB%YP1T3!20e)3
)Gedp+%#R%@d922"aaJeI$4@aj`X0U3eqXIG,!YCSrK,fVfI%i62F-ql,"*+Bj%K
jqEc44S6AUNDCI!62$Fc[1&rPf0a#Ml$8bQ'3!#@TDXiJ$p5M@B",R,3$P2UY"Xc
jBT[cFpm5RK8%Fp[PlY`%1H4ZEKAlS6iN6lcl6[U0lhQY&S"BC!+@R4)A$e-080U
86U+)f(qF@6hrCl,"P1Ake5mkZP!j[Y#F)L3@aN2pb3,*HMV3+Y4,Mh(3UA@&(EK
S5,Q0QFMCT"LBDM*ISL'D4i%Jli8@Y9qpH*bl&,FjD)6Ib`!CKcU[ZIFP&mMICrX
FT-c1`XZePjidL9%XTf44+h6G%%6C%XYFZ`rjfZF3d-JNSG*XL&B!rL1FHFB9IX$
FRc#[0YB`Z%NA&I)8#,YaHBEAG2+rB0p2l`N&%BEY(GPPkq'6-3jj6IH-l3(GYE@
Tri2-0f0+N4P8q,EffMATk36T-Jb8#FPK0a9#pA98%k5F$,LB'a%SFDEpCjR0rB0
R#Mk5Gbk[lH'@B95Hr!M1cS5-KSC,)ch*5H`%D'QIGNd8Hc82bFRHKJ2AS$9mdUa
+bZD%-`IUDa!Q(Bb#iL+J1IQ!R$)6N!"8RH2af(f+1rD+V-V'3JQBf**F3A',k3C
+,kkEAd`R6qYmMeERh,2J&[PXF$p(1`(J[3Bk0ZimG"S6)e`fN!#V)8ie['dflm8
Fr-9NijP5(,3DT4hCJ96$0C&))HRJC6$cYKcZpTbSVjpkaK8EbCCJH,Ki+6YXpII
%Nl"$2ESY[f(q8DrPje%SkcJp9*b1ZDJXka'JUXjT0[R#B#JDI630L#Jb2!"IASQ
eHI'pNPrLh4FIc9I%A$R'%32PSA[cqTUiZq`dUBf(KCq,,p)Ne+&3!G[f0qf)(S%
4M%'!9mT5P5"Cf[[C9rfNNP)MKKp#bVTMK)`)HV'2rh6hUiBNT@fHEMT[fCeehc*
Y@SCqbD*KRTclF""i9&Q03L$G3XPk[N'iTc,,%8(-(A@Y[8JRRd--&JMY3J1%!Br
-5,b%lAE#3Depma`VjGH#L2S+bJ3Qj#B"B"Zf[8QDl1QX08m#3hBZLfJ`8PSmf"h
2ISlLbSZSZbi6Nk)S[5PR0J)LMG3PdpA6Z*HK6EGiKB5US'KLErQ4QMiD(9F)DJm
G2*0L+j)GU!GLkbfTA1@2CSNKaPFS%IZ3!'EUIaA*D1lbeP[dMe3Q!39'P+hNjP&
9#3BiIaGi,HdeF-$1k3iF55dC5GlNbmq%CS*T-ip+NYlemIE`'J*0&HrlH4K,crM
hfEA`e$I"kDABDJQb1*aI[P)86@-&cdEJiBG9XBG(h`XL@HARhYA"G3(J02!@K1*
[TAkichlYa453!!KIA'-(8$SYm9c#+)eY[2C38(VMmYN'HBX%U3Bm`Vf'A-9L1RL
X1I-$MI+'NbF1Y2YN95!(TBqp!2##imAk,R!)V&8[*V)aQLad21al-*DGE(R32pU
)IcHjTl`iLmdTlYRI9QUMKX90LQ`LpImE9@)HX@r,mp$-,hQNQ"ke&++8"'Ia8cf
cN!#@#-ZMBbj9KZVf,PDX0L"JLj-5aL`c80#H6349RXPDY'f**jf'[cE$HU-dGEN
ciHU#A(&3E![A!FUL(ZX9Y`GI"(l!VrE,iaE+(dSIj[R9N!$q1)i)P-!$"P4,Amm
Um4aEdXQ6pb)3T"F`NQE1hP68-N3Q0'eb!f#&5rC%%EGYE'qEd8ERP%PG,FR&P%E
5kBdYLV@,TB$Vmh[#A&aQ*0M`XAhf3Y)CJD41G5X5$R%SN`@k!50dX#(qkHYp*l&
!9+Q@j(lV+hK66Z)5lY,A-0*YaK,5mpd'D5Be-`+Y#9LYalU@Xb"6!XJk[[)mXH0
1NJCjm8lEfZI)Y*6!M!Y9XXN0I2X"c0,1PQ4le4q11`1aKd&Q3)24FXG$'EM5,bD
3!%ZY$2LMrehiSFAmX,MAY3%)`FjZ%(VRXLLJ4eRfeR3Gi-hpcMfEa'4(,kCq'8%
c%SC%#c6#aAGB#qk$($H1I0SUE@1R!SH-j4-F-Re8Sjl@#jXKe"Hkh)[3NpA,T56
3Q0H[NGPkb`hQS'pI6Q(`p6G4rpr[jf&qqTJlQ46mpf'b1f'8[@X&1jhQ4T5!Ll&
-d('@[S@HqHMRMAqUF*8l@J+cG!UJSl@#&8jMQ$d)MS[hACN8#IUe4pQ,#G3BmMq
Uh%A[*hJZFMY`YV*(,JG&SEEi3J-TVJ6irJ+kjhm)$E6Ia(X'Ni(rIlcKDDdCY$"
re5K)KRm+ldk-C+'q,5a!r-SRci"V#$"DjCfhqZIEYeHBKGH5rVI6PE&4*(cc&rV
3H%aUAP`[PE!-#+Pkbbkid@k90cRNfGXm2m639HT`hb0DF1)MC#qUm%mYHbK4r24
&SY20"(5JRqeQTI)MqqdPP!L8LjH9Ap",%&f#G8Z9eM-*MbpQT0#1TI'Sa&+jHRV
%!`*5CXlX)pD#BFV5cTRP4jARPSN5eQj35C@D`eYajL#jM3hB,Z2P5YF*ipl(Yh5
IKFXlA4RZ,[kdApkP1@&Ye[k%GYAS+29K`9f"Edf"&U0FUQ3A"CBSGN"Q0F9`VA%
'bcr8J"CQa-(8D%(0#b(p"%RbrhSe&Ehj#EM&2)@HkdmRh+keSfP8d"K!Nr&A`TC
B-YjmRN&A6,il-LH@%6mF1N25+*'9XM2(JL0GHQlG0aF`!`2bZC%LYK,'VEJmTBT
*"-A,9")q)(fa"16KjAK[H6SpcIfp39"M2kMG3GhASSeZ`iA@4H&5+-Um%+eB++A
3GYd%MCrP&pQBCkF$k2)Z2RhC,qNqD#*p0iUBfF3$-@Cil8(%f0MN$TY$Ik!N+lJ
rQ@p8#c`[lI&#pkKS86XUGMR`#aPIpVAC%)5dN`c)(`MUmiT8hlr*QCSSUkRRl2'
2A615*@RbI1DPVJL""B&De@RL&)UReIT[Uc1pdi+H`Hp*qZZ5)`mM0(aI0m(GcCE
U#5-2LB&XFYKb!NkNVdFl[90rFmG%1)lXhZMpBES'mlE1lUHf54mScX"b3pGV'4Z
!-p1%MDE('6TmQ$HriUAAVU'BS-0+NYCM@M@$+0kCA[aE8mT#P+TED5l*80DZ@@p
RE-bflei0+QJpUJ*%YTc)$@36C$6KqH##JbVj[Yc$T4ECmejcD2MIldFB(EE-)a*
Nc&*6ZZp)EbF+bE"A$jF+`cM6c,pPM1&a)fHXR*3)lV-4HI+mQXpY[YceAIZEbVU
HeT-9JKNX)fAC$bHT!,CFXTDMFLH$N@e(Ep#8S@qI5YFG$9#GAb1J[Y$mDf&+,,G
`(#qS1JEP+mIKj-3N'qShrd3EfKei9K`rbJhZ)J0B@S-r3$piS5D2q!Ue3XTLJ!9
5B()G8'h`SQH%[*4mSIKY#"@[ae1,fPpS$GM1'V+ZXGrp8ekiN3Z(Nhji$T`%b(I
pR&KFDD"K58QF$d'pT)24T'"AQYQTlRl[$CB9N5L'QN`@JGP40@Qq85k"BMQAr4Y
cQGl(iVXPd'MKepfaqI8HFCCDcYYAj`ES`hA,[$CalY9!F9M%XlD!e!"`D'fTj8'
`+3f4SSVmi2U"6mkc9a!aQ@&baphD2FR4ZD!Cqq*-T*U"Hb6mH0D%`bi6lLNVLfa
[04Z#+lSE3`S&qmI'@DUk30Q`F5Xm4B)#C2MZMFI'F!Q!5hGpM256YU2(S*+B5ES
[rBk5VC!!fBFfp)FJHX[(jiFqcJ)mrr81&Dder#VplqYEih1Lf1F-)48+!@MZ5U+
&L53ZDcGV*TBp-K*K"X"("'1@&a#J)M&-c!(c+ZkCaAQd[r`F"93fdVe6BCpZhqF
KLACEH2bbpk4`JCI'0ZjGl3b%kX8M53DibhF*XL84f%%!d%HbTdZpa`SDpIqr9LZ
f8ik,RGQ1H!(CK8Yr-%M0#!I2"9G$(S+4S2lZi(6e,VVh%UGI5Z1E0X$5LT%Y5YP
([1',`kY!KSR(*-e#9dIar!JQ51-!lNE#i&,QKAaB,KI38h5*1kjmJ5h`5e1SRJ4
"B249XFYJD-R+4SC@@8'0+NA"Xm2e4%b4fh8NJ#0cjB("h458S9aYp%lL%G(UhBV
4`iiNRF8&emBU&`(US$rU8@EE4V!"C9S-FpJB"YFGlBlc$NQ1JD*,D1P($aVMXZR
Iql!U)6'Km[59V8HQ)AdHR4(4mZlare!8VA&##NZaK4jlaKh$V2eI'NhPM)LZ)@m
EY[f@U%Qb$B")FSTMf[2mQeQLqkN1-6j-BiJM-m2dpTR[@6Q-e25C0hi&AMq2NH)
641FMdj%54pPqFNGPZe`VEGkS16cl69Dk([GLM%%mK$i06EbeN!$R5+M0)jiINBY
-*UI,["MXkK3A4+3X&!h!aIjY,l-X%cJI'4EU%E9p3Jfh3SKe`HJJfhmA[He!*U"
bZQBF&8jeI#b[2G0*JlAA@dG"8r$BN!$P%P)VERYPVQEP[3e[l9aGbH@kpHUi0'&
!4c&*r3P0(0AXiQi,2[))!IR+#6[rPImI#lda+Tl5Z8TY1)Lb&jQE!0harj!!B@A
2+$$5ceiiIV,hC0(45I8[ZhDIF3C&hC1RV@[Ej@8!miL+'+b(Yj2EPkZ3!"3qkNc
ML((%8$I!R`64IBA[G$VcqT!!1#rTYDJfaA0GqjHQj'%Ce9SkB+&aZE"!65#i!$A
e%8V$#G@ZjqcSQBdp0l&"PY93H@Uc2"EaJbHmp6'X,!cUYPAUQjN"!pU'9elmhYE
e&G2d`2dr+#NikqdYGhJSXALPVpNDN!!@NL[K$edHSbK4i")Rkil[,+2e-KM5r(d
Uc3dc9h+UDT3UL'&G6I'0)rBb`c,M-VJjQEBj%2EfYVHjJi*dllGiX))b"lH*a*)
d@G`mHZ2,`Qp@jDJh5J+Z9@Q2h)@UR!mD#&elU+-8,TSkQN!BV9@a#A#LVPh*m)Z
9dED0rFG)#Gi1aehiH%UJ$FI6FL)lbKRTm`SkpbJ3a5i$akUZL6`!J4UqZ[8)VYZ
9JFVk+-jG0bJ#83M+dR(QeP-,$pl+R'bPDk!+JK5efi@kL*m@)3I"P56S+66-XHD
#UK)P60eNi@*`1"C+%jb96ZQSDK-9jbUAFl4)!!4#8BKQ*PR4R3,kp)H&3[L%2P-
d822FqrV5e[KURjh3QCG#T[UV`pNBfPrkhbUVLTjUZL`MV,JrhbTq,YiQ($Z(dL5
4JXf*jkd5HC0HHie6Uka98!#%a2'63$rC,38IMk61!J$4CXP@GGpdCN13!(Bj&qY
b&"YPH0S(-4'j9I0Zl-hqEA6Vp[3qS($HRp4r5Yj8#*f&)b-iebacd8I9`$!1$9Z
MkX4FeK*(3QhHic&2#6Qci*dV(NlGiqr0-)Z1"fJ'Q[YGeJfPRE)A)NYai,9Bc&J
0+$GqUj%H1@6GliRZ*`%J)F'8bb25KSd5Z2NVIJ`[`rTQ2P6VV,QhA8JraiQBSM&
%)p&+meq6pNdq*VrP+I9$E'fCR+)8f0RCpfdKM@FpBb`qT3p%kE+BciKN@cFkGFi
%i%&5-Q[3p0)'+Vc8!a1*U3H5km0E9E+Jlf2(EbK@VFSFmc)JKa$#RI*qQjp!rHf
j+E`@%fYB6CD1Q!9d"59V@rc3U`ZSTpQ5)[lp+RkT(RFI%X*pF&`6mlmDjbHTLEM
)YHXJRrfrLrcUfJB6qrEV"VNZ,rL5$YU`J3P!ZcUlcCRMq4c)+"IU,4Q[3EL$PEI
VKG&a"iQJL!l"C`-KVbB6I[!D#VP)YIX%XD22CU+%l'T$$1*XN!$cIYlDY4P6ZF1
$TQ+IZJH$Ehem5rP2Hcr8BQ2#02!fd9-Z5GRM2keZb3rXdBY)hfME2`E6FV6NU@k
#Qh43TRXr!@k@K'IR1hK56#"4Rj3D8A)AD$r["1SdPYf9S@5Y#H*KN5fVMm9Ea0F
$6#T-cN+jB%)0!`1I$Y1N)!5JG1Qa"U8ifS)*eYjTk&BSN!$$eCT5Ye'-bT,c04N
HMp)PhZ*JDMIdLK4@&2,IQqbcJ-`50MDNF)YS%0SF8QbL58%r5-qHlTQ1eVjIG2J
%DULU-H"&4-RVbh'(Aj'lN!"%0cH#JHD@`%&`K!Im5(*q0S8BJ*eI%*94d#drQdl
(#2mHFGGR[p9MCe#KPlq*D-T0jNm!&"V8-cX+-NHTP&*f$lH9Ei9pIdA!4ehAcL&
M%&a4a#BNCLJ51!$D'MS3*eSh3*)$1!0699EeSc+b8JKmQ5L,Y0`!2er$fp2aer3
*@RQk)bcRdk9hbdUFE@I#346GJbTJX93f`CN[SYaajNrR0i+FLa9Pl$q0q9&8b#V
V$-Iqa5Uh"EQrZ5jeCXfhRH0QpXCXiLC9X83YT%r'3GaH"49G3f$81I8+Cq5la!S
lJ6+EVJUZqL5q+pb3!(DE,YCXSU@L&`XPVDP[RYcFelllC2UfTP+6+Kk*S@p6e6%
Mlf(%lSmKI',b3Tc*'FUD"CKYH3*4[+6``$)6paY-,m8p%mB(HHf0E20kNaYq16X
"+Ra-%3Ikaqi5F`jdK-HHr)YEmNETCVi&0@%51D&TXa!$B%BQT)Ze3h[`p0i$b$[
5Ti["Q(JH,CYNCD)!)-pjL&amaMcpM3D$T+!M8)$"6%ecG-S8E)q$ecUKQb0Y3`k
6D$p#8[B*dB#p$1`amI)4"Q+)C68QU9,%dE%fkIZ-$f9$P3*q0C)(5p%iZ*rTa4(
#$XQ$-m6a96r,5E'"$GZ[A8&1jcMl9@PXE#e2mj``rRHAD8fZ$[fS,-2S(4a9"Zf
NI%*qfi&Ve5ijL8pLrLG#dKSRh6VVp&Cd`UrR`'!!GmB9-*5DK5KP88)&,$!UdSN
I34%%ch+0XTC+#ZJm9N"+dZ!b)03E#bJ9!pBIQea5"pe@AUq3!%dq(lh$Cc##K!4
cjr388!hkF6M$&CN3lHZ%3,C1RZ#Q"Vil$Q&EQGhI&(q-Zl(rVI[9[1JKAFID6!5
+jp`qGdCG#$f)5&$X6UJ#9B-eR$,c@dPH(Y)2jmB6@Nfh$--haGQ5e('8FjV3[!9
Vdb5f1jC!Q-$cJ9'h)P0D-ka86Kk(-F)a`YJeP&QPjqVAVC4JLf+j9"#C`@Z-TAK
K0T&FedQXMr5RD(PVcM#q(2!@$[Z8"N"IFG#9-RQ4SUfT"dm8!$(8&51,0XV5I`i
a)"VJ9GNBaX"m`R#101$fp#"9b6`G,D"E0%f3!-qrYdFZ!$$KraGYk#*R"IL4UE,
dCAF$rBeArSiJ-bcN*KcjJkZS2H3'XRr&aI$fel(AY[RcpP@8(ld[pLP4@GA+$)X
VGqJBK-iNR'ckjDE@"'9@4bh+XG,LBJ,"feG'-TLDmq`GmGT6RLf3!,(h#Ha$!+h
A68#,"5'r(F[[H9Kc0dK[d8*9N80c(jDQa8FZFc"N8$F)'f9d!P!'Npk[B+IF%Mp
eE@U!M,5V6e"eRdE9T$F)fV'E3p3ji0c$3,3HJU)$Z&ZLA$V"DF9j%2I%LIp3-Sd
Qf!FJ%fMiQjKMCe,AFmT4S2@,""V-lY6ja3GP2&@UE1PmVlQ!IjcjL8i#ZVdU#Vd
5"$4E5a+%U++"+HKUfXZESZrcLT*JYSEJ!Adpmie@4p#'@r0D&8aK!)Qh$DYHMra
VGkJ0UDiJX+Mk80-RSPHURaJqp+NK,ae+,D!GSQ2&2lRPm[U`YcLiP00k%#VFrhK
[2S8cPVmjNkR(B"C&#2&P-(ei@3jUjdCRb9!AbTD)8PF2'J5MDD-#11l0p*XD3rk
XAT!!r*JP2mIkA1fYGe)M4+VDGhH"!0r`Qrr&IU+id%Y#P,9!hBF1rFR4k&91c6$
jNC!!0GBMpMlb2VY`paPeU!cN5lShR@VU%@*Ge`cVLh4HEmG9S@VH!Kd#9di4M9Z
N2Y4&pemHZ'A0B-&k,Mq+pBd&cf',KMC11,JVKj!!0Ab,JI6G"F*icHH5'5P4iKS
4-+VL",I1cP&hee0"NT)4Dpib`Rbak(iT&j*dG2-k*SfKSImUL6MaL@Df"0lB9Nd
Hh[5NZlUMElkT51XHZ62+F*b*5fl$rRJGjJhkR0')K[1(AXCAE33bTHa#E8X$J&P
1r`YMdlqkp*!!$$N"0l@6)0Sk1k!)fcSUk0XB1L5IDK5cq`X0ldh(@+p0lN4mF1"
p9-a*)EY4L@iqE!lZNqV5@R3Lff(UdP+1!J(C*""rEbh#VGr5+a9BUC-[PrPKGmc
aADI3L-XB5X[B5J2%-'Yd#d&J94lp!D(JjG,r"B9DPM``P+XBlf9Xl*ehbIFZK8@
F1MbLlAKSPdq"C)chKd[kVk6X2H'4bNZ$q2Qj5Zr!F4JZdd#VEIT-KmTXXZ@YLG!
XiS6JK-LF6TB@6P8NkkaK"@61dcbf5P`2"`p%%C'*rrVFJJCL&,ERH)5jGFk"ij9
0(qK!2!J#l29pabRQB4Gp#LSV2EbLm0)00DXZ2BeJ3"IBC'PQh8)@aSF1k&kkM%U
VqT!!hH"Z*VGpr[PS[(A@DiV-[ifA2%Vc"KhE',2Ee"pdP,fe*9#,FRrVpi5`"#U
m4cNaJ[5BP,8[G+RdKA&qrB[XhPIGV,&-9#4!!*iMQNI%mLVkD+P42VL`+KF8+NV
DmNbb4')RI@"Z*%qMd!#hcQ[$Fh#`K36UNP@Up+DPqVj`Pj'9akZddVM!,Kk40i5
A`b8K#QaEJJalL@bQREU#NYj[MAd+3I2EF+X(L0II1b3I5eAm&8KH8ZEVqI'Ar"&
EHrF%0eTPTTHlIdi'GZl5d5ReVq)BKdb)h6j(N4a+)0MmJ2,6Jf3"9*q[dVek)k5
qE9e!8%1Z1G!RD0HB4`B!3T3!8$#1!G1,`qj2EUf05QHfQ6(QJ+b8c!%pPhMT2$k
UC684XjE0#BT,9J'dYA&B(e#QP)Hp10r"kL&*G%TBdV9))ZZ[JDqC@[#PS@!Ub"Q
[q@dN[9M3F3FlJmLe+9k+INPd4qqmfpih#"Zer&%HbfQNQcKG!jqG9hM(M8&f,iT
IGKLUDXcLXF@pXN(5fC[I(EYMm8EVD1Z2@p`V+*+N,m52!(-jD3J4CbhKD'*3He8
[%J)%eIFAF!RLaeM,"2dp,$JI"6$'33@8AQ3!SLbR-(!j(!+a0KC(m9[4RMC[ER%
jd5B&l@[Jm9GTPGfGbqED%&0BXdfE'lIZk-Mh'a*p5V6D)"*@%prE333'DCpmKMI
UH$+l-J(!"MiVD1)[2),le981dElK)6ZpAM$!*D0,p"!`lkH+38Eh)442iM#AS*C
ii![AGLEIqmI0CBBQE'A2&Za$IMGc+Q4Kk)hhB92r[Lk%c4q9flYq)LaG)M"cU6X
I`!GQ#U"YdQj0%K9fYYHBXY-!PTLE"k5C4TNL!5*N6@GUL1,i1(!f!)[4-Q%@h55
0i5MTJS`AS%[CZQ8Q"kdr!NXI5aYa)3#&b8(e$DQX2BbK3-Nbme"P-D8mS5LACe$
aA8c91J&diHX@QZ*F'%h'M2bGD0Fb$m#3!*`T6&blj$&9[-A*2If55QE&8-cB[@8
,&UDdV(KQbL9lEGRTe[SGHLlpXK*%ae4h@A,fK!G!A&UT6-(lRPi6l82'iTiYmGY
3N!$%m6K2q+d[dP#X!33$(j6Cl5cLJb8@-q1a1H@@fV-NPhr'ISDNmbRhBU0SjAm
Kb,BqB$3a3'VE'e3AmC!!%93H#E,j-+TUD4,T30A@!h6"NcBl3&8Z&kKMm-NKb1K
f%'6V6MU)%TKGb#RA8HB*+PM-M-Bi@90Q`f9C#9N1X6UI0aNaCXl(jr3Xm+BZkP1
B)HEGP2GKi&YNL"LD0`3kmS,mlISU[B((9AVeq-i339TGI5j--N$e%f'AHRfSPI2
-&QlRq1q&$PYpCN&pRIR0+j4qXQHJP8f3!#)6$!CG[D9qYpj+,#&DD-2L$dlV(A+
-&PN#MAEm+Nl-N!#-Uq)-UF55hV)d@kY[Y5(13RQ%Q&d,TckELi+[Y%XYj%UE%LI
k0m-6Hr"+lfmT##SKN!#)2Yk4MGQpliEcr*!!eb[D323Xp*!!ES9cpD4X&ip!PGP
2#'#VCr9K1kAjdTPj+G#[#K@&J@kLLiL*m''qZCP'!h&QCQUG6QVPq2Z2QqC#@10
[H6jBi%MM8'S[dNEqha4(9YCaP"I#VbRUEhDT4k(-[ZXGZ40+pQ$M#FMI1+pi0Hb
b#dhfSc0$STE'LJ3)[`Y[1lKrUEBJNcb%Q5mC+F0bDl%#Bi1"[Gp`*XP`GLm#1N&
+,T*&QIMXbNh1IFSEiV"YriCCrA4KEk+['THC(&d0FVaH$&[TQ2,E2G[f$H62(Y6
5QC2LR'1S(%33(*MZ0#3"f40Ub'XDG`*meBqRC[*MlMq!@S"bH+1B9TjiiX3T!S$
f&Z11h$&TD1VM22T1M0SZ,8FC05,GH1eP)Yc#BC2mBQYfDLhaEq-$$mbXcCL#C1d
,b@VLk'@V2ii*(a0IHb+%pZA@a52LpkLEJST!5$)0%HIBdr%4)Ye(cPHbjSX)3Ff
Qad[@JG0hdhD+qir!)"P-m#4TU%mIHeiJ3D9GXPh-3XJ!'ec#K)eYp'q+MDdqS"r
l-9SE`X6XLfm)(`F8I#,T&aVHE4K*"PI5&(`qC(DHNA+GfEDSRN%A-Qh"&GKS$6l
km''b)c2c9fkT5`E-FiI9e5fZ,Z3R,+a&3c3d!i)1SmHcNe2(9ZpGJ&qr#H6ZemI
c*&J0)J2qVaFHAAmm0iX-(,RqFpR!BpCEqBr6eT!!p[mRpGk@P9H9Q6a8F830ci`
A20!fT-I9hbJj-hARrke@S0LT8Sc2Hj--i[8G,%%jIb4YGU,aFAaLDd,qdCE-d3Y
PX6NPB3B[HkCHr6BX6QeNf-%*H1A$hp)mAG$Dpr(c(X5"0[mTXYqRbLS+-A5,83d
RHBqm8TM[#*h-dSAFq0qHL&8%8!)p#`T[Xq,3jd!2BR9(`ChLLDDZ,`d9PKRHQL-
2FKr[U9V&D'a[`0La8Ffkk&PUkQ*bj(j)&5lEE-&MXVH,5ZdR(Pql$5HmhmG)lcN
9GbMm8fhbQMJ,(58`(M('"R)Z('dN96&0l"-6ZF6RpF!@9alZPT9#9GiabUrm(4&
+$)38LHMVrl9ED-l!f39@[iII!JGDeR01196Q`1mqZ!52Gqe-P,XShkabe@%`afl
leD2r(VkAV@1BhiCYYbZ8J0Lcba3-)qlc4k[d35Hd`aE*pR%J)e1!SYFMX#f3!"@
pM-aIL201$Q4#)@"",2%(1H!V9qhbjUEL'96"YPhBd+drA"(L4C(qGPI*UQ4[4Qk
ah'!cLZidpHb&RJ69TifSDYfR&l-a-S00l@rZP%`m-LaLQ*KkV9&,3H*mhMm)f%L
e0rKV19hHJSUhT2#@PMTk(MGQY3eIYkp#li'1mLL'YUeBKYiH3--!8,(EEV#RU''
LYdZfN!!TC!(rFrQVB#@YQd$G%qKAZBLbV&Dc2rQNUl!$pLh#)2ARr*QR$e2dhGc
(QN8[k&-kIK``pASH$)#UeDX4C`c9h!10`fd[r9MN44`f'`m+R%UJ$aaerTUQ0H(
0J)&fHN9Z!24kF[)3,NSSY@@L42q(5[qaf%N&M)A+2h9C"lRfjcK&"GDc'X%@5Th
59E(ec1d(NCbFkr8CiXV+9Rqk+0H@HPLHVT&$YHpECd6Z-Zj9QLl"$cNLCk(XlBc
1pUkSdCNX58`)d'3d,ef@dHB8qY&DVPT)-2Aj(E)b$B(m2DiIXk3050m)cclSK@6
Dc@i3$FiQTQc0f&8RB)S2TUG1TY'mb,V6+U@LSj%plMT9Uq9f4F%3)mm12DP2&3q
-%EL[b5*5T+C45EHLRBV""6+T3rUai25N@'IPr2090&aP@q*Y,0MmAeG*[0LDkUh
I3b`f58!JjMX@%X4MU),Y`LbLr@UcIiJi9fk*dr9B1ZQLYb%FSKN2J,3YP*82kl,
elL&*314JTeHIE+J*a*4[@PKia$FQMpHDcVT,R2b5Lk8b4EFid9VE16VqCTHqa%A
#NE06UHKh@Qb1Q[Bk"iH5EZbME%DXCSa0ZK-d@afMrEZN[EeAJpK(-,&H9f2U0-e
DMBX`hM!FUR!23MH(SL!9AedZd`"akEHM6bU64j'd$@TfBjd@EDI'd)NeEH9$kNc
NkJQ"5`$5Y-9IU(S9)"pS'Xd6l#T$b'*+U',%I(6US!&4pEa4&4+i[HS8lE*Y%q6
iPIr+cFjJmr#bH&#Gj5*a91GEUI3Cb386XQq,F)A+aVG-S8Bp@`!J31kd)YiQU1c
2Y+)KIC!!UQ+lQ"q$$,-i)!$4GDf&1%9kqhBi-dlqQK6H5%ASAp-FRGYeSFd4X!9
5VM*QlQUa&%#6mA-DmGN0L%-$FMC@'8j2l`Kq3-6dVCCl98$i)bN*,9Lbrhah"DP
NaHa"IrrJh+KLRB[!3+*JH2)N5[*kEak"f#TD#UbBJc%LPFT)QMmE,6*ekdkK64,
5KFhfQa3eAq`L4k,LTM#qQ@(H%"hJKXjq4-3jF0&`ap6pG%V8KT!!jVTreJL`L8B
mbkbmQ[4JqllCS)qB4Qp2b)T3QK+dJ3I`NQ'#K2)13r5LcM1Kp5eN014A4jNTS1L
kaDDNU"T2kN0MdV#+Tb)IX*ERHbFFX-)[U8e%!IAm'*(VhkTl53BLh9HNDpJPYYE
28@pDVN&Y+-iaBB!BR6VC'PbcJ'"Zr4$@rXdJHjVVcGd&8UF4h6G`p6kLTAFVGGr
8+241PY)!H0$6,l9f-*I@!*388,1ErRml8#i4[M`KK3iN#9q8aaEX#PCGhSZjh$K
jSqVY(@5TfpUiaf-9AlFiP9@KNKSGU(Ha8&KJB4VhV&*e81KNr)T'H[[S&0heXMP
iPDfF%6mH"B5V[SfUQr'VFeh2Ll$#X61Q&18k'@j@2Xk*+"ifR"l@eVJ(*(+m5Vb
ZXe'02QX5hbj5b"4bRQZ&6JbP-IdRc&$j[[VNDbM3`00a,,NeYKaN1fapjA1,mMq
4#)NHTVMqha3%qQGF6R'qkVmK@SBMkJ3")%JD'6PAA1mAIpG%p"Y4B0JM0)r(caM
)ID`Z3Y"#',U5IrmZLcjFdb,#HUB6%b8#i$HHIBajSr,$$+h#JFi`fImdC*DrFqC
KXJfXajFR`dG+B6j1`dQE#@jQ'P5dMYr`*"RA[0TaIHCBR@bc9GlUeC*@D,F2GjS
%$CDhS+$l"I'k&S$83AEQPU3q$,0NDI20i`3+FBr%f1"Bm@L#NJ1XV&9*Y*!![V*
efB0il89iR1,94Ria5+6mj%Kelfd+CNXCpV2mjT(rB1hETV$'YVHhpB2d+BA+P`Z
d4P+[j+EY&H(Hl`pH4m5TphYbK'qCHqEUT4kq4I4JEpV)j1"!eI-T1e+I#PKN$D'
2*G4-1+FM,@#S*K3DH4IURl-"b5FGE@rr%i$R3m"`ET5f'e,GT-$f'd1Qra%6rpq
M*2(,%2&iTXcX9ANB'!%SX&V'NF+a8*&Vd'4'*IkH3Iq+#ALH[%YfD%+MHZMQ-m2
+$rIV"`mIbD-@[G1H%*+Ik()NLN4`&%hAqe!D6,bJ6MVQ,a&6'jkiL+9BRJL@T(5
&-a0mGG&U"c*Ma,3)A,8(Prj#YXf0&Y$dZcrE@VbJm5HI%3Ae++f,,ec@NJa62Vp
bq9&h%#li[ZQh+*l8,SFXVS9V"8%N)bFqaFhMQSqTIVDKDH@hIP,KD9rYSUAc3`6
`QCXRC$Ma@Z,E"P30HT!![e5DY"Id4a%4c+J@Q(ZRbi3f$GeX3L5BfE43qCGmeh!
Kq-&31583Km!j2%ZCi,*YmrA@[&1AL-ZMh+R[QZ9[Sb2!,SYl%54+!G1Bc32pXA(
DPic+bBiTclF,b+SXC!rmZ6HC!1DCK!i@4p)C!crm[HAeBpB+Sm`iEqKCY'pQq%$
Q&E(,MVrP+"lP&kaPXeH&LdlKM6j'"+hBF[cq$bq8rUM(lc*pM,8P3fKC#0pZli%
Cf*8#"+NY$EXfU*c3IZqMYKcU[*Q%M0CZS3dA$5e%AjMGrV#bjeB'Q0i90NI*ZPL
3!0mYMSR$6lBUSM%ME"CR(Th!9&,DdGF+YaRF[Nlm,F&HMihJSCee4d!d,Clm0@4
(+18IQ@TK',AF+pEM0A2[[+V$6fjI,P)r`K0f-'CiEAPhDfBcG)U8P*PdEP)FGfI
GJHY!@I3P(Kc&0""%A`F4`PIUTXdS+PAQaLbf2r@XJab4eTm``L6CFiX4ZIEbiBH
eLb%r$apD*)[A5Xh*XYf[MTAf)UIJZG&&),Vr(RMB0(jBQ*8[Q`GY'$(deeGpe#@
%reqJG2,PFL9XLh'8@*UQaIP'I'&Di0$b)-@3!"hTl[pb8D8KHIQ0G8@86fQlXQl
fd@Hk+la6!)fa,&r[r$-5@8SIR6h[J*IS'Si[ALCqKlEUq-Z84T!!d*`3UNra"j,
SZHAbG!VaP"$5mGXF,NbLCKd4kZLb*K%%dJk)hRXETKmEp"mi)akFT5Bl28*m,4p
X1Jm618jSIfk(0@Yl`mbF05`m)#L3!!)(60KTC#aHq#CPQXUTEFN'5&AL8EG!J4S
qSScfqqY2`YCXa6)fA@C!fBAXAJKV30V`k-ibpK!FpE6E)FYpY)YF!$FJ-aVDp2V
'VJG`j)eRHc922d+*K)c8*R'FRQC,9r4kFh8[SRXN4[Uj*lCFQ2md,Sdekrp2&Se
PkVR"%iVSCBbjCCeU0XeABN@h2HXhqj!!rif#%pK0[2@[q#@,0h5[UYl2IiIIZTq
G[`qDB@p)1Q%!a*B0J-C[S%F$0"RjK!ELKArF8,QJl&(!AE"BARrQUIS9dYQX`i[
`Zm)*IBMqhb9T#`IVmcCQ5(*&cP4(Q)Jf`h-q384!#B[Bb[6[4&'F*(T5Pla+R68
dC6rd-pp()M'kPa(DK8lj6IQ(&%)pMZ(cKDZC6icIV@Cpi%rhl4Pp0DV!Y0%,&K9
d`T,NF&rUpL"eIC[`MLH%@$I!cqBq`HIk6Hih)4(5fXK-DUY4&HIc1mlP8EEr1da
,L9R4Y6mfqb)0HG%TYYLiEl41hFj&%ICdGefXhLMJS)L"[[`Sqih($$9pJVSalKl
f",brET-+Y!P[jEL3!*)XqIP9QhL&lT3Z3j4Y8f3Z%@[1#2,d*6`aiNlT%Gae48L
VH`l*mGC6BA3eKbKU+@NfNb1B9cPc9e(TR$%i-VQ&q1l'4B1QId%ET3E#S"GhCYb
Zd1*d#3IlllF)-6USCSSRL!rS#L&eFdG3&eR2"+14V0d3i*3e0-Bli@['1cX,T9H
[E*V#9qqN!(I'F2UmKR8h(24`1864[E8'ap@E"-8h`1R'F1,jYqif0`JI)6DXE-0
Z*)9@ZZq,Fm1pf8bhJG!Kd1Sf+,(!b%&bcUF(r%`*,Ab9EQJI4@F0-NS9m`!IBR$
8&f6M`@&iSKR0I!9R5CHF%ZmmFfC)LNXkUYAi4lDJLbd`MHTh0b`+#jFD%m[`UFh
JS1V`P1Dmhl1Z+#9iDlXFR6M,rmrA&iVmciS+U!iSD'V*pY-P`dVPm!B3D6(Z3AJ
8Aa$(+[S+2V#'(RUS4K'AS0%%CPF$d(C#p''``hQr-#EM$+Z(Qj4Y#!2!'J`+XFF
U$UGBBaU&%YCE"`4K5TkEf3AcmHCXM$SfhcMB4E,!QXY[-#2BLVT(Kc[IcA,(iEX
RZJ!VIJ%mYUYq'Ha8f4+%4b$2YG++%BjcrVp6B'DP!K,lK9U9[Up(#hD5D+D1NN(
)qXKacS%FAeL"l'2@3'Pcc6faMdZNK+YpD,pqle5'ISbf143a9a2-4UU[h+e,LP8
3fUkNEIfjYYmI8h[G6l%6[L[#Nj*0,E8V'9llP,'SD3DmmYefk9r9G4TrCVH+f*Q
SVlpbIe2A@6XT-Rp6QPa1"A'4dHlC(a+G`RLGa3h0P#FpSi4-i4A9,DTX,&[l5,d
-Ne@"1@HdVHMKN!!VL%+D#hSEQDq(*A%)'mj1qke!8Hik9MVjK[[MM2J'aNkM@q9
TB+k6ddr[DaBD4L8pZ$E"f[S@)Ia%r5+"'IQUBhVG(J%`cK[T6$L"J@aH$`3(EZp
)I$R&*N@a#E!'*L`C'L"rH!&P*AAfGBTQH(jLmJb1f0qjQ`MBX+q*9'+jA'Kf*dq
-Q5amrcka-p%AqG5Gq+Q&ap1P1)ZVKD"q`UmpFAp3#")1GB"bBV[IdHAk%3lk-TB
d0D3kjK1r$)[bVQ#kUXCZ-!1J%p5'kZ96&NA,chm4DdE(&&`3p,JPb%+XVp%k$K(
&k$'9108mFc%mKGM4-XNTQp'h'PUKPKee#4`K096ZfI6P&#19aU4d,3)%5ceD3R@
@KMRqMPVB3-$YQc`)5pqZDQq!4E,%J,5*mjJX&S5Sh'r[U*,cS3qVi%p@M([%B@K
q8ED'c)9Z',!5dE[GVF[mkbhhN3F(Gb)X9D$U[&N@I%iRI'N,B,*R[9&rC`k+!N-
F+fbFTV#j!!"J&QfZpA2PATiG$8kdRd`LLdD9(+SqTN2,-"r$-[d,m5M!T,K8%2+
r'd3I3c`2*E#dRY'3!%!X9m)cp*j'fGpkd[3Q!QB"6q-[Ele0&!kmLIMClrf&"6Y
CD*J#"hplR4m4EM&mZLf+fa+!,Y&8NIZ*CrIXXH$9Q8Q94PB-V$[1H"Jr2r,6fSL
C#IY1*Zqjc3*#8Nj'cV'KCQN(Cm5iBm)*jDhh1jm$eZ4&)V*"S1-EDkmZ(Afh*h8
J3UVlFjqS0c`5FL#'q8'rT3$[+VamNTYDR9lLTe`0jZMB#0Q4H8IU,B-lKbYLC@h
#B`G-,3baQ,LJ#bXdj[I$Yh[fB4kS+FL9mPeJDIU(%!hBRaBTTQK)NQ+$pXp-&(!
M3lFp,-"`@ENUGZR@+mfAPc"[3Dk(5d"-(mAc+pD$a!dqq[bhP-"E`9#8()Ef[C)
#+!U!*Fc1Qa"S+BA)8N*FMC*`'UPJ#8aX3ep'h1Q'bVF)l1rL'%i5N!##c3I[qS&
ckAPB)#)8$(8GGp,dY8[ASJCV2`N+3IfD2iF*'2%2Vp8@&@9q4eG5mj8+@hi@j#U
L$LfY1PM9S6ThArD%&6RF8jH+)j!!"kq3!#bh"ZPr@#T)Qk929,*ZAfF%'3TGj&(
P+R"0f*`N(UpX&!m#)2qeZbc"q[BiBDc[VZ4Grf"4iM#K(4V5R0LS@ZAAId6k!i2
F[rdiNK*Gc4L,D0kj"KMF$VPlAQk(%U20eALhh*9HFl8h3mF[2JVe3kG-EEkG*i+
KSL)!8`'Ap$VN3FijZr)RL-K9p(PXQ+cTP*!!"e&pReCA9VZp0ij1@*LU0GX`iZ&
dMb54HPF)VIA"PN@CV2DYQNH8mMZ*a"E'qEb#TlLBf3'&,ae3prje*r(JaNq3!+l
4d6B$aUL-eirTHXA[ehF&*&*1d`@5(GRD8k42"D&9J`Y,DUeBaT'1'hBF(9V&(qj
i6Y9,',HRV"dq[p'AGc+9$Klb'LY(MDaBJU*Z,Cehqa!J6lehq)bhKSZRDFjeN!"
J(e(D+riqeYB'e-#Z$qhJYjhf&"*2Y`UZ[,mR3)+p'm$amh8XaD%dBX6"qLbJkMk
3!&F"rB0(I)QYF6!j3HC4l"jKYeI"MAGfN!$DckJrd"L`f!(*,NDUX,QS!k1,+LT
LpbRq5CbK!+%U"EX)e)0emAKBVa(&fE++I')h,P*MRc!Fl#jC8VR8IIm4E10R#N9
mE#jR(faa0[JP%bZ5HX+3!&jB@A5cHq-+4"BG3Mdb[1ep`L#Fl@XJbD[#*GUq+qV
46c-5SDV%Srqf4mB[6X[e)PaF&#bZ$5RU+`E&j08-DkRj&*l%m2)[`2AR"%QbqkG
3KrrQV`XaMH0&l4ZXJhTF*SdiS'S3)ZbK#RRQCVVUl(ree[CBHl&iX,`Z)ZVNd`F
4qa"ldJ$Y9L$6aGmkYe5a1&P%I4MTB@YijNBHAY%D*kSm`*-H['!'m+ZAb["Mf[6
c+cbPh)fZ48-RdiqG(hplmir6T5IQ`'r@)CQfd2CZM,FSP$qZjQB1Z%MAf[FiP'N
)HX*LX[E@@,C!lfQlBV*(ES6JIPb$I'SEh4EDpf2)ZrI3qbIrk['D(Fcc'&Ep"9N
J6BP'km&NMPbKR965`aGDM2cJR)N@j"E$i5Zi+&G5ZISG3A%36LiGpLGP6Xh+,la
kQ)-T$Zp52r*jdG)HrQ4$10BPIe"2-8KjD#('EM11PA1EKCM3F#PpTVAr@ijD12&
+c9Rp,6SJTUi+CqQHX*GBD`pZG,p5@6kSmkJpi)[GQQp&q3rDpl@&p0j%HH9TAH`
(k,5`KdQ9K5XMiGrLkQTQDJh1lmHFTkNHkQ&kGdS*H$8bR@1N#"2)N!#j1UkIH0#
-4ePpEQIdQjqL6lCNhE*a)L4d*1PCK`$Q(jTa2,k5fdj%-0bZ3@MPd!jalAbkMp4
jdY!SY6`ZP%Ea(`ZVTj4DmHG,fA9d(24R3Saf%3eKY@,2jaV-mFX0!2Uc+Jk[!!L
TK-Kmaj%pK@r"Eb1!F"Pa`3%3`D+K3G"NhR&`i!5YlpK!XkE0hik+4ahJ(lVFMAJ
GK*)$6d3e**!!H1665UJXUBP!"!p5URd-eLHV[b)0r'#SHD6'BRr3J4e$@H01$A!
a5SPA[6DhphY!`1K@9#bZ@dpYBIT56[D6!%`Jm+kidSpr"cK-rdarqNE*%C%,LbJ
[R`frN4Nm@GBhGaaM,jZ9(aX#UaALiQh)mJmNH#kl2!F(N8'@Sb+m61VCk5bCDZT
rpCHlS,Uj6*S[YZ4"[202XN42ZclH&h'TK`6093Fc`j9e`Z4Z&14[am`R5HAP)$`
UI-M93MG@P3DcmBemTN!2ZX)IaIB1$,R#9J5U5G3@2(EYKQfJ,c0m`F,@!ATFh69
jk8M)l%+YVXNiG-CN$rNKrGf@`DXJ3rN-Il!,0!H!61d%(jA&0*b'j2bI-&8E*D[
KDZrKN6GI4XPAk!NEY(HqPK3Y@02!0)0`E'p6a25r0k,59f*ej68aEP3*D'Gfb!&
k*&Q4%R[rq+,Iq+S43E(I,XT!9)A"HCM[*0@eZN'3!'"'fC&lmi'UddNMR',kR&G
8`%c([@`KdHX)4aLhqNS-QKM-EL)Dd)3%IVE'G%"p6U1CAZc+BkZ53&)!C#3GHHh
+)5Nr4LG0Y$c2[%aidh2[E[&[K-kbY*SV%A(H%6"qc8ZBL'cY25jY)LPE2ZjL!Zl
iI$+NG#DbaS5$XEF@0TdTU1!iGD15'10$2m$KUrS0D%NNpJR1Y9epI"5Q3P6&b'6
IYZ3YKK53!#ST![hXcbhb,4ZHV5"ERUc"BN88[ikl8N&HK1i#4AY"qHc`j`"9&J0
0$ZZrX&k(DR0-ZADGSLeZCl*UZT!!9#qi)feX9[RXRf+F"F-Yf0T8q68lp))e5Ep
[*)DfX,Di08SX8LHPfIJ()FL8'Fh,lHbb,0C(E#aZ,Y1A&&rfbKT6D`bBkj8+p,j
92(qk3&%2ICrJ'$qM2qI'%[K5#&e"AXMKTchel+RcX$AhU,'h"0iN$"ePp,TS+Rq
P#pjphMIfSMePp+@Yke$1m'Pq!pD9(18!!9f9l$Ga0iM8*@E05+mIiR8CqR0M"aQ
F-+U9e!m,!N!DYD54L4e[fFA#LQrrIi3ZF-+(2B"F&0P2i$8bk++-rcQDQ#MdHEL
*RlVD@bCE)V,+SEQ*')E0Pl$ZB6[4[acGQmi6hc2jV)EL@i%T1@N+-Kmm8m2)`Gr
Bh,+cBVPMIS6!61Ne"T'kA8a,M4E581(qQSJ9Zq)@I1HhmhBa&QI(rBiqcCrGFf-
`%FdHf+V8HUR)Td4"q5eG+$B(BTrF3p@fY@0PDXJ"3Q["Jk)S5(AUM#+jBTDHKqk
a6repC)j!`0Kl@SdNXN(X+)j2Rjd8"TdSDp904lH9#f8-X4j1rDPB'8qei!aVZlG
N3QDlCP8*h8KrGrFC)KJDGaL4eX6ZXb)R"ZKK`D`H25K!P*++aMpa"E+Yq1bMM$m
G4(aZp%h'UND6ALM111,J0qPb!ehk8)jRmTdX&Kl1'3dP#Jbc$22jN!#55BK95(-
rmfiGXA1"URhqH)cr0Xh`LAjVpYG6qN"Bh%#-a(Zfk*8IS$fJmQMkI+i[$rSbYmi
mJE"'LHHd8pVp5K94P8[i3"8ZIb'-M`6bhEcVia`NC`'CGhXCX#q8$pa8dlLC6b"
i2K%[3F2*jG66S8"GE`*PRm+pq&NR2cp6J9RAiS6EQUX&ZQqpJj[5FKmXJ`0ikTe
X-eC)+qRHeUATm$rp5'JSjCGIYqFIHhp9EpU81ikY5,F'i,!+C#Pac3Y$8&NBT+G
2kjpe!P0eRJ%l'caHm0Z2%lK33Ee+hDVqDpVXMd)TfIZ-jpH*QM`cY%LQ+03P)+N
*CdelGU-khZ6j`lea-ApImkSmjVL1%4-P'#SpD`0bjR(5G*lZk)Cb[li%*kpqNfQ
eEGZYc39XZhh[9c-L3e2h-'RE6$(0M2#MD,LCT&&i!ITK4[Yp(#3`0F@ZA'*GL%B
MPj!!i[D,*m3MZ`pRQ%U(P#M[DRE`-qQ@m1'pU@Y`DJ)C'!$$TE#S$$V9KK*2K#"
4"H)IAA!h9'BcDh'%'Kp9AP0Vpb2KQ(9a$pIqCA@$$5B0laSqm9L+P@BbGj1Vike
ckGfDB-,kaIJI[KMbkXiJ!M"hDST9Z!hTK!D@$d2b6cGTLH2`mX'E-M86B-RAE[i
4Er'c9[DIU!V9lc234%BjX5@B'GKBE""3Qec!X3j%0D$2GKr`fif3!'P*bPZDGkN
42E'CeP%*`5XiSldZ9&'V)"MGR`91!P[C&)h5D'@%DGCIY9)`Je9MF1GarK-Y@,e
S9!KG)3,YY&Uh3d888IMj2-D,*crM[ZCbie$C5)@J*mci[c*[XMb!mB+YAV3(04-
1ehhEQ5X2AIL[!10*A`$D3LC8bQZHAQP#JjjbPSH2*hiH$i[`JmlmEQ1,G'S[mp%
!0b'Gr1lAA)Qjbi4krah("1MJZCDBD5e(XaN4`i*Q$",45E[!hFqP*E!J`8`!GY1
P$jf-0C,rX-ReKdVX-H$+#p[CiKRkFHTCjB"a[3@T&N5+Q*MFJibENJqB!$(Jlj&
9blINM[6j3a(Jl@KqA'6Qq!Vb*'Nr1"TQi!d"q[V@,2D"Vd#q+Qh!RNEV)%hJ9a%
+NPi401F@Nm20hUG9!L#@5Hi)96LCXiE3E-k[EMa[YV)4B0meijcbq%(,h3QRd*a
CCKSBTVF+i4p"Ch`+&a%MCbjEJTZML&!Z#2%-!'&D80TL4[R%d8A(D'dYFh"JHXZ
IcdN65-0b93%UC&L&20X3JKHA&PTNDT)18kU3!''L0,dPrQieU*,GdfBCbf@SqN#
"fh2TK$#4VAU@KL-l-5epFD[Lqa-6N!#YqU-T'AcD10Q-b-dpZh4IVF8SQ!X`McY
#cc2R+Z%aC55jcqAZaH)JqVf0S*!!HfMN#5RK,aN$C1"[Q#01@D&RfJ`N6"[3@%k
FFlK[4q*i8mcY5'l*dI-X$A+rPUf+4PY+eM!UYG"[SQdfKa6j1,*JEEqe*STk$1b
$L-hdfmRXXHK*NSi$NE3BckDV5r$0CFkPJ$ekPj49TVZ&U#L%ZD#)f[`8,D&KCYU
)H4php!&kkQI2(+UZ#)%FflhBR)K0'Jh,e2ra3(58G*im**H['SYk`HdY&D,&C!b
ChcEl"EP3Y0A,55@qRP0GFQ9EP9[mDa(",aD"l5&S$C3[Fefm`G$9lNT9Q9-(XAH
'[-9%4Lkl40%!PXjYZEPDS5fBc[($*,kY1ESj([0&DpGCfMCrq8Xi6q5B#UlAQi1
#+rmBIF4*0Tah$hUTR5(F4*!!4!8d)@6I,+cBR%BiU!!HL0mIHhIE+$HbL+X"lT(
iI1-*4ZMLD3EcQbXM5aG21F0mTiP`K3RpMhrpTHkD1+-BPIX6Q@ViiqqY83AeM++
6b%%bYc'%8[BM8q4Sjk+0h8af!+&5#B"('[qLk00"`)i8!cBbHi+9M#80F[hXDbi
JGFJ1FCc3RE$b-c@UY*b[[U9dXK$D'hfGXdAN`Vp"FUj1eqZ!"UR,U#`c"92BdDQ
Pq11f@85C0q)8VjZ5XZFGAhmaYd6m-r"NfVkP`c1+e[Kq%I(C'(Bk3MP,B$NFSec
e[AY""IRLDQJF,j6p-m,8RCb1e`+5TG3PZMD5)&S,QHa,ZBJdJNP(1Fff'M$#F!N
*%C&!2[`'9k58-S'[&YXm,RM#f`[)B(*RmhQJXdS3q$U0'KaCCm8b3!LR%hSIA(G
0(h$rheDL6[D`iYSjCdS5+lLq2l5QkYf[9G&KHKSKbc0I3YZHKSZ'4H6b"Z,h#!J
0L2TBM$"pdH!f(DR5+MhPVeaF)Nr)E9$0U-58KH!RcUD"H%+c(2l#![6MLbTf"R+
LVl%$UcAR4BAEaVf[%irRYCURZc!)[41ZMKH)IBe+Jd,b[Ah,N58r[i"F!iiCA8p
4"9(e0aqR@48&2Y`re$h&bj2N@Q19*jY&$&@kK6"[NJ9VH['GVJIrDc3hV$Z69[&
BmTlDVVY51GK"HN()Re2)pjb4$jFB"m`A@Z[*'IM!b5SfM[4%Ql`iDA*XF@@d-ph
A'&Z!I3cf%VZ,"MSDS5HeVm#'r2X%U5e2#4aa4j@i[c01L59dcQfJq#K@GE++4i9
9$Z@JE(l%dS%pbMUT*q!Nk1Yh2*BLTLQ1GI+AG*!!!Q*`qE8-1RN11'PM*NpHGIm
b`ccV#LSfeZ$MqbmhZ85G4eYb0#USeZr$h9V9jVm2&ibfR'CSC%X"VF2'"Ya9U)2
hFe6)a%%F-b(ck"!hd$iNjFIrFM1)!0-J$KLA9Yr`69AXMhll%Xe*%dme$Y@3!*&
@X5f*2IBUBUhAFKKjD(k-STK"TJSkL'*P4"E6CKV@p-SE#VBeIQdRBHP6iF@4i#e
Ue1p6%r%YJj!!cI[Q!@,$el,bK6NrG#cEE%4eA0(im)L93"H)jGlq+f(LZC[eb!a
2GGR,,e'hlBplK32-fCPY&&r4k2Ul9&kGembhjHGmk$41qTSI0`djbAb4FKDYp6H
'a%KeQ3UZF)#hXpFiPY@TG&NfKN'#[l,ljKkh%e8XR&b+5Im'6,,aBKlmeYF0mLD
5NiKP56"-Rq8C$jG$J[dh!Jbeq`BV,D[GC"*LHF5KBVNIm9mjDE,9L319la6Lc90
km[+%d&!R6K3KLp%4fS,k0jl06@pbC+pMFVQC3&aCe@$jd6p-c)[`Rq3eX#80CTa
QZ6NfZUeQIN#@2+'Kc@[N`K'DP33bJ-ILK"cK(8mqF6cEjI*8fi3M3Yf2`RJH2r9
["CI&mE@%G,$X`T([E5Qha$iM3F-qkmTEGDfRcVRq'C6jF!m1S1a'*r(rVdMXYq"
JT9ier3J`PNd44qd4pEPq0%841Qh@q&A$PPJAGXCCeN,@95AY'Q-SMF8T3F3k3Yl
$VIp$'QkP,RbKc9NPN!#HE3G(JDif2&UZICiHmD,RE`TDI680T'm)#,1hGYhIfpX
i1$+Sff8,Ma!f*r"@*S468q6Gb*&bcQ(frpG#ApRd35ETlJ+D6PP*#)B`&eSZK28
8eibiU!PMPHZ3!229$4HR(8)*KJ$+h*DYe5(69A%0A-T"P&1[+5Rm2#0(rXaQ4AT
,iD``bd@80jP"+35J#dMkq%`5L@X(X+",!p*+QMb[9c)k,61A+fD1Y#1ArF)phN6
P[*!!lDpqerddF4)"QCp'm9cKE"$8*#TA`HKHE9Fr35B!1dUZ!4J$qm!DT2Fl$mZ
@!Cr#V&1NJC!!dac9Rf1`im1SFF,h0p#&&3@CLQ"5(*ZZ"pM5rIl4DefB,DS*MQi
A9-a-5aicZBk&GjN,Kd[+KeK!kQ2l%b)d'C5KhIR4"96NH1[+dN-pSe)fQcB4Q%P
@Y$R"Z"2dba6afil,-XZIa+aMhURjfBAbJ(N3*4FJ*5Cr[2l,UC'YQ+pid'@JqN3
HH*K8CRA"G(K[I-XB)$6,R(M",'-E2lc)mFjV$!1T05Rep0rBSe&a(F&dbeLYF0a
ck0V2#-$$!RRLk'9f0Jm3-8cS908L-8N`rrCQf)*$*GmIlDHBZp!Fk[hP1B1KS4$
Q+B"k4+Pa9'mMEBe8HQMQ6p5cGl8kF[HYX39dCVE[Dil[KIe6PGK)&VI#SV"%(SE
VJjeYB#ldYQ"(99SK'1pINF6cZQkYZ85HjLL0GLfbCUB(DBf+NB,0jG9Y[YQrh-R
Bi)ieD+m6%Zc%X9@K4CCkmdPf80m2h@fN((&hV&p(0`TAX'a"i@NlKd6[f3'Q8I%
Qa3*YEk)C4`pU&PIlA3N9+hH&ePJfa+$+Ja%VZRKkVX9A-#EX5cESA`P`3X,j$hr
r),@X%ZibM(d%T+3BJlLP1$Ji-[G9B'B2Ae[)J"r&T'DbCSahA$QVBCTINSESfFD
J5q2S*aEm2'IMk+!+*RUdVd"U8bCMJ-&6%%K"cAKU6*&a-Erh9kh&)DFmBEe33DH
Jd%!rcdEDI2!-!*RF,Z1+Cf8l"R[HB9Pr,UIIXGlJVP1%i1@0PT`S2Pk$e2%[hma
8R&@X2,15f2l&"8FMU1$jBR!LZl444+LR!ia+R(#[,PpI,bMdeE111&eNUT2SdDR
8KES$mK"hplDSXfdQblm60"#[[EGAC'hmqR)TXS(k#SU1($A3G0k99B)A![[E2eK
)5hcjbf@2KX,%VJRd)'U3!2ZJ3NErT88XlGC9AA6Lel*"pa`GP%h0CZ8"Qf2"K4r
PdVNE+6LiDMaSebF4abe-'[AG(j4qB&QPPD-(QQqMjd#K[Dd[Q0jkPK"rrTC%2JJ
X[-Kq5mmH9aSXCUfSQ2,BlPp)&-5&d0ffrlmPQ4kcT3$K2$4U$V,9FE$kLC4j)G)
P58Z3!0qBc3eVeq(AT1AckVJ`CUii9+jAS@e`4*XHRh*T0@S#"["KYh32D%@2*eE
ba!p#$E@lB3)pG+mfXfcheZ-M2IcYphLMf!*e(%HEQ,-J[K'aY*2$Nh[khGIrMle
"U*X8!6-F5p'(J)@U5ETA(Rcq2GM0Z!,@`kkF1kG3c@8T6!@2LXZ*0SiQ29d1m8%
BNq%U``pIbCf1pS'Zr`1cDE4rae&"[S5$a'9Gb&0iXmKB00'i'l4[k*BIdJNP+$M
S6N[fS+NI[bm6)2RJ#A6KP(DN-P@c-`'ZD6h,pa`6rQVj)Ye(N!#kb+P8TQ%-2*1
*aAF`BY,ZH2$+"#K#1d*f`h154mHM"lG'80qj(i9PSrj+Xd'B[*9IhaDPZXERDe)
aL6B2iUGQE[l1)8[Y8c$K@+HVbYEKDcZL58kGUIB[-Gr5X4HGT4,DcMq6hGA5'J%
R[JB(NY0ND`UCm"X$(cDJl9r&!p**6BJer1V&kG0QfYiHiGEY0+8rmCSjCImX4-Z
)iQ8eA!IV1X2@E,SMGP0&ZND53(!ZNFcYamU9018H8KTQr-`qC38SbmSMbIX&8&"
bPc`Q,!b!rfV6K8`1YF8bZ+[Q)H!2LRBMi5i%@b,EZ5)cIRG4RXK`pc!4UMIcA1"
XXf3(hUPc+VdUS@"0aFBKUX9#e@hR1+pENP(`T[dIl1R4'FNK"$l"%ila$H[-C2S
qLEk6prJZp)d`*9KCpr-2FR#1(Xri*1"1kPrJN!#S'd1`2pZ@YMkSS1bU4&5e+SE
mGV9'(MdSif1L`L3djfBF3U``lCANU!FjV("9c0(rm@'fHTLM@U`+#l!YjP1UGJ5
BH*@YrR,J0Y,@6`(FG(eP$&%4313KGIdKRR(E@+iF8@5XKe#Sl-MdFaZek1mcDS'
D5G+Ap069NkrP-K+j`kQkCYmf@ElXhGa+@U)KiFrY#bZ9@3`@5k'h5AqR+NIF*@+
D1S1IYbf6Fhl'ImfbSAmQc3!2K$&Y&6&cJP"&FQ4ildI!l428NC1SLq0$b"c2dFc
EDVqp@VYi@Fer!A5ciNZd'L'l-C5VlAV"HHZXRVINacf2DpJl"$#JJ15[P`cf#dG
Zcd4(N!$A-6@('f$AZGS0PeReZ613!,$U38I%"4pcQciM(%AZ-5)Lj%N'-l6jpR%
-%+(5L4%YG-H3!28T9mr%e+LN1k3&'N6aM"TU4R0$GY,j'+)6f#!136daj8hb#FD
MN!#5FiRB%hPi6ab)bR4JS5p6@&4#U1Lrm38"Gh3[26IX2HCe8X3rZ0Y(AdDCSf%
Z1MVMpLBB+SeT-"-`Nd3a5SKmqLXm0DG02$i(hc!cGKUVHSmEBk+aXb3(b@*63UY
T[Z*Me*%-ffbqV+cU[Al`&3li@q&'ELfQTCPkSlX6CXFL1YqC49a$[hMC[j!!ThL
"jkmq!04VZ9"B)-X3'0J'NhVC,HCi`SYFrZ8k'pq*X@2Xbjph)JFap'q8YIS%EBU
8IY0aQ0aceL"C(2FUM"R3bhYdiL0Im&@`@AiF+U)Y+%bqQmQ*k0Z-#h"qGF@c%Gk
"DjR+@m'cp1[-R-RM(HD!BQic"cr'b,FIp6&q$`3e+"qQG+9camp3H(qr[Yi*i#I
lK(0(P%2AJal`9e1B5-L3!(-a9[cK$GkRaJRlN!"R5d!6&[UZr*LRRATlC#d5r49
Z!iKFJK)Ddem,SUIL9@5(+Ej@S+l`T*Dj0+IepU-*khYdRGV)UdCB(8F!L)hq#V6
4+#QpAG9,qPlUHQA16HG*&&Q`$%M&Cff#Sd(h802fSqr&'VbF[(*$VVDQZEVCR9c
Rq$b5EFhLKdc)ZS(cT(*SL'PC#K!QL$%eU$ar3l8DfY-rIYCG[DMc%5YIiDY[ba'
hJIN8qp-31D(P*@9l4P-dI(#`@2mL+T!!(%N33-Ji'"K!G**&eQl[UX&G1&2id#G
G9%P&mK"p8,VS9R1Id,+0i@-[a'kLi)(diVFIQ5i%F)4qdS@*K1PRPPS)lLUF@h%
AjpQJdEhX0+)TDj[JVQK2m,"PmQH*(*D4eCrZAMY+SRFm3R`$,rm+2rTii[U6rYY
lFN-f6SDUNqerR-'263Y-jbh'NHhP32GRqdURI(ZqQAIQ+&JfIA[Cq6pKRfpp0C6
*VQ6Q8'G@CplU6KQQqB*)aKei&qZB+AB(T3TfF5)mRrmMMpGTCAMNJ8haep+q`mB
!!jTeU3'%lH1Ge4D%[(2@5Y(ZK3GJl+&qc"34%QA8#cqQQ#Ba`qFV!TMDq05"BQY
AlarTFR!d*hT*Z`Y+(aIlVm*3qpk3!!P(*4qYJGd`Yd(J1rb5F!*Mj@1H#[#LNNd
pH`Ab)GC-"pLiZBrP+EGT-kjDJ%F83"!%MbYqfp$+eJm@'8fiENCj)f1(Yql%,83
eh1hp'!#!PIK30MBAL6S8E6%Y!Q3Qb&R"dKmPmBrZUpC43Q&jq3,(@`"55mehe$V
f!&!EZLQe6GJ6p`iPC(EF#*(ed$crd1iMV)U1#H2G'H8bck*`-I*5l#(B8D6(d[I
!Y%V"UKEH!,UNXdR@8(HF1032ra[LMEc6!'VU!pbIZN-ZQAi5#Zq0N89V"%-TibX
,HH"CM`S%0Q'fGr"cSU2QHT*I,MGq8#YTRYh29BpdppCRY9N,iGak6m,S"G-`D4J
,$5,+N!!9hJbj9+&l8!2iIV!p11-lmISbUDJ4FMMa%Ak6jdUi!3icK#a"UXcYhq#
8K,9A6VIN6)-rCUiXdSSc,lVaZ!(06@'1FH@Qhj&*q*9A"re-SaG3+HX,U*@$mb`
q5UqGVC,Fp(*NcG!mDeJ4FLr82AI["!&QaG#21jYZC&9!MK-%(6CD'RPmMc!*!PN
1mb,[B4h*cb1a`)UL(0IT(lZL(-**Fi'qQ#a55S&42mk'*(`4199!TkU","`IQA6
LA&Rd)LLl4&'&10@FQr*LS8)qIk+I6S6HIeakF9&2ADGF3YI"*'&i6Fm[a4XU3YB
e',LVV0q$4@b#V3l13FD5D*HapG@9`Rk9mkliecK,6N'SkU)DS40pm&,6QpiCp3M
Tm40BBd(cQDZjEMT5()%peQZ#*`S[M'aj'%FJY)F2$SX1VipLGIp9SUp(#0Zhp1T
iE4F41()SBEN55U)XM[&`TiaR1kNA&+QraH1K,EGMKa,`*F`ffAANBC[V#0r!1kQ
989SqVBYG0BfK-R2YYHHjk#AG0jpFLGi+j+Qp4H1*iXf'h2XVP[P)($Qp@@H(GRV
&XJ+FLjrX4qIjjSQ)1K+H@X5QIdrR4%U)MUL"9a%Q(UD3!%lSA@%(rZY6!VlhE$R
Q8+MN)hY)8RUS'`P#,kdQA"#d%Fq0hIU"SV%PD@9TF$#R@c33N!#[XS!#-Yb6icN
ZKHV1fLM'%`aQhNei[kmHCTqKm)cD,65aJ(jG&I1SiX@98H,T@VZ$d`5D*LR"#)!
BBM')3*0')0[mlfTj-hrd,A!X8ZT2&9ZjVhM1dkhY*RdRE2i2C)m$Ymd8aE*4Ifj
Rr[rQ!pXKmbFV8R4@Vi50P*RQq8%V,-M"#q[AdHQk"$MCQEYX6"$TIb!EfM+hTBI
TC%bPhl@MfSS&N[`C+3'43SUd`Eb(eFAk('NBefR)G*M`mJ*cUlcrI'9VBYC")0,
X1Q,+!93a5N+#062P,Rh+'p&cmbG&`f&fT&mLJ0Ih''`qkXCP-'mN$pj[[N&cc9d
NEfM66Z2rk5NDG)MPE5-R6*[1'THR[`Y[ARSq)#5XHH#1qEYFH9p#-Yb'1[GjrK(
FPQ3JUGrakR6@#X(@&9MIV[+G$T!!d@V%,r[*TNcTrf#XpXSa1FVp&Sl-N9bF4i)
YQ*!!,3&9jURkjq+8&$4flGHc)T(TN!"Bk3*&8-TYY[(l1&91d1A+V6,-QK9i+em
C#`mZXp5E!0mpPJ+ek3R1r,!9Hd4q2iD,)ZPP0a%F[0G4PKYPMXb()bj#fAKN@q2
*K,Ka$JZ%-NFBd&VTS(LFa9&T@REeiXcY+(aANZHX)h-GZ$dXkldKMk@Z2@d!&%9
l!ZeRY+(r-@r@aHdfY5j6fSH`Qe1JI+6cRBDh`M,E1j8,hMqRaQDTc@l",(CAQda
0QLT2aJmP$"N"-L2+#AHF'$B0Q$4VEkfUCIGCDb-U$eRGShKHcQIFjVBQ91CCV$"
Zq'm(2!Kj`T'DRiej0(VR)XCXLH'aAFaChhEdDcl-V`IkTEG#e"[G`,L,$DIHcr#
QHTm,Jj!!BMqUb'CVl6NIJf4f&J`eXZN#bJc0,fcM,%KDAGKQ!`4T!b3CN!#L('C
eYpA``kZ9(j-)6kbdPc!KSZA3H9TfGV('J@(4Mp,*qm(Br$cf6J5T,I'E`pEDXr+
#f)X+%6(AA"a5'TKVIMNGL-%jTR*`pK,Y"Fq[dT`6+$JI0[*SHX&m8P&8i"NdeeK
A%Bl,pPM@#%Yi#hQ8mB9`@f3b&#6-@U[a(p(d--G)'*+[k+I8)RTqQr3B)ja(kCl
Xr)P!a$0#`rF%8*2V#Rk,#&U`0e[UFVPkk&YYcmQDCE9Icj@jB%6Z`$[`@a-['m-
KXKE(,@8a1)8$2e%p42'e5$hqjM8bf#2Paf*lL)BSbaZ,X,*fJ4GkN`Sk+VhY92l
X(E`&GI0+SCUhE1DkLJkkUkRcG)dpL6*ZrkekDI!G,&"(V,!V1ZSJ3Y'Pp2&QfTQ
V1Dhqc9qKV+VDQ#M"rK2!QVC4,CF@X&TP$#Ml[VTGJT'm`28VARQ0N!#bF,dd%c"
[d[T9+N`q20G)XU+q`R#mThhhq[@fr()NR$-988UPG6Sr&,&JR1'I4RYN1"5!ck%
DbdQ,4(6+hTNb3V)eN!!5P)PC)VRahTGir4p6ZK*$Aj@ZcXHIp,44E4SX!ldqGDV
TqaTeU+Z41%Y'UF[6AG&B`TT-LXAXFKU'4Rr$lDA@d[Gh!f03%eLM&"pTN9JLXh9
C-8phCH0)E[E'[3&LbIAB%[5&,Vr0P3V&j)e4JX,%4VLbfA&Ei`+%8rFbL4ihf"U
hfR9@a8a0Rie+QiV@"aifE5'p#M$6*kZ2"@Y0'@F55JJceQRf!G[#qmH$0E%(-#I
)3&NL$`F%r5a`NmaC4q%0"h3Ai&RLc"j,,CbIE&lSm$e)r2K&qIA6q$e'`XYDHUF
JPmHq1dEhrZRMCb@jHZeiDM0"dV&TAQ0XYbUPk(2fVA-JIXq+ZmCjK6bH3m%S21+
*1VY@AaUq#,46N@1*5T!!BT58XDYIp2Xk89SB0#GJ'r2N0KcaPML[6iUe6q,b4lP
TXSQNMeH@L58[-l&BR"mEE0rT+Y,'5iKhD(-F9qV)#`mfbBqic'FbVIVUlGiEEjG
HSTi&MkX+MpUaiB5hKjk0Z*Q*0$fbLk5![4mE"*JXS[1*&RMpJ`!S9b"pI,1Y(25
lF$TJ4f!A'NrGIJ(Aq"3PIV8(GNpqQ1R1+DK#C(-h(9d3pL%Fr8qF)I+#i*I6V4[
Y&%HhkU5(RVLN4U)GkH`KGUIiFf*RPJ1'"cIH4(K3&'TcZ*@qXEI52BDCh4T6HfF
[9Z4cZiBPFrGH$FKGV`&RfB@raTeT1$pCLU0dbE6jJI@A,+e9b0+I82dTpT!!j@"
e0TjH#0IJZ%GQrh-Jk@6,imRk$bceYB(`Qc3mAbHkN!"0+[j(+QY1Z&UPCMcMAch
%DCXD!ULYAa+B`-"`ERL&Ic@L[qlDKPV@GUL-V91e`+rCCmL,Y4cec@4a!El*&MF
31j!!'ZB#(CLNqbeDdN+Ve3-e4YfK"@N(@+KN!K[Tfbc#*kCU*l"c9VkQA@5FG`8
ZJ6Bl8plAMfTdFGFH6#0CEp)DNM)a#LXf"&PDAkGAk'#Kb)I+Z%AqFR@Lq+FAPY!
*$H[DkZjV3R1SCZh,N!!P495EmX[6C9iZU'V48`XkmSchBbp-[,Z(1PSJk#*+VSZ
,I1B@bTrFVCZqDCLihGqfkkFE"5f((,lJ06SF1S'K`51aBDjd@GmE&EI0(XrP@%V
URpkVELNiH6ZI&M'Rb"q4HMC0,3XpLecAc3p6l'#4$d@N6TJi+V5b-9#XIQ"INe1
E0N&UchG3-jhQkrkfhBC3D+ahH%+I,R-Uq*6ep+da4%p3E*9e)Lih1!@mE1QJ*dM
RrXL&@R%'Th4`022TYQQQ-$`lGq#UZ3#!49RJGFr2YMi!(XUEZVG3eBNHhY%'i"0
Gpka'`5@+b!pFl9%3-D,Y&bT[3$KaYa(&'iJd$f,N-*FdLA,20+&ZNcV[Gfm3SMc
Jf'G'Dc+Qj)1q5f6Lid*I"(QR(X`J,C&cAha3(4*B*+M2U9Jdh3CcEeK@r*!!N!#
PMlXN&R-+)51ZEXAVT0A+-[G)X3'YEF,pkk0@4XRIlZG1@c51$r@8kVSRhM(ZhJ3
-3j)H3+d2SU"fk9T`61PV#$rSj6p2RA)6[,*&q$LV3[UAS&h#+b'!M,CH[9clqCd
ZHkK!F,6E2`8d[Vh(*NiZ0@2HSlfqrTA+i[q2Ci[0ID@,kd-(efcQ-8-VlFfRF%T
("eR3&CNSPjI"B4aE(`K8iDdH5jlI"F%TYmT4kjC$RDTPHblD`QX"B8EXjQi%'#c
eCVMU`2b@&62k8"-)bf4&@arKeH-CPqGImI@dckIKFF",P"%2rZMHM,LV8)BH!$"
KRX86QXUpC+"A#A@qXqLDbpZ'Y[21j[CP6H--Uf11cR,"e#)lS4MIZESQ#bQN53*
&`q$')5HqdS$9K9$CA9qL%dFK[dC-(K3I3XP-pMC!-V$rpF3bRG9Z[P)k+*XB0af
L+TFV&Q"$,Uf"9EJmMASrqJep'EkLIlRLQ@J$a+fTUqM#[3HbSmX3CX@E@NkN3Sm
M*kGlLSIc2N`#m#SV+4d552#,ME"La#lqmFMTaqZ"11XY[E6eHS&$#)RU,VGZj9'
JYPfHS9%lE%pED-1DJ$STVC&,TF#)5%H6dSk3!+m2#5DKP&Q@fUrKHS"Dle0+p!d
JXI[0$&"b6T&Th4'2Mh@Q%8PUjlVpe["[p)$6[Ur+qrG'P9Z0q4ejrL51H5"4I5c
'q('l6I99SF%S&8XfkjRS)d@V4'Cr`Pb`pE5a(JQP*V'M1*hYcl6RP`e1IA-Pqm&
hVAjfP'LUmX))1BG[(I*GE1[C5rXR#hL$$9!3EaVj[jV#B8J`FR'@@)b3!#$C01G
rqH%"mBdk"CM3BQ#0$mDPX4L#'DaIIQHdUaHRl`#C&ViAJCKUCX$5"ma'cmJf2[d
c(aIh(&6L6'8pK!bUEVrb4Dc2XmeibN5@#XM##a,6eGC3)[SZJLAQ(m')h@MfQN*
br3,b"`(F'emm&)Y#4ECd8f%M`(f5bS1qjJ9X+G`%5MV0"-"K6Th8@J)+V2ip9F3
Z0D)AURD$@`TN29KA@dDJQRINi@$X,)D*ir0SF1DIXLbF8lDpjSSA$Y$%3,UMpH`
dijTEI,T2(CbqPdI!1'05$0h0m!`VZ5@!bMejY((4j#RCkiaAm6[D2PH&T)P6eRY
NNk3[YULNR8UH'cidF%IjJ'81eL@Nke#UrJdYUG("RlfR'e$8Kd!AJ+CU9p@"DYG
QCmX0p,"AKI-iQS,NHH9Cpf*bTEl)a3YhX[Vh85--IS,qEDhFfGI*EF@D$08rdpE
$Ld@dBAiTqZ-0$YGaXb4hMe$mq5fkF1-SjHNhZRJ"96`$qRP#()L0kMc*S!%GRLT
B4b+QIEp`LpNhJjZ0hbDF@PG(eiZh0%SV1-dC&CUJhUFhKTqJ,aZA'd8Dl+[RJ[8
8EA6'jGrKl0V2&q%e$,25XYfP@+Y",haBYANlP)4ZKV-CSFa6"(THUm4pa!IENC-
SR$ckalhJ'J4$2T-kGA3l%V"qH2hQZkYadD8TJDm@Tq%104Q@+4!(f#-5M')%CrP
(hTMr6)6["d3dPVidZp`NjpVDrpf'SP60`'@1caGM%AD6+YJ&K"##lQT&M-40[KD
*qK[SlS6MjVBIY[)BU9df0A,VI6f#'JdR`F9&5J@U*#Q08aIPZ%$06kPHQB9',5H
DlYVSR`A(hVDVS%*+mYL(Q$@pdbNIq4*Fi#CBN!!#Kj2jBS!Re``KE*PP$2FYKmF
(F4QGFPcc"FPF6`mk3"*h6mFVmZdCiK#XHek,dHR)qr`CYRRXX3R9N`pNmlq0#Mi
d!Xl9cE4fKJ(hf8P&MS9BNR"VdFbCF#PSI2b2QA1dpE-9$E4elQ&8+Yed[$phGkj
fkm-KPcYENJJ*Z+@q43j9+I9TYC+am!9R``A-J*8QfNDd(8NpU,Y%$I&eNi&lecl
TV'P1ajZE%(5j6K*"Zk0mQBT9Y5LSdG5'8!f264N4VaNpi#8Yr"Q*cVd-c)2)E56
"T2)%6&TQI*X,,%8k@bej[GRZ*4r3dCcP%LlYCcCG@qZkpe(a8Qk*3d'ePG8$r#%
K&aR#j`,,JBM#KPfp6NP$`Bc(4S'!k+qp)A!(XQ0+qp`8H-1)RYqIMAfIhN+Z!f5
*h,YM3MbHMh&8f``)KBV!m,p+I+'HLi$E(IQkN`4&kA)&jC%Imj5)hkf*"lHV,IE
hUh(GUd,40XG9XLmcDc2CZBLI,jFBq(3BIj26@q5lm3L[dHMr`I3N+"4qf3%r&88
-SiCTFLA`V,+)RdN*VHj"bl'@"S`[)fripml0!C@M4YUb[k1JGYT&KEIqE1hXBlk
cmfG9ZFHm4G5HqlRMP'3D5+pb3J%K@p'mf0QDVPY&1$UhdDKAccEpHhmVBX!DYj)
K$%KF!mhS)!aP2cSV--qmfqKmMIJCe8+@BITbj&#!Z3S44qEfM0lH3mq)MBCDY2d
c6pk"m&fbB),cJTDF6Y1Y*#YlL!AERP"meEVbrGTb&cR9C5GVC"hm`dajMLEaZ,"
L4!f"`VimfqmGTrTAkcMTN!"P42S,X2pfRR-PbRjhA&CE5aa,mXTfpBmQ0&+QTQC
CGqQh0Z+VP@MB)m0(Q,5G[jf`arF+e&q-5&(hJK[i0"JV1MYAr(ZL#8jdBbGj$f-
4k$+FIik2mbF'!+CYp[C*6D0j&j+#,)Q!Fr+"Li&PGJ8q2m)G`aNN05HL'H4IN6F
YjrGZ#h4`@!YdpX)H[TUqQ1BR2I2fS*`L4e&AHrhFmc`CSDkHTT`9l1AT)Ce4q%#
(-F5QdKSj4VBBQ6ZjkSeKa[$)"8rDJh0jS-L['U+i!dV`*FM!0MD0FKp'9`Ybm!(
D$QUrk0XppSNlZV9Sl3J[bc-N!Dib1+YeL-6SQ#LSDN)8PNQ[m5leAZrc!PN(53`
'kNBiN!#T,F4[HS,kfS)#SSH12affHRd+)I9TNmX-FQmp)FN9!M@)VXL[LlDe4bM
R3T+KFIS64c-`UeVj@I'5*ShJ,MiMeQ,3&U6hic,8d2VmD!RTV(f%03AUqK%-SRc
AE((f-'2KB5CcD$V(CBrq#YPEe2[+kjQNdViMBQFXlqN'3,mUC%(eb6@'MF0GMEC
@Gl6(BcUVPa5m"(e[&4rcH)qh`k*M+FGSc$AFeQh+i+4dqLe$+dAaDB[c4AThi8N
ckkmI9N`T"Lh)fjK9[S*DR4KA2p@iQ!p,0`a&E#&2#22!'PINYS+q@HmmES*%R[0
#N!#Y(H@cA&'DNH#")G)T"SC,Vj8Y"-j@%l"dBTSq2dNX(8TP)2&@Pq@[+p35i8X
+Z$I(iK'%meAM3S@(Y#L6krf+,'cji0DChP$aM6lrD$d5llYS`#4p855'epEBj#Y
8!L5q6m*"DQePFVeFT)-,biTCC!@43JiG1P4I3#-F&GYC`Ml'U'*pS#Kqjp6+iRh
UIclH,dh8N8B'G3-kJNT`iXY,,NFH(J1KaVd81p0C90Xf55U@)iq5`)bkB+hIEB2
Q'T@C0D,4CIIad0h)e`C)ChKdkS2S`ji(Ma),E3Z6!eFC0aR@Tc"3`-el*b&KbLT
Kq`j$53XJ5I*"hkmBe#&3eJ'$cS*@H$f#G"3&QlRTU-ANb+[&l9PVPBUpLQl!S2h
62,XiU'%&Qi)2'SLP4Z[(CSHe8Df(b+m64'#MrNMhPF30U[&YK%SHhq(9GUkJd#b
P"jd0DRZ$06[FeK,YC6%4Pi,V@,"EU$3!GkTp'UIdC&`KL@QDjFI'C+*R&)ii,Fd
[R-CHPl&cRlKT(j8-F0*!D6Y6",)&QYA548NP6NcLPhaL,kIb5mXk9EfE*@Mj9kJ
NV*C"rNmV*kd&2P&3Lmmf"JqDPcZk)RX!*c`j0cbV+bL)M+Be"D&B5"0(q3!D`YP
13&fbY0l8NIa`29ML&6XRjh"8,d#1RFH1$+MkCFFf3&AiqKcR9&qQZT%Jk8KpZD0
@FaR+k'[NFrG$MZYp0AXpEdXQM*V-3aMe[Fj3IP-F$E(6p[4m,Q9E-98aHX6*"$(
i)eG9HJCU`-YY&eRTJk"E2RU)aEZVDja0GKaH(NLk4E@Xb9d6F9lLJF[r6RS5d%A
NXaB#k)BG6!Zq!1IQGJrIb3RT93c,TV86R#qX0q8I%B`!kHqP5AYrQmC(HlV[)0(
%H2TL[5hhDUIpSCX4DRA(d90pCA*(U&PFiL)-CSeETI#kVAGFjL9b24'+(pb2&QP
Rm9(m9KqhX%FK,L6RUrEVCT'VF-4*JZp1XfU+)DfdS"@Gm$)Drq)XF@Adkq!)`ef
r@Fl-UZ'@03*T%ibP8YcT0'!FQNBM[HDa+j*!AC'@R)BP)DXNJc9TV4T@5'%lA4M
SKH31rlfM@4ePJTJY&c9&`lbD'Bh&39,E3B#"Km8V[[6ChTfaKrVMA"a1+0)ZU3i
L5AmCLLbBUIi(I(LLhEa[2X`e0q'56@VNQ2"AGCVQN3$HDrNZQ(VMLb8PelL,%[Y
5$C-`-T'l9fV3[BFUC2emUi3'+pj$8`PT%aE$i,bKGI)GlVZMhD88F+f@VE4&M0K
U[Q0NFU@@)U&5SYLdFY@)f9AIp+E*l5bf#!Ec*6p@Vp4`&H`0JI4ZN!"GKXGF3)I
$DP')!#NICJ!!Ba[8dmiSPebFpQCi!aEUdid9bZ9F!`M$ZhR)(T9lS(H)U@cJU1T
MH&Zjqh(1EpS@256F&5q"109NNQmTZMfcP$L!M+q5TQqh6@4MFNJ%+l!AGQUQj$E
q4#[AQ%A*JK)@P0T$J2L8mGqRDf[QUB01maH(4Up#eN%B*PG,[$DbLPc-l`3MCNH
L9EM$VMVPE&ZUfI'd*8%Er`'ei&hi&[%GB1TX`iUM[&``59%DS4FmHVm%Pil9m(9
BL$44TEHDG3*,&"kK+JG2L`*k,ZB8Ydh%@@b08GYAVJQc8iUR3h&)iTkchHV$R)P
YEDS1FL3DG(KF4&q8rSq8NDET89B,ji&lKVHJ&a)GTP)*dlKBD)rbB4P9-@6YbQ-
-%N'c"Ek5V*b&P"#H,Cb1jc)rBG`&A,kAF-q[[r6bb6+[AFaD%%Q%Eh#de@QHPfY
fEQQ!d8[P86Ak3X9#6m&L6C%'QI%e6+(e`k`&5RN4eQUNGJ#a0Z3aHM3dV30lk8m
*0-99lEYHbMD2`$p[#e&mTqKcD!HjbEKJFd$Q*YXBMc&%@+A,`Rl0Y4QDfER*YrE
mYR*#*9c(!Yh-IB$GUeRYBciM6'H0k`iUTYGdh!fbT5VdpjGTLJ$+QjD#K(1Kj%A
M"d'4RG$-!PT8LXY#q1lZ)&9%!4,pe,$XTUA1+"'V!QbRph'-4#1m*MGEAN5P45"
l[a+FZi!N"65DkD%09pj!c8SQ%j,,c%K59beX[%#%ZLi%!4UPZ#d&[p0("Gf60k$
VH[Z6m&-3QpLa,kZ-Z&GqlMAb0J$lG-PH45pRDD3rZ)k%LIJh&V3NN!#kB[0f@l@
[MPHp*Gbk8rKlCY"F)Y3')Uk`N`2(F4-k6N$0fcAGEM5Tm[eJbPJh&YVY,&FVr!M
L`iHNTFjk8mUG('D)`$&YpSU5c&!%rX)P%+X&SdY)9&iR!9K3k!L*jpMIbRD8Tbc
b-H6ANTDMPe8ZP$f`b6CR)U3,2Kq!P*j$)-9Q&m1RAPR4p8e3[rpdU6krhY(ff%b
@8b8P[HK%kGq,#Y`IJ8q8!ZF0Ub4Vq+eAm$&I1p3GiL3`eI-AcGNYJC2T)hSI14M
e(C!!dpdHNLYr6rDaQMp*25I5SM-@dVEb6APMbR)lpB%,bT*$PKLp6Smp61'2a(h
[)&S(*RIGr)Pc+qkAJ+KIeFE+S$Skj9+Zc+30aZ9E&D[FXC,QjUcVU%j9hC&DCU(
6MPSkGMJ*0,$qH)pM+(DFL[%X6&d!NKY!kAH"Hh[aDDR40md[1)rbrQ$8)m%Vj&V
`+r,ajf48iUPj+3P1pVZfN6&Y19VHrj-YU(KGCMDAklA)TDBhh98Dr+H*%PB-rLL
1PDdb9G,fEDbi9!M0IGU6f#02%`fqIf"C&5@!J!bBBeN0"EM1i@I4&18E5Ee4ZmP
S9*UX&DNh#RIJMLjSI*KbdUTp66#QSE`)XF9B#c1Y1E'ZN!!VD)a#d2X3-6RMV`H
+p"M"p$0Qi-NH(#qRTBJ2c!IAH)EkhpZZ40@4m&M$jGK2bfUAScC"9)jCNh@iCPP
&GKZ`qN#lJ&)R[e&-T2+*li@`h!DB#+Y930S2jV8rmFJNq0C-p8#2lJ![k@5pJJ9
daA@1K2ZkKUZD@a,hF3qh*CQG0`NpdAAVk"kI$!3Jr9EGaN09CP@&1UVY@EVcDaU
AYRN"-)&9&k2$-[%rp(A$5K6Q1dE#X@dB&LLZ*`X"4Jh[e6JY-'(KU!%mHpZ9p!Y
C5&Gd#304Vph0[TX(X5kXaYZE4YXQBePUBk4dVc)+K68l+`4C&X!%2#Vb#imLDhG
[lBeaaK(qaLb%G`Y`IQS(+TpAI)qQlDDHdPX4aTp440LP"6p'N!#*HHU,k$4*YBk
BUm,EC)GpYe#r)3$A-1aEm22'"9i+`+)VcBPH#`[ZJl*Z+(p`U#bmdajHf*)BJ22
@Q$)0p$1GLSP8BI0AkG!3b9!49YU0TDS+)Z0BdCA0,pXK1X+TicUTHN$N3'lMr$M
ISF)FTT+"!3XXc4`XEmPQ3V1BZm*ZSUfVH,&[0@62%'-qPDhJ2TCK5b06fm*S8kX
bQ[XNHKjqphQRU,fFLKG`Jpj#&H8)-6faZ-M'VI(,SYX!SI(LFd@b!V@-DV+PI'[
A&)D&5MZLe"#[&mP6B9lYqqGE3J0F"G(d&XBmlb6D-JZ8$[e+abD1Z+9q(AJR2(d
mSSG`QdABh'!5NbA5Ub0!MFT2fkC5H(Y1*)Hf%&-,)B4fDSe9a)c#%S5lmM5LcKZ
+bcGVFR"V@0ZjAMN3@%2%Hal&49EYecfl&lpDJb'XH`2#j0dXIQR+RVZ8aFfb6hS
PXqlH'ELJD+*UDS85m+B#dE#QJ6NBY0HUjF#e"J##@Fj%l2raCXM,EL`H$4kP!$-
jZ!Had,Q@a+berM+rLP5+0BBc6F(EqlA2+M`,$DmGYD6-"#mLqjmH6h5E(1qLTbP
V1M6'hr!Q@5(KXdhRQibMYMY+m,r[q(1LBU'4GPHkUqCIfDa21Q&V!F@8Qbl-c3i
eJ!2PSNL3!'dPK4XUT[SV@09N)&cbESL!0-IS[A)49L9bCBQ)*$H10M!BYjX1a,0
k$'Y4ef%Z@$j%q@$ZcVJbH6KbDEafakUa3ha'YrPp,DmmB'@`JbAaK%fSV+4f,h6
mh%M@kH(3849rjr++%U4*3'A1rEeIDXb),Bcc!+['1!GBk%,b9iphDAqAfr1IIf`
S(eql&cCq%6`fUEhNmSf$X%8S5iNqcqMll3PBGaS#(kGjS4V)hF)Ea3&#dT!!mF)
'SYp@h0GE'1mTbkA@YCIFj(pe%Qk0$hC2(+FBcj*1fZR@2+qj#TD'TGQ5Gbj[,M6
b*-`XqlYGcbfdeBh82EVYr`N1+,28XbU8V,hDFG8Aj1i-b%$,irm5Yq9!Bk1#fHk
Rq8p`C4*)KUS4,Aq4RLN4%A!V(GJfBQY09dk5!#"ET+li%GSq[&l0lMAM6kMQ24j
,"j2mLY(94X*A'qT(T,6p#Y+Bcf+,(([I$%6fF!)TT!Zhr-ZY,#bkXHQcAIrf#-E
HYZLR0CBbl$E[VULGH"Gh$[h2p1A))I*KH6jlp@)ImTL"P(AjMjZ&,F"A)!++-NX
VmEk),TZ%K%a28!e4KAA-9UUl3mi4j8KHJj[Si&,ULpia6XbL+*%EM9Pq+5(QAT5
m5S4NX5DdVPZ9`mPmP0$K$JUD5ehR#AA[c('N5lRh%0,`QY3$q4IQT10R@erhSjC
fQ!8HcPN`2,qlQPkj+SLU3XRee8J9$HdB@MK3`QjJ"C(Q%99ErNq8@+Mi[mrlKL8
G%D'EmTEQKMTMk*5YC0bF'aI51E-kk(EK8Z*K4&9!`$i%'I3Q6Td81)&UYPaH$d$
K255B4fLcTj3f$F[Z+1qDiiS#e'1+N5L9EJq!pY94#RII9XDiZS)Vqf*dj&,a2%Q
HSKKLUl+Ie$%QZT%C(jN*#RUkYGe"&mLEj2i$9,2*@P'$5@hdLj0Nf2a@#EdH2c"
P3QP(KT[lApV-A)QXX-U-p%rlLmlKY+9GUV9S-e+mX-cp5-Ifc&--IU#UHGH0Zke
6Jb+rRjp#C9Fa0H08G&4d5$2A%&9mQF-k&5*mAX[#0Y@Im-I%raii'4)fLjP!p3R
)jPfEjcV%h*Q[1ZdM2HaI$%KH8KEJSmkjk&@GRr,@![pk)Y2QKR93&JiU$'Y!3Zd
1qE*[qqM1PemI$U1m6-C5(%V9ZlH*(cES56m6B4X6KYQK!#iSd*!!#@eKmAp6LF9
!iKX&-I#YiICp5&rSLM$+@"SI1L,D0(pUkBV"ilLL[(jfD9$lIHe41'bN-TjJURl
M40#%hm*S5X!J5lTKEh5jJp$KJ%(jk5lIEVV($+YFbBCNJ`3PLTT0c&ap("Pm0)N
i&-(rIfq61"j(Jk*2KQh*V)RdS'Rd$&l+CZh"-D9@'iYJX5QET1pV#kDjQ(D#UJq
9T2+a`R$AD`dp@2'"Mi$J-8Z"``B`hVk+He-4JLjNKYUi&GLV`ATV3-UV"p(+P*M
@4&VZM$Vk(-a1kJQB9[X%aNBlI!4EX(-$@B6,Gb*2[%0FVDd2lHhT)Fc4S9LCPIi
hZeGc@*9EP2FXH&hH1mCrEiP91P"8ph4RHm3FT$TJ(KEXAHE0e+U6FmBY5k3-P8J
,``ZU-idKRm'cG`fBG8U`$a!Hm'JeP8#6`8RTRi1'h0lBDS2+1E*T*FG28"e5E`-
+qj-JXjDBhbRHKkBY$p9qSfHT2FBZSa5fjG5+05lfB`+24q32bjb`ELr+XmJS"j`
hRU,ME-1T6SGj(S0a3@3*ZB8H,2ED8hcGNJ5#f)@%9c)0dDib-FSV+Ir6$T*cHhM
qC+ei2r%dDd944JYpK`A4bAjFQjHipiqI1i`(LDZ$RKh*5j013rlCPK[P!&PkNA+
kC`ArLM$j!ipp99UY$#,QJc'-SXZI$1,J"MAKqPDQc3XC`[QH$'G+VXNCQMIU,[4
)q%6%92heIQmr1a'A9m*'Ka"SeeQqkjN$*lHfHLjbRd("Ppm'[AAj$e-j($PcFL@
4[H%&dGk`)241DYl%c"85(,$[Z5cA*kXqj-5rRPGeNPK$XhPi58MfCC@J*`T($qY
II(TpFX2AFJaXB`c-k-*4Te%5SRZ1@,,dPR9,)%$J9-"Gi(+h6Pi2KKUkX0iph(Z
Gq!$bY9PmLl2DP1[Nj3"NMaB9AB!1+DPNbBS$idMJr"klj9Z-`*4+@iqm'&(lB)0
N,e0SUZ6LYEiD"!Xmd*qaCj+#3PlU%,'GkSF"I$4k@CrSTJ5!DM2[-1BHU@hcLX#
4)XSq05S@V*3L80P63qSCY5lq#kAd"pcRU8VFBl(26!'KFK$UDK!iGS5F*85rR'K
R&4!lKA`ebB+D4ea`TLAr3U#HQCam1FRbEcK4Fj&9q'6+I`M$$m-,e"Z!#dYkMh+
8f6%*Rd,MM8j8QAV[C(Y,YEeF*&$S4h$I$+mVjd08S(jHrmHG[T-(Zq(-`q3P)U(
)L@9%d[SE6++!kUB$KmR8%SY$CQBFj90@MN@DhYA,RBA8P#Gb*H)QqiSiC[DC,P[
(jqZb1*'5a)3C`pdk2GG)J`NEHK"R8H5V)Qmb'-%X58ZpMal2"dYA3q4dT6q-*IM
mK[cr8C5aCqEIIb+JicDZGjSD@BY)a&"X(RhC%I$1-YCUc`5pVblAPrq8*8pbaK5
8a"mGFYTh8K@-i*Tm8,e,*rm1AmaVM8b5$Za%9`8Q"LN0SQZ6'Bek6A!`cahmXjI
hB#iQYrD@`00QrUk"p@#MT#HN`klJX')@&dP#+KKS3AVfFBhY,XR+kYDKVH5!pG'
fI8*f*AM5hjSRek`RRFXel"!SPBereA$MABMj0,1rda(62c(AEN`Dl-MeX'Q9jAB
@b'Qb#K15@IB)!6[53jHTb21DZEb*ejqi'dM+p4CqcKjXHTTi'i+IEK0MIGk9aPX
He5@dCBab4KE21#eL'(p(R('j)CjeT$A@VNGAa1q9IQ*RqNicjBL9bJTP3JcjdHf
Q3k3JBS"jCm3Qd25j`D9N"fFd6i,dkaA),F)D)2fU*"r)IVYe#f`5FMMCX1&*%4T
kQBq8hBUBdif$E4j*aRS[SkB+BQ8B,*pVRi$jd2NI%j-$mlZIU+IjDZ[3PhXAmmU
$4HQ3!0lZQbi2#i&3bcX3AqAR5[GYcZ*4c0jRPh`MpJ63B2MHJLeYe0#-6$0&MqK
M&`p-FpSC%dSFA@Cb58jV[S$fdQrVT'68()*hXic"fB%2K)Q$FYi!QF3*ef("$%E
2GMZ0$)*4Sdh$lSS6YL*h`q@49`IhUqU&q(hPl-I*3AE45Y13!,D3!!YN1YcbH%%
q4+Gf4*!!k[`0!pUhb%!-VBMG8Sc)6eJYBT!!eUVlQ[lRZ"rCc,D"pAfN[Cj`*LM
RDLp#6`kP""[i'Tb1I0%bphhANH95Z)9hhCRTbX0'l(hZZQQq3QhH(I%l!"lKb('
KPS#l5AhjlpRIL$RQVm*0T2K)QS&U`6i-VcH'V,("@&f'%8m"X14G)jGJ6e$pLiL
d@+HrEa8+*mC55U-d,aQ6S[Bqk`h*jEAhG#dYC)8(I[XaB6ciD,+D+A&(HT!!f+!
`mVLIleS#qT6%4JfA9U5aX+Pa-Q9eF8&3X`+FXL*&VhVYCH3H044ShPZMHUU(+a#
M18VM3NbeA*'Nf!$*lpYITUmS6i@TEEI+(f5qN6J-K3$fFmjVE(29ZIZA$`EX29r
VhVElEfqcLiJ9$*[h@9e+6pT0jMP0pJCf*aL+bGDbAeEl+FK0@XTYSV+A'"CIq+%
dPRhHG#)qQlq@1D*)j3@L#+)dTUZC9brX2C'A%DY#Ca1#F#VrUSeIDl6dUT3Hc6#
48Y[dS3ck'X-rLM4FhU)8eJ2ed,N+ABlTQB6"BP'1hQ[I[JQr$AP$Raj6BcTTlhK
6'p@-,$@i*hcVII9(0V'4Kfkj8VVelGX$V9TjHcbFU$8C"i[SGI,kPMJXHFBAGlH
b5%'L5jRbD&rl#UT)129mUfU%GJUL)Am0`F+`b*XP#HV0ZHKBl)e2V68&h[*#l2#
S4qT(5[SCcmbNK`eQK38QJ#fVZf`2+ZT,q`iI@L8*[cBd[MSL4Sa"m&'6Hq2(ik4
ZYplPQiC$4[Aee`d8m6K21%28LTj"PjlB2h)-6dG2&cPfl#BEZb$q)#cd2C80+!U
U!AAN3!GQf-8il,`KNElSPJNcfi(j51kNY)&S$Sh!X8p9-HbDl[128N5q3f&eh3(
pl0LF8F)LiZXZ&"08$*QZS`8#D%Kr5N+V4IKKda1Z5h"DdL*B*m3TY&1QS@pNH!l
qLC[8eDE1JN5X$Gfhq-'ZX9Cf,dDYk&l1GTQ#3UjTX9*@Flhr4NY25F&2hhHa%dX
eS8,I"%'`Rrfl-r[jUc0I,!@j4j8e11KRXj0BPYK)hGm*d,mSE0FdY3HX$FB@iAc
'EqJ@1#0#c9i*S@T9kcM@-'kL`6D4*($)3[bL"@1M"[B"%H9a(,QDEIjkBA-"(aP
,-TKkp1!Mc52mk)AFDmY940(NN6U-Q'r%Sk&CmNC@0HL,V(3L9,GJ8`m'%'%GlpB
Fh03fLA00rP1KfAA#8cprJdPD'jFimAHYbGZ,rKB,kXhm'$(r`ZbHNb()V"Z[rr5
EaDAk&0c![`k'6N0hUqRM30Kk!'%A0M$'DfXiheqe'V!MP#q9`R2M-[JLLq%[D$4
!8IlE!b@6I`9",2I-"HPR3)K$Fa!@UhE$5,T0"`V8c"BXUYmHRH)XrlXA1J!i"J[
Ci11AP$8SmBQhU1@Uqcp+DUR81f)LGlmm5C,MU0f,j@pd6+Xp#IV)*'S5@aIi`!4
T+Q5rb-e1L+0HF+k(588QEM90iqRe%&Zq6*+BbRPq+A`26+D4qep@5!ja'#2r&fi
q!,S!qJjR$m@D193AY3SV$fqhB#&&e,lRjm%l43cmMXKGFX2%iL#I42X5")a9bPj
Cb5*C59!e[)Yb6fka8q0U!+4Z+d$P14#9PP8RT*d)D!@1LpEel,TI`!q)e[,`[KB
)D4RCLqA3G6Dj4GUNSSaT*i1Q0q(F-X51V!(-2iX,k31mbq5f(3f%(%Kd6EG(cPR
lU*LDCI-Tm2p3e[#K'mB#1[XY9dl20l%eK3V8,T562RJ3Z6jFJNDKd49m)j!!l86
$fMYRYfh#kfV3H-&kJ%$fX,%UUZ!rGaf$ELi2ZA`$3q-PReiIJHm$lJVU$5,MF&r
%k$#)AcI+J'Z2D2CUI1aZD#*A"M-13UBi@,1l%J$FHHYK%94(KYC,L8NU5)S34Hh
*,[[5iC[B*8[f!#)4iV!R,A)2`'YXBL1&iCRGDGPZEMip%FrJQV98j@RMi@5cMj)
0#DM)c#A-pZ'J0@8#*'fHIkJ42@KhDp,c"fDNY#ki3&'b$irAXEp-@pm[QD'NKGl
93`KcQ3LlI[(I%qQAp+Fqq$V*3SP5V2)e&pFVD[-V5&maYiZqjTQaCEBrQD38GiL
5LI#T99cf`$Q#dF+b)L,!Gplk9LHl26SrGQP*h-F#I`GZ#G4jF[1*`rH-pA+2cTd
)D(kHP-U-5&CG6GeU'0`J!m%F-djU,IX6F5@B5fGM%[b&"6DSN!!"B%L9"li98'&
H16d!DkMAEYJb6ECh`%&1EZ@18T4[Z+3pDQXmr36bZm2aeNIb)5JX)eSLiRS&c2r
@31#)j*a[[U)1A$CJj#,S%c)$'cJAGTh#T#j8j!8V$%D)Z&(Y*$Z"+eSNER`6j#$
Y(Eq8f4BjX2J)GBk(#jYb20NL6iP,Ba,68B&(+G@qf4(@)cmI"2F5RC5H$1IFDM2
hQe,aX+VP)QAL(Sh8PCmILA+YiF'RM3Vb#i12cK`fCTl8e4+YP`lGC1alElD`hN+
%X"@HIh(S!@[Sk`cRdT2IY*LNGY"DRLh[&HCiRX1M4Q-!bTLI&IXDmRR!5H2&K'b
R3RU05H[M3m'C4BAS$JZ*YKJDrIQV2Vl()`D'rpd"'i(FXYGRmYRFLQmE#`K!&a3
eQLi5([L#$[#M%bRMH09ZbZ9QqcXZ22B8e!T2*qE%C0mZ6m,*REI'"'RZBk+)U(T
b#SiS9&)&q5JUQ!GiH8YZE1riIHr#rCYh$Ik6LZpKMc,*mZ@K[IGT'9DG)[ZK2,B
!X19P,#-$62El)QQaI0j,$#h`,(b2*B"rh&Hjd&UZDX*Qp5U-KYqaHc-@dU+-13)
mV$KV9T&K,r5V"VZM+8%8ER-6j9f6TLGA8PPL,EFT@A2GfEaIh1-SlZk8HpZ@b6!
BmK&YrQ!l$P*%NY6*aNU[ljcj*38088N#j"F`"pFE+,5kX3-VeB$lqD$apUUe`UM
c3J`0FHY,A"ja,0bJ582(%q,"2-+3!)(-+b%i,8ZPUQ@rG9h*F%41,c"4Sh0,K[T
TA"1aTdH,N[(X@Z`hB8#C6[4l@3!ZbXY@SYDSDY8hEQi2P9A1j(`C2+hNTe3FCm+
Xb&iYHZaN)DC&QfdUGKS@Gm,A#&Dqj*a"l*)1I$L+!A4JA+Kr+*@$8ZjV)rV$RUb
Rj(CB(hK400[KQ-K`8&mYM2l*9$Gb!a-X!N'Fe904*5-NESR5V$TGMG8cDA!f3aK
D6pNXmdJ+J%cT5Y@f#K+B8L@Fib3l$lcIiebI)CqaR8Dh#6N#lk'jGh96aImK@Va
!"bBA1"c"-BkmH`fF1f6fI$Dlpm-)e9P&!,crVQlP`bSdG2AGTEFaM%Bl#)26kGM
iD4`lAaD#pjR!LB`TCri(HLCQ16NkYKfVqcckk[`JkTahDNe,Md-Pf&YJ-!$#P9k
jU%PI`mVH`Vp!S[U*mL,jK%(G&VaAD4-MIb!03@Z$"5Qjb#Qp&m2GpIBCeE--h#b
[(Hbjkd`,1%!K*3SHm()*fXkLLj9S5lZkaZ&UBhbCh(fU&j)JpECbFNVXD@Z9LjF
YBI`[pMkl5`Z5hFRT41!%F[XPE&G3Y34SSKQCPr,'f"8A#Z#f6!a18N0(4UDJa,H
'!q[3Yf`56*L,36+2XM"fKCSbD%e)"E$mYXUKlbA3BrLY$hUUjK(*2ib`ANC4Lp`
fj,j*T"JY&C'U"$N@,3aYqiFD(EHI,I8AbhQEl&`S2iJJA6B`N[+"b'AZ!qrU%J@
AUplDj-,LK-AA*h3kh0jmaiFG&C0li2rh*f3dFhe`ELImUY"'AD2ELMcl992!0Uq
S,(Zm8b69!1`%TKqQEDi826Rmq3#@$!$+,J`eZ"hTUMH2hfTEL3E,JI$9Fp%k$K$
FlQ`&!EN9*UZkP96f@qa3RpITPYjBkrIaE)h'hYdIHU92PZ0N#-k#@-im8FlmJ!E
UQ*!!kjU%A&kQY"A43a*,HXFA0QepERZQBY3!N!$[JTr950U*SYE63fA4qP-l13V
FUVdr'!PIP*Hbi&0aB3LkdAV'pfVam',S08XiF4*fhYXXAm&LmjJPT(2Q-RZ8c`p
mpLSD!+&@pE"AaDpP9[mp!-XM!kYCIkA+AR%Pa2@GZcQi@ELI52Ej0,Yai0qFEj%
9piIPGd,4dlY,l9*cUq4dL'"&TS002[Qr(jP0bZa0,+&(@rKpeBD[8%ckAHMA'J%
#$,6-k&'[[,9kA4dQb3XqXc!rFLRN2LMH1IDQTqIbZV9ZrddJSPfcE[$elN%GK1#
Zhm6'XNFSACr"[8E51%"8%*VE)U"A`Z0LZD6$5jS1+j4hM@%PqfM$PL*SlG#BJ!V
JZPNBUS+FK$m!4UaIbdhZ(l*P2*dZY'8-6CSb8jkLZYZd#2V6IMQ#QZlKlM2%4)H
Y+dKAI4%FNiCm,8aXMl,a3@U&XX6bf'0GlYlh("rdc39TPF2042@,@[bc@530&E&
HBVlM%Kk""T!!1j0N&5#Dk&Dqi4-Y[`D%(VNGBZ)2!VbX,ULH'VT(Ab-BR"ReBH@
r'IlhN!!FKCLh`"4lT2mB285!chQKi-&HDjC![13Km%(I[VlVPlEDD&RK!BMedXM
ZBPieZN2U@CCf)4-LUR8"6)Idj2*j'0iScddMpa3'4V!f%N%hkcYC+Q!EPa-`'a%
j!j`0I,+THKqC-0)H)em`(GbBqZR-cm9i6ij4N!!LCa"Bm*Aa304D!"#X(C0cN!"
#(lQ(p"!FDp@bP@%4R@B"PVG!AP5J)bV1,L4"DIM6XS*lf(Q,%R-#X[0##T5#10r
MU8SE#mkb`!"2b'YJp[4-[@IXXH,U#A%X"[9Y0Z*-r2SdK%*pdARBNMFaVbmS$Sk
1SbqUQY1V!VE`JGR5Yj'E9#ieGB)"iljj!CI9fGU5BpC*K&m)$@qMXdIPbE5bNJA
aj)h8)+!%r--Ei6cAF"SbqG23RP+qL``[!9QKf1%8K[KVYk1c9,JH+[J-QXfaRf1
m!,&K(@'&jj+8`3b6bJkJ!JR,IbiQL#H#4*cIKB)P+k'rECL6!QQVmlE2Ki1c5*!
!3KEQ$F1apRjNTHZ!1ljGX`9+H5CVJ8'q!XaBJemDX('MqcLqAPaFSTMBE"lLd'C
f9j!!aV21JA*!lI%$%+lY&2SaS0'kL(TiXf$#[48pCKljH35`94MDk,!RK8E$*'b
IA6hc6DqUZ0LC,X$Y)Yj"-#dVRhk&h+,kHcEH%bmLTfdXD'H#ALZ[-a"Xj1[R`VA
GNH+bM#pHcE#,&9fqeVprZiLSmYC-llqbD5ZqUeQ*-2pY*C5)GiYZ%i+55Vq!8+A
@E4K+G12CR"1'L+Y@K1b'jf(m9&lPZ$dP$b(K(0P!e`K!XXQBKSXC96rZ&Q'aCNN
IjCk8#[iq(IDk(%p-$P'h@4P3bl$qMh,(i49KVMY15!T[UEF1mac4`FZ[l$K&dkN
0rTfHXQKH,M3HbY"ZeV'ha8L*+`@6-c0(U'SeT((lpTmi4R''fFk5)jD,[1d4V18
$Y,cJa)'6,m&L9Bj1h5YEm*@,pPQM4,3DT4Zl'kTm#E$cAiDp5$bSKC,Z1%Z6der
d0#4"06P'GNdH80hZN3-Hi*4%6e-SkP5kdhe9lKVfB-HkG&YQC&HhqYMa'Z)EQ`p
LGrPIU[#)iE2+'V%SV,%53H'T"4dUJ8%#EJVCY9f"K$FprLX$"BJm+dk*1r+QFKG
bR6fH!*V5,Aq-PAfQJ,P3K`("AUDU)h3PQZ+'LTJqCERIprASSY5I'L&cbNjX8XV
b1AKUINTA4@PRffhZT`11V)KQ!VQ@fH`+aZ"A"4,5I9iZRk*hJqAeK%!6*8'pJd0
85B,S-X6qJCY"mkprcipCeMFRND1qK4A2$9&ip8X@XbP#LBXGAZ3BA(MHEA(H4i0
pcEZ*cdA#@hB20`48Lf-I"Qf%[A%MHFa"*mUm8AKBZHp4B&-D-$h,F#)KA&jV!I)
"I94B["4JbrrqbdNiPASj%"!i3&J[d%QF6h-[FQXLB8,[)G5Dh'5`HhfA2QaNcX8
Qh5EKhL!NNMNQ14HY'*am2rMCAd-I)M@9m"XE#1hCEIpV168JdNAGh+LPUU2i#1B
VU*QIdh+#1r'fbP5D,,XbBTecp3FA!kMU,(+kK0c9p@+cj8Q1%TAA8lISPf"kYfp
U[PXpDSj0*Gh"B`l1XV#FGSL$"*jKaqY$E#dKAFj'2!GeG@iB2Ej16Rij#p3qpX"
52XG"VrF`AJjbkcK4(LLFY'&BS8VkiL'al2VNiY0r*NmHcU,2S1[@C06m'&$3hjY
2p'pLE3bS451,'SYTMl"#5+FPNbH(p%cd)r2rfMB4,4P+V6T6SD-5I4,I*1fUJdH
5e#D!(%Bba(CYT[aaX'q4jj@8"F0J[5q+)ZAEH#Uq1MA#9,ek33X*&El#"+-kGa6
hHA3S'I9F'iSl9#p%jCdGiETMCQX1rHKcRdHMQ&AMMCXE6ITDlcI-i1d"VU3hT0e
SM9hf!Z@VJXP)G3&PFZaffi6UQk%4NV[Pp3Rq([6*'6)%-c)e5Jlk0%a'[R-Er#(
+d0bD"jap#Q12G"[-I6kpcTN'YCJ*jr&peJi#FrVSZ2i@H!m&GLEr8Pk[G%pdpcC
#%@+EDb*dZ9-0rZTm'rCBeNXd1phH$FV#G,%r3E"*MHUkphH98(aK$ai6Vr&AC&8
4DB3TEZb0EL%SCJmS'(Cd3"R(TBicC)D)Y&$h"mkrG-`Uae!bN!!,i3$`AU%9,U3
UQ*cT0RmQ@8PU1(583[kb4qQ2HH!I*ErCT56"55b#jr3E`@a9YV8+kh",HSY#A6-
Ph"2GC4IrB0&EXB4'B8mN)UNJ%INE1D3Y&DcZm#P)MhPVfQA!-c+@(M%MNe@M5K,
6"%R28iE!MZG@HUkAq"I($XEDH)brXFfFY@#NQ+i0["2Bk#TQ&1+X5,p0rQc%89f
jI6-5!18RMd")dPITk[B$TV4C)&K+-eL2#rU"[GiQfh'VEf@PJX4rq5E8'@)2"MJ
beA,%$Fp"G-Lapc4(a)lp8q03%MXH3'JRP#82ZBiM96+qU[[mG1h"PXAjG`*1dUU
am,Hc%bFhS9#3!,,&DmrkVAJKq$D)-mqa#4GA"[#ZL2E@R$d0@5k`UBeCr'0aDZ3
!D'1QLS*L$jMkIRcZk"@6dKd9$#YH)SMr+H8@b2HYRZM,*d*j)(Z5r$)Z6@YB9!`
J()ie"`TDYrGZdh'@GRT%"9e#mmT0L2YAMEfYUTBX@fQK-dF[UcLIi"A'!kZj3X'
UZ'bqCC!!+3QXTIX",EKhk#5GZQYkG"(39A@25[f&S8lA'dEqiHRqq$fFjcLaebL
kXlZH2`&f#%FMaSMj5X+000Xq#3AaLGLAJlD+5"ViR&lGbeL5@iqE9Z([%#ThDkS
Z[LGJ-d6,8SAe2N#jdrR%m4Q"RAXVRXkNG8*0JaABAeqdT0A1Vbm"Bq`b6$U(dJL
*)dZ@a1idAd1'EXGa*i4fJbh(2*T1d"k3!,N)e+d!DEje[%C&CaEXC*4h'3Ua1cc
1&Zhm3-i#SeKm5B&8YT08P5&(9+`dmXI8alPN(ZaR-Ca4T)MYS+pL'#4(2E'@f-e
j,'LjVNb@9BTEZVX%PPh!Q@GFTUEG`Nq,b'm)M@p2BChE(9TCrh3"631'aQl414a
`SlJIXkiSLj2DMj@Yk5)YQ"(T9AHJbFC3i4@p10+GjZJY`H3m`Grp0hm6NpA*U+Y
*9c62(FKJS$33k#8r!IdeLL-FLZC%`X+Yr[$k#'rjMNK@K*(P56U@TTSmLJELp4+
c"pX@dp`V9p'f)&#1ZeV18DJ,j64Q6GI+-m'#2cbDbB(UBR'mkdK25Sh5QLYmQTb
5ep&B%TqYDmAB[AI[#,KYT%TML,85DY3XXIP+kcGmVKZT%p0%UV0#e`ZEAKmCPf!
,U2MY''cpNCaHRX!42(T+,kc'*SEQq!)l&Qlr"`1rTjQM)BRpT18*K"pNpElK4(G
C'jYeJeB8eA$950Jr21MBk0Kb@B6Ar0k+kpl23YmGqiF4XAV6U)hRK6+E@'@6XE5
*'[$`ea)eTCqJ65U`1Df8-)hfC0RrQZC8&4pp6i`,%I6,8c990T3+D[#Nl5kKAp-
V$%ar)UESiNQ-B4@E5F60I&GZ@[VjAHZ`&4qRT8pEZC2qf5@[HNrHYd#1rE1SYQV
H$L&fhN*+36MkC6`+c,fr-Np-"f`d(i14KlF!K9C[Zl'e`FCIdZ5NQN,Pm(+TAXK
T!ZHH(1C8`XM[d(+LdYLq0+$Fk&h*j2J-RY@[YNEHTKfi4'%6JLM5M%51`FM$rMH
RKk,LrLd4(DrBE'`2KXA9TF@Up)Z6*-)6Zi[DGT(TfN&T,Y88d#U3!+qAelKEUC5
rQJTDYfB2eHGfcShFAbF(S*Q-'UHeIC24'jE)R+fM[%QQ'pC*Z+&+Qh'IiH'2GM)
4ULZSCLdA`IUUa[Xl8(&(2k6Xkp24qY94S@MMDE[)DViHL,6Be1*U"XdV1CpL-r4
[LbkK#4,"j5)e-2V2@*F"8`G'Z0B4S9GRkKrCX1FL(2@k2r&GpQTJf&4HAPBd,Tm
lQDa#('(@r0!@VU-fEX+eNLi+dVGlL+UQYRN+`ZPTIBlH,0rT39V2&Qbe!0k)*i'
-pmQKp@,)$PeE8+KfpkDp)S,+%HV)1@M5c@lEj&f+GF!Y1bRDYrYm0&KMK[Z4EZj
0#N66$f9"BQ6*K8@('T3-d*leXQ@)R(J0@4FT3l1B%2iETCJ,j45VPicl'k$5(3k
Ipi`k#UF*ZMmVUA%pfl)`iY@E!apQ5qZ6Ai&EX`)eSk4XlBpYjX0&`+X55q*%D!V
3Bl`@+h0aR+,e4YRhMY9dlP(eT&(S,UK8BTrX%3,IUPRc6#BdbFYj[!dGhM$E*Db
)"GIb5FSA4che5kjQNeqNcaYNk'-U8eE(Sqb#1E1U!p-336%ljP8F"ZTF*"V'S-T
j"SfaT"(%[h0epeTa@BLUY-"ke0"Uj@bNcKf8J0iHh*Y[F`S6k`iP5SG2I%iZ)k)
MHL@f%DY-2l`ib5H'm#YNT6KC8Va6p)J%EGpK'EE4P*B3R,M3Bm(UH!EV4G[m2$+
D!L3%FTFke256$Z-,4[-U@54'6VHEbAIp&[[55!ITHe!C,ZTlXm"448iiaa@qBLJ
D@dL#E3P!CcaXId6Ck$Qq#D)@%Qe[cUK&dD5@PKM)mHhNR8*qA3&`+GTMle[bQ)8
Ab6h0J,XbbS9,b0kF8r&EKa0k0(D+I1P(6)Xhl#FEK5%fDS&dI28rI5l3r&GPAq6
0L5EV03LA9,*DH306LT0$01m!AS5kQkE2Zhd!0K'I1*cpNrTR$%%F2G!,c&L0#k(
*k"LFJ+E!)"@RPeka"ATCeV1l!+dG#6j@B9T!`hP5U@dh8PR6'i1[l4AV($V#!L,
N24K&[c!1,$YA+9cCIU!IQ4FkmMCSJfK-B8q0Xp,1$)I@-m"kZdje,SLcPRi+23Z
9p*CQD)d64kb%+*@$hV9MQ-Ir2J5H*H[1XedQL5GTK(1d1@DAe9DNUl-812m%LD&
jEPG`"p!4k86e-ee9cFbB%$B0FfFl$15Tmk9I4f5hX6iS[#eRrqrrMeDc"HH0Hj-
*NYDZ)qGNe(hIp3ecKNElG-TM"EHNpF&X#*!!FGLeh$"bCC8(GH)1l29Pk&U@1eP
bEjqZ,+JfED6,IAE@Y1GpUV43QPdMGD1(Q%k$3h0c"p#VMrmVqSKfF8'@Pq5jc0'
a5YYcY58!r*ej9eAT),ZrQ2k-#5%B0RkfN[DZKd1$m8iXj&pbk6dV4hImkCNrEJ0
C8#)QhmEX1l8C*0-#9U$!*)PY("SBj4MNfDlpM2STlFrjX+A!)S+VYZQG0r0c85G
$Ppmp,XUV4@!qCFN(KLlA-m3@L$)S-T`el4@4-(,af#Tc[hX5*lk)Q,[N,I)ZiFS
)51$D`4r!DKA4X$0aTVV%@kLrGY9bP&$NQDP(`&RSBi8+A4rZD!S+EBBP$6cQqF6
ZQNY4iZ0If*[lrCF'FZ@TkH3$c1mlfe$1Er!bA-$YmpJh+KP-9@(%cK`0Q'JMP9&
,aJD`KAqhS-jqS"R#mSSZIZN!A!MDi8911)*HlQ[H'I![3h8CUCa2NfKF'KBl9c,
*a`E4YN)ShCRfQ1TPB4@-a*R&4cN0cC6I[HAM4m$9U8D[Q2fcD(0GrIL0'EXdHIe
MXLST%+aK6L%,*!r2qjL&"JJNBd%'IE8YZ8HHq!'6$Vi!TpMf(kU6-43(%Y36FCH
qfjQf#eH6K1bH[p,FF!i8XK,CNfYj1hGTliDGGZq&#!aK9Ei8r,TcP+Lm5d(ImI"
bG)eU"ABr(&5S3c[S3m1K,`CElP+4fHG2S65c)fHa!%cUZVcN2,(!VC!!r"GcB45
-+iJ`LE5eANRRB[heFUK4!E-[#*dr#[Y1[FVfl-[C+q9'rCN23f)SFmYdd!jNIr+
b4K8@,,c,p9CZS+$"Y@3YYjC2+hd)XdI%QJZj+%FZ8bPcq4c4EZM%Vd!D!Nk#""!
keJ@cb3HddHCCKSifRANP8,ADqhPmI-eri"Z0$QPjYVF03VqLafrpj&NcY$aHd3r
Ud"Pj"'iD"$dhQl%*pcXfmV+#8QcIeF[#$"RL'T&+fPBFp$EHh*AZ(Qb6EpE)&2l
pjS,91XN[-d6,TXZXcKGZSfH%-"8L9@A#aAS-"EDl'-S"f-BZCD*)NE0el[*80N$
b*#*kF9Y"f[RHch`cbp26!p'+Q0)IRKcH1dGkXK#Bb6F8-IlTH@4E+AfCQGFTGh4
1Va*8!h`1@qB3jEb*K!2llXi#`'DdHE0*4+a`Q6-FlIlUD(a,BK)qr`rKKdVHP&,
CF[VVQ1N*f`Ga"PfqVBp"m`#&+ZcVDRMiP3bZ"CAr3Z#B2+P6XI%3i11KX)@qG"R
TfdV6JJPK!RDbKZ[0,fQG--*Yj$Kb&c#Rm@Hem")T#@#QkX,P&+c#D-j0,NTD$SJ
I3H(2`V)[RVEXEZ1aK8[1"@HPhE$d6C5,DNMCj&!3L$9A9f-mkhS&"U-L)6rKpG#
(e+#*+0cH)f)AlHlJISl',e5iXLNaG)T*j@[B`31UF0bh%M#lmG@,h5eN'9$*a+6
YC4XQ+lQUN!""c&+'Gj!!Pd3BY[dlc'[B%#A%P02m!lGZRrKrp92bbmMUf`6UrI3
-+6&X@+XFhCGCbITXQ3ZF4-pU(!YJJ'QeF2lDcK8BK%eU'-Cj[q*MV+lCET`9@"A
M3AC(X++M*XX$[CPM8XqN))Q-!'88iQ2X(JYSReV,%f9E,ijB)1D9&q5mmlm)60'
1#dL9%008Mr0mrD4EF(Rp[al5@KTI+C,Xr&DAl+6dMdMI#0k8(l0c&1MPiJE#CY&
Z`L!RTD0$YSfTA,kPA!+Db[C-e6ASGfUHaR*rE&N,mX2-+eDqY2iX2#dPCJ*cP`l
I$VTSMR-FEa'8#fUlZddkdJNc,"6h%`9derXe@2G@c%mb@CH'8B+c80*M"QZkbHM
rHld3Alp38E4'Zq%G`0M`#"1$k5)XcJjeafc"NCHDl[(d5,IX[N*QKbiM'e$$hKQ
'JQH1jFkH-1-fSD"YF6hQqQ*q&NmSI0m[I$0*c,4BTU,%2)JqMFD&$2Ik,!eUk3K
j5'&FfYG8JL`6,#c%#h*h3E[19P8lq&+C-RNLXq$qrhH!G08ZNMd+h9rR4*ZEj"b
`R4Ja`KMqFcmQDaF&qEk5`ZD"B0N))hU1RM`A'CaV2fR(+),PdTQ5(5"bLVZ"%9Q
,2Qhbk!C!kaRLpNP[Z$(#VA0B@5DA`X8B@8i@5R(iLJlNSY"RdrSh-Zj"(1Rb5"Z
,%@B(,6pk5LUBj2Dj60VMGS(iHrF3'RM@[5Z&+eYm!mG%3[FC+Zk3!*P5qjpV'J+
Xf&Rh(!MH$Y1YCPJJ5b-rAJBY'fc63j0iHJ[L&m&!U-"pNpe2R6aBU(G`T14HHSK
TKGVZ@D*l#m`K8X))U-+Rbb-b0'%fHKd#`'"CapPciTVIF-#b*TRaCS-,&r5Ep%K
l!c)RCT4!SaY[!V,QiBh[-PVS[b4)r!fF$fl[im$IGB8&QP8-!36HrMQi[pYU2pm
T+CN8kI$8[H5lljDp(Ek1%jSF)eIaf,qK3*f,@aSVbj,5$*Z+$(PIFR(abbql`lG
%UTqj-4fJ,mhY)S-)8-erd1h&KAT!1X,,GlipfaZl@Ih"#h51J@SHlq12e1j$SVQ
6j,AiM8a&,4Pm$9LV'ML@`-2QDC5UiTHHC#[41XCKq0`h#$0-IUIq9HlKaMk&LFC
p*CGGK)09XImc3NMq,&UX#VNI)6-KHde0k+Q1Bcc6Hj,S30Ji),BS[KqHBTE`IH`
a4mBC2&D@VhPqH'!P6i(Q*46dV8(fqfblI2Vq[PK&U1)#%#Y'FBJ,j`DTf,KDHZ4
!5SGZ"&f1Q,FFEjCkGk8lcA92hY+%'"a9`FQh$LE@rZLhm[C@YNZHjL$*rQ[m,9a
T'6j8i5mJc&)a@"mlb"@RVFf8'6%`5eRDYIDPC1J`"Q,AFq9jYFd33dG+Qi8E`RP
!1I--)a-A@%)4fdN2cha@9b0T$J$fH'Nc$lUf#55li@T8c$CELLL!k&YRV#,$-,N
V'B'jf,%lY['LSARipd8CT)ZJVdFP[Ee9TdGH(jaCq(8)"M04fhF@Dr3h84!ldre
k[rJ)J"8ljEm5-K1,#95NcPYY2dh,H!f+J)HMIj3h*0S$lLkTjfKBDj9H%KYjq"3
$!FL[5qLb2Z"8r`keTKJ46'1,mK(r1*rI8AqCdY,pZbK0(hGF,4(MKhS[i4[V)N9
8h0e"X'NP1YXkN6SSH)hG`Y"hI6Th6$4*92)l4)MTNQc5TE$1`q&HICP#cLQdd8E
1HN1,ibG091D,M5U2LFMR#L'9T4J22b)ARdHYM3lBG@B,J"'A2Mrh0VH+k'rj@qU
lEiJUm14[b%Ne[8kLNi+YKr#Qc4`mNNL5,aT%ZFC`mG*BN!#5+(Vc52bk%rH"mM5
S"YiGI,p3#hQ8acd6IB-[D1"F+Pbf'!D)&8YTcDVShX(BCHmc&Qi"4%8%%mKjAqG
dqk6N)Seme6Z*5K[(Ac4)9+r3Z&2D!q&#CE+%#T'd)A5%f9$SfN"f'm9Vk$!`laH
$5pPad5#[lAGEUm%k$c`NNNH`8ASMdSAYDR`NQ6KDSXYP0jEeHEBMU(2Uf@ibL-B
8!fjm*8M%Uq'Drd&epKZGd8j"mYSHQ4*l-dK0Y,H6hCSfP21*Ympq6140lfqa9hm
LpJYMY@K"MGS"ShDk*HR"&[ij)R%iX#9$1j!!0-iIbTYKhZ%ACbZ2NqY2$EhKd[i
!IiA[+q#1$GANIG@,4VcKM&5ZITT3I2k#@1hRkNB%HiRDEr96dNEFIEIBY5mLj@L
cF%Y9[9Gp1k1[Lj3(q+(Qp(bb%RkF8,Q%[Qj+e4N,I(1YAJ$8m$)Z-)'56pkVd0Q
L)1`d'c"%Pq'VM)J`bSKHRNkT%b%$V1h9pcDD`S3aU#Q1&Fef0[Q0!6d-K&U!+5m
&4dF-QNKTUaXJ!Ii6l*,a-G"30GDb(V9h"`S`G+XIQei0DB)D$0Dr"FfEZVdc"&N
Mi2DeZ[-jTpm1U[#cf+TbG00!L2pYSpBRDJ5EMrd+r0SYU`Ub!`(frLXr(5XAcUq
`4pUE"q@D%*XNe*&L0Z#,(P5!R89c&lSNXL+R12FZ4lLK[VkVCJKQ1Edjm5JFGVd
jCaqHC+PAX9c`BrI6p3UUhkJi*DJ9-9hHZ-UM'3'e*-,JC+AH[XSDB#TEFjYqGVJ
0b066HU4c9Hi8f-V[TC@1*M"MllTVj(P"#i8"ECrS1ke`r3SP9B!-1`qj8L!hZEF
["kXIcZ[TlbV,b*%aP"Gl3iNQde$bqS@fd',K(*M"LNHVjP5Hr#$ADA5A,5[iRkC
r`+ZkGE$A%m!Kr1TK#5SaUV)$BmLCD4&'r22qQiKHdNR@TATE*mUB[akHN!"Aea9
(+[f9BDPJTmC&lUbRaK$YT5FaifCFMX+A@Xc&jaRd'Jre9$e%f(,*Em"*QA3LlZ0
L![B2SKYj9)&GS3(l3k00m(9lPHfYhBeZ6(3!$0,FBr-`dpCr9UPXMVipHqLXCRi
%(P+AerEp3"h1h0DL8bXYImdi9$-eQ(LbILZJ#)f`RMde2lR+[1RhNT&&LheBrb@
H('[5*F*Bl4!)QAF,GHK!`QCe,8SP5QTjGM+H6"[F4j!!lh6C(*q8RY"b%f!SqL[
`r$4L)$DVk`kU6a"d!BrSlL[+[T-KBd[B!@%bSTaTPCV&DBCD4+[PepSZe(3,&JH
-N!"JL+6)k!X!pldl#$+*3IeLP$HHM&AmM2(brEZ!BV38VqKJPYfmDMQC%e!K4Q)
mBJGI,aY[2N"YQlSRd@!jlQm)(114%0fQ9cr66caNS[0E`AeL*[BR*!IiB+@l6%Q
YrH!PK$5%&$[kDPGpF,*ej[JVL[$RT3QeAjbD$EEM,F0Elji9CCV+"e8kr1aGp@j
Xkhj%RAf-HB[f4jFl0B!L5r#cEB,ZKmp'0*Hc6*R%lh55,`iEEN45NFM8,"FDa)b
U5X*A1-kh53XH[PHap!Q#laE$8+Xb),AFeSIHd*6f%LbeD)!h3,b&DMXZj!-8a#3
b1F(36",(K[kjlS899CpedUV"3'J[EI-KZR*)0a`60H[,'(bCqFMc'DGDpM1f$iT
AC6[hX8J-mk'TPVAM,CqLEj*cfY#1#k&b`Ul+4-23J'%9#j9i*6pP6&`L*Vk)HM+
rr)T6[)CHM"GUS&jj9rXMPQ-RU4@1!&kXJ22T@i6,@XMVd!rL#5LUCCbL"fF`(Mk
dkf!,%+aV[`8T2`@CLfd[H&G0ApG08hU6V,Mr4KCC(()MS+!q0qLK8VQ$YArM*0I
hG&F('P"M9rD"[rYf'DFX1rp8(5bcppj52K5cVRiIAA($SG,hQF,G"44[k+LGNRJ
bI,RL*JTCZ[Q5"+Aq3Fe&eqQiLrPG#E(%6F(m9G$VE)Il(@HrYE,LeadX`2Kpccm
5hSqreDCR5JeDZh4*l4JX,ha8-DABT4XJ8b'IU&3"*24ej"#k[kl`mUHHHAVjU3N
H*e#iZpG!VDMDGbiArR6DX8l2fK9iiENSGI%30GTqGELUN!",6Ic5MCpCF+64cp'
TZ-b64BQimlhL8[@b#IdTbTX9hDM'Z[D5N!"4UZ0e(kr+,A$2D@hL!3@U9*d`+!*
%B&fb53"'SKN5BN`SDT0*Il+8akP$lIk9%[HLl'deCT%EFdJVYc#FHqh`fIA3i&`
54UrJ#jVF[0l2ShpQ!3+(QGm0E2ES%Gc-HC@1Kf6130S"Ac[rpX,AN[-@1dNMab'
pjP1G5[PCP9RCldQeXriAG1PcpFABHXE9QcaKaN!*2%&0XlhMS[*[#@P'8,FmE[R
@e'!*)3!KaD6#)A#"5#U$-HGHa-%d23@Q+G(G,QDePQm4LG)dMeQI$5#C8rHP5E@
Q%NJM3B1aL9dD*-Ce'A5X$l(XEjfX1mHDc0$`M8jiqEM8eGHULd-SUVm$KBL(k6Q
b$m$cLHXUar3E30M#JIjH`pY-QM%lLLUCDTe*%J2"8"13!%2$afAk1G)UrI2m%(R
2%NUQ*kj&L%ikieQX&8*&k`SSh'STBk#9cj%[cGl10Pcli*9&6pb'1)Ai(p`lkA)
'$3DY'0k)#ZNKce5Ml`e!!E!q#b2Eah[C)A#KpQe-mDr)acjZ8Y+fpj'HKK8V#jk
k"1VS`#Q!C8bE!LeK-8@"8ca*+RGEZ+#Z5F#BcXllD1j62qP-e2l'L),aLI"!UCb
V@[$k0Y*Y1E8U6JIS'm&V`2GKJ!C3kj+m[aXSS$2PQ`*4R[M9,52D8eB5dFT@6'k
qRFVX1X3AI-bKMTakHAY26!iH9ZK(Rp!Z35%kIbU(VIL8%`d4#C(jZl1fdZHa,B#
+4hqc3@i3),PmB'15lDZ@G+l2ER',JYdAYCHQ8lGm@E%8(jGNdj2)cXQe[(JlchE
fS4ThH6r6K3KMqr+)V#cXr@IcBFI+L-%*Y[e5hA,lXe'h%5RB0K[cP*AhEZ%@Glb
9'Z##G1*3[ePXJTDVpBY1b#fQ#ePH`h43ND#q8B"qbA"b`62PR`CiC%"E6ULf,$i
Ui"Ec@Z0fcHF&2A[Q4RT"E0@6Sl,NqBcc8P2h,"6Br1acI1(R'M+6S9$eP@e[q28
4d6!S@M-VE83dKF%"qPMXelXG#4SI!!NbXf"ldeY+e+G-B!ZVhZQjj$RP&V9NU+8
c6$+NHHj0A-D#G#NU-b6hYY`-qpM$13hCkq3HUjSUfNcA&)cc)Y0j(ed"SMXX#10
N4mH9'fRY,%+a3GHf(PEX1,!l&EcR9Af11!GrS9PSrIaVibKqMF)hf6ZDfLcJ!qP
m&D83%P&a6[blAdcf45'JAHriZPR$4dPTUL!fUKjG#rXHjA%5hh+cFqFJTfcC&6l
LeImCMDdUFHCjDaP2Sm`qSjRPPk4rcJMSd%h[50$Xp"$eA)!Ger41h)KSUrLDHrM
ReUE2FPkMjb'C2j8T@EBppe39d4XQ*S$(ri`Y@)5(LiY(YmEZbGfAf2KKYmL+G(C
U#rZq%Vp(R#mRSjaB(XUAZiU"2AjiUT8HjVMa6[U9ZKNbpYXiXa$lR#XATU-M,15
TX4SlRPI06hcHk`aL6D`cj6j'"r18(QHKP!,`FI3d+&R@Ke(BESp@qP!@VYjqb`Q
V5MdeZ($cVM%SRd-FPi3Ql&cl,TM0[J-0S`-Rp2%fUk@TfH1KR94#J[qpp0'EYBX
E!2QTq"U+'HccIk53!#(%Zd$+9*AY0D-S2*B2&$i)RAX`k%-m%(R`!2YXK*6Ce22
Be)pXA!m*Ia!G4l4R`"8A-Ph!R%Vi""64N!"ehljVa'!)Hr8aU*2FLC+iIEA$!Q%
)LXlVj2-*-Nj""`BepTrI9TircXJXC4(JiNij6k8fahI%K5l!LpE!qqIaLFFTZ[r
CAkV$9X*&X4H5hGKEee-qIeSd5rd#5FJS(,!kB&K#dk-&6TL$M''0k+d3(@DLk'@
BVC,jU'NE+BT5L'*0pSjj%$6qRa+ZKdb8ha"9DKrN'&LZSUf4h)HE)LTDCl&2-j*
rXP@'Rk""5SrVEDe-N9U5qKUKl`qh86-LXTU3!0J)5)UXZ)+VYrNDEE[l+Q!)5qU
fG4YlQ1-,5+SCaR+X,UVpf2EC8$[Tmd#b1kherKZY$Xiark-0hmH%AL)Bq4hE'[4
!d[l&r$(9Jff,)CVHPVkZJJPejAB+Zd(1@b!3p9%+Y,MVUCCh-94@d9(,G(LS%XU
N%('@(NG1Uh1UN@PYHJ8d5rmba@L)HB@K96-U3P5#CN@Ab#i*+dA49-2XNp+%CLJ
k+%,(+`lUIC1KJj&F*CmpK*K3U!)Bl22d5fHr33[&-l&N%6R-@(!)mYL&`N#AFm'
*r@Yf@kd`)Z-Qqj5BkX"%0h"U@-1l`X*V@PLCJb8f9"qVdai*j'AkX*R$fZ+Sh[[
25``9lMGmPjAjVP-b56LK61CN)H[lU4bbbZ0-MNX,U#!&KN$hZhM#FVrKX)i!a!`
)c8Y$N!!43Xib*hIXK6iXl9Qlk$%e#i!iS0!#"hU!d`9"*c4Sr6q)b,%K*1S9fAU
4lrIF1klXE&8L'H&Tj#[c&FZAXq@)"QG-8QLiTlLSqUT[RqabJPpT,FjLkkSC(+Y
GeG1+F(R((%d+8)'abm+mXNGq5ap2Ee)V(6**$E(9(T!!VDc[9UAEmDN-ja%$8e@
"K-35RBAdAf[&5XmEb,QXjiXH24Jm*N1Bah2JSTm0N6,22q"0'2H3!05Af`Ik24e
e8BF*UE0LPE#m4Y1[FCmjmQ[Hp1VaATb6QJr3idaa9j25"M!kjhfj(Z,N$)heEGM
V-E'dCEmcBHV0epcqmL0h#i)(+5&kE-YPaCT!1Ri*h+ZR4NHdVU6VSCpk,$TD@re
+jb2,bX(I9$+JK,MVQj%KbbEpj%8a$rLrf!LI)Z#clA8)TkYDPI0f3+2ABhf)#UB
6'#,5`$*jZY[[N!"I2Hp)bTE2QhfNh)p4![[q49FB*J!SXGf4@#"Qb'[!#cP#`8H
C)J[YPK`$PXM3#e8"$['q0UhE#0hNGQZj#K"hh-p$8YS8(,NF%,m"RdXd-QJZmLT
dL&!'@@LdrPM*15m6PR2"F5jfE"[k%`q'D('QC)XGQ(XYJ$28`bBRXYQ2`*`0TcD
*4d9IYVC+U1!ih`IKN!$S,@D+apMplY#LFNJK5)rhJ94&R`2`q*J9r3c+cKG(car
f689K5`&2+45aH9$D-8lNT0!602GpL1+Ee!IrClP3a,CAZK@pLmIZ#`@F9Y#q!'R
V1X#6qSE#!ZBiKh%CN!$hb6,eYAZr0"HME*P0I&A1Y(-*B1K4#Pfr92VS&FmP#J!
@R+iTK!3d8MEa!555UQPLk2S#J5k9Zja4'hIIJMe`mYM%!23XE2df!3')f)#J%lj
'P@[40TAj!3hR@8bT'bqY@b6-)ifG8DKM3CUp#BT$X%akqhMh,YDh+#RrYhQB&Ip
SkeU8r$cp2L1rM%NIUXk'EVcB'dQRC1hKi('$(JmI(Q'`-2MA-J@k(L!,XN5[MEh
b6%0[VL0!e5p+4r8j'FI*LD8*XV`R)1EB5EV'*,QbNTTX,qqdj++LLd2d"D)EeG)
Vj4,"I9(DQ[l&'hPjrLL1@25DdBrrPh$G"9Pc8))hQK1mF-qMDjm5I!0k59M1&VN
pYpY1q"a0*LCI4cTYi3$,kYfPR)%D3Z)%Q9'E)E1M%USQPKk*%N$iQlfXL6p!V-f
B-Z&2jH,J-KNRl`IA"['c-5N'qQRh"1hY5e4XR#eK-ZZ[5daAA,cMQMdNLMl-9ba
C8fAmT%36lS4[@LV5d,"'C'N)FQ4p*X(%b(hI$Edi58VJ!bGMm)9!+q(pq$9,"2X
6aJpNJ9icJq%#LFF-a,"R[cX"$&BS@TPC@iA#Y53%'!ab91LKT$RMrNZ'YdDG'VZ
VhMD)[lhqkGC%NG@)Xd#q50$-F'JrXfZERU#pJ16LL5ci3'#p3j!!h%IkCd3D@1S
XU#Q2(*0QYcm(HYdf`c"(RRMm5mELh(FJ!B3ULH#HLTY$*SbUHM!UT%fUID$Dr3,
GF8&(5lYem6#GHpL3!&j[!4j06-hQ3,(8(f9i*GVPm8fP`2ea+fi#PKQ8NEmMIAZ
P'6qJmZrc,"AF!iUIiF#9q89L2U1XEarM+1SX,PYDjb23T+R&DY-*Ne,M"*FI$2c
p86GAUM!5mf$S*Y##YMY'5LX1E[@c4D4`6jp1D%,+PBMC-,$RX+b$PNKL5E[)Li%
Jlr[K*P8eTEc!MRaSUIM4SQk#A6J%e*YCe(kM@&*[-iFE#d&fL%cr[hGZRH+3!,a
DpSC8AMXXQ,-+!p9kUk0I[mq-&YG4r5(2U+@#Fl5DAciKq&XB-R-$rQiYaZ,)$2G
d%ZqeILC$rH$rkm8K+4HAQCJm%BMLjLp+6T66["9+B&TV"p08PJ88"Y`r4GPR8([
cdam9CrLEYp-@+j'6+C!!3H1Jj%*HpXX%&E1&KR@bKeQLVijXDXl%lakd)iS%'6"
5PCck8!%PUklSLi0FK'q3!$(A!%S+dS[DI#1$'dUN'V`IheMV[$$E3X@YlXi4KJ`
9SD@Vl#Uk'[PU@S0JaHj+qNrkK1)iHliD!h40%)+04Ik9FYCFA#+&Pmm55N*+9%9
R#!,V(rikM'4rX&9KZ3RaJXkq'!0aV[$Aq(5V5Ye&LNEE836mKTYQ$@[S#&F4Qh2
PdGjR)ieTCEjXQFD)TCj$E'k&[Q2eHlhSJ6eB-D#886PaFk$6QKRU[h+Kcr@,M9j
6dAJYDPp8#brU,*YA,*ea$UL4hk#eMBrP$GFJiLCA"$%%85L'FbE9B2+M)-eqARF
6Ie6V!2"3GhL-#%34$4r2NVYHE`fp"1fjSaYH$-&B1dZR(Sm9*%[,*B#e$8T,+NA
jeR3D2jDV9-a2kI+9iCh%GZ+#@"BjdLHG-f$Ef[mLRN`ikf093cY$6Ya,cm$c`-I
3Xmm'Im)-fMZreaX%LK+qCj6`,IN'CU"+j3dr0eF1M@([8K8aD0G+ED#hXXX[$5r
TAklIITP,qNVCG4Ab'%!SN!"3HpR+0UNlbZAmirR3iaka)')iik*fp6c-4IjDPZ!
Y,`c9i+&Zd$PD8,ik[*%b2!UZS*HmP3"[[fFHFSfq[)8152aA56&XZ@3UIe"5pEa
10E05dmCR'))8d$Pm"1Ad8*Eb'blA#1pGqV%DibSQCJ9Yr0!iUU"d4NGm[UCI1Ak
jpbE`--0pBHr%1Z[0![Xqr%aZXiSk&)lb`B)B'YE#$UiNBmrqk*e+Il5S'3Q0AQ"
1qcT38&"jqr3Rj`CJ-!AXdhT+@md9bae+ZfSIK0"Dl[+-T9@h168SQrPkiP3(RB&
9HAc(30pTh%cCFd0AibX"$baNPeahN32QZ-[QU+j2QJ(IFU!iMelHr-#'I-HRpf4
-A49q&C5rai+AU082N9Ye8Sr,U3ClL`V@Ebi!-U[qA!&E2$8C&[B$ME0[[DMb%5F
MAcYe5"k)q60ZDh+UNY)8D$qqJ9-dpc14rl0ciHQYG@8lE5$0$ENb$rY*'i[CTLE
Q3+hFMI6qh*NRr1"d[,0T-k+C6p`B6T!!Uc`hX+2D0B8#IMXk#"cLMY#0hl$QV`E
TaGm1lE8LJ-BiU*N-cQT*9ASe(,$KiL,"LE9mZihL5YY&%`!ZeF'AhJU,C9RHUU6
qB31M-bL5L+ha$VfJ!M`1UAmI,XJf'MKl,ehS%IZ'ADD*E9ID%AIJc#8!i0NYr!h
2pd"KBPUGMciDrU*[p%ccHHNcXMe8kH@(D*3DSAp$Ge8*,N[,b'i3JBQN[D+@FVY
135D#)[Z&RR&PdmfchqMA33ia*pZ&NHMfM[5I!iZrbQJ8lcLejb)&*S31[jMl2D6
@`9k8r@lNYKDA13D4p1F%Cqr+IIV*3eDFd5C9"U$m`mJF9ZZ,EE&Mi#qM@9qBPP8
MMF[#3RrKJLQd5HaHb(r2e6'T(B&Xr[a'LKqAm[cr6)cJ4rf*U#XY'XmVpVNKfXl
8A'2D49p246A-F[-rc,*21XJ2RM5+SC!!iJ8ILr[URa0X8iab["q8e`G%U4fDl0Y
6Z-%%J5PI9LHaDfFmj3L+[eSV*MHVLE!J,XHJ&Vmr`KVIEJY#+VG#jI1TXJ`GC-f
*,@d*&Jfl$95*SH")9!`JR(Y9IJhSBBQZME(BZYR*k+V`ZGA1mr'-U(JhC,SVm,A
h&aBfTNL$XpFm0H@`JS2mCkqE+ddP@DiB4Ab"kqjkK3fPjKV'**[SdkKr2XKF@ZR
Aj@["",!m)iLHhd0kj3()[1PNDGUiX2[HEB,6bVk9ZU#m,MLEZf*9ac0HTQX(HD)
9h%E1Z*UlcNEF#GlCBIHLC"'6QJBei"XCZTErBJfj0SMjD6(C!+Y#X##ef&AAqG&
@2Qq0Sd)-PrVipfKQ3Aab$HJU!MZjeil)Yl4SHk4Q*j6,4lEZ+%AP0'[')%JZ)MB
b,R*AbjRY[Y)3[4[#&HB@[Vf)GS'@qZ#Z4j'cG8CT3AQJR#e03(DDN!!DRh@03U&
2-,QEX5b8d45`3pAMKdEZUR+KefeQ[*SGL&[PZ2khlk#3!(VkmEVc(D1r$2F-@Gh
5Q6XJB+PG&Y%ffI6H(U[GM*U`N!#U$aN$k%J`$H'ZDS+IM3hf%b)m)R(!C0pUrEZ
R0hIP-"1!@0d%`UY8&mJX13a5Pclf"9UTm#9'AhG%1H51JBG[,P+U6TrAl5LmUr5
Zi8,L5SA8+X@!mB,CddL%dd+e+Cr&X(bmA63G[Ih@"0XpP05$Vkkaca0P@+V&C&J
&`DeQY4#1C#qYchh$`&c),Qql96TaFq)JY1'F!8$X8@B,,3pGb@hS5FCQejP-+b%
'dTpVi*jeqRB3"Mfqj@@rc$&bGaPAB'DETImZ[q6d"qZkh)2*8!HTB#-c`EIaU%c
f2jjiG-l'mNMZfH+AFqTcYYTLN!"lj)L#@dS(GMkK`ArbBLqlXdYhP3ET"B0RfXN
qpbA+G*N`f$JfVRT,0d$SEC(Tik5#N!$eD6P%m'G3Jd%iGPL4fMkp6$HJkN[*K4-
m@Ve6CjmHF)ej[4NMrHMi52J*p9Z)jK1ZcLDS59L2ZE42cUSfK,V$XXFZ[NL#bVT
J+2-q1a[i&IU1+D2&)#,mKbk226KJE1ha4PN`i8DRA`-JH+E(6mYf8SYeFkJ2*p9
5-0[(K2$Fa)`EYNh&Y9I4+&1(8QH8`Ppk8pIheEe84Ll9'5lCiFGe0!,"XTjdL8+
8kQN$0f9JK06((6Y5r5dDl4mAP5m[$-1N0$rB4aPjJ#Ee6QRDMHq+aGpARH+9CFe
`I)-YJAJY9!R1,mKmiE8LV+%X0l8`!Pi)5QZk68D"P2-N$4Spl"hABR&dmUJ&GeJ
L05B(-#I)3&P8LjU06T0Z'G9AfXA!-4&AFBP6-!%NL'maXLKZFSE9m"fmp[b8af9
F*RIUlILRj#pj9p,5D`$h4@4ASU"h#cNP[VSQ!6"Z@*N5R,Q&UJZI1D*$2@k&Sqb
6J&SlCrZmf2*G(&5`U40MAa+-H+3)28,FQ4F,)0Fa8S@R`+E1Nkr&"09'31qUZHd
bp)6GpYFMFDL52K*NBc,X$M+bJSFafIYaqARS0j29#%0CXJBF9BZ-ERXlKI+6CiK
rb[qUPH8pQrD9XJd$ELkN63d5%Hcqjq"E4!m&6pl2qiT,LL4"pl`CP+Vjja3AB!L
j6(i-ecUC#)mqQ"NMd'6,dTa+CGVqBIA*FB&[JaRN(BM0l65CY3dj39#M4'+b`2S
0$dl!C0@,-'cc1G3dXYBQ,rpQRKSm*i2USd8kc9P3&r2R,L89YM+cM@j-I[2QC%0
c+DPk$%e`bpe0DQq0)-(&rMC[EcCe`4ki"J1DH')ji0[8#'(rIck0Y('4'*'bpef
EU*feGRPQ"BS&)P9plbZRI)l`b0QY0B%dh#ISeMC["AAa*C3LTTkihGdp9@V8B1Q
Q)p8mK(@@QS$PZ,d5QbXC8CLI944EJ"%9(HHjc4emhILbmr-@56lNYA"hE*[RP%K
r'fq[+H3&VKRQllQ5PPS-XXVeiPVbbiKM)eFXNQZml`Zj@'DYmriY!$QNj(A-NhK
*Y[B6&qmS`V8h9'E)rU@l1FkZraTmcbP4M4KZ@q!#@#q2N!#B-j3Rmd`d%'BAY-N
I"MSD0a!CZ@ml(Q)bM@K"j$cr"R&ib1r"FkbFV98T4NqVh4iGFi*G6$5d!i&JPii
Dpj("1$L92k%23H55DiS5(Ze`CTHD-bQ4*qI)pD5jUd)a(A"%b,R%MA-A`N#`Y!J
+`&Y[XemdqF&dIRkCrrU8NU2$VqQZrD$bMD0qk$f*,Mk-BLJk`&$9d52!+ZJFTie
iY(Q'ecje@D4"&r,N6iAQ#)3Rd-+GPN5H9IjUGMC2!0UIheU`(!VD@%qiF,Y8MVN
dP)V0SeJFR&IKp)J@,F+q&,E$E[l+6133(hCS#F!BC5FRmb6f8bCk0`-AdC,B6AR
HCii,XdG,I)p,6FQ3!*`9ikA!,FX@YE12Vm9lL)*3RAJ$!PN))VmTfBeQ-r%(Gb`
8E-qG#2iil9L9mUVT6N*B&mb9[M8#c+Q[j5RGmZelc1KPp+K3&$e'efZ([-)eIQH
q#BILc8K$F$2@[N-SffFBfj!!GM'ZbN)0!da@09Pjc[!59a("B#UKA&MT`,L(6jS
'XC,2&8GKq&dPa$`JZ5pk5@MM0RU5TVd*kiCA1$MMK8iILB4109*1SJGL2f"0,X`
6-T1'Uq[KCc8DYecGF+R(lEY''-YPa$"jQ'k)#Vc3eGR#(QIpB&`+DJ)*6UDV+j8
cVDrJc&2l"K%#2fMQN!$k*N`2l9$jcbH1d((8`8I1H&U8qVSFkN[('f1)%[TH1Xj
BN!!5IHQDq+Z9X!MDCLm[T*lhZ+"KIIKiT(cVp9"&[!aaprVIM9QjA&R9Gl%!mDm
(AQ@rl#Fd1)aa#KV9&KK(42GV3X[)91@U'6Gl,RU'l`HGPFBE`&3pA#1C5%0%h'9
LK,+J$-36"r`8mXT5cC%Upb3dm+a9'D,!CH3D#$SCQ65`p!K(F*ejB$P+4N%13J4
%pf)H%JeFK-D%XhCqhJJI'DL*dYR3IL+%)IJ%m+#aa$2+pii5iFS`HPkE81S0Y4"
-[Cdk@qFC#lbmZ'XVZ#k4X$'+fEJl8BISQQ,6PTVhU@,G'!cFPm`RdmHmQ-[$b0Y
,(0`4ca%a29#pJVGpPC6qHS4D-1G@%+B,HXZ[(SkeB%i)(T0XRX32l`jHb,+Li2a
M660dcpfiDY3KYF'h0*!!'0(aKViT@CcNULD"R#@hNIRIZ85L[(X&8mT49,0e$Vb
c2,UBj),qBII*0Y+R1N0&RH9-UBQDZpH[B6G2P5([6$,1j[f"2TL4hV9Kjf&IadI
TGkpF2)ZLHl&PEB#q+EjL46CS+c[LDA$-YSqcN!"G+D@9r5R$8FB5@!L"kBfmIPd
AiIBUkDlT&HjGR$eP3Y)%!C!!(CLAMA'1&Rl*eIj@`M1BFBSZ1)EpkQVqR)'B+qF
mBSCISib"81US"BVUE[!ZIjd[0')9R'pR$aBZ*(TdeKU+13+aNcHX-S0M$fR5@2r
T'UHpqdfjk!5%%kbj)G#Qb!k24*eQ*RM"C8b#EqmUCF6TD#IrrDXa[ZlJ&pLb%Kk
&iaZKNrQEqB@,pRPkHm-q&Vj1N!$F4)Y+66+dQDYfYi[*k`JCHSJbj!fL'P`cqMU
&DmB`4V5[+jk)P5I*MN)ULqF2pX$r,U"2$`j(cF5Dei*,,(dB,+f*I[eZf%B6D@"
Yiek)PZ0UIRb3!,&L@1[JDXDa$-BDP*pA*Dcf!RbkG)FV$l)[%qa(qiAQ-M+'BQa
(rC["F`K+L'eiL5!Z-b$`l($fG$F)'q4Y3GNZTk04@D(T8)PqN`$S1lGP+6`H(qf
"d!Q'M[H-"ar4h[PZQbNQpmecp0TD`$r4INk+IY*[#i1$-rED)6Q2pJ8pf#RKPGR
#X8lVV*E-5a+BfiH`FI@[hP+cfQ0U%pXklp@NP&q+d@J#GSL5RVFULPQiDpD*f2P
mDhUbNFk'DB&3S,hP)E@ES[Q+#-QLPhMl5Gl'ISbT85S2R$2pUVPVA+1UBYP$D%+
rK52U&c5"!SEjAPJ2JlPT0ZJFd$hI9r&'CI!D4KZ0CE#Y342G%RS`A'h-ESe6G`b
aVeU!h`D#2+U%rYh9MZBr8IYc&`8`4LFP5p[@Q,9Mb`Q9D['2`HhUlIhSHG@hfeV
"mEbrQ+1,X2CRhkhcMQDU)'mcm5L$fK'CA[jMH-MZr2%AcKa%9EL+F1#""mH!4&V
l!UR0K)0Je2#12j91,JYAXL1cUQi9B8"KBV`F$Z54Bk3acCdGdQ5L5r@+-6G%-Zk
4S*RY0(2H%Ph(IlGh2E8-$K`EZD0B&eJDR)0'm4`PZSFMbMpM!V#hcK+(dkBXmDH
NSLiSA'A"98[c9j!!!j!!mcbr06*XD8r*-89H%6elScjbSiA4QU!5'Y#MrcFe)qA
SNNMJTRNE,Ab$T+pUHk+@m@cZ)f21HBP60Qj4er(T`[mJbC@'RLVHc%*QS,!%!"D
Clqd(*FPkicee#$pQH&a25F+I#3*d9EcDf[B*dB&m9A(9EJX81BK3"2bLDh)kcLe
*c@9$!Mfq!"Gk![fr2J`a[%"mm"RB!Li6hTkJ-FZQ8%r%-Z-MQ%[03hrkTp$!)h+
GS[i!8fbVqia9e%*'8&aqdfNc-EbEP#V-1GlIFqMCaK4*iQR'TcqcSqKUZe1IMJR
KI`#9FN5CKT5,5dM[i9RErJF5NXj+aV1q9PdS-DE9CdDPP1c6YLM)*Nk-lC*G04&
3fDc(-A"5M,eh(ZPqp%aidh[B6HK26b-hMVQaph5LbG)Zpp'A"B-"HK[%#BZp!"0
,rh0YN@JmNL-@PXZUc("9Dah1`KYj&%2I2*'K$cmKqH`i6ac8YdACXFVf('`0%!X
K4QAk`EJpf2Ab#JK*j))!If"S1'E0FCl&)#ej9,kRGk5l%ci-eC[fA*'QE'2`RKd
Fm3YmLZJB2B@4Rk9-*%EIbHKEFrY[hT&'h94PZUR5HZQceVa+hfV)a82aDIq6NP6
D90ZCPfeJ+*0#rP#r6GGkfJ4&ZSAhN3LjRk)[%`EraK)!0PFMb%ZELFU3!"cPJpK
S(lJcEDfS-q*63ZSUJpIHi`C)5TI!j#S'BdD1",U'8f4Z'T!!ChmRHNXYJqC$a09
['CIKKTRQ'cPZ&GQHNeF(TH*D'SI-b4['UfEEU1F4@9i`,AQmm8E(XS``RKS1p*a
SU%h#LjaRQ$Kp9-qa-X'miIUHlf@58m&0EId`6V3UK&X93-Yi0eE4&KQH5qC#8J@
*RI+el95@'N`(h-Er-bV4afQ2qaB(r&!(E!f2&NEVBE@SE*ldj[h0FaVp5B*qqr8
H80G2+"5h),VD22N`D3HDk$09ZaCD4j!!B,)YiDi"25L)Z`%M#(kFQM4c`kMpBVZ
%(,94Zj5f1JeF(#ZPk@1!(*RlHGQ156E&r5$C92llJAm%0`id9X14bPSS(%l*Yq`
F65hXr+&l+`jkUL42U5B()K#RK(`k9"Z%)KbRK13i'-PkP`bR2)BP'kQqI%miHl*
fC!pG2dLN*iJZE-,A(Bqm9k$i&PhE8cUd'#HBrA8Y"2NCh8,IP5b9Gp8!6%U*lD*
BMUph&3rK(,*8%Ua#hM"j))DdNk,KDh,$dKJPJK,Kl3E5Y1DaakR-YSX+mePVL-5
YCel[i"ZqXCU$B$F5i-AqQ$9qmDH-HlKTVhRZQ0q"@&H[6ihXC1SAMp-NYN`'E1h
Jr(p80fr%lR662kl!q'1N!eNF@--*PlrYUlCG9Y5`!5)J42C"F[%fDj+fE$U1-FB
(#1-M+rh00U#l'QiH5eZ06I&!TqL"Sd"LALdCK$3MjpIAL-&@iL)%h9(kdEEfZPY
$j9"h9VFk`i$R-0#Vq0K[XNElBX@je#*[,15jdCSB+869c(LY'Q#@'5M*NHrbHa@
GGl`$H1HrAeB2Z#p2DjiN3Y$6pF@T,*`l9JUNi#XCBG!H@6I$XH1`(b*PC1h1NlE
Kq1D'(9GIAi358mk6pq9FP&QMfk(@9KCeS-[Qq4ICR(,Rq'VVE(Xml(*,`r2,fhM
eV`2EY$(%-Xk$pYYNPQbdNNV"A$IEqp95e9VX8$R9iCZQIi9FeZrlFPP`j"e2J!4
PJVp@Yh4XQ%JZA'@ZqHUYYT3q+0J@'NQSB,33%I"R'KKrUcG8eBY"TEiUY')l&"e
6rFi1id[[T5l!XhN*Y(E%0CD2&9M%j`81!QU%fC!!T+)c8G$Ylb[IA$3DV%%*dcC
)4f6CPj18RKd(,+qF&RkkT!UjYf1%#Y`EF4-dq1+(V#LKYe`jI8aj4QbK-p#Y)b'
'XJipeG@T`(ZN`-VF!f--YHed(1-*YNljqeE!1Xeh&b1jPIbbN`h@DLCHkCRDpZi
9pIL8f9,j[QcEbRV&ebIIC0iLX!cr)m'#MC+h[Ip(Vr#GeArEL)9q#h,I*(PqE6I
AUji!VZ*$l,0h98k1H--#HX-%Er2c*U*U01DTck"I(S5+K2P(!YCAc!!QP0N'J[D
+&8%H1@9Q[HR0GFVc0!mNJ5JEEYb)Saem+T!!A(p3S%hJ43,TBYAQF@"@QXB54mc
N,"S+%KcJ3H@6lj1!jjqcq82Ahq5,L6dZpPrLYaqArB'b"&d@F+#e$K9e(QC"J0@
e[Dh9H@GfrJ#Z`2THY`!f(S68QU4H+(`48H1BrA,MdQ9i(r`QiAmI`&leCM8[2qQ
kM*iJaYL%GCle#f4IZjrNf5GT)m0jeDffJ`!(RU#6jCkBC58FX1kkLhIei%8*JV)
N(E6r[EhT&bh3*[j"DAh%H0b$hfQH[+3X,DbJ`8%+3TGEiQJ1Tf'hEcZZk[DkNEZ
'8)i`6dq@ZPIb*1qGECiT5#cG$#RpZdABkcS[FB'Rd+C4QVBQIm'86mLI4!%2NX1
b&c6Pi!b9Tl*NJ"TdCbTT@+Ch#1&+LLjC53hi(k0Y25X&Z3-ikAdQA$9m)$fl,VE
eCGJ6h8XFF!Hj#GF$IEAam!UN*i@(F!Ia48LBiKDeKpa6PFZ&Ei9Caj5Qc4QH2Dm
)rCPMDBG,VLU,L*0J(1$j*J582(G3dkQYD!2@LKb$%Bl0eQ-PSaE&-GLQpY[UUFD
3!0X0r,G5806MXpKc)bjh+crA"c0Fqc*&aRp[Pr``dR5$IleCD8khp4IVk,j1[UR
FXJFU+`MiLEJ2[lNhb-Kaq5(ibJ@i'Tqf*G8#3#+1EJRp)-kY6C%mrHD@`IH*eXe
3"er#A2!+Pqq'8%jFPV,R,DR%dKTFZp,45&ZhXapQ!$[L0SbJa+ZrQkUM&LG[dNl
qi%3CNQ21eqI3K&9N(29T*Z2lP2'"kq@RiCi2C!-1l8,1eL(8Z0+MKXQ,p6A,Eiq
3!-C0JNbQjDq-aa[D9+QVaP94B&P+02mE8B6-hCM@a8FQ$RrcdqZ2fp&DN!!Y-QA
5qjc'%L,&AfdlcC5!A8F1JBcS[J05K@TiV,LD)6)M*#dk",F0`bIe#A4+,,dpI+*
3D@0l4p!64e(AJ&-l*Yb0h95PR5Aa&GZ*m#m[HLL#dM)8SR2G2#5"fb[iDMdRDS%
()eKRYKp$,$,13Mc9G(3%)qCL2(NmpFc#bkZhBD"JIGcra-ZXF&"S'#90&I@DU!%
)+&&2"`"hL%AC-9+R$eL(`K!@&AP5[l+[H,+JIb`6($PfrhFiA@Hm`ddXmPc&QZd
0TZdTSILeH-jGI+5m)(0AjHD9N!$mcQJMRq"i*J66pcB`lpfHpblZRr5H1cXDr%V
9j9CXB(J$-P55bqB94VLDEcG[1rN4Qe1`TE%*QU6$G3b3!#jJ)Z!19I4`H(HRb)*
qNkef1BMY-,l-0JaJDp$D-F")qpqeXU3ebE2939rJZqQ$(c89@!lY'M0kRF#%r`E
m@ZNSqbc!dlqK&bPF#p"iFMZdEm`K5J#&5-#)@c94G"([`&BdfE'IMFjc$E-6mi(
$BkFCmPPVcel(IDh"T,clX(ASYfRLS'rH*TBXI2HiPXNYCM1`X#V@e#Uj5Kj@3h#
ZND+jrl&["Lb!"4UTeNd252SJ5eSMpeF9D4CPR!ikF5k&b[X@A2h3$6[f[UU2"Gh
AL36G2b05afb9SAf[0GXAScT5(AR(5bIhJZ$KCAcKe!fmHQVbUbDMj6XN5[$i&cG
!@hK5@IPKfica@X1ecAQPpEM*KVCUM6%5dE*k4MBNfDFBLpKS$S6%*)IA$*cFS9U
Hp,[L@6EMYMi@me1cZhZ`F6-8RdXI352N6lc4jQ@@mSeQV(FKGk`NX$#(2I(Cc-G
ckX-JXU9kNGX)EQS@'(epB"Z)'"+"`R`NLlCm[8*UP8*l[a8NN!#idU0@kckE$LQ
DI%)%eK#S,-Gl"JEQe88Ze6'je20M&GQSRNl*Kf#G4F89am)cA!F`*mK!@932(cj
`-jZfXSqYP(!0BNpA6Sh6M90EXNF1P*!!Iep&al#mqI9FaaqaDb)JmP+Rr&fq`ql
KhRlrj['@N!$rmI5Ac9L%1Em2f%UE0T-2-hj,b1XPdDK9A&$P6Y+IS96&0613!$!
+rXXbj2GVLK(%%3FQhAN`9(NkiTbCVURmRL*C@06'5Fe4d3,A2IN(ML#Si$Qh8)j
-3Dq46@D-)`R#aAha(XAa("D3!&&iZ0FFH,S$@HeSS3If1+@3!-QBL3+lYB`kGlm
8I3#XVmdjVKamN544VY9M#VLi'!B9)bZjbDlYVBI5$pc,H0m6'*q#T0Kh+B(r88*
0mYU4Lm%1-`RIU(3f`UfPFmb(X%drmB306+2qKNEmrfU(&RK9E6R0)p(-T$B8N4L
C!!VN8-j%UUFUZkUL-*)rS#)b82MSPpf*p,`b)SEM,'KCqDYXlf2j!+,+!je"(b`
X16)6JN#j-8k9TKpUafQ1E24rZk,Efi-q`!6*imMD!b0Fh#6-UA4#r`Bf'+H#)I,
r3Am0UY6VSFGp,#ULFL5MYEihH%I9RI41a(I+6!+Ce9H)K",Xfd!'YE&A'+DmJ0r
[L-KES`&Z&DG%j-YI4k#j*acHEk'!SXT6*iPAke3&*a'YiJi5GBIa#+PH,rRk[L[
S-dUq3ZiXL)+"c0#qS'AIjDJ1c*6a,$1*q5S[h!@1)SFK!1l-HSRrZ,M-RNEpQdF
F2DR&)5B+G5L"!-B#rKZ+icNM&3e(dHjRUXFIMMCaX5[0iU9h'2C4r-hZ#ALj[Jh
kS#"aQ8qJ`&'5c55-jLmeNB`+&&L3!1#(+,$Q)AGTF-dbE9(m"i*a1)el-e,+@bU
QBm@%3K'$T5'*JAjbHecL63,(#5k#A#f)V@&UBiUe"amNT,ViQYNL984mqqiIYC'
FPXS2aqXUGc!58ThT-kpM4a48ZdN$ir[(MT'#kMPU*5LG-A4XZcm,P'f$Y4"[0*!
!'"LP[C9FF%`Ff`MU[1e3UF&U4jq&j5imU2Y4"rq9VVcKH$l[PIV-VQ8jB"3SN!!
U&qmjVKq)`jL!aP0A0a0GmjJ$&4DL,kdr)a-(lN3!HCpH)NYJr4)&YTJI"iSJbJq
1##H#'r'f'j*'%TbiA@4M!F4&rPrS%TP&Y1TDGBXL-k!hdI%Mj&("5b5Xi$PD9IJ
GqE%jfGNXBSFQ3DYkd&4X&`04"%MTBBc,*l8#jR[kXA45$`r@ChPY1Y!'k0mA0J+
LNj`MYGRrNI"5Rp)DPT`!d0(`92R,1,dldV(9F$hTAQ-$d+caRiT($5rk8$,'2C3
LfafZJX6r*c0mpM3ASb,"8IfpTKFUY3i$H,i!SFrCeE2FGAF@kZZA05*rCl&T+k,
i+5QMP-l-(`(-03dZ!QTJBlZ)CCf-,%$83Krc!9VHArp(famS3`q958,dN!$TJ,K
HY+GZaB*9f+3BY988eCY'qA42LC*AJp22j&"J+MXM!(GdGFe)0[6bH2PDPZl"f-c
d@B2lBl![I`[K-U0XSa)E8l%abVh+%NP0,cDAC!DC'[`H-YbUUeK6I!NAIRNH$E0
ihe0T6i2114%V4dSY@k`%aSip"9&#dI,0LjR$Ah"kQFmec"S[E24im*H#d(42pV*
Xp@r3kfBb4AJK-A0E-q'V1%CpCSp(RmqmG5C!e96%Bk&6f+Hik&*F!S1mDhS8j-Q
M!GeTpV!cCSj(4Q6%GIb6"2XT5P`*k*f*bU*E1`5M6DBX`MHY#E`D-mKI&rlLj4-
ZYT1SJd-Vm@TFG8b'3q8lihB*5rM-0j8TR!,1UPZckSLbU"QB0Xb4I,,&A$S0,I4
0*+K9bQp-Ze))pJB2MT!!8Bjp"q4-*rNMAIE+5J$c6mB,r%+MqUR[4Ql2'@@Xq)q
-84Q+iFH`f1P6lmiUQBRMPkmc*hq(I5pjBEleqkTXR#MHQLeK%fl@#(prhlQB5-M
Q'Y4",UMeYaah`P#qIeJEU61YL8GlGRML6BdQkd1rJbdb`T)eA(q&r#1cZ-Bc!XD
ZXAAP!Y8XV2#RY*23S$jjVYR)G-jY&b4ZRPYm3`K6R%caXK4@A5V'UXi$(PX+q&a
aJKK,GaSA818Y4[bFZ1VYA8(*b188HfFfJC'NNI"XVhcp4RBGhQM`U+kc*[5$bU"
apM#`(6[1$K"[,#aP6*Y(#Np(3Mmr'ES+,3c"&a3RpEGqlp'Ll8r81rjQ`kR303X
9ibbB"cKL&,BrL@IVkXT4pTF$f0*i+VqJ,j)5QjZJGQM8'40+&[Xd-CK)f!RAIA[
MEdlDMae19YZ`R&Gl*ShM94QhHL2CAQIY2&*P[pcX+F@fqjZ%`VY$0F`qS9-U`#d
Kim6B885qp,jp',aBJ6),QblTilfd'ErPkL0mYcITDf4UfiKaLMR"QY9I1PqLidf
Mmf$B$E,8Zi)E5@)6HYTHe6eK&243Q$cBrUZkfNiU'[`#fM2"#Kr,dC+jqC!!fP#
82QLS3lH4X*ZjqREADKe3cbmG6H[VhqUDID)30S41iX,FE%lNX5TCV(G%4G-T[NY
8+j6@h[j(#5m-dYDLe9jelJ0"SlFhPIrHRN[@mjqcd*fkbQAQaR046$m*rL%GIR&
r))`GQPl8(PXH-PG&#M1c`'IQX@Nqa9N-eXaEi8H#8YTXi&GLaY8-$aQZ"5hcYmE
@J%FGcQ)rZMC&RUM(N5S((XbieI13!"NR%VUpG88irEe+FYmKP1,84I-b"fa[EA4
Z6ANq4mEmpeHk(-m+6BhI9mHh)FA42LGEZM03ZH["U99(S5Vq,@lqNa0C91"4+5N
YV%e0QQf5dlFYX8YcGr[`r'16cRIk`p8N!p8RpF85,NKhIj&4-FFNRHK*L`1f#kG
dQIP5pX0$#Qel&'P1CYYM!U4rU9!@N!#0RkbD%h*$U2Y1pa26,*[GlT`i%%m8T8m
LrdPKeA9i@mGL)$bkYe'R$6Sk@c')br8,#*qMjEPUN4Ea2Kdb1EchpSdlm-T5TZH
@E+(@qK5reFM'@Q3H9ZH`qG*i1f`Gp`i1Ka$hKlA0Ql#!SKY$D@-SUY*#$DiR5rH
(JLdfdrLlK%5#&L5dAZU([G2Bbp(ZF&1TA(+rVq@a2[Br@'@-,a[+mLG3p8*YAla
*hV"(aRiGJ2C`+DR["S6rCH-M-eX'qk-%j8(PZXLdkZU6DSl4,$3[hbGTaN),-JG
2(41j9[cXCUCk1Edi!,SZc!Y25"f1kD1MFTmXZ!bAq`Bpd-GCD8(,6MDcjTbLhD1
l"Vk+KCM,hUKdBFa9rQ#@Jj@mmEEhl!iGkJD(hFaPUA8paB&)L,lehdKKqZ!p#m&
%e(@@--k1JXG)*ba(&bP'!&$4N!$&S'IG%m$`JkVBiBTq3qqeHKaH89)`VLMVTNJ
lR2BT1602faL!I![E[A`2#Tk%Phc!8!aH'F--DT1p-'KQ2hpdl,a*MaiS"ZMV,"S
G!i,bHmidD@[(Zf0[l3b+r*XY'HTQ2@VepHfU2RFCC6KBiN2X$l*qbc!mjer5`kM
0MZB2"rHbp@B,p2`JS`5d6D0dNBN`N@8%KV6#9'4%Bl9*fq'p35-&96a$$I'b3TR
6hV+#d2EP(3QeZ6a!Kai4Ci`,$e1B69BdBDc'iXGrpRDGh[Y'48G,+,5A83AQTlJ
D&Y8Brea8Hb0"kI3)Sp8EEmYc&(p@h`G+m-KDPVLIDHB"(dZ%#BP0CRKT*d#6Mk4
FZUND0Qh2*CAK28+*,)pl+Glr3IJi%a[ZiAiGTQ&Qr$Ye-rH()!+98%J9Yhp+AcF
I%8&fA@B0i5&YAHK*`1[-5bCZ68pZ%GTFG`hkE1fV+ajUapjSVfhbC'aRpA0'ciE
2H"0Aj-pj#,&@h(TeaXDFV`#%`SfCF5qBMTeIVfb@%#)j)+KjrMDlkVe0FjYJ%hD
e6AGm'KR"HM2kQF53!$K9Pa5`N!#cD*0j9G,'D-fAX!AqR!jLbjN1543MF!'1'Um
iYDc"fMT5ISh2X$@fif2"b!1"eAHiFULpD'`jMH0h(1Y'&c56&e98KcPNDe4AC)q
ZZ"FqXdX'-#r3F8YS0#A85MA3D$ejfJFbG(Q%rH4mm,@55X((hc)MaH`j1Zc@hjH
4dhEPK@q!VB26!"0j[+,Ya%%(`KCS#CDCVdfN15qjd6V%!abmcbNHbHL2%N6fb*d
MU!j`Yrih&ekbI&rM!$5c6*CrJ2&5#Q6DPYL6)'bcGeHI2f(-X@3"3qCpM4hV3NB
GZ*c2'5D1eViq(CeiGMi,(m!E-jrEjMG9-HCVGK3%e!ifl4[hj+%69"YQ[2iAYM'
&0q[`1m2IlZfI##4dI0ic26*FF-SV@FLjCGSH`N3elpjiY$i&K0he**Kfkm`@baM
[)IYGKKUL(C!!rV(#(V!E*A-FlDd$-fU8,fEpUihi8N9pleN4m9B-KA94QPF1+LX
0elXlULrS!PPFU8QiZ%a8X(hNe)HR1[pp(-F*(42D1-DYjcLq%R4D(pCmD80G3ji
55i(@1Q1"jMFi0CXT%1%BFMEpaKjJ0cFp#M%L&PQ6jBD&EUbkFrB1jbVLmc1NS$b
IR%qaVdFeYUU+C*TZ,'C98LJKRI$%Y,M0Ur%fA[()EcLSMX)FK'34$&q(CU-USD#
e+Q'(P66M$4*E#XiL&c,iT,6q@@J4A!F[!aek0@Cq#`AHPlh2df!K9+b'KSkdU(I
KAAZf*p-hL!RY"S@mb'28@2CkN!#meHICdUGNDeRa9)DrAN$V'+%8a3fKN[*pU(Q
PPeUj(#NNf#LKp[[$qISVUVA[c`Djpp1MQ5@`5TF!f)%&B,HCJf"ZC+L%f-"0)6*
Tia@$2rI8Ria#A,XRh$pR#k'KlZ4qkF3c"[$-(1T#YMI4[4$0d(e0KTKb[f'C5k0
b9jYSZZBqkX[+elJ#UV+&-Z(*0'0#T%1GhKaJ!62jbNDp&i$0r20%E&Yb"j2V46K
ep2Z[3F6TI#q-6ae48#[rMA8R8@S9r1helT-c9K+lpUl-iCUBF,%+4K5K3,bCqQr
QlITJhmcj",6*e3qp2RqpVIGEHHk@(l"LVL&h69p0-RSQa+"BTAYE-i+*5M&85Y$
++K+HjrVCiSEFSmJ-f@Q4SG-F8P4!S9P*eU!b9)qL*m2lMHVm5+%GQk0-iI#HGR8
df"hc'IQ@+aR5(GJe2&'6p`'5m&%@B%p+0X2RLKZ%5KTZViJdprDBH%'*M+A6kSK
#)lr'E#1MDl9Zja-A#20V)fpIE+rcU'KeP+pEP[D%,N[$@D[Sqa,QFNBV-@PQa+d
rMjdLP&AQapk[SiY'8j!!`66Q'l84pEBkc`MHc'hLL4dBA*rSc1EJ5X`1c5ekSbL
6Zr$TNcS0cjKPM,"EqQ,9#TY2$r2H%N#DXGP((0SISZ"(82V6Q6HiHUl8#1dC#20
ZXd9S`Y53!$5KHpcQ0Sf2PDY$lLU4*NSB*Rd+p*!!HTfY%EGYmJLQ3'Ah4-J)Y-H
h6HJF6C51Q6aNqbI3Je%&l0lmlGlRmJ'*(rPq*Nmrk3[XjdDB@F(bSf)IN!$kSUR
%C81[fch*qZRHcm4,bPQAr1f0'P*2A09QRB3%AEBaV!LCU2ch4Q,NmiKAGmTE0f-
#4aS%J*!!T#FShS@C(6epB2C(b0,RPKPC'6SmqE0Z#R22'C5m8cF4DN09A$IS-ca
XQA2J("m-q#Q2*d8N),dYq0eqk85M`hh$N[EQ0D6qj6SRJhZX38H3!,6A4@23)l5
hjL[V4)0IrjN+LN1J5*0r3XJ%q9PF'EYTNP4ci-SjLR[4Y*PMJ'k'a5*Y&pm4@Tm
LHR-Lp(kSR9TmhI)q%%pZNYmk((V20!Gm#m[bFd#IqbpfV%XE3'!EPJfjDa[*Fa[
b0X[b-Fb")ZMl`MT`#33LEmDi,2bQY%)3'X`#h`R$VlE"6-UIDYY#XI5MN!$H4aM
q#L'a4MjKqShN(GNaG4lj`h#T(l*E&jTkiFL"N!$3c9aDUkFG[c,c[pJEaiDMS[M
M`DK`80j8$`&MUi,iq,a46(!IfNjXA%FZIm)T-(TIaNplIU6-dM`qA%Bj21$p%hc
bHPB`a1eL+YSV%%EeIbQ[D+Ta@&bYENE1iIpR902*Ujb[F-,h$VHV!JSR,#VPdjl
Rrje2Q*)AU80L[1i%1Z6%J!58J&++UN,Z4+3)i!FfrXr#$Cr`ImGCT*ECKKM--aY
%!`eM)h[EGTC%ckTYdS"D1b+Z@G2UFQk(U8HCd$GckGr30%HMNZ'A-RIM4V'64Uk
[lHDeSYEj"10jekda,UUCN9%#6')0(c8D8'UdX6E`MEX)[3)%k`(VPUYdYTQi*H5
PjkX,Z-i2mJr`jb)'Ia#D%f@fA)U%1G1@q&k6J2PD59LNNa#rK(8"3kQ%$dS@A0D
Fl)Z6Tp1c[-b[f34qp00$Ca@PAkJ[")iRH@"k+8p*9k--9$9dprpceM0&@1[!90e
VU))kf@BCL)@((*5dRi-'Z3K"rGhm&[(LVm#*323&3QCB3FYGhr#6*CpKr2MZK0`
b,UZR#iZAURA!mjjKiAq3!1H+3HbYR#'MZi!NA'R,5c[l-LU'6h`ZC*!!aTlZN!#
+("U8Bl#mQ!I4f8X`hf23EQEVlIAM%Mbi&AK-KLC@DhAD`BqC&ZGDHq!PF3Y(m2%
N4hmGLAi)1(C&0HVVT%bIA86MmQr)!#,`L"VMX*4ajD&-`*Z%hVR@&K['@%+U)%1
4a@Z!NpZ,1dYM[TiC!'HG'd-kep'UrF6"Adb*&@2)Ak2-%G,@4p0hif@!C+*ELji
afdZH1XSV341$fl+UAM%M$9PSfK@5&E8D65!pK@[*cCV5UrDffG%NR30H84[LM`U
kcJhABRpmLIqJ8LX)2dj-ApPp[6ccJ[e)KJ9E-a#'AGNjM5J4a%K+UUCkX@@V5p[
drce-D+Q0j-0bYd3P3(Sm[%e%4#aU,hQYck)8HS3%+%8VPM&GBDkC)p-bVJ65Q-H
63KL-1XZ-p)YSVpl4rB8#T1j0&4+,pUbA!-jpH&+q@IA,eq8'QmPdQ1&!`j0MCE0
UlTH,mr-Jq#l&*T1#$HCKc(El-P2kVU+jEZfAG%4!ANK$l4LGJMljNU"8Qi&8qf5
#JKb)YdM)MZId6i@-&)`IJMUh5!Nk+KZ-dX9Gk)T99hQSac8c9eG16"qLJGpT",V
E*V@#JT%85-GEBBKqPG3YfJ2P%c9PEld"UQ9#2lMlr-*%@#Up@6(B&CIiKc5)[6M
PdFidi[2GQc'h3lIGdTFJGch@E-PkK1Ne90pqaI2)KP5@d-Vpc)cXA))`e64Q3Z2
Jb3c@"#d4fd2k&#iQphD1JKR`%2YcAi,FI[HDlF*LU`k1'mVKi,Ch$k'[(PIP(Vd
88UV2PhXAArrpD1fH!$"1#ATSl@P1S1cVGYD!'4hVKL0m&#X0C4J,j1mC*N`!$Jb
`XCemZ0[j-U[@'(2`,DXV&K$9[41#aFC`T%kZ9l"FK)RU'l40hbVRjR6EQLIRmQB
eeh@)J3%QqfPC3[3E2kNkmPkCYTE*()b!Vh')Bm((h5U0Bdh-GmUTf`#EJ,3ZN!$
#ASSqj@$CZZET0kLH1qPA&8-#4bDU[&jrf44B`Ci6V3#U0e,+e$Rpa4S#I$8GpFm
-Vf-SX4KDB0FX-f-0Nj!!hRpJPhVj(U*%Zb2$AUJ[QqlEp#+h2hPRK%-CDF3[QGI
)"G0HE[1bqB"3cP#NGS,eSSP`#(B0p-TGRhhAGY#!*cS5R8[LI$m%2K[NIaZb$)*
)aTPXdI'H&PT0*Np(TENV+,ZjaRDC(T4kUMMcYD#l-d%9C"ah+HRp'"J&AihfRB[
4l%D4A(!`43qQD8[`-USIIE%qLfJ-,eFrF%S'DaD"THJ`QIM-%r+H3m8A`I[6[JS
D8*'0@j&(!ZKED&f0*+eGRUJG9UqbpU(QVf5L[0Ypj,T($Q`Yp0ED'J4"EG9F8'm
AcH$$VkX0L+-U3i$9GLMe$HDL3L6$RNAhR15K$G8BdD)@p-1BFAR)H9kQ4bi)ZX)
5UZe-kdKlGKUAS#UmS1,#%#Cm0J!meIr!%-AJUZDK8@'Cr"$`9SSi#3-@m*R3UUh
fbdXrfmdr4$1GNqRaFfRdF5ll3X),emkaBXlaG0B8SXHjrcXle6a$kIT$#+ihLhE
P!I,LV*)!ZA+F4LFS6L6&)HT+f0X&6rBJCD,I6TAA#RG&k-R'`adDqZP-$!$aJ)d
hEDq#I&qRUmUZ+qD``4dJm"ja"XH2qqf2hS@J5Y9mEBA1B6d,DLkcc$IQ6#BqYJV
%9J5#AIQMhIDT`jd4fK-)@9HFF"6DbpKk3#DLU2J*V5(SQ3m,I45G0'BjG2Ym%2!
pGQX6Z+eV)5@Daa$-FhI2Fp&5@1pJ4)M6$(,X4`ND@`bFZ!2aXN*ji059Q@UFDB8
6A9GZaV-Rf0`2Zlrc#'-'2N,DBTd8&TIm,XHc0%kAI9Eli6Bfk0,U10D3!%qKNAh
N(1rNbHhq`QXJ#UMf8jSJ`Q,LY"A'B)9S#B2i!Q&'b"GQ`A,Q`,`Mq8eiGM*-0Nr
6aPD,aUiZHT%'VkjQK1!f06'Eb$i!ASGl3PSTqc*'5+S!4ZblY4b-JmBa3md(MiC
"peAYiQ,jJr6L4ZT0+0ifE8*kri"$$,1Zm-VS``kB"QmXC6&S&(FmaG0!Gb(GGBh
XJ5k0&e%'!iGFK"S1[cMjd&4@SelMh,R"fU95L'fqkC!!e4E3(8qfAD%3Y,e&Pe@
CEhKlfIR!%d#JFhZqD'IS)H@,4FHC,QMZVXDXd)Uh0CM6c1YF$H!Jk"'qp!X&SLY
4e3X'2[3VNB$R``@#&NUaacBIR6@b'MMS#IKkL@Xc4'4raR0(42T8PTYc@1J"bVJ
L`j&66p-m8l+6KZiaarI*P,#JS$eR!Ec54Nir*+FSKFif3YRT,QmpQ+)piZKR"FG
q*r#`Z',&%DjN4K$Yrh!-lhmmbk5ZHa&`3,(EiEbqc24ZjXjPGm4Pl0jB+DVM-8e
da)`mrTXNJACY(A+bT$*9q$8Gd31E+5qRM@aU,8NfR@S!SfI#E3C8-30Z)fa+&Am
2@pIUm9D0"KV&!E5*Yf)f!XH6$)-D-,PF5kfIYT@@l)leb!A(adePGC@ekU,5Hrl
0c!G0KBJ6+1Z!"pY`4p8q66qi[`CSRC%2F)$k4lc3G'p[3L#-Elb`G,J5Lddr'dQ
4DPrUKc#"cA3[C1hqe!ficb@CEbja-IU)4R9q(Hq@,65%0EI(NfLl%r4#$akTJJ@
VJA[-XS2QXS[1+hPS"VJcJb!'&%hMM%8(%P2QD2Be&cGCk"4Si"BG#3qMCD6@AFE
kbCj33-6c[VY5+,6JFH`Cf#cddXNj&H(Q(+Jr2BRlZPfri@S2EaLc8)BpY%D`MCD
lmG!65)f5U3HUrBd2'em,jCL"Yi#bU8D3!,+T9T!!qkNN&F%aZSaG&e4,'mkCiT!
!@rbE$HL$RrmCIl-fM8U(G"ach$+T[RS@+X9C*4Fa3N%[D%MYC!ZrLa&fN3qrmi*
,-R!U(f5C$MJZ,d%f(E8$"3)B*ja&%li%C66q3f"Y*JlJiNidR'6,[%)`Eep[TTY
iV[8NJ#)$aDmNh`Zq*'3r)D(@5ckMk1iE(qK0hR0#h9V8M9Ae1)MalYlm!*,ASa!
4YEBV4*&*#DCF,#)1f-[mA(8$CBF1iFaN#f#H%-9eHJ380D!F"&!cjK36eF'[$r2
,bdcXP+DSh&lK#pNcAa$LBG2kL(B0q22Ve2ad''30+NK5r(kGmqE+"%bhL9ckhCf
eE1YBDXA$@T++3pF#Y,JVIaA421UM*[QUqf3alZl"9JCqfUCf239#R-(EjDM(j2N
I$Eek+[p2NG442Ec@FA)8(,-CQ3'rll8pI`DYQVKXrL'+64d5B*QN%[Gl$3`cJ(D
U(4jN22-)`*J*)q%TpC0S[6JP&eRXkAZjMe0ASBrA+HffP(1Nj'(CBm@HALQVY@e
95J-"m*Ui4"-Tb0((aeV6Y$h21#6p'FEj'ZkeK)j"I9m"-#a)P61N2rEMM!)Rp5*
dQF#MmHdfNC9V9NM%i&HK$HEh)jj4YSBT*!Zm3(S[8%KHH8DP1%PE8r1lkZZ)HQf
l1F9@GYS5Re)QM#Kq&U$,*,kITYX1@#JemYX$$"42m8r[p-r91'kjMJXUhZTM8-M
DGNNq%KHd-A6SG9pG+L29!Z[rCT(+*L3+r+qijii&d[XN2J,&QEp6449q56fH22S
bpfA+G1[#ie$1Y%6HD31S[r6LQh!rV6)ZJ+8'k-r8p*[0SETTTc(SN!$SfZUa3T%
LPQ,[f@Y#d+9QpHS"V+[$TI)r@&d)6ZQ5PfFpJF)0Q6Y*i[-Lf`P9&&`#8e+YGpf
K*j9P-T5'jJED#6a[hj8qGQCT0l%`5lVABV`3$r85Q%bZ3`#Br`K6--i-LYHUp#G
6U$M05Sf%4ImIVGY2#!GIraD-dDbI0$['ZY0VRND-lR-Q1Fh@J2K+D9#pCZ*f"#S
UlN++mUU&bMlU!KqBAjX0-lKiYQjKKH'f)l252,3Q@FLJ%[U-C(UGIQfVX99()r!
UDHGf)@h4DP9PCAE'lI`MIU$8RRm,cif0'QmBcm6TmUP`HPr`B1NY@VS)K*%AqlD
GUc@0mPY#IaRNQEZcFfkYD28ij!ZlASV`)-ER"Ek[L`cVrdTQ2pFCP(1V$iTEBm!
ma!!MVkS"2KCf10T-GDeNak$rB9$0ZPGc2YJAIr%Ij*HR*d[CS#LP8S!8VDadFEk
9!bf&RF61(bNYqdHN2MCdN!"Zac4IYbR4P)bePb#C+GNM8`P4hl9@9Hl@,GR!#RF
3*'R!Ii1TL9#rA*b"DA$c$-RrUTJM(pm)9D)N"BfkC'RBdGQLHGN55Y*UDJ#hk!J
)[,$19bC%Q+$'fRS-RKkK1k)Ma!qJJ6[#R)D%FJVTYTk"0c`5XmE,k,%N1e1&qpQ
A2XA9EpRXr%PDP"H9UD(+VXZX&8j*SU[@CBYjJHk))1ek80Y0Y`*@XeJa2H$"1%5
hbS!e"+1iKQ"fCJRAN[2b$9k9B!VlY"jIm*Tq&ki%KTkkf*A,-CGY+4C,+cE)@EL
JY1A`Qkk`J"q1laPMXbbBEd(343$22)'IlZESNmhYF"-k@fZ3!+,eBm-Kmf8fMIH
([`a1NH@l2`$l'-qkfPa&i$a)f-Nf(&a#`!#6$*``lkNeS*c*krjqf+F#b,FHjZe
Q`!ac9k#9!lMd&Y0CqM8&S!Dj[XDlH%ciNiD)9!pG06YQ!`+d#5J"N!#R&!SP"Sk
`Ap4l!+r39k@B&p4rrF8U)r0*+dEe1)hT1fBT358EK+*D`2-rGXIaTl8YF'RRm3E
D[pNT9XD4%R)8K!A48VUZ+`)eX'%Dhl'YR4)f6V[D"'[R'bj"i'JGf#[S14&@3ic
Ka`SAijGfBD4&05QjV#Ril@lpSY0)5LFI,%B2XS8S"5%8%dXK`H8`#j4-%EfAMdc
!rI3b#9GrQ$JU1a(Vp@Q-aa'U(dM(A*[(#Q*0I5#Rk6hr)-hXaYT1ad$ld`i[+V*
-kCFj%j0%'XFq[5KS[Aqrl*HF&4%TGk2Rme)XBlhM-#h,fY8cD4YGf2MRYkK'!VU
!'jepS`@ZMT&-%6Qp'Y8U3kF"KUT#2C+IIi3V2CISJ)Si'IY@'+fRR+DN'r1AMGQ
JV8B2"JfCJY1rGTc&!G-A-#B[AKerKHk8QqcZ5)AY'm+Thd`9U4jr&!(3mHfI)$D
ZmqppVU[4PjGp(eS3U9"0)$3F@$62X5Mb3Mmejj!!`a2NMcDZ'"a)EJ99&B8)J99
(KI%0c5L*DrHjVV0e1dF'J)U8aqSVpf"j(Lja)[fZ01,i)p9l@(DDaDdlb3M+E!r
U#8M465rkTdkClbGL$49YL)Y%Qbm8Hd-EqNfSK!"e635Ap&pHGbJLA6%U,9ZYXPk
B,RFVj*Bp#lSh)l%,R,eL0cZlB'1rZZaMmi4d6dK#Y''Gm9'Z'Dj)cb`QX$M8Vme
kNb#q2BSG#mDV48m$CdD#Uj6J++80Jb015pX(Npk(%818)l4+VDcP6Sl4Md0XHT!
!0S1bQMpb8!6f5IblhETmrUFY8+HAq[k6Me#dm'E$1GHYLBfKirb8@6TQLl!+$jX
#BS%AGI9eYFN!!ESU119`$"GMEZ8@`SXq9m4f-UDQrkD[5HE8(YFrr'$2fc9qj-i
#e'A`jmGSUKiS(G`"1k-d"YL+q0P&RHk9&G`Pep4fHUec1D)1E(CZhrXH'DC$iXQ
5(UL,Q#M&eA@0I*)UAM%iLTfFN[#6bQ03&aQ44l9`rXlJL!525pZU-U,dEcQc%`9
5SmeiZP"R"pHhEV-EYPKCjVCVcd@TYQ8rpdU1UHGLY%hfbFKc&85K6YFFmRVLiAI
FD-+)1aiiA6kMQ!L-'Q&SpKj9!8-4I!LK58HDUPLB0d9)eGBBE*1-*j,iQSle*D0
PkR"Adj8J"Tl)kh1@YGk9,#'kQH%mjA4ejJ!KC9'-VCceHR@cF9mdd-eFR-0!-,+
k"EB8)J94d#+a$,klYUb'%3BYqaQZBS%pX)B@84-*NEVMb)HGR9K[&(2XeU"P2&l
1G'iVm[0h-4`b"-&*Yl-9cp@$lp%80e9mF)+K5&XY["Dp&Qb!m-TYLqfRPB49Cke
,@'r@BEQ)XDj"SH)YdD3Ef`Cp6*'!Y0kNfC)d#K2rJS*lF"S*T(J4[MqN'EkC[MH
Y2l94U63SMAck8`dLprG*ak5h)eqGTZY"me&6J$8Gqp9NTPfR(EV@QBXk[9i9Yp9
1GG##,ZlpkAXAIcD[5Zk,Z!5cEZh(cpMmTdjrbc53!,PjQ,C&P9(F`*kDJ%[[ErL
C4929AQr3M5+Mh0DJjRCdFqcBkR,N8M3FU2(!(JA(DFTSAfqVK2)cjGLjPl#mlL-
hUF![1qIjN!#qAk[T2J+jf1mj&dV`JihRfKBG9mN[K4,ReNJacaY0P%Hp5i0PpFQ
Zj8d4(HYNeJQmTBf)cZUQi9c[GL,Qh)dc6lhX&%#hT4E'-)B'%-[[ZY9q4mpbT2@
(`)2"6+28$&52bQj(pZLmab1fTd-1heIJU`BkX4p%h9aE8[jm`dCaHZXSir&4SLJ
JbmY*+6@9cVk%DQk&9D2+,!b&RemeDi8-S'pV%BT45Zq3!+aZAQj&XQ2CR1qNGZH
06l%8HZ@!R'Q)MQI3D)C$L6mQMm!)9cRkDGYUC9K#0I0@`1RTm85BlMr$aL*$'pD
@f(,'$6fJ+dh)[QLBZ&L@klAV0&b,p(E5S*!![k&e$$-%Zj*j4d5R+#j0kqGf4Z2
hMRDIFmJa*FD)+GP0Ilpp4lUfFKPJJ`AJ#BIF(KQ8H[Z&GKQ"0X&AIli6TDIUj!6
j-r'BXUiiAeI%NDE2,keM#63#ZjEbKFE!im1JP&eEp`MS,a8c#)'VEk&L(%RL3Ql
pUXBl6%5aJX5L)ml9hYL6jVaA*9+c#UPcI#JH01GGY&D!ZYmkrHrR0``k'9U$lSI
G02ehM0J*aYa8keEQ(T!!@F4c``Ieal-L*%r4h'@&'mM-LmID"ZcS9(X)rpI-aMr
!)ZeI"3UiB8h3fEU`a4B1K3JKVF8pQm1@[[VSq,+&$dN6SmmS1cNR-9#VqbUBJLp
FQrS%6$)Z12c9E(T!"mq"rh4LI41d4%cAGmpLf1CYcL#KCJ)4F62%P`4PJ[VaDkk
'P8eRUUJppp#%1qH-HereL-TBlj&EjM%Ac+*R%GYV!CTljmG`P3YkDXe0Cp8Q8aP
JM[I4-MGG(KSlrlVKReRF(E9-&QBCI8Ck"hJ8"f#4`p`JK`N-%5pr4j`"-b#f$6"
(pJ-2KLlE)`ilM-@cmCb3!#Bh%dFh*4qqL8@#icq+@lB!9Hih&3eX6l$N4T-)ZL(
),Pl*e'Y+q9qREfmQYf61DB[dCY(k%8#"V[FrMm*bTDdfaDpX'92Y&!N4hL,APle
(29!1USdp'C[cNFCra$GrH2G(V*+BSE*9+6hIQ%@9`@f3!-,GDeEj@%&Vm8#%cH9
Ef$GFYC31f"-CVpB5@d69j8$Pp5b6MfI)m((+Gkl9!lI'D*E4*VJFhr5M+!LT1Di
qqG9+$li&2@0IL1jqe+m%5-kX"-1pFGDP#kkU8Jjq&XX*B`A6U5D9G!Z0SE+e6%K
M!lP-@Bra1HBF38"KPID`i"G0PGLN,+"rh!)+Q`Y#5)P!0aI`S6H#f[ld(C(UXQK
[+Fqd!hkI,%$E%%!8KmP!qa#CkYZX`RkEB91J6l9Eh$PTFd%-qBc1PU,T$r@TLqN
lCk)4,'LiZ&@b`ECRT8fK4[S3@q8qY"a9QSN)Y)*UNq6IT*6hS!m93*[09GL@L6e
U$b4qXGE4qGY90`HB0dC'r'Z4J`H$"-KQhGV4G00G30F[GF)F0KF33G[a5`,rdIk
X[8!3Q3*G[[BXL&"Y(EQrNSijdcDi54bke#$'H!L9kX!aCD`rVGD#)e"aSfFb##V
Y&@q5iLlB'2E1NpIG)r(Q9Zm`6PY,@-F-c5I[c2+!H1)qqDk+9S,jfRRKXa6c8*K
rekhC+4[EjpURQ0I-E9UYL-@L86aR8REKNA'Bk4YdEa$-![UN!("+6m3!JHbMGMN
PBjfJ8Lk4Y5hrBjYP`-GRZI[DICQB&1D8$!GKj)qVlF'@(",#+&T8*2RhRT3KIMU
M-ma5IGdCjj(H6rhPA3%`AkS4'XC,YE&$Z0)#Y%,YV[@-bmMPcQV5r(j`Zh"@0i'
4cKkjCI"a&6S"A%eAj9Q%B-1[AT5JJYG[8)85e0!@cCl9blNhBF6QN6$"f(+qUYB
J*B%iA[d'XS!,Ld[*dEBN856ijELETX+EL0rf2qqFR(CIPGGXiQ9IP9h[)ZIdj-@
&rIa@)r3fYD9"H[d&aC+EZFbf0b$E8DZpCKKiCEYkjV6GPPGilDMEp1F(5UlmH"e
TqrRj-bLca5jQ4hhBa3ZKi4DV6`bbcdrlN!#%I6AF-26%m9Z'D9)UZ+Tjk$jRPrX
%RE-$h9'(ZB,*dBI,2h$cY5PV@Z!K,0,JCjZ[I8"cf11QkkCa!A*4eTm&J4"BM(@
H@C5jV%*A'+mcG5h`*T1@H)8jYqm#`5pe%"!Vl6JfF$i$5jhC#8)VXLTRMYYD5"'
qHHrBl0#'XG3"9ZT$Zj9#R,j(d9NVCZk#[XjqLZch2Rh3UI5$)#ibT"beJ!NRKNl
ShE#2l"ET[*aiPI9JBeb$fVF)PY@"`,UE!Tjf2KV,3Q8Rq-3Uk)&BSmjAXCM,+[%
VD++YL$,NU+C[M%)K8V0cd@YZj)c4B1USN!"eFZahTLpC5`cmTrSpS#VJG6-f'Vi
dP63@lq!DQR2B%0&,@0@G-XjRlLp4-NM"AH+(3"bJ&RrK0p@1I-&@3Q+3!1K0N3-
kp!RBmmK,`66)51X9)hr9459[dmVf$[PUD,,P18&&%)'93CV"@*KFY9E[)pelT"@
dFqYmI-PGlh-MTaMr3(LS-3[i)X!$JlR'lC!!`ZLUCRrS51Ti@X2pf0QAd6E&)bp
+ViLhc+bEE&)aR[S-6lA4M%&J9iF'5i850K1-X[V3-jJIR9dP#1%bH$YkE8E9epM
BX*L('LM"f[@6KBApNK%N`,'$l(iKP3[6U+`*cpJb*T2EI#dSUZIjrYB@Gfi&b9S
$p+#L'lAELJkED2Sqa"bK4,%FpV&c"4qDa*'j!UdE&%B9-fL&LArkQDEedD"XRR`
S`pEb6ql#V8$#)RH@pm'2aG8-2k(Tcqq6R,1)S1,%B'cLNQFpD["Zl`+rfbTZfe(
aI*XFMQ"8[Y$*Z+&f0M&*&EN8hl%P#@Ne4e$(VhQLif-""LFaVHkU6H%0X(ID5,q
h`%39fhr2`a),pe#GCAj-l)@5Ih`IjAN@8b'#bdN*DplaPmN409*8f[36a@I6R2Y
P9L6F'h8+E(KXGClQI"++AM0Um5*50Z&m'1(["F2SQBXk8cH+ljUaaELIXE$8+HK
jQCp(!)[kTCCk#4@%*Q#Fb6*e(qX)'pjj1(Qb3FE`[HV$A8)fl%H$F(m8SihCXqS
3m16fa6ADc+C','13!#p-1rbH)a%$BM,`S-C"jpHVMdIMLGJ31$6-5Eq'mfIFA%3
+mjrSB9%1k#YFY!3aQN2KfXbQ3Y4CP-K-9LiNVJ$Y[VNk,[rY3#I'F6SXcf$D[TR
92Vef#Yp$`Epdk0Zd`XJ#Y*'R%-X`!MV#MZm$'UGdKZIJpbP`CdA9c(4jV9Vp[!+
Z@j2ceXH!TX-'jbe10iRTcKb(I*T1BZNk#V#N38D'B4`8IFSJKlE,R+)Z#D-1SA&
YmSeI`$&i9Z-BLS$6PlPRd-l8)h%-q9P5M6jN%5eZ1bRiE2c4jm8CG%FY!cX`$%$
hSBqS3L,ENDNQ+rk5,e6),4X8mYXjUe3FKh9!UUJ6RjB,30ZGFqQISiqPNeVXVU$
rPGq4j0ek(&%LH)GP#h$brhI"`9L0j&3S%(A&541P@2kY3ii8$IU0+ec`Q&A8Ad6
kQQF+PUL$fDrY3YZiDLY(-'JmMhG$rr3[I#4k))N,q3jEpL2Kc1RfI%C0PpaJ5'L
3!)"P*G&H2H"d5`&+"T0DX2fA(9Tb!b(9Rh1jHC!!c+d"&2U`(j8S##pmKp!rUC(
abV[Jj$c#ZYJYqQeC&4"IKY3IQK2K38M3QJ"@@!PGkZH0")MQ50Ul(3*XT-8S$'B
PHlV#33394UL@-SD%)IR'4Jqd`2ADDk`DR&jA8MlflAJB86PmT+448AB(9Kj$"r*
FbdQFiX4iIcE%5N4PE%[8AqTSVhl&L+FA2FP,JKIk9,Y9*0C1kZ4i&pp,4+ae0GD
bDLXKd)k+')AKbGrNP0e-)E+1+aA3F3pH259k4mmNqcGbM0jhA,j&M`r0e$CbRCN
*F-"D-$aT-))`kGR80k)aYFi0[$IrScmlQeJJ0(56Ek(SXG4ZAIXVC"84*#bC$Rq
QXi2KK5qjlZ9Jf!qAmP$2N!"(kM0`JA"Lk@Y(#EPfUdPQ,Hep!5l3eMcPd[FlrpG
G&-Nd0+Uc#KT,83D4r"(fD4mT0-c(c+45Vh@QdHe"#0J+S2GK[C-Jh,MKIKrF8`E
b&lA@ra4J0-D"EI%HDpmQmA050aH6L4llZT&&8SMrr&#ehUKXlJKK@k`BLaCieYQ
GiLh2B[$'-a[QG6emJ`&GJqm2NrZdJ&`EI@0)C2HSiBrR%qc!mclBZGLD851+QrF
ZpPX)DCka88UUZUDa)T3J)PR1Uq@Ge0M1Y9XA2DV8A%Q(KBLD$@'C2DM-iV-A`#6
)SfjG#dX9@md,25eK"rTbT`,)aY%l&VeF`G%j@jGRI$d+GRVlIerrRKXQU(Xjb"0
qU(am%k[)Q@Y*(&4B`UeJ-Cq"#6Tcb!XS3"$SFbq$@,MEHQYcGeJ$e(Z6!CZ4,$p
(JMD)hThh!eVETCqA41GERjr4cF$++NrH6k@!AA1Q3cFeMA#QRq0!m[9pcM(C$Um
[MIP8(&9JQA$)FX43ZJX"D[VL4#aF@XeA3)mqeYJH`5R4CUlG6"$NPN43G`,*-6D
HJhQ61HMpYM&V1[6*+G%T(P3kkjFUH(I*`b[T[LEc0PTH@SGFKbecTkjVCl9CqKI
SUFKj-`&0keQ2drcVGEh2T9[)MpMk33`[FT`T,FLi'J,!$9Xq!+q+Rbq$H--%Z`V
A+L$(l,l0$L9E@(84d9[G4-6&6$d5MeXcKd,f*4dJ$dVc26h(h*!!BPZP*KGdr$c
6!5Bj2UTMDX`2Jb`F!1+&&-"b98`cbliK[ciA95MXmXNhUh4Z#f3FmZ8-e$%qN!$
8Fc'VjdmJfA`fDA6-YMKBF*cG`@BG(Pe(AYeI*@!qp6XiX5q4-K+#D$VfqCZ3!*)
r("'qBm&G!RR-5[3@P,SH06k2Nh8aD+m#%8C$KHi3,hMSG6TI'E9P-JM*d9EKKCD
&'dLCb&,+Q8hB3M+4XlS86`9pXp3S[BkMZZcMB`1Bj2r6BSpFEj)IRG$R&9RKPj(
'%6PIM,qqfQ$2GGB2GN0Dq1-kI(#!N!!+6)IQb0#-S"XkR[*8JU1MJE,#94jS*1f
2&A-6bka0i"di8Y39j$,Zc-M8hU6C40$6&[e"q@$pf$%DDaM%LYA"Ea!H%K4$G5p
[IaF'+pH*hZTP''fZHMBm`"c@lG,38qL)2(F,@2HkMJ1*d&F2NHSd&"T@Cc'VCVD
8Md#Tm@Tp*r2a%pS6,T!!YbP38(UUmCdcc,S6"F4SjcpIXMqA"jl!EN`[R1q`Tb%
DrX9U0LM3FjhcU@Q8&J)jmAH*'k4B'LX2iL8J46[YIeUZZ"`,cRQSNTdlIi*ck#M
Q-Gk5@[e,feeP&[Ej4"`2#(arR"A[b(qhGqX+5K%44DVH"%Ub(Jpjr`@b&Jil3+P
d(L82Aa0IaPmGdr*&Jmd,5K'`G3@QM[PXYrYp9a(S*@(+1Rd(FiYESDNLcX3RiAB
T59plZ)1IVK(SIUR%IQF,hAH$cF0m%',e)RSNrIa1E5N5l*A-lhL"JB2Gl$jMp)V
-f6Z51&bM14EI*16J"5jrdd6`8Sak(SQfND-ir[YG#6iTD,B&*2[M*-FIp#k[QS)
qViGBDd)X!q5!"1#A%&3,UAbMeLqkUmVl*S#SU!kEV,'MY6-Ql1E[0U1MB$fdP1V
CY%*pR5G36LX[HXk"J2EG+0Z90!0KCNDpfDh!J(,LMqb&I8pc@RQECMH9+MhTr($
10JL!ZC&YT9b-emErk54lKS#'b%lEU$4rM[24LTN$ZTeXaCaX(UA[1`(Fe+Ib%R'
!Kdi'lb"'&&cVpf$EI%a%aUffY!S+CRHQiG&iKe,mSI0$[ANE%`0)IS-p6P$p3Pj
(V-CYr8BRqC0bDLTL,PhS"**krS*8#Erd8X9+4I-(q0NlE0%am6FG6KrGiG9"GGL
Jjm$G-YrFXYf9Jdqj(NSBhRj@CjDMk-"BY4lpaq6DPN)Dj*20F3Y+0)XqZH&*ca)
jI%*Fl[+05KMjCA6!ZJ[-N!!8r'P9,fqdS(M8S,IHaD'8'$[(T0KP@C4I&Y#"!)q
YPq2UPTZZRG'#I(`C9@4!4U5ZBG+THS&J!TT(*m*`D)3mZG4ed(fNDpmVQ8b@60l
VaZBZ4VKT%(I,ce&P,U@HRN$#U2lGI,Yk1eT8XZ6HBQ2[e&XU%8pkbBJ,2PcJIlL
NNh-8%rE&6D@@3,"`U'2854Z9#lLpbET"#e6CQ&"eKcb9eJ[+'*e#B%YD%CP,`X)
mRSf92ZaQLi"$+C!!0pE92'EIQ42#*A1mhcbCp[)%@eGVK@fK$i("@0AfPI9Hm@X
C`SqH3kGV,150TbMKeLKBVD&H42@8BRal+Q#iV&JXA%XPKHTI0R1PB4LKSiVj3(T
`E$6hDQ4XMiV$64E%@i&(fPHKqaBHF0p)XTNBji#Y1r0F"NAUQdhmYPA)KhfCB-$
!,a6ir23%$C+3!-IHPY8lY!(Y`Kc)*@Kf&YDM&TY*bab(mXZTKe2,UBGD%+Pm95Y
h)f*2lkF1EiSE4C2`D828L$5IcF9)r8P!6'9ffbI)`Z8d0VrHa+V8'E,%lC)VHdL
Uc!5%%[$Kql4HLRm@iF$QR0H06pLVdZf&GJ9rZfaHfT4Pf-Lk5m'B5jB,"L$lR@&
GIe@V'hQF`SK5BGD6c!,-H-T&c1p9i@ii9QD#35DXFlkS![SS!FHCk(F&GZhGpV8
@YY955TTCbVdBVp#(`(56h2HemG(kYX'DD-h-!(SMiD,fLBG,Y)c(Mf51Hk4(f(I
@NVBT-,#qpNA-A@aZc+Tf5lTbdi6q$hZG&hB+[1%I'IDb+C6X3[G$R)UDf"4*A5G
NB9j#*PV0FTaSPp$!HqpVVh84jH%-*,Ek3T3r$IL,TQMR[0j%i-l6-#AHjma-Gm9
GCp5V(NIp@Bk#%48CS&k88``$,66VXH5)UeU5"6Y,Y!AlPkc103eZ*-lK*p$d#p4
Kimb5X%U8iA-'c$Ukp$3rk$iIG8[NH#l'd4JP83,&ePi9$6f%4KicY*0PrSd12`q
@Xb[X3mZGlF3LD)kTIa!d@&mZIYRU3$BT0iYK!,h`3K(dK5"k#!*ed!*#9GfPAmH
SCqpCZSNl$-dV'6rRl&%-jL*Id8krF0MP0UlZK@Ei5RY&&BHfHl`Fl-J66KaXa)Y
XdP#&JYmH&)S1!R&b)8URTNTXS,FrGq#I8#X90bJF-D4hj%!FR9h&$$d1r&&4)*D
VVDL1p9@G5fh,1QBa(e(-BjbVSX,N2j(MDUqDEUL9Q4q1T*!!1'FXrq"%(6E$0UE
9XqMMRbbJb`-#SPU!5B(S'!Mi0QId-h$'312N6,)0rB44+Y"-[pbKHIV-r%%064T
J#iEIBTQfQNMll9F8!aK[*I3DaGfF["eN8rHI1`DJLkbTMA2TFlCi*L9QIYT#B1e
ehlBdP-F)YMRbXHakkZZh6G'P@KT["EPl%6J,996%$XeI59IL5mSLU4LHH2YGPR,
QFVQr830-dR+@IAj`IfX8*%)YjT94Z0V,-#pYINF`"H1iV'kJ8PmK(aR&ZjrSCAJ
Jr`TVjcMZX'XC8mp0pdYq,,#G3QNC#F3T0!+Jam#P9GEm!d1DmNq!ZHLKT#Cm'hK
pQE*q(,Ib8BIr%Q#m3#FALB#['ZCiZlD!bC3CBjF1FC`X!eP@6S'q[!TbQ83(CfR
Tp5qiN!"eC++JV"XYN!$51B*b(c1E[LEpqTeVc,,ib#pm&TND@8L0YHq+Id*PY43
ZB"&(&"8r6YkQ0)hVi4&IX(dL'Qa+L'&rX&2L`LCqAJf8JE1dVqI!f4eRqFQPkE"
)IEc$8SB['iAHDH%@NUJ"GL@q#MfSA[Rm-`,B3D2Ar,i&E)-)*C[H)PTkH&VaA+a
lZ*`V@ek%c5,jCHI,K`8llRpp`NA5iL1GANJe[r2!jTr$Z"SPX&L6Zq3*cl,TmaE
AF(Ca46V@Z44Ncp,VZdbEJJQ&Q5L"TrNj[I1N)[5E3kQ(MFiP56cD'YqpU&&NkXV
U#1Y5qSV,TFl-Ci`eb9a!YAFQR8VNPYQal99Lpi2Tc!BLpbPSA''+9cl"#*fIG4"
"I)S)4PLIH$q$%+LX0Zl-@YpKErcj&T369-NQhh`d#bcaBGJqB1Q$GpLD(V[Np9S
S9S4EIARe*SjU,a6&a3L5`18VFNr`)URpV`#&L",kBYFHp5L#-NiJL2SJ4l8j0'"
bYFj25r$jYj6a)eQI)0*$Ah64U0,-9bPZ$BRG"ae@jU0HAZ&adS`I[k8B9#aJGJ%
5SRXhQc'm,aQEE3cf1KCKlNrGJ,'5(425Ice3jMJ#d9+DZc4ZlLeX'YCa58H#p$j
2QrJ)8UCS"j-Xek'i-d+&fGrl"6[BIL@YbU"$J'AUL,J%S1ZVaXL5'9TJ5IR%bTE
EflZ#E,XB"Bb#+1c@1Xka2hc@%0H!`P4$B6(92e-`8QE&k4VrqbE8h6$0jrQC'Ae
(mH*qN!#iqfABD@@9-8iF"eVE'GaZLYc'2qGl"0eK63ZE,(K*U!DPRmRTXVL8CcZ
cL&6SP3XM4lcHbfIZY3Q[BLLhD2[4GmP+`4,eMS*3MSNZ6NE98liZYqPA5-N`0'e
!ESr99dHA-MfDQdZFcGGfhS"9R@C%3D0eVH%)DE&j%C!!VDf2"QDYqL@AEb[,hXP
YI((J6X48!$Z*DlLpAjeJ'H%32p6YE5R,mJ#%rSG`5"1#14FJbBGDa3(lIbB(%+M
9#UPDI,Y2IBN&d-,+D`X-I-A`BTp!C"JT1NfEF%iMB#HB`'`d5kCr(U@U$aX4l1&
&(L0H+5'XBTr!"(d%GbAFblQKT4I9Y[lH&k$Vr8U(NP6Y$*9e,3ciBTqmfclGTYl
V@lc01BV1[I!q`&8EAL(ZEkr4dMHakZ"NB0HX"$K-"%`V8"P-a@iK90[)J*b`9aK
fH'2a0Q#pq`U*(PiDDaKE)$EAS%iMS0+&K`$YQ,a+)p8BR@43)@KUPb[bEh&%@%+
D+q@1DhmARKhD`Y!Q410Gf"2dHT!!!d`KGAB@e-BDUf8Q'N3aDTpeKff+9!+4)h%
8aKHqMP4,3EjhHEJ"Dck9jBaRP2"UJ4"2X&LGH&1Xci,RHX8aPCdZaCGGb@BIL["
*ia#VaF3G[@FDJ'IAMIm!&$AYM5'3!#3jZK%S)F"-q[B(2RA542Q4[@FC18c9)Ni
1Y@*H)0F+#I4GVHMQHbXK'SkMHT!!lMjpl"ALj0JNQ)JFAV[+TMe"UE&VQ@ckGe3
Ge24h2F,XU`&UV+YQKp4NrIR,(ZY#A*Fjrj4k@m5SdCq!59@$MJ0YJQ2EaCZ@'#(
q*3&f#cQi,%Z'*,6PH29`DF,p%#Y!S[kVNi)!"b83rfk(,,`QP$*,b%*Rbm(bJQ!
VJ1-2MhlaBQ1hCN*bU)V3KAcJl+hYN962IX--hG`lUp9Z&bqjNYFJ*L0k`JBlSCQ
f#F[(q5YhB0G%ZbBb%#0Dh&(+r!rm)2r+r[X2Ij5G!BiDC5JJqV+R3Sr'Sd$cpQb
2*h!A3'NSDrK*V"S3BT9G,0NEdN,GjqG#Gd61HGNCbkrJ5Mqe%0R$f%6$8#+G85K
$Fi!+d0e@4,4'DDqN%Pq)@P0+j)+)3c)K51elJ)!q@X@rSNI3,TmSHM@3!1VarF+
@!`G6KIik[RbY#EFe"+-TdKaHfLU(S@pmpGNmPq0"j,JcjpYG$#F1DKQJBhNf@!2
aDdMrRbHGd)k8%cA+piYMTb"DLfYD*j(IU(PjX`M#VJEYZHE2AUUGqFS`UejHf[-
&%2SD)UjleGm3*hK%P'q3!#0@(a8%@%kQl)Tl[U"P+5@DjSB3PJHkD13-[(bC01T
+i4,i*d1(@#`L3((I(I'adKQbaUVQ[m@YFe3(,*bdc+2C(k)0UBSF"j9J$Z&8$-p
fCqS@!p*KI@H$#3eX(-"DH"RLXNem&$"ZeER0XEb5cH[0-j9$bLG#GM+"LV,FTdS
LA8T6"#GfG"8NUB4eL6PdGlP94&T'D#kEU#UrMip[NlpARi#cYEY'e5jMeIM`5K0
Y0LN$`$f`ilXADJZ9(90EJ4Naj13B)BMjeI"SUe'Y@EIXpKQ99"R!a`jqX(FYa$G
(c"0X(eQ6Tl88eN+YHNF9arAjSq"[B'S83l+TP2pA0@NP+&h(CMefd#!dBlp%!hG
)f&B$+8QH`fK(QAkfF+jr1jQRr9#f'ad158V+H!G+Y-LG#K2$JFr4k[d8D+-j2G[
32bEjeM,YC,(lADCeG,mfbA%96DBd[8)N5%XAjQ1pLEGX4rqhFMbR[BIRRCAZLES
8dkijJ-eUA,jXY0PlIeq4[[@cX*bI!X5RP)XaATPfJrfDSddBQ,1RliCihK[3UG#
I!a&K1'cP`)Ki6P-61(P!1K%SVdB+4EBBSUd+D5c`ZKm"'&jIa%*@3'M&66h%KUL
#fp[4#bDXpSr,P)ECrmaA1KXdCDV-5!VAQC[Y2#85plj(&eP-*Yj!Z(bKlCpCDHM
8,9U4S,CLFZ*M2%4Tmc'SpCi-JPZ0-0ZVU+KhH8XZBe&XrFZ"Ycfld'UlZe'2#%V
4Kj(,b!S!dm)hPcLH)MQ26+`6%6$Y%EC'T$IjGZdH,Y2)qb9S#aZr!+Gf4LpZ$2e
kV14AD4a*i@pB[LpikmN3V@,`'$'S#Ujle8qLf!4QIhpja1UiK[+Z)*I8f%aidkl
A%Gd3UKfH)p@cG&DYLVC)k1Sp4&[2jfJpRR3'fQKH*)q`i*6U&-h2'-eL-0dM[IB
X8fCi9&J0)Pm#!2#l"c$qq,e@qc`m(HAJ)R6m%JJUHS6Gm'H*aN!9+F#l0rUG`i#
A'3RB3-a6FZ5NaPXB-heK6&dMS'612IRXL!5#1cGr2ECA`icmY2Lm-,LlG4!al[a
P,acN9-88G)A&b@B94cNYL`&hCj584HD2Hl+$NJp$AdY2rLPYKlUqlKbXIFBb#lG
S3h[lY9lK0j!!IrH5'4L!JjA0B!-`M+fkl@V1e4EN5F0m#RV```km6PThRaZqRRq
XAbUemNVe!QDJ#f,5CN3frU2LFL[-%003D1lpkl3FIm"LmpEGKj0i29Y#fM$I8`@
[@iZlIlabC"LT!Sceq2R&3ei2e[,QlqFQUYN[3ra9@id@JcLpH"eLcmD51hp3ZPZ
%M0k4B34X!8jH+UV6Q+flrriS1)H(YDI`f!V'BUd)D#,SJ0`f2*kJ`+#pbrUjrD$
Mh6Yj9C5*6Rm,S*CCj1*if+DkP[i$#3BM9Id'S*Zp@@BPR1aKP$SU'%aC)jd%J&0
LJTZ,HGrm+D10(P@Er@CNb)m0CCIkL4)@maTV#G!8k!fm9M-@j3d@H3pE)ADj26p
#DBXZajGXAlST5[eAeF23SLjNGM&VZY%!ZNS"-41@aR6lEiM(K*J)ZV(cIPPN6eU
mh0k@pZR!Z9-H8BA1d@CAc%Y)(Hi+hD[EDZeVd3MUc8C,DZUM,bZmpkqe9%)b0U%
M&J@Q+4(M`YNQJ+"hZqeUFd5rr"(Qj35c5U&fK&@DPb'%IipJf%%4N6XaJ+1lli%
m&@L!Hmc+ikle4plI5p2i$IP,pP&[reeI,8`aIPk2DhpX!4JL&aZeE%QerjC(S#4
QiaSNZH-KB+AR6h+hJZ##pVMXi$A"lUERHfk(*Grcb[M0qk6Y$e9Yd-AJdGp$MK2
0YTkRGB[H(NAD,A94kM,j5F!1D&qH*BC$df6*)2d,NQF@#lrT$KmpILILqm2TCVT
B-DA`'IGblb383HEFfJH`jZMHHIj"(6X1f$I0*L5ak6l0leF1j%Jc1Jf[PP*eY-5
IQPABMY-0K0&%1($H[B[*cXEKrkFC1U&D6%U3!*d0YIQe3i1keSNZkD3L*5S[J98
@X63EmrIpG6aIf*89[4YfS2'53EepcL'P62KI'Icd5dPSTk4NP,S-SLE9!2MAd[G
'E8AZVec@D1"lLFkUm1&6i)e$+rrd0+DIB3Ve)Ncr$(*1P[RcfBSNhZhMiUq%YEP
PMI)!9iF)d&(FKaPK+'mD-@p3hqIL5Nr9Z,fBAM--c5-k3$-V6'R9YF$G,[9IX"b
("N&XFlUaK!Kc5Q,jPc@m('%"+SfV&KTK*K$'X[+dqqh!Z%XMR"kdqhdYTJfaTNj
l5FJ"KDdQ[ql5j@d!ha8Ee*G-lEUY6ERPV&CGP2&!l-!BJQ!RJ%Gfk#II`k(5Pd0
LTfKdS4p0H1Ple`k@G#[0d4r@"Ni*c6FI'BK0!'bDGPZ$jaMa@*SF8pi98)'UfZF
50JM6K,af3ANZc,2F4HcI2DUbkB6"'jEJ"Z-q[VViJ#BIk`p`)@+NU5&3kN$RXPM
),elCpacmI9Y2-jpPi($4NUKc6p)C22eSR[DI`Qr2YjGPbP2M#GpL!jIMMR$8"Gk
5mVFP)*VFC(J%Rm#B*H'LCVISH8PbjL11$&6QfCf$afNF,ffm5V(a`J"`,&rp2SC
!95m1K`UPr0Bp+mT%[K'a![&P'pA!1LPQQY2&QVhe2mVkB)V1G5[R*%C&KK#B`6H
@KIHfK-Sf`RQ6`k!IIPKJR*Pff4B-[9(0&K(QbKEI6$-3$E-M2VI%*fqPTjJI5KZ
D8"bG1qXM9hPX&)&+Pcqk#A%G%L%q,6hm9CFCij85#"pc4'kfQ09LIT2$V`l#9U#
4lVB,mSBBVQV(@NbZ5(Xr3GJi6+YR1cmP-[08ac3bheK*FhD"I@G[fY9![QfUc*r
rF[S4BGYFdjVjLX$Ea61FH$ekJ"fcaY@RZPFXPNBmCe1ZPYm'cdhHp6k@i#Bp"Z4
"p#ATpQaTM0MHXcT4VeXc(L%ahYcXalfRJ!)CZKA!+'h4jX'RklENa!-P2,B#S4L
#jLK2kHK(dM3CpNAVh#p!"Qq9L*dHP#$&Ti(2c#H25HPDFMbJAF%L[aQ3!26T@2X
9$hHapb,YTa,L%0fp@)VDrU!Ndd2@B5cmVXeAIm(GQUMVrj8*QPZEZTX6H@*4`d9
BMSP$baZk4GIfI,k-$Vc)8B#aeN,F3IP-D1Z489k-)kEQPLV90-S9M8(+*'Kb*RI
1a4+KHb-25QNVm-"Gm8+h44U)!&)'TP`mDi3"3jEk4'f'qNim)!2V1R+-139&DV+
bYX%lmk6XS0rJ)*Bl$(PF2Mp69@1"XKPiB2r'@LlrV0bc`3DBjYPCirCIaAR+Cm1
H&d0F[e0%%[0H[fKV'8qh+CRB%)DAD,4SlEkj$j@Z21@0XkC+fI&D!,c@jZ[$eX@
eSp`Xf1H`CC!!l)AQFD,pfZcb%f)lk2VHp+f0j9l6S0,@SMF`HI'M[imLZ-eRS3d
9KJd8A!45RJi*djLeT2L8B"MA1rG3jf$N3-CM-kA6Mbc0HK,%qcZfck-DRAMXFX4
Np%*N"LCAD+%b,+J!a+K(A!m5,",+c)+i9C&lSlA[clR+mmbh@+`e(E4DE(9R+dd
5EZCIk3MFDBHf2YNmi$DehVVX6&`*mqCGp$rD1f9`D"l*3iHK+A#H6d5b,4+YUr@
10qI+!LfI#4Sbe3PTJXr82bab%,N`F5!k+-1+PMIc&R`06C-!#a8-NT,"R30(fMT
E)EN#BJCIr24P2UN%0aXSLGk`'rk'FChC"EIKeC1,)N2kXfM4CS0'S!5A*aqU)`d
$eHca-4Uljb18a&%f"d*k%Bj0'qK!)aP1@+I'BpdB5[p&i#kNe"R0+rHfqdFbf'H
VT"L3!!Bf4i30Q3)l(H@)m5A28CmNQP8NVpe0PTT$qQk1JM(Kejb,&jqP`6GGFf'
1Q`LU(4jlNYL(BCXY8qH+jH2"4NpJj,SM#JGP1L*5Sepb9B*R-%mR,)5k,KbS`p!
Q"E3[ka38q"hVe48qR-QPLKC)iNi)d8ARi+mI4RlI3'Cf8hbVQ`)5VqR3F!D,XIr
JImeX"Re@UQ[)!f52kV9*LYGef9l')Y0eT4IEJK$#)P9P(j48F86kh3A&%U1NllA
+%G6`pXH+U'ZTjDLKJ9I'Q%dHa$6c8a`U6%H[#'HLiD8Ud3"9(GEM#Hdd![q@brb
T+#fkVEe(03i+eqd5f$qJ"LIqFDhrUN09rH%GYcPjR$)VHBHMH92%+aZ8fZJRFTc
V&ADm0F(r`rjFYkk@JMR0di2RYGVIl6T*EBb8Y)#cRVPEV-A5j1Ud`L%+LABQCdr
IR-V&EEL8h@4e$dIak28b%a%jCc$qA-X0BMS)[2I6YbI3!T!!&N`SD-VDk(lKdbV
QSEA45d['!)a#0Hb4A1&,1&VQFD1KeCa%@A31524PG%ZTdk"6#2Ab%q["),4HfFp
AeAeHUl[)p0hi0XXDIQ3,@*IArM%h,PlKb#`#aLL@&jQi9p+,G94Tc)2&('CaKSL
(fAAmjKl2IeYEFY$5!4hqdFI*K4CKS(-Z5lJYiVR)I59VeZlNa+'RS[i@R%iEcaX
A2UQ!#li[2KmK!Cr5C6S,jp)GJV+HmY5GGe$iX&j[Z+SJ6m38-Q[NAVIL*YFide`
p8U$,5DmFG5S"[5pe1"rabhI`YD,XNP@bL)X@R!Q)H-iGMJZ"'Ti3!@PBE3ejAJL
cCVY4G`a(*P9ZJ5!-2IZX(qF[h(IKh-H[V1'k6qr@SK4AEkm-TN1G36C"T"3$BYI
Ld-',)V4CSi"FZYTS&k)"+Vq$SNN3-4T1U-#XCk4$ENPp$iDje&SDdA'FkNmbira
%%ab9C+pbV#IGH4hbMUZicIJCSIm$5b8L'UiIG&Bb+8-!$V%9@-E"3@MTf4FE+`h
m9pTIIPK45im834pp-p%I2-Vdc-!5[LK,GJBd(3c5hB"d#H0[2UaJ150K(%A``D0
JT&2!(r4iTEm[V+M&d$,le[9"f'ERASPN085ih5kU1M)bSQ*'fFIA3$h#N@Ym)3i
(YMLJK2Uf"#05H6AZFSC6+%NTL2Qj51a"Fb@-1'JL5*VFa#U[9%T,eS@*UrJGZTR
8MmKq(&mbkPr1@e%heD*(,-+SKYe+Bk-,NP2m0E08P2)T*hIl`YS&BZ%0bI3eJ!f
d([qCHTjGX4JVq#0N+CHP2"-pE1-Lbe,h&SY@Rk`lS5`-c322V$YMH$XGL3HhZAJ
Nkjm9'e4I0h"ERdJaJf[`0%)qr*a9B"V1()lBM[mhmd#2YMkJa2-2%$682@pT,Rk
6"brZb#UTDaSa-A`GXqGU6D-,0U[fLUR5DLf,8h@I-T0J@d$5SQ*#A'X2#Jaj6ai
S(`J,*T3%i9JlRqjd(8-@%[1ZVKQ8lB'Rr+6pmDKDb'UUq+p,0ZGaqNXT0SI92&"
'%NVr,c3M@)mCJBcKqiUIYZ*qE!Y9P'6D5G-'jF2pLK'ZJU6c5ba#N46ePEdYj[R
IbER-*mjdMcEM5V45($j6Z4V2*f@HVD@'8iE**)pI)QU8SEd-*KlijbBFSJ-rBPp
TYAFIc(!99UbDND3"SX%-QkfIU*e9dI0X)HJ+B%HFFVd"*cTA'ccjAm$GdBS"f,(
666H**$Jqe$,%Z3H@*C4$rM`DX0G#'5HB6YlJTK(VSbrJm`r"dNrELkH+Z3qRLUD
,J4N*!rFPN996IGiPcHVLpYZkS9+0+Ze`@3"ZedUUkaH!'bS+Phf0I'[l"m1pmrk
p@ITBHQC+'+C%E0RhXTIecZRhP"T,Z$ajP@IUdH4!0fV&epKF[kNb"PkMQJ&)AkJ
r4i[5LJk4LqL"%[XXN`B!jjpJ+#dA[L*'CdE-BEXJc+)59%[h",lf"kDH0cbUcCV
)iK"aeZP'A1EPBARZAEb1Y+ir*,D0HPFbNjl!FU#[+`A!*bHVfS`Xcf!c4I*XH9)
ML56m!ij&)q"D&p1)F0a`'H48`8*jRqE+SA5%%M2k,M&*ej)92+(BDMYH'G2[FBc
Br*bkKd8eR*+9hdpD3HeBF$E3F!Q93%URU'ilKcMP0kKS,aT$aUhJ[BX%eN8-lik
Sm6T41"ddDZT9cV)R@(@,MUmlGD@5ElLM%9qm3MYbRIlZC@Ja$[-NdA#Z)Id)p2e
[cep+@pr-+[I%QMi@)aL)ji6'%i*$"+kR!J3@8!IaZlfRT$JVQ&Lr(J2hl*KU*Ja
2%-36@DIX&mmleE86Kb`rPhDEi[UYUb(%!c,"MU*jbBbVRk0c-PB3i9d#1#aYNl-
@b2kFM")X6'P39q@qHlFL0hPD`K`&$#KMFCh)qHPRX68ba*XZU$D9*#qNhDYRHT%
[LNp`&Rr,@i2+Kk"B'aT+#q`,H)Ufl&!`aA8)cqH%`$Af"+D4HKBYNPGkjT`6lh`
q"DHk8rp,+a,b"i(*MB-90(2Xh$+URX`1&B1dU*6&HVD5a3V&K#%,#dCJffI!6cT
PdJE3',mS`Mr-lm6L2!9i[-PX@Z-4*rKEfKj+,CdLj0LVj1(k-`A2rK4[URAqMPk
eRiKCMRRJdF'6P03EG[+#J$XRF"bMK5IL5IFN5h)*5N4`mYVA`l'rVbZ1-N(TMI$
Ic#U)2@Q%jNaQ%c5@qV1mb1L@&rYp*b`hr`Imq5CXa[dK8FCjS3&lQ&NadZZk6pA
)Y@PSR)l%cNr+dLk4FeE0FQPA-@%dV$%(IYM9p0lBI,K56PDM#8PBr#M#F2rAr,b
SqKqJ`BMSFP`'C335$8kkY(FJhQ%PbI63XRk&fQ'4S-"l3-"JJ+30e`2B%26J$VU
'5)S!331UG#KIiKjDL&,*B&AjX%aqLLk0F@1L`!+6Be-"'U3K+%)EcI)iFA8aXLf
S$%G`CQS%R+5Q)!%KlAKKbi%%3STaBja0Mq!&XM9Gmj@l9MkiAlm5A&'miV"X&Jk
N1330`C(V'&m(,4X6HE0FDdpDk(6A`ZUiifh4CP4%[Fj4(I#iAi@GU*eSNG[+0X'
Y9CZ$JfhVfG4`5+'0#j[%G`MCNHh@TPV9V5+aZCF0(a86[QPfJDeTJq$fiAh,X%q
N*@!6hEKa2rX3L*EM-+h[VcPjSjTBTm8A$kNHfM2*`3FYD3[IYA-AS5mHBSb+iq@
Djk16dQm"3AhY2CZ)EY8)RB!8fIi,Y@XQ[fBa#VMbIVka)d9@aABVdAkFk9ZlUfS
aUKUTU3%pcCmDbM%aG6!a)EN%$,(&*F+2ANmqmN4"E$%Lfmj+eaX9R'(a+*H1M5,
2jjRchT%hmU-h,T`k1R@[Q6!khq8-8iI`9$1H#6D@iHma@h&ZERMJ@S#c"JAVa`V
+#pC2EmD*0DM$'rN(TKV(kRI+YqRUbJ+cAjYe!MjCMGXGm190Z8$lCbHV`SmF!Mm
@CA0`,KTS1i(55S(dUBYVN5mJ40!Q4PM@1-!6UYAjcpeRrb(1i+J+T2C4hF+c4MA
lCB(0$AJA[Tqfq)Ma$a"qmd5h&2`DBf'+3mqPT$'!0ARIGmDVBdlZFmLjfPESI3"
j-I+SiZk,MDD%"IATRfH81b%J`h%CDVZ+Nh03lZAMRrT[iHU"cLG&aNT#QI[))cE
XT"42Dfr$)a,Z-``[QJ+0Z#IJYCkJ@qNVA10k"QF$#i30djbIR%R5`'k0P)#08[C
!PBLElTM+%X%T,ZiU'iJAML808d"+FR28`$kYEJ`[U@'0rdSA-#ihirI99aEYlpH
5rTC3"`1V0)m"k8#FV"9Nrcab6KjU0!SfSKh4H8iJPGr!%V3a)T+iV-8&@1epcQZ
bFR@S,IiF(0A9-bl)!B$XPCkj#'5m'FSUZFpfE1G,S'TVD`k60rQR'Rq&iLU8IX%
Y3ZV)emSRS(H940)JcEmm@3(4FfIS0h9Sh5KZlYA,S4STcER[Url[JR#LjSj'5Ai
Gj)Nj#mq2-$aZXM$#e(#Vm`*50lI(fD$-%P+QElB5#DF&$-laHq(j,LfeXRc2"pf
Uk(I-1BjKc"qq(hETee2kEVLXp)Bip2TmJY-45KL'%4edLENAF`%rY9e`fYUqPE%
cbXTVZ6F[*6(%lX*FTR8#Ncjk*PIj2J+5ejfk'hDPKR8"0qLNF)X2XT9mPLRUjDD
8SY%Q!9QVCMJlb$c,j2e@SH11Kp-[0[T@B+UiAD@bB@3Aq1-0YCPVAj(`CY1aq"0
0!6'-`Z@[,pDH*-mPN!$ENfdJa&iIbH8*%#4!BD'VGChhC2iBkD6Xpr2`Mq[U1'3
Lq9IDhG&XG)dI+-q*lNK`&qY$)b!F2ZCD#(N*f@FlYR19[Fa4CfV0e2KkGSa"m10
F-GAcJhT1kc0&AjQkeRN0#`@F''"+Q4flc,NXbU0Bq!@!(8jN'hj!#fFaX)SV)d0
JCB9e`BqEq(`,cAbTqScl#!PhJk-HS3$RrTDjQr9*21dh**ZBYZePTH@&jP)U[S2
e8YI$DM%fYC(d+*Xp)eK5aVB(j6UbU26X9k5PIa0RrNK&YTAIq'G!BU#Da2b)A'D
4#P[+lM'A38RY$6k0'`(Bipj"19NBhabR0'N*1p24B&f3!)kR&!A*pG'pkU&6M,T
6@@`#RR0(ekN*JXfMBTFP80f%-!k0Lm&a,'fh"G2XGPUqfm0A$p,5Y)`&)!9*6mJ
p'N%cplZ3!(B"j+``&N2"&dP[CEKBUiqp8C`%A,2B[qDM!6a(I4c,@**BKAe1IQ)
*QbM&DNCHN!$G'YK-R08I94pbLPie&qJKZK'$D#T#jbdelm3q84RdQe,MI1VV!#Z
q22&5R!kp@[,Xe$(H(MIY`c4HZ-*IXih6bCa)2%a4#rGUmlFV+6!e9!V3bY4@i@A
[T,HB8@hdb!*3AV0-*IR,[K,XfY2AUY#l+FJF+@P6#f##A!bmC3I6+r(,i!-1JqA
8qmJUXJdiG35%T*-)!NF#pX"Z3jM05!NK6LA@0eZLY*[kX3,%FX*G0kMe`L5ZKPS
X@ql,a)4'Qb5aYCV'Pm@6h*V#!bJKNTS[bErqV[)$T'DQ9rlpb9&d`$Im[0cQ&FX
Ccr)Srj3jU%"N9ZhrlI"BD%eT5m@iiJU[T"krHc)1fI3bN!!9p#`@6ZB[5lCBK3j
eNYRDdfd&FTNpDEFZKV[YYGNMNT'`UHN,k*FbrQ@Ek)qeehZ#jC!!fVT5KI5b8c)
N31mGE8q-L3Kq0Jf3!1-A*!ciZU-Fbmi8*1MLL(dKZ8!K-H[#A"j6mEJ,5DaY+rV
jJ$GB2Vbc5Lb$CA2YEYb8+qd,V!M2l%CK@b8E*HFBmJ0lrU#&CGP@re2kQ9Cb,Dj
qX,Yp'Xp,iXU9@LPN14`CTA30d4FK)eLMqUIY`4UI,GhGfQ#C%*SVUZp+dI9,[))
"-(U&,bUQjEFMBVRb*J-1UPBpCMe2+hc,T93q'dqlZi(2DK,cEXp5F`KAh,BUm36
K2ajC+K&-J")V4cqlpMCK(iFET(%FJ6LY@j`Kd@Z&ji*0)9)$XZ&mi93'pTYb"T1
-a(DDUGd*4jBCeKh3GR-8%N63`hfaRA`mrP8%G0bLh)(X,#Gj#ET,B)V+)B3XFSL
6(!4GV*DQcaL1UhD$1,8EmYD!!SU!MpXrZb5rVr6+"bVGrq2qZQe)%Jqf1`'lRiY
+iCqlQ(CrlC[h!4G`Ak9!IVVX%Za`RFEb[VjHcb)00TkUQb0J0lD%f#9UB0qG-bI
2jpbl0mA,ch!(-,(6MeR&`%#[9eB(c2#II6GelPcTNN1Jh#'*N!#frL3jYlIh&C8
%jhiQmjl)RKLjZqRC)ajNQ3jh+4HJ[EA5Uq)LP(E4qEGXr`[E)!#cclkpR0Q)1Q)
)EjUl&M*[IDrN0EhBpV%8VI&f0I*,U1K#1D0fJKbB9LVS1fR+jA-QXiRqer*UG2i
"IA`!9k&3d,,DIl8@Hc`6@3&3fMmD!8VJc2rq+SD-l64Bl$P*lC&#ZR*rEVVPIr4
UX9(jCpFb1eENGVhQ3)@kB5[-k1KR*24K2K%+c$Gkkl!m,lMZ#ArYPAS85&[Z8k,
rI90Yd-cl8R"m8AbKc$Gq+[jpV+"ij[b5SdRfA,#HpF&5)UVV`DiA0qeN53Y9#VM
2&3Jq@D5Z'!1,j50e"Y*SrTSdA5'HQD'YILCY'dV4[pMM[K)qDTiPbcHJLIAaNpc
e1lGE#8hK5KJcG[**V&kp(hU'hHP6a-ArBl`J*2`S$I*CQUYqYe5&NJX)A)QrQqK
MS(`-MlGB`I2X&)r6R&@j#B4+DSE@&Ur,16e%HrPRG"q$RGicmCbA@l2ER"FaITq
qTD2i,fm3aEmiH+F2EaBH6DVelYbL'CQr60'a9pYP))N'A+f!ld`HcUQbHk5hrk[
Mq,94hY9!#%Q"3KY193iJe*rJFi'6S0@SlNVZf,RDE*Ll-JUhEGLYm[-P6aUU!lF
mHEAcJ68!$1I5aL5a2&%'S95D"4d"'%23V2%i4G0Z&I'G3@(qQ%%"Ui6`&ZXAT9@
lr`*@M8XK0QP(3J16a5@!D21,9m'6hLdCT3k)%Uh2X6%MCXQCDT@J8NceZSQHVBa
DTYCa%Qq2(Hi+"mQVZ,8JESeH`h06a%TlbcQ0U9[ie&6,$1%Zm,%p[4SC[,SLNRr
(dNe0B9iVNS9)3iINiEY5%D-(ARMVHQ)5(lqX'1*HLRd8%B255II1"+SJZ0cC0hN
T)X0Q61&34QEc#5$Dh#e-b)MrR[J"!5di,JPq[jE+TbS&6Vp)1LL%!V8b9@a[N!!
RN`fJ5dPU[BTLQQE,N!$J5BG,RIVH*YIl`0fHhLCiSc"@@JFCE!Y3$rNllBBB))"
,D[@#PABJZcjP2GK$3&H*3qi5NqrS%%GdBD&YB%Q`Ym#)!im!YlE2iQa[!+Sk1bj
R&%!['aKU+(J(`db-(1"+-Hl0Z$`+RTj(aXcALCP9"qqNQd+I[4L5m"$b9#klV1@
CDd8J0V!AKUl0L)U4d'jd*5Zi$`*r8H@&-EkA1riSj#*H@f3J2!-CMGJ(M&!ZZ)X
LrZZFEUbST5E%`B-)pdFqH!YjE#$2IZMi$1'&DhdmJ62a5QYk8e[$8N5lr',+04L
`"IiC*RY(pA,K4N8QN!#iaK!k!-pNdY1!6Q4Maj'em+'4Ucr+Cl(Z8p-4'[6m6NR
49lRea"C[Y#l!Fm-&q*M-&EfqD3$Jh-"(GrQ10NcJ@P%0rc5*`L@,JH*SrPMpk[I
-JDQaR)2M1B&SYpcf3SJ+kYDQ4[QHS,fc,6iDDQ0'T#,E(6X9@N*[kj2c&Ue3-)C
G2q'Y6'p9iZ5@Fa)M4h14BSREl(q!-'U*@6+0NA#lbrAl4Y&TZS-8S(@P5$iI6c6
,![iISMQe(2T@jNCL$93C46k1Ym0m*Ub1G1V%RRK'!Bch-#r,MP8!+iP-)1p0TGY
HBRk-p`Ma82GLCFXRAbKd+3lh[&*)C69ZpM",f65Y"!V#KdEa+r$'m6-@)5YBYI*
ZpD-F3LGjI%pSRCeU`-fpGHQM*"4Dr+f%V1Xa0AipbDqM0p$L2cfkUa'T5q1p$"#
RSaeB34ERp@%lD$Y@PeT5[`0bNT,!E*Ae!3$lF*PADh(JpPjGB'&fhe"V#eT5mB"
Z5hG"Z`Ik2pEF[GfHGU-&iYfrZR2q21V,)D9Ybfh'1Bl20cmSMB[`LP0-A2!DZ'X
DNRPc2IE*Yh0Qb5Uj%("+-)BX(A8kFY,&1$LZJIiRM`DFPKiZQ!L2DBQG#@H1M5Y
-5521+dd5lHCGBKG[&C!!j$@NfNXaaFQiPMqS-80$IM`!YVDkFAIR%9&m,jVeZ)8
F3`!q,MDGL96&9r"12iad$a1E)5G+GaVSplq1mIjpUka#@ME[Qhf@Q49NQ6If30M
YKfXX@Je[J2e3'-`0,-pFh!ccA-8qhT+jj%9`Kq0LPX"@jTE3TEF2D,l8K+#*MQ3
UKqR%8%13!)+Bi-'[qNURUqQ-I"Xjb*(c["EGKRQGH(FDYk%V-*fA%3r%*qGbiZS
bjIB"Dp`+RI(%JX6Xj9@RG+)'Aj,K%fLd38%J[G'Tj$P3cfLqL&63"CTTXUqFB1U
&J6jL4J89QiY[0V)r1U0)BX3GRPY4&ICdq6#9kLjdL+%-2iX5mZ8'kH59J*-(8#1
3!2#(pb@-)DLQ-%3qD(1Vhb*kQc`5jebXL5kG90V9hQ1jiPNhh5iCP56bQ0G-K9R
RGq5Zq-b!2Rhla8d,N!!q&#'(NaMCjpiq3lc`e`P#Tb&%4!@XR-*C$$Pld@J4SCh
)hL-TBJ0k!,UfrVIekRq#LrXkRJ10FcKL%NC#!@FVTT&"SXXDZUAckJH[Ti'HVac
(BrZANEN!lh$lF+GV-05CR!RMr!!1bdZpdP1rVp)'jC!!Bi+Sf[ar9Qpl$maF&+F
QdpVLUjf4$qX+STCDa8NEU5Q$NCTMU4AaC+id9heHm6GZj)fGR8TMcPIRr0Z$8K5
8Rah+dV"`0VpZ9@#H6fJBj8rkQ30EG**!VdqJYqKK)!6Vb%"aq%(D06)4#Umqk3b
IV$Rfmmp,"4Xb2BGHZr1C,%4[1(T0J3$*5qK6kHZCDbd+Ei!E0M$dZ!M'#3F@SCq
%GJih+YkV`el*dAGZ&fBIc2ZSY,q"Z&%a5Ih&0YRlA46%G`!1p8P5d8-d3&#dRpU
e#kVp&"[jKSdYCVTU%m'dE"EiKiY9Qb6IF&-JG$LUc[%54A,0D'5h5p[*!#(2XD(
X1"H9#)EkAbcF[d3,@MY@+)3a5&Ybc8N$GIY2ii[HM`R$*84a%C)e)+`ZM3,#MeL
)[ZDRFV"ml)0#DrRZAI#khK&DG!C-SYMS)6-kJT9aq[qcJ'qa#6QqIS8GVBhGBM#
f,b[3I-3k+&$be-Y420bT60k'r6a#8d1$BEl%"i*"U$k[T%1$Z5AE9Th0&-[IK5[
S'iDR$[4A+f%P&+$9+iY1Zhd+9bCJNLL#`eVR#iIlc5P&2MSCL[cU#l""%8aYrKb
-82&!"bfV3[@cJQj01p&5hY0M$cX5U558bFN(8HN1b)6-@b0Zq`Vk3drjZ!cHTUb
41acmpdRTeCBjhLVpBG%3f",d82,U0j!!mK,XRebLpb1'G2R4&CZBMFDJr@LGke#
09cE6L1R"%rV+(4me#'jk+ENq#")UDEC$9dZP"9"F(L+mjm(p"Gl&YQHi45bJJ6[
hTTSKSeSrTK%kTpNiSmhc"dX0IE1'bHAiY%L0(`L5*VGNQ0@`rQIj&hlC$"ATQ&m
AJP9N[IN0qeEL$)m!S)LGFicFEZQ[Cl[YqJ1j`1kRc+PT2[r"+GGAKfX2i5!0TkE
QINfSU%(II@cbFeqfZ(q0(0U$*@jGDB[)MICS(%qD&3KbGrC[B")6j#%B-8r#Nk@
#r$4#EFGj@K4XL$Mm%NZH-hUrAp#*N@c*cf*1NE&Fk+@j'mE`F2A%0Tm)(NJA33L
IL6hQCiAX"HZ&eY%,[YMa(&aT`)bX$Q,8T-k)E['T)%*9Q65a%c2[-H4EG@q&PL5
i!A&rJai6eFTULDBEQi(qjldip0@T,fq*C'%hdcA'QH%"9Km0YY)hTf"cG4)-m8i
l9iHHH0&BPfZ!kMCE32&h&)HQ-3%pI9V`Na!3&0jYU5*3P&G$Ul,*)+kkIlKX0fe
2+S3JG$MSA8hS2N$`N!!(AL'9B6R+MBaRDYf6*Ed!UbEV1j,SjK9`Q0V3'RA02PK
k&qihV2+B#cd8+Z,*jULFqfRUDXTk0[%5f%4M4!YZplGU0ZRZM)T![$XMk%pL+A'
qC(hU")"(MDqA"Bdr6LQ`VR,DeZablBE8"de#f`%FS9-QJmGB6*jff`,)`Ke!d3(
HSp*2eGc%epkbD$G9,+)2jIA%8*,*DY28A1%VAl!5HSf-E3AYhb#,4%0$pFJA2-X
8cd(aGppN#61d!a5XrI*pDQm'NNqE3e,Ej[QmGDj,+)hLFZFl[Z[K"-9eN4e@mlE
2bkEpp9T*V9KaeL$GhJcT`GN2`%A1p9"54e`QbS3%qI+IM$L*Ym#RMJLNVD%P*8&
6-JNfQN@(Y2S%YV`55pm(,+kXUDep[%IS`*+L+4I,fhD(rJp-GSc3VC(NXf3hN5m
FmTi45ipD`4$&T&+)Nfab)qf9-AI$-9r@ra0Dc,4@8V&1Y4NHqDl%ACRFQFii@+F
3Zl*Lc*Vq#pP!NU[a&3ZH34$qM+4N,cl5rp9ppbiHpKq[iH'Y`)3"P8km@881p'm
))B4(DC'%SY6V)A!%L1XkpqB06lkF9#lR91(lYf$H+qM&P1P50YC4eAm[[1,HUci
kXrT(BjbRJ2$Zi&MrDkiKMebC,!I2l!8UBG%!h'S*`)T-4L)lJ``Cqf9K9#Er(@4
1$pM,`dFUC8EUfqjMUijX&YXl9$e'hPRZQmV+MD2Nf&8fLk@EaS&Hh'VaF#SYEf3
U5KbERViD$)V%LpSqF4AMDe*Q)F96fY6F2dKU,q8EiYN&SaCT4`8`F6X5c9$JS6-
q-INFSaljc`EBR+ebLbV&eqUm"56Y,mNdcYdX([JVU$LA4+(p&VFC[QI&Q!%lq%M
LaJqY6[JFKbTarpfUp&3hZYM03H+`)`YD*YeEZ!jK"L&p9Me&@Y'b`TJjXR5*a)m
q+IVBA(3rba1mC)YL3p*E(3MLjr1%cMGZXIl@QcYTU"q5PA,jDZ9CQq#4$MAjTZm
[HT-qa0Piej*#S9R"@E3Y0b`INJk6A2p$H#jZ`2Ueq[#heZU(FZXfQK98mi45jN4
NiKGCVh``IkJ&j1%k*l9FaU*&rJIEM"+fLFJqE@5@8J3GCdA0JY*FM4El%Tl5,2-
jfQ6&IB&Z'XS5&XhDd@02H+4VTG-VN!$-V$Ch9a21Y2+G'UehQK*&YVqX'Ff53EU
kIJ#arP@rAcIh`qTlmd(2a'b"cRj+q",M!Vaj1dYADS,R&QL3!!aD,B-%YfbCaJA
X"f'KbS$$Ap$#Q*E"R3l*9U,U)T0dYIh2fNR$5UH*fRCH`JDY5VT&L)ZDF-hXLLj
2-3N*3cK'U`p$R$mj`dbHEVqprU8mV4,$5hLAfC9'Zaq@@UaPj-N%`@fDB4LNii*
H`Na@j!f6V2-rV219B,YAhU[K)$64Z@q9d-QqHfZm(5FX`i36H+E$KCSMb%'Ue`R
LU`T3#!ZNpD-5Gb!ChKqL9b&'PJf1HM+[TeMK@cT6%3""BMV)Y8[AR)XXbl@9$Th
0(RmaUG-Sc+V5"@IJ`-V)$CLf[dGr`+,X9q98JDB#DQ$CKC&4lVaM$TeK`ic+4G,
U3(SIXT!!qar%e#$9JRrG-SEFbZN+"@p0eA)4Aj6CNGj'NAl-aIXI3YAi#Ek3!21
U48JceMm!U-&`Z4)c6%f)ei#Z)PpF,i-!'llIpMUH0*!!E0rm%3CahC2'(@HHHJ5
+deSi"NaBbVYL%[q2MH$l5afGR+kIA4%4+4)HHiA8J`KV[U-5+ZplH%HC64%HdC4
RpHc$dCfB1DXA8+E%I%T[-Z$V*YRTVUY-L*!!clb3!,A!!c'[b@aKlF4$dXKQV$F
TbV(D*jR2NQH6UN@YM%2,"CU1X@+*l[jPbF2qKqLC!!aURXifjKB`3U`Rh6DqCGQ
p5XUL5NVXTDdfM`N$c36[KK"iV-f&Eq)NZIJLiIekY#k4CrAHATLRKTQjhDiF!6P
A)i+2qrHe!I'6r5V1KDH#i,*),(BDbN5"D2&dd"(Cm*(X2hpPVqb!d"X%MCj9DLk
S!054-2+3!,aAfaX6+A('5[KEC'DF%B3Y,Im)MQKDal9aI0pA4*%D4K-JSbd'f(A
TSNEL62FL&aUlaND&+qa$c6@V#ar%MkRHbDHE*!q$4ifbbLL9S*k$LbE,JkKaI@J
KKQ-"@[UBr`PSYKYF$c,G3J3)0-cb,S"2SHG#EJ`+BhSab#-!Q#qF&I5f8[,QH`,
FeXkhMUfRR)f*#APX2C(X)qRZFSr,eAf)rFT#V$r6BG[TL'(3(K#ANiQ[N!$1,cp
XNT)k,%%UCT!!!!Y@p'1l%)CMBPfJ4Ic!I)k5lXje&&C@4C+$Z0NX$$MJ5jkGl@%
BQHkrC(&i"e4r#8mmbG[#33K!PJ!NceqRF`4H9$ff`"9dEZrC5$3+B@Ei*l6BlD0
`G*iXX-2#VP-dN9B$F2N,6RhEKYMYhDdhYN,j,VEEDf039R`2&rPZSh1DIfriSNN
d4#BJ8`,)1VlbLUEM8hL42mMPG!8ebr%6#4383pmc'SQi3c!pJldl$8d#XSf%'FK
1%(-J*Rf4C&eC4'EG!8)CDGReS*R0Y[LMJed")*XT@#5*fZQGS+ejLC`FphSfK`Z
9p2$lYmT4MFr%aBILY,PM,Fbh4F*+CP,(#d$ldFJS2A'2DX*3[mCBrHJ3!KlJ2FP
cQ`rArS,()E8B*iHI-hRLq6&NGLK4T*KKi)UZ4lf9dIfNhH+%)XiZk5iXh&6%pf)
2iL'Z#b(JfV-@rr!feblR&)%mQ('"bJfh8SB)KbrfBQF$P,VLJpR++1'0b`$"6[-
pISVKGHQl&pbhi+UqC#L,#VN&RR'%K`b4'&aLGJRS6S#JjbC-['aX"rEZ"eUd`f5
3!&@X#E9Qib30LN$4,V$1L*V"F"EK56`TN!"C`"D+Zq*hadFeDI$#MiR$j8,YM,a
%*f6j*KE&VHV6D+J9@AEJBEG[BLh536%Cr4EZ!#afTi@I*`-ij,)aM9i(a-59FDP
VD)$*Fr+p)"3bl!q1B5KpZMm1$h'cEEIHfFAd+)*iH@B&V38L"15HkN4%Jdf1r31
1##9,J+VZUT+(&)ldNX8$UX%AULM"**HCQi9&[q+f4i+Cq2$3jq8APEI*pl&1&Ia
2"()f)`-R)DQAUS[00lr@+Kr8cckPTJ63YV'(qi(AaTCK$Va`d*5ji&%QC-UC`mq
"0-c`2[9@5cVdi($pI(FKDkb&k6+N&jPd1[crm*KN6dArICSL(-K"PNpJbcU@crb
j3!@3!(@5N!$+P(L0FEEI8AdbAdL-p)IHfTr+@AD*r@,b%c(DH18Tr1@#$BRi8*f
ArC9mf5aD+0P2Q311%eZ&'P5jT6G"b2F(EeE@(CplNq!&!a180pPB0XX`lm%8SpR
Y21G+1K'F,cS0-R2)kNl2+2Iec&LiPKb9V*S*,R'E&k$c"Nr!5KQA"b-@BHKlM`,
8&2`AQBIr&X"iSeP6r!I3E&#h'e5YI[INDZPLDMAS8TGl"EeQM3DIU5)a8KkfaEJ
5PXPARjDa3aU&@lQVS))h9Er`@0*TA*@',N6alZ5j[8SL(4M+F2k1@2cL9+TIaHN
Z8A$r0"699aa"Q0hQ+Hde'0-'qH#*Ra`UKr[(K$ZelHdR-8&E!-PLPqq#U"$#H0e
S15'@ZJZRFi&4eZ&'c89qI''EJ@A`[B"Dp$q90b`RpYP[blK%k)eCS!(IVG0$*#T
JV2cGLIF-Jl)fj,BJ6KKLQ'hHJU($M-'21#pbpM,8aALF'9'hZP6KHlPH0)8QHmZ
de@!he-IhRS#`&9!)C[J%QRp!DI`&E@*DY+$"T+VF@,+88DkT-6U$9(R#Tl8"*MR
*`1EFTBY0VA&b4r4M!iJN[bhqZULS"Jr-[BJ42P(j[S[NdH)8Gi0lh+LaC2Cc5bh
2qQL2K&@eBarGU)IQR'#SkJE-L1Gq$10E`KN)*am1aB2!Hl8%GMa-+*N"'%i&"4(
Bc[%)jqif2QVR0FTNM,+bfHrNa2*eT840)+BC1H2PmVNDbP-8!fqP"QXC#*i$G$d
9M3BUlZAiUCc'fNl8KrEij)fZI-HjD1'QdHPCNL+R0E!a+F*l'q-JaiPGCmr`%"e
Hm-C'$0PbP'+@RUj9piS6YhjpNeNG8-pXK'VA&-bfHpEm+cUr2RSJKp#9-cTEd$'
Ua)TZrR"Q`5KEF@-Q)9M9'ej"F('NiiPqYS!-PA332PX5Z)8U95TBD6E#+1$9)P+
E*K5HTdE%CMJ5k)D,-F!%E,hb'%Qp,hXk5L+1Xlra-lSFLAC5+l)C[I1qLaf%8C)
Xl3X-Ae6@e1IXa665IE)IB%%*ar1q(Df"@'qRFJXRLF1Mh66F`r23Zi4!fkk,))1
D@NLBM032f"'XIedcQjqX,"Cm02ZbMEGK5a'E*eriYPM#,eh0qa`TSl3dGm2Lm*8
Q1$)r*$FLHl*H3JT$4Z(@2U2FfA[`hRLE+"5AMJKIApZ5qh"5c%59Dj0-RDr85MU
EBmk9A8"%0hFKkV8ml#3,6Z40KCM58M-F$Fj&+U1A3F%H4KQ2V9mlHe`9P4'p3D`
)$qcTP4k2S3hhkAGDUY`XirTl#Pk@B'rV[XTErKiJ#bcPLq&a`E$lR"NXJ5I1#%*
iB8A2pH*V6[)H+kmaj2mdSdGGRUST5Vj'am6AQB#8SkaFLrE!lfbj&KCSBVCRGG&
PJTc,SrSkph8%m8p-%%Yp8`R9`cf)&bU4-RFbclI8mMmP-J*RC$$LVT-*N!"-lN3
l#BPICI9RiA(KN4M%`r$Mc`dj`keJ2KD6Sm%k'cQD&PjLbjPpA-X88a3hDU5TTLK
&BDG,1Y@D5+"0$DI(-hT)Qfjhiecp[3#@KdZi+-AlM385UYjMqJiVk9c-3N+1R96
RBHTIX&Idm[r9P4G&ULT`kl08)#U5B*qrfcINXG6L6EqI+YcR1)P9QX4VXDVmj4E
!43J,MP&1ar&jQA&6m4VhedZXm&A5NG(Rih%9(Se+q"@-lA++UAaf)3bXC-3!+TX
eVf$KBKpa82B,TEE-FbZEJ,1DfX3"K*R(a1j%,kjLS4k`Zq#,B)XHkZ(,BH61(dV
8I6p('Gak1JeU(ae+A,jI(cbVBZqEhEcS%`0EJk6acTre&dRQa-3M+XUX+0@h4$V
0j*M@S1eDc%m5h-SB)kFSeJ&R6"*1)3f2+Z94mSUdR[QdGI%P+QR%AHFirm1d8H(
9)L8qGKk[UXPKeffebh-GQf4Y$!K-Y@@[JM(AF'Phl+#I-JjYjce(ST1"RdT#iI*
V"bhk&(#iX1C2Dk1KI3+m+3ie8DCaB)SbDd[df"J`Pf4S@h5&639JaVkI0X`a&ij
HcEd#5EUFqq)Ze40`V6*r!LhCe1pM*JB-*J@f0USr`((e1m2+rH&0qR%4YYVHIhN
8,E"p%A$NQRk!R%6@`NCH9bIU'B$8X8B+`A#Q4C*6IF"BP1RB"*+)UD)dphRe0+i
h)mrd&mhhp9!@VS3bR@mDb'0&jae,%#VHkfVBEJeHk,@*6YNh3E,CSjjNGIXFH*J
h2XDE4Y8Um24)!*[NAUPJhDb"QR(SIfY&0S(*Q#c`L64kL2--NM"pdkI-ql%lGPI
fmq#%X'aI-2!UL-jTTLZVh6YPhTe0M)6fRZFFT$K90[jckVb@D-`FSmYk"C`M-QL
"LLNqaGj)BD+`Piff,rG*UQ+%b!5C*EP'P,6QJ3`J%P"lCpQdPI(c+%DEb6@3!)e
(Xlc0(bJSF98c6a(RTSk9jLEjS,FZcKN5Lme4r!1V36[m6*RI$N2#TQ*Uq-'p*G4
BHYR$@ANKp"b2XD1616lJ90bFj'6E9)@k0I%%1MU65mZEAScHpZqDeZ09a&Y#0mM
Gk`[!2e[5e1bCVpYmV0[$bNB9R-@AHUVRTC0*,5F@802K&M'JiTUjB"[Nq*@dqeB
+lFI,eNR8'XqCG1(QE(eF,'Sd(&MbpM'qA"p(`VRZ0e0-9kjZ1*,mdP9QK'8kb(-
8P@[d`k(abLAkcaqS0$*AD85rX4EGR%MU*LE0aKf+UZe8(KBa'C@`$9-IT"FqRT,
C2m'p'rarF)a4d@8cX!-RBJSA#&`0BUKBTIaV!KDala-Ir(d@"%e%Y[ahB3k(iES
JBQk$U4a)dkq5QFk[#YNM"D,Za(Midi5qDlVPqlQ0J+MQi8ELV%b!G0iUPJM6X,B
52RK,aQZC$!NHe9PC'k*1mh4pBjT5"'P-"#-KIjG&RbRZZhK`j!fh5E`G8`m-rlQ
('NLTZRG!m`Z%H,CY%hb+`mNPC"CN)D%,A+TBmcLIkNYD&9J)M(rB0'K*8Z'i&-b
q4%'VeDCFcQN-CbCpr5`BKSmh#'jmdFmJ&hH`UBkAq25fR%GKX@(ZE#FT[bK$k9Y
Qj3aNJ5dYRA9hD$6hm&P3pfhH+)I0T&0a&)6VGh#Ii#-r9*(AfZ#JbU2e)%Fb#S,
Q[GHZP)&L$1H2"3bH$&c`,(L1A9S1hE$h"K#iR,IJplZVAL-p89h"2kamPf@12Z`
ejJCNM*N(I0SDK1`Y505prN[TrV'8*D#+j'"dCJ(LU)U9ek`p*ArP+CPSJpKPD"h
UTlIFrD*)T#$r%r$N&&bFL@h5a-KQ3Th1KU$ajCB[$CIaI,&V)*akAJRX'lNGK"V
lNl2#TQ-)V6pKNmP8(C!!JP`iqQGiQH*P9k2DAHm[C$6T0Lr,"`G4efFj24$[AhU
056GLQX5NUjiTUik3!1'HCcFAE58L3CZ6@&b'V@QeArfj(5`"&Gp`24-#J#,'5Ek
L!d`@RkHl*)iMV5P0M-Ji,r`YKd!,4QNKQA5&*&kJc8#[-JjA%dE4D*Z(KNR5&p"
V@ilEJ8*'8Z83QJ+STTA6e$f4UP`+L)cR+#E(S!bFcq4bVU1b[K*,9MCqY%d`ZKQ
PX95EVE+GC+kf$C!!iYCZ0rFBbG0bk@'9hS`$V#5&+JUH6UceEP*',NhD4#9Y1[`
S!C'aG3B!pN@*USIh)@H)f(j#)K*fKm@3!0fXZAPd*ecGpD#-*Ae`J%$)-&QHfb9
eP`&3!kN1FI1N(bIBlRel[dZ$!6pRD$@8H9RhGAE8ib1EdMhfQNBqiF#l"+ZXL@Y
4C`"ER3'FdGZl&DC'G$rZF@ApPmQVkrSc8be!fVh)&pG`q@A0*3"abqS%NMBPI[r
1R8'R-2E1b2&X1I(,8`9Ya'8YYG*qH"S"LQ8@TJp'aPYH,!2rF*ArJd1a0@-hQA*
3T1+RiS)dmJ*Pdf,qI$k-S'ZdIRbRGZIIrCIb@SA)@A4QNC'8NqX&[J@1Vl*1G2K
a""f2*VKrRcJXReTG5`1GjcZK0*m5'J$[AKj4ELpmXIlKp*Z&#pqI2P)kfeZ9j#j
0rUl3"E#8,Q#AABZr+G*Vh-1NS*FKi1BSTS(!Nj0@b1VK@FBZm!6LqZ!1D"rehC`
&0$C6Z[[eB)H`dKLq`*0c$DkASHaJjh)f&GAp1V`i2M&#NG3MKBC"81dVYc0K@A%
CVh)XmEQ5JBPCf,6e#9'f6Lj!,"@lkcaRjSpdi95$`YJRF!ZNI'[d!5STa3pY+j!
!+--AJ+q"`'KJqJ!La&((`D,jZC!!rXq'GT6A3F@M5NF+p,)bV#Lap4kZi)F+!qH
SU6ACPirDYa@ijS#99hb%jl!,r)KYJ#V$$#jDeGBF[!!q+(NkiPHc1(M1eJ9B'M*
+Tf,q2pB2ArpQ0j4cXH`"QG(p'Rf1H#+CB!L@H66NPAPM3C&Pm*JhcefDF!'i3(+
RfU`Ja-L$SP6A+PN"F0$'pTD[r1Y6dHCcX2Ii#M4arL3YiM`VCc4jYcc@FABRmlT
Y[54aK#NL[aTPNi"L'HI"2!49D+kAKi3V+3ZL)4Qpb'83iP2D65,'%!C$R$iD`-k
TTr5CSBSQbFZmj2Tq-(kXFrP,mPdB5hkdDJV4brSf!-JZ&+fZP"I@E)lES3mbZFH
!hNFQGH,9[ZMG6[GX1#HaQhMaKZMi!2pFA4`3I!b3!$B-RGRC4I#$)i2c$P'-N!$
)$)8'CDBTQrJRQjQUI38BD5(ZVYjeihDfERMGb[2Vq8T@+#$"'VM+9#K6Jl1Plq,
,%ja[0GZj"qKf(`,0C5E1P(2,Y6erl3BIN!!QKD6*k0cB8IBG-CJBqG*2rH*cNiH
J)%0'h82VEdM3&qbMU4K5Y)3mfiqGqmVaCpi1+A&&,`h+)rY9VipAE5'KKEmPr0P
4mIiZ"#5rDPQ,Gk,*I-DB&ZU0MIRYi3Xqk%mSIhC"mKr0MK0Aq%[Vj5UYTfHVA81
&(mTKlMkjY*1#JL"fSiZ[prrBCAh[5-J[Abk(jbS+QF2"81$$5aLDR&piJpK9mq)
q`Qi2BL-P8E90jkbV%L#'#-pMRl)JfPV'K'MHM19aAU0X*(#1[2+5XS2!XQ##`#G
8m#"RVh@qb'@qm+dM`Ub`B+F8VYQpA`Q"fG#T64X'EjXYl,a9iS3rM&0pM&K4qdh
#G5b,Rm+(Ej4,BFLR*L1&'j0C[&Pi$UC033'"AJLDciTeVl)mrRUblbH@NKHE(a4
il+3FB*Ij4*Ie'VTJUKEYaDaV&#bEmUbeG(Ad915@AR0kEIi3iBbcRRM'1"LDimF
pY&4q&"c#F4GX@NmpVh&dHMlcM"NDhrLRULaD3M'@FIP9Rdla,fhXE(Q@caeCPZk
#V+5L1Vr4)lD`U*)3JJ-E)Ueir(BN1'dI14rNa0Ld!Jb@aNKb&Y8L,dIFpa&*Ma*
(G5)[d&4*cBdS`6l*qL68"R)-,[keD4diFXAJ3THpC)d,QhF!f0`5+HAXr9G#"h8
F3F!R!XU5ZZ%,Ncq"QD9k02[HAqITI6kM*+Fih!&Li(UeYFl2Cl"K09Kka1[@V&!
9TQe2$jK!CbS-2'rC2PBTL,(160&i()BXipKZb(BVF(K+YXG,d5b(+3L#EDd%if&
LDrph(HjL4FAD'Bhk-0%hTkbdM'm80pDL3fe8@3D`8iFTRVRC#r-K6a[0f,SF0M8
IhdhNNKVNGDd`YaGUBZfa8&DShQ13!-6G5CBj15*AYH(6T%,Vlq1mpZ-h8*+i4h*
[ih,-d3Pj'k5mRLVfdZMUaDVa5)FI8([SFmdG,1MJ&,6j`2JPdm0Tcjp6M5LB%)h
B*RLDEaBRR9CG,Mq!RSp4I5dLTIpaU)L1b`PMY(@a-a'haI@,pf%kJ8(@3Jj8XhE
L"Cm,Kp(-eHU(6[1K(Jai@)S0EVe0PBFYke@-5bB9Zm'[[!"ie*HcMQ2rA4+(F)J
CAFqABQ,!Qi%@L55H9paa!bje*,$YHl9ddI3P5ZIB)R*Ql-CGpJSG[4J3NV5-rZF
QTBC6AmD%r+0'Y$GX`i9q)B"J"hKAp@5-FLIlfYRXE)1Bb4f14ehjc4#EqS`d3S2
KRj8pHI'@X[k&80Ia5$1hi4kNrMrjC[FblZ,`cTN,K9V('ATlQTC0j)2a#i"k-CZ
3!-5DC!DY@fh%%(8ZFrI*@DV9DP8ieJcU,kRZL2KIE0KEJD#j5dj!26[GYVV@X'$
bdXq8qT[VX(q82[)aL2SLZ!3i%Ur`aUa@p@jVY'eEJ#9mJb%Ydh#b(cc-&`25GUK
p3fGf9I'V*RPAjrLQrih2[Rl43UXDS&9$X6[B`T6)#U$9a4kZ4a"+)Lf@%f@IFIK
T1JIS#DmZh9CM2RfI9CU*9c+**0pcaaTlLPS1mJ"&X8-1VkrXU,$Aa+'9JTLqSCh
Q,P&3fkQkkl#08&k1Q8+QcFHPMH$`aT+9Q,cJ1*e)Bl@rPK&Sk+Ri+'aKIZ"'5VS
5KApq[majZBS&Rjl`hmX39"Vi3Mi!iM"!0CLK3[1jqK,`V#4,,AX1BD"S!0kiP+)
ebSXfH`Y)UK52hHL6*@TjY3SIB%8ccU2q)VmSf%)IHISDbe95&$S6`B-5KLdHi"5
eMk*T'iRMbQZV8U['#dkc1bc3)H))NLNG[ZQ[1UhhS(5#j,@!*M4f#fJKIQqd,BS
BdQ`9XRS#)561J+AQp0j(+hrlN!"MLmlV-2TciiZF(KPl"bdeQ,JpbBE@&CQF&I$
`DBJXSHjiqZi(TR#BU$j1Y0b2T)$$d-A-#bNQSql%ZDI,C%D!Sph8Gb"iV+I,'PE
lI-Ne%dZ'2iUrZVm6)YNApS6+TbYBV')G!ZfVXikFRX'i,`J1bM"kl&jaIh[`2qX
TDVPiEPj$F3jUcaK*-9QqiXQ-qHha5cB0'88!a[(aje2h*M2B9IcFTB&@@YbqUUl
ahZBEc1+DT!"X3K8GXP$deA8l+G35AJ*Z"SGI(`SUacrGcQbjNYi%dUjGE+U,aXZ
U4meZ%0GeTMS954381Q&a&#cCa0TUGT2&VJiSaGlZ)a5dea2BY@4iIH$RaBMi[A#
I&cr&VB9&+GVI1)La9*h[rdqG0"S#eX3lLG3`[e1J@Uk%RE+,laBqmP0'Pl'm"iC
#6@@QSjR!E'SbNdRmK'9*eVD0IQ`4pjf5lMA449iF1eCNq"()*k25K,Nj$q#55Ra
d+KG'TS,X`Hqf4I3IMYiS4VM+1Jh*Heq5i%Td6)L"YCZa!TP%LJB`1m'&-4QK(l&
Xc4eLH'bPHGEJ$RKqk3k'phSE`1!Z0TfYZp+G"`BH8NaFp%Eck#3cp!K3(iTUBQP
M'4B'P418pLQa$2"0FA)1EMi9E*`eGDG(cc[CRiR`XH+Ck$FQrH)p+QGX1T!!!R$
ebjKK5DQiX&6JJKFlV6LPlrHrf*eHh5Ei#rGe2bJ-+C6NDqIND,%d`A`df,(VVF9
Vmf-Hp-'VG0"A%a`hfUpVTmF*Thk%-mMm@+PLMCY9Jm'e0kdS&rM#R`@bPLLPNZ6
R%ijUX5(hN!$IaVXf%,SFe66-R3T`q*FNM8Q3!"64Nb@m*HkhTLiLfPKm,H#ilL"
$b@-`i*KP2i"Vr`eM2h+CpRf(2U&5S@BLd`i96fD%A"e!Gf$hk8P8J)$ZDkXX`RY
KfK969-9cF$M&,$c!$3K8@[ejJDIaIjQRH20BLEd*KmPY4QZaR-3L&'f`[1$U&#l
FQe$4-E&c8bl*icJ'cF9ME%23id3S#d*-Vd#ZhBZ*SN%qLHMXAQ$2#0`([(IClkb
,P"ehZEk#V)h'F5DFDd,B8R'ANPYZK,5mjmf*N!#E!-a8'mFpBU9#I$X3!DS2NcB
DBXIPfkF`5BQ#ebm(JB4X'YaZ[GA&9hT+U'VhAGRH*I'Pq(HY$fFM9a9$P%J*rV-
Vjb$4#*!!'E3@#jd55dPJ'4&,QE-pHADijhKrlB&AYU"8aK6%,2)R&'rR-9PRY5R
YGkKVG3F2hkM[YQL'e@r+dM4IJbBQ!Aq*ljQ4)l9N&'""Jk,YUmYCc*FEG-#($rp
X'XZd&*9+9IfRCDG@cCZm"`0#''15R!lmMDje8@hJ,l@ArAh!!pZJq0Z1K`%a-YR
'NUP5fYIhFl@r0F('8DQj#Bl)GZc2Q&FSlBrb%2m0p6Z#a+M9i!+cD(5e,PVpK5c
)F!ZS*jm8F$Tf,,$NmX!$d8&[dM@bHFrj6@0+R$,HA4F&kq3AFI9"Tcl$kKJ&Y(d
2Ph6fDfmT*3FUH5YkE26mBk!40Da#UN9,'aphM)PR+SZFhe"h4C3V@J'bqLYhUIZ
`d31aKmqr9BN,NJc")"D`JGTq")HQZIVU1+p1Xhqi,!1U`*(HYbF['QQ-j8pe(Qr
DH8Br1AKVV'ZMb'GT#2!,09JZLElS*c,aI-d2*6!)e00FcRFiX#ZaRlK-@+,CU)5
S2M&LPhFIhBiQKq%&RkcVSR0RrT`Vbrfchlli1b&fm*F$DQrPdkpEU#S+@EVqNfM
)YKS%MIh#-(3meD,2J(3G+B0DMPP#Q4j&$T2eb9(`F`0B46djamDTc*J)RCLeR1i
[%0)"Z"JV-3HUY%K-*LS)5SbN0Mc1%hkbb40FqHqi&Ij(8hX[ekcpkQbbmI'S1pr
`fqpI!Ta'PQ%8-F"[p#MQT4&q1ceXZUkL[U8h[+K2eLf84Im9a%d!LfF,DD&RXd8
b'I6(i$fad&5HiUi&Pm5p&2mkr8*fN!"D*ME&"BlF00$0dH4pq%YdPJmI'rGYm@R
'2G5KSSSl3ilc%j`U+N8fAf1&Z,$-YB-RQ"q,Z-aDFL45SVcb&4XX#%)pZBFH1Qd
PElCqL++$JL4BpZ4LDm,5`6D-)5hermAUUbM*#ACBSm*m2(Qc2Y56J5T*&FlVm*i
#m0"@%qNpYa,&BII2M6dH2NLVR`IfXQL4l4ZS4-X[&j&#hkBA)A,T0[`FK[a'-+2
iEZD3!09@bpQ+Var&,U0i09H6IK!!N3$@+TcF+iG!i)8SFBSp,4j!P(EbRPI3%5[
)3V#I)GE68B&`!H)0Di(h,T'*a**#l%d6T,GfXCa[$5"3`)q+3XKcJT15h)+3!)N
C$Q4+,F`6R[cA%cZSQ"fqR@`ZpQV3H6Q5bC`+,*C&MMAA4kbFk+SZi90H"+"-AZ!
lV8`*Q9*`r5b&&D!,`N285Dj5!dSTKVS,U3d5GfYV[($GK(T1S'*,#8&kbaZcf#8
Pe1I8k6'rMDIk**[03j(%PMZ[eFe1Q-MI'#k[M-PdYR8B8i9i)BQ4c*H8QZqdiCQ
M-m'r'98qKq2S`kNRlP)!iZ"5kK(eB`5Hl[dm98iUD4Cm5VLF@3hZ#@r4&cUh)aL
&rj)[8lSDMF-H!0i*'YEj4j%GDXKb5*Ii+#0UNqF-9jFqQXc[j0*jp,-UBl8*@NR
+cH$G9)*8!T9UbFdH0LIYfUq+&)19BR$hh,i6Fql`hiZFI"YLMG&ZB!ZLF-2$#k@
a)QcHimI*eqSB!m8HI(bG%C0eUaAR@'SN4p05b!hS$0QHelG5FD5J#!epK#KYcRi
cN4l4M861%["0ZcTCP[1A!KiA#Y'f)rBD'FfcCjVVGSd5QFC*SKGe5XVfr4HqFeq
DbA+J)8e2%Rdb8&kPG"KV%#H#8Lf+Em8dU"K(PL0[Rcbh3(TM(KClA"MN,!5ci6S
Y5b4dlk'XPNl(ASiY93&&5&SRBdh%1lV)'4Rr$-Z0MEE(K0V98P96k-Vh@@kY(!E
SAH3"F`9B,9LAXBPVRf,lRD`mSA#0e@YQL,Y-S)"q+`l`6+8Mf#Dr"0bAIKU-aCH
fXk4L)aaf#mL`@'VC-FX6XDpG&$X%l4!&MaVd!'#jdNj+4cQic1"V#f+SS"aI)#&
Fd"iPadeQjF"dF5p&e)&S#-qSkMR@@9Pd94F!k@CJ"5A2c#`pLj-F,kT2,9Yj[N"
%I5`&G418YjIZE5%hPZAX&'D'1F5N5+1CeI$dJB`A+HT!0F0e0i"BrUL&@hpjU`K
A+NTqJ-TaEirkR#k"i$fEirqQaZY8JUa`pNDT@Q*I[Xb2#9Iq6(r4LMiJ,*5RJ[H
PLAd9b"$ZYj,r&RrqY""8lGGb0K6VjaFcTPS6Ub*3L3`FSS+-+drX'b(EC#DjD(M
L!fDc`IIi-ZGDPqMkPc!U$cU)D(h22$R(lYJ&TQG(bSQR)FPZ!fa8+PrU(%T%Hrp
IY@*&a4'q03$3"rH(454HB9[L)'6%-8p5%Y[dTX!KkLHmBZiqYqLS$!e@F&(E-$A
AphDHD@,B,',e+)CbJ'ZQ%PT&*kHCi2mpBYJICAY"A@d`ZHi%'m)I9ih+YUmqpCB
k9!Xi+*D3!!1cK1QA2m"2V@E@3qHS$c%V`%S4e6HjEmlSU(%LjDXKYT2FU)60U+d
ArmQrZS,M&klC)T9(pV'm['A21c69T6+d!'8#IBhK5N!S0bM[0Ph3&Il#$EeH)Pb
Q`,dXcGmNSakHEpKjaQ'0X[P6p-k*0TQl"4&(%f)H*qfXp(r'Q[6@[-R10h,3-4'
KlhpTZPhNP6p@U!aCHUP%3rMPPTJf+hNG9jFZpCL$m)k)B'q,VA50RKiAiVRdR6q
Q2%'H+$HN-)A,$3emb"BERcC+@rp!"BT1YkHjbP(#DKKDkjjaK&Vh8@!r4,jQHM!
&b[-@5iG5E@ic64Z$5@+K,33bd@UYecMrb%HFGSkX01QQr369US6UlYY*d*bl9+f
4Y10MB"DZ5RG22a+4`1SC6J6rfa`[ZVrdl'VZl!b-FjA+kpd2Akc)hq5qrd+h4VP
0fYC(P$&C+(')CAACfhJl0@2Qla)qG"pF2pTPl"SkcJ62L*48MiP[+RBCeqAh8Q[
6p'q%JL!a6l8%mh*00c9-M1)HCXajIN,l$#Y0[K28cejaiRhf#rACp'RCHXe!S`5
6r[DDeNAd8h,F,8#J%bB#[DPd+ajKMI@[(%c5e#!MZrB5,SU!A84'*k,K6'IK[@d
H!4HhY-m1miQ$,*hHD"r"qJX!A&0QA46dLj&Id$q3!(CU6#h'VX[DS)``fXp-iI9
9P#)IGr(V`bihR!&PiPR3)l[[*hM*!C1SJAAQ01ieiAN$['9#")FIrh%DkLD'P6J
GVECI#4hl2TVISpXHFpSc3fP68f*eA"2I8Sc""U%bK910baYZrpk[61jY$K0R`f%
8!)1DBD#B2PIPc`$"S"A,3p(c!epR@dZ!XTFQmf)SU938eQ5rUbc0Z[`E2d-L25#
V6LF$KEhmipRi23Qm(4V[eK@Z"HUc(E$V-S#Ir+MbF5#QM6%YXU`5i86SXV$FQ!f
&P8GeM(@f)drq5THhihV0rCC4DM-,-J8B53J'ZQmPE9)6@3%T,PSCS)1pm5VLUQ&
a2PU0%VFSqTZ+J2q5,k%(mcfjj,RH,jHr"FqFJ6E$*iP*M8i8NFMNqF0Ck$#Mj5p
2k!Q3!"G+3!HBYMC&2AJVMdE569Y5'UHGh6eUdLaFj*(@%RpF#m+4qK%9S#GU[BA
m86KR[6!8(Qf2e6P[*-Pk+VNF%#43JrKFR#8qR["[J!-A8FJa%(jJL5@k&aZP&S1
U`@hpQZ,E365QMBLI+X2bP(9qhC6ki1'A+06+(G4c5))LV$%adRU1r1Aa2S-Hed)
"0")DXPhBa!(b@(iiR*+UTkjZFQdKiMqKmiV(qXi1NDK+-0L$+L0fLV[ej0+Lh*p
(d*KK&eBC,H$5H4Xf`c)Se&-'$MPRB+[PcYhT3cqJ*ZkB*k%,65bSmY6e-r`$G@V
2J2A4HU`Tfj`1pcPIKaNZ(k[ZZE5+)r(0`ELpcFQ504M`ZqihLhU%kPU(L&0hpa'
FQaYAQrqP,9,NL"'h,,9UfFQV8pD-QBq4qEl"f[)d`Gh,bm'-Z"VTP-dfdd1ACEF
c))N8X1ha6i4jLY,N6H(ELGU6LJ3V035lrq$J0QqTL"M5"MP`2KCiNZUl)Fdhmrp
1MRQLVBT`MBJ)(Tc3MX@lq#80ApMc&ZFh5IF0i''6`9fRBHrVpbLLkT-)*D!pK%f
MBqaYYk12`*'+PcC#a9G'S`VD#@-dVE(L4a2Lp29Tf+F$pfR,-)'*cS)KDJRXA"G
,T`[Y(5i&k4ecMEEaRlpe(i[lfHeCmJKhMSLJjlM0%NFX-J1T4(0FS`,INqHTJSG
$U,DYV'b+SQ3i8L$cHN2'AkfjNQYr"@C(,PbS'hp9!6r44jpXG1T#-Dm#(PMhiJi
DF*cX0EA"#0(@G3,+@@+IR(B`k%"Q86QI&'(G0d*-eQEAmj!!AG('c%(5a*%REZL
RD4iN1&a99LZ-Geflcd08dL'A8a5ZN9H&kHaT98LPHAkfr3MqI01FL6!I#(4P+b#
$Y`'5LLij(C&$)ia0!%(UZj9K-qM95M6(TJDUNG8[6p`!iI#$`44l[3Hf#p3*+l!
C,bM",rQ+%JQU#Le1B@0Gj*Jq&i[M-U-jMNUFDCBU*K(jDISkfA+1bk4XC-rRmY(
XX8Y5*fSQl`2NU$'ihpY`a[*H[8aK6%ED-'9Yk'PfCVIlIh*hc!X,-9EMbH[iMA0
,T5laJ4V,RbEf6Vh6(@`Y)+!VK,G@3d`cJI%hfV$"TNh,9ejF!L3RS-ED4bGG%lK
8,q*6M*4VL1Za+2R@CV@'*V'44-rEm$69XT5FT(NGqmeDUDbe2Lp$ahHdFePRZ3A
e[bF$'`%3R8jMj[m@)Ie'ZiFkF#!Z%#iF'+HG,jE"L9l5PFc1LHTFPFc1`HlKB3S
G3S0EEIX2lC(`Bq[k!'%,ZRC#MJb(j#EcL,I5G81l`qk-l+mc3$f*QZGeEPXDl5C
TT)ha0LClUUqlddd48KhSfRjp5mf"iGb$E%f623&UdVTe*-P6GG4[5ceeZ4M2+iR
1,Irf&9R#j9dMh5`ZM*F14R"f%8JcTV@e9iL5qr$jj3VR++6Q`Mr8-Xri'"K+)Yh
6b(3Y&(rC8X34%R0hAkG*F2Jc#'"CB%`Upm0@5jhd3Q53!03V-K582iH+*B[Nij@
)1'DVFRp[$9pJIX0mkKrAb+iF+T2'U8cdaPUq$[[d#-4eY#ZG!-8((lMa1+UGYkR
CZ$PZKlb%X*J0H#NfljDpJ-G1#*G+QHirmXG6D)SY2drD)aF5Fh+-REa@Y`CFHah
'Fl6mr3Q1Z!RFpDV`iHVJfF5CG!3f6c#Ml#T!Pm+@Xb"6KFJkYI+8VlA[T)"ELHI
%c,BfJelZFc82MmX6jhEU36(B@eGNISARaflP#h1@CZ0#'4CHP#fd4PSSP`@B"38
&Q!@B9610!dc!2b)[BEPZ5S%,8V2"T-SGM"5R(8kY6pma3*94IGrfY!2)A,Mp@3j
*`6%@`DU4Lj[q3c-RGDf6X"T"FE1*0XXj0-29ZAB5bVE%2!58h#FV$kcc'P1J50f
0CmHS&rijVm!dqdQY2,"deNGZL%JXYZIqFFFX4G81j3MKR+9Zh++,D1h5ZFr3'"'
,*)Hc*rPIB"HN)l(fI%2FLX#V@kKIH4Ql15iQG!HMDhqX)*,BYEpQK&Lbq4*6,q6
@1C@F0M&Q[m$ljM54X0Pe9,0#@p8DI&G3%2GKl-dkD2#pUThY%-%8f*QQ#6LT`&V
+UMZScP56LMNF,mS`,YA4&kdr6T!![M[0V(DYrD0bKI`"dT2Bfl@)ZZ1G86E8XpT
2'1FR3M)bbp()3PiB&R9@j3SHc4MhRml62alQ*JBff)T!f0MD'mNIK3ZM`R-#3Zf
9ThEbb'm9idP8aLNLa9r)9d6GPlLi5*hY[(KG4#iAFDKBra*(FVY#JP0h[TTE"Gi
KjS-m9e-FJ-*&S3ENbV"(qjH6fp*[FSpb9XA2AL[5@jFLPpQlUfFYpA+V3fd"50[
8Si2NYK83%+2a#%f+qffPXjX%jL-"dDpG$liLYEEd02fbj"R4%KrrTQciN!#DU0k
KUdQ42A8q)QCbVPh@9NQH0*PQ244GIrLSSl)S[GB+#&3C#-R)5ZIG+qKpmMKVD(V
@(R"rAD#)b0V8YEY!2cDNceKGeFkdl[l3h@1URcSGAL9Mk!A)3,JS0UfCKcBLV,L
(QUJEmb+fSeeQ)+LMGN5b[lfXlKUY5@`K8XVFP[qXK4iN'5Y&XNekXR)bR)bITA)
@P[M0c[il4*CbQ%DKcP+f&EMi3P@&NkK'EK+EE6FYarF@`f5L)I[,FDIYRYU549d
-IqZ1AY!SLTKa0j,Z0X15"qVYl*4Qr+X"(QBj9&&*48`@G63b8NF1Db@eMLmB'XI
cDUa@@,iCdP'K9!bV#m()UjNj0c4j02lN3L9r,"VUFK6Nf8lKJjFpGA*1a"&ANTR
BI,UYNlVac(cVdHY(rE-cXQbc(5(A,8Ej9"dje6GN&KiE#DE(HZhIYUmb8,r'eUB
hMT*1)6YR8P$h,8#Kk(G1qQCA68Jf5$BQj+!e$-#GcEpl()bL8#0N'$5GNhi+#(J
T[N3-5fM(5*9N2ZG4%LKd4)1F%2KUp9'8dbGQ[-66"6,V68+bSYm$SiIEU*riLbS
Glk2)KSEe#M`XicVRcHf#U#!rC-NHYE3ib#5NBaRmTGF2U%5M5DIT3#ZFQ9Rl0-H
a9%ZP1D+@!0cYYI"lZS1)FRU)T@M#VK0+0BYI4+(fRZlZ`d)XK8l,6LQ6ea-1U9f
X0iIfdQkGX02hSCF`15SE2R$6[-lS1bmT`QNU@dQD%a3#cR0QAPp(THd'rYPI10-
)#1aYFP[Rhh*bD@N6+2ajYa)&BUHP@f9rj+6!j!e[AqqT*dELTSE$l2hB"Tp(`*A
dTLbdk#85YcSNA!fJXFcCpp$d&`TE[0(#J&br@%fA,F09ZKmU1Z"-P%jl%lQlRA+
dS4db3BHdlMF2*-b0aAXZcqTDaJjH*b!F#G%L(ZfdS*KQCirG`l1pY)-dP5@ZVVc
EKm8mrYmN(P2B4)5r*9%M&52-SpTm5lcH,Fi`J)A!D%EGmj2eR9GmD,RFLHYPa6U
$2#ij05RAH2#1NX4b8CD,FLfF`faqM,TGSUiBZpJJV`XCQBqCkUM92"m@9HrX&NG
5A83(ar-ii+Z3!#M)b&,I%S$IFUb,eqSp8#!lkA5DSChpaCRM&LFCf%I,,-6F2-%
p5G24BhLlMe1mQciJmfm@1VHN6*6MKNN'3)!lCKDLeD6%jHLcIZLIZ1qm&Y[8X!4
f%#EV6bK5TG-U[T%8T,4dH3Zr@+pMf$'BJp@%NhfA!0Uae"h*6'980j9'EST8'3$
9JqJQB38QG,1$L0BS2c,1rZb9Ai23EY0'GE35*bD)09`l,3$m+-3*F%hq18)*jN(
*)!aH,1*+VA+bBb+!V@*LaXF'Dr9p6#L4Ua`F2rlR-`"p#$(P30@5+R'UjYl,QpM
8lTGl9#AiJ5qJja35QQ1+4iIZ'G`ATal$2k`8H,$%&%@@FLff`p-XT(#hcjRH9P*
Q)34L0bLc39P*p(eR4dApId,`6cHQjaA(dkh!fBbm&f5NK)%FPjK@,iffq,m'q+[
[',*K!'C4E'm,92R4!EZVZKl'[DLLNMX"[lmbraET,Qqh(`J9`-`q)[!QjbI-%cp
[AKf1U@"If&A4TX)%m(fQPd6GZ%4kM(k5e@1hJpC*2jp*,F69EeD86'`HPmLVmKP
e'AHG6'LGEhNZTLQ"IdQ`Y#,I'-dH"iSGE4K(5`*H(@DLl["JlMTk&rZ-r4,8rUp
+eD-GG$VAQ56Aq$"R4$jm$L2FMLJF&AZZmBfHR$!1aCA0kE3&55j4X1,fMG`ihf)
)5klB+P%`MiBKAR)j`1VZNL+6ka#0L6Yf)LZ1%FdZ`jIlYKiiYSX2)(kS@3PDa[P
q5kEJ!"cp!mI1$Q)rP+&r4ddEZ!r`!fd!$eL`ADKdd#["pdlLBbj#2fP*3)bH4&B
SQQ41f--%2alLJm$D)1C5NNE3`6DCV*3PmG&YJj6q[lL'5N0&L@%Spfe4"BFq*ZQ
XdN`HP"@(j["U,rT*("XV22@X`5f9f2,05&hNCF-INX8c!jhchrfh*i8(0VF%LUq
,Yq,9II$DRTKH'hS!KRkmZVh3,CX%RPCYfeTqJC5CT'pXeYRhS8(XULR+e@611&I
*f6FK6B5RRNr0Z3l8*T9XL,T2i#$&NUZ5#0`Ci-9-4C,P19Jm(r9TMH[N(ANBmTR
"+1RNYbPGkGIFlNDG$SHAUrdFR`TpLTfB`ePKK0Qk(X9X6&cBr1P,bhm`)T'RFPB
+dT+5#jRI!,-1&H03%q6"FB"NRbk2apDSX%JNQ-@fFF3`CYa0&DUV,cZ2Tm#8Lpa
f[qp048AFh-55di,1P%4+KIU$1QhI&kiAl%iG@5ZT"8-Dc4"QUiX'p2Ed*e[9kC!
![d#R3RUGb32G`S29*cVhFUBl@)43-"UEeUHK5"D5B"q)%MG8$5iBMm,,rqGHjJi
fdehAYJlbC0c$R+"6MRQGBVkCkS,8af1R43k3!!!ik,Sq9"E1RjA53D4&rZ'hp&"
4(Vd4`idpCakDHd1h"XMI!RX2$)SMKII-SP#mj9MX0q,$4G8"94pL651p)$+RMi0
3R!5fI`cQ4fb4b#KHc+h&R@H-pHa3r8RBq+QSh`41AkHYQTS6qfekhb1j[0jpDCb
AF9@kmZ(T-J928&,C8[0-[aX61bQ2&bPc$#KML0U2IIR$d35!''Gh%X3SeY,Q6mM
IdE%I%83&@QMeKpahU"[hBXD"%VF1qAi94mT+!le'q1ZabmVZNbM)f"p$2-MGG)5
[R[M4'IHXf'%UGACHc8Ea1RmbG'P(V@e`FFrBhdQ2P%Cq3+ZbSH5`$%Bad+1',Q+
JYefe)YA!jI6I59M0DVh6"P1i1eVJGdI3rZQ2*YS9SKbaDR!r$m"&jA3jjMMB1-f
a4"h"@e*#$iMQG2j(%pT+iSHJXTT*eb$Lka@2V`34'fV%@AhLb%RC3mIfVU2ifUq
,M42+G28,3"Tkem06Umle03(VGbq&81QZYZ"mP0YS![LG#,d)Lp%Uk30TSPQCFE%
!"*EfqjE`"iX+V-Ur`9-K"Jpl0R`qm[S34!M4N!$N@JL`Zk@i[r3@m9m!#XQ#FhF
#@DBJX%)Rr%d%#Y(I@f-4!91kYhfI#%4cM`%ClJ(mE4M)A%d%DRHpCB5a0"6`G6q
&$2Q(qTX22C--L(2qj!#C58F6-@)Qf$QlM6cY-`5UN8D[kB&-(HMK8d)([kR8BLG
-lVhRqrHl,P'#k!!b'RlT8K[b!N0I%9m1MJGMRmX++[0@qT(Lh+AC(khLJ8EaCdK
fSVd+UT1kPY1(U%iFcFTlD1a3S!-[G63-%A`r55*[YLC'F8M3$IiYIX1H,HjQMfU
9TP,DTMGKe*he2F%TaV#64elNmMVVCp'EM&!Prc(bVC'h59p3aE(dfLAfa$kZq5b
h1Mlck$*qJYIkCHN#-MkV92T,'4-r6lk0A2Na08U3!#Z[VGX,CZ3Vek`mlAdplAQ
5FVqApKD5D-Vmha$eVkYkc-E`G$kXS53ei$BiledmJZ1I5[p`5bMl,Ki2#j2+!TA
PITi-jE1`pk0dDIECrrk'@Qk$%EqAb'8DkKb'5&5&-9RSHcj`l4P*pC)ET(9+dkj
eAB*E(Hrq`d%bB8L,cf*&#B(mPHr6hG44qN&V+TcTUUT'R15Va1(i[[K1ec$$M'F
8f8mYYcJqe*dDQEkK0')TNi('d(Aq,V8!+qZ4%Pi1&2LD2+XUAk00MKU[k5e@$!,
GNDLM+'CliAqh%$@aCT5&U'Uq[Cm(`K%E[(G`Z5b%`XX*cea*Xm+pfE#c,[BVQ`U
Hd'L0JXZGi9q"kMH($RY@[D[21$4QX'qaBL5'P[QH-+M9k')Xp3%V#bVl0&Qfa9"
&Nfq"D84'G"UYfe(VmY5aXN*IPkHVliN'M$&qJ94668q"CBqSqER4-mI8RN5-8Z!
Z%SJXmlD$3YDBPb(&(PY(F5&969VrCRH&r88rUMpd"&)(FN$hr4A4SAbh2ea2UCm
e*rrDdEm(km!U2m[SVDMFCDPkTjj9jN4!I9h8Y1'184%'e&m2DbKN4c#5)6-6fZ'
mlS`U'U$NjAQRrj`CE!(aSYbL!8)!HbfGl!&'6,PL!YUjTrFfLh#$$jrRJ[iKi($
UPPIh2&!%8C[mJI13!'eUkPjN2[09NQ26RLL-pI4S'$$Td4h3Y&MeqVkBbEThi8X
IJ+,bL-!X6JpJ0+,2!RddfJCm-(2fNH6MrrBBl2KY32FFVVTFXM)-65KrX00**[k
3!+i&pME$CABZ5j!!YkMUbKp[RHfcRc+3!!r)!*8CbYdV(*L8N!!G4NID&V1TT,C
HQ(mE`M$TaPTLKC(m)jP6dTEJ"A0i2M'-(Yd3mFKAaciQacrVK(BX86JFQBNXRaJ
cZ-hr26+UrZQJ%$+6!*)EZrQ,!EUH"#)DfA5ZR&Q&UBFZGdi8U-Mrqd$X0Q10@H[
eHcH)jN2$38PB*i3V@GT+KShXEdj,@1H)DmmCm",1(+0"6PNrb95V,jl"r8,3!e2
5#L5Vhb*2DUV*qA"T[UPmb8@H3CY9SG6bDCS"pU%LqZ"q(HH'Hp2XlmN-1QkTU(m
`SEP&@jTYBV#-D@&-F,`bIh`,R*8)B*-',B,FTTL022J(+IDr!lH"l1L#1DVCLli
QY4DV5IBTcd9)46mr4BB$3i80eQ+LpR`8Jc-1`9,%BST2#M,)E2lDlQ-'J@CX424
0r5T-J45hIqF)X)UXLkH0c4i`h'pfiXhA69N$(H'"#XZb"Pr+b9U(kG4$(b9-G@-
#mUC`LjQVIU6")J(rc)cf9-brkj+TjXSd2!NG*Q2kbG`q6Hd-+hU3!29GM&Da6&A
*d%`kqiFFAY!r%"1[H%!K0Cdj&URBTp@kecb3!2KPBXA(j#kQD4+eF'd&Pc"H#MK
#+9*QUG'cpCQIHfbmH+plDNqZRAIN&8)Z,drebpL4iKHGHA$#JjQ`dRJIPq8@me)
`dQb2Y'U%X2'b0FK&UB$a0TrfSrH@EH+mGRA9A1CRGKf#Z@d33[ENZ6d@IG2chd-
kG)GLT`)3V`rV4(i+F8YGf+Jd3AbmmLI-LRbl-l%f-%*!b4ZVIe-0+UiIpi@H([)
!SYKQYhk"q)6bAE%YLM6ceK#SMPL,Brf8RNSaK*cL6S2&9%h[kee"dN$`%*bLF+f
*p+f2fY#jh55l$`p16fEm#9'SIH41BUM6F@k"%6DYXGKV!YQZJ&KppY0JTSc%rBD
HA-P#l@,6JfhDI)R#e@BI0eQ2)K+VIQbi4"$8E"p!Rf`C3*pX6%#IE+#F&"I5E"*
PI$(*MjkGa5TSMHkJ-(HMdBjkD[P+LX"Gh"T5U%BQPiZ"G&Ni0YrC@DhBMcae%5r
*#k0%1KK-LMI8J%-ShCrk#HYjkR@RA@0U5aDc6+r0[YCQFcqd,CE3h6efZ5)8P5E
4NkFbj&Xkik'USB'VIAZBd5a%50N4hj0BkT+[ENjDHMI,I)&51Li8*AZb1($TI5f
RQT*hI2D#%2U0(f*d(iL-Ael(0-"[RLPR6+2VfV-5mp2)J&,-XrdPMEVCRhQDSdf
Xc-45'b50Bm#AUBp(Llam!h#i&65kq)3$5hYp0CeN5[lF+CcYdeY[a6,GQ+*LIXc
$ZiG*D'#*+V3q%r6+D&C*K0XmF'rMPYSRLGP-84FBRD'KD$LPIFp6*hK#+0f`j8'
)hEqCjVV0RmYC$@a"N8kI8R'l@K(mHm@iJ%k6K2`cM@Z1`0ehVfkFkC@L3,2`@Gm
H&aSCN!#AEB+lNYk[5)U3!0Gh35K#!1HCZ$6T6I`eA(lV#l""UGkYkd'Vq609LHM
iX3l0PF+'+)YN1NdM`&`HD'ecL4R$jNHjEI$`bNM2*BRP0haDmIcm@NYG-8cLa*d
jm#2k#r6p0qfA2Lp8BAapb%+-+NFX)hq[GST`llRB0rP0q&9-ThmF#QAmDApc[eL
@Bir"#UIi1l!HPi9chBQaC4NkE@XhmMEhQZ#J&U*S`pGNSX3I6B`66`)+8l@qEiR
bfU`d%VSDr,TT5Rl+r!*K1d*cJDM#!h5H,e3XU@aDZ'*Vc&F*,q8'FjfKXfR8!bk
R%S8q@lcS01Rr*")b[T!!(@`DXJ+LZ#1-Y)AFRXbi0DLmK98V5Tf&S9Y+JlmU,1R
raH&mKqN)(&aD"r9mB#&dMEK(RVR%b*[)4#Pq6@P#dGU44d+eVF*m&5SrF'EcD,P
PU%1D1FrEaV!ma49HG&#R1f)),h$Y$i9i6""kI%N9mcJ66aP9U#%EJA**@4)qmm2
B-d%B55ICdj94L0DN1Sp,QXFT4hZRKBA-$-2LkPd3MMKS0'd5F3ZIL1ilpG08!UN
6Efj5J*!!$jjZH&M40e!aiX,*rSX6c2*0ZHFLd!IVHl1+)E"$H`XHUH$amq1cdm1
rC(UM$0Ei*USdPP"2`E1fjkckrY0pJ%JrPQ#RKX[I(*@C-6G"fDH"@BdKSqEmJDL
,U8GSh#V,mX8%pA'DUrZcp9ibrJ[NjQmQ`R,C[M83&Z1VSeR,9pSRMI#Y6FeSM8c
E')$c@baKhlC`UUiHDUZ-Hq1a26fb[FamFJa+X,kU%5$e3kHp9(#CcS3$!$'6S"1
5jRaC0q@J2r9*QJkZmBU!E#c(*8(`TTd(flX3B+4dI#!Sb""!b2'VY(FK2(R2QBH
$4Em6"NPE8Cf6,PH8ekcjV2'kcd$20khB[,6Y`YRC%hkiGBI2J[R`Rb-dfL!"EpQ
U!683rm5lZ`T@Qd#XPefZ$BQ5pk#LNbIPQSQXFa%Uf8i-)qf%FSAZMa#"J8$9-KI
NXC98cSkTqB`"V,Ya6HXj*aENl1P426lGV+r!%$BR@4EkSdi[4HBi`Tr,91UQkJ`
,*E04TMV9GDKc33F$ccNS85KkCV2BpXK4DeJ!B(dB1N#fVU4*Y9B$0#KQh4LcTBF
I`9J[RreB89GPS3$FGdGc12Kf1fF!,Y5q244'3NjD5BB3p#Kek'@pDd2pGB5KNdr
09,6i'5rK)XJ"kbE#8V5d)"PHSYbqE+GBmJ*3,2jZE14h0$3UrKCBNdHBN!$J#6[
-,PKVp95#,drkmbqlC'iUZ'6[LTTK[q(mh(q3!("0UYj0`P4QGMT''6EN6SV&6(b
CraU3!"lA@T4)(6QTf!NT&baX8Bj&$'80C1!eS0@0"0Rr1UJ"rr,hV,Kj20M%3m0
2U%+LH2(&%%3[k(I!LdZ4)99*ccTBB@4%k*2meI`#Ra,$`JP)J3MpjcKFhl!VVT5
Kr&!qG)h4AFSqR%e$F,CFH-"BR)BDp5qjS-&!ieb`fJq52k9SqM+l"[iEHH6NHIH
`cV$drCTT#5BMeB&453NT%D3I52"aGU%QB#)5e(1*k,(DT6ULrU!hB1L)p,"R!V0
*jYpKP`0-@D'dceA!k6iDY(X'hp96Yd`UbUdZAhm[a`(9`5-CR1cEM)-AMUNi,6M
+HlASMD1YL#`Y%N6UI'Kf4PK1"8%P0'k+qZ'--pXX[TBmC8HqUkdD'A,!FM+R[4P
5c@Jf(m2P$c2c8JX9rlNaST[rDcJp@Nb4je#%'JBBT+AZGN1FLYrRE8@#3AMqp(h
i*5JKlS+P2U9BB-r"X9[hUQBADLNFr5B@1HbMbG1rJffU`(amBci2QG3U"BNbAYq
r5a`-!U'5$`kU*E`A[bRkK#@V"$a5+l'*hbilXVPUFlT"9$Ppa3L3!*dA%,208,+
R)0VqAiXfM1S&Y8aV2l!q%89A(XE'QUa,mhP'q`e+q0'DX9FTJM@-Yc'f%dUeY9'
FJ1`9TqSZ`f,A"pGBUf`*+f*h$54%#Kj[q`Q#Y`r%J2aNK$5[F!4ePb"[0!'XlbA
cH#$Af'*jQ'XPdH[kpV59QCA-3jC`$13c@X5Xa$[E3P)5Bq'G&!(@J6"rF%efN[3
HBR&rIjPi"*61T+%cPC*DR1ecCkQ4Q'XBGJ"D&BShIj83G)(6cJkDe,[eqcBAM32
2A&qai3N8DYLY@rN@MI)3@UfKD2!c5%4YjmfChA)i!6lB`D&kQ-h-bCm)KKU#@r4
&I%i9NPHVPGc"hef&53$qK%1mhS,EI[SPIUD*rP+a928,%4!EKbS0&PP*K8Y&4Z@
3!(06hTkYb52fYe[JcUKV5kMR$B4pEZe%MTEX*a0KaN3mpS!`AJNaZADC[k`H$k%
*lNqG&9amrlJN0$FVEJ16G+)ZNLL*&D,'K0cDfFmL-cFN3ca#fadE0(2%0c6SUd)
9RHZKq[*h55r2h1(U22r)jSjq$9d*DcP8((IP[pJX-Mf%E*ME&S()H(q&"))mi%@
15C)(NI%"K!VLPGZ89!C1MfGePbS[i8Q%hZ3+%"l2cLV-Xlc'0#XSYkN060IHHa)
"U!I%Xb&EeJ#lk5SRRTaI&mT6A+[2KEQLjfj&4LNeQ(d0F-5Lefm3Rl9F&#-pT#i
T+Q&r-8`j8AKK8lV(,Jef-5+dNACeYp2L(!U9Y)[GTa0jhdijSJ'-JbQl-(,fk0K
!5&5a5J3Df-1c&h9HEZeP(Y5)"i[fSkV5I[&FG"aDm(c(JUmU4LBLI`(f1J$LkDC
f(jT0FNqXPRTGPQH8Vm(CD&rj)4KbdVV-TkdS+,&e`$8$)"HS"Q4#$*XF*Smibp@
BTQmleTXh)j%aSrAD'Z"iL'JB30&M52'ZNLq`LD!DG4(dA1ZF'hF2[Ujl23'4LR1
elMm8MFS3P(%!Q1C6Y36diTNm0i3U['Icr,d0JHD8kB(&)jHB5p#KhmL(&-RcKcp
,1FdY!m`$(bG[k'0,6AqBm%+&*5aAj&cTGmidY'cN52ZA41dmc6q1$R#`&mRPr8C
*JLf3!'XUhiQGj+NPaL88Nr86SML-+XBiEM1$dX3LVhp$U)1H8N8j+k&mX!kLUr%
0CN82rJSe@35'#IE2$8Pb@[SAVh1L@ZXk%6HNE5V#9BTcYc9V9Zm)PNq"'cKUVi[
R"-XZAAZD8@*8c-D6HlMJ#bmkJ%"V3S'I[ANCV5pD)T3QZa3LCf*&(!+K'G+EF*M
K3)VS!FKf1((rbATR)!D(N!"dT(6%9R#KSS`PL9SGcBN`G+(ZjLJ0KCYMBJL2qHV
ii4qc%QrS#NFXF"5)'Sq`9q81pqIVH`m@hMNdBILlZf$J2QUQPGeVJf+,(h0V-4d
VUHNad%fmiqY(!YCXddiSbGA+YDplfSddRjf@9(K[b4(a#6E@MS'N5'A`3E[G90I
`*N*cCU*TNk@GaBCTUBVdfNL'k)mPp2hTqLMFRADpVj&5-q`b&i3pK"SDFCF5%LU
I!%mG!G%,UbRH[Rf5ca,1rfQNC9,56meL-aYTJAJDm@f3!2fpA&5k0'9qJ8Bq"(9
S'EX@VfYFNSL95Ti4#9q)YZNG4fL3!#J6Cq@5PYhiK&I)"Bc+32R)M(FrM6'D)8%
YH2K8,M+6CCI$G$8FH(e!6D!$'9bi2r*hPh+RE%68dT9,PA-mYi+L%&M6aLXq,ZS
TX,XAEUeISTR&UVKlFp2a+kJJ1MlUf`NGk,LFcd[P[!dl3D)Z)"pG"qaXf53!REP
I*Mm`FH1,HMA2Yj35qZT%!L0-*!b$lc`2jBd(9#ahb5JY,mUd[mB@`0J#J6)U(dQ
6a09rKT`mEf)XM`lRmSGikF4"0VXl8pL1-bp#H406FN,!-552&4[pFH"DQRVr0(#
cTeR3E!$H5JQd[%IDYYKH@f(Jdpabf!#rjqQ48bC@V6rSC(0j&-LpmLp1N!$J13V
lIE&#rUl+(`MkX14AV5PCMeB0USLq&'%c"U)f*a99hYiJBC8Pp21QIQc,D58$*[3
6B$l1hl0q+(fiG`B))UdAhkHh(0#Y$-U#fbbUq[)RCAa@`!f@QfA(+@ATP9CeqYd
8X`Zi1$$iS!V(1%eZ-pQB3k@T!FNZQ5JM)NkfFZ-MZU8*$'dI*dbBNTS0*5f9HDk
$643FZ5hX68'pGSU)J(`"jaVjrk0qliQEVD2jNGXa+kTdkD[4MrYeZAM0c3Kf%82
6DQ`6,)(G'[48!'i&SLj2Sp`90kGLH)S(SJNSXB!LA+lR4%"d9h0p!KkSF4Q41A8
FAkF"rBY+k,&k+YNCL,fGSC+&X[8hNTAQ&j)9-p%0'NfQkh)c0iMSALmP[lK&D"B
C,F5*8Aaf)X`&fkB(4fepkbP*"NlYR*[G&YdEKl8bi65Pip09f@Y!Nm(C%&eTRJJ
MV@64X(l,[ZJVFp@0G-f1&25&TdiXr*C[Ri2cAFi*Q1@-fDXVXN+ZEf*124L$rb$
&kZAX5FEVCVS)FkHP-HZ2[KNE8MN'4!*pR9Lj3"KTF3%6TDm(2-MQDHIN)iKMk#E
S3c@i&D&*-8d0k#+N19)ZZ2Q%'A$V)Ph6hpC)TlVl!(hUB0l[kXGS,8)lq0L2648
4RQiZUES80ZcB#E[q'FTrXf6lkmrU')"GTda01(-jU'I,C-ppR9Zl#Bqm!ej`iJD
bDbTUc0MN`JR*IBkTpFjaMKCDK`YbN!#dCG!aPC`K@K5$ZlHrmLJeB'Z41#$hGP9
1BfQEK1K,mUpc$kDEN!!%Y9S26-pie[ad25i)RCc2S8444!BjlH6!6Dq-R*8p0)M
d*+95be(h`M@&,!&4iVA&D"AJ0RZ-mUij+*!!Y18b8453!&6%0%SZ8DTf*IZDS%L
0*eX*A3VVF*HlVc94SY&DAHJVE2!)3BPd*$JThAIRm6lhJSVl*@qS[3j1peCIfiq
ceC[(iUpm[*!!`6c,T-6`9(BC6CZCSB+"#id60pH`'&+"4(1C0XlQ3iP92AZ'lhL
FE,dNFkQ#`)(5)mY,l"qJZmXp2$"$qlV%J6D,'dX)G(f8b"&CAadi)`PPc$d&Bpf
K4d1)*F@cGLMC)CbMbNk[ULh0aMRfLZiD3fNLbHiGfLDNdda%qL)@[D-iLBkG$6&
*D(,2@TGk1bAk&r9R((kQV)rdjG$NAFeZq)DFpZik5m*Xm8aM$Nql)1&Ni0K`(J@
@DYpY8UK36)mhTc@H`k53!'!pD0#%Lr+1Z+mHVB@dNNr-"6Urbl1TVlJ8AKVRiE&
(H!KR$"ZG0(85kACSrl@bJCrT'-NUIEMqK19H%b@AeQ9$(%DE+a,RVR4G%8L@pDk
Q,LMZ+#r0-d(aeR*#k5[[+daPP+2$Z1q5iJp+MA%0fkp&jd(pK,8kd`KA3JRiKP0
9ChF)EEZqm&[APD!)RllA4GPB$0lFX"G!5Md@kX#[NXC`0IdL'H$+XCjQD$Z46$0
M0*dB*52X"q+fMI3q!P#4GU)V6Yec1YT$VJ9a#"(2N!$2(*!!+hY1R%[VjSQT@Tr
Bb`d#hVDmGLQ1aKZESGR00ZAi"`$V,E3q-#CTb!aBAf+D(2C#mR8d&LQRMM'+!Nm
NPaha)*ak-,mSjLE#Vi*HJ5&',*QGh89iP$*aQXaaUZXIJD1PB&!lP-Yi6`HB@2C
cNeH!*Q&&lKPB"(*I!3Z(5JYUI#5%ph+1qeUA!"I4P)-l5cjTLJmh+L9TN!#a&Q[
D#0U`%h0hHY++bdEZ!SGJC$X)3`RIhLXE,+`LMi3f-ih5X)19L2"KMZc5k@*p*Z$
QCVpG1M[,-ii93`6FjZ4iVN9UV%LRE2%NqJTaV@J%FpPaFk[fXc@BCjLS@NVL"G"
IJ`NI,)4,Zm+MeRL6jYX#8@0)P+l!EYTQqC!!XkAIec("R-mYFb,)*5i4lJ8rbH1
D-mr$KBDl'bZ8QbR4I56-U3)*6HdBc'U[Jq%53$cS*!9XC)eX0')dD%63Q0km+#4
cV5heQ&JjKq9rp,9XJGrd(CDh#Y#8@ZH'RV()p8pj(kF43%JPMBK[r-"e)mdIkAm
*$KDRSp`0c6SVD2S9EI0(!RJ8L,hdE-EU9)Z3!#p"U$ULa3lGq6Pm#mIQN@bNZ4C
Ca8,DF91L!$4Kc@B(V46)jdCKB2!`UXTApXUE%)DFb*IU[LGK,NhmAf#8eIMFUkI
`3)VCN!!!YK-f2Se,22VR&TQTNQ&fTk+a[*3ZD+9%XV+HKN[IiAD`pMM2$`5*ddC
c8,f0bUPlS!YL)pKd1cH2iHdJkKXhCFDK-1M$e+%Re'*aG8UIf'D!Vqq$2k[QE`d
IC9L4R(0EFch$A9f4T)%l9dJCCMpFNr(G8H!)391EHVC"la,ZrEI$TTDe(JCHTR4
`q0-4PRpr+6-'!,`T+A0p@%Icl+hfkCQ1[-`iYUJ#[FL@("A*"Zi"EX"UX&r3r"i
YG(`*DSrNmVJIIcQI5G!&1rGl34HeK5kI8A00R'!N!((ZdFfm)fC#P$G8VY6r8X$
%L[RXAK)PXlKFNFcQ-(l*!1NcBAdq4e3k3L!kCMM9Ib0hHh$k!!P1!0T"L5*'ji"
)CGij95d2HiY,MMMZdQ"'eQRZkl%98(e%3"jURqbQ14ENebC8VS*PbM%'MlB(4Ep
RMBJ5c9lQYM#3!,E+6l5lY5Te9+6+ra)lY`-9X+%pcAd#fFL"jYNA*K3MTKI+FA@
YdB*hK&#Hb5!RQ3pUDR"'N!!$+,8NG(24a9Gmm2)dAk-HrBI2XX-R6i)8SkDR9,'
l*`Ke9`M)MB#Ub#)K3FdEYSQR28VZ&Ue-Q&X!43@1bXCm8H9J#5[5MrGTSKr,Jhp
XS"P5L3K0Y[,++B)2Q#SID34d0%5X5pEIKNi1mCpi)f&3EP,Ea*F8UCE5VJ")Cqh
82+[SY`#8hrp&#'0r85H#L@PjI5"YN!$UTh'S--9F+kkimYB&TbeaM+&Z)@TP2#p
3X6@q0Vbq%"$%fcR[2*B+"XRp%P25BC9JDlI&Qf6F+Z&'BC&8HXG`&&R!RD0012Y
EbIdG!Zeh8N4f9Y+pRJTF6EhAfBNMF%`P1%[YPc-hamS,'F*ZIqBc*(r55f45)4Z
Aq#d""Y1fLX,6Y[edJI8XdESb393d9(!5ZE5$#lYES351*3j&5(b9r[FS%[*V95R
P+NeHj%dQhUI`IdKq$IT@&6iiKp*cm)FAe`Y!N!#$%dPF9PcZ0F)3lZ!`-3Eb&PB
Jm9)`B9"VaqmT3Ejk(E1IShSkC)@m'[&rL$TZ9ha)Nb(Rp'q((*3U@@0b)ec2dlL
@Xl6hQ`h[8KemJA*A85T[UFT6Z%#@D2P%@6r$NINrLRBT$eAfN@`"mZ@3!&4Kmea
Gjk3eJBk$$63Imi4RaRGl%)b'3Pe(Z1h!2`h8ib-V!!4!hQGBEh*G1F$#F[YC59D
RikVN2L-"j"KBC)fSS#rPi4!m3"",rD$82&$0la)*35i&A)8BY,Tk-041DA8*1,N
5B3'T5qUEHc"@S9*'+,2K@Ia[VLJ(iATib&bdjp8mCE-ZfE-SFiF!`q6fUNB5V(j
bVc&(%K6LSIKF(IND"(BbH%6EGjeKXZJ2Lp88!D5i-'9(%SVhPdHDJ9Bj@j9,jZI
909[AIaSqQQ`hfK"IJESdQ#prc'RIf6KHi[rF-PqaPC-FNBPjZ`h0&8JXD$be,JI
qT#i*h#pKNlGlGRB(AJDGJkkMFdB(4-I2$CL2P$[bd8H@6VQM&C!!Z3[,c,KE6`b
ZZ[@#THS4I+X(m#e#a,*EJ($P#*Lh09Q%EdS",+!q+DG[2pr8abbB!!VD[HHfeSP
kdh#0"qC0lBhBAB4E)Ba1a19M*kiD6"Z'd*i-bi8q"jPH@54SJKp&#D6`,b41CUd
)3&DY3Fm0QCm@)Pe*RIe8amI$*eJp+%PlHl5mUGkAahBIf(DE"pUFGT(X,5V(GcA
)"eNR-8"Z3-%f)a$!1%[Z-!0HQcd`QQdpA-$K@8EqMIU*5"q0Sq2[fFF0rI)jmPL
R)02(8!fV,&3mip0JZIpJ1HJI2e,J(*j(C)d`S[`U`CdN%VP56qM[T#)NI"A4FeT
jN!$le"!l0ii[D39@bdD0BZP8,9Pj9m$T,jpVbrLdICm#%)rS+BIqclJ@p`&IRJU
#6Iecjf*flhE5"ii"pV5BIH#X0%fd(mf*Sd4+qbJ8rqLJ"D'@IP%I%@#R(m6[rlJ
KTR4$TpElb@$LcPH[(a4PVdCIDK)ZqC9%I"K9SR33)(RX5N64kA+@TI(#3mSX4)8
Y6*L+-c!&CE3#%k[,-r3+Vpr*a3[+dQ*ISHa+9T`&'cE2XJ933aITa3K'@(Z[+e,
lXDaKIL)#,d#3!10)c@eepjIaYB1!4qc0ei*AKbf8eC`j&qJDK$I1Q#DS1f-d",&
Y@$Irq!-XJlXF55FmSCkXkR00N!"J-kT+9JQe-JVGTp!S8@6SLJR,a#JSAlV!rMG
KU#8*T4a"Ab@YF+h)DhI&-N60q+`rSFr+$51,()kPfBlp2aakV,JcGHGfRZ'GSN9
e[`,SF+hr"ScpmLJNURdd)5-+VS2Per$#Ue(6MI-+``"$@Q1`D9QZD@,DN!$dY+F
id6)F1Qper@q`-Q3hh!NIdMlEQ[3FF(K5LAGF!1NkDMcbl8V20b"&`(Hr1j!!S`U
3!(2ElCh'*0+jLJ9#Zi(Tra33lqJ3I"2PP&BF!mJN)*),Dcq3!!rFQhC!+%@8C$e
(DZa("M'+0XkP!HQ1jU@TqV@GL5dX%@0q0@hRJI+H2H$!m)SDGD6Ri`@fB,!cf"m
)mT63F(12Erf9#L'%qqQila81YVMfR28'B!*-X@qeBB*DceUi1I%kDU[fVYEL'bK
0ZHeE*ZhGTNfTUmCShjAeqMfC!L`PB5YbkMRhjFrlV6Ffim!(VH"q#YNI+VpC9k@
NEhDR4BqHKcjC+S91b4QhcC8aTr+edc4DRD*JQ)FRGPUql1$j21Q3!2ZT"XY#bQ3
A4a[f,HFM)$03lr$'1fC3S"#h#B!a#-ZJ3$i#NkJimDc&JGf4ArrCpZKAGSpm6j+
F&!LMl$`fV#k"QpTS8%DJL4p+"U3@QM6A[UpEk19Fk8L'SA8Y+@i)p@#YLGDqcL[
BXZUEd*XT(q+lqXL(T2Nl'98J[jpFUjCmHrdNCb8)#%"VmZ4a0$k%b2%[mcr&V+A
Nb%N5fjpc0(EYj(SN2+KmNXXV4@I1'jFXkPdpJU@jrQr1)bP3C(N!,TDK*IKK)k[
pI-mdBjfrUVG%AMmpHEdSMccP6U[PM5E2FQ#KPXKDZ2HC`ecl-X`N3YcdpJc8F[U
M%'rTfkeEkA-3EDSjaYeldTCahL&AP+LAXJ@lL2qUabZejbZ`#1,ADILq'E#`M2#
`C4`i-d32+L%DAefe1X@V,bmXHMT(Vc89qRR9C*&T9i[@T1CdDl21jrm-6V`mML5
%5K&qB0iN5'r14DR0VT4P+mBSX3Z%dRP&YZqmdrqcJr225mC%+Pj$&qmadC'1lZh
EVXC'mj6MUd(3!UB4PC1mS-SR(%U![Qd(e3-U@6a"2`HF9h'`@a+JQ2!H*bXP8%V
Cj5pZ&,H%9k`!Qm$lKdM!fCcF&SARE@+G+-iGh@dSAe#H[YC-Ie3j4ZkJ'C,Ihah
1&i6m(rmV8q0T(4bZ,bA,Cj)`S++Jlec(41(a99l[ef3`e[q",CCJGMAA0kFE&[6
mdb'Km%UX)EK(TA)(lF0(1TJK#d"!Jrm`HF8,h4+rrhE11IY*+lhbaj'Lq1((9(6
dB*)BbB*kQZFKhC!!XPFp%jr9M9dhMZIX@aVXTlNmP6FaUpUc(@mCA4+0+ISH!*%
N9Yaja'rTpFTlM3[U$PBEHC0`cQ#iZ@10Vc@!*&h'&VXXlkqrf)6BX-#2USLHKVj
2L`hM5X0r+P$BMYBU+Mc&Q$m8(aDGhEQ`YMPIh2qK)%iR,9preTh-YqrK2S-+p$[
l,[9GXqrPD0Gr,fL8&N$pBXVSH8m)VMPEZJLJ-Pc,1YA"BDm6q[9A&b9(jl1M6Yc
AZNrcjVjZ%b%(jQp-Tc`i4"IFdG@'6YBT'991TR)595'`[!AHEKcpJk@r"d3$b2$
P3NVIV*KFSI`#*cq*rbmE5D*4Jl)-)pBj3i0,!p!UcP&KXEbVkU3"jb2DqADm@ih
fR`'Z4TAU#Hh!SI%Q)RKb5j8**@mM`%(&GjUI$518B[@Af`J6`38k+6JCfHUrS!b
C"KrU1(0'V5RGBpa$di5rV4i`Nij%lQ6I),UJhdi"$e)pKE5[f4mCXeDS`E6Hr"#
A5$rm[3$b,N9bKki"6Q5JD2TKU#A@rClZM9QRr40+!ZY5JrfACXLSX$9e2U#9+9+
@&ZV8jQM6B&H@EBIdUGLGp2e*JP&rr@IBP(k6DlLA9&V(0`(#[3[)E#UFmjSD-cl
'c)P4%[EBEhmNNk$h"YkEeb-9+%j8d`#+Q*B`*T!!"X*GhVS$0Z9I[e&6Z"`B0AC
db'G"&1-L+4[NH$i$0K3Q5EiUGXUM()J$TKi3#0c'`[E8hdVCUmTIXaHFKGL910D
N$1LKeYABIdAQdP+4m!9c(GdAP#liYmqH-J@8M466p*eYfjSY&FaE6#bFfB$'*)"
Dp85r8`dNRipj#hH'I+r8FLNYR%HmAmYD"@#8LlSVd)r"%5645KkQcKqZU'ha')G
0&*dlPqJPUJc9"THGDb'rrG"H68,m3*NX$BEe2r"0XY'e[0c&dbR6i-FeqC[e-M)
8@4lb"M1%`GJ@H!felfme0R,65Kp$5-4feqhpZQP`QGQM20q+rXUl`i4iBZ[3kHB
VQ$U96MFU![jeId`JL)eCqQ3@%H%,E!1Fm0`E5L0-9q+cR854d#U*EhQr88(9V[d
5L)b[r5Aq`"T95)$-KN*GejEP34e,'TZE8V4-+[#bP8(&Dh[YNI!UCAhR&0%1C%a
`l$+mc'fE23eASkKYPqlA)eYY043T&f5kj'l0q0X'1h"[-XA(EGX9blUm45J8a0D
6QeHJ95N3DF-JRf#JKU(c5Dff9j[aIiFhib'6$4c&5r8Mj3*+$He!NA`,@3P)@G)
iqlpN)aPFial$&Elcc!YM%+a)V328IaIc4Nihj,RkYdR6MEAM[RFj&L89Dcp1'P@
PA!2(AJEqph-3I@fd+&*DF(%HV#XC*8a,Fde4YC,fq10ah&5MCr#[L&I45BeP(l#
Le9[1XVJ1(9`C8d[B,I)3KCZ(p-8Hc&*YdhG*0f8D59khAMl!BNm%JAr3f-9I5Fk
8TX*i-3HX32KL1j,MMfDXrL2V1FhImaN$"`+e$JCI3S5EfpeG()4['i"!Dh1+h"c
qKjNace+T$*@Ti*bf4Y08(5M%chBTZ"(pdeYIcRq1V1%5eC46VHVM"$,T#QL039E
'!JD)cR9(k4HcppeJ"L"SVL'K5FX-iF%S)T20dRYEPbCMdc[Nm*&ld`PqCqX$[1D
b&LV8%6*jdiT!4R'83E)ciJBJAp$MrIFr3rQp5!()4L%Qa2e,YRm,QY1@jC%#BGq
6l0I3-6dBm$Ra8m0QpDfdN!#6m%%,2&U&rP#LQP53!$bc(AE(qpekAN+Yh-bLCFZ
T5E&%+,qjma[HCBELTC(Vah[5JhiI"CYrRBQ#k))*PaV+"qE(YjlApT,S0kaH@$$
K1k1$IS5i)A"($M[d6ZF*F`UpbHr-a5N[6&J6)ZFS[Rq%4Sd0Ur@$,bpQ)Qa'lq%
*&(@'jHmZ4S"klSE'DkKG#L4I"!h1c+3*MZC%eUUb&1ImSF)0i`ZSljQQ4*XUKir
2aHG$'k-BpGR$'P%N@IQ#i4(a#Y'DYbq&5F(aM+ea#!c%qk8",'`2%qjrGFN*bmb
K$$0U[AaUQe#3!)jbeHq0N!#DS"fkdq)q5D[6@,)cP[1Ma-(8YC!!r&91-*N-4k)
EhZV8[XES3A#h&3)QQlkH!P,-@ImGE1qFHH3&&&kXlPY*9bBMk'h53RqF&cH'#Cb
YTcUGX$f[T$jpF[HeAPa`3hMCV$FCkaD20qN`XT58XN*d[il+"cZV$,eRT0J0""H
*4CKX@j0pSElpGUMccT-P5UZ@b$MCCTT*a!RrDIHc#BEqQDqBNHRqFNYbrfUqF@0
j*2-*Ml(0$)FTcN9b2%N%h*J#!5U@X([Q!*!!r-@Q+9(!0m+6+*60$"kHh&D(NAK
l2eXZRfMYPD&MUFjfR-'b0Mlmk!Hff0c1j)@-%4D9Am'[SbG-[VpE2b0@QT1HR+4
4j4B5#5mpABU"Z#c-U)B&S1NDrYKc'dM$DG0'+QS(eQ1[mbB5cNA5QQQbTaqU'qL
662D'&+-ZjP!L*MP+e39$kkaTLlJ@L)cRm--DXFmCK'9kXdB1%`%8i@Q-XBLYrrm
XD5"b,#Xl0ZTMrDHVmRTl2h`2'r-BLK+Ui5,*JLJ48Hh1fBAq(V&(h!)iHb'JJC2
#$4Rc5dl9BXRrpZD,,4V&"9@`8J6!+kShPr9&2S9MT#6diB#,DLqNbCRc"90)`bB
Kh56Ip4M%$MPipbf19ab#6*Y1Y+TjcYmQpiKl!"&QfC[a%Z4NiB8fb)dPl[kLdV'
YT+%f3'K+CcHecFbMlck"qS9AaZ!a8&V&%i&CRf*Em9(GS3`$p('PRckRB(A,B)D
G9cbDYN(j9HqZqTBCBp6Ih'Y2-N60ShFfJGlXc+*IK96S1rQ(@VjUi&Y2k4iIK3(
$1+m[JTZfR6T*[p$FKG#Z*eXi*hD'd",J9b%Me6%3J`RBM,!VaTTCVRdAR2R#*D(
!'GQL[kkM!Pre'edr-b(i1'mVp9k(&ADmE[iIEjb[cb$fjP0NH2IXM+jVM`1L-rN
!**)1$b!QhZD'1jN26-N1((!Xq+im"-5PT2)I4Q2J9%i5TTYSe'blrQ38%q'8M%[
U!@N`MKMlI-Ll1Y!L+LG0I$[k`)'SYC@ZmH%jMMA9LU",e,Dc('C-L`2r(1!9I)I
M!Pph#iIME$-FHr[MF*-KQiN"k4AS1T`CK(f2440LXSRP&-23I!G"0q6[Gi(kI!E
"rG,IAH'VjSAhe%)HYI@Q2lM(DB$D@a,3HVBE)[m)LXUBD`'06P(06XG$h!I$FmV
kCBbqK8@iMY(*ZJr8A[Riee21K-9QGi+&FMHDC4@Q!S5T*kA",*H#5(hMjiQH(#8
lMNMX"fj%KViq20Bf"eiT#**&Tlbj3$Ce(i9q'P@m$&cGC8&[qHalP0-BqFGlS&d
1Y`cL'VX0$ZPk(KY'UhKG@bFj5!`X2&%RXfJYLcNLVebM8elTcLN85Pep#(#6Q`'
)3-VRSjFj,9#,lYbhSid!5T8QAT9N2[$BG)Q%#SG'ffM'%j'"#''FqTk+LY@NX!m
B!Ea3X$EL#C[RKTpj$4+jU@EdMqJHb5,(#Nb+2EbmXmdVK*JP,EJ#3ZpY#Pke-TU
kf-Lq0aJ*AP@fF))"KC!!S*PB5k50a&PPRA2VI5R#E"QK[5@#!UK'iPTe[lHH-11
a3)rkEaTBpf&Xc8Yd*RC*9*-20LC!a5e'q#J(JHQ4CQlEXDBj3Z(b8U5pHEQ6+$B
@*1$3dVhUZ4+0ma22eDb8*@2KrZT3ljGCP(D8BeUj+k`V"&!Yb&lKXbDqNSB`NB+
3!)"c%FKN,)pN&LH*3T9aJ6Zlf,T'$j!!3b!JM`mCR*+)Z%KBa*'+V"'"YRebLbV
YL)LJq$6T9ekZ619D"!fpqM9!jT!!q(NES2jGHSl)5#)V09qrQ!A4`FQTJ+'"k+F
BN[kZ'bAfChhN@i#bZl%hNSI$ic-!QLhpP48lNbN65VP,Ui&@le4c'+RKrBXJ+QR
cf-)D0KQpLL%i`MLFkHqFcN!M6A*rH#GTM"*Y8h+!e%b'2H"e9VMI&BLBdLJ#KZ4
(3B-"@a0UqR1pCbjpHjcQSPQ5EerTCldSV9UBlA2*,Pf!m*0[KChZ'&9`j#+RRHk
p5cSdBBLH@[&E[THNiPX#lbZNXB,mrmNie!2NZ0QSX-kE1cS-P468Ka,NPc%B')$
*3&mYG#`*TM%m%M6)ePIK+XjGM`HFJ24HEYEJV#`D`8r))PLiphLIjmJN@"'D00I
)j*1[#@I&+9SI@%faqP&Y@24Vp0pHBFD$#d*(M"KGI*URG@A@VK4UI1@)`SrN-pE
[4VP513#cK[+cQ+G&1MR'#a)M"m`30#ZQ,3LP,aTf[aH@5qrk,K9dDK9%m@G2`*V
Ua[mKLi[CYK!bMS#@hq(q58IC`!16"RjKk!$RFF9QfPiXcYT$r'cjfM[ZcYRjhjI
Z3SUC9)EAD*69jF0ArlC9-9+j$lN-eYdN2l9Ie0U&Rjra8[la-FL2cVjUJ'8$*$L
5G8a3`$&[9%HGB!rCV[iCrirPY1*@j"QHG*`4cb[CjD)#UrYlBkr@2!`UkaE)&')
G'XhMD%c9M(eXIXS-kP2kD[A812d4JlD[N8$X0RQ'(@e@m$BhPC!!VJrT('RiBL1
,Np*8R+`3$KA8P!V2J8Ee8-@`268(kDE(eqfbrNX88a*T,r1h4$JRXNeP'iqVSDR
&M!1*V5@+mAC)2p(6rjT@pScq6)`U1G*,J&bFU!1[%jUkZp%SfBUTD,BDP-MVI)T
HJUNBM`L)81)mA@2aNKHT-DaRRQ09[hHlrpN*Im+T3ZV)A34Qk&UiENJ[!'JE#ES
%H!P)h-lHNShV1cfqFKYAlK'TRD&raa34hfK+Gr'$Kf9+&mq#JqXQXPdhjKGX*"C
LjMq%#D-kJAl"Y8S'K[Ad)G[CrUFB+FjqMqeYIN&H-D3a&L(mQ&BlZ11&*a9I$X#
V3Pbmc!M*hbTqqYP9K1)0[r#EG0DGKMk`bcb*j-AhK$ZGM[-CAXhQj$Hj-p&*12Q
!0HSpC6HA'EqaP#X@q14fSr3E,&mI3'XNJ5M2rIGfmS%L,[R%Qb*fBkX)X9#P2FK
cbTR4&2h8VpY"f)HjfRaqB"XkKc8Dpfl4@[aS6`AD85fY[AG65-B"[SE4PGAI%cf
&YNY+c+@6rLPb+UGN)$rX@Pr1F#ZjhE*JG&J(F$DXKBKPrf,lMB##b+*Bf*i95`G
S1AeQ6N3IM$a6JG62eP,e#(3US4T41pR"6&M*U#HQADeX9C09dQPfe21QCF-Ye"2
E2BJ'm`X'BU+jk`pVpcJd,H0,`TTSR5qRG1H0QXUUV1`MaQ4eIl0ej&+Y9H)hUcX
KcFlKLQUFpINY4%*%4(B,QE4*pM-,Effb1Pe@A%Y%PUP@V3m&0R@TKC,$!k83CY8
9Q*E)jBqK*GIN2bBi(hi5FJ*R0G1'N!#&YGp65'-(2+(lR2&!a5,+@022DpU#8,h
YQZ8eHBHR3EJak%i"@%iEU%6TqrG+-iB"q*)f0Dlpe6iP)b!RZjkY[J+NQ$Pq%XA
NXSie4MG(@k5PX9V*8)r9$Am4CR%RA0DKA`a+$C!!h)%SX+LRArFFhVa$)8Zp)A`
SpKQ'FcfL3"JGm1#aENM8$Yd#5LqNNI-GXpX*H@QIh3QrY)K!3"qNjCGi0H@+J)@
V!YAFZmGc4$64i-PlSRH@p!9"K9j!32[9'U@dfN&V(j!!i0eDL$-"iD8Y,I-RUbh
9)fbic&"rYL%6!cABAE(E1DQ(G+$SkFbqmN30NHZ@FKb!fHX!-M*&A$#@E81Y1YA
UZa-CXDR#3)MU#@9D+L@R","0bpGmAZPdmV`Ef%KH2dA(ebK)hk[*%3r$6Fl*UEI
Dkf6bH!XQlri6hHmVhD@fNm`#-5%)Bj0`D2$1YpXI6%QF'rPFM5,re$9$3a&S9R@
"`6C6DcZF)jeRi&Yq(T53!*J$SfThB(*eF+2#aV62#+H$lAGc(1kZV1TQTq4dk%Y
pYN$EQYL(,"XE%1UCT$5["jXb%EH1ebTpi2S*2VFq4TU+fRq1GcD`(dIBI)SLXSV
ADdH1BZ9V@iMfSG1QET*L*Bkk*45(fK"NdhDj)E-Jf@YVV62,"e-i64#eDh#I[1-
3q---r-99BeE%%q@[YHpZbQaaa!9-kq9@@IPEeSA(hK8LNb#Y*5bj14,+$FHEZ&P
[-C3X$`pJB'"Fria%@"I91r-8pVLa(bEPl*hIV'CMpr@'PGNLCrjq'JHPH+Z[)pY
RmU[i@lN`AcJbl1A8F#8ED!TmXZpGhe1Ij@"lT,1YpkAXHhdMi82kFXj&KjjXP0f
EDXT[&hlqC$2q(TM'rAc$a0CR"4FQkD$Dd5*,$ZH,,%Y!m!""*6(,M2i3rZJATc#
G`Lpf1A3A#TeGKPIJaB31JSFGp05&hJZmkV$'mbJ6McNGHc*SEmD&SmbF8MDa*)!
E0h4)P&(UrflKqhqa9k204@8d!p[p49il)13DjSUPj3eG(d%1P2DC(9r1&1`'F%j
(i#L9PTLJX3`HXEe3&Y6KK+d)IS`K0C`8%qiQG)!)VNY&eYAE4&!I01ZEGi@#cXN
`Jke%m@D8L4bq5H4,-(jJ20Z$dG"8bNp+YCdTXGL10GVe@"U6dV-fr(53!'iJiMp
$%)BmYCC1#0L1#&[226&H`PTVZ"Fjr(f8BN9hikIS1A`JY+`E5rI9lI*MB+TkERC
eH6"C0VJQ1%@C*XkH*9rUjpDV+l"Zqd9VHih8RB9,q8+!U"iQmNX!k+9mf['S6h5
cIZ(dmRFD&N#-k0,RiV@1X0dSkN1bZj5a[r-e,5Qi+qZafd!N6bqBjk*bqTrKV5B
3#c,`,(0aTCSmLpiI@[d!GR211CfK1(0DKeR2S5$'eil4Y1L+!#CD92M)`NJEZi5
F0EphMpA1I4TEGaQ[h`'l6fBNN!"-m6N0k(Ch2%R)G%@d#r)9kTD"QPVJN3eF@DQ
e"@iR+DHkK(Z'B$-RI53B',A6cUSr`6hYhFfU$81-JHQ1SRQlGaaDX'A)kkI5Mik
(!X"PU'0`kZk*Na9'mZ6kferVAqUBH`+[q1#liqFe8GY)+B%&DIl-6@A0C62dc3(
*-KcV$PpP6V%LJk[#3ka9ERHXC`V&"Y&)"1$AcQAe)Qq93C0TYC(%mp)I#NVS1)K
6IA4Qr0%MfdD+FVFL*DJD3Q38@),d`RD)6V&DVVQ1R3,@0EFBqQ5HZ)lh!&k1U+k
"cpV-l8GK!["2`#NkBXm-*Y4mU5'6VfKa5F#CIbDb*+*38#*T5KG!3qKr#UXR'P"
Iecb,B'ka+q6I5iiI#NVdCl-665Sr4R*iFCN3XDcZDrcmD,QE)'iGLXc$PBUQT(M
(Kaeb5R)'Jee!l)CEUYieZ*S@X3jm8LcfKLfEjE(BM94q,S[Zjc#+@%)hjN`@JDM
bk"(1aFmZUS)9MCVKk3!fbmHXA((MX*89T-5p2i&Y-D,d819`ie53!-02`pHh`5[
%'9IZf1%3ql)Ql5X)LTZ5N!#`PN921b*4+qTYF0P+RNRI+U)A@JiNN!"622P`k5G
#84AT4PbQEX'edI--3!"3aYC(P*!!8HL)8LTJC(6*EClDe,j-XN`6edrQELDZbFh
2EYA'('f`QBeb`dSJqCi$pCJ-fQC+MQKdLGAF4EcDQVN2,L6`e8M%Q8CLirM66kf
DrXTpNDD2Kc[&LA`2hi58+'H`H)Vq*K6&RijZk!!PJhQ`)dH2Y#6'h"9kB[LK,LK
0f#*G$,N4mpqh9q*0b`f+VRBA&lML0dU[$Y8HkCZ)TYIQDJ*3`0QI$lLKN4Y0!f,
,Q4U"I(Gj59U(M8m85(EBRmm2Sp6J2VY,pl$lhA8fd%&$cNkD'a*SDVqj)pipXPT
hp*)Ullih292S0H2HT4UHm[!RXhqk34UYq"M9SLHljV[E502FB1f1M3-%B5D-[DN
b[!q+rp)heheGbCSMYN(cJiELrfm*1b)+#PIXT%pcamF%E-HcJLP!q*6eqFP%lZ9
(d1"(AHi2aCT"2TGl-Y#h8Qhafl98fq9$G&q%ZUbEQAqLU)Uke2UjI)41NP!ekZE
h8FY09+*9#$+QFaFjiiTMkQDM&ijS-FiEUXb&Y@B2r,I@d1GfPdApeY2q[C&mq00
54''+LcqmLcT4D8I&d&iUE4G,SNZ06XMpC-+lDS9RX4@Qe"X!$KLD5iAJHeM"Rq5
G9-a*C9MrJf4mRqhd!#irr#fmaIM(*Cm08h[dHZDf4()djdiXHZK9(,Pc!kPjrcM
Vl2MV-Hbq*)SF#EpDT%V5eL[ZQLGPi4(9P"4aT+1X#Ci2[4Em0j'`&`jVSF5L"Jp
3Sp@TbCZBfc(j@6(LYFUTY[PNFfEjL'BKSaGf`L0h814ZHa!GPI#QZH4aQH6GL(N
[$JVXR[EiYI@JDq4((A$MQKp%B2"+"NlTIh*qJ[#2PCG-)j-r9jQ,0E!qhLQTehM
i@0XF'lM&adZALIZL[86UM4ki[eRRr%A0$0kqmCFTJR*Arc%L*Kib%a1"!M[r+H8
dHlePjmkbFm!6S50LN!$XS,PpaK&F*QB4)%a9PHXr1`F&UB22FERCZBi48DTG3"!
LG1D%&2S2,G'jb9!)jSZ)j*c5[SB*kHD,idkhpNeJi"aT2XN&3ZL3!,(!91dP8cD
SThKpm5-N)k)S-26kJNLR8Z(1#3R`54ch['S*b*qY5X3)$f1D3B*rqlI'4Fff8Up
K"%DAe4)If82P@ZmU5bJarh`dM*,rB*kHqDJ8iND"Y[iE9!Q"+ETA89YS$G#3!(d
k$mjf$ISr1$m3*6C5YD6+BdX9C(KEF8b[V2`rq0"[&SUFa3e3MLfe39cjM%`V"25
'P1GZ+)p6V"Pjh1-l3a0fDZZkbV+c+k01GP@XF(F3%'"jR!3TJhq@69mGLVILpkN
$1KI(MY#mP0dR8FSpH[0!6JP3B@1[d3Tb)Gd(TS*Sb`4(MNDXeXKhk2fTqJci33A
U8*hU3E9r3a3M0c0(+raR3DiE53E+9Cd*&N'bf#D)GE2YZL0Gh2SE(04cSXkQcRR
$FCb0F,jCf!B$MXB30&C`Geap0$qV$#pVDf*c,d#&AQ3PV+TDb-LX-I*!QkK$%$*
*aK`$Z86K3'qU!3%XZa"k(k5GaT[&M[05Xa8AiI60JMGZ)LE9&@$U%b'+Bp@Z@H8
6k"F@@T[!D)ETD"K-G[!qpr!fj"LRHN!d9&rR4phR$jbRMKA4LR'j+8N)-'UBrqY
VXUG#KN4KX)TKLkKF&$9cd5)S"prE98,`KrQN!,0-k+0LT0Y(kpRX%J`3#Z#"TrK
+ZJ,J1Y$IVRbUHe2abTDV[)J95A1c*pL!8FielIqUL`DBh'lc!cElIL1NejEapT[
I8[QY&1(P$`LmX&p6P8GYPAi%HbZ!21HkNcq*,XTIMFaP[(4)*jA$XbBZ-EhP6P&
-NANf6QH0NR@!khR3Ch,9ChE1hh-`lih%3pF-*HHfKQ9Y#X@"bc5-6fiiE%Cka&R
NfGQAHe&55G4"e53*0m&`UTS6&`hiJ(VDS6Dhh)R-Aqk!cXPBd`dGpibHY'08C*J
M'4c$FTXX(i6K)FFVdE0,dK#pP5"dHX9,jc$jI@Y#cl$Lld*,YEZR(hdCAT-dV))
$B%0X)4S,L-8BSI,ZUT'JcSaXI5A13[+0EHa@XiRE)!X,qjabb`CTmEe8"r,b1RB
lU*CVCXJb@P4*[&Rkr-2mZkqGI%#R#'8YqE4BkJ(GH8,Mdm3PCG+'fK0#I'9(ARq
LQ'kTbphB'd%`RM6F8`@fPFJKfHGKRZcb5H'F-br%-'AkC@N$"DF"P!HmS[3MpSR
MHQ'UeN`&4!-%Z-"@qZ6aKrGrh'maHPZEm%dLYA*hHjqKNlZ-'3q@iCrETd,TbU3
,deSqLkpS#h&!a)Uq%bf-3'JCeU@ZmEJlEDZ*6Sp4m,'r**hJP-B#66!c$@VL0'*
4*eT"f%r#q9CZR-XiP$FpETr,BRGa"DNU05hi)d-*P',NEeb1,dRkY6LefKU5Sc'
5$hdY$DQFF*+-Fq&Uj*+Q2ASBSk[VrqG[+aCjjLUBHT!!SSQ'2JX4Zpl%UT!!lT'
r%Zcff+46,8kleKb3!-69C@@8iN"U6[TZ2"*j--rQ)(-6Y54cB@dKGm8#fq$Lk"5
r@"4QjeF`A59*dR"k&H1%@(T[#Cj'T)a91d&'i%Vep)EKllSe&YP1X$!'Bp)4`"m
Zd!c`%A-+h1X0X$l+b0+*S#Rc+fdVKi`pAdTj*AfhdPir[Kp#!a5VHHf[8DM6p'*
X1,m94@FYA(@@dAd@j2TUCdAHRjpYJAM`KN'C'5'ELmB(Z83,1eJ%qFGkB,+RB8r
j)['9A&HSr,aHXTi9iSr[b[&IAY!G5V%-lYNPljbk18Q&Hhi+r@`%ZdR0G9!Id"r
2JGSJbD@8'ci3R%1J5+@&Vi)'A&dEpe'"6YM8fNk9EYF%2)aMRHLjqf14c+qT-85
%bMS094FD)S(C61C2Kpi2hVe"d9XjHiDN)VFmj4HID&iR+0@9DA&MYc(+[%r"VI`
VZNGb9YFkea&!&G2l!#13!"a-Z)Z"EXH)Kb2(Bkp[)20&,S19lER2D,cJihr`ED5
3!"GKJb9A8Y1PR$EEaPB3%1MaDa11hSa4)GJL0*fQ5"-`%e'&H&LDQ"d09YU0`3d
[6D+INQ3'F3(3hbaJQSimc5L-"%FX068A`K6T+$hXTE,9lXh*MYR3UBXYmd@GMPk
(iD@Tj*`D,I8c3+T3GH6HXjHSe@+YJaqJa`c&e`q+PImp`QYkPq2-U"XaG[R2cfT
4B)6CDDr%ECf-IF+bR4HX#P$mPJUKYAH0#bdXKFCBB0'Y-eFk0+YN0!eqA'CFDaV
bI#D2D"rJkG&8rbcHIa,M,qj5F,hrH'`eC'F-[VLhKQ4CEjDqdlf[I46*8!6"ZRZ
XV!'YZ65QhX2cQlK,RMSfRNdD)C!!LC6FFK6U2cq$kCCXQmG+)YEMD!pCSlr%DlQ
SNT[a&2ZP6&l@1ULR$bD9l$S6Q69ZQ8kj1Bf"JN[8N9fDDee!L"D"BZlAD"4j#`'
Vr[-&2Tmr"m),E"U@BfK8`(5CZlP'Q1KTqAd1C*TG(0VC09#eJF%!QmH9GHiUZE[
`E82LA`80l99)I$ApLD$#-+'GG9)d9RKMTfBSEXL86&@$0aNrAhdFXGG`1+46,hd
qj)VXl94V%06b+-0HZ#qlIDaT8aCf'GJ&JfUF06l$#FkFlBP-mN#YTjFdZA2'DKb
I(YL5-QlQRL+EK8*j8qVZT45b2bb#q[e"aEKkGlZ-5C@EmhpA013*P(Y3d[j!A`F
lCUPU`9YUZhf'$0BRIq@)UUdd@-bLXbijQ`JP%dVR%mIf,!(ANEX9DH@'S99HmAH
dDUre6VE"A9HdQFDRhdCiBrhD`02%GJX5GMDG+9KFcJ9J0AcG@N6i(P!65LYkRS%
&4B"K5%FFmL8@$!PkSZd6I+"!m@c15r"*#4`K'rQ1kZ#3!"1RAde8@-Ep2Z1p2m0
Q[!A4BaB[5r(!EVR55SS9`B92c1SYDe4#9C[&cblR0mR)G[+Lr3(E!*4N*m&V!48
-NU)-pp,eNVcBlB'a)S[5(*P)EbMPBeLRM4Q-6q%"[H(IL8r2YCk`4B9ApTZ(Fh'
U0I5[N!$N#j!!k&D+ZhGN'$5[EKle9E!"!lj+ScM&ZLBD@(-bDV8"eIk25DZGA[-
`Z**ZbfQ&bqc@V*Ah8,pCQpA!cpNK0LpYDGY"dSP)3-%#,Hm%F[C@4!K[5K9,K8q
"dlq5Tj+[HB,acfVm*dmide4%AKQ[HPIlf+V4%,deU`rqjSalcIIm&e%6,ERK1*L
G*3-bbELMDJFbP8*Rr5NMr%qk8mG-Va*Z9#a&I%aj2qhlG@UMDZS84LV%49lYb-Z
aeq[ljBXe"j+ERZ&cQN-l`5XZN!"e#b'rGYVrf%RAa[#rL[Ri2Ec'f6kPK"$'PNG
'Gff#9BfDk,VkELT#4AiX3EV013k945*[D9L)rZp%Sb[3QQCrS(8lj2d1c+FXP5q
h2V3a-S*Ab"U8A0[2I1fjlG+i&#3NaK2kVi#p$KQ[CJCN4A`ErTAR`+"*dQB@%pS
b``IcaTYlKcQmUAeX3Q"lb@fJ8T-J`p0l&k-C@92,Q9rP!ZiVXfjEp5b[jl-HFD2
lCSN'[F+Qq1ZDZ0Per[a4$a$BjI5-QAlcR08&R9S-#U0L")L'&%m@Mk$[a$UmJ2Z
'cHQdG'[[ZiX3Ec393[1Hl1AAmc6C#1DQE(hJT6*b2MjhAEX,L9N-S"@AjiiM+JN
l&jX$%r!Abc&TlT2%3d`-II,`MIMaTe-l*QdbJ!KT2jAfC`cI,AT)l0URqj3k-RC
P2[,3-+aZ-UakMLGBPM,L`BK-MNVe%CMUaraiX[He`#KD0aLFep0Jf*Zda'$G)2l
@5GZD%2TNAQZQ9[rY1$ac`M&S3F$[6TDq@'jYU'!`Y2,@9D`ah9Hlj0Z+'b'j$)0
DjSZ[`Ed34f(pCkBBjc6k`m"L)q&9+00i`b5fK!lef(Xj"D8VS'@mF%&(SFNV)mC
M0AS$&fFU,K3lMB)P26-M)A,qLYVK62SZl[J20U5P6T2&Np169cdCYJQC(0NmF#!
P*RI$"cM(HIa[I%(DIFKE5&LrYNjG26C34MAb"'d(JleG,9#P'5jpcTUTNA)2kbF
Ul*ZrXBSL91$aa!Ec")D+[*GjV-H%,Y&9-X,1[!Re%h-2m138SJ$9klBeH+4$A+$
,RLi1-,#QKClD8,UGc90GIZ&"cpk)4C!!FrMa4,*-+&fbQ'%aKJ'c6kNVXH2hj2Q
mhP"@KZX[qX2hT)L-(b9ac61%ZRZ)UqhpSXL5@Sc6R2!aSBUa-kPDq9%YN!#9DQF
aVbG5ZQF`$2DUJCI8BB4$GNFU(E88p[5*QShHlj`f`#Q$6QHRSKc4ZpT(mrjTRA(
CIk"@h%04EKb13%N5A[4R'49R0!K(*l"43B4CYV`iTH)0*9IKJSJ6"XT#KP6%%aL
SNVMIQP9H'5fU5GLk"0'DrI'a539TU8RX(%5cFaHGpJ`bV'fI&a#aeQ4N)PDD%b9
#YMc0a*Ub-lb`!Eiq2%FGf3HK`4jMbPBkEj!!Xb-CULhd4[TcYL[L(q`+$$M#FKZ
LjRj[h+peF5!VT5Idr`Nm"-"4%S&E2Qf'@JCqUm02j3VGA`j1U'a6,6)RrbNU4jP
0cShDC,ei20iiTj)6I26dXI#i"'i@2R8ATm3+l[FEb@bd(f2K)EdGX%(TAbp-6pL
cJZi+c1FZG)(4eLl`rIRc1F"JLS25+KP`QfRie8-'dl@fP$DZQbiPi+iEppE*GVp
J)D-%0+5RI10HM9,(arp'P"[,i09SC+T)Ir+6HcFf)V(1P88R3a-ZL(h5K"%8&ck
0'q28aS#NhF,"T!+E,)[[%@1Q9XiHD[$c[6B+#5haU(jR14KF$eiE`)'ikRhQ0!G
P+U(9#QlkjkYa*6K[JjSrcG4%Im4N%#i8pA'ZbHli"dLpC(Siq"I+I,dFHN-4kXG
JFP'$`Qer$ia@iT9)Im8h'JFm*mYlcr)&Mq1@V$@rq6b'1e'Y[E,ZhpQ,5chIjdN
E5,hGj2GZ9@#r[qkqX)mfD6*,VVT9piKcR+)R&I@ZA6E9TlEjXXEPa*@3!'Efdq1
JKFJ8r!!paYq'J68(c-dP!Z[UMN8"M"f1c'+cLmjS%iJ61Uh#QKP5BRjXGaJi&l+
`*kk!`[cf#*D2$CeEEC2JGRYI+rKMBdV,mdTD"b&QJk'Vf%k5YDH*#9aFL$"MMH8
#lfGB%r!FJ19SBATXM0"5K3lr6`SK$RGJh+M[dXLM5fGa6I,pU&qAd,Bid4rV"G'
9e+2'(FP(ilKEIR4E(Xm26'3VI#+E&0E0"Z"`,N3pb!'Ga,LX5'6K`QZa2#F,9Ze
qq@GD,-Zr1ABm31-ll5lVFlk@qFDYMPIl9V(rHkPq[CF$U[+!#RKJl6!qUX1N#Jk
$MZjMd2j(l2A(p-T[mp)RDS4ATpZL6lHPHicG9@QbSrZkPrKfX&GBj"'0C)3C@ZM
2lMRZeBqj2@M6i,3L0j!!HfYHjp*b`GDA,`2(c3CFJ+KrRJke!$bP2,HBjC@&3$@
Ic$GB6r25Pd6CBB&4*NCQ",0j9CRimE`!@Q55@fbQKY+`B,XRE,P-RVL4GqaH&AL
4E-ek%Xb-i2&*EcUmrfp5QeEjCG6qfqA0("f6H1TKZE'@6q@VLRB"8BhM%S62rdq
YkfU8HEb6U2hM+mk9@PLa*ClFdX$AEcG,L`1m[Al[T[5)B#PV#((J-`a(9I9B6R)
'"brj5iYNX35F,KDH!CqBB60jFZ[XVL&4GLC#Y8UdfBD3!'d#LBGQZ&r'!I2e8bq
Irf*k2[E9I)&qG5BF*A41'%)L3'&@*c19(&i3SlX%dAHXBF+eJVah3ilVKdM'Zk#
CjiX6K$l!#NTN9Li#"d2'#bFXKH9(DAd94N5bCch%p#bmN!$-*bUmE!6bPDa+LAC
8K)PRKAmb5*bqS6GH-p,CZ5H"meG1J%"%%lKBGHbl#Kp&IP@V[P"$DQAI3m`*(YM
Taa$L1Xd01B`8m09qhe1dpfaKm-!m&3l+!-!%&Y2K[Yk)981#*i($)reZJk2X6Ic
SQ%iGb1QVMmhLeD$5Sec+,-[Xq*[P5HRYYQ@&9,H59r+Rc"qV&i3`&$q%rUa%J16
kZc%jhNaQ0d!$"irAmYTkE$%k1aB#lBPhSqY`lYfV&aX6Z+J2Ge3rV4(r@@S"+8D
3!#Y2!"'bP&5F'@m`X2He0Q%1'BC3XNTC5MDmVQl@T%A'Br1RD["T!!K6a!`ULMp
dYEaSRGU8!6YSN!#a(dM0!YC6EFKXX*bda,$PULYL6)D0&8EIq48jT!-M'+V`KrZ
Q5*!!fEc9KK%1Y@AHm,)ka,#3!(jh(C%CjV$DlH(iC%kV9Z"-(CN[*1S8M2N0h+(
L0X["AX)1&QAU(MRqrBQ+,81%4h,'!HX5r,KLXNYfIl5bfe6%`JVSk-X3""`I5c[
-[6`QSB18@'UNVdK2QSrS!lBBfIMf)9aDb4Bd$GAhEfQ!eL02P,NJ99MVfGEf*bL
9+Q1)RGlI'&$qQN*a9DKl,a!@X`$re*PEGfelN`XZ5eJN@fpFhl9+JeShRBAm(XU
3!,-5NIH-0B056hV1!jH1$q@P`Vd&EYRKGVZ'8Jcj"mJDM"VRP"T)'l+DA$ZrE+(
)B23p2IUrj)5,FTC+Vj'k9&qPeq3V&*E"[k+h6cIq#Vjc5H81RCq08rh65i"M4C8
M3YS&Q6cP#4$K*NmdSc0*q!B`r"M1jNcqUjLc09VNm9p3f9hr)d!S*D4Y&KkRdAG
+Rlp!1$4!G$363deckarBGK62`M))TSa8qAePPhlNqjYBFkHR,8GC4CI+YG9Q'FX
9Qb"*&2*T$1Yp9d9TQ'UqE1qr2`%Dr`M,a@'cpe'(S(MX$*RcS)32L*!!"fM*F!'
$NLK4BJ$PDUCCTC&(0qZ@,Rhf$Zb#XjVa$`XKIf$cT@PCp2R9@X4b"Uj9,NAaE!0
cLRe4INa*$4-M99rB,MjCDYU,rQRPFECEP+3ACplJ5h!SGJGiMJPC1qc%eCXNpR0
(hk"U9GrDTqDT"f4DrR[$3TrAMMMkErCi-h9bCA#2LTpr,B&-qG-Vfc%!'RdeH'3
+#3p9B#Fe$bm9YZ3&DpQ-i1G2[!V9C@BH2E&1RiabP0V[JTZp0[1IpP0lN!#-AL!
9Npc636r4a&kA4I&8ei*LNYa-q84)5FV3bKC$+RY6e(`r#Ykj#k*!AG+,h'PCVhd
5KeIHF6a+d-A-Ve-a8pU-@KX$e"LZ-03[IbC(TTheF`+D`XJ"9+C%MX*b1&D3!$%
F2G+@j@B6UQDE@&j!`bapdYQ+%TpEr1"a9*@(bJ2Cp#)f#'ElMiZGBp9!`UVl-b9
+Y1#VAIYcI5CQmL$IP"5GB0pm(*YB%H3KKHf+K9"Y2BC2j"a)"kEFR5S8#kFk---
eYd%jlYS[)S$LP+SE5Vj,[lF6%[m-[(L')[K([%UEk&,Q3FkjQJ6[i-H*1$cV!$@
,qFQXiPFBZ$JP6QR4B`++%l)TTj!!R`BM-8%fSSA@kl`jiDNp*l$Ycf*3A`UNGZk
&@@(mBM*F9bL4393XlEV($&A56P!f`HAfLF2,M@B0pS`+%b+(NC4YHPP3Q+MH,VN
L(@kU3Ai5(jV03EF1KE$,Nj%RNZ,jeZV!-9mE(6X0idS)`SjTmh@f,E9l[f!UciB
DIN5NK0MI&Rlk"-J2-T58KNfI@e*i6j&$Y'li$`+Z'Mp(P1*PU,F!*jME09`QiKK
rqaQPDPa+CE`4QXYKMPVBHpKX40+ah0EibpCQKmYS$)`6XIJ3#)jZP2*$`*!!E6#
DD52D#fLfk(MHQGr8RU1Db&hR6-%[`BhPLabQ8%[HFqj0cX4Za3c2%4V1[@D2F+9
ebka8i)SYeeIP!k6j+MNe&*`h-1+VR+Z[$*VVAa!#BLSf1iN1eDRj-Gj58-K',3A
KjXkeAfmMUG6kDDfJ*"C,[C%ZqpVlJj(J9`$c62i5p'Mp'2jfRkF,[4#dkZUlBRJ
+"Ei9fHQPLTefZZ0Gk-Hd9jS#"03"f[dXQMVQAXKq-1J@EfD*kY2ec,p"42+%H0b
9)"llL+9Z"AmKNRV4%KI5hfR@'0XmqQUEkc!-2H*!N!$i)e-"XNEp*`+*#'SURU0
&0YhC8G'#6kR*[P&K")8PH$8F-QTefbmHV'U+aKACIKqeV3,eU@45'H@Zec,pIp"
VpNZ#+BVC)e$*ATUb@JbVR65HHiVH9I,4F1C%'V+bP(D,-`8fX$-#[Q1a'i&!IpK
&Tm62YBCQXepB)TX,&ZhJP@*+$ira,mANLV5*8DDHM2HiR4e1eEIBlJ8iXamh*HS
6j$r10HNR#["lFSYP)!E%LSHZ6(,$&ja`'f-6eZTaSjaVcr&-jHXMJU%p1dZpS82
rY`e1*S',qC`'Rd","i2IF,"Iq9b6&Q#"'PH&TNhK8K&(C!6e#rS4`!$-YX@+`)Z
2HC'2QP&`q0XS9RPKqC[9adB!B)Ac+im+HZaYKC%,AfS-'Uj++$km-r2B'D,6L8e
rM)6e*i"TL#M'JEp2NZE[mm!rR59GXPfQIr1DQGQL3M8$f!ZfU5qd[CTmAYT"FQd
%$MEQ+JT)EQ8jrET*Qb&m+pH3!+(R%d1S*b`JY`$XfSjlC*V(QUN$Kbq'*m$*YYk
FSpEe`A&LcG64#PJG)QD-1@q"ZLYSRq9rEG&[r,r3rVMjMK8D4&b)fdjXR5*jpI0
bfZk1-KB9EL+e#59A&VN[02rc6)B8I)()[PHpcDUQiLm[bQhPXXabcE9`ijKHI%B
rlIE)m*5&&P%fjPU+Ll+RSrLDZ-m8'r','%9mp@rSf`BJ9-3FN!$Rb,3aQHeIG[[
,DDa""I*jm@8@QZ2`$UH`98qaUJhLb#XlT#8ih#$C4lpLY@f9,$ZVhJjUZbfDC`N
dT%%YPJjI!PE#1aZe"bSRl+JE$4%KBDNkFdK8cR4i$FiC10kJ"V!$,UNZUi0Qp1K
!!93Cj#)S*LRiFcQRP#8A%lMMI2Z#V&`hKh'4ljXEqBZ&N!#K-S2TUe-aA*J`IJq
Hei)([+509mkGj$Q,EeXR0@"GGCN2HTj$NUFcD&!('ceGT3B9hB#RqGLK)("jZ'L
&CjbL+NF9X3Qp)TGc,mEmSS80hKK4R#-*AbrPY9ee-Qr(@rLTkY@#(8"K#$F`mp[
+,KH8M,+CM!SJGT'imkr$5XSU5rabZ+j3XB!FNL(6a`XG*&Q*PL(GHj!!r+D0"`a
%UJ"a!"'(Ukf06'8VCD#([c+JMPcCf2qIdAqlekc1L#A@2UPkK2"p%YD%IALAQH"
BkC)"8hd$S'l@*cPqN!$*DQ%5-jFM(6QFP@GH*+2V)2G2MYrJ*!-!AKf-YI*Qar"
Mb(p8%ZdZiZpb`)4UCUU6&M9'll+AA$V[TSLYPA1UC%aNr"TY-$ck2H1+mTPFFM3
[R3m2b'QF$+$`%JUZDQK'LY@kELIbrJ&rQ4$!"JS$JXck0$jYZAV29C0JRKCS9Kc
Rq1fe#MkbD24albR&,5rE*QCV%cbZFZF0eee+eZm&0'1@D"VZ6BGTf2dE#9-)pLG
qPK&r5JYVL"c#MHElPfRcXE4T+U"$N!!($V(0)RlB%J-UqUL8aT6MSY*Dm#K4CA9
2pim#BDYKDpPlI)ADFQ)VH$&FTA'diqf&p0rZrk0'UQrFD&D6ZMkYl6@#""HBMie
V)3AN&bap-rVF3AYi0q9KldDiV!fICYakCdGakB694d43YF%!!d1KXi[Ap)cpL6k
$PDbb!Ea&q,#rDrh0V`"ck18lBf[`L9RhS50"[IXrf%&0T4V2ifI&kVF'4MQ3!*8
bJ"U%UT-9XUXLMkPH$aE[@3$eMjmIXiCei+Hqf(HfYaj-!i$hIiB*+C&rcm"Y#Le
iA%HR`,+VfifeAcY55m&!8YB0`2Z4ladr5bll#@ck%LH,kE5FS'B[@m(TG3Yp8CL
P&'LmTh5(%effM(HN2*K'pjrPTaA#"`rKT+H01j5%I"QS#bVmAi+YkpY5`Bh,MDk
h@QMT3hX&E-&4H0YXKjf"fU'd"5$1,-SX#Z-rCb8'Z,R+&,Zpi3a(k,eY`QN4E56
i@5GqFic`q)GKqRq`!*2PqBkVf"Q)Zr(iq)CJmFerd#+CNP,B0RE94iPRNFMfC3"
P#Y1P8H%9Y!jcD2P15"JDAJiBB3hXrLKT)N'4H4l+TTI'Q)q-F&b1!Fr508GY,&[
JYr[-2I%US'A)NjcLRVC0FKQ-L,L0BjmpTlh)%8j[(Djqa-XNcdNaSmrL[Rh)B!A
[AZKi$k9C1qLp['hB(EL%UHf#)F,N"`-dHH3ebA!U"AVhL#T12UI8kDi0cL-IQ4*
R-b-flmd5*hbhmlk2*k[bm4*EVCc(GF,QC%RRUBUS6rS5RE2$i`#XX['F$#Xc+kX
P$K*GZQe!Rc0c(%jf#k6e3&qBVh-T#`f2BmXAM%aC0YHR$M4YYHQS`Ak[PhQ9HY!
[P[),hL-@5TP--"+dcTmL`RfESid)J&rJi$3FHmFcT$6$F0kIR0'FCM)qcY@aFF@
&I`BFdT!!kFLhdKU5S5*,`@EAINRfb!PIAD[rL@6$UTS%&m8*$$02@a4+'3Vh"PR
B[PbQB!dVJQK*8$r4KmD)mhQ2m4$J1l6X2dArPpD,pK1DjH!hG-N5k9+TSV#f!D(
)'AXIl#-CB*qb&QV5Ui,5+RqHh-Y5R1pJ$3!0(-YbkLmEKE@kX)I',5q!rf9`8J)
M86`T)ZkA-[+ZmfRH!PC#+0ZVdKr,k1Q%JGJU0Q$pG3hQ"9FejBhcQ9#5,e+YqS)
*XHLM(-r+LiiQ*!V*&jBSd!hP9U1"FI`(41ZmQN,('BU@4[MN2VJQh`&VU,@XK8G
m2iSG4(Thfi45%1-Ek[%E*(lYm[&kFm,qk*mPp"F8p"04&cNPGGKDJ43ZG+(dhPP
$"C%pMU"cE$IF&5pR(p,X,JR%Y#VF5%3H'bU+pp@%qa,!R&hLF'ejQ$a@@0P-DNV
$Q+HfC!-D"l)J&*d[V5&"+$J%Md0PET`#"14ZYRPU"Xqe#63eh%9T0fj&3p34d*S
$JQBAiY$%E%P(`A%dGqSq,8`a,pQER&3bdVEAhPfD5-54E'@GkJK8kMFP@`SCP%@
6r25#50J4McI!Ji&1K-8li2e,9j3fEdVeJMQm1Cea)i[e&C(FSH!T'Xr"V63!YJk
Cl2#VeDJD1q4BH8-AJ64&&R(@0`d84aSa%i80kJ13!,`XUV5f0##(drE0k,T-4DZ
&jRSr5$('AF`4%*qC[NN8[-p&BR`I2#,*i88VC2IXCFq+jZB9-iTPNH$2NAZ@IF0
qPNpc85%+$EN@kISe`IF'B63c-L`6ELfScJeaHlb20q,cVMJH)4eE(&`(N3C3MJ@
J'QMG%06hUp9MZrDq!#9m2+Xk[h94[8A63f5m8eTlhVX2mG)!RlJXc6GMPPc6qVk
`Yj'`1[-TBi&HH4'!J5j3-`pFVVFhEk[L')G9,p&`'LKF3J$K-k(Dh+a`XhH(JZU
ZCA,63H31eZFNCK2p#$[N[2!iF6ZXm,-94[,SlLCGj2&L5m[Pa(dL)RBjCm"q@RF
&+`$lR!aSEbjR(Q$I"!#b[2(VTiIHZX-&$,L[Ze@9r8i0*%dALjVbZZVrdl&d4X8
M,EA0edieMZ+ZhXCZ+Kq2'5JVN!"$iHa3EUI&TZjbQ9YYJcIk2Zch*Vp$"M9P0`3
#kaE$6%4fPTl1afAR-*R4TV,lT8ApHeS$d,V#$%)*i+'BamFS5AYlY,bThTI(GKr
BGTX(fTafNA%Y*XI)-FK#dLIE0l-3VmE@(%KJLY#3!1SC*8S(dZ(I,Vk5(RR%P%C
ai8DDdfe$afr$PlPC9V4ib1Mb`rAaXFhdFImA,),P`BJcMpehm5#4PY6hUPLeM#G
LF&"GRqP#Ka*KF`9,KC4[QfbRDA#F@Z"3fSbT`TbPi-9KY@8,'hk-Z&rX#a++kEK
J54-XTk%,JfEB&`p3CQ04L&&e0UNNqK#TRPNLd&DI(m@d`,rI8J8KE9SIh3Zi4,M
-TXqGdVZ1'e48930QUh1V*5P*%'G*1m()`K0kF,m(I*q&,*fU!444ZiUVIVMYp+G
QG*XfIq#$aM452b,2UDDGdSNAp,I+"ICqpaC5CEhEA2m&aBZaRSQeZ4JQRHbF''H
B'b%XS5+qHT@S`8XmFl%+"p*@LhVHIKCe4JkFMQrJN5&"8Pe'Ai2r4e*"GV6VXTi
6)epX&(V+GC(T-Bj4c'6`*)'AG&fb0UScXF((,#J'A,$J,j81'+,`S+"di%0PU9i
SpVr+XF0B)imAU*PR'Y6D[(XGl9&fMK)i`RUY35$q$LQr*DK("UY@,kYak-'J!"H
GF"SSH$(8V)Z91q+r'rb*[Qr+RL(p85rdQYjh,+%E9GdFDd(,lY(b@)C2CLU0"lA
6#1iRD"HS!D2YJ4`@%Y5"iF&+++MUKXGKT%(*EdQ-Hrm+ZD-XTlUIRrNFFNhma[S
5K6($%2qLmh1@%cVKM'0'YEQL8c!ZS``kpXG@rI8&&&LPF'YKUAHL0ASb00[E(XS
c,j-[flE'Z+U*K*LT1mU[,a`BP1aC&6'+!lI5DKh(U!V9$bXH3`D@0G,&Y!p6Y1e
EZkS+-4Km-Ud8%jmkKA`i1!2N)'"h3)!$Y%!#`Z6G(&[G-m%a9"bY'!fVkX)5Za"
)9J-dJe5+0'#lN@"eJ3-Tj-,5b$IGjNI8541R,*(DQcTdI)C#!ISK(Pp5,(ErG#r
2#aM32dY#,c[4m1jC*XkIhr`*FN(G!C'G,&Rm8Jacl""@m"3TZc,R26&ihRV-PX*
A!'[hR8+UD''HFq*XC*bkNM(BI$2*N!$Ei,b8Yh1Yr"k+!D[PUbG!&qTZJjRZmj%
dNfM,'*MF",3!i2E#GA[BISi2X3L%NXQM+[8*KiMp8[hR4&&3J[*+ai[NJeDVLZJ
YeC8@Q8"8`')3aUX&bafp5'hc4a,b)Q3M`aJhS22[I6J@Q"A*5Sp'$6Ih9-6[X#P
'8P%FIB"rmH[CJea3hZ1dT2Ai0Hdq&L1lMA`fe*FS&Hia*m-6Ur1ARkU`bXqpFM*
YQG@$Bm2ALV6[TGi(CeSEBhULNKG)qI'9-G$)I0BH+YS9CBbYqN$mT5&%HU+4h(d
Pk@Nj!`CXZEj&4K'BkZ,E$j22N9#M3&)YY,3@%#%M3abY(G,45d9mMf6303FU4UI
03#JYH%&N#*9F'b(Spm*NV(,j+)VNQjfh5Ra`a$J"X$26V'EM"%Fh8"2Qb`1KqT!
!IkG3NF@R9AT8,R,pRV*")DHb4`#*#NX00j,6EeXrdCG$Tq)*JXm,62bIZXTED(8
I`-jJcTUC1+4RFCBqk9"E'!9!&#RTM%*5`bU2Hq-$5$Eh@)G@JN[M2U#KbKZCp-G
XY)SYJVIPK2&$P0Ip4aB9fhhASIa(aGQXcPXEIFc$jqN1C*fi$JQY0X`L4'6RB$`
bjZh`[J5bJU"r1M`!Q%QekB$jUIjqQJVTPSHLkA94mfV@E11TQ&m,8FbFUR&@2hB
GS49C,%XNLT'`kVU92G*DqGMSf"cE(Ic(!G+lha$h3(4!UcMBBRcq1,ZB&HXLmm)
"fR4L(+9MJh&&r$3,9*j!JImIdj)Jrm64'Y-Ra0le%I!bZli*`RLVIRjRTYqdX*@
k'lJ9Rk+FhUdTVY+-J3qf5%Df@rJ'rY"q4KHU+A!G-cGMj[P5)*FleTC`Mjh)RIJ
HDkdPMN'qH%2I`l3k'q2ANY$NMFN6Cie!5*@19`UMIGSh,@QNJN1k%"iaNNX@k$f
01RU'J1G9d$4jj&fKZdr9S&Di8YK'mMfPI0ZrXSj"1aR)b6$HV"6c-A$-#E,4j)X
mGGEY`bGHBHR+lZ-jF[@*K$2+kETIkhm'$&)P&ri$L'K0l5D9!e5&0#b"qJ4IZV+
mN!"m-)K`S@L'MB!V-`,TYVU5k!*A'ES`VfP6-Gq&SM@`LH2l(PISY#G6iqrm8IM
TqNbe$r4fI`3ec)cLP50Xd+IUdYHJ8V%cDFGm)SA+Pk[(MITk6NYapSmmUk)c&Q4
9-JNm#3E$1LX'(G"E9r01m5Np3+)XhcS)")[Ki5MRYd0$01RFNL44Rik*mQYrR$&
B&"&1I"c#4TmK$X+L,MLRXLJVe0mqdN3Fhbp-D8mchqDDf)amE4YaBr`9SUAPhU'
hDQJB1bPCM'ajUkc+DU`5S@d0T#eTjZCiJKmIKJ-U*N8P029YRY`#`!qA-EeRSSJ
jf0YE,pr'BM5M[k+ece[p'+eD!H9J2b!DbI'cM@aKJ[k$l3N$A(`9Pa+h8`T`80$
3d8U18!fJ1`5Nr3llPXKpHa!(N!"G+3HA[**GheCck6iI1BeNL!*d*MYFE8YK564
HEY694XH'AdAcQ-F"PmC1@4A`RdX9Qd&F8la!4EJ)dN0`J'4K20fY5HeKRf2Up0r
TA3k)JF"5Y$N"G@+-pP@LU$heSP&QYM1F&)chPm6Er+m+Vbp,pF2IhA50N!#FdZ@
YB(4GV$TT@&qqMlZ8`IB,Z`!2[ZFheCH2@qHP$@p&L-L$,bhrE90RQTV$UiFeE2J
lIdcDb!Nm2h6,qF2HYB-reJ)SXZGUQ%aS[#hLaBhQZMlFCHSc[(qkSZ'HXAS8#ZB
bq*aFPV+a#[mTfXh`qEha'+!b'a[*1dK5NU(m*[NP4+Z10eF**'qJ)i26X$"`[0(
(e9EdB38eM!@3!#hFeLr$-BB"$JT1+I'ZejQ+dMh6TA,+L`f%d#AUX,GTleq#Gmh
H#f'`pi0[8M$$dpl,[68`9"aDHN"k3NeGGp549,Y8Ua3+j*pPdkKVrX#k4K34Y-m
Kc'SkMR5R#9KV596p&`N,Ab5r1*S+FdG@bl@(@E$[U1CF3PDf'2M3Gjim!5+$0i*
3j,SQEESfIhMLDVffM34q&6,((EF'lQLApApMbMP)Bepc[FKEN6aC@l,jE46$8jG
lmlPEErR5rCm1$Kr$,lj)$dKRJer6F*h-E[H)+iZ1P"+(B0j,$[+PYJJ9-PeS4[b
h3jY`iU'J+9SqQIi`B--9`l$TlBLT5#fNr0*l$4Bq21iKG1p,BZU8F,0'1md6%Zh
PS)C,(F0al`B5bL*b&@&N#J"ir1)+PlfZmTqd"A93NrZ41k'QCQ*PL*1M`q-m)Ul
e6PZJeki)6X`i!cZrB5iYfK%laYkq9R'+i%Xl#5Y,r6V3B&l`*"k[!ZHLqGXh@Hq
D1d$+0S"BBZ)h'B38J9$C#DT#P3dU'eNXZiaY1LIi6%k2(#43Z[RPTF0,iKlVp1G
B6!$$AD+"2eX2Y8e@6UNbPif'1@I"kT*k[!j(RTKS'BP[5&@XGH+!cX#D6K)%dGm
!if21%&9Sr0@#Rh[G%CV"3@*Fa50dL5*ie-i9IJJ[bK$pUddTZRU0TJCj0cB$pa(
@jNX(&apGI!Gleq"Jj&8R6$!5$0iDTimfqR0cj`)(+XbU%8mM+qJ`*[Y89,AbIB)
B%rdj#qh5N!"jCDEfU&T2XAhPrH2lLSqN`lVmrlbTQ6%bU%T0ENQL3)J@UL6@HSD
PVRZD6Af9@8AA'MkMh1VQ9eLk*M*351#YXKrFjS3$6X-rpFpZEAk[HTl4X"m%V*,
dUTNrHhhiE"L(mlb`"Z8KFdmMP6FY83&JAFI38#6[hTd*LD@'*KClCUL,KCE%'Yh
L+M'jC`T4m+HfX-EiD('hL6H[#-HqarIZSK8M'8!0XC%kPe[cpHU`V3cPFUqFCkY
EIk#@ajSV!1DEi,V-dP59E!bARU39abhdhbFF%[0*#)c(,Y`1jTUbiA+GVT%*aYM
Sa@[PP-ffPj)S#abJpHUkdV66mk%bL,9UrCIlhk8Re`$eC*Eqdc#cKH#)6MGMlfj
6Aq&'Xr+KYa"))cTEi@PbUQbaG+U%@K8C$AE%E1`SkMIINrjf4f"r)G"KpL5aZZZ
SL"M6dh$,"Dr6M+VkU69%icM$DG*"HdB%,["HlljZ1@VB,dJf%iX%6*,(Sq,Q+0N
)jQ`PV@FPeN1BC%2dP"@hQ'mf(M,6[,CT6mDq(96b'#e18'0*TQQqke%+rQ0piHC
&m%ci@'(83d'SD0b2lNjri!`[rhK(h5H*B9JcKPe,XU04eBMHp"JV@bHDjJ9(-R+
c3R!l`GDNGKkRT,QE,$,ia$EiJiYT-ULC,DS9P@'BrZ+Zcc,p)ma)1'qBBGTedm2
k4T)SiGiTPF`1(d0-ST5@IH`CJ#k$!Z$A*U2Gc*L"Lh3+43Qc'fjib(4YEV(J83q
Y"Y1jI'BMQKb#rkVX[!c48MkjEmP&(ZFCT,4KFaGDh%V*C)J,r8)'IhdBBmY3Tif
-4P*GPU&N&qB8hfU3!,HfNVjqX!%ZP(XLaDI9m1T0*'qFdR(EF%[&r+r30,r(61i
BES3IZV$S`L9X(fFm6ZHI!b!*,!+&Q"hecD4qA(SAQP4eIQIYdd9$TUUJe4p5IKh
MZRXEf,1J#Jf#VCGaDm$E!dR9@!8a1"dH($kCkm9)rX-d4I1#pBAIFZ4XBaV15Z$
3karQJXNGh*f%r(2VIhf-'I9mMQdm#di4pf!#i#,$DQJ2I4p3#8G"&l0TK0$Q3R6
'YKd$FF1G@i1ISP+A1lUR!TMrbVkB@kqbYaND%N&&T)#IA(e4a2JbFh[XSSKPDX1
3!#qH[V$e1$jTlZJUpk2S@jP9bRImZXl@2dl@25ClYTE[*4DFAeKEBAQ4NH6M&lq
kKd%UcCX'SJb&8X4DG8J+K!ridU*GBIR0ZKB#lcV[(,qi&S&1AApSABF#I4,Na&c
Y2S5fa@%TT%Y%K"2pq9m2mS2jI$(&M2P#$4dl+eMk16UXKdQqE(F(e5j$e(!BE9Y
j&ZkdX(fQqq'S-QET5&8+T318DARSjq(qrd(YXcNK%9E"GQI244Ahe@%0b-l`"!N
21`PA#[-X85)5Y6XX,jA4"-6VLbAIG),qmIZM+)l-XJfBQV#JPG$Hq5bY""LDp6h
KUm5le6*C"66D2XV%*J!h*%APmI%&&`8B-V+G8JVcVX9miP8qX$1&kZVAVY4+l-Y
K6d-*RJM1p9b3!"kS`,k'5$(IZq*iV+0HERS$hVVG&EKAJ@)&@SD&UC5HUB5ZcFQ
A&4-G"E*3X$qUBF3)J$XflL,eG9YJrANGf02EBf*eQc453lGN!Ap$d0!!d(SH1X1
eT''D(Tp#CNMmhH!a%EIqc@H!5D1Ia)[STX3lXJ6@U-lSdpI9ID,k(3Dd@h1Cl9d
r(bImp9ZU)i*`6(H+epAKpT-1L!K&SDP6V3[AA"I562`(H4*Iai"![$B52QLE4)+
pjeAlZhH+H)1ra5ArJ4[S%kL$KAC&['#rVC+X)"NYEj*Lj13h9[3)5,D2IK[FHi!
HQdi`A3Zbl`im9rTRD'Le8ldZmVpl20@lrYY+09[r(*Hf)'&6YXCRM3`EKCT+KQk
MdYmq#UUMkBPaQP6-4b&rkaFiLE#84H!-aK9jjPe&Hp@SA3(lAi&SM@l9iA#N[mm
%r5#Ji$fr*VIRj8K#X0J$JVUk!NV"M2kG5T)909[T@$Lpr&"RGMK96"@rab,AqNh
U#hAlTMUMMqI1P1PJSJ+p"UTKYi88aMk(bU2jHDQNI8R%h9edNKZ*N3kPcZ9@QaD
fEmkU"3F[-`j&mfbPETP(dk8Mj6*UV5pbMBlI%HG@lqcFhpPmD*Z*H(!fp+)DTjU
"Q($1pMkk3iUhjSR%VZa)29N1BTXMaP'bd1`Jl%aZEi,RUp9%lQf%b8!D6*YMT%-
@$%p%P3cKLi)&MB*+(X@#5ki`VCIqbEB4B`2Jl[T3YD3IkY!')kc0@i4IdV1@fc+
El!-ZjH3iZX0B414Zbp@@P8+J$2bHV05([HCi9hZNiXH#&IfDJcpjLPQ$BUrJADX
#9k8edK&19ej(hcbAX"AP)lCrK"k0Rjb+jKG+bdRHAXMmG#-#8[58NMmr`pM9-VY
r0G4H`CVFEaSVK*[lZYNAUhNi"Hb1jmA&`l[INV'9mkUd,%J$0-1+C`$[!,0DE84
Kj8Q&ebK!lI6r,6cPY9UCabJ2[E24+D#Hc@2`S@P'L%1hX0M3cCMMcb`hF[B*j$I
jeApc40h5AKbF(![$UTM(Ef,J,FUTUaPCB5P(SE%ArUM0K`E[DS[$9Q$iUp!189j
MKaKR2Q50FVK,Fq9YcE68BDU@Q%VM4"9+S*&S0&*Xi9MCPXH`aZTLIK$J)R@4)e6
P!4V(V#885!C4(qSU`(JrpI1JEJpCeYT9BjNhX*JVJJ!NZ'(Ce0ViA)$ZSdM"B60
K*aDA"0NIr)bXb@h!rKIA[EEaR'MiHZmr9CfU!a5#9'!Pp"0*TeClKJJZ$UN#"XF
[b)Mf'IKL5k6SXqZ(UeTf5K8'c1$Mq3UA+0'HEc6eJZ3@lD9rf&Jq'I9B$f0A"kA
Da+P'"!iUYNK8ZN-KN!#d0qIE4$a4@)LS[51,F)lH*0!Eh312#UVfTT+m6C2Pd4"
c3UdQGVh)lFTN$SXBQ)hj`c2,ff%J0)N'8JKNFm8JVC,!Zjr,JEG(!P2Q"b!YIKU
1+Sr3BV)T3mUA+bceS-ja*QkDbGA"[,bA@`0rLUm2KMTdU8"l1FAM(J%STAd-B,m
Nbf$r*[i%"H[2G2+R6QBiGU6q#@J3dbf)GNjVZEEKHR83KG9VRGhjRN[#@,RBp-R
l!0pfZe34emm359d*fhhG-Ur5d3,F`9kr8q,cVKdLkeaE6pEL#CTeA@RLGRAahMq
ZAQ#EH,4)dF$$CqlZBbNM(pZ)35h%$6'j[0!dbT`aXl14h%cV"[!#j8erLFh,9k4
XN3P6BG@@l6YX5qa@4H`5QlCKj14C6PZS0C3I9mJB(Cm$c4H$[9Y'2LFRcZPBmZA
PNQqhed1N[5pld+p[2[!,TZlmGi45jaNM[P(DCZ&ilR#GH02CQYEaA5"P(iIC#p)
&Y$9G(E!+&'F-$1DmT2R@CV`61#`6$@5J#,D!6T,fK3lXK[rFr[KE2af"@HE0N4m
Z[KNZ6CG[i*e8UJdA3S[`[[6bUlU4ChHRr[P5+1eRSXa(Q$e%*'@)qC,P-Dda!TF
TBF#U'i@9J2D6CrddAlZd"klHfpbJ2S)89Lj*3Vrc&)G(p!D+MF9(&!,IDkde!9%
"$r%#bY5'58b&-Q[KbiH4mH8[Pk-VPR,HU9#D!rNLSr[mU1&jIMb**Vp9ZUmpPG$
&lPr$"-$p)Z(%Z4B2h`X"bkbid86-f[dLfa0@d$%TdHY+V+hN"3I(2@X"Z%GfBjY
-r3HNB(FiZ6#C[UlfK-`@E-ElC@FNFm'SZU2+ZIr$k4$XJlM-*mXVH@4cK8UAkqE
)lAclbh'i"(8@dRFN29Lq5Tp%Pi(kkRmZV%-TTNJYkCLSK@i+SVdH##'ikYj%'J+
8HckRZ$fXb)1JJZfm4V0*AdaQ0RCGZ6pE@NVed,+&6%FR(pN6E14)4!K%d[9&(pG
"MU%5!32Ap,9+&"r&aICVdl)0NY6Lm+B,6A*ZMrX`+YC,5cEeFBpSQK,P,k3JQ`m
L"9$0&b69kU#XTf(%@6qe#ZER&k'TLXbA1DCp%XF`j!mqVN6X%5DC5VHH`DELfp1
19%R+[-b10%*13Z8N2rp-ETG%cU3M8#*Nj%PV'J@bid4[-JAk5&Rbr3dX0pc-$(!
imUBa&8"-p(ZS58"8#pfT[DeE!5Vf5mqZDY2I'H6l[E1(e'h`-VIi$2Y8$PkHh)H
,q6D,4a0DB%1lhf5@G5GI[1Yfj@ImL2JUKP2H%Hd,kh8i2"f-#9DiM2a-8"VY2#j
q0Qd@EC!!S!4`*iic&APa%BIJ&)@%h@lRMBpFA-1FfjAi1aM4)GJJ+E`kE+*J*'T
5(T9'ZPjDJ-EH*4d-habG`+BM!THJ+"TE9i+iVVE@ZC+15+Z-(8STf"F[[K"4$c+
QiCIFeZIBFrRNqdhYi*Nb#+Z@`"#+QT*#8j&V%PNMHX,UR3"0m++6$B(@8dqiQ`i
VL"0Vjh[fp9b''H,'UB!Bk5FVPhA,m`3A6Hm!#GR$X&P"a4krCX3DKbK)4Pc'N6)
0NNe&'5LU#0iGEDN[@rb!['59h*j,)RQS1,k*BFeH+TH!JlT3U,&FF$b&4%4QYBa
cFeEe%Ykq`"CSL(!PKer'U"dib&Q0R1!53+ce1qHk$b'K!9$(DA#kM,PJ,ZqVT11
0rJCbPecDZKTf2hAQAm"EGCV8e28@hS*XG*!!V96ipPXl61lH3P1q,SlqAjR2fUC
h4p)Apk`@ZcIM&aEVPI$fC%38XPDYNS*Ye"5cG6q,`lI+[!Z&Mi)kDL1G33HPjL)
$YN8!`AY%ZLK!L9'jP(lH['G%&")fQ'Rm4*@B#DR4DHTi#C'A)kb#P%QY8YJb0LU
rJa5h`)AE%cZBl,crdD[PIZFhlpMq%i%BJ`%)SGB'2$qAkG$NS`Zf`5KH6C!!62P
1p,%$KUq2ML+M!Sj4R4HZS5(8P8SCFAdl+A,JdaBZj)q[ibLfbfcCjN)M#8&S59&
'RQjBBE'`'8G1)3iZ"39#S03@ChIBIMl%Cr4m1V*ZHA@Rd*P1hKe[d*80"S3hAhD
V4UIYD3IM)m#&8cpiPIbr-IAXSdIBV#)(3IC!F#%`kLb6PF(kf,l2kc5H'Efj5F`
8mYa%6!C864B4$L9J8@!EZq5``H,2RFrGdD8B9RjbH!MC-[3rMTfGURLS'kUf65Z
@ID3&)MDVa4K8U#EN1)V&%bi8X`@r'XMrcqDLe+h#9-62a,emmUi"Mf0&-9RCQ,q
hPp0*Hr-ZDHII!,XU#l41eMqS45d*52f[ZUrHP1%M-DN0$i5aKRlR4`E!VSi'h+0
RClq!1mcJ&S+&-GHTCV@e[mk[+h[!GeK(PqDSF-HP6k,1E@`R&JBi[q)(qcK1"Lh
!5U1TpE0AEQ@d-*1FY@#F"ShFm0AFfEBVSMr((6p%IFPc)cA!jq$@GNJ1!(N0T0$
kSe,rhZkMq%#'ePFB+ahkL4e$Hp`YZPLI`J4ZmMNrE#VPNKR`FHEJe#j6Le4bFd`
G2ZRAFD+"lR8-UpB`-6a98!G)!`'&#6Lf*,E%M+c1STTaTm[Rbp!)#eGqV-Sam!T
Qra%Um*Q09#XCMD!*1N*%KiY)$TUPa%2cPT1Di,Gj@H3*!UTP6m1mRaCXD*Mj@PU
m'@`fReZ4T1ZSbJYBCG(63,1MQeeA3#A9($Ua&)A(5[KNe(XX,FA5`$NbH#`P4VV
iZ[2@["Q'4'4c,kCXU%aRhU+9e,X5i4+lAE3dSFYHpaQNR#A-J0RpLjpA9-5fQYc
h&c42Hl@5L`lm[h+0)H-R2T,2bMlc2a+%5H8C38-(Q)M!QMmjFI3(%1*,R$Nq1J3
YL'MeaPIPSG)&G#6i##*4,ZqJr,8%XY'%XZRUB1R,L3E@e3dcXNTSQdUq[*[%MRY
bVGCN[Udp,J"hV@@MU(aJdd1F4[f&X%p26iiBV$+`jZQ[B[Zcc1DpC`!R@Y'5FJB
Ac4kj[1C(a&dH4fa1AC6h@"*p"em[G@B*-MD')brd(Yph@9)McqkC26QARel6pL3
C5#SZLHIdXm4f'@mH'#RZAmPEEdA)d9)bJKQ-USFqD'h%D"D@klNb#"[Bm4Zp8Zf
N[F49YJdMC8e)0MK4*Yi#G8r'dm3#K'DqAPQmS@fG602"b$IkNPk@SfeX`)L%QZh
U!E1+`+DHF)S*U+Y+`56f2kj$kLI+CKf+G+p4eTG`c`U`F'5)rTD+R)mR#Mm[[J,
V5$@&k[A*rk@aeDrkcF$ql(m*(0*+(4HdDP4LLj9@(LZcH2*S(q0&G4YHBU%M46N
m65TACd@F(I5TS"@Z[&hBQ5kq1h$P$8@dkcp6IkaEJ9m8*DdG4aiQAD"X,)ibSK[
fDXj["Q)2p`"b[$VLp@`)2r4IL9hA&,[4MPcfd5d!ATP+hUiir5&Apbf&"$Z%1lA
XG5MHMKM@dkS[TIN,h5pmDB,#dX#%i)e+X6qi[#H-J`4'8$l3Xf1brSJb!KP+el#
V5UF)0[$@)XfqMqEp930)C@I'TG4F),q1PaZrL5TAl%A-X`T[1EqU4ABmBqZem!L
HD,aL1!U$BD,"QZ86cXcfBkKC0G@9e@@hcr"+M6q,Tc9c8"(RAdZAb53lNHGjGL-
H&"9%V!%R4AMDbfafD&,Ik1%18,!r3U[55"8)NLrqG,&!+,@&E`S1Z6C`J4KF6SX
F2E*0M,eP!GXpKiS(85&YR63q5MVJ$KADV53eifkI#I4hpM&c&L4@`p0Hi0LYaQi
&FXJ@KLj5(-!YHqLJkGF8#L6ZB3Bm6ZcCc"MaVVBUI+'MD-EL!)CDe`dHGdhdLPh
kZi2(mIEle4cZQ(mfcl)NXA+4VP#IIrChKJDbe0YATX0#TY)GSpM'3IUKm-MGQ*H
emCl6T8$d8CN)2kYe#ZG6@AV[#"-8Z-+iN!!B(m*+A")8iYZ#$N&m'F5MXMhdPI#
KY&aCVT&E)ZU@S0b'hXX@!qb)H+NVl*4"B(5cQJ4%Z6%F0-)m*S,VX&$&40$q&J!
6Cq9I[,(Q1dq[A!K33jdVJ#chKFHc#Q6NjUf%&N0jiRr#C@!mGIDc,eeBL(PkbA,
P,pFE1,!cT"P`@0'3!-HmXehT!%-E14AbE#DMBbli3Bbf[fiaq+RIi5R!kFT)i"&
bLRDb2KjRRV9aq6[ja+ZeIeQXT-QKKe[BQNKI1af&e#LZ-Yf2kcMe#ckfZc6-(Bb
F)"R8`qG2hlAMG!K"V@I`-l81f*a!()MfrrDl#,c4*8NM(HY$M([UHUbU)0&A'bp
mh@QVTBRN*RJk"K#i)JHVhHhS1b!$KANVZF1a[X`1ScpA@q'6SVKY)KlH`93FfZR
KMIm`c$&lF-5YhIrX-!UX`Iea)d8ZD#F2Ul&Th14Y6NK@6I9AfD6VB(VQbm!$eC,
SJ@%m4bZRS'9`UIH5A5&,DdX[h8Y*F%%NPFa#3%#PPX6#PA9!X6k(Be,"@@+Thb4
IBP0j(JBU&Ll6%LeSi@ICS`@aeb9GAfJ#k,1+qD'@h,E!aSAd86+fUI@TAc)FYU#
JN!#cbY)p'4!H4#4'XB*8Xe-*2r0&IpkkKcTCkhV$UH@NZ'AIl5M0mBaV&DrT#Kb
B16Q5#"6AqcZ,ZB9l!KP9[2h94bma"2#ZqQX*k!(eZ,EpYaA'I21#eChE6DKa!3-
9*4-CRS-8!0,j[*L!*J&m@eCSf%r3Ik0'2l1GIRC%9THK0F@+R'L#B%1KBmYfAQF
XV2CST#Q`6h%F3&@D,rY[L)&0,-5![$HSEP"N96Ya#H6k*e4*6(%)JUkD4#8%C0F
Q08LUi3012ld[AXC1Bl(Crd`Tr"8%PY5!QhPB%RcJ5b,$'&BqP"ekV2#E"ajif4S
PT!%33X'`-JP8FM[FZNdaY*)[CfMi,T!!SbT-(FmFiaQ3!%@HkR(3TLKTH0620qV
laCDlP+&kMSQd&fXG#1Fd1FQN4B[84E!-aTGhRS69hYI0rPhA+'Vd1`rhCcUB1KE
h8JMVLZl8,[e8(U@+"D&3ZFRDpLZ+ZUGBMN$cV9Il&k@'-DKmF'8kMZAcd,iRGFb
SE%EpHb0182lXQF6`kbN8hcUeaES-'2Zjkk+Dk2fcPfQL$@"XkMK+-kRmIPPAk6k
UhR,PEPrC8NZZ1BmYHp-H95i&Iq6`Bm"lh(c8SGGEA-SdH9b-J&`D9Y0TM4mBGrN
Y"V1jZ*M+-S5`q-ME#+IEK1HI*DTiUKkYC'bUrX@4'Q*`,+#Uh6BTUS)-A1$fc,r
ee-Hcj-lRXAUd,N9`B@3jj!2bid3mP84KihN4"MbD+I@mMKAcTHr2r,*S3Vk0a+'
iXkMA*cSBr2DdI(&0P`L#0a,ReQ(IF$%p`%6IXbCBe'b0d*pZMD(ZUlU9pMf&9Ep
$#ENm1@lEr-I9+E-"qXLG*S!%q8*1YJ'"H2bmFM-rirRi1)%X5hNi#'i+q0NEbPY
&B0HT4iE)K"SCpj'6$d)XL[$50Q%ElNJKGc)q%bc[daF$b"6IZ1&Zl3V5Ip`m*88
!Lh+HYEDYlS*@bd2V(h,j[TQjNNJP1CMHdZ#&UjJjR05H'3$)(cbDf-0$p-0lJ#V
0pBRjA[*%'"5PmR*M0ki[)hjlAJq6-&R#YiLR4URlh[(`6fA'6"rZrTK&T8K3fA5
((b-CF$LNIY5R$QVjT!&Z),CZUKla%JdZpd6L1XhSUZNZ&5&D!AC)V1DqH&+l!1X
4Lq[FE8qK*icpC2'DBH35V2Y`lK)Z5V)0Y&kh"+H$#Qk-X455pX3%R'`m*pB@jFL
Z4C!!iqKb6T8QZCqah&i'A6d0e"86TV&eH9RP-[mB#E*(NPc'HI1h)PrrX,4+Xi1
bH,L,A#)e@Shc82cKd@M-R%U9NV'Fb+f0PI@Z1GN$B'NZGcD3!-!fAQLj'Hk2Xkf
HYaa&%QrKLQ3i5M$"'cF!IF`ITLpT+1k-N!#mU8Dl23jr'JSGKQreCYZ1ZdSRP'f
K+`+I[LX-a-P4FFee&@A'FLAmDS$jmT!!MYI9CTZ6pI(9MP(K#Z,Z(@LXYjM[eM%
U&cZhX%l!pl+&dM2BF6M%FjCF$Q*%,&$#Z-T-kC&"T[PVqI5H13VPd8le)"PlENB
0'8PF"Ef1)Eb@AC9CqjS-B0jC,pMcpH%ADYba#'Z5ri[,jerh"0#,mZPaEdKN(9b
N9PiP9`fIje-UC*(+TRS2R%Id`%UKYFP8eIZVTTIaAIC'f*693JeYrA$&d!Z!K8l
T'50U@iY3Hq,9MLZrX1b*c(EFFVmh"B%"DZdCKQ%ZFj2!ll%!jA*J##$U$2p"blB
i1jE05A4F!%C6Z[[@eqEeHBFI0bRl*qdMr0!C+$*!41q!!E901-K!&6f,+8c3mjD
'YmD,JP3i[aJmN!$G(,9QZa-pUr!R-S#I0C'f-aiM%F$Sa"NU`!%De$E)GYS1Vm,
M#Gh&8%fNrdNJ`e2fpXjV0`kIjJB`fk1M!Fl()$!9[cFCh1dJ*8d"'M4l'r'B8&'
@-drLGK*mm(e9)mQR@Z%,EB2`SlhI0S!4%9r0If2+GU!f!@CUl&bi8+*B1Z-JNl0
'1'iAhJU1KSJkPJUML5Q)fX1aUJ&*Kjam(i'G0B5!LiqeAEU2F&HdY-dmC9[)P`B
1Gbq-APll5N4mD-j%IYkAVXq$P&5[pm$Ql*C"Mp'[H03$FL!0$Ch3KUQqcE!lk2&
d'3DccMIk(,#kCCfH+)5XUeVU$ZbECRQ+$H2CfT*El2rK5F@H[!UQ$`BU(fB`Hb%
UJJqMLr1kd@TAE5[cib&8h&HZ!FVqU8k2)hAMEEQSEXj86MZH`T1i#EJ*MqDd(m0
E@X'`P9,h'QKlLr*Ve@qZU'EP,QJcG9dHT%c62lace8T48FPaMS6A8JV'EJKeK3@
D#p4L29"*RA0PXJ&cc,2ciG`HdP#9pk0*&Yf,H9SI*II#9HK1G)bSD"V'*R6Cl'h
e+kCNqrPTcjEEFiKM8'L%[kV(`23E'KFlkPYa94NfiqH[L6!I3MI6fC31U"D`U5"
3&L-UBZLKB3`ACrFcGj1rdp348!6[Ij832I(F"8Y4B,ATllFNP35Z43Qm,DS81*9
a+!,!*Z'idS"aJA8eAN,PQ*)ijcrqc2MHel[mpS+r6T0+`@-ljSh2YEf'h$j53%0
KpB1,T(X#`4-C"Y13!++VjRh6cLhSLBeJ8!Ke)[9F$hJMDEEBPF`!Y*3ZN!!'81H
aK4,0!@'cY89Y+2k-8F#pEQ2dI#iMkKHZifpb1'Z6U'B!Q[m@PH5P2%EJ+i'H$RU
M1Pbj8+X)U(&ebE"P"M`VJ!%')A)pfH0Ciq3CS@N4Mld"3#jc4Hc9hPSAk5PN#'P
pDIJhK'T#`8f5Z98#d%5aA4KP)TXLHqKcA5Xc!'-h'$VjMi8Z'a##3"rp2LUTqiZ
ieDPFk0(+pRahq#(Df"9Vm-9BcX#Q*&1HIa5'QBJbXkTbI,B'h3ZMe,fYX'Aj"92
D@M[hF@*rLmr96EZ9J"&1Fpq'Gp[-eDJF)&kFeArCD3%A4@,V(d8R[mJXp$a3-X*
Qa%Z$*9fh2r3p'V-VlN6Tajr2DI0e+SmJeMR-4d6!pN8$d**'XNF'8B`'"-2-''F
dDaN"*Lm`3HaF"'&`ZDjcY2k@%F[)"TjDMCkVD[aHb$1Y5Ta6mi![('5c`(HT)Vh
UY1liSP"$5R-P4XT2l,iF63I[Ci0(!racTMBBUSiJTL-e#9iZBP*$G"R,jaIS3e6
q"$,dMQqC9b!VIYF%40L6drFl3$)1E8k$2KUD)PGKRpQJZa2dhlF0R8Q0b%I!6*S
L#DXR[AFhjcU0e-cpKX0Qr@Yfd5RpleQ6`lD&KqG"&@PcLVNGK$1V!Qb#a&E8910
ac[pKk)@TrAH$GX8!`eUV,PiH$P!0dq9Cb#MJpYHGrA0dUee11S)(mD@$SpmZ31r
PU(B1QMlVpUdcS1(N2fG`hqrdJV9`9p,IGHh-UkT5*pkK@(pbcimfk,C,E2#fK4&
dVqaMqP8ZEp,dISYDf0&TJ[c1j48TUaKa48A[X1KRR'3R+0dYhmAb+PA`jZb@d(k
LKD[HB6UZ-qNAkq&a@44K0d+AE4(+H5N2b3MR[FT5@S*&0BQ89p-`3f5)%((APTR
22Sbim#`1Fr(eaiG5FE)dVmhhr3Rm6eBAJ9C3c0TTZ""D)-rTK!BNMSFCq2q!@RM
l`iGj')FPEm%me3P6aV(1YP(PZ!$JicPK##[%J+'-F2E%VYqp!MEIpNhV#j26!!U
FfXf6!5AHfi!,##JQC3PqMTef0eMCA%ep[$eUpEdq$e,$'a)$Z(m-!r[IUSpR!3k
LlM4k58!TY+(B8D33VXf"r4jk#Uj'-[flK+%Rkhd6",m4YMh543N1M3DAk!Y3qm(
Xlh4Pbi$IePT*H@%d0hI*q(DZL[mcV-Ke91eh,-DLbLQ8ZAVFNGqp(lYPUaB+AA8
aMbM2GlEN[4QY`iiPP*-3aKZ+[fp%P@Ib!U,i3`f+@RXZQmY1bVVMQiAm-T636'p
*2,-F4Y2PG0l&F5'iI+p"GC6Je2jG4CR@k4R#13RNmV6#q4Il%&bXm'6)e9#,cF&
b,!"PL5DbF+-$&0l+81a0$8ji3eQ2-H"Y-N%)PiINeq-i"MFZ#,b$*dm#&6Rpc9#
3!)hq+b4Za&$,N!"Yk`TXqTZrfB(qP89JeVAUaG6-T6pdfHGq(*1(RJAC,Xc$C`Q
#&b6!91,6Ye-@r`RLfJkc,+qK+m4G`+rMe2X[V#NU9Cfp)T@brQ3ab-*)fXefj%#
jK-ij9Pj*QcbLe0C@e8'q$Ib1Sa$'G3'E5E*+DJbDN3VNNrbJ&SbC``fm,1E3Yqd
(4*SeP$G+HCar8CIp1NHM5UmS$8LFNY[pj@pe15Y5!6kl&"0-h[9k93#AbC-J(AY
a5J-T1E(9Lk8MUqT%rXc,TMScBHKGE3p9bH[!bBc,86mdT3'IGCUe&Cf`Z)!h&mQ
9qkX+6"EjY(EMP@q#)%FYP9T%4X29h`p`&%bi*j3$[Prc5ANQ2,1Q8JS9%YQMdbL
rSBlJf2V@*1RH6Ee1djT%#Lh8%)0'!!`C[9@9-J4QR5$9mQ@bmeBA+6BD2$'bR`B
%Ne[&GhPSJF%4GKaiqJ0`@jA+f1RcM53)Zq4dY+@djH'kbM0MC'd#FHE@mp2QB9h
l[(1K4!Z[V$8dGY+`QB%'BejJ[F#+VDc0FZ49'R#5TH@,'Ihpe18+r[DAI%9`TR,
E9q&CT"N3Zq9BpPlKrl&a`#"r6%mCKV2`N!#Mhr6Amd02QSZ6FZ*eI!$,XD[d2e#
"aq![Mk)GZp4-E-ECpU*`[[+pl,D8T%jj$0`!F9DPc`rd519mPECQiRrBGiZ)#m(
q2'&HT#,Y[hMj%4,qXRYJV'E$p`+E!Ykpj2fTrKX"ZANGY2U!4h0')D10d1'0pM"
Ujcaai&#cjk*`pN1qT6XM61PqL`d$HE'(jDee2%Aq5+GrXfiPYEBYE$&E2K,DrMi
EQHLmqIHUKmAaTH#NE4"*T8+$G#K$r59("YPceDblkj-9"9*I%,09r)`(G5N@)YF
@,Tk`Tm@S+,VU!B#S,`[8%+`ZLb4ZeMmSXJKrESd[q4F)(qbaT`"$hpbh@LE)Sj'
[[BK#-NDZ2eXA*liTqERX9+2ikCSlX$0HB&Pr*U8kPa+`GFPZ4(U%hR8PiT)$"R$
'h)9Lbj8C$"IZ1*44r[Z0($QJid6TDBGb`%HmYIHkA,U3!+B9b1l-2lYf9H5@25I
CrCY&MTGKDDiB306+r'8`c`%RGr[NZk"MUJ3c&SZQL$J(bG(fjQlCZdV2*R*V"'V
%"Nc-fX[peaGB4MhD2H*DMaZG1I*I0(Z[D$+k4)VrQ(,2m!6rI8BQY$AYm9`kbXP
d)f+PUmB&Vq"Ta,AIU5m"i3XK*R-LlKQ'R083mE83221$06'3!!X3J!lU"B@ElJq
#aReY05YFa3MJl0$Jk$ikIZZ#$4VeNUB3G!X*'X6*Ld,Fc,*&UDE!JUl*3f&Q329
B-N49ae56j5eKbK-V9,l6&AGjfMiG32%kY0fcMKY5D-DiR3TVE25[HbhlMY[%`,C
552ELM"I3)Zb#1d-#90!UmA#pKKpA#46[@*hem@X5KN%H36DC!dlN3S2cRPFbmfq
pD5"$-(i0U*qTE9L'QV#5aHZ"f,0M26[CKBV+U02Ml*D&Gmq4E2ceYZ-!j2RPc9#
q85'a6YqbDTCT5&PQiGl`3YU0[#D@I`qa`$hP`-TR'1lSkJU9jUNI#aK#AVV9Rr!
-X*S,h5G[@8kkc4bUea&cVF#`j$+ACRJ#ZeX*m`&SSd2%b!&cTqXBZaCAdl%HpLj
IPA[$IF*dQ9`aXBD8+[lSlSM"K98cL'S5KeK`hK9h4N6)+91dkVBkCHS3rp5XlHV
KBUS&dR2)*LY,Z@blG(T9U'Sak,r,mDl%T&UFm@"f1Hc#SkN1ZiN%l3&,*$(V1"X
L-bb84QVaRiVf8Lr4GpJ9K4r+p&&#1jK&'A3CmBb1LFEZkY!6J3YZA)IPeb`0R9r
k3cQG-h%PF3Ql"XCF&V#DNj)6QqQIqc[jGDZ[D&8BZ,JLj`T3$d#qfp)3SR!B,"i
dVX(f6ASFAd2BbF$NFIHqIr1+3"4&XkD**m%+aGB,(IfP+899XJ+BJQ,eZ1@*((0
0*09P54+pkV1EAQ(5U@"m&rVZB"K`2#MSB!0C0p,fK!04mm!mh3HmfI05$D@N9(2
$8j@02@eXTMe%p"*Zm5!&UT!!,UdeZ*BTPVYaZ18C)rf,MS`CQiVi'5Aj[L[4Xj!
!)[5`#mV6RN@4UDPhB(S9*&heF2)R+$HAQpjT64kCeT0"(*BD4"YcG!6NA#@,XZS
!EmVl$iq6*#`&Z2$k6$Gp)%pI[)5DKb!b%!mVE&69&9YGSCj*k"I-UjPRbkl$KII
IeDeRIjd#bKf2f2CmRfQASDFqNXL*rkZLR6DQX),H&eQ6#qF2%FJCfLdP4@ePd&9
bqqEb&YqUI[lA,jMb33NASYl%qU`189aMCqYCM[$KmADGI254k%*(&HS"FHVUi[G
LCAAYlHa&iqX!CShV%PHNUCDbQJ,%L%jHmh5i8MTl0hZ01`Pf!a1@eXD&)qLeClH
2K4miU@ThUqcU2M4`$L3#2Y*G9P418iq`A[-%Ff"+"NIJE#bkCL6,[0ld2SMKDdB
`JafDrceM9)KG9!j*',YQ+H%Q1A$bY`J[0@jkAA5I2bmEISPdm3,*I'dr21$(a)1
-HdpS9SK`R6,%#m-&1lmAB9M@#C,'T'dDA,8TCCkHr4ADh43P+RB)9"`Nj$4%#+e
*1%-[Ji[jZ'$rBY8i3Y%%2Z'FYXNI`5Zp(GRb(KC4#j'P@B&&3K6K&1Sa9VC*+XU
`cJ11p[eh3c%UB85M+1Q%&re'!!qH8"D%'R8q!0c2B@mB+S@ql&Ge`cTdm`CXZH0
hYP*(0*6YHUH4aaIL-jkP5,b8LGSX0@D`A1$Yh$6,VG'3!15,l1[K@&j%LC6B&1$
`rVT@XKIr5Qp*,EJI@@YRMh4fC2+4G)c[G8h29F9509cPS,l%`qI(68(236,Ul+$
*-@4USemX&'F*jer$4JZaA,p[[Y--5DRV(("Bflp#YE%+Z'bUCZi)KU'#blFTZU@
kpXE52P)ik3r5*[4l`Rj+R@(fGCAJA&rP+IZhVrG([kE4RKIiE3YG$@k[RfQHDEN
LZHjV!lm&lD`1[G)4e'ZiG#q,F,KH$%m$Pj'fp1SqAbE)GKGZ%1VDRSLl1Mh)JT9
U%ZQ5a+rPl5(eqq(!Ll-&N!!qm`B)[-X(TFpMM9rq#2GbH@(9i8c'N`@2KJDQ@Ri
TKVUVba)D!P4r&`c8VVAb3KaiVf@MJ$iiRhjNi15Y[-&5#1@BKQp"UcbA[NRUXG$
1C@%P#T0QHSH243RhFE3USh9@BKD*#hE&r%(H*80"2)aD&pb*P%0a5flMkQR9PXl
+aVkSk@'3!,96"M[1$cVq!4B!hMZa&&rhQ%lMG1&HUGS*EcAIJLpp*E'HS$I[f*l
CH`-AXim)R[f6ec1P5P2`e!F$j)9V2Y$V2E"b-$Yc"Ymp&$"eG2KSlllkf)+3!'r
6$INbQ1YlT,`SUZXh9epArqL"I9e,,!NY6)ZPK+D!S6MAbcH[q3IMVBlF6PieqQ,
A)FE(EDV90fbD`cZKQ+D9DCp,GMTi`d0c+UD"%%krk$&b+h*f)03C8q*(3X8S6Y(
S#1lB'Nl4LlFC)8GHBF(+05h)(S(4rdd++'kCM68[BBh*E43!5Vb`"E`cqH"--XL
HDE6-Y5(Y#c`HfXEJpTAVJc4Jq2$PDc31BDrYVb*9U-$1$MP2aNZ*i6k62@krHJ[
rDdmQb*k&Ud8mF28aj(3bT),U)*!!Ubp0j""V!El,HRbkj&h'eZqlSPI&VBL!Zr#
*K'HIdaS,Uaj)$IG-mP1[N!$1Tf5S'N$[8bk3!%mEA0AJRf0C#JdcKPQbEP@J!B4
LAh'8iRjK+cbMJTp*01N@(reiPF`&12K#&9MRlHCe[p"8pNUVXe48P2@TYc0CCj!
!c"%Iae8%H5"G&(lb0M4,qJlU!-H-0km#"[-@RB(LTQKrNq1K6G1)3Bf"ZMHqP6i
KXQCkX*LhUY[I1j,IY!fXV[cD5'4r$2Sh(NG-c%k"JLXbKDX@A#"AIejihQd"ciB
qK0BPR$4M'E1b,KV%F1hEM9Sh5f@UQS5a)E5b4KNmCld(CFBd(MEb[b3j8i"[+k#
Q,M$aSj8Yiam0feMciSQffS8`Q0T2#I1MdDGY$L[$A"+'beQhr0M+aQ2S3"&@aI&
XG,ZI,U6k)$Arlb&d3@#l248FQ)h%2PCjUEY*ieZV#BK,qmN"i+$`%`'"@S"!aQE
5jNHr4&@$TM4V)VJc[%*%EK8V,+SeIG(*H#0BB%l!%f12P9GIGp"MC4&d+Q@f0Y"
Z'I*9TX("@Gp%5BbCGi-QU@q)Iq&Iib@iV-4LjZ$[)(if-FaCIb+MmDN*fj*$aMR
#3aN0@[S6R%[i*FfTe`9**$U[G[94N!"X1qPa+2NK(Lh'BM%9bS,ple19C1DiE0V
rrb',rF49Pk+ZSP9$&p1E&l9"MTP'GCmN-'[&2-+8pcq'HNKGVCClAhR64IiRHb2
[PZF@e1jArG!V!Pp*A6Kq3GKi,(IimjXIm'P2A9lcP[je*@Q%0[4-eiXM6i"Ai8M
C38k++%rfq*eaFhK`8E*[8AhK+eB2fK0YTX3q8V1l9p&1a1`bDF-MGa,R4V3VeET
aEb&1E!*TX4Dd1)m1N!"fh$f4!mQiX5e960RQ,ZEb8b-bQj'3!&69k-#"D(YAZd9
(+b3pbd!3)0T28AdDmIGJ%cBC"E5H5pBPeC96V`-f(&0FR'm"%leB8TLfc(FICK!
)93QdHP-PZqB%Fep%KY,0kjbM95$h8hA0H!'hlBEbSCdQCS3jXpU-A&DaIM[UC%J
2RH5CCLEb))12V@mh3I(J4TM#K#G`jiSTSELlTcca!+6N5(RTP&CPr(2q6U+"B6a
SiGKaUJT@(5qPV9RV3EL3!*NSFplZRF1'cKJ@)X#a@e,$Gp*DD#fNJD&-b&emmfp
-YKXH#MKUm*8*JI"b9b0B3jlVBDC)Ak8Cjk,rrEHEh@HIcm2HaFeq%4!02&$V+%)
-PkqLPF+FAjS%fNlCI9qN4j*2eFk-*TjV86%+j06NG,6dk,IaCpbT'#25CJa"$#Y
#R*aaJ&TbJ'5r1Z6#l$Cm4d!""D6$[+RJq8k$-`-0Z%VAR%ZZ#(G3TH"2%q921'T
m,!M!-ZBrCdRekl(LSfGja0BETeRUqN1LY5eEPQd+GN@E2f'F01S*'V9,K'eiV%!
ArD$R'Gm)@"HG4@Yj*q8CiRHPCTr3hSCqVp+0NK+UVb)Y0YJ9j3G*kD,DS*L&kP'
*qTMl#A44r&9fVa+r*'IjG4Y"f2aq%UPV0#ScT@H-TPHa4UrTF8A$Z6"13b(,@lP
jSmiAZT[D$G@"C-jKU*h[!+`m&1T,fUeU%eG)p0jICH'@D6'HD351fYh5A#6H!&p
C-$!IBq@*5[',G"`XZqrjj'Qb1#JIG9aMSYT13#*!Hhbe3#rIee3"f*q50kkXara
*ahXS[([HY-HT(jGfGJIBR*Z4fLefamf@$hC6TXJ,4j*cR8F-Gp5l!Q8iQ08jhNb
"R#&#C$LjDU!$FU!YH`)rXREhP+CjDpfX3'cp4kr4XU!QQHl[LhRKZA9pV3M22AG
b,+T8P!hrFCE*T9qB[(9+JS5hkl-IF2-Kebq%#L[9*4`5GM4K&a*I0R4(k@lG@eP
f*f'qrd(f3$3*1XGNH-"BJDkkX+F$UH*k+pf2#`"!rhG4(SMLbH&38IR00mc%bmq
M)4%cPrk'FqmFfNPdY&dB0h@A0$5@BYc0ML$%a&K0)U8KV%cYEL#Ua*GUc,LQ%8d
[ZI3M"+!VP+P&M-'8(Ir+Fc5R56UiVGIIXQ&hShf$2!dl93G&TjHp$Q+@[KBcK#*
%kH--ZC-Y9Nkal(9lLdmhL9NEQ(XA5MMhi45K,0@,VNLkNiXIX1+,6$eli!bd@U@
%"6a,"qUE)8[cdf*)',AlS5qZ9h'ca$m$[EN5p@G5Yp[rC'I5M1V30#1lUE%VK",
0,)[!i*T5VV6i'9E3d+kqT+`!b3`&UC!!+$U%&h1*1h'*"R9h#2U%XlV"'CNcLVV
$T6V3V,39LmmSFrF2L%bX)CLZYJJNQK#C0bC5[TTqIe6AhRP8m$J841Ze3"B'4L*
JHZCGdNRm1CbmNQ+,JDj15KQ!eZTi)U@4j%q*Q*15AF3hI*GBZl%jc@r9p9Jahfq
Z*)h'qLeGUpamCIk2%adkfT53!0DJ[JQd6-2l$HNCh%UEhZY5H1$hA5--9QIP)S9
X[!85XSX+K(8+9BY&F!mlrp8bhQiZQHRK$B21QJJe)d4)k9ee+*jr[qER8ChChr3
S6,qYB6&faheA,MqpUG9AAj-Q8bT'!1Em9HJ-CeS@5D2eVh+G4hTZU#T`HYd%[$4
l#E8*#Ej&U6mSU56+58+%d@ah25RN3EBCP4Qb[@pP6SGb*&"16MmiUekA'Er2@i`
mbec0MH!5m@jKLp,(QIDcA+G@[+&rqEkDBX19JP!RmI9dp!8'&3bEJ%RT3i3LhFf
URNLHBNLB4dE)lK0$X&1+6,@Rmh,qM5a1*k25iMTKP2Tfij'8dpaq#afhQIBq%4B
)-cpT@*cIb['pI*HZ%m)qqXL3!$),akh5mj,m30JZfRf4%-#,"%[Cp#90f0XmH,F
P+2&Sh`2b%p5DjfE!GS[KlXdY[+YfQ*TdD650fC50G0VL@%Eb2K,T@I,2J%8rm%&
RdPiiELID'kQh3M2m6`q1mQTN*%Rje"k06YMj&$E&FQ[,l(X*SV91qlL3!1"Fl(c
*IYpI[%Z5k3Y%9L40%NjJYdiQDBYiL9`B9Tac#BXFj-eP!+U[l(YXHY6)Dk4mmd)
%e'jBZGkLi-*Cmh5'rZ'9f1qVVPi[b#!a6MLS5h3D%(J82@C#%3+aU$T*rAbSpab
r1(VZe)dVb@5cCGkca!)r4l"3rUi-cD94q%T1kMG3#Uk-F3k--cS)NH)I0CM"H06
'8V,B%3qe![!-rYRIR##9V`q*Kf',Q)Uh60mN(0#bmMYFNS$ej0C2dJ`'H2KqrNS
V)ahJ#[FfkY!9MHFUN!$5b-J`-0,5b-J`-0,5b-J`G$PjCJY1k6U'KbYPP$[e6`p
6a9Zih2C"$58IpPc[G9-*%XF-KDd"q$mB,$X(YR$`YTLc[D-jE`9A#(+&rLpq[D8
GhiE[H`K4UCjphVe9lA6iGa)e+ep(F%'rcr1aPpDG(QfH+6c$6QjJ@`("Y5-4hK1
C@(dP[YG1"jlXC4#IL4hpFf55)TKqH9I6e)"AeP*SjVc*HqJaMYa`AqH8$&N6VYK
,[4fTi*9IRT!!MelmZG!DCf#*pNZrhQ$pCF&F48SSH5cf*,CRN!"KYY@qdBrpr-`
TXKUfFQ(8Z9@AJHCc6H1!0@&""%T`$2PZ2(rkE'VFDb4JUBLk&"BbZGNjT4dZ@cJ
%J@&RLh(Mi1GKaZD&J6`3#1AZZBb1f@l!)2QrVN1HXUl9SIPIHmk'KNaacEH$BVk
G!!E+#&kJS%c3ILlA@Y12*"GN6dqTRGLk31D,bIEAJ,82k)!*L96CBF'*qeh0!cl
RpB"j`kRdSSC-pZ%)KM99J8q"Jq*Y!j3'0e)G'@1*"QXDPFle3Kf'P(*RdiA$6b1
G(YplllG)-j&a[I!0`a2p+5hYE9$@%eP39ZQFqA9Zb36RMb[$l8RMCfqSCq2bL&D
jG#bS)Id6E)GFQiSLL$Zb#SC5kr@KpIQb1,+)eb)$k$IYcjZN!baVrASB3*+M-I,
E4Gp2$md6U+'!)dJHkq&&4$J!$e-(hfcE`"IZZUj1LC34NXpbVZK+P9`HF,2a2mI
MPYG-DJNKH#Ej0FH3!&-M-+$eVX1CQ)N+fK*XPT83#BIfa0kJ)+dAcZEH2BZr0BR
&'hUdb4F[T))!*MkD)q2&KVN'hSA)[1D!P2hRIcZ!"+*M9J60$YrZQ4qeL'r5C`U
S"XZB21))Z(P!blj93%X3TDB(l*S(!3IhbUib4&"-XCF)8+50ClpING*86X#CVme
&Tj9BV"pLKUABN!!0FD1*EHd#Nj&EC*X*`[QH1D-[(D2Fq!G[r6K#mU(ZKbhe4Sl
iMT(3"UF0DUVB'YTHM#`I$E,'EZ)%PXcJkp"UH[$diCLBPq)cq0VcpLb*#38@(m0
'adj+34h0*i)S4bi4P+b@Q'"![VZd,5FJ!9I9-ErpS+U$2$j@+,B"h*0&QYqAJ8R
AHL4&Lf'heJXSmYl@%Z'+N4Hl&8Ve`r*CbI*K*R5ErFL!dpbe"499BPai$eSTl5K
GV6*a9S3iAYP##BX$,9CH)U#Y[m1f+8f#Ri8M8G$ME3Nbl`h$B5-YlZh-!k'3!*K
-C1XN%dX11qFEYkP1!M$Z(c9c8I,+ID3ZhU(B%N`ClZ#L8jLDa,rm&GaEEYQ,KkP
e!A`b!56I)TE+Fa($-#UMrCF(*"I&ma,TDBkkbEFI!('JpMpK[59+V89"6C!!Sqc
helEY,E""8KZh#fd941("J3Uf5[f`ZM#XY'bq#Ak8T3b9B4hR,-@$!9Mb-QB,G44
haU(,-SaQdX'ah3R!0RZ*C0p@DIb$8cI[3PCJ#5jm&a[(bkE8cA!kl6%dBq5SJje
RrQ)h+i&42kEUll#XXUHkKCK+pPAX24cY#kJi@(c*8%dr,M$m(U&TleRmlQAUHPj
ShJ&R#MBAC&aA&eJj*0!D"j6j-c8BP-,ZP8&54MAif"EiF,9Q4[N(I3!`pe8emaK
V'5)+8[bAU9L'cR$*8)I@mAJQE"($lp[l&dKiFqH6["`1C9QVrjr#1*AZB#PriQ"
9EciLDk)KpH-9IL,GA0T)X*IL-K$,rdrb0`rIH4b%@(*8jpV2[JiEd+,EJUcIM[`
jl'Z*FYP9DkS`BJFQ4&rLFP!FTG(4fm#j*@PXNYp5p,%-"SIbhNQV5rAB23BQ#ba
FS#I"1qdQHRGBKL@3!&KhG#p,%R+(K5G+C-b`#Xa4)&EPp0@FRQ4(LVTiS9@+-QT
4DqfSG*PUa-UX*fEQU8%REd[`XrDD2LDKmlS0DFI3BNAjHPf@8Qil0Hdlq[Fc"JR
*G*@dJ0AkYC3-TI&JIT1a9KP4l(&D#FlhL$hiCE8K2%*3V&aeGr,Mi1krUd51*[I
68kp[(@X4AB+r"I%ZN!"%j+h-D8ZhXK&09fTi`lUK"Gbc!Ke'dH`0f"jMBTVCdi8
E8*URQGr!GGF`KhK5mp-fY!MTiJjZD+Ff$RL8Ge8UpimjU+eIA0SjmC5`l!#EMkQ
[ThdiUKh9r)aR1Z'kf$*&R1YD8'p3L*L!Ce5Emlh#'m3#JP[hXfPK6V9,)@IQUe(
3Td4QjN'i5fpXDE@f5hGG@E3+4Q1X4E*&VrJ@3FHBU),(60ZdVa5R[9#XH'%#l$)
8Z!%"bbFmp8cd%kEhrU,#c`E-ri1RYK3MrJGY+JHK0!TrLqCCZ1KIB3D8QaEXR2)
YN!"&J%Yi41"a68aJYKJ"jJCLDlL*PXi+8AZEc(P)8L+9Y!j41',ShZa6Ba$f#e'
a@k!TAm&d0,N1F#A!9rV[Pm!P@D)lRrf,iV6HR2YBJU+[E-iTqr(mp3X"#)4Y"Bf
DfDQVABh1k[Xa(Tl4l3+G(l#lKX'DfK%5D$T[c"pX(kEJ2"K3kVC!6+-&ChMT-V0
#RGpN0m(Vqk,Rl4ZDfNUHRZ8ZCYHf'TI0+"dNcPNVI+#MaE+d!F[ih9aH*KYC2Ec
(8a%N$)9C5lm+phM*lT&%dC`L6-LqUCVdDl,Km"p@aQc8G6SpP@rVlJZ6CH+B&0K
5r1X44qSc+@%rMe!@-`hl&N16Zl6Gq38VM*X1#RL-DmDqrkkA+f2L*R-Y6[4)F`,
*E3Q$b90[!f5T##JFHHHGbrN9D&cMPFYm-#Q,NjZG,DS2F2`U2c"`G!&qY0J$ZA3
@b6DIEG5%pQIjN!$bq"YJH*U49LA(``(BC'Ue)65Lc6!fGp[0Z!"PlX[4cDVIlYY
cQ#!dSD!24V9fekYqGSY!MJ@'&@,[eK1(Ri9&c+rBqeBb16V)8SS#E%3emYSD*el
3j%4a85hrBClI[al1&#C2*B,aDBf%I+bcf8Mk%H6+6)kC84hPJbVdHS#FFLRq8EF
%blLFJ*B"!GGU)K$rRDFeQBp-AqG3U*A1-8V@r@8+6GF`2!ZqN9rPbHQPL"HSkMJ
8MmDTNaAh9VVY&l1M04-V8HLeRG6#8"p%+6(K0BLFPlppJMq6,fbhJ%UBmI9@I%L
'aUQ`+9bAr[2J(lGiqTS5G4qpPJ(XeSICjj8U'2!KcmSJ5fZ)heY3qf[V440-X+G
KSiaF6p%5)"#F(d[rd6PN2N%SmM!2C#UP"iITJ9`"#B`TNfbm6c#"I@Pp8kYdXj%
DNr*'#dB)SYf'Y@ZhT,c2RYLid#C@c'P2(`3%Nl'+!2DN`FLVDC!!1`+,f(k14@I
j*NLCBk*P8dr9D6NA9L`H+Z*RV-QS,cHEklND&h&a+1BS`fHSEaU`d%S4i&PFCk3
jY,31*aXfmHSiEH8F$a@'L!%5&QbUC$aGfdSX(AQANMJ988QJ-K5I`-S[26I"Uq4
F0-'VYMc5AbZldUk3!2i23iqT&GI+)eL626213Y5!a598C3jI-0Uc`V[48rBi2@i
2IpYdP'e+XXYd4R@`rYi!5CHHSrF@)!5`RIm+dpk%MZ*bB9BQ%DFb09DVP*jGDX6
aiMQj[jXKURST)%@lDGAVVVRqF"9$cfE&AZj0H0ARKCec#efR@hES)D3rdrN$#Fd
JddaRKZNZcqS4KjEci%#-lkji`rf0'U4D`%Z2rbaRc*rr[8ar)[5GUfB,J($lqYP
mZECQ1C)q0E+6VNCjMFh`K`jV2@Ac"mlj*i%KI4Nh"*4+M,4XS0IUKI[k`2F0JGI
+bX2%NJUDpk%XIcaJ#'1hK9@M6FKCZc@pD9CMNY9eD((N2C+E6%e!&'JK%C-VLLe
TE,$Y[QL1ZI[idN(%[aCIIZiCNZaXh)j(eR,Kp85TXSk'i!mNJ,-3QFfd#h$ZK5T
&GGp)P9p4$mIkX%KeAm&,+JY9pYfBdVUpk@$SU+NaAB1aiX$`a+9GmrN312#G3(j
"jHKK&ErDj$+qDDl3KE0Rh1S6&bc5E844P8&f"HFlXSer5U)G,$RY1D1[LTm&9AZ
hZ!%4GINhMBTha+2U1CY8*6!4$@*'T`3A2AeGR$@AL0P2D%[!YY3e4Ub`NehmREV
F)RKhhG*F(K'NRKGXjNEB%6%H%GER!L+[jp3C252"2+J(l#9&R'F@E9`Ep08%63k
25Cr$!)D,*5hf+"YC0fB,IXk-#,[Vh-(#pX8i5G9[AP(j$5[K!pMQi!!N+kmQ%)V
JHZ`Hr0%l(+9CDKrZdbU3!*UTZ(KRK$KC*E8&mki%RqEj@3!bTVDe%KCCdM*!k4m
0,lJeGe'1!e2TjF[lq5!dX2)bMGGDHZ)bNM(2Zip5ri&@-01Jf`aG889jZqG6iDF
BL01r@AjFm[hRLAY-jPp1SVd)P4,qq-iidb6IQSeCm2[0L8d[2r3r@FTYXbCra%j
XTcD(deQDrN5#if8M0XST#[FPG!h4JU#KN`G+5(j2YAUV1XcUZ'Bi`e@!Smri)KB
B'XQk`D&1am1G+a5I!)kLTp2&LIcHXLF[["GN1GlA"4!N2GS8S9AN1jf,'9206fL
dS+EFHDNMd&)kk$QSIQ"Xr&P)iEpNb11`ImMQJ&8L39r6!mj$FKV-ArE8HD,$-Kq
-""dR3('CcpHUBS6$[Ue'Jk,jcZf91@V3K9ET+U,0h&q$[),""$Q)Qff4SaHGmr$
0,+`6!XK4R`hQI2e6YiLDj`-2K)NGlViQA6L0)hc6EdJi0-5a8c3VCNh3k"8mHaH
("iI+A*Ha0`S@+i9-#-2b`MT+%Gk+N@eL[4M,qKh-F&Pl#FXLPpp&"S$QLeCZm-I
C30Cj'-Yi*#h[`pU4%f2X"%680@ci#ja48!J3qL@mb0qGPr6)Im`)S4-IrJ,-Fr)
Q0mi9KIjE+DS)9Y3!cE,`2@1cQE(394`CT$EUHfq(H9j6(S',B2aK+-m5PdGNY*N
P3`m6QPN#(h1L1,MY0JYVb!&R-0QR-3JdM(f8he(&$`UZJLTKTH1"b4pLlDC(,5c
`2)5f'(lBDEXe023U#h9pq'+qK#U%llK35YGfQSDJQjK5FlphS[Ai"6B$%)5VIFB
&I$JrTVhRlLZ5F6k3!0VkUFX-d'AQN!#K[XQ%*8i12(822!jSA&0!G2Cki-q(HK@
N2Fk+'S)LpPCma+1FVqqVB*!!+J'MK'`ZXm@Ime3G(T9P!Y#+ldKKpjSfeeSIrq#
'%Va@IFh,Qe886XF`B*bFB'jlPX(jZ9'm)UqLi6lhHA@eEmTAY63-LDl0JZ)2ba8
epb94h++R-"(!1&acTcbmSU4MIrJqV'A[+0+Y2YDI2R-AQ@J-j#!TNAPUp[%!0Y3
b`4eB[VjL-NLQQG4)[Q$-pFh0YAdXYM&-'J83N!!arAFR["HRV'rQeYZIYE`!QA"
H!J*H0brL@'[R"`GJrlkeH@l-%&LjAQ(b3)L1EQTej,[NhI)$b(-RbD3h#E1e+LE
YL&([,G4m4-`[Pi`NLk#3!2Vb!Gr)8+bFe0q`IRZ)FM0P40ae2bUY!HJ5b8BJDRr
Bj#$Y3TRqM2'N)hbdbUa-9B@TGYBcH-6QAG%Hl`2q`Zh4S`kPb!AXe"a"j([YZfS
KdDAZDP4JK0Nlb[LRfqj93-9@A$YY$QPS!6eCD&b4*)bG8%qG3D[l2LU6IdD09@(
T+ZB6CbpN``GSkF2FA$R[#+hFDN,QIrbk2SEFJS[a&@a%f!4E*Q6B68qm43E%Z+d
9"KZ1C(0E%4KM`p9qBXNDEF4%PRF%5YaebIa!9Ja!mI*$F3X4C%RLRX,08C@Y&Qf
Ur!MaG+drG*Rlqj99,+bXMr0*c6FFNQ2j"5+6P`J+ITIHLqE!'HX5h@DXZrA+C&k
L0B%#lF1fpl%hip%)5SNC@XcP$rAb+4qaHeh0B(iQ%4q5p(ZC@fkGb[A8U!9qD"8
`Ee#d[*!!&KHdp'&Cf)H*(J-dh"1K6P#D#,'f,*eckaLjc4Y#,i+HJT%ad8+c*1F
21cU2M6lXMbFjKdkX4rYqXi8R5@p2&))P,5p'i(JhH6dT45+NBR3p[Kd-r-"DS$b
XN!$-J2DS&Q",ejap*qCjB"D"YK5`Gk+,E6T@m&lahZV$b"6M4F-rR)'$'E*i$Z9
S[3bL,S2q$9&0[%Yd)YYX"Qc"I0@[mmjjCZ8h#S*DdBTb0jf-E,[l95JqL!Edf8A
"GDLHfJIf*(hmNqLF'Y'klXL(3l#PTIc9KTqM05-c!Nc5qNc*--#4$f#%'db+ZpP
ZBANLh,DJrYJ*$b!-A5II)lq'5"eqk[S2()k'D[8@TJ3$%QGXB%aSm8)TM$)&-Z3
2P*6r6Pqf&Y$qL+3%35LGr5X5%LQ'c$$6f"1T"@NiV2E$CrC@`@QR#Lfe(cYJ9T,
lam`Z)FA6lHBT1EQ5!eSjKF#0&Bd-b*Z[I@kBUel)K6*A,d$Fa,"KGL""-M61JV)
%HHZEB-IM(p(32,DkbT,HpdG9G)K94Y$3mEVD5Gi"[HA8D#Nq6#XT#RkC*$iHLap
qRY,1&NrRRjaIXmjAVq@*UFV%D,mPF`&b@L5'J"@5,B&q6RDm'c%Z'S8Hdd[I)*!
!`Bj4@-QmGk+dmHc3G"KE5!bB%Za-@b+,'KD++ajh`)!Y`$@H4aM(1q*EDBZ!(r9
3D!J)-Q(`@V+!IiIKpP&%8,`HkMXd`aL`m'82c%fHS-4Y,3%0M1JY**KR`'UrH[$
eMKP2Rpm1R1Z-M0$X`A4(cjNma+INVX'YGC*)$kGckYBa!f(r'NM04GQcM"6C`D@
Qb,Ni3S'cf8($l3*3$8Flq9P"feRFK&h'mI'qGY5eRX4+D8BdDJJJ[C,[e!U"N!"
,3Cqb(9@$U%[NhQSC)B[$M"1!3E%ID)QjabXlGH"IlIEdPRml#lpVAG3e[Ic*bVD
V#&DXE[epVk3Yb5JZV2b#&BKMi-K&P2,H2U`51@bpdG+J,Jf5@8r`hfa1hjA`*rl
5"MI%+Y2-C%MaHUY*iQPMK65,k+ZpeeZ0BLXINj%3T'fdcE+pKLQ&1%P1-"(q@I0
lK&H%FZ*-Sm#`Dm[#V(2F0U)LPNJ%$a4m"5$Ui[ipF0YCa@IIDi)lCp[-)b1)XbJ
3Qk)-9fA"5YFKIkp![lCI(b#3!)YHd@HI$A([j@fK#QK6A-MT,laac"Qd&V4'XfU
,Ne%hqh9QA3[2H6"mSr%m9TN`"Ma&)S)c$!@-%+a$iJkH+i%)SdLrkm-%"J3R828
Glb9J8Uh*e(#alAiMqm"EA6UE21KTY3%L3PD[bXN%%Z'e3XX2q$K,$ITI9A!hY3)
jDY[mTq-pTcUfDHqZq)E-QH1el(CrN`*D!fGp@IZ8Em2l%dK"J#`i[pZB6hX$[!4
lUEeL,R-iU%H`cN$4(0TcK+AlM4mf$-AJ[9@eX0R&EipjKA"(4`A&ETI4RXFAQ(&
h'1FHL6XU48q2*lC0CY2EUDN5"eNHHN53!)*PSMq[%iH(U81RNmSM0)-hH&9Am!!
E&(*kA-K'360`26$EIAE,!(eZj5VM&#JflbI*$cSa[kq!YkpVQ"V`F%kFTcPKR'a
K9(9+*Y5`$p,%#BiIdAAJke8S!)LAhYS-k"R8mmDm(r(C*6)Yb$2&00LGIK@V#'I
4F-99l'hTq11'!1Y+hZL1deV4Z*09fZ&+UL*LeCU9'1Y*pGq(AHU@YQk)UqL,53M
`T#*%c%&BAD#NZp$G3chdLCb-5lfP1S-B!I%-Cj`J!UfYpr@IrSkjL',l9cRr%"P
*beK*-RN0Z9NeQK#DqeB3(X)qU-pGNRJ6%MjV"D@S!Np)*AaQ2h`Z)0PA`6ZhVmR
kk3&LLbFa&b8M5B,9E&EQc$fFB`Nf(8P$2mYL,A8'q(AXVT6mmfpUjj%V5MH&b0l
HDKRZjYT4p@0FqXQ0`BjB$"kd'`h"q*2LC`dQhGQkX+XV+`9Pk'lk#Ir0qF[m*X*
l%Qp0YGi(S9!CMaM)+,5a$*fC)Y0e)QFb8ch4+K[j$N`+l$5LYKqqU*S+P8+))FZ
rR"VRJr'1#H[*iiNLNcAm0I99J'`VbJ4Y+"SU"bqYDS'NJEGPp'"N9BhjbM8%U)+
li[kp#1JIrF#Y!b3R*pqN4jeY6LDNa9CL'H,''#HU1'SC(NAGk&KDZ6M,9QGa6E-
"[%%6FaYYYDI#E620hfZXN!!3[cq5C"Y@B+N1`LmD!B@#*kGX'c9%NZ[2EpcEMaE
b@rHZ%FSc*Ma5#Sc[cimH@1*KGS48`XN4LBJ'J[+lXD,9,2qIe`c0e&bAk$KUDHe
%i)0M%%N[(l860[FjfVlYd$[*Li-j4b&A+9X8E1KEkY&EZAHT')("d2GMBX&58##
d%B`Vp3bpNL+a412-PVPH8hep-QDAi*+fMMPV+rJA3I@L#KbhNR8P6KM1Ri8EA3F
k19KG[Cr%eH"SNMU+6-@*T#C59T%5pMKK`"F&8N32[VjM)V1Tjr0Kh&iK6GSK+rl
CT,&QHGM`qUIep'Y4&$P4`Z"E3B0892kG'RQ`'RQ6ccdT"9+6hB5JpHLcb`0KBFI
P*')q+NL+,$%ii0LL,`JaYF3Tq5fNqQABjbL-j1T+NFT3Y6JV$AYC!VZN4"AfNUC
UVdU+SE$262al(1BjcM--S5%!4"h(VG6R[(*b*)#Q0,#L,XMH#USm$IBU$#m1B'K
-XE-rX9F-Ja6+Qdem%BQL4+%PB9@3!$XEIF`!$eGb-HFeJ*8PK,I$B-#GYDVNZVP
"0C@AJ$+5I"MB[a%GRZkFf6NQdr%m2B"'pZFrYRa*`kE$,Ke`Q8&K*iNP-a&3&lP
'jaS(2PBjR#4+25`ErUA2lh"XF5J",D6c(&QC-JYFRAT1+G1SQ9mmfKjA&VQ&8f!
$'@iNM[R*@5@lCShL!mf8H`4EPrDrAK3[1eVh-8ilBbkmcX$!XG!L6L"b2BFP5R,
$(2R4Kc9"KA[QB-P,*S[99j!!Ee%AA*k3!$H@03HG-jTPhh*FQIqQ@I!6('2qY,C
qV"3CD"B%!"F5FQpX*8h(d@Ci8"A0C`Pl*VbHBRciLKELS4IHjF@F#-`29Vh-HcZ
Vq2$Q@8f8LRhUEH8)02&rl&F#K#(j[pT[h(lh#eYLbiY(NXXI#Z&c-1[UdF-Y4Q9
%!EZ!-UL6K#+4'I0C8EKmr%52)"0mp1@AVMFiSh!'T)YpchYCNTbMmBSLF&8+#Jr
mF-qUjNQ,hEPfhhPD3lcX8kF#UFapllMeXjG4cD+ke3AeApq#epG5A3BUXfiQ#ee
(a@qZNCLe!AcmJIYS@%a)2R$(0Z%0hXl"ZbblhiYpAE8*di0SCcF%+R+q98pq-`!
AKeQMVMK(#jN4kEQDJf,4B1MPKeqdmYGN9MdP3YSbPZYabhRrF,k'2plLBJka'f,
lTD'L5IQ"N@6XTV(&SLZcZ(BH)Xc'd4039LC#D$*N&HK2camB,l8NBbpi@C4rk%G
D"YF)PVCVSXk[)X)ZHIHN#MC%C8I,)A)[&UHTrN3DAV0"`%mKIhM4Ud#DlFlcElm
"kClQ1SH*P#r8V`A@CM&8[Z'[M+H$Mc!Kr`Yh%HdHT!hT4(q4fqZc#dSZLKM+q4P
Sc%'G39K!i4lHRkdpG[qC"QB@Nl%Theh)p%R,Pe4c`GKpYFbLhXhj[QD[e4qmr%[
m'TK%MT2T%QqpR(96-P$J(NJe94Kj1`JpXji4kaZV3e!JP6*U'fpM!(D5RA%52p8
%N`jBZaTQYYM*hklaQPS,9![5*9-fFB-X)Iq#@K*qZ*lYCKhYdSGZcPKh2P"6#`h
S9-UADYL+YU#C$Y#-iK!BDhNL4@CbA"'ES@[!42NbH5+'Q$&B0V[6'[e!'-VFMSL
QGXr3!TFT2idaXaaq&lZNZ9"&-NcH-`S6mh6CQJK[*mbXX[+NX(1,2'@1FcP(2Ee
QV1LQ+d5$j4(V@Zh(b!hX44ZHlGie'0TQmV`F@9@(9A&aJRlj1HVKLmr(&91brY2
')Sk6,jFLcUdj2GHU[9k2Xr%LeZMQEeNZ$Pp,Z5dXA`"VCfmZq3kmC$hUD0F$CH)
[S8q6mI5lJ$IS9#@(fVllE)',a@1b%r+0'mifC5%4G$AaD-@dZm"fmr[C"c8$*M8
dc"cYqqp5#&@)QC3f2a+P!#b"@++VP1SJKDJNb$Q![9&,DR6F[80EYCmAPU0fa[f
C-,[%A"m"[9k-qA*S!PlI$(eB)6BFTfXjqR'-rI$ANqX1R3Uik$01%VXGTdH)ril
8UKC(d%*JEUe"[l-cJ0#l%YTJ5IH!P42EHhb[(idd*QiR6[%d+`mIQKe#NZ"-bGD
"&iq`664(Va3R)T!!8%Pa@+d%Zml0"*cFH%$E6`YkI0E+BUET2)E5ifJ5aGVTZU`
cbi4UZrV$hZJ,)VmDS%de#(`@APrLb"-i1`5*4,!TKRpiUfG86N#Q@Nm(89FL-3B
"mDIM"PhKMar*AI6K4$Mh2CFFb-IilHF[2@#%&0ik)I2meBI5`@mRrT(T&kUVd*A
fIT6[8*BQh[I%iE@YiA5jkFi%eM6ZG3)1Zp(Y%8j"NMRdV-P4aDKpH5#BI4K3%dH
%Qb'CIaYi2LT6ADGI9N3c*9`lpYC5HMbdQK(*3"&8[ICQj%QR-jX*0U"e9Aa$YpZ
'hJR9m9lT![-Nrj@2!L8$r$1k,"a$MTrTAJ&jT,&!3@c-r'2NBeE9S%I*GELrRhD
f(hKrh6M3fRYCl"6rd92apb5m38"6VmJE1LH$lmMcA-*C5,aCYIl3kq8ldXdTADL
ll*bhF!FbiT9![*B2ba"4`,QIQ@hmV"RbTLkr"Q$[VKfJ30L&HGAKRbCP8KV1H2+
ZXHTYB2l(qVA"2mGCmhJ%295X[b(K,8213MU@4RXjX&0CA[6Y,H$H!Vp85"*MREa
JZEaXHk4HGDRMMq%!e%h,MjiYBQ8KS4[N['fQ(@DK[Z&,Am!U[$+4i#1q4Tdh&lm
RXMNTa,A9aQ0Cl1"Lq)#hFA('0[(`ba9jIe2Z!*09lSC*S8K`fj*(b&%iDqdS@'T
4b$r"&k1XCT!!,Y8-KC+mrUQQ6%CajDA%S@DRM8@qmBIN)D)+C@F8"0TI[f&`2BC
k0,Y#4%)X088CI$+`jeqiR21NRq12!qjbL4rSb9i6T"RF@%p2Cbmcjq&B`imTkQ,
N![4i0Xm!iE$K5kI&mp#8leIVBMmpVM6Y35h4FHmf8kX[d1DpJdaPRT4Kj8eNr`$
jq41(bUfAY686JaAe[@GQIk(DPfLa,E0DIcMqfm[28a5+S*1Mr6Xcd0Y*G1eI'06
B@IcC46FN-3$8N!$1`hmEEK@fNHMMj!c,aV#ZF1X+Y$a0%`2cERa2mT24(qa0e92
HN5h+6[4R#D,d'TXCQbr5-pNJ0IJ['%&5@"dk8@i&P"G2N!!kQli6X$'NmGTAc4r
r"Q+H4SBG*VrK(&PT`N+,%RH$9'B[l&`%lhFAfFk'2M)i$0q8+ZT$%(HM9`0829V
X4hE(48e@6i+4ic!dkT[4JLN$m4KPB5&j@6'lV2'&l""NmLRHBX-IEaaR)9fhCCk
c8eb)e(V9kqVmJAlRRXirrD&lpjIp9`h'LMiKq%cm2F%(RIb1+e`!45iMmAE[&`U
IFSB)lM-lA+A+`fQeL,VTJ)Pcdk2UeNpBHY+$fSHG%fpc+*YE(&8,N!#YP#r&1,1
Sf!f&)eh"+!LPQlk@pRH3!(-V%dcJZGXb&2DEq1CC@M!pJb#L($9@4Mh3@'hck#$
pEeH*bqak(+@*A+fr@H,c'hrC*kk#(VrA,3e#TZ,T8(HY"J8e3EiJ[#AZVTep+V)
4A*BTlEcb[ajY+&IV#caPrraFPI1k)Lh02SFNfT5'E$b-L$5fe"DDL$(5R'fKcZV
0+(6+FhKAF)CHrLkbKbBi'6%GF#3%8aF6rG13!$mm@qPMNc3(36'PkAFBGmk6Q5#
20G+lC"LaPa82SClZ,iZ4liqreGAkcG%Q2Y'kBqM`Fa$U)L$FlGeI5B-[,k5E%el
32jHRrc"KL#Jc3i[)CTQARN*AVm6R!Cfi@CXMi1UcI3!eBqThQ*E8aQlrCjLL[19
(LmiUB((4eEY4V`!4l%4I(P46irG$B*a,B4G'bQPNEpcm6*-8c69S8S[JIm5N@4P
Ef9mZ!'H[$U4AGl*k$EMTEpFqPMXLkFP"&Jc(dEpVeDM%(L')fGA+i`Fp#Ii+M%B
RepL$fAM%4rqY95G14%ViU4&q`&RPpq@AU@,Elc6&KHjjc4iciVk(MkMqRk%mh#*
bPmdJMKeDL)p-fI$r"4P#B8YfFm$*$k"YK&H8-h"2RCH)4FDdAYf"9kkbVh,1V5)
-FEGVTFU#Ej,bN!#&@jZ+AABM$*A`qLRPcL5dMR[K!Qm2M4a(ErKh[EPbBUm0cX9
H`+rdS$UDK'D$$4,jM19BBJMQ)6PKjE%J&5HLTXX)LQTXP96iE)C4eiHS9Y0,Iie
BKCLSl3m*Le#&%NJm&8qN+CFUqZh"YM!V2@+hqTaGM$+&E`GYccLZ4&RGLP[k35j
f@SCd4V(-,Rp'0r,P%PXPYiBG(X0L6riJNL5@,@RG)S2$hrjHM'K[K$5lB+80D4N
@K%J!`X-X+Al(alJ+E-*AKhDG"r)IV'G9![r"1`$&bebUMCGjElH$ir$rVJBr1D(
2"l*)-9I*-,Qcl4'p`H3ejB8228PKi6qFI8(!@T2q+jb*McUMGaHQI[mm-#2@,UA
kHLF21ia4Hd*%m'J2"Aq4pIT`-UMU(FP[(E*BZ@#EUipXM`mA4q@pqqVA'BbkB5e
K$MGe,(m,3(D#&f58UY2b#H!RmU%'aAEB+NDT"CJ*ZA)XK%lhpJqh3Z+E"(e1Ecd
B#NGqG9C!mQcXUHC[&kq`2brGdJASGK()#)B)'T+@#V6`09I85EVH0HeB`aKBhJ!
84iKp"mja@rUBGdY`6S5D#+pMPUI9qPeYXKI[H68A#I0B,N"Nc2F@A,r%EG)$0,G
5bc3K%)G@K!-aTJ4dk+PZjim[kmccKfCm'Ql["&F$G%A29HiKk16U!5J23@8GMde
iKE1r65VK*HKJ5EJ3R0[`5955@b((+`6F2&Ep*d+JQ132S*QQAd$-,j%Pk!Yja3j
$8$6&3$(r[XRSkk'm1"6i&(i2[k2#GP$l'+SC@keJS)''lIpDC2%#EZdbacGB9F'
,h[qC!'j#H*XiQ&DeYKk#e8F"3'ZqhqS3AN(,%6e!6b,+-CdK-`G*h1dF`K+@q!L
NjeJl@ZAN65+l,NZ)fIA9LD58-e+YC@&D!IZ3!$F2iCF66N,@Y#+lC-QPTS#5FJp
XV+5PQ)P!APjMF26,RY#TCYG6Q4bcK0&YT-6&lcCNdbEK1Mh11iX%Cj'K9Q4HBUV
MA6N*XRpDa#@%MJ`Ir%TI*4S"L#QGSc`&GSIa[&M)fm5%Y1AZ(`DGmU6C)T!!8f`
-eTiL!*TdZ0lB9Z@1bZ&H)+pTNJ+Hf,rZ%pL+%B3B')G2*(ji'R$c(bDf*)$GB4N
Z3VhK-Pb9&DQ2PMZjKEaSA(kK2Se*m-h`KV@K@ji&Xi"Cd$q#j6j5HM6X3'*bX9q
'9m!25NjAl8+IEEH(%*JUUMKFQjZ84LQ#8+08IYXU#VXKIZH[miYJp4T*K@jNh[P
Y35SdcN(Tk,j(e3[ca$FqmCC1'pRSQ`1S[i69hQFYGiGYeh221AZ%d[8PEE+XD$%
XPE2+JQX'-BpN+FEYe2RG0iMp&aqmJ3"2!8P4U%BpCT94dCB!dLC`$,lR9@bb91e
e`c)**2`j@+58-B$")"0$"E+Te`Gmlq!)M@I,DR)KQ+k)iS,(1,N@3h$j$UNM6L4
33Ql@Ni1lJmKj+GjXrLB,T+V"iIeA1%X-5)b'j9+&-*p"P0@pKZ4UdCP3J*fEM81
8D%cFm*MYh)VmFD4MESC+GN4c%(PMf-e`"!rk%*Kb2%ZqP'kXMp9T4$6#%4RaA*!
!1Fh803CCJJ9jc,LC`J)CQ-l5Qb4f[qALQhKQ[bVU314lPAMJ&PGdT2@D5*@qK5%
++M`DYC6UDX[,0))0j")8BXJ!Ti9qjjB8,PEP+I[Aq8@,aD,D6XhCb%$p0G[(Y*k
NA4E4#ikfb&'`,'JD'+Q54l0bh4UUCNj%CX9Mj)l8kX,1e%ZS8i(PV3$R8Ghce3A
i2FDC#frM8iAB0RJqi(0ERMq8m+V9+1BL6AIHmhVNL!96j&FHrd#$iP6[J#9A(hG
0J1mlc)i,53YP5QMbjX(F!h++8rqb[L`TQL'&6c3(A+eZ*rXTN!!q9bG-%3M[1lq
R@Ck6)N#-6qME)Qadq2kPC1jIkd`PQ*lSY*LT*UeRYT322Qke#lP8B2jV$pek"ad
hHZ,dY6DkZ)IBUb4m'KcZIY4M"KJT&13ph4L1LqS#6Q[f2DcF9RJ%@NMY3+h"%[h
MV0&B*!&VJ%N$Z0LXRZ`K'GKMP00Va#`b#b1mB[ZfjjB@U1Q'C4i0Zh%6JYl!Irl
"G%)%m@em23E5iA+i4X2i8+DlVV(VMI4p[2Aq1RH+p"r6L*Pj(6U3!%!1@69UL!3
2`!q5LM8%&feZpf"pFpTlI#%G6PJiVYG*ZZ1fh'49f2dC'(Y[f6a$+4H$'SrG8rb
&X&XD4(Vk0r330QPj*AE!i4Fa!$$RkI2k-RidQ0f9''5f"cJkpj4I*m'd#N@'Qcb
&49PX&Bk0L`L66&rkpr"90bMpdpY4d'Sf9el%@r-mDYH&e9-)X4ppe#"SEhZ(6qd
eCMa'0Badl8fZhc56k9eKR6cqT@HmEVKKXlTN8,jL#[AcqFV92a5e`*)KQ[rH[Q6
Rpkp%PqBIZSdN2rIRJm),`hZI"TLamDD$5Sk-GD(B*QmUGZdjb"h'6[@qXDAkCcA
2XP-m-p@2mSZ)'3NKd[YAZkEX(6)XiQb)lLSSbijH$8V)#S[`#ehR)*NYRHM6lYb
LZZ'rpj8bJk(U+T`kmMTlA2$*DGE,VVK50N"EhNDq`ZT@M*'Gei$K6NbMjhN9V1b
d$k6h1a&YbqQ`0H+)3ZMS#,DEql,rR%CcErd021qc+Yli@mMThU@!crl9A&ReQSH
rQCV5ZI9HCfGS((lj-'Y%L&*ra'63M@,L'3j3fQMZI'SMKVLGP,GRNlqfQZLiZEp
l"4UaDa-Y`m#C&d2cHpB`4T63N!#e%646T(U6(EJ[d"`X3'&BSJ(*UM-8,2,ei4!
S2-ZX@,1RMcLL5D2lR9IGmJ8aMFPG((Be8*m[jEMG2HC5A"(KF1!6l8ZhDqip#NB
fj46Pk51eep!VITi+IC2UELZ2C6YT%X$5(0ZQ2+k`[AY)#DKCE2$@)i9U#YFcD41
`%UL6MFLB0TdUI92eeCe$8*)B0fV)1Y+X3c8k$)3rq8(@pBX)94[IX)Ha*i*VK*Z
Hif*3'92+cq@(eQaY)B$lDEC4E06HklDV!M$X&5j3S+r&UdL#K(!5Q2(Ekk29&Gj
afQH%fieQUI"m[!DTbb[cX1r%,*Q9Um*NHr'3!(f!("`Abp@LYlKUFjF`6RipU'%
TI@D2&)3r,QNDC4T25iSqVZdSLSh!F45Plq4L'Ir$aPk)f3eS1JHH$%Ifq@j4P3-
qH3FQS,1LC%J'e+5HeTTX[d)SP4!iG#9lBXDhY!i%'*`l[54-"QVh8UV56TmP0c@
lDJ[T!ZdQrKHpj$QQ`P64pZ%E6$G!A8ljQTFdQTpUj8PeEFS,M"0eIF9%c$RbVCI
YR`DFj)HRMQ(U(NLU5#'TE8iQ+US0U"K*'EP!Rf4DHY["f2r2f1HFJ8VpbXT-JF&
$dhIKAL!md01-%JNJVD0[`EfIm1Fb232@LD'0e!$BkD#+*6k&-Gm,fjm8#5rC`dG
!)ECU$9a3@ZT4E*C%3%#EA'Eh@K@C%8DcPP-`QkTMV"BPEbEN&G+Y$-$66F"+G3U
ELMF%eMe8BV6YSaq0[&"(bN(Bp!pUaeTabl!MM0mDZc#eIcRP+UjkNVJ*!QFNr4X
Vl9MlbrREEeJ!6d*DVC[NG)r)0TNBbkZprHlFl$&ENjLeFkZ`r6c"Y$TaFRAm(0A
rU9AGTc#bqE8Tmae&IHl+D9eQq%LIK(*H!IMi%S+C'AR,3-BU1)kKF2B),A&Rc*6
[NGp,PI-(D)IV'd!$P-*PeXNC*JZhieeRXadlDHSA9MLQT1)h6U'[JGbJZ#105Vr
XR"4K-Jad*dpJ#9-Kr$T`0Zd,IImEDmc5mUDFaN"[8"hdZjhG5XKCA@G)llhl$&*
%*9HqIl@8hXUEUX6@!XabrEi$!e2p#0d8BlPF"Y6Ur8P%'(6IElS&5)01BS#)IJG
FMU#d$$6QUrjm8`I2'0M85XcIP58G*IRGKb)K9A*FcZD)h-2mJSr4`5V!Y6QeZd0
G3fe@8Vd(BC0cV4qr'6C!K&+(E+T`hcUSi1%dZV+$(p+X[dfL&!*Y39Q`M,,iC$!
YBmHXbC'jCGZh'j%%)S+9KG1U($)QJC)+i'&%H8'!+Fj9eZ"Z35pAZdF`@%&Erhk
+aKGR1!0[Bl!%LT80K@iL'XV5eD(XBfc2,je'+1ZTk[$5M2dbKm"Zb0mPGbQEGU!
pB0f5Vr(`HNXS(1bB6(5Kj$&qXZ,*mBlEF,U)#&c)d4U-"X5Lah2Mk!HQV%#a+!F
0MXaXS'#i2m*[I!JULr0@`ZJ&'&)GCIaT13,rBpm*Db6#F2"Kj*20639j@BR!LB'
mYcSZjZJQLcBXR&aaUfjCq)I'Ck+a'PGQ'M3Qab'8ELlNeh!d)-#*VbG5dbS5H[(
((-Z@aQ0k$KGI!*M+D`JL%Fq[B#I[XTePfPpIb+MJr44QK'bS4PPQleMdAT%R0$'
SK!TQAY$YAk5VDacN'kep8D8Pr`FN,SEY99(hp$hj9fY1h68,@4brV(@4P""#R0"
phHeJk-K8GGMNTM5C0MJA9*Q+r@-JZmXk3+199%6Nkfa8N5#jGd!*`R!hdPKJ6$0
@p9BLGR6rRhVY)61@q6IiZa3F-8%*3#(0KTq3!!&Dl!DAZ3KFaC'cHPE0#-@-9k2
)DiB`(iC#cBY@UkQ*qJpa0QZ'K'+6-'1+p`,VT[P!5"'XaJ+FRSC)MqDBKA2GRAA
Yqif66mN,aMZPpa&*l,X39kd8`!!BlG99IL3l+mRbh0R$X+"pGJ2J`ADF![UHhfk
6"kdj4"TUVh'ekePUDr9JD&bKqU#!f`k"[K+L(,e(e3@UR#q$cI,4D4VEk&kL"T!
!&ACA(bX*`3N`Xb9J!mCUiE8D,qXIh'aIpm9'N9EI#4"cADB'@I4X@kU(Cf6dVX!
l&QP"A1SQVd8jJ-HZJcRS2X!(d*1,php$Kfk['5J4+M66#6)hpLdCfS9-"A0e'B,
"2H&K*GV-rHMcaqUpI@"lQL(VKSVlDN[M8B5FbdAF'f"V2lEqL9Gd#Z#RX9l*0Y1
0+bViG"J"(9c+pES'SFIjrdb(B4"bcD&&P$EeYeE2C'X`rFfra5#lkFh9cQi#KpS
4'bmHV(2VU*LY2Y8cH4Sh18l#AeK(GPa%Z'+E6*mPd06$8,YaLSkGp4%Rp5iE5QI
*h9HHl$)6#!FaN44i,V8U"-Ic2P14bA9LZHJD4T810ViX&eAqiR&0l"6E"NXV4*J
apkENaG`FL2f4kM+Z0+lKX2&BC+DAF,$V4@k8Pk@UBi&Sq(R#MaDceXTYNl(Q3dL
)6r2)i-hZ-eXiGI%kc0M9!6k5iUKbBQIiZ9+ah1Th8%hVQUIC)5&9pNMT2N(lK%9
qK*)*$DhQFF1KqYP5T+1dE2kHG[#21mc1$b[iF[1BDLaIiJGS(,6QG+%!p5ECQq0
Y%S+j"[fMUrDD@TEDad5Ph'5BcYZ1hq61aic6hR&kRJ(C+4k@f*2dXEATYd1"hST
qIpqJ1A2NZH5capJ-ee*KT2Zf*JK*$JITh*3lUMHVP`D4,Nq!VU"!R#jUCJ9&L$@
CX0ApiQJ3A1'*'ZB&f(h[E2kS4,&[rbqA858IcD[$R*6JDkL[FC5%iJ4p2MhJc'%
TEeb5Xe*'P3+FCL#BkpqRZ2YMY6@0p4UhlE)VZQ-AR*p'QiDMBLI94X2,*))jGfC
NX'%qY2lKB,DI*$`b1jrIJ[Gh-*QAdS"QFPmcVrTehPm5K(*B"24SllZK&2D-f&r
0"qZH*&QQfbrBPGLPM(`iJ"kGf2UD6UHBV'F3R*4P08#Ulq4(16qRJe&9fSCU10Z
"+Ke6Z&'$AqCPHY#6hH"2XZ3Q!eB#,A2q89L08e0d"5!H9Fd@B9VQDK3f$qhDDh&
KR0a2m@YXLrRkXmI@NPFC[8UD[*4m,Dl'+2,lUPqbL9C$3I1kGj*"lM0DZT@AdMA
MSIihN!"#eBpLAMB&q1N4YRHbp,F1HZBd2J#RVKHUYi0GE"-LZDCbKm)Th10LVIE
`b*2AcfZ4jHm"236%ZVmbrPYUhc@IkHmL,3,YlTTp"h&$3q'VrXK&9-U&59bMHQj
4-XLc&MfGNra-#,$-LD'e$%82T'6-Ra![8D+qY1%991`AM)kb3LQ`Dq9,Z0S,bGY
Nkj!!djH1GY@c@e0#%+EE5PlK!0!"3%[ZMffXb%F&p[CKRFN-h$,2(bYbaXI*eJq
f6+A6LT6[-(8fMSqe$G-,SpJ4KGI*F'9Xed(A#TqhNMFX`cf"+Q4b0,[4IEN*fql
)I@ZJ)J[hkDhV'i1PSGq#&FcB&VqS%aIqCFP'BZUd"rp!4KTDX+2T6UajJFk9m$P
L*V*qfRaAdq1&eF'!P&-0hPAm0(!Ymibpl%+1fYZ!,%rX-4NR"Bk[d1Q&NSmAl,0
(AZ+K!%VIm*K+mVC@PkX1VG`Qh3r4TJ6FR[)9P)c5"+YLYTJJ2'%6l+1j!TSb,k3
@Y)LLXB4Jmd$T'b6X9m#U*`c9%P9!V(&Q,MpU`fq0dNBCB3qB9NY'X-58ZITLVP0
bf-3*&Mi6i0592N+a)YjL5EKKX`$iI+PGZqq6I+hLKhTL6`#T%4FSh2jriRGVk6c
"Yr,#Mf$Sh5mQ6kVaEHRaYl()U`("RMQIb9XLZ++)AP2BMSkDd$PQSLaQMhmN,bD
`V0!Z6hUAFI[LUB'i)8aA14#GI5[SXE6E*F!#Ec#NlQifb1V!mJ![`Ri5U'fqH'p
-5bA6,lAeZlZ*qd,pf"`,HB4NhdALMH0,QX9bCqp'JfUSG',#5XM['jd'LJhp[8+
M`epF+MrmCr,V*bf5MdciEFL(P1L!&[mTGpEp14+ZLj@1"lTIdq6QSIbA(IAc3PK
bc)*QYcLp,5aTJai9mSD54cB#Y*V9KQj2Q8Hm`3kM)50fS+JjKa2MKPq*k4phETH
NSifSk-RV&V*%6q$&[#3aj95KBmiIqaI%[qd"Tq%$B*bj9(pV94eY3hd!Z@1&qp0
j'8X-HMKm(fLZCad!MlZ4(#6Lb@eZHA1hBZ1P9&#h0L(I4"@#UZ8AGHE0XZr0&c)
A[TNVdYQd&mJLRS4$FU4Em*a@A2Y+q&YdPX`pr1N'-0!3HH@E%RAehDS,T&Y5Jp!
4AAJ)!c@Tc#HXbAJ'c#(+Y)J)f83q)Qe)i0$Bf+pSSqJ-+4i)E'DUQI2)e6'eaZ%
NY%qe8Hl+V*!!m"MCe5hR0H%Y+Sl2bi3fl4L&b+&0M@Gj!658qIC`B8e*r6PlaKd
MS"R9jFH9MZBJK5L`L(I!V8S$hNSMMldeHSVa*$N[&BkGP@hR0T+#R11D)ZmK#-`
+5Y*%aP`mCjlFf6IcCic$5l$aEP`F$JL"JZR$AqPkiSp+d6X0'#6V+eGq9M#Z&kI
*EbFrmaBm[!#qE[INcI+ZI096D&a+SfB'c(L-9-EJ)rYAK4kE@DYb&p%q0pjNm4)
MHq5#pp+Db8BjfNk8)Zl'5M2Be@,IB(8Xk'*pjprHhHQPZPLmB(l)@*,)D39P"Fa
dZ2X6MkEPh3(qdNiT%&Qb@dcC4*DiFrNJ0B52RI3!fdT9&%CXm0,#ajFd9!ISC(K
,-9&!CeGNF+f2Q[d(`@2-4eU,ca6C!*qiG*`bq"VMZr`X('K6#2qjHIe6C#UC!SE
qP4-SpGA)ZpU2ZfjCahI)8Zh-8JAX!#C8)B1jrQp,X,LT+&L59%43IkX8#F%,)Gj
Aa`-X+JARXPVL@G-PF@Z$b3+q*f30bAbUcZ+Mi@4idD-C,4eP!Hq2"LG8Vl9Bh&"
j8G!pqbd%hd)&I)8QlR9q3AYG8R9f,l+JbCP#DU$r)RU6U`EK0!JK#r0dj(V"N!$
)P!i#jZX&h'RmPBab5'V"Mc%,qF$[PY"c$U2Jdi9pq)FST+qBqS8ElBqE'jj@X["
q&9N)$64)P13Z2Kk['TVbel5EMLIjBp6hF,em3Skc[0QqJXL!Ah+eJ&Y)14)EeaV
Z8-b(Ip`h&d@Q@5,c@-d-(jI-S%RH'R&&lm[i"+#-)a898rb54e'0i33I'43Ycrq
LPDq0-ldhElQ@PN38Yeel[GV(GIJ'cZ9Vr536CRV#UhZCl,8H%-j(-+6X`)ENZLX
lpD&1VMjpl+2RibJ92CU-EP',HleJpGZm"Q2[BRGp(9qR`9NmT,`el)3bIF`HZY0
-eXZ'(VjX$%FP0m&$f#0B[fUi@meAmC+jG*-&GkBIRJVM6LrEYqQBJ'"6K[l%&%[
NfMTR[4@@-KKRb"dM%-9C*jd'pI&ljLjrJf8(AG*'ePr6`irVdZH$bBH'iAQM[3k
cS-H6DEq6r(PGQ-G@J[NDL)e(-UrMEhla$#MCCC!!rV(*j$Ger+d,V+fJdd@cDd8
m2f6m-e5UBk(iD'KB6Ib03SH0G3N0c9bI(Fe("Jlfj"MhP`V@'pV*@+V@GKMYUZ2
G3%#d$X,-!eT`C`95[44'9fNhHRm#LhC"`V@$ac2V$$5`E3l5qU@hUZ,0YApF$0m
DEEbE(i#,r0e&r$cU`&rJYeQX",Ep4Bh"I$M,iYFaqpKr5NhFS4'fpDXGB+C'La'
ei0P$j6ABReTZ(EmZX(Z)Lh1fk&AJBApldFZI@b9FR4Qe'[-ZN@TG2Jj#&+XeFX'
V%)'T[aS0i((KraQJqK%*TbA2&Qf2'GB#@jN`YY(jkr3[All)'U9c,@NjErCIF#p
Ar,$ElG1fP(mE*TiCBa$CGX1'8hbeZPIYDM0i(qKjMl0`fG,KpqT)ca!#(Se,KX1
0V![M6A`QelV+jc8B'I1`$9)[$9Rp64fPS+M!ST5'SeXCbZa9EriQS!U#q,0RQQd
8i'Km43`1DKeldQS-pfb&#Ui'"@FPL&*b"G5"[e-SGeE!(Zc#"a&jd5#jep$IhfN
I0(!kfe2#k)e*'PTMMG@jp%5Fa3H1UF,aL9Ir-ihhi&6DZf*N-3kl10ALd1KFX2E
,TDFePr`J%+T@-kc&cK9MY#ciplISDHbQHYTbeL2EFM0"Grff$1JkUNM@E-'3!,X
![A)5XTGaArF*2"8aABij'#jHQ'@pVNaQ6MH4R0"Sl!Dc89FTkKK+$la[BelUh,J
42C'd3%Q@0FQhUpE!XTDh4Fm(q5[#H20I`r2H-J5h'"GE1NPMc#9JRab(U!*[-*!
!R)*L$[(I8*K,-Y&B9@3j8qJ%ph5VbemEVPGIVfqPqHNTl([0,d5Z#JlSVS+[U`P
eV$UCdlCI4m"1,YSBVA&6GRB['-YRN!")4Y'3!1)br+'CV%VMlm3"2%NZk4DCH5k
"qa+NbZKm8pASL!J1rN`9+apiPVD),N'$fZ5,D++,YM8V5d'UE`UT8[l(IY6m5lK
!%T8%$R`r)!,YR'C'SAB&qS#kaC(UI@U+`[bqlC9*L"q'Qm$R)&hiI648JP$T4,c
PIjhK"BAM*`ThpU6E@#Z#3RjX,`rmL',*i0-lZiB(M-plS+!dV@CYHArZBq'-Ze"
plPH#lCLKce$5bPq3!(9fcmXrK[Zeh$G)XHf6SqD@qI)*%NP%%D)Q'V$Kb3&TLLe
mrX#8Qiq%*be9L89$"K*Bm!bcBhlmjEhN[jDXNl$&FHIBjA4EEGiaB0PCGC2PeS-
ehM9Qb,,XKYQ2q18HA%U#iXbiBMU[cjbd"(`3[A,iV`261Q9a33IHVYMpRdRpTbI
p1XA0,cQ2c"'0&b2CQJa1[`CEka)Z+[2pN!"$VjRcirhlifR%SK82BeL9D`3ri[P
Y@dZhD9R@10b9416TQ*j(l&`2RriIZdJ1bQH!6[aU&HJ-kTVe#DKrTkX`NJCK+k$
A5K)R1p@I2"lRi,q'r8+j4FhB3d0)Ff,4ie!PSP5%iHQ&e)!-$Y(e,fDa%5%9-k4
EM,IZ9dPY&IDELH"ZX`Q!RN0@4lS-'8dR'SIdYC0$6CcLQN3G(V1EaR+Y6b,Me@d
iH@+M4Vpm2X+a`BLhIHSYQ#Q%GXI$H0FL'EU*DeIG9,`!-IV33R'SQSrb&&rKr@q
$8i9"*brLK@rpUSi+j$UP)MhE['dC@I"qh6S4@F#F("BbS6-'*@1Ir9kQHbVe$Z'
%G*E)MF$!iqM"#1dCdd86*#GHEAb#mpV*`#,Ipi8J4pijeYN-m#UE6*CdAd4G&ZF
2'&K(*%$YL6CXZVaMej9a5M)2T(2X1AQUj,Pj,N"iKZrJ4$cXQ0aM9"f"ajJ*hPL
**ZGKFe`IbajDN!"hp#DH(SFT6cPE$T!!3dH$af`&EPMhjFaDRIAp4Mj'9E5i*%V
HeVDEZ`HA`T%YYrH6dBmqV3"UhI@rFaYY*R"06U&$)Nd*@r6PDF5IdD@Uqh@*lEL
icf"Yk'6IHMH(LC!!HLE(q+lVB0J*q`*Z-!ZLfeeRlU"bU2R5ESYi9bZ5HqKUH5e
Ra6`5B["LJ#D"!XCrh`RdBG4r,pC663l85Tcj+VbarHklj@i6-"BLFBj%ACa(*Hm
crXZ2"ca-J-lL#!3$ERFh!iL0YH9d4qEHGlDbQ'HP0K(P"f(pY64pl%[3(bkVc$m
!c1a-l%Q6K%H"RMA4IJkq4qe&UkhS$mdBQ8HJPU@-",lUL4DVZJ*$@$pb1LBH"%1
aDF5dN!$YEqDdfA!)Zq$)FeCG6Am3d3R`Q!S(bjL-NYJQa,NDl3'LKAlk+*c)SG8
M@12H8,$l3$*5Cqi()6YhUPS#qCHe&e$jTApfK3&6S-@YVZPL@EI(Q6ka`H1f1CI
&KG1Q9)`5VFE1ZMT53HF%PFGf!0qF#I,2+p0&-FVADYhF9dM3C(0RU3hHNemdHdC
X2ZH'C*'R8Br8EJ8-#!cpQm`Xe`m'qL%"3PDIYGalP,9M0j'Z,G@6Q*k&&C)`5d6
"jLGE5bVHT!GD84)JipcD-f`qQq-q#erZj%+*P'`',6d'"0ENImjp3fJ9dfKCc)H
$Gc)FRe@#R8Ka&QII2HZ!$l&TaNl+q4pU+4[KHMSHEQBp+8VAfZT0-eME0Jh[R1D
[LBXQrRh',*QM8R-bYMprBlI9r0YMZq9(GZ&X-$X8&T*bq[9SX@'chj1UVBClV$T
`,@VMVbmqR(XKB%S0mJ0"iJkG@4,i9`&T+!*Sd"B(F##9JKUP4Q15B59AL2q8qki
9qSNIeL5kZkhN'C!!K4IiV5QRjm"Y$@elTR5Ne48SJmFQ[bqlK[+08+G3"NcPV@(
(hlBlVIZ1,82G@jkdSYS6J4h3UrEbqRj)#MZ9YajHeH@T[!UmhU!NR"HTC*'Z[V"
l"3K5JbX+9DHPl"Vhd6pqNY6`F9ePM'*ARJb0FJ18P`2)ZrB4V8Ze)9&lS+3Xl(A
-)@f`1Z&kik`DpQ['-I)rhkFUd#FE3hqN,40*Y[f0j+[6X8@NkAP5"&0K2Q1j9'T
lMmhGraAlDaH@HD0IHL`)5QbdY(BBG%R+HlRVbkadT2J8j%GKQbZLUjYb('cN&L6
1VQJ&pL2JV*B0A*)SZahmkFhpS6Ub)`2I2[JJqrL3!13h!X0'(J'*X0JJ8lal2!f
RSUEJRfDlK)-El%pDmN"F'RLl['Qf#6U[4H'5fhFmRV[LM5NA8L"4B0R$+&c!`aT
9jTA9V#jB8fK`,hRDQ'8B,9%&@SK2Fk4Ihj3XiN(%"VLL''Y)pHidTCqULN0S8i*
&6T`b`-C+,r,G[4KmmY&`T@rJrmU`jfKp)IR4#meY+SX9&Jhh+3dplC(BU4ZG)id
0G,GXjjEHUHL-a+TpKL6X#,b6*E6$KV$+j`PIiQLQc1+-q)JT`m5KpDh84&rLfME
1BEDJp([8XaP-"9hm9#"IkeK$VA)jBGD60D+peXImIYl*ppSTGcB6BAM*5#q"UN(
S$FMVHb*lB`fdClrp&6rk44i&!*lc['5p,Em9)l6pLaGT1jH"H!*)$Chq4Q`1%,-
R'6#EF49`q9RpjR+#[b*jp6PYGmc[bZZ`V(8r&Fe[,rQh&SiK&J2V3pR9-p&MX4Q
[i-ApTmX)SNY8[DIRm1Q@N!$,QDHjhZ2$(@a%3FSQ#!G,8F%mCXefcf1+dJj'PcC
V0pT0fB"EQ%P%AU&cG4*0kF!EQ,`hG%,"#5#a$IUf"QM+[TXqAp05mEdjL0+m,l#
JJLHaBQM(4r+'f(("Y%80ieAmHP&SHa!IqYDcL-MDNY!,Q(jlXj9)DcpPk54PiL1
FC`,$J3lFVf&,VkiBVaS#d`k0Ub1,lbl6ULp(9h*Aji$HUl#Tr+Uk)ULrGUMXA(I
LGAU`'!(r(0&fI2hAI)J(5R-i+NPe1Sj[IN'3!(GaTKjar-@f5r4h(eDCcf,R3RA
`(HQ!1YQQ,eZTK0PYlc8ZJTV(+IV81'N1QFFTIB89ZDM6hr1%%*CAS9HiU2#f6!0
G,kChHLLAh6MqNp9T@8NH(jTY%A68iL*cS-![DF#'M'I%$,D#RTp&['LRqP8SdmJ
GK$b!$+M+$KXBa1,$MY-d5a`k1Sra$EL'$!3$d6@SlHD`HQ6S!Fp@GH-eCZD+AE%
)P#6$21hAY`HA0L"!$Q0K@chMjED(Y&J"45mK"eA[im8HX8QqQVF!#EQcrE[&f4P
mSqDlmkh1)6!%Z`ZYT845GVB5ZchEhB)q1QE2'(B"GrhZP,N"`G(3)-JFP$ikGXq
1Z3%3ParN#bfj-K[DGc,#qb!aCSiFr2dD('pkHK%EGPE9$X5S5q(*[U#A2eTd+hq
UpfUU6#HA+31VJ@8LiqVRk2M`4%#A((`KUDVBMicCjbhi"($iC,#EZM6p@i-Ui$U
XNcSk4@,d-&6b2[ek&0JQ[30rBfV(rh+a-F(&b5ldRb'&jZPCPae8J8"%#DPXdld
@jdrBa,l%14L%HkDfC,-N%h$iD@drKUpVrL-FM@RUVa6'94ZHd"@8&,M@V(0$S'@
dd!0rZEa`LUcIh"I4Ea"JHNZ3!,2V1G%1P`2-pN(PESfeQ#1ZFJA14I0`"4mK#UB
)`!K@JJjN!PQfrSc!!-KL)-eIC&N89[+%"IDbkcb)D+iG09X0!l((H8B)aZ9A#&)
-C1jJiJjlPP&#TXN,'H5`4%%dl[D1Dc-EL-lY4'q9Xf"E$e1fGkD-Z6@*i1DSIeq
Eapm[*X62ahmUffYaYq1Gb&!BRl[M,U-Nr%B3FL&lLNJ2J$[kD1RfPF-Je`flLQA
6fHd(3IQ)Vai(k-C0PJm'QDUbCVmc$PAQQRre4EYNQp)5Qbd%IqajhL2+0rlf)pP
Vi!KH8AeZXHeX`dH@Y%qr$0EK$McPkl*XXeACcefKF4IG-Q8-Im*&h$%fhDbU@$q
D(MMc6BFJ5b!J["@a%Y4XDYJZDeikMlY&HJrQ+6%HZY26E$2qQ%H'9dJjL5KR"jD
kZajQJCS,hk'2N8KC*-CE4[F"B!Dafj&r[f$3N3,`PPfDI"Phfrr+cAKFNm1l4fZ
eH"@M3'j2QXk2cNkKhIK'a+'V`hXeK1cJM02"YEhl1)GSCqL0JK5HmS&`Qm`U0Br
&A"[8[C,64l)qY'Z6DPbNheZi*JVQAqIIi2ENRBF"-BiEi[3%r[VF4Z6"LQ[)QP0
dmJp0UpiG9&IE-)FN$l$)[,RmrUh8pmQYhm[+GdUN@I+!-EUHrKjZ@&J5l+ail4c
[XZV*Fm[+M,LN+EfBJCdp3MFm-Pr#RXJ!XpR'U5maiQ8FJJVVk(i5Md9k"0630dj
60dc9YGS3rL,%'m5fK2VT5jL'h$'!a%-`Sabdhk+m(&8F[[eAj9Q@9mY1&jR`1m9
`iQdj'jJ'Hk6lhh+2d"ehVM4B1RRNBFAT%@*(f6,STD9aZjAQ#)keTIP$$BISjMB
8HJeKNI3,U5pMFLP@fLTP,I5EZEfBYr,5+ARZRDp@Y6'B2Z+A*PCmFK@2LUA+@#Z
a-lI2iJ)*GJT'#+1R[MA-5AL2Rl9&-h[BES(FeFk"h@0jIfU8Nj6NS9Kq$#`&C(i
YRc#4S8%hKY(6F9*([JD%V[R*4GRfIPIZ+p3Y*aTc'1Kl%[S5A2&h`2mp$r'$#a*
8D[m!CHe)6Cjp(SZZF(TQF,E96R21Ad)cR*caN8NI`b!I"N!HRT`k5$-kI)X+pM*
dNad)aAp)Qei'#*S#-YM8+J2M!eUISl+i5m"5K4DJ(Z"l,jd##U2ZMS`cZYLhX#P
C#`PmM$&L+*D[Hie9bhmNh9NI(9F-RNQTQ2@)RSh%2FkFcMXkq2`bL3'Z*5MrGkr
R[rXY8F1Y,C(9INF)K9k,dc!2M5U4hRX"E1DKI'J30*I[bS+1ILHd9hm'TRmAiIJ
cEZHM+BmM@!Zc%!JP4a46YJYq@-[jA4UDGZd99',HV4GC[8P2%q5&D,A"@V3#l0*
04Tc4$[pdbYPd',%VF!GBk-(qX$ME%1KAj)F)C,hffF&1SE+2DEFk6$[8NRVNPF0
e-P&b9fpT`Pm0YZe5H8Lr"bp&JPei6kpJ9TJS3"JeA6DZ`-fRAEL%!JPIBQ1NRTr
NCMM(YJ9TpK*0Rb4rIpB#[!["Qb8P,a-rak1@IA%T4aEC(f[Sf*b@'H4@jkBJH2q
A'1C4DXqE@f'bTJp29QLbiS$CbSRl`E[8B9[0C#FJZcXb1Nd90&m3ji`bc3a!`"[
&VlPFHeX$#Pm0[cY(,$i-6`3,Q[frq5ZB`dK!$&9Ilk15)S`RM%6QF!cI1pX[e5E
L4X04,NrqD(!-0aA!d,%Q8KaBi*2'`I00md(6rCciPX9hYET5rUHma6KQT0PUBbm
dIp[fG21T55i#XRNQApBYAXBIb1KN*iZSK"d-El0ehN'K2&T-*%fHEpa#1H#@p1[
AN!#SZE[DApSH86IZUIm$3a*I,SDbk8"cFK)H9QCGl[+LhGEbDlG9HlGB3%0SM[P
qh1@aJ8K!3@I'2ip)#C4[kXD8B63e0(aJ0h*KDNX9B8cYN!$*3!1QiBYq6Jre@4-
,j@fH-3'D"%Je,,e*-cU8YBjhp-F6c$X2JL"ArA+"+)H$,8*XQKQ'%jjdkQK"clC
&i"hcN!#!ZT!!U!-PSAS*PhLQ@i3pjSAaM-1r%0bZ1c6DQPYd*6h"*)dRGRM0"jF
Ibk*-Cr-5583*RHXDNIDV4GUlh+3&YMqIi2*DRTQpd`NIJVPVf-DRhTDfSd1YL0&
FI#9bdL-i'BH#"-NCCp9*Mred6&6XQV+RDM5@D#rHTP*RD#)pUMi6,lE&hU'1UPF
3,!r2'"+RYi5)H%)@`h&P,Ec6IKkXR`jFVGj5p*mM"LNUdlAbTiRYk)ri5@UbI3V
kS)XLmT1A8Fk`hErq3ETT5YjJNM8[feMp4ApQl8hr1&1Y-V9h2FZYZ`*0Jr)9!3`
R1%+5l%FFK@N``Rk0C$V#HPMLJ4VcdNpXC!5hKAj[U%qJ)C!!1SdMb6HUX(85fI&
X`E3BkqK-FmCJC+@12)ipE@4H*RL"ZPcLB`ff#@*!ZiLql-UDdUPl+r9Eq@k2TPA
jLJH4@3R'R0-$pGFe&2'-6P$IqMGTPRV9BYNL#1,r85ha4ap`-EG!ckE4'-+$fIY
[pTeGV,J1l*5-EA+lKahmB`+&XYqh-5VCB8eEJb8LVmeXjr,EqLYr,'8!(qAm4&%
Z#5Lr$"23a#9rqrAPfKY$(YUflZ-)KcK**`1kL(TrjR64edf%3dMQ*G@k@'U(E%G
3+)-e8&q!4&lh`RlNaG!3kpl$I1rm+,,M[Z2C16q%'kc6E[r+F'e&EA)b)[diq1Q
ppi502i+lFCcpYbc!kB4e15Uf9#bP95qQ'ciG3[TQd+9#KBQ,*p9`*TRc*jZ9V,h
,K#N$46,AkqGAIJ2ar"4IHJd8@6[bPZ#NY@[2#HNNGTqQ@I6%j2[dfhqAHK3FS!`
c2Z"QPXSjlV3@1CrHTMHA$U5B'ZPA'LH2EYH-JZ@&jLMd0L"IR!YkM,8!m$S4N!!
6&+6ZU%Q*G(K4mA&G#Fpq0`Kkh6'XDM,XI1B-S5Q"9kGM1FR`3CpkRm,p8P2&ffY
fVRekUDeBlX8S*$)B-MMdV[IAPHSK&*,3BkDR$eMFNRkDqd"hl%6qBkYhmHYh1JG
QpA[bZe`pYVc4kdr2DVAKcchpGl&@aNE9bPf%i)XQM1SH,eP$#h(!Z4J3lSCq+HP
Z1CNE(ZI$ACecNkB2HQR4YP@CA#pSUIJT&Ha0Cee#$A@P1T&Pb#0Bma$l1%m04)r
L8EFQ9hp2DMcBScSSeZK%MMK+4h((*8F$"F1jUEJV(bNbXNJA"XE,&p*LUZIK3+l
8T!rR!J*J!HAC@Mj+6#4)q[*6C0*2-rG,0IX(e0MR-e40eqGGIhM%ErF3[(pk9aF
IJPHrIfCYN!$d51J!NVBPP"I'Q!JVp#(`A[8@+2(HBCJ8"HC@AII%aUA%,'%6PNN
&29Um`G3bS&QdK6H3!1*%SMb9bamG5UjfbFEJ*ViFiK9`JJcfr$KkEKSi)PAaN!#
GUNF6GIGL4h1(VrSk%BbP&l,T8FJrUrC!Q1RN#NY!mV[#ZBST13)UB'[a3RmRqVl
,3&6(L@,E9*FMD)jaC"%R%0ZKh!dfZ`9ZVHfTm4bl1Gd9),+lVf[GY5ThN!"H&["
KYY!TbFH#V*Bjh3%Q%Fp2'16rr@XA1JehC-F&mNR[L2Ph@U$9r5r[qQE$NUfrc"q
YN!!`ZGapa,mj39ASEQmKbEKf`Z)'Pl953)&GedZ1qBVire8IfM"d9rAmc0TB*B"
6Y13cpNmS1&JBecN6E(4S@+'2D`%Uj0FG`hR#G+cp2P(Sf#C6bL(U4d!h8%fP0A%
IX$eQ6Cl)%0B9f)#ebeaNSS4hUm3XECHDjTXVVU0+6FF00m44Ma-JTp%%(pi3!d+
lQDkU(qcTKXf'KJ[r*Um+I9eFd93QKLdU2ipm'Ca*1b3#C[-Q*ih1GYGjL(G)ZeB
mm&FUHXrb*8Qm9a2pZ'X+DMmjG``JLa!`#VNBX%+Xj%$r1ISPDbZ$Ld'jqK#Ep)[
Tc9D9mRQ9*MJaQ-5mmhIb1eXhmZ&VmNN")I&&%)kYTiN1N!#82qhh*B16#f&V`+)
"IUIrb#ND,RBi!e2D)rhppGr$d69QJ`DpA3%2GfEShY%L"!#PI8$@LMAEl2$RK3B
[ENPm-!fH0TKLrSZ3!#+T,dcZEDTp0kf0`K@4%(f9aHRrAe@19[[')SP!&L0)N!"
+@$"qBkR!0@,T[Q4TD'YEHYiCLA0I&pC%,Y86cC'HAim+k!960[*1blGR-5d4NlS
S6pI(Tjdpq8AUTMh"iihITL%J%`dJ1bGDH3f[U5qFRI'pfMTpFraCJZA$FMZ'ISb
hB2@*PDVSfS$5T"$(X!RU(R$a49Gk-bU3!1KGi`L%a0Y-SdpY005"NY+&1X3EmF6
h,N+m-0IIj0VaI)F(#!p3P0!BFM3[4SaS"Q$X90-@Tr&,h$RihP4I24JbaV,A6`p
UNAN!0X2EG[AAZFH,,4e$Q'!"!QVJf6Rh$(0i$KZVpBB+[pYLMA!aFYN-QK@2X&`
XRI34JMcR#G+R!jdE$fD%pi,#G"$!NaBQCR@$KN!M'q8+a9Q1i4S`IbpQ+1)PQ1I
&BlYT!L63EF1rKi$IikR%cLfPj3M(8%GHJ-cR!a#(cj@H91f*'B'-[V"a9ZP6iNH
b8X%IH@RUCjXrpSXC99LHBpX0kRSR9GU82pjeQ)`"2$6+!PGi$rJjm--kKm'5l1F
TPUp(a`)KI89hApS@chXR5ZEBfaTd[-GUkENc0hY"%laBIalY5N+E,61a+,Ki#3X
84m%-"+b[hdVK+YGqMZHb``K@p-N'4`$K&3R#TGq"V-6&E-URM@L&T1BpQNaH)k1
)0)ID*[Tkp2BZ1CSa4S4iaJaGei*HQB9C"B0ISM"bV'Rq%JbM%S&3KZqJQK0XUcj
5`GKa+8fj0-kLJlDILF@A[@FFNZXf+8LI$d#M-BHmUC,!AR2G#K(R5T3'M`)8S61
4Gia[$5,5E,Ula`CElr%9,R+F20cG5IHCq308'N8DH`$j#j,Q*,k$1marbV$!MUZ
hLSH8S[SN0UP$@pl6R)B'N!$0qQ[BY8J8K8SDZSHl+BhL1',`)fNPiRlR*5U6RDY
%-69@2(VBEBN$r0[)NS,CjRl0!6-riBB)d`BbqQj!fK*E'#&8cUa3AB#[VZ,Lm"H
K*L8Rk&Ve-hDcQ#aaM1d!5%F&i`jF%Skb,(0i-3aef#`ErJd1RrNV@8Q3!0fQ85X
h3`X83d*pki[[qGbSVb2h5T%"L4XG`q@aL,"9BIM(c2p2mJG4H@jfQS5Y21ieR+%
#-9'#*EH4C*2ZlfBGcMYjkBL1e@klRPNT1D!%qS*`LjcpB!29AMPKk6L1deR%6P#
k`Gl`BJ9C[pIa%ZKZLK1&T9L9K9)-#P1Xm$6Mf4a)LL4@m"LQJ$9h)JP1rqYHlEp
%#L8l8[&[RMrB%A9$`NTHB2aZ6fSQZ2lRf$aE0Cc$KRCribMhJS2PS1*k!'lQkl[
P`&aQTC8iH-@`89N8ia#kKA*($'%8CGJl!SAl&UbGTE5LAj2ej+e94$"DjFmpL-h
9DPc@#4%NI@F`8I[Y)cT3T!h25d[lkjKFNUA'$*J)A[TJ*DpEFA4AYQdpdSd@,H[
+A&$Ap"c!3U@5+$68G@Ge"L(UM19YP5+ErdI-`+-eNRjcb9#2Dl9k2h66Q!qrVh*
0'X8qNi#%0TCS9dCD1eZMh3h2PC8"5"4EBA%@kRrE8r88&'%'9UH+BPXY%hM)pTc
MQeFS3$h5b134@qNp,(N%mGe"LiLDjMl"2lrISb+#M(@Hi1B+CfrjpE9["%%'"Cr
Ar&[62+HUQFMpLkV++'V)fjMQ5h`X$RS'#E,NS5'3!#KAR'9Rhi8Z5*&lrRKRjHJ
9)4(5lcV28U*c[Pp'98ibc@r2[AXh*2Bh9CUeCMKRXpfrcqa"i(&d19eE,KeE5"l
SYHKc5!6cFjc&e30@A9N)2q`Ri$GK0GD0dXa9`ABKdE(@(`d6S#mYSR[4I6FGK5l
G[QPkSKNX)[%CPl-@eF%V&Uqq0aB0A+hrNlaA!XT[iqld"KPTN`8H&Ik3!#L&+XU
Y#4$4KB"@M9(A&qR3-0C9E,I&C8dq('ZSAa3B&jS$qRRU"%j"j6*"d%k)pfj14r0
P@bS925KD0Ke!cHXCjpKDZ[3)r+89Ph3q`",9fc98!Z[+!5PmT)[4fAG*jf(JdcS
(1$8f3a%+0ZbI3XH"TLid-0UQIVP+2&'EiN'mpJM4QeQ3!+*GC1T8bZZLGQ!@A6p
J693RR,,*%3&Y,TI$UU6[$IaTZ9jpN`#6+pc(JD#pKJ*DmN`hbei&21PJaU9V@#9
UHb"'FIV#p$@QfmS*"KU-4Z(8i90h,m+15"IE4JEVGpZB0)J#J"f*-(2j%48k%@c
SpQILh%hScrL&E5K!K5i34Y4k5DS4lY&A5%!35ei8!@UV6+pTc93Z`*5(LQT$KeD
`,F)"9CjDHiqLEk*BISM3`8PQkiN&ZhUYr[CU)p5lkJEe)imZ"SA%h"CYa$e,R00
5c,@jYhmNr&T),pQe+QdbIp[d5hMSS!ZF0*!!MY!fK,UM#d+H890S@[EKpj0MTJ!
EFm)eMXiMRGI9Ad"kpFe3DC!!)3,GSRhTbkP9%h2,U#'8-(dja1dU2KS#PR$"GDZ
,iY*Q+ePP&iIR$rL%iQ4p(309Kih*-!cK%pRFakREAcc6c%)rkHCpe5`!SV%6R+8
1ZrHNZD,+BdFN0LAT93"mmdXc5kMMIqGR[#N!)UimMJY%mP*V*k&$mrKhQi)0lR(
e4e&*2D+2TR5k`ic4cqY6"'Q9NE8hCIK!"DE4D5-BH#X)ikifhi-4@&90,A6pL`T
cEZ-1VRa&M,jqaG*fGUj`b12-maYM,[ld*PPdiqI+jNRSEc+@*E-j5&((m!9(B'3
CacJ#bU$UY$XIN!#TI-l$)j3Ri[A$3VCd[pkKFMMR4"*,r#)T21P20&fB@06cM30
drRASKFJI4jH%KlR)9M@LicCllqE(G"9VacqNC0a[C2)8kE+`&BqlDajhZkrYSr5
!MGfHp-XAGD-Vd,1ieND,P'FqBVHBAUV6A4F(h943[T0MHLcQJV#6L3ckMG[JjQq
2#'1(UH!%YDmI5p&HfqA#chSd$0#FMqA"$#5%$"8qkB(3)M&G`B8r89G&P&A+Dc"
q3-h6PJUcC*CG%l%jd#R"62q,SHQaFV'S981!JCUK84NYHH$lpSbMKiY1#Q8IiTH
lqj)%P)Sr@d--p1'Jm+!["1SV6l%Q3CSr'b0#M(6HqQ!kpN2jA+J*T8lP"Y588p#
$Qb(T0Rd8!phmK,9aKbhhUHc`G-RR)R8&jdMV,@JUpfKAU""6(rc-i6IYaipe6LZ
q3aX55qr!fN[f98LJi'6f"2c099SdCGAY!icTc'8MfA03l,8"C+RD+h5kB#9@fp'
I6eJ[HCrG`RB)8IKf1ELlPA"5TSC(Z9FPR`6reGm'#GPdjb,2NbS%Z'TA@MI*cjL
M3a`%p@kaS'YAJ3c5$8$CFlcpQafdLGSlLamN)Q8'cCi'LGb0%1N')Xh[`*4h1MY
l8)2)Gh@CN`eS,3*3A[c&IjEp$0[@q8kUa`Q,&0-EUHS05K9"pX"EQiIihBfL@K"
A2TIkdMmBb'Yp@krHTYr&"'9Mc5k[DKbkBl'%rk5U`*1cH++86V4a%Ire!hD9#*M
QUDM3CJdSU`cmNQL@MCjqUC%4aIHr46HH4(a+![m6D[Kpk9ah9'982K&k5j-DDp[
8hCHYKK424q+,`JAjJ9B4fSZ0d+`R+!Y,NF"B%CeG1FlTZD[-aPN8cUB"(!bib52
k4dPD,2RVGEY(m6Pa+0@hdiQEH#$$rYPm29IA-3PQec"mKm#G,S@@&`DXP"&1864
FcIeM1I2)Kbc`LD@C#!CD8SX`r#2lNLj+AFi#JSNQlZSjR!RlL!FZ#&b8FHNH8VE
[k!i)Q15IS`4LRLB+%ec*ja")JZXAm1pQh0h`fPjpB8!XQl(@UkNG(K`9F)c!cUN
R`aTJelr-jZceSBSljUDMPQAPIT9j-3dprj[&Qeq!mc4#YDQ*jEh4+3LU)5)#FQL
MaR$UFS6iAIdE&YG[[m#&A25iiS2ND(H2jJP&KV*mE3aV"I)[9mL"G9jCr8bSb%T
pR'!h,FS4X44p8SCZAif,*5QF,2VU8@*l&a'4bC6`)N'Q11$F$TEilKMNQSB@r!T
Yl!D$qETbRk-T$je$*TB0j%THfD"4,TBRTRIA6,EL6FT-D3Gq*2l&mJ4Z"+Rd%kr
1qV%f)(X(YKYN3+@j@#YJ"H+hVUq2'2[T8Ra%Y%&#*R%'2medm(V)8A'i*%[NML4
#Nj)3ehlF+`ESCCU,MC1rY`M-*Yr60B'B)XTK)9rR'(%p'h'[NhaPH)i+3Kc6i`A
@S@5BGPEZqGITBcT*T90GZePeVSleR4Y1YhM$IN(+RdQ0Q,0qlJb''")fH5J&"kH
fC9fZ0,,f+8%+E!Q[DjVHP&&bJf8lhFFp3#Za6bPZCm50ZimMCdUcmlqeMI@GM+H
*6Q"2bI"icd@14PE1JU`D4+mi*''TFJC*ZNM6NlV4rUUDS$fpd+iHfTR8*1I+6k+
R"DiDY1I[K"*jrJfe%Z#l)+CZS+#qJ!NDma*+9mk8%Z5F-bI66HkHXFM*jMNNl09
ShDa)ZLf3!)JN%Sqh0cD#G@B%&@diKMPJKY+[31T+JQD#F)-J(!YK50%&p8QIXZ6
K-#S8,&rh(9$kpL`qFS2d)4eaRE4*51)pKD1[(-#P`(*HMV#BHK'a(j1bP45Ck-!
Cr)R-FN6HA(qq!ll5YjVIhdG&0iMemiJhL!a4ZdH`Uhrqd)A5hVH*hSjRfHPIYCa
,,49ZbJ+$[FP'lSl"e(81F2-Qd5a,RrM&(DM90fBL5USDPqK''r'61LY4PGND(TB
40B%I22h0Jp`6&@j#PS2#P&C1"NMiF(KU(eaRKG3*"'`&`9MTm0)IR%*Pk8&`*,M
0l8lM!$UhbmZqEhS'%c3dcL4"ic&ZKUSCDh%T@AU-cYiSkj!!+kPR0Tmf`bQlDI!
C8LT0aJ0kB2`%TNXqT95pqIMGD9pKE0a9PSphiNG2EfeDaM!ppI%#9R'J"9e5Yjh
30G'mfP'dcU+GXY436+[0IECff(Qc+JR'VGpK#[E5R2Im29,MQXIrQ"@Qik5BMXR
-NK-brY"mr5qT@H)(+ehdAVAr3h25!Fp-1im0b@mT1"0%AZKZ(0a2%rcPGh@C,#S
XJ3i8ABR"$e8YqkI%+jBZrDRl#[*I'F8bcE"$q)@P4`I`a&N`V',cAfIdX4+q1X-
YfQQG@fJNjUK@&NZAiCehNLeJE[h+Pp$SRAVG6$,1G-XASPDr*iNlYV@,DIb1IJ'
i&$DA6([6'UiTB"Qh,cDKhAEb*D0Y6j@6jBqd[8(G!VaaGRrh&EcD[rHKp3"bi`d
ld%C(YNkf)fh%&lm2mr2i`8B9pMH)e-m9HP55Re,b#Nq8NI"cb6cK"bQ0ILJM,dY
0-j9LHmTG)653!"'QN!"",-J2"F'U"4V-Nc-LlDS1aJb6+k&cZ#H##DE#324ihCl
G%b@'RVC4D5A&f'M10NTLJbjq!AhC*0bPbQ-mA5Bd8fLHRRfTRE22erf*hGCiALK
Z9FRJ2Fj4Kfm`k&aLd)ZKk)B``#'iX8%ESqFdl"F!lqDmf''Ce+UK$LMh$d&Y$eR
@Q&4Uj&"6li"3*T3X-Y93QAPN9f+%rFV@lD9"P2E"DhBcE@dTejMpp-)UXNEF$L#
IRjA(E[p!F00R)8@4QdVRj9cl6ABiqYC,dCDi4&1QH,)C2'fRE@El55jaZS$T86,
[2FM@AZq0Q909T*(48S4N6l)f%Q+MDm"BjjRr61*mKBX)DiEL*eCHY,f@Bj&-e4A
IfdpVLVL,8T5PkX!P03d0[[U3!*RmMd6+`@PBcmdf%,`T`N*qd*AH6QlXI@3p0IB
NiLZ&e9LlDP-l[QlE#Uf*Jp2VCElSC,4mM"fK()DFJjrTA9M[)kc&B*,091S$[q$
!E8"1G8p343[A,%&GGd3*eZ[aC['Z%`)pkj!!pG1L4IDMl!K"DVTiq!%YakDr"0%
XNND0H1VKchI*20f$FFiYiSY9VSh(3*Z28P!2`a#ZfLMPP"hI,mG&bM*S4QRdi-H
#R[FQ0BE4'F!aEke(2k%%A3Sed(VV9@@&me!f"lri#L"1"[LL1c2p$rP[Q!$I!6Z
XF,`i64T!8m'bL@N406j+$+S0!&)BbMDR#'F`QTlSQhNe#TBNDb3Cf*0G5SVLD'T
+Rr-2#N6[29Mq,JMNMD)erT[pGZHkhCLP8m8bifcbr$XC&LE!#4S5p5kjN@DN@h9
Ui-RBi4&3-Tmb5j5F8JI%fPH!KXM1cHj*K3YmY'!PbIUI(m)B"iDNJ*j'kfUZK`c
1rVYUi-(X[C43`,$Ppmp@BUcPeM3DT8IT8#-`5PV1F'bSV&1SQ[KEHDb!cYFU#hq
E&Nif,PJ81mJYbp&HXISk%N1Lp0"a(L9UL(kQ3Qa8GBZhYH"U(UMdZ+2p@Ricp5[
0IIr'-ZVC2,15fm(m,acIMAB+@0&(fTkhf5f5GMS,KG%!"-cLYdZBq1`6IHaH9AU
0fP'*pjG3GE#4mKbR2dja-SBN0J8"i1!'C-Q)4Zp@AD3aprLdc2#`19E)1bALY4F
5!+YSJE#)4a'&$R0DYl`mDr+Df[JSCJrCm9-(R+`dIpC)0,@Sq9[j,Zl`c#r4H8X
!9@*%#EdDX6M4D3ld1f)X4+3V'&N3FlM[HJd[AFC28JbeYN$`$SeRF"V1G2qrJRK
JN5`i5fP9N!#r$rrlFPkG!bbZi4hkD@GIH5MZ0mp)QGiZlENk44S4qJ*R*NH85Y%
N3r,RBha$$5LM8U[jAU5'jGL3!"5+SIbCC4m[CiZRYiEdYMXC,4h6b4Ure+AkjXG
h+VEq`0eNCa"VY*b8B2hNCK#UkipfQ('lqZcl"C5%4X%4G$0XaKf&k6D81f8l8Fj
G+k$m+59VEEf($B+R`,E-4UV-P-1f!G4RqBNSY(1fk*Y,'HM2kMCT-eC#$iYZ9jd
DPqPFd5l03S!C5MZ`CUIR'$'-%q1$+ECm['K$X%bLeIj,eECk9e0*D6DZKcAc-KD
M3hU9D%pM['%rbQ!F+e69mV8JbCeXBf8(KQN*8qP$3*kF8Rb&`RTHFj(QjG'*eFe
jVUrEReq[a(L@Cp1*@J'2l&E!l$AjD[m!@&#Kd(crEXfl1G-DemS!eNHV3VSYP#f
l1b0*Z36Z!K!BjC9dGI48fKqQ+*!!f[Xa*rB4HRd#8K3N#dD5mAbfC2id`hq!b`8
SmkBebIV!``ZJefPTQGa"3iXBi&UT`c4kG@`HVQUi-*1RU2YjLV8+EPNi9R-Rrdc
!0ciZ*"&!El5Sc,#*X)0E3SkSQ*K9iAFV%EbMl-r6SG8)ri+ScF%r[Q3cR9"Pa0T
&FSKe"!2ZNT5+pAI$9,lDl#,kGIJ!15#H3S(cDjRjLXPAZVRY9`mR#BTD(FG*BGb
)UAJ"@[8+5P)QJ$N(L6ER'4*IhH3,MP0#cB#)pME'[QhE"CSDjZp8`6!`TiGUcIY
i$MhcA'jbLJJi#@hQEV'jX2-PTUAjA3""#[8Sj,pi2rkmRA'1,+9bRVkSR,fF-h5
AcUp+T)aPpE#&DUKEBqPFp1G"pGY6Q'@ZX%44N!"hIcrL[4(-&rPQ1jSk@r&jL'p
6cEjF"(h2I'2MN!#%Q)j#KI0T)#6G)0AmD'H[5PfBMJ`mm,#8-pkcdaZYZ#F+$RC
ZIDmC-!rKf99&AT%U&lP(QR%b[Tcd$I&d#Jl'dck#rVC0eMmFGhD$d2MC$#0U6*e
rCSXVIqC)ZPdeYV86a$3UPaTmQKMqk[iSQGB'*1ZFk*qiF+0S3q&$Zj!!'AFUa4b
`N!#ENGG`r&mbG8YGQq6-Y`d+85Urc6lSh%[UIeqkckMM!DbAe#"P*k4M`2$l"r3
5cI-D&I!+4JE@Z0KHqCZ1@mdkXFa&&XhT4[L%KZTAYb3U[!9Pi9MhP3I526XU@BN
mbeH,VHUY1+@$RI*%#J(0E6rISP((PArrX*YF84m*(5!bDdP9U"RrFrXh@B6NSA&
rk(G5Zp+JM6-1Vr+HA28YRhE['qdNBc[r,RqG[kq0F4GF9PMp2HNS"9QEB!EYLMT
BZE#er'Y!(bRNL#+[D2K"Y%36fFL02kQTFd53!"%lSIecX",GD84)ba44Bkm6m(K
ck(aVAiEd)%B0@PY$kk(IC14m#0-3qeKDBP2Z)c4#6TDKYh[ReKre"RKSk+2!3-"
5P,I!A1Z$qcka*Z0eGY$IjU5j)"+8cp#@X*YVdh0"9p&d-`pS8C!!GPZ)GQXjeA+
48"9+dr4jC9c,3m"fh'LTH-`@pMSK%kK3VFE9&%2AI"Z8ahR5,`+6aPMRYe*k9km
3,YKNBmb0GC49[AYLdbdX!$ITMB#)8Le6-aTEP5#1lclDT@PRT@8h!klJI[RBFNb
&)q`XC'U4J,lpmE-epKHYl0bD,(#55TSmc'&bU+J`FFI`XAdEQ-Q5U@D`##afeH2
U3'jFR93)!-p%M(T[-(M&,PJV3D2mrFT9%M'2j+ZT&BG38r(kkP'V*DX$(Lq`bmY
%9I*YQZCA`"Z2$K@HjA+4cK+63Aj`C[$mTXDR2`T4DEL@e6S""!2UqLE-"UY3F+*
KUB"kGa-Z)'T6mG#-qZD#5-1pPHP8E*hK2&rq"K,3J-CI%1jVS1mi&ZdN-9qE3T4
j45N,KUpNG`mm2+0+P26Z[f9b+UXfGD68MpSF-D!8Q%TZ3AT`qUD*5ZS&RQk**5&
bBHY*HU@ip#hc9X18$J4d6+'kGh-2385QC49@(fc850N@9jBNqmj)!d,UkJp@MA@
maD*)@rM%l@C0Km#l,!0PXD`e#lYj$(4-4NkaHe-JEd$!E$mXiaYYdAiPNMi9hB[
AV**2,UJ#r9$,e8l8!8K!Fj,B4MCNI'f1#k+I-rP#$q[QUY@EpMTQmH%&QbIS"Tm
4%ekEb,J0Je%+#V15"5m(B2d,S*VQ@C2+"FrJe2EZ5&E00rB[QLUT#Ii[l'UN,%r
kI9[`Q2Q9rG,%LpLrQ"-6HfbdU0D0mL[mT9`2)QYBa14`1Hr4ec!B1f$B!`KS0F2
"6R5$k1-fIF!cQeV`Z$0Nqi4hckTf%`MM3Y@`*MAl)H@N,Tk#dAQl2pXqfpYrPDi
rI94"+@Ui*mE9-F!h8[[m3BMAbeLXJ-P1D!SY`4!HBN)(lA@rrH`N*3U2"(X4fL)
(MZCD3+D2&35a8U,fc[akRN%[l4VX6Z,Aa!ZNB-K(C4H!A&r--8&SZX%Nm!r8&Rr
FKN0&ZS$18Pp+J3-%A$BC[!V-f9)YYBCK'qqH4eI%H$0RPM'FGd(&B)5c50[2%V#
@Aq(6cINF$f@Y$V,GK3B"[rMQ4(lB@3(1I5!b)f+63EiGcP)KAU)%8L,6(R"NK%c
5ZMGC++Zb0IjqdiNTM#@ALkm!F5JmZd0MP*!![3NAIA0F*UI%BijJh6LRlGS2K$I
)l1!0Q'eN3-XcKUX`Y%R")24EF&#d[(R*VDd@$kclCI(*SYB"e2Nd#3CEUkVlFe0
bZkAlD8A#9-A-0jDf[m6KB,0LP*mk"3Z&S9`#Lf$Jb0fF`L[hkmDQB9CRM`1UB36
2YT*@dZpB9)8*,!"Z%9'(S3b98%!'PcKl2q"(d052@)Z"q&BkN!"S84K0(jShVpr
mG`1HhaM1lm-`V9`1pr@iFEjPq1@SI3Qa'a5UpdifdHQ`HHX*$6"b1$E0YY+cl6L
0hT9&E9rD0ai)9(@R26$Sd6*R)IGD[d"3iGH%F`%C1pPJmFriRYPANF[d1jNf5(C
IKAIZa5PSVTUGpeM11US5a$K[ikjIEF#3!%9bG3"fGZ@jc+2ld6F[0LLf[0-dDpr
HEdb$[+lMHD)J%N2FKVM)iVkN&p(F+dQAi`A"eI%IV'RCG4CbF8qGe-eZ"XCU,[r
ikdNHic%NaY'`JR4R4F4Ik"%A)(eq&e34&+,GJdC#S9T[BkLU`TmkMj0C#6c%QfK
YP[9$F"ErQIjr9U+QBPb)DA55fY(hN!!$IMNr+rNc-$i+GIAdb!MAbrYISfNUSaT
mSiFBbfP"%3GTT,X!)qPX(eia`h0R#D[KjQYfG&c"BeR'h[rVAdeMAVNXXmTF!A&
f%FH1NmKpIjpeR@$HB,fIharQf-ql26LQlTd)T[M%hd$FdcRpkIq0Y"d)3A@&k)b
`1IHRR6)KR2+A-6(j0XBfpDXR8Khf5JKQDcfYAcQ-SC8GpZ!j'h&M)k[-Eb!Q[lA
I5aRreIYB'*H*FP3E&E+0mB'Y'YTIHM5jAXhk,G5@P)iPXMpBGJXCT2rk`&fdrC`
R!r94j8*bHh)PG+1BCfMI@"ZmCZiiYNV-&839cCJPp`f"aH0FfVe-9Ccjlb@jFdX
[X&4i42&'Q(S"m2+HrLGXcrH4b[GcZq-ab"T*)crK)[2Aq5VlJ"@Q8rXF4+%"`I`
QFDYJbmUkII0Yc8"kDirTZ*1iD3l$[F(E)`QD)Ve+Z#!#baXd2B4Nb5*,`T9E9$,
j)*[2CF9d8@)3fSTfI5VrB&B2*N&cDkar6cY$f[b5F!@f+0+kIL)[4qI1i2@GPcB
N@c[9dPk!54#3!2@842NcKqC&GlBFb(S0'()TYK'6KZCHL[bY1FN`Z!G5+!V[f*+
blRCDVZXimk1%CdXAfCdLqipAPl5cY0k)&Fa'14Z$8I&F0+JBGSP-@bk(NrF,VF,
[XZPPE[DlVZSF*GB499U@p&00kRabTVqZ42&Z#`f&cD5qK#SkTL-iJ8b6U'1l5KZ
IB&GDN!""BSira"TJ88a",D)59JTj#JCCGH9UD(GS*Lhj4l2ZSc''Q*b5JeN&1$r
pVpSrhf4EbChr0'&Z(a1!4`2@Ri(4X""Pej6,5hD+IrSQD(4XM49*%"'E&%'(GbP
EVTL-)PZRiS,NB9i6+l8I0T!!+`4GH#BGUABe@+,F1Z+(AZe6V+KH`KZ(Q"F`iCm
d9A11FYpp08$r1`Yp`N+"a+H&08!!KbmfBMfH%J%EM3(+l5B,80i0YYh"+NHiVQ4
8Zf[V-E&18P3FfdZJ)TY8@YCV03i,jS6lB4Q&MXkL22T$*Uh[cJ@DNXCc[PUFHj)
-e-!43hHC&$TVZmX1-J0,l4TK$hFARD9IZ1BQ-AV)8'Z3!&JleMA`N!!PkM9PhBP
iV*K8XaabaYH8CPX2$4ZJ#cUPdJ@*Mh3Q*MIY,FNA!iIX)94,8!ZX3JRhUN0PdPB
fF'ifAP5YZh91lMj&8Ji9-r"qG-XR%q#JVbZh*Y&GBimPbBA`9*IUZ%0L3VP)aiC
VQL8fD0l),62bVjZKY(FMQeC9dfErXCC4$YYH"#ec'(h4IH&1VqkSBfDIc94ri65
l4T'p6Kq%,,!iqGM@jNK3CrGY(M9j"Rb4V3jKX(Md&jHqTFGQaUQFQK#`NbL$`cF
p'f$dE`['d`PDQDb0ff(,p",ZTcbqD##UmZ1*`5Ypk6jeB+TZ4[a`E!BC0"jDA$3
*C,BlBHdSYF)Mljl93%U'!)(dUI1lJ&@Hq99B)N!GFmX8iC&S"l2rbB1+GF&KdTF
Jcq3I&M3haIhpr4J1A1V3fNjk4He42eb-"4j@I4Yh4Hhpda)$-0SLE-(lcXMq(rN
'EGHV)D["iLaFkXI[GHmrb,ZVZ#5*1F@MC[%P##R"3G-mk'UD6"JGq"TbAaSh0D"
DDICVfci-p8S,0`qdG0d2hFFUSAQfHbHp)A,MlKliXH59(9'%,maV$ppf0DmNFa$
Y8I+AFR`fZ(iNM[q)&522F#bfDhU(-TZS2#T"FGLjUNpihe'GcUL8CSbY%iINHFa
ArmMKP8%*5fK"(J1U!qJCa8DAmK8Yadq,&Rp"HKHdpHL@blbpJ'#dS-6pEDAZhKY
a(cp2S%%L(kfhdqA+dKm3ULlXSK[[(VHiV8,rK`ZEDafPNkYb)X,%VM($V3"bU`a
22kHjYBiFKb#FNU5pH!&"&@$S-@RqmDkAh[$lFUp6b,VSCNqM3B@FJ+Feh9ZU@11
K%9kZj)jB)Nkc&iMbce4h)FE3!a$KVFakmMD&6m2#h&VF%K$(LFqZEaX3i(k0"Y"
D0l(dc4a1#j&!,0r4$+S0T1lbV[2#a[S6NC1l'4fN!$3-pC'M,j0*-FUCZ"@3!%l
&$*rM!I[S*+3TT[X0i&&-A*BmlkA[9H(UrN"*RKHGI+Fi+-MHmHMfIK*`#'Zd#rJ
fH9b"3VUM[T*9r,2UhC+)CYYKHe@e2V&fTRCfHNkII&SJHU,3MrDN%2S9*M-h)Xh
Laf"@Yj5+-9`(m9@@b`J3*9D&k0E4%#iY'a5Y$@BK"KaC"*HF$b(Uk&Lm0#ReJP*
"1F6LR"Uhfeq1S8)`5l-K"emm`i9&PC[cLDV6N!!i*1Ip))G%!H9#L*!!)#3YRSc
)mDE",*3AU!`2[JmL$$VPha`mRdB,GQ[j*3GPT3SHU`a!MQk&[+5$ZdcK58pm%K$
rPU[3fmr2D*Vj$Crd'@5j(Y"mbD-,JGmkkc"-Sl9U86[&ZJmT[cr$b"-)*JK+KLI
0((4Z58VTrA[24k2C,'LH4CQYmKq#kf!ZAFh(hS@Dhd8h#+lX@5qJ*clP+GlTb65
cq2KFcEV%VhV(QGH2ZUe5ZdG!+[Sf*E5Q3T(l$p%L2lY#Ga[DhCXXFZp0ZD#QZJ@
N%9e1f11GpV`ClA@AlYAI4pdM&mAfkhapMZ$KU4rIS2pJJBVR1ISj6GiR96KV!qT
Zj#KCd,8KNMSe)2f8CQ!b%#)-!IaI&XS0Fj,H-(fH8fd&q8RbZ3Fl0A"adH8)%(S
T3[`hPUFR5FI%ibQQ31A-m`rA`Z$6Bha"(r9l%UGi3LQNF$-9ccca+EU#iijfrMQ
9YlUIGAfYL3i*5m524aUSZ``C)pYp6ae,-U((#"'+Qr1A+A9"EYYlVBHYj3!G&,V
q$5&e,bB`GB0"GPT#I(N0[YaX1Tc&lBa3pJm@EDi@LlNc`Mda$MC$ELjmee2!'9J
pr0FCh%"CDrS"H0BcZ1UAE2@+mhI4)QV0'p'@4di-CdZBh08rA4(U1HRbE[+!&P#
fBl$6G`9QPTd#fP2f`a&jNN&da!rc#5M6T,PdAD&QJLU+LR6Y)ATak!fRUB&%M*f
J*prfZE@IIi"SeRjEGZ2pDh*e,8cPP)4p@lUJLajVcHkrSE`'BGH'fK%ar(HBfYd
aHPJZ@2)-54c%rj%M(UF9dlpS%'Hl,#`0G2S![2T[h$(%br''P#mNX,ki,52'CI6
*&hfA8"'(1l6S!hCI)f#MH!+,QiiN%hI"GQb"SV5`8*!!2X@JKh0Lr`BBAi!KiX5
cH"kk)5@3!261*UfYT3Je5$kV$5$2`H[dKaIiE4ll'TPq0MaqN!"bP1'R5-4J2Y5
I-1jp$9)j'+U#Y1`953$)kkq!#JQM&T5Ekek2[#I69hr5I3%KU2Z!&&pJ+Rp%D4G
-a1h*j&bGTTHKAk3[A,!mj5"8C+laBZ6'QHX9q$2i,)Ei6FGDe45EpDL8"0Im18E
mF`'LNaR$h"!3cl)4&9@kYb(Je&36"3Lf9#*d*V2JG,iiBCh&aIl!)$j"GrX+F$h
EbI,Gl8flR,,)[RP9`M4KS2akDrE@daY[BST$TeK,-CrY+dUV+2ZY'$V,0k(f-CC
UP!q`(DZ+kla4BY(GJ6X&Z[Ppe*TpDUE6c)"D%"RX&j%AkMCRKYKV%f*$HR`VpkJ
X346THYb2Y1rZHF@l9XMiRN4L2X[Y*Q"J!##T9,ehi(R*pT0pIj[rMpC43&BN!ZX
UKCRJqqIAf+kX2NijbEb!eRc2h5!%N!"Hj"0h4VU"j$F6m*[GUMCC(f3jZ2kqSAK
BdEJk%`8rp&m2j(Qk)"fcD*DAqa%L4,!kkEXG!ePrL["f#*hQlBH&),RhV3'D$L2
a&"D%d5&!Z,YH3Nd+2US,0hE#0`AmKT8ZQX+PHF*E(KU)p,&0l'Ec)SDe5)(PeV[
I%F!lVUk,YqpR%l%UH3fe5e#`hd++cVii%9,A(EUe2rHFJ&,#F,6"A4ma`KY`C[h
)RLpk4&6#F$V,54mYCN$)06'8Zm*H0(PB3Ya0#`0*Y%"QY%42[P#phAVG0L,-HRU
9h6DXdGXLPXr2)Y'XKcbT`KL25SpQ66"d2Eae%$5lfa3Q0@$Y3&DYZ9m,SVdX*QZ
XbmcF!DB@j#-S0JhC+8Mk+CaGHlR%LhPZQJr%X8M[hX95arM32RR9$mJd-%i'%cT
d*dRF0[P@@*Q"qYh)`&pkl3IkDm(L5J1M0(l4j5ACd2V0kT!!-bfcqeXRi[SD&qT
Ubf58kT*Ml59qHNr+L3I[1bZAT`F%,b3cj5VM9M!ZZr9aR%,lS39`22QV3bXm3E8
)TIYK0NcX&CrF9KK4K'2lc"FCRM,-MC5HMT(,'#[(MAX@"FI$mD5VlfMk!kZp1A+
EBCaikp@1PQc)$)S9-JfiQcqM8FiD-LPUR)3-kAl(TD&'I@e33cbCJ!e$A+ATK2-
6(QJVSMUJ3Sael!SHd#6$JRi(4aHlejkkpTMDcr8br-"U2V4mQY22Pa#9BJ*+f(*
1%Vcb$[2I-Mm03pJcl*UEJl3-XJ"1i@$FR@15C-8l5XCaEVA!hR`AK)))J+NHYqq
fhMTJrib6*c0lF@fj"@d-&PTiC#FZqhYJR*`-VKbmX&rdkkTr6`N+AS))ZT,K&G"
XN!!UZ5BbS*j(4$8JPM!dllc[LAV2pSQrJ+mGJ45TN!!)"21A#d8U"paPXiReq&j
r-JX-+LTN*[S(0DiN&-B@"-(c0h[chC9B5RKFSIGXlGE9BR`%KmXTb$3c1(ZHbHY
Fj&9L&J*!BlIEf"4-HdaIjf#V4)6V0h*+LV!*BIYb8)f%9*8e8p1MAKN9#R3T"B8
1&DiV5iFJc&CY6bQ0fReM%iF&iB5F*9Ee0PZ)UPP*fFjm+&S0jE8ESkF$K(I`AG%
*!GNQAeV5dqFYX&VX5!VZ)TN`a5Rje6I0HGe!V-CTV,Cj+5Hj`+4'k'P0T&VNcVF
8q,D01I4UENKp6Lf!r8EHr!2IK-kF$G,iLCcm&8SG-mS4''h(a88Z01"IplLE%hr
KXNb$D(f&,Y'DL2rC[d[jMCh@,A"1U@B)022'23Am@KRq8TmK'G4q&+JdF"1,p4I
V,"N-hQkN[HF&QJ(E"5`+Pe"YBkFel9N4$Pfdih&8kh-@1#18IpmeH2'5LMPM5+i
B*&3D5rK0S6eA*ULPTi!e!#G!dU"-D8AkI"H9PL`jkbiP#b'qIXP*rXG22'!CAIf
Q9ZCICd4Lf3I$)QX#QHTr`p!0)"`%$b4@V0fV8YbP&dLkm++dL%q3!!*2`J@14ML
3!&k9b8@!S-[Z'4d-4'lbSqk0ZFL4G$fXEfM&2F`2DL#4"m@4CZ"lbr(`0A5q+FM
a*[(M[#5Z+I"N*mTE#KV@EAreXe-C("+f@cZLl)8-()l$dml!YdVL'9"X9'6NfIX
3CX'NZE%rZj4@)EQBThSLCJ[,!Ze!`RJD3(36qVR#@AIN`R`d`QYfRI33R@p#(13
-C[Tc@*E`phH@@NF3Y)lNPUG4b%YBaMNamX%kGdQSZb%F10e!h4c4rb*B8rXK@Mr
#8kZ$`IY!@%mmFh"Bbm*VFqM,FdEEm@Y#[[pVKjN3mT))V5qG2"!FiCiE9)jTaVm
A(+H3!%"B@VKJ9+G!ERjM)AblB(M[55#8)PU(D[(FTe4!Y$83h9-&V4c&[N%j5AR
jMm,2DjJj-I**)8p!fQDII-,N!e41I"AST[[A')G!3-+i1'"8G)iA%(TVCLacmM,
S"qJm)ADYrR3"kkhba56YZ@DRLPj%Z(l0Fe6b!3EGT"!cTaSkG!Gdfa-L@%!"YAe
8Re%&42Zj1L8$DddjlAc"`QTV)(a8h8NJHY&p'"XeF-+@(q6[`UeVp10d1[[E9%P
JJUH*mF*`r41jhHehf(JFI@Xk+&C8'#BA9)UBBRF,UR-amVZRi#*``UcrhI+`)XK
mZe62Ri`,!#*kq)Aa`Zh2pf-"p,Y,'h@(RRcpY$V2#hRY3N%c*If(hCZZ&!-)NNY
f%h$jUFYip!2lk0f$U"%$a-m3ALMMGNr2,lYHEqZI-[%k23@5"k@i)L'80)2,15E
bj"k@H%,a`&iRSL$+-!*cZ1NTK`4'NpV4bkR[&clZ8Nkk6[F#$CrD-0d[N!$Ucl+
+a5"NMa2@hQBiU,L5ZiHCB0+`HNQ-XSiefLL4G,AJmqbQRNM2UT!!B,l[S-bFk9I
5'M'Fp#$0`NLi"FDX,`SX9b5pAq@G',jMk+Ie[)IKKKH0@XT5Em*J2EQGK(YRQ06
RV[URZibaSNm,&qF5JcCN#Jr`dM-C,%ZTBRJe3M!`$'F#AK,Ej4)[#P'L[S6p&1A
Cf5qqVXIU2jCC4P06a`5SQV!26*ldF[M4BH$mDDY+ak*lA42JS)#@Ml%NEpkHJD%
U`1qUa)FQ#%H3!)iHRBeN*VXe'D(`,MUkblm%MSa)2iAmXG5T64X0YUJ99e4'c#@
AV8`Ec!RU+fZfVhBmUjM8A$#0lhPMbSG$QXlXCEIM!j!!*XPAj-V!FXL2VFrX##f
PIH6RKiR8!ZXIl1D4IV9&JTMlpc#ReE)JPiB2q#Ue'9Z)MbJqpE3L)#`fi-1El,a
VC"Sj#E)%!Hk*'J,KpK9qTLrHf"KQSf#@f*8I"JME*#2K0)*BL"Beb!R3kJ@2l[e
m(e$TcM!I(F@kA,Kri@(U)8ZN`"X2iM&Ub9B'8Q6LKfdl81K`RfQ5PQjRf4[PFiT
&SQ)''59U*CS!$Rm+*AMZleQP@H!lAlSV6VX8Gk+1Ld[JcHA0!b8iRL*rFFZ@T$h
E%jkFV)CK9E6a(CD`hHM3H3TU,Cc%j)LlY#*CA6f(*f-kmh@FlhkS(UP&"-EMjJ-
r-aQ!Iq)2BrL(&V1T'+2-X1YNJ2rlX4$$A6A3PcY`,LmCXE5@F`IM#6cdJM-fl1Q
EpebNS(YA$Bh$HCkNb-d'(FNZ'iq"kk0-HkCEDR-)efb!R-qeZUDLNNrCM2$@"D2
M0lMf)hmp89PTB*Rji0eXCf*NKJ-,rBjP6A@ri&54V$5U,Tq!QC`6#,kHPi3#Y%H
r!ldN6CFG33pUp@cR*63TI21bT1HBZU@4XdELFF'jqLlG%cYfhK*))PN`PV!+Lr2
-Sp5$RkX9Klq#"jkdVT5Dc`aM+J+!aTGC(i0bTJ"Y(L(90`SqZbI+IFC2a'm-DD$
q2S"N,lP&!VBI1Q6-HI&P,D10j1Phad'KL%@8D'0r9TH5)V"5L2ajV-X1"Bkqe1b
A013J'AA6I5RS9d(RJX(b4VBGf6-*Dc0)ePlh"hHDkFJ%&F0J8H-A)KAIG",p6iI
823ke'CAJL5-@(N&aU9(Q2J`U9fH()T5rM8DUqUIcePelbj8'aFR#Y$BMdJ2fS9"
qclifD9hP3[0kQ[1@CV(Si#qAM"D9*A3f*A(rFkLcBa8+N!#rI$PTjME&R)*fZp@
cQ,1Bc2'-eGZSF-Acm3M[TIUKlkLqQh'+Gf8-jC['0l49aXB[YHZi(iSaIea[rYe
kJSR(pLD%D[VAe5m)[UddrRDkLXAi5R[8K[N,m2H*Hr95m&SGrbNYKL'eMDBDmp"
+T28PhCX-@3`pqEXMZZ@meX'S9&,+B@m[CMpm5+5ePa)LAVd!QK@FpLf*5#j[HA1
5jT9llqTLYhlF*li+*9fi&NfePkYQf+TIi&C-C+U$c&1p!p$Il%ZJI#ee9IUDSjS
f65d[lfhH!53E%j,[AdaBZU*%AHkm'!Zl2hAP5K@!5r23FA1aj#3Zq%[*,9`8@He
G"D$$Q&bk2R96eb1$#l!HYLrNY!Mp[r[6Y*J#HqQ$"0KH2L3TX,Glal3pZ2SfS"X
R4r[FVSS`2ZmQ&4E+,)&j!CPr*FbUU(Z&fVZ3!"T16"$)pUad"Q+i!'mf(%d8i1Y
AM(D)5F$JN!!Z1N`Nba[4@jVp+q90h[flP@*Rapp`mkc9XP%a#Y+lC4PZ!CZRjf(
mM5emZCB*pCBTEYEY#FIe8Mlm6R`TPbRIdE(cA#D(MLEHk2l6q*8iPbPQ`SM$k(A
j@[b3!13Pfj'aPIIV,0FCX$0K@+V(8'J%(G,Z@FM8A1ZI&+'R**k[l3riQB@UPL6
3aY09peh'rH[4`F@*Y5B!%[H*8DZHUeNkA$XY4S@I,USUQp1l&,6MU-LL'CBC'mm
#ab2(3`Paq&$(@imaMQQ)+1X'@KfTmaLGjG[+HfbI%@&@+HThT&@C0H5X-dl0hrL
%TN'RKMh0KC!!PeiZ+#6"%ibTGNZh&#S3NZH*MA+[I-+S3KK0&*G*3`&Y`iLJS')
jq00E1fjU0p5rV(6N-pEM)[TSf3[f9*+Vh4C-&iqML-@K(8fN[pkrL6aYkVbdYZ8
mBBP#jmF&GmGiD(l[lm2b&E$@jrZ!!%'#m,6SdAEdLbS%#1R-NePdAJLcF`)EN!$
E5RA[M3RBdS,hq'c%`*PXlj!!k0-BUJ-jB8dDR*l4ZI52#-C#6KE26P@+$Qd0,6L
$*)A[drP&'-9Ea6kZSI%GG6lLi'B#9,34mc6CZkmfpP4M2N9DG)NmMU**rET1VR8
cbCj%E#[(brP02e`HI"(TSXhd[dA#aElS!K9FQ0rM%%GBMm"&a[f'q[pKQM#[9D(
SdA#m@r@EbHX6#C3Vij9X,HPCSQVIj6Yb%d0(2qVr(Rm@0SSq6@I4AHVM*q$[i5l
6UF36!f(k2J3)AiBpRGE6al3BX$`6mq)03GmM1QU+NG5D1rU`eG+'eUCQ,+4k2`L
Q+L@!M%lB`66#pfkj'IKX'53Q-h@9rZe35QaXPdJXchlS%4),fqEH&ZVCY"TPFf#
@DKKh-SdBpE58E&N(VUZ-(5)cQ3PI"[!G4jNjJ[%#Z3e[e"YELIkI0R"Z&D*hMiQ
j"j!!p-&eQ4+0RN96X[T+"R00f,"-2JI@lM-e[C+a0B0EZ%N[jYG52)'$NHJTAZi
2Ip(*Q!K%aBhrA4(KqeZ'6DF8U0mr3+qIXbq@(UG*k%LZM`5Xh*6D6J"FUmBIRY,
Lj#&LYE,@IVU)Cm`ZhXQG$P"aY2iG5re,Q[GIKld-6ck846d,)c*CkIL`C%KXq@k
["(JrZ!`V0F!G!hq6F%5+fMX6q!efIXYS1)pRIJmiJQkDaUQQRKiC`UC!r*VmBD)
iVKq3!-(*4PZfriKGia`63U@0F%Xh8iXQlc3ASk&i3!U&FZE8%SRQafa0ZQAUimh
V(PH%Cj5l@p2e#*QTa``'"Qcl['T%)99Hr(Q$m#SM04dd3C9&0I$i*eXJTbB)D,G
PXi+bX)Y2*4efkG&3!mZK"$QbkdfGpB%jESe1,L5XB*1mBHCef$iqkjeU*E3Z-TC
lAZXFA$XM8PNK2Jaq5eHU[PU-k20B'81-Je#,2p(bX49&KMV1R1B`fcTRC`iZ#TL
jeKK2[*hFcEQfBi%h(!FPqfd2bi(MT@kp6LTXYa2hH8fd"Fcq([CNbhd2V(A!10Z
lcm1QD1R*(2*-`jCDehNr,`PQ8U$K(1"c9fS&XVe2rI0YIq62TreBa'hS23MAp",
Ee'-20Jl*4bVSZXIQ3REKZCT-h"-)iQjHj$d(@pi[``FYL(X4D1k25SdM50&N(l"
V!%f,dKX(RQhm5S#`01F`R1Hj3X-j[[GYBm!pbr#,RNpA0Ld#cH$+--R4D3ApB(Q
UQG95"jpjLXE`@jIpHLC@RP6f%a33HI''m,i(0B[6HQUIhfmqKh'ZJ#[0LpV+pUF
-hVD5T85R$9IBSFPNT-ql6Q4M#TDN4,922)6X)rYM'YQ-XT(6$pI'iX1'%f`c1d&
Ud@Ej,,Qi$M6%QYY9ie%QX$M"c[,p1-Yh#QrrJNJ1$kr-ll2+N4EHlMh[(QiJ(K!
F6GD!*KNf,9X0f#M[m5N$K04SQ&(+4!i[3[+YJHTf)rELj'*[jSN9C`UI&hKCe,'
%#3l9eq%S[3JhVqQY2bU0jZUf#F[Xr2#DmDP93I[6M*EASjMflX!MViFppeZ[p0$
NNDkhfq!6B24&fbGaq6d41MI&LTJP*8m9Gq[ecDqRZDQBBP+5cM3*[G!F6(dbp4r
LICl9MUicQ9bC&!+ZKlV&ZK3)jE6jNj9RSL6XD#"'FiH-TDf,Z!mPH)cfUJHfPQ$
VHM"#L+)+mjp'20*Z,+aU-U94USH'BY@qUF@dQ&`HG(*8YSbJ8ZED4f@rTlpGfU+
6[-EY[k6&par[JLhcHF3$"+-3CbTLY&)TM&D'Q&!ZTEe0,mehM)GT4XahR2F1B'A
@r6+K"@hE#m`MIf6U'FLijPNT--B9%pN`4@85-i39qY!le`V4Nh-qr8NfIm'mH5T
e3D@$A9iC"d!$b5dLbIZGJjMPa#iX0f",VB(#d0hNDrmam5"61%dhYHei+6VY[Aq
AVKE-,Ce1jE*&RqAcC%jGJ$pEb%CS1*IeiPlir-f@&aedZ,Y8H'9G((r(YFA&2G8
E9K)BUi'")+ANUhkE9-U'GTJp!DU5M(M"b)c"QfUmX3VENk$rP+VH-KTQR"MJ80U
-$X+*)SNXpVcTiTY')9N2pmR4E$5Mk![rIJqX(iDdKdBAUYVH+%j!$4bNhkYBdV6
XT,fNI"#&&TR2%I6+haL'dSRlTTG'DRD*KEr2F8kcC[5[*-hHFAFF,IqaQ@"rV,[
b*ckR[`QFq)8$LF%#2@qIbfU("k3'Yc(!N9$DC08,1)UCB(LhPVY2qq6IP4irqa(
Q*JQi6Q&#SE4qCDIf[5r&Gm33--*&GPTDa9e2a4#UMfpVf`24#aMYh"#&DZp0P[$
2H+MB3Nd&i@2a92ES'qh#AjqZrBpf8BlIEr&%V#pQmZSXlDVER,rI99B(aELRlC+
iZP%$`M+`$0N!q'2BRNfU0#9m#&BJ[M*M#h"-SCpUHDHhehC3Id%)[h1XMX,%5Il
#l9a84#'PD*5c`3&6#33-f[Uj,X51G4$X5XpL)I(fK`qI0kj'b*PpG'X`qb#")rD
H1MF)'!T*Lqp1P$0dZ0$0#pMiYVc))!R,H'Njbe3ef,!15Dhdb$I8G$NkEa41aR,
ak%Rl%EUeh'K"(i*5YKfrFh4(DcBk"T,X'aFGZSrrCG+AEe4h@&VP0%bGMM(f'MD
Pb9C-e)kHZ8p"*a`[5cHbErZXFBhPTad&41l"GZ1b[dfLiQ8m8)dk-5A1-EALjr9
#,aRdSQ)U!m(TN3+S-(jD@CmFZ%1Lj`-&fVVTYp4`J#DV-@lZ1$1II!12BHMK@UN
TISkj0V8#"AMleFCq$NTdRcNmQlISr!4@F,Yd@AiQ4[ABAaMh#M$rQ5CMUT!!iaU
3!&bfdZ)+&$[K`mU6*+fMPpQ+NN[#DBH2pR"m(2Xm!&k2rk&-1@'')b@h!M()1XB
fa29P#M"@GP*6#NXTIYNhl0'*mGZp9DUi)"4p1$'4+Nmf!)Yk5cfe(hMFbJkLLek
,bi"Qc&U`r(6aGa#13)G,j*l8BZhG(*l$mRKQQFZ2[32)pN[bpXN[hjq`*2di,f0
1kb[5R!GEILGEZU)f@FRAqb@h60%qZ'%R'MTjZ$kr#91kC++`9&[$5PS*9e$!Z@J
,UY`Pcd+CKarlQ'SSaPr`(B,Lb"9m%RF`X5)#p&4Bec5S)q$T5EM,pPQNAaGIQ(9
fZF9k%rkYML)!@(l)!DrPlc1F,j+*d)EL*h`,4`f%6$PMeA$@lpMMhDU2k9#-QE,
)XL)+hF(qBC6J%,F@U+#b&m0TIfAC(MafNCr$U36!ITDGTP5c,l+8STPJ"L(E+)h
mh0X920a,45N"661!i,&BUAM$M*bpb!bCQ9,`S&kNDLRQeQBmYh4F$&Tf&iepj94
mBEPMP&NKd%$#X'+@9NRFaaF"ACArFb6r*MSNTaFbZPpJ8PM0llSZGdj#)TS`5+f
k@8AT1l%`mRXG5G8!,p)@Ujh2&J(jJlk5602PSHSfcl@%i@bMVmpDC'c$EbRY[3q
`@fr[d%FUFLAF6@6kJ-[a[DL,RGM'5jj"ZN4Kbm)5lLH5R@,$U9Xc2(0YHPe55R(
mVp8D1ZUl+mHT`UM"-4FM&eT%3NSfQT'Mal@L+Z6`&@[j3Eh+P'p+FX464"LIXer
2SD!9+8EGaa($jV+Y$mbKSNA*&2B+f,iX3TAmFV(eh1r'4FcmcbcAj`ceBS)GD(,
ZPpf!Rm"E!AP3R')U#0R"0NCb(5IJSXj3-TCYJ-UU8(Ua)DL+$ZEZ8[q'P5A6N!"
b!)k3!&(bNRbpM-[KKPH[`jajd-P'PiE9`l`aqN'DrNrGN!$KDpS(Ak&MP-h9#P6
I!6Ih$MB1KL2UVk@r1#ZM$lj4'l8q*i--)SIl0m)eMm@Fp0)FdZ62MK#Y(0@l(8M
RZ5PHE%)Lmdh$FI@RR#HNR$'PL0c(XX+j06peUPfLaNSk[L9GA9[El$Ele!`c'9E
(ep[-c[+FrlE2[RaL[T+$X3G35LJX&B$B46VkP4d0XeX!XCch`ZN`0PZ1DRL1rQE
eUi3$e9*m4flHZMVEpYPGJCIEe%H@Q*V()beXXU"b"HU#BV9N[Yh)JGd`6hP[m`9
d'ETaUD@k@P,cjJbjILe,HFH,QZPJcq0E[XRGTBH!de,iCbr3qHPi3aM4,MkZPNG
$dU5'H`2hVX$*b46H2P6545(N`Q%Q&eGHkS8'[abJHc-'C,S'6pH+l"+[@Jeb#q0
(`9R(`pUZYHRj382+(5DIQJVU(c-h,m1ek48CkM4*q-Ba1qbjlmIeTThP@!)Tl`f
iZqleY*S(pHfKem8Xr(QVLVe&`)cRa%dDfP4+P#FGS5A%H52SR*KaN@2Hp@bL!('
Y!@F8VKaMA3MP!NVSS!dbC$P5`(j('C@`rFkV&$bD"&Dfi[*ceQH'hbPH+5p&#84
SE@I+j*RJYDU!YN"5hBkmr[`,EVi3Si6mjiR)!S1p#+)fi*RhbAJXd0!35Y21!&0
lIP[HR8YiL8I6d2,LIdiZ3SA1Jj1HX1pC[Yf[RDLDZ`Z+RI4&Gd(UNl`k@5Aq3#i
f(HQc*YQIU(G*,jQp56+pB$+$p6ef3@GfVlEZHa0jQ*PGjbSaJR)9,S`aN!"Rkf2
ecS5SR+(8(&pac0-"`02")CQhUMA&"VE1@lhYKH,!4`5p,k6BF4cbLC%FA23&@9+
4#[ae'0fqCKc)H[h)Z2R(`4d3FCSHVXE30VCAUHCDK*BLIU#2B%A,YT@US&dM%61
#!H!rr,Hh,JTNBq,`8pX`[i'Z,m)*kB96(pY&9H,2[)"NYbK@5I9Q,*RMMQ1aEi0
$"1V@C2[$1XRbHq`8BHG1#&F-f4ae-GL4H4Ji'2'AVL3Hp`dE'26@QM"E)ZC,EFa
ecIiBS2CeeH,r"BqGSH$EEb$PS(BZ$HC63V08C[dcAaR2VN+Qq1Q&NlN91SlN0c"
mRe,1SdS(ap3IImH+Up5YJ&K4JmI(EeUQAI0kree8Kfh`85+TiNMD$#2Q40K$JFd
6+[EMXYXR[Th+TX!%LL%XIjD!"2`H09$H2qQLZqGrq-p`2#Qf*mmVdiTq@li+2AJ
D&hRp,FIdjV@XS%IqNiPjXU!HE-i@QCed$V#0#1"T&"CAc&V1YhPR3C&S)dFG#SU
6pc&q$kc('1ifEk"081"SJ)rj',+DSK%Ycb-@XXTUjF99Qrq-@A!N,R((9Q`$jkP
p')+fr-#pML#kXG1+r'LlHBbL*M2698ZFEj+$)a*-H[rbGTaXcJTb)qY(2%ZJIfk
kBjZMfd,AZ-Ghe1[FQ[I)2CQ@Ic#HXCBJEiZP4C9-!GlmAmG2r'"E9mHlXR9DKN+
*JFVp[fEZ+-IPEbmA"0UmNTJGYRX8ph*2T@eKpkARZK26[X)a[8#1VRQ@L6mNi5!
3Z$pISQ(*d3N*$GECVSYj[3AC'ILdkYr%82iqFVa--8JIH2cd9HeQa*!!YhNf[4l
Tq(4Kdq+CASjK"#$J*1Sfm`Qq[#ZNNiCjAbRH)DZJ32`C(G$J51Zbk*f*%FGr+qQ
6NB+fT)Hbp6"L2c8',c'"bUqee$V6)'qBZp+j4,",MZM8YSYIr1L!c8E"a&2Ykh%
KJ)5Z2kQ$b"fZFA((XGMe9#B0F-G5MAUIkX86*dka(-A*Yrb918"22dGVHT!!MIQ
aaVUX84p5ae$H0Ik6Jjq,`aCGEGYG)NUZ)8AUaQJEdV+C8'GGP20J0X%#5RqBf3X
c$N661&U'm,*d*r'k)Y4l,VlEc&imB2-81*3aNhQ5DmHbQKTNK(Bd+i4hjU3YH3B
m35pfcK+,0cr[ICX5FPk`,9aS-Q+aeSalcRq8*+-)Z@p*Zc1miZ9a(VkH5&E6)$G
C(#dr5I0ChQ`U'Z1J-he6N!"58,Ap(Zfd1Fj"JH`3E0RFqek@D*4#!&Q9$-0+[4h
14'hDSj*G01Xm@QKk$NJlm#a5hK(1VPILRPldb,rppj4Se4&A[[*HEQ`%h08*`4%
(MkF0ia5@bfLiTd,Q!c#edGeSTLrb8*kaXN*heADP'+LUqKr6f*RTUq@#ZXHYEk"
RZ,%f5Eff5k`L'VJ`MPZrFVdf9!A1YTk$1A[9B#`D8KYPBV!P5iqa1KhHcCTKfN`
`F0j&#[N*l6(Fq`0q*0)jFE!YClmf'EmpZVTfpKq(i*AMJA[M3jS53U8d!f24blh
Q,%3SY&HrE(@UY2kNUAMM2*VhhR(V()X2$P)MQK4YkcU3!,ma8VP5"T,E"pQ26)*
dk,3'LTfh4"GM3P@&L)iQM@kjb)KQ"++PJ*5mI08Gm6$)XmH5DDPh"Lm(5GlHXk*
@ck6B6,G[lU1-jA46A(`h8-Y[hX09pEXUj,-$lB3ZGQQSGj2,V"frDSB(ES$S"CH
GmG[MM&X!,Ni5IQm8"CQ!0mYI)U55D9efVpRaTkUf"r%STJAllMQIH(eG"@BhEAL
VGZ(+kTDPqr8@-Vafij!!*J0hSKU`f2IY1i%mCh#h+fV``RZUF5Ve+rKYHp%MK&V
KeF1)Ki4Mf+feEY'MZ3kECf*hT(,3P@VBZDr,8he`EkiBSIU1R[cTPPd'`$X1K%9
E!$3ZNUSE&38(e4lMDH1cdK0M&d$+j($r%%kR&LBaL@i26-"e14RK@&B1U[a1FJ)
23F(qZqdJeqdil6fA-4MaK@"N5IK1A88rlHp!fh,6j5#5-ffm+[2!rE0)3-Z-F4h
&SFK&T)DT+qe1+Y[!3F21V-i(GTMbljeQYdXB2EjZqK0Q%pe[2mA!XGGB42T&hX0
CHq3RfKC+F`8@ep8m'FrPNDm-1TPabG*NfBL42$'[14-`2aK&JKda+``GCA[@KR$
1IDT%LCNA(kGq"mGR'd!b910!#d@EaiHM`I@82NA@EV1%dX")T++Uba#f#NXjCj`
c[b8+fPS01VF(f+NMYUGV%P5(&5rd3i`[*@$65lDPrpCEeSDN0Z9I4fCj8AD[!&6
ZYThb6B+81Aa,frYiHVNkkQ+e14Ja6Sk9V5eIaY$a,@f&dp&4#Q[YS($Cc#YE8VQ
T+'Mhc"VikSdM[Ti1ChmM,6SJVPF@3CMSq&c`Nl'6hrD1@Jfc-KdElhAeQa$4(k)
5VLI@jU(0m8B[ZHp(rU*PYr8FlMQ[h2('(@D)KU)&d@f96JA+5m`''(r50bF6a&H
#J"kIP)cXZ!&&rMRMZ!CdM"LCeafm(TZfml4,+SBUmERk,LQU(*0S9+$4[l&Q,9C
TCP0K%K@!I'5Qk!T%'Nh4DrQH1FHk3eqdBA-[95YG%`JD#VZ(SSDb8*)%$4)kMZk
fj@PYS*DmR[NSSUqCcE2hFX1S`+!kdq4%Sb051a0&CjC$!$f'`j6TL#da31TK%FG
VPb8MUHUNfh`'qD"RrFCk&L1`kDV-c"E%#&938fk(!aR&H+FMV'*e25-mE&Q#pbm
X'8K$f"IR%@R&k99GN3Xc22F8fZNhUh2aYD&L-""E06mbkI$j4PPcZ@8),"kSdNM
9YU!M+@"0S2FRP1I,"D-%%iZD0V#Z8@K,iPcI3TC'clG'%ie'1q#mP$iT4p5*(8e
R*hXL%R,HVDbi`2-e-VAC5!B48p-bLqY`%m&cdS8C#d%Rk*NSm$UFEfD'N!!KX"N
`I`ZYBNme6a*1h8LJFADD'Tfd,AJb#f9#qe[F3qkH+Ni4EpejY@JZRZirb*GRKa2
2S66Bpbl3!d6U`AK`00[Z$h*eZNT8I59J6fq%i'KcR'IdfkcSf2j"Ji&+r3pbFVl
XIYT1FLXQP388ZjP8)k3+GdD-V&C*jZm9Z3`[D,!k9bpG%JjJmHIL*r,$!Yq-T3k
k"Vq"Z4#,RXHNIq%#jD"R`HM"14i3&(ZM3Vi[eEjBM8(FIcViDQk`KNSjTNHl3aZ
bPd!X3f6'*[&SL,M@&aj)ZKk'q$c-eUkf'6XJlZ@4CA$Yb'N!iNaMfU(Rpp'0L(6
,,E@c8J2imeK6Q`dAe9lTShXPJehLPAqC+,dcPVRHY3)#C'A8SP!#8UAr[FLmA[Q
3!1*eMIF+[TR1mpBr[8H"e`(6TKhAVZ1ZUh*bJYeb#3h$226!RCTLS6b8LYGiI(&
+[KfcP58f5#V`JC*-qKE!V$Dd*1E&3GNRp5[bJZC@e2fH4r#5(B#ea+6q1X4Rhhe
$J!+UKre3EZcR,LU+KBSMF5V"Il'9$mkCPiV[*1-A3&3(8UG9B4JAQReE4!6r$6i
"S6dJ5BhercU(d!N(GR@2Y&A*9X3JrCm9Y!6E,jifE1Ci9[LGjT1eK2G34KiDZ2K
UR2q,e'bJ*)iVpDRl)lU"&hY"pG[&D0!Dc#Q1-Y5"i2"%p3Hr(-NKA2hX2Y'`p6B
fqKE'V-S'lb)M'"#6mh[!aHX2,e*##HV6m46dbRmdEeqpC[Vp@LBHVZ5`BEB6fl@
h1CljhA3Ymk$5RG)jeUdE'$q56m5IeBCRp3'5pl8X0KC$%,Lm4pM+rRR6Lf%,'fN
2'q6,($LY)4d`ZfD@3!LB@PX%+$3MXR9IV*3C9DK,+1qb&Q2DaZhJ)#-QD&kdR'Z
m4Z89rdHr6!9pGQN(YZ#GBdUhBci4NdRVYGDa[J+haA5*djBjc,jCkppYe`4KEj6
@S0b&XN-qAPQ55SpCITVF+PGV,XU3!1@4C8*,4hA-P1HaX5YAIC@rZXiLiU3'DDj
6VfUk9'rU[UX`LhS#ic+fiDUdFVJNAhph6)ZiA4drP85#YCDKR3UM`*&CIP8GS#U
[QGD%CNLUR`PX@C)!,iZf6-1ADlVZ@p9Z$p#D0R1d,S+R@@qDT1bBle*9#EBIiVU
[(d0rG22CS5f@S&m8Z`I"%%3J$$MMb$Z)XiqSJllb&8BK(H-iKISCl`D3!'58a0Q
2-SPV-qcF9)[)!kSNL4#HAb*41bG+*KAi@F2ZHI,++T&6bHFpUBI"i[)G!",Fc@`
E,fJ`%0j$"KS@PHhVSKrHi@bmdrTB3q&BfZAeP"r`pqB(1Tc,Kp2!GH08CbDkJ(K
Pc$f#N!"'h#m1a3Uaq&81E0RrJ-FckI[+0N4EmcBIU4*-!ZPjljKXQ$*($JG@lXS
IY"3&U%l'q!X6rAC#TTESPLE,b8[IN!$cP`Rb#aeC*S"b2DBj`BLVjK2kb6)LdpZ
ZTRhl(ceBFJM[ji*4c*bQj#NI08+ZMMY4rlR[QcT[hIJ,8@1#[D"D&qc6B)dI`6+
[@"b6Ar!i-fPI+$#dHZ#QdeG)825K[e35iT[-S"qU$FHX!kl#+YPH$fNc3Dq&KNY
,GFe,h1l[$20HdTp$CdJY0S"bj@[iM-aNb#aS@EVQ43@1,-,3V@cq5)j9e,jF(Q3
aY8M63X06L$KV-F%6UlIq(p9qP'*)MEp&mk$D8'FST'2[L%YliD9*6fP#9lB8BlE
RjYbQm**KB3KJP[Dl$&qZ5fRh"V("SZ$"p8h$$R*[I3LLlE0cYTF396JD[UbH[Ie
5X`fYk+Uc@H@qU$*a)e1Uj#8ha0K1S#ND$JrhYC65If%@9aKbQ)2*kABcp[LQ*aj
$S$!)jr4$Q4rC"Jh@MI5q6FDZ"N*+Br'CA##H`@YJem!IJTD$BE(pXm6%(Ql((DN
R5je'E$3ic6)c!N)+C*SBk)K@[(X*KN1fYHZje$5mrHM)+QK4*5-HF`b-Pm$YmdE
)UFS-#U"b6rRJ[*iX,DZBG,HF&amf%6Yq'Lij##I[b29YCN4Y!&GZZPkQFB1Q`pl
@9NhBhep*3@ZHfmTVk4NUrDC8MB`-rl(dBNYK[4jjS,hD*Q#k9Sb&NX3q#5a!)!L
XYXk4dpTRe2Gfmp2@B2DQ5eam0"qkEU5JMZE+BCmb@k*SP1j5KY40DYi4#Af3!")
q`VKj2U9qkf1BYpkaIMDK!LBfQ*X!TE8RjjlJ`i16NZp+Sp2lJYm)9)El5Y2,JF2
ird(PS02`'($!(-IB(U2i!k!1JFe0cTQC03hI00e!FTbRVepGhC%6H-EJ'%N0abi
)iVBKiL`hJfBa1Sj!`KbrDI(BB5%%EBLh288!XK)MUHdYbil@CZ5B"JN!PFp,&%c
'&2UTeH&d5k#r64Yp$28pUQhJ[m@FB43e5cdm$*rG%,d%NQSR6PI#-+T8%hFGDd!
jI#+JhPCi"CU-`B8fPCQBrL+H0VSEiHD![hdB3m1D!'%P)bdAP`ikFBLJ*3c3rYT
e$J8'F`EV9`mhE'@3!)IFBpJ''VUFqHcr-41+-2hc&3E-VUb6!BR)R+Ri-Z#R@3p
#Ucr"*FI$B0H!F90I&4@Hfrq#RX1#qGDqUbN,Djr6dXT[JeRU,"58kJc#(A5%K8"
rm#d-(N6lBC4L@@,0JQF8b$IjbQ4C`(*Zml"S4Ck59C)%$F'M(F"JfZBqkalM+6M
5RLeVKq[rjCI3$rJJb2LFGID4b,SQaI0#ABCEI9UMPD-YIj`+,C+2kZFQllPEjSR
ZmP%Vl5mUB'JF-44I9*J-D[jHl)!!qJJ2@dL$*%D)qV9EJBrL5XECb,TcTYN"2dj
9m(M-eQ4l#pLKP,8F[p69$dV3#*fm$QeKFRJKbbRSF'$bb%(FVdh8SCrrS1m4D8!
3!QJ5ESj`!0KbR9YL`AfES9Z-V[fmiqDXhf*kC$a9k5&MfB'FP$$`D9"I1e,bDFD
Sf)%*"S%-%TK3&NJMCGr$,S'CPpQ%PD++PURPJUk[qKQkA6%b8mmce1UR)AF*IEf
rGADLE!1+e0LC%C+8X4Xa)Zj59&VUihkF$eqXUElKpF3*)6DqbL"Xm-0a%8cd32Z
ULrRchR*DijTFHlB0+@aF%+9J-U*eYaQQFaVDQ2k[BDBJGFr8!''PR"qc+AU$j@h
5P*!!6"k&LBp60V%Gk9mSqQc3Q%6AA`G%%eR*hNl,HpMqK!'"EFchaGbDXN1J&IU
"2Tlk*f%L39cXp*d@5T%r'lq4akSB'ZU5NSY*8,K%eU5BQrB)"qc[dY5hBTA&a+#
M)HP[4F%FH#1f*,QL2Cq9Q"hAK8$(@SY2lD-1!h5`H05LeGcSre$1ALiV`kUKEeB
4b(ThrC`lfJ5XqHm+HD,e6%a*2KBl5LYMN!!I&G0#-b3bjDcj5cQSmem%V#P#DZj
hQ-)Dd8"@ENh[[fSI+)88mUC*Y3m-h34jXBk(1&9F"G84FF#,H3"V!,N4RBe*q"k
M)-8rBRiK9-F[@,Y[HMU+J54'S"@M%0E8dcE93G31M)bE)U@+PGRd,[a`3efd@$)
VAbNFY*L8))Y+'BA%UcZJLAQRcj+%EhD+LiB`48!i2%JaQXQ$1**YjT4`2Qq0QKZ
h[,q2dPi8FdrM&+@J%'G864e*AS&ZlU00D&6DCX-,D)$!*VVD6,a2VPL-$NFjGrb
F@Fjrk6X*b$D5P5Q!aVNpS-F"eUd3(0qpNhQmk'8*F!A'"L2HVY6HiJR'Ibk@SH9
L+X6LZM*FE,&6+JlcEcAiZ$CLf5ARDGDNV2[CT,m#-%B`'`1#Y1FbY8B#*eIAHVR
*M,$L`pAE,$-,TmP,Qi!Sc&Ii%9Vc`mNC&Y@I$@&3PX@S*X8j`3'8Kb3)1@CIj@"
)Vi3PLBAdeh5HB0MPCekK&qTC5!HDP$l6F(HTjq'RF*qTjLQ[DL($T)G+Kqk$@lH
Z!)D[5I@F)PI80I1$&S*MAaTCc2R5hMB"UQbA41UH5,'3!&dUKIS&4bMZ[1aT8%S
*4L$*lZVRSdS`cY1F+heFRVhRR$r*e9dT@C@QM,c6#GIqMLbGA"4ASYANDHAm8)Q
khd5r*(Dm[-&&D8l96LqE&Q#&8dLa#d4cU`"62hNIFk#Z46jENK5-&U@`!d'l`2M
I'M2H,Zl+[*!!0,+9@dK@Ck-I3#Qje4'(+-MZGe6Z4H([TbT`0`)VA"Nej5R4HlB
IV9e4leSqcKSV*p&(Pa*3*U2!EmmVZblV$,lbk"N&JU0&VbcVZY#0eJ-0Gc,VXVa
a(N&)ri[qGH3rmGQ3!(qU#H1%3($%[b`YcK@QEkhiAH)&Z,SfSm2m9dGD(@jIp#@
Zq3MTZKj!YE55l$(GQ8YK3P$c)XFIA!+(SC*P(ENB2D63NI*RiU6'EN88J,3UEj`
(qqTjdFP65XdeQHbHcTR1pBFR0!h2@JIkHEd[LDm,*`q[Sp#dEQbU0r"LQ)8*ak!
CfrpITXl-Ncqbh*41jdr%aNml1bS1P"1jXMq@AS13!$a-#(rLD$+59!NqGDGR4XF
lL9,Mp@U89hDrRV1C$PcT9pB6PVp(aeI`JR8*VhbI[`-E2FGa6AYTPDH0jP`YbD"
kZ`8I3UVYCZ'lZH3Gf+HDa2,HdT!!P%NMLpKdFf9m*[)a8K9BT0bmhMAi(0FQq*!
!a!E5$3R0[d'9iCh-[SIe0Z1[#&*#l1NH-&ma5+&B`!#@HP`9b[hQ4B,FE-'d&5A
3QX#NRKZ%qH&ZEALqRN3Z#XJ)'YLb**Ri,Lh-L253!#"2rdr&Ma5QZ,Z9a+4Cq5A
mIVMZG'YD1NNTAME8k2VlKHap0`B"kMK`M(QTCaHkYarCV@FmG@p-P@MmMl)8UKG
d''3[QbmcmDd3c5AMG%'Ml"#N9(D@T40p8f$BPU'Hbc4NFRVMfi2EGKpEGY8Aa[%
)T#*eE9AR6-l[DBE(eMHDYLjfVE`G9V*!(6SA6kFfDb@cRbQfAmm3`N*MeUQPcd`
qmIK+3H$@dr2R!&E(!T91&#ZMclKaB6-@AFNfTJp[-8)CQe%4(6f5d6LS3!Gihd#
(`X-k8+JG$+2m[)`LdV1L*T*AM++&bRACH31"@U'VrPbp43hFS&CJ%blCHmhl(@!
4#4Edk)FiXZP%$ac1fr[l([8`E4Ia&&D3!'GD*G2#+!PK!eQI-UBCTL0YFYITmDV
bMiHU58Xbp+#i)bePpk([6-c*e+G-ML1V(5lZdDbibFN#$9jJ52Mab@"6)R+JCq!
Hrl5l@UK'EFq,63$&KQI2H#r)JfI%J%Dd-A"$1VVM3Z0@I4TqRlm$@R(XQ%i82FJ
9H19E"c(H5(DMlLRRX"#XJ-)+[$TDDlhU#,d&5q68-(j*Y'#VH#aNk$r($Vc-&NR
cYIEh9-Vd&c$85S+r9ihc59Xq'RCKK39G3(,3Aj-fm(LGM,karIGp!6%eQQLd0VG
RIi&b!Q#c&fb1'81,&d,hXEdp&I[!+$N*qUqCX8pF[HY3)rT)A5M[%`cY5F`XpdP
dP3eAFdRNKIjEZE8p2)BZVFbY+EE1![%YrYUPP8p5imXac-ASCJa3IThl%8eGKb-
fU#BXCKqEZa3rrMMd48,CB23iNi9FiB01a(mKi@53!0HDJ'dYkKR9`cKi0%4l,'+
NrK3'+3p[l'HD9BH%d-jb5ehRU53DHl5"+UaJ3fmhHAj3+HaVJ-"$kK"))a`Tm-+
81K$(mR$L1"le,3JddJEb,3JqdGQpBA5Q103(Y,2,BfG4`-Z4hdBAa9YK-QeMBh9
+ClCiUa0p$Q2&(Dr3Up,E)C!!Pi8(85V5R1lmUIJAZ,HF+r0M8pTb%P-ee#!#$5H
Z,6+bYk-BPAIDaV[+Q%2b6PYS!5Xlb6,3&B2Bka)Pl9S'-R-QRaa2R`8U[3`ka3T
@%`HUNj`I1e$XHRqKj+ek3Zp4GhG51M*RV#*4X)ce+FXSkpTa4")IJ3K'Cr!jNN'
f4(fi-k&h3Bh%d&C&1PP8DlEKle-`+22@R+d-@[ee9h+pfk3P&9NFPRh5#'!Gf'V
DrNIir50@V(R[CHiqNh5#Cam4"i@q--@Z$D4"!K5SE-3Cj&pVS)TC!b9l+bF%cIK
C2k@m0h@pDQ60$VaS)`"M8FSHf["9LkjH@@bApRp@eb-'pe98YUkUfUr2KJJ2JYh
"1kJ!+Kk49le`J`aIjLKh[fUD)mH%ia2`&@+(PCS1R-b%q2&VcJ&*@%%pi-*#$'(
XL"`YFqMaR1$e60YYYe3lH#+B@SfRdS#S8&!0KehBPeXTPZV@E'pCkb)IA4`[b(D
I%eB*U"r&S8f`%@H`EZb+3)`8jM9G'8%!HTd+A@K$[B9$q0)A9!VLMiIE%BDjRlX
A#(`C8a(pb[Y)%&%$cb%kZpIrd$@C-)Bkh$-[$)ffE8Xj46Q"!1J1aTNM-ERV$1i
4@rCT"%E2P$(FZji$Q1TjH62rJqbBrqcTN693dmQ!$hQ6"hTYGNS-Cc+lIES8i+2
%C'HAM"MJCelKlKLh&U`EQFKEIJAdHPY')*@9M+$SdrKGMNE[S(kZ"d(0a-Nf*`'
UV,d[eD-U*Jp"R3`6*TpLYfd+[G*-@XZUBK+%'U@dM8iZeEeG6iSde+f@0fr24"3
NcA+M'GU3!'G&$`P[2Qfa3+9a`mjU6pqqq#r5`*351@0UVB0b*hp@REM`+eQ6AJe
c`2e&N!!PJaSVKq9PMjC(4XKMj9lfZBdXi)ki8EHq0'200lIZQ836p,P4VIHAI!N
LjcmA2'F$`Ga[0SD9VB#1'ca!$XU#JbB3(1r9U12[#9G,&-r20ZQBKm64BIQ4+VD
H`kZCX0kX0Uem)"Qk1pqCT#F9$B$X)pUMZKdIUP!%)pdDP)`dSi6HeJidSd8QD-0
E+8+Ac)[JYc#@3&U%FP#H4THc&UHRDbm-Ji2m%#mM5ZM9K%#`B#+*19k`TFB[U4S
e"D1A0[*S1&`,1Zd22RZ[e[X@"R3hTr@9LH2D"JMmm'JK"b+YIL5IjF-YS50Um**
*Zr"R6pb[9JK'dXH9RP+"[F,NM3eDY1'aE[JqF!DM8aU'1pB#6JL-XFDPJV[5!6S
m(&J,ZcpE%D`Pd9`I&UX!mar0a0QBmSDcVJp,XYP66d%'*@CBAM&0@PJ$#b!6eM8
Pcfef5j&hLG+4fpB&SLF'GZ2005Lql3Ze*8iS*LV6r`bRG8QHe1BiQfM!G'IVF'c
6"VSMKq4HLcLl1dFb3L"DV6Eh9q-9Z!XLV,pN%Mm"Nq-I,(99Ri9*pTNV!mqR21*
RYM2E,'fRT9d5hhER4k''j2B`e[Hq9FFjCJTQ$ljIViJGFLNUm'rlN5q$Ek)-6Eb
3!&VK2('%pZ1)rX92lKJcEVU&ILkT6EcR#0TPFIb&kX%KVeq,5P%Q`h"bNJTr$mY
qNXq((CM*MLe0FC!!a4!r4*Nk@Qbf&Ub0@SRTFIb6dcS[kT!!q@N50Q"FkAPK"@d
H,!IUm%+'bJL2YkTdjJ!e!M$+Pf`%J',4eAjIEQNA1McMP&cbEqalQ`i3&VVRbEB
rQ5"9f[K-ABN*lQa&%Pf*@1i*4Nf&IappA%STrd52p+ZYJ`,VbSG5E+RII2G-LK5
VP1UNb('ZScePcYQLdM-YhV`A0G,F1kiFd`1VGIrHY@,J,R94-FQIjb(GV@Pk,BU
YZGH@i6DIS3YY-MhMbfL6pPX2Qc$Abl-#ZpcYB&'ETXC,Q983THXTY0plXmZZEG1
TF,[f%YL99J$F#5m*FakipSEi)UK(!Xk)M2'r'k,DaZe)[5ppC5mI9h!lp!S*YG'
*pmiA@4M@C269PlmZIcFr0`E!Al#Ek)#5Sl)LZ1qb[G$e$*8K%Id98Hc%r$!hl1B
f4-Ubk0T"4mJM0Eh2pMAm#CI0#%$DdpCRF"cB`RV5Rd!@mJIFB-Lfd8ahUcBJ*Dp
Fkbq9KTUTYh&c!J`RPFJ)+-559I'J,jNLdp2@QbUARG@3!%MVU4f@D8@i@RbU8GZ
VQGQ),c*C[U2qY(BI#,4RbV0l)PHE*j88cdHjKcb69D*TYP!29A&$h+M8'`j4V5H
UNNAU+*Nm!9I'h*`##U43G$mdkJIihYP)i8riV$h*X$ZF,AAc[GBM#fei8Ma'L$R
[E4`G4!rFSca,C'(T9F&eYVC,+HF8rS4CfRZE!@`(a)DY##T0(k0@qa&9J8'&MA+
#"Vr@jqM0kP20r`DV'lE[2$M#BV@j9PdiIhh5!lH0(!KaK@d9cU2#6)NZmf(rGFi
&hM)0'i9pZ@hP[+Xb2)ZkADD(ES,%Y%ZbdSZ)I+hG&a0-N!#kG@KeY+P@M2l4cYe
EP['cYMLKS%a1VTbM$16DKTeF6fHNVlKUmqTUH2D[f#YcXPK4h[9Y5V%IqGYQkIa
*hr'Kf,2DljT&0b`HU1!'AJ`CFD23TV)Gfak20EKLKKN5VKSGJfqjhY8j9322h*c
KPjU!Gi'd4k'2q5FdCTXIaN+DCPMZAF9m%FIH0U'BM@i(BF6`Emb-'1XfR`N`,DK
#mk+i2Vp5Qpf!@e&l@B6'*@Y9`e(2Ebe!AVX"m)#%emZ1I,l"df&)mSKG5GLPq9M
ZBEZAb*&L"N&M@EbZ*8RVA(C,DlT+R!Y5HMjTC%E8Y,&elSLpDIQmk')"0cKH5-X
i39f1A3j6i#+2pqml)HLHIAIkhX+aaRT(!0'kDNe8lkpHTa*8(`rjpEam[dK-iqV
p3[f3!#*!PkCNR*490MYHAqm4HFHq5,LIp0VmXANJ)-JjRB,))+HU(pEXNkp*RkX
'FiLFI+M&5qUQFGm3QrMf"8"VdHL9U9VK5CmF&&f"0i2JPa$E9(FD0YUpdXYBlQC
dk-%L5(4*mXXcikjqPd,h9(ap*!1J,'rjfh8RifqI,HGb`D%h#l6dEF'6[lb6)((
GR8f[['S0"!YrZ9D9)d!V*3ReNjqA5"6"r"m)LMMMm#F8r5MlT*HZ66K9@Nd*@(h
m&),aT[TeE0j$!9ajR+(9$f%4RJNlDN'crp%rQDH9GNeVd1k#1VfTb#1kBHDpNYC
Ir1r8d5-f@T,$T3(0K2a+l(&Jrb9Z3B[D[$5iGR,rU6eTQH[-DFbGDk2+HUc`Kb&
Z*634G#Lp%B6$B''U!N%G-4T8G3EP+EQ2B9Fibfiq)M[iUqKbphBAKNfGS'GTIV[
&X%Y!Q,!(fU`*&U@*%m6!S9BjEa1)-9MHZJEQm!DDBp"Her@[jeJDRf$-6CN#J+K
+l-l,bVbapm8BX0"Y$F(1Ki"mfk801Y@L3YL3!&jk)rqk8"pX0reCG38$A4dZ8##
eVU9$SE!jkUk'SAD@#[AX9U5U&IcmS@'rPY&G3k+a1U0ZAmiF"TG%k#C'&l8a,1j
BKdG61Lk`IB5e502r&iX8Y"LkkjKN4h)-E`G'AV0cScVB6&PaEEpIY50'iUG(lp!
#R69'0N&mpUrX41CMhii*DI2ikDFed)AZVI!lP`D[36S8Q5Vfe2*FSd%P6TP*qd)
j*QjGS#!QF'XjfS*k(SXhpF1FkP14p$)6VaJFJ-R#hTk4I8-,eP+Z1mHaBXh6P(1
f04E[R%GIJ@rDQ"RjhcS$Eb[XfR@,H0R3YeQPaX`,e0B`YTleF1mfRe+C'K'80(U
[AhfJB+QH&4YrbTa'R22JF(NqdBJPUHcYK@CCq90mDSRY4hFKMV18hYIeMU@a%9d
KL$EM+3DaaTBfPFalZi*XU,R&,+fSpUl`,QfEqMAjc(r91jMQ(`15JQ+!3kS'+9l
@6C!!QjiN''dY`piDmYl&F-ScfDMC34"BUXGX69Y,,PJD"A3aY4L)0NZU-L%cbY%
dL&)1dc,HAl%)FQX(LHfS[c-U(TpPpS&"MaJMI$j+X3!8Zcm#&RIX28N2!$'!XYS
2(f80EcYYd*@TkdaFIa'R!+6$0Rcid5Ej3h0R3*f45jLfD92i"Hk3!0+qiNfT-8f
91fLP)"'a`6Y6jSkS0N(f"!FRQ)U'-QZG!@'9EL3EqNSTX`+9chYRHk%!KYB553N
NCV-,(&iBQ+TKe80Z0LKLHBGkje%'jB%I@UjG3F$-*ZI"1Xi+ZN@4&FAEVfV8kEN
4QjD`4TcQrR`PbqkUmcf"UiGG9KDk!3H66bap%b5&0$GhkVS!lU"Q$Nr["k6YlqT
%M!*%p[aUIVGiiPTJKedm-V$@AH-31A@q+ND$P&pqIlL`'KlhFpf++cE1qa$aJDf
&C(HYMcV%5Y%%46qRLe(@-e1"D`()GBXB+C*ZPQ#d&&F+Mc,lc[QScJCDcJ#NU12
J(G"k!eF9b'Gc0!E6,YdlaXB1UjhRPqr4mq5Se-CIKZZLHp@JX$d%IVc%YT!!6R9
0HCLAC@UY8!SD%QGTYRh*@P'f@@Djj!KV12ma4(i`+Ck)m[LL8prFmSYP#bSl[&3
Z!U6,6eeCUR*,E050F-[dUVYfNK9U08jU$,ZKQE9fbD(@-aBc-ed[*%rYa1Vq,Y2
R@Z@'E!&CZ8LX&[&jA9YI6JQ@$PZ%,[`%`Fi+Z8mM)@JbfTc62+hfJ%BM[Rh2Nj'
YN!#44cIjKqNURSYdIjFaRF!%L8A8``aR`r"C&bMV(b`1VV$5dkV1rMBPLk6c1G5
5VRk892f!LC,Q3ECRUj,"eIRqbVVI@$24bhkB0dGjHC'!0+(+hCq"0&&EH@-(@k,
BH`)54'+J(%(qLPQm5rl8p"IhqCDaSBBEjV&eK2L4(S(C!3dq[qQrlk3FM6EiX,A
fFb,@4BAfN!"FY@5br#H#DRm0"bReEX'G#c&-,HNEGNERFGD$2@H3!#[@SXk63"Q
2cdKHRM[U(#DiCFJ)YFQG"Pp3l2HaF2b$+2jEJkpE3V59"`1X%TE$$iEi5D-)p,6
Vj@rjVKNCX#-[FPriUS1-R3AbYfF)+)qHZGSp!ZM0eCSD!`N+M12Z"JSa13j!C6T
$m""-N3G&XIG0UR1cCd[1Z9Ta!)QaBZamF&@pG9[JaqpeMDkI'NV9!H-9&qLKL[Q
V6$kF)D9CCZak)LP)e*LG34[(C2'c)"31"N!I#Qcq5S[AcZ,rqNe&3m1C-ZiUj$Z
`R6j1qAeF,p9CTeL)aAM`pBAA#&-!TZi9MhBZCj3FDPkA4mKr3hP0Hmkm1N5e[i9
h'KGr[&c6m*3(UlKKjSd`Sk'f!LFi+C9i@LaIBCA!b-r(e@&$RAKTA,M-`Z,-hC+
G[l9I,#BGG-Ei91806E&X9Rplqq@%MJ3BDAlE"bmDBj1``+k03c2K(EFR60,--qI
pFPep&Ulm@GC,TjJm+%*3$1jX[%j,F2R!-RkY'q,RJ(p+,HUqlTL!-jZb`iE+dS%
`#G0Q%Z$C%(2-&I@jZI8fAU&I9j9N8cbC0D!AF)E9`dilDYb#A8!1X06530ecQ"6
[LXiJ&-Z19YQS,K6%64q["#UV8cpRSKCHX3mG9'#UBk,Uc*iV)@9&Mhl!86,AV%C
SR6Zi1fb0"Ue-jMkdjYJ1!4Am4PCm%)#K1r8b!P*K3[hUC'Q8C*AU)hG#4Tb)i2S
c8)GrUIVCEDrkpK(hfDFNS16*aqia,DakJSY[R`YF,lZX&'*9ZD"a&CQFVmCLhLh
0i6"0Q@1m%MjP4lTYXr4$(p&jh1Xp!N!a8rjS,b@N*h60hJrPb3`mS31q+c,qBQ6
`Q(-JEM5Ih+VqI,053YJ)i,P)BjPQh%Y$K1A(!(1ABK4klZVA86i2GA1aMdkrV(@
4jfU[D8&Xi1PNK!GU[II13C8!l$JhUe&K`Fc"fTUbm(`ff$h92Qh$[L64DQaGpUX
GccK4KU,dZpDNJKN&aB%"%6(Xl-Nlh$JLD"-"'(Aii)Ccc0d!MIEk4[3IqUe(NqT
H4frPmYK0QmAr1!P,P()A9EQl&+B1#ZqK6eqL5N*#4[Qp#hR+3"Uc19q%JEE+kH(
ZG!$MKZmc-LF*-T[#BNMCdmNMm@i!Eh16&0!G(AAj!1YZSR*+Bi0C*M8Y0N[3qei
YjiMCB(iVZdeAMfCKlmhZ+(-0cp`h*kV"$%4DU`r1Pq)dM*d8bmA#a*4jmJ8&E1F
Y+&01kAq[ikD5!99TZ)-HURVNEa&T$h44I'6L`LpmTh25T9lE6@1'V8,2Dh5X#0X
L2Y%@TrhlI6JSXH'fB9UN)1m!c4(3NDUB,K+EEZr)3a-#Qfb9IpJDdLl2&2QB#3R
#h3&jmDL3!&URMYZG&(Yi)mBl%A5XT$XNZE!+"LEAdVkDU0c21[`X&(4EdqN4S05
&J!+&cqDXXH*KMbrcCKf!*0-&`ZSP6B"0*bH3!(@)kMka$SrHF'Bh$8YIC3FqN!#
h&%PD48*5k6,X6+mXLA1E#3r3dZV"MH-kYX&i[i3b"98(&PHKlJZ0VmQNPHVdQM`
'GIThr4"LE%rf`d$$rm,#DE0#-C6+`XPhkSKCR,i0SFIf,G(cIJS#VK`Adj6KSM,
`hMcfPlc1UbY)fZVkN!"*Y*Mc+%CCH)NNAUVD!ZPe$p@dSVHLdq+4'IX"aHU1VXm
M6'3Y9YP3+S[#8k*ZU0Rq2CIcr8BL*XUUrh#LJV12*lH*YlPYSb1JcG`9FmP,GN0
&AlhHF"hb"4peimHG12-mJY1*9c"6#kllHSfQ[%Qj`)a26hKiqf$V[f%*8Fcpq'0
0%Y1B4lV,Vph"&5(5eLDcD9I#Z%lPM3X!af#%%dDfZXei*Z`qmb#,eA4[GFUYe1e
U)$hphX0$)-kFIBPXJQ"*8Q4,3PA15(kS0f53!#!mL!p!S(+#la%LIha')clKjHR
99VFjZP3NJfHKDmP$3(*d-[f0Lb5@q$ccik)iH1B(aFG*Z"5!@12QkLpbq,LF943
5X*89TVDMi,9dhlF9Q&UALU[2YKB!-kI&m(I6L[rdf01(Ge55@4CQK#k81eTAMZD
1LmJEp-HFe,)LA,9&1-b-0%L`c(VI%BLBjhCRVp#4R1L"[2IYbhimprA&L'A`Mq(
fK@9)8(b6Ldd0KLDeE0(UB5UMk0Xr1Se1'iY$"3jC`C+FdK)%[cpF1,3Q-(M+k-(
5RcF%ifD)CLTQl(FM%UVq(!UHY6pYRK"iDj3cdcFbbkQbhTp+N!"LAVNp$lK&$fa
T86CdAPd28GU'$E(2qU5LSTIcJ6U)L3Hch*L#q"J!aAlRC3#4)'TA(`$3R,U"83m
5bkMM4"kj)!3JIeHk6)L04KMFal,(8,8D`)$k$kc'cGr%Z'@"SqF0Tp4JTMEpX@U
EQb6Te-6P9JG2Nha@mISlUr"JUSfV$"Vk1q#X$ZQ902RL(UD9UdiEiee%9af"&Sr
aRFHeKPFMda-mE$VeJfcVTNHK[G@%)[JVXJa5GC1J&Li!@QJPC("GfE8#M4'!2j'
Ah1l!E6YDXSQCBj`!K@h+-fb0E)59FI2faT2&bSi@kdfiX9d@Vd)ZUqhT$*afX2*
08LNF0d4N)c4E#AUZ6FEj1Yq`$0R465`K+MMTF8CrRV$MG2L0"h'jJRUf+)0F9YU
8imd-*@QZKQU-)KUqjDE1iNi9Q9fNU)BZq4ASXVb(JSX'Vm!CMc28L@G+iLF)(e*
U5'0T#b,USKG0E!GcXFaDh9ea($di&RXMll0f(ciJ511DK%E,3j)4"PF9mUj&M!Z
8H16kjI32&#%p4&93,$Q-qlrh*LA3QXE4BA2k0Qb6&%Q`GACc#AXaEqV3'@[rVEe
(f$f,$9Q!1E+j'R0!2[22DNXP4%X8$")UkPR+0+SJ",&[V6f&8kC4LiYCq#5EK9)
%K*ei6j&8e2T9QKkV"QL!'dVa(CmrETqMf%DfMpFm4Le(EQ$(e-mlr[cjep)@*%F
eNZ&$iA0cb%0'qh#LiM`[#H5,D@3aCa8P-f`@3f693lJXlY%`cZl,KKme8d[hEJN
0ia`4hLFaXhL%BVA+bK2I3D6`@@+dDZDI00#,#F954DZaL5HC8AUCY!MZGde*HZR
N#(&Z[%CceD%CE!LXYM%NXLKTL9(RIId!RiEZEbV$I1KbrjiKLN24FPYR-P"0aT!
!YX(hS*`#bNrA@K-TQHc(Pc!0l08"%C&8[3,HeiLdY'h+E0jq,cJ5-LAqR4!M#5h
['6MjSApGf9Qp%i$BV3QYY'er8A*hXC9beL`850Z8F+mkVLBZ,KZfHkE4a$@c#r8
M*A'GdS&'"G&IC+2*+V#m"%Ei4&IhT4I6h+pV%p3)Gqb'SI3,TSNR9Kmk`CSEBC0
Km","IUAKk2HS16+SFH4Zd+FU`Z8Q-2qV2!KSE64B[2j!6&J)F-@0k!JiLBK%31-
A1p`Y4Q&A,(qM62L9KEbAU%JpcKAHT@2R"@3jk3q,10k&C)R(alqKif32I!Bm*De
h'Cl1l6N,DDrSAbQ`@am#F@!cpN6JFEC8E4TVRD5VpJYM"Gf%")ir,DC5+Tih-L4
JXc5*%T0biPQL6CmeBPFHBJ0$%5$!(i0aRNXfkqiC05CH&KaAU"jYl*+MM$q+PpS
p1b3'U9h0pXPHa2jp3bR6@XYmS5CE5$jQ!e+Ca1mqac4['6!L$"2!FkRh&f#6[$P
$6PjY9qRLDT%2'"mabEH4eSQIkLD`)46N)(j+,`@%'40%K+hf6G&bqXD(iQDUrKA
90+kLd22j"83J"bU8DZ6rhLZ%8PHdY*92GANGZQQ3!$hHE`+idMm*MkU&EB"eCRV
YE5ZGZ33+Ym#Il9aEDcrdPm)RJXP[-(G[ZX)a*JG6hddh@DYiTMVI2YBI@f!0YY*
3DYrp8(p&SH8Z)5ebA)%(MHI[bq9Up6Pejr!$T!XBUb'iIPhMV)Ch"BhBJc-B2iQ
"$bSK+V)64ka!D%4f4XZGH4bjMrZXr`3[(b+'4$(0U-Q8MYQ5Fdq6H*c1*DahCQ#
R`-QVRf&UF4H3!*4AP*MbR*mmm[V#U#rr8J,2F!TiP+hB*P3)IATl"%[r9N3([E4
9,eAGTp#*G6iA59MI[E"Va6Mh3iF(L%cNhfaD`TlT#2Y%IBiZ24VbMbM)*EI2Rc-
f@ISa[TYXQ)aJHNFP*6-KN!"P21NpIY3r%fa$+"2&6'T3H2%+#`JQLUNbb@`P9d+
ihE-f'Z(m)8+[@lkF6d0!2EJ3BAk2GacF*30mbKfJNq68aA8Xe"i5T'chXEiF3li
fI'X6*bCJYk#I48%l80A#r2G(cD66TBRl6',A@Re&qfGDLa6d0"2bQmKqhA))h,*
q2$69qIQ+a9V!C2D,RGk9E&EC83YJRE"H848)016#ci1rfb'%)[0LjX#jGR`d9NG
lpL@QQKeNR*bCiM(ZjQ@&kNY,d((lR8*eYifjNf#4bQ-hI&0,mFIde9r-h8fkcJ3
I6Qr10Q)9U*!!bKGCqc0RE"&qTFMjNdq&h1)q@jVYrRY[PSbd1ZQ2U)BHP'!CCB(
iE-HC&,CRS9A%,*jpNNa%6-HA82d(NHS1p5U`N!#NRGPCfY+mi,CH2+J[P+F`[&4
F1#1kfc$B4Fe[SB3ZYjQJ1KC'Z*0qAr[-m32N*3m%j"p3$F12VMAfKC'B-j3aHJp
6hC*4CkJcR)c"`P3TPlCBq$*jY[J+VUTlleKhPNk`h@dC+h,R#ldL*--qi#&XJkF
Y)",3Gcf,1T6-rLeJbdm@UH"k(La)DZ$*'D4,FGKmih2beJ26U--2,Z45l"M[Jpj
$GILk+3pjlYlHJaEUH!&X251FhCbM6'QB'X8B`hXd2lk811IHR`*%a4c2%rZDM'r
3daZlYX"I&2a56qdN,T!!cCXRV9+!jD&e@qHhh'cCf*[%mVe2CiB)q(r,KfB4-1A
II"AI#859PL5Xd3NUZK-FG@p"j((U'`PP%qmhNRpQJ'"pj15brJRUd,GDT$(HJic
@SR-5`Tdm@R0fP,@RN!!BVAAr(hNKPQT%3#&kP9J@V+aDX+&)'"%8),)rHJJXX"`
h9N!&&q0q4"'TPX9%A@[IhkG"e2*J8JQrh,6QJc5#!(1PPMXLF%#`c*PB%ANhhKa
fcjH9U6Vda1T`P8*kY+Afbc*B9qe4642dB(LNrF+D+B(+)4'*TM621Uh+rZ9bSD"
2F9Uf"-P!e$6klAEB(Vj)8aNhLC1i8T-(MJ`fIIaEICSqmXRjJZ#R#6Y-qF2-ZU4
)pZ-2MiPINc9PHVU2bJTS8,4j[J&V4-XUAk#CflZ!2f"`E2M@F%)`j-9YSC2@VTc
ZXcjp',)Qd"D%[NJlr1IAI%mTS)4Vh`1CHUdlZUd[J8FGl961qrc,#iIKHP#l0AC
)e10aI9EB)LAmF116[`NYVI`Ch,#$i+J94kpk%PYVmrV6!Q'5MCEbR!1A2Je-LP*
DU$@VeFQYqBFJk6"FI@#hAkP3$ScYHhqQS#36`5iS@8k0LKCi%&4N*KLpAEP%Bjm
QjTS6hmh++!@bK1eXQp9pM"2[HTH83QK[0$bU&l#m26aLId[Q`$ld'p4$$M3ckSM
H0d3'3f#"')*p)R2QKEf8"$-l1a9kd`bTSTVf14[QS!39!VMem'5S0E9L9GcQaJD
[U!IPIGDAN5#dq09MFNi0+Sbc'c@IK$Z6BchM1j1mP2Uk[+Nf*`I3"PNDQ`0'ICC
p4r`@C-IqC@`,YL-5!JbHFM40S(UJ&,[if3B!ZQH%kXHIlS6m#9eKEU$+Z&+KjUH
*S3qX)i$C2p8pQ*SQ2pZ6HmHMp6Remm5h1%f1qaiRSc'!GKC'5[9EINK&C!2ES-!
eXkbXbS')@!,bFQFeF85!rlJ2U%Zjp)JMr5NGh-3h@-5hhclE3j*5BYYqc%$&,qH
RK$X9"j(e"KeqTR0c9)DIJi5(N8m[#XHSQ%(a31-*G6!dUjAa4NA5r[1%K!5aXqN
hMBLQpl%*1EJEEQ)qC),TBZ4BEAl6i8qE4#"@-lm[LMS(ID#F)rL-DT3dB`D,`VI
LA8"L5[NF2F8KHRhBG$rHAMSN-9%%fbS#M$6Y9![VZ'DSRFmSrFiJHf8*VX+)Z3j
@I*kYDP83PfL8r"#(eUc191$H*6,1@H9mSd,h[hq48N!`6'+c5fG1*"8li+2m8l!
lCeKSScX`AY,-3B6Yl#qA)B!i*F[r*rE5%&X-hip2JZA@A12mVmrkGi!ZYmU3!*[
0c99462KK$jF`e9TG4m!JT2K"[D!r!qeK@b*-K$qJ65GV`[FfVcIU`R@Y4@3McTB
D4,QePcdm`!E,RXVcKeCI8J15cT8*c1Em1E8qhb(T([AZKD"1eD0VYlEDD+[)+CZ
)kKqrLZA@43MU&pUPHC(8d5Zj5R`)mKS+eZ+@,r'0f4bRmi!6dlM9eqL!%BFkMDp
pJXAY&%8qYQVPDeAdhr9UPFaI,0H-ID`*Gk(PTr9'cGVB5Q!Q8pjb*P0%[[k%K!B
p&K`S@iHU`'X-M-2$@TR[KdM4#[q`5m`DD&Q4D0d9r-4%#3GZ%a@FM[V3pGHpkFd
cIGTqmdV2IRA%9k$EX'F84d(iBFjk"bp1T8b'ZpclNA`5&L`SKCIdllr4N68Zi!S
52YI)pPGjhfL`*8Sp98b8dN)QjR!-U$9S'JZRX2@NEUDQb1r,682cVV'bE"$k*Ld
-fX2,,-UhfUhM@X!j9PU%b!k)JN,PB&SMTYepEG*I&9h[GpK8jj,FYiKY*22(@6Q
dZZ-cSmG`FLJRAI($J8KekIlN$kaa@42#&p(U-$Ma@Fmc80P(PU)'SlDf$,5cG%i
"H,$iqA@q63k(Kh[,CiVc9Je9C["lX[C,)cP3Zb1FECL5UE066jHZ4'CBr#MEBQ#
0'E[4$bc8N!"f"3d-'Uj*P#eK6rep6ebji4id%*!!hRhY5f9!MFlmrb,"haY'r&Z
3!%1ePe494Khbm)2j#Uf!c6GSCcD`E!%X0H[%Z1e%F`CP%f&8`,2,3i3iEPkcMd$
JcJ@'GqJ5j@i#ei+5'm0H4DlJdU3$8E)-5pBAZ*@CqVaFZP##N!#HeZ$f3U9rP*0
VU9d'ZV`6[JiA94,hq&['$*a$c1r`3fUjU,arBGa&ber+b`l4MGL3!,`PG)PmH"E
G89iqR$YR$P[dbP$+h3jQ3dbldR9b0SJQQ)4"qrIC%40C%RXS[5!qm*SQjki3UX1
dMBqAeIHjK)mqB!15imfEUq'FAH!&9PK4KH(Zad`q`#G59bh4'%jeDh%Al&i3aLb
DdNRP5rHK4RKN(HH"#jN1GNGrja-rQ8f!AJ,T-f)Llp92e#XGi0P'S8VKRQfULTD
2MT3Q1mS!"AGYd41mHeXff*[K[HSJ35F4r"1Ml,#[qkZ41Gd)P-di[XbXVXEH(`1
k!055'XdBImX+SNLVEY3l"8l%cfi#HfYfjDH)p%m#TZQ*I,1,jlZ*(LfS-qS2[&9
IH[lT8hdNCSb5'DHAI5E$!lUZjq,r2*6*chImM3HIU-4Sik*3hDE5#')JUjK-0M)
$j@*L9aj@a&2-qJHSR*,DXq,Hmi8TJi0+DBhTLkrd"ELq-@(!Ed`1(`@&kN&DAQf
K'X54J-"FB)Ya!RLDUITb#+9bjaPqG6Y1fXBlcLG4+pRLaM`lMK@#VXlfY!Ldf[N
KPK%(j&c!60ehlIc2BZHlbIARN!$PQm,)cT8X""C%jV`i"URSi+$i6Z%hVIX6E0%
)ZkeDB0KV-X+qkT)$92XN'D*T%mIVCX@)[@8A5+BHUjqGHe+,,&YNaH-5J3jLeI3
,(K2hV3m&ZMm!*,1Pl,&&")Ja%j5%DZU2,j!!UPQH[*&'YNbIbIKL4XTGf9Gp"lY
1BmM5'PU3!*RCr#$5mcj$08&hPTdUEbe0dG*##V5PS(0ha1"SF-b+)J9FH*jkX-#
)+8Rf3lKXUJ6ZU1b0C$k-jZpi%qm&RF*pfe`1i)Ak*0(PN!!L,k'klHHlehQceGH
$m8d48&LedFEaBC6)QiCP%YYlS-[#abKSpm4qp4r$K3F8lLmq[cZH!fkTE!RcAa9
6&'deM"4YiB`NEGJ9c0'mqiBfJMCf(pTJD@k8,V3I6Le)03!5Q444j5"liK`EhdT
ApN6TVb3a[iX&khckS!Q+C`2SPQ!!LC,V$QJ9l!k&3Dd1m@H-PlJ)cpX&UU(HZV*
q5!b`[5Xf(A&IZ%B"U$HpIhL&`)%"1bS31eiY5i'd8hjZmEE3U,ITMDaTIq"J+Cr
25@ic`N"`2ZjYp129a0Rld5i6,X58P,HAV2%#KqIej,hJeplhGrF02M!RY%lC*[D
LcqA%$dV"cb'%XVj-m2!,Ub#[%ckNY6q)GM[V+p6qebVb1mk(1l!6[A8lm%ETBNK
FMC!!p(GM%ZDkX@82%'928V+'l@11GBfp3'&A8INHA9+&K2(CJ[J%K%8GceAKK&$
KVAXJ5a1bXm3*U`p&e["jRCUEE@r10ZhC"fSX,8Tj"j1DC+4QbSX#H3AA%kN%S&R
YSkF6d0lia6Tb#5Mb,M(i9DjZmBp3ZBjXjL-[-mbJEXdC5U[EFR-d#$F')C!!pPc
)Z'&Xe51jG(*EA@!*'i6dK)EESfYh,c-&!mJ4!YhePTi8aYbFmpk5a'blQ08Vj8d
4AhP-c,,l4MU3!"*"43h5IZqH`-&c%(faQ,$K&2epP,aHQ-fI[F@&h+MH9TT86Td
8r55GMZqZVC9QY+a#5m2E0AeVipde0m@K!1iSMkYJK)cZ+%9U*%*V'Jf4$Ya$qeK
PjDa["ES9TG)m$A81ml(h#Zb3!"aYE0`EBKUNT%@56@8BmLmQYllU$bLXlKbU4Y5
)%m8X%li*"i1IiQ`fIjm3QqeAT&3M@I$k,DhlLCmA8)"GIlM@JiI4(lBN2MlJP#q
!'PUJ`mrja#43GaQ#j6T*'BaekH"H&N!K!V9BYqhV`S[5AEM4CX%b+&jC$HrP2'`
[0fEkG5aU65M+LBQifqcipIK-rNYePqjACHRZiD,%83H%cGi0d5K'eDE6YKZRLTp
YhL-'pc$a6ejJ'Vb6!Fc%)%XDdiILcbjMI3'"A1&K2T(,ha(ce@8cdII$kq,YBZD
)5,L+`0A&iVe6r20(!9X*0`61lDNS$L[aFp5BrJibT'Q)58,iFD)DRreMYVNFYJ5
S(CCk$f"M$NGfaNX(E'8AD)E`Uq"FR*61T(AE,*!!di#c!ZM,P"R2pkmijD@ccKD
UqQK@fT2Kikb0YqeM$dLKD-Ahm3i0%D(Je5AJA6ZhNF"KH(FL5E,rDc#ebMDfiHh
fYIiMY6a)QMbJ2T2kCpE3e)rlVXS5I(d$U"dXce![+r!4Ek@)faT,DD(U[RBRJ'&
`fA"X('11'J'ZSDNK5eC49l+A*'#(T[Dl8ahV-RBq&6'qr,YDbFDe62c*3A%"1J1
@kq@U!b[A&`4C,5HUIdLLPMiTq@ej)#H,2&r-#1+B)i!r`b2m&08ai5h3d,F4m4G
8[DrqiMNQQDaHdM$eQ`ppE((1YJ$'LB[5UTkqFZdEdMZNReR!%lLAX&kEf3b[dpk
qQ83&3(*ljf&0e286`pS@L8kfVr"QPSSRblHN!BUq'aPpcD81I%TVFH`I2H,[3hM
IS)hC*-QLE'"ZHJP0K@16EQ#G`24(aSmLV2Rq"KNXqPcVH8R[ZL(aDb+'90CNREa
)Cc'M&Z%9Ge9kbRYmh'-2AlM0H2fIjN%%V[`VE6k8EQ$6ZVaB4SKe9d5K'iM+*lG
FK59Y3KBq(V2R0Vk,FXN*8Z[TpFX)Kd@3!,"P6'f3!)fT,VY+HqS[prNI$Gb1d!R
Z[LhjIm1FV9hfEC33)e1d@`5Vm8`(@510-`CpV[Lpdb+fVV"([jle8cld,8)l)E(
GM18INIb63ZDUSIDVC5"*31c30Z`55RP4NH@`TXd1+)0j,+-SX(E960UJ)`N#*F,
41Rd4UF2+hQ4Q#B9GjYQ3!)lmlFb*+21#9K*5)8F+043K$4P5S(cfRNrfk[p&MD9
c8PqqjXJMGM3f*4k,6P0bbD`m&Q!#Y&5hqbqE9@RFleV6Jlr)AHrI35GLMB6pMJ#
X%EIh&NY+A9TmNTqN4dVMI4p4MR5B#R,S-bJLSE-E1)*%HI24V"1k$4ErVmlbVFl
YfFH@Z)5@+)!lhPC&-fF%SMc0+k#@56md[6)`#,,+iKQfdpA3G8I%hJ*'NkKcBlA
8[JRdpN865L+k3V#HLiaV4,2#cV',Y2C[[!@U('LE&Sh44q,ZB5JAVR[`KS*!pC8
N8'SM`#h1Ae8hJJDSSRe+aH03YeA(R-*(&-LbG3MU[J,d*+#GY!dkkiXK9iAA6de
RF@0pD'LQapjM!b8V-5Y!k!+-P(QY&jEBq+Q+*fL*)6fd!U(G-X6H1mIC&*@1mDe
4hMfHZNUNiVH@"iZhNLF)GX(qH6plmBS$aQhH6SAC)89NG('rLR#cji$[RbE*jbq
qC`Um5pAqm"-2KLFPp$(X&bkU,jkdDc*1-T*EqH9bSHMEmi%d52i$*TrbNU4e*%@
8e)Rp6ZmNN6AikP9DBdXH1[ahe#9E+m*,9UPii@DS)RN0G4Y0KHk$'*rNVTY*UAY
,m[iF"6#$Bq2h0`F3F,CMFNqqmYPGlKYV31!9*2+!Gj9+!lSblcV52pEc9[mGX1M
S2[VNVZ`A9,j8[qqR*c8[6F*4UjCk%$TBBfCVRK4pCX#&X,Z-qN*,-EP$Hh)R85A
"j`'PJ*A[cSI$$aSII&Nbk*H2(0pT53Z,6i2cf46S0@&`fA6!cX1Dl(d`dNb,h[I
(LJ1Pk5b($40K1)9r4)%"[U"2Q'&PQ"H`(N`b9[cMBSAHVhFXNG*NC*Cjik8G!F@
0+)TkM(a6r(K"BA05"k)T[fGkQ93`3mrI[KHP,B8H)Ueemaqq321[j6hPR(+cJX,
AhY@K%eC-Ur!GdM"V-`J)H,(0+9TqlXcl5m0[0mVVe5AJEdqJT"QSEM213l8#$MB
+-H@)0$Yj00j-G#P,U!$5X8pMd@`1iXl)`r'UN9a(l1ZjiiU[HrpDRq$MU0hi#p0
RCQhb*3[G"J(Y'hK4Y,[a4-(#5qhfe""#4%&pC9)(MJ$dfej'@1!Sk3DDX1i1GA5
Qdi3`hECe,#+Z%-G&RTjZ4S-*&ihebRm#114mU5-lT@kC(A5pFFIQch1!8M0#62"
pYbRDaTaRBaQ8C#VHNRNdNQ+q891(*`GJcDNFdZAmr1U+kK3aMN%@-b6Ea)X%8'4
+&mFpZ23FI9U5LRJ3M5Te4*Ij`L!pfb#IrAHd`a+bad1l'iVR9f&J`'@pS+10939
f@V*'RHA$+KCA4ac"49$rbCRaDbfqA!j**YUTi[$6i9p`qcT2(@%pA@#bDD!4kI2
iM#q1c9S1$,!PIHFbI9@5I2+$X0LQVXlQJM@%IX6KpfV2JX6GjIZTEJb,`12BZ,E
qHr`@,P8K8eIF*%GGH686Y6+0@&45QQTDYZi@2Q,(,e03TKp8@k%ILHkIYaK%U0d
'ZZmjqej'i`G2AP'9Rj*DN6'SC[6MUl#[J+"YB4JXMk3KLBqeD"qZ@4*+ZQ3aS[h
JhT12RbP@kbf#r#(pLbmDV1ehNVc1ImK"!9Y-b6"0$-@JFA3HkjP#'LRU4!$!SkJ
BE26rQ9AQFh*D-(%TRUd$D)a*K36BBPD)3hNH@mR5r`D3!')9b`BEjV-eHk[GUB[
Z8`VJSH9JhC2VNH-5&'K5jLI1pJ$`Ia4KG3er0JIYSLR-I)b`S!r59e"K0Ir@U6!
QFF6iV2+4e"3$DjFqIMBUp9Z'%0FhNU1k,qdNB+`K@2481Qr#IEl#GdQM`NkX"6d
')L%$hV#P@V2d)k$p1)rQ)jcM5K9)p*mKIBAcbq6SYa-'ik2&)T'Lcm9Ha+"-U,*
MbDqKD@4`S[*EE)CZV'6@iEkc%0+N+qc8#R9+43J2TrCI8)[R&"DFXK3hN6afBqA
0`C&hf+Md[MG[Ye"aS3)DCa18Q*IU4DfFfIHQrS!%9%G[dCdC8E[f,Yi[)P#4!N(
Eqmb*!XVUAR5P[di$34HR#9klH()F2#`Qrkc@cfSB6GaYelNJ9b,FL%k63LR*Air
MG*c5C%"Pl'KCIHYdSr&$8QpJmRVaX2JaDf+ARpXJr0Tm@EJ2T%50'Yffb0eGl8+
Um@H*S8"K9@ZqCcChNRaJj2hI#aap(XhEIq(hKV3%BSrNleM)mJAfj&-J&6H6E`S
efh"(,k((4C@`8c4Y5aI1U-,%)hVhVZeZ(HGB3c*Zm6j$c(h3GKYkac$M2mpkcAC
X9ZKGU0'HZDXIa381T&bIMj@QM%dV+HP8Bi(Q#G(9#X8$rcB!+Tar'!'LeQDNY'Z
d1KNHNfqm2&$A[P*9X#*@K@ASI$5ShGpej#PXTjk$B$JdqaKkU&V'2)Te5AKZHAd
Bp,%cCfJ1&F"F8mUM38(pXcIE,"66cKfD$aVSR%bN'*JkH*%$B3*V[$l4-qHZ#bV
`b)!mFqc#Lh@VR)'8`Z603)-B`KM@V@C#R96K@,4h(%!TKd!a0bKkmDaIqb**CIl
iB*ICf[%#&""2AjMSak[UX%QRTj`&N8#ZPY#jf4H1[@Xbq#pA6MRE-N28DUQr!d'
`TQFC&5NEFGkG05kTa*iH)#pep6SAm6A#1++ib,i*4AcbFARZkK2#fGjd*[qK3q!
l-mFHkT-bS(ccQK-#[0Zk$48A+MPL[M36[mkk*ZM#`dphQmHQl`1IL1CL2ad6dah
)R1q!I#6!#X,edNZSFdh40pDiGL3Hcr'GDe`-bmV'Z%#eIE$168i1IDjG9UB+Y2e
'CkRNB5ZB4Eb`YE2D,"f8TSNCl#P#T)`)6#eqRVkI()c%[qeXMVhp)"pLQBE(L%J
`lHEUFHQmh%dcH+KImj[32pL)pHiF`+e56`C5$%90l4J-DU2F(***iZ@VBQ06@f-
mi@KUH(MN+4#)ei,RI`6%Xh+B86ClXX[0pS*2mT+V9Q6jeSrZ5b(T1b%BPfCfQAI
$%1!aTDr#)`YU&4NhdR"%G8(#f-)V)FD`$P(rmN"#V*RE*6A[[lFcFGCfp4bGE*a
Y[e'F"EIEHXhh(hGeE,3C,)@MdQ5(iMhYBiSP,SXPLd(1$6b[5ZifVf#4[1d%9`e
KHEL*,+%0Beq'a%d8elF20e#p%M-RNII"4+Y*-Pf[8*r[)BN,k1CJcCPT"q[G#Y,
E@8Sl[5$ZrEI2lrcTjYfh@S@Z2eEHBep(VPe80H9jN5XfR%B'NNI-6@hSS-+JYVA
C+Z69jS"$0e$&4fL6A8LcN!!02P!RPe,BmE%-,I00M"M0Llq8lVMJQLjerdT3S(%
$DZYT1a2T'&%q)#&EeZH'N!#H5SL6i[)rYrMG-@Nbccqh*3'cq)AiN`FTBBVcUDc
p,J%PaCSr5MeUq`,afMdrlM42H*Y@jMj0i85Q%ZD6&K-Gr`##'lHmX0AD1iPc#Gi
dH-'2V6NB*M("2)p'K4EMT%S,k&QDIc*-T#*DCbrK9MlcCXCM[I`bR5[TTKSD*+$
BH'j62TNmbQdND6Ib2T((f0%8&QE8YrQYLX4q-"A6$i+M66H0"A)D6IQ,B$re2@C
"b8aJr3Fm(8Spc5XYEi4HJU3#PMee%jJ'TIafIDQ$YK(E[1),`%!d"a1-rb!FqG&
Ah@0D9!5G3(2#rABc(&3!@+I,&LCmr,Eq*NLAR-qFS4`1T"T)+a-hRf,Vc'5Zf"k
J@6pEJNJbeqi0iSEZf,TqIR[b+1i"ABTlMrmZ4Z!apN6dSPlE0j5AJ"rk((['DN"
BB0bXS9ihp#C8KJLj`X+bFJ-GNBkZP`MF[4RL)qD`9SrkK'-Qa1"5ZBSRB0hjc(T
%"[R@6bIAJ!NK`6kV%hkMTJ4ELlIcpR6C$I9HR#G8HaIm!RcFacmiD01`I(dDUJ"
plK!$mD#jE,STS-8+&[DD"FP00""EI$Xh#XMQbb1$ce'Q8F%S*$rr8ADd@2Jhj$a
Z,2-YRrc6Z%SibB5e"Q9HFqE6YIYe`J*6Z4Mj$(mjA8DNEfNFUTIcm",[kTV+BiV
j%f%P4i@LHjF,"8RpJ&6Q%Fil14fDBc3#&iJk(kAPNr3LQh%MEmjPDY`dcXM3cM1
2eH*'Z&J-1)dR"4@a5NE+ANM8aZ6H%XS4-"j5blI0dJiRRUK[qJNShEq)V"@eD30
MQ2%IfEB"Ke%NQ#h1h5%h5,2)m!'V@*j#2qhJ"B4"5i&6k#-(lJNjSG"i!XdBG&1
p)hmA[D$3)$5"91chDjRKj!4U`Pj&`IUX+8mA0j+XLN1IM8HMC"ad5bGm3krNE@%
H*M,E6LNCSMRKd9e$AqIrl[XG8-JfVN$)j4T,CaEp[9(&0MrdEhfY8+Z$+HeQ6'+
T69C)EZe5`RIG5NKIeiKkec'P5R'`1qapeFE!GRIF&0NIM6'[k,5iFJ6$VbLfZmP
qJ)!e4HKH-Kh16G!XQIHkUGf$meM,jM*p!)C+$1iF-[MXFRV#E(S@$fZX"i2pqD,
lhC''B)F4J0T+a5mq4kA*8JjfIb553Pc"FMHYkik43*D@#@XG#L(%$&[YbcY8Am)
$5FCBZdRAYL*phBSJ30ra4%QXJImk9ZTJp0SG-$F2rTCKe1$3FI$B9j3YB&'4%B`
fqJP!p3M@,ULIA11@2j3`!G+QVAdRS8#P!MQRmXrIGYm!B,U6Jj240'l'`XDEf8j
33(#cRU9paKY8rADA0)MLYHeFfQ`B8qJ+dN-Fj)H*YfSm3@'LK1TH2E'3!(5$)bd
K-ZXQaRaKrJ*T%XR"h,iZajUG!!RId@2A!Akp9bI"a#e,L"A@dhE*[IjD2JLQ8Na
,Q@T1h-aB64bpP4prq%[iG&%BI@%fRM"RGK1TX5*$)Q9XqTK`2G5+"lGCq8LI[#m
V+9SP%@@NT&D1d3[0IJJf[`r2`kTiM#iJ0`lbaSmM)V5C[&jMK*&KQf%"LAiqFph
S%rKH'h[KKQ)mqc99Z1b5e!h,9bbb"+4b&RdebIk#jjNKP*'SYfGED+1H@E2aR`4
3LG9L3e&Nclar28@kqKpHfNh$r%hrVi3"[m9AScZ0ZV%Yh,`JCIrE(I+MTB9#S-A
0l%@P0%c,jD"ai0ahkE)8AM%eIJfPV[TM&[RD3jK&")4X`R'ZMdYNUK3re5l8k@X
Ql"PrbR&hQ2Cq[Je1-V%"D9%d1#6prF*S`2rq4d#AmV'F%mhJJ1H&&N9aB8E5"%2
a3Zlq[UR6$T[&&!dB[-ZK!&V`ifQNlJ+&Pl[mAAA#T9ENBd2G&&,8DKZGFUPj$(5
69SiCY&*10qMB%)-MZh#BUdq`N!$ja34`UUh1ckcAp$Rm169r"PZda4pDA&XbAmU
21b1+C$kKQL'N@[3QA%)&G4HD3@JGQ*e`AMZYr6d@$@l%il,UCID[Z9dZ)T(M$8R
!@!Y0PK5+hVI-b,bI6hiL%rQY(dRQU#Z,60+CM0&G'U5L9*c2ULY)R*Ei#dURpdL
L,a[0"EFEcB+2AMlS&hk9iG,H5!Y-!M5-DrjGP,#Z@R&64DrhcZ03q18'ep%3`BU
Q3%L!SGe6#Uphikm$ZE3b#ad#IB4V6+MFZTIB3(+M!N80Xpq9PV2MEk*(J9kP*DH
D0iI%8[lK!p"@PV`Q)Rj)ljc@kMKGKJq[&YR@d"PQFHGC)(82lR6b%)#"0m&1pLX
'Q5iFdHRKEkH19!"PVpk(EmXXkL@Ac`*4jN+r@%mMf+YcQ'HqHSb+V4J)REY5l`[
MRXF*3%bV4+@PD2eV[FX3'C!!1Dh0#f#`"BfD6%$#k(m9dH*dl8!j([I3JDqj9F[
F+(hQ!8M)kp(SBqEq0Z,mEd0jUSV0D1kmIZrkC`FQQeN##$`H!e`1CR2IDFd*MjE
6U(#XM*3Y+-`eha0-&(FI55#jDQ(PLpE@6LM5i%K'JaqqVTe%9[S5%BiCU$3Bhm`
kk&c(1KDR3EYB5+YBVG1ImAa)2JVf`95TN!"0ZJe[j8N6[P'8cSVe#jIJm0LCme%
j%XVX,)Y+%1hN4Xh4KFYab!G,a,dH3,k@h8e,,#N)*6RQ0i4p*KH8AN'%FQbcQS5
0XNrII'"4UKQY6SQpLLGS*fCmNJZN859[p158E@$a860p&TCfajA,3*A`'rMAMU&
#VH6N0b)r!8f8Pk@#@QY4*kGp-MfD)9LkT@q0*&L`*(Y-(&Qe)`k`Up-PXiJe"Ch
Z1V8AdE)m,#c-EC!!Z!9-Q4Z@DFH-H44ZPM(rTA13!&+D(,dKcd"Q@,lATM*fQUi
L0'#lE8&1+'iJGC62+kVb&+,`fdLV4K9"[&HHr!Gc3ZLNK('"3ip$J`CiM+i-`hF
1d1Z(%j)C-mFXY)MJ9aD@k!)NC#2$PjfB6L-M8K'b!5iZpjhr[U6$+H2LNBm@'"`
50X$mS6,9lZqpGrb1'heI+2kfpH@Vj!AG,r&A3L`mcApe0fQGIrbYAB39eY@FZ*'
Y8-5S+jp8aJT,)("l%J*5mY@8&RGM,SdY8hr@k4kBM(cTQj*,114mTJYipUAQT@L
AAaVLfa0-UH$BlXNibd3,G4"S`b9&2TbhfBSXS!%[2IC&AkTEImj5l,&TK3Q[q)*
"##2AiqfH$J6rU4f9Yil@-@E$Y![$Cr96V&T'a94KYFPTJM"T!ZdG!2HpD5Dr`9m
e+lld'Z&d4e8b3VjCaaXM*lDmNMjU5Z2bd#XjSE$Y`F%db0jIpVQe%mBPicU(S!E
0j&,mfq[c5F2IahDVT"jE4JEe`d6*d4#,5K+JQ'')j46`[qBQT+EI+595UKYU&Tr
'lTJ6FP+kGMH"fTJNf-iA,5DPp3mHKL!,YdCfB4Np*C!!b4dX6mM$3K$Y0a$6FmC
a++Cp-LrD`,pPF`j,aV,+6(0eJ#fk22&T#Pm2PIZbjVf+Z+F41GA3@jQJ,IHMe+1
YQ919`83cQlSMf#p#D)qDHV@FFrT$YZpdh`@ZHJ%G2rd"*EPe`(E5NGm9J`cmV2A
a1dcTL`BVZ,2h&LV'PZ&Xp$RV6&$[QqrDmN3Y3LMZqiChlZ2)&d+l[m!*#'%QI!-
Uf,P*Sk`Jmr2"B2[D4r4P*VP*h!e1pmEA''Zd,-9Y1F"KG0+-D@,164""'ZMQ)eN
TNlb"6k*PZAVMjqh"',[-JY`k3eHTE(83rZ4DFZLTRFS1Z`Ke`bE@FNKYbji%-[B
'pL,%*$A5b&"M8+$EC9NR-DZIlFZkBAA85D9TSEMfJVY+$YJ5[CfJFq@1@iLjS'C
-cBH$bc154`YAFZmYIQY8Aa`3V@%IGh2XM"!rHa$la6&6%G"h+J6DP[R&b$D5&EJ
fM5lmY2i$HH!LNC*QLM06E8fV`I%U$Y)i)9UR1Ah`Ac*4099MTqqBA3HEK3f4BJb
RjX9PU5aA3Pr%#qaVSmNR[qd!CQJ#D0+@S0*#PmR55`+R%a5-dZYmZl(a`9I@eKp
lEVq![$5$*,T#A5iFqfL1Bj19N!$!3)H-Y)NF8Rh`#6IlTfH4-$IFE,9h2kbCHHK
dL-A%m@d#6E3QCXN#TmMVM#NI#%ljPGS#p5%Sh6pKEa&h4-Xi-IlbXLd!B&5MSV1
5BlAGdjB*S!YjS'C8AI[p3+`Q)ANDY-Ze95D6I@hRAMhGLR9"eA2#2aGpVe6rE30
dhV@pD9pmRe%i!IqS@9J85-RCMq(lr6Y9mQ@R"&0"5($r)NKVPJMhNq*#E)j*l`Y
5JLBcDGQQq"rILkKiX%dQGfCJrQ0lC%ldT`@BR'%-`[%LR!)D%fT((#`#4C6GQ2r
%m0l[K`QpqGbcG43J2M3LM!c169jb%C&$kI4'U-40pJKJIh@D4LI5U%[)c4UR86l
Xpp$0E%INF#6!LY8q0$Y%`b&BbEdbNRd&VBX@,`FbN!!jYp9Ei,XV,)2,EP5Yh$L
*'r3jZ9HERV+c0l%iCaTCcMQ`BEXG``l9%kbb`!MdcHZT-rl!KP$jGpSNfK!cKh9
pS1a"@Y`ZAiaDLP&#$%8A4"BfQ9Kj6cfKVe&"0H!5C&#1l--TBIkpk8c@5#X)!SA
lPKi%HfJ`VQL$NA4f*L16J39-CABBZ#j)4Z6`JYS*CY)6(9AMHJ0AMl)NH&ff)`1
MPFB'&3b3!&T`0#MSq4B6$rF!mHfTUA066V&LXe4,c2YY"!J+AB,RjQiVUKUY#a6
$3(DQ!'f1%8d3821fpTMHN!$H"r@m,,!$[5BqJYl@'G&Ip&mAM(5QGAk*N6kG6QH
PqAYXG!5`qd5a)XY"Zhcr,"ihdC@+mMKCTQVTIZZcE2cPN!"#ffLF"kc,bJ`'h#l
J918$X`bFA"V-,8Jf+XS*"N4%pYZ[kbZEh01q8mHeU-drEM8rfCmEJ`b`)5f$HX6
j2XKfcj!!D5bCaP'@)9XiQ8#IDX@jB#[X3V&qRXrQ4MfBeFHbmNbbDH"%!5!2hUd
%JaPT3a,Q2CRcf@NLKl36PUpSp6R$@aKe!H,6+'5d`)A+Pe*-!qcRjpm[i#ecVmk
YP+$CXBm506&08+%&!ArejK[,*(c'PhchQkp5S%E4)**r2QGZH9[r&KF#cF1`%(p
(0jRVB%dEM6!UpITM`@a+H5IqHLJS*aa4YqJbTIS9,mmqAaLS&LVJ-1X"pa`)rm3
3AT-Xk5e0A`rmf%Y28f"faD3V6`h-FQa05Z0DYNe`aD30[,eEq-,l1i2B,J'I-hA
(%$i&iP`9M63j@[fQ*cBPK3)IEKLeY(#C9NmSTFUj'jLqkBUl$bar)EH)T#f$+,k
$IaS[k8r9jT'CRH2md6fmZ)[dE)'!rqjPq,'e+,FLddLqRUQLi@a0DGC,dd#2YlM
[Sr8me'P,&Ik!3Vf1-DChlG+L(#CVeI`LF*C4aZp#dAFJ63ae!3IUAJfkHTH1C0$
N31JKI)f"DR,L8GY!N!#C[B'p@GBX!X@hErB1@aLrai@k2BHTXVa3C4Zd(V1R&Z1
ahkpQm9EVN!!6`*!!qb`-c4Ip&#al8NeqiUFSr"002e%5T&M#HK)(k54Qp,jE`aV
(&*C#'KSX59UJ52B"fDd4Y'p$H[JTcD4j6*jAZ0Id[cEG2"[RC`jTA@NfK4q8c+2
AdmY$pTq**ChHK!ec%!clp4lkkMQqd-2b4!q!0M-P%!RK0NPT&qRj!RIUk'U`[1!
!&GJj*V@%ddiIENk)a))cG4MF0mGSPcH,H)4S#UerC1U(QqMj-rGNXI6qYrZeemi
22EJSH!PE(H8Y&6dT2%"G9pfPI!94c!a#VH`UeH'99cf6D,@(G5!PS-N&M4DCk1b
iY-$@PQUkD%DKS+4*V9,1H1d[j8-aQpRjAJqf8@h6Ar0Cl,)SJPSL+S9r(ER1pXZ
lPpC!9CUqpV-f%4YU8C2be+"qF+3cVFX"YdpPV`EaLMpKbB$8,3!maYVqjmX!mJT
Q#8idhd#b2+A`"5!B$hj+V'LqQTA*$@J%2k-&JT-3k@H@%m`kmH#fh-Nji!-BEb4
pMV%8jfE6*AKkU5*eeJ@6X0Q6f+F*+Q9Yq!q-fM"ScFAFl4SidFBNUV"JcK+!34D
m+eDe&!H$HR-G(%9YHUJila34f@Ek26Uq6%%60AllbXXGLCh$0H43hEI+8aNlQk&
494e!'[%!iG2BfilcBVE!9-@C!lf!QG5'(35lCE@44-#4pLpX1aIj#T-NS`#C,i6
UAq1()hNBBfFApc1bcU28&1XcD,VM0&HrSqRp,#q6V`+aLaVqF40$q0bqh&p514b
fp*kQ%%%N@6DVSI,+lhSN!9*$YiS5T-&NUXTU'mJ3Zf$!pMQ$hTNT+rU93@NBYCE
8*m&Dh0"K30HUc(KN+%+p8I&a&Z$0Pb4GI($[EThB@6-N1kjaX)pF#15TKKj$%(9
jSQJqE"IaMqS3p-U%b2!pHk1-$Gib$qH#KXr'`m5HF5CYT"@pCcB#CKN+i&'IJ6$
+T!-`1YaV8PDfhBKIL)#&ak2RSSYEVaQ[d)63iAQE6`DUA,!*hfUjkQ@i9f)dKNk
i`Z#A,e"'&6D#m+[-#3!#'pF`+Q1&`EUbE9d8JR9'1f1AV,DmD%-1A(mZBb@jqmQ
+Q%(%(@C%1rDkF!FXrjkea$"PXCSZa'9[X6E0apS465@YpRl15"`YPlL5![CiiY-
DAB,e!P2rmre`[P-!pjab,+4VJ0TB%Crkrf(9G)fHl`ZrrE4pmHipLimrhp-f&CD
lHeerD(Ef&Si*lkX8AEeJ4X3U')@fGD2fTe+QX9"MpCP3LPma85aXdb9%&$KKb@I
Kr8Z`"2$Tphdm2klU0r&Te3QIAI0&e[hLcp-Qkc4E0HfbTSr(4bl+VkD4E&Prb+$
6Qq!`Tja0FaIc28f(SCJL5C9M0*&2KHV#+)D&,-NeM'Q#md15YB)Da"N`I`0&cSb
A4pj`'JV!lM*3qcJJ[[lY-2MZh35XCFEr#SS2a*`Se@jJdM,IHmXp2'lbi+&[14Y
`XEEDS6FkeC!!R+bJ2&mIiQAU[,*R+apGKr&IMqL20JbR4!295ES8r[CqACU@+DH
FU$QX#,)N3JRaV5BXLcrIiS2`)pP1Sp2pJ1GF!HqHrT%V93*HAC+"&D&`#Y`d(3'
@-A)Mk'k*f'ER1TE%-&4`#@**(RhUS'+!dS6h8&-Vb2+8P*SHNrHX1+0a(,PMQlk
kq"9$b#LBGmd-UN"4Sp1$*TkBYRl`ZTI!)PBhlB0lq'!kfN!Bj&SIr`((NMJ%QDK
h'(MF1D`#"L#UF0e`pcf)#a&IrBAcc[e#2'+r1NNA5FiTI)G1(FS-3BU[Q$I"krZ
`Ch*1bFi[hkA%R",%*r2Q8j,eCL18acQTLi,"&DSkpM8Zr"j8+4h4c0E6mr#Edd)
XpTHapall!`&jUJ86"l%TIdkBpj)@S5#Pjrfa!pj99219$'-5@e@8$281-6j!K8P
UB0AdBUkGFkmM[4Qj*5(ZMAYH&dZpr$m1Kfl"i1M55QZIDreQcb5"!cmkYA)0fQ5
@qRc#f$d#9fq'&qe2i$YDqPjh(r2#UX0D'+S5e``(PQ+i*p4)l2T65YEFhT8'P,Q
U!aSPee440LM8IZCqa9'G[HC%6!akJ4m0QiNfUN`U1'CK6@NEV$"X%H2`ab!a+Mc
UP*ZqQhk+2"%%84SAiZAA-%Nb#LRpG8b2Iq4+q6dUj)[CQA!Miq5`I$GkJ)QF)QJ
e@hHmMCC*Uhf$l[2qmNahrBlmF2bVIB0mG5%Deb%KV")8aZ3DiiBkPFTf,C[p$!e
6kHhQqfR'&'LIR4jPTl*NqZ,A4PVA4XXb@2a!j-ZU8HeiKeKDMLQjeGc&4q'`6)B
b&MXdTDEDZZff5jjIX5pM[*c1JrCdBT8m2`rRHYLT'$DLM41@S318JkIeGTTZFhQ
P1kPI%ikT@!Sj*reKb`f+qA1B$IQqKLr&Zc@NXeZ%iJ@NpH"!Fm+5NFK%4YPSKX,
KAUk2eprp)-@fr-`F&DPIU2CCaK4PC'P9ZCqPrje6L2DZC5$Vq"jJF-mejXQk4d`
A&AA$2pl3Y5rRrfpb$I*e6aE!5MkpXd)%kf[!&0`+(0MaaV9b8)*"'B*AA#IRaCh
Ud+q`2hpT&"eXUZC84Jlc&T2rkK*'EbHB9q-9PD3jA'VKqQ@2m-dNGpD0ek9)kZF
@R9!TTMEh#R,&42F)adF!$,Fd@f(j-EDqqID*jlTae#S53dpFpPRE["Q6@1ab`qb
C(3S6j`4b96##"`AGXbG0a`HhP*!!44,ZY+HU)E"YQNMa8(RmS9M1@V*N3m)rA'Y
(-($K'iaNhFQpHc5L2'*+MkiH3LLUdY3G"d@"ir4hX`ihKFirCh9T%c6XkcUcApq
HX"1dpVKT1dih[%'["eh"YIZDNNk(60H'V(irL!"#-#I1Y6I0Vhk'J*6H%4VDD)`
EEj@-lK(c+'k80-&c2"c`S9*i')@iR9@j['#G!M3f9BClY8%r&5)K0T%Z9c,5#Mj
pfH0+$M1jUXMJ*%Y4(0&X'32Vk5L&@ZA,mrD["l%$c4'mh'%eJATU132@KM!36Ld
#B)d6L2qR#AQjQZ`0mAcVDV-jM1pQq@l!rBC0d#I6qXMb6MMT'1-SL66dGa1+'&e
jT3G#kR"`!#qelLE!f,JNY2X%-@S*KqK,JhVGY6N6Z%$-k#N!03[X,"GdFr$5JN`
qMp("[ll)IZ5TR5"0Qq"(8#LQ,ZM,1-Ha%TMpcS8bmM2f+H)m`NfU30XcB-2DN!"
ZF+3mApR3(-e`fCE%Ri,fiNheN!"GqFr&@PDlS6"GP225@CjpF+l1V!qAJEhRclF
h`98Va9d3Ph-BBf,)mS%UTPMd[rBk3UBI(@$lb(iY-6SR+C+c+AQ(B4SD19@$+%8
k1"AGfUcF"DSZ'2f3!!k3!,Q2Nr%F+K"@99U`LA22"%Fb[449PHHBSZYF"I0$[C%
G-)QR6!P`e`-D,p3Xm9mS#reAHQ[fY#Qb-31&XClJkpXcNLSMCU3Hr30a)d'q&cp
%9V&F02M4*B[J)Sh2U%(b8mN$r@8R!++['KL6jS0R+R#c)LR""V4'Qq5S!2-!p%E
EU3La25U$-GdSDJV)89JiajFaU`G6'FJh@Br&a"`a6(R!"#3j&-ZBd84+1F"Yed)
5*pA-4+XbY2JH)eQ'VZjlJVT@[K"4`EY%6afkfmjQ)$mR5MmMIjL#C[H*$a&'kDM
#FNmQ+X(ATQ1ENb&Aq&!cl5UbILe99cT8-*Q'2hil&CcLhm$2@*2NE&aP+%mD2@6
rRY`aaM-"P20J`MadSP$kU4XYSfaUf*!!*UdEI@DIEhJfb2RQ4`T4P'hShDQRip%
"hM4c%*C#D,MhTi9'I(lJ)+HeJ4-LqS56(+'0d9JK+hamYAFJM@ThJ@V9&0Fam@*
Ud@GF'Ek%P9GN4CdqVmk-q5[%M1#+95ChQq8KhNmYlBFNGQA+Ii&lB"%9aj*Ja"b
MR)c#X+mVa[H[UJ,Uj9Sjh(Q+FD8*Z,TQF+@+9&D"B6%Zca1-G@mFHhaDUTZ(!C@
YC'DVh54mEi-Lb"9-rQBpK3R`(+@N6GeBFQVTFK@Y#`V1QDm6Xq*88q(2Fdq,hA1
%DQ[1`ZDP'6%3'e46cFF865mVm'X*RrqGPZ$"5br&E5QAFV6@r"HMf+kPr#9b9B#
420KG`bKJX#5EL`%B1fkmIV&5m+BLFiYTFZLMMY"BpV4Zqf+E[M1G3`jXF'(9aa2
!#X4@(K-)MkQ)EqFTVKMdY$-K[CCK9q$bKRG8[iPXP5LRfX36cQ`Q"-VqG6c6Z@K
)BMQ%A56lr&0X%q*pNLqdi$piak*rN8Ee`G0HP(k-'!PN4e*bUNq,$CZ2F%&aIPj
NYMFm)GFR0N4E"P`'$Xb2IHMRQN'E5$4[V1C#E[P3,46(UjpkdUhLA1AJ)RbSMp1
)aj[p%J%*q!6q0-1L0T3ikGA-f!Z!q9HC*jHCk844rYjb(GD6XmmG$I0IaX[1`bG
d0,"P$EE'r*I$IRh(pR"YVAbi#)%)Y(hi"[ebfccqmR@6@rJUP*LAf!QmBP!D@cb
fX!jIY&rRTHp*i"rqJi0H`8ZAM$IQh%+,aRZEDGm8H2jDr!0'q(l+%NG2f%T2Iq9
3p&%a`kN[LF%,Vkk00e+#+[9QZ08AL50V*r*k9*8[$kBlHpa"rRaT-h(p6I#-STI
T*6G1McFXa9pk`i[mr2H'Pb5%&,bIVDpk9jP(EF`NDhXeqRDaadDU6)Jkd2ELTTd
M#eXk$+iHfdIZH!e8ZU![,k,,k#$C"-$VI``Re`94diSJT6(*JN5&diFi)A9EPTH
'NI,b&)H&j#*ZX!"CeB1!Yf`*PZf,Cm(-J'dp)0-9Qf,2&+1*Yl,ClY`%$,G"FJk
I@raS#6H5Ub'YcC5I6L&,diC#RkYPrM3Ddi*!APTUBBNV+`#XR9H5Af-(GLHUGT3
Sa[X4)VGqrf!$*k-'Bj(R$&m*#QBe1qMFL)qFmcJNCE[T6Xk[db1a[!a#D'5,`c)
mRZS3@G5d-8,Q4JC*dQS+L'"l5r-9Z3Aec$0AfF0l6iiIYY0h`0K$LNm5$)M1BMK
l6phA+)LM0i[--@mq!Dfqk8e4p2+mk!@jmPi@%e9Zcl,62SA%`*b"@*4`jj!!Kc-
kXheamC5@9BXj5r%,l%C"c@aimQe#qL-J64L"ECVJTkUPZ3eVYGqiS)q`KQ*QApX
9VjZ$j$'CHI4J,[0)d0-ci&hY'6V"RLf4bVm")h)VEJh$DC+IG3UI*U`I[RaC)+1
M3%5Ar*F5"@bZi!jD26&AU#mEQ*pf$ZrZ5D")(1Ec)qS&Nip&MMj%AFX55kI)SV-
,&pK*D%Fir$UmB$qS0r%)D(eXqReZhMLpc-NUSa$[E@YFacNDQ+@@"SbD31$@MdX
V[,clHjS1HUS1Dr2[J[cq&R&8$4U%ddSNf3A+@--NIGFKZ25PGaA6qKZ!k3X51-F
ANfbE95+6Uj,T05-hdXkNjjTIcc+P5EZiLc4$)Rfbk)klkL,-3A"1G[KQm%NiRB@
aN!$FDXS4Ej&Yk''pHC%HQq%[Q5pA9'`T8h0kVd*P$Z`b$KJ*@@D,,FY2)Qh9rqS
E23)BPAfJB@dJHJI*TQRXCfG8i$5i#GeSfXXbqD,p"45rrM(UmSE6lS)"H)Xr&)U
Vl0KB[@)GMh[a,kJ2i44FcAm3CP[pUiF`j*hM8p2mPql@VG)2cMT(#UB@T[XNlTH
bX",XLHLV,Beb5PqMLk#U5@X8Rl8jZc5l)4VF24b,Ak&pbdUEU9hdY2HTYbD$diV
2qT,cJD)ZLrNfJJCPT9K@5rEmHAa*#bJN+#Kk5AANbY$%d5a#i6-[(5KV!$q15Ul
ecmN`mr@AH-65JZF#@Zp81&baVP![C[,IB@"TT+jjP+MI@FUA$Lbjb-LK2r&DMLZ
0F,B8NK(dqf@0DIL(H0qN$V%NELq2VaDA$8h('(hR+Ua&33"X&I'`f!2%38d&&PD
k"#E'AbT`dq,b`mk!AU4#+qH$f[A+r`S3Lb0TQbG[F3Eif4EBj)&1ebr`qM0&r9@
Y(0Pi,ZD"AG"pTSGFe#cb[e!R83SRYR#BD,8C&JYAS,[e(G1f0hc@qhU%9QLRhB!
!IdV8#biA-Z3Hjl+88Q9j-1J'T0L"UVSI*bRp8hV!jIkDK82K5p$f5*H2IH(e2Kf
hMP*pIkGC+BPXU-0Y)&+IR0M'Kj2Uh6@3!&34U5eh$c4ap6iImPl0*$qZUXDd$@N
d6#qI`&,$`Y[#+"DTHmVp,EYe6"mr%e6Ab&")Fc6YII%dpE)f`R4I3+3J3*6&%%Q
5NV+6G56rDDKjGK0B-N!B@#E`)5KDQ6UX,eK&CM6r`Xf(@SA3NAe2)S&*J0a1@QX
,I(L$k23j'&L6V1UppA5dRbraB3Z*cMV[D&$%mG@fNjF$Gql)-TH$P4"Fee'$G@[
Kk6P89f03-'-H&@R[pdTQL-qdEUfqD,DQSlZNQ+A59!9DQDZc68rX,,-Kcq4X"[D
CeYjPS"SX,82!+e`-SrI+65R!&RTEf1p[ScZDNp(YdV#m(*5q@HLf5%riIhlUMT+
fXlHGb)Dbq'k,!"c(9["J$h,$'f8,k'j,Ed1MSlMS#I@!U[AV4pP`N!"1Z,[R-h1
!j1XE3ak414(HHb&CHU["!D(Rdkp4r3TF5-H*1&CmVNc"1&N*c1iN&L'f&HZf%Z5
)$DPV%9lAZHAHckpliBU9k9D0SKLKcZc$T!@i"SDm"ZNc&cm(YF(K448%C02eqIS
IS8TSjbKBd3(M$M@!&4,jep$EpA@CMjrEY&0YMX)CSh)J%V"LTQ[TMA*8P1jKr+L
"4JRA*f0"iZ5@*h8a@UmB8-U#FT4AT9&D-!JLkN`&014cE#`A%)rVP$4cSUR22+b
FrcfNd%[GqF'X'(F[cY!Lbr&fVXThTbHahqK09+2I44If43-)kFih##kiKm@HE3h
H6UTQjaHr`!5!rS$#bJATEd$3b,$H2ZR4X62U10NI)iI5Dmm@c[hrZ2McZRETHMU
G$dBDY6(Q!c#hRV"CRSQCHZ@$IA!4c'FBBdK-4mh[8,JhHm-rJiU*AU(A'!182qH
Lp(!ka@pA91"!Jpp8E2Y8HF&*NS6+#q1+e!5&K1[V,lVX32M2cKVNHP58j#-1rCI
hT'GIY`lNTkJZ2q&kZ0*Z0,RBPLb[&CJ52L3'a9iKPq8rh#'Dhdb8NZ-LJbjib!*
8RlILmLU10G(4U)@0RcT%43K#jH,%[Kr@CH)FPA,Z0iM4!9@f$[mQGl@6Qcqib#-
"8R$`ELkSjLRd5db9#$&3bjFZ[2H,mV`LU#,X68RfkBd8+KP%QXEdYib-kBI0#,&
j@j5ebD*PAP@D`pHLFkqJ,EKYL3ZB0U`q4)hr33R-!(,D5jS#XNkHaZD,IfB6Qh*
#hUGG'61LHHLT$KdmK0[L3Bi5(l`VXKBRA90MlL`r82#ReFrf2kGR@[-DLhFb&Fl
SJ#J*9@pU*d9YQ0'V'B*bJ),h!Lc`32bA@@)YimL"eAQKS$cq#!aVhYihp%@AcDC
Nf9h20D$0EFp*bG11$LTbhYXrm$+"pCmdF&Ke&e4VZhB12b05BL%Q6GELB(U#k55
@`f+3!)U5l%[YXpi2MHcl%qYSP'H)6+FMfHphGTia*`6Q%K51Kl63VG+8`$REeVX
[R"YZkD(FPNjcSe0cUfak@k-GET-Sm)Ra$Y(VJe,bhm*p4DL*"XS)"5E`!YlV[AX
L&rlHHCPr2qF--pCm%P29S1R+j#m6blD''#l[*r'CcETAJ%Q&KkSjC@T33ER)Nap
mVCiU$#A9(Y0dH$LYM)eTY3D'RU#r'!qH9LIQ!)G#ePIYP'C-YAV*YdqANFNS(jL
#$[[YIJk9q9jY$6,FcjqM9ViGk[+,GqRl$@9SZqPT5cDBNP21F-kXhmN)P[FeUcf
['CRN!$kfRJqpB6X,5&i!44DqRcGbh`Y9Gd(I6&*R!lVZi5jleAPJY-5hHBqZHYh
pSf1Ke04kDH&)Y16[QR&-5FH01AYF50E+X4RQ,XlNLb&&4b85J'JXrbE3q!Z5&V1
j'0T8E@M3IcDZ"#(%#cP&Sf3pcMMTq,0S1($D1"himjA4TbKk63GcVX`Ge[[SE`E
aT)S5-"*b100&65iAj5N(4q26TA4ZI&RGYIYbK,lkp2VZfTS#FV[keP829qb('0q
`R!,-TrAcLG*6k1,fCdEk0NULq,RR#JqG420!4q@T'`&Il2p&Mq-hi84$"BY-cpl
GR,!Bl*Mm@N0hFql5l$840k2VbVa1EC-qp%$ffl@GImTh+-h+JE3Ui$d8a(P1&VA
b%i8[&iGHYdVXlL)KXC!!'D``9QKbjJm(jqk&#hiN@aF9ZQ,fP-CNp&'E9qqHe8%
1KIfDNC'F$2,AlFINP,`(&(MIH@T4E-5AK5`r8@pm"J9'QL#%XI%-`r,jE!c*F6G
&6F&YZBZ+I,!&!0jHBEb3!1df'P%!i[#@P[IjFYE69PDA`d'[F$R9h2c6LV#S[Lp
Z"4N+CpI5%q8M&cC4FY25,eQ#Z!c!Hlm23`$dAMU`Q60$E1SQ[q-6XXj!6-'-q*d
f!p'bhCX%rraNBL,#f9I,HEBbhQVhi$d$kFHXd`K+`HX9@f9lm"BT&[Ep1*dq`&L
Nd3XaRV+QeGHm+&3KPPb*e9I@PSmLU2T"B5EQ'GBDJqcZA9HBXJ4MY,ECkDmYBB)
(lXAi4HP$FNpK0)&ESc9+B#S"8)pXAiKXa2Q[eBYKk-3RQ%D'Yk2ElhPIlUpI(1!
YXYd)(U$`mZ9E9f+$EfY4)Y#CQ2ZDHAhNNBprh2PJBD,k+QM%9-cSG%UrMS!qp"V
+mK$1G09Nl,Za+5TSRc+e['q`HY0l@Dl@,ccpckm[P9V)A9CA2UMd%qd"Ed"4dqU
FF,1JX(8QXPX'4[b[HM!q%iBML(+-Ci5mNF4LR%cT6$-P'MRbmbR93j(U8GQKX$!
P,L2U4YbmKLY+Y[fIrTFjq-Uj6Bm0JSS$N@ZL#D!LNV#4NJ3%fT!!%e'acIiE'm9
&qVSH9bb0-iA+iYjrUVGPGGUfb9rp!"86@dG)%aUK3aS[q#aLd`5+a-FUX1`cTqh
ZSTH($9$UfS94rPr"QL`%QMUIAlXSqHViETa6,"m0m[%'Z`QfQKhidmIhQK(LkB,
$HZNHRZ[3!(p&28AMGVd6Z5AbcS0ckl3MScYaSLL"2Y$NEcJGS@lVPR'-,5XI+"h
Fq,A0K+$`&1pY4aNA@B(ZBprHf3kkl!2[(JThiL6P0`+1%CCh[1ffjGk$LFrlF"3
r%'d9FRkSpBMp5r`5HV5ATEGE"faLbTqqpihDUNNSBIl4&'a50@1GU3BTX*,9H6%
-B8`h4LmRMHE&crT-d(,3C#[em$6ZK`@K5S6MjZUYrJajKcRqJ[29eSrUm4!9r1R
(mG*(Y5prc5FYK2Lj(a6mY8l3,fG&@X0CK-QB*i1QI*1HjS5`2YSHP-j-(IY(*LC
mB`"G`4-I$j6Njli0LJ+k6'68i#+IAU%X*k!SBG`r[0m83lA8LE2I1$U69q6VlJJ
iSQ%)Tmam@)DIkbbP(Q*9U+%@6H2BSH5"K8G+HNp$5M@,eB*(ZVC23EBB-NMZAVC
[QA1m$a1&ik899VUTU(3#IVERFErP#GEIiBl&BHANR4UEjdbMTXlZ@EDcjAQd8r-
rYdL-E*RLB[9k2Z#52A50aK`k8Z2K-FS%,diX2IE89Z!LrIK"-&K690j1@,YDj&(
PK2%Zl8aMR#l"$lAISbZ%qR#aAr9b9UEdV!Cb21crZ+0K&c+Ek#PNmbe#QDRYMCD
ahV9*YN#IVEYCCVE0&fpKi8l1jkmb-,&)DG$H`kb,%$IQ0AfA4bXA%F5Bq4V5[Kj
$qYV6b)dVEaQG0hRlLaB@LN+B"4qQ8lliGF!1YJGGPkY6'l'fmKT@EXBedFT$'Ni
83lC6dI`12-YQIm`MmkJf69EQjdIaVHZ3!)G1j$J!2!h0Nh2r2S-0D#@fc9YaD)&
@)l%Zf"&pP8,&"*U)JqeR+G6BLYe`@+@kcB[9h%[TjCZRLcUZP-K(*MPmbPjmr6j
M+SP9QlBDqL-%A2JIpbXlCRNTfQNk$RZ5Ud,14"kBRJp+9jp-5ibfcRPE"S",MHB
1lp8Pbp'NiicH2D4LN!"C4ihTHD2NUD[fVb$50&iF0Hd(QR)"e$@3!*HJQLNkFL+
jSSrP,RRIiRrer3q%!2$'-"E!aH9l"l*2+RNN$*bXIkPR3f4m6"e[J1c,a-2MRiT
06*+cdmICX""NV6$0)ld&JZ$8eEk"9r&j1d*G$a%&U0RNLb)jp$QIGl-5CAC(Ni8
&FfGI,0AkM!P#@PVdQMp)GEfT5NfC)DPcDPjU$DrS3[qU2!-R'(-fmUq)B(2FPUd
[S9E*bTQ(#F'#!J&QS2aSCYflad[$Lh9EmDf5!S8%"NF(kAR5(id[AafK*eF8hR!
M61)0aq1*'TI&aqGTD,BC5'e'VAAQNYSdPq%5`mD6fS#A9pjQ3V`5-3bC1Rb#IG+
qS!%Gl$ZKbl`N&e38SCQ&!dZe,fX[VRN2!Q6l"A1hPA5afRe0e'TGaADemqrM%dm
k9,4@eR"ACh"+pE2qa+0Vq+Dm3hr2f(6cPKAjU4$4%9lLULRl-#%`pM)G3j9"YXr
HKENbi-PY,U'MV3ANLY+XkEfrZAB9YMC2!0*e54Q+Y+k*Df)4d)Uc)8@2,-0`I@N
K+-H+EIq!!%i!5dMbY'Ech0KV,Lrk8A5$d"#)8'6ETa%6-#8ZmYP3qFJ(91pjG'Q
rpN[FAq)aI("c9D!4"M5TA$pb,VY,jmHiJ9X%D""EJq3pac2[!RL($4Ed%9BU6XZ
CE5MF$r&&3KrT*fmUK$ea2'6p(U94+M1QZkicB44VkhHN8jibdDD"d'M'2aG5HfS
53NhV[*NQAjDKY#0rmIPP[65mXpQSX)k`Z,N"RMCIGD#Z%+(qaClQiaHDe3,U8l[
E6NH+L8aq(GQ&CMXirZH1Idh1fh)0b+YETI3N'$r6p($Jd+P&0AE$$XUpYke$)(H
60lJeE0mmr*fUpLE1RG(SGJYra4,j8P(X#kVSq4TeHV[Ab9)d9[j95%)afmJTf8&
&RfKDG%4F916Lq%Bdc-d+&"EhENdpa#!p!J,-@k[*26IZI53!SK3m9bPBUQ#1T&R
P0UY5m6Ccpkf@M`Y'a4DGBCe#h,+FYXdI$fbc,L-2d-9*V5L%kTikV0!qGpV%0qU
"%GYE%Dr2[A$DJi$Nh5!'*iY-B%Ibh1+iRpiAb(L%J+TB&&jADU!d+JrP-QZNKU'
N!rYJq)Z[NX#Pq2Nhh"2Q[TS)-V6Hkfr*-V!Mr3ca['Pbj398q-U,LdVRiSHY"C+
R!%Y@1"m'C4'U`F8m-93JmTH4$XXC8#jrNph#Q6ZckjckX+Y93b$1@D!MU%Z!#D)
SSS-9fY5$CKSUp6P9mkk`KTJ-Pi&J4aqM"+$4iBMI3CI(ZB2ibU'@J'DNQG8De)d
I2qR@"GRIZT,T5lLcZN,Uih8@'&f--b*"lS-(0FVlU12MPkE"Y2ff"FT4ZHqD`EJ
G+mqPfQ263SR@6FAF%rYqHeEe%2kYGQdBX3kNKIQDmq&4ZcY-+5RMKFJAr)d43bq
X(P0*Tc@i42TmS'TlHKS&PJETS$**N!!$4Z6`f@j!+KdPY6'hS[maVch(8LTqmh4
fErYPI9L!p6`8HKifQ$qRKjp`mXj3@Z&,4f1arqX5UV6Vj%Sr5Dd9[l-de&CKk@V
GRKRjA)`SBEQ"mk%i'CPZUiPCPjib56"SBNL5@dmFUE8r'45bEA@d'RfqK4NkKD%
K83bSD55MNA0pD0DiESq+c($ZQ&GZC+(d#`SkkJ266r!f$6P%QG48%h"hQ2*X3%V
L)3jRL3,ElI)Ulpi"ZE,'T4b%j5#(+[$P$D#)%ZZU"0XeciFk$(,#Q'YBh(XSHjM
`BHf-h`)e8D2bEdaJ&8*aq[JaEl)p(RJaiDE&(0QN"Ye*dCLZ2INA81Rh3S[&F"Y
rD41r#aQG%"8CBTa6+G''XH!8S+eE`B-U0DXM0eTNNY9`U4P1L`R6m&Xi2CXC49!
N4JjM[r0Gr`8D`[(a$SCEQK@lNl)!EpcaaK)JP486*`DNrFN6eH"ELiKiM3[EI0X
meU&)80+)1I'@Ge)9eK3*F@Z$l@MP-l5UcTT`BBedS)*rL`'SNJF&L!I5YF94G38
#da)ICd6c5rTapG4$(c#[N!!Bb@MlQ'f'FRG#RNN)Xd5e3EX4(5MT6Z[8UEU-`(3
RSV`V!cQZQRYrq,D`ST'FT4mek6KH[,i%FrLS[E'rJZc,c&T"MjIKmZ*A$1N%`6q
)Xa,qbRi*f2BcBS2[hQ40MjJbYlM,A&dlH)L[1FjZXlJ'h3r,35cQDkY%8rPkV8F
Jli*QL%$)Vmk)HJN1LbV(Zf!K$3@BA0"A)CkK*09`[554,FF4DULbFaJd,0L3!!f
bd4l,-b-23-9$*pS2e[AamR@D@6[Lp8,%adm,p(0faNUKi($-V#&(fAFreX%@8-p
k2H'$X5M49Ji+qJd+)J3)@`1CF`!SL,`UJI()8SARSL"DL!FQZbm"4,Q!JN2Ji6!
Zc#aPF038SG+1TP9K*k@SeIj%pmN4"lGjIehDNf%Gq%YmI25+mbY[6a"0TIDE-0H
BpK[#ki-QArPQ-+A68M1dh#'P*S+J@JR@f@9Qr&#QfS[!URpqU)TBEP-rcQKT9SJ
mG$LQh1$qGZAaf8kEH*hLSGL"3bPGmqmpX(d"PTC`AZaLB8kLh!!hB*%@H)(%!%N
U#AUp9lBlc2kEZQKS(2$+L,NcJ2hBrDYPlF+A+IVe)Pd@KE@BHm3cJCEkU,I&ra(
$0l95AFXbr5!CQJ,BS)8h$NYfpGMI1)UJ&iAZ2YRV*8IpclRApm2#0LU#T5PkH8L
a%4k$6[HD&8N6dp5dY`NPTV04ITZ2pCR$++a4q$04ASrpdrE'$%i-[!(&JYN(eIM
B3F$qB3CCRmRRR[-BG[R$0(JH!hCq@IjIiT`k6-ATBUSle&Vjd""ffeRUH,e1Vl4
AC2f18U9"NT`Y5$J6Z-b&ZjPQhm!`3a[@*Ga-&CKM(U*Ff+rBERP`#[QkXYX)A,M
TEUBA#9cL+*(pYFKU[3AKM'bI,HQMTHd[jim+%!@dXS!"Zl,L9erM1S(haV+&LC2
*`Di3404XQpDUPlPppjkYP1lp3#dX23X1)0%dFXic0*qdYZelKaG3LXIZC3X5'kP
Pc'Bj!&+M`q3Ti(,DA[+Lj#D5kGG8U-TNV6I+Lkdh*`-1@,B5FIRU6q4L)L6I)kI
m"j%QG6fH($+iJ6EN'$d(p$D64mN$0U4iAb&aApT'5EC[$I+c@N%KlL"",FP1JXl
iX"iCLX`9JR(D6J32Q,6C!M+*"e1AMld"mN[lTcU1%cL1FI@YP[)PQ"0fGNq5I$5
1G%dKaHb+%`rN&b,C4(-(`Skk&-@QlIq*DhlE',",d#@$MlIpGfP(65&d@9P$k*5
[H,i1d5hmK5b3!%&cE!Q&i"QG8p!`Rcmqd(Ar%f+JYGT1Q*&ff+9K`6`-VRS*'me
#)!irN!"l3JJ5)HA,Sr%K[@J5&Rj9@',PMDL'@l3rYYBr,a3,HmYScdhNj)2Ck)T
jQlJ1#8LYJJ&fcVD5,E)prQ8rc-*'rQ((-H'!*[l)#IG@$PbkbjfT$VBfN!$El+r
GA1CmTI@i+TRViA($J3G"Xad6$X!M6%k1NaJr6rRE#bTYY59b[AJ9p)ll-e(S2-%
Acbb@f0XKfL1X91S#m#Q[ki"fY*jA6JP(B9S@ak)Nk%RKP$)h(K6YQK'&a90iTkT
p`+Lfj9`HR0U29m+FC,cI(9qei!"@Iq$pR-0@V+rbcR2jNlAGG@raHMfi604#cLB
cIQSb8T[$ebMUQS00jQmd0I!%DVj1[)SAfR4ZR4m"aE2S1qfAH,mfb)3b-a@H*R*
DQT5hpf1(XkAJT4&F'[ISKS8Z#6U0S[BBJeI2&PcB'NB`kBp-,PC*G*(j5S9GPFA
IT4QK5(IR[fQKA*8$M'85PM%%Lb'&EAhMPlY`1(aHH0QB13DhlEdqq-2El,5krFp
GA`9bSQ$$Hl4(%!6Q&[YeP`aEKX!j!l%KGG-B0iBTZ"IBfB#plNM3-4,"'d(PT0c
%ZSh"Z1fZ4IJq&Rh@NU4GJ%`@`Fh*"bq,Bd8cR)2@'i9aHih-%98LHHU*CdZ-PMJ
pAHcpYXA$JNXF3G(CAIjl,iaJc"CrhkZ+J0EX&q5#ZVRpGDkQ'm29E31FT(Td6pB
dFYUdjMpQikTeX#JlU2c-p[[f3MqH%TD&-X3`)KmFMXrpdXEM2F*[dD6)C*RrXjS
XM%5pdMm-I`hD-%EIr$Gp)hd)aQI$KCafL9hq[,d)LIEI@bl,rpR!TM,#p(G(D"f
a6VjP-,94D(Bc2E9kiFqS89C,L&B8H941`b!C$NjkqfeVHQ&J0$&3D'2r`T2&`d8
HGlG#VN$cpN,j%14ML$,D%+X"i$p&9V@h+fKPmG3E5a@Y![J9XUmMpFabd2j-")$
rG,#CP&+#0`JTZm!ilU0UbmmpidNIb*VS`+`alBe#e)BBLr)VSJQV-cefLkZUrqD
NQ@-lklb,MCA4CUR`&H1G1HEI%IQH,Zi(*qF4%k2T1HQ3!$Pi3+BVG0bdXlbhZp3
AYUSMN6!+d,m0FeDkR(VdJA+H%"dd3l`9kmEI6E6$5k,R&Y$4GZGPB6&"e(C14iR
)FlCaZcX*H)r3rS,YP,-YYdjR)PJ%I*E%@$MQmcqSK#RFrMT*rYGZXUjTi[pC%6J
9&)f`3J-%j,XP[EJR6(!3cm`!G[QFjq#U8XBrU-bdGl!lmBSifpk0@S96d['D4k9
*+Xl'ZpkF54B)*Y!KU*-G0e2YDB,*2NpX"p-Y#+dl[bZ8T`VFA*!!If4'6dbFBmr
2)1(Y5FR%I&SAE[[,%YTIp-i'%[9%--M`!-XlFqH9c1i4RiXTM(i0V2*&ZIpAG&8
+i[i9JJmHEVd2M6[Jph%+hph-Ymlr6HIS!Q0TI32JA'JA5-L)FaXYHSYm0'd%Th(
c@+*Z21`!'@I80r[4)JUbA-V*-l1,dG5pDc%UT,jdb`Rq08@F19l'q+e`GMUG'%4
DX-"af8+3!0!8qA4["RhA-Nm"jqIK@%f9QUQPV%$39Hq,e,K%2"1XF&VCN4IpZ#p
)Af+#9*5#G&A1+pVjmbbd$e%&85@8jf0*"Vl42!A$Aa'U-M3h+'8V9-1%AEUcZHj
CVUcpJhQR2!Y%kR,m0LE!l6Mf2G2(hm4MkT1%@628b,qhVlUdB%Li[(m+2P`[jJK
(@46pSaM2T$TmNjQa&@!@4N''0LXU,m1YK1KceRk&5`4HS%51'6-a''%DlD*hH+G
h3(0d8--5RQHmdAJpDD0NB3lG06JFC(lKYLiKZMh0mJTB-eR1[d%N!(9F%4,a)p"
pe**6l[,SGK8qJ`-mZV@[Y((!T#LTYVeZfSrBTd[PBd4JVR@$j#b`@pe[H2F,Trc
Rd5K")"G(b)jq@N,*#)YdkQ5m6!a,e9SqI)5Da%8KCBSUXY3BkV0F!4-IG6&[L*8
me5X&*8E*INT5D&mNZCG%0c1EIc$-MTVmd1bH5MLq[lB+8IEMKh%90[Up6aV0[5E
68HMNS0-IA1h&q%XGdcI6E0[GMZ*j)E4RINZp"ccG6(Q4ZS"99R6Gq98G-"lmM'i
!$HK-SdQMD4fQe[Z#*fM4fRV8a8kY#JiER)QL!#-RF&4QM9l)8'FGX*NZpUA0U*`
HM3M"408[feHh#@F%hS5[CpD6FZkB6X5VULqJ[H,%0qXY2f#12AIV+%IL!ZaPIJY
C'EZdr0LVY3Z)mecCQ-Qccb+Dlr-1QSalP@2GC2&@+9V0&j5A*X0*c0')BjYZp82
44H,I2kZ3!"JqQFce,(XI!pBI(VcV@6c0(dd1F3'm,I+QN@TmD-Uh+&eG$59FVID
ZjJ-S-Pd&2rfE52N$q2--jAaj[22L0%c9!bHKXq`T#0Ve-Tp5-VKJD)6D*e'-C3D
MEBp96'd%r55`+"j0YAEd0GHRI8(-Ubm'S8CPZD05kGNN8ZNMk2B!rqSG5rS@F*V
IYNT2cp#ZLC2!YTK-UHkB+pV35Q91fS"IMk@#+Kdr`Ihh654NGJ34F$h9cc@*(NL
$ejdRFMMlV99'9B5EEE9dPrHS(XGH0[TkZ)ib0jmHI[hA5bHApm%Ydk9**Df2IF$
@2Lm5peMNJiM,qFLU@$#XS8m9VG`EP60(fLSB6TKkpFGP#bN%$!KG-&5!1NG3H0J
([,6N!U3`TGq4c)jH3E)lF90$Bd2GAc!A*K!'G,#(V+TrkIM*$FRSIA34lmrP6NM
iPR**fkYUXj)pq,!H-&!ZPf0@k,ESL@L#rkRl"l5KVUJ900FDd+GN2VFe3T["FED
a(V%(#kaBR(GD-1XNi[EKLd6695UY%pESLB1m@Z*Z63DRreFXBXYI$4M-@LMAE[1
qVYaP&EFE(-lf2FmQY4G8Y)N05Zh*SHNfAdQF[U85SL&,L#YD&&9%'jDd88AdDG+
XfM@I"GEVDr0lmpJKP0cXfLe@U0I6`4rf,9lFd9UD'YPSG)0fi`!X+(KDD0Dm34-
C)a1i6Q*''d[4AKch'4R%#b4)G45%*dM"DqN-NK'VZ+X-5TJImdEBbFkPZ0DReEj
K,2FB,"&b2kp42CeLI(%UCY90dZa[5#4m!bC56!DGCh'50MHCL*&V&(+idl6&Ja5
PMZe5pb'Q5Si3XFm3Z5K&%8bYpcl5Mc6Lk0jQ(%%$CD`TT3(GFN4b3&H[kLE2NFS
&2ecMeAGar`P0p#0pa'[i-!(BVFjDjmh[K#UTe%+Xf`m(AQS'U0T1J$F1FqThba$
DijQM3MJQdE*[[@h6+h3GjjUj3(rQ4F2fc1hkKHr%dfTRm$KI&G!H0baAeJACLJl
YqR-H8$GkDc(C%98e)q!4)[#2jMMXa*N(D"K"DM!$+E5Qp()"hVEESqp4Ymb0LUb
cCSfFmIebk&LRbhRDU@e5!Ce9Xqa2QG0Plc"Cr82iNCrB$G(RRdj9k'aBChUF)8H
)"08'b*4&*$+ZaF*AVeC48Bh`4N%&EUF#pKGeZ*Xm$Bh-jf0am*HrFp@1bd0*+Vl
%[-JlPIpP+Q--1Sc9LpTe@qZ#"-,66@)GR%2r@RKq36#9RX2RUZ2'[0*,C#ZXFR-
`89XBIdKr-J0)YEL0ZaICBGUCip*G66$N#UH`EbF[LXjrVVG,BV92-Vm+-"I555q
lBF"ZNR$J6LQ)QI"[CcAi``"T%Y+-D'"HETaekQ66SU09Tm[%*QaI63f%3`jcBT!
!TL8`IPb%3!&8LS&pK6b-JAcI-kb(eliKL5K`-i@(`I%!1+Y"RXUIKe8LL0FNriG
'Ib8@UIGm*Mf6TXj,a(DYNSFY,HreU4)kAEQq1JpQU"HP&r1GTUm-)(3Vf@-lJ[-
VrFk"51p9e9-)2%pi)"Ne$!acUG%&pGBa6'RCcTE04UiJA0iH&"9l-crh(GX)0+U
L'4#VfeaE3aI5H8F*'XMH#$p4[ZVJD#@dMH"![F*b*Pe',9b2V)hD+2PcDqTY!8+
pDKN"#@2Arq2hZ)J`3"Y*1mPK-'iCcYYr9PfI(erI&h6PLPrAJl&@[FG*bK(XT%N
08@3!PE('aKMV(VGNi3bdXh*!TCmkd#-TPkKE)qJG@i8`bP(Fr-ld[JAlGPN&dbT
r#K`ZH@I,)Q9#L*EZkS'RDB@fdABpViEEK(hMDFjMRU4j0rhU"lCeL,X#pIlZ50a
i*!-MaT!!k)NPpEYAM5cfXpmNk+12@h*`U)6qVlef-Pf+ED5Ch1r1rA#iSj4`Bm6
UYE`APQD[XfTT-2d0MVf*&qGX&8'4+IU6HhNQNalRmL982SU1E4UpHaEZ8&lBbN6
@Jp("$MNR@*JY+D`F[G0*LNcjV*DP0Ce@Pe%2(FcDD&3[FURPLCm)SL+[EIBj@,#
*,D`ddHiS+Z!`5LbHD@-1'!TMZVEL#CYi#IYUFpiNcfj0aa[",99&8JP5EN1-'!2
6T$ee0fh4imI*J@MeifkfS,jC*A[j,!f3!%C*ViUE6BY&Jr`l%5k,*BZUrF4KcF1
N20Dk'fJQq(#p0U)*e#GT(`344KHj$@ZeCVKM*JdDG2dh59,#DKeHkERIB(cD5Fq
V-GI!f6E!'FpM-fCd`*i2@`eZkJR@HEbYj@KRRf@ZbZHrcR"im`I,*Zf9"[RbpRq
hiFqJXfVL-%l'-brjKMM"(amTCdlGdXiiMr)bfrI%Tdee6eTKNV8-+cG%-8K50aJ
CZp%Ck)%Hf2"MCaA,YCeQr'ZV3,dbI3iF+a#cLHQJU*'HU[HHf"jV88e!0"&NAPc
4Xab0IL5RPl&6GAakKYaUPjdqCX3QHFhX"H6)j@A5eqdP9EIZ'hE*pX'26aDFe%E
N!4QT6),PeZ3kc[[QhkSNA'Mp9Sd&+)SQ8k%33N(f0X`e$r(56XMcX#KCU,cUcYB
IH9E!j%!PV9GY%i-D9QCl9K5)+2$"V9%"35)chS8Y$)FSdQ)*F$V(l@G)6LA2ihh
DeV#0jS0@jef9"+KC3VrYHBaHdMl9b$CV+I@12fV6BVPf9DhaA&b'U'lb8G'AAKG
DYdhMQrdVMQMT"1XjP$`I-'A"&ZH"pi5)B1CdY,K`EXX8NAYe(a+,VQXMAT-'eJI
Q6QDAC0N25kimG5kH'ed2l&j&Kq,2$*(91US!Ta"&9NZhficH,%Rl'6T8&`Gd[1e
FP"-p3IYeVMfarB*(Pr8)8F[Kpma+'XiaifP&#b*HM0G,NkL3!,!lh2fmI)M-[&S
XAbNm%IQ`V8Di6Z)6d'lkFCUD(!TcQfVIPlm+&dVhC)MVj@"IG,D(#UMffQ2Mm)P
e0cj+f#2YHCN1Y'lmdDfT)'5G!GYE%`(-8YVYY+Ni'fmJj!@YM[+,h0ed%B0pCNm
kH@QY&9c38$6&h*)K6TUaI'6-jPT$k@C#@jZ9@*[C4hMdmQq[qSZ*`k8bLaX"'mU
VP2LHk$3dJXr1"K#3!+V`53Y*qdl@%UFhjL,C0K+,Da(Xf!Gj)KSR$kBd6p$bmVT
MD!&`3J!U3,jiFj+2)J"I63LEh%qR+CaUPMl@p@TU)6PkVT'+6bf!%e)qL1Kb6i#
C(J9JlG6qK4YaU[C$Xl5bc%'p5'%RSakG,TQ3!1JhKLTZ+XX6@8KT@EhTl$Y4L(r
0Gm1rPd[`!E-YG4T,GfHdC-V1h",ChdU"#DQEQ'!CVVZRDJ-fb!m5d2ca$Lf`cD2
[4[T23bG`NPad+$V@84kCc`0TNJDMZ9)`$mS"HIhJpSjKC$-C6Z4Qk%T*'6Q,-*!
!Ek@HK4%UTC5[&IdA8`25&XVC`AFK9dZF*QMTl,JRiYfX,i*'e9BL2,*$,Jlc-H0
V2#SKTm0*eU5-+IYmb5e[YBEbeED+IR6`USI%i'@jS)`S2BJ`mTPpAK3NKL-Bc!,
8NUqQH!i2TLYYPS@qj,DMUXj@2-YCF'pTFJ*CiFb3!+rDB-0E@rMJNA5FlPeN2Y&
[J+)hJqp`pF%ddbUh6Zq25!4*PPYP22&TQ@b-2dNDa+I6LUGj5+*Fmkj@%m#'%"!
`h+%rDN&iTE+fSkmEMmGLS3PAFSQd6"cMhT0mHJa$3D%i"31T&*+8J-j3T5S[`1F
mml+D6aF0(jr(fTeJqP8%B6XEYSTeF(kD0l$LYl[PbTAK,@J$Y)8PEI"dMh1-Ik+
9jCaT*K""k6KedGL'`daLBFEc0M0Z&(+[6HD8LTV(1U"BYD0JbkN*HUk+@RL8TRd
$kKMI,E!X6k'f`dZ00phr0@Jb,q!dS[9T$Br1X[Ialb"Amb#U1lLI)IH,"apX'D0
-9TY,b[3pCFNJ',&bV5Ul)ZU"QVSX&HR+(GhDh$kP@k6IRIS`cM[B!k$`Hla0PSe
`+r'b0B66p$pIq#iPhlQ*+HbTrT,dTL3(hchkHQ)Nb$hQ[E-hb$Uac)H(d$'&EYD
ZF2(6AS)(j@LqcrY@pj[Xlkp02CcfB2S8#P[Hpfl3SkZKBPFl4X5XqNMBPAr0Tl4
(1B!Ymd3p+9Va'X3J9FS*FmRS5VckB-SfrjLfVEXHh0BCPkVK,r&aqlZ9'pK1GYj
SbDF[c6GQ$8&5T5em5R9X@)BbbT[,X[M,dUjV!R&RpNbl@[3rJj5iPL$k)*FF%RB
5M$82%D0@NK85HcI9lXbC1iQX"T'3!,H1$'j,KVVZ5cVV6T*AU"FEGhdVVEf@3B)
fdXq(XJkC'3d+p34bkdd@9D#d29[6DPAMq$$GApMVBK5YjlLZ[B"f+L[G*5AUJGc
8-*@B*'mVY'E"4#NqR+BFVhY2Fbalj@!Rb)r2VE#-ClSUD0'Cb$lQB*!!9,K6e,I
eBmifrFd@Ldkicdar',9-(aMZ05(9qcS)P02rYUPLU(e%2iUl1!p'5`JXU!MV+&e
AZV8#C`6T%S#`a&ijFaBFLdr#T!E!iH8KGKEjSAf,c$0,r5"S),5e$KYJh3F"SPU
R,rQ(f(Bf"E4[2@TJT03rYQl2[*c"[iQ(dRjk'd[#$"(3+6JMjia5cRKIS%qH[b,
eK'Dc1maS2KR3E,#[A5hF9PG#6*AC0F`N%E6AmUj2jaZL)#DH**8eEMdihT%'V60
!e#E-5N8%#[V%3frqYV[@Qc#3!#@0X*j&eIh9I3M)'Kif$@(,!)bpTHIPVE2rK'c
RIJehf'[eR)#Dl$!13H`SRIEq"(UJ%d%J+2SR#6JVTb$G8UV62[hq-9$`mFGdkrD
V+`5a%,i1eY9"(56Yhb*Xdh%,CBCJA3"kfpc)'f'XE8q)1lD(#$IAFPqRfX5XfIR
c[3i!GX1[T*r)!Ckb[EJV#(i6@IQeZ2IH3lD)5he[FF$2AHiPar-CMI9hh---U6i
ek*kh-222R[H6p6Y-@mF2-r9!Hj[3dD,F#4C$EmZkeCc`58cd6U$$-0$0#+6DbHq
'`J49DBXM-`@N%MYJN5VJ+4@8C&NSV1mrD)N9ZqLcXRpQ16`jpPLkiTfCJJ`G*P6
iQ9dQYSTeRB!(#)bD3Mj`0,cb"1EAN3*mISQaGFhYL6$YKqberIfVd,U4h(L)R9j
,#3&N8%e-jL(,TDM[,EV4@[D,h(M&qlUYV($NicGY"VRd0$VND1FZ%$a[U'SA$5B
mNp)TTAhaGD('8m*#akVjaT-`'44!@A1@Mj+IJ+cmq-4JB#S$CYYS6-d42l2p$PD
4#8U6hiP(%Y)E8(%C)MH1FqPf@@,dAqd(3R8jENH&8#ZB80eDiL[IBLVrIC!!phJ
ELq*HKlY'['#lK,lTp*1m8%68k1kjk8%D(#aLmiN6@(jBkDL#24Tq8Z)UNh5,!hD
3!!H"6mEbbM,C!BDp8$(BSQ$%Fr5IUr[NRA"%Pph2DYefm)3k#AHS$L551[6)0q8
QmR"1-hb2cTY@!#,T[E(IICjX44bGmi@4lI)J9'd3paY2m@b%r+SD1c36BK4JfJ#
cF6GDUme32UF2mBpPAQr*R+[-H2$EqYiD3"VAAEarKM&MbV3+iSr!M-d%P5'4Dr'
-ILZkXARX5#l"M[e&PU)q1ZFbYi,QiN'FX%)h`SS)*@,@2bUa0B6"RiaR$i&'hdB
D$DScJRf'IG-Shhk"8*ZQ9S5j[*M9qcC6c-Ia+dHr$IA!6!SG"%IVF&qhYrSX+B%
)&r6&IG4e0k55Vk+)X-D'EB[ADEm(P,UI8L0-`dATkFbk8#iBXdLV**IKia@Q8YH
2+XL!BXF'AeS2253Q&IX-Q4Ik*EirIQkPEUl*l5Ra5Y5V9`8!XJK)fQ9U,f$eVei
'G4hfmPma9ZQSrD6#DZ'q,Dc&6aY[`Uamm60KB%"8dhkJGAkFLbT@)QrIk!2f2C!
!mID45fN`T&aM$20#6(%0&SF5b[8@21I6K&HZf#`UKYA*RGq&+iZ%!!rp!RJcbV"
(U[-@8[360C'4!&9LZDmaP9DAH108p+$XbZI9%eX4p0,LI!ellEDc['6G!,1NbE[
9Q-2AL5ZM9'd0`p-43Fqhih*dc3#8AD"4YGU4m@La,Ke"8Z%4bNX8a,Prk%EaDQr
*0MZAkCdjJD[Y,f5UfFalXhMk9L[+q*!!QQrJ+kM`arMM#AqSK,%-D'i(Q1'iabB
r(q,5Y-3q[VarSIG1FRh"IML0iaZGe8$c8mI[LLUD'DPK*KrA`fM8mYEBJRQa*2j
aC92B1JjkCe45&AFmP`Kp6@IMLR)"UqEleJ2$T'bhbj!![imP#0HTD19qY%`ZH[p
EJ"*-TSBqJ!MhNrL0qAICI2XNRGpe,8X#%U$lS'3pNIb'hEA#afraeDr5cAeYlNZ
QkLNMfj'5FY#J1F6KX9e-JMJ%2pib(HUY19E'#%IPr)Z')h3Q9P#mSZ,S4UjX%1E
J+lpIq&*4mrq(f1D5%'I1,M&Jq+e6M)91ScUGfU6`GR4`6+BAhY*0YMFGG2UD18a
4EA0jZ*RT5X3#i&08hP&9RCjMfqhF`l$(&[-+A%ZZY$#d21QA"mGb`-ReVhh*8rG
2V(m2$#PUcb8&dpeGcdEAbJc[ULR@h*G9j3rSb&Fr3r-Gc!E,@L0@H4RbT8(5C@V
U2Pikb-MerCa8$DbJr`I1P9qTdb[fS)TUS,NK8mC#4Z#P*#fRQhDIM$8GdBe&`k*
X")J+!q38ZXFbPNXG9$X8FLE8,Mp%TI9J8T@hXmJ@`,2"H`KSFZC*R!AAEUp@fAR
#Q5+5&$k0R36qlbj9%d**F,T2YU)B$iRpe@&aB4VBQ9MCAdN84fLAc*Zidl8@PED
(#0ZF41mY++3lR[M5MZYDJ`D&ipA9QkP5JUL5X"kmC"RalPG$,ST3qp`"5+259Cf
X`Vi5C)18QJL(XT'pL0FCLqA1Sci2TjEb@ql83(),@Z8rDMLBQ`,NTIZ("re"q8F
@F5m13RrLGCS1RT@AfH*-!A'AP&#RSpHkJ"1%AQ8iq%TPUe29$dHV#!2T!81lB,`
e#b6[,r,3'5!)UNLP2l1`A`$`ei$9GEUEmIpZPGHJGKqZDrIFh-mBUBbHfHA+qlR
hMH#MMP2fY"A9,5$59,6&l38N#m-`LPT,P&E$hJ)0bqD*V$306IDT&G&[6B"8c9[
0Y9qcfP%(G(@"!eDSkrabPYD01T2X&C[pr5`1FV0'$)"Jl!@#QZ8`UFG`Sd+5!fj
ldkrNVUHb"fIfCqKGGKELRQk+8$!)U'fcjYEJd`8pqY$8*R3l$Cm[F)XZhq&IU9h
!)r0I"G3d4"2rCmHJ3FrBDF+3!(0HZN&RQ*D[+XUkadKI8#@)0Xf'0QYbe1QU$*l
FiPrPXe4R1V5VG&J,$mKd8m48FS'f&04%q+kfl@QMl*QX8E$(b(5*D0TqlqHDkKp
LAPN249kcPa[G6F$68S%,0L"#5ZpiQ%8h63Q89Q&JUr,jjmD+rmF'Mm5Qf#@'&,l
!80iP9fmi#r*mJprDfMU(0CM[[0mU5cH8L%9R@paaFRJ-2JI[)*N0[#GcjdSP3,f
'qG&ql#mFMjiSP[$28GDK3*)U$%FaCXF9HUl1@`-Yj%eq"3+1@j3Mc"CPf8'qU)L
PQ,VLJb6"(dI%-LpIZHh-QLD[b$"ACM2-"CPk"5kU-*%fX[!G)kJ[SQYi8h5(&"Z
RMVQDEZcePm4f0BDUJheUm2`VVi`1dXrq6BE`%KS`XLL,h'b)51"-eJ8Fq@T[id,
R%%h1JUCDCaE$c6rpaP0RL[Vj2PNQ@[Kqf)M$Kl*j9p0$-)58S'#%DUBTA@E%qHL
M`"iM@$"*i8FIaeah$jDK@L)q`TI3fe!eh9I5&5!NG0!)Q%9,TK([2kC,)YmFQXE
(fTJFPY0NMC'C@iYd%VfM4KXE@Hl)k1M"qh8A*M&lKe1Q8Kq&%%f'V'Kc)cVm@mG
Y0aiX'QHcl-r4,#K29eV(KLJ@&&k#f&jP&"Sc*NMT&C2Ik[KBIV56AC-X-9`Q1J)
CQDY)68pqi-'dE!lc(XADHkqT!q2X@#2Pa3TDlS(r)-J+VlfkDUmLU)$ej#d0J35
YqH0[+XPI'qS"*%l'hbh45MEAB(%CUb4&miPHa8H[KS2aGIE6I%RX)BfZ1mhReJ4
8KiUN6$0RJKTaGpcTGfaSTVfUqp0Nm$kDMRZ'e")*61VP8TbhKX-k1IR-9d&(I'6
-bU6rKjp*Mhapb"Y++0#4h135cU"f&`lA'T10CSX$af+keXN&)Hil%V-)E2%#SQ6
-S6@kB3a-,f5K`S-VGU8kH)3!r[Q'A2@b'Fq`YfVRTc!2"N-!E!&IALZ3!!b!#C3
[Mp6QF2+ri9QmPc)c4S1ipT,eM*'8+8K&DV1#VU(p4[[#V#q)AcH#[UX@`[&30$[
&cFVFblBe$`Qe"[*E2N0eKK(iCp1rrMMMdh(ANbULB5pY@fqbA+&()c)Q!pi@0f3
p,`[*KI3f3)k12"%CLlLDdY99,MCk+CKq2MHA5Qh"5-jKUfMjMaF'dS#H$fiHKEa
)$-NGb![EUhR9cc'4"[BPE9DN469m),ETQ4LmVjpHEr$m0hHH8F0mXiHieem2Y@H
LYq),5"N,m9"*#rYH%@Emaa0#Z',TV)B[I0rTTJ68ClcApj23!#`,c@0a[QlqZ5N
cR1pLicD50PJa,CdL$'YKG1Lbm@CLXZFi6T'Pd)6,8G4V1%m@5%"emdk#2"5YI@D
GjKbpbGIcS8eLG@bZjXFGiEGq(SRR@BRNLT*Uj64amX*RbBcCJNQS4Ie2Jr6d(0,
Yk!r$SmG$dmM$c[M)RXI0-@EDCZYp1-S3Z151IbPCeCa3(TQ'[L'Ji&D2GG1NmMJ
1dq,'ci5C#P2DYGAi&Bf!qcjQ*pAf!cKq#DZ#Z&[@UYr([AKhHq"A182rVcqK!Gk
d+Hirl@1%0f4Yb'RHYPr6*@+Z%CF(A)S+XHFZ'bM9@`!hMCTip38q%BRX*Nk5+pJ
eh(K[4cTRISM*3UPaTL"pL298U53691bhmiih[je15e9T*HM(6)0b3@G'TH#d-4Q
j%iL,Ia4d9eQCkj!!ZA5QG,&"N!!J)XKJSjCG!@)k88&1X)"G5V1R,&'M4KFa@-b
*HhK4*8mFRr*,Y9`EUF!4V0[!AUj-49e5J[+E6'ES16lVPdYY83V0KJ%R-q$fCbh
"%SQi))kplAAYKIC6dcj2VdqCkqATU&pcA5DN298DV9N%&C5%c+i`1h+'EdK+X@f
+2,BYBYJ%M@-E1!FI(!1r`FrPTU6NbfDjZ35TUPpA@Q44PPkj62$%ZfBR"$`5)Cj
MUceA,N%m3J1"b#"pY#RVBTR6eA5JIlH[D+82`hUkK65XT!cBTIb),D-D%l)LdSh
ai+$TeUYX%I0dicQ*mUhI"9,9b5T2G9#U5ThYD#,8`CSQ(1l)rl3[!6$6*%A-*hD
I8+RNNirCbDC0ATqQrqbSKBD*C*PX40&QQMprLrJ6r(1Xpl3qQNPGd2H$63Qlr8@
cAI4`XJVZMjHb@*@k)qieiG6`e4&jLQSNQIqkL'iS'dMpH8KL#Zp9kiK,I(e&PHZ
C(CUBafcc5Zek5,&E3EX8T$0kIdX6`FVQ*0LE39MTF'k-E5i0V(LfQ#JY+R253Y+
#D#)ak*SV0GThfL[pa")ejCTXF1E5YKF8@FU85a*QB)65#S-eK!ZqSb6B+L"Tam9
fUh9cl8`3Gpd3mpe``cRJ3Xk58[2mqhaYphRcAjq-PfNC[SD22qG#ZJXV%PbSD,-
!LDVZG0@Yl9'D-r%BSMTJpR-Q`JY-i-4)S-TNBNJfXc9!dd$GD`XJm4JZQbRF!dr
C@0-M!p4&jbNK8*E"3q4`)6G1*%)aU+XfY43mm9c2'0GSbiqPE"F6Z-0)CScaBp8
FpMXHV'P`1F6F+UTrfr$Ik#3U0B24[KljpUGAk85IMLQ,L"E(6Z)qUBKhcDTEP0V
*e91EI(KkXZdYC9#65"MUT%RDQhc`#Z*c(R$MRhE&hbqUipN8J!HP&Al%6bC+ep6
i+F*c'V1h03Q'hf!'IHM[EGlj'icqITEb0+3!$-)@qlaU&iV)#J*LhHirk5+bk")
r*1l#1*!!)ZAeJ0F%`S+BEbVbp*NMEakAGJj4XH0E4&IaiQ)F%#AT#icYGmL[@1F
f!BRF+f@jk6#d,Uj&mJ5EPGA35mc,ISG'3ZJIqAKIk'Qc2BB,[08KLd[#kU&@Vk`
qEV+%lYSIkUSe0$C6ADpCG2m8S,NLI`lqX4diXd9A[Vp&!"NNJj@KalaaJ4&22hT
F(hI0f1N-9YHGhPXhi[')1mTH!eVVq0Gj+ad-UEX5`H**$ARqEiV0LK!kl3)Z!-N
(R`h(VUBprVd"P2cU)2)%iS3JIiaX*'bj)#iRRpZDaY8c[N,"+h3f$e&!2-pFmrq
&dK00-$dm#ki2"Kp&Fr"M#qX"34+R4lL(FiHB`eYS@Nm2cCc2D0JBUKLGY"F%IcX
LS)2(@)ChbYhK"+fT6@qN02%,X#i)"h`lTB8Gr3bmDAL@c-f(IBBU8bBi+59IIRJ
%Z(q3!'#0%KFVlfA!H"!3PrBq9"6"'TjT5BM2@RZ%Tp&VP5L'"%8U"5GAGf,TCBj
b1iBE2*'Jh64($e2,1dFIX2)A-@B1K4m$!M1245G99*Qe"QP43S!$PGpYq#irIka
crPdY,bS@-lY$aFQ%Bmj3AF(C++-"HLUJP'hT#HlTj"ICC8H$4S#Q@#Zprq(c&Nl
2(FQE*3fJkSe8Rf58P#j)UT0M9XG[Y0H++"c5hRde$Nk0*&4,YZJmpDZfUlP8)N'
%EK'Q%8cV$A#Sl9#ZFS2E@Qbr39jkRmS34+acBC(N92iPBE*"PMH$p*BNaA0e#*5
"9)&aZQ2[MY24Pc(-#2&9Jbr1GZ0SAXmi`l1CX+$2'cMQ3&I8*TY*&U#MCYUQ'Uf
IAK+kcAjGhdEUlPCR'6#E8,Q`!'JRETF2#JYdfc$3bM$U"F9!CJR6')mBEZd9DYk
2jUDj)U&,-9q1iF[N!qFjl`[jFXM%-%8IecbMkT!!GLrCD!h8L4r0Abf"#)63qNN
@Q[hf!8JfB0i0%X2T8UTcBXb6-UU[P%Rk`AXJZ$U+XTH1f"@d2-9B1IBe@HK8h*i
E69q0`+&hFmUem@p!AA"*`jdPd653!"!&kI4V2eJ,-KlSG5!m6$m(i-!$[($V)Da
r["GbJHRPMP@4)a!'+T4m[B+dNUNYKbereDlLBX@&4&5cSa,T8&l8eShjN!$UZ&,
P@HSfY1%DX1rcA@'mZN8HIb%c0M#drD#cX+SBf84Ur'ka9l!JEHiG0Ajm)"Bme"L
pPq("j%!`4U5fD1XSY,6[BZjR9U-`3*6@58Bd5EATlhqX%("`lKZ@&*HB(ak*F54
A4+[S1ibd&(b9&5'j(+D53M6Ce*[JhR5TU#"XE!(jH0Kb#U`+3iA$VJ&KMbY1&1L
kFXD$i@$SN!#Z[mZQ-5jDkT`JL4NKCpY5TS)$*i1#9AYeA+G('LU*GB)de6EBLk4
ZLC6VL'5i+IZ1p$lfdLXN$6i0-$$R[lDGPYh&$8$353hI4XPYhcYqbf#*U11l0Hh
GG$I9Tp6V`8(p2HiEema0qi1bj*BD[#R2&$#L$,RIP4&,TplcAapP`cRpFJ[%b1P
EX$3QMd!-f33f,"4aGf0XPL6*#bc)e&-[9HUB9Zc0251RPCKGE0i&0Uh1U`kD`d6
Gc3'Vq`UYFkBfbqm9UX8IFr3PU`@&DZl"*"6e&*d53!H)+9Kp+%NRLcE541rCPN1
%FJ00$U3NPqrp%GBG'2ak0`rU[P`YZMfi)&XQMV++R,5k5EJe4H9bL3R4!(*1!a@
Y!DQ@+*d!C-k@J1GiG@@-ii"lGP[c+ZflYJ0Nfk3!@IhI,VBI$6S#Scl[*,Z8'#j
VAb-%(1dJJ5dfYLCRa,UHc&N0EaBfc'Zl+Alqf+T+(ZP)l,j(UXG',FeVFYEP!Gq
q[h,V&b96jk@6eb5#0E3N!*hS$UqBGD@+EhFjY54X$qHHX6q*fhE*[j@%F9HIMb)
A`$E9L@9Pk3[,(faZLPm`UM93SPiU6%5KP4i,R6%hED),hr9,EN'!El!@`H5LM(X
-)I$H8#[S[*0Y3%12`MU%'i9Xl-6rb9,VTZVpNTS8Se8KLAfSP(A[k$(Zlh6K6H#
[m(ImAH8JY8%bjp))3m!`@&H8"jZUl*`@h,0Jja1CT+!GX&bTX$&Y`#U'T0KU9!*
kf1Q82paVI@)R96'r'*5+@UKVURH0fV(Y3KN#'q5YEk8m#,JklSXf8k&XVrYk)&U
3!2UjYIfP1lTKLcVP[18bdGGJmi3Y+eqIiI9H+fCHj[m4Kk3JbQbf5GNN34%rmS1
5kF%Me-lVT81[)f0G9'lrZVBM8bJkGqCE@2DaD`RRh8hdi'LLj5'N1$QY,MPJS,$
3)"lbQh98r4GbCQ'LD01,kr&1KhdVZ3!+3Xfa@4$D`C+B'RlVN!"*JD0&baQpG)F
D!A@HZ+4$&TCSJEVeSkbjB55$'54FHAR)dLJ2)e-B+fSdea(64$jq@3[i3B*Uaf6
5bcHQ4DF31NK65`KfDXZE1#EkdFa#,M85aCij+B8iN!"VS$FXAXbQU[c`(EVj-U8
qhFJ5D56,LmHlfQKd(eP50Rk8pCi!F"li'Fe$dpAlU'kMh2*IHrap%L#bN3c`+DK
hRqLEakqZ9bL0NmrMAM'b'0qbNrE"CJ-h'eF,6r+4q%eJY%QNp[P!Alhm$ImLLqf
116mTYQ%S,J+[J5#RZCFHAC6RUF'`T@CVKrR'c6Nj*U2ZhRDC"K,a`L!hi#[EImN
IXEl1G""imA61Q0Q+)8#FLA-a5L+JP(GHibiL`P#LfGP8j*J(%RcrZq-f)64`@DC
SHN[hY-V"($aQ*"Ja@hqb`YpLme*"9+&`IljLX&5@Jm'd@"+iHGj-d#FlpbrmN3!
(0@afeirHrK)eEpFK@&mAA--!"NQ$pheG9#A&'m*qBk1$1"02Ee%kp-d)3`0Qm9e
Jk0SFC3(Bc9MVXkV&G556KQ[-**B6JiG4NmJKSM'P"mNC&+bXh"(FV&'`*DH3!$p
j,X,DV(XcPINk)A6-)rRGkjjTqSU`ce`adSSdX$Z44fS[jfAb`+MIP4r)X066SMX
T4J6Kk2iIpd)T)a'pG!(Gc8Y6Se!&r3Q!U""%U-X0,,B+"p[M''h48NR,TprHa`-
*%T,3R45!bi-Ej*f6Pi9#$$8`!MKjPkMUT6)%Zm5LA[p-%RIL+i5AfBT'Q9*+BN-
45b9M%DJ6b5Bc8fq2@E,SFqTI"#q5h4H9-`1[1HPpI4$JIKY,FD9+%@HYVmAK92@
+Q`b3!&3beZM8'RS[0(LK,N#Ap5#Kj-([GbVhBj-I3*N,prjB%EZprTTT!"3`9Fd
f"`&V16Gd[Qa3[j5!CG+NlI)2e4+0d`P1m2i-pAF2NK+I5h%SATA#'FGC#"$kj!L
Vc,Eh,(T4PTE&G"*RTa,U+3%VK@e"$%-Nd3eJc-lGB,)qSD%4ZCedj#N#Tq2-#V9
#9TiiHMiR#-l)m'SjZrr#b#"Fqc$9R$430*M-"0PJUL1`R!YHY`1Ja!@DJE2PdMQ
"e&$jC`aEB8qM9`-q4H*!C[Zl`3HBPR[TNMfXNGB$%NlhJQq1NTKcTf643,E%r%i
GL['d4M-M5Dp$*hVM0D-$5k[lT6IHFRIZKr@[8HGjD1+clmSBG[BqSEX(p2@c9hq
SdFqj5N`PR39I"Z1lQBjF34lQa`2U5J()a5$-`0N#NY'"ZEqDLImS,Re8VTiN3"Z
q4%GK$+M4JA(DhrdmpE28[2qIPI$4GTbZ8pJ!,FL2a8Tc2QR)chk@V"4NBRBYB2!
(ET`BaI'XIa`1p(*aj"%G@V1VAdA@J9mdId5ifre"2UfG1"1L%Aq(5DMh-VR5k52
TD!RJKEDpU2'-)X5+B4HcJ&9*%A4rl,AZZee2He'2$I*YJ6[d8rUMFbSAVC!!T,d
JP4i2"Dmp!mh[bEAMP8d`a*,5$[X4emdBNMD*Yf3-ib#3!*Z3!+6ea#R`BcS"R0&
b(Z[-4Lbii*T$$AHq$cSFP[d&RZAbDiHM!JE0#ZL94eU[r0H@+94k&[-@GQcLS55
B,aZFU%ViXG*qRS"eGVX"UTmi6blbqlqNc1bZ@!VXMI*+*#l3N@A9SU(`fi(2(VG
q`DQ),m`IC*,UPMSHjrIfY5ZbRrHhdTf,V5(1c9[-U"FFcZ$8cb$mf%!8L4THL*h
b)bb$fGmNrbrMBSR0iFl!m,NSE+b9P``KVp!9d(A$eN@AJ"Pe[H1,'UB0ir30rrV
0!RJb[(H3!'S-PL%r#GK[+'Q!+e*P(mkdrclX%4b23`%BEdK46KQ!,VDbC*&G0Re
*B!@e2kkCYAEA'hGqJBPP3+3U*VdTc44,SABV1Da-e,rUdC@*E2akmr[IF`T3!fD
9%MTK`VaSYBd&hVfTEGfhV`fDIl)mV&%b1ZXmYPA58,(Ec8kPNS8hpDf%iVFM!+4
9NQYZC)@6,ESimcf2C5S`$01KJSfqM'28-00pl&ZLAGK+1$Pa+aVerJq9S$ZL,Xh
k[9m`Z[q4R"qmLMkl8(MCBYfrlR&$,8m$Kbc"0MA6Y!a(&Aai2RSDrH!A3D&YS#J
E+#+il43P"6[1X5k"3RLDS[VXHY-*E,-$'YhH"XH@5pA8[%Yrlap-$Z(ak#k$cU(
r1TJ%e,d*pZ-GbNCIr0Tj##[&b,S0FNcL%ra8KmTc)X)$Kjp1p-ArlNXCPRKDk&B
kAHN--Ll1pSL+rdD5l@5p0j8mFYFf2#SIE%MDQcTmGG8ASGfURc*B6#QELCHJ36C
SA1pGAB5"[-([@Bk#[48)8@#GBC9fI#%XM8)e4UeEDeh`QfdjaPD)@G6kiP+q1c&
5qCk6U*De)4CSXA`KX1h0l$*Z&,q!!$Xf61Z9Id"h+@SIh`$b-UQKl#'Nrr5CTfj
QFJV*VpX-I`Sr0DMiK+a4eeG$Q,UkDXB@P9NIj0!50N19G8I@`84H1[Cl[$lX[2e
G4L#%8*YE&)N'f849pEa0,EYipJN(h"dUF6[MqAXeYCJm8K9ZGB,[Xh5h82Z!NS+
QC+f9Xf4C4@S--Y"8&6NKhK42qb%5a-1$je3df"MHH@k4,#'("eN-I4fZedMfiI5
XH@`TQ'AVS-ce")+fZiZ@6EU[#6PDFCQ`SQVp*,lD9G#dE4c&X(Y,GrMq"YNKRYh
`Gd-,89S$ZeBqkILk9EmB)X"BiFSAbZYKb'ACf9ZAV4#jL#mhAEaelk&2$)*h,"Y
2m!UNXkc9#$lI,VbaC@#I-bN2NGEMNe`5mM@E[Z)T@(d8Qp*eDG3U$*j8T52Z!Ek
r*aDY2XD(-i'EGah6)PUD4i2J#`BiS0d,4LA,mr%PkI&5l"@-c-r6Nj@PlRDD6Im
6MU95pFF-l8kiZ*ae($N%8*6JVMQdamL1Ai0DiUI(4ED+fNYT[S9%HdhbBSJ`N!!
llX$MV4`RfQF`#I2P2U'RL8L[%j,9B39Hji`4IR%a#jAr[0j*LmSR1Rd!+pVmE0A
!QAC&"UC1'iVcX'*c)2Fa#0iXE"dlLSE'3RP[1l%6R@QAXNEAMRR[I5UZe#8L2MY
f*3GdTDmU5RLHCb*hjR'$SbdR!YQCkE(m9NTp84I&#5!h,eA0$0RqYC3GppH9R3-
KZm"&[T!!q`eDCB,+&Q6C-fLB1A"6DT!!!i0$0&r3Bj'ic4%9&(V05Tc0-jJPkj6
2Q#9JNPd!VPaTY&(raBd4F(P1L`iS,(dKGES*1KdNQ26S`e1"4II9T&q&K4@`DVl
a(6023Pq$d6F2YZYbk#-Jlmd'pT@$'+96&BfNblc'@l#E8U5,)aAP#H#0m2f!m1`
J!)C!EJG6`pZ,&R$0`99((Yb5,@%PrLLQUU"r8pJI`hJ(jU1M3Uf43*TVjZj!#J1
6'd#U"3Lh(#%b8CQ5XVALd4hTXc3%6,d0(kh9-XIk5$E`[Pe@TS9X6P'jKcfYVP@
fT("J6aH&@EJZQZp)QM)1-KX6$i+IC%$e0qVRXX6kH'b`*0d*0a33h2d@4Ap)CU1
4TJfX*%@'4RI$#BS`qCB!Q4N`eE*659"1q6Y$kF[![9AMM&Vk$PaM"8HrJFTUKZD
9HkUAZCRF"a6GMC+em`*[I@a[PpLdI-l6Q8*Z@)84)jXmC5L)-1+9F[)[kkYbJ!&
S!,djk$)-",Q#$A--),h+S'M+V`85QN6j-#5@%lfX23CAViP&)eHmFVT"'laabB6
HiD5GL1@qGJL+bZ0#Q!!5$2bB9`$"m9)X*aK*m(G`PF4eC8LN*PKq`42QB2!#VcS
TYhSSb09MNP9Cca&83B[2BMA-99VB&Qb6ZJM$L%r(iaPM01Qc6d6MXB4r6Z"cHA"
$TYpYPY*60M'iE"e`fqY(@3""3qXH6dE#(VmT%#f1m%f$&CLD(Rc$5flHeH6BAEE
pcF01f@KV0R8$lfS@aNT$NR0ZlD(i[JMKa5'cfRKEaAE1IlCa+b)9)'*A21%r(`'
Serbk&#K8,P"mD)$hS4%4UdPVY#(V,+mPC#qll!N+GA!pPK`lb6TX,*(iAjpHrH2
ZJT!!$"ZdJ$`hmfXa!jdLiBQ0c+RcqN'mq-cKVUr-MBhSmLd5IPcH(BFcEqH[SEm
`(RhrUGY))Aj-`h3qp@FGp1)QlF49fA5Ued1l`q639J`RRX`RS$MA[r,AK((0j*Q
bibRl!@8UKPZ%@YCNE1C03ApajVGPikR*j1R)QVCDcY&-Pph-%&H5-)i&9lC'!+5
bFfa%LF@Zkda"-k-9HH)aEP9-G03-#KR8JP0bTUcXmE+pd")VF#FfdR(Bqj5-IZi
MHG,2dm0'!%HA3!2kR*ZI+QND0!l6a`XkpUIl$+lA2&Qe-*YHTIGRRT9%D[5emSR
lG[60Lmma(&-X6@j&d&bRRkhQH@MkVRJhTQl,rBr9GEdjpHrCb5RD1abU%HfXaDE
,GUc*dBBm&Elm8c2SAFq%6*80SEp4)Pf9DIX!6)'G$rJ[9f4%%S*Z%@YE@G3$'Cb
S"@l0e0c&TVX4B1Qb"Vm8UP4F05h!@&!&'0AQD"d0D8EZX@r)[jCD#Fr4FB1,bMH
fNTNT`lNA8[#Crjkp"Dc0ljRV6I8kEFZpS(rm6"JH0lApb&&PPX+0!i)MZQm(ZkR
qrV[,@*`(Y%&6cD[ME(NKZ*Krk$N30cBSGSeHMINr!0(RjdM#Iaf1CUAeA5aGZRZ
L9m224KT*JEUp+Q+$eHpjQQD`,S[0TLZ,XrMHD[Jlh-jXd)'FP'4PD-Q'b[k)Q&C
38r+FX'&m@`50CcI%3cqS,Pll35!)PID"039NPpN$k1JLGD1iM#Z)QIB'4beHC)"
($FX5)KE#@M`$NpZJEbIQ%+QXh,4B(hU#FV0hE*4B[[Hp@-Yk[`2'pIiXZh$bpKR
M+dEXkef,jEIm-A#"4N,jC$JreN"bPM5`#Aaja9Vh2+RNiThVNrTa`Ud50%0hAEM
V,c2FA2T0GKj+hCS'lCrmrGB6"*ZCH9*@K$1j$qX(4+Kr(83&rj5h$,EHN`JMQS`
r93h(A4$hP@e%kL+'AdEiJkPAm,K,lqK4pcM-+[&)Q4k(pYcllm%0mk$4$T2k"dJ
h$FF,*$1b6pA"f9Krl-E[8HGP#FHj40GM[hDd"1l$)HZ)K$je!`e`jfV%(JbFHaD
+qk[9ZCM[@HdmX`18hraf34HjLfrC(mi)QH1U!"44-lV@UA,@P,MkRjhr@[`a@0V
frhrJXReG8k1pY-JfN!"Q886r*BT#S1!b+cXq,PaG#6CRl!NG045BDlY)leB8(cL
IF&Nj,ARBN!$J"b2$EUplFZF#eZ"M@MkVJ*BL6-DH4DIY2K*E4S5NNNkIU$5el2%
0@pb9HSDB%SpL4%0,CJ%h!L(pFN(fFkrhVX4$Pp3f,mU4F9(a3KA8Z@%'&DXS"`"
e(2[2G&MXQZIpc3aZ9dXLh(j21`P(`D+E&VRHkhpBic9HdeZY+)q0Url"+(8daha
4`J+UAX#IPl`CT[DlP%)j2a9TG`QkGpF`%$LJpkK+-Kki,VAJ#6,C"+,09e4G5kA
d8qN%hERXQEFaI&IAYV"R-2rAfIH%VMdSPpG`ipZE-8!2Ni,+kP)`5U+10E!UZY1
S#F-`h1fE`258)+ICJ+XXIMikXNPPc(`l$I3@MXiI(ZJkf4@TZrK2#B"kkSfjG6!
mbm*c4%lEBZqX[cLZ`e4pNYm0"8[Cba3(dkIVYV3MCFqbdX95)41$#M"Y`ff6YQG
!j%CN(fZ(p@BZ98qc$2"VM*+fadL)52fahlr'bG(q5aLJHkEXbLjrk35lmRF,rLf
cl![irmGEETRZXqTG)'Ua"la[$!3mirE5rcKRkS`5fd`KaZBNBQ(EDXNZGhMH(V0
G&kBBCcA9jSiS`Z)"LE@CCKe"l,VVTK,G-LFDFk!FfhB!XHHJSS4(aZhe$28&mm@
T4dhh+cL83)cAJlb'E5fB49(e&4d26#&Mj"Bl88jfD+$Z1m5i0)`!XrQ!QBjeMDS
k'IcCe'4)b6KmC08G,([PSpFN3U"fF[LL-BV4D01Q&Z+)A0DQ356pCmUH"X(%[HF
R5"mICNQe&kb!qqPqC,*9qmCjY84a@1-$Y&@SiQ0h8rqRUXY1@Q3h9BL5I*(PLjP
(I"[A6(3i+[jd)40M#[&9dNa5b+QVNEkqFa"62KeeEG4DcJ6"4(raM%)6*1BKfZK
K9%qLifi[Hf+-H[&C8i&kaV4+*$LqkrAU8+4Kp$fqR[Cadi)YcY5$&jqeq#RIhq(
ZS1#+YN4S6ZJm2aNHb"F6&ajDj!Lr-k03Nr#-&jHFhU3mE2[3%[YETeTVAa'le4p
59M)UXbdLHjViR+hSMqC#c#hB[Z3*U9[G-e$kRV"GRV2EqFSJZc0eQ%YIic5&T@`
[eUAIdm1K21f)XQR,KmaTh+&62UIf+0EkKF4+%AfjPckY'4[iNIE24fI6A9!0M1E
fiSCS#5$@BVDekIHk92DQYjG!CdlAJ!k1e"BXr!$a4lSX&FR-r`B!DIBar811lK+
5c0h"qj!!$C!!b)e@kiXm5Y`pd2,Ld1'9F!6R#[9&@#ea4Gl31I([lMm$e2hZ[2i
6lX"R0LGI6SR6[$0$H(8k@R(,E5)q%`Rj&cC&S[XrNbc6VMG@eP#&%ZmU+CNf5'G
V8)U*"(F59CmK!-eMK)XD2"0j[0"IqJrc`YLIaJ0I9Mb"US-9CHX-M(+aEic8Q4C
6qV3UNrP2$aEkTrH8'581ad$c00GTM!UH8!pV`Q+@+El,FRmMb8L%Bq38@[C8!@p
,*f%XEH(KC%)`AJNJPFFCrA$QM6Sq)5KiCL$DaTbe3k*+I4mlf-h)%F55el%*`q[
j5Bq"",q95I1MUjTf#YE@#45F"9"0jYfFmZM@Q@B+U2fUU(0p$EIZMl2l%bEATiT
pc9BhLPjjjc(5bZZj,Sd0XrBD)M@AEc--qae*r8fq4NNAqi1fi6H"dL&Mk6F4J69
GQrq2q5dX8eMm`QEYA$NiN9*r[1TAF(1)3q2J,F&6IhHq"Kc2fGq0PL2GMcECb[0
TN[YHcflPA-'`d1UNLRYeCl,$2-1$ER`U0TPSTY(,N924eeX+`qDN-IkUm[U(PiS
+'VM`[SD&eQJ5Km&`Z4p#,Y,K#eYS!6RFZ,5&,mmPP3k@G#L"B*d(e#2PKM`m1[U
"qEP1bk(Uq-9SF$CPi))&L-&QNmkli0PqND+q$SE2V0)j&)C$!(elphfp$EmZJ&0
k"5dG8YC,[%NLaMPYcM"KVYN([-,EICA"pe)9Vcp,hj3BUJ052kLG0%#$U#ERB5`
qaVETfQ82A@Sp4jE-h3Kk!frYY+k5YK`"9A,pBUXJ+X-iY8ldh@Z9PAH`9UK!aHk
VZm,lhSDY(k)XA,D$)Mkm@CNh'raJ-1kINbRIMMLU8pPqlRL$UGhX3A5kp[4rYqN
4D!c1(YF95[T$V01$L$C`hrac6*bRT39#D"`Q&VHTq(U`"pr1mA(q6(*mI[ihK@8
8BDT$5D4jA,aEaQhQFH-5mH["4XimX5Qi1NP3qjBm-MLqa9&BPkXcj#cA*8G240N
rCGJ,E#RFj3pY""G(q!a5MZm-db-JL@6LhMD,(@5m)C!!6jj(4%Y-THEc-%)B$`$
H+J1dqVap2E5kmV)+Rp3IHf3Z2Ph%cpjkU0`l@Y#5eeU6JGK-Ql051bqZ1MGKD)`
,V-hZJ9XJ1#+Z[9Zl#J!RB@`+EA*)$3"SkFq['I,mq8J%[`ib@IJ3BeI80B&DmG4
+-VLDF+82h0hG)HFNIkX%kPRG(I@eJ!KA&,)3pF)bdUN6EY!Yee$!UKESPmFii2K
R,fhR5-!i@`QJ2P+63!,@Jm3IkM6lF!IRP!DC3!$ahN[,J-GZ9pBSYaQc*5Xb4aX
+T!&(CLNH,8HEberfQE2V9qL5`H)5j0GrcSKcReB9aZhPkJlSEB&XG@A0Y%5VI8V
j(pil2)G6NJ9VjImb1(rV1cH[pAZ6BS%h"j`YR#X"b@AC62i)[Q0ffpXQBHS08-r
j2BqA$k'SrGbXl99N-8H12UXS!UlXkqGQTFT-q[rA!'G"LE4!(m#D+Z@`KD,C@6"
8rUERQJ$r!-fb6eS,9Fk"0[#(F42!Dl!hV(F6UV2dlD8a6BR@qb1pafh,+mbp&mq
QUrfAJj@"ZBGXpAQJE2aBiUkdRFHGH3)6b(MJ*mqkmDKkNH8e#QiSU-j[icB5i8j
c5rJ"eKLklCX[DV'04aM-ldR,K-ar8NpZ'TS1a"V[Li0QS,0aCrXTDd**3q-T%N`
pqBP4f[Y!T9m)emee5%Km0-VC#!CHaKQJ9XkfQ4jiP81IULqC'4f-*(-)3%3)&B-
bdKQdM$JD&*l,3B&mS3J(8F15$c,efNUU#A5b""N0kB"eqjjqpmF$DN0#m%'"2,F
+d5dCB(563JHHB1lh"U+RF#hP)+iJ(X[+NVk4L,A!Y+ij0`H*'5fKH0Qd+GF(J$5
Zfpm#N3#!rb"(`e#p4L92Y[LBqBRX`b@EFE*(Q)0E4--[j$F'EIHU@j9Z#I9XfiZ
(&PE8`FAb+%pGM6#kUiC#RA2M98SK&)4iM1ZXK'U5SJ"YEUHlX*Hq2rp04ZqkY*@
$YL5#[J93FPRXFLiVbZXXBi(@E#Y&PrV`rMSVKF$0J5pCEQap3@CcD5%9(*1jSZ9
'Eh*65$-8mSam4,H`[Q6hki,,aHYjFPl5!(kqi`PYaF"D@PTFBiRS**E`,TU+dpY
fL1NU"3L8"j0iSG3)ACT94RckE(NF3meY)ki,C0!aJaj&r-CZj`qGl+1Q$rGdL0@
(A+XV$$D1HNMB&EAhQa*U3S'1a$@J2Z4*4KPi!Th`%mF(HKY2T)IZ$r0CNr*E1SH
e`F6Yci@9Hp@ZhDICr#NKdP%P!kK*i*2lX0pkFe8!QF`@Ah'1Z0Uc9qeCa,2c[bT
&$NI1*8X+G*UmIL1@dM!,S2P`9PiUN3brdCkPbHJLUF6l)VVZ3"VXN!!UcJGejmm
YiGac)TIJfpI[#%i!*(I00PLU4M$VkR-pPm41)[X,IDJ*BP*0N!!4$aZHl@VrVp8
'%+H$mk2Y-`)F&LIlj(LC@hpPG+bl+6DL@Q'Y#C'C3L"DBI)DZkEEc9`Bdr%K6$$
H4(T,j@HI`BA,SI[PJ6e(4-J,E@Eh6B-j&3(rc"EJ)@PU#'mIhA@9Ph&l(bR4U2c
cA9k@Vip,`SQ@KAQ(@BiGSkh0phVS)(Ef@q-prRFR-UcbL[QY&0340RFB1D#`SV*
F)5CL*TFL#DJPmLHS2NC%p6k'11p4p@,HHkaS%VF555TKqF'IT8C)1)T'kU)K(XH
KDPAUMFH)B@YBSmKQ`#2Dp2!Lk%fFY2dF,A'd0b**J"mcYic,R9U1`5S34hIal)q
kPLR)[9Kl@KQl-ZSh2p@P-B-I5G'ZH`9*bfD!%m,#-45rQhZMKM+DmmY"qq(ACFV
6(`'iNqh3&2)ahp-5'MPkG$VUq,'&Q*ZpH!2b!bPUj"'@FM"8#(r4LUd[bbVCQ@B
aC"c)bl5G!G'h'bVfB0LrbRU[C4D2Pc6MD8N+"6'*TSf#BB4q[m0e#eV*Dal5GTQ
`55b2+HaBDP5TlMTdMpG(AfJ6Lp)$8$3Q2KmV#i[j3`TbXb$hqrTH4IJJ(ZqDV#`
ThY0ZfAVY0cFR9bNTU)0eRbqNNp!q4U6Z-*GKkBM+5QFSjcYZSA%Y9i@PK3GYl!Q
DkT%DP(&+5pkCeqR,6KdjEaMcJ+)*fDlM$A09@PTkRjfj-k-RJl8Vj-P813$q)GM
%C*eZGX@2GRT!F-5d#DP1%iAMd+kAb*L`&,0b&S`KF[8fCRNA#N@IfGc(MDLGMUK
#6b80p)j!+#+YI4F'TAX%U(fC&!L+*4!II4X*%!Z@F3Z3!+)&N[fcaSKcKPMVDR0
V*AhS+-*r3XihqeM2*bHS89hKp@dD2+c)ck5"G@blTJ2YL@k#14H#&SI'RXRjqQe
c`Y+88aTA[rr9R9cfq#AHr2p9kmIZVAVU2U)bh+AFSaTAKZI-JjHp+arQ8e*J@64
$RF(qN!#MGYDGeSG`YMl!UH4I9$&KY&(r[JG6M(0H)-CKDZa'c8ZKJH`lTcV9i#i
!mDJFdM5%4TfUJ8iVh(Zk38F+`56MDlCi!6DGFjXP9r'T`'1Y"FaQa90e8hrqD,(
N23L[%LA!ecXhZJB2Q3i#32fLG`"B9+M(3XKl',ZCKmJ&UjPe$@MTS1@0-5PGi64
ZAKGUa#162C'pI0Vf`%2rrL6'HK'GrhA++i0'ir#@kSJ-+Mr%4fM"EH"5G1",4#V
SPLmklSjXV&"3AXQcYV@9J,6idL$M"q#AKd0iY!QmCIk!bSR1,*VNMPNfKGYhH60
JmdZ3!#!GXJU-48-AqR1Z'I0d"Ia`NGIIG)herX@jJQS50SSQplI'$bZ8U4GpS69
9qR1Sh0q+66HMiZ%H#E-0-h)Y)c*+#6,8`*6ZAP)"(Q3*3K&SqPbhE*Up'+0QS"Z
Q[2X-CIN+6-9`@Gd))mk2mbFVX$R$fQmNY%SI*%9*#GSl6%0T1IJMk)59""+aIFa
HQjpC42TR83kq%b33H`A@(bG#!BZK3XV`UhFF-LP!8jI"V2#S%(L!TrL$HXmFF!d
Te%1!0@658HV6TFZ'dL51(m#jUU3[M$Y@5N#f+CeLU2pA#F@q4F$0q[Q,H!@j[S,
mjF0"qC'P5'i&46Zq!jTBjT9T#RBN$,jFb(q'rpl1V%+%!GkVbiEq(bk)HM[-8Yh
%ej-aQ+e&TTZ@i#43DimUVYkkVpRiJTeS$$G%%#PBSjClPDI`KGV1L1UQ5-kTjR@
5X"l(AjM!QH1R6fd0#9X6r4DFhp'%1$VaLPFKaIJd0%E#,ecJC5UZ"M"e,&*8Y8L
U`-Ba6Y9p-UViXGhRcY3UiT%'2X&A4RF`GX%JkDh5eaZ"bcqIZrYbQc#Rf&0fi%8
KK81Y13%MQdl#QhIDU1QX"!mqj'V0r"6@IcbDaP8%ji2H*r-4d#i40"l+djBdfJk
RqI$BiMpVS)rYI-b!AQJDc2bU[))*%pA@8*`pNYlN9YY1E`k!c5`%"M,!%Tb6ekS
[aPlcmIXpMD%BcZe#*&U8KmCK-4"dV4cci`bj9S`@jJ*DZ2EZN!#,5B(M"jA%pHm
C[@-Q54&aP083J-N4$1"iGiq$(%+fQl*hjFl&X-152$E!FdR8pfa3pI5J-@+9UeX
N5prScEY1I#%S-BGiF0+eiBr3A",)$kL&1`qErRdpR[+STU*GU-R`Y84Rjfj%j8e
*p#KGZ0XFAp1qAJAQ2apirC5#jijb3X3!F5E[95$$c@%'52k$`[RF"hD&b&Jr)9A
&ELjL[aLmMQ&[6DF`DZ9GQJaCleYE[Q0"k%J!@3PEL*R(@ETDUr%,dF[1`rB`Ae#
8Cd#clGUlZr&Q+(pL-e4b+K036bfeR2"Xh9GGM5T3X8A"Y#T`&frG2151TN2hq5L
@9&K82,A,MHId*P$2&)GZ,IDS($J9(#+%aARlP!LmEGALkhde($p"-`qCj%X2`Z6
bXHYpq944&1fe3,hL"(SE9Y8JklJPVHqHN!$Y)IkmGIZqP'k9Via1U4-kLEjS&'k
bB)GJ(2mSec41mJ`(dAk8Q1cIR,UEXfILlH'`R*2[8&rT%J)Y$BaR'qdF-"YL4ch
ai)51)69@Eq-9NrXiKVac(H+NUq@UcTLm8kJBYrC9rY2QPZUidEMkmXac1!Mb5pd
dD&Zd$B'0XD3N2FZ0'+iE@fQRIZA`SJ$!0krmTUfcrTeYY4@c%pbE9c0&24IqLBe
'QK6Z)il6'8&9k!hZ"UBKrV2)c$9Ff1c1mP5%C[CXBiTkP3A8D1HUHZ%,F*8RE"j
1k(e*Z#-b+m3qC"XBRd'jpr4p3B)@kGe8*6LSj[92el5b0d#FhUQm&!2a,q#-k)r
BJXFBY)RIFHmmiQNVA8HD"-1mmF!MU%`'UBL"MpkLYNh6Y&0Z`**K0K$ppCNq12j
ka!q(PI+,R('phLiKCUjd1%[h)U`*U!X(KfS*e$ki09GSR5c4CI8Q,dU04H'lX*!
!,@Q)(Va-1dURS+H)V+5eRchX"-aRqBe9UC9BcSKG82F#)2SC'i"$L2`CYIYM%Pe
(rB`"QEfF52bqN!#9f'#"iiQLHB`)ipJ-PalV0HQCkQ$1-`BBIi8@Z"Sf*E+&DZm
&plJZFYIMk%(h&F9MBqG9$$H,6PU3!!I2Qr5T)elq[E$*h%!q4&9a*McKQqP242R
B[91E+)+A@DNG`USVfX-Qpl+(bP'ME4EDNQh5I4fqJf!lfr6DZ8&cF8kP5N`Vr&L
ar#cHQ3kS&h)AHeJkbPj(&cABff'Sr-&p4M64iPSJhZK'6&a2#T'im@IK)i-MXPI
NQXSqpH+kP`Va"8V"QaPE&daLbBqSl-XEE1k1Abr$*NqE!)R`%TQ,iRY(`QMSM1#
10S4j4*!!rVdUM%B`TDHX!2%eeVbVFQ5TQ8D-6)KcSZPb[fU)Jdf,iJM10qJ9hR3
-kYPBL#!NK'!)LL-Mkb*CQ)e$cc,pUcM(*4DN,H0CdaR'MdMZ4PXlC0NBIP&+RE'
3!&HjjNEQYT-hRF$hGk!U&SKELab8Q'KeI+LYLUUk`8mKrCm+[DMSFkV0i8aI3V-
GhNHMm8e`0f12&N&(9c3h0@(@aY8-YYYZ1B!ED@lX$(5kD`XAjlDSVS"kpDCZ2b6
qA6,f382FkrpD0cCY%NCM8paD69YIelk3!'YF`G1%(0A9!bZ-QN0Tr"10[L#piKB
dPaPbBLUU5Sd1@V`SeS*rBUS+"SCMX&fFe[,l*'-hi*R)&KeP&c9lXcI(4[%D#r!
MVRaC3C!!q&aEK`eF"b6QY)qSM94S1l43Ec6IBXC[j5pd,FLAYRih&H0[86p#HB*
"aC(br"[9#QPP9jVS)dLa-6ljiaBQrBZMApP9,0!3Bb93N6`NM)DdLETA`N'c[&+
`NBQZ8ZTEmbZQk0prX'rQ@DP!&3L1j154Yr$rY9b#1"IraXd'&K)bpHd5%L#9)qR
mUJcUJ&T4`$I$k#EX5mj-$*R5,JffmSedChJGDN(AC*hN"H3YD!E1U0$-D,k8dC!
!-VAb(iA4qh&m#J*j"rYm2Z)f@Y4&9$3KNN6@!GBQk+5)j[Npdh#HJ85DkYIeH9,
0U'd4)kLj245jG6T(LH[(2e'9NmP3XX1YSb[6ZrZ@'l99ECZfhHX&il&`j'fB29e
#8mTl-r*R[8K0bPGM5HD&d1#[HY#mfP!hh$08$*d2G&FALXICjUSkp8$$K4KajYZ
-@8NT96L'H`$H2[IHGC!!M!1(C)cXbD5"fRRCkQ4H&m3!&Zrq!5J2deIcFIBDFUH
l2K$cDkaKJU5d9-$[(GAXD,fFqr6IZUqPqCQ`pS`1q(6X,GK6N!#jIIAj[FTXr'[
![PHF&lI[Vqb0A+CmT'9i@mTX)4)VH[MLc8Z5f!-cDp@Vk&XK5Z24ibq3!!6V&'H
2FlIKia,fmfhjZK@4S4cMNZh%CSb)B&a%@hPiDp4aaE6pq6+ecraVH(,PcBLcaN4
)A-Q"l'LfEL$L2HFlLr6j2U5#lcbF3iH8K6`N$XJ4135,SC!!XaSNhb"ASMYKc'I
MXc+F+-j1p039-CcPaMTPK61aC9TU2hN!$bk,'!h2H*QhMH*EdLddZCK*e`PrNe[
C0@fTUHE,4bXP(PELR4ha8p1YQBVicIaX'aDrciVc"#2Smr@hp`kBd9VE[162XDT
E$["*fl"i1`eV1-0RLPMcZS2YT5Z&kahG-R*j`hj&-kkFUYIk$"a-THRd+E##Hf[
Em5eYC)!4LQ'&qcf)2Eq9f'PZ9K#[E4DFbT0TaAHbjZ5[PkU5'8&CT!R-[5pP,T0
3J@"-KC3%Q"kM-('JcBc%Pij8UHd9bMXQbD,-h-1#!eZ3!)DAU2K3,p602B-#Pd5
5%PEXZXKIbA4,&jifY$a(iLl)hVh6PIAS+&'2"UR5a+NB3!J1B'@ABL$bKUN"ApX
h3Lf@2'DV3P@NDRL'Rfj%,J)+2d,3a8V"YVHd4l8$LShG+T1HK@Q0JKh$f!"(P`$
,YLX%K"2)R1k9cDK4F5Z$EZrYKe4dlEm`#$4j'$Lpjhm"2,p6X6U-cMrRjAli284
PL,eZ[#YeAa9TpM$)06&05G`%%N,CN!$$&i+8SQd6EI)T5%JP1U5Vq$Z"Dc+5[r3
H"eeiR+[(ZhapF1iZTJXMP,0l!`SejbfdV,lV`GRfcm"ACZ8*e*!!"MPd!ir$Drl
Q!YE4ZEp5PGFI&'0`C'C9Sk!"hT,0+H9ST(VSd4e-QBaZd$h%C[*(9mVMKfG"JfQ
&&CPL$LKTUcEEID*MEY@$DZYF,!kRhS4hYi`'rNP6hb0#X+`1iR@iVSRQTPG!J%N
9DHmrqRL#3$de)q5B([r5#aM9)p'C6$ZR,-E`45%,kZc,6R4i*FNbMer6EL@L4[,
%E&2p4@hL*V&fjKbF(Kq3!&Cb(#[1!,mXqbf$U("*LB**JMFA5YPY9$5Z`Ijk3j8
UH)Ia'q3JXjIUe15GPb03r&(Al0mIFAT`FFNKDjZrARKi6IaV+i1IHC,q-q%HJ'p
MM@Yc1SKiRrY!V$SI[[j`P9'V`eAJpL(GSA5Ha0M*0ETC22f2DZ4+aZLB@8Ib3MP
YrD@*eNI5HLXmQ`,a)k3UMDGrUme*1%CIfC1kcheRb8i)%CQErf3dA`iLDqjh`P4
Edc#Y30L"QCqMb[KjDa3N8ILE"H"K&&JUh8,-"@3B3eAbN!#)QRA*4B*1YX&YNej
*Kf(90Y`MX8Qm8(SPd9+fE"J"QXIk,3qE6)UKdl`S9TA6k0EQS,2ibk&EY+0SLPa
kAG`*MQTpVkXq#9$Dm5`NNBhlhc0#&&`JEEaM[BXc!0Ik`5U%&2MCr%5@MH@ND)4
M'S86,D1,,D3X!l2UmQJmHbM[#2dM'PkA9GJI*(8r1aDLl)rMXFCPPH1T%Z8Y()&
hm$0"H!4M@,E)GC5afY6a%1ZMJVdjBCe'*k8i#K-H[+DpQ'mKG'SVZSbJi%&DSrP
IKHSchp(HSSASDA%0F5R39P"#S1D"lU)frG5fGAhbiX5Eq,Kd+(-983'9X-m4&fR
DYB3$6MG*0[ERq0HNP2DLUp@U0R311'`3(a-l3pVfQjY$T)+!clKQj6L`!26k2A*
ccBR,DHV)T&QVVjP1UpieiFCIk"[-hM#QS%DLJ,8lVa'#'Gf`Be@Tq0U104I3F#I
"6,jki6)#JGJfNV&YYK(-kle5P9L2ZP5@EmU+,XEU*KFlXFl1b)idN!$*I&YLj(2
A[qVS3hjr&Dm#P6#4QqhUJl"DUdICqY-3V'$[A)3qJb#ELfGkQ`&I+Rc[k0I36!d
rGKmVRVefl0"FRkpPrq"JrAPbGjeUTM+6iE9"%3j[UP"%Gl#2bGV)3[dhM6Dlm@S
A*m2hkA68JDbaXB6B93HK[*0!83UhfGafkJAXH#BCp,F64a3hcERbS4J[aA,3ekf
!AKYbl$UceVPH)XD0PX@eJFPBM)S$G"9M(3kT[LJAQF8@Q[AI(!BK#@EP9jh3NCB
aj*C$`AQ"TFep%U&!YI5J5lp)0Z*`HRB(a-5ki0r'T4K2ZQ&kQ(Bl@aMaQ$45j!"
f3``jBi"V*I!'09X-G&E'Fbdf3&DF(%$f0D%,qjP(rD(cSi9!LpNLcp@@Dc5Q'+*
J*eJF$L0-lP#f#(#@PeG"IHM@"`DUQDk'XcLT@cVL+N'YiMNd'&5)SS!0AG1#%Zh
jmAr9P-YlM*JIPU-rDDa&#5m4l#50$YCU4fT8FpkjS-GBT25BUB2Gdd'h3,c5HJ[
BrqCePQ-2RNYSEUe5TAViR@D5h@k(4KJRX*[UKKiQFefVS9%+J)@N$*pj#G!2k4K
A6K'13#MQ(h#+ZX-mr'V!*%Q[jU!KLc"9DEb6T*D&XRhd-f0Qm9q3!*q&9'GVE9h
3BlM8RpKT@$9j*DPc,[,!QGr)1i$PYb24JTDB[+MlFY15R3Sk[BRmS*2[A,J,UNI
TG,NGe[hH'r#cYJ4(Qh3c-%`)aJCbYYbd0EmfU$!iKTqVe&6eb,BMaeDXdeY0Fkp
GiG2$B(%Z1L2(H&JJalN$ZHmcKED`41qLf3e$ha8'`BAY)e@)#aeleN*K'akc"$J
rMZ(EQVfCe%3hhYAm+%%D'-BpYeU6#49M&ZZe'8dp'%e*Nk8Nf536iT12lY`SJ,@
-+1Lfd-G&"#PEL3`GNeNB&)TNCJi"CBQa&-5UQCT9m@G*(2!*RRR@fC*lGD-@mm'
SV'$-M4qa#PYfQDTdI&`2%N3QADlXH$qdAq3pc4-NHhND340%FRZmTJ%-cc-da2N
(5MX88*9!&,pREZ4qU,(iaRaCDNqR'FRl54kIk+H'JT!!-a6S,H8Jcjj5#@aH`CV
-[Jmad`&VbqqlVCR*MBfCMR8I4kIK#[+eZIU-Dr4G@&,QNC!!aPYJ#UcJ`6+eT*!
!`Z*m#TD6`X)jUK!T,e14(!rI!GPJ,qf3!)EDiT)q%#ld'dd-#LbMGl45,IpN6LH
[T#*-bhYV"ffKJQr2TbSKeAfjLUd28!p4pk$J2j''HEj4q50($J4-*N2G&2ff)NY
`)@R*K"2JV-4%pqmU2(I@V4*`AK5B4*`!Ib4`Kj!!3`U0l-'HBH!A%h$`#$rm&Li
dR6BLhc`aPdAFkNM0e4[GeMA!I%5S!rHXRMF[#Pe0Dk4%,9%`e2(QI$KBE1HJm*b
4P[,pD,HD(*JGl!1T-ZKd%HrNq[Y23bTqF9L"$Qd[XUkQFcFd"NX%,PRHYcDGM5G
%q+L3!$T!0KjXpb+5GS6mdBmL[BE@Q![Lkkh+"hJ[AmU4f"Z8[0DVfSc&-ZpN'`"
3-8E0GZUED$MU`erH'l9Ee#+#(Z$B`C3'NqRK%+,ljX95I1Yk)'ace[krDaLL@LJ
VZL#@LflRbDcA4@[bN!$LK,Pch3N3@4@dC@!V1*%UQP6&m$m#JJriKh''NpS4VA&
+NpS4VEj+NpS4VA&+NpVXk4JHVk9SH9&q-HLjP8YREKbH,f"-3S*%d*!!,9R&p@N
'CTfNlXm[fY1rGNAdmcCl$JkM#"JXhPdd4Q%E6UA(Vl-3%dM&q"YbUY6(R*Cq02"
qmcmblmDF2Fb"be@Sq[&c+YjH$M$klA[q#k4!l4hj#jVarQIbhGB9k%'d81Ch9q%
-20CBXRk!kN584PKRUj`2GJ5#(#hjEj,@Mf&d*e$b!3%kFN6,2`l50)!DZ0KmGS'
D!1'b*QBJ#[-dapqB06Kq&N#l2Iq4Nqf)X*[-)$qqq)hl%HQ0CQm6S6G2$4)4U)D
&E`hK,d8@iVBH-[PEViFS`4Dj-KGc8DbENb@AJpF*hDQ+pl-8U1q*%8@i*6%mTU8
4V4beN!#id0EQE`0p"MTbp"PQ4*!!SISFRK+lEF(dkip!"bQKZrAD)XX826TTPMK
d1m-rqPMJEZH&B%J0X+#`Jl!+b`c)AE`H'2Y&Ia3)!51'#3"YKebk+C-MJr0,HIA
!PNGJ#LHU#p!JH(AVGNUj[-0imF9pF$38PcVNq`E#V5&,A(PV"'UPZP)E'aYb,mS
RC1cJRm4Zcm@LHYAYpLB&4SB0"c9@JaP4I*,$V45hY6P"9$AP-Ihjq+@-4mpI8GG
X1k(`64SCq'fR6[HfGL0F44ZjJV+0QjclTfI5lI'eD0Ll,$3YeJG0d#H9HESaEER
"*5A[9qK&l599IkTAfiUXfmqP$4#&J(FI44DlPX!lRh$hM&JhG8Rk[#JhkVl@398
UiNkr&JGUMY2Lck@GlDL"DMVNU6A$j"!bPh-i("JdSm#!--Ua9d51Jc4+if@C"DS
M&8r3T*30Lkdf9CXDLrhKqe!(cj5a0#9V6268YA-@lM*E"`@N[3M(qlB*c)RV+@r
%%CU*$VJf%2!$q"'p,rSZJVUPNVXrk*V"Ba(U#'VfF,lJ+5@qND%a9'T9![P*b(V
2iA5cXkF[0R!)Peq1TCFe[D'XVm1!$m0VE8#LC"m$m4RG+JT5DefhLK31e5I$[T3
hl@L4aFU),pU$NU2NreVJ`&EQh-"cA*E3B)#c!Q$6YCDae-!rrLlSmK6fpFJ1(N6
&)hZ9-FI6)06$SPB!@6)6cfi'IJXfq'e`emLB@lB&qd5)8QVXR'b+m,HULZ#(LP1
[D-1X61G$jNrUVGV9pEc,)@#&0%K5HpU&#ki5RjppZahccPba,HpX&@dLfe(+A1`
5keLZ*)%[11SG)Ne4AHE)b"2,iXkGBMV3ISBPF0N)4GLNmhH%(VdX#+8(*`X9#(h
`MJ'XPhKUK%ViN!#PSH$3e$ACCS583eb-ZT)Sd&eTL,b-%lL3!0p#aiFY0U@dPCL
!qfXG60"peM[(ADcFGCB+Ucm)h4PV(A+#'Dm5%)@'Ar26B40bUe@CaDCGkGXG5lR
FcjY!5BblJ-KYPMhI)1K!D"mT*`CAB&[SE0H&ae`pkRRZ[mPIk`d+9Ac)8Q+lFhP
D[ih(Yrh(8le6XA@A5i&QSi+mECL3!+1JcEHqQENh1G,Me)F+[9UPaXpL%[MeJBL
dN!$0G6GCXqCq%5K42N4[H@'5MHZiZBq4aP1-jkbmKCcZ$hRLB!-6GJh4p$CFi(6
080XN@+TZ3D5BB834bcUaRRH"Y-*`A8[YYkbK,b#fS+Tc08!E-b25@"YXZQfd@pT
Ih0N1Pb*R-DA"lGmReMqRbaM%f(r0,GS)[P0PlG#Y(JS9+GJd%4i89J+mI#9JTY'
&B!E",'+*`aE#3E%Nde4f'1&Sbd%FI+qQ(dlT4@3DRL(%2&jCZ-dEj#$Uf@U*m2K
)Rm'BB+#6AM&BRc)Ph+dS'AYmi,6JkpdAiX@D1K"9"QBJam)(m1@`9VE9D#[("`S
(apJ,1m1R-&[(!Mc$Ubcpc-ME`0h)88[Ifk"$[r5fI-p24m&A%Vh&"-ZL&1CJPdh
f*4Dl*deE4a23pR&R+qjlHrHMmqDj5JaRRdIek%Vd2AYZ#N`pEQld91HA8criPpS
4-C6bF8A$QfXPR1+`ak38ack14qFR,)Ae&NXD3bM)rXZYjAk6ZI+U!S+qIQKDPL`
8STMkh6M&TVm2cfMrKJFTPi%TamFddIkdaE20Zqh0Y,*EcINqX40%6-G*Q`%3KfQ
N0GC0IHYd-6(k%F1,kNVqJJm$&FGcT)i##Kd2qpMmDL$)*Jhf'1UM*EG`blZ3!)U
P*60j'3hCPB1MH%"Z5+V0TAVX4k9'+,44QfGTjPTSJNL3!%Q8pQ-XdC,+d6VL)cR
5-Z$Y36298h@K[bT4VJSH0fSmPVC@Y`%YT6GcALFm+!DX!mX&G5pl%rD-9&@!5ZR
CiH-2NQaNrrhZ6&j*XNaH9&HAVeGbQP6eZR2p-df+5'SMIaf54d$GhFmmHc'&pXI
Vif10,m%iL0Aa-1TX#m#mk@T5!$[BC'5#PERMEfib[$VS10ZeC"94`m-@Blb!J#8
G[kE,'EqdRl)Z*42MYc)*@p-(2dDkr!%M[q$jq+8l'8J!AU#PXf*cmjkbXd1@)56
a![GQ0H82f#SBD#%IiAqC9"PrN!$NfAmY$RCKdD6i&Z9EFN28D-2,Pp!*N!"S!1r
!4pTA#VDSD*[[*E2eHhh5Ah,r&,eGFUd9Xlr2$m2XpBF-QMGM*X#@X*Y)V5c&4Lc
T!hr6f)U)@HGhd1k!%FUM`L4($$Tj6-c,*YKU@j68G,IZQL"aeVU$rf6mf&$F5kE
Q8H-+BaG*b$Ue"kSja4K)"cdE)-,XCbRi6DX!$eAeF`+4+ikApCiQdmI9BTV6`,3
#[ejrG!rSDD[h"KFIU`*ad'4hcc#AIK8lMTE5A,FK0"mGfkMY3Kr'JhrT4ar'K2C
EC*0!-rdJNc[T`XAcS`GcedVFRSJDPCal'l4I0I[P4&C&EXfjFXMq486pq(DFd[-
`+Am'%ej$Db*iMZLVkBNN83l8F$BD@L-ZE6BCb*YP@iY%dB8EE*h#9Fl&'kpARr'
E@'pa,PMTi"P!UekXF30(A0',D#)[JqBLY`TR&THbQNHXRC,d*ZcpHUHFGkNFbl-
iAY,U@6KA,`%EK$@[[G$a1jKla'*B%am@dk*NH3qK$M5lV$e**L2[5AUhFPF0RXX
$+6ak8NhHhb#VRjS28$UUK[ZZ@-h'TRlBG@Q4'GqJH-e(CJ+#RIG4HfT2X)*b5fr
NpDLbBVEKA01hj5DiE@+[&Ti5#JAf6Hdi"S`6VAd@'CHGJ0d&b*mHKl@IJ`[%eY*
Fj$P#M86E@ZS!0R8[Xmk[aU[c#,DPVeE5Vb0f!c4+ZIKDhccrNKL#mYhF`"B9[eB
(@51fcM*p,KkCrA&%PIqB1A)CdDNlcCq2GZjfPJAZ-$mZjUGpd"aHImpL2YNAhYb
h6PNLC[Y!1FHkalV(mm,,$"kIdjbmRpS([cjYIjrBf*`IpVqFkYTfR`IJ+qT"XSc
UR2DEf0J9RpTfi1VUfTm(pPpD[jq6i#[U3E+-kTc9dclXamI4!pKBUb[&TI&dRUj
U5SbCVL5CTR@)$5kYdV$,YCrH0TXdE8UIV,qNqrfZ5MZF9pNXVXMqAIaIIDj"U5a
6SDi$S-rHZCQLk20Yk+-SlT@[606CE6c@Ue(mSc5[Iq9r#`%X)$NJl86D16pk2d$
0,J@(TpX,c0dJ#`Yk)#!$hAJS-3,XE[G9(%p`4qa9h6VG')!kA6&EAc&D&a"@c`9
QGiQrMMVNqP)(m3Rb6p(bMhbkN!"R&+d*&N5FF2YJk)%5b-Jb2bTpET@G02CTP$2
3VX5+EDpBqR"3VViD"@d0M4LHN!"T8jpd0F1h&e&bJALS!qLh#E3bJ9)%k*4bS`J
b6HYDYCHB%Gq9jH,DP9&Zm[*YDmK3,Hp!')5jTVR([YX#*8J#(S'9-3G6-FMKN[j
'D$bA%GKl6)2#%h(8Ui6FY,L4QVmrQaMK8kTPRK-LH)rFThi)UF+#5[bCA$3d"$d
%D5U%ddQbJ"H$5Q0151cUNdme&3$CC1m&0ac+E`8&ep1cAGPM2$$ke9VXQ8K*-@h
T$b#"'!jKA*95dKK16U`8alVJCFb2[CF'PG-i[UeT9f'F%Lmhj*YBp`FlGl@8hGd
&a!*a[B5mh[3k"VeIMTXa'e!N+6FN0XFTL9`)"*F%-Q*0#m@'06PfR#'FJm--2[,
'5EqFXYCXL)qQP[j(FG[-[L+4NY)",''cdQjCG3Q6Ehd&b[[-QhhNbF4d)-+j)S2
NE4p89CR2(#1AD%Ee8"-4l[+fkZ5ASGA#qlN8@d,AVUB-"DGK@MZUB`$0e%aPdT!
!P%(h98JqrciBKT`[Yd+UheJY"EcJrK%JZZ!)c'QAN[a``,9"-[6"0,je!E*4bl4
MYRZk-#8dIIIQ2$i9eL"!',DRY+*(D$lkbJrG*L0P&ifPC)U2c*QC-(+iq4KR*J6
,TKX3Gqd,#eJa`Zh#0m*aRiR&dpK`($Ej3kF)YY1&-)dB$d@$VMT8d`qG&"#,M24
hfcT&aGh5emAi-RfVkJEEmP-SbmJ"VkYBraf@4G)dU8pirLbkf*Ih-C&VITcST'I
)*F!'G6C@`+%"bl$8CU*qQipiiRJ,Z!Z+2DFS`QYBY)&QSBTYh31V6UT)SfSTIR(
"%mK8a-BLEa1R+PS1pT%i@1d!*'EX50q4%&A4La"$EkL1FlaPr)qI9r9$bP9JHdi
YlJ)$0b''10"D$Tk@)lki)NLrU9!ZL6T6"&$,V)@p[Q!lSXdCdrSX'%Mi0Jb&Bqf
YrVi[eTEYTm[e[EZ22'*MhEIIl[$i`"L(faCQ&%!X-JhiP*RjPf&eJIJ)H1`JLd`
k'R0eMV4Ym6r2`I460TLE0dBUC2qV3DH3!(kK)Efp,SA2m"%EZa9`HF,'i)N@bfX
,Nh6Lq4FBjM96%jbiNRM@*'ZUmTm31cMKB#[NLa"6B#30KqhXDK0pZY$T56Th#5)
$F)CF`HXbTjZZK`9p9A-YUj8(6$V6(G4S%m[$LChl1i6dZX8JdCE*r,jF6l+d8X*
r9PZhZ%NGRBrJ'JjP+KhMQI34F1X(`dK*aBG4Tr#$#,D+#NVm2C5U-0Kif3k3!1#
+,$iPP4(4dRDRXbrK)'FZmQ91GE+I6-FSX+5%9NYbM5bLVVmbbVNaSh#M$VR0I%5
G0prC"EDR$&J)'XX+PAhDBf#G-K3Q[bJ22kG),hTZi5&*BH'3!$4S8hjVb-qKH@3
d@l3*-eA[mPMSmZ$c9,3lN!$Xl(N)f6,lS,[Nap+Zr$d4p*Z)("p5+3C!YdcT!B2
er2F'(+[fG!"P6pYF5S)[aX4RP6FJ9G`(cefrfh`hd'"5j!'CX&i8%'jG`j,$[f,
`PN'8[$5$JlUm)TQDBhL2faJKXSr9*`6d-!*dJc'`X3LlAaM6[XBD5@SF-Kr3T'X
rd-N33#8N0#F1lbhF#lcd+Slmb$)K5AVH-GNbS!pTl6'[--"-9YU*UED+VClV`ea
BV$Bhi6`Lrkf[`JMd@Q!F+LEk%Ar,AIJR9#CNFpG81[dM`B1&Q(pk'-r8qGrBMh#
%(0lkG1D*8eCH%TE+Zr0L9UX)L!!G--!QPKr56c#k*jf(6pQ,Gc0jl2AZ(q!Y8-,
Kc"TF,lPD'PNVmZ%DYFE09Ie5hIGpLqACGpp1kmT3kX0'Mh8i[")+G`R&Qeph&33
ieqHENZ$1X,-&[XqC6crf80DJm#8JZhq$QP3+XD#Udf2Xh9rCZNfDZ#j$Lhq[$R*
dJL$AifXRZrSM%*%k`@d``0%C5f-H)b`0dQcc5!(I04+mUB+I`$8H9`iF2E$Y3ZF
8a[dEljD`pFj6JkhhB'6)eA+SbiKp'90HBm")CS1HTf"BXPEXiD-"!ZF5&pL94bh
DK)ZVr6ML8Fl8,C@0AVfG8*@qE#-1`H0!T2qJa#@E6`a5EKhl"a8bir`f"r!b`dF
ZfKmLIpPIH8+`,68D)BSfr2l"%LCL1MMbHT9[D-8H&&P8XR#C5Fc#'"qLGl1b4A(
C3!b`"pe(Z8dEMQShF"-R(%M5CY5Yk8hK-Ad(h-aJ'(P4TMVF*CB@lrV)jj[GJmc
(E3dkE3QFXi16#il9D22hDl%$12JXibaE1Y6X#PbN&H`pb$m9ML4E8CFX8P63R,p
GAUcfd%TKX6GAC5qGF9+KY`d(!$E+N!!952A"Y-V-a3da5L%JjjMm3Ti%+l[#2iq
0HFGpeY'4lVB[X+#rpBl(3UpMJj2EBQR%`R,SkA"QVH&@FUbGCYiLE%PHiUFNV!k
STqHepAi85)VXhr'BI6BV6p"ZQhrU9ire6$N(MrNr$h&9Qa-HcAHpFZ`H()[AdcD
D'VbR@KB&X*ZremmArp%"8X4hh3fRc"XQKijB3+H8P`mLY`ZRh+Ke)9@Z!(4i)Z6
BA$V[EJ4@)6-J1J*QM8P5mF)Eq'@YH((GYm)ml3ajAl1[p1XV0Fj"r#L"a'Lhaj)
--R-)dHhTH5)Ik@Dp,Im4%5[d0cM)-LVqKE16,M!(p*[BpL18lm1VqX9Bml3,[NI
B9M)GUTQqm[jhGji3"2AH"c!2i)f0FR2rrR2"q["0K`EYZR-PN!$qE`k-Z%%eXF6
V1`Sq6lPk"RGjeJlI)%KrQA@ibb1FD+cIQ!LREH(46eb`PfqV-DKZXNFci,P%2Pe
C,"G$rfe+iX8bPLQ$j5b1LBe2Z5(V3(QDL-%bf8MD!6"im64!p*I$,a9`HAF'Yj[
f%&a'P9E[,YJMl92a(0kZN8"9#YJk0q30A1FK&)-(92@jZ*%UTbPl[1lE%4X93Q)
FB*kcZAUi6pUA)3`6R2iaTAkIb+phCX%haUX'H&[G2BVmF!R"U*8%+,09SmcC`B%
pJe[k8QK,I"SVY&Vq'`lAb'p#3JYV8V9%V`aVF&#PJ+'pRNae&X0DF(YK'(U#CST
jZ!e38MSdcV9*B+f!P1Y,+49JISN#)ZBFFA!j#r3H3#BKX!Tl4&V543c1*4mI+)2
d"h@'ZHTp$Kbqp8&d[PE-JGR!+H)$-5$`HJ6MpCD#rlhJPYNXaQT#T,NT)0&AMS[
r+&#TApJ6h@Sj4P)MmM(XN!!9+ad,3%Mr[Dp(JM8FkmEIR4%EhZFaJ9@('G*dNU#
Si3Im9N3!#fZXj+Aq'V@P#R"D[S0Mpec3eFVa2K[&XiNSE!NjdBk$lhpri5EdE@5
&[JUl,@(ihE`+#Vf`UES3QSM8AFFF[Ni9mP#,HRI9Nrk`F-2035l5b$4[([fY+"'
QVJcaP%'%VIESf8BJ,lrV*8TVqCBj95B*3B,bSpBf0#LG!@Bl5Hq3!"+Q#R+X#ea
mj$mY'U+KdBrNiIfR8'LY95KjS$R`%1ekl*J$KHb!8R`b)Fek@(#QTMQ8%i0h2,+
k%hI%Z4@dk&MGa%AbFMdY(pe2[X8PM8#4#cq-#ZrBMNbU@25qbkJ$je-9GL6VM@&
'lM4AZpmlMH$Fb335,`F2b*2Y*FN6'"B#iVIYXmH(i,ej(Kr*B,p-c1KqTiS*3i2
G"cj4kX&-6UcCbH'Ed06kA#qk!#JrM"V,E6YA%khA$RH-l,Fk42+lS6#pF,UKN!"
6ck,!f"QIBLk#)"K@JC3&TJ5KDh0hPN&e@4`qR6%8PXH-8dJk45(#j0l2ClU-1%B
4SCG6DTIdMP3a5"TPkfpB+!JD0kFS-'A+qGHrVqhBbjAG#CHab*FYjK!#Y81d3#3
$!VRIF,mddUNF'f`R+UeciIhD`aa'pQhjZ14dAYkF%6B-'Td,jJF*J'45'16aUAR
R([#")&VY"A18"YT,-C!!FBXGXpHTLMc$DCPT[52,VrcYfS!QrG`$l*fIf`lql`1
qUMJapE19M5$P6kT2!9KcKAVdMb(Q)KQ'kfRGFqeXlaerKDSj)4Z)`MD8T`MN$%i
pEN+3!)lGB9XQ#Yrpmp3j$XCP3-prF'0mEP-Z4MC,9Y,ChAY44[VYc'"E0M!R1Pc
K1KHfS*3jUBC@-[K"f8#AaFe6Il0fb'Jb1GHe'L)hr"jKXrJ)"TF,I2+QAR*8eYf
qRDRYU)b@UiBj#M5f5pNGE`I!rSm(fhLN5(MXT#ALc+5"8CJ8+2'`42b9DK,dYmj
$5)*B`lJ,6T%fK"Sk&bQ8+Y[*MXq8k1G396l4"95863#UZdKAb2d$0J3a-p$N-Pl
+l*5#28B@H[llAdYiLN%(abFd#,)-#$35jHSK8+$8`CUR2m3bT%4k-80P0A4fI(4
er&"hq14Q4Ze@8rR-h)X#VJZ`+2*rPdiT3Ym+1'Bc3F)%9eEE"RN&"4AAjP9QZL@
!%-+`lJKP"N,p$qAXib1Jj(U42e#!EICQmJQZbI0#f*B"L0qRYVlQ2#!K-3)Bb4J
Q`'(+K(G3)M6eURM*Q66)bbTf0AU*q&-`)TZl3RT`fDS"[`1Rad"Sh)&Xd)RMPj-
khUpKR$8q-4F`(18'G@$ij-5NmF0"SP0Ac@LE$)HhP&ipNV68,rh5r&QXViH&b&U
(P6MP$,ibc!-a`2#reGMbc0$c4dbE)-&iL4J&CejPPL@8lXL8QjRFFAPpm9Q#F,A
D)UURemIKG"$1&B2XYCCmAb$[lJ4,DG9,5@`%*!+frX+*2GCi3fK,a"f!aQ"eTLM
F+XQr3c$ISC4Z"IepCeX2d!YSS,EF+UpT2arbb+p9ZFc$GpqZTml-bN3L('4p$pm
@IQ9*dL3LcRd58LXDPTUDZB0'IUfXGhm!$,d,5bEE3amf%`%&aqbDa[,I45)EhR!
b#iiC3YXmKN@Jj+c0'+b*karbmibH#rf)f96Qq`![L@(*j"Hb9Vfe4Q"`ambDJbB
fHPh9-YVlZp`Xfi$`+bA5M'cERF)CfD-M[KGmh`@P#F8$"9!#-eB46$6kUaiZ&j1
k#'X99rqF)cd8BG8qLJ)+5l4IbL`l1#2%'UmUP9h18qbThm8p,dp@i!Yr-a,S$Kc
QZ,U3!!L'kCGmV3paTV@Z#ih%q$3M-@-08hZP4MAI$bK+Z+XI,P6ifrF`aHApa`S
Di9![Y#2&jpIh#j*UBGDHIcSj5iY6C`cHTeS0CJ$#j@98L0qfIiN(Mrjq*FA86Kr
&%5[Xc0UZkTBj,lc-r!A&69fC6EX$0)Km6(E#15#*Lp[FFeC2b9&#+G)0L&DCj,#
UGdc*EL3!eX9QYmK)U!k(+M*mh&pkQe13!)bX5"&Bk[k-B-hpbqL9L(S[Vc`L8Km
E#L(NAY4(6Zf8Q0Imh5$-RHkU196X4K9"!8@E$c8U#4SZ5phD2Vq0lk`cBY#!+9V
hB*6f$2[f11[3D)'K9jrjG11`)hNdE("mMld'B"a'GGa$1*JYL@Y!j90kcr[X5Fc
[+X@`m0b,Zd'3!)T@%(1RXI5-XX(R(lV#FiR8%,6'[#[ffF13!#2YBe4Y+,+Hbd[
4NdHCAVGdk3FiK,X)CY61REF'A(&5k%'qXUR4l4e%VIrc'hQYaCema4mMj6bS`9f
G+4#BT&X6ehFS!amPpMRA9)FbhH"`q+59Td`EJ8A*(9F52M4@HFdAJY6d$B1r-5K
j8bc!8@C8rVp`FT!!)l[GAbcmQ@-f!Ijq-fEFcap%RYZlk-aM$$aNT`rAqd5$NbU
JCZ*bRaL%eiD%a5$H'a&0!iHRVfFXLMP*Xa#lL0UDh2"P--6)2a`6NJQ+k9K`PSq
)&qJR)XcE0LDFZ#%,"Ff'T"U88lDY*$C,CJ@)idH'GA2[GmTT+F[AcrAQ28DR!kE
l0TEEBbcmK6q*-@,GGqkh*kS"8@"d[ikXYmjQNU!!,*C*$CKr@i`3N6Sl"HrL`M!
XLB#@ZCdF3&DRjiTiU5lY13Ir@0"X`ZFARCB*F!FrE,rJ8TqNl@Y"K%IA*hL13Af
$*'E-GqMf,(SlkcPc4F(T9L[&8(P,XKH6)2,p,)S`h1mPRj-L'b1F#$J[YAPUNBf
Rcm`$+6&4*URQDG,%#ha#@V)6M0Q,Z(bmc99*e)C1'U4VKTLA)10-2F))@2AK,BC
41rP6SbKD04VDarq''NdQDiB52rc5p&akq'[KV)[YqEX1$pekUk6VkbP9)Yk28Y2
&k@2[U4%EL82hM+H#V3Ll`')f2k'#Fk)(S6eB*XdE8DmB5BqALSU&[qJ[E6NId*0
m+2(EEb0PFF*1Y8L@TPB%GdEe2kQCA8*!'YpPc,*,)53pqhD"*"b"brX68,K23BA
FpL+0%G&-rrp`!N!iI5fj6X-a1R5Y%XIk'Tc&K&c08[G`e6L*X8[jfEZP(j0MHhq
(0e3QbdDN9LKTI3NfMqeiGCjJ-[PQP[k1R(69"#+0VK-"Vd2M6PDYkH2E9+Z[ci!
hZK(q*Y*dKda,Bl%k`(1IT4GK-r&2pU0QRPi#Ji8JH%DrciC-'Ij'Er200[*2T6M
[-&IX4ij@EZehi-8+1X12(9MKCX%AraQ4(4a@YZ8LX-EDYSp+BPM#rUN3-+b&+6Z
'-pVq4#(Cj-G",qY'203DA"D3!$3Dle#IbhhA6rLjb-p`,!jerrqmlSYMV5Uf"fX
cFZV#j+pe*XbmFk3@0I11f2p,DI*@5CZI-K%0i`4MPLN8m&VqD&r4r5SrQc#T*lE
9FjUX23kJ%j!!hS1)d2@&@[TbpFXU(hRI(r"h'V*VF-2T)ADY1(a$Z*fZKS[cTr(
C(cA"6Z5r9mJLmqfN`6S(!m,F'XIVI,Jp*V#(HG[qrX2)DfDI8T+p"E4MqU'q2Ce
G!EFEhfD8@kjR%GQB)UHN&8kQq9"FN[kST[ST('9icm*CUmqI`b5[3"`%NM'6$he
AZi$*@k!h"MDA8,rrGN%BeC(8Fpm1k[2&ZIpmcDfHX!8@*V[ZM5MelAmMjR`ATjG
Ymjp[mXe$@MKR3-[N('TVR+V0j$rN2lZ$5bpVr$J'68rDK$B4)1CBk31S[43Am*X
DH(6jJHfGdXp$',`e!ka*NJT-6Z9j1*,,)&@03"3I-aGK1HJ9RZ601bUPV)GGi8N
Lm9`$!S0p,1N!Q2a*FM$J2@Z%jdQBp89"U3mYKM"T&bm&Lr8VL&6BF9QG2[J11`,
8!LC'6)FB162e`XNkAf)AiPbIFp(Zi1)UT#)"kXf-LdAGJ$*Sf0aAh3L[#DhA1$I
5HE8jCJI!'f`*I9`I`&qmD@FN+I$'-Cic@e2#$$E[@-IaQ1fUbXqRB)Na'(Cic(d
e-1hD9r"*e+Hp[fG!+))S"!R2!b1pc#SRK85hXj3!N!#kDVQ6q9i+jQbGDpMQRP8
`B)i&&`DCk"mRKQ[4R&L59e09XrMI9"#d8-`eMK`D4f!81#*"laq(YmqdH@$%K)S
&U3L)p-e,0'k0rAcTkJ-U)+rUdC6kc%5HqN,#IDl4))8aiZaiMVd(Y0ah)KrQc)l
QUlLUij+fKh5B("P"R#YG(!5(HME2!6#jC&P!%i48f"X@YTfYk4`Bj4PhiIjqB3[
B#Aqi85q2!&J06S-kl+i,rUmAFKP4018GRlHXhh%P,NI46VbDq5'AeSSLqDcXl@A
-er$U5@hCU46EI'*FeiL+[U@`ZbJba9QeNY#GH8$M5(Grj2TeZ*RS%5!FT+BN[e(
NUM$K91A'*+aSUlb8'"'Rf6FldIF2$b8812fRT*(k%HN2)T&i%0BeL,XB8,dlZI"
N9%DmXeY%A,j'm,HpTaH@PU6G$V,1lZBM1++R,10HPSYfCLkGL184MPMdeMPD'q,
!kP2qS9"`%f`K@1cYqQ(ACQ0TKB"-#9A4LU@2+JBV*4PV6bIPHL&UGb3D[kfj86@
(NPAB#(ldB8B1(lkQl9KF55+XZfS#J@,ELA@IfH%d5MJ1``T+JjQTQ2!r$LpTr!#
MMLK,+Cp46!k,Pd@`&UKS&TQ#`ARbiZ$652AQBG@d62K&jdMJLq)%Iic`QG2XdQG
r)aCZ6Y3CdMl%2&A4ib&hfr%p,'C*8BUBMb+2pm"dH5cEH!A,1JAY1YZl-35Eb$#
L%fC$RjMVJT*QCKNehaQeq,,a0,ZJMdZdAaK*Q")HDkAQHKF$mLlK$pa5'1c2P6K
9NrF"bL+H`*l"K@m2G@@Rl0p,`R3S2@!3dI+9mU#aU1BqKpdYGl6NP,4IC849amA
G)BmdY+BjI(e@+$8NhCfRk)d!IHh[cM12Gc4'a$PcaFQPD3V-,pe5Fjj)AX0iRfp
p)!jp)Imm5#PVH6J'h0NHce6'PQaT!hF633FXr!YBh%0`Fa[j`mC*CJ"60IPI[C%
#X-@h!-`S%QGP,c%hM4Zi5G"DESA`HL*NEr+mqha!S[F50630U8Hj5jcG09f[4QT
FFG@B(X&5Ypp[9(2DdAiBASl1akHB96aq*!-FN!"@'-HF+&,cUS[GpZD44a`b"Cm
PD'&Qj(6Mk)8!4LPL0pmQSB4ffYN`b&U8RrDTaqKr#iRI`Q&`!qKcLa2)Aep%JC0
!5L$#J18)lDij64kHQ-&CmHjeLN*#lVC,X#qUDS%!YfGiQp)XJ$R5dDjPrG)9(NB
19V%(9jelic%(mAHm2&c3k-RXL!'EB0+Hj0FVT(!pSTdMB@9VDlFl8lHcj"c@mNd
LjjG[5D2fEm80h[(Z3,DckLbf1cPBcZ-I25D[qCQ&Drp2`Dh1MFQrAP5DjqSJL@`
X#iN,8BI-i0l`+iYAmrK'0Z44JpP4HQ[rjfi'L3L,&Cq3!"-$'*p0Y3TZF[81GE9
qA)N"@ea#f+&X)c3Yc#`VQ*[S1%VMfMTJ@mPH+'p@*JiJ+XMj+CGLY+p-[GZ@a"I
`D[PT`lM"XH@3!$3+QZha%FBH&p+4ImM1AE,pL6QK0Bh+TL)#lC8G%(kIQ-A3f`*
(XkrTaCAkN!"P+EMH-f9dFUYI,r%@2f*D!VpAQAHdZaH8B"`,I96fpLb+32N`GG"
GGF@ND5SJ&qd&#qhX'kB+r[+p"fchh&#l1TIB8'm36P0HKLA*Mqq&!NPk3K5c!lf
h8A34k+Q'im8HHjCh1'Q+LKff%cS[mbkBB!(bX0R[rS%6lBTmQ&`H#0S$%p0,a@[
)S*!!q26SN!!&2+8EE1S"92[GFP8kKbK!NF4f92%UQKa,FjRYrl!!3#@l8Uq"Q(8
FR%%eU3FNTk6N0"l"BmbS*Ydhf--L!pQmC($G[HKf#G2Sl#)2XH,K'pEMGAK+0b)
%@P'+E`5Jcb+kLM900aX$GD,-Q46fp@$#)$eS#mM#6fYSlJ*Khh"5"3*G!CHTP`-
rE-jDrT%f0G8rN!!L@)Zb'2V#c8MCEUD1lU-EN6!UrNEHaAq*"`%"2Lm#Nh"VR`2
`i0NAVI*l+-0Z69BF1mY-JcS01#@K!6,25H9B&-K+Na"@!(I([UL3!*Adkj-jA+N
AABdUTh!V#iAYaMJ+d@fj6I"pqfaF1Ik-+5"5JkKV`N)F%#2pY9df5BABffpLiKa
PXE8j&2CdH@"bVYeZ9"6fNKJUY`Z4KqjmSbG%(XD3!!*#B-6b1%'[XKr6IIPJc-A
&F(dhd%X3bcrS0NYBN!#1@Q-Pi$r+ZkU%9ke,TG3([qh@")bRkK*f-RK94E-)CUH
cfH*`j@Z&l56'flea6-+C-++d'aY+2m)*++YG66R-i'0h)KG)GMV&$PB&QdeUPQI
$TjM&V1@9c3S$8f(SJeqMDhV9lXXr(mVh)G*ec)i60fI&PDUHi0&j"eDYdUCi**f
f"h6SV(##fdh2Dif,0K4Vr@!b&m5XfLECE[pi[31D*[+cDK1l6EQkS4J0FG`I%"4
41QRUCq"9MFX@QTh,*9E98eqrX6lTRAFHSB*8LXcYU&ITMmUV"JfNr*E6N!"!&65
p)"8bA-6%"%IlPRG-JBqJ&!kRFkXQra6ZNda`cEU8q+,pAFem-q9QkNdKj`1h`L"
UJ&p0"i8RYBA+A*RI9VCN88Rj3R&6EMPFGmbHPXG2*d"kMT!!PmT91+%3kX3JqJY
ZXc%m)S!**qY0LF1!CANIhHfY0[U*e4N`)EETG)20QGpFqFSd!&4IJi$,AdQ@16H
Yf1!f4JMR'lKSC-iH%'VTQ64!J!S)%H4jmH[MXprNKd8TTcrUd5#ihp$kLqY6Z,S
'e2K'TCj[XcAN4mGaeK*J'*@mhqNUl$H`kcTi3iEiH'ari*!!YA[4pce+Dm'2cCU
P(MU3!1E!Kjm6Scr0KZ3QH,&k`J1Y#'[hJ'0i*maMM-8()*Sp1#H(R4+PaaNKEkk
3!(PHe46SQ1T9V!IBQCHIqfSi9K58lD0MV(mdR5M`hAH0f0EC@*e*a'&`'UVI-he
JkKK`GlKc,'HMh3-9!5K4[QD&X9lj)[p+3X``G-GVDd[a+()(L-LkXlTmchMa1A'
$M!Rk9j!!*YBLG&i"&K&3IV6EANB$PLAQ6`d$AF#93cQlZ8EJ@%EXGpV2B9bIJHU
U4%3&UNC#D!&FZchad3-PN!$rV8#Xl4JlFpfjXkIf'"RHHMfUK0K86TXT*A6@Akm
iPKci'*CRpX),IimLQpLirX&dJjMjDLTYfm(3G"bX+'emRDedid!1)Y5E3(d@r5c
%1jj%"Y,5lV[)V9JG43*VkZh&cElZ"5@e)G9@Ed+qEY5H0al&04)i$)!2Vl$3a55
SPrI`KRc@)"$N4JUT'*'6*5lJ+,kI*EiX%Q-Z@%hidYqCZ'CG-`VM0)%aXaR5Q!p
1'&j3ZD(0Tm%8jeQ-E5A1q205Vk&-aF'hJ"Rb*$PB%h@PQXNLmV*l'DfRT)IjZ"p
8!EJ8(#H(%G[S'b05eRcd+[qeG@L3!-cLbeNYH5c9Z,0h%hEL%e2a%a-5cN+R,0c
J*rT6Je)4&RQFrdqlq9ccA9Tc%H(FM$MU%$k+61h#2h+h)90342)8@b)T-XF+E"`
TZrGp+ZpScDT(Acmc`LCNp&K)F"UJ,"-3[)942hHmXqe8H2X8)&mM#11Tp!5fFeB
`$BN,[J8l8'8,chNI"(9mQ&Cq3Np"e[1@8$H+QqqRUNmDcY"I##'UeG,EV!KlheJ
(2F`RDR!BMC(I'AST'#0ET10mA$3p5r'c)BXlV2r%lN4RCNiQb3lb#Zf)piCQ9"p
RS[*1#f'5Ill"4m(3mM*1IK`&%0'ETlfZ3PUH'D5&H"(2rLY4Gdb+LmHp0PJ8Uc[
Nk(1Ali1mq9D[hCMr8,JKmRLeJ)[Ri*'Yf)UDX$qS3kb2(FYU!LL$a&6XGa+E2"F
0-!eFjl8&J3j9QGe*i%$c+Sd$32Q[jlKi%iS'J98icBAA`SSprL!@@bbS%`TkIRN
JqdpZA#`c1K%33'`-b&p!eQ9f[c5j,5f16265D$&!%hFMQec[1D4f5fQHQ+IQeDe
5Z9Lf5Yc#m9k[3lrUIY#G#M65@(rdcY,Nf&GD"d#lj#J&(&Pf'JlqJp#)`TBAjTd
1%$-)Z'@l-cf[5IM2#"L[f@EY'hS4KPL5rcV4Rm4e0A!aGqjJSi[!9VZX,+cG3)2
F"'+A-EeF!,*Dm@mK4Aced"p6(JK9IV(DLDXiA2,brqY2KCjT2G,`N!!L*QVSD&M
PdA`,Xf42i1aC)SMG*YYFqL%,Jh!S5j!!PRP%hF5@MNfp%NRNc-QjmQJrH)NHRRk
P*5`PCR,NjRf9+2BGk(I%h4UQ33YT36+--1eA#!b#%8i3`"AP50Y&b[Ic8ALNr)M
Ja5m'"G*mJ(IV6i1d(DTd*0$JmNYUMAqV02'3!10B)$&Y@ecI3T)EmRm1!L&G2DY
82B0VZcJVE$QYK`m`AF!mr`SXafCUcHSk-B8d@MLLiQ4Q2jESmV`UJ9p8k5#Y"`r
$E+`iYCYf%hS5E$FG)Qcq!P@G"(I%[rlKGKIe5NP01(HR@0m,rV8!bXcIV30)!DF
JAam5J[&G%iVY6VRE+$UUJBZRRG![![-(@ChfRfcI'`kEkCUeGJBc'eV9KD&3V$2
PPUhiC5a)-"ZG"Lbdr5-"h(08)j3!lEY9SCME#8H6#fpjKKbQ3M$#eKLjX4GIFZp
U%aZY4-80pMJ5A(PFQkp!l6+#,c2GLJ["JqJb6H4'ckd*)8%jHDNjf)Vk5`NM`Q`
(qc1*0JB669+@0PJXc,e,5d'SQK(q"-m((la"XfPG"BNV1E2"-JQHJDfpZT@MI(S
b&MM)S+@(#)$0aEhc6EN)m#D"0"'F6Fh5!l#H5E(Flb$c@C[S*PK5@3ECT8(M@Lm
1qBT#+#5EdP3[YS@)V(8h63"XqiG0i"q'Lj9"a@jR4AhBk%BJa8(e)6c%mYic@Pl
q&q9XrpN2Pke8XMfUKCE&-MU[0[-Y+!LKE*mQMcRM2'$l@Sh%"m(A`pd9'C2KG8d
q$Nekc0RPH@5A232IeE@lr8(@V5,!R&e1@8Yl*3AGHYFQ*#c%kil-D42d8aJke8*
J9#+ccVebf3Vm1AA-(p1MP9C+a3FH-89QZj9*AX%&V$TY5mq@'+B`GRUK(h[2@&C
[G-6BY+Yp2Fk689`aI4L4q!Pp+%X+JJJqJ8BLq36D@XMNqURd4UVHINbm18XM[%q
Q89GTkeC,G`6&D"9!Pl@F+S19$,dTPJPakKm([C3S%1!aBdR'N!!#X%Pf638JIPj
8`jCi*CX)i*bdTfK(ec"BkLBJcY"Z3Zfj,AQlP!*G'#*JZ8,EpIT5JaM2p"AU'L!
!Z3YIa@d3qLd5$PJ'rSRE"6cEr&k8l[P%128E-re`'ClSc(hNHP20MYi!iCl6b!V
X+*8Sq)8Z&k+6K*NXcDe-'I*VBGZZ&N$,CSQZ(!"QEPp1$d2,(&qIVG!kh$VAAXQ
HDPLJc&!`V)TQ2QBX8,[P8M!MIAUjN!$2)2j!8UYT*2D%(LjT&"@FFN&!HClLE5(
N9[38!3%)B06!-GRm3V(X-hJJa`dVckG&M5KQ0iQm&cLG`i2HV2$+"+,33G2L-9G
!p6V#`XYCXjqrCLqQ$,b+CC'1baJP`Jj5Uk*q,0pm)[%!Y3Y"a165"aJArAcb48H
RJbZ*0Z$&e*-"RTQN$3PjQSF)4aZP@ET[[kl[@C!!pYdR,i@bqmAFVR%!H99FBiT
#cf[b%P0,[a66l#rNmRM"T0JS'5&mr8`bq@$BS&5i$Ke[lT8&1AT(qMdEBamfX6c
l!JJF!aS4,J5GR4(F",FQD3cMea4#$RIE1BI$%AcV'L`K59j1iN&*-NFV"qGLKcU
6"$'$"e%iQpd(aDYi`DqP'Sl#PmZGrTrk`L!qR95KRq-p31`QReCF1c3@+1%6P`4
2FR[5GdmJjRUQ$4X6rEe-miq28KklPjHH%aQILYMm3IZ'IS"ZH%m@3RH2[EVF8i"
lTM92dAjqq68J-GJr8EJIJ!YPIJYT80JCZASr&RaLr`mNS(KDN!$ZK9USS2Hl@M2
$92ThiciSJ@PC'U$,dk4%I#jJh-`X@cLjNfV&e43QP1`&KIm@a5U3!!"Z4+cNU#`
IQepKAP`!FdHk6pRG6jNZ@B%p@D3`kXAe5c,0d,QR9J#+p"kR#SpU385R@E1Df)'
TGG@kICf)efNYIlADmJB4X)V9fLlrRJ&rZp88U*f'VE(b8IQbi'FcV#&HcBDlp!G
@%pl4PT04,YD9-)#8(5(dCZk`EEj2%FQ'B"c"Zhrp9m6ICfRUp4(Gk5mrTC[VFm`
`!G)RUP0-$R2[-bdK&AlK4N)8f!VF%A&+aXB&E9'lq#hj)GY@VJ8K@[N-8jN!haU
[+'@`03J(IA8Z0`1(CdmYd-,T9P&mUJGMZaCjF&a%-(-2Mmc%%K-CCMP26Jam'V9
PA+Ci$$e$HUN0L@2R-%h&Nb`E'"5kPL+kBf&H@DYP8XTiKl4r0'iKIaSZmRUZ,1)
,SYY&d3`h%AAlAcFkRF,f*9ZlhU0VZpperJC!cXTdcC(V$T@VM1+dm2fI*)kaNV4
V29c&PZ%!'$)R,1jdXKk',QR)0j3!la1j&m#2e3pK3*)111(GAR%TJh"2![A[U"b
$rb"-lQIMT)AfhR&3!hD%#)FL#D5fM`T$F)Zl6Rl@mmD"!4RS3bf-hl*HPJYTEAi
qAcE1m,L[rfJH'*AQ!*kZQ["d#)@9,,V#P%V&1TJa22rp[UAqMAdqQ5XFrJGpr8-
fH3U@Hai9f*@r"R("61AY"8CM5'K*Fial(!pmiiNaZFLV68BaQe[J6I+Lr8Pm`kb
LhB+$qr)6$RaljGdeb)l&4T)ATcKNbApEf3SBdhRQk!aVHJA!cDF9*-Qh)AT(IDe
Zf0FF(fl&%%EjPAI8%lQ-CH5[D$ESbFQpHBlX*"(l[l!DHRPP$DfUf!KkYDFKBda
F`ZHe&Rbi)T5QH)$eZkbD@FHZ"-9#VALph8IUD9(h`Gqb#qD+6Jb1XA%eTX+*DpD
+GI[JFkDpA$3Eq3,*k#`*@KJ+1-E*KCFJLhLMe4G5Sd)Ld1@9"5l3631&jV`5R(M
)k'[+0#,%4!'j#B8caG%S1S9M54A4ml8[2IZFSkB"RJ3BPFd*jJNkrTQK5aH&fN,
*Y%4J!6cakc!6jj32'e1N9H`P!fGX4'AC[L"6)S#D0d6,*li"XFJSl,-1@"SXFjK
&LCBaG0I+%60%[%3QCC5,I-,B4mI2k+NP2AL,3BU+%Lq*drlATkNTk0JiRRH&f&C
f&af+"'kdjCNdq6jlepQVMkq'V3,3UJ[Y$L8(40YX9`M8bFZTCKILTbAFX2P!,&2
'Ic$V8(hN3G()D5*el!&8G8af*KU%Z$"9pN$Z#c&'q(mkS@i9@L4S6!YPZ[SADJl
TQEe(FYh3P1Ca`PJA4&Lk5TJe98J#@,"!A*,Qk%e!#(kUHHSh$(!f)#Q1aTC!kj4
%9iGQ*@hlhr[Fqj*Dk2%(Fm8N)A`*KNQRfke6A+U4-c$#@2cB*UJD(q8,083kZlh
jh1q0U)3B#N56L6X1Up`KSU[jPmKK)"#Se,Y9T@3,4c,245N6%`,@c6p965`dB-4
X`L#1V"ekGb+GTc&HC5SeZe0BIa#aSZGI,"A%`1SKr46f)4%#`9DF@'#&BfE28aJ
!A9H'5rP$8#(YGJVVZfkh#YYb+0RYEBTNG5a1RSL)Ke5&I5G842+arG)H*MYjUfr
f+[ibJMkDbTmiX5@#G*iPHQ1,5p&8AYF6&,9%LK1f(q*QHR`Z&`4+[4qcDCGFL$K
Vh$8[G-&k$'D49GLSZ1@VZ$00pX$318j&e#Y*D1'cY,pBjNP002UXrrd"M@XMX&!
)Tq5TGbG&3(b2$Lfe6bq23frj#,[kJ63+J!#811alRl+XK`JFSb@GT@fL8LDrmDa
%[(05-,2RGZ,82bhFpFaQ4R'erfe`PmVaDFAp39k(IHT#iY!k#1j@9606HD&Z0F)
+$l`kr%e%ThcFbGKA$Q2XYc)KZ%M*!!jZT[df090,eIH--+e""M8AbHU[UmrD%5d
e3Gf)J9G@J9CXfR6'9PHf1Qe08QV"NCQ5h-fK(XQHBJ*SX*[51'P,B0Urh2h*[MH
*4IFZGABj%(5HqBDS6i(S(J48201*IKYF9YQD0[b$YKj'2`,QcCeZMhpfMT!!aF+
$ZkGLKU%,IJRJ,bddE#QhRh)QiN`de*+I)Z)!m@qGeqe&069'cBUqi1(6bDLHVJF
,9AM-ed!F%SPPdFfCdXq&Njc)LM"iQaj'#$"`36-c11afD"Mh+&&ATj!!D5$DINC
61QJrNYQHh('"R[!i("X$GD9@Gri"j+PISqd1GmLED`$A2@@UG+XrE&fjUU$STcr
GAfN6U9JLK3L-h8$@9pR)AfpI(,YVm-D9NqiKRm)5CJaeZQCXV*D9D`p)dFlBf0L
kh[59#G9l3b#9%#BhdUX13b!XEYaU-D`"RjD+H2"lhkQ98p*I#NIN4GmHDcPh+ip
"UZJSqqlUF8HdL6!S)L$q1JV*N!$`Am4Va9pcdb0NDZ55#2KJp$HJLV$S`E4kb)J
3-%6'N!#r*%eRQhiV(fmjYHMr*qP(k!@EY9aq5)'(IR2UHrbRJ'(JS*[18*)ikEZ
*!'HJCXJQ[NF0DYV@+U))U*6aM(&KF"&HMkYGqT&8KJ1)N!!eXY4CZUmHMLXYIC[
2D&)Q'61-!IQ[i+cG*3'KiFM5Ke8I80$e`C0aN!!a3e,kE#5P$)B"%dR$V`M&fCA
r5mP)(N#$@ZU88NZiqRam#MF'[S!b%$H&VL(*LfUV%`&rPMY-$I(b#jkRJ63G"mr
b&Ll[aSV%XG0LI)j41SN)I'SQ8Lc@'KLZ6Q*fC0[Dfmjpa,FDj"4M@LZl*$&#@!`
NAACqdfD1Tj+d!lQhCUI$9c1akaUqUM),AG*E30m(kV`3Qffe%mXdU0B6`mKm%$J
XmY1JP!R&RA$9Z+IYEaATKNP*q9BPX`'p1JX,ZX3phE%r+e1q@(LRi8R-*98i+Xd
Z0&0N"$6MGLe6)8q*$(J&c&0l1X'V4+bRe*'`PIjjCI1@b-%,C$5-MeJIraGGCfE
D8d,Cr)-R%3I@Bc8kN9R)Ze'+2I4#,5#hbp-fZ*1R)dLE5bfiI4I[EAB82FlEX2E
m-hISr!XU9!$*$IS(K5rLT$fN'kpQGSPQm-#0h`-1T`i,a&UYGU$$3-2DL&j'leG
M9[20Qb*iB'C`3mDfDZciUMZC63JS'NN+rQ$q2-*B#2rjH@KLjEeI,!N))2(4f`0
J$0C%Al[D8aAp'!QKEe%Dma'k41[kTTqa*ZfTX%#0$5hQ#AJ8LlZ&'[)4BJ-Kd,!
Fh`ZGfmHr6Ub&3q*"3FL#Ra!a2UCGSVQj)iCMZa@LR$Pc"q1i9VQh3M+Y(IZFG6T
fpCQTG(E@MU8#i0kULm)&8!MPck9p0cTm"@Z#BLX+0B@IRep3N!$*4!ZTXc9XDP"
N230iTT!!QdUCTm&K*f#!bA-6)c3MR4Ife-,bEA4*fLcaC%[%dP4h+8DLrc%+91X
2qh!6l!HC4lQ'R#M&bTAqN!#d0f%C`0S)(I)!)TG*P[NF8VC0Ri-D50[pF!@V0[V
j9`X8d4,8#G$UlD*aa$`klIFrU(k*k%ShJqAcJX%3l#KR31ND`2GTPSMXH#lc"l)
JmeppkK"MemARcK52B$li6kpJ2#'@qZmNCf"*Lr#ZVd+$)C!!&$$V$Z@lE3frb(!
V6&i"[k23%Pf[cVrXYB9EkV*Z-mhSaNXQ"$2%aLjEF(3300#cbIG4k8mFiJ+LTci
Am`l8DHefTYZcZ*rllIZYG9XA&[FhSe&aLX08cS2B66GS&j&cakhKBQA&$TM9S4L
R*d-V'6S5,20&+qhH*l9T2aNHc80$,ZX48hTiPVGBU,C8)ERN+8ZLGf-cQkaNdVr
GPmqJa9XDXB48!jTb6m*V("Y%!pMfM-i,4h+G%Q45+E2D(N@MVR+QEZ8)50P&PI"
*Y(f,b2#e`l)5APYiq$k)lNrSUU5!&8)Uk@+K2VAclGMT-YPrZ,fYlQ)cV[EB3S1
SNS*",re5[TQdpZIae2!hcJ6YYJYUCZK!k(EGcA%4C(Ib2YRbp1MYI"0VmK"kFc5
MfpKQJrYDeZjk,c--&IBMqVq@AF[[2`#j-6q`ZM'+Ej!!LbTUPrS,eVk6N@XXdC-
QAR22#cKD#K(Z-DF3F-11q$%pcXR%0j@d%,4[4j-B!HpK"!X!)9BNcL#F-8E"ReQ
9-#r,FDT(*DR2D6mT[ik4)Ha*r6M'-H919-mPFL#+59D+Ja5h&,pjZkR'2iN0Rqe
0X"YSI&8Dm,QJU(ACTCM"'XaQ0%$j$3cKi8Ecka2-91C`%XjN#FA&4B)D9'ld,pl
E,d#&$Tc1baqq41*4fjeUeKp08XQ)-[,4EU(dCG9JD0J*0Z#NE[%V&0+lNV"T@@2
"rF$)DjS,eR&cTbe&kNQqdr!H,lFGULfP$I53!,TM)4@(k,Ap3Edm`I'rRdE*1Na
F`(4Q%-Hpf(am)Tk)NU,[LkRiJhVXd*l')2UFD+R[1,BD8*EGmR-)UA(Za6aQbf$
G",'R8'E,IISX-85Q53ZD-qM['Z08j0TZhIS)&'6j$)Cqeq-S`YjK)1k([QRPpem
&K9YCUmM5$S8rZHdUM9HXRDZ@TH)ZFVd[KfAG5R38'KBlYNNS-5q3!$R0"NpIhaf
XDcQDUTq3!)S9f-6DHa43eT4f2qK9B*hm'#f1CRhZU"$&i8-cQMZ3!()"%fZh$J1
&JcXB*Kcpl*NaN!#rfD-Id,bYRN`iFD98Y$Kbj#P1X(Uel0D0fS8F`9Rl*1GqU(H
'5e#@+dXjMN-p[H)UaC!!,)Mb)KZ"*XjkN!$*MkrI!dcSa8"4TGY[UR4R%"1`EaZ
QqcT(5Kq[ZC!!Q8m`$JSA`3hY(jlI-+!q6c1'lM)3Q2hHqEJ`,kBQTB&9ReJ`6[6
D)4Np`X",AcrcGlA59,VUm#I-&U"'0"Z(b)Xl9G!@P6%30)-Nb6V#GUMN%*X0%H-
dNFdLejY[DX1Q-N)adU149GqI3EM5+lUI`Sm'(j!!a,epG(TXQrDU)TU4aXYH9Pd
(9hBB*8QVKK-MQ13bbmhSNfdpXS4*6U!&F3CQ!lp6MhYpkA2jl-l)`Y30*N#%GJY
p`#MbMZ6ilF+H32kYVU%k04p,I8PQM`%kNhAVYA468(G@bEU,qiTd6qF2N!#SKrZ
BB+T%!3MGTfC0AU)SS$"Z298mIBAHrlRdhh4mGjiBKic!N!!j'$(Mjr!,U&@3!2R
c+"c8EBX`P(S5T$h`Y"T9$2qaM(1,ZDJFr-RC(k`4TYEDbYfcCDSPlPa$!Nk+-X2
r@)CL+%#F&8)Q@)I(*8YlUm46*982Ae#df&V4dRdhG`IB51B#m*@A@TbC4&dR*-'
VGT%I9E"DY-dd['PG4c"(!`cM%KTFTNVaX'P%F6!G@m2"h`SjL5e#ieQHTl!I`8@
$PL59*FT3GUX$4d,MH%e@abhDZSFa(4mEL8,3S0P`q4XaiHpGc3MU"SKNTc@Sf&+
jCTPGA3L1bDG*G0hGPchGj+Tdm4#*[5hXD)NI)bMA8a0qE@H5RFZ[-hhJbkB,46Y
T*T9KNe@GV'-*@!+!Gme#3FDii61aj0beeMH+1(9r"C-p+`'B'jbp(fZY0Meh)U,
Fj)C4MRIPY-,#+6),`K"(9l`da6M#A#qU11+j-3H1MK'&mRc%Pk8bHJ%h*#Pe4JD
G`F%)66BJ-p%T1HUN3jV8Y3m!ZU1@-()6M)r53'M0#q"0+51bam&V9(5HlG06Q',
l*a2hGK!ZA'IS9UQc-ISMF2mjR5KcEJ[IrYP5Z(i3mbG+aIfM#`2`-1*i8'q*Jh4
-*800)&e81P5KZB81Xf%@9m63,0(k2i@ClA0cBMq@*HIcrFQd90D"Ybrj*kQSl+P
Ii!8NS*CGVY(q9+0hd9MT%!mC!l!QReKbH@QqCSTIi@9l@Z9dc@$PaDF8LIUrrbZ
*F-(h!$(V@LZRq$-f%i"DHiVm&BH@3Y`0jD%#T$%dXT!!5DKEIHY-p#5U5KeIrUI
N$)[4k"!4B`&f-IY$5eTQ2UIKT6G8&+5lFP)Y6DI(,8N,AEPXHCi)%m##A#abm)A
-9VXRYYQ3!!E2lLZS3XmD*2[,V#ND$+CjC!(PmIZi6il)%5U,9e9rqa'SRj!!i!P
!ikjr2Q"Q"pX8HTk-r2RD2'kcmP)6%)[*pA5KLfiiZhcF013mMG0i@Xr36N"d[q`
h'$mpU!jVHhPhE85&B+da1A+'[qr&-(fiB$Aabb!L)k#iJ@CDTIN)qUH'+(9Y+@#
K,Lim2YLNZYS-&Qrd5qJD1%3325@HRq!L8hEjaErmapM*l8eEQ!-TTpdZH6R[``,
eb$9cQh[)d[YqaAA'q)"f[HlGJ"KY80Cdr#1P*aJi0Z66@5kFh"$mNj!!#aN0'bm
[PZ2jV4Zd"`mED!F2,0`Sk`(NMQcKHZaK3fE$UASJdTiMrHh-RF#jPVa0lfQ1AVS
8GDEN31V'-mlb'#A!h46-GJfFURQMQCbfDMHrF'KMM(1,rd(rkMSq4rb53Zp83Hp
kM5CT'%(-I2Bi4piQ@Qf5CG*9#22Q'lqRqVM*Z'@lP+bl#CKBYZ)P)2Xq%I#m*#c
dZ'UlmJM`FcV2rGC(mfYddid+23lr+Ypc4a"c)FhZ1Sfj#bTU9J5!6GYJS-EiF"2
@3#46+46qQak!8c$NVr%+a@31q@D&)+SmdBp6e2(fH5r*LNKij(3"MX$%$cSBhD"
6T4TDVa13!0&"CQmSIT[B0F'lQQ,f#3Ij3'K``El*Cmj90J&#&2dcZbcS1INM8G)
LYHYL0lRc"a6rV&VMDmU$[8"B(Hi"`F,XBA@F8S6d[2lmDmAA(,md"Ae+2GX&SiH
99(TEm,YkbXbNEG0J@r4pM#k(I59*-)VNlNd&j&Q#"5)L6`(r[aVrYGFp)KF#Tj6
9D42)&Db2HM'-Ac'0-)8&h"##p&&(&4p#Nh1h@%K#qm,cA'(AqMR%CiP15Xq2mF9
[UYlYQl60*"UlaAVMZC@*&X8INZqk25+Q!cUH*j3(J2rc9qp5)Y")`f6M1SZ$ZhT
T!`AN%iI+b3kDP,0!`F0KH-AYB2cL``@jqkJf$[0k4[dH-AI+HZ0`hmd3dSG0kmZ
'CM,Y-MiYYbijZ2C+0'cNVpYk)EJd@'k5G4`2P-S%1$JNi9TZ[5IG!T-[Cbaqb3N
pqVr)N`pMr$Jkb1+)XXf-@*2*,kXRAcT#TJp908PkdN0J%"qVZ5Nmrc4`BN#SBXm
6UQ+cTL6L5TAVeYdf@#9H43'GljJ3X'AEPJ6J-CK6C,"49VhreBdaVjB6[JZcN[G
M[0+83k3'[D6U6R*+DUP$DYa)rk"8NMJPS!FXe8p#Dip@N!"TYbcKhV3JrQp`UEf
-Q)+p&E5cDBF5V2emcb*+m6Bkh"Gj+6-(,mTjKh1(0,$h(mejk0X!%F@8r4bN@X"
d@T9'QkSdd+a[&mADGMf5MDbU%!6%NLLX@-5r'X+i'M&!LJ!JGpaA#fE9ReJN,bI
G3(@!l8!QK3&!LN-JGpbK#h6f,m)MbK9`)4k8[iLJDqfH0%icLPlY3%+Dk-+@R4H
TE%9$2R&cQ)brIBac*PT"NTrUa5&8%XB3cAqkY1rE(iBk9%m!`Udi[Sq[(2kYQTX
6Maj9e(GMLiK2r)UUP9j1"$LIj9JG)Q[+D1cEj(MAC(1S%%C0fDFjpZ[E`epm`QC
j+3-i0DhQ)S'%-jYmNY'%VC3&R8IUB[48hlhc2@XiFL8BPD9SMZSdRf4elAPmfe4
N6LpY[N[LlD'3!2Rj$qfJ"0mR[LfcDXHQIF!m0f(0@$ILDXSfKq)pbh2#ZF&9NHe
9iR3d6#(N*cKfiERK54brra9C!PMN-[JC$e'E8HeN-fR2RPiZ"aKk`$UZ4TjQ&0j
p,TYPCNp%C1)m2LVH%""M0E6A9#-3(0CVha!&YrEi38L+0YlGrEF"3q#d$kc,-[Y
`ba21FAd8%Y%9qlP4)B(RZICJ!BC+9Kp(rCPhCk@LY(DM@@l'CPTjfLq+'EX2qfN
Ld"3ii!,1-'ENfmF!UNK@p0Vr3SJJN!#P21@hT-&VJEl9VP$jT`q)K$TB(#X,r)f
L4!N9#)b#5VA#kd,E-qB&[T0h%14bMC1IJeHpGfEZ'3@2CQ)3iRCG&rXEI`!U#a,
E9*3SGEZp#TSbq)b1UFULZmZ1P`AA3Cj[NP-1Q5GlHj!!l[EU6'pil--&H42Qd!M
D%SHG%h5I`0"MHHj4Pdf*05QLBAAI560D@,CYJ`Yi`A`C0dl2GhUP4GeR(2PVceU
cM+*`26,[mSHXh@aJ1Ir(#!eDHR96)[m6pDCTQJX&aKq&amEMI(pJJdk1Dr`+q-5
p`lE[&*DrCURG`JNeiHbaLR)Gl#qElF'Pi#,ATfF,XFq`T$!2YSLb,R@!)(!j1pR
$0TfjVD,1!608mEeG'+U[V0ahRj5A"Hk%9DV,!RQMdd*QiN+Y-Xd#A4"S#hLNT$3
LeYA3aEB#Ff3LHZfp@Z`CU9QU`db+!fXYGppXdM$r60TJ5-JarY#J%%b0Qq`i48T
3l,68GZ)3K4#a#rKdPT!!DcP!B)fPTX')(VbmfM-d&Z3j3(Q9*d@`U29!#i"p@p@
U5AX9-3lb"@J*d9V$h,XEPX&iSP-jf`B++DAXRiP131CCY$%LDjcX%S"Phi"'$@N
E`jLXJeLrP89hAM)GDAG%,*d1E+emJI)if&Rl6'8jAcaT(-PNKj`!Ll'6ZS8f2BC
Q3*r&b-&j)+9qU-#9f'Em-X4*C3B3r%m3XcLTbbl1ZbYPdUM#%$#0ReM)brQ%dS&
A6lq9p)f+Zh!Z'9)STA,9b-Qc1NCV+PiR$JG-4qqBA,DrA!MGbQiLXGPFJk*R%3(
NLUc-'"P`-c(a@ldP*KZ*+KPNDFASE5!1h(h4CRdba5(X(dcc"!84b8T2LFc%prZ
15rhmEA`1$(L%!a#qQc6-Yd3-dEmkpJ``NM1@U'!qcMe6"bYd@+0FJE[HBLI%(rd
XV16&K'2ia3e,h,bErl#+)(m8@0*!8U(ka'ZES6#fLi$m"rF0EYK2pU9,*[`Z,BQ
Kr#)JB!Y)U*XeQTTZS0[ZSaQR-ej,m#L"NN$#(*!!VQVN%2MT'RaJbAf9&acp5ML
p#8lGUaKk4NT0ia(mpL4%-$3fP93'E3*aY+2'p,FPFEAlf%Th[$QfNr+F0UHRf1q
G"DFKHV,E[e40Yp[H,$cT*k'Pm&(m2(M%*XSPL[fHG$%lF1,"[9E"LQ4ibTXkLrj
3NrGGDkm1')$4hQ,&L8ITqF-'a$H'SZ"P[d`R(P*Z(TP%&T!!D[bJ+"JApVpbP-Y
2,*l9PK*hCD@P%2[+Ze#2E%`,P(#%H[jQEk8[k9%HL3!C-j'qc(@dL[Z@Jd)L,(3
QSlXq)'TkTT2m)`ZqIKk9Y[hY(V(#@D(S19*fPRM5j@U8rmLpJ&6Ri[3Q-phkDbP
EL,ZK+KrZK0X#$hH4GZ$H0iLhAlJ#0f`fQk%a`(PEX[qUZG[lcV#bbpb$SGZ&$J8
VKi(friM8&hDR@Z[G&B@-$UkjXQ!c[Qq45(5Im9MqDNc$`8[DKrp(([`c"aq3!%0
U6GDL`RGk!dp[CXCimaQpRDQeG*`6'3H$5CeMj"A$cA"`N!$&cN(`H$1dB'Ibj@Y
Jqe2Xl#SfGQah[UcN%2Ci1BjF#hV4dpX*-Ih1i5*NLPZdl1lHfmV-dL6GMr@SLYM
2*Ib)GRBEF*Chl(RTTq4')2"!ZF5`"DpdHZNK`STZTRC*lLjQHK*6@mG"$'Dp%Vq
hL@L##c0VGr"3+0jBGi8"Kc&PVX%qd8!8F3@GB(6+BFG$+AIB(1`h"A*M6f!T%h[
-HRMU1J`jh4#-[RbV1C[1)$6A(kZ(%ZS%Tq1kJcU2j2iPer1`!SUYlEYD*XL3!"T
Qj'+p41S2A(jARCViPR1Q-i5pJfTa,MiSrY9d"lL&$FB*h@[(V"8`-G+'I!T8#dM
)"*@a4FmLb)68fc$-4`5*F"S%lY'3!,X1eb#pi`bI9V!p+0,Aar5!TjFZR,@jYN1
!)-K'GSCF4h@Aq2$Db%-&)"KhebXH@"BB!-Dr#!9mD5cUC@@2TZYPfMf""C!!5j*
68cE+6TVhEVm&Q,e`GX,Z#!)N@-*PJ3*E(!%3+3eE@"b"00R5H-GV8@!h,'"Gi2+
3!+hdMY,@5&,D!D-j25`8Jc2DBP#"'YG*(dF&Frh19rV(2+JQ1FUI4kDTJDiB9MM
RCYkc`Xb499VTK`AcF`!Pbc(2T1@K*CT!0c3dQZadPPlb6LATRlCd#iq50HXPi5c
EB1I2)RJDZL*D2IqL-9ISZf$rGM%ajHk&pc1#mSAJR#*H6T'-q3qT2JLU1PAN"'C
A&FT,Y%cU"+Ye5K"%'`U!,p'VJl%BjeRQ`(59@abM`+a9NRIhIHDJ-p!ASCh'AXc
eRBBj#CK!pV@T3liIE15N[Ra1j280&JC8+RLRcbS36995V'FQYYVB-l-(@G*2EHq
ULTdkMj@*%#"hYH[B9q#&j(M3)SareYFBLQZR!N'ElQ`ieKSB$!-5Ik'U-VlZY`G
,FQ&bV,c4-SFTHpdmHJJZ'f[R[Z-B%-,UQc8BrRI0%0VJI8K1,`f90L`)cPjHei@
J3QGbH-Jdr''Da,p1p[jdk"`aK!AecfTfB-,ITA6&0[(qI'R)Vh3hMc(4r[f(b+S
r!I&pEd$JY*JJXq%,hFDYpB!3U1S9-JFNF+F+keKH)jZP#@ZTe&+R`X+mp(D)FF[
F,G&hSVLQ*[J+60I1PAa+L4T0k$p31mj`X2&%i#ilf59,Je9S(%C-kR2kfGpH6T!
!e-Uj%m)9!VCVUT!!'"#`r@-3II6m!9i13ha-l0Kq'$0*hiD2*S1T*fDHh2UF4"5
H%**hd3*0Q+IE&+Rh#lFX0S1B$rE,NC*B,"$D'3%$Gc#N*,phX*61I()"JhU'34h
,12p9##cL6IcVRP!6'0eD"%)S%G+#&3VL*KjJa9HlL'$)3lL(LT8`2TJ(iF,V-Xp
BUMKh-4M+9lmX@"!QSRGc#,KJU3p(`A9#dP$(B$b*B$X[a%162%)(BhD2YacpTm%
F3%$4XZ$m5b)I,QYkLL1!@TcGqY`C-acYU)ZB#b!CNc%@#*hNb2MVV'`kZ4G6T$%
V9U!BdT'c#'d(`MHXQPD-c*lBSHD0mC2B(4ab'bae559B22cHB4%pq%qY3["Fj0T
I&E(Q"4%fFVIEi&lFT,m)k*i'*X`Q@A-bN!"B,4YAU5@5hM8BI[PHNAMS!hEPD00
FKSN"dFiQF6cL1Ljh61#3!!qF5J@&P4SiDM9!Z6qM55NH+YV23H%#mCeF2#!a3C2
,8k([2-1IV9%(TI-a&d&228&baqm2Y$BA4e$3%1#1"9Y06'VDI&iaL#h*ffldM28
i[m@dTlX%(NmSL8(@++UB)9VmT*-&[m!$A)@fN8QbPANfcRH(GJmDpaYbNE"C%0b
9R8YkBrI,e'`3J4raEih4YVcRmqA4@$QY3K3CTm8PP@9-"pP(53jPP*[p%"Q["%e
Bkpq%Dh"3LJ*EF09kVS0!+Y%j%2-H*3aZ%%iXZ3Bpk+64`J9I%*4"*&1pbUMdbh3
1!2(kEq-,RVj3!ZJqmF@NpdC3[&bbk[DFXRlkiEI4I'I4BLVFcXPUed44D(`[#M6
iAFMIcEY(jKHX0E`mI2N4GRNV8rZG$eTjbK1'8*H4qkHRS3XGZa)qQ'$b)Ti"#DZ
-GRNZ4l3H#*Z-dmCkMDq)BJ@`+(XbBRM30&*PXB!3b08LH,KAPR8c5(0$L"!K85!
Re'q[GEN'f&flN6#TKebV#Y[-DeMj*)HBY!q(Y`j`[@i(8#e#i2ZJ,!9fVK!X"kH
29SFFLrZbVJAJ!C-e1C1J+L*8U`TJm+ZX-%2F#0FFB3REbmJ6-KSIEk$b59123j)
3hilGN!"d%`cG3*3UGIrFUh%9-(F[[+llL-594(SbV(G'BBlaU&KJK*+ehEm)S*(
HG1&M#4VkI$-M'm3hN@VQP*FEMS&6DfF*9TKC)PfqIL[E2ie)1aXmXFQ[b(f2HA0
YBD06*64@Y*!!GX(1Na#fUUEbKU,#N!"**A@R(k(VqcF"R`[-"ChSb(Q#JMhcX1Z
(Bc5l*PIBhcjkI,IQY6SfM9*`a$j5HMbDh3B(cb)`+6T6XSj9Gal$6`@02NR!F+9
%&d,S!cd2H$SEAYDr`&E1HGmmqb,qrT(laA2*RIYGA0crTk$6era8qG4"52&+Q2i
Ld+I@2Y!I*3r)2rm[JR(M5I"ULR(a%r'+lYe*aIdjL4'rVkUYGjlA%CiT%m,$i(C
XUG[YHT!!ce5IBNkmi4NQUSTm@'YZj#hNT&jP)L$,RI"BSYZq+bpVU#JTGeYVH-G
UX3NjJK+L`K@SD`,MpMcpp0Gj*%HIUjMl-3Em!ENS9*emCa6cHJZ&rFPd'i$XIlq
h9RXM6$UBHaXa)QdrlMKrAMpIEQ,PNFAGjUSAV(M$EfRG!5+mIT*f,X4ZYY5[I0j
T+J&Z%6hrh&1fM`l5lYXF,h#45FA)bF5&j0M&GlJ3V#d9D"fe%[pHL14@hbGR28T
ip5Ek-qSGa533C9lr*UMcbqfMp,21dF4%Y&mFhIX2jRl$8a4mj)iXUIiVk+"V592
f`*-f@p+H3!)DFL32ZQUEKqK[PTbQ%La0&3A48BCBG&dDVHr,lCFQ35R5Thf&4kR
(h9c&pH"Rb&Imq41@h(fR((EVK`d&8!XhIRMXmK$U6`Gc--335B&pVqXJ)6'RP6T
%6Y9C+1bc&X%MhdXQ2%p@4'1ci9M&8p*!k1C1dmXTUcSE'Sk&mU$pNq`IKq-JCHq
50Ac@aIB)%0Ym)JZDPBFXKRUqfHVj*,V!81pNY1d*fZTJ!ZVb9CHX#2d*Ca4Vk,M
V20PC6pQa(&%LfH3-(&HI"E`PL'83++Lb-U@+4,'02r)Nb-Jma-Eq%0rTF6fDMk#
5HFZ2`r4T%+UN%`%225M2LVfREf%FDi`2)(EYd)CbCMP!QLC-F$3ET+$MeRIKIAU
LGTM(mr%d%&hBA@Cf960,&!jr5a!2I`9kVJApbhDJp4Xk4aMNhHI'Z`Ra-aM4XQ-
k$ME9Z'8f-2M#250c,mNr0+,*@aJ-"5SmUpqEi8p,@A15iA0[1-[h92T,HN-QUEk
S!M0k9D3kQf1HE'0XG5h#`M22JPK2k4akifEQVA#e(e85S-dQNiEU(j0LfBI*8%L
C[Q#E5+bF5TTZE@AXe6QbcHV`9X3BkcALAam&fE`TQpPYm8d5$Q(@&k*Z2`ST,TX
0'8,0IMp)*()H"UZm4CjcIFYhfm831IpdfcRUI4c)r(6Ybpd(fm8KHUHR''EYc*q
m*ZF,c&(-)$3$C@B,"j9QZqS$!8UqX(T*hUf$k+Zk*B1(,2Qc"YNPF!G2G%e4JcY
hQBdar5L"D$ceRQLU4H$$*-jYVG5jMbl52a1Q)p1!5I*$-D,2a%S"3TEB$$SFH1L
UG+F%jXV&N!!c[A8BJ92HTVcUM@LPc#@RLcjI1(CJYBKj+H5AL'Z%-2,%1`K9`$e
Lb+bM,+GBE,'*P@pRT1`Q-#hqC5'BVR),AdFH#$PMYRB[k"VYIJZj9NRZF,drFe+
#c"#1bc,#%am+U4-h@5CX`6R0p)kappm$[kh*h$)rlEPEA%X3aFaQGV&$0H*kb2M
&5C@VrD9YTL+pMhJQlS8DH)VKQ&P3`2SKpd#BC1L1N!"m"L$ljaT'!U8SYH)12hb
3!*kr05@LN4E89G`!elQMHGV(%$DX"bNLrD`G(aPV5He#8S&m866RbC1[a5rQCTI
%$kK@1J$&hi1p41k%md3dYSJ,49E$)qdPSG2YT&Q,rf#UaUmjplZ#B4mVfY[RA!Q
A5lLPT@([pkUaT8T&pmUI,,QlaM+fXi-Jcrm2-6`blM)m,-PAkdd)XUUp%23%AVG
%q6$4m+6A%PThV+@Ri@ZaBA#X1VASP-,!)%BLXj98&c4%KVZ'-+K%cSH)X#FdVh&
Y&jch,0f,rf2)D5HLH)RUp%!PrjeXXJT3lA'-dZ9)-C!!44ZBcp19HRAI*0ZBA!-
Za)S&emC-[hX[2r4A0"PIlCqM'c+Tq*[J!cXpcSVDF!YaLeN6'N9'X%)DCJ"CAQp
V8)%kP$X-B865fSY)Y#5i)++6"m+-*'hpkJC,E+S'CiPNDDYP4dQ&+&bp"CUKeGY
9Nd9MrCA#G!JdimQ'p-*XdJ8UPSi$NDjMMC`"9dkE4r,IcNm1$P*TijLYQj1RPM4
FB'%mH)FB46%KJ4Ei%&9M%bi@"i5rB*h"$LbSU9XXh@Hicc$kS2k[GUIU6-r2hBH
aC%[kGqVdFj!!'X2VRpR#!GU`V3)i%k-86[#Q9Em`6[#V-qd1XdBp*D")Jm%,$h2
ANA3bE+[!mHaH1(e@34YG!iJ1[dS5N!!Mli4h2A2hc&km0TGKcF+[TC%JH[p,RrR
#Ii&MZ!KAUJ[TN!#PITR3ShH1h9"pMYE%*MA-([VFmFhU3D4#@Bbmd6mI5mp9Bd`
VhHeXc@[`jrSPBMk$5AXPZjK)0XT#Z!8CC)f(hiS6[q-0'c"-f11,CmRMRMZ1ce$
(VJfYcmV,B&(UkC!!4@TbF%QSS#"pVUIPrLqf2DbjZcLXa(VJpr*kJKaKk9JLLc[
k4hSVMpRlfIKdk(Ec@BA8rEKFl2Pm40H3!+ZLLM9Lj(mTkKKCMlR&D'!p&'0Njpf
6CM53!2+8&k(qTH@jPUdX21KCFbKB3SjJ5@IrUd['@!T,dE2%0&%5hLlG%qU+Ldb
i"QBd0JmY8&@XP&[CU#lJ'NKJA&TIR(S+ZBP`Fa(DTc0hNRE9*K"k[UqLeXS#3$T
L+fb6((%$!HhJ"H+XFfiQfC&S8fUMQrC*j6jMS,qD0#N3mEd`chTDSH,*[BEY#`[
Q$Hh)rK2DAjc5,*50)"-a)-LY6)i4mTcAC&K"H,L6Y,+LmUI[EQq8aDF#S[+@b#C
D'el49%)*lq3aS!*SQe'1#diPmFm1KIHDXREAeaG*0+0dmfAT'&q@"VIGLPU[r`m
LB@VlPR[I#a`fijm*H1c*f8AEN!"lLjT%3(%P8KKZfif5"j6!kd0"V!`$1bMXEID
*$``c8cXSH(2lG"Z"m`C-EXfi(HF"MNl'G$9%6[C[-Im2TH'Ym$GDH16fG0Z8P[J
I'&Y$VT,$*AFkhFl'U'Xc'3iILUa&iX-14V6A-)BA@0$3EQT%&aPPceERkrXdF!+
8ADG8i2eD4,IVaGb)i@DXTDJ,hA`jiF9!!aHTKA`4HmKVZ0[3SlBkp5G+Ld2fS1@
Zp9pXP-1,$2@jm`mUSF0D$C5-Li[epV3IBJXe$IqT6U&JSkDEhl"Y*LPGdMebHEC
Q4J(r9FT*+YfJ*0h+9'5%m%DlD9ch%B5FED(Y$D'@K5iQB63P0RNmN!#G)ULFABe
STlPmlASJ`FdP(I"4FkJr5MX`%`)4B+Ic3&a6JF@S4,E4)'VYm6(FBM+f#J)+aHf
X'9VQD`,G@15*LaKL4PD6L#L+re&aP&JPCL4J+MpV,b!,0#3)HD-Y-8Zq'RG8-pa
fDM)b1GK!mA3R`Z!,3+JBV$S$-b'l1FY+0-RM2Hm`k'F&eZSf#9'rp$E)A%aQZ%+
!N5KAGQpYMF+&hBS*k3LPT6q-XIX)lChS*m8ce1MAAFr1lLUl$D&ZN!#e#H(TE`X
dXLJi0PHFT(3QR8fefZ6&X&pafp+k8C29ZcRmFj'm9eTKU-jCUL8heF"$38(dJSN
rh@BP!%*elBS+1U)PR5`8!CCc`"!B%1BYmE05I,["9CJ&KSkl4b0T2@EqEThM%l2
2m+$qLaPbMi@9U9(E+&6Z2r(NbB*B5H3U&M-''X#*j[Bf)"UR6$UfBr"d1r33!0K
SdjZH[2#Z,8GACTNIA6GTFBjk5D!eZZ'!iEU8ZZ4aN6T8))eT22f0m9-ibLBfR4T
h56ML$64['$%SZdpmpR4DH[BEIflr695EcDdT!CcFNcAj*Sr*GS88Fj64PE6X%M'
GN[K#'cqYS@E(AL!LLLeNd30QfirkJd#%)KX1hUcr3`D4klQk-DU"[jb[`6S!G(T
BF-hrDr*,6I+M[f0`F9B1mM!3p4)BdP4@`6*)A!5','qeCGI9KP&kXBC!828r!Tl
S@[6XLeGZqQ,U+`'13h1N5@-c!GDS#SY0J`*6*Ta&06fMNH,%*Q@iDZGNa"Vc$YF
VQm(dAMB(I0m'l5)b!RNKM@bViP##[L%,bT!!,h`L3&hGFmX[9J`p5bGf!$0!Ehh
EFRGYrr9%$lNi[XLraTq1m9&hfk(Yej`b2iaf59iNi(II2FR`qDc!b-3rc#a#hb8
!5PTkQ#rkeD+Rp&[FZ`Z6'2)RP[ie'Q`i346b*DK9&0$bqUMHF0#&iUMiG"pKLE#
@R$SlCUH`&H1e,$CeYh@XF235%$MMkb#hkjLh,1-J3!iJYq[-l$!5CJCUMkr2+(H
B"h(C,GiJmma8kP5Dp8!eHJ&eHUU!D`3,H3`A95%L0S6JIql"X1hFCVZekU1Jl@Y
Pfe9-&I60$R!N'N$m0%@2TF,9F+Tm*Im1N!"r#2&$#ShaGqPPeCKf8KJPJr'NE5q
TJ6%94)4A5(J)1b*ThqJf9L'X,KA5TeQ%1I6kBl*dI3dXHd6YR+GRJKNN("#M@Df
5Y&LLlE"Mpja*PXJb%P&K&HZVZ[m-+F,@GU+H[IX2'TXM2i["5kq$"TJ3m%V)M[U
efD(eQf1f1(Si*$b"fVGi$Ip-IClH(&Q[2a-+RpVriJqHA!G3#r*@)p`!9&4J#%S
*1MDNiCEL)!8H5B[Uppr#b'%c#,bUdA5KZk+1Cdh,i#*ea`9SGFLmH&c+4j`,)@@
'C9qql9SJ0E!RGSNP0hGk##`kL8[d,X$IGUPMm@SF(CPkF!8`mTcT)%ZS1(kIC,P
V4qEU#Ud"pL!kaCmj&alb-pY20"p2!-+bc(cY,*!!%(++k%'YG09!"JYhb#!3LNp
qLNZQbaT[e2mE+D9"$NV&54VKf3&#,&Lj#-18SL#jB+lDT62pc"-34pDCU0c36j2
UQfTqrUhXm5(k#QEkQaR"-5h-fc%P@I%J0$9%iZ%a*9j*#ieX,Eh5"m(Ebh#5Arr
RaBrKUfi#qi,c84`V+daPi#8kZ5'@P!9eYUfU((r[EKY[1M'IrJ6r`Z!EKI,"`R$
1JIAK!VTBAbE&m0HJfYX&AGh$f1TJR5f(*##0fjRGc-E336)Y+$!h$SaF4Qf@J'S
D5mSjZDC`"kP9Aa-bq4FQcK5Dl2+&VDfZarhJJmR!j&k)N!$IjcFkL)T3l5H(85V
dH(R`U'k#IV`"cLX,!1MK`Q,GaeT0DMBNK-Zm-E[a-FaYXS&"PGTjYi(0J9JCI2G
aTc8d@+4N%cG%"UL"AI5Tcp6q'2*i,!XaKAb(FBR(@&F3MVQG2'XIE0(K-Ckb),A
$4"!Hk#BC,C462pP%je!"5-48b[KeEf$S'#VI%8RcDi`dG`0"["5Xl3prlYSLCZ$
`J-[&ZqDkqCHR231X%MhTLqKK,RJa4%kf,-+#9@C4M5'iG5r"bQPCjcqa*B&jVZ$
K)#BZ,bIjT%q5F+VT-ai3c&bITA8kS5aRrkIAmU-6SZ6)K$dJiAHA#2)UF&KV5VM
DGi2IIJ(Nkf+Ba%Y*GX@b#%Cib%Y%5e2#X`FQCLh&%K)pdCCTTePd4XA+rM(+p"1
3!!ANq4)Y&QH1m*(19H6be-qUFP2S'Y"YkJ"[cQ%KT`cIMCrGAcl&l('i40qSTTb
YLCbP*PS!VG6i+MK@89jVKc$[E@lMDjP#k[VLI0j'"m[#9!%kR9&fS`P5r(EcTr$
Lj2MTF0FNVUHrafb2(PHM-R"kU0!j-@%LANXbB-ANIkN6U5qkZi@aDZkYE5+Y981
X3q43H(f&A"%jcXAMF('Mre,b6-C'9NI&6P6*(fD*GUF[1jK`#"1YC66rEL+j3E3
r2kGFHRQUrQBmh0eK'V,8+DmN`5QFZh!K)@4Z0&QRICU'Q%X[#S)p1lQdr#"Q8"i
""aU(I0T,2b"rKpqRqblMMTYd@-a*hXrVEj-HFmLrr4Dm,c4U$lQ3!+,!0'8QRHJ
fi*[TqcXkfa$%+@PYUBjk&pX#TPkLUK#r`##L&qlYhFp*k!dGS"$Y!rT0-@JiLrk
@4jj4rY",5aS-E,dC5G*)%9%h`GKUcdICp0)#blc#r$ehad#HB&cl)qfYYcA!(%b
(DEmAA1[p*FZ'fX2Lp`4@pMf4'PE-+I8f([(SphYa$C!!(b`HR*VAEa0610B[`fe
$kd1iT&FAl5eGBCjJiR#[Mm)(Dalmpqm"!EZk'H*h#efeZlPfb!2NUCl5ec(YdYN
V(b3fJh0IHU4R192QT*mA)Kkm8V)pjIBUqIpLlM4!(iDdYE!,XHj#Eq"J0XrBDGq
)%J5b@(4"S9"4LD)IA4lh*2SNUGNiTDS(Y#A,e(JKkXmXlT!!*RQFh68HZp$`QQl
,*Q!R3LR!`4ZmJ$@Ll2,BqaTq'ReM4!-E1)Ne04XlJH&m0L8P'`jR*#"V+[[[JbP
Rf60p1@RYlR4KfSFRYkCm-8R!ibm3BlYeAPKX-1C'ffEhp@lIj`Rabjbi)Pcl3bq
&0PeMqK50X#D8G-j5!cM6dNL6LJ*(EHr90%IlJ4@&4)hrKpq`$@Z&#`NckkYM)$&
SpEVY@jjQJ14`S%"QJ(dmdM(E8hUh,cUJUH`Are(3j3hSYl5mMjK(hRL,3SLIfGR
kZ#Y,&rp'$Ki)'HklVKiX&I'K8DHi&lV&ERc(UP#*V@Rf89p@bj*[#X9Aff,!lQh
UV8[+jl,@XYI*j+Y6Jh"GZpT3FCG5ZYSQ8DDm!SH'MkClq'5%lA04qEB-2!-[TVr
`mh'r'R5QX2J9-TeUG4%I&+hE`iAac6(B9h!1+PmePHh(8HAf5kPJfU-hdHa(HK(
4m0L8`l#80SEBT"qRUG[BYE$@3Z*eTH`Z1"D2U0MDSe(Qi&AR#4TQq2'&MLEBrIJ
"FiDll8e50K2if)A$beRE6RAFYR8kPjX-1FM`LCN2dChBVILMS6"4B+!I4V84r#Z
&-5,B%rJ8(lG`TS2iPaH1F0LI*pM[-$Al%D46UddKPiY`rq"LM&fj02C"4@@XCii
#*9%Q@`@dfmXNpfpc5lmQr,UMZ33jGLG4F+1+9&G4P5a%+YLdTrJeiUBfm0JA,YZ
&[4YU!M#&1I"IB91cbIZ*D,RVJA1BQAiD6CJ"-mSP5[G(8e2jV"82p)rh'1fZ%(i
ahkf5QcY9De1@3%'Si0mEhB$1BFbIR,'fp(c%0kCZF31dD"BAF-bQH2#-aCi`MM3
RA)p%mfd[c%5Z+[M#Pakj$3%AMqjQV[*Qa@D+Zfk@jk)hP44!irYIT#+2JE4!JkY
QRYp!RCd',26ZNe5B1S9G)LZIq4d8[UI3N!#TiNT[Z$QdpX4[3T46LXMS%IRmlI0
hZ%D#RHJpYILHm"0BjmAHZ#6[8"[Mk,KkR[$#@2j46,#"A)HkpZ16F!V%4Q'R$RN
6PFh)K4-CKQf4p9%5Pam,d",8S3BfJHhi0rAFFEeFSe%dlP(iPmULLf95`cfRb-h
BMVUa*ZCc)#V0iQXLX%+kYNDUfp02I[R00j+T9QQFSjQPZ&'DP`01Lbe50U0DiUC
ir!!6qdENeRJ#FI*!&MA8YebEp4+H6K2#ZK+efT!!El--ee5J8@A2U[Qf4XlDA$"
4a,UU+`(8*!+MJm,(1Ub,C9,mq5+e39JhUP`qhA'h&["KX,R`YQ95Y[S[KDDJZT)
U6jpcRlFF1VD&arrqNe,cGaT,)XAiqESNJ[LV6lF2-(#Vc[`1DUf!)[r`mh,4FDE
LRU$49#R*)+$p-iQCE@!D!X`c`XIabDE#4[Mc`Ne`I,HpQh10A$Lk`S@(IZh(KEj
JUX@V9,HH@2)Emh9bIKrBra!ZFqRm*J!@6%UMmX*8*$e2J!jdD9!(!IMB"*)-Jf@
`-Sfe`T6R%rE#4UUdlR2j8@bk,4)4h@9PS)eT`T6R%fR#A*[(LEp2m"6(m$-"I(l
m[5+fmdPm)ZX([HRITVfMC46kcaDYCVp+K"A#`ZHEFk"FjrLJ9G!*p!'Y)qJ@1fR
#5ZF9RX*FQjH3!'91m-,(Ba-"k'63jrVK3)[R(Pr#A*YG,j-4)2MBq%Elkbj$-95
BJYme3'hjaqPP6Kl#pAaIMpF8(I&aTaJL9#1i!@)1%A,`jR[EhpMGD5Bqb[r#EiP
la-*'UUJ1-6U&&kb`%CH5C2*PZQ'8m02#@)P5-LNY4-dbd5peqIe[MY(L!`D,cIe
!3+mcZ*PYJGh5,P9!r3mBq9)Rrc5,cIe!3+pUTi!1qmXIc5!35SUP0h&Tp8k8m!6
#`XkEr`"F1,SFZlY2MjFfmKh4H9%q`X+*UZ$Z4ND1RVRLGCZAFeF)RpIY9*KrmNN
Lkd,S&[IVShHTfYSh)@fTQ3ei`Qr1ZMA#A*[GS$e'GBfkT#[D8K64ZjMAJe48`a(
EmT!!aEI`+h[)-!Pc%!qkIjc#5Y1AY-*c!G#UQ3IilmF"'YKq0,)%"J*BH9r6'2X
FTZf''h&E)Aa,VSE@RI3I&6Pd!a4L,"'&"#P48X83SU'21(I4P$KI"Jdkb(6j8GN
EQK$`8AqTk(UEVA6%l2'*TPQ`%FRdJ2N"ATM9"b"HrXYV1*-'$Fbicj5+k"%&AcV
EaIdlDCieCpNdfkASBL!JZh!&5M1lPl&Yi(QRbPV5J26Jb`mpAXjl#'ZXrA3,3IZ
rMlTi4mNf*ZiJPX'idD-S,,`!41H*VbE#P$rYhB4FR@8KMm!PS`pM4*,dbVp241G
LqMDP`VNb4048[q!TD%,4fjaUP&5YalEk@0[*-mTJX1P9JC%2Jq!53%FGV(K"HfL
DT!%K2C'+ja`d'1UfP9Kc0NFmHRrei&``V+D"p`mQGcRRa9M,AFTDDcJ%ki4dm[5
hfG[Mae4ZIH9#qZ0flUUII-NqVQBAcr"N*a'#VKU4TDer5R@+r(E("Fc1G)'eVm1
jpFH+PCl46ij`(0[baY[chj2V`P'PQG%KYN@Geh8[!p!1Jp&[AK#H#`3Z&!1qFfY
[d6qH350hL+j-F1JeUMQ"4YD5ZDC2B"LfV9"1j1Nh[`HY[HEQ#i)ei%PEC,""8Dd
2Z9#RB'@M8N2lG2lT2q%k&+`+9)e@*2*Ih96@#T0RDTImNJrI2dY-)klc5a6H'Vd
$-1el4hEqZ"`C0EY`b@YAGmdU!HH6Mqe"(ZCk6Zh*"*+Lea+XF!62`L'Z(0[Y6MJ
c)`5,-hhN&aQld"cd"Y%%6NS9PR%l$dm99)+UL&KdpDr0KBjT(8bI(5#G3b@6P)F
&kYR9d2[bMbEaclcdJm-iI$E%r[j8-CM2"ASiSP-ib[Pj%kPBm`l$@"LLFCr,UHY
!r(Y*EUJm`pG5V5)F5#h,Nck8KpGL,@#f99L@qc8j9*6h@-mS[[E&5c5jEfd6Y@C
"T!9`G%0%XM0!mC!!%V2AEY,d0IQD*Jq+9'NlS4*0CSbr!fNd*YTM3[(kbMiK(2*
LEa%E@%qGY%1Mc`@RKAC(653aHS`VR5[aF+eid(@(Ca$E51J4dSik4X,e&5+N91F
U'UQVH$0qiB-j2#(V[5"k6#B1N6d3kmJ39"l![CGdb2'jGm4U-$('@Q)F([[dq`0
V#&j-q$[GpeM,BNHRhRUa)'U8IYcj9&3r`F,lY)%"`I1"!EY,B60[MiNkmTf@&)[
fffXAEUM[LL%,@HPUR`Vq62m")5H$HJQ$m5*$a!%8G(Ap[j[*YH#Jc'Y8$iG4*BH
q)X1@lQDE#qNc3FXSQ8J0N!$rjq9c3Hf&kpA#@)AkZVHDqkdf)%CkZm!19pdBqT2
L9&TA#UbZAlA8%rLVK2*V"#[p3$9-I&H5YdHXj)V09ae4Tm'&&b@dH5S3&+[,-ZN
rmK3l+YRXKb$*-9SH239[bQAGpm)4pm4ii[CcV@!fUDTPmH#(XJ2N)[0(k-hYhAC
@KBE6i1*k#V+Fq#*V5KX@9+`(RXZ"I&I"rR!(Zrm"45`MHB#eFba9fd*N&0U3!0d
Ef[(#!6Rk&"#T*"@2fkhe6`,KM%ilbP,Q5QS@Cla0+1EhXV)'4Ba"DND+4GSF(QG
5'GE+4A@9+pEAB9l2jY-CRP+-9'@[K1B&PVfA&E%YL3iiSpC)4Pf'91[D("CEh*T
5#XqmScrZd6NXH0ZB5kGqbp8k#c&J((3rH0[F,-h-9JHB$b6rJGcb+K688eh2D@R
JNJH&I#a5Z4i82,pcmJQf(-P%0-qGCmpf+hVm&2jH!DaLbedLT$Jl-,0hcZ@KGj@
PfZ2DN!#`,26-Y,JVHT!!NYF9"IY@dZKK'!b&Gm1e%X8Pfd"UH')G4-R+U"ar'l8
23BNXmKcIA&)0!4!DhZG`Y@5jfaX#1(+m4%"maS`9Ji$#)h+"RF!3Prpebp!3jJQ
1aNRPkqpr"f#(ilaNlE9c3,YDj#j54rDX+iPFKJfS,NVLYK"aESN`HTB3rkTTmIl
&ZfI@)[hDN8&D-TBpAGR+"04m&0q-RI+fLXcSqUTcT$*2%k)XFf1Bm3S[H#&pVD8
PJ"#rZSjC#ipCG%p$MUSPifb"H)kJ$ZV9KepBdS@QGVL(blL3!&LNAZFe8@f5D6$
DhI3U4ci+R,Nlh*q6H2VNle++j$hX&DSR)Vm!p5aSCK6#2+h28qYc&#QH[-)H,VS
&-ai#VQZ0l84Qk&m(Y!l8`QV*pM5ckH4dc13Pd#3Np`mK-Jjl8hKi42)8A5CmVp3
0QmqP"INcFE)P(ecUm1cdc'KkAEZ6AQhkYmD&2Cp9JCI&M9@Em,Qp2E6BJ-rqr5k
HDTA-i%*VCE[D08iNk$"`%HMJH4b*XQk9XTLR'!N"*mY209caXmcIaBZbH+h-,rS
kl1IS$dmiREPp''GalITFp!m+DP0$P3-f5e6la#G5$Mq3!#1PaPlq1$[X5A3k-cU
l01bCBDM)a4!kM!Q@a+9P2LkQY3R5+Y'CZeJq6d19%9cq2&mkZq,f,(arfTSLq)I
h+Ukqr(V"'&@)3F6EDQLQbe'VjFLrm3R2jfYA9&#Vq!(,IGPq%5%+Cj0mPIL4-H`
KYE3,1GkGl(6GqDI6TXlX@Je1DS9I%@E2'%f+XAfCj*)+CN!VrRHr#C!!%$5MF&U
@1Q3a33E+SYN#VSP"3RF6i!V+6P6R(NJ$N!!NI[*@8V%&r5AraKEXlIV)m+`%D`Y
0%Bd-GLC0FTl"@M%HKAqmPj!![ALM,0G#@!`L&CK`5NRYeLa[2F@R#(+GaD+5a5`
*@!rXh#*G*pXd6[dbN!"3R*6I[9Y'-8f4eQ(Da&3@2`,Lj(S8+AGG0SNaR@"f@A#
3!((mp'QH%KSLCc`hRcRJ$9M#B%I`PIYIc"Xrb#h"iBjVPP`3)rM-Cm[HLYMUKe!
TiCaUq!9rbBX%PAIbqY!&Blj[p$(NaMfBkGN`BmUJQq`mdSTZ9V$XlBh,c5mEY-%
HF-pLR@`kH"#XMNJQH1%aPaY[r(RY%mYQBkH80%hN'-EVM8*Z,$e%m9%8ErLRI,r
l'8F-6j!!5*,G8@835@-dP`f[%E,N+!laCCGHGG$dN!"!cj1cf5H(mkb3!1a,f[Y
M5j4VXhMLU8e)m[@i,3`(`Xp!001e*A3K2XkYiH+Km[U$%3Z+8+#S`PYhh#a`24p
cRGfRjb4@6Fa@X2T5058&DXp@(2Mr#2YM(6R18ah*IV9QJ&6Ic1KT0'dEH&HR9H*
mmJU1IVG$MN1R@UNLXE5dJa(-K,[b[bh)"PDrq)jP#[mXPUT8I)%@V2fRRcpV&Y$
[X,-#DirfkGc0aDJbUV24MF90N4%ZA&35ZG6rHP3S%l40T+Ji39Y5!IE-SlEjIQk
M59kj)93a`cGGa0$3q&ENjfpEl4-J(bAj-rXN2E[$()Q8UI38%&%Xl"KXY*rDfJp
iXGGaAV6QEqGr%pI4PQ!a)kf+2`23HAhLY+[QlC)ahe"c"hIS1L0qh(ChB0%Uc+2
-M@hP&V@`3,D%!8Hm+XPUBhmH)DDj26'c#5XD+K1ar+VB%2Ikf-DpU)qA$hDlm"S
3Ga`JGM0CP(qG$)U1NTI,96558eBB3#*V$MNe4$1GN!!#,R96YpVa2+4KrCIbMV6
8a$B6-dHHZ9r#QAaSc4#cV0LI[Z)"hSZ+Zp'hNll[I"$m9R(P`RSJ@VI`kp$)dF(
'9&QlACld+Rl(TdIHUlT2Sd$QiL*cGi-,&NV4mANa3bF5,aa2X*Ia16ZqBrjYN!"
m*D@qNrS40eTATKXBkI6e!TAhU(D`UEC,fdFKk5*`9jLGGNSdm@FXf2(P'phKSRN
"eT!!P(0A&8E,%qYiXr%X-VYjEqNDY(LHJce`LPTHj$bl2@[G"S6Cabb*88CR+IZ
q86+J1P0FBhJ4Ij[0Z%"JQ3j@LL+8%+Jp*2(lfh5iK-qNaDSedpD+bl,E'-LG-Z!
*B*fZRiI"FE'(Y8p"ri2bTHJNPGbSD64U'dh'+J'B5XR[36MSU%k"SX+m,I&I3rF
FfC(j@`jc1+Em#CZ*'*D-!UeP,)`c0,r@VR`L9EZR4,SqK"Km1FeU6$IhGHL9"VE
lZ8qfd#kYmL"`p`2-#aU+ce'kZ![h''H&-4X`@LkjN!"raCZYrEG`FmIrFfEQJ9D
E65CQ%KcCiA!r0GYj(KFkr[LE#Y(Y)HH"+D!iVVLi85G%GLZ@rrX&#`D+!+`aQc,
*FbcrFQq'2@d4*1K-2DSS(i`'E"00'k$LD"meppU4bZ%6[!i[RMhe0&-YHN9U9hG
4F-P(XDQHBr+S8C9,jTc,V3BrBDL+&9I#qq6FkCX,D[1$YG-FKcQB&b'!%9RaKQH
QY2Gk5853!0@6SA6U[QfLhpak-FYHe!BNpmqjCY(13LUe'b41IdrjjrHXZr+GK#R
YXTcjdiibZ`@[4HF3El-bb#peH6PZ,R!KXV!!Je@D6UV)JXX2XKf1ZKM-!p#R3(K
jp$SERj)QYd6VQMEUIY-(CMTJ9Ap"63ZH0&K%"b5"16kqI%&&+&A[YUFZchDTI3Q
6UcM2ZG45',FS$6"mALC#@8S@1,N2YR!A0G#dAkI&d,Ae1&TkPAfpiVqKX5m(A!-
A'jEYNFR-SM5I)K@HT$M5l$a0IeY4NLc,B(H!5c-aArpYqkVZ2$&JaX,'4dDYh+m
FF5(jh0Ne06UKPhPQ1QZ-@aZB(mAE"hcNJY4d#5&hL9)TjTLq8m#3!,L1Te-Fe0'
91!4Yh35q1FeR&2+h(dHX5p8TI)8&&6eREEk+d(%U6A-0,(B$-)ppkqS4GU'YMdH
Q&0lkTU5*hPq5[dJL0NKl[91hP[PSUjCGmSk3!((h&Bi)%kcfl!e0jImKC-5Sf'X
i3%QfEEAF8fBNkfJeMfR)Eia*%m&NaJG-9'4`0#PBYN#jTD#q3%r%)B'm-B0,*9K
da'BpAm(Zj*!!r8'Pp,hBj3kF)-8f0h,4IV!hBd+MJmPf6GJJ+@#I3r4BNS0klIl
T9H!-,Lk$(2Km60*BIK%efcT`8'E@!Bfe0AX#X94*j*&R'eM'qB+3!&r'-APDbfV
@8@qY6@Hi*F",H)R#JUr!0#8cUjhl"%QMDU6&*9"9'P4,l'QImh0q+KddI!3jfK3
$NP)cU8PZa8AJ2-ac'f[arF(EDlI%f#&9dbC,kD`fDl0QhNG5ZikhUa'I10SeDLP
8YI%E[r9IhHb6a'i-,%0*mPb"lGd8DP6%[P@r!C9@p-h,D`DcJDqkTUA"DJ12"f+
LcdeFYMr)45clie85KmpVEIa,8e,D'RfKE@VL2&fbEl4%,J%JcM[Tr9UNlM'M"`r
J'[dkLqhYTFA-S%!,jRp,-N5SUNPfVUFA"*(Z169%Ieb[C@3*C2EC&Yf5K45$ekG
!b-EE$A"&a*%aAaI029`VBe5C)ERdkRTp1NQB19maSl(&NSiQUq5CNB,$-lF6H,`
XL!")bDHm-!Y"Y1#Y")KpL3e*F)"c60,QGTH`SHf'aM%6A"qN8dR3M$S*F0ZCG`*
"r[hG((I5PX%2!-)dH-lETh-6TBkVN`UBb&'QhkEkR+I0Y)j#kh#15Qma')h83a$
Li-aS`B"14AHJdRh2K6eKjLCdAFL6ic'XI-8ic0eM&695,#H@H8$&HXIjf5@(pr#
ee2CD!`2qPQ[,U2Rf*Ve"jFB#%2%8ZL+U%meYC(4LH6ia'qK9Y+aIMmZG%%"$,$j
6&*d5-eHc[ebT85[X2p')F#[j8,l"Rd$VKdFa!Zc@RG[-a%Mc0"ZhHYbhQBaqmX0
YM-R!%mFUS+3$D9`"q!Nh`PZ@XYBT0mX0ZUf$$D90PS'pY0&%@T*9J8FrRQI*H,X
(I0$j-$iG@L!fEhKD8blZ$eDT5h1G)#iIX"52f)C@ACLc#kpS$8ea2fNc2@81%6Z
eYH3`i9P!K4mH`Q*[36+1MmBIYVKL!9$`kF#YbkCeV,5&,j9!@-BE%021Q"cG[HK
hZG6rp(M&lGp5bcfA&(Kccb-)br!FdDQRd[im@3RASlmGPLVXKGR-l3JLIkN6I+m
08'Zm82i)K"0[#6!@*N6Z-934GM!dIR!Q0VlSklri!c&!cY%EX-KQQ`NUd&Z6HF`
%!YaX+ZQb2pCVUBBjdip+'%iS5d`(q6Gpe6j5AP4k&UaM-CZr,*K*,"*ciRFQ)UZ
pXGf&N!#d&AT!XrVCBm5GEYf)'1a9maNLb$%b+4m0Rpch`D0QjaI-+!PkmJL9B+S
d#5d,C62rh8[DU#aab$D&8%fH6Z5U+3DR,X",hqJ#(ZAD)4XJ!2+IZ+S*NFUZ%%P
[LZr8NK-SE8#1dDhXV9@KQ,Mm4-Uk3#jJR*lfclc+4[Umm2I,KpfTp)8q*8f5%G[
U$G%EPF,-Cr3cMF`V9LFA+hhNjkh#9SI2KMb*0JPqVdiYrRNrGpXX+G#'51#h[@R
Y9Me+Y5d2l)R!5BcDmN(22qajli4jHa35PNbK#!Bj'rk2IF6N@NL4P2$qa6qq@Xl
a!5(3UGIE6lZ`Xqh`F3(5-FidPCmK)r5Er*[4A2jYG"dUh'#1hBC!*"'Llar8G"T
86(,Vfe5HYFC-Ab3H@&"B#j8,)'Nd`JK@A$U9p,)aIDd)9TTcG@Z0c(lr`j(T)NC
(ZA!cdj!!ZE$f5@'2a*jKl4hRI82&HS&hF[b$SCL(ccLp3+VmR6C`YLZ9kjL*GqB
aG4%NBhi3D3aZ%&amr$T61HTYEF&kU""10BP04Kf21Hp3"c,9XcLjmfJc1K@94mR
#hiNK69(XXrNR,R-iV*UqV#C9+akhp#dX)dQ1Be-3HJ&9)PlDR*DjVEK4'U$rUIS
,-K#ZHb!)kUKJKCF'-,5RAGc0P%TV+fLbm89S5&eUM-Ap6c82+lhFCI`Q"$'9$m9
DrD8qDfcLRT1"Gad1*NjYRPGDBlYLV-Fa0r"I[p$8,2X'&il[!jdDa6-1AG0K3K`
aZ'NhVh'h+3"-6@X$)cfd#I,Vi2ll3fbUH#,[J*T4(a6!`FlkhIk[YD%hK1!UGm@
Y4qEmQDDVfcRbbRL6h#'kq#9*$N*QX"Jb%F(2J49MPc0fQ!"#aY0P03&"KT3F5k6
Ia3a[eZe[Z8N'%'2QA2E&[YBBfi1a*cMQ%H*6TAG"$bam@X*XbFkTaL+h*'mp9('
%J8$amC2Aa4p!f-+X0"NUlFLc$+0kCE+,P9%QZ$9fB5BC09(N0TE)R4F`f(DCdV9
cLB%(GjDTr+IXBk9,raQ$bLl)+MfCS)J6ffcmrE$d35R2r2NhcD%TqQ[Jh8l0TA4
+4,a!jr[a`Z4J39q$"G`F,qfQ4Xm,L$$MFbX``rL#Gi`6qhAITX6hJT(d,cK#CV%
"8,-cTr&QEd)TbA*6bC!!ChaQ3J3dDaL@#AVha)cr&L9Ti6aVemrE1$CkGeje%2!
Ij`Xi0m)pL*L4)&*3ZLDe&0%E(q#M*2h&T3b2a'A4`jGr#r&!Dh,NrrJJ('BU+f2
[6'cA(jb4HEJTGDC4UEAYhGCLBj-J4B1kp1fUG-pRQ[!IEeKqMPKVce"5",UP+-3
VhT+$h4'[l[q6pjh01cLPdZNfj3-b86@"m*lU-42QH![I+I6&JhIX6U,qTJMf$F&
,j,!Qb)dNrL@rXl+PIfqi6Dia4ljQi82IYl$I[mdqEbYpZLqd%4pMDjAjcdS(lhT
p(NTp[F'&kRH8aY-k`%%Akd1PYT9E1I0LH)N`HlEL!0*IB2+jBLZV!i3$,q6Eap(
IYIGd"9ElXEKTD3FYK!0qGDK[p![L#Rr*+ld1i(-RqMK#-jRQC66l%md*U1lXH9+
E1[M6pi+KC6!KAG)r6D96KH4UP-Gk*(S,Y1cpG#)A,l[&#NK#BN'JCDF5Y,@lN!"
ASYm$cmEG!P"5$p*mVAF(qdH+0''FJbm8c*l##4!Q#l1J5EfY4(6(Cjbc54[-P`l
JF+5fY%,9V6UaRpfFa)SqA6k`MMMPVG#iNAEMD[`HdM1mj"4`8F*K[epi-j8mq3c
)-QiXidbEme*V9U#9SFZ8Y*q["LEY)$6TMQZKGFfi-6Ar+L9fUqPFNip&ZENPLFT
$TZXR5-@e'fZVTI&"ZH0`5eiUB$NjrJ[%#abhIG3XX%*If+lfDEjDZ`9%4@+G$F9
(LF9ZPNP!IR4&%%9A6NH`l+r(C(%T5a[XV`CNG'[#6SEUrp``Mi&H*VJqLYINj,"
4,B2$%(F&DAdmm@@G6-pb1@m5J52FfGcA&i39(jd&'6H6X(CQEaeeC*%LB6BXcIK
8-N5`T1iU$)2N9'9Xh9Bqq2(q"lE68K-pYb&@hH2iaI$IUi2(FYNX-C2&ZC!!Crc
pM(!@k&@l&(HfIVKkmTq1FkZBU615!p-`D9,+fHCFkl+`6Q9[#D6UU%afFl)fHa-
5bB21F5Skp!2+8H#19)4N[Up#!Zd6(c5"F&U836)i@XhBGhDq)Zr-'0cGhm#IA"U
5q%i4lE8$L2V(E'H9bj)+GpIJdp'XCZa&cQDl%6#YVA#ZDp)48-m3RUJ4qHS0X(%
,FFr,4bN+kd!TC0jD*0iA)6jU%ic5(p$bAeFEkEB'p"5eXA$KCmEV(kHk5kXXrM$
1LD1qMi1`U*j,eN#&YS02!BcT6fqD3Rh)m2Q[!B5ce+0J%'qCPLpm0MIN$L*"0c!
#P[f6KaqY#Gf@4XhlF2Ta0U&9@(R"bF5@BbG))!2J$CqCLJfP9lq0h53K%mHR'(%
5klmBF'V1VR#dU@qmNp)$AR0I9c&Dfl+2A%q9Rma@5f`e4"I-ZA9(i"a-#`1*%(A
9q)I@A+ATM4qNcX8KZV1D"mYM[lLC!H3JKlI3BTdKiHAE96L'NkGHH64AS34#h8Q
J4j3eH@$CJ!&h0'043-EB3*+L`",p2jPA8a09e0FI0cr[Gm&GL+L3!#B$0mM,Kch
*Vk`,B'@%F6p(p-MX[p&cDrADbEK0LH$)%bDQ!lBI*2pijJii+4`X9(-+Rc5XTj!
!)1GcI1!$-T[Ga&aH6#p-QEEcadC4AF3U1iNQY%`[c(DIlTHNb!Nej2Y05a"Glc@
MfX`2)VN,GKr0+LRr+AhBiR(D&,F`"rYFc2lSZJ-MGP!&+V#qR3SD34p#iH@4mRl
j-$'J#IK`,AM-#,EcL-)dVZ`kH![r*U@@T5@@J5@P)0`UmGD0p-N8ha$Gp[XfMq"
#d2)IF+L)HT0*N5e%LH5Dq"6p"r+h9%iKRPJ4V6`#-GX3)-,Vc+Yc1L02p&3K$r8
!lEf@ej9CSV'i'"bCbhj!l0T@*VE--Sd#c8GcASPkjHdcZ!2b-eT!j8X4@56jl&)
[)-qM`UaQ-V[`FFaECTkl8S8G0%q+(GaH*+D2F@dj)cP*e2i*-0D%&bVM-T8aSmj
9,i1%Xp84`'D*9&3NaVc+8+a@dHKJF'X(1K1i'[r53!E-PQ'FaEXBaJamIha66%Q
-VDLf!Dk8'&G*H@TZ)p`ZmM%3%+Ch4I`C`(8DG538MCD2YEcI'$M2lA3D0*Sp&@0
0SH3T'06bfK1SR$*'dH3dP)fkS-eUTc'i*BEh$CPIerPJXp8YMc5j+e9Ih!AVK3[
@["GPrr!18F`"U'q&j"SN!1d1$LaFCZP`M`88KIY#K3VKNS![bFXi`@E(Rp[9d,T
`fTQMd%r--kfGQ'+1c'1ddb'+Iq)Tb,1#3$6j(XT``Ah0krYNj"D#96S,HLqm!L!
,9VfhK46!Ub)V1@Z@*4V&'%4[$`aEc4*"+LH4Dh8Z9AkRpBAiFLhlTJG2Vh#P)&0
jIZf%iPTkYR38I5'YNh&mcfCM!FH&q1fBN[kL!C0jb+!dJVcGjULjm[lFEX9D1)k
$E5`c&"#@Pke2q"-Ac,%M3"`E0%9H34%ZF0lqDeCl[cPR@"jM&-MI1&FUeNF`D@&
kN6fcM+b*,)Si*"j0$lXJQl3$`hCca8I26$$h`921)(f8ZfI4mBfrDj5@X&R'Fa9
#E4ATE[)%-hM*X59JeJqUFiT5eJ'+DElZ1P0mF3UE)mp["h4R3-Pa28"`CU,'l5l
j4jH8VH2h-`NKHEEl@PUEcc8jE,ahH&qEm![d3Kk5dN855aQ"U)fB0D*0+Adk9rk
mc8A9LI,FN`9Q5EB$5%PVTHZaHH0h0"kilj!!K[6c-dN(NA`K68VT@Vc6m3b&Z4N
F`C5@USI*I[hY)IrA'VCM#cdBlXS"ERdXEpd(J$Nk@L+id$-4pPqdKpd8BcbI@"S
-B$B2c[Ep9IVJ5mUj&q$Vb*J2)cmV)cUp3![B'c*KhbQYaMEh*cVCIeEGA6a#R9%
Jh,kkiHm+BAA*RM0f'[I[IG%CmH#r2A@mdf[aciQJH$`Z,18-lp'T$[N$3+jP41&
Z9J4fq1h&'ZJ52V)%59-QhK*(H"9ajPLjpMK!),EF&M6(45ANh%X%dSRcKjS4X3q
kdB"qXQB'ec+R'b%,61J-,NpQFl[Cd)NA)*+9*lqQU6(`!9Z&2jFRG,5c0D(dFc5
50cS`92JM!m6@k)icqhLr-'Lrqpm,fL*mE1r8A*H&I#+6Ni)`Qm*355r0YeBZ1&J
+6%0F6486DKS("b"pi1RjDHf3!'LrJL+Y1)pRE@)d$qdUdRd[YaHGB#+c9*p4r4(
D"280lG`$Q[YL16Hk"K+"0*k@UALBA(!MGrG3aZ383QcFim,Jm8j'hI`L1L2J1hS
IDi9Q0ra-UN!3d1bK5(B8iYQ0&NHq[PU0j"6f)VVEiBSRJX3J3SFJ,Z#ph64c4bS
I-drSiQRNYNkB5Zm*fkP,PpXk0j,$Q#)DaPPqrC)aUVaj$kTfk$,+`[RJLMI98-V
dr6ahYfCY1c8X,FEe$42pb5r'@Qh--d)46881Q)#&j+m-&CLNG[CST2+HGE4p6eX
dFV[ZYA9c-GB2%cUU%Pq1A*K'CNf(m&bdl4Fe9kfrKS1,b3(5DMD#MhQh#35VMKq
JV5dbqGQYqDD9[d@JMZqQQcMr3h5M00IE%jj0UJQHj##XMqE&EJ2D)!Pj8M[be0f
blEY6%X8@V2ECq68$UP$5-TjYBh5"0`1&CBHI$P#qh80"ACN"dJ%8fak3!$2k'J)
"P"(Vj,$V6%)p,'j@c6@@TfEJRLlAiT9L(5BHj,d8ITh#I1K+1Ac'QVJ6*VU`DMT
cB4V`phUH'bV5PVrJ4b&81TkZ+$[331-0lP"DGEYkCYlq8AF1KG)Xj)0hAC!!863
pl0d[kKY-PrThjX$Dje%YrlfrF+#p`*F+lVqp%,dJVV)(bkc(9T1hr!2j%2e3Dbj
B*+Z$+Z""d'(GcrI,kRA#I@!Q"aaD#[deCV0pKT8J8B(3Z!b!Up)8ZL"2[P(BK&Y
84(UR`d)*1M+cGl+lT-r#`C8prHp0,!8%Mi*8f4bX"cmF3Ab3!$IAa$34!AC4"k'
YPeVr40cF9$cJfY,'!CRjq+A4[i@&5@I##NRcH@L`,TqPj&NUl+00IPUpGS22`L5
cCJ1j*Trir"$lhE)(lhNSmb-fra@&$3&")4&S1Vj6#C6mYK0cBphpD1P$b@L,CQ$
adff4rMQ&4L5+`AN6)I(*PUU"KhYajmMK!3H1"*aJ"[T1&M&bR+MJq&i&c4Ld-Bl
"d%,+DFJLfelafUh,ecGhV@3HfM9VG0FP&l(arV"%-c9VG1HYk5@i-rk*8#340,L
-)6Fe-83k,RX*Z&aja50k!lVN4(1d-Cdk"9F*83ZZF--LJ3,!-60hFf@m)0%I#4F
A&Lph,aj,6@qVhQBacGVX0%dU&AH[6Ek-rEm"Ql@[IUQY1&Qc1SE4ckehLrTI"bA
dY0e#JlG8&Z2DMN'2&"X"kJ3MiJ(,rqVh-(G`r%4PhE+Z"kiR-KkEN!!4F9YrmdL
eK1C%Xip-E`aJ1"hr`,Z+D1JSK+&hBaH$'Er#D`ENKQIFQb+e`4qF1jSXI#!h0#$
*D(`RKqN$[F*e-#[a!j)kkF[C*MkTam[aGi3J9i"mThMh,ef[a9Jbiq8kr&JQI$5
P%c$#$M*E9UpD`XaB)2kfQAq"d!8'j2[)kkC',$M9VDC-[hp*YXA5bDCAYYc1r5&
,dDJhmX[#"qF9Jf`XS8NU)6'C[eQ!e2H@!Mp`(3YeF2LE810`Cde1N!!,+I3Hb(9
(Q0$-#Akm`CXU1%YbS(@qa"fJq+!UkFDhr#*dd*r88imFb'X,q'10LA8(bFEd&be
4Gi(MY'IMpqA4,q5CmCI8*b'$dJQQ(0dDMUhV)&F-c"0k0!c%S5EV9iCkMp-6-&B
TQ"+540Iq5G)%`%j!)I2MNimarRikUJZ@HlKJ[TAN*PFV+&a8HH5#qm2%YBJSFc!
`X)QB!4HUPN'3!&+dMSS'G-"UmS@@#a[B(N5*!jSf%FMaIX%(f@RY*IR`12E%`#Q
KJNf3!&MEX&&4-rT",KS,15E-X(43ZXY%V"AEdmI1NF,E,XB2QpGV`L,'&m*H@2'
0ieX,r8eQXa5TA-KCF&2,(k!-CZHBjKfLCVLY$@G4&53TqrM8"fJ8A()N[9Sr)3,
1j#91De15LQSH@1br*K*'Ef"elbahV(!Pfq+R)!H9S12L4fY0p,Yr*AkZ03XE%q4
)rF(&2Bcc9C[5"I0dj[`6phFarKe!#YLRHa&2!65EbkGjfC1I%ca%8)TVMjD8c(c
mH0bf9TP23(Ie'bc&h3JImKX#IK(*[IHrhM#!FHBGR*l)'%T@,%rNkTK2#i1TDlR
%r%r5QdF!5pBE'ff03`mI3qcFDAU*)0i%-fkl%idj9aT(mK@id)i[Y3X$5C24[LH
3!'PU*Y)E8id"3QRJdXVYF6C%EFVc3,EK#la$jGrS'RQ+!!8rNST&aFi[ZjCUc3U
G&e6fM9XdVCKiNY$e8CM#DCQYA6rKPGJaNXp8#MmLrUp*38cmMCdfSqZ69%$'Vlh
bKh0Dhl)N#R%i9("N0'&Kf2Dj'FJ&-F8lGBP`-E-`RL1GZCkeF"E+-%U0DkH*c#q
eY[JRDZ,XJR0e@)(Rm(a[0+mRIX*j2kaBM,5I%""EB$rQDaL"`U,81L3d`L8NU-+
8Ak2A`N$V0'heDaL"`U)M`@e!`M4KXYUj%'%qmYpc`[4rRcm3`Q#)QJSFR8"[49T
i!KL$Rh"@60Di&-cjKIb%PRe,5pU`5+bf9ZBQp[PjZG*D)5EAU$eic*[C,-9'I0[
aEp4)C(jh5aI*fJ$"TAi!86TF),j8J6RiHER)!CENQMZ%Frff@%99))f&8)`Bc3C
c52DKR#1$"`0fb#4283-Ql6'-)#(N-8(-AKJP%JG(-#28d-@!crST[!)H[GK(5E@
FKKJ[$ShhkbC)EH+(a`iBGhAX9G'YqA23()!aMajE2%HX",M9r[S3P2jc*&$drQ2
'kdX&[P4ApPXbbFaZ!#j*ki6Tl*,"'-9efPZd$c#'FS'"-$"bAmjMc8j+(HcZhh8
k44!LB9CSQDdI-9591("F3Mpe&"F#F,ra'&Sq3,pZcqmq3%E!NKk0V#k1G&m,S,j
36Lj[5U1$FFcDY@ech3HXj4(#M9NFaHfI)[l,Z*qL&#lU2,BiSd$II$[)lp#N3$q
+9l)%$3[Y-I(B"kM#2"A#TT[d)*G*`HhYA`VK%GL6"b#Q@9LQ'PDKAp&%l342*+E
,SPJhL`J[32k0Mi!Hcqf916SPf3L88m5fYM$af-mqfd&kGm96ZD#-lkX[lQA53T8
S%Yk)LN@8dT8U*lh)V-f4TP%"EiGZflHmZDQ[iNr&1Q@3!*V"EZ&b+#81IYcpa"!
ldQBI4mJL6E+5A&@)@XN5"p,q5i'kH4m13KbGF`qf*RMakJ1UZdPYm8(J3JV#LM!
adGf5f0BpL4Tfa#IYAF)Q@(YPMp+f*-K6P0`dFc+HAJQPkjpk$e)`3KIrAm`DpkG
%$rHQ&4YVE@0HjG6Jq8`fr$!qm@EBZ4+'[YB4RET"S6G`!CFh4qV2h%`MZZ%$4AI
%bSFh-J@9XpRR4-@pAUFM$KaSCNhdmPJphXE"Th#pBF`+3I[I`TichiPHU-#e(I)
XKBSmEXpm6*RL1`KfdLc*L5"2a0#FDCqjI`llhK2'XLCVrejCFTJ35P$,[&%"`@$
-Pf&+,-GK)YjdJ+Li-4GqLXeSDbd#hFkFUY-riff(3)Z`T5JSIm9GLY&0QbheclZ
M#9FYmC3m-p0FD[)*BAIA[T&V,UpQ1%3+*iN6ifkmU%M"Y4Mr61H5qeM0,8'H#K2
8@)lXB&RLIdc-YFp6-J2U2`N*C[%$VX&TRTfZ&2Z5H)2q'[4*8Mh[b#i448UKRHc
`[%cbk#k#)b9(F#3aR[GKR'XUP9Hd+6KR"B*Vk,FYmG8EU3D9X-df"r!T*kljY-c
'(!G9r+6*Ee`SFRa@2dBdlblmmV9Mm2LSqLHM"`0Q)dkSDfm,4Q2SmLbeCSGjD`8
$&5)m0[i(qJMGKX[2#JmdriL$DAE3&,U'dGe%0*d8p"6E*9rRC[XP9F41@Jpj26*
TS!cbJ-8LkIKkqbNX*'pfK96HFfbjX#,#8D3J2a)i#+9#bfK`cCj%bAUaUkD[Tqm
FrD*kKM'p&`[$I6*U!8d")UXES(`#"d61EKYc)"QY%)T$&KjdPMecE1HF,XHN)S$
hl09m(aa5Ab-@LBrE*)[J!`$Se4[HMq"H*,rGX#%jV@YbkX&)LBHH%!hZX6MF++H
r(e"SY(`",*`U!8'@iZf-[b,UU(Ne&K0-TiZE#V8FE2Ff&2Uj+UGd[QNpaSCKTA!
'E`)Y3'hVlKCj0-19&[+ITKX),S)edaZrZje#G-&kK#RGJT,$I!mL`MrYQY2$X2i
qi)fXVX9`i`Y"RQ%%GrPjH-GQh!!cE$S,JMRRD6ISjF!'k'Jr"[a-@c6*qQPHE&F
N!j@NP[LA5A1E0P[NUIrri&rr%CdZRG4I$Zh"!N(X5d"-MVU`%X85"SB`2iThSlD
2$a$Fk!$iGD%pcGCm4VhNjM488FLr(5K#`G!pB6L6,,q`+km(Q41%KER29,bFa#9
1#blk'F*@GjA1JGmcHSQ8#6ciM'IF('&Q1GM*Tf16cQM"V!"1&M-%[(cZHHc#"G$
fcjYhf,Mj'fi*Vd#8r0LUd,YfaQ%#*1ddX%ijQ8%&hhd5Fb4"V%-SkT)#Gem3L$6
i$$*e"%LdAjdD($X1"9!4!d5EMLkr',8iGeL,P4H-Z`Bk2l8j`5NNRDc+BHd00C%
+c)4i4#kl@q6N0,#I4redfaF"B(Rl81d3r[!*B'98epp%8@Z*F@0i2058)CXp3I6
piQD1B8MG!U(*GLp!c$-(SKVL3TZSrULF6!D94)0VJ`i`Mkh`9ZG13-+cj[J`hUZ
$9aje[#8PTG`T$P(kG6,"b3d%Y"LQ6+hcUXh#4%XSC3dIiZ-$25N9YD4dE#C%K4X
A5"Uj1@+TfmQZ)S64+K4(8HcNfhNQVl)Ql"Y#LhIf'rQ`GL4[jf,p05@*ki0*T![
mphlFAV9@5*ATRC1+eiicr[U3!0h46-b-C$FkYLS!)[0lMp+JGk'k)qr0e(5qR[f
h4V%[2f)A5VJ4&16`Q!r-1!fc$eM*%`mhBRh&G@E`JrE5D[eMf1*-afEZ80#Ak2p
5T%Rf)-J&cmNV5)4-!5bABShZbJdLMA@S"m[pBe3"f,T"PkUBf$X'riFL5e2DqDM
ZGZipkY[@M%*%K8%8jX6Y95c3CQH0cQAFTX[krFlqk`1V)4LB)80dYLchTlU`ZfZ
d5DN!)6Mp6mA`Z&T1GB8KhYfZ)P[P*MfNlBhXZ%K8DBjB2RJR[83k2pmrhH,3lAD
lV%V!V#!b&kS,'#(",cNb9S6YpjMNrmT3mBF,eL@4TN'EImE&923`jZ4$U$04Qjd
KL[3XZ0S"#i19mBCYRmK5Q11R,5$S@DHR-@&4,$E1fQ-lQ+d'2XHM[m1IrL&HcFJ
8ebVSjK3(M[5iZBR[+2PB6'6B"[4qR[,fP[6%jHcTA29DbZMU$,4Um52p!69D(er
d&HKad$&daH(MG6jH$rfGi8J0`RG!pAE`QRC%MPb+LAjZ,&#r)(S2mr(T[6*qMBG
cDJGFd#YZc![8m"1X-IlJ8'!#)Z%F(LLhc#)KX'(4*c"DQc9I+VqrI*!!kZ$#R5J
(Zbq&9G!(AakYH6MKG'0`95l40"rmCS$2&0brDq[*e*AirElfZ$U6pk*Q*Immf4j
B-IHLrmbqpQ53!",j(&4,$MLpMf-+r16Ubhq3!+R3lBG4k0F(ASr*r&+9"f8$[Z$
dF*8a!24qp`F9d,*)eQIXKI0leKiZXQI@d,rANLP0#+1*4%,d-I"aer&ZH@Cl04"
dNq#jeY$3'-6Qq1#NZ+-'-64)*'IXd)q1pK3*M'(QCCKM&1$G6-M40F9V5'"I4b)
,@Zf24P(4PZhmFI6AU(BB4k,dX#Yj#![Cr'r-(,k%G-i8GLr-iSBcA0e$a5-c9%R
f9cVmIDiaR,pD#AVdAh$X3''3!)T8p*!!8MUN3VA9LB$#0@Em-U'UmPee#82N`[5
!!))cj*ppFZ&4[@FQ`GUH"FS+#iSA%H'-Slm"5rP8E*Balpcc`Ak9K8kX'`2,T9&
jmeYXa+2SF)(*+hHU3@Ed)!i8eZS6400k+6@ak42(l3PdFPBiNq[K+#'ZNRqpIHK
*l*f6jPbYUS2K402e3L8,PB@3!%b-,4IYfXdKf,6@1$N3fMKIAZek1D2a3hS8,p4
"F,NEY6%ER4[BUU%KN!#@RQ8Ec8R09AK`hj,&+A3Lqd+59$XqaT)+(aEbKak#pkG
hV[pJ!E&kbhI1Ellb1X9j9#ECc`%k"aXFURhYTImjHRK@,8jD)4b5aCqpa9CkC,F
IlF9jSc,P1RTk1X2Nra5BL`h&Tf6&h&5R`Fd"3XrGTDH3!"3,)93kEX)ZU&-K24a
031JE!6Q(D-*@HPT!aCmjH'$#HPe!9S0Dc4YBlBDP"abS`KX61BH&DhFB@PJkd-)
pBHhrVES2pPBDViLjhB%&"kUhI*@Xk2T'krhPD8"Gqq*-)2lhqYY,rk%D82qC$5)
3,[@8lm)a8U4@3*-*h2H@hrP%I[i"$04!B8#Sf"([X(Q1X-R&'SDk$)32A85qF)&
+BK189f2#T#)J0lFE&*Pm3B("%qV6@%6A*[%DcEpG)8%jr-NhU$D)*NHfr$bR4&8
AQ`G9I64De('YE,S0#`,&Z5'LXrp9JH$rk)AYCjRkPJ'MVCr*j#e-NpNPGdZ!f49
Sp%"B!Yb`Ka94,aUkpfD"HRUTM@SQ,I`E((%#DJ[p0MTd4j,9)S5+ZS`KchLPcFP
S(&fB@)+rj0mYLhK"K9FRZ$hP')X'#FZf,!jQ!!k9r"[+YjGZIr6RGi(Lkm8Sql3
2*2VkZcIJBmrda-"!HISI@5MAAB%@TES[Z8Kq!Bac`4#iG4NNqDQ,+eQ#"e2+ADP
4VPlGqYVprQc9bfD6JE@l-B`YCMj&3Hb8rFq+&cPd'!KXUNV4-Jq-Eiddh-+q2S-
CUebb(V5"Nbh)&He%[f9'Q2Eh4TJ-p`UBlX&,Lk,Q3ekpSXb[NbhHH#*Yk#j,lVK
I2%L,fdDBEml*F3iB9FKap1GT$$@"XZZdk!%LGCNZJ3Pj2mTBTkTFIa,kYUI#@!`
8p)M2S",AVXmc&"0DrUf86B)6lT3jRV$Fj`me*hbpL(5"i[kHC6CF4SAkJ-[pGE3
&!H*Gpc(5eKmelJ0K,"hkVll43jh[%$DRV228RACKcmB2!5dLT@E-3k)#UR4%aNZ
M(N5&)4!N#m12KqdqcjGPRqjM9,09e3U1H$VD2h2e04)"c%kDiMMEYmLhbA)e*$R
flSVdGLcLJ!GP)BRh0Q`K6YrX'p+8PAN(qK8ahrd`rMK)MEY1QfR[,$p0cqaQ#E2
%rHm103XCFCSKd+h$FqFj-KDFjeU3!1aZ@%N(eY+FZm$qk@BY[XQ#1*h96L)[M$Q
UMhSl6JT#qp&BImLC!5-*,r)Dej0r43A[6YP[%#'2JSJT293J"F(LCa"&5RbB#p"
Q2$jEj,c1F,-Qq`VfKZS4dCC@2iY!$Y,'Q#cZ%ZTq'hKKj9P!a1VRJUH1"DFlJB)
SQi+Rh`9HhkJk+9jZST9Z3&q%!p#YClJDfD-#,m`Lc`jN&0dKH!Q$b(qq*9j`"+&
V5j!!J+jJV&2UlAXB`AMlRT,Fq002DlKYM33aE`@NF)laFf(b5@cUXa*kNYc6NIA
4%h3h8Yr#[39SS,ArrT`,h#"$le&8B%+1Fh*00&23#i+%([AEV6Gf1F@'aKY`bcK
F4MehB13M(NX8HYi&-,PpZUNNU0VSpb8ea`0`$mXlY"'iRK*kb(!F[XEJ8GhUUPd
LRc*i#*kc1(H6[T5#&HdYA-3MqkHY@AqH4T!!BlB,Yl[Z'0Md+UhE"afBB-ekDlD
,,2NM(Mqk`bMSa#+KQNSS6!XT(`33Q1Ia4JfRHI,Z#j)JVb"j)R9M@M6YSe!qk-T
9'aZJhDq8U%eilpamXDb9ZM1A1U-Epa-'*%KXr9QbZLqe*D%IB1QL$S+DBQ'lENl
MGaY6PbU3!(2,JK#64#H8N!"15[3dQcLcV@"T1+bQAVpPCXmNAlCh5YXL*J+S-+2
&9H)3ZRcSM3E&%-68rk'HmIL@Jla4(A"6Ym+Trrhd[SLRcGXPL3[(Y`X4#'V)#HT
%rUrrN6QSHI3Yf"cJFZ6`h+QS1+ZG6Nc1PPDIMprAke'T)mADFAe0a+E)4VJGNJG
q2h9c`ZH5[D,pPUI%(IGa""`LA0PQ@0!e1Ded,!(,1a4B5DeIcAA)Gf1idR3mPDl
K`'jFK,+-k!Nk63j,25ICB)X&Yjjf')-1(Tj@G'p8a%rYb-RX2!IaHaJ96BG91%I
YRp%M`RSd3#2l3AC[Kqq(!6KjKS9jh!pTCXmaKC2Ji*33D8XYA@A1E4RmcD3)&8S
Gr98XTf2*abK$%TLXpV6d'%BiF##3!0ZET"pDjbHr66`Zl9"hZ9Iadkb1QX%eb6m
ZRAQ$4qLm4CEP%GTGNd,!)6dQf*qXAZfQjZ3RNVjPX6SKd46'P@*[B($T2R9q5pl
-4DH2'QPI1$ACcbIMU'-C+Dk6m+pZ3YI6A0pE-8M+aMrZ,,H`d)H2h!Zh*NJ`B4i
43d+EYl8cGc1Y*rH9caM"P9LGBZIE9QXK6PA#6%TKHe`)[rBT(+Yq,)UD+L9QeYa
P+Ml5fEIGYJG9[+Xam#,13YGYUDjLA@"00Rjm#P6BECNf'ha1B91L8'%(*[9a*Ye
m9"rCM")Jfhf1,[qU4dhF`!$,(6J2S10pYCPdG,NB`3P1jf*h&4F0`f9Y&lpZ#`R
-ST5q)0$*2Km[6RFJ1ELGj[amC8XF#SYTKceVAdd9H3QYE-I&ZSA(e`K61"hZV94
"j!Up%-*k!0'l*TrYZBSESNicm,-(8U*a0Dh%p#haJcJX&QFc3)m!C66ichB$E',
mN!"RrlGmh'-2RZL[*[T''#bp,!Xi2E&!6Vqm#'L(m8#m2"KS5X6a'bpp28f41M(
X0Hbp-LV8Z0i,`6N2C30hbGD[k,eD!BBpRm,epVL)m9!KI%%QP)C,Q,*Ka##4,hh
Gl638XCEC&(e0mF403UHf"df1E'E*-T8PmQ20(Il)5N-mdCNAK%%c5Gh%RKYQJpY
qBFmVEbaj8r91`T)E48[bcL'6SbC'%1X[CM2ICY"M6(p,XlN*L6IS,MN@Rj9iGcm
cmE5m""CFbL&fD8BSdAlr2QQj6F'ZLP206[PGU0d8TU(1QP-NC4YYQr)h38hRDI4
,-ZF(`+G0j$ALLE-aBd)AP6jKGrdbCXrXTJfp3&3hcKq5T3X*1"brELbp"fd6qVa
b41!TlR$d8T(m3V4(hfX9[d@5MSjV6j*Fde30pYlhX+813VJ461Te"6YGh%5I@2*
M*m&[L@%3GrR1HF6Pc@CZ#Ih&@r0"&JArV,)dh)4DV['LFe(VL6clTMN`+HLZ,G%
6pEY$Kc%`bmUbXD2ZRSA)MUe0M0cd3l8,Y04@hm6)JRr(dXc4%rF#DJHVH'N2(k%
h8Th4TmGFYA6`(J@h'Y,&-$$Ya88"@'miDJY[[aKhGI6dB4Vbf$2hl8PTFi`6PY[
#Zk`IreJa#,&8IZH!rkhLLdYhc1+abE!rDp"h%!pc8PI)@*4![0Eb&9`Q-jNR'US
JPRfJl$,ND"&8ANH&he!,,QEZ%L+LMXk%bH2pH5A$Y[eHqA+UaXPT+[e"P+(#P'!
JLK"r%%i4S0V0SDMaU%mp#i"`FI4*C-r`SDm3RhFR4Q%,Nlh,TNN!IC@QMhG'"`5
&hEG#64@ppP[*H,Nm5`&hj+qKRSmTYH-3&jX-R$P!V6N-8cRU!F903l1dkHrYlrT
Hc2I'cTT%V,NX'mkNXZG`$3&bdMU3!1J@"S0dJBLVdYb5h(#8-(p%6MN81$"U6YZ
j)HNQiBe*#b!KC5C@f!*8F6!,`Y#5-AJQ[hBk3'dUmEk@4fhPU#jkZrkVFfiZA24
dKh3XAFfD"BThLriK$J(h,QfAl8Y#+XmI42bCp26,6CKrYI&Y*X9D%e)5-NEdBj)
d5KG3CCb&GelGC%",A""NaE0VE2i[I3'+5N20mA-q9NeqXNflGmQR%)c[LSp1a'B
kThY&2)XfE-li0R!&b#JreVY3i8Na&P@*NcVr,*PTbDd*"Z5rPm)3Jq`iGh!2fC0
X8iAiKSC6%cVZJE)d4)mBZqL3!)Z28N6Fc"iX"fl#SL@4NT&Il@EF[ZTQYd6SRU#
UDRA%,TaGF-m8#NUi)8M"a*RIY*EBN!"rRpaNXKMkGZ0pArKP#9DFh+4'aM3(RXM
a&2hCA``L-I8KkL1VDlXQem8VK&5$,2-Zc%[fd"H5'34hP&9-09)H$)m,6aXJaP&
S'$mU4ACV8j!!YCQ`e!3Tcc4h+)9bSIRma,6NEf9DC4"6XeZQK#'J%-8S0)T5f$3
*B2m)SFb')AaKY'@L%iB34-jRJ9b3!"9Z)+EXBLBha05'#)!(HITeHXk((%i8qRe
A4X*[DQC"KFTl-q03i*@(Pi%D9!dP,d`S"CmJmqfK(&P*4I'%D8*Bjlc9@#B2Uj%
QH%F!qH)HPT5rqaJZ[,peC4XaD#pqi6KCP9ll1'aZI[)dP'#NNm[FrX*-MMahbTp
[)0dVK(J(Xe240(Ek1YTQX83F8Z"hh%!i(q'4*#NPYTLqR3LPD0#THk[*re8,5bC
HQJXDY#*a+$I')'I,4`'UJI3"0*)dM5r)2cGhRqImfl(Y83G110XQNmbM4!(!*L6
E6C5`hhBc1"+CD6S,fr4cU9Elj[pPh(q1b6%L9J*M*2!A*T@KmpP[+Q@eY2l9$%F
$Hj%ZDr6jFII0'0e83IG-Za9`*e$M6Y5eUU'RPUUBY#&-+"M,+U!-hY2b!!rS$Gb
%f`Z"kA0$Y,N[-2"GJhHF%jrahC!!JZ6$RGf@FlTpD'&!%cQd+G&Q1Jb%Y5jpPFM
Id$40`U'A)0[B0r6+KKEKLB#hI28`MZ0pZcUhP[CpTe22rrF6T,Gek44dTI%(T*1
d-cG26fmfb%p3eG*K(Cc"QEJK+DZ3!%Td#9BQVG+%BLD&ell4i)J[E-+TSL`I6RI
Jec#Ud8QdqPC+YS&Q4,F,@bp!KMVSia(--%Ld-ANQR@"XSK@"81L6U'ZIPIpijeU
9#R[SaEBJ)%,-IPMa42Drh&%BZJIYCIY5)AdEJU`Fl1(0G'!lYSVc5DHb'(LM*%0
r"0Vml0GPZ(eBm(Jkp%'I6)rTS3FDQ@I4Y9i4k25!A['5XF42#$Zrb&p8Pq3LB[E
j62a(#,D6+i5M)EXd5FP-%#qBp6U(*k3eL*RY+f#'EbD6(e'6!,C1"KH[Cd2l-G[
PLKl#NIDCQ+HF0N'56X-[`SF8BNk3!#'BVf9)j-BeK16*qe+`-43`U45eMMT"HM`
RI)A4i90`bG*&Ul!cA'Z`EG(GV*5()"K%I4kFJii[2M-+'S'm%aB3PMQd@VG*9!Y
Um3-,`KTcQ3i,a4TIV3MUAkh"9FT&$mR*lj+c`I,rVR$a2%M2IK[2D$5Y9m'VRTZ
GI2&)mI8)Z+m3%0`)NmmB*G`Y`#4e$UaQGSTc!-88V#PU4iGkf&B@I"1hK4krYM%
jJSS(-Mj,H"aR96hDqk"`U+8KCT&E)hC*dHCF%f)L2C[B!!+f@%dFQ515!eqZR)"
eh`@8+3"&Vj4A,AcX5!8'RhaZ#`Mb1RD3!+r&pEa)kG!Ba)EJ*2f*AmAYe`,2+6I
9GeCI28q+RG)9%@P!*PG4mEK)&$'KDSqj,%e%"jSQk&1eS04b+Jrb1CY-%Sq[a0$
ThIAi8D-S)Y9dmh@8M`NYB[G1Xi'#!V$YUrmQPE4bk0QUF!l"3C@5H,pk&hUAlV*
P8m(0*EH,r1eA@M9`PjD6(+e`6Ve!90,LX,M"fhH%B5)Qi-!4*MG*&9e2BGi4GC'
N8XL3!-`LMHa!bEX,R8YB0XPh9MY@R8m$(3NMi+#l)5k)mXq6EQZ4NX-pFdLrEiM
([hj8X)6E9Ar`a"Ji&IHIp6N%5DrSc8k$aCQNcjp3c'AS#a0P14J6+(M408)CaP-
C#keQIMfdK4XBD9j*L2m8pe[K$,AT)jD!Ti''TpVI-r9P19e6!Ffc26RqRT`ZB"p
LQDIH1JQcL5c0Cil3VE(rPPZL(%2*iMYJARQ9fcEhq4'$)B"q34lAPE)Q`%XEr3K
dC!Y883&N)*%fHN!aUK4B019S9$G"@dZ9hcX8`TI,J*)MKHTl4YE&,kd1Gd&BEJD
ha)@Td3CL,$Y%if@Dr&*N[iSDEmdR!`B4dEYhfqJQca!3ZL95'R5AA+MMHJ%ih#`
ITpVb&j!!H4&1I`1Y-M@i*ZL@H@5E[M'UZI5Y+NBI56EDdPE*"CZJ9h`XDdBV!P1
NkdK*Vl@8!03"l)A[V4GmU)A,I2UbmI%2[lh513GSP!'iYf[*V,S43AI!5C3+A#)
Qb+h%,fc`%2DGpQ1&2Dl5IabA#XYI5CZ3!#aJbfk--Lc+28E!6rp8ehk&3FQKTaF
mGUV012aS0*Ck3Z0TCEV51$@2e(2BV%mp40`lmp5@rP&(6b$5jYIrh6*&+pY[IEY
ifikR(EmKG#*IJcc&RB&GC*l,1-BU%ebmF88+aBh-#F%,Mi*fKA41c%"iYdaf$V8
2,Uh)+bc"2*`Z(!-L9qiA8h5RHj*h*VQEGE%R'%4mfj8+&*q`B2hQY`[C,!HcXYS
1PX5d1(l[G1q"(*X26,1QN!"RQ$$YhZ(YUA``UHBE[b`VG&`XSR`DTZUi#e3-ACc
"[$TfPJFhU@RRGZ64d6@$`(2@C2q(G,J",RS#!H!Zak*Y(&5VV&S&"BbL5kbl5dZ
KdSQKM&fB$Vr2N8ifS95SrA$+&-@@8"3BiXM4'@fQ[,iJh8*m995,i+V6M!'ir#!
Pd#hh@%qlerJFm4FPhECmX%Eah1fDAK1*DXiiffqaCMPm&a2E1A12Ad411mKHVDI
Br2mAGff&raX@MXR2G2@A4TCd,kUNN!#NfF-kEX5JRSrjd#*3`F3kNFa56ZM2G)E
CmGI%)0$VlBp91De",jfUqh6kbL"-m4Z*PiN6MhGQVRNmc,MIP[L4cm5MrB`S-q%
,0*qV[)8JQ%$+1T%5dGi"40BMLR`&KEBrpHTkRp8M%lT`$Hfr6SqVm(eA)))[&Ra
%&,8jF)E%CTjmcq4c1"Q#LlX6KM(,LLNAXmail++H["YPJjK`brErThiT)Fd)rNR
rF(6VF(JL+c)21R'#)Xd)'dNLqmAm5VL1RC!!5r)c#*ESG-pQ1B5SKG!La-%YKrr
GR,CE92&X#R2&CNRZc$Ur6k#F1Kf`0DS(jJM`JDi9llm(+,Ar19(F)5QQ4p'SdFY
5CY5#D))ddUVm-*X['+#KV8"!l+pF@TaQ!JVrFE59cl-LhlM(eXbeqml#EaXUKl[
i5Bi3kR5qI9YElS(fX0bSH38XiP[FJAaT$q5h"GbRrf@(Q($h!JI0!hKi$q5@"EN
kSDmR3(d#!"XT5A!L0`QIPU9jpTJa[`+Q[rlNUKJ$@%j"NeQ(!+X6c'iC,$mk1mA
5%*UTfF5A3LV51Y`i)0i@SLaRBIa@Pq6IAl3M2jl'j3X($ZG4[cC,%H2ilHhXlFm
Kd4JaKH[5rDHjFrG-0MUqLhMa(qP,G(4I9d3$3k[#A2q(fSRJ[aHr$aQp!hG-+GN
M0EiU6%iQVMD#3)[)8+lIm!"*Z-1q*Nr@CUbb'TB['riQI"H(HP89!BfGqPTa1(T
CGhb%%8N"KKJ6fe*8&T+q!k#k3JpjpSDd(k"Hj30TQ(B,2`KaqhcXCYY@b!5c(X[
1H`E'(m(pJ(ihdRNr0[m[E9c`BSq+pf#FDdrJKD2L8Mh-'j'UA&-k`S&+,[pQcM!
(cTR)q@Q"ZHZTHQ&hUM#JaHJQri"$I$VF8'!UI!HMTlE0U'U2YpN2CS2#P04$1Qk
2M,JI$cbcZGCqi$*pEm'YTL&QqLa1,J&+'9`LPU%IXF9a-&TfpaDemLVI)5B0ZfV
e'a#[b5C(Y$B)5dP,iXJT0+X%`Mk9DKK4h'8))9LXXc2R)L'G2R@9XNB0H-eRme(
&aV9Z)+R0qr#m'D*',RNaJQ`Q24*"D+`Qc6NZ[2NN8N)L"AP!%iJI#`,"ljU3!,*
+*N[ijlK8#Umj*+bN4&+pc@J+d9-KlG)$q+Fm@p+lR@R@0#cdd,2pDP!6!pp6*h0
mLNldGclXN!!P8!VVbrQ3!1lF,YG`r45,A$(-#r$!1XfT!hCB%)(afqm31U5Mkq$
[%(!18hXf-*rQ)m)-r$"5BFT1[D6l"DUAp(LdGNXjCh5AHf`&SdqhqY@&PYQX0)5
'F")%)KFL1+#59r%J-)NKF-LNlV8ZUf)1V)ja%`LZ[RI#6mjj)K9fFkcj3$c3FcK
H,)I,C[R"+i)8&,5-aCEV6d$&)S4qUGa-1Ae,0LKV,4k$ND)cMFSe$%!Fh+&ch+U
[18$&6$8f%585j+BpV4L5qmGFB[hDq@f+I%`-dqM*NMM+bG(Y1Q05S2a(mRjBZdK
U[d$G0k+iL%i,$FK-(m8,bb-rHp9jr6Ljd3h6'Da,UNE!h%H)PXqrPG-3ThhYCK!
rfIkbjJ@B)XLDX-*PEp#NTTI!p[5V$MQZ&1$5SbL+Tj6VUS,jN!!!V5JTmXRh[VL
pl6XTM)JT4%%6$RT$KTh-ca!M1a+$S*0bT[``MJQ)XC!!PkR-e#b4pS,T)33iZiA
FRRrfRFYF#NQJDj["3YdVq`2&"Tiia$,Ac!!Dfr`f2")4b3D(-eMiqF!bUKr)qp#
X$A8fmch'0a$@PeTADkHM&EieSb*)EABTYbB5RAa2fShXNJB!f#*K@#qB!*[Ym9[
ePea*IP(q983T9ZEeh698iVTdUKZIKJGmPTcY"(BmcVPpSfXbG*@Z!ML5UUZ*N@J
GGlQqRVPc&,[26NIV)KK!l8M4VaJi!MeBbaE%T6"kibIrlHJK$*!!Nbjp9Jc&P'L
q8`HR`U,"RP6PF4YeCmX@r-q*J`%iL8F&`6-RDAadm43$m*RTld!`pVh4Y'B*2pV
1!U49BpZKE*0FNBGU2Ep3BGJ0iqFAF5-9I060-Ii1$XI6rZ4efKV8MAfQhbiF#kN
&XY2,DPE'e2pj2c+iLcHj'+9509AN+`HpYHJEEFSdbd"k(G4DbPlGref3!$a6%8m
Md38k)hITbp[+j!"YM*FfbM"Um)1Ml6bQG,pc9Thr2d*$Q0V&p6dM`SRekme"89B
qC5ir%P3J%4+M[63RFa`U"#mkCmYFU'&9#qkAXK98ULB2P4ZFJM'H'MYa6dL9I(F
qDb[*DLVZ@C2hRFdihaId1DeV$4Y[!jVdNhI"F2BMICl)k8$#JJ'2+N@il&mm($+
Qpb(U"rf92VAm)$K2YJ@P*C&@dmN@9*c",+M(1#qp)0*f%)UIiC5R3%Cj95K-bIh
+Y*iXU%`6B%eJaVmVY!6G(-lY(GPA4)'6ckSp*M`9I2r)UNc&iZKdUdcDf$JU[`I
P`9"13SZNe`Vb592P8lNak#XTiD0DHfD-!-0!2mZ'H5$3VG$S)8iVDYm'd5ac8j4
dT8QkUm)6[@&GJ)HXGk9DLdXN4h`km$R'Z41T!ciIh1U'[XUZV23LUI`[Yj@R[DA
F[baT2lhib`bRfl%%K6e1,NXF5KpS2PJFA'Q6&'jFZpQ*RF5%aF6TM,KD"9"E0FM
r!Xk%hLBU!T)I'ZfrI`B38#,NPi!2DDAD6[YIALBf5dqQe!rXF6e!,ekQL'(B#*!
!KcEG9R@SmbT'hB%"h##q[rq19f6Hm3&`2Bem1rmX6`MJK9BeZ1I6`LXi2C-Lc+(
jfN(I4T!!)@k8E&#(j"D0,)&EI1``4i8rFkEK"lmbi,[%"#9J!TGT,2c%@F3"M&J
XTSrG"AR*GeA3i[%r2,Z3!(eJKk[IBd[VlDke[G"Y`!kQJH@TfMQ$QN%)p[@MR0H
b)5,q,94b0YVT``PKG-Y+fU)cH"UjJD(DZh4MZc5k,ZALh$0*qLA)Ui[[28B3-'S
ENShGEkA,@&T,pkd)a[(*#jCh-F4+QX`'%@Y"F9J,[!A'0bb%A8Dj'!Khrql!D&r
,"5PZb)A&#dcAVi%880KQ)I'Y%!FFD2b(G6mLK&ShjNN8c*B()k@ckm5&1K$r)6p
F*TJiHd$N06q$6KT5BFV,8qEra8iN3$NSXqfdi!3J*Z%Y2'eV420pB4GU*T`bR-'
Z+9V&@QRIC9HED4bETR8F`HCLMJZCS[Z++3`+Zh@e*)'lP($d2RLU5rd`2ZKdb5A
5#4k!Kd$2M[+E*dQITh#aa+4ELk4Q@8R(+0,2(,%J5L+jmH9,2UTY%d-eNba55b9
23$43H8,C6jABrTi4Uc',DfKhCU05@UBLR[[hlF(3@ll"Z+F1jM5(&lcU$EZ!-"-
&q'(kU6,C$mAi-iemLpMNE9hd()!XJT!!mf,AfFrK,Hfp5cj&C)Z"h0JrA642jFM
#jK#JpLb8cJI5d`p,H@ieHQE&Ni`kL$ehZSPLl4`@MG),)2KefZR,4V0dbabH&'#
G2MKkqKLD3"ArlX1dPBFel+)D+0%$YHp'V#&rCL2dhL*2)-ckT`48aG'@NkfFhK$
$"XHBlS6)c8h#e3EdmMF,Q[(bhlYqH-L-6UJUPEL1)99JDT)c+JXir&U4l5NkK0L
h)0'QaTbRa(3m@b$bY+[4&IUN#dSr"f$5-0,N[dY#BqdE$SI5N8jDPSMKX-ZcU2X
Q%6,1U"-SCAlQ&iUJZZd`DH1c89&IKFRKI#,SQ`63[0*hcRF#QA)E6k53!'FI#Kk
BKD2*d$&AKVL"F0*Bhj28&abH)2(Nq+-')(S,f@j9GNT#q9"8@fVLG-),&kKh#hF
hB(i8fRVDaIe04rkIJc%,!5BiaNNG0&KcTA+!Jqi(ESNGEST"Zki8UiTf9Ea9IH[
dS43#CP0&6KiH8j!!0Jb&-VF@YHLZ&1Y9T*qFCjD$PKhl$kDFIHF"-EaF%1LE[H5
bRT0f#f$`A&J)RGKc+V(XF*rhTXNdANM+SUE-3*h$-,"VXX@0+#51BqMj'L,lHJN
G380c8qBFk@B60*'VfU8dThV`l,Zpl3E#JVE'D2ijGbfV,j2apYF'95`dpF$F9!0
4P2Q2LIqEjK%J%DKdKr[EQp+@GY)8Ph20&dDdk#r2I-Z"fcLc8&a#R-%[PB@B%UE
XUCSRca0#6%r6chI-Imd[$hc%(95hT-(8Z5X8rXZiqj`rdL@2+IH"&#%EdI&MMdU
r$r(4TpYkDp[a"@EADPKTSQ6[Q3hIfV"B3PCrC!E)-*aa%1%E-bP$&%YDIJHi&#%
+#I)8r'Z*lNkFGF*k49@2%ClUhhT-d3B[UZCL'q3h-DR"8*XXV"H+f@CG@8ddr3@
JG!LBB[S8k`DhrUd'Semq6G,aq9hl-'-JF$R$HK+J3E0ID$4R1'XTXqbql$hNXN6
0"B8C6E8SrNI(H%k9j-ZXbbcSBXYN'5#j*[IAIc!`eXm%eDd"l3@C@(5*X'P`#pA
4'e`(!@BDD1i,b'L0ll"!H6mJ1-V%*rr,j")0+,L!TeK*1#G&S"`&5GfT,-+R*9G
f22J31,+Ld02qaaUf4+U8EB2Zfda-&C8i@P,KXhHpmY`SpYHe'bZpTQ*Z8)I",%(
kA$"Zr`eYKIG0MIPpX"Li[IAF"-cEV%d8aHh0pBF&0,8Ri8Vk3l&Q1YD"%@N2#bX
"P#N4#j!![k0Ih0b%+XbRh6K`-fSXFfDV8hU1SRV#j921rkelKXj-0CNJ5#B'clY
i0*bV4,N0aNDL-aAqbFa0H)j#%3[1i%HIYl8FX-URJbCcp@6LPcUNfA!LK1V%)#$
NF&%frm[0)3QR[`R(-KrCa!Ue+AKm4k$,1TDJBC!!QdhXSc,ArmTcXeCfC0@Bk5D
RBDH0Ga#rY,FkB++QcU"2*J0P3&c)il5Pf'@PmQ0kVmmd1ZC9j[l2X&-+dAFM9'A
QL%qrPK5JfQ[FUb!(+(l""m1fGk6%CK4m[ZLK@@B)h+VakEXaEMAV`NZ1lhkL53N
TG1!SV'JZ"K5LH6K`2mX3*jK"0MAY)&pDcd9%"qS`1A6ZL2hrG$&2")&-eZCA9K-
Y"J-Nhr@1L`c,-jr5jCZ18GZEJ'ieUTZS1-'SJR4UT4b@ECPAcBhUQieiIULS4m&
`p*&c(1idD2*!ZkSp"`@4$R9hhbJAp,I)![$bHX`2U9CQKFPq4"l5"rK,F#a+I35
5+XL4%([pUkH(FiY2k9#P0NiJV8rFclE%J%'C5p6)XAGT#`jQlm[Y3,qNf9EXR$K
B$j4`1"63N8l,9q0b%*3NBbN8B&%&2XcZ@$M!-(X"G5$S3&l3f+jIQCdb`j[Ua1p
6Sj(-8(m*#QP[mL'+6$MdZh$1'$m3Ckdm2R`3'hD+EQDDmRI2hU'2qkkE)A'c8#(
#A"5imVP8K5)BaE1U[,X21IBaXrKp!Q,YG`$2(V2Bk$S65FVH"TI2(QCbdEBjl6Q
(ZlQR-B*cU'Cb',qqJIdI`FJELRIiF25AMGqYq(iM'PU$e[V'-)TI-cPHRiaY%bP
dSa"B,)$HCP4IY-8[CR-dm#6*CV0&qVD8U42TdE$j%G(548ikGa)akQd'8F5A%kl
k'Fb0f'*T03EILXakT1Fl)55i!br'#rTqpcX*T%YZQlZ@--NQhMLNHUChq&'[,Ub
U-8N1h&GjCJCi@lG!V"5PeP6*HPC*kmZ+f8lh2FERMP-r&c2*M&-3&-($GVI2%Ia
2`2YFX&0c0#bad3aVp-Kdma!2hF8J54YHAm(N4j%K8AKjU,Z$[6A9#0Nde!p5%[f
`,L19ThHNjL(FBP@N34dXdN*1IrM*F5'i3S0qQ96YZSV2BKY@#8h*fUmJ5rL5MkA
b3r!,16(!Fpm6GF)fk'9GJ@Bl`e+m$b5c-)R)dMYp9#N[M##EcJY*F$d-bIr'a,K
0%Q*+$-ePh%Yjch'q6j-iL60YfSqi!lqMY@M&lZediKSS6ZS*01`&`8G3TUL9LJ+
9V0apGQCYb+&,H5)kp"cZN!#Eiqb"a5+fX1Jk60+r48@H%5@rBRGH9(8aR,Qc0,%
-cfbI0LCdB'2abUEF'JM9hU5fIPY5eL`#C*4#`pQ!Z3XTSN-kQKbI4VE4$aaYTV3
Eh2r&0[9j-HZ@)lq2Z0MeY5r%[QP9`KH&-XT#-HmmSAL1,Ip42L2ALB4B*!2TdYJ
)8LBF2`VURHjV4CB1+Ud4[h'bHaJBcF,62IajP$F'"@b'qP3+*)'IYDX,pFE-DeM
G[Y4l2#[&Kl25ik+k!AFbij41!'d23'ji9-*mB,er513i4bPqbkbc1hpb"142EE8
%,8HhLJ5Zb9SVaEL#h9Ur20G+f1363*6Y9*ZRE13qAL,MDeZ(SYP$GPk@-9MB!e4
829mRDCUc"V9CrG%$F'h$bb9#G-apcIe5fa'U-KHP&,RR!BP10Fd4TN[%BIha[1&
Mjb+q5cfrK!1q1V%Q%Iehiq,r)%3[c1+8)(4M!@ZdqVcJ6S(j(-"rV')e5d0MMPr
lSAdHa1T#-lBT1R'5DIj-C5IX8BQ1U9b`rG[)D5fe&VbjT1D"X%"hT#S(&9hD,%V
@3Nd'j,!&,21mfVM-RJaPh)d8KkZV(2EL,jd)Q`+MHffQa9$`,fFd4+XZ,TUM'ch
hhGXNeV[QN5QT2F"%1CHSe`Edf2!L[@NS9Zk0lELqq%(`10'GM&iiY"8PMJUqM6E
F"4NLBd[hb519C*'U6Ya4i,h-Rb0XmV+'YLb1`I2*aPB!CJqZ-6ap#iF2*XJkTq0
Qrm9hFJGZ$r#r,V2E4fMSc"%p9bM-T`,eNAFr4$30%#9c1FP0IcK)j*JqV33M0Xb
bhcL81G4iI#pp%FUjb(JqcVNETKm,5r+AaB(qKfG54B2)AAB@9jmjrppcUFq5DYa
Trhl6X0GDGX8AlkB&qaTh2DR,Tli[)J!c-pc5"9j9c)NSlH0#Tbm6hR9fl3aYh*4
i$AB@@"2Zh5TISaa`+*50rlN5bRCPS,[P&VmNX5(+L24Dd4#cCip`D,I%6*blqQ2
bJ"3pqETQfL3pdLKiJrP'i2Jikq"hm@K(`d,2cHA*m6JKl0fmm0%[EJT*LX[)&B+
6U@Y86KbFK`mhR6U909[#keBI,FY%rXTBmfD$b%$%q0EDf2M@9"5ml2i*Ve3Tk'0
l*#*cF+e8pJ5q@RNcrmLUm8j"($!(@aj!X1MAbiS,r-YGZf#I%2iK4Ya9l6+X&'p
cPe@2r#RJq-Y(fm@MBkq%8D9rV3K`MY28,*e`IAHiG1bH$"%$,(-rSEK,Q(63BC`
dZaY*5kYQ4,Ac)-32qiRNpc'16U)(RQp'bBp8,XXm`BTGGrmFDUN'P#`)8$H`!(6
i+A5YmJJ4IF4hkIej&Z'!5E)3R2jGR5$md,R)1VYIdKJ(6XmqIIj!3IP#-3CU$%$
bGjY`IcB"PMF4)#KX5(SI@)9cQ3'YG&-9B8BJ"Gfh%c'j9ha82BHe!a%ri5d654(
NVAL@fK6+KF&#aGJ,c,qlA8Xq#lkplH"10$LILZeIb$hP8b`LZ-P`Q'cY19q*-G)
J*N'"&K1fU#%Xb2+U'J)#`&mpDmU@*AMkb"!BA$5a@!HBa!F-&rTT%d``m9LV"SA
P,d`BYbSrTP,j$Xp$,0+NU"LUfAB"EfYq,[qiQDK1@L'jHX&A1JFh8ccj4K@2mJK
Ij`FeJa)01)AHRf0`KUImX69RXI,5`Q8rPIXDTkIUYK,@!9Y2h3X[TQ)rRm*NH*!
!Gkh'X4R"$eE!V9KTY5RJH$2-%8Pf,'!D)K8&rcE&-kcp#rq+G2p,%q(&fkT8[8i
X[l(&rjb"4X,F3k(-`SdkdAaVa8T%3-QXN!$&3MA2IDT%H5Rq1NV)UHADR4Jb9N5
c2m44PBA!)kQ"PDpB[pGhB05c'l!Rm4QVQIqi#&R43-d+9*pYh8mL"ij"jK[b-"&
j0m+d8*&clH"QrY5NhIhRJd@da'Zf(j2paC*@8q5'kBlrG0-aZ$LERm@XDd4fb16
keS+'"bJP(5UMaC!!TAL+ZN,,A$IE*Y*dRP256EhCDXI0&a9m&,jFP80"09U$SDd
phM+c"pB0`YQCaNe-,SjTQ[qX"HR'c([NZaUf8e$Ih*X*1KX0Dk3IZ%YCq91$DT)
6l&6#3Q8F1+IN"Rb9DQIpCIl8GeId"$RXcQE@,mVmEIkQ*T59BFE-dCi3e'0X%N*
!%Acc4IZUAq()U6G4MfJ*6P'"08[l*&A*faQiPH3*k15,P#q%U!4BFMFSH),2rTe
hFd[0'BH0U2Ur[M!pFh9M3iC&1UiQI'PJ`,YNXK[YL3JHCUp!#p%HGdAGIh,))64
)3%)r,0d@+0),3T3ce'T(""K@*N%qM0HP,,@ZFmi9"G&T,KNlaF'*H%q"Xi)mFMe
%I4f8eER9&FZ0Da6"L0PXplB6qdpAc*lX2pXq-(Z#aHeX(RK2!Lc@%*E3Ke"aei[
fHF-38$K*"fj9)$-jEFV`NER&VUc%HFdF@@l",dTmQ,l"2hBJFYVaj3D(b3FRdjX
QSmp6+AJF(2lV&Vki+mZ(4fSJTkHjBY6l+SIJT)`T-ac&S@XUU1#-U1qqRV,rr&"
+E2CHhkjV%b8F#6qdjBmf%$h+iEYp2hB[+1RF19#mmUTUM-8K69k*0-+HGq'q%-Y
[GcBXDa19CMdVm6k+3"!pmZJQ*D%,AI5j,-,Da66%fkB[U-%j+Y8,!b4f4Yh#fr3
drl3"#43eQTlq!3bG@,N#6hGQm9!AL[Ia3&C-24IT0,ikDa'$6H#M33%"GmC!!eq
LmK!J8"!SppXicp[5*UEa*VPTdXLjp"#EcA4PkXdB+X!`#-bjGH0[#K-b0J%6Shb
-3Dd4)(VM+#B6cbrI3+eVP#(&+*m"4A6"PN(,#0UeiJ5N%kbHGm&#'LGqMc9[[Rh
2mPIH`P%Xf#'4R,djD1#dXaUlZ&+e+&D2fc#9L3Z5)!pUPb[2RDrYDF4B+DpPE"I
*$U3PT,k1h&AA@mcKQAMj26&fN!!PaTK"Y$5jQC!!aE2-D-QN25C%pd[3k1V0DQk
aJm&fGTkU33B6Y!Xdl,-V&5!rbAa!G[*P8-Bd)51`G`PV`R--d[Z8m8l@M9#[!`b
*lhT&9@I)CRD8'i@*9f'6cffc`p,)N!$EZaP03p+E3QRQ!mmVi"hXEePf@"MG[0X
f'"[SQaAjRB6mh-$)rGIEKG#H@p&!3DmE5X352[NN%)R5J2TL*X)a0bVGJS9)SIG
crjqqCbCID6GYc!G`MK1'e3@2IT'f-%ph"2ij#a'+)SNaK3dJk#*"LkX&,Ue,i#5
iQkF-[Ba83N1`GR#C003T#$PiSl-J6$(EpIJj9AdcIKj0q2SaV`Fe"l%PAq)EJ+6
*Xb*23!-abDJ#(*@*JIp",kZq&)ACd3YJ9JXXZ*ef36`Bm[(ANEP0)ElqeHL8h-5
NkRF)*i&f))"XaApQVaGh1Zi3qlkqqLRAcA3K+XDU&#l3eUkeFUBcS8k%c(KVFeb
KXX,`08Pf-5YA8(Iq2I-5MZ5)T-&0bb#Tpm4QQc*d2T[YKHNe1JlF(qE4NqL1#04
HJ+IqLX5@e)9plCIJmaJ,r@2l,$K6XbM#'*9eQ+M2A)U[K+G*k6hi*`3JPYNj4%R
4%@IjaH")bb0a-i3jpJ'G-UL5fjS#dZ&-*lRTbaaMDp6EQN#RSQM)JmLE2$hHi*d
X%'"KGYXL0*ra$b"aHMRX-!cr1S4,#*Jh,,Mf,f*%'F@j#L2ja-@SR2[T%6!`*`-
U!M)4J9N#%AGRdBmJ)%ff4F+1@64`MR#ITi3m!eSaMYa*ZA5Y1[Y#F&2h9$@1JM'
$QfIL-9j()CEbdRG!E(l%B%%6"Y6[Aj!!a"H'a4h10!hb#eqQK`4QH6r"6SGE18,
Z'*-f8U8@m#"h*SX%#mp8*M,AQm6F51%rQd4m`D`8d9#R1X9@0!UR0+bIG(E1A,4
MbhrMA9aC)5AXLYph&HV5UXqlCLcMB-@YceK%GhFL9(-4#bq0KR5iL2LmDh1MP6)
fiG)dbV[dqbAYVC8PpcEYZ(j%X90[I8PHI8NJ0M9af5aCbMMm9L$DTACJIG[mEr6
+,Ah0A(65)(-hT2GiT%pjFk`h3,p'P%R#i&j1c--3Em((%$-+V6Q(+dYUB(KeN8m
YIF*(q42NBEQ3!(D1#85JN@RG0VcbLAf+DmlR0FiE3HR)b4'dU4,E"b"Y"1J4PrL
iH2@U$h3L#)c[,XqGLCC[4K,`Qh10'%RjhlImKTp!$lQdJh@Y)R9VBIQd%qI3l'p
I*"@&VjNh4dcSFKiP[9cdfQpUG9j5ML`3IkBD)N)$`S4SRY'0l"PcI*j,,#$hb!+
KLf8S#$()J#'MXeN4Sk$#!-A%`894jXe`H@Ie6U,p`PH2CMPaJT2RiK!9`9K(B)d
HC6K!83%XYr%I@dZAI,4e,b92`CPq5hRQa1D5N[`E3(hq'DP(`$PdqTL'`!Mb)Me
eR#bh@2$XDdJL'i@&K2Qb2pE#Se3ZB'"Z%(FR69&lPVb&(539pX2ba0qq6Em6X4U
-6XdFZ,PK-ZdD`RfJKe5RQlLIYVCmThcbHlXj)$1Z`N#(RBSaqkT@p(Gq60,FbV-
ra0*mMlc*Fa2*kM-A$c0qbf2Ad-cY2h6G-%JRIr&-AYHJjQq2#k1&@PLZRR5qaN5
pI%&Jj118MHdf1!JaGjQ2K4imr52a%rDjB%(#TZ'api-Rp,k*4%VCbX#d$JcYf6d
Sr6+IG-rG-K(2Y!-JYYbPpI(B1QDdPA"%+DApqX44iBUP(%ZcK0Y5#*-P4%IJ`HJ
JHEHY8Bk8`d*dA!pfe'LB)ED-Z(3qBIDMYI"K-*i#`V-eG)QTdpfid!AIaUSkIbf
d9B2#F#*8A4iI`L)JU-@`dK`2B'[S(EG5*QEplZrjU!Q3!*F*D6)ULk-iAm'4k&'
'iMeZM[N6m&m`k#dX0pV2qLbjikVaYTd21G)N6DFjZ[*G0aZB,jr`VV$rdFckABI
K9[,K%AJkQ1l2FYT0TV1@d5K6DfkM&0"5'KcY#R%@b6KcN4MfA`&8N!"e[*e3MTr
VD@'XNhHH(T!!memf"jiDETC&)Raqd@RTLTj`5RFE*9Ue"3[qB9Y8)3$-@"%R@b,
A06i"#G[CA#5DEd$b'[#[e3Ilh5FqU1q6MbFI+AkV"VECGQSa@CBN&FK0@2LPH65
eD&)RN!!HCIJRf@L@CTUdm)GMN898#)*ippTV#9jJmb,L1*2lhTp-ETK*0jXE%TJ
3hj2T1,LLB#e`Ph4VMb*N9,54V%+&c(6HJPM!d@'#ZkhGkL'ABf[YElQIbJDRTh4
(Vlm2-VjQTE2rT`&X[1aBmH4rhLfBpQa(%pF&f%kQ0ClP'iFhkrVUNUh(@,LXlfI
pA*!!B56YN!$kRjiEe+T*Ahb3!"3r$M$p,5%)qJ8803'-RNN@UY,aCUPPhZfLq9)
K0SJdSFP9T'B!KK4j2i0[a0EQBRlUPRAmbC!!d8-jrr[3pdRA3&(rLTBh#(4i&bD
&('fr&`6Tq9qlfZP1KrZjT%aQjkZ9mV8k9dej)6)Jf&,FiL`JJF9c6NTQ56j85NG
!88b%&SbX`EaX`G`KJ$#UJR9APSRF1iQ$'*G*R0ZbN!#J@#eZG2@Cb&`+d3$4Ti&
@JlREM@-rPB3k2lip*RI+H&(+)2Sf2XQCqj0E5-V@EDh8k@Z(jVmUN!$hQPAE@F9
B+kYTh90R)9ap+)F,+#`9@2c8@@XkVDhka#$@GZEiQZfQ2%@G[GUi1D8B`X3RLGX
Zf%Jj`ZU*l63*B%&BK-6b,%fF,#fEmbQ+Z%0"!9LYd2ikr'Jab+`2[mp,"l!DB2k
jYkip`V-rUR-L&p-)4qL2I9&$!NDj0a3SjK1LX0kE#Zl5jcpI4SH+I1'*h,6pVkf
Ueb5['MTAdMDLa6i#+)pH!MVJ"bFSQqp+*hkI$"T3A["cVY1A-h`R5E22"f&fGmR
3De#&6rV+!kf&HR6&%,G`JkZP1!i3*+B9S0'4Ac"V6p)hJbi49T*p$F),5kCZCKU
K0UFd161RGiSKCi`F(-m`CDb!rdC+Kj09LPYI-,a8eTLV&c&4R!ADIBFQlCNBp1L
lCej2h44,[K2qVZ&DJAVdaE`MHXU80ER$5Dfj4UHZ@UHeD*DCX5B)+A3dbmhm"j(
4k9!f*Q+(I43+(+INY"G%1PKPFLr*#e)Uf@h$XV$-k1DEV241Vad3c(K+ZKD#T2)
K#aQ!Ke39)bqX'iQEj6k9$fX%)PFr&Bp+"[6`)16!C9T5S*!!0j*adhjI[-1Bm-a
+"MQ+VKmk2)[TZ3k")#1h91)BU#G2H1q(m$Z&YrlajSYV`UA)Xd!dSGHYF0k+J4K
6Gbd@jp%Dm%rYLN(J-V!iZL+-N!!S6fjp)Z1'%8Z#C@G#`Y,Yhq!,q-CGm8QYT("
U+3%RrF&-h*'@&-X$Z%fBGK+e%3Gi+8dk2MSNRj)X4U,IqPTDBQBKPIc&GL$`!ff
*(KXaMY%IM)6`!dGSK"Lcp&[DlTJim$iN4$HAk)Pm9T+V4Zc6cK2H96*d#jSEa3X
V'-ABfK5+%q$lcR8Z2q`Hr)AbS8["qIpEh#ePr310!H%(5c3K2+SS+Bk9KAA5kRk
F[d*k9jNV8(C8C8[qA0hk$c4!k"%LkDJjf4MMd##YUX*`9&Mi&ac5ZcRGNNNHk24
2%a%Aj""(eeL3!%j")jYic$db3H9fQ(3$mBpf,*!!AKhi6+LhH3'@IeKQab9f$hI
F(kY2f4mYIAdNQl0$K"qh0qPII@A*0MTb@,aGM8j8jhV)rN(IMaKf&pI(23BqF6@
9M,MAYfjKZqd`IkK6BkfUTDE#QLp!&G6ZSQ[-*MMCN!$&U0SDfhcK%)QRilL('-4
-eP8Jr*k09,kID`@X'h5+(UEMZma(I!)D*9'TCCqpNYmQH1qHGmj%)4Y#GX1b`*B
qR6dXGbMDjdK"cb*iX$AJ,ZJC+)G*RkBjL"r[@NJpP`(9TIQ82kaV#q3Kb%8D)J@
3!#-lk'BFjTM5JHEe@0F*2"lY0+I$-2N"frbAaQ@RXr+SFh0SJYQL@"b)Aqcc%&K
Lc"0!*$ra&l2DiCd3TD6ILN*%NUSZEC5NHD!%(YbcF#'P[j5#1Pl%Q8&,)IFQ8dp
+4X,$YBIfLC[EKCbiSbr[DrPG,`@&$[V-!mQm5`4k6NK(U09c2@N,(jYKq3VQRGN
a)NXTcKGFN!#I5mUL@M`&RMe+!qqThFmhX'1cEe`,lpXBk%9F[6YcklZBETc"+9A
ci)'pCLMV!ENF2I3CHRN'$VNK%Q9hCq(KMij+le-N0&6,m)mI[fBh`*DQI$5ASNE
C!mf(!JUe$j&3T9"j,pS2p)X4'"YYUM8fj1fdNZlYUY'b-3D629Ja%SmPj%4f`@*
#UB53!#*#QjfR5)8UdZZ+*qVV61VS5IRk#dLB4L4$D![&Pj1)Ed9qEVN2C[8b`@X
+J81k9eQIV$qQ,j!!UMB1eqB6fcfJe6*0CT,Rr1CF'#brrB!6jJ3AGS6rRd'[6jZ
Hc-,-JMJLrV4[14Z2C2riY#),kG&c([XVG$RakeEE,Xq-F25fkBDXB8qlq$00Y9%
)-Xe,l8VeH-C*hhMA*41"V",SQRTElcEG`GEk-PJpUrqp#DNTYCF$iZk1l&@"-V*
H*$99ibhYTlX)2I%(qAF@5BkfdM0(rc9E%3'E(GXMpU6lq`F(GqfY)l&1KL$S#I"
&MU62k"I3jeYVGQTfUFr'Y36EHLV[PbKBXNQmbm2r[9DZTUCN"@@&85rYXdFL[BD
Z-)k0`S+L0G[mcDiq%k'cfNP3eS@led2Xj*+@"Dm(r5*%GP!UKqf`Q%D[*X(ADfh
)RMi&%8'"r[4IpI4!*Xae[UiGQB6"95iKLM1lHAbM`RE[0j@MV`1q"YFL6f4BqB6
G)+""M+F55A+i9AGdK`LSFmI`+"b[ZIf[25Ab0D$N4bMlf'(GYV"(hIj3[QMp!@E
q+#Pf3HZESEUFlZ5VhmV5"k'aLEch&eA*5c#CTTQVK6h#%iDXYm1G""1QK'$SQ6-
8%%"$9*dr`K33H2-$)`"PCGaP+G(RmRN*i#"SV"5PkmiHKJ9kH5S@)r2D1%q+"BD
f1CIf[GU#9,BJlBXLPLQ(rAM*"dPf)B@`MA#rVBDi,J6XIT)AQ94XSA#2*Aq4fZf
CZm%ZPm4LrIeBUK19)'Bk`U!!+P'KSiQ9p45&6pRF&SAL$lpc0i8Yf434fiBd-kS
dh@8LGQVd!j)kKT!!P"ZFa"E&pJBeKL##Q5,UrU$Jk'DClEGQIkjIj*F4c1U@AD5
l`Y#d#NYdC1L8F'F&rDdD3,RKEIG(,4bZj$-'ac+&T[+qDiedJajM(!EGk$NI0R2
Y%b#rApbTf@DGU3(D26P3pPT[dSZC'(!+T(6q)J29(XXa`rC(c9TiS%4Zj*@ZFaj
NArZf'B4Ld+!Hre@3!#IE"lH0BcbISBN`Z)I`j0`%3pV"4qQ('d#5c+jH+0epj1B
Rhp5eV45U3)V,)"a)HZJE'jjG%fYXK8MBpA69PdJ2BA)Zq6L&PhqcBGJBLECV6RX
LN9da28kr`adj(SAN(e%jGrQH(dNH9mP4*UamZ9r5@V++'UJP`Rp2I*(Y$Lf!3*0
Q`m)9S51SqChV)!kArm[0VHcj!f5l,-Mea0JiUY$a0$RkV5C+)![2[)mrr5Rrqf2
G3`ZK@dP*#jV3ZCQiNRJZCY#`b!&8reY"6B86J'D$QaG$9Lj(G9GY,L(Fr,DC1VN
4Gb1N'-5r'j!!$aac5`%%#p%hZ%M%I#p91QXb-!%#0[2+M*I)j-,0R0(1Dk+Q+-Z
k-e'$hiNKMEl#U("k0*NK%(DTY2`QEdr332S(SMmV([r,06'r@Z$EL8bRV)iLPbD
p,rBjP8d3qe%DBBifG"Zdb"Z&&3DJZ%qE1G94[P%HCqXA15CeNilEG([BmL6f@VP
KYK6*RKJ0e&#'L9)Z@XG6V0"fGL4ENH-Lp8ib!@LRAkDjAaGQZM!#&-4[)MZm)@B
&E91pV+jhp!V8pprU2*@f+3Ci)UBa0!qmZb)UR5DHpjVeZ+1rf-P'!fYJi5%ka4`
RZi4X6kQU*kC,ZphT#)EeMN"i+E[3TPDL,XR#TjB[f[mbhBJ&JIj#fNXE5lp3AN#
5Ur$S$!Fm&`c%L!rq-pFDPF4b[-pdNRAXjK)aHSZ+*a4**642Q6Dmc1IN+Kkl3Y&
r&)M-i(ipH"Q[5HX3iSFiRADIHMM&1%'iZ)3EL8[4YVZBaI*p"cjcqBZHeMB9Prh
'RGc[KB0"@-DcT*5BbBjNi3#IV)HlLlR885bpK)9*1"r%h5)jZrDqq`[I`jd,G3-
"B-#Q-0C6rlXP-TEilHdGMjZReCrhD$HRQ!Q1LHhej,Z@&K8,S*K3F5H9&$%[Gd!
6,6[TINd[M$IrJ`8a)P()V6(H0i6h+PJZIEd(@F4JZ&P@05)ladFk`YJENdkR55'
%[8!4Vci$N[cGcBQV3!#rrUeIK$Vqb2Rd0"KjYBrYqEEXN!"[cT4k08UVdk@IVjZ
%Gpa@mP6YIHR`aH21()dcIGQ&UVX3%lYBpe[Lj5@@eq"6AR)ZqVV&Qi8d`i'M&@D
)4$q1EQU81Hq3!*I4NH*f#U&DY3(GR,!ai0da)NX9hd9Ur!Mh(Im01KT*V$P*JpS
D0Db10[q)5d'1**DD*-CakZ,beebjXl90CBAD5AD26f@PPmFVK%3B"59lIqEIV'N
dH9lQ*ADS))4@bFk9)`b-Lh%+M,q*Q1"KkVim,Y%"AL*e[MCjST5(@+e[Z&J&dAB
d`[V,MS0qrSmjDQ6Y$DB$D$5C@5(,l[T#$l8G-YVXPl9DT@c6d"X%aaAHXC+PlR0
fm(4f-EJ65(IRaY`ZENMLPN1LS[!9BGa'!R&Na*9I"K&I!Ljj&3%#`r1bSdVCED)
eLe%V*@fF[1&c(cNJh6PTf`H6@**,DA8!,0LRGRIa1F6&2GIFK916"f#1&6fXMY'
B*9ip)Skrh(6%d8XP*6eZ`CJpJm&,,"(G))Dq3#"`'kd(cCp2("`3)$BEK`F,MVZ
D0$T`GhFd0($Cd5a!Db-)cIKQd64!f5-Xc@YQ#$6i+0%X3'YA#)I+CY%d3#KA,,i
F8-9NB+Ql6RIXI6MD!*EFbQ0D3$(G23kB(*pB'HXVJMSY#(V8keYqmT)1+QB)`Y3
`BN$#mr0(LeJkk`JVe&@#H[,V$UL6R`8)FdX6bc6H2[6%%(V8kd-%l8Xd%$l8TC-
[UJK3m3F,kc1S($S1#)+%Jb4J%$l8Qf9`!3jJjfBSCLVVh6S1#%q%@M*J00l8a"K
k#r-1C@`"i@!U1@%,$Rk#mUJ)0!3q8AS3F031IQcYef!d"#$kGT!!2-rb$JJVE&V
IB$6H2TF[-@EV#%rHd4Sdk0(DZ'"XhNq-T@C!H6ZE`N#-1fE#HBbECN"j1j[#3)c
A@PJE`%Ed`P50iMV#H@GFU-)L"'8F`JD-R&T!'pG'@-,!MC-k9(NlcX,#CpkS(#)
'qQc#3)aX@PJE`%16`P502![#"Se,#e3'2%[#9)dm#m)'M8X,9!Bm5m*8M6`,`JE
H69JLCpPf`RQ#X-*8MHYV`Ya%a,KiH#!U1$N$5i!QmGT0lIBmf+fhlE%[0##rlT!
!l'#Gf9#%fS9YKk)dQ0TiDlLQDXf[i!)(REI,A$A`bQ(Aqdl-0#EZ'J!Q,h!iH+@
0$jP(E893qe*FB#CA6P0"8cmR)4-(0BcKXf%if`GT,ipmE4qmmQRLf%)efLbqqf[
LDBhTU4F2JJRHYA54DD*FTCl(ZXif1++%3XPM3Z*hUkM*GNfMZP#3!2A6EYN"03(
5c2d`b,p#DJ#f8r4G4[C@&901NIid'8&MTciqTfU[3LjBGJjmdT!!99La-5ACk-L
Ab8mQi,m-*+Y9*UG'ZrcP,kCL$YSYB*S85Tl%TqK6%dSa$M()k2-D1*C`-qld09E
G'Kl)5JFZqIX6G*D3!14!CADXaQ#q8#ScYL3`k$P4c,)dGb*#RVFm+)DH2HHlqc6
#4p6LV$4#[$0[r1F[[[[NUFHLHbIZq2qi5E+JhqVCeaTDYC&PME*dqBl)l`Rr0A5
&*p**XLMF"@DSr-eT2%df+BNQ4l8ETZ6E&Z-kq,$*aj*#!af&Nd5q2e(2%"m#4dE
C4ra0*l4DcaIM)6JDQcKL),D9RCip)66r4EXEc`DhMlM&,lXS&@3Jm$'dk)IX,hS
e!%Z-YJN%iK3",j!!0Bq![Hl)4HQSj&0%U[M3B'p6,NQ(@Kfl'--ZX*4#3b!aF%i
6m+qAm"p`V'VG56(0(54%*6JH2TeZNT&P`P5Ki--#C+RZm21d3C)KMEi61"pajlI
,DZ"-&'#rqb`L(F#Pp,*dJk8pdCMY$-%`q,23TZSX[jr'#X'&86BTYka)i39R"`H
XQC3&p3k("U(!UE1E6Qb9X&'pZCSrM6*'42#Z!Q([0,*QU@"4Bm3"c!-P')#f@6q
Zb[#j(3,jT2k6"MLcSq5qqSNPUVkh"PTZ!4(+++4jV3Dh%('C1QSNP%S`p(c+$Lk
r5V)c,"5IlQL1$EmaaFCeCV0(9c"D9k&hf@X5(bIKdG-T[pKk+i-EK*CQ`@FIKm&
%0mLLi+9jT&c8A)`klTER[dd(qj(fGBC4,Sd8!"8+4a8'Q5HdHC!!5P-96MLK2J*
D6T4hhF`$!R6f#8R"CTEBXcL&0`hd9r'c3NXmFZ(fC[rFASC#Y+BI)e(bCh9qPUR
CYbNbGiV3N4qTrk1pD)QL0`JXFI[C!Qk@m%RfX9f8lY*c9p&3Z*8#EU`!p[16Hk'
R$`k+bP6N-SF+$!0%94r&9JY)CQf$c-#BMGkhAZpC3`dN8DI6aJKfK0ipQBS++[Z
1G6VjV"*5!Bm4d,QpfLl[,K)erE(c)qqk8CaHAqe#!d,UD1fN[b)'bTB'-3RZ)B0
aUaA`Z6N'T!b65KK(06IVEc)4&MfDrADBNN#b!bdL"-5M"GdXq5%)d4qL!IrC8HC
bqaph3Y5K!GS(3H0HTUcch@I)MU$Vm0j2"MRePUiq&hVBA9jhV2i`VJdfG[ehDQ1
ZG35@1eiQhV-II"8&5[#')qEjrfklGiQ8%KM2YM[mHY#63eD$ikIXYb0amjM5imK
CH4G[rDal'p1mM*j0T,b-!Gp*q&9fTGc-BfbPI6IpR3R,Veh&`)''*frIYHD0X5!
m)%k#jNkfP(mS2a'dAr@pPbk-D[qEGCHr&JPpU+FQLeqKS5!JAjkKP9B(K@FIHB-
Rf90YllIpV*Nicp'D@aq'j8jPhcBhEAH*c80H4&RrQekDrGVMHR%jdLGGHG3,3ei
L@5NJTN'6#Y#!V,8&QjcG8h*cbFiI'AVZSK%C+-hfXr@(`+hajl'f50GY1&I#PDB
[P26RE[0ihl+!PljJa'k-`6E5(V!fif!p6lSRr$@5($@B8MkK+*4K[AXNXhqBMD)
*+)+pZlIKYd-`9icJ"S8C$D-"+1b-i'4mHra0"b5cScPKeEf0*-dX#M34!"qfK(&
HQSi-,6[RGGMJU*MiEfb144ErCNRf6+qb8Ql"'aUcI6BS3!ajM6Q!LeBjM54)r#5
#LN,b@a#iQpED`6d&ARHp-hZb6[KkY"8N*@rk*G$&cP85[[Y*Ll4E#l"1RY`@-F8
ZhTQ@Ii,cKC+Nrm$m+`NN,+4e9Z311rDXVGP#)a$N)Pa&ir(EDi0`h%mCd3aF#il
eqVd&ph5#m+&S6XEdeIVN&I8X8"iK2hdbjaMQ69l01BaFQcGbmQ(JNYjG%9rG2jc
G[`Gq0cK0PT,%E(R%*dc60hMR6q6(qZf#[2F-QBdhMFrq%C+*Z&LeJdA@!'rQUVa
"3GB[$0%AU+C1mUQj8fH6T#jV%b4cGc841VN'@[,(`J)PCM#N#kM2P(GPQBM)2l3
a)Zl%cAL6%d"r((Z)GJlUAmd21'#[!i-+d+Mclqm!a[Mj1lcBN!$29,U-r0H@clD
$Z)S`9dUP,f,CBPlId5[2GcGk5c"+"YLfd8b*$",SF5)9[Sl1*EZI%MGjMqrR'"1
,2Z&+TaQ099RYi4SNIG3dK$Nb,rJ"IL)Z)'MDPe"*kcPND'Neb%1UXEY*UBC'8UL
a6Nh"ii)I)hpeG"ET`ap*N`ca!$GH%RabckJBl+02-JEE%E&A$H@V`+F0RM2lp"G
Q593)af[&5+LA@lAEhZf!iSEEr@Yf,5cbI'Bj%P868bECY"Z(kYH1IC!!4+0!2Rk
3!'ESXS[LUV+3!*XM&-1R3Pc8!)[EdGYe(Lq60EUFri1`6$Q`d0XIc9jh-A1YdMB
ZfN8$@K4KlVd3#DZ$[hp%[N$SRJ,E-#!X'V46N!$N3*!!-"LqG(0,24`bqVPdNlG
ESXaT0V+ACR12*,6G8K0K,cH-a5dF(&Z83KZ*F8P"XSL-VaBS+j`!aHZ'b(jD6[B
QC86"Y+6KFeUX#&0a"85Q&RfrJ3V&TSCb8DLUr1Z)C@&!9H63[d@SPkR&+A'9,-2
iKIPHCG`G)6*lB[RZF@h#bSe2DKa5Vj!!$([rEGRE0DKU&JN,hJdV9Y-8LXP`q%`
X@))l'+!T)%d(ZbEI*634%IJ4+$NIKr4dHUXFS*fY%"@2l@CG$*-[`RST2Zm!'AU
hRBdPH(fb%(!'E4EYDfEqfm*m"[r#IKFE5#a&Tc)Q3"Apke8,N!!4YXh5lcCDlA@
T`SBJ-QJd&1e)*Pef1qE#mN3Ji)5PG'D%P2+GT2br5lS$kQ!F@%PhCkAKdD5lhBL
pQIX26e2U2GD99%$KUD&8G2hq5Erb0@lMaAZ$+&6mD3c[P5pNrTRLbX)%[06b4c$
PY$RN0km(83a8Ce3JFe4KpGfeNZ352E,q-3f+U2a!FR2rU2`08*I#S93hC(95#1f
XC[`NX42b)YebHV5U@)Kqa`N9)3dhibJ@H-q2)EfKNq2AC(DS*REMce)8HdhaT9#
rjUV,UX0(e&KbD#API33'bb(l+LreHQKZm[flEq-a[%)BRjGP8P5kCh350pfeCQX
[af"X%Cm[FT!!08#5K8LImZ&piq'mGlSd1Z-d8I%jK@cY@$FYi%4h4%3")[bP'er
P'(dafa#Yqp9E`NRiZmk&0TA4he&hM!Ci1(T!FQAe3Hh2(q$[$AHjHN&lA%CID`U
lB-$M!9*DQe6#qamKS86PmY3kmF+efbq@mKHkqB6G-30@V%3JH2"!&P5kG1Mr0C-
6EFZP3)jL55bTI*!!E%i6+h2P8eM`!8rB&hdbJkKk891V`Y5mA+[GHQ2%@0K9j!&
ah4&5GCppeE@NQR6b#LRLTm@JBB"qTSabGalZDaTh2KMLB$Lml`YB)TQXCEYC32d
a+`U#qdRBlA!IXpm,j2A-PL&V!ZA[Fk,K@Y5Y1YehjL#Y1Q(X"kmKRH5S&e1"cl`
hUUZ$LCdmk+hN0qQM"AF5V69K&#TqZm"3lA`UC*%6q"#0163hQqcJ,-Um"`2pKkm
U1ribqkqM'RF5V6AZ6epB+8B$&$GaYphF,lYf!ck(6r$A'He4#e2bj4Y8*m"qGlX
$bXf69S5L1Ze!)LKDD`6S1XAi%%ph$-d"Zk-dcReTr-2&ES1[CL[peT!!@K"!)GJ
*Jpi,0pC9K[*&NKc29%l0Vde9*hCQ!fpQT-ZY+*&STq0p&rD-Rha8p2H2)"3!&cM
FHQMCG'"8Xem+1Za3-MVMr@jf3+fY%XLpG$1*RfP*[1'c6+`J!*qmb%Y"CZlm@'P
dGCc#@'QZZa-3QMbRIfX,ilSk"(4Qp#5D9TGAZ!N@'Nff'2+3!'j6+R0kImPL3Eb
K+rbAl"3AbZeh@1BA8eSLQP6%'miQCRR$R4H$A1l*#iS'1fNk9#,m4)Ll$2AY&39
QU@[1H&2N[,*FHABDKqa5k5(CHA9iDCqXCpf5Zr-%Yf!Lj)`Q"b)QU662*IDRbFX
A++*8@$rH5eJ,3%d"-q5,RDHRS#@TTmp8G@@Vj0iFqDPpDrENE$0f0dE'b(EG40d
dJH6krbI3660e%,cB1)&k9ljmDl6VKhj`FL(3a5Yp1,HQ&dPU`I1AiF*k00`lkDK
2lJP,"+FHGT!!5@j9[h@XCr$2qU@0T(l&@ZDLJ9M8'Fmarf$KjQYiFmj,5@Y8*fp
mMVZeJAjU)HaL&63JGX2BK@YF)fiUG&GiMX**lQGcKkcmGZJk@@qYY0hVSBb$eP9
ch9GbfqZY-(TB+KaXd`('G&)J9(G8QbqeH(N@N!$'GrmSE8ZA$b%SE8Y3KDU24-A
iY55Y@RV,+P-%i@ENT4#6Sd$3V**c8ba`rRcF(M5d@B*!UjrlH'X'p(2E1ha'@&b
bAfbI!N$e1S&(5Aak$2+VZqD,TVLl84+ZRFpVQR#6)5#*r"5Z!A33F"9V2#8Y,qc
@f@kR+XcfU!De(*,2dd$UD$4Bjm8bKqfSIDpGYAa,(*!!arqaaeE3I1EfekFMG'T
!%,qRFeJkT&'IibqC"E"(SkdEaP2jHXfc1QU9KRDhm!XLEMphP,Be*-+#PMH9!MP
C#DU`Dd3lY%!8"DkQCZDND,Z0$QDSj+@a3%R6#bdEfGXH9Tq"M8,%!k*`j@[bp$5
UpRC0@"D4RRSJ9MFe%5j[r4"MbB&[H6Yj8CT[#l("2q34A4GRj*qq8cF9rNN09&6
kD,J0&)bibc%LD!A0Mr,PJm2#Q2phhRSA#d@BCJXFiV)BLAMZM@11D5BEaN0Nd6V
%jf*!)cQN0+TKkE*!-4rG9`Z4cbG$LmCcJFGj`V@[e8!crUiERbYk)k4I`P)Cc%X
8GBeAp,!F$+e`ZIV`2hGpKl%b!GDj!aLcL,%&MP&*RLpBCeLq3$LEK[CZh@aDF)b
Q#fVb84GS[#*lhqpm("6r-LNTZbd-rj2NkL6,Dh0*&%1M,,Y(c(KDqkGUq("f@)(
1L6@HNVc[I&6#(SeKq(IMd3j86%%Z0eS$l"3kl!B%RREkNX4Q8cVYhVX%#PrUI(3
[3,10B@%dRF5rrJBNERDeZ*jV%$Z$AZ(qL#3TmRP'KF9R0CCd`THmGX+mChCK`Ni
Y*IC89"VFEjpf13Yp*8U0HUmTe3@IUe&Q#NQ&N!$SB"#ml@4NMZ('Beq+-B'@STM
QZU),Pi1Yi6*pF-C46H41Ub@JGJTBqLGG0)qY@b9Dq-+D1U+'mRGNYZe2qdRFIj!
!5,Z1J9qI5EU3!'m3-Z@F8(HYa(d5pQ`5`Nm$0I5RB`J"VpY+1X3D8`Z"@5#BDqD
a#JCh%EN+a6k2)GZYr@62)N#"Pk*hS`8%h3Xf*6$8h3lN6-mFLB1)M!T'blV%Z+e
Xc(RfNDGVE&XcqeJl-)h,BrpkbV0de,3f%#J6f+dU!6NIZa*a3$m$Ra(dUdQapY#
X22dpGVY$,,5Y8qLa3YK8,3T5PU'RIBH@bUG5Kk(+I9+@SDGpKjE+Te,rS46#ccc
XGTFCPfAdFe4Q5@d!BMrK[)H0&jDRV4XU@Ye'8D8X0%)bV85Y`$&Dj+P`J8&(P%4
mjH!YGQlZAf#cJRm4[[ji%j,q80lqcq(Qm6Tp(%@4MTmmA"$SlGh)#EY8iDFN*K+
1Le3m1HUV`Rd5A(kBI)')B`9VA`NVF+VTi-8A8PRZ,#Tph(Y!94YpIR,#clr6#iT
qk-r3fAHNDrJ44YCB#qTlkR,Uq'(eUE#P&ZT5kVhUZZS@kJ6UPqNS`h#dCVRmS#%
dE*433)3k2AHe%M9B#"I0ac2ZVHKHHrM2Ge+-pL%l`6cLFLBX$0B!'V9dahmYrcE
p5)T369X$ITIajGd`4F-dIprm&#-Y$VdG4X4cPZD"X'9G$2f$fJ%1Af$rIBR#-VU
lk6Mm[Pe*db"Q@VSRIjFkfk1&`eYFB,N,hpbm9TBb@EXkpPA5+#Ur8+cNS!Yf(Dm
akRh&9Ua*YB0Q[GRdZZk@ZU`,B,FJD#epa[8XdmcYXmBQdeD$jmHTJaS@'TFDFJV
$Ahq&)b3GE-K@QXf`J,hEYX1RiJjr#'51YQPdVFTaK3NTNJC`+#,`9f$`bpZYihF
kl'![DhmD8R-S6!!R*,06X0('3XfJ-,!TBGPIBI%e+5EC+SB96aMb[Pr5Z(rk)c%
J0qA#PAaZ[(C2XqiP!4`cUQdGEHpF0A+mZmZX"AGD-m2lIj&Ef`k6CZ1AE51FJVe
Fj8@pl'D`mXC6mAeJ[CH(1Emk@eh459[4IF+RI*k@,DG5)X++U,iJ**Bc!LV$[#L
+MeN(r93fIdC@mJCj`!f1GL)SN!"2ZqXj1m)m6aJ-90,1bQBL3PNTNRrAQpX0`X*
jJIlmLbSN4#crF#q`TVASJPI,&QHq)VGre3e)EmUZq!m2P*HbFTI+eJfqdahTbXB
VRd&T4SL)VbYIR)(a&q)DMGVLeaFVk9`V!-ELRfSDM+![XeaLbicr`Ze,bm)a(R#
XV%!fGA3(V2r2lCM)+j4fHdrp(&+N8X)qTS0"C+Epj$-hRA@EQF@Kbm1IQK0bDjm
[D&6C3GTp4(efS8RCHK,2rH5-0aLK9GP*QL$(534QFN$bcahN`q3,IGrm`Y3GRk@
MYPG[AYRV`Y4#[4c8M[f@9NX9ZT@D!CI#$"'I9*9pQF'A@([YFB2,(0!0-XcpZlR
eq4l&mZ#jU'TcZ63CX%PB3@&UrA`AcpGqZI@C65iBr6+R18#jPHXqHTDRr,fj)CR
)Pc8kG*5$jY[99('MbiV&ijTBiB9*Z3&fJ%++b5P9YFA)NT!!NUNm(%JhCR58H1K
Zl5*8qFadFTE9)@MBDk2Xa3IBJm83GIrCaN)@9(64mlPmHRC,`!2Y0d[qVrB2)K`
b*"c)ihq+`K`fD$cD%Yr(U+k+J1L(-b,J0jfKMX-F8KcFIEC64#,r`jr5RcS#qX)
H4&&i'k5TDdLj8Xa"qk$,P(NZ1*T`6%*[(9m6BE#h)96Y"lD&%[qp63Z`'DIrS%D
@BZ$CXYjd+L!22XP'4`X#E2%&TY%Xd[9p-lfJiK`(5rBd[q(S*Vqd*eMH!i1d5k+
!%m@Fk!iHeR1K+D#CZ40#U%Qr0eJ)9FihbfP52jLk#pIb9J-[ce%+c'R1%Ie4+2I
-Pd-KUVdMQ3%2N!!mk--6VSH!Lc5)TRHRX#A`Ka(Bm"Tf8"'Qm"VK821Q86#r0AH
K*!2Ni!HaT%%hNh8R0fjeT(eGG3#hbPek"hID,*&e$(hFpX"QGDqJP*T1R4c&@6i
a'lF@Lch"LhYfrDcHKET4[[N89[*CYP&N,C%(G@SQcS$dU!phLQlmrjTfpDFBp2$
lSX,m5kB,e"ApTj,dPkHUTmF['PD!UM)PDqa3Z%fQrp$D66%JS5i-"kKi23Cj+qH
9RkG`VE`SHLlaSFq5)GkM61c&HKJKUm3fIDDf2M`aK5)a$,*Xl`pZ`ZM0Pc%8p2a
5ZFkYRU&B`ilA2#XTrV4"mqLB%X%S,ilp90DU#c`L`AjQcdc5PGfBLhbHXi42rd#
iGFff0H!X,('m-mBbH5emLGh[Lq9V)K+$5F*Q`kLR%e3m`e2r@*iRj3q@F+LAI**
V4#(A,%l*8!R4@qCVM[MGjR2)Hq#p("2-K`9k%P*G1ch',,XS,SZK"3@ILXhYbcr
JTjVl2qedbS0k8HG5Jm+MQFqEFm'D1TjVfMe,%Tr2pURBfZeqNMhN`ETf#1hZ!L3
&qB1B`JYp[EE$#36r3d$fKF6Gl6)IZ3l"ZP!)lH-iG9YeajR4VK8Vl(--UJFEYl!
4F3)Q@,mdA5GeG5V4CiqrU$E%Mf8HCimUq3m(`)mUf`mH(J+-k)pQ,d+ia%FqfUH
BajDX9RY`Mj%G'e1hDjNEUP62LrMr1[`CR(FB6HhQTLM@CSah#KF%U$ETRUIGDX$
iN!$RI&lk+P0S@MeaN!#22`BAR"*6lR5YjmMf8bN$-B%4Mj-EV+!$dHBeSa$`ASp
R6qJ`0eUK,YPp0Mp'#M85&I!rZMTM59iKR-CD#NJ+C%RGZ-$iHVX"0QQhQ3qX4QP
)dXVX8ibq+8G"D5CQNFbR,A0eq`$Ii3$*UC[KBMm(B+p)UmBaqj(IiCl%fCp**Ep
)[%ia(m3%)hD29X!NM+GU4mp!em$#dfF(bF+bY`BbIPJ,pqm'XJAYLYYdl-KV'c%
jKDKQ'ecm#h@Ff3jf#+d+D4L53*(p9"5f`JB"J%#FTCC@U#5R3+dQ"Kb2H8m',fT
89!DbSa9kHV*8D0Xe(SmeTjiL`*C&UXekT#`k`15jCR"EdE9(&m,#B0PQ`LA((0c
rHhS2NEf!*BdF((cePMp"DeC,&b+8lLJ'()pj6`BY@QYBHA'$C-)FH4rR!V+Rc'8
kEMT#U5FYEG+2"Y!A95j6dh6VTEdk1P65Yfa88mri8drqM3VFq,aKZpbPDqJdR3B
`$N)5L@k'U(h5iZ0Y``BNl1,8CPf-be&RC@L&hmCj[al)EF2b-X$I48!p2md2!#"
cEqL@*&m8U%Efd,XYYPT@-,EA`LEZ8a-UBA[$9R'3!*!!pZjaYK$#rrc[A%fDKFC
fNQKcbRe'lYA0#$j"ANc6C8RU94*VA4+`A98A@Li[Sd661YpaYG&BM`Y-*NejSGl
#Me@&hLG!J"-0`VKh(ld9KHB[,-X&JCdUbk@(Ud#GjE$5Gmq*ZDJA1P3"S'BJc25
C9jR68B[q9%9pC1lip!KZ)@F*R,XS'qKlaY2Q-*Hrq8e8@%X)!K"SG&[EN5BE9KZ
3!1kZ`9#KKbf44RbH)Mq@4420HYT@mJA8P!Z!hA1J0Fi&rKRCfr`H-hd62m)c#*J
-1L"4T"Gk[D6d(S"QbdC&'`*T*bJjV%1"[iLQ+,0Hd`Mk4UXRJkbHb4c%%2*AMlp
#`,A,6(p6MNd6mG("MdR3[%hJ%ded&0(%0XD3!$rhDYb%FFTkTGD%YNUeTGC+YYJ
Ld!kYNN`0Qr8RhZEa,"A4,R2dd$KE"$r5b'G`+3%(i+#I6IDq6)rhRY[lCABR"SQ
jCXp'epP1JjbJLYND1VPmh!NhTlB%M(HhcG6C9GC*2DZh31+eiJDq5XllZEN!h@E
24Uq`*fG-JMfq(4Q1hTZ`4D&-0XZLaa4%$@YV1kpbppF,r+Q&@$0-$eD$`'86ZFf
9!*rPL1'YchqZI'(E$kTAKQaG)F$@Rcf9VA*#F1M!R@YNdYhSrU1j6RRaY6JhmKK
cFiST5e!SUViD5EE,&`I)ZqI,Y(ph",)CZ44YqHhbjN&H60-AcarGVZcJ@SR42(f
![hKq"IYriR(CAJ$6Y8I"@8m@2B"qmUI,r9GB["$*[$d91Y4!PEX*pi0RLZehp6M
29BKMKDrLd&0-pe4*YTrCi%1p5IT8"%bkhS%@rcZ)%*3'J1%-fJeeA81AH[[j-Sp
BQ9R&5,Me$5$V&9*4[@8Ei91CGLUFE""2kSla039S%N2a0EqPc*X"KIk@CM&a8@f
m-'bI0kbJXc%lB2@&B,1X1bVQcQPETCq,)SVA%&j-dcI,ZhI1Yp3RNb&%S[8GY-%
93UB1Xc4aXfGa`KijA[jjQ(q-LV1*FEI`K8a&-5hiq,rimlmYmrKX)5m8SY1jXhe
1h%Dka('eGk3UIbM36[J#PbCU-F6h-p$jam[lrIRG%"C[CN(,d"h9h2*l[UrE6Hq
Y+!AU))RbLZ+'IFr-PPANC(f'p[9drk'Fr2ee8$3Nj(5h20ZU!hKk#EE5l,[R,m[
iRKHcJefXdUhe36AiSEdA''8fYdXB-8`"l0'Hk%-"(6U53*&d80[Fa13iPE'*1A4
eTErkqFQlG4Mqk*`2QGHS+NGp414h'RD0G$mK6lXbrYeTG`6YMhKV[A"2Gi++mfR
C+jrjF20h+SVd#j!!S#jl1YM@Zjf*'*cjL0%Ip3i`N6l)kh3NbiPH%0QSK-@@p9f
2"%klUB3JA,8Vfk3%hebi+b#@Q8S(Dd(8Zlf%Re-4E5CERKC"Ed"ire3T#93!%ei
(%dG8fj95TVJb0-ENG&jf@#rj96#4PQQSU("2S`Cce)S-B(KBQ"YJ'fmQT8IAk*h
hraVT+NmP$q)Z9N+1IHQ*4-aL8Fcf$2Rf"f+$X@Kl@Z)32bf6KbGTI$TXc0mbI9C
%q)E4TI%!3XDENiIh"dZXP3UV-aq@#bCi+DIl%#VC')D@eKK*%+aM#FM)9M(@T46
#DD3#Vb'eaa'F*NVT29CM0ZB6K(DF'f8QHZQS2pT'HTq+1P`piRG2pjaT+SIQlB3
F8aYPZm0Lp$P"UKh`BKaYM@@j!Mr!I3%h&bDpk@8XVjRK8qePJbJ!ql[9BVf1Z[Q
INHa5JBql`f+*aEN%AZj"1,XbBPKY#LUIKU$q*-QcZmKLNPaIiR6a,h)3C3!kQSQ
)b#Td1K"kJFJQNbYhdY(m-QR,Np[KU`PFfj-bV"!`ZqeL#e1TSRDSHXfllS8`SMS
f-5UYY"2drCDR9VUX4UGbG$rN`5C`d-Za#dF30Dd,A(TaZc)!6,Y"X&J1Mq&kMPm
eZq)!De14qVYP!'4Y!V%k+*%,G!1VF$rlC#DkaQmXlZ`aL"eL9@p%L"U,ZmJ!H&c
"1r+jlEV#R,Za*V6'1JijDlM,'TFDLMa)cpVkZb1"&3%)FJYThcY*L"-B-B@Tbmk
S9Y6AF`YTHR(dG[i`9E8%6Rc6FDZlUbD-G%"9rr,SL1JkH!T&S#Vrh+H#f-Y"LTa
C[bU$'AaLh"jkPH2S$lr[l`X+i%S,'cX$U6q@q*[[)V2rpTqcMrBqc3KZa"ac1S@
3!0A#4V+rqH%3!+fRA$8lI#XJK(F4FhNHFdBD&ccKBhC$,c)aQ(3JN!"mR(SNG(k
3!$S1CYrGY"$E*KA'ENrj`A4B0,0DHRq$Q0#jYM*!ZlkZZ+Al@&pVR&-U-aM!MUh
0Z0&fQjd2`JeAPQ,Yd(1h)29idHJcHEI[CqqBr8Em#319IDmQS)Zl,AdY*LH,M0q
QjY[5ljqFSE`Q,iZ-,Kd,J2RM%-a&ij!!YCT!b5a"%VYTjET66p0*F*Qf8Eep"@A
Elj!!DHkN@3Y`rFPLAL#3!#18'NB-NP1$E(Eq2(&HFf5q#qL9H9KP+QrV@RQ(C3"
[pNBa5QpYR3TI`Uj8C(0d1R0V3EX,lNbcMf0il,phGlEk'E+IY0[i#U3AZ'@INN3
Q+$B[iFZe6M$E@S80m0V`'[3p!P1-HFKPfQm`A(GIdMqd!KTEKXK6JXB`C9b6HE"
Xfd$rk0Bk''mU%kN&"R1a[U5p,N@LaR'PKYaQiXp,CJ&[bqJE"cEXSJ[ES$U8IFA
-+$A2G2qiH6U5m3MIE%"cUfHYSU[Al53mUTj`E2*49JAZNFEJRV0XH@86ZT**+`4
[`TUTG*ISR#ZCYMeB9(m!c5cd#be8e-PdhDJT05+H&(c-,(EpGI61lF`P29lrNUC
I-UYk-(Ba5QNNKreJG*!!AcZdiqllB+UqT84CGU)DRDhIDAB8Zcjd5$3)XDH0@%Q
CFlid35l%mkKICM)l%SD9@V9A[%'&''lq@JjqT4cSHMUr,K&!YS'L%,RZ5&Er0$H
,FcBp[TMAVkEY[c+c3SDZ@TMFk#0[(2V-HJZAY(Ka@5b"a+*K%9VX*2iaR[E[*B%
Bf-@ND,I'JR6X+Jc,cF@`c1h-X00K6ChGN!!IG13clYX8rTH4)1L)5-($E'[FTG)
M"Q'NSa[0c+(*f`NRQ%*pSYY[F8!$Q'K[c8!Q[kAG'qlEPeCQX(#Ff!lr+iAMqr0
Sr8I%9Xe'fUHXJ-TmPR50Y1+5"lP568eiKJ0Yh$qYkmX!R&SFcjM&T@9M-K@QEJF
H*i6r541(cIqpjMNI42!GXN5UfJ)Z41J8i3VEBGZVY"i4@d3B"jaJf`SbX6N!Qm$
EaZT[-baUC'DNBd2&*kBJq8$pQ+F-M%Q5dUUeL@B`Y!+UDkIY(`BA"@rYi%dApm8
j[k"9*FMlT'2[B9-C@Jjf`(HeA%r&`M-2)RTdQp[id&*Q%%f@P5'4jARF*@Ij@c'
#CTGac@!Z6`FTNeCB%rp`K3329'p1,d3$KDHVi1#P@F!,I*K9lA#B$IZ@FI+S%El
YK`A6-D4#GR6,XYPka*H(@$-$9"#BR3)QiprJ4#LVI0AFaGHMjfEe926Ee@BC#T1
10aHq`Sm5)39!!HldQjVEb`A5`4!&&('5XK!&G"Y3dGf3!'Cr#Z"J'[T!i6cbCU-
+@JYfA94MR+K@MPmFBAHF`LUT@L*EreMl-JScJFeN1[r(`UHR-EPdbf%fI!Y+l6A
lG'!ZX9pTqEZ1%p(-#fZ2HRKbZ-e62RmFHT!!lM`L2k(hf3RS"3[mZEklM(j#KdN
$G1*9G"`fj2,JB646r@9d6-bkrjRlA8E,k-&NbpLFRF,fP93Nf"Kd$ecF%q"P9Q8
YR)ES8eT-Z9cr-%HS#J0TZ*!!%Y!(+GqlRirL0CSd$*NiTEirC[*'#3Mphe8(ek-
hUbPm)6b',b+9k1hlfdB,KM06lDKPhX8Ra)K2#Fblel9q9L"-fpFZGc#fDNhJGJ'
I$aCTb3@!1$,5G+Fl5'q6'j4!'U$HBmQf"(",LjGD@-fk0N#LJ(JS"EQ&*$#R5qe
Gm5A)4D@V2jemN!$[)-``lb!4--DU-&"Jfb2GbjlD01CpRmYKYfEj5[A&Vi#Ua@b
JM2`DS"GV'N5FY$r[3%G8`V[dNSql6r@R8h&B&+HJbCidr%dfPZd*'m@Gbcb!0J'
9r*(&CVCk*D*lfR56ZM8XcTN#riUf9FqT$cL+1D"HKJF'Ejbk(&J(I-!(dPKBSMl
m#bBTB"9A,(G,9%j,CHV,m13j3VpQ'U"H,8*PRk`IH9`Q+4A4NCS3!4Xj3VXH5p*
ZZf,FD8YH"%,ZX)(5TeS(6F+T$ce5h[X%G$TRSCJ@Gjh3HY43Fq#fG"A8KPXENeU
GL%CjL*11!FEm`FJjS&64+cRa1D$A+#b4)A1%qF1%ED-`8hLRK&iH21Y*PG%#8rH
p4Cl0hkR0V+QHh$KYp(C0ZGP),i[)j"5rSbCS9A@RYPj5R'j%A)0j%98TmYq4G06
*r4b#I`C@U6(Shi*dMXRpp#SMGjj1CU@ep'CNU6%)dPV,06KQTF6dCNbT)!K1,""
dkJc[YhL"1DFcmf#ibk5BePJF61(,a'CfSYZ3!#AFZ2lNLqa,CN@4kR6@%!riKDS
&#FA3lY-8Tdl*5$M-LYR-P6)T[#kpJj!![,Air@46l0c`H&A6JT1fJ#c*fGi29Fc
SXeHBr48JV5ULir&QDrLa2GBl5p%8KpEq5eA)N!#cYD6&X,D,SF9,PU4HXeArI'D
aMrDRbM([ZDRmifl+[58&[(6+"$!A`e9@I,2182J`!dar1,F$0!dGkT'SRfiMb9"
VB0m&FcUmrVdIaLk"!-6Nd[hAkRSTdYPCKJQP0YP1!4I@dBG306`h+F`IT(G-")!
XVGNSNDRaVBJCaF91J-C2&dc4P3ZHV85NAd(S,%rjb[8PZeLJ"PEU,U!lYBr+ZV0
`V*Q+$ae'9QXKA[(N@6fT0CRdRa&TXeipP6Ph9,`L6P&T)V9ErrC8,McrqX)jS#*
,@`6h'Y3L2(rFKU$T"iR6IaLfM1J+h2(ICEcRrlbAPT!!YKU3!,c-PLahS!dZJ8&
`%l6-fd+hC3dBiFGmV238j[4@jUa@&*X(c3mE1TVbG&Dl$-Al$VIe%(f"YQK8*Zj
'+Q"*h"I$#6),$SRe4,P860PP28ai`lAp$&iSb6e-fdK-idJpClqEiKqappDQ+,1
EM)P6@GE-+2FR3DUJe5LTV$E@35JGQkUGN6r(19SSf!F5F0eN9#D,Had&Z$9mX`k
TUM&&LLBIG2k`m9J5@qLEKGXXYjmp8iZ$M,JQ9($qNU'[bIh`B2b$JlRMk`,DDeq
XLV-jfL38'U#&$+))44`jd*qLd21L1IiakL'$Nm(@jI&,Z*Q5I"(mU2h1DUfT0Xp
r4cNih-prSMQXHR+p+")J1R`GiDVU%A`GNkUc!KH+UK'+Xf!ATc2kiej`MKhdUUa
d"rfUG&cm+85m,(+"fl8iQJ0&mbqc0NGh5JkijYL1eX[K$(`)*"f#MRE#$F2Ua9*
kTNG!NEbf-B1mdi-J8UFJ["#$rPdBbCYJ(0bF`pC242''d"2@B%6@Pd365FljDUf
*FX+2SR`GASjB-`HkG8P((%GMrA6jrd,6qTp8GSYlCc'I3U,aH(!8E,a5FHfU1Hf
mP((lQ#99'R(qcA(N+#cG#E[340NRmQFaRdli*0NkhcebmX(ePjcS6%jH#KM--4E
Y3)C1A[+Ah+E@3U#9-FaH#BV$Pl`V$-'H3JdGVSlY*LL#e*rCmUUKD#BZ(!6c(3k
pUGF-q1dj2BPeHh2iDSQ5mr+hhJ)4*`4Q68N4m`4QlabXJ"HPm`*heXl,DIemZG6
FN!!GeaS2Y4e82Jmfc)IV9r`GTc8[8`cVJrP(3!`KN!"ka,28(BTFB2q!dPHC-cF
piRBKf-Gj&pHZJjG)hLV[1LD!hLV[1N6c1lL@!b'ZqU#+Xfd1+HjlXP"U!Qb!,Z,
D9@k#m)pq$eHk"T6LVYfA518U"!YVSH9m8Ndj$&PmbK'QVN0VbKmZ+bTl`K)dPBp
B4)q*#@VSKjqm#h'"3Vh'"U6d,MZ9GNT+NfimZ)"[kRkU(p1$q,qYjB%j65e1F6#
H8Ji5ir-GVX0NZZl$FNMCTD8GTFHdie[6A8aZ8S[9-bMfRIill'-m-0(pA!qiDpc
Y!@DI#(kpZ'E2lF`j1F9Vb`D(IRH5k54-phjjH+X3AEi'bhjhR`hQ3H*0Qq&Rrha
QGq)N3)Fi*LI2+#GV+#CVq5BRChGZE5mY%(PLKSj[`9YJ'KLm*mm2)FHi,&ah&X!
U*T9b-e4'+!8(biQLbi#L"r9jATqLbE#"aGZ+LpZkLm@eFhp2mAl0jKGabmAI+@*
iVf@b-Kb%R6FLNe9r2&Qc0+QX-C2Xaq(6X-ALilcaNCiQ2+MZBbcbZ5hpe-PNUZ(
0eVa`U[TCeRVU-FC(G-b!mKcL5hrkEi"k@@R5qNXRqQrVcj3X5q+`clP'$aALP#1
d(rbU5k6*Xp+IerY!ZC!!b+pqXS+HXXLpiBmECIer0'm`a'9kaf9,am4IDE01Rf'
BJ@k9,a`P+T59,a20aPR-cajiL09Hfr!6GB(-L**HH*)VH)MUAL-QP+adVhEmK8i
$FJF3GXDRVqGjL(CHpTZVpSM*ARN[q5QDUlF!DIN!8[QhKc2fL1PHYaa2c@J6Y`!
cqBLIA[BFkID)Uel@Qcd0!B%eL+YHUbHRY+Y'JB0T4b3!)a9%bA"AIP"A)9"`0(k
IirFUCJNaM1+qb5CFSjZ&K-Eh8mDG8i3FkHQ)3j!!Fh#!dNRL%R#*)Q-&(NJL@LC
rU-!9TF$,8kKc2U`RE)p0aPQjcaLGL-iEaTfj6AjL$VS(1kqPHGYIC)b+`#D@U,X
MU%cHYI*BHULTJ%ZbZS%iDCkTlT+Trm&T$ScpBV6'kZM',qK0MqTr'!0qp%c'k(U
GVHK2+U&V%`[bINIVI%b-!V8Y-5pTY+@c&[ZrSaV,b@LP&iCTVS%!Fl06)Hj5pr2
*HGfImUk"pb&QjZ'+GF[lM(a)HR&'[H8a&A-DhBDUh4AH'K@''pdcapG@+B2&&)2
AX)L''eMD`#8!0DmMVNh`KJ)NIRZ[-Dk$rIHUc`[L4"AL(8$4E8RC2jfD82DpGpN
!rV#pb0N!rV#p("UdVG0r$Zj%KAqLkNH!%dB`IhrZ0[j,Pad`P6eGaN90aCX1$)j
RcpQ[Db9JKG2'(dQY,ESDk%SLV@hpC""hrTkpcAHl&dfphGN!K*lN8ZIaVQNDf@q
J"LQp)MpYf@lfUH4[fFqJ'RP[rEcmFke+rCek2E0[r@IG2A0EPhhP$YcdJ%Rb%Zl
*R`ZjJM,fYIACMU"SJBFEla)`a"`,lLS,djCf%l6L("dS!JNk&Kb',GQSS'KjKre
ar)BmN9AEC5U+ml3`EQfp(--!821p)*Yj(0k#kYkAci'kL!dqUD5kL2Sqa(!fJSQ
UkU@$JShHUAcpL2Fqa[h8Ppm!PmEPe*ApPmDc098Ff#Pj+2ear)D+%Xc[+$&9'U8
Lj#MrC@eSjQPJAM`59C*UH6XYU9SMC%rT`3E'06X,IRrdmDb@9@H'5F$c1c4YA6D
8HEdlQr0VQpe"@G2SU[*SP%M%+(amaL4)kLKj)@@+%i3MZ(!0"JNe2bITbp$*k9h
G0&`Eq1*c6fiK[Akjel-LrAkPZ#amiX0Rr5r&4MRcSR3-ARBJdC0q#QT55*X"Z!N
PIdfRea3'bFJ)LlKHPB%KZAQirIAaT@U21I12G2iK*KH&DUTebFJH,DVb'(l(*QC
P)'GqUJEj&r%FJI%'J4Ik!9UdMfl3AeFc5922Z6K&SjPL$AN9jHMY2#Q94@)9Z5e
!26pB5'(KaNT(f@DhUY-)MLG'QjYU`(r'G*YUkjZ-kh4rUA5E"qZU$!jQZXNjbdC
)IbadQe2V)T8al4EhDrpkI,h)%%DABS&FNfAX6V#`),5RB[,6+fEcGp&i(+Zi`)3
J"X+imEPJ1APL-l0B-fk5LH3ELTZjliiK5B%KZB@1HHFc18GUZ-$S)0E2Z&J5Ua-
'FlJ2-c9VM!YdhATP)G3ebid`dXr*0Fq!K1)Nb4ErUfhqJca&d"[%-9BmHHBlZ%d
mH98l9aEhI$da+cf$+ha0-A`pJ5[pZSlrci'U+@51&"#`)H"'T(q6b[2becP"E`V
Jc[)$+(P`AYfkV94*q9GcG$J-`IHYD$J-`IIrDREfQcAqHY!9UTpJ1REfQcA&hGd
9MYFA4L%bQdmd)6BM@83aZ-8TjMRY1Zd-`#Ce6$N9(XJQhBG4Xp[G%Z0f)8Gh*KK
5I(MCj&k$pfCQj)m9ea%d'pG)MHdaf[F'&pXa((C"6Rcj'%mp6T!!)S0ma$EN%RC
ZEGhMIcL$++"hbkG5K&BEP("`8b3$C1hYq'Ef@Xq-aI&`2C)bK9E,ER"`6pX))2,
&aR#TN4[Ne)23aG[h2YY52X8%Uj-$FHXkCiMLlLf2'-)GGDdqbe*TR"[Ne)0CA-c
Jma`bL1)T!drIT"N-VH)bY)L6dhR85G'4'c68'i0k9X*ZHA!3qe)!qhQ*%"[0HPD
`LJHj'f[2m2)pQ5*"h4YV-GPkV8Pce!1#((mF9(4c@mR3irprHA%,[Jjc`Trfie6
F'a26q!F3R[Tf+0dePP0X-JiePJ)mf[-V+Y@iN!#!`1cA"j,T%(eZ3h"0%AP33h$
C%AQV3l+Ddd5Va%3bZKZDUeJ$%eYH[ESj"h-4H3#AH4kA%F)l515$"l5)RqiMF!a
HY-,#JU-i1qNLmLK)aRj)H(jD,b[dH@Q%kKEkmQIriJ'&$+1EZ,Y!aAT5&$0Fl,q
Cj*[VRFAlVI),,`YA42$D9Mh$YBFJ#+SMd5NS6Ie`$XX&G'"-brIfU)-j0-S$UAM
X9N`R3+IFfRU(,+,qGaT@6@c3ZMP[PUI6lJqhTmlr-UE0*L&@1GAB`-baHE+MQ0"
hh5)jehIX)Y"XG",DZDbX4YdLK6%6)HhHPV'MfCfd!j)YVAM1ChU3!'(jV`iUG*%
M)QEl83(qR5P(d-5&@!$,l$LHDS3ekQ%"Sh32eL5$fCLcM(!iAMPaSjl+p'-i!ch
Ha*F"Ef"2mh6CB"i1ULGeDq(8PENiQ5,)Se'G@!k-,QkRAeI9#f8LMX[,qhD3!%Y
50,fZI+F[mZbIZ@0+K##UmhV$#)X11kk(pBqQ%0m1A,bHj[I&$R!%#r8dNJMGVM4
GmpY!`L9ZJkca!dm6d0f,VE6QPNGQEH+*fjKBJibdMDGV9jSF%Y%F8`p2k8rX9HR
b!pNVj[R8XiGdB-A!4BiBGEG(@4AE6!$&QQ5CCMbEc6GL`B1j8%,'0GR&B+mPjiM
NMhH[VCjUETp09m*rMa(NMZK#m1(N`UfpI8N,P6c-2`[!8UN,BBH6N!#,Fj!![(K
LI)GcVlbmBT!!(8rLKiXc4JqfFe2XlDZ6eP"qHJq'h`Grr-8XCPK0qA65T)eU4*d
[Xd$H0Ab`3+dF6$SH3(TQ`UAA%2#(hJ#!Jc2*l55e[`#XeJTq-4iZCEY+9RDem)C
B-VKcXa42`V*I*c2Xj+IY8)lPHZkdYe6[VCUL34aeR8URGR1-QP*k&ba9qaAF%4&
-QC1lTUNTJ0Q2[2DpZ$VcJjVa01A%X0hcHMT(p(*$Tm&p@TTk0H32TjTk6'CR*N"
ke4J[dP3S5p&5L`NTq91Ce,-E9FAZkf0ZhmhQEM"kj5$qC$LD3Fp89*Y5bTI)89p
C@YPplkdY@F!FNb#Y5N,r!ARjH3@,dqZ'GdC9)BcV"E-a9Bkr!+*VL"A[Da!l#6P
6QKm!!PSB8AJp3pd&j#,D&1cHNKa5m9CN@E*8HYqR6AFQ#1UY[@PYj4ML'$,45d5
1!"MPIZ*r)1(Ql&1K)'ZpNG&ImmZH!)j63ADkSFaNb2Ye@Z5+MKXYlGSJ%2KjCBr
@dL0%0J$%eKGqQXek4*MYjUir*BDZf0`lb4jVbe5h3L-3GJ"hjFALZ`bNCA!6pl[
XbId$RHQh-QUQZdaLk[XeT+`@b58$!5X3Ei%+"B3mI052MN6HJ8&fB-GhHkZICr(
VHK9d-`q9%"+mUS'(lm+#l%Tc8V-&U`XHCSp!6Yfij0SdC[lIJ4E@DiKh8E$#E[4
6DrL#Zak`V1@R%bMK(5r+2pPm)Sm3MU`-@ZV`&5+Rd)am+h-`)BhRiGdhUD`HYQ&
"EraMrXUAC%SFBDcrI5#)&[YRIJ[E5)CKK&8$e%c5H!Y'H9*dC&9r+333!131S"9
`6H!,NK$)lYTkY!1`jhV)e[RMGaZA!mb)Y(Uq!e1)6@J5X'T-aJJDf0@fJ[F*hl2
9BCf(&5Y-Yr"Z[(&0"0D"(qN-SqYd%R@pV5Q`A5JL[Hca9CI5KJhI!2jF0eMNV8f
Hd0E0E6'0)6)TaB8aE[PY!d1r&E@TRS-f6(VMd@ZJT!Ii4dZ22@TDHPLR[HEH2qr
c+8@,a"66rPTSaHEN+F6QRNjZ%am`$BhV4`bFq,A"Aq"Z3fe(NQ6Va43)FVaR#Kh
QZ`ifC#Zr(e@6QV8iAepZF@e83QDcjBRej+`EFBIGA@J5-A00I@+c`R*JD1LjQEq
DC['``PeJAHJ@Q8q3!$h3@)#N+[qh1S!pC+FkT0fRAcX$[mCh-ZSbSi14[H`Bqa6
PPJkM0PBbXb*K#@4V&IQk"e[ECSE`e5keQURC3%X,TTea(EakX)Tl5RN`#BCDLB@
-+J(`bMF"iXJ'4hi*CMRf%lff12[%EYeYd%20&6j"&0dk)0UDqE-U!4Eb5Z&3Fe9
Uqb+UfYJ8m!NbSbP4r6TdAhM!5S!4CX4(Ldl&D(QNS3'dm6+#XJZ)Jae4+CmJrTS
kq@K9JF8ZC&%4&&5HTU*6+"%*LerfX`INaYK`CP6[TXihm***fCkYUE"p5[i*6Pq
cQC954MPk1L"SQZm,S2L"EF`3Sb`C0qcihqCZ[*B&T&Qc)5EQ'q`)alYaUEFSAM+
M)"j6eUeY%aea$Z5H4p6qp8DUeSNI#`bFG3)I#1qmF%l+i6r&Xp5dANBA4,dJ0i-
LHSadVLmdB!C,dK#mB#dTXJRqSZjBmc&i"UHPSc53!,)[1Yc23iXcQ4(T2pkcmC@
,C$qCZkQTq9mDQ5(X2ckmG%i[5SBMcaP6@qbTCI9ZIQe5dbdMQp"T`kB5N!"aZe8
!*p9c)pZTD5lfG#5ITErN1#0ilhLP&CXIXHc11,Nk850"XqLdK8STrqal1+`GfJ8
85`+RSh-#!biD*3bXKh4L,Dq12XKXZe)!DqqL$V-d2#p6X'!FDmhrI[81l#N$*i1
M4-K#5VU,i86N!e2A[pm1MZ3eTIQZmLCa*mAV(&2+!JXUHG+#N3lEQrarUa3'ffG
5*@[q!aT+jBmrRGP#EUDidN1cIP`[Y'8@25#A`,r)pfj2E6G%3JZAUj1llLERffB
665cL'QZrl$T('qh"*meSG#MANR81kNNE6lP,Gai[9d#hbbMNFd)$,KSap2CPJM%
,VNTfqGB)0)mANYAMC4!S-fd6C'XRcb(4BFSJ0jSkK60N#5aa@KcpD,jh-VdM4&5
TZJ1YUqc+99@c*HVU"DjLJq!9G*NNBK$8U5-&A@+$i"9!1"Ak,X4,IBUp95,Z$JK
292)FQm,VTh*AR-CiNjk$X9GEFlrN(f#,4&!J0Jh[T+3eVkTV*L)"b5Z1Nm8fXf,
Ul2&i3V@T5j+c"HUX9B%$HURh+69L-NJ(L$%iU9V@+bAZ2B&2d%9KAk5e'8'Dh(4
3[SGAeECkMZ6+eM%EG3U[,9VGcbMIdHSI#6)8MX5p1*XRUeXeTaa232FiaPJiba,
lr66YHNAa%pR9G-U@hclP0%'-!GDhPZrXbZmiJr6QMZ@K@J3iTmM4"2N(Ja6UB'K
8bUhh1!0iT2*8EIMIkh"5k)jhDZrZhFaB@kr"$aHD)jr-j$6V9dA%(+BSErIqY+6
L-@*eVCjNL(CDIPT``CD+P)HcbYbX5V'+(B8TaML5H0Djc%&[EdGZ)#9iePiPH!-
l!,529QkG*IBHLIV`"e*!$@DK,B&2V9J1*V9)*LfhN!"K9eJ`*@IT+G+PrCibETM
cR[Zr3NTkihS,#ULDj!KYX`Zc%GBFdbEqH$9VbFLdQCeZN3e'JD#Q'"c@$M2p8B'
RL)@iDGBd*8c3McDcZ1SD(PULN!$E6E2&0"cXmDr[ShlN'ZATkVXKNH%HB&PKNJd
(@'6rmeRDNVY+bULNFc@pc!bPc,9fm6EP5r3Ih`'N+0eVUCki5`Rf1HVqpfV'@%4
8XqaJ!`d2U+4XH+R%*84@XfeJibh2UBZ5T0bNTc#l21L4$2fS$+eJP0k-@9$bLaL
cNSbU+95M4DrrN[*EZl9'Af(R0J0bhYT%&e2iXCeq-L36XA4P&'F-Dc#YV8P%I`0
4%e,C"h8aH+9*jAI'l0l,IqqRaZq&8hAb1##*C+Hk(9L`V#[L'+A,e5*f&1`QNP4
FG%@'m6Jm!&9dL2lUT@icbE3HN!"J0HE4aR3'bm3kM@A8pU@aCRVah#"'X3Gpj$9
eIqkrjZ'PHKc+9*%[X6Keb-p8NVAH-rdYCSkmSM5iljh'+6*`qYr,`*j(0,MPUXB
TB@ZMT0'ljI#KI8j9"e48j'5'`)9Y@9UMKZfj%&DM9#[i!!ZhrSNd[pEdJ5AEQSK
JGiCkbi%BhCR@Z#AiT!ZNrM1NfV2-h"SImk&NaKTC23,Z-,#N3@LXSl[hqFae$#)
ZGG@@89JI'epd$+`,PU3HaXAqK+6Um58)bFi$d"Yp#R61hk[U-fjLV%bPNc&VEHB
6&j%MqY%r)"L[iN[V324h0SeG6'C'1-LXfC9D*3k9jb81X`4,ZQHE#,f"A-N5R$q
a&jXMCDPZTJiVE)em`q*,hiX)AH5RDlP[G$2II-CjlDU[6A2dbRT4(%mBP+F96*q
50A[#4k@lCL4[364Ve6VA)$D!%j*!ZlJ"EkcM%hBEHJi["Cmk#3BK"KU@#*!!2HF
DGR'c5aHk)e,SY1@$aZMI1T-UJ@[*ZQY2"$3Qj0"2JB0kMdXUTAR4Dh'NT!$I&D)
K9%Nl9-#bUd"8N5@b9I)JZ8"jQDNZS2Fdb3'RY,c$JLk`d3d2!&hX@kY+UL-fldM
0(k6m,2k%AF4VhUA`S+$XNTF*Xeri0e@)Ic80mRKG5MHGa0DAP0m3UMUEDj62icB
l`JdE[HD2`VRUPbP(@1J$+NFRdAQliJN'em+#dJJ,3@#SAF([#Fe--RqX#lm3Rmd
jNfaml"JK'ii)eXcBF1`PfH5c%[J6(8c0q5HJTm6[f85c8IKc#fFKX@EdEdjb'i&
@FEj8SPkM0FQ6,R4!i)PDK91BMBV4cq4DZ6q(jREpeq9KB8bH$1[d+XA1194XcEq
IIirA`'5fIC[H#CEKJMrXF49&eRjS$01%EI$`L&HM%ZZAfEKJX45K+P(jMQH68%A
&qiqEiRV0kd2ApcNEL4+mpf#EKrYI`XFmh"!Y$Q#[hPZd41`8Jc&JCbCQJ6e@(6f
NM1CZ`S(UC-CPaFKmDDGe-Pm1kDcaX&!8Q+Z@"DPq%GNd5fXYfRH$J9SZa6XLLAR
H-9pYIm#c#FCqc!UK%%-)e!HkhITcN5iGf-daDb,lQ"-$)N(!&T(ZT`JX%b#Rl[D
BiEX(PRK,H$@X98X`GY5KXDNRK*%[JGm9$q4BcaqIcbb&,!pp(qKhbUcA&#fV28d
&I!1l3AF#[GF8@T!!Z4pp4VZ&P9m+'rX8Z*!!U#AIFLE!j+b'fi4XJEN(KVejPFE
-!YMVTb$`DllZrKblF*QQ8mXf-K*"hf'l+#&DH*(&chhF*6#XcrEa"pZ@RDQ(S3H
SZ8rUG-QN1'R-&)iFAm8SaA4",qULTe[A1YGrGkf1JC9i90Z@lQTicUTD+3$Sd9A
ckkGKQaLee*!!V")c&F'QL!IY8Ve"9iC1HN4-fA%lH2%HEjBZD*K@"XDXkCjNhIb
A2%pk2-*A%mN$!akp3"VKH[K@V+H1k2E-A+Ic3Cd1-`,8SMU-qX*%+H,9,fU&04N
6H,A8'RDiT5HE6p2,#QE$K-3RZ9i#H)kUXKYi!rRQ["HR,jXBi#JU341r182G8U6
aGf2%XiQm#jm&8HLjH'#d1h9VZqida6BNIkHp*pQYU(JUTplhU2&hBm5b#UK8A8&
SB6Cc*&8$&SET$kN+cHBr2ka1d0#YB*(E5Nk[LR6lZDrI4'YX)-A`MQ`&["ZGU6X
*Gi3c5EcKU*BYTK5&B8l0Vq'jDmc%RB'ERaFFAh5UMY$rAK4Vl'[)SCDlCT!!(1@
(R`2GF'Bi1(frF&I#8GHN9)P!90p!T+1*EfZ!Dr6&%!UpMbcdH,id6b00T)TUVeJ
P#hGfmd")"M-Pd52J(c+,Y1FFJ@&JKq[L,Nr59)J1p+[H(("S3*MV6F(QVf0&Ei0
kS"GV&aVPck"'qp+M6mNJK5HZ"XT`5)AM,T!!NQ-qIIF!*IJ*llGT6K!4MaMfV6J
$Q!QYcYd@aF%8,lQXYUcl&"Q@Ak24GADC"3!*d%!L5Dha9Xef3`KR&#eZ&Ur#0@Y
`l)H&VI!$b'(C'(U`H26[e`@mR(HEAal&bV-ZU89NGl+Nq2pR[##"5Jedd'![rlL
bN5`E*cYQaSrc9KRk5fB%-5GDV)UPVlrdB'#["QIZGa4T%iP!YZ)Hpl[c,LmHq@8
`i(Qb)M0T6RA!qM$fZi%SBBG4Vd1dfHrV!qaKri@D6RIaUPJcB##X5rRrqhj1IDF
8ci&LP(h&`SQ"[K4UK-h#Jr96N!#FN81FbBcKiFe$$IZ6eqMA,A2AiIS(1l'-4I)
AHiJ!61,LEBddLBMZjp0-jl'QLUDiV!Vq"!VhppT5)Z!XG`G,PPC*0pek`6T@-Fb
XN3IF9LcE[4#3!,B-$e8N+RG*$0$N*$SLLMq@"pb+kcBk9'daq8GBmX$0`FM9CJC
[dKX9h)F8JkDPJRN0ZkFqh@0C*39Deil1)Z!a&9P2"FaX-FkjHK"[@H-&R@NB'Eb
rMiBkDd9BcAQh90m(9iqT093e`e4)RVK'9!bXd0[D90[43'4Cq`89L`[RAVKh[@6
#i*3V!qY+1Xl-9"$H6R5ec%"D@6S&)T)3cPQ+"9S-mS)42hF-#j9h%AFF$*mMa5Y
j!T6i@Y)Nj2qlIj8a)8A69d'Z[6PN@a58)*8a@GBi%6[M'(ABUH4I[54[dJEFSjP
ZP#U9h-k-'A8FB[GCeLIjh)aaH9k%@Jh!Vcf5M@jeAUPC`(QcP@(VIj3EPEeNJ[j
jYEe9iIGeMp5#URNJ[94CGD'8f*@IcU5K9&0eUPRP#CERhbY,j#'M(U%0fGMbJV&
bAShIh`fbf(Q16R[9TGMI%mkcLpr2iGXhh5TY8RNd6P#Ybe8K5MML'jE#V1fMk"E
XN!$d,mJh`C8JpcK!H4[#5brXGH'dMT*m`QBJ'%!%&(j4b[c&SH$*e20RI13MT"9
Q)(Sc+Pf-Lq4qfPBbr"MV%I%DZ!BbQN"6SAX`j#4jkki'lDkp%DfE"MqZ"X@Z15!
-8hQeVN@pbl`pUmZ@M&MP*d6`K8@jYc"LAY'Bd*+S[k$H`"(IjlFcP[k5'+jbk&8
Bd4SRa$fQ3U6DUQq284rm20r2Q$G"U2Ud-TGB2M`6GAZTCZIT'$f+NhGC$14H+aa
*LZ4kF*Tp%il8Ja4CZZ6Q[`PZLY48'+QMR$VE9Z@b+[E!UUkF6(15$cJUYeHdlJ3
S03kHFD8ATD(GbUbA[icfVcaJlh-'ZI3)irH!AKqkI9&BP0'J9jq$j5lqmG&"'D5
&VAG,d"*1YD`(p2,9[rq8Pe36'5Q''bFFh@3i9T3l9"03TSBEZ4cIeC2rIEF3'#h
HYchq1M@ZNJ02-$+T'aQXhhVM'6kU1P1D,c(iNVdaimYJYPc-pR"6B(#)*"3)$JJ
(VTF4V4VVUL`a,[UpNZdF4L89EK$f4m[R2"cKD88E)KbUeI6rP*Y8&f`VYcde1TY
$a9CCT#)SlVQmHA"k25dkYp6A+Zhk[T0jNS4QQST3GC9q4-9j&MP+h8HjUI,D3ik
+@6NL05F0eel1DpTN%iTCN!!L08YTiRPIHR$HmPaNlBUX3a1(P"*8ZB3,4q&ULUa
dRA89`[q19Z38rl!)H%k6GDXQJQAb[jeJUD(*p+0ekh1Z*lH3!19S[d`9R"L&PTI
D*CkZhlGcZNVaN`i6c@'PS[$30U,*l,EJJ%Q!3Dlc*M,T!FZKb,Z8,Yb(EjV"PMN
Z1K1Fr0GCKm`*IhS&NQBIh$*V[H(YLT5@91YX,ml-Z3XG!e4Q@MrRAZjBAPUh""E
YdE2F@($Q(!%C6AQNG+I[@ImLH5T!4H8U!A"9Ka`0!PiET(JH95,((e"p3R@Ud4&
RaGS09m3,T*Y9'f$&P*8UkM+pbB&C+ZU&pXbL4*VSl1Krm4K-Ib@PS9U,!lcVHK$
Xl[IdY2`SBfX[YlqG1'+*ji@r`5[k(BYY8PS4)(V-H`Y!56hj"Rfr5lK1r$68U$Q
6""(1G3[4#BXXLK)"2D49rj28PMN%0-(TTl@KM53+G,8Nl`(ZBT!!B&0c(AdG*rZ
[Jp"P4P5)V0!ifP4PdAGq#XJjU'Z@&j24PQDRCJp@Z[1Ya*92F!1QMLaBQL,aG82
4I!+RF--h-rZ9r0RXI4TAZ`Q[80-cHeM#P,*aEphIHC-$QqM#@4i`4fX!NX")-!Y
ANQYU8M-'VC!!&PB-e!kKfL$h'*PQedQ!G%p@&K@Ea#&-kkhNcTXF8KCd-p$4aM"
1!"bbbJHL9qM'S[B1%8eXNlR2DHQGe'*mI6ET9Qpc-pbQk3MBM1Nb8ZN[H9GL'm)
M')M)P5YkXS6r)eFP!"Yp"MPKlkI,F2YLCPQKIN@QdBUXZ`rRRUT#m@AG&#`(CDU
!5Fa"ilajHEHE'mj#G2Qd&m&C"VL!3RP"[VacH9DEQf6qCT5D-iV4XJ@j2434Xfe
6j@BH'%Lm*Z%,e@3J8FJi5K+*FXNJ'hF-,L,d!J2hcm8ZY3FY&XE0[hBj#(j29C5
I,`512RAj4IU$GA,2*#+TQkblUIBEa9!+m0GmUcS[rcb1EJdq36SkR1pjYCr64$f
2`!2q)@5+@PN2ci)LFE-SMM)0Q%'*)Jppp0Gi$G3J#6#Qj8'#I&+U(k&k"0GV@6Z
ic!eqZ+(M3696"1i16PeBp`G-V@!NArDRHbD$[lYSGH8+*BZSQ)'--X9rd$%b,&V
,[k-$YU%9)JkIlK9l88rl1ffQq"$0iIi85)P`T1L$h8RT8Ch5iV1i6kJqkIje+R&
4fjAZTdJ0m#hJKA2*lSF6KZRqMaaq&p56V92UK"m*[jiZCU0#XbE41a-Fr@fRGcZ
ViC6a,lQEIT6S#Q0PlE@iq%+!Lrj4d3$Cf9`c3'I,d"(-@2ZK6q4ehe5r*LLYlr)
DSEANqf%6[h9q916c`U0RDY!KR9K`j@Z&e&'Y'!PQS(AE90L(3,DeRMQM+XP4(b%
9PC'LYQC4d*+9a(Y!$rCeTjT9bVpVm+h@E8[dZhaeN!$PCM'M&99UeR!dYTCa+BN
j`hehKIEjAI!Z%I3eXP3AGhIBd#rc(RiB%I-6Gkj'VGLh,ac9k"J4DK-,8QN8@AV
GRd25Y!QD`NlQ@$MKT5+d,8Pl`SNiPVB3jZLVN!!ZGEAV1SHI("QZE0hXUP'3!"e
'DTBqkMD!DC!!lUQV)251mHKe#epim5-`NYdk8Kaj@@j!Dj)i@C@m`T8`2phYY3[
i"CG[9QXXYAc6UL+dE`'QHE$#V+TBP2,*#D5XZpKe!1FL2e&9bL*&j0Q80F,jQm,
15+cNh)*c9h9dceil%`9$Z(HERDAJP)2b,kVSL9RQhBFHY1M-YqK4Jp&m2E[D(Kq
!KB`RHSpKY%$&6(aTTIqeeYh,AN-6"8kjV5TDjm%H*H'8V-cILZ$F`2kqiSFa8kr
SqDb60JY#29SS3@8iqSkq91(")U3"i"M`K!R#-`R`-i5cmJXA%ERa-G%A184rTIF
45imJjY(kXk3P-f*@Z'k+Bp9i3cQ$MNA%11maZk0&Kf!US4l))kb@39iXBNBjahp
hG+$A@TZ@58Nca*9U(VQTU8#lI1El)i@A*l5)q!ZeQ9@@40p#Qd40U[DYP@Uc!#8
bh&kMRLN)hhIIq0mfqiL'VCBDa(@K)T,@L[4RUi[D6BkQ+$2XK#r#UX4j5lQ5eKD
64[#,V+U1&rceDdD5Lbbc"!ME0bj(qj20Y4C85kmPUA604lQ6bP'L@ViEUYcd`hM
+'k*'%SXX-iV-i2I0Z##&LLmVRkbk@'NkQ*DQK)T1+iAlQCh+BU+@qdcM!19-6iZ
XGqQ+L#Z&TfRDE6KI-)(+XlX)8+iRMKi2ZG#mRC!!,Qmk,C'eD,EM9j!!fqBbQN"
6S9rjTG9kbG#cfcF%NC1-G%)6Qa2j)(CA%pMYQpBC63LpE2D"c#,SmEZEdI9q4r'
6,!l*ANeL,EbS6`aUALaLb9&06mTUU%ZeaBUG+jpA`MmIa$ph01d+PLY5RHd%DM(
fH&VK4P"h@R!Hb688Q10P1VC`Z2YG`bVmb2p3``(&aYZh@)G0hlAfUfNj`lK'U&U
XNZPH"@,E6+PAR3Qi2E[,2mJ-9[Zb%,KJpUir('lXql5"Rm+*pJaV,BmLp`kPc6q
L93GZ+XirCF)a&kFpN[Q[Y+MTAU&L-JqTN!$)j0k+#ZQpKTd4lS(V$dS)MNj3NM!
#D&[[e(Lrhcl#Kb-NSHaV#"XNZde2%EQ2#pdmFYpeVKLT8Npd0pP(m5XTB8KH0Q,
+rMcpR'U+DZP9l*dc5D"0A`1+2c"1TFfbNKj5S!@kIQq$Daq&(Hm[P$%m"NdkQ$(
'HINQ,c`Zi4)1`411,@SmVL9aLThTD8ZLqGTLLL2TFHM*Qe$TNe1UB0XikFh5Sh&
T[Vk'(jkjabiD*`89G#-E`""Sl@#jhhEIG,-EY%cT+cf1Z%6Yp4'qBULZfR#+bHR
GZCIUXUaD262Tf!J8X8)TJ5Gp2C6iBImPH4Z,RHS)'pql'%!rH6&Vm$c#PR-A`CC
L0YU"cp+"2"T@R8Iak6MjSKXfBXS9BRE-DPiXB[S"0Smek5YQ',#jL3RkAU9L4q$
T56[a'mKL*&deHMA*+ccKhiS"k9!R+hVAbERralh4NAZ9GbUqFhHr[R(U(2)EDa6
3RUQa',#6LJ(T@&jG#d"@pEfENAZcBKJ#TlepPpKV`B&L4p(T@(DV)T(T6d)3@%H
VkFmic,5eaQLR[Fc2'lq-bE2Ji)j(UqN"JbV2HQ++9qRJ`A1I,@*qQ@Zq'c4L3Xq
AM+RrjEB6YkrMIIcI*XQNGar&(["EeH[283Z"rI@Yd&f)bR0qD`i!'f0LZ0PGDbd
!IVrm%N4U35#+X1R#Yld#[k0HRErGPFMe29@RTa9&m61R)Z$TS#ECJdH'iVm*S#)
`UdIfiS1&m5%E%FGH'Q*4'XMD8-P-R6@``GTqb,pl3'T"m)S"kFSL+Tf`DNNa"6e
aYCE3c-GN&%NX%f,p!SdKe(IL6BAaV+8K[4XABV06b+`eb8b)ffk+!HR5!E@@Zi&
(fZ+5F2%EUf+cU-Lp8-P-#Y[$LJ(TD2mjpl#[,CFU53B!'kHGZL'qBZiI$(PH1*b
@LI8Ee$5[Yfr&,bFd12ZfJbU9*+Fh"3mN#,FDmfP6l46'CC%Q$J$3fq&merq-bpL
+EqQh8E!i,3!UpU14c"ATYh@`kBE[D3&B[f,4HG&iQ"JKGUpmi[JLr1F(41h+!#S
4jf+(K(9%`@Kq!GU(%3aL@!0*+d!iaN*FHm4DL2YSTTmQ4*QR+V6keU[G-,Gb3F@
fE+fRr1$,lZq[Gj@[b!l0j8!F!#FNmRGk&!ZdS((4V12"Z`A(iM6rjG)QYdf"Zk$
LlEqAd*[UL6BI3b6jIF&Lk9@r,rHdaYXI9900812*3(hm*r6*C83$Zb4,9`"H4F8
JFlV$'0DJ1HDBm8QlQH4Z[3K0,lUGd9-Pc(FTR0mN64SDV$rjJETRkpErD#JDBU1
Rl,05RS*3)Z[@8@JRT$MA((4[D!ITD[pd-#3eXeqHiKiZ!0*#$mLqP3lGRV@Rd1f
HfJK#S31R2hh'(ID'H$ee#GQDIXemihI#G6NB+3-RfdjVZd,41f,CF6M@ZJU([Hj
ijR@'D"$La,[[J`5(PpB2#KMlS&@9+A91#pQdJlYh1mC*eqj3Xd&IjLU'H0(fY#)
QYm3ZHhmrCZ15dJ8ejU$8Y*rV%-Lr5bjiVL49i(M&iRX!9&ZK"!6SI2kl(4eDe&K
*f&MQIG5#,`qD4635bR1!A1#eTp!QM5p,H(LL2'A`HXHJA,ad(4h4e#5dID-bVLf
QlF-FmVR2@k%5M"!5ch1!A,P0ZdXmfcmUI3J,#e""%l`5d@T1ZD)HElM@GcQhTD6
Q),I$T$N"Zr6QP2()k+$J$14D*0)*2dY"kEQ3!#VrkD03&,V@XQCE68(ilC,XjNX
hMK(j8cPR(PkiIY*-r1Md$rSSQqh%!fRXb*@,NCBaBZem,S+hQk@crk'3!!m3EXd
PTPDEM$&#q3HUCbQiQlNSj[$aM[NAeJSj`E5mXc-J[(E09GK@S%983[N(RC!!ieB
@N!$&5TIi0KE2-D-pd,8iXaXjPR,rZ@2X+1p,id4dkJqm$m)NhG#+P,R4!hBjS[)
b-5[-Z1Cae)42A,a@JKrr$hY4h-1H-TLpZeDJ45DUP64$q)0+ZS3kT(e@S)cH)#%
"Rcl[h!r@A$PQP4FPd%ae[#i9G)(bmT-N*l#IRiLLV8DIYp,dFZfUEJ%ihTrXrYI
EI2Qj1"h"m5b9PqhbcEcAffTQ2F2lN9$UXllYeJmj*E@+192YV`[X['ahL&dT+"d
im4FK&pB818Qljrph-Nc@pJrd1H-ib*LY%TG1[!@T5PEL8,I4#0!A"Hc4#0!A+1a
Qim5G$e!hAS[p64q8Kd8)l1f(N@ir9XKM%ZLD4-r0MmTiBE``-Zci83TqP[9D-BF
RCcUi+(FQSp*kT$)4r,1IlH+Qrp)H5@V30)%&H#Q9&r*r0KVX#H@L)((G)mIjJ(S
E02DGc&c$5R$ZrM@L(%Ebl#b,bHTV[hGRfZ#iV,R*1"kXpCpicIk'rFkX+3IQr%4
9ra2X-jFj%-4e$hr(FjL3!-RXb&@M9LLMQ9BEN!#j'+B[KIGCB'-d@1e4V4B6F$J
KQl9$2UFl1PSINh8aMH3e[-k"%,p'mkMaJir3rl`Piea088c&CHblf*!!21MZrE2
I+dH''2,e%q`4-lG5K5+5j[a`'!+Y#5qkG&U4ar*1d,2SAd3'P&plMTF$1a%Y1LP
e[lYr!A`F%+1dXpc$@AbS$p[M$ePlH"LrKLLBh*D2@,8L,V`f[-U2`L#X!lf2H%R
[!+EjLAAlcrc63&-j%BR@&cEX%h'ml+)2`JqMd#k(h`H2(NJK#VZc@i2h0"ZQ```
EUKSHp6hMXeq$kThXrY%bXi8TNKebF"I,"brF+ZLrJhm2%&AFNY[)0!J,(rEdc5h
b+F*IrA0B1(C&F'pQclQr(E0`9&4%*-aLlm%2Ppmd%bS6h,19qp!6Q1a9"lp6Y0#
c82[%9Xrm$+)IHRFX[1C@YGFUfE2Vql9q9IY4eb`Ti3KcBH#+i'"ce4Mk+#8`4r)
IU[3"l@d3FA#Thj5m$eE3UqbhlG#cK[E3GYjRAIL4Sb3GNVrX"k-H4IL44"6[LV5
JR,KcY(bf1ScrPbLPV3P@pUHeNA)6d6J0504VCBUrd5i3j@d+b&5YY4-)a[eDI1L
Dh-3d[q#)dE4J%c!r,$,LS6SITJ8d,,S2Z9EScQU[@#TL(fDrZ#kRH`,l$h!%+4#
V@r`JXlBB!NqirNcIeS1dCMEf)GpllDlrFTrUN!$AHRG9YFJrb#&!I'M'&3G`(MI
EhFQZj0EQ1Ch5),0Y',d&Zp'eV&GVBP90I$hE6UAZKZfM5GLijU&%+"4P+A`@eJ4
'kfAZQfHC8a(2`GEB4ZCBDBjhS"Ej"`r%2P*3I`0m[lX*&&")cbQS,5U"&0#rYdG
SVI1U[U1iRN&*"6b&d80%fk1Q1*'NDC88h1bXL"4*b'BiZE8-HP-[GjRq98FU1Kr
"eKY'dkC6Qb'8eR0'0YUqH1DbDCGBiX3jiIiH4bU&cmFjZeEAjSP%FJFXV5SNXpF
B5RSETSf[9Jbl%qD*PUVrqm5S*(S38m'm&Z*[@#T+Xd&P@c&MPX@0[1ELVU,2N!!
-&fdS3L4-I!6@PdD'Gm5'eV9'eJqdKX)HIFbJ6pQX(YDrY1BLPYmam2Rf1+S(JGF
4dD-#0"&iSFI3T4h`h2"d&0#5)"$9%65JH+6&%IDZ&$)G9U@&fQ(fY,N)1a&cfGi
JN!!8%D!+%`G"5K(*0mfbip%f%iddrF3PipcEDm4fZTCK&*V(Me0BpR5$6R6eZl+
Y$Li"2hHfZd*!(,qC')9d+Tf1,q402DKH19&I@)2-d*ImR-0G,#F-d%(2ZDVQKCB
6%9,@[l3ET100Tj6cq(h+rk-H5'd50&pUJlFZk$h#GC%"CRVM0ADBHT96fbdE0pN
"!@Y+L*ffQ[SLIAmeT`Ir1R9+!9*05B!+G(48fb0L4!H`8D8`Rc&4Rq2`m3mLiAA
V!C8p1R+`23B(H&(FHQ-LNR8X(,NdYk-5B(YJk,B@B[qf8B9kMT!!h02rBq5('%D
2KlTp9%Rk)RMKG5`FGa'FI9R)A6'SQH%`,V[QaR1h`PdYdN!(De(K-),E9"h5b-d
2q-,"YLi&LVIe!ei2CU("-2#Pb!Zj4cVa5TI45A"l0E,,9PeQ%3qI9SI(0ir5I(V
Jj-N`9dfBF%Ne!,V5qZ5B-'Xbhc*qDDFNAL3Q+QZH"dPDGF+(%dih8me3KI+D(#`
KdhPVK5(($jQY5lTmQ%pa)N#dF+Kr@)kRVkf1r#%2(#lNACLq&*m[FaHjMJmkVI,
()[T0FCrNR`Vm,MCB*Zh&&-+AJEq&$3RSmSTh'"%Y,H5NNF`PHR'BIYU6d[)jVbE
$HNR4N8&@8QDr$r*b9Ak&N!$)VGY9j+HVEjS,X(,*r&V5RZ3T*MHNdTfl&*eeH0,
Md5N,Tbq6V4"135B`,,f[HkQbF%IE9A9'S0R#@MI&dK)(@MGidU00q299Z+YBDl@
iR[#eIGc),4q(r+q$(mepKmK44!1RPI`HG`A$GDc*U2mh*qC4ZK6D&%!#+I-8"f*
G)M+Cr!2i!Vj*b*I#*[qkac5q@+HAj1"9EldT&A@kF2iZkMR4(i2%E41p(!lYbhH
D)jEm0fY`H!HCjKahYcUpQRd6V*Tp0cVXZEF@)l[NdeUZm&[ITXL9%AUVp#dL0pP
`5IqCcIk"'(%'(2`'!rA&(2`'!jfrYe@fFlHAV(F2FTJa$jVXrlFZ1XL[*KYDj+@
f$33krA%6YbZ&A+!6,V@8&li+bjS)aM6C!c(%&A[%NZpfd5I!a#q4)Qh`&,N+eDf
"[1HQk4Y%3CeN-a1kh1J29!+5G2'j#r$9Gpc"ViUe@MHdF#K6&b&SU-B5YP(%b*A
jN5@@a8FKHkM"J`D!QM6bI0jpbcVKZ,cbe0idK-KM915SI3%kNM&Mf&V4(mh%"hi
@Lm+C#L%haD$PQ0,mqXdIr!h0(map9MU`ZImk[#ASDhiIZ[,iNh*0A2*mlhd-d4c
GpJfcZp(%25&5S,4%)$A3Sr0Yfi34iG#HjT%6Qmh54LfQqC'CU@iFF"iA1aGh"i3
AmEppYG&m-&CGXSDfX!6)X5'@T&-RJ85X,ZJ62F2SCVRMih`dmZMiHV$0*5!4qZ4
pTeA-`cCQ2Dpp8G'HDeE)"8a1rKJM20IhmQQZ-bE3di[GVS)BGBKIce,NLHqrjQL
@m$R[d!fBa)!1+YM#F+9mhL&BFXfQY-Ke9*BX0r)JJiG@0aNJJb'&IGbrX6TQjAd
4'V+4$MBd!F*h-b-bTKV&S0Sbd[a%RjC00r!J5RS(B"!$*qrl)mBcqC%#RK6YV,4
php&44)Gm83mjq1JP)5SXj$9,T`1j($If)2K*"d$DUN$[UJFHG"`hG5$e4!G!ZkT
kp&DAe1caRqh8rdi4r&+1b[ch0FRIcBUE[)IemM#4pCqBKjIBTb3ALU`8blD%HFL
dmT9cmb,i,`F68Yje3A#idYr8H64Q)T9d`KKEV+Ad!aa5ZEZj[P5Ia5RlR+'Y-4L
XV-[S**R!DX9Q@Y5Hb-*mYrd)kPV8RXJ)kZKPRkpU$Y3QGeKPpA5Ar+9!A(9"hHK
6@`&TYR#iRZ-"bpp6'Hh@S!,C#Z3[Rr`3'm1H3#,$d4LF![p+AA-erD(!H[+l)Cq
U0fBpihhK`ZfTrD'I3,VSCRTN@(6#`rhaR!,r9KDK3%"*!Cp*Pp'QIbEN,r(m9Cb
KI6Rp!U689XJ,N!",Rqad9,A#ICEbfb*A-6Qhq(D+LjGedS28j95r'+!eMV6mZk+
@RRhqmU(&HTdkEPK5$H5EHK-KR)jJ55#KQ$%bb$6b!A&9#mLh"&KhYqpdGlFSb#G
(mTj@PkAXYe8LFlCG#HU!pX@rVMFUX[h,-'e+P"-U[%GpS8SeA5TYF+Y8b*VAik`
2kh'fJ$'&R+%90r+&JNXK&Z3TV9H99L#`1%i(0LYK3KMUr)9139p8iXQHBFPp9G)
FR9&%ql5ELh+18hUUJk#GdZ2NE83E-i1KI`1XYEBJb,BK$,5K'&`HffcMICYiSCR
Se'ST56MCHP+$S!h5iq6ZI(@pbhGQmmrRiaiX82`rK9aeTFZSAU%iSG6E5C!!)Cp
2ck4"1*R8fh+3!#'I6mrlE8kYm2fcX!F6#aqe&0Y@GbANe'i5Rl3f-3XG80ef956
bj(kQQkGd!Z5IVI$QVCEMbcCh!R-Y3&JN8@8"j%#HH2&CX#DTHq3FBjASH8#@eh#
UNI8K5i[i@fCpcbpTKSU6aC!!S'&44U$,-S0p$I+R#m*5kAdb4Rh,mS-LLMS@kAd
5HU%KR%pc-j+Kpb&51RdkHZNKQkbKq95Zj,P%f98T@K0[26+@r'`RA2a"hpGeeEZ
&#edfF)ZU28a!dPVN,N4"CT5K'qKm"j4k59ScQ0+JP41Xk(dETI$jU`X6Eq4-bhC
d39LCM1JUHN#U8mKq(r`@r9aeZFYV09dBRLVU&%#J&1qAA3D&F)@hX'qZ$p@`VEG
DMA-i[N@@iaUK4eeDp8h9R%aE(lmBK&5A[iFj%3M(VLf3!&a8342M%14BI'Kp6r+
$hF8Fr%XKQR0p1Y$*9(Bi!!*!NRT+XTp*YN$3pTEErC!!)TqY38eVkVQYGk0B,lR
Y%e$#HXYh$ceTrMQJFG'X`pIlZCVj8`p8(ThmDqikX`2*lhE6lQZjl!+KbAYB5b6
`VM*)#q3jjIK+5P80B9AiA%THYX@"A%THBEVGLhI13Ee@ZmJ(T4Ia"(fJ#m00UeJ
`0R$PGN`9,pNh9R1DbcY!MAE2jRap"k9p0U9m)IpBicDV%P53!*pd*[+@ald(rpp
e9R-Ua)KpP*fYJefdY9Eed4X2&T8L9[KkaEHDCY+Jj,PfS)FEfk4*+m@Pe#@3!"a
8-Tq,lL(2F+'&k2d888ReJbT5Tk$N"6&e3(2C2BT*QTmUGHLJ)(l5r)Ir!jIFFeC
klr*'X0+Fj,NaG4&cU%6JRIc"k"jhKb(2hD%Fk*hS1#(-HSG2!jhm11MNTEG0@&3
FCXrm`[!28QXdLld#"lT-Afp4AHL1TGr`Hj!!`V`BS%Kfj"N3S&DfRj@8`[K*C3a
PICNd#cV!q"*P`Q8FQAB,II3d&LPB89VS-e08YN!"6Q&pQ63,('riP@8k&abCFI4
pEc35Jaci('@FCAfC023Dp"&0YafTKAUM@%Ch#RfC025Qp*hpSVV6bA#M@$9[4QE
CL,[+ZZFe*EDMcFK!4mG!X-I)faYefE"Va#2`J`,#KF1Q4,BZq-%``Tl(YYX"9''
kJ*q(G51`jVNkq-F`iCiKYVV56U9H!C8$#)[-J+cGfeB2Jl#+,%S)3mqAH6r[&Hp
GV)@fYlD0+VY"VRfKjH`-F-A3e8V*0UGEVZL480K9d6UQ0U#aQ[rcmN5k'rXMpdq
Dj[!HF)SLiDj@kq`UiLB3Z5Cp6(Ui1QMYNR9p92`Slhb)Y&58'(YTq$NL',-`&G&
16X3[58-GiR-,r1h(c`h'()EFVD+#DC!!"d#M+Pq@rAe)ka"`Ma(jaNT)lq39*6'
c%qCZNLF9+AU5-MFdaI,fY-RT'BrDH1pSe![m(Z4*Y*'#Cb,(aS9!f9Jjkd`k+AQ
N#p@@kFpBllRHedTPG5%+#hlEFhd3HP(CTR"*-S&p`X*4V(XGBlT14BTYSY#NN@Q
B55bm"feaGp`A9Mq@L9rkT,"f9X[%LX##Q6@AY$@'q#6ZSSUAJP$E2YT)KTmp31k
,Ja&F!0kqS+++Pi*-a6kplSBE%BMKGq0VbQLZ*d%bMdcr5k"iJp`X`dPh0AJc&Lr
#+JpeJ1NFKS@@("[BL0qd)LS2GB$S()D()8S3e%E51N8,!AjDY`6N6MFfZh0YS*!
!qhHP[QT6UBTfiKVh-RBeUqfKG(i$3P%"*S&h61iQdD8E"Al(R3'd6(1JqN+L%,"
-[f*XDpRL`C8UQXPG#iGqUR9rGlZ'['*YV"#`6iG$r`YrBVXA,p[@KZBprcGLJ`Z
qBLCGeVLl"$-D2`&kChl)j14-jX+lYIPhl!4kqhik)@GhZ`6jLE9G'b"qZjEjdEe
c(-'hjZ6*f,S3kdp+8FY,Db(iHKTq1Q9dDlrTTp*Q#p*La5)JIp&8j+4Q#ljLJ9)
J!5D"DM(a0EYc-`HE8H"BaE@R*J[YBXKU3QEEUc08kRPK0l"hTAcCG[!3bdm81-*
5f&KhPbS3%@Kk2hiFrefPl4E@KedGMrK5S(4qDpRT*YGT)"N!Gd4P-f0SHLaq6hh
`Cq5M%UYa[hV`IVGp%QHKSpd,LIBmJ`YFBXK('8dYqUDl%)cLA%*d#`CL4h4385H
-CLRTpPbbA4#-iND&H("X"#`K[S4k%@,S@QGf+DXc*`l)'eAV)#B!+L"Y%(GS2%+
*%@Q&*!9&'ADhUaXP*E"aYjc"3#T1I''+`Z)D%fKH`Rk%0TJ,mN!KY64i)hTi)AS
d)EFdH&Gkl)TQiT6&SL$bCQC[[iZ*0IS"ElA)H5PM)V*KV%m#NYdYRQEh[f58)!S
JSl9X+0%B,8)E5`YA9$4A*bM-I(qAP-SPj&f6SqA`PB8E1[C`-!K&L5dh@S9aYi&
DS[[hbK`#9MRp-RAN1e#lGSr%0XE2-B%VF2[A,j&cCNPhZkFQ18%8iL&fbI1P)15
IJDkm13(VL&Sj13qp@JA`JBFD($%@QNKkepK8(%NU*6N,-P(r9,pFIGZ#ID,-NUC
kJbRYI2e4XP5Vj2+$91AZR0T*!0jXTea!56b*HQZ$-J0G#mjkd0K!5B-'ZkI-88&
kL1Rp423LHLDX-0V(j)cFPDZV%XjEZEb&@%Ed%Hi+bPD(qUM`a#*B5Xb3!%kKH-&
8-dRBPKaGL-N,"qmAmCKp1cKjPD2MR,qjMlSjlEfdZ#$S"abKKE4m%#L(%%k[rc"
DKl*8*MCic46X1J'A*I1q%0"#@'EmEka@ET%$e!qATb!A%64D')9"rLEldB&Ybb"
*CB%j@$*4'm9k5NCh&M6fJRT%lGeZP8Na+#A9D0d#a9DT+'Ve5BDL&"f&L!&a85B
2r#MfS+ErP3((NFHm,hZcja5YY&f@YBZ&ACj2HYQ9@A!i20HRqN6FDCimUIDA-30
UC#Y#rHM9*NA,@+1Pi66C"I@P@Gdf-+C3h683ThUQ&,mXY"2-Yp(krmG)8-GD%mh
IfPDJ-8#Mj49!56[51'&[[YlD4*f&6Qb9f0ppC8JZCE(SVMhGl,PNT#F4%#'aNeN
p!9hZZF8BNUGS1X@k3MD4%L(-YcT[9TIbKrdkFC!!#Gi"ZhjNJ`aQa#E9+YA4i+0
$$E`$%(M0&,*N2DlTI$mdQ%)NZrkFh(JXi##FYhJX1L$rKQL3!'Yak-0Q$`Z`PPi
"1JYlPPka"`&4&0$Nc,D%iIqR89(3#8$GKmLr"CJEq+$21RN*)P6fN8%'UX8RTcp
*9(9P*JlG$j,9dD`kKr6!Kc#`@%&0%l$2)K-AQ1-LIU"Ie9C5CTB2%!qB`lJ9YK`
Lb+$(&5qPAA,')Y,$!31jZPdDrlVP&!qpj%HfQ,'9PkIA2`r[F)&25N!+5MZQa1h
fA6Ma'S[ZDba2FFUV%+FE!XV*%2R)%20ki1d$5pLi2Aje0eTNrhjedeU3!"cbPr8
aUZdLF&Cb-M+d@JHRF"+@ZF)k1P)[PSI"YFDR*RM'DpBEhdTQ1#TYk!TcJdbl9&C
"-V@dI1LR)B4"FkYeV8q$b[p8N!""9"a"rl"(Z8!%9(aF'DF#qN"iaH0R6N!Zq%T
C,P*c2bNk*`'8bfM&*40+TCdQp*h9a)M019489R+&00bqqIap#qr&k,G!6I8KjQE
&I5R[0dH5Tm`'K$m6iq4NQRdF(h9pj1rTLhhNlTUbqU`a4293RCCBQH`0B$K3B"I
-V#dp#2BL(+&3-Zj2H@Z,h&amP(S+-$h9Ze%3Lac81FqCkP'jc3@!ldP`Y6L5KcC
S$+F9Kj6B9!2`P$Cp+)`eMN%H!pq8bm6f%L0I@k0mj%##'R[Sc6GGSG2kRP!349p
3m&4P-YKhD&9cDPC0+2qA2TC@ZRNa0jX&mqmN`CfXF!a-bAH3!'G3i`QIqp+r8+H
bKNXdVj+'Zc2-%4!SI)p4Ze3e#qj`V*!!RAH$Pb,&"rBdeM&9#b'4JF@bPcCS5ke
Ti@Vf"aJ#2-',)*Cc0GjU6mZq5K%3VfC3lemFZH-#,&DAZcffdfQRr&EJNcT*Z(Z
i5lAa,$"$4)rEC8Hqj9Va,Vl0G&$YX!HBCM!LX1Qk1[a`qE1kV4Y+H[QhhPl&0pI
qp)Z$Cmrm3(2pDl,$3'0hYa)SlIa#i$2#542$U!%LidXpiH1$i-F3Ul8S%IG1&be
`+,a`Yc3,9fRI-EDDLp!-NlXMY20!cN#LSQTVcNYKND'SmV+J3!115F'Rl[X1F#3
Y+K4h$c,#`VCRZm,mDii4r$P+)F*Q2F1ImS1kbdG4F`9&($9+h1MEP$)k[JCkfe-
hR`AcF'C,XVV2h3p*q6ihG`@@F0[A-JZb%cCQ!APII!@m&R4)6T(,HH@jLl81C+Q
$R+ar4!eck#b03cUBZC!!lXIr6+%l1*TRJaA`E!@rH+YeM3*-lbDq1%H%(mYA1q!
$TQq[CKImI,iDAp[+X3@qp&q1ZIjMB8SN*RG[NlX&`lb*0BDX0Me3!pY[G*5jB3-
+Eem5l$4XUY`Y@A(J9kjqKf!lT+a2H,(kN!$PYk8dH)TqQ&SdGY,S)iI,m"Mf$lG
S[mq$Zc1821$I#MSR)6bl%@b$I"AMTl*M#VZ[E#VJ-`URGk(I'T2m`Z"C#L!$keM
b!bQ63&LhhU(&r-A&+X1I@JbX3iUr)PUl#P`*[MUl,mkQ[PAk1-k9Qd6HLM$fcNh
'I&Sa)H[)qST`"0HR1P&`F#60rPP$*F1h4#k5lEG3`"(m"Hd4r*rY"H1X1!qA1M%
28Zl&al'jrccRcrbSF$UkGm#qU#licraii[re@`Am"4+@r-aQDP9i@0H'L3!)2r!
!k5B`6Frk-d0dlD2`U2!G1irP0Sr`X$Yqhqh)85Z"2cV5DKU2m(9@CURrUQcM*41
AP-L4r5cG9R+I)PE(kIm2(Ai`YqDJb,Dmr#qJM6@"4*!![jTNk,EHX5Dh,L&mYX%
Lc10-N!!UZJjcYB@SFI"#9RSLQ',h8Eqa)R3kbDk`@(i6I-K4+`"c$"T2M`)A2Zk
j%b+`YefQGk0SH1M4JFY1bC+RcQGp5fdQ"mMRc%ae1AE,YLhfk0p,J$(9FjQ'lE9
kXFdjTFp!4SBpIVbQX"-kRYaHr%lDVM3(*VE0D`Y-&[XX1Um(IES"3)G")+M'`LV
$CUHjQ['ed&mC!m56"c5U,Jp'Qhc5@L2"U@R+lY`QN!!NiLdeJ68N!J%e*NY6Ud6
ha,Ji5jmJCVCh)!AM[EX(ad,3Yafl%k!qfDcM-[QjadlbKrM%1VH9bF5MJB)i[Ce
`Hh1q0$3fc4YdD$%9lb+I3BTcpS4%B2`Yi@#B`4N5ma#F0UYrckIb`k+LDl8qTHf
hp%l2r&3J$hZ"32aD)-ri9,m28M4hYQZF8IAdiNl2($$VCH5RTX-QNJC`BlNk"T@
3!-lN(-#`C5hfp-*k*eSYNNCV(NV)N`G`lMHR&+RmKj)$Ppa0NB0`HJm@S8kJRqc
'T4piMKac`kQ(dY&Fqp1G,[p3@GXkdA19P&3@P2eB9*,90U`XNCdeXbEF@4-$Q6-
[bBr[rrA*'VH`j-QfJhhSS2+i,jH2F!F5Mm@fp43r`e`i6V8F-$i`hE*amjb51a[
-@HkHZ8GpF,(bMAKT1*b@'0i`Z$bEDjZK2PE*l4`(pA1E'&hF0%#RjUB(Ym*B9VV
b%D"9qPDDD`HhbF!LipEiicB3*(8j9P6m,Hd4ic@5c-FT2EGfrPDAXXqJ([p@+Yr
-B*k3!,0KbRG'@+FpJ#3F'AA)38%FC0R@YL[&*59b-A,4LqUFd[jL"aaU#L6'35'
Uc8kQrZ5I0[QJJRiX3QH!Gf,rZZddp"dU)BGiQG0K0,fRJ&YYB*8Q&MiA$X3dUK`
pZ`QF8$&icr$"M,"Bp(%&Z*rU"[DN1YeQPPaJ*H%jE`&QT0lG!-8E55@)(-Tq[-S
P8F)Kr)1E)rl+*Il0*500bL2qh#@-`Q'9b0Q94GPKI5,(b!(0["`Z9jdU4E2Nc36
+4E-)cDl,ai(-$dlqh2akU,IP&$#JE$T`leI&YMSS9VV(KjdGS2ZKm6SkH*R6BCL
&bH2,dlrGV(H"Y-60!f&%,DRiT"mK01lFH*!!SC*N$LJdpUiPTq9f92"@*Cc3-Np
@*Cc3b[qrF+F+@fL'(kIC@aEh(rqcV4EP+clS+khSjDdqj5Ybk#ZY1ZACdB4"Tfj
EXIIi"l2THDbJeSGCU0-EF0N+EcDX[A!Q%!14-j*[1[9!)(2fU3[ap0iYUU8e*@,
)+%DNKji[A-P4+#mN(E80dc$K*h$qAE[r9M5(*,Ijk8(35M#'*UdqLaT%dP1cZFf
MC3r(56%2Hafl$lep!VB5I+IM!9d&ZR40N5TEEjfUa3VqbTM909+[rcBV'0+qkM+
l1&AAf8$"F'Q8j,#0Jc"dMU+3!1mDDSXq!QEYp'J0+cU&b,'$#"83e6pFb1XB3)1
bIRQcej3J-LVmGDGFXi58))-KZ2kdXV06P#$r(q-NX,NU43q1RFAG$*(KfpZh55+
RFie3L$NK6-JES0lYr,`K8*U3!2bmPP!8lBV$5[JSK[8ib,8[bZ8,"F0JZ`Qefam
8eV@4eKq4&%#e@1EqqfKT'Ue(bUh[(aT5Y&1c8)HcT)IJh6eSi+HfXe+(E8p32pC
6NF)36(QL-BAbX#QrcHZ1'fifm-'eQ+D&YK5ESCX`j-dRSk(iZ0'06'##XZX4TmL
Q)a)NUK`Xl,3IXak(EC*3imh3)V2PKe1El(dZ)L,33(#ES)Hp[-q4%#Yi+RrRNIY
&Gqf9I!h@Tpd8bAR%")i&I+11d0Y9*eJk@01['9BhKFq"2NcaVCD1eU,GCVPj[Fj
#$q68i6P2d"f&G$MV1RbRqPU5!X,Ti8"DG4[bN3RrZX-[f%&j[EF2+30aflTCaL'
4T!@`a&iB(28PdU#cR3G6*kDYHj8Dl5pm(IEljTMlI$ee34Lp-&eh%pB19KDiFZN
d$`0&MJ,)%r`05IRHDA1h#GQEfL,)r%mb!l!K8`mZi41f$,FfSZM"3`m[S1D$qhJ
Zi#JGi2[6%1%5eCa6b5TXXreXhrVCek)VqQS!H6XH(k(hbP2k[#rHjNrkei1q62$
hE,h&*2k2+r0PcL'rLId"1N(`aUck'NGKlXBBq["kVDDZC8V'Q2TZEmQeUE4KXjq
FKQ2QD*'U'!VqN!"KlAAJr,VZ[cT%10iN`0)!8mh+QSR@&F[3pUiZR4!d5jT)CE6
%k[rlY&L+[hYiQdU3!!AiGR'X&PCfSPi(F1-!*!9*cIpab%C+6,hqT$'24`rh%8@
Rkf18Q!,l"534U6J@rqh0TR1"XPJam9AAp0`rX9M)@2Pm*6NjGM%6P3mb0f2p2qd
l2Bl4iG,qJB4M,rU`QhK`TT&Q[p#8Y2$CeXfTUBmbU2Rc,%Ie8llqYQ!m2$,KFAS
*NUbl#BXda1H95`&SA0-Qi8)YCN*T!b838p"G4chY2'T&Kj*i$PfRbSNrIQBX-UB
'aIa*3-p!(X9$5A02V@DTkC2hY%+CURI)YVbDq&IpfUrXTefc8bjrdIRaFYL4pd5
4p9k24E2j,J6Y$hYEH-,mHDH5TCqclTJ2a8k+c2I4"h-dYEJ28G!q5@D&K9TaN!$
Q3J,NAEjDK,@(0dqbSm)16IX3%e5id%$)'XNpk$aGM`*dp&+[Nm365Jc3LH+THE1
EQ%0Vq3QZcHGDAcLkN!"!Kb#6Tp*qd39I)86PfQPHYMNdFCd##)-aq%J"0(jISrr
c%rIFbC4cJMhM[6NVV40+$"Z*V!Tjb&(UY98(&8q2S"ApLKmd&)Am$r`BIKF*D6J
-,rRm33HfNRF6iJc%'k2l$E`65I'm$jI%b6E@bL(qPmULVim444I1NBEheJDqBL$
6Fa1fQGQR!3Iq(4+b%bE%SrR"YU0Z+**&LQr3KKI@VVj6hDE%jK*I5a12Clb8$$1
84mbm`HB(XNf`Q,b2(e1+$i0c%92@8,l@-Vj6QcfYhJ,KKKL1rLNII'krQ!BiK4-
XH'0q%,q&q%%+-6r(Rl`,Bap[%aUfFf"0NYc$4R!4@*`#QK!(0afki%P*"r@i%Im
UIr[19*EheUCHTr)(Pala4la`PA8iS)a0Me4&89RMdJfh8c,QE(Q(`!ra'VcFm6a
XqaU1h2%m3r[ac(95b$+6`q#X@X3Se1hLdI*k5f'a"mecYU`6KDBb%U*6LMSK(*G
U@Q-dh`M"l6LGh`K@`HdNL8H4I)i*T1LSjKYj$%'8T$AJh22"@4lYP+6%LYa&`9P
5rf5eb*ZmJrP[I(!GpZLfpFa6YqCS$iIX&!rc'((Kk*F,NMQ8FlcrF,&dZ6`VV&T
+MT4cK2p`X5qja[HRNXk$H3U`)NUaF,Q%b)fm-b+lqRT"2)1X4#k$E#'V6R`BUD2
C@'YJlSh#N!!)%Th2@#9A)"l-k'4l`M$f((k&j5Dd8p'-K3AS,#!Sd#ThHIrYGUP
))X8ll*E&#PM-aK1Rm9-i&Qpda`5&Z6'Bk)4'NG'A%'48rc`lV&JcDcU"[m@qd-b
"V,[E+U31DCEBrd+H%aem$c4C&X@aX,P!(Z1RFfT5qq'!rcX[crrZS*E'eTm+`"E
&X@qj9ZUC"c`h,m92amqF8ak3!2G1i3a%1Z0J+#lD+LB1*c,+,,Xae3l#*(!Ukkl
+a@b*Q'hRKcHS,Y*%Va1&p'N#8LBCJ'!lp-[43b2kJIAr,rTmUFBfaBaNM1Sch#q
-aJh&-q'dkTGmr*Jlppc#jdQRFjiL9V%kc,SQmkeQF,RVl2bR1acFJ@6r1Z'S"a#
93&JmRbbiFa!Xcr2b5'N0)JiS6'#q)-`bX6(+m5c[Lj&2T&r&BCa*@%4-IlRSpT[
&CDR+Hm*)!PVh'k2hH%")%Ddl+PJN81d'`39@(C(+0QPjFJ(YYl-*8NTNb,Y,d[1
c$9)H,lQdd`C3RhI!rXr8Cm*3Y2'QT@E'pkV*3h)J,84rLMcmQcC`ph1+[aU84$i
0bY(EHX0)pdkdN!$[L+@EFN30P3iE%cpi)*@ab)r-C!T"-G&rJc`)RiBY&R8ljLr
[[rbhRY1)J8p58IU*ch#iS$,'h+Sd529pJlY*jT!!"%C[SDdl,brAZ(YMLCVSEj5
Z9Bp!&*daV$45Q@QGB*UiB2BfREBK"bdL!QUJ(dZC'hcHeNdqDq)pl%N-6pA)22k
dma9mcraR6i65HRQk9CYdk'R2e01SK#akHHe9M)J5cmG,DPDcT5MHA8a9XkBSeQX
5d4#eAGcaND*RXdb-DV@,lGDchLKl-6elXcmS(mX"*QZ#DEkq#a$ph"H3!2["HQ-
[F2GH`E8k!c+ZhFAf&3AYilNfCF$Sl9DA`Y[q(kY$P$525ZdVXe!!pdHRJi#hDdJ
3r)G2cjHXHPCG$!p3hkQqq-QhSbMXX[rSYZArk,CaM(c$6prXiEjh93-U2hB,1"#
HCRJ2ijrH5E)U(R8Q(Np(DhH5@Cd"mU)(D)8T+!DS$fCR*(bdieLEZE[6['`K,*0
FCN9J#YmL)Bce[6Um#QHk&$(@Yie9CPUekZB3plqipcU`-F)EHH"rTrN$GZKB(M'
N5+'5(!E'LR`pP!Bib(`pP(P22DI'T`4VGRp1c(T*Jk&2(*XNpMP,"ip6MihlC-6
T2$#EZ,&#BN"ISmpj+9C@#dI3A!Tbh$`k1+["crq8,lK,1q'(8a-J"+@1['@V,,V
5pdjP'V,qm6`XK"VhrQ8m2S6a4S@A5cIE"`*9kVmP8G@"Mlh&'JJ0!rTTf`)HC2X
mrLq`'H8T%N49Z&MEC#`LA'Pb05+Nb60kD54LXQh'P#eSE`eP1q"T*,LbEFBr,FN
8YBAlDaM8aE'l9ei`ChC,q!*jq0@+bb"aTUAUaM`Y#XlkMrTT8dj%R-!mD#q'K1%
cC0%6Ah4Mp$[UDFEZ,HS+LR5H#2`j[dj%iM'2MhSN+C6D!+'5(+Df)$(f'F)b2%X
2!Y26lS(cUJbYd(#if&!,V%d"*VPp9(Vr,H510jAlcC5'H$&UcDH'H(&UX-@[I#P
D%rdCa4T9F@1C2)%[0Nml-i%eiE8#+H1KX9'i!RGbG*%iHjM5"*eQ-HUrMPQM4C5
T(Z'++JXrB$DB$F#U5!pf$-#e-!@)K`r`ApCU3bCNC#$'A2I"3l2jbljNNFEHMN4
$QM9@%`)-"@ac$3dIqYpPV)*K"B(E3l!C*68m+pIfZ1#@M#UqaNiYl[G5dQMfi#!
l$mXX@Z$JTc[3dY2&VVbii,fa,M!kB!023#N`9R5Z`&dJF*!!jCBd6%@6k$*Vdp"
!-D0$XZL-G$8NIQAKc`%RGpUCXbJe(40SXbc"qaP2b,'`*L`GIJFmBRI'5c%p&DZ
3!)'0h4T)I0+a[#E54All2)4!J9VG"66qXe[bhQ3bb$$j%i"mrVGKk(A!Me2M((G
mqXNfaM%aJ9pFqrm!#BqIdX)LR+hi[(C2!5,`jKYd5QB&q$BE#Je5bF'PC(DPSeM
"#+(SAfX-2b6D0X)FBf5h0BI'K[HP@El51d,L1ZQ3!!@"CiQXXFTPJH+*"CCFc&T
,dLp8*NL(iBSjdi2*d&LIpVDrd"P!UJSla1,#bNGfFrRJrRL4PkFfF2A*$1$%1qP
2UK$`mQGf@#D-k(Nf)R&rjY9aN!$QXA'3!(i2P`a,rR1+dV'j-$cK0IDNG#N!88I
"I2)kUa2Ma6`*0AK#,+1!ZAJ,2&"f$9Ejr"Ci@"b')JFm124@E5,SFI0fHGc$E9*
V%5SHqA0-IlJB*d!BbM1&UJIdH8qQa*JE%r,&&'(516aBRBA@UZ*6TRfkMNN(%qB
)+SE9ehCN0-MlMcie$IQA)&DF`RJmVc9c$GFINJ8kiq9V1qMJ3(!ikb!`dZ'TG@f
Z-$Jr)03Rla+1b!!j5Y51ZKLGRrNadKRJC4N[CG,bb,(N%b(*r0I%X4ADQprJe$`
&03$TiRAKm"%YMd2c8SIj+lje!$RLGrpm,GE0iZ"[,p*S+ZRN0Ak"Mql'Qi$r6,)
i+B&ik[iH@1Kl[8!UNRjh$aa(%$BdcmFdEZCh+[C5qLSPm5I8MZ,UGb4j+K4S+5M
hH(-HIPj$DK(,1B6qRqNM1fi"dB*La3#ei[!F#!NB65c'86&k-!q$,YXk[&Gf,2T
0*Zd[Gaf6)BDE#hC$+mK,UB()CpS!jBGTTXr'N!"Ph$%TLXVGr`mDQ'@TqP&TVNq
pN!$Q%DR#eQql),dcSpdP9*m),$#*NJIMC6L@H1C@CEKU`a`3ZHr#DN&VaR4PFmT
6GX%!8a$kmc"!!E!TETjiTp*1-eJ`q[CjTe`Da946QR`Lm1B@#0%dcEK!*cD!90#
X4QU!HLH4mIZCTk[dm-Pc39-9Rlli12"frT`h8MY+!3"DN!"e5"qQ4Yq'%[VFMbF
(iN(&c"h2prf1)+CU,&jRqS5pe6T6bGb+8YP@A4p80c!m3c9i068T!+Q3!2pR6KS
k1p,5aVKPlR68J6l5c"BBkr[KIM)R-"B9HaBbleUTN!!,a[,$98SCZiCKlYZ!ijU
G8KaQLe`)2Sp9#(G,TFSihfc&DZKTTMZ[!9)(4`&i"jHeV(d-2*Se`#,"K3KTY)+
E"B(%N!#@HJPb!%@3!-Jaa2%'br`XX6-`aUCP29NS!DQebF8lfY,'@@8pU46p-JI
$9[T9--P@dCNQ6Z2K4)rIL&5TlYCeN!#ZMVeTiiIXGS9c+"C4HmSbX#PLa59`flX
9*'pPli!b*iFjiU3-I)02UIif"CFqK($BD8cSeNm6kF!cTQS1FjNe1'c53'EmY`1
TSF9)(Rrf@)d9dem-@Kl,*Q0MUPI4+A-q8eV-i4-Q!*f3!!TCFfVk,GUL6c%m2!X
e!"@3!)%"&2[8Gj@Kb%LpVh9e@3C3M3j"XJD8b#-KbV+BD`k[*Pd92E-Nk!+a4(D
$%h$6mM2*K%fPi3"d5a"G6a&hPI2)(J0%B[b8jUdZk'EX19ei6cNhDc[M!@)Qf0I
'cM!EqIa&jl19,@XG923QSHh0e&&l2U6Pp(Ilm3)dmSa`mJ%,'DDSbLD[L"XSMjD
p"m4SA@$'1M"@pqI2'SU`0MZk!@`a"`pf!dp5m&YNa5UdMIr(,&5%XNif@p(8A@6
)%)Bc6ZUPYmLAJbq%0qJmSmM*jddaV,QLChYd2F)"f&Lrj$@b(TK"j,)r(VP),J"
[QfhiIBI!M4#Ck5EV@FBb-"Y[q0e'(jjfGZhe4PQHh6Ye!F(GjR8J6[)Q%+9A0A!
"Rl@)"XCU,3DRb#0jqIK)*Z4h9`C6TX1r3FEF-(G[LfYScjl6fXK#KJE@AChT4pT
V'J5HGcXYlE$Sk-3I!GCfDc9+*X2**`Y9'3%hq94PXk),5f3"G,&hCU5d0E1U0Zl
kpADN(T2d2-E)!)X#rfpTcaScAl6klhBpB,S)ZcJr)!l0@$@EKi%Yblh6X0e9ED`
MHh4FJf'QC+Xr39HefGX5Aa,a$&Ec5Bca,LCUqPSjDFBU-(GCMGeUp&q2XC0faMd
`'d$q[@H9mBBH0Y[klhDNI-h@aCe%3m9dqiq4mf`p!bSL!mEf-!`c%E[TBm8!B0)
D5#dpqYRD%JVKSFCe-#He!5SULY,''Tb-Ep&*mY*H+&(VY-3j)%BY6Y#5d(T9B$"
h*)Li#!m31&iQ@KVk8YUE(P-S2"V)!$[5G&P#!3VaC9Ekec!-I(2@[G)D4fA5V%C
1"!F`HMpCB9ED9eE659de3T3',$UL#'Q8PPLLipX@9K-Bq5%3aHcHN!!h2(()`&"
UH3!jdQKCC6dlk3%HdQ8'aP-`KY2)AV(cfT[005JmN!$)!%E5G9R*TNBD-(kpejA
qTcV626aSSH5QBZ+K25J3e%RiY61G9%cBq+(Ki-[jI)5@f$mNH4IlHqm$[eJ5Sd-
[TI2F3U-*[ZU1hG5XRqTiL[U@81Sk"aI-@1f2D'm`cc[%!GN`RX5dd[ilc!%B6be
j3@A5Y18`2G3ffYp`b!8miXL'E-MEX@*fNEIE!mBb-+Upf*q@+SiS6a@H`FU`5(5
!E@Ab5hj+EU[6c$%di1#)9#mPfFJNR#`8J6a3b""#,*HQ3`R#!$M5*Q5l#cXP!AH
i-5A'1$#eHYrNdMK-KrX6KYS%[QSP-!A5*aYRbIq-Gm9j#qLe%MSkbC,)fE&qf($
)rIkM9DE'6MNqNQhMFd(4Ic$5!p+AFLX+mQc)UQS$'lQ5il6pPU`C*d,aY+pk(YY
h',h)HBBKIai"39p#a8JI24V)95rk10TeF-JMiX6qJIP#DQpQTKQ"%62f)2ml-lX
mGRHjl8kc43ZmDm3S(6)ajl@KT4ZebpjkePG,bhT-Imd,YYEISLU[4-CI%JZ-NeT
i#`T+F%CN+4+[ZL@%%!+*f+Ah1U89CkBJb3d,mH%JmDF$NG01)P3QYR&jk,Bq8MM
M6l&qGU4mNYCe3[&$m(6lYL`&2*6)d9-"[%4,NE&iGXDZ*J25aZM1"8`GMAkIN9*
XX*j'iR"BVqB"%*!!'86SScm9VS-"pQ#-C60216(Qk%r#dR0i9b+Ak+3J0&P,r$X
pTZrrEpB8),"CMmX+Z%Z4XC*fQK0l%B`KlB'V3M4(-m[kCGU3!"1UaX9@Pjid`c9
N)(5`lirC1qJ"aJSQ0bf23BB9Z&hk)(E'YbBhe6NJb45i1E%"fR@3!$K3!E[b#+J
k`q)`2jkYV'lM4J%RX"F9QKF"jZhDm$8Sm18SfZA4#B8F%Q"iFbT8iMr2HSI%iS%
"21bYMr[)(ch3Xm'iG2VYGMb4b+hKbe3!1N*S`2&VErQh`i2%e414dr34!"Ql`V6
ZZJV1)2bTbd5pqPVBaUijZY@B@'P"fqBU*[66"F2*3YXQC+`,1iF"Ga6p9$ZrJ1P
h5P5jB#@U9Ir&#'2Djm9'SDdkDDiFF#S-Q(19q$4$!Jr'0'`dl#cU02FkF1(30CA
'-$Q'dpXbX9(B,0pfc6c"%4l*2pBRZrXC,h@IMp#-MY*b*XEXR(3S1b#QaNijrII
lr$4-bbMKc-A`iRcq)!iBrLq%h5Ki(DdVSEeQDTVIhHLb`SJdQq!&3$pJKc!d[Pr
-9QTff-Bp1C8-4$+'epY@qQEB2!34c,NiX`Ghi,(cf%$4mK`m%a%!kHfp@A04#Zi
arQq9mK&h!lcD-G2aD66$e9f"I$pc$I#aC0MfHe0JVCTY(il-TahDm'3(JBH'c,J
c'+BBFfhN[[,!I6)ji96UY%3$'Z&Gmj2qBdDfQ&1&k*5IrNAha8mm9%c8Dar,mN$
q1dkQI%"*P#Fi'C0dePPh!XqhP"@"A)lX[ip*%FNHGp$kEm419Kb8[djiU-Z`eIJ
QAVE+4hU)ccPfMi+@JGq$681Z&$%TZTTEi2kSh91Z%!C9!1U$6J5AN!$8bh-N!mH
b2EmpE'D%"5eV!J@P2*QHDa,p%6BK5*GjCBTbZd@iP*GJa8cUiGbNRcPQ2jh-%%e
GcSAQ1h!(T5"cU4DJ)12)39U00kI2HacKc(GcDPXVU%a*N!$,BJM3BDbf'ZNKiQ2
hS8*-*,4SAS%p&qrN((9IbSD'r34fFe6dEYJ[555[9j!!254c,2eG5FcH%'Zf11%
FP81QQJ!![3'BZ`Rk!4HS3l[LTpmBT1UJ`YMkkFj(aRT88i`PP1T2hHq0[PNjI%Q
5#+h-QBhp@6Gm9933rLdqc&&`1&"61LdAP%!8pZ$)Cp+q-DY,()rCQlF)c"`qpk3
NMGPC#BrFe`5%@HP`8qIHLL+`&DM9Hb%2k%+q-%iZ@-`KZ+HReG96@YQQANBbG%1
#Zj5$Y-M[M9Qd248"@E0%bfDkU!4*@E4p&8G%1FX#+E#1%8Gak)-c"Fe2+PE",4Q
qXcrj8&V'dXlcj2Ib-c*Q#4"([NYhbhKC)Da*-L@221eEc&-%Uk'962NV,jB35fe
`NicU"KY0-VdCYZdE9NYHX69(fham"km*J0JdGAB*lC+9LFcF849QT5&3#Cd*Gld
(VYJ8HBq$ZQ6&IBr)YV`F83'q&j9+UTYZT,K4)0AN3RQ)[@8%1M*!6e(#VKPeHGC
1BQ5ZJBmF'9U8E&984m$'SE$B8BkbBRRj6MR[*04j6Nkalp,8198NCJeK"a[jhmU
$8-9p9KM#QMrm@E$-"`a'MXai*-A9+Pjj6Nlj@BE"h%+e"eQ3!-aHVcLEQM5CRff
e2C3SPGchYF&C2-aiK1,528frTp8IAYL(P4B0b%Hj6,p(+0KfX#S,bXf+FYaBEDm
LlU'+-Ul&i0&ae$`#XLBYM'qr5fUk"&9JB(*RKqJGr3#4[f(A--+Kfa9PmV#&RTK
QFmPJSlb(5HjpT*04+J!J!HLBb!r23Re19DaXGRM2d6KQQUd&GA[44-UXH-ma1-Q
Kcd)!JNl&@@BpTAJ8,l&h1D'4Zkq$-ENmF(F!*ped5MTfKRB,'NGQdN1Rb$$DEJ%
lCd+lqHr![TcF)'rRD@VTlc1KF8+Q4D6"UN+eV-Y[H069!lJdaI0NLpG2N!"8"$T
(DP6$")'bUM99MR8L03T@[bTfIZKCCRj4B#+$*RANHNQQ-d"SIHclF1%+9+kPQl8
pCEEC[ZS-KAV3R'9Y`'flZ3M,X!iSblpdm!L-Mh!JklVQq[4QNGbb&-D,5bc[Ee`
le#$bqElSJ6QN,19[A$X%)2)l[ZL"iU3[P)3KZi+6rV+HF*m'LYZX5f+aIB&,KTZ
SNH"C4+IApk"c3kLdqLX$f$fXijXD6iEZU)m#SENaYIrjUfHm(4194mp"E@Q#rGU
$jC!!BYXQDDlIfT!!jTjU0*ddaQp3B+$5*4NkVqc'+NZX@@+('QK*h3E#`M2jJS-
iq4bjdGh9QUNGijRe(4NK*B1NeD$PeapP[A+BD!'F04+BL3&FYj%T+D)`iVp'%dh
,#E('NXNVJ8L83VeXYml*21+-kHG[C#eHLL$pjKRa1)L8fK*&C!b*#H-iP*P*P@3
,9cPd#hUXa!qYR9VY`5Dl!FM,Ga!3!EZ-EfD@U9UU+ElUa3U80*BH@K1(N!!IMcM
P3&bMGQ[H#2*'"lGjRr3%9#[b9qh%)FNAphIDRhEqKX*qM,dLG%#TKC4qN!#EAk@
mV"-ahG83'#j*h5[R@&JmK%lXTpmUI-*8+b`55YI-1,GmYG$+Y#,3`NcCb@#*CDG
4#ejRf0$SjU'c+SC5la4*(K'2bRE4ZB)T!6%1d[2)ER-Xk1Vc"e!f"0He3S4+m#'
[KP*eDjBi-MC3[Gi6Kd(LDF#6C+a+U1dUP3TIpQ+2JkNmr5aSSYp-Uf%p"LZCa9+
6AG``Lde-2HU6LI5KZG&INeJU%ABh0Sd&-S&[lj(Bk,6D9-@4GHL5NGJU(jM,+H`
!iI#LEJFNQ1(FB3p!YD+bFjM0YY``$q%hh,cjB9D$aGV055a+N9J*EVG!"m(BUB8
e4lZpDYS'Ufm+0$@i-q5Hk*ADC1!cP""lC3c&9`%F+QQB`V8UBh2CKj)UKTJFH'@
LRj%&pLc)N6,-4*MGQBGNh-X289kEllhBYH9d$mcKZ8Ha4rqA'5h&XF!0cpaH6N4
PC`(FDNAA6-cP0&(@52mf"NHlkBfI8+l%fGR4SiC5!GP-b-4fS-KA80r%f@kiSiC
c!6&UrZ`UcDDC12(3D+A)dM#YhP0KfLfqRrk3!'j1%QPa)&0-U-33`cR8lLYe31c
rpEZ@0%B2TpBU*0E86!VQ8VjTCa+rBV5mDHA`Kk8-%+jAJ#S`eRK-DKfRP%6`TCp
Y,ZLS9ai&THH'6MqDN!$X$p9-8,Bb&ijrY1)(Sj!!"!rIYG`1Ffm(AD9N2GQ3!&d
26Hl*$[+F%9f3!(-2GV84Tj!!&JqD[$2m-+-4Pe-59[5B+$USl(BFT2Cd@0b&)8!
(&[md"Gpi[m$G)VP+)ST@b-@r+8"i9N6&rLREH%pK3#Ar-Irk!dR0F,ak-5)+)Q!
(Srm)9X5UqjKLmTfrL#&dHh@+"l"5p`pKRdpa$Ye8P+(N9XbU1#NdN6MYIpaiULJ
TcC'i`l8E2GQ-8mYq%X'BPLpdL5#'[Rcl)*caD9D&CR`&E*(-+2SjZr93ISHqqr,
D@GaiML5h4LphS)(E14H8l4'G1`X(U1&m"6b424MkCJ05KdqCBA'dpZ'C9Vb1631
aKp$S`3[L`CP@-)kD!`1(T,)p)Fc`LUe@TBkqYdd[`5a`ZrRpAJ8(NX("Q,X[MXd
UbqGT@abCPQ#9CaX1"pIX,2r4l2X(NZb2G`#cmTL'6QZfp*A3*N(r')XFb`1-G,a
#c$&C[%m$41@iqp(Ah4rX)(KrM[!L&AFCPDp!bka`1ECqqNik1AQiq"SiN!$T*RH
MdBGC0fPi@+$#3VN+!Cf2j)*8qPDQ15QKV0,8kLqYc*Dr2RRG#qB,de11V+Sq-F+
rHke4GMZ6*K2T2!ZM'2+mBmpZ*!C-A#rq3jEJ+(KqU8#m%UP!q`*c92M,I&CeCX9
-01ETeajdib&(F!Uj&m8pFcHBCQR0k6&mDeS[hq5cT8"a,p#)RX8P,fGBLMQ3!(a
)aAH!%pd4KF[Y$qm,-9(4KRVBl@"d8mqjJJZR$lrT$'B"a[UM-!M"aV8*'*@*+3&
@dZ`Pd)JNaC3[+*-3DN2IY['ir3Ym$m3jQHcS2V[+[#88L-h&d)9aBTSk#E1LPTP
!*V[X2C5*#qdK)6'Xh&e6VIIm%53*,)4$)3q91BV0)(SFPF)8raAY'!mi#jRXS)F
LJX5kaQd&KTILE!@'-1"1$rjmU,FTmPU42%YQ!`5Ab,!e()63JMMX$qPX-HcXq6+
mR!SB3[Id9QT2@TLCmY(&#qiE)r+AHS*RKQp@l'c#l+hjaA&ahG`X2RG)9QZAJZ$
MQ,CiX#c`"DHAA2T@$-5)"e,%V@Y%(Gqh&(h0ImpGi2K!%46%1f4df@iIZDIjYq#
&1*K0',J*&(h-fFRiL608Lha&L1hFrT0kS'C0V,*d4*C4qGZRA&hp,[Gij-h3rR`
*9,d0beDIa+d(a+hq9PF8HM'#[11Bd(UaKrMqXkKf269$rPp2#,FSmL3Q"*d8$iK
ir"[,jG5La2ilQk"'bh3iIY%2RR`8ZiekjQ*6r!r3-e[r,SAKLf5YPIaTfb*[Uqe
@Y%m,-E@CAA%Mb0PITB6(a+593j32bdmr$djmhmf0DmdQ[%bBJYQCH+10*%(rh%0
-qe,Tl3H0JlLh`eM0*ScNLGQdq!QCk6E`h!R16!91SN!pR[ec$r`F,VZ&)A%MRpR
FS!3IUm8*cNc-Ek,(Fk@$JdaEI9TFIhjGi1A#H43*L%-,f@jS#mq$lbSM3DM)YFF
kE9h[,[H&!b)*,)61213*[N6fNCNcjNBqk%@3!(Yh6*XZpjT8E)A%+j-d0rl"R99
'ae0SN!#A8%VZ1"U#-*QB&rBSU"-*rMZK!dYalbVS6%[f#[`kEGRXq)NTrN`SC)A
E,RV8qk!D`@R$N!#F+Pf8&hXHiSZDBj6$'Rm1akVFdbZ-F-FDHJjpBValV8e)Fmj
#T3R4'C9IX84Z2IdS!L&rSXeeJ52l9M5c`'CLq9UGcrCQmTX9!qrYpmRq3Y2j"M8
Ar`c%rA5I4BP)3#A@1fA3TE-8fA2KG'Re'0CQ50BGG('`-K5%p6&qI+YKU(6SN!"
eEdc"Ek+Pj0X1G8hQ!C)kY0hP0h1Y&-FrX`ACPI1h4'@e@XrH6AIdZqQYremq5i`
,DYj2`S9fbiTUrN6,b4XQlhTda+G'Q4$qCNCQV4l@feNB(@Y0YijZcIdErcQJ,p8
2Y#id"$%Xl(6"YQZLjm@UJ[8!0(emJM3!0$*Q+$jkTHM9Mfa%k)%NrQc)9-XdIA9
!bPp`d94a6&M@iIfYZU"Q@F3G'!"-0@lKrF6pS1M2QG[")j!!,lFHh&!hTqNUpL3
ea@,8k85-E&KXk1L2pa"i+LaRcR0!T8#DMAV@P[lmJ`hZC`hj$!YplSJp2k!VCTT
q#3)J"J*lKCA[j"GGQf"%pLkVF)YUr!CT0+8%FD@&(c5XBM0"V2+S+K6@@X&)2r$
28fX94,a0)LDTIGVqF4Z`J(R,FQbE6DK)(ad[$QBGY0-BNLR6IlGrY,AZ92#J@$N
NCKb3!'INbIj+'h#!&VqH&RP0FU*TGJK)AfIDdr)"'CpCX4d'dAZU8f2#"Q2p5"L
$`P1aXc-G)%J"JdqiXAi'Brd'Z2e[Ff2G%%`B1qKEF%S$Y(b$'8r!XB0)@S021,&
q"R(p41U`e'p,TFmNdmr8dk@H*+A2*0220Y1P'#5Pce(631&)PRrXPR#8lN$clTE
@2,Q@p+!EpZ04-&mbH6DAHIQA-U3f5F!I[DeM(AF'-[f$M!+A"J,p"KG+l4IXdRI
'65&B3BTmfDf8lE1KeL(N@M(3j`J`G1m`3haLIR!)l[Yq&$iEreI,6VEGPl0#`Ac
ICVJ,&$k"TJ*hRIlYH@BN2YYh&'mPiRFajC)TCHfP"XZ%LTkjjIacp9D"'r[M)D9
ESp!Kb5'(S#%SS-QXKc%9mGDeH6DAH4#AY6Jf[`B#rC3br8rS!Ne#I`*[SN+@Kp1
@6Y0#V)G#PSI6PTM63Qq(3TD6dj6YeYG[TlfGJE,30)9R&qeJNS(c-E4iS@82MB8
qiD-8Z!LfBL4d%fEYk2c40PMAdb(CdmPr`DRGk8J[AdLThqQT,rT)qM%HMp-jPF+
""X*R"TA)jF+m)kIGj#mp[b@"(Q,5(b&3IH$id1FbV@ZZKSQG"82`rhPc"+8ZF"R
QmJB(9ka55@B8m63RQ$SUq-'frRdL4eZ,N!#,*icZU'XG)*64r8h'dTh!(lhEQB5
9jiB13%a4lX,#+Zm1TdcTE+M#%YjBFkeGkE"+`PMTTbS($N#qYfjqTlJdGT65r@p
F[3Xr(rPkjL!T&'$4Ii$`i"F[bUP8"JJ`"$$!U,Q@++"6V"hLGqLrRM!!T``'PG1
EPDH2"MT+"T@5Mj8kfJBk$!D9)S@)fL04&H6ZNX'p9@+YDVpk9@*mh@hZKc*QeN)
mE`M6*Xf"c@#p"EGZH"cF1X,V0P`,Lm,hDT9D(k5ci$HFUTZ$Kid,fUBl8+DCK5E
XC,akjCV9l&MEM)ep-e3+*FM6G1&)D2FaKXrEdmm+diEr03PrfNp`&kdKf@cjrUQ
,1EpM[!FZEikh,0biKHU+%FfaQeC,NL$X*F`pd,&e9Xe[m,FXT%frU8cDl0b0lF)
Ia2B4KEjq-K!ZLQi(D(Gi4`d2PS(FPQrqAAf230(-#pb3!!'$(695RBE*lCZcLKY
P`hNcZX(*0AT0VCIq$IB`VP-e3C(ZZF6CI[N*Y1kN5LS5XmQ!P$J%pX,La'*,f-K
SBqi8[db6)56a83NcqZbl$&KZ!Dcb@FfUTTCVeAMdjU`,A9j@(C!!PaZ4acQ58ff
jFm1jFX0YhR14)U[$hH'J,ZD`8RCLb&3p5Y+Q'c$$Xf@Ka5S#mRiFh)pAUZMjrGm
Ki#`rHUkGY%pmG0cb,6@M'ZKqTDUYq+#E)VL8I19hB(18'%0h9,2aLhq1"(!QlKY
%`kEa-&0jb,UIB4+j6Za!NZc#ciJ5`X@3!1NH&cTkF`NASGdF!X'Y,HlF3hPaEJR
`NdEFc[lp$"di#@YD'#B3QaNN(0[QPAc%KbiI6fahS`E)k#5eF`p+AQ4Z#[!BlG`
BeYc`rYS-*&miB5%)HDVYp`H9PGmNcE3Xjhh@*FfrE`BredNad(QrFrSQV!p+AVT
%B,fm0NJ+M!ETdbf9,IjjRMSIcb+#a1D"0fSMDha-Va-4k5"P)I`N$*DflBV%b%M
j@hR-@,jj&QZ0r4#*f93BKX-H!E`F*[Xi"UeXI1c*"UIQ2Efc4"@(R$N&rUS-EJI
#`)Ka"P5&Hkq9I+h+E&VqXrS41%r6CQZAYk4jTqmp[IlXQ38HNE6lM5N(eMEp9'r
m$H(LRDRflNeBpMe8JX6QVC'qH10`Zf'$`Y*ECd&m9Kh'Jr+rdX'cCGP"5qkj$%Z
d,c%I`E2lfFrK+CE@KIf1Yc@j3BcZMQier8(F"VR6`E3[(a["Xk`938X'Z8TqY#q
"'c8CZAZcFa8r(Lp+Z5pEVG&)FdiJTH5i"JTE"KAX88L5$TaG%,8qfM'Y"Y-F2Fq
*fJ)JLS*a"X&IQV[r"ZAVj6$&5*39J3Q))@pF&,0d&DeK514iThm%RYdK33%'3'm
E(E&,VK`q9#,3f3ebrUKkV%r9,RH22M,2&'h[a6YerB-(eFp+k!528%%YN!$&jUA
N8c1p4Sp!Nb,q64X5`hJ#9&eMHPZFrG1ABF)3a-[ZTM)THUakHUC`+IPIhKc@Yc)
,qr8$&L(ITXlRHZEBJfY,&QDcIa@YJi*hCae*HS8q#fk!-UellRF"&9%Q*YCcXdj
4rJ$fVFhIj+dNlN(h+5&r2r9d*1i*+#Na6X3@cc+J3BiT)4QeHTBL[+f[JZ30E8Q
d+$iie[-bVIf#j(2@9*Tr2%NQ%Z3iF$b98ZNQHepF1%6c@+MFG$6Q'-(&Cl8(`aT
3c%*GK5kc&MXf'lDEV)p"Z&Km1Qcqfd0'i(a)YFGk'$kN@6l('6A(NT[8QQ2f@b9
*)h+%IA)P5#13!+G,irlLpM49H"$%KqkQe#PkJ,PkTJ8TqH%$(#3$rm[0lRG$kiS
SjhUQBqHl*[jRrPhV%%Z)`EXr&Il-ka!k"J&JA25dhf'0mAb!!%fmZLAN)jbf)mG
lj)iQrM+a[m2p[Il(BqaERV[*r"VCdlD`9$h'Ii%)I`GqfDXE80C3X0,!fPHR#k-
M5bcqD'!DS"[)qL$$X1(qX,(q`f1D@eh3a,TF1i*h@q[q%d8(5H9VLa$Yl$cA5j,
1am"Fak4d3dXHcXF0qFG,Lmjkp1Hje9$(5l21mQf@PMUa'1&`%H5LlM%[rql*F1J
L'-Xfj!VZ-8T*5ATc!fDcbpRNiqia(NP*HM3$92'cUV-`fA2Y-dQRF'IEC*QR#RV
(BB1Jh6rZAX!Baehf!mGM4-0S3qI(dr[(X1,1G!lR-)Y%(2Q"cU!d+jZ!TGK"&qH
fZ3RRFerCPFZ-Dekl(01R95a9R(CLCb[IHTjcP*m-hFQX`Aef[Vc1")q6+QaQTcV
N@F3cJ[jrUCdKT-kSlrVirUrfcY518,ZE8F40lMLN`H`4B`1+Tl168`VbGmQcGE1
2SE-NSFMDMl,q6rC"VLP-(J35Y-K#mQd$c4k2"0fG3J[[Z$l@b04f5r&BC"I))1a
R1Ykp1N*dNN)GE6+IGU`$HY0#(@lIFNP&8G08iU2&'["538Zf@pD%F[e(*&Y"B,B
rTE0GXerMl8-r55'ESc)DK9,qC2`E$3L$Q`I3R9ci%UfGS&$@V[@RJ,r+j&HfkE1
BIkCZji6PKaC23Z$VrLSM3B$RjrTqBN6LJT9DcZmrKL[G8qFXi)Z)542laDbq#l%
1ReqXrqHXp1GIc9+qaGQ5[lZdSBl4*!9#%p01pSqr1HpDZ5C%VQ3QUH"fR!26[#@
J1HQRa5r[#iCe4&4PT6L$bhd[!JZRXc8Lk)EE'`(@aD9c0455eTj"I$%@9SZTlMG
SV4@iDhcYG55Q`I$UdIl)k#R&L%*c,c+K8K1eS6mQk-Zpd%Tm[jB8IRbEd8[%$&@
IhA)iQ(aAdC(2eMQTV4ipk#ahH8%q)8Z'mQpm8fE*9M%E)M3TrQDiI2KQEkId1+S
aGCJd#IiFca2ClDHYUL)dqhTeDFqh(2*8hbh50hCpFc&HP62"i8()cc!Fq96b,GV
E%eLRTSd60X'8N!"[`C6rTlQT16d*fdHlreUjU@1j2DPmNh1(dKid'r5(k*NXTbq
T3K9p!V9'Q)H0%f9,iXq@!e1C,"F[Y%,AGDcfKVGiVK-S5ir2@pZ(Dad6j1M@[lN
elClD`j9*Jlp"TZdcNP[SI!LdD45AN!$4#VAm`f$018F*Hl4*"qi*k!EpIK%Y[AJ
aJH4mkQA@lLd6JB-h0'-"-Ap8-kRL85QBk(2pr)Hll)iMc4-0JhKP1l51CMJZ&5R
2qlR5baQ4&*H9pS-h9&e[m[ZPQHrFBr%0UTANf5b'Y0f5,#VPA,`(U6)qp1i(R6H
&"+RY-14JMMK3YL!EjcVfbRR&J)AHFM5QRdka#e+Jqk0EP2hFGXNhMV0!XHH5A"X
'mR4fLk"8pS0GZ2S,XG*ljeSL@MHH2[m(EP5iY&jeJrFSC`+(Drlc,2Rj`i2&Z6`
2q3c"')DK5E4krcX5j0[h-,IY'bab+K8r-HErFHMQb2m8pV!PZ!`ER4mYQDNSD$*
6%`qBD`NlPGN8a5iq+#Tc#IXVmSD)"pHmE%$,"p$8hjqP#3mV)-5)d!rI"di@ke%
ZI-hHF@!J,fSbRHe+-qX(,b&Vkk2LVK43H@i#m1K3HA%#Gb`pk-fAPhTYiN&D'0c
'K'e"CS8qQ3'Vj2Y-X-MVETQH6*%bY&3V+J83#p$hfA3!&1bJl3Vk$b"B#@,TqjE
rd2T'hpfd9-BU*ZK%j$a-UQEpDh2AGaV@*,LVHTcXq-Llr3kVAHV-CV3-%i-6fK@
Ye21l(Bj[CM,S51[p!(c2"!kp"EIhVNe3F(TB)J%E8R,YCS9$qdVa-JPLiJ@Y#p$
hYrJ!`Q'm5NYcHP1epB0SDIX8eYhj!80kJq)bH'i!l'N1j[2&+Q)8Bd#T([(%B%M
`eUq%LX*6FeEC)UReffiF!8akNZ*46IDmm2GG@6hS`8p23KpB2F)qClK(j35SPAT
*V96RrQ%%a8C!HZA%X+(hddP&HNPeHJae+qBBSKc$f1(Y25qZV#PQ'U[qK0EpCfZ
5V@3pe8aVfAem3T-kDF5d-b4(0&45-fT`a"I@l8!l("AN4VKrd@C8Fd*RQia!Y1A
"KbR,Tr@23cka4cKR@Yr3C2[0#4A8'EQX316m6jYT*5'6ISkFDT,bG5Z&!HYYLRr
Ahe@jB%'PRA#+!hmNaHHI[p!)m3pqd+Mlh4b+N5D+F%Rd%%U(3!29S9qM6q(brDP
'GDKCD4$9Mq)KEh0F*!5U3')U1VT6k)fRUDlNd'T%AepH#VqEBYT(rM!lEF-AXDl
M&Tc(eaEePr0b-*DAeAP'3IGT(0Q@YhLFiPh%+eUL-TPFPCjXejJmYFjIeQP'5L5
HLr%N@KB@5'F$ikre88e0%0(&Jc1YV'`2VG'SRb#Xa9M&l5`,%249L$fj!p,*YB[
rk+Q(pjpD4$I%!IXaX2[#QDfYC3Xi9ZMpRQ-XF*`lEZ6*pT@Xb3H,cZ(&M,keIZH
r,+rJU3Ah'+q-#pX,HBki2DIEZH5#I3aTDra8P5#XE9jZh!J5iRkV4JI'8#8MU@V
k(JdpL`"UaHHqTdD2fM5MMm`P-Q2Ip**T&f-4p**FFiHM)P49M`qm2bFPPL)D3&Y
km62%$eD)[NX%`FeJj(&Q-IK6'#2#d3B,SNjUa3BdL$hVU3h&LljME3LR*PIm41N
-5Ai4C2pJ8,[ZS$#02aQI+JfH3D&KUFh1aCq-h#85Na-QU-a+bX8V[Y`QYm@T&ml
0L)XQYD(&U4I1#-k6h,m5c"2+U)SR9QVGj4"A6%QQ$eLll+#rMBbT*d&AaEHqcmc
36pYDlRr*SbqlXq@#Z`-2D,k2DL(j$5(5"UdNFi`D5Pq2BVa2RE-klFCHqARak-R
S@E4@mUAjMP#G,0EaR*YULrqd"5`Si#eCf`'C*6N,&RKUa8bq4b4%,cF4lHh(H'S
4&R6Sf02EI%Z`L5KLZf#(SD8kc`S1LBJd&'$M0`ThCT01If$G3'jQrZhULTr,8h3
ARirKGfkGDb,lbiNh,HeK[B3bqKep`DDrbjXhT1dKJG)lNb$LfbRZ5pL*&Eqm[FN
SE)U+25,#kbK(Q`G3T-K@UA+BXTdAdZXhL3[PjDlTDepURDXrQaI*)GRB+,[CS-l
,YDNh-VpVA#Kb#rVLDK#`)$8MIBAN%((lN!#ir`eV0iN(3&f[Ld#6lILq0@$blA%
'AIPSRB9q*P+lGm3mGd-ah8Q0fEPSlPbIb#"qUYG%F#RYKMTkRlDc@UT(Kl#YBSX
*""0h6rC+1@P59&"e)pJ#Gq1CJcRpr9KU#DS3$NX#`H'1ZqMC("'2q-)(,#VJqSj
hfrbfY0[mJV5SLK33AZ-Mf'Mp,qV4,AZf'phPr)RN+jFj6bjmG'T8%5fijJ[)26E
DaT0mecPBB&1ml@VFfVP0j0bmefSeh0(-qb(bAVP)BDN4Qh%Y-PU(0,"h2'jU@00
Bf&l&TRGmM2+`G,2&%r&h4EXE'&kl+)6aTmM-H@,Z'K9'!CRc4QrC3QQ5`p9T6A1
)ZbK(dRf@%UbQr5LNqHq-U$,la9ciD6MM%9`BajLF'*HDR$M$8Y"dp-SH$La42C[
+a8D(8KqQRd[q$kN$Yr)m&hr%GG[fTMCp*-3k'KHZA$fD(*-Sfc(@5M)AQ$IVV83
hX"5XIELYfjR)KFRmUSA2#"+rafBZ'&F,6[r28%CMHq5"Jl+9@",j994iTYj",(b
VJ%HC+6F`JkR#S9@ZP`1jDmIB9Ya*IrX*0YPK0p,[p12@LkKbS*LSZS+BT2@CcD5
kkmhF8U'4#4fZqd[X$pQLjEhUiA%PIE+9SdF(9e")VVcKZflfUE@Br4S06ra(5QC
Y4pjN3G2&XiFh`HrAr0p+6`jd"L+[bP+YHmLNekee3Y-Vjfc&&BFXm*'6bM**0q#
$@--VPN$((Dd&&qdj42J4,f16MDFf0*,)DHahe!K5PMA-'*(8KF2&`1AA+I48B,2
kSQ%,PVG)mA4Qll6H+h8BAG"IF2*%Y!Jir648rQqCMjp!rmaQK3f@bGqHieV2r+c
Fl22hKHdRM3b$GF0T4-ebB@!XL!jZ,'540jP[*qSqBE5"i9VpB3UXHb9K36kaBhf
[C$BhlfqGQC&+R0NbLr4#SYlYDLkd(hbX$0ldJDm(BVaD@V-krFCmPS[KVBTNcjc
N@,A3B%"M-Vc&+YAYFeE-$dZ*V,jAmH4dflKAPY+2YSN8,@bZ20JZP&Sh5fqE0i#
61HVKcIQ[&maXQ)0LPT-lQ+4G&mfNZSc0[DeDh[LL#m-ZLm`rbLbS&p`(M9"6LB2
"-VbT*TJi3PAYJ#U@pB8b&qNbMN5Lj8(&q*'E%"bdUk[Q$%'ANRUVl'!Lj4l0p$U
SYml-LFS3eA852e6d*4')YbA)Vp98-UK9M'mE99Ta'!FK%+Hja-5IJqVrTNH1-NB
`(9CqYDHT`D@#T#V%Cpqer'5dI&fbTF@#Kj02(Rlmkl4ic$LTT`j`Q1"I,A$%G1J
+,qf+4kUFGBSkTadj"BS`00#S+`F6Z(-rf'cI*$MH3mD0YFATcC-#8j-*c&16#9*
6N`R(k*-*L1LS,1+43+@1kX,VBC!!SX*,&Ir+$HdQ9QGaGZcYMPB0'bD6ira"lAe
[#S'h0!#KleHH@MT+@)i,()PXbb"dCZLEHXahQCkI*Afd92KXqL5dlA-##$dU*Gp
i9EDX4'$Fc66U#G6F`QSLBE-26pN$!&Bkm&6,q*M0i(6Brh&ej3d6KYTkGC[%cX4
iG)C@hHqK[)-H6paZX`$SkJ[(k[cE855VeL`BmQe(U[p$$l[`GbC!NJrA#A@h-N"
Aa(!Y5)d%VHd3P-"QH$B6Kr`f',ep,1peKU&ajCMrrr50"q@FAl12h)i20%)!B!j
Bb(A0SBCAVAMaUKc"*L!,8V[G2mY8@*&B)(Y``KL`N`3)Ej0[jQ1ST4S'eqd12K(
EMJ"b0HKprABJG9#jE`MS)Er#&[CMZc,f-SBm9JjLqQXdj#HmK#["ZikbRJFmm3k
EqY)-8SXIIa+B99dD-l0#R%I@YI3YjPQL04d&SPSNi+),R)UTT`*(TX-Ql,`qA-q
cQTbHXjZFRYB(p!6@p6#$$[B&"Qhi(hQc!Y+0XqA5il0H!Z19NdeYm--#qkE3!Lb
`2M!fl$i`V+d@YFLcS$JIeJ01"GHC9I"E0N)2[4r)l16XlS8f[qX1(FX*EKBQrYG
JA"Scm0GqqMQ'VZ(@C@-&$M$k0Y-"iAVY-Z&9d'XYj)33H&ap*ErG!#8a1Hl3Y9)
dqEb9B$fc"#jH$TRJ@5hRl`iNVYIV"X(2@cq13F-NRhIblQ2Xd(UcQbk[*R&4'UY
,A+EBqVZBpKUDm)j'i*pT`E!"XdcMZT'2r[f,8qS6Q0RQJeAi*jC#D[88DGBr6MJ
9H%G4QJ3eX'(LA2j5bVAqD#S1#&fq&50S`4rcKNFTJ&2+'T8UKl0X8*bcZJ@F'RA
`@RlJc,IBiqTG"@dGMZ$4#r6*b`i48IrLC4$FFA4d*BR&ZpK2d@TiAd"!ljTT*!Z
0c-ahS`jhQ,`VZ!#XZA0lYir&6Bj*9VFL-JfS!U),#Z`0Uh0!ZI4,[&-fT-SFUqa
8rfl%G*bIYlGCa"SU3''caBr96H5LhALB&#0)l-3X5Fb$9)`8@N!ajC)Tp-AF%hK
ZCXMrJb,Fi-PD((&@eh$B,(MP#`N(!AcfZDVLeQ$d!'VH"(TYYFQl)Qf5[SlQZ*%
S(A*@@P0(Y2$[BDEeNTc%J+4U*F5A6Tc%llfFHp3"rc1`)[!l#eQ9N!"Re$Jm-S0
IU5JTmZa+)UZ6SDfNdl$rBRc8Ld2GbFppmN&!,qI8hDdL9$p5-9jTk`bJ!#IT`b&
819R323QMAF9drQcF%!M1ASLEIGCF5T*Bki$4l6lQ#mXQEKc@e9U(@eFJa,TZ9Jj
05`0EHik(iEMNfrRZB9)pfpDj"`aF1)-b5m(G$XT%DZh&ZchfeQrr$"hc9NND,M*
f8)Sm)iI"Nhp2MPqpV$24!!H0aKZSSd5'*hE&GfrZ'J`b("&,%2ST"h0N%e4iQTp
Y3P@$F@Sdi'r'$Q",Na9*MP9b3$-)!KX)kal"*2-"MTqpm[R,PhTHB%-LlG'K&51
G`8[M1MN[#5YHB-kSfLIBVVZ!pJqqU(KTdEflqQC$MafLibXjB8QSb9b&[9L+dA"
M!mf0aNHl&[BD$2"*L!3NTIUQjD#Q4Jf!%#BqS4Vee'Xj",53!#V+UZipD#(cVLL
p"2*YiYk)#DmaG8`Q"+%SNMkIA0FqVYb2,aB1qFXUGCDle2B1e`3Xfc[B,G)3hj@
58KIp#jeQ#0bEYfpfmVG[Tq%62C3i,51X'(r82'i5RS9dKCL'SA-$3"+miEY`)4c
15ULl&$@C)"2KH9,ZPZbEpR04CT2PreKeF$34lh6E1ZE,NqA2c'rbHJYh9a,2*L)
+NX[E[$ae[F2rRTh#M`p-G&&ZbKJm+,P%XcV2+%'@&mK406qfCqpmB(bD+e[%6$8
qhU$aeDrCkV@-X!im%L9%G@FQq+%iDSe*A0G5dPIGZ`KYTAK4TiA[CmJAl(3C5dm
erLZ5G$+KHS`"T9AADmPVFr2,9R4RMY4h11G(N!$#"2mmU+1m$)eG+(aTee)bD,9
1FaPDQ+GlT`$L%K0j,A"-+JGc,Bfj+!ZBB!,,c6YQ`TK(@PJkH5M+V(cr9YAGi-%
0@'4h%qHeN!$&fJGH`Ca#U[)Ii[*YiUV8(lk2FUD*4PlqE'hp+2SMY-T(m%'q4R,
qL@h%+'cVNXVkId*3(+L@1a$%6%E(@BPYJZ&XDD%qUUrAqM4R($A2V0YClLC-SEN
U3rmDpkjPjaHU$ISD&Dl)0rH5088U-[Fr[00M05C$S@N9QRD`epVCA)G'q$[lhA0
BhLp(fM,UKfVPBrX)81%#6[Iq`+URqkfljShqJlZIpNYX&`bIh22l8!'*SZ`R8(L
lL2EiQq!Z*SQK0eCH,U1T$("hU2mMCCE*B5MHZkb5QBYj)G8XmfU)$CiE(mciJ55
XcEVBPL(1,$LCd"4`9ALddXkmRXdr$XZX+$ip6QZjMYc#%Hmpp%&Ycb$$P9`Rp4%
B5GGHPL(hLClLI[i-'k9"emjSCDmABSTX,'*1m(XR!@28LQ[Dj3(MM#FKRi5fkc4
PAkH#+DLmSN$e"+0pcBLC`p"TN58lE08mm+8V2K-cS6ap+iMf#[E4NfMJG"J9#pr
B5CB9Tqc5GiYN5&03CK4S`R%"%lcICQM9h6aZ)AVP8-L6jb*kN3%)fVcTlBY$##B
T*-&kERK#9T,bTh84XhFjEP082"2GSJecZf5`riYQ`qAI0C2NGm!JM!)QbRCh1U&
-+*)D"pf'DZ3k5j%k'J'cMmV5rf9pZGD!2--d'eV2C5'dGPPF-65$L5N1IZ)3mk3
e#r8pRMUCK`9p63NkABHHEd2%L`8h38cFf["IlGf`!pT"5p`#i`2NA19iQ3kAb&e
efIBA[3[Z-'K%S"S%Z+!DQYZG9+3$f@da*[jpJqiSQAT4#J4hpXrR!`NhRIBA[dp
f`Tpl+*Q%*#plkC91A+EN'$T4+MFAD(rqEERiaF$"3&EjHaFmEK+N3m+%[&I#[)c
KJ3)S[D'12`F5dBc5'`p--1r#12k3!,PN!kc``d-p8Tl*MH9qZMIJ1k6CBQNDZQ*
@#(TqQ#2`MhLZ#YpQPD[lA,VT0Qh8TmMc6L(J'J[Xi!jF6,$d9a#E5@-#clJ,5Z(
,8Xr)R`'mMN%,C3Dl8)IKJ3XS%&43Kr+'Kkd("3QjU46S1,iLCZXK8(K5+)FhCN)
I4+hlh0fE$%R-Dq39E485b!ia,FmqHXJ`V&8YA+TV-YMSk"Qp5#&DIAS0VTQX23X
QM`h&(F8"%@dmmA9Kld*cHJIM5r&UrS*M0N[`fGb"D%P2BXc'%bRIQPTEMA-(U9r
)ZUBmDXC2#cfZrr)%8f6Ap'fE,rTEQSVAH)*F@Fbd#2L95`k8c0%aI9BZH)*FV-b
4bfh0Z!LJ25!d[`C@8dZEaSc4TJ[d"d[U&HJrq$PDJ(!Jk%A#,Q#$,fXJ0-VCd*P
@@VK!L@0fc)+BaQ@da@i)X#`mm'B)S[l2R$c-95amR(BK'+d[A&C`hkCm'T`k(Z0
*#*YMc`j4AM4T,q$KZ"f")j!!M9+1h9b`#qUG1EQ5F%2*QmEb),G)reDjZ,m*0@[
Ym!(,VXL,Nf!TL&8afdm*l@[F93YqlpZ"a5IYMm4QHL9USJ(6CZ(+bcVP-P-MS'U
2ir-PkJ+UAbpYHM-1LFVY&9L'TGX11#h#mC)Ya)q#DM1A&[5GUjTSS9Te1S'!A0X
V%N"q8i[*Ib'MBNe4!HX"UU90)@9LKJl&k3'C'ZYmZJ$`5XRSLh2c3H!VKPXB+hG
G4*-QeA0DA(#V1QfABT-h+`$d0DpSZZmV9G9IJZTpKRKMBSDF[BJQ&E8V`IAdm!Y
`#JS)Q`!6&53V)SQK-15kaXaUBL*A3Xp8d3#9Ib!VKp462*'$![UTAKU@j*!!aXM
miZ[fphh@TKdD@3LD!)kR2$LIDNf1-9Lj%Sm48peHB,1+h-@%(q*hSA%dIQE4'm(
Z5il40-(Zc+)LpRYBM42%KQ!&'#E6prm4JdhK,)GBDV,-3!"pQY,9Df3klR2A4QA
XIYQ@clc*-c$5%!YJ!L-34VH23AJcmYj9LrqV,B%L'4a)bb4N6HNR`jYqD*@TCGP
'Dq))H1,E49JEbD1LIKjdC[[#MiCLmI1(kELA6q)Q8M0'B$2*8`jcUh`9)1QP&QT
PEF5"A#0+BMqZ0N9Qq2'5)95"5hf$L%lMF(kTq$520bD"2GNJBP%#U-Xc#*&m'ie
!VA6X,A`kbRVhl(0BEZq02'Y2YdJAG1I#j$-)kd"0ljmeHVKFma`Fa[emp-*!9cc
S9$0jd359-ciaiQ!#FdrBT(1b0jH""[`bUm$$'(iHM%Q[qH-F9kB,Y,cEKh2XeZQ
"@$@c(G*SNpR@8aKbS*!!'"D#N!#dAHYP0,V`IYLkX!!M6`"VrD13!+LDlQ@NX6m
!Dc,iBN"Sl(idXS@Nj'*KbAVB0JNZ*kB5El9qPDS8q@hTD,8M1!!AVYaq%RYXIM3
CSN,BiPp#f!9I!cH9#V`1FiC6SCaA4U1L+YMXAlRV%`!Ap3S6I*Gj%hcpH40mFT9
PG2M-0Fr+"p+Q6C'd)BF+DCQ1KP2M3P06`cP6%jFKN!"8"2p'#IK@DGKI,3!hpNE
'0N*iMj2CE&1SPrk3!+M(Bj!!DRLpF'9kjH"'91A"!BrCm&2bFTk3!'Y5D'9k5qN
Q94(6MaCcCDEPN!$50m&''PrIMK0Tr0TT8i"58a-@%T!!MjSYCDQAdSMdpD3348%
cA*q!688(Fk6#'"8F82`6HeV"[8aBJEa!Jfk,T$b-926PHX*%,2N3"#`Fq8PpMei
0E6T8fVaVlGk"l0dja[C!p0ck0+UG56U@9,`k$d0kbkD11#`,I&BYACM&F(0p[iT
*Y9MYl-SND@4B#V`38H34dX),e[13!!HcTZ3804'9+Ejm0YG%rirZY@`5#kaQ4EZ
ilqP1HUD3!#)GEG`PEP-Lb'2YVSCe-#8RBll*E8IcSDUQ-Q"p3M!fRf)G&a$LrNI
5)Z6-A(D!--ZAAD0J[@'m$JN&+&Xh1jq2Gbi0)M348p'1$dC6rq80P[4#DiP1(NP
Y'RpP1XlfMUpPZFl-k1eI!9J-B"iD+[PmZX5P3-HUY&SmKSmd6BDX5RUI5FASEXR
,ZI'`a'BpXhK2PKhF@d&GNKArRbiFV$3JDGfa(#Jarb*Z@-hmV@A0@1T"5F8RB,B
XGYKNT%lG3'&V%'!"8jJP)Z,J9#*Z(2rm-4#UmD2eDlkEFN6JP@R4'Mr`H(MG2a$
VIb39MhLj(-pB2IZl`GJC*Sj"iPc`a(jI#R0-PCJVSHL5@PaVVeJcV2"X1NNk@-P
5V"36mQRYJ(FC3AZlP'hX'[q9AlMJP9*hi!Q9ZiPYAkQl)k(S"Dl@C%rehiN*JEh
SEr!r8CXqTFhhB%pc8H88(*1Iq6lB-V5iHVj!-JMFciVS59Gp3M[YI`[JJP$E6rP
YPCrI3@!39431$XPFcQXXdflbCU0f00j1U@Dik"KAY+"%jcMEB*Y9BRd(9@B1j-Q
eQH9#CNCJl"0f*2,)aIq+r@XMCPKcX,%k1&L0`SppcY92mN$l#'D3!(E(!GJQ5-,
PQV8GCS2&A%XIh@%$%(AF5[cN46fQV&k2UEQdUc3bH&XEZUQPh$`Z6Gh`89JfcX6
5JT`3HF+[Sa%c!VP*66I'Z+PDbZNaIiFNGdNXB#R")+LC,mpd&j2'ANXRa5XF6@$
X!JHjLdd(X%R2M@Mc6F(P`3Idj!+91)b0QX,B6#0BE$q$AX`PT12kS4(qIBCA!FN
B%@2N"$r4U6JjR'!q0aa-C)pX-Aj2a,Yl-qiTjN,E[i`&CP(JKh41`AM,RdqhZa8
c[bQH3TqJKJAje*ZhZdRa'#RV3KbmhbQR&c#eV-HiKGX516ejlHV#[d3T%0$Y[`2
*Z#l!H'2#d1qr%09Dq4[+T48ThR1$S"5VfPYDiEZU40rZMS%FmblKF+1RIlYK4&h
YRH6J$Ie%"8$GE!q[VFLZ1%9q(3qUSaFQ(1M0I5mrB84GI$T!RFY1iiPLKEY+k2I
Tq10G@fpliES-dIZFjBXeXFHZQ*b!D)1m6q+*@IFM8#[MkImhSXX&Gf8Y#BKA*#c
eMBd#PdlRC@@)C3Q)6J,4-0*M9aj!J(GB-3-p1B3%Dd0VI(4TI$4T'#+ENr'XaDH
ifh#(CTMYd)q"X*6rTjaQ`A%FaZa3R("+-+PZhD4ZFHJRf`CYJejqCAM1PZdh(,2
E(S-!Ti@(A'D,d9lF*"TfNC`'0R`86)4K&X831U`$AB0B)F`LL8m"2X+Yj%r#d&G
Vj(6AIC&Rm9@+M4b&YI,N'YI&#J,[-IcA4-JcB'`I`F,[CeJBeVNS2lr,PPrYhGr
B`$3K[CIMk2)Jr'Ec[kc5GhrYiJG1BZ*5YJ1Ca+H0bS[pI6CJEYYCTfCijmd(aF9
XZU[#PL)ql&Sdk1j!+S9hk&e4MiH$CMEY-FP"@!-6#F%,4'Lc0UK4GYckBpfY+M(
4EQ@Nd@d,j*!!3%X&9m51DLIQEU-X[,r0VY"'@$Ui*j03A5"TG0f1jmKQB!Rkec4
Q1@1l1%c+RAI)6'-mV(F[8'-PV$%&F5i+QrlJcG4VkVC#&1ipPCA0r,A),Y#,KGL
40A4%1%0Hc26Aq9rPlJ98*Bl"Kjd,Zq,$5M%XZec2R&!1k[[EBk[Y5lB&JCa'IRa
`$rFS5ST-6XM-KYaa!Ebmpihl`@YSI[H$d"[2&+PmPh$'9@3DY[,UTdYBQiX,8!j
h,1e%9$q$mD68U!S2dEk+-YC2[Qh1NLQ-fmcT0UVrKQeh9'[N'!Y#[A-&cdRMS%)
NJAZUfd!KYI8f1Z56r&J@$e$TGfDY+cDF0c+!%$B,FlSVQThPF2""#U#hfEGXdeD
DNC5L2@09J&*6)QZaN!$4@!i4*VY@km-46AC*+@m**0M#Pq2'64L50el'S@V#0`f
BY*',GEYpQmK,1XM&d#JL-%1l!MD+emK`60,)E#99dAcpIFqp0cMKaN'9PpNQ#kI
mLQ@pKm0UU[,eP3edp3R89+BhAX'!0H0h4BILAEQhc8Lh6`Xa,hK@i#a&3XEXY*J
XQ)10Z5$0Z3V0MACT+F-UHC%Ll3YU8"pBN!$e53)2YDK3%,Gi0`*P`ZLPT`2"(2e
m8jF&3RS&YAUA(l[pK`08N4IY#c-&#j%&lEHS#c(SH+2G&qc&"83fH$IJmX1lbcS
$m4bkU0ZA"EYk&*Z2e`YaT02T8,5pGj%,BHh+DDkSPZ3RQGMMee@FjN#G3jdYfIZ
[LkB3V)T"Rhd58+HC@X%(GbdVDliLem*qi,m&3phh',3-Ue"8fZN2qhi1%@9LDj&
L)S)bV5`3F)SU-cPi`9Z6%C'$NK-*l+TL`B9,-pm6DBMN$m8(!X9Nd%@PDj5prZ@
jq9k3!(C[K"&mLY"NR)id5Al-%3r-p2Y0B+`j"`HGa9V5#"&E,-540F@NM[RdQ#$
-Q,(-p(J6BVXe1VYf1Q),dAlN3-82SG`8l%hdGkZR4Gep(!k%Q#(d@MfF6(CVIKm
fR$hI59`"Pa4ZJ"Jkb!HEkpY(!8f%5jV&@SHRhd[[5pZ5Q1fTcDrUR5JjfT%4#*i
J-I)[1Ch0G1V0'HUGe#r#"A4kNHB)V#,2V*(2#-fEkPS4,mANCF9`YVNLRP0k@Mq
dXF,d@MfF8I+5'2(K*j3b%$('S!(aa[i8*'T(QriiNfUdc'6-AUIA$qe,VBLR)[(
E913QaIrXa8-fUTp%%mAF)cSVN!"kd"XidXUc5i2lApS,PY*ZbI6SMfe8GB8&F(b
m(+T@mL`Kp[m8cAbYhHdL)MEre*J"e#)Jrb)+rp4a(2p!QaCVcArBVGfIqTf)EAH
hQl[Dq6m`)a$'j[a!cCPBK4$GI$+Jh`@C"j%e0bpSS4L(S9B8%[*fi#R#KIQIKH#
I9$$j9)84Re5J8RdfRF,X59,GFG6Y$mM#Ydl8cF[GUSAJRe329#,3HI+rFDT!YkZ
'4&@UKIDI`Z!+`S8!Ra6XUX)2M-,NU)bYYbM#FBr#3%f-,rXS!lBj`K4%US@bRm,
D'X+&TCr3`A`LF5b2faK2[qaq3!rK`JPHJ5c0DQZc&hlHi&L0[!bVhqp`+Y!AI#,
f,b*8ekX*qi(#KD[b6jR,p!2,8!-&826dbf8$%#m&`$%eYF3QV8+Ip!-*296D+#*
0R8"B9IjfKH4V&"lb!DAcH(q(BM98"Dc!$[Fe!6!SPR`@SVS)Y9$)4)jbiCY[UTp
!d"8'dAH#16qrH%FhDI`LQNqkfPrG[(dDS,9*C@5eVek@"+`XB!BEiVN#MDI-@%2
@1SC@,TY@R*Z'YMaSraf1Tc$U0-'d5[mc)I"!LN[B)ThmAN"i5*LeTRHme5kle*Q
@[LGFrdi$dmarX&6"dBBfh#-'G4U(p`qqqE-rMY%B%3985h!E1&Y!05aHS[eLNmk
@eJUIaFX$MY[XRkF!9IUmZ1(j$rU8#UJPTQPMMj&MH9m6K`1)NGHBNe"@(j!!3lG
FEEHcAhqciP-TYrYilj%UGrB&1V`)KXYm5Q&KP(3e8e$3)Z4YG,DC%[Cp--mrJ,P
mLYYY!m"F2#!'S#!BS$dB"ZVYqjR&r#,"5'0Q$8GSIE!EXi8[klkQE96jl0c`5[p
'Q*Jp*![+RJ-UDJ-TDqPd+P#cAikYRH$'Arr*PV`&@Zq3!$2qi-%m0NI8)Z,")ME
"e!T#e-c"`8$l`6cX@N#rI)lEBCZLR!Z"K3ZIZq$jGbj!bB&De"F6G"ZY$ri+-bE
23VQ4rNPI3AfY0fc88Cmb6lS,Hee!P2N)U3haUD2h#!A05IcA`Ejil6bBL@`Iqai
NF,lAq3m%r*%%`P3LM6U4"$r0jPLX4KHXc4GBc9eBF"!A)C'03*%`3#'UM8$leqf
B3VZYfQQ$KbCYcB,GG(L3!15lC5Url&0@Ya-Ql%eTY`mDZrYhZlHU'UElDQ$0AXZ
EHcQEcGV,,NF[MV`63,[S+YZGN!"B,TaB`pUQ"ITFrF'N)CI*&cEYId6Uk(8aMpI
Db(+lp'8Y&%Yp*T!!fiB6TcE&mm[Kk(!2Ff#4Fc4**65$N63rN4FLCSSd(*'P2h"
%DmF3fSGSE3&'%!'(%'f4*$pf5c4fN63rqb"AG!TccG*XqB&2(Ha2j!"2GDNc0R-
m3&,h+C%%Bjm+pm8"8r8J0Hkd*PEm)SF-*I*kLCq(L5AlNl(GKYHIGT!!&M229*F
&L1TmS[TH`J%hG!pqqU0J4L`P0dQ4kI4mDS2jZ5S%b5GpU)GL*C&Pp&UPk5`Fr'R
L4JGmqIU&4-N$DQS$+@V*S@V*!c4UKhXP%e#"@*'Vp)IQ*@[a!(fEI"bJG*fl%$-
&Q1S,bem,"9rU"5MU#l0IGJ-RDP)Fra``#PL4DI5S4PShILp"R%%G"EAUk0*PIFP
mc6V8m32d&2a#`82"6$6Ea6F%U(4lqFIF[Z6&MU"LBe&bqTXC%!1f'MZCqH(Z(*c
ilmkiX*!!$a&X3V)Q#*Rd"kUN#rJQdmcP31Mm6jS6rGS9h65fA23@rF-blL$C-El
,V'1(EcI6X8mAbe-P9Qk(DpRa80"fR+,0SM3HbpPhKU62Gc12Zq!cZ6Kq0`Ab[bk
i#b)PFq+@U"Sc'eGfb-83ZVphK`B$mEMQk1)#%d3h&Q(d15Ujh'!KDFS#C)Q'568
h)ipUrj(V`F)%bF+4bF%+hjm3*42H4$F[Kd*@UT0U,r[SY`S#YXXa%lZ4qD%6I&'
[DQYdhG3$h6d$`6h8hN$#Kc5+NCl"1U9c[4`k9!(S310`2iGI,rF@pF6Upe5(,ac
F8Y0NQ,Q1aPK$&eiF@-b$!fmEBAVCU0Hd!M(Q!3'*a@1LHm8EV%U!#pIGTBU4b`D
iA[FLfADXX)Q482YDKV"DNE$lqbJ+V*!!685hRBCf%FDllK%$p$dmM[D6"53(8YU
[j%kGGqcD8e2'G5caNpIN%iH&9JA@"e-m&(b4R[Xfa3,,MjhEKYS`#mpT!kmp8K2
lh4"Gj#p0!JZ9mB()YTN$)`8alESVBAE%Gam#G`)#a%3)I8S#H'h2&,Y"(mqUa8Y
8p'0F29J34`$e#0&$(ec!d$0lb0)K&'1E%3@"Q("M6q1@k[*dElDI6#kM`E%K3cC
k$cBk0T&`%'@GGh(D-9&Ul31F23@i"fCdEf'iprZ(AJ2)24$r8($pqkX+heXa!Cd
3Yje`0J&`%1fG%$DGF,Cm-AG`fJ-,2Hf-)JZ(NF85mH2rYqdFbl%"153KiGeU01,
mCLF"6A9Q-EjH*Re@1er)b0@h8i&f`3ApXe6d+RmST@D&k2A6DX[DLG34crqS*8`
8%fBc%1i,LkE1ir"[h5K"USr)['!eUAV5Xfd"@`AE(j!!+,-H6BHXFl-*6Hj1DGV
6L2%EZHi0'#c*6&BNF+IlS,0*!@@(J5f!*D!l)(lQK(4r-!d,kFmb1Y[iIXP4F,X
ZiS'R`#NV0AkBFqk&!Dr+EMdr!3X(*IECfL5i(UM%%eT$%i9Bfp"VU%"Gdb'Y-"T
`MVc8A*MFV*FP6*&H-#`9Xmh-M*+U1Rj,,Q-j88Vah'ViU94-+iqPXfi"Bd!DZ6!
"c%AN#iGJKH*TID#Eb1#&c5c9Bj`4258"S66a3Vj+M8Yp3F!#+l@e+Bc)kp*X0HJ
"dJFipUVD(NP#"%)$HM%IF5B6T`SclZJ"L2qipK2DTAJR8Bra@#,Zjjp`ZfK#JG%
r&DP#GibelM`"Vbc4h3ik-l#UkVK`Z'LIUl8+*LQ4d9G2XmfaCV@j(FfLCV@kji9
*kM4Pm@l3@MF"$#H[0fR$Nd`B3cRNplrXS2$*A&U&*MhAr,rA!EU%5qX(8Q"DBjJ
r)-JjeTJ1)-K##'@Z&EJ-1XF,b#Sd[6,EGirmjM9&@LLrMZVJdS#FU@mih&f`i%,
4F$+96`0#-Ed*MbN$V8U61MMf*3*MrcMf*3)A"cMfR!,fU3)i4'l0XCfe9-!a45&
U&0FM!GpeIU'Apm0YdUI"C"q55['6E[Bl!ZK*C$k1!68kC,hp!68kC)1$!6AdC,F
BlpTB!jL&-h$hSTZe5m5%6-%K0&rB(dINJ5"ec69e2(3@k"X,,D5$1P1A88"U)$U
6[5L"1L@NNqre`N,+"%TM3"T,r%TUmX'6lhA'r1LE#M(AA8)8HAeeY$'8EdL-fhQ
4#Nhl)dL*EACiBTecD@&%MqV8Tbh(TkASf#C8qXL[aEA*`r*9N!$(r-9lDbBU`FK
'r%"V+MlSFk!%mQAeI,P6X0Z%j)F1U2[ZR%"aDSd0PVR*bIfE"5,*J8acmki39qJ
3V&[UG$0U@a4`,4!cS!&m&q0N-JZ-hkhI-faJ&cDS9S2G*LSdK2XSV"UA9-K-B1m
fUY"TFM%`+M66qdjqIA$0R2mUD#X2e-DKlCJeL$eQ8J&B+('ET[XMPBR*&hMVhmf
)JkM"%aQiANa08a2ZJlK`%,542cJcih`3D3YrM&a9k#3d4LhGCK)@*AF,*iaFBB8
)%G)fTpBR9P`,Y4C@*cUMQD,+L62Iph$'DTXNC$Tj-rLi2$BEh9dc!h1cB+CU1RA
QGRQiDbH-dSU"DbH-dMpJHTiS-$r'&N[%bNf2%6%r%TeII95c,8S"QcU*p-rj&T!
!A!qID6dJmmZI0G,d#045Jf!`44r[E3K0DbH-dVUm9*fi)YUc8VM8`pTfJ5PKZ#F
,8mHC,mp2HH'HQHK!#BmFLDL8A-&BF4U`2["i-0,$mrB@b%f,i(3[i&`'H$a$Rja
FB0SJ-IYZ*-5i'2rK-6ic%8m+&!MP1GLj'#3eZ2%D`V$D9$$!9*firrhf6h(UGq+
BD9B`)`jFd8*0E9`H([%-A!q4MXq6R(5RTSk&G%#HfUh[qfjJ+##Q6T)r,A6m3[+
`fK#AYH6D))(G+$qQG%m#,CkC'phr18#[F"#L-b,hEFVQebmD-*IcqY[)6B[JG0h
JA*q(2rK*NfdpB&-Jkbr,Tb%eRIM#9)bi%I)6#*!!18iQV8!TfJp(F$-U%$hhBDV
0+a@`EXrkh4"0iPD5,Cd)M3(U4+G4BJXqb8"kVH)44'X)!0)1'YU5D`5HaX4`fRj
J8c9ZGSD52k[D*'%4@STL%%RL'X3r0*hEDAba*1UimM6IRDUq0#2E&DSKBk3+"P2
'EH2k1AFb$,dq@VV3jYT`(`C)Q3a4LfX0B(d4CX)Q2m)@Y-,&Ak$e,Ue5%3[M*BB
!lCca%VU"Z()[%-The+#Mc5he1%Y6[DP861d9`kGVqX,B3C@8U$S(hf$b15MeLPL
dF$4-!I+M5@'q3AQL1QJ,&HA&95NE5"ZZ`[[j2EpHD+$`6q5E&CBG39*p,E3K,P&
,AL)h!Ic`QVf9+$hPi,@@%I"aqh3mkEL)3@&ckX-[mI``fKV(kR46p8*Vi6PQN!"
G4(0-jYX"p`CVAUf3!+#daIZJ,aKPS1C[,D#[65fJl(33lJN,f[`0!A%[##SqkXM
Z,KRNEcNAid,prF,5lX)QbTU0a'YhqX2*GKV#'rHL`q[[PcJX#[8,DbK!aD"fPbh
eU"T6JhS`+T`A#[cA('R$`Lp-ZV[rS2JHCH2AI2Sk)%-PJVRp[&$Y4[cL!P1k5br
+PmXaqAGPS-9V8jI2c%`GJIqJCfYPaiiL8pl2k%aS!rZJ`6SA`d**Z[)`+UNXL8p
F1Sm4N!$pb5EZ$F@LS)3kqq06dFQ$,hFU6G6*ifTB6,T@k2`YRIkGDZMeDJ,hUdJ
E@E2)1BE$19L3!-F`!Zl[Mq641BEM0V$*iameN!#kDmRh%qiEM0"*TT!!ald3G96
*-P'iH[d66($Q8AfEDXFBH&&HSeSBeZKjKJKN@jaJB*N0K`J$m(5!EQPk,+-00UP
+pkQMk6DMjl++rCjif[Y,kc3)S*!!(bVQ$SIAIcj6@'1r`9"l#BFE9H#FKiBFQhI
(FcTjlaA-bKZ@@Gr@6Vk@G3e)k0H&6)iV&bUdAY"TDZR)G5SFaBUJl2qYII&*rdR
`b6CDh,A&'VlbVhT!pdHN"&+98FPB`X&-Ee4ar(85`[#f9%HmeLV&@VkeIk4Dc-`
CX+M&jhQFT6mk2UI#4aV&SBI#+*!!imA,D6U!H-,YmA,,GbVNkPJLbC!!QJ8`+L&
l(%!&8kICH-+G-2d[BC!!@P'(3*mjkR5@qZ"AGPC'r%#4+VfpGhhNE4M$bd!,4pE
N54JQG'h(HRFUj*-BI60Y(H6)615`'(dDE9%h9acHFe4`j55QCVSF3T!!"cFQS2b
R@)2S+kT!D[aph8Q8!U[Arc#JGFdFEm&Lr3XQ+L((haYfG@@b*AhZdTZqfdAl4$T
a[@Ql'm(iN!#jJ#dXC$i"c%U9@&$Nrm#!95aNmT3-'N"H`ESDK)N6&aSm'hGdXaK
RGM(m)U3)+2hG`N"&mN6YYAeR`QCUpDe%+,&J8VT%1X9pCm*p)6,mLeJX'NQAl%#
p-q3KXcMEdP%h5Kc"dP*[Db(#E+Uefr[[5Ad&rIMG4jHR9-+Ga-))U!l5R*1qDT!
!FCDXK5Y%B,EEjcFUr)V"LV3cfbk2TrJ%NAUM`Y3*Q#*9X2(I(!3BKphfJq25iSB
)RF[%f`(qPVrQeUUdVI%RdrP"11UMfF4eli3YT5UjT!16$M6m9EG8i9QLYId88F,
q*d%SZJKmI1-*3#m$%8,rU!9-IfZ-c#`lPjJZLCBS,@UI(CZ@SG)G"d*p((QS`8c
rMJAF9cZeD5b*PiYrTUdF9SfmBc""mT-G(KrbV26&+VR4!bb[E%'CaBUkJ*9M9+A
&&VfqN!!FFMCBqNImET0AXl6)j[PFPrHN+"fj(j2GEpQV[!Qc0V6`jV1cb%'Xq@*
DE2)CieE#JbQZJrh#9%@54&MrI3ikCFp(rDUe9)15HH+c0d%FT`[V@"DD3(!c)P4
FNU%K@$Sdmi16)P6kNZe*1[`l@,%$32e[9*+mAd4Ur-e1&m1PNI@4C5MmI9J"Dc[
G8Qm39'VM*$A*!I`l@2e8)B1S'PLa$kf3!*H!Fd"BMmj8UUKp('%kG3dFqYe`rC-
L*1e!br4jXM!Fi%)B4CB)B*Q`hl%q584+D$4HUHMRT+qJm+m)kk3'S#`K+JaYdGG
6JX99N!"2TB-X9V09e[bl@-,r3d$[Nm*0[#K%E$2Vb-a6F!di5cb*X"EZ1)V3c*@
&@aiG%ar@UIDMN!#imTR[aj0%U6(h')209)U*L`8LAX24(4-IeURf+9DiI-AV`mc
Cl4b@*D6LLDS[c#k*`BJ'CFNNHKe#30PPr#DC$Q19,1#+[ihFXPlBX!8XLCIjIc2
Zd3'!rQQS3Vd9ZJIp)Z+dkRMAL5e)*GTHJT@D,(`'(FQca+Rda&AdXhKp!PlUj0H
dY-8(cXk!#2pH`r)GCCC"-%bMIF(mC&pUmZCPPZr*&keUp(FaDF0R%8'3!#%R@Sc
Z(2V5KYBrV20QV5TJd,4VUV0YTi`3V5'Ld+fkc4GG#UUcEDG!"Hk`NcRb(55@,XN
AV3U(Dc*(Ph6GYpP3rQYPE0DVV+R26&A$p2lN-&!GI*Eb30Ipm"IXjBG"U&dX-*!
!j*j3r[hlhV0$Tm@9Jm`DYjrSqh$A@ZR&checMX@EQ85i$UIFNq[`)IHhK$CUSp&
(YL[4XY2YKT!!e&`epfS2LLG1aAU1)81RbBm@9FijDZ$@#%**HJqej8ikHI3h+VP
$%GJ1`ESj@flQ*(Uma6pjYD1pTlm`GqBM!j08U5(h'2h4qBU+bV6+[B*A[!T9MRC
6Pp40EH6qrIN)RB%Bc1(h3QV1Q)I[YF%8ARTHdVl@!8+S3JJ4ha9FQe5VTaVmqG*
$&+5jKJ%mrSM&`MRdLNDRH$dcrRRSMM1bcT!!Z4Yq%@@BfqHRLI3BbbSLbk`)mXN
rbRrFZak2YEaFa6e%6#i@lF(@p+bk-ElqA-9ECE[+1GcD8RVpLYih(1$d28E$Tdh
5T&$bA[M8(4r2F&c"-h8ji[2E4%hGGdS1#ZcXr3IaNJSplD`l'a0"`lNQG[%RCbr
EBE`NTdEm(@D@0R0mVEhr`GeUmYB6V(CJN!#A(Q#jAHJ[rPA&cQ[*9G,)6,0KReA
4EFTpZqlQ(-mJF02pDb*`4P*er@Y[)L0X)PEZ9!bUrpaFQPMJ+RUD8Z4DDNNbJ%!
`SZkIhj!!HH4YRm-&3&Ul9fXc4aBi+AT5jpe@FETIDNIaflcmceJcIGlb&(Gfe&G
8k`EGULLYGqA03@6$F(SPIHl5l9jI)m5G[6BNb@CI!RQP96'hYq,'KMSKD+&F3'Z
Af,m*G#&helBbCL+liU#bG#&helD5CL+liU#RG+H9I5GhG0)T%(Qf4Z%I"A42bT1
RkDa2bPK&c(5eEUVC`R$q+0Xkrh@aDhAdDm8QeG3)`S-'@Chh6%Q8XJY5$H4D`&5
IMX9kXh@PDa`aFY%2U"-"`3iEZMJ[ec#+18b4'hcX14Z,hX&JmUbJ$T5+mU`Xk@l
Cj[rN,jpM#f49H5UA-L98GQ#q,pm"j#LIGI),e,jh"D,irFki#rf*C"ZeADb---M
c)pI1H,X1$NjJ&F&VL'!,H+A[h&bGr&"kN!"j2M@qbY5"9(CJ[LmHKH3SRk846AA
T`Q`d)CpV&+4Rfj5S#lA"ZaZXijJ9)DbFj%Pd4,Dj)S1,!BRr'l5B!U9EDcm)-P3
3'+e2bkYqIB6#`G*V8R`d0IjeTF*2p1P5qENUr6AQ9-U**@!UAK98Te[cGBTDY&i
-UNUP4-d,jab*#20ikp@S-MQK'`Y2b$cG&U3dl62$(JXASIm,(%"XlGRm1%QmIFm
JP+N!EhAHCKTVX0%"61ThL8paebDEI03q3&G8594J)QAE%P6b$Q#I3m)dYP3)aLp
rqQ1"SjqhAJ[#R[cI+RiL6UB&)ab*k$+*L%mF-S8`DFTrMAhX4r@cEAcQ0-p5!S!
FqkLR62m6)[$$%CL+@NF,!5RQTFqI-&IqjNr89&bk$bV`#eEd15Uj-P3XJMXrZbb
+ZU,6M%%N(qbUIKI##KBFH[!FL[3Q+VN69#b[E*B6H&l$)"f%cih%a+Tq1+HmIF[
b)YX%e$R#TdGL&,8A`pZX!A@%Da%##e,T3+TP*RhhmTr-)Cm6FjCF6raI@&["6-H
f`Ae8B40e1QXFLU*0cde"3'eD-Tcd@)TURRR+Qp)9'G,4GpMi%LqA*V1f0FJ+bGi
qYGL&1cB@c#%d,Bap!I)"'r4BAFPh8IZJY*)`rA@Eh8i32Tfj+[)@b66Aqf2N8hc
$"4#I9QSlTr'JIGhbqP),K@KJ)QAEK)#+aSj&9GIL'ajpDjQXafSbXDiF,cRpTF$
(5m%409jaf,IBcML3!$j2bT!!#jrKh9hZ*d'$rajcZMkqi0VRF%9S,8UU-rrN'AB
j`KC%k%`KbTeh(1TB8V"!,r(&I4d,83YB8V"!&fjVcdF@(V8KRjeh%E*5b%"BEV$
2IreVPT!!X"c"6&5fR96EFm9e2'[[LN"k0$Cpb`[rAXBFp9r#rkeibqMeY0d3h@S
fj#&BZq$d!D%f`TrDBq4[@*P"@&*fGj%DABpKN!!686B3p*!!Mh-"cK"Fj6h"6&5
5DbNk+04@GdNY)(h&`VpcMkQ+CD!6UKbA3(*1EkI0J'AV(&Va%&B@AqYDXLDm@-'
C2)$#m5'pA)diGm,m&*68S)!mP`aHe0HE,"T&K'E25d5M1)054lUYY@LKrbck5QF
6KM&iI*DEp&NJVi*qdL`amk&PSb4kfB*qJj!!%"fqe2ak(,$ZdP4Nqb(NeeK4%"0
8d`'"@)C20f9VHh0cHR()#,X%bm&-)D-"!j%0SDek1-'i6UqIN!#4j&0fZ#j-leA
YFPJQS[p%#L&qAB-1G(6*jkmFUlCN)%GNf5!&9mq%)A,8)`iMS8X@eb!9LMlpf`X
McS49CKZ)T(DN91dkXGTUk"Cf3*!!(RNDr1-b%'Y(dUL8E2PYCYNc%'Z26P64)#C
`XP)DGeJY9G%kDF-F(bVpY4$MUVKcp5m3N!$"Gmk2&b$YGJ4!rNaQE+#Nfc#kmY+
3!1N3,D"m`ZLA`K[+ZZVrJh6Jik&``(H+efj%cpr#II3,Jh(#`LC%S49B`QYD3&,
E`Z)DA30QN!$e01K-['MYic&FTm1X`UU23#&KlA@$Drr*NK@,cc88NT`%edFaLTH
Y0r4V`U@I4il+2JP#hE"h1ASlYKTZS'-al6HIhEFQr8GHbPdfl@ZF-@&mbq4l5I3
Fp5FJk2@HZ4*0T)Z`)+9D+0R"TZNE"!&#,$6T[ZIN!(RSehA*J-d6kpE8bqrZl8j
!ZKPDhBBQ*p,iPF08rDPS+8(MGjNd)ll`9iDbIp&H(YJkBcr*&Yfc8k6U$c)H6%`
+#q+@kk20-1pj(Ze0#0V@j"e3K)he1C8Rr1J*NT4pUra2J,J5%MX[2K'A3@GpPjP
RZZe(RrjP#&$9dbk2,-aaXq%H-ihSV*m@3XS"Z6Plra4`eer$28hMXqUR+$IFrF4
63dM3H&K2l50RDZ5ECPZ-bAhj-,Uib+JX0Ip*(JlUHIp`4P+(2hSi'35B2)`89`q
(q#))54,rp9Dp86hHU6'%mIH*(P5jqdN@YKrJaHiah2&piHLCq9D$J$BhX!3PFq*
891E*f!4@A"SlL'ffUCYr,0Je2Ia9D8*"c(bJeaN6iJHEr)l,3#k2P&B&`a&1-aT
Q0'B&pfX6hZKmKa0B9XR&9$Bc,rXc32Xe9(V4-chlZ2[0F-)PF3Mrfcr#ZhE#9[H
r%"k(-d#SfdQj$dP30U+1KbSFaHaBK0ST"Lbf0#bb0+(DYU%XI63(hT!!%U8b%%N
h4PEhL[PcJm4`&'!2`RKa%2B,KeMFTh2lhdqB%F)Xi$62d'h[c"lN"6V#NamrU)F
N3*%A%&UShd3+5A0K--AE'Kbl(eM"`'#I"6r#"l3j*`3iP9BBB[[S2EP*5EZF@"G
f%4HlceJ$%F*BKd(#"De!Kd)3a4-8Y2YDZeB4"Fq0@P$l1ViX#4"C&l&*!pA#Zla
B'(CM`baF0!1K`LklhSKLU&&Mi&H%'GN&d36G,-aXHNbPG@2H-X@Ck+m1dUVIjmX
aScrUJ%d@@0e8Npbp2fa8d1iBipJL`6f!4*A"P&-A"6+Z)$E,RUcjL`fL#f`k'15
@6S,)08j,YR!iYPVId"1"Di!LKV!iS!G(0+d,U)!kaqJ'M@R!@Q5(XC301UiPEjm
1rcUJ!5K89eNcTN$rE-ClpqcMUT0-NCCYcd"$b&kNZqV-F$d'(MX+B*kC[F1(&RI
P`KrNa*PT0hq!L9S@5F942f4UCZ"*AS%RV'md#i"k&UhM#"LK&*TfPl5$9(1Cm[b
XHc5`Q5fA1$jiDLm6h1qRX&f4[%PPN3a%C,D,XUfJ@48'q)(bQDI(9(K'[hGmQFf
k-PK5%AU9FK%5)6ihMFF,(AcX)BapRB#jLDlU@dQ'02+!-1`8V@GBR8Y-)'IIC(f
%m9a""j3%XYf"IAqEbVA[K[I*Fph0Fjf+Ka'"lXN+Tb4#*#%"(8$d'fIN@k!0GJk
$m3[+J,8"4*5L+L$8F)[GCQrk6!)YFAKL)Gjcp0h%U(!(U&&)ebh#,$TI[rKhl[A
*MUPiCNXeB'Ck01Tj*i#5'8Ph!jB)@M*i96&TUfSQh#9p"d*4dX4idJI&8ENMf63
3F)BUc"#hkVQEk'B)B`pqJb+11XdfF1rJ1K8X)H6-e(@AGrr-qlKG$iHRQ2qiZIZ
i&JrK,,NBZ-@fCTBI,jXX%#N(8TQEmMN(Q%+DQ##D"cT#,,`T$3NQZ3%LlFT@mB!
28rY3REJ(#N+D!RE#fhBJfiBJ`Xef%(F9)+MYG@[*p+)"CeLpH(T4-U5e5mCa`mp
&Ul%,+m'qH&p3%'!-*"22C'Q+KGImC(k+K@Y#bKCH&2i5SQQY5F$YhcB(#N,)i'[
[,+(N,1$NlhLKlbaAj0b&IC+cM+rFM&6JP@!XAL@L+V6bfJSmk@8Elk+dYjc15iC
J"VSK8`@`2T-*HcRDpi`k&he@kA82,jpiR9Lp4kf1c#JhJUFBT"aDKP1P%#$m#K&
XqElE"3rES3p$ab)Dfb,lfmF2D[`LiY[Fkh#++K$UUmkXK6hYh0qiIQD$5dK8emc
K0mb1l@X"i@[-iHfrA#,d%(#V+LEUFF2`@25@2I[bZ2Z&Z$f"m[aU9*,r1e@Spd%
Jc1(YJeq3!$6bRm9K)CVd2C,Fphf@`IGhUR4R@"Pp%JG219B0iaq*I!Alm[@hUaD
(00h-e$Fe10IeZ@AbaA%KQM,*"44@CH2idRc0Q0eb2k8-h+Yp9ZM$%EYm"`VGPqb
EAF9P)F1F%-aUT4A-k$F(3[c`jK2`"a2mAm(b)VCm&RM,)G`DI349FbT@I--+!EV
rN!$G5ea$LZJ&H!)$&J"92Laq+5cYPcS*!k$A(fEL"h6mYr,Y'kN!PdrGEcR63NJ
+!3E5,5$`C0i,jFqAj0@C1QqGP1DE$j05f,![HY"U#qR3m0YJTmh4KQD3!%%'8JI
r$0*dKfEhrND(bbQlh3X+A(R04lKXeM)+,,@pmj&PiH3Y!&6-9PcFV`*1#Vk(hpQ
EiJ%dc91PHIV%VAfd!!kZF#2riMNUK`@5)Z'PFb9C$eE,VJrAQTKmfm9a!p8'%12
F@Zl,1X,(#b&@*+liI$%2*$VP1*[`!10VYejZY+pBUk+YbR"QRLNZ9S1m9K@Zh$S
a"jMGj3*XeF@6)5cDj'4(NC,-6A@LmF00cfQE$*(Nc*je(,00qm40X[Gm31d`q#d
J)1d`qqD!R6Cll9M`cbQf+m+Ymje(U*l,cSraGSY@G[!2erLBY!XXpZ5blH)JmMV
(,!$NH,X5)UK`!8icLkY2aGjfTLkfqIb8J'8bEKBe@P&kE4p&*a2I0l'CQ"9@cbM
&Z5C@$ihYA3e!&Y#*9!6GVZQRj"kJS*dZP13AGEL"2TYG@X4(1YQE$c(51V(bPAM
+Pk6Mhk&B#13LbS5Ll(@l&b@@i$p4r&S@,*G8UMI0KH8BK`GCHh6H!6hrVX#pfE2
2@Z0@RrMr#jSk!*c,hIY-55`KA!8$)i#UPr,k3"Jhcd()rX24iKb'+6)!#X%jEaE
m#EZ'm(JiZ+LdK8jKBYJQ8VY`a!k9DM422CR1"8P`S1c&G,Jq3+TLJ+1%5(%-,i+
jl9b!a8Gra0[hQd5r9B25B+PN!JVI(05XU"p(@LRU9!&CVpe1`R'!rG(Vpb,fJ2r
Eh&K8IP#0`NJk9+P$[M3ZB,dlph62@"kaP,er(!@fRDT9V%1"!1N0MR1M1PqR,@E
c@'1+P&'Ufh"C8G*1mJq+K-`M6rr`Hm82b[,5SeJ0S'8m+CYJ%VQTdUR#hf5'`[0
jhf6amD%`j%NjJk5d8MTVh"YN#e(#`D"[Ni%V0%pkFq`La"ccY#)El3H(53E0HY5
VMZU+1eRaZdk69Dck$&qMFaCH4Vr0Ji4kUEqf6i9%,,G$CY)8KJGP*(VdPJe0IjE
J*Ia#kRhdaSM2&Ka91ME,qT`L,(pK"dQ*PFR%%qV-$lq&4Z0f[c)pD#J[0D!"M32
Rae"S8*2#-T[8N!!D6L,"J'D#`S0J`S99QR(558Jkb@IrMaBJJ#-lSqFa-CSDcI0
HX[6H5lql6MV*LU%Zp"8DqiqRDD`3!AdQq@Si3)@Y5(ff9,R3VAUF$lQ&bNMTVc)
Z0Yq$NG'+-(!dr@VXj"L&mRr8*mXL2qLUCP%,PXR*A8#9`0'ZpZ)9$MEYd"`5ZFU
5da)8V-4),X6MQASJ'5`kBq$MH[4J(+09p8XZ3C3Ec41$AA&DF#[NM(62'jbZr,Y
1fNip@2m,8LeMJKZEIDYp30bbSk(ESUP-aH$'I#'IA#&j93E&h&a335@5GErlbj(
*r",#Q'SRhIaY'lKi1JTS!heX+DSlc-j`HIeNKcV1G21l[X[qF,4Hfd@i"#B(GRC
ZqUG8Q#GU&*Ak@(hrPNY&c%r,)@l1A`+RmQ2URM4m+NNZB%llY4cFFB-YGN$Qi@[
Vl$-hRI`R2ZKkQDqi#*eP*"E1$jNVNRfpNi[f1-J+1e%@TY*$R3l,q(cMDf1j"4C
k6D!SK(hhdA2SkKhE,46RpMJbP`b@4FPfDPbZ"4B6P%UcI3j[VAcjL*j)Gp",&hB
NNqcI&Yh!TH2#FRdKZmJ'Qf0!+i!b(*3HQ(+lhm`2bj48G+jVRZbh`QAG5@e3fi@
SbdYa0ephES8[)l!eQA0+5p53!1fPAJK9,qeQdbq!I0Yi4kVV`CbR,X)@,25,[!p
#ja#j&+Fh2d%DNlHrY8+$cJp9+13)S)8VQEhbaPB$"&5J6E'G*I&&GhBZQ0Mc%pq
pc,RH%*pj,#aVDFfSlhUT[hDG%jEliD+5UQ9lfkNe,J$E(,)HS8(FRE`bCYGM-%J
[C[D!&IdrGq!&j&[&Z`F@Jj%9,)@@MM!hhVZST2*%,"4aL[-B&-bG44@S1&EF3%'
Yc!kRN!$H3A""Np+kLEq`QSlam,K0YMZ4X[S$$)!8ErDN8#)PLq&23+Qi6ECrfKS
H9($ji%Y842RlNe@&Z+FF,,HM1`a!MEmb@#eBa+-[[,qT$"X(hfAa$T+r6V`jR93
6B,5rQ1Di4B3BB$GYi+pmc#35bq%3ibqE+B(N9bArRm,fm&+(P+rZRCbi3c%N,rp
HLY98GJ'(P#j)+A`Z1Qp)Dqci(H$G-*V$6b@$C#$NUChFp%HARlrl,"HKUZ!5JK!
MEE"cG9KVPYmRl6B8%Ud8!irc,KU$d$%)6lR9Q*&#A!8h!F5BAZjc&TUS+J9XmJE
+JP+T%RTacLlG6#DPr$1b%*F*,DeCcV5eQ1!SA9Cd+4h'j43("K)DaS@b))-SX1,
R"CQh9fB#F`F@LrUj"ZbCRp!IJ1kU82NMR4B[d%6$Ta)X*ZlGD9JR-A@"0Dal5E+
MRmm#DcHR#9a`!Y[S(()dTjB(6PqT"-P19%1YiJlGf%['fh5Sc2!k8RLmM`48XJ0
IQHh3%19$)1UT0kMV,iVpeUTM+J6-b"Ed,RGSYI9F[b-BbF-d#rU`#md,+M+!D`8
KpR5M,IIS-6If!,NPc[9m2$$3%1Z$qKZR96QZcAML%$5%!b1!KYX-dV5",5lEh#l
*#f!HiDNY)8fT`E-)*Ni+U,G*S25SYfKKSCmmqH3YYk&QcGXX+3LQd#(eS8PXqP`
Y(%e`0A41#@AXK'EhbJEUpNb1X"39Q!,j,SBX06I)$'Q9!6PUf!LJGI-XP[h#5!i
iQ'BLhITG*4bNB"+qh[Vjkl*5Fp#AI*cfNlqG("U8YbDqX'VR)@5@`a[8`S!3Gq[
"e0N@CV6F2aR#0CEGjjhl$#080A@H,Hi$"9"65#+K!5l02MUS(29pDi@`fIGNqR"
apHIjD9i$icTp5`RVF1H[,(SM"AFFKCS1(US6S0S)TDh3(+&`FEk9"UrTCN*i[[U
Qh-Gk+c@fj1%F3YXp2YlFUjd%V6b&[iM"!LMVfi8,8ZU+KdEl`&&#E(-LLUfhlTh
8*Yl#ilMkT9'Xi#@8lUSmA6im5jm4K+EYC+Tmb2MNkAh80,#"FDdVkm[p&*qeB`U
qmf@Y4#P[+482-IVrG@DbB(ANp4k-@,(MqDG#a-49V&JMB+impjVZXalk3VhmYaK
adh5A(8l*b!J-VjANP&a'eK3S5CURF4T*qY!4APj@4BeBA`*,UXhk*qL1LdK8jMV
bPFK-!D$@hc9IQaBGRScEEEpU(P$N6kP&f1T&91-P@`KVr0aMj[3JdVPk(N("LV"
XmKE5c#8Z88M#%QeA2@1YMZE-AJ*FXd(3pamPjNL0R8MF%`mBeL$M'BTH(+cHbeq
bAkPGrY%r3[Y,lI`QELh8q(1MMUFGP%jJLMqUd+Ml,KENC!DcG%6jLS9B3c4D$Kj
Xh(QlaUN($@#L0e+4k44521J3CEeC,,P!cPhq`i3*Gfa2c(QdFqq&++!(*e"0+qS
)QB8RL$9M,h$G"JJjHj2pc3KdRP68+`29I3USh[qRQ5)2&1EZ2ma[eBFQ99(hC5)
1l*@1Kdke+[T)QpamC%kkKj4flX(-J`h"EI(Qe%PjDYAj0lP1@NC"ll`r#)l@!VG
q4[1@`l,K,&Q8pdb)[$q90"iXcS2@5p8LLE*-XKMKGeb&QhBdNpH!`TP(`+-'B$6
-`#A3E`m4`)%[--L$(SZ4!HMLh`r@bcIPR+IIPX2Fd""RH8Tj-*Q,%d%L"ZZ!(Tp
1$CGk6UIh(pj`i-,#APH++`G3F62`Ic9@@S8!C`&@Ni@T"M@(V!FaJr%H5AG[%j-
1-`m3FM*0Nc"Z2TD"3+dCEETBq!Lap#cSE4c'3!H[8B'4J255$-)HrcCNcpKaU&)
S("j8jDHZZ2UP4)dbbV4P-*4MMN$CFqbNb3c#P)Q0)8[X4bC#89FTL1cph"JZhDi
CHADXH!l1RKK--Ge450SQ+6p+T(jhbBqe5!2!L1(RCN$JK9r@l1dX@+1@T+JLrAN
pY#'-rY8B,DD-pC!!H4K&HX8ahqIM9$HDQlR%1!Q3!(8TpK'5d&4AV4&Bd%,$4!r
Xd%!PZadcE`cS&CFZ'l&f-+0Fh"VQ)'I&jGQI,M$GE,eIFB',XIUXRHc4*IAD&E!
ZJ5ld2@JF[1Z(29*5hi0GM!GHCRl6rMb3!"A`r&63MYF,@JpB,K"BU&9G-+GkEhQ
0Ah8"Y6KYeK%fB-M93fD!Gal&-TKhJ4j$j@[i@0ma#-",8ZNeVQ%Ql)Y%d"!F`CD
MK'cEhKT5KBePeYh`HULl,@E[09jVBp,CV@F)"qIErMe1@2&E45KY%fjQj$@A!ie
*qS%M'(K8DpCBrBj+Qlm6%p31V@GY+'d,lkqT[bUGMfe4XF@pDif$MXSLmZAGeP!
@a08Y,YIS3&QleJ5q`Qjh&Bd8&8"a0%Z0G!dRI!Ia56dE!8r@`[lKh#KKq6PJeXJ
4*V(YJXd-T%@R@cT)hBeQ*1DNZaaFi$5Fd*,I5A!FrB%Pd!me455dY-Vc3%LJRVL
af0m8c$EVrVP`R3,3[)44#i-dqhfNcGNE&(DIXi"LRJ0CBJk@V8[K[,JP,U3#FC*
c5#Qm2bA#hXSp@SE3Tm$G$h1erXIiMZ0(UFiFIFRCqT*aA81fr95E0%bl5E3Z'A"
5-G"81l%0GaM35i!0[kF0UA*d[dZ1V0qec-kS3U@c@MF51I*Z@PYJm&L6X2A#[lQ
E`ZH!H$AfHS@MejA*Qik&Yl',#*kMZ"JNcq#qQQTKV8[Z*K42USb,#*V"8PGGkR)
82+h3#+G&VCCpZYQ2ChVMb3Ra33MRQGaidE0)Fq`kL6+USm3DeU%aqDMLp92510'
"Y0p4,U(3Z8*1"ABmN3C9lT3C30qja+Slpf$!Y2E)-NKZPQe5G4!PE58SS[P(bZL
G#!*Y&#9Zf6R"m64CX(6kh8PN8ZaiBI08"#&e"V4YA*+k,ejBa8QRPREmEf5aHSU
Dbl%QbY(eiVCS9X!5#$NqV9UaL`Rj0)%'Y4e26`'!qlQNFI)@lCeXM+ApERR`2RR
bD5,2S#2SS5Da0@"*1r+bF0-hU#kk5l6,&*,IY,L#RbM[l("$(k69mI5"$q#Mkj!
!!U)(M14B"MG)lS`pfpCQ5M(8U9c#XN!TJ+N0LCGr4(mdNi(33A-AlJhBGf4Z`HB
aH@ER+9Gh5-i)HAZQDqc@ec(N2C`Gj&1FafrPhQ1&[-"aB2fX9EGqrdmFeR)fdYP
aa"@XUm',5P$[Z+'Lm-MBmbdr3!D1cEIYB-%M@JPYc3M4K@Kr(+`Fq3))YZ8Z#Yi
2R,*8rF"[9aFa$FjdB4[A#bHRr6h[FrTXqJ*aUY&j$E'-$$%9cIU(+B[Vbj,q&NR
`'Z&('kP!3A2+Y2A+6id`qL#Rbe48kTU)XSGJ9c,r9A$9bIUFhf[PmkGCPY(Y)#k
2e%Z`*Je!J)LPS3L)l)*h*,3r"d*kj!([HF@C!cqab-IFPTMq'4a$cH5&46NZDeX
Vc'T8XDAhJh2G+4N,)5i*e(IN(aC$fK@X-VN2f8S9(+GBZUCaUC9Jr@c4U8[UIhQ
`6G2a@lQ#86bYIlf'$l`V55PDkp'R6j*cI,"H4c'Sp![mK+06[k)F$6dQdKlL2aS
H6i*JP0X8Si6+"rmFGGAUA@EpC#M#EcUpc$pF8DBYX9D#TDBMQHM0[1drThN6j*6
l6GXfP0*%TK-PQEd)(@1[p+VmNQ[IrjrZF9&fiNA-R1ld,TCr1M,aqfka$hAX8JZ
C`[jqVNq@!P`eE9#P@bN+[&5iA$6I[03JaRh1PImF#Y0',444XR6JiS%rM@C-cIP
kR#GjZF"N"N)r5@c-DXM`-Dr5I"p--4DQU'EN0D'aI@"-h5J$kbRhZpbSd&QHP(%
S3(pQJhJ(TD68(Q$clc@Kr`DjFM'UXMM5d#0fa[EPd56"RCA-Ga@2i3bb8F,ij1'
-VfCap&XZ+BQ1R0[D,!jFB'iFVIJGa2*P)FkJ+X`)C$CrEleP2@#m8I&b'P8NFc*
GHid,EUT$Rd#r$Hr83+6D5q5Hj+FhY(p%V6BhXe8VHSC$U[T+8L!eS%XSA(YQrH[
a%(&rm8,-8P1,qD!JEZ(k6"`fq+5@iBAc-XdX8J)-Tb@r$4i$Jqk&FIVCdQe`R#R
ASG'@PJ-9P0)EYLI2)F@DTe*f2c"@fkVGJ-iIGJmqG0Vb$lFK'+A$b,$N"JjfpN[
0)&9kSb&`KHM$Xc!9iUHa5S6#`S#$H$p9qM!Y'kiXJe8GF+ii%Q[kX0P(E2%p0bj
r`Y9h[P8f*Xp+29FpU$q!8C!!fN9r+*R#G[j`$Zc@RE`,EA4r1`F'RjQR"M)rfaH
3!'c#fBSA`KaaPp'S!ZhN6PQ`)'6EU)QKDC'@N!$khT+b#a%pf,lNkrhLXR5CI4,
Jm6UQ4H0drPJ`r)0Gp0[G`11c&&Mr"TR!Ne%*PH2)c0r,V1-1c"0PI5'pPaJj(+I
mLG%hh1Rm)EdHcMA#clh!%k2&-GPG,YdBATNqqVemYQ*J38I,RbpH*J!cLGK[UFX
iS,-8%kKG9K(#"TIF-&J!f*I`18Nir*CSXTDhIIJ6M+*SDhSB0a'Lf@243MUjcL6
2mJmEd3A#HX$CQ1mX-iXI5V&HH6V&)pN`)6,Zi&"hQ0qTJr*M0ek9RE5jX3G6Dq,
BQBdjlhR%aL$"ee'8hlf#0,6p3AAJZc6If3Q98UD+kKbFHE(U&&KhL,hp`&4BPcG
e1kY48DR3V'pFa"HCSeTc4+$j4'256MDMf*`R2mMI0mY["KRS&eJj`(H)L,HjQG'
$DA6!p'dj9bL9h`NK$$Jk6h645)V3ijArrh(INMSLLF`T25b[hh#P0$AI"hE&IAh
[&0q`I'Dd0d,C(j8S!R%bpK5CArmUV)[4)'UAA!0*N!""&CNBFfBU24fi#1ViUY*
[-5bB)hL[GKVd$3&(AR`E-1!HFl)$)P!GB6Y@k3Z'*1)k@%h)(*LTj8UfE41AB4G
eI@EqG1GiK8cDqASe#(iU6'cra3MrR6BaB-lhTUprK9K@8X1Li19!I%mQi4Q("Bb
5220e@3Z90(b2Z0-6)`dadBraa1M8MYThUCi1&bQ%%*f2l@3af,Z!@i##TB0D$#'
fTb6j$-4cfYdMaV60QDU`'`M@h%ESUBkCNrh4CDUjqUUDBb(QA!kQS[)3VjN!aR"
9c2TFGHf`0*q2R`aK811L4&1@Qkdfq5!&IGh02FQ[FBX6RFpQljAlk#Mjdb4pGA(
J(24(QTC$Mdm+)PYqL&%%DaEcTa8LR(&)%B`5Rh@p'rM-'kVMX%mkY%)FMk%hi(B
ADdB@3)QU6DXd#lid&*Y9bf"ii)$q1aM6Ze+2km5*-3)1IH#*R6J1iilJ!A9DRr@
2`FQCMfc%0Ula992'QrJmE-rPf`36dkEJJcIYlc6NQq$L0kUPCi@dc-NSMq2Bi$S
NE3Ca,S+6JCk3!#C5N!!Vk12jBF[@T-&Tr+S@[L('FIKTQmP5d3d6fUB@1'a3@0Q
l+jX*I15Si'S8UUS6[14ai0pTIG1*i2+1EHLqmF45`b(G53Aaa&2@MqrBcCj,[P,
`1im*F!-BqI0e8-UBAGZE%rABmLi3Pa1XTKD&QbliZ,+U+UDU",%Dr5SG6h%6EIQ
qGirRqD40I8I"J2l1h8QCfGI1(d*rCm&m`N!a!42-TcHQMZmkQAFYqCq-lUr[Xd$
BH#+[-HlZq[S-r)`Hr95`HcVhY)r$eQk*Fm-q#kr21piNKp)QFSf[3aZ6p[C$iGp
rfUfX9UCkrMQG5MpY$H86DmCQFJc+cUbIG8a"P"VT-+`qTBl``!V56q3TS(%A'#N
TF6X''HVZq[SNrM+`J'A+h4A!aEZ$CmNc3D1!(fPMACaeSBlhh4Ld+GZqDe6HF%$
IHNmKd6k0+iQq1MGEMNT`KB!!jARpIjp(0V!M$N-0%VNh'TTb)dmQD[813`fEDfe
FjCSeA(N`F[@[j`AYkmYA'H%mHXmIhRaFZaV1JjrQ@2IKN!#KXep+dFpChD(V4qG
mmAq)LEUdEIPZ!AC"!fb8kUDS"k#5i5"eG5QIEP'A4h!X$(rRJY$GJ'HrP#@ahK*
4e9UZc-Sa1ScQl''P'qE!(&5bI4aFUUkNLd"`VY9IM-`l#mI5Ta--f)5Ec(FkMa[
qD$Hq6Ql#*P+!-l&kG0$EQPde0GX#m#,R@&hp2bh1kE05e'UljLV8CYmYrKRN#T[
-1@NF#kdJEFBfH$08'ri3Gfh!KkB1RA,[mYS!%L$YFf!LdR89ERhQ-FC,b2(Y9FN
"b"C&T-T$eV3cKD"!@@CY141QFIVqXf8aN!"!G$NjZk4d6eMHYLHD@61-JeGbZ1%
3fc",Uc"33@Lf!`-A6UrCheKfhJ@-pPA*LGLm@P$'H0d,(@')*XJE[*M5Q5""RDE
+m-!`mS)rLjhcMkffEE(68BbY-5mjIf+1@LNF(dNSk(rp)bHb94$NN!"e'ZqV#Z1
6lN&!1KE5-2kecU-YSHXr%#"E#FTa'CfVm8!d(-LibpNjVA(N2RR)e'#NmreYii'
$QKdm$!0%QQBr0pKdZ-qB[dYVNBL$H[VNd*fl'PD!HLQ-($qKV!N@q*N8%,ZaHP3
bG(@E!K,X2*D9R8jh5NqfP2XhAQ6I!ePE[CD!U@dr4TmppaYPdY9DNlJM&K0TAEJ
@`ilMEKQXSqFC"hKr%HGlD+fFjFeA&HB&0%iQPb*Y@kcBH-TpS$qM@ZMJJIRj%-&
U5XrYSe[p!&`)B69r%VD00@#&rYrj6T6X%kZ@0L2bPBEckD%%QfE*eTmGGIK8QQS
,lY"9@4C8Q629$HY[f#a8PFQDL##!`Z8-`ac$6UdR5@hZZX)5*6*pjQ1E)0pq50M
5I2+Jr10E,pdF30"Se(-0jiCG2rK"#k@MMC@TrF)Pd+$CHUijrSjMCJ((EUGBIlF
ed$jNVS+Cjr%9AKj2EH0*$Z'$9a9dj&0E"ZFi($p4*lh@c6f"h80E4L3#bic6C8Z
qKQLA!L843i#CVYLqJIf3!"&bZ23lLBmQ13cSC`Lmj4a8@k25kNVCheKV)!0*FB*
+&PRU,8bZQ[8drX6I3p#fUIkJUI`Z[6IRB3L0+2c'qF#Q90T1*RrXYI(F@f%V%XD
K2KCa"(HAH,8Qq!NBC,VZH2I'[*a9)#"!6Hp&Fq@a9D((U)Tp9h53!"Ql'0k9fF`
dbYh+J*%4,(UGRb%aN!$p'B9RhLkf9XEB`#R9Lq&!NP88XHlMkd1Dda&"JDj0,Ek
+(5CV6f$FDp%DNI-HTPp&r8lXkA0&-*6'jR3F,3faX@eE(pRY)'UK&qfCmkkJRTM
*0$Yalq!1aI(63m[!YV%UjA%H#$D"2eG0@`qq8JJVe-lD1Z`!@1e5l1HUrX5[HXD
l3!&Ye$ZP)d"C`ECkjD'Z&Pac)ZiQ-lKXQPX1*8-01G+2fPND9lQaTV8R1d$P)D"
FR!mfGL"Xf)faJar1c@im581XZLpEfDA(2d)&-V`BK%V"FSm%`"EljGNGJbXk4Mc
eAQ(Qe99XAe-9DGr+15c1f@Nh1X5kk5q+X&jEM-RM[h)0khIX8kV2%M#6'1X(kQZ
d9%fKeiK,QKA'"'2CNPD-BZD[li1!8-FjqLSZa$QmE",hHcMhf4h'(PQi[4Jh&XQ
8'XTb[1Yb4c4A2$MflRMK&&hC8VZ)f'!RP["LH(J-&5`@jH0Br!6(berGGCXX[&[
jLXpF+F,Hf%`KQXI'phCE)+CD8"#M,J+4NC12-#)!i03SriM`QX(eaS!8IRPckYp
qkZ01+NBBbr`V,&VD8UrC3A'C*UZp$+)CpYq)hqCRNI('2S6$65fZqiI@qB)CXH6
BhGIjqFN`,U&0-YC8fh9PFd,)PDac[[criZk#E0qclb@08Yq&L%m!+1RXR)FHk(M
9f$&Eq,q"kGHH*24CaPRh'LpAHLKV&QK9dQ)"RXJfBh!rBLeld4UcZ'V`@L1hYAX
q`+Ac5U"G*Gla52V$"Z!!mkqJ[,2cHVal8kXdBKUC[LGkUFkmrEPrmH9&,bZeM1!
$b6X2%00a2pTmRKQlFKU-Z2IDXHe&#[-GhE,J+8G+YSJ*2Hmq,p&AhZA+X#EJ)1R
hiG5hc%9b"Q*LV@RZAcA,X(0NVJ2`ddN#j@65%[8@'q'Ylm5lJhLhkHQSj"hM9h`
qL6d8rT[VfLXiYYTM2Ab%D@X9I#`MJSI$H1q6b"jU8cY$6"+F[G+"EGeN+la1A+l
5MCPrV0,*aeZj-6["3!KQ,Kdh#!-5D$Hc)(q!)3MjhckjYd%SkEFQl'0@62lD)-3
YTPQdalf#e4kVFIDfM(fG9GXSbi#Na#jMX@&hl2U%'qfQ*8VYNR(8Fp,H4G,@`-P
GImKQ*,K5XBk,F)d39)p!,$N(QfHUR-NP+&&)Vj()Jh$1I+Xf$V8h9efc-2aT@$Z
Ici0SlaB$fJlPdfZFpH-"&4#jNY9m(kfJ)CNfHN-C@Q8%964FT[Y)AL21%1PrU9J
rLP1#P[*PT01%G'Gm'81l-,`KJP*U[#ID`)+"94@+Ic+[-p0#$*J-JYhir8Z2J$S
j9@S3MMFqJ@V`4+'TL8CGB0RRf%iCBmjX(iY,"SHIAJfPAAZ5bDX)e4@Z`M4pdED
a)h9pbrU-AB5MQFMNJYkklTSM`IQJD3m%F8eMAcph+RqbBM'[bPmJhSa9-%5UTDU
K2@JE)a%PNaDm0epMKrXKBqDi3ZT`BVmJXe[`UYd)[XJRVS"Z6`J&KI+V@*XkrA8
fZV83L"RDdF!"laXf*VlZVC&TYXY+5Di+@5m-H0T%JpCS%i*Qp)51pZ6qaEKL*jS
+GHQ%[p3"QR`D-&5jJF)ThD[P9!j&FGk1E%T`XDc9iF`%f4VU%-kSlq[SI0U",j-
!f9J@qV-542YVEE2AH2fUMp0KkmVTQ3jUm3qq('",IU(ce1V`"32XbEAaLe,0'R)
T&ikIR0(*l#BiJKHS!%IDEqSU*)m*kH'"Ac0f3&eGD8)N)I@daL5)lQM95'pI5&`
62I1liE2h15R(%##!!L2BeVT#-bbD8&eED)`C,J8NbJcGV4fXK`CXIUQf)rC3YcX
VHPZEdS$CLr3AM3EAPBGMU8&F'[@Be$F5SA(hV69r,c(4r9dSJZeeLPA9JMTUdZ0
d)"6d&*-G3G!#9C883kQGq$U8Xm"L0$[Pb4#!RKh$5&lcA(R@K&a-pp6p`V'DAET
KJ@G-jmM$4DrM&BLj$qII3#SM#"@SX*B)2TjT+Je0$a1ebK&0&+`e'@Sd1bS&A5"
3qZ-'fE,jIXrcdj[fa)bIp[5ZA&%kJQQH)m-R2XjDkaHJIrILK$,X&[8`frNJ-ZP
3i(M8qXTr-airppf5Hl&@*jf5(Qqe1aRPMQB$AY"8jMQN'8ZC-,3fB1iAj`5pApa
0Pp'i,*38!3AYbKeYXk@[!N+ZTA8pTYV"SU))PXd@0@!D)F,9VZS)jD8*CV'![mj
0JT!!LRqRSl+Ire+cfQ'*G3%2!9%JJJ&DJU4[b6UZ&V["*0VR(-1*J`i5#JH-A'A
,2c(ri$DPE"TAaGK-'3"VF`6%K4GH#GU#AJUcidm&*VGTpF-8X!JGp6-$jU(EA8"
"C$FFB"jcp99UUBNN$HCeq1Z"hE3cblYcL!$9RrjmjQ[qX-6fpk#2Kd*!V6`G++j
qHel1[%CLaJbaD!b[UG4*L#CY`8k[$Y`J@0mA4KG,HJ[@A5QZJKHKdbjY",JI#KY
E"KQJKcBbC*C2IEIV1M4)1-dh+aH9Y6b,arlefkm`9fKQ!'-[0'8MXFF!hh-@p@h
NkF3hV6&N512QVZ'*QcpSZU+%48!Ema"2'#8bjjV`@1N$[adDd@r134%S,Nd-XCV
T$#@#QB#5T@I[hIdqlQ3Y#qEYX)VH2$NQUpGVSSd4%U%Xj(IXD[CBVbBp'!LHhFN
b-KAhTFEr8&"!kl#Efk'VkHci$*4Mm5!+Ri(CpkrBRFNVpDBlRmYaXDpc"Q8B@[)
'KEZ+'K&f@8SYd@b+XaEP-KkPS!ST&Np%4583eD`%Am"+#(#15R@GKA`$#$rc5T3
`R3bIL9a5FLLePlTl"qI(FK1(r#3Y1crYRY1"'iqQjppGeLpI%S'j0$XTjdqa%L6
(-Pp'bCjKp6lmFb"&!1h+1#iT80'E9#3dpJDMrm#0e%UMGcjL1MmleRp9YB6hI)l
#!RqVa!R'ff`!5!)UkE64G6$#i`'2LBmR-I0Abpl`2(1[lDI9FeS`GIP')G8FqY[
Q`"(keRAFGi+fFC1L$)0)$Y8[N!!T,*kKM,H+)eBM9EL&3DYMY%cfDV*dVMMkXR6
$XRcbZ502mUR$0(U&5G5[PL*AJS3EfU--4+)TESAm(X6+Y%)C9#qr6*(@YmEH-&9
5k+B@[EK-'4KNjFepkEk(8N026@Q#Qp4A@3h,JZ1i),6lVH`fLH,(Ci3rM'(mhkR
D'h*IA4T9rQ%JHIM&TS!jH&H'D'54arFAiQlk+Mr2BKVQ#V3)l5'-p2'G,6*hSP(
ML,kk+d0$*$K1p&4)#3ic6409h!Z4`VfNI8`Z9#IV%F9!@kp5!YA`M#YS!5NAVc1
eEKmm2&RkF!K`%-YkFECq"&SflV5cD)JM@IYr$lBBS0@dZhN$'3`lBB*M$&dmrSR
q-l1HX$Fr5$2``$P&eGlpK(#"&f"D4SlEZ$qA6Z#rjLkX`0Dl36,51@h+`fULG3`
e0e@Pma(-3XCqBU!BBPSdJCKff*V&i,1RLEDAFHC'%[bH0-V2Q#jF-rp[H4KeBbX
feNDdD#-bdNd&IrU3!0&Ur4mQ4"@Ij%Iqr@ffDD'$dL$Sl-Ub+X",-U5cH%1(68L
h&J"Ya4YFjb@R&PVIc1VI3*cD2Zr4j[+84S#V)[8eBJ$D6U4Z"Z0EKFLM&9*$U$k
LdY9Sjpm[QH+d,%'dBPHd[U%RK)hlD(HHhcf(-!k(REHk*8PcLA(6LJE1R8GL3Qr
5!10Z2G[8@B"9BhlrTX3)L0q94*kem6kh3G2hP[T&X%p6kr%4m(lNZl5&Jf$)Ki1
4UBp31,'j%4-9rb9!6TRb@hrRke,aAR,`5k0EMi[A0Np[C2N1-iXUPMXcLMkVTD*
*qaRN`Y1FX)+KYke'6aNcA#L&4*P-#@8R,1#Bm`f@jReSDp5!2rpeKB%b'IKNGEN
D%YAHLCIL%2Ll%DNQ6lc$m3[NF&5XdU@PKV%*D)#[a@K1TdTb!c*8`(`RMb2eQ*i
lQ$4$aq1qVQIeLiSZR+3aS"SBGiLL*))-DIaUHd-T9b5m$%$9IEZf#ibPJ9P)6,p
Q32D18`F9a1!PLLiipL1cSj,N&SD6i6GHPD4U5J4PdIIZVjR3-iNK#FYRP9)SZk[
C[N2aLbl,+p[CADa&A&rAY(Vk)1ql`)Dpr$9pp+Z*5G,Dk6f('1MU$Sf(XHE@5`B
lKf%@8"dpqLRZ%92Ui)8rZ,0V-d85eZP%*LjBaZ0R'pVHCm"1aMVr85TP4@V31R1
%&!#D%Pc)D!@jqkJVRrA-`rSD$#CFl&H5XehG2C2%dI@lC'-QReX$e!k9bLQV[b*
e32a0S'LVQ6r+EV84ThYLH!KV"EU+1"mpVYVh&f2h2*J@QCFZe)-Q8FD9`Hfkdei
JUQ)8Cp#S`M1dBhYSEZ[5lTDFQ@(HRG,DcZJ)R+QZPYR!!k1fRR%hHk*J3`d5B*0
DP11F$rN#AbP9k+m$Q!T"QAc06$[%LckQH2!PL"INp3I4jTE)aVIa*4Qed0EqP$%
L&E[C8Q!-qf$TPL4N8ZaQP%@`aFM!85HDm46RZpclm9!C3j)5+4d6G)IdY!q(C3d
i!29)-IUd+#ACjhEa+r!Q0!5k&iC-a0326D(h&&H6ErG-@&$T2-hGSSpUHU+`[Pq
5`%+'4Rk&4D*+ISY2+Sq0mhhSGG4YhGJeadBJAecN58`F-jJUj1SF)h9F-$-XMp,
5LS4EjaU&"i0!*GA@+[[%lE69K!lTeBA!$5k+"2VhaT12`R80ZcN*KEbr&+3h)@0
LVfaiFid1rq@3!#YMJHpXU+h#m"['DGPUqTNd$A58jJ-i&j-k2U3V)%pV(J6")kr
'SPR*3I8IJ"ic9D"`MZSmr80$Nm[APFDH#4[EUKTB#MfH$9Q*!ZB93j[`9H+LKQj
j,2qUl%BbbBQ1Rk&6-8J5hM`"5+8,FdP%&5RdBIc'9q'aeDEAIJGNQ`)EXQP!UbH
Y@QQT0i+QXX(q4U8-86hEkQKUdic3qKHUm+&c%lf+r)AB`#@ll9PcLF*)e`d$3'5
bQ`UN24GZe98(HpeEF(d$Mj!!R&%QjlGpj&Nc8HK)3#RDFI4mj6r!UF#-+[UL(%%
KlEk2R[mpRD*3R*4ah#hLcCQ6C[4mlXUHQME-9i[@&)jLG858"X([Z5MV('*`f61
#@Sam5$ib([r*LQ+'Zpj0-e+V6F(RJIQH*crq4ieZ'`jLL65PGhpk0b4[[Xq[T-M
d8K-pJaI!I(k2[Z+1KS1h[S3A$Rk-REU+G#b2N!#BCUB#NXce'5I[(fNfL-%4NR8
V%*P3C)`q@r-"2[VAGpiAI$GFL'62p,lMBCq*)d,`[N0'+hU,8iCS@@bmSj!!1E'
p*pBV8fPNJiY[m@,Bl'(halUm0!-"!1"2+2A36T!!k8jIqaY*H8rLBPmkIX+,[`F
"GE4dbJB,c%8EAlP$be(`5&NDq0SV989j,&HP5KIiQ%pS2044Vi6(f924,D"cHNe
qMa'B9(idXN-pMda8jINQZ(DNhJckfZ4Xqb0ehhQ)P6a$iXE!l'p[0+eCK*4Ppfp
FV*f9R'XlkfK(4cXXG$#m8pCIRJH2XLPTA1[A04EfXA1rSKQ(Q)m#pd'513NC`Ya
2f*4%NN!9Ci@RDNc6BVSYXR21R[q#$I&Z`fm%BCKG[#hT"*!!K8jL*X3M*[RGGB+
3!(C)X8daBYl,r9FQb1R3GmDH5!jZXV!FCC')[aLERRTb")68-fR9V"PfS,8TL(P
AY42F&TZ"@V8NDjB#,db3!,438fhSk&)PS+mUJ1QHXSTYG!k94hbB#DXUiiUq[E&
jBJk&+4X+Yq)[lG+%iV@PlV@)qBmDDab@q6cGX#U!mN%"A0feMYb"3i6ifVi1(e8
mD2BQTf%SiZ,)cZFSrqrLiRUT)ZbAVj!!DHcADAB+XBBK1MXMJQQS$N4361hAk3"
mjKri+LUSel)M8&ZaEpk2!J+3!1,pMK(TTLIFkrqT#8+HJ36T9BV[kJJjMU#04Q)
UJmS*hjA8KIk%B[+5%F$T6(!c2b"BPFr"0L5E9LSIE')$1UIeCBK2-%Ic3k`9!Cl
GPdG'MS%[$14kNF'[Ee)NF'p"$'#Lba!VMN`Hj%d0ePRCVjh2Q!ib90Kd"CBlJp'
EA($Y(meh*03f#cdiZq*ad6$Kd@U+@4*3C0$NY#B#l8k0rfCeXAVFR9"8ZaeJ%&N
TcUa1Ek(T-`[!cYTAaY+pMm,X%P3KqSf8Paeb2YCZcfhj1[H"P!ieb$ALGj*32`5
%8d9Vc!9VkENE3T51*KT8HIP$C4NV'fbV8Rb,@(r@GCdrli6pdFMJC'0Erkrl9JV
DMUQ,KjH!YirT6$4fShYL`V9GMF+3!'2Ci'4)AUrb[RHPA+@)%IUKKGPQ#b!$GrP
*lG*M)J"MZ5DLGTb6*SL'SiqAJMkiA3M-"'1V6p51+"&q4[Pd@VL@2ca!q[mBQkF
D5b*RFlakF`i%i5[T#1%c@MNEbf*kaqRTiYFeI$1%('adjG(k3#bDD'*TXj8cIJR
%f#R'T2!UBYdVDfpqpj,T1b[hKP+$*m8jqcT#bbSES)KED,+"6'lLrU[cZ`jGrrf
Vfd4A*(0DFZ@VVd3DV++TPIN+$jSqef&(AiUPGh$hR)Nk$6YL81(-dE#'3&4T&M,
`[SmAc#I6+)Q@Ejf%eeRA0K$Xq39XAKbBNJ#(m2EETDlC"2cM!QQVe!rLh8ee4S5
Q*0m@BKbQh-"''X2IK*rdFYVj*R!"A[&cKMX%8K)`6eI*ApL49Z2I'HN$#UYQ!#)
Ej5RTBL)hk1XRB39TR)Z'8dC&#"AIkC!!9EBJ#0PeF@(!6lPD[9cZFpp,*Xi&jHC
YE[ChUjFe$Q2qKM5+CPAVS!2Fdi("Z2"'TSjqL0'1ZFj*1jaRC6ekNc06hCl91Lm
X"i!R+!A*QMqmbM8MN!!e6d%j!@e&`0Crm"G0VQ!)kN+SJ`$,jG0L`U@VI4Pdj,C
5af1QfETe98HQr#5@E1Z3!)[p([LViCiVT$ZmEN'j$V)Zl&DiQrS`"@d1*3ZLdr*
(DX'FYSMZfQSVS*a%L-)[DJ`%A%,$GB%NB`T4%!T@pY94"qlm[MfpS9dJ0LMJ`2c
#CjKi8)YjCHEU(RLL[19$H2JCE+`1i$d)8+RjB+RTcKR5bV`+Pa&CM9e0@CjCk*4
&[,`GE"Nj4SLhmcF4ErLp6B[9'GT+Y0@GEi0G6@qDZde[8VeXQ"*ST%p+QNT0Ee*
G6@p5ABa[Zr3A8a5C0(R%ZK9H3Ei#TTCN'XVTqA`38BA!dUp(BQ+A'M)SrAib8Z9
0pU'PYYMZND1PA5K&Cm$8'L2Tm%1cq4jIbRC6Q#Ic*I5##XK`2)DE@CA!b!`mKPB
CaJTUeBC+q@6`Ec-3m'rj%)P[a'B!AfTC4NTCmdUjMh%[M2hLYUV0$K)m3cC,-h%
XcI`X2fPD5Qh-)[6qiGBj(N%SKCmmc5"!5N(*[1B'pH9"rIG+PQ4SEm2QC!U+#mD
BCJ2'Q%h'd[C[4"#0ld5hAL+9!i5D)@5X1q#aTjK+1hKpmDcaM'4i9jJlQ$H'+f$
i!)ZP@8&+p'imc@!CK)Y"rHP+4'3!Ebq+%!L*V)JcpbfjYFZVXbIH'1cp[`R"!!A
'"*lrLQN5aH4pqjbRp!T361lGJH!NA2m3R%kf4VZr[mpq66@*,4+BEARaLillhf%
e0##&S4Z"SL6YT0pD3,S(M''U8epX+R3k-CC5fMEJL'ZeqL(5ccPB%K(d+,NXN5S
!cBHNRAD%RCJFTcpi8&acR[5+ZaM453"6[q%L&6a8#P)d9Q(&h*pTc4`@iZR%0qc
#H*-!RlTAM,%f"kF5#RCMN!$aBA&mI@1XjKC,K"YXIQ(&LD9a#dV*Sl",Ab2,JC`
8B248N6DRB3S`[k45*eBelIXYREC-ZRB5X#i&B4,*532'29DFcGEZJV-mH(DIGDa
#()#"J6h`!G3ESSFkT#SJkd-NjP+-%MELJJeS,`!k##0V[ENGX05[a6BIQiI`kC0
J,3HD3#1q)jckiIET[iGPhkR(,6D(4NLfRG3%1iXf(k!p9)(R8#kQJ6fY`F*'20`
5p&-2!#T8$Trr#`Sc6,f[!-2D,++T3Tc*[b,J)XCirm9*,J'BJh3fBFDFDf!jJBA
I!&)SUp4#KNKTf'V'G9qBUjidDF,QZ4'S"hmXA)hdXMc3N5KK!9VLmS3B@f#IfHp
q6F(SJ$qC8X*K)U(C+r#"R"YNNi*+II#P%J@aLfBVC3F4@k+418YIA0ZQ`LLj8fJ
'$[6lJJS8`&0SppCi8[Z'AkaY)6`UU#f3!,eF#e5M2$a2epPDRM9[KPTlN!",1[k
$4*PF$fTU1ZYY4MULA-rV#G5)+LN[08`"$'V+daP8!'CLC6`*[*Yf%6me6+3c(XU
)bqaP8mPP+SKI(ZNpLeU2*VpXe8"k&P5adph5+93&SPEdR2Y6mj!!KM)q`Ykm0cC
Lp*MSD-'%*cah0jkekFQ(LZc&640Lk1lkNmcD'%8!N!"iH'("HKh%ZCQL35(5,h"
BUFe#+V2R6YPpjepC3[r`!PEVN!"@RQdYmPQ*D)[&(c2Y!BfaP"ZE[0ND!V@U!T[
kQZ@c&(VmMDEkpqPqi49F-#L4!bF0D(N4r#RNc#Z!Ba0F@b&2DM8S*S#ZJ1%a$!,
K$YH(5U@dIZ6I4pj&'Rm&YfFH"CTE+b(Ceek#G@(cNm'@1+%V@8+J!GH5'3RR`55
l@[UVqjmDlT9'@'Ic%i6KY$YDeecrpJUiC@PNCE@aT9GDF3TE9M%Bh%8&`EMY984
1h$G@M@%Z4IaCi,V+iB)3-%4L[[QPcB*p['m'MPqkIST6b@D%"hU9)NTXeV0%Q[X
Zk%ZeYk"#6!pB!HF2XYhm*HiMEUc#+U+Uk%DcEqR3[jGGK5C9D,d#F5M9ek0&AII
3jTT4[m2$pVA2S(dTG9AT[*4M11+FHF,1lATqXYa"bIHMrH)RD,#N*q9$L5IjS2M
kKS8SeAjRPB69VphDM4bL4DqbkE*MM&RREeR!*hIT`0r5pp9JCjjCIX"&fHR!M0R
T`)bPUcLjAH0[`(N2b`"H"dTTYP#18,I9r*Br20N34T5S-"Db3*FTY!"jdr[92aM
8E5aH[Qd1m,i$N!"&B-$3h-RV3X(p%DY&,rKHQ`Q+&Ed-@KC3Bd6F[iiMG-*kPlP
*UZXHlX(-qj,,1qUq@U$U,TKCL*A-*P31b3PQ[)XV0q"*Tqk#BS!FUdS'lE9m5pB
#@T`A+qAJDjm6I*Yji8Q9S&YPl`'(i"T3LAGSf)U4c04LlRQKU6C$LENDp'@[LdN
&db[5VSZQ-5`bNXS)Z@08N!$SrJB!BVK'@"G`kbEaS4!YVmCl8m,j#[3XjI1VjCd
r6*4FDD2A$!3JL"'NH0(Sk![#%"qR`ZL4!+XbX22`"X(PlqR-I)e`4&`0F4#)ff'
4fGX,9pf"*mMa4%(q$UClk'aME(&SLEih')2"2jA#Y(JCX!H""D*J1+i)fDj"+!`
PPi0p2ae-,UhTeDV8L[Ffj@f6S'QeG$lHV!bJkfYMQL0`VdU!i(h"4J@!mFEd+30
C6bEZ6a)HfS'Ik3IM[R8+@T1eNfda2*B83c*ZI0L9+(3",c)CVFdCLFD'UU,ceE#
D*'%%efQ[4L16*pmV![UZ&BAP9drjS'6BTU%VmKl4'SB9qQp+G0A1q8kNC$mlb9P
8e8baa)'I2"am103HffLId0G$firVpEp-lU(1,cfRcpKGLeIr#RUmR4036mDX#8$
Bei+3!*m!flC-1(QjTGXaZ#!ZC4jkLTRhKLc*A2Jc90r'I(VAY6Y*3C)AF`Hc`-#
##3KSE,d82fMUNlQl*I@PI'3ljQddKDK*r*U5(5lj2VY9+d9%p`+li!@Z1Y5alIR
0Jm*I++!9Df!bT,QX0-QN+@-eF**$F%MU2PZZG3"%8e$-e9BYE0RkiKEp3aLlj#V
V+Akk$D4S!#d*i%r(PC[[A-3KcQ@ES*%Vq9LiX[Ni@UZ-PcVK5jehAp4GEcDD`J!
b!ITISX+)D8"[N!"D!PGm9#K'R+PT$R1)SF,'4YPNhp6GEbeiii(I-TI*+9C4jF,
k`IV#@RiY89SX-9$hZEZ*,bY8SG%!Eqr)dM`EKm*(LCGiK*8F,i+mc-2qL4X$SSQ
A-X%a5*!!@2qC!cdiEqP"C9#0bieYJ,0iC1J0$efN3baHL8-Rj0RTpjMS+l[mpcC
D+[IF`LUE1Q+hV1588,%d@BH3!*ITm2a9XJ2Y%+5R`T!!1RBU5hB,[N*BrY'@`P#
(-j&[h[%3qh#`R0&IN!!K2)HD"'piC1L5rF*[KrajH0(ANRMPk*)XrC!!T!8fff5
1+CU3!(G!K+LiR[-8PFm&d&AATG&U[d)HFaH&@@L%CTEG9SUKrieGeUR)DZH"P3l
&0HVl2p"r*Q3a`b4JPp)b,"5j"m$U'RhmRKdidMFA+IcQbZ(RXPACp9q,LH8daXZ
fdSpVH-k5$9FBIPXa)hQTDd(`%&P0$frFbN$b-ST+1YkB-ZajVIdD4,E!TG)lYY[
pfSQj[aekq(#M0l3kh*K`fR''GL)LZf4,G5m9cY#-i,5E0!p$pj4Th*j$P&R[6-Y
P65J*Zf'Nc@NqdA4(eX%keS!BGXEH*&993'0!S6DJ'&9[iRq3!"jX3H-[MS'$dEE
QFIIL'"PM-9QF'dBe`-#,S,N25%HpJb'D`"0mYkK65Lk%kZDaH8H'4rfpNd4r$qj
HLC4+N3@9K5llf5SUN8N%dVlbJAXcILmN1,N!!Amd(XJMl0C#RMK)XI41G5-'aRQ
d"qZT8!)[V"0ZFH@B`C52KA-Lh,%+lb*LQ$%BA&A9)eNZXNGd1J&qU3l36Q5Vldl
*["4C#l(jVPIUJjU`k5Qd"qMY95BBpUZT`+KFMdF*0jRRRr)&bEL"N!!2)a4QKaL
qUdDV(V[,Pk`*c(IhC[S`5`P9!&M%LC!!h*@%CkaT$b"hFHjXa'Yp[NVkKN5E"Ej
BK*'F5eX1$00"XM91-pP,FM5(3rceVVP(CBlQe4640F)`R!GDFrk@YD-hR@1*BK6
pT31HFh[6Eb#TQpqDcIS$A-J)P,)R[j`MSE%R#q%Crl%RpT+(8#iUCJfYAT`2'Ti
k&Bd$QRhfbS9912kdTV#9B+kBQDPRDZTVqN(bfV'84kQHB`0Z3'"QVADcf04!T1l
CGSjf$AR*l&(2P(UC*TD#L[`J+G$"IKND6apUkbKj&%IT1-QJT2NZF'6T$JXp!br
9LE8f8pG3AB+AXMC"pZ-Q'iZ(b!Ye*,@qDJ8#kF2$mAkkEQ44ere6q)raI1"f*N(
3)+Y39C,PKf181Z'%IY[GmQ)UJqNV1K"cT1P2('ET4l80pdm[XiQL"jV*%$dXDN#
BPhcSF1(b%b'1Dir$166&5+[qmU[N@,&J`FYkYXYE`ZlpCfe&#`4fK@6'+YQ*[q2
piUfQDarAl-hED9#rB0[N[k!%i[[C%i'TX+Y$%6G@BkdT+3L)'qFJ*aTMX9)pl!,
m[paeX'qU9-%E0m5,'XKTK*(NV4!E@RUpNH%`RSKBS-2kD1"2B0iPTE$Kf4*cjeF
q`UV0iM22i!H,YHU`Zi3IJ(d3eYE`M4!3eTkpEfS`cqe3)-13!+2b%)cEHI*8@%#
!Rl**#2AN`+R##0GdT2-La,Up)&29Hdp9I(HGH52p1Y&UF9lqJYc#`ZeT@Q88fUb
3!*-dIV[lGV1Njc+2P%J35N('G&kN[c1c#f4hrIU4qQl+`*9qA[*Q#@Z$#F194L1
F*SI4Z#kVLFGRdi#9HqhFL(D4&NQ6pbSjHCiBK9+FlkPL"rmi"e"04S&5Ed1J+T!
!qm!A3UcJe((b&kbG%%@VT)YQaV!@i+0*(!"h1K9ETd1#F-ASaFf3!'PQaI8Y&iP
CZ%kTN36'md8cp%HVIl(N#H3IQp3Er5MV-8kLUlLqb`6$Sc@aYpKBUr(V-J%%PpS
pmjE`U&`4*iBc8CE#JT35)rD1[UaiaNP#Q-AJ#NVJMc"LlEcBRZSmYL+Y#32LQRd
GdI"(cCYbeE4r0960r9iEra6N-deX0@Eh'k0J#1T",KaG4Mc'2KYJaRfcLR5G5GK
9KN9"6h`6YfRVVk$`dHb%*59PJS#A!k2qcc315hTcFf10IBa@aRF'l!qEiE3EBEG
3&B4Bd4M5+aEkhhJhS*Q0a8ZE`reGf#e2$Cr5frCTq"'Jem$RFi0ldFC)d%6A8Nc
BSAq'PPUcFD[A9X9Q!02PC9@P!GGd'R0a`2jd9"VBK$A1iNl*Ji@+Hdh6129`![b
9ES+AfS[[!,QpBkCU+-C[4(qpD9Y)K061S5JImR,3U*S1S9A[A00[45EdkqHNkb4
#Xl`XaZ*fENZ-C@$6L&h(+q)qjiJUhrq)+VG[p`3Rp1DbR1LqT,H'!3*r+HLIGh*
jj'52bEI'J-b$@$*bDV,[B#FLfD@cC+QCV+QP+HYNUjG++[MrU*!!6,fDYkf(qD5
X8'FqNZikSGedI+QRFqbH'N[k4(MI5kKPE@pZN!"c*5`TGTK,4&"hST*ckqAUUDG
cl+,i#mfTS,$YEk)2a$kJiVAG4cNMN!$%McS0%@K5mP#H--C%L!YfHZKHEHCMm)6
,U,*306LH-@e1`P4qbFA8[DE%@PfcQlK54#q["MM'!H-KfVfDK%2l"ZA89K3Zd%X
'EXF!YY@K)$@N'HVhq-k5mM&4&kcDq(i%Vk&dUAmE2I%5)(kb8`A0P@IAjq)Vq"3
+TJf4K$$%M!8hR9Zi-0%fIaUV6cIFMDm[X*3$rAl,f6D&$#(ji0p-3aXE+2+aVD2
'[ajEN!#m098(35+m4KeD,E1cDh)d$8(PS!TlJ"p15U$-`901VTS6I&8JliR2Ed*
cb&P11r1(2THH@-8&6QL4!j!!c$UaQ%"J6iE@rLAfZr!MYl$&LTVmF!)+bJKfU66
kP9IqAS4pUh[E*rRQ&f+m(aakHiMJ1eI6IP1[@J[qDEakGq@@brPTZUMpD+G#CF+
Im8jY&Cle,D"SDr6hTE!RT,D!d1454$2Uq(QbE5U8aQCr"HS)&E8TPdCN6dC&3IE
`!b('KVS"66M(QM5dh81#81,f#,`EeaC&4+l3`pHF#iA!8%"MhD5D&5pM#l'qb`Q
EIfepJBekjmRcKCYDCarjN6GUk3SVA3j$)9ih)J$bd3q-A'2CjSlkPdA9HBRbf-[
eG"3dHjp1B83P&DlAH9XGhIZr"#miESYI"eB6NP`![49pGG((($e#m,44GAppCdc
MSl)ELHMa@$UY9#Kf(1e"HRq$3@`jFeSQZ9LjJhf5TaYc`PVd&,ZS$M)CrfA(5(D
iH*J"e39fDkcEi%G!)LE50Cr&*NH[,Yc2$Z!a9KB%(5fYNT)Y#ALeM[2U#5'9XB*
j0`,-[X%[APEri'X1"fF(N!"c$A#,20H%H*G!d4LUU0%BUUM*Df$&,[jiN`%%U-a
Dm[G,c"cLb35YH$[b"-PaHa)UT4Z4!mh*,$G1&4c43aLJN8f9cmV6jilLdljXCD2
k)H$Q!cdfhp32pAa2I5Pmr(qe3q"I&&%Ma2PF@h,YPSPf-cN"E#&YQdcSGb3EqZJ
-!'"62P#)HT!!Z,EA6%3#&N!c1@8F%ZLd1Iq-,!VDQEc*2qp40Af2Z6GE$64l%LL
1`(5'08Bc5DC$,RCl5Al#ABCcVErmLDVl9$-pfE0ef5I62K[9h3(UlFf4S'$a!*j
h%$#cAR3FkC0hd4Nrk4HSfci9"X+ZNVmU!LL$d)#8+6+G*Yd-!23Y+qFEHkE66VI
&R(*E@K61l@)DaVCpYei8IFH$#0kGL-ea-j&3Ze%ZB,kB,PV$F'G3m*U2U+rmEKd
P0-%qJB1AbJXTm0DK8CM@ERIie4haca#%Ej!!'VjrrLeh*Y3C%hlfUj0pV-PQ@m!
Ql(&V*QPRbZIPP!('GCc599G["*8eE`3NTZ@m+b$DLc"D,cB`@N3f!1&8b$[-UFL
JC'rPSR*NjS8hDFTN-I[$E0pU&fXfC!&[pC)-Xi9I@Vh1p823L*AeiD"@IYCA5rZ
3!'I29--85lF52Q(PT+$I"-1hX$J&era-6,GKaEdR!C%S-2%[h%Z,T,eeQlKc'%D
eAHrUX)UFpl!B&3*kj9N#NVdGJMAfTl,+386C)!Rf%e6br+qfj36-%FQ-61Fji,L
*[!8ebZaF-d*qDiC'-P+8KBJ[aPJXSdjCEff,"M[DJX6$jATi$Q"mB$[TeeYZG(4
`+EZ6@1S)[T2PS4N,)0SrTZQ)26BI&XF(3D+$j0hS[,CBZ$[UlG900U3(BGM%RC9
`%1iAKBKL%X%*0q8IhrU4S8I+@1#p(c3jfMBf16RDfMBf16RD*H'29LI6m@N1-(i
l!3HNC8(%-Kl'S[fi(Y"f%a,MKIjYS$3Ul5CjZmJi'NeQ0@ZfF!TZeTiac5BEkNA
NfH4M6m-[XX[V[HXj$'kC9hU!#Ml*4m0'Ll&0Y4b%GK6)5EP6"F+!l6UiqKFaA3k
RC""dD,9+R3Ce$rSdYD&&D&IY-c&(B"K1NT2Y*US`4X*Y@[4Br@0ba4Qa9&VPV(T
GPF()P$bA'6X)!R,@'Y2Rk,I(R,6PI6S9KC8c"%*F12S18jCqH#r`'+YYA1Y3)2G
Q*qIa82@'C1&BI,S[SZXFmf`8YA%pPAUb%+*-CLkd-!Z'-*@B16*1f2Kjf4549IS
AL#D9hUaMdbphhBM%pT('q2X8U6mr0iSJ%b8QrJDFP0f(UhdAfF'iZ!8GqG2SS9b
"CR#SR%[)@EP2@M*dB8Y4L5h23G%GN9G[X%QN3*JERRb(fDRfch`"khmZp#aTeh)
'5c-5GJ#ZLiUiAAjAG[hA3K*qIap$GYcPM!RV#)pqUE3+6ipd8qNEBpUj$r%HGZ+
-P6bDrIIjST@qdGXD)V6j2#e2ajS#e+*RZ[5Zlj[lM!Ai5)2[(C3rhCI69jQ2bX+
f0`fVK@klX##!2[9@IqHVFM%IS8cU*03qRl&+9iD3!0)PrkjhK%+k[hEN',&IBNd
r%C1(2Rc#X5r#,j1,rNmC'6E1Y&NV"T&EAkU"5jP(JAFBNImm1(a)r,'pMKiF%1e
X&*G0R3ARR[3ff0Chd@(#-HhjZj9N`RKNF(L9[0Nd(qab!N+&eD`XELeK&,mGZ&K
0Q-9[iNJ"8*b06YU(bIUZe&j&9dM@iSeEF!-jDUId)VN!0$k3!-bj-(U)RicFDir
S'L%If+%IEUh+l9)5F!GA,Q*lU*!!I[(b9K4I"DAIPP5G1Xb%PYNjf6(T92'KJf9
*X!'rJirMGSd3((Gl)%G6N!!Y&$`UdlU-[k8LTf2jC$0F9[p[TmV%h'N0lMaD!k!
'RHP)Jc`*BEp,H`FD40Hc24X&p(he,T63r"hLT#D6KPb-&JeB8XH*RLe!+FXXLRf
I"9+c&Jq&5E"riK2K,Jihe#3)DB&$Kbaj2i5lk)8HHbj43JLPN!!Lp+8p*41&M!S
DD204mCd6MGUQF,K'HVr6j,crp`Yr5L1kqar4*lHFA*M1fS`U%VkFFeD!([lkA#q
FbENd,Dm!Z!J3'aTb6fapjP+J9F@QG9%6ic[)*Gb1"SUNDHQk1i&dGKY11A2&U[2
&*)(d*[Rcqe0cbm0+5JaGqFG"AHeDqcGV5QmUcMVQ)Q,GEVMJ',j#c-%,plNa&H9
*6%@R3jaI,,m(9I5"H8eP%pV'ECk`[S1kK,6U*fYZ*e6F(4'CK)q4[@R!,NY46RT
DY%q([HG!RN*PRAah`*4@c$%)Z6J!&C)kSEGiQX[UlTpD&N`NNJq1"'PfA,f!*ee
JRHPkh9)K6lF5HkL*r2iRRpNC$6IKi*r2`VbSDHJ)DALN+GCVlX%"8M&0$2@lL30
!E!r9q)$+I0m4DdlTZYKb-*,"@X(a@2A)iT11k8!km`$0DcX8h#LI[1Z5l0be*Hk
PjAG"J!iH[VVVDU#ZhGKGZ#SGdH9&VQJLM@eDUFSF"RrVL$bZ3$)R!`c3P28kehI
Qkd&H3k9F[pjXD$Y@54Q,3Cc9cSS-UCV+5G8dG&6$+c)SR'@4(pV-k#ap[5D5PBE
T3m1DB@`EB[q1#eiEamZaMK()-'$(,08mj"Vj5HST"I6T8&9TrQ0eSL[KRTJG5BS
L`L20pBfDab4E(-rJ5jJ--Z('T2Ia"VlhcfL'4*RDDRKJmdb8,ba**5DVJc$%'p@
$'cG6Da+ADkdX(qi+('[rl*8Llm&HUJmK`'#@H6XpB3(-'8E8KhJ!q+Y)'8J,[T0
eF'aMf$SpAdH2&RIHN48a`AVb'UH1+r2$#XV0rY3Pq,dc,C(*Fm@E"#3G1YJpKbR
*[8+p%(M[Q$Qk&A#rrF5i+0-F,kC@"S#I-fpfb@+r,KI#Si*L!D9NUNcIKjZejT'
8KJk@d&NY4-U8@3lc$j3YM3294kPZXES8@BBG"GLN(PV(#KC!1L0S"5)qGRTieUN
kcET`3(JG*@#MN@jGDe(eNb8,KeE+'b%MbK,rf[NKDjRRLc`,cY0(Z4[G[!jFre2
[GjY!9E11SKUa093cUdP2S0k%6h#NeZ9Z!1!5!U-#TfSSh,!UZ&0mK,ZcHbm&SL$
+UELi,A"Il5V8@($+d2HAV`dLP"jIRZ13!'r9bVPPA$S#MHChBRKF`qC+#Q-C4Ha
6,cI#pr(GMAj*@',YJVa,Rhq@-jq[q2k3!"%&5RlJZM-3+b)T-!&derD(8cB5Km4
Ia9iQ)b63p#I!MEea'`eel*Q@qT(ec%T5!b-2&-(&T"c5fIGF%$cJEEkBG0Z4(Kl
8#SEU@EYI8'L@Z'T1e,13!-0RlHq@@H5"iF%[0H#3!'qrd-pD%A+C1iRKP(iY&f-
hrQ%!`*p`jmUcNpKH@G5DV%01L@@`d!GFcZVV"#3E4BL@E5+#M+EVLU0jAb"IdmN
F*Ha,C[pB2A&EqL1ecCld)+!F)$NB4m9eRLD4m4rfJVR`@hq0MIq*6*X#fZZeH$9
"'(8A'-mI6eTLSUX6d%0,Z`QU,JZajULj-Dj,IXNeBTfdbGQFFi(Z+h&1rFKQ,jY
V!AJlB63EBb(mqEPLRT0-X82R3)TU,Ib+U1k4Np%TR6`N18d3A''+kVEFk!l0VKi
["-RqqSUh,U@Kd)jLr9eG`a20LBa'Pl8'+L!5[`CIS6a1q24C$N"2N4iIia3p`GU
K$Pm##)CR@TBBRdUrqL#1*8cDNprGFFl,@Qi8@B0Cc0Dc)Ud*QAj29TY-Z9KH1H%
)CJbdL+IqN!$5QpjGc#j1pU%cL5A'DKdpj(905ihjZ,IqER0cN!!MKi&Vq*1ThCb
5#h+Sr[G3A-Jk9e(J91fJqcAdj+64hKQB'QiQD(9$![+P!e*aEN(bM[$1VX*I"f%
`[Bd&TrDJiJ0f0#Apm08FcQNC-MlBfp8JeeJQ+&MN`X)5,Dd83&3e%cM#e[JM'DD
`(3A&b(&d$1X1cAHTrF'dEGX8%9m3ZRA9(d!HlR@j@kMCRXTaZfIC2aa"!9V#)1&
hc6Jmr[a9fI+b%M!`Al#rUBahl*NJ0[DH4T*J6,i#5*k*45'ddB9+rE$-42S#krS
%hHC%$5(j5Zi)lPNekppr%JeXk(cq4)[40a#ZmIJX[`6p!-YeAdYU!80IPp!6%XE
Cd[%qcGVDaKS8!$$&drJ4"`1GrNC%)''YFhGe%H`&*0&9RL$$YrB0-"M0f[TJArl
3YMHM+8XeZlT4`fR`lbZ6H,k'i`IM@Vb9ZE!l)8,QLeVUbYr*aXm9Mb8513hN6kj
Pm@#HG1LKP5$3+e-lkL%J1"`E3-qQ+b8PJcLH&h#6mE"[aIGq!I!0fSKd%SSNqe@
8eiGfUL6[b%#Dl+kXL&Y+r0`9h)b(GM@9MK!0XLR&c+""pe$rTq3EIZjIk0XhI#a
jX0fDk'MlbL"5iHe4qTSM23ME`G3E"kS+1jMM*445qLrmVAZfYh4RJR448hr$`B@
YLN!NfSflKXJ3B*PV%QaDf*2IP`8fbENK6!)#@5P2mkjG!6+abcbrYIJK!Vh)M4@
@Na+XKcD04'`Vr*qTRA!PL1`pEehNlqBDSN+Lk2ic*i(V$A6+4@'$cTiG2D!q*3V
2Bmh@1lAmKSpAeTirA+E8229iS!q6h#"+p"$"QrN[BIZLSQ#-Zm[%jME0r$)VkrQ
m11JqLPT5R##X-NJ0`5X(#!Y[X1%")`&N"#l-%q-p"ClHf`NS,pS-FV4YbdHXK"M
DIlI'l"("'Y[T,e&ccb%[b!3886G#aE6,('%AfqaKaVLY01l#%Z*`[!Z"$M(4Ui!
Pl@l50C)H-@l5U![NZR)KN`S0-)[3bF-c1b9qhdFV@1P[`-X$,`"fDrA0ZGX-143
&YEITcKcA+p&Xml[8Kp5-Y@VB"b#K4dqTh$'$2cRpbdmL#VXq4R3jFm`&#bkB'c[
CHFSTU8H*ST03hp8T%h5PH$8rBJ$V6$8`4V'('P[,3,X$VF'ELAbqCa3R$q'`2FN
jGRT(1Sf0EX%bdbrRMkRKY2M!6TPfMX%RMXYF),X$*!,N[LBi-(m!UQ!ZJHVI!"0
0MIiX,#jTN9EJ91A%1'AR#D&3#qmeCqAFZfE+!Z0U!NV&`XEEAeDAa0rMFq&9XbH
NM-I,UP%PJ6%`bqIm$*l,Q,K`HL@+@CP22Kfh4L"pe9*CCNFLJ*r198bcZK1BXCm
V-eY(cm1S5%#AZHk$FTh2#1,XEC4J*cGE)TZAA0RbrVjA4)fSajFX&EBAH2b-Bbj
3BR!I1C[EJIkE[c&hMJ0Lb@)96$epc"J&32"l*(!D3XpE0"62c@U-p[3a`mFSj(G
iQ2F(N!""%`eF&)b(k-Vq(dYi0&pi8)fSYi-Im%KE3Nk4D%XN@83#d!eZk56lYqr
1MQAL@6[SFfbhpZ*C@RjN29P)aq*X-JdlSjQZcP`$MiM%@MbM9#FkC+fAc$)V6Qa
aE&eiR0$!D&`J#"i*Bc!CTmahb#iD(eFDD6SC!SDXN9DFUFSQK`TZ!LU+Mere&EY
r'(+BdFbPH"mq,f6)QEIJiZT!Bc[8j(LN36CrE4KZcK*YFTar,GjIjeZ2G(h[VUr
+@hJYDSCXIVb1kr!bJ5'h(FQMd+rke+lQ#GPqfXGK3*eJ'k-3kS+%"BQR2Ld'Gd6
`T6qJrX!5"2dTB-+D!A"'dHq3!08dB2He"#LI)9$m[Qpj!L,+1M4K4,*DIKG#E`2
lh`9`dd&'YNFNeI(JH6[CY#pbimf$H#p5Vf#RLi`fcJdRR$e)+ldfa!Eb8-&)ILL
4T2LjPVV16EjjV`b5Qe[kZ%+5,Y45+MdCeVN`rC@5cce)G#T`6TZ480MLC(@jj%X
D(Pape*3I5UZND3"E)*8m8RdRDT("JX"'"ab25dHmDP09aiHE"N'1rV&L0CiNN3*
R(I@m4bI6f[[qfbQDMX(,2BKYfq@US)DmEX33rc8"@4jX`)E`ajaD-+MZ4Z+2"h9
QiQ2lUmkG44DIe1i)Z@i2,Tp*i3!ZUNa"*qU!-m%a)[Q!R!@Np[3D"lk6TX5V@eT
ZAm5h$L1lNARD9dB(,hKqdd646e"NNI%iN39MCU+'qrEQ5Mjd*F-rq-#NTdG6`%&
3m2f"8)dpKUEG%DV#Y1hrZD*Lb9NFSma'N6MZ)0c%SfAYJp')+EUJaT41k%ZNl--
XDE*0(eJkMQRNH4dN@Fe"l#e"E!mPC#*%XNFZ`a5r5lEK&+++SMm1[jUajL,,9[r
Fea)2!h1%3YpcDkm%CV6fZ2(,%k3J5ij3GcGTT"fiUXKUqFD$"cqCKQ"c[6h%N!!
mPbK2XKL1`4Y0Q83fb4YKbSIG,J(&N!$EEj,CTXYrfbRSF#i)H2&6eNTR$3h@(D6
)0V'#KBTUPV6j`d`K[[*mqA,bEUk!ECXNN8LSerLS0e"IiJ+Ak5TH3DZClUrVZZ1
Q[fc+F(JQ,bG9)rcpJNm4h0AXI[MI)8@!%l35r23El8A&r'2HiZ!ISVN@10"43Bc
H8C@"AXPJ3K(rA0CC#0BQSa'C0`N!E#PrIYU-[0#4Q4(GFlFRLKaP(+bGCa8XjMe
VXS"q%Vq9li5-C0"$d'X@P3f#"5Zm)%EPfY"$%q-M$aQ)5aZMEmAdSdMNEMhk$[L
MMYd`V15)"Z`E+2K3d,*&d-l161F$m8Ya5YJRp,,S29!S(9F5*dNR,X#)K`N2K,J
XcCMc1F63P$H3!+i8Y)8IBY35ZN5#P'k8@JH,T1-iYpb+4CQc9P`Z,XV-$JR-KSM
!Nm-dj+#bT,,)[8fm%Ai)Y1BC@dpP3m"))j-qlpR#6FZLk@'Z4Ua0$'@,ZG0KYKe
Ef'3lPi0i$'E(+,*`CUEPFBH2l-Lq5FE@&jJXX3LddpRbJM&r[`D$L-1j5$5)GlQ
$00EY5%Q#eaZ$L0kj$(2`iD5a%Je+G,h*dIlQHEc)Y5bb[!mej#6r[FD)!5k&56,
lN!!9+P%h'+G)YiTNRQp,aEF#S(9lX%J*pKRZ#m"e6Y4)[G-Uail'(URcdS5[21G
jldK[SV2VVll[SGFGTGbImap51Ii38FR3S5dM0YReKer+8HF9C-FJ!68@NLa(BNK
)*GT@r*+'`9Aam+MUQHUHPCQc*EK(JRhiFdNQ(&E`&'j!Ni1jI$F4e'MC'0L$VMh
8`'L5HbkfHKZEh#&dH4Q16eR%PJP8N5pP0-CScFLZkl'B0Jq3!2836Q2kDNX9frl
R4!QqePl$qLdlhIEdkV-Kf'cV2D#eLe'hqcU+-C)f4[+NMaM"D4Ki&M!*Zj,5T$G
%rUB)GqjF*lXZ#CVqklN`DP*RH6l%$!1&TZfh6m[2U8-QVZ![Cq0efjF%HJed8ED
HTK6%,kmLkGY66SR10jpld$,H5BrSJ*N-cKBaq"Bp$%-+256QP+Ph4MCb,FDHpE+
@$m@q+Gb[K1dL#8D'ZVahGpHj"fjJFUTbrmqPc@DZ9Jm*I!cU-iAYc(iNkFp3ebS
M1[mqiD''"qdSVia@8BRaAJG$"C0F13[AXKY1QIe613c5L@`eb"%mh,0)%S8*qa3
(jF,RE!f&&IZ85PaHElT)cQ,UX2j3V)1'&0eaZPELd%MVAEkeh8b@Bj4pj!T-$RY
3pjiMFlkefYH-8'63-SP(1rf%0Mba39A9Df$Y#V'jSmj)C!([Z(5MZ6a-r)9f3rb
C&%0-Sj@FejHJ96IVmq!UJk8$3HVfY2RV$*hh8K@a6($!lhBrkq$9@HZJ`2k(%P*
`-BE3l1N!SdA(L)524(0aX9[*abPc!FBLS$[+JCFU)S-!Q51T@C'9%PKX&G[@0@8
M-kF0+VFG+S)bhmc$T*00(V[`SI&!Z@[6Im51LM89QqhqRcD3!-!ha-N'fQiM)2+
5UccMGb&c#PMEmU(3m"0!3$8"kG'`SAGm+fjS"b2KPjb&&5GQ09QCG2cS2GhC8`"
LCNr'H$0emQbrmcjp+C24TFpAc'CV9c`D,9Iaa+'*GFffLAHVcKpUi2"IYbMip9P
``G[L39l4l#KG08@L4qA+SFYPIc,iVhG(A0E5Jdi%-UL-VDNL,M@f@0JT0*F#Xh3
F)rRT!4'CHqCf#i"bCiaVF(ZZfk`h-AP)lL,MHUi,Kp-H(lHU)P[Ei)!'%j!!lqd
(,Lr1-j%S%9I,-jX1e3@#$'(PmdNZjiCZlT`[&h0"kKd-SIf8"1F3aAC[18ELl4U
HjA#8c'l%)`*KMeJl&VQc0['L#E01%LKb#h!`QAbh9C2p,,I`!@b&fqcr'6V$Uj,
YD2ck1R*!b(eSK2e51UU6Vbib[hr$D5+L2FIM8Q@E0@A4NP(E3p`-aKGjq#FUAi2
pT(ZrU@P9fVKUmK[K5epJL'[-'(dM*hT,mX#ppp(edpUFQ)N)Dlh0qNc0d`,kGJD
#fqiRL)(!U)'@-8[YF'(0@@2@k"6Vp"@H8'`JTd`4-AT0BNL)Tmq$mY0jerQGRIH
(ZS(VeUZCrHi0V!IL!9LZc['GLUJFC,aGZj5A'#B1Fl[`JAj#hh1pAAaC+Dp+hRM
(DDYQm!2kEHE(k,QG8Sk9QV4k%EhUl1lZ@2CqfVD9dS0GXMA`h#[VI5D@q"'Yf&L
0Xp`i`U@SdVY3N4T,T*P[b1G)&ZQ1B&rbGlj4*N6PfM9lHb!rL@)8qkNQ6pMVDXJ
cArIK"d`9LKmK9RD%HD2c2a`TqR58(TBBB@JRI,NT--r+-@LUC1`KqcJJ1Z`f1D0
X3A(,Drcr25"D$YjLh`Iek,2@p8`A,qDXimlaq"&f+3L*"C*CL0r1#N0BMqGCF[4
8#bhc5UDc@'DCV(lSVR'+TP%`GADXX0b6$Mp%R$1ijr'b@6i)lT8(PDR"$jC@-LN
c4A+)Vk)"9cRRLR-AfP0F5HfZ0)59hPDH9JcYl[M&$V4,2T+GZ)H')rhRSZ3RU[9
P89%TNe0`B-I'V49F1)B+Q8Q4FAa!Z%(f399-U+Nece`2NMr+-NFb#,1(4Y9jPdB
HkZ-ZBYSj6L1[#"YFcb'da+L0c0f9Zae9K8A,X(A,r3pBG(IMGd#4l'd$FDlKB8H
q6Je8#6V,*&rmIBN1Uer&80qX-i-ZEFP6ZhL'DA*!R@5j"QJ-cE$aZb-+j%ZFKL!
"(lZqL91hGC-#Z$%%SK2XFPaUlrdLhSZE3&"5eZD6pJIFLD5(-J[AE*Hc3jQ-H6)
,[fc&#e-pj1@eYK9*JD59a84TM-cVD%VqEYqI(S21,j2CPT1$d`LZJSY`aMIr#iR
f&Tb&Lb%6MEH$h8c[bBVY[142f`9N3%%XdD`QMYM+J)+-kmk9Yidlf5qXJXNkmm3
Z[KN%`!`Xi@`B&@Ha`)'ScKiD)C3QIml!hF8lhfj`eERpip@TS(PM-JE9$i@B%IN
Ap8'fDL[B&2[bb&bh'M8*m+f2Yd+AM"+TfK6AjaM+"99%Dh6j2FP-UNGM[qRmM)C
MFGQB+PqCM!HF)cI`c0%(K'9p+VfqcK0QdKmC8U'G8JNqiaZc4Np%jrD%F3j1D[0
X$brr-`ED(r2Vdemj1fGLALcrPI9p2UeS'HeS%4jNJ[RjmKabk-29p3jFH4X[J8b
a'(GFJ`DcUZLMaD")SN+$JN'#b(J'e9P+b!Dc1"#l[4ehlTl$2'J8Q&dY@S+[5U*
lSpi8LJ[I([q9@h(a@G-FkCCF8pp55h*"8hL&RZHkiD(ha1HNqiTHSQTIZU@VT*%
$6$0iFLDIbp"U,bP68Z'Y@4,NVK)'l!+AKZZJ!BVU(E-9HR6b9%"m1XX,@*8[!4"
8("MEDlHBGNNd@,M"CZfL,rppDm9c9-(aZ!-N6eJ6`YZip'EYCX)V0@LX9VV6@,2
q*IL9%K[mEd1G26dc$MC-JEHGSX2dID5I-06Z,[P,U%)(i'92hFKj%#RelTr$,)-
Cf@Ud@$K(`$mK8U)X)0hp19Z8-6X,r8QYFkcU$4dTCCdi'9debm&c&eZm8R8$9-e
C-*hYc%1Vf(U"UmLXKVF)[p-G343)T-QbRTM4QIHHQRffa*Q*YTP*&Xpk(1T5@kQ
@p`%C+@mC')q(Vq%)5LYc@Di8I&M'ILb8F,)2U9Gj,A#$iQa9Xm&bH5K@KQfX8%)
h@ZH9XD6l1YK1mJ`4-KNm%Zk&""AcH&DJE8KGe3i@Xc'dljEM2@Kq*"$RlNYkJ0)
pe[rjCG"1Tma90U88'VNmXNLR',B,H195!CSaRq6bC!*ql@aHbXc4Md`#TlpfP%U
$NbYEK#`XDNB6(bRk"SaFMmYXA2-YK$QiC5Y9,)cl1+)AS,c$P((6d)AmS%V&3hS
@%0j(1f'+N36Jp3eM0ZFTP54e$$fqYq1F3`[PUZ6"B!#RG5D48@YDDHMGcViA"5f
Cl6Rmp3Ne8mjTa,)hlpE9l%pM*Eli8Iq$C*abkfZ%i[i$&8f#IAL[#[Aem8BRI2Q
f(j4erabIGMFI8BLl8-2Nd(C#)Z1#G4cSA[25YM'U-%'#9TE,2kC%lHiY#Y9@-69
4N!#**3C#meVSiVV4S"GD)qTq5Tm&qKK(M*!!'l,0mF+Z"D`Tr@!MT1`[rD6Gh!&
5i*[)Ep)E+GZ5d4V(RP[3mP6E9MV2$4TH!R6F#dj26GX1rc0,fZb+!mZF(dLIrlp
"e8)l**5TUY9q`')Q`+,A3hp#3RH[a)+L6bPrC)-%&RrbLB8e),l9VlNQH)aS+"N
GS$1Sc`6[Xq9PaJkV4$ZXfYecS3!1$,kdQHPYd`@53)43h2k!(kVJZ+MEcA,fTPi
+NKChlDRDC5cre$C4@"-jmU+Rp0aVYTYP2b-Ma4Xd*Zm%pX4a0X`!X0r"6f!0S63
)D85RPVY50dK"bE436%PEpX0S93*P-REil$[(AFCPS4+b#li*RGP#*b3&0I[iem`
CrFH$LS$'YT!!+EU3!-$L`f9lXEm81)j2LKMAPaQ$$L#R%JB#@bPb3@USTa)DHVj
&XG)JP8q[XZD*[")b*$"V+,6E-e43"mepV"&pZ8'*(3'ZV8F9MEY(Q-L'5[5[[P*
'eR,CE5Gd*H00BDYjh"G946+-b`Pf`5HP9'YUqER-+f-!Y!1LR%24FiNk-f,-%CM
I4*@d$T4,2(-pdN`BheTU!,I5,a!l9Ua*[-d&lJT1hA!"5M4cH!mk,M6C$ZMp)YV
[DNkU6cUFG4keD58CQ%pc-''LG!9M0P&&qaPVFLPUDQqHXQb%b)Yq9,iI(#Mp,0C
B)JTT9drBZ1)XZ"hb892*DPG!C9Y3D`rYL"K&MTCAQV@XGYYhT"ph`6k+M`A9P-5
@aQZdb-*(p@&U*98iY@MR,3BkRDJhfiUVINarZ9f1LS,#PV#TM&B!iYJ*MNIM89-
bNl[LU`"qV&V[ME,HM&ZLaK-L!8ac[VIad5eDKXEMpI@id&YPBYhG'B#cc)GU[1U
J5*NKa&LU5B6h9#e@qA"!E9(qd[GDBKj0k&9FN!$6N!!EMKZD1UmV3rMm2FS)X1L
aK[fc41!rr[,-&%"1"F"m`(!JYV4U(fR6H@-$i6Bbi$JfKqL2dK3Z'J$fRD$@IIh
%p+SP@$,@ma)1XPR$9bYq'Lhm)INY`(FK`%VBi2'%Nerm%ARdPH'G+&1RjAdf#9L
U(+V4j!K"VT1a-Yd"TU+S58RZ*C+"DfX`DED24K%2$aPCRAq)!Mjfle(B4YAq4kM
[&8cXD%&,e,CPDlipfNhm1eeCm,m('U'6V+f'HXBXS[3hG@E,Ba*3Hk@hcXDMAaI
Rj,&%),qNaP,q&1QFpAT(e1U3!*9C6lp`8j205dc&N!$%4-hAXV&jKkAbYr-60Gm
9q*Ja6bkYX6Zl8#F0Gc&VUKm#Z((G+4PiNGkZmNARU`('jIJj4P-9d!VXIPf3!,N
#5)TF-,3#N3@b&Ydbj4-&[4l`FI)i9S`j-m%rQKBIX`e!k%j!0%,@C5lmm40iJUJ
r&`cEa$YDbPQi#K56j!3)+,)!`)&"0dLl+6SdN!!88D`XN!!fV,[+I3YD`-Y@b`a
Q3Uf`baIFRDelRh&J8[*BeMT,Z!3HH,F`mVNeTeUf5qYDLUjDbiriI#EGFm4AV`q
fepfIBDj2SrIpZ$!m%ES4DN2Y`le5d[)X[5clU"cS[je9-RM-$[i@aIZ&'1Z1+"@
KRYHAkjI3YGmc@"f09$hiA5PF4'k&5K-[!Eq90NlbPFPIbmHqcaL('@YK#,9*IF!
ELk0SmX8--2jXShNS5Hia*i,YACDD@J4ClLBGhF%Pai@1aScHBS2i&r,$IHf3!2l
k35UEB$9da25$[9APFBZTV%E&S+C'CKG"Dbi6klK8UE-d6*9U"LTrC3@NE6S0MN1
rR@TBV#@D0"i2a+Vdq$SN"&p3"&4!MARfZT6$5FFAia[PC'PB+E`UU@CMQF14dK`
i5E5+cPLf01a1rI6C-I-Fj!$k'%M3mTGdXPm1ReL$KEkVlare@"5LDHRQAAX6)SU
a&dp6Nr+Sb$SJ%h,(!(b3!&Dk,PM'f)qh@CfKcE(T*X8+r%$2MBDp*,PBJpYq2LC
8NcmJ2!kBM4j91)Jqf1RjG2C40)L$J8fCUe69#+SVi,e30`IHpaY-QmhTM&UkQ"#
jHCC2NY54h4@kU2F@#Fmk@Z[)"aQDbi+,rI&5Dj2G'[q'MfN#)BU3!-M,YT%"6T(
U[')'Sh$4mL#iPi5L-e*Q"D*H-hk9)[@Sd9SIkI`R62URac"k[KMqDeIV-QM5R)2
fJbP"Bq95I!JJ82PEGHU-H@qceQMae(49`ql3'5fE'U(1e5ipQ5'F'P5"116C[*Q
U`81-R)YDl6CKqUZ+`!6Vq8S*J-Z[mSj&&i-al$$GV`"%(KdrBMD+AQQ064pD1k2
9HLG&2jNEpYXJkPk%)AFR`YIAD!TIf#IYZiXe,E!jd*Jhq6aSdebi,"e4),JbN@C
8S6l4rA!d09C"$&QrEJiMpa-%m5)+b[H0@EF1m5emBM'!@PL(Z8dCrbATE8PLILG
5X5EZbdKA6!a+FJN(hh*2B9T3'ak+2bfI!-PJHmLeU)V%ALl5bbN`I,D$&1Eq*QE
kimZ9qCX58&Im1F(EkRD"Ek#%8,*Eh`"ZUJ-qQ-(E[dIH)eP9(2lpU8ki&0f'#"&
dm6mN*02"mQeX[VF0$,J$MVJZ@8*$edU0dDqRUI"6'Z9IZ$lS6AeL@(C'!K0!l6#
UCB##'QFDK%+ZLTbC,r"fc@X[2pl'AJR6AcZ4CQ41mC-32e)HXTi94aC8(YrP$RM
mf'T#qQL%jc-F-!5ipU%-"iXJ!lY[fEj8F9FE'qb8#p4HS3[`E"Mq(9N9'[afhRQ
m98f2+hclV-1ZUV,rdbLXrJMp4)i&'I*#641-f0d8Phl1&TCN2B4+JdihErf1j,+
A$$"dLqc1NlRe64LJZqDGK@pCAb"#)#A'Z0DRT3(,Q)GD5XXaQ``SEjTQl8H9eBb
q4h(+VYLU-rZq6!2QBX+ic31&K"1YdlSVM0k&#dPhEP2U&E61ar3q02pE3RQpZT@
S&,(G3PdPVRkQ6RD`2EYdaAI@r5&5fZ$QK$IQaK,q6hc[L@l19R#&#'3I4MIG"5Y
Fd%PmCd`RV(eF08kF,)A*M#Xhh&i*HU18E'XV&)!#IkKE!USaaF9+,&cq"BQT`lU
GfjS0bk5%h%kR0G%[KU,+PI+54'['I-`(Qk$[P%DGIUr'-'mrLhNEB@U,IV*I`(f
2DC,+hKSM!PU5he'+Uc*5BU+%[BjIYeare39eLb5lH2(+C)N2JekM)U30lKRBb28
kCE0'9*q8b,Jp55#'B`@$23R@268N1L24UUhrT*)@J(4Yq3JmdElP82!LjfkVU4b
fCAm1L#`0%Dll8dUAK$J#bN"GaPdH3lDPMmmA$Di#emJZc0ZmL6j"IBkeXb+VEjT
+8cjrZ8NbaS#r#)[ERME"PFf8NM&r1G%Z8D)8%Q$PUN2Ui[5mqj@m6-'Z0#jR*!-
%q'hl*0JL)d%+`([KZHP&8p1A@2Df&*@h9q@AklK%V@`,VMP*N3J2ClNhNFDZM0+
58ZiQY1HZ(ZDI4Z9FR9*TiKL2*,V4e1+8M%8e!!R[+EMm[KF8R%F[!DbeCNa-[,#
#E1L'6$3*'(f%Dh&!"6VU%9IU+kh%"KC+q%%[#YhJDJ2Qf1q61I,+@VeSh8&dR4X
!%F@TANB#jj*Jj!*-[a194(,E3-,(5G%$kM(T+qekQ-YZijjG81a9rA+KAcp$B43
IVMN$Al$9-['hQP(*ZfbB)`PbaMC3)d5DdGQUid6mirDYV$9li`0-bK4$A*`N$UC
%FSa-JcmIDaBUK-0**Ap14JM$0S!3YMN3m4!jlFhERfpB'JqPEmaQZAGd3(IbDL)
(R3paGPk&j*Kep,!(&,peTCThEH5DI3+G6j!!f"$bKDB2F-*8SZk+@2Lk,m@S!SB
2!XLhJ$FGVH6FJl4*5BFaKBA86VfekYY8K#qH1U)kTAkeXmr#emc0QQ4dp&LTBkh
lM0)BQiC-1GaM&B"k@Yh6j'YZr#,Ca#@r!)!N9G0453B8j*2+@rSJl$M1$&'0a0G
SVX901CmU3F"cXMSbBpZ5LmHK6q0J",Sd-LN4N!!TY4UeIG+L5YK[P6FSIm)p9QX
5Qd6Pd9325Gm48!A!V*YiP&r-DDFcH)JK0eJDli9e#SA`BJ5%FJ,Q(6)E*6X'l`N
i8hq6IfrIli%hR-4390C[P,C1)`J+C-YFY43*BI@4-1Ar66,192QI([9P(MJ9-+B
8(#!#`kHf%'#9QcMRe69M`4E5P"AAFF,($pNZNl%'K6K@K5JA5!@*#F)h!4+#56A
+qEX)A0mrr2$Fa&!PmHJMHZlq&3F2m@N&!-e$NAeBZSa9h@e`9[4M,k,VDMI"m%`
'A,XS$6C*N!#3!*BDi[X#iDlq)eSPDKIY"rPeI9B8bA33%a3,G538rb"3CRV$T$!
!E*(bf(Jkr"3hX$j[rjei@VS*MqBhd+$GaK`'PKFm1kTU4VqQ9h9qdG-%9J5X8b(
,Yk4@hlQIV4mASA3JPc$N2BHAN[`Fpm4"-KY5Zc2Bb,kr#mcGLe@l&'M,Fh!C[$U
[#16e`Kfr(LUmNpf4dhF!)'3Frr5X96(F%)FBFLBlZ01Y"(I2#bCB!8!,Da!S9'Y
D%UQ,Qf'p[Yk,FCSl00E8FmZ8&&CF5%G!@,NkYPLFKd!Ph$#Y'cJ-K*h,)84I[hj
iGhMd(dC0h(S8)M&kehH8-mH(rF8YTQZVhEbSLLCcj+feAeEN[cC%V6J"S[JUCV*
YU+cNiL+PcHe`h4"!GQ*krDXf9IVA-aM6i)m!+X'$q6QYqcZUfr*`DK`9VUXc%#(
AAlMZ"S[d(%pdp%$k*62A0-e(39SL30Kd++TBarY5%NV5Q"KC6Dh#TFCX2aEKGNT
EBMNUXN-((c!!'[5M%P%9cTY'-IeikVhMj!91[6*VKIFpFr5RA(FhHbU"qrYBejb
h6AZqTd`dNV&!)[*FYpKp!i[TS-eY31@Nlf&QDSV8-Ac0,YC5Y'D(4j8!jImA%GH
+EK`,,EQl)KqIih@rYa-1%h3[P[dbmP[5)"$S3YI)F4-4@J9Qh5m,dR(Kq6*U%&J
)`-`kka`hTb@R$QY&!Z)FkY%f32K4-$Em`J#5NjGCmYV5lmL@(p1XP)!jR(D6H#f
rmh@-%YIj3VU8dMpaEjcmkN5RJc-qTbV1mEVF`ZBLcdVle$Dpl`q'-hZCQ0p![@9
eSH1R8X-FX(MX1S5dd2C%Q"hA'kFb(j!!H!*FE$,C#8*a%8&I(dJ[XlipCNHTK8a
Z["+dh2d1D('%@Q!8U6BrEV`5p8RX@S"JZJrSTq&"a"5l$XhcRc0*r6dNV&8D)-G
AiBT[KcHA"6qTHPS5i$5K8I0c3F)I)dmR0V+$EaMiCR``FcqqDlQICHbhd$j6$,G
%j()p(KT)pKV[@`"SSUU65GhM*E*"KFTLb2"r5!"J55(ZCKD6IK!DliLI!!P[*dK
%%kL9CVUDc%r@*k@-9$8G&AqY(,0AKHrml$!9,R&c!4$p-X1e[$I3*BIR42X,$q"
ieVcECNI4Q8ImkY%dJbS'lhIVip[*PQI#kLLYr&(`rCkqNY!F&B,GhAP#b2RC1AT
p@(Q[(jiFZU!Ifh5GfKEfQ!(Rb2B'l!Ud@$rY%iFF$UP`)Pjd('''*-+Rk0X)!8L
2Q4A%YVKIl"BK2Ae@pDqc%VIj[`2V'-4(NVeN6Jf))(+P,D8BmmXAGRPLV'@d'Uc
VdPNFr4K0i!*pq3@qQEZ`ldY4JS5LelmTD(bQ&2&hM$MN-6aMMU)[*Nil#Pr2`58
*m!IRGQQ%*ID4"hN!)Tfpb)0`6lP4SaXF'SbI262Va"5E$Lq(qcM+pb(8"(2fE@e
p`RR6f$TU5K6(90RiK4a(HR[!li#T)pcG*0UDp@q06q(%65C`Q3iY5")'-"[4[%X
0(QbR50dRQ5q-*mJ@!lm!RShmmmDG5aU-(#0%JNY)fTAV6,,3qVpD"C*`F#D,m`e
R4f#LkVMpEkUl5"3URG,XhGU[fpIMFfRaI9cMJUA*-84-U4%))p0eb405c9V(q1m
k*J1QrFi'!(qpR`eEA,#pq)$CRIf$m&[5C0VDamXL*Ni1)Vl,)f0I"CI5PJ%IiUc
S*ZCAl&FY`T5FFF5J`V%krcMkDke0D(!Mm4QN)d#&Q88QqJ@QF'NQ6TqI@Ib,'Ze
*HA@3!(Yh(j`Pa-4*TMJ@PNTaEYSei9@#ZL&$!!kc%h#p5!YjC&U-Rh"KHLIM1r`
8)j&AaEl#h&krEE[`Ka&9M3N(a[MmPKJFEB9@YK1D*k1K[h6DT@+`@GNMckfqiV`
4Jf4Y!,H-E`fLcpQIjkHpFh`*("9IBJGkJZf-TF0"d%6LlVBcX+#rpBl(a+mERiE
4'V'c@1-#-&SE'fb,5'p@%%2dcY"TK+IXV!kaRiLe2(ii)iNNY0Y*Q6fS'C4CFkU
*K-B0LIpE$6fH2UqH*P-(AX(,q&LR$$XhNX%JeSHKQB*DNk0!)+i[e"1q0Cla"TX
Jh*l#KGb2r6("BrV-b`fAh'TDaRQRHm$3R-&+&(l-LM[Ph,c,pmbU+8$Xe3@YMEi
`6*%mYHc#AaL[cZYj0I4"k5M'VIb[*9U'[FGp&@deB'S!k@BiCBB4Qb[0(4(,p#a
4m$+6Ec"jp*JCPd&5@bQ'T6dh+6-fCMXHP4-E[E1fiIj-,$$i!bYbNk[2h!D0i(*
c8[jcP$$`JSH2mpL$F+a35KKb'5!%hIqdZIG)qJ'1[B1j3i0bJfp"2IQG%mpQ$1r
Rld4[CZrYb@B9r#Ra5EPjqBV'PAP*e0Q8aIi3Ef!Nd3G41L(pjRM"UiaqcmXhIB(
R*IUk@H2&5dhrl%QG3%C8p4SZhj+`M#2rr@CIE6HMG+PkVUpmjd!(L&%AJ*`+@&m
hhff'TEVp%%$Lp4dFQVa%VM&-NA"Q##iXrK&QUVNd2Fh)6UdG3FU$-8pqCXKpG`6
"H-EG"R2B3L,"r*8*+-@9pfK&"0"Pak!pZ6*DBbD`JiiLjlb5*MM4kGTXMCdQTSl
b1Q,Gm[E+hjN8'-0-c"BfGmqZ1T*Jk4AhURSQDG2baK1MVe9*#bJ*P'Ua#%E[eKl
Q5mhPl)AU"Te"$'"!'hr+qZ&eI-AqKh!G!NrGrI8PpAd[DPCB9SeA"beGKFPI+Bd
aGCCKf(+B@URU6%F12"USQm8IiMQX(m8Y[lb'MhcF4hcNTLQKril(Yq"T3F&UrFB
%U%G*I3FG66RNrFj`rle6'6$G6P&DpmAM+LI*DhV2rM!S8laZB6%kHNPjed%Zi9#
i"-DR"Xk11m5@))@dp#`JXheahqTDK#Q*+,68U2a2SC16&qX"ikHCc,6fpX+[r0H
YE!CkIRThr4&EZFmFb0jh0lrIr@iS%FqZ$I'DXYGJpZJf'T9l#S%#mjF6R2hmCSU
RES$VeV9V)5Z4`VkSr+aKD94pqcC03hDHK#Q%)6VZ5AfGq$f(Np8L!HM+B-dXfmh
irC'jd$FckY'bR0LYfCbdcB(eahT!)K#`1"N,$[b@+1e(L(c$LKC)fr(TUl)35D6
l6B"U&ej8P-E51Z6KN!!b#hm9c[5''5(kb#32&lkNU@l0&T&D#q#VG*Dp(@A0CUk
kH)'9##Hhk#%,N!"GTB(dLNlPf@DHpEDHZj!![kLJ"FR"hr2E4UHhDB`(jC!!'#D
p$`G8i,ehV"Ib6+%3[Hd@-5THD[9)IN'SRGAjRiY,k%)&N!$TP'ZQGk'bFkaaESU
j4*D$Q43)c)q')DGbG(XpC(D3!,GEYHREI%&4V(!L&ERVQ,PPj0N8+#JDN!$dRj!
!2Fiipbq)Nf'k6PAFMQ2#idbQ58f[lIeB*,ZehFLd54$P1Z,*)L3bVF-S4RCY(+M
X[5rckG'HkLe*rahIH`YN8p"$b&,"H5I*$d9k6DPiP1fHFhH#i'S-M`qM"m'LZK1
daUPPN!#[r+F`&[+$KLPHCI,Y*2kf%,j*N[fRrS1+d@lALGFQ#dV%1#CPrEFBaYP
',NfRJelJl-D9khS,Te2G5T5A02*b!"4"MPqF''mqH04`d)1PEfXD'BBDiT55r(a
I2F'A6TKlh8DelDGJqNdPheYF98NkYpAUBc1fIHhic0NbPb(0VES3GYZdXbl)YB$
N`I`DPMIi(KPj5Iq2Ima2p[RjM8h9Gb)AqFQLCTE&KUC2drEprIldBF$Z%`Ea)kK
!8*AF-0F1U*N'm+dhfM1d'r`0&V+55Eic$iAm'cMb,96k%XeD@1jJ[QQ*QdiLdGa
82Ldp8Yi'FbChZ%S!CAL(F&*d*2Mf6e)#Kr,DKjPi3ENp!N&i-X0bJiq41c1dJ%D
p'&0Rj(mSB*`SG+RXCABm%$E)qpjh)3P5(&%kZ,XcFaLrKBF)KGJf&,@U$TRB+Ee
JkJp`D4-,P1AbRmP1!B,U%hBJbr`(0pd,8@FFk!"S8j@CAD0@A3Z$bJZpS2E2mQh
p(+kjQ9B`2C8ELH[IU6-'ZrT%VI8D4p*i)DZXqdrPTh#fj4-fqDFNZ(58qhBTkaM
lTKFcfUG@YX1l!eL(&f[`NR"$"c5QFSH5LJpIA'8q,ITf(18'GADpIAAadFGpma0
&H*a6DJqrBG8!R9A8,m`"0jbNL!88fDM%*db"q8,BBc01Yjd$NBp5hq`)cF8@m4Y
3'b5lHk`e@N#PCC!!&D4CcDJ[Y1M0LeS#dGf-k%hDMXYhE2"*[riEc)B4@KF#kQ@
'#-*&+LkY-J3LV`q5,j039(Rc6Drrm"ZIAVjT6K9#c'M+L3E-IkTGNC'lp(,`HF6
XMdiK%"Tqa5a-ZP`(Lm,VkrB$jp4Dm&ipPbm)X`$j6-'kGNYD*2cKFiK"b6A3'aU
$Vi19flJDZrF&[G`jHCGjSZ`KTC*)U"9Q-Dh%eUGHF)r3lqq)1RDlVbLb30i`JH4
`4E4)be02ZkrlBK6iBc@TLZMZeLZ)C&LF['#9#UkMqlX+1GZ!m#YedKHDF3*#F,N
hB)0UDAYhZ0q@rjhAr)&P-1NB4M9ac%k68h3J#18cCCD1(+M`0b-3R,qiC)SZJ5N
$J,D*KK-[i'JMMl8LMmRGklR"C4Ec0@Em6+A'rILr5XD*Di@qH[j@li&XB-fIbcB
iArCQi9-),Udi%m`$kF)9QSmec(RMr*(G$IXU'+e#`!5*CT,2PS#9Q@&%Z8IFMAX
NN6(h*RiEp`Gcf"[I"Xr&4NU3!2QIYYpIGmA%(E18d[pA+K[),lhp`fN$Jf#GmT`
,Vchfem*,#iE-)qL$mrB63mZ`fZ5)%Ja-X!4hGbK3D%A,kS0k(!GT(d4JGBGpk#r
qbPb&ehFkj@[V2h%jDF`beiQI@'I)F%G-hGaLi#33rk*$AUG1p09JCa9B-Xa&k#d
&5)S!qrDl$UK%SMG(PZ&TiA1Y$M+E[X[,(f!pSd')"r"U[SMKN!#GS0PY2A#0@YI
S84Xd'#h%,!h[$p,hMP4lUUG3Z-@C*6qTp0KFB8USVY!kQaJ,q5)KkJp1pl$V!4`
[kqH@Zjd0N!#MICA',d%,-VP`LDMEJ%)eFqQPhh5lAQD%+`K34HUN[ASh#*2l159
E#$Kd#HfD2m8EI-#9RHA&U+$Cq5EJ`8h6H[I&&mJF!8LY"0"k#`Yk549%((MM&Vf
EbYB`+!*8Bf!qf8FqH!!rNU,PY*!!GalR#dZc1$%LVH+ljbdMr$f&TapraJ%B5QS
c4&R&(a19@XLaaCE`CC+l[KaKf8Y'2@[,Mad5F#cLjqP"CT[Jri@Q+K%m85)kbrY
bCc(V0XL43ZKD%@m2AZMbXBXfiV4c%b(qKb5l@F[lGPbBhDJKkNj--#3(5m$-0Z0
Q"iKhbZe4D*+Q+HJl4Bp"hQU+R4b**BNK[I41HUa`!kJqIRCVDPfJ4+a*3[qaDjC
j6lRrPdM%FV`5b8[pC(01fm+4c$9Z!FAR9+fh%53i1TCipkB)T`[XTa"!cYpp*13
4E6HHTj[k#Yj8c(jdC8LX+h8ZF$0Vr$NBXm9h!c,-UiQIZ1XNBhjJ+la3NcVb$I3
JdYQ[LH&M30Z2hRCk1UVH1",ZTfU'MFE28B'T-@NQa(pmdPS,!AUkr(SSKCLimYD
LP3RFfP0JrAT5F9jQ#,8@`Pe!89EjKU0'@YXD+,Se&YSZ8QXDhLE$"d,Y0-c#2d'
qm5f3!%6X"hF9!!A`Ud,`&D#I9%Xp"KiL6iMH`3F5L&(T*b'p@R4#6IN6cGcmaI6
*EJ9!&aK@32PNbK5921d#)"V[hpYjJI(F,e-4GaE@6hR*1VSjk0j2*8&**m*b,XK
jCN,2''q''a[&GfZlh2*L13&eNF3cUQM%J1rKbN[)Xji*04"9G66ST5ml@)jj"M`
#p+GN4`jCqiMN),5`Ef#!9j8G%AMVHGREQI()%PapX$CTl3R&Mf"i%I[2m)ijG"3
YR)hH%jJ11(A59J$'ApXEbH229$H['S!QZR6qRd+(mNYMA$SHrbpcm'fiZ(bK[A5
'"Z4`,K&,fd+YV2`[(Rkp*`Gq#'D[rJ"J6$llmi9`'aqe)[)'q"I[*FNK+1FkC1c
MKEA$MLadS"6(0k+S0#)#%lJIVHa4Q)rS!*Q0J[6(Je),hULh,hk*-lpP)l4X-5E
M8,CicRPP)UMPGJrSl1k,0lNUYTGV%l2QbRB"&&#QaYMTPQc`JjEF[-*lP'bmMiV
'Her!%)qhX[N9Xj!!S+8E`m!2qqHYNX1,bbc'6QK4ZR18`ma[R(reI-K*!0A*8He
F`ab9ffQjGT6q5Jdcek'CCXhl!bP61lVjqRh,`H-BmG12@'2BIDCF$&VbR9`DD+J
ml4H*,h6#cdM+1Y[UN!#ZPqE-ZThp,%aX5QZ5pHmSZEhUUZaUM@Te2BeYA`eD'c,
!30Y#MK#5Nk'+2Y&*Sj4T)24,ZSaaB")+rE6pjMa6KJpQG(*X66qJSTbpF-`$TDF
2G)A&!q5le1imcEYh&cFVI(qRUJMkZ*Gf)iRM1-fY@RPRdXX`RlKV2a,Vj"Kjq@"
R0SKV%cMBUA38TY!dIVkBfaJGXlK6%RP@`@PUUmA9d6af[XQm'%3MP4k8Tk6E16h
h9)8*Z#K`%HJ9%cYk0bThb$)8[4U$5GSAf')b(m@$D8BhGPZ*"IeQ@d0kNSI!qh!
$Ta-fiEDVR4c([E(lcpQa,Mccj,Xk$fL8!C[a@1dXIf)pN!"DRdTU3Z!QQZiE-14
,l)p&Ki#NTGfXMLp)(C6N9"6amJ6)IHdd@GVHA13aF$-N4NB)Vkd9`1cFCB''83i
M`PMmAAAb&p#ImAG5Yrr-2L`(iJ8a9,FfJ`(&r+rq)BkfbGHUb34ma-@qX8&d,)Z
r22ZddNZJ`DMkKSlkVA([fa1kLk[5#aCB,EQA,rj`CH3iC#,-lc9Q$9kQUJMr@SN
4)SUi&9V0j2+0R0)IMKKd@IRSIc&+&pj5NGYVb,@6DAePirG$J85ERT`e@PkFT'X
8$&8Y9,FjRX5+Up`&U&*!mR*ki-M*AaH+l%I+0hK$[Tf$'-1RE`"fNL$!5iGXF2+
RUh&1D'*BX&3`Ll-ER$+FAM$bl4ZEAbm4%`j'`fa6(R3189"53lBMV+-K89S3(*%
jik!Nm`1!dmZ`PfXPlDBGUKYTV(,YCBCX@HSFE9ekKHe-Ud&2L&+q3V$Y3rd6Bl@
5d*ejVApMZdLYi9%J$1r23JNjcb3(8E1U&H&8D!m99)B!qT19ZGaG$2XkeeXcb0m
BJbm++K@QkHXipX83EM@PlA"6KN-)Sf1ZA(N'lVLFkQQ`c$-k3d&"mFXMk["#jL0
@rkH4Q6ekSTdJd*hljFmV@#9j)$M*K%9UD@jRQR#3!'bPHQRSRN'6#l&6RYjZf"`
Jk2p&8`bST)b&hDRd2[GpkTddPYDED!Y`F"1kME@(Af@`J-Qd&,Z1rHK65r,)AUI
"Fe[,%#HQ)*)d)!9b`'L`EmA3&2E#R'Cq*)pLlFrGjHYJm'lj0,(r5S1CUBZK#!M
V4YheU+kY"hF@kbV3eakk(qqQ9kPGm`jjAfMJ@aqkjlVcl!e)[!pb+Q'%S@hRYZj
&A4,1jf%V6+!)hLJTU1A!KkB6TmA,fp`a18QIb8*@DZ,IfeR-CMTiZc&iG-Xk"Hf
hb('f,5lEFB6IM@$G*NFT('-Br-p5fUmm''dB!Z$UiBU&GB80*@8'jYp,`R3bKHT
k0Tp1I0JDNqE+"pe9Gl6NLE4ICA2Xa`FJF'c21)ra6RU9$LKJ)#FL9F3U3Ye@HGG
qhGh1LpX[bk,4k!RDKSkC,l@j2JPGkL+$dA1$fF83Lh!La8Ud4DSPLRQFkaU,KFA
%Z(IM9Pf(9!e0Jc9c"Ppkh6QLRZ$'r&C'%6V)a53TlQ1%pmAG#DIA`15b+GaYMRD
m*hcbi8NY*QQTkJ%E'3H,4e59I$1kabf&-"["9RYjSHb[6X)8b2U0aj@l$D8(l%j
BFjR-ZQ@UY+ldV1DKK2%KHQHibXL$E5mEUjF,RXZHBIM3',A&IGdJFf+rZ"i"e"c
(bh))efA#@!9*P3kB#qUd0Rb3!+a8-30i&SYZ`RXAmQDIbmTZaDMK4idcd@P6[ES
6k46Ekp,VJ*YH*BZ&Qm@qTQ`QfffmlNE(d#KjPRdbUQ0%+G+5b&SXDM@f+#"Qi9c
cQ62P%l!DFlQ0D)3c[0L23+VK3,pB0eB-ShBK)p*--q$d'AeF`3)80-(Q!DRdiE9
!dZCaa8eITlUE`TaL8aiQBEa@"H5FIY(bR(b$@"KBUpG0A)D(Lc"FQp)m#bUKH%&
fR8!+"1S#B0i`MUGSl8HUd%`Q+i$MEGNU--5,IR*56hJUrJU$mr3XaB!0EE3Prd9
G%jqlMlJ*""BfT6E[bH'*drC4H$+TI"1N51kU8qT(m`@6mqc#Z!UZf`)DXS5B*j(
K)5-$dkD2`GNfCm5RJ`Zq'e`DSqeK(V-RKX8*p#e'#EZ[)$9"QYI`cfUp5qQX8cK
&SEhE"DVR$X*B&kdb,$A"!cde8D-085cF#&"QM@CHDfDrGF4KXfZ99MpX#9iQdH9
eKdS3cP0HR588Mf386Ee*rkDYrpR,pR34Fkd+r"cQSB0kV5fj)NA@KRJ6(9e@-5e
2AGMHP!!6pX(SN@(@92M,J(R[c#!fF+@CB6&3p%5I3$124dK3lIbrp*!!C16+M`f
f0@R8SP*kTYUC$'9BmFpe+k@436Skce9820kj$!ZI9m``VIX[*UF@"$+5[J@Hh$3
hd9"8P2fk'(S0mlk$cLU$`H+J-ZI`MdPQD&,p#`Bq)U$)(+MYX+T*T)GpRhc5Z-"
%%(aT8khEPdDcKCR)5PZ3!-0idc'Y40,M+8HdN!!Y4T!!"GXIkKMK3(#5f@ipMZk
MH@Rr8-E1hK"r'KbI6p3F66`f-cV5&EkC[15IVKImXr[rY''3!%a*0Jeh*9%"rFp
0j9J8%4CXZbXab%PHU1MHG3jXdNC9[$+-iX8fehbrZ)'rql6NPUT)IIYXA$RqM#N
Jr3ZS@%!IfmMbJlmjMpY0Q31%P#VE04R`NLSilB-MXIVY@V*3d!PBXT4hKL,`9,b
MZaL[6#RaUi`a6UeAP!rBPM3rNdMbGe'!djhYJGVjG(I#A)"r4q'%M1%T0@Vr&(R
U+!r&G!bVU[C$,F)XLTS-5aBLFNJa'0bRFmZc&1bmL&+$9"hZDh6T49%F31DP)cJ
`DJ`NK`VKRm,FZ9d-3,L-"m0&RDa"Tl"Nhba"h1,c8l3XlG)E5Meh2"IJ1HMX(iI
,I11,L`XpJmiM@BDh*J@RGi9ff(U-aEC`G0ZX3BrHRCeBHZ-P1%D$T8TTK5fiV*S
,-"T9eZq2bjfFP`1d'q$8$d1RU4c)Q2d8TGkM2Y&fT@0SC0Xf$pq[j6K#lGqZkq5
%AQBCeAlj6-A!pmc(IGNe)Km)d8fIp5AFqFU+ND`ah+G2S(N#ThKc2F8ipU+e)8,
e@4qLr9h0I$2PTqUUPZF$Ym*ihBdc63H&4E@&bPbChj(6C&&*-d+q8flZaN32IPS
hX2pmR3J4!fHCLb&B%qfUT61h@@BDb(%JHqFRAL1JIVl+#pY"881+Cmm33K&835'
RrE31IEA)E1AD(pidEERhlFH$,e#iR0,DFV@a$q&HF-D3!&!,63l[-r&hY$""Sf"
&%aIQ'-mQ!CFi)XC"kZMi,3'J8([M+$UD@8%HS$[mX1Z`ca3iSm"98iY"8@fR5p@
*&8RHMh(Sh-2Ypqe1@%G%H19chh!UCe9imRcX9j&LVDBaC(r#l6rNmQmp1hJN959
RVcdjGF8*XP1Aa$JM4GpN#9rD!@HRG#9Cie"m0K(P[&5GTRVD5+S'KEQ+H#5QTZr
#PHQq45JLIAI-kcN14GGBJqURNfBYDbaj8DSL"QRql,8"k,%8q5,r$%,-8jR(DfY
,m@qZ"kq(pEAfI#q'!qdZrC[FBcmi!PFFI6-`r!'pJ6Ld%H(4a4ZK!'5jil%A[$0
dCLh+I-%R1P2Ym0r%fUJ'Dcmj$U8El[[2#fPI*AKiT3S,123Q0#'6!Y6&klX3F,4
YG9lP+l8Lcemfp"MPHL5d3GmP3%'!mIqX)62q[6QiQ-'T)'e%p#Td@+c3R!X#T$P
m3+fjijX1I8[43'3@*e4j*6@di3Fd$kjIX1hajL9Q$d40NLq((H5Dh5UjPM22"#'
Y[,0jee#h&3Q)aZUY3ZUHm[i-`P1p-dlG%I!al-TU3K83l#f--pH1VH`p"ZLI!MF
T4[&k'$UJ1kQLkajPG2UIl2$S"H6J,KR29A(MRRpH#4QMJ3Hp3bjJf-eq3R$j5lJ
F(djZ8X`h%AT(G8NSrhCi!INK6X9k0EUjk@$S$!rU([)iPK0UM'*D@C2G1URaFKS
dGf)d%C!!#XJ)p%k)"8XIQ5Ef&@KfLL)Bq4h,EbCfpX9%a"XFVcdcdD&JiMJFD&&
E#q53!*L1&51LA&Vmd3SK!Qf+hcJE8D9RDb8Pe`XL5A#f'9-QYIEX30MSD@I#Srm
am5PY#G16A"U,[ER`3c'Rb#b+c,i,1fi("'X[,$$CZcUYqDk2Kae$3HrfljXQ-I$
AB%-qN68#TqA(4'YJh#5[1KK1)J+b36+4EQ"bX!KSGeZS#M2a(Z#m4mJ+N!#r+T6
5eA-6*eK6b'+N%p*cYe$S!f5[9k68&%FY4fXF,QcF3-@lmDQ@#Cd"-C%lf#iEA[r
KNi2D[ikfZS3``S9kS"3"B)-B#pDll)c)-#BU13Z1'XT'+$kQ@KI'NKGDP3iILkN
4%1c&XqKRb"&B$lQ-EY+[&N4N-)h+fRTFdA0m-LR,5+KRfjd6hLbE,R0"V63baC8
8UPJEGMmLQ3JZbM4R5`!&Y#5*V4%NIYdm1Q[qV33dGY8U,F@imTIkNqMU,B8k('P
`#)d`XhG[IR!cpSG*9ePDa`&hrb8-'%"24iCm)'5)85*PdDLq",Ik@&&TD&%ki3&
$Q`LlRL24&94`*mYfb"TR2qX!Z!GQf`9ai#-K5[rG)IHRa@YhZjK68%38*Ue!@$l
m`Vmjh`i$`eAl4$1$F`4!ZZ5-b9dklbD85`cDi`+HdV*NJ'@TT,M&a+HIi5*UcAa
A1GV%kfA'-!&3862q4&pQ9)aXbmiA$B`r-FKJR1'[Di0`-NX#PRNaaX5d@LSi8L"
#"'m[%i8#Q1[l'Xq2YaSkrTL!4"D,qA"9a0TR'[,iMMN"(AGPRh-CFR"05`YLL-4
ACeH+3m[f4rIQ")22j%Yb-ikCH!k1-K"lIQD$Am(b9aZHIaXdMHMT($RG8C,)(Pb
5V2*#2lYaIeicj,#UILCH+jmj1-5%-+eCbb4GH#Z%RLHJEqfP,'4QDSkq+hU0HI*
hlhNlGRQiDLKCX[fBa5#99P4d'"FVpIA-PLIbSP6b[K,XNTe88)54VHjBYHe8-95
5hPFX*c5d&deBlEP6XVk0%lCk04``qa(jGfXVAN'qLkfel`V!DTSIU-JYZK6b0ZB
$`r*+'pq4eBjTkN2r&j!!A+RIMX%,$!P"-3I20h`QA9VTbbPPrRLlC*@LmIGAKMS
4E!*BrVadE1`fZUijb933#iI1YK6eSjC1&)P*G1JD6dGfZHdE[c6VN!"k*ab@6Nf
XR@bp,e3*KF,h)[f,qPK%mR'I(XZ4&$I-`KZaU%X4G`5D"rkm9,-IA8(G-4%dMMc
%e[Hp"%f9V@[f-U-i,cF@H)GYLL`rM(LjhPe00,F45c8dMJbA@Yr)F0FJX@2[X'I
G6`CpIp5@XUM,E9ZlGM+9Md)HA#-FhccHBK(Y@XF6Q[N&*(!UK9$C@TAQX@fX!fK
5ArPf$"RhQqMq`DfNqE*Ae!,3jdT*("5+Th$XqTA8!KL4HiGV*,&FJhLSkPKDqFq
1"-1S0GH6hA8C+1&08%P)RKc9Q4%E(Z0-1CGCCbCk,dEB*,'SHUQbGS$@Zk-,J5B
Z)BFRh3U#HJ80!E&!P1@6+Hq9I12aGC14dk099YA&"ai`+hDljiXEMVlX(+[038&
*a$0f*TlN(De8"LF,11+d!#R23cae'TC"&Fdd+d(QHT0$p2Dh"JXH['8mGeMH&%C
6Ip5(iU-cUpli3qd*kY*F9*2b["&[jeMm1rjSf%&eai@Cl%#rINp)QiZ1k#3jYjN
$FlFrTA2AU$i"@!B8K5pC1I$``#p"!m6S8eHSiFr2XRi6Kj4fCJ2h@fem1[U1!Hi
dJTe"U(QP65cdk"3RT6E4dHe8A#5Nl9Q6A120pHhjAUIZ'd68pG@ETAFK&%P1H(6
qRQ4HXE$&6ErUm`qh&pA!LEm)B5kcQ916Tjrl5h@C@*pB[ZXCUEMq11L4U(3kjDU
@[iV&hC5NT1B"mLa1T"0i)YX*Z&$"hD&b-&bd1""Tk%e)Fd$XphC6!223cCU&9'0
GV6q8V5UL)RBQ$Ym8GM&Jr1Zaf60#)1B0H-ri'5Z-%(h8jL!8L[aRM8d9r6kR5K,
QBjM23+4i9m,$Q9JiG(HYqDAXRe1Ne#+e%DIYrCB+--m4AM3fSF9*1B-F,QMDIHM
"&$rfrj!!m,bBTr5%LfD("0%[&"DShL4)P+G$09q"j["N6UkN+'1H)@,,#CVJTj4
b4DZ*8VRkh4!6,iA+IkNaZpfmURh%b"QNI$+eF5Qpf-2UB!jBp,L9(6RZ9Eqq%)'
'AbNN4SYJJrrXSVK[b'ZVL3"Ff*iiH$`Il$0qA(m$GVLi@mqikaSX)8PH6U53!$U
lHeHeHD-K*6pPcq,%H+c-Z6dThCjdaQVNF)TVeZiY`REQI&5Z-jF(9,pdmJmP`FR
pq5f2F-"6J(XU9K0fNC!!TSNKKTRCh-(A8q-("r`,rmRP"bAjf($%Ai%h!dCTr(k
BYCl,c$FBbQLVS3YaMdd$1MG#B'UAQ-&2r9"(MmXL`I!9P,Z0(Y[#R3PZ,SGc+Ha
[8!1-EcBT0&U2r%#6%2bZ$FP'N[ZJ%!bN4(a3B,F&,22JZ@careQeZb@PKp"@8Xi
p8(ialHfcF1VXKR06NU0m6j(Q3F`QAaeMMZ)2c[3`h+U6Mm@JI,BLU$d("KT@A*b
(JfJXG(,&bEcBTXG,69Q`T[TT(hL1$J,SZ9lSf5%'(bFaqJN1Aj3LaCm+Mc[PGCZ
q$II3h0dH,Rbp0QBDLi*bV3IiZJRCH#'0laj9ZlXNdJ!f6Vkple5IXN!+6k0Rem@
,*X(dkGH5@B(ENk,)`akNTl8MaU[UdV99C5dP'Tlm!!IBLFhdST3Z!CQH8ka9d'4
3F#B0qa*F`&F30Am'&5ZYee4SIrR4#3DQ`GSFUlNN8kX4IF[8lQ'3!--cU!Fq5#+
-IZb9rCl9K40q4NJD-#DH%4%F(4hJR&ALL[r1aE$I2--L)DeHL8jr#C(fAVLr[e%
FT*r@dDrA#!ifLDGJQ+%f"YUI[I4"3F`$KbPiYR#XCCm3`)@'KLGckj'Yh!U0@m4
5U[Y-V(C)hD8[HGbE3-"fY%(3Uk"1P%Y6h3!Rr-hh!@9Cij,jrjJH!f3MR+4D,%f
m"H6K+CCIq94l,0`$('i4UIc`&X%Z#B)lTcDj1"@KEJ`*@*-$VU5Be&@VHm!m"0S
RJE)YY!dD2IpQAjc12VJfKidHVj9S!'kcjKSU#$q9G,U&P#bS`R'Vp"a9re-2C0d
@a!T"rKGp(%-(HIdK0Ki+f(Zr&Ek96*6Y`8BGf!@GBSeK@)%[(6"XZGQ3!$&'mE4
0C6(G-VX#mUm1e-B6JA!X8Nq-j2$hFh3Dbc3V%6hSkSJVPAZGL'!qV4K3X15lP'i
e4TAe3P'+B1Sb+1(pc&3'0RD3!+*mTfNca-j-#c,Q2!QVaX(D-JHU4*34FI'219Y
M6qDPq"MS%L!iNV"D%$+B4KYV5(!S0m3pQ)"Ed*)@X[(VR'CPcb+ATPkj3J0CHHH
eb(&8m%9,hKY)rKa"GP#j9iC@`*aIr#S[D46pj&3UkL4MYR6S,2!EA,@!,bcXE`'
9S*R"qlI!hG@JB,@r*lr8GThK+VL*N!$T`VN44JH`-6edd!!Z@3Ehk*lL)fepY55
`6U2FHj!!`[k&[%XAN!$D%SDd4'!"20lfa%lHXPDjDD*)A4-ij9SQR-M43Md2-&T
G*JMSdD9&TVL9k6Ar8)kidCJ[')M9a6BfU#6Ik'RF$%[#"EacUNji@aa%*IH9+PH
R"IN%+#%E04,DrDh,35Q9#aBUP8[ZClHEh6*Sb6i6Fr0FS((SGP-,[L8b-AI,B2C
3a'edB#!pJ[%Pr'QR30``qAqRkmCp-d(-b16NZ,9T9(A`lG%UUr,4d&&#S+Ph%#C
!F&a(f6V$(4S,*,E`&f8rqTPU9ImK9GLYKmkcJX),1iYf0er1,$J',Kc8`NC[eSD
H`ZV@8lQ%j([pSY(&i3$`@0S)p)@9H!T'K6-L5lQaa"$Y6Uc2lfb'a3qi,eJd(0+
ZTI4G@"08UkRhF-LmG2l%!mAZVhQ#h'R-RSr!JBmlbI!U-&8#[$I)C5"k6!Y`&fC
N+Q-HIPGiBNh0Xfmr"%dB-4U6A-,)ekHD1"F,5*[Yb%Fc[2f((M4i*HBQa6@QSQS
-P`D4f"a`c+FU0[j%`JLHX3Xa%dPKq%9LU6eS[rrahCcp"6$Sp"(9q8QQhmUiCL4
,TFe3KH!V(PLd+EZ3!!1"GhpJ"T5)%`!9lKE%4qF8VQHUFdfGR(IK`mNJ+ARLI!h
qfm'28e"P#j-[m'ApC+)Zb+VmaDRfI(L3!*dJKcV@d38iqCSj+F[GB34U"SAYmqA
cFr3DrZ3P(hEc(P&B+SG8%IBmR@"eIQfBGX0fd2kET63djR'%k(0lFHK,cf"GhGj
JeXZU&&Tb0-HKbM#R0+Q,a6L,RB@cc4+PP$3[dIir,D6e2b6+fS4aF8P34f'XihI
aa-9l38+qq1Sm)drETS)KpDmY(136pYj8LaT0-GJDR#*b%fL9-4ipeK2"Hh+&CA9
`Q9D4'YhKjBL`hB09lPERJ5qG6B"rR`4ca[&IRHfqd8,`U&[hqAFd$jUYc3N%,*K
ejL%RUe#HrBk(&)G,aYUeTbf4[MH*6!3ZIFQRHX+-MfJL(-DKD(b+3`*2mX#SkD-
`G(*[qBDJNlaZFmmCATV2bc8+9"c)()J68RV'&1!Y,656h)HXQXM'lV[JT#qT+ZR
SQ,Jkh@2ABKV5c4+,*E)(!C!![bGQ8kQ0Da5(#RbLk%''%r!l3MEkiT!!BUZHR!a
FAa6X2!4c%BTi3DfQ#5b3!&bKkT!!0La(EF5CRMA[JI#&F4`UZ+YcLP'K!EZTS8(
m39'*@!TLI(5*`AKRlBqG1NCcUQb6Z6pBAbbGh3H`H'(VURGh(iQ$fLQp#N)Q,pF
m#8)%IEF5'c4RlpH@)JJkGFb"Yd%"-A@IG3E'IGLk`)X'0pMV%2Jh[R1fSTe,jNG
T2c3c8aM-8(8ccC9*cpR`N!!#I"UE"98J)'#R!F0GL&!k,&fq&lKIVpJX9'0lMfV
NZK00,1S#qYkDM[,$j-FdBR!3&X,Z30J6!aSS3[4%AdUTRllDfGZ'q6U'''[!r-m
B-lR*2-D2&3U1ic4b$-%kRcbj@"J-(eTKIN"FdN8c#rqI*!'E0NURR'TF0cD)q1)
B3NYqDBbF8"b`Gi4V4l,@@EUD(SiVKRfEcj!!GKTCSLMDTP,"T5,5G*SYm6Ta5XI
#U'KP#S$J3aT+UKjMfQ$H8km6aF-B"P5CXTE#5jP)"f@2`rN(GfV`'SP66@H!2TI
Y%fJrV8JEl6a![pifIZLYfll)md)J1SDDVm"IT+KSQJVMH#GH,%ra-5EJa5X`hhA
"L6CMfUUXc*D93VAGRPbFJFpJbX[Y+,HCk$58b2Vre6!3')5c)!0&C%0M5@+h,cj
hfkNe4A-QhhiL"eq0L2)#dQY8GaM3DeZCjGK!i)KQPZ49@(jfF2#QBVj`GJ0%ER0
9QXdphD)&+e1q@0diqKLRaX6XNlJH($-`rRcB,BTP1P"HeMbl,'Ic5Vjc3UKVS2L
C*0cNpp!H&@ki#'C"U4"UiAVRc"MS"lJ"9S0&!XMF2PN4l@&(a6eD4cd(Q*qHb*S
pDA%dlh)$B`9VZS,4m&42`2S&BV"b*JX[2X*i9P%NF,G'LAP@k2GQdjX2!fANiRZ
2HT6iB,!3hK#UbAZ$#&f"'25LU4UES"8cI&aB&Iql[lh04Z[`aU`R&fGp-M5QdJQ
L`K"Jc)mFX,QDANUVPId%hhJa-3@ZRhIGh6rlR"%Q,(Za&,Ze!EC2'Aj-QLE4fLb
)@-ZY&H,)d&HfGG"j)60H9N*qYHLf6pQd)5bR+-@(N3QD!lGPr6,aDFr#H!kB+De
iB@4U@JL4U5(EMGS6IQYQ!EX1!KkjCEQ$0[apM1c42i11*l#LeHK*GaGcpP2YDc4
Xe(Vk02%lL'1GSqmcFl`PaU*Ub@jMNbPHa!FUTjQDbTJ5UAXr%f0E6Apm+(0ZGYf
CRN!4c'T`rji#C(F(T96r+FK+kc(l9*!!$b4`a[!'+*4mDY9I4B1THe1a39jRN9U
qQh#VTMle6%dFJah,a@PXkS-3Kq*ap`FSHY!j96M%Sb8jSXIQ2!1$DA'S8dB+Um+
deEFM[64G!#,fqIDicI*R`A`UKK3(lfH&"kNH9#Pdr%C3%r8@a0Fd029Ujd`4m8H
PZU,Qmi1i&6$RAXN1k,5@kQdN!kJA[rRaVqa$E#H[d,relXjEl,+&,b$SRM(0!'f
rKC!!S[Tm0"J%bhjc8E-6Uim2+b([I)bXrShY$UCcXhBefhI2j&CmSR&pK9,CjiR
Xj,**ZThRhMIlr(#0MS%erZX6VDG*F5SAP)p`cTD[IaPjM!9d#J42,jL)K#4JA&@
Q%90k[qkh),Lf9((V-j(V!0eJaXD+pG&#8MG5KD6U`@TCMhUKIBa&0G+m9(L"5"a
G&-VRZ3Qk"LT!%mZ1Jm@qMaXCY(GZdbp+Pk!#AG@C2NTEYmImpjV@EHe"8R@raFV
A%RApblKC,X@KBQS%Qkh"##XYK05PL(AL+LqE2K&Ye"D)dA'KJ!-$MMQCQX%4Y'L
8IIPAHclm3DLEP+%CV,LX*6CQh5)3C[j$D8##@2Yep*hdp26dp26dp*D`2HmrN4F
a9qUmGm&++TK3bIhKDqBqDRKZrN+3!"'8kIma9A"6"jQl(,XdPrQfZeD[pcL!f,P
J3Ame)R'Q1L0PZ&$r0Sq[Ak)dA(S[5X`DbkAJ@$&N$J4m*!SiR`rN9h#$6SJd$8R
d3E([TijBQ#Q@6RDH''r)"YY1VfakTJ9mMKIE13kfjmf@kfVffQXZ3F@90rU24K)
YiG`+HqK5HY8k"dCJ,9G(M!emHT!!8&J@8kH*[p+'%R56,ehSM@X"Veh)+%rYVjS
%dT,0T2aCi*`*jC)%Eq04fZpXpL+j)TPjMaT)Y#&rp)mPDCFM9F""l'!%Djp6$TZ
B3CcbL83-Sp%X*'*al4A"'a@IiNYiN!"T#IJ#G63[q8hblIq5JXP&J0erUAb&Z(A
*PBJDC#b56[CF[N(2hH2!U9lZaFYQbf$GX,'RNfEE0q(C00YBG0h[DTf5A"$N0hK
GGa0AR'6ePQm66r@U31HFCU"iS!!0emL(RZ1'IY)`kiQ(QHf06D`UKU,E!TL@[H+
(FL0dG'8DA6X85A)aYT!!+%TdI"%B5*C'`CP5E8`-(f[@P"AC&+"DD-k46ATV6'Z
ChCI8(aaB40P2CLND"$IJ,6HrArdmqjX2S'Q@qCVNY8ieGEq9d*-#l%Ni9"4"cqp
p[j8"ri8*Si84[eJGrp$IK%mfZkqRaCDf"j22EDIUTHN*S-Pi30+VJ"h#lB)m**A
0LBTJHXS""m*e*(BpR8l*'iq%NSV%!"`YiDpA'f@0G-MV+bL1@'C48%+3!&e"k#V
5K'ZL8GaAHFKYFm(SBi*QIm,)PDJ9rYqRGp!QfY!6'Je068efr1GUHcMc+P2bHZ*
#UbXb[aBB5F*k83MaH"c)Q"XFi89[f"`IK9JH&f2YJJ%G[DI58304EBSBUVX'm!h
58hL9CV$A0f3JHcf8i3+Sk#LfKN5U!0ZaJ-B6,i#r&,5lTipI)iV!L(V-J,b*8@Z
(Jiqi(ZY2aYK@Nc"!%Si"j',B`Ulh4X*VXjpA3!+2G+fZK6Se(dYp5@DAfAM'f#B
TCSBU8Ir*1i[lf,6AcPC6Nb9@$d&696NR'qe!!@&YYDND0NFDYp1VMRbCq6Yc!K8
+V0,i+LmVbGd9KMGA8(VF)$DYImS3k@IXdY8L80&@HpX!kVHX5)i6c@$F%,U3!,#
(felqC`hqqcD-&$-#N!"Zrcq+8m2r@)DU'&31@mR4@&DkSU3H6hE+*4B2A`@df"Q
pp93*Y"%Xli#mI9&RR-N*H#-maJ@Pc324&I16-Y$GYc"r$92kZ#FFRXJ`Qf42Pc#
$Lde&$Y1q2j'iALJc)l+Hee(5[l(pBqBX5`h!%$Z84Qfda!(f0*!!18eaBmHJ-M&
-9edZB-9)J8C)c6TESVVci5IadI!eqhSGl*e&TSpB32pc#$E&CZ2,63[!3mZLc&#
-cZq4-+@Y-,#TbAGMQceGk3XBB1(h,@hqX6UF2EY(894FpJ@Bp$JlG5dJEh9HL4k
!6l5Zm1"DFq(Nrrm6#jC'Z$SE9RB6@2)hiEh#!k$E@-+l59,#L8Dii50VDa!lTZe
9-rI%,!Ab&2$S3(@G(5!SHQ*%HV$2f@I2PA5iDBVd*Nk14@aaJY)Z5b-Ha8[m#JC
T3JYR*dd$fG[Uq$)P!F*0p-&j4PD"Kr4Ti$9V*f@f2L+NY6UFIZh2Gl8J@%a%B0h
6$VL4DqV9ipVma2&!3GU@Y*!!-((C!8Fd1lhaZQZS`Xfdl&`rAlTY%Em(6TcU)SK
QQ(0L`*BPHr2pKV48+)'h,rQLJI5h5dTa!e$ZV*F-RZ4VKA#N#qpB"pjhPk6"Di!
E4J8J'f,kN!"b1*TfQ$4Z"m@YH6[X)Q,J5H#*DA!1NQ,&m#rl8jQ5VKXh$#+XdD6
P$9-Ih(GJ&mmFT1-h2QP,96d#J"P(36Hc(@CmF`IKlNNaqd2CTfC5T1'P0e38T,Y
b8Le0TmGPUJXqHQajRJJ6GD"F,+2`K59@GdTlIe1bG"PLNlJ[k+q4G2,j!Y!j26X
`*`,rGRib-$RSBebrkL8`LFm3%T-i#,&4Ydp*fe-,f@"HQ`!8%#[GCk![US([L)X
[[RL"("FK6a0%Lh@AT6&JXKLl-RHRF[#HM(#+j0X'#!jhRZbK1"%XJ6F0#-Li"cN
"Vc&crh5KGkX1V+`pjmXMN!$de&8Hp+lm5RYX&JPI2HS58k6YI)U9REZ1S[3`"k+
HbjG,%mGPkhJ4p[9hKfp`LhJeTYUkaYF0GLQQI0U1!XdkDi,mQRZT(N'K-GPiFmY
*@d+HIaLII9lKQU)elHCD66&"cJ5jXaZGKhK)%+bj(39@,hrel6"!U*6P#`pI@EM
mm@[4b#F1PhIF63D!V'djVLD+%FG"TYU2(%ARk39-b4LLhAHaLNMhF[+)&*GNFa2
h,SL3!!UI#RLNBXSP3`55`hd$%13D5NN%f*bKI@8[b--1E"UXU4Rh(iS1V&%#hb!
C!qJH0F4[`J0PF6QJK*XSBGmpU)c*5fXJAe3F2i2S,8&BjPJ@KXqL"&!(k+Fp"#&
(lR10c3XBDVN%+Ne@B)!'IR#me[L-6f$DVBEQP)D19(mT%[NjUHp,*I(Mbk31YP2
M(3`[431pT5Ib&)9dHSahFBp`cq0A(LUXVAa+3K-,&",LqAYGV3,68&MHejY#)E&
3fBmRL4%(k)m&r$&d+eAhMlU3!(`f#UP`r@'524crP(fG&q0k#fEqZq+B@%T+q5e
ri'MU9%c,9&IdA4a,1PP6RFZK+(URaANkAUFAJlpS2N3GkL(Q*`08T490pa`5Gij
ke5X#3(TT*P3)#rP,"1Jk5p[j9,jDHXXE($%('jp!P6#+Ta&Ic$f+!JmQB9!+)S-
h6pFr@Q!e&G@lm5`#SGr[G%q$eiSRe%5U-Y8jh`R&5i3@h!IFUKEZHB[8a6$)Le6
P!ZrF53SJY@4heB@Rr2hm(%Ulfe4'"31Tk(*(rQhJHB6b[r`[VBN+0f,m(mp@Nr&
Y$@XYfF"k%''Pih$Ic4$5KdhVbiCQ-Zd@2LfBE$QipJ)dE16IfhSKCk9D%+j8-L)
L$3#Qj'!PR$m-E4-RLF'cb'[A2)rhFCjk@PMK6l4[8a,VLrX&%$9V1UZQAe9#m-S
3(m(lFcpBH1VI"4!T@"`mdAGIa!(N#K3NIGZd`VTjdREd5QidfMA038d+ZlaM$EZ
`C3QGElGh$aXZcl2[N8pBeUb53kR)!CLLC'F(aYMXKT4md6aj10(pHR!Ji5fEHN2
1*NC(H&0-$b$KcE6*N!#0)519-R(@PC&`4&0!4!Ei*X8L!M6+lS(&P'h`NFpiP%h
S"@#85VYi2C!!@IYBTkci)Gc-,IQX!lk@@TiZmC)(,"),3&UF&eJraHAR2DMYdM%
,GejV`MfGba!X+QCQeCpBU2NRh8"ecqe!*[SJ%-&FCZd*&f[28F[#HP[AX0p6KH5
C@@D#FeLA69j13)VXlF*#cHLTPN8AkCLV5ZA"SH#V'-a0`lNr0hh,Nl1ij(lD'#l
,`fKZ3!*0bH3I"kGqcPVN90-BP+DQT@6h5H3@9i&1qD%NM+f59'Bh1!5Ahll#9i%
mT2M#k"A[0Yhq4UT8D'6#,%$,6TA*I1E)V"[klB(Kl822#!*`"%lhDf[R9JK2EH3
hJq!T`!KfZYPj"Zm,CT[,fkf*&PGAe$ipCVNUp,BB1E+%eTl(06cUGU#K+2`mNF,
m+QTRfiFVlXYc`VR"9D,YpBKf-HG`9*)*PbjfR0Hi!h5Fj5H$`TJdc,QRh""p6k"
fjIPPq44dm(J8iV(EG4FHA8'1)BKiXHhHV1,AHY3PjDY``K*Q3khH#-@(RG6[10D
pJV9N0lPqfk*3!l002b%&k#Qj&Cp9l,pFF"2[RIYAd%Hd`$UaG!r`r&3FAPT-8E-
8hUpI5aY8#X'82,!Ah!95K3!89$E%+U,NMY0QUYY@!0T)U424j$%V1iQN2'[@[X&
bJIN0$e"STcU)Ualrl6`"T'FdJmBG+S))C)&B9jX#i9MEDcj(mZ!hB'3,pVZkFmB
jB+JDN64Pk3XHiLVlB'S+9N9fJ`Lb)llBP&""9l0f[`@P4$EY`lkb*X5MeCPSFEH
Mma,+*I'JeCDcrY%aD%iMqmMY+RR*9&,b`q-EL[B$AfJY*252I@XBBC*QYiSbXFh
`%c'Y(Lrb(%PA@X#5MfGd5E`(lCaVH+NKNhIaYq'CRqfBiP`kF&kI+$0,GdYE$f@
`*`Tp54RNHGYpB6`N6ZT*Dk-pG846UrmLQA6#R)5kq2LjiDk+Q&jh`eM!)@0ifAE
l!Dk`q,H@KT0X13M6c@aTCZaKK8G!DeRV`6phJFI8J,+GdeJ#,K@ilIS4J(*Gm43
X,,D"Ah4VL`'Ce2#hRE!k,[qJC%dX'c!$EeV&qUjNSq1iLUTV6(F$E'3`hdc5B2r
)f[j)S$&-d'-a4[Krrj50B)3RlMR0*T,NH,9@aL-j3'#0*kE"L"kmS0Sc0)`)18"
jPC&&X"Lm3!Z!I8@5UNPl&6('mJ8+#G&D`pbl'r2AH1hHb59iG@ZJ#E2IK0[N9KR
kl8B3mXplJrHdP'f4%h$e6N(Q%+E%14KQ`3A4rBG+0)a`Fa!5#$+D!kX+G1SD0Uq
1,m%#![S!&dL9j0[r,deM52,SRd4%ASrG4Cj4(10)GAIMI(FADUR,i-i&Vc9`em)
3-'kI@-M,qCa#BVJc''2EMkqr#-&5q9!1di()%qDN9&K3aE$%aF"VbGKZ,rVVfd)
i(Y1LrrYI0DC*I3dZCKa(#&Cc(4h*U-R-VEMN(+*,$&F6&@@C#hS(H[X"J"),VKl
*pa3m4YhRCS92h62UHhTA54AI6*6ZqC%1"jS225Ap(J@lBq*Hb@IA1PZjiGFie'D
SV6&jG!Eh'D`F6K-mCUNEQdMEZHSQ8qCVYf[AXP*,Gjpp3"DURZ0#KmrlFBkkVSI
Hi3#i5MN"!A+bmAiJB!Y)U*Xe2TTZPY%Tq&P9M[QSpKj",-)FTiDCfiB3X)cSmJL
(Vi'Gj!N#c-5CbAdc%5*fYc"4f-04kmJ`0+MUDmddX+p#ijiJQ(5B+*8Q#dNI%)8
"elY(p951ZP%aLqfG9J(5DjRU&SLLembb(rf)#FS`Aq%"c(LIjjmeH+X8LXqe1mp
iK(I-jZS+H('*d$`c0'BC!(YXT4-kFY+0HBm9RlT9cBC6FD(I'Y[PCB$$8Qk'&k#
r'*6f6h+HbjBXGp9Kd'Y6hl4("fq(RHKD4aLq))R,"i58EhaTpNej8p83d%5*BN'
d*[rF3MA1[aE4m8RFE+"2CJAT`%kMPhIQBm+8#DXX#*(rSY[Xe`-kqdKYRf2hFh#
&1FfH-+k*'2KLdX'KU(JImY*GZq1NDQjS038"liYZ3PrF1QI"NQfi8h3$)pX0&6I
i1)X`CCl4F1**0'j8iYaJD1jrJiUUX6"[NR%QB$,Fm1DE8F)cBmNdh1Md1J@4$aE
4!X[J)1ZQ#UI#F5@-ZCX3NHUaDa3(fe8#f@#1akh0-4bZ#*F(&'EpZI-)N62!Rr-
RVBG!PA5(l`U85KY[U#jQCT!!*jXPflFJ0`09!b0JEqIM'lq*""r+lY,EhFc$5#*
66@bSpZYVDiRNV31c`%pV&2BT65++KChJ$%&kkEc#LMaYGKH9AGZ5[h9PG,Bh&A$
b6+,`3#BdTM#hDppccrB,(#Ci5M@[%HfMMUGV**6f)kQ4QGZ!rpk`EjM,3-0SJIh
4+h9(583X#l&U(+Y$F(c&98rRIQ!a"8h6IkAKJrRp84`FVIp$L%!a#qe8'RND*Z5
3!)Q(DLY'Y$rDVUY#Z0LM+hj#DZbp2QVq,K'H'4(XlZZ&TR#ke9dDGc!e,iB)D``
LUTAk4Fm!b2TI#c$IY2-p8-Mf0TI,@$$()1i)R"CIJPZP6(1`dFTp*3RUEBYSIR#
lBcEa-"+QAe&Xfm2kVlJQ%!10hf[h1-!!p@$0%m6&-!)D%kQ[N!!"qA-#k2P[!fN
X4mPbql-i!iNbl*d2+8R4@'YJN!"dd9KQFd#SlmJ,!h1I`&Ki0"c5B"`X89dhmQ#
Y[dQ3!0BE80)e"RbGaE!b%3(%Qim`NaKcpp"c(mi&q[hJBKTG8&SY%E*fE'daN!$
B3Fa&3D)i`QqXa[mel-i0iQ8f#mp`S@39E"`T5AmRPMB,6Ymr1)46K&8QrIiaD'J
RqAF,kpqUTc%ILG*a-DT,KbBX!HdrjD!R-61eY1RJ+cf&PF@0LVF2q$fEkY%1#h#
H#)I2ZCAqkZRLYdqKSli3Ell*S'#&LVVcl'&+(3f&rAJbERNp$,T*&J['iKj"hmT
),3H6&0Nk198ZXD*+86SSk'INHF1%@r)BSB8KJi3kZ#4T"e%ckddfUSZ9%@@e'Y9
&KPmAk$eaU$-iB&MjF*KYhHF8Vkp3[(!8$PU%qfT5Kci[rXT)VE6l'k&K,VY-lad
(dVa1C$I)lVXIZKdAdFa0F&[hPkmilG)3p2Tf(0B$,*kiMP(cc-j(HFLBr%l*M&i
4[DjV,[%d,XA81-F*qVK14J%jl3EpVq*"T%R#@2'S4bbHfmXM"AD0jQBphhD!IR9
feZ`,XRDp`Tfc&4!6r16C#cRNmfIJmYdjEq)VUG%$l4BPGmlX"cmA)[6R-m*8Zhp
#`JF5MMSJK`fS5HU8R@S1qT1jqB)%"3*U$V&G*Ej#JXk$C(1ai*Z$S`K'9AZIA$a
Y3#5BkrQkbF,"UfQR$Q"m3#G1bI,Vr4Ti@%DMKN"GE,"6k)pJB8BQ`iI1#%K#Zei
#XBB,mR8,+EP)Lbb)dCR'G&3XkX2j0ZamFmYYD`m4h(BTZmK,hcLl1,Qa`3h26Ad
A,1DP'&BJ2m`eGTF%)8XKGiTT6&`lLSHmY"$JHQ--3$eeqM-P*YqkmcdKb-*@b,i
F$KXZZbG@5i[%Rf!K34!4B23d*r[,`DN,,(JS)J9hXKLX,("@8c0[3!!6HNN"a3m
kf@[Jb!rBQRT3AAJ,0QfIN[3,@baKfb)j`0hb[eZ0ca2UFTfZmP&B*Zid,M8bV0J
UCM'[3k$3RC'cf([6aFB4$(TlU,[D0`EY3)!ZQmLDH6'K#!J3'FFNrPB'pKbHA-f
S89iIPaj1LANTFSA)jmi8Jdh3KK&1E8'bfICh1K!KdNiSC!J501L-PakB%hFZA'T
*$k0Zb"U*LTK9#3,3TbTDZI&SM0)(-TUeVG+lV0SR(,YKk6d6VTS`b(blm*Z3!(`
%d6A2eFa(#Uh80FY"Lh0"mcdAq%qRiS2-S(edQl`+T`933Fj+KjkLGHhA'Sd6RDC
[B8r+-A$B!l[fVmeBceHZeU)JqpCYH!EdI(baXQAXq#lp"DV-NBVfP$Ar4fRG*bU
C@I+(fG"f#eb"[YQe%)'D-b",K1',43McrABaG$N4E%dM%'9VPEk8(emkBp[C!eJ
laKFd#`L[0CmB4dN1e4FcYh06"iidVYrd&H9hPBG0M"0'3J[#LIBjT"G*6!IJd88
Pfa@()%GIrAU3!)Qbb#TX)$VU1Q1*$9!H*#MKe8f%0CRa3`r*NqmbP6+0LVBj"(2
d&IMKR4#4mFT1k#E5(T1@TJd,,cc20JDh%`CfI'Dq03m!V+R80J`k%MQBZhD%qhN
*M)F"Ek*3DmlLTN(C)i3299X5i,9Pe9#4raKITbjJ%M9N+RI)eIpmU5H@0ep)DYd
qKc+#h#,-14-Smdl0,2r$U+!Rp#Xe,+LY"8l%i&kq,+!dQb`[fGUh"IXVFmb1bpN
8qXAXX0a'+k)([NR+9MS`8aq8!"b5Y`ATrpE'Qf!M!08#+*qmK(Idj[jh0@4T#p*
6E6EbGl,!LF*TG!p+hEXp16TFYM!4!5Zjj[iQrZAQ`"2&Z44TL)YB'XNFAdp$[b%
i2r`2E-q1X3GF65p#+*3AZUH#'+JK1bjIHRNcP40a@Y2dk9JB3Z0UmS%LkDKUVbP
pMhPcE5ZM8eJd[rZ43#)Y("%Pp`9U8bh#+Kcd8D`&e0N+8AEbD`Hq1*!!k,+B5ch
cX1Z(Bk@ld4i,`(8Ed%fTKUFFb%9cAaU,N4J+q,qfH+FDYB9kHClb'PfQT!PUkm#
rQdN8cJ5XEf63%%"3VqpHQqA3M$2FG+aS5RCdHNrj)3Y6&DGaZjVeci1K"[PZ&R&
iV-VjP15Z5*C,E*d`)Dh1B502GG`phjhDT4)#0[Y!0i-LqG@Y+$N3L)TjN9C61I`
IRF*,cAI18d5j(+Yrl+UahbMk&hV0"f$,@L4f&`I!H)R,*V'$Fia#@LLRB)(EUQf
DB-)3C9($L8c'm3J!Km*YJq9[-A(D@pbeF+`XR$P&&lLhi&%J'j*KK#,#S#"i!i+
Ljh!(ACRiQ[RrBE5[1JcPR83&q5VdJNCFQ&GQVVl-m5#Y[!#9cdXSb6TPK8Dm0Ar
j8`rA+bdAf(iKrZ`j6k3eSd4pI%bf1[mkM4J8-*8)3%!18+fbSmE8MEG-LISNQ*8
iMBUBh&,ZpqS1Ck5HGdchaFLde0Xj(DKZk5qcZp5'TJe5Ml-S0fK"k2*58$L93a!
I0Qm#dTUBc&a6N8L60PXmMMcDMP"cP,3V%9,&X!N$%RfCM#r4aVLQjj`i15#`cKr
#q*`9)hlSQpLLKIZi$aEQ"b+Rb[rL0$CaX2HP3"!e#3qUFi%&XkSF2*Pre!ZYZjE
%CpZ9c$QR[4Q(12RSFYLN'Tfae1R[Ym,KC5f!5qD&dqJT6MV,b"1&'lb12I)epMH
,k"pNmF-d6XQ9eK25B2*p#X&%&*2Sb[%cANjGM)Ha@CBjf#8PDZ0E&fMpY##-K4b
3!,LL%GR9McFPThekS(4l@JBCJdaUJ8dF[1[apR6)#b80B%rRZh`6k%k2#iN*a2G
9qR2C8ePe#(6S(!DJl62G,3ql6eYJ)Le4GrRjljC%LNYrfhG!J"2ea1f$@FKbVYp
amX&clb%19)4Q%`ME'"GhVkXZG"&b,JXQ4FHG"FR$f`KGGK0Z)VI#kIi#9TCe@EY
8*LadG+i&$H!I`@dB%*!!qb@jPcK*Lf$Xp1fqqZP`2CqNkZ'V5jZ3!"Qdl8rr(lX
EVjcdEabq*RdZ+hG#@CaN4)[P&lP!Z4l@RmaQ#3ZY$GFJl4[#64&DrD[*hqh9p`9
Pab$QNP)mj3CRf21cM2@Q)33K$3cmdFU5@P(!lVAQe-#b4BTrqIRha3eL4bS%`1A
-bY6@jB-Ra#m4(fG5jYJk0CS'+C[QjBM)Sp4R9jrH2[Y`D6+m`eBKBa9iSX@LHXY
fKdC2K"NI@'CN#mYJB1S2H+GD)$1S"phQTr(,LJfKI8@()E5p3`qY2!ICYjJCBQ#
HYB-kGe(2FB2CJE*bS5HHPqYHRUqaBGB9L5T8BVN6T[`r&YYVIqZpLr&ffYXqKb#
0hf-Z1-LPBP!bR(0(p#2*LZCQjU-+$VD5SUH!VH'-2@9ebYZj-hU"fKq%P`YVL$j
9fcep0!UMBJZ2MjCXrPmNjejFe'R[pPc0&hZ&ERXH+5DLa`MYDd12k16YIRSS+%(
mKAT@%8cCV,l)j-)6$pPB8pdNm5A&pbJ[JjqXB$k)'rKHi$"&@%Qj)Q#a6@BFT&M
E&A()Kp"-[!QYG(BJQ5M$pST@)F%!-(ake6#Nj`GLiC!!B5rk#k)-bUkq--44ATe
"0NELT53JmX3jDfIT$p,[XJP5MqLkL"`[K1CprI-46Dc`l'epZcN!VAai$#i%j(S
i,$aLPRi95cGi#$akZC!!CUCI5(Z3!*BPIcQCD5mXr[3VY"6)B,5C1PE%"R+GEI&
p9'AZ"BJ,31)4f,dJ*JJ)aY#V,eNPHp1V5-[-H6AIkP(qTXKd)S@(B2$ZBC`bq4G
%%lA",-Xd1H[SGkFl1N*0EiNPNm,IF"4f'XhII+hp`$dk`4-KL"cCmBi*aGdaYAc
8k+,*Krf*-5Y,&8al9eaFKm9-VLLFGQ9&l*JE5qV#4c&&&"$[Ph!HL0F-C&f2k[d
1ZeCk'phHXGq,TpGB!FYJ@HD-+!M!#R+NCLCQ2@,`,MT,3PBSb4VIM`%Aki0T,%M
kNp)SiF4#"mc#ViK1qRKG@#$KDrE`"IZTTLB$d4#Tk%QTAa9EiD+&dIiLeQVP-)S
#$2EU+$S(X%M'bME,kQNd"eXaSb"2J8!T!YXUe`e)TSjKZ!UF+Il"5iiH*JfdQKC
qr!MN%DpjV2dfNV"abK[%*K(5![HG55Q4%hN@A1`p5X'410`I"dd#*T5AAZ4NRE-
,N!"!+IkB15'Y2ch4N42p1Z(m*Yp`MQ983E6C3+MYRJi`bAakVHfHcmPqGK''ARB
jq#*q`PEreQAEj)f+(p&e[QZY991(S9J4l8PE@2IYq+h826aYLASXbq!QqG%ii`T
Q`X4TQ-MERUEa"m+BDIGh1",V31Z)Uq+9[pP`06FkjUe44,klMqTq0QeXEjSj2eS
U@J)*d#(C$fI&mbC!25m39UPii`rS!Y5KmqpB[@1PqTS#4ja8EfEZCfTT9&**VE9
DYR#cLAeHE)$b'eVkbE-i+F%"i68YerULF4HJ*V(i!YUr"AQ@R[UUrbbd$Xf*NPB
1TdU%brj28qaHkQZR$rGF0Q+fT(3KH68+,%ZGSh9ZBEN,m8"q*cf9T3)(EDRhfDH
ZPa,&Gf4T`Fd''i(TM[m'HD1,Z6cCmK03iJNE%X3NaD*#NkN)0N3i48li+G68"AD
3!%'+d,jh4iQ*RG!Yc&8j2&[CNLlJ62EUBBZ#GPU(U-b5G#$2Fa1ll)iaqrV8iX@
UMQUek)9k%,m"d#'*G$f(K$F68A1'b"p&P4-ZYQc@J)Y&P2E3)!@2mUd"N43U,rb
()AZ-'$MG&%S!b(C2G!l%iT%LYjCdbTMEC`Be0*EbZC+p3*52V*ZXI``i&+HXbUb
I3E@N3#bc)2mF39peqi$Z$Z*3Qb+eV#D+-XCL6L!K`*ee'a99VDT6$bceRkUmq(%
L)HkE9a1`d(#PN`lf6I#I40[%X0P3Z&BG4CSc`VHBX0qZ'`-a!04XHEQ`Kd2+0*Q
!eh$X@)2Ki&T066f+A04)YHAEARq[fZGClXXe4$6+l0h#[$VP`Z[2[qr#6(L9'fE
CdYrVeAR[`b@e1R5*'T2bMcTE8Q1pPKhIZ@ha3f3$Gh9+`BEJ1G$dG#Z"6EZrMGS
,-D)25-r#EebML'4BHKXbG&4cN!"l([r24qfX'e"!UB&Cj"la0-K'pKI@ceRX[U#
(jTTK-S@qYlI9XjC[j*'JSKkDK%P+UqbfC"dSlZma)AHRb4r`#1ak,q190cMZ[Cb
PH`EfG$hT@!)+(%`LrQLP,`L0+ljF2IZaI!MTi8@UdEf4$b!+&&VVQ2r$V,r%4N4
)(aE,CX3d*H6*N`&(q-'jbpLZ0CIUaBNkD139rp$GI(#fI6+mc1MbM,[-+rMfeTj
I-6C2U"&pL(@ZH-+2qRfPlbb6L#J%Fe%#V9JZI#5&M!J,Ee1GVI8dH$[cGdZqSAH
Y[5bG-hremJQjPF8N@&&mDpUCaDc*rT*f!j!!AQCm6%d-F%kqDpD$C-eJbUM[@%*
[Prqp$N#FM8U&!JKmT(j1JZ!#6kM)P8,@V"MX[B3#e"rr+[bT'Vc8iYVKa1pFj0e
(&`h4B,mS6NdQ!%GdG(d6['Geb,"bYic4dP'&eE"#T8JJVaKKU&QAMm8N8c`q"f@
@3FBlL6qeCUdI%V3J4##&(qqQ!RI,,V4$clN@Z%(G'L*)dVN$-CJkR1$@4TepPUI
LHEraFNX$6G1A6l3*bq&mMMkC[!T8pc[#-9EZj9M+TF6B)08rG[C`[%&4B'M,XAJ
LkZ[+mMB5&e+`#Lf-#c*--*N!-*p8%[D"ZQ5!Nh$%ZZ59N6T8cYe3MU#Y0LaBi)b
(4hIGIaf'X6ejl39HFIHl!`mCaKBB1JZ+HUCUQ8)kG&*6EfNPCA1cpPlE561dAh"
ZNMhGR6q$rKZk%!XFMT55GdcfV##hZ64UH4b#IY["$SXX&"4Chr-"9@1I4c3IAEd
kF"Th@+bINVh%UE'eH6*E%*e0F[**0"#3!)jfS[XSJkc%lYF!&-`2`YA&K9G)f94
Se!S`$C!!AQ-E5i[Z!5U,kQk1Bh2Z`$Jc(iH$PHKqE3)e*U236m`Q5Q[%#FYkdMX
[+"Vb2C')RBlf3%Ji))-4PKZM[R9-rVdM@F("$'CH,')Y@(apTF%+*L#QmE``$aB
m!4$YGDIXm44)QYii((lqdN6c28&Y(+DP@&kqlVX*qr6D6-TmmHfT08jD'5BT#0`
i%pPJA'bH#k+1IKGX8f!-*h6)LHEXYl6c*lm8jb9l6Y'#6X#&GQ1#3rL&K6ZibR6
D!T4Iq@R0*5$Sm"K9GXZlj0cLfp#brNd4%XqEl8(41FUI5jfQ-cRB,a%("ELP[@E
1GL-c[&C+9(&Rd,8B($N,e+(blhB+91ee9*V0MkG+,1HJ"2J&0FTT4fhDaRUrq38
hc0R5`V"PmhG9!)pYS+pR-85rS"0590!B#%pfTGRa#LR)3iU0eGYhCBA98Y5S-24
GCG6'cEkSE*Fa6Y1[+c"S@PDc`!HTGF!hV#(1B@pIG5-2Y0&&*AYRl4RY-DDD*cJ
B3LK)h"$GmU1*6l&"D5DdHFTMX$BV&Jmb*-,CTDTPdA"i%FM`hU(bJpiaVX(q"hp
hMZ"Q8AXqDf39P4"J*f-T-pCijDh+34G1V,BG#&01,YR2!,R!bEh"+A!4rbldINh
r)H"brKX`V2Aa8)c,V`1&l%5CRIZU0,0D!F[8CBYm6'(h4M4ed%mJQDPmApeI@SV
!chF[m4$GaD-(CT,d9NR0##!2Q&Cc2raV(Xd,a,&1P+Zlq+[dZlYH)N0[(&0!dC8
4XSl")U"@I#)Q4YV&ck)E6*r*dcH5mSVqDe0C1#"meDKm`"jTeUh@F`Y![@D+61J
3!dr,LTI2"mJKbIQj*kJB$0@(Q5EEPPbi@beMDN*+bc58D+!8&+`iPKaJNUBP11d
Al!Td9HVC5Ra")PM,4dY2HL@0%dPfBbeN06&eB'CMp"1S%m+hrPRU6-[Mb2'"1DN
`5d-4)+ami`(S&Vqd3LV%TGcm&"`E3*M2D3rX*TpU3i9+l#pkd1-'k6V#de#Bi2,
#!iqQjSF`UY#ff0J6T4#jq11l`pV,bXI0iPl6`UM5!TBDYaMpL[mKlN,Q-39'jPl
5,E4(05m8Sm8iqDl08Ci#iZMCL,[SVA4bKU0*HZXh[XUTT,f3!"aaQKM&16T#IXN
06"*BeA#@TcHU"0)UfAH,N!![Gi*p-N(a+D6iBS5qfbC4k6SMXXM)!p08d-P3FeL
0+ZPHTqK8DcKMpq5pp!9+1dTV50)r[hI`1Y*hB1,cQ1$p#fdp2TlfZ$2Sd0h!,8A
0,R44`bA%#G)fJd5G84,ZaB1je&RrJb)*3#(S"R`b$2*+%-XEV"DVmN3E)Ulj1cH
G5%IKaFppPX1KJc60mAVHMqHTH,a%[IB`S+N&h@5"Z2`[)CmIcm&-M6$i'cYaFlL
KVL)53T)YNMS5%kT%%)MYQUA-rG[hQIrmc8UQTk*-83(bkV(hrRkU'm'9CZLS*J2
k8l4kSN''SPKi!-'dcUK6!m@Y%B5T%m+KZ`%4DEYc,6(5390QMM"'GkSUhD+QkBB
"HTFZ"pRK$6N%C6*k)$Gdp5+Y$4q[ZcAQl-c[*e$&'Df-%kfCcl`"epQV#JFYq$U
HNmBdaek(5D2`%![Sf+*RmREjAXjH68q@epH`6K!JI4cJiY+Y6J&G'`p8TNSKYQA
bpcrcfqE$M3Ia+A+AZNRF9#*b+AN-HGfYE+6S1Cr(qa@F[E,jBTCd4HEd[r,"R`X
G,Cd(85ihI+iS3NGmUkR-MMf3!'XmR5"c"IS"rhY)LE#j,R3[M1p[e)U@8hFe4RA
G51lKjDMRc!-KYI-USkIJ)KVS)3C2UUMj)R'TGMT0CD3mqlE-QVP*ie0dbqeQTe-
$H1SQFX*0F#(N$YCiPR5QLG!NV4"bDb*I18k'LY!$UTMEJ5PRRfP`JeCf-@Y9#f`
FbUVKF-@&(V96$Kqpcih&-CU+Ljp8CS6*Aa2Ya6833,+5B&A*rbjB5EP-SN[C`!q
Qfl3rNAVZH*HlAB5aj3haFC!!,b'-#5@XbZ0K,'FaG[Q[X,ThRNLQRJDlh4AE36i
Yi&S@@Zp%2`[e!bZPQ%CF6q3e"C(eKI)#)#a-*!K(VqBK'(f,IY"mQPUmblShA'I
N3NYN0LSe[G(e9F8[ANM@FaKc3P6GFY*IM0f8Kl3"2%KjZ")eN!!L#e*C,("fAe-
,Uj!!&6hZCNc&SaUEMq$X&d&VB4pV6@0981j-[Hf@3YC-EASk6@ZYS%$ic!i#H[j
69DE@kH`3C5TC!ANELNC@ENEP4VPHDJ%CZJ0%Bb@DeD,p3a(r5l6M*e-ZK"b"-&S
M%Ih"E-af8B%0TNj8h@ckQa%QTRD@ZaZN@Ir29(1p&i'%GP+LY46J66%3HC9-AL'
*6`Zprep6145Kb4&&jJ05Y"$iAZehaF'BjF)QlA`&@VcchQM-'5HEk19YmCb3!,G
M&8T(081&LD$*$+8M8NJi*Y*CNdd#N@d+'Id`fmBkHQG2-!S)Y1A#-L'83X8VC2(
3E@J@eGh0#hFhe@$d#hGe1#XGZcV%G#pdH)@riHh,j!-[NL$4BV2"e,5SbFDUdCP
MAf*DAR2elR+bENTd$JiS$VZYYVmXC&[X'bhmCi(-Vp)2F`8LlPR+qlmr&8mC'@'
T@'l1kUQJb-(h`LX(Je(`1NA@'['2%ETb&'m"4MF4,GT!R[bQ$(Y2e)qN0`1MKrT
2FYK&%[Xc1@YY[Bi4(B"K6#K4TX1`!-MGGAH'E8((1MKX0p0+,fqQG+j5QjJ6TVe
b&Si"D$HEQYK5QQp1Mf63FLC6MShZQHH5,G*JqHmhY191,T9A&(+`Jij+T[q!%4f
!%P@A36bKUlX3QCDDe0k2iGJjHfc6$6MrJ$QAJ+mRb0rBfRZCCB2L%HCCD%4f&TR
YZTN@(33'qFZKZUT`%F'!)J`-V&YJiVfqGJ[B+IJV-I[Y*4k8TA6NZpG&dkk,kJ6
Uh9FXF""%U!j[Ih4&f0(5ZNeRaFQQLl%hd)XMp%$YFTPKQKB%MhIB6TUe6Y*&Jp(
DZY5(%,LCX(ZVl%fMDqZS4V34*68m*hHN9K!30@d69TC@PTM-JfCD[32T*KMSTNX
,mYF&%'ZcDK$B&r2HSf'ebLZNc&Idf!a9-JABCKPe@3S!CSAXqm,j@Q%N0J4!Vbc
HZ1GIi6M`lJ"33+D6)Z'"9TAf#h[,(+FTjp&9IIVE`aLBPZBmh@DM*V&QJ9@rXUi
j`PiaXVm51meNXGp`ih$TLCdcZ,HSi(([SL*K6@VXKCqj,!8D93*8I$Shfqmam5b
YITV+DBPJMI*BNeTXHL6e2"[Mf)m4%'GB#hG[Led[4LVmY`c'Rep%,@Kq#!6LP4e
fDj-H&b3frlEcZME*&)SM+FefLGTl0iB$[R4FD6+*"A*[aiF&YPbpaj'IfPqCq9e
,Mc+3!--Q0!bf(+2(PcS),8pieBqrTME$U2DJbD#EjPDd$hRm$X`@#QkQ6h+Q8QK
3br,AA4#5r-,mAN)2KL2B6F+aYdQQPfJpqr)L`jN%GhdEdQe9`VVSLK%Y`@8f`cp
mZJ!Zq(E#A99R$dEpG,C[cX+YT*!!"2bF'[99,9!GlAi2l-0YP6,lZh#CPVSYE[R
b5YR6UGH4QU"+U8H!$LBL9Bh&F[Re*caj8KH4%YG@9[a3c-k!$S8pCih4J+E(RPj
F%MkR3(%4mD0GPfZM,I)J&0Al#m1'A(i!p%!bM$6#Bb%,YQLpk80FhmI#0*-f!FF
8iKT5M-A#9kDG6d!1d6j'F3Np`ZA%KYJU#THl#2#``X+2rEUf4N&i-Z`#0jZk2iK
KBPiT`PHQR6*!EC@kpj-j0S#Qr9qPkq*'`Q#NAF,#%jIZAQ@Vr+C3hQdef$4F2I@
N8"aJFiQCDa,M)!mF4pKrh93Qpp&'ZYSrq1I#`K2p*i*'i+Tl%`Y1K`%8iAP5d+*
B#1M1XeMLicF%9!D"RrQkSSHf'1GV0"kR#fYciaF2%SQV$DbNTQRmi!!LVLkP`Mq
2HM$#A,fkBPEI%-,(I$12ea6ZXYDUl8!3"pKQk51QPh,Cjqfp0aZF2XP&YRI#3$h
-))!19Zc*e$N5p(l4`rGA01DUh%$@&eKVFq2)$a,b8#Hh0GJJZU5K*(kJ`HqR`K$
SM4KB,CFSL*6&l96eIN[mE@2(F`M`6m,#q9AEUfe1Pm)2@)qQPdE0kbkX-6555eM
#k2h-pNE!r+Gcbh1i`b@a+KkXqM555eM#k2hT)dE"5AYG$GSd0dD'l3iHQeJdk%X
Y`NEprEE5mMFbp8V51C!!5jME$-0B01LH9F*'rEV)h!&10pVe&))d8Z"C`NAMI,K
!9Ybfm[,&i`+3!$HNPeJfJmZL"eFl%m,#@k3cI2r$-i[4'0LNPeJf(#DMrF*APK-
K!1KjYC2!4jGh@!#TCI"F2SU$Deb3!$KN*Xc3el@ZUV[#VY,DedC)6Ym"$6M4,%V
XG(pChl"jE`Fe-rR*ceQa'#"(F&`pZ9mJa-D"C($2caH8&4$"[B@19@E9MB*mZG[
h@!I!F'52B6"-K0#2FrebK@Bi)5`lFRFI'RXZ@mdDliAL+!UCZ$PP[(J$`R![i5)
h5Ti(S380Mp%aB4%,jK!JYFHleL!6"Cb)TYQ-*qK*fD5`MdclE92`ef(5$SIK[3#
cNIJ@STd!rbLFCTqMMXVMU"4T-*S&,6ZfAC9m0rBUR!'CIYqr8[IMGbSmA"'r#cV
30*Ji3peh!I,h5(H[PNQlhhHDe$UEChchGmjDF3)%cCZPHC!!dF+*bCq((-*)Ql$
p3Xp&!PemEM'YN[a[lIYpb6)kZ#U'%P),Y@UDqTi$qPdXH0U*iLP`#FI4Y*r45a-
V!XhSmdHj,ajE2kHR'"&eb"M%Rj0B9$E,S-fY(CQG)6p-AURRQdXjbrf+P)NEr`Z
b4'YXdCl,1hmN$UhQIBC5Y@$`0",fH%H-AJlE',5r#bD&J*G`kci5Kl$DTA%B1+G
G%DehjB[+a46+KI8lAL!*A1TCa3Phc83UXAhY#`H&dpkSCp+Ar*,3NV9,'HYbJ%X
i39a9$XKSImS,V9JQrGVj3+Y!eJDN+J(RNbcY)GPR`Lje!GHdQ$2aEUePB$*p,-)
F%CB)`5Qh%'EMGFF0b,B8V&jiMl@BLJKCY$eMjH9U5BSGa`aicc8(f@K2e(JfL4f
6!SF&kT5)2@ACMkj,6aXQF(I34DLk&dbc(ZmAbVke,&S"LNH1ShFBPNE6Y+d'-UI
YA,AKTVeh9,6cleEZdNPCKDTqp,G2X'ScN5QYF'0c8@!JcR5BAUIYBb"&PX`4)*L
l5a1XqjT2NMBP1#URDdLjM,L"jITFN42cfrr-T[XTlKI`GE@c4*!!hI%m#8ieA#l
V@M)AP"F9@*+B-CPjC[Zl"hH0q["F(fD8B[$(0[EhRGdD65("-b+jfVP1p(9GcGE
Ac@2qY6FTKe"P,lHPb4L+Jh40KAJ"I`U&N!!&fqdPr@FZrGhYDQ2Y(ZSDK6#d+b(
I++L9EK`I+3pG2%aJ1QB!i!FAPE3`MP!VcGIF`T@F(,`r,(kr!Veq!b"kXa49h5Z
%3'k+*3ZflDdJjpAb1XJEqHi@+&3SCV32T(GQ!a2D9',4Z+eek,eQ1DNJ$9X((-,
mce'd34YZ!JAfT`hbk@,)br'-5!e@aIN0658jRQIX`X+ZLr2[&$EYETeP#E[F0pa
k@L1Ii[kh'mQ@(8da8MSZaRjr302%c@!eYd`ETqb5PX6"+AACkCBY@&8'lGR%lEY
2Jr&2hSkV,3BF6DPi1qIYmF'c%1"fd0e!LX%BU@Qe&1'kMkEr0P#-2CekHD*#bIl
r`41B$I*)[hk"M,jSqA"3#0RVGT+@*PLPA!KmGhjXLLJk1%)pJB$lFhN`2%+l-0Z
FQVQGfR3eDBYZbBGf4!kG@D[#DMN-[jaU*#'2`hB"FP2Zp")l9D44kiMXSJ@HN3S
T%5N$iPA3'2J&E[H+P9B9c90[(E2qm"rikJ#r5Vj'iI`N8*!!2Df`$!b[&aC4Vm0
(r'qaA@G&X4SmpAp3'Ch8Ie`%QRm2E-`$V1edGqfjYF[04,XX[2ed9-8afk`pCUc
&F0X&%lN#,l9*f+@Dk"2QHBM"*6Tm-iU6!4jQ,bR'!ql&c`Xf)8pHf8USc"GbYGf
+4YDhhb5G!$SX&@CH)$)TJ3KkBF!pZ$M0HhSTBkVR[pMEC6S[9XZ$'NIPTqkPEJF
GQ(@1PZc"p5``%"'+cFYa,0dj)JmQbkp0)9Z9'&J6i%l()8m8YC)ZDVm)aQJR,2,
3VM3Yh3IJa)$BQj5G3XVbb+9B88aZ!ILYSM2h!%CiMC'rAIZ`Er*Vh*hl%Qj,`FA
,S6Hj,(2KPTHRKc1S0S)*f918[-#LrJr9r46rm4#PGClSTa1YrmXA01h+90c%X[p
!%+9G9ifr,pZ+`QD-UFriTRa`3Sm`Ickp%jMEP5Chl4*c25F&F1df-I#V,*h,"[q
VdZX8@[69bp86chf)i4Y+rF&p926`bP@l',iS2GX4Q&4dQR4%diIRFa6)@!BR@pf
U"[YeRcFp6G[GH8BiAJaV#c!c)#i8-d[S(#Mj'fI-q)@Q[m6`Zb#rUd!GmSQ+Sm`
lGNP#kGll,UNf$FpeP6c1RKbA1e#`LhE0%+46DXNjKhS2ApRV$K92$G`CfSJfK@K
9hl"3PIISlD4cDQB4!I4IBJ5dC+dR1h1&e0`VkP!4$SBE853jST@5)D3C#*9Ji%M
F['QdV1d9dflJ5f-5BePKU`&0k3m&D5"JJh%AT6e+XNR-d4U&qHbIG)[D0$MXD9j
I*4MQ+8S#6UVFfLDKiak8lc8!B"%U"h9CU)+NHF,!BKmJIHj1#L*jHI*)0XdqP,M
98T9"2pXba4)"Yf`NGUS$`45d)S8Sja)Sm5!hjh0h,R#4&0eX"jZ)0a64N6rN`A8
XIA8K6[8LNf[-rJQ-!%HqGa[b5Gd2RpQ85A9V&#raGd$-KF)`!0*D0$TUTKqb$c1
@IK)`@IfKGa(Ebbh8[P+b#EI"C3G!EFN0dhADfp9-F$JFNI36Z!iQ4TicQrpA(qC
VR"3mIk1ITqRZEEMTVc@(%&*qX%(UQ-!8*hU+d9VUa-0%F1%&hkI&ZkGNXXcb)pM
)F-k8Lr1T[PfSa8j6r3*LE-0P5QCQ8dY'#b"m4&VlbbXEEiAl@D8Q2(RGGJSXh2@
"qLp4VHa`jpS2"I4(qE2X,`Ia8b+1F)5A&DcAp+j+"N$kK4ehbIqqNi%ZrS$YBI2
k[Q[Jll$k#*2[ZHN6-5A+fF&MEU$kKPEGKV@eX)I&'a%6,qT6hYq6b9BRV0cmKiI
l5Ee8aAh(cE&p)MfiHDG61KJdQQ!FGUU'Q#R&%C6Fa58*rmrAXiD&AR+"E%0VdMJ
br,pL#G#hQYY6#b1P"GTc14T0b%(GXJrCCE3-T&-e0X9,m0N&@&RACHSrdpd@)%1
KU%#j00!-([5@)Y3P33dBpTm1e,6#ZljICN#A3!pjTe"QTAa@L9K@CK%Am*l8MIm
llXLap2KU'QZX1BHG*KKMVl&rl)pfh9JLk(J+%jLm0X[GeY@PC6%X06lfh61i9)V
jB0NNQ661ILp65p!3BLI,A%9d'p[qPheVDK"p"F6YiG$YQ5IPm&BkmYGE+%QBGj2
lJf-fl$'Hp(E30%#fP[2rDk@`fdl0H+L+39ZB&,EFd0kpDB[3JfpFhASFk@QAZ"G
'ZK&*,QSCTlp6,k85h`H)1AK)NiUFH,Xa3@2EA#5*rbJQCFR34G4+AreZHBN)QM1
Sicp2PLfdSQaFNCr$TLcAGV)fBr-BJ9'p2!N!ZcCB-QV`bC6edbZTKjN%RX+*3D5
f6CfB@+E!!bT"b[A3D6,'b29!cDDH#S!U40'QJmcGT8eL'!2NfN"2*5##2+&3i*!
!@0Z3!"qmrYhN`Kmf,$+TmHQj-XM$a8+3!)E4JIVb""hEU(QF@QaVp`ANZmYqTfM
l6&%$GArDmPTF3*'VLVr('VM$NZPh`LSI&f9k@(eceeDB)3*BGVd&N!#`apmZ8hl
a,q$N&ZlIH3!kYj62G14+R!*QZ(k&YS5YSDER[Bj6[bFcQ2&0Nrq*!6UBrIak[0a
&IBpYjL'LJp'h9Jq5G)UX@45Il)Y0dZqrG-545-q+I4$0c`9f4c(Ya*!!QR%,%k*
VXd)mEmMNN`4dY##9%c(aaNbqj$bRr8p#jhQ#dbkr62Q+bqQq*cUJ1K6j@4@+$Z(
hGNQTL$5@m9LNF)3d#X3$2-Kb$bcEIcQ*5ZE2Gf25#98&6*%9CC+bCaH@Eh2ANB3
X50Cc6M4JAT4KCF3X2B9ck$-2X@TZA,qT*44UidqSQaY*Q5cAEmaFZB+f4&*mVf2
"lpf5!*J"8iB'd$&8LX@U9di!Kb6mKG3IemjGcpGHQ2"9MiL3!#lCK(jc!d6,+Y(
@DBlZZpSjaPYl!3mlE+D&[jU(9CfdaURerffAkqKF$'NUqBl)CUTBfBlU[!)F"4+
V(,1M9FU4&hGRDEHJ'1@pRe%%-hBVPL)1Jjfq"51SN[U)[9T'I&ZdFDh,52F6dUq
IQmJSiY(DGRiiSf%4dPF8LdV`qF&m,dd!q%YY(h14j@j1U+9L64Nm4f5PHZd6XSF
CGbRLL$aDaN0C`MBLL$9,hFN0cEqBJ6C%E2%`30Xf)&VEA,r&Y)@Na6h!-)",LVp
APD`8rlkR6%D0qY%ilHT)3e@bJkrB[ZNcN!#L#c%k%Ekm,Y[KlF@JVa8qF!1elrX
U!fTI9d'N"h[`lMS8SSDCmJ`3aSDrQU9Sp*Mm92rqFQ3F`M*kPQD[%)2U"E"-Pp'
bLS)J&ZMb[j-arp%D!BrY*e9,&Z,*p-U@lFfCm5Xhf'YqcIVcQrPiLUjq(hJ8&'R
!RF-3h*QAa6+(Q8XJj(eCXrNP,2[1ZUH*H[lZGip#rY`NJm[4ME'(!VP3Y#YQfqK
-h'$[q1akcJ9Dh!6qlB(DRFhS(+&JZcXP3(3c!(0cI$)1GYN!eJG6Nq3h)60[-Q!
mFdi%m[XMUfPp$p3reV[-c5MX4bAT0JE,h2c&1+FA@Tql!!TKXGcEFp6ki24mb,m
d+CTceI)5hm"I"0aV"#peVI1*9MkUAfC8H*jYDC!!%Srl%p(Ai!e,6[8$R8UfX2'
hV,f$[+bAQhjh8p6ViCl*2b+0V5G&DJZ9D%0MUMjBjZMGK`@&Mc6*pBRa,Ac,4lE
GTj*JjJ#erci-FaY!mMY!fR1qMNK*,hR)mP%DZpbRAm8KUCF*2Bkp33hl[MIa4Z-
,Y(B(S&NT1*FNeLREG+NrKGH+JFY*cdkNpc(J&$A2Jp-q,LNFThaHCA6Sqq,4NLM
SC4p@bP`Sr3@%Dbrb0+kBJfp25HV1-)'UG2THPN&8(V,)i#YXfA#UC[S5UZJ+dQD
SDRM)SmUL*ZUNd[p!LqaqRaeJI,(E'SFl45EE%8eeqDV329qbAQ*hi13JG$H@icF
LUD$dUAipf0dX&j3YUP5ElL3pmKK$YFRr)Kl8LSDRIUA-hX"Z5&EJJhbPFlMAa0i
FfR$CXASNZ!*G-"1+PJ2cdik$JDD2"S9LU(lKmU#C)$%#'Y[eMjqaq@PcFf4"&UX
`8[DA-f36Y&Nd'-6i"$Ad%bUk'XhCSfY#rpi40hCNS'Z$b%Ud,XKi)Ilr%"&,&#q
ffe,SdSJeMC)A$DkXSp%eN!!KdlH!,eLlj1&BNpcIPAM'hi@4XeER`"[3)ZqS!c&
Q"8N9H'4kRT!!AQrlI19kpK$R`c9e%mfY)0l%'DP@l(!jkKMPqEi!PReZhkFMblZ
8qMBhS!K3"r'lflJ5+F8r0(NcC0+i14`&dk3Td@2#j4S,Rd[a6XJ$'qfdTGhdXDI
)PhP9#YrkZA43Y(IR3$01)EZT`-6TGe$5Ub41HfLq9TQ12($4Vj5db#2f'NXZPN%
)`PA-F%`JpU9q&C@B*PaprAP0-!V3REHehRFXN!"$q(GdAc**L@h`Q+"Vh)Sc4rD
9GbG!CdbhhdIN##bl61J8HS6D*"'UZ$KBURU!4jkma)!pAL6YJU9ZTViLMPMYh2c
9T`1rFBe%#JQNRLfT"Z'S4SDkCIj8-R@kRYN4#$aJ4G"TGHVmU8(N6($j`BaF&3E
bA+`0b5D&L638LU6hE[%,hA`2Y4C@UXk2(TT8rcY+5PK9-i"(i+rXSU[&F1-$b62
pA,SXh&mDeiK((j3B[Ta9GJ)2qbH&GGfEiF96ri0k2$D4-MC6bL%6)',DEihA`#*
VL0fbr6e0rlZR&GPid$P$(keeUDHd4'-i2@#(J83,GK5J+LkIfKL&,1Y86NB('1G
@eE-qej@#JbbNK4d'-9-dJY&dr9kKrQZ%-j0j,40!1LRe3%NHh93`mE"cUqP!0FJ
`)a!%Jl39-(GJcRl`UT0B8``3"QhSKq1'"XX+AT5pRVL0INkr96I&pT86#95fq20
aDdR`U1dc`5RrSYqie$ATVfBFa2aN!4TdQ6$blCLN98[K!13#l+rq(SKKRjl56,`
DCli3Xf586Z#9d@cp[5J898!S&$BjV'9PE`@NEc`a'K`(TT5`R)!,VEpSA*bBR-D
EEeFrZ0[#-b)lQ6'JbbAX!j+h0"cRqCT!%AIIRMaf6L#CX$jYCP6DSjF+c8%l4P&
SXIM1TBcJej1(2UP0S5,&p099*YKj$l)()Z!N9cN[NDQ5)NldG5VXc-)&l'H6+-K
1PT6X[$8F"8T9%ac5HlQCD[a,I)0PYGARdL'+ZE0rIScE@F@br9Xf+L-6%V6q3[e
-#i-!!+F@55XLLc31%5'&)TfYAqKi3@IqdP""S(4!33S%-6SQF2eqmT`(*b1Ud6d
8M`8G-*Mr&-Yq%0p[Aj*d8TCcGqkD-Lq*F&2,l$Bf2MD(`T*K)EX!Z9JDBB6)kTa
6G6mLF`M#C''RB)fTUc&lbib(*MfAEaT6[D@f4N85C0[@'E'Y4YqX30MFal1Fl0&
F1X+Dm(`#"k$AdI20cXdYhA#("Nq%#`YU6GYQ)3(&8$#a`#6lB$UR)I'#mB,`)&i
J8cPSNqDHTY#'Z1c`TT[qV4Lq)RDp%h[%Sb$T4N(9`83dGQiR`i4U0R@$pqR9@2P
2#c')p2TQY&cDIHdTF$R+(R9!f,qpdV5RGeDAjc!ZRlfPaEkah@h-G5lZc-"G3Sc
lJh!"c!3d"`((B,4J"jMk,-JL[X6P4%f,AT8-4!%(ha%A%(X)X6H$G1c'MT@b%N[
!+KH1")Xk8@NlaVS'P8)*))I,ICKaYb,qSdh2CE(2k-MZ1[2dD5bZ&j[[J3DZ*$,
DaPj2r92811PH-rc+`6$YJ"6B8FACcl`XBE%V[@%P)3q9'KaD3R#$0r$fUlUHGX8
"E`'H([)34IM5T%5S*@#NaX#dHCdR'jJ&pQQSJjE18Hha)KX4krh@5c[jrTaD&kG
B%,d3Jq`kVl*Q%5`NE0e8'`3dCMVa1V-+d5QRVBHrh#G*-MQl$-5*SfD9MmmldCR
Am!M)P['GQAEBGTN"dXB+,`YhU8SDH#F(fd[r,A`QN@*RX8QkM-[)H[dhIRE(MJT
b!*H@Rp)%9)qYf+jBkNm"1MJZ*Q[Q66CNDc4f-R9QkP+X5m@$Z"be'1l6j)1QmL!
B+e@ZaIGrQ&qj95)aiFfR4j`F)$S'CX#"HfU"&#e0r3ZBDRbrTk59aNEQ)CQPpef
XNiR),$q*GRSD1eTV*XTi(&d8Ajj*H+9T@8N15lB+!!F'qNe`L0c@BTqSbFIUdAe
V4HhX5-5rHRRG`&j&k0k"'rM0"2,1F&kf3)qNMNjiG%1jBeRB%PpQZlN0e,N[cU'
Vh3NF*V2f),BH!@UjacDKXM82il6E3qa00E$KIR@6!CYj[$qPL2[+DKcGm#SFhb,
"MJ(&2jkL'mq)jJh"kH5`j-KH9bPUYb,D%PEd!i@#,9k3!0Y@fIErAI0(m2EI0Fq
kUYZl8f42Z5M4SDV0c5CM*(E(!I8NU%#NVY#`H"1INC1(@ecMM+iG$bSdfU!TUpU
j!*p!(C%!ce,$I#5(dNq8l2X,0GAdBipeN6dS8TUVa@*DARBS[Am`hYm15h09m*k
4Fkj*%lQ"0j'DLj[PA#MhYk%G-4fAC6mK0!%2i1S6,c`NL@Ck((UXZLNbZa"N[C(
&'aQ6+bVm8dYq%9p8b&"5GT!!DXed!P!i!-`6elm3$2THI2Ql&X)djq5iBr8Z3Db
BGebPCja&59"SCS,[-"'CIe&[P%$BbmkBXff6l%mIA-a)C@8LRHU`h9%Y!Rc5%-5
9G9J+b#qr%jk-0"ddm'QE@p"TKR)F`EBR`cQ*rB[83c2,G"$'pQBrI6m6cbe!N!$
URIk%0%@5VeAY)ZFY2K5-,P9!l"+"d[m"(615CYS19,JT0A`jCJi1BBCDfFp[ff5
FArP[#4Z,jN3J@'[@Hij+mKaA0H3id"LT965Gl#FTeAQJZV,Ad!0N"K4RqqKQB)k
3!,iAGMTVKc3J[pF6IAeY'lMb`hdq3F90GH33Sc#S3DYFU[''MP2pe&S`M1iT6dJ
"I@5!#8,-VNHE!a#CP[I+m+e-Qh[l%0H[4ejk``V`2BqJp@L(9T(iT*LfRf1lXL(
Bj-G6%6Iac5#1Lh$(0+J*HRN(immi41J,$m%j%%q4i1(frc,0X[-'dmX`8P!@GSJ
V`G'rNa&f3LQj`5P')3RF2-Ck$ReL'&Vj5%B#6cIJCrDU$!(LDhU5V"Y``GcX"(p
N89qeHR&1$eb+BK+N6&9JlC3$G2SEC@f9aiFU"cQfqdR8GdKCLfE-%Di63MTImP6
DLi`e1N$hR"92!3DIFVj$@8p*9!pC9eJ59pH+k@1jeJ`Y&m)dSq!Vq`XFcEeIH@X
clkS2LaU2RI[bSKp4HFXGF#GHPP"%B6PBM4V(BRT(F@!3rafIX%%H4jSMIX*l&#A
aH)p"*G(&fHZ!qDhe0Z'@3Fp0Ma,R%&SmT+)jJf%(+j!!*31jX8j)(if[rSkJ'dJ
fVq`0mL5r%mG@Z*Lf4VAImGaSmk1$pkZ[fT33[[GI2d4[Y395%!6r8T,2'iT6H,P
CG%(lV)1l)"G%DaI88FVUq@VLM5'NVMG8IhQD8lK$*VKr!5%#8#Vh"%feLTKVdP8
+P-A-!'D8$a4#Dk0pMj6h!i8-MNda&*PqG0'4!9ipR1C)[dJ(c6iT(-bdDreKh%3
VLSaG!@BJb(SHN4$GP451kchQ30$0#HAh,@YPj-J!-lFlp-CP,L!Nh(KjJrm*Vh!
i`P!,ra15rm)'`XXDV)A'I[qppb(,K-2Z4E8)SD2eKh,DKHMA5@d3iclL[-Am$CL
jDA3D3`NF5*b+DH,S9+53!%Z&ZmY+X%i`C3$FZQqGRJJ+M$DkBG0h1'T65fS#VBa
2AG),[&Sf891ZI'RpJa81fh!rIkl@*#,-1kp!-Ip`Zcmrk,@T,d+TbjQXGRL%9RI
jX4$Yrm@G%D(,SfXT[eU#rT*!$akl6i8*BJq9AeLr)Qb*KX)(9NV)0!0!,1448Rj
hF20mU,0c*D2'D*936iB-FaNJSeLH#(#Y,+B6lBbL5HF4,%16jfc&$39,0!0-Z'[
q$`%p$DS*[a,2CN(X2mdjC#B9V'3MCSm2RbVf'*q%$*BNCX62V4GU)bQ98$F*4EH
5)[LV3r6@ZC!!l,0r8$Gc*pS#'pmB8bJEqlXR[+6Ej!0QI6N3!%&dl81prm,1!e5
mR+H%-)2B+TFIR[I3Mf#*LaqZFG$PF-c*D`b"!Yda443C`[EmhIEN3"MRMlcck14
8,$p8IU",[TB93Na1J16T&'CY(`*hUPJGC(M6(2MrKlGJ%fq2C+@6G@d1R+jqHP5
+Ed"6L-%!APB!99!)KS4l#jKf`MEA)H#@98Rd%Z,YH$`k3b'%p%q(R,KTV45rDY,
Bj0hKm9"(mZPk'CVeAp[L233(&MTTmG3VZLalV6-r-4C4[ke(e-(GaRA3K%r9CUT
P)(A2@hd,DdcLi286d$#9E%kRRle9V""q)DfjpF1J+Rh3dKP2##HrE8j"%@G'K8Y
@FY&iqdRPh33k)2cN#bLSle5'4'dF5Da4L!($H1I)Q+(q,$Z5TDaj2N00kJXL8cM
hHTUjV#4Ja5%a,P22dRMPFm$jNr,NBrj%Xa(%)R'VjU2#F0VNm5UYhcY&(aK-T#l
D-iDY4e3EdNcaZ%0adC('kQN58!p,6e0Tr#M&#jqFlMBfMQAJ3jPf1F$QGcf,Jlj
)dE,aFl#dl*pM4Y!fAZ%a5H!F(#l@fiGVUY#D@VYV@*a15CrJ'Q,@X8XJC9Lid(F
XlGf*N!"FSeUHq'@FXi($PiDX5dJL03@X1a#iKVdQDf$"d,GJlQ%Qhi,41k2di-Y
PD)8YN@cU,)YAFr-cpb3,[IZkk-9Z'Z%l*(b2Kf`id'+4QVR5RF$ThB1rEI5BlTp
lb@U8cBSc'V9i)#Rll5Ar*hbaQ9(%G-`'D9U52kRq)DGA),H(p*N*5D0k`BA5R`3
dE&KVN!#k$[YA'TkdBm%m[f'ErhCYk8[0NTjdX4'A@fXH)VP(ccFN!i8AV9U`diI
b9TQl6F1(lf$U`3X)Kk(%iT&dJ`U(0`IcGH$mbpeaiSI0!G")q-CZlFrZqG'Y+d3
$MZ9-kGf5"6)V,Ld2cASA#SL)Kdbi(8@(%)D-e&3E@p(iZ-HNkK64bKGBG8)Zb!*
i810+Bl1J5T516A$%5R&J'&49%RGh*Z[4L'XUZaY(+l+!LL*q!rddN!"L+4@CM,L
5UCmU(2eh1A@am(K16('i*L!(D*!!A*B6-BfRHI4(#5mCcEc#M%4Tq2SUDrY4DeE
pJ-V&)Z&-Mc%2APbH"HM4%(&TiYE,e*RLfQK`Qa!,`D0dX`XJiJ@M*i[b3Dfa&4*
BSa`Ea0B5RmphjT[DMh9b94ED,m+S%D5YF$*Hleq,#h$)kSh%@p&a,$eV))M@5jR
MqJR'9Up8Q@Xm#b,$$dhc%(E-MpLVKIM`XTI!i)8krdj!8@IeddF`K)I%R)-b!Vk
)@41HV'*J8GIj3Z06P-a,+A!1H8dL%08'lmpk"[RPbNP9,#V"9`LA))8L"abU,L*
"E%c+p0PP"`H@cdGhYH,$Z1L9"&NA0@e3(+4fpk3Fi8R(F2,2CjXqY'M%a&@a%e3
-MZ9VHpQBlb*RXIL&9-%6TGY0",k`b`L&!@8c865$Z'IG#$3VP%dmhAT@%c01",N
C14CPi$@h%#Mm5hp8MmD`(Vbf`CK9UZ`dC1h3-9Sp%ip((X9(1Vh@M$G1h)[hTKN
EXd4RrZR"RFrAb$)ChApXrA(5m-"jhFZdDFP0*"c0icPNa2Sk@!0dZR8f9[&MdD'
&9I!d5RD825Gp6D(XNCjL5j(0--,T9'*3"NAZ0i,CR&@CZh*V("$#1alP-Aeb[&S
dPrK&1QC1b2!S@*l@d!*Fp+p(Gc3d"r#ijj63a'8bGM@SYkB[(0Y4&`kLZkGpeBf
`Ac)d#HcG'Q3elm*P1538%-pq)@,&GCV-E'(`Q@d#iqkf6Di2+3,`$VDYV9rCFU@
dX)!PcGUMACF+q')!Eq[CT9bX"*,jBC+6e!qT8k&fb&qD$VB6qD%mSj!!EhmVQAp
*krNPS)*(L'fe%MdYiC4FCXcE4K"Pk*E&"5,-j*6YG#%BV&i$%,[,("V,V#m6CGZ
qCLr&LJGJXp#G`ma&VCbTLlddQI(45-`E%VSXT%'A#Pk69Hl#B"#PUrUqLhf@N!$
hV3P#'r4*H583`KaJ$XZ2U+ercGY,9"ZZ4dLfiQU&pUQ"9-SbjAk$1"0j)AqeK66
4m@"&2bmU`X(3c*GZRX@,L4-'HQ3JTe@GZM%6`GLUYb*Q0NrG26H3!-#irdRY'M%
V[[3cKLhZ6r59CpB5!JiL[94Y-I[BaQh!faKj9Cb@&4jP$1'Z4'Y!V)GBXM+FH8V
aZ4'Cc'FTL+JK$L+DbDa*`#GV)**rp&UV'6HXBliNp6b,r3AE83%Cq5lGdVQZEcf
B)H,rdS'B0mAT'RrG*kPXb$VM6fEU'NcZ6k!B"AbMXlk4Y("hRm9b0ma6N!$BJbJ
DC@Id')d5*Pblc[4!,@HF*jq(A0DNAC,)BQ0Pc,'-N[G%qhjUNkG5-DG6A-!"Z!X
93[%@0*F)fbP9YTecFGmjCL9MJqk@pLBMmU9#HCbU5a$)SqaG)U6,Crca*&1PKbE
q%3h@Dr$)(8#V0J2G)rkP#*!!bSEJD6aj6M+YT+f@AiJFSK"F1il-dRF20I8bb+4
M,I'qC@BH[!4,CQh),@A-H)RpDr3DC%1Q*d(BFIjFS9NR2ZCl4qXZ%6Z+fA'M+lN
B(%Rfk6bQh@@Ebq8G`K@d%)(I1$`5*FRlLc@rK%HN"pZQCD[ae`$,NBP2YI83SB%
mZ#QEF(lEZKS%kVVE29ETG1Jqbd5XkG[-4XY88edZj2fYDHKEm5CV0%B)54YK`P5
I*93eSj[-hcB'0K,,34@F+S&HM#M388Pl0$+TKcae"+&HJT8E3MNcib%"`JmN[85
Sc2LmYIrY%S9N&Mk%Z6&PHY9BmhU9qA(eH[89he0Q!aCe1AhS)9Blh1RQi1&ql$M
$Y`NIY#I@Pp!%2QVdSd!eZIGJCA2&,Eq2I369qAb5!J@-ch'9(-SmVaZQ"%jXJ5@
E[6IH[Xd)4%%E[3F9Ui`8"CbNIplSpM"YqBIEIZGSp-mAULfcGrUT&FAchCU3!+G
C03[J$mY$c#A,UAeEp1Z8[K65V9(D[[pCkpNfIm5eL1&cfM#pK*LiXiljq*!!8V5
1LV0d`'V#SVQQXcFRfqNDEa-pdVK24m8bIQBlcE!pUKAEE"Tf[a"EJe#`!rIYU-N
aG4K6REKiXZe"39d$ZlU`Yb0eiT-3TRM#(Ik2I-,&NX*hRc3LJSMIJVq29(5GY!3
&$"+iZi9C![9Z`2B'iY@F848N+I[ie!H`a%Ee2c+5HA40*b!d[hBDP15EeRa@mc'
!`9jkcfIE#m@ZJ5qVKd5q8GENK&i6lk9k"YpT9j!!)&5!rhRQ2L+R`,i5QXP1L5p
)dNf9H#8%[lQF0jB5a2*i`4dYa4XrQ)l"N!",bKXkpcp#I*Cic"hmQG`34dkEH$!
,Z3)(%qTqmVQEpa(H[CRXQN*KQ1K*eCkI6P54kRjQDMAA8dihDlA%4dmfQipf`1E
hX`A9l,GT3iRFhRVG!3-0UqmS4M9UJf,X-6(Dh9"#1'EZc)Z3!*3"4SRS2XJI%q#
2MfPMKpXkVi3E$T!!21j8&6&$ffFFiK11ejXX24cqdhPA1ViQ2l2!RAEd6SRp1V0
lq4*K%dii30mb38hrbUee'G+GrT)i&*4E9HLrYYA&!L)9E`6#jmiGh+G*)H80Xm"
i''"h1MrP45#UaPSYMSqj-C@S,1G1YFDT9-53!&TV8e9Z(Lm6HCKm6'LAEr&qSqG
GN@Z+jG4*KaZ[NRa!EKikmN9,@L)LIeb8QQYDL4#LQPL5LN$d44M#jCK`6lXLIeb
8(PJkcRH,VNP['m+F`&(8Xeb8PeJkcRH,Pab5LN$d&DH8)QYF@Hac3E)$'a3$S1l
C*)Ehb"qA*0!@Bc@F(p4"`dXR30Mqk0*-)6hA@MdQ5e*rK`F"6m8j*22,FQi3"[k
'!D4cSRk[b*&Y*1!FUfBZVIm4HKNkX',Iq51&$D2$2$NUhjXTkFDdYA,-Ah'd#$(
1LU,VUP%$*ZhI$6RN#$4)p&j1*4+(4pVVml2rQ6Nl+HA5([M%4dQeR'QHmS+KDB+
l5$'-blTJ5G*el*@iV5pcd&JY'#p*@iZej'8&eCJYfPU1I%DR@Y6INr!JNBRq+05
A9FC9NDpp*[hLL'lXqEP`6Pk`9VphX5qLAf!)bq"0d26[-IJ9QV0i!aa"C1Ei913
8F$F@4jpV9HjY-%&HNK&"%L8$mMpk$++mmK1-pYB1U'jaI@iHZ``05h8fCaNBa"l
Q`HpD%PB#VGHI)T4P3#%9`A![99'IS[mZkMbf10C!*"0X-+kqNf[9M(EQ9Pm44$&
#`N&e*A5bDPM"TcKh0+4!rbMDfj6P80TQjB[YMP8BT,Kicrp+9(VC,IRYfjR"YG&
hRiPQU['jFFc"PK-ba!-D'heYr4V%8cKBN!"52h4+rUD0-@)QI5KJhU-A%Q5)Y0q
K0&b3!!mNHT)3K`0p,l2iCj+6K#a8J@!!2mh*U@fB-@b'a--d()G*T0[ffeV@"J`
F)m(c-HHHTr4(i),3dC(C%b,GQ``bGR!)I,pVKa"EN!$Zeh-6GpH,R+GPd4NSJ+L
Lb0i`TLM#-16IF`FTQGql6qA-Fm'$SiVBL[-[UU`YA-MH-BC1A2N8+C3af8RHGr0
[pmkEK!Lcb0PS5GT,$[lA8l,fDYVC)VFicpSb2e9d)X5[`ed,ck6EEU#T8ENf$da
Hih""aG-daa98-m*!LJZ&+(cJ+6S!F-@G,!Ur3+eU'!4ST"Lm&fXHXp-m,+B86'k
NM`JrdZ*cGYXXa)hJ6jr3Ik[la"-1XYl#aLDVQS9heFh0+9UqD'YI5*D![hdHhpa
I&!3*b!-H-fbXUd"hTLAcYGYSRr+-`L-H(icY#0NR+%6&QaF96CAbHN(GA0A@),[
YNL)@qQ030jd&qfp9j(0q0TAjEIhA@TI"pKK)j,9D9P5[63TS%K0"%+Af2Jh+f5@
m+N(Z-V@'8pa#)'flq2djRY5aD3K2KkhNlf"4pbD0Fp!Tp5EZ!3p3L*kUG5cLjkR
JcS*1SMDNM`X[Jf'IiMKc&mEGCpD#qm(%",,P*jK@KIl3jYbU!S8--K56[RZE[U9
Z(rHlh5252Eb-8[jS4U$"TIR%M6UJ`K8dm2)'"LCM`I)XY@D(HFr-!pqj2%[q[rS
)hBE,39Q8k$KN59-,`2+$HZ#Sa5"@#@eVKR`9@"N&hp!,3HKRTA"i&Y!3IX`q+K,
YM3krQ0SKkV-fMdq8$@lKShaV3+IK5B)'%2'NGYmCTpra39J$`B)NV+TkJl*J*$K
9VQ[(&)2*GTefrccFQ5ra9YZafiiUDZ'Jk"[MJ-"dKMecNUCAflVX9YEH-PKG"Lr
iK#0GM5VE*-RJ3R(*@40GQq$q*00bm0hS'9`8NZS&Jc8*@Q2r2P5j"XqL!R0Zki(
"PV1%DEMr$6EUaKcSI'YRJipqF``K!+(NSZ)IKI$r8*qaFBFpaLjKbdQc8%d5HSC
-+IAq)PZ&pBl"q9-djXi5+(6N*LH(bdGk"#RGJT,$I#hX`MrYQL($6ARH'a+@[F(
#Ic%h$*2A!Emkh,Td)(iJSM(,@a%HITQ3!2UrYC!!D45e`cpdFqL%*'"DBNRff-P
pY[JKBFm,@e('1MU%GUcrccMGE![V)9ai'&IdrMqQJcmaa'hCq6-ImJ(Cq!-r"BR
5I#bk68MFX&dr1@P*)`rXdKalbaqq8BlH)GaHS`!A+*BLAUKih+I3p6BBi8,)&fF
bj%,4&dSl#HMYiN0@T"pXhRdLSQ1[I6NkXD*XKNF*N!$38[%%YL-TAU2#(i@Q)Si
aU61E2H4,eAej#+QD5[fGJIP0MN*iK@RqQcG4dRl2fFD)!I2U)23Jk0pMR,!FHp#
ZrKN(IA2[X'qiQfk(Ba"($AIQ@+CJ"Jp2mT&3B*l3HLrfrEhE4T`j3eclFlim#Q#
b"FF8&'h4V$@R'5@UI59,dFhdT8Ad%ZcLj*M5-9'NLCCMH$ckP#(+2DhY%8XJlF'
3!!*`pR3J%Dh"k$S#N!!JD3J#2L&$1&[r#(VN26EDZ)A54Yqal5,(@Z`"08a`d(k
ZpMZFT5`I#-3lI9%AU9P$'$J4+N(Vp#83V#aIN!"CdNm1!m`T&5PrCYl*h)86&b-
Da'CLPN(JeZ4Ld5UYp`bhHPAXdGj3mD+N,j*DN!"*kI`bTEPam#-%G14qIDf,13p
X4Me0emphl!V0b@0C,@The&0'"#DJ)S"I+b)%8ec")q9G"5)PqedCkLj5l,NC[B'
He0XJkIlTA4%2)X'BXq`dLULhr-&eQ&%0X+Ifp'U$eM4PJqC8Q@h0h5MJ,B0Bd2b
Qi2T6l8M24V,&2[Fe4VV9iD%Yp&4dB#C`09&lG,V2B-YN+,R29(P5(,@TS"(f@JJ
,icj#frk-l+cj,a4-2kaj8(%QKqE(b52YV,,,jAcH-DPjDDhpkSp"q(E5j(dLUj0
pUCeB(*dTHN*1Bke+B"k*&SjfL8&6VbKV-R938hdfkRJih66X0-f*"UQ-4h"6AdD
PG*[+-rNLI1D-"l62E",hQ138bP#`Kk)AD&#GJrmkLX`dB!,@h!dMN!"prcCUMcN
XZ#HiDUI0Z*%1mT!!q'UAV%aQ%p@3!'Xd!$,F!ZIaqRDTk1DU[@ITabqc)QQS3MK
20C!!SC'5,,%0"aY0X2PB0@6*`1eq+2,f8kXEeECLA29DbT!!%*N*8hVVP@J,-H!
,DR"F"V2a&1S"Y*@S"[a"kUEerm,-IChNGNHlG&kSH[F[R#$rq%CHYcTUIR1`IUk
"Fd[P'YpL4G$YkrCTaCmCLAa#VPKXfhQf"kK`GTNjbfifNm&L8QE3FZKc5`YB&i'
NHYE42bQUB3KQfrFLRkJCJFPElIM0KfDrck,Fi![i8lk96Idm[P*IB&jjGm!LFB@
!aAL9$h#T2m&Z%,aJJrka+VAZd36-JPLXMd4c39$J3YSc6NkkbC%KG*QE4JI"H'[
ba&i`EFR36K,Q*h%'62DM[`c8VZE3i%*hq-[H,KAD85!MK8EplTDZ9ZCVbfbIerZ
Z[l)alY#reh-TKI-P$[0IHi9aZ$2`d)'@p*jc,%M[bKXi&dYQF#)Eb[%J1Q#j'MN
KYR`SI8iU3#A3&%1CGdD6L`+6jVJaJa@,9N"M*%&XXj!!blaA!'UFH[HR@fSd("3
0(#-P6Hhddm[&-MV4%Zp1+a!``9jc*Ge5(NX"K4j[Ra-,3I#G$-NUXUK5mT8dR"A
ba9b0M[A*8C!!Kq&cmDAf+'ph$BcG(0`A`3VRTNlrU4$N#IK(NLlp6RiEK8+lpVX
040lqRY0`3mRSGb8C+`jq#*bcdBEN+8XI5@-F`56EBTr(c%l'2fa"GYl1V3`19@f
&F+'rViFhLlf1@,c8!kM*[re3S-kGjK&0i5'm,pEIfRSfVDMFbr+i8DU8@Y"6Ydr
Ck)lhlm8pDkh$"jS"81"(H,18F%kT6TE2@M,,@K30!mC8#N2rNMdSMB-pLN&C-'Y
J`a25"di#0Irr92m8P86&P96&LRVD9YU5a6hN1QlN0F!p56V&rRTG$j()X5,S$EP
[rkIl$Zf!rb)6$,PV(+HC)SH')UakB#`)JB%Lp,EqIZ(&$e6b9-&%8b*3)QX"1["
hb5*qb*Je@"a`G`IAGRM&`YVAJ!p8DbDhC6dk!4!L&J&3rr)Q1-YV1PN328m"rhh
QSIC@L@5)ZGf*"6'UYpcCL"c6B'9JS+jq-G&eK#VGVEQ*b9SLGER3qd$P%*6[@&m
%Z-eB+b`i"&VQMPqVN!!e)rj!2YK5DYV@'Eb+p$1j3UjE'8D(iaJU'$4ZJ@Rq'DN
JQR5N9,EF#C!!k(4UF@B45"aU`#B,'[qrAHJKmF-,P)m`*0,+mjQ6Mp[4`IQ&d6I
'V)fjI@rM$3X#aER,eD$rT(2+)R2r!DNrqKbGl'8[J5T'$&U$qMP#9S00UMSE)Y*
j8`UM#V"J[Am3U#@YM`6dA0*GZ(G(8h0!iFclGfaj0Je&)aamh#idd'EIY*P,,hE
iXVD"2$SD&h`ZHR1Y(MQ9SaLf"S+A*+I-G)SME10C,MRpPM+[Zf-U[kHU0XXPhd2
)*Z11cK-f6KLl$ILbMLj'!L[6YMlN$m0mb*rGmJ!,!Y49VC1f9f4rqirXY1L$`!D
P4kC*VZYClF[UBMJ2B%00#plZYEpCJd(1BVME(#4q,lF$Y,CGT0FP4(Ub55r!ISJ
'6m['SNCUm'EEL5PTF9'*DA%9LBCapX@TQ%8YcL*9Lb'aSNEAT"X14mh4pVdfN``
+l@PaNJD"i1X[d3(Jkm!!1`('"[2,%hEr`G$0J3Qc`"aVV08rrdC(8CB392IYSS)
C2fFejC!!$S9Ih4F8`*hVI2CC%6C0c%ERdS![PDr,aNXA68C#EFQHi4EETr6EH$0
-2Nql'ZaZfQ0FU`RCppm'1CYd@R0fPXrN#jDj9eBNi-Yf,"1jKC1h+I+PlB,US2L
l,[ql'+5A-hJj"+MpJpKF2e5c9G8+MR`km9H"FM3YdJP1QNRI4!m`d'U!F$rEY`-
&aXM%10LN8c-K*++*@Kl!$ka`24iK6Q#)NSL&-$lq6QpiZmb1(k5r6-4"&"(plMA
p`'$[h@Lb@lQ$[c*TR$N+&q")`L%X8#Na'NDFU#'HM3(M-+8!dD13!&NJLF8[,Pj
DLEAd6J@q%f&9)SQ1#2!6$N+GcR4kHCRbdmiFdYGBel[DUdYVAUlmlHHYpf#i"PA
2)G$pc9dU9C8&K@r&b9+(16"iTdXq,@5,k(@Upk@,rS3l55`j&i3Z1rmZ'r&$VH#
%,Z6r188VrmMiYpl!"Rbc9h3HKRDIb#XHA5L&F*dDQP3JCSd,ZNAE2cSL)Nj)Ir*
J#aMEBd'd*5cQb%F*09ZNHR['GYG#Ekjr-Bi&Zh"f$rFf[)-FK%j5cHp9@@Dk&ZM
#IG+NjjI*HB)Urp`)b16D&XZp0)8c$QZJC[rj4(1q9m15G)CP%2P@DSmb%`Nd+1+
RT'ZU&iH@G[if08ESad5[Na1+qbYPad*0N4%m5Jqiqa*kb("%[LZ+KfX)Q`a8-hL
R$Nd''!'Si!dK'![52iA$hd5MrU3H%#8Alr"8JhB'lFZP'+SRl#8kPjhSriY8")f
k4(eSV6(jT@#0EQIS"lMip@Z6$AGqXce8rlY0XcQ*F#Nk,lDD`Lm8f3`ci*IG+S[
E9TB+QG+-c)Nd"Dep"02-ZBkb-HcP@4E6rXV$@`*,PJmcpc%dRbjLBEZcK3XaZHc
MN!!fAK%mpTL9*,,S1"4h%*Xi0h1P4VqRq3@I6pYQkY545E'I`N3#$imNcfq"#m0
f%0M-P8(DlY6RVbCMcIb&bZ1ASMeB&%CpZd,*C#Gf9H`30e!pbbc)C85$cA3A5BA
DA(1CbD9hNB)`eVNA3L&Ph`D+Z49k[+0j9fSKri5pDX8BiiIVm"T,+Dh4CEVIJb!
Ll*BaYZ0@P2a!+i)VRm8Z*jM#cc*f&%2,HSS8,2SFb))lGAHPQrPLl3h@LaVhFFp
c[B0#B!XXS*cI9d,lHP193AEV5ba1Zjm8Bbq5b@Ur!kF#jQM`4iGf1+L4HY&"Dk8
LGQ#SEBI[11mY!E-)Li9emM&T`!mUTK`UQT3aD"rVJ)cMd9SRjQG&PCfT('6'Pf9
Xh45YHl[FFf#rH6%I[K4@12kZSQ%ppkHQ,#R,1f0G*6(5e"LJ%[FKC1Z+(kmi5c8
'0a(Dqf914'N@l3qNlHmFY+!$K-CNGe&U40q0Maar&pq2llA'f3VUYFJ$P#hS3L#
M$VBd48hHhRI1R$-N"QIfL8N`X"f'XEBJf6"R9U)HKGHbR9r4l8h,eU*CI-Km6&a
%2,,IMH-[05)GF2q[Zd49J$8q-acj9D-S3UPT'43Bm`#THVcApfTZ-`lJUT!![Eq
Bmb`LA0&&*!`el-B&JQXKP,iqV6PfeG#"h@VNj5HTLKiRbf!j-ikVP[%UE4C,Qpb
ja0hXc2B&P,Xfip$!*l#$TB8LZ'-qP@GIlBASi9YTB)f&ikHZ"`*I"m[[+T1bp(h
Dp`(EASmq&-CjF`M*2+3[T'90&IN*[*1A@RqHapF1#iAflUe83F`+Jc(#U$3m-N+
G-TCpVC15Qe'ml056,QANqCc")"@Y"q2mMQZVRUppQGF1[D'T+PmIRVRh&$43[p[
1fc`#*2p4Kdq8MfeV*-iT3bG$fm)2KQcIaTF&5eiQ8MpF2Hh%X(A@YpY8epLLf[*
T&#b$RBVYY)+cb!FH@6VN#e+0RY51#Zd,q49rP%IX9b@ibcjNDmR)d91%1A$C!AT
G4,VlQlrZLNXjj-4`p`dH$)0,[Z9Lhe1QpkG5k2m4[e5ikf0LTdE'EX9HKZRd3*,
q490BGlLcAZ,1#0[4IB)6&+T(dAMUjS*MdXN[l8'1d'pA%)`X%1a`'aJY"(CFq5'
iUa6@DAj0QV'j,-MYkZT0V#,ECrjm4&2I-E2!,fX1B!+[0D+T6S,&(U`(YG[LL5N
`$U8AP6jKGl"i2+DMTcXb#k53!0I5lmYfcb9*Y6Kim!R98pC!A85+'Pa`NbK@$J1
'cD,#T$BA4'V,VE@@G[9[JBekX(eMpd,YL(04TPFPcFr,L5)3EaXF[PV-G%b5CSd
A1KlB`"B$Pb19%0FSr,J[8SXkEaH8IGYFq6h'&J[-UP9,Z$&"kEK'IGdAdRC1!AG
F20pj(X53!)`Ehkr0kflLZ'pSX&a2(E#rHF[ErqqLc#IEF5DcemI5"phNPd2F$J[
pb&9&mF&PDU4k$'[N@CI)j+c3HQE81JY1N!$)`!0LTM3FC9$E1-E#[eDIR5*MMUL
r,ibU93TFXQBTK'Q5+U@HGhKd!l,RmV3,9'36cVc#d31VaUVDmqM&Z2Lp(8$M*+H
RC#Db)+a8V(0r$!jqDj+6bMk'NPqkm%ejkYlbVh6'lZmh9P)3@ZfS[HL+Zf(%fDD
RM61p1Lr&HTSKi6P`NIp0C0qlDbBZEI3`$jBd&#%!r%(qZ#CS$dpSVD$4-,h--TV
'5b+,CQ[aS9rHGN+&d-dj,Hb$@X6Y+1b$mL"Y`5aak@iFK*)jNN-$AYHQjqrE4"6
3LZHhL8JK6hC%kPJK)4)1@$PPRM1FMF6"!eNVNl$&mAFQbm5cfTfKI-B"kd$Y3BA
aG(MCY&'5mF*8*c9Q('h[fm)84E*9jIR5kakrR`XV4NP-40&D5`bXZpMl6+5RjaU
4lm8@#hkR@k2,0@PicHpQFVdP-fB4,%l@%f22hc3QUC362mDC%$%0Er+4d)F$p'r
5d5()%*qFHSlKERp@M@VhGUBChRLG!*32*J+"RAI5NI*-EP$"1NjbCMbRRFD#Naq
LXJ,iGak2H%0*"@k12%!Kf-bN%b`i!J`6Dc(#G91$'!MNU)-$SR(-LhjBj!criMA
N6e820KKf*"!JFip2e+bNPF$&&Z4Bp"q(lkK+Gb#&,UNjcd6SKk#UDLA%,T`qF-m
8@Fb(38M)a*NbY*E%N!"r$2PNXKMk)10pqj@2#9DFh&T'cRI%RL8&C53NA``L`[-
KE5'V@#D3!%mXqUXL5CA@F3HT8D1K*aN%Gih[6&#`(Rq2G%mE)-B8D"JrCDkTCPL
e0C9E+9XM)$Ska!pEP3fcr@hY[cC&-IhSiU'-Q838%fB[1QXHhi2C'$T`d1m96fM
r5baI6UGhpPf"qH*4+R84l+[4B'LK[IJ*l,GCQ@Zm8(d83jaDh[Rb3#$I&HAQG``
J&Qhh[Jq`N!!NVFH))"pKCM(VHRA4P0ZZ5@[6Z)pj*hq$X8$D+AU4qPBIQj[h8a2
rbKirKYeDcaP`R,mEUT&-fZ`VT%BL2rYA)"!9h2jp+@CeZe#RmA1$8rfFGM95$!Z
"#c3&p%!"EchmP9Lch3!#KG+Z,-!pi6r'H!6m+ULrDSVGMe24%"8r5M9k58kY@k@
3!,-Q1kAq4@U[0G&B8mFSB'&`*BhBG)k)k1M5AebrPAlpZBa@l084kR-1YT'`Md"
!G+ipp#%`Y9Df0JQlZ8Z(F#8fffdGYB+rCYB!XUBfHpqi2QIkRA8,fIIU&0"Vq,&
ffiBkK"rVK4l'r(@mV&)2k("5e"MMCGBcCrG5H9#aXL3A-lMrC*mm-kG`qb6R`8r
U)'1NDrjh"4@2ajkY%iKJ`kD([r,2-A*QK6(mBKpijSF#'$cNKMTfZU0mX&-l`GI
MI)N`YrEe*LhXLX%,15'jLNS65m94Qa5hTDX(G(S&bUK6'$3T"-8Y9GFU56@mT[4
@f8)%2hiU5NX*9XKP(k[Tb(*V"QC(Cj!!qJ4MB3'4)-L%0ABp"H4p4Rfr2NiE!i9
!il49)Rep5VhENBBk4Y&&%-ah6R2HX1[d+NLFZ@BV[4Lf9c(rTfMUmG#'q6+SF*r
&ZQmTqAd,@aGh34,9F"`6iDadVeR0LQ"*YV+!H+IQH%JR09PG&Y5Q'RK!4QJ3er6
,XY3VQNi,rHad+1Bi-rN59MG%(U%pkf5$)0&pJh9@L2S([hmfRMpD+iLfj$PJF-'
e0""H2M%YD($D*)ca3`i6Z,LL"8HLaTa9@D%NCd2l-9Xd&d6#N4mXQ+Gh0LUND,V
,`X@3!',4)VZ*6Kr8KIS&6e&Lf2+R"5##p+V3YD@-%#[HHU-QfRbY$J8G+`)QlAd
NElJP9Y()N!"8hEd`NP6q[#,l,3I+8bC8Y6N3@TD9h-Zj,#)F"3%j5m*BphDa1$T
dR6JmZCd8bRNr'1cr%bkTrp3(mC26fdq*%cC6'$aU#lX$DDfq*b-eUYXFbiH01eJ
8`U4'V4"6@M(9lmBQ00h,2HM&#[C#U5N+f%"""*Qj0mb0B`+ArA#+Mdq3!0Kk+Qm
ErmK0@EH$B'1$5`-'kTkraCK4Il9@1$e4X5QC%"p8*m-kK`)GSTV89C'5pRlQhp9
13GfcDhM6h@[pPJjVF![2*#`%i3aq(3,q!-%BP0GK1J[LR-&k`c4Q63TiI)ef(jk
i8e6aM$Kh)!cqGk&UMlNXrFX(a&9fIXTK$(pqcDTh+%Gb8`#EHT)KlbibSq@jeA6
cNC42PDVTqVm!3Pm&RI'#+P`(N!"59+-(1B1firXfIP@Y6hc4LbF1cp*`4kj4Jd&
0c`9c,[l0N!$[LReQ*3DqR6$a0JB&6kLR8`D,aADZ3$VJa$pEPC+8b0XU[l#hCB-
PI1kBZ1"!-*!!*3VJ,GU2Dp2BEiRm!b,4VlLPH2j#$`UCXqVC9FY"Pj9V6*0L[f!
*CKid!e-09,MYhcG%pX5*j&CNQG485N,2JI#+cp(`L[brR[695iDi)#AYXE2NK68
BY&iEjjk+59[r$'RTiCD(Tb0TJ0U"%+FD6V"bGK%SR4&i0JI0Xl@lA6p$IK5@K#'
RU[)*Xd-XcI9[9+f3!-0NE*43"cpf5'3j(2HAf&'2Mc&)d)Y#`C!!9b#5C[qjSJ[
E8Cd&9#hL3&LPj6P80#&S5cGi@m6ipMb!%#2,3Ce'G-@A,YCh,eJ1*5q9S"K+Mqb
*9GDdipeXr+S&1)Np5K*1"8LQl5EY[42S36PhjJ95J3ZkA(MMHJ%ih(3ITpVb&dG
j+G!L!kh`0EJQ#jE@Ec2J'J`8SK4-A!@IQr'b$`Lq-jQ-mVGkbBM*N!#h&G0`*,9
CJG65Y[l[j2jml3A,mLB&Z,LhK8X`%9E0KpSJl-,S8hYNrMRI@**S$XA5)$JArD)
ZFmj%-[V@"jSIfAVpN!!L`%ha4@CS#G`V3F5JP*!!MFXkH4J",MGV8RVAXA$j,%P
E8m'e0"S*N!"TA3@H-$05J5@@I&lE#IF@8VNA0XU2CKqK6m8`ZY!m[G8hPAMUMUF
G[lND)ZNB2&DGJ9eNRK!iQ+"mR+$JVJV+MVc*MYhj*'DHbjAd%+Hf8#`h2p#jVFJ
KZm%mjjK*Zb*c*JhTfb'NKR46b##$@Qcr'ZfQEQ,P,RDSPY#mj"LTaB#c%5-K[%3
i1ZpdliR#RdjFEVPPm#@FGkkBGj@1!NYl)K[&+aSaQ4Ab'UCKGhC!5#4FLZaDRD`
pI8XRcTe8961H[DCQeYV&Kh3cGp"V0Nf@RU$rE86Sp*BkKiFSAp'@Fp&Ue$$1X5K
lN`krXGVm,D&cU$*`q"6&PP#YMYF`9IV9q6f[Z+(46dj!lq@+"Ld`m5UiB)@p4Q[
AGml`1MQmB(E@#e&,fU6E(#)CQG*Am3q4d8)kI&J&fc0h#fD"GFdTe#hCMUcEG$*
ck,2!Rj+P8KBe,F[,ACZ+d-XRba!Fd-cUi46eUeljH(-[MLj@leZQ`aT#`2j0Sq)
JR&8M`)r43KHaA0$Je-QZp*+[1H,GA(6G1eQSiCa1ZClHcm5MhfNS%8eV3%c*&p"
dfH5ea6Le%HZQ!eXbE%)2(G4&8Mphcm!SqA)dMK%iSa9LX+eAR0hj%N$Ud,m4-92
%Bl"mXAIY&)Z#LlX6D6$2a5Rq0j@(h[5LdRIL-JmkZJiLcFA553phYc)KTheYJjK
`Uq[rH"(HF!phPM*`"b*p"BrJRXQSMK2aU4$EGXZiE[1Ya$UFc"H3!,3J5C'6#b!
RNFXl0"5laFeK!,!@a8E8Y&)pjK$M!ki9llm(+12r156F)5aT4p'UfmYlCY3MRHY
J-*XMb%J34#2K&mKh&cJrPUMGJ@bR'C!!b5r6cY[ZJpP0P5Q$GacA`Fbr3b*BDkq
3!2,@6FU'h)*iPVQA"j4)!TE!*RK`e`)(cB(SH&BaparFTb+`"3mkCcE-cHK$R`X
&m!E2D6+&V%+$JkF*25LPqH3'qA#Y6Hdm!hG1'*0BU'fV@3Q"'C!!VcaGTfSk8Sl
C%*HTiZaDZ*2a++6ddH2eJXd1EG08*!Y`2!IR0DfPpD2DKlQiRZa[%#VI8A#h1(3
h5mJ#9Jid&5U@Ra[9i6NTUBG8DT&(Y'BYVm+lLJS"4UN&j@D&[aVj*TXNKqZ6cNQ
Km6#T%5"JbKSbCj&aXc5@Pi,am4D1Z5p6V,P[1$aV-kSdd5Ld9!ZS1RXB3`RJ,h0
ZlGTIY0'YEIpkU3YY,4L1[e[KYF8HIkBb[hj)fq#H`8Hlfa@N-!rI!1hIdS6@`0X
TQKL)6a)`&KkCH'i1)2M2-`"0kI6"I!MhHKrr['&jUXV%dJpp"RKDrb9j,[iFJ"S
pE2[5&9-$rl[eJCc&ULDJJ1Kmrpa'B$Tm8*SKS)9r,rPirFQKYF+BHdNF`&6h9NS
22RNIVMb*%h8#MS1je`X8PER0i@6H!!-Kp`8ETkkiC"(J3kaVLF1YdZ3TrhZ1*M5
IlFmS#aqPA#"(!hUcHSmiT)J6j%hJ(hTj"1d9`32&pD%Ne(e)ed-*qf"Ccl`0h(#
N'6SSSa2[!PbCMBXMc4SD4EJ!XhBhqHhMMY$J"9kbX(I&&'pB,c1($EK)AhG3D&p
#UG@[$kfXa-XNq+4S8Y(039Qe[rMYE!25Ta9EXrdX!G!db!G3&e4UN!!FJ8iq#al
#L#B`lJG,Y-i&BP+V5e-pQHAC)aadb4!phGb"mXm2GbN+U1ia"Hee'#i2@&cGJ$+
R-(EM!9L1I4RM5")#r3U41$DS*3-BibcCip($GciJ*i#&5Q3%')N(+8@#U![d5Ya
Rh&L!@,#3!%)DNMJQDe-9ihaPkDkli*!!@-ESC@XLHPTD"'Kk8)r&RD,6MV3'dEf
+29jPbpNkeP5U1P6MmZ3k&ipmLHUrTQDV0M),,CFBcC12P'JYahFk,(9G,&)d-%k
-RDBr,H5Qi,9Q(($MN!"q9@S8##eGQB1p!6YH[*++",%dT'ECIe!aVhSQdqSi%,N
rT##[5f[9k13`Rpda@i(f1QpDKkF$NJ&ZGI6U2#i3bG'RKBCM8K'Y'&M##aa`ePQ
'("`-pXeVGdi`e+[$#C!!b-Y'T&AF@0+3!2BI243*CiRpRD&j!5Q[b5Ka0Ehh3lL
-!5NTcqGYY!46qkJQJfhie'XDe6mHBGjifS40#S9i+adM9Vrhd2+&q9-UpYB,4bl
YI)FR+Cr"-R4m"&lERiq582qJc5rjb36qKXE,MmPj8MPUm)`CDm&1B9'e6E-p8JG
2PU`qlJTX%%m)QCX$Ki@MXK)-31pI9qM*%'TYjk%kCb,mXm"4Z,Q8bh6JHaEpE4a
2-S@GGlA@)6l)GQ"'FN(a"QZ'Te4p@Uif-9V6@[UT0)-Cc$i`6U5EIX@hGK8Q9JC
jLLE(NUq'r6*@($4TQB%B2EPT%bBPhbS[0QX)EiThFpdG0Qc3)R-G"l2HZ91rmF+
6i#G!ELiL3ATh&MI2'j9h'(NYY8HiRP2bTTfI[Li06eThA+i**Q@aPQ-QcQ',96q
iSCVr4Xd&mIQeL!U@%M)$iCB1KGfUqlZU$JlC-USieM"[e+j@TYpN(!YS1((HIr(
rBYd&rKP45k,BTMLA&Le1ci3p-PYca0AQ-#r#DjF9a8G`@VN"rY0K96QR$N3$#i*
(5SC%HK$lA+RMIj!!Xe"S&85Q%*%A"U@@)Z*TBYNX$JH+FB,#8jU&c@94Ble8,K&
GYb$(N!"QB#PEI$6C1'pj5%*J9T243X-$5$U!QpbkTj!!k6,'-IVd$DiZcp,JFZ,
HR$1*"M12C8IUVFr%"[faCNUmaRGpq,Gk8rhU$M%NL0m6-9&'cT!!+a#(U2G`%'S
#j0k&Xk-iYEGKPpH((h[UJ"3aDJ*8a30SNpeKE3FYU2*Q39f3!+4QVB8KPNB8XF5
JXarkTD*VeJ[EVb)CJZ*E9#J42,dCkV@62+UI1I%98-(LUR4Q61MBKKrD"rcS[i@
P5XS%Z#fSb5eKJp)SN!!Uj66[Zp'&UB!FjU!ha0@Y"1C1!DFA,l&"fEKQPFrFa@)
U99J8&#R$'NqLb&iCrfpmALb(B0Z5Y+!YDI@(aGZH6&0,-Q9!pVjKNEh0r+`bd#I
5KhpPMQV-G4#Z3UcXe23"H4AChkGc00PLUX5TY"(%6eDf+Pl81bh)3"Yjc-YTp,Q
!#c22m+%Qpk4jD%)B#cVF`kL-1Sq#2b`mC6-p[qZ$lch@Qi)FK5cIe&,I8Tkrc0e
Q0T9"K#aqH56*&+4[Sj@Aj9UL*Mep$epGpkc*DpmXF@V)G5Y@"k,0M3U8qqA&"eE
L1(K'Yd[TYc'm61)j)cj8,FBIIdP3VXX#dEY2H+1k1KAfRI)Qp@liRVMAGmPMbEZ
R$ITd3Z`ckLIJ%$-P2(Kq'2V4mfDD[&AHP"lVTUYCUASjJf5Y0'2HB@2L"J8E"Xd
Ulq8JdX9JXU9!e)HBkMS!0jbD2FME66CY*d(Kh@$rDREQbr,dc0F$M`(b#d'62(&
6k&ap"8rGES845bDC13ecd`T8a40k-!Ja`TPq0T06#9-Z0Jmi1"09!pEc-(3X8k6
1fP9cjFNb6lcr1'UR)&0c#&41%%qprC5i@,0$Tp!)ZiAMRS!d&#)FR)A0*-6)qS8
r`K3MJ&&5!NBY)@EXh&Mm0f%Bh9Eb6m3!6#BB-$5"cIEV0@9MMN+Xci[SP@S848-
e-brjY8kR5BdBGaGXX,P"q1$,dJ*+&INreC!!a)[&&1XQ9c2f6Z[5b2@JiRJ65#"
BrT`E'rdBhk0j2Z4jQ"p8ABSIZm@&EZSfbF@EjAVH*L6XC-PDqFVSqMChd+Lrh@l
j6dNT29&2!)1AmK!H5#V)'-mc4Aa@Lph8q,JI*KfhqU`&fHk19Qk02f$%K*0"T4%
XB$M@M3Ni(24KF4$P[-#q%Um[94Fc(a6#klfDc8[K6TVRp%-d09K'Cd`Frf[3[h5
HYkHQIlY#DMq'G`YP2BcQL',)("[C%2E[IZL&%`(4G(dIK$4%+)hU(2baCKGR#9T
c5D1Zp3k+'XCIqbXZ2mAf%,ASA&'9[F(aC4$F9%IE9+r,MA[A4PS,ch&5UD!q52X
$@'"arDU8dA-('@mIDffi%#RB9+94[M4Q%53eRaXX3hI#3B0Ch!*9M6P+#U3jBII
-KAFM,T5e-LBf*%Z-IDZHfUT"LlqE'[*kbCHYMqCZI[HDR-J4MCEGmH#jDSh$JG#
3!'hQ)4F&EAC+M`Tkc8EaI+Fm3ERHF,cZZIP1ljNm"K-fS`DfQ5U4d@qL'UmLcF*
a5hMUj13[2pp-f+,[4R1Sj8@1&9K9fNF"5$%PDmf!CTrY'Urc6ZLNA+kYa6,GH1J
+P8XN58C!9eYDIfDpkXbUHlF9iaS3'%q+#fBSCX0kYj)TfP4JfE-`b(fa"K4f%$,
ApMCU%%%kpLH68KV@@NQRJ%CRMU8kT2DUhmmPCNj&$J+l`S'"$&(#I6"mC6&+GDe
TjlESf9M)-[+r02h%Z(#N,)pU($(+'$C1l)-8VkRHI0h5M9cr`5"'BJPcFh6F*3C
aqiP99@D2r@Dem5pQU3XG538jAJiGd-A&XKLiAQVVqbbda40QEfCXNFX"fkHU%+E
!EY"p%MJd%jp5CVRGVHkI*P9S2NNbl2JPI)@pVHG0#[MlEAQG1L!'rrIe8*3bCKa
APM'DRLBrZ%#-I8L%3&KV39&6'(SP6fqr,a'iTpY"@0X&"@DIdM%p1CURfBj*f$(
)bh&53YraAMp(%3&cG&ibc"%T3#"RGNk,#jB(l)RG,eSk9!IZDa$#fHh!EiKhY%N
$U9*,$GRbJ)2GV5%jBPA[+-&mp(!'CJj`"YEB9q"AQIqeTk-EZ`DM,(Y0YI%c#r[
GjI5V@Cm3-2,YhDlqj#XSlDICJF$3TaGrbC[",QID1'A34KDRD*apfjC"-ijNT@m
MC[mDVl46Zp*rIHPNrRak,"*!Zb-,Narq8fZ`hme51,rLc$JmISmHDc4Cl!lNKA"
fF3Z!9lJe2mSLkq5'NKjG3)QUY5Sh!rmfGRG*I"T#@e1,@5m#'1eEZ`qALV5"8V$
X+'&J4Lrp"XaB[0@ZMcJ'JURBq[k(USlFV9UF-1-8$@f&pdfKPH4G!#RV0lpCH*r
rS5%q3PEciXM48jTF[M5,2U4j9(J#$BqNGhAG0EcJ@-502!*@kUAZj'[SpHP#IJS
3#r-D0'CTGmm&VU*IR-m&b5MjUK5Rr[%[$r5)!ccb6iRXL($VIElFX#M"Z$Pm'mh
!R`p-1[$`H2flAZ1a0Z1R@Mp`Z5X3'h95IA"4I[r,8L'@r)U@He&JQDBY6"qG!F&
Kq9UXB8fF%i82[1`0HKFkh*@3!'"M"B`[8(cJY4(#!ar8leT$ffkm&S0f*ZfPN!$
qFUdP3bf-@#@YNJFR)H6U-)d$l"YY)2%i"0#`9M1i)Yr&)PB,CKXE0"&pjH`4V+6
NNb'ir!&Qk,GCmBVGUY8e&VXfLQj*4[,B)mp`+#N+LYDXSLkrVCaH3$V8GdXRl8%
90FmJC4KkX6N(lM$E%4%mGSI1)KhA9d`6pJC@*2[e!a'5Tjqji!ehfpU+Gj8pRcr
'-AbI'DHImH#R1ITiMQKim-QNph1[*-'6+-(YKiq+F#Q0X%R#-CTm2AI0P8&Qhc3
AG`p50TbI*Y!9[6UirhlJTm3QBK9l@T@BU"DrLTBIQ5-f0'ZlEC5BJGfI3kE"r5k
2c'fJraj"J$28b,%BD@XMG*,ECP3iRY%2['0D`VI5N4JiSrZHfeIMFK"Z([!)&-E
""6lXNfZrTp+Z%(eIU8NX+B@P4E$0+D@+Tc,e6V95l*1*LcHYN!$f-9TT'%eBlKq
aK4MR+$5Lcf[p8Hr"-Q1U1M06C2S60Y-pIF(!LRKeIC(3h36GA,Q-,!UI8A0Z%Ad
LI*L9JAe`ieQ3!0pk*A&BdeJU-d&9"8P"E-3b-@XaYrmXfkZX0%664QVJa5R4,,T
6MMST$,6@P6#I0(%aA@*"dR+$VlL+QK!9jJrAKGe!5#L+hDR9NqK!G*GJbcM"#l$
Zk,EmFITIE[J6%G(5PEh4m0qP1M3q"QfAeY$%`'[8K',-b%&EkX`'T!3l)53'!b'
VZ2S[K241hSiViHq1Cc-a46C5ba-GR"J#I*J$)$m3ZS3-T13ChI@m'VNAk1BLJ5D
*c"AE`C*,e`H8,jpVBY6*J5J60,2LibbMcbNi6m#NA"*FT4$&@8Y)mMRl13cf9[)
(2H%L5iIJFm'5F2E0'j0h*c*P@@"r%21&&P+Am&TJ[AChT%JKd'*9T,QD%XM4K5(
`UA(*mDRpUhKkflKHG')6KD-fb4q#)%Y1NBqP-d2`G$NaESVIMRA#d9-Y*i&Q@F2
8lPD[I3*adLh1X4ah8Zk2LQ-+[j2S4DTV4)FSj#QTVU([3`9XG'S9@'SU-38eFl"
ak,5&#5LQ%fNb,kf2aXDr"MLe6[lcl*%`T%4MIFbK2G),U6rrfDL8$%3[@1mUTi!
9hhaj[*f&ZCSI%9,[RXJm9')aAVNPB(IK8PVZ-!`Ce(`fKhGi(mP8SK01dlS*p6$
+UQl"`f5!3JXN5VNk"4a$0*T!,a5kXP(PM*J"%F@5qAX5PbEX"*QH[#Eq&J$2`Vq
cdBpj-F2C3XhC9R9@`B+j)V!Fpp)%b+rUK,YU#04'532R2l"KRjC2d&2U0Ki[cr0
)*cGB4Ekm[-jJB`0N%R08#)&fH0S`#p4Qd$cbK"m&mlAh#)[(b(IYpK0,X*!!@4X
4DcpcXBl&m!XQbdDAI,6ENB5lQZ0JJ$rAK)p%(jANjEp`iQq3!'3cF(109)Z&B1*
8G@Cm-frr01@Xrf"kHALA*q0Vm8&N3(NT015Y0L*6A[aPYCVp"J0CEG&cF$-NdUA
il@X4br%))"eQRXAQlBP1Z'rb#8ikD*IDdL1McN&dT0`mEb"d@Q1p3*H"PhIc%@$
2i("C)(4YG`XBeZ4aKIqE53CA@ZNY6[FPi8U&CJMZcImNDC-aEP&Rb#qHME'6+TB
&[mYEVje,be'i0q+Sd+f9#!YVaJ$'H@'&!eFC'-6F'1Ia!hP(N8f("T0S"5T2%1-
d22'Ze%%i#$p)f$*66YAjJAfR2bq)5!ERNK'Rp33Hhl9jA[ZPb9eRUK'L,,")PAA
l'hdY5IZjhUhYT+-QX(RUqBdPKA"4ljr-ZF!#qVl"rj24@HLUSq&+"Er3f'fAUX(
iLFfB'l2,i-a)4XP)C@R-6@DjV,Ll)LEpCL)h9iBL%2"5,JrEi%Dcc%F*6Im,qeH
!"AF#-C%ehI4FG(HGk%k"IGN%$0GaR4Z8NdjH%4KD8FZDe#rrGCP-E0*jpbRr5`R
fp'JcKeCV[*I@KF#C3R(Ec`J`fdrhlGp(lXN(ZXrdqH5%b[%#a-521Em@Zh#8RkM
3YpH(dZJKm4!X-eGV)k&i0A2"dC*%,KSc'm)P'XG*0LKqV08Q5lQ+IVqGcja#c'8
$QciihaP88+q028)3r++29(#[9&%jD3"C`UUdLANjaBRX#T(5fh2@Mi)2bDT)bi(
C[rhfH8c[,58FG8j2aEqQ5D-PICf(0#%8%XCmf,1P-9Dkc!8i#6mi#1)Y%`(2bp3
Ba@SbZcrF&D%Fh"kK63N8LeK1YeJ*c-D!!N$U'@eBF(8KlCSr9'0B@%3jj*C5ZcL
S(m,-NTR,q![AlHh,KeKrG2dAI+(5j,N4&RU(H,iDFS[*fELIR"6PP*EZ3,9$B"c
Kj2-k68KQ,EL(&%PM95bcGM1BI$d4*ZJ8"6VRfQG6#mr0dUNdH*8A+DLYq6&BaLc
%Y91,D@0lF!"B)RB(!cSN9EQbm9j"IAKcq0#`#bmFaK&pb3MTj(Ph`AHTXhGb+T5
EKraGNXfI23BD2d!*N!$ZU*ALQ8XdCK'ZXDVJGa1%LMkNYfmk%+V#diCqb"hEX1d
iS@Aq'Dm')(T@@F+Y$br,Tce[4c@2F1#e5eSGXq9a%[+NBdbQidlcf31ShHfeEd`
$9'X@Q#"`qpYdCimpcZdaTiG$1YZH'bmcip[3T3Z'N!#+*IqHUV'PfPr"cDPf*D4
!IKV*@6Jp%"!F$#2k"a0j-'Rq3HB+$Aj-VU-[2aK5bJl2MINI`PTqfTJ,Y**H%pS
6f,a[U5CJQ+e`8!8+1BYh1-a93qhd'ST`VRICk9F-!(T`IE9k`*DL%Qid"F+mV'B
"%5DB!L+(m3m@4LdMecS`mhUVFm*p'BF"'KK+PYm[R''N+%"P'23Y2A4,#l[rCJa
mh*Bec0)(DhQJ`X`aFmadG@YQQX,FVFB2a!-LbGjI,rqXT6TBXj)Xk2mL,&TmV'6
*Dr&iCX`@4lP`#4K4Y3qSk$Q&A2p0'a9BY*AaEP&9[2L#,(0Zj@Br8YQR0NdJlk[
pRQBN'6RN,1C@mUq,6K-(5khILEpF"fAC`VPi0XB,pfY1hVLh5B+d(91&%*QeLk1
9-jKmQ@YRMb*Q5($a*K1Ul5d,V*dQ)9Qcj`SpM'")i[LrLN4iMlT#bmCj@#CUG#C
6DQJBf@TErh896kdZ8%lkcbeIH'1YYGiiXrm'$AeGY@+GlXfIBUGh-H"21hN-EbQ
)&#KiY-6jpRCj2Vf60T[&HBjU8CY30&EpRCA40m+dGZ"Cr5i$ChFYKc`U9fk0k&p
U,&f'&CiTV"5N&F!4-apXEPU(dM3h340+-,J!,`9VpD882l1GSccD3Th13UXjj5B
(GF3UYVH8-i5S"(TbI5KiS"%EJkTc5e)CKk'1Bl8&![Nd+L9$KN8kVR0mA'$!Zf5
8MfEHB0rCha"BZhideL,rlpV&0$*[DTlUrmVj!8'3!$8$emDq+M'GL!lI4GXUXfM
I6%e%1VMLXGQEa+BNFb(LAITD$BdP`aA9@ARQq2lb`PAaDE5N2,(G(pf3!!qb,'i
TC'd9-Y%pK%dFq5QTIrMrFCqb'r,BD(Ai!XmK13$[*1LeQle#b+a$G5l3)[M&3$e
,Dl-BlPM&m`[JQ&FJ15Dijmi!fm9aS[@+Ve&%KhTemKDqbb[,+%GU3PURfi68qhc
0ZBZ-+6-Fa6mpI*+jM(J8cjlJ`6F[mcbKXepl-BpI9Gm+&2j*DmJ(DkV)#fRGfkI
LZ6fjV6%[&K1XrpV"P%dQ!V6D'p*p*(`dG@CTdRC-IU683RFjchE5jZ4hGYb3!"Y
c'bThANr`Z8'(,j+RfR`I#fBHGK*!Ga#LD640CZ0hlNGd$BV!GY)bE6%"8BDRAGT
3m(GJY2NE@Im[@J[D4!jd*h3c-E[#*'NdEQCdEhCQ`0Xi`IfiFmr%F+N$0C!!C44
Vl5!QJAF9-c3iQrcC,UbdSb$T)4`c'YdZJiSK&$dX%0QE*AcG,rp!VHk8)AM"r(G
jbDI0aF%##bTX&j0Ta56fh(53!'k"k$Pj2eLIJc68((9idA$0B6)J'(%BrM"h-hF
TeNq2fc!IL3Z5)+HTf5(2RDrY4UCV!l'3!$lB81T[DUSULXAIK)+prQ"-%h6b0!D
PRSkHCMcFjJ&KpJrdQq#cE@JUCJ!DkpbViG-afmY""L!bAm6D9$rhjD*0h4KL@2K
')L6SAf+*RJX"+(h#NjkSfQ3$3R,Li#IZqZGDVDTKEJ&d#qq+d!5-EDM2+q6$dMD
3!0[i'8dCdTY#DHB$,pkqeNb82pdF1+IX4*lk)UR"5*!!X)hNNRP#`)Pd)X6+e[d
,Ta*m9hJ09)lRZ&k2)b9Sd9JfTAkIcZbbBBUjcm%I4p'6b#+'P6fXiHM3@G*6!26
l5IG!MC!![EYP6RMF)"(!6baVUJp9-m!k24-ddFR"XArLDcQ8Ic#S+8Q#%&8Y#12
@%iDrk!JGCZT2J(%`B"mXprZ-qM!DEdeK%aXLdCm8HFmF[mKPRkm2[pYqc(A4iRB
B*HE)Dj!!"FYmGI-a-5@Np#bi[il!U$',GI"#U1LKc3IBXCdRbi2%')34Gc*Q--k
+Q`EaV,Z+$#1iSbc911@&j4[*HjAA2UGB!*ckP-,idNXQ,@)%k*rGGhN3G&JqE!@
aRDUrk%mj9!Ja,"T5+BELNPc&lbQNYM3`rRAjS)F*e0aD*5!Jm6F&+53JG@#ScE@
P)VPe[i@TN3"QCFc14JFiDGTeilD2N`EGr`dJH[m2'(1AEbCqTM,j'PARQ,[H*Km
YI@L+!SV#C(VH!j)b4$e6+9J&3Q3X*#bd3HeM`'XiXqdkZ*JjLK!4UIib,eMRS#&
iSUNje0Y'DF#RrpjETK5RQll`IVISb5GaPXRiZ-E9b3HXeQBp%4(DQHC!qH%b3(4
kZCCTNSG%!3T!Gp$YeN$D[a#i6aI5Z0Fd-315Tl[J(M,3ZkF,`GFa@$af%6[2SV2
4QSB,e[Dj"hb09eNZ*VX4'BQR[!MJ[BFBfMEZTC1L8RF@+b!,*P6h`b'E*N[A+-5
EEh`r#R!k`G$+-%5lbdmTUeJT9-),)Z*r9KMaB3PmL$VM+d@[0'!Lfc&TBQDUklZ
I1VN)fa5l3#,Y2Ir,k(E5)1@FbhU##43BLH%Z'MDVZf(C#eUr*%qcG2TdGT)DQ#C
hqAI$AV5elA`Yd&F8X5MXlXca#cNfd84d'pKJ`GI2q&@Gb[NdN!#5K-fL6ipQV(3
3K5eCF%"4"&8(@hF-iVSdTLd8mIdmdBB'Te%4M`&-3%aa#bTYI$AS2FZ3!#H6!5m
j!UhLh(k+KP24h%9$[YTm8FKSb0Ti*KM,fUjHMYX)Vb+,#f&lZ,p%"L%RZ$C3B*2
CM#HiI062RSBR3+%6ReLhLNE`Kcr&DP5H)%j8(rC,#JT`AG@mJq93I'81B,BJk&q
%T2+ZA*X`dIl@"@R193GBGCVP[@P@KpdXVELj+82hSM&5-X4D'+0)6GQ,rLB914a
"h$M2Tqj5q#3pkr`d2,r#d$EHG`61ViN,`MGUY+f&D4F`MlXclY1,ip,lT--6IRe
pB#b+YU[QMj,X'dTJ"YAGiERYY&epR@CQ,UhhGI*d29JmSpbQ&4[GK5*-KF#%IE0
8VQ#MELjhB-K4'8Um88K`LB81C+EZQ#feEf1`M![0LEK1B4cYf`Xbc6"8N!$a6fZ
'rP46"P&k!1rB'+6&-`E#`VA%9(`69`4FhB&S,IU`KiEF-&2S#e8Y)&$T6m6*US&
QkN1rq-YJYRBeXZC)k,5e(EClC*!!CXiNNKbKjhCmc%Rd6mpj)3CJ&pY'a63KlGN
aRT,r53j#q4GQFkdc12'SJN!`l-UaZe2J-YpJq%'C%"Gh*,jQ(MUU"M%FU'C"d5R
e"jN3Dq#P-4!KaF3"VlFFedidmYpc23q!U%M5LR#SQAB*K6C*e9SBA0faPc&Q2fe
jeIM"V9Ik13jNl([aRV9[XCaQFl$a(fpM8Y'hdT5p)`-d%l+Y$MTm8'XUi&8k0$P
e)Kla1Ra31M58,r@ll4iTlhUS#C!!Pk1VJb'hVdi+4rYPH$YhYp4c`C!!E0eUchP
Q[C!!cmXY'f(Y4M!Pd3q[I-%3r*+eZ,QEI%'e3jkEdE2KI+VKcji`QjK"aEPjFc8
er*+eZ%(`aENEA!CZM`Ppbf*p)C5#6i9khE+cE%eBZADiPci2!(T9N`8A&+B$"$G
[AliRbE2FJCE#IX8l6hPKV5NjriJFhq&HV[qA&+dm%"$%hTI&-FQ%l(8$[3krADk
I3)J(-NlB3V-L0H6!8jMlVLeY[1c6Fk+HXZMR#lZRG!jIRX)RShNN62BAke2-dR"
EXk'&l@0+VSI*fiG8kHljk[,F#9eU@(krE&D9UM9l(dRUjL,d$d!NE2I%fL838[,
$SGYmZ@48#A#jb0#4cf`M`U'P(YZGVAfU0e9$qh"DHXqBqU`kc%RY2%K-[X8Qc16
3"h6rEh`&CHa2K$4B5+p$6A[Lm2+EjIbG",9VlN@N@19X)$(-!aCBNZMp-l2lUQ8
EhImQ6"I'Z%%,qR(C!VJ@!VAp)2[m*LI0K#QNPXArX)pBLbQ#[*VP)M*%YG$i+5#
r93AI+)aGq!ZeM3F)+f1I`K+M!XpJGj!!0Y(0L1#$hG",!YAH,r+rK@HZh3ZrTCR
JA&jIlJ1,45dLREe!dfmI1SiP9fpY-)b[0@kM![*VKIT##fp!cFVb3+p`42ErFG!
,MVE,Z3jdT[r-fhjBb-UT9e6,I3DcJZFZSc1Y$B1`*RJI0+jI")92rU+6Sk@dl4%
I)JqrJ652@ZM'B1@Cm4'8NpZpfiV2a60#!V[@EbYfm3&fJaqAk(DfN!!fA*2pH53
+3H0K[m+ZL@AJL)K,fVj[M4$+,DK6P)9eP0,8Mm)2RlbH`R+5kF,#XhM0`SCQQpq
HKB8kGlI2f`r!&&(S3(GGAq9QL'DjJ$BkU%2e(25R36%+,+I+N!$ccq!3SXpq@&6
LkkGpjATm@PE01D6kdXJdmb+hDFc#j-$pDCJA(HKqk%"pp1(-#Llql%k)V9D$2RM
l4SkZrT2b0h%p-VI'H06S0"!`"$r0T#$@b&@6Z"C94El-EerSc1@-Ake)EmUCMM#
Cc,SEZNLHI0QA&qa!%46I)EMRji,%PTa(fa&hKia4@PT,U5jFHRXmFR2-+P)$!Lb
kIG(F[&#K,pXdc(AEhC`qa!Y*[RfQ#plfIjBdhF$)k83Z)Y,l6kKS&eZHJ%,#r++
"lG++6Gi"8jHldA@VCXQiih$L,Z4Q+SQ,NMe60+aN)K(RI)8pejea-EZ1eb,N%[Y
fPj-2@9TmmI&Qb+YdfF(X1BLB+Hq[`YRN`+Km90YTapZNcbhN%i)ZP2hKai2b!6A
0b4@l&dcFQX"[kS-A'iChF'"B(QE3+e+VbLjT45)ecEcf)9aMdq!20h3'f`2BiSl
AHT!!I@&Udb6l(fif+-3X"YVJBdURaRJq)ZTS,FCi%)d('ak5rkdirjkYpY@[*&K
VmD6C&',3hc!$8I*iShm,6p8[[M6BEpd&b%3Fep)K5)Nh53LijbmI9(#J'##L+qK
&mFBQb`5(Dr#"FU+aAHq5+AHLH`i&R"63-U,Ycb!`j,F&H+bEmKSk4*q,G'@SrBP
PGb4FU$)!qJ[hi[hM"+mKC-MZ,cK$XAmh[XBV)IAhpB-H&"ZV+d(,Ph$hBQ$B-@)
4QGq6a1R51%&85YFm%&PQ2$M2'2I)(!-UhLP558f$H5(+C0$Aq![G-Eq0kAllEcQ
"[6$mT04'"X@$6&)9T#Q&Me!AX6-"#'*`*L(55jYFZb3401)%1AFkU#kAl*I#-95
52R"V@$5c4M5e%(!"+q64M4c6'Xqi`MhZLLFadA-3dA9,kU6NpQC#55Cc$0#&QlA
@i9L-C[09Hc'G9K!XdQKqk%,Q36%l(0JY2L2pSfTLHV"dKe&e*!2@2cpQM!&hcfE
6b6qpj)TY9!IeRRSi,AC*K50I@bh5hI3,R#&1-q)F%8`F5(8I!*Gi6E$NNj8lH4%
Sj%Rj90[3+89cDU0"6eCP(h$l!6BEqjLmf5RKC8!`k+,0,r%K[k9BJN$9fS'$[bR
kdA8Z98r69l-(J$3jS9kRChGi6BZ*,*!!dNFc6NJaH0fj*'TrlV"`5(PH%E@8'12
#XhSQU6T#Vl&`&mNXaS6)4)$6iSSI(6"kaBIjld!f$JJ0V9m($Nr")X3R)P3L9"R
dFb,D-JI1Nl&m!4Zf,kH*'p50@M8E'mqd*!ZiL0d*i0N0#m"`k5+&,[p)p)TCMA#
T&#hS%aXfD8XcqYS8qikQNRR*6G6ID#mq@!rE(f9YfG`8T@1EGf[X'6k61+`J-#8
fH#Sm9aQf*Nddrp(GE2HrHNP,,8"D@ZV2AVM9,*LIFK!NBEa%M,8&f+TY'*ie[lY
@LGeK[dM)G21+UEhEjEfCCG3@%8$j5#-(P*[Vl8(KhGIe5dT`G`MK[4J&AY$rimM
4DrL-T(P6EEip,-a6Lp*dNFD+Q(2d[@H6)%+04ARbjCR)A@Ea)T)MlGh4PFJk+&l
#T62UIC*'cmR&!4qd"%md5%+25HY@ccN`M3JP31k@!iiA'P4j%D9`hJ[I#HY,Q(#
8DC,F,dL3!1a-YfXl)E$3`15lj4V`j*S[Q$8RGhJS%pA!hCAq%,Vpf(q&UUBcZI-
Jp4I*9UcH2"L8#C19bV,el)-C6mbf"S4T5)AJIIVlR'P(AmK0JC(!""#LS&`6PTb
'!fKU++fBjp!ZqlK[lVb"[C0c1M5V0(M8TD%,5#G(GXeej``,MmP-8EhQ0Yel4)3
,H)9ZbpXI9#YqXS+')c8Jk"[&qUQR*&"5'0Cd%mUq88MqFa`"3YBY@jeT0m8&CZ)
LMK*5Tb&H6)fKbfc(-8jJ+1SP6(5M%d$5Z[5Ej*4G&k+ZY,h,',qiN3A29TTrCE2
dPQ#*`EMc$53mk'83drmP9BI+2r8k$LGKfbhhfm,h3AKAT1h239EG[)HN-#Se!98
PeqD)88YVE1K`FYMDSR0h2$(e0jV@c*Qqrk-ZK)T9Zb&m-X,qKpB@MYiK,IdqGhk
2De5BBG'2P[+1A2,V-p!QM8C1VfE(%1'+Vi90F&i6cb5CBir50ZeXUY-)MT(qX,l
G-YPkF*ZC5flCKkDe'M0J2KMf8f)S-ml&d38JXmbb&JX@%d-8`DI%N!$*V%b[MHM
a"$4P0ir5MeKM`YR2(#eqY%&d'i@)M3A@G&'qQ!2ILpVrCVQ3!#j4X[qPYf-%b)h
Z(1[AZfAb3XaNU%&0R#LC0&5Xm4f+9EaPdac#d"ca)Nj9hL%i9J"#cA'6iPV"*!L
6Xd4Pp&Iar`Ym"B4ijVmV6NT!Dj[1*q#RI$VqD%04Pdhl9DBbIPLJqk*`,p#mG(4
`[X*k0GNcMlJ5N!$5JD6XMeZ2j+c%qZ#Uh$,61D[amhH+U%qALC&QIAIc)00MN8$
ibei3N!$e05Q6(BB#0F[6V08LppY*H8q3!!'0#e'F["i)l4FI`f!K)$9Y5lcZm+E
S590-c%NiFA&`Na%`Tdm[FPMiL3&I6GSU[UM-+9E&lT)&jp&,A61aZR(*'VL,)`j
e5h8j!P0P-SHBD**)CLYY`cSXl$959CfJYq'9dYGUh@D`Q-%9,)pFGLY#SMJVCXj
PF+0DE2eQ6IC0'4#m08&e9"(!chTV9-kM@MBLP0r`DeH&RQV`%`JI!e&"Vq`2$fh
8D"lId-)N+'ep@&Bh,2hX$d&4,Uj"P[LhaeK6KENB`!jUrUaDJrS0bfm&UEhGX9L
b&N1lRc'T+AaQ(BpBTk(*T&6&f8N1bf$,epX*[8)pGmec0lZ&hZZHm3X5L9M(&DK
VT4kKa9IJ22I4e#%,Dd!SeN@CcFUeeYYLa3MUY!&B6"r*Lf3h`5&FX#"@3eBZMhA
2'8UmbJi+["(,E6J,0L&qc4iLb@H"ek4Kr,K)ARa`Q1q2T44rB!e,b-Sd8F'Y5"D
ZCTpkHqk&A99hrr("pVj'RcGZUI+3!'2UPlQhZhL,BXr4B1e91Sh28M'r@iTU1bT
i$X'D3"m`5D`3CMp0"$1"cD`e1FjfCB@EIh+r03%X%8mbi)9+LK@15*dbLr,Y3ae
pGr2q`V`Cj`KcR[F3i3p'kjG[5Zk(RcJ"#`iMcH%K8C*P0FLCX95IkJ*fd[rr50%
mE5AE9M9Sr",VF1T@,kXHDNqp0GU4U5&dC$%ijK6GDG`Hbrk2drBlQa559hA&@UP
0KU+40)1ee)ZC$V@'Ma`6'r*r#DSJriG&#Q25085LVAFd60hj"6,ZMb#Pl+QeaY5
,lmTidBR*J9iCqCfQ3VeMbqXAjN[6[k24XiP-06lNJZ,a#r$Y2@"hehd8!T@X91,
!Gre9DD0MT2R+PJ9Mk6))fkXUYe&9#$NT2LPDMRlJa&#6+)9*lkq[F)8-#`!a,%,
[eQhm'l[rP8cMCTr`!hZ@#Y*3B0!#9j6S0E,l3@BpDFNYY"UA!Jji6L`F80*jZeh
)9'&(b-$-RY*0l4"AF&3bUEM+ER`$N!"kM55"RMimbme8GYJc'2qcH84DP%I9JUl
N#c#d1m8d"Bf)PrFr8c-aRQ!6#cB%0+,PU%BXY5AMU-bI(0pHhmDGM-LAT4a!h@D
S[Db@j1P99-V93cQ50j!!41"i)9cM0#P@pjmEbjY3P"1F*QUm2FJq9351EkHiT$d
)*LZMIKXiS9M-#q9q@+Hijj6+Dc)j(I3"1`[bF2Uk+Z%KB1rAedJ$Ak0lalLrJFZ
)hdND@'@P#$DrQ(Sar(CD3cQY3ID'REJASCriZ#"VEiMi#*e-`M[2)Ir@2Gj4aDS
BaCK(N!#"Fbq@#'Eei*p*UB+RQ0eLKGG0ZEl5d,YkRC!!TRpq+eKBml8VjAEIZa1
MBjCPI$C&lJX#p)-%-G'*E%JGFDLXM'Fmk9U@MDNZaKK,b1akj$qq`K!JkE8&qA!
LR-L18--CbeK)a3DbXrkrZ[1,@8Ck$F1R*mYpFG`5!+kC9F[N#l@jVNTfrmhalNr
J4ba'1G*0K!d&-0U0eNYCqr%Y"&P)"GV1ETA+iS81JKUk,3eL+pH0keaLK2T)"3Z
Qc6djraPcUm'V3(0$GIaf%8XX&(F(h-bR)a2CHAL$RbH45Tq&Q*ZQQ)BT`SG`9hd
(8[j[cI+Uc+bYATMaUVrF(-6-l'c*cC5F*3mciI60B)j5Q#q12EFPATL+MP0,G-3
p859!r(4Kl"JBG(6Xd#jG)%X83CQfH#jd)0!8ACP,H%&dYY"3%L",&%%Al(K3G#$
3&"*``,bRBiX&%p5$a"J54,q#)A8$@5rYTK&J![,"%dSEhY%+fm&XI-9j'piq[lS
L)G3-+i**c3BL2Y3lG#'+5fXk5)rA@MKj'`3qfE3L)G6cU(rGGJ`'k3[&G&!9"a`
-5(b#1S-'H@`q&#qjCJ`'kGl)&KY()!XJ"L[RRj*j'`68C(`K,r-'JYjh[4[2e#a
!X"[H!F%E)MlccNak1J`'JY3YITCm5!EL)'pm4f9VmNJ'VfaDhhNEhMia*$hY5(R
AhP-A'm`qKlMa)G6TA&4km``VI!Yh5#)qe%,!q42#'fbT`N#-1fE#HBbECN"j1j[
#3)`lCX*jM*YQ3(NlQm*!M$YQ`RPRd(M#)YiN(-)'M#kR3"[R*eM#`)h01P4jVp$
#`QF%U"`L"Q@F`N#-eeTB'm"'p-*8MH)k`RPRA+M#)J56Dm,!"0&V)X#6dF)L"*0
V`X!%d@XL`*24`L)%Nf[#`#Xk`RRANNNL)"1rdRVIL3rRCL)Dh985GIJJiIGDc(b
PF@Cj3Z'`c8QS3H#qYJ1LiB&f)NI`d4ki0DM*%K"i&4EJb!fQBe'qcbN8I)m&X&D
2b43UHUUah2ZBN@!0L`lA@Yd&TPCim#(1!IX"K[2jcprj)#RE++YT*QA3+'"$,,6
"0G)U'h`A,H!YT1`(4B1HbJ(h,3!`Y"jEr2DLVCa(5dYJ5aIGVCb905H&f8I*`ea
RQFKPb0,f,R25K84#L&%B@LkF-Nb`C9%+%Q(C1+bPJN)aaPX#LK4V@pd&'D9!Eqf
ai5h)[ZVL*SUrIb3A95BJ4M9#KS-p!!XU,@#D&"+Ha+I"i41P-3iab1McG&'8Y26
DDH)dI0,F3R6jKDB(8cHdIP4B'J'SA%3Y%RC2AkJe0(IflNp%HL)c5iUEBrZTIGl
E9K4Vea96),PVE*Ydka+I8%T8ZLJ0J'-U8CB%-Yc3E6Pp"$$F!%H*"8*cKJ@XpUd
iFA4!AM0)qfIE[GSdh*HiTGP4b-`c[UT`!6TQED!#arbJ$[8J5q0(ALiQ18jFU[3
-A,kQpQ#kXrEH1#&-%`pP9rK")&1B8C`e-JpmKKLJD!qjM92GF@ENA'&)TT(QCQE
0XDTThGCKi*GHUpT%G5AJ[UE60E#ZIaSFKIq[JMfR)J+Y`&1@ZS-Tj2BM-Bi$U#$
dYbEBi$IRSK8Lk0&eRI6!MFd42I$BkbPCK82#`J0XJQ4TNN`r*bK"NL%+[K-i(qc
RcXYUH%`8B,rl,#,QEU@L'Xp*F`FJ2MRc4mJ%EJ*pp&hFbcZFI%QpS2EfTGQUfQj
PlZ5pi9`58N6341r2mj4@h2`TYR9)h#kSb5B'f0QrI`QLfIpmLqb553G,,$ENQiE
Rl&dMb'F@`4J4hlQDj!SkSrNN-kmQqM!@XbSjNJh)AK*jNRVNS!rac!5RR3i16`#
FKdFlq-A[MSq`"eN)-3('[fE&4h8`XePA3PS,G6$VL8F1*i9#HU#$f*XVCUeRPSI
"4"phTq!h!ipFT@"D1Y5@M,m19LN2U48fm"A18mCHKMMprGNYF-$2d1f8PBZZ-M#
R9Gi$1Xb8!Yd-!l4`53RB`6L@HE2rKI(JHPFmXq%kCR,FpN6rY&iI[4@Qj50q#kP
eYjBbfBSTc8*9*ki#X-RK&ZVJ,YMMa@I%5&%$NUk&!Yi42Gp#RHV`TmfK4Hb*-D-
C0124Z4`V*de9)3259Aq$(Yh)#rY*$%S1E$+mNBZ[p&c41aXDLmSq9D6`jHXSh*P
363m&HTac&K3'Z%Cc!r`G9[E!AX$PS%YR9FG)[C!!iIDG##Bj!i9a50c*rc4-pL1
da',Nq1!4e0crU%Ld&G)Ym'0*`a+NNYMGHGa9!,*frhcV1!B(e[qrT%)(a9()UAj
*#4(XS2RAH,M'V!45"e'clrGK'c1YJrNNM"N*jGf5f*ajVZ*[rhh0GK'Ilb%H%FK
)(,#3!(Q55#8MEm@bY"k'T60THlpUZXMmVh$D&cD[VaK@[8'$2`TX4Jap,PD6hV#
)"mf#4!1ipRNMri"%'D2!"bId+F!Y2cK4r6@XU%kb[5p8#CRl6ZFVIlRqKCj3XF!
$XcXP9DNchar@1))DIbJr%E4IJ,e+!Z(UqmqZJ`qU&*RbPR0aRP+Z15!R&I1p"mb
+`!)Er4jrD,+Z9TR&IF5I[I1#Q,#c*0H[9Z4af[SR4dZd'[pfAKEpfZ0kARAG*ed
$e!YF*PE'Q3[BIDL'!Y#P9KrGSRF$jUZVVrrV003#rSa3V,eR"%XBEL9&$2$M-bH
@+,YHrV['!U(1-1T"L%UPAdl6jlAra0Dl9LDjPqNhViqDVXAN9XDK#PH&AlCb-2l
pL6qL$LL0[3QhJVHl-H%0L3CAL1$-RK+*+'CC["f*R5rI`lE&R0C9%Ck)DS3)r'*
68F58lY@)[D212CS!E0m"fDQjVC6k!JM$$$%HP9-qb(pAATEGVCD4rQY)3PFJVem
b1BhIEH2I&3%AZGPc&d)9b6-2!8IB*Jl3L)SBq`EfZ4l*A,m!pmb-DBIISQ-1Jl#
dRJX@6XAFhM'@,S+CKAqNmm#5k[mNr+3*9L`1GIENV6XJV0ZAT3jR)5"aCMHRV!4
4[F8`jBS'*5!`)fEpfBQ`j`$V!0p8p'H+8"8K,(dHjcrQ-PiB18fbcGKRGSjaJ)e
SMqm,PebLl!LV#lmpV0LQ'"[[*'%G#Fd$ehh(hRG8E&j)L2U*hk$%f19`-cNTpeF
FK[h@Xl9NPP+IPNZcp%MIN8[jD@E1[,#)k+JEb#dL66(%%mKdM[%&$6!db$%JeLP
fDbP6i-AZ,iKQ*E0dJRG!VabfL!Hf3LfTPC6iSJJGb@LNe%US%iM03H(@8EP5V4B
5afAPrra%rml53jJP)BJ52#kd0+,&"A+'k'DP49RMFe&Mda,Sc5*&F6E1k%+I%MG
@MkSC'%q,2SY+2f3qd3!j4h2IG9*J"2(pcdef%Pl[13,jr9lI0VM9J4F`-$i[b`D
P#"0YPYc!c0UEAApFi`3b#K*2ZJjkT"MUZ--'8-r['k+@KH![NY1$AZ@0cZ(L'84
($5!*T%eV(2r6aa!kSDaIp4F$Nh5DEC!!1CY8+P`Z-9&VTNBJ[haFq+A"[6pmGTP
-Zlph!LVbcip[lM@k5)rj`qheh4TMUMaa15BQD0!EmVD0M[Z@KRLQ4qaUmHr%Gc&
T&`(S14p&CRM&m&",3,5VY)@!3H"8MYGf)%D"RQY%%hap-5d`@XmDFji4-&m4PQC
X+V&2P63f-,V)fdmr'2)08dB"f&IrScU9S"qi)STSJmpHaS3CJ)aLB(2)GQAJZd`
Q)9T5!c"'%kB((XdUJU(N4P'@(%eUb%X6j1ZR-&SFkK`hHb`VT-*0&TP[p`!0-$p
NHLSQ2EN26HN+G&%D0EQ1PYbI4S4,Af0@l6"!'1-D2hc5e%D[GfcBq%hh%68!#pQ
&mQT"KrV#&LFZ2d+h"IeraI8GdJ9bMRqMK!6NCfTQ&D&Mb4K3hRXCT&3PrX$LT$N
ZT"b-@UXS'9e4H$U)bYmQe@c*YAI)ZZ3d#!m&$`mjhTeA+LPqU'BaV3N9)0%LJ%m
Pl@Y)ZqmBmXlqNDP@V&$a,NURcfL@m4YhQ99*Z(HX`K3KDr)Z"6`E`SJ'JSFF&(P
P3!AalMb&@'[i!F,AQ*BrRCA2m!L53)ie0e4JZ'b6p-*%IJ,UG,Ah*AIj1V*QG!-
$4#9BB'iPbZ[4A65h%UZBTAaGifY&5hVD$9e9D#rbrNUAIVRrVM$mV!cqUZ+p@"I
ZUhCLaem%I%""0qEi$hYBMPMSK@Z`[(b8(cGGpbCZ3(aQG"CpE%Ebdra530(Nidp
4hqaQmA6MaE15($6p#Tr23&6LQ`RhcldhmN`,)CFh@p@"Iheqim0GC)0m%&Uk%%2
GR1Y48k,SSlSmjA$P!0[Nr(-112k2i(G9Jh$eHV5HmN,Rj$iTX4i,IA#)+cH`IXK
Dia!Sla"BC3C'-r)K2QIV9&VlQSaB%cImFEm60KYBpE[C05$#$cBST5TIpLb--8"
p()P8jAUp2,%h313UM2CBq&2QI0flrdd2,GLc#(bp(#d3l`06j'BT(k(G(ie!j8"
,5E4G%"h`(",Ge&DU92``VNF3R"pkS4cPmY6b,F+6%AbB-S(MrclYDc(ShkV)r9(
ie8E#jd%kdV8HP4$l'$XJGJ-Q&Xl&GDj5b"HRZAeDG8JBQd$#HqZF3h0dZmG25Ye
mhFHT&5(,S3(mHKG1DbecNJVrB-V,J(d5K(0e`dq-k*h##b0'M(5,!dU+fhh6P!"
pF)bSFP0+3,L3!-hR40X#+#,@#9MFX'@HmRbD0eJ$`crbhRF)kXq)F1pVfe&BVL'
6B8C@$,ehpP4!2hU*3'+ka10p%U0PZfDTiFG,Za!M+&A[G5qKKeK"Jr#%Z4H@T$3
9%VIVGea"m`K5q1*h,4$#*3jLQ$JhF1cS#6d$#`2*6Q[B&f#H9%5ND@EFKf*BePR
*TmXF@bM*0"HMcGTV6$b5`RBT#8X$`J0G%dm$5[*5Mf8Y09ABi&j'm4#YY'B5PeU
lb`19q*FAlH5c3fTmjRV#CL,efL3#dbrbl5RVlDPm$q'a%p'kcq`)h`hS#dB048p
k&'Q3!*ErVAQd*+JFe[h*TE-4Y#&5$aRYl5$@-XR,e&MR9FCe+19[-8SS1X&eDr1
-`Ydd9)3kCLq8e"-F9-qFp69H@1RC9YpjMBCck[DPr(q1Fb$crlS31*rS30DU+K"
kmhaLG4Me&p!J8jI+l(FA(9VS@#)A)9SL65qQ0LPY%(hXSaS$4eJc6&,#M6MbL#+
UCM'l0%Q1L0%XCSSK0$AiNr@2hCj*bh9*Crb,JI+@M&4D*Hc$&&V1Th9[FchXG1V
k(,33k!4[fik&frj!%K`c9!f'aDKMG1V8(1K%&ULiF16p$Vj*#eMmI1K82R2XY'X
ip'b`2phDTBAlLl$#!`QiX"bcrc*"'),+KVC)VaYa&BE`F,@1M@@`32-ajJ`,Nba
J6G1V"bcpUpm1m&%jSkh[,ARAaMZ`mTC"EVCM902T&(C'd(r8#iFdLAq$#d!-'Ch
kZbUPG[CQq!112Tff)4l`5RHPJ(@(Sqk'`L3TXhp#"d"bf"&C1h!Hh''f4aAqZ9%
,VfGTBA$@qCqHaBTRTf&dlrQj0%!5dbR0'fISeK",rfFC!MSKeQe,F#IHGN6&Jm6
Ir[Zr3!05RK#m@@p!PDE'm''md@i8#[r36+[rIkC4@@K*02SZ+J%L@m3BJ3)3Zd0
riClb9$[G--UpmUYr(!"8UT@Q0""lT'&pXj4kT&K5pH,EU8XK2JJC!QCN'l%8U09
&)U3K3b(-GaZ%(*4`(FLdLNPpCYe8@-IH!'KcLYYpFZaXi%"Bj1S8+2J[33*c)*i
#,Cjd0#RKGSah(b'U#MY4F("!i`TIH0BFkJ"6C8ZL#`A5EEXhJ5drD`N@"P0IGrU
3!"E9b"5Vk`'L'+iU@ZE5#N!SE8p,3-Xl`S2PGNFLAm[Qk+Tck(HJC%SF'%RYP#+
D+H`P!Ic$EC*[-@[eGpP[S'[U0U8HB$J$J(5GDf4I[kepd@bFQASfmP)XRTB6riV
93JYQ#SJ+b(`F`0SfJ5ZcfF5R0R$,VPST-Af4[U@lrfp8X6&lUNSdXb,Kc%*,JDD
ak9U)8'pVe1'`cj,rNG'ICS&XZe1cPl("@LYr-&S32-*$MpR,MN'1!aD"I-DkP"a
e'9JQrrE3d1%F)"Aq''-PpQ&k@,U0'F&"jNTC(#pA#j(Gm'GC[PMZ0K[bq%bYi9R
*R(ek*9L$M@3Arpa!i(h#l0LGEl5Z%ij%1[aM@EX3aLq8eiI)3m5R[LTa$CpimDj
*U'XdX4Y(BQ32Acl#@KX43bPi$2+a(29aPfZaGl-d4k9V(Y,k)P+Q`IUR-E09e+8
ABj1BZ6'!9cYIF0m2Lb&8EVG(Gi1aSSSdXpV1M[+)*#QR"K8mG'G4d*2#qM)G0''
YBFRkm2rraNP$@'YU@*PMNe`3dZCNC-&cIC,'-VI8AP5@(d!PCa[MJHV1ZI*cJi'
,eU*fGTHXrNGKGCdd++HPGI5YrAikS"G@%$Y"J"%68@MkIQj"SM5q80N,GN`*Kam
FB!h+2jqVU(Gh`a#aF*QKqqQXJUTKRpjQ`M3$b[QV("fP#phhFkTAR1e9NFZX2+-
LIUeU8-mBGc,rq58[jXA&eQ2l5DH[STd,eNN9GA1e3emYl6+c*&C!1c&rbJkVJHe
LDqCD0U0$Kb+*8'Cf3I5ZaDI,ch8SBCdkhlA#'E02+#'RS&0@#r2!Rd9`iGhQ9(D
8KIXCl3pc$[&%`UlrLm*BpXEY)Z%5GGXfV&Ci2CJj9YXpV$PifjLX9RJpQ$P@fcf
X`X@6116,#+-)B3Jq%%T*0XdQC@QPR*p(32)bpq4VM32Ai2Nk)XMmr$V[rmLIq[,
p`I&fjEjcEV2Kq0'9jCQXGR2eKH*8LjTK[!T5ETI4p%"Q#%aIqM4c1Vl2Th0iY$T
ZN8R)KJ5(PQ)85aTVHPe!pqr*m@QG0QX1h1mkQSL0IS%(blBXbZhFJd"9%(dUlh!
dl8$VNLXkG0r"%+4Vq"'PeL!,B4fTQU(eZ#k&'*V4&URpUB1Tq'SpS@Di#+Pq%NR
Gm3Z$(-GFA"4LYCKBVi8kk-)NhZLA),1c,B(6p%%TI3HN)$DViSB`CHEpPfDYi1c
Dr$4'3(iFMbbVpY&%%jQTJ)pp3DTFhN(pjiBDPi6(3PZ9ZRJ,d5Ahd!Z-PbVNSAp
%CFT1,)'(j0U3!&!QrAFA0lTY%-0DV'h@PS@&D*8aG@SUDF1LhXP-e@B&IMh`GQT
4apXJfB-klJGd@N(mk03*)b6m(VeF5p$6DE-F0!"pdB2DP@fUA$&&k"fH!Ef!Zm2
+fCG)`[2p-(GrleX+dqLUK5CU4Lbe+YSfZ-5lkXGaPISUKRM2i6MaI1A-r9Ek+Qc
pU)B3kbU$U1LMQ5@PG&ppN!#$pMaS-rJPA'E6qZ%$R9&JD(mU4X@)6A)%8e9h$RH
r-bQ(05BMr#0ZdPS6XiFS6Ij3*2fG3El(Z9ZkJ[&b5(-iHM-&@PUiKrDX[6IPEAe
aN!"iUF2#@h44j$hThpXc$e4dQQGAIQ-5lB`0EmiGrFeaLlRPmk!EXNT[F@&bFZ-
-HrJE$UHmeq*FM,9m+!35+M@[L+hQkB(@+YeFAZi"eqLmejFDK#Q)pi%`4ZD[fc"
h@(-$b6EdH6GBF(VrLYerV6Td$ha6ZfP64N4maQpfrN"`V8V2%hRDD+&ehbBaU+-
(9Er5Z`p8fP3QV6K*LKVN`Kcr9-+R(1L!G(SL4#FG-6e""a+$G#'APVM(EqB,hcG
8PrF!`R##G2m(K[Hj2RI'lRlY@([h(-bRD94hTJP"hd'UICJhNk(Taf[+mNh2iXp
Vj%fC@03jQRUUcehN-cG2VMLA@!edcp!dHR9`Q8qZrFF,Hi1DDmT`ZP6Kj"9ec8l
@[%Pp8CNFe(Me`P,j,P66f+Ufpdf&ekqD9&qQNq48IFhmP-CpjR9SQDHZk-GV!A`
dPAfUG8UClp64&!`UHhM0MXqj2dZNB4SZU*D!j$F#(+L'ci-Fq`P2%-cp0akClCQ
X&Y9B@[bB&-FbRlHIH!JTi%dX-6I"S&A1"NVr`UbM,SUIdL%d`C!!QJIhr,,bH+I
5r5EjTN3T#-A#JJ0cCc$D@$M$lF-BHfDAm+U(6UQ$1D5IYL(rQGU5D(M1qm@e,3V
r9ZdD4iHjp1Zh%GJK'rK(HEkHG"aBpHKH"Gr!5DDmP35X%NG5MkH2HAceh4d4,Xr
A)-d(lR2G%5,mMP#UTcTddF!jSABE@U1N9k95"I$l&9(0'(SI3[&&G2'jTq6!L,Q
lUSIIMA54aZJ2')B$DRLpcj6#fMD4FhlG)'rJkr(rcdX$b#62b$I4Z96ek8(YS)j
4*Se`k0Q1HaMU@XhFa5@JKX`dT@$GN9AB!U2)"Z$SP)AiGdNdhe1RTcSl)#lNAA@
%0aNDFkM(%CFhjSNN&4D@pIaRHrT@ab[)0c(f5V%)-b0X1M2+`K5$'[#(C+'GN!#
P$a45RC!!4Jr[2Nf"D%"!&%Pi&#h0#eSpQHLK-CP[Ha2$R9+GQDM0d%jI%JGdbE6
id!fYTGSU"h@9r0,[+%3aGlGSfV9-UG5lPmdecdT"fk2ZBX&dq3CG+E0%4LE&2XN
Tjp5S0CM#`Hp9Kf"iGD#fQbN8f*@M48jajGT5V)Z4rDc6G-I2V3q!UM)Z`Zc,##L
K+CR8Dbram#H+SBG)HC1#cl&jiCDR%%aAV)A`ICqDfrdTSE3BK"3NZqQG0H3DS*D
Y[lCHE*)Slkf3!0[RV3$ri,C9m-A2Dp4H-,B+*T!!*``[UZ"jel,pqBiL9)h@RFC
8$A8J3-Se2[)2SJe)PkKfTh&phUIMG*[%a-#U1E%FC@Y8bC!!1[pjS)V#LHia@,0
!r49CI#+eBD03QhIE-RU9&3S[-8`ScaHA9$hBKED+,"22kq1KlFrpq0"De#cc3QN
%I#K`qG6EQq#"U,JId'[8ffPBLGGQleI*,-,CPa"p`IP,@)QM(M2G#kD@`H569TY
rDK[U#,9hVMLYa8$+V&LrBhQG*jlM3*lJ!fbX695kKGE4G3'bleD90SUR%$@rb["
FZ@8rj6I)G@6mq2EIpa%3NETHCD15-R&J@Vpaqr"`-Y*f2QV`'!+2-e!ie$-e2CM
8S8rLfd"R8He0-hFJ3-SQ&RDXKrdp0SZ53'QhbiQieX(jS$'11A(#KKcNLlCklqM
4#%)kG0pQTkR'55e5dXrIq0#%GBSU8*[Pi3968fIIc2@3!+%&3Q9!,FME,E,"A-*
#LJG*4`Hkk`Z8NC9iqa@R5"$*)CAN'ED[l`FZ9Nc0"P0Jl**q@[YM89kPmiZ8k0E
XGDJ[R2!R)0KPD`me4dBYpX'$iNCTb!@MUU&T+@ENd5BYN44Di(114Me18bIX2fP
094*-88Q`KjAS6qaM&2P1KdI0ZUeB`JI+I1L+QEK'e%l`I'#Irh&mm&68+&UG9%"
rCr&,`RVL@Kk(33[hCPJi-m)'`S"S5jr"*GPm85A$eRDrp24QZDRSbK2&$ram8i2
C%*blPT!!eK5R*+!5IFfIj%m'Ii"89!Db#DpkHV*8AI&CG40PULG8IDcLi9Kk-G`
FC`R*@$F'rAmEhj0VHj&5`P5h4'"hS)2+9U!)&*9ha@8ha8E)'-Q2#8"K#,j8Q)i
KeaXGeS0*9&Cr43%N3%LK["bX!$!"EYaTq1a6M,j(T+"T"Jp3YZe5-K[&3#fSQX+
($cL&G+,02hq-LcI(VbFf1Gedi#*0XNS1Ga+*Pbj!,Z#bhLMi+-fM[$Ypi$8,FB3
PB,'jf00XY(BMA9J[*l0Z$mr!c9E9Xc4jKHelEd'6V%%qd4+L2P5RLl!3b-T9KZL
HpC!!T`q(V%'Ji+hr`LVp''0Q,-haj)@PRbjTa@31VD!18FU8Q44BePI8$P'C%e&
AD`kHJ)Zd(BXHQ14%aDHl!Z)R-Rq-hiib6AZ2GeLAZ`b$-p)#Di$DM+@qk!*8RS'
c53@4`M'86rlp5Sd5&DaG`M&(0+T-AFe84Uk#Z'6qB3J)lZV0YkQb&*Bfd'`e"kh
VAq14,`C8%-X,!PKS"I`2qhb+E)U(pX9(qki[4KZ(Z8emCe3S$j'mPiRbm0Ma`X(
e@T%$'8Z`*jU0!hA2V1!KELjl(5c-(1NdQKblRZpV"CcmH86De1dXqXAXlUBSHB8
GCVhraLQJ)JLI8U604@#'$imD!*fhh39e*h2)hjM**+dcV,Q1BACqaC!!ZGIFie(
J"rj-HdcH6[R!SHqfZA0RHpJR`Q[9MDj9r"HK')9kYSk2c5li4S8&(fj6K[%2pi#
[C9'b2rRhcPMl4RC[XYkQFi4mDmaYSPf*,@$mHIh@MA`$FJlYYJf-ZlG!F9Kl!Tk
BZ56XdiFm0G)'9KQPpbY`@#CM'#aaVm282#Ic2%,ce*F*R#GNZ$5JkXhhlq(rH([
RqM$q1&c3`5BZce&aUaTQ9VmZ&iQ%6@QYZ&J$YjZc8p8Z2B5ZbNQMAic,6F%4RFp
3DM'RHDrr96aU*"LYZ2dd0"XTF1&AV4p6UXe5B%pTlZD-L)'5#$CRM-E8kmQlUMV
kirMLfTR3M1%YA[al18i-Y4,C6q(0%1CiX'G(`Ql#kr6(ILqR90&A@Mm2bicjHCY
YmUrYJMr&`*BM'QYQF#c0&lhTB)EFLSfd$l3d[VIpIcXAm1eGMa`(G'F(hSLH+!a
f$8M`+-**YD3SFEX%"aAJUka#N!!LM(81iKD--MH-6A#00HPUM-)ea@MaM38eiM6
a,lq,f$dI`JXbG(RJ[!lm0+$4-6PJH9DmHI@mB&!jk3C%LkM6"kT!`K4m'Fk9X2'
!EH&jRq@0GB'J',U"A-a6VVhIpLf!b[GB6Jl""MX0e+U151IKANfD[0BQ4T@9LC@
ZL8DZP6Y8081Sdel1pNP(mTpa6p0M4dKBiGGGM"B6`Nhr#'TaDS65p6,(&G0c2m)
1+F2p[)DM"Q3L#"r(Z-6q+@Na*H'kqZcGfraiQ@Y5,ldIdmKd)C[FFTA5+NfHCV1
HlXqY5bN8pU0&j%8Uc+14Qp1mD"r)SC1mII`GLL(qm"qDj,3$R$Dc%*dUi3+Z0&)
TT,A"b05%K@[pNHP"Rm1LF1NimV`Zl@`RAq#k0E#4!I!jcR6d*8ql`d2G8i2AC[N
#mYZ3!1c@JEAE*PiA8QN!hTpL0ZXaTk1HCUbJ1qB`0aiD*Sfd2iZ[b#'kR0U(p6S
UF#6,LA(EPkrhiU`ff%klN!#*CT`IL,ZiL8l'hDpdk-a3$h8hUKVYK+TF,b[,Mei
M)*6I9SlK6e&2[blE1%4l19(N+4!0%EX#,iA2Hi9!Z'JMIljq@PX$I)90(faXq,V
""Bka0&!UMAI0i#*JABhA*R,Lm+9%"2H*r6J1#5V06C@Z0aB2+de$dKdkC64Eck6
Y4SVG-9`d-XI2Pqf#Fk4U)Q)JU'ZSfk8ddI'kUqNcA'Cf3)G8H$6#N!#e`@,bQeM
#3,[!L4&(ZADBk&KhD)Tf+19jP4ZL'N3f"cTEfYrZ#YXcle06Zc!F`k(dZmp+%+L
0A"S-IPT30ma0[(klTS6dDElL1UbC'`b-mhFl"*b8B*j5VM(eRr4m4R5+&Ve8Dd%
1Zef%GP`-iUFpq$e,LcM6NHPm8eNU5m[meaTTINN!LbTBH&Pj,iQC*R$TEMq26+c
*$86EKd&BZfb%)C*H*,YmK&J61PrGi!heb&G`h%5IL6*TKT2E'HN*!+LL#kB!-,[
eBMBa4Q,)*JdVGP`ANaVrS"@BKCNb`IPp[5DP+m[d-1&dY+X"*V!VDff"qV[Z5Na
QAVSF2cR"HTkcGKUQQ(G3lbhdCT4`-l15'JQBl51V)&cC1eTP5eNaV!$#"a(p4,'
"EbED+jJrI'5XaBDp-9r2NRGhUeKF-6YQ6!"!EI#aJrr`"IjH#M)QYXE#fK%5%'8
+5#C`aYZSYY`h85YBZD,pdab3!-*2$RI!j`"HPbEb*Kh'-cQK'+ZBT6-abK!IPCk
XEjJq6SqrEUCVEl8"F'F81j8RYiD5#hE`k,2GA$UHI#eD8I(qC+'6rp8dIjZY!AY
QblpQVH6)rVmKC*j,*acNdJ,h)8!f-1Ql8J"mA1%lkdeLN!$'*N-[&bEK'M-m)+K
TSQP0Va1#feTQJe-,8pSNZdL"4(iMkH54,q4dHS@$mRN-TL2r202#De-TmK-UMQ"
[G,$*b5R-,RB8b3@r)LhGaA2,jQ92hEqd844P[5*2b909rr-YKa*"[G%[cplEPXP
,+(6(bf9UeKSaL#LadGE,&@5UA'6X)&lH##2BYKb62%#R#@pl%j&pPbBDLc%mC-1
UPR,3N!"*fmh@)@QX!a4j!9,$%@#I9BF6PN*i2!NQIiUH3'0mA[qm9-*%%i8Lk#b
GhD8TXkIIVHkP-*j+BfDFcGZ93(#16PJr&&6)HZ1rXkH%`K*%R5R2a!1f#9QMM%T
Hm3rbrKaPLC*PC5DHlq9P+Z6l2QlVP#8B!J8MF-Ki*+l)H,Dcb%3E5KpcjcD(2eF
`Tf5DdPddbi'mFPGf`@-kd&PYM`H(`+F9EY&l,Sb"kcZVMmAE',0dB,A-CSc[5mJ
BN!!dE-k5EP6e`ejYJcEaS13G#+6#f-c!@#4-eb*NYCpQb19BB8`08B0ZfJV,jF%
aeKjZN5mdh'&[aN$`1RDkaBFdQEDQ*#%e3(MMp*YP0%C!4$'HZAD3!$@8I2@`GP&
pRSPhii84ZKG516cZ0(bRCA4K%,`UQDd"k1+DJjN$b)85Xf$"eA3Ca(Erda"Vqhe
cK6+IHS[r&448SpX[GV3l)@b&fa1PE`GD-F3(1a$%qdTc&b5hMX5jMUhGd!56)P&
q!BAVe)94KTqSV#(`ch-j(i&$8b#215-FZ$eHY+5LF4ZaTf!RTmKE[bY@d+aqNc(
-daXPqd4[*IY5E`GJE`PKIPUSaMP`h(h-h*MMP%MEZ*4VBA4D)RiE-3VINJZ$[aZ
Sd-Xmq!DmVL)9Um8q(NA!'+[0d0@1bjF![QD%fmL'%aVF"Vk"FlYj11daCECSrDZ
N)k9Ekq2S[I$pCHjSNilD9Ua'5eUjr5ekZ+@hH9$4Fl0`m#jP!QMlR1i1CT0SNrf
lc+`JL,$RD6*Y4h'fJI+&i'@,ccK&GcD$GDimJfFY5P&ibkaND@+qhe0EXKL3!'k
8Y*!!VT5dC8TC4+99@AB4q0AhJ8pN-qcPb4b1!GHBPfR2'ljXp4$NdLP,I'felYF
rQj!!V#GkaUT6h&JB6b!pr16(XqpP09QND6NCGf1a`-@Yca2r$qdm*M5fh5&a(mS
(B,GJVkeKi3"GK@l,(j`92mVjTk''NcT"mX@BN[32S#BB*3QbNrF2265&+UAT2`Y
rTY&Q!@JYR!BraiH6APH%dqe62-YJ1$bdB0690K#VF0$",$S"*TTTRb&+-b&!N!#
eE0AI"FVV`P4'pV%k*Gp$-FmD%3'@`5Fk!L&m!f$"[LmQ+NYM,j!!h*%IB*p6bm+
q-h1lRk8[EqdN*CqPRPR#HT%q554d@R2K0&KPm!S3R(Rd%*`Vp(12NeTdEf(h3,8
J)["pk2`P''6,H[5GbfLFf`j+EpVN6UA!MX[-#lk2HXPb0)`U1d%3Ge#KpmKpb@$
@S58Yr$BTNQGUM-[CB+*cdQDY0!Xi3S3N8%b'*)G-KY)(S*!!DIYfTCCMCZN+Aa`
&8KbS%4lY6IZ4A0e6k&T@A&`i8k3MF%E*$2rdCC9'`F[XEF4`MKJY`"!Y$Ul,f'd
8Mbk9)!dY1+@K2`PSfMkPp1"mN!$h,GYTk&0d%b9mTEMJNh66A++dKF6jG3XPmYB
ZVEJ)bp6H%0fhmE$Z!5L1AiaUGC2(-LQE-S+SH+GXfFc#0+"KBmQf9A",LpN"De"
bqm+6r)H-!re4$UM&T`($m5A1Xk9,l*fjLME,jEFfT[1h0lL'h%M*UR6JLhTm#Ha
QmU*5Uk6$Z-Bm&L+*S!bjF,IQf%#h5B0$h14B&)p%h(G-H-,Yp-H2p*r#V"(-%aJ
ZJ(UG9RZZG+F`fh@AI(D6f4-Xc+#`p(4lmA5LFRVFSPdF,*2m0[r1S*+6V"EDN!$
d$)JP03&[R0R'mQ9qCPbJmE#&RRQaN!"3G'0FL$P'#q%&m6+F4[d,B*R'0@9'mK%
&L#9'I6,Lqqq&GXCFC4mH3h4&`UYIKi8!"!,ZX)(Dk&mNr8RFraV8RU,8)(L)34V
$Da2jSiAH'lkh1HXN!)L@'QQGL%E'aM"mb-EmKmM06N+HGcJrSUG#c11"RjbBPmE
V!'#Fj2CKCNQX8Um8AiMNSN5H"rD)Nk+)aD)(aC-QlM6UIS8jS-DUp!*`c$Ub@+5
A34!24S",9c,Gkc5l5cR8fmK`B%Z)ic3Qd'"0L(!N-IedGQPh%lXMTI(dCYrG-@E
p'R4J[kKdlZThT8(dDhc!dHh29I15$[ZL2d3J998JTCRdeN%,qDqea'DlU85"q#`
cEK"+'5a,JIJX0Mm,23bha%+A'!R"'j[ij)j3KRF$lUSHTljB(F$BNBGDeJCUc9"
Qi*+Qi)#QRhAZ`)Z-p+cGU@c!kRKB'T4j-e#3!,V1)-c'4jY0!aYZbTXQk&kYbZf
`11Tj*5Rj5b4D[RNcT(cE*D1QdY[d#,VlT1(!)*("f[q$eh$+CfEl@"qLQ43FrPk
E(cLS2jBS$D['YDb-LB(2Jd#ECbA*@UH[N`EP-rPm6q6NMLKCUjC%M2`ib19j-jX
U%S(*&(58eb"i9301UKEXHP6I&j!!@#l'6YT"6,"T["!ShjdN[2deD(4,3BhS&pN
c(-Kj[Xcar6LP9L90D1Amq4@(+9-f3(p@JAhNfMJY2!NcR6A8*T!!chFYe#bR18N
%MN)AJ2XbIAMkTij!R0RrdFdf6`J"9SQU89#$4,Q,fH)[26ajaMe8,CYY@q!+,%R
K,#IA#J[E!K#PYhc`&2ZITI3@YRb@G,Z"YR%L%,Zi[Ch30*f9"aK*IqIrLX)DS$f
pF(C&1!T199UD,cUL&[+X4p[h6)E@[-Y5U#`Fh1((bFrA`0LU@fC5@$@)LAPF&Pi
@pBTZ6Mhj[X02$(QE5'UUef9$CiUE6l4jGZ21Qi%KGQGjQe[GqA3k'5ipl-SAqpJ
paZXjb%iYeSF-[TX"TPRcJ5KDNZISAKTRT$QclUSeQa[2rZ-J4cfJ,5ddCKXDChV
QeXX4FC'ATL%iUMQUH9qd+9mjLRNDY,UY%,Ch(6*m(DeUc,8bc(XbDTT!J4bdkij
)eGZi)2c4%ebJ(TH*flR[L1Kj1aHQra-'2#MI1Z@C-mASH9NA-jhSHFiAZE$XZB!
QcmqeYjcSh1ickBTjB"Ib!Fb!c@D(6YfZZ2hV,8LNMVL,f$PjB!fcC!dpC'!jHIN
0B*qZbckYTFacQQI#!%cYT$J0K&$lZAc8i#e&q#mj%)N4J-l,Pm5P)Q!m%Hrm%pG
J1AN2qJD'i42p,Ra)Vii)HLj"@$L,8J`cRr*U&,Td6[3`eJM"CZ%pJ%LIMVJ#l)2
GF++i`&@1Yf2FKaBLfcdQc"(8qFZ4!0m(h'V330f@rp`BCkLIr-+1R6U6&!CX`DK
4Kdi#J2Jd5BX[r*Rba+hbNEKrd$H!Dr`8eb`b#,U)YZ)Nm%aGF!c85,q6HAc+6K"
jV5r+bjRF$GZ44d!-3h-'PE$ce`i2UA6cpfE!-FJ@LEZqDZe)&pY33RF'jFZ([qe
)$GZb,#cfV5r+RK"jL5q(f8-L8JAN82SJ[RRFbNrl58!66lG*Flm,&lR&RJYZ2[B
m'q$A+b6r2$Z%+d2hVPRiF@f6Lqc0X"k6LQ4Y1#qM8IL,YYp@$`,fC[LhXAiJU`r
V)QEG`(Fk"h5j18!"G`J3*EK`2DHXa@EETmcYc*`(K0V"1f1M6DJBDYhVjVL&iD8
1[Aii,0d1*`2X65p8dV08l'#EYXQ$!D"*CEEDPmINR0R%qk*4p&d8#TBRYp%4!eL
`YU$"*S8jX[cDEam)"EC0X3MS[KfG&DZmbJ`Kc3c$Qf(NfKA(*QfrAT8Y![1&9Kc
G)FkGc4#lXZXj[m0i-Cbr3NN,UBRkR(ADd"jB-I[R!Ap9DVXBR4D5(lY(RA%3Zl4
-MJZj`l8K1'EN'hbmLKJaVEF%%T!!Zje-%*53!2cSR@(@mEr!KC4f%IPUj&&)-k2
%2bCbfP&hV!E@m6*,mX64(55$r-ZiX)@d&D@@!q$3!e[3PJ-`S$-JY%d$"P(a9L6
@V6*46#k$'i@`S-lNiiSE5HKXl1qSFjFIl3K8U$Pd+[c20C2#dE6'XaXk(0Y+FU&
VjK"PYYS-8G!IU0Bb(#3F$83iYmGb*Lak(kJrNLFd5HSkm#lrAF(&(*!!cG184k$
`X#kYam(&((V0DRc3a0H3!'#G,Q#UDr[GPRKp*h!`4#4,"Jr(ic6[GZJi0-FihXI
S0L&'#4(dH(eYrX335lmN6KS3@,"15RZl9*d*Q&&'l[%*`1r5cH3Ua16[a-dJPUF
hYE-)(jAIQR`3eLN8GGViT`9i86I&q12%cB-,h+dS,%RMUFf$10a`&YJ2KkcfIBI
`IAVBb&1XpRhrm1-KcB0ch%QAFT&5')H3!"rQI3%R0D0p&[X3NAEmQ5jK[lG*(X9
[9-VQ9*,QEdNUF3D3!)#GZ@p8PZEK,lRMJ#CaI1#!#P'!l*Gci2)Qe6QSr!44(c9
p'bH!h0p1PVj%IEiR0h63GXaj@"E9[fbR6H5F(PiF#e'8SjQqS`YUP,U*1NU`p,m
,)Y8j+c4Pma,`5HCQ8kFKE%%klp)-j#UYj2fYY+c29+#j&%,jKjFhY,2EfrpfGIq
c[EMjTUBNYfBNk!)Tp8icKkcf[*k!Z1bI1)hGhZHcZG,Pj%%NjjmiN!!K%AUMpBb
''+j8Y(*88r8c8ZhcHLEefQZDj"'Dd0re@NdLj0UDq$J4r24[(dPp3H9e)GA0Yhe
iSIZMS('M-((lKG2l5IaaSjhSqb%#2pQ3!*D`IImR6QM0Z6J+3+TYr,T(96(5qeM
pBD!8'2aBrE&&D@0+l4'Gr08CZmLGr08CVAIV0dC&4)2pI6cP@PqfdfSLj,4ZAGe
FYVQri[+)j,5rAI+)D+c'r)1I%,Zal)0D%,X4l#ek#U#X%r`DEl+cY,phN3E@PMM
Yj!ihTG"0hA8Q)j5RIBkGr0cN"S9*"b@fPl0e(,i(JlRC)CbRZjp*r0cNq`2,f3G
!+%BTPQ[S4+#kBBDLp2ZhhUXILr5-5ICJ@Y#HjIf1@h$SjHM[jD9Z"DhpjAV$`A$
,i'jP`m!038YGV$T+Pr5J55E+Y1$(j*5rFfBQ)mUe"mKFr%&!PcIkd-@j0*P(4!i
$5CI+S+TVr("'6%55ZReCKIjBAq2kRJJL(10(YUXI@*H9S-I"S&JBP93Ha11pA$G
"d)0h(PYJa)q1A$Hjd*I-[kLe&"Jia%4k!dlrN!#fZZBB#,Yja+9DhqiH''0Blr6
*Yc(8PENeb)jfiHMYY2a`F"'"(p,KhITFr+9fU#-&Rqk2@2,SC2ePFhGKMTEII#Q
bDk'i4,6)V0diV*D'GlGbrC!!Zi1Y#0m4RE03&&(&"F2ZN4MbFkMCL8''CCDd6kN
I)K3TbfYm9Ece6L"@YID0004h&)bdemrIem@UV1Uha2)kdIQi61m$NHm8AkD"Sj!
!FV[-QUfUA1j"@RBcS'Efr+bmAUaV"r`dP3ThFFASZ`9mhB9@&KGV%(6YKYY5%qd
F(lJT[T+Nm9B@EMdK-DGR!c([&&8p9LQ3!%@l$'lSCRNMZ@l"6FS,Ze4Z!j[[Deq
jHda6LrhGVGZX45R"DbKV$*I'-8YU85mAX&4bk+hE9*d$Q`XAchh#r"9kh0hEr3'
Y1*E#YF&kic%,qI'qpBqiN5C'-9kP1*Fe[`qiZNj!A6"cGjBJlYeQVA!T),8i@,m
EV'DRXfDrXk`i0%XKAV0*[,-k[&ik565cF$LBF1F6m31jElqEV'CQ$`NA9PVmY84
k`TLT%U'X+&LP%-JqZ`4Xk++@%bRZSZkNAhaV$!FrYlhCFkNLi06j*p5@jZdJ!`D
6B(D`S+'XQ6'GG$$8fi2H#c$5-318Nhe*R9XLNpE,U#M#@6d8$lfC-3QX-2IEQR(
b6f98MCKRY$6,`jLIdapUak*NX'Zdr)Z1e3IEah(jZ2Zcaj65NV*pZPRI5T3GPdV
)*QqJ&MCVh5I(3lLleCc(H*eJZjl(16fc"[5A9ZhZ*&pRDG[(B3XQ[LR(B3-SD+R
$%jXDkTGmZMRE5X0lAc&cU-FFLYZ"kXGfLEZa*FI)p`18p*G`HZl&@V@lT%mpU-2
[a"!&UI`er""GA'&G29k5hEe0Grc&Dk$G9!ZlV-GT2l2d#l4S+F2E)Tpkp,ZFCTT
m#raD-HRS9XIYQ4[k2YXB!Fda(p6(5JHel6ke8Mi(2ZLG"hI8%0E8BI8ikX3&2XG
D9T!!Y0i$UQbSiE)TZT-9CUB9+DD6eQD6*&TYr*S+Y+@K,F-MTjX3GmIi9NR50J0
YcB-33I`h,2bec0hJfGf&fFa4i-cGi0RG8GR-IiU@qBVCqArCP[dQIEA5L`2[c6D
R82X1'SZArCGdj+,(RAfe4i[E,XVSH%BGp5c#Drj`&bM4S&Dlae!&*jCi+DeiB+C
@al8#,-9,[(UJBl(QDN6$pjfJ9V[(+a'DN!"I9Q@%ZRl!eP#6$T+%he@R23-I2#R
&N`I3ZFAZ@D,[`N6$pjh$F`QQGrF3e!)J(-J`(b)#ZNmS+BGiS2Y,("$lHKFfUI8
icG),0XXS!XNTN!"5R@q9@1fGrq&mbIErY'[l[jTFh8K5h@Tk!HTD'McTakf((*!
!G[`+J3'Haird!8f'PbC,kQ,`E8Qh56X)bXaVk8!r%*Z*Z'PiqRbGk%iV-6b@-06
dQUbR2b')Gd0cfi60BacG3%P&XFbBCK$B00#VG'lG*hSJ-3X!TpkNPTDR1M`,VaS
+qKb[1Si,!4VULe`@H#4R,iE3-HkKd5Y,&Tk%lS*M*QE)klZ[h3ADU#AI-G,feHi
)Rc(I-qKerRaAE-&S&EXPiea!&,X8VK#)0iZZKEU1NPSH)5!rI$c&0'X`#Im,GQ*
9cEPkhS-1B!'08@bGlY46BSl,01iC)rk14-mDIhJKL1SJ'$+*ZT,9RCf@C-ljAXT
QfKC"4EC9+2H(cq6[SEVM-Y9*pING9!GeiS2l"fPM9Ab#*Sb1kR%eciN6K5caV,5
Y%4b$aP!F!b9660%3)MSc#RMRNGfDMJlI!j99KZd%4,dr#e4Q1+pm6'Q2,l2%N!$
'm%+CjrR2TiX"S)()#qejhGY`5DD%mSG6baai3[&eV"-bDmI&L-AKD8PX,G%LN!"
f*,XjXT2FCQi%#$-,D(L289c&cF!(8cjU2ha&h)I-NJ)XM2XUe3@3!(Mj9XeC"e1
+84VF44(4G9)+dQYLKrVC3ZebF-Xcb9G3UpE%3mZ1'b)!P[I#5aYM3(IUZc3AKYG
@-VNE$adpk%Rj"9)5a3@8I*dXiERGLYNf!j42KGJQl%$Uk"110Ua$BTY83#e%MPT
''UZdMRSYdc3BQmL%b3'YlHS@m5aiZIYj(Y`4*jh1j'c2dPif`AKXclKi$VL1p&@
1T!`b)&VI@9#Y)MqELQfI+lNcGfp'JCEbGY8U-UHih3mQYMd0CUV-T`)('#qFG3F
+qH)6eLcCqfUEHFp#YmpUZIh9F+@jV(mC'"LXY'3,A%B0&-()Gi4DcC3J"Yb1Nma
f!ReAqiD*rliLZ,NKHFm&S@pK%kYDq!H,kM243B@5KPNfUpmiQ*C)8`XVZ60h'6Y
cY-d"P)6&ldfiIDIlF(NJ'TE59,4HHM$BV[ZT@9TYrchrhK)m8`GAFB(Xp%)`IC4
UJ3dV!M90XVkNUc!m[XNJSJAri$!3&br-D1YcHVrBd[YE@CrDcHRr$emi3[5@52S
+#@)DMU8K3hhI9Y(PmSK`Q4DlARm`c!I5GmA$rR!@LDj9!)1ZIflF(6AF(P+NVQ1
Fp%GrUGJ',Gd%&U+K)P`66#11#Ad58ERm"D'+cQYR%UV&#Q1B`9bic(Y)KqG(%RJ
lB`q+4[2FDZ&V$FKQa6jM9)T'-p`mi@Z1emH(99,#2#Rb,%-Y#mejeY#U4'ql3BH
r8XTjmh6GKXaVTbGq-bl"Mf1bFd!a'2bYNc(CZ)"8Z60pV&ieA0b)*T)VN!"[,0Y
#,+4#Em(EGQCrk8'cCM-`'RA6L@ilrCY**Pa0bAGDKEh)DM"KL6*UY0-m[T%kdJI
D)!M2#%BfU-p*!-LL01@P9G*Qb#YSCGS,Hm%"&A(aiQ%PUGc50bb*XGBLEp40V[B
!h+*-pj+h"(J5UP#*e"GHL[CdeUmJh+j-TN`qb&`i-!92KbX(d,`QDRG+cUI3re3
SF#b0bSI1+)1+[&%$e9Ghc1IZ,&$+F26cZr'L#GT,j"IIG8qPqTcr0%%Q08T&,)6
+c8FSjRP$Xj@(9baH2m6-AkE&#UB`h*AjH"i5,X%im&!8&mU+rP(-XZl"%lG4T`A
mA9kYpXbElMEb#3)XQjZ(cLLDHH'K(iDm@%kLc2'I)pSQG4KUiqB-VN9Dc$(PIU-
r-N'edMM@8CTRKCR'5rZ2'KTRG`#TVd&Zb$1PEV02A%d"U#m%kMapM[T`AY%-K6h
,a0af'AMABj@*Z$)Z#@!8c+a)aB4MD+k(K*G24,BX&D,QNUPfbeBcjMJr2$SaDhj
lBN$1"i*VhdRG#!AR*fIGJ4VNI'i6"LcVX3N'MM)ZY!d8c(,ZQrr1[+brj'jQ%Rk
TK#BR[+`0FIT,#eEa8G#p@B9HQ[E`9'Pl$QEQc3X!*'b3!%)!k9R&MfC4f'QkkG8
M#D"(4Gh4XTK@bAYcQfRPNrp#qM'*M5!(0Z'`LN1cLbRPX`FiVqq@4X5',2P&aSq
X[@JcaG9(5NM5l`IhiAbX9JNjQ,Z*q!MYS!4'#Hh(KY(KQ!EkePlX"j'qR"MFL8`
HPF2TV[m![pC3a0a@6$d'i2#+qe(j4ljkAP$fh%G-mT*(RF8%MJA"d+jHM``#1L5
+h0B2KiiZh-'h8r%Rd6P!bl#*0#QA)#m`&ja6k0XV3("AicLVc1!3fc!BBXMab'e
Trclr!@9j9Am46r$H,(QbQ)R3J(AcLIRhjaEr-m'LAVQJh)K-UUp`8LaDbXe(`I9
jp2cjbKZUc*EZ,&V+&K+I**[JLLGHM+"eKNCaHh8rMSmqHZbQAGaq-``YjKPilNq
RPRLk,SN%Telk"i8pM+hF,[Pie8q@@G+Xc9$AeNrL*C3RTlPkpbIjNpHSVZ"Yh+*
-mM58+NAPA'X(IRFr6ZfjSjZ#1$KSSh6`Z%jKacTD#`N8'2PS*$Q1I4l%dHVbqF+
2`[4J8K$G4,AAbAKR@R3UiSCT'+Ffce1i*3Ad0YaJ"Md'$fl-dm#G5Li0H&"aCS-
(pCdY5e5M$pI-P-$mTE)*Y,jD(EcJZ"%('0X2@VL"lFeQDf))rp"hGS%jm&NSGkJ
YAQCVQ(CFCL`CX[*CfUVr(jM@cA%aSZa2m9DT1CMS+EX%!#Ak@L2*#j*qD91R2LV
r4hjS-bX['jBi%23D#@3P9#Bm8,09IZ"l4XEpT'+kS@*Th$T-*FVhUAMJiNNqK-C
51Akm&qRpS@*Tj)[L)bd(rUQVMTXKDTIlmS0aK9h*36V#HEpk*A'`2qdjT@ZkCcr
$Y)DdV'RFpcP%T@0BiYR)C*!!a5L#'[%,m1J!iE(*RGcl8%i86p,"NQm&*DZlASD
bI42L(M0'PXTq+kl"!$,KRUJXG5S-HNELFpNbMqK'm"RVY-%)JB*88XRp&d#U%k`
dXU*rk23,@#&Cb!L&h&P3"r2d25ae+M6X#HANiT!!I&6ZfhfJ%kA3*TCVYqXQ8ba
r@-pa#$S0&*3E03iM`3-D-MrmXT!!#Q)H)Q0ZTL!ddA$`KdN6ZLVT8*D+%Z&fI2,
@3Eii%!D@)[lNe#J0UX@1rXSUrm`A@DV&DahJ+QFa8(TR6H,&!T!!"ij6eb'jaeK
c9RU`'R2-6,kRcd*ih,K3,'3UKiD+*,*#S[r&(-V"FNHjS8Q@HB2"H5h"PL'$Jd,
rF$b$m&ibLXci'e&dPb5V[hb3!'!*[aaJ"kpJd@FC3Y$RTAlDEABGbP"pJ3Z(KQJ
iYk&%KlV5U&JmDq5lSe*200T68KK#B5LMUV3TFmF3*VKZa)Z3!&+XFp&`CKcirBV
fdXANqHL3!&icNFaIKe1,QaSX8bTiE*!!-!9XdC[lSRfXhZP#iZqV5qcb!2TcVC*
Llh-JHY9cmd3"1TKAf26F1&#@0*9bH*q3!!H*qY`&,XN#AP9i(KK89*,*h)TU,&l
KNU5+0UFbm6SXIl)$`Gp,c08$U-a,EhM+[JH1"8R$5kc&E,lUe!FY!9Zi!bbrXJJ
a36`mjN5IR`5krTTMpIj!bDJ'%fq$ikf""5Dfp`'&((J90dmDc!2S6#9IaHYP(I+
G&AFaR-$KIrq1"DUZ-GTp5'@K(RECaGq3!*L*Fb0HY@e+!-Z3!"`Ql*9JQ&,9`UZ
BVe#drX`P`H%D**KQLQ)3V3-QP81M)(2&AT4YV+G%A&2Gbbb#C4,[RkBj)A-5HXE
E!ee%0JR&5k,AV&S-P#lQKp`EZC*[dQf@a@XY[@BB)(D@@G38fYR@&62F$KSX3c#
E50EKKkC0D%i`,9NCiBG+6BGL6YHSR,b5e2BE-I216Db$eArlHUX+@YhCbfZ[+mQ
d!&d+&ErF5"V&NJ+h-pJKUE#Km[PBX&&fc&q(f3UeQGbM"F9+!YT)dJ+(V8fXMcD
hMe32'G4I$rGT`$2PqB&Cpll-P,3Zq1KRQ&-,Ur!R$dL+R5cFI#Idh!B&k'N&lXU
H)FfHSAljDi1rEGc!"BTc"RBQq6hN0V!KdL(jAldS(eM"la!BlhJf1S0"k,I4*ML
Ac*4I)m9k!X-'qL2-"9qpAZpY%ZKVdUGZr,%DRm@cT8VrPr@B"16N0Yq,M[)ik"X
+'(H5q@Z$h`K[Mr)b(Q#[9XYj2dkb@JM0"#+3!%5R`+Ic-'"M($JBF4jkia%i90$
Nj85'(ZfAU+X"(!HkAZKp5kAj'$MV*4PHPV6k#al0fe@FmD"*SF4hh&Fdb4AXU5`
'%-1PF`[)(L%%56V3)P5$qimBlZN'R%lPNUK`F+%&0VQAJPh@mNCV5@P8C0fV,@X
)+SL5q)FL0P(+S1I"F![("jcFA"VMH!p@Lj,e"BRlh&k8H!*2Ka3X9Kp6rrepa3)
ZLI[FASaiA4M02K6AMKiif(L!AK'+3jk-8X5dh0#S`2)1qa[#CeKrVc*m@&Me&#F
kFlJjiB'1RlJjU!#-MTQrLRJG0ea@KeR-PPlQNNG6rCq4l-KJTp4LBqh2)1d[[F#
*Z$SZXY`8c'p[a3eHTANE@[R!T1MF2C6&eFkPTDABKY',Y-Zi85@3!,Y`[D@*%$'
3!(-$13S!MNpVm68,Rpd,'k5PI8R@f3FULYU#c1(1ejK5bpZhGD9i8FPHZ2)mk8Q
UJDHb`*j&rfmpq(Q2Vba2LKf8N9FZp4%9c#M1lM%F6e`ier4QY#5*2(TTc$4,8)E
Kl3YT2P2KFbB3*5ZI6qlTh2qR3&)[1Z2FNM)Q01hbG62clBdbr#@R!-m01I$*f)+
%CUCkqZ,S)63b9L!4YXVPBMee,AjCBaTHk6ATHZlDFlF)*Q[3%*)Ub-Yk1a!q%#E
f[4iU(-[j)j!!"(4)D6('Y+@iL&JhFrp6M54q&2)ErM8HVLM%[I*58c9BhI$j!Gh
PCE29UfN"e'R5HD(5T3,3[rZQIA3%fj5lZ5*-&iT-dXp)3K2FSj!!6h8+%EQ5-(k
KIkCm+bd%j'N")Fl5N!#KMkCTk,"QXT@IH[6TCU9kpFKYZHe1Yk)!'VN0-)J0lfQ
$-bf#'el)mY40a$Vr,02L'[Q%b#J0LFlYCkUS2C!!chCC&)P4hIm#$821lCY2U$f
d*Tf8a6#+%6IUP'd`R8HRp#%X3UGINFGic-AeY'6I!*4I*N4C'I34p8iXGDmDZHG
9L+'-D54-*))E8G'$eFeT'rR4JMBLN!!Y5i%0C@Q5+iFlATr4T'51!&lIZ$[GYZh
,*kR,`P6KiBAImHeEB1l!QRF,U''e#qe`C*blSpm,Z2'NBDKQA6&%)[8FiH5I4#%
daITSe(!,B1mTchV8)R2)4T,CAZQiXY@KdYqHIKGji%)[i3%I#Gp#[[G2TmrNfM&
KU8T,SLp`!EkKN!"TMMUifAQ53X+D1DZ81bEp$*`M)Le%%`hIKre,aDa#Yl)dGkm
0qecpCMK1,&"%kD(&DAPCZfhKcT&1iAaKAYRE+04fARQhZe2a0)j%I`YX'q`L6D%
kQ*E+)U5K"Fi8b[*1c*Xaa*45!mrhhB9CN!!T%fbUAa(PGcJ0GV8KE`[)Qdql#`I
YFSmAVGMMm#+#mZ562LL8Qb+G0S"I'b0!hH&*P2qcN!!a*kNa-RZp6hL#aQ+JM@a
81kS"@(Y8&8JcLFc28QD-VpQD`8#r-#Iidi`cCbCcd)'%SC*Q6+4AKHB54MS@),1
05F"$(9dkm%m&e2XQPR-JVM&jYZ%$ijBU!19h0eUhIr+-Q[lFq#(RrGpe9CC"*bQ
d#8U$h@3h0j4"PDUULl'NM0R4@8`*2FVCfH&pF(Hhk(Hl$G*RfQ8)d@C!A&+UBdq
1$'Kje,f$2ZYMP0L9KJd!C2PA-NR8$L@83C9r%N18F#89f9Pj#A`J$,2f+8i,Z8i
,G[UR2*%,I%M,9a#4q[)m#i$bCMP5X`YVJc)hh`YQ@"4M`LPF&H(bbqfJ`JkK`JG
%3@)R%'XPhc[XFlkdH2A58(8VUCA6-N1ZL589iHj9'm`b@,X*aaZ,-P9$Z"6GcYM
4HBHp6EhAPpr-9Y%3-h0V(!"Ur4`QVmd(#hRVYr)3L!rj3(aN`3Ck@24(e"-,3b`
k@@pVQ@&[CM,9#9j"Nle(3m@+F1[BNhQ1[Ee$Y[TH606RZAUKEeN5E*fq+kRJ-eD
V%2qGe8Vq(2HUVI4BP+CbP#k(`[*(p*5U`QXY5haNmM0!&9N$E-b%SFk8#GlViC(
k[@rBJRNL2Qa0bl`cS9TCbQ`K@IC$HCK1N`3VL0S)(X*f6QpfZ3I#8JJpUjpc"C,
82S%FThZcjYm6QKV'@R[!-C4ZP4'1`$L8+j8ajQb)3+%k(05SJ9Pk)ZpIE'GHfGq
5$HTHI9G93rGIKIRi2q#8,C@@cMmAP'H9AqmY2*Y@9pPCLHH9MUp&HH10dd1Nkh5
,L,"HBMKk3daeHG"1UPPIS95,YCq8JjA2MUhmS4,*&@[FQ@k@NQHXJ#)A&"jCHJP
H1j*b@IN*([NrFPj"NNAlf`r2[&*jXD6GiDih1NR%kAfQ"&#1R94Q%4GFUJp2D&-
f)I2q9L,jmJ[9@&4f9Rh2@1%YfX),6PK!"$Tqm&$MGY6Kk&+b%fYe"$4Q-IYB3Z`
hKRbN-#b#bEe8dEHi+b24pZc%!dDAm"hiqdj"HECp5ID%fJM)r$qZZX@D-cN9blT
DHa%lr"ec*SC!NcIZSETqT@k%V,6)*lEdTrEbPlp1jd5Q3DpkDKhlMh#jmJi$P(4
e(DP@Rblj%3@5H2$rZZ1d3#$rK3*YrGKQG5ddj&"kZ%IA1"(JGRGCU`PHIkK*AP5
S5Diqk-'e+`PjpU4GbU66)[D,r5cCJDK`)VfJ+[DAUTTMYAjI6*j-5KF!S8,+GPY
KP2d5IRX*YCDpKCj&9j2SH#9*r$T',R#5jeB)jFmE)38,6bbGpDbU#l8qb#QRHQD
rPYYVH06Y!eNcE(`HR!SLdPPm@@4X)IGNAhPZ3e-0LIrb"pmrP1C89!aB[`e"rkV
`hbMBia"*DeiMeGE$`JKHQ(M&N!!51!EfVAfZ9DIVk"M`(4a`@pSdSda8VI(V`#*
c[khVVKLR5rF6Re3dhEIR1L%3#i[1@NRilI5ilaYE@%8ChPDEMPUmHIK!q8Fk$eR
!)LJRcHaHSPLE'9K@@AmL+1lbV(fI%"Xl`QcP`BGd*X*dj6Z(RhSbh0KMKj3RcYV
KBITH,rVA@CaX0IFYL4'[mM9CIL*j1N$LhSPFF,6dKj5ph*C(*F&C[FaiRe9(ZFr
dS6)FaH(,P9i%U-'R6Nee2iNi'QZr*cBDD1jYp!#K()XU$@'&lX$dD+1DPVMdD+i
mYkZk,'UL'(acp'+h01aZ3C1dq$Tci9fhHkl)JiFPbk&+3KY&H-V9CekRGr#pbI)
*$9kEH*+D"FLKEN+8@8+#H4)X[@4QLT5J91Zrqd%bCX9CEL)9-6C6@41Ecac6Rb*
d4C)4j*a!c"jB`1'&HD5)q89jc#c&SCY#'dE&(Y9aAKaV6QUCMc1#[N*e8pF4NZ$
DP#r1)"RJ*0hlLq$!2diiG98!qYIal%bN*CkKZSX!jKLriY%dK[CBSJ1r9d$,l+2
cD,pIRSVLaU%RYqX,+cL[RSEUSN6`3i%)SQ'K$8p9#i9e6Bj4Q[F4'&DjIUD9X0c
9a9kZ86Q66b(1G8R4h!h&AY3N1C0Ccr#SG,qH"0q'DIBRNRDr8fP%E4a&)CU3!+K
J&8Er$ATJ@NC5mRTPd66AMFJjU&L@&j2FYhE&X&BLil-ZaHE88MR"2#%6IAXc3"*
5DTFI#`JX&TBr+[MEXZ`rM@C0HM)E9%M6mF[r(09*[("h@&P()j6b41r"'90QST*
V9ai`2E5Tr*kZe[+2le,2qAUUZDC8QaXJY[iZ8LM8NQC*Q2-8I5XclHXiS%PF%N6
dFFR,NcmPK*Tp5CE2bUUj2M9dGJNAqh8*Z&k[UN+DNR3bI)`)f!mcqFk-G%PFUd3
Ql*rIq2!FkZSc$H)[,XhmSB`JU2Qe-4YPK-ZMl*!!4DIG[`2Ra91-JRDdlrHcchX
L(V0RMSl9E#"H4Skj$H8JMZ"ZPPYXAKYDMUA9M5#1SMdEHBHEcdX2X&-4I,HjMZD
9qGQ51GdL3m&4,-"10#e)@1$#1VlZ+!+B(,*F!HIl**Md`L3#Zd#Tlq#f@FPeq@5
+eeRFce4XMZ2#$%H5V,p&)[Q+p(3A8l#5N!#%BRMq)Eb+NT5Y,h!C2UfAb!VqqpF
k$3e"'q&2E[!T`HE-qFaXIV02$b$`qbrFpqRaGG,mZU%A36@LFqpp6dG8pcdcc"i
EZ+%56$8a[H8aSi%F)Mkj)6(SmQrrVJ*qpL%k6&[V*FBk@-hpj9K,b5183+kU0ZR
Q#c(`F5'f+(2U[*5E4"a$X6V%k*5YVZkd)3h55E-ILYCfL@A8[l@6P2R'dUIX'b'
b([SS"F5YNaqED4Fj6'NiV%cj,BSSG3lEN[p9NJpA@!P,a3$k[$G#cP-CMVi[SP3
0HCPm(+aj2ALhT9fN$YV20hMh-hmDMm+De"5GT'RlS5e"j%CmScR%VIKT'RAUcj&
NdU2N6ha`"1L&SIC"1'A,l(dk,b(9%p#ZcDhC2D@ff2adq%b++J@Mm&ecZD!*rBY
$F$#M)Effm-9@d[cXV[eDK8*1j(Frr#@ZY![Te4`3d$IUSG0Q$JRmPc"QBM+A691
8IB#f5PCRaGRQHa'NjNd'VQ@YGp%RHRAQca%-R4LZ[+ehcbG%IEGd)ZG0rY4iV46
4N8&ec-mE,jd'6UdHiaj9r&%)ESemYQkA%L0ip*mF'AXS)Eq2r5S-DHT",L@Tr3$
kpK"qCQUIBS1Ah3KdGe[T@M&`%MD8@CMGDp03@C9L`Ve#9URMQ&YVM0,rXII0pEX
HXiA#6KN,Gk&N)Xf3!*rMH99i$rpBr,dr#r(@l)"QcPVNPZ"VM+&qZAQLGV-GbBQ
E`$A"@36G2GFe!eR%hF&NKQa"$ABXiH)dH3Tf+RCem9fhGEhY8Q,L"AF!B#iAS2a
QI)3S-486'!pi0Bi054$!TcH9SG)LiFlbcRRr`Qc"MX+9NX,h#J5qh(-AZj'1fJ$
JZ`6+TREGG+'qk(5Q,'-L)0RGhaeQqNI)CS-L)!p"j$("`cJi%9rGpa`dMriAB,-
FR$-pQ#RB&)T+8N-j6dNMCT8blI3YIcVVTE#dm@KJ&"I`V@2d@J&pGik[RhCeVBj
RV(bQf6'E%qM5)lP1JRTF)1mL839$`r&hMTVDGYMN`E@&R6+cVCcc-jqlmTYkF$J
1Z8i1HPalJ,P8'MZqNMC`-iYdP2l%B19`STeT&l[@QdQ15B0AQX*M%E*p#66@Gr5
5I4Y,Sb*#JJR0eK[dchhS#DdE(HULH2`%AN++,2)8,00*LlVpXUdX0(H"M(dK0jK
4&Ta0hSXX0pGe+P`2f[ADD0H,a8M*`B)hEe%@R((5Ya'JiP&2R*lJk9ZXQXTqkDa
SISZ'!*j4kCaU&feK[mm#B,4YfqTm1pRKjZ)8iKDQTqLPGQJY@bYQSf"SGGFA'@6
CRNbj`HkKSjjpJd4X['BKJ)j6qAD"[*!!j(kE9)5hQ'biJEhNS$(-Gf[6f*,BUe(
TR(JQUDCLCI!Pp(i+BUEfCDPRb%ribDJF0DG4mCbbSMLQ*ZaK1'TcUYk"L!pfV[m
,2lZh4ebM*eT`!ZL59KBU9!pT(jcM2A6jf5D3!2mUr+Rr+Z1i6CLXKfV"2GNj%bb
APJ+3!$Uj9FM`D[6SP`mR6XKfZGk,Z,*BNp!kmblSSiXR9lbYi63S`RRZ6[*CecU
8B-dZk%p1)KFl3pIPF(lY3-""5f9&k3!JX1Q)ZCkdb,he%ChLk`*TdI"LaUh`Q)f
haEa#cD"UfTEAGedfMMij"4L+C5D[!cJE2d$NGN*%&e@K#dl2ZES+R4LaP@RL8Gi
!Im(TPEELXIPTd9(T!(#rNQSS`ilH[kl3'VV-S38#C')TQVK#P,DBKM4++Dh-QA4
CfLE[ZrJU+qVke"c"#ilik6bLbh&eBQPS-T1ETAj48J$JGZQQ-'@,6)&GI!Rp5k*
TQFJ-4T1CdNMVqUJ`4qrB'#eB!*2B'#efCX!fYCEpm'+V%5``V'r$lIMT2!9%1YL
V4Yfj&Paa,+J4bH,B#!IBA$K-cG6lC+UGV+F-eH&2@[eCJbBkHUpjGeJ0Ih5jCV2
`M+ZG,f*"fQ@6,@KfX1PLpb4IG3"Tc9`mcjlL8IJ!pkDVTTaP1b,4lCL6`dq`b@)
mH0pe!'PKdSK8qq*4hJ!BbUY8l*!!L$`c5I"UUb)SfjEracR2+TUV01cl,M&*%EQ
TGj2CG[SFX+PeMQQ6rMQl3&CGZd"X2dP2p8j0N9))K4&mI@P',URT31*q88m!Di'
Vj(KP6`"'F-S2"efif4M,PY"YMkE)bVjpD8BZ5Z)[iRjeSQRJp`![,RlL$C!!`9'
V!'P@AGF6YjRMcrci[H+kSCC1P&LFD0MNXV+hk8c+VG[ZV+-`GM2N'QA``+X,5f,
N['8cPKT4N!!(ifZ`kAiL0K4fl12C3Y&2qk,4QA4pB2C4G(4Jm&q3!)-aBRhd4TN
-Ii2`2T!!YShZ)4hLrm(Bc(A1DI!dJ0SZed`Xje(BIdBH$`ddMpM`GB"Tq$iURDi
%AK$Vf,+r)D0H2NK+aGb3!)5i!S9VSIp6X2DV@N5ppCE0iV9(5j,`BT!!QI5cIFP
'q&FU@T,TI5a'Xll*@V$T+Qpi`h@"D8ej6,hDk#3[Pj'f!HiKmC!!Qe6BRe%e8rh
amDhTdAp@*m+CmZXZeR$T"Ta-98T*Fi%CpMF(B(B)m5m98mD"e%J6B)lV4LiDF4Y
P*[r+921rY*%*Z'8ZNP"11HK4XP2X,I'(PI'3!,AZ-!crP48"mfV8V1dDBk1m!DM
l,YX&V+EJCAM8Z*!!fhGUG5TTV0djTTaPH+$E&F,UF!X2,VflESpXF5ilhAjhPRd
(k,D'9-LJD"5Xr&!iP[86Ze%Km,H+9@Y0FA`QZeILMPJ!V&8cpTIJSkJe3+cS8I9
6@*2aj,aPGSRE`V!%CI[j#hfC4P+h4a@Lc!cl3FbVRlf+I*3BBDeH8L(!84C6F5!
pPEELk,Yh$2q95!mrmTZN"fRqdPZGY#"NV"(XiMh)YVh&UBl"MfU@-q+5i0&B)PD
*$)L&3Y*TEIQ0fQH#X`A*44cTq0N"'R@"DFdEkpDKJI#N)1,r$dd9qeI'mI54-%2
5ClKLf-&'r`A*(D5V@PL6$mLRl$$i3Tij#1ZKkAEf'hJG&+[C2Ai*I,6IcAA$Jm*
Q-(LhZr$4*c`bIdZr"*dZ+[iITGE#JBGkV3QHY(k0Gq-iN9$IXqjc[C(%RJX29Ef
lf6XB#hHqiV2AFe"!+AMQH+XLdEF%,LCra(3a@#54PbI)k4pH54#pl#ci*YP,%#"
QLq*'IX#HQAlNb($qPc4m1J0!dkGL46(T91dk1i"dS"hIUbKI-[ZpLpJ9d45G$61
2B!6,(@BHkRiRfkHmr64F1-mR$(95185J5DTdI"hBe1CBe(cIr'+9*e4i!*m)%d'
P,TJ6CN1,mk'UP3Fcl1ell1Cl-r0h*GB*meY#US[SSHR)j+!9$+QR5k+U6-PdDhr
5erUP$#$iA8hfq&ZKSd8a3IMYRdU+TlDc8ZhC(lkk`PV04jrEG(ITPBD4p*FIlFq
d#LPmTGJ(RaUlV%&+ZChQ`I&mcm(@i$Ne[H#cFHffTllqYhI[i3A%$c%S*!0-9R#
2X!pG1Yc"eVmj$T[mD&S2p$@'i$E6%@$3&S9`a!+@d*qe-lPUY1af-G,"9qd9K5e
mh9AYH!hp!`ZP%+fG-#!DN8cDXlH`"0G'l&DAcrqhr6,-ipNbQ*[5rlCR3P010&Z
ZlFh(CRMUbaAHcIq`08XpS)+a9L'-f"0Ucr`kFHbpXr+-N`!RmTmNaRqDMTpUdN0
m+I,*@#(!d3Rq99C8M%LV&MMja"X9PPV(Jr,0[0I`DNN2A8ea$bSFP"MIlmPF'"b
r-eDJM0(*q-JF[-GhYAbBYD-3+8!4Qa6QIZEY6,9@(M&`Yq8`2@EQJ''e(`N,9LH
j+G%)d"IAY5!1,SfG[ac(&#-T[[`QJB-#+HklET!![i(V(fk3!2YmX4j@lhUEDfK
icEc+*ebr(cr@9T8a8,HplbB+l""4d)cZ9Pa%9Pd-HPl5%8%ejJl-!hK1@Nqj`J1
1$XQSSpbDfaaa-4@$)P$NM[(TpL4l8Cr916NUTNIYhj6KbXcY6'RK+K`&QrmYDjJ
'AAN(MV$(Fq)(T"l$Z5iQ%qb@PqB,4!IS(IMY8KL2[1lpX1h&IJ+hKM*8e*am-L,
Abd-4Ce(GqSGJJ-%j&&&pQTml1Y%4U+%6hZ56rXiqA6XkmYa6-h(j$Q$SiYU%YLe
r5r3ST4&`hCb&40Ukk1B$c-5r"+H`00&*)()j8`rqU[fc9LQ5jJC`C1LJUZ4@$ib
Jj'[AYhMNRD#Am3-pa*a114aJjdlr@T!!E"%&"V,!PjZ1HTZbq*)ZGeZd&4YeV%E
Mr8!5l(j4$b[Ed@"RXfEDr3C%qrRm`%$21G0)fbJp[qDcF$Mjl0Dm5AK!Yl2%JpB
f8GGDYm40Sq#$I0I@SNQC-FI0b,H,4EEYK`HN(VFKq$$qa!iHIFK1BJI!Hd%GB-A
VI3-r-MN,JdBe88!))S3F-RIVGqL5b0XP'('mUYm2V#Re-TD(r,9B+U@cI4MC#Uf
h9ZEIbH32'(ZmKYq&9NcmjU,2HJbZ)4lY[,03RYC26Ie2&6T4d&j4q#6)l*q1aJM
DS-("J@Sb3jpedL9*j0h532Y*,pmG&3,KMj'cNCl3mVN2&EFTArkmJi@&P`qh'1b
e43H4(JmILGZJFVLdQflFeeF6ihE,ZGb-,+1lPZ-(,!9mjUV8dK913(M!jq46B,[
3-RCE@R"VHUKD-A0-ApH[lCD8kb%N199m8QVPb&kdh0FpFq$mGBE1Z5TG)31rY5k
XY0e,CM&mGEH%dH-dXl4I)+G")I1Z%m0cMq6)Q[k@5VM[$plG!U-KcEqS3N$Q3I)
D&%ApFkGT*k86)H#Z)5HZ%lTHXl4I)"r1U9LB9Npe[3i6UpLH$dqPY60aNq)H13'
mPU,@h3Va4KZMicaL0YKI0BkBa%f68)HX`GDq#YSa9[A8c#UQ!bkZH1`iD'C5Vl)
EDB&&i0#AK$m[4+%H&A[Qd[8BN!"m10[&eVpl*`2dA)J8PAP(VGqdGr*99"-fXrh
l8fY"h"A3Ur"c+UBB,[j5NEj2$kBB,MbI#`R$,Rlmrb`HK3"&-D[F%p!a+AkE!Fa
-'-`m&fBJeSF+(BpK0YYiq9[Fp1`3KV1jqfG!ZBmCBEY!,kmGejBf0)NIhqFEJhc
IeSUdVVPeSbq[(I5@8d+*6#MX&2d[8af&PKiQ3C!!i0!U*k1Y+IpG1Xa@#GEXrNP
(Xm3T[bHU*XmaS`K1Y8k(*"l-(9friY"K3,Dc3UkURl@h')YbkX82*bV9YJ1fRSf
3!(lQ&AXH6e-#,#V3VbJT#m389qElic*C!GclG-ISSLIA[96&LbI%&[Q2G1@jT5F
J`hB)(VIeCMad$Zf``""TfqHjSp*V1$SXlKmBY5X6Qk3(1F)+&%R`Sd$$"q1i,*c
6A8%RZG$QcjDU%BA@%l45)L6BSm'ih+829,2('2@$cEc-11-,Q+4hMD#A5m)h,"a
d9-0TGTKkP44hK`pVX-33faZ"PfqAD2,#am48RhVr9*Ji6He"HKY5Pp[p1D54j(B
YqTqQqRff0F`k*5&K%TH1c6HJ!EQp$q5f@URbH94-NPmFR-05-6jYDJpG!-m2IDd
kqR-MajCJh5V[1(j3`q4k@Q08l[TpXMSa19cN@9TG-DMm@6(#c,SeG)F,0j4``Ya
fIE)kfl3"j'0DQK(Q3BUhQL'+YbiKLVF,VY9h,ZKQHJp[31LfK#NLIESk$(5bdRF
2r%!`YUNqk)&!$j1pI'$b9Q`bK63Bb0j8akKM-VHADeDf'AIX1*h5Va[8$k8(9F+
3!$aar2*%h5FK[F8[*p2phDmK5kI,`*r$)LAPFDK!@'VlIm#1r-4J6biKAFaLj*q
XUaj3,rqNUH#'ICm+irrdI&!K)6jB&8PfD$hbj*mc1qaX&rN"KpdHf!JBqX`'9MS
'h'"c'qH+[BU,3AKe&h"QPF2ad,P60p4%a'R!XUbr)LiA)29f4,V4IC,)K95QU14
I,CjkZADCP"re3V9V#[V#&&B*&(B"c!FAF$lKXQ[DYTr#CAfk0C*%'he50C+`[[e
JmI$pK9B*&(D2CT,9`5(+4f%eb,C8PkJ2V!9iGIY`GjA$fD`&U(Al4"lYZ[J*K3Z
&Ya38!S44)PlmA5%b-!T`Sr4j!4re1M6r@-HF'm'XNRhf1Ul4)S1bq&M@l#Qc*M-
F%$b@33X9pHfk*e6r1S$i)K#RS%8"'cHAF1rr8A"ScA@IPMf&H#U$R--qj&UbbPM
@l)8i*P"V#m$(FA9!PSIGRj'k0bj`5Hh"r28K(-P(QR"cYbkfGlF@F-LhJGa'[L'
YABZl9THSTIp%j!Zf@332p446S-SZA#`,[ZcY&qSC)4EYCH5CQS0f88PZ6"RSFd5
6cTqY9#8k2lRX2L(*)T8KK&(b%"q$Z,URb9Ck63GQfXpQ88iaV1!2rF1P0*pmPAf
F1Up-8B1cLb#Y0KR[(`&pEcSYV46be*8dbhcKI43k0hK`MY+RDckjB2+XNRe21X)
al"Uc*Q@Rl!E("2r#V,Pqf3A$iT'(PbVlNEVM0L+RTjEN8kIFcMVb#c@JZK#mYmF
T9q4pRr9Srm)2&N'1[ha0G)9VpHKPZkdbj4bRiU%$+UDYXFD%9a3SXPFFLMJU&Uf
Hhl1Y!"%K@,(flEANlTpf-+*G4kQ9`kZ1*JT`2P-l*,6m,5`4S1*h1D!#8h510eE
5jN5FHMP690'UBk`L5di4r13JRiK0K)(4"D2#rR!bXGScHLTR*J1K(2C)b5[ZSDq
B`h1FR4pB&Fj!SiJTVU+Sl%3RSq'9UG+V)Ec(hZ4BdScN4*p4)4XFifG8M!YBpBc
N1!pmVeE4Vb)M5F[ldNC*Ve6T58$$JN&i9Bq4FJRE$h,erkhG$LL)TdjkHVNCaP"
F-&Ym6PE'PZEr8ATliH5R(hjpr[*lD@$G+Z(N0CqR+DeBQ@jkYM'Rj+fIq!SL`Y)
0j!HITl5Y`VS0)T0dabbhrikKERT#FlHkARHhjVMJ[RP@,lc4PjX`Km6b-&"@62a
qc31AcR6rX-3`YfSETF%Ke&[V%rMHeh*5)+(h-@`Ih4eqk-*jTIf8`jG`1(9$h6Y
`90-6+IYYVTTh5FYSICfJ!K!EGIA5p!Z+afC95U&G-+LTi5ViLlT#k&66dXLpA*!
!FU*bNR2G(6ADINC6Pr5ArDBpA4-UX*`UQSZAYJG`(HKp)95fY[)FYkUQZkAmA2a
bC[fK5hS,Zq4EG[`,f*GeIfZ$UB1ZA95kk'CkX8hm`M2p0T!!19a`&Jpbe""8(!&
+5CGIj0NDGI8"PmNN(G2BF,l4@lA,j'dQ8P8,VNl)iiTh#rX5r1hM1%"3`j)#P(A
eDjF8&mlNBR"4*CGDYrqGSDIDe'B4GJZX@&*%TUTV8pdDfjIpZ(A&dR@ldSkla6h
)CGk&IZ09CMheCPJ(ZY%2Nq6PYV5['+"iH*!!S+VB#%r'Q%iNf8c2@0YT9aEJDIB
Id[KR6FMpDBMN6lX%hkUk4#8Vi2DDr#PaL,mhmKVmAaC*%j9YhGf!8GmiR@$[D%6
)N!$d6!MPRV4"JD&2K[%IaQYH!KIG9)9kGc,da`3D((X`ICh5iq6dGYjU((X`IA1
0Gr@(ZU&9)C,q0[b!r,UUhU&bfhM*0Ka5PqkU'2a8(lepiG'A[HjhG52*hRECilR
Mq0fL&J+'HKhp4Zp(,h"'rI9B&(8hb4E-I%PPPq1DVAd1UHm+j3Ra6'JbYrk5hIZ
JXB05rkHDDNSPpI-Iek'VpVMe-jc2$3ZHA"j[GVTp$rDZk$IRT6PIbdANmZLf*52
fDj!!-fDafG'Nm!aDB'%,GI9#@MdhqRfP`FNb""XaYTUAI+kpFa-Br"-b+[aZ[9b
Kr5%F)6*EDc,N$QD9UF*l9AhbV*TpG3ZC)!15k"R6!+%K9%lN,e@Zbb+DI4[4GGY
#lmPjF2MIpNN[aj'Mrh,l4+)GClcG'pre-116NT5ZJj!!($$!F&hI,lJEqYlIH(H
Xk(fqUFVl80JEC[$2lI+RQq6JCM0S'm*5-bBJV!YpqR5Ibd!GNM@Vd[cJr9bK&ZK
B0A,NAqc'@M5$Sk00!Sb`YJUr!PZUYVB#'%DK6e6P'Da)!Nb-r!8hNE,XdCH`DF5
)+BX`qZhmDTZCR4$l1S"ZN!"*%c,NV@B@TAh#18488Ze41NbDIC-,Kl[X1$CBpGK
[FBiBNRf@pX-k$(-K5+l24P1VY+&k,FRET`&pfZmU+e**U2RY@"peV+"0dER$%IX
l#,$U8@J$Ja$3G3frSN*!KZVZ"MLN*-B-CMh3DXajjN!-2`'DRKJN556iNNj94hU
cHGrEB`&#AM(MHNj@6XLp!LQi%&'$!dm#SF,(8Q,9b1iKcj[mm1Mpfk&8lj[k(Yk
KFS&Vrk&!&UVTRkamI8KUj3[*eP+iMUIj1NrLRhU)9*D2MGq8`jU$[CDr$r8JLVG
GE)C@H,ZXS**V"H0e9XRC))UQpqdU-ENF`h#lQ#*pih5CKX9`%RFTQjDCI6G`ZVN
$5G+Aj&K*S(6Zf6Im-H5PYdeL*VIiV$(mrhV2@U($Ghd6#LJ4jA8bbDK%[jhmKHJ
HGiFKcpUK(1LGk)8Kc0U(6`1Gr)ASTU@,ZPK!DcI2r![`NIA#%)[pdJF@M3+,&P$
jh@1G""9fj1Ia2&h#p8ePqC4)$6e$m!35`P0r""Pfj(RQkDM#ihm50HMN"1Cf3Q%
hkBaV4Ji@6c9!RR)%[hENHHC2JkIMIa+,YH3%jTcCHH2T%MT6I`4'R14FjZ+lr6f
&YcjUA&3+HqPhU$F1M%qQCMaU[URd&S)eF%BJIQr(B3@4ir-kC$ITb@X&H'XhNXN
"De3q13%jB6ITb@[%U19m$ee4FHKB&+3@,c9!#L$TUSFhU-Q[ZA!@)$@1D(f%DJA
-IXp!9Vm)0q`"!6JK2r`B,2R%p!L3!11$k!%))8`)lU%rGDkDYZb5*2!G*!r[U!r
`bb49TIq#B+A,PZ5pdA5Q1U#a*$VmUR31`DX)%qmF%iDK1PQ+T2)b+p(!MqBbLZe
QJ9(,G([Y9Q[4-L#A9%VBl+&fmb6GAm64L%E%P++5G5,VKRBVcaDQ6A90m`XcFq5
rLhL#Ua-aSEFGBT)mhh8a&AddUR8c&4BjDkjk5#+H3dTbk!MEGVGp%"ccVpcp`)P
MDkYilk[8TdXHj'Dd!#pRj,3Um(846lU"3X)R$e3iYbDZ(!!"Z3pi`-NICAAED!X
kAfCp%(VdkH6j($+"8R`JY%NfFYV$1'GHhK5&NXX5d"JJp#*FF63,T&BrZ@mS%3R
h)*MY0r$58IhQJ8(J+VBrY$E`JD'b`'bQY#Sa$h2MhfYeSZkLHDAD,RiqQcKr8A2
fcHIP9&VLG4MZM[#P%162,%aRfm9iF@BXVraVHRc0N!$eV-,T$iD!H'Ye#ZjB'k@
m#@Elcj4-Qp[r0NFrcE,Lc%J`lh'-I6VmdI!r+HfbM45dr0T@2E848!4"['8a$#m
6m)%6P+[Qh+A50[UKcAcL8CC6V@Tc,,)e8YR,ZIYqpYFJp&&c8l)jJ5c,4Jm8-e$
YIJI9%q*,J5``4RArbmclI[PNlEd()"2CAe'$CMUh&0,r1Z*@!QA2NU[FL@N"e65
d,RkJDPT2c(06"h@rH#,$HFrmaIYi0EPLem`p8hDeM,p8Nq-&$pFe+@)"h&GTGZ4
4GE$YH(&PGQAG"3pq0Fjffmac8`H+IB"hGCL4TJF,iJHm%le)0'QRp9qG[9jiJf@
Bd6h0-T!!N!!K32Jb9&DF+TEfFmcG8i-'-A+r3!Zd(Z6b5E[XDE,&''Al9e$-*1J
(XT!!T'ddc'p6NV-ar#CQ!4qU$b`34R3Tb$ISl5ai4UG"%1`KGdXfi&b((1,dY2`
Lqje'8&KqGHl5XJ%daHaP0F"!)9DVISSkTkjB#mc2!1KDFmm#i[Ym@,M-F`#G@[[
j`Z)(qDXRRi%VH,TP*ejSUq)13N"F@il-X!#GeJBK`j!!8G8I-U)A6QMA["-#6Gb
mDI[KVce-8`IAaYS5D#cJ4Tkq8Cq`KV@a!`cFA"$Fe"!-mf&),!TkH'`F'9NY*!I
81Mh"Tcq+C`JU8(MLASGJc*Bd5HY3Jpc3%%$&K1DSUrIrSm6%+-bI,C%69AB&16'
)ElaQ8i)i'kVUKCF48kjirkXGm[,`1DNh64VaSeT$!IZ"-)8#4i&V-RRNrEPeGM[
TZmDL-6C3DIZ"'YecN[+4!a!"lDfU4(3,'PZh)-QI!&Zh)-N1a(,)Z'*5ISY%USJ
j!%Zl[4ff9-9eI4"kdDLQY%NbJH3icR8(JRfSpkj"HNP[0h"D-T3LM0J6I8R5*Sr
T-KlfNr&c9(S8X134()2lFS21HPIBV%NbJAI&ph9"HSK2r6hS)QYRT`)FpH3R#I)
fILeXYaXAd%#cSN(f&P!A)%0DX"4J3)XaSLl1GSklG%P4G66hIirNk1Ja#h#MP3I
C#qaGEIipMr9S'eT%GfEa9VR8d&Abfre+%1bCHM$ac3*DkmNaE@mQKb'[l'X,GrK
@`J[1@-f"NMDiUZaPhGeX!I3KHQqKUQDF#a3EDhS$Dp%bGH5!8N'Sf&3F--@,kIf
S#b)1#CNH!`U6DZNr!@XrIAIm(X)K[(%*ip*@rM$`[M,0rLeeJ*F2q"'jYqCZq"j
`H$KdQ1-"',B@dHSpqR5rqSC2pd3,`V#*3DjqSV@[Ab4T(%-SYNPXK4fG`S2k&R0
I[Q0ZV6%&DIi"HP"[%d[N16LJR-j@AATQYb'!qT!!l`MDKSX@BVA-k(1JJird9Fi
XdkG[b#'Pd+M3NPL'+iQl"V61E1LD8S-9[T2FA-Z"N!#6c!!`-B*!rfk'chKkCR6
MMNS&Z[)XN8pj)Z-61F-6@1R-%hC@!kL@imZcLXhfFM80pQb'eZD-DI9QN!#"5p"
Ra""UBXl#4+D"U!9hF6(,Ll+1Z)9dSQ42%eE4VH!Qj*XH4phNj)`H4akBh98CLPK
@HcP8$fCMer9S,U)*2%[6,HLR3%DI22$QNe6`#qSI%%RYaV#FfM*kU&j&brjhNmb
F-$&mZjHbG@C@)$N1$rMlqCGQNXdKc-$a83rbq+bGA-bAZ%Z(aqf'9T+ab,DI)E5
JF,M2r%A5rlUl#I!@YMV$bAQrUCKq'N-8#kYZESqT-5YIh(0-,X6b*YFTfUJ3aK[
Tm9ThX92ShrqIJHS(VPLj#c63ElS81S1"9!qAJ6h$I@[IG4cX)CD[j(L@8AAq'&K
h8A@0',JAd3)3SS%mVEdC'$T!ITU%V8aPk1mkJ)dF!lQRGIiB"-P83(AR!DZe*hf
@lmA#6-9p61rN!TVrEIEamN2!T$"1blhYF6p2eIJ-@5jr8a9fF'PQEkAdCT2DAh-
M'U+pC1TPc@D!rKYbl+mU6aYbqF$#I3M[eYY!8[9BjQBLI5R[0dH5rd3'iMpmpAe
[hb)3KmAmqdPL)-@KX%P$0HhL$Qa[fhmfVd#UaUS%)24j9TU1Y&%,@IJ-'GZ21IT
hLhRV1BThKe-PNUP*6SZmXi1L2C!!DePhBfd8,+XaFN@GFd5@$mmFZbYjqq4c+$@
ef"i$qT6aj#&++35YCBaKG8Aj$!RpIF0Mf9a!46+Fm(HR6h8QemN6CR2jF,H$Vm@
fHajQZZh"UN5dq@UYZf+cmVlLNRF9c'ElSVqFTl+l5f#Hi0F$EQ`p9%d,HM)8j"K
VpM&%@5Hl5IhrbT&4B#r-%N3,SpXZfke%4-hG!SKcLeh%m+ZBE*9i6'9AMSQldNA
p1P$$JacrZV$F9THl2EDfDDImKEi&NKMDSGjiSX`ZqeckK-AH"FLkeCG@0[p%8mY
BK8h93N"qSUGC5FHedb'#4F2"V'SBl#U1PTG*jEfJ@,H,Pq4'[hV"m%3EGlEHUQE
M,H#r58RS89,)92b1G1($Jl,C9GKcLU)&Sj!!N8RcJ6BXF!XV#L4`*IJXd"iXF0!
K8M4i)Sp`k(HS8rX@f$b1"5!FhC6-92Khic#*0H4!rmaV`Jqk*92m0Si4r%+I)69
p%IblI'cm!EkXHYYXaHLb0K"f@TEdZlQRCM$jFRI+aI&[+[bE`3-h-GfqK)J,fqZ
UlElQ-GZEUJYhHUSDb-Vm-Vk8)42-ZR"iSh825aBKHU9Je*!!+QVA!&LGN81KPkF
9HmdF$4`ad+)(6&BPZk)(6&BQN!!ilrHqffbU"EkB-BiaQ9dBE(!DGiUUMVi@$5q
8XdGYrpLf"H&CU,XTilcJ(N1REihA4'4XSVYIXCfqpJf4bYYL'5qBdZY[D[d!Z"U
L*I4L15LBejSU4""M'qRjThGP8qKIH0X0Y&'c`!Ur)FHlNl8mXUYS1QG0aRFj6+S
6*[bRXNeSfbdTN!!&6)@(h4X0Zp,BmJ2r[ka84jp6%(I+mUI'Z#1'@'J28N#PSld
2'ei290!"cE3r1[e@"`@kN44[Y0T%CPBi[P6llM+`[Nq*h@+aTrSK-Aa2L5&',-9
8XL!XLmkLZU"QXSpdS+,I"lUS#`HAD`Z4rG&*YaC`GlHAf'DD1Yd2bT!!FijQ$6a
Q$2a8'mU1P9%[S-9qKrArh,RM%XS9ajLX9Ch#(Q)UU`jPXP"qLAm6Z3TU5FPFpYI
-YY#'kX6S$U(+Ucrlk)(+Gcrl8i(L@%2S4QS,eQZjFN`pLdqNYUQlb+$PGcQJ1r+
X`m&kZDEJV5UA(q2"A3A(iKVrQPQT$jG3U3reP'P@,F4mYZJL"H2)RIM(h$CAFl+
rUk`dY)K3%m8%bTY0%'IQ466Lq6rGI2Ykq@0UI2j9DDA`614I%dY*5$hM0KLeiba
k!fKiY`f4KN'!RmaM6K1P'bKC3AM)CVlq[0dI4)8@FD96k*Bi8me2SS(r)QcLUQ@
0I4YmPXM-LZ19G0ISTp,m-cSUr2&fASC1#q1UZ(1hJfYcYdPVlEHA%82m+%rrP9"
d34a9FckEe(BPF)HE)P#VVKcrmC`&K&@4DUYTFbZ6iVA*"@XGj2pGY""@HcR)YPT
dPIa9*&B@bfQhHcI&S-51Y*[[8qMAZeek3&Ee32L96Lj@c)I,a8#1UiJPqGh'Lf@
1hBJC%DV'@il'9U((p+24aQ[*h-k'2'[*0LXJ2-rTpIqBHSCcdMM$U'DjZZI,9S-
8Zk$#6eCb%+ff558Br2+S!ee,CI#3!++,AMahcjlp'P5Zqcc&ddCfaN$$U-"DRe6
Lj@XELM`E6p+a)Kifk9m2fjP3l5a8,@T@PkQY$i-K!Z#CXPpe(,CRQ3XZkLDh2X@
PlYY2A$JDQ((p$6UVQ%r,EeM%$m,m$dK[1N(FBRCfh3%c4@qqASj,)"6[,lU2lI3
6)D"IGC!!r'Y4+[`e3Xrp%#)263RrYpV%B+$*l,mU@KVe5m'B9Q50c-l2T,)UNLq
b)E"J5kf,@DEhNX6q0[,L(![1f$i,8-+fdlR&YRBl9TFFZ2hD%9C9#pcmIRF2A@$
2ikZUc*G3CVHQ`bR[lHMrq!Z2$aCm-3m@QFbJdie@&(cG[Xq+YV,rYKiL01,S%S3
R-IiF4`Z'[ZJCpB`FPYKNpGBF+YQaK)FkNNBBBPJm5e-Dj+JL(&HV[fBi'#(qcAD
Q,b+#0LbJChjh3[p(RQ)L`r8XbV-E#l"9fGD+h@M4r4di-5FJ[4kN01h,[pchG1q
Pp"X&!HN&c3`f-60,YLJkH3YIcYf(PXJP!)i#H(Fa#Ej!GRTl)RJejMJaR4Y@ZVR
Er4di-4ja#VfqXld-X`Vb)Rqc#@mS`Qd*rq8FG3qk@#"+dl-+3*9ZeUe+K$0ZeMp
+QL!Zk#bJ!HC@pA1@r!G0(jHR%2pPhXcM92+fCaB,TX2PR",S9%!jXVbIP0cp6*f
4LpKi#pXbPFPhX2%kUH@,(b%dlQjiBk(4RlI4KbI[N@X0l5,30A$X#r3Q(h8i-AT
F#kVll([*CGEd5T%[dJ`2#KEraUf3!,,q"*3mebU6Xe"[eT*+U-[reXe+U%[reYj
+kjArHbAY$p-D#UabqFBZaNYdB"3&#`kbdS%FB+`m%caVkDkU@0dP"HHINGfL3SM
ABrVaY(2&HRYT'Zc5hV1`NfdBTZ-c3#+cbT06T#Pm(A9IepYm(ICI&FJ#ca28Y)d
4r+cY(rc!JarmbjHj`h0kN9d)63p5``*f6+FqXjq6KJ*3qE03NaLXpq2+4)[%N@Y
B85##)XbA(pP!#iai!Zr&DZ+D00fh,$#BF$')i$[&6EeFT2H1N9@F'M4D(&ZlIY[
Ne)6DpZLfdkm,j)#%fM8,j11%fSBBZ2iI2"ArZH0&X)iUl3m-RH(GZ&C`,9DAhG[
$rR3LG3%Kr,#Gr,a(XZcpFD!3Tk""f6e$P,9@!eX24mMSS'e%dSc*b,hqY,+QX%I
ja1KaV8PK%hi[I1DrAqE-Ahbe&-pERJ*&LJ,jk*j+0Ire@mm#d-QHSp3+--@q6P,
&2ib9Zq5dEXbimb$MlJ1PaPE3NMDeHrpFpUJFpKEad)f9aY%26+EVD48b(,hqa6D
mbTcF*jBreV@LSU6rp3e9%pDrSPEjaIc&aFr&UbCC+2m!MGP%)0BeSK3aKdjR,$E
0k+Eqcb9RMcDEV8ld#ZclTkFB*DJ#cHJ(F0Hm["[@8+*QYrrGCb`fEIqf!J6)Z2k
M*FamP9&8rlAF"feT%Mc-)[l*RkGcPZhr6VR$@jrNPQ2,XLD@1$M00e*#qZP(,9Q
RX,GpAC[ENFm94,Yl%bm-V(G%%e1cK`[@$pd62F9"'0XQX,Ym(9Sa%J[h+YHEFp3
TEY3YfMLf"0m6A@83N8l6GH&!F!r("RUJU68[ilk&2Hci2M20I1004,RF4D(hdh%
f%M5CbRmN!XCPqf@T0l1EcGqa1e1LELIUaZVlAf5,%lm[eqCjq`6*Bl@lLafCqpF
pHH6C5QefGaM@[T'dAqkKXD8I!NMLm-B!qfQEKrBF3IRcIXh'I[YZEifeUCC3eLq
48hF0P'R8&*'Qk"*2I31J"pQ9F6R0AJG0pQUFAS9`T0$fh(HDmYT4L&D5CJ(Uh+'
h09+SqA2EV2C0b#R6%3kK%5E$Gb@UPMha6fR-CN`(2mBk4[mT"E2jJ9A+V0ITUX`
ba**U"H%4H65NKLi(N!$d#r)(`CjTqACQH2V[Ca"cJGphGSQ+%-hrFaKLr3Gej#8
BkL('#[SXX@UEQdb'LS&e1b`e3Tl0$a3(rHXMrY'XCpdbU+E8pmVql-Dq2([K2"S
AlBBiemf@"*e8*LCr6l(p!$@e3B&T21$Kk2+fq"T@DIPMNJI0biID9MdMplNL'UG
0PAhp)K1hXeJmmN$23"ll#XChS!h)d[cSNKpZeJH4eY'4EXrrP5FfB6*6b#2j"H"
D+Md2c%lTEEF6[ENa)X0l[F,NTJHDG-'YKTA)6Kj9%IpJChES-M$K"pff5-)3RN`
9lLANPG,FI1aY0+*3L5BfflV5mUXQCK'PGqR4G(aY4X9LD8[NLMfGjRAll!T$XkB
(8NjMYBq9mr*KPElpIVP@c-Yfbh1iQh4Lcp%0J`jU@NjQT%BNUehYSPRX%(m8*VN
%-0"3XkB(BVh"dX%+)-QSePj@55dmr[Np33HfRF36Pr&c$pDJ9Q8aAN5J9U$I*R(
F8ilcbch$I9DJ,qf2+K@1BB96Fr0EN!#%)#p3+)m4&H"j(5kjR5Fpa1D1E`p6eaf
BZ8!,S2EpMhECLQCR3+f2*Pi*qF'fSfl"1'GHVB@`A[i-RfLG%ipRAUeXm3Vq+VQ
cerpaT%aaXkErX2!2YBq@fiUhD1Jp%qDr$fG9Q)r*10EV9[*-VASHrCL8#k()[q`
aHAirIQDr1a)3#S8r3@E,#lS`qXKMlQq8[KT!aPfPYa#FDDhSC$BBHm8NrK'j!MK
6Qm*`6%j`R2FQ[!)LqR`4`a-j2HcQ)F%fhE!hMk"&6A&8-$VXPb("qSm249KaaSi
X1@`FZ'R"rd+aZL$[k-(XYS!822`cr((bNX6$*qdRdACkmCDa"rpJpJfpXl-[!SC
6LXh2mZ-c(JiYVc3E%*bLja$2"I&JrQ1NTCqcU9)3C)"p2!N[5G,m#Dkki"c)c[k
@&YC1%T08I4rc`llp*Q5e#fJ1%lIpPA-2&Tk'80ENBedjbV2+R0qRqI`S&3fh%jk
cljc+1`AFTjp($h0q8N4$mrq"hkUB50*@D$$8m,(fZ6a2,rB("VApS9%m45rT,RX
Scb59CNN)5P,2@#AfUX,k$Kj2ZF*MEUG102V9`X,LjUA5YUb8(j2E+"L(Br,YQd3
Jh@IaZ&M'fCq-EiX)DME8Ql(VTHK'"d$0$cRrPUjJ(SC`F(cMCITPT5pZpZ('cjp
cE#KM*lEcrrq9c`pY5Z15Z4SlDYE4%P-lc-XHFpC-EUq42*)[MTrHBiCC+#HaVkA
'MCmCEd-PD(U-BiCH+*[kVkA'hCq-4U&QU6JZYJEa@Q"%Y$fj+#0,RmMFA-Er&I&
'C2r#eA!3q#5RJ0bj@BUd)Gk&-0!VkDecC6eR"YZ94QR9+*!!2&8[I2-4IS%iUP9
NrR-m+bmN$0c'bImS6V(%TFDBU+qTrmIZe+EKaJ'SD2GJ*6a&T-$91Q1'R#8H1ba
,4DP)ckNXcdAG5!$Kp+aji3hY1hr,Rm#c*D9-$9BSfc`C1Iq$laf6"IR*GXaAAX,
G*4N5ZIVfe+IhVSkX%26ZhlRrQP1X8BV&%'daem%X0+[,l9*6PJ@eI&r@lNGPbeD
k[858Y5rP(8R+0MAfP[1b[XC[RhE%GCC&XEi!6)ipcK'1#eKH0ZEJbKj,8!*QLIA
aXLU"G,QM%&C%FNSUdGYke!aPh%3U5YKJ#CTJ+!GEP2NB(+C@Ah`8#VILEmBQRh1
5iARK1#+`XQ--2!VbKNVKHIT5)I#BR%M'LTp@F#UiKZ$`qP!KaYDI5(!8F'G(4R2
9`AP2S-Ermk82'e*Vm4!iSN!a#-ZX6fBj-P3NHrpVrC4aNj+RLdR0D5%k+,E8#e2
NDP$kaVqI46CTPMM3SqKQYYEh4f9Va-HND`FcM9hLE'D(eUCaDr)"ac6!q,YqMi[
IQF#53%lq1IMqRrK11Y+Jj5f3!)fmN!$i[#f+MDM2*p-X6"iQ6#GT6YhD04[bL2I
rAJX3HrNAI+a(9,&4bGIJMY,V)M,Q58[``UINq+c@rkTkUfm3CR!k($ZQH[I[9Q*
2-fEhXcN!J$*VJa$FF8KdS+IA"jFGDmVC5hKG(La3M'Uqq(2F&lPPi$'J&LpT9T@
)I+-kh,ISqb#Z(%"`*Q9!@%LIrTJLe1CBZq+-f(c"Q(RT@'E"U&0McbKSH#N,e0p
,3GIDcrqk@rQ(!cf!k6J2d8i0H#N,&X2CH#Rl&Th%1V`2"%lYH#Q3!"BLMj86Mrr
T&X)-,FRe`LbcX,[#,9f!$+k!`LhB@@YrH&R[*NPYbKZ%ECrSSZ),G[-+8R9h9"-
if-P$Am4QB!IjF@N!qH+2cY,SDN[h3,%0!0hUML0![jP#2'deC'Pp%dp4J8c&LNM
ElBbNQbamkA&TJ5rLDBpHQV[U0r%mQ%CTNYFeqP,A3Q+(fXDmi%E,fmF#0iLUBkP
N12l`lBf)[3-D4`mf1`9,!1,0Kf646,#b5Re-[iIbV*ep)4SD4dE2Em#VmZ"YiC(
LRX#4EFC(i*j$9Z)mAcXr0Xk*8[p9R!(!IIR'h5Y'Ak%c"`iH4JkKD$@S"d2I%eq
JBL8mUdD"1q+Q4fNPD&ATSV(T8mE3CHUID$1'1hkLX346(a-@kM$`KUJ2a'1i95[
EbAi`*T`9Hjc&VV9[kkpFJcZlQ#Rhr[`mSrNbKCEYCS#8%26D,!'a8DddCPTe#m-
(N!!ceDX,k!KUfhlGNMmd"d2@VR-h562Y-MYLdJ!V6qkVGhb4E0STF`9qC`)Hi`+
aKYXkB'0`-1b5SQBNE8Qa5`bR5rLSXI$[*DE2JCeNZ9Q84#liR@1BE6!a+YV0e@q
ma+Yh1aV,FpGqA[VdfLqXbC('QhbP4k[50[NT-TkbJH'3!!9[+p+P,BDXX9m`aPG
PlNH8dQJIKYB"[YpN4M@`rH,f2)h"DNM+k-`F3iHXqLJYZ1JH(FNU9@4''K`)Ec%
d[hSfX"d-B+`a+Y-LB2Ep@[T9FieaZ@#fe*53!%F0CC!!Uf-ejH,SDfN*VM""ZSm
U@`+e!%@3!(6!dJ'T*QNXX6!`2"`e"qFf8mP[8p,k-$$'#QA5c[X$'SaTTcZAZrm
6SY--j!$cHXLP0l-%(0iSHHMi3+EGFQSj2+!eRCZUNA-+k2)N1,6JB%58B!KPE3d
"QV"f&@MKm1rK909'bB'P8Q-elSh)BdC63hEKJ`!D)XYB'Q",Qa)IFaVS4%0Ub$Y
kdMVLQ`@"$C!!41&Ub$cU0AKT-T6J6NeiR09NGl*m,q(E(9eUKG8"YNGqN!!N$5p
YiE2)%*CU@$`i08V*S#mLdTZjZ0I'SZ!A1p'1UK#HEVafU5D-VmSJrj5p-VCClNX
-@HlTpLi0CKd"XKT(!p)m'F(fNMNIKRd&4qL2+[4e`-8mq-&idC(3Ic0[@'HXZ#r
J$aELbIpp-K0,iDA)QiEG!2K)2Z(&dfLm&1fVVSkQiKf2&0BXp2VATS!jT3f1%@"
UekD1)U9'k4(KGd-QQhJ6(F8UTm4@A@G`8)mH5AD'NZMl3kA)$Bqk`IHERF9NFXK
%hed&JGJ#lbC89%b`4ij9DR6rLISPdZZEX2SNQZ%Bldf1*i4(5XL11CrkI-G`U$"
CQ0GCMRF`@"SX-pL'%60#m+Sl$!%!4J*e3l-4,@6`8M[M!6i3KV0$64+a*0T!haj
#cAcJe[!#X1%Rb&0dIMHcGQTUqbYC8LAf,c+U-c5S&8ec6()JUrBAmZkV00Q'Gk4
pCS'K+hC$6qU"*$["IQVY2hDEVIS$M,@(aQm``II32D84RV2b6ArkcGT#YEmXa[i
`(8)`rCX!"fQQ0[,lZH-9RiF$ej6Db8%f&I'(!iXmG!$iHUP(53&Z04`I0PlmqMZ
[Zrq"**B8B$Jmi0BDC$if-YHD198UCd(U`KhcUCDTbD)dqQ$GN!#QI2I[qeeFDej
i(3B3)-R(`M6r[9K2#3Z"bRSdM[X"LLhl)V&9-%"mcGC0!M&hed,+GiZIiFQjAip
BP,BSmRRhiN@fS[)&,+Y,RaYqINq+bKZSINq+Qc$bIYUYk3N"mZfBXh%fdmUjapT
CGUC'M2Y51b)"aPQ+S@mVTNBXPA8Zc$2rh*Aclml*Rmc%iGb9M'r1b3h-8cVj&S,
rYqQ(iM2ZfSI'dSTScK(5Ck6D"mCFLUMKK6@`B*[+dZbcq6(HZb#Tk)`&f+iS[II
9#k`UH+pmr,eCj4llb9Dd[MqZhEVbGU*$kX&263KQ5f!c,*l![DCU+a(82)V""4%
+mE1NCM+2ZSCX09jfj,VS5!(5TG`YJdRDZQQ506"`TVUa@GJpaTJ`bG8ef[Sl-#a
Ui6h'P$#T@5d"Z2R6'q[BcmDC-#r2+3)al+*3J`"C!+LpiZAjU8aEf#9p&QSc3A5
P"GDK4jri%',&*3,3ZqZ3!*4MKlib4L$G-a$`YD84Dk2,Eh938jZ'8p3mLFMcDQS
ULiEqJI25`AE%3!X2j*&9mHC[ZIL3!,4i'eGKFLQb'jd1UfGGHKiaM4V0K[rC5qU
3!,&6fM`eb$aXD-Q'[c@LqP2DaPF`aV684R&@#Fefe#mBq2KC@fBim2!C'B0FA6q
BXTjBJUp0A@3pXj-e![VAGS-6F00'mFPRb+9$4R4,F`)jG#*1q-JH!r53!*I9hcL
(qEIM65$Sl6F02%()#d+&AD[T#5)!2mEi+(qc!93,,M(VRkRXh,BfP"TD'3['+mJ
P@)dK(!!XfH5S8"SmNiS59)E-,,0Yb$qa2RB#EM9@aYF`'Qm`ca%!PBF"rp%Z#Xr
T60Q8G-R49h($EdjYq"60P(*!)kE5,&Q6jVA&b5C#aiqaI*r'e)TcPUf,M$*,(XP
i&&3iK6"mZ5*+F5YDqCE'36JpHX%e'L-jqA%rDiLd-h&E51VG4R[2LMbr`G[E#8N
!C"XLC%Vb,5'dLQC1imJL$)U6,`'IIe6!2(3eXY!f@cE"q'pfJ@9*PpAqr[M2l6c
"`@L1PQZG,lJGa)UkRUZmAXm32#r)!1R5`R5(!4eifKAEDK'N4-H"NJ&9i8)hRhU
3!2iL*UJl83(*(Y'Pq8&4(@djb3c4T8-DG%Z26MBl*!('1LC@ppE2T3j9'm@91![
dGSTfIh2aA'VAcj!!B1VC65QSTKjdedGCY'8CLRjKldD&4J28F&,UMTLV@R0U1QP
6LjJcGmBC*QVh9Gfa0RD2Q0mEaRNQCd$a[8UBfiE0dD6kNRE&I%6@%L$l3jYdE)m
$mpFp!#Y#Ziqefaf014Vh-cdlEJ(4M0Ge!)T#,H'E%91dTE-9Z0,kR6#a)I5+p*@
+I#qB,NN+J-(E)jdH(M*NA-JVHSjBR-AN%%*!*Y%ZU+SlZ!('C5BAcNi"#Zcarc[
4dJ![3R33"lcimFXlE0,)P$94Kc$X`TZHX*!!$`F(c#)#"V)b6hHL`@Pd%P5LP,Y
!#K`$UXVECU%kceeR-a''K,KHqX(D*q%BH3!*ZailU!('qLB'(TaHKKVE-f5X%6Z
2!DT$NR8!XlXY'E34mG#12RQra&"2M[N6Jhmje`SNB0FA8k-(ibP5DR6Af[8*T,Y
$")PZQKi+'dRN+VD0DHVErNLK&c#KCb,ZQ!6AX6&JK"IACCBkC(lj6`%fDl61@Xp
S,N6C1c)"Y$$qa$1X'$ZS!8'#ZhN%h$fdLN3HS4-"KKlEfrVCGT%HI0Z'(YZ4XCp
fTZUH[(QrY9"U9Aa'S$#kM'NdkZ2eb4j"G5Aa53hIMIpU"pdBL8)BL$[J!AFQMNR
BBYK!a[XQ'NM,DcXp!AHLl5A'[iT-Dh6%*Z`V+SI*A0[A(r(T,`2),4Y$kIrAGkH
8@%pCZ&3321S26E%JYR!`1X6iH[NmNJm%NQEMFmmLdp,"3LdbVQAlRbSQ2Kp1ZCC
)@kFkV+`C4J+VY)P!'8pcY(`"@H+YrAScIGf+,&Rb24Sf9*mlT`'9(RIUq[2DQkE
b&mC6*XN0Gm5aCc"@33Zj2$M)CpZe["%aXjph["+fmYI3"pH@*0'Sm[+)Hc%3efH
$*G"aYB&N6l3N5JeQlFCZ28GUFeV--ESP4K$c2CRSMqfapf[pZ'Uj-5!l'!%Z%-U
c+AGm,)IeLD53!$01HSqUdEUS1cS"f"2DXp&hqaP!G$alb!96Tlc4%!%lEJ'(8"b
l!0HlL6A3kYFI#1DU6'KcAVidJfj"fc6ZcQD"VQC`YCBUSpp4k+P$INpT0#aC0+Y
V'X5[L0hm0&!356YVTJ##lI9k"l@93(8lKb#($IcEKUEp0k3h3Mbfd3Xl$Zf"4Ee
PC,VaTiqD2(-2)%dU2Ble0mE'"'M1J-mmf0HCE'e"KP8@AE(6I!$c2Rfa[)mj&G-
jJAdqph49R3[db!qEbfA)0XNJZF&AEEZ4m@F#mIJ#NIJHNI&Rd[(idT(i$A%Z!0(
A41$,IYdUFrGd2!@,[!"L2P4V#EGZ)l@"Lci3qSPQKH%M9!$`[CiCI`YNM`pE5%(
P8mdG(l4TereBJe$mpMXr3Ih2f,V'Ll5T4pRm1e!JGcK)l'LCm6[K3Id0"PKTmc+
lqKeQ$B9%rf!iKpGJRdQj"b9JYX2dQ'"-@`FPp[@RqUiPF2Imbl(V"+Fk4Ka$ejK
`D@BaeBNY1J$LJlh!D9%+jK9i1qG"J8D$q'A%[1B9A$Z833ISeZEK9564[2KrEFR
'El4R$4VMFcibF2SGII5lk3r!6JF-00G8T*L[$RIqUSR3*jC%6%16Fdb!%#3jc&P
RrkpcZ@Rq2&p%9Q+#IFDBY*9XMc+'f6*@qYKpaVHdPFp@rXa4[V%QI8!Ff"`mPCD
'ec)bX@pp9QMZ`ELj6S4Q-30Uh@"rUe-V5pDGCAV!2U&SpZNrVZPmKl0jkicj6CE
lBLhT9S3Va[iQN!$frKa4*!(jU`i%i%$c@ZP@#HQB&CrqA8D6V+Z&YZRUVAD3!)j
2Xe4jjV8%++Xd%YIK*lc,9!b'RT8N$rpZ#[pY5jG-)$Y[9Zc*1p631ja-1*+hd-Q
%JBEqPFd2rqS+p&c"&C%p&er&fc(T`"3liN%,fE'GaZ1d+V$2IkF2G5SED$Y(3HJ
iVZa5jKV"V1-3TrE58eE4KTL8()m,#Xbe+k#&mJ'A1I[G+HB+ZkQ('j,IErVGQ8P
VUBSR*E2+)NYcMJGDN!!cN!$VVLUR"$3%Da')R10`r9Te'rE#4!D5qTMphFeMI9$
jpP`e[SrP4VH&bj(GbZ*$G8d2Vlf0a(-L&qTp((9'$e-UHS4H1hHLPAA2($XNM'8
3ea249%dLXm8))Z1T0H4@H&T(qSJh)PQreJ*!LhkI(j(S34H+44KJ8Pd&hdFr#eP
S(-`0*"#Ka%*2,f%8'j,IT%0Y9(Q0'*P!AUfpVd"4$8jV%lPS'NX[1#KPSf``CEi
p-@CAAUMI$Jd(-IdBa[U6#SJMHI-SNp3'q[R!V`H88UUI`'PHh*!!jQQBP6"!p14
'MejNJbqXfG9H6ibQ@F!Y!Fj$--r`VdKp"0jd3pE5ff[U@MK3QQ+8Jq6X8l64frZ
LY@RE@AicpS'"K3"c#M$ca[XU%0jmXNC)!pCVPB-,pZ41((-UlATm8(Nka6,f00G
L%)*D4KE*YML3!+SUGNP"L9a*E'p5'jB#Y9&Cm%622BS[*4*cQ)6ph+Y1d`*`j#p
14"RJ'dl&SaehY$V[`CiX&VmpS5V%'i)i`p@038mQd,9*YFLqEj9+lpGZT*X85j4
m9EP+&(kKkpM#LjC*j!&1q@qYUj4l9HRR1M`LNK3F$96*I9RFYQ6BJBqQ4CrB#0c
-eHmmVK"efea&-AQ,T*CCQX'AN!!L9)c[(+(qf(PCMIP$I[SX43QEAQ8AaG841el
L&j[9%$[&,C@1c'lqiD%$JYcha1&jDShj$BFlTfIjdMhKrRKCQfb2UMV$@6-LH&-
Z0$mipI`TFk9K@Im`iHLrQP"%I-+Sf)JI-)m&1r#8'QMT5Nh4X6NG"cT-aTh(Xb4
`(r[qf6&Vf!U#k%rlI56,JN#2%2M@(e&cGr*XGC!!phI)CQ$)$`HlGGGh4$[-Td&
1HR6Q1SI8E`2YPX9%G6ehTPYk,%HE24VjmTmliHh'eK$"k@1*#@4k#Xlb!E&M*PC
IM[mliE['24$5K'J`DB9Vm@4m'V*[)NRbKNkliI,DqV%Q%4k5i*V)"5""P#jec0&
",k5&%)6FIL9Xf3!d#hq(jD[b5(A,8"`#1)Sd!Z,h6ar*-`F,DlY*@P&e0"aR'L(
bJpc[#558NDFb$*U'd-@%SET5Yr[-**V-'%UR4)(GD,eI+$'rJK9,C`Y*+`J(VM9
Cf`2'$dZP5'r2S5*#Q%bqk)&(T$&NG[&eQhH,BQ86aK)3FmTVbEl-`UVcN!$qZaS
,,iNe9!@5@!H5k*b@&fZHiAB&[VP!aHILS(2hDd3CGLQKi$3@AmJp205Tl'Q'a@!
iU1bVcE`G"j80TE3!qLXBb2eZ*HRR3[VfFXK$SHm"F&akppeH0*!!D@$!(&Hm2!R
44"Q+"5B#2'Dq!$ThNMa!SBqP8N1%0,[%Na1q3cTUcT1qp%cGAS[%c(G`BMUS"br
HAVaVJ9LY8Q,q9ZfI(@D2@(BVL-aqDcjNU+Y,PMac21QTFqHS-dQfN!!(9XcF)RS
9)V[%ehp1h%l'p"akekemHRT+CKFlpVZ$90(FY8l05VN,aAL0cNbY'0(Elca%Gi&
'HV1I56MGI@CHqmcD)PD"%6%[P4+8UDU`"mbX)ZF1pca%0!#6HPG(RiJ+T`Y!L6X
[!&p$Ekk!IP2!Xl%D9PPQ[ZU1'[GCXA9YK$F%EL0BC0A@J8T$GSeCJYeRC(rN#Je
G1jKJNe0ilkd$31c61KIP`&56@J8m#Ga!bG9B#BfLIF*(H(A'dXiD`'-fSD6T$5e
S4Gh2R1ANErT!X@'aJ9"$pV2djil9m8AG`*b$j1$k(2lT9&56Dc)ASH4BRRkeaUY
8TZP!0ZF+NSDe@"#IICdmC-b5`#C[0!cd-[kph$6hp'qZ-#9B6qSF2&A-FbfSNY6
[*5LqkVENp+Jb&m[-3@5NEpDU"i2QK9C*8SXeV@!XDqq,LZ63H#fc@Fafa46F!34
N*%i[c6@YH5aPC*J'2,c-JdU6`ASB8+TpX%YS@BI3qLd8A68IQ6c)#DCN,'lKKB@
`C!AC1dI%b'Y5#mVjSiEKH&hkGK3#3"h)6!NY!%*!N!#aC[il9Ue6i5"T2,MNI@8
38Qa9Jh0LaDSq23imd`R8K+SGD3V&,H%pXcZ3!-45b%j*VSpHaYRFYZmS)pfF"kF
lQpL"Nb`Z3iT4428pH$a2#CA9aAp$T20Ik9"N2&2Rb3cJHkjPL"jT+U2'DFj1lli
M2([RRAlrjjeCiGQPq,j5GGH%'PQq`h8lE#EAdIA*LZ"01phBaQ,FAG8J@+L,F$4
H0F@N'5(#P%dk*FiB30a")LPe(-`EVm8EC**!,`SK!pLRh2P()P4e)FbVeI*J)[V
rqU'C"b)08Q"CQ@YD5KeJc(95R9NGDlN08[pCY@ZGNKdE2@45eeQfDek[USV9[RS
FXA8iHFkI'$k-qhM5&`-eUL!q&rYCdQ[AC#P6TLHEQf5mGpM2q40lZrXJS)T6P,h
bhDV"#Y9P-6KP2DYp1INKdik'Te!N+DLI14PHGhR`Rpe$H(FjQaXaP*[bhHA"#PR
khAIL)3$NaSqphYHB@ApVr8VPl-p-6l146m(K4P5d681ZGH8pc!cAV9NrDqrR@3-
pC0I"@9RG2B6A!eNZhF(A@3-pRGH1$IFaVe2e%Xi6B*AIk3jH08pdi3!LP2hbKKf
Hph6XI[*C#YdLeAk+H#S8!lP2-bEF8VPXIX@K29kimSC234+2CTVTLF`)k"0BSb!
HD"Cq0LpQmDHM@rX3`2&VL&[l%9DKpAJ1V6Na49*2$!0flEL8BSTHTV[G!H%0+h$
320UMAcd#F)STSG)8SiMMXN*!LV@KQKJTjp*4fM0Kba09qJrf,53S+e6k,9FS+c6
ke,ke!+Q!3"N4DL)0'qL8S)lbcJ(*9&NpUj-rmMArRpiB$PSDFFKA+U*f'KZ[LK0
CaC[1ZG$pZ#+6LTBiLSGm"aa@-Dr5)S0AAMb+#eQFQhI9#fBp["YqG6KX2Gh4LTB
ii'XD%Rm4,El9Mbr)bBi6RL&MJMI%P&(bA,6a$DIX8"qVa3#jb!e$dTQqZ2d(KA#
9KLQr,r@$YAi("Xd2HM@"'cUba3$k+cG#-kLI6Fb@ca0Q@9hGb0Zi'kbrAJ8QZU+
9fN)!kGhpD4&C-fY*1d)8'c-659P1DrD'@-'j6P0kA,!VZ3$Sbe0U3i@%GIpD@A4
V'bF6*DiNaGXdDM6)Z8lSHQe4YiFK'MYAI6Cm$19D#Njkk'!LZ1Jke99kDeKNFjB
iFf[q"+pqh6!mNq4I%cTNRa!XKLFpP--,2B-NDDbr'J8Q8Ma8TXP[FkP$'+iNTAR
8G[j!I4*k8k13!#a1ij'jjqJ(A"S+BL,41lppIACG,lXF4BAaP2`,2DQ!bDbrU39
q8D#jd5[A8TGTZm*(*`9jHADXiI!3Tf-iCiH@DFPf6f,GqdXDp`[M&0Yj@AEqEq*
8qITIP6U@1-Q(4R`mr#4,'[G124$&B&l)R8jNSN"DBlr!"D`b0%e2!+`Ka8,ki6I
3#cN%0NX0leJB*C1YhcpPb-h`aZ&HK`'PCD`0j(+G+G@(HX,bc@BEkjd`1T@'$rr
EdT[,SXLd3XD2)Edf'p@1`Yq'GMq88X)I%,2ETqcE(bCG1h*md3$L3X8,PPlc`Ze
[dK!4$Q[5Tj86$rqNdX9Y!%+qNY%lIBC*d#amlfX6$Cr#Kf#1CDbr!J8QHb2'*d)
!iK+SP+bP@9M$q[mhY2Vb36U@1#D(A&-SNb)D1ph@d8#'eF[eb8`"Q4a$r'`FZ8i
eN4TS0Mf8'XBUrVde`,%Y0ir4iYFmqUBNB*PH$f#9dT0F'KJe"98mbV1m!9hkN!!
h2%@QZQ$kCQpiYeA5)IS!DZh&*N-B%EjiT,(L0mEG%CSd1m4Xc3rZb2@l3ZKPK',
,0hS0N!#`2*rN!%a!PkT5)dj'`N[K@2ck-cF#9KaE[[r3kr+`2$2ZA`pbB%hBI'm
L!8F4B4$!f$q8SXL+%Sl-!'8"hUaX@ETQ,3Dd)m,k,)C@d09@lD5'"HSPJhRGafR
d[82GebmF*Yf)4(Rra5&*9M"D4+0c5Mpf%mA0mE%*D(dX"EeYM@E+1"C[PNVYiA5
VKNZjN!$Ab*)8RmUBI'pP!@rc!AcPCAa[C3&[AJ&m!#EI5XKfLbed6Z[5chj1Qmf
FI(`LI6ajM3V'!ZB,Uklbri&jrR#jbfTNh@Z&3JrL"4!8GSmJ#-#9Hq4f(p4Afm'
8dXL+HG%`HF%`LMJf-3J#-je[l#a@-*rf21kThF4DJM(*-6jd3k(*V+4'G(-IckJ
Y5h`%Fr#RmFMEIC6Zb'Y(1F*+Z0S+b,K86LD@YY,cKG'3!(NJ-*6`b'9FfJ'Bl*P
@-"MfZ1lF`!cIFM@jP1jCreNYRk@SG(CCR'Q6SJIF@A9*mqer8IqbCN3iZmLEl"3
9cj,5I5N&[Dbdl*-cr'D`*NJ4QG%2YqJ"!KfrDKqFfE$EN!!'`9S32D'd"dMRffk
8fZf)GLZ+(bCVDl!lJT3X9*&cr,@$(m04,L!HQj2)#D!Ie&#RE&(EXP+hcVbp`C'
)J!R$!r"("Kl@[93#3Kc)akURqIaKNkB5IFB&pHRMUV"95)B'mSbGZXqG3PY6S&*
4rE+'3P[2S%*eA,A#&*I#q&8Bb3D6jT2$6rK9'*bhTDEm!e'@[j4HrAKBcFFAl6H
,8A'rUm42MbkiY&p$Ue&2[mfD42N%3Zp(iK@K$A2Bk5Ri1aK2$62BqbPc3ZQ2,VL
d2%1"GAkeFIQ@9+Y#m!Si-KU2ID%TrmMTT#kiY"`!-P&2[meI#5'V3P',[c)Y6b&
K3JRDk68FHC0*jM&1eMAmGADec9+Gcc#l++1H*Vq9b"cc1M,pFi&hXUiS[rB,b0$
9fZd46l9$IV,Q5G,L&@MrShFJSA["#0@lpMGkU8!4pP9q+RM)@*F8BLBiQLJ"&A2
)"$f`1K0fiXAFA(BV!lqUc!&VqBDl4-m`(h#d&N&f!mPab(b`-8jQ6FMV`H-iq$&
1AmLe83ZrUbm$f!%T,[e9,d*hb*!!0bp4HlqeY!X*8`0#lmJiX$&1[YXTGADeFDI
4P5DlEarMrIMK6Th4-3I"i#RM#liLUc1[8J&*V0IjYGG'QMkH[hValPQiD0GV)+`
BlNXMm%Fi6b6GGAkeUpCQqA'lUE99iI$G1,RCH[SX&P5fZmbj94c`h6JEPm*fl$K
f*K2#ZAl6(dl)eXKG1,A5eKiIYM+r6rjLc,m`(MJKTCEhD0'Yk$$THcNVI1)F#i!
jZ@V1!!1EPVTB,[fdY'LiLa-@V,P@Jc5Zf)9eIV9S&jADD,LQ0'iN'VqY#hRe$*m
,)YbZ5&K,90HDfb,#ZKYN8prh)Y'@2h"h'j8D'aPSa9AG4VKeDVA)VAk1CVAM1EY
jShLhd%,iVQQUdX,K&*)!f+%T'lQV2A`2ZXX3%CVBS5P@b+XXD,L9cU@8GAkeD*+
9V+@iGBfeP,pqb"Kdl#EX'@Eiif42R)0f##A-$IEkpV!b%rb$'8Dj3i09V'R))E3
j-+`G9GcfdI3'@'$N1FCXdK0i00'SaMm$Y#!V[I&8NXlBrGSD8pmXI94k+'RND81
Ar@Cc%bY2XV*VKUCS!e'dpQ9l%a%#3QJXX2Ep+Ra0ZJ9dl!8$*VKJfVm,U!G990Z
h146)1##d%G&VZeEaj!(XCMJp6Q6,+AT1CXXp)(SQ$b$TX!mdaRi,YcQa6@YcHqd
Z*4S3CRlrYmq8EHfX$9UZdDd$a@[ZeK1j!VK-a9hP9Xh$Rl!c-UFHARf'+6*-`lp
I`C!!G-hGHE-Q-$A4rj4#)-b'GrQ8T"U8K5$F#M%UXT*qb')j"4idZlmaIK(XhD*
kYhFjI'lB![6#4`JMmYA0#qMqhH&ih41cHT(k1m24JcHB%DBI!p'(d6,i-I"+aHY
4#rCY8-e"d3-ZRrKd&dQ+jbB`V`SK'f6l&2#2SBBPq5*+Z"p@DYfZ@$Cd`4aQIS"
f'k3`pirRYjEGb3&UP%E%&ZRrm%45#YmT@"X3%eilMPCk#"SLf95+0+bMZ$l5NDC
e8qja14,2Ad,K,-H2TBA#@EqSTkaADeUpZ9-pZaZ%[`4T-A46)Q&hi)+2NfpQdVD
0i-b2GfqMdT-rUc(YF)%dF$()XV#ld0[8#R00X1dTpYi6d)lGN!#%DMK[0rF4'aq
l2`8c58S,--&T*(Qi*SZ*'R!AMkVr3pdU,AFL3Lr4LpjhC$S[dVXSLc&!Spf&eeV
5AMHiaTG`r[fKUiM'L4SU'QP'#VJ*)4)a@F`k)PEb-I[VaM!mI1QZ9QYhV`&8lhe
c!$h0Z&jCi[H8DFKVVSqKc04fTVrG#ka$!GS!-1d+cM()elL$D9GVSZ+(P'R)Aa[
aV1Q2'l*#!`-YGrB*Zb*@1$%!cmPpDhILlcSQaR`KF%EC#jDAGEh'Z3+i3VG#Kj4
Tb,I)4!T#Z'r4!3II8hUMZ*V33JFm8iG9[b!Tl*PQ*Q42[c+X4UX3`Y4B@'LHrS4
Vf"UVk(ND*Pm8G#p,Ma[D3KZm*Sj[8`%+MXr2Gc18@FM"kAm[AledF6kjZHI4HFB
QLYJMMQrC!3T'cmr'9AQ&-)Tr,)qQhmI2Q&A28pj5!#-QEd8"*%VC,'M4F[(Rk(N
M*NT[G[*,rBD'3M)M9Hd3SJPhDkj*3(VSaRV#qaFFFhK%(1hL5HRlFf,bKi-,p)T
kP"`afXij-VibQ%VGPT)cH5NQV9kT`%qS-j5Hb"5Tb65hZ"@ZT"`mk&aA4E[lR%l
#H#rpH$&C5)0P+[Ch858Ndd$)$8DSF`)3Mm!kBKqQ5mQ0iQ98,5)Xdr6H0kG4%k$
0C,TT5d+6q+"0E"-pFAGk)6RSEfB"l*Yk2DahEk!"k*aQ'pUlGe4%3&8hjQp"!HL
8CL*KGc(+V!Y[CJ'GP$%L+G%Ei%*hKYJ,EpN"La8,HT'pF2%4[AQC*M6R0cK[f3&
IE`ZdZlf@#PAGpY`@TMF$EjB"p&VCfQM4ZPRN&*6*b'p9!6J#k,QGZ#&6fMK[k!(
0dL'jMlLYh1J"V204%#49%-+r#e194L83D8*LeUR%KGM-[PAlbb$mDHJF[('lY1L
&bdmj'5$S&YUhE&M4RX5&mX)4T@BaT9G!,EbN6XX8#dYI-m-ARCV'b5PIcF0,!62
'aLQDPR1NSSrm!+T!'mY#5T!!GK-S%cf'Z(U0,h18FmLB!Q[jI$0jr#BdqU8$9M2
2aKb1h1J"F3&k2A#iCHMB(*4Cb(IdFlRlZ,PN31e[k!(1#l"V!TTjH"dQ8bc(11`
"ah-C3T-FS*Hc-[qB3KY""S16-U#hXXGSFY'edY$#kVrbTNfYb`lpJ6FhkM8dI+$
M%N3"3i(pYB'CHm`429Y!cC'XaTk6Dm-`1e8!fJ1A8pXD#RI(YR40N`ZJN!$)+0a
Q!5,JGhA"m6krCJY&G*+6#k#40R+"f`0IKm0,1M('1#QD&Zhr0VXE6M([2'EZc9,
qaAFQq8%c1pP#5PCfDdLGJBHA3VR5GZ4AX(U,fJZR$ZejA5C+ERCV'CdLFEJa3CN
,Edd"%AhiqC(F%&kA3UI5r!e@26d$)r('"LR(QqZ2"ld4!'A(!!i$Np1JPr!bD!V
4arTFZM`9l[XH-!9FdC3kb(2+kb'$$ZY+ApU$[$+@59iMB3Vp6XqKcc3I(-FP[EZ
Xea3I0mbbVbC0-'QeL(e`dY+#RNENUIf@$J+`kL*Q#qr163&KN!$D)[DiP1l)E"@
`T&rD"D%TKpa0dZc5[chfZ'rpdY%E695Q$h,QbF15Alm6[D2D'hC#dM04NNS,8la
*lKX3ZdVf8i1I#i!Jl5N+1(iK@$'8[KS"U1dKQ$&q4eJ,#b*@8'PHEEXM$4"f5Te
YQ&l,Kb4#5JTY($kG)SDiI`H[5@p0A!*T)F8R*SY9$V6HfKZF3X1M*2e[69cYVFG
AC$F,5Tei#KXk)HIah24T8BT0q3VaV2b)'hNR!rZ56!@[Z*5BjRMFKcUIdH"IKX&
`md+2Ad+*0JVhq9`Q23,)K+!PJK[[dKZFdS+rliJXT"U89`AXe5bE"d+V5XqbH-V
4Zab5AfB,Kqd29LDLB4%#H2dQeB!EaH&EY!Gkp0NMc3X`9#faA0K`HEHd,,)DPV'
$4(IJEedXJaTNH6Fj'(r&)ECBh88FG3X'lM3Fm#FTaGdT(0fN(-8p"Jch92c%bm'
QL(SKSPLrrpDYp6$m6AN9Ga"8VE!9j(SrKkHefR#ljml)#rj*X"&dN!!l-YYj&AG
I9&1M&@BE$4!cAZ[-`!d22K"XIJm,me%fLNbj)EH$NSj5H@B`pY'+6,NKcS154q&
jCTEf60e4fiU0ZG%BSj!!Rc*eLlQpY4%Fh6XF1U341Yd2(#Yi5V82(0B8ZbR9`,3
LHd#UDb96R"i`'qC8mV4PXhdBr`AmDAQi)Y&k(T3,E%PQ`"Kj*ZiQpT8`#mT0P$&
hGT),$ei&0F2Y`BA&LM-(Gd`8m#)*%GeNR34(T"GfbjjP'kfQ)NS4i[)*"0fERAC
(GD%EI`PI`"&UCTCe'(J(pBah,rb&)La0Q640D'bXb3Z(8EKj3GSK2,"6%F@3!,T
+BmdIi8ab0V"Za'&hH@m!["*Ic4(N[0G+qRNQi,K(llAplcZIH[Um)NT%'jU(&KJ
TN!#15YYjNj&QDeqBHTbe23+&4emfGTaIZ%jGYB`#rAI%G%!2dmREpBqmM&Cpc&G
Ne%VENhMqU1SDpcM[5r4"iZ-6VT6#$!AM#Qj9H#a6LVTfJm`6PbKl0K'r!i2'3rR
*+%b9[E02UAr-K9hBMN(#Mb2-A&5Tm5e@(AdKKBLIL%XR)JZfD&),j30l@kM)mAc
hVHf5J1h$#59EIX(amMh&@#1Iq6("*P`@R4Kh&fdqI%P`T0&Z`KP41F2*UTMD%2'
190$Ylra%#k-)p6UH`jm4G09rD`GTMGU,R`0YqpJaDlmRE5DrHSA32iTHm$P8r,Z
@N8kIB5N4#Y'T2i9@2h3dq!JYYfC5!P&`k0X,1aPV2HSPk)5YmlF8Sb2T[QE,V9X
"i![)*%a3)1`R0bRic0#eGBC*Fb33$UqfK1'Md-cZ$1LhP4@3!2kG9TQRXV2DqpN
,R"l%(l4hT%e16hFE"a(d%bN(#ZC*!S0QaGBQ0[eB"i2Qa3*QG[9D%I3Fk[J@,EK
j6*LMAP),2a#flK!kdfUfJNp8Hd$Z6(U,JPZP2QZ3!(TYT6@pj*rqq[%3U$PQFp"
`Kd(Sc0Yb"fdk4YEa0ZaSp(S)i(4$()r%&RG'S2'$if@+8GmL(&!9eZP*VEqrIZP
d[B)kc"XraNNrPHhGaV3rP55ldEIar@X%DV!)b$%,"153!+#mNYmT8HZdfCBilJF
KikPVPBLGJ9KJ)E6NhU&IpAa+)"B4RDC!G8&kI@'Z[lUUIa`H3@pp"+k3!(@ZNm%
BP,PifAe8JR250&k"DPAN9D%Y9,"alL#2)*Vk[@$r%2b'mb*fP-)dDZH)9(`pPZp
6$PPI,B8P"GUHm*4QE1XGC)aGFLkcbB,Qhi*l)YVbCp1Td-`EYp18ZJ@26@T6KbQ
PST!!4)I19Z$adSH5KS8$Lc$5[*lFdTl%[Q6$QP,i8Ia$8C[AhbE-AQDX(,Y2H4M
GPN[&GikRG0X,a6VjlG&1$439aF@hMQY8iFmRd4&8$-m[+*9BVU'rV45UCa3fQ4B
Upchk(1hM%P4fQZ0U("@!LlRbq@'&%dG%BQJ(8m(UrC)[i6A""j+H-ILH`J2i#jG
e+ER[BB$DQrH99VG0DTNi%DJ5j-)jPZ61j!XB-f(m`RbZI6EmNPqGdm9K%4UjB!Y
pQ,+IP"`pp"q)cLD-,*6JGJ#mQ(N65k1*MQaCclh5)QEVZ@X"Ud#@fq4Jm5PmU1(
9)ST34(K-C$`Q%@-$@EPMbLSN"8crAP!X!H#raT4f!ImELMRD"q3X5Dl#p5!eh%p
E&)[r@VjFaAQq5hU*p(aCMcC%IJSl@6AUU0H2SZ&cD9P@1ZYB&%#Z-C)3FF(j-5d
3F@jD`HaQ1NCB"G!+hK#5+UGV"ZI)`Bp3h19("ha3NFXq(#J1P16Y-BGQChUh#qJ
kelXNR(9NfZLe4[Nl4a$k6#iDMI&6TU6&mVj[Dpi`ZfbJRid-"N%UqCk(8ZJRNpb
HNFcd$kJ)!*2FDC(F*C'6p2ZSc')2A,[[)$q2U-bP$m8RFGc-k!G,+SPfL8MV@pJ
FGqLf*PAm`UXlfdcB4baFi)be2(a"UmC5'[U!bf*$lGkKGmh`5pH254a3mLDq)@h
,Vp*ZdRG8Xl5X2'id@QU+k*5IN!$l%k8VDr+GqFj3R#cG-rqE8)[KBNI&aVjp*ca
P0a#60DN3cJ(`qXZCQk,EikSc1B-cbDEPb40,T)NS2*!!B-ZK%TYFR13VAkf+$@Y
+bhINCYda"'Y)hfE,rXa"%a$EXqKP)4jd%+,rmXb22Gb$U9EV&fmKdhh"TT2*QcF
e%h$U0@b)1YG%T5NX-Z!-8qLpkM9X&&V#a["Q08!XHN%pQ1"lH*6U+((VcF&(UMI
cH!YZmB5"SRJFDJKrrJ`[IK%04$3Tf(VS5fRpFQXNiBTk(-,#&GC#4fp&H2!ZHN(
AlIKA@"@*QcVmB-cRXF+A$LB'mYaaRCHL#P+&l6%mqN2%-3Z0R,P*lTkID#CJiNG
%*%cAPQK39*pSrPUU[JH`VBMK+336GdqK([%!Y5)`e,V@D[hQ$!L9r9d1#IU`@cG
FRIRSdNEpkmAj(&dXTZbHMUN`4jI32@DD2`GdK#3a(0SFZJ0Ur8qeUm@H[TN6SNr
M1)YmDUK'D!Kf6DA&rP65"Tkdm4Z%TBecLM'R3*l3iJcd6D`+3+LMAa@+G&AFNGe
,X,P)+kN9Tl+S[Dc&FdRVLq'Mi1'P0hQRf1X,45#`G,2&F$)QhXM"#&0YBSS,%,i
40Z,pq2m"-FLLEra2ST+!)&p0f8pIUZM)-6ULC[8jQ"1AHTMjZQTiJ`Sf*6'GPKd
dN8(P0BY"bM@,3I8fLpXcYKL60Vh&0FdXpj'UfY+I5am2kX@fh6b(Im5K#a`#Aq4
-0@phd1iQjk&D+h'p#k3Gc9%Ic83hh-e%0i60fjPFNHMC#3rrC9"1Jr#4PMSRd5`
ZN90$5ZBc)G2&d)IBM$C,iq)4k$5ahU[+G8[B0cDK@$-#Dr@F2Gc(9T(B!*J+0fl
0BIb(NCcM%JrdiqS2p*H@cD6pp-fNCrrl#Am2#YL6Q2fTi*KMC3E-8mSXDC&rR&$
pUH#BE36HDqP("b4350(LLH60+Y%Di053!$-'c1M+j)3ULAh%82HTiCK*iM$c92E
iE"F-9$EfNb`fNDP,Q&T#-&MM!a(#&L+Qj'(l1*ai)3-)XR'YK'%U%0cN`")jYhT
*0(Ye4k9mNG5"`q3KETTf2(b$YrGhKI$BBE-bG-m((U'"h+Cid"P`mM+d*5L`0-+
e9,DQchFXIF,XImf2q)L'8Ire[9lP595r!AVh,$D4r(IDQ(+dDRJUc&F(%J@Qebd
rbDKKY&l)PKC(*6IS!@6mFYT[fCS4#lVP2@YGKPEFrH,l#FCP86R`DFLETlD06h1
U9-cPMM6r`!-dYhe4jHJJrfmK%hhY&hd80!4"hC!!qGrrrq9@TBU98'KrThD[m95
5-M0&MLh9$+i8f(me2$I,!9V(,j`JBeUR2Bm2B8(0M@)QNi1FPP)Fp+5A1CbScdm
APlY[IEUl0N[%$a4PdXb3!"mXL6EA8b%-aD5(#DS`frb6fZ1r8IlT(rfRp([`"r"
4MRTkjUG-jK,3PmU@RZc!D4PmCJmH8(2X`(kKhS`ed$8aI8ZSfPFEhe@-)"YXPFN
G`3DKPVY%HH'+4,6q9Lmq`)2%b*m2eV`-kUU'V+6"128c#Nl(Z)E2jVX!5mRl@TH
qk6HFKbiXS-c&#*A3F56"6hNJbc5qf3Z@LZDRG5**bSr#Jm%Q,(%QVapdb2EM6r&
0#BqpSV5K@N[5qpNJmFfAG1SX5G[d#CFQLcFb!A$*"iEr$LcI0+1HGXep#P@Bi&$
#G,b1QeB0ALDmAjYdLX+d"&5f1FZ,'5%38RPPS6TAY2eQ(F("eNPQjF,"0pS&Icb
RpFYPJrKpNFmiM4"YXXRlpJl*AG(0Y%4JeH1U5FSEmQB#FSY$$,q`lRi+#mFLfbk
64iPV[0J0IFl9Jj4k-Dlb[(qKkDdb0a&+SAC2MNm$eV+"k*5i`qaEGNNb0,9Y6ZJ
Q3U%H$K2e%2Mmb#QUj0GhVT&*dYE9j)@[9%q8DRCiL@&VVU'40PS(I3p+0kFYb![
XL(bh4d06$9,&F0ZV*1+L-Gd,P[e9*li2A'3TGeIC)M&1Gp9%MKS6De%T9Zepf9M
Nlc)ATCj9P0B1)+Rj-",E#2L&RL,r@bNTp%,*#j+K(`H1#mDjqQ!"(c+ldIB9,!%
fUaA4`YqZ0HC&9JZF4aP5lc2aPD6"['(F4l0#c!J)'eie(FC@dY1F$ap&p*K"6UK
a%%h&!V[1[bUAc%h@p3HYeQGH6GBN"jdGK9ELCem2)9Y6YbFb%jZHQYVj[0%4&pE
0"jFGfeEprJS4r'fkALR@%&lS$P'+l[0PMY!BULhNMDFYYj9QdVa"PZiAHmr5[,9
,"GDK3[#GLbDpVRJ`rZC,A,1dZ*aT3rK2qXLQN!$QRp1lb*'pU`A,F)pfXcHi1$%
c3P5-8p)DhM1(hAdL[cN!F4$RG9kcY5++eK3E`HBeLJhV6m%M4QFF&[P3-kVG,kf
IHX[qee51'SV`$&VAZf2@KV4E+PpPVX3D9I#1TJ5IDGH`EAeSmX2LiiHC6,1F&M-
)F$k3!1B5*YPRdXKGac-DmB3j[l1iZ2EVNmL`FUc)Xi6ER0EjZcJbh$#pakGYkPh
E0ZBZ*KrIaG*F[GYi$%r)T--f-!N9I*4hbqk4K'FXe!-`[H"QT,-Lfb[2#0Vf)Jd
$%!1B6QEUSK4NrlJi%iYfD`'Kj&mm@$eRPcTqFa!hNq@$1Za!rr'mRrMDAhTS[*Q
SeDJES[6pSYA9)T*Y6P6dYpZ!SY8qlH&(FiXUPEIh@$5-lSfmf9(Pm4#6Dre&GiV
1YllCJe-4-f"Bl!YGYrF0'Zd'#iphljN",Zcda334jG`*"mdk1YR-+"2Ff$824S-
"CM``cM(UYGjd#'f-h#+c%LckXqHN9lYqpRR4T$[qZRJlrXLSmHUQ-VR'a,T[2+[
qd$I"kkffhYXI-ZM[Xa6'(J@L,&IqNU,9KQZaVGa24ET`bB6!Uqbc)Ue+cph[92k
B)M'5rhQqmc6B[iHmamDjIVHL26QMM6dTTUi,)!L%Za!cE-b#4AA#E9#llHYib(6
CmREqY$'REGUlZfGc%5ab!A6lFN#lEBklJ`$554B,G2Z63!c@@Zf$R0**9acE-8!
T*Sa4Tbdq$0Ed8NNGU4),DGHpIqT2NldT-eq$pXPKBY6R*Q`X[bZ3!0aAB#CY86T
MM9KFelfVK-a!'5V#4+lp'XXbi8X%hB!)Mf(+&mPKA4I*$Q3%2hpi6ppbq609rE8
pTE6qLJMEMBlViYFp'RZGIjp2dE$PqFZAEMfPqZ@i`#NC4'9-"`&N$lX0pM@",5A
&S6cV2GGIFT3cZmlfTbHR1Tbl,XmI4lZRpTbLSeJUZ`&L4B2Z0+&MKIGQR1+U)`S
e%*a-ZrVfS"$k"Ji[pbI`kSph@qjAk'1U'[I8A&dqRjlAmQhLhZ14MbmqbMfPSlk
j*SQKkrlA5lXN0`S`0%l-BNVq-Cd2+!!#EMaZ5SmYhBlX"k`BI-'mhlj&Tl-k,mC
fleUrrVmK&9rS*e4`[$LleUaQSSVddDhKl1%6PKHm(I6P8UCR42[Xkic21-A"V85
G2HI1pqaF(U`[44$8l4Z9NJ1RBRS1-ZbjI5[6%aPN`P%22ZXPE["Q&`$24+ikXi&
4PZc)jAN6YaPNBU8p45hVKmUGIq*-mA*3S1U`i0NfJ9RU6qkeGllZ'LM8'+rh-M@
M6TJd[HZK3D5ZLf6-[f*Jh%rcbD2*jKZ,32E'NJJU'br[%(BcrVP"(21+MUI&h%p
SSYif4a86-j[G!bVU[BV3Tf+G9+0e"5D*S5D`SI6TLDJF[LQ1h$!L("9JcB46aIp
8[XT8R&P@8!eDi&Ej3'p(fN"'E3I1c#+qcI(F%aVhe'R48RcYedpEHP"'A4Z*EE6
"E#2pb[S9l9$K[A$J,98LE'h+ecX14H)FIqC3%(j-1r@-cP`#"'aYPGG5'ZR8%1G
QBir[V-BUNLGAV0XqlVXBpTC$")cSR-3M&`+lprBQ%U%`kB6RZ@85BiX0h@-U-D*
-i9AkqfU(L3!1BZ,klBINjPllDK+A!JLcJ`&E@lQM*8"X`jEIcCdTDIjl@2"h,Q-
21rNLk[LR0Vim$krF)YYIl[$RBLiQBU&T[(Yi[Rik!1)GQXQRUIU%*$aF6)DPmb%
SBZmhC6X#JHkHcC4'XF@VS8TeU+m8%M'dF-@V&$GPVc"F+0lYiTm94%CV2X91`VN
HckLQk9%jIEF*RXGr##'U[CBhTF38R),RUkRGH`NB@N2C*hiVa'+HM3F!*(dUL*!
!0+rc!6'KN!"p*BL$-[XRE346Nrr'dQaZ2%RmJK3KBEff@`5PKb8CE0A-m'#a-Sr
bHeUZ$"FZqZC#l+*U"!K6Skh&9Lf1ZGD9F1b5cIIqh#F%B3"4G08e3+)X,VH1iBA
cTQLmpTqBMAGQl%Nb!3dfTeBTU!9kERK%'R&8Z(AD[-+$XfRpaRbKLq(P*Y2GRZa
pD3fI3U,rQX!(48G9bVG!URe(CbLpT!I&MRe[6mj[GfDZk)dYcq'K,lcVBKe`)8G
meqib0AP`56'`k`-)Ve0k$Lf3!1e4K54i2T!!RMV44J)Kp`#B5[cqD"VD33,'#r1
i0DGbDTjYEHMC)rk2X-2KTJ)q,%kIPQVCE@,SX#2rMdeE)2P!AFP0)kU2X(+i6Tp
rDX4"RXE0mkVjU[$ahmrPq3N$!)YV[3Q9,p@2a%&YTTT9(!G35@mbF1c48VYRNNJ
jZ3pVV1$1Li'hF6#m-q'"[@mPET*9dfcDi)ir1NSQlmJ'[VaF3m*9Ec9HU`8FX,$
KKe+HbBhD-m0"'UD6kh2*b20U!d6e8iHP(9&@j"+9HY41)Y,ef2YF-$)#$PC*HZ!
1G,IJ$Q"iX"b-)Gad`1Q+15+cH(fiAljRhH"d!5*[#iIE!@"V5VM#Kp[G!0[q-SI
f@ZJBI,B[a3X9)Xd$"k6l'0d&baL8RHkjd5mYc+a"&4ViP0*KH`&f-MNQdPS5@8J
@aIi4DM4ZkTS(mm,PrPE[dU80!HAD!AHF-[%4!J"QGAfhehl*ZpB63qM*&4,9BQK
G(LYKaYmTF+ld)e+TU,YA@4(YHjhc4FPh*Zm0)H*P$GpI)b5TpmF+aQ9TVf552qL
5Vk4J6GmJkifTi2q[+F9T8f3f4lL3!-8e%,!"QhL,%8j)01!D#*i"6Fe`a6-G0'!
9b'qCmXKcU[,`-9%61#BkM26%15#'*X+qB6ED+kKT8pr)9d5DZ2F+j3&R22j9R(l
%04!R00G#h(6!hBhaSMDbGJRYIqSV1$p0AM4TLbhKkICF6jAGh56))1UffVP[I!f
TJ`U1GSXC)[q%*V8$3JXa&$#ScdUZb-9IAeZJl6(b564mlK"`ZdUSUk"m-I)1T69
Jc260HhKMh@B)bNi+)cfT8l#3!23c#Zai6f'X4'!ZcAjMG1148mXic(LHa,Ad$[p
9KM'6Ub6Kme5DJ5i,k@NN,b0iFe*'*S%`IDH)GYNa&5&XJ8d14+Z'J$S9GS2,X#m
!FlGDe*!!IM3!I8Q)Zc*k2"SqADKF8V"Dkhi!-FFCBcTd)j!!`2$@#29S)b10!0Q
1`e0`bB*6'9(IEFaSQ$Fd$XLDf+*UI[#'$SL'3&l8pdU'Trb[k`5VaIZjRJGpbQf
4e$mmqjF81`KXD-ihf`lrY%'pG'+HaIL$QYH!d*aV@dA'HM%i5LB18G%(GdcCN45
1V)@hLa-JIJ,--AA`-HRY[EQ,!dpmPcUrdHm+m*'GHiCZKF5lkNXi%@h)r`1D3)l
Q3RJ6B8P$GA$[1S46C"rSXkK2+mq(qjB`["",*GYrDaF(@J1@XhG4(i'h1JTi,)K
BH(1%mI0Y$Jf'*&YjUbI$ERiMN!#G"6(i!kFmRhUNKG8$"QCm"d46RJS"$TD'fM*
,IN+$2'@P++*6$M1',q0XIX[(p1*Y93TF$QH'E6Fe2p'`P@i,Pj([hCcla!l)KK6
V,!#RPrQV[CUBIMQ3!)-&-l!&3#9D@&9@K!ArETadE"#h[22qBK8'Nq8R9A1dPaZ
1VLGha(NFS5E[C,4chZLR'`b)cT(#`RTHp)e1Qr!pIM409Rih8JS'r2f'`)#$8al
pY*!!hbH92rPrP6rjilaL9Pd0*q`!+%hSrkimr0jThq1Y8pr$c&1d8[TP0+T(IYL
k,3!)ZNCm`cRrNi$9rj0JYl42B2fX6`L%PRapRRe,*ZGi#+HZfB#hrdaFHUcBf+q
XY@f6PV`14QNA)em!3)"TBYalIM2Fr9-c#ChLZ&a*C8ap%'d+&A1V+"DTI*[Qb5T
'kG*c0q)D%pR08qMm$@NJiiG6)0Pq8a1kN!#3!$UpdM,BfM!`QAKTDI`LD@Re-j!
!%ci#*RTK3@N*EK6'0mK12*Pm960KA@C#U-T8D3P`&!$BRcL2Q,S,N!"VZYU3!'Y
iY$PUDmF[N!"kFXYP9&fi4Y%Dh+@-I6$BMLCTQI*T%aDdN!"cK3P1-0KZ94Sh(kN
D0ifTDIa"bGRV#B&U-2A#CjDEUDT4f9Hj0#jj'"9l"I`6j[,LP4Lb+l2!NQja!59
'`#9ZHfZXa8K`&JH$%d08"#cQRdp!!H`[hcjcS`XfD#M!U#NCRTYf((""44G`Yb-
Hfri85DR!DlFM4RMFj"04@SlY&l*"[%C6D)c!2'l&,(@M4DF#90HU8Dca1-@9N6F
"XrNLTSdi,0bKPZRhDb'"UjX6VQJr$DT[1Z`0h9J#B$&eT%%fTB,UQ"bFb,LK)E2
$j&45-T(KJ4)mmd)eFm@0XeTBS888#@I[$YK#NL2mBUcMA3LPr4U!Qb!1#cURh46
L%DIX2DG@e4q+'b50U!S#%ZM&LVIJVpZjcX`Lc`X4lAGM63LcGAfjNQ)hADeQFr8
pP#jfV$6Gc'Z5N!"Nk+IrjELPI0MQ1#r&'I,pJ&)'ID5Im*B1lCE`'(MG-6PQ2+I
q5XpBl(e@H)d)UH&!,MGpmX)9D9B(`aYJ9HeJl!F3B-dbLd!KEM-L*HhrIA`,M'Y
NrCiPUTGI*Gm#qPJ+$[`2lB%FUHqPB94@f`S`&$-X++8cr%5Pq(eLVF3JiZ81%D&
`NLYJreG,dAU,1JZR1Lfj1Uaf%e+j&&'IXpZpd@-[&Y'X-,-63UrM*`-N&Y!&hhZ
B,rY9U-X+Cbch3@VUVjNl3Y`kFDFZkL"@c*1-8Y`FMTmdYb&e6ji*IB2'6F8F4BT
jGY`3hQrZG2l*ZB#p1!$qfIjUd9[VGqJipFm[4$'5,)20rhRQra"`mAcVb45*Fm6
,-I'`B#iTH[$AI-mq6`"JbM2E#9fEN!"[J3[rB-h&GKPB)+I&P,TV)fBk)Yq[lq5
RVI)L31DcBTV#"FZ@9+&pQSjN1(K89%STA!KBHPGp2CV30RJXIAF%M19UrSU*1b8
*#rh'T'Tm(LLS**!!1p3,&D"VAiN*0Hr&@,Nd925-`A-XerSTBhUmqS'D-dep6h4
,"-NP#lSc0L%m)%j-#"UVeD%Lm,JXHQb!fRCMpKZ52$kI`[F4rVFA*L9h2UaB2e8
5@+D-V3CmX83pF((NPh8,[+h*2iCU1$PY9%BrdD3i%$XdQd(LN!$Pk)fiJE,Nh@K
DpMF5rmJ%XN6GdPV)&(Rr)Fa!fdmF58rJY)V*,-@G%G@B2fpUK$XTm5JA6fdaJa2
pN!$L6qQe05Jl'M$KE@+6Vik-"GT#paG33`Vej5+DVN"+SdJ-j4di"NT&[%QAkY@
ZVUj$rRiYJ6qS4pTM2%CK6RIX"lKeTrr9R`X4reEY"a(-CL$&-6NaTibG10AU%9j
$A`rKCTLEqMa+%Sm('(RKQ&M9L`rFE`IXHGQBd&QjNFhK!Z&,Dj%BHDLB@!h3$ba
$bEI'2,*V@5hX9&rAqB'3!,kp3rIhc*,L+`!C[M9CSH"*C(21HN2*8)%X[V4NX-j
0#`Z'eFlI4-h)R32lME5@32@+EMridIBRmMr#3K5qhHAf'UpJ66bFP,QIV#[-jEX
BP-fqNY@2L3V1(m#9"QD'BqNrKrlYhpfM)B0Vd3B&HZ&Q@Dch98JDM[Z23`@erf$
Y0BIq@MrGrP4V'PhPbQY!qVR#I92l8DkpGYZ80ZV80ABk(E6GH[Qj5S%9!Um"-rq
"(r6#$92#58TJ+,90P%R9ccU&-F&Q0hJZ'VqQHPhc9IE,b"$@HIF4ZBP1Imp(102
jprh6TFm)BaUBhBXC-(-5Grp,#9[bN6CmZALIG%c"k"l-FfD,LYX'06&$9S8cZ%F
6$H8Tq9RK[mpm!43Vi%iE&#e1'q),aQXIi-ScSFb+N!!H@IXIV0jTDh3Vb$c#MCb
'b0dE'3TD0*DHJ*-JI*(0&0+iQkMS!G!&!&-c6PDR2!9Yef(b)Y2LS9018PJ8PMf
dc@AMAQpP(PNXHHh!AUd4H)iH6,L!'`MjJAMY3m+mRC-`JX#!cr6UGj5`U,Rdp`Y
8qM`XiSFT2b#V)8[K1Bb8K&iHLCd(-``pE*3eAP@+%@YeF$hme+M&Pj*aUchl&0a
4-D6,qm)TlFE&dcAcc'BXi0eQA[-(#RaUPU8ieQbX"'*aKUq,E@8k+K[a9#`mcQZ
13&'Vc*I-Tqfrr1l02fl[lI4!0#%@![*pCZ2N[RM0CGf'6qANI$IGli&'(1LAZ,6
N9U%T&jVEc6CfeJ)G(AKl`CA#b14iVMA25`PVCr*D[Ld,Aqh+Lefr#eXLN!#dB2c
0be&pIFd8'+&"+4br#`JTAacQ,,BEp"Mak$!S)+*fER#BVpL+!QT903MYcY!2T`[
mqhXk*EY",[LRQ*8Bir`Xm'Bc!e2pTm-[jT95c`dN,"KFTAdV0dfKaF0SBm!'5!I
@cc('5mA0@CE!rl[%"L`Ec-(5&pc$(j2D[a($0E,'m(Baj"5$33HfHFI)FIS+)E6
$b-,2($U"hrqC3kT"X$j!ZM`,TiER)MFlc%[YE2),bIXLl6ZR5k1eM-aVHX2'1X9
S@I9paKLU`l&bcefXS"IB)[@eAD!"kJ6h3DA"0*--IU,EPdI4)CCerk"!Y,GCK$!
X-%"r%Qch1)`[,N&[ID53!!IV22VA3"b3!&LVflQ&qX22LHdB5-lHTckMbSG)J1X
l"bpfY0L@%"XQ3iGI0ZNNqd)$#0ZQ`$(HKkjG%L6HQdC1VkCC,"8q6k&08S-rq4[
LT9'F5Cj!*(K0`F@pSZl,,&SqV2SibdVcf+`X3Be)QpiJ`2Y,c8eALiTYU0bBhLA
1CA0'KPGq1mi[)3cRD5aDMF3lmbmkqE1A[%RBG,+qk%2FP@YQrYG+J6#X#EPAT*B
2+6B818)5YPVk2FKc+&2rp$`(G9GAA[3VT2IHkiGV[,$FT`3["-mc,)+0m*51JJ8
!V9Jm,jr&eaG&ALiVT'cj4F9c&kHK(LL8SGmSEp40UJXL8&lkT$,l1V+eqNP0h(1
i93d8YG#kd8,4M0!mc!0#5D)CNMUraCmA3h@[$93qMTr&de"$aGF09V(9qK"9r[Q
('cf*rN#hV!pHa[()ZiRl'L,Y!`rd&9!RP+Ye$!hbc'lRRA[-Qa%YXUBXmd1ULNV
V)G0K8XArqKc8G)l&jrT58L#EMKicBFRSqNlkcU)V-GK*ZaRK`Uk5MNmmR'`N(ME
ea5AJhcY(Nb&X+VLl1m(#XM4VTeXI9,XX`B0ldCrEeq"!e-@1fiPI@+c3)TJDc"[
&[MRbV)NL@,kHmX@EV)D'8iV#i#&V!pQ1`SPi@%!CZF+l0X(#i&4VIFiE`Mc%QaI
b@-+lTm&!`G4BZprA`JC@@+cP&cdm6)rEQ`4![TcbTd1e)VYaekJ0jiMFcPGA'dD
0eJ@4I2pleR`kp`K!-EU0JA9i"+5arUM'+LXPX9eUdYeHiXD26pSGc2+N*,kSj#q
+)A93kIp"4U[EG5(T*U'G$a+"5a"#NYH*X#MD3L+aLSr[!Pdrfl*9Rm%#jGc5Spm
'VA2XG98[+9jFQS((I!hDjFmGj'&eNk!r5GXZM0rUc!3kT!2Uc1Nk!SZRDLk*"dG
LRPlJVip'DBBXr',F0INJ*0SFh-eAX(H+dGEjKAFGmPi`!hQ%*-R9k5GYCA4fKm!
V--Ic+4!TGUima$hj%!,`ATFliTZ'T#*bUr)DASVh69,B!I%d(mdp1Sp%ebCd2(S
,4&[GT`#I!IRhfjcFqKrhiB0FG#Xa3bcj3Mf%6UGHqVlLe,rhh!B$h-lIE4XC951
8jN)appbS%H&'NcP"RU",eEX2CID%"Z$QG1S`#QN*YU',QPVeUZ%Fhb!3[ar9d'G
[Fpp)rk1#pq5N0h$a(CkIcQPY$Pd69qUlj@NDEqCZkba"P*CLkm`c2#3eh53!6f*
P'A1PP'KLKq%6kA!-5bXL6XQ6HIHV@PN"k5+*Fr2F`mqI50l8cH+1%'6KaVll`X9
m1i['FUYmXT(GaUc'Gk1QF"-iMZ9A-'S5h5Ed+-!+)U0$)QQ,4QXb3,TMfreeRIa
d@B0!5Z6C8kqDlU&&Q@pU0,"ZVj,U)MCZDj,U)$E'MkXZ`-V$KkX+`Vj[mXN-KLF
&$(bRpbj8%-d+(,l0mRF-K[qqEfXFRr4QFmA4HT3XGcZ-A2dm"`%$q@D'E0&`i23
KTql&R!1@CYXHd4UbNY&DMRNP-B31MJ9P[6(h$L8&AEf13q"D*Uq)@!$2mraG&B-
lbplpFrk2a`UM#NJG)kSBYINHN!"rKLTTf(JDU$[8,pX"fcl'SUY9C#DP2'Km&Cm
c4BE-DGXlb#pcK'P&(-m[ap&2DFTTM$XN+cAh69FD`fS5a[ZV'[HT9be(YkTElAc
m6)(BT+Q(Rp+eIDYU+$Xi+beU9PfH"k$P-*!!f'c'DD[A3iBl-d`c@B&-JG%"8-1
V!Drm6c`A'K-ETmFD`$2k-Xreljm[LmN*Z*!!iSHkJBmiik,k%j`mc"UFFaH`#AD
dI%3RUiShk$YV+`$cJ8[K6j0P4K$*2!YLFp0cAc`-BRDjaF+k(#Tc(VKI2$-DGLI
,0S&i3M&$1I6'5#DGH&E0Q9SJ-81dp'c5P(h+41K4c2cS1c*F96&@3AQdEQhJ'L-
FI18&Hh!+GrqZKZ-fi+V0+H4`XrTld3Y0TaYeVZ@1e8PVq161pR,kj$Uc#lTkhcC
XTVDmIrE-fGK%Xa2U!"#f0hhfXe5KF+M@(Qi6VKMe`M@riQXD)1($Ip90+D4e#bY
*1[i,+QK4ET25@!)*'(4`L*2Rci&JZdYNY"0iG$LA"h3Q%VLR*a'N$5$d$-XF'*X
0Jph2TE5`jMbJ8fKh*ehrqIRp*0Sk9!@$pVJFAaF6`6&H"-S#02I`MMZVBm+Nl[+
"TQKRm+Dk!#YSpMZKp&+EYVCTMjkKaKYKaYY20e1H%V'eSJ!lD2Ek0[T!qF6jJ6e
SrE5S91A%mKZqCSN2HfX)A5+e@)jCE1#6d"-X1Z`3LK+XmQ[fd0%8Fq2#94$R'`T
B(NYmB"a8(p9B0,[B,4!ceXYd,&6TZa[mmN4dCMX0Kj-cR3!!9VYI'A6l22B&2!c
4KSDkAc`m#Tb'NPq'UTD[0m&IhITZSX`,U2f%!%E1SME'5'%DqY5LN!$b2$!!*`U
3!2UFSJ$cZc#QV6$mVEX@`J8"#j*cJFJjKZGh#6QQN46%0cJm)!@"iV[%RX6NQSH
,JI)+a22&J`%U2BTDK&LjXTMM+G(Y+JU%UVL9!kGr1SR&pVX0R`2j*FPZ,aB2a[9
cP`&SrpqAT!#PEeBk1jldCT)4F(0Qqm[K+&U"hdBa3UES*5MmZl(8U*GcUk5N[X1
"F8Cdq[USJ5Y'-ITSU(4R$A"c%#eQ1`Z(FjphF*Zjaq*)RcSD+"#ll$1UI,5U'hC
r'F,0TEJ,5mq3!'"cS"q3!%+3!+XN!cA,"CQcG+BpFRU"Uj!!S&"5Y*!!'hd33%q
15ZI)NPJ63#TQB-)#De9hrefc5jB3HCYhdU`p2Eek*Nd[-!CpJq3aH!EBJj9I+9i
IP`BHJc@NlR0`08&%2DYHN!$LhUISYVRpee-%#m-U1@a)j0*qq@0QYp,P-4Yp"Q9
2'09!JrGLU*!!3)1HBQ!dhjNrDA&'HZfY!CR,VhhS-,[X-a0mY'XEGbe!G1Z$JcU
ER)9`h2N(KdA!9L#5@fk%$cQAR+3,d9I2"aLbiGeV[2Je%f[5*hF$YTA4#rQHRRa
4b0,p**kb1MU1C1Nb6rb@#qaFV,ZJSTL12Cki8MLV#e1N-XMZ)C!!5i1h+RU3!%X
I!XM"l5a4(fNB(!HrI5%QF9K2)HM4h5j,IL4QC[$&!-EE*(93'K2#ElUBmBKh)XL
FY(lN'd*`M)MN[Vd(Id)b#rf`UXCVlCNHM)%"Q+!SGGDT#YHedH64-("3H8a9C(k
QR8+@k[GJerS(*%[4XADD,h*e4kqYYd!FkV2fXGBQ-Rm4K%rQ*5$4F,9&@12%EP3
(2GQi1"mp%CRaHrm6mL#C#`B2AId(*RHe0lUI[J*#C8NpB2Hbq2HiV9DQ)LUi1(8
KS3Pm6&3IYa%&9HY!5YN$8NNarhdPpVp2hAU9$mUKAY3BHP#ej&$ZDa`pf2GBJmi
j,M26KHR(P")XFeEbQU+U&jEbrD+UaD0mfIp50c(*IGhfY%Q2hBT[T0qD%cV#LLX
kAMb%Zq#mfpK`T-&0h4'9ElkZCJ(pH32Ma%)e0"[iPM32)2fbJCQBU6a+E%idElU
Y1TrM[XR(@S(bbAQ933mTHX(JMQ5#mhamNU4)l[#pT!SrGZ[cEIF##dA3$X&%$JY
!H8&DRmqPrjT`&!m@UAS2X!1dS$B8)Ia8Jk#FGVZkGM'(A4!QYeMS"F0dh9CGZh0
p[3CX'JFZi'-VYQE[4dGKYKL[4m&S9Fl"`Fq4"6UcY8ZX68ki`8[N3@B,@%38&!E
b0)fJF-&1XjECXbICc[pjDc'4rBeVa%%35%Q8"F261T8[KRQk!R!2Y4fJ&"mT2F[
CbYe$[h*TYB4p8L)SSeKPP%mD%eZep`*,)H&9"3-8k"Z&HZE*aHah',Bqeb!2(K1
-Y0""&PM#N5RCpYi9Z)f@mHkAAm*[eXEQAr3DeJlQAarqY@JlE,NqTK,CbLp$YG"
&)6fr[deDc1ZrF@CKPIS8F@DXXq`cbYY8D21@8&52(Qf-D2NYa,[cjSKR%bGKae@
@SKj2bB8``(d!Qhd"*'TQU"'N3lQ$CF2S(jCaikREXSQ3!1`5("[JH%3S`,JNXRl
*%qERDJkUrcGj-h-"r!5GXI+`&r&hTD"0"*!![+CPUTlpUq3Bk6T!25$h@P,FQ`8
&$G1%aFM5'GG'3%e$MKk2$`@iKhH4RQ%6+AU-(S[*KBqe&"e-DYC2-m5dA,aKRIQ
iqaaGSQCPDDHCGEKCr62SNcNJ$G*E5*pm(p,ceERXb,"C[m`M'bhh!lX$$M$YrQ'
G[h,SYH`I0Kj&3NT*EcF1mB(pHDCKRD8S"5SR5J-M1YIQGlM#2m(ZBM%JHFM6@I8
9*N)'P*HUZdhAMN"!3l+hTmhPHULG2GBUmE2AfK'MrP4S-QZ-!imHIA-HclY`!Ic
IeAScqZ)-j#e4m1,"cJH4RZ%&TZK4a()bKreBCUFfpUIekfEV3@[Q6+A@GN4ZiE1
mKS1mrbDcEE5cL2lXD$+e*q!$Lh1+TKMKN!#2!K2QE+8!iQQcM5pSRbUe3UTH`-%
pBPlScNIX(mLN!jJp4Reh0ajlU0hQX6TGZBX#!!k1`MH@bcIbbm,&b[`3,V2YB(5
@9NpQLHjm+LC+FQ*VJfX($mGJI,C*Q)I(%&qh(6Llf@$Hr'#IY"AVCPc$4F`CVIJ
F9)XF3i[e6kel`P1MLQb1R%q+Rfc3S0),`GXeE)rZ[phT%aC$*2C'IX'K0X02id3
TcYcfYP9j-QamHh"b%lcUe6YA'NiZKQYhXCI5&Gm,dDhrk+$%6E[(@YU(FMSkNFi
LGcJBK2,YZF-6G)Ie`TkhFP4cr(`B(m2SAlR43(bfH*iL`ir#NIe81U!(@KV#$Jq
k0!Im1X#cKf"fY-4*%+#fPFR%PK#+YM4Xr+SehP*cb[`lNR!BrdHJM0[qlk9mYS[
M4k"0,6'hN4H3!+#p@XLf%R1lS$hMCV3I8lNHh[ack+!#9BP`kRbfmjk3!+$Qk4H
f-k82q$@l$clZk,H9kFN2ZVLlYeA&%k#p"G)B!-RYTj!!r1%bXk4cZk"Tc-rmk0U
j`d,GKlTcPLVmA6UXS-XicrblM`Hk-*D4ACE)LmH[ck8"`Xm(&eh'2B[DXC(pVK!
&imQSlr@V)*HIq)HJjLLXS*YhY"J-1J&RZe0JPIcm)(FbG,RMQEPh0p!3r%H@r#6
i0cKXd[RhjK)EB!1qVi2daA[IZL$f04L`0Kh9qr#EAIL5X$DB)4qfI3)h"&2UiiG
lb*&4`CIl+PfK0qP8F&G!&I%UHfYF-ErmBQAYl5heKX-F23*@aXL[k&d@AiHdlM!
V4m3hqbMe61SPKNNZk0d4%cV6TkffX#%,V,5$j%h"Y5X`9D"6K6TVpIVlTe*d0kX
3`PE2PYp4G+TFQHZ$1RJH(jSpkMkH)hN81PV'q@5r(+GY2N*B,$'h#@cf`LM5AF*
BND`@YeL8c10mSXc&f9C*h,@4Z[9*@#`6Y`QdjX*0Zr`8cFSE38lQCUVrZL)+YLf
BI-1$3Xa4`rC*alJFGZLKcrel%,[SS"@S6Rdh+Gp!%JplPhT!PF&l[9h1@0iQ3*@
+jc64r+Ip!r9!)3q@AHG83-MmNLq@'pJ$**r0KmGbTdQ53$I$U)-&Em2$Jh*f-d0
5V)J%)9%&RNQ'Q@h4THKN-Xp3lTI&qkjBUH6[A%mi,$DDfXPMj%CX1X9T+5QPEPa
c'RFZ1QY!,)"+HVr)N[`JrF+l"YK9ZJ-a[VU59,G[kiYl3UA&r"Rp[B08#3VXrG&
!PHfM[CI3@,JK[CI3@)iKQJHZI4aJMJM4`Vi'A61eLlUR54abqCmLbUC$Kr#`[CD
e*LbSq"jC5CHPq(8A0l3ZZc+6G'GQV"p+%"2ZcB%#",91B$JdQ+ZhB%dl)iq8`[Y
IAa!kSbE-rG1K6J@9f8Mf1"p1IfffihQ6-rG0q$3pH4UKJEq(8MaVdhQM)%$9)45
hY&HQMjGlF+b2G3T0AQVh%,#-q5X3FaH-rh9F@cffhGdC)U%i@A,4@B6aDJ++DB3
3ZX!K*66SeXcp(4G*k"I-)Khpl"I-2dJT03++Fi4JbE!(cA-6j@QR&@d6l,dp%lG
"j4e!qRbADcC+5&lihfUYHdB#Lp1+SkJT9p1"SaJ49hm1l,4!LcfcYbif9,fALab
C3-+k5NR*Grrm8$)S!CcM&fCDZNUdGI+R`rq$pF)F1K!XTpR&5Ifj($UYT,V'($V
%T,S4($TkT,TM($TkT$eMYre"1,DILb*0aARmPGGhf%$Q0r)HZm)4ijfEZ5EmeYm
*(&`hkKj@%[dK1,Gk&U&`p44*Jc(f1S!G'1S"P2a+hr+fqC)HV$6h9V4'V55q(4a
#!Z2U!lDhjdel,$f['Mjp6+'CJqqI9I"f&Y+q2GQCiQ8fYbB%`Y62[5%!)P6pFX,
[k-*8)R+5*k1`%Y*jq8eHc`4a8U#@6"1jf'J46K@!f"d`SFc5QZQCSrapiCXeV`%
bQDF1aYR[Ta$%)01C#GB#G4(SFSB((lENYX'a+c"%f,Nd0+i"EML+m!iG--+@b(+
PS$8I&M-YRJ,)6)4keP8)0cHQ6NKkd+V2'jmHi+2j64qA,qTH*J40*apD("b#&2f
j0$"SA5RI`$[3bIMI5'I3FT!!Qak[!3PraCb"R#[&(2QI"J8R`M+hhRd6ZQXINdM
*d2)`[QYR&+-3)VBZ0AaSHE1r5`6mX"l1"JQ&KJ*-D(RH[e9BURNI[`CVKCpG6+T
jbVmEPq`Sb#pbDlG@9)$3[#i`&b+3!'35pKHfrD8Ac0*NHI+5hNp3ic9G8+Tj"C)
-mJPV8j6-Sf3ANiReh+bJH915US03E!D-HYbjpC0@(l$SFik!2+I#MR3i-L[*G#,
KefBYC9Pqm@d$HGEPiUXm'KT&l,+eEM9X-0a(83QL52'VU9Rl15R,m$ZdrIL3!2c
)Ydd9$2c$q2LfVZkZ$G6Zr-0IV[`aMJ,%"KN$rK5e[3dJCYb"b@S!0C%0@,6E$r3
,-qdpFmQVT(jP5c`Xff*N0*B1TC4J!Ic@Z!j02KHTXmb0!q-qlCRTM4AeK"-UccG
6-p5*2bGU6bB0h-lra8FN'"MjY98`$e2q$2Fp4h#`&c"I"8jUY6-*QY`K)q!e[![
V3Nb""!-Cm1,&+6!#jVm4GjUl5FCM(`2*iBdX2f2TXU64*fl@p0ThkU"K*$"*(I$
aDJP@J)pI6lq25%-aZ4Vd-M01JX55'dP6VCF`aQB+0YDUfRjVr`0T`b)`S296qj1
cp!%,+E%,D6U2er,cpcVGhFm1!kCL"lJaM[jiLjaF9%mPMD`UM-XrIB"H!daI3V0
*!E`d8dh#4+$6UVLETc2@&YV"dK1ep5BTQk@Tj,mh`QeI%epUrVJhZZ#lEdH5MCF
-QK-[94(PMU"1K0Tl!f#CVqKI[&,4DPpKHhV"62kAd@RbB53G$2&'l2X&DF--G$d
#!4ANfEf+dIZIXfdJGP3UZYqYA[L3!$+cd5"XZB(L*KVm$++Q1FL6b106apR4&+D
YT-%LEcFm#e+F9$TIT+T48lVP55*!D%[Nr5$&1J"!ZM-LCNDA6[q3!&4XZ(daX[J
Mj(VP-rIpjK!TlS0b3@d2MV4PlNd0+CTDQ+#@UQpp@@B6j$k6kNbA#lXF,YVpI+h
GFI'R,rcc,h&8JlKjcq$NY##8TbMM!b%k[*f0P$D1Df'*!hdl0K$Y$d1*%(d20BR
YEm-2@Q'2pQZIpRNFmS$BB9fV-T)cYqLV(APqKkR5XmaL!dXS[*@V3ZLQ!38,klj
*2"$$01lmk4bb1YN&"FT2k31(31Bkk6eCkLqAp-)FEYT%$F2h4aFhT3[)dLfAaL,
#GGUS21kd'!Ckr84Q)(%h33Y0[KlMJ5&fGB-Prr&+-pfje*-1A*PUBL1Y2)T'XK$
TS%bIBKCQrCG$Z&*d*Z+L9+IBPk%L(*LdPP,$RN#'fhh!CM2*)B2EU*p&H*D3!29
4#FYVhJ'K-&PV!d)9BM$m0fPbZe"pTKi'ba(Nj"@cDiMN'(K`Hh5qiriK1JCmr@9
p3%E,Tq,+A4K!hIh,VGT'6AAA#i'PrC`H9,PFC&br!Cp2F-HM63!kAZ5IY*-84mY
rV8*h*-RC0hjiQK-+F(hICV8k"23&6"E49L'$G`0dX[cYh6J8@NRiF(IlVAf@CVA
V`A2lDPqi999U"Z6ET8Tc&$FKUMl5lR#VR+2)FdQJ!p&eV*1["b+2m[9`%%*%aH4
ZlA2,(2aDDfK@NDGjIV9kY)2&j&2YGCB,1J+IP`j8`[Ykj#$YaDR"r6BL31d3-TF
+8Q[UFd,M06h#@)#Jq9ap2M6Jd0"[mBS9p@*d[F*0I4K3I',X9RMe0,L@NkXRU%#
`i"4360Pk0lmY&YDF[5"85XGkV'5LY40fIVh('kVLqGN3)U(C%h9"dNM@M,fU)Ta
l2E+f0'PI-NjUX$-ANYA0%5BN(,09-Yi`A)Y&'F4Bp+#G6`MVFc0+McM3F#G#5l(
0[q-D@-,r'8$Q$-,&YH5d-[qXXcIE5DGaBa+lHAkeZV6&HH6@Jqf`G[aE@"ESZe5
brHf2JraE@*I"I94Fr8Ai8lV`,K!BdX0pG8QHTXE($CH$&-9SAlKDPD*e[pAFAd,
N",N'!aQV#Tr$31$FN!#@P%`A#J0@N@PX**1f"kf"MU'#HThr6,!Gp(0k'YQ4T1M
(rERr3$6CP`@'`cGP(1(JL0fA&@"`#V"Brd``lHE$UcKY(a"MKKUcGMG-,&SF-JH
6r12M5*d+H8Rd#m3Naeq5G"S8#B0H8Imer#m[8')JCb)'S&5Kr#GlRA)4Gq6pLm(
32BmPEYJMQ"dAA+f$!I`C@(Lm9)-b)LaF1U%C@)HRaAeM5B"8`KcN5,40rq58JiL
dbm@8i[j43FApG#&-Jaah)FNbII***Q'3!(BblX,f4l[Nk)-FHNab8[j8Jc*8DmR
rIC!!5I9H`Ka3jQ$)hL'XlKcS6&f$!AGBmHC85YmQDf'50fFFBN$Gr@CJqeaSciA
Z1L*6ZY4%0'B`d6GB3,M",kV&`EU0DZ(&DF2bh%a58ZJr)@RI)5qf&NkYh1VDR&3
6j**#32ek9Q*pF&8jlD&b10e+Ja`Mj""p0pjeDljT2KS-ifQAZ&R2"&1(*"049,h
2b&$N[8&Qca#@ZjH2'U8aD@[RT`S6PXADd&k2m96hSdmcI'qi0rB6GLk*SCILDk-
XG-lNq'jRA"Em,hSiTbYpf8PqB+[biiJ3**!!ahB(N!!KeppPd'P5-E2ZV)HAGJ0
`h`!6k#SJ1&R3A+SaV1lGdD2pmR&@Gjj+-pQUZ""Fd',$%'(m)(5I![Qlf(a6dXG
V$UPiflYK2R`QLhB'afHi@(VLIqr#DD(a'`[mreJk`BXBP&2(j9JL3"Ur)M+J,@m
Y!Ahd58*US0&#4(6NR"M&`[bEF%E5CN"$i#1dGaVmZ%RZ5HJjS"eV4-FF[%bR&F2
CGKH@l8abG-Lk-XK6eN!Ek8HQ#m+3!*G4*PM#r[Q$E-*8$6Kp%R,2[%b$lm*8D6K
4$eM#GrPpNNR#-42#QIPBMFMLlqq8I'V$EipT%Jcc348$)Fb532QbIBSk)QJG88G
BaBAc[8c#1J@DQm'ARhV+c+$#9%@5L@CP`C*C[4G4MM%6!6ZAmVa-ARh,j%0DNmr
p,hP-PG*QHU&[ARc,j$jD`85k6c'3!,TP'mVGqEB5m58+lCCFD5N9RATdHSJ&+-Z
2AP8HFqL3!2dDm()6,dGR9'$SdI&fr$Z[("jQbFM(aCK!")N6(bm-9(d3qEiXR60
ar#kDk)FMdTY8G#MZ-2$SPIVUa)caIXSM@,LT5U1"%88RGAM'6B#HF(heV+'"3CY
5DhQL9DPBpD6eeZ6br-BIHa`6i([a!8&Vr-re,ppmNSJF39L2"U!,Q,aBTHNN$E[
CidHH5XA#i`I`P[RAZ5!h0fVjIX9pHAK-hBPq*bjD%qf"%mkeV8XeG`[NE(2rE3Y
cBc3QTJXpI@MYk#`pe*QQ%rIV9qVc0L&eP-jpaAU5-5QJm10+LGSc+TddcNTcQDJ
`NkK+Nj!!5L5C)1D6Z'pX0j(NIV$U#VJaHVU*TKBS!UcP(d+M$0fKJ3X`%G!8dVY
"P#0pNU['1NU6r%XdPHJe0pTIU11GfKBp0+bjbm,Yi1i3G"%FAJ"*440`CXrN@2q
@3#`"G4%+-LcjU$++GrXbGqcbCQBc()N`6MVY0MSj0RSmP'"cAre@HRDS2@%kMK&
k2hNdT@r-k*qr*I*+cC!!P%GcMRV39&VmD%Vh'qd+cEID1J[@)Sk8$h0+ej!!hmL
(,epi+NVdN!#I%iI2YkHC2hSJcbV#lHJk"3[,)-m4`[mK%(4k"hVr"a!+aB%J`6S
JQ$U"0YXNP"&hLjeLMph&ARC`JC2Y1Im(9,Gma5#I1QD'(!D2@0qj)N$rVe3[j[q
Xrrph#NpFh-+RP#KhR5e84&E&B!*QYfE#(,PC9$K2)Ub,USMfhGGdG9K)U)ZR4fq
iC""e$ah5QV"f9)q`Y[GV+9jGL*EN(i&@U[!)8J[-d(9Uij`Bl*@GqIIQ%PMmbR*
jk+4qA*AS3rZQiDYVeCRXLe0qm[GmQRJ,SJYmIB6j@MR*d5IeqLb6$,[bife`dIY
pP)`+3++V#VHECRTaC[hMCVV0LTic3dml3#9aeF*bLQ4BSPi5QA5'Zp$KJc-Lqk,
X"lQ&i"cd3BGaA#qY2,mMRGZp)TD"Zr1GSL(V0rRmVr@6[6LaJE[XfD*m`k2QcZ3
e)H5J$CCmDJiefU)Ga9L*I4l$iEaQRZ3()fD8fKC8AIaF`a!5mS0"!AhG&Rf9ir2
*#kG)lbQ9q!4jGk$@RPC3,8XrYM@a"U#@86dXDl+dR2Bh*H0QLclbaj9Jb[5j`ic
eNlU5AfZ$0pfk0cZATpp!Dq2-Rh[SKN"VLAh6m1pfUQkT64Y`SmafCMFK8MbLG!I
X6HLlY()#LMAQ-3Al-R3dA#*,JXGb+FX`9&8L%4AGfRN90q1kheLAhhH+`im"Tk$
l*M8ERdpfr-S,b@[GkANi36$SIf`P12bpLkSb*+S(3'TIqEe$Hi9"p'V-@R3M%*6
dZhkCFUV*3"&ec0m[5@%I%5+@,hQR39M'a&KjV8'8Yhh#f1A#1@pIN!"k@$PSj0,
"#l'K84KJPEHIjRBcK"[Ucj3Sf*LeXQq8XGKj#`QTjKZUE`BdLj,CT"-Hh*MITl*
kIeip5AN,#Ce)'c18HGK+lCNJ8F!J5UqCHF%*Qc"'""YPP5+G6Mi+!L`K%0mJ5Mq
CA`I$HX8N9*MIam`c6VSjS4acXI(D1'[YZB4eEV"Q,2a5+A6'410V@`%eLS+(-!M
p@CfY%Zjh[TIpQ`9'[TFJQecH5&A-b8"0r(48&SP0FpN"5Mr)Ef3h"lJ),&mNif(
brFad6PjYPEf8-HajTA!`q'&13LAM!ddTb&DVF%6G1ZjrVEXfZ[c&K3EJr(63aJI
2BX@5ATRbqm'I5X'YEqENMQ5+Z'rJ0kINp*FdApY3PcGkc6$SLXIX56)LhI*j,%%
Ga#)9EiSh5P&p-J#erea+Q5S3I85F,J$rlfqhj)0kSc%#I9T[+6GIZ!Y16lq9#MK
V12a6if!+ZiF6r&aiML*VjhN&4&B23PCjMd3@"j,mMjE[*IQkAM#drq36fU"!4%T
2r-8"VG`+1*FQ#q+PCm95G!$NRfrNl8V*r-,SV8"I&1-+RCG856JLFD6p#LZAh'+
5,&r[ieC%l`@BaCH@m*+XAqrMi&Mi'pEF%EH5p3Upp4'2NMh0T"D9ED5J%9SE(pc
i%0J3MijZV)Y[ik,kEa!KMj,eQ%re)GZ5F)Y[ijM&pC@'NNRD)9f8qYL5[aXk5Q6
m!5d@5C08@Qpj0dTPr$SbP#EjPP1k('#ha"Cp-V6aQ15l92H+1X2NjX2C%[)Hj!e
KCJCkS0Mir2V(1VR33!YqhNHlc3)IC[S3!H1p%(6*!Jr)XK[KMXJZeZ(p#dYF1&2
p!ARQRrL6NBr85aU9IGR'MJHjR14ff4XhB1p83bUB)m&%C6h@3(6')a5F)kP%kjX
TY-R+rD4ikbmd0'32P'YpIVb*6frhG@q4GH&2"+kXkNm@hFANdUL@0ULDGcFdX1S
fZp&8deb`j&&8'3)SIbCBETPDq0VP1D2E2CfNhTKI2[P!U(NA#6[,bIU8JGK[%RA
K9Xl**C6L4RiGG-qUE4V+ASh2fJNI5'X8Dd-h&'[a)4ZhR3RP3EfJ4M,NCYQhj4#
X0dM*2+8QZ9b8qRh)RB&dLdr`XPJ#'f,2I-9-GPJ0GY`*AZC8H,Y4I@TIfe9H52,
jFCpPf0AmRCH,QXpKS&"I$`(C*QjIJ,&09,#fRGQPB4KhUGQhD0pG$30TPP*PNI8
hX$4VRmAm4mICb3*5BJ*k#hf[r1,D[TRB*kcI1-0Uj(U3!+5E(G&"8MIGSbrZ)(S
hpbG@1RLKB2cD&X&*SR`I34,BP9(0)-LE3i!*'JXp"TS0aA3,J)!Pkm)(`1@dEb%
kEh6d8RUYS!(-b!XL"TUD2RSeIATb%p4!ejFTcZ4PJ2S%bdFD*(`@N!!(!q``96f
NT@PS*K*kmL(`%'U'8e8Z31%%RKNJ#(jejdlUTU69""@YSe3P2!)aPmqY0e!K!UJ
p'S"QYAV$SEQp1bYdpjqFH+!kcL51fGHVPE%lUD)al[bV8[8QcYPfUi*L&hS2!UY
XC+T@c#*,X69p965QE(&-1*pLYkVI(kaXA'9X9P#VYXT`KEKB8TDRG&*B#`%kHfq
3!&jCk`l$00PFh6e$02EMIRlPI(UMFk$eKJ'AEb,+'b[NM"!bE,Kh53L9XCqr8V$
m-@0CMR+cCUm4Aa#$2)*hla#8iiRI0(j'N!$V'aCq[PJFR(Jh$L"pqCB'LP)l4b5
+[6Xc4*1+4kF@bUT,m$'TpSI0')q*pJP%`4b+YS6NG(M)8!&E!4YI2PLfj#fE)&5
S`D4acFB5!9!k5qhk`Hhj*2A&De`lrK5dS0&2-P%cCRh&)r9qMjCYmDf(2Y()Qe!
@)%B"jRJ96pqKcfYc"CG"8h8+i`'l%mEe+6L@)11Nr(jX-Yk#%+2b4`QEdYQMehG
*$(Ek6a4fE,ZlTeKAf'ACAPKmmp+eGi'3!+1(FSm65i8c*VCmRi8DdGLbHCiARrM
if8$+'(#4l93)m[j8F9a5CiF3&a*kKUDcG-qr[k0!qF#d"[C9fG`56h9!BB',)52
DqiH2*KDDI2Jqe`8F-@3"hQCB$e&*-KaPc`Ej!Af5G42+m((S01I#`$&QPYai2*b
Va$fUIN!"#(NVAHZPhF8P9$hZUZJL`4cjj$6eiAaB2Kje0#d6AI)L*6IVU5D5Qlm
Sh8!i9S3LI&*2IEeqJl*QACA5"PNI@l85U))3ViQY@+%H#*rqGkE&@%YVrH&Sh0I
&#kU%Db,N(@jmd@6SIHb3!#YI`D3kLJ*[P``Frd%i&A6-)ED8QPrpIN!p"Pl,c`M
bI9Tbh`YGRbD,cG"mR3Ai8[BeCabPYTKXYT,ZkTpjm(,hrMli)Y"J)bkPXUSLNBY
TC'mE#(`Eq$kEF$LB0"5bQQ3I83fZDe"%8f!H,Z[Uq#8@GC3&&reE5Z)Bm&4c10$
T2c(i%)2bMaS-qIb+0'AVE%'D#'Tel'e5#,MM,Zf8$"TbZdq'`4&3B#&EM@ZPpU$
IRL,0J(-d0Xq9V5[m0$2`P`lE1%i8ecf-EkM4`C[X1+HIqL3)i$+"$bmb5Fj"XV+
59(ci8B*QfpZp1d`&TC*Q3dF-$I,C*P+S$(UbYTNIp5B4p-lU1ZLQfAqiT16fDcG
Ff[C5rh9)Y!6#Q`K6&+3q@Ch&N!!JEc'*pJ&P1%klqX([4e"r+[`'R)flHJC',P3
J+Y+%%4Y8dkPR+e31S'5j(1r4fk#bb*VS%V1pIT2k-RQpP,+E5ZfSN!#K@P5(fVk
$*l8(kV,0FhSZ0R,DIUcif51GUhaMld'pT9bJ4VN1rA2`&M1HC"$Mi`V#Y3%$92*
r((k+R`(NU65Fim)$*TRGNiVS+aLh#%BDNL$18ICfc5+p1iI4X95k$Q)8T`SLYYG
)!lNYZa3hCQ*8F9Clk@N-`TTah8h`9kM"I2cA"0`pSV)RBUSITi%aU[!Z%pe[bZa
icUT3@,hN2&A$T6h)HG$YZmSErpJ3e[8&Mh$A0(AMbRi4%Pp`$h$k)''94Mb+qjG
2UmA&[2a6&cLDH$Hp9"IBmJ&,dYPVkH4i5#d0Th)eaNQ+mTEQI1DqpaU,`!(#-!&
SX!A'0+cZbNGIm*b)UAPG`UYdYP`%9!F'k,!3`!qjKK6XaA@,J(I+8420p1,4ZDI
`PUjBMZVI"qrPQCQYI5%!RGM5k[+LG*+4@)l2ZMf2GEHZ@-BIqHlb"DDKj3"Vq&a
*pQ96b&56ZHL&LkPl2CqJLf)1*PE&qH3%i8&3j,RS@!j1C%h"lcI2N!"e-XH$#J(
X'1&`#iJ(@YXL(keVqb'fUCArkI!%j9S,3*AP[p-FKU-G%bBUeTXl#LJZ03HLKZ3
i[$-)D0NaN!$6Gmhh(r&k4K[jq*h81NIG%3B5TA"Y8Cphj-M$E-r#m"U!F+SGHQY
UVDi,U0,cq8Hf,6YYdS83M)@L*)!HSDX'VEcRDGCB)M)`EDI`"q,"MIJP-)[32HU
Ui)qbZ,f6&L*HI)NaVqXd`ATA[kTf3(JADa96D@ZZ!3L-dJb*DErVHJL5f1i"ZVR
rC3i`4kP1q8fRb%ZfMrEq98md-[ATe-,j#NU20KZ+`q%Y@ZR"Cj5'$`aT*I#)-D-
DB&&e6NIck$#Z8h#RPc`60'kNr4Mb0S,EC)QI@M4jGF9'"6#YZU30-REqfFU(Jc'
ZZ#d(2LEUSc+UHL4@'"T8c5RDZ8LSFCIFMbip"(%d8f"DP&5Q9mcNkdR-3&ekiGM
l)98DfD2SL8N[&6"hTr!Im&l'K'X6I%H@k1rZX'NF&"`PH+c,fNDbU*kd5+fMr18
8&8H3!#K6RX9*U9keKbDZFr#VCkbjNh8QlUGTmBe,`qfBQkr$#j'Q((3$YU`@3Ir
Z,f3DDqffXrXYhFEUbYhC35S'!HU@,5&AGai0!8JF'['040RN8(TGrE[4eT9('a5
M!+Q15CMp#jrGTQN`,'[m9U6PLDiTYDRU-f@XbpVi"M9YdT,c+'S&Y8)hcI'rXcC
ba9,DY1!#9&!DFB6i(#bX5kV2qXP#1a"F544LSH3%3,K@YDPBR(6pEUZTbmPN)NT
'8)L3!#MKJTYXd+VrjBT[+MBpG&l,N!#JNm*L2hr1jM1If#aeeel+q-Q#"j,a96e
0UHhjq+G!NfT)+*prDfCa5DSaPrFYXEQRJlJX!hrUc6R59qLhdB&hjhUKA+mKqG*
E[$!1&ZN,MXc8Uq$M3j)-6HPJK)jS`SDBQU!B%LK%MEEVGF6`iR*V,8EhPIjHJXN
-L9+RhH$Pj-f8a+I0iVPjAh4mq*rC@E@bZB0B!ElmFCjpQf&QG3iZUF$pV(6KhI8
Rfe$N266kM[P9Y+J`!NdP,bl4ZZSpcMEbf6hKbpddjFkqbK3%fjbbX5@rc[+2p`V
fH%F,cV6mU6``HJL&Pf#qqNP8[@U83`[e(f*%-VJNa)Q(CmR1Pq#6XlAHBLd94!3
@TE%#E$QSE+a#"DS&(La`blB"09D#Ti#IQ3&LF$h"5r*PYSQ-LRJm2(SJ#aaqf"9
k``'VLqcB)Jf*5NiU@'pk0JmXaZ2L6crZ%%MmTA8NEU&*FiGa[i!b8L"!ZHHqL40
(mqMfIGX5l)"kk(9dl$V8j1#q*ar&+JZK58`i,H35Z5fQE&3,8E3--'lC!dCVF*r
%r'X1kLrLaD9pTh4!2@d&G!F@GYc`DmBKi9Q@I1-LA[2#0"!SJk%c9UC%EU&J%q*
QcIj$5EG%aBUcE@9eH(&B)SY(#e@q-Y,&deMKdXSdD#Zqh)(FSCrTY,9`%$ZKZ&B
5bp*a%%MSk3CS%%bb6h*dUV"13#A"FlH5BhUME@iU'rh'`[QY9GDicp,f%Pda40J
HT`'"4dJFMEhZI'%*0k)X)LEJMAEiGe[S"(UMj*I%6&%#Gl&@+-SSAArT%P60#1P
A*D''I4jA9qJfpYZ"03%AJ&$+Y9iETdY2S3DYa"&P9A1ILlB#ZE1%QhUEm2NVYZG
-ED8-FJ'T[L&D[3E,+AFd-DDH0)d'cQZD2C0Uk*Q3!#[98KL$bpC*&LRA'S81D65
Ce$JMDmZjqLTf$UZf(6Vi5Gm(#0Q+8J$5Xdc,YJNk$@CBfQe%JQ1lekB5+SChj6(
i)$T@1f$j!1P8`4'pXfMVTiX,(6b(`Vm5(ABN-eSJe%0i,,h$Ll$h5G,&Prl#q5N
I2Q-p6KV+R,KV(A6@-#dGSq8,k`+Sp[JhqG&!$!3[KhNKIc3-"XYZA3M"Z%ZBA3J
B!6'YA3KBDP9Vm,G([0CZH$(Yfk1R&VX89elNpdNFh!dJM%j`M4ZZ6D-J9hHK,6G
6#)FrClrYYp8j[Ubk@#aeilcbmV4+a'"4qpY&ehUdYi"!EI9qcb41A*c)fUjZiZ3
,IC2ML)-a2RGP$TiIfFj6fTqc*&IA[cXKD[fNKf`IZa$ep$C3l$3'(l9$cX,kRqN
U#T!!H!B,N8!T5ZB@&*I+5`h#)j!!p9P,"Vdqr%QY!3K2Kc6rP&X1K(2fXhD!mZl
#4&C([Y&l!1k3!22M6@,&&Y%f*fCq6)jj'0&8Dq9Br0-ea[rM')&4qYpj[A2fpH%
Dp#V!-+LekkURN!#hVSYJhbl)RpINpN%fi%*eVU"0N!"mQfjdJR2"8PHScX[%+q6
IcKqe)4N1abB`F4BT%QP4QSlFq"N6p-mLPaG30N#G-DENMph&mecr"j!!IKp5HSX
mYT!!QHfj3ZB[1&856&AZ21F3mqQ'%R(TB&j+QM@)ZDCC,-1256h1AVFYREQ4DiF
aA@cj9H`4%,`ACLjr)&l&(TLmdP)$3d!%)AiTcrGYT29*K$%0HR)(E%Zj`%QacLE
A#q-K8%6E,EL`p*R,AH-[Fa["H&,F-e#le3H"-#-MUj-U6X!Y#dJQN4&GFZ$D(@B
`SmZ2EHPd8M&PA,L@JiN6*UNT%SB21ElQYFZq)5GPENGFdQFSMqT@"e#ZE8Eb$,X
SV9L#r'AZ*!6E(9J05p5@kN#b3#R,L3hTlbpUIeD6#Tj"9aIA1N6A)Gm*HZQj'DH
Mm[9h*+aMi5J1AB8Pm-lY`NhfJ%XdA[jNETdPUX!SLk#@i0#K`QKFPD'l-q0IDqc
!+YacL#ekDbQ("NcJ)IqDhYUF3Kb+#T4Jc5BJTUJ#,0)h8VZ$q%IcMSRi8K)K&S`
TH"HleNpEPQK(XY'1RYZ3!(5-R3KqXpT&)59ZR2XUU@2TpZ4'6#KHSPaZc*VH+Md
FTS25kFa$k*jaaFDEp2+@jb`@@SS+LHUd1l%&9XGVINP`e3IkLYpVj49f1jDdFb"
3qp34I#&+)CPX-qjU[dejI+Q'G#LIZ6S%e-qXXMBaSeP-f-6Ai)UR)e"Rj(KjU6X
pDP61fSP20"%T5U*8[V$KZrcSp8X,&AcAU6HC6BRYFHfA%6[EVb,pR'8#-9R4(+h
$,q,*NYV@NrkCKZ+4q%1DZ+8((!3XIZRUKA6&LV6ci)3Q-''HdN*#*P5ISQpbrhe
*3ebMN!"r!GFXHaLY%+XI1fN[[A4Kf`c$PG`6cbebL"i4j,ENZ,c,l+H%ZeK3-55
qrl)eY2&-0,K#A2bEADd(Na`Eh-ka)0P&`FALm"ATMM58KIL,h9BI4[9kl`jmA%Q
@!,r9DjP0m2d@YG!Iq4jkE"UjEqEVC6'P(Fjk',[%3Q"V!VLqi-Pf!d3Ka5NB"P[
qTbLI83m#G)34p#EPhDrrSK!N-$iT,65&&"EIN6TAr'$b`G&ZY#Al'mX%'dTM[Z3
K,iQ$#&SG2*U@TJ%5$KVr*D9k+,,Sd[GjGP40[(m'Z5AT8+5!CLh+KQm891[mZhm
R9I#81b(k0,K%J2H*NNX6YQ`h(bfTr(i&-$I$V*G[QfA,##Hq`IcZV3kDi(rMK6T
am6pD(!V21%Zlq`jQFdRQB2Je80e+)IeTKpm$j2I2L+#[rk(q+#-FSSU!-(Q$CAJ
c+Qf5lRaeMQ!#mSDC9JJRD-DI8-0Pb[L[TVeYTpf1I#1T[[qqPjI5cp%a!qqmU#0
!`B%[F&XcMVBYpRNi%&DZ"(hDIYX%hI-$RRTf'l#,DpqlXka(TUFc9EBcLN5l5I"
9FV9(S)1i2bMK,,*b!"+IC4#Mr#+rSG4F(["Bi5p`-PB#hE*mPq"0)(B)8VYVcXk
1&I!fiUiclPKIYQcCP$!'I4i9($@mJkAh[,!TCU@")bkp9UV0N!$k'RhbV@SC@2a
hVf9iZdJ"@"$1I(`NlH"h'H,U%lI'+UiLI)AL+C8mEIN+9%"5ik))Tmc5lfX3QH5
EUVaah,jpqGpQLTRUANQjUr`XiF&pqDVPSFm$FrR&6hepqCYIUZ6NQkUES3-LH+U
P"`2&QB'if,J+8f*QD"56GZ1H,dme8klr8q,ib"[2d[fIF&!`B6U8f&piBdYG%(V
50q"0@A2jf'D5QCD`ihC`8KBi[2++0jI%TAcm$JMU88pBecIJ%'NEMfS,caUV$p&
@FrNj@-+%8Xl"Tdcl@*!!kI5RhDI8AErU,rbK!ISD2E989(kUY1j8,(icRaL+38e
Za"2MH3YQBK0SRE`iX)ScQrFXTJ0cMmZ''ipGDF3dNhl3r+4!k90L@J-h2IR&`Ae
'QlC9q@(J$UU*EIQ&0dhb,85QGjpXV3Gc[*IcqChqCM2aUBq2""8EASmT%q"2qIM
0Fr*2Z1dcL@h2Jq33U[jBP&Fchd*aUl2KI"+dbe4kiI4!%kZ2iBp#D9k*"d$T6m`
JDffipA2kE@pe,ef"6ik!TU-0QHKfF8PUIC-!VAL,RAJp8[T4F!0cQqpEdE*BUQk
-P)BpUZH+Sb1HmJX,*++2f!F0Ga[YHG&ch%aB9)'`TMKBGLm,2#6f1[qh3RCBhFJ
#J0LD@K"2q@Fr&pDiDjG"#mAClR5Q+%2HfJFU40fH0$594d3%@C!!TN"EXkISM(B
RpjR'A+V4$[r2ZkBaTlDi$a1A"TTpl"!YqALK#c0c#rNVKl12$c[kUcH$VU8GB&)
6UMH(VK6i&FU6d2M53a0pqBNiG,E3F4rVQmhT0kV5Da2DJ-3er#E&M$N!e*Q23Eh
2&kTKPU6GJdLX[fCDaFB3a)q`5"3DURl"FaIjc%*"**NhTTrC*13Yi"#aA6d)q3c
EP'@&Ma*T)DV8TQYpBa+K3+C3R"Uk1U!a3XqU%UVq-8e'bZJCkYDk+BJk#,Mj(`'
)HR[Y1YK*TjQmrqfXrGe@UQBca0Y`ifYd&KI,h&&Q`KCh$rR*1"a!&L9"Xe![&V$
N@R3drTYa$Jl[fjq20(@EBDGp(&*510Y!RCPTCKfQf`iRl'fI%)Vj)&*))CqI(ee
8H'B3f"2ea(M[%(fEG`lj&TjB'e,8H6G*ZK#MMqf2p46,X2QD[pCBbe)B9K[$4#6
SF+C5e(08CS"*G$6qq9Sb@"ASHUC5d1[%[US@*FYQX`ZkFhhjccUCmKKcdkCdUP&
B#aCh$rRfi8JJCM(B%dhB@Pd3XUTha[RA&fY6Ff[jFl2jcFe)1'DCa+e2)+'KB"Z
$a#G*i`B[UL41HUfURFp5fDe86Lre8qUUdIa5RRQq1&9`&SHP1X,#hhe2YA[Y`kB
cMGfT8Y3QfSraab1GX$SiaZE45@B@QA-3ZYdhi&fC2!lN,Z3ILCFiS(m+%ZJrB*I
qV2JMA%I,TLhBAG'$-!M*S6RQRrEM#Xd(b%&Sq#4KNDG59fTJkLip(b,FpDX"DPE
mf3*06K1JN!"'PHX2dRG5rMq'QAl`UKBC(jrKQB%`,c$$ar'GTGCVfDAIjh6ib2A
PBc'KMm`KF@(#(0eaEK%TA")aLMR0"`c$6FfrpDdfFa1CIC%Zkfe8JefC#T(ClRd
K,PfF0RC4QAf4,SpYcipG52Z4'+U"N!#qFBX`LfXN+4)5L8Rq[am$8X(E##iarG-
IbjLUadBIKFhk9Y2%R(!,ZL-#4`[RqSdFi1Lkr"JK[lF-8GEmca8&lL$lTAAJq&,
9&GBG0GU1800PVZ2D#d3camFD+99H@d*!p5'`%qX1$V#`2(l9',HicrE%VBmh6[K
U(kUUcaV5f6AXdQ%J#pQ$qkcqXc3)%6(8J,XYrH'hMXYU0kUMPeBIRb#eLHqIl1b
P(`[`#F[KSiFp%CqSjXfR4q)3SlCiLqmlJT3qCh%*'&8iFT6rYYK$V2XQbDM+Vm%
Z84BrEbppXXlV"bb,*cjhEjLrBbX%1cfq6&6+f0"(@E1Clff89CC-qi-lVPrpFC5
m46F4#5cMQ&G&#$E+N5J8J'!ZdSf61&-VkREXUCV![5GaVYd8Nb00E-@`2,`5XU(
T359qF1[B%6C+XZ9SFFBK2%HEjV&+e6rCE6`k#I8SJTjYFYPbY6a4`B(CJMbTQcU
-JR@,Qe%%B6qdKUi2"Eb9#'%A%A4B8p!Z9icjP*h+4TiVVAC"hVEJJk2PU49A6S3
CHlFrGB5b6DUp1RXRSP23l9Pfd'bD!SIFhBHS3maa,TC@'-"AmP!9BbZC$h'4,AF
N2&P6!e$USE'Xd-BSe,I!@jZT9jD,Q2RP!1#TIL(8VN0N[(*5hcjh[l0rCi)B961
4YMYDjY5H4[l39%Lc6QeaU)+Ch(+Z@PG+6`G&P'c[C9`m8ce!`FR[kKEl@aAX4U@
`6Kf(NIcpS!r&UIGL4[Hb)U@YYHXR+qQD#j8G0HISd+QD&%P85MD86(#p6q-FkV+
8Cb'Apriaa,@IFj*SPkfdYS*MEj[(NKHahX,e42SDk[mprDJqC"XNZKB-EhNF92[
[&&CC+fM8*B@1cE5!"cLDkdNdBrX1)-C,)ETlY&MX*lYefBEHT,H!`+EfaLk2m"@
LECL1YLIP)PGYXV6+I)Sm"`N204ASHd0,*pd#ilJ9[fpa@i[cf[[*ZZY+E1A+5%k
'-ZahEiB-UqCa3Y-kC`kqhNP8dh)HPQcmY!Nq0T@!SN1Z@q@D%(j"kmj`BKlId'f
6)GT(PA+krE3r&3Qc[UNpeU-P[h!R8%IRLV#-'A88hN&X4rUT6HHbMEB(QY@A$+G
GL!CMd8`j5D1!Q$(cE2hB`c`@B'c3#XfaP8%1#$d6B5@fBS#Rm[NEf[dKN@2HC,C
MXblUre@%j9pZ2`K!4jG`B9Z(6@j94Ar,8HIikbGBN`LN)+48,QmBY-([)kh`!0h
Zh'INK@m($+%@$8f!dE+Z4kI*&(KY2fi+VCkfAaUaL8S-il'eLqAAhSXm'c)3VNT
E2Zq**#&(MjBN!2DHK%"$h1cR6[l-L2,q@ECXEYETNQ,C*H*N$Ae+hSU9(MQilKC
[$Jf%@`eZBQka[k-fR!)#,mkSVX!+(%M4`'kN)S-RBPZl"Rqf0Li2d#2QHCSZ$Dl
ldJE-lpXV!K%0Vf+0UU"$q%@E1qS!CCU8QISCU6X+YI#pV9"%5qI$+#1XVlU`,bD
`APYEFqZ(FK"rT,i6UJM"PYD+Yc-cRcJ,Pcm0Ac'Y@CU9MmSZ'(&,JZ9Fab(T5+`
+JArkVZP)h%DM$G@a'5H9R[-$dED0,TT)@LN$qq#$MQ$Z-Ihf*p)H"rL[(,M"pf*
C"A@#*VSC@b!hQXFFibL%XZ`F5*Sp'Gc[,i1*@Eh$dlJlkd0S@D*Zp&EHF6#,$`(
jd4[HLB8X'jb&E[39#UmrUb*%&1D'l"hXCcJlZG2MRmbHTJD4M$F89kL0$-5@'8M
Vc4iBjQkHm+(fddld+*Jqlh3q@SjFLX8l2mjE3UfMCbY(#BL0+F@5Mr6c9VpYkfc
cXqqYMIhpKpi!Ce"YN5flXP@9-U6DEE`2P"Pah%0%8#dmE!Ed0h6XeG)@!98D!),
l0kH)Tld+"I2+f"C#FV2@AbZHXG14rGTCAlDDVrKZiZi0%PfET%T@e43[I!lXYE$
TcE['CFl-LCkhEf1lXBf%BK6`4bXPAF%9DXq'$,EP6MSJjr&N1GD'&m4k"Q,%e5V
mVr`'-cX8SY2M(ZYa+TH"bm-jKqARTTMpKPZfA%8,l"kGKSXGHA'k)GM!rD$m$Gf
!%9[DE$pHZDk`iQ[8QJVA9bTSV"eR1")jLj&GLYG[J@8iA43EJI8HUI9U#Y`&bXd
[@HRm[RYH8Ak,)Q3RCdlBVXL-E52Q#@aA5)-kq$dFa"MM`&E%#6G"'%f@mjiiaBN
(r*-U84p'cMLC6MKaKGBVYDS*QSlRa`i1E25-FCfffhf(-jXS,S$ha&Jlp'LjbTB
%EpY[B20h834FER(eC(8'F6%M4p8c$-qJB#[FjU3q5SAl5Y`c$FDVh$)-9aA)FXr
16`U5L#T"LqZ)YkN5$ah0LN%p0ebFKIqkCe,@5!QALr,Y519$KDI5rE%ZHRPLrSD
Fr'E8qLFIk2IiU$4L5,F8hb+r6[Q%TNCE`-qlXEj$jrEaF25-kJ9+d16'+d('Z4R
%h%mC-jq&[A$SfDM'-U"VH14NTIUY`bZ882-11-j-6V58hc[!,3T[C4+FT&$L[+#
!kJj3J+4%@KYU(E9D3jFk2NLTJQ&r#Y(JhU2(T6*$i#QJJJqNF@Pa"$p0!Pr83VP
E4kZiL'H&,jG&a4DRY2,UlNhCK)XUEaBMiZTm#[0X14Sbd!rDj%M6,1d'%S"YmB)
ep`kHYj`m+d"[5B2cPI9i'khd,%c!GHmE0NZqcMf4a0kTEc*eXV+1eJ-HH1ZFmk8
+J++ZF326T2QGArJrNrPLqXVBiRAhr9pVJmeVGiiD'!X+HdVcBiSAH&a[1d8HVd[
Pd9IiqJM[FGVL%YN[mri`YKLF#!hX(Hc0qi8GZS)6pdbHX&crbSm3c@Pi5*-c(4q
CSe%*Lk+TQ$ReF[ZT5`P,`B[Bl2'MDcr10McX%-jH&`4qbIU0YCN1R-Tfa!Sh2NS
N6L1C!)hcT'%-SA`(e#D1eYF4f,UL1AZ9ZU%GAG`p%4,-q2-GM"NZUk+h$$fpcUb
q5'cLbI2M&V+KErD,$0KFjE#F"32LLq9jV-!34#8h&Y-Hr",c[ZNr-q-[)U5p%VX
MC[`,d4RkDqV2&JXJ&26--AZ@*dfp6X6h14J9NVl-X3"rcUic(+$AT2c9P8KPc'F
qG4)EcY2#A10Er&e[XZ(cYk0b&U-SRNR-U"JbaU@p&i8Mp#r$6-MhJ"kj#KZF0X6
GR(R9@BhJ02XV4I-TeEhj6H@+Z&Hc5'68SSdhNdK&D9(R3GH,3eZfe1k5LIi%ClG
qiq&N9e8i88p3pRALi5kb*@!VGYDK$@U8qkf*Bd*NC%QkJDMeF8Tb%C6YliFY2'p
YC-G2Ti*j"CP)N3,X3Rq!F!&QlK8N(3MJ*JAQYk*#f,bSAj%PD@F@-f!DSeLD$%Y
+G8AI95Y)l&iN*c34eP@(q1DC)qU[G3qdlqiAh@krQlHrJS"['bJ22aGKIE$MaCX
&T+A5*-c4TdH$Lrd0+fFJ"aS#6kTfribN8,@96ME1qD,%d`5l3JrNiai*fD9&ahG
[SFb$S+1Ihr'F`LkdS+T(PNk[QHH2(IYb`(d+eUXQmMYUqDIqA9aXAU$%KrG`MkZ
5M$6Th-cc8(,TK0EjM"MTR(mCB463JeiAkVl"hS'YYkH(TYcNal`G`+1i'6jKcGV
l*p666G@j8(P4lUaI#08MIM3U8kGp'EkB8'+L[3FVlmIBkdI`CiJ3YBEXM*+A"$,
'2R)rI3"H2cFL-IQ#Hk(kLSjYd-GLLHSBF2NiUdBVBFb)d!md8lj&&F@dQqPfAX#
b+r#2$A+1la50Hb))jjV9P5@C16@*p$Y0'Je2m9pL$cS-M#&5+X@friMa9PSa9FJ
)3rQTc5ZXp#cE463f(CEYe2"LH#i8c[3+3JT[JAmDL+C0SLZkK+mB@80qD,NL"*`
PXL,+GMTRrFbXC-jFhUK*jAe$8em%VMRmK$h9NT-P*fd-!TXRQ6&(AbPf*2*IUaU
Z&6[1fK,beSfAFZDm)rAQ$lI(VXZpp6eY4DIhR$K2QXR6QBE[R-Qh4Z$q41%I)rA
1lY$S[@eF"'M1FQl$$8krD8X5,`Ck$$'UkZH@+BH&C,'@2!$CB&[L`"jLK%JB$eL
YXP"2lf9I[Qmmr3#3!#i(h34irlUcb5YHDDF%M**XX*1"Va#ReBTD0MqU%[+D(L8
U*ZA4+li%cBXBYYQPlq1DB%FrBrMB+'r"VPp3NRrl@mBAY+AfLE*-VVKM0(C6FEl
ar!lAR@"A,MTZ88"L#6Uf3kSc+k)@QiA`'+QVD-6KYT2Fm[d+Be#15K)@eH#0)U(
@3HLSVNKJpa8*2PILIhALa1i%&ZUIhQmQ*KH$jVq@-[kmRIG-ZYBmM'(d8T@hZ*6
QKU0YZ!CY13BZTmN@p+H-!&aC$lU%M5T5i9!N3BCF(KUD'HhGCl1NNAN*3JSI,JT
qdfRcH@,+TCLQ"CFL-qUbMG[4-HY88&SR6*C83)q%rcE6f4E`j6eAl#HbZl`R!"q
b0Rb%rFBJKj!!JJ4f03m$&V9+B[h94kpY&Xfhc5J1$kkK'!4XM29R63$[bZYXR4P
dG")ZabN`VSS-hL1TVhf3!'cV+f&Vi4*am)rd[`3ZG&N'5N(%(Y%D+02D2!NC4q6
CDJBeU*XY@Q+LL+f*@+JVleR[MMchRh#ar%b8KQfep9-)Ba[idRNeG@pG&E1FRem
1,4jlZfbF*dirih15fU1K@2hDCp#8-ZrQZ@GkX3pTElj&T,64jZpX5[Crl&+0UcQ
+EDrdV*S$TrPTVm*"03ccF[lK)Rk#J51a$B(54`MHIDXG(D0+S3Mf`5[$B8lcVB#
qUD503G9ZGBR`Yk9XT'dURBCjUSBZ+`1'kf0f#THb(-(hjp3Ykk4%G1IcP"&TNl+
)EV21IlkpDHD1&%[XL-(QkC'CaccSK09TC)qZ6(8Y1kdQKjik#!'m82[*qBGm3aX
pI$,&%)#Y2h##)bq#e,FpZRpi*f&ap&d#"1AJ+!V"2&ck3q(jkc%l*lE#!"Q5ie+
C!*!!hNq0F@T3jPfI0h-ZS%GT8N3Ei2c1fDLD!#`5Ypq$85k'S8KFEd2rcXVkE+-
5Yk,QlE99R(j8@cPfC4KdU#kdVX&$Za5#'N$mk8J)@85)CJT5E!UVdpi1@akpM"d
ME``R@r1j+U2XCXPS3&KbNDBq&8)iUZPYT''cVS"iNa`%Yf*NViHRhH5LR25l-Pk
*p)RXTiA(5,CmLK,'--VMP-bT#,HMI3&GS%rC8,Mh!#YcRci@&reSQ9!H*D)UG)4
%IpQRCdC+phc2BlKZXZSQqAd5c`*TAYp,b2Fj(f1Lm9bm+R9bpZqB2R'4dhleUX2
Ei5k4!3)c)[$A$I1"#+D*CDi2'8#m-Saj#HGkiB!l0Hh*8"bDk9!!3dF8c+6-T[Y
SaXReXF1IU@`Q21B-`'&5iTEqh(6MR09,ZmAR@`aNrG'pB8b83FRB('L%Vk+T(YF
TKGH)"FS[H,h2p$`"l(#q6F&V'RG)$bC%F5BmY9h8Je#S'1BlIEfbU-1CPT)HKJc
!m#Z"GS"EM"+6EFr+MTMNE22`eUF&QjV3CjcKL4E6(P+D0TZk+8QcI+IB"*%IX32
a(X1Tl$Gh+5UH(ee@Xb+dSC50S1Q-crX`"@C$jU[4S2"h,`@rh1V"q(@XrmmC$Nj
K@&!"5*`YNH!KVS)hF8USq!T+&j3%h&8f[-LJ3pklSp15P26PL5b(5qBRH$YJe&q
0CA$Yd&$1Q#m5AXC21%*3"Cj5A[df*LCaTdeT'lKh4"!c9Da![Cl,+@Fr8J3KHA%
fRYe0-$()YHFZ,)TNGFe@#%`G,#!I9SqX9)I&m5)2Sic8-@jP+GMFU!CGH6AK(eq
RbG8$9RiBA(h9T1-mdR)"BG*T(`(#1a"P6$a)eEHrlpCGSe-$cJ9*Vld(eXjLU&a
#'Kq$`eJF'qT,fD8Y2q4!HFCF'lq42+68SQ*5"2,B4Z*!ZP-5p6TbIFX&r-IDQlM
,p1#r#DK$aYd*HZ0Pc"XDSrXS&dDA2S)E0JTZ1mBrY@lLr,FjRUI42)6Ur$*PB)[
-3k*d`iFUJ4bd+,@&a)jq44L-C!GqkG&l(TGdd)8k%#XkhLK3Mc)e`dY`iD0,&e-
Ni`jK$idS4rTcD)--9P-*2mF8Df69)ViLD#(-P0kX4GaALK(TEcL3!+Dic)0eTl)
f,M+@UdH8,'k%1"cjJ(KiTX'4"q(IA3L-%Vj(+Mc&'lZ8+[d95jF34dDYLa2R0!p
"b,6A!Y+qr003"`VU"V6A-,Z,Laj[mj+[MJG*$R!NG3D58@BL`j!!`'ZEe!!T%)(
$DHiS!3D*X#hHlS*fdYChdJLP*P,p'*jIZj!!e*YaAkikP3'YS!'*$5$9*F1[bKF
jb*C4`2HQr3QPCPHG,TDQiBiHZL3R*J1h'S*jhFjf!+)8#G8Se%2V905m*RdqK'a
%,FPNF4TcJVdAGeb6E[SEGUN1j4Q)h2E)21r-4Kk[2FNYF(&DkMbKXiPFaaBSKGJ
cIZQJeCUIUA6)l'QG8DG0IB%Jb4pc`V(+$iiK@iZ8NBlQ4T*%%+0Li5cXIj2BjQQ
QipXSUR[Jr@eahTBRKCSYBSK1bf!$(m0Uj'["21b4)4SdeC)@6hZCb"M8R*cKF-a
XSYi00-kDeYIT'LB5K&ilDKl!l6!IL"'bB'0JihAkjRV+4cY&H3)N5l0+K6dJF4m
`3GJ%+pJfShmQ*Zc89cHj4(")@UEBf-)r%e3Q"Qk($NG35CX0XDbai@"!8YS64EV
)(iJ'l1CYEC3&5L[ia3m@Cl982*C-!BPabb('S9PYFcbc*!Jb"BXIfJT6dkq6EfQ
`h(Y-kI@LE'`qpfJrUBQb9-N1jiQ3!,I&GeGF'kU2hmEe"Q8Qf1Xk#6J''@bVIhc
$$rGP69fDa+Z6NL4TBBC(T0lFKNCp68i"cjNmNPX&r+MVJ8pE1Ak@'[%,%Q,M[*[
LC$UPA5*'X5NMM`0AI&Y9QcpDfKT9F(CYb9-V[C!!%RB`-5#"[h+r%B(f6lhaKQa
8Fkaajd%5l"DDd4S[LVC,NrlMJ)ql2Z+4JUYF[bdGqJjap(6TD*AXbjPKCGqBA$F
Kr@8`kK4SEhK*4ZeJ#J&TBk,cqF5paIcd"aF%mVVShr%XJ0%9*,fUP32NQQ98,8h
3$LC"jDEiAU,T'e9F-%b9L)(S2#SS*b+'966+9p!rAf!b1b,JFh92+ik#(r0R2rY
YGZ4AP+U2+kSTQf0`dDlUFqhkehaa1$AD-BDl`B5mE4F8Li'(hrdlApfVXcSFHV6
I*MaCTrkep6J6`$KAB1V1SdXQHY#L&pil+43e3,bU25(k#KHA(AXq`19pN!!pbUM
'+&FerbqNGkVaBiD%a8AbU5Bkmb&"Z&jiZ%l,#B-qIZRGUBUEGFQZ8HUM'Qr-+!@
#fR5kkF@-X)0*--J)kC4eDYI$0'F2TEU9CK3%k(ah9EDX0PqA@Bda+!p[A*+)%H#
&KB"6aG%X!j!!&5*q39G1i+TR-%Ga(NpY#1`fH2@hH`4G9DR8FGBJISlj%6@TTR$
6-6bJc-)D32TM1b6)RqrdZLXbAbqZ5e9!HHGJU'B@&GfJT#bPQ#lCT+h!"E4lf1H
ViSq!rK43r#M8N!!NkXcEVaZiJ%Z@[jXU@CNmm%`KR3QS!%+GZp58J1ZAR%GX`$k
LXp(8*U$i9VfVHR#kqR0DFZ99Vd3X5i@EPIPBLh)f*JT$SPiBf6VqkZPDC+fpprk
21(J,#dQ85-S5HQ[4%Pj"ihE`dJ)"DAF%+FJcN!!B!f34+U+aUDAVpfDQ(Arl*1i
mEdP)DZmMpSak#5dZ0,1+MFRUF[Nd#bV(ljBjcp,F9UKV'Ppe[!1"hZHHMd)2#'%
r&D#&%cZUre2'J3IUbCkCb28!BAT,-#IGbKF6M`D&![qA)C[(5!56cR2Shi-lZ6M
)43C(L)AKHj,5%JNRj4GhX-%dDZZJE4&[RZ$a&5d5NR0I-PlY!ZD+`@51-$8E9,M
G00`epFX5a@Q,#0`5FYlX4r5GK[3ZHfqG,9PM@feDLc,jJASjX&I-"%qR4I+pMNY
@2U![kEVfKI6Z%jAHAQkQU41!B!aZ+,,5'SQ[VfbIbJmB5Mh3&"I2R9ReJdXX[,d
pUC!!06R89cf2JDqBlFQ)!ppU$)CF3PcY!#6"@1i$mJ8Ie8Xj!Li"!AA-q5c0a!p
Lh,eCE0r*hLaU2hMcSU9#di#L0k&$Q0"@dDb-MGfRc%Hb9kZe&0lLV"(1H0%4cYA
T%N2KlhhMQ8%q$RQK)#m4YkREA[DYGMff33%4Ypr4%EIAdD+,6!PUXVGY,a',e8X
jLpG,1B[AAa)A0MdAH43ZV&l%YADQ34Q(bTB$'Z6S&*-ipX%Cpi6rI2jJ6R@K2A4
ef)#ZSpHXm*AMQ$qdXCP#A!6fEcHU$I6%63C@edJ+kMp+Z+FVAm4a)9N0H4j+TKF
`lrRV@2j6rTpJ#N)XT9mpH#C+&(cN#QSS4NU0mdUjMli[M!Q3!,DGcI3G*8-f5j0
aMme4,$mb@NTYc#,drZ(@14j"+)@I*Fd(j%T"bEcQ"R,P3AJQ5TD-Dqr$HhGVPQR
#lkFI#l1Z[kd&'S[ENAP+2ECTJA2-PMklEkaADfjiYcpM'RGNV1XeBhJh,q5BH+9
+T9G!QUc%U8VEe$"NV2KhXkI'6bA01B*ke*2Y8MdY5`+qSRaF%m$Ndri"*jjJ-,Y
FJleTY#DpX*S`ScRQ+ACY,PA)*[BK#0MMrM8cJp,P-fPp18k'G$&Ujp-XpaT*Km[
9@$m1HU9BmNRZFV"Q))B4c1jf0dNQ#`0$c2#V'##TA5!eRVhpAEe#G#BYDSS1[5X
"kVe1&V!$)-pd$LdDp2CB@Ada-1-NN!"dhA@A-pR4AG&#hjjJI[i#Zl5@TXphGVS
j@dE,'U!(IDG@r1-r)d!CBYr"3N%16@C6#L-P0MFm#fe'iS'fhFJM8m*mS'2m`TP
(PdYF%''4UA'9B5Q98fQUE4)Y"-b`3PLXZd",QC`eeV@#Xb929CcP%E(2%hCcT(B
c"ZMGdZY!+q&PQLDM,V5-+CcTEII9f-m*f&-Yr6mGrF01)+(iV39lbI0kL*AZ(&@
9,U2NX2'Tc&'U@%6@Bm1BMfhk0E%``)rSGGeY-"e"T@Nr4YJ`#pmc9VS9I2,bSZh
B)pKP*-F%2I!h-H2qibDl6Yf3!(9eMLC9A4@K0&CGrIh`Zd+TrIQTUTA4q#a8JZj
aU3&MdmNr$NNm1CSDP3%&$CH8S5hMZ$%B!DPG0@Sr)"i8ChmMf+JNP35kPB!r84k
!BA41qj!!e6&Ylfd94&*jBiiJep)pJG2Kb#"#0+-[kXmJEB2mJdUdfP[mX*YZj"l
1AFKfdUQ59(*P5jPKr9h$Zd"`iSpKF`5))(d4llN"TQ&l-CQQq'SQlCUdhqA,%#4
PpN9ce#-CAiG3fUrU+9ZVF[34[b9Yf(@5#*9Y!eN0,m!dkLRl5r8@5ciNc[bYk+P
bqVKe)M0eX9ZSKePc*Z-b0[K#0F1NidMV59H,qBI*"mPq)rI,FLIbDJMPD4Y*fQ+
mD[faU9@eUM&b[CLf!l#dSpl,#@GiVM@T2c*p*Aql80EfUR)G$TJ"(c*GA8,mDZX
NPc0I'qKfh8kp4,KV4XL0RGBpKd8#pLfUEK,%VU#m+KcJ*kNPBkZh1hBXM6pE-eq
KX%iS%HHI[@PaVUeN*6!k!Yp1hqdd&"p(jq+ibU@dIL*2Epj&'[2-YfIAUaCE+kA
Ceek#G@&r0F(21+%V@8)imT!!QmlB+dkK$h`0!,Zp5mpi,H(Q$1KTqLUFUS3DjN%
Q,d)D8M3Ia#RS63C@5!G,1)pAX[ZGl62YMcfC!pl0Q,2mMD#kP6L#fGT*MFp(4!f
)),9N01(5A+XE!LiJk5q3!0p`&Sfml)ZCfbHTa314,Ya#c8ll&biIMLkBZpjCYPK
%iU&D8lI!R6q4cDX$16m-h(DreV8`YE-R,bRX(5blShYifbL&I-ZEjSdddYS#DXe
D)P3f'[jPdX4,)+140LA3cCX$*q@mLEMjKFS5FfFS-$(RMjhP5AaAM,8lBqIL%ie
KrV'[9hDahN)j"9SCjcp2Bih9qf#-"&BdCieJd8kYX25iCeEl'!!(fr+VYmU%!i[
P9U`)N!#J!j1qE-LCc+I$b24cqHDR1em)j%T1aFK+d1S3NT%#`*!!*b,hRr0q4m[
,aPc!Ya@T$+Z-2LAY1B6"Q(CTc3i,frlmjFk`DY`i(*-aVEaZ`iTii*,m#GZ,j(e
U$5#h4kXp"0r2h)%%0q&@X5+d0J+"3P+8D&k'&Xaf`43JC-l8XK5pFQTMYc5Lp+Y
jkEGH85XQL9,hE%-XZ6E0BR3#5HYEbV8&d#Y[VK8)4dqd+YeUDJr-HU[jH(rN!B(
[+1qDLfQ-$Y0m9,l%Q"%q&HNqh'La[,DTqbiGeUCJ1Cfim84c@-*!!EA#TI&'bIT
4$ZXEF8@Zpk46rPSB*TS$cQ+dqe8VXM9J12(RPHrQ86JUS8JH`*Z[AmH3!'6"*0A
#'"XpqdQ*jm'icYaU40-MjQj%5H"j4Y-SY("RXGPpBXYA[1Nq"d*P-l$VmriG2Ll
C5PfiLKeY(M2e'!)D1I5NKjk8,ATd6Gqmd5QYJEFXFSV85l*$a"B)aC0,K80[EMV
!h)ah06T&X5&I1h&T,CFPJQkAmkX+d[HTd#hjE(jA!*mlXbH3!&*a6rR6@1TUQ5I
b(Y%QHZYME&Pfj4@EXP#[kQ'1('ZE0LAjFX%0lDQ!I6Y6d5iK-DPl5iFAJ12,i-A
if-p+bENSdjK0*LUe!e2jb+CD#'Y1cRGcbSBESaMJ5HU-E[Z9D([DQJ&c25!1ed'
[5Dpd)[KQMh#j[SH+2Ij$"VD9&l"$rUCJiY`VG!Fp@k`3L81!G+bh'Z!L)`(VZSE
m(cNL4@RFRJ&[4f3%29**V!V5Q5*BjVf1%58dT('XR*D8+IV0'9)@5G6UJ9Y60mb
$5P$1IQ0(p6hkeiHAeajrT"4K2-CI43(0)BUkKA@fhq8Ai@2Yc94A&!8X`-49Kkq
1U%Q1Z(Ll0Ml&DMCl`UNbZ#eISPL)Km,aH*,EVcA#M%ZX*XVrT`$B1QN5MpZ)IFP
h9bakV-C"[iCP'2QfGM48TDGJ0&lhB6SJAJrEA[pXGI4D2T@TX9Sm8Ab*1X,TiTH
84X30bE2aUjbUpeTFQhl9NK$E"f+(%mVF)E)UBXcdA)bmC&HC@EM0-`e#mEKCZ0f
qk(@iKS&C+C8c+Ub8-k'XP)(#21-6d[F&E!2ADK6-YapKCT*#,pXJ@-@qGfZb15U
RP2(#dMNETl)Q8`UNN`IYA1fGX6QGc)(k!`65T2%%!dZI)U3$PePdCKp,%GF$5cf
B"G&#[dZ5mZ#5UFANBJXjBG41c%(*#UQNNNkPKp*R0&iN'4)B[kG2PZ*-6diTBAq
3!!dr1TRdiBa9C*dS,VSDX*,5X6QA)M)H&p,Yd#8-LM"'EUIMQ3@e)jr*PE")FIL
-KT1f8F8pB,-DNLTAcNd%EaKHbRBXi6-APPEG5ijk+'iY+,D01lm(Z4,8$r-KjG(
LKG5RqB(-@NH@aF94)ihi5X6qP!G"P&d,rMh-+*CekK9(d06J,bfPLi[K%S'2IT1
qXN@3!'Cim&k2PU)$i+446pYajLjHQKP'6I%)pdJ)Rh50h%[`A%&Ff81p[CK+LVP
cMS,!"EDH$2+NF253!#4RB(R30ER!6U#ELFpC@Eha&Y$S&k)06)$A#Sq&kQ!E3`$
'mhldbLV!H2B+9SFEE5beY9!KNk3'1JXGTC22hh`EbGVMB%m"IlqF5fJBdf3"&*2
-*58rUA9PcNc5X8Y6XrF@D`h%8qc,mL,Z+%KVUBJ$&V$F2!4FJT)0I'r8H[H3!1*
`2DSA[QH"N!"2J![14UlaBSkp9XN$1%ke"82,2*AE&HVq1%d@Ik9!LLKQL#4FVcJ
4lE'+Uc1Vem9NPdYAC2q*k'2514%XKKbQ*J&ae$kDR8[%95,+X6k@U&3UEKGVef1
r0Q3EPp%bK$GE,qTT`(EjJEh1(h*@dF0P5qC(pm'3!+XfE#4,@1,A&ja1&XA-q31
Pa1J'G3j1QYjh9`BQNj`[r0PU+MDafR+$%MjMKM4[6kaMFB"Zqlq4AXr14-'G09c
ph6*$2`)(cNHr[H#YRk6`6URqSQkpeQVJT2LHQ[['%9bcL#b1)8pVU2V",'0bR4[
S)ECRZ,*,THP3-X!APQhqUYa#R,KM(Z&LMYrX9H$Ui2BJ8*V,+-SAefUUH"SSbbr
ai(P#!jA#ahJSUIL9PQCI5hKk9*edKYU)bQDJdSDVQEqiBV*pa8&[$dYeT)FJm)A
Gk3Sr@YH'bX"J-4-&'VX30IDPa4FFGi(abHd[$a["!f4[LX%T2IKmS-&V%m[*#pZ
T-a$Y&lJdCSdJFlY,DbmE4[RAJ@X,3$%QEqLQb+KTcN#"%)FeVHp$$&1qe4aZV'Q
Gq@mT%kfG1hTr*5imCq'ahi%4%hHpRjFXdrhLL"VE(bb2K@PH`hYldrhe%-85fd$
rPBYfrk$T$10N#a4f,0DPLDkdIUQA6D@RekP+QJM"cC9f@&$d-Tid+L-A!%F9MbX
D*,1j2RYj$)aZCi"16A-%Qld(I@%QQSCXE`QH2'a)paamZ5G`e,eajFrQB0AM&2P
BQcY*G4Xi&DbNeP0-%3B-*IR*iD)2[q22SG!MPT,!'f%ReTQXBQ[d"Q+d,MH"fLR
G,"jiqcFFfq80r-FKeE*H0#NBLZMJAM$MJ-E'VPTTCTcV@EMS,a%m,R-I,4@(YU!
de@9BTINIV,D6'CLVU$Tdd6X'#K2(qEk6RT&@(j[Ac[r+E'T!eDdJJATL!(LE)q3
9J[`pGrha1fLlBNEM!4amc("TGPL#2h5Ea[FUa1qf19HqClhFK@)ANX3iErEjR`L
@KP)4b6PP&[FT+[bK%+lSfA#2CIM*TKe0KSQaHBC%1IlVB["S!65pL2HAh-Y8rb`
MeebGdHSrNbe[-(E2iDl"qTNb!@ib[#PDlZ2UB3bBH`cqAUN,`,H5MQBk@U&""9N
,XA`M1+F9cIaNj$ZVSL-bMTZShC,`VBKhr#@P(U(,[Fm@C6FS+qbDEM+#93#cjm@
J-J6YN!!Uk%pmQmkSJ0m#H(436X"Hr1dZX65*ZC2V%5fq#5hed8cC1IMpPZbPE3Q
EilipQM'ra4D)5,mmqArI)d&eG2R8Q58G4Rl`m*V!rLm-F$a2RBlE*FI,EIqV2#p
1%kh1%a*29[UkAK'PA-TlG*fh@keGaqCN,+0j[-16AYJf83B[pd['[E%mJF2*K(,
QVV+Le6@Tj+lJ#+5L(EG,R()qNN*,,[-0X!I5Ka+N9pFKXB'-GVS@lVEc9k#[5ib
m(%Z-+V2FL'F#6#J(@Q9CA*NA2D@pNP!i+5#5S9r[+RUac!Ed9,F0cG0*9j)2p*!
!'f53!2LDp)mAFD5J,N5J1%ZN[YEBH6Kc#ZAUUC6NVh1ZHJ4kFfk3!"-mbYU@*LA
S!*C,4)G&Lk3iI#a#k#%4*DQRX1bSC8&[ET!!H$a,YPdL2I5fGY",AEr@NljT&Q!
Bb8#(LZT3Q`B1!$598d"AFbG[faJec9XjcZ[TmCB!L5H@GqMj)"b+"hc3jiD8AN&
#$(-TIi&A6Ve`bFrK&),BIcZEfU21H*dR$h)jVKR[+`9+&@TLAL5aj,)ZUImjNFT
qf!4-Bdj(VB'$bbc6KrXe&#p3YlAQp[0M)jq96hmSl-&6DTX,ZKS@8T`U0ef3!$Y
VB(P$M3RDCU$a-rL99Zc4rT1%@D(#MY"'qLfMKBFZm9dfj3ESN!!ifq8MJ#*fN!!
0r*+keeY[XJjKl`r%0ET+0FrU#+4,345QdZN40L#2hXil@6#h#C8(`J)2l[6#NC3
2qY9mlH8pq0qGVcKFC()CGZhRN!#CIe`rH0HjUUY)LM,[Idm#+5JD1cH4,Ir[IhG
)M*H%-qBa0H@0%X,aIK6YS-#`!d5)-3PYN!$ED5!LY!2[mh*Y)P1)UpVF"`lPFCP
F!hLJ8'F$@hMK(M'4,+Mc[5KLD&@Nr'0MS@Ta(K69I,rGk`Q`'A4padm1qaXqJ19
VmK@5`01%ZJ1,XZ`e,%$1M5#l94Y)3fHl14$*phqC1e,Y-LU6l"@P%[CHl1r'[a-
@F5Sl)jL!`46#r43lk`YS,Gh1Y0!0j`!--NVPGl6(*qe"YL8K63cb3j8-l@G"e,Y
6'@,DPR'md6VL28NHHelp-T4dl""0$hZlUMlPifHcJP&Q4m)[&&4B'-meVF,E880
lITPf)$4Bfm(4"SlM3&JkI,jk-NQ-F"qT-NXTFX%a**BaDV[",96rb"m"#kG%[V9
BTam)eXU+!YPqCQhR#H0fEXc-29(kd2l[$&(6LVibMVUYq`*'eiib0J4!KjMAV(J
m8"Y%C+f638R-%8(,c"(Nbp&PUULhThkTqkB3c)'P9#SmP)f(5(aqU9RNKc`1@iD
r1QmJpJH2`R)l,VSD%GX8Y[b+2IEM481q&m#+8jlA`CXFi,)D)C[("+@C[4IL[6#
06B3BY)LACiVqaeJp3T0$CS`p&lm&ASlb-dRTRe"5Tb4p1r%9,fNPii5C*Hjf'`(
*VH3k6#!JAT[Hp+*56Br(V)Pe&JF6[E@ITL0Jq4&1*@+KB`B3mi)eL,B3I13ZI%q
1fPd)h8RqX!m#NLYS$2aV`-YccDMV0T2pG1JIGSlS3"kXV4TL'!@%*aU29G(N1h$
IXJ`e9ICj'5'@%YUcQQY,V56LV`#C'GL-c(,910XC9r92PDM,m*!!`$+Z89K*$XI
I@m$,l*Lqk)QR4k1RqR)'j5(XV9i2ePpIUD4b6$*2N!#M6q4"l*%5XkFRT*@b46)
TGG2L*J%PcU`5UaU$E(CV(ciR5c@lBPLZ+(b0FX+F22Gi--$Q29ZpAp+Sleq)*K'
hL2kcY`49TQqm*0YHb!#PB-J!8!2)1kG@'X"NN!"[pG@hRVEe'C'G*MceiA!IE%2
aN!$,919Iq,IXc(T+9`##kP[PhZ$eS%BeUSBIM0ij9V99aE2p+`0)lTI6BJHK#CE
p60U&P)AeUE2XU,D0-,M906RSkRNq[#RCZFNB+JUVEEEK)hEAPBKJTF#(#FlMY5R
BTB!8[HKRZ*Ri6A94A@Z!3'*Z0dKX,"9LbRp2"rYdGK*A"E@H01LV-e"LB3QlT"$
cK54("dAU46CHNBe[@GP%`b6rSM*P@29CV8CJT0+Y3$Mc0MDS"&RN4eiR8EJR5"T
P,3mfS,DA84G-@06Yb1BN%'G[#cfh%B!(256rEX0eR5ELQc1-ap,f11G[j85r!Lh
%[hF1"`X6"qVU#`X("qVU#r)(R8-@)',XfLC(f8Y'-,L0b8e4BFadqU"%2C95HKe
FACfr&ADV!@XFNR4dG!ibTDXLIf!$Lap6kcSiEk'5cdQl@32e"`h*Heq$j[J5X*0
JA!ld+YAeMH##m5iLGeJ[+AI"hDF4UXS3KLIE#$R`BeS#IBaZpYd6[35IUdjUdbD
U9qMU!G`KR+PfDq5iT40hmdFf#A$6NU@-lIkfcM9p'9DdG2FC[[2IImI9,mDkhf$
mf4QMMRNdMlCA#0GT,d3[fDf+fkP&BEeqbrUP`89mLHb2J8cQT82r%(Xq")BZ0-"
DLQi0"Xhr@#BE113'8pU8IJPj-ZV9"k0i!dRAYM#EqYp)0f#lVI8BmBB9[e+d)dj
fZT!!h4KDea*V@RDl&BpI,Dcbm"'de2&G"Z9e6bpcU&UjmG%215&['fS$F+qa9V3
&--fCYpN3hReY@5!KTj8`X0bjp,#+qmYHHbqXM$`)5L'"diIA+h&i"#P%-iG"8$@
JDD95@C1c0r0X-i0cb6d1B'0P3Qp'TdIS"hU4E%e$[JQ+0aPjB['fUm$rG&S'DST
N!1I(jPa,l,Hp(p183S#EYl)C3Ah`ACjl,Z!5e-5I)TfkdSr2@S*6B4eEUQHDNBK
4k,6PNrV9jqBaYBCNM`d"6pb$"G[ZfdefXr&RLS+X6U9,dqR#%!VYj4[cH"TU'd@
a)f&CfK8lpAYV+cNK!6S4dCh8T!dKh4ENkMdZ5@B&@JDMR0d&45IFb+l#"6fSKfC
$a3RqlAIqC%d*[pk5p,A@$)G#l"qlP@6MU(HMqmLh%6+@L9cTDJH,+JF00[I+hYI
c$5ZZ'eaHZPKiqj!!iMU6`DF1fV89`GGc)UAjLSSJm25r[dl[ceUeH,G-P2q-(@Q
#*R#',`$#%fK@`@V-Th9j)X5[!dPj6H9mfMPY-D2NbEK"-305%8mp`N`9(iHNYIe
9,IB12YY0a5`j@A&$5kKih&Djep"I21$8meKqAEPUXm09C(mNaJJeV*3P,!db4b`
kS"h`Ld,(#VkS!'aP01Hkefe-ZbXPGTXAHL$bijX'!Y2DNHlN4Ml`DZFXhh,T58Y
mCqRL)#pZ53%Xl1jEN!"0Ta@3!!'N0SDRN!$GBmUd$QS5iL@&cmM*VA2ep1mZI&'
$h&ddR)BT[9(f9f%NAmS2KejIS)C[5Ac+jZd%C9Idi5LR"3$Sk42IDdI$Ce"D#0C
4adP%Jledcrj(hi[UhAb%pf*p2SlL"eL@)+TmSfSk4-ALGJ"L%TIbKJ2Xl,TlF6I
Er2eU!REJ)P4,$l&p'2(T)9q(bM0[2#`j9'r"SD0"0%0+AT-+fMC0dcPf6pMa*lM
D*#&Yk8JMQZ6rFBCj3m9jJ[!#QQ8("XQ9eQ!jB!F+3I2,EF4fB0YTEXZG%6PDP-&
2&A$4j5k@3!04`erEqTQP#B6,,Sqb)fA[-EEUDVEYkdCqbhf(rTEmai`#iNRPE#&
'IeMeGfa%a68%CA`JM"@Tm,2,%$NcHcAZ"D#UT%q5V4,f3E*ei&j`X&4RL0($fj`
j4K)[Kq6G'K[FjAcF0'q[LM4BPIK3+!4Zc+k+MPp4$M,)cK+D9FH`Fr4K$Er$mI(
6i`jC+p0B$lrcIcqD3%1`FiaKN[LT@[C8N5RHQ[*)R[44D*0I*%MVj'0iYN2c*&'
De9TX)JirS(@5SZhjp4q@[er"c3I%)#mF`hbFJR9$BS[(VqYVpilFAAH55)SQ(pe
Gb*)MKF5+@U*M"RH2K6N+j3D`I++1-('!qFS'j-)kTqQkapl('BTS*4"5b[Q8kUN
j9mk29S`UCAXr2cNNb9%F'q9!3pVB@&T1L"j6MX"-@!'A%16B96*1Gq$F2iV#Q0D
1"T%eeYd8HBlVU'IlP+Xp#[-V,Al4@j&8J0c`FeQ1QL+N8kl*L4&TYTm)*"Y0N!!
eDN!5)@0Ah(*XpRMHCKQfAMa6"ha*c14P"Uj4e-QX"iM4lUISHpcYf+NZb+1ARQ"
3l$3%1$P&ZD8V0X&PGk2`RkDKAqP4BlGUM86XbBJS9Q4(i`1bC*cMNE*(!"+4C&a
2C0@Da[I6-TAML,6"pF5%3931%f$lahUR#C2drparB#)*QPVrr$*D)hGK(BDNS`S
kN4$&l(K[5lSh!AGH&BUNQPIJdP6!FZqRq[m[e!XfI6S-),BjeFY@Uf),DMNM0,M
(a$[!'bYEA1&4jlRZ80)`aK%h-H#(-hp2,00UZk[0"ICcm6fFK(CcXVmL,V,+L%0
ZGLbDD0`IN9bF$(IlkE%&A!NB&T1'X8KZeC!!4[1k+',Yl93[*P6TTRF%6kACH5@
PQV`P[YDR%Lp@QSESjiPQ!+Ll8E$G8$9T0Y!T4$B!GNf15aE3N9jKcS+DMTUIE%l
QLXffpT5JmM0G),3"U6`3!j8YU2IKriaK,%h)2bkabV9q$ilq!!ir,I&FkK*+h,U
1TUpjmMJD,liE6CYj0RRJ2RU#5N0(!#rh8"+E6rfj*%9Z$+hMN9NfiFiVjbXE(d*
,EE'rX,&0qY0Pa9RlIpII2S!A&hERGQGqDQ5A*F+Bd+GBPa#k@8XY5fjbfVLiZAF
FkKm"RIKi8r$Sc6j5$c[e+bXJV&kCESIaX0ZTel2&[FmaNlaL-H!#1FqK+kHedkC
`%!LHk-%UeHNe'r%ZTRiUf9U1kDRV)GK##fUYpa$dUF#Sr8I"9J!8&bXl#R0R2pr
p,FcDR5haf@UBY*RaAkMBRbEMU$AVh-@dibS-jAhAI2ZIh[biN!#@XSD#TVBVA6q
XMB5J9G+-&DE[Y&lD5i[$NFp(54Y5l-'b)&A`0G)5BTaBIlRPl(PXZEK98Fmk3rp
H9d5jcP@")9S250A!d#H$Tcf&b8DRl&P40AGBAZhIZAYT*b!5KV8')jS'!`HNjC!
!6bckHp4Q1$F4XcYI%AcHrAcLDH!kUq4$Q"$rc(#)$DMH02Zd%BS5Pjm,Z)8!G$V
ca!jA(bci@Zi6Bkp'GeUJ)Xl0SGA2(l'S0!HB`@hiiY,Efr9D[jd6j*Bm$*EkJ%A
6Nc8&8ceh`P3e!6JBj+ef#dNFrLIGr96mi)#-#@e(Tld&m+ha[F`kV3jd6"39CV3
qGU#$,Kk$V4Bb6BRJPPbF,SiLhYeZGaG'@$CU@J9G4%N5d`-!Gff(63$R8fjMD`@
p8XE)X3$!()!AVeajfKSHYUhDl!J*YC3YE(1`#'8hEZcAmhAh-V#Z2['%U8bejPV
J@,U"$!Yi!l3)F!F)L&2T%ciV*P9UDQfaNHl5+e9##1Xf68,D%jH6aFbJNHmk*@Y
A2hipJaJB#l4e1IXp+E06bR,EQJFIkcB%Ri"fXrCQap+cD!Z)[G`@h,CC9e*%QLV
[h)RE5"6Z!,m8)ifTfqZm6BpIrXNJr!%-Ri(2-0VbX9EYN4deceFNDQph&,[-1)j
ILU@SGKQlPMPX#Ub)(fZ@,60&l)I*Y(eQ,5pYHQ490LR,'Db5IAr3BA2qZPCb#T8
D,ELPjhNi*F&+1-c"Pb&LMU`b1$-cpAB(#c"k@Y1VIAK-,jbiTS6bA99EAc1REh6
2Rfqhq'19$jpDac2cZcM@jUklV8E`A8eaq*X[54K2FhlUCV@p#`'L-H5B3df!'JN
X$e&qKrkCYGj(F@U@dbE293hJi@R@b(@M3Y`lVIiTA#EFXDqj3pfkC$pZl8Yr&`r
@REDh!U[[DChb2S(Yk3bEZEbF)`qaJY6daik,M&CZh',h%VS`bE&&Qji%XaBC0Y(
G[0`88!,&1HYHFDfL-'QGMCrak-I3kkajU83qNa*B6&U%I6ACcrQ@Q*Xd*(BRclG
U-f8@L4PlP#c2qLbcEIm&q%Era!M6ri`KA*SV*&jjK6p1Mbp0'[kll@9qrV3T!E6
YPm)*,59ZSL3&EU,8#`'VlH3dYGN5#q,[*GdU!9U@Ai%&Y8e8Al"`aI`1(J$FpYI
eXQmU4S%"Ac5@#L5"+Q#H@,c[Nr[NQMC0"4JJMrY8SE(VC%De"3UUbLh'K%ZHlpQ
ihAQqZFB(#$NB"N5qDmB6f$XXlF)m,#a)$j*CXdQeNHc',1PR#QV-N!#&G2q6UEf
Hb1PMS6B!&JflBq"QmJ&26X"#96(fUJ!#BN`a`3%(Nf#,9*BVZrR%p9#-pQ2BI5(
3,e,2h9GKD5C0DcMJR!%`MZ,49e+#D`QRZ&H6iYJ4Ta)#f#eqMXdF0a91"*`LK4S
X5!Ue(E,&JlQeA%3rkjef3%dD(,CqM31$F8bECi&HSaD#hACD&HL`*6Qk%6"Jqfc
rJeSV4k'QTUjRp)lMl[QU)DJ2Q5&lJ5c6HXmQ$,jApA,8H9@@-RdHqcG"YF[ImqX
SA9U*R@Mp,YJ%XHA#kIHk!mN*`l5T,T[A,2AL5,cla2p2a!F,CZDi68m46q"4CB"
S-DHY$bHRB,CT,Phd9Iik%bee5f1A[68$+A+R1$D@XhkEKl3p5kLm,AK3(1mIk+G
MdDNKk@(mPl,UJ24F6EB$*V,!C&`ZbU&PSKpYh-l,4Pa$MS-mcP&'A)NaJ&pFcJR
e`)ZDK#1&XY@-U$(*8Bf''9VqP63FeX32@E(XC'3C+0'aXPZV8@ZF,RT['LH8Tj%
TN!$d%"*T+KYrl#VdR90N2hKTh-TN-(K9AR[PNVi43FD8pX(rd5NlSD65q2q%EkL
&@HUIb+N9Xd05A#(9)e*E*%0rE9kFJ"C+lD$FU@jMPf3`jMb`0CE,H@%bNl2m+)M
+[*l+PG2%XrSeTVU1V@DS`cM"9lRLfZ)TV`,IEJ2[N!#(rCE@)iLN11hNm6fq2`k
X2**mX6(@$e"[rNS@$cSL!HZbNMp3k,iaNGH@1VX!KC6MPfJr!fN-5NfI'mjl'd(
9VEFSU8&'Rk*A['%4P)3NAa'!@qV"6S!d,rR*qF&aHlm&0p8MX)jHEQc-[KElb&!
*$qH-i!"&&-%h#H0%i!p#FqaJi`G$`BQqCP**Xr!rAkKKQ`IfiQ,,IN1A`iS1mND
'+!)+VPldY4$'!qJ%0NaE&Me#(V-,"&8lA$$Cl1BGYZrU[ZDAKADiG!L,*c2aqlJ
9L%MKZZMHb"L1#Pr22#jbEL'fd82d--Q!2QQ(1RDPSNG++VPU`f`2,AJ9)D4-P!B
d8B+fDZqK0E'*1HpQLAP5T'-(4ka45f*,fdi!pE0$Pp!#e##(%ajcj68+k%3pZQ3
DJBR0!NI4!Laf-@k2NhYNYNlYd&e"XNC#XiGK+$X2JKaL$h18baHl0cVNR@Yqqa#
6$m#fQB$d9N44clM@mAEmZ4BR'9)[SZSJFS%md(6*Gp1i[l08e(b1daH9R$CNEZ'
C,(KR@T6SPHi$r6@9l)#G96)YT%iSSbE61[[bRE*eL0)"H$b6M4`a0(Ym#2r,G-X
jDJF4!f+R-KCUf+XTS[%+9R[ESNl%I"L)Am%[DG19DVM1)Ehb+A6!!lpmVH[,5ql
l1R"0%5@@m4G'8L`ic(hb&3,SbRprjX6++B$`%5eR9Tf+2r`Ec[AELQF33cIP91V
9cAp%6E,8ZN``(,k*BV9)D'@rfB@pX$kHSrMJ8FaNVIpQ!2@fe&dhU@IGqAA-RY1
mZ2jF%VGph9dFMPQ5dPfJ9m(A4-fMQmU46D'#SSM&Kfmk*#I&M,%IMRRIaiALJjP
48+5%X,pH8Ylr!S@+RbS!RDd3jP6%2BQddjicGj8%YiIR0rBl[)Z%+bhN"RAPm'-
N"fU#ErLmNFq-A9Q-h'DhXc*`'E1IXq$lhF0YXaIr4Hhh*rBBXNaR$b4RXl+b9bA
I!J2X`"k!,$Eb-q82YY5f[YBdY`rJM!@&Q1N5a0#*@JGFN8PGBC+#ZiIJ!qFCQN2
`h+4HfkQmHEh9Xj+%SVfRKJB'QID2ifk8&N@Kh*)6(TGH"a)T6-LlLYpETSdlpG3
!h0",pH5#!dQ)m3eaVE%qaU!&&J$CP,VV'B"0J+P)3GY3Jheb83b1-GM!m8XL6Sa
),,&+bV[*59[MFMid&B%9Y!BaaTF4-M(I&3BbaM,25$4rmJBaL#43Jp9aK-PpY6`
#(3F-#bNB"a)%6XJHY,`J&pqh,2S3TYUfPA#d[M'4-R+E)4miJBZch2f@IiFbHhX
Iie'0M%*8-[KbbXI%qU$'hE8ZM34r1dYN1Y29VTi#5cic5*!!jN(CXR9Hl`MbI+S
56A+4,M$F%D!%mjbN,QTS+CG%DZjXm1TI+f%bd5![ZL@2#6RiKP1L8V%C9Y+5e"&
L-QeiYX)Z`Q#G)9UPYa6l%edKjb'9`F23$CE+"Mpp@m6CaF$9&0hY@8Aqca4ZV6M
dFDYfG#1DV!m0i0AHG%,ZR`-jpr('mddijRmP&Xj6cR0X#[FH[GQL8K5kAq$"&ie
!P6NI#pFLPPjM4XNKHLdU83R4R##e*ViiZJX%U0pTe+'G(C3'@UY5lc##8)26c@j
VNFXiHD(T*JaMl4p5K!AHI&,RSdfYfVXZVR-i`BdD'&jq*2Pk+hLk)dAU#4d3JrQ
EQV)M`3L#,C3qd+ZVSj!!C*)DX5RQfRPYd3b&H*j(crkC6hb8j6mT8UF,C$8Hh*)
M0kBk5airH#&B!ZXAl&+*18NpLM0'CI@85q$j`SJlhHBS1Q&'1jp(Y1,S0JT#L61
S4b*5N[P#Hp&2a2(5G80@G05,!Y9YdTL&`NdCMZarR*YaY%GNX#5aYl'Z"*0pGQ)
2IEQ$9E9)-R&KXTjl&rIh'q0@N!"D-V1*K@hc+LUHr62h`F5mK$Z,cR!V[KR-Xr%
0(L-PUm+RcrSH'E2FJ(1Qqh6m8BC$iPe5TH*G1'K$r+-8*8a5ajm@THrJS#36re&
5HfU+8*V9L"Y9#TR3eYGkpe+ke345A"KcYiK3+#8VpQGq@k(B&McT$'Bmpk'ATPf
RC8HSNrAfH%&9J`EdiSDkA'mC0mJL'Nebmc%`[$RM,Dlm4,abUCJ2D&kf"@CF,",
prjiLK&+9DfSDZ5!"jR*d+KJ(+&d99&pqDTT`LSX6b!XUlhGa3'#bG'Ym'c"U"5Q
LUUZPFKP05h&-cD3DD)1PFNFXZdNck@$E0IT2JGehU8NqVq'K(3[`rTM"Ua$Q@M%
`"$Nr""*56["2"CLL6j!!+XhJ8FUm(mj-60keZfmD+&(X"G9-[KVJB3M![36J!"%
*9aKFDHU-#5(R+UZTTfib"S!&p(I51(dZA8Sm%2lqM0ekHadS%P6N$2-Y"Aeb(YA
Yf@Eie*)20Q#d%*Qk`E)TDq@AZ-UX*kcZlEJ)LIPAlf%jLY5"P%+D5PRM)L2c(4Q
8C#SYfD'l-Rl[)f5p@h!*2$TQp#&VAJ!"ZmB'`%jNA1(*ZX$k`63Te`,95LDeKGA
BB%bp)P(D5b(BJEC`Ll2a2Dc0)KKL4FpGZKcNN!"cbX15iJY-2kB*d15T#RX2IQK
K&[hl-`EUHc#FUI%&"9C09bX-[3+IEEa%[&Y"BpMS,[')GmNcBhCC4B'RqY3LB9J
Qp5KJBP3GkX3TP*F9Ld*2,H5B5lkCZEV8er$c&I'0KNmV*K`p&,&Q`+erh,611[)
`[819TC38h4Z&NqKEmAR83$(6TAAp28DB25YP@i1`q2#2I85ebRF+qVM2eA!P@Lh
X01%G@0,$P3(D6haFR@8eF4a)f*iKSU'kYRi*KSqI)4MJ09ZQrEL8'IPp0pMr6MI
Ckl$8"hH+0ER$$Hkfc9F4V[k+Jm@F`j&2+"48309`()HVKJ'"`Eh''N+ZV$a&)i4
8DeN!G[&(538)&9l@@j2GfZPfY1-6BlJQX)mD#KpS0EbKRGH6a9'j'01K%Ue!9CY
kC$pjZ51KKK3Xk$!p[pB1!'5i9Nl4kL+,#dLCGjP,*Yhpe-%lHVIk4Y&EUSA9IH@
lK#23X[Kk##F8,$K(iXb@Ur08XI16$F4j50Sk!L*RjM'&rm)[q2IbX`af,AT0GP,
FIG$qT2!&k)%Q`#F9e6G2LX-eYh@3!($fCQ&+SBh6br2*KLfUE0rbMhF($502ckJ
rE6H$B6,X(-YpH1,$c`LBc"EaIfAmc-ZG!,DM"+bdZk'A8"JMSUKL9Eh-BC!!3AF
&pi0ck&(4r"SAkf0%LT(fdQj&PY`F5JeS2dR62Mq6XGMlPb"&b9FBaIHH&),rFjD
eq`M&dm2DF5B)H,"pF&*!l4%B#lrX(YrVcPP3bQQca'Ce(a$8D2$pfZ)XBZfTTCE
c#%c"dAjmKkeP'C*rDP)XE6qeYj!!CLCbI,1iC)I,NhJA4cEj#cimDEJ)$3)reN6
k)lFJ"SRfhaZhqEH0Ne,F9M6*Lh!-8(ZdCq)dRiY`GbkRF'mc-[`3EPkM($Z)aC3
QBf`%HmbGP82VZEFKrKXK,[1hireJCrAf3+L$V+56S0IGF9&@B#Zh-B6mlhaVZ+H
Krh4H@[q&24&i(pRMq1Aq,5XMPE-EcQ*JjGN20"A@RPRB+Q5pD&$9TDm%X4LVPQ5
d8PBB!*Da41dE@3pNQKi1PJ`-dIe+cJ*r9T(+,+&@$ZrMe!!N#l5K32'a!Q2%X`'
HbP%1D+1e&5$f8!1j3!Ce*SmEbm&Cr#V5efK(p5k2pXliq`VDpGI0A`YbVj6CQ-P
fqU!acT&V-iGU@iAQHe$6+fY(mf1[*GQD2dH,b4[Q1E`J#K)9Plc*QZ9f@F",Na)
JJMF6`f[@rYmCN!"eD$5!Crkkj+Vjkp0(e%q5CqdD&b&B$5-[*`PV`cL(FY60`kA
4S8V)!Rp&`("ddNSbCX2BrI('(rXCGTA$l('PmflkYZIm(%QX0,T*#2kk4bV!kc6
-LZK'r2N*(P-e[@(Q@id[kRjXm`*f8rHVBpK5N@,SR@HKf`PiR(-$-f-[88K'10$
Z!G$6Y(qDlMeP*"D5ehh`0%fl'm,&%#'+1EMNrR0BCL*8`I&8XhG"m[6,G1eBe(%
F1SV#CRb4,mX,bfM)3$Thbh6#@!YB'eGlaX+fjTH4NJ%CacG24`m+*F[aLH+ZDMK
bQG4KHMU%a-%I*X1qH5h4Z$Ea!#DlUT*kr-RM49d1T949l[p1P[P1"cGc!JI,'4a
CAG'"6Z4p`TmU8HZQm)bFG+P-F5djUSmqPcIbMRJph-'FI$dEiRlClH+&%5iU-K8
Za`FiN[2"I[JIR(5Z+YCDVpQp[@c`IH6k&,Th0dBp2l0PmbIU#Y!aM!TAmX"a55T
8NM2ET2T+3Mrr5[CcUV@F#+93'8T+YT*&mT4qFKX9!@HjEBU!3P4hH9jr[9bTKKP
9m!PLpHmbc4j&jq`j`k`HHhdrH98'M$0Q*35Z`@",D4rIASS2XR5jS`2"%dVd-H'
Zm*Dj,hFC5$'QGb8"S@TNpr+8iF6fYI&SQD6EfhVVYMX+AVU3!%,JBjZiQaG#mer
k"#AT9`@FU-R*!'djFCYG4&hAEpk4C,Tb!J+6ZTqT*(f1#-Uq2+M[YQrRIjYj"Eh
mqdQCX&r19&*UiNa)6i@$*!*B`P1294XaMM-2qVfEa0UUDh6(kk%Sq4Cq&C,@h-!
-@Ge*Ad'4@VFqiB)0"#*S!6+m#4S6fHA3$KekJB#'3h8fN9L$ZL*0@)H4&Yqm$`'
c8YZ$$dBbjX,C@FZe83M08i%bQBVGRTaQ$H-$2dR01h3RdUUN0Eiq@2AZZFLLK)D
Aqe#jHLh+cVkX!AF-,'Dc5V'lf"acpF500kNcB-QQ0Qa(%I%"G&'kc&d19!!4[-)
8Rf(hGE[d)Y,29K&HYmJj-Sd$[m4DRp6S0V+C@)G0,KjMpdTNeMd`qBC2+jke4KT
5+!&a++(83peL2RY"JS3D3%Ga+-ZFCpHR0DR$aS&E&29,4%L)SY0PfNI`a)%UrqR
Y[Hqlif9)A6l4Iq+8aDhP$f[Hb+$),3h4QEIdX0I123NJ#m6d,GT*h-pdGd"BASS
#m0``)VV*F*kVr6U1Jfe)IX&Z(`8eJPG`j@YrQfB6LM`[Z6,ZI(,"8H3E2[aMPec
(#5AJ(fp"l)eYap,k3"e45PA!l-r"[M#d4R4EpVU*j`NM@&`5Q["1r&eFmea9E83
HDl3KDNR+Z8aU@p,CdN'&Ik&G#4jTUlY"5[4T@BS0++D0DZr6F*0YA$00m93hr`T
QJ-&e1Jql6pQiKGE8PC*F[Jp2+PbX"F!#Bjl64N9EB%dq!UL,d`@EI09@ji'cU6-
Pp(SdcF@+qf0[P"ZLcB*2i(j$)J[L+riQc#ajLH-)#,Z2LfPD-IZPXcZTDI3$&h(
Y0)lFIGRQ3[YJaSDYC6ei%m&`PH6baL`bYa`(f-[''@U9GhbDM*jV3aq*RAk8qR5
l5XiRD%S!Uq5X&`h'+e2fC&BDi2)cEm48j($'&DS2e'@qZ2%D3-P-J*!!6IpP&US
3!'VlHRM,4HA9EST"Aa(r[`Y'"jpd"NpI3R9+GfjdqZklU&3CjN36$MN`eL*rF%8
&bhbA1*[l4QT5`f(&K"-LYTbqRe%lKq19cjDpKrPL1NE5fqNV'b2FPp0AK2X#K@[
hDQCP(i8m"6kj%V'J(6!4'aD-k3dEh",QqaEd8L63m,J8Nq3h)Q&mVAEcGDVrMdR
TA"Sa*D-"6'QL29eDcKK)+c6e9k#4-*55@a`c*BK1$(HE5HA%TaKJ6Jr,)DhrpX-
@p2FmmNSF[*B40T[Um8NcU`&l,*H6ilM3hkE43,IIi9b@CaeGfE(1Uq8@,hAD+2j
e(jh)bQk6fGSPrJUXAI*+62kjcpN[r)l2"EMNQH5C#cS9PQI,eBCc%"I8#3N3`Q4
fkG4hUccJALG@hEa&`$Z`Q1lC38T0[MmkhKF*BfJPeYQc9'cl-2(hEpK(pD0KaXd
fV%lPB1h%IUbLX!*Qr3%a*dLK"L6'(k*ES8TXDaI%k$9SY#0DUKYqjqpFA'qLShP
'Z*MrSCKFJ@C`0@i-Q$B0`Jh[Ba'KY'U*UDDb+)&)TrYRRlk"l'[)DH4[pKF&4,Y
A&AHf4@GU$%GP3L0-H,cdMC9K2rY-m)IVA1dYc@d-Kl["5#d2#E6G5-5@l)4!CR%
BATX[daRrNF5I%rRIlF&F*Qe`AA#iK04d6X"5[idDZCAhXa2c1Y0md$94+c+61()
6dTA#Z`(5PEY#XK(#Y4M`F5'`CQNPGYZIeXXj4A@1eP#j`L-dGa&&P5Em2(H@b!$
EL6QPZDi02QE+[$%`f'9B"1frRNC1ZH-0VCQaUDBIL)V)LU5#[4CMmXrNf-QqfYK
!3PA-CMA-TUl4E#af(9K`h@&9q"p'Y0iZ6*jl!q#!U46NXNmA"JJ#KZ[2T$d#rR-
(ShN4!15ABSS)5rG8-I1-)ULHeRLZ%eN*r!$#C&+5jZ3i!dc8fA&a@UBm0i""V[I
bE4DlDaQEBH*AS2VN3I#%A2fIhAJ%*"HY)!Td"dj)3D!)V9R-aU%6faDK%bcAX14
@b`d,QC!!%f1JLYU-AV"!LEK&,XTMNkh,i94*'4JrV,rNhBLbqk2q!)*mJf"D(Z5
pbXG)ABZ$j&N%IT!!8IIfrAV5q0''V8!Mj$,++#)F2jAB%Ya4J@c#fHP8)@#mEE6
EChVMEq5XKK+)6D"q`Tk'miJ'YNTVDbfXK0&'0"$G%CIG3G20k5`")hX(3'r8hV-
-hCa,BhcYPZ,pbAQ8L$&00H46mEG2Drl`+1QN!`prSr"%0j-qBT!!rhT*m9YmJNU
pDh@I@iNNYejmPrba1PPXa$jLJ8(9TlLRE2kYPP+'BU-APZ4XX(N+-D6)J&Y%J8D
JV!LV0'@lI*L+bE@(CTX#mF6CqXq6c9%%G&XpV@KhKLP3kBN)MRSccBNQ#F9""$`
DcEbEpI8AZd(E8a$1J`5V")X*X)ImfdKk0B9E52YBPfTArT*5Cjr'V-TE132`I88
@kVcQR%U3!!rV0rZ3!&+6T$M&%Kc26H*lT%DPeaUmRmpXqSpmHGBA2LAX9!4RM5&
U6ZIr*C-`D#KZ*5R`pbY2eq!U5-KRTEDC+"YC5R5$*&+6Z-M!Gm9'R6p3`mCU8lb
GGVjH"3CfHE)6pISCa"C9G#R`cFYjd8pBF"dr+HcY2JY0QDj[+U4PFLbQN@BV2l-
U!mjkm#8`-C2FjFJ30JCLhm*$09Xck3#f*T)%e2M8CjQBYJa49`Q*2@LP'-"BQcb
F&C-B)j[apab(+2cl-6RE-'l$GU1IUQBaHE$ZrZEBA[YdrASe0L42+akkUF&$pEm
V"QXT+p)ePj8)qYj)2m)Tc'$*he@YI%j@Y$Nc9ApG@AGXAa'C2E#RXQNTq@mlVfj
K2aS[ZFl0G!j'--02j!ZVNlLP2G*VlHpYUapMm,85E*2iNXfN#Q$rZISd4pCG*-#
CT3!(R3U,6S&*1@e3KpAqP3QIifM(4r4`ep56D3JrR2-&GaeP0Vdp8Vkr5AKjh!5
1`2GDMQa1%P604hT8iiY*(A*CST!!ld%,(L-)-&i@HXpJh0-eNZCbPZeV@hm$dSP
UGm0dD0FclHG9Lb1[rM'8ZVD@),1hP@Y6drC5SKZ8d"Sfaah3fjhZ`0h2h'T6*)I
IT+X41GY,bf(lJEQ`k*M%)IRZ@T,25(9C,G@e2E*6`k%jRPR#S%Y2KJ9VNEVLU'i
M2M6RG!*-`TAK*&HhB!jGadq5#P)"#GM6LJ&9Arp-RHS0-,1(385R*qh&%GM4eM@
AjqY2(8j"!6[,)kaJLprXNCheiBN6qVXdqYkJKVQ!S4(YAeGK"jY#Pf*CU'!8C&(
NK5jI[UL@jVk`JES*Z#!FjJ,TU&dX2FBCQZJTVbeHa"&jZkAX'R9Pc+!d)VNQV2U
k`@3(TUb02c"'6L69V&GiH-!0BjieAKmFe2SmZU"kUmbqE+P`5H)UJM2,l2cU2Kr
l9rC+!6iQ5H&`pVa(iJEEjcMca2'!Gr$6hSVD3a-&HN$aC3E"25a(@c%&Xa#*mC@
HZYKVR`UY#AN5iI11M*6a"PQ,R6p&m$bD)S`!Qp4+a#pjY&2-Y[ELl,@GIH)M2fK
ef5h*dQ`4$*3[(C56b2##+$J2bkb5!LU#C-&-U9)G9#Hab%ND[hNIT%`PV-64LB2
X+G*9MU02)qjUleG@0S9Y(Z8Xq8N12!6IS+1r,$"4-TkAqFD)mc@*D"kDadehQ6*
)HE!G#&9I"C*Z3&6If1qGAIBNTpF#PQI8YAdcNQeZ46qMkk9-pl@Qb@,i-5fMC"&
RdMZ%#XJ&r%FAY"E5RlL,MA1cFkUPJ&&-!*PDQ@)b2e4BVHNLMPB2*++Hlr1Sc8l
mE!krK'$Jrp36YbMN#PKH2lcmf-[riUdFEdI&YI5T2jPr1+Jp[ZLd+AAN(X,YamI
3-,h4YP%9q$SJM22D`bbqel)I1fP&@,UNMGY%5Z0a"4Y``F#mfFDEEfmh6k1p0e(
bFT)E$NfH!pr+DVidkG8i,(i[SB,iahAjr&aUk-6*I$,j4$i@cbX8AIGiTT,0pNN
d#BDiGC,)m9TGPqh,*L"61%d#pbidea#f!-VSQYR@"NYCL,+9+Dk0Mp9bJ[1A4-#
2P9hhe3jbfh8M@pVrj3p@((B&Gf+1AB'['F@dcCi[-X35MhiQfa-D`RKI&`$r@3@
T`L(dSLYPLXie#4FU0Kq*C0FA4Md!,8b1ekpH%)j$TYUSTP$Gh-A"Ef!r64KV'b+
HK9k(9TK2"bGPFDZ2mVP(I1aC3Uf3!%3%`83NNHSUpaGd065b%p92YrY89cLQh!&
#U5Dm&1%#I3'9LPPBkC!!5qa*%L,rk@Ra1hlHXb9aRLb1BMa3!)@2d'dek,&dq1'
qpRKS*XD`26'Ce%8!LK6G(4&Ji)2SkL8ppc9aNi[$PYMG#)0Z2`YFifh#V1CCfa#
Fd9c*i)Abpe'R%3kHUTc+&5d3!FD!pbG%R'$hUi3P[E)hm@%"@$h!ih0`FiIkB4F
Nb(E8mUpUF2PV"2P0e&MkmFNr+,Mhm4QH"TqIbI'E4J'LGiqYCSi"+@!K12UTTbA
KaAA'h6Uk@clE*@DA%eHBQ!$K4lS29hEAMf*$NNF2YH"Ma!)QE*KKFANr*+i)8"5
E!*cAqBqRl$h5d((S*%Zq5qMSMmXjl32QVaS`4p`fc,@IZ!INUPj!Mm9FY)qi&2p
-BR#"mbQl-LPUp)lD[*i,TA%3f61-JLNF&U6[Zr#'-A5+!25[qil1F"k2bKJ9S(@
+-dF0K%FR16J92448,Bp(kB3c46[m-P0(MaKFQe6RKE(bl43MPTk*0Ca@2r3+NCC
'lrpQbDEEBZrcEf46C)cUG61)D(4$Q+9MIPC3"8TGJ)R154,l82GFNQfr9S'di@8
$iDXQS5'F658,3q),*9E@l9KD%b@IfaC*Pc1XP'V"q['E$D[idU(h*8)YUDE&%cI
ikpaLC[S6cC1X3KKh-a#6U$BaMqZib`@X1@E1LY+6mEim9R55G,lDIM&$5h6P)@h
AahmD)38rh(Nf[BeapMSAbPc)p!+b6m$jhKX5`Ua5QdGkAPDRcV'(F!mL$PN2(qM
a,q8XR#me)[30G-kLp*r!6pma3%Q-)B6P@GAdNI)!cI*C)K*%j0(TF0Hl)l)&'@P
I3FC+q[YF%Y%J*f!i!!$412C3HQ)UXMBhVam&$IH,Eq`[&Z6a`Z[&j#hGCM$iR`a
NGc8#*FTVlj)1jK'j8PS&aPBL"(5KNLE3*%r5$Y)3%j+bl(H*jJjT%"1$VMpGk-"
"M'RKX@A2cPmlPe`+ecEhDY!a,UJTmTU`jRj$V-6JNUmdd(4MGM8leKQ4'`Q+DIS
Y6$356NiKVGlc8!*-XDR9'cal*eFDEBXVYlZ0A`5TbIGeU#fX9'3"#fcENe#6kJ0
ISEp(hF+$9qN%Am"-U)`M-jJkLM(P%Qb9"5)@12[L@3[`a[SpQ6dKLdEReK4+Ija
$m63PCL2[H4Na@El%*eVhTFhh))Q,B5(Y9k(rVh6jfFY%*N0&j*N(3dQjGbZ[FYh
)G%!J+LK'TUFhJ(S5dL"8Z4`r1L1dB4cdl3E3ZrE5EU4%A[Z%ceGqB)[Ge2UhKST
`m5K"dla8C9i3+)[K4#*+"+Y#jQQ9F&$TmK&ZiF8TG%[-(r1mkJk',R0a%18Y@LT
CQLY[4a`VA"&-Gp9h4DCT-A5,@@6&TrFHR(f,KA&Y)`M-,3eF114@CV'0'lm#('i
Up"*L)&3p(,K@!YEGV-8&b@Ch[pd"30aB(DJDE3,lGZL)m$4!Zbl++BT"ALlVDb0
j1Lc8*MifmBe8d0BMca$H5I#C#'`BdLDDIL*fB,*UV&R$&Q&c)K#`8)VJ%qT8@-%
bVI%,!!k3!2l)r2"jX*Yr$k'!K6VmaN!YQ%cMi)M`l!V89E#Y9'CLLVcj,GFfEeN
KNLAH!(!SqSlqU0)ZdJe$LpPjMH)2T*m%*ZGXpfU[!UrZAdCJ'FkV%DN!@UX$44G
L!@(A56+dih-qT2!cBCfllmZpR`VJHF!FE6+b0HTZ#dl(rUFr[*4p@@GX-S!SRB2
1[,Z$EU8KA`LSS3L#J'"1NRhGkYY@l,0V$PUVG(j*I&4#Zf2!LK-Fq4CekP2ECA"
[06-5mT'lGNQ1+VeM[)C-,DpcL2&L#@,hBbSZJh)cr9bT2N&q,@pkK!4,MAiYJdN
cJ-(hD$%6qM&+$9Lm!"Ep&hi5NY0-!@-4QS1V140bk3fN4"ZSDijdq5LJ@[RQ+-X
a(L003m+XG@-6HI3@Rpr+T-LKJM&3aJrGI4`d!I*#mp[jX3-,`3G!8TqiR(26DDC
pa*k2RGb*Z0TNi*Z@l&q)`-X@dM31BKGEk36C1dJKT*X0)M308N*X!!qR)BlHlaa
Jefe1-iCJB@kG33'+6P3M3+[HGj,UrGkScl`Jr&3(PjR-6"A2GM+$)R9$U2H')'E
&&SS'Dd$4m&m1TM%6ebj)"#j2mb,YmMkjh`JrHRdP#(C+TH25I8$jIZm%*MR,FL0
,l`%Q15bb3@DY8f`kQhDVUBhd$J[5"%lmM#GKAS!C*V&&$'U4!3jk1ec+KAS[#jJ
BL+hS[Z)ZZ"dX0N!#0TV4iApYlmkpVKdiLNQRU3Km(m,f4Z+('H6K'kV`)$6qpkA
EkrT@Bmc[1@kb$j[F(fjfbPG$8(rq82VU5ZUA35BrRB!iP%V1kZ!00SI43Q!PcK0
45aEJ6NZP+8Jc*d"NY)"[$6+m-d%*#Z%L2%R-8e+3!*KB)aL5B['Dp"TU0A#hkYk
f6-l1l'UP(X)CK%+ZSZUQ**`8lhp)AbrJKHQ[mqI3DCVd*TpAcafi9a"[5DP9'k2
#6RQEmZ!),e&UZLdhMiB8)+,,P#c!%[5C)lqSrXc,cmqUrb0mCi&H@1F$&pi3M$K
BF*)2Q,X'BZk2#"Mb!1SY@5$$ce`QGr9MZK0&P8[bYFL5I*3,@3[9@%VG'8$K-(e
9'hI,c*[-#6SPT(-%%dP5eRDYe0IqHh+MHkVj5V*[D*&4jJhTNAMPeHi@jUFUBk4
dD$G)bD%qLdXd'CXR@I5&4DZ#BM+3!*%kK*`,5bYC6UlEcdfVlDaLm14!1&[k(!j
CJU9eY6!hL4L5TbE-iNP)q)c3NrkiL3fhD'6*KZm,E'LNJ'X2`'GhE(#ZEKCNHJG
KP,eAQNY%)GQIh)EaM,h%QPQeh5#adMqV+hcHp8MVa0,-4blG$iZFMXcq2b5e(dF
)6DRl[GjFVEcKRY0#Bmlr9'!6Th[[2UABQ,,f-+5P%4J!'d#1Ad3rU66p$qd$*V-
$$',H$hp2Xe-G!"a3r*JDJ"cRNq8[LYbdlGa@'Af@@4FIN!!9M'4SLe$hJ*8Pc4,
2rN2r1l2q!ri`a+U!lfp1f`-KAq5D(*XrPJi886,rfDedp(iM31SJDT(2V'U"E3,
K&LC@3ID`hfm"0")j+*E)(bBFVf,&VmE-kiVTUS!rbHAA2"0CAL3BqKFC[bUb'B!
fApDZ"aSZ"HdrfTBlk4H[&JK&X*mika8kMiAZ(2[d$A8+N!"2q5JApq-2&+hmN86
N`+L2+ck%3b99qF#L'iaLMrc[&4cQ8U0Pi8(5'[JPGNq`+QN!PA5e9"V&G0R))ZY
[HP%*TS-QH$2ECQAY[YXPbDQE1EMDRAGQl5h)5r!L!,)lJHXdM!CK2ab8PRNr1AG
PiP0c%PmYqe+`M6G+fbPiH"b5h3PMe`$kj*!!T(SU4VI!lPVUkX%dTGk"8X-)dC[
ZMeS`b-Pp#E56RY1E6M66-#KLRaR3N!"IFlYFCM+-[NTk$Eb(H9a-kar45$@Yf4Q
h[8TJ4Q(F"c,4#)QZi"L#I'eV[RIh%RYm26Q[aHi4+*mbaD@K9p824Xaf%0eK4KF
cB(Fi%RKZ,-&6Cb'!-#4dGdPlidqdE'198cKKJA#DQXaN6205GYGCmVGGD[i[a(p
1bmhK2T`T`eIb9`+!q,'5(!"PRX$Ari+mN!"FJYSP+$[06e'6ppQk`1N`XdRPM3r
PbMLbQ'Bh4LpUi62VZ$N[BSGTUDbG&3KRZNd9h,6X[0M@Gj3j@U)#L%qZ1e2,p@J
)55GN4PG9*q1LqpYT!NlrZcM$Y8cPa&B0"cP"REY"1K`+RrBST`,-A+PNQ![SS+c
D89,dI$-VFGC2Sehf2JPkMCC"a6L959(*S4rm'MH8CB0FJ+V,!aJ!qYFfrq+RQiF
JKZAhUp'FL[UXI6TM-(FqTbX#F!0LZ(pjP&B#mm%&D4i#9cMFfH[[emH5qJmp$V*
'MrEQFf$ES,K'GQf1fbY1%kR1`3rYH%DXL0bV[Far9r#hQCP1Jl033D6r@[+BrmA
M#Y(eL`%LGL5,b)X,54a16R`-FZ$-b,-6XMe3qUXGir$bVUMdBLd4DJID8YcJpdk
N4K4c%IfVJ+VA*TFIGji+`(rR)S19GYZK3CdiP5NY0)FcIq52lA!GIhCA(I(9iUM
EF`T,$c2ar3M(0B[aK6D3!2KX6Kq%9I-H%l#cBIqj4Q+GMr-$REMkR&d5UM!J!$j
`!fq2lh9jP#f@EeVX`%'[K#6l*9dQ"'S@d&JI"KmPUj32S869UPX&r13h"ZVUlk'
-)3q81eblVT3`m'Acl9HNkC@,)H`ZlY*EV$c`fiIiqqY8'dP!Ip*V9%$#Zl1B$b,
[(-lS!mNb$D,D+HiEDM)(T9DPK"Hl98jD-UF)1jEVqaqreF5H$l$Dcqm[T)Ce*3H
iEDYGlBML8VY-2l5B%1Tp9#RNCl@N[XN@TX(R,(SeeJqjiq'KB+ef0RR5@GD-0rd
2A,)J$Q0Alb[PQPqJMG5AR!R9mpP'0cJM,JK-'HcJ3-N+ZMlhN!!cIdBHHfAk+M8
89Sf+bAEH"@!0TH%b!6rL$af4J02&)q1FCbAF+`"JM1bZhFm+l)UPcH`*R6K"ajI
ENd$Bj$3GLU$I@+SRV*!!lik&r6#C$FVl9M8`&!rL!DpR*GrI",H`*)"1b&T&fYq
S1LS2j-"J2NIIXlC-#RT-6hLdT,h0!KED[0LfiG62Z`9EcTJD&a-#*+TC-[h9@#K
+X8`dUTC$-clT-M!K!lp@$TNrP"TU3LEU%@1MlN8AKqb,HR%E0VpC)b(C"#,033T
-SfS3,bFR*92F)G6XmL1m!mZ1k4RDB3bFYihU!+Xd`L0JZlRRBUhXYF&mIqTqVRp
HLX(X62%Ra#c8jr@-LMU2"CKCUI,CSCp2kFlqH,$pGi#*HiG$Ze+A#@B0p0aNC3K
C`[BFX5"E(+D5aETFfKP45$(P#iG`PQ$S'Kim-("9MNU5$erX,L4XF&+2C%a&pXK
5b6r[3)`#QZIl$N,c5mU"Qq9hML[qMAGR%XLFiQ@kh!CR[Im)J'+XM(+U!A`0rfI
*rdR"M*!!iH$9Zf&KHQKl!q@T-3M16fhpa(FmJ+Zfjr%`aZT,qPd2!VfqN!")P&M
Rk(JErXJ60'X"qq4Bbip8lF)F`YY1GQQS@Hfe4G,01C%,'c5SH['i*Macm[FU&`F
mM&(*Irl3ESXAqpP#5d$"UlePp3MXL5Y%Q(qKI'VUC+DBhj)2)`4CZ"4+[KeNqL*
(4aYJ8#GNY9UbSd$4VC[H'eU3!*,-N6q"S!pfUemYRXfQEKTl#FSNLKN'2$P+),&
kHYblY5+bLfHI!RfRicN4Rj1C5V$(%JhA-6G[DemMZ(EpRc,p'+rUY2CCMDM8RkT
D&2iU#iJ!-EefD#$56D&r1qR$VMZ@ifAQScBNhG1cm9F9Z+m'h*idijSj1Cf"6,R
C45$4QkQ(-99#bGqj&'`F55XKKf*04PTe9P6faF0ZAMfeLK2N&BK&9Lq5$XV1bGc
fm%IP5V1Y,r3E"f0I*3Vij'YC21QFIaQ6YPBU0QLDFDDL8`fJPC+p0`SAAeVDN!#
4,a%PN@QK6bBH`Qi28f3Se939r64Fr[0+f5X+eBUR`lFG9Z[MI[A3e$`KREj8H8D
mR6eir93cc!@8CTiAfbhNf-@P'DSB9JibV[,G696d@&h1N!!$q8Jj8*q-!N`P+S*
5A(a0&&CK$"d0RGr`6a6b#SQeb4dHNNpcDClp10dKmZM5j#ZP8K"![dCB#e1[CXY
DJkad`NRY28)pB-ZR'r["9FqSjDL#NUD5(1!A'"00DibC)#E)Bm5CL'B[*f$lXk*
T'1XQYbG-L,BJklVfYib8q[c,GCYi%k&@T9Pq&#lYRr,S9YSV2@h*m!S6MmdJp9S
#-k6%!@Ibi4IZ,b[*L'2G6E4&*24cBiQld',&c3Ui&q&Yjq!rG%3BV$`M+(e2cIV
!0Z-)Q(je-hjE"G3A&#CIlml("qK%(mQ#@`YIJk9A"4+A(5S8iNc5,hpd5RKErUe
MrP3cS#)Kf2jp),&ZZBKX44!k`M5`(ALI,q#I@,XXEB'qR1+IH3bf-qNV$5l8iq)
#b`3i-KJ4Q0)DlTE$%00,CkQXGY5Yp@RZbi))Zl3b@[6,ZA@[%i0mhp[pGU9%&(D
1dEQla@&iFH)UJ[&5ISR*S#%"kRS!c+rlNbdiS#plI*am0-U5r4q5C#3'(-@G@2d
P1@0Kl9S1UCc`Sd6@RUI%6jJ@&2EZA`$pU#0fRbV!l1)JbLR5TP0")f96B@!Y[@k
$Z&j`''lqq@kI91%KmVda%$)h+A)34AI8hG!VBrShM!K5(EQiUe)U0(fR--c9%j-
E*R$+qXehjrp*jLHd#pP@T3ATHhkPBr*I$GaKKSp4p1!9bDYc@P2[DL1S4Z!KV#G
#jJV,da%,fL(L[iIP1ZPBI!p6'm1e+RKTbMVfk#9+3,8(%lrSeG[A@%REh1V&jL+
23[k$h!l2A01Qi,hI)68S*0Z2@I)k"l@1SE(Fa#"Y$X'V"BiNBBbrQNd%3jqrk#&
aEr$,5H89'[88%$Br)`j!jRjdG8+5m"35icSqIm9X`*cj5JH020P48ImNf55XrFe
RSK`Tm!@"KG%bVSmD,)FNMaG`I[i$Nr[rT8%V-Q!HpkPLRc*F-RPdf324UTXfip3
cVHiQ88QQr5)FITp5Q`8I0*)qeG$h,VIb3Zei*8!6-08*4Y+LL#SA[!'Z6+2([,A
+)M6SjCkcDQKJBa$aZ+q%bHfm+a4$Z4hhjSFbY95+"6%MFjRq5"U9m3qClPfAjTd
V[cA0Hh8$Lk"HiaYbeZcDAEXeYUAZFJdJl`m%B65m'Nd5l'q*'Qh*%6K5XB2XVGS
BN!"&N9dkla`5X'H*0U2!NZfDRdSNDIDRVYQ'8baqUIkRBZ8VqC&&6*fmTJJ%4ID
)d"jL$)-f#UYITIE`SmDM!C*9Z+eIYKr(SQ+GImR-mI6lSf-!G$i2jDF*(0LZrlH
q8m16bQ2EbI"aJ3ZiZqU@eUQf3hUH60'5ErK$kB3(eES#,39(8R6fEk161QD80(p
p3"R`!rXbX&J%*bfGMZkFRRm"k*KMhk`EA)BLQHD!R&@Y!APEjXNkPGea5ZhF2Ga
X$Dd&ERNI+H%rr,Zhm'h)+C)9[*DhqB&aj%LZr!A,B*V"fYCfTRS6jEmUi@3m*f%
jiAT,VGX$GJ5f,+`fV4N5Ajki!HQ[KmRXLF+'hAb4H19derkVXb#(hk8#eS)jjKb
4D[fG1U*,DE(R6Imlp0-IDC4V5%"EmD`4QG$jpHR'-3kE&"JG-r-bG$+c4qjL-jJ
8'RF-Q9#SrP4ZPr61dY6I+%mRR%&)6pBKdT&QHGHPJF,8HVL!&'$d1HH5br02c(b
q5SV93`BKmHE'RX$-%La8E)HriQbQ3pT$5i35"TXS*KJZlM`)*YbL-UMf2p5bi"i
NJp+`lq8ILVY6'jV)2QKBF%fH-dIBR`(c8d8N(-9kciX,(U+1'!HZJm)U5qI-V[+
caKhGKN@h8-[`NJ%cA-+bR-CcNk[SReQQ#'k3!0#fQKd""EHei+L,PNeSbZ[d@Nf
-NKfFMq6NEMb0[i@889D`+T`"Q%9)DDT"-d2M@L0[fYrdY)9`8PPKGPSiS)-m!!)
8Vd8AYk+f8@F%F3[9V+EQ#S3qhFYUGjXLXF8f!*XNA'0CF1P,9l3*fX@dGV'c98l
,fEJp#bPVbA1LEb6Y`cQ14j5BUP'#DfF8NFM1JQpT&j!!U6HNNPJd5%bIQG!IpU&
!U`3Q3d+ifkA)*6$8%d1@pVR80)Lmcb9A%q&iH@'!Zl1)B@d!1hZ3!(Gc"m#XVkI
%V`l8KQ8hqrY@N9-p)$LVC8[Y+6JrZ`r`)kF9jE(hRbCHU+#i&,YSjm-%6N4GJ)[
XTF9LB-2KN!!5BRkCY-Z9i-BSH"YJ4&&ApZYRYa*1QlrAS2SDGYefD)050J,ZEZ`
F14,%paeM3EedH38-4NQBkFB'EP+8k1J'i2i!-EBSfYc-hJ2aGkad'pqekKL2GT*
qL%4[60k%jEMkI0,kDIX9-j[IlTX)rM(hZljUDB&R#D3ESTaF"5Q)pikd")ZCJHm
&fZK'#E%2!5@K1INc6V%J!$A8M61IGela1Rd`kPF#DLrN`EGjlHP88P'C0ir1R+(
aqdR)&9KhJmdb&UC+"[9r*[)6@QD$GLbN,aNH""0f*FZjbddr0Jl-(e,`dVBJZ#4
NE,LR-F8`6rF!1!kR'8!"hPNLP)TeG3&6I)[q%fB'*#!Ji!J&f95qGrDHccB(,Y&
m%c)YppM4X-SXVl6lCeY4kYN6Z%#Uj2Gd[MU*V@2E%ISD%$9IY0''5heV),8B66a
D&mRYHHf4'&!e'+IMF"AQ0SZGU(EM!AZe&[j6TidG`&!Ikm$5`1%m[jBi"bIk6h,
V44bh50C,KEQ-FEVZQFXF)qB1XPX3jU#m$D(MScjGC"VaFQT+Bh!IKNfZ(34q[Kp
q+`rEiebh%4U1dcZR1j%36,3Y'QUeUHPU5k9kM"&3i`$hfeBX(c)HBN[h--@&X[)
UMB`21i(&m$4b,@,dHJM6QB&Ukdik0RUT#GK*h[iKM4hH1hlj'5,VQ-3XkhREJG[
655YFKB5akLIDi+I,,5%N!)DDS+mml+'ieGXF,CDFVC6f+Xm!XX)kqc4&UU!6IaA
KS4%&&mLCG2pj$9%Ur4-M6"AJl``+BCkX5[Jh5(L1`2-k,VijZ1aDKNKEEeQkG,G
K#j@3!)@Gjm'V9QRl%jV['a`p2AbGLCa44P)TTYaYfl1HUQ`BCc8DfVJcId9E$V%
YQC9TpE9`UKTTQ6ae)K-MAp'R[@B9B3*HerR[&&qP,1mGMdT"A&)DCCYe9G$6Q1h
afajBQXS@@U9%(CjM!HaU-31,($+p")B-0k(pf'*2'Dik'[VLSXfPD)VU0!aeC*E
2-DN866j-@B)69S4Y"!kMm+hRYhDLaZ8[qj@b941KEeU&hL&DUpS&lB%Q"4Q)hH'
aY$-60aGQ#If`fFXT(LA[0*hDB*EBG30I&1DTUVAPHqF#D(EFGi[JEMM8RTXMB'l
)BPQqD%IF8NM`8MfQQ1%3C3#T@(#@IM'IcmBa9CfkGkH*bhUXqrd`PNZkF%-*hkD
K%KGN,,*rk)C",XP")UkT216!KA*DcZb[#8m!5hfHPhjC5`am0N[IaLPL)38HRE0
!qY5aIc[GR*arCF4`B)3-i04YR16![R3TfRb+c)#F!E9!(3PKD)kJcFSdrK(0aH"
h$eD-VG1U,PrLBR00"#ZEd0K"I,")6J-f3$LU4+JmYBPQp-&#fmdqjl58Krmj()p
L#E)6eC,VPM,j'd3$'qiQHkeAGJSNB#PHLTId5R)@N!#mXe'KSR)V4SiZDBB[6b5
V6-93YEa[l@U62XepX8i6E+)GE,EQJe5L48KH#T[b%)[q+K9$T[BY5X$8!-ED@0j
bSi4i!a5BSEJBhV0m'6Tp#A%kLah&CSpjQrcr$S9UH'FPGGaU#SS5[#qDP#""8(S
d8XbBU5D*66cS8fmpUKR1Y3%Pkr0`$i3D$a+qSJeJYZkj3!eYf!c#c!4*#ZZALiR
Pa6d@434q1(G!B0%4ld5k*289K-C2f"k,'&0m8qcCBXLGC9ll-cICM,HJElIl*b-
("c-P2k[5CCVh,M)0+4`Ad2"NEe9KbIlbfD!bjfE34j,cLiF4CB(eLUD+-J1J35p
%`JU1(`9@hi11bmYpr-@mce#TSlrZ#b1PM'9T'ZS))!$GQeaQ-*YU-FTPcL+-`'B
2AY9)CRZ+J)D,mD#SGKk$-!dJQ4hVIZJL44'mT8FQkHfq@G8TQ*iK*&h,KEYVpA,
2aJ@QS(Y-4SZdf3rlMTMJGX0f[i4e-fYA'FApXIiQ1&%%4Lkk5riR*,ZjQVbF3`Y
Y,,,JX1KE)GM5ZNV-53VeCk6$"G,Kl"IDE`)(6XSS3c$9-0K6XbN,DSjm&Fb%6%#
Ip-K'G68GZr'-(4G335m"-`F&)PCc-kp&FkFE3`(@prBACAr"HJma,SdjFL`mZ$E
RJqD#PFN)`1b,a83JdTD*jZaG$N%F(!GB%YM6+Ti)6*P#fN`BXYZE@62dGd!PA-r
Ge`A3$`K3DR2QM#rfL%5[Q8'r$pfm*8'82%QiJiJXVHQFcpjD1r5SHQc*CXEKC32
pRp-F2a#4qPHhrN@dB9CZY"@!F*HaXX0@,*'f1BM#hh55%LdS&HJNS!V%#jZU'#4
8brX#h"++M(hUMf-FVmcNNPaC4)R&,VHXjcb$+4`&P!#$e8QGICSXk9YjZr`,aKV
6!MpUL$5$F*@H8j9)YaT8"EQP6Hr44Lc`a[kqj*!!`Ba*kQX`N3IJ&JqI*[NDc59
kMLFQfVM'B+bH2chD%qM2@SANm8fB-9LL2)ldDI8MTNj!E"Y)mrq@q2LLK)D!JhM
ekD0R9#AFH@B'[4U(MMX"$IGIRKUEmFYU3F)mi`iRL-meBKp)mY543S8FBei*!90
N%D6!4JUE`#XQ[@,@JpMKPLQkPFk#KJ&%C[(G5KGU-m6r0dipl#bU!BklNb0+FEA
Hk*+lcFdLLAN1mNIVk6UlUYp#B(6B)8Q94dP3VA$a$kGMGaBYZiQ(Epp08cf!4hJ
$FJSqaU!0)23Kf!CFS,5N&U#PUP`eL96Tad*eI8kp(qqLEaLh2(8lmqLAd49j%IY
$$3+19jj+T1*Up*k&M'4SaKATjN9F#%qQ4Hiq%pm(S,*[qm8`ZNTf$`J$Zh@YUr'
L6iX,,5,PpD@)P$Aa[CiD,[hiUhbhpp#Ge85BkN9ThmPdVR*Y0b,PjRJM1#k4*+I
")TQqAS(bNmKrU,"UdqT+(f&)J36$dR4`89da,ZeL+mUcmBc2VdK3MhJpraj5iKm
F*ceEl6Z*Ach3M"ECfl1%5kZC3SfVX(JpPE+&-#6a+1a(@r2SVpL0k[RpKBI,QA6
Sl[*1V)A(E06h3B`88B1JeU+#@6YB%3j254A-$Y`cc"jZ3D`'ID,`h$DTU'3C`LY
'`E*"'V'RlEQZpFhS3r%-2iC#3KkiiRTJbThf&p4QVJ6"`PM[*VSJNRJ!5#))&cC
TJ@BI")mJ(C((CE6+ejRCChK3&)M&&m$jBKCENQ)m,4$TZ*i80aS8X-I(,AI$&i"
4[Ii+Pi5UMN-QJV9Zd)QH-U[JkE%A@+Z@dH(E)(i$F,8k##aBXGK"Yf0i,q%##2E
29"DPcZ1$*&&M6bLfeiI&Yc9N(GiGMY%F"iSGmFHejQMNEG5jE1$LTp!@%8H6#l[
YZ`[a1,2fQ9dCJ@A*h@8`N@pT8Ahp31QlUVp&J2TBdXi[LIT8fYAH-E!3MikI&R1
pETr49jSAf#rf3pN4MdNfXN*"b*0rPh`6NFF$rY0plU$S2F#2q'q-,pF)`iKY(k5
P5,GP5jdak(eB!eBbX4e1X6(8++jI5!1,VbG%!XhZRa91cJ[Z5Q0T#K0Gp6$M6)@
lHR2'V,&%CP$CTB+T"X#E%r&,GQQaV5H++`3PKJbYXi+T636NJfVLZ06a,B(8KIe
jL*kL1VpRC9p)0`",KR`Qk)4M[#%D)!V(kR#$3cq-UrT0q%Npb0a!b+N'f&23@![
C'PVY0"K0ZFdc)rp#jmM)QbN&PQ!P0aiUVd@A"!ZDV%%%GUa4FRf(pR-H&dd1jfk
TEL6qm*0pe14PY+V,LY4dS9LK6bLl1l8EJh[&`DGNmkMMVadTqkR&b3SR9F-0a(d
re$&CEI%`2NHYM,pUU#X@))(2Be0""RHU`l2Bm-r@2"Y1*!F2i"R!-0X-Zc88IB[
%D#cd@KG%%PEjb8)3[Nea$`Y*rjK2I(GEp`a8dhRc5`F,&$&MMpD98)Ea4N0aS0-
ZM@K-p`(R!*K+0e$SEJP!2reUB5`-hB#[Vpi!F2j4SEIDLPIXXeZ4a(dK&ZT,icS
T%"e@6MqYYP4#-Y5T[pN'T,bZmb)b&%+-j,H%!E!pRYZI4L#F2IC-TFF@j%GidF!
e-`10NRe$33&8H4-G,kZ[,[*dDYBH8QUP)K8JAKHU!alq9%djFb0k4+3CSfAU)*0
la+cXC@h4EY5BUJld,RUXEB)j+j`S8j!!V4cj(dhNF-!&Hi9MhKE1G2Z+qN-8*TD
`XE2fL"X!*rHFiCG8JNP3c)Zi+IAi3*!!M$kqel0'UGGdkI"MUYVMQLRh4H,92(j
PpBirYQK26lre#mX*[,6p1e8fdZmXe8ml86Lib9+FJNl3Y#`65,5'm+%(2AM'UEY
IJ6hrCUEPF*c6*Dfl+D5Nc8VBlZPpSH$!f6NZd[rc#,XPa1*A[M'NXVDPaQiDAFj
KDI@Tl2++TrrC)Dbb@c$4#XHfXQ*%-Ie+Qb6+0q)1Bq@IYa4*T`SmCdpR-IC'U-r
Fl8UmM9NLl`SfJRK3)jXfDA,Zf"1hP+N@IUY5H(3jfZRV3LY4Fj'kb[2TCL-Uh1P
lT`fZNT'@D0b8ll4V4(Q#e681'f6ZJPd,5p`!-d9eaeU)e@fT,A'@jmbadKikP6H
0Be"Iqe0%#5Ya8lrccX"iAcpA*3Apfd*JCjb0j%V"(9D8CEaH4f$"H6UFh*2"l6p
1-)f3!0,KL-K!F)%Rb0!qb,$+Q"LJ,TEGa'lQl*UJ3aIUef@Q,f5mHGacV#)Q)E,
A&C`)BHA!KaVjQR`kS1%pF6NiDr-K8S+K4P5`K(qNTN5Fhe*BSJ,E%5H!H%-Yhqq
6F"VC5(4`rV*'UjKam&-M&#$Rjqr-3#QcE-jC2&#1PBReDjbGAb'Mf*5bZ-FTMH0
`-B+fb6TEI"U5fc'54M46S@)rUhcka"9*RadYhKqjN!$pR5V&$`8`hS&l6rTclkb
hrip6Ede!&Brq+-0)SQPF"C0Fe4ZV6ICea&G!aRk)blJ`0-(*AQ#IT6@$85rbfr$
C6hNT0jAU+Rimh!rKi$PRRMHQeMI&YrXY3h!-,NFV+`RZ*[AJDLarD88Vf--Pp6`
mXCSLTM3#(ZRjriD6SjZ#dR6)rAVP-4C0T-KB6R$TIj'p!+'6iMAC#MRpU6[ZMh6
KkHN*AG-j39rM)crG(lBh!S6*MRqZTj!!mhBUpqZj4(Zp)989R#hGV8$Pe*YZrZ*
QkH&RXRaRlJLH#kjV,1YXm#LAh2Y-CjQN+H`hZAd-&iaX9i8cr2YSKl`#EYU%'+9
UMB[9h[bI!Br$!+8hNT9fY("6"kmrZ2,(JPbE*#-(%Z"D0BE`XZF"-)dqlJ8C(3j
"r'1[ZchX2l#d'0R2Y)ifP6TcAVR8N@1"%3AA8Q5)alUZPQB!'@#cN!!S0DSUN!$
UX$@k"J4@[4G50B1*FpHl&m`lhd4AH"-JGeUkMlKE(1Drp!I!pCErQiBQ-K`-Mh[
*YGrZNHT4QmpRF#VFm(l04QZV86V(rQQH2,GDD#&$@J'Sac6bPX0`GG15dEFFbr'
V!Q[iq1J$[aX8jM+r609rXfVl6V5Z$4lcd%'QeS[+P[B*ILG-[Fj+#YeU%fGG0%N
CR)*Y*)KJ[)-2,SZ'H`UiBjRCV59q*5"%KeC&qFYpCiPBD"%C,q+QLb4Ap0R,6m*
r25E(33ej%[)e*135@Vk@I3mm6M6#(G!&dKR0*e)dhq+CIT0UV)KVf)TjKN(KAp,
XX"DKYVH5NFIcdfj5LTQd$Ib1+U2Y3583'$$$iPVd+2%lV[+GeKl41RU%qHkaP-h
Qb9(N01HeaZS'&C0q9EQQ3(FQiQ-Ja539b[-#V[Yeq9mGSpplRcLlmXYG8I5Z,aI
VdQB10VaA[U,Ih,(*3FV6b9RpM&Z%8U+Alkf5-qCeXN`NND98r4Ehq)3HG42$!`p
54BQ"aYGXSX)$,TNaGQC6IQHbL%rN'%+DjD0dr-2c60BhbKr$5X6F1r#'Z@FK"pY
$k!$B2fhrZDB4B@L@Y0UGX2!BhcEl8A8N2eErf+CYBEQ@%GTSX,3BR6E`8GmNqeC
ef$pYre#Q%Fh2!q6-M(9N@RqeMbr@2$IBcH&YpU*e5ZAr*c'6pED%I!Nf(4mQRPa
jPG%R96e9*@G0I[hD1&*rd04Gjd`RV['2K[cX[15jF8P&P-,XB!RDA[H0LV(AKV'
[`0lH(+K94QMleh@CSD@%pGeq1-N9c5h`@kFr`!3CI,T1[[emJHVGM*h&e+X8EH&
LA1hrP*%'M([+lDLFdE9EGa6P'M6eK)qaAN6X*S1)M2d-f2XLpkUU,C@1Aji6l[R
HC!T0%KS@!@*CU'-Jj1GK"1A,9dLTd!rA,5d-pRa+NDm0#&ZL#JI&HU0q@@*D#E#
JCGA$T1!i@aF4'44SGY%e+6rb+mkaeae9&[J!m5p`a-"I`'!RR`(erk65U&`d'(E
4-PU5102S6al,ke[pq'a"PQZaKXf4K[iNPd*aKSQ&1"r5RYC%e)rY4!3!$YpN5a`
SdN(,fY*I[JS2B'cZUq'Ub!GCe[CKfKKS3lB6S3D[jFmfN!"HSic!TD)#lRfR%lL
512,,q"ZDKcSjJ%)ir5qI%GcJ&T%lX9R*eS$'[[Q8c#Haaa[C&)aeA0J`ikB0Y[A
hM'6[daG,XB$SJMfalc%+2[ef'6a(#L6l+4mNJk*Zr"Dq!9++4@bQ)fl$!YY$HL`
BS[34-Z0-ib'%1CHd(ai*Ck2YMJqQMDU&%ja8r`h*mHIXNKihCb03'83lBrPb2#q
L@a2f)C8$YqhFRr!q,jY6)Hf"-&3&C8b3!,VJDGBi#hh&9X)Df@h39lejC`HI'*)
#,BReP,09h8N@Jlcd01DF,)%612#ca553!0cI"ecd(qH6Pp(JIZ(U)e2*1hrC5&R
e,m&bEFKDTK0HM3piQVR!-BmNJV+L43'lA4qV"DrP$8@I8B&3YSi[apk+'`8(%95
[1lC3Vlq0G1M'5UMHIE(Q16f8q(eiqm-22hfSmH'@deJM4,[+SF*p-fdrc%8UiC-
62Nphq`()M!R"M2T*0XSIUX3)MCMY+[U3!#ECh*f&j!A$bmi50YdE)SklRql)$Y,
4'"DXrcIa0QKaZM(cPTfMHFq&0"",T5rYZXX'@9LYB@"-5BK-(rri,E4BeB!b2I8
C$Y9eEe-ljPE8r$kRD-59Gi5EaE54*N!(&Em6!%(KYMZ!K9bF*GrDXk`H2h(fBNJ
2JSYcCk(NR@)58+MUSrYqP)0j,@&A%h@BJX2M&jkE2bjedmA(Gl8jb**[J&VTe&q
6V%`m5Ef9f+ThQQBQ!cc1!Zrh5Ze29H2e8!ck#cZ+3@@h4h(9jZYd#``Z&PKIQP!
5SNfT`YmY&`Pm'6bh"Z[JUpAiGI,!KM0[dT&YE&DEaE2Md$J3QF"QC%%)@Nc'TQ,
419J')bm5!i'f5V2`C!G1'(mbUA@&,MElLdTJ#[5"HkRIq%e@rS[BCFUNAaR)+DD
8Qc`Y,Eh)&lPMMaD$G@L-1bGX5L`FHQ-dTNP!(jm-)LLAd2YZ*d[QA9#b-HDl9KQ
,i"%'m9Um3j38UAj!YVC"@BfT[UXHc#Mj@i8e[qIrRFaiRkrPCkEL'+HKlJidI3b
q`l6ML)aQ*3YBjfq#TdfTfH1SBF%j%Fb$pV[*%4Y+rd2240[&L-RA,YH5*!P!30C
fSMCpC4c6Lr0bI&kcNb&ViEVG$GR3)lKLf)cc"e6Z`Ta8j(RND$)kI0Bi-q)"Ph+
c(d&,iID!E4`H!5MBfff42,R(`mpA6MEA'PrF!c0&mVj!#R2CB+lEASH"5m18SVK
ZfcTUULCCp8+(LeJm*ElripZd+dp35&G(-)V`p86`SPAT6Zr#UYqB,$Y'R8'M+UY
)ZCI+,[h!HjT9BSfTkL%2RFj3J*Zdke#JeR5aT)T&6NR'Lc64C*bQ$Ur#A19RhaN
L5G9jEX!HmP693`Kc+ap,'!)9Z9Ri5'Vp6#"4(BNNAF,XRBC9iC@i6I*XCed,$(+
Zl!&Kq&1'6rdj!U6C$SmVhDUpAD@5!8e0apZBMXR8r8a'eELc1-'S8'ep+rc6pmQ
9UQT9,1e#h@5'kKFl*P1[R(DbR@3G8)bMUhXD"m5NH3!mB'U#Vk%GT-irIARMd"@
)p,#(KJfHNai*cPI)CmP`bM0HFhKc#K!k9`2T*(QRdI4PU4$k34%R-MR8)Pr)P#`
31Xl"+eSLL-XmVf-4NRMXf[N3-5#RkqdJVJ2Ad53AV0e85bajAN-m6+L+rNqREeG
AH*e*8GiX')!$((9mmDhH,TXH(jqq0+$9QTP[*p3(J`L3!&bj@"c`rI`&rr8pa&D
#aTbB4SPE`)`Heqabb4'`53+5DmjMcIV@m3T0dA$4(*9`SYTQNfqZk80QfDY%id3
N`0'dJ#1BE[3BDBbq#K3PVY$TH#$CCBM(CI,jEUHbdR'#A"!dV1I%[+hl)DqfIkF
AFMM4kXDePEC+Lbq!Z6VI4b6F"C[FX38(&5KCDdM2U*MTT9jL@e59kPhp94ACI!T
[&*Y[LA&Gl6lpLp*G54c,AHha"LbBpRBUX#%iF1RU"%4kLCpE0a+c21-MJ'35#YG
JD!5Hh2fadfAQmV1G1FEG#eT9G&aMcQ`aE3lpHXEibUVa,m-)F&2@"+CKN!!*VT'
2qbi"5rm*&e())FAGhFHVAl3)KTS8C4Y2ZK-+i*!!CPf'TPm*lF(M)I&iD$1[Bm(
6S3cN+-c-GZk'j5bi$Y28FC0T3Lh6&)(mj9D5a&2[8[Tc"(&(h%U1mi`88MHjHDd
Yi'qX[eL#Ri(TJ9Cj[J`-F"H9ICbCUeabFG0#ENm+D'*+hS((9lH(,R"[&cDV4SZ
4N!$Nhma6*4RP%Ahjp-Ul09Yr5E$i&2k,%T!!j@i`Bp'BC!#CiSeKaDr4(BBRH"c
-`eD3!"1jA,+C0de)-(GcNeEh*'`AbCNpQ('9HKGb06Kj,((6Bik*q1ECTk`9kPA
e5a(,NUD5F0EAB"epU##UT+6E'P8`"8Z,dRS2Y1k8j8lCHVHck!fG4%&bGfV4rNL
FNT+&0K@[HKLEaq4TGRjBD((rR)S@RX)3$cUjrbamlDfIAI+GUAiXS4A9,feTUe'
MKQAKcY$Q*)$pqYbaAR&Mc94ib&&lHY(40UE,5ceB16$'d8'Ck86)3R1Q9MRp-X@
S4$VM2M$P*5P6C!F(qlkK5B0X9MNFcUfi9P&C3+BP#pP1SKcFQkk5Xq1"jFfY+3@
CUL+X$K2p&2,-aMXN&9-"D-aI9pc,PR%$aL36ZU2kkF9bp*MK0kFF+`TpE[VT5cl
VkiKDrMqq0)&J4Yc[8q$a99R**H1V6Gr[YX5b-ND8jF(KeVT0KPkhAqR1iDMc1[Z
6$#4-klR9LY2ikhrj&hf%9aHVXZ1l(Da2+C`E+2D-NQ`5Aa'8(3"lUKCIk)(+AH#
A)L@c8`GD+S"%1@@PJb2,'iAATBZ5eC%j+%XjerKkV91B%2C'KM!6F@UjZ2m,m4!
F3%5P%)A"@3ce%8NKl83F[L""#EE[AMH,-H&!e"8EPq*+IhNRMEq'PZYUbd99LJF
lXUd(PAl5C6pD'p![CI-dI8XJ4e$AiLj[JE'B!)3Y"CA@MPUEh-G,dHB#jVG2%YG
URVe+&84P,m@frQlM@,pq*,S)4Q6,,i1Ud#FY&c%*[h&)+h)TD9IH8)ICfV&ke3U
pcZXh"$XL-QIB&ij`3aQRrlG,FYPH#@T&Tqi+5KTL2&1pp(V-"maGCRMp#rN8Z#6
dd8$($m6aGAK4,c%iVF+eF,6#4ZXee"9[9e2X,9RG(Y"+BiMceA3N'D#G5&`pI3r
PFAP1Z"&&YdUA3J@+m%F,bmffDeFl+1ambRJ"R1J*4dEd4c$jZHK[LZbLRp&#+Q!
HPlIZ5L9HAH3qUhMC%-1Kjb,jNdbD+%$plZB(3%b$B1l"@[LPpfi[0HkV5EYe`k9
)eLCGF[TPY[8l!0NiN!"QbeZ(k9HMkH3PL3Pp9MeK,@6Q93U@4h1a5'@fAP'#ZIX
&qk'8-helP[P&%FQB6e,Lk8N`R@BMrGCXqS[$fUj89UJm!+Se(9*c$SSK`cXp&6L
ZKT&"XTfYc!@d,9cl2dV5-*0hlp-"eTL*[bZq*EA&'2J!4@q["@#4DM%b(a(l+D[
fR*,ClQ8RJZ',!8*PI#JB'6eNq'V0Ah[&%I8Vh-M,KN63rf%[9UEm[Cp5%3JJq8j
aCLa"i4FYjp5ZD,*fA)[Br#&-,e-D9bl&'-(@'IR46D6YDcpDMrBBTf),-9El)hh
%E-hS&Z8aJLIDm"&rQXJIH"9GVJ*FP5klE9V1*8"D2qd*CTPdYP1C%F8+bBfpD#S
2aU,DUb[qM@dHZ*)qN9SV4ce&V,qd%aj*DS%bN`NM*EC,K,,9BS$J$N[4eK@6qVp
S35S#3-PmefpA35+dN!!DTkF9PQMlTHidbm`6@JN`qlaN`4eM#$*'GD%dKPqkaJR
h-%i88E"`qB+cimMY9b6SKA"YRTc93'2PG(IbF`9d(02JDGM0pYVY-X&i"8M6J!L
!T9DPe)6EmhhjPl&IAip"@M!b$h#deQ10M4c5`Q1LpIjlRJQqcP5'&,+%HIE5#XR
1-NhcdqQDeaPeX*cq%6b+V'r)5!#LpqCP02j&+$bFX42j!HQSNV#q,&i*@8JC)VB
E2Skk)51cj)#G%`EpHU65f*UrKJhS5G@p5'HA6`#p+4QeJl$2VqL`Qe%TT64)CqI
Zde#BFlZ!H2R")(GQ1!BI%j`30ZqA6YR6qqhP"p)3PQJcEB+'M*Hrkd%*LGY05ST
Q"YRh4l@arcXZk8MJdaq[d+IE4#V&[Abi6RraZBN4k0i"ED8&mNfDGQl`48'bPY$
U")0[4V,!6e*BLZqHp)2pH9iF0,*qL3f0h9"8EYh[-d#iB6A,JFA$,H`"C"di)Y#
&PMXrR+rJSXZ`re*[i*iZcNJrrL!h6*-KfN!JNl,N+3MP"T0F+Bm9`*2d0"GM9eM
IQTQhp@FIdd&NBRaUI)lYJiPJNEbJpKh35d5mDQFI2`HmR05BPiJ6'6Taj[BE,dh
[,J*p`9N)9PTdcbj5cf#JQh"l38a'K&b`p$M&SF$he463%[h)9G8pFjUrdQirLXd
Y&p4KNE[HB6BVG#a9HbaMEdPK'ajfBpBkbGMc%jkX#h)jllC#JJY%8p2c@-Q*qpZ
m9P$i8M['pP@U$e`i1REaTLcK%qCX$l@iaTmCEK5#2dU888E95qBdBQRVZiU-0LT
XdIAfkE9%c$Y@mlL[kMlDS&kIaZdX%$NQ"b&)R0Z@pFcQdRFTa4md69JSLQYh)$J
Uk[i2'U1CAQp4NQjdhbMr2'p8PTjTkiA(BNBDh@UDd"9"6VMAI*M,X`Kr,Ap9I"A
HBeNBT!9Z!c5Y%Up0DT0dQLd!h$aHEHi*1b&U-%PP&V%$I4kV`ThDZC!!,jcHUNI
$IFl'@AU[p4B4SlCI4$a9QdLNZFSJCPrfBdic&dR6J'!5J`@jqUYiML6r6eHi&2G
Xf@U#(h"Z5i"964T#MF0`4e@F"rL4-Z'!a+25MHlmD95#l82$G1[EAh8KE5l(GI[
ZIaD22#UhB1a(q9rH)*-!eXRd6aM'KJ%lHDS#MqQ6*$i[r5Q,b#c+pc,`@!Ce9`R
CQIE(R6"!BC8K0i)YBVR80Y+F5VPT*Q'S'6LM#KYF'pmQ3XKCllECVH)5Sf#SF-6
!i9QCB[#mRA*8kbC!NQa'0CGiKQ&GdU8jkkqAlT&f5R'ZkahSMiVNhG1@Lp,V[,'
@26khAc1[8KPZPLDCmFL5p1H@kc(cT8Fc'Mjfkj0+LV0h8#NFJ$Z!N!#!Aic#!F+
l)TEY%&Lp9N!5qQ4fLEJcpbljrBqSqhqCT6qTKK+MPd1bb-hPde8dU%S20NTd2$@
P1kC2'P`U$F)J"6$(T'FfKI%0E#NXL+@Y'lEd!iZq85hUMq8HDQP)NAee263!`ij
XK@XSIrSK4NM4`3,Jb3"9089q[p2`,fNr3S5*!JjZ,'biqcG!Ph[E-9GHhbkKmSY
`@"(`81N1AC%k"BK4,CfMbpjICQLeleK,IUXiY0UXJdK`R,lJ8ZZ8A"h8'0rljaY
F)`AmH(Y6RPfB4bbXT+Fb6SaMQMNKBpq*`mZc$X+[$K'i[&H2S`hC+!-*6pSPIJF
V[Pj%+Slla$6Z4TB9T!Y)eRH'QhLaiaPGlrI-UMbGX10k22h6B[6*)k+YZr+qMpD
+ABf'8Na*C@!8lqkp+d-1@+-[N!$@Y4ml%AdkDHS)bMbfq@`mm+@LSeHp)$[[GjI
k*)`(YJ$IYST15-[)q0DBljSaqMeddA3Vp9`8(T@2C*NBV,$cLZS-"fX6KGMJUYp
pQL`9J-b,%#bS4*EiIKbY8(X2M*@YM!Q1dBDqADHS1)G4[E$U&Yra,SATP)$6N!#
'P[c9'hJ#6Xj2#ecdQ@TN"02r+6h@hcPSB0Mm24GJcldQpHM@b(3a",aAZrmIITR
Re)eL%%h[k[Rr-3LQ9B(iL1qDjkA!(0RLb1@Ja0,4RJ@a3DFGZI8588KPc%6JFCV
8Af&)Z@G)#'ZH,%$$B-e-%NY-,FY8Pm#a*N#QGXZ9m*9e9e,I@cLCVShUCVKL`$Z
@m[ITYVbCcYXDGpha(J8*F%@c!#l6mqk0J!R06i11PMlhqdRhC,l)TRXHA#C)[UE
X(F4EDDSDc*VB[0A%ZmB#r8CMHAH,FG1lKf!2(F`bDZApYaIVqF8-KQ6r2Xle1)L
r!X%UQLEfP99%iiH)626JA4B$&Np$GmrVTD,`DP4@%bYbNK2+ddcUA(VArYUGBAN
r$A[@"(G!4C+m%03a%ZPk)T!!k"X$r-p9Jb!`#BEC86[FM!4dV@"C"d92$Hk8peS
51Kr"ER`PXVmI-,9r`1,q'6eG@Sk-Iq,6I#*4eBl*ZHUh95m90'PFN9#J(raR+(j
dY`UFr)H)FPf,h!JDYX0Vf#S5'j1kcU'#Z@&bjR0R5ZHMU4fX2Vp8*'KL5F!X8CG
8FZP)5V)a1lTJ%G6CAH8*XaF2jTiZUa9SkMH8,+'#SAHNbpplrcCd53debaB@iCD
pQBV[4Q3dJ9&6E1hUi15d9D$'39fFaP`1VeEFE%Iae@c$@jR3G1Q0I)*3cBcRj8*
RmkEj2lBmP9UUM#YHB3UqJT!!FS60i96IrRkK04BL5U(r`FY&!3MX*RlZ`YMRp&e
i-85M6qKT[0l[2UrUhQVjE8)0LB`1RH2`U"HVZheeir(2k20M1c)XeMfFb9G2)F(
1V%fA#lTU*jDb++qTL9$ja84edjXUHN@EEDC#XpjPGYQ6hYJ*a0%ClYXApVhb5qR
fGD"3*+8D$0d+iT6`+$C14bk2K!9*20+EShK'CX`"84qaH*(XS),9-rijLC0eVF#
LSYbH%VGA1BIRDN9+id5pT&E`CZP8B*dbm1h8Kl,K'3f,aFXB@b)lHG6K$p82M8E
b,j%')M6e-hl#D256$E@NI*mdT,hC$keUJ+rSrbB,64VHi[1GK5EdeTCP@5f!8r)
-aFS,UZC`D9p@062m+&TSViNmr2D8$Ljc2J(2*+T'iNFeZ4fX@N,$cN[(-aE-,9E
2a86h2,-FBS[[6*)e,Z,T[L+J#4VcL5b68GYBCS2N[X4C+(9f'0(+XqFde9rCUR$
cU5!`5kV1#M1FHBm'E24HmF,cMVmMEbZeH*FHYlM0C,1m*BNd)M0c"%q+cB$MG[-
D-,X&SGlj520mZ48C1"D5#64mh9''SkX8GA!(d,"af9'26bB5Z1MQi-"8jYj2$CX
Sd(I+*Xpd[8R&DU*@-3bE`iDT*ZK$GaF&L,&SXU)3855NUEK+RESR#J,*1JJ@2@I
55$@AG6F,J!9Ic'Tie$#C'LrJN!!iKVZjDCR@h6UdZ'K9PPFk(YYR-AX#(LQFE8f
JYf%C@!3,DeZ,mA2l!5[iN!$%6)F9IJ+HY9rU6FqNBf$`0bT``TeP&U$K'8S4pND
HI25[ER#@k6&k(X#eA2NG!'e#K!YjAL69+64c[fE*NdA*mG*pU+4&,0"UR#+8D`q
*GPRfVfk,ST%&NbfjmZD"qjIS&(hY`ib2a#[h*`UQK%24%ee@#N!*0k0IZI'dSf4
4kF+r5EXV(UXCYTV`ZkPhrk1eNVIX&le@C2b"DZ@3!1Iq',rIL"4XVqKl"J1XFFp
lXXGD[i"'KIcGeNTa-Z[5@B1SKDDLIU+P[8c'IA4eFfp#NFUBQA`DVTcMqKL9JI@
JUQ,S4ap1"pEK4aFb9))Lm+3QdK0B6R+a+Hq9QQQ!Yrl&akUYLceU$cC'&+LdZie
j@5e2"+NLISbqke8S(&3KUpe59dD$k2SXjC3P2(a3'DXV-mUZA#1CrPj&ZMJ@A+Z
qCarFE*-fHQfNK`aT5I-2C6jLL@rRD&8NKJ'h8RRU!2ZBXP`0&l%@"@F@Iq#q@dB
c38JMNhEETdKRiJLqf$pYKlB%E'dYA)EUHA6MaaFV+3IFD5*)4Um0,+8ri,+1[rd
!Dfb-4Z5R@cYe&@-XrLHQ`D@HeH[9dP9TBUhBjVD#-bkFbZ6M,F(DZISV+VZhB95
K&1QM5,@EV1)l"f@%P*'iEQem9&039MY'(Z+i*q%E'"KM!Sak@J$dlq"qY)BX!a!
A@#h`('mC)mlG`H99J+!QKq*51ep@P-AG5B$h%8r-28CL,ND2Ze(Njb$IYVU4[%B
U90l*SHQmThekcmKq"SdKF#IkN3cH#PP$@2@QU[JMqJ"ml`b,6Z6HHE&fZ%Ak*IT
)8XGL0&TYjCrSS[PaMA+9Tr`q&VrLCrkGK5ZDaNp()MG"I5ecr'mjFZ)DJbbmKGU
Zd6-%Ya2JGpIATSpc#8j*9r8!LL9Ni9T2Q,@Trb[q9ec%+D)l6r2D0f$,m(hJ8FI
9%3-+RAp6hr&'6hQXi[S#eTrkVEH+4d0Lcf[2@SGK8Y5&5JAA*Dl#`D%XkMb+1cV
)Y!Em@P@S"Ul)PZZMDHjm#RQkHqHj[$*9+4mVDNjAX6k8+TIa5(Trf2+0i`2KUb0
L&hpUrQlH*"*-6mrPKd46E6DPqNa@bajM'G`!,FACQdS+Hr-HeGj1jf-VQ)h&AN2
4IqFCXBf#2NUriL2ejlLkG2TP5TMLkU4RHV`Ajq8S0Ar,9'9*J2qMj*6jYAp+T(c
8VX13!!b*NM0AMM`#IGlm5YBZT'%*&RlR"KDVIPYF0(q&-F%@!)V3`!dED'E(bYG
LiJKNr26+F4MZ99H$PFD$hhY`4fA4VQEfHP%0r!85e()($R1D1dM&PZlL@Ei,q@b
5dLKHV`3-G4["XF#E$`KE4q&)3m$BMAY,$-X`N6"kUJh14V8qe`l8i#ULjj("4G3
a*3)0H1Ib&(qVXdE'%k,@q3N"6U,4F[V1T)HYdH#LA5l"0E(3cPT3HC4EPS1,4RL
$SYrBV+rP-jHkN9+1V`Mi[iX1"8060')&4rT(G&N!4N(pXF3Y)djH9rQ-VDf'A52
fC-EBiHcah03q)Bi0*kCK)pPe0fUMBiQDiU5F#"IVC4*Q'BVl+1,FQN9FJ#i)@IG
2fY"Xc6Q0I`IPST,R"kkK8(p"!'("L`!&lc2mL[4FcT&,i6TBLp9'Xd86GJC@H"p
3Y'lPDHFDqZG+#8FSm0E5kND+R2-Xm6$3)21K[p*Z'SK3[2NMa&#ME,CKF(,@biY
D&%'2dMMk)e+#M"R-+aT#J@Yrc9Uf5*Ihp30e&T0(rKTej*XeJ8qFXC[fB$MTTUG
aM!brR*aNRD`5LZG'$0&4rTQFjbTl8LQr4LZf,Ge5pFDbqMXVe9PApMXld4,`lA(
N$5lQY!2e5iI02lFKX'lXP3H$0j16PBYr5jVHE`rS&4qFpFcpj,-@aD)GaH6#E&+
EabSV2MERQ1*j%MEE'bLc9C))10bcXi5FphUj4Lie@jJA1CFq@qDZ,@2T+!HT03J
VV9)E@IqM,G-lbf8eE"M(SM152N*3MJ5Y"CXeD2%2[08!@ekeHM,"DA0PLjb56c!
kQc6bDGYYrK%6-YmiGFZCb,&pcikKY"@G([HGG%e4bV)Ci!U%4Q(1M6caNe,0C"&
CY6"L0"*J8-ZBF1Q,pQK2MM$l%Rk25h%ipqX6i)L)3[Cmkc)2b(4E`r3Zf-`&6L)
F`XPfAq&[)Qj$3Bm)(c`-35qJ9@jCNVQ3!%&f(*!!UL!4@Z&[#Qdq+eT#r!iL(&9
bkQYq`Cf',0*mK6BJP[,C-c"GBQT4+SM*Ld9EX'9qU5ah`"A"GB'NSm-(#V'iLjL
S0i%Ap',DV,CjG,1+$qV1+qBTlIY8f$+q#8CT6r@KY,EXRGLB,hq#JlZF[*5(HQA
FqqC9PIhF5mk1eZFLS6U8rQ9C[5G,0Vip"p9%2K"EU')l0Z88LP@[R$ZFdbQ0'*,
TAqTl-6dSSmLIL'k&MSER*,fRX&elLMZ!NV2*G%XEU"m(k!q5M$2eR5"be'GZCJX
F5'119mN$2GlZi@5XBCA5kV3A#$IJF9Ik5i8jKe*5'T(U"(+m`&E6T*i53*RZBBq
i$JQ&PNP'c6L*I4&hU3H#,Cd'[50Hch1dK,i$03TYVT,pJa#TEb1p(E[eRF-a3M`
&NI`59XhK3*G[A(VVqlpALF1(H@SM%j-'rrU4UpZ1@KMKVb3[MPC9T3H@H1A9m@$
+a4#4-IVrA`A'FkRXYmX4)(3GVC6GhD*raLAE80`-iGa0[RZ-'(3X2j%!cRlKcF,
QE1A#*2L1+r06hD1r5d!MK86lkleb!X'&j5Ja*S)#L'DSHZ$,qXQ"0`D'f-P2N4E
$C3)UE52h+`b"#V1@C3bd9VhEdI%#98BGck(kVI$J39i9(0IIjPjHq3#+JYD"!%U
L08j63kM-FA*9YU(%jlY$BINIe3DcQAkH9bLm2h[EL2hAN!"h(6a[l(FFXF,Y+#R
#h-V&mEcU",@(Mq4Kcf*P2Pq6#jUGej%keFf49f4J$@[[(Fi!di!McSBd()AqmME
db[#@G1T[G`k%-LLL,RElZ@hd&)K)3$iMLPh#QXh9JdP#)+"ZE2l%#0#M$RLi)$P
K"Jmd*M(%hFPVZ'Y8(p&!q1h#DhT1m(H@LE'im+6-+iLH!LAD@!3,9Ce@@EpK&kK
9CfZ2M%Cek%hdCVidE8P*aMIJ+YkrI'NZU"FY21#l9kVXKad@M!Cfl$2@kcVh2J)
r8pFk8fqZjXaa))$MLYQ5DQXLJ`Z(@-mY5NQR(0Yeh0QR!*P*(KP2D)dh3`#Clai
b0V"qhT-T[ee@8i`IZkb#f3Tac*HplB[&,()8KGLb*$B8-r2QQM)aI"PqIZVR3pm
a+$8b)F`)l&49R1bKbIDE8b-pa&elpR%Q)#f1N9hQ[*c+2P$jr)2aNhh`hKK4rpV
kMZbB,0IK-*UZfiqD9DljP413!2aJdN&CTp%p('&TA(mM$1*4Chk3!0QJ4XrD[!,
i$EFXh@f8'p6p&(9i&kIC'`PMXBXM2A-PFAN8M$HZCYmc&1DXkfPDXSKl"l(X%C4
J%I0KYH'3!#D)YR"8Bq)`9PEG`FJ(C8D,E-c,3dP(h)"1r-+Z0qq`VYDXU81P@XU
c$BM-UADD4fmKK6eGFjK3kQ0Nj*!!Z%4qF-a9$YbdhM1`GAK-eAlPb3jB3J2r@J'
m+cbR(dFf+"`Frr*p6Brb*P"p`U300TF'GJ8+,E3eKRB[U'!qTS@ZX1K0Y2"YLcJ
U1C*BTjp#!rN`S6@c5X[$NUbXV3"6LX%0Nfj!AL8(KJ99G$94Te#rJb2+AHe1Xi-
""0,,PVe$m"$`QGNh0flpJ8eVBED['NkHacJjmipRrSEbRm0cDKfFCeh)KGP'@iQ
NU!p0+GbF%"9BReF0Mim4r%jDM'Uk(PJP(mh$aZr5JXX3@qB0iF%((kL@L`LBNFP
fY1[c,9&RIF(ZXHcYD`,@QGb23mlZ+83%L1P4*BrDah6S9Z)@0fZ18`UllYR!%,[
rY2@f5&qak($*SjB,q,QX&-,6BGM!Ge5h5L2CpLqTj`"@82B4RNQCB!USXkXa%Eh
-pm#aXkHTh1SD%1%EJlDBZlaX#f3k*L[f-6p`eG5aV#jlEE"dqP6TPr#cYL0hP2U
QkR1$e[a@N5j12Q@$!Xai,f1Hm4`A2AfKc"dYFjH-N!")86&f`R+a@cHKD@)pF*c
B`4dV9l8c[M1X5#`*)4@LIFKK13"hZRQ(`f"!K'MR6jeeF6hFG`)-!qJahBEC4k9
iG&0S5VURdm@bYl@h*CBR5DLE@QN63hcqfN#S[BFFR+M[r!aG`ZDBC+0V"B+9qIc
CQj[XFqb9#0'DTT-UYb*8FZcX@D98$L'j,3Uq(S4fR'88P8U)'93V`5GP91cRBYr
9(B%m"%BGVA0j+@(66p!Jm,K*M!'d8-dk(%#IP)X5Yl+L$C-Q4q*QC0NfZa`2dX[
!"R@qpi92(6ZM04kRS9Xjb2qCRp+LJ!F86U9dR@HJENp$1[1X`9pc84ISeD$[qGD
V6fUF2lDQQ65P-AGT8E,@M1ZLDlfdGa-KddhM1"1jh9e@FM5Qejl`d$$J(`5(i*`
dJ#`rM9D%l"-21dG'#GQk1(A*,m*HYM85HYUfN!"[H9'iqNMMM[p,B,AY+XT)BGl
&8ZYm8[i!(efh1%A5C[#e+RZ4+FibNhZ8r3LV)k$daNh5&DpECiFh0JN(mQH&I"I
dr#H0$YkQ(-FSZLT,Ab+"1I3''[TIU29B%DlZ9UhB0fB1@$(B3V1PX@V'fi39KE"
`U8MlaR45k+(-S("+R8LCj*IiA81,B3088-*GHMXSNI2Y3#(RbTAQJNCR[i[!RXG
@cV69F41b!E8r@P+"[#dedF4dkJr#a#DlRII1jIAbSDkE)%VNRff2qJ(k$eUr%lB
i9QUE0+V,,6*eRjp%Ri!Vh6a*Cb#f'ZDI(qeHH"rSlAEaX%"YTq6EN!$5+d9aJG3
r!C0kE@CV[@LeCZ+9bH'haR3!AaEjj3TVk[IEA9E![HZ-Lr3Y0H(eIYmj#,1BIIG
21K&ek#T`Cel54YYIMr8*2[2JBr+XHipq6QG#"6%@!MP8bqId(PKGrkrcJIUkZB@
PS+Ep)(dUh!-b2D,MN!"#*if,@i-FANGhbNDD'9Pl@+hLaSV,YcK1bhP%cT0R44k
2FAHXemH&RFLkGN*bPd%V2Q&b5"4ClT'YiQBka(%,A)+MbZF3fQm+5*!!pY%J9Ge
Z'4F)Jp#l9q[c14Vh#2lf&@2q8S5(+GDTK3QRp2+Z69mY(@JGeFIX5',1cd)`p`r
j!cJ8m(HrI`6Q&)&fGZE#JA3#)mjkih1kedD5-EqkjI!+,pRYRFf+adIH1J[AjUK
f9k5RU"REkN8S+HF"icSdm'j$9DGPL@3dh8SkQBNh2QHjLKijq$+A3ZRiKilBfLM
m#*Rp(T15kIRk[k"0pqj95SEb$!MR@G9&4l'#bE`C,*[JjB"`$dV@-Pr+(2H9rCP
LE#H-eR1,l(,3C+8C+l@b'-$&9!-'(X!X[ZIFkki#dA@N'ANND8V+!EXX1Y@'ihL
bcI9dqZ'$%3mU1eQ-`XaN(6ZJbS`Er#A'b8-%(Q0lqEX3@JSNMZIU#@kN@c1,`Iq
r+NXa65rQaG*Y9+bIGMhaQf9[P`BL!%bepNNSN`kRm`Qc-FjqbaU"3GhGc(P+Jic
UHI'HEAAp%hHTZ@DXcDD2-&pqeImqS*ZdPI[i&ZZC0LB(GXU1mMK2*%q$q2p6XYZ
'9CbrD%akD2+9D9NL!F036a!@bbAMZC,'PiESlaG1`SKHBAYaT,[3(j,AV+F#Z4Y
T4$ZA55L$4QG"#"lDJB#Y0Ke#cmL'J%di2Z+P*SPe4RkU)ACbFB53!"%VD"XMjiA
@#NV$6+#3!)kVlVmZB02[6#aI&6#3!*)d0SNIG`%k1N5r632R)GU,rh1+@hXAL)5
Yf3i#RB3CqSp%E@Ne$ThYK"kJ2&C$A'b29,)@#MmLQ&BjTCaD6U`,D)IEa1P[KPq
)C-%A$X9R!'5f1YbLFSDmG6K"0q%0JGrrK[V'9qei''0[)2IR(XP$MBCkq6m(aDb
XiD23NkkP2b4"icL9!91fCj5C-J4bK29V8$YKhe46j!HfL@&*4k[0$(IRAl0"J`!
GT@qB1AJj%a,SI)2aDEZjI1J)!6#S4K"QDa`I0-J6FbKK*"#5!Ci3PQTmpN&K[Ym
a9ADJp%+j'h4IR3G(K2d[T12IIM0[LH-&qMj&#c%B!cl`DV8"%-[&3)F+)VG1,S1
%85e0(i`"6%$Q(F&Y5@[60F&ECbGIAFRARS%6RGAVEYVG&iMbk&%&"jRVP9(J[rd
%hl(%EJAVmdAY*"CNqfm2kCQ98*&JKXi4GElD45AHCmZ"cUac*EGTPZ3`NAM'Hfb
h90Am[G3bBXC"ZpY*hK1+8BeRrYdUjY`&&@a)k`"Q#F@+1TXA"hJRYh13!%r-hj`
+D!-8RUGT4IXJ4mB#TXUeSN`"1JcMpZiXA!`CimIp#)f!aKFXfh6S9qRAS[Z`2hR
TK,'%Y[&KINmfE$bA`Z[l4RSi453YE!Z`[Q`EU2"#laK4$MVcqia'llPCbDpd$6a
dq@82i9bdY2Ibdp%!EX+VKjQkKfKZ#,jb9,!!-Rpq-(+G!T9+e9pMKH4"&ZHKNHP
pbcB9K$NE8QJGb0iG,XHNm09rr"[!)%K&f*GqbV@(!S*4eb&bS%8d00jUL"%f`!#
N!IBL!DCPUl-VEa'3!)JiY",SPDCd2I0LSeBZl(YQFef[bZ`4er$1MT4RiZGUqXS
rrJN&d%r3CP)4a2jVNQ(8MBT205IAbHThMA6Pq5!ahX`r1fT()bdh%cJJpr5`VK)
%5BA)Uc&(D&i%(82MQ8ZA3hMF2lUX9E6UfXlq'm`N#c`jVQI8iD1LT+"d`@RT8)*
h2@NaLcAM#V,*hqHfeNNKU"b-EVRVU"N@%bdeSEJ1ZP+qX0JGK,!(A%JC#NG4NPN
LR-fbm61k,Q%jE4T3rPaYF+SPA9E*fFUC511RCeNPB68#j#HD(jK*VCQU+-Z5"+N
5,idSL$$m8`GZNH!#KM&3+GI"%9U[)2Ge,FbAb`JPe@N31&U&P'$A*p8U+%SLM5b
E)qlca9@a$PR,$ecqAk50S2ff(lER)C&Z)B5iP8`,+UD6*AbFk&1P945+DX@V)pE
NAPUQH4b&[hlG4$XlV9i'Yaj3Dma%bS$pTT`BGE0+f-Ah*fU$2rmfDY1`#G"A+Ia
S&(C4R3Zk&Q!3CM+bJ,qJSa0q4hVN'p3`e$13!&XQ#l0i1UUB!e,A+YlD0AE`PX`
h%P6fjCY$@E!M-G&S66'fEL8dMjR`-9cb0#`,lIDp%P&'d4r#IpQGC3&2"p-p$1[
4hGUfA23#46NHI`j6X1+9Z)hb4cTbjPXm*qeHI4EIRMZQ6J3$a8ldV&0!+NIDqF4
2@ArT(ipcLj!!Zpd0(jkF+FT+ibU+T5"#f-TGRUFlMkiaRHHA-pF&XYhrl4@Lm5p
D-b*4J"fm!kqX4XY2abdfialA'Ja)8MffU`A+ZlN1jS(h&fiAGe6mF4D9@lGGXl8
h)a!X&G6Y1d6B!e([UQM*cK1PFhr['8iDD0YBkN)$YP`3Hl6!4U!k63XMST`FX!*
NC[DqFNfQV(rfLV66Y%Ll,CIf,NhTAJK-1#JlNU9pmAES@'kSjV5Ip5rmTQK2&l4
J!&PG3H23f!&&p6aZHXeNS+V3bm,VSi)DjS1"d9Vhdj))hRUMDemr*dBZb39HT0V
U5CaVfI-'I9F(V[aqdr5[bNTUU+fjBL'0)UbY4SdMH'P,dU'l3cRFQaBJ02)*3')
@9Z53!"+rF43fe8kqQ3k%*5dkZ+c$G"Ydk$("013F0bEfhm@)k`-SqbbC,m2mHPf
V2"BFAP2ljjXUB`jEN!!DbFaqGLq'hXb"(`A`$R`Bc5(6h[K(h@S(M%H&qa%$QG'
(P44c4!GkQ5j2G18IIH)f4F#'dDbUU$#Sl9D2ZRmH&'DQ`RU0Lqe)-G3T%d8iC0`
fL2ijjf)j%C*[3Z8rLK%R%,3jjihRXMX*#fBdH,cIH+#dC*!!S9MVkX**5KG'CR-
`)H)rpd%6[EIXk4N68ABBINce8GMbfqXVPXQRTmaecD&"34aMRhK"HEkl'feEmfp
$lI(L4VJchU41[k+*)IaPUL)MrGB!0lBDh`8kZY-8ArAi%cKDkm4eVjD'lT4R$@P
rLaLcb2P!Ad4eU4"%8M9pm[Xp!FAlic##aEi0DIf,E5ZrJ6#A%e*bi`)Cq0%'Q!k
M1AcC,m@,c*c9ImiRJVHA1#FF4'kT4,!S-%*Zr$pFfd0dSe'[Y6!ZcQI+rH+*Cmq
C9iAEDLX*YX6iGi%Sa6R-JVq[Nd5Dl84hVbF2@I#66`lQ(e4#c48IYRK`DAmqK)d
PISX#JrA,AdJlR64`#h+(1p(6aR+d0c2,KiZT4$JH9Cr$*QE,-@ZErL(BlL"#%%0
&Qj&M*G-XqbZ059FK2"NLHrSq5)(6j8#m5RTp@AS'NGUR(+5p&D94Cj8$+Tp9Ghc
Q,`CS!)rqQpLB3c5cXVX"Gb%,!rqE0VVqmZQ1[kNa-YPL5X4XSEpHCTfE'5bjf1,
*PD)cGKIT@JNZ8d9ENK`8mB1NmC!!bfiY"85*2VbL!l8S*fdU,XXR&hpLKcGM8J3
UM!h88AIlQ`C0TKc@dPP[U"CJDEI*K4hI(,69FY"@JlNQV'B)S"%p9rh&`m6ZKk"
rSSbi3fB[KYI6'p6%@1C"JYGar1UUF(RdXP%T"dDh820a)SMV-8!Yf(Y61",)[hp
#l1!(m#`82l#,p-XaF*Q+Z8KN'@,Ka(02rppe,,hE1JrS`[C"kN-KL%ANAGL2KQA
"CU"df0KJ#8MG4`mG,Y0I&pkhSi&,&)+LUi!#G%J2[NijS8`4@G@E'HpMBl"#$Cj
lCjDUiBRjRdB`AbqfU%dE)DY3dlbB065Kq,E'`cbEST-`Fp0Ir(S#C(a"-25f2SA
'8,5F4T!!4B%DFG6)%m8d$6LlY1R1-PC#c!jpI`5[Zq3q@29Y),a!Z#$"(Xmd'"r
&p!$GRRcl`96U0J626CTRp8Vhm5fDjD(X%$*!Emc6(p(5#$rQ2Vr5rER"[*G9qf0
rKF%@XJIF!3D'de'V%@fV0bK5p6kcPr@BcSCKBd,5[a[i(H9QYh)QejfQ2Yl91!h
Q3HA[l-1(QZE,29K#40Ir[0XMe[leT$r#U5DhSZdYQXB`"(JpRLcVGZU*dI*25%D
ma'[rXai[iId3`6f3!2M)9mKkLJFb@P,YNf,EFU,FT*ehSm8(-aU1"m0T6bBI(MX
B*3VA-d$k!+K$[)FDG*(k(dJ+f%*T5caNJ&0k6Hf&18TP%ZL-Y6QT0LjqjmamL"9
kfk@Q3(P"AaMVCM4[T#5(pY@6)e6-PJ8b2RP@+dRSL+jeZ38LQ2UHTA*(`E!P80D
G*(`kE)hppI5)9+V'Yc31+r8ReVY@&D@2-aj,1""ZCSm(,L[pi4ZFZm$5X`BEf"5
JdLlk-dph1NUZ!Pm8aN'jJjBP(#1@Q!i&ba9VZ-!i(CTZkC*Lrp*iI-%F%Md6p+@
"(#D-ZUVjk'(2[DGD6M-bJ,N-R6+5MrTdXlkTb[5'NP8dLI$9"(KiRe%H!hJF$ZR
i4L5NMpVL55UX)+$p`(aT"C6blDBT'A##bRBb#3GSMmH6`BpQ!AT[*kQJBYql4M!
&ch$6hj-B,#6#U#$*5a6lIR`dAUpP0Zi29cl#!PI8"&V8aELhEKD$-Kd@d%5r6N+
ma3r6#`c+qlI[m1@c"K6"lT2!RXd+a9bFGYdf@-XGZhTNHQC`(#48Qrmk4h809)"
`2T8RJF9BHQ''cF1"N@FaZ0!5`j500E+0*f8UJHBBJ*!!r&[4fBfiU-qim8LcfKl
3*fi@V$$d,Lh8-Y4094pVb4%jRi#!bh89!#U@DHq$D%fL48**@I@6h!M(N!$2),-
9jHejBCJ)i%A3345hrTTLFKpdTrbB)5Id2Aa4AJMk[hb"bi'YKCYr@5f&ekB$3-V
+U'9cBqPmSh`!`[Cba9RK0`'d!Vek6V,3Mm%A1eeEpYBN%mmfG3jS'DJGq+EJ56i
6M6$@cCrBVE!,XGbN$J(**qei"+A!UNLXr6f1@Q8R$NiJliH$4$ad&(KqpRF%MQG
@V-*Eh#lPT@JX@"TJd8(JH!Bd%,$&4L)9+i69e,pLT9@5kLTA24@9,NAe9&40-)+
ZmAQdf2pR)a1D4JJh`V&jYR0%YKmQFrXjNM4eR($39GJRXUGEU[d+CR[dbmae)Cd
(4XJq@-rVmkM4-GU3!!Sh8I$QN!#qSTK3`9rpC"mX%apV!N1VI0PULLY+$0@K!Fc
bka9a`hKAEZdec(5Q!2f2h,6reXJ&%rqm3!UYqL+&3H'aUKMd6$)4NmFNh8(NQDp
QdMAKRHZ$q)4S-09jCib5,[D8Xj6&jd9[B$e(CY+2RCl*M"da8KY#iZq3!+QVjEP
(`jjk4QQaY@m)dS0H1KP@HUVl[X!$rG0`B2&d6ZUp!P+P-Cr,H%M,Q6EZTJ)kAcZ
8F[Mr#b+29ZXSQI!5U$TT6Q4b8qJNGV20Tb6Cp*F!%6dUjM3P-ik"KUP6IdcqQdN
V`B+VY@V3`5XAE),djm"%Ra4%(rNTKYf5EA(JMacNDIC[66M%1!"k[5SJlVX4h8[
'bb!aQHC-Vk9+E(Kb2k(%#25@e(,rYd%5$fKdLC8kDa9N(U,aGpC)QP(66'2eRc@
S![+jX"TeceI+3V1RQ%GN1V-II'8lHQKiEeTAkN4f66X*b(M4ApN,mXDeZQJ+6r[
TC"mdT8km61-h0q9CF"3mfPaZ3h@lNEGiBEY5h$jJ-3@#X!Ahl)`JpI",IRPrZTR
leS%BFCNKL-VMbpTfIehD#jb*YlE`YG9dU*ZQQZX9KJ#9[TmAY81(C2Fa"ST3*rD
l'Z!)FCE,h8$1,XdMTUJCmV04m)R"+&D4)[-'`#(e)qMqKE+"#jQ$PF)BY"p!%9V
rEF#b!L4dFY3Zi"YP1b@Tc`TeqMh1E*5'Y69$QDLA'$jfQGbQ['qmcafIGPeM!'+
h8e-p9riN5kfD#qMCXjPN1a1rSCAqN@V[QRB9iB4PKjAIMPp[MmN+rrXC#2dFREH
RQYHA'9jJkpK#G5`p1'9hfA"5A+EIFSI,k(8$lrZc)-F%6Aha(IS,#F%+&'[JHC%
T54S9X6'cA`0@9V+qJ$1m9M6mEKP!i0ji$LBJLYmi#ac`bTUQf8Qb8L)QAQ9dmm,
iP!@L+qp4%),d9'eleXF4Je%2MZF+a3QJ,r'+i9SL&r2I0)0fVVmXI%mD*16LQr&
8!Rb$e+3!4Xq4(IpT2)GNNE$H+[i1JUhp$mXA9"5#9k@cN!!++9$#Ep#1kP1M$)P
amS,(2k)eB!@3!'V&(P*EX[A@FfJim[amP!*GF,fZT8V`la0qcCEXi!,bpcIX@+k
4ba`r*K5em,2d(-5m($1epNNKkd$8+'l1DCld0%$))1llhRJ2cHT&3*eZBUCQV1m
'UF$MXP+b+ck+*RhErPGm(e)B!G`8kL#Qd8DY%+8J@(3PKcA2P+,MK6DU9(rU(T'
erVEk"T[RUJQjYr+l5*e&X&'dF)0Yl5J%2dKV9GMLpQ(,e1'M#33JL8e8acKDfGd
J1qBV0,#MGm*8%f2EBU9Q(-5@b-JXf0i8ZZ+-cRTMR"q"N!#(Hrcc)9&c-B(66X4
&"141XDNhLJJhf+#@#INGT!MNj2'8U`*Cf2mk83Sh+8Gi'k5EkYbLr!Ph5f)A&H9
dHCVjZ+cl%#q5@P5XCq-2Hf,8P2!TR95C@YUF0[ppKVeK*j!!G4D@a)r"RA!Xa1h
i6f#)2mHX$C!!rk6ILkNL!MA`h[NS9T&BlL6D+2Pmp@9KkXR'A@0,YIAHS6"N1-8
JU,['b4Hd5`YcJ#REV4KNNeq'VP[r4MVd6kB#Q$pG9im66q'f830d@Rm&qpZP3XI
d*SG'+j!!MKjM-3eL2(E!&C0R5i8[ZCQcdI+48R@9)!c%aql`R-Gkr-@UMfdVF0+
DhbHcVFJ308GYi4cVF$QNZ5rIPKaV"i),HQ-Q%(b3!+dkbaS*dCBFNA#hCJ+&)Zj
-*3BG1HrdrpefF39Lm%35bKrY[T2fT0d164)URkDe*BVJ@rYfY@Pk&$PqU5@q*rf
MChAeYLY0UAF%$C8K*(GZI`afG(,PlBeme9Ce&(19PFDmU84mLef$aj4`,a80fj%
%L@XdLQbA'@(9X'9P#4(e%(PNEUdIcJfJE!IZ0A"E%4H3!,9S&BdYLG4AEfZ+'GY
PF`U,"F8#2qcp+3!,c"QMH&NhFYCDE-,9f"NYH9(,mT[`qI[iT,4QPATL2HiRUJ,
%&FUGAKbQ1p$#0mBEp(RlC"-N*,C["Bf!+8CXqXDJd@Be4[0rP5lAV)d5F5TLcUB
QrIlX+Z(XCcpB6qNB`R$+1#,rJ-*kb9'@H"LYj-,iMrpf"dIZ$8$aE@pITdh+`+N
Sm,@lR$CZC$RkLVaI@B4NQ3*&&JQ&%qS`N!#1q%cXkcrQ,jBmSLilDaKq$j`CK3q
IAFeG1)Ic(9K(JK*[ZMf`c&-[QFSYCU&I$,[!qcd#k$-jRU`dN!$JG)pVG$5mb5$
'&ID9YHN[rJijRJdT&0Ue5UM(GJj`AjHU#V(FRm-p2YFV,efHmAL[3jB$HUCM0HN
b14BEqBAKdXX2bL!cLEp1ml(d#ZN1LJm12e#[$#QJh9MaM1Krf`,*l,ZBc3K2b!a
6B+,NHHeF-522+9HqS[%iR#m+TGBE"%Ca*5T#BkHaIX"5Zh"'NI%F9h&!E@)S6HA
p4d*Q6ZVfQMq,8#"'ER$h%DIFcq'"%rR'l[cDc0F1&miHqB'4AXQeXb$#!M[ZG+,
qUi0qdE1#Z99D8+M@P&2*e6Pp*PKH4R5@RiiFe@j@GkjS1p8-`1Z[V@LrV%5@DS%
iefmkAFc'aC3KJ'84%ZC4V(SN%@CGf3&ZJIfBl[q#aM1DUZdb1f4Gc2$3-mNVBeM
ckTF&59[VL"[d"-dG5!VI(,X9JYkXN!$**JcTlZFbLL#JB$ZaLTq+NA@ibV"-F*f
69ML2MrLj3Cm+mQV`jLN'0$'Vfd1*4i9S'BJ"cC4T,M1ZA&[%HZ6BrcMCEa2r*-Y
*cDLUQ1[Ph()V6X*E5IB#)+Tc&YT[fSHRljc31dj*Zj+`5)[q)#0#59Y1B*qP4UI
Jl@0@biK"S)Y2+MqeLkNeAC@+Y8ZMq,0,Nd"4J`Ar+dN5*!-b!4H$GR&&rU1PXGT
-aQbAYYp"!`V2bQ8'mQ0S,8'K!AUf#!,$DlU#N@(K["1V[3)VEdU9*qI9B@+Deh(
3E-85!!aV1Zma6qA(*iBXhLQ$#IqI2ST'R6(I-HEbBpcL+k[c(0)28fT0c(-l9KA
$#Vc[Pdb#T6HrVc#D6V9@&ICHCM+%eJQNZAN$[VX5+3N4h$cS"!i*@RGr&FL8K5l
0$'E4FC!!BcrH3c$JJDB59`-J-mh1pDK4NdE1DIXF*AUefS$)1crB&XH'0UBRa$`
mTX!l+NP+N!$5TkDZS$$iXi1Sa$HDZbb#em!BfMYDE83@j-A-B[ZJM%ck6BlE+6"
DLmN'S,AQrhKkK&0@Z&jqU*YK*NMrpqp4QGbYIZmB4i8(U-[e*F$*UpAS`0`k&'5
6MiUNYUjA0aXG-%NTF`XT5E0FBF`0YM*Sj,ec[f*)*iF@HUcEAXJm$%dB((RD(hk
c2XCChc'i#mXS@@$332KA@CC)16i)Cqk)'L2c@4,MN!$Nmi1#!DK9-r5#dclihEe
fUYh6h68EL&RKNGmcSrpGPLFIjLAR4JH4l"3$qH0NlH(GcLfaIUIBh@NdGRIJQ3J
pGXVqL9-NeH%@&pE5h+%FA@*0AQCak0D,B,f5mk6`),0e+AHUBEKhl*pDCCmf"*l
V33B91[mAmDmj$hXZlP8VCPQ%5%hCZ4f`bE@@#I0di@5AXf&&r135eaBlame&H%3
UJC(QQ+j20Y(HTkf&0eCJj,d),)kM@(fbkSm)*J8QXkT3!+D3!0N#i3T[LZB%l'V
4mKbPNfkFDJLN`ecrB2'YJEIcK[r'&H)MZc[&lSB%Z6%6Mi8d4[cSpP)3S1dFceF
F"qUjSHA4X8dX$`IDlSSHCK,kf+!`0MKkDjhH$*&d[`,IrdSilHY(Kh9!8I6)'R9
'V1'bKX$`1'I(F*0$Tc1X4'q!2*Pd%dMJ#%3k9k-TXfm4`6-%AkQ*L5fHZ0q$A*d
YDbMEBbK6T)EeNXD'XQcY8i%Dq[#[MdGJBXl$'p1McPNmbdkC(MD@pa(XRQT$qPG
FQDHK58T1a(!rSAIq&''[eHCi'6p&GYI'J'3'AZ4jT5FRpVaGj+4+"DCRB*ATZFC
I4r4AkDU)Z+Zq+E%6Ma%X59`EcEa3AiFr[ND"PKP6Se9'c'FhHT3-+`fm'0#0a2C
-qZ%NbR0MqG1)8&Qi58(jimT3"jYYUEXPr*XalQpLjm@%H6lKLehLBT@@Um6#5HQ
kZ*+`C%bEEJPkDTVV(XZlX@l+Z!*XYIBir5pmH6,Cm2phF*@C#Cd-@-P4J!6I*"5
YMBKBeEaBMHaF&6*a4Vk0T!b'hTM&Jm)a*JIShdh&@6GiL(bU8EK[1"e4aX#X,'I
!ZV0)@D1k)eN1ILGYTKE(@PIDRVLQ2JcS3&LG8*MD'-j)"32,+5ip,G4E`1P2iZ*
*h45VIC5(H#M+2'R08Y+ImENkQFVCpdXpC$E0YliAb&c5m6+SfT!!+6!fQ$1bXqQ
F[$DNR"-RNijB[dVadP#VcHY+Ac,'Q-#FQ*)"P*MSILeifZL48cAr"jB!YQVGC25
f#kmLXFL@*H,EH*0&HL#VFDCLi)CBi&U'c3qUr`-dle&jrkd)0-h#8Z6#PJpDKRH
Y([4D9"aV3AF'10TiPV&DTlM*Ka4f%j'LG[C63cPq9!NQ+FM'I((,Lr#qBRT6c9"
@`Z`fkT!!iN)2Z95eDHVrBjKCG%T8-BI5KiaN8"P+$P9UP%Z9P5A#Jj5A#fiYU*L
@LM+(D9acV830UqP#LPbp"mG@A%c2ihaAeKGK2S91K5l3"(Er@D,q-YCJk9K59X"
bkVhaZD)4pV(M31&D6LrJbANHmbZDDlp$(qNeV'&DhHd!@mq'b9UM9[$RdSbUJM`
L2E*8JCBTdZU4dQ+4'M9TQBfC0r8TfacK8bE)cbPEdU',4FFMd9ibSAG2$jKN*3q
*Q-JV2L,kTh%L9a$RECYE$eYX5Q+FCIHeHb4JbMaC-8I'Ti)@4CGKZKf#Q&!JMJi
"`cc)cG)V@kq8b-l`h(,LfHq8E[8EKc@*k$U4HTbc`Sk[cHbNY+H2)+K'h%iPG-@
DEr9iI'"cRH+NMPpi49GqX!#l$4p'am8i'H0cLU3eI+ak#a,4b91qiQqL2hE8STV
lPPGfR*-aQ5E'6rNp3Jrl9PRrT+kRq%rPJLXK'-kDPR0aM-kbN@GGJDfQc+0[j)#
529YKI'YDEa#3!(XqU'$TJp+eMA2pNH@rYM`#A6e@hF)#QiRNdc#F,63kkbd*HM%
*D0&#1RBi(q2+0T!!4H*jhScQ-28k0UP3+R*C$9Q+3hrILlPFQ*bYiPXBMGjqee4
6kZDD"q-MECA&[dFkk4*jJF!eNM&2k,mrc!8TJekXACK#jr19ac!KN!#k(&PmX4k
jprpJ-mLHEMV+)PPRqTF3iB,iFPRN*FVfep#cf$I3[Q*'XIYc0AKXN!"iT-j(&6i
Y#JmI(@dY1l@Q$#kjb'Ie**HQ"JNYP1"PLf3*,IrIlj(b)DqpFGpDEP%EH`68LCS
*"hQ,iVZYN@$Zk9m+S!*&+%-Tpeq3!)KNlpc'`F%#(aP42eUa6GSm'!bb9+i`jBF
&h$VX4&NJe1N4iiU(4hLe$JMF,d,'UD-AmekXG6(fb-h9FDE9dr'[S34(6J&8FlG
ZjJ5Y0a`8XMBMY4QjSQA[KUHkhPpASN0!-d,5VGQFLPCj0fpmQIrlH@"pDBf*V4`
XC+hI(B,T8Li8i95p!ef5CmF!A4B-lN%Yh!r1f$FhQe&pR!+cc"0TCbj`F95mXQr
lX'QDBT*D6NMa+CZKP[5B"%B@&HY@'M#(pjTI#0Kba3q,X9"[(#IQcBajA*Z$Lp$
!mkpil36`ckT9!Rd2-"2-0,B-p(ZZ&M+NJNKljMe@Mc+-&-#[fLh1`G654DFLPBX
Bm16liJ%Le9BZ"(I9fMSD2[p-KHLbF5ZU$'ASXjQ!N3Ie",cG3Z)4TiYfPc'Y#Uk
[p$2D4I3"!2-llKm'&b9J0eTERVIPi-Zr*FLMc0rEe,k(IL9[V[%5IGMR,)#L%@*
c%Z#ZpMT[jSR`X3K6m9-rrC%d,2GSejp,0Bh#KN%5P!R6)+AHmTE9e9BViScG(8@
Gb9,lX"AbkI+KScp#)b#T5EIP4EISJB&bDPK*p5Uar)Hf1rDT5)F-M!EjTmHhi6A
VZSK`"paS`E`TPSZ"5MGbjD9F9(qQ&5`#m8*NXRLH6RZJcpaIbT!!LUp,2'eXRaB
'$i'&"F02m#I[ZYH&@rZM4f`i5daG4'R4lLl--S1UM[3N`IDr5Y'Bh9@*0M([2Fd
FU@[r+`k2I+HR6iS09c&RMMH#SQYNpLh-NbV+@Jbe3F(SR@p@Gb%a!Gc0e(G@UjC
@dHdj!,HR0[&2@5b,4AEMj'4GYDi-m)Y,NaIFC")4$Qd&)$q`XG[@3AlXX,Sq1Z&
aqZDDa'BH#2NGP2&HIFqT,TB#D%l-1STJ11M%fGP*Z&M1Yk`H*#B+'k!"$JEEb1B
&$i*AR%R$9Ak4d2-Z4-&bdD-RpQq+%[@6(YHli#3r0b8FU%G3JMKm8hQ0V"hB#@H
*K"XNAr"k-A-)mM%-3Vm1alSai&Q6IJ&GS8E'FZ$3+Zi@%a4NRj&dk$@B#DELVQF
X6VrI'PB0e!Bj0mGG(*+ZrfmLP+i)IT@VT6NGFC1%2H(QqY9ZS1"KChFY,GZhdUL
'eUYaaMGMTcTiN!#A3rSlfjUbH[M5(,*X%39EXQHTeU*HdpH(G0*+6C2VE5CTLI`
GFj6c365iE`rVKYU$P9STYda[62)Q[-kfEDk5#Qf#-[JK[#Z6Z5Trqk+[R*dI15E
1dr#BFC!!-c@M4eBI+NHjlmT*"6mR")%2l%U*-HRBL!mP)0ARek9K-l+p)BJDDea
eBlDVkZZS-2Ni`qT3AbkK%&$E[&1Sm6['E++"&iY4RKQd,12"dY%0`(3ibdf)V+b
DAf[*+AIT5e#pPB["C-q3!,KZ4S2GhFl&k&qi5,K,)PV-X(LTI)jY-8PGhN3-U1q
QSq5B5ScT$G)G+ZXd4KXrkY8Qq%05mpid+D6D&`EcfcJj#VK)l8XL5Z*C'F+XYM(
bITH-H*5Y)Um$Pme1lij,&P$[T#&AUZ`h8aemQ,V@'ri'I2qk[$!I0mqTKL0(%Mf
QEmS'5i9V1",i4ceTp"Tk40r58rqZ9!-5"UhZ,b@m"YK@Sk@BQ@(IYPUb2THLSD6
@kqj6LG50jJB`h6TG40(I[K`a8064NX0k@J-BNP9$"iQf022C0@FFd5,E3b$JH-N
V13)V&,bh+h$Z*`KCP$I9fj!!JZ',"X[6aDjLApq'iN(p+Sl252Y4Q9)i*0&Qj(6
P$p8)rf(0HE3PRJ)djXhqUKC2#DpYIdcH[db@I-)b8GNm"5d'rE`8HVC#-ER-Ad`
"+K6T4KpRDMEfhYb6BUQT@5P,39Q(8q-&V0#aDDZ@AA"H9-@*KGL9MQpGeFqcZ8p
4Ah1Fp`!-Qj3LB`4L2f2[k6ClAiFkCeNcb*)FT21Da5SR@@r[A2r4F[19"dPIbR9
6SBp,Hf@cPIi9&YLD-Tdh$bdpZP"R@UQrjYIM3SG9DbdqSK&"FXM,j!l#Rj!!hq`
(EZb+28CU@!Tf5SVFGI8)l0+FFQ$D,(JbSCH@-dA9kB3fE*)CF0N5b8bd38CAAd8
3AF!cAaY')j6*m$-lE$X&@3#UL#k89T)TYp@%p'j,9QfP*Z'RGT3YKibGV2Ua8b+
H*32&+b2Ne8apD@Iq'@8$HF6NMc@QNr2kP4)'aH3UIV(3FMciN!#A%SX+'IJ1m[6
R"ZX'kCBUH82d'36fYIaJdf#P%$1r`iZ-d#qX30EB!0a`-U6JY@LFqT&+$bU@eB@
UVqhXS++#`XBVM9q)f&[d1'b038FeJ2pR)4Hai5f#PcCEd-*Zc1f3!%H@U)ICHTT
plLAUFMBCI`rFbD&K@"V!KF-SNpG8`C4cRKVAKG-GKd$l`lEXlldjaS5)RHA!bV#
l"2alkp6fG"(!HpARi@%ZNA)AJcM#@Vd!3AS$Zi18K$)JNb1E+Sk``#Y4[!f#!6f
C`NLcd"M2Qcch(`@qHaELkGKKePpdm,4i"C56+lUB@NZGX3`Hc6e)X"(9j`E@2#f
iXp&T25a5Xi*!NGd3UiACP2$G&af3!&d9E*8mXFE)J+RTM2,0p8UKYfeX2jXeB!f
CL4VA1lNPkGeIj#I4P&k`1-i)('G3S'@GhBZZkKY@UEBTd8De9L[Q$b#rlp&@AR+
6$mhCkJM0$jB9fAS!de3i$k#!,0%RheC'@i[[E%ALN4PCYbDMDki9*@2dPA*S"I9
,"8Dr$0ASBNj#pjb8K+h@1+RiA(#M5iG'[k#SmDekc+#&H`19'8A8FQe1f286ceA
!hjYYkpU[!Q5J(+mXm466"%(pYK"3PfQ2Hma,eAfPX"Liqk,6CQ1Fl9GFBai&&5A
%@YriimABB(l2K'DLRj9hJ*`fk4`X[!cA,EQT'4ZicU!@05p$2dl@4,R'SqiR&%9
0A+*4iA)U`lm*-Q31VTXlF9E%'jKNd[Sm(aSYDaU"T[Rb((2TXjG2p"VPj*Y#&!*
Y#0%k6l*GAcLF)e+J1`XV*4mDl*pbSJ(d2&N*fl#2Ti3c-Bf-Mcq*(jG,[dm2UE+
diT5K#`@Lm&K$l)IERVZ42VN"0Z`NLJ+lPa03+MH!K2NN#J&`GIlZ0aM1ai6GB)Q
QRCKIF08X)GRd510b`IfXk6%!C2&,PlC@A)%2rCY+r(@A"@61jV+hP!%C[IM#+[!
+eJAK0m"KS+#k-9afVXqlPRHlTS*Pd$Zp(CE#1KhQALPc4piiUdp4CRM55"c8"Jj
365bp3pSd+'bDJUXf0Ad9N!"ZL)4DZ@mkh-NRi5@J41qa(`K1`0`jN9Vr1(CYH4M
"epRK00dFUGdh9Di(0%$k1cfCe"A'Ha'MRM+,eEjI4hpjB[Hhf*!!K[ak2Z18Al)
2a,N6qM6J5Ddl*38EE3'SFGa&Cb$MV9kEC5*CAQfF#$Y'd1#1Hd)KkNfrEYq5LdK
MN!!-akRT`l26aF#1*4q5Er2"CG-Q-`D-l424"D`(JjJMSaG-)pH#chRZilDi&"q
6@DUFFSc9&mJ3AGa)46Kia@a[djQDqSk6&2(9X2!Z9CNm-Z'X8Hja9CXTNYb'MZT
Ya$p6f[ikdKT*ekZcXhc%(KLX`dT8"Z(8@9Z&rj4ZL%&!l530cBR`#,0rH*SFA"H
SLG*h3SJC4$lq[FA0QC35"4hJPANUNA6eKCR4diVf64*j)U))%6I[9qa69-EB-F!
YlJZ"mYlBeINJBhZ@2DM6aLHXT9Q@DM[eZUb`daX32$&4Q3+Mh8Cf-M0K,m4f[Tj
ARb&)`A,0+F88CB!8Uka`m6J*T+68p&jIK8Gmpe&SeD!c8e,-R5LN4+bCJC'U$bH
l6Jm-`NU9`LKPZ&MFCCVK6%NQdiH0Y(h(@Lk1bGhVrSi#Jamc38Lc#qrVDIH!k+B
A%eHECFXKVLG[fNZj+a(VSr!R`5bN9RFQk@bcYKNZSl@d)8jC"(@3!#'DRj,U1Uj
dSF@)bh&3HrXBTm4E,Bl&eZ35Qc4Bh`qjbB)FA-UTHK[&i2TqjG$2fa95fVBZdL#
fcQfhSB6!R$*Br[a5#Q$L[,pb0AZZdmZL9l0Pc1BpdNF5Z4rr#HaJJlbVJ"i3C!h
R!69[*!,+Kb[a"dGmVKmVH%ff!Q6Gl`N%UMkV*1B&,[kjD$MPqq)iC5dKTIr9L%M
dlBCJ3QVR`Jr9a!VbFAQE""A+ra0N$L#hNYGN9+@c8HIei5pM$1%'+iKLSYDCD+X
`E+,`j9a(6qZPe%@k+@j1AR"fP,jCd$*1%KqXpHMi[IT*AX$H4"RpV8&b4h%YrVT
6GdSPKmea2X,9m$%!TlE`8YA!)YY[8YfSk@,p,UmMK#*,kl`9Fl8bCr%6EG"CcZ,
%aK5Lf$"(P$2CA-4jNik8edCK(+E6P%RIi[r(I5IB5DFhA-9a(G0eS+*$BE4[(`D
9P-8rc4EUNU2K-)e2-mU,*@mE0qVUb83R$)kfUjGFi%KRB360mLB6f'(Z3UG,UA%
HlKGhUE4FPlYQ*CFBT)`R@DUR6GSGUAB,U63F+q`EjZ,B0V3)X%1[alMle6p@XMH
&M[Ufmbqm)(l&C+%IS1CGR62))mhfY`CTi5jMVCAaEUf!$!9qHh&!CQi"+bLAMk1
QblCF-pM(SS#qU)ThMV+2pIeNLriL[M8l+`h@M#,JJ%KI'p1*r*ma"0X+i)(mUYG
JGLP`4RT%021DQ0)d+D[&Z(YB$M'Kaip8Tj9d-C!!,&#e@'Ypj%c[`T%5VGmd)+(
0fkIl[H5V'`2E)#$0BJQY)`G(hEm"qlTZSKAE"PDG,1L@AmY(ENe"8BAY#*CKmIk
[64(6aX+P%B9dCKVULp&,rJd-ImVAmcTr83CcbA+a5mS1`+`Y+K152PNkhp%8dTp
K9+#D'D10Qe59!8bVPRI`S(6PC3T')4ar&*%mpl8+BZEJaJ3(ZC9CE%R&)qQ`58T
BrfdqLG86AV2a0J(fD0QB!kA1dd2EXqBdj!92Ek8d$(REra4ZifaTI%b*4a8G"aQ
!PVT`)bbM5PT5*D(,R#6c2Rbh'c8*qF&P!,BYe0U%!J4$[L`3c+XI!(R&B5&P`$6
NaEq8a2'"ibcqA*[NEU0Y8kRH23@ZTBh4Jh13!$&,aVG1fP&e&YmIJB`p(Vr$Cd1
SND3L3DUC)(Sp[b3bQKB0A1qfH--*H1Ua&$Mi"UIVTk4[h"8ki5kpS!05%pXr&`a
0[Gh2rP`lT3bXNp"IiYhSRAiQN!"dLE*J"'@rmUm%rVAR)V0lhKaYE8JCCpYRX1d
Hq&&hSdhbIC&YGbk&ma(R@#-XUk,M&5$``9C5h,ZGCI8JX)kh)c+qK0'#em8'C4Y
Bi[Vi$2iG*Q*TYXH3!##B--5K)kcrFEVEZ$3MID)aGXFeG#*h(Hl5GfDUfm#`GX1
Zhm1$95&QX'h)c8%FPVSJ13S8IdG2`3dpbZGr#MF#Ah9ZM)8Dk04heQ"LdZTc@N&
TTIGLcY63QVCHa1!99[IcVQ!FYf2l@P5j#2'mC8EAd)1X($pNBcMj!1X+(NCbV-#
9$,E@b2Y02`FTp$f9J!bJ5c-m&EX2m$@,PY`UiqiRF-31hhpaS4K!r-+G%j!!4U*
06iJ$XLTdN[PKPkL$8p92#V-X,qN@hkq`F#f1VSILfTPfmf#BmA$R5)c+R'GGP1"
4,r8Khq"LcN048EUQ1'r(SNe&Xmk,r$Lam9`Ar4E-#r$jl@EVrT0MXA92krj-D,Z
NBBh5#DL3!*d-2@4A"MZ92488I9daT#ZE9[V69akrZVabr8Bh0dL(kTEUbf$RS'm
(G!!6'9`A3XTC@RkG%ChHLHH!#i2lGiJ))PJeh+NN@+A#*$qF4)MYK(qE`0TCi!@
8B(Lk+BI[pS(j[J&6cJG3M#T5Y(LD(&EiSXRbST5d@QjSS2)%a9Ghfa&P9Ul8M%6
H1+3DrYBdAV1T+(Q'q1EKAQERhDLmMb4DXEFKJhaNr-lkXlC`A2%lKTLRIPqA`b3
T2)h*iVKkc++)5VT`DT5jDbc$j(eb&ELGZp"d3h6e-NLa"AHElI4Y)r2AZdqQXZN
(D0IYqLJ3bXZb%!)"F8Bf-Y(YVfE1lrI5R2&rjBCX,X1j$3SYkVeA`D%LekM&iiL
T[,6G,DRcL1MFJQ-JGkXM-Qhr-GJ!a($%Tl80TR#U3ba5ASmF`("IY-ZR@XSbG)K
,h)Up(K2b8#9kSU49J[edBJH3!"8NSBjiUkr+AYH2&IUX#b,Q1r$QT&P$VqaE#+5
"BdVAdNL'DYUc#aZPES(G9LQVGaBZKX@jbhZq#M$6P)@l4!923jEZe4fN'V*Z"EB
D,),BDLr8qp[ai-K1#)J`#3kZRFUlj@DM%4Xcjb3eP[%UJ30C#*'KSPJR@V5ik`M
)FH8TddIS!(QjN!"c4F)@6#Y9GbA9U@F8SF,%iHEBT2*YPj@-i)#'qfq+A3qQimC
ib)meaG&[XX@cQ6dL(8lQP6F'$dCY"dU1b+m)6"E5%Z)hX3epj9hV)4Z5-f45-iL
1R9a5VZbqh86)'F+r&4m(5P5G5f[Fi'UAIp8JmSFVaf,b&ZZq,GS,l2fAhdib4E%
f+I%)Gb9eIYRf"&d'dMF+rDQb#2A%%K5I34eJrNPCLeUZ65#NedETZ)F@L,,)"`E
ZM0R1*"XGjEMhrKDrSME1)"b)U2cmQN@@$*1L'cdE9fILLkU$AF&rq6l9QIJVdQH
%qdq,brTMB&-+8C[qiM1%YBLh`-#p[dSA6i'V@GXT$,8FU+`b*QL0fUf)DFR$hU!
h1BSTAU"#AJk4qfTD4jIj90[Ij&C2S04@2&aj&PeVa0(-0k2&Yq)Xd"JXUcH8!aZ
1'jX-j+eXV$9,40PH"J*Y@Sl80EU*UFSZr"KCRR,UN!#$aZTPVrKI&qPTaKil3qJ
!'m%E44'jhZZCeUC-3hY4!F#3!&Y['ZaN9[Z2THpRJ)8Zk241INN5U+Q"P6kdpmJ
md",5BpH6rH+,'Y@KI0I8lPk#0%FA3!B0i*0HTpDmV9`qa`0ecL6TZ24J"2Gb$Ul
-He19Rj+4!c-HHacZ*Q3INhP,ecX4E0qleH3p*A)RKAHP"$iQH!c`[)F8YGCpji0
rc4`r(U!AG`%X'R!@5Q5TpfJE(6k+)iK!S-YpT*Hj@qcD@j(I6JhT!Tdb!K$D0d,
rb20kVLPfk&@JINrMXKYHml5D-G5Q++3LdBF3E*ZkTjfI,0L(P@Pp1l*jIBV!U32
QUNNFq%XH,!60b6L@KZF`5Hq6NSA#k`(F"`)954eq1T&JaqDUQ$"@J-!dHMD619Z
A[VSA0AhlQLS3D&J35rD2Jr)@hBTB6X-Cq02qfkD&2H#1Vbe9IXX,f4ij8b&E%!`
@l`UiBe2+B2N1Amk1rQYRaHpJ@K+k,43@G242f5B+#2QD+)[J-eUcCd3K('hN9(#
MFE!kV#mFJh*k#Z8r#dpB2a5@""M")NNRHl"269B,SDMfb1"NHhNALrj'"9fH,&`
)V*hh,`0B9qUII6`TF'1)q11h)H*pQHk"!h#PJ1MRE(Q@ee8kaAf0%TRbMk+Ne(R
Gc`%!Z!GkRc%!pCQ5I(-k(X-L)Tr%HYV-jp6R[R6@(@2f'),-cmSR!Z-dEJL'GCJ
6T`IC@GeeeIHihV(E`1SPhdSUT6pi"ZZi0Mh$d#%1Dl3BMF*FDpclGabj)1#)GP$
l%m3#kJT"UAS`%[&5JVM$3-50U1R&2EJjF9RN(AZqNfYVZaC+(4!%5QRD,U@p-6,
K)0iV[2`f1ZULTL"[LbC0)1Ud)#)h*"2R*ApCGI3IVZ!DiAk'2fDK8$e'[CT`*IN
2ae#lp%EaCbfpY9R%jSQlAN4$Zac-4QS&BLI5cHlUSmS+-FN&mJraQ1ZUm)m4(f-
E%N*qfY(p81'e&B8bkMfjMS@&L+&BZHH+R@(ISc$454(0k,4EM6dj41bM!D3Ild`
jjqr!93QThC@i'(!`!&ecdi"eQUhKP1+B9#@1)!rK6k$UKS1%,)U!AHrY8Ar%MHk
UDH8X+BPk&Zqe%+H+XNc%[Jd8@9hDZ$HYb"LFd2$E`02fmA@FpfQY2SXbal0Cj5V
j`5UY"Bq$B*K"HHKUiFf&ePQcrXBKQ"2S!GAeI11i()m2fbZ1ff,H*h*e"VQG5*M
q,#IJKl6r"DKa$RCI@FjS*59$2HelEpYSh5Gr)ACTeLSj0dipIf)$N8b!k*DRTqD
$VSJH,M"[cR)pBSB5(je3PPIfcaECM61"@`F+J*+1def[0J*D$$V+VZ1AdhkbKi*
k,$`H&A'dlUR5@Ij(9D,$AM,T-DF"R[+Q*dL(NrN,,S-NGU1c[eNr16E#iaf[q-B
cqM,RQ2plrRj9++F[RN+dYh(2V1'[MJa`9J-4rekm`mMD0-LRl'+a)d0ZAUaD8dZ
0jc)4FP#e&ZA@mi,G%L$kc-`if1HckX,!lCkc'[8XVB#E8P)SZ+1fMmD(f8VI)T4
Q5&Q!YXBX@V4c&4rF%f!#Hff3!$$2S9UX93Emb*!!*fbN3l8Y)EAI"T3XG%jSAlT
dD8E$Z+K5RN0q`2ZZFLD*6U+U@Fcp[ANCF3ZP*!Z#EkI$4c0e9)qR1[8l-2)J,Y1
FSS`-H8e*!M4H`C!!2c(QRI"$l"4LUH3+20K+2VlhP(N$*AiVR+`VFX6GZbDlP1Q
4'`FH)2(Mfl2p(NDYh6**Kbj'Yc(V4RPQc8e2cAhMr96"L`Bh8d9"KKA5D&RG"jc
Xd`c&*YAX1LkJIp3mZrJ0kdkM,pdJ"iMY-c%1NNF)DVX3l8b+ac5eci3U5M6Gm#a
m(f)(%U+Qhm5qlKV@QA18S8*A'!RGijcUhBB'Jcj5Z@+1*T!!AZ#Xh!-Rab*EKKN
24ZbAYM1Qh&PcejhcUSSYZNF),-(Nmcim)G!a05'X`4dV`'M&A32F4a4da16IfYY
86BGQ,j)CNDj(ar5V)43mH),4%cSD1Xr8I6N%%Q2r1F'+)h4hZXUTY@)@rpACQ'V
kfh*#cRp1JTXi#0&J#PKR+IjL@q5F%F4[IKS&Mr&i3Y9cHC,"8fD+eDBdAAQJF@A
Frc(Y`LTkAL68PCr'Ba-fQKTJULRYDS)2Q'R-fq9e!p(`k)l+d-P9lCe%(fYT,8-
8rBlU!mlIf*CB(m,'USFIBef2q`8A"85R,pcTf,$aQM13!1APk2V*UjqH85V`CG%
M@ZVDa'`U6C51kCj&eKJ`MKDE@C-8qfQ#krRVdb"Nii-N"p-PiRR9A"dEUebi*hA
"+e%G4MUQ!Jr"#K[DqCi-C+p@VfY0dj98ale)0Fkqm)qZdE[A+fKG96a0&ei,(M[
T#i"N+*+ar8*@a6j-EN9dF%0T(G3DF8h`ck'X41T&8B$!'k)pdc)G,9cK)5Fp3il
H3lrEAQXhQXc@IiU(a'[+IX`3)U,Y$pL#m4q8RN6)Jdha@Q$qC6,&U)9mML4V*&m
34&fpfM0STeq1*rrC$Qh&-[fIc9K!@"kYXa!6!TB'lAFKDhA19&UrI4e',RUh`DF
)a6,pI(i8lImhU@'FPF1kh*+2!1)FUffR&G')SPR$-J5E`CXXQkHIMpSdSb1U"#$
CaZ4b"1Vp0,M3+$Y09NY9KE2liJ%rTe"UZHhhKH4Ca+ITqbf%(q@CqDh"MdkMPA(
2Rdik!U$hp)KSpYN8efjNFGZH!RKTfEDZ22P6-`(J#ij3(b6N!YG3T6)p*%jdMmM
"UCm"(I(dJ4#1iS"aZS0BF8jee'dRr#9*!C4kGj8[e16P3KLEm1J$'6AT!jZ,ph9
)YHK#lGB1+-([!HkYekjVcQJAGKA5+()pCcT,iU0HbK'aJA*#Z)j-pdRKDL)+jAE
hGEk3!!#DXEL`1HKH4PP%1e#2C&a+e`M5,@&qD1lPk[MEV%Rf"am+RcY(Eh"mD[#
i+3q#*424$Ff86%+hdQk$Q*KGc+%dRi)XcZDEhL#K93SZC$HMHSkhH9BC[q3`h(r
NdYMJ4(S(cp-h!5XGTG$-R9Mpd%MXlD)1LM5klTiMDCjr&"mJ"Af$q4MP)Lj[P8P
mc@CfbBA*0pqR`M)6Sp!K!%1Dj3DQYDAq[Sj'B9dmQq,m([@Il)Sj@,U!23HiN!!
M39`-Qr'd+r2Ee$D$SG+FQND+-F[r2(-[JK)RIQp#%&%!bpBliU%*QkTdG`Bh89e
26''k3-`#@`+r16Ad&a*!hfiLqb8,@F9jV+J*ArrV)6"hBqIP+@CBfd9$0$(%I4A
S1M[Nj2pNfK6H-JLaKeHS`3aPF%R+3pjX5B%"2R1aY#"1#6R8'F6VR`U`%,3R@d5
X5FqCN!$Z-mrG1jGA"cqB0p''PKK4PGdV3pf"q82iAY4F2r,+U!f"'UK)K1EE*9H
)%#%3I2,fTC62*Y)DH&HZdNM@L`cEiCj8@"r2TDeKf6%mdN4h#LJmG`ALiH$'c,j
3UNVKTGHADp#1V`4A-#ki"ifZ1h1LC8*68qG-qf+GB%&2%d)pAa0G@*'"F(ZpCPi
pC11KS*!!XN4k1GK)kdENLTLbA&&E5J%$%BIrhj5cdQP@b6+l2P&PIh%MkI%jiY6
13Ep$mT9rmISp9e%UD9hDK$K*P,hBHr,0$["`eR#-BCJmPp8,qZ`!jjl9pldLL&T
dL[Ph+Ii,2D`ZJ2QDlH3h03NG+Q9b,9$B8L6*QYP3B%CCL`U!6Ui'mJM6bb!CFIM
a@Tme"G%a1U1iD[2-lB"6McpK*%'@,UAbGRNhR(lSAcelI2[Ha!Yk`)IRR8,IEC!
!qXaC5AhGj1HY%Dj15j,p(&''1cl$P$[aNDAhkSj(icIP*crX'L[Lph*PDf0+lUQ
JkCbl,"j[P`8-V8EQbr36k(jKE2`XH$+216GGAVb46kBr1"0*qd1BQ6[XkZMNk(e
Gi,@@51'2Kl'UcGmE!A(&"(FiBf%jbpeEe94iM%B2`i3D5([#JqLiFVTfr[f%0Ad
8)XH+[S3bTQB$rHI45&9hCK*GL#&YQkXMACqII*+rm!lH8[D"P3Vc)mi,(QrqDf8
l01*qJ(jYm@jembIBmer')'@Z"S6h%HreBN@[1[,D5FNk1DDP3VkpV#5dl-P!m&Q
G%hYcZ3+SSQjHBYPG1D+ZHH0R8Il2+E5mje[HCAF`0Gr8HK5fhr+hd3Vrq#b&()B
e[SfR9!p#kKmZBK"AV3@kC!)66hQE90,X9d1k0FFhc8U*'k1LfV$(l$red5iK$fV
-JSpN[p5j0@p[`[r'A'`[YK3jBNdX)jlJZVTC"f5c33TAHp0pPEe!3YXK)qZ1U#Q
!FNVG4pp2-!l6UjYZPIX,VBTNK0J4-%*F#82iS66'kZNJKahR5'0&Pq"`b1lS)r%
33dSk$f`ii-[Y&)a"*ScBj@FCI*UJZhFE!f$Uc`*4K[*KG3UYk'9c-bl)+pTUIDj
BrjhJ2r8dj8C!Q&qNY6l'IN4UbjUP-%kH&P2BccCIdF`4[@bFf""[@!)",5N`eAQ
MMb$i)F(8CKR[3K$ANmbbD&S0pl06Pq12lIR,dRl2+*'YYdG[L8F3*mBHQ,$bMm@
CHD13!2NbZmaJN4flB4chI($hRp0`R[%&@bSQT#hm1%`El6RC4b)J9A$[(L%BEV"
j6mf+,Bi9jFA%eB@4Z%r-Z)L3!%`Z09Rl$1k)5a6-CALrqNJ*)*N`!H8dTPR9L0)
ULUmM6bGR*8jeS!$!T3IL$)MPT!+k"U4qj2%S1'ABD0j-`2QiP0a#"i06RPa-#GK
YP@SFRL9D#`%M0bjffp3m)hFYfGL""#Y@9!*%PZajh4&`Lp"KbKfiXJf2-6Ve%[3
pNpRT$Z&fP'c$H5Imif%HCD9NI1XG11SGZ"TJhc"eU32eQkS'8p2VSf%#`GD-9@Y
Ih&dN3+PhFmKY-H1Xq6mX,TfDaF'GlPRGTVNKHN4V@0LAI#eLBa[GU+(KN!#aA&K
6TMrhr8dri+eT(rqTK#e&A[h"T59e#Ukb&a15Lc0M@`2FY"`kGHST8rbCB[G+$J(
U%f"p"9V'c-QMTMjUfdX4U1TB6i-U)-@ZFXbrBY@pH5qdiQFcZEJQ)'!*#q!$f2l
ZR)[A`E)R`D$3+Nc-d&HSAB[c6[%@ffY'#A8+K&DY-((11d5Ppa'deQ%L6SF**Dr
`DUVj4libVjjZ1qiPedJ4$*BeDm!Qr[P%F*iJLYk[qX&`I+hYeK""Qb9A23@12'6
!BQ-Lqq9GIU23&dl(Q3S03*liTMf1k%Tqqq9GE6f(PkT42dB38Kq"Z2DVrVqK"[Z
Ki$@ikHBJY4&V5Z2hBaG5d16!dU3(bY!LSC!!&Mpe9JJ8'5hB['R%rDc*V#56N`"
hJ[rZ[8P,C(F3##`!JA!*##ie6A3eNHJ)%cph,`Vb#B&!#CS0q5F60AhNUh0aa0K
k&c)Xfr*%laf$88V-QAkE5&A6L$DX5b(jqX-0!jmS"Mp8DlCK$'%U-GPJ0`(%G3G
%LDb#SpL,DdT&1k[G6)c&+l2"!5jRdJ&6KM$M8[$a-i#`Pf2DGB%(VA8LV(GeLU@
k,rUc)E5f*),Q[G9M19,9X,ja60QQ5KYbll%!Cl*9pprUjAi#2STPLjDfTXUc-)G
UD6cK)lGdNmcG5G&V3)F2[JNC@!4(aeUAZ6,GZ5UAm9SbR8[bPm`hkQ6B(@ZNL43
RL(`f02Na0BGCi9DGY(4Z#Brh83P2fcC)mZ8)PQ696YfZIh-0CSl'A%c%m$bFAjp
#JDB)F15Uhjj"1*IRHL!ZKN&8"apG1k*%XMY#qKZTN@iFZMlM2H4MRRIjXXm,-bl
5E8S(94*919DNccUe51'HSeS4N6F6UCEJTSRqcCQF84Fh5!%ihZe8144hId$[6RH
3!)l!R$eBKK)eq#bhMTC(BNmRNES5aN$iU#)5b`R'UMXbbG`SC[(m-E5EddS3mkT
BB#+e3AbZk%arR+NmJI,HIG*0,H6JDcLcB#KFf-Y("LQh!DJ2N4)cM(h[9q3cI*A
FrMIkMK`QRjZC!G2&C1XrjXr$i2QbNjiA-"%8mqd8CjNeA$A1hc'"iB["Vh,[h1(
1&a[Y(2AQk-RH65$kA-Me9fbPePUcZ5V!b-X4Z45@bT!!)[PTV8#CeM"8$'+cCJF
MY1%3G&l35dZ&(c+i'p2dAl5,CPi8lBl&@'EUp$D5%%3Q"e25H6V!DaMLpH(D,mh
!iAHb,L%&NJ!203ePUZ(9d8B&h8eX["@PeGA--[YHA)UVK3(D#iU63&S6PmH$j(+
FSj+rq6ch"4NUZ#1I2fKK[)0!F,rNFl9(1EiCq(k!5BNMI,0"J'0Xj5Vj22Nm+ar
h!,k5b$[,R)K'$r2j[S6HKi0PUET@LmmG4N2Mdb6'6%XAj#PpkI,%@NhT2VcL23*
1be048V@"XRb%YGH06)LM-jU#2rkNK,kK-qY&j$Um%dLqIR@DGQLDMR@+'@QVQ#R
U*'PE`@Uf-E)Ga3*f'TK6[(QU,MQ#(k%Y)C9!Ih[KlL#b8a4T)Dr#SjKP-Aq[UU1
+b+d8+6Pj8FI#f1mMN!#iRR08)YK4,kS0*42*!@cLpHa9BqcNf`6D&XC[3rickcB
b-0b8e[(2-)&&iQ'mFF1JY&ULlGFb[R-Y`3ALRD`"bh-&*kYGkJUl(8C`DJ2F0pT
1@f%"ZE*'Z@j6"fq)XUEGDMIKT%Ec1HkcT9TcB)c6jlXQ!bmaaPTB6@KHCD-MMMK
6PR03e@rR)IHcqLYGC"-8UjXpD5+mD,FJmfdQm2"`Xbik*j4r1e`KSr#,a9C34lL
`%1p0S'CaI!qrZ991,3@X4[Dc,pbHES[ki%1aA`YIF&IJ&IiJ8Z)8EIL$`[eTX!6
TJ@Rfr5MPJ@T9qLRB&f$a0'Qp#F95(aTZKHacpJA8jJ"$U-RH4aTAJ+2,@N"V)+@
'RefmlchZDY)c$ZB6ce+aa"(8-r6krKAe5+RS*jk(31diYX9BF2'0p&0%"H49JE4
DUQ+Z5'H'FQqqDBTC-`[QSJBieq*C42e132YL"f8h[aD@e#U,MX35Ul"U8m!X-3+
$-B@VN[R*Drj&,LdqlMMkFXFBI@0e`fP(AQMebb6C)ZM+hM@HFS*N*96VXIEDQ82
e,NR[2dDVSk22aLDEBZjXcEqZf8Dd`qKIU6i#B-9X8`0p)*HlGYe#`2r[PN!m""h
eJj0FKc`l&$V$D"pr$Jpb&bh#&Li&56fAM1j5q$ah[Y6Jq,0bPf#fXD0qH'qdrb1
SAXjdQjQS9SMZ)6!@0LDqL-B$B6NFF1P0M"2A3LX#XUqMe*2Mq#b[rBQLKqTNj6j
8Kmq$qbJTQ!Ni'(@T[mD$ph2YBJ1fJZGfKfUYlmTdIU4e%[NLdm8B4pN`2Z)hi4)
R2rUlaU4aFH"8Jdf3!*La'caiYIJ`(QGDNEfJME,T3dkV6,Zhri%S-eRSYG3C-,)
`-Jl!T)L+@([PkCHi4k-9"%)6Nb-i$$QZD$+e@N8Ih"ieUB[,JX3D9EC'm$5qJA'
2fM!0pL96!4)3$Z`2`hRr*Sp[E39(GeX*,5L3!*f$+Zd!BEfGF)Gal)(N2efPd5!
Zc"m)afP'%$MUB#b3!,HJ-0ZEpjr2d6)LPL6i-Sp@3CcRY64+GYjq'Si`)4V+8h5
RSCkX54b3!&e0hL-Q)q$Z%@jiA(2,DICC*Rq`l($Hqcbh"fS'k896BrFKe*&HMDR
0[Y4m2TCZm`B2VdA3kLYCCFZ9eM#@J49p!cGIalYXUUL!r9CrNUaD%BUe[B-+`SH
IQ@UHYJQ5#NJRqU(RZmG(0*D9X-DGL423FlH1pIB&RrPFDF3NXB-f9Gibq'1XLL'
4+fBdQe*)5%TerEJ1*(+fiCCK2AMM3j!!aj,@T`Ii1"cUh@9PPU+Bff0(8`f"G,p
dchAkr&iU-+fY&XVNDUYmcBfaCN4HS[*qH+SeEqXp%i9Y-4LN!9+bC)r4DClTI,M
mLUDQG*2NTNiIG0V&a6I,#hT%dC'jG$6B)I[VH4l,3C6VpZL2rp&*@d&Ah#0ZAlX
rjrJ2qVI[Q1AY[arXl!ZL4%D"f+*%PiC!A-9U"B"A$6@Ld0'fqckd4d0%a3jL"5Y
%fl'@Z8(q3"6(GF(NB&[q(TpE3ITflqQ99F6#J'FCk%ADV2`MGBciCkl"edAh6h9
j3V94&rEd8l8(3a1,U*k`G4F6!"mE))PlqrHHa(UUp)621k@%R@3P+VraZEQ4!+Q
UFDdb3C!!"Aa6+3MrYAeb1%$6Ak#-IKq6[IqLT'XY*Y`$K[ZGJ%al`j`apDiDfaQ
()"J2bc"MjmNZfmJ-#JUlZJ4[kEm5(rh$5G$9IiD#f04IDFJBpf&X[&Pc0q$bCBj
aj`jULfh)q#VZDmDYPAV)*QTd1"llHYJ4'!1hFH+S,HbK&4P*L9QfBJLI4L)[lGZ
'm#`'-YECKTINZrX1i#UlHD5T-0l9CVD*Rk%HQfRDXj'b&C8R!SJV(RDV"1%CG9G
PJDB(5h-(NFI&!0DVNGf`[YNMP@%#!mbNcUi[NVR"+A'Xf[6i+Hll*SpKSC9Yc4+
-L'+TQh%YJj&-K"(,aNjG9bmJIi$chBV*e2*@,ZN$&3cTFb(LiZNJK(`iSFLie+!
YrP[3l"i"pIpQSX3"-bX0k!1k[HKkTBESpI5Jhl(TF9A(Sd2TbCk`36kJJXf[8BG
b1Vdk8p*ZV!21#(+eEajSEE%kmVT+I(fPk"@(krq(%24if5bIQi2q5LAr2b)PB($
XVI1C"BSLPZBbThL#'AQ,J2V*VfIT&r"A&b-ibQ'F`i!h@QQJ-j((Y-qf8Pi-8mN
YZYBLT9CMcdhJ,0XT"(ZHi3F",`*K6Tlh&)j8VHGPY"fZXVLLMQAd%X5RKrb'VRP
1+$hak"5XqJM5YeV"jjD%GQ$qichj3(pKr#S1P1GUq1+eM*UK44N*i!4RjYQ'*FN
d+Z#S6Dmh(NAK1lqDTj98*GFA[,$cBmC*"IZ)Q+icG3#UDE"[Am-a$#Gd[K*a+2r
DLHJV,"Fd#pqK3I1E9*GX#[#keNU[[5fArC@X&#lkj5#L-Hjj,4A0[F*[$`1r+NR
9XE+FSF**`5Cc6dlVDVXjG-J4Q$Y1D5P1JB*14er,iXp38QfibMR5%Vm&'S&8KJS
#Hj--N9bJ,&f$b$YSN9e`A%3"RYGMcQ(#!ZA#GcL8NFQ$#Q&RF8P$-4DNYFdrDa`
$2bKaFiDB`9bT,260EmaSV$+rf)p"`XG0fB-1%UR-$(Pir0MLef'B)X60XN*3-rD
M+8e52DhMm1b[P0U(rZ2([8Err@TGDSGSHG1(EkL5p9Im2`15C8"!&VKPaL*!Ej9
"iX+@BFAl1)2,Gjdb"p*PS1qIV5HdplRAT"F@Pi@[(F@q$mlp,Jh6*lUSebq3!0J
dA@$$Ba%'+I9qSRbp*'*1M3r"I*E'JZiJXY"Je,J9FGUSHHT!P+qQ+EXBLL3@4+R
*a#mdLC-B9IG#Z+EFI6QR@E0"Nha,9CQ`fl*MC&F)PeG)Tm9p5B`L5%M6UNP9#P)
($qi1dV`-&Y*ilG%5UGLEb-3FiZ3R-h-lRPjk)4if[YZ9Kdl8JU2*RK6%'Vk)PSU
p@*j!kY1EFbe+iZ)ZU$8rb+D4aDL,-e8!,DCDNT!!dArZk18Y`NjHZCFX@1pIb%X
GlliD9J"`CJe*-UX$`He"B'8"KCJPP"0P5cpV#J@89&@AVA+&SQrUF!kbEDc&"0*
N$YSlhEQF!!'M5r0@,pZ5YhVX6R9`"5Ll3*+rk%fe6DC0(Le26hXZePX6B'C@@k9
6D6H[clD9[ENZSGV2b+rf&ZYJR[aGX#L9bl!pPbPrN53N1G#F&X[dE'Z,b6j%Mhj
X2D8rkVbQE-H8bcm[QLSR`X()X+N*ITRKTLjZ"Lm0$JYL%-ACZ55#(mFAqNhL0,'
,bVG5d$I3pE#m9T)IHcA"Kj!!@lPr0erjFbBI))eb&k1dX`"HCU`IRK,4KfhU`cU
Yb*h5CFX&FCDJli95le!6a0EbBV38B[YSBcI#3+r-U$$@-SMRUP4)8Be%q'Jhq[2
B1hVe3F,38jfJjf,12mM4j,LQD[6[Y"`qNISiHfH6V,JJXSKhiiHYGkSB@NrQL4(
PTQCQH`-bVp95pM*r*ppBfdXGM"9a32Q#TLkVe0T&SBQfNpVK`)+@b-fNih!YZPH
UjFG-a2C#$@`G[UplTKC5UKN&%q!Q+c1XQK"K5&G8c+ipFERp6`QQ`6,0QZla0q!
-8,"fSX'bd-(-!SR2$[!9PJ#r%@J@QmSZAM@%2,Y(LcIb+)6-,5bkL&epbr&'G1h
-A50pbk4D!B%Dk"-DcZ5J3)e#p@%3dpRh0N,XEXMJS*Sq((pLIR-IJZLhqZ!&2N(
J8R08fZ`Nq'RX`d$%a[Q(C+9"k-X$k9T$VB%0qMQQ@i@1,qZQrJh@rcShfk#6HZR
qBZKq)82dA*42-8B"Dc"1lHlbkp)bK9Y#2HN"9(H9[@Gp[8"#!"&'NC9TR!dkk3j
pF*[A$BrA3@P2ZD0M2S"qZhjj4YAqMA9Y`TrXK+V'l$iMrrL`Ae4,F6jaP(bN[%S
XB'E4fp$j5!MhNqTqH"5)SmhVkh`NKE2XUTp#`!E$F#B-c"!E!T@F-'`aIC1SXH`
U#E0[*,ZT@59XfGBN@PD(0qCcYh'Sb5&EkC@qGkeiKFpAJ5cPe@aaYFeRJLNl$I(
UkVE@qpdMRKIH$`P+)BdXBXTL89%"r$&H*[bZE[T&e9k-Y+qj@FEZQBfXT8)*K)"
Bjmh!1JEHhDG[GA)PIh[0dN2qPANDGmhJdKrm4iVSNd%1(X!T-L'VD",6@&"G$6A
L2C%9B1!jGlXX+Gp2VNF1a)PE$aCJ8jE'$6-l'BJl#(bbqer#0#h(4D,R6J25iIE
##!jm!Hl&'Q636TlKb8S)2Kd8PIB9V,TeZM(&&1am!#cS9-J3KZJR+Z&FrX5EEL#
-9#QRbJNDAi99!b#E"Fp@36H`e5-8TF1r'4-hT!2pjPI!Z1A4fr53!-Q@cMhP(!a
*PBTEU@IQRid'dLG6ADC'5B$2TS8Y2(,(EC@$-1dS6XGUe`D+,HG0!mb&fD&qCI`
Ih&,`[CPGJqY*3%)*ki#6)Ki0@a%-*iH$i[lMrUGR-dVZTqB3T'3QBFbELI469c9
iAKUl6Kr(YB9iBK1MqUqUXZ$h&9$dCVee5cZJND"qZdcmPeCTCPj2(TBI96C(Pe#
MBqhh9-6,Lj`k2qjj-BMEf"LX4V$QqiN,HZ3L0Bm[BMrb%5*2lZTPR+6&5FJQA%k
e*95*DT!!@VZm+5N[2`6r+EdT%prCEP'3!)-Xpff4jV$R8f-BRbq80!XMK93fbD*
kf6%2)+6lXMBh!4eA)A(D'jc&rJ(ULE@NRBS*3,SR(!LP)+BG*em-K%''ek!PX'Q
r)5SN"6e"e#X93ckV-8&JVS"-4N8JqeUDje603(hrfCDTC,1hR[Z)5GUH-AFaJJX
#UX)L[Qdei$hDE#cZe`IZH42!b0Z#l[RSH#9jl5)[E%"J[IGF%f&e[SFEqH)Ap1T
*Q`R2l-V4*b!H&6HARPZ+TYpZEj3'[I'j9H*S$*CG40E(`6G$r!9jVAcL*3(&ajY
l&(p*ULNaCQak&MlA[S1I-,3AN!"3XHHQTbBiIPBibSTj$N(q*m"e'EciDd[e+4m
93qf)!r$A-JB(Z-+*2-)PpZf1rc5J2KJkSZ&81fSk@TXj[GpL3[!k#6$V*LJE`K`
3PmXZ)$h8)!a#k-EqqHB&0H4fYj`Viai!3M"Y0aMldK,JaXqX#"jBQbY)fX0pk4B
BYdM4c0B6#H2rMiqc`qZkf[TVhV"4D@F(XdeIY"Jd40rYf[P5Jl,d`%Y5KJ'E9L'
lfGY%NX$b4b`aUZkEd&i-DT6Afq91A$)TLhFp-ZRTDcD0$QhmFThU0TNhmB&d#`(
YjZG1,Y*`R$r%P0p#B$LX`RSJ4lS,[-feZ@E+Gq"%aDl@U'J6SXSQ'54##1e8K3c
ZZJ2E8[5GV3Bfa!A%bMi`EL3G8qL1b2h3VL(cNd#!!jf%+[LND5M9J22J)e98(M%
%0ZQY[0`dKk-N%f+X-prfhe6heiEQTR6!FeeSAC)80kBcc(1`+26U[a'hfb0C[$L
$8UEZpGrp$#@J0EVfKhC"l'KKqH"GRdbf6NL3!1UTR"i[XE*0H@C(FCMdBM[C*'K
*('iimU@Pa@P9+,4$HdfcKKk-f@8eT1-XrM`FNacjbR([Yj[cYaV2VBE50m#([qH
BBZ++bPJ%S"3M)"%F(8#p@`0Ya`iTqZ8DIC'+Xc6jpeQKlXFU`9TKKaD%Qe9KhkV
a+IB*-KY2UXSplk2)#MYP1a'mC2M1M,YeGKBGD"'[J$N'r--)hXG1FYFkTQ&aj5Z
0Z+i"qPR%r4qKjj9&2SQlPSjlVBkUeXZYV*lr`ePT`T!!-50A"S264qIf5!4G3ha
)8pS@pp`NQEJ4mmq%PMh8J)rqJAjlf9`MiaXBqF2lF(k"ke2bTb,%1kR`kFUerm[
Gl!!2d'A9jF[,aNI14D'epl3DX1pY,8aT&m#cIIR``05T1qB%e*%)c`H9,MZF1hb
k"R@2DX)a`2TZ6ZU$cR@)BF!f!h%2+k0"5P3#f+3G3kS@k,DCqmMib-M'Q36'[+d
M`,d`9$mcLR"ZN4R61Qck9)pP*&YQpk)m@DN*#CB*h4K"XfF-2aF#fM8jr%lqJSi
d$R4IrKhjhpb15+'`c+EE[ST*pDr2YdEeD)TdS'b4[h0N2%SlSi,e5r-Q9i1IQj[
a4*hl%mX&`[2iM"&aM'%d13`cQh%%6$*Gq5@RC,ImkeY,E9#@i'l%k$*qQ6$9G"&
-GK9)E,+Tq$lR"BhJ"%+P9%,ZLPAIPYa-c3EArUb",HVcKq4I[4CB2C6F!I5q6a`
UIXLQb9dB%CC*`"CiB2APT'mH%ElpU3K18,)G0eYAi'-0c%I%-EZjjIiGDkEG4*D
Hc@[Fc!QQ(-4""5(hb4p$LA!&RF16(SGbIHU"*Z3@F1G0HCD3!'Ze6a*MCfFK"($
+M)kUbPLD&@GXKI+HpK46+(AQUG3dl&8DSaHa%3aLG8FL5NhqmY6@HXT[1r(6HRq
9f3&bj'aeQFCV6YRPe[hkmYPSLF8%B+k8KY55V%3M*JZ60jk@M%S9D1D2JQ3@`UG
bcY&UUN1Z%H8AXh[6DDcj9BTdP8-P918)m%6iblFkdeP(**1I#B,QkKT8JaCGMeP
i84SS[Gji41&(C``UTbY4jD09T@)!Q"#60kh0`AAq#(f,hM(0(iAG``HQN[hFAm!
ej!Xm4hi1PMmC%EB6K*!!0hLjaY4pmd-+%IEpQ!pC",f*'&X,TRdUK89#J%Z$`cN
cE4V&hEf-5**$UCeC%D"!AU)S$Ed@YN,9ZbqJ$C8&F2`b9bp&0L&))rRqZDcT"!5
m0*GbZ9+Pm%p9S'DVaTG!*!VbKZ[Rq!lYV04aZm!qi(L'('&LfF!,@c(eZ9mF'kU
&*p+Dm9c@6eL%[mk3!+Yp%Y)Uf0*&IFlk6Kf9IE60E"X9#rBr$`Q%L3bC@kk2dMi
Verp3d1'&Q,SXF$RIk#@h)GIVr$m4IpV8ij88lHac$AZ#8@U+#)')JTBqMdKjhP`
S5G2*'92jlr8aAaBA@4Tr(+@ZkdeYpZ%NCpbk(Y$0RMNi!HA'arJH+HTFQ9#N3Fc
&iMqSGr*idA"&#IF1aL2p5CAAme43#2dTpRaVZj!!4&rGY%lJq4,T`rbjAI`eAX@
fr1FdFG0T2"bQ%F[H`R$p09cb,&-"aCp,Jkjp,C!!!d%,%[0N90ZFSdR8f&eV!h*
@cSUhfa*-3`8$q8Nkh*8FPN)a0adpaTGj383fibqjC*!!59HQ0@KiT-#YHFc3hZF
q3PfV)FYka#'j$PY"!AEip'l$MPLRHb-irI9iACIGA[,3CVq#erTecd%jFeKmb1d
9#j[-[`!qr([6qre$@CdMPmLGKhe0SL+2`e)@q`pJq90LQ1UAHJMlS*,e#MFmY9'
0A2-G4Q+TmmSfFYQJSB4',!T@FXmSUFF[6FU``,e60Zp0DIbJ9*IfX('hq$Z(FUh
kX2@"VKBGVY*QB-0rJLS"$m5Vb[8JD[eqR9h+HS14ZkMMiPPJSe'Yq2+1["!1'jN
T(FPRK*jp+-VL!'"3M'Um[fcNI9f9XMF5NiC2(2DTrVV2Abd52B"l$1pBRq1CLqK
G4NE+C*S`bHlPSAqQMYPFFBiAG3hXAGK54*af(Zqpl+G`YPZU(aiLSl,GqCePFK3
i4A[kJ*V5Cfd9A!GeEQMi,Q$6X()aC"FkPRpS`J[8RaA1'8L,KAA4`N"Rm"+e$Mi
e2C1'q,TB1Qbk+h3"VBq'ET4JjV8phK*UH$Br3(E#pCCE$*jX8@Z0#H*%N6Y41j8
)2SLAYj)H'228dCDP('!daq64rHI'"EXc`[R!Yq%iUJdh-Fl',i[-lT2mZChP6BL
5j2TrD#41Qk5NXeV0eZaMc%8P#-jX2la3Sj3eb"Z`0#a1)!i2S&h(mb[fMcQaSY9
Iji4,RC+!4()-e6[Sq*%rYE#E,B"rp)I&UZUmUEQc!PFc8qhdD,14+L3l")@VZU4
LXMBXDK-eP12!HE-0Me&Jblr@ABbBQ[#+bSE1DJR!BXlSY&S"BR`E(HqVC04m,[F
RYf$4$hXYC00"d4J[4%&B4h*jJ$r'0Si+aR2jUi3rB,90R@memBM3*2m,pND!$YL
QXFSpC!kNVqM61(efZGdq&1-dmq-R-qf+kK`FFUBkIYD9U1DreeZhh6YGAZ5-Kdp
jp1fcYJNi9M#&&H``3UY,M*fhqIa![MejZ9e!BKd4L,'mi54q1Y"R-M1,LQcrKaF
1GR6I))Jb)e"(9K[[4!QG,6!E8k5Ei$82[A3lY82IX'(ZSi@5'5NfU5Y%a$SFmMP
brV1@RRYhMKfJSdLJX)P-iT@R`-GL#k6'#'m%LH*-Um%KqdM!pS+S@jL@jTX6*lU
e-LIRIV"c,`,8+9GhKFAU6ZFDKlDSJ1+&XIh)0FeDJHIQdBT2V463hI'PQ9,E2NN
TSL*c)NAIBNUN'EIaSk58qG4EG@PFl)hpBA6&'GHK0@IUZGdZPhqYL%CleaDAfpM
hEkCKQFYl$1ra[aa1j,cr&%j(S)d9h&hSSbEVXJfFd`"f&jE6*FTj6Zbe,TkN4Cc
!ijmGDHq4"(Qhc(,D-TUpX"[Pq+a)I*!!ECHfdp$%Q@2%q@hc1MM3)eKeBD#*rY4
jE"$QS!FJmSHT'hbI"VKSi(D15dYJAfGLN!#Icq!"kXk`l3cCDf(MpSi-q2Icpml
3*B#,djLi(VaCETUa`rKEYirm9*JZYRNN*iY0@+2$VSA[#&+T"X%HmJNdDPEQjZI
&$lk,mrU&kCQf0meQIV,f"YQXZ(PR[ShMd&e)P*!!d+0flk*EKH8r1ALMYL$eD3a
er2G38jD#T3-R$2$$iLG"DT*+k*I*idVH5%Pec[0LP"**0MHb1k&G#[8d46'",L&
mS4j253S*Ca6+plP"H6Z0DEU#Rd%-AehX%eZEqKF-B+eVH3DSVq0,P2QcfeD+V-#
&Mklm6,E'Xb6dd&fII51``iD(SalK&J32XZ*3PDjES+j2ke1A2MGa-[i2)hT9Si5
!6TqIT&URUjcqG8elk)1Z&U$TU0HaCPrB'ah9r#RMiN93&,+5)dc+I5qh@UbLTq8
[2Pf3!&-0rFFD106P'aabV$EV@JkFG2A`rA1*9jVT2Y42kVGRIefP*3IdU"[(IFK
r4RR@`@"*JDkQejMfH)*UZllGE2BAE#S%,e%,CbPMqm6Vh`q8$CXqYLr2"qG""fB
SXDh+XrTka#G-SQ`iH(IIZ[35#al1j$faBrBC*&6!AaPk4IFQ3[k0LqYaK'@@K@c
)AM@a(S0U&RaEh,(S8KYH$BJ1Q`IZ(+&m#c[H'iN55*a0YCLJi$SC,b`!@`5@YjM
bY+QX&@A%6L*JrmiPI[5(1Rp6BHFBEKV4*H0Hif5FZfdEEAI3d429%I[iK0V4NUZ
Z&P!#kPQIXdq5UcSATLqX#Q6+(p`!31V%djGiK'S+5Z`Z2kj[a'8l'eq8hT!!20#
kVCfImeRPf)r+(G-l*Tm-UBd&CImL[dSc*3NI9qV"j6N`&3[Til,GV0GX'N-B4I6
R%cacQMX%`A#jAPMZ4*EFKpiD4[JSKBXq)pLIk6+)FV0bDMdjp4[+-i()2r#)`9i
4XA(5!mZLbKpC*cda'#NScT0%Le,BN3$E1&qVpTm!h2r4(bHhpEH0J'km'0FEPaE
XRR062MiI$IkikUV3Y3c8&aqZ'qQaARb%hRrA"R9EidJl-@I"G+%kf@6h4)(83K2
P$&NqhmarREB+Ld-064eJ!f)Il1pk2YDhI(p&XpL,5NTq0Ic1cfSHIP4X(kk*)jA
3qkAE'`B2![1EZT%ZE+QCek12diQb'@jrLF,ir0ari-j#)a'9RE,dee&k,T`,[E&
Vk1#qBc2G9STGheIN32J44Ae(QV4GUMMlC@1E#L#kZEmJj"UDE`(YK[p+a+@!Gm9
-k1%pBda63K15I'$00AG910[pf4AL29JRh,X&+(V`rpa,[aahp9,AM2KUqS)23F,
()'2N6K4)i8DP`-#1VI1Fr*BS(S8KL@*IL%!"Y0q,',M,E*K'9Rc8B-qb'MjZHjF
)EklR-V)J%f$Bi[BN4DUP6p@9cP0eh$#4Fk`i,rH83CG+ZiDipa09LVj*+j,caeS
kU11i3,9Cb9H2%JmpG(X(1!8k51VFk8)29'D0XFkkCYck`re[@(BUmC!!fChjhXJ
[ZqLGq$HGmY"5AV#@h0-2%ka%%-$l8C*C+QTrkdqVAK)GFakZ,fP$3CIq"0RTUpD
m(5mcq#"Qha!T-A2,fBD3!"H15,K(Pma#Zq2-0-XP38$AX)+pJeiXecK9ele2&Hp
S,TqD1AH"#MZ-YqTQLB8AG)ar694,pqR)LlI[@%`@'*VrAFAbhPN1-lTU@$BXJkD
3!*P2&ma@rpH1VUPlFicdI'KB2D`2PD-"[)iAa9K2Hj6iM@[YI4'rhqBh#`HGJ*p
A@(ZR-N+LP4QfJe9D+qpFK[LI9d'-ZPG0Gr1kRK@dJYr`I4UJTMEr'8c&e3Aqhj9
Qf[A&%BJFFXMNf2M6m"0*NSFQf%6%G[9-R)#S9-Xf"G-(3VdAMp(V5P-AI,biah,
U05`HGA`Ac%kAhErI,AX$lAUZ'N#0i9hYC"5&`G2*6dCA#&N1dXT2fL$D@pXc`0$
Z'&j,)+'iRe$*AHY"r35[Gl6mYr)F,RAmE[eVEL4G*B6m)[4XX$*U2XkA5iFkE(G
rVD3Em`%VT@D'*(`keISK`mK,&9XEL2-!V@piA3aabZ1+9A6L-[J@J4d0Z0CSdl5
@5jR5'CCmNV'baZ1LjCb+X6dR59TMUVX25!Hi#J5KE(pI1-9J6(1Rq,F["5@2qC1
8lmf4rjjfX[FQ[#L1K9#EMBR'Qhl+[d*dr`AmlaiUSUS#N!#!mmMd#M'V,beIrqT
JbE(-Z&D3!'qZfj,b*[4TkREq&lV6XGZNd@DA`p[ENP9IYbZ5LIMD8,G#EefjVS!
h#FRiHJ"1ARdk9YqM[2h9JQZfpRMYB3J+r[Seh%dfGC!!!32#bm0MP#!mIAUSJFl
#4*QrDd$ZH`&MLj9$YUQp,4TBPABL+YRM$"-Xe41XQ(R(H!Mebib#"eXP8N'"Ei2
#PJm(R#I)1VjVMSfm0HPR$"*Z`3hcZfU88,+Q"6+3!2UXcmp"-EEN-QI+e9XG60K
1[#B3'(c(2DQ!@,ck62D9DT%dfcN+QD`i@cJieIjj-c[J6jp)piX&4mrHDFQUL`@
Lk+XVak"fdccrM)[',i58k5*NN!"ZV*XKR(SUHC!!VJmVA[qaUlCH"iLGI'I1jFr
UG@G)3c6A,mVXcrqV%Z#I*bflYXFY4!2b&m,PX*d1)@l)*U02e!c4F[iR@R,pA42
6c-Y)'CY+V`mZ2),L+LX&#'imA[G&X+Lp[NHm%S31$&G*GIar*S+fd!8aeH+SNMh
krTfhhJA905deLk%6VZ-YUbYTXGj-,q!r#*Zb5(&P1k@0-E"RD$D*E@Vd!2e19#f
81i,'PCqA,@e%c4lmZ"K)p&f#K%CkG00,hH9f(RHGQ%Qq[NeI(RDreZAD99mQ*L0
HB1H[8iE'2Sb8K,l*1j!!b2U,8G'LIRq2m$K'FDbb"-lX$k[h,#ZAcMAQ9eM%c)E
TJYFU&m2P4CQd,il@&2aN`@I+!adqF-$[b$`2DXGfl1BZ@k[MqNYkT+-!IjYpL`b
hMG"$2l`5@pDMlJqM6HYeLI*Kk61rXDB#4q$FhcaebCb-fLhHfQeYkN*b,0+(`bp
DC*!!(G,EfcYACcc$8Bii+)CDMBYRBQqMZp,kRq!YMA*6IVfR@U#ZSq-m24ip5id
ZK2N-0`hNM(Z$lb*2IbKj`epX#T))Ai2TkH'V"*J!PPT+@lj09&@`Q'R6[qmiRU'
QeY-QQ4Sm!ZYl1S0EqR$'%LDdj4V)Y#haL+T`ZTcAVb5lkH'DX@4"jFMclTb6icC
R34UpB$ibR&H,SITqmj1#D'C&3PA@06ADKYYRE3pVq3Fi!Qp3K"IRA!35Lbh"[$R
N&@d'Dm`IQZDATYP"6d$92k-3fdSb8#3G14i,rPZ#(jX-)AF+R%LGS+,C$!f6m!6
'43&CjadPYPRUpj4YJ(pjeLLc5aTQZCeQ&m[i,)9@XfcP&Gf&0-'TN95($D4TF+a
E,&$h9bK@"'*ji@+CQQ,!`I$Vb4,ZMKdlqZITZU3qcXpZB(RaQYaRD*3[J$-**8S
V+YG3fV3+q%KZ#9FaZBdZ2P+jGSQ8I@0`8%H68aeUV"r3,r"M6DFZ!EUP9XB6YQ0
iReI0mfIC%YPSqX4qJ6NpVI5CfF598T@)TA2&pcYMpGl"[9j'pc'b%mbf!$3Ir`$
[iRTES1*!qF-`i1a&M1"j1"r1PMqjij!!"bm@9C&3fZ[-0(qIXT9YJ+!44QpY!eE
'5SbVYkT#f"#M6(fYqS-%Xb*P,"Jm2qLclhR'XkG[Cj60`@-'V[(%MijD5Q5",II
AS5(UDF'kYH"ZcYrNJjHEDbIrBIP6j1[AU!Jmb[LV-cjq8$8!G3e9Kdr,rTfjmM'
j"8pkpYRiQVd$L8cArM0`[f)ciQ+ALVH)EcVhAPYiTQIIl`K6+N[-K!)cYcGcbH*
lL[)V"2lJMbZ*Mp+b)i)&QC2T5Br&Q6h4XLcEc#66FDM6Al*-)@lcd,+I"NTCi`S
!rML%p`amPY2Km+EBr@('"hV$ejYNjb,04eY(@13%p3YJB%GlcTrS+QiV*B2TT3R
93!5V!H#CH%Uk'`P!5&6ZUaYHf0qBAVQ1i9d9j-%cE%fNHLkqKl+*rI*!DTld1`r
I[EZK9Qi3Lk!5VA(2aT6af4+MHQf3!)VBU3df4Y6MXb2L!,#EJU1VEdJ`T@KAAqf
6TT@Zm%LB"f,LH0PLpSe@*TF2RSd!5(DF3@eBXkN$"RYAU"@HY+DUT)3)lDjUMfF
X$"PT6h(@r0QQI!S9$*k1$PS4ImIp4Sa"IVbZ'h)S8U6-l,i#bZIJ3[`R$pFKiAm
ekZ@&V2H!-k&(NM`T["mTDJYM2P94(jF5f1)+R8N2T6KiYfpfcHl)QURQl5"cd#@
lJ5N!b0"F16bCVH('6A8`flU,&NaM,XX4!0(I(m!qND1MHK2UD**)eba9!LCL9C8
iRUm[e-I@MAriX1F2!RKfTR0VBkCY[VLrYbS[HB)+2A*e4"*ThR20cUiC+qD#PK+
-qG1CENjh(3h4b8fKZFKmT)+pm6S1X9S[(CUbAGZN8*H1HcAHTljQf9HA%20ej!Q
C*Fe!8H[5cIe+LU&Y8ifdc!'XlY-YB&&laX6(,08BIr0)['2VEUP%("&mhV[T4jK
eQF"!MN(T"UH!PHp%`cXKJZhFUG5@XM[rq'5'$KEY@[k5$mq5("(0JP5612A%,G%
LeUA'*EV"c$U3!0J0C0eX1GY)XBkqRH)pX+j#d(MPFZU[hS-DTJf3!#YdNVI05iV
fh)-AThh4@ri'(cd!1ifdJ&KqCaK'e(!FAZ)`AdpXRcHJE83(3&PC1Q+XAjY5)`Q
9V4X2iZ*Vr[1VaZ*'A9$KZD,Y-qeNc*8EC1*@J0c6')[e@AVkP1*$TFCL9J$+UKb
6UT9)b(LlX5[eic&YU$pfB61U&p`U)29pQ&Hi(Sqf0cCqZcZj1hS-c3pE$PXD9iY
GI6LNPU5"Fe8`dfp&I%!#CL68'Z$MVELd"@Y*0)$j!HX(P6"+99Qi"'cbUpje!S"
dJjl$T@Gl[HVjL@T2Z)Tdc"ciHkS%,3Z))4"r$'r4e`01R3'P*BV0$c"FEVA!lLZ
fcp2rGfAQk*!!f@)DHqh2&qBh&3Mh6XiU!`E0%ZXfdQi3l!4VR90UdimLH33a*&!
CDN@l5iX*QAIRD*QfbfCqeNJJ&dV0Vb0#-!XQ&TTH9,NH2PQ8+(JerAdh86GJr9K
a`bJ6MKXD['TTf9PQ+1+&%Hf@*24LlekddRPakC5VcCGG3l"rX&6)4!@9,X'J[8U
$Td"*6",QLJ2DQ6j!5qj-0))@pZ5Yj(N$Dh0mq4Jff,@l@B@T$*S5[(&Ycf,XYkC
Q$)21IH0+m2'rF$cK6[kV@IY$K18mEq!iX&!i6YG%3SMler4l6V[,SS+CjB04E!Z
,RA@QGF-(paNl[U+cjNVCfk8C9U*b["f-JFDZX@KV)rcZ-U([J51a#MiHeG"*,LF
&ZJKaEBpZc,b*d1p+DFq8rZ*T4S@13%@kQBUHRaS!#AQ`bKqYMR5MK0!G9((3#Ab
d[N0e3k+[Nhb442q+1D"pQKLP`mI+)HG$+!ZpdE!f)!jEbb-KaH"V-(h2*qBBF*G
,eq$)hd4!jiQ%UbV#VJ-+4(GY1V8TC'i3+H'M``&0YK,5RqKSLab4KmRX`aQccH8
$#ajFNU89AbL`p$#!aXk!--B2)H(0"lGb[0i!M-0RdGY+)URCQ*XQQ[C)qLS&cFl
#jK&+25rVq8[-crb'K%$AY)m4i`TBAh@VKb3iZj8S)'Kc)q-mj&UNK[$6c"RV#$E
iRbM,(PaNJL[JfI0B)+4IlVY"PG`f0H#YKpMmXfQMEJ*bPNX#DA(bC0C-JSY-l6F
11k8ebH4lfrdqKI-NPRF&``m1HG-Tf'qD150$Fb[+Defk(jG&"LVcDd84ehZjEa4
N4YCIA-blUiK(3AQRAr-BTcD3!0jYSq@5X&*p*&qrRHqMp)lhXN('V(+3!+T!(9k
%84hGm4jX-!Se2Ud@V!%$LX,VY3[EQ%qaK#59`EYM,'aHK'%4@BqXR+[eIiZBF3j
rXJ6%KbA2C)![NA!)E`CDPFJYFQJ,[mKkNPlQUPm`aN6VJ9Z28l4h1FILpTc4rZh
--@e()F&9ApTb)pPm(Icp5X-2bX%SeMkHDYhaecje0#b,eA-kFj2)Hcpf-4G[)Cd
X`VP&,ip9P`Y)Dq0eS2+Q8RHHLa8j'%!`%b@E(,6q1UIL(,eJ@"jp1jUPTH!$I'G
KHm82plTNL5$eMH(6T31q0flr[cVllYFer$T$4k`E2llIqZ@IXB,ERGpialDd6De
"#kY"SUfJ5LI'"ZQ`UCMUAB#(4@@hKY$bqN"KNaPaQ1kY#6Rh#PL(8H-ATmeqaI0
'0*VF"!XY!2jQZ8aF-FNl"B8HhpQKS#"'hZJIPUMBPXfEh1$Dp[Jf-dYTHal`dP,
%#`FbZiDi4f#VqRr*!l)a++ep,NI1Q-L)[6m--bLiXB)!%#+k)9+QqXPh)-6dp9e
#6Gf(m8JrbY),D0@GaDS1IeS&$1HRc59fKIk(b$2"9Udc-N$%qke"fiqZF%Pj)6A
l8#!bpMh4riJA8dTjb6'`Pp)i(YBjqH(2X0e#BifA%HcAbj`hBRGQFMKjN!#5FV!
AefcIj3qj#L&DV0IF@k3L-e4&d,JGc6&M+'Nb)pIi,"l-b(@)LQ*YrrU`NaT+Y6,
H9Kdih!ATSJ$4L,Di,QT)P5@VMG"6LNlDhM`-a#U6U#cUTl,*mkiiEL2H1rBSPRH
k+$2c!CGYYrlb$'Gmd9`&+NK1YcE(!EYa)12akhC5I2I5Ek&BX'ZUG9Jfd0Y[!A(
8,-VfrZi"Jf(r0&3-PHQG9c24KXQ9FD-D[3AefZT1QFK0p"1m'!cYJDAVPGcE"Pf
rJIXVT1DV"m6eJGU)E+MSm4')&+j,Q9LQ#)K9(A+&K9qIebp83jl)TI(%`&Z1MmJ
238K,T&Y5rq)Bb*G%YU9%#aXCIK1`C(cHCX)pR`L5p'rlKV[iBa9QCE1Kek[i-SE
TDmfi+GKdeK8E,NhG$pGJ`(,)f1d48mq@T60iR4)&KTMXheK`GpdTH!h9!Q`#VL%
C-+'qaChk6a2+[,[Yfa*)p)%$&XbPB+bRh"9#f9dYhfDbeI1cbHl)c$RJTIcZU-K
[+C2eTVQI@PrN(eqe60TmL31UkVAEYY9&&+-dkYlq,p1L+L)FXk9k$9(G1aF'K28
!%p1@%dJTQSrceb98&[D2GNqSC1Q6pmD+62TIR+,,FHk2DYa6iX4-cahcK1@LfCh
H6JJGhZKcAehPccZ#qkJ8r0GCK-*bR)ic3lckL,qBQ0@G$*E9lMC9bRCPq0R9A84
$)c#`Rm1E,"$bZHTe)YE,hdUmGkCH%eUc8X#C"DZ`!)j89Q+d8c,cjf5[#lHDYme
h@5fDhB9-eV!c6LZphNI(#cF9)ijMm!Q8Epa-kFAG[$r2MSk9aKQI,Si9P[q5jSq
&[@Iq"#)a+T!!ei@YG3MF6%ppj"d%#Q3@V[Mc)r[LH@'ep&5Qp15H,J(&4PH`9JX
[[1Q*i[JfU[*mLaFJNS1IGPel5I)2EH`NZA3Naf9M$LlqQlXB)KCcKQKb,K[M$lI
4bMb5eYqfNh%km(R!X'*Nj`Z[fhRqaZ3e*EQ1k*3bKYR(2!De,3[,p9E9RUmKGbc
+R(V2j9NY,+XA&K8'SV+$k6G-YJFaT4+l`rk%$d&`ic&DrkbpbK@ic2eJGdTHBB8
TU%!e5mGqG-8!"+22M@CB#$2q[&pi4mB,ZV*dZZk9@%RdPURGf'+B8NPYh',pUTd
hbXc'B@U!BaBDYllLQkbebC@b4h+EBjD06DFd)5['*@!2JqMpA+0!Ji3#+9lj192
kNXl604Zkq055h(lBKHT*`Ff,lT0[T&H!l06@B$B0R'rJUMSX*B+8UceL!'6-f,(
2RXRU"`K2P#@+)N!f)R-,V%!ZEkaLa95%!N4i'CpQF+G*6XJBh&!%(@5jM6Q3!$k
2'P2!f)Y35kDLQaBqeiCDdD9(3mDbc2"P6NAR2%3G"Ck'mr4"6`NQ66USFVDrpJ#
fRB#Ef9Ge)K3%CEm*D6UVk63l9cpTP)SXE(SFGAI-894cq!q,L@C4IBdiB"K[pQF
1$2BBaXFiVXd8J1ak)Z$TpLbF@`,9LfI8FVc'jTRa,JRMXqr(4QQZ!1L@BqmT0"J
)a@BNaC!!#jXaNhAY++MrKkU$rEB5a4M4Cl9fVf+qp)+XXJc(iEZFhqV+B-BHN60
'Xfi51l%@6E(S'KC#I81EkCqb2KhRRMQlpM4Veb#jG8#+&(H8JX&*eNEfYE&&VL3
(bE0VAE"XTVc#r30),#pCPPB@X-0R+XKp6fmm(4IUATIq5i9RqQ#V!ieZV)#!#ZZ
lQZ5HqbZC2#pZhL(d`8ZhDLbR8*15&,am6pErL-p03)k3!2Ai6i6S5UA[5VV2I%*
JaJZmUq%GNj!!TJM+0A!F@k1ZERU"SFQ$q)A$C,L#'B*52`jQ[2-l#MjdYeqC2Pd
@HXr51&pmXKGAcTLC*2cmq!V(YH(R(''4F5-`mQ14UHFUhP4*cA[F*i5mJk`Sr2c
6Z3$k1*!!#JfJ'-p&J,4GS85Xk+N&)f6$BcAeP'rra3Z05$rIah[q3B8b*c2e(q5
XhpD$He4MMT*l$jP)+r@4YMRkkEm6!Ge6k50qdp-IiMIed[0,Fm550IS4eIcdFpf
eKA-MLbD)GaqR)E@`5Id2aZ-A#*G+9MKh3pS)kJ8bG58l0b@dl%"pTS8pSR41j9j
b1c9hpcIbaBj@Ah4-R@(,3KC38qIF(PIaeVCBRePDM6dl1C0B!R'4'"ka-J!@&2'
D)6kM1RD$+F[FC9mh*q2d-jrc21KVDI"cZX*&B3#`T1UfK5BfmK*F8'E(T4NeSYd
1'a#'D3CD(k96-+Ui#9M8NP-Q&+ND,f[4$Fel,3"9h#9&ZafkSqKC2(m02X'YE@"
N[5d(4SN`9$Ib,ImF(&CRlh33ejc[2,"%#phEcPa8*F&#HU%hASm9-LBYDe26-&2
,530R0G!8Pk2G5TlY@XQKcHiH'h3'VjPjIDFGECM[Ce`fJi)5)b#2hEe[bl@aSV%
,,SSiY2q5QkfRYA3P$6h@h`'*Jm*YiR9ID#G#[Lm&`r1l9[i306eSV1"p3&jf6`E
YB4r,AfQf90hG&',"%49eGlNXldMYQ6Gk2cE3)%e-'&BJ"H4c-Rbrbqml"%A(6I*
jG&l34!VB#pUrhJFRG[1-Vqqi'9jc#Mj3B3X!eEMA8pk[c+YAc'P+ENDY&5IPM+P
1FDfpdb0TChDP*fF+[Qj+C#-1kq0"rGr50*`0qZd`T,2cZ4*KEiDd'NA)[&TZTpK
Db-!4pC*6ZbYbMKB3[3BCS"11&IZN&51J!!,cV)-L["p2hFjmGTa-G9%&jYMbQ-e
rIA41Z88e-N,,3jRhL'rEX5SXql6"!XbGTXMm2H%'Q91N8rT[&H1EMTkYld"9%X$
erabZd$d)m4F,m(Zc)&("Pk#pje!2GbSU)rrRE)a)6m&Yb9!GPM0V0XU9)M-,Q#J
apC(C#'fC'2,(fHd6eHIT1m'DJ$MY*"4,Q[2i*&@IS)[E+LHa#Z-j+(pEYNEPiq5
T%+G*GKC$f2kbm[RLeA)2mcr6%McP@B`,ERhi48PI(GUD4#*aXAH#46m2$lK2fR+
$&HH)!EVMQ$l)KI9cqjTIbZK1qpiYd-PM'@lR89(P-l4lPjH0PcJ8Ma,ifK&"2m9
MEd%C!82FUY2@5pl!MBK)XL@6l6XTepGm%L[U$2B6U%S!6Ya%Jp%%c#e3X-BVR@-
[(($29K$ITQr*U*H9UE)L[GpEmAj2bi!+ChU9R(GZNJhQQ!AEP5S8GPZq%6([CPj
U-&9'f6&9@*[M"X0FcRVHAb3VS-P6kmZ0a5RaEHe6IL#JI%GTBiDVDaZ-Z2Ce2%p
H#[mi*3CpfRB8(5%3Drh$TV(%9hYc'6%$aDXrE!`L#Z0Sp4XP(9'9aNZ,5d0@h2E
2`cKp6rb&bb!0XaC-R9p[B5*Um!l)LRY`YMJA2dY#@Tl'Cb2ad*'P1HYG(!F`iG&
i!86XkT'1f'PcH,khl4S,)l*FRZTCYmY0[+*a5iibkhEV&SXp(hfEF&iJV%qB3F5
-B,GBE')G2Q1[$dkRRQ%fS`d(Dd)@T1[b)%Ep,HRJl,m&k!4EV1Q@G)DK,if$KSh
jHYZr3!Kri[80k5""[2"Rem+Qm2`5qr+G-VRA((j0CRXhJaabIVcY@RT+-f!@k!l
qQjUjl2Sa-ZY(9LXc5+&B9)2#J$9Ml2Vdp%U`LKC-dI,$jMST&TH%M68YK)(rX2r
jRcJ3!h6Fa2L2r+hAULT#1'0&%Aq-ZS12YfBa98e94eE#K$jEe(FP!"R9pG&B0[V
T3Am@!`S,2NaE8FSBm4BRPc65!4rcNDQP0Ll*c-[#00ed2G*0RZ4N)SFGei6k[a+
5EVil$YbbC+mi#qA%$EXXQbmb10%e-Y8Yh["H$+b[AaU+3!Y0B)A$m2KC1q(,4LE
2P@KK*jir*'&Yrk*T&Yrf9`-4BM4Uh5%hM4rVaQQM2Q`-[@0(`,h"5kYLd4d8!42
VII()BYp&remSSDm&Yr2"d1mi",)pLH2U[U@4QZi!`a)QC`[[eZ(PC3ii$I)[#Uq
2dC4F#EGbkVS3ip'ANSHK5*9dBSS9da,@S$-Rr-hdriT,iI*"6T-P4NqqSjEcXLc
q%SEL(5+0(F3aVHUbe+N+c3',)!9YQ$rUMJYRBR8%pfTQ8pfb19&-PD(J'dpX%)M
2'6&h3)B6$E8CR5adrV$+4'QCiX$'XQ28HZMXV!K$TF`P!SmbJHm4d#k%DMdZqAQ
KCFY-kdQIQ[8[#V%q2qiPqKHDJqNcSJmj1#ZYm12AppU6#P[kTDY$XJF@(@#@+GZ
1f86*p"Ua1dX`h%IkjUck-P0KU#jT1C2'd"`IjYERKVfm'h6HKU(TJKJ)qQ)BX@d
(c$cBTa$@XRRe!r%B`ThUViR%M"8J0*b-Z$#CE'X"QRT`&m4a5e#%6S3Y5iP&KkS
jF0h&r3+JTk""9VSiD4Ra"9jE'!9$T[VEV-$3LEJ2F56kjR[jHECHpN0@e%AeT*@
rMfSUMcT8#"PUTd%U4HE6ScKFXm3'P-RIIS,+f02UIL1)cfqamb'8,r2Z"+ZK'3#
938V`m,bM5&Q,4[l@U2k*h+pf,+13!!3-BHm!hZcf-cVC`#TRkj!!0a*QKFXaVm(
'453%KI#r-m0`D-Teq`2#5*[Y4Xc(YAZ,T@TBN4N83iYr!,SC8[Gk1p")T-I@',H
!q@ITRJUV8L4()CJ3(api-Z%I[Q"M(SSZAJ*8D$V"3fjkh,3l0bA$#(Q9rjM&0(H
9G,K80-)(JiPp%&L(M6()qa"8P@Xjd9Y*9&*Q21H)MBi[EZUbA"XUcA%RUYQ#V*3
CqLJ3DqYfc%2VLq*e$#J*$%0qV6N%r8Ql3'-f#+FBDj'LSTUj*8HM*h$FDph%JZl
Ml'6-PHTc8fQ`9"*lVG61ZlQUifJFQ6Z&hhU1DQpF#*cpJidQYGU`9Q#&j#8KSI'
0LMFaHUS!rQdLR4`!#V#X'pBp!MAc!cL8rlpb4E"1+4qBPE`e'#JA,!9UcEM&"`F
&Y#RT8'f-CjDEQfRkbXDEjY6!Q"I%92rTVjCcc(Ch'ZD%h2GImdb!Pc4q`cD#%#[
rGQKcF!P&*mI1AZpp3ZP[e'4d0")X#JMBRjFUa6`dr`(PG8%SqTRr@pAmKV8!DU'
h#kF[*2hVda1m$e+X1H4q8TZJh--%'U%433e1&V4Gr62'rQeZB0%Crc+X*-iQf6H
@8$2QhKML5$MkiK'3!*dE#UYI+09ir-pI9('Ah*EJVjehYEAi58ZZ!&QVhBV@Ubm
+SJNch#XZ$QUNdVq"66@6P)Ah8T)(13M#,pCA5GCpbFL*TY#S4kT6Z#[m15#m4!(
50pU`CdNQ+FbZ+Ebi)0G+%Dj'8Tk[586!T(Pdm,GEL&@NQ#S-j-VdBl([KrIU'U%
3ZC&0EMHKXHZFaI@-qcjFFF`p@[G$"BVe,![l4(SGei"1M*E,ZFq4L&lED+Zqb"p
$)[GdXfLaS*2#P2FD8Bf(*rL`CbI,HN3'5!RI!1P*!p9Gl,35!YJrC0cM`+SP@9[
GA!FI%b(p[#Ta%#aj9EDjj6#fakF@hX$-"VHr+a8$Kp2T'hdD-"GFa5S%J6jBmkp
)a!a%XSqFK5jFbkD"'M0#$EA[XFRDDZjaJP&(RJ,G[M`#b2X,qKN@-5GIJB&T5Z9
SNe-6aE"SYmPq'5CrU#0L[%dGbiZ%IR4VpdpQ,SmU0Q@A"*0IK(k3!,L*L0)Sk$a
+JEX&aQ1R9iCPK`JQ9`SmmN-ibV`PXX$GR2YXDZN&6%fj@Qe31CJqFF!iF$%EqAe
c-e$e@2A'Kd[FYdZr14MJK1RSKY1m@dafF#KLSmpP5IQmfQi+K%pc&iM#)j0F-hl
YP[*b(Ge%i@dDUZ(PZ@TVIC%QmFLE#iYdCY$M56SJQ1eqCNpkAd)`2G4fL@ELG`m
#!mra+-'j5k3FGJZB#hif5lcDCPf#f[(GArhEflM2+F[bQ69-)6M2+$UA+J8ZlAI
!"GTXL(ac9R$*GYZmBpf1'QXKipmK,rC2dM)AGaGT*DrM,Ded-)9r8hH*r-Aj*[6
D['DLZ*hm8ekpM-IQrbR!#e9mfJSF9p"Qk5#0DC%5ihD2`hr+GNd5bfrQ@[91&D`
f"pmJXbQA3VIla'5bbAX#4Z$,q6%6%CLihDA,49KR##%UZR((0&bQT,FJGVJL26e
@G-a2"eYlZ4QSb25',E!J)%LA,UAG8'[)Yb)Jk2AbIb6Z!QDp)Tb)#ipd-#ra"C2
lk!HmCSECq2AVZrH$U#)pblDB,f!A5lZN80f,fN-SSR%Lrmf(03T-)3Ab5kTD$Zl
AXVJ(,+BrKjIqpD9$Cm&2VE*eGD`YbKD#9Qp6VdNP29ZK"`cad@&e@"G@4kJ#"ab
!$`BKMRS",@%"Yk$lab,JHPr4fph,J+("RGV%rp,p&fRe*`qj`A%#6I3@EF&S2(B
fkp+bMaNf$')jQr&@G[8LHJM1Z&BRR@M0"m(kr1`LB3U4U5hieVI1GSqalaE(6-#
h)@CiZkCqp62[rV&@B$f4Tdd"9Pj*h'(0S(Qif9C,26UAATI6"e!SE*mLHk@bC0R
SEp,JF3QFZ%N#Kj)%E-ZiC4U(MZ%eUrUT9!aVPie2)XMr)aBK*aU(1ESE@l`P-ER
fb$IUI9Lk%24+(mC&U1L)FL%Xe885FdMUFc#X!DL%5E!9CURZI*p#U`paEHcGGQB
A5X5b3Z$ArbdCYNk4,QfV-R!F2(qic&&fkY[G24bmJ-CK"`HBKNla(`rJ8NqU044
1EdTmKjdPb$h!$jMX[RS$JT%$"BG+pSbD9RCj`Y2i!+`Vl$m2PYiQ*"UpXCLLP,@
f9L2b,L+6CrEj--YdpPDHflD&GM$rT-#@QPJ%Pb$PAm-#FMNPVU1QkTK-dRJ`'GH
5"N'Gr[VXN3DkN8rkcCeH*[pbUl4e(a(RpZf00`IN(G1jK2&XKFXh!&%%R8YLQCK
fDfhlQ%XU0[IFN!!MC[S(dem#*0m$VBX'Z*!!(L"JSd%r,rP)MJ1#13+C8STiq8*
2T)@+BbSIB`@*cp%"QiRlc9kQ3d,N4X[kH$!Z"M`rGkKS9*eFVZE)1BM1X`Ak$jl
LbA3IQrB[9)Ih9!5+!T`bKlNAFGi2iNL6LiZ,kBNDUH5fe[(3ab8Sl#'qK2k`4#&
iQrp9rGUXcU#2cY,$SSq3!!6"PH1L'!Arcf,DQ6C(Sh2(p)$Pq1B!$`C&d(4eG*I
MF+$ZL9[[B8326C1SH4X`&d$R"58+eb`#'[K3(cUHbLVT2DYC'`X+k3VVr*m,K)(
,3c$JfbMHQ$pVD6iLHRkm5*8"b`Y!9&(ELjm3plHPI'VY$bS)KXD$mVdYCk[B#kc
!BpIf8p(#mZSGk!*h(H"Vq@0P1kAGQFPdDAf$Gk,Q[D`jhK'A9U4&TS60*)%5`)8
lQ@0e,Im6P2G!2kdB%dH9"mm%6lmi4R2@MdFrreVh1blP1CeK,&Hcd0i@TbE3,N"
K6FK+dYqjcjEZ)Bp4qTLCAP-5BJ'EG3#)SS)q%b8$k)N#mA"@8#SSAI&CMAAIjR,
Id-pJc6,ffMffmNTI'1rlEqM2cabT9+*,X"BcF1Mk`h,eTCLXmk#Ai$d+"YXfAYL
VU5lkU+#kGB&`qV&U6Ef9TK0[P%pQ#MacEZD1r#FZT8qZk5$TYl$6hb"MI&0ib5Y
Pa-1XrPXLaS[1j)[Y*YeTp[1Z1(c,&R'Vmlhb*&5%Iq'5IS@X$J,I0XKm2hP"TB$
#I0e$*K0)aA$amHNF'E'hE)(5@%Z%d9M`jAkk"%3`eP#`prSN6[4--4N!MXBYXr@
8MYf`AV9r(qEU$3,5FFNM)baFUi&HG,+6Vj1(6"c'UMkqhhre13AREPi3Q-ZrT,V
&I[*!%lEU6Z$6Jcq228cR*XJ$)ciJY!lThXHb&`cjX*PC"iP`&APeU6HC2'4-M#I
")`5k$MHheIimL"'Ml3J1228HRD3R[#e!)A``&i'm,3l@jC%VKp4+fT5f(d!@Rb2
r4!E2S1HFLG`J-QVLMQ6jClm2[fGUkFIJ*4S19jJQ1f4e,pXG`%p)&@d!HAJ6)NT
5@YrViGPM&+S`qHUF"Jb@DXV-Z$(I*LZCdJLi'0MGbTpq%6RHS5,,d-mJ-rjTl1R
YM'Nma0f2ZGdEICf1I)jH#ppPl$-V(I`Gc4i1bJ&6`-5`1f*cFl"0D$NdU"X"`E@
1DPhMMc+Ek)Z"4$A55P'I@b&k`8!JJfVeXYp%I'$,hGIXqZ43&I$[3S`Y#Z8BfCM
bV"MZq`VJ1a4AiE6lb`lZJ)2DHS'"&+DliSVEq8V%kFdR#fQp8PN"k!k!qSPq4+e
FQQ45MY#hl,Ejblbp'PNjJM8pcKPf+r5(INYS"NSkpQH)VDbS`8,4*RRe6NlA1aE
ic)@j3-UdXRAT$1B6TRQ-kQ,iR!kX,(RE26#k)C6E&haJa'1kmYP"NEGIUrZ!#kD
J-J*V#a*8%(a!&8cpUPVY)b1bKarJeGZ[5GAcYYAI(d[LU3Kq%GpClPl20c#E6#$
")IQ!kPFPNp"%HCXr1,C10#Xl'`Pk'T2j,h2dMjcJL#`i&ieYS%ci5(p*4IAie6-
%jMjd%'3Yb`*Ma6'eT6BmK*Z56DDbkbRpi9)fH$!(aY#M4M6!2pfq`*!!E`bUK4K
"jiB,6HI4)c*aPi(qmGIeNBp16j1,,6`j2"L!@f1kM!4TX5c82DU63p"2GLh)C55
-V(-ePiVFmkl8LiJqLMKjV)",EhEFN5[(dAi0-+B`Vb[di!42QFp66)TbZ8(-Q&Y
qH+pG$KFPAfR(83D)LF8BE@!UqL'+(ri'dDqP*l`INE#0C6RdMcj91p[r`ALmD4M
"j#)Fj,Bcl"[+ral9Bq,KL*p1pl!Lc5$9&0cC9CUBpYdcQkeVQ`dEq0-qc3NPMX[
%C$XcX%&eMC2RiED*d8SY3YLCH[$XN!!5R0F8h)c[)2UL-B&M6Q&qSIYeJV5QrLa
4%3IejK'(EiK%C&Q8[4H$RqSL0Z'cAH%[Ji+%hTi$Ve2%B&8qCcjc+(M[RASa6``
%0Z(G4FAChV9`j(#""@VP6![B@S5[R#fEUUfJ9Xa-I6YHQ$[ZJlQ$Q#fhZd*j&Pa
$Qh#bkY#pF)1k*4ChDBRi$THaHKP`[""`+JNU()BSIrXF1'2qVXEI8lY4qLb4KUV
BZ4EifM6e2q&dQaNKrq+TKUMqM*!!SrBDfC*T"""H4S6hebh0l!qeU(p8'aLXr0j
!Sl[0,iLqcB-%QDkMf1aARKpMI)DY-Af),`Jbc@(m&RhAZU'U4Z*NIC[L3eS2T2S
RXqNqi`&ihXmSb5GI&,C!-RqX!*[SKAJTRbl"XAl1!'6j8fC01hp1ip3A[GQr0#1
GR6T"acGE[0VK1(3hfl3d3XZ0,GI5h,%cL[ElV3FUM+@QP2&'[5ZHDP!mX-'b@eF
B[5h6l[E$L46aSkhaFCHP+&D@IQ@IXcGZKQajp0Dp&apD8@3H+H!+8TL(%Zc`AT6
kQjha!GAB3h#iZC0q*BNY+6akFV9U[[lX0$kZQaq5f*LJqD@+S5E%Q%L-&)`$A&+
ZjYYIl"[X4h26T2[[m[-`BG9R2bGk$!GP3qb,QX8PkBkTM$28j6eI8ip'l$-c4r!
0-@LfeM20McK)VI%f-TElp5SM(T,P&'6`BeT+39mZiEd19Uj[%XPRKR3!KM6LqdD
3!!i0hSDTQdAP"5`0P'rb3Q)&$5YqMKL4Y"a&2,YkZpS3rCap2NL-MRccj@UjDP0
T(rHI5Bl'la1XJ5ZJbhJN4V#VRVeT0akHSfYdS@Q4KC3e8d36SH&C6kF4#2EP*dN
!U+81Xb`UI*&lS'iiBVkX5j6*+P[Je'X0Rd1E-Z+18aRFFL+#k)FfYP3S6P99`iD
KF#*qV"rlHdeCfkDpY$$h1FH3!!jPG86C1dih,iNZpT!!cmMc5ZT5$%6,l9p0Ud1
k3arT&qkadA[jK)rhhCQ*(h9#H3BaKPHEV[PU!k66*94f@4qr+iNKZb!K3P+j`1+
e@dh`K,9j9-R)9RB%kja2G!)P5j8hAkZ2*BQkr`Ab&0,iJKb@8q$$BYCKZNA6b[A
eN63pKQhRUGS8Q*R06Km04Yd)P2FN-1cUU&S1IS[%ZLlkp9,@6GZq@TrFl8,"+J6
8AU5B!IA%mq`l0"6D,1K66r,ALN&1i"(P-@Ai)ri6M#'5P4qRkLS2rh6lFFTiIUQ
q4ZJhlVSDMY1[!eH#NKhb9[FRBF0$S&LjVjT'BHK+UE1f@9Ae4Hc%HQ*M)JGES18
5+C@rjFm00Q&C(hN5-YdG%SKHbA3Xm(&a`9&,(&8TZPcLQ$e+F85GQbk(fi@"Pfk
e1`fiLNhFp'5Ce,IZ(`A0YAZ8pL#jEh6-KReHrQ1AiNlPB[`ccGG1,klKr9[hYK#
!lDpCXI8HJ-N9'#Th*bhLpf*T1map8`iP,!q9DiILX!cbF5l9rA2,a!K@jCJ(`Q-
IANe&,lYiM`X$BhTR'*i*ES@R9ARfIeAfe9Y`M')`UH3S&pmXl2#4rQPCVd9IQb!
Rc*YY@3bT'R(+Qf[TkPSDBRq5`21@JB2I&$)IU1`L1BI`UXB'XZPSJ0V1h0rlXBr
papEM35U5e@bLBCF8m'DhXir"A4c4%0`56iipr')eT$e5UV4L6S$+lYE[qe2H%bl
iM*5SAkKS)AiP0EfDGV[46`aKVE`cj@r&ZSV#r[ilIQbZZH[dE#5a,eQ[2+T69f1
!)ljL1+MlSKkMI4U)ZY&LJDI2"FVaflqMa`CJbpP4EK2RHh"!&QQl)EB&ePZ9D%i
h$U!*%ppc9"8Ud6P(R1AJ"P&bGedM*3*LSTjlleif%a@[ZlIf%9Vd8)6GFV-R%D@
f91PaT8IUl$$K,'EMNij(EHNQYShD+8E+M*)[)XMI$lYb2Q-+EBI@"Nj"f"#$br)
PpI5m9P`ZTme@+4H@aBkj`8*'kVX2!@b1NR!qJJ6*K#0H12CV(V&i2!d*Em@hf*&
#R@6BGk2T95B,QePB"f@G`12(`i@ecQP%`d[TM@I()`8V0kGEKZ#*MJMSSIQIXKN
N@a)Ej@p8*j*`1f'CBXl3cP)lQX9!3!eCULP4NY2(X+X'L2)mNd9lZMYF%'54pAE
[-ImR53NPeTR!,+CkS#UY%-D6&BUEClj@'lX@IZhZ@-22LE@FNAp`mqJAc+4%YCq
UT+f0k5"ATmcE5XL%V2UCITY`D$0RHX!!+S*9CTpQEkpbG[N9!Kd$TfmiaVR[qF+
bpKAX#ZL&%Z(2)@8-U&Qdq)N$%bZX+&Jc*N9B"$V(fVKXLC1MZDmpeip",Yj$43q
lU!DN@R!hK8SS66H"e'qRrB0%PH9DK+c"85CLiC-2'44*iTZ"iieZ4jLIdUDM'rK
4*eSd8UB&T5Z-idGA4*(Nqc&-[&PUi,NM9fMS,#K+%NabIK315RERE%(R-XmQRAj
HIk48F+)[eAFl9r1UQb'"1@q$N!!243'ZHa6RHPM[mb[aIC*e#8-T-d1aJ&-bdr+
f,EU#Lh&%VU)KP,El[CYL!(HhhH6H8,h&h!dEqam05(P9NML,Fa`Y@QTcm%MeJBP
IQ$q%p8#R0BT+5M16I!k!pEJjZ'D"M(i@dB&TlmSGB2LA@AaKJfrUTpbFqA+-p[Q
14FIlKfZILb%hf%Pp0fmEqP!mc0X,rX3bC9d9YTS0H"K@5ZTAVNiA8cKY#bBLAr!
GVC4+SE(dR+Kb5*2J53EH!jKL13A4UiDGT1ASpY*!jP$*',Ud4"Z3!1B-L"2K-Lm
1Km2UIG+dQYr1!b*)pTrprpbT%5mBp[-5Bc&G68Lj(F0fVqN9"A!a2BL$*HTFAYJ
C-)jJD6"K&H,GaVh*@[%SL(BJFrD'JF'&'c"49`S3FAQV0M-q%iTFkFNP4%H6MI'
FX9)NUl-qUfh2UPGNDISY)ciHaSX%5Rl9UAr&4L+'F5HUp),(6D9'Z3k8#,r8)-a
CBhFZfY08iYK!pj!!T%)(-h!IR5kaG*@a3@3bp+$f+)aKSQ[JLAp[2U'ijB4UMqV
8IFE[I,LXXrlkBU!j`J'56arbE6DN4UUFQU*"B5Kci$)@HhXc2SpmVXaL1b%X82[
A,F-V[M$XNpDXd8IT+XUcjl93!l9&(+Uq5UJS+ASSCA[4d6ID&N[KpKp"NqH5m#J
hr)k#p9X@Y0EK,'LU)`h8Ci$hi1cM4VAM9m[MSPXqTmPjA[JmUCa(U+0lb8[4#%%
pR,j$jL%pEm'Ei*!!ILkKJ32B)LG64FZ9SKQSaTE1eq&pahDq-C2rLEZ9Bf5D-XG
@#bj(*dR"@UjqGkF(Y&kahU+TFG&b%(HSAcDE`,ANHQkFBi$j3ZM3!EbJTcG-X6L
R(8eh#(hL'95eV%hPNc-,P+)A!l&+a#RX!KDCB#K1T04BH-'r-V+ld3SEQUN0CcL
S998VFY&IYGY%dkpXEr'em+DR8P2e!YMEKTT9MSKQP*!!mS$c3U+-U6d,bN90-+@
kk(d3*&AlXP-BHH1I4XXlKb-rhE`M"%MG#3SQ9+'5D((r"!)[)IRdmkEmmZP-Hj4
(B2ErUJh6@GpQGi)Ve-p[Xlm[D$q2445P`6AaK"&'XhNA(+#T@"[i$01IA#3qX14
hlFU`9#K9TR`ek,X(N[8Kdp"CP1efj+Q6%4TFd!I30L#4jFJ'!mepKSk8A01fkJ$
qiS!S@XrXq@dm5#K6MZZSKCaG8dI81pE(hNIDQ3X5[Y99A0medL0IbYlhJbNXLSD
0180RVLQ&kj0#$Nj0dSTi(lR&%FRh'[93JNCeQK#6QNTS%L%))#DU,r54efPjfT!
!XaeC+ik",Zkb+@"YG3X+KA!k&TFK)&llB14!B+2ZM82LQmh[e6@!Si0SFMa3Bp8
HT#'0RN+@!8*%hILBY-V&U,DHkA"`b3H'lI$meAqV9b)qj[I[9N+ITZQZp)c"Fk@
&C-U8-qq(IcE"j5#SV6C5UJbIAAS5fj6b-DIeS$1M8Rl&-TEP!lUcV4JIpc2`H@i
#fd&0JC`&dklk@f@H,%mSU5,k#'#46Q09S-dqq$J'kAdGr3XS[0H8L0i)RjZ0dUZ
q[d&+lM`h[(5([)K2#hHMb@QbH-4EF#*8ZVEbRaC)Hq-,`0A*RKIRGRF#@9%a[h)
NY#U-NHlBd!!kD5,Di+-HS31LQIiIVa!T8-dCIN%Fa*5cmQ[2*NP[5H"CG-Se!q`
NG+JKkK!1'(m*q(h,-bjR8"%cY6fGE'4[*JV%"@)16E0R%BpPXaiNi"!c-K%E"Y5
M,Ta,SK4hpKQdQh%3+GrD#lf3!#$01CB&dI-2VdiNR9[*lXZ5Fb9eqXHC-94+Y-c
ZZ"`c0AP8,l`&AB4K0-i#3,D9+#NZi*XK(UCM+X$0pm`&,lebY@&I,V,JDh6lEBT
p!Xm(24S9RfkHpbm9hK9Q`#e'%CZiR&EV43plce`5RFG$dE1J-S`B@`N@UKTUUL,
GG@J6--`cZhQb"YPqEG4'UMA6r#"5klDC2mBH33(,d!@,,,f-AIBlP0MIIdl@[8R
CF8CpUZU@f[9H254qB-&X[V5Z1+hk$bFah')9&'hJBpFi`CEdXc9%QcTCB5UCNJI
aQVceX"1KfkQZJUmZ)pj(L$aSa*0Q@Xb6QAJKl93!@FDkJTmiqd%*-+p,p+Q8A-I
90JSNa[&9KV#cpA4-'A55YRE`$XATUDdlkm8#*)0SF2R1E1QP5E!FJiQ*B1-baU*
G93`0V*NbB(Lm,ffb!1bLQY'%SKB,914bkRJET+'a8[Bd-!TQb1kq9QHUdFqAdAB
H@H9E-D#f`ldkD&&"3mD(Uk+R%KQaNNjUk18Tii1EH8S0`Ebml3a4mHCL+!JcKcI
YFMSclTic!F(-9[r-k,$-Q3cLC60GH1dH0ceHP&R-FQpR%L1VN9!crQH`pIG+T9D
(FaYiLd3)[LQlKX8U*M&0p@AA6leFJF$+5rfe6!DMTNVC&eVZ"U&BTGkjrRpC[B)
!)PRTFlJ'hH&Z(f#+&kb'TLSkNkY%bm%JF`JNh5iCXV@-L$QFTI+bF3L"rr,H0&E
`"L3EJM93"MNjZ'+'%A53!)Lr*e#0RT!!DEVBQ!l9irL%q*JfCDJPA`R)Y,a9bh@
d#XdkPVpiZhY(L5LQKH)[VP8Z'Y5q9#J3eN@!J99S'*6FY6jCPL29,!VQp8PSCGa
ia1RAPKhJaBMkj@aPfL8TN!!4`V6E2Z@p+`RJ"Ji`@aVAUkFf4BMF*1bIe$P&E@*
H[Gf)VcIU1Qk%pXp,r5[%DEZ"'U('-jYG['rfikEare(DEK52!mNB[+`BpC+@04B
Yhf+bXb4Zi61cEcN[NJkK$,FN3`02`&PP''h385[mm3J*f$[[&9`)-#G3h(C9&r*
iXA"fcE'YMPNUbh9*a!PIcd$6N`Z[8m90jbif2[cmUQK$HB1ZPEldH!mmUi4K&Vc
*qc6DqpXJ392G4%cX3,4XmP8bZ-PbYGef,2CfZN`3qb)ZBb)G'K9TH8LBJ`H00DE
I5-99'qHB"hNF11VQHhQpLfF5"VjK9YUXpJl24A#LL"2H6e@Y[L3q`E1h)-K`qBh
9P)Q,&5e'`pG5rTbmrF-fcq@,KE!`,r$U`+9[j",K)pB2kFHjQC@'2!BTZd+Zd83
&V$DmF*!!#lpqi5h$E0!k&ff+a3CkB!IXE`Ak'rkb!Ij5p'mGSZ+I"T!!NjUPbbh
k#@2F1YQ'(e'XCZihh[dJap+#(M4$`*@r-2ffkYTr6"3Ajd1`MLLCNlQdA(Xk"6V
llP'(ca&,VK5lU12$BSR96cLV!FhQbLPH3bJJ56Rf-99%+mX(SH!Q*[LNqBCBBq#
`jXKmflN8L!9%[[`!0X&,CL42KM!e+4#*Gi"QB,0e)Gi0f*8B4'2l4c-),kP9CJU
,bLN#m@!Zk9+*@B&CGQVT%pkeQBlP2%LRSrmX2qMATLSpp[m8FLG$@$M%hkk4-@a
UfiJPT5SIb+S$!2CmekGFVcmV643$m`k5+$aH0XmB@DhPiLBKKD(3#E['GENS`1h
KIBqPjm&E,N&[P-B@1Rc+Y#L3!-(lDL'1#fbK30%&(eZPiplA[eLFZ5#Pa8)@r9R
)%,q6,8m"fjf-dXr0mkHAJTMCjRLV!&()%N23'HX,-e`VCG'ac#M)r&@(jc(UQUU
5kA-IM4ZUJD-P$VYkL@ZQkmf8D,DlHIjb0(-S+K4%hGFYLQ+hC,MQ+il","6*d!)
*@SeRXYB!FZi'c&QPk-(f'8D*[L+UHKmqi3FT'8"ii5c#d$Y(kEMHMN3UDf2%adi
KP2PB691QTK)bK)Xl@&G4IaQ%@QjM"")C$4Y(EUQK1iD4YLlIYk6q3IdZf"dr"@a
1+$SYjcE%20bdDL'5H41`lJIGcKkXU!&dT8jDe8DCT[RVC%&FE+[`[a[SaDqF8%6
&DSLHT-[pcSe#aPAY%1&FB'P%2TAl(dTL9[FI[K-V0fd1S3VD02Al""4E*Pq1U`%
!J6iD38Sl0!ipRlaM2fK3Z",e+,pM[JA*m1Jj0qhYVG&TF)(K#hkqhefVU5'2MP$
)F!9FS""T66!eJXXmTGjeqV!!+-05YiX1ep8)LLamS(fmmHI0,$+YZp1rXh43kXh
9*EX[IaB+5QT[##qfl%Q%)qlSeDUA4(k`+(T((QeV[R8*D0UB3a6L$fAa[A*5lM!
,Nq@ca)9Yp4B+TN!!3@9S61E5"5NjEN-(MV@qN!$f-#NaSk1L,-Mi1VHAILZ,TE"
YlGk+DUJR3!M)V+I+AC*mI*q-cqTH2Hk(*&lDXk[J4HI2CT!!QK9T'[@f&(GJlc1
6)Z%JVS499`L,lLGkDp6Z@TLcBfp9,%mH@RScV'IN[e)'L+bkM9i@Qi04p30$`E4
`3NeIX-i#'LU'b@ppCMF`QeAk%MKlP4TLCEZ@V+S#(kfaFiq(kh8ZD(AbAbbMqlc
mm'rJ*$06!$)-%9p))TUC[bF$@@)+l5GFieP68*-GaBP1ld+ihR5Ce!lJZiUXfST
EYB3[8""%kbSH`CkHQpaSJ8+!P[JjVEUaHE8P1*eX1iL*ZdaGL*0!'LhpKh4Ai*Y
N-(C9jH&C&4p[Yf@)f4CVjP8C-8a)YJ'Jc)kS4hrBMUZIBCc+fYpYK8)*lH-&Xjk
L6GT`h3jK@d$`H,pCaG8$5S1FF$NU0mTAH%ZQ&lN1RY!0QQ#a4ip`%jJ8$5A2b9d
if+X"-Hjmh$KT)q!$r-Ymm1fX#q-f8QNjP"9aY&4JdQ3ErJME!"B)hRS,P*(hI1)
bAJIdkHmfb8K`5k('TN485mU)CS0ipL&,ZLYD6R@m%8eCQUNheallM6-*#`8F-'K
$bc[ULX62J1iqXAr&&-3jDr-EDKM,@J,3%krfNfpR*E%c9%PCP1eUk9H8`hGdi[T
C@cai5N(9ecQ%fj8BqETP*[3AM&91CqA69pXSq89%df`UR`'E55*qYN2j4*1%P$p
'lQ2P1#V"86rm&rA$AcmlJX0%Vr%DQ051Y+5+Qc#$5Ea41dJbETeE8MafBGF1`5f
Ubec$VMa@aar)ZAB2dBFK9ek#N!#8`F'$amX$!cRjhfIL)5TIm$rN'(!*m*fK,0(
(fGl`LH8)5jhp,%-KHLpp84',E6LI&3rD[BF)*aRVZIRcG3eQUP1`lq"#13,ISjU
L)k&NpQ8fN!#mPkeJ*Y"F5jiqU%P'M@I*9f4p*!ZD5Ai9mZJ-0b+iPJpBcC!!5G3
MhPZ[F9&8ilC1EX@HcBRT-'Y8jE%X#rE8Tr5mXSMmdl&bc,+H)ZMDkS6bkbVMMG'
LV$R'q2&$KNp0XXcL@YJI1lpa3cVVB#(d5@64Pfc$4cr9F,q-pN866KqZY4jR`rj
jGdHT`$Ifhd6`V#@Xr#R46)F5leTDL!V!@3fmA1hBC2b1,Da-&e%Nk91@fFF2UGM
CFPF&d2b$#B0&F4ZpmRYQ5iF2FrBmX-rZH%jjU[l'5PmFdL1c`i6m0ICZAaDjTR0
+#Z"5`XFeDjYNce1&QdaMVdhQik@8B+*%2G1UV!c4$80)1Yq",PhlNUJa8DKBB'G
M9*f6323%'5MCNjSR8q9ZBfhF#M)$8fFQb&la-dAr*P'fk-"d$Y(!L+6@L*P'kS5
PDM(NUP1SM@'THXX8rE&T8V2C9ef51HqJ%V9EpQk62&3*+(*JHc,6GUl`F&3i9bC
Y1lJ"GJq&L`UD4*j,E(&T1dC1p"KbJCRZlB`4k[XJrlh+IV3`TiSA(iLRd&FAcqr
`k(Fk*CD"b*!!8cLJj!LI0DCBPjALE*,E-%$'MYh#ZL8[aZGh0*Ab@*!!aX!FDR'
1a+'-)U5$[5l3Ejjq"*L4)Mb+b[qqBmj(HkH0dX+H)mV0,1X,p(HRJH2l@(LpkRH
@"bK30ldamTBIa0X(ekBRV3-0NkRSSIGmd4HS5!B394[8#+L)3VA1hQXK%j3@Ic-
6`*5qaH9%Ia([N[3PS@NT0(0r*X"BH-hkMFQVG!BmTU0ahr"Pj8f!0EYI4RD(#Xh
'pK(LA(USKE@Tji1HMCa-UE[mBmj@i+UHQ!%8r1$JNc@4K4eBYiJA2KQa)V'TS1V
%U26592!qc1HNADb@ahR`fLJ-eXbPGlSR`Dm`)J!D"HG@l#IJ3(9#c%@0&LH#F5R
QBpIH*XcikbPV))Pk)RMZI,1HqUJ6$cG@Z3'8!Q!"S5mKqhKZ0BUe3ce%0NCZa-i
f+D[VPTaVHr#CQ-`pJ8QejqSL"6j)9N4pdMPQ($QCAl46MeC)Q`ma1,*XA&Lj*kh
cYIVh+&#1cY@B@&%+ZX5Ck&"aGhA(L%K@bd!+##&52iAUHTP*-AJa-Tm*lI5c9Pa
-QS65bkGBY(9E*Q!H6lR,d@9#dR8M16XSjFNDFX1+Ire1D(TY`GNH*(FU`ITpRP2
aU*CF40KDFNXL)Vkm(!r"$Qd"5DaI$p`6m+fXe)&KAkHC#q6m![j&&(IkT0pFBVj
RC[Mc9c0mc"GlbDMK-"d1If+V,L3#IQNIPLph@0rqJD"VMTQhI1hb,a0!8iVNc4Y
c0R0V6e48Di(lQdmS&"ae#lTpP63$NSe1#2rLEkXQiI,RRbP$Vl`!4VRR&YYF#,A
38FfVYh!RB!HA1GaU)8[fHTj101iq$VU`KY!J5MI'IM&EC6JE,1c6REFC#60VLG6
ECNJYUH8EB-GK-CCK&#-`2RRehBH$'MDF&AL!6bRmk3Vb@lbiK@JXTE69-Y*8ibl
$#e2Xdh8ideK@p(&650kh3H%2+QLL&!R##3,P+*qhCfAk-iH)c6HA!+lPNq5h4'p
6YNCrFL9eTR+a[EALmJ+MV+RNl0%d8JV,VrJYh)8VqFAhC1fH9$K3TLj+qHb@4TM
+#Z1KdE&KMJ`laBM[))!iH#)S013U"SbGULGadaIjPD0pQrJP-q*V4(MR5#HiVJm
m*G46cCI"DddR@e#K!h+rla*dEp%'$p&f1cR!9S0FhQp(P1[bXb5H"l)if#qESb1
6ZF*mC*1jcE0!l4c0Lbh)bFNj0&$92QYGbPl5K5%PS,AB81$Dl*+Ue8&SUpk#ErK
&kEPA0YUCk*!!0CD[X%1ET,iB[[c+'3SH5rh29USk`''aYQ()e)D"E(mbm4*jN!$
G$"QYEhrekr2$Ae4G#D3p"Xpq#lF&9Lp'!E#+Im1V&If6TH'a8D8BX&*4E0r#(qf
[8()%JZPdc6i8RREJ2S,mkHe92E9RaclhP6Hel@FZ$*D!r4TZY,#[5CcS08QG0(#
h94"Y`R&2bE4(-H00p4cJr)'@Ic6F2lq$3aY5,`*X+$a1jlXjY#leIAMAD*DTi0F
N!JQ9@5ijbY+T@f@'SmjVmP5qF&ar`EqH2Cbp6p2ZQFFTK2VG3Hk4Cq3ilbmGTF2
P64kE[q)@V2@N2IId*M(G)9XjRBV28p%$FmLcQM0Rm+L`H-KJA0ST'#'eIP*3DDH
kY9$5[YLN%!MHI3E@3F#VrkH%QlIXpEGrGeA8K4P'iI(LMMGZ)1dlIP!qjif9,(a
-T`eL*JLP(Pj(TkSXK9a2G8YkQ`2R!j1ML0rSCRHYkFZ)+ph#cYk3!#j1i@!()f-
P-T-$!XpTP(JaIjp'@$[+c(U"4c@m#Q9%bKahq[F[H+[4+f2%YmqME-*dXkM08%c
09p%$aCJ6mJ(K#X)9Yr[(J@eeCc%(Lphhbq)MG3ZlUaGC*qN`NCI6JRNAlSfFXIC
8jkGfEl'N,X5re5Ad2,r!&DDEb"mVm0Pam+QNN`1LJ8CqG[[5!qfkZXc6V[@S0f`
K"cBT**(lMfUDN!!08iQ5GQr)3!5Y#9Z3!14$UQ*YcjC4+kIL90,RK0dVBcDdj3h
k42GcP+Skc#5l5HRaLT[`[*j12'9`Um!iZMM$X`(*a3HYpGMR3fYJLQBhihJJG8X
e4%[$5C6MfNASeNEP9pdmN`&b@%3'dpM#XVf%`hHX#6FZX0)1cD15a$S(a%M&*"i
-dC)$4AMdYXSP5J2-a6N,F"N(eIPH`BFR[(GQBq1d+hSZZr%T#TXSEQ5&"J68N@!
XDPlhm`lb[9e28L!Q$[+fa@AESa*G@9L8&[#mJh6K6c3ql(pmQ"(Qcq'abiDEBa6
dGr,"#jY[5(a+9JhmPrR9MMm'Zmc1b)lHSM5UZFI(`J#U4,fPX#-GDYq`SV9R59m
fDXlp`DNQ*SLrVP0F5S'BM'eV8$@HN!#3!%UmI1bXm%"j4rQcUPfVQc2Bm4KpYT!
!6(%+'j-jPrmp'Lq`pJG"A-2$BC9H@b'BddXEPY@hp$k&8e`YUJV2%ppf@CR(eK+
ke!rNdfKjH2LL2`rfL%%$ZJClh*(I+TP(MUf*Fd1(qUMTqf!M&UQl$PSLR#fV6*b
IUf#jfZSD6cD2E1)m)cb%#JcH%lPd3cE"EV*E-`Sm"&T[mG'8"$HG8pUSKQ-qBT3
fm20Iq&6P"RNBkTcBc)&SmF!QrH"d%T11'i,SdpB$XmYDJY%MK`+H)3rY`8J`dFR
$bD'Y$r#GjBl"Ii8'eH,QQ3MDQG2(-qYjfm#cqGE0MP#V)eA$06hG#SF*PDXSj$*
G2#hV@VfI-NQ%Q[#8j4CQ8r'ae3l!bA[dS1prVaL+ZbUC14c2LFYbc@mA)HJe4lN
Q6qi($kS(N!!Qj*GF@ZkLDA)rTH9@Lq+(91(JQ6ELafm+I!apRGhI'i)aJaPX3fB
YDQQVa[)9)V@d9h"!G%pUhc%j$KdAh54$pcP'iS)Xf%AIp)MYm2YhlPb5Jl4RRE#
rKf2HB+XUB-%2N!!Dq2cJ02T`@K@ccmfk$miaE8P6aRV`9Bk*AXB)-P"-JT2!(3D
![E,ZE4c*L1ULd0Udb%ar4G4U[G%dmc@rhc!2Zc@QJ#rjXfE8EQEQppZVe`%&*`S
e`U!&qAmR+&($ckaG%aL568%m@ZR6U[5fGTUb6mU`)cJEZCk9m'Km`QYPYa(eB,J
D8pr[+fTS,VJZK0kX#YJ!RE!&[fI(ae$5HBfD)GTH5R$9ficifjVil@E9,0b[R@m
YdJf-JrLHh05eiS)L$IPXR-HC9Ci)Qq%6qqHkmh3i,!AN+4ZCD2CMSpSUmPCR[EH
E0-'c@*dBAC-(D!PjJ10TD!BPT"rpiH3qaala&l(8f2SUh1'MhUKj5TTP,ShAG0I
6jQE6G'Rm6Qi1I@&Qeip[EFlQ+ee1eBCm2Mr#"BAmjqTC`iYXD#MTP5P6Ek%QVI5
@80(A-il5qSSZQjBr+QbqD5NM9j%TbLIQH&KlZ,qTYLkQ11ihDJ,bPj`kpG9KD11
rJ1-qdS`SbkQDPj!!-64#EIfCD'[GUkPq6*!!q#pA*+NcCj'-CEj[C(P%f))6(J)
Ze9N[kJdSQLLaBUl(VPB3b+($L@!P4LY1J5K20eAHCmc[*+ja)GQleqb@$LFV$ka
S&"bmlq54I3$6"&N+q41`hiUAi0TECeJa+JJPd[5NZ1C*0`$5d3CB%l'VS11G3#i
QS,Y`'h)1*)9qMeX0Fd4PJp1bFCkaiM`cL&4qI[*[D9qE[VeMYLhK`k'-A69rHKL
m4ZhMF5T+lp80aB(J9dTb&'mV8*cc#9&(lc"ihCf*m3[a,1KrkBJ1!epmLaK&lB+
IQ89cf#X9,KF+eM,0frlbm`J`S#YJrJfN[eT#ZjJ('9p[T*N+qNSN*rI20*MrH86
!91hS'T'rhHi1K,`B15JTr&N**+2e$T`PilXT[8q*m*aGd9HN,DG,QjV1iM0pZBH
+6D!RdNhppK(A9Pj2B,Bh&d(YpRmmSe4UD[#b,k03ZT!!4d(k,`V9Tba#0HlCJ%C
#6XUd'#m$ThZ5$rPRHXJ,FL*$ZaM&Fbh1pJ'J!ap()-l)%qq[XUF[SNrFk'rV1q`
a#b`8bA!!*dH$"k(Z2j)Dl)dX@EUcH+ajA$,A9jfEld(AF[d4bqkb$Q5AY6#@m,V
KG)!II*)0cMpaA8[MrR@DQB@#hEjSl)f[Fq306mV%D(4DULJhiQE%!5C''b$9@k9
-(*,JI`3$5ZBHHh[8PcS[[C59Z#0a0EfbP,fK'MY$)),ba6IT1SfB`BhrA*X9K,$
`P3b0qhPGkMEI4,F%KN!jpBdj([kNCG4cY#QYM1A6Qhd@#R""''YbRj%R'AdEDB*
+$V6Y1%TfYI'(VB"Gka2@S64UXV#j'eRLVcSHJ10#`CDGd[)qXE18hdf[mda0hp`
rJpdAQa"VlT,X8d(Haa@09Tbb`+TrAd$5HRc%Q`rj%Rl`K&!18+Q0AB#l3+QZJbZ
(cj6fi*hr(a)ib2R#Y5@$eaUapI3D#IP5Cc-iGL(TNSIhc`1UA0V`M*!!,h(N)0D
2adZ!3LH$aJkfFf2FT5Pai#03%5Z"VQN9)h8Ad&jaM&&*L93K*&3b(b8rEcrr@3A
a&6SMCTZ!h,lRi*-m%CcVVI"+UBViHPXcr4YY[p0%I!352089J#EmRk980fE-+pl
4RPV$UUI$E1V3*SLP4Mj+0DlJ@#$VcqX[Ra!Rr%4[eUBfHHDDICU'$XR#BGDHqIX
l+P'XGkjK()EZN!!p6,rEhUDU+dD-+X*)#4VhB$6Ya`04ZV)dJC0@45VFA&i92T!
!R@`d`LqqQ53YP&&d3@UGI&#6f&fp$+N+ZMbYc&Y09paHAj!!dQ3#4hIc-i-K+@9
1X6IZ-+UM[`)HGV5MNLJr-RD(Tmb$ppeCcII@bJe(FS[4K-,c#c0el#JHD6c6Hk@
+mjqaY"c(c,(@%2Y9LF4(5eSJh!8!el8Tb+LZ''FMMUp-60b)"$Mr,C[kk3N+JSq
Ll05H2lBLQ5[ENmh`rrGd8$6L[,0V-ZjRIP'-GI&fl9CkY0Xj!hq,0F0Hp%"XZhN
H4iLTV!HJlk+#a*pr+PpV4X3U%CH[GV49@`kIkJN$D'e!IB'KXY%HZ2+)rRUCRP*
CM!QYQ62`4kj!arU2U0L)@QK4'IJN5HJ2&0l'U1CpRe4GeL#@8l`RFC89A)lNG4)
ah9i8hA'03r$5'haFG`(LP(hSqb`hI'FIG5FrSXH%feTBiaV&k09kchpB42kY%aY
*!@!b0+d,'r+IrIc8C4SXBJmmei!HY`l&PQ1$"PH+%1`G*'kDfB"J!(B[L#Lh03a
$[jZ5Z"J,DQKcc4qpBfI629Ie+hElP"0e)Gq@B)6eGD4&0i3AV[iJ!052&#'6N!#
4E[SYFD,S!i31GCPj"@!Q'e@ccV!3`Gm'5If(bhPLEQ!92GSBc"&mcBp6F'B6*k*
'i$&J*eNp+fDN[R',C)4ErpFeB3TY-'Y"VKXjPRr5bKmVEeFJ0Narc*DjL,TZiY9
IdrX#FmI$d982(D%I4j)e@SlV+ScE'33FjYB+HAL00'MV8+M(,$eG3Gk03lZa@`5
3!,XQ4YR#%FVZV(1J@CSKDAl#LcZb)#@iKYTPl-j+FmbF9TYkeba&A'K0H0RX-(h
QhS,3+#4"4eH@30Xk,FQRjI%&VMT%S4$))aKkM(UX3ePU16XG0C'V3pKDLP5eJTc
+3![+'rIr-pU!@qcUd8'Nh3"VqNTiJ4UT&$pkh(Ue6cRC'"ZpUN0IKJNIVh)k[,)
`B4N3mJHTaS$Y"@*c,q[iIMAJlFfrQUHXqa5#0mjLaRfrKDCc3VD)`"S0acZSaRf
cKX44*8T)H#P!hl$mFZHrF%&VXf"MX-`LqdEZ`d%YC1GMU#qPc@#dm"[#G*dH%D`
5`h6fSf)b,K`FV9M"&*[b"#E!1i`%iDRLGKDCYde8PBU"5fjjPYQekrh'l`D#Cbj
r`9"P0,MCT"bbb5b"DR$rYECTQcc4Fr1EpMJXQK+RVd(eE2rTI!IPNpRDb18QMM0
IEc86K`'!P-TdZ9b5A-1D9iM`c+aTK4plL)hMhbGUY+B[`)lpJ@N!(8U!,e$a"h0
[kEmVN8HXdP(",AY,C+HQIUUbI[l186'#e-Rl`SijA@dU&T0[%)S6P2b5QAHiT8i
M%$N+#l(L`@25%KUj%mc)83SbGP++F229qqkfUpmqZh*U#EM*fleM#[c6CqEri-k
%AG)mqE12K60kIZfaa3iK8F"'0$$aApMU#GMi08`fI!L"34SfrT!!KG3`mAN!S"4
IlK!5m"*Zc'jTd%qjjZ%4S60Z$#Tm@kQTUfiU5JZ3!*U(YXXCS-@hPbCRfVDTXcY
l6CE+Ra`-`ih06f$`!"!9Q%iG,69fHZ+6[%44h[94LNiDPM+THhIkeVf&NlkBjRB
STLhQD!M1NkdJCF#UQ2C96i[fDHM1p3'$3IRqPL2j8C34))@RrpZ--Z34`m9mF*F
(k-UA1b&f16G6ZBf2iLc[L9)A""i%'d5GSE%#MZK*)i)J3KQP+[Il(mY,)6Z2d-3
KkH&$XRr5$C2+69$ACQMS!&fa'$@iYYUmk51qUM&XcR$E2k[Cd2$dbZh&qN%Lm`'
#IX(em0ViTrZNS[L&-9UihXmNbJ)&X'rKCrHIhKj2k-I6k`C'P*!!(!2UjPT9U99
%9@F3+L'GQ1)[-AjqkcELYUT&V'!HQ9clbFG&U18DS4TDc`lQpBAcK&[LrHG@q*r
(QNe"D$h++B99NBkDq4FAR+jDa%5$9L+&%`$&8$99rMP8F##F2c0kFB86`#`h9c,
'-*1I[F$`I2YL-,b0U+#LHpXZ)`-9LJ#*BP(8'MNEJTYJR(fLDZi`jPRKi"SQJ@c
63Aa49k(i9D43dX`[2Q),"b%3bFEhI[rK5CNh1fjAP'fYGJ!EKPmQ*imcm)I-,Z1
P@46q6hL(pb1cH02YIqJ2R3qpAA@RTdmicJK(mCP3&-rYbE*VeiU3!#31EYDLX+-
9pDNH)%-bjpT42G5#@acDkMD-N!"dCq`h%Qj2p(%N1SS-Vb$'&beqrfZ2XDSUL!F
r,!%q)CY2kHQ3!0JN!XripACIFEPPUJil6NK@B#%&UDQaUjI[kT!!a`K&LSL%b5c
pHf+CZX9NNkp(S4Zl$*NYIjFV"3C+A"lbc!@jj"')Hm'%4k-Sak#!aZ28k22E1M`
5-$jT0'85A""UJ&%,Z-44ilemaIALJBmeJl!l*ArYkKjR10#f-Dl8)c4VE2G%+j!
!C1L'8`MRR%S2k4RBq`Q'6F*Jm6`ap$iMBL)h#*PfI3(TlbI",41@0QE2V@h'jaY
Lj)Q5ZG-4l0NijZN2jB&D5c,h1[MQ1BCm8[$G,S[qL8+"0faBleJc8KbE#%3brhF
Q8G3"`Ik053U05,Ir1SXU4(0KE!a+*XIVKq($3+fb-RqeQ#*r&"hBbSF6H!lVLci
0&re'%%r8'MkX"YHE!HNdVa8X9Qr(apJ!SB%-LB6Y,S'CGMj@I1R8,`6"HEMQLb%
&!QCb"E2aFh)!Qlq0VcKRb5#Y#2i-BIN-2,[AS&r`#6KVS`Xf![#l,5T[#5(b#fi
*d0!Dh,1TVD@pGFkb2`Hbmhm&PN2*GN`qCjkAr`Ge5Q8kdY'PcbQH1(kdB8DP*K&
K-8&Vl&*1XVIjq&,X05NICMIa"4!eU5%PDad'lM1%[h3YUr2dk`pb+dQm1fa0%@9
c8J@-Md*TDPX9+"M49mQLP&Q*4AdJ5mKdD"QDM8fNFJ`kDcG-D9PF5q+h2HmX51h
Zr20AYMcTl%X+p9p9U1p3qpGER633mi-[$3E65FVRd4EjGPelF%3j55B[BLCT(84
,K2H)Bb[*K8T`!cb9dr$L,bSimUd%1FY4Ee64MMEBR2K4J1ma+5Z9CTJUc+ba,X[
H%X+4&XSjRBb4E9#2V"6faF4dFHm)AU3RZ*8l@dK*NU2C@N[E6$c&6%%GFh-G[Ja
UViJ6aS01%5l(CVdR8VVbaaq1bCkbS+qr2BhhJ62,9D+bH2deX*E6!P-#9j!!P9@
c6NE6S`KGXekMX*PGpUj39mKKZXKGG8Q*+IcDf8NX&JM$`dZp!3jdS9'66"F'p+N
+[E9N1+6-adS1,`M,65EM)b51+93fL-BmkaEaSbDEqfNJM"K"6K$"1a&8Gqe'QEZ
IaHX'5YT!q-EYIp*Y+d4NdFQV31MqRi'*S4H'YJr!biTGMIGZ'DDFkH40IL*2&j[
rIbe!'K5c",%S9S6V%fU!8,%ViTF288If'QqlU`)#PP!6PdV`HdpADe4&H@Ml92f
S+RjrNS`A@GPAJ$d!qAZ",CF0+&S#a`IKT$TfF(f41`FP[U'FCZ0P4Mh%UZGKc2a
"&jRh3rilRUZ`qSZK[hap[@35!jUU`kd[bjB&(+NUD5*&X1f0)&LTi$ZEZ5!Yahp
"3AkJFpALcq&cTX,AGl0"f-ZCUJDl8LX`KDr23mQF18Y,afK8!mR[('%YEDB'D@-
Scj9cHS0h3!XY6p(ppAZ'GfE**IFkrT3,0`4Mr3Ad0cU,Df(Y2&bMX5pHX0ckLXG
53)aYK-KDqXVN-e#(!j'!"R+CJVBh53'0I9Yp0)GHj+,e2C2eam1D+&a*Y&&B5h1
#!EeVP,$fmUm'!kcAj$$HMfU)MEX'QT6P*1l2BJ3ANLbqpR`hqT1TRd+8qB`Pc0H
,I$C@VGRa9[fj2(6MANJLf@E@rmb3!)EckI@%b5Kpk,IS$TbJTEIdHa3A%Xe0VM[
IEVSir@ACHMfEP6)Uh'QANClG[03"S8rS0VQb,3I8el,ffYD1eJE*E"3H,#e%pJj
(P,U4Ik[f3id@HrSXbQI!FcmqjM[m`+HV"Y1,SmGj&0$M,G0l1(EqM!frfKJ2P30
E&$f-&VEX3QHa'r2&[eSTCLH6QHrrk"Ee5mj4!ccV[09+NM23dDp*,f@G4L%XGY3
!P&8+A"'FbBNiJj)CY09jlR@Lj@UP(iZpaVaAIM*m3`feDLLEl-S!1k3ZXmS*hb3
)lB1@*3*&jCm020KadD8PIIJ*Y)ai[-5MYC!!ImA9ekmHRBpU"XH&reV,kNXcpc5
5mk@qF(%k,T,p2d-+5*06-bfT,K8e8J53!!VI1132@prQ-TI%Tri,B3R$haI"MHj
4A8cHJbU[!d#M0qbJL-HU*&rH-5Dm80f#4l$UQa-Nb*&EKr3&P-9"cSI&,#58r13
F,aZcd48jm&AI&VDP6eV",D1K%Yr9)RNS[5qE)C!!db-*aR+BPaZ'Q*(T@)TUJr6
,1)GSa@hKq9Qj$l-+Z(md,d[GiC-Bj0*[5)-ibbhPRfG"h%Gap6LmhDTebjG4MYb
fE@k[R[Me-qJF`NGjTZ6j0,fKc,1Qbi0Z*"KJ&8f6r#DFBfC$NJT-TKIqcaT'0rc
*RZVCUVUbq(LckcafLCGKjLB$F%m5`i,NPlFMjA&[%HI9JefZmQhU*1Yr($DeZZK
5RY$+d`YGF,U02BN"B6*#,jCcS2cJTV,pi#qbpL[`apGc8[!5,X"kfG,ZdCN6d$S
`I!V#8cUB%#mEI5,8Ud$r8fEr-PBcDlRG)JH9K5C!L[[r8aY@k"F"`D8QELd2FBV
H*1C`0Bf)Nkfr'ee*iFi@Ie-+Kfe$La*hckJrRMfF'033SrR4R!iHCFUepmkhlKa
1`5XP6$&T-F&[2I%PZ+e2IrKM)H@k95$NNBF$$iA5-#9XjrPd0BS@r3epXMQXHEZ
A"-DH4C!!29(*15FaeFk,8+S*-'2BRPX1+Bi[NAY2XlIV@pY`Y3r1)&H)#cKY`MK
h!iQBS9I$S$$`I)N&'lapB'HXcS%0I%Vjp#GDI#`T)61XlS!25J2eS8Y-'m-J0m-
Bj9)8PmkTh)@%qZF!jqaG5%RRl&2ZU9EXECb`iQ+MVB`c*N"#UR),3Uk!3Kpr@bE
N4l#RT&ehLZ&98Xm8UDV(,,PHkPZ,526SDUl8T1lHXYJBdVI+SfE"M+*EpKCfDIQ
pLM09C`JP&p5MrcaQ[2p0eed6$mNfCS'2A2K5,1bY!2A1$*FI5E*aJTUa,Yi,imG
hr[pe,`3Q)YYbpRK3cCZ#ek-YBb3M8DU+pZYCb'2Ah-0qKBG1"+6I'me(S3SZ'YN
GVfL(rZ9SQdG8Xh"F(G+)lrT0UMNb@l0V"l"8YN6fIHc)'4F`44619&3LATifCpI
4D,K*,KeUjk8Zq3#A`3NkP@1bNl4N'9A+iNcZb*94S&lX+la[QXeMMi@&Sq3EjQL
MPri*+$cq1CaGihr-YljE'2Pl&eBS,`FF)$iiG,eFkj!!b-'`UU6N"Q4c0+ZGT$)
V'B2BXpiejVicKJp1"9R4iK1Ha%A@fN23)BHic9ZmUH6'2"`YDTbP'Hkr$B'3!&j
,+Dr8D!34Y+m#p13DS8q+&1)PLQUZerHGM+$!Y"F$U"@FGC!!*m*1DIUFJFc"TKH
@HhjL3%F4S$%5DFkLI"2Je-Qk1JjCCBYIf+A$Xq5L2LJ3DBM-IIAMJf(B!3i%i+F
*X"Y"6d-Hr"hX!6ZjmXMMkReq[2Tj8QJHG)*FUfUX)bM)A2F9%lHN!dj"DTIdL&d
[eBiBq1`BME,pM2Tf0IG#+B"k0M3E%F!$bA20BI"iV-*+S(8ccfKIr04XSFbh@L(
b@Cp[KEL,bP9IZ'e@kk,+9H$LLC6pSJQIE&"-pq5`mmHV(Hmi)dT`FYPLiriGe*Z
&V3p0M,c5Zd"cJIXJ#*-80r6I1E595alLpFZAbl3M8a[NQED#912I*pLi!I1eh@`
8'(hmQBQ0iDN&993H4#J[m"fL"4VlP!"E1(Z`Y%*"&rKR$G&jp@l)Ak"@CC`UbY4
$,aM'+rVTm2"2P&'"N!$(kIC)b1j6mH*C5B'0J*!!jEcqPRlIq5RY3+Vr*RBa[R$
fJG)*5S8@@f*EjPLIJ`9"K(24$EhHh+KffI$G3jVb+A`'*0DCq)D(`D8HH6hXXET
)f6,KUV-V&Nb[Fd2j!lUFe+XZJZUd'pHH2"i`2dcpq'4+hC8ILAH2j4j)hq82eQZ
E956G1+,,dc0J*hL*a2p&X[c@8I!GiQiSr!"@Le4+`G4%lJaJNrcBq!$($-81&3Z
$X+pE1N5f1kG(&chL%C[RIh-6"cpL2FY6aY%1eV9-"((8*Z!%8Ic8ZdYK!JX51%-
LH[$+[`IL-4`eh05+E*VhS494Qq31JPjT$8`f[)fAR`aEXh0Ti*0iUr2#9G#9C4G
fZ,eLRa2&3i3AK3IGL6Pcl*0!(6RNe##D`G`rES#[9-mQLZL+1QDQDc*Kb`Y!HX(
)H[+GE5,BQa-56$m+e6A&iNlS"N3&2-31AHTeBD%1KFqF!IMNI(*#IcHRrEL3!0P
94$N+la4eH[XI$rbQ0d)J6VcX@M"!Y@Ce*@5V8ihHYTSZrPNYdf#fQ4U1)+dFVQG
*a@-4mjTlX3bJ"mqRX-NRm1kk@Cq`EFS1eH1e`NqMZYhb8@8l)TT4q!4*',9UYIr
-M[VN*,dSb*R(lfq-m@5Tj-`CTj)Q68b[HYX`I!QK@U`4Cf2SKGGFJ1V9m,iji88
e8NX)8`2Xi`,3'F4T+mL-(5QXV0)mQS@qm8G(NUAIEIdF)I0BQR9B0rVa*2I*'""
(86%DTlpfid3XK%KQVM4jbrfej`%'X5AU5HL$KL!0*Mf%bT8QjE&Aj@r+YN,46`H
i@hH5FHX+baH85)Vp6&AZ2cYF'VZ-d*'MiIGf3ZpA0RCmb14N0&a"8`0-@c*m,CP
#bU2#[kC5!Ze,VdTXq&2&FM"&Ir+jq,4T[3KJrmk3!,EVCqdPT$3'hKBX-NV)d4"
a+e8a3M0RG02q5B4Sd5E@VVp!bMGkb8@Rq$"hRS9@f[$f@9%AJp1p`q8cGZQ%!GQ
)ila02eLMH8ki!c[('1%jV!lB$P&JBRFbUNBImL3`PF3-K!&MTJ,$iN5`kCX6ImB
pj0irKC@RKT*i&j!!N!$Y8UV6Z2,&D,6Z9DhRhV&'DP)Pe!lej&C5DZ[85Y41FBe
ZLbj'iKF-FZi`D65#Vem*JQ(j9m88,5R4@H8@Zb00I+SdHUI)Yf[[8F)4P-RYZbU
`[!cD%$p*LiAfA$f0QQ6SJZLV1Cdqe%!TNaKM-lIG6FHETc,``rHb9UaD'j1Q0aC
hNXVDja(!EP6X[JA@,*61NJEYS&1iHjU`G-[&P-`am,JiI23k[0$VV,EYeJ9lf,@
Jb@SMDcJDB&E"VK8el-*,+T8585pI-`e&'VQE9+`hD3&%+TG95NZpHFKr1J9V1XZ
k#-24qA$L6E`I`fiK+mj"(5h6IqUNcqqi,M@Ye'f-a8a2Z1Mj*0M!'*!!b)r+IU9
!T91)6X98qkYGIpC00r8hTA'!JbMD4S-2YXY`&qF8H%L"8&Xalp(GC!40pPIBhr)
(B(T(e[bS0(@$bjf)d&b,L2Q['#eFcFkJT9R!JDBBI3#"RhaB1UJJ%SrcY`UX0`X
HEraUB1,aU8lTLRGSaVaG)j0H,ST(*ZUmV""I4mJM,hM6HPm1%S(iFUF8D!bdj-H
pEG-R1!llYB+DXih#2IfVU+CNhlb0Y6)TcRPdElbM&dY3Y`,bIe5K1Rfmkf(DTcj
EH+R@JVVB$L#d+@5%2mr5,TRRPE0q-3k&LDGZYhNCG5[R))4lE(YlfQm%I15d4+r
T[85Z`),9MDq2DN'MjK&91'V!8[(,TrBR2%[HTbrafVNPT4+@XiMkP[r&*@5lXiS
e+GB9Lm"FG1M0%lFmA[2*PHp"pa4U!)Ll@9mi*`C656h2Gb&5k-6MS&DA#3m+I2'
3!&XbGbXYkLGFFeG6!XPhVdJiLh&0,H,&pH(jbFDM,ZE8BcGT)G9Ei`0ll"ireqB
8GH+FqK3HX[d8A2cM3M`d)MBLGH&ShD80(ZX8bMTYMM'FqrA0m6LU6+1NlACYK1@
QaQd23E-QcZkpZqU6KBeZ$r*#aG`K)h$@hf39GY$[pQ0Yp+TLA#p4pSfp$[mH9c%
F,+i4MUMSXJJUqeHX6X)dRp%j5GpmG)KZXmZA%becI#pMQ6&A4VMjQlI5iU3+P-R
bGUTc4-rmY*S")b4*m,#GB$FEX,LI(X6f#Khi90S[GZeqccHGX6&64PShkiG%Jr,
SlHT%Z[TjAYY%[E(N2fCdJe)l5(3dkeDUrj-LETB2@-f3!%R8)pjEVh(C908N*5U
TbL(G'UXAf5CF6C*RK4cI12S)p*U@P'MrN!!4*HI89f8(MEpPl*1b!0f"&IQYBUU
AH'FpEaJM[pDaDF+1LlV'c+,(PQhZfR8""cl+5*65(ipeq"JDR-B,eJiDAFhBH6p
aKdaEMFNaNqZQc9hG9U2"jDV)K&&Z%m2H9Apr9Um*GI$DM(U`1--&#cUElaY,!`+
j,bU`Xrh"%L#NkR4c[5f`X8Re85m*QLVXQL1RR4Rj29"hU91IE(@!4#m#&"43-C1
*L[TMFZf5J,FM'EA*9qmE+h8L"S!8dcfaB'DhkPT!S%D1FU+M`+TGSZ@HN!$9ll%
rc)Dp+41-b0*jDVL`6dP1"LCY94R'49cjqZZppjEaF&452T-dl-SPR`b$c!!5E[e
&X&Va5[`Y[+YJBG3CEfUQ&GEB@Rh@[&fY"Zf[4"e6*rF,Z+@4KV+3!+f"(XVHQ%B
mCGqF12A*%%aDfM%i!a0VYQ1*VeB23&6LK0!'L4meY3QXDca![b`abj(2)Vhb*B!
KU@0F63"%#eM$`AaBhZS3!*m3k,dCDr%!i6Te,P5QQ$6&$Mi""3E`!(TDJD8SPLT
FLJf!c4pPTcL"pIq@DP9P("&!3CAIZrc&DiIp#DZXr-AU"eadkPS"[)XL1X2QMiK
$lkJAS8M4%+JE"JK9L058U1!Y'c0+%2hbq330)&US1eAB'A2p6(-+ci-NJmFI[9S
YDfUB$SbTJ@Db+rRi(ZTeIV2`&T&Jp%CfK`ThcZ3[+*CVNe%$5lepdb@AZU#6b)j
$RCJ4,r@4MKJ`pbjI%$E)4[0@E1bFjEG`PD3)YTI#-I[E-*e00ePpaD"2!@(5UZ`
0i0AX"FK9C$D1h09,EQr4cB1ilA`5Q-i&CaU,"I3J5Vj!,(klajhU&[UG"3NXaE9
[@`@#kplRe$kkmc4"2'#L)XV2N4,h6qLU[b%QMAb%*KZGCc"cHI'C0P[(N!![3Pq
EYGH""SG8#LUqcihiY'-+G(UB#SB3N4S40J)29L*mCjQ"K)qHd[-ZK3AaP8X@MIJ
&pjj(aTRC5iNb)3mcErE&#N0'[HKZhI(fR'&2ij0'F1"2H2IA++#1d9D*0mmXqJK
9PXKja!d,#',rm8`I#Q'i(hi8-epQbT!!VSpf@YX*Q%FA"5`MSMDG'P426T`H0d9
iR-FJiEcC-SpHRQ"iTHaPEdQkFGLF`Q8kN5"N3FGP%k1cd#m0X`MaZEM1lZUUQ`S
&09#1MbbZ9[P)RZCjqDH2Ml`&J#@m63$&XcIY9+2m5Fe2!VRT6VpL'pH%+Xd`rh%
9R`NSdM9HB0R&r(XY8kL0"k@+A-*C,Tc9d0-1SFAdaJc@aaYmm*Z0'L#5,l*kJJ6
'15Q()GT6RBBPTS(LI[$a[2Gj8TML%aD-hE+#HphkjHTBA#DXk%)(0G9j[2jl#f'
!P$"iiD2[I9%USY0(&RKHHiHik0kGjFljkb%Ne9#M,i4TXda)BklMBl(`IC@e+@h
$0+PifqT5c6l%%RmG8IHF"&*Z"3G,pq[NLhXldaY&4$A,M-Z*&068&2Y0"6b)LT&
EHjJJ#5Nl-l35X*i!GA`49mrC+k@886rXiC2@UQjb,PkS1qr*&icThTJ+,ES32K%
M"TfLjePRKD3!#)KpK&A6MJTY[(kFffSD2!DR$[Z*%D+MD&XH2Ap5FIJ)V*!![-&
[&TKCB1[0e#b0jDdkC#b4ljKpdrH-RK2kGL2lDkc-J!3XRl0D#m*)MU(,T6Cm)5L
"M'Lk&*03#rICrc$D%$ihcb)`jkY,0dXH82(C)PC+#ZP,E'NhMFQ"(3@#Kdbh#5B
he'9am&FYY"PdpL*[FLGlGQ4N(QkP3PA)ZN$Ga3`5c&1ZbVKA#T%4Pe1iCCXXTrV
l+*lD0-e@!paL#cI08-6!1N21LUM[#9NC9C4Z%RFpa%F!5JS#$)EhMDe%rVd!+F@
RQQ*mBHUP-5mI3Mf'G91LRK[L#'(0SHf%,*ZlPih9fKL!@J4$@aLGIpl*ba$QLLZ
6CSZ1D(@%,'2fr96SD&AE3Rl+9G89-`JIk@`1hbV'+U@'F`,UBDZhr10p2rJ5#b6
eip25QELqi*06-Km6*NHJIZRiq#[0)hhrP$eLXiCI,+EGdSR,M,`-2FXDjeS,UQQ
9G+)r$a)!bleU+HqKXH&bl3DDBG,$b3*d28!Nd+"4ZqU%kUb`44FP@jH8h3$%4Re
iL5MAQ@i051A6FDYGI"`*J+q'1P(RE!m)aEP,J2eV*crkj%aTe-9`qhS0I6bf4i3
6#9cM"$ea+A&6q5rrC9)IhB'[@$l9'XmSA9592R!Jh4VS0+[5*A&YkIm`iZ#(%(S
`pSVSlB3NUJZ%"2IrB*!!r"*Qha`m$fXLb1!K%HP[B%K9MMRRQ@CV(`4IqjArkRj
m"TdF%2)8m`[SFb%4QBlZ%51VI508q`!IF#b$![ZR25,E,#mcb[cJ,ecA3TB2&U"
RiU&EMVrTk8G#ZUPD8KfF`f*AYVH60I&,9T!!AYDZ'$)M@F8h3dAIYd5Zj9k#1+0
q`!6lA2ElHdXV!c&)jcY+XqP)4j4brR$B3VU`h-N!GGjRaFAfjK`l`GM4SPkeCU'
UVZlKU3MMRQGU)ql$TH0CRD[a4[K-4q+IF"Y)i"b+k,9I4ClTR&p(4R!fi$'m$-L
G3b*2$j!!@j,HSC!!+Nc0PZU+FNjkd9*&JrrSUL*U)P0"L0d0'rG8I$"Q*EF@9[2
*+*NmSZMfLIZ,jfZMA[*DKbVriEU-Rm,+edHAAI"SQh0aASR5ES8Q@bTmE4H3!!5
+[daer,AT1Di@Bq"#4eq#2PX`qbm(&9djH(12TV'hSiRIFF)VdZD4fPdSYb*&"aY
PD#,Hm8d3q9--$#QjrKeG6P,-+e-*AbGA6b"3L`EI1U@*Dimp'TTUP$+0c6`BkAS
MSl%ZSlVkJ&(&mj,Q@"r%9A2#"%MV&A,@5@e1qYkNXU-Cf"3$5GBbaVlc8MH)fe[
U-(rC9@*ZUdYkqljTG"jXZ5i*QhRK5+)"CSN#k9lPAjfK$PF)N5NeYLJ5N@KHG$-
a+Q%-MdHS,)TL!`A2b,)`0@4h,PNp0P%2ZIqL#Y-cLFrhEmG[kbLL43$EARJLhfr
B@bEX#5hl"[)1GCJQ4[CLUa2$&DUCiG8P++hfLPb$iKCJ+,SI06e-!B(l$aC)8eD
mB9M$JmeSiDm!Blq6+T!!bQ2HL%TB5iqlarIm&JP2%+9,+)ZqIJFUi(rk2C)1X%R
ZQ(b*HVP6eF6JBP@NC2Te4Q9KhTIJmS&)T[&V[qY"VmSG"V3'P+3#lDL4eU#md+&
'(@DV8a$cS"QCBJCTP[cPTiE@pKD3!*b#,N,c)p409HGNqTT0pE+TV-3FP4N(8$"
EUK%EGCERH9e#'5U[YP+kNJ40TlD51hQ$D2H&T!LrpQrp+dCp[@rU1jpJAR3U6hk
6JRA&,0@@fp)M,jaY&eE9haAjEbeM-pq2jia%S9&4Y8*1P`Ybi'5Q8aBAqMekG2N
cZCe'j`(i%YH4%kpkRIF(0@ENhh!@k"%!I(dJr-AjTUC!6e'I[IIT+1K1dILh9"k
X!iphDcB!SNN,D4&0NBad0&4c'QSG1bA*lUE0DD54650e,mTA8eM8`q-6)idZVYK
JfT0(k'pAcHVf@*T1rZT!p'Q)H6VNV3K#-LY!Y5hPia)H&cdMZQ`1LQp@3K[mhX#
"9,9JjY9@&)CG`bL1bMNaaQb)@m%((K2`qBQ"r2!VB&S#BD!U,9RKdKDlpVa46&%
BIMp1k'5#'1Y$S[h#[E((,TS+1lBTJ8H(ZMhlN5pIU@NleL(lTfKT*b"J[`rjFLX
L2jh+G8'S*PaTh&4Jm6+9l$`dj!#"hl0+(#bRbBE6Y!"ECB!Npi8%"FSV[!&dTRK
RKc,X*S21),2bKaHG%G,6hV%#!-lhA*9Th25iUCk3!,fQ2dh2p&1eJR6(f$Kc6@"
@NNT62(N,l+f!#qR-H3VUVMe4DHA$4-&BA*Ze9pMf&MEbhAcQ3$@D`AN0-G1fA*B
#II$ZRbNCD*Nk6#TKi$p90"KjXm%NQMp[J%#*1$3,MJZ*HRaJ9'XiFFYZH&V-GD!
ZN`m4fDRBP![,qapl)P6"fY('QkX*`bbR`eJF95*GA'J5BBD*TM,[3"2q)PSf9'Z
+'`l&S2d[9P#!IlH(pK,MpY)amSjcPfYHDRD1$eS4dQHXELQC2'*'4Z#F*$X%NBj
40R8q+PF#J4bXLK#R-N$bm+$9ED"0-lRR`jF-(X0P$XQi`8*GdR`U!18JUj2Jd50
%HjMGQ#4bb(9cFMZU-EhTDb'UKQ%pLH0V[5(pP`LEA9e)r"S@aT!!`KPBGlD2NjR
H-'jiH66eU1X3hEJdI)k@XaX@"PDJfN0#KY-#JXC-THL4-k(Z&,l3eV0"0B`,JSl
1+`eE#c"ic3pJ"i)J"V3L+YY+(c9BM54@3dd3`'@9%%Sp[I3*G#YV!R%&S*P&ISB
ZKU$6p)4cI$@jjpAPGme!S`qCe28,N3()@(ea&+j*$0DlCR##idVm[0'2QP*(BR"
CGCl-il9[h*K0&DCMA2L(S`)F6*0B6E+9H`[JH)13!-)*r`mE-BERl2m"C@#C00(
bR-pKj*hhAE'SU[@8Ri)0qmAhY,qZ$qdTFIa![H"(+Qd5!Z$8Z"qj8#V'B,[Fl&4
fmP$fF6i)1'CD[c6TRGjZ*1Z3!+&"$a0jQI0GAbkHIMEir15r0,Q6Q4ldIcKKrBG
3C6J-23e6a@)!3HCEpI@-,(RHXNJr)KiAa2CXB"P)L#qJJ28f8Xl")Ki'qbSrAFi
qXlUUlK%p3D(krFV(DYp0'C%NUY`5m-16qN69HJmFr#VBe%A'@3bD04"5[c%+Gp4
!F')p&(1Hd!UAD-9q2H!,80K13%rPrJP@9i(T`(&bI02aS(Bk8IVNY,LEGY1lQf0
bT!@PRUZMNeEbJSDVG)3Y9)686Q&EYeP[4A3X41+P4SR(NfcalL1F@[RXT)m"RD5
S&1NG3cSDiH[PSHIC0icJS0Fq9ZZJPd+DYqqf%)%CpaqTd@1"H4&3N4cD$aqlkCA
`MZ59fkTT"D!6bRm"S4LrL*ILmIk-Y#C8QbdCTY`P!)!@dE,,Zrh1LkhlkhP69FR
C`%*R89CCKlp2,-Vl0e9&(ke-apXqNq"FQeaVi6`k3D8ZDcQQ[BULpi,FX0"32h&
KYcC#%&qHVTQ,KX''Sc@fAYL9Ikb$i&XT'$MqdHie&KAK-HXh-c)QV!%`FjkTS4R
Idp8I65iCIcm$emkXrl6[TCZ%Hh$A3a8B8HIR&Zf%[1-FT#8@$b@$Ae12S)8FV#4
SKB%FKKSAFGB6X,lcBIhI!YeQ)Y[r)+L+h3Yi)Ge1UaqYVAbQ-NFYpJD)BRISj2`
,d4hA0&3)c&8ZiRPc1-!D-H!-E'+UPPfRK-(VZ%Fk$!eD*b@"G3j0c$k5JHB&ch[
,kja-j#1#I(M$6#%%FX'*$*Y!AVc@NB8ir+YAYq3VEii6KNp@0"B1P[&(DIHCl%0
YNbeE1XYV`K@IqXEN%Fm@!PUh$DV'Lb1LpX50Qe(KRYkJED*HQD!AmrS5)pj8@(C
eVjm$05J"aHAjrP+rc`3PZRpca")V1[bj*B"2TU+ZV`p8Um'j9f$lC3hLkhrpQ2E
p@RGmj&'-GJ9r9mQQHdJM'RZp[5*53,'Q$4B5A0UjK5X3D),LbE`F5101&[H(R9"
(r"Z-4MJjEGmR1N%4F!Q#YL+PL1Zh0N5Q@2B13HpiXhRNedUIVIi0GU@mCeJCSJ'
cmRfcLe5b2$@i#33F'ALG&`Yp*AmFcd-%1I8GJBQ$F9A#ibY'0*BVC@D,&PS'Fd$
HVe0jV6X"3X5%@0q)0b`F(&eh8Y,H'LFXND9BAjZeFJi"L5&KNm@c%AcCLFq@JC(
+0UaDNN`1Q2`q%0#%+Y#eKbS#9DNA6PqlRTV@H4pI*8hbZNi@%F46j91VaVfjdD`
E!(2FUV"m'4P1`h'Ecrb51438)qdb9bV(0%hpS"'jb-Rk#k@ADkDe-(GkIEMD%(D
Lc0%3h5P%5$%e%`MlZN%p$#2CRC%1F#(49a-6P3Z+'rj2MGT%"icT3Bqd"K2`XhZ
TTB-Yap$P&jf-5#kZb"+P&l0Vb[U0ICj#!l2B@SAla+2"3FJ!!JaChe3bCS98@L4
'[GR'i&)iiFa69aQr@Ih'+$ldEmDVVPjR-1N04F`hU)'#1P6)eEF`iIhb1Xa9QZF
a6VC3"`M'dqqZ)")#!4A0ERLTiQff[BZQ,-T`ReB3iDX4KbP2A!6-1GIf[-kb*rf
8[0KA`0j65S(HPf8CmCaq@KZ#%ChhMAN`CREKqF-Qfd'`8`8E"@8Q,8JhcXl2VEE
*JhDB0b43&#pLGGNrEHcTZbb(e!AAd`%J(@l*NAl*a*GG%#5+-ej3Sp&!p,1+UEi
'*$V$`YBTNMUK!jhQpfi`"J1p"Ye*-1(&%S,Y`r`CQ+`hN!"4YpPHU1%Sq)C,[TB
Q,jT#*'Pe3b",TXSdpL&*cX-MmKpJ&Si$*dp-dR'3!2cUVJ#fUJ0&cB29R5X45Ve
V%RNM@hZqiRN*f8+-kr#E#IE*Cl4AIilR(&EVeJ(+*R2e9S!d&3(@C622UmjLY4%
iQLHRp5FlU$F4*LRCfk3@lLPUGL*Nd'cpVMjlpj%hr+Z@38rfASjAcIjR5A6SJKV
)9MmEKD46fUY[YqMPK#ippJPKNa(4-V*NT(Il@%,mcKT5#TRr'[lLqGE-#)Fi4A@
jVLCiGp0a6k+E)XNb&Ahbc@NY#8B+5qaLK9Th*9K(`3MMcFe[f&Gm!HK#ZpblQ"D
f)Td"pHk-CBBX#U+Qq-e3JaLrqD8jli34[kJZk9-V6(L,4HA%&@[k8IqqjlJfk!q
bhYG(PLLCIMA%'`DmK!qDDpa,3P8%r!FAD2Z1M49%aQYHbLPRC"jpai%2JaGX"Qa
VD@K(ZE#'$A&ZB*)e3EkAEri6I$#eH-LP6)V,4EMRfMVVq-)Np'8cMdJDpG0(pZA
,3h$D-LiHpDK'e`P"XiHT1ZmEllBQTe['2XLNL[&++SAi"kN0b1e@-K9G$M,i#eZ
(SkPqjF#BZkLZf)*Q[(5Ym8P1VEf-R9)(44SXGVQ!qpQGS!kjBcb9MYDeGDa5AJk
mV4Q2G6C"eP(1,rc6E+-jh`8`M$(qdX8MXk`9SA[fkE4'VlGaX24JkcZ53RJNMY!
8(l%Td&0,!9##T#112Qp0p`m`Z,i"HrBED#I*B%Md0!0)G9*D"hm(ll-Ij!a+`'6
XG0JhKdrPGEa##hHC4EF%,CCdq%$Kd1F+($"d2(!-Gj%4SPqbYV8rdVDf@paGaa,
PS'KX5#!XD(Jr#$0c8#k5%S@@4$p%QScK36,HhRFPh,)BIDI&bQf@$GJ09('b`ca
68EKE,AS,35$(30eaa#fZe`f4*+a2ULEJDYD![c#FDDHBLrhBIJNha[q[L4lq92+
%Z2PAEf6R!jqM6QZJ"U(-*%(D6rB,(8F"r&K6eECe(QihY'R90Y,@9TRed8'fpH*
eB%4aCZ0*FjJKU-D`CXFE`X%3#@EfKNI+H2"3K6!I1[QQi%9P@Y%l-&qT!2@*jKL
C0+B8'e,%cKfHNJHQ,aYG&2V!Ra52LK9!83PLIaS+lAT8Q!r!!,ahSUImBAiZD9T
hS`05[NbmYJ5[IUccFaJfK-GCJmKPGdb$rZaG!P40EEl,ACA`m$GY$`F"cZL"F"b
S)XA1[9dVZ&%mq5`pD#CE!RYU"KSm1rmiV,!5"PJj2XZ3!%GFbUN[f&VPPm)hiL0
'ZT`T0b'pePC%#QlG'0,R-B`-e1I63h6-6ES)-CNX'[$(8%K5c+TR1$5GeGpC6[S
$5`bIA2ZBPqN6`[K'Le,II#SNKNSY**8rbVfcU2N`B&M,l-1dd9AC6YM[SP,R-B(
r&XUf42"*e*Q#F`m!U&dA2*e"Rk-ihXA*DfTbZhrJiUBR8rAL#j1jb2Gc`8NQl1@
8bU"LY+cdi3[["d+L`TdJU+b$Ti4)qY5X%E'q0E")0&QUcd[9dlp12IdZ9aH!N!$
@I1DP5*!!+VUN1N@p1+G29AI*@U`cU(lJ9JcM+JAVeV&X`+,Fccbmqihb5Qd536I
kU32CR5ae2&APSB6Qm*aG)IE8Y1Q6[#,fmV4YkbIN%(b"GeJbB0k16`6Y&"bU%#'
i'r+RMF"%E&UY0VV*L6Xh%YbQq,&RT[AhrRHN'GD6dbTEiNli6eFK@A-4C0q-mU5
e0),1qeCCGChM(SrAD4GI3YZQpe*4pQ2-a#+YTMlf9)@HXZp(fGKjPN))mCME!fG
Hji$C!p(KGAKKATp*P8dM!C!!2T@m"f3*[BbT3plUERJBQ8(%&VEG&(2Zi0fLT81
Ce@a8TijpEfY!,*m$YJ[l(pNr[HR[9Jk`K*SJaplRbDLkSk1'J[p-CZA+f8F3Qlr
-R"H@&-!")lESVp([49P8FNLC+4d5$!*2U%r$&h-1[(R)V)(AUCFSZhbXJRPc&JI
fLZP4h6bN9GlZm)mIQprX#Ccch6cAI+'rkZb,,pAa+*!!52mR$f!)%rKm',8,CkV
%!rrR4,9rBB(f2c`B#plpEEQ#TV%12&2lGTGM6RkVRa6PLkjaHi)q4jNMRGPXG$b
q4Pqe9QB63X'#A"Ab$Y1Ya'Ze,p$[CmXp"bGY&G8e!-!RaZfD9!DQ4ZD$4EUfpKe
SC$83e%e+k,3M4XKS#(C"dGAGdSkbSa+1fr(HJN3AQp`'5QPfefHBSI1Af'm(F2q
S$22Q$rLiS1V&KeI)Ch([,`A"f&2H4[9L6PhkKEljFJAkFN$`fDrMmVUTJaj*)C(
"IkVJA5I+le5j&cQ&lklrjhhFSEK,j3YY8-0)4V(jJCZYir$-HR'cT)Ncr5"@qiR
`j[6!J&[KDp*FIpqDX8E*RcVJ2lM`i4-SPrrV-0MDkK86)6*9TG`N&k%"6eh`)J)
$2X*AeD+``3G(*Cldb&EC9rL652bpQ,h5!JQSKm,d%CH!jd#F3i-P6Q&"((L*AhS
MbjR!dr@@*JHG-STAdV!9f"3mG-@Fb4KLHXZpD!QK(NrTYNKYic@AlMjYXF0m'IG
)"p$"2rk!r4cq1`Hm95-!-T*"U4S1#5S4A,)a!EK2DF2E+I4hL@LqXi[3fH4kSqM
eCFBT"-Pq,5cFXL#'UN'E*Q6'*)Li[EmjUH+h%,c&GMl4m`%H98r!S()02pLTqSH
4pj!!1G(Z61lc'Ff3!)6J@hL2#j1QlmFic51*Jr(QNd"9"5F[QE9rhIar1!E#qIQ
Y&(I(Q%4Q'c)8j-@f)Lf#-T0HZ5H3!$XYHk-m'r)**U**3icf`IRC1(U0Vr0GX@(
aD9#SYKK[9MJMbJmhYUr[fVABZI$SJd+SbGM)9l#dUi3iBRPl6`",Fh-AkN3aFkm
498Pjll3d05i"lijPB*QB4'PGfpa#h9*K'B1HaNp6NUVYmF-prP8HGFMb-eb`0Dr
50C`TFf%6d,U@3NPDC"M31VrIai$fqJpcXMhfh'0U6"LrVF6ba8m(*SA)H'4,#eA
Qp9T*cXl4--8fcR%$!JZrQ&0ZV9)p(8)(FN"4Yp1KX2MUKeSc-rP4''GU&-$VHP`
kFKGJ'M$QC[RU)+$cqLAY9QD+[H4*pB3mf+a4X'`P$Y9J4T)NH43NQ8SB&-9$lXa
5hFajRi"Q6HpqAF'Sb)5eIDK4rjF"rb`b3%QMFC62qB6h@rQl)3YSPUj%*IGJEB`
*j9UbLq!L4#r0M!NU4,P`cHlJGKU&ZI"YEmLBk-1biN+JYP"ePZH3!#DDJeMNi5G
@D'IQj)K9NZ6S@q!hAAU-(e#RqrkZ8+U!AL$aA9m(mRIh1)HmFUH4AV0GB3f1UT[
SAbj#!1RP!elCJ$l$#Lf51(9j*3TjR""8r%kSipe-(Z$@-6Sbc'aC#KD"L&da)00
$PKl@!2!GkM@AN!#$KJaY(m#A9EKhecFp(JBF11m9Ik89RT!!Jk-9(k39T9-E9)j
++Ba5"3ir4DiPVD9ma5AB6p4K['$UK+U49DSi+$MJ&2)EmKL'S!5GU`mQk#lZPR$
FZCGEN!$$%F#e1(hAJipDYR6Nh9UFKm@1+"0Jef1!Lr(0ZeZH'`T2D,h!hI!)p+K
!E,bU)1F$K'&mRKHUl'),R4aADdJ'R+Gha(mA23eT4#C0*k(!S$G[-U1(BURhqp+
%8LERJa2dCN6*kcCrm`QiL&19,c0[+C9"SG0T*JK+NhVZLR#f'MD'*2!LaJ1YKmT
"m1h,9E[EP5bVGDYX,bfed$9GHPj(VkT"G1E$)V0LH[2j'pVM1[rM[4Q%ca[CZl%
!AijlbBFPk-Fdke-k`3iMf6ii0A(QQkaH$Z@AaS4,T5-r@(+D!c(A22$CD`D*ZMl
pj`h8E3mE-CI$X4TkHij$V[8-%M@@GRUMVBZJ1rSlqZ*p!$eI0f#M"$,'2jNP*2"
0-r,4,Fa5H'VaI4pSEM3&8dK4p56SFV5QPHF5rCi!EdN+6KT*MJddd!pBlX8&S95
E&IPmk-aZI*M'S"YMFM!iZCE[D-)`mM+C%$5-BHdk$j[AjQ(Gl9JJhKlUdVRZPc$
E+r#BG,F0HK4U"eTe(ZV4m+FmrAKf8!+`DqV`lrr6f##e+V(2&dem'CZ!T[04)))
Jk1q#&6B,DG#e8jk,TV80G$YQj$,dm@JJU58e@$MmQ'eYCZNij'D6(LkJ#Yr@R`C
b"Sk2MK38@5,d,MK[R0b0H!p"#q5Hr$p3*H1DY6#$iDU-k2P#bV94cAS`9SFrINS
`YU2RVJHk4qCLVAhGHE-bFII`e,kI%-rG3F[emILZrX62[q[6%5#jD$M[2e5[ah(
$09JmBF1i$HDaM-bB9mlkU)LQf+#'&q2dq&lV8@j5D[RC((i!VFDf4S,d'Kb8ElY
#NLk,Zb(0E8ieN!#(kr8,T0c09ldX%@r+"YEc*G*!PH!DB34b8ri0cMc%Z14@h4@
#r!Dl'4l!!a"q&))c(Q'11IH0#N$G6jKhqQ$!X[(8p)3bAm+hEFPD8jI(VABBj8q
&Hcf---rK[P1A0'R03LN1CLr4R6AE`#+DQ&Qb#[J5JIhJP&!I&ZqX[QIpNSLUYN8
$8YY0JqpVZl!'FJiX#XTS,FT91eXAdT1N8SdhVSLq5YGAmqHM"IU!+[@,L'%MACI
A&4,HD6cTdV*RRIGYGNr0[IBp2P+NmEHCJ4La8[NlSk(49GQ0bL"SCKRS2f1*$GB
Y%-,XkDc`M)e2rbfT&hPqdEBB4&Im-kG@G[dIG#5Zdij"5f)*633SbkB'D5aSIXh
V%kNdG(c"HE&,fJ@PJ'EBaErDI2I*2m2C)"e4%CmdaGh1B!%-8%(%9mr9NR*eJ[k
b$fDh-m00PVmC@AhK60MU%T)0mP,A&ZPXLdP&RI,Eei[%Z,9'6Vl1IYJ(f9ImG-P
"B9!&Rq+KMHGd$dS"[T5E*$5R-KXj6f%NY8)XEGA"&!,2&HCQa898"4K6M9I1p&X
j)$dJ"`#m,EMMEQSJCLLL2DAI[6&R'dDVTRLQ6EaXP,&b5dTj`$PMXSe!9`MJ)mA
XeQX8c*j(9#!@&X@6,*b'[2I(Z#VXDAmj$ba"1I00'DDHXiplmM!i9)TbGADAYpC
NNk(K@NHb+J3GITI%i1T@jPR6%43**!p,JfdVVH2[raEM#DTrC2"KDXA5Y"$@!Q1
SVVbM*8##Xc,B*L(AX[I%`lq(%d-V%UAqXjYAH!eeR0B@d@NAR)XjVm3a$+!V308
jMA8-C(ATHr9KMP01"B3Qbc8V1mhFQ@D(GVS`YA&U1i`%[`@aN!$hrp'QPjCrN`(
lDEYrRSdISlQ%(9U[`GD0V4GfJQFC2aP[j!3JLdaP%GdTRkl'TNQiZXP4#kU8VkI
Q1A)LCZ[5Q1Fp,dTF4"dN*BU2FS)'59TAIPd5IB6bPTD"$qNDlCdF3'IT!UX4*2!
05Q[qDL-'kmQ!hK)1"0JRFS*rVTNP+P-@GSE`r6ES4Y4J#cZEp[1X#BjF5e,0mfU
Nqp5"N!"5P"fUf#JrZJ"VXqZ9L*l4ma&@X()chV"q-JH3!'E!ra"fp$[HNBJH(@N
JD91l0lpej%DMm9qEpPdGFV"SjE)GM%[MlE2A#fb6dY*H(dfb$@SaL3kh#c!3ESm
T8+H2pqTU+!j2rP312-*LR-&hMhjVi6R@*f&!2cmep)TDbL8E6l46IHGUTcVa6G6
fMr2cDAI%!%p''ff`Ph2KQFc-aQcCkS"Yr*JdrPBaC99$)1cFdAi+U-A4Q'+b&mY
N+JZcBAmpAeTrhUrDmQ"SF`%dU+NkKb+lCGdIrEGb%bC5c&qU1hdfiVCjbaLq!!Y
+&cGKS$q-GJ9!!EVF[Yk#bBJe!DEZb"6GM602T9G44CTXYh@m,AR-pdmjm8KDX[5
Ahe`a[Cj12(eKdeArqP6Dp!D2DeKB&%l*LJ2jQ4c"1i$ET[U!#`JXiP1PN!$r0mJ
U'behca!iIbj65AQ"A3%jY9rL3JVFQrd-pU&&X-8&S+",U-fJGRTl&8jk[i@TQDK
FLJUq*rr,ZUEAIL-e'A1R3d@TP@Zm"f@C`H)c&a2LLTKVdH#l$[%pCc*VPj6"rRq
2jqQ6X%J$E0FJj`+QTedi)VBXT"5l-$(!#)ZkJq3YG$k`E1R)mq*rqpI,V)m(p6G
,I"35MUAaDjITTGYp2XjD&!i*!TUP!ZPM2C!!bQ#L!P+%XB5&`D#EBki4V3#8(K+
2Ije(Gr@4ZD0r3cG&PACb1@C+JT!!m0YH&eajYH,RLr'k9"E5KS9Cmb(ibcI#ie8
hkEAq&QJd0LQ8'!qrf'LDkL%V"A"X$D%pLLjMU@NLR'K4#)1r4)X4rEHB$'p,*29
IaPr"Fj),I5XC"Pj+)SIjC3FP+dAA3'(@++*2R#hAHqS(TZ$K0pZi!jm0E'&e*V-
M0RM@lAK-Nrl+$K*lbIK"*$a1$&K'R9mejI8UYI08p"PYaS0R,Af5HIeZ$MN*#cD
eAaqJ%Dm"m@Z[2mcD52Qrd&I6C#r&e2VS-I-*DfVYIU*RJ96N$$3e,E@crrVH1DS
k&cfd4N+EcZ*pkQM!K9bkpq+,,Ukh,dQpNV!,C!PI4!X-CP52aPQj3##pST9q!eV
@91aS5p`f9LGAj5$'Z-Nl%cH`rSC#%)(!DXhFa$a@NAGk4(qCDflmb(-FYZ`*D3P
8JB!RHa#0@VA$!A#C4#%SRLc4P2*5Hrch9%)-PLbf0(A2T60LV`EFBCf%J*jcBqZ
qTZ`PU4j&Ya1!8@GC!Y'r+dDF`q`FLG(iA(H,TX"84+`5e*%I384!"B,Z*6kH8a#
eElBk[N6R%U%L[k)1aZANam-c*lh5Vl[jCCZ*DP@0ZJ*Pb0Q&(S`eJff4l&96+"E
Dd2#R5cV6QUABCHk9h5*Z1E5KkIZ9RTmRLEV6qE"[UkG`J*lhY`4qpp#'V'&%DAU
U+-Nm5V[FMRkAZ#[D@lZA6LS"Z"'3!![pa`e)h%8cLqkd@@CLDJ'K5Y9C0fUUh-S
KDSdJFB@mPTP2'0TZ!Tk,(-ALE-Mk$$M6UlRTCqdL4PE$P%PPi-ME-`11YhTp81P
4!B3B-L3m$Z!!YMblC-958hV*3#2A&ASD(aV'a$-KhTklZ*jkCe`e0bS)K1'0G&j
cfTG@Ma9r("5EIKC6&02,K(EEGdZpkQQ'+8+Lr9IbMmGTLV0UZH[APQDmU8m(TK(
Ap)0k&AGqf3JbY&-&LF51c!%f"S)+!B083pJjeF42Z%-pIYPDRVf3!"-hbEl2i*f
Tr6#+`,qB2B8FXSMlL`apEc3hkSeYFZ1YUe2i0LK9S$Z6(dZjV*+i3liQE5G!p39
GeZEG#fmMmHEVqKpYja9H#MdC-eVHH31dqVKZ`[90fQHc1hA*r&bXSp2DDN-'!p[
+dHqk0+j$"HKQXMRJ!1GfPh53!#+6,U`!V$Rh9aCQQT(3fY8kA))l)'0,S`AC45Q
VUqe1-C[*9U#H#Dr3F#8Qe0qE!T+E4k!#8&JP#0-IU*d`L(0k6RA#UiM3%@J,l+T
FT!XSPi)2EQ9#fpf,SVM5IA!EVFB3D1,6m6FGrX@0SpXcEFd3AL[U5'p#M!XMMXK
lh62RINf*iHIZE`DR6IVIGP)!6m+"3SUQh639Z,G9HcVbX8he,3$BXE8&-Tr,-rU
iTLHDaHfF`fElp[1Xc"ZbZ$Ja"caMl)HDfki46(%Sb!rF**lMJq!fp,CLf,H6H@[
QRGQU@%qpj!50IiE+IB3Q(JaJR+PL1cZcZqmk0F#XK!+4YHL$@m+A*"KN(EZ%[F`
Ne[3%U2a-H$$3qL@5,,)aQFZMMP&dE6[ZZjS%c6&fEGa`%jkHE9A'rbP+HMEUaTI
p4SQcZR*q1U8qUfLGP+Pjbe`jF0h"#-6aQk!chYJ'p1fN2cah4rmBTM6L6dh"e65
R#i+EeNL%6JV+PYVYmk0''PbbVR2QkGlH#'kY,[#,%ZG(2RXPlEc@ZbMeJMU-)XB
a%Q+4k#JY(bHp,L!'EPCbAKrUXdBb,j3TV`lBeA,F@D`h[AmTfq9F481k9mkh@am
L0M*r'PPDEVilTAI96E"L3@)&YNRX%jfVlAE4*c0F94[)Ud5M'0a"aTcieL@qVc$
N*HL[e@NFK%3!5XmE*BLG[8Y1pd-b0SV48-YJ,RGp-ZAHTH$QcP+K-'3MAZTdIB8
VFeGl0H(kV8N@F(f0XZ*$*lDE#21S3RLdH**iUBr&IGV+BpBSL#e[dN0[93eLIPU
*FPGIlqXV9ZaLDaThDC%%$kEUeLGQ1Ui"ND`dUqqpTep9N!!rN!!Zfc)!cfA+K-3
cGX3p"`1E%+$dd-YU4MIX`Db9iFQ3!(GkC5QHQl"&4-5JXfl34!d2(@pf&l+m13k
XEP3'"MAhfY@KGMdk`6rB"3cFmH4,d-RG-mB16)JY-+4lb+f28UmM)Z-S5jhAADF
1jVLKDI*AA!)p%5jb2b22MBd-GpF!irr5664VX'$+'-dlAQ1aZH9F`"8N13cYkZe
Sjee2*rJN%kFNBELh#"#Sl$%QXelS,,XX2Z1hBQ0Z"`"S`p5-0-X*G5CT@j1U-Bc
)b$3`@0!3-'C0aPH3!03B'j**Dlcme1k*`rF[h10BXEKSM(A+J!8@N!!88,-6q[M
a1(b9,T+I2*+a865TYQU4HcQ0JQ+KTfQeM88bS0Q+UhJq5#@'3G@,e&([+aSKY!$
mDS1Za(+Rr1SUS%M(((480&43%!ULMdblMRJY84[D)"m)k,YEmb%%FmqAi`$)F0N
)Lq,4TYBEcX5KcB#k"I)'RdjZL'2B8fbYcajG9b'Lk4KIJ+GhUr-SGSil[aCq*6B
CUfcG0Al32X0m)VT)$`NJ"K62l#"UU-%cl!*Eqj!!XV69BJ1pAZL-RMY[Q(DI[C!
!KSUC+XcdKiUC(1,8HKcN0N-8BPad@lNZb,j#h'l!@!jfE3aIql6MRK3fPf!Jm&L
$@@mF1-Il95SV0Mm5HUC`5e@qk*J")AlBdBIqj9Td-!8l$h([J*bHrEBMbFZDCG2
54*%51VLd`#CGRaVZPZGf-E!cI+bi&e8JZ,N5`$8&Y#J)-ENlRl9QjcmYDJHCE6G
-D(@YfBUp'LmRk("em8R,fkFr6A)Q`"2Y*ScqQ6)Da6QSE`1lcki5D,HY9@(N"Kl
9XLR#$&!l+6(Tf19+XTr4VjP)l[SR!h-R[(*m)k&Y+N*NmJ(cb0NLPFra#)Y0%lR
I3(!,UlMTHN#al31G4$N9+NC9e36fAkpQC9KNG*L[K[!VH*+,`4lYSB"&8PG8N@G
D-BKK0lDZJU!NGJ$*abPm@eG%Qq2MIIV+jFmL5irm99#NCF64MQ3q+1[Nj#UU'bk
T*QpB`EM+55%2*0dU0VD5(eHIV%l&T3lZFQQ,c%k6+PFLc5,8eNjQMS4#3FR&dhN
JKb"4SH5[UNDrPY54mG$p8MFK4$h+`dj)adSpXEAEB9UZe1b%Qh2FG&@%"'@8Nh"
B*J'N1-@5Xp"QHMjQQ,lNd8X-b&FJDP4Jm25Z5m69-2GMHkq6[b&(j4#1G*RFMeX
+$3IGmL5cETCreHl,'EM80L3Ii))rTMY(l&("-PjDYBY5$q%KNT!!XjULBl"b@A,
kGlCTQd9I4#&Z[J3lehpfQ6e5I6R,[m'G6TC12%ARVbk*+j*TX,2-ZL6jlRS0IQ-
QiD(VN8N'FRrci)'8XmU%dlejFj5c3c0f@cY`r3#8il2SMFPkZV3pe!RaP8p&TUT
5di(aDFFh#%ik6JmhkAX@QT8"1cI4'VI('F-$lX%PJrF"VB,*E+h5bEU%(NX@RCR
km8T+[@k,2d96,!1K5a`"dApT`ibl-KfSHMFVfli51P2r2Z$Pf+JN`B4P&k)VCU'
DRYAe%R2X4Bqfc`"ECfF60,3@TRjhUq3$HGVR+mG%ShkLYr2aNKH+0`$31K`dCm&
ACq)RVr00KrVkkVj,3G2f[ah@3aX82rkIY6N4j@SZ8L@T,+LP$KH@dbrrX@dI6#"
69ZP4)G#e63jKNh5H63d&HTD'6B+bp'5G!+Pe"-9ZkhGmDKTRFjQ#UFIA&qlc6)X
V8q+e5Fbb5f*[ASkj4X'6QIl@iQ3RGQd$Ym&6HP-,TRkL9Q0jBT',FD"L#BHra*F
i[1hJAV+mM2P+$Q`B'0L!E",)5TGpQ`#XHYXAI,KlkF1Y@S6-Z&FU$pm*(rHhiBh
-!&B8ElEr[q96SY(d,0rAmNH9&PVY9c#Fqi1qfKi`#k%A2EUSRD8$rhrFSAGR+aL
F*jhEeFXK+VHDK@Q[q)lb5L6S'YD3!2M(QG8I!JlJIVK)TmaT8iKNqRSFhZTR+50
I#C@$QTd%mc(HY`p"-@&JUhZ,``r*IL[-mPP1hd*TqrUNr[-j9"RKQ14F"ER[#0p
Qi*1Y,mLCLf,r2G,U9e8TAD1pH+kpVXYefY4hFPE2(q%9m5GZj30qAKMFJqEaK)-
C5c!eekChMUjlb9c`q8&#1ZRb3P&CG6&R!4NU0qk###3BAm!cb33hP`ThL32$EBl
6XCl'YEK'b40@X9AYa&f3!&G2BF3)DSpe2C9ealmXi`PeF[0h&D85Td8ZPU091X9
&Y-4-clf+X1EUP5Q3!!(TlVm5,U)qA'H@N`+Y+MEd9kDjq)`FNdrGRAMBe8(04QX
ee%M)V$G&KjNf[!X1jcedlAJP1hcB`CM6m"iUk4'9qE3GFbTP$ABDh$dcMriE&99
j6Uf@,BQPMeDQ+*S(+$(Xk611dH`eXKT-8Kf,#RU#Cq3Im%YDZ)N@DD#9L[Nrh8#
hRH9XIbPC9IfC`V*ZU%0eiK%4d2bYHUEa-5!c21*939rZV5)eE3JhB,iHa6"cfQG
83@q0kNT3&eESV-'fGkQFfTear6bHM%Tfh"$"piUcY8V'EpY6"*22&i)m8,#r3)k
`EJTH%bGLGMPRhUR@DQC4VFZNVY"LfTB&AM1MlZep"K(%8PiB1qqUiCrY(Rd5QR&
h)l52fqXPI%[lDViJQ4(K8UlI9,1D1$8ckfJLSI,)FI'mM5L@fLie4Mdk$PbL2Bi
LiQlel3&jf*pIPNVDa%Gjh@'AQceQ!qbK1qK5P-Z`ZiCQ`10PV(pfVBlkG"#$fJ'
AN!$FMQa62DcDB+&M2e)G-8%I$(qCqc+fDh8CT4&p195@H$&$!c2fJZIf0mrbEGp
&B(d&%jl'&A4[S(H(RZ2eCPf64D+9lD-aj!m#q!)F9UJLijB'&Ffm"pRPKVA0ScR
rd59l53HT'!qYSp'81&SmAcVPaCK2R-AM&M1YYUT3L16iX#4N$TY08&EUUHkT8p2
@f`5G1-qEF6K+FPS#hIML*U!r[2G@%%l0`8G-,H'D*RD-GH5!rZ[2A$bMELHk#(T
fU-5'Zk1bLSS&J&Qc2%S5*XZbJ6I[`*!!Z`p-L4(3Gr+0"Z2fbcaEM1*pA8RI@c3
PACU#QN%rY'5HqMl$6Dp9MqAR`dSjeJfeYr9HG-*4fA+e'&2`Yr%%c#k!SF!l$Z%
Y8mr21r3V2X[kh6G+i+AHA9E()Bq2cR8N1+Uc&0L5em3QjKM"9M*d"R-6NCCcB)%
q-jMpTaM*hIliDNLX0ccpC1-jXSA5Iq5BAUTKNSa[D5Dj@L(JB$DXJpphlfkYFEP
8C#K'cDT'Zc-VP&ET(R'4rd44BMA5qSG,k"FGQ'+'iHLCHJaJD0d+)[R-CHUXij@
KUr&QCMI+IDC6"Y-0Ka+[[CAGa%$RdPc&r(irc3"creE&cdeD@pq,KP$f@Grk'EK
VY`[9&MQfVh'!%8dE-2!IS)aI!fec8[ARQp'"VrR$kVk`dV6SVX(lb@e+4CK@-Ka
mAU+DmdbeTAf%2Sc9BZ9)HDhG%+696eJ`jHllaK&"lH1LQ!&L#e+e@f@[8p-&cFr
L`h5F9r&cIRT5C+i3aR36"'RGD3"--HHf4T5"$Ke`dB#p%e$(kECc'r#mlF0J[FQ
IBLZ)Qm[4&a&SR0+Hl"B32iIeFr3Qa-p(aVI8(5G@19+$%YJ'ZXHHG`+hpRBQYB)
i)QP#S5P!fEMhh2cI8L`hTKj@T"F3jI$K"J$cRFJ#hYJC!H`BTF1G6'V$&b4k@3d
G'&d2#H8CH1LLX301PUfSfFMAIE4R(j0k-(lAU"CiG$k0!JD%ppkCTURPT1jBa(i
dZ1e+08bVe4+`R$$YaPbVl!dLeX%I(IBT("AP9L"Z'SZ,j9RIZ$X-GHJ&lP8BHNN
%r#pacrF5P1428d`I-e1lmkPi$*3m9Q9EY(4ZjZYi@1Yh#-l!"C+23Gp-F&-%J+Q
Uep0+@2A+kq2TSh!a,&d-8KIerbJ,PiX$UYR`-,LlM#d-"SKDU31&imc1hBA-,Md
$3NXHkNpSVKlbN9'Z@PL9Ej85p*'P,5QV9&k4Xf,Q*hZI`ZY-A(R,9$Q,e(+%2TE
DTATh`(QjkHN!Qr-Hl%,-Q1!d98k#")1&CS0B1HT2b@lK6elSQP08B!*2+q'HTA*
6'#T3ZH+(e)N(R(b+P'`P0Kc#&Mjf)fUIT`j+M&Aq'!qQmXk!8AM#NKQMY-AkbSr
TQrY"Ncq'TRf4L@KJ96XF'fm!65J#a(L#%-[HN6B3K`4ABe+Fd@1kdb-#m"%D0q%
+pIN84FVr#(AU'A[S$T!!&J(F44F[9mpF`SZRYiZY2-1fQ@Z&-k,XTcK"Q3eE[P4
,Z(i[hEGU'GJf54$b(MJqQ2(PR1*am#rF*,IBrQd(JC03`T(E-IQdB[j6,"-[9X3
U%RjrL05j&-+j@Ql"-A4Dr,YkG%1P3NkR-"$NbNXQG+dh%!K3+8m$eC'(!iUDX(B
m3H*T-(kB-0QSkY#+P0b[3NM2!cC4"5!IHh51mkLqc*[CrEcJZ`fm(cj@6&L"*Ii
jh462rPB(RL@P3peEr%KMUa[VMm5@$QrBmH8*Tfbi38HZLckl,N*1Y,(1I*UFH[%
%bhb2LLKN)5F-TFa+6Bid9Ehiei-1kK,8ZdfGAV[T"eBSSTRkB,95#-c2115r+b$
k+qPc0@QYSK$M*'Rf"llD6J'dCH$r2e)a@$lhhr2DYV"lTdZ'GHA&VUjC%Zp3*M3
Ci6a%aHVLrEPdUQi8Gq)ad`0L9aTHVB29pMM,5[GcMr(e[QCUDkNJi-TbJECV$e`
G)j4d@!m+YrP3e)*S9Q(jBk'B!Xq4%`)`8j'Haj3LjIaK'RD4Yh6r64'3!&J+LQ-
5$HJQbU)SA'0$##B0&MBCZbc1bGl$-@Riq(f8@3AFIY$YPL+9-XNTdeqm$q`Dk5*
N[DJX@0mc&4Xf3ClmSlM@`dbiUB62%im`0RFpeCV#b9C@*LB`()(HJP1*&9CK!lj
q#8Z$dX'qh8fJSakdQK(lj84Alh-i84,MST,bp%9$m[XrlL'2*80`#Da4+c[lG+b
GUCc&5VccQI80EUc3mGjd1b&Vfl$V9&#lHLBCCd!khVc`pp0lZDh&-A)f3Fhk$3,
m'NF6I8a*`hB4+!b*U8(5F!jdV+'VEK3,Jh@mkicCA)8bNP@kZ,,k@49eCp4Y1,[
4S$bMcDiFL@3dppYKm213!09)-"P)Uh5ZY1!35ICT$152R@bH$Yl9,jSbKDhjS,K
DDUj&-`TL0IGbB82D)UTdVrL,b#!IFMCL)6`3LbU6)mIMI0lc3$QE-)AIeaRZMJd
@,l9H-mjSqE00,[r[30$`5`%2%b5%+0"MMZd9`0C,V-a%eD9mjj8AKU8ljP4(ZTF
'#@(@PNJ%'kE-EUj&!TZ0X%`L6VG'dZ@0UIIJFfM,B,c@pQRFZI8d$CB2[lbd$[M
[dHd0!%CXc'h0MRBQQUl[i9[f)2Ih3IYmE*&bNH2JBdJ8B"GKA"-EC+0fih(ZGX%
DE8V`EDV%K15Q6,Z8U28L)lU[ZIZL`"c!K$SAUS1Ij55RRV6mRj+#"KhLQRKCD`3
!k+G*aSkP,2lRB8ZFZaMmm@9IRP5CNEBeR9+99VS55ZK6feDLm0*(Q6JfNF@ia!h
$LqGfD*3Pc8404%ldKHcA&1L(ULhXYpRN1*3B&2Q4(rA*I-BrK#JG1-Q0kDah'da
L5,b(8-'&dLa9Gk-+[VMC9P%kE*1UT&[5LFdY0ZMI&mm@pmc!F$SM(D,'`ch(5mJ
68)a59GTbC1#dk1[$"+r2EIfDSbYiCM,U@R[bFY[1IXGKbJ3Ll&1Q+a+@!CZj&K'
Zf[dp4biXU0YJ()A"$4941-'Mq#8U,M5d2P+@#E2ZKf(5!GeXj%CPX"P8l[FdRRN
q`eh(CCE@'5P-YF1EI[CV(hYGN!"dMC91GZ1(3KMd@S[a*CQiTB*3X$hE,UZbT&I
X(k`iI9Ldc2!K-cEHJ1#%TAid`!#qC(15Qq4#[+&k"ae*iMc0blUaJfh,SL6rT%j
%*8'X*+QkS8lG'-`$`mVNrhb0JEIDXNDqUjrL,dlYPlDl$RVBmT%YikVN'1r-rI"
23rV6)G(@*2K(e13V`$fB$TXh*QmK%(j%TB4UbHh$MrX-#S)IpD#2TFidSl-$"pE
CD86[rcL2RDaf"cq)VHak-l!((QX1ZQ$Y%D"-KJ5%DRbELlacISAGYd9fj&Sr1Y!
@VVXapHS-M*be'F[mbN&9cmU$LXLk+0q`#H@a`f@)(*c*6hki%3lZB@ih8[PD'L2
lGpb#L)EUB&$G)$Q!+ja*kc$[[m@l*E8,)R5I,#$4D3pmT&*bpZ*4AMX[+Pc,1mB
e!RfTaCF2kfNPD'62XLkl,+p`@QKij&DBajL8r$UNL%m"[[!i9A$XkLXcfcYNf8h
*V&RMK4(d5"QENBE$kY#ZK4e'l`L2lR*5irKK@pMU8HPaRe1qC'Cr#N#e(Ua"JZJ
&PNiIrpc)Mc31PZqYiaX"0jfD`qQ3!,9eG3+kDNQ@6'h*TXpk$,1V*IEM%TC8,Fr
5ER,D3V$MmU4,e4TZ9e%2aTX2elcCYZSPZN,b9J,`e$Ih'aSGbe#3!*3E8bm*RIF
l3F8+3,`I%$L9Xceb!ALqGFEFJJGc-DC`LKKYVYGARFPNV+LNi-PP#C!!KL*IKN+
&(8eDCFf#dSa!Qh`Pb-b*khHSS)0U3)I+d@R2[f-[P%X&DIX%2[k+RNP0*QS&"c)
Rd*!!8iL1&TKc[UD6e4'rFS5lRQ%iZ28QE,%pX*Q+B#F@B3[26aRYc$LihcdUZIA
TfVPjc9CCE8,'#@$0kA'5hrj(h1i!US486rBG$)*QSp-025RJHCm[*KYmBd2I!!5
AjJMl4CPG-&*p2ihF)iMaM)IZ+TZDBLBf+AVc(6FcB0&DUVdA6e#PfSV!NXcK)5G
fQ-VX-FIicik53a3Zkc1qAVApVKmiVMQFKlj`+K!61H1`IT%4BVcUaf2BrD!@KBF
Q,IKNl6mFC#SDpCiIfY1Yh3XbYHkhjNGj`X'3!#SGRBfqhRZ-,K(4'ADf4R'm(9H
46q)p"pm3`ajhDTf0J1#T%Mmc5Lm5$1JJp,$U!T&V'"Y3-%APZEFFYXLbl9mUZG&
h&N1[61H[2BJAD%9rJp-FSc,$FpHi,jSQ#IkEU9C6rN(pl*r&0QTDiD8pTC!!rPK
,fQFYhGMRYj3)3A#+@i$E2hJB)q-F2-c`hSFbS+K'#[%V+jH"HaI"fB%B2Y$h2H3
jlDCU(D`m%mZ5@1%`VSp2YL!rpY680AkcQUa4e(mR*LL0damYb@ELB(J)F%[P@0j
GlSDepSEIN4RI$(6I&VR$4fH$KhFX,i#ZZ*I%BE2eTS3X`d`8q1Mfr3hmY9@m8VC
BQhMN4%"k,1m'`l0EQ)@3!)5j'HYVfh3JZXjqYS$DV1Q1'@N`%TKNPT)ll",*8BH
%4h6prm2&`53EjfA@R8Q4cabK8IlZdi"@GTA`3KL@2)"Xjk[$VkATS)eEhjIkANZ
HhplBd1[5"M'*0DBd5$bT$3rmhlV$9RF'M&ADp50p3pECq2CLVJJ3e[apmYJq[FA
qlIfeAlT+,IH[lq@IL3e"SMBKXGeR@YcKBlq5mfKEI1VAZc$ipM0rZUPk6m4h*C8
Q4AlFhMB@l3EG+bfSNPjf@aXi3hr95B'4QSJP1BEZ&,Zd5p'&3F33NMiK1J5K[hX
cXFJHle!Q-iIL-r6l)Z0*,TXpPJLL6H#hE0dZ@,JhBF@4eBeHF0UHY,p+@Zlh`@r
!@SNK)JmAJeM!9'M58K+X60-!m$#h'VVB&8+VU&H![5F3JH%Imd!r#%CX,VH!TI9
rPU`QZJ2+f00S12#@aGqLCPkrp%h-ZR1j2(eAf3bZ1V`PUJm$Ai450h*4!aCZ0Rc
F6CSHTZV$)I#adIiQ%'q1fXe2VGZ,&b@ekFAAIrQ"dci&UY@+BE48#MUf(DYZKe`
p4f`K9AIqYVmdch@B')%d2%kZT*efqU2mK50EjA!!*lR&j*Z#j&qZhN*hVTLqADm
P26@BL2"Zaf*M@DYY*'Ld@)-N"ThT)3ZRBQXV``'2BR`rL0Ip+4k"hF+XJ3TVV-R
IfA"Z3aDcQP'4m-kSj(A%9e%S&lHdK"14*L,%C+8Ei++r"JXXMjYlm%Y(EIR6+VG
FZ)`)CmjM#LTa$XqmYYZ"r,D&9%G'M)+HA#Qp$rK4QfX6!hS@$`a1r$9&22PYFTm
h9q)32-a@J[qGKhXV(YDB#$R[N!!1Am1cBh[A"$FNBb+0SFrFFpYDU5C"*Q%EIk@
81`4l6Lf+%#'26l,Qh[L*)5Z@)rrTA$48Kq96)ke*PV5AYa+TVB5YqiI"$AjX@Zq
NbQmAMD3eU5$*TF&Ta#P'3a-h&N,'2LNj*8G1ViMTFLiA"Y3kfFrHNS'9ZJR@6,a
%Mjk(C,`r"(YjYc!i6J(@G(E3[TAMaA6cP9GrSN9e0Yib@'N8`0QKPhX`(Jblj12
*C'(6@KL@V1FPC8Zl$T[SiY$@r+XI!q8UhIQ)N!$6r`YAFkUa)EkhY&l4TM1$G*!
!qke6@-qL!!p@BCC@aER!F"pD!X!1GZem9UG@hTa@!6kGh%lak*VqKpScqL+!9Nm
Lpb%4h4*Cm'bIrmA2BD@V42CY3)DD)ITLbSqqF$cNG%8(eiI%R5*eAG!kU4FX),l
!GV2fjR8Mm%*e,Hri3'$Dr[Qd2`JD'c#M!@C,GhVmM)Im5j!!GHG(@AbVZiqVIS&
Sl0(RdABBN@c0M*jS94'QdlaXH'f4FX&J#rAml"!NLD#1-XkqEN%4Q4i5CjpZ-S'
CcrF$+eB"M!1IiZ#qblhYBH%S9$f+&P1rYd"Q+Eaq$ceeE(3@,NGb3VArGhlb)am
P-"N"Y+'Fhk3U#Z3*PCl6NPF$0krf9SD#(LDcN!!4h9VF8F4U+qe*"G@PYFqZ0fJ
%,rj[jRleGE`Cm)2Mc35#*iCUUJY`2*XaEq%"M)8[hAIdbAJThG2NfJYT@!*9e)9
Sc+dLkJ5Ykq1eX$C",pS!4-'RkYT(YqUAqTe0@*UYG)-Y8GfTIH!+k'krVAGcrP$
,8XQ(6M'XYC`IbVkQ`0[6r&5hV'BN92Xhfhr$5+,!0aT%Gr82QHjBCa'IJ5UJPbf
U520l@qT9HJ*`aaf'1qJlN!$TDB,mZT%",8#DA@'3!"dhZ+NAF[a0-e3$YJQY"El
V!cH193Yhd2Aqr(LUDdY"K%IkI9LB8jV+TA+fij!!cT3ikrNX&4Xq-4`E9!qp$D"
kR42JLN)P(#G'i)4pJZD'!LjQ##4,AG'4*#1pp!pLQa8H'hH@DLAIGeTC#ZHA5YF
"KGd`P*ZFipVH5U4cPJUN$G)iAe6akP&ZBNIIT8icM8SA,,",fkHFY%YhTj,$X%p
m*Y@XBHl0Z[r*)Vak2SmaqID2[af&PVd@d2QdF#hk((,`4prqT[DB0id6Z+C`TJ!
PP5CA2j!!+KG2I$jeqjAEllQ9Y[eY*YY@Jr[bqdPa`Vc#`8"Q9*M1'UGI$F#TNJm
kDN,dKec5UTJZ0N[)PVDmY)K80)Ker&ZZicT'3cUG)q)5N!$%`$[&&3f4Q$q'Kii
jKHlNH@9q@aTJXE+LJ)kbFK0bcRrZ&[1-lP`K(mqrMkEBFQ&@h`Ia[R+h#-ShXI-
aIS-LE`GA3F9I+p2%I)eQ4X`fCb`)ljDkkH"aBDpP)B)m)GdXrKTSi44"`a@1Aj-
r!&9,5NV&HY2dpl1&ZKlG"p$HbSed*5#Gl!N)TdqH%pc@#)rrP)R,-ICmY6RCrrF
aSNiQY*(maa4FH0dAY@,6br3JEFCb`0#Bp2r"h3DdSPdJ"SFJk&Z0'q"*H4+5DUU
,Rr'm!eH,f$8Y5Ze,L$c(ca8%eG&PpVUr+d4,`+mhRNRDQb(I9"+3!"fB`(6CfS#
8CQ`bA9BqmTG4mI'f(6q[aJrNb2qr#[M`EP$"6NPp5G4b8%ZJf`#JLFZQ%bENj,V
)V2"I'&IePSfeHcRGD*Y5(8P'QMrjNrU*r8X03BT583!Vrr,lPl5FklGjZ!DX8rH
$%l[m4p2#fm9EQDdB1K++*Cjb&,'RcLqLGj-B1r+UXc`cKIcp,eJ2Sd%bUC!!J(S
kF8N&522NGIe(X)2%jfG`E4@1$'aC3q3Q$,32d3kTK9rKd"&,m&EqJdQkek6jCG&
f+c*qVkc8bTK@`1j!&+YN3JVfURK&Y2XBaB+cCRq[V33*IGm'ppFJ@4ck#"P1&Lj
fhZYT+i2Lm9SJM2#kFVPL[IhQ-@H'%RJrijJR"I,A)bG+%Qp#*8LUQTc9XEJ,'Rb
3!149V82B2@kf(a*05Ca6iq2`rGX5-LEh+bGT[ZAD5`)PidHG4"f-MjRqU2'3!-&
CpGI4"IG4!rF89mj'K%lS"rJGK3NKV5UAHSiL#Eql9K$mBVFAmjjP*Led#FMTF0r
bSr2R,h'`blSNIc"%#4-PGBNZ&FKHP&Ne+[+4TB##88Lm8rbXP68bVjB0r2PB64k
jC,B4QC2CHAAXUp&e0DAc4M,SLb4`AAmNPj)q#(ZVRN,aE4MH%AM6DPFE@D`"1G[
'b0,9pH6%BjP*SMH4YlljhrXrA1q@%EkHeYqh*'9a(SA*Y8Nr%HXX#PIAi9G%NSN
mB,%NrQ0fEf#HhKNT9($D9ElaKR84QGBfh[))MYpLY-Ze+T*Y3Zkk4TEA5h8cI"5
kTrK-3&HjB,3S-mIDkmK-8ZP$1N(F9JemA8q3!-2D0190LYP4m6@f&MkQmim3iLa
1)U'3!%%4GNeYmh(Q``kQ!hVqk++)R9hbFB&RQ[*MecCG+q8"-ia0"5RfC1Sje%j
0S%iIjG,hQi`TmfIb-"M8XaSK83I'Yld#[Bp4ke'i1G2-#8T,Nh8)CLk!l!D!Se6
df,1rrp3kEHl`I8F$!+V,5'HmaqXUde!apd04C'iDT)VhXmCk&ikXB`(TP3TDVJb
3!,K$S@ITM)l4ri!D)QfiXE'FjKLdaeQ9Teb0fMNaUCQrDDBEh@XZ*,VaCj!!'Ab
ZG94'T'&MCZJZ&62`J!4%M+QLf2pT))9Y"))'(&hSARQ(FCcph*4qS@@US1P!''1
q0'$`G,fC,*34r,A96PCaF+8UemC1X!(d+Md$`L,MlDB9@6b6E8DH*1)0lRp1!jN
!32F(i%b'(NIHG0,P0Q5'lMPLh6HjK5%6LP[E1aYr5A)-F6lbk+ML"dUm%me*,)B
GADJZCKb@BK*iT&H-b*!!aQD$LZ[G'+`"M4MQRmkQ$#(K'SLHK8MTI'5,)I"iEVa
jdZVq*&h[0Jf#J!jUc$0jIM`4dV1pT#$*&ZUThl'Q'GTpc5!8cRfac0%15kp"#'a
MZ6ieL($Ge$89RLbJE[AA64)BJp5iIEEhq9&6)2&p0(SXLK-!JPaYj1j0rf@8pLm
TY%b(E8EUNHA2-PTjTm#K92a4rhCheZ6RAA$LE4`0REC"%d`D`i%`4H`r9Sh$F0+
Q6K%f!EIFiCrEPh[CB-0"V0c5icM4T4AhXjNbSl"AbhUNj1&JaESMBR6fk"1#$#)
pa9+lr2r4Be41@Vl803caiR"j3Hk'1Q5J'ZHD58lam20Di"FJKY-3K4Y*@IrBhdG
CfGdB6PI2-VPZT@d[S,HjXC3)JaB(Y@!&ab@Z4ENkjl6MDHU")-cLcb''G-!-E*!
!PSYXiCEQ#MDB*E0BYS4Tj)TA1c"&+L)&RET,R+pP59S!lrC#`YM(2lhBGZTbCf&
q&q[$#Ujd8U(BNfJe4d!5p`"1(qi*QH*V9@bQKZTR4[2U%+Td84MNfFIaiB0BJh1
U+[8I*BifDRIE8D5,Z)R+PC!!-bmpP!*mp213!)I61TK[*S`%J+T[5,EY"EXPTd[
hVkfYHa+dFV911M#c4KfJNTepJ&@UrRl['Y6TrYJbZ,YF#cPLPGEp)kE*hij(*q)
D0"$BAb*rFfGfGeNdS#T3I(pITCq51ST)),P9ZlXSmP`S2c86B'KEl4XZrNa'@1`
b3rUPZ2DPiXN+L`K@6LKkIF&#p!'!(JbiXkl#,[P0mkN-$%k)`T8+QBI#`ZXi8&G
JZ,@Q3CU6j#U*&DP%rTLE#PAUhc)5(+d6Ap5PHUa`[IM'(qM29%+eF#@mG'M&24[
')Rme&cLb%$*k$qh#k#-,&)k"lLBDId,H[rR"LDNm1-5-3H5e@&Z2@-+QI+EEZ*!
!Q%!EPfF&-8LPmYpeG9TdT(I#2QBeG@5lDpkX"d!lf'ZQPDfcbfVE%YUI2V$M16@
qiX5YkcHd3Q%1)d+M4M[X!Ai$JQC9P)R0GDZVG*I!HR)NUc3`E0JZ(0UajP!qe')
[PpQ"Xe0Uk5XfL-DJQLI*UeM,jeT"60qqblRTRI4`PZ(+L998VrhZ%"@(8Hh0!Z*
%J2+'3REG9)8[#h`2MhaqGa`BY-99A3@Y6a`&@RDb"jHUccH5qC!!TQe4j[HCA)6
2b`kA3@AC[l02AedZ!r5-'kVMcV#LUjP`1BYJ(&(TEJp@GMRjP#A6"+YJ("K8cc9
JF[c06,20C(FG"bVH!@*TJ!,2Rj-cL35N2`-,'j+AN5MFTre8EQ2$d#Re%C!!0JZ
qPRibpqZheA2U3Q5I0P,I"&K*l%cZ416pr'$eap21@X"%`Dh$UUN#eG(DEU`A8`5
)MQVD"8ENXk,2+'1&3,UFkZNl"Ce`(iemkUhE%RXR2XV6G6lSQE!3Xk`NA@BBKer
Hhe%!K-#GeA0l,"8k8Bp46Mi"Sq315+6(pkB)f"V(cU[+)9+D2D*&6[`k*b20"QU
,E"Bb)"9lm8c&(5(b%K5GNf)`cG`F&jbr2BXHh%C#*MASM#F!i1IblEIX`R&*`!M
$9hPj,,,QB-CC`U6l+Db54DCG2H-@$[RTmaB"heH0D$BQhq85cI0MXpp4,"DL`L)
bYbHV-LZLB$EX[2AQPiklXNe[AdHiLG!'Ud@*Vhk(K(KqUh*YeC[$Vr4&hl1&A1&
m9Hj0GfFEC(ji9E%'%D'2FV@'X#DBXEqh`JV45QGhl3M[V,d+6Tf6c1@AT(6IDh(
b+E`[4p125p)RdL9jR,Gd*F-pid9SC,@b@Kd3L5"TU1ihb5G00"LAPe(MEEhBD0N
KDD,Qfj-Z%aYLN[K'MkMc"Z6@"PXB*(DB6Z-`$#+fq0Y#YCCF)FU14HcDVX9Rrbf
jR38Ub'EjVC8*kRrd58'q$T00[5q29U4DD(3+[1K"LS62VSj%&HHiLTZ`J,SJ+4`
jifBD@mGbl%S5$Nf,$b"%i2!hqrA#4"Gf8m`H#elA%!S*Mm%$hNHTa1dQc+bk[9,
+-Z&)%B#!Y'eE-*IJILFJ`6YPm3Pc%3PDGKR,YH)`"5cl[[QPr2['blc+6#J5[Kr
jGMS6U`)Jklpq%FMU-bL+`M9-B#(-k4S6fcQGASq(-cehTKVADYTbhI)4I&Mi-@V
2ZB3$G!%i+hAd)0fdR414MK&Gd4SIJ2eR"&k,'*4m15bU!F*m,pAED5rGFhk"KT!
!l69TK6'VY2*#Y1ETZJaBdQD2-YIaI4LFj%K2"l49hc5d6cN#G$fIr%QjEF4Ee6d
j-X4!p!#2dRm(b5')Z4DhC$ep(122C33a(2h'RTXY8@,q9S0Al@T-M6DV"@SU)!%
*J6P2-IP961h5*TD2J98(hHe8PMd1B)U9"qZ1(-KP-rG%mTC9-&V*DHqVbk#dINL
9VPi[%L"*e*r-fT*+1jlVGRF0hhIG!82*lG-1dPclJ9E%d*FeKKX+%hkAb6&G`r'
Bm@Ia-+"#fP)5Zd`*pkCE604eiXl)CS@UFkZeqd'Q+RVh)$hI48SFL%P8Hkh8epP
iMH42cKal0aAP"#NY`JTGKbRANa8acYhdCF2*%I%a0$UkDR0caSR**-J6r3!Y5Xm
ICXPciKUk!cf(q@QAelq$MP3%2$&(L4)[9ibqjmIi9(%S3fPd%)T$GrPUYF4,8SQ
pdaLUDp"l&RcAK%+2-,9L'["&E)NMej*@@XH&Ze*P13Z,(kA)5c)a8k9Y*Nm3'1E
"CGX'CP*E*KNH2#95[!EUFib%'XPlcGBNjc-Bl'N`h![D6PU-[fdh$S`VmF1a3hZ
Jj3'3!!A51+KGqE,aVfQDmm(8$m"X8Q8bkmNq3FFH@k3CTQ5QCbL'a4Y`Mc$Z0M#
2mB@jlDK@-UXZ[`&*ZKlSFQL%N!$"ceCUA-9hP`m6!S2Zm)[[13G5pb28lU90`XZ
C,k$Rpk`r`#9E!'MbEJ5Ld@@3!1@"i&I1kd,T%lEU"rFj*8$6Y06hMq`Blr[mGh2
,KC*K$!$YlJ'UMc)eS2H*m(IH0IKFBJShi49Vh`eC*UlpLJ"2N83Jhf0d8c#kij[
31B9,khiQ'Yd4XfVX6M-UBV)+5EK-'pMI&2)JhE43!rbHE8R1+lFf(ZbHP#ZLB)#
i!XP%@rm6Vp(2BR0p+UZ"hYdSEIG0ic4I1*EC[DcB683L0B-ki!DfcU*PKK`TL&B
LP4l4TK!C9UijKmqH`V9+fMG4B$Q$Z4L,CJmc[0F4FdeFDMY5+9&`ffdBJDbSqCB
G(d3#Yr#%%)c(%*GEk8C5$T1DD'rA9-3GmI-b$#2U$2dpmaemA([BYiD1N!!H$KY
!mP&2%6dA&1IcThCZ[5+qT[Nl9YX$hC)["JS%p'LUIFNq)Iem2L--rp4CHFr$-Yq
C"NQZEXf@UEfKPYph+GDkK2E!CqP149[Nc6)@j'ECmDA2iiS`Br,,PkV&Sm-CHY)
T(#p*J+qC3dfCV*S1U4h)r4K63I%rAFGEpX@@Y1iG[23*%aDJRhdF94##8Ke)4F3
&1b#cEIN#eLVTdkFS&p3@HrcN-5PH-8cD((+XHk!4%U`b6BZH"f4)qBKbb62m#k1
RAHX`MI-%5IDXB*)S&Xm6U%L4)lp-91ijMc&VQq-HXHG*1)m6,M+S@eJMG)TGHi+
0rE2kQPd&a#FFJVS-`a,BJ`J-YAB6,6MKQSR("[DlL`lc%@T1RCm3q,2+dbmKVZf
CfhhX5D[M@J2GZ$P`S`"Q6#N[0qT8"(lHaKS6(1P0ThX)62MX+'+#H91bbd-a#4$
ZM,m+fHS+I-[Z,mNiLrBrQ5pS`$4)2G+%,3'TKKX"p4NBVmQbfmUbeK@pe`(D&[#
lND'RIcr8QM$X+m+[%bIV'2%VS"99AK)h9K[N0Z4++-VTl,F4!)MV5,)EV8JcfXe
))ieT!mATV-Pj*l@#`f3"if+)Zj5LY``(#aIej2la+$V6!RjVSdPRA4eFE[Q+[HS
%2M8M5ZLZ`[D%UY@k2pNh`K8D"X1SIJ8`F49!ec)PFLjeYY#[&M04""&48B1-q[f
m-)IdQKe4pK,EV`LT#FIq9&VMqqi$jaUYFcSm*J`qCJjqkadJ#@!'HjN+5%AXXbI
dLKK%1FF2@ZjLfXXcFBj2m85+[Tj2ke-'ZJY'dkSc4P(iJYK90kZR0jL9ZYeki(q
"i25d`K9eCjDmFiGF(&'!!!k!`BHZM#(+el(QArJ'1MdM5FP%+mUGf6C-`-Tf0"k
XK'@pTAGFXGE!bV86bA)BFH0qY92c19)KUIJ(-qDfH"qifDN)heHDV[M+i1+B6bL
P'GA+d$r!2%MXXf44@`EjVb)e6LlSYT2f2(TZ8Y`F"$&P90)bU,#q40-baZ,6L&*
Q'2IbJ2N"pe6Cff8$eU`"P)UcAf'd1EKNX!GUYZ[20l%I4E28I"*Sf,-Ta3DlPF`
RfjIF8LA[L[K#M,NGKem8Q6P8L``&raPVLG,C0V5RRd,YfaP8eF5RT%e!DR9L(hQ
EK6M*Edm#3$)SYV0X1Q-Pd2!p9&!@-b[P+2fS$b%P[GSKXlf)'(f0!C9ZDKiUM(r
6$F)Q33Z!j!r9RJI6irK`TFhA`!VV'il%0)bhBX@JBE#**PAEbRb$(6$Cm*`RE2L
(DH[!+KGHIk@(+e2@RrR&H1K"X'6H+2dkVcCE(6kmNi(eBC*c(XJaJ3,)mRG14C-
2-f`mL2`qbaQ8-EL4CAB"Xr9jrpD!LbSeb`3EJ011FmU6hqK`4!UmK8PXCRh+Q3b
%%(mjd2eG4A1D8(NfY&JNm`[dBL-m&0lEK%89'IZ5@3mMBqF*@fjQfAiIP2[*4Aj
`S*j6(XN5HZ%I'p8Hd[QbqXGTGT&CA'[$,2BNN4aEGeIkA@Df)[G18Q3&pYaGr2A
dfRm@NSdGXfpLKcB`*dI0R1'H(D,DKbN*eAUfQE!4b9FkN9`U6`CY,l9I5j5%CGV
$cp02(+lTUd6`"&p#Ia-58+3B"bNZH&bCj`CqikhRF`G8A'4Y*UQLdYDYq&GSI94
dLJKb'N+m0d`Rj-80BT!!!lbhN5Aj55QD2)6dYkljJ)Af!km$q64hilEU,h%@KT0
'%[1F4-[P83SIqi!aD-iX(BE3e)Z'B6bT*Ea+qp"`6K[M5dDeq,4rk6i6mYmQpNJ
B,HEd$rYFf%+*f9JpqIbJJN4L1lTP+q'--"[h6QK5efNFkiVJ&,4R&&U%'PaIAP'
I5T6&NSPb0@mfi[+qpd[kI%-D9%cEA1CMS,DCirdT2AikfVYBC-4mf#BcZ"`EfK0
d09rYccAE#L3ESNR%CDZVCr'9fYU*r-!%0Y`2h#LjBkeLGFDk$N(Ti6jLBl[5ZNb
mPr%f%XUq,K2Fi(idZA%YT,D1MQH!+$0[JcNm[,"Tr1BmXTT@j1'-1)@bCmFCPBe
MQU*M$IC(4$SFYC4I1qm48r2Aq0G$@F$a(B#m+HF,'Kr`1ik+qU!TL"dB,04K&bR
THcBRHQ"j+@88h'9d[S*#-G+$-I6%jPpm%+'5@eCJc"h3X"r"TZ*rpLlCTLVN8i0
F+0pZ*(UEap3,2VHV$HZRkKXd!-&SjPKp,Zd#k6$13K`2P6,B,@F3*%0`qf'e1cE
i6'XG%`bKD6PV5dHN"-4JXkq0mGIAd-Nj12R@aNYDj8+53L5F-@N[[m)F36GZHT*
jZ!Z9S+El@%,kS89dES!0RpKZ(RLU4PHNEZFE2AcPTqL*eaFaJBK4-,))k$jdI%p
12DV#lKD4R@41"EDZE0p0c[0)6XPK2B8aaYMr`SJDU#%UCUFe58elY%'&jN+[a!c
hq+iakBZj3$VlGcH4ADDTdfN`VSillA0LkU1NLC1MdQpXTJ&$Y8eG%PTk5PKA&UY
B")IF2+eb0M'iY8d0i4$8A+&FIUjYqlpN@YCVHUdYAHIlBc%HV%d"i6MDH54%raC
A0PFClSS8"l94pR12qr-DN!!S')0iL25r'b[-SS'!$)p&G)")AHJ`*-p12'@2icH
NAGGr695(ECCkM`V-d!'P*a--cNG!&J#L4J`$4!ZD(N`5`!!NA)H%4$9'Y2lE,$4
aDim)4EV8AaL+6JS499h@Zh4[mm#3!06i-T0GVB#,J`D5kJPbJ"9%,U&"4rZ)#@5
c!YD4d%hD4%3Ur[lH1!j'ZA1Djk*)e`Q0@k%dm9MaGQea,Ta4!4(6NJX4bGS6#Cb
NPK+(N!$9N!"`#ZkhE"2KRR01E(HH4R@3!!0XC6@*dD9-,b,l$IY@8"3+G+*Pf[K
(L8qDA[0Hd21Q[bp-+`jqBh&dM!hlEYJd62b&IZ6J*mUMVRI5kNJ%MUkb-mdqdG4
XA*65'2Jr9)@FYU!8S%[5ce(06(H)'8Z1feU9Q0U#JQq!NBD`j-`!E3eaVb0rY+1
NF'2l!ICe2iVpLQ2U-1mD`DZb+mUUi#a2+5NI-ZN"h(lLAdCeZ2jBBQ+2`GRGi68
XCq%'lK4hhA@YR289D-l[Da(@$0bLPLm!E1LTaC4`RMcS6$Y)T!DPlNP2US$(GrK
`-V6UC4jkGl!,f3))HU0`#R+G)VATLSM+Di*qFY'V(A!3e!-b9VRfV8"e,CQ2I,N
5'fR2,mh#Epe2l$4h"Mf%BA[P*,T(RLJ2"Y*+6R8pRHr,#REqBrrlVrqJQRK1)1'
FX`k[2k%$@r)%$K9+B!`XClZ*A(@6haSHmYFZEB[eV5N#aH&BYX1BbrDIDkkNGVR
pYJ'4*Bf!M2#DdGJeriC2BHQ8Q-9+bXVh6@HQP!3YTYqc0k6$LM(#QJR*[3`kBN-
e9&ICbR3Z99PJ)3-X0YQL2e*#mNh5X,CZfY2Y`A9MieVDFl18jMJd8-IlLdU8PUi
HYkGXIp-lQ6S&9HGZeN4aiqE)-fk[4kl)mZR!a&R@HF"*-MS4m3T!Tqp4T6CQF+1
iifYEX#LFTmq8Mb%N(E*aJEPL(,jB`BHmmKZ8QQFfAaqmd953!'XZ4N"KG36*e!D
ca$aMYUb0rfNkbkjlC'cBU&)1B0JRad!#m(9,b8BD)1MD4RF#@XPI@09ZYN(%lk3
*&%20##KVE(#FN[e%DTDKI2Y4Vm&D&bLlS!B,RYi%++)G@Nrf)'Z5S*&be2,mDr6
NiQVMLZ,E[G+C)#SEXD[5@Rr*061S8eT-35VlHal6V#XYR(-U8(P$Q8HfC!,U[qK
2KE5ACb+(NBaTA-GrpcLi49d$6ZDm[e0CV%cj$aIqFq!fI`!86!*iCbUi0PBHeId
5A-X9hb2H+'DVQc@Pr+m5h'*Y$Y"aINd2rIP8)IN%N9*-[$9iI5LH5abh`D@MJ@Y
VQS&qKD!"b-AJf(!dAfPFV!Ik[r1fc8GrU8Y+q'I(T+$GrLIU)&*,`3ZQCD!D)Q%
9@ijN#Zc$kpP$,)Z,L'[KPEBU+'ie&lFLUm1C2mE,kH@,0QlpUrqA-ki,"kJhiVR
Rq5%Z126*HfFGZd-09[-GXK@h6EZUVFcG91CfrfM*X(Cj63k-eTldT"br2GLi+j,
i,#i5"EdbF+EeAmd'BXCc4j)T$0hT1Cf1+l,HI+SQBKV0N``adQlYNK49FVa@fd5
4B#dG9A$`9&CmV%!15)C*jZZ[M+HbjTNRA85lee(QU3B1A%$rBFY54#9C"LV$)cR
%Q&Zd#CTE`KAA[r$Md5Yi-(X"rp&@Qem')eU6"'e9F,IKlkihV[8CK'[!X)rej#h
Hic([[&G'3q5)M%(1e+dYc1BqZ"!k0LLr&%pLhGdm(LkELib%cq@4[60)hVJ,RQI
+ifpPS9B@S+X`4eETmB(Nr*R5mJ@%C4dDLaQLcDEG$S-prkXjS&1BGMAr5R52343
&LI+EjY[Kj,-$BGM9P9U@+@k3!'V6[#0-l$5f'TBaKjN%'Ei@rSV@N!#Mp%qS%S,
Y'Fl2dr+9KdRMY!+$ZL`Dfc9I!P00'#r3KTCHrhL'SQD8`04j"bdS"Ld&[%0RcQ'
T%-$4j"fL`"GljY+0aXVV`8hQ((![!E[Lm5-MrhF@8-93HXl+QBrh$K[5Z5ckNb%
U`[VTQqEG[XhFE)UjN!#f,-EfS"iU%@SIMGMF1f14'ec-3JKCpGcN0)C1`fIT-2j
VlTCbV5bjPbN$*2-0NB'CVMHe(Sfa+VkVd(YMjPU3!1*Q$2,X-6+MMhl"()A5dbT
2pPcGb*4*J2paH5b-b3FBrVT`"aA1-2AiI3I!`51"c4fHbeb6H'K9r!iYdSLYAYQ
RPaa050Y!NKhRUM)UmKe'j#pZG"[Rh561hp(+X&hEUcjY&8HqJp+6ZbH6m"if1"L
jq9LA0-Kc6M9RVNAU#H4SV5!XD0peEP"Nj4F2Y1Hme@[cdiM8I!2FI!G,[f6"[@l
E#ei&YJ0LNN)mcIX@TpeF9$,3-ieFed@"K5'q(U9HhS6d&PM&kqmPbQMXIHZq"!L
![G#3!,aCXK(DLr5VerP3)B3,@H"Y3)[p"Y1P%YFN2XTC*m,qRD##r2+bJp,l5`J
KTSXbXI3b5h*1Tmki[V*q51V3rlF2r-"IkhRVj[R#UKCl6C)4a(1D&1`-R[3ZTLm
IZAY'ij(HR5!&MK9NC0MpIdGGc-8DY1f$L(6*'q48E54q'5Y1G(XPb[82"ha$A+Z
@FEjp9&+Ff+CV6U*U3)DU83Q&BS&c"[JrI3TTpVPbJLP&AJrhGpAAYr4RNITp[i-
0HYL#p1*i)5m'dhCGlEYaKH*Lq2R2NDhVkp"L65Q*Z*Kc&@E$0a94N8c'GYq[YcZ
+J2(,)@D9,d3rMCM*4XB3YjRSLaYE3YkbGjG&ERYc0ZJ"KJ*!I`i[`amB81630)q
DRXZUl[K)$l(RAQ*XAHZdPV,EZJ5LaB$PVVRba,@6+6TT,-j-ik3l5-$3GD,j9V(
PkZELpYNZSbCdbYmG*E9+4[2MA6[Y,-'+&M10fBSIe`"`fpfMFFmL)X4`YFTr#Kk
DFSQ+L9Fim@!TQirj)DH9bbdQ)"U1K`J)E,J#IHfd'D#-,NZ4A0X4-Q`-)`p,GZ5
h4'M$d`r96X9#a@59S8rL12XhdM5hUcQbjIX&A*&P8`%&JE+RL1(1cYjjV9p6r%j
HmG8IYBL"pIFKF!GDR'rXZ(ml#'J-jm-L!9f5Vf*Ir@'ND$2(q[A#l%QfhdYCCbX
AT-`5q)895NHK9JB-&Z5NG+h$T)FHmR44Y[hGFX6%XY+Y8XbH[32iL$Di39"lm`&
LF`,UAQHI'&!LNj!!NZ8pVELHkq63b-49!V)8fL#rG`d5q0Kb'N`eS1(RZ(hcSKh
Pp#9R(2r*51Db[3'F53!R'l%*iaQ3!%Z5Z59dM9PCdlC`B-icGDk'"eP&lScRm3U
Nc3i!d&-8U#YGi+LSLhL6THCVi[L,Ak"-0jp,CkbbE'4SP+R6LbH$jCUMYXjDSKY
jja"RpLk`%(''9*R3YFBT288@XV,GbdlmK2Qf61c&Tf6)UZbllB#4h!(jV!,i,%&
(qE),`2B&G4kEj1E4`,E@GMdbXhj`bj0,[5j9E0LL$"0CAK5$h86if#$M[Ri*%Pf
hX(`phCY,H4(l9Zi&5-4($GMa@U'll2pr3Nb4"Bc93!5+a2NFEk[[VL!CG1$pB6f
Pf!+S@N!dh86Hi8I5`8NJYNGNqJBB9`K,"1`A!16jN85AV'@PfT*X!(pZfcYL6)j
ZLV4Qd4EN4MN6')ca-)Kjhk@k"TBPMcGJ,NFG`hIc39UAiYmcpMMKBkP(A*9GNDj
qbqCP0K5(DqC-2K4C#L*GpJ'[qF@BATela*ddD3r9dGH%i$+b0Z8CbqC'9`4Xh[@
DKUX*R&T4TLbhJ$[@(*K3C9DBkBJdF9J1Qr4P0mGrUH`,UC1bRJI8P%6FTjr&KdE
mSS8ie-qC9rIApq+rBNrN,SNVq)XhC5HH06XfPIJB"LdBSVC[UAV-rC[@b[YibTh
$%9`T50ljF8+fpM1JaHb*c8'8TaaShpCiQ`)iHI4+T'@TF%N%PG@+2q*"MhTG@B3
H+PU,b,,T'0Y26"Jmq,k[,P$`ddE6+#YXbpVIB384cLie#j*&&5XklI(S+pc!a%!
IMXlCN@25LG6[MeBMjeQbr#!`bLbXp'8a6`&rfkr(01`IIc@EF851$#,2Dm0SpT4
'P+'9kHH*M@`DGZ`Ehf6q)Rpqhj(RkBCHZ5[0F&,"P8ThH#j$VhR%`RA"!-aiT`2
HXSr9Nl-UXp`SkTYjSlejQ!p6`ICV)ZB8HQBpT`B,fr[I,,N"cAGT!e(G"l5cD@[
SS+mFI3K*+60dY0rr4$HfHJ,PmVMD%T@hBbl4$LdZf`3@QKMB$c+JE2c-pmBTIf3
-&a$d3VL1+N[`K9A(ikXX648C23RF[6"P*iDTSd-6Jh5kfT-*VCelPpiR@4pN,Q`
+Gfr1qPQ#I5j@,rh$VZ4#LBG6IA45j`raqEQKY)Z6VH#QX"Am#2qkIVMBqD"@3%@
kePbrZl4JVkkmF`d!RXK@'LRUj'%Pe%Ub)@1'@lD@2dCBd8X4T)-f-FU,*5bdp(m
&S!VS5cKQVKXNa3@2Xpp[8@fBQIpeGGGFR6AQ'q3lNP`cGmCIicNf!F(lf0&Kpm,
di3Vpc0Lqb@Z16dp2i8pab$P#6&TeS5"'0T8T,d5Dr4j5(d!"!!U'Z+dHM8#4GK'
8maGcECX3XpPdSekIl8A&RJY[3$GaqI@j,1QN5dqIGLLm3#+DbKSbP6+CBrYiUQ'
4eiSI%VV`e$rTfA[4Ve0aHfUVIeLfqDXGJLN!G3PC'FE0-E'CH9pJk*T)&QKT905
NfQTH5V!r`4L5#TEpl'2AEbTBP8[@JY$eT5Ge8q+6p"C+&$GV8JGVk5GEQSh6)D+
[qa-'1(320K[)"3E14h*ahMFZLflY'(h(VET[PcaR#)VMX'biik%U[@+,Ed(XY4J
e69aAh(Y8J*&P6r(iq'A39RAfF`2rhShZ6,L$HDp5[mjpbYpfA`1@JT(2mKF(Z(V
X$89"GpcG@M+GFI,ICPEQ`PK"$TTi"Efh"0Di8D`PDP1H*H9fhlTfa$YjZHhY$G3
UIaHRIm#GKN8p%$ampFK%IIAikQ9`iKV*ZINEj5(A8TTVX%AU5fJ@`[jB4NSrPQ)
KqBr[q16Ama5%SZIhG($PAB-`(9TL#UMc4%K94cYU595)[h8d`X$Q3Kc!kJ`62X&
*&lXj%0MBVX)jhh*!9'TbljmYJcPP(5$2@FM,MeA4)$PrM5"QZ8Tp+Y'3!0P28l3
HJXEaT,T!6HrmFZVC)FT*X5I5AY9@q@1@M*%Gj@*Y@+LIj"95&,A'Yak&M2$9MUP
m`km+4plHEbd*H2`'*)CT1@*qFj34i2i1#9K4CY[hCJD[Y+'D*&c1Ll6dSdBAJA$
G4C)3**qRB)a*[-e("0Z*Yl5`%'"NqjZD'+1b)V*Ic#iNhN@,jb%[dpjGhbPQVHX
D)4kh)fr6!+qpIC@05#+mU+(XC*3llkF4Xf(Zhej8NbC+HSpTr0fhk3[Bl**ZZHq
Q69ZYk4E@E[rm)ir1CM64rk%k&C'p#6X`39(fVr%B55eD)8X3#$jJeAKkRIV`&fB
BE*9iUB&+Yie)1&Sp*(p$[%ReD$%qEFETNE5&D#GRTqXA1H(VdSF-i!!C*!elpHi
%5ali-FkA6E&Q(k#'@IC&"cRpjm[rZRh2qC*K0AV!CRHBVYZJ3$)"I5I,KAB(CI'
!Gl%54DFDU1iICil5mE%XJ$0"N9Z#DZf4BD5$,&FQ+ePe[j!!mXQiMKVKNS)BDaN
*-Z6[Z2K1F)r`q@I)N!!+m*)f(9l#(N3Ck'cCLh-fRG0p3GILGJ&iX"S&A'e0))I
51D#MDp&HCG&2,$`DEc"Fp,f&+1!+p2`*&Z(,Zm+[H`5jBk`S1C(T5$5lKJqe2Z&
h,TRhMQcNf8J`IMd8QX(`29#EffVb0Mp22UQB%#9dV[qZl&Rm9bG[hh`'e"VGkrZ
j,41Q+9'q3P%P`cAZmrkd"GcfY*)6TE!%PTDi$XqZIc!'Sc'SbN&3i3HEq[Q8%UP
#6SmCE&rbK`M2H%G8iUJ31K'I((%@RFYJH#Z%$aC&+4&8+fQ,IV`(#HdiZ+*3FGS
66"!N5fXjB&C3BT+*LhICm[%0pi&9[Vk&cqR@b!E9C'afVEVMZeYidU,-Z@YAkCb
FRRMJ1KL91*(0"%bJ'8&DR3E0#6`Fh2%N1aA+Pk'V6@UPfPDNmj-0"XN,6Bl*`cq
0Jp@5[KK@Q+&8)CI(Il0MVV52mLBdjCrSjE`ZE`%(dV,4ZkdeNmej`#)Yr`)$r*6
HX*Y!,pQ)d93J@$q"q#i,ceAj++jBHLI!Q(IG(NcY-5GZfM5kEIN[LmP9e'reI`A
HNICKm0k9dD1bh"Nfk+dqNCC3Qa2Q8SeR4dUQA+ASr`m&M4-L0*cHTI"Ifp"L&D+
H@A&RdmN39iI+$kaPNh[9+GCYYT(XGSYaj1E@mYK+H`h)@,VSMQ@q@Nk%,Zd6B-h
YAri)XTMa$@5'&q8hGfpj8BHqImNK#-8[AT6*5NfK3*%`VR,5@TrFDJpXVKJEa68
cjNeB3Cq*Gc186!q'ab(DlC@Kf#Q'B$Tj)N+Q2'V,a"0S`Vl'&)E*M*XR1i@(bM%
R3+Rf$PI9aXiI48AK##MF@[rSlAjqK0G+*e$#)MR1RPm#%LTh380Q9a,)a'4Nh0r
a&-*R4%E#Z"S!TZeh$l#IridQJU*p,-$C-EXVPSDEEN4)"9[TrU"+S,ImqLAJrae
2a'3E#d#TGj(1(b%QT+T2%diP3BT'@U9Mc%'dPB'Dc+Em9MBjLT`@#[RBC3[SAlN
"qVJZ9@CLJ391B2cCK'YfjmQCjUN'AR%B3'D#V)-RVffdLY,DSNSKAdR9M3(&lB)
,6eE#%aYr6d9Ikddi0p%ETTdf&32RkF44G[,$X)`6*5(ME0pR!!'R"pBdBbc"'-R
C)9'QLAlDPD@e*Z[12ldX"SS"rJZ1-ZD4dKi)IcXh+ajqNi5q$%aJQ%Nb*#A5(Y@
(#iJ[dIJ%qi)+P3X@cbjerAUUYNUk3A0m5!4"9PIPV$mr(E5,qHh*Gq!4$Q5cjqq
`ASiCHNiAmk!,(0&9iT(bX6ek(cJ9@165CU[TE#6`F&ij6V2+e[Pl)E-8'V2Mm8B
lJ@GH4'$c9bPR*$'E$#"V#S'mfLa,'eMH9Z%Qq!`QK"2M'(002"bQ+jNBa-5ZJ,8
FiX3'KpK#`)C8)a[&f*Gm0%PHEc'AI!%qZ%Q$b4H9&URE"TrZc2lR#`'`pL[a+T0
,ABeM0BeA&,G5Rq8KKkd&iI1[,&Y0V&aJk(r`jTH#Qr"8ZDHfAb$%C4KQ,P&Uci9
9Zi,bZ[1DA-e1Y"bdJEd([MEaRq49+"JH+*Q+QAKM+%50+`h2%p4Zb4bqKATRdN4
B5Re3EQ1"q4C`ad!8d(e,EU$Cb9$ppMaUZYSH9aj91T&9dc2f*bEi1*EIcZV,FP2
HE)TTSSEZRp8820bIU5m0IK3aK+d8XE&XR0,f#M$2F!XbqrBM`fiKLSi0Lej!0f9
VZ1E-pXC[cQ+'K-&4TjhIdd-Ua2KS45(2P#jdIF&aE1lmcYd$r8#Z4biCD!ldQK#
8FdU!YYlfR&,#6rGfi5I)h4e2rc',FX#Z'6AJ"RSaC!jY-J+-CaA!J$i%-K*T5US
$2@-jD,jVXFh,ChI"E19E!Y2Y)!8fGTMS,j6L[%ZMKX8pF)&miq%kkqZiFq*'qDG
Xf5V-04)kklf9(RNUcS$!0X-6M3%PQG@!Tp&fm4GF2i%P6l!r8pfMUa9$'!H3!+-
&MXbNL#KP2&Nc,UVNUCmAqM,0f5qBE)kD$Xf&m48,EkSll%YZ6'dj"*)k`B)rH))
$9SL20lC++J81aCFCRl#3!+CZLmH"hRk(0bl9rA+f52U)AI343M8T(p"Z8j(SFV@
B"5,B9DbN9Z,1E*i)jSYpEHXDpIlZT*cl06,(*d2p#9BH0k"ec+b8*Cfc+%Prihj
G+YJ&'3iAM,pP*3LAhqL,dSqb`*dXMP1a$[kLiY&hkeTX2fAiiX1RD)c*"Pcf,Xf
(6)SaE2fBK+)R%hpL+RT)eq&$lY,%)d4B,Zp1fUljJVi"p6pl[cXB@F"%#JN&BI"
)Yck0JG!8TU!ql&&pj)+'qh2ef[F$clDL!"a[R3Dck$QbqCb5,0jE6[jHi,Ac6,G
impcLb*hVGp@*[br*RYBJ5$KQ4["k63GBS*F"&M*$d,@J)1V2'NmJlA3N"UI$)lm
M-XNH5XXk8Y-@`+P2FJA2df4e+2*DHC!!p0!+TLPDF,)h"Ec#iA&aJMPIG@E0p%9
2+fU8M+pTH`r9"IUDl(`0C#T5q-m$k0(6qQhU%T,F&c8PZh%RAfRC4DiAV4qT@'R
L*qi&!fj5"&b"8Hr"![MK11(6IXTN$,kl#-6T+L+h-8M,VRTYl)Qb10%fjLV))I`
RQAJipR!!)rblk3pS0PpfLK83,YmC9[I"X%FkqKHHf@bR"RABj!X8%,N#0DH@VcC
3`EB!Z@h1bYHeLG4Ib#Tp,-SG@!rL8cqNl,@*SbP+(BlERY`Y1[BRaYkM1,XY5*Z
I!(@`b3'GlL"UcbMM,DX[qHd8[B&2QmZG%f06[V*KApQ&N!$BH["IiZQA8EmU1(N
M$S[%23cTTe('Efbh0ISjm"S88Fd,[EG,-rZ-*NH0)lK'dU'J1kq08(X!0ZT8BfQ
6p9@0+Y#lFQfYaX3lhQAJVq`""!0X9D&K3T!!R@[bb6P-61p*mhT@Jb#Y2)Md2HZ
!eX)Hi!e-*N$D8LZ#C@VplSfU6"5%E-iXQm*(&k3fLCJemC@D"FIqrK+9rhl)P4[
')Ijpf%#3!'Mq4i2B3B%J[RPl(0qE)XISpGRPk,$42X'mMcBB$A!Q)d#TGYfLa0S
&FM'*-"@RS)l1M9,r-!BM8&%PXZASajXZNm2Lq*6B!5hYUkfCZqE`FDL#Qi8DVhA
3jf$YbX%2@ScVYNPKcG@IMlfS*CF&SL'Iq`XTp$GDU6Z0qd2GfF6bKijF9c,J`*I
i)j3iSk5E6'-jNGhFcc,SD(Lf891"&LaG'R*Lb!V'3Z@raKe1!Y-1M5fa4L,d(h'
rQrM3,U-Xl!XA'lLe+C1rU2V5Um+r%9q85cFHam%bjilmIVGeDijjT#edGJZMA#3
hUpV)&l(m"+0)RhJl!X36Z40(@Njq-qE1hLH#jYQ&%64'RUI3D`)D#4B8!kc@IR2
Z)$U@lh-1pd`Bbh!2#YkG,'Z@rcS[Ekppp[V3D6fS5YS9!0me[#FEMk`'0*rq0T)
Hbleab5LlE6ZX[54+F06N6Me0NeQ5e5D$4BND%ZK+C"@CUQBEQej["XBVHK3GB#,
c8AFI#Jr4rQ!Uj9*29b6CB9kqAXS%$,Am%3*9er!q(pN"4F1lT`2kkFRrAEfIIPh
iGjb[l4kR-),%)9jJj3$NTG`#-B#'-L`MP[Cikebl&Kmi5aqIqVd#+UA9k&*JJ,M
)IBEI"0LAdP$b"E621`q+-(d,JID)UB5K&F3Yr6Gm%)R-Q"'9i2pDH42mFXqTA36
G3p11lpHdhMR)*pIhDi1DN8&2'jjr(V`9[VND660Ih[B`$d[VESEYG4bI)BpV2)-
b&Ea-2'b#BAY%FMAe6NfUcP04*5Mqjh(MS`DqRMi[28kjcqA&S9bR-dJip,Vr1R5
Xr0iKEaK"NIMSJ8flBm0f1CdE@VQY6KHr6RF,'-1PrDkp8"c,QIlJS9&1UMaQ(dj
pDdDEfrc0d6GN)!f+DdXhcTC%D)Y$)'5U03+R$4[`J%eD55k,E13%KC'R1(XQFAf
3!#&Pq4&RFIUaZmr+QpSPiJ)qMQ!3Kl`lD%pI)H'jj6-Z)cNCJIjpPC!!a$0Q3PX
(A!@D#1bDL6+EepZ9jINQQ6@3!$r[R[RjREeNGXpHH-NQM-*d-IS(R*40Zm$'H)K
mV[E(&D'`Rr8Vb+32hS+m*c+h1iX+cCQ10QRM@e)IK3LGkTPbYH`aDj6rU3qaD'E
+-90N(AiMei4Qec3NIQNpF$@BKmMV'p4F"68I-J-jh+B4qj5Q9m%BGS11DX'iYI+
ISl4'"cJTjlieec#N#2m#(hQBq%'R@1$"(bEjbiR+Y@+FAp`FKFmaA&kil,X$Gd9
YPBUJI1N5JL,ri*%DXaGq!KKM+-'irB8'[MT2r5EYq9`6BjQj5e-kqFJc,f5JjQR
J1G,AKrq,Qdbd5A1YQaTULE+B4,!X6-'UkB@PZlMF!l`(X[X69UA36Y`PmNR3#kQ
28-@RA`F2`dD"$$VFd#r4MlR&JA8(pfK51TmpDlR2)GZ"F'c24MCaF"0,fNQEfSq
ICY%KIRZNbb-3b`$BNjcr1Y+DV,CFLRFbG5k,[j[E%!1F[PH*5`)fk$pq)Uh&bAI
+Zj,l5#j(I4jqKi`!bRNfI,FD1$Cp@I[-6RJVlY(-1'`p`@MAYCf2'$&HR6A6Q2F
Id*h&f3P)NEDBaB9B5mH1H(Bi4`0GfPEA5@Q(E5S&UrNQPSQaYq,ZlqhJE8lq[hQ
G-S-([EHY8aMkJ-khihkkc%&GpS)ac8iDCmhFj[XpDS(&P3)Zl'm&kh$DfGKPhBa
(pZ-k,T3+DLK(2()EBhe-6H&hX6eYQ&"1kPrBKb%8SQSFaA-pQ$([kAV4K!r1#Jk
pDK#D$kiA9f%8hkfqmb4-mf`p##hm"%ISG'k0'd3C#*q('8"3H&U&rhadYCc3"9H
J(!F*bbl,)A*dl&NS(9fVbjKblY-iK,lDll'R6H,j2TVipbCE3[L*92XGlC(M,JM
c+ZNVBdha5XHmq6I&LIcaqka8e%+@)K-d'iTi&q[-$U(lcj!![i((&PTf[@[8Dpj
)XlYI2j5NH)Y1pq54aaHmBAqEdMDC,H!3LiIhpLCF*$+L'0'f+fEAQ)IF)XcTDqp
L[+KD8GNJi3"le3IGa&F10ClPS"f!'AIIlAJHU2SUICe-)aLGX1NNaCch3T58'k6
XTC!!`CIb'LQc)%bfKfF#b4hb#E,+1d4"jQThda)K!kh!SkM(HEfKi4T4S3QpG#q
$G4V"G0[4`VJjB`kdc+I2Y[+'6K1i,$@eZ%@lb[H*Cr%q*F3P`RMdr9LcGGq1V8H
lUiaM8A1Vm8Z6UE*(6k!3c13i!jVABC(K2VABmdV5@*8!SE#jlHc1GeMaUAEfDk`
Y3+bL%(GBDeM0"DiLN!#1!T)hNFLAb+P$[2*A9(keGBfY$&Y*BJr,'Y0bB[YZZU@
RdjV6&-1Sr)GFf4)-2JpL![b(Cl%Rm0Ne8c39#pHeP2hiblXeU$`'M&kRk&`4i!`
%iSf2-P`JU,[p9'Kh-BmA'QBQmJ1`0X4H[iE#(UdipReI3#Pdr$(jVD1+MKqUc#%
m(LU)IAXk1,Xd&$K6Keek++lppMZAc9SM1b*KNYkCMBlaX8&D5%'P5!2pNG"6e)H
mAPT,4r@BZ2Fc@kj+#K[CG4'hDk*4"1$KL"lGLT5@92K%rm5(M&Up8,m5%-+AlJP
"*1T+e5[KHRqK,ThZ$AKUk,4Te(DiH#Fj3Z9a(Dql1%aDTVNiGlY2kJ"kEb(X#j3
0!m)9iZ8`UkZrbGhpfB0M53%dCRUT%M[@Rd6IR@DXf3J15!FTih'0AjD2Bf29HCP
cQS9MkKPT9LlVQ,i(U"XL,BbRDNp#A1Ul'1VV-QP`RhXA&&CS,(P4j39RFHk!9e9
q*5L[8,(mi82N0T`645XP0JphMd*aA5LNN3Y,!Hpp&&Vm!)YFXN6'Tp(X#V&jmXQ
`E9RB&m0PSF,ZD-1JpLpZD0bca%2VFP5+q5'Z51R6SI6iE"A1-qLHGP+D,2c&2qH
5G(fqmd`BK[L4G)%-ZKlID,V5&5@[4AmZaepjAaQr8UfjVMdEHJ`dTVpR9jXbAek
R4`8!X1BPpQp[+fA0AmGa6%ri3BhET6hj1AFNl`Gj9@f"BmjBT#4bpL'C-q26[Ym
KGqp(3Hm%N!"kLiVQGl-YN62`f`V51&p1LbS3h+p%PNY@K#L!`%HTYQJ$CqARkR%
(X(LrbVDfmfiG5l[pK[0XGm0fp,Bce$TeSRdIZVBREcl,0h20aYa3H`fH,$DN!Qd
QAReFjVH8"&`DAmH69#,(`KBL9[MF[m!MU,R$bMJ!S%D*IVP+6bAe#jUD(DJiD$q
`P&2@AUJ"ZYqa&$C-1NT2Z,+!%5+rKk&PA#YEDkUm-VfNfKEMqJ)-cL2j&i2li--
8GYL4DrNK&e!@,jePfT+aKSHjh5ILRLQiG)[[9`U!H*Yd-E&H$P*Zl(A[Ka,L6$X
STJ-Id&P)'YJPFEIDa%$mbY2,DC-3UXc4@(Sd"qR2YF5iXJ&Qb9QHX#BLJb`cD*p
)j-dBDeS0'lhVe,ZY2l3PAGfc#cL80lpJ58%1!))#@eUpf0#IG5iTk9UA9er[BEm
#!iD$5NbELP,FUJeeKpbTXrflPC[51!'0kF2PDjZHJ3BL`H6mAXSfI6AQTdI`I,e
l1PkNV3cUa%GI1R&X6Nl(@MI&'`-3'rX"J16kj$pRbLPAIKGk85qYP*6ldY&f9M0
d3$0$q&LJYT4)i@98ETV2HBVTb[Pl1mG#KeS2`VmC'C)$-`SKHD2+IRP-"c&kkR8
LB+8E3!e'#H%BehTNZPQ0c-heR+m,bN1FNa8[@L3&)'p21(P"McVCK+eHpC[D4bS
'dpY,UDhmU2DHMAUXDh'JQI43NPVS$j[ajfXFLiB[&r%G[Lf1lb"#SpKj`X-Jb3Y
dm3aQAX1dC`hqV,RVNYA,d-5PY8FDdPa!f5VTqLhPY#il@`rpHQ3C[@JH'#31FVd
9UMm@!@4'NQe($$R2dNhhZ*XVT*p#*c[C50Cpf0GRDYJ9SUI&AXBkILVep0(Q$+A
)klGb*Pj4G[ECr9@Cp9K8$[Bk)5Q#41S4Y5rrc4*ATiB)@HS'Z3Jmp)!4,V)VQ+G
J#R4I6L51cH2'@Ff[`H)HM&ND+M0VFT5MG1qc*GriC9I3)HI(#!dI0dNqSP'*iVU
bEHBSS@GHeS5(L4-85E,cQkjJ1K,Vp-DpQ"A%5-J@iiqe8&!Ul*bjXAYr8UcZjNK
BS+HkH)'e4L%KCM4L922`VRLHQX%Zlq(5@NCrp5jB&F##PcKEU"0f`RDb*S0"f(U
SqDUqI2cc6C5l0F!9)PLj88S#3%D9#DqLRNh,3XMP6QjVIqMSlj&E+j!!#+SL"VK
)Dq(AKLZP$%Al`*)-h!6r1&5c-YZ3!14Ir2#3!"k'*0l*#emMHA-1jQXrrQq)(1b
qPfbF9E8RdSYqVLN(abaA$ifMiIK`XHA3T*0A1#RBRrTjaA@c-E5Z0af&RHrbS3I
h9m-ZDjJ(-rd*plb,!YC'$&BIT%LKcaemfbQ&#!X0B'35"Br(QGP'jClpSCJN-KP
([5hU,2Z3!,c%0@1ZHmajZ*i3pF&NhR%k+*QA2'jfYrM5AVeJp8Qhdh[M[@erUL,
1IXSDeUp5B2UfC&6-kB)RCMXZ`fdiP$[pYlQPJl1qLLY-Yc6@mM&K[,qjDmjXXe%
ii4M[[,6"Fi[Dp6LfaV$[pEki5ABLP9#iJ43$e@Re0+M6f98bd6EGQN9HmVh2qSd
AhpI[clMK-%EF,`a5YKHZ4jURi"Tj2qA0!2bk&,&VQRem(Tk1%'J1CeUk43@%FM'
MR"6"#kGB4F*&!Km,FBVUY#QrmTkLV!r8"2T&j"l0'JEM"CN3',dLD0[8(k8qAZ#
Z3XV[JdDaXbaJRBPC`ajJeU3(J!UBr1pikYpH+FEQ#[DFTYc53SDQ(TN2FB3*j$8
MejY3@[8GX)(SYc84rK8rh-0N0$KrMG!'l9'lGlMEj##H[[FFMHU6PVhp`aA$e"f
Ih2X9C4Qb+i#!8S-B@hV0HDMR#TF1)"-+61SDpkBe!lQI`ZB$Z)-QliKRjK,bdbc
Z($`MX&hJLKKE!'TjlV5G'"b#ak"Dc&mlS8!lac1PJ[9)Y&8bKmbqXXJ84YkC$E`
e#PBfH`*#3m1JY*Gi9["hr604e-2NHD5Rr6bJBV*Ncb4@BfDAi+Q,Nrf$CmrPAdP
Yq`V`KYJH&dALM#M!Ed@*T(ATFL4m)lrh4AikE2Y4-1l(#Cb)D6j,S'2fPDiR'b1
qSHaA"1@Baa$Z+&%mL6['23cGc9MM[lYU)0a&R[YE4"h`$X&iU+d1bH@f(JSDUfS
#4FreFC9Z+pTmim*A"6Ri[QcFPi@1'C!!5TI6-m'Lp(!Vl%LjLrMZS%YV*f)UPT9
Gm5Lcr--UrpB[emjiU!*Y8,)#88QJM3,XLm3Br2F(j6i'i9Zd9S1qR18STbGD"b&
Rr+!X2ZA9T%+RVb3Qk'1SI,(1DLebR*U!9G+8-jVeb!iC4+UaUFAPDTF+b)GT%(q
l,AmRm$*Hq+Q943*0Zkq@6)a#TE()'qF#*5169I40Qm!r(Y@I$)@(9%A"(pVQ#Xe
X$0er10LJQ0%0YD&M@Xa1A&-PdaQ"G%CDFVDpV'l&0KeJ#Y!TrHeE8)mRa+,9@l@
b1[kFS%q3!)$$rL@l#(-RI11j@E"k81$bD+X$9dlpl`PUAbEb%0dPKcN4PmKYffh
#XX+,`S-$eA#qV5,Pkm`bAjJKB!MAK23*XiJGHpP[@9%iINTHEBXjiJ`@c&NGRFj
bYV%Hd10[A(Zq5mMZcUkCc%X"QViUTMVeE3q%MGB&3db3!0R5HNk54aklb"!#`c5
h!Q+M&qEJ@@hT*)'Q4EV@G"ipKT8ZG)E0HY'Ti%#4B&`eXHkJmCNi[%4)U%Mddb(
dG!kr$k[-MX"6m,N2NCCNe9D3!&8($R#XP8r8BN-TiK0'0XEX[)0NSliYI8pCe`+
,U,KqRQJBLfhRAddRemC*b$H0r'jq0H*(eBJc)D,Eclm0lUm21hbHcI`$HeSZN!!
+NVp3j%"43$b`DPIAZZQ!Z0ir(B5bG!4bLqV!PRTUbr5&CZD@J,H-4CCK,(JFdcT
VcRKi&LM,GY6R@3e4RUdZb3+-MREpr5UGCaG`)K&F%N+0ZI5TRI4kVJ8ZiNHN5q`
80SId5L`dL*F0[-'MK2A$m[2$(MGSZ5mL11,@[8pLr38"Ffm"FN%`D%L%Q9A[FXE
$hi&l1j6kX",Hf%5p`6KbY#NXc-D4&,#IYQ4&TR[B8)I9jQ1i0PrIh5kB$%N-UN$
5F,%"(@KV`EM,'&,I#&56Tj)pK4akqamjKEi(L@h#K4U8'(%3F%IY#1U%#b$6@Y)
4Kk"T`V8,rX*BGX&h@!'&YhDSTba3l`90[N3(Gf*8(a-PC1"m[ZehlLpa(p)X,UL
K3&5FXIY`9mSrPbVF"5LEMkGZ"TQ2HqfTrNERqkkh)'5B--br8S[ibHhb60[c"Hd
e4*bc3bQeX2M`RP`-Xh("!6SS!p)Q5XScD$0SP6T*DpYeD$VH@Qm-2YhiaF+21e&
bDDj9hS8j[mhI@62f*9dLJR6TZk'H@EA""Nhj@YJh%RQL9K)([*@HYB9J4BmMkEG
pa['[3jQrV*&HJIlha()(kH3$kNk83pmb$f&rC`[3iS'q)SQ"#"+Limf'Ii5091l
L%,1c(mH0QUd3'i(Rq9Dl[4Zp2eKMK$E@Tae"kHi`VT!!L2P(*L0Kf(Q-jpPIq6p
SbE2B2"rC6#)Ik-&I1(!"S#PD+H*Eh%!EN!$2Hq,XEYbbI-[-5I6FUil#M&+4XUA
VVi9b*e'A(5UAGM)aQqCA(lj1iR#r(A&D6i5Vk*AUTf59`FDl`A9#L3D91(rUbiX
m*T8[%`6FJ!!pCEiEj$q%p[2E0d`R'H,k`a$(F)"m6'D-[4bpfAPem$p!X&dq!JL
D*&IXdLC)VdND`HaqMd4Seqm(Efe`T#q8@r5'H@TcS!b9$@B)j6D(QmdZ1F5IllE
*&&8lRIlm$&)qU[[i)'VUKC*S#Yr%`(A)GRTf(JmYSkC95F,pAamjPS-Dj&(mr*!
!&jlXhGb*i"Q#cL#Z'39C9dZ[Hd`(rJ4Yh2HXhU33k@d9MJAi!*2S*JQhkE1IS5k
#eYEpSmm!U2TeY@3UA')J!VjfHIfZ#!BekBl!Vf5G@S!&R#9Ua@'C[NYTFq8fllR
XG)&&d#VJGRPk'IpF!qA9I"YYa8f5X5PZJ,iEiQ2q3i[IVGZCKbVr4eA2UQiB0CS
HPl6),H("(X3BcRZqUYC045md+PLlb2emFc,a6iV1FkiF@EI`$G+F8IJ3*(3NB4-
%M8EEr9'P,)PX!)M$%FZ21jZBY5MmDPVj3fKc'F6XjI)68eR)l#1F2hq,$HAdf"h
23eJkU%M4,r*TT`b,c8IJN!#A$qUbekD"AfEP%[[iT1Naa4PQ1+&N)pFCZbHL&[8
SaF5IELUd"%"GT8(03M4U6$4!%(f8TdPf6LID3+UZa'!8D0%#E#DKN6"QCLB$T#N
j1FA+ICBAEP`,Z%!k`IAp6%A`EeTa8#LQ#f5JBZljV6&dL*&R4)m"Y"2U@(@Y296
'QJcTQ**`&!B$j`G&$9-3brZ9N!$9G@U5rPjZCAM36Gp*c-LAp2Z1RBMhhYdYX,1
'ZFL-l%VMaXcXl-XrB%@8fjSZSZlI`-G)K%aE`4E,Jeq&CqcC8EBBZd%fNfN6@-#
rD+GR&CF5aZcd8R`LGer6Z++6Sa$0,P!@)('M35!5JC)G'*bkSaM6m%r$hjqk3,0
CZ"AY8q8I@mMHmA[&Xa5"L-Z)YrP5H(IEmGQidL8J689pe`SGMRT`STbaBjb2G6P
9GFK9kj4!0$RcKPpRCH3HiRlc@TEDRhBR6pr+%cRITm'3!)%il*F0-TCVh85T-dP
jGhpID+'%&eT'cYPlS#'%hZe8NX2,hmrN+98N*VfRf#@p()lab,K%H(FL&Lie21a
DpC,qIhhIEY@"h6dA,Sf5ZF`5$mH#h2hcIM5-LPV+d0'PYj@mA$#1#[hqfRUa)8[
T#dV5!DF$d6Tr[TDV$k[cdKrZVi2'crT9@H'J$jlP36XbT-H6rSe5-92hH6NQ4VY
rl-PRLKjNjV2qd+MjXF5DI&l6Z0-B-5b8hAr)XLP51KhJHFEB)`fhTe@&0c+@d"S
b$AKMFQ6%iM,46LGCHM+92JBlP1M6j2Y,RBlX-'PU%,29rX5b$+d&D6,,0$Q@A"a
9C-)"pl%iBL$pa14Z1%,D''1rc0S'V`cTNGdX0q+5,!9CHQ[,#IHD9e2fRD0X2Mb
K"BN6ZrKJ[)b(Q8NBcHC6BfkreDQpPNLGmQBec1jr$ID['UBBM@C#-,b1QNGEl6X
pXr)Qhip2NMBNRdlJ1i,&SNj@HM6Np++Z*DX!e%`2d0&2#FK9YR*M@"2B%)BK1@V
%h&h*fAl9U2%rKKBD94-d-!djqJir5Cf$G-+EQQ-@S%qR@AXd`9+UkBiZ!&N-&jY
,jB014'3[&KrS$3@+6#',kj,A4c*P""9"d#%S1fUUlAIQ4i4hde0RN!!HJbSX)AJ
4f%blIiM%ZKe'!qA"D-5C#CcThM(DS4E8!p,-[e`fC6[+9`d&T'#qh#aK4-$!()4
QdMkEMlPB0(HSU-$bVJlBpqhJ3j69TU4XHK`bYF*JE6A)idF6k2Nkb2NC&R5p`#`
ARdGLr%aTR(i@J+3XlNZIPmYd&i#8-Iq[%0d-&aUPGTf0$,XdfiBF@V++B6j2bbT
!I%0C2[KR@3YUc9LjNPGRRe`,V,rZjbEC2AjFG01F%mD2M-TlHX&(Dai@I#2jVXc
5eJ8QHeV)a#bTe!qmYMSRaq@$pSiee4qdCd$)lBm"JbkTf(Zc((D2d'jmG1C1-'G
e#S0cQXmc!JH1*XYFZPHIKR0)8(h)*q&PS9m2Kkf0pVZM@RNj!aZ%'dT3q+q0cj1
1J'VKLj`9-K%Srm@NeZ!'m4JmdZ[HM60%SMV@hRI`%N442S+fNi1**l&3l`m$,V"
`5bP!mKYKfU'"T-&EM[dHk6B0hTJAi1q2P$a+#m%[!UB3'AL!00H)p+0c5LU&9i(
NhUE),ZHb3PF@VU$K'6Haj"f91ri!XhKIA91@3G$dK[m$)BA9M&QPDN4A((bJqS%
3RbE5m`-&+ZY*'4DRkf4iJpF$[#m$hHbjlmA`TKDH(eMkj6ih1M@l-Z1"'&m3Dd)
SDkCabr"a@PdP'qR'`e4iJf30FZb-p@,+djT4VrEqX9DkULSRH6qZ6TeNjY!fXEj
[Iq%FMM!9'pi+G0&ZfD#U[XSqD$&'TZYh#%2R6IYG%q88AS*N+C%kSde`6NB18ZG
Z%bc`V1R9!+$ZhhE%fJTqibRMJ)Vp$*6mEeQbl+4dS"XCcEfkb+UUk'6mC#mbAkV
1+2kL+k@XU+,$&536NR0RQIID(E*%8d5q2CR%Bm6-P%B1bK,kAZH`IYB$fk$'-%e
TTcTm1Rq+RY-0jLf5M[Ijd9IZ2B%,h%E&&h3)2cZ83GPrDA[!`%NG0YACQSPQNr3
(*[3Jf!Yf@A4rflmFrN1R3V4d@CAM&,[bGr"8-MR"GA3kJVh864iJ@(h#C*Z@J0m
3ZU64X&&p9,hClVLirAJLrRA,bZ0BcbMZP-)TEZ-6PYY0I5ESm%NbpLPkmAAE-jD
-dHHJFM,pQDH(mqm1J0ZAVY(aS4!jEilq8ABbrRFQGrBbr3[bV(FSHPYLeNrRa-6
TmlAKE*@*YI-F1e58G82HQ)PNF!&m6bf0jeL5e[c!ZL[r#e*X$F%'X#Dk+3!34VK
`!FLmffDG"AGEYk03hd8VjpL((iB3X"E6'!GT@Ufa3P[Bj[!lQH#FE'cPBaN*"NQ
P$#aYjqcVE`A*KrMbJ-!XSaF!&G%PFR$A9NGU33QbZ9QRXE'l+0qb$C@UArIrLPp
-@CcT'0MUi-$&KFhZ5C3kAZdpMrZj-$B8ZSae'(!!&E3KD,E&G36ZG(I[EHBH!-3
l!!63kbh+Jr[9jIHZa1aAm[EZFRjE1BJV3jk2#GIVl2S'"HXDC2@q4BMYPcY-YT`
)MM8YeN`BYZqEUaR2#1qd@B5Pme`0l!BI)%c-6#5Q4Q1kBU1E1meTQ5#%2P3&P6J
$4j!!fFGXQPT#A-pkIB(+e[%([(r25Q1-Lq+,qQ-R&FERkKh'lHb1mibefZ*(YM3
F8,ldb(NCQ"k%(@"Gq'[FMlap0V,XRejbdTlZ[km6PGBE$SXm*q6'FmCHpjY2f4+
$NK'eK'DBi"eicI0TfaFM6FUqh1@DSZkLrKF@Z)R3r8F-m6dF%c-cR$3Y+6lE3e5
cpEe+$Qmj-@rS,c(-a)&6K+$jKTlE%jCG2$ha#Zd*d@QdHhjUU!82fFA9&i0Pe,p
(RrDlhA1h`("#[(9HQ!@lq'Rc(HpM&9-Sq#hG*mEK56dHM@lA"G2Jk-GMUQ@+DjT
P!&CESJEVRIJ$U)VLX[QbfVa3#HZBPqI!'@5%A$"%Hi[Q+6#ZaJR55ZDBm2*#%`b
LmbNAD98l"Xb"EI-E3kH`UpkeE(ACFD2NE0)5pe0a'I!@Y)P+aDRR4(fB#@kSq*Z
8"0DlHfIm3q@)-dK3Qk+UU$P#FapeAIXf2!H+4hZRX5JbS#!02EL4p'M),VC,*E[
Ep+BB+XjG4YFYSE1Gr'pT,$[&PZ4k$`EPV)6G-9h5-'4#Q'N,"X#*Qf5'N!"*,aC
HiCZPYNDaG"*Y%PFedr'B&U&@P4%6*h*qHff#a)GfTJJFemj1`1m1(m!GCd49S6V
1#k9%+K$L3ECGh4j3crlp5e`6+1'A&1J[jK4%%(Xa#IGe9'cY!GDR'SPVZ#J%I)l
R[MU$FrflAmMSZKmP"RZIrrUFH&iRIlmla(B@2GD#dU-1Rq)haVG,&5jY4RKeTUV
,fI)mrNBqdk&$kZR1EdGLJU@Nb2)-C,b(AS0S$KR9!)IR-MU@9r3DQ@A0adF,I$A
1UXcBNrV3&DrC$9-2H22UfKXrj"T*UpUQ30,j3jc+6Z,k4ZYZ'4@f[MN%jkY-J4f
"42V+NV[K%(DM%23m*i@q%k%[cB-TBb`'FQ'%k"8Rq*UHd%cc3bTQV@5P!BS`!SV
16*+939ELhTA'VUFmkC5Q#3f9+Kbc,Y$p2+[Xhi4MGN6Z#&P`BU2a&rcPR1h[GGb
4LK'D#X#,3,fdG&&$F5q"%ZT+9")-lBG%39MB3C%T6rpHCCp2Xr!lK@`+G1(mG0,
FdpX%+pMkDb'!#d1mTdE)4!ih*Sp[1I`i(Mq&QqDXD0@-%dU-,DjYE1"JB`%C#-+
IF3r5FK3cZ#CkRKR@-4J%UHe&c&cC6`hGfA'j"%T9A4+3!2bYS8AfPRkVbdJer8+
QC$@b6&Q&b2N"'d3*M#G!CFF1M#$E(eDq(BlNU5b1Qc9rYFFeS+AFfHZ1XqH1,eD
5Q#[5BhUh@FpF1I)'IISCJE0-b#-Q306S9Z5'"EXKD%1LLf8ii3aHIfUeB`,fiHJ
#-*NEJ-(Hfh-KRGf*@UfH1UkCTCb-&@e!@8QEVqH-[ID$eC!!FEV![@"$l%MeT(+
!j"qr,k*[6N,'03d+e3&%Caj%I5(DI`YKCIq9Qd2fY4V[YqTE(a1l'LN9I@'*IdA
E!kN&XPqPD,e3b(RU4E*SdSY,j@KhZrIQ)$P-5dL(jH'be8T36J,QZ`$M&$Z+`"!
%!6r5qBCGDLae4ViqMBBIk-pGRRc23Rq(EblcHqqN)T,T1q`0J[0N2BRaIAY@rkG
q1iiBML2GiB*GTj-AjV#K3Tr9'XXr"jMKG@ZVXYI["$DCaj8a2*B49iYNpq!XV-"
"JHCF[*Xb3KXh!+ZD,')#"PHq)TQM%#B3fKTQZ@8VfVCebDbAKLNH8)!e@2NqZlq
c0Z*i$RHUeE"ph3K&`4JjM&#!kb@hSj2lkqpX&$im6C)H'&+e)[EmEUQ3!0TRfM)
M4$V143&DAdl4b8FXeRDMC+rE3RIP0%IirL3HdpN3#6P,5LL$G'QXRPE#f)rFUVh
acilPN!"&cjhhd'Mjc`5HZILj"lQG4Ml"`(r!j&j[83%iG8)Ba16#eVe`QMr!9&&
!5AEE2GrN%1#0#2Ul9NZ3!(kdDUVBlFd(3@TUeZD*(&QY0$9B5)Zl1-V*),R*Gf4
EbpCh9VY@VU*M4KmedM[49Yre2*qTQ`eKVGrL%5PiNqfc!&kYQ5adl6Q+&3NVR)l
$89@IjIF'GRSEXLTTPjHlId**LC!!RQB#'6jXF@i64"a%YM2M32-8I9@2'cNMl1$
DT)j``aTSc$-d(BiIi&UReR`1mPmKrUDER')J5RN%J6[h)m(Ak6GAqNfL3C1'jZK
dL26YiqN*IFDZViUET4JrH1%5bH`NmFF%jCEDUfqBX9Qefq[U3Bf6$mEEd'PQS)c
aERI%3Hj3YQJ0*6r0hGF!Tf%lL+pPR8AUL3#AK+5eSG0p`0r$N!$l,6MYhU%idm!
V,+%9[e1j&'q"f$X[45j)!2V)V[&bel+'P'$Vk1A!KkPr5fS`3c29+L5$VHPKJkU
rm$#rFNd0i!!Z%D53!-V5m)UPhdah(e,"ii"CVp$C!QLK+D%-d2qRh'PSJfPhDaK
!RlMY*"!4cDEFCCMS$qS4`r5Q1UU+b-$4!+mbee02XqaA4LDP3dD18*N`YXmpVd*
TdBTA0*FUC$bdIi-!%GQ%3rDP9qc,)A)CfZrK&!eTB9!6m69CcE,Zl2(ZKD1I)66
QXrf%"!pP'X@PNV[G"q1kKKEcR1Kbi@U&D`Hj@dZRbK-&+SfA#ZPJD+pZk0lU0KH
6L'8X9XJkUHG)16Y)QA9qDb2Nf3YeaqN,0kl6l9a&Ckip9UjTj-fP%r1+qFm"Bhf
P%SENh&4(EMaa`bm+d4H3!+b8[)UF@d@NeP8L)!XBKE9@FP-)!mh)GG94-eQj4KL
$RC!!XDrAPJ3pib&JELcNJEK@IU'M0K5NPKP@"m9q,(hq2`Gj$#`&C#pqD!`+EkS
Y@T5Cr-Zd$+6Y[2&jH3MCRm&[k#K6p"ZKRj6iBc"9aClaZA(4%@pB,[fIGQkq*E'
VNkeaEpi86RE$dYq*ZE#cN!#6lQ@rpQYFVZ[im%"Rpqk`hf@C6+&ki$f3!'Le!S!
Mq#JFA5rbYFX`-`iak*!!U0[GmM0*@%[-TM9@dil5eI0EF$8HR1B6Nd5S!l6km)S
'El"`4%[pR!hHf82aLdhS(e#YB%AN"HMCH9,dE8$j5(Q+@DMKaq()G!c40mJ[QAQ
[D2MZN!"h6ZUV@@B$VbBY8c&h8J!$@5-!0h-)$4`%+MF)4TIUF"1IXH`ZZ#h8I9k
N$)"q5)a3E+2k8j!!M@,j&8RKN!"e,2jJJLhq'0S#iY*mfNRCYaQ+UA&#ZDfYKp#
h'Qc9`KE53J!2b5HBX5-C#TZ2(444HT`JXL1U99Bk!rm@ZM0pj8'K#!8jCJk*+6`
lC0#"LE&TU5Y-89dUPrSdD(kA!i41$)X&4('-L4&&Qp'8kbTp8%)hjHKSRZ#fieL
%L8"$,mQD6I@D9mDF&IN-hcaf8BiZC,F#S,bi)9r9%(F1`39X#)U3!-CVGR3&@%X
bXbj)XG"MqQ%q%M[@3"9MAGhUc5`J4$HFUXRTbkCQF`%"'[8d-`YcZAC!EM6!($A
V%Bh@Hrf%5RLGI@0JJdS@d#[&Rl(4rNa82TUHX9A40lQ-XIqQ4#MRM&8lXChm0dj
4()deBpAC8DrSdFF@9q9,6S#(*,!rfi&"@+lGZA9p$md-(E#K4NeJQ4NDRp@i(iH
qa)l%TQY2e$,Z3S$`cM9Q5bXjYj4IRP#IiNp9KjY[H'A1IXM-2hF,e2IM3Cf0M%`
U#cLfrM(CR&C!rU[ACEqk[+e92$B(!*fE,[GJ"hj4Z2+1Rr"#Ghe"3H!mr2%+mSi
5"[Gc-G,MC3p&XeN+!e4G)#8E-AV`qMLi%64B[&A@e4+V[E(,%cb)!+ED-h[*(U&
bXG9(FAl*bdH*B9)1Jl0MJp@`D93X5AP-"HHSUP+Kk%rJ6C9$h%!i1I0)@%4CalZ
4)U%p,F#IAZG1-[hAj4jfqkMZYRp(p,,9JcBN+8FACi3je*!!iRX*j9-e8`Spk+#
8'i(++e*h#!2'ilGiqdL!Y``kE*`b(GR"Y&[@!qi)rAZpllmF@bZ(F+5GdX,AY[G
l+he4Y80Yl!c`#jKjZX6hhPDVjjS!dcDE%lZ`c`-A#R9"`Bq-R`"9QU-NArY9#6K
LYb,@@SYL$J'MDPc8mi,mZIAd#J,dFd++1(m$ff0[a0QlB[ldMh,6%#rG(R3r,rd
-i8cbf3DTfGA%!VX'!kL8IdGNJPTDYbUG[83FU1V-40h035*Arh0kNQPjp1#3!-+
h'TKpG"ipcmMN&(iX%Nl'[ca106K($BF9A-Ei5qiY*+9GXr3A*53B[YIIKDFli+H
6FKl14"PAF%$(iiFh*FZ!)'qSMZ4J'1i5JTe*DIMkaE!Z),Pc)GG@j4@4ZBUG15k
#%)rKkqPf!i4#m3h8Yeifi0AQqrRP80&qL,9C9Yaf3p'jH%AirdX+8fQ@3VD`Ak5
"aAJE+k@a3TR)XY3-6Gh%I10h$Q5#GiJ`4SPS22AG4,PqQJa[EDU2LQ,*`1URV("
B5HS$-!P$'43$LT5#kAP3Y6H18J@i6E-c(Z6mm6)#G#CI6BF&!mrS9hXR[XM!Aef
1a953!#&V3!I@@i[(93SGb"S"crT+1S6UifA%1N*TUlkTN!#hG,hI,1Zh543BJmM
`j1jX3Y!N`V0*2b!+FP5V*rSE5e$-c(8JUQeEU15-8FRLZQfRNGp-ap6`h#+PfN$
pfQ6V2RSJkM6XHe$8eK"%)"H!Ab-b@CKp3eI'iZqEiEX9S3(H3rjLZYc"MYlXc&B
KjrFHi!l@(mCSA[X3UG%"B(i@UfQer)eC,aRTUMVG@AbCIKrbj'DXJAc*lVmHdmQ
Crf(!PJ5r8Taq%GGL44A1YY,lPU93YVM,-"ae`l%3JLC6Ek(0h84",&X1f"4#P)p
!pbhBAFaie80q'8D1j1p'$HJV1"8j0qRYpEBGCjjeHd$SU,JNR4!(jm+i$iF6brd
MHA3&c"@XP!CQ0`PIFM0"Dp4rPZk4EGr4hRpR-qX$i(@E2qK[qdk5UASHF&L*[fD
Y,6+3!(FHB$NfqaBr)#Ak'U6m3#r8Ka`A9D`aDkA4Z,m',iA%-QKTl@hQSZIV2$6
Fr!qQ3@Cme[!Gp8Skr`#(8dV,`j)bPULE%-d3q[U[X@PDmkN9NDQiVl'+C"',p)H
%S(Qcbj9)T0PML!*G[cD5lk0E6'TC#GA#BC!!8T!!klPM-S45%R-NARXQq`i,T0M
,+@E!Y[dSl8C[[l(3!mX$[@[8-K9iGM,r@qX13`#pK3*je+%IXNeU#FXiP52db#m
'-a$qTkU'lLN-IFhbdB$-"%'*Bp90BJ4f&VMP`(4Z-b@PNdGTZA4B,m$k1L6i4dj
FH6iRX+GUaNP[K1@9)iR-KGcDb[5Q[e'YSH(i50@[,FkbKVY"%RRhr--k20+9$Af
)i"8`FI,'5E#2lMHVYp8!K`K8'Q[E33CIr5D5r@Np#hG1T[*2"'`95`NQeLdJ%qd
)ENX6@+l1cb('T85PX[P+2E[aq`@8eMlNL40@VNpelV`DH!2d+i6plZE@AYpA9#h
eB&L00F!crj(&K,I@[k[@P-D3!+L2BEk9@Gk%r6rbk0@)lZ2cXHaIU50fYe'`jZ"
,0Y!@[M,r0k`#([qf-R*HLl5TQ99$Xe#*(hE82[J-K$,Dp[*3$1YkGVPCPHl,5XT
+EF%8mm@,lCharA"HNRr(4UEUk+j[RHBdfBkc(0)0NNE2N86cTQKIYri4l@@AD8[
I2X4FM1LR,5+jiP%8cYBJI08hhQeCCT34l0ZQF-YGp5CrXr+cTd#@,[FDMF0j'0H
5TIN3ZlXaqUUjk0TMT42$*miR[#2I5dI#kjXZ4Z3GQahSVeS1K4lqX(SL6m[k6d'
d0Y6NT@KXD@Sfe+8*EKXeMD&1$Z5FV6X[V!4H8f2*AN+I@hX4330+hCIdHZhb(4I
+D"0,m3+2BjV#),N)$qMSce*kF@44di@GFk$DprPdd+R&FKBDBPBJHiGYkYFIJiS
Q#i*l4-XL(QKa@aP,PE+eR5`JQ`rLdff(0l1r8m!cCp"q9NUU4`M*L1l05b(-!jA
D3dS`!q9H!HHKhhHmKJJ[,92$Bhi9jVQ&D20i#SD*+p)3aG0UFLpZ"4BX0eED&X$
c,V"!UB+8f99JhqDII(SFPI%(*'V6h3bV'YXkeVYH#q%r-&1HB&h[Vl!-)(cBPBj
+M5TN)6d(p,-,e4rbPJ6[PA*3rpZPccDFK!$Cee(H9rRi3NPiff,dM[`00YCiARD
,%aKFEHLaP&2IHQ"`S!e'U5@T0M@jMjV6X5b6!03cTU68C!Pkl+9#rc%PFQ'6!"5
TF'l@YijV3XKf2eRSmVlf#Z35h,qpiEpU[V*pm(fGjCqLFp30RrFKE#a+XEfG,V!
P%Mm4[08h+'+Be4j[NEpkDdVY(mdl50PVPh4H@5`R`EdLHA[6m,HTpbkl!$M$`@r
Yrk&*%[U-E2LDBSUqeP'*LDh,Y$0*1$0"lD#ccI3l*0I,-kiTZ'A`MFVYlaCPQrP
S-a`pR'Lm)U`8I8lhhH9ja-4Yb,5jeAT9G-6EijQHeAD4CYR)eSR1YB$"m#8qfT+
BSDfQa2LPP[c5Y'@*!jr*-&+Xq@r&mTVSA#I"*A(PEqNHI)q5jj3j+!6QDHZZh+I
MELap"fZ)Q!&$%dJe8b'%!UL*#kHEAjJSU`eamSq0aFq#i9`MGe@'rrQC+-I2,4F
1D@(9MF%MdFj[3Fm42JKIrr5Bm2D"GC6G#8BK,h2G4d9[@*B)r$dqciaP+i`Ne9i
E&@"Z)ViVQR#1k8GD32lZ2iXmMGX3H4jI[M&BlT2ZBB8b+N68Fq23VJdE02&-'"%
`%kp"3(C&@!r,`C@@@d$+rBS`c6lGb,phPmX4LS)U1hkHTR)Zh*p@j)pirK$iQA9
23*[4'PPF*$24EJX3k'alURY45HYjC"%VIMXCpZ%9XrZB%[@@[if'CH-HVAQZ(H)
RQXr,A!Ml&`5*TA3p&a0L'ZU'#TIeA)Zb[%F!"iJJ1"cd3%F"LIEir6)&bhbA&f-
KmdF,)0h4V4K69%*J`@k0rMkU'FFIV+f`UK8+BJ)p,D&"F#$Yi`i'F(e2#DlGk*i
abk3E(qkjZUh0h"1+J8$ePbPI0RjI-bS)q-ZmYePeC1TQ%2ZS%-#b0IqMkd&ND"C
fh-GkhMbSE%'[9"8+(D4AlSpDq*2$fT)qG54k!+j@dFpPmqb6e,#FG`kXPU-UEm9
C'd'QVR4b#PA[bpZ5HHm2H)6c3BiV@c0M#-h0cCY3qj&mcaSBf,VYVHbU0!p+#j!
!$h2e`XXQ6pX&63,h!8#6J@!VbSp1+)A6)0T"NKMP[[JqqrA6m9HKY'b"pE(+!)d
VF80f5L*dD`-$%$h"C#XJSceCiP4UcdJ`,')kbEXa"A2rI$JL@5'S#iVpQ-RTV*B
L$d6"SPNI*G9PR9la(%+2Ra*fH*`H)%$aGLDS1Zf1rL9D5KYD)HL)DKYM@)df4$S
5Z4[+kDdjfT4X!SQ2A#+)"M6QLTp4(&FfH%-ErkbPS[%8B*DVp+I2BK&'rq$J92+
Pp*X#Vm9ITL)5L2lr29ld"X#mp*&mVER"0D8S6YYqSa1e-8lFA*`a#+I!mACdJNZ
dG[UFrkG`*8SEV6YHBp#mf9V1PRk)qb&Bm6ZrHGB+q&2,I'fCbD3PB9NfTdD-%M(
-9TJa&PSFHVPKLT%aR&AaIYaF4lJ&UHreU*MiLRDI#!ldCY*NCRfYGP1(&kSaTa,
F1C1La6rFGYlJL'!+l$1aQ,Q1+QTq'l'+'ZLGkqeM8AIC)2D(d4T)0'EGh%Y1B%R
`BbmS69Nfqpf+(#pMdF6H0TE'kPpIV$LjcIN3-[&[B#"Q,d"c3*QAI5eIKc'@($U
"SUaGGTb54*p,1HhiTb#P[5@5"DfYP&`hpfZSSPh-Z,HdiS!TG0G'3m4e"YeNM6A
TJdjb4E!%F5"fT&UqjXcR8BQ5U'LT8%CR'e5iY,j(c'4@br58HNhbRKHLUHQU,@$
a,pVM(BNY19B#Z!5@p1SP%(jYHMB3lDP5k8Qlpcp`CS8"NIq1)E`FAlZdU'25Tm)
k0Y*,V0+lVPRhlF&!9K'pLCcL5'R+,CDf8@JkCq9MJ,4YJ[3MT90(-Y,&K)Mk00i
f2r6-XP'&#3Ar`KPC9@`NMLf+F%X&Y'0(,3j'1UeRhBfaIT@G(cbRFDf(0$&'a!e
dLTf493J$L6$G1-dSG%Ir9PiK#eS%LKmk+-TCfY(+FFPQqdMPY&TB3LEc(+K(*Xd
"'PGD)L5S1QFE6Jik@KXSU'4h%(3b*I0H0#6ER+M&U(Php-()3PN,LjJMFK!ESLq
PG3k1@"clcHD9JB-j[r4ND"DV)K2CHNSPUZ'-`DGN@9mR1mhD,6em(mMrA`8riL@
#3fjRfhpMF9V9G0qjLZq&KRliF&"G9hld0CBmbTd9l+X+-4)B9H3Q4'69cZLl[4R
@YkB4HBE9C%'4(#-"rQ%k`b@i0h3fA*rG&++2'q"C$d3P*`R3AmG(0d5)5jbS$LD
+!T%rD$YJQGa!fc*8NG#lm-'LiFLUrX6'qZa2pZ`T1DRlrhV%LqR+*E%1)YmNSpX
AYc,-8%&meQiY!D(@`9D4jN*["B@TB)ik!-%BPhLd[FC+iUFk2F&md&Db0LHIUDd
FAY*8@&A(*CRc35MKR#"j!FmeK'&FU1(%Vbm(J8m+2jm`%2c5SRS4)G$@#9BJ25+
GR'(X2CDSp5JqGNrkV#jd9fE@%qrb&B%90R$d"$ll&ANL&&UhDbKf'5&,#ZMq[BF
L42*)Di@A9JHIqqUSAYKd+Q-Rhr8TP[&%*a2EBLPAR+G'H%3d4cJLXDr&0A"4X9f
CqNP1h054U$"Y%Q-`AVJZF22rE'ZV9JHmQ@'IVEkLS`B5jX,9QY!3rp2ZFZ9m1+4
MLi`JqL%Kihdk6rER9bqGqP-R(3Xd([$`qApiAFQYUZUC`4+5Bdb0#F$Q*[5%[[%
R*Q"`"H,dem4X+Z#BrE2-NP&PY'@+LUqbBa'4TD!eTVcKe5[j`Bk4feba"fqk,j)
JP!e!b#RB)KaXFfr#$N!&d6&B@JiF@M-1[hfi'd$pQY@UJkUU%#D1jIG61V4#q0Y
hNRL6%&CU0F&mfV$IBkbP`m1XPq$FIY%6NdbCSN[QrV"Fj1QH0VNb-JhNB-Y1P*e
5qqaUE3DD(R(F!(G5E,M&R1%)GEak3G@q6)6D6Ph6TE*UL3XTMX4lR$fUhp`B4KS
aZ3D4![UTrY3qE-QDAUhac&fac"ZUl%KK1C[6H-[*H!"X`4a,!,5RFGp9#2YhUHA
rDFDlr'GkNEjjY0Q1$+J5CdQHrbeeTE-bQ5!qMY!ceb'j9)P3$PHfX,I#m9fFkrQ
dL,@8'dMh@I-X@2cm5VKb-k4qr[M#XKPY3*dPP$#f5@X$h$m0K13M9FH@Ed2BUZ$
3&($KQcpREM@Zcqj@49#lrq&pK4`flI[CAfpEHSBR'cA%F9a2CNR6Y3d&%q,G3KH
PUm8LYj`cNZh(+C69R-6J`30m%p9Ie5[ZFQc&$+28Yf1HQN2LrA$RehU6d`REKV9
XaEMXNpFX-%[Ka"Zc%@a4qdPd465GS$m@3TAmhE`qSG`J%m4"#E@3!%T1j*CYi&5
SHZ'Za1'kQS65*Bq#2XQN6KEBc[&6-qSc[b8UbPJ2epC3C9AHEj6'md84Q-C(!N-
N2GBSP3[Ti2EG"Y[A%iK,LlKGI0NZ&Q9R@(19Sf,D$5"G#6HdFCH"1+(HhTk1i"b
9eHRUrQLL-hpQ)l2i9CR0h+hSG*!!dB+q9C6`i9b1,4MDbR!DlP3UM&F0(d`%4UL
I)ahAF+!,CJJXp1+K5q`SH4(8E@Vi&RXfQX0V8I*EQC&`DMk0G9N3Z!%NA5F$+#q
reG6A&jkZ+dcD2%Ubjl0V6dYcM`JTM9lmmM,Q8jaH2hrdD,k&8Ela$r2)+Jd1F+M
R$e*'hC%XX`hDLdm+6XkHSd@X4ZH9LQhI&!U@,mMkaHFMLQqSM4Ud+FR*rUGrP1"
j`Bq$UQbYH$ZP9Ud(N6k%EbG-!DQ+"CD++m)1XU,MmB9k3D('X3e,X&S%R0`iH,L
Llb5Y&rHMHqqqq"%E-`3fHbkQ+X@,JriP82SiD9H+GJ$*`lkN8m$)PD31iFi&9ZV
FI%U"FR,DE`p@Hf[RZL6%9pkT#f0N"#(YA`H#FImFc*pK+8HGR*a&(+dFK5$D%QT
**FEbN!#qT*fjb4*`2jY,+@Hp(i+F&fK"PFm'pj@--jqD(*Z%L4ab+(kq6b&!"b#
''"D$bfJQe9A3#h1Crbi&!j8DV4eC)@aKd0FEDri)p"5&eY[$MQqlXl2XecHM1,N
"25aC!lJRliTb6N@D[@(X"@X0AbPK*Z!Pe!6h!"#,$"2QDXH,#Zmj$K)!Cm$[+@-
8C'1%&6a[KYC0Q2#$BD3p0Pb,iKHlE[iVK(LP2MGip!DX+8[NAbrE!lDR,DK*,10
!,16cB*!!J*6`N!"81BD0NIC*qRZB+l,ee6XP1$A-)*P6jN%`q4S+Sq,,rkUR669
MC+!fI)F'e%8kcPb1,(4FDrC'$3f3!-%YmZcYPI'D(IFm-Z'+iq@"@r818U,m@81
2[V8%YPB[&a29cJV+Ga2E0TKk&-iX`$qI'AL1"SdSR8@(mA0X&*b9J!88lceM8*V
+&GAfF'G+Tc3*AqRqERJG,A`@0eRY9H6%"Sf6q#h+#S-BaK6EL99EUCCi6B-#,d"
X%PI,SbX9Y8-#k0l2!YC!jE!'Re##k,(Fe`*0'X!1)1HASASCVK!9(NaAhZZ9U20
HX64q#$X),%@I1k!BYX3FkY@hj$Am)!qlaq*r"d18+EdPliTkT0b!%fJJ6c$,HK,
P$+ccfiM&!)Z%cpAXS*A-%cHedh9`40%*95A4X33KA3&4H)F8eZY8HKU[Ah!34N3
NSDpSm4m+IhXVV%BH2qY3Ael3fpqdT,[1`h29eHB'R[SA9Lrk5IaC8,kil-998Tc
QX@e2,-JMA[82['UM9C6'b0@b'-C$NT24FYINcfHNNVfh[ZYP1p'&eBh!mkr&"#p
Q'U+Nb0'(2bQ+PI0LREmqA#"l--DGT((!"22A'qD+GLUak#4%3mKm4NBVCK1i'KA
Ch"UD3,XPp$4CR0I2$QDUkTr&M-hbaQ+`iXkXAUI8c)5jBXNSe4T9F*KkM2Ujc,j
[L&493[DG6peJRZ`1Jc0T*j9HbL,A$X-QjT4q-J!D0)P09MVR!aacCYEYZhb8m'`
&bPr#-8MDCYfdIk"S`KM30lMkfGR!QCe-@8Xj#NhGT2JjGhRC))Jk'6eA)&aDBed
BCQ!PQAlmE$fe(-Z-BYm'M5'*m2qqrSjI2lGDQjZ"i*dJ&K)#SR`rN!#QDpBeM,h
J4L0$fa-UEkIe#Z11EHI(3HFc2XXEqklL8!FK8ASTBb$H[)('qPq3!!FMH0PK@dr
k2@lrGrcbS3#a!$59*""[mIC!rNQMUJD)j,!Ql+X'1["kRI&TQ+9rY'p-"%em%6+
H[[`-@,SIK#Xi1b8B9&)frX,DC!Jb38"ki%jBPK#MmQqq%ZHC2fr3X1QrFb''k*q
I'rl&6L"qd1A!XrpEiR'm#6)QkRD4lN`L)RQ#CeJ1*5(GB9q'+93,3DFRpeBTUQC
jU00&KeQRPYPPdeB[hp80hTeqcmqBkGqhirB)[eR`Ic2P8L2TINEcNeNIQ,ZBpbG
'ImVTDfVSEmMUkFEc,EE'U1cAk#ERmR+V(N8HBHEUah%Fp)SH%lGQ6%Rd,r[&f-F
$L05KMk,4R5@Z"@5LX#!2a!0fr-2dlNb2(l#!rGM@RqFb6VV'kMk0D*&UqPX3U$C
edjPd%-U6#K$GA'"Dh9*FJ9UI-+&`kr)-l+2LVN,4)eD5MJ*!HP3j&5rEL4LEb+J
2Nkmm@%Eb+Bk)K4D!`5TH['bi4(qYJFC'%V&X0ZAFTf)C[)8[1k#0QGNS'BhepCY
UeD!1X@4iKZH'*IYB'pFc8a1MJI)(0&N(LqQTS#fbUS)IiJ@eb#dLP$45emBrp@6
RSQ,qmEc%VGEaahj+`fXk4j*,JmmfCbEZN!#Z5CqaCXL'E@AA'8k1"2h'60Uc4UP
r"QLl#MY2m$kYiV8!qrK%-(8*h8-A3%&i`j)b-AKBNq0PXC[%GIGkNLeNbLT)dY-
@q`RQSDm9(c5blBD@`MYVP$[df2pDBDIP)Gde[CSiLhUbh1,!"40EpaP[-mYL+)-
YpBq@+pb[bc8e-$96NQ&2X)riKKR+2)2q!+C+FjYq#8JhA3AGfINEk$lKPq+N4hm
X-jHCeFAfe4d'DQ[l6K#*TUE&Q#rUU0NY$j!!e6iMpl,@3U'SBA'e@JF&'1cAc-N
+A+aM0p5EiY02ScQe+`8YcbAM!1`$QH3i4(,TI#[01kLd%r0fG`eF4mP&RlV[1rr
05ZRZdB,@(A'aNQISF!L[R+R#TI1*2%CNRD-EG'I)NbGC'Vji+3hU9jThBAlm&*F
&Alh8AX!FGY+@2a+F!pG$qCkh&L,6dY'5)VliSF!N@P@P'Mdl1Jb#'jHA`'8"Mr#
&!qK'B@e")RKRXX9+l0GE(#4cGrFL9%q(K+03rkSr0'C%bbCSLr$jr%@Ce6XYTMa
Ucd-@YKFV,+jjUe9`aDrQ8SS-+)9*fXBTiHk$GRaGL'5BJq5IG-bAqqLNYlX@kXD
liFaP#D#c5SQmF)G2Ylj#Qrfa!@V[CDTcZBFQJKmA$`hk$cG(eKpKbTqUh!Um5U%
ih2C#1VB*@r)j6NS&feYR*l"lMk$'(k[ETEH94E"58VmEK`,TVSVJ&k)NZi5&9p2
58ZA#$N[@meFI49VJi)XLrLJ,,p%8h23"dP35h'%NKGFhkL*@6'A,4A)aR%r9[)S
V2Q,rNCDJ'!aJCK0@01%Ye-pXCp0icX6r2Z9F-!Aj!d%SX2#4V$bZ0bdcj`@TE#S
bN!!i!ee3%jPY[[+1q["VHD'!R+QBZb&Fk4GAe-k"X1d+"i-l6!Nk+BjZ$!BZm5-
p)c4P"P@pR5ScAVRe`3jIFVkb1-$[a$jQGNN$&$"iI0hZ@UB-V9eBJlLD4AE,I(9
Xe9Lq4)"9k2SQ%2f$G#,NID")3MH@kM`9D1%AeC3NE-99)BG@UEVZ#jiHpLf'b8a
i@NFE6BrN38BJI59(HVRE`L+F3*erDEh#IIc36@)q[%BT!ZT(5NCaA-j+qG@KkLe
jIIP[IEeLb#9TQa,K#XSKYaiSi+00ZqfSAHM'iCZ2b0e%qU1l(,P#ZY'V!@6VJ#q
)+[%"(%XQ5iAGL)REf9D*+pcU("*+JUN$%kK`Bcm!8j%P!crMFi(EGVK!1YJ-58d
HN4&S25qTeC8DM9pqjL&L$QMX3Mfm"5ND0@c'lKLiRYbr$+IK2,0FL5`)iZdLqYd
aS4k)5K-Im%$qIXl$QU,NI%1QKBiDZHfd0V8$88,pGB'fkMcKP&0GqN@%[N(IH'f
+*#hFBK(NU1P9+#*YR-M-q3T&&1lZ9i80fc&kqfJKaIPFZJK5L#SVUS)Y+%U#4Ci
Dmi+!D18S6ZY+pNF"jFHQ['!VQHkMUK[*Y1qmEm9X8SHR82*1(MGlK1f6UQ`#l)G
#VQP`La(hil69kG#DNdrQIHXjjJ4rSS+Z6(9e(66(jSbrDLLKV2(HlV`FiCkpSPi
&$HLE6H[N%IVrJ!REjAQ64M'D@e&9aA01j#1"#30K@qLhAR`ZUUJ[Q3,Da5q+p2l
SGar"FAricFdS,J,MjAbeh4m#(3E,RGrqp1'REFh"RT[j3Xd0CCJGBbPSmki)QD+
G!BE*,I6%JVkQi#h0(&A[Q8Y5qTQKLld[XpH&lZ1jFS2MI,CQc#%10Fa33Ij2%U3
d['iXf[EAFLe-,SNG6G,[d*P0i6"0AKZ+F-(DVJ8BhLPZXG[%8D,X'pGpXM"`rB2
p1%N3r651fKc[j@LKkq6MH0U8)5D&l9@N,'&hkUK*qpQ96cH$UC!!DcH(e4`831j
0&11'H2VU&b5q)AipIB0BRcV'Aq!"R9$@reD99q4fX[!EA!#5@JJ9pK4QD[!bR"&
BZ0MQXdA3)X#6B*rX+DKB6diPFmiHlbR4-eMa6m6eXEFiR@J(lQHpTQ!)UUk8RQK
)1+%[DQaaaCX`kSGhBccL"hJ"TK9XPm)Smdr1,!d20h6FiB0M#B`DeG[p[mpF"2+
HUFM91$'piAmi,`eaKSZY2JF-SM,RI5`8pi@Uf#8KmqRVX#634CjGHDXk2flcBD8
35NE[%B%+IkPLNGN6+baa%jbhD1jMHS#D'[YcBI#l6EM8M840PS0di"k-BUb-2e)
NF#)[NZ5hc0Mp)&Ep@ZUf[H$e!Zq($rXX2IBG1MB-N!"b2eh&6E(fqr9,EU9r6cb
Y%Uq)$d4IcPrV#Xi@(`jUB2$r'B1kSINCdMRNZ!,(aCVPrL%&5Ycmr@+LPZhTG',
URS1C$N!D(!(#f(6B@,21m@GZ`(UV-dHmRciSmZ%Z2a(bY`FCMY-8Aqje4NBKFDd
pS,'*",4MK-,EI'f&`CcHAbE$CU`NIb$'*!@eS6lIL!C-01k9lAPC3N%#UL'$AL`
SJkZ-MMTdbX(PYe6+fBA2,,BTNNA9T0qAER3cT[4E#55kl8MEjB8BJj2iE[1ZH[P
ID*GG6Fm6*lLFBa,UHF[LFfm"3$J8"l$j9'&4YE1Ei,iqAJI'3ZeI5!Z(9$#Mf-3
#M$92KZXiCdTefde4HYTr90LrhNTVf+4S`HED!cZbIHDraFhrhN%S1VQqXZ5!HR"
%M''8CbFl-ci4+cQCD,ih%)Ee&)B[L)"ba8QLK`Yak&U"abIY,Sq0Vd3)(2*[HM$
Sra!,CX%8bDVP6+U&&UZUH@)+cd%mmX!2MUdj!kbi5V2SQA2X`%L4il9qFAJQ2ea
rD8hN2%Y(i3T#q4N6pQeRG8[%XYT26c5cK21@Lcf+`L8J@'Dc1*phMQYq$["NEb4
SL*PZCamaK3bq+D(HA&3qrml2%jD![!#+Z&ac8Z5`6G,ZVLU,5YVq0`YC0bXMV1`
)a-MkH+N8BMrl8lI'KUA2%%#G*lAfXCK+&F34E"SEdSpP[(4'8$eVFi6&YV!8TNl
Z0H!P#GaVU4M0,3&C'DPFIL8LB'cYq'iHX6A4d0bFe""rj#$Tj+rH2`j5h"JT`Gr
C3q9C)DS%%4JrV+4D#55HlUhP6((%!P2Q0Z-Jm+Fq*A$eX#GB1&J6`#TScSdLAET
3*da#IPd6IQ-!pH3(ehPNAr,9FAeeYC&M6KFmVG2Z-SXaEJGAjUN`l5@pZeUlj$)
FP5-(#UcPcf5`NAMA22e@C3B#V88VU`HN9p8r$Yij,X98iS@`[#r4SCZ@Yl2Q9q#
1P"Pk#Y)NB8kA0ehrIh9AEjKhG"$Ch56-PI'lVEL`[+ILEd4S1QEd3Ic+LA6rPhb
0P9i&CkmKjqA90AicjT`BZ8"IQE)+@MT`1,Ha+AMFAp@fV,YY03Rc6JfTD4HX!N8
TTbXIE9lYPFI3K&H'ijJ@kjHA66)qNQlNNE,D#H@5"H&e,UF)4RVPcf`KAebjeN5
CprZk[MRUGi$J4jNRfMC`*0lQ[%-Y*JPhB4)VR,r`Y,R"l2Ch-G*2!,"@ZarR3eB
F4C2U0MYq!,INmJZB4kN40SqTMeRddBMD(dqQ6Z[pi8i+bhd+54b&,2&Z%M@5&Qr
S6GmiL@*5GUeejar++PL"0fS4dce+F$r8P%4kq`e$2Blek(ZKl5S"qUmKU,fTcbe
LPB8jL3mK8dA'm,[U&b+c81CJ"k2qMk!ahR@FUAaI8YK6!lAAA#G`1)8HKh)QMqX
$*Q"H%Q-F0a*['Dr`jD@Kl@E@LVrG"6q%9NL"1K6T3R%rIi$[5LPBp0Q9E6JqSZP
jHCk5MPrmh"("*(*Ra&"@0ZAE6UL5[c'6KVifp*h"j1&f#XTQIQ$)9-+VCe"5&bT
R13IHpCZV&@qLHJe3-a,SI6*6K"*$jf`h,*!!EGSM0Z@H)Qd#EGGV#H)[m[p$@L*
Rm[,d%P(b`0*9e8YbUZZ-f'I5*SK(5H*RN[FC(I@G93[XGqbb[e4YEZUr4,5q&dG
Xf5D'N@`NJl@21Gb)qm21FD`"d14Dd3QY)c#`!lYlha*NRcfMi,'bBaIa3NGF3(0
e'JlBE2`eb*@aDrQ*bpKeXB2%4QE!#j8A[[`XH64RAVqSQjIDk-rXp(e3!+J`&`L
B[IBY6h%)ad`KL$4B1QqZ2*5KbH-IRamDCp0fifhcTM8ccrLMZa9$hh&hYMRPIX1
r[bA6Sq[cQdU$'*jM`8Epk2'3!(-X8Kl*3,(I)9%I+Z'fP0E$bmLU!#TE4He,3F,
4N!"##EUXPVemf$R8`j!!r$l',DUH+eBYRM6rGXQ$lIfSp-X3),r,)dL6f#Y&M-K
%6@&r$iPCCk+i`pJ3IC0$Z6jX41A%r*rbIrmm!lZjr*CrkMA`Yp0lIeQ'+TmGNAY
$"$2pK[F-4C!!*Gq-a("mmmFjcPl6"iDpIR)fD-%RR,bhM+mlhI(pXZ8l")+@J(q
!9IV9+$C9hUXGj5b5I!RbXF#%J"TAYT261TNb0V"3EmKU6%@N$+*%dJ9XAY#I4-f
1f!lB9,r9kfaDr9Ejd5KAB`K[EZ`GR%8`F)SK4A!SYq9j+6AcFF6ae6mNTl%VIEG
qGR,SYT1U*"@cP1iS'ZVr91i2+iG`QaAFFVK2Q)CAhf5-MA1,B`ZRZJE05[A,&'q
b+Q2j4CP$I9NAJG$YjR"$Z%XJemjQhDE@+Td5mJR*1cR$"D9NaNi')@(%fN#%r%Q
JQ3GpafZb%bYjG0j`e4GE1Di3a*N!Zq`FHa8I)Nb0J@3CQMP91ldFmIA%Mkd,GTL
M2f0IMG8bfm1R4Np3&S+aVMhP9JISX0[[M8rJ3qqdVN&S"YhE[35a'Fd`FYdqc@J
CXd,XdAlMa#8$mc'%`4MKB4fKS)T3'5&F!X"K#0T!%b%89SV$Ya3'3m9,"3PpFT@
UR9R'@@JYq1ZN-eT9MC'FBBPRELeFR*ppMlf!Mb&-,&C'!#D+jIR1Ta2V(V`@S#(
C,[L")k)!,G-UU#F"BU`%V8+G'P[-KV@THi[acc(V`Ta[21&`DmJk3aMd68d1`)"
8K(aFe9()TZ9!b-96*AcEc@ILSB,k$Zi*[IIUaQ(0qVJbR)*If",M`C6fiZRZLiC
SXBdLQ$`3qUlDYCQLTRaC!R6,MZkpV#aD-N,'eLkL1E6YJ`KBF$TXhY(Z@3PG6kL
5NC55I8aNadB`I`[r@DF3T%$[c(I)pF+)LNFm'rKeZX`fAN6[JIj$V12FT&,VK8U
bdT3`&$)LR+9+HLV#'3Mq1qZj53eP,irCMbJ,+(qb0Kj6G+-h!q``LP!D"2IFRT-
'-kiQP91ldEpBC9!1S"!hBC`XCX*9RAq4@d%a*%fJGADhTBI@qScEM-r,Bc3Eb,j
R`(0RQ5'4aL'MPFSeN!!Lhhc-LI@#P2k,rfE4,8VM5@aYKMVl4-BSfkmd,$#%p)X
94YSj$JDLk&bLX65XmUp$,3eUXiNa28S@YTp)1@hDDb*A91S+JjRqE$5M02%Cpq$
90@p+S%Ei!3IBXA"N"'32`MMbLebUjTfN8%b+4m0"'LDLISMp&&4Zb8BYKqJEh5(
rIjQ*#![h,3eF&QJ[%Em2aE'Se[8qlE3QS$aLM)HG)!Se*q"4GqY!AL1cE4CV&%@
f+2Q6pXK5(`dXK9Ei`$T+-hl4)%-cSm13!(1j4bd"mGiIAhf0Q%2K`$j%A2lj-f9
"aK6El4hCQPmV+3(CE3hrd*@Rb4b6(&EKkT1kQ3Tkdfq!*$h8+SbF+%F5,pT[,Hb
NNCD0Km1[riMMZCr6hZZ,03L(qmR0pba'-(A"[q&@MhM"[1VMk-&BGkjNhaPQ`MV
b2QHR!$k6M`)Fe2p9UEc9`FqeEc3)IMG$!Y%A10`YP@qEF0k)iR@$N!!kPq)T",N
@e'kVBhbK5MM[@JqRE`,@+$'6rNqe"k[h!lZFSYT)fR3r$GT!C8[&qmC8Zc5jCrj
U-66!SFbVNIDh&!q3!'qrh%ad#G%+@-Y`DeZRaACMB*q9m,'pV$'S)C4!,+Vd+L)
'H#%j$"'ZDGZhQ3PfmkDGrVR3rIJ9[0pE24L3!)8!!Xa6"rQa6P,J8+TMfdpY)X8
#bIp*[HZjDb8lIfLMX0f9Cr$a99-'Q*V#T2(hV"Uii2F3K9`0lZfrX%#b,jCV#N"
mbE(93*mb$MGkUlfC#P484iDEC8bL44jj@fFjb%'T(0J3T5N"q8lKledBZY%&a6X
8XicQrHmaG#FZrQ-rPFJ"B2(0*NI%(C+pKiBdEcrQFMeGD6GcY8fRN3'9VY8-Q1E
lY&r'DE*Y#iTr*m[X8TU[R@86mJ5()jh0bP6q[996G@J%cpTF@-)69Hbjcifh-3`
q'irFT-!p!,kqaNCfp4(I'01Fc&8PGVJJ8@a1'2a"+M39,Z02lbeK-VU"j1leh*q
j"2T-r+hSBNN1+9"N#cIH$dI4C*Dq&kRCe-dPDCaS%ZQjdIT@SB(*b-B`bSh"R39
VkS!0$6%JYk[(0U0XJb*lK2DMa5i)jb204eDBkr-)c-T'C-'dpdkl-122)!$*RjP
[fACkmHeCi[b*%4RL0PlF"kBY0KG@0(LXS`q-SP-mZ,%,LX9%bUCVj2cA*Ib,qU,
NJjZ&BRar)mDX'(r[Zc@apbbdah)(K3TmlEU@r"'ABXp)6A$!2YN@%+AS9VI`,BD
fljced&l)XfKTa9(29X[(9%)55XD@K&5$mkK+*UJfFl6I!G(#jfrm`*+QFBc!0)4
16BB-(2@r+3`B%@@5PpdrI"$3()mT)M3a3HepM0ACPC9BM`fb#GBRm5UNlQZ#'M6
E92(EGT6Kri*Jj"3YNS,0EAb8L#'kKK@8%+D)L39qL@N11aAr3L4k'["8Grr$QiN
%'8MrjC9D,1eFT6Y1)&$L,*Ar0NZ%FEa!E'Lmff*5A+Qmqq"m&kjmGBVIkjE@)bp
3[T!!lShP-'!SfVqLJ4V,LThbYbb00C!!@r&#haj"&1eBmS0p$#lllk49`$3G8k,
p2@rKf6)d5@lMVa5M94mjr6ERL#SNE93X6lc+YYjfTeV"cmm8aJ9d6kf4$hMT$44
0PRq#J&qpDEZZ3cN[Xdc5046I*(&j`"QM!9!1mUd$aXk+Uj8M$Ej&hk(%4,k93jJ
M3E9KV"c`X!3a5Df(cA6(TLU6Bh'l)6"r8j[-@3r8SZb)@Q19H,%U8hcb)d&H!`+
mM%9apX9ar&DZl"B4ZK[I`qGq82*-[9-HTUS[aaI)#$EL!$@,(NCH*#f[(rYQH&k
(5#K59MeHK#2NJ&2RI0ZD0QN$aPdU*0Fh$1@T+R"j2lP8Q[F,MiE8f[rL,!kR-BT
+3Cm0G38DjY9S%T3j@EiLkm92BCfj+9Y5L%00rRABCG)`lA41T"Ll1A3iXGj`f`@
%q!9IhXfNLk!4G$49k#E,q$UN,2+-9TZ"!mqQ`m9&M#b4j`hKUXG1VQM3Z1*,cY,
D'3bGFJVU[$DMkLT-fa-9*mP#k[RUMF8qNkR0Y2ep"@`SVY[Rc'5`LZ+P+MjNe#5
L+$+p+l(9Nf`i)9cc(+XG*,#ELXb**A%)fBN+[MYR,X2,52rREmJL+cYNHQrS&&%
8SS$%!mbjX!rrlQR9q(!'Nlbc5acr&8&VmJXL0Yh`FINrqGaVJ+L@-9(0dATfjPa
[Q#j(k3#me6hJMZkM!+F1d2VBhdJ6Y%@2['AQkqSK%[X2,GLfiai5DXhIP019ZE$
`"Zj331@N#k1JD#E[j@EUcR13!2G5Hh-R[VH(Y,ScUmRSZ`2N9@#J%X"JC4"U3'0
!2d5b&&[rD@*+(BTFhHi'!09NI%`EVI(5'U0@m+b++,+aKcb*5&QJ&Tm#6ZP*pZ0
Z#`Q!Ypf&$V&HmM@ZBDRJ9,88R4J+Z251Ai`F+*@d"(G%!"[LB03)VLFFr'h&K!S
8"APX6%l+B[,"B2VAQ*ac(CbZb`RpQIi*%[Bd1$&iVl2r,I4V"bFF055rSr%e3'L
GZRmaDHKd%K2!*5deF@emfX!p,c35RF$S*Y[SUY[QJrX)&A"%CL9Q*[#lYK"rYZ@
Kk8k&hhbRhGcd(jEfb52(N3!XZ[q"8lAfV9dNrpj0DJ66"GrEM#U+3&qe-DN&DX*
Y3AeS#2++"E55L#KXM6A3EL3jb`4ER0jir!2G56&LDiJX%&KkBD#)kD[VXAG&Nk`
qL@,8rY6Pr[6Nj,P&epMkM1FJ39E`2@[L,VkGUh,LU@)B*K)FHqeDBEC(S%eCIQT
!dFKQ*N4Vh'KbdaE*pmV4ABe4#**r3hbK@PDUr%r4DP5k3p98)$FlT#V'0pkN")@
Uk#DU,b2CEPB+jmHj&k9`iYj'2MVS!2rm9Q`,`'[@0TH,q*AA"*McK5&)@A-F2`3
eb,b6'5QGf,4Qe8G[5E20Z6E@Z#J'H6N@(SH[9Z9*Sk+0I6MZ4Kd)e!c#[B*r#%8
Y!-mIPVK3kr1)U(mZQXXJADrAL'$d'!Q+4cH2Tm"l8lh5B#*L`%0YL(AbS4'B!RX
4VGrNaQAq44RM(l8%1!A6[`MeYQfjq30dK[mjhhVbPJYH"j!!BUQd@A#BG8)9B%Z
pqqQTcBlV`5d'JaSL#hM1paK[8NNI"9ER&)Xlfh!a",+3!"[i)bhAXa5AlNLTFFX
bmI3a%"QZhPU&5jTC96@%GQ4J(j3X9)G+!cD1FFcmDh!+6FrG)TbhTmT5&0Qmq6%
E2DB'Z"kKqP8#piELE*b"Z%GG$X$Q0jbd$a)dJkLSq6L&mfFi(p)kZXLSF30RhDh
cGl'Uq@LkrHED8"`9`L8RYI[[e+YeXlBSmq5M@pq$b@YY4(''"4lCXA[mKjZP85[
a@[p&JEP6A*ICPRh@R*8d$$SiA94H$3(3a#2Y%)D"b+QH!&%[Y+iXBKUeGD&C3Y@
Ued02d&%3%"-dEdH[mPS#KT!!RR,IH'03imd[8l(*SNr)HVNQZ*[rR6H(C'D#5XE
a6hHq'+m9k[Q3!(iq`'TFSb66lpNc"0mX"q)UYh"QT'3[TldkH12bkHd-PaG&+1X
NZIU!!hSZfVVNICp,#DIj#XpTBNAZX6+c)%S5kXX$Zd#FE6jMBA1H0[NEBqk5GAP
m-Qq$#TX#'BG1SiHG33PcdR2@Y2SBaTrH,,qI&[&JSieF`K2rdjlh8!r5P``48+S
*D!6A2fY#CbSX,,I6Ah+rC&"4EXqBcHj4qd,VN!$,ffa6-q!m`B2`Khjka16V*[@
15c4B6kH-@+P+P-iaErPmBG-$##PYMbRTdm$,jDMh`j!!I#qG8ir91#IVM"lj)m%
1lUb@Y@Gfm[0%'EZ@%qp9fYI&$ErB,8,4ZJ31T1*a'G5A$*YNY`ZaMjT3k&P@6*1
c#1,,V,9"H[D)cQr+Q@V,fCY[3LC55HZ3!(D!,aR21&l3(6%P4"G'8BL$5crZZVL
6DL6TkU1+H8`f[HiC8`GK)C!!8PlQ`#)q9R8Pc-A,S*S$2-,&IMba"0Mm*++kejd
%%311B[8AJ%*cX@[XST*k6`d22a$rqkUbkRq#CVb9L'STAa%BQCjIU%X@"Ma&$CC
DC6*`m*!!HINYmEm3%BSdB5KM3h+[Z%El0LEiGCGh$9HK4C95"eei4DXF**dc[#c
!pPYLfD"'VL"G@Qk1$"1iil"`,8NDSFd9L,HHqf*K[2Mq8m[h8j5k$)$cKUjIm3M
TeJUeJ@VpGZhCla$2Hk8lpc#3!$+'cBBp5jrPl6[NR!li&D,AibqI[j`6kl8f[AM
91$Md@)%GHPplR!ac5K@l,VY1H&f3!&mL1S0C$)"e-$13!!LVKYAl6RSL"NJ!%QT
X51-9((Arm3idJ)l4XSSA)8G2["HJChQL`G(2Ur"EQJN+3XV-6DD,+906HajJA#Z
NHY[Tp&1%NI(R%fL`eRfqTGQ@T&,@1##kMpr8f,EGR[)$G)!C1Sjj0S-EP4bGlF#
"8A(H4S,6bqS&A,f#0bN0f*Hdl$rIFYQ04Bea2'9E`q)0[9dBc!d2f5ZVYLLISjP
)#G-`8F3*EUcTibGH9paN'F1JbfAC5Q1D#qGd[X1l@rAV(@0HhjjZ8SlX)GDhMkJ
Pk+(m[dA!Plq0G38bBhZLMUJA9L!J%TI9,*Bq3h,F6'R"c2h1M52ZLeGV&TB5!e+
jqKm)G@blQ$af#f5F"Rqcb86M1ShGi`Adh,UmCGmHlaHi06Y%e5NLS*0XSfSILli
')Ta`+`2Tm,3M0$6%R2EA%+,3mHK6b4VE&i8FA@PAScba!1L3!#BQ#k%D%8V%m(!
#l1A#4#S4"MjeVIR6YB)@jaCrm9m*8`Q&Kpbh1m*LIb1@LpXl2jSd&8Hh`33`4e[
Ar@TMZN`BaLJ%5a5ApNrE*fp@-j(GL&QI[9*G`+Q`MpM[NB&jAai01"QH[YJN1Mh
AKX#idEBl4Y%9iSL2IrM2[$*Nb9"6[S9r`U+K$b[Ak85rhaS(*-Mek2LmEE)PlML
(hcGMZZEradLKp9M`V*RaGAAQ"E!K%FQJ4$TX6Q#$T$,YRINXjpj)9d$%imT6h,1
(pa`6hE4EdC&`Rm2lKXamF#6%l(AIX"[JX!`#G1DIEX1m%IM`k,ci4XUZS)Pj9*-
'E5Jd5$D!9f$hfK``-%N@N!$9KZk`SG92NDQ+"cRS0DZHXrY1pq,ibY`RFMp3N3j
T3b3C*)E-Q629b"QVP,BV'BZB8)d'kI!34U$K#T!!,2Jm0HNi!R#jQ3HfkP#FIm+
E4mBr9Xc#Ih[b2pc5UK"jG%!Y0*VXQQ'c!@&ecflM6k398@BA$3Tmc5"F@JIjC&a
9q*UafYq2N!!HY#kcrjGYHFH0'Ur2-(Fc+4GXI-(iLAqa1r#FFlQ'3Ji@$%ScSNb
3!%bB`XFHCD1HQC%,@cV55)d9eG%ZKSY)rfdE6HqpjaQb+)I5AZjX!Y+8LmXrEGi
U#D0PB,`TalD"9Pjhf9B30`0i`dLlK5MC%d(K9R%G%cMQ&FKl!*bJ`j+)QD0rK0A
4HIMB$T1"%+`ZkjkZ($&XqU,fe5#"`eAGq,J8R6aGLMEcGVAr8PDNSL)*ZMHDUYH
9b0qIi108+9bFQ503[J6!),Z9aP@0+4GaXQ`MS58'-#1fSPN3@-MA%8,HUG-q$61
CJ12"q@+r#%[ej8D-,KbMkH)PRcTb4@U8!("m8($%Fa!)4acNkp!e,ETH8EfDq8"
FYH@FX3&h'kZa1"d9H'3-SJ##*XdEKBK-4`-N6B6UfcH6'!($9C%VedIE8)hpTAZ
@4pU!fjH2p1L'0Th8iII*SIcHa3m-XK`0l5k*e!r6GeZQ-ifXaQB%I5iCqJ%1I5E
#(1!U5hJ"EPCKp(qFFID'MHZ,S)HEMKSk`eGI@c'*R)f3!#!%ZQJ%!6q"*8UD&IM
QpG`@K[8D!GCVXUB6Ba"*ml9U*'Pp[$dqcc+c*r,2rej)C@aq!0"q3BJ)L(QQRdV
R+1*6K,b!A-4I[ZpV6M53!#%aRc4"IGT4HYA-iK,MUC[f,$9eiRImN!#Te1Y$FlX
A3aYaIRhRq*D!6TNQ$TKF,b2[X')Q&"QqTj9La8bJ!8eKq'0I9XGSSE8CDAdqaL0
IZ+eq,GZZ4i%J+AUCPj&eU09)fDeY8i6CALr(kpi0mY5rc-TElLm4#[jCIl#kBbJ
8#3kZm'cXN!#j&9QKq3BHF3k(SV$N2l"YZ#HUL%,ij,r[5V)D36P*5kbph+'NcJT
Im,j'P!MTIm[D'3iJC#fVr`BThM-*@q*Khr-AkQ+ll[$"4Y(bR8@hfS(r2VXRJTl
UR2HD!q--jQcpMd&f)`9rR)T#MGfYRGmFDe5cp1JDS14!plF%aYU%i2%Fq#4b`$k
Y*-)q#rp2EcrZ[*pScQSG)RX!&l`4%"N3NN$aJd!*%-BL2-jjHH26QS9H#1@-H1U
IeMf[BfHGbDkZfdU%LZFekj@6X!Q+d"8$rdZ0Qqb!JR#'-r!1AJTU#cLmVKk2DLp
9h0DBQ,"$6`[Bk&qZiRrKH$hQe)LJU$1&4V`!)N&'IV-%iqm*$5[h$LKF5%D3!&P
5fB8*S+,l$3F"SjHL,McK10`60c'PfBKLAbjUcpq1(aFH"kEhpJ8-$`q%SAp0Vc!
'5GBm[45&a&`kLdhp4-N0fNbpc*h#Z6lRSSRU&%Z`0'hlNC(1VMlfeI$pHeb3!1,
iX8&'ZrdUe)j6FcM9kHqCBDeE$,#!0eNmAh,!DF&ZBAE(C%`3Cie'p4f&HmN`KZ&
Zj'f+TlR4kDriDG2fF5FCm-rCfca!G@q!%rh6ilpPTV5hJ!#UrpP+p@l!NjbE*5F
Scj1dQM8',F#$mU0l3IIKBV1D[RK%C,N6C8QN"$c[FpLj8iUMM`Jc4VbQrGbD*TP
VH0JrET-q`Z(jBT(5U345m24aE1NEqJFKqkpJNbeCh#q5,#TSk,mC+dc'@dlcU-1
*KUhZ8-"rU[EK!acr-QkMDm,*4,V`Fb*fr6D+Tb2paN8#45m+pYCR"E88BfKq-Ea
X9AHM1@Rd4HEfLpAbZa`,dQh,MM+Zc1b`"6Zl("2ad`-i'90kk'XJdGSK'FN[[Za
JlpZ[EJa0TZU$jZJ([$HM*X!`3m@Ehaeq`H6AEKRjrLpmBG)"!Cqa*'1NBU%UH%M
cM1m,b4(lq`DJRe"rcIQ5`,LjehI0iVhI*%%bQCkXG21K6Bc#bTXD*3&#MMjUfmk
d%1Q1A'8,*BjB`PV5ff!LV9M[F(#rYJRe,9YSehdXCY@Vm,MBAFi58S"36dqHYl-
Y$j!!%mJ68NBMPqX62ehSQVkZ,4QcYCR3,Tka[NVRNCE(@pL-dUEe"%5LKpf!KR,
4FZ5Vlk)YRembpq*,iD2VAErimiJE$QFP)i5++Eb*hr@f$H6dP'LYNmmaQ+B5Kd[
$Cb&9QafpLhq)pj[PpUAJ--'9JPbierN4X4-+TN9,iFY2SmFMh,e&M,m[6NNY*52
f+[fm)Q*qY&+@Y2'3!#UhIF'[ZN&EXJdTX'M"ZGM,2Uk3!)e"JMY)BFZ0CA[CbBP
F$*[`*eG*4Qc-[00Z`)!Y(DV5i-k)NF63mN,a,b++90m`MpPZm9[2FX8+(,EQal8
RbR&Vf*C9VBN$,T@XTY6q$EMBF$l@*@6DBr13!2#Q$R)E"iTc%m4YM$&Bc#A8qFS
SqT-YCT-KZCKZq8r19868pdm9$6P0L)*19(V)+bjr6el12R#c"ah-#8SeT(YZiqP
0`Gqmh$fj6rJ6iJRh11hl&P@6#%`I$@S%cXRBaiY6j*rXVQ'B!*MjH%HAAqC!3i)
fP0N3'RVab$SQG#HNd4`M*A!&Dkr#)q"S"SR%Nd+aeT0piBh$B8)Y!,Dm!DdlhTQ
FPU,bE9RB(a`4%28LkZfSGj,G85P8F0'09Z3e!b*m3DFbAB-MB!ZfG23aJhC2JIc
@iZ%i!9'@'Bif`E-&pRFlmlUKHQled3mhf*R8HU@RJ%1!MGQE*qDDIecdfF@`jP5
dNd@I#Nb(`j@i'eQ6bb[%3ZS8aJ861EmUE!2GVpU6iE&MZpARIZY+4MbfrpT2J8E
5lNm*TG!bL$`N1Pr*CXkj$JdSrfa'%jC5T04LYNf-3eES,MdVhlGaNiT4mXVB-e9
jl+)JpZP+m,GG`$'P&f&fk8DK28cLH(FL@EU*R[aejN0qAkYpE01HcRY2Km9jF9l
&3SNCLVQH8U#hkP2Y6ck-#Ech'9[LiLbc$hYii6G4V5jIMY6k84mR`EJSK0lU48&
QJ6lLQL9,4F3RHN'$H$4"rHaMmXqKeFXJU+@&1dcm3NGGYFQT#S&GX[cASk3rqmr
m"Ar5[JcFE'G$jCaq!mEC[q1K$$hVrpT+21f[+F+'bC(b[1fJM*YhdBA-Qj3d0B*
MF%Cj+Abp#[UcB(jL926+U#DI@JINC$Gm+$)!HGf%'(bTNR8DjcUDckE@daYh4`3
88ME$N!$G%8C6+14ak,I6",,-6540ZI"6[A[%UbU1rbS%iBIBlHV$S2U@X)5I6a+
$"jq%#Akef!d)i-Pd)29SK!)H-d*a+,Vr,,mV2H#-Q8P)!mBbNXjNPS#QAQ$8K-,
E6THPqV+1Pr(QM`M()Z+-[&F`jZ9A+VF&Sjh,EhdJh#rqqp&AJ*%HB9A5cNX9q4J
FQJ9U3#-f)Eq"ce-FBJ+DSQMjH1ada'+DX,BR*frB2MhG5BrC(Na$JU0%q%YP88G
VIq3!NrR++5abiH)J1cc#mX@Z1"Gk5h,j6,VG`cI'[,T"HlIN[E'"1Qk1MAJAm[Q
G)kc)`a&l[`*H5@VT%k8SSRjjaK+p1Qm[---cFY6)8%XHX$G@Affa#5fe4k8k#5R
EP%)9G*dKTdQbppIZZJfT[1D)-Q%'ZYH+jRTQ2c%Z0%EpYm2TmS%[a0iI`D%)2p,
qFN@ibQ9I0Y**,+@1lFbBh04kmNYhM6Y(!j[(0d"KSd`mUrN%6)cH6ZdGp3FI2k-
m-+I-#9`*'"iAaAN0YbRJ6Tc*C@%-h`LU"i"-)U8NESqjAUI-Ia`Hj)LLZAXX2%6
X9Bl*)GA!Ea#FG2Sk!D!31Te[RAiF!@Yih`$$XP0L0$aT63)3Jl'&"(8TUMPaaA-
6Zf5lT'[b6("Nh`%2jYI1F@IB`a%k@kUrUL0j#@-5GJSj'Hj[mq5LBUe6mV+3!%G
5(@1h3#CZeN'*,E,6Cd[3k"3Xm3brEVf@(bUE6U-`a-U`4ahJY9bkQe)i3e"`"(l
2IeYbq5-c-DVFG6Ya6,MFRc`A$S,dL0m'4iXSp#mV)ij*LjGG6VYU4VARK`4i59,
j[Z1m0rG,8)Yr$iIIKJC!6(ib!)VDY0h(DMI$L&G4Q(4U&"8iJ4!r4cMV'qDeGPE
-TDpS+Qkc0eiEL,4`@PJe0!6@iqD1l"2Fb%$j33S`GCMUlPCM,UdBIA9mkEl#$5%
i'A9arSY)kdr[`Fj%3cqc)fGFBRP-'N0N"qe"21,%%FcUcrq$1CGYUP2iF$i!,q+
"q6hbe`0-hY!)-fP*'CS"A-6Zk5@`))iK$!'1[(m4-,&`fS22&G,9C)-TeqV@F"#
-+SV'$*LY)Q&6)ijb$r,Cej%U#h&qQCrc@aB3EiEj0j1DJ,S[JUC1K+XEc'5eK-q
jV)%kAqPQSdBVY&`H5GcY#ZQ1JX-&bcAS@IL3!#c9(I@H5,R)I2UGAjea$Slq,0'
'X!5bB4d0XB1kG1U(1J0MB5*cDAmY'ApM!BjZ`5mSBNYYSe@*-Tqj1KL#AjPm-Sq
3!)RA*6L+fb2Te9P1CD'ZjlL[kQ(I,DI6rer9'a2`m'@Hhr5bH624J893D"Qm6*P
CX&P0rhM!C$1RGchYMh&2VjBSLRl!!h)Vam'H5Hi2pLQe!G3P@*(dmc6LE9ciY`2
phZ01UNNiphhP*@D-VfHQacb*T*R*[VLjKr8jP@m)CAkT20%l@*!!Te6JINGG"K[
H24pS'JPEf,e@!@l5ihR!e4$E-qEi*q'"*c'GJl$4)E%q$S#Y2D+YBe$2SC5H`h#
SYR1MiRddM-94JL!%%hmdZrm++qR!,YSYl90dj[rZ`4hIbPk+k)&%m4-%2Y#CVf&
&d+*9VAp&CYLG+M"ZKJkNNV@50&9aE"'TUaT'"dmTmTp0[bT2&MUVU+HUQE-,Dch
qXlPiIK"9UbSZ&1j`DL''pK0C1fP!RMK5,2Y2qr3#fdb6@h5`&*92I,[j`8`#J*8
ra#'FCZPXJEc!i`4Sd"2dB@e,l28S@lZTUViaHRU+'6(E0YbJe*%fL,-f,-m-A8)
rJ@$*lmcGVY*MYd"eCUr8S"@(Y*8)@!PBmS8[')+Q"NJ[h")8ppT!GR!S25$!qUU
hCDYSUC2i!arY'TJHiB*PNHYJEY(i$1+"p1p61BTR$Kb9Fkkc#FS$N5(L#'SMljA
cXP)I#aVBaCZriVT@BB+U0k")Mf`X34Fc0RlV9'(XdC!!TXccD*+NDJXEG2IM&dF
X`A2+ZV-)*UbXe0ek5%lliBLq6Uf-8DR@fN3E9P$ALq4URGr326Xm)ak*-b,2FLh
3&R9&dC-i"$*h#*`k(qd)m+4*%*3blMQ0NBF'*Mfe&V"%6k#H'SmZIbH*@0MIe%2
iCB!f$BH-3N0"f[iiDZ9qDmlEJR23TZJi*l+"Vj5a%Q4T&hT8@k0&Jp8PU@*3IRL
qjTKAa`X1j(ql5M@631AhTd&jHh5LRVJakMef2NC9rX(J-NP6C++2pLMfl3VddQb
mCbK0k+FAZqmd$)A!b8&MaTiZ3i@NeTBF(5rQ*PYZ-pYYf*`D(6C+0ejc#aT@DYH
hb2EDH8+4(p`5aJ8b,-D-Z5Ur!N32D#c&E%V%SZ1+PqHVLMDk#Tc+[(LHNRE1)Gc
NeNQ)!$i$UFp,(2%aUGbhK2k`pSN+1E(""kMQ!pelc6DJEVS&-SmZ4(#J[SZQP%m
Hif"[c!"2H,G2APrpQX6J"4H+8pe,T61P#A8B[Ic8T$m!"KmIb0QpFK,lj6*dcc(
RIJp8qE%CTHpbXHAN-PM6)lfK)#Hl($GGK@9+(+GBC&@E8@kLBM8DE2aqLAl6ZZ1
brYEFJTjMFd@!T-Z!c`bEEBP8ejEqB[e)m%X!9[j&)ZcPVfPa*JF2V9%l&p64[jV
FQpSE@JbXP3f%#&UEHrR&1%+LMH2p(h#D3B`lZ3#Xk*Lfj-TEpCI2eZjYGS3fZ1Q
B#02XL#aee,1$STBE&ZNfRp'*BP8lp)`5NPEhk"4Hcd5#cf0%(Ae-0cQ3!-1F8K-
d+PkK0dQ1`#+'m6d,@Hr'3UFACd6C5!%*HN'!#CE9[(mR92c9r*C[dYN(3YIKIjK
qqImJ1r58NABaNk+&Nb2!$8Ekcl*4kKNaQEM4j2,*@6V`Fm0qF%hU"R9q1l3-G#5
#3CaCH2jMY*N)VX8G&C%GKU$MU3DUBDa'9ecSKYr+lijPCe4PQXeLA5$jF$$$TUm
)9H"GbK(BH$k*hEAQdlbG@ZeVX*!!5hS@"%jIEXR'YDF+p2&5j`$kDlA&Yq#,5J`
+kE,3q@lYBK68ah(+5[,-PCB4c&aTH[E(R3biRc5TkXq)3ZaB4r(jUdHX!U"ipmQ
`*#IXqPV090Kp-ZfpCP&hm4#,e4`UdDNk!fB$PU'KkZfBQ,$qk5cUYEh)E9,N)"E
b8BkY2j!!TiS0HKH$*fM2DHLHS6Hel&E#`Pp5VM6Y)Y,lU&rTB+2RLQPm0%AX+q8
cK*+SMl#9$Mc$AGJA0hc2MmV,MSpMLKR8R1+khelJlcZEbVjIUN#6q"Rf6DKEDH5
Bc,!IFQb%mJe-1XYeKl)JrfSh!0DCpYkZKkkZNrr"PB1iTESm`+C4KMGMP&%+Mel
Sk6j(aH)F8+"YH&N0jc4a@rIFrYlB4%TbL5TrI`)IYdkljT05k)Z9c4%dDhBU1I*
-Ca)9RlG[Ebp9G)BRPRp5`rkaF'e[8%A&#d9"dQ@P,2[brlJamRq"-$3iH,NLrhb
&M0draQDJ)"pCSa4iU54kESf(eGhEX0-rcT-&1NPQ4)`kVMDF,fY+Um%!)YirkLN
M*[DkiIHD2+%EbRYG&rQ0pl3@GYE(q3CP[eG!-b8`e'YNA,d+@Ud@EXEqfM4GJ@G
!h1"ip*mee+l[4&G53(G!0Ca`p%3"I++X0MD`)p*#8%'VL6&4,Tq2aRjCMIbl2Hl
qVrkVZRZ9a,@2ZN"[JrCS$B"D6KFV6acUkE[J@JNZ,XS"'%FpG2KVR$I1",Sc*cF
Ll)N9fflTU4,M[4jelef',3q`9mhC2-+Ca#SIkpdPGB)dBK[Iprl9T@QF*5j5@jb
T)m!k)lXMaU3hVa,ef!Y33QrhCiVBr+k#BaA-cN`jqr"C9*k6)m%%f-"0A431LA[
fSi49h'8QEV+@"G-$3YjP$+d3TV)YrMpIMYaALL-5[j8@G"i1B[N3GB4S4-BXUr,
JDL@6h9karEQH$%`DjNqBBSEQZlTIS+eh!UD@1CBQ0-KhHUHGfATB`ZCTFm%ZBa4
)fR3c(,rX)a*KC(bE!Dp@HAV5[BRL6YSYJ#Ice4-$bFYBDVj&KKS-EM(TKY6-3-r
RFSU-cUU&aJiA,lZl$VZ@N!$h(M3K'SG2BeNp*Aer#SQH5Aa'%N3ehbT@dT!!r3A
4Q!d6ML3p@"aQT"ES[NPY)Y5kK%+1IlHT%0Ti,)PdCL2MAP#ch@JRjZ5pH(203NF
a'Zlb*ENE1@`,G4G`%ApBXAeS)55YaPLqCJ4LP*1ZDkfjHQS#`U-&)id2(2)L&)0
pl2*1(V[3-eF$0+!f@Z)Qp)H`[KZ&i)#5bA+4!U-@R'BB`PJ!Dbd[9p&FLHNp)Th
8fC,U&C@'Xfd0C0Ej("6$G[,,@)SL5Y[&H66-9#`cBjpMCTpQ#`!k@$K`#qdJp!L
IaCKFUTNa&p1YC4lTB34@,qraIBbSScaC+PX%SED06VRMU"pqPLCa9USBGL9+i!'
RbkaV)m*pSqd"ra$N,FKD9'YV6+C@VGY5V*1Sa4+3!2D%lHkH`qd8b8m8bB(bF-T
fVU#GDDpRpq0DMC-Q%"9@J[ehP&Ua#GPhQKM'm@K!31V&iddRHlp%2J"9Q%qRUZL
5aVJ3#(acHYhTrJ$QRMUZMTe60qCG-9m**Vr@*P8ZjKXq-b$*5pIb&*d@1UcarH5
k[9["cRe[edpmqF+[&Zm5'pPUDE8K(@GUV*(0D,I'RiEXD@S!Mb0qPJeELdGlILT
P9[2*+VHpYj`550DVLq"b!VqVQlk`TU4AA"Kk"*!!KD5DR8m`VAJ3B5FQf"SPBFL
1mPV`@@YA@TD(@'6qZhHHZ%6bFhKk@dZSb1L+G%%LAlp(F[4l%aqSp+l!,9e)I*k
Q`hr9cBi8U[@Yh,L)SQ9&CkEf64T!PG)2e+$J,8lSZ%U@SIXF[&(fFBH(mS6"6UE
lT-R&JDA(KJ)cG[Cf&"YH92ZjJTS!!,jLaRIjAcHY+BC#Af&%`DTT[r%-eiR$Q%0
qjDMJQYkrpHeEfM4j15)amf(H1aZC%QRcNmU"Ai"QMKrqp-'R18%eUGFmbaElLRN
hRHijPFY*#Pq5!QiKhNq$NGDlU[A[3JP0B-T(bNk#EM2Pib5M2#icqk#U58,%"Ap
K*1ZEcLUQ,fJCqJ0kJN+'GqP[bB+Z*pk4VA!K"I#VIaDa,8r5!'-IrqBDe%MX'-q
'dSd`0JBfD$NXq"X@[2b%UH[D$#b!'HdSM2NGGR"PVmN(,a8kqCF)I'Ma&V'[,#B
B)jfpPVJEkiNG%ZVT3K(D(fhA*r`3eZVRE!NJ&f@%5Z'AZG[X,drXkp(KMbBdFSP
I,G&k-9K[)+6Vr'8eK9kYb`Km%'Vb%a"`'2Y!E(idTAjmfP[08Zq"iqpI&L'&1Nh
j#b0Ijfqh$ib!bC%KNLRXX`'hI8A+I5SSkQ6c&XYk)4aC@SihL2K-B1TDc8DV$*S
F+amVY9!aSmU$lYpDXC%@0!qr++90Z-EF8UAN((LmI@"J6lpcKb4V53&L'%$pZ+K
i((GVB(c'Y`%i'9"lBQf3!,lGb[ScCE@K+kMEZfEi#f0*%13,QX*K1eGhBGa)rF$
C%,-MI4,f+S*58)iAVf3[hT%eJNQMK&!i0ZY1+!4p@+mAF'p*Jaa@"YTqJN`GQR'
NEle2A4*C8S-r8D'i'dQ&2KTJ9kXA%!+c@P6H`[-'RG3'dhdr+UGhT9`9`ebiBDR
Y4&DhmRG'9P0)V$PS2ic[V3h$QKU'SXV,iS1%#lj#-fTckD%!QmXU*,HG(ESq%2M
'@MA%&)(18(R+6"EENcaGDU,LE3qRlV+'$5LVIb)cS4HAr","fI8mA8Vr1V$2BHT
aKkQIr9LPF!6(+VD&Fb68,Af8GkK3Cl+Gmr!Md)lT12Vh$IK1(`$AR*Q`+ISI%&Q
A(I8RjLZC&T@KiX,Zk$,Y'RSPF+`kq&@`Q"5X),*k3PL,F)kQmDFCYY&QDkC8K(m
5UbIUr4'*1J1mG@@GYp'[!24@jSHYaQ4k2TF-XfDXEb,#LApd0PAE1SVYkU3,cb"
B+Vk$@-MSfF9Y#cKI41DRdNq#e#dfrDCRMLml!%a&GT9fldJ%PNhdeGjBMSjNU*U
`QYeZ+pe$h'rSp8`![bJLB($5*bli8r(+lE-ae%HRHY[TN!"(bY)jip%,!AVSDm`
p,$08)L8HlI9GQlebJGFR5BCrQNN!*cq9U8JeFbRG[8-pqdN0AaeQ'&bS(M2M`Q`
VLcUhH5SNFL-ZMM85h'P,QG"1lL+56-1rSeRGF2dN+mYpaH`MMYf[jEb)+qlqT3l
$'UjmaB3Vq5T%3(T*2B@fLMBbNTARiQTp5Jr"2!ir[4[HC&%0aX1CL$q8F1dmE)G
5RXJ3*G5QcX"THS[FjMH&P(%k"f2rMi#cKb#&8(Xmjp3UK#8U$B,e+XU(SDDmV*&
L&LMq[)dL'AbJ[,RRr#J-AViFpM2)X9BLp,YXU'T!5cFi#94m"-MhMFGNlYplDdK
p8N5qVE20b[V5Xl$@G"VdicqH'klPYT!!cjBG4q3r$[`U006riE@@Ul,!m+T-,Dj
0bk&S*Bf,Ah!B#PM,F,2(4UaCfZK*$R&fi5+VQ2c0K&5PVNZq5fjaGZIHQ3eVf,!
LE'lN0%Ck`$6XR3BSe,"j`4TMeQljl&"b(2RB9[lDC+Trd`BFVLRhM9)mDpIG3d6
rD*+'SDIFp6DR5XX6MrT*X%pMN!!m&Zee`'eLESU9,rPlFK2[E1p,IKNCbifL,ZJ
f#q+r%Q[TpQ%$r9GNfQiEeU#6fKF0(j9QH!1pBHUD-VS5L0!L0%)1SLeJ+5Bka6(
AF`eaY[6SNE`Q2AU5F,6ZkbV2HbIPI&(H0%Ak5LA!L4QqNm!3'hi+Hl!EFj+Jebr
0Kae"VZ--Kr$febj$J9cEaj5S@pE5'HaGLUSfKq9I-Y[li6@8MalT!q0-[A%RNh!
bP&C-QB-aX%haB8588+E$5ZU6$Qpl[d'&SJT[MQ!IDE9*RVP(Fhl8bZ`LdMUSV!J
PEE3,aN@L&+2SiN1-QM)fT(-U#M2&G)81#c9!&(P3'f6lV+`G&rHeKr&8fG"@aKN
f[%@5Zc1kZTr"amP3iCSkbVbqmU(1`G(AfJm*l&G-KE4D5`3FA[r"TG%!rF0RaYT
[H&LriqL[D2%"VT!!6XT(rV8+VHQ'hIT9[VZGqcDU*V0-R@""A"[r'YTB3q8fV24
'dPc)lZlT,C!!+#d#*c$!cY*F-*`II[hcD@TqAaj5eI3`GM6dP8FD'hSD+*Nk@$%
'ZH[L%q@%hRI&AI$%X(9%&0ABFEr4PV3Zp'#k88q1#Tad'U6Yf,X5'8f8UK#4YFS
k+qp*6JUH3H+'%F#i&"J$4aFjHqmHBmUE5#Aj$`c2M%E5a1pFmpKS8cdb$KSfmm0
a@"246!mGhbYrSC(iejdKH$-dBJBM64GR*j!!MlFMY#PeEI($Zp3Aa3$aF-fhkp1
9hQ4JRCTJ(,DCC0JlGcR@+S%hYED&rEIabCR*+`cb3Y,U%&Li91@S'1-p2T([NQa
fGb),@U3jY$r#"e83AP94STIBR%-+6jZ1[md*rFE'feea"I2ckC!!V!bS"P33FSd
-9V*BG%K8Y(U*$,-a*HCf(10l4Tq&XXNi42Z"I0V1rVAZRe&NLCc+RC+22-2)TZC
)S[&9)ZKN!J,L`Nm1k85e&I4)88Rid+FZD6+J+&Q)cI)bD#*&YBTY)BT1Dc-"!@"
B2j!!F!c@T6$RHXIDU'"Rk*Z*lkZH-`L5FJPKJ``V'H&NBSbje3QGI!11ka@-aPE
B3Edla4@5hX2X8$5,'9$Cpab$j&V-AC@cY3`U+rJL1pl%XE5$Mf0pL+r9)hdN*2+
XJHP,DCcGep2"2m[0QVUGRX1N4G8(mY,[Y1+A`hdCC3IN[94TIVMTBd-@4QS,Z(8
IQ#F)*@d[cF'JL`$L)c%4Vh2%90JJT@2(q4NRfUNFSqDLHR00j(FfR4eKU)UY#Zh
3XE6k,cGG!QUi6G591Rm$!mL'iYdM$E'X!6hdFrRQJe8AL2)qGQV[44cNqK3@@kB
Lh'ra*)FJmDL$CBZ"&0hUNdI8S+0M2-""krl[*%Ik"mfH2E)&j`-+DhQrl`3VGE[
eIBpL2C!!9BQB-&k5i9(Z*phA(!Y0'PV2r5"4hjP[!*Q3!&RN`pNJ'qeH[&50mTB
Af)p"QE,e`qfl0$5i#"MhcQUN,L&fqS#EZ'VK1(U&Z6GkpMZ#GQrRU+m2V199E()
8Nk&Z"cPUHHa@9MaT2pKUAb9#l&4N95H@Ka9*kH!Z$ZNrr+B#6k!%qlCb4C1JTT[
j4IGQY,!JT&-"rjm&'M1%%$01Pccq'UT1"N!FP%-'-c`UUG8fdaAEC-5[-q&3X4K
QbaMYm9NFNqPUp8U'!U,Zc4fYTE95Tk2fQhB-*TBkRb1A0a!h[VQR#'cSUk+9,+-
jU"49`A!K`!(HRCYMHd'YdB3dR#b4(MpX)$i8DY6@U+XFa0r$Tc6l-D&)MTR&iUj
E69,(,ZX`F)Xj`R%q'QAT6KFNkN(F)G#5NS'3!1FjRkFEH*)Y'Z9"-CY3B4)K3DX
rCB"&9[TAPRCdQb%-Q#`qJpA"QEK[Zca3E0S[43bcddNL)V!lG"h&6)@)Rplp,%D
NJq)BqC'EA4!0E*8T#%!QGHc!UK!G-%pV-bqjc&,e*GV*AJ4LGYAc+Ie-Kb-@qQP
95d`(HE@,16B&UcE9")eNKC&hV1m,G1@ehimkE`l'FVS*)E6mI,PKeq1I1jFm$20
)IJ29$3`0c4T*!A(Um9GB0a&*ep![dNp8&MQ"[SpaJQ3LeJd4iJUdh(q)Lh)U#fp
Ya[-I*iDk-kF`kDdmU9rTNi[JRMNG&YjapAR0aRk!IbY@GV1ar0ZTe-B@RVkl-2$
F,$*kLN(i(Za58E3DpSFke"X&ET+)2BkB4[)iU@jJ#Fj0NDTG+rc50TbhL2[IM8m
T1h&r4GTZ2I-XXZkjj`K0fb8jk(6M3!l9X!9m-r)q2p5(!,SRqi46`RNI28BP%eY
#j,q)a,-J+he0J8!Ce1l##Y#-$)`A'dT,[J"!a-3(H#KJ+rK@H1GM-Ceh4Jpb!b`
IhFHmeC0rVVDJME9VTmkNa*Be&1`+fNIabrN5ql81p!(C&%Xah#L(BTIC"#++VQ4
k9(6rRZI1CqFd[ZL@)L!##fXKq-d0HG-cp$J($8JqfB$MNa8N)2H5TLFK"p9IQjh
r"R5U(+TCfG!PZV-+)E&+!+!Bq261ZUB#3lF"9E5j(l0hm+(SqG!`dUk5q2dr8qF
P#S"0Jj&@Be!+Ah#BI6QfCrlK8l!PU-L0NZCEUSJAXr#Q29jl5@j6,VIRk%T`&J$
CL8A(NV&Lf*!!Dmc"'%0(fZ$`)JS3qIm5ep4pMVqIpi'BKE(IPQYN#1A()S`ml4'
8&RU8Ea3kp$CrG,jY!iifCBVRh'pd6!KlmCqZHIZX[kDR[2@r*9-Q0Pc2A"$2Cq#
9Zk"%CC)ZK@*J0"R,Q#9i#F[$2fjDZ$CU!%`pqVEe-X5!k48@@1Y,ph4hVMb&M4X
5$p0Eb3JeT@fPhHBp)MdJBGGpVipdr-kcHH"k)SI,lR@J[KYNA*E4MH2ULSjrj#R
R5Q5Hk%XN+98!dC`U6#9ib%+JUDTFkRC'Apd,NGKB9CqF0cQ3!%$4IQPaH$r'G$m
0d)X-HUVGVr$eff#H(NGcY-krZ2H+a3R8rmBC&qe+V6kC8YbJM9U2iH`rMhm0-"T
q1a&6L'IUM#%#-!'$jh4V0",YblrQ-a&Gh&cRSb61lJ#r9d90ZrpF4`+ARb9%E92
'p3ZNJ5$3!(A-kj3b@@d"")5V+Thh-M+(@Ql6pFI,e5H3!&Q0AqH-S-0&90'TK4M
@3F[Lf1+p,'l5FA"k*Tem$K(SK*kj[Z'$VBJhlciiAXQD+qbPIJP&9%0Nqf$#EdY
PKViXi,r2`&c6e%ppq@jd`r[TDIHK"jNAjrD%IE"&THSKDE,RN!!i'ebjC`NlMpK
$$0CZiP05dIF8#Z,c45cpZYbdETjH)4d!$V)RFBBYi+$![ba+EJkSYdjEUrQ'kM`
FS[Ip@9KP+h6UAX,+4Xq+lr(qqEM43qFQG$,1YQGPQ8*#hP-NU3e1GMlf5K[XUZC
IF#J$P90c'I!94j0%m'Bq1k&iAGX9CS,p$Ir#pGLDh%VU-(JcQJjADX6QD[fHeR+
QpIe"HCfTakaSkB-S"8Q804"CC9H6!1GAF0ai#C%B!S9+%T&"0hD%81aaKSmc(Se
NiCIUNf&d!fHh!i3S`(+cM,rhqP8-18HrXIqc!!D!a'1bbr"'T54rZ'rCGjBNXrB
R3E6HV"mM0dUrA@ZEUBqQh&"k,GLECA1$eKl4qF3PQ)09rIefXeqIQmkP#e(AkRQ
$fLE(LA9d2$94Q'+L$B#I2X'A-prAjS#SR+RYADAiYCETf`)11fVic0M*C(HD+IP
NkqU)2!CFi4)258)Hd-Ml*"Dm4YCfm+DpA2b8BLqYB)!9[3E-ikKb@B!RDM,3M`C
p-6G9pQU66,pjG32N3R91,#PVI$jH-CBK'e4&eR,r8N(m-@4QcqpJjNp4r0*NI0*
51#ak(%hJCc3%S$fhii$H0J!qjM@&3pS'B#S0,DjdPb6Pdb$m)8A!`q68jKA52-J
)KL,8MYr&%d)Z-61$PVm#aMXH)TL"Hfe33(p5#L#S9AepiljEA-FeEY2GDXU!Ic1
MFJm*h`QQaX#-pDSl@HFCDXE!M226BpALQA-mCbL-(P4+mkC'FLB9Hmd8hFV&pb5
M22AEh0%49-GmEk[Fe)eJ88hK'pKTZib8a9@!N!#`49cD+'H,YP5(b$Qa('C,cbp
!3I$aaDN1h$5NAT68K&E,ZJjTMjIPm`pJPE9LX5iX8SU`)C6DFdj$Bk*b"12kF5[
P$Ca9H2('LN%lD,jN-FYpSI1KeU"p[HFV8m,GFC%UA90%4('A@%3Z$lfKidLUGPE
CkQpe[Ua453AcDB'K!`-KdFPF@EcGBq(4FlQmQ6@)4j8hKQ9K,3[2A5SL@Um!mb@
jam'*F31@L3bLdfk!NXDf3XGNff0da%IdQ&J3KqK9SR(D9j3B*#2d#kikbN53!$j
8LZNcJKl2A[%pZZ#qdU1RV`h%r4V@CPq'hBpLCdfLbPfS[2Z#b[LE0LPac&A*Qj!
!D1iJkE0E(X2+EB!A'jP6D%,900K6(K%FSD(-eLBI&EAA9)5SUVi&EIq!N3+(Fp#
CGQXpfU+KeR4Hij1X`L0"akAX`Xr$Yl%RM+Bl5lSVp`BRj-%852ZjUc02k6@Bkf4
@cr82mkELQ)E0MjrQ*rBT9`emh'MPepC+`RPe-arFL6h,eNFITF#l!&YB-mX8GhU
H0eHUAI2DG5&HXdMVc+m`p5b*Q$HeMb-ch#1iDH'h%-[B5r1!a,A'lK"ZT+jZU+r
BdJ8'5PlI[ZaI-HFCmAL&IqAkhi,ld1H*3SEVRLc,q4HZiFdJ6YmHSb%Da`fH'-F
NqP#+m`MIbVJ@&NMXLfG5qKIDqS%K8pRJ[B,GaVFd!,fb#ceNq,i%hqc`q5S0L&r
#Pk0CA&PX3,Bb!MbYCPZ'TKiK+4cP[GGTm!Vlp!84AjpYIfSL82,IF!!%%C3j(pD
mD)+)Qj+V9c1A"mRSkLS64@[(Xmr)rNAD5'2,J-F5K@KjN!!9eNcFr'kDGLmDj8I
[dkPhIKlSck0m&0&S@BCQriJZ2BX%FlB1-SDr#jBTHN-iaK5[1aX`-VTXAMTK+H)
2a,Fd'rX`GH*JhM+TU5E$EK`Scpmc4jM'baN`QA#CTP*5Hree8E1`X%Xr4DAFGAU
l#&XUPBK0M@XB1L$YH$+$NSiZcbPhaKMV6j)8MUHjkB`hq"6a&cCQ(D'Ye*GG5@Q
ZXR$raDlM"!)(l2[F3ML4Sc,9TLdUY2#cc`F5A!+HT#[XAj5G%D%HkHIZYbFD%dU
H"[q5p`VJ@l@qYrJ%XPPUFa2E$*4NKk$5M+jrXc[X$-5k&caji0Zp'8qSLGUY3*p
X%pFR&@FfDV+QUckqQA4Z+"qHNA2Bh#)a%%&$85U4#6jZb#[HeNbE%r(KZ(#8'RA
Pk+(dhY4P6&bM[*jE092S[%)!ee0XcRq@2bLLB#cY"'ZEcUjalf`@q`Tm-)TF09S
km5LM`iUC3'21kS6l4f@,"iLUK*!!JZK0mVEA$j[1+p@ik6meMbHbQa*bF-$FHHq
*Xp52-`9S3eh"VG$1`@1pHAeCf`*5#HC1J8Q9c6@9!(%l@NbbCV+1%&ICf3$DP5F
H%N62qPESS&5(#4dK+0835@S!8IQL-0)p@4HMR+!#YQrjf6,PcH*,L!V)*N'4X!!
[#%HcF3eKkV)@eC@Jd5M[$-P`2J`p0ef$G1"'dHmcbIr3CBB!T[PIL9Q),UFKYH1
XHV$KU9d3SBLRiImj@NYY*9pj6Y3B[p@0a#qSIK08-C4HHA6%EaXG*iSfAjiK@KX
)QHa4fF&L@Vl6SjZ3!#2iRUFRG+XSRf(SM6TF`1RU8T8DZNd*rEfZe@["XRj@I85
9fe4dA,-kBe-I62A6q*aP@pV!m@,LU2AEUlN(1dcc@2#XHV8HJqF,3c@2UTd6imj
l8-C[ABdK(r$P(8dpd1)P35`((3A916`SUa0`*PBTZ3dMfJRYS6c*@%DpC6bI[-%
VeEmS2`Q!lY#EDj!!P%dEGreTb5*Ip3DI%`A!!Dr@`KHhDDcqIVa'AQ%kE-pCh%P
e9+CJb!'$@YrE!FY4%$p!&YKb4G$P@KLiA833JeR,BcC!*"#4%'m[@1e-q2i$HRj
c-M"1l4"C,P!d[h!UQei6NY#@b9$I%HhQGkjPMY,$LLcfMB(1q[qfCXBdP8qp8l!
Cb$`DD*FS@F!B+[#e2Y3h!Md%602(Bl!HB"f,58rF06!m,jJqb2iqc6iQjJq%6pX
cEr[RiBZD[I1@kIZ@hF,jmH*4Ba2dQZiA(3)(BiSlYeYUPp9B8Z,!E'UZ-10GjaD
0DAkdY[$C2m`@82%KdmF),IQR-cP%GTKX'Ial[fb[mqUXpG#fSS$eH9aG(GFT)YS
X-DpjUe$ZNLUjd6(!eB,5dDNLl@N#*[kG#ZLE)M8!mlbL-q30aqS@qi!rARVPkF@
-F+Qp,[-5F+hFN3EQXQXYK,9F#5,B695ZN!#R*@N#FBk50hUr@,V#GQZa5hJkp*e
,ZYR*%%&aj%4B!Bj[&kb`Rm41TBLCrFAKI0(#fd"(GeBd8Z5FX8jrB2idDdp)bcS
6%lJm!I44JHZCj2mk!8Y[bpN80)-"S9+CMHVmfi,YU`#I(+PYSM&Vjjh9-5TMP4b
BdCBD!k%S[H-Ffj2q[Ff+00c5QYh#b"(F$#4UA$dB'QR0PQC(F(NZhr-+jRRX,&"
ENXQ*XjR`Q5Fj&hJ8f[S%C6q9aa[XQR8-K'6PREE41iE$&AliN!!NqiHee"pILHL
4Q'V'C$mjP)2A68EU5MaqSAqZ&aQUq'CdLHfTKak`A[8e0d!r'2`@ArLYiKFf%!G
k+q+bi!Fj9X1MZYP+D+%@Upb6hAL'UadGM4K"3fMlHjNrdkkETEIbCN%("r)9(r#
1A3+h9BmSd2bS1q9HllqZ[PCK34rQf[#qQ[S2++c3Kbf%YkR+jZjmjMV91CI5CYc
Uf)YqbMXd-p5Vfjm!DJ9Z#[8[Q5DK*&j3aCLPI8j[9eA9'T2c(0F3&6eQ6,FEaA&
JbfV*pY[HMREmqR2fp,*Q&H3hCQXU&aZ1V2(Bc"hEXU0cGG(ddm@l6E!H#1)iX%d
-!iFrF"akf0'c@34f,NQ9a5pYraF9d4qRLb!kQ`!+!fZJJ'mNYheVrVl8+@&YZ%F
l8CreA2lEqGaGaUf0Ll"5h)$-M4kCHM'hGB'3!"*,L[GU#"8l"l#U"'XR5ckP-QG
CENX'4V0c0,MD1+E0M*9jkJP*b%S5E#lYFKe5`5*!'VN2h@G!@"a1k1LD'-b5dDF
Q'k`LdTT1L0C*iAj`'6'5%hT`@,4Fh)!)Z-l#EFJ)eaUUa4lP8cRD'*`'i2Ep1fN
iD"@aNMp,p()3![0Eh5pkYFXU[qR,-E'mMbAB4qcbbbaBA),fT38#qN9m%LamL+*
m`l&4Uj@LlA@dS8rjN!!VIR3Z6NUR0-(*c6rcN!$!eN8HDF#`-mM+Z+QY+q29cA!
peMV8GjUk#kQM4aN4L[CUD+KCM@E62*-#FDkXp(eR0I'L4[V)r,Sr!(,UG$E@i*U
"E,kQ!l(SdmTbUbjlPGGKCRKHREJ(@Z!QHI'aEZ6"cF2G4LLkBC!!9%MIV@FjfM&
P)8ZE9!93lZ'dmJ9@Q(hFID-LPG8Za)DKiN,P%Yc'8X5P`G'H94%TkV9-,pje-p'
5Nf*[BQ4NRGeK@Ch38i8+!3E%mM,JCVXqb(rV91'"C&e4E%VM6pGD-NApEMAGC#f
$C2Edp"GRJ"[[E&rJl10e*"$14)#-b+PSlC&q3DIUe%5$q"NMmTZb4GU)6lIAppB
8GVYQP%G'[GqL`Ai+RCM%[%6''&KK",+BTLdrpJRjA)3X,Dk"[)9C#3e3Dae5FI8
2[Kr9VZNKbMd[l@V+d(mYVfA`)3C),1%fIiV1FYmak!Qbkh&14Zl(c3i&53M-5I#
%m*mpY(F@hDhKF9b+S+P-NK'0Cb8q$(e,,!'N+"f4K#f#$CqFKbrDC$-14UXq2UY
rLQT)%V8VT"M*I'L)[kH@-)+@UdZ)k,ZJ-5HCFYK@lLmL[dG*MVkUPd@(,lqYJGA
UYKLa!)4iG%HHI#YCj59REDkl6!r9j4LrQ3MC3kFCb*@3!1`b8-dpEJfA0cpJZ[V
4!HNmmjb'Y-"Bb2N(KlJ@S0c')*q"3TF'iD0@-EKIpp"GJ)-20+ka)DbK$pc$5lP
aZ*RIif`DXdcIirlrk@2*deLTZ4(YJN'50Xak8cSYE3HQGqUPm6d($0+[92q)2J$
)mQrDeTF84mc-)BEaF03dSh1bJ@3ilmE,ebI"STJ2K$A0VC&$`dK6XJ8XD@U3!#`
0TUFK!+e-8`U8IR@TC9JkVR&TFi+(HQ"8h(4!5%$i4'6BiKD'kLF+e&4X@[Za8IK
@S%TeIp2eD)l9Xr$B5GC4A+$"fBrE9*rBHUUq)CITGqdV-5Z'2DaIR*r`L[SD93+
`d"Sk"fl[8dNZrK#D"QLU3AVBIp5*iCrhf3"a++[&c-%USHKkKY8&hUVPI2K%'Y$
Uj**"rEi*"q[$qEA4HD0ehV(PM@*(0p(8U-hNR[XP-*8R`E%Lp$i@9ESM@0MbVC-
CKMZ1ZP(hNKUk'635dHB[$3abQ4$Ub1J"-"qU1f&pPC2$jC35)K'eI%+8'P&CK1M
8'j2Uf`bYa"k#$"mXaX!I%K4&lYl0-bIK`iBa(fZEP#M3`i[lGjakf*4i6VQe!Zb
"mRB+q$``L"LJpfeF,[+1dS&)Z53Qkh5qHU5VH9Pd-RU8FfD1QHd$S@3r,8%IM2)
qP'NJkcKec4V'@P4hb2Y"eed[h!!f5MKddGa-!$%b'jjp%SE%GKCq`%)$SN*j3kq
G"P0KXfh*1F$NG!5*mrI@YXVHPk8P,c[fj4JRVPjib[DDqZP,VjFTNVUVHVQNk5%
SL4Y6S*0@%+6e-4haelZPPcNecflE[eKmZM([-&b@((R0S(P-TckS4Y2HeCkNK)l
8[*'[4k''c+[J3DRkpNjKR[SG'FifAB92[a@R'6G@Y@FVhbhKT'F8JK%CS6SCU*m
Cp1jVG%E*3*HePLk*,BjlB0@1Tr&J#Z&0EY6524UmMkN0hB[NNGZqXYE[QI"dQ!c
DeD&&9#SI``M%"@65,PqHUZ%i4P'bjN'dl4T(9p4$i&ALd@ab,&leH`8B!!+Z(Gd
5@aMU+'B929DDB3`ETpDrMU[!kJ-H@8IZMK2A!IKrI*L[VK[Q[&G&)-5f0,U&jTc
iQcrIrY%Dm`Zq*Em*l,UQjPV`5j1S5%A!'352-a1[pNE"J3L6iAAq%lE1VGheh#2
*SI2X%M,l2#L%dFdIM4f`i3%#%5iERd`bT!5,mC*40CpfcZD'db2TKbBMC"QHAc@
mIm"*kZ33LM%#[-2p@K2CelTBeLm%@"f$ZefrZHJ,&1qKRdb4U$YL8dXGq8#kJXH
[R2pX9I"a@bRG&4pfkY,THmL*B6$&R@[Lq(ENM3!J'h$0`"5F#CYdRV!6i',0"F(
rKG2`SaF6SMiZ"Tqd,GaC-hKHQ,F+!,&kU5+[LJ$1PQef#mT2f-@KN4qCfRX04Pb
a0p-ekYQrFK2(Iq3b5c*em0k49*X-'biP`1SpC'#[d)L(L#,Hc"F(8kX0GYQfK$(
3KGGhhV$8GCNQ`2mlP-EpC1f+5d6UHY`YS"Pj`@r&fq'Aaq9[R*CEmr92Z3Xa"r$
%6HB@I%-6VQjhLdD[-F`@(mK@Y([Uj2[6LVC$Hq``*6HmI`r`9pEH0U+hHd@HlYD
@Xb+'mJZ+$"+@f)d[cJ4qEV0N0N!h2UTeqcJk$LhfSZM5N!$4K(r#!%&YAaUj'!3
iemZ6`1mSHp3#Piia+S$9YMD[jrpcb'6*"0%G[1M-F4Y6U"l*!ZBMXG`PEZ0USUF
lh*!!ZKhRjP@af+&ZIrJP'bBh!XRVHD(j3Er8K,8jI"U+k9cU&!&(!CL-cqHq9N'
[#ZU@F[YUAqRDq-Lcm2)qNaNhL6E,8ArF$8Vh59Hi2(V2pZUSa`rp-qThT8jZpXB
iM9j4DS1ra#P6aC3!F%@&%-&14MBi8Ec-*rbL#-2JLkfP&-(2Hm*'#Fqie1RMC2-
Ym$rNN!!40G"ZR`GEVdTdC[N@(@JTZH'*lcS16G8)hZpAF8ljbr(HqrX%U(%X*Sp
[RJr+LkV@8pTe-DVKbE38$f[Y3fY58ll,44VJfGDBL@ib-#Ua0a#3!%eB#e%[El"
MmXk"Bap+,63q3D$IC1fp*-$S)[SR%MlX!*aU(3KQr8HHj0C66em(+iNCXSfGQ)R
Y#d,Ub$5BTlp0RCLI3ES2HR$-cbR9[j-JaU15FL&'P9"#"+(qZ-PIXjhMU3*m!1Z
bPiLIUG"8(!INH%Sb%rC9A4j89"S(KAI`Mrjf*,m$KPAa6hiSbS-`+JXrRh)H"Q(
dVe+55%)#YG`%p@[4&Yec$Be*-#jEVqk8XEebDYX0`#05p9dK-NE`l-BVq0&HbLH
`MdRr'c8LTU[5I,*pi"B'A8h4m&[Yr0QLePe,)fee!2Y%"5mhQ)YC,6RjSjUETTV
3")URAQ!"c1U)60jj@aDLP`C12VHHBTA[3hlah!f(&[mq(3ep(1+QNM,abfema2I
G$)%4lL8K@!48pIYkppDl98*%)$8c"Ae-*UCFQ(jVVL&Z$*)e`S+QrHAAEG-JJqJ
dh+J$a0jUcUL,L%ja0((BP4J1Uphp1lBUGErR'&6rh#mqDm+X[-#JJkMiJZSNm1)
50&+Y#Y236'H'!$5S,a8!*c!N[)HY'G$SXlk0RYb6"&35l15+Ci2l4Vk*(-D%Y0j
'KRc2HR&%Aqa-+Km(bTpdQbk$k(!!Thh!"6kJE1+aei[L4dc`c&)#BEB'*5d[$j+
)AF)NT%aYPjhIY0(22jEF(B$)&p[q3U%VBK)$LZ"&BM%B@DZDaPJh9e(,L0I$&L8
SCQ[mMfF[4`(*jhi$"Pk1GjPdD&Ni1%@-MP9qRMrafSKD&B1XTp*G99)RTm`YckN
&DhJ%K2@6U1$%lfIjq&)*3@k[PG%,539pHR``'*!!)CCbe'DhGDicM#Z(5+-bef(
'*0PN5pLfMj96Y9Ie!a&Rd#Tc,DmV-A1i3#JY!V-bN!$Zq1*jA8YK[MHMJXYF6mP
Dd*la'Ebp!"-lYlT-p)Y#QadHPjP3'hTlCA+%XNb%4Mf2Bek`+dmJpNB9dkIClPi
$9aFrUY3HJ(Pp3D005-(1DSpri2HDFQJCcA'06-c(,%P9J'L2TD``HJ-qfIH'NL1
2)Y5b1JRX8@'C4%RhN!$4jhk3!+rNM0!'%bLB&c0pJE53!)-eFm-6cdjJ#M)0$F4
2VprAFISi8$@`B3GUl1Zrjp'-iEI5LDIY1Iq6k0IGM%+(k!VS+dI!RIPd6BIcM`9
U$0Kki3[i!j-#5PTPiBqAQjNIMLK-23j2L--P6$2)$CFCN6bKmA(Ih-VbH9a2kP&
X2K0lX,&IiHB9`i4#"#AU!"4@G``%I'Ep&[mF%eYjlJ33LI3N3"6lfQ)N%iair@&
4+(QYP%$6,%6P-C'@f)cehjlAV*%"H+0TEhZ!'pNTE*p+CrdV(VCZbBUpT4Apr9D
$R3j0A9UDHhAP0RiCV(KAj8E9[rd4&kfY%b@iFhqPJP6KJ$aq(I230[ib2SB2Y!X
rYVPNG0ENlVA+FPj6cAeeK9bleR#)m11)*C,k2YdMbTD*V89M&2jN!"b84e`fXj!
!8TeJJN)UklaTmmPFGF3H[[(bqIi5&946($pY4TMGc)XCAIK8RE8EXGqC8#MNeQJ
J%Y@9D2fVr"+U4ZlpQC!!hN!#6HjQaKFVlK("IdFmQ&lP9Rj(jlfaQF8'V8E3+kp
!QbP[iG9F%(&r1QQ86"I2"i42V@RiS[m8H9@2brmAjB[`V6C&(*!!De!aESLk$ZS
[#aMiS[Xf$+j(Rm1F'rG3![$(',TXpB@*T@rFiMV9FS2k(KI92d-p[r06Y0X5$5E
2[mba'X)'fPfqDbTH@$3K(J5V6#%9qRYY-RFihj)jmRXHZ5fUqBL&AC`BrI-+qkC
,'-6`)bma22r!Jed0-9hMRCCE9i8kT9cA31a3H4)U+%%*k!L6Jkkc4%QV0b,2"A-
bP-9cFc3M1a1$rV3RprF,TM+3!(K-6#d#JVHNqZlY0`*'&"bA(RcD*A8!U#&VBm-
pDCm,fZ*L#j1MSZc!flLFm#H%eB430Q0N-dZ)KHXRNVjRq&aRM6QfaLjXGj!!I1[
N`59"%HadPF2$0akH)0Z(JLPBkEAZRVQ3!#m$@6m&XP&+f13i&@B9Hf5DAHM56lL
MLLfkTmFJLJ$!NqX,@KEBHmKJm8KB@Bhl(qMipc`UCGrrZIdr-dp'fcQiVR&"&)T
e6e(aFiT-j6G&lda)Ph@"bdilA#UUldi!3pBFR1AmLGA3H&rP@@KFMpCSVBfEZrG
I1#cbi5m)e'+EKcC6&f)cfGliR*,8l!I@Yh'rFJ)IEGpmr*m5"D*NR1,"9+eR9*e
%f*!!im6@$9IGdm,fU*Z5$jZ(*JLXcB1i['H`8Z$F&dhSbie8C(rBhY4BC$4)9Qa
'ee4,F'+PbpG+'r8!e@0EN!#K3Tf9UBH9h2%QhSF8h`bC2+p@1dPl+5'!)iD0BXF
M%'@ddr@#c!M%H[PcX1MMfei'8EC64fcHKf82!hfSGe*jl)rcUiTPpmjBX@X8GlR
2&@P*$8p!K%QlQ)R#i"@QIS,qmSb$Umm%(+b,aHfe[C2EUj0Dli'(X+',+jFZ@Vi
SpCNf4FTH*GjHfQaZ$peI$8P+c#eb`Ciide'q1ECR85Z%GSL#6&QZC"!XKNc9YSY
&P)FBM[alXd"01,1-GAA*3Tj[ll@1-'[@cQGq1lMF`VI(dh+'q1%"&1ip%38F519
'*MC%G8kRG,4BYKm)N!$CUGa#F`S6@Q0q`NZRrjZp*&1XaBU@55Rp!Af@9He'#Kr
8DX6jrKZ"CS2IECchKTmabd$IfAd#bPUk99X%%"klDH!M"kmJ0NVeKdbQDP`GS!R
NIlda(%KDHe63b6Jikq$88VJH[9L(8dkSV!92AUJAQbMcc)cYUTAh'-VM-ILeBk3
d)EFmq)lSBf*mH#f181'K$Z9TPTBJ"@`EYMLfBkB)Z%-FdZ'1QRNNV%b-EIHQB6I
+'p)ZZY4b#aUapXA4V5eKGe6#N8NM+K[8,A@qYiQk23D0EDQ3!#[f%9G3BTN!N5L
4-#PGc,q2NqP9Smh1#pp0!kMB(S0'[S'GA-D9)`+YXIjaZ#bRdL@iCpFIqMcEfp5
L"XkC*#9!Q8"crFcrPhAb-TGCFfk'pAX@Q14ZljSI'b'+-6(['akN[0)f$1['mdZ
3!*m@'5Bl$+*hKE5ikH4+$UQG)29)"(SkX")[jAUT*j9m(6Vq42T56PepdmITqB&
,f%%8SQPI$2ThYj2fDAh#"d`Yjpd*PPP3('PNRKqj+&G1lIR"QeF%TSi+VdG6P9`
qK#k3!(DUaq9Rc&c+[HMr5pF5`4Sq[PfN9ehbV#3H"EE(4)Jm4Z09jIY$CBal6CR
9i$`iYQT2RA'TF(AA@U6fib)VeR(4*eMF*4iI2Af9q4+'5ahcaJ"YVVpf'qAIEZP
IhU6)im@fB(S%P)jdGC3'S6V$"jaL&1+!`4pEJdSESJ1Q"N)!a8$@$A`@XM4Z2Tq
$je'j*'lGqZCqjX[qcd,$'6f!IS@%r0eiHlYlE9Yi'(hSS23C5S2e(XH`J+r[AX'
%"(@6PaYmkC5K%dUfBN*T$C,dhlc3h"P5Nb#18c2%!*c%)GpGeH&'KPD$%*Bkbd&
iLICI[GZeZaL'S@i+C5EIflJFH!cakFrEIRGSc!*ifr%&d'EUV`MiKGfGiU[,Td`
il83eN!"24,`2brGKjI#QX[dE1Uem3Y"Jbf)MUVZ8S5a&rm#"p03bX,0GDjRL11T
1RYj`Y1Cdc'i2j-8(d&4$20r``NZP1$jS6KXmM4Gi@RF08I`NI+2Djfc8HMfp0bV
9IfUU)A0aq3TQHZ!#+H&-L!kL[#K'Bkc(S`f4JB3`!6$3304lHY'lXa[4c!YUjKb
-'HpQ1H`@N!$RFfQ#&4HK+MrN0A&k`b#f$E,9bIl9J9+KY`+YkF1a6jFICfCESH`
1,`#&2*66Tq$*Bl,FA+b1S`-jZLQb,DK5$j'6MS(J#TQQ'ESf!-1,EZ@NK5`jZVm
Ac1"PiVE,iJ&LdjaZR%T[D3Z3!+*RK$pP&6)3R0DSZ+Mp8iZTX1I4[#BVl9k+ZYP
HpD1F`1p+(j*rmAmce!%S9DRj"+aCm"FAp(a%[)i69dR0P@Ai8PV[#i5HU62N@m)
Hp15TqX6-)*Cb&F6&h,V3m`)16+,HAaR@3'"M'@M*!ZHj(-j@DSB%4FSd1TjRcRj
[TC&DEBYZ4h2GV3QJj%*pc-1VK12-P,F@2ip3RUTK,ZLZpS`Taf,mc%d9)S)G5RT
YqF$i6DUM!XEQBP@RijcP&D,UN!#AK1T'#,r+UF`*a*YEjf%8P-FiKH&N`ecdb28
T*D*)Lq$1kBJeHM[B2TfI@E9$YMQ$kLD1kJ9q#l"3KKD*TS5Vid6q%m0Bf+a*'La
L'KLecYFY$Q,-8d#&Bl54raTX"QIkI#*lQkN-+(qBdSJPE2RG8M,B[TM[m2RZT66
#lU"cGh-9CGkVfG[KEI&cjT-PfP@fjTk*m3%IQ(rIAJfCMZ`0JRpH9Z4S26[T(K[
I&Y[fBQTYaSTN*%rH'J!eidAmMMk4,pF"G0SImXq@qI#1&NBfm-[2)mVI5@G,)'+
c+p4+K`lLhiGZh`L*K21LCK0qkJSiD,559Gp+8`&+#kG94Ak4+'PT$pUq*Af&MTk
pl#BbfIkVfHC5DhTPCl@',pG#"8`2HqQ3!"rVZU4LDR1Ibk(9`&%q`eI"NJ6e01R
ED4[5Dd9ImGDT5`E0G)h"#hEkErheH$2Krh[Nd''&%S(eb8dr2i@hAXJ""Yhqc`j
(i9)pD#ee!iJ-Z(i[!l#ceLId)a5MVK95S1YJM2SkH5%PGI3(h3e#*$Q)0jah-S*
0C5`RIdm@Sk'LLJbk*pRF"3`h&pa!ETBKakX+@DX%BDH`*EiIZ%Q[d+6eD#'!3@e
aSdC5-T2!f41V+"Kl[KaMQfSp*d(6```HqFd,[Tk'UV!BG3,TmddN)EcZEh1-f%#
j*4*cbTPaqr20*3rV3!*Q4GriJSajaSIj3fASR#@A-QDiLi`M"BieKPDqmPV@B9,
X8"fe*L`j*M&p*TqVcd)bkiU'XCrF5Cb1#aIrI,"fGPH[@94ISA)LQh[9Xh2-$-V
!'9,R!F"l[(VjjDKp'%$J6Ke"f9B#CPQFMI1kHG5LVGb8P++-XiiepeTa+c1GU%K
f1LQr'$jCFCV')!FRC-HZ@,8T,)*Im49&a6d-MraH`@NU5#m"XJ1-A#85`R"c4UE
!E#T#9R@bFlC18EVjkE@MS6`GPb,'LAp*f8D+Rj'@jb6*fJCRDBhUXMc,V$h%mKf
QqTqAH5kAeYj[)DM[!Zp9V-A`9H#E$,,9qZ!5)Mc39@4BS#"V!ZB5c-i0!8(E0%9
Laa@D3#PhMb9JHT0%idEf&bYPCm5adH55dqdaT8f63JLJcB1bQlHPcM%4SBGMJeF
F(HlILeB"GlRei8[r!ma"mA'I"[pB+k"@699kMIFNp)$E,J(I$`SPHhDf1-IQpRi
PI#9X4LS`FcrTP+S(ZLK"Z2#FQmVT[K#Ai),JqfFQDMpE*Jd(Ef&Fi0Z*#jcAe[B
-3mUBh$MD+IIJq,9cSblL1i)RYhHRX@PDG%iX'j92(XCp4!Y%#Vi$RTR&K6aRr%S
+jV2mCCG5@TUQ"*MA8QH5I`JZM4LBQSbf#(IIX+H&pQj`!mJdA-(mIV"+qH+X,!5
Ffm6EMkZl$"fPc6-'$#TmrE2DE+@k4lQlHi6@ZRUXL-*-T&99brqT*mK0M!(@DHC
ZLKMf(fjI+RLe0!U[9R)*05SM'KYAda+ZPY6A3cUKY%2Q(q@HT*BVjXLP'Ck+lZ[
[r!10a&!SjB2m(,Fc-``PhE)1jrRGYUkjk5F[rB`CarY@ql8G-(G629LiD2V$e-,
KNAaGMB&e&Hhhq+'-*`cbTd*C)-eR$"1`dCp0)2`ie[PILf"&jIarjZUB8c1[q`M
GASSPE`5am!J@d(#2M$ALSjN2Ahkm*%MeB583@CArae*jeU@XN!#J6cP(CUCqC%q
&ZJ*mE2[VNNS8%"KkHHEd%aQ-Acl0*jL5aYi0q&r2A#DmM,+k`cRai833%QL$L1Q
Gl1*c-5PA+BLbl%Aba+)1+QqiGjQ-X0IQHU"ijlV3cqS*d@M4IC!!$YCA*NX1J$r
XlNZmhCJQkQEB+`LmZ+!DZZ(JHb2)%#dmK`3e*-khN3Z69X,6!R65+,'&IXPAHZ)
cccI#(P#KL&[0U``5N4Z!JEBbaajIJ$kYrT`B,YpS$8C$@FB&R1@GUk4GkijKp@J
KXl`I4#kH#Mi5hGLL`Z)BG3Pip-fp%T8YU+#&M"U,"qALPbZm`*K!G"N%RTqE&dS
lmeA95!qcIL121qlpQHrAGA95%l%-UA11HbdqM",1j#KqZGY"69CF!3baXl+CC-$
Xc06FR4dde$i6MRf+'6r9&F5f160',iJ%8[T-Sp$E(e1f!)(B8c-1H!)5V"Kbm+d
L-'H*Y5l1&F9B[epXRIl0N5Vd&*2S&FLq`Z$rI5f8QP1KGe+6hLUDUqpMKjq0P3P
JSk3N0+%Q++6AeKEEQ1hUT`iZdGhLN!#af%`1%L&(lqMTDd*ll+dNl,2E!)Uf-*D
#[j4q+0fTDTJc)QV*!SJc--4GprU42F-S*VQeDl[IE3XeL2(BaQ,b@EScQ'`%,&'
$S2cP2Cic$efEU8TC@mE1Mhj'LZ!AT@4G!J'([1FT0Q*96hZ(4dpNEX+m+J"`4aY
!LNX2%XqUD@$JG*PCDf6(P'*Mm1[pQii-&2hmFG#$UdPZ["63B@cjN!"pa8P@r@&
Qk!PQqCV%aMqlCmC(iNZE4#(RQ'HIDD4AIN`VkER3E,K,#[NpQ@G`lK'DdGlVYJq
-M"c$AQF*h,A)NclU3(eNUEJC@'d$,@F43,$-a"6V!P2[#`KZF`4HZ-#e$plLG5Z
cIAVK2VXINYRIIqdLjSPj300$XhMKIr%Di,2R8EILX2%jK%-ZT3dk!3d4RBia[TY
mk-c'MPX#KR[48[F@*qb)p"Am5VM!DdC(R56dZ-@9)D--DD,a0VAch5e4%N-Bl#k
GIUrYZUL"[P`%)jjEJ5A2GIX2"cLI"pJ!kEpMHcM!&@4)ZaG2&@5mDMJmTDDe6aX
VM$lE9Kj'c,!%3`ThX"2a&"0L-2k!NTECNN[[j,TlI#NcjYi06Y#pL8UZ@ch"kLh
2RZrS`@QQl,EQXD&@Ua@paij*dET2R#cU$GL9"$QYpKq+@&Q5LC1Tcq[%0*`%qU3
Uha[&m$6ep1Q5%!9NM46U,f""D#"f@HHP4i+$!-,,c25ZqN-'#`rh(4kVD$f1cSh
a5Z$U5c!2&R2C(Q'cjiRc%ZE,j4+"UTk!c#3P2ITX1T%4ckkrK*b#hHdXej06ThA
E'+Ki8K!YSmq+kae9e56Y@@Mi&2T5i,9dCFI5Kl2j,3B#p)[G)A0Yk,kMr46JmV0
4)KBMB"G2@hMGUF"CfI[jYllLV)l9KEK3b$@cYMp"r$ZKS8X*lRZcU6R`pJGLr6B
bd#N+b!NQkQ"9(FapK0RTSm%hNY6Zj9h`De%edE`%UXCCi"MQi&kbd,B&0GDCh#P
baST4(&j'cGQ[!HcbU33RU9%*Nk0AkISTQc2lp+aF"4(Nf2FKjGrNf%$BGK+*K`3
GbCm(EN0%'bF26NhZZY0YdrRP62AfFfNSJMNa6UF9[qCr)+1eMejZc0,f5,DL6Qc
UfpfKq3*b"X#K`Jhj-2a"EQFE2M`baT1e2DUh9GBT'#1f)!"q%LF("DP&XGR$4Q[
NHDMQ`qQVZiCfc1MIM(@iI&jF%J9JP5%ah&k4#CcVT@l)c9H`kq94J-dRkI!0Iq(
i$,Ab3A6e&TR-CM'RUVdS0fN&([!Si'"X"DQV"V1EeYa"*CYLlX%6ZVePGPVi66'
&IipIN!!1JM@rc#F3A592E8"#2$-iY,I0iE4-!J6%dH*+kfM41LB*HVY98B2b`Ha
CKS5Z*kbGe5R)qh%91SEb,j[(A@U2VJ"i2TL[Rj8aFlf2C#BJ!"!*6ir4kUV!jT*
@&1bIQZqNLcbGA`fY5@"+qD3DR`dGH)jjde`Rk`a3(aZNX#-2cccPf#&-Q6%ZiL9
)%D`Uq3IXa$!aUhNJi#qUlD#)DrR3dh4[LX'Q$AlrXB1C**FjfCNqib5mG-hCG6E
-9r!3AXG6Q8(,,Bm[f6P2CI3#'JMJ$[Mq"K9HYZI-HkUjb5kN1-0miBr1*(a3Ef5
B,1q5UpEr0icIiciqS$jNm2FbK"@"[A8'UPM[#0SCqR%0XC!!qq8Ka-h!Raa)69@
5BX5@hhHNqAh-r@r%J#`crSG'*iImUTZXrc-VE"3qY04$-+R[q%e-6D-!MF&NMT5
V5QThCfNL0Y"Fb!5+ITZ82!H%,MecVTMh0rbfLi+&9pP"Ne`@@6mE`Gr&QX2c9@Q
@[U('D@DBA18U3((+cdHd3*mje4,j%ECQ-SP29+UUI(+I%T!!bX`cPZHEe8UQ`"*
,)BSM)1SF+!08X,@Q8dBNREpB0M&3)I%"ABFAkh[(!+p@+5N6KTpUClQC20N[Jh2
@JZ0le6[aeim&YApH#bdQ-8D"mqr`*4bYd0-a'eKfhJCqkG&G"q-!rhM-DdhSL#F
5KDXQ&,KJ++L%0QVi[VTYJa#!"-&HmZ'1#BqpPV6B"m4-,EBX"VTL'cK3kXr(&cj
6JkQFB!!c*rZ-RC4!1U'iX3"J+VkD3DljM)eR#68,0cYB,cJ)j'&-2DebRh%hpr"
L0k2mfEh55G[Y,b39HFlB86@MfS8eP+NGLkMrENQ-(#aRekaFDJJ&pTdmLAq#SYk
L[&dHBRT@lib3!1JmkX@2(66HZ$ZhZ[Lpe0+Aar`6H06Jl&#KXi[-YZDd+VEdmjr
'(r!HATmLmIQaK*YH@pCXi6*H$ib86NA0A8RT"-6Mjq$fM,X1R0'1m%mS9$re!+C
MQf"iN!#c3M#B@!2)cAMb'SM#Q(#EEAk,2R-@4K-"9*!!,A+NHSa'iGIdRacQ#pA
I28-&41r-Z4Zq&mD9BX@TaC%4B8@55$X*L!f`1AiXK[#`jl@-L&8(1#N$)kYR"'H
ZaXeGRYMHXK9kJ""qibbk6c44bEPTrj[Sm#H2Hc9qFSG(8&!T28Kl'!S9-pbh`cd
kQ-SLm90ANJ%PGGNY`fP-Q[Q[cYK(pPN`CZ"SUGI'b5,FEcPJadhVRdGqqkB'VU0
0N!#p(YAU!kXeL-+1$#VeEUJ%e+fGSrL[DAIT6EBCCC'3!*!!b,F$,e96L'VZVQQ
dJ`Q4Q*Aj(qCY)edV0U8FqdZLm,[r%kjKrF1clqYN!aJH4[J,UVIrTjEHfBr1hLN
qUUGUrmd!IXaUhPCAK(A6B[$@&KBer&8BQCrM*i6JRL-*DaDSD''HBa$%d4"bk&D
$N!#G6GjGH%klNZmBZX`EkkLICkp#4mS3rLMqIJPTpjhh"8[i%bD2dGTp*Kp'Z!R
kYGELKA4&RM`i[IB5+a&PJ9-2S!4"(bdL`FRp9ja@J9TR5jc`9KVV6G$F''XrY@F
e3p2j$rFY@Q)3*CJ!,Z(HN6jqkGTDECV-U9qBmZd@-eD"ml1$%[X)#f"mTh'*$mY
C3+G#I*m(BaH4UUS@Hppb3'EN8i`P0&H(NPbFG(8iF,ZAHK*fSVlEQd@Z,pCZ04B
HD,Y4F+lZGp+bRbf1bI$0c#'Gqq`pAl9ciCZ*FBjNXfqDR%ANCaQ9IP81hk)j9P8
mc@FlEE"5U0aU@pKBq$a+(a)[lR+VlfY-%pacS08h0N#lXHlj99,iK(l`'*QiVFC
qDVA3Z1Z@LEd$C69HPpke1jBE$`,*"M4Llh#,F6BqdKqmG&%Tc',*(IH,I-0Vll`
I@bA3Z%!rl'0h6NBdhT!!f`N$i$-jh`e#d2TV3(1a3!Z(Uc45A2hbir+X&,&K+"P
V(Ac8X9ZSmCXk+b,KGTR0%$YYQI-2XAHb9!H(P$&F9fY,b%ij#jE"-+GDP,'RTUG
,i"%[GaIpqHb`6+mS9Aii#Q"p,ICRUFl2C-mC*kEeLN"Ph",06eLa*LC,bE#V6f`
9Aa@5"U[2MB5,hDI4ibV+aMYrKrM!jZTZfm2f[Ic80fBGmUHVr11(-ck2I-[!bK"
$!84-3#'K&BKCUDASMA9(abQN&!1`b!(%d`!HGcL4%MqGh@5B*($rIVQIP"hc1d1
(B$'S(SXmUhae9pKdGLE)*$$l-r,+1chTK9E[45EQ8%G@0U$lp3BfYdpIQmVSA+8
MCj-PG4l*!#*$8Z"j$()lUL"LUmbab0Ykj["C-XSL3aQ2Y(fEKlAqAF`2iP@LXpa
Tkb[NGrL2lk5qKaHaT12jJJkFBABUXV*r)iEhcdJN-Q4RADDM538,*N)q%*HqVEP
pI[V!G[I"%)RbN`HMbMJf5B%E-r$hVFEL-Y,!98A``+[IIA6P&dUreTkI2L'9GSm
)ER298dh0JSQ'909qicVUKecLIB6[kB@EbY"VFrpj"ekIl,H4-iLhRL,r2h$d*RI
U`B#Lrr`Pj@**+V"5f'F(#+113A8$PC[@)HN`EFZiJbBD2pCKY!SHCUEp,A0`2DV
BUNZ(*AGJfqSAk+@-!*ZN0h5k-l!Lre+3!%dd@-)F1%2,beQ3!*NJGp#'pT*2q0!
[FRT`C[h%a+(*`'SrmblBDXC'0h(j8!24pYi"bi!I9(MP8eGUf8,e+-G)"JITcD)
p-X(C*@5(-3#iZ#Z5J**fr'(-FL'2pG5FfGJl'I&3VHj2"-)8UcPHM+!+4Pfk`q"
i*&4(6qdCE30BTKapkTK*,9J8*T)ELB0!mD*4Dd!EjTf*RqKY*23fQQX+ZarEL1+
"RBPbMa,1p1kkN!!i(GPMY&5%PSkAp)BFBrJUmi46U*CDbUNdSTm'3A)$2QLIM!`
6T!$GR8V`qU#NJ"N6E&VP$)CI1h%q#%EiC1$,FLH'9E"2A',U[Sf@ALbTm"hI`HA
ld9,LJ9%T%5K$B&,Qeh-CUQ(hY2d(T'K4he8%lGmA2fB2k34j8CrQ*6$dU0#`Fjh
kG4cbT+QV8q9K42&r,Y[h[kJ#$F'-&#H2N!#2iBS51b%*Nl'aMPMqpj-b)ZC2kGh
3G[XE%`#GCT!!A&T[,QT3j4A(*$a%EXaXfI4JPQ#54&QV@NEU`Aqj-6,9hEX%1TE
0$RiQ30!C23qIhAX*d5JD$ba*%pm+%YaNC@Pc$DK`FBFE2S(SArb@CrI9)$%4eAd
($!N*R%29*Urf"l34@AR1qZGBmN"CA)p5D2[drL6PH%"TA6Z&Chbd+L,``89Fd`m
Pe*,ALS"M%#MV21V"dh4NJdj'8,mF-rPckP%-JmKa5FANkRjrhdD$*CpEiVAqTIc
H,PH!MFpFELcTNVFrICD(-9Y-j3R,2$!9Gi)BcH&l`DIURrUFkbkE9hX9`YE#e(A
(B3$Abp2P2M!qF9X"!)rpTJ@48qMeFl3-qA,fG"KVlJSLfYEaRlY*T9TaDA0fIf*
l85ceZ4H0kFGMh1KNIUibQQ$MX"IrIbhF8`piEkIe!NJM[RQlUf5pJe(HYm4Bf1`
LY6erj)2P*pVFaX&5jEMLcJTL+&(lF-6&AU,*YDrf0ST'6JFp,[Sbh!Ga,31)-pD
UD-X$3kc53XqhA-P*kq'P(T!!5--4V2#ST@T!IZffYQGIr(5Sal08b,HMBdEr3#c
PFm58lqbUB[ZYP$B#aITMI'0f48qRAX9M!595*3iDG[m,p-LLqJYpTca5%SLXaTI
KE+(E[A%ir#+L@lAZ@jDG8mDf#YAIQ@*6$Gce'fajAq+B(Q%`C(6h*"Pr@P+Y(lN
N3%E)j5ZTA2M1!$A3am%r(TVAXkKbC1dbS8li%BH5P4dThl(RXZ-CNjqHk'ML'fU
m'QpiSj8&r3Q1Ekb"Fl0`T`,D`bHZYc0FaIJaLJ!dbcDX[`IpmAHVB0r0$!#D5TM
Cd9ee"30P9AeImc8rdRbERA82V-!P''YH+@V,)iAl8'!kT*i[)1VqI#5H0m'm*`3
#Q@E`dNfLPKU%Q(c4-'1B6#PCVFNf!(S@4c4em-`1"#S,C@&UqRjE(erXT+%-#E8
""B1a6"q)8U(RE[j)#U@h)SqG4e(FTX6r1(qX""hmIr!+@MP$'*D,IIYLAp!8B$K
I%6TLc%`Yh+&2m(*`L5iAaMdHjX6Fh9LGD6*eEH(S)-pm#NmlTZE@Vd-#V3GS#q`
P1jGq4M[C42B#mXcd01CYJ[J*@p-VeA[4&4(M+"5f'i&-5!XXmHED,9Y@C&p%mL3
BDN"&C0#m+59"k[p,3cLRhDd&@34&!5U[R09)T19UND@j`F-pKRL8m8YMDZ%F6YV
XF18Bi[ASeq3QD+)r+e)1fiUIYd6%fl#('c1%aDmljR(3%U,Z3Q6-fj8XI@Qci'1
IEQ`K6[[m1HLhphZV!ijAm2jf3$$p#PY@m*qrbFj#j8Gq6jKBJ'(QPf@lLd"I"#P
PhVjJ'Cl%R1`Re80S&iS%q9ALacY46Z``ec(I"%M8N46A8l`CF$8h9[iE1q*-)-@
V`,%l'EXh"'mYEJUY4BFGr$-l--8@HPV-rYR"U`j,%UcK%bNMN!$4qh'2aH5e$8,
2p4,l`3&UC,J(`PrK(##RB"+ml5'NKGLijkF"eTYfbTB-FYNM`(cc+!mjVjM"iH`
k(##10+U)&2RFBd'ISP9MHd$bRR`MS-1'Um'b[C!!ZKYpC2D'QAq-4UV'bD'Nq4#
EY%@2(kIF!QfMfI0DB*ZeMm!G(50a-3D[ldB4,18%qLGc!`-,ENQrIm)TSm5AeEX
'6Q#$''e`kNXbQ6(R0Z6%e)#2q$m3&+2N5kBA"qM)iRl&dBZ9j81!r[qk9b[#fFF
&YdZ%MFKI0lE"NMF03jQMp52K`ri,Pp"6C+Z(RC@+SE2!Be3RBZa&DVVa$%N'jG!
K-&hP4DUUKdZ@+J2J`1bcD!c0IIK89-$0H+F"j!bR%"Z+NF@A4d-M9((E5T41Hph
2q'k[@%T(eLh!aG+qaN*"$baG6`K[S'-JTkfYcbCUJ8T2aL05imPja@M3ScSM+rU
8IA23K[Sk[@'eKQh(9M`%D&TE'd&m-p(V$UKKaE5,hbTVTDm1rcL3!'6F'()NV8f
KR"dClMX&rh+Y,rM-@Z'$E2JKReK"U0lHD&,iVD(-ZF@-TU[$V3QKe+3aR"0&DDF
ie`mbZ$ERBd'p)X4Ula[iVY6LQSK6XB3-,['BGBZQ$9rbhVZhVV2+-ccMM#8-f$&
ApL-%Yb)hQSlq0#EBRXQC&+kAF5#`'i909`bAqT3$H3eHr1p&eRSZHeXR6A`i[Sp
JrVVQ(aR@(eFeEAS-F#l,HGZ5(#Cmi6C)al*!Tm0X(2mhdeSkCRfMGcf$p,++0VP
J`X8KG+L6j!XR@%j(D,b(%#[i4EQ',,$GV&E"AMVm4PX9&(RUq#Ed3!Yh9[p5[fV
hS188,d$X"#Z#XcSL(NXY5U(RJ+HLc2P(S2lNf-#Nk@Cf`0*K2A2!+hiAAQ35@KR
R)c259hFbk04A"YPGYfNBiQq'0m&)Yajdq$P[K0@f4!29-90CJRb)'S`!%Rr3-Sr
NfDp$%VGc&[D,pKa&Jq`LkpRL3ar"Le#2TY,dfM(DKCfe@F"J3MG4%)0S'QPm3XY
`iLhGPX+G[jFdhb9JM3b8FA5P+6dMM"B5hqIQc2)BB!D-IYSEUBPLp6bVc!)9kTp
0r63Pe'af'![rjTD4lDSY'p8Ahq&CUD2$S4mSS&8(8jd$9YL[HfJdDc6d2KC-Ppf
"DX"eGK1c(Y+T5%-(9kE,0qcTC,H)V[KNl#r3+1NBbafS*jK48b8Jh1D'j@fH1c[
DT@5IHQ(eb4hHA8BN'S%4(M+3!#PZa5e+U4aap0c&(@(D8)h+YI@9@BqP4r8DP5&
2!Sq2a'K0Ca6(4S%2MXqNhI3JA-X-@0hkp1JEN!$Df`mEm[`18-(RI%LDX+)CrQe
Jfcd2kf#%fd(PhMRfH2-@YaT'd0&)0f2`Zm#hk2VA-(HE4[`k`UP@@8q4)E2R5`i
baSKcAfRK0JCq'"iD8"IUCiP@-q'elq%U!"k%42M**$DJD5--+"`URLcCheA0"c)
r-[&HAJQ,,G"cmAMQFd#NP$IJrMFSX-`!fc#dbSkpLVFJk9&hTMBfmilh'*F23``
%%,-4D'X&hh8+&UpiKJ$LVT6L*Y*JNK@&'(`m6@-KK"LG-EDBM4Ql8Q`X29fTpQN
N"Mr@aQ)0iL0haMdqHJhDfK'jA5T+(UlK,JSL1Z9dFJKC0B2'"T@6C0L8`N"UDT6
E3"0-R*!!em*2TL88q'Qk$iRrN!"YlG`IDUjRThRCeMqiNT2R"(GDhiM)dUYm)'3
&jPD'E'm9XmJQeH6ZZ-FkT0l&#elXS"[m6mI(%@&KLY*kYlKb-cN@&,I*BMA98'%
EA"#aTAjM3*9KVF1$iIa9b8Vd6T[+'+rJP+PLU!rcE)D*iXQ-+2P&eaMRJMh$bLm
FUb`&"4aB,-LAKlQf@$S$+,%iIUcX-Q[Hq5kQB9aAH8ijq5Dhc#cJ2S52B`V4-P'
GG0aAPh(EQeI3@E`1V`RUMj!!&U,$MHHm8!lBJ4E9YLNaar10rKa[jlF+Vl'fEU%
2IZ!9GB#0LAANN!$EXpCiL@HfQ@M)Ui+5,0!L*p9HXlPjQ8V#%3bbS2,#$#+@H8!
Q5G!3CJF$C4B-,*h92Dip@pV@iQ`2Y'8`ACER3S!N[VpUe8H5khqY*qa[DF5,B-l
%VQR,&l%T4p5K-XrE6((dYZ#JI9p')`iq9eDNTa`F'KUR,"4N'QCBl4qKY98aG,c
kP"#f"J+C5bF9@H('MFDVbafr(ZS90"@*B$-A,j5aM3EJjZqbpCMf8!IhkI-NCi)
RP6)@lQr5DD8a#%)-BP2`dl!b(+126R%A6SYlE61@r"lZiU+j+Mr2Sc"Al,3H@G3
PL@4l#6A8RSLh"VDHdKf)3,beZHFpZTe+5@&2eF#Dm%(q$h-'(,cNPTNfB3BXMaq
Ti#S&PZr*iRK08MQq&30-P+#GbQZI6J!miDSAQ#)Rkk(X9eeaIH1lP-hTkC2(p``
hli2-h$L@A-dVQML'N!#8D%JM4QI+$a[%2"FB-k%QhQ4(#&'(DMR962L-SLF#pYq
rhCS"H&+Drjkm`BrVMeTYq!S'q[0@ckXLZZQV@$'!IEGZB!`HF-20cQmmKUfQYq@
l1LM'V,+AqS0VdI"RNZSGa6i[+hjr9LdFl80h!X$+F%6G2[kQiReJ0'$YTEP[hIZ
CZ8'kG8Ab&139mrcUX`kFc2MN0e)e$%-h5S)9NeN5bB$,-KG*hYm*#4B@&B[Z,R0
1Rk0i6TiN+IlB&1bpAhVIJJ4&`K((c[pdSEdjY6XCdq!(MYNmhI`aT4U#+EJ!H`K
1TdAfb88)Y&4khJ"!%MDV9LL(U5JXeC3jB$HqBB"@PTl%cTad'pehi,"NFBe-A#C
Kadl$r`+DBpKGVU5A"*h9VjT1,U9RVXqeAG@m%kB`GN[,mTcV84S%5'5iU!rh$qf
9bfAqrVK*$-3SNB!Ti)p$`1NjX@Q(#VfDZ*1KkNDj5+'I0YiE*KrL&kmNj#Aqr22
L1d%iMhD+mQ%*)kLfZR)2I&bAY0+'$Q+*eS6Z@$Qr$VllYPS1Ee1!F@kUl1q&,jB
1''UL'L1A,2#NEGK%cKmKJi#`!5p1NbGRS0$Fk#J)epDXf`Z4MU)Pb)H+'f#PZ6!
L'URIT'1RrcpJkY3Qa)4$8qiBbY2E1HEbp!Vi$AfN8SeMH"0cf#1TY593UPr5mP@
(RC[RpDVKbK*HBc`0Z!$,bdK`UKd5apl%ZDI`aBF&L$6bUd[,U$#SUe3`d(d1HVX
8aDCFXkN5DrPXdqB@@dimq)!G[jiSXSTR(EqXKIM%MYi&'*A@2PaX8!,XG9HdrD[
QrZF03eP`f*mh[Rf)I$0%GGBDm2A$E5dCK%i[3Cc81T4laG5h'rk*'Z+DJR'9l)M
ArDK![U0R%EE@[iSmQTHb8*`[kiaR"4Ud5BHG2*J&riSI0X6L4&eL(pEC93N$6fp
G`1!5bS$G5M6fRla&$[431TTjk!PSUYHYl*YIjGmP%LM-DM"b'q'mMFB[,X2(ci!
YmTUE[Pk-T%BLU",*hq+!9%6[-!q-FlP1DAqM"Lq`rVdaBZMcKm2la(dSb"5c!q"
Yp[-%+YD-2NQ+LGaEmFY8b,SSXa"4NR#CKchbk('lh1"02iQ,)EpC6$,LqAXmBJ&
LHTYl$-"+K&SMr93mKi1KlL%hR6+R&p5JC9XhdN(*5iX9@DS"!aTk3A8"AhkDXm!
IUil#1lMcNp6L5E!'LJN+dXAX2VhEJQL`$FG&SJd6c2dr#M-$0ETG!6kL#5TNAmK
6X3Gr0%QN2KQIQPFCV`mN*m"k@Ub%lM,#-HmCSfBC,#FmlASF5SmPT(bU,rNkG4C
#j2CaD-+5!r(#LL`C!UFp-3-3,cbSU,Z*2A2[Y@"d8pjN#UR15pN'@CPRrpe*R0c
5V$B)SlaP'CZNrUZ2q$#Bp4,TS0RYrK65LZJK3b(b[P(`#'V[2Z[F$3p*fFm1lU1
P'JA3aJf!KV3VBQ&aYphj9N6Xm*%dh)H6#6q"1E*%,K)Id`PRl#5XPlP6d9,9`)[
$)[Nk6c[T[6@@$GicIiUClMLH-T%(4M0HRDkq(LNRTH'iVqMN#H+4SZ&AZ3cMM6T
%I&V6Td0(!,58HPm5&@[mRF&S`,Qc4@bleka($JrLiCcZkIjqjePKa'1%2%[F6d+
T3[J1SQ0(YI*UbJSYp24mX2@#KbfXTQDJ9@1XZP`!#6q#i`JP[XBSYda4m-+06D@
Xd[GhKa05qha3G44&T-J4VJY@26Sk#rFa$c#fM,[)r(`UJB&JAhL@"L3A"4'K@30
CL0GEacVPTKY%q$9NLJBPU8Y9*GeK1K5+TEcTQ2p*6aFd4NF$a$2p9AHbH"Q`6eX
S+300-$)Z'Zkkj(8mXf+FD4XIb)Zb6IjFm,kP)`R"T'$%SV8j(qa&@!DK1P8`dZ2
6fEcKZ"-c+H-DZ0d1+eL[aAl`,l+Sr4V0mXk`*bcim'KZTC)ACASL,3JrRc$klB*
FhLk"qJSSb'3!MFN3FFjR!VkMXEDIr!QBk"R-AFp0qI3#6Bc-%UfQ6N9S8QB0jHq
1E%b8XbX*-aSdVQqC3S5TfahUS*d-PrAbK,%$c)Cr+PpcNF)5H#b`J0(MjfJ8cp3
HS%pfVh-QaJYj,rhi+cH4G-ka'q(,DG"&8hmp4GVeDMYZ%q-!Er$SkD2K)a-p'T*
q(Kd&aSFMLm"*i*C4BC@hpAPr$Am-LlGBTND1qcSmbrEll)f#0L)e&BTG9e9ZQ[+
LK)r3bMEGVXQ[",r+P!H0S9F1!!M)jhZk)C1HXLi6D"88P(U9LT[$`*rac(Ak&,k
)PfH!ML%diCqH*QPq9e`%XD(HCPl*j,r00A[X"hMjcl(P#iQdZPY+)jKVYEc&XpY
Vei'AY+MY6%#*%8*@ZK5#2B"3kp)CHh'T)@+P"#6"Lc[9263!ip4TA&jfGf-6p[X
a)ZjF[9pSG`TAK'4$D-Ari*A-q(ZId[0'@@0CkULElSkjU5Qf95D(aXV5LmcS[QV
aJUQjQJ8XTb1E#jpebkCF-UHGiUUdeEDBXaRSjSC49l4jCIITF-bR@QM-%,&2%f0
mM@Y)cN1mDJG3C14-P&9MZf9+'LIMF'!H+UVX`G3G@,XX4Zh&&hqabHJ6*Y[jmNf
cPH9d3UAPAbYCFhqd5FXTHMYMKF&J*(KHL4E([@H%fNFU5CB$r)A42GmUHJG66Q+
EXZjY0-)D),8K39S1,rS-a%chkh,F[[N*dP$deZhXNlrmV'TMUe-UF5XM,JrMV3[
YZNJK"&1i`CmM9DlkA@M'-$b#PX4E6q,GXeP0LVC&1iK94'Q[E[Q'1lBm--Y'Xb9
D5J9pb5a1El[`L@)CL4[2p1rkB%(LETZ25RY50%)jFdIY9rNVI5BDX6U$Rd,Y()8
ZmTPrcF%Z"qS@p'b`0VcmX!JMTJ&iZKCVeJUY'Nj83jhpaX#A(iKD(iPX3*pml@9
ap##pC%hZSD-LKVf#MKZRSeifPbpl'Pe'k%X+(`Q'ZS5pYIK0!p*'b!K2[Z%Ze9p
+EBd+iNq+3@ZT(X@%D4G2VTJRHPQIh)kH9F3PR5eml2AU-LjNVM[@(*6kf%rd!3D
QRGrqp0@Rf'1%,JH&N!$$8)p2SSba"TGL,"R6qQG`aPjTXFRRM-TCMCU6)&qf646
D9ljh9+dm3k"eZlI$3q1MQS1QP99%9A#jTZD8ZM"pCRC5mMKkb[d21lPNbKl@DU$
48-&k[$b2!c$2!0aG[$eX6*bA!e3FcBfiiGMpZ8dSXK9BZ-$U`K`)Xm9c+r!eSXK
'dE(*)JIE39'-!ekmH"[JCQLU0$QmY1XD`C!!)hYN*DrZ6QNSJ+%S5C`2@0pZ`(3
A#-B[e`HH(L#IBp+K"ecY2-HJFq(k*a"QF35QXaHb3KHNcHRI-MBUh#d`KVhPH-(
`l+FhI$eY[QM`!lV141SG$9P2M5NA*dLqaQXHkYU-lbZ)Np4XTS#R*8J4iBZqY9-
[%mbqTE!QeirRrf%TZ`(+AId[8#5a`)AS(cRF*A(JRDGN-r5J6#j"c*JlS"[`(mS
i2QREa&C6J51!bHD#LKA3H&Hde5(aR'bP@8QL!D),A%rj"L)dk%1f`TJ$em5F'41
MqFrF[PGD6DDcIi[AkVZ-UpC31,%3ELTIMdj3aCYq'A,US$lXl4f[IkEl6&ZEL,V
&Ik4,YTNNX,E,FrL%'a3k"3R!EkmUC%`Rm8rY[4mC0mC1bVFQIR3-U&[L+5SfX!$
@#H+Aqe0#FQ#'fe&9h5pHh%@VBTL'EZZ*arpIL'FLV"@SYZCd6rT0*!4,T+3F!J#
3!&`m@)ZNX68R2R4fF'Z()Fha[[mRNR@4B`XTU[""R18XJ,C[`DTbZT-(%R[HPhe
6fMlf6$fb5alGZ%P3A3R)%!0*kp2h[##JJ%cG2M94J$SQH1LN,lkMjch'IZr,AFG
&EDiB)C-SK#cX9Nl3pL&Zr50F,T!!cf,DA0(RI3H$dlf2dqK(%5M30l1eP4Jmlj!
!biPZKe2(N@GL',@F05CVS%XQLa!JfGNaZX%$N!$Fa8-!#6E2c&'ZiRQk2%D+fE$
25mJq'bGrAQ'djCj5cI9j4$%,G1FGma%F+M`DcDd!m`Rkh)r#aVJB4$N'G'FjMhS
p(%2"IDUUG%#GkGcZh*HEprH`Kp4r)982`,k-"*[J`fN*0+qRjZAL4pm#39$%"*8
Y,D[6DFe9cLMb1UH8Yh5[L4FdJZQSZ45)ELpA[A1HPPMX19C"3"q#@r#L+rH(Ikj
IL-M,N!$'a!T1`&UTlc2lDhmKH`+(X&`lh9&4`YRR6HSMLEY$dfT''ZmU[#K*UjS
dVIDGGieRI)1AhlXr5lBGriIk`id2)Q#lN!$)!AUIjY[pYQ%dCi'03B!TEmlMAkX
64"`FmAkPM")b`SV%j[RAl'aFr8DbCJ#9(EU*%)3!pR+-h$IhbD@#50Dd8i"-R@#
'-b1pr@TUH2RJSE!"[(SXe'NQQ'54*+XSXD!K[,e,h0iVRJ)`meC24QT!eHa-(N#
E-#R34eqNrL5B(@0qBB%RKcXNiXCq[QAT'(*fe&Qbhb6F$9am*V`2MMhm,0TApj5
PdL4N%3!N8VJeQHK3Abr!!VI`JmBS(K6K"L1aL&"8aNY@f"qEK0qKQ'h,I!Y8QfN
D,2r,UdRe##F(cj*IpT[Ja+5'9jd#TV@DE,4iPaqCr)5j+P-[C(APhC6`CfLX-$e
5j"PJQiS*2!IqM2XM[S'GZ"0a%ihm6Z9i%eC[SiKR#LJf`3QC@r4XV69L6,@'"Qa
PNheCQTbYP!-EJ5@QMrk+SjVPLVfJLa-I`jXmpfK(iKGTie6'*,P##%jBEUIhl8+
(#aQQiPD$C6#k2E4b[hlrLfYYYdqP*$#$BIfeQ,@KK8lIjBqr5PX%GQl&%TiTV-@
[K9N[1+2U$'BT4+Q!0e[lVRq@dBDT%hGN$@ITp$0(2r584I*b+4"6BZ8mT@Qic(`
m$qFZh'6miI6r3CUiN@b,hHS8eepR)AlD'b'(EQ5frRc&D%U,TbjI'*SfPBiY55k
5G4jqR#T'8Xc[LAcI12qK0Td5AiH'3-UDck-G[H0*8'1)CB[`*-(D&G6'&j&el02
FY*h(RITTcPeCVAq+Rb'DD3rcH"aCdRfFX,('j%RJi5,I*qUa)2b)+1PS0[`ZC!V
dYVY'GAL'd89ZEGe"Sh#CbFMQPR2TZ&pD'ZRGk*'3!"Mq#A3-NQ[@#Sc,qqiJHLM
VDjSJiP,1#@VL2LrbYC*dDP"0b0djp[5jSjHZDL@'Yc"A8TN6p$qVQHGZ1pJYpLV
jrS3'a+-H0cFSGqN8mXK+T81Mp'@b$q`[bX0P8JM&#"4#i%p2j35aaq&iT8bNrfS
*RrB)#T,6XEeCJdhij1cda**#l``!bNi+bqA1cEcVeh@4bi69pA&(d5GE9D*LZ!d
PqlR(Ib*lSE([6,YG#VbNdi8[)3MJl1j"IGep[PLB$2Q)m9$U#h$eF[I'$)hffFH
BEFFpD9mB9F(k2VeR`JYKPY@)PJle)G$I""hpUf,lT2EhfM1Bc#"f%qjI(+0R)'E
B#VUr)PU3!0`VpLe1&6AP%B!5BUB5$RmS(U9NleTN#SqfL%1QKj5dZ06(Am8G9ee
4I-LCbP#e,[fd$$A3TPhP[SJ+ERlbNXl19aX6cQ(R4YNklJTP4GBZDH+EYlbkTN,
E"J(Am&+J`GQI",FfhM`TGr9IH(8Z)*Z1$"K&DG[`N!!m10X&dfl0pBT(SkiC)PU
@ji9Bk6!Jjlh-@mT2c,f2i#KNNR!+bc!GP)T(0VII+NSbe5+b#,6Cf[(9X%MTdY)
,h*,d4UFSU'!I5cmd6EN)TP1Ih-T+a(UmQE)4-33`VCNS&9LN3kAYKe'U&6+3!2p
Mf#J169)PC6%8SrmYcKLB+K-1$!YLJf#B#eI#HR$@%&1L%-U',(@DfHlLdI9D68#
fHJY)ZXK)BeqS*T*P@Ndb36QQ-GAa[ZXdS5"l6P,[859PH'b(Bfl)X`6@63irB*!
!rdak6DT,K2UNLA"f*VlMFZ3iZJ6j3V5hHJbl'chX%-X$U2SQkXqQPZEYQ9k2DPY
9%$-`1'3F%JYB"B(rl4[q89Rd9JXQG&a[hX(jk,Ih%-,DUp+PKiKbX"4CfQXjrX#
hD%"JA$Db*1)2D(#(*XqSUmF#AfDEF08*IhX(K*S2Y(k&CFJ*kc6i`Q0iKk4kkl4
`')pBJ0F!+%`*#4C`Q,Yh&Z0CfSGdCDUG%-QfT95H`ZEm9+2Z9UPBCV%SDhh5dS!
&I6rY`Yp*Jk)38QR3Y)B[8UEY&S%)2cBRkA1Z!31#jH9Abi-9l6GQ55UCK@5FB'l
d)JkIDp1RC$J`h01cmV(mV%qcDDS4pd[,%hA,1p(a31[%1[dd!G[Im*!!`DjB[Q!
-SZYVTdX`)AQ1CF%-Q8aCiK6d18"QHSA$[RVE#`ia-"aS6)jkip9f01K(GBYmH#Q
ck5'GKd*&#A)@qC'ARhZ@DN$kSmcd[LX!q&k1ZRKI'6*4iJ)5e1aKQ4G-Sk4)pI,
L#Be[FC'Si9lP+G58GZ!PRMlSYTIDe@qd%["+l'EBS$G!I9J`'N&$58Q+'Q`JbqE
+H20mhk5Rq(!d6RIEMe%[r3F5Y*AjTS*R+G31TC!!5,9QpLmNEHm0RXFXYVmF(Aa
K[RKfj#`'"HNZ`i%URZ+)USeY(@RDHHA'DIkddl0X3%iC#!1-hmhHZJmlQ`Dq6rU
8Krri"E&Y(rMhT$Eeq&Si!d*HcQ4b"PMqhQ$*CE#4q(IKk!46&(eci3"*X+Y!!bF
9N!!f"m`iKVcje6Z95DHPTecpI*MmGl&U[8NbGhGm1*+BJ%C[h2P51a32hlcN&F"
[d)FQ$`m#0IBpbLR!4MqBl-R*CC6+S)r29i5XlJdMXbY[cL&FDSed)S&0`dZT"K#
'%Hq1rqM"Q9-aKN)(f0Lq)@&Bf#%&qZFFAd&UF9Z@UMc+dd%V5Sr*8+@AQfFl,H#
lNJ,q4UQalX3CAB%#1-l16K9([[ia[AD-&`M%P3Cf2U24Ekic@VPhMf,2)i1M[MY
G4P$eQdBrI))'*DUrrKm@Mk0%D8K["B3Kal)8)3kUTJ6MA[iEi,2%8I!bTIc1jV+
bJIF`J@+hc5IS%1[bDQ9S)B'@B@XY5#`Yb0qf"bB)X&9DZi2YPR!JA)6McqI3!XP
bM4FT4FQ5'q&F4'-Ve34'd)#NGJc"#`%"MRYe1)m-86*6`41eY"c4h4`TmK%,88U
3!"E3Afl3"YUE!BiC4TQ9`G9Zi8*dM[C3V8V%GaVIcNcf9%ph`FX3#fYS5$M$cAf
-P2ZGcNm[ph'Gf2kG%'8idM)B'!4fVFI68dXq+C(4bHm34rlPq-q-lBZ([JR4@d#
r,D3Fbc*eEfS&qA#bQ)f`b*2''l5l$(*G&+YT$[JiQLUZ'e`Zr80*qC2dLdMbAi2
9ZFM*h1jk3$f(,$`#')r9!BH-U%E$2-(Z%8mc)rFeIF##B[8FkIP+GkrYA$S9Y&A
,lePE-j!!6NSPM+E"-H6j3G)*HCkm24YeqQP5Y'CI#ebhPkmT+AD"(,Y9DeU-PVB
8j5a"e%#a#Q"p4b)R1$"3[`U9MCX&C3elR),A+m#2H&6hB0Zh+[+e+NTl"#L@Hjq
"IAeCQPfA(Ff$0efprACJ(+4DrHeqhh'E,VFd-l4)&%f@,P,i[ZiRD+!l&c45N!"
SR-&TG!Mj40)rQ2p4VSV&C!84@$PdCU)F2!fTV4mfc$S5'*e[3l8hkMj"rQdebhN
3f@pBE@)eDj+Y,f6ra5)BDp9qR3fr([iR,I@-c)a-MU"F!MBhC-U+QM%TCU9$8ZS
Hb8T4HjkpdRp6fE2q0T%d[[mI6)eMT'$Y)+[YCl3X2kldRXfMUp5Cj![1!+TSY,a
kfGjibqLY5lCbl%b(PH(X2rNIEmZPmp9+J@+pM)c5d4[)Nd6ra'QmpH0[Kp*FB`%
b[b`pC%qPB`h5RS94A%C!!9`IG@4+)ZKUiNj2L%IRi"B-mjTibYI%f)&L`3H!j$*
[4ef)q3fjSciGh&b6QP(qH)4LhTN(brS*bU5K*&VQlmk6BmeJkPbSGr%JkiYK4FK
Qfj,EEYZZeE'0N3D[P%m#krUC8qhMeqI"H,(NP1A2N!![fbdQ98c1rUSlEF6r&(D
pjRCf"j!!4NUb1@5QC"qUML#A+-e+1j&P)jZjJcrEK`@UH4Q-"peA4,,B@m@[A!e
bE8%5*0&1@(f4e5LiR)p,Gf'AELTPe)qa3lb,bQJA$KQb#Se((SZU((P!A&%BJ)h
ZN9h2Ybe+0bdTdMBf5*2qLSrZ4AXi,(FCGabaHZj[%HX2jFVimHrBGXlJ0r(&h9Q
L%C%-&mMK2p8&Dp89NdQm1le)HE&,,8DESPVp)Fi4L%GFkBi50pDEQclC`Z%Vpp#
`p*Ic"L&JD2G1d9#29Y&62HYM2qGMq9ESdB%[HjkJd9'C[aT4#U+e)rpl"9K-)$1
FX(YC1DR(JmpCeG@ihL0clDVHe49a*GT-Yeh@qmY3"f'dbr,5+iqK)-If,+(XE06
ah*qkZ-G&S$60+ST!0J`lHT0p2BYc-0b+Ub)kUUNd5"MA5Y[*A9%X[Qk9qpN,dXM
"rpDBk8rTjAmS+MAd5'ZRBbSJp1hC[IN(E620a+l%bE+NQN)!Rm-Y'BeJ-42Xic6
L+RNhAX6NI'%P%+NSMUS1b)eSd31HMd#,+jPR-'k[6DNQN5mHk`,*!aE!F,CM4S&
q6F)ZLir"8jJ6dNG8-@8mMaibKVfQP2e2*m8+brTX'lTaLZBAcbKN#C!!IljM%$(
&@C,#RI,"VCaNTbSp-6N&)hLIGMZqkY,91aQUNQ,iX&I-%TZj%'kU5-b!hYe+f81
Qd43k$i9G5R,HGBU15[iGX$h%%mq&#*H%ScqdjEqAAK5QLdb1+4IIIh)!$k)P'-E
V#X3bbEIM$HqVM-cAE1lAB,AS'2Jd4@@5kl-0*[9rm*&K92r2Z6Xbq%FI[HqJFcY
2Uqb-4VmDK0XK[4XDqV*bcY-Yi,XFeKF'"J55X8SphS1ickPKi&I(DSD`MfCLLr"
3CCH2$qI,qFMk*G,fV9pPX-CkDNi"KSQa1@,(34IA$VMk3"kZ0iJ,FBVU[&q0!ZQ
P()BTGY%Ir"G3HT`3`63`BRCeC!!K0l8lZ)ir"")*Fr6+eELc+6S'#d5jBNr4r'A
AShab2+1*5NF@MZRp12iD2M6+jCE5dlYC5jp!C`@5!Pq(954HZ$4ii@,DT88ppdP
4AD-Up3+RQ8PI('crjR1KZmjLC!a4YC!!c(0p`B8BBU#9QiCq%S(mIN'G[mTGI8[
AKic88S&I1M[GjI26f-mcYdc'Mldp+`$ha4hAei3lM6!P%`II2EP&N[0SI9VjDbK
`lSK[Tl"2[&1MM$+2-1[0Y`"!K`Ybkq2daM$0pafY!C+0N!"A`*p6`A@9jSZ%cQY
Fm-+#m[M&&c,3Y5F%38SVc6hLYQhXUSb+M[Rj+FqFqLH,K4*%'MYkP@,MQ`+b8HE
@M(ZEDM*Kh8l6N!!FPJ+EVDS1"S5XjX+dr#PPV14@*TFi1[R0dfN'F&T#2)R-&T%
fq8Z4J@N'p1#KAbDXR)"JpEPRSHBq23(YmV(hqiSAG1jKfcjXCDZQRB[R!'KdS5#
+mpUGhIXS`'%@2Lil'fqBbB-MSQ+ZaL#NNi8S@A[3`mVJ@LBUrbKY2bkKJdCiSj6
'd2GN1`c0!+`@j)I5Ef!FReS8HD4*Gk8iVAS2I&9q#GPH$kp"',e+*2!jAU$Nd!h
Gp9l!T#J63Y2JJF$FK'Q2c6FYCPFj-M[q4V(c06'`fLE8-KHf`4(E+Yk@N!!"6Nr
qfHSqYJh,IVp3MCA8lhmKa"&pJde$Qcf[Ti[XUUXah%@&Fk!dap1JR86[C"6)N!!
+8KTedSq,FSqdU0Ti4XN*1ckE)-,Q-rYRceG`(eZNG+E1MV)S"0#d2+jcJSm8Z%B
2SD"l@qlGT'S&dL[CdLP*&ph1G#'B+p-l*TJlRiq@iYNA'(-52pek"(fYUZL,V2V
j!1A0IX5Mk3Se!A-HqNdE(Pba1Mh4`GTA[6QZ4frY#RF$(&JF(*DG1DH@2AfZA#E
&3034m#V&"dD9,5%DG50rZkBGk$r4d)LV)J`+jJ&JR%#0'jRecqGUC[`LNlPJ-$5
KBd8DHMTD+1ke2,YLc`H$Z#8(IC9kjEMT4fG#J643VeZlle8PKHB#ABrG8hl`cBU
eZ2M%ac)+QB@r+k'm'qQPT#(Pp93$0SrK3"#G*a#3!)J!Z%,hdQ-+!+A!*L%0eGi
jFEP@6abprm31aPQi$*D&hhKbB[IAf3Iphm'f$*0Ia'S5G$@Nq(Y,j%ZM*MF*S+)
)G&'k0HifX'hR)@M$j8d$P[(U189T,CK6Xq*`3J$0@@4Y%2N[A[0@,20[)VS'q*c
"KF#bX'"FAkjI48#Di('FMS*TZ3PCmMXV@IhL40Dk8[,ehJGQAUqP`q8e'LdGD`E
CB3P#Q[cdC(ZkCE%U2aSP#$iI+K0c&RYdp'H1eETE,CF06Km"jcf`bq$I#`ed4`p
VK`A5FTkmpL0rU+2Qj2%Rc2IcTKmkdiDcAa0aq!`'$%,fS!6fm9e"S)X$U5ke1pL
5R$d"D3+qEc0YEVl%01&@Gd*kLpPrAq",D9KJFVU"3qVdNLK0iUXi33RqA-6$l1C
P"e*p#R6h[dI,VXPZT*!!4l+k,`LZ5Q*Li-fa-kFi5&r@9AajYIK*fR68('dedrB
INhN8XX(jq4VK+dJT)VjpEEI26Xp*q8hT[KU)eLSDQ9f(8l+VP'34cXa4aLCKe4D
VMLf&I&N&!0RLa'KZF@YXJ8&Ei263E6Z-RQ-GemM,MScLk#V#-`Nh1l@fV1+TfVV
0)lPQmqM0PCiPLaFL33NVV3mEiVV#03-(-"ND30)3(l50!+*Q[hZmh%)ILrLK+B@
!SUUCh0KP%5YPKKj6)j(V@FEYl""4l5CFcr`[F8+b&$86C'NTqaNCU2(STpcr%pV
ITr'UNr!P`JZa-@JIDP!SJjD+Xm5Vp!(kj3$aTA2TDkaPT0"`FLrR,qQcN!"Cjkh
VmVpa-Z+)bmMGjEKV4YGC`"Ze[Dl0M%UBQdVb+#QZ)YYE'dr3iQG!)*kdILpkcd)
0*L!X0AR*Y6Ke2K@Be$rTIdE6BDNX9`5Uj-rTqdb[H-5eX"jPJ9J288VcLkh4hqG
1fe3NRj9EjhkD4QZ[+10+#c[!"QrV6i4i#UQ3!!*QY&lp6QI4qX%fhVC%b4K@qfZ
@i(f6De(92'[VlpZ@+d"Tq++k4)pDm+iHNX56XCZ&54ap55SEULI&J,5m3B[FRV"
C8bXPaLlQI"+eLh-B"iU8F8M)TqrlKZ63J5CUa)9pfr(G@$$aj9"!PI+p+aHp0FZ
%FqJFF`Ql+'b)qk@l+&Qid+JL6Ga5eGd34SKd6I(Abm!3$UdqJr'AUiMI1b+XVp,
JCqAU!$d[R5XYjrDi@[Q8VG38KADX"[k55Ij0PeTElUhZQ!2T2Vr9"&AjY'2YJH@
*SXQ01)([%)FGd392ffk%Ka4ViNR)emmK%-*$[%0!aTGl9&4!@8Ahp!&ffkfIJmJ
dZkDU&N$DhHJDNr59T9SiD)SedYmkVkA'!&pqE@'Qra,)3QAE!CB&*FaJr'U',fJ
e!XNK54&Fh'EprLrC898RFi$iPj!!@%rE#'VFh-MU6@&#,kM)1b4Q&25f)b)d-Fk
2"+02ih&+0iKB#T%X5I!L#I`F"SbXU2kf6-8LZ"f)(E1e&)CX@Q1@#c"k64c#HME
l*$ZPlcQ"hcB8pii*c'UDN!#h3HRN10jACAjC%V+iq"4'"Z1iJ)&c*1"NH[41!5E
#G1N6aPK-fU*604*jcI$"q!B@EFD`Qp9qi(1MQCqdE)`lANV'CHQ)NN8Hd!dQ*jY
$ZS#NlP&VRVqZ#BFkr[XPqjmBM+8hjcS[+5P+1qKm[k4RbV+f&eY1e9cq1aYaJXA
D'ERhE1,I"l#PA(VMmXdd&6V*J)H+IGIDkBi&iAC2RMm%AUifc#Pq1L$ZkIRCPql
b'36pUcm1Np0-8M4L$mY-kD`6r,S@`!b2DiI@QaRGNFphblbcP-JDemKdKV-V6QN
2fQVcq81#"J5NDH)%H)kYI*E6N!"81Uf!QX-'$HdHbEN#j(fUpFF`Zf%@*m@j0',
8$mZPqNH`8p412e9R4hq2p)9aU)2ATf@Jdp0b45Mjmh9`231c,[eH)TD9-iIE8ih
8&Vf2PmkeB,S2MP3#-F,33)-KB%)DT'Y*4BlT%Rl'"KDf0`R@eNR&pXKV!'B8f!j
"`afN"'QkqaZEBf*b#XdR)[babNcQq[#6LDE$"k[MRY'f[qF(i#aqkR2LU!$jipU
`$RC8KQ5&pJkLM&$MRj9q[BUV8&l@Z5[8Rm)*qUqVkcj-9DJe$-#9!"hhbLhVljY
K[K0*Tf$9e"a#VL5P`RpLHB''ff!'#bJF4"@PE[Ck`X13!)[E8)QN3'bcjIlI8-K
1pYKm*3q91YL6%KS`#`Z-kH#A0Lhb-pe6Vp$'Fpk6Tmf3!14`"54%V98f[TaD60a
,,''`8cqe(GYlaZAVQ&,Yp)1p`HbdP6`l6q3R!@mG!%pB9eGqmM8k,8@UN!"@2%@
cZr@BjZ3bkGGJ&0QQ[+@!lATRGPk%LI"Yh@FH(pqfeRlV,APGHR`EAm+@XqaEE[,
G`(@[5L$bq-A$XT`FB2eFU8RS*S6+(mV,RiDEMC!!G#CFDimTH`(EDr&PMX)D%a,
pbf$TUUph@*`D+mKi+H)!8Bi+bYIEq[SfI1T$6"U('b'Al03E80YNh3d"T8EeYG&
S&bK63XEIhA55mCE`[*1L)d1)NZZjkM3%FY-Q5(3%P*`kr1F)i'$HF,5'`")RV*Y
H(MFc'f$f,p8CL@j9T2IAVZB9d$aXjcKe@dbTBJIP)LEhEjfA$Z9&bI-(Q'leH(2
FFSqLp2PE&%SJr#6MK,K$BEFCCUSZYbr%5IdA($)&3N*La#[fp@,chaNL&XjGCC3
1U5p9imTPHHV"(aDMVNkp5KjUS%Kar3XXPRjph6%KIDaS&D,ElUSZh$l3q9*r0)A
6`d1,H#0Cr!0AEqY!EF`JqF8RIK"Y`(#lk'kJ9J-1F*jqUr[NcqDRh[EmDUk@k4b
aF[)2F1M(XLL4'@h%+-iMZlh*!Rc4'#cal`MIbN,FbbIBZk6RPhIH2rZ1L*PUp!+
"r[d!'`ABdNPCZD10cS6-1`lbVR-@(h1%bL[m%'$HQRdIbJCElrbjcIaqMf1SpDk
YQpi&TV!6"L@A@rc3SISpEaJl(+lVjX&1,V`h)V@'l4)$LdTjPj[U91$A0+hMqdL
QeS8Y9QP-a3d'&+,YVAeX9cN[ZkY(#kXA2HiCR&VNN!#4El,f,Y+m9bi0h'iJpB4
c0GHMlpLkG!rh!$&(I4a9fHSHXhP"#caplbSfhakKj@'iaDTp&TIb,JZ`V%88`&e
d@4&$TDi2*H9Jh%p-c!NC$hj*RM`%&U"X#jN9!)h`YFRfe9&'k`LTBXSa#3MG$lV
EVP)c%hhr#(-1#1QRBKF*pX8qcc0EkNRqaimaHP9`3Nq$YIp[A9BaS*dkE[EX0Gk
mM9GhjFh6MQaC*lq(ZD39M"kch+aSP9,KqiiCl@%NNb*q5V`'X&VidD2NlbbpJ,1
ma9%kC)QQ*Eqb+G%0llqF0@IpZ2FJ&%dXKVG"mQ[R!8kE@$I!I(pRHq5KM[b`CNT
)dq1UK[NMJGMbJVUiKA*M$d0&14!XbD$6jhGT`qm9kZq"EQjYJaG9pKDQjXc"c@S
XXVki*3R"JaVq4)0KblJI*9+M2Pe`$iV3$,VFaK%crriPih#)r(8[d#DZA5'8)[K
(r6,q(5-'JF6fF`@ZaM&U%9*p["$B'ReL&Yq,k[!mJr$XX4D2dDc)U2KMK!9ZNZ-
0Ri$36fL[TVkCRkq6jV',P(CYGU8#[-GJdEEe&P!iIQ[F),-1qB23Ld#$h)+dHeB
kNU2"4I%*JMECYbG(jJ60Q+Q!ccIL1JF`jY8!FR"r"m0P2XUHcGUJI6dc8CGaEhZ
P&'@eNi6YHfCV-""*`Yf9,ecR'r09K%`4+iUpfJ8T8lqe9k1mkFE4`MeX)fUZU`F
5Cd!N&lf!2*fQm`LM,'I'U8H@2Rh'56a"Q*D1bKBDSF5-US+pJ8-6$A1SABQ&XrE
MdUXKcmpk!fRcf[qP"*CKS"TqTjeA[q)JB9jkB6H"b4dd3Z3UCTLk,qikDE*rfaR
HYqP1*1Tlp6iF,#e)@iEC*RXhZ2pHj,03fM2F"XP8`XA-H%--$2hQ+ci"!Jh-[*U
p@)i+91kHNdck8,q5PBRAS(R@'mPFj@Z#N5S8D%6pD3bVp4"KXG-),XZ!HQ"LIUe
YX6h#2aNFG0lM0-Z0IdKk59F)X@qiI&I"kV+dGd1L&P"&`1A'UA+LfCMipXak!3L
5'YP25,[XIk-1a85fI1ZH8ILEhNHA!#`9YcM8YiMU8VhLf)MPDVVYhHC%6Ba2"d@
IFU,a&&HN(3cR1qdAl-p%IpD,GIX9hq1@4-QTfGH*F[j25#`C)[K56)R2Q+YarR#
ZYMl62C4TPeRRmDb+QjPalSECd0J)ADTEp@-8p9[,RG$2bN)G@CIZ!fk%46C4@q9
Q3%HDScJX8miYpH#jXX@F(BUZU$I*X3C8RANh(C0GH9YU)VG&l9k(5FHGhlCA[9@
KAl8LQDrSVL4[e6R)S80H2Y,#'VB9hDHf@V9mc-PJ#2`RAEI!862R-49FZAccaLh
h+6@3!'m3f8*m,b92"-hGkEpI!AMJ(PETa2CZRM#j6S3-ZIBCjX[2VI416ZfHAYP
p%,LCmAADP9!1@4TRVM)*K)Dc48Dc[*[JHQfc$I0[qZJPT2k`XZHXCLDNhIF)AZ1
,jRPiEl+RZYiX`aJHNrdaVC0b$NB@89SkA[)R1qMBLGZ562fq8THc1FqPh@deGS#
'TmM@)@"b54A(qrrcqeQH$+@!2)Y`H([AmYrkBT+`T`l4Si@Dp6U44m8h(B[XrTX
4U4`Z6"!%EK`@Ih[B#2j-r!d"C,jTdji(AI,(i@"Jek)DRK4NSkkc(6XLcNCaqif
adHZk[CV'NDk!dS!04h'Lr9II9k2K`Z*Q@28eed0@-U,XC[baPI[d%Y'##pNRP*p
+j8C*fkrC)F)M0d@[rL8@NfEF&i0UJe#!i3%PQG1jLHJG9"4L(dB@&%Se%6F1Jj+
9E"Uj1l6lDlILHaC[%$BJ$#N(*r($aCd#,95G4pk*Q&AMLaJ5J9pCl--94T6@K2'
rZ6+YY"'c%BM()RA"H@eZVPkj(Vf6YCBS&J!RJ4UCSe&6b4GCp20*kkh1A#pUpKE
(C,U5rEH[mlh+e(ZF&5'&`1Pe&AJm*IFS`@9qCEMi+pI@L9Y'%f-r*6D[XZmqS)"
(eC8812%CkM55SH',R"BRX"kMhUdQl@U&#ISK#5HqDi2K9bM9[Bp[5)kqp3j#)fG
QM56VL28%PrEh-l#@(cGqrG-erI&#M+%E3krf6pcKVeQU0lF+U*!!pciGI%45FQN
h&dKJ61'D9`HdSr-Cj@L,PbY*#D5!06bNPbfCckC2II-G-mG`FR+BK('GI0M%'5%
G3h&[fU'$FRk0#E(ldpif#9SVXXkPXQS$B#F9a[3[q1)Xj'h"Chh5P-9LZGd64D)
TbDaQ2b((SMcTaiMF6#1,m('J8p2@E$l2%Y$0QK#RR5+YSLVFiJFQdh52&m@ddfL
6m@k@#4q*9l['JL5lX@i"mchMpMb&S)$a&fNbG5PZN5ElVQa2TK2+2Yi'Frfm)Xk
0HXDak9-pSFS"&[K*!HjV3e@+0@!-GpaV'01J8V)3$S"b*l5K0-Ij**J(ljSrXr,
")iT0!+16cFp96`bJ)6`%N!!Mk0DEJ'N%a$SU@qZf`JFU2iqQq5Z8"ISH)bkN)0V
-+[*Vc1A@$EEREN9-Ejj68#DF@qE-6%M(+1l0FVV3[m1md-S8ZY"D`RCKJP23+FD
VZS2C#imqehM-T4A+[KQ9K0"hcX2$hpCbbGNG-SY@miVFB#D1jrLJPdX'U2`GaLS
m-,@SCYa)M'8DX0EFh)[4S5B&erlHq-B9QJ,3,86jI-`0HQ0PPbiC+k4UFTEY(cQ
6&Vr,m#XZ%YIU-@T322G#QBhNHl1Gm(DJ"Dlf%8@+d(X5!j8He"QAGNHC@kLjRpP
$FC0MZB-5hYjq6Y3'XX4Vh+[Cm3cmllS`%&m2*d!rkb%C(ZaGJlPi5c!2(6G&9G3
54#d5Efib`#F,YQqbqKbHHIidfljYKKG#Q3aPTUY!'`M9!)"pERB1B`!&Y1e"hl(
'd+I(VEU1ER4IqfS1p0&qhD1q'C30+0@NA4RRQF315(aZTbe1Z)!X$'6X,2)1lqJ
Dh#RDkEBI)4ZGX9$S!iHFbLa6LGdE'p-SY+5F[d'0XF1r+Y$!X8M"9R*aJqlS0pY
SB+h!m6C-I63p2j!!`+rJ0CaX&SH4"bPaQX2Rd[e-HKmD$3R#ANEa-DVK6SVc,jT
q'adhfG*'pe)3@GMmZd-&X"adDh$qi40TcT63SN-$X*!!cj()GG)iH5ac,S@RCS2
-KG+(%pTEV+#(`b2LRR1XmGk*l')&GaiG)mbS!*3reLkd['`[2J3VFT2p0Eim"eJ
*LKBFB+6UNKU&aaifKX6*FZM@hIrDTPYR[fE,YL@URphSY+dQ-*Y6N!"PjAVr+9M
D,$D#"L''8GMp-JAa#r,fRV*kefGA#N$qR)PrBDF1Eq02NCc$4R48D9ITQc4$'5d
#kXddS8'(GK82hU$0TU[3%h*8QIXSA$U&"[MS'0&RZhd[-Iqc'"dGX)R1d%8-hSJ
!05Te**R*FEE)C`(Ceb2!9ZjMZCii'l55H6K+I+4YKPcb%X#YS2Qm5@i#&jr0ce3
"rj!!'JM!k!abS1$8V[VfJa!ap'kAU,1[B)J**#Mm##(IBe+5&E98j#Jd[a%dla6
J8,*qH33UcX%X&0RB+Ji9&4!SM16D48ESjebl8A'HYq(**'[`!A4h'@aL8B#8D(e
DdPb-e%#ejkh)8j`K'&bcE+2)MiRVP$PkUET6b)r9),0KQTFEQCDk6'#Z*SCddT6
Y+0ke)Vr["N$B#S"HeLC-rEQ("-mQe!VfHb*D8X-DPZ0kMRM"Y,3)!X3J,I%1I6+
#pHiMjcVdNLU9UK#B`H6GqP@hAI4'N!!`)-EdmK)`"!A5q6C%N6VI[p&#h-T4"Kj
!r#NcK'8aXB)3JSi0UI%91eG$$+d*cX8)dU0d8&UC)!@d1lQ9-Gr5%+K"hIe[qA%
eUE4f+*paeH*Vf4RDJKC"p5)$3j8b+DZ+9h3Glk3#P8YST*8&bahfZd1jl!*iJN3
rKpR`8L93%[),L0,YUN(%[c,XSJ23BJ@A3DJlXkA,%NY4hZEp,GlmE5j`8aB5`qB
6XRJ+Il"%p$+5%Q#NRmfjK!B*L#Bki"-H8aib4[Z"(D)hbE#d-TBl9QE-`Hj,U$G
GN!#j"Y)Jr4he%Xej2M223r$G`3p1!X1(#"H$lNkBYUe9'QAT8Fp9RMPkHH&#3i`
EYfp,e(5DAPCd[iR"jAIHmdrMj)NLP4bJEY,F[%%m[)KUIN@HD%4Tq3X`[pIJ'0"
j#Uc9"S[6!f**P"VR3HDqm[BTGeCpYQF(YBB03+K5mdRpb9G55"brT"0`3QEF#Pm
mr5FMiNe!kF`mT"$ClN1mq2B@k4L%k6[heiA@X,mppUejq"raE(dIb[qfPD&,Ma&
LPJXLkB0%-+VZUk53!28EQi"PijafhNMQ5KK(JRX!F*3qc%9[eiri82l1XHQ(K%%
#4#BAf3G$,K8IX`bPiJl9CmJNG0)'Bh&,P*BY2#NH"5P*&AE""eT)")2C!LH3!&[
R#Q5[)YVGY%h+Zbk9l[%*Z"%er,dI+P8JUQD0-`reM-58d16I)VlZM9*#YDkKrLI
KdVSjB2I,pAHFCN+k[mJMGpEb8KVH!04"LiI&606(Z9CSS38r08ENbI!1X-2l6UN
A'$8"Fh3(KfI@-h"cJdPR9'raUAG0R@TMGckF8iVBR$C5M$IJJhZE&4dVZhfZG8G
0-5Q'Z[%,L[%&Xrfa[UBSB(0BI,Fb(kb1QE5RFKYbMKf4NqV`j2ZaZU$Cq3e49&E
bq''3!($-LEED4(Q(Fm,DGJRH2S-ScC!!8M5mrSZ%&M0KHhK9Zm&5dFp3BdPl5Xm
VZp6N8DK)K@P$LB4$42"NP'bi)%)#5,,TY+@Cql,6P96QVEeKL$AFM)GrEpNP`b`
$mqk)Q1I0b(rp`%9M[0)bH3CM,XfUS5*hDX6f-83lX`NlIBEI-ZJ6JrXfBm0kf&C
2d,$#KV#aA*!!$b*3A6bYF&#T8DZ$-[RAh@DaYhm!hlJXZ@6H`I#CDQq[1N[5*'I
BJ"SAmG+Ld2QD"i*FprP4*kq6V1fcd51j*9BL'KQ'Q,DINXi`QVEZNAJVLYK#VpZ
G%L*fH@C6*CF$,hN%&9Vi#XCcK[Meek%+Yfl3'91NS-H,QfdDF-$A&%[Zf(1h@KS
%LY6B9Pi3FKiqirmZbF#@dbj%1f!$j!"Q[l$KU!8BJeJNf-5N(e3Hr)IVaG6r-eZ
A'NUa#m+VG!&#P6#Rk(bc"9[`&'a$T4UbY3%ekbbT$6`r2-S%jFB,c,[9UTTr&SC
bYSbF283Q%+`J"CM$UN8V[0mfH8Qf,NB5FJ8SZI&i1M)+GGYqId3L*d$YVj4P0Y6
hJkEj`l@KHF'SSAPHi(&eI6e[G&K5hHZ4bA@mX&C-$FdflN0(V"DHTZK3`E9GMU"
c6`cqm`lf0lbV,08Md(QBX42jGiSdfrJ-r6Q9mIZ`!K2,)RUSmThlRcMp`[dAhCm
9Cm+D59F[Zhc5Y6)#MYU3!*9V"GJ3QklfHU@PIp90SZFHN!"mC5c4K"Ne8%S+Urm
'NJTHS1K6(6RB2H99M*Hhb(&KpP[GkGKiSPaikL$F4TX1Dp[E!i%TZ9PMf#LBIGS
!0@*&XEfZDL$*cr,)("BaRb`m*`1LPDJ8")Gm&"aIPfj"5mDE"b2i2QCZB6'!3CU
VrUerC9D5qqeBm9N,i8Vr%S&iDcDISdJQ09QpdCY31,TB'A6JBePDc,#Fk93!kDm
%Yl0%U)!6*m#0#mLr@mR,C(D-!k,Gp&%&3Jl4'M"J9PSS*l@mbL!$(UYN+q9+MqT
+[j,80S$q!`"j8V#a&md5E,bT2DB`*pirH0",-!P9mpV3R0rAMq4QlT3hl)AdHph
JZcZ+@a&hEcPXKD6&BN[1!h*D,,#&(YaZ#S-VKU9KR699&8)H(U'RhpiY0pbLll#
'iRKCSeAZUB@!8UaHIT45bUBkJ$$"#f3SdhfPY5qLASi&RdAU1iCETA0'r-RP#m!
S52!eq+HdK"cfC0BpEN@mU2VG#+0(3pc+qBFVFF6mk4$bK!j9,UI*PEI9Ai3`fEC
meQdSm#jY(+*TBDZ`Uflljfb(p#am9@8ifBZFdQfmMVC(Z4jZ%E1&FQ'5$XU1T)*
0cBbH5Hca1'%Sa#*R[-X(%XV`0@1(62@9&*SdrR`aZRA`&BQ`-fE*NAR-bFj45Hd
E95eZS5ri[(h9cMM0IBSNNAr2,Xri*'hBP#%$1pI0bjC(YpEdhKJ%)PP0#E0H[1R
,PJm2N!$!F6%L3`9cbGKB(If0iq@G@H@lH-aQ*NkNm(4S`fd*#c'ljG)80X1BUN!
h%Fl`FXNIr36DF%ZXD0,&1S61!qFPpT8FCS6U1V4UP1LUANeZZPhA-B4BECZE$Ni
$fGmcUbM,VF)3JdFeDEmUId9,N!$DQM8Lp5+9YRcEr-0B&`'"ZTlfqF,a2HZSLUl
TK(ND0-3ZE'cJSTIZ2GCU4`+JFIeAI(GhN5K%eb`4`5'L@ChcC,2EL)l8KIIV!cD
`jf4G4AJMNEV)&)'*M9h-PAdM0jXCcU+"ZV`-6kK0f%,KjT23iTQYI$*B+B[A%h+
fcqUcU8I*A4@Nk44m+l'h'd+HZ&VpM06"aL68hh88a@I'CNB`Nbd3Z%%HHX!a+6U
4cQZk&CTPUpbH'@)BBllL5DAQ*M'&`eKEMHSLe'Icb6mZd-ib*Tep$kkFRc`E(&d
qA+[1hK+QkLIqVhip3GTldfr[j`Q`ij53!"#NeXbKX%QRpCq12h!k`)Z21$S9,PG
LSRRT'[MA5NaiSb-`$pZA(9lXB9(8Yja"m%lN,h%Q9QV*q2mm$$F5P`TE4YHC%Dq
lq`4Gp(FKCJK4C9J38J*r+3@G@J1*53Z4RFma0U-D'M2K!c%fKj`k#brlfh+F#Kb
LQFX,LrB+GU+QTaqlDBA0a@@2E%6Nb)8b*Rqj#Fca$Aj&JF!FBI9@hA!q8kfX&9Q
2EYk+,ZpJHE%5R+r1Xi0dJa'T"hlLq0XRP[%QdrLI$#!P@8SAaC!!GBl%EjEe2m#
UKP#jKc-T6SrR)RHmSeE5T"a%+6lK1!KRSb)1fcI(V@le6kmcC2RSd$*PH&GEq95
XS,NNI[G%FdR4e)8q%X4RT)RDU&Ur6+)R$mC)Ve6"Ne9YYTBCM[UNAYiM"6pP5ha
9h&'3!"-3!,+i6TZ`eSN+*k!kjPeB2h2QKGac&pJSeGRI4'a[c$@UK'0K9NkLNLl
@bJAIAb`2(FN0QYZYjUh)AcfLa'2@hE(rARhi,Tj[YpVir9",E-h($jNMq(4q!fC
5Q2GQr*)1IddV9,a&!LNc@$33#kdE3'A&dC)FB0(SdS@*Q3TU%3iU8Y-!cK9[UR%
iTdlfC(*6l$QAT$IT+jUh%Aj-#CMB)qBef5EFr[q@R@k#1V#@9l(DA%RmcKmK"fA
hhfSVAU+iMrNk&I+CRA-5a'XPqa-0DeG&TZf1RfQ"VRqM8GCYp2d@,`q,M+"@$fp
K9-Y@E"BkY+VI#e1PT%*1bYXN"%`G[DA%B"%HL6ZG0S&a&kPeZ$-#j+I@IX&R+GC
SN4$E[l6kTqi$fA#jbcj(l[jK-bIC,FVRacDL26MT"-[@Qe+9"h*DS2FX&T4KRGR
24Z#j(VAZ,&8PpLFc-%Rbr-$G2#!fSK[qe*h$[2-+$01LH*64TQRZK,66l-PZ3"R
IlR#CG6e8@apQ4Q'-jC9&58Ref(Ba3E"E!hRa%fAJUk*6'`k,RH(@2AiS3U+f@TG
cG1ICkqqBQfAqrU#4i[dVC4G`jUU,`Mbr9d2B-!"M96Nk!m65@&9I"ehkPi8JM,[
fcSr["cq+Q%%D"b,))DB'"KkPNjZRGaj$PlCX09h9%9chGEb+93B0RHN9`@B*[Db
iTj+c4C,,!IYhr5dbAIC!h-ADp#B#XQFY8b+9ME+'YYTVp1T#TA@8`TF*3p#96dI
H3r0K1Ta!&3q1D0aDqE[4bm4BlN3UiX1cGCp4ee`mQI03AL&deL58&BiZV8#[0Xj
iHrh(hMK[*9VAJ+1*5Qpi&V%q4MLkBM!SSdh*dpqmI,F[H9jM91[i&QS-MifB883
h-l#mhYN@0V&5d+dVd@Y`d'6JK9S!hqG4UQ`j,I[YED@`'aDr0EDHXI1-K6S6iMM
YDZ5-E`PRk#B+JD-S,plT++Ul)2X!-NIc9cEKN!#p-q-iTmLZK@FkGE++$q#Y['H
(EPkDh*G1EaNpTGXr`QkKANk4V%K&`IbmN!$ZCU5fL-hZfLB*c#,i$+!U,-8X3&$
qRpjM2QU%'IKIhY4BE,&hl&5%BQec4plA"LkICi%10+D$lh8a"dpX3BmC5bG114%
-0eLQZ"4,FpZE$lLIq[3&H,cVjaR0Mf["jjkVSYQkAEdp6UK"f(6Z*qX@Umi%BAp
*pEDed3b['Y[Mm`rH9K5FP1l"aUCMJVdAf0cHGYRCkBGp5&LRk6l!h`63#0Ik$4C
bD0,@f!(e!arhXr&F3&#)%0dhVll[RBKL&rdHch1(@(#FiaLl)T+Y##66j0P[TKL
ah(A%De1jHSMj8I5CUJ9XMhYIl["#DaA(&k!a`Gaj$#fiC4dY5F@$l#SJ'JR$8,D
pClSGCh(&$5q'28cBbBbkVh2p6X9-NNjb2RA+q$kAj!be5P[(*H@Q+P1p6fChh1U
(*V)qJ0$G'6%b9HkX-IL+Y"e6M$NS5X"9`Hpp#A"`80@1!2Vd4NLkjJUL5+IM%,4
H!$VAG29%bra!j(I,E$[[5,`j6%RbKY5A$q9LY#NjieF#Crp@e315TkSA"LF5mP@
285b[D@%B3Hi1if%&-mHAN6MLcHHfpGI)maVU$fb([5`"[jSPrahkk9YIGTm8%,N
U(pKpfHAF5AE0rm[Tac1aY#JmYh#RVkBM!0e!1@!3Z5-c0'C60D0-JS3FRQ1##P'
Q)aZTJ'HBiiDAUdSdFI*Z`#k5qES%,h)DUY,H'CV6*al1&"jGAifE2j!!(M(qI%I
'%HRT+18[I0D3!!BLm*55DB,Z*[6*R+@6C,`h2Z@`46ZNC2*Cf$P'5M!hXCrECP*
[SP0TFU&iJS#MH4GimT&CUIF%I))A)EkArGL1*B1jKMM@+89l(Sbf2#N'@$+*F"9
+J4rlr[F@)+mJhC,ImV6%&pjSEpV%XUJQ!"k"bKF4rpa%mjeRPAKr"*LABfKrpZS
![LG3CYDqH'B'!*cmkRN49!m3**4jJVhA`+)2DHb@``VH*T''6r[[qYp*@Kla[d&
eYS8SfICKHKHY!X99Xi2T2f4VMT`,qC'Kl2,JCTk-$(kIpc'MfUY2c2QL@,F8mAY
9+5aYB$QbE6N20"She8mY$BFecqSQ&-S4q0M9`[Te03AmF0p((#(p',`kd9KUCU2
YU,fFGrk&G4A6``F6UNqr+dB&!cYEH#MKqaGmq)6+2dHbI&q(-@8k85P)KEe@8TJ
aD3%2jPPU+JKVKGQ#hHE1e2@H9QXf+5Xl[p-)Q8jTT@plVd3i%PUQ0e9$&%Fr@k2
(qFLVU"%%#Y1,kk3c@%NqLqQJh"SQX2VYF!3YqGY,ZSKT$pf'`6J-UB3[Rj1ZLLe
4,CU*55prPNpRbJkSi6@'cA[e1DqY-)CCrGMbD45"N!"pC@KcH#daJrPBITf`T`M
hpf1R1K!I[P(2!bZae3&a"c6&*M(Bc(3L'I,$1m%V+LF0MdKk0,E)Y5TMKr6HM&i
11eNBiVVUI!k!`9HS18cj0Ha'KB'K(#L169-T0Y+FGAPh!4pRRPI%0Q#l%1e!p'9
e"6)6'3#)YHMBF@DQ6JRi'A$%r,N&"F5YZAM#&m@8N!!rP&YZh04HV*!!a'T,4jp
h-PATGU0j,J8B`06pZ%I#@Q64,f@+(pZ+[4AY`hU#3%VkmMr03Pk&9RC!i$[dQ&A
#ed5DH+TSB38k`%("SmKfYD@kX`X)U92ap#!UbeKfKBNj#`'[)#S15mL,d"XqN!!
TU5c--Y%NV2`dM*VU(K)NX,*DM%J'&S-[f3a3FJ%(S$$2I`P2"#-[m$1l@E29-qr
8c,P(H[&6M'VTXjT3'&MT2(-JIdARkefLL8&#"$j5EUA@rHEfh$lGc3eKp'Ak,#2
@X(!-SV+jUEB!%'@UTK8(`cp5-cFe[VDk'-(SM6kScDS+[N&ZfZNH(3RJC6(!U,!
efBSmFGci&liJD,(@jEHZE`B[DVIqD1ppFXZIQ)&Crd+fAqhGp(HM8pB5&D!TCci
49dB9DbQjPKbF8p(@eXR!G8Y4FXFUI#(ZTYP5,4J9$*AE%'kMKENqHDh13$#l-B1
&M-d)EpVKCC!!E48mMV&d`8d1hdja4R'Qi0jaq&fT+3%dpE,kR+!5260V+PpXAVS
KAF5eBp#6h84p2KV!Eeh*EZA[XBA!+V`[lq&A[dUEapUTX[)'Zjd$C!BiJp"2f9I
'jlMR6cZ@VECF%Ud`,d)f'F1UP`KXL'b5jHJNcBMLSmd3D2DHCq1qZK*'LV-@l2G
NB!'Vcjf*kffCp'qBj'0hP$KMT!,DA20,p+B%R&T+BYNfjb32m!HEqCV3ec&h4TB
3Sj!!PS4'hU$dh,Z8r*9[ffl!j3R0R`JrZcdafLf3!$bhN!$9Bi['6PDkMTKCTh"
d18*L25m0(3KRK,0+A@%am&TrNYfX1h-#mJN%,lLlC@JcLH2[lPLAFLT(--2Rc#$
,(mr+59$NZrEI4,5-$ZB#Jrclqi[k,#q#6B8i8k-#`*@h`)(HC9r+UiS(RfB4eBT
"V'%fL,'XNYUI&YYNi*Ga(ll4Urm-CYMT!Ei[VFCm&Tk8Q'8@*SD+9N@TBA*Bc15
C%9UiU%kALiKB-KrhF,p"hQXHQVThT4Q*US8d#4L0#'GCl#ML!b,)!JZirb,4l$V
"-krFPfdKP9b&A`SrRNNDdJ'K(I2pS`LNZH@GXA+H[lIdHG,P!ZDKM)cUPf"pEL+
LM#Hj0*,p-Ari*G8Qq"2-CeejY`kcH!N2&cD,)(e3c0!lHF'-4hBi%%@,Y'm%'DK
XFd+Br4dIL5IVQQ$P1H-KU0c)HA$PFlTZ"45TFpLA6fHc`qDMN!"mJ'cY%fL52*V
PX&%+2kf3!-L0P!IpXqLJB$SGNCIJ1!PR6DjJp["'N!#`HA[iYN0YCEAB(H$RqPP
%e(eSNrRJe)m65lFmYr0CBE$IQS[k'(X'LrT&XCPe#JF#+X#h'1D-*@#dlU82Q$G
BZ(ia@63A'!(FIF&Y"FJXiMT#mJE!a3QR*TpLq5+j$`Gh-fJlc@lNajJUl#6RCZU
lB!GkDc8ib3[-DNUL1)F(r96JD`@BTbV$4Ta**6&3GM8dDV3UG)9jmEIDGQE"6`P
-#%C6b@@XKi%YFA2imb4#QeaNbE,GITJCi+iD#AhdQ`$BfX5YVB!I08SLZZqfKJQ
1PhX1Vk46Dqmr+cH!0lcNlh`MQ$r6a"Pd%N-'6B-8fCcmh*X`$pYPDXkTYUV4AjX
LU5i*+PSm$90NI!$eB"iC&KEV1Nbji"k)&p*iphCP5TcB`Yb)4,LG3&PKF4PPR-6
VX%Gb%aSYk01qaTjBjHmA3C!!N!!#bVQhBkqT8kI(92La4V&qf'dVRZ[*&VfUNP%
6p`Nr#@K'Ac-)@iGaKl-(N!#Chi5NlbXj0YMjYYam(NiAaif)MSb%!T3QPQfGS$Q
AGq#SK!**eYHZ8@VG1Hr)KRCiV-Sde8k+i"$KKB%kQVr%!98r0%12(DGMpcA6&D,
[r-mF[9L#V2&,&1hkIN60A,h(bF42UU[ZhH*8S6)kd`4lMP-2#Nk2bBN8#aqdU5-
*043!)YH+)#qhKGIV"&2J*kk1*9X%aQ@2,%q61pi6lf1FkR%N*e)F4f(VDIZ*qjq
E84fqGNAc#c4hc#QrR"PVREMk3FjJd&[AM3TEAM"V'Mp4i-)--mX+R0m,U'5JPfT
I+M5T'j&eai9CVRma1Nm+6f`)BYVVUI!II(Ip0BTp*(AblBBbP84Rh)G&@$0bSCm
'V&G52$$[1E3eBES$[&%r0%0T-$B!+R6Kh@[G1IH8Bjb`Fh[kdp$LS2k*UlRUXPD
R(CqP3@9QC4aV!`8R&1J6%2rj4!!QRCb3!(SfK!YebNEpFk'K*X,kqKIhH23c"Y4
0[!`AE3&U3iGF1T!!TNq(pK%+P@!+QNH(0aKc$(qLVDC(H3C%BeT6-I$6EE+dibD
S[b3VIBF`+(&0!J6S56Q@-hc+f`VdJ#cDm9+kTN,ZAFhU)2F[!&bTI"%H+LQch'`
IF*'hTdqCqpTHT@!d8m4V)$Hj6'KYPMqPK[8FBa[3aUD1F5GNeF(J*$pCC"'6*cG
R8%l0*iP&'AaUcFi`!"`rV*G@h635!RF80+8Efbdap0AaEF6[XH(kqKZNQ-a6*hf
HIL[GkAZGR5GSXDBL,`E3F%*XA'lkS"#RU`D+P#NJB1F%DN6'ZB@3!-ZcZ)AhY[T
dpUEl5eeFGbT$S+DL!FS#H[$9('Pp%,&Aj9)BXmp&I0K4pEh4h,6Pda4Ra+!AVFQ
h[9DR&X`ZMIY423!XkCQCb$meG[3QRNHD!F4-A2p6M1TH'Q1ldDbT@CS&VAjeEiG
156@pGpYXZaeZH+(l"UE*[hfTmlSR@1pXV3hjLA48TKBC10EhlFR,ZHd---jjJ$J
11RT0lma&epe@E0"q4!2GA9T1PeL@cRm[TCSaqdAKBA)EY$")Dc#jBfqaXcq"D`b
NS)UY-!r&ArG#h@!pTQM!hd8jl-aB(cAH0SbN`Ne@AMj&eH65$9pk2(%0l8PPTE@
80$cHU9,q0-Rdb@9NrX`rj21'D`-RGmj!CVIl@c*,M9"cAP+EYjL`$2UJr`r``B@
6$[Dr(pdfLaDI+FpPTqe*6bRr3BCBiErQ$`brC0%cIB"9eBka[Ad-ip8N35*T@j0
+VG8[LE[Ud,*K-e&b2V[`M$YLjhB4Aa,N(C'0fm9+X2`Y9KpLDBUZ#r0aDrEaaXY
Tl+X#[YkP5F8&KpI21e-K[3#eZX0cr[@m*E0b1l[+@l-@@cY$bZ4EVN$96C!!Xp8
cTkkKr%!eJlKec!KcNX0SC$4!d5fXqIaHQ6I`42DY[,+G,#'rTEjLj!TcLeE2@-Z
FUlR-UFB5PaqFS1#@!3ciSTF*F3XbHLaD+RSTcrj9d0)JH*e(k6SEm[$25'X$c9M
D5N-VcrXm(,Q2Q+9C9*hiqPB8PMQ84jHlV$iACDaliAL(QCEHQH(RKakCrN"&6EX
X461f6YKP`SrIF!pj!1H!4pPRd6"%Y4DDU5Ghk%ia%aUC&Efr9jY$65Q+rdBkV5p
4Q"%kh'#AHU9HQUZrbT6#[G!dKJQ8aqa@V*r64!Z1q#pBMRRGi4YVQaYjrLLE'b"
bU*G#@+5UYfCi%rLM!0!adkjX*$(kXJ9q@8))bXd141'!Hc)+0IP9*`RJJaALTjY
5qCEC8&9Np4CL+6NYYkELG15q-SJ5LVClMbpP1jiIbV(i&d(6MA,mUHL#AAic'Z9
MIC9cilAK!(*-)m#VQZ@9*J&Zb$GUI9)cEC[)Am6H!KE!-6"M$Jhb2Y9U&M0!@$C
39ciLB'-',Y8j-QHNl4f!XREEYlB)QYK"%FD@d4`D(2(fj#+p9'#+ZSId"Y5cNSl
JR"XkE"Y(l*b8'aI"IkC%@bKV'm02+4fQMQBUrD4)#`'-c6[LEKacGV-Mb$d6dRm
DJaSVapJZ%6Rq4[0a!DFGk%BP1YIMpXJI606G@$(LCjc03"f`U4*PflX8r5$Sad[
,GX'j(*YE)F,jl$"kLT6jMT4kUSU+&jMKKc!3c'qlf,MP0,K0T&UHTf2rPZ3RBa3
T`dc2QIhmFdb8@RQ+HA'ZI!EH9C+VQc,HX2G0@IGiD4HpZ)'j#q8kYlJA&KGj@RS
r&jMaDcB,&cT%I#L9RUT!Ge43@65I&e43&eR1RlJAGA*-64T88%Zrci1rrSA8DFj
L),iQA-k[r5mm`lhF91(F4l&!%fP%TGAIfrDk%&3Z["T8SeQ&RjP8,TPCMCrKQ4I
h)E!3-5'EYc-3N!!S1'pP8I!pDYC4DC3VVBf@*DES3EQa4KSpQMB,+De#aNiB)eJ
3Z3&$Ye+$P9,#@c`QG1r@Kb#'G4$,G#FDHUcDTecf9Ndj"S1U%@(CbkDb2H%jh9B
jXV`S4MP#I##ATJXJ8Y*2HfQE142Z*RXDMAYP2"#fR$+`jlM@G-kA92DE`)VH[SH
aM@I[$0R"M8p!`j55RMY6T92I(RlYaEASS)-fN!!'PkUe9qS3N!#8(ik8-DU3!*!
!&eN363Yh360@Z%(mTc-ja90lY#6-TN+f'U`NkYGVd@#hI8+[)*H"9N!jeG8&b&8
M+V(C@MBGCbCRfhe8'KIG38ZLAAr$TmJEAC0+f#II*Mh*a-ZrRhV2l6#H@DfPY!K
FCr*cS#dkJ5acUm8MM[XA*9HVA'f@T!%f[4)Q$irBZK$GUm2)2dcY4&8,+)UE1r3
YF25+`4"aU&%Eml#NJ@1'+T1!+MR#@@HTLbDSEj8PNGF!NN4e&-hc8c8mSRhLS)9
4e&$9YDhJ)B@,MqpP-XY4S&jHr"!6Q"9!3!`rXbdL(2dBcic6-c3Sf&%0Ee$)G'I
QQijf!GBH"badp9Pb)%[,6#d@HLBjPj9r%(EV53(P(AHb$,4$IhF4[qdY"$4b%N*
(D6m#c$[pQ%)djX[K1E452qCVP*ckLcI)B%N`VTA&FN%imKfL0MfB,&XGK9&N![C
JjDG-8%`bql2%bK"6l)"CF9q"1K,8H%Z!R)XjFT'VQ4QQRbc4iN'8BJ3PS8!j3Ye
Rf+eNbX$6h'rI*YA1Q!F(a[-ZrZL[EHd84A1Me+B)[pJ0e-'$&l'CdISJK(NVSIE
1IeUXM`EpBM9aZ5A3&MRRL4N`e)2-%*m1SSSZa4HNFdb%pm!RD4p"Hq@3!,')(MB
U#(U#KT,8[0)90[F@*jkSTTjMIBlK3XRrAJ)qR")E+#D+93pNi*KP6"29S3"M@KI
,CUk"#G3ArQj&bcS"J08qP,aS[j@NqNA,iZUPAe+QkZ[ZeP3DC0e#UA0cP$p@b(5
8#bD%,)#Qf&'RmT!!Qhr1k&R&SQ8Y0DKm0,THcFI,*S-cVL-kGCIp)KV2%F+&HPl
4VUBP[d"NZkZFX(lrchd*JqfC)2QVb[Fi"#bfeKH-@2#lM'GqU(0FfAI"XGpPT5k
iLb51$[Sm")r"U*)BZ$IG6PVT!a1iraR(j4m#Ma[`!VITF*ICY0Qakie`UH&LP'#
T&+mH+-,NBHM$2B+jVmJBT*Le,&p08cdLLAj1)r"MIUaiFpra%4KE,)9,rPAq(JY
`rh*h8@M[!'1bD9J&aF(6LA"pFC5"*Y(`CcTNEAjU2F[h+3K%m4PSC@JiBmND-Q*
AYGQPSA+aPZ@AjM3`jMh4NK2VF$mc6b*9%3GhZSAUeh2m5`@Hm$l8GT!!A#31Y1@
GR$`)!Tj#H)rX1mS2"dllImp"QDS)9f0bmr"+1M)UfBp5A#m5CNUD*)[p!`TTK1[
UlIfLFFEbUqM@2l3*b6L[P((Pj2EI)G930`(FD6$p(@P)cqQ,mU#Rf%NTEC*6@Dk
%X%RcDGUQHC[eZh@G+2I,[qU)b`BJ1BaJ(&cfE5MeVXY62UG5TALq%p@[b2fbN!"
qejhI'ZhV*0$G[rmaFp1j94hmG1R3@+4a(0Jkm63e2p%(l&G1XN)D3F-$'SrFRmV
Be4q#SmS&BhSP1%AFa)qIK6Qd`2,VkMC@9ZhGj2B$EBXJ[c+fI!@'Z("9cdccaj[
YEVSd[LHqT'N-A(ChNZVePV4T'%,CZ&S[l2EJlQjKDHM06kI8X1J-i*rI#dCXI",
JaNT"SkNEXACYKDVIcr`jR#8q"D%YLV6-Mf8TY"%hr@DE8d$9Ql**9'r44ZENHNh
FB3lIc"h[rHCCc*5F*ZpCpVP$Z,ZK8A[Ckk0%-pa9MXQFN!$pFkQ3!%eYd2'!eN#
J!NH![c+3!(pcNVh8X1aZ36&Gdk8bl-A$T0LbXLCkV2S$Hkd0Qm$HeD),'GbFaAG
)C*p0,UApXZjMGXAbK'6rm8)di6aE)3kRaRFhd5l!lTC0H+4&ea6Zq"%NPp,hV'T
rkq@3!(&`C"Q0%r586eUbfR+h$+D"T-IICLK$KV!FqZ3P*B4@KCRE)08`VXp+EFM
U4f6R$SaARl338ANUH`9Ib9MTh%'YBXRb`I,@C'd82M*YfXQJGlS"6f!01q$X#Lm
NJ9J-B[FN*26TA1+#eDAe#h`[`jb5CI#hm#3T-96R0%0mB*1k+IL6*PbJN@GXqrK
R%VAjAZk#*[Fp(FaCB*RGYUi3ApIeb9'm%d`Nb$!*&0[+QRjS,Cmc6)JMRJBdl1+
1DiVTfD6BPIi6NAMQRjJJ-TrT*6@Q9TZr%`rA`"D*U1hpD$&JU-+pP5h&G+bN",i
lJ&`aai&!VmhQbX9X-NBVFI'2&h518d!E[3-2mec`+TZ$8&,A@*,B'Ba+3A"S10X
m&I[h1+`cNEl82a52eA3+Zl@D%RAHE3fj!NUXNF+r#hXMcc+Z1#De(kjeJZML![G
RlRCd!MIJ"K(BfYeqkBB451e(AHhkdQ28Z9mHM9Gjlp"H`QY*#U`1ZUb430iY0Yj
l#NM`+U*YZI+!Q+`4I`&&50Mk*2'%JLfP',H@%6YaT2ZIl5KLTCra1M-[3lYN%l`
fUl$EHB8A9Zf'cCDSd(TXpVRUfA5q`mRE*R)Kac'`b2`51NqrVKT[L`,P$PX6M8q
8pLh3d[jU5j6Y63)T&PbJJ49Q(fUT%DHp4Xb94'32"XLFlbQ&%kce!Mk+N!"3ed!
QBaT61A$!0LNPhCXHF!!#HB4JcKa1d[R-q(4fpF(4B[NR1MZ[X35GD'1DeNZr4NM
52('+m!XL+KI,XBT-9#hh6Zkc&64Jk--9#hjK1LMYa8r(BeV+`DQL&,2VN`cIL,Y
L@3MG@K)r2N490XQlAIaTDmkXXFqlfA%ajJUk!hGlA'mreb@kLIpF-NGK660mpP%
Ahm(IKIU@LQ[[+b0hjJGGApHa-a8C,Eb+'Uj&XCF&-"4*h9cFPrb,&+$3KK5AjC!
!R!ApTYDUZE4+ELN@6H6GLVA2VEEfi6"d2Mek35)Q*TIam*r[bcVIDAeqp*)&"(S
B8TRBi#!!5BibCYDZqcdJB@S+J3hrq9dakLD1eBY4*MffkQdQc[cG'8NGKP!'!5,
5P8YpZ%)89[Dl5M4&3+SJ`c"`1V5h)6RJi9$IXVd@G5V1df&SV#Tb@9RkCm4[0&1
2mjqZ-lbUP!9F%i8Y5P3X(&4dCQr,b*'K5G%da6db8B5J$TGP$crNqRpe1a&Y'GK
T1k4!iH6GUa9Jmq6#rI669K!&m"6LEIq`I8N3'`DQAjfN*EdEq*iAcGL-ae08kMC
FX&2'cKXC%FV1&rP-C5+Z2UDH*UH[(TKiKiPqIZ1'(SNQR*lD*Ehh3Q2&p+!&*QG
-$b*q@F3&d--6[,eSkK`*104MT"Yk0j0j-!XDGB&!mR22-V*f`RJa)"F)p%MqBmV
)"blR'SJ2QF(FV2`JC#YYkpkC2bjJH,(8Q,SPIXS!`N%Hlr9L#p!m&$6DA,U4r##
Ah'Tm5RjPm4(SDLCkY-EEBR!Q-J&@1mQ"i)c5Qmad!L"K6PTEiUF[PF*FeUITl)J
Tj$$p0XqajPGb95V##'dr'8LfbiE2cLSN6(edQ+2a,A$f-d@N&D!%!`QkPF@`ie2
$Jl#E*rmil[M`f@4-rmcNff9c@3mTqCaf9h0"M&T2hb#R6A#U()R4aTcB'-XZ1ah
2i9#!AGA@hIlp4q&"*rFCkG6'4L3F#C4`"kZT%H4L61j%eK'(J#*Kb'3(10S[c2i
L8'(GXeCSPib8clU"GIUCaBA-X'ehr3D,1-f`Ee`pGEhrRFcfIlQQ#JE1XV2B+A+
[6`0M#GBbVqe!TIjL'CZ,mf18YVRf!-Ap6iq3!$&@K6MFZKr-+2Y[GjBB$NUq#+P
$VeGRjH!4iC!!#66@+,HAD'm3e)RNI4rK@C8['M[ZXk6"4P3*%FCf3ZEEmTAcB&X
1A6(3bKUPBVQ89U%9jE[9SZ*$KM+e-lRT3E1&bBe0MV9mA3%6(`SZYPf8&H"jB8R
G`$!PL*PBB43r-UZ0dpiK8&HJ)D@,D4%`&''*4'mq1"LRP1r6)djS9R#3!"BcZcI
S#!Q1N8b1#4icMP(U#`IIUCe$Gaj*#Ik4"`leIm0de`CJQAJBmF9T*RG!#ZhYECS
bRkm&[dA"Z,JDNNN35bB(R#I)1'rS#k#6BTK`aN18E-r!L3J)6L-YKZ9X#@pTZ-1
+52bD4D"b@C@UQ!9h[5#Z51YZkY0(Jh)UM6`R[cS$c8!NYeei-I4%)3P8*JM#94I
))[%BIGehX!,5H-*#"HK@0hlj6`0VIUHGUhje+)A8L0fpDFN!#$#Nk05Jk%G##"T
TC@YhYM%3%5DPNSXCbI[dA19YG4CY@&mcaP-`!'%`ma1V'pJ!%+Ad)lYM[qh,IM%
,q0F9E[pV6D6RJQQe%`GFQUfr`hAN-G-&"pf,S"VEZ'Z'h3LeN!"fjf"Uh'Y!A,X
FXqT*N!!,eLbRCLD'EZ6NHJ1jFHmYZlIqijPDk!ZP%#'3!#`D10UBH)X8DMKY'6P
c9*M&T,33QU94eUP6PC6#YR!"P'T(!,mfB2X(#rVCB-[CDKLZL[*JHNC)iRNKK0p
0@Qq-"m0Yf3aaIVTE#c0535B(81SfV5E2L6Sj$Lri`["fHYNUCRh#(1[##,$VMcP
F1Aql5hF(3MrEkX)%q3XFdFJT3+a*!3"*U**hE`6`FVPf6`0FiVMrpXK#`MY"X`@
RS2E4495I9RD2)Pda,DEPGX!35$RBVX!P26pS#G!DG9m6HpG6-@AHh*4F+5C#CQR
Q,q3b#+9Z0(UIpFJUef+pBeG1ZcQRL*[d'Rl)3fr4M+Qi6@Y%%5[FZ0h#H9`V`[B
@ldmK`K4F+rZC-LBHj#9hVADEa4%3(2UHF2)F'br0I20![a22`N'j*8a2939DUBG
04'PJ32rBS+9Ba-4B&8[ET9JFckT%,$Ud165ENS1lKM++l(3b*UpVUc4N*K5+&rX
M&eLRGbi)#EhbbpHL`JKVkc5j@'ilr[9Gp#@UaEX8TII$d65i32I4Zka9bl&!&Z`
9`TFfcABIdlmSGLj[@6'Sd'BBpBJD'0Ga@6dY-MVIMfZC)UA25%&+jc"ZI(SYX+f
-KP[#U!''$L[L#+R-p2J-bi3,&bCpQ'N#E9*F#A3L5U+0*)(kf1Sd*hR'kR4Mp&K
L(m8UZH*imZT4NXX9A98d)$5DF,TMFDI,#iR[bh44&%3L!Ndamfqba(6d#+KBKaS
efXA[kY9dbbGB'-fpT%GQYB1ND#!PG!m08mqG(+GF+pc6VXM`'0eeq'5pMZT[-9X
1a8H8i8jd*$L$`+XkShd5q-XB#!i&"dRY&HZ(2AIpk`i&%GN!$P`#63VFT85`X#b
84+c`m(QqZm[V$K'((&MV)d1$H-V,R"XL!J&KKa%)(pT3Z3KJ!Tf@Cf#P68h!TaU
lm(X,,6#1k`i&%F&q$JJIfZR*#'!#RDP+B+906@m-0$40R3a)kP@`m(N2HRV`X!r
lbh6`m&EJG'B9Hh5I-1hV$J84Gr)1kljjDh$`&E*H58N9kiGf'%+Z$NF#pVIU0%d
#8a0J$K'(#f[Vm-@*HRV`X)NH%$40FM,J4J#X2IHVD4FT2e8,DaMd`HfYi(-'rPp
(NN6G@MQ$5Epmh!'+Z5LK0"-)T#@RI"KB%d3UfHAQP,mFj+`-AK0IkZ3a5f2ER!-
611b$VCESRPjd,+Yi9I![rNQqmJIH!X!3q5A+`E@qK2PTaUPPk0NqmcT%-)B,(Kl
QqH!GVa"ccU%i4SQfI'cN!XD4eSP$RcdpL8cb6FaG"03F#KT"N!!KLk2qC%@$a-4
&cS2Y%QPYfSMA)*I,d'pUH,KeMENXbjG-kX1lC4V@&ea)PEQIbh)U[&Qa9d*Um*(
AQBIrQ-6Q$L5K+'1@VR4`IeDK&Jc9rCk9@[D4VrFBjXDe"[f+JJb9p`6M"*!!eb[
0eCXMZQcSe4EB%f@'FZr6!G*-5F"B'jC$G0$ck4K`l&,L[6B%'KaG'Y4ZHJi4&PF
liVmT+DpA&-JqF,(YP-N,(!"5ZJ-2j6#dFKDq`%T-5jTMNbYYhr*RJ`MJPY*%hXP
Ak'&BJ(T3FpL&I4(JKNh-EJE6E815'8ffml*9`k6ki$kL'P)@l`3Qlj!!9"S#V86
m'Z2N@QSr[Rb9c@+&5rcBGH&X8A@6j0#@pac3F#LaZ2-kIHf#09C&09TXE)ch@Pj
(cmRkUbFB-!%H%kbNN9GEai&AZB#Y"e!m5b9j1`6"5CUEC$`BTGhhFK![kb0bVmN
`hkY*3*dQ!I'd+EZ!)!N3mq,ArYM*!9FD,fJ25JB&)ULM,Ia)BVZq8QiAYcRUZC(
,*TiY0D6LKkIma3e!rE@"C)NUkbRL-jlYJ*D(,lf&RQUp(XRi#If*#"R(ccJ5Q9c
1e&+h"j[4hiGG0%Tc0"k90%P@$aNXYC*$h8UPr9,+@Y[9bhKfUp8'UQN1##e"9h)
H8VK'Xk#F%Na*f$$R98j'q-b9K@RB$%Lf(EU8T0LB,%1TcQi0A$p,Am#0PYVpZP`
81mcCJZqH#G$aV3[R0-TlA6h5&Y,Z!ZmP5NS4f#43M%(rP&p#RLq8J(-TA*T(rQI
$Z88HZ$pLLeH20`'%hTlbGN`#ScCEr5D-9rHY@qaEe!9RZM6-'SHK!8$FA9JYadL
"9Ff@UQ5SEFF`VqSXL$&FSNC%-MYV(SDKaf4+3bd)TeVGEN-2PfhM1%Qp#2hPA$9
LYC+3!#ejVl-eQh+bcLV(fSLC8i-KD5Y"C`D-3KZ3!'51pZX9mGI-A%K'j@ha"q[
5XJTJFRi8L*UR*'"lC#+%j[I2"hY'9UIF3PR5d6f+d,,)f4NZY1mNVqXXk1Xca`4
L%9Z[Thl9)p)bh8D"cq@bCc@jpiliPUIfT+$I)qKXeT!!+$'e"m4faLq[`,dfm#k
MY*TUC5h$cUY(mbpSJrD#A9l60*NM$V9$J4ifV"L!UAB"ZXbGG6U1!jSm9#cl4MS
1'QFaFdkEMXS[)1RH%E(SU!Y88k`Kb23T#FMp*MGK$IbLej,IYGJXU98Zd['6Ac+
FGJ06M@M+-apKPeF#U%5B1dE66r`3QRe5ZNA)V(m6k@96$k26,e8bGNqJ[$mB(&$
a[K3KILP-9[&rYlFp"ia)Je[U8Vb`$UEMl0&0LZZ"46i5N!$*%Ci'"AYHSheG3k4
E!a@-bpb*fLeQc95c+iHJ%f92,hMPh[r#pL3"Y4`X%B0hEX!LC[%P`lB`bFXj*Z5
B%UH[ZIB)Z@(X*,6VL5I,PFE-C34Q#IZ(L%8f*I(S090K4"'[RefGMj5G6+-lpY,
e[KJh,c(lF9-JX2[V#j)h%$X9-FHb"fMa#YZj&jI!6"'h5+SN+N9hNahDkJpUJeQ
dcQHJ#D5C-q3"EP-)pamT"#EMr)%QX(Z`[3hDGB#jD(1+raaR)!C[,eZkZ32@q4K
%qP+dfqZ8TIIUD2Y-F#A(i!F18apbQ8**(G8-,mqK8LCI06+4R0$0063SdHV%&#p
+[hq96ik84GD5@cica)+6R+e#)MYI*K4)MN1L(9[EAmA``GddFM[4TF'QRcc"NfC
GiCS'jRI!ppB"N!!H*kC0MSdGp5!Hd2)3%5GA(MQCJ9U!e)MkY3jpL&6@P"4pEPm
+bljSmD%N202`"dj,Zkk,#Q,&LGjc6cA3-PX)+R-N09b+(FajDMCD&L5iYD,%1Ie
XfP`(6L1!dqGq'$$'4aRq9ql-cS13!'@m9Pihe"E)fe,,@RE9@F(K@DRRlqp8)'U
dlr@"9VN@"-JKcXkVDUY"UYhL"iTr%PqCH[*J&H`a-4--"'F")QbUCpFflqZfC6U
&NTL``+j1Yf[54j02c)c+mL2Rj8HFaHcII1a(CS*Z(fFacj4NH)%pNh1$1r&YN!!
Yc+kpZQS(R00Fj!+J0#d,6M$'%N85"0JQqPNrP3VLQR(1DcK4DI&qX"-3j*VB-EU
5!b+hfZ,)I!"44f*ijj(0b&Ej+!iHbDHRC4Uf8ceE@ETe0NhGY3kPdTISbGS"&q@
C`!J8i$*Q"RPa,L#i'b,im$1E9(S9$)l"D`Y)"Z"aCZej#3[YHGPc3E[brfm3U%2
a[N`Krb)3hfp%pd6V8&R5M35eT5CSMY8")+C4!a@F%k-BCD3e@e'a,r4EB0Bf3V-
4XrY0&'Pd0RDB6L9P3UGhHV,,qE8P+!0BB!emXU!&(28SQ-(KEI3pB,ETG*pqRjq
qrB$2`U[9-bSYUVhrEQflh@BY*3MrK1b+CQ&FimVAY0cT[PVALaJLed1N)V'iI1N
mmCmCS$hdQGU,902dPiPIKQ0V3+bL6IRT-kckGKpcebUaMCCFLCY1@QrD4a[`EhN
0RY$hML9G%qKQI#I-$pT3MPX169f+2HScZP[D6Bk+$ZTGZMhD-ijENXa[!4X(bMZ
IN!!S8[%'B$a+K6GKcC)33['UUjhh-j!!1@&XbfB6Z$mQZADacHrJfhfeaDM,@5r
J!C4NGSfaf$'`E0VU"m0KNQKbm&ddq0`5`pFAPE69dNi`JjlMP+"pR!SU"bFMVSX
rm#R1I#5ddZ-ETEh*IQMa&M((6,eZS8i05Z#J&kYEkTQXT&9E3aVpf0Vi#*&Si0'
bMc-X!MTK!8UY-k'XYFhFk+f3!&-P#&qa$QjX5!N4-,lQ$Gf6VlRAZ+cmc(D@$"5
@M9fT@Gj[fpZ1bIh3jekjTP6CCq!j(IGcI0JqI)eU+J[T9HqPD*Gi0D2lQFK1,TN
*Yj9-laL4T'jCCemLA8&,DaElEEH@)C+D)Kc5&Li[*XIZQ1U%E48AHFaF4fS1#+d
#UL%@D,cICh`!Gk,F%'!0,&qJ@PEb-E3I&q*,#1I!!M&*M5afLVN24K2A-)cZb#T
69j0(0Z20pehQEr31Ec-`IkQ$qR8r$d9cLPAJ2,CC&4YU69`NJ*U,,$9$a[&r5rV
Jpr[LaU"-LLf-!eHGmDS%hQZ3!-@N8fJcq)pq*#k9&l6XQEArl-IJ9@"GBr1rjhk
3!0*)+&'aBYG3Seh*kl#Z@8PT6ca4H8$Cda,lM@GFZQbraXIhV3j-3%*2)L-lJ3L
3!-XQPlfiF$GD,J2(jF%DRVc6$#2biV59L9qi9B[A3rc9(fPS'PrX(6('p2Vp+r3
U'fV`@SbpXM&`9Z@$K$Xke%9HJ%$L+eXM3&VRiEJD&pBd'-0MD5QlTdFhEMDAKXk
KF9A+-"JF9p[r83fIpLGadG*Xa#Pi*YPFJBmTEk4P5cV["Dr8&e4rA8ePP4iI`Gd
BA,6V'RC%PG)'l+2mHlT0bl@VLGr*a02H64PNrUmccil[ShUj0Akh3iplUSV5%%K
[#8C4aHGZ-rZDmqN"-Zc1L`)eqH[(k1-([$eDGY0b6lqV#,cGJDGmH1-f8JM6F-2
[+Jl-F%'&8bB)JHbrFLeH$l%iVGqB*IALTJ@JI3G@ZIK+h+RIi1c$bUelqZaJfGq
`Ve$N'S)YY#imH"l[0*CKAIjUA9kUX32C,l0#beaPM9B!fSLi@-#T5#L0RIkUqm@
Bh2aZV8iqd*eBi09kRM,kRCjKQAV&A6@8@eF!DEFX4Df'YGp!5ZU))9qMcP-jG2H
GLjdK6ikAeAHJ@D3B8(QBU(lEa4YVhLh*i$"@,,K4@AK%H+(1++A-KqM@`4%1E$0
F8alFPVh&`dIXlXIX[d2*5RJ6KET(fqiU1ep@HV1c+Qbd9@i2hX-2f+j0k5NGV&$
XX!+b$QFAd0[P5Kq&DjVeaIR(MlS[ceFS-+a$JVYfU-b4BHBNQV5c*5eR5-dc-lj
+L-HDAXXH[q%k9PLk2BVUM%T8dc9AUR85m8(h9@l-A[Jd5jB2SP!r'L9lJ2FXb+V
UebR-k(kBq#JJljpLkmq2BP9(I[0E5a8$i9Nr1QhGkMfHDCkL1(iJC`HCK*8fF10
jUA2J+C5CNUAHjb($H'Qa`Hp+qeC4`i&3I1frZ9`9$2!VFVIASEG&i3&"S8kR[EE
Pb+k#I1H[dmA-dAF,l!3,3(24dpK*+1[DkG59-H4&Y4*M-SpU#F,IilEbEVB#Bql
eD1rSK&9$LiRm8J"jED@BqhZ(G12MN!$h+Gi,UYIe(Qp[$Y[pF18jkXe-Bq)6rF"
UHQ0@61FQSP(fpiRdR1iTi(&F4Km#,[KPiMCIm&(Apk,dp[I5&3&pAh%QhhD#,Jq
iVmJQ9[rRlN*Q$XVYGf!+*&A2e)$)P!d-894#r`&F!F"T*1k,5ZZ-2BZSVbN$5K$
Rk9,4QL35Q%)NlVN4)*["V-9,a9i42CZjV#",`9l&2F@j%HqE(d,f,FXiqNbU#aM
HVk,TI+bPKpS"6"-1i)%$FNG,[`)h0(ie"jcEB$0rd2"r0f2q+EXihmcqAGXmIEr
%SrkHMpYkVB5YTAlQE8'PhS[Dp*A%-B6HFlb`[@aZ"G#XHX@*1BAERpJ1R)%08qI
ljD[k3QAX-J%"C5H)f#BaQQ@$"(cASEG&i3%#S56U#&@'ENYr5MdEkZ9[F`kX$DL
!q-@BCeYZq4LhFfH*f45frCUkDbVL+k1B3H1UBKj"amJVV`X`38H"r9%U`1YPr9b
2Zd5G'XIEV8I2FNYJ*lje#iqrrLhVNE5c2#dHlb#CUVCmakr([A3!EVm"j%VVfX0
b&a,JK3G0k9$mpEb0aqDUPQhRSr(`,3%LfSmH&@6f2`0-@3rS'UU'I9a6%YccrFN
fP4Tqfjl!Qej`B'S8DZbp3Kh-)4&@1hpYIc!FFPam4N4[1jNH1id)9J6'RJpGm"P
#*$8bk1ZAkK9SLF8YPpBBQH$A6NiiDe3i)BjijJ%[10qJL4)3NQm`K,*ma5lm*YS
qG(0fQR!qZ`2ZU$cTq[#liR%KhG*Qp8-N2`-IMij[N9k3!05@c@3XrZA9"-JXa1c
9*J1UGJIR`qfF!Fc'Na#Gd,*4b!p'EQ'NUZ)`EE)4TUp2%N2ir5Fj!R9lMYi,kd%
A*E9alFNqD2,a4J8JXlb`F#Hf)I0NJ-qjXdV45iq!H@rp(E$$kK*F#X@k`+dX(Ki
&jbLRN8*mc9f8jrZamK0ApbVQ(beB8pM&#8#8rTr#X[UUGj,8EP@'h5R94E6eiHZ
e$qXQeTNCfU#,5#JN+9lEYMAe,40DM!dDdpNAUQe$Jic)Jh&cHb%5a[%H-H['q*L
f!ZJ1QiPS1''ESQM$q+X5$hAer$'SadL$$YDY9Ha,p$TrFL1H`aF6Rm#JT4*-S,E
1MQ$$8"#[Cm-,3-a(%9d1UiE*-Ef!)jL)apJ)jrSeJMcI19jI*e,k%,LT0*S!ZS4
(N!#d$dmeierE$ml5r)`VN!"E6cN(N6RZak[*La+3!+Pbl[cL'S'CFLL0AFMqZ#X
q$8T20l$aK[!TP*qA$G)$FTJSQ6$id$B)FCLTapFVA(CEL(&P'[@+m@$C!B[[P5$
2ifXcimD9Umc$d0Bifh'a+YpSTfS%r!r1-E6%LCLc"lFZ[8Zkh&1q@R@X[5FIBC9
A%Z-iK4KYS!MP8+R((FLMGQER6M14r(AeT"@U1A%)#-FCBCNUEdB*E$[[,aUSe(E
J12&13bU8A0#haH`1-%3[',iM"&!,`1$4XBm`9HDih`f3!"*RjDRpCCZr04'I#HS
(JbI&@d1hNCXQ4jJ&cFEhP,i112AqMM`&%Q`h,#HeJN'0!'a)%1%(VrqF(a*`jrF
Qe2dXc65[B4T$5j@qX0C+B3+b",3Dj4!eTHc6@MalqMeJ9ILAJC*4flG0Sd`-(m5
Lh3B4)qc-8VTXhF[jPS2c9BYqU6l%UjVKL11QV5ScmpSCpF'M1E9&b50(#!fbJjq
jD4J3&1TCR$()6G[hhj5c'8j1i9A!!Nl4p62ZUCID$Y2$#hMjT4lDPaZQUXrIifi
"McJ5p1Ar2X&N)j'AmN`5JJLfZ)qSRF&A19#%%HKZ*R$K8Be6YpEElYU!Z[2ai1q
b*mi2$VT+K[FdRM!%(AK+-L1YX*'9('VFYDR((pSM`i$&aDPArKq-)i#V&kTbJjA
5$$&2bbL$jRhh`P,$F4TL,r1IGb`U8JSjYUeLPGHcA2@&TTkiN!#!QZkXrIjVPak
[S,UlmX!BlEH+%!0lDCTl3BYp1lcLahJVVT6F1U"f81G$)Cj(0FK+ffZ5aCYGm"[
U*Y!6P"H#4b-ZkRN5K5l)VjR(K`2DFA1,frCI+MM5$KS*Mc4A`JB3*(HL+",kY5a
%JNYL`ZC!5DJ#2qSk#eFDEY9&EaVZllfqJNqhj*UqV)#c[Ml6($%`d4*1PG9mUiJ
(A&G'4'eCS"*XM!-(Pbjrk2[U4(YI8VmfY4BkU3jU',q'cP1P5Y'Amf@-,mGAZPA
2&q@L,`qr'lC0&AZPQZjkJ0bAGF4BI$9m%#4@RlN6"0+AMBL$dTH!ELf2qPDY@1h
VBfa$9YH"ELP'!#TfQh9JA#kcb("l!$8&)SbP1HD4GNKlZNQLh"Y4M*rf*h(4dQc
%+@h-f5dUlPC3!Z,NcIlKK-f0000hcF0hUb5'bp$)hkX6IH#4!h[-Q*REHf'UQI3
F#&Bkehr*'f!G-fI"#b1),HXY63kDcdqZYYChGPQKfZX(ZC,8@VkrQ!eQS1bmBGa
XP0`hfl(l*0@Fdledi4RHhD8'FT-9-H#'9M1I@cr0Q-k*E@',5Z"a#Pr[ETJ2ST0
&9j(0E-irECL9LH!)B,hIF3XPr86#0-Hk0LB(CJ)D1+2r#fe2-cP6GVhp50A0B5)
[FRAe%JR1[Pq2m8b'mVV)PF'5crS,"GrG#3+QeGATbI6C%qA4k0i))MKqH4K&hkP
MZ9DI@KaYr@Rr,@f4,L-Jbhdr"El5k$Y)UbX3IQ*(qp+m!Mm%R(r3I,b,klP9&BF
,kINdKSFq%TmSVbLJ6Ebd)N8!jr4VX4jAK+lEff(TdbmFMII4,lHVQi+pTV@%A1E
j1c*r!lp,PmC#jm'[mqd0XHA8cpHJ5rIqc8S39Hm$JAM"@id'$`KVNJlHk"TR$`#
Emlal%L#F3B,Kfpff[3d$ZhRZ2'q)32`dfQRdV`m+,6N9Ta`+F+6,h3J"8IM&Jpk
2T,NXV38YYH5+qRX&Q`#$5'5'K%`eh0p1X(9i%1C9mKk@`djKpU+`$b8N-YjV$eF
-Bh#R1f3a$%q43QdiG9`&MYZ'G2!RB5GiTUI,Ib@CkFHViFDr!5ESRV+rk)#H2dU
L2R-Q&VB4L%d*#i'GRSfD8IA%A*!!4S$Gf@#FD[ZrSAHeA@Y426dS!eUXJYKEh`L
!XZSS0qE3KPSQfeFr!kZ5NM#cXGmZXPSc@QTpXAGX1EDlL,@3!&T`K)Y1)Y4I49$
F#Ji#fGU)@Q#0k!U!CDKfIf+fRpIqT)#1&)[(D,ZIM[kPJ%$a[J@2"[,G'%FK)ij
b`8f8'rPNV8YU6aeAeZm''"aH8mj+$6mRDBBjQ54ic3A"JR-)R[#i3N05a)Qm*@d
TqJfJ9J,'FbIL4,'jYP-,iZ%9%+KHDM"df`%4*pHfd,Z6lm)r*i!HdAN8*-6JU`J
NiIS9@#8U$'[q*rl$$UeX`CDhU3%PT9'H#XId5%Np)HMfa,YFJi0HMJdA8K`Z-H3
Cb(Aqj1,4'`q"kB1)5D+Tj`C8-5CDJBLdLVE[8I$MhBeF0,KcFmK8(jh-D+[pp*k
V5E84QAUZhPL%!Qp0PJ!&M6292'35j"b%cTJ%d4@)Y@A*+1@HTd'5$XR",k)d5d$
MkYrm5AA[b`Q%)(p,099'`T)b-TNq6b8q&k%VV5MIV!+fj+(pZ4qC!a,[#NT!YC0
$P$L(VUU!$JNK%e-)EID$`$iYi49Y)D0N'f*LkbZf&46fKNYYCB-98R$*ULYkm"9
jN4`f@dXHfYq8IID`AceFF2KXV6!YkfhfJcC5-,!9aR"+3G0JV06VID'5N`jJF+-
VG4V4&3kK5CX%'Uc`kkfKH,31'NR`lrqXaHX1S8P`UKUpm!lNcCQVkkRH&AQK-L!
1##(fdGB)9B-9QZ5I+!lcH'a6HFCI&3Mf53eXTF[i&IkZI"2V##'fDI"Jbi2$P-T
LkC0'8*Yq%C-Kl21dYm3(Mh!il,8e8)("D-5BCH",$h5Y@ER9m0q8hj[eV#!R,d'
UHD%6eI9-Mkcfd)1ka9)aHYrbH%DZA+Ym#!KC*Ef@TUa@Jm#qLb[dfh9pT4UXK3D
+-L3'e10!NeH*8bNDDI$FcYj4Z8aGNph64B1@B$MX&G)q"qK'QA9RIfN'4qIPkT8
9K2Ij"Sfmelm#XcZ"VYbl!q+cYlY)+6j$BI(ETpI4*iD,9(B0SXA128BMbN095E2
9mpLlYV*&Pd36@Dde#Qedc'-V,M-pZidHir'Y,Vl&D3`kR+,4Rd`&-DA@h,bXRGH
pRG$@!809Ned-5KKmBNi0ah+3!'VK8@amF)'ajA6KR)N!HIAdZieeZ#+S+[-l,Ad
@XM-,'T!!Mk#mN!#UL,adc'Hb5G)HIR(#-J8bRL'4GkC*kqEGQc$YE-VK1@`GJm3
F#lj*A,@ZHc%VUIZ!hjMETY8eMYKIha1apF#Z6TfX6#Pdda+)!Bf*2C`UMaq2fLG
hR#VAmAJFiGdF`-G2jAbE#a#JHI!@G1"&*$9B%GcE3!C4&`b6BedJlG0+K2C1TS(
K[Pqh%AGLHJBAC*B53d0r$H+3!03h6,TGldSN6!KZCrib'hP`f,*HP2(fQ3KCF5U
HUB*V3-'p1Z`0mL,rRDZKGl6e"h$!`43c#YS5a44bF-Rj"h`&FId(!aA&EbTi6Ld
S#FMF`qJHeRZeF)@+m-DNa!2X,YIiAAPjYl)[aEiCdqI6iSfiYK'BTpd-ifk@[96
8Qi)2iAP+kIIc-l&Zq)L9Gr&[FFNc"FPf0EjPZ(f'aA9DEL69p,cIPREbh9NKG0e
qkElc&hcG9MBQTelS$hJ,'lM(Rm[,Z,LIRm[,Z,LIRm[,Z,LIRm[,Z,LIRm[,Z"b
IG(e(UVfYl!8X5$0l`ZSVVU*V)&4`h`I5rXk@11jcY0%cVGp1U9ZJ+0aF02KH9Yj
EYX%2CqqBUeHI*3&KBI-XArE%YVM6,hjPETfj[lq)@X$V36-m98ZZma`F-Xb2"PI
HV3lRSY(hB56L#5+V,b'TLDJ[Kd#iU3US"hi@[&DM4$-#4)L&f+ed-[rZ+Vb86iQ
eZPJc!j-3#FK!!4#j#%piNG5l(CK,eLh(Z'',ZJ8fE9YUjA4QaD3i9IcL[pN3H)Q
["m[Y`NlEdG8*5FE95d+[m6ji4l-HLVN&(UcF*DMIm%Ra6ej(mM6,URArR6SpUC+
$2Ee%28,SC#afi-*B*S0B)Ec#Id(6lXDFJEd)XYT0-U$&dLaSh8!cHZLCZqdp"Tj
D4NJ(Xp&N+'VZJ%j$VjUpJl)+4@!dmq,l*P!DFpRf*J0qEKc1d5%mq1"5@A3VQe9
$19kk2BV-!%Pej'qGfM62qm"fTe9Q!DBIl-ep9rpd"#$YF5"Q)&%Z"K"cmj**T&%
h[hCM1RDe%j-!2PLX4K0djp!(c1`2c@jhDRA'HDe0@"bM0N4e5G39ZeiYbbDSr6q
4eaF6X)*REKZ#3B0ML3$fp`bi-P5rZbm9rdm2ab3HQ`KcS$pG9I(ZX*GBTH9KH6d
P3ZNUE"c0*JMN8J1'Z2MST@D,Mm*c)'3Fl3(Ih@N+09BrAY+dS*4V+8P%Zh4Hb@E
dbIP,m$4DkMIb1ZFN6kM1UGSp*I+%CV!5#iYAV!3ZG&kdZ"1")&%6pbM'&fE8q@#
$2b9PrcV6)4T"D(E!bf1FIF9$A',0PS)+qChDK(m&b!KY*-`m[5!ZPMaif`-lJAX
,@%3hMmMqQ68Dh9A&h)pcV#1E*KEYk)4QAJ4!Za22FbET#pek`V+bK-+)K%dLj"$
$5(l&fL!djUekTcVPG4MXrpVFTbL1MJNU5C!!KXLR$YH$p'8#%)T`8,Z56kA&f`(
Gp!LQbr`$k$Id-D)F,(0,UM6#TEVa14+N!8eeQP4kJ4"BASmpU`LQ!i(NiRke[I*
PepLRJcB3-6-E2Jf$L!"m#E)m`Zi6(*5H8IFf)K+D&hYD3(628J2XGqQTV,'V(Lc
r+[Fj@FN4mVD[8p3#FCZ)cQJNi8CCcF+LB+f#B5BFff5F-[VIa"-%$9!4%K`Mhh8
j9N6iiJH#elBqSk4'+r+Yk*LRI)kXFN)UJdB80@"'9UqHK`P%DQFEK[cS'p'K'1i
j#r!a'IecpDm5H90lSA'`%([i"MSH69QX#rE(qPKLr)*hl+l6Rc$k-FZI+-JTd!(
DI`UMfmPVaFpBX#C(FjKEC+2(%L0@jBcQS0JQ#3M9+T@HfVXUalU3!%E$cAjidU@
Lfh!U[B,f+(EcDhK8I5%fqQHe55NYQ)16B3jJkFNH!JLS,QfFKGbiR[10+,p6(mL
fI@L[K3,"9CN5%3T4E6*[60!K3HFpf3e33GehU2)(V8f0M%fFHb'R164JYpNFhC4
Jrb2B#adE'$'!c$3FFVAS(&%kHrAN31mire5+ABMah&%aj"rQDp9kiGB,k3[YH5b
-T%@16a$-eBJbT*CQ'djbdJYc4L[3[G*8#V-KUCFrRieNX4F"Sp@Hr6qSB*!!2NJ
IJ`mSGVTpK43a0CbF!dBV8qr+IKX!6(B`#1RhrM,823*d%$%#ihD,[R&PmEXL4TG
JGh2ACGPlYAFGDNldQIej#+A(@)mZ$h2"'!mE2KJ2I93,41mHrjJPTq'@crQRjP-
KB%dr4a1YblN8qABlae%)IPMC"&4S5CSPERqM6Rh0HT0+dM+ST$"`PJaLY32SBUM
+!rC*KKaq1d+VbTR`c`%6l4L$+HDHDH,d@1fmSM)b`ad%0YQldCT8A$@LCrl&RY#
Z8p[5(pqmjdbiSVi6eF0+*LR`q!a6Arp)82QjXXH$N!#4e3p$YmkGQ&H4V0QBMEj
f5U$[rQDD"VT8J51UreC8[qJ6Eq08"@C"cKB)Lh+bc8!Kl2fTkCK6#HdfBE0aqA*
A&TGdDYp,(XT+d,f*G[@Vp`dl@Ub#+ChJNE#Tr4b2k$VV8cm5P6`a+R+6N!#3!*!
!$5T$62HG0S@3!"K[36`F0I8'l+BY1cRM)U#Nr*QPe4BZG"`)U2MX*NiVj"C#ZR0
d&[1`RkQMl6*qKkh,+"V8"8bFZAUi"q"dH5Ipecdi0PK)RH9q$3EK5+I6"Nf8a&9
+k,0E8!b9[ihC,8qe,495%+j'IZaCHiDk%d31rV3CI5C"V!fE0@"0#&VeeRk*CEX
T1h8UiY"$G8M@*J9d8Sr'3L9l"G$8k`1"0%&L9mcm")jqYiXbj'G9lmpfV-94&64
)PXrZ+#EJPe`$&QYT[@K9cf&YBL`XX4r*%A+F!$2mpCq'TK'DTZAB$A$&YFLQjBZ
V9I6eb-B4M@N$id-j9JBX5Pi4&q4iK#kBr$I'049D3R-,D`G!+N6k8fUCFNDG+LV
961(ZMTfXKbS4,[RU[K1T0fbA+H89`N[h#`A&VX[mK*%%Xk9+AVpdT3ki6$8PThG
`Q-dTmIDBaRe-8XHKR-0Q'@Z)$6@faTVM2S8&1M25GJNX#CI[MN+8$L&KXVcNpC%
,MHd%IMG[8VUS*&%5qP2'cD0m0Zl`lC,E@8j`iqqc&i,VYLrp4V#)6MBXlESbHCd
%H,c9k&9HYQK"NlQA&dPjAmf9)e0K0ZMif@TU4`RTXl'lp%ZkL"j5BCijF-ISZTH
D(MI6U2e"L90p,!#F+MDpfeepHRfZ81BcPKc4h"&aKC*T"6mc)H#FA55"TM"qe@!
4%p'3!"9RAm!bkfq[#$',T4A"M-LAXeFKd"5QR3CSLb2FbLe*FUqEAl158,dkC6+
'`YB'`VI)lFqk86L9N!#p("6R$c!HElC6hH9#AP!C[51%2&j6D")dSiqM('crMU*
J['2m%+K$lDdAUrM`jh5CRQGTck-ZE((jXUE2IINZUki(SKj"-P)M8Jqm9*l[j-K
8(m5F@jV#G1imc5)%6qT3"H5EB98NJj,Rl9cEbZ2cPZC+4rXBddD+aK+Y%fZC6+b
[Em8bEPb9`V1)ihVf1"NFN!"ar1Rj,'+6J52eNQ&C2E'(5q`#U5,JS`-dGZ9&UZm
%EA%jTGR)%)8eC1NK1"Q3!&,r+FcFi*'-[Cl,59r&4LqYlF%r%XG+Frpjc,U!j#&
(C1,"&!KLpU)9GTakK8HHRq4RJSSS'kTjRj5ZM'l-EY91kT'F),$$jC)A)-FB4df
b[Xf@"I1rI5,iN`QbI4LLjbKiL31qBriLeaCjNX[`CjlSiISbfZ0$jR1MQKlPDJh
U%JJYF3FiBrcYIrqfPAR+rDKkmjALEeCA6GbaI%2l#Uf2a"FPIVQYK%XP0A92#3q
Lj$V66fHM#V$EThK2k%YAX1'#RfqUL2,V(),Z4rE+S9"dAXVZS&N-p1FLe9)M8Y"
'-l4eKK+q8'@534`S,8Z5,lhd*4peZDe`lD%q!de@)j)S(%12j)qjV-cYe06dDIm
j%#@QE"0d*4bC%+CG4Lp6'pE,%`1,D[GBQkC%a2NJ1kSPpDbQ&Qc(iQi%Tm@$DfZ
RG`Y[9Y+9XhljAq)Z,f#dDlP8Y'RKVjl"UQ@9`)Pq6(Q)EUrPh`HE+eR8L,dEQ-b
r%)[pcLG(%)p&6lFp+-FqjTSQ6&C5%2BNTGh'Je2PLc+B%#Tei[bdcR5#IK2,H3e
'B@(0p,LJN64ZBj`!lQaRFk"H1kZJ"d!BJ3)+EJa+mqP6JHr'i)k6-HpcfDYb@Dh
HTpYfSS`"8$kl"*iIc3*e)3lMSY*S@*!!pclRJ3''`%Tiqc$4N`+bp$!ffI)SAI&
1"mL[0X5Kq2NG)FJ5+IqVaTIFK2*"M!'#BXeq+YPUE9dY1lS%`JbjHQP#)q$qDkM
2IdE`+JT'ibUZBZ2[3!FakC!!c'-XMQkjA@VDbM!-&@T+qm-I&qIaU[N#*,YMTfr
LDrI$8,R8j(BZm,`XlXTCS',#U`pFdkcGlUYASf--UDKG+-6RG08@[2TR$(LFeaB
bb$AKZJd1k%X38V%,c#"PMZ8f@H@@K+Q&f4q1c#YMaS-VCbZ$rPqcDQl*&qLP0le
)!!1JN5&*#$SPie@eVdfkB8LCFJFHdl-fFLmLLBS'Sk62U0dd+-8XPSVhbV@H`IN
@,JZSKG(HL2K+cIc[jJ-@LM(BbX!kLPFXq$4pNSa&#ELp5k"F`+9e[aL+rE`HAa@
h%aZbZaF)*9VS,F4IEZJ0l#`%9&A*#A0P4%3RrM&DIQDY-%r'rjH54M[%mZBA@pc
93k"EkiTK%K!XrU-SljHXTIZA[5j208dQI8F0Nj2q)c#A+&+hr5MERmXa3$(-pR1
100ZcderlTUK8YVa#hDk`%,VaCT!!Ij2q"5)*A`2&P2+Ij0jj&rkhlh4iU*i%P)A
l2hDPbM1Y$NEj,#fMD+Vdii"59[CV8p3QqGPBaaZrD$LR8@E(MGTAEp[bQ@LF!'K
SjJ"SU49MQNKNmk4X3)8lY@*+mV#`jl1f!P6r%IYIVPL&N!!28FVL()PrR`Lb&YU
R66+q,%Vh)mN-%L2*$3*$$[FM0PX1d91&*GNfS!0NKG1jBN6m$lKk"0dA"`fG*-4
4AqkFKiU'F5iDKeUX4'@4f9"!2,PF'h6VlZ'CbdE+jC`!pHAQJI@ckfi`jFK5!5C
4l`6lR-1@$c9,qPBc2-ep4rCr!2qA(l8%J&Y6SHV0FDHL&rJhP%h`-EX`1R+q@LS
0!94i0RGh6`rSQ3@QkFidR!$P01D"jE,!P,*C"LM!HD#(Uc,L)Lkj3B(qGbSiPbQ
[9bU[m!GXer+[hrhRY,MKMd[d+)*,$KL#q3fQiGK(d8ZrqFRUiUNlH+",N!"')S[
h)T%-22Nc#RY[U1QGI&PpCJ,%UBfVrA2rqSTH%kFlCr,AQ1E2SXQ#Y`"G'LMh6E8
&RpHBJ'4p$U6!1r-I1!QC(G3Hm$BIlfQ,Qp3b4bN$&d(QXa3@jB!U'-3BR#X`'+0
,!@%CAl2ASmDZMN0dMVR3Nd1#KB)SJS8C#m"@(JqSQ,R(Ub8(%9rFT60`K5mIip"
@06PFjCMi*iYMT9$J,e'BZ)Ee-kd6Ja+S*)DZi)*Q6Kh!"`qXZSlPQITICP6&Fqd
e0pB+4[$@VN,`QG1!6h*m%3ZUQD1(kr4[R9h`+lb0fR"&D3QcG2@jG+Mm8M0DT-Y
+@8)8GkX[A&mAApF9dr-Y&G2KIXkQE0LqG5l($jfN[SX@dbD00[j0%FEhF$I-*D,
&AiC#rcBLK%m[Kb'kjT5LMT[rE-qUN!!r36kQbe$,I)1+qP-*HBa6#6KaS9#ZI[-
6UcHLMAdPTdCmHj2$Z6e6X34)0aSQI@m@4bfZFSSEhjPdRd1,$&"DEG2-qIm,i0R
GB+bN+GJV,k"[Q"T6*SG-2-fP1"(alR!&$fYKrT%h")$SUVMMe9aPNGA@Aj(X5MI
Kr%FF5`IB5c!hkXiX$l10a"Gh`!8&d8ZDTbB61+4hK`D9Kl!AK*!!2V6X#Ie8fKE
kF6J1TNHI#U*X'#Upm8h)AT6k!&MJM!"BX[S!@*%!5XJR`Aa)"B3)FcpUk@MFLK1
0caM(P1)!AQ4'h,j0iAC-%GR[0CF@$`(m5QM!cVH`8#-(crq@ip%`d[k&RV!ZZ0(
d$lpLkGSbN!"#Hr0eV0MV4lp!%Gk8GUYqJFHP0PI)+@NNL'H3!0+Hd)bk[NlG"ia
YDDfAVGpPBlVYiH%6LaQ0%i[##NNCFdMUprVe61mGG"de02E4Slb6`fVQK)NH@aj
SDd@NJa0I+[9fS6$lZ8Y`m+QGC"mqQPqm'0SHaXmBqTEq$-hCE[&MKFHk0&BkKl*
K9qlm$pI@1Z+rRc1Le6BQ[m#fj(`R4MrkKNHEHl[hM*lQcFeDl1PC!+%mURmZ5ie
e*8hZ-Eq8R%B$P1BD!l2VEUAPFbMSER[Q-6BQ9`@U[(TpSa,X`G[#6+Lf6bLCRb-
prPSR9pI[mS,LYH)(SG*KGIkPVCYK`#hA8-"Rd9"Y@6r+9da!a0aY'JmNqU,%9[R
i4K&2-HE)DASaTRCK)!)cZ4$ekKq*MJjJid)BD-*QYMdYqQleF8fe8iJhLdGf%Up
)RcaIfhBS%UC2mQd6DmYhImJZAj0dNXL*jPHi*L3r1B*fq,DU[+Ma('eN0FM[pJZ
f8*!!3D)ZK(@'[9c+Z`Qj#"D$5HX-Q"Dpmf*jMd)rAT9ehjh1XH[ak-fj'*Le@iJ
c3U(51#&5P8-fTj*GAYA92dj(KIB)9B2Q2kN5NPbN1DI`S80b'0Mi-+Ic1CdI#+(
ZD-U9ViZZ+*CMqZj,PYjM3Na5rINGPJD$MYlhq#faX*56lMiKX$!HBmS$IJ+XDN-
2rq'0N!$r'8k3!*J0F@5bErMLRTJPK8+,pmiXP!HEY5-$4IFPZpiPNaB4rIYRr[N
CiN0Rr[NCiN0RrUE3qmiSeU"3*c4Df'Hj*6ff)MC8PiY[SIFEhb,9[lp'RbQ[mlh
+P$bA1MDGek#+,GIjLQIEq9!H[S+b)lbCf%a8Fm3DY1,G$h(FePVbI&"I@Bc$kIh
&Hf*q8XQ,c$kTZZ5`#UiCJqGlj8TF[`,l"AJrV1J-aLN-Q9K6!",M-4Qqi)4XE'R
11D6Ja#X19`!Q`P%hLD8Yer)rCpGV2p2%@QbX1mqaFI8N%(!h18[J[TFd$"Nf!`D
$KmF3@bM3-"Nq`@6LGFNViXMj)BQmdpp2VN*,VrSCh6[Ep5Ef9!H+VM&"Q@i)V@E
!*ddS@HC+-0#H1@4m`pBhjV+&%P4RNP*2X`Lcf0Nc6(FZ(F5Ri#,ikep#EdNYVTk
9%LiHp'S5F#*6cp,S2FaP*E@RcM$f5J3MpJb)$QIK48KZdmFMI@I0BddIFTM(q*&
AI@&`Nc9R'lG42N'k,-GrllTAq5PBhTP3MES3#Ef%(U#XapH)TdV,XeI(3j)"AKp
J%%E,3SX'B55Z"1BRHi6TX&aRE881EV+-Br3cjk+bTkq,4lC58aFr`UNXBhE-l@l
SqTRSdE)HKMBdhGh863a+cJjPmqIV4Q6V5!,6(p-&!PJp(596db%%XqJ'@j6'0lh
3Abr"FUP!m#c-TbS$i$3a-S-@H4qIl[cr-U8c5kR!BqZI%m@TkbB[hHZa#Um9'AX
Nm-!m*l"R,'5lG@%SJf',$EIKRRS9'4(CaZ5K[#AbX$kqRQMHiAd!'$@'CfmUG#2
ZCBrpYHMGZKp6ZB$iQ#$KX)A5[b0lYL80KG+G)dIhe1MJ0Hq6$#H0(XV)RYUfM(l
'Dcp-[PJNp!rBY+DFdQp%KV4b(@5!RJ%1Z2(XCAdqGJUeq"+'[,S$&$II3D"kEEj
&@H0*KBhmbNe(@#5LjcrImcmNhe3PDPq`*64DBmQIe+QC)QmPQ'aK+iZMAfjp1I*
QmCfEII1XZbl*GJ#qBhK#`5-J@rrI`KR4p%Y##&&Gf,"K[Sf`jLIHD"@HEfk5jD3
0'&BIEk`KEdjJQ+15QSZc(rpVC+%Jh9h&"3RY19M)apVkcK@8M@%b5*9Y)f4EcZ0
X@(&j)c,['59NQ)"0pjII``bl+T)#Lh3H,FGqFh8fE8S+8&Y!Hb6M%,@&i89(ELh
PhrrGiF"L4djJQ!RpQS+b`aY*`AqZ8%kMVl0HK*(X)iXEL)eachSJ-&ZGBcm6'ia
0I(PdRGiCjrH[K-GFi0kX`HFPE!T,f`5A,2h#UB6k0`2KI"Ip)+M&VGpQS!94HZ#
(cSje5)iN@32Q6L%p3hkC,i2[i(FZP0HMLPefL*BfbSL3!0hY"a6qGAYTR*4l8!Y
@M(A,N8fl"MC-q0'6MJ2bAIil%Pr8e846VpbM`*&Dp(SQcqJ14$pe01dA0#AlY($
XjTB`"I839J,m"d%H2k)BJC2dliKl$[lD(Bc3+[c`r$[4N91CJ*4X)@"G1UH6+@R
V6L4d#UCqIBP6+,d5`)9bd#c@V$L-H5GTVR3c"SB(mTr,8@UUZb0RE!8Ed(K#`82
SV2Z@q,[qLT+I[ar$Z1ZNmmA)MAH'@mCSqJUX0hcj-1S4q5YBHcaUe5"9VDNJip#
8*[r'848pX112DU&!D0JKhmZkiNF4fAUI!4pllJK2qXL!f`mjX&&4hl"KaZ+#0X2
DK@kTGbReTH+'ACMNJ#X[%&!HV@)[C$0%IS-hV!3VNTR0lcLUejY"CCP"0"6ZIUk
MhMHNq@`b$`9QRc)`iJFJiemaT5LN3E!kFM&T9m@$3LY4k6X0,dL-hIlYq6E`YU@
8qQ(Q5)eY(KQd*i1fTGPM#j4Nf3'm5f1,Yh)+qCSp,Dh+"+d2MabIY%Rmh(1$UhQ
`F%EYUH)2KTL+R1hd(@ip6)RRd-D5`0M$ebQ9!ZQId0bY'1!h1-Hkl(HGijDMdr6
@-++jJ2+eKqZdqMCb*BeKQJk3!'hc$DlKHdFF5bMcN!!C)5Z4fMjMJKdR&mQrNl[
NkI+e6UUPbj3C!Tr14"4RreEB#K2ih,5T)#cBq-46dX1,kCaNMeAh8%@fF!0b8BS
MU)k0dFG0mAdHAp#2Sq[ZQ`Z(3eMMUXZMJY5B6lZF4B,42XVMUS0q5b6d2k@m91J
G@q(rlH0!4A(djcA1[%Xe#mKd5NSUk5`bRS[$CEb$ITeG8T)%fD0"X9''@%mlQ(8
e[Bd*8@LA@m1&0laZ*&ZXTrT1l1J#S@Q9hhQHU@,-[EDJI35FrMTC1$5,F`VLmka
lKp4%K++,Q*Ka[V,'p59`*I*(bPpNSZ[j@0pS#Xq#I-HaMRJR9TVif3C*!@*IIG8
e#I5Mrca#Xj24)8UJUP5L1`-SF*CFXq1!#F+TG!Z'D6#SG883)*iqMI)K08FHa&j
G3bc42,HEX2Z&#V*lF,@FABBrEUi0LjMEHXbRelM@FK,(E@)BZ0AjUdX,3pX"#jZ
IIpY''*%$@@,cL8B"ZRMZ0(qNEr('`NL*P6Kd'jJ(1K2q2DZ$4p$TqXKPFdh0-ch
FG%,b+C!!phm4SYkJ%H[2S-q#355YhlUN%6$k33)eaZf'AK6%KS)F1-K80L"C[PV
)l9+aa[0Uk9NQi@rXYGbpZ9AK@D8VU6HTqb%14UaLT$d'iL*m+*G%3HkZ0I28p[M
85,RrFMj"[0q%D*,4)K``-HJY(Ub@Zd3eH(kR`"$a-b+A!E@a`PfLc[BCkplf'B6
FVd!N9+MN4m0N2`Fc&J)'biDVZUR-+Q6G"RT&C%kD%*ICPRXkEJ&FiDCc-,,C*fq
A0G%`!MPF%421Kl6LhM#dViJ`E4XZ&mf0eSdi`5NFHBG)K))5@3dL[M#S`J4qa)3
6c'hjGN*8m5#iT[PUk4ARS8CPjaT'9i)DBkX#2Km%jK*DbK5F[l+2H#9AE@'R`1(
crc&B6TG[NaAP[DlAA)ShGj!!TC2(pL'fSVGhjfV#*1rj%#c2XSUPhIpTd&bi10k
J@-0JPKCdf)#(I),))IFi6-d@j'3X$i(@a2$%XpMH(lf4,j*+FY+QVSXELHP52"T
Y$+l1KFT9l+fk!(mhU8Fq8*lLcf*m(p[BPLG%ah9ZV,VKLImk3""BI9irrr4mlYk
GbcTiDfZ&Gm94"AI##PC,0'JRkmQF*hR*jLGjb6bSHBqiU8R9M2Vr(Ec6&`JfD$*
Q0&,X$4(VrP$`39RGjp+YfdQ22cmC'XXeILEVZ'UR[-[SS+8JRY@8SrriSX5M$dr
!c"KL[,J`JU4mN`dpYpI5ZJ+[D5RQ"C[hVX"rc)VfalbibZ8R!&IZQ"&b06,AZp-
!dQKMYeFQUZ*hFb#('ZPK*,hTHa5p@+XQASLFU"FK4ZK()pdcF`[5MQIpjmDCF+)
4,`HRQc,3SZ,+ElaATd9Uri58(l+FV6(-SHF4@G')3A$TFJmH%UJUkSAN)CY#1YH
P!Ck1lZXq8[PV"qR@+H@Y1M#hmVZNkQq9[VQ4L",f1p+'SSkm"1[H[!6LcimT-ql
EpM5kTZVll,Z&1rPA$!!M%alpcGE"ad42jmUPc@JP9XBi2!DMNCCh4+Z)S-1+Y[3
!e)SYLMH%@chS3j9&SiBF"*@4`0iRfH4fBHY-h%IVlbB*Y&@X&aG9N4)V[a@-jcc
2[5cBd(kC%pIcVc!Hfr$*(PbHmIDdp-EV8c4h5D(Z6Ri1j24@'D&i9'Z'a-kADD,
HS'RVY+"GerL#Sb0hS02iEm[9"H&)I`#VJ&PVJ[f5VYQbbTmlXr)H8@DdUEU(,-9
5+"VEB&el%4if@J$P(cfK6$U0plC[Yi!b%4BXq04aKjYDD)rh5pSM5NHJT`cHS+I
RV%q#Mb2,@il(0l"+4MBMA$dG,KfaR3SE8B4Xaj*3iImHK"RQXqfZ91!D#'JBCXR
X18bZQQ638LTp*@"EQ0hVrXq'"ij+B8S5S'%-N!#J5Yk,elIL+rPiQB3#H6VYI*%
4U2D(hJ&+9je8bZ*31rG*6ZSh#,I3p8%3HcHUXrUKj*`ahl1N!a4D2ML"`Pqik2Q
kFrZLYSFI'MfaQ%U3!$dEdV0pa3ilbV2cBBljrC*',!Tr'K(m!ddIBh!k4Yikp)U
h4kTZ%'p-j[`G$Qa[#l5'$&N@Ak`qAe'HKmff*383DVkY'pPqIf+DM''(pBalrr9
Re)cRMB)q)i&YE`fqV)6-5SleIl02k#e*CLR+d'Ka5SQP29'fckU(l1'CQ&TE*&j
&X3ifa-qkB5iQ+Bf!c5JTfmIE@*Zi4raHiK*fAUqXGX1%aqR(IRG#dFFmM-1,kIX
ka1Rmaq`BdGHh3XFBY)c0DPq3!*klGi%3M%9FKqSEeSIU'i,dBZ6TI90e@ETR5N4
0,dfV"q'S'ZicBH5[YMYZXM#E9!-MjNdHphhNR52($PbY56Zcq-Gq$YV-D!R[6'`
j*eT&!VRIaIVFJ`4`[*ZbP*l$qEmL-MdVm!Q[iIFH5@jSrE42AG)8DNL(`l-mLY5
lCi#5"4&'DUl#92HkZbrqYD9M-0K9,BVR$JcEY%6BqZAphrrQcG`VBF@T8icX,Xp
-JRe-I+8-SNXSPjB9Gmql*9KH`r$JVTLKT0QCMUQhf,9'ND,'Ml%ac@"%1c,PGF`
cSGbEq30[ZkA`dprE1KD&#%(%!T2lFHH0dAQa9E`1EhUKj'bQEXZ@V"4l)0p"r0F
&42NLeKh,q9r)@@qN2TDd9,5@ejDFB46Q$ZiE&j!!8-eQ"%f'1J'j(b(002e96I'
Ka-$HZG++alk&al8KRBPjf!j"**E$XVR(S,&DQL2(!G#6UQGj0CdC5UaKhZq6M!q
6d5lMZ`NDik"cpFhd`3"D)Tm@hKSV&c9Ihm3NNHYQ#XBDH10%EE#CQ,'S4@+d9hE
Sk+mZ*kJ&IK3dPlif8c'rIL8Br@B%(TNXr6US9,PU09388C5NGIhImkIpTrEdcS,
k&)H-a9hY[MfblXZ04PBh`CVS3830i1UM[Z(2ZYiX0JmH5I89d*9f95aSGa)@RJq
!KU*V$UL@dZ2!V-SU2#N@*$!XKp)jpf'(8[Glp&*q+fQI1c4mIR`QL0dYL5AEiIH
!G!#J-e(h,D"'-Y")L2!iTd8JFUKk8Aj(,,2kBFSBh5k`"drjk(3#RI*UCS0U4M@
4SA$q2`2L(FYX65M#eRYh113-M)bdF*+AJFJir%58RE)p1[*#)[b!,,i-A58NDhQ
JFYQC$X3)(%Lq0kP*cL$$C+!"[c%XAe2RM4GI%D'0V&f-E(f#MH[H[1Fp0PH&U4)
00[N2K6dUp@0laa$Za'V6*8JCP`T0X,&je`"X-I4$[8ZDYIV34)Efe(BKaRihlk"
3(p[$bVep9$cR!B")8$ZHL@qe49C%TedqkK3qCV50aJCZc`T18F3Cd[akBN21T*(
69Z%(2pJphABpRiEaD,L4R[I#Glp"*UCerKE#hXrhL9k!5m@lU5*&fJiAb3IKpGL
`GM9TL&db+(iTbHDdaM+hr-GPP6qG!J[&k&,MAXF@i#Rb*RQ(Vk41j02QDV-F+rE
bUk8Pj#Em+@(b!MN2iG!a2eFN0UdN)8&F#BapM$,dJ32fr6hC@M)9-9AEl4"(PhZ
"UAbqX0SN-RkC+[%Ehk`H,rHMbERl%(H9NZQV9Zf2DV!3-`-(`KND`ViP)VGmiMJ
&mA,T'&MK$"FTeEHmaTF8!pcjbh5"X00i*hAV&f"m[4Jjm9M041jCr-4b5PVDd6c
@RiJrH+JkaU`jV$NbJBa!NEM#kFph#24c`T4L2bHr+402*RMCiLm%*LDT-3-!5bD
Rl3)Z1,)3qT!!PkD$DNRA`$Na*LDIKN&5IX)U6h[QQV4N-UXk0K63#5U0+3p!GCT
!Ldh98'VGaM*rGh-Pfqa$Fq!,2M(R%A$PZ9`D86`16(dd&Ai-Rf*8$AiEp5fbD`!
BhamjA9+HN9T1PR%RD5P@6(B,ICDB+B"l[f`eUa[NYZLm(DDM)+&CSGVic3$4qdQ
dcEiBfK'&81fpk6M'12*SPZ5DG"5m4c%,k-Q9pp[XlC*G9DJYmi[6`9$+%DSHFac
N5G!ErDc2@pY0Y*fcF`b&6CfG4@I`3&R+#LSjf'TX[-Sb9K#43*9fp-Kc'[Z(8$9
hmBIA9#"6)(4N+ANP8l#EkSqE0CqPRUYV+Mdm18G#bqQlE32SHViK2pJeE88jr8P
b`c11ZeB3`Z$f-2+[`JQNQ"ID,f#NA4[NpE5*jZi*IKHTECMQPGSiR(@rJpr4#U2
D14CkdlYErClYq9bdRc(Q)4PpQ&f(m)IAPX16"9`2H')(5fSM)RS`32cVG#bTRD3
Q-1fSG@!Jr(cl01X,1YNPZq2b0@PVMR`Pk133hrM,`3X(I9Jcl9J+6X+rMr#(,c5
YJP`jIX5Vk$iQH&0+b'&q*L)d8VPkY!YE6kA`Fd)d*C!!RDafZ,AY!F68i[m6kKj
!3$!E9h9kbGTdKf06I5+imSmaL-A`##%,!Lh,kl1JHi99Ga(fGcLDle3LF1[*3)@
-HFdF3#&-UPa0,dJPBaU[,Tc,dC'j!kK!@Yc642bpIKKNZ!L%d(-P-@EMc(a1IT+
"c58*S'"ADfR-fR$Z-19ee2MA(-hr3PRA'PeE3p-5hPB!LI4*%0Ha#(GdhNI'eQE
AI)RYVrh*3p-a5,m$-*L1lSDI-V6NFQiEhSEp+d,$p4L9ZVT1(i0a83Vci%L6MdK
@rf5`R@plGSm5d"R4D3ZHAN!Pm91GDNDDSajaZdc+8qIQ33Vi@[-N[R(&HUiqSFC
!lE')VQRcl&[EU"&EGBBif'RbaUd(@M9+*03'C2G%d@0&8,dT6mZKCmL%DK-CfqD
PaDZ!06$)VJAcF*N$YA1hhh9UBjrGTEP2-h(Y+e*3Rp$CfK#q%$mJlB(a0VUXJ`D
3!$-38e5$D14%GHXS5BVV+1#BDPMi[94Pq%(05fDa+R"Qp&GbI)G13XcVQr$Ve0B
bKq[8Hk@MHq6"&D%f3B+5CU1kb-k#p5UJ,5-YdT9j!0iCGAade%RJQh69N!#fF@M
rB3F@mjNJH0L@ab)D)lr&lEC*I[(Sk4V*!4`&,hBFFc9FiXG%U`E2m6PbEH5Gl@1
`&`!)S5"NJ*d%`fI2T0j-0E8&1TCHXke@6`cMY1'dab&br)QHBZFQ8efTSjBE(3)
5d0M8*FU6fl"J*[cEd-qXUIhXP5GZK3dH0,UdM1X5!VS8-*X2c-SK3rG5Q#9(kLP
9meNbZE!c@f"ZTH+9NapYY`G5"%5dmaCh&[MI@LY8#3"r2YDDSk*F-r*r#rH'Ca%
#YTC+5kImVZXiYrLl0i9l)IAI`k0H)8KlLUrXap!NK*ME1TEkjmfY[V5VTrMB%f%
*S%5V`(2G42TJEh,Tfc`NA[NF[5aTqkVd$'d(aH$lJVCl#+"EAG#@%6+B&Ic-!(c
J[$qJ5AZ%$mqfmbaV%lkk!Z@m&X6q2B,`f#NTVE"@)0Cp'6ASYmhdpfr&9h3$BmP
pC!&)EQq0aFS1(#jL*qI$Y-($VGA)KVUf"+1TTCZ0f#',pQPeU8`59+q,0GCS,`L
UajbliL,J@C`%dikh$l,4qeXX4*RmZ(#Xhf*XXC@@M88Rd%4lQ2J"hIY-d-Y#AYq
*'b$[iD&Gjl0#!VmHeS!I[4pr&"Xd*k1[2BD4FQ"If)NT#L(Tr5lp'SKM%j!!YqB
#@6)%-Y4PY#$4#21Fd9Q(1J[Rf6-SA@Z@k((9a1X9rE1VG#pQUjeFj6,@[J$leT(
5LhU48bEm$XKe&%GlPdQ5&"1!9ZApe[dI9UE500'UZ'FVY((IPEYjLL$22A8Z#Iq
(GDR,ZJ"q!r[KrTKfkflp)-V&#ER&$cMCq$)pM'GDY--QEYbH*GR,+(*l1p@RZV1
`3GH8FG*C`-m,#9Y[YDR',FIENb&X+JlV1p)Z9McL")k0b0@Yj3SIqh[p&X-1"06
eR!`QKA'%8[-3Qr,S&!k5T*Ge+eaR(-05(QcXXJhG6k`a'R%&b"@Mi,6EiA19LFV
"XbRVLFUYVJ*0K+l08iQZYJ4p(P6cD"'+L4hVX#llhr0PKZ1["h-'B$`dCE*P5Gp
R9,Sm#iBZF%e2SGQ4Jff0#j9m+A2*4R[PN[TCYT!!+%rT+9MjP)*%c-)MXLCmRrk
Erqe2RqlFFb&%,l[(VZ&3Cl-XL+@f5b[1MbF*16r[0"B1H-F9#(0Aa#Rm(E9Jr(F
CRZ9i(b'Q*NhGdchhdK+l(*bE%lq%852aeE(8D2Y[S"k)kC`(qq0rmfPEZQ"Yf"'
%J!K0)eVe9+1E1`5r%B!e+dS%e+kBL&6c[F**VG#A$$GEkcA@1P2$LD`ZPkAC*iS
lM*&#,KV'XeX`SCH[F+RkcP+M3%FMTeKeU%"4E"R&X,$fHcQZRmjS6IX+J+Q*9L-
bdj8+AJ!LL)*!Y0NpX3FCDfTM2LQ#KBeJMURrXpKf"ai@0RZHKT`afl)F!2RVH9T
a+VB!f3BRrV(mim6+9#2ZTlI@mp2k#(+EVi(RY6kMXj'CK4cCM))qLeh$hrAZZZ@
f0i#9#,TkhQI5q"6(Cjk,2,L'd0GJ51MISp(Lp6ZmRN@!QHj-&Q2@"J(echY4U#V
RSlHY2pK$Sjlf9IZp0,NpkXE%"%2j`jI,+%Z$Z&Trj&iZ3Z0)@TfjHIMRY`6Gir4
YHCKAjMLCee5EbRJBcLGl)q9"jRh[3Z`b128CITQk'bBMDaBpf9-"q*9rMEbQ9)@
ZiRND-bZrd,2EP[![Xp[$,R#&e1T!H6*$K`!i[@c)krLbZ!,d8Pr&B5L2qi@REH@
jA%Q)0``#2(!-"A%9a$3e#J*!SC4IiB(4S"@E@bA`NM#9dI#d#0Ar3E$TC`4pT+P
2XhL"VIi+2&)C[T*"L24$9*U-!5&UCJkLmhcDGJ8Jq8[E@CXd&"XJP8F'JYHdG-j
)9FD,+T+0mrFh&#i$#[@CMAd@L%eN-[#&PBB@K&fEm1HFRdFkf2e)dRP&Vaj)ReX
$qkj'2&hilm%5"l1G-+)ETDB*ieC0HXHJ)+@c[,8khf@"iA!D#fX!*2*hi3I6D65
rZ4b5'4hUBJ[*6`GkVGZFZ%5PcBJlCp6kpFjaRCPr9#Z+Y%#LikHZFpckZYjUjXp
T+0PPR&q*0F*G'R6fN!!`MaU+Mq)a-$"Bbe,rBQ9TkGNYA$[Hb#FF3aR#`6#HApG
iV1ckjJ2a*l5T#)R6X(LUJ65DbjJp+3@dKpSI2rNaPNS,&V"eCTV*f@ClRL4Q2QX
E3Dqd3jMqCP,8H,+ShPH&aGbLfV3#jr)@BD@#BpU"PZ'e"TTRrjh8dZqa1ib8r(3
*BK,A,`jL'Z4C%T1NdPQd5Y!"M+hrSD"k8lG3!ABFT3%J++e#b"#p5+E%9EhNrMb
$(49HI'G9$"0i!QM(V%KbGQ@dFVcfD-RJ+-K%RK@aR*JChEK%aAREk32Z4$aH6+%
N2k!VP4qXfB%N6GpD2lLfM$Y!c-*66$HFhp-lrjf&kKiliGkJ4GTB5(@ler$Gm!R
li8kl5[!(R5m*A'T02`Jq*hDH[I*R*BJNfN5Z',+6Nr#MNI1$+KKJ9DKbf"-)+k6
k0YVPFSJ3LfH)&Ff0Nh@!46d%cD`,&1-6,Z0BBP+Lq)h`4rj*-2mmC!KqJa5PH%M
Vd+QarakLNRU$0bQ`6,#KPFCM*R#8q"j($ZR!,qiP9f+U2L,CZ#jJdQEBH*9,(DE
(1P9fPM$G($0b`Y,R%U1G'#KGk0mA`j9["a)26-6flN5['3FkVIET389-i2BFbB-
a$da*)m2E#AV8adGk#%HDHHDVB@4)PR$23c6C(NC)-SRUC10CCm[!llicp9EE93k
p+6qA5H09PrXN)rC-D*ie3HSq!C!!6X1k,GEU!!9SDbmJEHPU[NH`&8lpZ4bD62R
@haIr#FThjG%XV2XNq[GAmq+M-jB#B"Ti[EHApm4%#P,jYL#f(X55%4lB6X38,U,
fc`fQkMlF@#KZ&C!!Kj0lY'FSpL+Ck5"%@%0ZC!Q&eAc4r+a4VQ(,bN2lehE@D!1
RJh4@$EH!N!!a(f&b)@EAlMHQ$i)8h3mRLUc14-1*8B&Mpf-""Aq&I9&3+Dh,I$9
Q-fdamUcLGFUIGkU44b#k,5#T0HDME`'IJNQ9ij!!9Pi+694XGNRaQ8aHQ&&`jKU
5,DRBJhheK3V4XAC[Zq6&k$6a3UKHk&YZEkBmRMM6JZJ[Ii6&MaPjJ!D%+k8Q(Db
Me(`Uh04L`'e*Fp3mYEIb($rQN5$*-0-SE%eEIpqZYC%VKV@&@Ehm`Dr*)G6PGf`
RMKq3!0[B60Y*(9Xlf`bC*!4r'D)IhVkfG1C@RaGEi!eQ"8dJJkaNZ,-bK5#P+Ha
dbbQM+NX$P`HN`HkEQEMp`h0$95+2l4RTT4@ai2C0b4l"*d[3U)I,JGjRi-ekl3j
FjC'q2Jji*GQRFi6SJK8r#jj)PE6'4@5Q64H9*lV"2S*eqBURN[0b+HTRI"eKSEm
Ii'FmNmr*#aT)R#@fA0jeD)b%0DR2`qq'pilI&(%"2rSIP%%[q)MP(EcGY[)ZML3
,ZYECGY3,pArPU2N96FRG*FBYd3E&(Sj1mZJKh49`f%YJJhVS##hfr)0c(!d,lRm
)'ThFf&2*&A!B&Z$PVHGY!RJ6QM,$AmZmaaaQjLkSaCD2d6$l,,S[0AQXq0G0)!j
1DM(epkL@PAd(Q3p9"pFPpUDU!X%*LRl$I1c3f@kKYb*C`d0JFI[NE186bJVm-m-
jGri64[L0*FH-IhC[!q,mIQhf5BiGNeXrRP(9d8`2SaQb3HXk5ND%fqNSFaTq1F,
jX*pB%*9U23[IA#LSI)GBk26cHmQ*4!EPad-ke%IaqYab@XeV@ebIkVV-VpeKXk6
[C2GiEjf6#LeLaEM$62%Yql&MSbr`"%2VKHN%jq)bN!",8@[mX"$,@)6QRG3-*KC
SV0lme(JL9Pj6Cpbe-0h2mcQqCq#ik6r!M5hVZC!!K$cAU'clq@+GZ*!!P)3G`'6
h*QKZe4,d"2&@KChLKiIK22X6"ZkX!l@L#H"Ue@Ih'3q["'+8H#IJ$KdF$H[pi,V
Sr2(NB+D-m"41rD'5@3kX!'iV%*m+e-fU0YN-ha'je!3-KE!k`ASR5*`jQ56Jah0
IcidhP!Fdb[*'YeSbIBV@,rmekHTD8V029Kk&@&Cj%Tr$EI)S3qc`U`6#mA(BhZ1
Df4UEiGU6*aK3Mirk5!1",26EKM-d,BcIG03"cFqdaIX[5fc!0fjl#JL'bbF4R&j
ik)![QMSS0X#X$*PX2[RF64S)%JI!kU$2XDP%ZZa!f+*'k0*#PQ!mkrTD9S`2qp3
1`P2)J+HM!0Bj(JBFH`RhG@6'UAQJXq#,3K4*["fUbFZfSp@JZaeCRUXq3k6`N!#
2HRK0eFldY1-'#i(&))`pDA4N@jeqqfMPG-"1Ujl4PGmcYIXR'dj6Q3h#Z`9G+c#
@$6P2LPiLfY*J[*Mrl4([6B6B3qe4hR$$jJldDK!Z$H"NeB4IDTPbJdd)f!)N,E9
9e9PXciM5b1S1E5SGS9LkSe0AbBh@L*)`d+p5Ab1X+3(iY2")50j-j%dYA2IH-SE
Yj)[KprN1e9[N[3eU&J&HSUl@2T*frGJQfA[V!Di"Rk,3p48Y23[P([GY9l%fM#$
,fp)AiG9E6qpHdYNMm*36#R%`"JYNh)rASLLFK)JAISaFkGi!B,3D[9P-I3a&Ec,
VCE,pJ*ejb%Ip#29hKPY2k$[8lBkdK4YQ3iqXB#3LfS-ha#8[$,5+%Bkq&#D8&''
h$[Ui,q,(2'GfkRa8Yi%(FfYkL26-2&cI(J9JcZ`iC6$*YDBqK"-qqAE'LK9(&P+
dcI2hAMaq5`e@E6NPhUMdIYSV#qK*I8rbhphGI+Pc&2e#9dhGEm*2B5QJB25FAPa
&JB9i*Z-'Y-0N-rTZA`qki8A,dXC#N!#EAB)D4iZpdL!Ff-q"b24jGdidJmq,+'[
kLK6D8U8JP,M-QI9Ll#dEij`L&8NXR[ej-`VjbU8qbM9""DJC3X0pb**E9H%NGA)
"Z5X&c`VB*'Ibf5,'C)ZmJ6E$SY9PG-!B'FSSUiZKUE4-EN6!1F9!-Z+9,#%BmCq
@Z+I!%,)Bb'ld@P86AA0H@JA&Y#$L9aX5VG'ARNHJX26L!Y,R6Xqeme'+RIR*"[R
C6*hQ`9UfAGGqrET,@GQe!%LT1Tibl)*FL0M39rja@(#F2i'ZBHkqmX2TG5@R%Rr
jB9-AM8*Ai,r"-qIS4ZL*F$#-!*Z["efi8kpeA+%Lf,[f",&6[1Q@RIJiaqK$-f*
!NL3dC*KAXi$QrSQDdh6lBqmL,i6HG26DAaDl[XdZ$q+KNp$h&ec*BaDr`CrRk&"
",("6qM1E*3G+DQ)PlEhA0KJ["1,9I0em)AaHM#(hqM"C'i2%*JhPa[(bSEE9kXb
0h,[$e@([hk#!3BkpNk(ZqZQdZ+q)3M(p-+iE*mq4Sl`!6MaaL#Y!#8k)ZdRPY5,
pTQYiApLE#eA%!%k@"(IhPJ*LrB6S@AH(8m"a'!(MIk,@rNj$dSB$f"+F[EHNVQc
)C+!6TrqLp1j6cqV*jB)S"UqFPK@T4-,Ue9S9T0V0F)@D2`MdNbjGp)aYHpr0*Ha
ZY0e65hb%h!q`*%@(SHY@qZVbRmD+KifbbfR9+[&(IF$+bCM'3@XA3kmqDr5@YSh
MS!3$f),r3N0VlKI#$661Kr`,f&SIQ@*Yq'Ba32HE+81mcXEce)VPeaLjS9()c9G
2qURKRr2*TE*Xa20CXC3eDl329"$@lU03dj5P,C!!SUHKU8IF*aU',dX[E`q0+2K
b$i`fI94KP@6AaL"6IJH5KVk+ZjCNi@(`9H'2L!@'SD*jkD[c0f-a"%3(+$`1GP*
"hE19McVr8*C$,[SkE,acEDZ-[m&DjqK'TC4`*1Q'qHQ*KL3R20F!hE,UfQ,2XGU
3!08VJk01hfc!pSQlJGl+XNH6SNBCkf1qrZSr25ZLDZ,)Qk&N3b'C4-d$hc)rPYk
%L-80J53(VUJDd[RjA-VLREj+6Xr!F41+$Mh8,*Y#%eaFe9fV)@!akf+qiJj6jE3
YF48lrkbkJd%`Vi`[p%CB*9Rd6[ULM%`KEl*!T9c@#%,T&[3JVeJc""9biCf'0TZ
Amf*cQZ'a8d88hCRfa6X#L@'iFHHiNY9@[VaRl,#UHmMQRThZ*V@Sk@@SbQd2'TQ
VkQY!N['!24(6dUcE+SjKU3U%8rM5EeBYFE96DG(HVp$J!&1X3lc`TSU-r!cU,#J
'EJ,)H'Eq!%F"3fh,-,qm![DP`&"""4G@5IY0M0fIa)TpbQ#9GdVXa(EBH5Uji!e
9`Cr-U-AB5rcYPm0S269@HEZm&N2hRqJkf!eEmE50Frj4Pl5"N`lb-Qq)bVH0-cB
9kVbR@E%CQreBXV(cheaV%H+[G1AA-CHLPj3SK"S%r11UFGB)BddQR1jSa5Q"Rd+
cX@hARf9B6Mfpr4f`$PHG!@#R!@+)b-V"#a*q68c)hbq&mFaH#kVN24FXD1d"XhF
XRdY2r-L%i)JEUm3-!fT%$M-%T)Y5A'G&&C3hUIKGhV"3GCiLjajS2-DT1ia+@)M
ET*ia3c@Jkd36diL16fC-G'XaU4YhJGIh5$h8qjXI%l)HqT,r9!$"phlAdj4!CF*
535E61CNhpbYH&&[qh32%@r-R(1p@lkZDfId4@c[f'B,STEfiKff$RZ',Zd%P8'Z
",HHj3N2b5mbr)b1hXHZQJ5,KNDPY3qB2qrl,fV-6,i$k+)ANZB36pj5[[RlK1[Q
YaBdK1cZ`2*Ca30$biNm8jXpZ4%2lY,Jj2DS+(*%C3JB1+pEj!SSE1+kNJlKRPP@
-SLc6c60r1p+PRPc6%$YF6##XH$AKH*!!Hi@*ZqAS`5NCHAahQU!p&[ZTk(jb$l9
ZaBQV*80'0-[LRJmrLq[!#6i[N!"H[i*IDPHf,-!6SdFf,KH8bkK$M*Q$&iRidRR
FPf(dMhd3j1iq22TqJ5JFXXb5['mNKI8IB-QeNHM-Zq-P#PGd'ie0KPbS(m%ia$D
[0#bbdZNe-B(9mE5(hNmCRL1"PVaRJRShr@h913LqpN`5K2c(Bq@(!LTHJHGfG3Q
)@L-'J)I`6M33e#!8VDDSi2XL6X%X@1L4(C8$Z,$+6EmY`5Tm!4jCcdI&YX944kN
TbU$E2%N*iJDI3hPDKkXX2Pj&1q8b1dQ!hFR8K#)-#m*TG*)Ye8lY2idd-BdH[VZ
f-DE5p1p4KEG1b2[5RY"#H!+XdmEf@k0)d$1BZ3YfL3pC+JDQIm-i&BcDkZS1Sj[
kc'038*+BljK,SKRqL6APIZdS,K[4ZF`(1HT2bQ`46ake%IipU4,U,G9(k3@%Yj8
jjhCc+BYefkhJl8kEdV)e9Pc8DVJ0qAk`f$TQb8j(ViEUEPQT96V1eq#Q+4[R83@
5e2H#B[jal'FKISeYPimmhke-jFD-Il(VF1aA)`a1UGGaMlaBMq)A&EFE,Y2R@E8
(0Sq"lC`b8YcXpaMa%K9S%Hl8@`+CQp2qMdVpNf-cS5ml#c$mM5mUiF2AYfRLB(A
"3L"44mjQ8F!TCRU9TF&c4la$rXYkh[6&A2#Yl8$iG213!#6Q,*m,!4KPJeZ0(T!
!BaKF2PX"F9a&d*S-lBQf'FS,VVAk&PIF9*Q02"IpPS(0#3U9&hY&TFJ*RH(4#kB
Um'R(aLbdPc[Qj#LdNS`!,#'$D)A-),UCbJKlPXp[Tdhpe9fpK!aHE4C#C9Mmc39
XKG3f(YaV`f"[0"VdRRjNmY2CF*qIlQ@fe)`!r#YNGb6EQ!m!r`r*&"UJdIUU@I[
LSl)K#5B"3ed-((95PaIr+Hmq%aN1L)e4(6pZp)KJ`",d[5cMl8XXPcmmq%025SR
`&`JarlU[h1qR)k,m@24@#)1m5RlRS4jbSCeXKcUI!d)jm+T&cKC(h&-khA62J82
RU!mD6iV9ZH%qfA9mHGK!5PJJ[cIfC3%)%AdhED"4q,AjherfJDQNhU6[#MDNK'J
081Jh2d`H)rSq9kdEIG"'Q8++$,C1RLZ,@e()MQb-L[K++CFm@kCS3V&Vch$$K%S
N'I,3)-DSJ[q1X35d4AUZ3E)FV#K-c(Xf0R3$Umb*FfZeH&R5aHLM--jmD@2U%CM
aJ)A`Ni#&KVmU%J!P%eq,FD428'kQEE(D@haT'8kX'Q+V5)c*Ne"QKY-,!X84$KC
FVTU45J`cA%#QGAF'fer"U1UeBhLNr@-Z6[e`pdcZY3$iA)V+P1R+maRa`lX!5-S
(4NZIeI5k[caE6mVd@)jAc-SjmC)HE2'5c,85*5f[4eG,TMi*&a5PL065M&AH+kK
r%9)QXPYRKi8q#GMTAGa3%HNNbHKajREEYfkrG'dU3hb$TaCaU35q9&4dTQ-5rV3
[@Q)FC-&29$+!f-ppSP8EiqIV+CpKjUIU%Uja9V8Thr4qcMQ2NTA1fY'h244-9pX
ZLI+Rfh`ALc`KTfikXjrGpD!TlVJX0(54A%1(KkAjd+LPq9Bi0@1e'T0FHPB-,pa
Q[hCmiIliKjMrI4i2Z8K[3DafkN+j+ea30,qRPM645C!!5rj5&[[hH0CfT8BMe$G
ZmN,%bNV10mS-6$HkpJR"a%GHLDT4qlkL&d&kB[cFFi[I+Ldpb4kc#2,b0@HD4b"
QDF$1I'RM!0!eSecXR*@qTHdC$%fT+G%S!3GCj%HhCf%IHRBq8$l!3T2!VQbNR+0
pc5FYd%D-bY8D6J2q%X-H*`C+[L[(32@jGr2-Tk&,+fI,6)DddNdk$9!VqIMec2-
Nq+!me3q)Xq$c02P-iiaj"R`D0T2aLGQH@%%3X3bl9i5*DVFIK`,B!HCL[8N#J"%
@BR'V"&ZSYHPl3je2AIG-3Z!i0rXk'$Lk8YRGD[bcN6!I"*hc,@iAZHH`%54b3kh
)L*B!#h6'F,)j,f@@GQ9%Dm1i1!Y43cS,Q8VadIGe$39Q4b,YICh96L[b&fXSrYH
YCP6h4#XY`$pdDF"03PLGRXI&'%%r8B3d9&#2Zm)(k"D(LdJNdl,MmMk26TQa136
mr%VSYX*6bcq'qDbl3%&VKZpLCGK*5SCIaf#AfiU#!D!b!HfX$Xl[FqRR%A5Y59Q
[SQ+SAiqHdEEqpM68D&ceiKb)++G8RJiJJM)$Uj`!e(!%*PVZf$r,RIiE%1ffM@S
8R$Aq'"6Lk6VUH%+9Vlb1h+pD90j'4Q'aN!"+lVdAkSkV"YF@RQTcBf,Q9()Y!9!
FbA#'b"KL@KVqN9lJ[UcbbNVEp00*i)N+e&&d@$`kJF,B[@Gm&TSPA@'@j68a9A#
%IDMdUH3LfB46b"AYINGMLhhRCkP#!ljIF0*BSd0@Ffiik#BR%6CA`IPZP3pC11@
ZR`R4Q62`jH[l9hHISeiV3T)3f4&UY)RRJ$`h514UXbLa(B6MR`F2V95A#$[LYm(
kH#)AJFbhaFrEkBfV01Ci"GNpr-94@&E2k3C9(MGDkcI`#)1[MlmKqHl5eLRFXjB
[(021dCq+Y44F1V4hjfRc9U2,e!dr,ZVNEe[XmLjBd!%TTLRqXd[i9%B1&AIKpRb
*30Eh#`Sl*(LU8eU3!-DF0E4BRZ)"G$IaEfE%1kMYTPl'LRc",iV,Vpl*GEUF1VV
L(p3RiAmea[ISiiZF*pPHVk)F*ZFQ@62Lj(TB!#'2F'r(Z+L8f6Y['k#K$p5a8Q3
0E``0mNM(BPT+$jh6IeN1S(c`qDNr"B*2#MXpc!RJ[@*)@,c@eD*Jaq,BL1Uaprm
FAA1MKBr[iQR-*kU4F1l6+b2eUIP5b&HNHk[8+dA1P+Q24AUfKH9$YKFa5*kR-1r
rDlR8aLNh[XkVqd,#Q#`d!2Qi51!RQDGf'S'((,HKPE$PDiDT+kM(0al$p6,15k"
PEa,(dq,hq5bU1%+S8Rhk2D%@LP,"UNIX3`Xke"k%qpI*4UBXZ0IAR#N#GFG9SlK
X3&XjA(@X)d,(@AlRe42`a[pULSHa9+JL,9lKX"2Na)ha@Y29,1#,,R'aZCeekhZ
*,8@j')h4`2@KpPb)D-U%f0LkVXX%93CFjD%ib#Kl195-2UNr9()P#afLT%a%%Z`
PNpQjQ@3hml[GI13bb+(T,%Nb)(MNdrV83#'-j#LY%NEKICVBNB'k#RB26QRZ4Mp
[dc2kdkDrf,EkN!!Ie99QISAQ&elUK(QCIq66GNRmJ-$*-qN@PJ,BRN8SKk1lh2j
&#phrM1rG)Ni#XK"8(#qeIip2&`YhmLDkkQXBFNUENdrj46P02(%`JKUIf2F@aIG
'F1,(dZk2bm9%,[Q6SkAdb@FaLTe2*A0b5EXfDYr36GTl)1[Zi2`[J3&Rambh(Q0
PbqiZ0'Lf5ph5T1ZQS'3%,#c-+aIG(kR@'qcf*ffbMFNHT$Gfk@)c%S16$H%9MRj
1PC[di'elGZjC48rT6*L,[r!6%XcH*!E09X`"YPFD1'3Z8"@pPXkTqRS#D*B0`pr
$k-fP2XD9Tj'daf'1XKY+58VRmM1a#GHAcp(S@dbG&Uf@F!p4&A@4(#mk1`N4D@,
'k'14B-!`1B-2TPaGR0iMcVi9ch5F08%YdE@J`@6E+"3X+9e'FC!!4ql5QCFY51q
JkIP0E4qM6I-)FlYFT66@dMN)mZ0DaM*k8J!eaKP5Q(UlFIdi[G[HqN$9)T2V`bm
5B2aGZHXH&DDLUhX`[hXcQp*S`k$P)fH[1RB,FakamCZ0m"X&J#lqfhj[j5[k@dV
QXS'YkVhj"E[&hT'BHHh#8HP%"b3,TAe"S%QDB84)8`HA1IkQ$U2&B$CLaL&%F*a
K!GP%5&9GE8%jR62995D6m2UMpMebU1&6m$#I59K5amY2GThKmNrG)(*9AGJU0ZH
%6r@4"rf$0ki3QSZ[Y1UjV0JQ2)GqHUp9m9$MaYQJ,Uje#NJ9&f[6,C1L&S4Br&e
P848820i0Dl$e"`cGp3kAr6EITdif&@K)%M2GBhT"$ZJ-9RXh!(I&k9FrFl$ApH,
B#ZqqE6f&8TK@DB*Aj9M(fINBrd'(lq48)bGb,ehc$Rb&G%6GdTed!8BAFm)Kc5"
(GheNm-,+lLD("Dj*Ml&mMYllR4)bKQXFr91CZb6$!$XDAHR"&Q#QampT[dEZ43C
d,c-[hGm'6GTmJ@#EAhD$f(`@-a2b,f2hMCY-PV'TF"HT4I,ZBQ%61J%NeE4B6V3
81!k"lKBEQCm+BDZ$I9d[6U[N)(Y2G$Hp-Y*9RFqM`Kkim6I,h@"$cpqPBZX6%jf
Iqk"BhA`jdSpQ@,2(ZNXQ"a#&'ML3!(TB6f$k!qVr03-S$ar9a*,XEHp(Sk,3q@$
)kL9l1CQFjY%rj4rK23[#"m@lUpaa8YqkL%bB9mElEYk"Ud-$h$4qKcN3bkcb5FK
c"@1E(2(`CUeS%rmp%XAG2@C%DZeHXA`VSX,SkLKc&UfZQ@9&#SB$XY+")6JT9ZP
U8h`qf9Ld4HUEDM'Vj3"+1+",34,hHZAFR@FYD,PaF0@J-DGa8-[Ld6q8kUpJcX%
f1L&)'SC@&5A'SM0RZcK3"UqQRP(i1KU"&)CIMj@pqilFS`LB@11QaH8b%'43Gbd
JT&lY-dM!')HYlXEdk[TaJ6B!qbpia*)Q-T4`4m80a'S6R6B`c0apEeVSm3FNDjP
pN!"`0[8a93"F-8UaT6ED1h,PF$[p,fTUAjKM85E159**-lkG,,5JFTJBcHM&KaC
c,RVZrN4jd6c+AceN3R(28`Y55`[NRDC613FQB$#3!)Gk%a#5Z(@F$%DVC(c'H'Y
0Bf[,K9!jLd4NeHji$2%XfE[h[0+R1`ABTr8-0AAa+U#&X0GfNDG2V[G`he&"0+C
QlD*4SB%cim`18m)HIm5jNdkh$qBQ209mQ*fiaH8ISbU(PViMpf9QA&q)m6-4)+%
VRDJ@XL46N!#dkZY`3XI2d@mJfGGfAJ523!24hi2AGM-,@"Ya"(#3!&eEKJYVj#8
qAHhI(13fI1Ll2apXS6T,ThGY@4XiNVp8fVMDA+f(Bf*qF(dJb@0h,#9S%!$*32l
&r9GfH'8Ek$DGT+N46NPFQmJr5PeTY$HR9,9H"*eB08'"2INcKQ"aHJ-4MP0$&)0
h2`R!Gb*#jG,'3AI8$TpBCBCXB-T8)+M'![Gd)JXEB4eD0jqQ9H4CB+[jMq"GqkP
@FFJE6d6,%Uf,f2-X1PAJ4@3D@6h#(d+'5")QV9KRDHRT4ifVBRk"TZb%m2E82K%
B*A1&d8pa%Rf,0h`K6Q1+DfXXcch12DE[TEKNdPj*BX98@U[kEN[(l`B,@KMM1A#
Tb43@T0YjX)H132cUG$-mqrLR8KQQGaDUF89crahSI*)(mYKBIrY*N!"B3ST!#8)
DN!![jUkm$*BNiH9I49FeSS(U@8qHAK-b2&XFI!$YC'9EADT663p)Q`JplSA2JNL
,d9MEckHKa8'5"f5+K1ie'qH)kfe-h#C"EcXG,J0Fe"KYU22V(5F*Hf%(pHSAG8c
G!ULT2i%%J,"H99XP#q@lH(BI&!-"%bb-@*L@Tra'Se@H4(0ifFC%",8!59S[%4k
FV0B6-SJD1FhpX,@G@&KR(-ZGfF)ieDbM[l%Kad$USiRTdk0ihRUA(F*KSc3cS%,
VYLrrV&HE"-0ZbP[RZN9AQ#l(`b5Nb9%5)VVB+!8M,HI(P8&b)CNKmT-9A)m#AcY
,'SlaAAj02cI01LR4UNfZ#he(bD(m$qepXBAkiQ`3)GLRAA5YFLN4Q`IkZNX4&Zc
,lMibBAMKfmcQ[iHZ'"pSMhB*QK-((rMb$&Rr16e`NpYaIpZf%A@RCLdYDCG4*AD
mZJmeq5SX+3AC642(bdH3!*dmap*%9Kbad`I*bMVcp5a0#A3Lfdr1F!jb8*!!VP%
cl40C9V"Xhbq4fpMHZ3VdB#PdYjFJ3PTYf[!f4hl)%2MlK$4MSHR6!@E4`%mrD`4
k-brb9f#-cRjmUeaAUQke$ic[[L,klcQBEN9j+AfidRMG[dqCe5Rkm(6E0$@R)a+
U1M$j,9dDjMZhdDfG4a@X[IiImc*T!1XDlE-G%+P+&(lfimQLVjB6mEH5%2,lDX1
H,I8,p8!HLPA4ND'6Ek#Q"8S"*3eSj@![Rj[!D3J#,J"XL0q1NI['$()V&SB@KP+
'9ZZ6[TI*LTCpPPlj&pG!JJJQL"B&LmidVVIfqFUI+De+$f)(j-M1`E&%5%jIYb*
Jqklpp@MP$8(65GRCdAI[!*RZ5L085HU-jZ3h8[160dQRr8kr6$(M$CN`EL#Z)YH
j3Ie98U',mTNiNpbq3AFQDe3TlT)hC[2``6i'"hETfpLpPq%8r`CamM0p''aHCL%
-&Nm@#aB,8J[4G84BZQP$*Pbd4JHc$%i0*K[D'CMdKcPDTph-&,ePiaLi$+mV+Eq
KBA8Z1K(cF##ipEdZRVKQf+(+9m6#FY-eb5NF`hQ9I1c4MF[-CIT%*CIGSC*FTkr
q$dUB!Kj%Jkb4Z&9!JTLX`QkKJMpd`XVM2I'TlAF@kBleKe*IJrHp-p4q*%L+Ph2
pJ4dLHM56fF@+([epk(-0UXUY*"-AG5!`QGb)%$f+qNRY(HAdhcP*TRTea$ir(+k
J[E$l'F-8['I4qYeiD5Pr'UIrA+VqU5&REfR4AGYUdaS98SSe+qbZ,6MVki$VJ1Z
!YY5dB@P%9lU@CCiGpjKYS[+Pql050*LQblG2'Lr0jL+b&)jG*c#I-mAiEIVcll4
kdEGcdJ[@T&'R)d8294FiJq2&cBU`jj+RUc6j"m3$"5@1jHEY!)qKIY&,%Lq-!BL
ba(N(692!K'9h4F"`XRlNjHpD*@+[VNDqPGRf9D%eEHVL62Z1)6PGj1-`$"TV$'h
X@cle`CN#,f'%IEjN6iYFjD0&S`N"&HAqAkk'kq!j-l'PbAfA,KE"9,R%qN$@kFa
B31ENM(@U2[+IV4Q8X#P@[4J*C0RhL,BE26Ak`%l*S9A455cj8@TP8P#HUka2)SF
$3Q3rLCdXpE,(QklFEmAhQT,PF0N2$CI)`-)-kR$8Y-AlG3m,"i'lD#@-!E49HRc
h&b0*2eZ4C"XCZCY`P(,eU2@8pC3AP"TJ93GGr$UdJAR&dM628AF[6"6pSLq1,"[
d)4Pl1r*ZjCVP8Z95mkV5[!ZeBBV`JrEE3qdd3N4+$1HSjGU2"kje#D64Q8NK!j'
Ll[GPD*2Tph,[N!!PBBLFGeNid88N36S%6XlNN!!K`fASDp@ZqPN*Z+qB[i$eP4b
AZe[K6T))kBJ8h-elc$@DG+X,1GUM$ledFCXdlVRTQbT#XMe96!a-,8`YLc0Gha@
0$ThT0+52XIMKUcdRfJLX#S6Qmje@VDq1j2#EkG*fNF#($!DHQ9qC4CP&[,2X+a%
kZV!4+Jd'ZLJ`iN9Dmi1U*c3+&%kj(03,jkpCcESXfj@$U[RQLIeek&"ff5q+P2d
PmiVCB!kq2S-q1a)l+f&iX#NXLF-qqD6cMRkQB!9kD(a)M'$bm'86K59l89prld4
hE9f$"!fePA"@QllSS&J[9B0T,K0'0`qXQi+449,RkjKq`e2$f1b$qV!SqffIqMY
bUM!lVY0HT"1S#Q`E%%$Nf&qaVl5`kRIQ)&&N`6T`[2CMZ6f@R"h+V,QaES"ZJ,B
A@X$5M)hMX6hFZFML,*eiX#"`B4r&iFk(b9J!48KBEVU8LRNAHI1q[#K)eCV92Ui
5fd@$Pf`(0"HUfEM2%$qVr#eP3@h"p&'!cKYHmSN-8*pVjleb[4DP8P'jV3+1YP)
)M"QTLf`(dR-a)304NkLc!M"QTYJX5,pi&1i6h$41q58NXVQb$63G29N3B-U!iB"
C&PPhX'peGNAJake`aH@X"#A$jN,3+LpHL6Lf1IP4AU"LZ6eRk4h+`)`Vc[A1pF-
Af'-2!NTb@F@khLmmT"*%J*FL(iR+h2pDUKiL9p6!heBlf,lB`ql0APU%A3FCcUV
"cKDF,SXL"4R*,NXiqmSECTdV$&j0BSL-FYS@,5JYi1[5TPdX9NEa@FqZC[kpfQC
AHB2BV4r49[!Mqhk3!+!mDVlrU6V+E,jZh)-qfQ@A"YZ$(#V%+f)#F2eMLF+e-eq
R-RHEif,I1RhIEeMRQfJkAZ+)!k$4rj'1fIib6F3DJ,%ULH,ep058ifhVhZ8@%V'
EXBr+[6&$N!"i(MCYFeE0AVkGeL3GdTqb-dcV[3ZHFV(9b0,0!X5+8HEc'b%L@c`
kRIlr'Gbf$Rq0`i)k6r@c2kMfJFf6ri#clVNQi%VF'TdZRhq91lRkNM`GCfqNXHD
KhhX1JNUa%,5CA(RpU6Yq$-B'9XN"r*R#r9Jf%UDQPi$%,2Y$q[bQ08[e$d`Pi54
&9b*!3551"(AUmd@@pUVM6'F"m34JN!"Z5F8J-K%NKZp)Jb@)e)baP%ikP$3ll`%
C9paB32a8%P52&ce52KmNRp2L@YlkIQHZ1d-UqF22`pBMcAS("Q)PE#I[5*T4@"p
K-VeQrAEB&1Hll1KkqDii(0-X#NBqli-KXeR2NVhDbf-fVir`CRD)6m#FFXCm%RN
h)CS,-li`&r"TlPJdm4P[1(kKDD&4Yl05XVCibkBRBj[,Y$fUR0V,+RK"i$aZU-k
6QkmqE)jLLPR"V)B[)$Qf3ZTS*Y5N(9--Me-Nb%LI"RYaaPCGi%)pP$caq&5SS[V
k9%'(R@GPiE3D5X#8SJE['Q(pXUIKpCFlf"HCN!#2Tkb#-'0q2Db"h['*0NP46[j
$"jXU@'5T!!$`!3%AkVA%!Xh%(-RA3dAe9LC45J3VZ80&D"hk9l!dBe8RI**eQp3
*bK6CNcR@&@f%*2JkR1B+ph[p@!%cqAHUCRG06Y*fNYb@EDYUFhhGFTL9MR%*Tr4
ZYP#UJq"+Jr!Uq`q+YmXNLEr`k$DG,dh2$T`ZD1[JZ3!R1ahk*'c+AS5)K)K'L1P
lYa5AT3G-,L@4[dck*QJb4Me2chXA*r2"Xdblh6$"1ULee*U+p`bZmiP)S'kJ+U!
UpKp6`0iT@`X8"AA2"P2hC8HMq@B'5I(G!&@I%m"%Yfb,qa[)cXB-3d-!+iVL$Z)
1dJl@"P#lV$I6!a!U2B!3*CIS94(Y[+"N5cBNccFX3EaGM%m"'XA"jrZiFKY$#[8
-qPrMq@149'C"!6`"&J)@T3'P!EP)20V!,$EbP4[%Ch8,k+a6ZdI[,q@X0BkITZK
mHb[jK69U9cBE+0F4$QUbjXIBR)VhT'(c!+K0&-I*DXqAVVdG+b2[$F)b)c3,dAB
l0rDFD15hTb!%1$`#N6!QSdm'kXLb!b43#)S'1-Cj*iRL8kkV4L1i4PR6%U3i6Yp
M9rVT1Gi-q'lq`Uej6jUPJ*3PV%0G22GE,*qjckFr3,DmMT!!Iir-P@C)'V5Mb)0
+I*ES)M*V1&DrTq@B)E)-FG5QBNe!kANMXEZ!h(Xa1Lf3!-R'jZ2+YkY$I4pfB@#
a2ZXac!ij"3PeV6k$dPTXdZ!NpR1j!2N!(IU2KYiDLh#fj&&eVBeJpTr-9U)8l`m
R5I8ASY![bQ2i[EUUc!jmJ"KJaQ&UBe,'S-V0DN5Hi5L2UPfrf9d-[`iPQ)DiCD8
2IRN8*h[K63$'qEKSL-YGQ!+MkJ8c3lDaQDXL8D3I#f6-Q%hN[`$T8E3U@dYX[T1
'6q&HU%%cYQ%N5`rhK*P6B(1L$8`#A,Tq$9DNEbk!@QUB%c3p2Xp%ZE&C5MZ"kQ#
Qb'i$GrQMlSdYbKQGfI@GHl4Yil3116qLYFc[[AkAPQeh6`iXN[,dNQ``r%*N%CV
GapHiPA-bFk1j29I')&hM'Y2lNP&1LQT$Ad,QXfb2c(ScPBA*IEmZl1N4#VPTp[X
G4Zk4Mj`*30md4+i4LmCqTM4P+a%QA[ceqJBZPh!L@5c5lPm64c$SUmI`)mIh`M8
3%AZ)q&SYIUYA%ZQ"G[GThQV2!()!&KrKdbi#S6jF2&l!TD2T@I14faddDN'JaT`
*![YdCcMEcp4Mkj(*r53'r0aSJr@e`e[TTN4ND%[(+mTP66@6**lImDHDAk5SeX#
5+9hp(UU[6F#+*a65Za8'pXNS%[05ij-beKp5'Eb"a)ENljBdH-E%ACfJ24a-)-m
0T*pZlFQ-!pD6&C4"M"5H"r(4X+[E5G@SbSr09P[#VIG,$,Te$@6p&aqBI2"ch5Q
F*q1DEPDD&QVC$F1PSG*KZJ)58TAF,I*GRCi0bQe-G9$&AJGD8*Qf'1lS8aV"-Q[
B%pN"`j'Fk'hqcSaarJlm#5Sj0(Q'Y%3LGl'6clESJjDNDj2fAMMUkMX,[N%SUqT
&f&%[qDqUmKb@RGd*a+`rG030DNA-i-cY"G8A5$&9I02)Y9#VJklSr0@)`[Gf9'!
8QCI#'-BCD`)"HPf&0Rm+Qf`28RZI,-B`&pc0b0D2N!#)))ljJqb&XQ&5853CHBN
FqmFI8[1EjC8DGQLL$hAIVp`6f&0m5rH&lA0VBGV2FH,`TMH9RD1bke+S4q,r2e*
qZB'+EmpYHmKBCH#Xi2"P%R[Z49rZ+VJXM&LBh"K+D-M(F3jIejl&YhY*YP59d(4
Y-LM%)*AiGPDT4&h!!j+-Ca&4eS@lE@FPl99d16D-'28h5bV14[6V9lSXM@Fhe4@
XVc0p45f2j0h5'6rTmp9&C`aHEP@i`[2Vc``8'ijj4!$T0)L"Q95d'B,LC9l)0f,
HC+!L*C(M*D[,BES*V5[1*KiEm*+kI-p6rZ8Bj*B$V`,crf%Nm*Ei@TYmF@F56jJ
@'"BB&KJS',AqfK6%r*,A-Ni%*+KSH5$Xe1Pj+09$LKr4-"kYmiXbQmT'@K*mC@G
D6bKb+"BS&V`S8DfM*m9*VDkI-P4YM[D3!!RUF!&hbjeTmTPMSjE06Mh$"*C'h6l
@42+J"+!5S")qQ`N2S+5h4&jD,S!A39[hSCqdQpV2,,9M4Abr'm$C(d%e9c3LMmp
T%5CQcj%c-(9MZ@RE*4ddbhe$IH*piVI5F+Zi)V#2qmm#D3CH+hlFdfUBaj54SS"
a,Qa#j5Dc6l!9q45TRF&HPC9(1"l(1-X"fi+RS9*1M"IlmqF!GI-i&NIkh&%#qIq
iIe%KN3Rhac40UY[IfG4A-M8G5U8[dTUN",H+UhPZmDYjEMm6)pmM4L0'1+@kp$*
`qB%LCle!-+r0c!L4iC!!X-a(@`GaMQM91C'6@P"9(ARIKf1deZMGdFPm%(Qp@XU
[#pb9C'YlG2HfS[@[radf!b8*AYqMqaJ4jQ2m[H5CpqC1V`mKSpYm*l+9-"N2QPm
1E$T6q,J24XPQcHf@-HeqTKUImcN$cA+P3APq(Fir2A9Y1jr%0dB`14pQ5bqIk"2
Yl@RY[6h$4EZ$%V8$+53)cHN3R#aVR88M1A0E-HaaS0m5-S!6Z"5l$emFpkB$P'M
qIFSJGk[TV5eV(""'*RB`*rj!(I)jFqbSC$j&R`+PC0#+AGYbh*NAh0iDZccdI8C
qp8fMMbBNEc4*dFKGZ'2c#Q#acS3mq%KcG!AN"CLj"6q4H+Q-2fJhR5cZ*K!%ra'
%pTTiQf"r0KDSP*&BdQPLZ"pT9CTrkk'2kE0EK'5bYd03b1@iZk@L+fX5J%@SSf2
H[L(28PR(ZFGQLQ,Q'kVi*G2LUJLVk!3Gj2T$0BTDK@6FNf3mcX-9B52Licj(MGM
km%PScLH3!+L"E5qK"B9eVPX'c&lNqlVG1NfK"fh[,$[(UJ3XF!,-d,rkE5a5D"6
AlHp"6NLhBHaYP"kT2T`#T0V+$acFeP3l6lbXiQ1q[1PJ&cBjRY80ZNLUeHY(URr
%K%ccVIGh@Jbd&D8M$lEcNSd8F5(ckdmL$m03r$REB(aFFDI0I#%FRT+[)6iP!DI
Yr"!Z`Rf!VQ(S(Sq)U6QI,Hl$lF@)bd,[6[el-r"0G3Hdhm[UDe+&pY!V0JQYIQe
ImG4Q"V!RVrq%``,PMdMq#"4++EA`jF#6)BVK4HaH6DM%6)N#BAMYplqce8T4H+a
8ElU5FMd-fj+63fk*j!mhm&[apiB$)!'Kp2$)q'U)4"1h-'&+09SGpNfl0PB3l`c
X("[mClifYd$U(F9USX%dTEi8[4"Qb,9p(`(F1X4YDp46B`%hhi5++D`T1`SZI!l
Nf4[&)mKTP99AbpNe%ka'K1llZ`ZHGq@qZ$QE[8N6%1E)A*qf*UNh3TRSc5YDII4
RVK",Pa"cm'p5Q1b*"jY8@@fP*'b)#i2Vc@Y"-`Bf)qhNhX63(PFkk,3M9r(TY)(
HERPpL&8#c)f(hDpPpiURVbQml@MR%aifLRhE)9Abj(EBJAiPrilA%h!qkk&Tj"a
T!Z#-DQL-4hqK`%rU05"2&&-!'Z3,!GS+RT+1*DpPJT3!G,!QPBH9leJKAC*T(c!
'%N[q+kCmC,F'$"p+ckiXSd2T!r4ZicYqbJj$9K-5M1Jm,iB6B2BRkU&5)T!!MS0
jpX'iKjB0L6XJ"B[*e&!!5!Ue$K0KM,Z$pU[dNJ[9aq!*!QkCFQF4ME,TCK2&$LH
*ChK!U)*U!-)ZEDI0Nf(aTfmXqUPafj@![j11Cpem,Lr)$qa*8%YGl[*-CRRQ%P9
8BXUi*9`E`1iSFi*i#c,VTG"4HY'*'QJ12f2Aqi,)Up@U'NYN1VkSU@34`Fc9Y5q
*Z%&fAbJ0SpC&%&f4mklr,'U6h-fU"J3@a'*m!EAm2eeqi%FN*N1Er)m%lLf2JT6
DbrRY5N3FJIURL--P@%fAC*HJj6Nmh'FjJEcC)-eb8Hr8Sjm5j!($c4+QNG3N$2B
Z2LMbD3-&[YMFf%V"#p"b)pC($@)q"ZhH%dX*Y"dVNKjlPdh(6Y86E*3NS,#+h#(
Z-J&QeYYIhN9ZPpC'f-Mf$5!mTqLrKM8r,d3ZELNYK,$4RZ#NFG@`d!Ch4SaYSdD
*iiRkpA+6QJI)S8I1qk+HR%B!S"ABeeR3%@R[&J3@0)6,N!"b!1@*(Q$rS8419a"
0eaUX"b)AG4PIK2I32JFr&FIZb0mm3FcB@ZP*FlpGqkbY@l5BAp3ESZ2,eMlAbJA
HNd@dQlPi5@K5EGV-8$*ML9D8Cl*SRRU%fXEIP5MYBS,S68'Jaej",h$&-EIB@%8
Zp516IG#GI+$Q3)*S`R3kq)5l&D!8%-p`"c%aqC!!Jm8rJfYKC2P(bRM`N!!$Xj`
+[6*pUST0MCLVVj%Fc2RBYbdmET+3!#--CBfALfpLhpNDNrf+&BB#(T9q!C'jB@p
K&,Q3!!+`N!$Z59a*Za+[mL[+I-q)8"R)JKEh[VK2S-m58"R@)jQ")f*IDKhTGVZ
!+(I)!$$UJ(Qe5Q3%3PLCCfUE$KGB)i$e"ekM'(0aRZ8K0#k8B@jMSBDRZ8$k&[r
e8k(iiUJqZJ)@1B+kiXSN8*iY2bHJiBVeUK4-9jD)j5r,JJh5-6G$AJcTb,MeS%1
D6hD@``hNQ%1I'Z2k!KV$P*ldVI)ZN!#+&)E`8`kTpX,0qBpjL9-r&S[95'DYqVi
%hklk5-QYVVkbfeXLF,cE*SI,8k6BIAT#(-[b!+UERm,"p)1E3mX!Y$1l8FHDc$q
i"9k%cYUQE&F,QjLVT[80Q@b@rD3T$TZM*IaITYJX1ZPkjUTIm8kVa+TNh3-T)%5
-AZa$kfN1NfV&E-M*2Gfe2DQdpP(G`Y1ThlcdIPhp1CZi6Y"`JL1mFe2IE-EJFX6
Ta8,(JdX$"m)*'[cdF&J%`MfPaCJZ@G2c`r*XA!fRBDjMQ1&)p!JpZlNp+5GJpG+
c@5(15qKh-`X#P10+m2"pDJN4MJHJK92K3'4$!c-DmNN,B$8JVC!!5m)DFkF3941
pFBj%@2NQ#G)[R'3JH"6YfhVY)&JUI5GH46b#'C!!1r+YmP*)DMUiZ(j,,q@(DaS
92eR-514&eAQ-D-U%5QrE$)'V,J`CLpd'4(fP-cYPdac4dHQYhj!!8C3L5#cBBpI
ce1'BS4Tj6j8TI5Y20f3f['Xe'1'bF"Q#rZ[0#DpH%QI)1TJV)(PUC-i-c14j[Ee
9HS9$@I!,c35[h`bBCG[d9CZ6@4J!J84jGrK-1JqPDj9Kj-eQ&m#%)+F419'0I*(
GX6F9QJrBjLZLk!5+4(Yk8F)8%#'HP$A6!5kd(NA"qMrTXfh5hQGmdqZF1#h"`9Q
HBcqjc-aBfBidfK$*U$dD%lP#*@p`CYSB-1+9mVd"`*+GUK-QMK6)"c2JM@Y9B'B
'@T5V,(GC0Xj4Z5eT`aP(),KQUh2jcJXlhE[i9UA40,N#BafIVdaU$A'FCdZ(jGL
,lNkD(ZiL'#4e9I6cMrf8(MrIpQ'EGiF4#!m"@AMcm+549G`0M@iIp$13!+@FVIK
QF(+P2D*hCbYfU-[)CYTI9X8P%!GRNb`3jj,&0d"L`'b+1ELV(H33Db&2VK&+&$%
K5H8k1[6S9,@24D6)3VM*HfC*S+a,U%,FXG%PmAa#,&UE,,[VF!V,DTa`*$Cdp&$
l9X8%ApeD9CbA8CmL%1HV*Q-f`AH(KprDm%ra-VNXaQY90'U%*DCVh)aXC)fjSmR
Q"m+C6%!f6e$bbm!!TPK6GI@!ZP6c[dXBcSkR4UA1qYEG6LZeJaXM@+EeLT&L0Tf
&-h2+fZdY-4aEjNQCUi"Lb",!!@UU!HN"*RU&DBl[JQeTj0YHSI"(V)dqB2@)'@9
$I(R"pbCm&kLGC[TSqT!!lQEARd11GIf"+q0[apCjf-dkS,p*UM-E&TlE4BaP")(
L'k"M-!qHJRfiiQjE1MNCTFpYi)%Ei[F6FLlmi`i2)1rJ"'0r(Qcec$QX(9QZYDN
#9Ui,q-!R-f3RJj59P[ACVAJMUQF6HCdfib-KXiRNQ"6'B,['Pp*3-pJMMrkJ51j
-"HX@jPQZmUFM@i$Z'B6i@1)%$m,MRPYDjNL)20#dkV-h-P8M&ZYb'I6J@l-C`B)
+lAARFHa4F[9RZJdJK-IcK(3MA"!KrIF%MBpFFr@",V`DLp3%"RLi[H8R@q8GP91
QQZ`Q"p3T,L004%BiTE%U)p5@X2b#)ihUlJ((`LU0iJY4Cq$YVqG$J6)9iFkQ([K
$UTU$1FPYE1E#@iFUfU+89EUUf'J+fG@MTjJC2YBc9c3d2CXp98FV@PqfJXq!aY2
bK-B&%Z"b%Lj$kH$Ap@qp[MQ)&VC'mi!3jd[Y4NY$D@CJkKa8mMK1E639"S9Fdb2
depe4Y"jmLaIkV8kANCd)AmrZQ`!S!(bM""-b4#ddV*0"d3le$LfYK(!I52a%6$p
)l64)!dQkRT,dpe&aq4("q,$a$"%&&dN0Ba9I$$I5a-GcRH`qJB%fB,Ahfm)V4m-
5Z,PYcA4[k1&`IJKRQCH9f4A4j#iE+'X*pB!3+Ur!*i%Y)aM5IL0cSf#fkCAF-D(
f`8JHjQ4L6GYU2MITU9Sq0USBE,HKrYPJdXRNf139Hk8I,9GDPZ,N5`"QIhLC4%#
'G,d'NE#c!!*0r&lQ%eB#4[4FC9U3!*!!S[-`VHjG&)(M8Jf[0phmf0LKVRRB+8-
2#DeeDPB6909U-J!f@d0jMj1(r"&NY)Ve)*'kBe1AqS!q*4rppSC(TTE3r)dQ$-P
pY('[$UHp+f2Im[hcKmV8V-1dm%UZjY42PFEFT%bBK6qdck#E&PQp5iX,V31LS[*
rlEU9qL#"1VlM`HX0Hp#E`Hp9aMbf`$M3HVEBf2b!#lP+`"hmk,6C!IbpVJl%&[i
LDM4ZJ-hZl#j,--JqGD3)A14Cd"0E&KP`@1q-L,dYX6f41Q+"NC4'YSCC[KpqKr"
15E$,%K!G9q)#9"P0"VBhS@,KbjlQXBAmIdPL*6l[28eja-QjSh*rBSk66jkj+@Q
pU930A'C$d(4`(03GGA&GJHPhX%6c3L1Mk"q"+a#b$6XhQhI,Q(h'[!NI*4L4`%L
,9SG8ePVV4(2GZ[6N$,(F-KbdFZDV&Q%iK[2*$dTebCfYX"cHp5jlM3CSFd+B,+p
I-q,'JkAM5FVk%a9@"D5aqQ)`JZFjD",SCj0(P(`!Sb@ce)jI-'aQFb#L%qRlpr1
GA-P)r'I(Z@X#r!Tc`f6$qHe*2UV&k!6@AY5$'&)CR(-!Y+D6FFUPd0@LAqq80Z'
BB$%A[diM``VZIFc3R$2p"da#U$ZQrTqP(aI6'KAIAmCbTB)'FNb5K*)(eI(ipSX
eA+XFf52*"$ZkRDfC$Y9rCDqr0RJ)KlU[0#&HrBKjXhSLAmDJF4kf-"KSr@%BIEH
HG%bJ`4AS[rESJlSk+MQj@Nl,Z,LlF!XdB2J1AC%2cT&H(%S5Uj*NY85+a2Dq3da
m,@Ck5QLR1epDpi%PD(T0UX[G#Ii1A@2HUZe9BeY@Jha4U+Yr@M$4GFQ`JGVHiRB
E#E-e+YL0-*j)hTFFAZAQFpZ[*'d3iGVDG510kGpJhNkJ650AN!"Uhi1-KT4XBKY
)01SI$frLk6RRk$1FDZ'H8%qQR[6(+I(GGdfkLDpq-68heDc5(`+)d0jIQQQGTm)
Kb-ZXl,6+N@B!L)"@#LA#Nep4ddRGGfX6-`2K$DTDHCdEZhd,96!X6dH4[DJ$@#X
EN!"(2IeDbPLV'e62aM3fR8"p3T!!5l5SX58a[%aL4MSa!)-!U"-ZY+C2D82UlB(
hKlCc3bfr39ZC02#@ijTXKraGkJaS,Nf*JalRj`$2HEq%c'"T,2kMKD#"S8Dp9'9
@(NeIVf$K[Z$el#iQ!Z1X*bda9UHRA%IM(hK+iLHGlS5&FlqK(NhmJd-+rAFiD-[
&'$DGNZ&i&lGcFaHB26)AYfZH8(j-)4Hh803Rcd'(M'XS[*l[%(@&U%6Bq&2S@0L
!bSZ[%@@Dj2pi#ap2a%3VTpG#4j+,lP#Q))E3TYLGG(1$dkpB'E+#-1$L1#D4KYS
5'`4i$)p1rQmiY*(L,C-ZE06Y3LX0U!L+C#AaGl(P+M"F'2Pcb"NCbNJedp+E-"H
aB'i2pH)#bTQ*[R2Zm@!ZiEiS5"IZCCK$&PX)3YDNB([-5TEKN5j6"IElZCm[LEF
8'IckP['h%em)0GS5b1X4[hihTaqeQBdPa(Mj%8j*28hN0rb)im6e&$diScGjH0K
5q4%i&T,RbfiUdQ!jH+Iikf#@)hLc91MppTV[DENlDirL+5!`,fZ3!)bm1qF(qkl
UKTYf,`[CbL53!1YcQ'P'rD[SCI9'&Pa5J&E,iVi0CF0qhqRZK25"$82l%0KL%R1
LC-V)Um+N)'U@Gm$Lk21"SCZ[C8a-"1iYS%DUKJSUmClj)NpPG8peBQS%Dp%QS0l
6&!Mp@UC$YkqZ*bc9"(1dla$m2Y06DF3F3FP)$i1ZV@HGl(H2A$S4"ar&"Q#Qp64
kFXp60Ep6be05#ZdedMiI%LNYUJTV04+,D50RdKa'5M%ImT3-HR)ALUj2N6bp+V8
qL5m0UfVZF!'3!#UCARU"Uq0qpH)@83IeJ6PL3f@`kDUVkRh9bP,##KSjDUkc['Q
)Ld[BHjaRK151$!12qXZ'fHFi2bh5J1)a6kb*1Xh"A1kMk(FQ(TX[4,%CjdJedp)
[-$1aDl*m14SCRkIjD@[X5KEN65aGMNTrbUF&NkG[%VT+MY-QS$5C0NbLi63NQID
!'KCTre-`[-(q1Q(pTZAA9TeUiUiQC8N6lR*cESH3!0FAp)G3JYLBN!"CJYcE@$P
[,C(8EVfPRp&QYZ%a3FpeqA1jSA2SQB$C&Pe5SFAiS$9G#e[T85J)T5TR"H3`&Y9
3Q"CL3JE33%6Nl-Q9fh[FFr-YEdZGd*e)XQAb-I`eZif6FA6RjfT#SK"D#%!l8k+
Z1X!3jlNp(*qF'hq-FkXMEJGq@qDU&Qe5P-9CAK8QK0-@E2,i01!C2CC@HjlHlNI
X0MVp6bcPe[RJLFm(5["-a,[cHRF9%b@QQ*20Q(JGL'E0G2EB1Y3#[+!8qC@3!19
hkJU3!'rGaPkNqcPIa!pqqE+6LeFG#U3$-LUBHDQ$!6C,,-(GFHLFfP,&IK(PmZ,
B"hA)1m*,3Rq&VEVqp9N,H$0#Ib,m3P#HJH$*I`8I2U8l*-j51qcY5TeREJb,0NT
DeFCPlKV9+mZHecZMhMdY2-cXRp!b(Lfd#rc#eG!p`AbQjjqXKi,K%*&f##F!9JJ
2K+(@60$j&,ABGeMX3eZBa@*BU1[61VZBh!@LcX$k0*b$3BrN#QrZF$f3!!2G1cT
(baS00MdTL0fP`DqERSkC!)!X&NX(dDMfl,Z$1[HRQi$T`#8F,6U$M[I9)Hr$DGc
l[KQ+*JUe,6ReTmblP2,KTll!hE@*@jZPcZ0'RSPrcS"X&J`(XSTX$0G0Vp3XHXl
h)UHEd3-Q6#QbmKkb"Sk&"VS[pF%@4rr+A-3+)VqSqVm'+8bhEpFmVIiN-4'd$Kk
4[$1qP0fe1"fE*di-%*iBJ%N@F&+K9N%iEGG*ZSe2d&jTELrj)Nk,d)[a[20BG+d
+Vl`3[iQd+,T"N`hP#5THqSe8rd2lZd*KVF9Y[(2qY,IN'0e%Li6YR#E%F1QfR6'
SGImaBR+e%pDkUJB&p3h%[X1#akDka#(qAPGG$rANI"eb%YDF,A13!"e&d5F#"p!
&5ECUVmJ#C`Qfj0lT$BBdYr3jM[65IKL9KDL*X&B2rXYjHMS,U'9cKViZS%e+"4P
,chJT4b8Kk3*$'kHQRCeZ'Nf@Aam8h9X(rPj"*mN[F%X[F(0#@@*Qp&LEk"#ke(-
#[*TH(aHG+XhHJ(-kj0&pBTB1%L1I,F)bHVRbCR8,)B94DTQ$)A,!kU#M(0Yhh,r
(1,qClMP[X)8q*[GUF@EXf[bHB@0Eb8A3-0p-N!$kXGQLQI3'`h))(0LSeErhBK9
'b&E066CF!ECHPEmJhh4bG$L(PrV-dZ2ej[DI[T&eR%3MAlEYm9j[X!Jqp@9fMVp
'Q%3INLZZf2c`P$aCj[[NQLJQbQEPaXJXUJ%BbdH4Xp)IcTJaD#kb2@f4`XD6SLH
q$HbLeqLb-Lpii9)*rNH*iVDR4iV)b@IbfDpS8(R"&094M3FZE9@RQq'Ta"jX-@L
pX6eY#6jK%YA+'EG)JaKUAll2EXIJelHT`9j"DZ@D1Mh!@q&)*#%0(J`HpC@6mri
4f-Q1MK(Am&Z5Kc4RrSbPM"0[6K4*Pam+pCVqXV!#mDeC',G`m`%fFIrclrB`#!p
)"lZhr"NN#0lqJ0C5ABf3!14)"KUrZ3EDcY%J6j,(i6'P8L8pD*qaB@eE8X1UajY
55h-Mrd-#p@"m,ejqAjM&e3r(kD$Ja,4m2CDYYQr3m'-mB0DfERpfC%R3D,!pN!!
VC5L55[I34@S9p5F9SY)SpKkeQ))2FUb560MZQ)m1[ami'XJP5b#cM$h,#c#TkYM
"-5"dVIQHbrlI65!@19)4%TllVEJDm$6e6`*fqTZ,-AjKZ-A`kAfECPEA'0&`Kr*
AlG8Dc$aqX8Qk6U)k*LR4'lBRXAa&Qh*6AUD8VZ!5i)UdEZ'$Lbdp`m)1&&D8qq9
c,bSKmKkjj)k4'k"TQFQ!J6fVD1libeX5qU9Hj+ZbC1@Bqh$SI*(5C)Tq+2-%Zm8
-BJLA16q2LRQB8EhTVq!ibFq9NaeC$B6$[,m38Eeh8efFK8REDqX3+Xae9VFU$9H
*Tq@FRq'hf5FVaeP-Vh4'FVEph+(KjX'*#%EEJQXMlPchbJj"4B1!Sq4jc)ai,aL
CdA2*JFf[0RMAlF888`6Lk)5bCMmG10MMjaHYHMCG4'6Sd((-S$[CZpLfZBq&5aV
UE8JIF4fN,DE$cdG$f149rL!k'Sq15f@FhbiLd1%!ra2qcim!%Cr!DkEKKeMRi[1
2"-6AM4G*$Z"2#BE*2NqGj%E2Z@3&,YCkS66+`CAXR++[*4G*`Z&@@L24(blAGEB
jZ@i%-RBLFh)#ihm1aR+Q!88F`$"a26cB,kI8H$c5G4M'i*BkqI`0-Np6464Yd*@
QldEQjZG228FI+Z&+9NE'im[M,JahJYVD-8ILemKmb5i5&Q)AJBPX"CY(QYYTkE,
Gqe*Cq@%Y2ZhTk@+)kI0ALPaLclQ6@mjPI`!!p)`%eH$fGckPeYN*-MYml16QJFa
j9[R8liL6h8&@i,FR5AVR,%erGEpRDQIT3iXY$'`Bhib(c8@BSd33Fa"aFdJkZ%P
mZ*Y&iBDiMK0A8q'BESpk9V6VFck)JL%bPmE%rN,GE%ab2i'qLVPT`q88kqDq4A(
QF&jiP+bKRmfYAq&9"53#XlYi1$h$h[`Fdd3AKiMlc1VhEfFP136pJJ$c,q-RfAh
ZNQ@I3+LhG22V`+9)%HLl*1'M8bhEDPIUp(cmU"SQdHYml1Z6jl6NX16L88F9-Qq
Le8DRUVQrHHf(A!riMK0AI1'BMGer9[qk9[82&Z-([6de2IpE[[GYkHC')rLK04-
h)b`-hKdPL2cP,,,!YKL`PHh9A"4@#,@-PKJU5(Ucj2*qMr+bfL(@SUJX[N#-hA2
lm2T@E@KCZ9Gp6$GTQ9-K%iIPj[T5XlM60@1SDVi4i6353HjN$Ca-T8KS3)4NMX"
-T++6PpJDCLZP'e*JIHhrP4`dc3"d+$Q6klcMEFp6%+%5$H,Y8T'5621$YfqK&)D
`,RiRTXQm'4Fi(d$SPle9llN2alq"lmHD!#"DPq'UI0U1Z*kY8J"83)+A5H,BhH6
[cja8'fq+V&aJ$65KNrip0ULc+!,'j*rcTGkS$-k--Q(e8Hl,)6[1JC!!0D8LS@!
'%AM$GN(m,CK%2@+aq&qIH)`ebkGHBl%@V@%q%[Ka![-PRXfmq-0iRAbHfkm6Q,i
"+MfZp,"[&VdDUFdi"`IMErd+1$QpXeEek45"5DDEi`pFf"YS8jMYkRKUCch49*Z
5kqHf%J88qC`R4T@j0-$2JG$[jYZlTRp+-pBdkbGYIAHMQ$YbffXP+(T4N!!LYl3
$"6@Z1PpUFDEXDGVp)$GLblD+haIZYeBDJ#Qe)bQ[(kCa%$Ef0N1P-V0VV,r[5&1
QRZcMq2Fe3'%0AIK)Y%"'#!bSR$(d(UkF[e@pY,T+FJe2$ka831Q1YmQLhUQ#4qL
C-LK@fS2Pb[(VrJ45L2RF0d8lB,)KQFp9@c[`kT!!qHdQS8pq*hARCqb%&VIe*92
5UjUB3SlkrRiM93Dk[a1!K1pFqA(Jr*kfKH$GH*)QNa%IiNXf5j4%KVJ!)2X#Z*B
[V[*-3U11c31fjT%cm03)Rr1aH@1Ua0$'8N1K+EA3Q2)&T[cjK635a6Tb"!l*UhI
pEI9LE#1f`"hAK%U*(5bhSQFJXSJ*UF`ZQ4h"J'!(qLPYrk&RI9RDML(GFlCc#9P
N`)N#jN3&Rm,V+pIAL$B6YPE%p,39EkBqXK,0`PQie)mQ&K+99SqP"i!4PdldMBb
,8T14SB-E3j+Z(jq(eYR8a5S2)q,qGCGpJX9"e0pMFE0'fUNXl3@T%C!!D4ic&2B
3"$Z[Lc4YQMRq5,BhcEQ&@YFA0b&B#@c8pi24Q'lM)4)44bL03E#cc"jFL&NH(0Z
#A!lYp6"!r-EZY[r+Q-3*VS$Q*q,q%kV[l89[kjJjle,UNLI0FCmp-MQ9m0aXIDD
YRR(&IXde+&9DR0fJ"kj@E*CUbS+f0Ne9f59VTkQa!9$E3#JKjbHMaKe%Ceh[PBR
0$rkZ19b"%@`#X@N-Qif5AC-r&QYk-)SK3@Gl@c"TD"$QTL)qKmG,Iq!FqS[$re'
5aIcFG)RVL+q,"[492fqDeMJpLXi`AQe3f)iRJH(B%dbpLbfPFH'Z`BLYId4Ym"p
@hrBil&P$1UYJ5mN"0fq("'d(@a(LXrKR6BX,6B"$$TI5$j-%"!PGdX)$Z-K@DX"
F0!e8$cb0+Xq--q'9md!Y"Ei,!ZmDk1kcG,2YbrM%iR%CM(!U'`pV[N)3$qhMHmU
["%M'`!ejr)@'L!HhH+,F0&'db![kDL2p)`mpGfS2c#5!65fNFJ+r9D!99C!!mC'
RVa9UI!A+%S5T(9#cjc@%Ak@h#3m,K$9)X@J$!FA&ZV*$C*H"bYE*$E'$!M[8+UZ
l`"$(lLIV!KNQ#BZM$E`8dmHE6&j0"#La+Me0UT-VHNPTYBf`EEf(I+L+ffV!lmb
NJ%SY6R)-l"Qf5$#dDLba[LVZ8PPUIqp'm1Y0N!#'(+-T-XjU5P$q(&EK"L!@18*
jqF"4#NQ'Pkh@&-1+"`jPCIe3qK'EDX339FM*q@$KbCD6#L$'V`$4aS6lcB%E#b4
Q@HKTR)*i*%(KMe-iQfV!%-"UKF@ik-bEAc)cbGAc@PZJ'k9i#AP&!RK&L-S4U)L
B,dlK5k9dL*653kCApTY@6j*K)2V!!0&MJlZ[L60K*2$Iq"''Cr#fj`I+BLVR,AH
230"DGk`LRHl)fHmjcl9[q$aQ`[m#%(2#&2kSaEpmCliE[CClmUHCB8$6Sc0fr1!
mBeK)MJ8"-i@jPharfQBdl@D6QM(HIXbScbdSNh35FFcDj2&pfcFQ-k[GD[88aid
QDeAD"2hh'N&r2)T9bPG,ISLI*0THr#5[d[V%aKR[BLEdJl(@BJK1FD1,!9*$Z3#
m@3HSkQ35"fUf(k#VQ@+PaQr90&$$m[Fm*HS48[8D2j-mA,!YHa#Vhb"Gkr!Z)9!
9iH+dDAF9Dm0DTVPk1Df$lA6C9#f2j$%J#-hZppJLE`V4k`CT5`lJN38)L9EZlGT
2V%Q,D,H'P'SL,fDDBlJjDrJld'Y`P"6F*fAbke$ZMU`,SK"j(L[f'XDU-KGE3iL
)eqEh",f!D"MPRk`VbX4[!jhcS*f0LG*cK"JV#IL5XNN'e#(9l2Rc!2Tf@[PLde6
XiQc"a`#q2HAa3b[&j,0c%kD"ZMe2-6Z@C-E`e8!jZ,S6DRA%"K,Fjc!@rc#NUUN
m8ZqK6&"E8BKlb43'c`(%@$(*l9'kkURiQAmiqeq*MBd(QS@Up(&V3EMl+0RaTlK
8fUEHTKlR*i5,@N`'Uc%q6Y-@+N&*8Z346Rm%YYQ820+5'QK``ZUp!b"`3&![CqR
$3bTC+pA@BrT2D0lm&9m5Jk%dMS1dSM[,HD#@%$'r*266jARej*0#@bY@c[j$mm8
J9Rhed$i+aq4+),fL44I'@1r4&@rfl"9Nc9`&Vc)bMXEeY2"0ShU,*NG-iIMDj!0
CXLbP"B+q!H@[c599aiLeeeJ'pAL3!0%Qid@,hT)c2`25m14UU2C)[R9&)kZTfpb
6+0XS"bMC0*1LC%k,U+ZT%Re'pa+X@J1qkDrD&pCQ0!XkmcTAq[BX[9j--SelA,r
BP""5E!CC-XT%I2iR*NIa`f`XR&'b&ca4XXh-R"PM51$6'6-5Q'ZViYb8Xh$)#qM
ciXL89N"NSa`fS!h-[TUR%ULDTlqSBk#ar*6MS'Ul@6iE'dKR+Z8lYC(#HKZL1`U
'!SImj&#`&XFeA'mcb%VeEcE4"KPT9ARm111aPf6*Ep@CReAmhULbLfH4jAUei1e
CVr%R5L-I0"#YK`P,,m9icfbFaqZVQ[)`+RQNaMPH$!HSfGjGDE"6N!#3!'RC+B(
(A%X`EBdSIM3%-F,28"6T`PH8%Mra43Qm0Tpa)3B[U,l"+N5XbEPZdFUK#IBUFVR
"5rY@V0)`Pj,4@!fXbAE4FCZZI%'DGa00+9+@VXKIAY+C8T-e(p*G(l!T6F'21m[
h%aFU`c#0ErHl2@JCeHp$PcM"@b&YRM+MZ(RG2c00EmX-4CAjR3+1AX$5"KZ%YcA
p14hf[kC'[P,9YARa!&A@"`[8ZcQ963E[r3PHT`bMXR3LS#MSSbmVHTm90Pm$-X9
H5F9kG5J5MRd"aUM%-!Ff5qT'q0C8GIpbq8R3Y!FN25MLf$US0dAX4Kl19$hrdLJ
Y,2"kMZh3TU!JjdLCh&AElbaFjK*'Z[NJpE%8QH#c$6`,%U"Rq8!5q0854Vrj*`U
#(B$"VRjXXVlajk3Lm2rr%KJ-YZ-ZP)NXJJ![XR6Ji4%`ccahPNQUREJcRFBQr-N
IiMUI'AG*r@QE&2&)V![lfk(A5JHEedP*6`p6B$(KrG1dp1i,&(3LP#8rP(!P1Yp
QC!G`"!ffEq@`XPhVY'`Ap6'1[RU9DS3@@PX#69XqC'Y6IYD`LL0(KB'k$jXVrQ!
`+f*0+`+)-!*U4f*(DBX@k6#"i,IiQmdf9Zc[Al%Sf+BqpM,'FV$0*TIA%%(LZ!9
PMV+Di&LV+L'RjRVJfd6J`mNiQ0&ZF1XSpA%)Jh!DBGJH*9)YqA+)%(3N6GIMYL"
[8IILhl'b'GP[**9a)"@p3j29jMp)51XR$)Q1!-#"e8VV`&ZI[DN98!0eBaQ+P$+
6bP8dqjq,F3M%[UJ9k$4EqXIkKA!59A8l)BVrXF-f),CKk#HM9RiQ%jGP9CbG`@q
b#H@eNE(IRH)!X5fb3[XC#NKT$2pSJ9U(,mDXJ315*36e"SE$"H8AUJE+Dp63,Q`
1Vkdfk-2qVqiHb(`J+3+VCa4&kj3d&m32bV8[EL1,4)k%Cp%Ul[-HFK*E!Y!3Pd[
S+mkTqrNJiid*pCTTbl+B&rR,BBPR1P,AZ`aN+dVed8YUZ6lFIN!TbKCGU[N6D*b
N3`TQkE"JLHdh!2abfSVrcE!rlIrjdfiTLeHMNIeX3MEpe2cM2dGlP-INd"kpXV-
C-jbRUVG1"CplEEj-PGK&HS(B3km4P3F6H-5Km$Mi&#iiINi8`"RH$K)r%@2KZa(
2#!QDYEJrIY*32#%k9FIKa2rm"bXKYP+M1J+J(r`p`k!R@jX8HGD"8iX5`XK!brm
CZ!G&6K&U,Q%Nl9k2!@fm*C2EmeA!93DS*2X'JZ)pfij55!-PADii62`#GJ18Ped
b%kf4Ya8H02e#`'6ej)cdV2XiY9bh@eR@11IBTqT!2jj(-*C+`4!QM4-5dpq&Y`f
a0dV-M`QDe223YK2fiaU!S,F*pPZ#NRZD"(J-iXJqq5,%3qZZE"H"faNp`X"hFUJ
()(Hd9rB[6X)'dC)FC,(66b`h8mlG*3"9chbX,F5%E*YN'r(Ge&m601XYC(5)#Zl
Ej#)!0EaSK52'*c4#!V+SlEp+DFHIX'bjKQEV[Yfhm0!j6RH+kZXDRl6VZiTKE"V
ACJC51$"md#M+R+,jMPjmm@bZT'!(ci%eC(SmFfj3qqJ(p$D3!%C,R3G*(M("U(B
U0!qjSMcbIjbPSI@l1i@L-5PkR,jC$YSc5T!!&3CdGNEU[8L"4hrPB`BVhUZXprA
M6TG$AIISK)Q!%U((jJ30AX"!KjJGTYr[(q(QhVrNLTe,HPDJAZT45`(d*G(LGc8
UFMCfQ0,*mlQAp')IPIi6S)4S93)T-1kiS#QE#N"T!UKLpXIS%YGVm4K9m`LL0I@
NYHX3E!U))r"RM'e1rTX'QX-%F-K-0$DDmmK+M-(-S4i`EmVU&#2Nh$UMEPhaYLF
95VG@IDi'`@G9"NhEcGBMZK%(,1)!fH*T#T6h29#S0'9&pM3`SKLVS@RkDBr98J9
$"b*2N`PLZ'R&DAQFph-[qY'''fe0```Bk6jTDG+C5(KL,A'P+TVFUlaf&)eL&62
J[[V*pT!!P3FS0Di@,Z#'6P19dJP1Y!S3aSLbBZl#VbHDDTZVbX'4D5fLjVLP2'k
'-UH[I,QJN@05`$JNESJC"@bm-@36Ia(3iM(9-(%qAMSCDXaqDl8Sk3XTX,j0j`+
#q52q6mU6A)f0+S1ja[0EiU62+9(T,jpTd(R%q$blVpakCNim1b!p4J3JShe1KQI
ALHCp3U@Kd*N`AI4$iAYM!-AY%fA0dNU@LcaX)Sf8LQAECEN9Y3kSjb1EjBdrB5(
FBR4`M&9f#LjKYQhfQeIR#RXMClKFM"25+Q@&I6`G8[c4BHE1lSINU&GUR1$MNaT
aG(DVqa25i%IKLAf`Y*!!(pV4C`Uem*0T09(R[f8,PpeG)E$e%kF,T*a$+RfqfKE
"YBU$0[C%3P(Uk30N"!I4Id6b)@q3!&5fB%X2H2dPHDe9Sl9[B6fmY#R(!2i-5G'
T+AkSmVMYlq4CS2Rba@[E5AZUcb0c@&BjJN+5*iDmPkJ!!H-rRMAmJ4HU#qZN-Vq
a+D"pr+P+cF!SY2RIrZ[8m$j*2@+PQ(*4cq*U&ZMQE+ClmEUmk+iK[*24JcAMap,
rl*2bQG(hmTkaF4IPr%!c0@,9eHAFUr&&M',D9d",eEHS$8M"$-j+2)%0V6ja8J$
8kS&3e(48mIq,@`P$J3d%UF)Xcif`FL@bP[X*dG(T1Cd8eRl$@lKRa%rPdM5qaCL
HJ$)#m)$Y1Z[96L4*$+HY"891qV%d!fJ'QPi)PXLHL#Ra&PJIi)e(CZ4E1IP6&hp
*9ScPDZMpSH2L'FVqrd@-bYrARBQTf(A1P56-'4XGSj`V2k+bNq,9mPRNX+EITh(
NpTrA`"XR"qQDkCjKT[1DThLPK6#M0AGA,i0SiT'l&SIJUVrAP(aJ*-ll*$Hc9Z*
crLhSTAd2GF"4(QRI`(dQ,hfUqUrafSGSrY+k*(CEmmm*IcXXSqp4AKA,V13aZJJ
0FBk!a8AJm)MhEihciXU&dP$98Mp-4jaZBq*A%D8qG350L0!HJ([(bdek[)`L*hQ
4TA"SpPYhZLj3`5-pMl#0CT4Y-Ga6lrGPa+jX*J(I2F*IeDKKdUmr!$AR&9A`lrK
+aPr[m``!r$AhjBR9Y6lKJ4T'+L*bM%dU&rLNBH8aB1S*85'kSVX,QKRCZEZPiVN
+9Ja9lfCCf'8X-ZGIpee"YrR[lbA(@XSaCTp2C$ZKYZ4$(JR@)2P@`-2iCrTl'(S
-6GIR-Z1ml1ZC"a[dQ5J#Z(2#&)%#1&AdC0#qJ1jYKb,6(cYC,@khd1D*XJbS#cM
(6Rp-1'lPZp1le+FM2[[5AI)%U&$@`fKRbB4GrJ0fI#Rf,""a#rXC*6B,K-p[AZ%
J#LJVa6TC!D@i1[Z++LcH9Z)j2Leq)05[[(F(p)-JAV8cC`,)8d9#eK9[[5VH`S9
RUeJ21@'"(d),&TT!#9d8X-`c[QIbJ`Y,C2SjjCG1-$B-i(DY(d%4M'E'krG@qP6
H,H*k2RehX6M-$I!cq%H',F+hXj`CRpI(j'b4KZ)`!XL8q)b63+"CU$jKRVk3!,Q
G*"@KB``NCJ4Nm*(dK!G3qN2+"!`pjJb*Z)f`)0ZYf2#M($08HpSlSAX0*P"31HU
PDZBkM9fQqF-[`lKBm6R`mYj(j*+E&mCfeG)'fKMAPEV),)EkL6CN0rmH0")4mA0
)LJF-'*8QG3ipj[qU`Gj!bSIjG%cUL'KV%3JVB-fQ$)ArX"(USF089lPePP2C8`f
2ehCfTGT8i#EPcPC(1DDrQSK'Qi43QbljF@SVU4(L0HYmZ'GM@3`cEa*f`NIfhZ3
rSF$0MU584m"ji&3QN!#l$HZ!J8AXL[NDr4C%HbrQbXIkSeUEXpN&rm%E%ak-)+R
3UVPQk6&de``QhK*Y)S#rT"!pp9l*)SVKl[$X%GT-91iihr8E!EECBVQj(2La4G2
'8G&3fR$j93eBGMK(c3N(JjriQ(9aF+N'k"Ca4XFSHm)i4hBH6HI"#aCA2p3Mjq'
[PhFNN!!Hh&3EcmcqGXH0,,L5#pS`hhkG`"Pk!"SL'@$ANe,MRJP3(XQHZE4"1C*
$44lSd`0Q)E@HQda+QHJB%,CdI#!h&%A#Qm6UV6&hkpXmJM-1c'S4LP4@%f%F,N9
6bX&brC[FaI+(*RS,-hb)8r[0j1Urq*Y(`qCA-9di*URUG'iJ48!(Um(J)Qjj`X0
A5L$I`8"q0Km(2U,GDcJC!'bTCXMF-M,NNQ,3q`!aS9NCb#9fRBH4Q3Am4C92ee@
9hH1a01eB+&kf9!Yd6A9Z%CFf$Ze0TdR)KAhfhBTDU49Jpj8$hChBbil#lEK4*M6
d9JFi@,Xc!`FaTKV#N!!3fqTXcF[)fmj`@kif,q'qb)!0F3d-mE'SfMJ($D#cVIN
TT-%3LDGJhm``@@&lXl(ae(M%&`(KdprICKZ"chhNCM-cXEfGUm+9!h$Y8$UT!k9
S!`1)rURa9T'H`9UH&+ZHRRb4lT4q$*hh+YFDUYMGR4i`IEpfU9'YKSj!"Cm'a0B
QbY&3IGdHM)fm+p$E-$$DfN#(M,Ff9)bi6m[4LEZ'qK["DYlNVfSaX`GY'[aX$LR
Y0m4#8TrR3BNiV6,$ZAScf+Gi$S"Hbl,f1*(*2h!G6*fR9Y(E+@#$jZa4-VrBR6L
Y"Z$J)Pi)jJ[6LQ,2B9T"CJfl[Y%6rFJ9"Hd1pNQ1Sm)r'M+'%@YH0VJ$GTqqcj*
4A'Bb-F&r8ZcJ)iRRES8d*P6Qri0Z1)q@"m8Bda4cIpH0%)(N8SemHDqJ[I`Xlb6
ldm(GN@L(j&m6U'Q"0'@V`(BaC@NUTlRapXL+b*FQ2,Xap(TB#C!!+G)8C+eFUC!
!T,8bflj0pMfXPFY-d9hF-(a--Ppr+%i)p8K9Ek3J$YYT'k!pTSja6I%aVAdG-lb
T6L@Em`Q!IC8rMV0"bmfCc,66(&i!#UBj2QGkmBD@efj(JcDKG`"h4eb@db4K$a(
F5SpYAPi9#5Q"PZ0KKH6)*D)66T5dG"SJ18[r8jd61'"%XPVS0`KI%lmd3VjJk'V
,mV0L(%6SG+BkfB&0qc3!64"1DP0P,'88,@9kKcqQe2b9-#eT(d,)DCjiKj%N&JK
2)Mjm5UP1S[%aUfl,Z*i9Ffe"maafC[*DNMD4C6#(S$m&3A65fmImDfCEN!"U%cE
+NAY"cEM,dJ2#a-jVB`jMX&[lGbmSeHcA0`3$mKTM(0VS%k+lK(1P,`Cf"I*k0p!
0V1Q5M`9N2*4%@E2#HP,d$LFAVEPY*Lp,$GIL&`48IQRNm+'f8N$H#ND[1KQf&Y[
epNUqNH9B-fT'3m)cK[(ZKc-EG%"9*6!Q,mjkm6[p#-IXGj@m-4q$&6GrhF2ZmRf
(2((ahRHGVV+m#B1edAFa(SfKBAdcEYGE042K#F`'50KHJ&[3&'@fc2(#HPGeKr3
qJ@'FL`S2`dZ40`e+9kee"X'4LqJTZYa%S,ViLVM42YP5),T)rNU(kQXl-GKXBB#
M(*[V@5!e9#*BpXZD2)UqECVI%3&ShbRUdGdQ6J(Le8JJK,2%[P'cq'e['RG)9EP
qL%MT4QS9NG5Xa"%MrBpRRS-CZ%)8KI$XJq$p--34Hd8&)29bF5(5rZc*fI!D4EM
D&#I`N!#ZIED0V"CE-X3Z66[3qSMkKYU(+F8[!#hUA*!!A(3eT1,,+m9Ik'TQc`1
UFaTKDArcGQ)"q8#%mCp526AL#$TT0A`+qr6'(eTZk(l1VQc1Rr0q4Mdp'I-D!)U
&dKU!N!#V*M&UBLCa@ciqdbH3!"SBk!)E[Ab0M,$pdfVmN!!BY2#3!#QeMQA&A`5
4fadaKG"HlUmFlBe5U3-'J4T#XUU'bjKD%!AhmkZUNGYaFG4'Z1f5A5+Q)8Z58&-
U*@a)G6kS@$q2F,!0S8&0(G)LI0ZG'`N33GlBT4Y4I#-Rj(Y)ZjH(541[&a#-&lL
+LCmE9'[i'f'HZa2J+EdGPcT"i!-fPei&-Jl@akLX`QkVIkkZYUQFm1!E*ld'S$d
h*PZ%*M6$Q@FBp*%l50MYmHADPc-)B2m8NR-XN!#@q-8(R(8TU-5VR'@'66*NkPh
X4Y!#f)c39,1Par2YdGV2[p(0@)*&(d)6bdAV2!TY*B"Ga-A5P`hLC2B)B8(E`d"
S)VIZV4@Rq4+"D,IDq0-@*4%JIfbA'%+I`[RR2X5YNlGISqKE(FkU,RCNA3)hdM1
If2*&2K[a`,iElZfK64(N,)-YkZQq*b9aXbS3S(GRfed2",6811N5$P@QNCRRcCQ
bBlC4`jpM4VD&hVQbJmfBa[(PEM'HDe8&cBl#[0QHNRZm"%Ua18@iP,hfUV8U2fA
N&bDZ3PE[S!YlmKlV@d4PrYMSPBBVBk`#S(0!Z[L`b6L@#6CL5`@!i'9K$)Fa!AU
[[U`J)ciQree11%A%(!T0VC!!hFT!jch!49LX-dLq9+Br`p#[Z9K#T$rZS-`e5G!
$-R1&J99UCb,`jGCrfi!4ih@@im3Kj8J)F`1Sd+VTKabJAqkH#*H`hD-a8ffQCFP
+SN!ZcjAU*A`haGVrL2)6m9f'A*1jq-@km8+HSPEpRjlI+@XjG142fmBDr6,c`M"
!#lP2KY[,2CIelD`aH3J&MJX"f6QHGe"UKdIVkch,R2QFfebRT4aqJmM$&8f-LJ+
'B*mI5cDNA*)eNUVa$@jfVUb&Eq3k0$$JS&)"V(Ke9E#*CU$%FqD5I8C9P-QKl42
fU5'2Bpi9CJY!X#Pk2H(e,ZkCmApT$!L!lBe05AXmZbQL!`4H(F`dFYj@h32KERZ
QY8N@NT%+)hYI6TMYNR$0'rVFEXkhN!"@3F,9Sj,4P+-"jkDX*TQ'QDjH`k1AKr"
FSj+4XaaaYN&NI8&[R%T@614XT&R%D&d,E0l$(PjpY$j*mML48kKD1BP%!PbC!ID
`qRhGm`EiS&QY(APYYMh$c&Y0Yme%JB+LM3%RB9qaD$HaZi26EQS9pD[BS)[UU02
Ykh[R%'4p"[MCC4,0mfqir64R0p6%6PdZm"Ap*dre,`MI-dS0S4dr9SjAJkDASGk
(KU#h&BJeY%R+K5+8N!$JSH((j,Tce+F8aH2"!pCCYJjF9`G'@+ZJMNB6"b$ilME
m1!em$GCV3bSTADH#8LA[cN3G"VXYUF3$4T&[-0KH#pkV%-@CqLP16kfjC5#,ANM
E#'&,ik#4'iF'hmSLYb)QqB$Q)TBR1C&`@,riLLNNHAGNI8Z4"H6eI9QX69rpa[T
$"J3F%MJ!+CQajkE!aiEL2&AXNcaMDcH82#+lAIar"p+FI0LM58MrS9X'3fH'!-2
iKT@J(!kAcGIcAkj`[k)Ie9,6k82k'NVlY4AB3X-m@JCrq8-hdL4a!!#6(dPU5A#
`@fmPDpD#Y6BTc5T@@rAHc"cTf)qM%T!!Rmdhf6(AFBpfKeV#MhSq,Brj,JB224K
fPL()lrGb$hlTp%C$qaqkfT'TSKUiU@f`qXipB("Gf[XT3U[S)fXD&iGqj(K*KPG
1-1c&cRAPa[NklDZd6B[!%RfBpTPB5Q&!8bS'PL4U,[hj)&+m*Re[iI*3Nm%$K%5
9hVIE8ZfPKQ6UY`p,fT0fr+"2021aI%&T2X8QlJJ4KRqHY`R2XmK+`eVde9D62CR
5A[NmiFakihqM`-GLMqBZJ%Q+RpKXpdhEHrJ0+LGbfG"9Z9Gl@aU!TdCDL*9M-!F
C5$&d&jQh`a(((j@kHm4Sh"@&[SEh%G-8)*&*dXMX%GMK`841BJeR4mMQXG0,!$[
b06i'SpP+BNreM@dpmBX5IN*0eACNC4i2GKG'r0[IL%fj0a%NiNq#-em#R-Lr#[f
QqL&(lQTapZF'HVbj0f556MbNc$0VA2hf9CML&6Zie#JZ,r#J""Xe$#q["M*3BJc
GR"e-[BQYFKa4da0GHd,p1a9IkdL)6b6$,Eh25A-,-Vr0F'!dI-JedEjm(U4rB2)
Mk!hQ8JKFE!LDIiR3(edC[UE"K[K*Y5mp+4U-SMcJB@d,pBe[UIfhmKV*I3qDCi+
k#d(64Zk,DXYrYSiYQEEQT1G+FU'hM)l6ilD#q*UR(`6[RdL%pd&5m!DfYhI(f#l
kU#1AU5#YkYT9,3ZeCUd*8AL"6biBST69XjjMmm)[5pXq(T95Z-H4pkG1F@DpE3C
@K`Ejr31*&Ib0)"e1$JkpBi0R[2EMrFG8VS`pX*EU554V5D53!#@d`*9$DaM)3pU
aA)K234[BIk-Hj,PP-+-ZF6&A28a6+`0J`lpEHUFPc%G4H)3J9MdhBc+R+MqIRIr
C*5)!@B6%@j5k4"d`X1BLm#*heSC&BQSGXRGr)DDV9H+h`"lq(GVCe3$[AqA*'AV
LKZllJdMTpbFm4J4M!j1ES1&qPqEqm6'JJpQeUQajMCcP#Lfa385AK8X2kJX99G$
QZU@RC6ceRY)eVDrU@Fj066Sl,AqSG3[@pN9[*aIU4#+Q$"(%M&0aGpkhY1q"Cba
p&#5rCM9p4NXCfPA&0e*X%q[ZbkPac&%eED,c[N2NQ*56JcHGeYCAEk"Mqhf@1#Z
Pp5`iB)%Q6Q$jm8jQmf$Rmdi'CN55XH1,B,pP2(J@FQ,ma89-3FIaEl`*af(!(Ld
fh51NY(dr&,`)XaB8&Y#d2*190(QbP!PXjrT%@ZkFCl-Em[E[*CCNLD9LFre42YA
EEmD[a9RH`e[kIc5ZcM4MGGEjFK9UH[1k*89Z,BrP5pQJ&[3m8'`)Z$h+5BHi$04
(&[@6EX`q85pa($2[dZFLc05Ud0!DG6[+&aYN9eB[m3U#M`-+T(N$AfFqZcZFEaN
+mfGjkPqYj@k9Z,j&d,FrPh-A1pQNj5KQE)jNAMheM$iK*kYL%P+8m9)"m*J4D!3
'AI$LBFX'B&aRC3U8,qr(mE&KR0jNX@5cMJUNXN[fDl$BF'qL"NU,$QGa,jFhAU0
(li@[Q(8SppYLM8Kq-e3rJR+85mhEpEl9f6%'9jNZXMLjE[FR+M21,NepBc!e,Ck
MXcaXR3fjd!i4DU+N!q$BLBIih+J6R5TRBCEIXQ(jHZd+(NTY"&1i425Mk#Q&bQ'
4[4C!(1BX"P50P256G,$QZ1DVA+3'5"GPI)m86k!pL908cF4@f*U8FH*YY2+ik1c
%%G3N6dEVRDTT,#Na[+aDYjLHR##dF#`V8B+UZ`bSiJ2c9eB$mi5UkdAHmd@%K*Z
TVXhrfGme+GNReS*1e"Zbr61(V,5hUF"D8CcR!$9L8V-f5m@lX1I4rEIFF68YQAk
G1hX*&C18qLDpCY8L-rS-0Xkpc+5*!LB$@VCrX!QcYdeP[,1Amp-Gjrp#l$R!FR%
$5-jKaLJRqhrr[@VjYFeC&F'dL8KpNfJlY0TX%e8S*p9-rTM2FETD,VQLkMRj4C4
Ta1!+X#ic6lBM$a+FPJ(24(P[$3,@PDpfP&D*#@p*EDF5)FIGS5L+G'QYZND@IB)
$CXMfMfeGXJ(5BaQ"F$69J8"JXE3[DMXpDQa'%$0,dAa&hMPU1f0)c"K`ETZ(h2X
)fAjheUQM6RA$D6L121HAe*m+CSF1*p3)$&0XJKAQkH*Fm(l-*jG@X)qJIm&,J('
Y(*CY+i&qJq6QCE1H3kFTRSa8L+Z6%0DHmmERUpChD'M1p'&mBj[D*Em3E`,pQ'a
M)L&p`+iG#mZKNKZ,T'9)a*C$*k)ZpL@,9NBK+Tj(#Lli'88rNfm1&)-2)GGd+4#
Nl@rhfR@86Hff&'rSj9K,fH'Bb(mHcN+I9Z[MrmVTMr@Q[i[QL`miE+PM@U!L8*1
jAfj(@'l6Ri6ilpHVAB6jiMJq!B,ffAZMmfGjX[LYF2D,8)+M*qK)p9Ve9r*@F1l
&M4@l0G%hCSb[,$ZjQKi@*'4BKcb(MaAcTcb@cQGHrid5Mi"YmFHI056CIN-rYTX
Y4PbJ2m-RpH-(AUm21MqCi'A1f%-1L"A%l(L-1JmKAcrTL%QVdqiNIfPNa9Q-IbZ
E2)aNbGk!ahiXaD4KP#l38c5hASTEeRk$X3A8'N%(95Y65Lf'K$+-b4)lH)kGkG$
#TEh6j+fG22D4G`2plq26q,dZ[2%P6Vi(ZJk&d@QmS0!G%3NFrB$,e@6"e@N99@F
#"La+b)25!C6SI8FF0[5&Q18PA6$%ji%RNekF#TX1,Bq#kD0pT5HAqD5k[Z*E@Gh
ki$r1+Ec[XX$f$Idk3aZY81NGY6I8-3IJf[D%M3,UI8JpQrhp(pY[JK'[ZqY!Q0j
D+[Z1B[HP8Z*qHNm+25,K!)T)CG3U,E*6e9PkdA0qQf1"Ff-,hCU"")Z(Q)0AUFI
22#,VXXl9F*q`e4L*'SS3NiNVE[1B*19R'KchmGC""GI[E%56!m[QdaE*@0ZV2Aj
Q+pTP5+TEmVTk)L)BPA%NKlCkGI8peYeZiXRX+00(dR0c,#6J`4!K3CL@VU3PXi$
Fqq'Fa@1aP2#f[cY'11U4D$69d"Aam@5AHEApQ(&$A%"C(mN)ikEkd29qU25kZf4
YXDNf-%&hlHZhDqHaS9b@eF%15D,MdBR%[0fBNqMJIJ0LS3k$Q$X(AR*-Y&,H29+
qL5Y-4`j[h3TbMM4C8$$&"lK)A(C*"-PLpLXp2+lH1DKA4"d)e)b8L'!$``8I+iH
MM%pZI@l2Q)r1P-pkCTqL'DHj)CS,@'6k#`pi*8)rC)C&)phQUR')Yh8XN!!MY8D
IMd``bU"ilX!5$2GJa4E$9k%m$kb9hVX(+rY,DXXe("ck`JL%k`e83JL0,"RS-83
*b$dQ(j2J!Y`3Y9##f!!iMMGm1lUY)QiZa%XDPSc0+aZ9"De)4QVQ6I8EZHIr$1H
E,r6A@SCejB(U6"N@9HPHD-UMcAcN&FP,H0%"iTMY0@R,a4Er0kk*J5Y[E!Fl@X3
c@EPV%+b6CEP,33`I5A*ipa"`2ejX"DY@Y4qDj38+35"h"K6ddU&i)"FB(bSaeq1
144BcGZ(pBPN4[8iIAZ)qJb9mYhVI8B6F6C3Fib5F)Mm8L$f&!aEUJD*P$DNmpid
"XC)#YZ%N`LDF+9Ak8-2"e4[,$RrYU810)@R0UGK%EGq8*IG2pG$j$"K,cNIkHPj
['iie3Gq*A4#%AH&6([Bh+XQ0l+jRc+&)U"G,1eX)[l1L%4P*"e)H9a+6K(R9,Rp
L1!$HV,9Q@RbSeV%rh01QLd39jh@22%kL,Sq1Q"R5$jVQpS*XpH"@Q2"JSN'QG#p
kH,bce@"$Yrl`a4R'mS)6r)+KHCj9@i1ZP,HJ&FamM[X4-VLhE8&Q65l9qqF1LaQ
E8G1FB#VHF06Dq,A*$cNNZ`K43YT8@K34apiHAAM9j6$YG6324UYFjM)B-R*&k$!
l%ZrGAcF%bm@Uq+&TkKDVQDS%9Q,j1fU)Jqd@Uc0ZQp3)60H!eZTj5"5B8)1qBZX
G(J69d2d`)MK[Q8kA[KlMD"*$UcYJe$6(QA[qXFC)KXDm@54&#LArDKkNB!qI3jR
@IRil,2VliDPVb6ImfIAi8MJX%'ci9@)[`3,-b-qMjd8#kNV3IL-NMF0%m2Y#B4E
TB#E-M-Z"C$BP*P'D%N)JP@pPZKE*Z3R82@,qhM#)`a,(qETH23Dqa`*Hi`m3HG2
J$&#$N!"Hiq9L2b$kpi-E!qq%5jC@$VS8H@d+$&pZP+)eT3ljN6-qJlN`*-N`2R-
pBYI'kBKF2JiY@p)Kb"hj&f05(&06"1(6bN0FZm$kl-fHD@D9Q[V&ML&E99EJR3h
)*FEbH1&TlRDC($dpDa`KE&k%Nre3q3ce@1#XHEGpZ(%UFCma$BQeaK3C0655$G[
Hk!H)THQRXJ#&+fkUP)6[Zr#3!!4J6'+&IiK&@GGRJHhA)$MYMh(Kc5&$kS%H#cA
m+J1'8cJeV*jED4@pb6#`b6d!KXCPL)r5rRr#d(RE!lEc%KdN''MfP,@)IeS93DZ
V,J8Y`jM,T1S95VjP['*lZ@6e)3LK-HQ13l'le$)6#Q)BMbSjAi1qb$HQ(63NA+G
R1L5P,N)jC8k-9NB6Ur`ei[Bc4Tl8Q`#'@+Z9L%+5AJ4)chi83'%&j6J*qI9UBSd
RF6AFHm,jY#cQH%!ld#1)T&NJL3rdH3ck$C%"kNDNN!$,e$MUah2*!1r'2BKD2UX
Yaec($XI(h(iV"keFaj9U!-0M%@,("im1ZQChHP)1%L2EJc2-#j59#2L"a6ZHJh&
b8(S9UfCR[rqj(V&64,D2NX-GVI,L98HE#Y0!'d1942!+GTM13HZIQ`"eJ0GqJYE
k`I26Z$"pr&(eq&)@TfP4[r5![HQIIqp([e1cpmQPPi-HG#rjdA%l%eNl$2E6b6l
JV@ErdB!rPMXlE*rpBhE40e3&6PX'6C(DlE@b28NVG!*Iek8k1r)(-)k6*)GTbQ+
!Rhihehl"JSrk-&YEU29p8TQRFJpPPKYdj0)[[LcDSEG8f*H(k!GB-Iqk%U["(%Z
+I%"HdXr$0EVJ&NG@6(f1JmdJ,5a(2q3qMpa8,jF1h8I&Lr+65Tj("AJ,rq5""*d
LLca!6fE6#5H3!'LC3%SHDc+A3aG[XhmPXGSl6LYD[jSXC$TCX@3ZRjlVB'iq[[F
&'0Gh4#XE63Nc[0G(Nh#Nd5!(qA$a6213!0&ZdAj'f)V"R2aT-+6pjfm,9X4RH(M
(KrA#595QEdZ(%@3G)Jlr0NZ(DEki95V$@r"r8b,N`(DeGj!!f1a3`BfUGG)B2dc
cFi9lkj-M)89'B9NHQVj6S*L(Kp+JQKASAqNe5S0Pb(m&K$%!'ZI+`)QP(KVdi35
ZcapADAel[FKYm3,2ZR*h3IrMdHVMfd5aic1kR(U`LXN!2XipL0I#*SB9[%(V6kU
C9'Ma2NDGV1cm&'*3il`UKG`iFDZ!lh-'FIB2!IV"+!pA+NMSk3HpMKV)bjZ00E"
KHTHUDpjTB2UNqpJE+a24bA&Y#U%"idd4Ir42bZm'F69Z'L,h'*EG&a2'c+ZGQm)
dMlXpMai`F-&kJ`)@`*pYB[)e"YA"d,ie#3rVB[GI@N@'K1Q'`&,QAafr$U#M`e%
XZd$Yba4#p5L#49+J(`D4U$EP6A+`mG`E!FMFGdI"$Qj98q1IBie*1I&VJbrT(#E
mq9DEX+E1kQKK@P2DN!!4CDB"FU-0*!3Y3TH66q1JGle#qliZ$m2Q1rYK$KDXP2Z
+*J6T!`ji!YLNXqXMh',ENhqLf9pGDBERM9"V#[K'mA)jI28@[Ei+GcT@J,,a"d'
DNcD'aC2h)2q)H,L'D!#'aJ#!+ei+SS-#FZKDS[`U4A89%C%ap-hMjDmCiN*mNcB
J4HIhZ&GSaBE4!%)V!pCqC*Y#lL5$hGE)b1'p!ifQciYb&j[+8&[#KXSP'bSXRd)
%Qh4(0&Z[R(cJfTD'DrSl3JCC,4$$c,6M6&+4&)&Y02'KSSQFB[&G4XjkPSLN&M-
f%`$[pb"THkUi%fL2K[P6edqEaR04He'$DHMC4KED(`@@BQU+6V3RKm&V[U#0hYS
pijBL&,GqDd%h[!H2*VAP!8,%IK6jKDEJa'XlHh')Dh2AflJ[Z8#AGB@hDeXTTae
rL4i2cmTT#9mP@UFL8jPZ0T8,"lV*H"MSEI8+Qd'Rr(Z1D#'1%rdm0hi(GZJljBr
*2+J"6kem&2+&JFPaQ6R(iT!!Y)2Mq'P4icS[S*Q00CCT`a*Spj)(Nh5l,+Ye4hj
Va1N##)'5K$R*jLdJ`E"(D-U'8YI"+-a5fqSHb6ZrPh$qLd!a`[9%PA+Y!UPmdXm
N@H-d`aPXQ%dqB@TREhZ,YBi"khQ[LS[fr'qRkUSH6HErfJCm&Zqe"Z$jCQS3'5'
DCL!J)EE%jLmfF`H6pb!pL$'i0*jcD)''2YFkK95CFkAIfD@qq&V8j$V@JEMB5&9
V`X[(R-e*("Y@Q$EkM&0acT9$H9pb1jI`eLhc0&(%KI0LE2D&mD+B5-K#YRQEKNl
[hdS3kp!c[meI)GL6kG`hG2PTd#p8QKLb*JcX'VUV%LdTk%P3Ha1+hEBVeXEcM-U
L-YEM!J8B,"GF9CMmGEIh4*&!)1Cd,eS[IRT,@j6lZ1Hb3c21*#h'aM`mX*0CbFY
`c+kF8jVR1f8aVL@[FVL-eY&Xld$aVkeMi0`$A,`M6Q1#%4jYZilN53aL&j[P'01
RAAJeZ@6DXa9MYpI[P++[8ba4VXhTM!aNX`LlKYeaG0Il16dmdV)81'fHA,XCekc
mfbJI'VILP`4qhC1qh$qq0d9q"GL!p*lKD(d%GE2kI3jb*&0e,59PQUi[lLA!BT[
@-ZK,,"6$p66q#SpF$52eAf%kqA,+*@-&qM*K%m-qmkrC)#j55EFq"FKbYR$bZP2
NmcmXd1&NYr$cq'"Yd-aU-HDe%[3bHTIVamr3IZFm2NHp&*58R8h6Ac*CE5G"0`L
PT9NX5Ue02!dc*c4BZ&8Sq+2e8SDErPc)9lY0e0#TKQX#m'j)S`1AcqESVaJ1"d(
ZU+H2jGM+[+*[D@+iITI@qbY0J##cM`C1&pZGd#Nc411eX&0JNQSSc3()r0Nrm&H
KSRX6!P"L!-BbrC(Z#%'NC+D2qCMqh[J'V2d(PC!!,MF"-+hV##M"1@2A0Y+MkXr
JZ0)9IY!&1l&Q[cpY0j2fdMfJ4$T3H0@(#k&9C0mlQ%*4)8PfHad5#B3$4IMYqMV
2j(Lf(*fBmQ@!qh8irARr0U%6I`Rf)mTd-J[!5IhM*&&T19#-b*Q5LV'8J"`95Hk
FH6*K`%fdNLV4V8%DHhA`#qAfb8a3pC8XX411C[,`fQp2VHMa%hrQc(c%KQj2TJV
Z%bN+c66bQ+P'$QHCjPB[biiLd'Q+qC+fXZRK@(R4"BQFjF+JI`'+PKFbCBd55("
6)DkTEMPL3++'bm-$8K-B3+bFkK&kkV[IL-E[13Um6%Ck1[5lF)DSRMQkbmA*biC
fj35&br2+9U8GbN1P(F*ikqYIY,f1kR-6L#ajmUBLh%XPcT!!-ER35epV!`pP3Xh
%`Lai-4Q4h0U'h6Elkr`B+VkIlYiiEHVh!rc,$BeEr5r'&@(3a-TKC##XcQ3qV+)
[K3Ua4cF"BlGHj'*K&m03qf#%6-jJK)BX8a+3!-SU6#KlTZCeMDbQp6DV9d2bNPS
B*Me43,pp8!iY,h3,G!2pY6q&&FAV#1mZd0!kGH0`@TER"ahGcHim'M8X8qY*XkM
V5HXJ4RpFfCaGdib%bmS&UbBR"bV(eDQ144HZ!*S2aG*fXp!MAN-`T!kj,I`!#N+
'YBA4$A4$R%"E"&0f5*BXU1Z@Xa2VdkYrI0N[CmrY5&Z*9d!'Y$&B51RP@J4*V1a
9ce)[Kh4FkD'*VqeY"#afkikcU1Z1p"12$M2VZ"ANBLhaZe(lfRV(f1TDf$rPbp%
2"!%U,+'X60A+8Lm(#*UV[-%qj!X*2paD&6pZTa8*Bm4m&#pLcpdGLR+'fq3HbbU
e&CdD9XYhqPVF0"446&dfhh1M92C``Xph3HHCLQkEKpr[MLN6&&5K0'AkI$'Y+4B
XGZXPXkMV*4-6I1lbpYe4IEjbh@AY2fUN%$+1D'#Q"#JkjQ$K9"cVRAKUV6UQYAk
!-`3d-32lTGkjcQ$H39eJB'J)KJj6FNm00("dHXX24-BklR!)HkP9+1[XiYZd#$i
5VE6+Xq(lcb-XUMUJh-LZ!a!er6DEke9J+'(cjRRk"'`*42+-lkaL`!K"*E+@d,[
K'cZaiq!3&GTKfYUG1(TJAadBM$J'ccKV,Yr3`#cZ6DY[eBM4&@%0i$XMGT,-V+k
5jHKbrd9@e[[QBKka39-IJU!CEpfplXf%&baTLlX([DLQiriV5dkC@m8iGPi%iPX
E"kac)Z@VDL%UjN4T!0e2@R4eVbYJTP'Ym(NaiZMG*`ekK2YT8Z,S'Vp&b4,(h#Q
-D3!XVdXD-[)H,!%9YF!Q0A`TUVXk%`DEC9VlHG[Lk%SBKSLem95cSPcZ(+l6--F
+p2K!@%9J4QC[eMVfQb3X-BBMp3DLKQU2Ja*BL1dBAjBj+cQdIKCdkc'[S!"FMPr
5afmr4#V'"j*4Ma03QdjHB%E(+ER,'JBkp(#k!QPYFfIBEC&AU`+Sjra@fi9FNFe
+f-dd%5"8N!"G+ALM4UF04ILAH&bD*[e8ED-DTq6[TB-FBCSQr94I%P1#p'VrUJV
dad!(+l9h(#hrj1p[56q'!I993XlE-3U3!-G!@N2"2DXe@j)@*8m(*@A$JhKK@3a
*Q+*F-j21J52SA[ZT8krJIDKTG8mmJ86Np`%+6kL"-3ETC8IA#Rh(N!!b9Q!hhLe
hjBZ$H,Pj9#E,0KCAIA8EZdcD12E-Mr1UEZ(V8V[*DNPi[`K,d9@rb`-68TPl'R$
ApVPaUp9RL9cq5A40j0d,JVJGqj3hZIqI6`)d)Xpr9Vrp98ZHf8iIrQ-i5jSI1&B
9G'03JY[$$T(fPF`ak@fkPACZhEah`LD+b$+SGDGeCTee#rXk9G6qmJmR%Ga0HX3
j&,&KB"Ir+FFT8[[3qNr-a8kJ3Aj'$,Rl4Jc23f8Gq`F+Hf(QL"kZ[*pak%9++Y!
HRbF3ajGCb%*VJQ(*3FJ%LC)@FRh,iGG(IIk0dPIAh+YAel2k2`31DQAB4R9T8DC
R"jYFM1JXFq[aqraedfUIAUrQ46i'F!JmIa(CDl3pGVfQINDd2IY'Y2P$CB0GMl$
%D2i%Xd(Mk*M*ki1[Dl0GN!!VVDE#9pFl!Sp8H&1ITQEUBHUTF[jqE@h&KQeYa'a
FB@LPKY*6(q)Tf`6-MNCS#[(YQ4d))$pc!RE,,h+)%r,B#h[T*KplZZ)fQB6rcP`
%38G'f#FhRTPS&ZN0G2(N,RjQ))4Jq3mT"`laiG!rpRKkG*S45GKF92,qI0Be6-r
eirm+A#hNcNB5Ac%+ZQ(ejaEq8JRKB[a464YQ$bd(qHppc1bK11D9VD11Q3Dq5-,
`Y'0hf[a463XB@0TEI[[eSb*$4[JKif@k5[9IFJT)cQ,(iDJM'F"([!`SUd5$d(V
Q"L*p6Zq'i*lhQJ2K1&D6h+iY5%ir@KfT!XCdNCiE*5&E9V6S8JZfd(BVj*+,6BI
Mb&lpRY[BEcQ5BjY946TY[4mD+&PKAdT1YhASPC+&'U$Uh%HH2'19Z'kEUQD90Z2
m3M+)BGH!mHZ1+mfV'CGJLZrNNlQ0)L"el5cMci&6XJ&"rLKU&UARM&4m*@Aa',p
X)I&9Z6&liN02Uf*[[F8#EHLYE!2*E6UV,f,2kEPm,NP(9C,kaRRLBUl'`X0K,a(
QefZ(QC!!ckp!,TfFlCEr0Pa6j-klKSCD8jD3!%%UIDciQF63JK#RDQr3j-kQHr'
KE#BhZqJ0-r8%GIr0)"*ar9i2'V[N4QPq5Y`,!50&I-J1J"1`,fJPUf0U@rABZXT
'B#q06q-XRc'4aHm[@DI1dR'ihY4[*CkNSSZLNIfQdN)pYD#Ra--2Vp6f0j3R5Ch
59Dk&#NbmTbYel[C@QcXmqR(F#`&a4Ac)Q)N6X2PS*ZNDfr1TR&Mk5H+kmEeT,Dr
4[ij+$-E#BeR*f3dV+Ie#iM4(LkKK*Pb[elXDBfP4i["mpr*hI@U,chP!F'6LPVH
qbiRDS8@CrdT[PlQAl9rkER)V%HeEe9BaTZ80h4%h4qS!#"2+Mdi%2QNM3eF35T(
QP6VAjXa!RkcYhLA1a'r`Yhc@*ITaNJIf0ae$mjbrqJ#4M@qa3r3pVAp[CITR[Ea
@UBkRd54d!1crFFJ4ZeCIkU55'80`@'L)hV,9DiIJBdRK&5qkdX2`@6MJeD53!,D
QPM#T2"E[pPp9jq8$H&`&+6IQCjbFGk$#&#AVI"(#Gc,V+Ddp"akA!$1`(*j[X%#
F($LF3"j8SR"DB2j"Qf!A,1K[9)[L5B`ei4SYQdZm*T6TLJ6h"iae01AGf"$SmSB
bEF@[,-a4E5ZZqJ$%-L9PQY`[`Mcp[#),aQq900l(q0&IS%15d)jh"`cM`CX+"k@
&PTN'ZrceVpT+&HSA#F3rB%l#'e5@0p4R96HF!r4lTT*"@aZ4idl(b'QRRFN,,R,
BV@#8!3(lI*T*$Q8B$ISENX9lf5a9%3SCPPSH4%Y1ARF")Y)-PP-6-!!4kjfQ62"
bci@iqIip[MGLa-Yp#MMCK(MX6-@+k$X&"A6MINAHJJm@-,e#TSKVA0j2H910k(L
UBK4ijEi(h5B&jI*#dX(%K[i!pb[EMDP1Fp[B'`Ccj3H1kaa[1$TXXXh@SPVAqN2
3CEPj9M(l'`hG9Te(L&1#aYJmVji6#J#qFAcrd[j'3KGTLT@c8&4'rf'YL@EJ8hk
2%k`fDRliT)+m"pf"l1Abb6`SLSD*E4@[6-c5MADZEJ$Q20jqDG9HL!D2%!"+#V*
#-d3**"IC*30!p9'&jG008+d6bNbNT9iFTfEAYY@bNI1GABkZF5jhX&rC(54404-
K@!ElI5CTPUkf8!Fh+rbQ1qa3![65PVLL$#P0ba@KPPk2j*)5[QYLC-T"M@5p+2c
XCQQECK&Vj#(G5AMZ@aRG(0pB@jqSrA%#-0a!DN,'%I5IYjL)a43R&,ULVBIim"e
YrAC()AIlNDmRJjrU3UEGBC9UVCLj"l8rri$+cCT'T4!Q5X!V#K20lrIYQ0C'r5S
2AlN+rbTLcI3#$ik)BZS`&bbF9QaL[T*N*XrkAr3Uc#2%pQlb3Hl8)fJAKS4L+r8
e3bUNp'rC`@Sf`lQ5)T+i!&VPD&iU3+LBSV,k),kXiUT%Tab`@M-GK!GDa4[Pirm
L`9Z'1QfYVrj@H3HTjD%mBba2lU0q!+d+9+JB#ePp9,m[TcdlZHMTh'eC&cQNY[N
"T2f'jmhd)!,pPYA[9[R3pS3IVF%mXp)H)[NZeG'B**[PaTSXj+Tm6RR*e3`dr,I
m'-KdF*Z!E"[0ffHre@Ql(bapLLZiSph0kIHB6JMYhA+Z!C)rj!2$N!$6Y3rMCL%
11#Rj34L!GkL$D1V+l3NFV)'IVF$#5d4*5FUjM"`HR%I1pPFIZ!Ud@`k*dfI$[J3
ihkBBHq6Hq(I#K[pNI5K+cC*K`ijl`[CCa!mA4HUEm,ZJ%BY0q,kc"3i8V*mIQ"!
Bc6R*eflfI+KDBrbfYYNJ2L5U[k-R8[J)pIK)4A#,hHFd)Mi'Z)pl,+VMk[$fM"P
kTD+T8P`+,U,,XlZl&aIL2i%Ej"2dFkecmCd)Lb*5N!#(1UjJm*@a&Hf2m+Nb4*G
QhrYY)DbIP-#N#Dejl3Pc254cXE+AV4PSS&QPET'*Yaa6hc@"m"Y@Ea54[p@H5L+
0&6ZlHRcNk3P4$C($L%A[&VN5laY9M,1'Ph`kD,SD@VQGrP%S,bKDHl+)bfLIS@&
`DRAe$Tac9((KCbMMlb)fmXYlG3S!8bl@KNGiSIbNYU*0Epi$mN6YLeTMEGdHF@T
86jRGilI!T1l-flp8iSN@j+c$VKq!,FT&KQMU&llYj05ZH'KV$,GHdDd9lf@EaEL
+YpH$6CND88j"Ej(UThQMQJ[ee"VX'AfJ8GB3F8mT1UPB(BVfG2rralZir`p"9EA
6(d*b'#IX#8`*hiT6FQR(eGBV0PZF"qHMR-4YSef1ie9lJ6-V3h)cf059UkccRQe
X6CP2dqmjG*a#e*I6rJfhX6-AZ-95S2iP80$EfXV`ZFTFK5fHp8TD"TXNe+8TI&(
HeDc3ND9PZK[!pdQ`p82QK"SNJ@GkQ@Rf3GR50c("S"l5iAM2TArF@+3S&ePIl['
dZ`HZfd[+Ia5e2ZS-)H@Fhm21kmX9M-1E1`rP8c[Rqp$9PMEcZS$8b!B'&BFHr3Z
-f,2cVVjE!U),qh&&6"Gp'Z6-"QX'aV#%8f'!SeB(d5c1A-0l&)*5(BbmDR[ZrJE
mQ"B%I[D(rM5YN3NH3h!'!iZfkbbBhrP,YdaVG4*$fBb@9PeaPN0GF4iDEa9+1ZN
F6hPD!)KK6Nq63&mIEHTRGM,qF41dAQTkJMa"e0`1&`GZ@aF(d9YY6kX2IVF(2Je
2eSacr6L0iTF92&`4Lk)2X'!AAAZIC[k2d$[b2k"q"qU$T!fAJk3QPb0J4ZaF[p#
%LEYUYZX[r%(*K*kMl@epM3`K#a'HV0qX)qR-2H1IjH2MRl[M$Z8U$P$Vj&"(!`I
fNAb@9#ilNeXALK86)F@KiraCp6fG#5r&JVB[rJkf&MRFD!Q'+0IK0J8M,Q*i!NF
c8bLSKmB66h1!T0NPefUYaCE)2GCHF4ELG[Lp,#1J[E-MS-FQm'(i8kT2MU""`pT
V-#%4Mp09qD`G"fXGjLiSV[)5Q9AD2c%rDa*jV4CNfP5lT)*`f``F(,irRL"S#`4
Vc*alVp#[D3YQ4HR@dCpl"S49Xmi&0aP[,Xlhh+21cE'X1E9QK)SI%@J6-XkZaI"
LZNj@#ZepZ3D[A+!5H[$%A9AY#$"Z+'a8Y5lLlTNLH#$qkVBF33lrRC-Jq0eJ-dU
Z%00ibVYeeq(`5ENk-"k")0*Abakj@I'(5r61*&2aJ2@L0q!*VL0FNm-FhPCXq`Q
"3IV(VcYE+il-*j(fl22rFrTprl0N)EmeN5KiAY5+F-0eb$0-,"LYmU@YC(mDrTC
"jkHYk+A9"KD,fTp3ZjF9fH,58j!!N!!'C8LqAF#[J&"T+A21#V'8Z6GacNFZ&@c
lC*e,!h@$pG4-,q8YRd*k20kQ@XIKC%DNd1J*G$NSSl(3#VI8B2#alY*SjkMJTYR
0brCiJrqXcTD)j3h'3Mp@Vq0FdhTlZY[T*Y#)m)!R-'IA9ahV,8SX@+pm+)&+CJ'
1GQpZZ@lXjkb+DmhBPYCDE)Z*DE#ZbTS4r+MND5k,i!pjT-mIedaL,dU(TLjR)UB
Z$E@GPj46R[c,-1QPj#idF#MJA%0r+@@M!)3JMMSm#5L"31VD`%qRa43+Nb+@$A0
m#X''aAkR)R8JE-dLm[PViEq928F6Re3B$8aah#Zi[j[cfp`p@1jqrMIf3fUb3jk
Y@0H02A*)SQEr[6ZL-A[DUL6@-P3[r#SED-Gi)KCSVJMDIa`2A"ZU*L)`dad$rU&
(Rc3r84CI("QpGUGM@mlLDJ#+%aQ25'0G$kVh-lRmVbfmQm2h(KX89$d[69cPq5R
6-5a0ShKr#i!fZQ*4VFI38&`D)m5'AXShF98Cq4B6jB!adVk5Jk5B99'j9l$Aq3,
j$beYMYLXB*V4E9#EQ!SpNI6#b@r&BbcXf[2`i#kdmj4FE-eV8'D5CR04CK$EH60
r4hp,&2-YPN-)0QGCJ+RdQhp[HRD,G5L-!bQ*SBj1Q+q,R)@,`l2fX%GaXHU2fAP
*$,F(iS+bVSV5EHR`dTSMKql`j6*GJ`Cm,#Sq!3l9paZ,%L4A,G`m5c4Q1#p$r(Q
1RRMiUa(ZCU*NbdGdUS`K#ER$0UFrpP`Kq)89eqq+d(AM6jqY[`S(90!0KR`+GBD
Yea6b'ZZrB''LbNB3ID&TFUV(&e(8,lFqAZJ)YC3qVpjNH4"[2EBHA91IXXGbl+i
NXm*RZ&-fjif#mlY0MclX4[m2V#+TYP8A0JNU%9hN03Vm4`LY&$3KEEVTZ%kCqp5
Y#H8EN!#`GQJipdkeQ4(S3,KbA,K1GBBM6*Q3!!Pe*$0E'6K(3j)Z(CC'J63JEeX
Y%H`H[d!D8!`3fXa)pJd`eVCFjk&p94[4VC(3STl2B'&0[e0YKYNKP-p-,d@T[N[
0ichD+4qP@&AFKBXLek2)1+DPlBSimSHR$+kK8!BUCq93'%V8qk9&2jT2E9pUE*U
LlepYL32ccYe&V8Tm'9Sl%GiCmF4"YC+SXGSSB8VhMHiD$$iT1RN)fEXa,2ENHQB
GpqUFIZr`PBX9kAkPXFaXCU9r8f8C%m"m,LqrBmZm*C8+CCmCIX4M5N,dq+ikLAF
9Q`r!6MKjm)S#Lbpc&Z1%d0`&a')5UBJ8G2"@%-J1J$Y'G)mr06m"*'"aJ)@+Hr%
)ERcPG!!"l9FeUGFTQI)FimPrM"jEb4D3!0j9cD,kXkNrR8FR61,j9c3Z0LVAKC8
Qc1p@#Cei)F+Z+eI&%#1%EA$'[3Eh@K%2DGNcA@U'b8!MAB*T9MP&I$SNd%qR*U)
)-!EFhbrDX9SH"0cZTG[CZRG5k*ZiR(pb1-NCr6"8k-!+NYq@8)9B93Napl"pJ)N
dljPM'#iZAh[&$N"T`1E,i-@%YC'$%j!!EJ,Jb2d[X&VCP1Ya"RCKD[K+D!"0DT8
rq1DKmE'CDF,p-[1bD(K-2I#1,LaAM"K`I1IKq)5kre48b8'F1+V$1HUlH`Tc"`r
YXL'i$SF0+Uf@19AclKaDhYh`c1iAq4@@ZL`S(TB5Pc%%LcDf2"6X6EGb-YV810,
$[D+0CZiiikCZH-%M!Y"@j5hM(R6q1bIild3kMF`Qp2if&TZ-Bmf-A9IVQ3kHmrM
Yd%$EUbQa&2!@4h2G2T%)9$FM*dRLjqT$$kDE+Ca!JrhTjTDUhD&035(%TJ04f@F
qQPPJQDfQFI`)%#d'9)-KT!VGT95dR%FaDb5Uj@qBJ02NH%Pq8Ula#Jl"'r)-6M'
NHA@j`I-(p,I#qNQMS4T!r6)H4pG*ScfJZC`a$+$r18DTKk09T$'c2A1-`b93pT@
#A191S3V#a@8B,VpUY[`f*4J@Z8iS'lLmTaDrY59`CY*02AUAe5lXG(fSHfP*&*a
GI5&ZMR3b*0JH2K2QVEh-$&j-(bY%&8$NS!p*V-T%Y(5ZURC9#3a0Z%"kDB$6mbN
)f9@Xh+TKPGN5,0EVbH*Aq"frf98#PEPGee)XiBLd0XjQra1m`e@TcT5kJ"+6$1"
Qr11VXTNF'AheYjVbE-2(YR26XUJ50Z4*[M(09bUDeDM8"qA`'1Iej,UrUNcj0"[
FMB@$fah+Ijc,UGI3(%1J4AKV6C2#QS9dTP'T$ZDUp4GjeqI!"DTm6E$Z-`80!e!
GP`LIEf'YF3P8RI8@rBlea'-+NbM[2$YCjIDAP`fD2C,E@Qp,lfpkDP%P6$k0d2A
"qBf`A&%"bla`bc6jG&DL*la8l&Th49Lm26K(ahIk9ehZb$,H9q(2pqc4R8Nj6Rr
fclfHUBZ'Xb@+((T&cG"2+,9I3$9)%CH$d"a0+JQ6*Q@)Ei,ZU5qT3&8p$aL8Z!%
QQRkFN!"+E%qiGb#fc&5AIfZ`8jlS02c)1++$cj`Z`U4kH"YGrj(GH-HrVZD6I1M
*pP%H!M-1c9B%866@hd3MU[p"d6DbCZdFMk@J,rM3h@Hd3V6G$kbFh%ZYkKj9j2k
NGlKU8AYDUh4Q%f8"k)[KGBS8AXKh"`BKG!XJ+5c#Z'Cc*5CGpGTJ3+%Xf!RB9&e
mTUiFmUhTYE8dE9&1F"!F*2$J01!EQ@!Fj$-$"qJ*b-*C9*EBef)+Z&9(3f``1)0
Fa-JHrZS&D)NEH4XpAVh'Id86j6cH(R8j6N"4b#E(m3JC"SV-`$-lkHaJC12(PbI
*02)N)JNp$T!!!'pPUF*,GR$*+I'M(jBB"d)D)*E2qVm3baJ3KfN3%#cr8F`$m)U
-5$IcbGmj!pT`AE[Y*ZhPk'Y`1!(c,,qC[cqRij4SEY0arVc4T5Tpf-PCbT),%S3
4HR1j6)"c*LDS2"JU6HZK1!)b+MK,QKJq&NZcHRQN2MBLhHDVmZ[`a0,*VZrm1F$
8@LlfrMNG$dErj)003N5KK+(BP#R24'NL2NQ$2h8c9qdG3i'pqj1d0BGQ1C2Iq1d
4C!Ah$PLIV9AR38NhhHhN@A3j6mYZ*C)P#cd1[k&HEI8R,ZJ%Z)hiH[CB#8#S`#&
cH9,DYGCa#iJZjdAi9+j-RZk9cQr""li)Q0B$5Fb&%e3$25CK2$4!mGVl1KU(60e
c,aF[iSHdN!#(U-N!mFLqGk3U14-(GY+l@VrJUF'q2E$4m8+qT[F,CkAcAY!JMK3
-#'ThMrmlA+Bbd1mjV(NAH``rfr%+CkjC2ZB1VG[+XYh3ikA3EdQZBDFpCT@[m@U
4XTIe%S-fQAHFj#pjCah%X'LGU*S!KcfjRdY6dYcM,)9JGh2k)0(P@$%!N!!DdN0
QmK`k$ZMP`LP9X#&8@&XU3lQj0K!ST8!,G)qC54jhDZ4dkrRb"i,b!mRd1P1pUq'
$Eh0G%*bEA"5(R,M0c`AFR2)k#+&J-VXja+),5Y*,a4Th3VVafJ*D%m8hd64!B$4
!*6-EJFp8p*cNS*c5k[*c3lDR-JiadSqY4FkZCjJaCYKm1JRA1L9YR2!Mqa!,+09
a8MI[!e!DBac!k&-rf`5@98qeREY0Dh@HKTMTNZ*PXD[JV*bm`QYb!`LrfZ4`ch4
mcl)LTDe'()3`HRAZq$jBe&D3!*9i8!R6I&XRXiNmVr+2m@Af`M8Y%qkJlRU1)9U
i0A42cCj0BY2a`lTB[aSkGjFHj*),@d`F0iFU2L6l2[J*3TBb6HpZ`j*p#L(i[0r
Z%LCM59AjiA$-idS9a*!!eNXIZa#i'$MLeimrh(&-l"E*rI0(#LL5J-3d5fbSmTI
*FpM(-@)*!*A%3f%R#!bEA%i"6e6N@"NTFXEZ)P"`,jp3dj!!k56QrE82D)i[dpq
IKGkrdl#X4D3SS'PhNUGGK+X4EEj2Pi)b`VJ#9-[N5348CBPeE"##e&-pf6+0Hcd
D-Trb%T@"Aj)Lj%*MLj(f%MMVBle)C0H%-M*$kYj+Vm8Vmq")Ua1DbRqB6XhS(`P
klVNhfCQ$k-5heT[BLID#H*)(C6QijM59QLRNqjHbGh!k[H!)BB8qHLi@EFm-Kk(
8@q'el!8YdmV(+&bB4Ia`Q(be6B2XHZB*G3i%@e%*mpf!($FppJ,XljUT5IL"dqq
aH6cdCJ&3MbY0''$U`rqf5k6$QDT@`IY1b2j8FjQ9PUb"(DR-aVT)*d[4V)@MVR3
9R[drCJMeTFNRYJQC1TAZ(5,EpSfh$jF3kJCb0f!i"V4#34&!"P,,0rq+Y8idaik
)!A[ajeUCBM2)6CC2laham%VLTmZJJGVYXrl`%@f,%a$UjF6QKrU9MX"[E#-h6E+
iPQ&YGAEQ42M`Y"AMlI*jpF-F8Y)MT(!Jme!ASmf,FYNK*ch+jTJcq%4i-`ARX*G
2X`dj#ZVT-M+MRhqZa#iAK(T(E8qFq"PI6ZFVSD,fA2%%@RYKlJ!(H+i!0DhJ'4f
dIGANFeIC#p9%X3DVI6KjI[,$0Z08D6#T,A@8Ce,LrDf5CIk"$"d0K3efJ)b$Sb1
E$!3KN!"eB%Lh#R*jDfiI4)5TmDZ3!%$rJMaG,qE5e9I8Ii'd2'dSN!"6TAk9eVA
e4'TLPBaRh6%SApCG&eAQ1ci4ak9r[TG9bflHKLqkPY(`3K8er"f@bGRiC6*l$%E
mpUk'lL4M'6iR4!IhHe2Zp4U3!0)j+`kQPcGkN!!j,&6(!2%6Zj6plQVZrR'2EdP
-MdikD#DN-j!!9XArMp8U3[@!JbN*4fK#ZL%iKZl(HEMB5CI)hZYP5(XBG`aPKPB
3R"8eS,fI3[b)'VT605c,pc9*'$DEKlYGBmYppJ)!Ta`ING0eQA-'XT!!mC!!aFN
L[P`U6VTII)FT+q8@M0[Dimk'UPdl@+AIkc'abb#GJ0+aGXb''ADU+!Cm`NKdG3"
XX!c2B%h'm!L"@d3CRh3`1e*%c6i8rMC!(B'l#fJ00q$21%i)*14,hi9D[eV'kiA
bdp"4FXdi*hPfGj2d+G"ke(S!T5F8Z[dA'NMC[aCfLVD2T*!!ZlER8jLa#(4MKLj
kD#9rr%CdqcYm-Q-dJ)I[T)H@3F49(CL'mTJj#Y[TaP(AHLKbRR)5r-bYcc9Y%a+
h-XrpV-fb0GHj#dSM5%N-,2a"I9cR6G),CRC,#Zi%&d$Z9NIGN!"5bQ[GlM6mk2@
Krb@P04ANJ*!!Rb&&4Qii@S)39*FI1hjB#[BK(8jKjC+D+GPj6"PDNkU%rbecPh@
hNB-TJlUXljcP!SmN)1TE8GK$HZl3Sj0)DR$0)R&eE-hK(F!JNJJLY$2mIX*q@eX
hlLM6bq%4Sia*EJ,3BpCFS*Hr1VYYLGLI1+CH3f80DqBdUV@H1[bJ*2l95!`AB%V
e`HB$K4!*[3,bK5jM`Qma-a$YLD[1HEmaiTdljTfIXC*j,l&R"#pLmcXG506ILDm
C&iZDj9jcQLe"M&3AB,,I8Ir['f'cEGb1#04[Z3#q8AZIJ5#r9p8+M)c#-(lD`Nm
"aX-f6mEC2Bk"@rAS8MXY'BE6'DTrkH(fFlDTUf+hk"h(8'&TC23qR*5-QDTT1pm
5fqS+S3,-M8M[Db`0V8MaeNC#L*dJ0&a`568Z))Q"*qCAHRFdfA*CTdd*HZ*[BkD
4[$JBZ!FaDT!!,lJNM-Ykj-ch@&45"%RbI9Mm`VUFZGl'Z-2#FRcbNcb4ldNaDAh
pZNfk4-6h3R)`8Qb*02l'+e&FPj)Te[Ee2AK$5$KXTBQFhZ)Grbd`1f2R"e5AS""
Xh8*SfDCJa-D+A#%J!AZQRkALRr((qb3jirRSl9ZkAaCU%JJf)`K5%'VB$9cE%Ed
[,kEZU"aQ(e6+f16CZcQ"aT2"'m$G$G`h-*X90A9`5QlkF%qYf8f6L($M8BF,EJK
UkCU[DM8[1S6(5@T1512bFjM("4((PALQ4ZqhEm9*429'he`($aCQYFq$2%m)LPD
ebGCpJ(f*-S+E04eJMk"0Kap5Zh)fB6h[CdHEQ*peP+k*&KFR)INpb,9%bDbG(`D
CQkF9106$0m!%ZZdZXQ+T#F'Sj5l-aqK3[dGK3@B2ie%$(*83+HB9L'jU$eTE1LH
"PN"b)#UqVXU+1(5CX5A3U3!bm**0-,fjl'r)'$N"9B4R*Z$%q0Fac66iQGTF5`E
QflMIMR%m[HR`M$X*(r3p0hA6B0#K'I&iK*D$6d@'EJb!@b+r0laF*U@Z`1kEfD`
iB8hT`&(9QleQhpmHRTUP5Ee+B,jK02ThiBr!f@Jj$C%Ci-+iJr%T0a1q,pL6EAL
)Vp9ElMdh6*88(H*f0*)#''!G'kXdmpQU#'[c0"fDc)Xa0ARNCbS,j**mjPRL("Y
iPA*cGQkPE,'4fh$'9mi"1XE"1@!GpbN#9-*c[AkMXC%"@&p&eb@P%T[8EM&1J,L
`)ZVXmj0IGI1ElR8q(B,8VZHEmlVc2!FSUS'ZUCQkCckeSA,jEr-YP[$[kf29E0r
S82Dm+"D-FIDG'2Zc13#K$)+er-6DIlQL-0+!P#Xr8P*Q+M*&T3M9FF9XE5Upqbj
2mF&45MXlYLeQ3e'N@I8G'%+LIe!hfU$KJRj[Xi"`ClKaEIVRI+)P9$U()kPi0UG
`,G-Cejc3"Tj4d*5E!2J@Uhk4mh(H5#6-,Y99G1lP&m3mG+D!IqSMVT!!5AXQI&T
4MH#edT,!hT+T[E&HYY0-bR395*Hm*c8lM3`![3MIHA#emYj@!*!!2NEL'rc1NES
2jXG0j9m@[h5Z"2N!QHQEIR,eD9,VQkkT(Dk5bdUDf%p&f42-#%BAB2BR&dDf%3$
$ZC0Ja1U%*21V9)`0iPJVHIf1R619$IYUc09'UYrbdb($dh$!'1'XHKd$CE0YU')
"@qdQ0bZ*cT2K1kf`+)PX4KIUY6AhjFVqef$9&Z#hp&Q0!+%S-F@(m`CcV2cY1T-
A!!EciYped#SLZflAaM5iNEp3bCc0kKEjG!HTMSC@kX!!q5`()bcM)b+KKaG,cq5
EiV1(EYILH#IS"X[Z96f[Y9CYi#HR+JrEk[Q*TA'45be[kRm6q-"eVrUeh2cre-*
@d&`1SKLrZdULU$jepH"c5&a&#QjS5,*a&E[cqUTC')Cq(JGERiI#a5G4!cFq2@Y
eBCX!SCaRUkCI`XG8pEVrK&LiLRGbL40+jEaF5HafPQF3cf&b$eb83`rUM+(TbZU
2++k,BA@LHE0cpSXmMD1lC-EDEZU3!'c2#qp[VU1J&j*HIMB+cH4B$"m$6VI0DIh
Ea11C@$k2-r3TdlQ4QG6Z*)rmV9Sj*09YQk9Jcc4+8Lad6eY#iB004cE8VmC$S3G
4eH")jqrKiL[*jh*rK1*CplLfi`i6fN8'2X"Ahjk-Z,i$ClK#iU[c"iHS(IL'K6e
Ce@cBCQH"@li!aacGFh!1BGL8(S!U2e&&rMpdHkG4$MMJ$E'qP*R@U5!5PX!r[Zi
MZSX1(k&mNfr9!C%iS&ShFG4-(Xa[@"fC4TdS8A'!1MCTiee"qZ#ZGM1Ea(IE'c-
N'[ei6@p,)6'@Ab6H(F6[mk&f5H@(HVZaq3-rZjqCAK8lNbajCNXZAH,kbQTPZEM
cfb-BHS"6$d[+%%h$#M0[pDHYUQ`PENe+8-#eEpMS0UHB6"DpV)FR(P1-L9VCTB)
1GMSJD,X"LBiB1FUBTI[K'YP$Y&8QNC6b%EY*EU#jZ9$8!km#34TYecB[5RllJJV
kD9Y+L'f#e#rh9TD65NfIYFmrBT!!d`h9&jalNP0X-AF-EQ42i9*$lr`mQaU@LXd
l`cI`pkF-S3bVk2)Kml@#5dI&b)FVSRS'TRMBY@6fMBL(3e1DqHXK*TGXHG$a091
&bK@6(i&C!H6q5!`R4-hJD'!P6M2bE@S6`IC9,heT+T-@kR#0U8`&TY6#R*hD-BU
"S('X8QLppjPP-A9XmM[KapX1-rliKblR+%IlBF"h9e`19c5,k@YP2B[VUMqSM`R
R62Ha6P3M5[C9Y$&K#)@,"qb9m2hEDmcp&(EZcRp[Kk3,k+H)BR3DP!AGF*6k)R5
G16BG%eDf`R$GmAB01kX*iPZA!2'-TE"q*cRASJ193mdp5[Uh!E(M,FCdH5pEbUL
-FD[RKmUjHk%dQMXlEGIfLL61m#YSA"LQ*dkrIJ'K3YmGqpNS8TF1-SBqYrme+q1
,lKT9H-6DKKhTf"kRjrT'a(H%8iZHUAB@13RZ"B8RZSBCJRL4'Vkd&AR1K#e*IcX
[@,q'D2!KLrC1#5ej#-P'XBF!BjXld3&C*fq*h*licEZLiMf+R6"PXZ#'2+jc+'J
k5KVJm[SIH!(KqUDD'lYJ+-kTS),IhdP2i0B[+6)6DM([0'ThPNcV3PEqYl%9k&l
r)`pZfBp*pjNrJe+&HYNQ"I`LkUqL)(*&*,rPNCdQ2Xri8-idHA1pbmddG2VU$26
AGHiUrZ@"!2rb-YahNK%-DRST*KY2S)lYh*+h$`RkM+4&R$T+S0b"H2JLjTr"*r4
$PkZS'U@hLQ6RYcV9U-raPT)3Ihm1HVfQNFD5i!b5p3RjPZ2DVQ2ibEF2NQY`PJ1
p$+DCG`N)X#P#1a!f5k"(5aB(frN02@,BcK)mq3e,2Jkircdp2`rk+Nam"f[T'Sc
LXA5EBeITK4"(2ecbLL#)K+LDq#Xk`+F@jL,1R+c'&@pKq#FSL!9X+l1ZYMP3ENq
-3U41k`+LG-+(Ic4LjGdEl$pZ[BSqGXH`+HHPAmBmVFD'PQk#9BSJD6LBUMNmfL3
4TSkeqN6+Uk-mh+I+NQ&U6*h'3!aR3K8%2!qZ3eBVN!"X"j033bhHN!#Lmh%GHb+
T,Tr,FHET8`aP0&cYpTkB`p,C'FlNIcc(C!RFPUa%qP9rqhY&A,#%&&%qaS--J9M
A'3SkC6hfPG(NT13+Ke,-l!)rqipM'@p%F%`%!GpB-Bq+hGp4"#55eC+'Q#J(q@j
JD*Q+#,ZDGBI`N!#(aFNd'k3X6#CmBm8*TA2!XpdHaZ1l+lN+e0GEcSPMr884pL9
pBml%fRNRVjjK8j)e"ac+QG9J%fb",kp,UR!@%X+*S0+6m9Z-R6FGr!cTS0pk,Ue
aP$b9$lqR8-Y@@aA4%AAX`HSHP+kVq#8IA+D#[5iprC1MYRD@0!(%cEC2%&!UCJ#
8k$3,'&$0`Mm5KlcAlCS``pkc+4%NA"cLF)SSrU0'**!!#lX!2PB'#)d(+eGXej-
)M3$HkaPjm!AHQb3[6'jAk5U5*jMhhA%UH5rk#!0#RiUYJcQPe&Q""rS!B`AM&T1
"8rM(3caS)i[Ve6pU)X1m@U(dUf4Ni&S5SN`L1#HXq,#f9Rd#qKNPXQSEBT4N2cm
ILj(JPl`QV8jf(U2R8(Q8E"j'l-ei56(9'J`S4&V&2hj"BG!fl$9GJ55l5h-cchP
ck4dF1c$C!2FCm4YP#J($bKNI-BrjR%M)JTVj!$S0Q`!KQScc1J69E'I!5IaJ$I&
GZ@PTj%2LdjSrE"6&p8(jj5&kY6[P1cha,YCZhpB%ZTV[J6-')re2YUhf@@1$U2(
ep6)YFpcNhPmT-66IUGrkBUTSX8e[fj2T6m0KpDJ'IC)FN!#P(qUTNTabrH)a8K(
qDLiCf("[c$2SK'6E3880I"fA$NLDkk3&S1#[a@"!2[41a9BD13"HaMdmej-j!02
H`r*`)3[6bNYHc*!!aUD%'CHaFl-8+jeN0MMbENL"!4d$&[[RLr4[f'Fc!h#''NY
+IT!!m8m#SZhK4cEaVdDLlC4E$I9rriQ8@YEqDXDe'XJA4S4f3Pe[C&U&H(eSNMK
5kSSjb"CY$rmG&AjdZX&2+p#!Bk0Er&65rTLFr"rNLU80I)5`UKlH*%`'J2k`6Tb
*5VN"JL,FBkj%He6h*a6Q%KEMA%Q!RkYLBcJN`&2"8QUDQpk4#0rp3kY(eUJVQ[3
T5TQKImkPfr6pCU1$'GherGCYPC&XclIlq[U-QiNX*%N-+Rb&,JH9a'ERdDU519c
G)3p(F*4e62)+UjXDPL&PA90`'SMm8-&5d63mm&SlU3hZ4RMPQrV-ea+i-hKE9L+
A'VPHd0#Q-q*ha490ahcKPIfQD**[1Ve,`+,bG*!!RZ5e5+UMQB"1ea)NQG+DNp-
4V00`i1j"hJK2,969-%G42HIpkp$MA8HfbqHY"b-%U$Hle"f6ZF@MM&2qf+@YA-i
(!KGrA3mje,*A[CCraM"$aK2@AD,Qm39Y39("Ic'BUk9JS-,[jId')6e+eem052+
K!3m3qLAKUep%0@D3!%ZP2PB2d80HUbCXeb[43k8%kiYj1$JNpIJ2@c3A4X&,qRi
GZ1GXj0db(C(I%ILaN!$Bcjc,@Tb%r8IVq[L)+LJ[,!VLm"9Yf&#Rpf'X5U`A,l%
P)h[30E6RYN4ZRYkC(P#Y6dKC`0#P&NSA)FFK3jaF)B4jdQ$jpBpfNj!!MLeD4PG
TNj!!%lVj&Xl&LHVKrD81mf9l@PM5IdUPbUMhZlbj28Z[&G$(cZP,$ZYmURmrTB`
PKk"F5(A$jCEIH-rkdBNcNq)N)*YAVmVK%Y9f[E8$VRpp2d9j3L9I@BPbA3VlM'*
mL[),'J(NIJ*$-8p(2(2K4[SaVm-mp43(6RTLI86BfELBCE,K'hcP`A&D#kc4qXJ
XPBSV-a'LPqGQC&Y8%MfBNqG681R1c8j#+q!Y&6KS*R%3KQ1Z-#*'STZ&YaJ4ikU
1GZh4eG[LmMI("2XmpMZ+qUlHiQcfTXFhamFK'13T$H+i4lVR("XS5DMa-Q'BA$r
j"ZK##PX8)"h@KT0(VHH2&%,b45G*jmP@XZ+4&L(11J6YUdfNb%hDR8mFFfZ*!pc
Ap"A5DiLV0Z')fZPem@R1Mc'hMjGHRfa'C05-M,(NYre-bp%lM-0Zd))j4(cRX1E
RDj-AS3daPQX!$bbYR[8*0MmrAk5*e`6%@X#4TGLN%UaDB2E%&[ZT'M+FL12PA2m
f,A1e32Lh$CFX&(FF"dal`SlA56PB"EXEH$(pS5+@A6*&)M[r6jrd3GIXrI$TC0b
#8f0(,Q#V-MGFCZJ1lm&)&j8MBK!@9QI0Zrr`l2XjfpVLNFPZaK+*Lh0&pa)*'NR
Y*#UqL$U%q&b+[kI$Ybd&4P3T-k1V6U'[SS'VVImGM$mKq#E&$Fbed-i054`m%)Z
(B99X%&V,fNrm+Pr$MhQU)D,#XCB@T+RK(*(X#B'B-+m#bHqp+I'T#,D*m2kJi)L
ef9cN@(ki,94((@cNIi,rSPbeUYAdQrL!5aPGeTARkS1aM&1!28S"YV#ImjBM+GJ
a4I5jeP35@FCPb%#rlf#,#@qV2eT9h!d'@Jj`@X*2fpc)@3)FC8!,-`5VLb%ccDT
4ZX69!k)IAS@SEQP05iI0M0&XVlkkM@9-52l9F%&f!rm,I'1cmr`*29Nm6la$aYP
c!,R)B$5Rc1VCk0"U$cbr-eCBalBb4ZJ`@$H$P4cN'jR"6PYar3D9icC6r,hBX@&
$DZ"Mfe8*e(+X,d%L+#h1Ge"!rNGdr@NKVrB45"3`I16'!UK@UZK`8ReL4#1l'f+
aj'h0qhG8K2h+&,M-H$iT`4`AIcZRVCP12[ef#dkrbXai+%`@5i6L4XTG-XF%0*!
!`#ar,r%N-mQT03)%K`V'5%M2M&#4SkAh@P-!,KjPF5V,Kf(9'8[H55TCE[)eTCm
,-SEV8M1NFieEP&'[q2erBh(Bc,fk,S3!c&RkN!"3kk0jSmVb9lUGpd"*+PM+IGc
&Y%8FJfV!EM!klbAEU@#!#4hDmNrkV2pm&k6Q%ScQ%+a'(eZf3Mj!&(N`E1$1SRd
(X,2CLddY*3JKHN$(iAYYaCJZm1Fj+N9Sj$Zh)aPVjB'Ke"AN*9LU9`am#HcfjZX
EPqUfHS6[f#hqqP8GGFA+IA+ej,I%kYri+9qMpqGBQ[A&+1kI@er`BCPIidXGal&
U#QC2XMHKiZcjq*@N[[5['*TAmqkNaFk43*J2VTbbFp#MFMPM9TjE$JX0X2MC`2*
jK0FSE2DpDL1aARR6P3cVBVAEb$RFU2`Sa)`hq1adX$[Cr0rZfFRG-2GDDLEYm59
e(Pp&2$0cQpCG*@FlT(VU2i@XHrfFXPVXcIT0U&baXaMBh`AN45K)X`NpdbjKQIC
NNZY3fhZb[l1P5@$I)Z%*rqeK8%mAd5ZmjE2Q1ChmmM'Q08S&P`)I@'amEAaXXpM
IG%!+XE@#3c+UV,I3V&8%5aL[Y$dp+R4#,6$[YE)#Y#pjLqGlI$ap9Rhm4LeS()`
`@INL#Y,Mm3F$&)*KpM!G$X50!q523*Tk4#iKmeMb(F2S!k&G4dXTRM0!`KI"kFL
D6MJJbHF%lM`RMGPLVaH!bJ5pG,6+AkK!$Bf#%jlhClLTB`"T#RN)YFqPa4j6JhN
JAIbMN!#&lrG5-*!!T`(-ik"KELfBlV9DJU%2jTTAhX`j0bIJfi*UHYc@fM(+R&4
qM%6+d(i-AYH%R#N@Ypk8BHdL+r68&)Z!",Y*9be)LjE@FEGGBrUE62DX2di$#'M
AS&['M8Z)D*+q42IP"9'$d%p'P&[2C"m@%6pH'`93-f9C@D0pC%h(Ti%Hl[@3!-c
KaA&H)LJe45FN)F$QD"JTjP51"D9"Z+Ch*991!m@Rek"`)Be,U+FH[PAh'J@bhAQ
XqDp$fUHT%C!!$Sjc#KTiSikK8khA$dqJEQF(A-*CGbET1C6CL$@T[HXVJAr'42F
$2%+8P!23%dD8IhPN(p"!@AG'RRaCLpVf3U5-iPS,`!-)8%k(2*%%T2SU&biVLF!
IeMrKQ(SR0-ZS)kaT%+L*GU(r`#B(BXp&9jcI-K&$aZ3m5PL"k0YeFRcTK@U)6`P
C'a)2d'HD8Cc%FAMRd"HbU"*0$8k4d8MdbTZ,i&r&q(%p6'&C#DDY,c`"L2ZFa[K
SV$Cl3mV9kNmF&36V8pMNJ+,*l6*,,AA6cY#,CE8a&8Y`&R(FNc*d+3r&A**b#VI
qR-J@T$l[L([2P+[$e[,mBI[SLX3!QJFh(J%C+Sb"6G,8C8%D#V8JlmPU&kL8Aa0
UYf)0j-K3)ZPYFBbh9UX'2'melQ1,DH%U6))C+##21SNmL8ZfXVk"HcBV[eB)1V8
"G6XZThia$LZYKE5XpXdb+IH6S6%VGdS,[Y@$C#YHSNK`SiCeVlYESe%mMh,a#hf
p@mM@F`"j$RldKm(B"$NA6VFeUDRf+i(ILim%f)L3!"GKB1'&&pJ+Q@K'Y(JT9l%
*ZNcBi9E3YC11VPmd2K1hlbBP'4#8fkh0I*lirR9e82JZr+!T0hjeq2KekL+eh$9
rHbrjDqA(KVZKckrb#BD*-BQ&%)&VTU*V6Sje5"`GSX,m!6&(`()r3@)",JFhih$
l`29bM%GR(@Hjch[ADA*a$`DjaF"B"IA,9F22[hTKrSm%2f&DZ4LN`'+jQall$$c
'66f8S01J)V'UPfaEUj0@0N'%aRY`XVfC`Y&8*N3Eq[S+Y3Fpc`(&l&D*k5rd-k+
rlBYb2%HHj$-UXY('l9JQ3'CN`L(3KXee2lR#d@2BTVMjDKbk6LBUT35(YB&1,$J
m04TD8E"PU(A5MMN22[rT(*cN9)a`aTpC-!VC"BB@"edFKlEi*Aa2CaCEkF6Qfce
2XYb141b!0,pF*i3-59l*rj-HV2RXSNl+(@#FqTiZ`e%$3UFDBQA'BpUNK&%'9EE
)SAm)Y9'$#$N,H+2RHp5-"Yb%kaR@p1`Lh&#G[(D%bX*SA#FcAB0$JEejBCSPYR$
MUp-*SCF'S!m@Im3jDNA$F8MH0J%@C(-Vi$2cYcpGqY@(%Dk8keR!E(EiA%qLPN(
(plpP0+5(YEY+Bj@`IfC+91R'h-*A*2kHrrNDMr[381*[$i5J1(GB'qajm8b@dP9
)939keYhICFkb1RT0$#m8!ClcFq@&afB[G+3N"cc4XEmN`89SUachP%Qm)J6Hb2r
L9H4ZmaI,GK!!J44[YUf%FMTam`eU)0B63TMf%-#3!1'TFCUrp)&YcIEa0b0R@r`
6*D93$arIm&jU3,53!08@3dL,ME*Mc@,P)HL"S9F91),(R("4&,f06`5dT&9(45k
N#AqjcJeAE45`45'G1%JK,Hl`4iKfL43',Y)$rV,d1JD#qV"Z'0#`UDP)ZIEeL#D
@DDB1R34J(,k#4jNk#+brrHINJkiRGTjq6CJ*@'h(8QYqE*a1&A*emGB1F0Vl(M4
P(l85pRfBde!e6P[U#rd0mbjZ"`*e3adci)kDi%8NJkCP`(5qKE#`!lciY)%f+pU
0r'q'BM@rm`ha`'ZmrTNIfGKaEA9I%TZBBD*)rcKdR$2D+dEFjehBX#S,&`BMe)d
TpX$$9c30NU4G'Dq0["j(G*-hbVHi5Nj'h2Pr5LADZDAH(KR3@eQ1H&rqeSYZGSJ
(reZdC9b+BS8`pZ"(+IHHeQ*881IQ5hTcBE(qTJG-#G6'meG-X)GL$HFf-Kiac4A
pDiEk0XMrZG%h)8aqVTfm%qeTMdRKT)albk9`*2Sa%#I$Q93l63Sl#[h+!S)1RY!
2f0S-[8$Kq`Pj`,6I'eelf+c4S+IfeP&UM6Jb9$Y#kFVCJNMl-i3i-5B"dQ@CkCT
rj-%K+U@,2a6jKmC([G945S,%**9pXKNm@@13!0JiB4+@TXeT%2[189[1b6Clq2N
)0Gff*+r"%3([Ya0fIme,K16A"51eX,'dJbaXLQJM`4l*JG1hhZ+e%I9)5B2cKKP
A!DQBVe5qkGR09m(k8%j@bAIFpM@UQVEF&I4EB9$f$,eGr(XEiLlMRrIhq@Q6)TD
N-0H)D4If9m#)2dlm42%0HYHk5Ndc,2'jp2Y+MS3d0keAS['DPG0[$cUj[j`*#jN
$dPC*GRhCF*AkeD[0IH34$PVCVh#rU'Z40AXr"B-4j)[C@1*d4mD$*"LdBCJTmR)
9"RXdY-%N0cVLK0-cKr!Jj'LY3N[cp4&5SYK"Pl@SM9$@"0hqf+T5hp(@Ar!2Baj
aG`$RD3MM`0#fIc8R3$hISaFALq'Ch%PV5kBpPhPd"K`LBD9R@8k,3DIFFPM2Zm+
C)%6""C3`!)rEUJYRbCDS,#dQSC*LLf2CcEe4`@k$BDZ$bGkq#LRZjdKJl#aGfAr
!L4N!SDpS8P$Z10NVCk5Hkep)D3F@pbF&N4VIYS,(2!1Eb9)C!UR%G6TRj$ba3@%
YlZA165`bVUDE4@N1N6N-CEVDmf(Na8acrU-G0C,qrfCdieJdkj3@00#*`pEbI&N
!G`le01$IDXNb*"f+5%XQ'kUGXXEfBe9hMrB42+A&$Li)HSp3STcYYlFFFkEjJc0
bpe+ieq),5K4llD2'XRQBHC-9RU#[-&hGc90RrN*Z"emjjLD+lTDD3PLAXX#)N!"
S-*d)@3jViDE2H"V15rVplHNc@4$AUKCBGq9)8%aaM(Ck49&LSCr)*8HVTGG`8!M
1q!+hqe#5CMk)Z"fiGS)HY@XZRAp,[V-%*kX(rj!!FZ)LDM#$E92CBQq,PRIlRhh
AS0a4J-Q`[R+RX5"Ep!dFr)MBd6!3k%8Siq%`RRJccCekk@Gp80cmFTa"SFpjqdc
+*`00[4TLp1k!KQ5m*8f'50@AcK5q41D6M9UaUf`)YF'j2krCc1Cq82KQN!#`J#I
DcP1%#U'FV*YXEiqejL&cI&'G%'&Be6&kV@#GcSHr%aKl*1D"XhSLP+QY`eKpphB
8PTbZ1S0*LVe[1-@YhFFNY*ZRi'M!54"p4SBL4,EKPAH6mlKVP!J*l8h8FliA'm-
(I24K'$i"YZ*qcG5Sd!+j`M$E1mc[A!-,q9Y!JLBd*DY!#a2YY(kfq)kl1P2&TPL
%e8)SRVRjr[j+I5jm9Cf[kQdQhaD`!ZV9`*5phj108"3!'(e!Te2K)m!1i`%32Y%
VblaQY5HL8kF1h`Lj)[4LfPGJFN*pTMbii5bNBMA0Thj,G(E21LqqG[%[$RMQ"ba
LRc'V,IB`@CiJV6U6*N)5EETR)'BNNaVCE6q44b!&h@&9Z*1)RNLYJ26Y-i[kNpZ
43dZX5cVjh+br5dd-95VqbR9F"F['%Gq6S%9P"pkjZN!`KZ*hRJP,G%-EehMAL6T
,'%!RV!H6U1QV2f#F*,e")ZNf,,4(!6jpiQ@R6ZelhVTJ6qCP55'"9SMZ8U,'-$I
9YcVT)+QB$[abY0aeJBZfXKETL1ecb)%dS0(T8EqQZZ`pLp`,[5Em4p2TN!#l-Jd
Uk(YZ[@NLG[!Cap%Ieb%4),kiLLR&(Fb$e6M+a1'#@M4$r'aKS*cDM`4Y5J2K-ac
j(&Fc3#6Gc-NI#`54a@RU&kpDR4Z1-m*!qA0#k3%DjDK#p+q0"9mRZF9Li*1%Q1N
QBUl@T,8pfdCPL1%6m)"q4VAM%Tm[DX[#&m"TZ`!Nb+I'FQZ@(QiR34i[Ve!6G(Y
QV"k)PM&aLh0i#k2q(AUFDMR0GE1IBp0GVe,J0VZ$IT,&DkMZ+QDmKD5()bi%,0N
!+)mA!q)A!%GdZY!q&jp(k!8Z3idhQ4HP45pXXQT2Z!J"4[,lL&UHTVaXI96Rad&
2MQkd#@lQfX2)UTfM9j55[!cM8S4ZAAXeJ`B)GBFcAILNV"9YG9%B!RN9DlX#5h6
GEK9R,1ZfdQi+&"LMc&'kM#jal&hl0)"*bH2a,M"eLV82UP8"EZYrPJV`LmUF("M
bh1lYr!ee[9E@`I54k[i%D2%%2J*(fLKHCQ)Fp#XN+Z+p6GC25Ijb!VGh0EUQTE1
k28#4ICFd&aZ5PQPipb%E[D$aKDLU9Iic,d8D8l4a5`mqC8(EBbENaZSJRMTN$MS
1X`4NjF,6#T,4hKm9m[$hLT+Eb@Qq1$M1LV1TE33"Ib6&D2Fb%&dACkH$[BdC@E#
e'fqY"8d8Jbe4RHLqA0,+jlk+8iP*TM9G-h3[cdZkmJ1QE8k(h9F%,#)q`5ZQq[b
EpESeSjY-pdDprT!!U,G5d02,'[lH2FVZ*IP()jU5DUKrJ#@`l6`E$VC8UV"H-2d
9dHU!+I0Id8LeMZ(N35j[pMqJ"9*96Err09IUL,TLAmi&RjF4i%&C2pQD)$pD2Mq
!)E*lL)0XKSefd&BTSapp#d[RHHZ*JTN`IS2EH#dS5ESerV1XrEAHBZ9!9)bSD5G
R-ma4VMff#2eSX(Y1fV(f&M!!6rmkd1Y3i!*3Lm5H+A+Eq#TD%*STd6jqCCJ2J05
b3!m'Pl8$VYP3dVT)GFlb(8LP`FG"0j%0mFp`P0,UGfFa$Z[L2VMTmGS)#$8pMdh
1LQE(#VPmh6'&UDBe0H5dpLLj4lC2Q(`8(VVI10,86&[VPK1Ii-F-T"2lMXArbr6
"%`I+"N#4#)'Jl8F5&SUhGq-iUDQ0lDKfSe4rc(rmQ)-)e"rcY521G@m5MmFm@jf
*ATVGUUTl-fVN%I&UN!#c`,q*4`bCli#ZEaPXRiNXD1%(9l15p'GfFBZ"LR4R00G
)b1)eR4l$kq)JKqY,2L)38!jE8J*lS[M+"'h8QhDlG%mX@adjCUqNKrU-"0VhJ(i
%EAj&'Y1N3QbpkhaAP42*Nf0cG9C$ejeFipYPVKSlEae*3qQUYqNp$i&4+f0R*(e
1c2,d)CUYdT`[q3XAGN6d8bDD0Zk6Vc8F3N1-5rY5ZDUf(Lc0mI4$$B3N2qSF+(X
i-690$eXR2J3jBS`0Sd%N[A!+1"8UCAqbX'+5kAqbNfR2[EBJU,ZhS5e)YK[A+`J
`0qZ8&RMGdKP#9L)%[&C+16Q!XM9UQX$5J8MAibXqX6$9eCUr,6QmN!$5'GPiM[e
04aQKZ1eT4e+3!+pRrah-"-"LFINlBY1UPECP'N!V(ZC4%U6Rm)!2KbK@6*-ZfGp
2ZL4DXm"(eFTYdlrr[3fJS'c3!Vj)aQB*j`M1KrcfeY1%ZUpfEZ@A,%PkTc0%'A@
i+VA41BLciQTA"2f)cN8M$4EedVF0pJfhQZ&-MC[A%lNpGEB)h$kJJ)SiM)N4E6q
BF!SiLHYNV!ZDhLF05rY+,ZrHE`jD2jC5DM,,F@cM-QkDiekhq68CIlF@fmr1I$a
@XSQN2(R#-b`diek4UCYjeJCNlhQJ+-k"++-+l1c@)3Y1($,m5Ncd5([6'eF2J2j
A8pqMQjc*@QG#3!BYRUS%USh&!hSPXT8)DZKl*pDQCR``CP(re"(PEQ)k![NC+p3
PqYX2(kY'ki*A8!`-iQPmHpk0m`%@fZ+hA+*+GGPk%NK12`e5*("+D("3EV%RVhU
$F4,0h[lq"T!!a@UMc5DFBSV$DNVq*G--iHKKSRZZQrhS$ViY!U'a39[mbT`a*%(
J*MiqcFkLd##6mR%5Jma4H%rRR-VPlSL@'IpXqr[KG,4&%GBNLc@`dkLU$,IjQ0#
MPV9PV*k"!#1m2BcqBEZ'AZ-DPCYH%TKLpc"3Gb"b!%Um2NBdjBK)b0$MdYG5!UU
+T&EpUcqRqV"4M-*i84!Q@Re2!jjG5E3Cq3+Dk6cqS+YAI+P'6&0k*!@(PT@a3'$
[5K@0aZHh4eH1'IM8(A6Q6@TNQF)h2EC!!lBT')cdmYf@Cm$`md90Cm9Y$%$4MM"
)"lSS8)MMCTIV@0r96Q[G(llYq5HqAL3BLaaFeM1#i)@lX'TG+e&cZ$MTPTP1aC6
C(-KrfP8ir3%3Pk[1ID8NY8ll'N3044r@kh$l[d(`RMiP6!KX-LASI[ISjZ@iDMA
[fZJIM-KPf$c8ZGI"hIQe94H'dJ5BFT*mSUE+N!#@()c3`Ib3!"jQ%Y&-qj&!c)A
+,@iAKHkrSU0lr3`f*b8-!))4U5`C1ZPhj1-9V%b0)dZMd"),#(ckejQ@H'JGp&V
mQBYb%'j6hUHilK(Ra[CS8Tli59bZlK&jQ"&bKNqma8Y1EX[Ia2CCmX%ZZ#BG9cR
F[4,"'10b9$1(@p'IJhZJBV3(+((a+0+MjZG8UAf0iKl10Ji54kI@M0p%XL9XSaE
MdBjVhr2!J'He-@iCjSrXa,ai)CH4%'"(q'8Hm$rMX9RcM"!$QLf'(NJ*hhme[5P
H88I-P`B$iDmD6ZTHhp2h5qbcGNMJD#1fm,U9Vi1+"ld(l)'QL1`jhUa-0[9Ja5B
dB@Nh5)%$Af$5INDQX4&T!!G"UmNUPcJl!EBNErR`fEGHP@h@ADa@Y4c824p1be*
HG6c&ZhfDYkjHlU4H46fdLHdZaq+imeq6fZL'M-KP`f8@JS5ZA01',E,E-jICJ&1
T'Mk0&(F@l+ZL+KBp8,32Y,jH`3'#I5bYA*5($5fRke3FX)[R'Pb9b8"3*h,IMH[
F3Nj9iHNUJI"l8&a#@`@kRp*LZKHEE&(ib`Rr#mTlX3E*R(!Y,8-V9MeM0U1@TUi
+kq*NXd9M&9Y%QlXAJQYCm"e"e8Fpm4`4XB0RfqjR"+Idq0ZHU0q(39bfqb2%VaU
q#'[J8imk6#5)0`kamM`4ZI$jNljGiJYGE`QFFlJ*SP*8Q0`HYrVBALk+PhT0,p5
lFj3K!)X+Ie&`DX%VSdmCFF2!eF+LCPMC4ii'GB%80j01i+UNU3JHM,59c$)l$lf
dV)1Z'PP#m0p&JNP6rTGC'8GpJ$24jbMBK[1RY2R@c5`)ma(1a[IUYdQKL([eDJf
%+c2FbMB3"Y+FD[1$PTJ)SBiC3MSFJaa0iME%U[0aAZUHFD40V3h8U2kdiT(Eb-9
PAD2F[aRqhL`N!4jkcI*aYcFVaTL%4dr)V-N[DY*V0`jNAlp%$AZ5@K(FUEPR5a3
f6+`,BSC@6ZAak5ajpETG*YYJ!-3hd&$!+!'XGB-Z*03f&XXhfk2'$&I$VK9P@Fe
,FrXarhl$mk(R%2c(5P`M(6mMEl06p2Qk"J``((mD*4JZ[XlT"rmEH092!K!klY)
reirXG`J#XB-*%+8Gf4j)pH(8K(IhSSeqJijpGNCVT2!eJ9MMiDVM`V3@9c9kUiR
5aBm&4ZNG+E-6(`UVVL0%ZSbDC2Q)YqLp#$FPB!AD(J(D8M5!LiG#+&0SGPdA*%(
91!@)m3a9Y-NDY0iUc&q3!$#Ka1CQY-3Z$E$!hYL0H1-j9rVQZ3a*efKcPdeRiCf
8aHkQ@@+r91)-bKFAp0@JBZ#mP9KrU!`*rB!+UqiA+#Q!kr,'E1Nh9l$04f6i''L
F9BTJm[r2$F,%DBJZVe-KRmhhhT!!ZUpYYRV-[**fh2LkiPP6&8Z@08c)kGCd-T6
GQ&&'1Ab8Q[iNU0"l,p*d`6f)$k*K@Z1ZD0%EM$qf%aFIFiZTaRe!mjEh,B1CF)9
"HQSNSjk'[pTY!pDj9#MaSI45Jii'kH-f2Hm@IIi%"bp6bP'CCU#0EQ,&K9!%*ZJ
#(VKQpp6Dh5[!08q*FcD(!+[GTI[,KlLbmA4#r$j9C5$")C!!!f!eb0Yd90CG2FX
H6%NNCDLCX9b$IFLXdJAHNb6IN!!*3cp-6Z3f85M(cFUG4bHMDRR%!c928eBa*Md
*HXmlKbDlYcQiN!#r0Tp'@69cBNDiIQ[EFqL(%J&'R5'q&hb2D5S6))c18pRiN`0
fY`*Kd5Y$fTD@Tkc*TjCFK+`@`HB1iSpe2Y&UCf0%JG8AA0EZ*`53!',MLKX!0!8
%ArfiackrFbdC"mGp3JT-@l95k95!q@(-ccY08pfKd6YC&5pp1,FdRm(L1j1EQpX
SpdcV*l003!C#JBT"@2(SFbIcj5LVi`Q+CqRPU,,E3133q,F5kl4)[9CXQ9iATl(
4D'VEk6NXVA%c+Fq*J-Q@r[U8mL19r*pYTE2rS5YC)Z!j#55[99EI"Si4LHT@mRR
0Nfe-LM2lB*eamL3FNNDBmbFDGbl&c9ldKQL'PYqE`TU@a2EZ)[5&`ZN2f,ZlNR0
p62dA$hDRQim!f`-DS!&)G+2)rY#!)42"5$()P(qfJ`c*3L(#HF6SM94!&a5Xj[b
"NMM)rir-Ra8IXGXF&j!!FRB`li'BLR4J)MKpCNPQCZmfI5YB`eTAZIXQjBeB&$B
iIITBYK9pPaccSEZ[Rr*0r0rGHBN*I(1%6%*I0N&2%fYi044M%1hE'EY09$-$Na!
*&%"M9,PY6qR,c3&)kCp)bRZG3EGE!ZZE(EZbqK3jSYq99'3TrJ@dEdU2!ABjZ&M
50Di8pKQ4%V[&N`+c8XE!D3"%Y$6aY"[SDmRb&-Sfj$Rr`P!f!6B#Nl2a'"c2q5E
XV!%(32P#qT[Ll6SZTl+4Bh28,p4chbB$fYeGpbBQ`Hp6CX'q1CR0YbC3JiFhFH*
AT$*",SBjISBQS#Qm,*4!@@9$B'ZF3Lcd))8lSCqrRK8j(UbkN!!4khLr5H1rYB)
L-U&9595Ec9NTY9[S[kB!UN+4@Z@YpD#&@03&(,qKqDM-eMLrIHd8IGJCjA$YQkm
b(@a6[pYXKa-$hd,'NdVYb-3&5,CB54VFVUfI8GhYj-ij18r,'fKCLKc55,)X"`E
e9fc%@EMJq(S1("pka3EGC(-@dbRI,Th9K81d[c(V%Ki$r3%*3pcCRb,3mBmbU4!
FHX%`U0*,(0[4D3XQU%c5GfM"KIUijNX!DR-i!CMJYTPm6K!DZ")cfPTT$!q9'2"
eU%`XP"0UZa$#b5ZcQ6kIY0h1rmA68$r`jfC"K0AHGD'YZ(Q@'p6m8D*N'"'q6r'
$%ZI61Dp3!qVMirI,GXqR29A89rh%5+iZ4NV+kj%Q1T@R3[&rFj!!lmLbp(DSDUI
D5l0QZe4!J#UB3!Yb",JK`Yq3!)[22@a!Xc%kaXAdPNS-RIFpmR##qFj#*6V)bAj
`[BESLa'Q1D&,!"T#+J-Pm9`4TbcVRcklm84FG(NXR23J!6Pd!dY@pXQX&IKiV8"
)0,[2XjCUCK`mA#&aA!-dRmQL"2hSbjpT$k6qeEEe+BiFG!d+B"mV!GecYCbjDqf
Y"2M(j00"9-BmY"BbAcbTcSY!!ca!GMl6$qY0"ccTRV(!TBV``Pk$2ahcF&6G)B4
P8Y[Y-$aqhE@Ch,cGNSAH6%4k)mJha,(+')#UaprPpk+P-6*k%UY#99((Bh-E5DG
D!%IqJj!!e(pPadLe88G*JVD[K8S[@bpmiJ0-XqiIMh,IlcGp`AU,Hqp9Be@dF@5
Tc)0R&GL3!''X*@!3lHekm82)$C4)(Lm0K`8X6$b5Y"SA5A54HU*Gl3!*L2pIRiD
[aaq$*FSEhQl4)MYhQT0Gc)1B3-J!pB"9&8DPF*(5*X@U+0T2cdPXZR!5KpqVUPQ
)X`$8(&JGcXpX4KLZ&X'L4IZMc2'G803(T@Dl!eJEk$GJ-H&j[MNi)X&U4fIG[EM
@9*Ea&'U+bbG4)G+pAN#Ik+*V+QZ,809U4qSiDEiXkP"X4aH-H[ALm!FRjRfBY!8
8kUmFSI3&&!l%N!#QjfIT[+&lk`Z9AUaj3[Bd6q9VBq,Tpi6,,h1P2UN82GkKhXN
PeL402Fk-`,I-Xc,-)mk0pk[8VapHlS-ESSbHDB%IYe,@mrq84b$2MIE3Sa)C5NQ
(J08&#GEdPcl$MVFT(2-[a-fmdD",Sj@$Mk,d`,0$NhJ6+,DpXP4#SkKeM+XH-f#
9Xrr)jkC(l!3#-BT,[MBTV%fRffY3Te+$[HHr11$'+iI&!S!jPj0bD%i'E`9Q)PH
bfVkaP+1ZJ1M"0J+Y2A+ZEBaXD'&9,Ld-23KMA6M$VDqH4r2`e-H@-ek,@+"S4G[
X0cX&FJlP'K@,)cAfAc#d'Q!QR9ML-c)$,j`'r%,P)pU&H1r5[LCFb-eG0NkQcET
@T,Apl+fra"LpX0`1Ee8('liXS,ZJ01LhdMe[KDTEeKC8#QeY[&mbB3N2ZPI(Crr
d8YK%IqDe8E(Khll[8J)K&#YI``h&&CRa[ARUNj)PFPhedI"f9mS-+-r6rU"8XpD
8m[Qq!ATC[K!2NAAYq-15+L1(pK&E(pmdHDRF-"fK`Dj&#m-bE@1YA+E3rjm5--D
ilUD#$hUD$mrY86H'NF4DX`LM(`CpQm+-5YHBKGmhBhkkaI25dCXGkSpXpUd,$&P
URAGQCTd[ZKd"*RYQ@pCa4UAT5mI(Cb`')"N@Z&dcH3r#T%k`1JJ&!EJBQJKR%M(
Ia!$B(IXLhKNYYbQh&0`%l)IeNI1Zi6LV*&8TSC[rYKcbr&3A3*j!-qMeS#DC2Jb
5S)X2iiUBa!F&EcK0j#NR5#)KUhY0#qb($*L[YLj'JP5*89E6H2bLVYT),Qr0VZL
fAVb!DdpjphrRp8kM4PSldZ0kYTNE[$Rrk"Dd[YU5$$)PFK!8aXDj9kl8A)[H`*S
DS0*VfSppdiCbP[!@AK**2#R''%%%jeaUe!BhiiF5G*0RVTZQF032dmepmrcBeY6
-SVc'h01'eH0D-)N"c[G[p1"GFLP5jZcK@cVmVRhJXA#ij)4@eSrVKASh'`ed&IZ
6Rp9r$@--Rh$V!jdM(3E6bXiIB(JbZMRemFS#"#$#ddK9)!8rc#QU3F(EF*[k2&4
(q'ZT@p%d[2lXf#QI-X#1HSJRAh1fZf#F9M"YKa8@aE!FJbB&a#hQZ,AN+%iNbiG
%Q(%B9C)bir9b1(f-S-FGVBKFX2`$$NlQaKFGP[Ai[PCZY[5UV'kDlfUTZ$qJYpA
Nl",XR!d$#"Lf$MMXAqAcP0Iq"KhS[Lh%$+6b&Ql%-D*K4NS[pJJ!+mecHQ3!p6q
"lPrAmd%'6GQ8$S!k$'qQ(E2mbPb6K2ibiY+#ZX4J8GJ-mpAeJ$'H)MUUFZJi8+h
2lF!`1%-di$riHci'84B@[a'+eMRdjTF$3E12#BZr0)Xjl5'K[m)&HfGRjZF'PLp
CQUkY(jl(6pM##Y%T&01NUVciVeZ'[#-fN`c3a%Q!-JDcSGP2#19a!STIXf)S`1#
@`bk9aVVLc8MEHK'@LBbE,I*G"3pGp4j-cJl6Emr3d0DrXD%Mhkm5C+0Yl'Bhp*[
qJSME!LfH[)lpEPi'#-dah59f2lmNBq3@aS2aKPr`i%6PZaHq6&Ad*%(fB9ZMFV%
Za&P&r@j+B)pV`#Uce[@UjX)ZR#F1N!$*GQIRmbV(BV9U1"e-KNCp5GMUe"+`I+T
5"QL9!S2k$,kkL&#[@DB`@q&V2KARj+QjB'AP[c+JqCi)r2aLVj++Fd%+SpVjS#3
kJ-2mp4*E2`q1diG4B21rFPZH(Mk5BD(SXVFJ%$R,HjpJ8cXS5chH&[$$RlU*VFI
ZhRHIQ,R&%"qN[@f6FYU%p*')3ZbR$R4@C3Q*3c$!m8-m`8Iip`1CSKCYCNqqhca
ZQe%J5kQF$Z*Ti+p-c!IXSm2Y-pQ63T9ac9B+Lrj$1pb'T!C2hQi@#m#!q1C%FX@
f*dN&)p#A6AK)a5GE5S"K39b-i1XRa)8Fl1UcNKTZQAfPA8&bQ--Il)9b#[1d3$j
U"Q'pjr*4T-DDFMiX"rem(QjB[VaEZ4F2#Gl&6D!KYjHk#+AJflF)EJRLS5F)%[A
iGVTY,cM*mjiVd+k-h#X93C)$8jXke@dlbI5R!F'0FAZ()i$%[fZM'5Z6d),LP+R
qM8R$pP%pQ0AMTlA-if-ah%!&5"'i%Cb@jaF`"13566I%"XTN4G!YYY6'@%BZUJM
[JmhKK098f&F1dXTdLeY`E*6J0kU$iUK8QpmCrP'E0U!5ZISd9A9Ri2SReMbLR*L
B8,&Glf((`VCVNQ4K'i%lMV8[RD,i@T5pB8i-KVd60`b5cE@P6EH&+,mfS$@b69P
jQ5aj6PU15*1)9Q92'MV1Z99Z)P53!,9)(38QB`FRla%QNK4l9K!R"MPUV&4d#(Z
QiHmHYP%F1c02J%)dA$3cEr'f&1Db&$I`HpB43k'd4ZZKDJXP28G8jI!9ZldhkF$
%Bkl4KRrTXk60q)MMVL1dYIbqBC+f*biBIGGZIfe%8RP)2(5(AiKNA34GCh`hl*m
JJ#8HE4eZN!#`&FH4XpA))HZ"9LG#Z25SI"HFrEM3p-VI"SX))h*UfRpb[b2jc9Q
@Dj00BbkrQE)BHm-1YM6B0S(fV4@Tq86dl6PBCBkdRA806BPker(T9%,98jH!j'%
N`V+[L`IZB3%FB9(+aIB3Qh!52i**JkDX$Ukppf-CVL`DpHD!"ZIX9Na"R0"4QD0
UEdc@1Z$%`dAC64ZMPH2!Z0'Eb#1X@`l+,FJ'NN4)C40*-pGjUa2a!(@ZILJIN!!
T1!(14[EhH8UQG9J9!aY9m@p(V%E,,FhZd,HXhNh'ML*EC9)ImZ$qZ1JT@Y%iT94
"Gjrl',8f-XJpcc&`*N*dCNN$+1!8#AJehM+jCG4IcbUbDCC([YEdfUI[!NjSI-*
YM2)b$UieK-Mc'Z814rMGP1[b"`AS@"r-CZrppY@q2hpZ@$Sk52#G"BPmcpX,K3Y
G*4q2QT6A50Q5DYj#&'VT*'E"[(blCChrk)+5LT'[IY#L,j!!8+kqN!"(r!(02G`
2LTQI'jKLXJQ!TpHN5M18!2KmjP4pa8Hc[6pMRGaZ0ZhH*8qKh(q!26#0[VQmLYj
@iEXLDM-d@D5Tb4-h80N(AE3$)6mdX[iqaQZD,H[q-P9C$N$$,Z$c5BmIrF3#C%X
&pT[L&lE83BI",,rk'i"jqJSh`NPTr46d2Dic-aGNpZTKC9!m+fK256)Id1CP0Gd
[jIm'kDi4K@REbpXBfQ$aH'V)*YJek),a-G%691Y%&PM)6`eNGRi30%LRR!qmh3N
[#26YKm3-8TEVplYh-pNN[lrMZB-BQCj9h%EbSDJaD5blJa*k)GhjPl2NjSPcNc2
XLhYCGkV*"m55Y*A"p`@(A#Sq15,J"3X2%"aHdlMmEGd)'eb!GrIRd5GGA$kIIVa
qBmL(A%hh@&a0fUlh2EU1Q(1F%aN6-e46)-'G8b*F,h[lJbABh&ADc9'TMe@23ID
[LP88@#NJ5-2$&1Cp*kCfX*f584'EIDEp*XSJTHdI$#q+aU9[&Z-R&XA'cBN!PM"
H6Ql16R'9E*IJZY0pQd)GcKHZ#'EbPXV[#q'rIF&Vdi8pZ%&8IG-#qEh%)IhMK-`
!qS8mPAe)[iT+QSkKRQY9SmdQqmDd13D*HIf8r0)!Xk#dfqKD([M5+RX45@l6e"Z
fZE4b1*)l3Sd(VjKLkmH[,r#YMM0GpCZ(l1iAf8`6'+`c3f)P%,*L!HY9iSh49[G
bQU(Kf$1iqFSB+Y++iN18JmZ"DB22J#LfEhCq2KHV1MC9FVJM(dH"QY6,M5TF*U5
"2-A(B)&j`k"A3C,M`kPcSEd*R5`ASKN0Yf`fkCE3imQBXND0Z3Cc[HX*3q966ab
mQN[%cPd&pR$P!r&2AR$[!!'j)aFc'l-QiGQLZkGfYf'2%Ze%E!JX"%-(95BpDZe
f%j!!,HK()qDl@e@HP)bNcULFN!"24GcUHrE98G14f!8h34!8$#i#I8@TmVJq#h#
R*['!mA"3h2S'Q!6A%@qCLl8L9R%`rb-*l3KNmX21BLBTQr-&4H6J`%)N[3$F+jm
AmG-NQ1&AIH,fcqj3jbdc3jVP(&rb3GH@%92NZi+rbZ$T8$,FlU+e6)E!'ZS&DG(
MV,QaS9jM,+EG0*3"CejQb999M"fUSK05c)LLF84L&Q%EN!$0`8m%[!AKl3L+[,k
SN!",U0TBDC`DM#Dc(4e"TFbb9Si#Z2rZSQ0LQ9K6EZAf2SE9HG%!%05,Ke,fEL5
VG)rrLT(E95BrelXESJhm*S,N&K23RIG9'ec+b38RPqLK(50d**ZTR$-cX6Aki*E
*bc9rB+Sh#pU!4TRSl24i&MU@,3c"X@bE3'$Y8'%r@*!!kDFjG#D1Tr)Q,p+RJIV
qPmiK6Q13!,K06ViJ1C!!TimL,d2NREGS,mJSr[!V5KY&ETa48(C!L@aSqD[GLHQ
F!q&1%GJ`*F5BB([a2L"!+Klm"Y5'fDTam)9qXS$LT1,mU"YIFcPrTF[hKP'"@3)
SD[1Ik4+em!R1P)mi5#3Tp"ieYDLA51)PVL34MmdAm6lk!m#k,d1H-4$2PS"!S`e
hiVYe+FQc1pkVBMaLffZ'1pPPGq9f&M*-)%'*%#DlMZapk0AS0[kGRCMG8)I$ChG
e'mRTQpCY,ULX!JC#-JY)L'Zepir&IMGSDCKle-0bf0FhI4`SP1*i080hdrV3JjR
b5mQKB+G@FJ+f+bYFY$j0+[Iei`#JPIcH[Fel5KqETbl#TVUS'j[[P-9lcc6S%-2
c'lAGAVB`X$h#5TP8iAR!-ZqIfPXi&HYTS46)D+d1jUGLU5H!SdDB@-5J+qRAk8X
q2,PUSIQ$TTDL)4KpjNC[KPT#AR4Ydpf[(2UU23&iS!GDciVSDC!!l&lRQdbVm8h
,#I@bI%b+8HVT&rQI81Z("IHFYPFS%8R#"aR%,i,aDBcKIXL$APjFJS28fNe8X'k
NVT2LIYG'R(`'-1L)b6iYUCQ4,aG2'M4)[Z!IjRClN`L)aaEIKIXPKL9qe+%d!--
c@U+Qq*r53Hl8MFA*Bj`a*PZ)kJ[AMJiCGMKqT11dm%L10FVp(Ed+[mCC(C)Y[EF
fBe0Jk)Rpa%H8j$GXF,RTj%3&dcH!#JR*@SF8hf,9$+BeeqER-Z6YYD+V+llC)ie
2XccReT&M0&bV!&`mJ!difphbal($+ZF0-ShGrXG,9D8Er[N%+,Ta%)5)Fl+Z)mk
!R-#d(dMX2B3kk$jlGED8KXTc&kjYel*,kY6EaYXG*2CCLqIpf8D2$PemUUf#jID
0K+rSP2dK4ijhdpTJUpNT8V+%JeX1S@T6%cL"AkmR'&dC(@DiIU)N([d9eB&f#!e
lQH+8FTTGE9p&hi0+'GQD9m#dTQP)bU+FMl6MKPQbVPrP`0kdpdKCe"reimQ#Y%3
Z$"I(&ZrS#JQP[[0jKSTqG8Q2YEmiI8Xb6#LJ*B0MM,DTFj!!VU!qXL[!$T!!Y48
dV1P64*cSq+LB"1+r%eNG)LeEQm5-A83&$)q!41l%kI9%"3clSCj'm+l`Y%kQmYI
kFRb%Cc)ee8!0Vkq$iKP&SY+T)I-h!HQ!Y#'`JJ6mFA,8+PMVjE6IdCYZGaDNZd3
)D$"[F-8kpA@Taq&KHQJMdk9Y![5E@+#J@[U2Ae9%X%h9RGjL5QB0Y2$N`1C#AY&
2q8D['B0q)HibD(KhZTDP9Iji)&+mpSbM4-)P&A)l`a2HjK5VMU$,&S9bh3aI'(m
C'9R5aVB13q@A[K09#12513"mA0AI0G9Pkb,3RHfS$kkkV@F@6k6HhE$5%4kVAja
Fbd0+6q'SDGkQRQ@l@(1$$Q-8)2e50K1J*69D@@Mj,5[&Mpj5#%1A[De1lVhAT@,
TjSaFFrG4T[ha$-X![DqPd)BQ-+AVT3S6JSK5ZZ''JGP1,r!9@mFqIA3(cQRaT$8
Z&MYh#[#pU8aJKKH,P,c$b9ii)p@5!4@RAV[dY(j)pa$i[dD2UP!iQF&%-,laY'p
IXFG'&BhIQEb2I(2I20@%'M@Pr[21",i4VVMIFS5e#*5DapAf#rb)Ni`XJc14)d-
@!Fjq83jCld9N[HAk-+85mqU+[Z0"EifP0[0Yi,kdfb1"I1G+rF(9*KSI$4B5V`L
8QUS52cI(*aIKSR'0Y"p)e,#MdF(RiqL8Hm8G$B'e#*4lS`Q#aXD@V48RlSD+PKN
HaVDYC2SIkBKH$0mee6dVTQ,MY0a)()C,+`R48FCC(9)(i)MV##P"*mk1JKi6@HE
,,IIe4%6XjIlajjN%+apmT1FBk"1d0#I,pef"H@cSDjmUT`X`*M4@,iRC--FC4!M
A1ZR)JJY1cjR9ic#TGT42(fdr5+l6b$HAH&RVDl9GIrSlr1*GQH@kNk)h0@hAmbY
0#Q'ZHf5K'XqD-`hVhSGp,lhP4%,5U&2idd,Y(B(b8T15bVISUI)B4d3&4J66p*G
LXXSDfQ+Hjd2"E6R8XcMDdMalIk-M45H"9fQQ($8E&p$*E8cLiHX0Il89mj!!QiP
U[meTpacEjSc3hM#N-Xq!L"UY1X[i9kh$'Yi@GEU%X2[(pBqKQQS16GZ0Ca`V'C-
-D[SMZLDQ-Hr#h[%,F`@HdUrFUH3%0-"&qbMLSEf,Nab4B%bGr2`"fY)TM!M6VaR
149$%jc[6mEA#fXAE"JrJl%XE(b5["h[H+G$EBjJ'NERF#8R0)&FC'F'ZV55E5Zm
AG4,'rcZ$Sc9lj[YPmI5Ge*Bl(H0DT&rAd!jBHlRB*c4+d*N)c(AhcX2IUYLC"6`
HM$5TFTC"'eDkY&@KV2RZ'd1d3#@k"+QRi%36LQ$61CQPR)+F+me`FN3Trc)PII-
8AHEYpPDc`V$82'eV4,HZ+kD,#A!CiLjLr)d6QLc&Y#c@PUlP+B+QF!X@bEGlL0M
kT(VXlCJr8j3Ymb23cbR#bID!93%K[NQ+QMZC"!9-J[CNL+20KAZ'YC,+p18AA1#
ZM%aTYGLFKDB*Jq!l,+-qU)CD0jT)YU,B`LKlKE8hPKEGQ["6NpZE"D%$FV-*f(j
Njj(p&iY2-RZbQ,0bH$PpLd[`rV+b5B#kq!)H$@EZH,',H%jYabE530B&F[@h,bC
$ZZ()2)ChQT!!2daH2-iC"E$-ANDR&&V3E@4IBH$4k0QHDIHEmDb8c`[f!rH%2"d
lFRhf&)jYpMIS6UJ"q)FbaRUf6+YTGj8C5miLe1Bp$cZrT%%(SB5@6N9PH-5)D!R
FpS3E0rZYDUJiVDLeNmh0*qJ@RYIcdhd-T"NS6FqPKk&)QJ39)2lLQUXm#J`fbEl
iZ'GN3h+[TYV)bj+L[CPb#XC6rpPQ$8UK(828@PmUJIN[[MGXm1qCc[#prC,cL2K
T-R)TFZ!*T"L#f+a+J1H@P&KbN8bN&B+&-SPrd11DI6c&5I*h6T!!Fr`eZLk(KSJ
`K+82S%#[Z6BjFcSj-1)q)Kl-8FH!h*e3a%ckE,pbNkDLb""LVQF*[k-VEqX!G)"
a4e-R1S[N%kb)DHlc!rXIHmPX"a%YJ$b@0GYC#EV(4kU&a[c0lmi((jI4F5ZKmlE
Fb$BM,NCqNY#K+U%B9iMi!D&HPGAl2$#eCa"NVMY"fXYH6A,A%BR5RRkNQ+d-H`(
0r)q#9PIYkr8"F52rD++&p01aSF0$2((XR"bELla"FYlqG&4jqQD6JD8G+'A"i"0
6rZRD+VDKbLVP%ah,P*L!,IB(G$ENeFZ68!%Ye'EeTJ-0GAB`#Ar&-XJ@XT!!cVI
e+ar-8jp$mA+Y3AC+,ii['4Yr!2!hqSVe*VN#F'K0kik22fN(4#3L(%hN+EX4Aj%
Lb$qKN`PZQZL0J@28[QI44@l94@UPhIHS)PIReYEPT3drp9B0*VG,X`LT@PYCF[2
Sh$4ThG"T@%0&1mD)aT!!aR6R4IiZRF(!6h!Y$*rkjC+J[CNpfQjA2Z3ha(2PU[D
P)N&5kcfD!EDc9(,8Sc9aq3a+"(@3!#c3e(+Z$J9UdJj3e,KY3FK"*Laq&T3fFMQ
jNf(eYT8c(Z%9bN1Mkk1pP0TrNY3'iVT!k+(8NBXKjYPe`IV2%AAY"CCL8KNVm'h
5KVIC1H5-UT'Z[kB(fMcJ*cZ4VV+Me*+$`c%9-IULcBfqK!E`"M,Dh$l[&3(2pcL
+KiHqb&h%!`GFMP!j9#a55kJCleYZ0)%lI5G"cD(E%f6Y4APmp8YHBATpP*k3!!&
3+M!MNeFKpm@1SDF%r5TCRIh8Ec+a!%+'QJbb1&jmm**(ld[hbaFeQkaXIPYXaSj
dpA)KjrE5[GG&MlD0-3#i!S!%)3%-"#m%dM@)+fTBq(#C'2XBBb)mQH0RKDU3!$D
Fr6[aHl(Z26NDV5&-VLT6dD[c'$H,k&`[Md+,9Ub,(p5M4f86Q-@cra,CCid#cjU
3!1ikF!dD`%Vi(9p6C4bUihZ-f+(jBe$0j@kmVTa""SL@[+UC#LmpHP1q+U+(HmE
Brh%d@H,jB+Ump9le0Kr&0qcl@9C-hkI`UG*0#V%mr)VJFP0"Q9%CeG2H8GlSmdB
b8&0pip!+plPRFFm-[dU-,k(Q-hlJP1qJQK6Z+XUR9arVad)%fLi[@qBCVJhN+fV
JQR1%(IiQ&@@j(Up`52-$LdB*4mRdESiqQqAFpPEJZe@K26Ra-pXcp$Xl8i"i!'6
8#pFmQ[5fNZVMT$XBE29K%CcaGF5C40V[%JSi!6XSU21V-b@Vd1,BNKQKBr46G%1
[VUE`e1&qVR9i3f61U)YNVMZi6AiC9(+4$j5BCdLH&(Q[Ed%REUiZ9LJ6J((+eHp
KCjrQQ2E9Ub2QrG#8QY-U#pC`N4PNFVm*J9CCChmZSZ@@YiiIeHE`GB&e#6[PIlH
4ZlNQ3bHb$lFN%DphZ*[(h!ZB&JNSTk5NfAe#"0X4`$Y!lp3hZXbT@YPlXlE`h!f
IXkjkPTU"-f6F&h[m$q(83N'a([AZ%A38@hkZ`eE[[kPS['plQHj0$U&[EjVmIGY
1@aK)Ih1ZJFQ0X(,PSf4@q4Q'J3$e8J29VLhS`9F2IB!(HipqV,+!8T9REbdmHYH
[-RXUlN1"Naq!8P3-"i5eb5eIVRYqIBS2EIV6pB3U-rQ52U((SD+eTK9F54MJ()5
`G1qY3fi-mB1(Yl6Hf-"d8ACU1YYRVMlP!'pNXB(l5NSXGI0Z5"EP)@r*X"dRH2Y
T*Q*CN!"$*a&KIdBZMKPA45Id[V8$fq*H44YRq&c&8fc[HpEXdS"[p48K$315aZB
J%rLMG9LDY#C4i2)PNfdm48A@(UV`(qSUUiC21dHU3Qal[+G9j@h)h'rA[lMD(8Z
iX-15iBr6Vr80'pV+K'3((Ja#2XII"5D-C+Al[eSUQPQCU!*c#S@B&TRSJ+ALJXZ
EKaRdQmH#p0XSM&-lFSY-KIYX)cS[QXFmNam&@N0l2Rdb0"M[kc-Jdaj+S8k"TYR
k8RZ0lY53!)h6LKpIjMX1iibTfFJ&BBaIQA,G"T9jU,0&IpRNX9SN`F,FIh)9j(Q
MZapbCeZ0Rh[G#+A13kjljKCeY'8S&rA[&[BJ,45+Zf)M[2"lVYLT1GL8M5YYS#2
l'M[bh&hQ&[BJKK'hQNTl(IAf5$'D[1l$!YYkCcH0Krf"U1e(Y69md3cHHKfI'%T
`QH6X*U!"I3U"*i92QA,G+GZ4Q[lZVRRU)bD,+pNh[jJMJHKBY`Cldj,0P6KJ3BQ
ahHZB,f*0b)"FG6KS',LkeC[H2&Thb3hRI8L1QJ@SJ9L0F%A-RY1a9@c*p0+kl*%
%T#cd#V`Ujk'9)F[[+0i-#D&)l$M2I(6qK,6@$%*+2T-YR%21kh[%YXQpqFQD+0$
6r+'jQFY+EY`-QV[H2*lS$H@qJ(Dhf$V94`5a`%ar-UkJcE9B-9qXQ@Z$lL)&MRB
@N!!!,K'+ITblA*('X88%`r`UDTk"[eV)N!#F,N+a10TJ4UX,ELS5c9TlFr@Ef3T
iR'PBQa5HSYL09i4ZD0FVV(KV+Br-%hMJd+`J8)X)a+P&03[akA@"k3r&43TaH0X
m25XR3")0KF6jkQPV+2PC)060Aa'q@@!el@kfVk(hQV#i*RDLrE-UaQ%JidHbZE&
fFf)`lL[f1q&[$&Sql6Z-AfHaLNSQ4KT''BNDqhMIZcjLFrL@hIiZN!"S[eQd3%f
lC[`ELAcmSfqf+8i2kkT,DqNEkY,k@(A9L[4L%'9*5A0Em[&BGPJK`AFJef-UJ%N
dJc6GTZi8%"b$`KJd0!&00r)"0RVl,I6#G""8TcT!("+Y3T+jbej6mL-L@a48r*-
"0R5lSK,EAp#Ubb`32hB&KD[CY%*c,&lB'Acj14SeMlJDd%c4@"AdUQUfI)-rAdP
3F%$3-B+4!2[c0kGU02QkdISaGUh8LrA#4fYQ%0#df6U&FbTZMLc+1Ekl!ejII"+
$$b4[&40U$Vr[dBq(c1lQT`NJ9(C!BfZZ-DPR@AF)Z2)LB'9r)E)X*6hpJ3lT-!2
#2bYd0rUCCJ6*HXm@-h[#%(STKLSaEfJ`hVc#RAS9IriGGbMJ'Y&qJCh*'[9EkcB
03Zlj4h3LD!ffNhPPIF'A"F40GYS3JDhZ0)p59TeB*$MhIM)#D66#EpGq#N$l&)(
h&$Rf#d1`-c6a$J!k6m+pbLr,#YLFDEVX)SP$GZJ%T2XP[BM#Yi5X0JDNRh0@Z%D
Ad3X6B%kE#eJF"fh19-8URZ(Bh@S[L56#c*-%!iJ'd5,l,CmNMKbKLF,(@"$3A"@
CYY5qQbM#b$#qdXM)-$$5dXM)-$$5k-ME*N3,KkLSd556!i@4kBcJpb%Hl(PNM05
MR*KY'512K6i861XPV5DY,ILQkb8pAl(l(r[F"DdN3'2R4Ql46!Nfp2j'EJP0HcD
M0Li&I6Ec'mc-#Y%TSceEU(L,eEf8(MpYeUmK!*K@)mh2CC@YGZp59fcq+jf$%MZ
Faa,LhakHB$llK1PbZ$D#5CA24*&QjZ1&Nrc4B'SS9&VQP"Ca2L$&cHDQBha4B@J
"6"R3jKF-T@!3JB#FAB(8YCSHe3LVV#Bd0L9`493VYl4BCE!Vbkc!"CAj$+b,TMJ
fZYq9M*DpG6E*`JNM5pK)CR64%J[r'50TS[$F@d1P3Ti"jP-%TlE@LLHMb!aCkdP
12h!)Uj)6YHApk#2UGDFr0E4$AF[P8-lXhCZ6krD'(a1HZ&`('XpMGq$aM6V'H8E
CT`8(0cZ8bqJm4BTX#rj+-)pbM&X(Qib)d`#%L+KdS!b4Cm2Z3m&323$MGml6pRT
YR@"TXKlL6U$2p+D3!-XFL2,$I%98T25X0"b4FR-dl'L'YF*!15FJ(+I#KfeB%#`
NTd8F9"lP@""bqe%Hi-+PK-PK4pb["5`JDdFa85fHK5dB1lhSd1HRFq0XM3*)0J)
e12c@!*mJY8DbdPL&faa6jA`S*FE10SaEai*YM%,Uh2k6NBj`[hZ-leKLaHhaPTq
XMLbUHbr3T4GUA+eTB0LeeP+-R#iREr*`bcL'V8PCThYXT[LGTYXcPR0%XpT!!PK
UjFA[B%5K@Ib(iJq0#%SmbKf$)cbH&5YL1lmVhJf[d'Hld'HEX([)QV9!ZG3(4V)
EVib4@Nr'%ZPrPAGVM3hKVf'ZNdBNL0K`JP1J+13MK)&HMC[dh&qGG0qf-p8lh'%
i&6Y408kYJ54A[jD$[-'GXKA@NhbM49aSF#IL0SGh[*8pI*c#&V1jXU&-`S9Zh$N
E3*dN03C9"[qM3BYNYkmlV"6FZEJBb4`V*i@Qri%XJ4Z`R09DV4p"&ir!JUKRi&q
*C)B,4(!eIAD@1AQff!DD"EfiK)X2Z-,4PJ#SF*imE*'(["M9PX5+#E181b!aSaa
%8)%9A9[TK!1dBaV&cqH@AT%Trr$iX@CUhCA*lTY)5p,"MqYEL-Q9mDI*Q345Yc4
k'+cI*r'MKNF6R8+,RN(!EVjP'X5eT@+[*#N*QDG@EU4NFBEHKQcGI[A"3f%+B%#
iC@S(CE)Q@N*-3&UaYfJcPp"GZI(+kHciLceQM$6'I`%PAr!)(NXFhY[5meFJU0q
Ejr!c!C,`,,p%V'+S!SVT(0KAi[(804+"[qJ&CZEfS"T5H-C2"%01J-'me5#E8FK
)1q#"*6&F)CPrL,,3p!jJmHMekV`fN3dp$j!!kVY-9XE8bc)H,Z,$"VJ9YrM`Z*5
I()V)pN1MeQ(M)@iR@JSef9Z3!-D6Md[P))p@BdHLq+c!M3Ijk62KlbTAS-4e#0h
)'TNCpGdprlFNR)TK(+R1LPiEce),rSqES[%@%PErA%c`SZ2!U!05+[F+m+*CIf#
CJ$p3c)XCBGYUHf6qK2qVN!$V$hbT6N$1*NUp3jNT)#KDqFelC6b[L,2%BqFdBMJ
%GYJii(Z918",AYXr9X`eJ'amk008jH`B%&2Ur1qUERSdSbQ&NI#DQbZS5r0E'AD
'8BRq$4m*)GPelJdAXRplUH6Sfp4+N!#)cRBF6HHK[HAS1Lc(hB"pQ%*Nb9S5cp5
*%hL-G[B0PF1bIDRP$#GjHEIb&VcPJY@!ZE)ZR(XL[MeJZ)`K(8S6iE!A5b$D',a
AYkMH9UI6HU5X3TdJbM98TL#,d0r&C2&Acr40bIL2f#@,[Jq%(QQY0(qHNrFZ@hT
RJe@lPTCAPIDD&Zhk2(kP1Lrl1L$T9[C1I2U2!lDR'V8Ci+hPh6SpKPXBdUa#3NF
"q%NaCbEG3MIa$+lUrVr2cIR2fD6B'cqq"E9RIFLeP03!UAH@dbkDK2k*k(0YN!$
4lT[1*CReM'GQZX`Ya!6b$F*cXE-2M&-&6"1e$HKS5(8Zc5+ibM0JAR#3!$QYriU
8eIZrdFc@8+lh8lUV"T5*Uk6&cUZphTYZEN9&VMQq,0aQTh)M#RK3r@'PqIc2K!$
Y-$j"CRdbD5'B4[%+5rL!CfCGQ!JDD&8&Y%XlE@2$j#$8*4D$cHkeBYaj'CFL"0#
h&b6C)aj4+N1I2mMB4#+bFb8JiD`kjjZTP'3RVd,iE2HfMZ5T0ie-l1T6I-8Hc2!
`DZPNkJ2A`lB33h"1aN2`AR5ipG$B8r3XDDfHQXD!S6aSDCU(Yp1EE1Q%iBE@)A%
UXTQ)`f1eDf,8hfMHAqc`T((dfUeRlci%eZV92PA6fH8,'8&EFaE*fI[r6dV`[Ma
4#$hUah4LL@@QM%LfSIL423J3(fLZ[q$R(I2SSPDlbVXrE[MLrD+h*lBj#rXfPT1
)!1$pH5Q"TSSUa2@Ek-AB8)#99MU!dBX9IC!!iZYh%ZmX+0+4qGDU+1+(`3-"*m$
fQh(-,$Rk(m*rjDqVCQrXH6cFi-e9`rL4R'9ClpE0rAXFmFXmU*K[5fc`-M9BcFb
1RpImRBCl`Rpcif4VeU`94X-ZD#4RFH+DUq#q3!jdDbH$HL6$)"V+i%[EFY6+LQ&
!Y[5SCH2$8KG,Z2dX!1PY"pE-N!"bLb29QVG#6rLSeCbbZ*Q[6-F"AAbD!i,q[PC
V#)Z!"$1ebHP!))Y1cDM+4mGr,lm"c$3ZaAVVK!#!#NZ19U86bVVZjM+f3%QZ4kD
@2Xj!j*PX0q9[YqXlK(VZ1HkVpG`D#qa8NDMT82Y*bIm*XIi4,T@H55Bea#S9GVH
9*9S$jQUrZe2CR"eZ&pp%d3h4Y)*(`'p0'"+L!p'BlMBLS$(Y)6PJ+VrZehc6LmG
8f#JaSYh89J'(cRAb@Pkc[Nh[KJ'eY&#PD$TV$(T6cD,Si,p6dQUS#IXihjh(Gl*
RlT'$XZ`L[B#5mq4YP`%'-aTAVY(hJ8i+89e$EH81@8'bp'2((FAIIfl"9H"ZCCK
a$X4bpYjZ-iV5+-mY&M35''Earb66$H`abV$'DS*"-@fZl"jB9)#JN3haB3&TTE@
eN3#`Va3Khib[IF8il'C21NQ5#piFJ@C,8M9XkDTU99KMb)R!qqFh0U[C!d*2kQ9
A#bd5pairKCADZ1`I0DUqe80aI#icQjUKp2-a-GkTh%-bY&+HAhpT)iDr3Ie"$#N
pSf[DVFG'bF6!28Ub46SH[PIR)j*XPP*94YKX(NPLBZ*SPTIPI4@a&-hB,YeNSTD
+B!%i9%A8294C#A16`,+r'(hSXc@ViH5,Uq-2Se(BDD8BG8`[#$IHTR+!5534,la
iG4-J,U@DFAcYNZQi(qdaK-fKcS5$K!!ha++J@MU568hX4l1HehcBfS[6QS&T['5
3!25HKi1SJY8[mNVM5q4[#c9k(B1eMf!'ZeNe1+L'krGRc,&R*RRiXaDXF#hU148
ESPqPdfQ[LFk4098!frer&Q#B2&P#@KGZ0'p`Xjb@65kh0i9L0SR-,B#'BT(#3*J
Yrb+bKK,"!a%lX6d'NlmT#qmE9IVar$Sm!e@a[DfX%APFQhURGVKDKHhJZadJfbb
'`U*b'`T@(rlXrULJT"9Qd&Sq8aYi@cP24Ue43j@T0B3aIhl(,Z%r5I#mHmR4K$8
TCHF4[H$U2qMA$l@69p'V-DhEmJIKHZQ"%iibCl@fN9b4K3KdpfMi9fp26IcR24R
l*,0mkp86Cm'N[R3#q"cjZJKHqZ-!NVpLJZUI*12,,qPN`$m+4Mc-hZH6!*-&C90
k3B1j3fXkV8&e2"K4*kikVPQk)KlC"amZMb'K(bKU$dKU4K-E3'$JB2a&$I18B$%
FAemq4!UjV%NN*Zdh'Fa6e84R6UQq-#B2k*!!*8,j[-SM%ChHG[,mMHNff,6!*CM
Bk&Vi5fp$FI(&C8YeZN&Q%BcT0*UCViQ+90MLYF3!ce00fCLPRNfEhLDFZE2liR%
XA8Pm$)(i8S,9Yl0kYZF4fa!0bi%m[LCKFiUb3'""#a0$El*V)T!!FV$AD)QibGS
h5UGj"q-2e1H(04eBpirDGTS[E&A,qNaiQIFqkfdcZKAC5cZPb2ecmiTF8fXmPP`
J[rCJA#D!R[UCEe5@ZR4VUq)ATrZ3!+8B6K%!21BU02VbaF52RL@BrQIG3#5C-R!
5GlU4&L)0ZR"#`XTU#[FmN@jKNQUL15C,qScmF6`KC'YVjmmXeY@)$i6+@Vm-+HY
Fc8Pkd6ejBQBf-+!m`Z%V1*cZ)QqT),2P"P1)mZP8Ef+M*8-VN9M9Z%"G)6&BBYF
QFU,4Vc3&UUr5bEGK`mmeKp1f8bNe%2fqhpkEl@k9"@I`&A10092aLBi-,%p6IDJ
"XK("Q3Tf+JLcCmNBP2P4[6ARm@H@+"X,`!Va1%qPp"%0BE6+HK$$1$Z2,Ml$SLr
[[+MXBNc5*dHA&L$XhU5$FZBrELM08pEML!EIBK3YkH`J0ZmGfiTI)P#+hR&3ZcE
XH&IM"H)J*Q156I(bce)h#b5mTe6`4#h)m8akK6GmQN$`SYQ&,UASD#Q+S0'c%SH
YY8F$'2qlcT%T%p4!XdGA)E[)@r6TfpYqeG%%2iX`2S8Ep3&Nbj*Lk11Uh"q%[D8
Lb`E-F@)N2aCdTQj[434(&Fq*Qm+h5aQB3YSBfY2BQd#imD8LMIK*H6i&[#(a)X3
ai[T9P-2KPiiIkpAMN@mJS0a!X)F)0A(k1&S(rBNBKKUj)T8db#aK!AcrKFE+mS*
G"SZr+iclHXmJFDU#a'`eQ'`jk!`h%%f0lcEa%'aYbCZ6f8N[YUTHm#U9Ap#fY2,
1,q5"C4qP&e&rd"+6DChj-8rl-q$A8lk162!K1Mi9q--eM[R1R6T"J&MhiS9G8Bh
6ma[@3TE6dh#&$"09$5$B#*h1*3Yk2-0*Mqj8a,N1+*%lCaPD"rAKShN#Rh6B1b1
I#mrNRfd-mC!!a&M#$JRKRm,XHiGa'&5c"[+YXpA#L`aBD1YX,EqiXH*m,eH5-'d
MNmj#i0Dp5V&)eEI3B,qF-kaEkUjQEjZ&!N9,&q`HTR"Vm-"$a&18QdmJRRSa&QL
X[kGdpF&a2DkA$YcNi@SF[J*3PT9d(Mq54lfi1Uc"#hi8V@c1QGBKriM"aIBeVR$
'P9+AlcYp)Q,kQMBbI[IhFCD8*cB%U(I"pii8K`(GA(!$(+`kkcY&B11MHaJF#h`
"[NNNZCU0rS4ej'k)'h4h9RLJ'A(3Y*P&dE$XV5*iGQ&&G,Vi-b31pYHm%3G51XB
22SN1Th`JkdNp(32%S@DaRDVP5D%E15ASDYr"qNq@2V29X,q3!1(C#p!q2@%ddfd
RllG#bqbEEBYMXkl(H"8-J'0!l9Sk6@hR&VmH$f)Mck56`@RbIJ''L@imDN%rcK[
(HppVZ$K0m$!+VB,%I$1iDmq5Rr),'0,MNA+K+C6f4Zh5IJ%[(GJ9pLrPJZFVi24
Fd@KU4QBcUfZ#Ddbm&,qZ4)F(fV(kHhHS(V[%'irk$$0N!P-MC21S5QpYAdGAMZm
`pJ06jLEf'`%$rL,fE%1ZjX!G*'![@6m2*hbh)3mf96BZ)2dGjP(5"#)k+cD1#(p
Xm-Bb&k&5`l-2Z5d+CT1Y9da!9l(MF@$4ZV)+K%BmLjm%dI"PN!$5rCYrFI%S[-J
#Z2[HVEiEJ6CFPdpjdYc"+FXmXbD4ME!af@leNXKKrh@kfD5*6e30Ek0N`BKS!"Q
Ph3d9K-J[hScFB4JM0ZNVepB-bY+`L2Za[2FqTG51'KkZp5(lQmV5T[Gl8@p5IH)
h(UA[5$-1cr-m%Q$dXkDIX$PZ8L%'k"ZR2099HFi6l0G`1dfYX-RTMF&8a!!TY4(
0A12MN!!)DY6rQ)p(RQLhPZNaI#dV(lJV0BP[Yj2''+[KTLZ-NIjPq`8+VYZQ49Y
G)M4RA*48)@i`,+"+TG-+Y22%jGDa`!m@9"iCE,A4-!N1pRX!T2%F`rYbB5Ij6,-
EHNpT$1&'Yfq6lhUbb4q&U-jhhF0F,6e2*DrN1*V3NmZMflQV[Ff4N8Sf)65QjmQ
@KKDd5mTeS(Nc(D(`m)3h`[AVhda0-B1$q(#mVRk5dC+6I,F4TDM)2eIRF+AYTf@
#q9f!%dcF6)dXhB`JfJ6JH!Ma&1R-hIm6ZC%d2ZkJd-FGe3$md++R#N1LQkHf1(K
,cqrkb%IR*BDQp(f'YKL,&(401k&F[jiIq(4qRJTUTMeTe0'8dp,G,J5bS%EBck%
A#$6Uqip-5-XYJ&&9r-bmZFfMHU4&QNd8)M9K4T2#mb&Uj1cQde0%3[APhiDr4GP
AbrcpPe8S+$i*43P$pSZ9UM)S(HXh(jMLMVhQTCXGVm$FUr$llUHmdCEeQ"J3bCE
I)a$Sc"m&D$*`I*I(p6,rTcb*F5dK-ZjU$U@!!C[QJb'd!$bPmQ,LLILh$-&c@!D
jM+3jIKGU%ST)e!rijljVRfa+k3*b(5[eM#T11L$DdikkhUdLZ!%i88,$f!#Xpr,
Dl3['`akX1BR6S,$aE)R)dr-Ap"Tj)F8$cE0`)Q%e0!XI6SK04X029p"$X%e1FUA
qT4Kh`cZ%J6GJLU@C5I3meXf(&hfeP$@r#S6,&H0f"662)1(H#G)U3c!p8kUYULG
cJ`9"0''150DdK[ZQr*%)dMUIekh9qfYc`1jTSR&)fp9D5rfR-[,E6NljrmICcB"
-NKK"q8"*T*AU(DXNKX3#(5l"(HC#%*RI*T2UKXH#SH(Vm`V[dmK'&Mfh%`C[3@p
05F"ARE`,RKrTDS[1pY5Cm&K#*b5*NUlC(cS*Y-2A#dQa"6pP4eK+R'erd)YXI2*
)a4-"+XB$ldb(iYbZSF*D!k#d0jQH9*!!#R$GbTM*ki)QV&2[8S3(aGL1RJh3QSG
4AHRBZ*!!k&6+rm$RM2hBRZDkZM*9#SiZ15AY8Nm(1T9fk,!92PCk'jT[qc6QKR0
kHC[kkGG,e%"6HY-K$TISc16%)%6"S`r6mGJG4MTZfAdR!p"i1*UZr$jC&4RFQdH
jNXGA"1(6Pr#mR[,pP6q+Pl2XH`*@SB4@`lSTR8DQT3a#kcp9Se%FT)20HX+LV(A
-mZbRYK`c&H(B-P8`V*`PIc050@X5-1I*q3Re[rE4AC09!DEbP)H,i-Z0DI+k"Kj
+(M3b2,'!L6[F%SY6kr$M@mP*G6K(Y6CGRUpJiL*qXA,TG*&"*L"AGD*ZfblJEZ!
8El+c`1T#6FiPmhU#Zh1['[Q*S(,h+fL$'C8m'X'0B0V45a,p5K10%NA!j6B*P8S
)KcqZ9[`JrSc!MYN'0-(NG"0"qjQ)m`mrHqkUYNPIG3mEHHm,EiABGI6"XCFh,"(
5$P0UCP@0AS0SGh9rFXR4p6J)YdXZf[2P@5,BN!$l@P8G1r1aIrjY'Hp"D@fCpGp
K3S-!G4@RD(H4c`!2Mhq)3JJ+GJp(0hpDk)KhdJAeb8Ak@[kU1r1bhP'd8)H5NQ3
i5T00P9-T#F'fCSc@C#aa*hKK3#qQ$$XfG6X[9m`j'b(FbI$L%93+dp$9Q,FHkrm
M*8'U!Cbh)KAFXKR(3GGmK`F0@r3U08(U8F3k$mTTf@9EQ#6dNHa"d8+Jh@k)S*-
2U,V6KEq4CQ!e11aR9LmIXZp'VA#3!%0'Se,$JcGSd3k5@9Y2HR"1NF@jHUcqAKi
NpKR2fS4jNkmhFpk4"8%&fSf)S"kB46A`+#"cPJC6rUM[#pC$rLi'4hk%)iPIab,
d(4$#bbS200r&GV+2i1JS0J)Za5KVmk)9(d5SGV`00'qLP)j0He`GM$rXL,LACiE
LQr,*qc+"[EB&qP-XlIZq[Vbr!k[CXD!jL!A1f8II0C)P[r3jdfLDN4F`lr"Vfjj
(*Ei*,Pdb"CLhNG(m@DiN(D'9qN9dk4i(LI0,NRlS(BH#UG"f6#qECT1Z0m1EXh"
M-)ERGJ)4)$#1d)X%'5bXLN)2h3X"i@ciiDmKiXqTRTD+kSkjR8Hp+%192*d[qfC
YR5mNiGB#5QpC336r)ckVFC2J0V!rYP1B@hT'!0R@&Q-rD,R"B"eblr--KhBZ%TU
(iQi(ci$fGU,YeCiE5"#GTp)LbZiF@H%AhE&IqX1BJeji415pIfGBTchX[akHJJ*
iPI8bei$i%Lc9%"ARI9iClmR(bq+UXYX[IeDN2Te4-R$LJ`pTf%0Va4R4cr)$BF&
'ARF)#FhaYHI6hkp3&ee+*mkXC)#q`bPph5A8b9(MkQ"PRfPSK311d1RYPb2C+L&
kJ'DdlX[U!Sml0S4f[Ha$NRFB"8epf#D,rk8$'FJ1269TkG2LST9C$b(4PiQDNp2
f&%hFalr!)ZXBEi%9R4F&i*lAqH'@9jF*C1)Dmh(aD-[hm[eE%T0UJ[,DaPF#bV6
0DY"qc4HjjMkJmX`6D*!!`"6+V6V&ja[X"YUjdLR[C8)014bNI5[)6[P+m1CC$mm
0LR0i5%iN1!',ijP4Ff2iQ[N6*K`VCQaU1Gb2[-Q$c8jYYP'@NU9&a,er*Fk+553
VRRQ1P`!ZFG`c!`ASjpFdEE6A@Tr3Sq-iHiKP(RqSqm[K#9MpCmirdd4V[XHRhlZ
Cc,+qjZJ&cRUIkJU9,D'TQVLJ&T*BrRT6Yd*+R6HaZPb4CC&(Sb[[@AA1XKMIS4C
5CI(+r'HXMQb8@K@2X84J+46#,phD-+XV[FkVEfEPB*[VaeQZ0Y2$ci'6aL+a)UR
&#e"$@#8GqdU9#$8r)P'9mI9UQ!2ZTdkp0Q,-U@F&)4q)6#NI,,%Ge$jH1crpMF(
E1K4`fha!'45QbjlP5i2L3ZNb9*mCcP94ch+#%h0aIb6YR2X9%(A,iBPA$K+%q!R
EJHIZF*Jk(Bf%$ffa"&qa+$[80RfPCaIr@UhJK)P[j`Uf5EC-f$K6f'%ElLV[H2"
h0Y5'cDPJQX-Yml,4,!BTFr2E$NJ'f$B`N[6"XQU*K+q!VIp,S6rZSf&1j$KTfeN
`hbf0C65KTQ@6lRIKJ3rmEk2"5mZBiHJ6*l6AaLY!p'h-,JAiIZ8Hid%MIGe@1-f
m#9hDf0pCHp8)pR6@JRILePjeh8eCGl,haL)@9hrUTVPb1rPE$bEh,(Ye5YLY49L
S$i@TEDAIH1r04NrMGrTp%e'MTeX0e$0Iq#h21FJ)9McJ#0Q[p(F4%($mG!6Er@c
6%8$5MC!!Cm4X#HUY9D,PK5r'2$6m0ljT4DH@8J2Qi$PS`@*rbXET'k"K45QT5JX
-I!aa+mGk0X),Ef`88qG1K,b-,I+80-KRIJ8%KH,6d03meRkb*2rFM+b'hi[kRHV
$I-%VqM&5-qbYBXq0(CH8$C8kFQ0PlAiiGmVfGq0`cCPH!Y[!'KTeXdhHZ-Tk[kk
2K%Lab,M6UPd@,&E-F@DNiSJMY$XT-"-*UKeLYDfDbPl*1`f"rM4SQe$lcJ2@FQf
d[&Xce,e(Ld`r,Bh$[1'5"X*UkJfPi'pDrp(H)j!!D44FC(G`0lRE%*VB-f1X0h$
ACA0dd,r@Z-1-KKApT+"FKH$%M95)T3aEbM)3cfcU*#6+cE`aN4"Kqj3MrJ+pP0P
H0-cb4C(YmUIe+"Lb8(0f4"LBcREpR&Ar)IYeHUF`qI(HFdM9JbaT&#IeG'bc8DT
T,%(BYK-'m`95M9BMZR&ZSPCrX5L(Phb&Y-5'rAq8K4UYVSrD26B+4K*qLhZT0R1
GNXr6Ba1DNp`9'EM)G@$R'BjI*$bACa5RTFLQMR5CcaZZITP,mTP4U@c[ZPaB[(R
p!"B,-BY#P4BLm13Dm!a@MpJ*N`J'Ar"3I+M(UI2[8DTQVD4*#'Y)eGaNT#a'&h6
E+!Pmk0rQBa'bS6l5c,T0M@-!E6A5ADH223Z$X'd'fe$NZ,iRf[6p6`!lY*BP#$'
M[E[8hL11aY,l1)YYXpp1!+fN26Ika190(ifPi&PkFN4,E3dCL"qe940'XKZ0i6-
H52fmGr5%bP,M)TmL+I[1iI$,DT`1EEcM1d51L289dFp)kX3MikL"$#AcXIf)C*`
JJ8@U5Z*HK+IS&Gqa-l51$cD-M5,q+E8%#PVZiKQi)D![cRTV&*8GBa+P1e9BlB8
%j`HIpM0#*Cm1Qdq)j'5%1Z5%#2'8edK9Q0A#@$I4EIl%[23r+a23*lIkfadf1HC
eL@k4%rRj"&SHP[b4QkJ"+4"UbjKb,!"`C%lI`chANB`qGhd2!BTP(N!%BkMTAm#
4$'-qUT-mG'GDfmQM@UEf"I,$F#Da`ZHK45hh5C9CZAfQlD1hT!LbXC3Z6X'5l+2
4QDBNLd4Vr``T+EZ"XV%A!ii[(dlb-U8#JX*8UH,b,P$Um8X,cSCTq6CILe9`iCa
MPFBX3)RH#8"8hm2VRd!aa5M#Q1piEQq+fEPBQ+aV*Dbj`L,rXfJ+0D3C9`$Ga*d
krq8HS@)hB2*F$A*C&-#VV-Bfe@*[)j,NqZ*)P"Rr5(aC)&1@+HlK166L1Af6ifQ
,kpe`Qaad"l@9Md92+HekG&LRY-@5q*2ELhV)NPS(JiaIb8%E,Y5PA+k$k'X6Da3
*3)0YXEf*SGrY'%dcaEpI""Kqk3IEF'ZdXbHcpjTICi`ck#!F+qEXEAAfP@e#Dqb
KBTS5@eqEbfa2H@KF46#,dZdJLfb1B@LhK4T+3GPVQGqRa5dUj@I@eBMjSa3pEkj
,c90f!'hbLh9DjZ"*mRSc3@I*AUDGRA$3XI$%Zd3Sf9Rq5em"N!#0TlbQ%a)cCjB
DZJLhY,2QlHGSRiek&)#AipHFAD*KHMr8[JfE3&b%@)jALIA3emdmPX8*3iM"9D-
([eT*9[V0J9NIrH,Z`&(3rMT#bNZeBM#U8J(C(IiBbEY$T5YFVJ09pAB!eD,!VpV
'2,GN1ZF+[@fjf)l,j9lr8C+fA%YK)F,hD)e4#D**#X6YRq-kLANj,#af&UBS9[V
Q!hVL,)Y#4FR[!b"[Q$8XBLkZb92HTVCb(5aDc`$U!0BrA'H5BEiK2k)%,Tl4&-#
Kd9PbA-+0"5e'fP2LQ'YJl@&iY9dImEd8FaiFjcY4V!R2"SIAJ`2&HqrClKPX10k
d3H29Ti0*YAa'Zpq($URV*$TDY+16Lcprc%YQIq99HajVHif2MJEmMc+MblKdHM9
MSM([NdD&Mk,BiJRIZ`VGLr$MYd5H(XqZ@[I@c)MqSQfK@Nb-Q*f%'D!`T*&kB*5
#d(kDD'(,+d)-qZ(ih"6-QPfX,9RB3@S*#N@)2m-&SQYS&ME)EZE@aC!!dT5aJbC
V(C!!FS%UB"qf69$2i-56e#i1F`VkHZ4b!%Gp1##C3c"3B`%Cem@,H#`G5I1A2Qk
Dj*9q"9NpNNb)9G5'dG3dG2U@46cfMHHR50)f&qV%09BY',k)6I(1*9f0V(P$'f)
,K$p2ji-BPABT)2lqlNmdGQaZmqfqkdLhLf)(+)Qbb[M(8F)jVY`Y-faNSb*XI`8
6C8H-"93e2e0r,5A[HchNb(D!eUA5b+cKmkr5G1XekpG,KrTkkA##S`1@BN&0[!V
(Z2@2!eDe4@@G`T!!h$hJ,%aLHNBGp@DX%+&k1&*-`K"E3L9A[CSbRe$0#G$fLZ6
q2+X+rcZf'-#*,!TYP"(c5hflU"kq5BLFXaa@3hbGhJ35SFNE#cX2Nca`,G'b'Fj
qX6Z'38'"Q8Qar$[%PFiG)fhlfF*1aUN9d33jqa%(jUXJheDIaCelcMbF"S[[6&H
CTXbrP@R#+&4A!J&mIG#bMciQ#dG-j5(IFGC+jGp%0)@F+[eU6IdCf43AE5"m3Y0
Rh[U[#MMcjkdA4kf*9LR[ak!kX[@MI[T*VFQa[TPR6C`S3cXTd16ipJ+PF#,!i3R
pGM$!QMEj@(LR+k*iGkLS4U+`X2BRDN4`0eRS2"IeP1[Yk@j#[3m%*'"DQdB`YE'
)Jjcf+hd!2AL+,$X+eedcjB#-f21!9MFDA*IH-KG0FFhAYd-9hDhbX5M#Y`kZp0%
qYQ%[I[B1,+b"T(8)jNdVT5$H63"#%mr#-X[Qj&Ur,iq-F0`@i`#'*DYq@j+kEl6
V-jj%+Tp%AP+Z&4#$((XNNMXpP)TFJdam$T!!qV,-!LdFI1(rc36rr55(L%1Qci5
eG9&f,ZIS4K!(0kZU6!64qT0*8)+jm)c,c@PqVq-D'2!['BZi,mNI'iGKEf0p,3E
@r3j*1@FiqTIUpPi)q!jXheE6kU%5&Sk[GM+XKak*ZrTVj#)'Pk#bH6H"Si[Z#&0
$bBPbqIZ(!'kEG+18-bjKUU##QS494l,CGV[B(C`)ql9Y08Dhk$E!rm@H&C@(3,J
l&"'[eV%Rb#c5U6,ZhZUaTkbQaI6KI$FLf[rM,e-il8d6#Bj059mi5'@9+'1(BCL
5D'86rIp&f@14(1K%!$9NYQm4QAhKaR9qGqD4-*!!4"TL0k5SF)DAm0M%81c9[LF
DV*1fGY2riV&jm3h"EXkMl&3%qD+"36VH%Nc8PCD+,L98J"Pbq&TRCFdIYAcZhY+
-+('d2S,)F!diL@IkiNid%kle@-5BEN9[*953!+5m,q0b-cjF&6LMNd28TS8j9+S
C6N[h#rH-!XjCi`[kIkSIPb30hj2&d*m02LUpU8*ParqY5$l`me`Lk+r0r9&jCaP
@Ga9)PJme5&S&Gi["ETD#@TY`aRjPpmcZH@`fFfkd[rVNRVfk`"RA,'3S1YfppRU
plRV'aB&J&1$)-%($Z1Sa"GV$b,YmZ`Cm@A5$5k3ZEFX9)$6ZJ&$6([p90Ch"hJC
c)1q"R8-N,3lq`'l@8*!!E%0E&df,IKap9KT,S&J0-4U4Z23#[YccD0C9e(%TAfq
5UQqRk45Ym6I`VeU8Dm9m`Hr%*APIlEa@#fh05Q46i1"YT5&3281@##fG8Td6V#c
5T2#(IB*S("mei[J#`XPeT3GF0S#L%$0HTQ$1rqcrkTD0S1VJA!m2G!@XY&p*[HZ
CBVH(fBIFP9Jcf9UQ3Vi%)5`IpF(jCb-5TB!LB(a0+MZ6DAG!ad,MqGQ8@KJAj`H
25U(3NiR5kP3TD`0AU%%qpGfeeDE[*VU%,XV%i12PNA34$bDXY*6"@j-JrH2XQNd
Y4c#C#k(qS$!hB"--ljDV8bX6MH%bdidEQLqbRp2U9ii*q3LNdP#baQfj'rUk4Cl
p8Rf"CbmZZEJ`FrI$LUXe1Bp%Y$fNTbqVFkdIYVpmFX&m-4IZRB&pZ0A1mr6Ml6B
+Q&!IV+XEjL65[M!iSC1+M)20ZP94a'"bij2ilC8CAR@3!&!`M%U4Dhm!!U(1bSY
LF(HBL#E0,[a+GD%+$AL0khX#`,i8*(0[rHMG#a#P,Z'[Ap#d&bbRS3QaXTE$&H0
)Zj!!LHm(PM``fRVjG"`iccGdaC&HSB6C5J9HfS'a3PkKq,+rkK-l!Clp`lkf8CG
jJH4PT2SSErCAMcYZ5qem4UpL6QS!AU96dFYP)hX+a`#S`DML!VlUSVG4mh&5)b2
)h4$"#'c4`L[2)%h+rTMTfc3A`McCQYjkmFbbq*!!Z4p&@FVUFh%1&EpHj1"b2M[
@(BS4,X#UP@E'K`8L5Fa$6lp$N!!X+UGmCa(JYGHV*[r8ILS1NPB3bH#ZF8%eV62
HLk(eQ!9eNZYk$M$K@Bq2VQfh"pB*)m`qJ4$f#cH3!,mqHPiY%M)$YjTbRL'`MiK
95Y1F(lJY59)UCH6ieqUKY8D!&[RJU!X23IQb+HECRe9UQA2ZBGTB95TU"E!0hSc
leE[kjM!DEH($QK&JiMGN@[e(mqYCj2b)B)jN6)eEaL"R1*4lhARChS+i38[L81@
'-R@G9AQX`'Q-a3LcA8%F1EXKrG5qYmG+K&-pR&@"CMUpp&pqYG$K`fS6kJ-TPm2
Z"2'J1#I60biE#SZk'*!!B+edUqIZXiLQHDRHXl'Vb+M$6`GKN6K5X&*5Qa[kM%-
3IDIFR(%26m%GYAVE%1CpKLLE*erXDTZRN!#3!*6i"&rV+ck3!"3HU3A#c`NHIJf
)95F,$afd-k9Ba*hH'Y"+K[+aPZU8MbBcaCFqE1rShm"&48I6m*IbZ&C)%eDiLN0
Gdie#@JPefbiEKb9M6m*f20i)6G,c6EAA3'fr-@!d9rLhQlCNpNNNBiC1r2AYq-h
jJG5H[pC2"lAT0MK+I`$Md18N[YrqTb-8KUCfIDaP@2H[D!)PY8UYp`A9[3ia`G0
Ih5X*3I'Q+JKSmSR&P,1dVYqX`pa,kZF9-c!QQh!QK6mHc(!ablNXA%qq,6hGR*6
[UT2-ZMUCIKh[U+K$p1SJBYdC!lm'46BM6,)TUNMMkIcNHP@3!!2`Yk(-"2Id"rZ
8)paRj(fl4D$22%!#r`N1JB%8(JX`YG+kH9&!ckGR,GN[%+CQ5aFZ"(M#0D*i&@2
`!6"f#%VjHE#Pl@dDL!2(14)@%5KEa&,jl)PS19aQKbIIJ`qi%fh#M[P,fq1AbV6
XdYBAdR5,BlY`fZ56%ZT@l55NaD4PSik3!,@JZYdAJTm0q(8&C1IZS1RZ(&Q[`'C
,UQ5j5"mAFVE)(VpSImqU1%&AZ&)'![,rMT,M0N#,li3N6Q([FMM++)RQ`E43l0U
!VUKi2V)d$XmC+lNhICalD)dN('ZYPN`G%6rF2Q[pUI6i42MY#$KLa0lH"T,CdRq
cK`!e3bZ`Kj6I(SfieVV'*&T69'6`rmYj1jFf-Q)NLTqp#V5RXR0Z8YpHc`f@9eC
h8ldM49iUp48B*3l53P"@5Qj!'+r$U@$!4ZJ9SAJlDY'a2$cGlmZ1CT+D#@f"l'#
b$D#T)*JjA8PB6e$S`23j53[8E8P8Vk(4p&MrJcR#FC%3l!Cm#lY4B&K!k(kecT(
)JGqPQBeR$$RDAG2&VGlYkbTC$DFkT+FR-PjkfBjmZ"mY,ekV3Y9!Y9GhhQljR1U
GrXLGJ8fZRHH)C0Y1kI6NZD-El5&8jaY0b1&U!-M0GcDX36"!,"VS*K$qpUR4@5[
$#BdePXe6e0&Q@0a)[*l!!T!!$cD(5r4qL3Gh-8-jaK5AI[5V0ZJQ3$5TG$CXZ"[
E$NV3$*TDDj0[IVJaei5rH6"XY,G4Y+88BddYd(hL!*Y1)Y'a(IFV&@N$%2HkIG&
q&G+GFrX)*M&!h$e+B%)4XFDh@P$$aiIMGkah3di!PKpAh-PV$V66Gj-3M*9HBY3
E@beL9Icjk0Qia*@[PYdQ[ZJ'Y`Kk35F6!3H)QA1m2kp[j'YQ[dYFP@f(dZ)r!0(
'MmbG9UEaJZRAV`bf'cAmbd6+Jqke0GK3(c#mbTedkKUqL95f)KdkpbblI9CG%mJ
kSaUT6d@L$,lLV"E+[JiJA$kqd[U[@f-NB`AVPE@BQ!Y6Zcp6$Q2V0%G2VJUdfJY
R8'@-H3Cq3Z801U64+$JcUZ4KQF,efK9IX8)LcA&q8rC!40l%J54D2H8hIkST[3,
T3!8dQ9!dlLQc8i$JkFhdK3RB*K5lER'"9j*f*STa!r&RDFVFMjF-)'dNj"5(A*d
CrdIa,%mEZb!B5k+)8j!!!me(PDkH%)dU8J6,ekqK9DG`%%%8A,XhIP35`ME&0dB
C-bAr8-SlrUpU)kZXIbc1UplYBJpU@%',mMMA1,I@*`T$6BhaEi3CTdTmGBId[*a
C-K8M2aF`L+YmXmXHYHRNV()UZ3Teb#CpG,8VdU9Gj*!!DPlhhH[jL-hbm4i#B%e
p8$8E`0*SrSJPf"eh0JlpJ3NrTeU%J4dIbcYLMGA(9,mje4B+3IPi@KT`Kk1jmD&
jbKXSh2ef"SAAd80"#*(m"[Xk`&0UF(S,T1jfjLbcE3T*RLPNZaZmrMJl0404e@U
!jjHB,lR9b)(LQR"BYN44%&X!$C&DdF)$!$Ejmd$9ilq904bDa()*+,Ud4,hJfkN
j'Y`B0qEi0Y&p[@hiE(p3qCE@ZY'hJ+'rYiN5pld(%'Jf5R#KCjVp[fadhXjq0@f
eNj4Fd,Y8c!m!IPiVQ+!*FSJ'X*RN15P0pVRSaYPZ()kbRP+k+jA6IMbNU1EF&ll
+mJS`Z)045*4CdjkTE%8AQQ1Ya4F`pY`)kFHQfPfbe8P$K!Y[fKMTJX*Pcj4Nh)!
rS4MdYPLhCSfm`VQhc8V%KbS[RRV'4CZ3!"!#9ZdFG(kdIPiEP2XhcGD"eHm[#M`
UN!!&EI,@J(BqV6Uf5BRX3kXbiVL5EN@9YJheFQk9PQbllIA-,[`Zc0Fli1XI['P
GYQ@Z3,4Eq01!-QN8c#mIP@*l+'R&`DQP$Ylr#eFlVYX+@MBC0KlF9DcZ#DQ[I3`
MkbA4HKLXr@I,k!+@6GFc1Ed+cH0LBY%QqJECfES%*rFhkhBX@`C26dc@VXpH+58
dEZA+#Yr[jXTcFpdM,&p,&Q&X5[&8&D[m+i0LJKb!+cNq23$(NX+IR+&a`rVE@`L
1EZ4G$2pcp*0iM@lXm60*9Pra%(G151G$("R``E0hdXdj@k)@Xh-ccRAeJSdNk#1
9plST@lk0Z*!!'1L`#1B-EF4`C6(04a%8&M`i+E6*2p`52Xq`rYETkbc&$kF+PBD
j2rCT[+A@f)R)f##FR(L(PX*mlG@@8rc+rFcrf$31K$2KU*E3FF`FSCkqDA2T!U#
%jIrfmAd6[50RL"8V38DEe`1kIaC2MS0lTP2P4Fb"(5Dhh,Qpq3mf+iFG+SM6DBm
kj[j@5`JXrGj%MT3U)2cj&p)hTDS"i&m@iBCNNlP%("jfNG9I41RjMTU$1$*CD2$
Z#be63'50Ji-HK5D"%HXR(0I,Vc5f8Bj$#ZCGLXlVpIUlSBK59IiGp13J-ldCVF2
H340JC&6pSVBYlbq%EH(Y8,THdeS3MTKXklJVXa'J)Hq"9Xpb6`p`#@5F$2KI#RE
+X[+aRcE9pKmh@6US2hG-2PJf+XRc!d82'1DH8U2c&A0fG'8A"Di)R44r`[1`4c4
KBS6`q'3,S4mI!9B6'9fVHpZ%[iCBp12Hd-'bSN+3!"[*SeLN`VQ*6#3K2jQImiG
6MC!!V4mKM!EQ@D[GCc%jp*Z"FABZ+$!NQ*jjJP,MejRrcZL-iX!XI&5eDeU@#6@
1ELf!5J@`)d2800H`*hTG6pc6eQ$"A2NUHllhBI5eNr#l`'[MRkGEkQ38RA11KdX
+qSikPe#+h)bXRbL6YAq(iR3@YSM2mQpLSPm#i9@k!RAMTFS*#$dre8p-PF'9+k%
Z`R5%A@,[SFN"Q[KAme2123e'!J$G4e%6,MkS$LKkVj&qeF[iGJVEVq(q0,!b+6m
f`Y`SlMC$BFP`-)E43Z!qPd5'+5!d5FNG945+VN5'rF1RBbMk$[heP)Y4+jL`Hq+
0c6)m+lXC[+B%R,d`Zc0%L'e),(e+j(F6HM5MfTH-62L%QcM%D,V'0MXBX#*ee9b
`(SAh05qH3aVMD&UAe*iHKr15fGKNR[-VBaf&2fIk2XCPZ582-kC5@M2UfP2V$Jr
Y[)hjh(aUDcNdpq1cQ[!fA9[!63DADDVjq&3%Jfmp4N*hVTUeTcYFJ3*,43',D8h
AZm&iSi2h82KPNM08c2'654mIEfHk#0"SkI"4LBPcVcd@&Se9deXr86,2&-IbEL3
IqSYc10'H2PYp3KFBGhqQ#IZqpGFKDd9biGHUQS8,S5e!6T6$j1B[F9Z[I-LY0a&
!m+h11i-PiSK6"HBb-!8Y@-NLc(,1Gq`#ddFk*HmKS3lrNZpF"[42M3CbLA%CrfX
L*#rUTd$P9*V1d)'%"CG5!%3e31e'Zj+VB10#+0%[EN(,SelCH,J'($K01HfRqp0
p-$QmA-c$9NYY[l8&664#L)N043!p5AbfC(l6bQjDDaZHRVTZ'F,dV"Ie@-VDFkh
(B%!0d9`qRRL8mh'4kSIV,VD'RhGclf+QJa`I5rBLr4L9S3rYcHbeEQ'hl2'Ei%E
C,HmRIDV[DC6(KPmjQ0lUA!5FcM!r%4RJT48!2&d#`("9i0(A0"*IcKfZQ"BAAD$
CB&+j3VjlUSfk0NmbNG1T'HU&V)R`XL+1DFpd0+!JHaR`$&*MX1YG&RTG(mm[DX)
5R9m&fJ0+*6BBr)%*lEA-9"&VcR55`'!N$cDQY&FqRmMJ#,!10DH"FGDY4QRVSHc
hPV[%++L1N3Y,rQa2LQqeCCb9pKiQ*'INe`LS$S4"NSe2%CCUE*bM!#Bp')mIh6e
,aR4+&%Hj6#rCDpB&5XL(*CpD$&HZq$fHr8(+U)@M`4BXU*%SEV)!5ReHIU,,IS!
+kTaH-0[&lm'$[+8fq@G1Vbc()Uq$3C!!5Efcf'rQ1k0%3@IaXjQL'`!r")(N9'$
mG9@5e*dTBZ2A622[X(Tq(c`[QLFdLra[F,Se,@0ed@Qf2l+lXAVYd8c$[*BAA#Y
JdQI%VH+k%YmY3q&Y!B&B4M,[8aF*hrh9*i'3!#Qe"LT[qQ6Ac$Q)%5BER0e6BbZ
d+NfB@[$`3LJhLFS&H6TdHUl53V%UP&mIVYMI932c)!J[)0+(DM9Jb1G*Pr54eTZ
5G[eZIedpF)KIM(i'DE,40he,`dVBH0Jc"AVG[ANp!89bdiTGd[NBiqNIVldfNp-
%NB%)PjAqUS88FA6*jJHa*qdI(@Ri8!6J@`(K8HJ8J)ZXZIH3!1YBE2M$Eh0M9$U
,k*XVb5DqX8`C8M-5-G+J+)i!"FRaP'AXlY@Dq@PG2&l)E*)jJH$aH2IjP-QX"E5
-'!b0BXIZqmqA1lk5(I[p&4A+i9eXIQB6&XaM9TXMi''aZF)D*%TL9j1d!+`(UQa
l!8%c9Bij9Qe,6fkS01rSif&"a,id8h0d8Q`b)[L!c,L4(q"1d!A*@"+ZiRFC8'l
,K2S(MQ1-2%--i#"qE)k*b-b@TDIf!!-#PH`r(d+!,Tdq%fVi@jQI"eRR!BU"N!#
(KarbPmFbeMkQ9b1DT5@r"i2)Kq*4d-*lMSMB@e&!SMNl4CFGEkT9c+mjM1244Cd
cZ1ma(pBYaD(@#&)*lAS&R&Gc+H,8,*kb&r!m6FpU+%ARGUp,URScEZB0$XiFb6*
YA*MdT@S'Vm$S@AXc6VR1pZ'BI8)Qcmaa4*QcIIEa,fepjaZ3!!49KP6GVh,%JNR
rELb2jU,qGSIHJH4#&2r9Bm5qJGEPBbNq1iaa(Q0!aCUQG3@,E$-X(2%k(ID(Y,N
NM+Kh92kk-GZ'PC[DlJ'eBepV[fqQM"G2[bUhDT@QN!"lf)!!,DYLk6IhH&0h1&[
4Ge&K*DkaaNccbP5Ymc-L)3["rJlYNZ2,j+YeDGh80T*T`qj$ZJ3kUII6JZEr1I2
Sq`TJ`P@HpeU[Bd0V(jP8&XPKF3aYIXYT&&rQ[mQK2pc+qU,#(66QSr(2#SVR([6
VIFb3!$[@"F&kJlLDUpc[C'Xk!MI%jle59fUU8,'9'XGlhpF'*VTmJ6DjhT!!XbG
$12E&lZT@*3Q!fSfF49[!2rZ(c$`Hb2BacPmI'Z%k#@e9Qc@$jSQ1#`2pp!(Ab8k
q`2!D66EZr&#EIkNVPDXqAPakNX9j9Mf#f8*6GiC,KB@U`d)40ITEabHL8rPp9T9
@RcK0Sq'AAY1mF!h90P$)4$5iYKYMCGJ&!R+NrEhRE9T5N!#TGL2Z"jF&LNLbRd#
G1hAZ,FF9#LITfKL2q)50DN$SEX29iNVL6@6*qC&UcpT93K#d&X@PhZfV2c28Z(r
ic4c3qm0Z3`jM0LI!fR@PiDj10f1L1IXbR9KR3%V9+E+L9%38KeVmKCqB2M"X!bE
E''BPqrfVkqJqVfX3Ei*Be'm3f89Bm",c`K*I`S8!8Qh5#38"-%"RV*!!Q)eC((!
2@6J,M32dM5lB82QiU)0I,mARTS*NeYXV%0"Y0N"LX4$pFmR*4hZbpkfcJhlK66e
0#M!Q&!%Ed@qRjFZd`Ui&*R32m5c8,*JE-#)2"H!jrmAhj0)Y2*,1PL`2`D[pC0*
*P&YT&5[mTTJ*j(4%LEHb'bkrd3!8GdJCF01p[!V"(M000VK#hJq%Re5L%"03!(l
T)eFl0Qd*B@R8@&RJF*E)TMAG'Np@DSALUU-KE$Tl"6r+h$AMSHA0Mf4N'b*2rSE
*6`(4@HYRAYc&GT833T!!1"1lH3h%#cd&3qh`JC[9U+rF9l!C66@mLM,[p)M,DKm
jUBm!Xf+@%cQ6,G%K)Ce,EN[GaK392FJbf'V(!$(af`"#FGC8BeHBl$mFG,`-6fl
J!D[d!)G14M11lE'ldJfFMH2f9a06G-9cMA2-+38#$31Gp%5qHpd5faN%#p,#hcT
Hj4REd13[Gc$jKJK(UUJRlFKTKcS%XmCX4,[JB`R(4eal@%iE4!h1a82QpcX)CD&
jPq3!hhC19aY[4NQUBj+prY'f!`HF&08-H5d00Lmm)31!TlRK$@hXd'UA&3CR$'p
'4TXYdIKC@r!RdPfLA`[i`0,B9ReG,Y!q(f3pb@Zmjjma3-[RQ%HTf6c!FXj&PfE
0H'YUq-TQ)h@L9a4F,!'8Jc8aBN4(ac*JeefCm%*NGaiC5%S0!,M3a3a#I(caaDP
8CM09R)k+1%14A0FT0+FjHN9BqUS*SR4e[V1IS3M6kdDDmfib+mQj'L4@m@b-bF'
)[Rm'hU#2-f!'9"2m'L(YFDjJJ%`Sc0lJC2h,Nha3Ud!3pq)mj)Bq3Ve5U%"[Ch0
jGf"[CD1+1RE-4qK*+#P0"4eD`dTVl3'FblLCETX8rrK*GhrQAqBUb6H52L-6cET
lZR*MmU`Bf@*,GCG#EeYG@"e"r`@*N[T$MbapZ$Ni(ABlpqX(i)-MYK!mBa(e(@X
ZHaR+++8E8EQepKXN[,A!"l)[ANPGa1@%r+),dSebee5)+eqGi,JD9-TjUZ5*c#e
TB0ABpEN-XJB8"*j%j2A,L*V`&*9+*X(TLRa,Td3$KFhU2aEd)%chLPe-lKGS[N0
a1SC&A&cj8"dm92J+81+pl161'@S'YU4+2SD!m5'C0cQSKiPc&2)%R1T8XQ#dc)0
bYS31RF5"$mX$fDF+X8'SX&c)R+&JjN@NQA3MdQJ2,PiSKr-06#@d5jp9i&M+XRp
[HMQP3U!LDYVi4JViGpNSdiaNUN,c4eFQ(LE[RkSqGSeb1eLFc5fL2lPZMG@0r9P
J,eAQ,-GFACG&1HLqqCTr1ZZdCmVdkm0A[26Mi"+I(B#%'q3R@3'kL4QAR[bllH8
)qHV5k(UPCB')MHY-5cJi49Y)'KD4EEU*(Ci@iX4a#&UBb&-1l"X21#3Vk$6dX"d
43eQNGX@5G9XrdYI4!!,G4m([`r"Ai[!&dE1S0b'U"N3M,-0r1blQdQfYAB*lX8S
MhER%NB`-SX$0'FjeY%"Saq@e3NCE6*&%+iVD`cI9@aC0l2Kb5G0R+mq&Sb5)q2+
mKEY[dFq-Td0'G!(LIIbh!Y[B-cIXfX+aiUPC[pF9R@dT3M-!3j!!k-*YQZa,0),
b5c0*M-m@NUU$f8Y0$UG,9lA4!Habh9SR"MQ0-1[QRS"5rUYXA$m(db1AdhM-*qU
ak!0!SE[@d@l05JH[#fT0`kpfZSkC,6fb23!82)VKNiZ3!25RVc1NlN-Z0VQ"['h
LqS%[22r,[dNhe9i0khL#%mmacRA+pidCjeFD&eJ'd'*N"m2biJ-%#cN"'58bk4F
Gf"@T3j,1TRTf2D3I(!DFd24[pKMV6Z2HFE8r,2mMHm0#MQ+FJilQ%bSLKpQaBS*
*TL-A'I5J([rEeAqama%,MpZqF"H"Pj)(hE%VC$NRKap"q)jYZlXZPG!H@U3Q$TQ
+9Qr0&8UDZ$$%@JqSFR5HG1SHKIE0q0!M0#kL"ZQmFF0-ZZ9`lq&3(Z8(R'VBHJU
Fii`CqZcLrQ!XhdR(pR&QcqLG-3*@SVLI,0#5m`@e9&@!#P!YZ2rh2RPRDK6hMJd
6a"#H[LRl2!j!f+TL()@El+N2`9"Eli`*r3@GbbQMqciXCZ%2![MJ*r0D%RD14(@
0EEHhP$"5QPXR8$Em*NNcI$hdZc5h61I#Y9Ui2S`Z23Ar`*Jkp3fJm#'Z09YVI*b
ckCEiX#LpQQ,I9L&KBPYPh',1M*8"XhI(h%SlF2hM'A,UQ99*aHp*J9Le92lGIcb
0r,4A5+F[,k99KUdI@BmVrU4KFTR0mm,SJ0eQIJl-#cN"VF8C5JJ'#BXLQm616pQ
-2ErCB06p6,!i6Z3CUa84"I94&*Cf+0imT@m,@*VL8VFX$VD'NX!f8(@*SKc+HSa
a'((0R$X#N[Rf`@4eQ50fN[Sh9N0jMiEac*`Z@pNh,&cQN!!U@+,A&l$r$,rRYUm
ZBY4fb,`[Calc+MNMarE3Ap+Z*fqURr)E1M9rCa!hS'GfZjf)44Z3!%ZHAZLkbQP
Y-Ta[U(l1Sd[&Z2(4NQCkbDi$-mAkZ"!&+FL05hN&jp(briGprjkj'P1LJf16Y*S
Smc6Td[f3!+)0D"QVPH)",j,SQ+SNq++Iq5X4qI3",8T!DMDK-(Y`$'Xi9,iNp)#
&Q"lGVIipFQN,Xk@Gi6iYZ2@CZfD@q`i6PF-0DL"9a[&DNTaU1*!!1d,bXFRYiF)
0X2@J"TLKhZ9YN80CkqNrY9[4'cR&SA*e"d5ZG6D#Qf5)0BS5IK@%KfQA4aiV'@V
%2Z,+Pmk@ST6krrU8qeVJF)q$4Iqi9d`K6I3UGmL+0G-NAElI0[AYhU[I#6EKEp[
B8"+(#QJ-4ZTDYjp(ppX$1YeSPmKHS$RI'QZ)%XdNi[N%XmZj-X9b1V*Y$'6IH)$
Zi)"$q*j&GLG#Q-BLe)DI[I$[RHP-qVj3*'FCP(G9j3E[!K-6$f*$D%5bX5*Z32J
ZZ)`,h9A`m'Ik'l9`+3Ej[`C53Z9DeKGm5a3q3aZERLi1eFV0B&21[AlATL%'cLc
fkX'eHj,CE-BAPLG,kjS-9eMH1`609ER+G@0MRMSe'8@qji%-TTr`mSSUR@&dlX%
ZY6QLU*(hLJ,3P8+IXH@0fcINrem&eSEF'$k8Lfm,8Xh+TLKKpjlB$T+NeBFfqS%
dZABG-$,k*LiB!cjDphi6)Vr)q2GE&j4IXF,ZZR%pmN$c"DX-K8G6ed+a4DDhf@5
kbFZk3hB8'96$LQaDp6$@@#5Bh0%e6Nq#6jaT0B1F'+@+qkc4mN9%R3e5b&ZTe$P
`'j!!pU0-4l@U`)3+'QBDd)L3!$,r-Ikk!@GBH-4@Rm,RI&QeD9%j@(CK!hCKeUa
$4[0E*Ym*Sfr!+r%3rQhZSpV[`08fJGPU[hGij@+&EPia&V9%Z%-)4-kA26$EbB(
Dq0dT14qcNGVr+p%RmmRJf9i)TTEDUDYDhZ(RZ("i[0m![rkpPj!!X$3pIb(IaRd
YPLf+ES,V!1qL3KKi#S9!B6'ZcphebeD%d&"M%pjmQ1(8(L'C&6YmF"3S!3Uh&iH
-fQp!Q6I1@C9NDdTk!d0Tc"[aL1"cm&bG$bq&*H!H,N65jI%N&D)IcD+R-BFb1)H
i9L[SAJ%r2r61YLBh5Tl&d9lN#'dG`,eQ8r,,8RFRCK2Ric1!)TNL$ae@#(rNqFG
A)2MCcZEPmJ$Qi`A+VJ6I3TqqV0%`R2(q-ZQZKJ)YJC-S$#6'BiYD(D!eZR(JT#k
Q48qH3P$-PrAcZ*eaFAU)`bEUKTc5qN*`Y-TVc8m0`haHk5H`m1i3IY2Lm4IlrY3
#LCU(4SUAlZS!1d#kTI,,IN8@%N8(kGMdMX'rc5,k+Q5PqEd)Ae2hS%pfGNUhR'@
Im0Y%Td1Y3+EQ2lDh1ihJD+*[J+S0q'J@#h+T4c'e,0Q[Ce@Zh8'YD8$+XGc4Z*1
E'ZL5iP#3!2Xa(jl925PA5-[+5qcJ,jHG*qBe59I3Q@ekaBrq8iVpTKGYU"M%ED8
MIU+b3iAK52*a6L*0@1EbLq#@&Y)I%"M6S)c"GNI[c3LB)Fc4fPG+kYJ6YAELa9%
0VT!!+q8hlGle0`'UhTb8p,Q1XKrILQ[(a8ZV)YZ+-%&*ee"k,1#J*(%aX&CFbGa
N#cm@Y@9(VfQ4Y),F@Aa2(I5%Y*kVN4lXJ'D8jkT-GM9FR(YMN!!9DUAP*#SrcS9
,!3aJj%(J20G31#l$ID9!96Bi+dG8"GfCQ*ZTUq-#)j`U26-G&HBiIrqM31Q+XqD
*Xcm#d%#LEVl$fVrMed'-BBB-2MikK5K&R+Z26k8@!&ji9H1!3aRB8&3e&9j)YG5
UlfVq`mYJLENXK4IIkjD252er1cikaU`8FHj5DI'fFQdFdC!!4Y'e3aqNS48KM1e
!$q9ETbN@Lj[Hq$("2iICVe@qYXMf1bNGMeK@DRJ"-0!Y3d(@jHSM8D&0)1q8eD,
h#[Rd#KQkcSTP$b5L64G'fl'k$35iI)(G$qNDC8eR)A+UFerDik("jFSm`ID'pcA
m&Vqb`RF'YN%[%CPDBX[%&3Qd+94M$T'YTkp3,[m3k1fIVd!A5LDFK9@"I#8Yd$"
$96$Kfai[K)MiPBehjR2iV%6b+jfr*)CiID"ND(#h4FLEA6'q88rec1Cf8)16,l6
T9JKclPh@UChi&qYbrcT1I!Rrb(PNVaSV1i1cT13$6!VF[hJ8%GbQSQH(J#@R#UV
,lacHLX1Ze"G*@@$aBfT#dc#C2J'GN!$1+4D*KC@EY"#+QR8UcS!3c(%*!j(K6B%
a$J(Ni'B#Cr%i,KNq2(m)MT+)#IDVk5Gii*SEFEi*X$pNG&D4SKjf3IZ+qC@-Jj9
%QR6T&)C3@!(8ad!c@Y4JUqmCREmakNfAP(QERcDD@diR%0k$Q@6DrU%9'KXb02J
'RIPcRXj(rS+hYacY&b"cf8TeXp#fiYPqZ6Hid%VPZ$1-%C8A1QqmP$l9eA9XG2'
#cpqrk+AEG`YLRI6I4Krqr!UrAU`8ekZrLN1X0ejMiPhZZdcA@A6q430efTb)f`H
ke&N+V@5G3Ji$a1!KFh+T*BZeMNEJXL-``b8EcEDj)!YApZ5mPFfqF-ffJH"fPi)
0"lK32rf(A1Vhab[6!IZ0Rba-#VZXF**f1[Ki8-[iYejq9f+Mj4m,!R4hNTq-5-&
E+qh,&&P$ASNX,KZ+V3b'%Ge@B)p3KL`2c2j(Y"[Vf(V"P4$28DN`6LMe*QCGcL@
$)6#frj%E#FKfBR''KQCPJq+Fp*%cEHeA2hG)Fd5GF!I#)i4q#K0KVbQ4,69J)5#
#q6#9FJl)PD%[`1b)KaRbANYP!0qY`X[ep(['mr)p9Z5fl'r`Kd[lpdX8rhf[&RG
J@MKcRe6#rQ4B`N"'mLc"Dkh"CqpBk"`r`ZL%4&`TM@$)cPr3HVPE+G0[JeIEpJ)
PSI26m('6X94qkXFC6BK"#b4*BrJmfqh!"m$%8X5"EAp+p6YA+PU2hQX66hLVqqK
2Y!rU0'9B)!M&T@"%f+pj!8bGQIq'dR8RNGm"+idUeepAdPk49QK#%GM-99rpB+m
I`UHIF'0P9kd3C%SDaSTG2+[VQ#8Q9'"Pd1Rjk5*%#0mler2d!b+VfM%aP$Y!!Np
*!)+2QeV@'#HJN[FKV*!!(B6H4%#"3jS'U**bL+fqiII9EK'1Zd2TR1C-D)Ack(c
U(@YR*HT2CM`2&i%'D2Z#Ll%"cQALJMZE[0,'%*i,4VQ8@09!a[d5@X@$hE9!%IY
iL2EBXDZDP'@0bSj0#15C(bYdPR%$*k#irJJ[V5Abc(+6m"!pBUEa2`V1DLNPpih
kj@'qPiT92'BN2Paj+SGi,9%`,$`jkNeKi`5S5Jk%cGSX+B"K4&jcEkl(B*r[VQ@
5VQpJ"I4-B&C$*r4ipJa)d)VNIKlrE@a!!0Z1$Nqbl8`N1AaG)`5b#[N!cl-2qlP
4mr104Rdf"Q+(XXU$AG[I(9eIq8pZM%ac*b4RFSSJD88U(jcHh-mcEDiKealc"[N
3Be9c2bm3c,ca"$9N'+!IBA%ZF`%3Km(1(R[rCVl))PAj+B8(1Q$dk8KD56!H*M'
$3KLl)Yd4JN%J,#,4D6)ATCLk3LPmqHiL`E8md1iV43kcPlh(mm5DF6`G)k#beK4
FX+$p$$e$XfdKqdFL"Mq%BK5#8R[)EpK+0Z-d"11GNRZ`bUQN6,0YVic9VchC-+X
I9KX!l8`Sh3B5bED-Ec5MQGY2`r(jFc,T8Nq-N!"bTlV8I$%$l5,HS&"fqUKYRei
#h+5(NdTcHaH[Y1Hl+V$'$2QIq9*+rDY&M"kTB*Fr6ITi&kQCh%l2E4)P!fIHY1`
J+fhEfSHT$1B'lM8ZMh'SE931[[5(Vm'(YCNH3b6A-%UrGc23FK@$0QJ[r`9ir0V
N(8[MIm&cFE`a1r@E4h!Ld$d2l89p)LQHbZkcrKqTVRA(QK@"%KMF#N1#eES[YLR
Sq33U'TR@k`B%2HGQ5p#6dDVe@#@b5E[,q9X2B-K+j95!#r`iTMYN@NKpZ%H9!6R
'6qHLJKf$eKZ0ALp,C(bbpJ+C3ZKm,&*liRTIhChXq!4R*4JcB6eQj2%SC#jD(T)
6(ZR$icdB4*)#5IUk6MbbM&-G(TK[FN2S4XZPi28lrmHqAY`*F"RUl-F*cl6)AfJ
PdcF"5YD,-UaM9&(10pGHG(VDml$$iZ&Ma2Kf@FlALXp5bPT53*1S3'Q$!FXBR+p
aY"Rmkr!m61eBqCaZLjaDK4,XdVK[H1$eCLD4J#*)X"ad,+*ralk#iH#j0K3jGC9
D`m[!0J9aF3h[*"CC6e`,cVr#K!XTLPbR%JIp[3U[C@@8'BRdG#rfSR,Fr8q%f+U
*rJ)+EFR4a,pkbDXCe#q"kc#+JG'H4dN(T9&Xhf%HMFjdr[N`YE6Riq`&fG!,+)!
B1+Ga%l-4#H$DX'aaNF0)$eMCa$iHRd2L%HFb3+i'Y#hDG1V(6UpiUI$@8N#f0"M
UKZ0d'6Hcfj!!k,"Z5r[eq52U5rZ)9qAFb"VB'%qK3Cd@#r-G@F$$qlrDI$e$r1S
1D%Lp@ah(YJa,!e&fh%YjK,H#Z6rLaE(iQ%05bhlSGKk,jPDrN@jPR4G"8riF8)*
I,1N&UqXPJ*!!Xbp*r,QDj9acNL2"eA4IQ[Dp"I(FZmM*"'S@kcc0eJe)AdBk)1@
fC(Z#5F*QLV#&lJ%kEEmh)[kF9XZ2XK[R-%U`cP&([1*Z&I'0F3K$ZU+heabMm)B
IQTI!VK%m[(3qNH6IEBb%VBf!CFJcPIG9F[)-2)TaHUE`IJBdKE&2hL3dTZe)2YB
!TfmDGhh'Gf430JKS8b)kM[$p-Bl()f)3pX'3!$FXc@)CL38&+ff(B5+5mqZ#&r@
+Z($fd1TcDTfc6l+aB,Nh)m6[CV%5#,E,KDf!pFi9j$l,TB%aiX%`-4-TE1IR&*a
@Lh,ZdH#CRX8NZhcijMVJS,aJ2Pk#r"*h6P9)ADq@*XT(@DkH1+#p1@-d+RNq@,Y
h3HD![qpA!0@2`DIDCX84i5BcJq'Emi$hG'!H+Z&F!dh%RJ[TP!0M&&@3!"m$[9J
#D8ic$3*)5&#FZJ-I%,ml&iFfm%16DY#bK*YQNipHBMK)p5-+BpZQ$J%q8')JXmq
e'D,Y021H-D$RH3(-[#44C,B$&&BkZF6N*#GRBa`i+3AQ'V%RP5Hl2j2[BMQ'+1+
EQDjkKqCb`T`[+9eM35'!+I)C(VQdrBjGrVlcK##k["T2CUfp4d"[HrJ-X5[5AlG
5(A))MGYP2#EahN%`"bLqelq-+GMF9ifV@AV,"$eHfJXI#GLZ"EJ9C-D+h8Aq@22
-"6BaVV"-R@IBah15bT+!9FU@6Yq'rCSGP5PVmE@LQIZqX$([6!U(U`FM'A5XG`Z
a2!J[aUpZ2`U8IHfc!Z%0V3Smm6JZb&pek+#2`N[h09I*-dK&6*@+%D)(4$lK$JJ
ijBE"j[!T@K"pd"hUjT%8T4fGk@&`eUPThE[+$f2l'I#Z3jRPkX!*dV*PETrFhiQ
RBXc0B4cLh*%*3SVk8!Z54e25U2T!c&ekm8T!k5Dc+&j&@5j*%p"cbq+,jJD""fj
BJ@e)$6B1[C42p[ja`2UTUb2R`KN0XV2h+rhJBS'QRe&5%6beFGQTCPl[ibQ*VfL
8UQb`)q9+L+!31rG$j&cFT18h29YlIchdYCZ+pIhTD#`9,KE$G`lar,&K$X$Y@[p
*90ih&lccNY!Y-rlbcA,#[AebL$S&4kEM&8e*51!")j43AcC(JiIN1B4B%Z,qF,!
5VG!VqrX!mIlfDZYfSBIeZpL8(TB-`Dp4N!"pPEEfV+fDiC-AR0f663NZ#ZF(FIZ
kpFc3@N1T10a%%8DY$LZ%F0@[f@-lM0LmH6DVS*j'&Y6jc1K&b0+-)U*k$bG0UbV
ElGPTD6-+5@DRBqRUPj',hIQi!Nq8E(KGh@U+Hh,XSA3M,Dj$"ViN"PAZmK%BMUm
DlqQ@Fa3iEDDY)K[B"-RDUC`[DY%`HM0+JDJK&UfU8ANZPbJDRP[lNTQF`!qpk*!
!*Xb!X'c'Z2f5B66%adN#c"Q2)!$RE6Y3Pm,!b#QaA`2,bQ(M3'V(GL-GpcbI2UE
hd"IIh+$[0XFr#VdTFaTKA+RKd`rdZP941qYfG)4,-j(YPZZ[KF59qYNlMh5I(5e
@((bXZ,DNESKQM5*fq9I5MbGQHdT"QGm9*H+B&,B$E9,SDc"p@*klYeh`P!#CqQQ
*5P6lBq-lBS%alcb6br0De'6iEpDj$AXArm&T$k)MU0A`L6$*3M$92p"JYr'[642
R')%J@Jd%re[KTp80qHLNN35rap[!T9c+(-)@,jemZ@G#E1[YE*@CUFKTE(6pa2H
T*aMeYc8RQ@35"h"Jk5lbl(U($E6k#Z#r5'&NUSd0LBNlbKZLf[F2q9BH&NRZ2cd
&pKdc"'FfHMTN$9ZeBk%!4-Uf00$*Sr5f"&IQUip,q8!'M#Q$iqmqVdF'j8rlY#C
k*feSUUacfb0RV&Yd+"`ccbDa$T%-QHcH"SNq$[KR#Dcp)a("m-eAlAlXY@@rSbQ
YZH9!l1c*2L&#q'NIAJYR-CVS80ZZkcjirG2aE0+`UF59l2-(T!I2AIVQ(mH99a@
@Q9f#Ce9R9HrfXQbY,)[QL1h!ie14AMcdjIdl#iZS`qRkP(4-*6RKrj-FIPDX#Eb
T1!K8-TNG+K4TDQpq-qB%caZKS&Sb4DCX@)imY3E2rb8Y6Tr(FkB@Dli-K-MEj+6
M)p9D!![Hb!raiI`'5dHamJIXiU0XEYRcZb@V!4qmk"eH!H+UJ9epaL@q'P4LX8f
(C(VQB0lJi4r+bpX9AP*f+X0dSRDJ*P)RJdh!9G,m&#94fimk[jL(Z@r4!1Eb"XL
SSiRq8pDd6N2Q82'5l13JKLY[iV96(j!!f5Fr%#%L3&Jm*L(%88(XVEL6R&6+C[E
Zkbr%#P0C!XH%3SX)HeU"abRT1i22ENc+0c&KABP*fkr5'He44ip['ddHZ15PPZ5
d6Z2PJQCbJd@',dEU#q#TYDr,1"iL""6YG*aQNL4$Ym("l5a66fcXP-05(,mLpBj
E(h9F'IjqkG-4SfUJeflU*f-C514%GHA1J-LmVb[-3GS+C+6Zf1BphYR!L'5d)#[
[XfaGH66-KY-,Vmd,'%($!q2L)Mc9X)5NAHk3!,d0eI2--DS2BfmPDUeGTQj3PTZ
b'*Hb5"%c0)4JbeZ+(LGK4[+m6Y"i3lhK,'9'YUF4FXiQJpP`1LiGGYiFlpJQB`P
Cq+LJeM#YfTFIk+bTX2--!rJh&Fk[3#MXG50`,X3"6iGa[3)be1E#$$6Hm@Nie,Q
*5N+)ipCrN[HT`DQ[bQNc&&lfHfp9JIai-UcpmGHRD"bqm8X4%J9m4-V-kL(k8)c
e!Hk45bGLGFTCCl4p!C*Z,ER6#(b+E*AEhEHlYhE%Q0VpbHAT`,H3!2fFph5[iP`
bBLFm4mb``ED#Q)3L#)YSm'1JQ!BM)HXIKL9G$NPbJP@d'[ea3YBmHA1YSEm!DeK
IrNF84XV!J@qD'H[d,"Tl"M9L$$a+1LScNVM8m&hS-48QKdV30ZFQ!M+ideLfe@D
hD8kXPfrY3HHA0Y3j&PQ'"5,Ic&q*J9lS"4SFbfcq@6i)I[R3$063m-QQ@QT#0dA
c5`[CSN%%Z%,0e`Hc9,qA&A(M0LqkMh51%DK0M-rMP%`HKBaiXl[pA#%,F#He*@2
%)T%H&FfCUPlELCR)PJAhb"Gm*[hiS8VURK(A0FpXh9rI@4I'ZdZaBV[Kd53-Vmj
Ihf#4VQ#`Y5HK1@9c`Q4UcPr`F+EqQ*E+a%iU0+rBrCb,VpG-hYiFSaPCN8iEAVK
a#`EZ8ATGbT,iJ&lpH8mbCIkK2hJB#2AA+#XXKl+S4$U[Ba&S-JZJ*5*`jaL[hEB
iDDGN!GS*0kLb"0RM[*TVjFNfF[m"0a6951@N&pj,FYmKaDf"cfi(NdiG5FiBPqJ
L))VAj0hIrA-H4A#29U@jSiCkp2lXIZ)Xa0)3i@imPBUZ#em)8l5N[54N&Er)mJ)
4[2k8a[L&+p$bX9@p2eFl2meN9iH@10)V[H+PBC9ZZfQrTq1#4AmLc3L9mC4pEMK
E0b3J1-%V8-X,Nm`B"hmdl40iAr0D"11$p!1,%f#,BHH,9!@3!*J4BN$YNQ`H"l"
JkbeX0BU5q2*j(GGC[ib#Z&e(hC3@REK1[$ade,K[p[UmMeV@4qhEH059qq9Am"#
G01RFfb8BADZBZ6[Up9`d!5SJCpR8E-h[(mAjEclN&A)p'C(%*8kZYKbZ,XA[D+4
lecmG,ab+1rDS!R8FcRrVZAEBLYcqLPR"ZCL!hc8&cp!pPfc6Cc"C1**bh2-8E)a
H,%IPiTiLL!5&DmcFSkeb2HHdqeP*YcL66"YDQLU!Dj[))eBR4BNJcM8SGHKU@#(
L@V)UA`QCd`j%5PDbKP5I*Iira88)1LmHU'1m6S6c,q-k,r4UcYe`Al*R8IqB[P@
bfj!!+jK4$NMIHUbZHU9CmD`mN!!qa+9[!`KXiaV[0kZ%,*!!'q48K&Y!Uf`Cf(G
!&haJ`T'1S*(b`VB9@-(NR4#mKK`!j%Jr'X6I[+f"lk8JeecUil(2f9iJB5'418X
mi,B`d2N(C(XBUkSdbMaZfTd`!Hm#rDHR*#G-Q+Q+MaE$5RTVGcNPre`EX)b)Nd#
[`L!)aD9Jb`IlM-PYaEKJ"Uh*9D804qG`5@bKbUX4%e'IFN84-,Gl9eN5[ph4d8q
ibCd,Ej!!"Bj@md5ESqc1DNbqDDeeXIRJ68R3bc`PDe`lEK,r@R4-1`Z'S)R00dk
*f1K'kDR-S#Lr5Um!@erNeHkaFj8[-lDCTNeI5kD)b'idj&eJm0`fdGm-c9[M6G+
3!&4haF*6`+hhiL!i1,8X#2G5Y48e$Cb6Vk(#,+@1ZhUU-,&c5drM*09V36'c8-T
r'AV@#6XEZY)!J6C8"C1IUl'3!$c`fNVb1+9(X4iHB('lF)R)arIIMeCEQphYN6f
SBkY'5(8al"lBQ+(9$8(+eDYH0&p$44dp,Ej[J9"-`4f+(eTARTqUIY*K)V6"Bl6
al85j@@6$(-QH@dV@,a-Q1*ciFa"laZUMP+35fV5FALdT#ciVSi+'r%5a2PjFE,'
*C*Um*jL-"4&Gq0F-*b1!4X&q16D-$19Y#[B@(&`f$6#k4$c%C`Zh'Z[-"cDrNEV
af)FhjU,2AEk`KkfHJ(5'YE#*(N#q&MUfedXea3@&%f+dc!h@,"rCp(eR42A*e5i
r1)I3acbbJ*i'KIi&jQpTATF!I%X#+RJG)&)b#pKr[Uf+0QSDJ#R9Um,6-6Za%%p
CAHCDNrIEaXb(ei+h&PlD*HRM9KG%DPVRGh@(pI6+Ri[$63+VF5J!m+Z3!#JVr'@
43'JrJb,r1`@AE0L@ed8-LHEjeTdPAbXp$2#bDiLB%PG&cE1,Ich8!V-qVIdk8BC
2)fh2JMS3,6$bCCHIYLjNp-K&+e(T+3VFr@`VhVc&KXA6Ci9rrpSA%e@q0[jL*hk
UK2$&ehf4,d)B&e+p2&6$QJl(L$c#AFI%@1`VF`dPmFM0)5i(k8#qETLU8-hSb2l
RGFZ`--H$B1q!jZ@@dTaX%YIZ(,iZGHl$$%MGU(`9@[lT[lTJJVmNZfGVKZNFpU'
KTfC6)0DSl'!9I`ChdC8F!L*jPV*4l5e-bh3#fSj#2SN@r1T!2[!L#9lq-UAB@"Z
)DP#@Ai8Z2N2Y8VlcQNLTRF1B`BLP`p`RQ+9-M'5m9+6DfKQC!J`B1iXEfK4HX-f
5Rq8FeMi)!"M6'%EA"G4$NrIJQJpU-F2Z"Z4U2@[`VFKkGX1+j-XU&YEV)81NYlb
-YecU%rqT&CGi,p0rk1+Ler"[@l82fYhkeY66XhIYi5(lUU&R%b[Deeq`#l94QB%
%p*Qbpa'`8lXR`2Rcda5M5+KHhjBQUPETC[iH'b5GqSC-2XRHNN'V#PSF#0Me[KJ
#cX&i*ePi-lbr)9HGG*3RHF24qB[ck0`mmXBmSb&Gp3Lmrf*&plkhV#N+U@(A&I8
51pZ#b,mlC,TLdK$hA081*fhqDDKY%T40CAVVhQV@Bf4-jq1%Fh36#&(K3Y0H*8Q
PhM)"SI+V*%mC6f$EK&,!LX!3cRE3ZRHLGD!arU4lpXDTU+LNEEZh@h,II+,-N5P
5JU1be,2K5X`THIIa&A3`iq391LCE3Kf'NJFTQGR&9pEEMIkPfqdDVFQ`bHhF-q6
jPQQMZ&YXV[6VlM"4m@eF"h#JCTqbVSiEebqIdPG46T'LB(BjMA89`4LGJkM6L24
KJ3$k6D2CDDU8C(!,mR"CQ4CK(L3h"3PIjEeF5&JE!l-@pETN$,#fMcGd@bMD3)P
,XK6F9)rFXj*rL!B)F#4$Qc$5LJKEiaX010dLj)-5CI)mD4[A4#&+Aj`(YhJHfd)
UShDKjd@HGC1dEZE(BIEB!0%-H+qh4,*3IZ$KJHqG5RP'2X`d[pVa$0$+2UN+)"(
V4"'$8THA0eG3'Mjlr`@A!!M9M-5C4m5ihc)05`+4NijZl+-Mk4fC2jISa16"M4P
qfN$iENG(IGSFX48@LR@`)2bF[Uj%rVC8hmD[pIS'@ZpEDPNCM*`FPT)@FZG!NYJ
b2rqCQ@df0321d+qV80QcfY2Qf%)CQq5T"PJj&rkeHAUf1e#`,KQZca(DG4CRHfA
&1rA#9Vhme+K[U,4rJqljp'(EVYYbG"h&"-+dDficB2ClIY"4(XbSd[*`p-BBJ$i
ApPMTZ8e-*R`m6ek`SM'qUbqa@0QI0GM$*eEjXdBK%FqG!5%Pr+3pAQE""F"Y[S8
U'lU-1Zh$pm)@-mKPBU8Q(lq!d@+`A80MfNEmFI)+,dT)3"@1j)"+"e#$Z&ZreYc
C2B*"#A!#5jIh5!$L$J)$Fa,Y#acl-2k&(A+Q[C3Xc[ipD)@$adNrmANlENJhi1H
*%eMCd&H['$iiYZHB-aHKd)E,YmUCmJfhkR2cD$q!S!UKlQ&`N!"'T(aB4Gim*hr
R2hFYU+,P(QIbGZ2YP")GLC&Y2Zcj&S,heTJJjR"`DQ$[KX0KhT!!,pcl-j,2lYr
a,,P)lX9-1pdH&A'YG)FGJ0M@R@Z)+,4RE,Kr#rXDZ9T$c'rK!XCb(%XIeN6ql3a
,KmDZfjpd-KmLTJ"#Q(TdDa[@M4f88$"l6a0(3(H*MZ32D%iGG3'T$0M%Ae6GpV#
k1Y"#41%PYmL#9[V!'Kd%bcPQD51`MDQbLdE#98p9kAHNK0-fTB#p'l60e4JL#RF
d,Ch`Y%BlRe+J%ENRa0JQ+KA-ZpDXF)*`le5&@8bdlJ8[DU&$+"*lSP')h'!YKH0
%NbLjN4ha2(D[hAkAF398I*[P939q'U)l3aGL8Q@"09Bi3,iK!(+[!r!Yqpp6L%c
dGMK18fhRZrq*ZCPaE*JIr&Ed8XH@SUHUijk3!!jA,bIT'Y2p"dkVQT!!SLa8SlZ
daMG*)@hBe'M,l!j3KSd#QS+CP0!j9dXCYk`!208NYHK2C-e#0c@)@QahlFF$Fq)
42H$0ACbKLfUd25HEeM%Z!3$`1-dbeB2X"T*2!I#aQ`Z&'C!!C+ASc,ZEEeJ$hij
R@D3F5e2j@N8B,(@rRGiUAIGH3eSb96k'*`keBR#R*&A[eBBfR'dJ,bhaS!DhMlj
V"fEK8X9$Gpd8A*!!bV8Jic')X`*JIQ#(E@6Y3A+)L9KMj$#(Fc"H"2!ZV4Il8*!
!f9--$*BkT69i!F%)8i6Cr!mX3S,bT&dZ0V'+c)EJiQJb'iE)VAB'1pr5IBSkTc+
k#VbNXcDich4bjFMr"qhUFZ3IYBh[Di8NTr#MXllGGZlJJj+IAPAl!Rim!+-Qam2
ViI$SLUQibGqa6#YBL!6Sl@mEk'R%0@-6d[B3IBVL+'$)LMqkF#2i$LLZ0RdSb&!
A+-`'ApE!*MXf6GHL(!f#"edNCELqeeiLFY-BJ5c0Z"mk+F'8*cd5c-ljk!Yc"T2
MV[6RAFMTJ028Pk`5F1U+S'eR%CJDC"TdaJ2P#)SF-J$1ffIqMikj"RJTZpXLKRE
#3L+TCbY"Kk8FiN)8lr*0-URqPApRpBA[Vkj[pRHdB%@F'6NbPq$#d3!rNbC22-E
l@r33LI4cqr400UFUV!HL@-LS$F)UCI6!m+hhTeLJG@B3KYV#+YUSbSD`Va@#YQ$
DS3a`,#5'2M8GYpF*B"fh#ZlJh(NXl6RU@)hQ6*bif1)cG3Jjq%+XYqFi$aaNkH+
M!`!DIcbJVIY+#hdrf'#hVDp@YH[R(MANbh3&9Sm9,faJ2TmBU'41$+kS%DM5bj,
b"EIq,'6HYmEFAZX6l5((fUi3`X,j&45Ji2*8K%eBk),)`P!#@Nh'E-NYZ+k[##p
&5Dmj6X)"RZaA4U4kVJh%jLed'LGHBQpe0+&Jp-%"4,362V+1jQJ*TABQ1GcFp%R
4,dRdPia$pQY6Z*RdlbG2MAbLIF[QQ'`0MK0Q+`ZP0008M5PLp%63LATLdqVQ9SA
4LlMdq4V,+f0mB)r`(,)HR$+"[0f,m5A2&U-+GD9MYdrM&YQ"DSRHhMHk&)DRR`(
GE`r4pXeM9kCl,jCq!D5B(-Y`+#-dp@"f3a05FJ@YFVX2FeqIqQ4Pmf*CFQAmek9
C8&ZK%Z#Y!VPm&$!*-Ih+q(,%KPR8S6[9$4VipZER[jTRXS`R,makS+Z[9kVP)TH
ZP)&e(BPhGF"ZIF1JMaH[l4AhNdZ2*,e',4G#dlc`kVS8L*[AE13D6$*,m64)FV6
)'FMldH--p-'m#RAl9e(mlG3m1,BflZSje4a6f))X4V1[mmk2NH%JZQlq2T!!LB0
G!6f'E[SJ`-9ca5#'+K*&bTfCr'(MRZ(H-D%Ej)YGLi`SmcS"1SCYF'G[3ijKP0-
8)GDSd(T[V3hVfhVSl0bVLBR)N!"05VGlSJ"8eXPPF(V9Z%2dDc(-H-H4*Y,S`'a
64%PFRkG`"b-mM$He-VEl5'6*mr[QdS(R6k6r@,B`ZN`-L+@S!XmmQfQ*mN%N5qP
mBb6dCPA)!aRbNY-96YRUb%96KpQ!ik8AFar`'+B&+Bd1,kFdSLTBArXkJqI#B+&
3P0kcfc!bZc*CEl445B'[jCI8MAQ"NGVB,Z(N),H1Ll8U`-PH$4M[R'MdjZBCY-K
rcefIbUR*VimpYaCjl'Z0`+2rp(TXL4-5,b*r9ZE,dmLdha)l!!!N$ea8!iUMLm(
!&fDedceLPdeZLcGfA#fiA(eE%9+c8V-mTPJFpaNdPmJ-IGeEqSq%`F#f-k)5D23
$F-eDPG5)eBEL!LX&R19)GR1AJJ8qF,J3qE+MX`ifP#ZNAm@ZN!$"k+SAe-H4Baj
)EFHCXY'hHVKhQ%YkfM1+N!#YrVIAFPl$'5Ue5-aUb$HicLIYd(Rf6-0q%'c(8[`
4ACeHBCmpm"FfVrMJfAl`hKicaIh`Hh"Km+2"UfXE"Y-'UmA@JQU&j-ICrX1DEZq
kGf3)Ip-D5[@aY6aCe9Yrj"J3Ahrq*8([Vk@kqN&%A4U[YfbKNRN9N!!@0eAGiS6
6Q1&[rLVH"J%**#SiY19jFPH`C15iE1*'hQAHD2[DCM-+ZHB,9QhcZX'aBpFVNL3
TD!q[A`NRMrU-j&PAK4HapLVdD12)&SAVThkY*%1125VKh+(Tmp1$0TY$Ghi*1R#
b9UIB0")Uq4LQKmG!5'6p*3m8U4HYESbJ,er*JXhH(UjIT"%d660SF5rkH6"-,H*
-KcMU8M,$e&BYL8JqGDQl,dLV[G33d8BMV,-q@8a#T4B[PQX"h8pc!-m%KL2$#-U
'l#qG)pp[#DhfGCJDGBaD5L8Z'P05%cKe!DIeG`CT%6-jpZ&9kme9Md+P@R)lb9H
9`,)8V&CL@V$CBd3IcPmrLBUM8e)MkjH2kR-"1["*#5l,#95%@@[Z&91TP&5H[X2
"N!#be#je6G0p6NYUqG[dK(6Jd-KHX5-$H+1ClCfCie+*j'cLcE*@Zhhm'YL#Z"i
hIIiTLZQ$e`r5%S0lSBS!&pql5`UBq59"$!ei6eXD(,JCNjVAJJG'JEREmM*ZVYS
RYdLb9d&dN!!22qeGA5A&r0BDQ@(2rZN$"GY[NBG03d!LMiX'VRX[N5[pa%!RIN-
c4hKbd#mfTKR2JqV$eP(%2MXUe+U0NChj5B5e@3dC$i*'bJ)q[`fHrBJHqbl`S'f
PijhBM"V2%(#82'[Ci1Bqq02l!3@RSNP2)8dqF"r'C0(H@YBEfZkk)Ml9q*i)#Y%
KBCicU3bFP*06'X)4AM@MlAXB$U!C6[BS,%JV3NAGeAeAafD[@k8I`rYi0$`Ebce
"3!V`%-b'E89Q`ReEQaaGjNH4RX)IFX)2H6("UJh#$q8IEE`&demM0'G%hkA`QH6
YqAQ""JTSB1$Y-NiI*1(HA3`be9jR@BS1+K,MiXmKCQbe8)a5[)&jQTICB#a@BQV
BV#X@Ql8Hca)aBqRS'kIN9Q1bkiFr3%U)4'RaKT%r(Z4(D090!c%)XQpcLI$P3dQ
Z-G8[qGiN5k[%%(l##i9BB5AYZiV%T4$*b"NDj,Jh8U)I$!*`(,NZ)L58ZmKZ%Yk
L6bGdjUDMpb5'[-jlmRMJr$aD!VhF#S@#%FU2Q1YF3rj5IjAL9#lSB5(d5irZ@5c
R!NJK)aSSN!$db5B9f-p$h+TQL$4F"HRZ4LcmXeA#R$GUi5T('615&`Ah+YE6mKp
TK2XpZD8EY5A"E$&8ql92)hCS+d#N-a$rdV8!AK,Qp!iI$UJ!Bha&c&Za"b`jhT4
$)BGFiA+Jl(f"!0LHd8Y9E@'"G1fl"#3h+HM21f9I!B+b-hqbaL3fIa,[X$8NFb4
#A3SBBj(Y-D[cF2$c`3F'Y8`-Ub66S0cED,5rLi@!pL)e&LdpM6+Db*&UR$'l06$
VPrB#dk#6hU@*5H"DF!KIdU*#!9lrHA1a'0a&cp+QF8XN6+-A#U36T"dN[1e`[bA
&LYe6#6"`6B(,J`IHJlGm8MALBbJb1)j0fIJ9'BE'-HcBS+1C@A`qYV3Db38hr[i
qT4I'5E(9rV%V0Z2Ai+-5CkTpi@KEjSfRVM3&e0HML15RfBT66'[E@hCB@Up80HL
3!*jZLZF-D*'e0%Xar$#NY@("Fr&9a%9JJkrTeEjFp*cNJimJe`!)hd&eaJahBa*
+Sm"Y,06(@55e(a2HQFB8ldG1p81)ab*Kac06MN[m`2pSUpYchbP,0,UH@`TLX&S
PGKeSpP%kZ6,r-p1Q,j&BpDFQD"j%*G)p`N5ikahMKGqA-`M1Gf1faV38@1'#4VH
k5*3"h-9SAEl`4JlhK$&(r%UI%D(KY`CJeKdLcqU81lJ19CH1bk@DIcJ6lfC2D'r
mG`9iK!rm9jfe-Y-C&rMQbm5MKCJcF214S+Cj&GV*1I'1$9T'+Q%U`P%,CP+SX0*
IKSMkcZ-$f!Aa5(6jET4C()Y1SfjmI1qcBV!2m[83lN[J'QdllSXXL,Pqm#Idec6
mbY0q&fmU9U5QXb3X(3mlf[JqhKXKPDbc4dTK+,rEl3i@ap1Z'rXDTY(Nh[iUmX5
"0DcQ5k5LXm%60K8#M8am0Ulj[L[BEEq%'"('p8UNG!clAa1bdj6!20VQ2Yh%q`i
q421+N8UZpdQH+%IH3Qr&%phJ!M3Uq!LGqhqRKlQReJ5EM"P&jiB+3BIJ3i`P3iq
2b*lYjbNbXNVHhd1!PQ#+!ML&JleDVb4XiTRH3lkTKb-KDIlJ+2#Jb[-1#%99#mj
UqEEe)ZXZ6Pkp-lDGXYCFiaE5cY2Cd9,FikKEB8P*eUNlTZ$ajU@h+!U"VSK25[!
Hr@4d,V3IUqipBJI2&!&TAf$hXjS2[C%PAH("R$m#IdTj2I@H[MZC0FHJQTpe!%(
$-HdZhrdBN9`kp&l8aeMY00#ke"kI$Q`,Jjk8C+1I+r0Jh15i[mNHVRCjS[$%*'D
J++je8b)j'XL58+5b8p-Q$k#-f1M[b$I,J)fePEd6BF-i,`X[G2c6G(5)"RAY[B&
GM@r'a!!,T"VmrepUX(-XCr9YhGKr'*F8Ql%+JFH0,K%5,B'(kRl)1Y8)'m*p3N6
k(3d!(hLmJSba"#`(fLR-CPk*HGT8GLE8YhiTklqP@f)"ML)pEf((PFbM(+C%#lZ
%m'*h1,eYVma0*T9$DarILrl6mhlLV+J,@i3Fe'-EkGVJU@GLfXjUZ-illKD9b8X
X4GCdS!c+j+3Y`DKI*GJYjh4&p`GMAh`GZLNr-L0eYSLemk@9[kY`*EhUqK(Ap([
,G#f([q%dUBID3llP2P@m[V'jih,h)lSh1b2V8+IXVVlh@'*Q3R*+AZiFP6h2NKJ
-I[#1!h,rLk+)&brUN!!X"5A$IIN-JV5ATpCBRHEjNEIa"FpAJC!!5Q0'9-68THV
Xd6G)-m%LN5ijSi2`epB*Zp-HBKD!4p9eK1`X$1CKrZjT0#VGQmfBqf1+a2"cQ++
j9eS+THXKBlT0X2JYD%-$EPXkG0V'ZI)5HH'8r-YaX+N+!(qQ-K2[KM#(18ElF#F
e'YKKE[R'dIDXeR@Mbpa`5fr@0E2qf3(FCJ!0++QBUF8%q%YTpVlXN!"QTX@jjdk
V9@%3M@%TK4d+[MTT$F"R%63G)f`+[brp&E4a,YB,94Hr"#Hp-VEkTIdRSfc80jr
2XXP)F#1T'E&iqeB"QhThGLr48%i2(hrP4XBrc5eRAr%b$6e%q0bMLGC4"h!0`XL
TYVEAVDd%p'$YC``qL*i)f6"eLCUj`cR'B`ALKe6jbAS&C9+,"@)J,NSN*bJP%0j
r*@-5ES"MK&L62$9IF8aS*)"(B"UY2ccRlQrRAaU8pRBp&jB[Sm20Cc!GXfk#&(,
Al"UUQCjq1J1Q2C8T3LJja-K+piR`#XarLJkF%ei#Ae&Z'[jP2RdYqd*5eUiSZpi
f&ekJabi4'1m0hL(I`)h%D[#V%'BM-PBl6I4hRfiKrCrA'2!4l%5)8a*@iJGFa[+
f@QYG("IV6R(&pN5cVA4DbNZe*!0,6(UNqHKCTB$KQM[ZF'QiZP[ApPfd5SFIRc3
),!8j-CACQC(@ZU"2d[YrG,Y1#bHKClCqFB8,I0m!i209KQNpCrKF%D9LdemeZ+S
,bq2DKFV++DTIqVejqJMDZ,+X&#$eSf0C$![M`CYie$hHe,5aBL,bb[Cd2QEDG$*
J22SK%Mh'-%"pQ`-#UhT0Mi[-,2k,cI)%VG!&P('SKpPQ0q`DPE1U8XRZ$)9l4,k
!3[[r8&IDpbK2MY``ETfC-eikAY)pRp)MV1#X'9k8G6PkCKQQP2-KURCQ%J4`%Lp
4lbqMMSTCmAhq#c,CaHra3h"eX)0`j(kmPGh4q6HLKC-aF2*Mm9mr,i`FS'mpYPd
J8kbZ+bX4KK,RR'[&DUJ)eiPrhkd%'XZ[PrN5q+!Ym0lLiG'I0Af'YU'%V6mISmI
G'5pF1F#I!a0fdCeT@4DQ&1Z4mPQ@2P5ASVek$ZS4UjJ,bJH(Gbcb#FTPcLGp5fc
-5Qd%U94N2**PTX!bHVPr0,jI!%!VlI"S&"2dG$DScMmG1PJLj2FFd'V+Lm*J[YF
J`S@%@+dAC-BREm+eMH3--HiqCq#")rA*!N64*rV$L[5hL)8bHG69B@R51'(k4PV
+SLChH9Ah+pLh`8L$Dp$(YdLNqlB(Ul#k$4P990l#-2NamV3UAljr%%Dj18'(ARf
@ZB4R8McRYk59@2Ph[@mdYTM9e8UU0N-0iMpZiJ8)L4Fp)TJ1LQ,p`e*i4JCM5[k
jcS5KiCSIMD4fN!$TNd615[diMd*c4I[D*5(JL!bDmkV,Vp3Y!+[NlT5@QP5D3qE
K$MNUbi1mdi1Q,qNZLRb5TCHikmX"JD8"M9mGrG8BJUqf$A1mmLd4m4U,p8H-Ef0
bjZGKCbABB)V,kUXF+lECrpS+cqM+q8*Ki[PLG,"!PFeq[Lm"T4r(B+fQA"ZC[V+
MA8PrjII*&$bN'2&[1FCB-jD3!1*XhXFV2L5D(0Yd"Lb2LLT&FVfT%lJJ1NSPRI$
*$&ckqJ$9(L-HHbpqP)E-1*kUEh-iB$K+eX'Qk30[@ZpbVQf(L3j83jiHiQ)'ZBr
(LFe1@3PQD*q1+B4kDhh)#2!i'0dHbFGePRHGTUQVD1,!EC939*3HdHq1$U8#5-1
X$G[S+JAHme0a!fBibcQ#1DNlTMcJ(#Jk'VNl9c94mcQ4*c%Sh3DJ-FB*a#1%Pa#
J"ZlHmbGCM2I(NKel$Z-#PY0l&TQkj6Q9&8VpZ9Z2mpXCdL@qk&AfDFGIJj@+0k-
!T`F80!A#Ah0@TGYKYSE,-Mi@YdZmcL*c[!Bq"9,0Amh5SfJb*EQ$U1KEC!pGe!,
ZUrVk5QTclS'QcITQZ5V*+h[BiaDrKXkPpI-FFVbHXmbIMY!0QB0i+'JANAX#lPT
[mUp39m6`"k,-#fTrc%GcCYN(LCdPY2"H5MSTIlP4'&VSJrlGd"+SlGVZG2@liA4
"[ANG4-,LRafc[RpXAE2j&V,m3j!!1'*YKbZ)k8PQJD)mZJV6@0$T49U2aFL+1NR
bZ,d&,h#Z,Br2eS,0JcJqi)F#Qdi0jk-T1Rj"UQ)rV`"9@@2-NrRkkm+1,e5r8qa
cB%V0,9+")"@93kSC#`83+[LfD@3q+M$2E@p@RQl!$cJVcS3l[4dR+aDrU,h#[P$
!F5@[X3Uk(BplK(PB6p$E!r%F!*MSrPG#hBAa`KQ&A8&p-GL%Sml@ZH%H-TVLLpL
`eB,aE2N9+-##NpPc0INkpfj2mS+iG-G3N4[klT!!)*H'6epkK!f4GS'4SYk*V8f
d&Z66[TfedD1Rh(L&p+XDdAq#Lf0qD(PfrS8pSiLZ8&G%eQ45Sr*lqLrE6YIEI#Q
D9a6P`M`G1NTl)p)r'JqMjl0mQ*6HQ0D0pCdGmVPiD28ZiiX[X'@e99hGk"4"KbS
-&ahEA#T0%PV3Cj0kE-K`$)0Mm)!&ClFajE1dlZZf+CK*@N3NK'lQpE)4h*YPp9G
**DaD["Y&Z9(TV'3jF89C)Q@YiBZ9rq51[5AhM(i"6d-8q9)+SUYRXXaS@%8,VfJ
1bM,4b`Iar)#mm0m2%9+FTY$hQ!#'L%NeJjd2AX9A3eYBIQpTdKimH9r0U$T,-6l
)KifX#1"eHeTj$e`EV-ci"q"IkHS[+%k81(*cFlp%a-&UAp#PAXLr#rE1(GdGqjI
!eqJDKdU3!!'jMBPX2##"*+,jij[A6J@qU4[IK,,,fK%`b"b`,a[Yl1BCKlZrX$@
1TUlm"q$LeERV,eM3)('%D0+ZE8R2HYeJ$9k0Bi2'rSiI*I4a,QEaSjH@Ii$jBKj
+lA8NJJqe8LJRQ'C,RQMF1#YKh(8JFTaNU1m$r`Cd!kqBU!5VmeRNiS3#PB*@Kj!
!pmQ0SdH)-&B"K,J$leEd8k$c'TQrR)!cHXLVJ&XP$M(8fU*f&hV!dMfKR)UT)BY
!#'T!SZE3bp0B'ld$85J5(kbp&fq2j6'h64iG3k%eAC%!'qV+Tp+pR`I@,41hCQD
PG3!H&@Ab8U&r@M42$2+G"e(&6ViL[X'SH'P3c)laC#,#'eIS[PVHf(X&S5jX5HY
%!Mb)3CK#1'JVFMl-+CFr(MUCCJ(-#P%pERI&(YX-Vi"%HD&F+!GlF[@+a%Gr&9f
f5h8PN!!&dMhldKR@PCbhmc$b@Zp+F)F!YemPSc`GZkf!2'c@EC&JA!ldHMkYqdT
Ca2B@M2lT`&k&pX8TI95Tf'LUj8l)jYehl0QF$'5*pN2XK@pQRmd99QE,4!M)br$
a$jX&3aM))XJK*!pPfdNRIc6r-!fC&k*1!4K@*5rMRBqe#*,JSX92%`fj,0HN%p4
APkFK@Pe6[H3U3Ci"m#Rd1QY6Ubj@$r+[eY2N0dje,PfrCUqGi-KiDcDaCS2Y-'E
X8G01Th[$`bIHNGT9qMX[DaL9'+TJ6@Tkj+8M%%h$VLG)"Rlb3lIPiIQ&N!#@$j,
YGkNSfUN$#-1BB(c+)-8K2#9"ipCDPR%HJch$qB!4mp9&A3PVp[046Jal9)MF,45
Ah+2)Y*XF!+1%UXYA3XH5`J%e#cJ##$!X-!B31AUmP$0&h,*4C&a)IjXLll4Z-`E
IZXKHp20!qSr+"Y)F@GlGZ@Q0QrHcd5JETLJeFX)RZ6pKm&fl&lHIJM#8KN5aqe"
h95HJ+`EYSkdVH%cChB,-"J`"bEkT2(X,)YicA4,C#1L'RMJ,I@'$T($SrppB`N"
#2$If3+!8mY'p@"4kM+*#0F,3Q[&(jj!!ReQ5b(f[FC-!$UTL0Q5a'*Um5Z&DF-V
SXU!KE(eFD3TF8S8'#iYTmEQ$l'8'MJQkUpJ$L69K5cDdE@eXBhrY0r)i`FC3'4(
1`4bC2HEGhkF,i5ibldGrfi$&[e*mmLrC[RTJ,!0jc9KDX4kIE`ipbleB"*GXVRG
T59Sb'1NHRdeIAPm`p+9CXY4Z$B8i@2+GZ%(b09CZ*J4X)CLK3K8lD4EF"J95j!8
G#S)Pip"1Q1GmLEqS@2-`K(BJh!(&3Fkr$bE!5YTJehDS@'P#3QNIU*kS5-B2jbC
jGNH941[-hYp+G8B"%d)NF)6q#faVaE2iD823GIT6-64mLA`")2qqf'Rc'HC*'NH
mLD3HeVdXpUZ,X,#AdZJ@%b32&IE5bjdIfULVmJICfRa%l0DT@BF4L!*hTM$qHBb
AC6Gm-2`U+j3(MUbBI9dq)`CRN6N2Y@bDiebELRaIHHJJe[Y`GG",'p!GKjJdNr$
l1*(AXA8--2G!6-!(JIMQjDiLh'SAbErYf!"C)D-j!VPQBE&hM0@XCQ(IY-Bcd'9
2i@*j")$1`+0mib&qiA*BQpA6[j3KNDhjrrX,$+h3&J1Nj4Pp9"F4+"G!DA,NLhf
M$fF4m#c$2dV%XY8h99Y%G0ZN&hKC-U3dMK#UJ)f+AaZr+&6qX6C2eqPT2845(XG
r5U`fMGB*D$FAD'B2m1dr!G@&V`ED&a5iff8V(`B15cLZU*&AUCd6G*&"k2qp`LG
GLf6PiI[[9EYriQ-q`D5AEM5-[jeX)mI6IhP(*qSb4bUA9a,@%BHrdeTQ)&,U"H%
&[adm@GpXL2AE6'a56TaDa63RBQALHT!!U!+EEE-K[$PV+I)XIV)4J-#fDS'[bM,
BReHcb#c!DDFT#HbR40ZGL#De8@bj@0lTSJBaI`YJJf`&H[driNJVa3`Ic&B"&Fb
l)*!!!G9eFE#9&r@'j+X5pMR6)+Qq[a$`8I9)5pN'J+%Zk*!!kh'*ShKF!ALaBSC
mcN%ajrd-plqM-b!EA(XE'qRjDeZGaaZ`A)5k$LiHI`hV,QF65ip'*NDP1AR'G"G
[f%fRakK)dd+6-`('q[3jlY(2*f&jAE4BMBH4iFkURb!&q9e5ek&f+9kNcZYKldS
Q0G'TkLD#A+ejTpH*l-l("bBeH#TqPbLZ"ZhQ#mqRY"1qThhMUk0k[!Xkl2(hdP&
9U*@+ImIc29m""pA[&02j+,lQ9m&8HC8B(MNT$i&J#'0!`fq4pA&)hi&+PMdSjpa
j+a*V@E+ZQr8dGaa`kZh",6eLZ"&8X4PH`"DIF)CYkmMPkUA!$LbXAdNJ@Ui9ppG
i5lX+(bF6T*%T'42MDCRc&`i0B0$Rch#0HTP!iLiiQr2lc2k`L1r8rFkAXfaTFZB
pL*)hc)9TMh8r914JiI8bp3qIURr5@6EI38a"d91b'Lph5BX0*h33#lF@ESMHYTV
+*k5Th,'r4[RG)mSMRp4kNUm8Bm*6arUc$9QXp'1MN!"9B#TmLfTe6jCh)1!8q`"
f,`CbQ%LRKM"HEbe&)!A#NV`9qF#-c3"JJAcj'cX)@l&pmR61j*YPl+dDM(L(h"f
%eVb@,N9ADLN'(k23Z0m1PV+fM+Bc(SVk"JA6U0mBjQqD9aHVd9CX6-p81fhB0iV
bKS#$5`G1A-%5SfNZam2DF,+4KZI[EeS)NpiBM3H1(mc9GUF,%BdVh,I3mJXfKJ1
0i&lSP)Qj4BL(4MDmqUQK+$Jm2q'*)3HDSZ)VEfNlQA["JQqNFhEPJApTaE3!%LL
RP8RUYN+C6M1(dRJR-A%4RYKkc*%#(B#2!T@CS%[+SEKjA4G'U1i@ZYm+C0PBZB$
9+0a9'ARCha9A62+I,*91Mqf+lJY2kE#'5EeFT5(Qf`l9Vr5DA,!h`lDa-$1Ra9,
IQBBP-Ek[-,1@E)1r0%4f*@0$)*9KJV`N&Vi(Cj+-6(eV!SGjKlJfEI5U6&l4JbL
IH,LXN!"fdSIk,!X'#j4#NB95-JqZUDkRCmX2Q(A),PP,FLG((DNIpSI8'"$*P$l
b5A[VSrk0BMpc83G!k@mbZ#2[N!!kU%[%+2))-1fbjrrmT9ImBB`GVN-6b-9VC"F
@h4d8`P*(qPij#Aaj&-6FllH8D2IZDc#GI[X!j*kL5JMlEfIINhE6jIA(,'Xfl-,
N!lq!1TV8kMEU0G)Db$!`dY,)b$!QdPmLdXM)-1fSYA4,T@[@0*pf!QGLCf+b[d'
V&a[ci+pV0J'E4+V4SG(aZ29@mclN)FaIUi+*LHieTmc!LBmS9(l"FAI2VbY#JXA
GaTc)&(FK3A83TX)+lIJpm+SqQQh`*+`#1VBlf4#)dh*fceBU3d#kbYK)+MeAb+R
"A'bEG15qRCdB#lmcjhT8&N'4KNkQrYMeBKQ"cNIf%&djCKdpKGiAq4e-`I00031
ej&iNQ24@*$$EQb#L16J%1b`jmM`T`-d0%lkq`cA0#36#%ePAE9T[a1Da#jZQ%k&
J`eIL)"ad,81C)4ECM`9+jm'mSReph8+'dKcMfjq229H'GN%0#%%%r2KGF%9)"m)
5ab+"[8r0jlL$8mI`Z)&f%#eUHjGpK*HhI(6S%fai@jIG)@mMP#V&&QjR)"L#`'(
9h'k1eS-pPNkN55b"1'@UE0BVa+q&(AFJU,Z-[HTZDE+i,Rjl!0lhHhFcT%DG9Y@
Yfj'ap@*r3ce3!Q@PA9Dpq'S9YpjP!mkN28Ji,SN'#jq8YLplfPM&!DGQa5FCJ&)
%"dl89$H!'jhT3ajK*!&8GKS0m8))[M$MRfi[NX$i)fZ9A*ZFTNV`AJeV"+334k)
a,cMJV*ZLE8,%'E5XLjr$Y8Q'QipfrC4eD8,6-%XjQSSYhX"fFPZ&-k)k-2rhR6Q
I0-pqMa3LJkCJ%,3X-b6#A%JF&+i*`SZpq0$#Ll)c@RIfeI,#p5kq#M@Y'Eap4,-
,FCZVafX9!ehGG)Xl%*3f%#4CI)X1C)cqb2lP2&RZQ"ia30[AEPGZ8+PrD'hiCUZ
mbHpkkBkIJf*Z4c2@p"4B9%3jV$'X-cj'EI''Dcpf!16E!iR4aYK@CqT30!$)3T[
mqp3bka,-D$#lR8R,'Nlf3I,TRpST)1DA945q$-fV!mhN%l@4fD5AQcB,h0+4E-i
mcQ3FliU1%G4ebB'&*8d-jbd)91df(2,A"#ri@,da9Ej[N80BI*rF9ib93YR0EcN
fVhChkVE)!lCJfT-M-ZDHQe$RfZH"K31GQErd09lq@epK-0@BRI3d`TAGF0ePaV1
'L,G8h1L1QGS@C@4br@0Bk)peb6G"RIq(9dY"fYSc!QTCPe4hNAbCa!haiCVQmf4
AChLfp(8e1$@9[FrB`P6iP)4F+*Z&FL'$4UCa&-dA2L448'KGhM@"iR-e@&qd+8k
L&EP@*X3!dVYV%kCK8U,f#CFZ1A,j+Xc-6e`C*b"TDj!!V@VAlp0Z@K6!NM0l!f-
+'NIS*Aq`L-P)I''C'aNRdJ`B'('A!N[+%%hfQ-X2Cac,mYY(YFU0MUaRD[X5"@L
4B)hV$DP,%KI(dYdc)mFm9D"VNI@3!)2dRbKjpM"m$R`[)(qVL`)8Fa0JjFPD`dD
M"+HNipUhYHJMPq(mY!JEl`,1k"@EUbmQE5mj%8X!@Dq`e[)F)0qT@$`[mbL'-43
Tb6k0a`rrLEaS[0l5aTD"'U6EBEP6-aNr$GlYA$h3Qa*af0*m!$LJ-TAd!V5!$Qm
i,0A286169F#[H+ZMXf@6DK8mKPjf-NJT&!)"q#0C'P6@6fD2'!ET2IVZ$p(&b&0
h!cR%"LT',(cYhR[$Lj%0T`D%lkZ*(IZTmhf%9L%-cpqQlC+-FPXAEE`Z50j25L2
G++Jrlfde&''k`cH0ZEH+h1L*Ccr'Ui0Tp-GmP#NimdM)"QMZkM)*N4rTSTj[laC
R1D*hj&pjHG4qHbp69`TqaXll3M$(jd[38MALNXk#-*SE"5[UFJJP$p`CGI26FP$
Am*fh+5Amd`*+L`iih"Ap)iL[2QG*m4&E2p*)ql(*A%S20lkGDR,jdDT2*Iklcc$
`Z-&V6b$TKe(B$ECCiS[GLH[FQ1VkMb)XUIBh6K%k$`!NajL8MTDV6"!`'Q$'#*S
*JQVGX+0P%f*ULR,(3GIch6XEH#F'E#CK3bqqJ8@#AUciLJ,$jf+1Ba-(E(JElTe
X1laICdkHNF9GRYr5Ce!b9H*)YF-(pMcD0JKi%q@MZDhdcEVQX$PY5DK5Ik&-kLE
EDZqS(V&K&XVe9Q'2m3M+@#5LS%-BPJ-QK%m2@q`(`B&8BK20Bl%f0[8A4@@4Ahr
cf@4'@AH!"Z$dVXJ[!b)j)`[DjmQ(Y8-lGKpb5Q4!ibE0cHC)`Uri4N&1Hkk9Q4K
a,[XY3diR&)[B2H[B)Gl'8L"0QV$&6`kk9BU0%5ZNmJd$f88MqDRdRU[l"0Bci'p
d5(*ZbcIXHS"&a$-fBFdGVRiRZ-02[bRI%rLe%Y8$8,a[ZKl`T[LNhi9+p-I5j9T
rGXqemY(pJ'l,q#LPGF0K+k!kK!PeR6A(e'6[pQ-+dA*+0-hejU)"c3a,J!f%kML
LUSra"!XKpF8`T(SLIiP2h+(X@ZMZl3CCm*H%c2i0kLeSIqVJbHD,PfUH9q)@'mN
cHqIiT8LI629QD6SD!,G5d`qQm3X6riCCmAQRd8PqS42h,)2V'(3!#b%E#I!)1E"
4q1"c)d,(0*DaPPHiJKbBBdFb9R3me!YP+El3kQp586VG3STi(3jbmq"DTG$"*J%
L)[J"dQE&lImXS*e9(jRfkeI1-cV(NUJC$N9+6IeGK05&6EjHfGZ4)$U8Klk%mNB
#FPfKSA`'`k83E)8LY$HP!jlTf3r'Acf5E*6DNNTF!f8P'Q+0P9[rGdI0)&Mrb1B
V"a"&'d@X(-1FI[%e4"BNM"rL(0#bIZmNXAhSeNF8UBE8,BA!Z'H6M2,l3-JkI2j
q1$[N,Rea$"rcMH-0A9V(iG9AN82C"lFIShiI(KY"mA+Le2+KMp+#r'Lf90$e0dq
[$&GF+alK*c'"M)R5"L@+c0aF#@1lQ-9*KJRjF!4Aj6X@,Tp119d+IQ@5[(KDdpR
S,fc"`5#LjmB50"Q!Sk)S`LlajYX+rYIXN4ZNCZ#QhXrrTe-4i44$DCZYE22MAGU
NA5ldGhr1!RYEIZ`[e&G'QM8)qKLi"+pe+,S'HdZ,4-TcVZYIQ-,jAJJ&DXKa1!1
r0MY2N!#fGCU&K)I[d3R4aXiYRU8SSqE-+@jD[2N$"YYYkV809m%(i#2aCe!!CeN
NcQLdE*`YCml93%,Uk!32)I8jIS8bqrdlh1B@eEi+[GrGEY!@9,qN(XaJGHhc$N[
i3NEVBKHSA&!CU,Yq(`A&F(Z0iSpE3`mBLiR80T!!D8P`BjXkiQ9[J0V*Hq*TjXb
9SEb$5XRf+2LhE1#k6-q5eB%%e"JaUS[+@E+B-JS2(!"fYeC6*'L1iKM)S`CJTaD
"JC*)p!"8A2M""6`Z$0#c&iTJ5Aa[HBX9Lq*!!Q9eL@&L[`E1mL&lik+&Qj-Mj3c
J1LHbT%eE5aD[U52%jDlC`'qqX8`l&8TK`'bV0bVjli)PF8rVDJlD+!BmfmQH(8P
q'G-,e+PVdqDmU"Da&X"MLc*ALXjhkS)(A9QY2QDD+h&[5MU9`*Z!eN#KXQa)XKN
BfDj66U&aTb2e1lVQ9Y"b3`Tr5ZGCcqF1)3plplCZa[Al)cjpL1ZThS4Hp"eQI1r
($QN@M31YIQXFVK%RNjPlEbZ*$q!'Q3G3V@rf"f(Fl21j-Dhd'3qq6D*a3&Q,40A
,6k%SLU+#*%Mc"r0bDXkL19V,(pNf4GaDUdf02*ljm8)XiN%eUUPA)afclCN'[GB
r"V#[0-hJiP8,N!#ZSkEh[r9@JSP3bePCrfI'!-#fi#q4+ZT"Rj!!#e&mS3aTFN!
I-e,pFLi'pj39K36hM)ZqLEL%4RJ&`E-p['*L1NV"&1UNdrJpU&ceYeD4XKjpIiH
G+(#dmiN21Bp4p`0#Z+MLF#F#`JD)X56#F5[%l%#fCcT4NS*BNYl#&&G1*Pbc!8!
1JcURd9[SE&+c,$"@2he5,6q4KC%!8f%qh6#a&LFf`,0CJTmHfc&6$qF2(NH4RDm
dIGRfS0`X)#9iF&)&#RA&[!pKDd$L@)-j-[hX&CifZqd&CI(GG-+((,EF2A[j4d!
DdFNk@lI"rCfUc#N`3ZU5DkZ-FkM-*3bb9ii)0$m6HZh-Z2K!,&8jP80,C25'BM6
iUGXK@#bE++++Lf`K4d0kS%*BYJ4$@X#!ZRJ@1XcVYJB9ND,"3hRT3PLV5e"%pc3
@q)RBcRqNc(!Nb2&IhrTiGdT#C!`N%Z6G3#AlYkl6jpa*b`9KRU344-`B%lRp(aD
pNiYlm((cej&)dHQRZhNp4Y(*`(12bb2&GGJQ-6$12'CkaF-G)iX3,(HZ`@b0AM[
ZAA#mLNBLbq-Rk#P-l,Y2UF-G6@)2,i@!5VE[M&6M#LVIe,F)B)0T6`G'Yk3IJF%
`RT%5*iT&mH1(Qra&4Rj9EE58J@kBf-T1NIebc-@%Lj3MYPSrFUJCkqqBGTZl-9h
ZLJaXRK-UeEjpT"5cr8+ZIV+@(p$),VVCFPC)+AVQEA)JVL#ZY5B#%GmBf@$baY-
H`iQelIkSrehFD0!ZZ6())QmH+[0HBEcaU2Sf-)i1BVG2dQP*6!@rZ)2QXeI,HX'
Xb1c[e#JRIScMaFM#aDljaCj6k"R&)R2YDBI#9NDa5CEa8,M5GriMKm4GPIK43GZ
J$U-pG9NXi8hGX%LVTDh4FD+A[)[*iQQ'&S&akUD+[Vf5PHBV`pZGH)hE(B#8T&h
ZJhM@2V1INHj66rUc+G#%K`42`MrSG%PKl(YNJ40VU(ia&%0@MH,S#pS8P[NMkC6
JG,qj8$ip*RCkAR,D(&`'ZP@qfYlR'D!-ljrKCdJI16#eE6%J[0*LDdqD-,C2XN+
Vlm8K2'22XA1LYAeeUBCNSI6iiEqa4)R8"ahK+h6H033bT-("h([X%rX$LqT1$!0
+l+jE#lbZkbA)T@i9*Z",L#B!DA`C'BPj9p1kIhD)cDK5D'BSXlRre95r#3+1SSF
CPK+(T[!4C0Pj2PBT$)MNE+"Ah3X58fS"156$eaU'*Vai*iQATf0RVFrS`-9I(Y2
rqLVJM$mfJ-Lh`+EX5LiZ+0VLVp4ldc3p`SaDUC-(K4+a&9fV-P-+YP30ea,66[N
$EEH'SmJTehjreRJq-ikal8Ei%ZffS#YVl&3f5B&TAYDHJlG'P0JkC6ZHpq&l08A
kdPXJ"KDL+f$P8+X60F&3l6$jj*Ud8H6l@8&3`d@%He4)#%"0&0QmkhlTB*API!*
Y!-dJZq3241reDJ*i2be!2ZfccDi*'L-IF8qh1jhB4YG9qYU5cXArrejJm(JR`S'
fmk1J`4I%L0X`2%1UaRYj"P-)pN00CVXRRZY2iSZ%[!KPV$iD0d)8GjYV1c8Z1eF
292dUpJ&A-6&TrL882[X!3K@jhK&mcM)AIkjU[di#Bkk$K1$B'2ceLiKfH)+Yj%%
A#ReJm6E`XcdB6+G(iX3$LqPSUS"%pFYmi4PmX[mV(3RrN4fRHjIfiU36k3PPD-8
+(+*(2VTq0LQ3!)Yd03-!kGR12Xh1Jj!!G$P5KPZN$R$NfA`CZ0XpfGR$+,'e5B,
+Hbjifbj(6M2l%`XJXLLl@Xb!S04Bde!G#Irbh[UP%&Ll%E4+Dk#CE9A1GiXSSJe
rlq4A&Z[Yf$+,i1XZf)5*IB%P*'`fL[0CL%T-D(l5&[G,MiZN5qV%dhX6F*IeIR#
Rpi`@m#(EL6K8%1Bi'cl%%HNfda+XBm@p6cMY0Xda%*`,Ra$b5IiDpplNQKG-m+6
CqpLA85'faUpQD4lipjrM`,Z*5`Gq*X(bS94*d)#`rm3B`(Z*L2F2'4C-PpTV,)l
P#EN9h2pMMCZQN8Pj@9ZX%AmTPf9eMmC[Bd'0pLp[+PjVG4Q-pahCBE)#)$iQM`N
GbF5!VV,iQ54Cq'E6MSBMr@6$(BL3!-(eR@K&0AjmDhRrpb%SL'VB)aDr%K0&Z-!
F@+Ff(6hM0VPr@-VqF3Y1[KQQIESM'lml%6Lm&e@(YS(Fp*r(aDPVHC0(aIU-fEU
J+&P&j58lmKY$3m2p[D28HH0[4TReZceGcMY-&PAhrVh1TF+eMi5JF1a58([GJSN
Si+cB$1AYY-fm3X6Eaa`6aRhh1*J(J'3%"RLha+#f$hQV[G&Sm(Np`8T6paJ,hfV
IDR"K,jdrdpe0jm*-2pMbE"Ji6Gq8c,e)Ck1HTqE`,)fHJi$A[a,05XQM9!FiI6F
SRE*-mGUe"#%MN!!3UJTb,KqHciMTdJ)EA&A$lSN4q%-P,Z5pS'`YQIT`HVAfC+c
#CUUJb0'"PUEjhiPcNS'-'p6XYU'1X@SJ+FmdH["FajN!TYB@(`NEZ[B0jU4qLiR
1*(hcADjAr,El!q"DjC38+Lb4C8Ml9M"la2JUmI!G`TKPM8MP(2NiDDP3RcrX)k$
)[U`$SjbfC4pVhXQbQAUHZ"GK`$aMGM(#-+hLqiRqrJ(r&16kmCMYTPJ+dRKV9R`
Iqm3kYmd+[[9Yr`cb6kB`VZdIC4M[r+5$'`3NXe`PkSrk*BmdK!D+-ZlrCHdT3Uh
qNXS6`#Ahk)QR`,d1-[Q@VNXY+mqG6l0C8%'H&1eRlRMr0$DG&,!E[8-2lKa[TQ4
JN!!11AIQLjY,9Tf0e@DHYj8CfQ%ViJIMh84VTBU$%Z[)JGCPm!iFa*qP,RDmC2e
1eI$G$8iJX$,,MP+EfdY4)AF+h%K94!S`[Y9GHh6BCJk4KV(d&'CDPb*P1ibPr8$
B-$T!1BViLm)IX8Y89SjDrik+@$NE3fe*d@HH1l[pGcfHAU*!6U#ri8,a9j2RBim
!'TRP"41F&qaEe3bahJkAFaURTkS()eeH!mTC,6&%L"2NbA-,k59if56cjA2p`S`
(bcJcaDJNINlmH,X5&'XcMk*PDppld*BRj@J"1Ab)rIBf"LZdIlJR-aVGqb3i,fM
"34#S$5"E&rTb6*ea'i"F4K!eM9(F+S+YE[#V&iaZ4$ccl(&!kKM0F-&-aKA,LNI
SdhSdN6m#*X,0a6!G@,C@'l'P,akiF[!)*%F'3S(l9BdYS$R@r8"drD,`qPkf4ID
(QL#J3LQdjKcF,!ebKGc"&H)YF44Q%6RS%leSjd6-M!RRcl&6B+`5#$QD[pIA0XX
LU%bQmGI%$NYmp@FjQ4JPRCGliT&m0NZVp-VSK)l*1pc2fR``R5c6CV5H!K(()GX
#ZX24&@H!*#5rl"Fm1IQZXXmQ+1)X1dCXS#`B4*3Ee'Rm1QM,#ejC+eV4Gj*5e9#
`RQB'"aYqZ#Sfe4pclb#H$lJj`92APPh$*`#J@f6h(9)EfkL)A5YCr-lr[*5b5Sk
FJ2`)@$Xe)'E&`d&Lp8*r@BZQ&*!!94h+mK#*)&$ebX30'icAFf%G)%)140Kk3EP
`r0Tqie#cfqeIPXQE$K*)UfHEI5N!q,4YSljb4'H5TNA20fPkHlm@Y4kYV'P[V"f
K+AS,mUM))(F,2c3YY)iJ#6-0EGX2IBYlNLSS[JE(dD2J%%l[#9R+#I(B19@)0aY
-B[q"fmPQeYY*6ZD(,N*`bp1TPkKPKE%ijR,*,)M$TcI5*(Pcj+PHB+a3Dr,4MLc
@#F%(+"ZRG[(i)r44M-Ym25M)mI[D-GD$Xj!!BcIpBDqq@8-)Pj&#p8YA0l*0l*-
9X6H*r[CM-1950JccD(VPM[Zm9h+hM6`XT,ciqp"1P9TK1q[%UFHLbUlcDbleiS5
Pm*(*pdJrYYPMVV$18#U,1LDZm%3&0NF5Aq(XC[ZVZKf0JKMlb'IIL+rHP6%(Qmq
L)"KHbDREVHCkR*I3B8#k,r0r1JRd0U,86jE(aMhYJAU3!-355c$C53KC-NejrPL
S8!HSf!!EAA@iQcme3M#AH@mBd1&2"*a@LC!!E(Hfd`D%[,B'9I26Z(Qi3BhJq"!
9cK,U6T+F`1+*q+F1TCdP(HAMrfMiPf1eP`1IrpimYrrfeKU@URjXTeG5DPBG!f*
qIIc9kJdh$m03`01l)Q)qS26V[PI2A`UITUpq)Ga$3,+24*(hd5PbYY9L99i`4ck
!Dbj5L@4FkKllE42j9L"5!)+VX@Ya,TCdV-fM"F0RGEah9BJBF-iRFSJjC3a5H#6
*S0@ZphTc-A&TCP&!lHfJ"elCfD[@'Cma!MRLJbLMX@lZ"r8A[QG[pSYLUHkc@ei
Ah%q'j!i'q(hhQQPicA%-4QDllJ+h43)2jqG@[H05h[+qZ8,44Fd%`EpR6Ie1KMZ
hqr[)#lL$pPc(!EJC#HIMA@iH5)K6FVapL!CRrKL3!0ABVbCCdVJ9'rLQGA62)AF
Q503@@FESchHML4+"jS`VL8q"[l*m@J9EfH-)lrp&iqBm(l6YrZDd-IrdDj&VK!P
qTXYHVLZmdrHKN!"VLVe08P#6!ZIc+dE#8J1mX'T8)+5r6jh68b9QSppT2'HeREd
j"6ikQ'-V`-$$8$3`AC[RY3'`Br+CiZGXZfch+rTA`"lLbH(+'c[I"I09314U&K&
,b,r!hH#Jejf@Z6$)LYN3VPH*aV%rr*mVVkH3!#0iq!IT0JY-I,3DRrA!Zf`!8Jm
l3l"0+&UdVG$eZh9-V8p$p#2P3f36fSV8#-@8c#N!*59lPKQ*K"Sf#F`09Mr+ZrG
`hQf6R"%43"R1RXZ3!$MA0MXTH20Smr[(@(,T$6EZ36$4I-X$VL0piG950YS+!RF
2F!&"X!((cFBq@iF1XSI(!0FR4aH"0TFlREcA"G0[ZTN6EHba(@6mEeq"bS42%8V
(L$%VfI))[[VIlX*4)#m"$hP*`'5,D8+CZ$*MLI5P2i18f**5*DN4)jB*m%f%&&j
R2EA*dYV$mD"Tmr'0[Kf$44AFLFc%(F9G#+HcZpIB,JQi5'8Np'!-R+*m"CVq`)k
j-86D1Ah90$@VVUj"qTNQ)2Lc0P$A'(ZSm+9*P%`2$cVPQi1%bJP2Dd),T1N'6rm
5GG[DAC-Q-b&A!1fre4HYd4i$dfQG2iP!f61-`TNX-#Z#0[5R%%f4DRF2+alQEZD
SDVSZ+fr9NRceHkZcC,TjH82MNiDN"pMP1pEZ'K$DYP[!Z&H@dj!!eHE*CAhJ01L
&-[SPd@,RF-ahM1pp,TlfrPT[0SNr)+H%b9dIDBADfl$NDD*I*h-klDeP6NcKGMV
KKmAU[ZCF[q9P+E580`TI64U5iHLUaXJd$q'5rKb%C[aRM'F4V+ccB`!(r2)p$li
BJM"lYBXcS1YjcKVli0dH1[c9-,,I#1$+VEMjj@rJT$cFZThJmA"'2FL)PXa,@+2
rM#XZBLbHl-rCNlI(A$G2+9UR64#HkUX"3)d[5A-bH`FRTf0qDmZl$EP&AhEFQ9#
"N6Ti2V8N#VB(Hh'%jXF'["UL0@"`L0Q6Km$*,4''l2jPKfA!!f%A5*[F`mN+R[k
5a)aT98Vh)*!!cMrFM3CJ*a(*fcD'SjmQrh+%del`jEdka2hV!Y9GEM'9VJrrJiq
")9(aR96D#$"L+p3Z&rdbU8GG&rCdYlM3)dXkkXrb9-IH2'SD4HrSjQARkIr4T*6
cT[`Z$F1N*(4D(4&[(8AecU3aHYLINM0qbL9CCQA4Mm'@XSS2AjGIMRfRk4GhCRP
8UY9jlD$c@&J'+M@9q$(#q!0Ba5T'h0bi`X"E4)r4!Tm+IRI-j1FHD&mG3+MfVTp
UEYJI68qZVBPG1V"ZLbJH$G*TEK5h5r3blISU+dcRQf&'hi2&ZQ5Y8+H(V"abPmV
Bj[,l3(M"p'-'1`CG@cS8Rm3XV$2iF(DMpDkejq[r6'#MdkS@5[1$krK"jm(r3RX
F@40hjj9il-CC5cIUZEKK2c33FVZ[%0R4NUDSSI!kirq(*XKJ!l1BT"@mU2hj!A6
6#df9Nlhc$6%MSN'm$ZdQ6Q-"P"%DrFV&jEh'q@1NZbH#Ki3(eL@dAJjm5bII`1Y
MVNPh2rAl%G,flAEET*%UZU6UX*9J6jKEd%M`Gq94eqaLa%-CT)S8kU%alTU%(8Q
DRrQK3$lq&8jR'VbcMY*3i(iT058EajI+hEcFFfL(D6TG08ZL2*TERBI!fqa9[NB
q13N&CrJGD"rG,a#4)(*+LrplJ2$dI#!`N68V@!6'NSR%jYZ8GhBl,[[[8+DHED3
,2k1Ab1DqcJM@bTZ`rEb@[3+(q$pb3lSGUmL!U)dN+$GpXB-PDNEL*HferKB$I4!
0Pb&XRXa('J`me@1a&iJi$Rch4l![q&pT$+3-qZCVZ14DXZS%Z[cpM[Da&a[V!f*
'MA0k[S%&4Hf*arE&@b562"UAEX#d)!jMBGdM8fSKaF!,JTGL)hK(1"aaAM![F8I
k@'MDSrQP"$0mAd"ZU9qa9K69iU5AmrBE"4j,iTr'SiR-cKD6S4Hl@RHl!Cqj5d#
k!jU-'8f`A!FY8HN1+39I&e*AHemE8HrQM!k4+jrK*lSM`'klmDlcS8M2LHMfmdZ
F4[GX#Ckbp6j5D!AZ[f4,-!Z[Vad3QU3YI`$dfe)jifQ&,@VYU6rT2%F#3%S-0j@
l3f9LpJDa4cV@c6%F"bPp8qhP+FQ0iG)!9YQSE5TNpQk#+!0qT+PFGINJ0pQl%bM
BmRc6Fh[VS0+p#(1JB'iDeN#G6a!%m+U(6QR"B,%e1DUd5DqQNl5'lVj+MKB#T[$
ApfhD&1J8fcqhL80lCDcm8Xd3UNeq&35*5k&rNqVP,a2'qp'S"%C2q[18&@F-UC!
!4P-5XqAqf-mhQ'pja)fF81*%pS3kEFpkrm!6Tbqm2pkI+T!!r,lfF-[H'S&NK4d
U3BT!,fFL2MUKXI%di-(ij&Y2)QaUiI%qaiR+Jd%29p1b2TfM[8F5*r)a9AK!%34
aHJ1ALkf4Y"c+8cKCDZClK-IF$#I%"`ECZh),NQL&j8b('lP-"32P%*eKQY+D9$Y
AhmQDA@5JC-N$4adNAmK-C8cpc$MJ5lfZbSGKca`mp[ZGZKLG-f8YU-',GMrU-D3
`*LLb3Qea+J54Q18X8eR1-GH3!-LP2X33bZ+-a0UG0K@[YSfm3RaSiGb@K&6q,SI
4L[Za[%`VFSeN`4+SZPBZL'!Gf04#3Z%RdC!!AqbLB!!GdN2b@H9'fG%"pkNlkMp
Zeq3i[H4'1i''hVpj%N[0Slr9q*P(AP2`K2i`cKbi#EpaiHU@CifqBSHX*d1DD"k
-5CdFl,4TCemmVTQr*q&fhrG+q26R+b"$K&,IAF#Vb10f5SmE8PXDQ#2@J,4bAd2
UU[p`99pYpErbX3CQ#hjJ[DP(@[+NI-)Kb%A0$EGL$1h4C35*,@aTX3SlD$E,*(&
`4,ZP@+EDJ)1ckhj51C8h0NG6*q$j6K8%P@2NNQ1YGf!'RIXG@L-mrc2ffbd`mp[
cE@C22`dbK#e!L4#*5%,XYGX"H5[YI0R`!Fb[H)`L6Pp0fSDMHNdZ5RCfhriCIpU
Rj!J"'S(q&Qa3Z$!9`A-BP'P-h%)Fqd[j[Dm6-4D3!-$f,1fJ'1A98CfADT%rI[#
N4E8l&#6+H!p(m-!Ve@Z6QX49UeV3q-1P$d@8)qC@JrHMb"r@iQ!&#*!!jQr*r5F
)-"+$8H2l'A-K@YVT(%[SX8cZ*GpbG0P9a1'mI!(D@YKp+)2$-`rh-ccTFrjV#QV
d*B3B!%3j+6iV9,&0-)Rj*)*RZNfP5Bq4DqpDIA$-JLm3aXZL8"C06U@MHHk1A@b
Q(J8'+$BPeCIMVpN5LZPrFlUT5$9P6AaSahIR@4iMiUCk,eLj+Jkdb#iafcG#C2B
@'X*A6`*Jcp[$k[e$jq06NY@dSV4f&'KX!k["0r19@8URc8XKCeYJS0c4[1jqj,X
4c$aUPdQ#-hYcYb[5'NQ#J)pXZ-Yd81`fRb+a6Tq+r(BC'(c-r)QVAcma9mKFV5H
cV3XT+AQQVlAb#C3c'0J22XhYbrefSrFJI5&'5Di[UA5*XmV4lX!i'h,CFT[aqhX
5,#MhN86Q$9LbP0J(PqeCN8PBZl@%'B[fPCi'bUre[h!JRKf$4Y%brmqj"f6H3@b
Eq@4VUJZN)P9dG(Dl-0''h4PdI#I,A3+I&JP,`K'Tqar6!VFk1pTd0Vk-@pF%-fa
$L33UZa6L[fZGq0V`f-9$K5KG,PP$d&Rred9h%Ye*$KYKMP9,P*I#0C)A6&k5Sij
5f-U@"4M&'hlDmarN%alQL8e!!PqAS`HhfEN)2B0-Y!6Q*C'mqBeh+C,@T'mr1BV
1mAa48pHcm$X1r+bYkbk15Ula`*AEK+B"RNfY#fea8r)Gj!bfA[SF[%rH-@q*!HK
P2LmIB"D6$bRh0*9Xjk#N"X`CQaZJ+36DHMAB[GKLFkN%c()b8J0CJ(0NXYUf%(f
1MPL($a)Fh(VC`qLh$%)E%2R!$4-'*RRSRH-3If`2erLbc@421'1NQUFJ8-5@rr2
lmSl!!m-I-[V#c9e58m!@h,hf&4Mq1dEHBVP#55dBGDj,Q&Qe2I9PZT3Rlimac'N
9eB1Fh54SfDjEIpLq"eA5!d#0%XM3r4JAEBUR!$Z%HZ2X[C!!rK#PiDNk")-d)Sl
8kUA&CH$NH+kr$I8d%-m(%16XTj,rcdKQNV4(%21JeM5)mH'+r@`rlR[FTHSG(h%
SPiJQ*ba6A#V9h9T'[(,+Y!4#Ih,NbfY$bp#mj%mjG5rGNcI&2155A%"5ZMKJ4D#
YQP-X(+1@%,4f"c*fNNJF30CeDrrp`P5eXb$!-KaemPr`*rI#fi%0*&J`ia%S+B`
3Up$Fc*N4jlPMqE$!N!$DH*ImXM&dS(0Bap%AXR3a&9E1)@QkP'!5M4"2[T!!#[G
TJS[q[3i2![*FfPBE3hiecB5ET%*8Xm[YLRK"0-r%A0j""Brbb)c"b#A&L5hC,P0
)U`A"2pCQ54`SUBS5A2N)a)'+FhQ[IR5UCSU(9&6`LF*CKMP6LRPM%l`2m0aG-a0
kT!A0hSRHLGAbC(C5-D(fD6659cACJNB1)QE&HQ)&bJm230r#YBm5Dl2qQZD#m4q
89FU%)!lqQ[T5$@`3J"&UZ!MXr"8Ch2P$mT1R9D,-0+'M#BI3V9c5f-K*rJ[CE[+
H$SE63h!l`#1&e0b3!1dDfD369SJ&BCid"T@,9e0dI%M&eL6Y$Hq4U8i+5Z$kA`[
3LN*Q-Hef#P$-M8C4HT5Tk+i$D@QFKcIaVjAd3i"9CrkK&YU5I6)YmDFfEiQ5!DE
0-DFGZY8FAkQQrmeXEEkpjIbH!5fJh!q,9Cd!Q85-e!bZmIpN9K,lH$M"j5-1qHb
p#R$,3$0BhBfH)hJM`hA*0XclEV54F[SF2kfSU8(lRZ*b!VmAEV`RC9N8hF@p&9T
$SPdEh`HZIS52Z+QcVlF*Y!MFM2YIYLj8C+jHKA3'IcbHK(IF+XA9GPUM6J!&Tei
HYPTX2,1M@-,qi)V&@("lHBGQ,RaLidZI*4)#rHbVXYJ`E%81!U@H8qSY3M2pAG#
G)Q5(22*ApF%mhi(6i1,bmQ5p8PaDf*T3-+HV"212VQSj3TR1cB5Fhi6#jFeQ4Xb
#hUcQCQTck1VID`RlFQKB"pib-83k8p'dbq0b0l)&ZkkiBTC&9e3q4IT6SBDe-im
bdpf56ZbQM@,FJN`)GhV61h'FL4keiaAb&CKiLP!TK6'ma0"R)L2+bPID+5ZV#iD
Cli0S(%MaqTrF0qGrDMDN1MS#D8Nf0CiUcp2'J"DkN!!(S0Er0(ql!aqlDb'KmaF
TlGVEGh#*Tm[SrfC6@m8,-kZRR#*B6Q`5bV19R#[e$*@Mf9Y%6MS&VK`p"TmG9fJ
c2k602dbl+PT@BI3LGkrL,@0'Y0fUM)kA0L+TM*29S8EPS$N"CEi4!Zj1BHT[NG%
JQQc+SNEmer`6BHd3cj,I@V$E(D8#C0CGD#!@%pPH)NLHE-%U5fiC#F0[Q['d%BZ
*MrK14')SH9aCNGmp$21jRChJh8`Df%Q'F9YYY+r0ENUZaFrFIrUe`lcU5K&GdB"
2`aYYK2BLqDABLlUbU-De$3(F(bXhM-$q#I-kPV8$CSpC8a'N%l@1hdY@qh+hYD"
"+GfJapNY4cXQpSk3!*R@19NK'paC'lF"f-3ZPa2r0VL'r+aC(dFVjQj)5fEeUQb
fCqEj$K[XESl9*p#YaR(@84TYVB,jKAVG!pF%d@6F@$$02#MAFQ$BUSFUSJFKM"q
a6pp)bU+EkJVLZXL-C'&#VH,AZjkX8+HBJ0MT1EELQJ,(U,fG6i,hP8L1D`SNjVC
k`JTLSUI6fc5i1+2@$rcr9qD`5[b",hp2aRB3#T*`+`IT5VFJ*8i8SlDqdVjlF+B
Y9($0m!U""KXjLKDVP!0hm4C[4Dh2"[-&`c%J)+`"GDD'Ylr*TdQZp&N3#U&E34[
+r-L4-)H-0Fa(@M09S)b%!90V-[*Q8+6'D0XE[[)&SN"9f1(hF@LeGI6@#,dp3h3
6IF3jr1@+JJ!QahB2,D"!9VRP6lbYAiN*fYlHc[ZBrp5--[T81ajr@VdqeTk3!)c
*Z,S"9ChrD"L#%ih3%AbSCj0M8+#*DHH6LS[A"@-%!qXhDkYH*R@(BlSEV8*SCL'
EUXHp+5Yi[D,PKR$lq6Ei4l&*!i&pQqD'J0PBQHH[qS$rH"XjlVQ)LlpNddp&kJ[
%Q'9Cm([2"q4lTEPa0-Q6[rBR'I(56qiDT$8c%Sjq12CpXNK59X,6@!SKA0S1TpA
R##IdB+R$r4X%2MIBZUjj*3RV*I&J$qDLfVQEfmNma30mT)pqmehSC8(!`Kd9C#0
r0[H+Xb+MprAL31CBEdZ&h0JQM!Tlr!kcTIXf6D4KZr`[PCpi"84MD5NQ@M6)@kl
*83F,IMd0NB240#UjSMXk,JM`Df1T8#@8@KV'i@eUC61DHCMekVd8YhRdV!4e,+i
c52Ur@f5f,Tf*)EhA6U-$V@YKb6ZALk4dH`IM`qKB9)-NEV(qd&ihkpLJi0-9pA(
lNPm9SqZC)*Ml&B@*&+M"&`RA"-1,NdcGrfc'GKEkMKNr8VB+32VLKdVp"i60-S3
Am-pi6JUqeMLqfRePq)GLj5HPfqjlKeEpGJ6#Jkl-q$#pqK0TmA,KX,GM!R4"6b%
r1M"DQ*M#l,a6Fl+BkFpTCKN-CU%["Bp'25$%P0*KM`2APShM`LL+!ckLPM-L0HB
'qC01SD4M"Z4D["@p$UXRU*@16PrIjU)4SILDhLTic'cYra`(XCQ4Vc!4'bkZQEp
eF(D-"1FPUNEfjR!cb[Sf1&Bqj'M(AF$'Bl)D&,T9*[Y(d2akIcXZ8STF'2k"@9`
i'Sfm&#VReM893(iMQi(0!0*#3Z2!$R9jLm*i*033&"i(Ppi[,#4#@J)CF(pF'!1
*+,&@4@lrNZVPQT!!#Q5eS3rrEcD`9#YqUF(K-9ThUSF&9CK)$IM',%9,Rcilakb
r5bRH668M3FZYA5#9QP5HLkA`H215a'aE%'m1#+d)Bm@4"SL6+&*$6fV,Cc0i0J@
,HDI%-0cPckShFIRfV(")9B5ha`0Ar`TB"e!T6a95TmkCD@PA4R1EmE3Z)hY0,E"
QeE*UDYY)YDh`jPl0e2kU6%[,8qffrNlP0XMcS'VU`kj#MlE+`c56XM*cUV98P5d
KrKMeSJ,TJYfK[96XQ8&lZ@ZapDHf)4l)US!T3,lVf0C[rf[!UC!!C"i1HULZPe6
B65&m+V+UU2X8EqHjUGi[5M1$aY"rT*4#2Ff-3J8PU2Yd[`c%f[RIRGpPNVVUdk8
1i(H!)$00#a0@d+!"4Cm`,JYK-eQ6EISQ)2S+`3l2)VI!%3iL$*KPNQ9L9[JL)He
Sdl5mpec(@3TFKN@BcK!UFAEB`)9EJTYJDkK$cC(XAR`'T#rBQXArQ31c!lGaYm6
21"pi6cdaQVj"D%#cQlHc[15DUKCGc#+8L!#5YfG$"I#(JUjm!GrUNScHAC*V,(l
0-VQK"hjaGr(c006q6r)PY$T$'!+p-D`*f5h+ja$2Qq3X9MNLdQP3%5D9liSL*q8
4H%ehf`'-SLe&#ZeFidM&Ib4lqTdQ0&eDla-LG#2UXbrl,TeB"[8VcZfBf%$S-@1
jQXCXH6&Da-h9JC!!TqX6*ZeJpTGh[5EX&%Phj&[%`X*dVZ'9bX+,L3%FZh8GLF+
2A-kVG&m9[*L""0%"("1#jUlNFNK(Za8+dTi!QEKH5d6+bAQBdqkHLdlF`%"&[RI
$M+r*dV4qdaHajJ'B5X,#5C!!j[+`&lA[#b,,#l48RLr8+LUmk$!3mU+9d(amXl#
D2%-bq-B!2bN9mQa0hlf,`4RLk523`T+fk"[2`SbDLl88*bANBmJ3LMd*aN#(6qe
qk1"eefe198V)$N"Q*TE#cpNSpiP3Bl*N9LM0%fHGIf'0,LD@M*qcSD*NIPp"MEF
KD3i9KBd-%N-,'Y'PS6Y-Q%qS*I'LDTXj2kH0$1[LF3$1!,&36,G[jr*2U#36aCD
8M!I9f4,amF[0[UG#F319L6B)4qc+QjQL!3p*RMHTF%&bb5e9D2Eh`1)!CLA,hYT
dfHi[RmBTrjJ)PQ@l(C2%C3-U&jQEMXaMDGeH6BjhIhm*cMHQEC!!GJ(Fp1C[AK'
G6#YrThIb)AV@$f$DS#&SLdP1((-*l5L*1EK)1cRVmek4T2hl3RH+0jP3QaX4T,Z
f6&PraV%aE-Q6Q4QQD9ZMErL0p'rYQU6di,p#Uc@cSipb,h9G6G#`L@5IKTc&k',
"SPk*5iBI2S4'Pr9SS)iUr$UF2,JD4r'VqjA-&[C[li1GLr26`mmqGcJl)(AQB3Q
D2UcLS0U*T%Xr!0!pFCFAP1![kcjGCcRD3'CQlKL[Zk&3$"%e'lb[$YBqV`Xh9!C
e'6b@SC*@9ifGcV1Z4IL*1ArVjpkc`qBTi%RD42l3Vi%Hf3DrFA)[EF@P)rRBcq8
XkpS"@2AR'RNrjF%`fD!%m2cLi`!LkrNeX!-Yi09a@lNXr$N1b"5+D9rGdE@TEBj
YC%"%D"e!(c6(q1#9`GY@)P#%Z9!)9eE)6'&"G[d%3CYi4`rCNf(`Qm43FB5i5`G
E(6ka1FrpT-%`ELRVpH13!0Kd0DYlk'YrNi6@mFFbQS6T3J+6*K$,$I"G+ccr[)N
eY-R$h!E%5P#rYrDC5Y-2C#$a3Lr#UU0T"3P9F#!1&i@pN4JmA8X1#HUTTjCbKaH
#KQqL[DPJjH0B4Re'*YIP-0fqUl"UA-Q)3(UC[D,2e#Ulffp('0STaf`V@DCmDQ,
re,rM3Q!KZ+pHMK$Aa@`eMpMIl@6Z!R2m8"pX+&+Vl!(0Nf5`'65Ch1bL%0Z!JNm
PqUU$TQd@&4HT01Mp'1l"'eId%MK"%eR(%9aQZpmi(B8)UPS54%,jRZA$Y*&je+j
VD,Slr%S#'i36PTaPI`MTe%%&EG4'H@Sp%NjM0PRc9)m6K!`kbbS%Z42ZmHmrV"6
3&a,,HkMD[6EmX,)eL$&EE0!hLZH#lRYlpkKSePH1BK#E1Dl"p@e$2NYNK0YZ(JN
09UZ,Jq3)+R'H$TMe"NA[h"b"XTHF$rcHhjRe"qB'C+a"%f!'059rHlbFC9ZaHCP
0kf3@M"5%qp"-qNP9HRTQ!-T)`@qVa3lK*,bq5l*"5`C&4#8C&"*3j*@lh#@RN!!
k1SIhX-f,,REfqI14k[QK1hL5fKe4#KP(2Kf2JjTG,-dVV845e)5blB6H!@X*baE
LB84@+$HU#2q%eR*R'a1+HfJZSCAm9eBreX[ZV-HAKpmJc%TH$5V,(piR4)AM$Bf
4GRh)B*D#@*fRfF[T+m%8a'd*MK*b6iRP0"LNm&*(a)16bVeML4#%f5I2dY,d*FM
i(4bZ16C,p$---jiJ#M$%jAaB"!M!(1H[`kea83*h[A)%lkJ3lEiU2#'k&Ai%'AY
mV`#hX$rciK5NiF`e)!6D6(U[[Y"*b!5*)hJ"V5d9VaYG#2HHmBHMMm9+!T!!X94
+HiEdIR&2XGqmMEffD6(A1B2-,GYF1E*rji@c0VE#mI-SX`fN[3(!2*I3PFKp&5X
iPSNl5LA[DN&5Q#2",j5(![Y*3R6XX8P@J@d4Ke4lIIT'e29HDAEGPcHFkd`Gl)U
V(p+PINef12k&4&MHDBh*DQ'4d)%1J3kB2"64iU$l0UP"(bXDi+M34&BMBU3`LDb
8(mQdEER!L'AG"NblRAK2c10jC6RSd6"HRI`aXAHVjL%q8[i%H6fk"cf0NH1Bkl'
&,6Gr14kAq)pI@rACj59c2S,,(mUNrTG[Y3`!He6aS@cI()+8$6Sc$,dB#D(S,-A
3@3l(MZbfRPjm22f+XKUL#XUD(`8j*9-DILEXKYeh5@C!mP6-Z&2m5dcBFrT,Bf*
'qFeJcRM@kPb6q3N0V(Rf5S00S0Tm4*4Z&119[1NVUJFJXFPrBJKdpk0j)*p"VeD
GbVbrj,b`25RFm2$BVKGM5$L2pNZ-p@)AQ-Xi9`rNprBF9LalJHAFfcY&EcY&2F+
@@"!*miXfY2lediSA*58dZa`aMTh%0N1`5AXPQd,SqEdl-B-A8FYbdq23aQc$!dK
G3j)IcA,f*p,Rfa+Dq&e-Fpif3cm#*+qj*iAlkhiS9Bj3!V*8`XE&5%(ea%`NQlC
PZ8ilYA$PS+4Grl[[(T'`Qed`fkkk#`I5AkJEDMH6b32FTBh!&q9S93)l&fZ#ZB2
VKKjq,298V"q@',0ipE&*d@U*&'fkZ(2K5(Q"MCj4[*mAaN3[X%jHfYM+Q&D@'PK
r-BJJM01Q4IUZ)Hak$ThR+$KAFk$H"J*3c2e(dj&LATYS3NY`qUGKcXjebI%@41'
qNDUC$lrd4q)KEH)H,DrjhckG)`k&bTP[k-ppr!BlHi0RiETE5AP`AAa5E[f11KM
6X@ZqM&lTIGJEa!f)V%L@B3L@cD!X"qUmA##5))'Te+c%q-8ISb`hB"(B-E@PrP@
JpV0r"KS,%&NUhZ39V`mk!fkX4'j$cL3hE'j%Cm'c-%Bp"5k,rKB&M)6QJ%1X@)6
[U4Ip6T5#qNqP"E$Z8FG(rr2)-V'"h1L"*HL'B+*I[UlPG@L3!1J&*6!pRX"J#mI
35@FpXhbfMB4G3(pU)rMFUAK63(rLA**A"P[pp@6ZJb,1h6%V%!E8'MbF),T*jYb
A,Ne0RQ!3aNH9If*C2[%4X[EkS!ca5Y-iaLbLNa!hK'JiJ1M,eGPf5Q0mpq8rFKY
9+!R1%92p$Zd8p4m`+#P*)4Ih%fJ"U*T"C`FL%+-Bc@1['!SV3HNTafA1$Zc1P%0
R6U89kHRQEDQe&i'MJSP9)hKUXQHclH38!,2!kS(c*NK#l!mZY"0ZLJ'UeHfmL(A
PUm9m"fEmFa9!PAK"2qrC"b+Rj@mIe8UEYq-ZeMAGpEFXGZG(PXR[J%RVZ"1e9%b
c$*YYm0UE["*1)@DE4)0@G+d2#"b+$a5-Ek+[l3RM4@#$aK[lbM#dFdSlbP0IK3!
ERDG-m4%PkI$&LN2@lGZe`)pc5D-8HYGAiS8&pPf15UJ+GrH53F+88#e0#(l[LmZ
%AT)Ke9%b`FTRTp*0SF05PaBS1DHT2NE!Jm84'P*E,6dXjX&836r2`L[!K$erpQp
pC-dJQPa4-`[f4m`*N6XfD44Re%AF4@A6+V6p69lhKFTA)Kl`PXT9*ZMmbZ&P1iR
-Hq1HjY%6NaGGJkI4J364k[rq,r`["6e#rZ$rAA1-dG6rq,(B!#K5&#*LaK"cj)E
M%)Pfl`)FVHJGd9JI*X,+6)l#,J#6XRMb9#C34XfY#LB*HYBiflEqe4J4r&UEaX8
BV"$85PZcG2#Y4Y1R9+H(0Z,FMRA"$S'rCZL+C'&((SH(AM[eZPYpce@1PXYQVh1
`#k2Pe66N1M&VDVK9hE!kiAFF,N5lF"Sc4"Jk*HlCq!e[2cJFedNm0-2[E#9&2'5
H*fSfCN3DNA@QmM1I*c`eF4Q,XDfC"3!)Ub!Bl#qbBr0[k(Ge!el41kfdKmj3TJR
0GN`c&9!kHVQ8($BPZK-[!j0FmiHd'p1i2%2[$-$LL)5HaV%Rp%EKP,'B@BDji$b
$FE9&)fRdHDPYpp$3L`A0R-CE2cbSPf'h`$46Ikm+SYpNaY@%ciYI%-f4mkX%((b
hb4N3KmrS#Fj#Np8!Y*cU5Saaf48F"2!THCGC45KqCBqd296lkf#,a*8elUXcj%j
BqUSY)RMK!&9lhLErRC3JSlG#JBi0MP!pb@b4NlGi$pdYUf@S!i[(0p3(Z[4NF&b
S@RhAZkZi0-Z'((6bMUZ"`1J)h!Idrr)eYPK(aXj,AA4Dj0(bI+Bk&,43!NAl1li
D#r65HEQ9X9`h5IKGRQ&,TP@1+E)j*8([+`!+c22Ha9D@fUpcKQQ+FC)j5,$cHQE
pbr#I!MQY6l#*(@-jL$$,0kU!YSH!)LE1!PA6#*CmKqYUmb,SAd'Ije*Ipjf+3R9
pUB'&AKXMAS@CKbA5c-d4#[3PU1(aYk%+L8@U[SKe[$h%60!EKVfN3[LAG5b@caS
e%c4(R[2bC(dE*H%IQVU!"c+N$M!S)LTaN3'FIAMH,cG6I*+TSA%TDXflU0q1SV#
maA`8,PrQb%Y(!$Ejr,jF`ceV8#C-#q$DkYLIQMd,piR1p*JZ)e&ZXP[pYrSQ6a(
-)TkDK+SGahhV*J0Sf&TheP0TEdAI8Y@2q221ih,NE-8cL5Da*T@i5Y8jeAa21$I
)Ir4eepf@d$MN(11LT%KEVU#5f&`2mp4KBqL)K)c[)aAbc3aki9YLT0ST`"6l6$1
CG'5e3rU1#U1krLEkhdi(p2aA,j)J[0Xhr#+Di6MVK@3A)&N&"L2j('1*daZRraT
hQJhCGp)G#8YMI16HG00`mXVJYCEjS*Y1S+`G2PCfq($*PFT)P`!Yp(4&qL'20D[
F-2CmeGTA#j!!J[)YGD(mVT!!&J#YN!#"XmbC@[XD4S4CE(qSp559q*!!a%8I,-3
AEXU@XS4M5TQ,eCG+&X0h6`1*T2j6iXJp*+EN#!$F`IcUTrSI"+-F`4K(6G1jX&@
iHb+N99!MYf5qcP8p5"+9d3941'*l*P3D8lBX"@pRp,,eIHUHL0jcc+R8mZ)Sl[6
L(+Q`5VS3P'01CC@I(9(BdCKBJlMV9rdj"+akRCp%)jb*i3GC%94m%9*KAADUKR&
)GbfXR-"ljf5E+d1@MGPRJe(Kb(E2RblB8llp$rm@[eC!9l$9%NMDHhr[dqLF((%
q)03$8B6ebUULlLGF8c3m5(CY`(Y#B)!*P3MM[N8RjZTM--DYQLX((amALZecfIm
!K42Em0Yj%mUf3X*E38-kXC`0Gd$$0#8V'QF"8PDlXLL6R$HXalX6fd`2FaR5VV#
A$Rb(PHGIlUEiY634E9EX1'`#LS42J)0`8)([R,2(B1"l5k-#'&TCAk1`9XeA4Rk
e63DQ'fSAA,YH#B!fJZiCP@M1[UlEP'2V&5&2BX6%XqQRG@MdZZT%@3I-XPqZheF
'"6e%!J@jL-M`%dm`R$aNK([m`-@[%1Z%iheqd@XZfFfJ-J9#dqkR2dG+pE3aYIB
#r,h-6LH6VbhIK"8ZLTVXC#1hSR&0hjlQFAR,0k19e3jbkpc-%6fG4'ke"0UbMl$
STIfZD0+l04Jle*e9PI+,3#FXhJ[XeF0lLP0q@6DpUKpV"#0,`TXj&i80EdhCX(N
NGpdH2-%3(QI3mNr"d'Vdh*I9F"mNcD3#D(YjQQhBRlcjT#`UZaVS#U&RHp%-bFj
ALDI(KCAhTS"V%e00M[%PR'6+YAN$3Q9hCN6##99F#2M,(L!mKPFCp2pRHJi#A'b
IU'K+*U"l6q'KKhQ!#9(#GGeld1a40)5j0pl!%"YEV9&iL91-Q#!D!j1e9q'AJm3
,@kXV$4ThH6q[")pR"SlZ@FA"#-CS54F3p@"6RcZI%QB0q%aB`HSIi0)b2M#%Dj,
$Jk-5(4$Slm0lp2-+5!-'A9VcjLA*ip#86'P3JV&(QPCmH4rTU)@[3`4PJd1%aI(
YlDeh02l85#$MS%VlDLP(T2AHk$qJpXiDhpMZdrYrQ1`8KR!aB9(XSPR#XRS3jE-
V4G3qaD2eC@bTR"LrQVEMp8J`[r"+9)`VrYRi!qFRrUHTX*'$h"YMG3!9jGT3%ek
%YiAEGkDi!+FIJkCi$6)Y9%k)0B46G6I@USB4FIlV,HVLS2[9,*!!(#mX3C2H`fT
'b&j(,l$((2YA!(K0UQ0lZfmRFF,fdV3Jb9%8Q3cfC-("R(3XhFIaQLfHS9B'Fek
UY&9q9E3!l8hSqq9(KZG5XR20QU6SA,I"#mhT9rrZlAP$ZR!PlV+d2!Rk+Ql5(48
UiClkF05i2lCe'0#df22MCMRpZpSjrrU16DE#q2If@k'FM5KFCG3$CD,+D*e'$iq
!p("C4BQmJGpK6a,5kH`U+IXrAZj+EfV`kSf2BYqNNGKKdGYrFG6JdST(,EP5,rd
JZT*CVf68TE%,mL3M9&Ed!NFrPMEfSQK5lk8$`i&E2A+1D`-3dQ&IX$pZirEI$f!
Hl+LKCIT#hXj5mV*RM@F$Gp-*BeZ5QJm2RUJEj$KHX-`*d#6h&eV2H2C#VE(P$6f
-ElJDlTq&Ec!PPF%pTpF%10"r"H8$i)6RU3MHP['*Zal+@FYR1eV4q&,!FhXR`Pf
,YQhX42EkNYZ@pQjVU)AR$cH$FP"VhSi[V@Xl9hRph&a[93cc+YDCbp1(jF[SB)i
BkFVkEA$JQkYX`IH'6J-IkU2,PKUUCV%l`bKXV11*KNH8EckP+)U6r6#Y1cVB[GC
2MKVclU$RK('@(V,J68Llf#ck$JAZF+3248VTYH6q29Hh*3BfU*&@`beEFp[G9ZJ
QEY[6Mbim(FbX`JBjH0C4![JY,FQjmeHjpm[pfNV`9M41"pB4pBURThDXUi%J1+)
85+-bAfIBqqU'kSb3!!AcY,eSR)DUcZqGHRMrkHcRfADMq1mLRHBIqkV(j1U0qbL
ep-P@X-%UcN+aJa5,hX5$ldcC,jGN"Xi[M`VKEKPF0%X+`m65,*HpB68V56"b5JN
I"&fDAUZiqAU2e$&diRZBb$lbVkIpBL8DfmaAA3iV8NM3c6bD0",h#ShDZdq#8,U
h(`#E!pqZ&MjHRd(,YIF,hi[k9(j6hUU0k&hDDQ)R`*fGMf&VrXX$R+#rB&Y%!h2
d"8`C3Q0RGcYp3eYKD@p[!bXiMbaB!e&BM6m#pfRc'p&X#h*TJ[H%,dm(D0C+@DI
A0pG)@H&QX[IZlBXpq"Kj1XaQZ$aUKEm(1rl#*Ppm+*9-fpKc@ickX`0Te!U0eZ(
*k8%ib'pX(!*Zf4'h@JIJYr5`!NmaaEhfJGR`2pYM9,)k8dBaU-Qd!5)JVMDF`rj
q#h4Qd1,H@T,2XCqRGU#6+dADK)k%,kfQB!MZL$abMSKM2`3VIcAi+SNh,1mf9`N
0Ch"X!aeMD(9iNrZXA014FhqRe`9ZmraRR#8iAL*,MUfp'DT12d5mc#Fp[Vb5RUd
8B12N,[mqbRTL[8)@@X&pQ[qj4!aY3ZHbdd"'hG$e$keHjU%LTU,`*2[BfSNHV$%
1$p)&hDBTM1'C@,CZVGJ#TSH+8mEA`"+CiFm'8BlIZ-G`LQHik1XN%%1`CqRiQjJ
"cNS2hJ&UiXhm%,qp@SRc@)8hLiQ3!'%`e@c$bjZ&!SrNaQ[LhMjl'%iYDClY'EV
XKMSi6"9D#KRR--`[(ai)X%K2&R+)f8hhZdE9K*%$BqDbk"[#IfT'PQGbAkY'jaU
(bYf!Ye%qY,FMdY8-fph2kVRjS61Yk6FThDIpl,fl4`E@$B!KpZe%aF(,)-c#)*b
,cQchZ5C3PN5%FB"&EVBrF*MaqKX[rF!E,`K3C)QY9D0d!LLB5T+f[1R&dYJ5%hU
q1)9Ph,Bke-q1Bq3rbpT@`S*[G!#",GcPHErkceSrJ"$b3162fEAklm52b''T#CT
$*Z#[LG*D39-VTDjrHZV%ECaDcrC($(6YXLU8f)5!,US-BEi21mQJePUZ-[S*6&F
RSmm11bGH`hThH#06dBAaVi9m34Bmk-E+eGKe5C@cPiI6(A&%l(GXB"4M3hT)fJ5
PCQZe6EFGP(KK8r$V+'Dd'D)8'hU&QmNA#eG8N!!BQGXr()cPGKYX9D8B`2bbRmR
`)&@T!dSAV!ESP2mjjTL)i!lTVf$0mQi#kbJ5pL1,JLKN,[m6bhfZmHT4Rcb"kT,
qih9r`H*kDKT9%r),rZkIbk++5leBd)+5`P'LX`p!P(jB`XV(8@YcJ6i!aUPXYAB
L$&Jp@1CIZ,1cZQG+'II+PSkf#(PV!3Q+Ub+8!D(@eQr#CqGH1pe8rBHFXD4)3aq
HG-8AiVUGJDDP#jcE*+$#)AqFXPKJCZehLVPpJP3!*3(2LQD+rd"@$UDK[Q&E#ZN
DqBfM8P6VHH*IfTY-qZip-DeRcTeP&-+JqDVc!kXD@*B*"5rGM53D*#3``PK)$-j
4jX4J)4XNZIpk0Kj3X3B8h)h"m2,AGJ-ac1Y@4!38"N%&c%L0r9SP0![8Q19qQQa
jk5N)&jcb)(N&JQr9iS"eCJ'GT!$keHZ6EZh8c-[RPerLd9*ceSb4BeVJKbEd#XL
%Gp3(ZhK-"QT$Flld@-H"P4L"GKUhDQe!+E%X"8JLF,!L4ZeeKfF8B3,a&drd#kF
I,fLQ82L4Kc1$C5m'5I5YMINE,bLXf$P2H"RMEk6ZaL"jPfC#!@#-fqJ@1CZGG6'
8C3Pp6a5+Q9PCh+4Z[2rLJi*'9,+5P1L0N!"ZXPELe3[De@3!3ERCiQj#%5f+b'k
E$+"dMQrQXZ+*UACGmi0Jkcc+Fp(Y#'0&56"6HMaR'VMPpkPPGT8V'R6*@#bpQ38
Ib&bkZSUMJDd(+M"6ZT!!-YfBS'1YTrTLBMK2jAkQIMSF16P)8T@-F%$JAappb*`
b+Aq6GP-8D@p`e*0F5$[""+I8rDTNZM"b+mH@mYf+[DN5%'i2,BIEE'hYQ5lBA#Y
ShVMR+[DmE[qef%CHZBqra5$bm4%@pQbpZ,,P!EZ+(NQ3!#!RpN*fqejVZjlk0HU
TA&fp8C8b"K%hVL0XZNM&f03QXrfVb*Pff@dV8$F%(l08fa)qX,fim046S4cc+4l
ca(#'ERd@CF*j4IK$9-pF9$T1#qQ,(,2qR+H+%bI1QTV4eMj"qbkKe@X!@q'B6ec
m95%b8T+p4)"9`EG%KU9G9Xe0N!$D+i(1XGkK#cJL%I#5"K!6(K@QE%%Y&eFqdmB
YFJmU)"9h$@+AAj4j243h)dDI3YK@cA",AR`jU,M"*"8cS!`U)PReA$ACN!!MjfQ
h$AH!cL+I!f8Z52+8[5Jfe9Q"#+Vma-k!@@dUaZ)pb`(H%B!G6Q18*0dRKQLES(-
l'2,-#'5Ur%QN#2S3E1MmNlm&"AH*idL@j9fIYla2HjB(XR#V*AJb&PTl,bl6dj!
!kS0&hGmjKi"`%YAaB'eC1[L3!,G-B#NdJEPb0BSP-!ZVMJBeqXGr5Z`S85Kb%)1
eh`J1MId)$S9[A,Z8&%[AaD#$pEb3!#rQp["2Tqp"$SYZhmkq1lTe5$#))hH4MRE
SQjL6CR"cTadU8@0e63&DLh+(Y4+,ZG@eik+B)NNaRCh$f)!&Sf6%AR9hkj(mp$k
`G8,IaAaUmD,5%5XRIU03C*6YSGFlZA3(1[8FEPqK-VHN+dTH9j3@Q'BbIGjGb4p
E#E#ZLQf,)i6CbpaT(025KV3$5XlS-mKB83E,VU-5di&0)XD*i([rJ@`V*1,kf5H
"%5GCYpcZfUUH,r"6LI@&Y`XJ5b(EH9Tj48*9VDY6VSA3a'+8J%-CPJHfeC+C*L)
pj5eKJjHQHYf9QT5bUp"6)LKZjRb+B42S4f,m0HdbYU9pL9jN'aq6ZJ6TPVqFbXk
9ZL0rYXH%[CP[U2fV8p!eFU-,6$hF6R9fVfEalLPj'+!(EM(fY)&)q,Qpb4QTJMd
"VKZP!H2CU6Z-!H!BTe(@r`m-hAfC$ah[VC-5D!bMM19M+Q&T"G'r3IKERNUhGU-
&k6@"9B0LV8KDJ9NKP20RV(F9rI+Ip%#DKiQb'aL2(,ZPTh3ILTkT,RB1A&j$LJ6
8"YdGj@+`FG`Dd*kXlHFZ-`Bc1"KPr*EUEXKL"j5Di)NjD0hPA*J&A6J%mbeRq52
[Q5eD",ES+jZZM-h[['`Dr&*id4h2ZQBBbKaQ#)HpHkqSm[M-4dqPH,JXGUe(E81
0YT[KKhGe&,i%K"YHTJ4e[f'kK,E++-k`E@I1G38H,I9&[$BjFj9ldbY"TD5!lqj
*-k4rQ&FlbL*"rJr(!XXSq-(YVLj`J6NrJAUpdh8raqU)ccUT,-)dmCCk(+(l'[L
p(,0)F`JI`ZGZE%BE#9qGSlKrp-@[5MYGIZHbQ[0"lHF@6+h6$U#H#Flc!Mj)CFN
aMl6RFf9P&R!bGD4r1CU%S)PK6BbcNE)NG8+,BKr"1c8SklYLF6MN"+MDmM6Glhq
[1bAjSY$U`H"&8UEQQl*"k@+bl*aa4+I)NEAmh%CL&k%IPG,A0HSpYJK`Nl5F[M,
EbBaESe'U$0!Z%*+Ne,qc-prEm51cMNQ3!,NjlU'kHFlK@HEThl346EM9UF+Hm"C
INUfjXf)63B6fFmI5kK[QFK2`'KYpFHU'U0PANkE@qGFZI)NZUe9`YiD(&`eVlL5
lh$Y%lF8CHir*UD-9LbBPa-!E),'@"IHYM2$V5"#pJ@k%p3$6JCbKamD#&ZE(5U&
ch8XV1$maYdb06lqD4Kr`F8'mBU-&*`(!TYK`K$(mB6a#dlL&cYAD&c68lB64&Jj
6'2Z5V#lX4)Vir"#MSZJj+l2*EUSY"ZJ%R-K49*4IU6a4(JM5&R3K%Nd4@5$K5AI
G-!"r4$i"ak[+UXbYEBeDPPU2-%eqk9*b1[$4AahdJR)XJUJF([+5J,JE6bXaE@4
[0[`aEND+-"ePlJ"cdLiVC(51#1*JARfVpVfcd&R5pl`VE&F[m1p2S#ARek[N2%@
`YmfUKhb6BEUH5RhDDAfCj&1F3Q(F$(dZCh3PVR00JLYN$pFQUdfcc[H)lk%YHek
+T[DP1h[8&901VB%BFE29RU@c8(cZe5kkhA3`9YIC1ZF$,KdEL4)jf1@,Bc3HJP#
+qYmKNarNR+pY,hGL,ER4NJc"d`XU8a&#GFYL"B56P4U'Z@3rh'R,&4NG[mhChSV
B#NTm$5jTS43pif`M(`IBb2%Q!YEp)@2e*`!ST)hM-ePY`"b2'TS+bY[*T!0+GTS
S"c9CQF""cFh!(NQ60S9KiVA%!'"2q#6,p2S8f"I$Qq!"DC@0i&@"T&1Jb4HZXL)
eU%lM"+XbBU)hXMRTiYUQ,h"VI(ijdVK)T[&0e"0TY3(X"6r`$hqDc2caFM-)F0p
X8UMY41A+YMZVi'NZECM1rFJliGLj64VL`D%'123+JP3XqTU$0d+Q#m,0E"D"Q!3
5cSM2,&(6bGcC,E$A3Z[GF0*f!IV5X0@BEVTXUIXhD5ZBpkQ4e+mZY9J,pXNM[pM
dGM-d[2J3`8"@4Cq&Zr&[#9#fqVlR4abG"ppB[mR&8FX$%B3bLHJ5'1al+cp1EJa
N5EqhX-f#JfCSP*P4A1aG$i!l6aM'EB3XKeY,4)IPPV`ZSh`$fXG)LUXP&L4d1pN
hN8F8`Lj*4T+!!!r2jLMbKmq)e$Q9r$8HSCAA"9R93aQKeDRZ!+P4BMq[VBr`NZG
ba`aUTkL)DH!LS0CjG#b`XCH%K,A)MqJKK)!!rKJJ2(P22hc"Z5idRq-I0Cmb!Q`
-[a4mk@!l9fA`%4EKL6@&5ikaIE(fH[[b%Sa'aQik[,$Vc2d+hRar'@i`+$(62B4
h*b+2rmhMLj!!hq&SSL2mP0X6@aY-05R9jV4m&KNNp8U"2jdZAj*!"i)FT%$e4NG
!0Mcd4l$Zik2YV+dI!Y*%2@%%`Sr&,%lQQb6J[abiN!$jR(RG`#Gk11`GpKBmS@c
E%jpZJXp*S#ZrF9-(321AHcC)A!mG$3R!Gjq1!pR!HMp@5BASdX5Cf9r#l*iHrj(
NPcJ4TM,KLE9AGqjd3$pH"6RZKreZMBcpc(ce*bj%0lCd,!IdljV6K+9j-YZl-X6
RFcX92p0ea(6`1[HLfiHN#,'"JVc+b@1CJe[mG)3ChbD62$&hl(h)bR"0lCb%AC3
*`R,(UGe@@kBREh$cEIr13G+D3Z(@rchLRhS'I%EC,[L2p0pDiB1PCDLhV*SmkPE
&Fq35Yf&%Ec,!lb%GM'TJjF(a2FJj[8#qQJ38HG6Hk(6HN!$jeJ4%N!!j"!"2(f$
'T[XJ-mf0q8FfqfR3m"9Bmk,FPlTC*('Lp[kmhBMH&A`J*3r0SN4YL-[39Y!9iVU
P,RKiPI3E6A3Hb3lI"Xm8A@DeGGNCUQilT08L-XEN4&,2`"%H+"39q1hHBmP%V#`
AU(4Ql6T6hhZN3e8*JQ-d%1GY26ZQ5R2F8#A-*09FR""KmGikR%SHR@A[*!3NDTP
0AdY!fi$k$m,QIMMB`Y9TB!X***33cLA)kXT)F'0rF&dVcAHqVZYUaF"k[aq+$cE
T#R0MTkdfiM,f(-9BHIE-0&3kMh2U'01#@(fFSeT!'!M!Q-)8XAENG5G*,'K,`Sm
6cbEMUm@"5N#NHZE4J-fdr%[UXM&(miSPmC!!3&DQ!$e[XYDB03`CrLqYB1'&(4h
3q1UhZrkIc%l&FUI2h#8,lEL#G6TE[`r2h$%30Zh406B60K5J"Im*+MKV,@qip"0
G[j!!XHP&HQZP92'f@XL*SY-"J,*V#TdcU+JJ@R432lJLb%I0h,NYc(Xqc@ZSdIZ
UqcU&3ika-fT6IJ!"Lr(Xq[0L"kDS80[4%b8ZR$SXGe#Tam[4AMb-3l`akI2C-`#
(i$TddLA0)UpjcAc#Pde$-)dR0VZR9!@8VD[f*Ai)l@ChNBDiE`ddMHeJe*1p5Hc
)[SC!JCQ2-fh3%4jNKf`aA1%YDp)ihKN'P0E"+j+@Q)B4FAR#DhSECF%ImpHIPRi
%Z-9qAd)Y4GrXXfb1H@C[A+aCfc`0!c5@X$"Dbqd,([qG+D,N5$+NarY3#0A,eY2
EJE3E1PjfJEDXbjN[Q`iIXi*[(Df3!&6eLa@T3lT+1&V,8i$6)pderZrf`$2B8kD
3!0+[TE&M9,ZQN3M&4Y-jdX(bTJ3PR4l'kPP!Q+FEhc&YP"mm)&A%UHVV,XKK4(a
j#P!Zi8YNb&rlEqPci5CF!)hil9fKBS&3)S&ALEY*'PF["YkXkUi(!+jj5i"qkM9
#D5%(kceAF-CjQ!M'-pP2I-(-2f)6jHUXFiMNhVe0b*BCrF0S!KU#S4ZLc$Tm#U+
,(N(kr(-mcXiUYU,V9(lli5SA[AaJaPTd,c8`H-*i1MGSAhV$S'`(+YYrJK#6YX&
NZG6*NF"Sk)@UF[K-9(Acm*+4U8j`"B-fUhBXA&$lE)$ZTkC4K2C@X3YZ2BcQJ@8
`&Mkl1R&L$E(H5f5rHJ+H0B`H49X'j,D,jXQ8jMf'e!,-d*UUE*l4LT2"*IVT)T'
[RAVXXerfq!SS6()hM(-)"ah02RqGpYT$TS!KH@qLTbEYF6jkc(@`DqLkC-XP)m%
DjLT)K$A&T"2)SHST#A(#Q"YqS(b`(Ai2#cDB69S(A*4ArImhV[fF0fIPBPRi4P,
XIe*8$iifX!A69FEBE('#S8CGX*I44H#,Udab2'%!ZZ)QY`9'ZN9(AKQ!HJr!T2d
i-al&$kiA!Q,IK1!aeGYI@9H2P"hR3A-bP14H!SRkk+C*cVHr!9"r(JF1JVr8@fm
",U64f)IETjci&,9e,$m`AZcUX(Xi+489556e3m'kf['B$-@[T"%YUaT'3bU#,Rb
2SFT04M""Ej0YJMRTMSi`l@(IX89imJ(L&c*ESM"1@B+Nk-AF!-TId5chUBjPG@V
5UjAISqeE%qQE5d1-1GE-9'kY$1aEkb15481cimN%'pKq``X019qp1'R-6X(aHN+
XL0F1)6ND`8&e9UiiB!6flFqpB34,2m+aRjaQ"YdA@H1+"(,49ibV)rbA+fBdPV4
Sf90YUQV*Y-Z!1@qETibFbRUY-"4QE`+f$80&r1@A"4%!ED%S-l[hdk,+aGTLqEk
m69JGUHi1E%A'([eNPjB+1U#+'Q[URq19$HF%rKE-,pXc@HF',[pc4MlA&NM0br-
ADSPkYX9RQrBd&m-JZT8hHA-`I"QAP8aQmFh@$4dZ6%ZFdp@SLC!!ART,$KRUXV0
l')`A&ZlKC('J(6aK9b%C(G12VUYrU`aDPU--@$iTZLhYp@YT%PhFBV5))eQ@Cp0
q`bQ*`*8q#AqJM%e`qEf#fEU!)Vc$64CQKLMkd9%ERTNZR#-Uj+E6$jB0f5%),fm
Sb%AhAfG1"p+e,XYrP@5HUA3#TIDkPUZAkKEL!5'3!#D2kS--b#FEhqATaKNDY-G
6@50rqRDU'Cb#jqZU%VV'Dk@4(i66R(J4M&HlkAAjY8i`pdHLJM$U-T3Mqq)8Jd%
'QH&1EB"T$0IYq*5XFV2LXQNSH-1e@2m8BiVl$aEG$C@cq4JaL!)H3@qr([LhAl8
SX-(15'l9Y`lHPF52)ANlk`%54GYL9"b-cEUbiTEmGD@Kj(0Y2`qLjhGjXTI2iY,
RNRZA30[XX`K+f9h-%iB@*4J#bGr`@rRE8M`V"CUD*JH0I&$95!h9ePNZZ!QB5q)
!`N2*![GaraG5Q'lE`+BD69e5l[c,6V9LT1YfSp!YjblZ!)3*e*Fl"Ale`(Q4dl)
2ieUJl&)#+4B)9elP22a%!Dp60Nb*ZY8Up6qMQ9JVEqDr"jhqe1`hH(fGL8B6V6@
#lF%[pcUVYc2k6N`@9i@i66LK-9ibYd$GrGVQ"$8bcb(X2N[CV2B$hYGc"LeR)9S
GYGRmLh$jK[QE6R'[Y2)3MKP[B8%84jNE1,K-rXZ,bJf-LK"Z8q@8h-Hm%4XG6j1
6I[ZDR(+[,L#%a)cfP80ZLED(1j[fG*NF+!Ga(VeQQjXMZ!#HmlbZrVl9Zq!pSjS
UL'3l62T@2@&bbXTXCK)c"qApl%9h#APU!cHZqKQkaX"%G[+82ZSKEYi+YfHiK40
RCLaL0E*Zi0A(M)#cXL1YiRBaq$Z(%c`HQ,%"2HmVqK,9XHZ5j8E25Be"2'lP`F*
&QULd9aqpf)qST,0fdmU#M,AUYq&C@@aHC,b-C%lP)RP+,U)0!E)mZG1DrdlKU+c
2"Pm[&Ka@l&N%F6Jmla9$LG0$Cd3&1k-Fc*`M*4QFmkI9,4q4QZJk5pI4Rj6PIJ[
@0rj&*@mfQ'53!#XYq@d"iSH!Qf`Fc)4`fdjV1)pKT`hhV)FJ6r,85+AYqDcCAHh
aYHGj)&`(Zq3HTi%e-[T3DES[+hR!cG3fGkBQ5%p#'pfY2*!!KlMiTRUpp2f[9q8
8h8VYM+[DRG'HL98,LQl5TZNjeh2`(,JTI21i"[*m$jPQXPpUFqh!XFd`@)Fbm0a
e$mV,!&!Lrp33L,2qfp'arHd2YhXSc*bTD'mXmq@ULY!Q43J1r4#',fmQ43h[SGp
k8'M6#b$IAqrP+H&40AHLmM$be4U)Xah4qFYX16Yc,+M+1,D""MMj)8"MQ*T"&fB
kl1,"NS*LXd5"VTp#aB*T-*,bIB'pZLMqQ*XFDEUdU[)*m$iFCemq2Q*+4pBBX[P
iXl&'pjGF8aqM,lrAZ$KlE&!#+Dr&[d[VeAhBl1#-!GYVN4pj`@p#lQVNm1K$"(i
$HAcAS-hY4HA!)$f`AXBSI`+HDPkI1HGQ(5[#0fGCePG%p2lqNJZ)G"["&QlprJ*
AD"8$9qU'Cr5f$PhR`R-@JK@Rmclr&V8h$B8DGed4a,m4kVESD)hSTeLaKHJe!9'
KlABCGf3d*)*Ufda[9Qbd"jl&0"L&!1c'bqERGeMNDY""RHSPEQ)MG+BARk@#"dh
@`CJ`C%j"L(9,C!h,I8C[c+4pc-T!5-K19b*RlZPdKS-@+CYa%'mB+fPjGRq(mf9
2h*VELq)$%hL#EU@NFU3eE[(CcINd'$V!'BIcb34C)T1(MQbA##@*AZ`B@((&6Bk
HBF1mmVM"[$afSLd`ah`4qH"42Fbic(V6%LXcd)T(d[e-9D,b0a%""Yafm#pF,ie
j+*8J9#+4QKGS0-B1PVT3-i3h&$dk-,4EYpmZCcqKN!"'L#F%@"lkUJklU&&i5J(
lJF*Die5m5)0+rF++N@Y8p,4*@#`QB!Db(*MXMN#21%$RKkSdCeA,05LL)Ab,aaA
QAImUKF$lN!!6bP1%J5"D51r()jq(Z8SV"mVG328Pp&ZfJS6,c@m8U-I$CLIY+DB
3j-YaSN0J&&rE@(IE3'YBq6#-3,A,CFXdc+CkDrH4q*hh*dm$%DGkXL@kT#58JRl
A+Sa!h)i[aQF3Kd1YD#$lb9J,2EG`Db&drRTImZ6,EeSZNf2K-F`F54S[Z(iB)T3
R3Xk'X[5NC!L`HAU'2[Q8kj3IKZ''k)*p)QIRfkT4V&2VXMFEdZFrZ%S+r9"*4J*
cfBcK5VjdRVJ*4!mhCkZNJ#YZrI''d@qb58-JCbC9G!1b,('dmVQ1Y2%&*LY)p(@
peepaqkQF+`McHL2a1K`lB'Xp,D4[3-qT+ZVq+C!!13EfVFepGm`dc2'*)M$`8[$
ZNbDQ0,Rl-j3fj[Lr%1qTX1[HJ-[DX`A[&S&'4GfDrp&k2m3Qa6+Q)`Jm4N,`F0M
UPX,LB&+60NKc2br[TB+m14$DCVmDl$-fYfG&JTFHa@Nfak1UibIrQ`%p"h&%1V(
6S9UG8$E'0`EJRaEpJei[#-bDMYd@KCSh&hSM'"%DL+&+Ci5pDj+&YT%R#VK+UAf
1*2ImPJ35I$+3!*lT($Q9BamBh"%3ikZTD-&!@FT3N!!jdbJNMCS#&E%%[%#R4[3
9Z"+)Dq@Alf&m(4THqCDF'%JlA4&M'+Df9Z(heeGXETTbpdB90p,U)%F#CieDb@k
ECl[aSiKP&!64#-QZ`1c8rkSF9L8T[kkV%mdQJMQ'bM5@lGi"B2k)4kId%pqI*N$
&G-CaJGA3r8Z%!KBF[E)aH#)XqT!!aAbpBc4C%0pce"j-FqpX6D!`hQNJL(lhAeX
mbH4A3AVPL,bTTrm8SN)m`@ZL9iF1e4Ph52B3K"mm6SAqmG)fdUZ`Q4rP+NYC+KC
Qd66HV3D#+&Tf8a5h2cpV%p0G&q%cD8dFK3&De[db$'Dki9X2XYjA!,`d4#([b4f
[Y9(3NTUGDNrHb2N)c2mAh&iMklYqT&#)#mjaZDZ'9f!kj['3!#*@#4#58")IS11
R(Zik*5BP!QJ"XG)r&qFC[ED-@5(BkaaYKcC%BG@Y4hS"e$9-UUa`MeDX,*Q5G6e
JB&klK21iXjFZ,P'c2'YXk'f$141$N8(B4eP+fq$CN!#6G$XjST02$&djj6P0![Q
c++[T"qrY2[%09D1!#T*T4dDpp'0')9CGP93TrUYVeh'4,J+JNV'5MD"L#J*"T@`
4TG5)bNlDNjB`F@b@Mp2ijJ`c#CTd(B[AIrZk#"TP&d,!eUfcRNlD9Z&)Kl`qk1f
`(8'Dc)S$$55LG,'ikePD"IF)Q+,VbILk!XdY'L1XL$AJc5QAUe[)dG1'LiMXQB`
40fa8%BaG2ImF"Z(T[5BNhXb)lQB1p"KdKYkYZXAlcL8"FVM*DleZBjd[mY#I#DQ
pi-+cR&lQhkpp(%RDLFJ5f"Z3!1X3-R`cU1p*JK@R)G3if*KrE-MC+e&%"[ckPT%
!rNXNmZAK![(eQZGZ2h0V3#k&pEC[ilPMCXAYpG,m1V@`rYcAL!$eQ#I#VL,YaKV
k-B4pZ@kkqmiR@@3@!T9&E%R#HD0cj)bHiKJdkCfrBXEPcNXe'D#UUZ`l@F3+K$-
)A$4N69DiMh2Jd!%S-HL3!"I&iXNI5dU5SPM$c66L,iSid22,QBYdibFBFIH4TYi
0EVE&TZU+LJJ3cACP40R6SlCrG%QX#HrXah-6a9p(RCV61ECD#@pqI)Xl5'YYQ22
APj5Iaj,A(Q)8Sp8QZVcXAfV5NZCk@jNmA',e[)'eKY-C2H!VF)Bp#Gl%&f0A"S'
%&VKlr@&UZZB9)E5VhqdMMG4(FcL(rRl4dXH%46p0,@XP'cKPBPFk*MlEITM@6R[
TDa40K[KHmM&VRMjX!j4bhr2U``bY,QT8Gd3eUi+4Lpi0qK-k0j2XCScb#JIG"M)
6aMGIF4YK!ai!AXiBJjH`!Mil0(Vd01D@mcHJ4U1@a+PE@clab0DRY'bJSA3,@*f
2`NPaCeMD4fj)8LUG#6kJSl2H@D8QH3EPabUjqLbckCTYHmik#(j)i'cXapU@AQ@
R#J3Y6bm%Y)"e8qNCaT9$Jr*lf"e'!Hm0HpAbZZrKrK$K$`qmFqBhFmbbZAaIR2"
$5N)&cQY-rN3lLqY[S8!S[1[RCV$j18U9V$EY1MMVbNZ,)`PEHZFLJ3"2hhj6T1%
kJk'%)5RQk&i-,BL5d3-X*0j)J8"H!e[2`'JJNkK$[6E'%XqP#!R+qEcSPa8k'9c
RVYV&q6G(TPrqUL`iS'lm"V5`Y#KA9iIm6-F(XK8r$EE011#qc#$8-'0SUPTRk[l
SQ8N!BCVl5jS9(Gi`a@9&ZU8ibPb#X65Elp9l"#hih'H!CPRPrMLXc18+HB,&-V%
RqN8Cc'-0Im%T'j6,[6C*6"jd5ZQc4@"49Q$C5lf#`CL+'f*Um0d!CpG$9%PjS0f
+qjca9U-88@IkhUhfHBY&THA"JJpXeQ&LM#`UE5jhcBN!HpHT,UqJaGTVd40a[B4
H'bc2d3'I@5P[F,aZL+2ZFQmCQa#d`D2bVLTVj+a)iNr%F4+TUa[T3V3-TYG,m8H
'lraiA)55f'349*aafQ9Y"6Yi`QGQ9"AFbDVP4)k5&(JZ+#Vc%"C1cPH-")ZX5-P
i[E!ZQUCcaF6q%#jAh8D*C&FrYdhXi1BKF,$H[f6[+,260U,Zq,2)X!aZ,$3h-PI
33kbhU+1erf)Bbk)F2pkZE"!BaV3*br!YFiNcffN*4kpk`+L8F[8AahQZ-PGDHC9
'HpiK'p`$Xk38$PF+D`rD%QCSETAf)p2!%TGlA3%8M3ZRBBp0H12jTf+YlP9qL'$
&NXR%Sm8cb2r01%15fMQi)6e&Rm-i1hNdVN(p82ZSD2G-&Rf15hT&epYJXSQjMSR
G$Kib5cJPe&jMaBIp2@Gl1-ABALCk`HNaLAb'`Z89A,D[eefHEMSBi2Xf(VpF-A2
!q,B@M(M!5XC[2Q*eiJcTJb@$ILPb#b1h4j4@6eFRS4I8N!$U+peFXS*Qb`'-G)`
jFIaGUY3N[E)+G5TAQamUj%@lbMShiPIb[pTRc6fXr$CBYV&k[26+$KSki+aR8SK
+"8mVM#fj9fbk4R9i+e'@YI[LUGVL`8M"fR0hF%9f9k%J&pL$D#P&QV(0m&iXGrc
S3h`iQG1A2mT-P3*R&6NTN[Le$)Pk41pLXKJP@ZAp5-,FqEp50XHV2Y-k$X1`$2c
[!VQ#lGBAPG$pN!!C)9bbI,2'%V`NH*-rPlmR8bVdA&a-pjI#VbNLDhDLAT4JE8a
pU0X-B,i&,P`C28ZIMNaQD[3TPF+6lSaii"$Yl*Yh`CjU&d'l,peTa5NNPFme6$I
@@Jp0#(8-!8NU*bi"BHjZ'A093!$")8&8`[l*A95GM9SdXP4QedV#ria*Jd"I)X+
LHM2KNl3DlcB62-"hVJPKMV1J*A&paAdDN!"EfIe4dc*bkVYU@0*)#@N4GXC$BBh
&)MD-DY@0KC!!pl$)q&AmE#,+GiTU[RD)EJU@$RMrRcHd96Sc))p&DM40%KJ$#pp
Db-@hf9eT,QH6EcAE9F*"3,%DL9$B'PB&GCQYG92kZjFJ9VD+4R"CNQji*mE`IQD
N`R&6UHG3k*2rS1f")k#0,%9MA+e686$)!iQ(90HlM[Gm`B`MGje[Lf0p-$,5Qm@
mGiGP--KQ*5Cp*Dd(!3'Z3ma1GN'U6EM2*B"bba%qIVZKkkqK-b63T%0-'ZMkf!Q
qG*(Xlp5ak%Z*Pd1f##A,1aBelfGCdD+PU4-C-ND%k9)8A$THpp8NB82e`JZ`M61
i3iE3H(I-R,(d-[GM2NlZieKG[NerNiaF-GhZU-TIH0R*)&a,L-KA2%d+eAq8K$f
R,[L9kSDR4'YTGh-1(kfQ1S'hfHe,hi!V%E1C"FidV3(DpFl@IBeAL3,DYSjApq'
0&(aP!YUcrmZDDFPPjEaf2BJp6+*QmLpSQ&S@+q+'2f!H3`IaXIj@N!$RUABi+r0
('-5"$1$q5B"P%j'@"I,,kY*VrN#P1cSP[a$RX)fE$GYF'J*3JV@HAd[N3ZAA@a[
cSE#3!&r'3aYrFBKP#2lBeR2Y,KMpr560*dcTh*VQ2L$JqLZB[q*-1jLSF!Q+6,D
1+,LSh-0LYjj+9[4Gl(QD5f%qJ-TSBlMd&TKq@0-J4"kFLKh,LBN@mpBc9j0rFG)
acACGq$d'f2k$M'EYUASb$"UDZrYaY(,"Kh'DYT-%FBF9UHB9-p5N0$9F`'f6,K2
1CL,j6RKapMNC9&GG[-la(#df8JHjDB0S3$44[,MI$e2H-YPC!+(+399kPDP1"FG
fUVheG*BjSQE#m[p#dH!6,5IP+39CF01%SC44i%cS0X0YN!!kq1($2ZhehM#8@hi
hS'LQ6"c8C%c@A9M$'ChBZ'Efc81*"`f@JDJ6,+j21Nr9Hd0G+-,BcKPYh0@eLD2
DaTZGIiZc`'DXK'SP8b9-2cC1d,R)rVNX`8L[3*MNIZ-FeTSpEej)31R&1N#j%%G
0L1eH$RRicJ1H9XK",@)*DVcR"I&!M!G8TjYqkA*rAm10Br$YCG[NBaTe4+55r%j
2$qhEI,A"+!Y0(XZCek'A8eEU)1jfke'"`V+b$X"UmKca)$!jS)f3!2A$NPICHRJ
DUE&+'Uq@0`BfTSIMFQldME6V(m6DZ)HEHfPMfBm1hMHX"b8+Z!AHGCReUE*iIBX
LV1N5`m1*q(pjP-H3!1TAIB9G3(&`5!NDjS0332I*cHd(A!9B9fAkUNd!BDVC+3C
#`m%e69lD(@5Hj5jk4)2bNYI+E2h9*U,9rXb,f!@13GHrJhBi'IMr$(1-K`A39Gh
Fl2LRG+G&B4&[6NpX0RjX-')E-DJ1KJ0GYZ#TM,daQ[*kQ3%1aLhFCe[2,*QjN!!
F49mGUiL2"PcC+`3*&#CYJPRZTNEC2l$PjfK5c&8Ad+d(DSDB&cr[fEQ62U5MA&9
fGYYdf0+Z$i,@`0#&5Nl1RfBLT'EklDBff0L,qQ)TL&*[2a9Y6!J5E,M!!aASjf&
r#B#FchUR'$&TVP9,JCdTTq*bITTErVi0N!#!cp%FR$V)&@6`6@&6r$@96+9jZU(
T86$r-"``UR4k)d,VV[f*dVJ&*HRIh@VVF)e*5@kTL8d5AI+F8PG*L3r"4Am-INM
F4#i`l&S0%2-5%"L9HHMNhMpUkV9HH12C#`U&9V(CIKJ`'I%2UbBD,&C!q0l!)Ha
Pk4H(80XD2I9qE$G``"%fJLF`GXB#HYj(R(5*Rh"V3GqXUqcIdhC"i0%Rd9k,-"$
kAiJ9(5Kh-$Fr`qBqLL28SG@I2YM40B9Mq(h53a)CDA&FqBHDT2qZVmA&ab$VZL9
II4bm1FYj#RpTcm'XSBI$UYmiRKarVA"KkYfES!"a-beNS-fXC+DIQUC6M@Yq%NM
bNKfd825Q[2XAY%ZJi`d)KGYXlRSLr-G#d)!S3p'D@ecarh!I!YEE2$&0Vk,6J!-
+LXa(Q6Ck(JiT@C!!Dd[d%`1U!06"A`Bh-M5fQ#I*Kjk8XEF%%1"ZNI)N'21Lq4&
T"PfNbZNS6,G58A&[q$9AH6L9MN)6$LTrE+[X,N0G(b4$%%5M2lU!XGQ%d5LJQXL
CBAkh0F08,U$V5S"Xh`Alf)E86$)paCrJh6#5Q[R16`X&(!,'@!l&3,,(Z@$BkdU
mc[HFUAAc#e[eP#pef+mZ&p`QTZ``EVpje-FN,efkX3bVVfLH*h@dfFqkVmbERa9
`49AePpr5ZJ1Ch1MMZHHkfAGCeFH4ia,-r1`EqFGh-+%pSkPCVmS$rQ14i2UDPAJ
)XM&G#ESUpIfC[ZUDMh*@[)-kD+TRi9afi(#'E9K1j2S$4Rk2%KrrKFdYS4N0RK"
QXjkFj$TGM9Q+#))*X5'-&NTb#RkZ!dNYV'(G6dlmeQ5b,,pV@R"UY&&9[HDJP1L
(+`5%IJD)kCYRGTEG-ME`5AC%'#8&S8EK'"'(EFU%d[Z4+*P(`[)8I9NQeQ,qS%1
qJ,U9X)X&5L6Zm!TAd&(b(bpi[Z,ZI#C4"DV1I8dp%@`D-QEZlQJe[@b$U(`il[p
P'6kV64mmm1LUR9D$XN5KjdP@YEaeS5-6#c`4DhbYL'BRe3q)L$GA86e")6!LhVq
@8R4eb@$6cM#XfM)bZE'@CIR@T'KP@[E)"!SlUlRP2J'F&YdGEUlj"'[I&ZJq'SP
Uqr#mNH#fH"!"[lfBH!5Qr*aGXKH,0aId6RZ`V'Z0-8j(r0V`4B%'B([0AkdX"[D
0h([PCGFEUC*lJdY[JX$"NcB2YRrGY6p0LGdAJHK(X%CG9C5U5k0$CcG9AGfk1*a
SL`)2P%m+QL@,`&UE)I1KVB5lS!0"qi9dNY5hqUX%K13VI'b43AAkUfclQI3Ja4Z
N`"P`,&(&rA#EdcJ!lB6HHZIZqG1i%rGD'Kl@[kqaK"j@@8JkGl)#P+h)CK*lbA"
EaGaNLlGB$k&d80pYj)fCZ-"C&-Vd$p&V32+5AaYea%jPbZ1X(I`arQ+SfUaDcfL
a#8a,d95ZQe(JjaKqRH6%dTVIH[K4qHmL$ijefVNN5)Uj9VC(3S&jb@cS0%-+2fG
$XK50S@LB5FKk2iI(Dh`-Jqc2e)N2M',5&`$Vc6Trpc4"NeQ,r%Zj(b$4+Ii#R5"
$h-BM!L,j*XG&qLB+VrXam"MQB"kBVU[-"f1k)0I,aR30X3,I#`)+5`Y#fVDdcT!
!rDpji5Ad&b%p!25#jDU3!)9-cJlJEMJ!#I+#k9b(HJ+@k0c41L[bpdBX&$4!UN9
6[Rk`)!$3rCBC)`))+ErDQLTpJ")'MP9La(V"T811+k9jd`X1X)CDlB0(4*b6,Fj
@hf%FH-Hc#6%-)FSLQ"Yjc)D4!qjql,fVCj50I$qL[)[Mj4FeVJXM[AV`BE$lSq2
qDGmZRRIML"ZKH)-@9r9'IHNZ3YKqi$F3bk41!pG'@Phr%11),%eXI-$)+CZ*DBB
'a@)rrShBmZJh50"CArXSG6De)'c0EZ-3FMVR`K+9'R1'Bf*`A1`h&Q$Y$keA,qX
33KcPEYFm`i4"Qlj$'!J@AZ$"@Ir+GXQc+2N'iSFfp'U([aNDG14e&9HkfRVqimF
8)[2F%1"NI'Ndd6Km)`C#$P#E1UXpKPTB')AVMTr#8qi2Jm)LP&Y,`Z!Z%(MkCY$
m`Jq4&5,1peJY,M5VhF*UDHCBH"bGXX1TA9XFP8UU'3GXqm'(DJ@+A[aCeJ%&(mT
)iKdKTFN,)jIAFb28b!M6re,EB3PV3XZiQ$!XZji-h`Up31N$(`Z'cq`,CFJ6fUC
m'X[GZCN[,LbLVU4$@VIX-ETBU)S1T1`2pc`kKLr21m'F)Ye!P6rVM28+qLb'mJZ
(YH[SG`lS%N#6aG@,$kf,PXmUU`2NqaPIFHQa*IQ*#%l4b&@Y3rBSCMRN%HLc&,G
Iep'`!ZJ[fLQ3!,[fYImJmV`NX8b'VeB`qL1lI(lIDAi"fhj*U`R"'+Z(X6TikC!
!kb#aGd#ajjZVI0dciQ!alIY0)IB2,JqpeIm(!K1LL01ipa2*8'V80Q1hJraTBh0
F[Q(p6Gpr8#p&ad8C"c!d%P"a)m9N!T!!#C%j[EjYeJLT4#(apfdXh6[9RIV(*QD
Q1E2GpSlp-kI`mi3JK,#@$mYdP5R3qYX1NRL)Pk9#B0)3"mpdj1TfN!$+p%KU@fX
aRdai+$IeVMVRF+6LfUHebIVkf!N#3R!,lH2XL%lM3U)pc[d#bD-2BN9#FfB%9YC
DD(3mF*YpXL!dqLbeTaEK-!UXU65%#LNA,Q'"ZU(J4G184C-#bYDhYC!!@GT-9fq
iQ@YLfZj'RqV03FNJTG&V#N'#9KM4DS!Q&ALq20Z&b1U4Kk@GVRIAZFSir*Fr5p5
I"pG39)N96l'%*lh)*mHZqa-M90Y!p'%"D3EeUqTKQ,,-bmYTA,T#i+%JZaM&'F6
a&G4K'UB9"+4*j&N*lCBVl'FTlUq#ERiqqm6PZRC(32RI*EC`dabUC-dk2lUD*"I
qpjNTH[M)3,qQ!'YqkmN)3STEllVTA1lEBaAJ%U$I0fqBj+#ahYPl1%'Sd[933cc
S3LUr++NZ9i@'5aIc&YNT!fNY`qRE"41H*Q[)U,MSp(S`D2c!)%JU#KR*!d`A`,V
K$@N,#Tc[8L+aLk4cbI8X+Aj,,bNBLS4f`1p-k%MB*898bL%2hciIRraf39jEIDc
GJ#(Y1TXPaB@$3F!Pi-*+`mRPcIka5%#0-BBYFDc&4hJ&C!iIid3[`Nh)%a8mlkV
[fHh8ZZ,I3R4pidAr1$TZZ2Hp0a`"kT('6'ATb0V&fPKGTUQjG[Q#+I&E2Ze&!*!
!VcF5Pq04'Fb2IB$i*liJAAP)hfk3!1l[Pm&Bb-2A'piJYPc-lpIE'[frGC(a"ra
Q%'rD+lYBkq$MBi+G83Nd5jE80R(()iI"4lSc,)1iMF`ZY"DeFkRd52JYTLA(5$l
kKj-H95lYE-$bZ&2)C@f*GZ1%Y-!)XSL+5`)Akhh!f*lk"MYa9aA@lYKl)#HRB[H
h"K2-NUafK*0MP-0D(+&3CAE,iKdhf!&JFrhB[1CSVi"KP'J4(I-0ili,`mD[CqG
%64CPhXF-2IDM#&lj)!qXM9X*!D%*cec$Gck'PKN2RMG(5r2RYTkVM#+kpeh[1fi
V![%*ej!!mFR[NLZQiaRqVkaUD-*li+ZD'U[60KMj)@+#6FU+fS-qQ#m%JP8XTlH
5M0*T0[)`AQ49#A94G8#)C5Xk$FhJj89AMrQk!**ZP-Z!p8U@QDLc9@*qp40pbZB
lUi3C+)4YP!R&k,Vkbih6[#&X@PYG61FRHIm1cDqE*@c&J'i+L(MkZH&JkkRdaFC
CJS(iE5J"'%NiN51)2+"JD3"dq6qL+%2*E2qAUIHqM)3QqRbc%IIJ`E2IMl1@(&A
m8'VEHDDVJYHf9Qq[VY2%Z58KY`a&(Pch268&ba25aS(@ZPIEF`ba6#h[E1`RC,1
5'iaYrHBMf+6k8'R!eUE5e4"rKG8AEYa*jIh"lVB0[[F5$P3NrAjD6qrYlZ'1&6I
5%"(iPbAcjK*dqdpc0JA9NQ1jY!-H`p)0D-DJK3cmarT6,,@T(JBQhdUTA&`"VZ&
,M"pk!hASAdY6KjR#dYNepej$,mJpc0j3CKl)U2amfC11ieI*Uj+B9qAIE%,+cQ!
N#YekpDl)(@98I,bU(qP[k&CZ+Fd`Z&X!jFRF[K$Ej9SiN!#,Qic2q('DS%F(Cad
H$(D9c'1bQ2SKCRHKi$"+R8$"h1&LMPSCJLL[[leGhN&aGiR$+3pNkSC"q8&*BBb
DE-JK[CGE-HkUQmI%FNBqCIh*BeIUp#d4QP-#P%m9B[bfjXalYC69J&91d0rF+R8
9HaXR$j4$YJ20@Y!TkTkpkhXE,Za,eFLCZ6PafD"IAp81HeaH(J%Dh&S8,IHKk%$
%lJ&[Na5pRp4[KQq6fq2eE[THj[[Be4,p%,Q-KXYq##aKi8dI`ad)qHTVij!!L2A
lE%driDBbp![89e(Lmf%@'Jaq@)KQF#03a3!fX2RaJMf*c9J!SkK(B`@-HA&eeqL
m"fFh5J1X3q"Q#5T!Bpc"@VAmHirAjEIAP68(BIJ@M1[@Sh+03Chi6"'Jpbik9i2
F[&h`A%-&aIma1J![`k(&*AL6aT!!D#[k!X`iG6j&A2FT'iXHD$3cGZ!Y%pAE9CF
eUiYLQ*@cL$I*mhBLP"p2F1FlEEm2Q!&20GK`F0%Tp8RZhZYBDU#1FGki#q!EI(c
XHphiC'e4'p@QkbrG`ae,bXJCl"q2E%$99h"I6R%[CbTAlXA4&i(PT%$YpSQ2X@h
!Hh[!5Uqaj9!)h8C99I%F'8jZ9jA&@F!`6fhFL@3'EV1`r1eGSklP4NA8aN(!C'1
hm&+c%YkZGId'+Q3BJ,AHmVH,SZ3DFZlYDhQUU(`#-88ARVdNP[HZ!jfcHkfK!L!
*4Re$m9R4%`r"0'Y*AYlB,D",-Qdd!bGTq,*40k`'F9E-FXGrC,$S`EJ("9k-V%A
G'RdFd1b(,2e"1,F(N!#5)(HMLq8-T9k*'h+Q[RTiiRrfl19JVLS%df@0Ee[Crk&
r`fjZV'rH%D0ZlbL[l4,[hTYlQmS2pF9IjGK(S#F3F8G0i8`+PaRQL'bKJY"+m(Z
hDmT+a1MXp"d@l49ke3q-TM`+MF-%e,0e,$iUj6aCmqF@%K`Tb)b8i4,XqE@Ac9V
+*)HM0cSJ&d5ccN1`&Z%08JZ!@DTBYq5YP4f-@46+5[Xi6%%AYc!qKScF2ClYcCB
c+p1l3eb1$-6ZRkhVIT9)'SDBZkBrqC5cQ4bDM!eZd)K8eNlQ6hrhbE*E%)6*Z3&
0)j!!+'D9V65&[%bpKmmrKY@V29%kE!,jA4dIIl+q-2(A"hZG0$BK)VlNT"05+Sm
b+Yl,ZbbSpQdhbZ2YeHJ8)FT`b2%%Sc%ChfNkT!r4CKYVcQ@h5rG@l4Lel&QYChK
)#GM""84XpKke8-4DTmR3elC,1&LHAG5NPR`4'-i9%,i&86pe`%B8-i!T#P`iqjb
j3#+U`eJ32c8'QX)2e-,3Fb$S9@A#Jd!*c*!!NI(#jQIER*S$,l2bJE4&r*pd3c8
k2Fa'TVE(k!,f'Z5APNr&Y5Tch-G*M06!)R!jM[VZ#PQ@jU$6rZMSRQ,)BUFdG*q
)k3ZEFLESl93HR6)686UhI*!!TiE&N!!HI(a4CKSZA@p0$&)8#cCRU[`k69$k9RQ
9KfchU0I!j##(669%+X+IDed-+QICU@EkjMcbk%*cT1bV88l`Z%pPY1QN"X`m+rG
eZHYI0(!,GXr)VAEr[S,l5jFV*dbG(QJlDbF4Y,edq%(FBdFS*aKU-GG*jA@XkI&
U1pT)2bQL*3NN9F'Xp(B(Yh'e8qef9*!!Ca,f#jXi5EKP96PPDi(LZ4AQe5ARAL4
d90YD&p4Q)Z(dfS8QdK,%Y%9d*Ze66RckB&&Q@X`JZi@8G'Bj-dTlcb5M,'Y,dF(
!(MJ'Z0-6b@jJ5jqpV3VGXJ`GD$Nd6dTK*@(`m8C#D!0V3%Jec5%Ljm,TQ8#ES5J
15lU![85GNL'#NlX+lr1Efd6G,[!"$0GM5@1APl&L99E`&Cpha3I4cTe2C1SkRN1
$@MV&Gfa83QRd'60j,4q%-#BZ[CLPMJ9ZDV#PA01d,j!!m@-m`($')`A%F%hjF'+
MfU&f3,pMlGD0mFaB$YBSaiLhBa6[4a8a*r@mk15ZBkbZ,MK'KE1kNDjffGiJ,l2
l6*!!T)fA*#Pd`baZAX40i+l''C!!"3lpLAhcp0rQhB%3A+aHG4+AZkR'L3E[kN1
0rSY+ppi`3!M*dG#"ECD+G4lE3d4`R-NjPGMqGA$SK8e!-9EQArrZmFI$M!4$mi5
IKXhadL$(rNQq(6M+qD+HfSD9q1"KPCB'$e8aqD*FqqaZ$C(HNY`$A-MKk[4P318
6Y26li$(52PHSr1F6S-%BH@pM[BQ2q9&A'B61-+hENdJi`!cA!U+`8%m5)['i9%V
Vc)KU[BPGAI[&eX'c!STKN!"rkZF5DY(hTbTK(*!!-ip%!(QJ!iY*5C3L6'RRfaf
N8N1%U1[Xq1df!UI5ZTKrl,&J1Li--T(FY85(V,hij14A1Q`lJc+kGFcZUp3c(q[
(pdrPpCqj+659apFNcrrbkRZZBfaaEPC*e82VHiV6M$aQ2j03NZ6UN!"`+cZe3"l
2#hm-T&LFSqTee%E2NcMF61`",m04Xk5%`9a#[)d,&bCRNrVG-14dMH'dZYaN@&r
f(H"5R6JD,r[&RA[miXAL0-XKI!dE*&Zr&"5rM3U"43*Jm@TmDZR@N!!qQMZ8-Ml
FJPP4dm%h!91mLiKXI-TCP`De[djIAZN-e4-VK&`q3m3`acJVB3FYP6`S9J56Kr9
[E*`VVfM62Ld$[$)i6KGRI`-l+V4")81NHGBq1EKH"fU@4'$YQZ-8E+q5Blr,,R@
'i"E%&N2[maeGp-E'S5!QP8ji&%(Ljk9A6MVbG*(AB%dF1XiBF3!XNjQkVM+!#5%
Jm!$2&+jLjb'"0RXej8D*j"#[ZdFdCB`Af&hH%`mDUaVdT18[Hi2"f'AHiSi8Dci
lbN&,'XPSd6NbTd"k8CL!&V6L)$'lGB0",4PH,%1YE&Z)pdim[e$')$'8Tc53!!j
kQM1U"D4iHf1l'@m-&$CYEakQC'21EaQCP"9UGCH&+f-cI6cScJ-Ej#DBHRTBaVG
FLcA8fbdZ-em2FFK`dYke1LGqLe%M)SN3ArlBl5R1BjqTYaIq2d@V@+SiR&)HZe*
hZb"864A&EIL'CTmi%b5hc"[jlP@6G6US%'CJc9-JG1iCcU3imHA5VkDLElf,[DQ
c@PbmY'F&8EiDb9C9+"DKbc`3M&$lrU%q$QrAQb"ADJ88*J2"F"@dYC!!cYXN#dm
e)#DlFb39G8i6!CA36`Y"&Al"IZU&Mpq(j8,r484GV#jDC"Z#bBa1,%,SGaIP!S5
ClAVc&SIVMNerZjcim`8p*@4$r+M4p55PFMZ52XMPe!TZi0%+"Z))MSU9qYlhL[0
$IJPdE#0ELNDU%+'%C!@&1'FAhXdfBL&ZHPPC!bUhBZrcH'TCSCr9mC@24"l9f-b
b6%18m5HpL["0'pm),8LLlTD)DDk$c#26`UZ*('a!!4P3fY6)dX()-$$5dXJe-"m
NdXJf-"mNJEJ,1Vm")[Y-CTPQV4&Fh,3'IkF)($N&c`p[F9UA'M5iANMGh"cePD'
YZ'ZeZY+64fGD3B-ee+0lr,c@'F`,&Pq`QVSq",bZY00K@l[IRGj+)dS'2ESfBY8
MYRIQ$ka9qX[l0#1#jE-lBKcG19@I@ri[&mH8#UJp0`"C!'0c2D55mj0*hFAarbX
8j!3EbMlZ,Pc"K1EJSZCY$9NDd#G8L'+I-29YeAm6Q6,AV(UJSr2UM#6Ua#-d22,
'qrL(DrH4IT2LhFkcA*eZ-!)dT'B`drqrB)3UN!"YA$NC(3#DFfd8f[cr5IR41b%
qGcS`m4+hpk@YQrM4D`Lr@iS)AVQjb&4JcF[mcmT&6$U2950LFA'(#MFl"l[)M,$
)@%YD$5#&F-8Yi6i5mXmEEFijrZ+C5%fB!NK93`-m&H['NKp(F$!KiMZR63b!GU#
&V$HG2qFNa#B*j%eeMIEZ@BVB6(Ek@d'+pq%1S0ZC(X-X9UQNJ3cQ,`24J-9[XKM
Lpj!!9JN!SCZNHFiU2%Y)DdL-Q8%R@if0T8,D)010E5dh+@ddf3SlE@Je+QejS"q
`T"kckmb5#5eqi04bUF&FrHUf5N4cBeCV-`!PP&kip+&HfC@8*36,fV'QAZkaAUc
(S16f")LYpiG8VY&q$A1RaCf1d2Tj,STa('cEf@ETQ2L%YTaF[VZ!cTS5Vj5L9eh
Ze)(8ahpR$)kK[K6X-E3rdmrH1)Ne&5k4p[pq#Y81+*&3hcplX$DpYiA%bVBbj9%
00FH*HF1JeepS3"K`E"C6D63![GJFpe'9eJ-Q2)9[D5+Hhm$#M2GEY([5#SD4MQk
db+e&5`+Dc$e&fH@HAp#+DQ00d4PJdicR`fplTQf6FZaaSjl%Tr6K1+QHVhf!VMk
CFqmUi6FQ#5(fjZfr3'dE+a%(+!-fZG!aSV4bFm&5V#Ek`UNhJbF!k&M0mHr'!6"
PM4G*[GqSJdb9pDLLl(j)CGZIENN,([+G4aqU9pA'(RaXJ5'QU6j@,SMNMM1Uc(H
+V(*kf1TSHIM46+h3%T1%T6E2Nq%+ZkFha"kJea6*l&5GXCZ[ZiN@9"2#H6VTABU
N!Sf(e@XpDJ`TSqB(b@1"5i[$K)SPU%58`d@'[i1M+1Ck%!Qmc55!@9d'-)Ia29J
KeM6U'3C!R9MXETMfhj[0+!bY4'A'fJ[V%!qcp43a3$(LfHehRq*1NFV#S)mb3%P
G`PDCBSbS'K8SZHZ`k!'e93d(I`'#GF1fhMJ3hb34mql08,$CD5,G@#Gk"TiPB@e
e%+H,F)%VeGfhc!`Z%e[ra@9UNX&b5l6cZ58b19p#,j@dPD8pd6"ZTm[YaDaK8Ej
)1URqH,0db26DFR(bA8qZXCD!j#,+&*X3Yb+9mX`ASiTqrcB"k'pr-T,)K3GBqDc
8BGqJ@6*pCMa'k1)Pl#q8%c0$qXa&AV"*V"RHIa8l+KCGq1-+LlGTc&BC1*!!3f,
DTmS&YFU4(0&9iJGEhfm,FRJTH@`!IaGSXMU3!*Y1R'PIQp$a)&Kk&4+JRH!aE++
4TmR)K9@15pkqR-@LI0pK1m1iV9hrAI[L`)X%df%E,9&"pkpJ8E0LciN64S58Sj!
!,!8jeXe@[)*1TM65UpQaJPXlAPmm%Qqa@6M!m6p"!*UBK8K$lPEYX"8dqfhP66Q
pZaE3D&,ZjiZMZei`C-Lr+pU@ipDA`m$SI&rS('rR5%CBh6,#0Qra&8#3!-F,Qd`
d"1)bCFRIQKqYFU*-6HEilh,M#(CY6"P5AS5bT80B1D)-+@Z#N6k0")0m*)Y-RQQ
AD&eC(CAZUFMm%AB,*X88eSec$BpRc0[%2(PR%qaUK@8FVaFFRVEY`8RRN!"LmS0
RC206JEV!r,EF-BiHEq+TqXX043B$6T8%j4'GGR*&2qD"qF@8-Sc!$(JG`)3le8(
KV2lCJYC88@M!JUVf2UI'EDCm#fqq4Chm0!X(#Z"ef4qH!FBadBT1mlIbTSCh`6&
JMGCMK8*$)X0![2m()SZ)*f`!*B&j&9%6Uc4`HH#chb!LaMb*iT5(j,YAZE3a`G-
N"3jdEG%a!lfl%hcMj)jPaCLGRk`++`)qiG@Y&B*-JY3MIJ&i8pj$19F1H8Z)(m6
,4B'm)$l8M!$RTqNbCl,i*H`C"p`Ec',Ejp'a++@j$#a`5@$)VkdJAZVHU0FDN!!
bA`1693APDhd4SJGB&@KGHr#9bI63Q9dLj19)[&q[ajE2N!$QXp(MEm2Dh(19,1l
62U63--JVN!"qbCNflqad5XBc66XARf6FE!k)AHQcQ2P*#HH"llSiR6RdZLKEE-!
"H"J#LF('edH4ZT)kejVc,da*8M1*kVc3lDP!P,a!H)l6kH$,3N+FjjGI6c'TI!l
M9"mqYF1aZAKbJdVBR*&4UcXdpUP2hcf)3`-DBCb!LA%pNd#Z4U50p!Qq[P*ab)b
(`iTU-X1P1qY-'jG"IJ3VT#GTqKP*EVcYpGA3dp+,AMd(C`FNpm@h4a'29i5M*c,
+(mRPZUlVE(Dr!aj*5[K!iS6!$i2`9@S,jdb4eAk*Q%d5(cl1#KiLm(("6LA,q46
Cb12Ibf*Q4I!+`2$!N!$2k3IZD"TNL5hrp8ep[HMKFF99NrBfEaHH@AM9G3NEmpJ
cEc9NC'dC5"%HZLP6p*Gf)pj%%MNB16c+YELb8'R4P(9m4cq5ph2'Ba2heVkGM[9
L@d9YdI9Y(M2eiZJA6(l!jI@!0dLa1%CcShF&5GimCGeNk+[#E3eLAHBqGE'A"ck
@ldC,iiJ8305JB,"YJXZ[1XQMa$dTrli5@Ia)lR(8Q1013D1q)kBE'd"Di`'cZpB
94q5p)pT&Q$N-UID8%A4#p8MG4Mp,4pl(E@p-AA!iUPCdcDBKr*daqG8fGKK%XF@
3!$ZSlrjPLJK5D#TUZ5EIG&CVIJ#C"T%aLSI!JQ+i8R!ei8F0),Q[ESdfaA"$Mfq
HLALE`%X+m!Zb+p$Q3@`cFHl+RcEiFak2Yp!CMI)MhX)a-q@"4bj%X#2MEK0(T+#
E`VR!Mh0dA39V4Y[Nq)9@Cc,b",e6j#*8`kc-F93QQcZi"kSUAcdTE-Vi984853N
c9I4mjpUC$X9"E45QjUIRjhFZ)J8@a&0S!N'X2YeiJhCrI(FAeC!!Y1iK+VqJjHr
T)+&8qqrhr9R&-rH1D"2m!bH3!)l1(Xa6q"VeVr6&l[iZ+Ba9Y++2k,Bc6,fcaAr
"52@4e*,[S%0r+#&idJ8SLAF!*C!!Hl'cjr548ddC0fDYIR(+%V'cX[IAkCXB4c&
a!R[cP638mMY)U-("JI@cH5mepFF%2Bbl-MR3M,&YSS&)2R4mkid6`fM$&SQ4Q%f
maP&L&&$lhePNMeD+8FbPI1DB!Fm8d%jNS!%"p[%h%M'E"-6JPq59[f*KE$3eTmq
[m##rG"ipcea3X$`P-9'q@L`3F,pdP*'"RKD'N!"XL4qAHjJqC24j$SJ&pEIjH'I
qaRL0a"'K0LH9jH5K,UPdD0qF,(0*6fcTpjF3QZkAMrIL*JhaGFpqQ)ZX24S+F'T
'J(M6Xah1L8'&j&9qf[Q)apd"3[[f3HT&[Zh(ZUjm3dlQRBSLZkLZ$B0&LB05J6I
QLF!I+(q1jPfm-4im2ch(bIh"IIpN(K+4GKE4XhK2cLpGDPRlI(JrVeQ+lSmGS2R
@br%i(!XcLJQD#Tc0brdc+&d*4Z*!QZ3PLVAL9SIrapKr$ehL2IIM`Bd+#`Z"Pa*
S&@)[D)IZ1B38emYJYlRB#kFC0HQbcI0+!5A1G@4I4$!UaSk!S*0iQ-'I3QdK'3&
l*(5)M"NV$Nc01Mfc3TGYppPN,XY#Pp#GN!""q8FBr`Td4*Zq%pK$8L`2)YA!Z5m
-!$fEH9`*3%!%`fZNY'XHdm*!A3HS`)!FriAE8#lV3)!()Y4qDc"@pXc6)'%XGEA
@Jm,)ilSCH(36-$1ELdB"*'q*GE&LNX0R*j*RqARVN!$22I8cUI`(8EA9(*'"SSQ
!V2!3lIj"*RQ5UeIQ0"A#FXZVZ+biQ2*rQLT2Fj9hU58TG,m+M$l9k533"a9hdHJ
@'E&ID0I9J%Cc!X$,i)BSk2mHB+9fr"D2NjJm$bVd%fmL(Vj6mj&Aq[T$i25"rrI
aM'ba+HS(pR@lk`Z@32J$#Q2SeLe#J5XY@3f+rPY-+@Aj)Vf"*cT#cL9V2G[F'Mb
JR2q&plI1ai&4kbDbC%jYKa'%4LaGYM&q*klVqd&CXQdHHR,GfF)B80Z`4p(&ULi
R-N"MMIlVb'K@0T[$L1Q"d-4qPhIj2Dk&,jVb,a31+@FYb21'4H"T[qe6idCQBb!
c*hj!5Jd[iVmY,)!"U(X8(k*#pBIT90!Z,+mVrMd608NY&E%$r(TI-cLVd4&aPF@
#&1S)(HJ-i#hj,Z9G!63"'G"CPl8k%b#kF#Zb1ch3d8,GR$aaYF["SZT5ma#JUKL
RCMPQS'`Ih@0Rhm%dU6kqJ-9hKc4X*[M,Z,PN!"Sa$V8Uf`ZXTlLjl6U6cT1GfEM
LP)N2irf'+5cN@daU@A%+Vl`V"!6qXHJ#F1hc`'pb$@bCR`3#Cf)E`D$iN!#[6j6
VPfc0DjVF,S34F++a3LHZD9B-@4UfmHJad))%6(HU6Y-BJG2Np'-T4[TlReFl12l
aSVfplmI(9D@U+f4%0-2IDTlkjk*!#hB2&UbHXcFX"S1Sd,*@)iARdK1R93GL,PF
4[pr&d3HmF&-Vi82Vf!hdr`),F#39XRr5d4QG'TZh1Ti5&FZ8&mbM#A"&X-Z[SKq
%deJ3IKHJhRrGiK,3#NQP,*D3!#B@$cX%-jJA,+RAAlq`Yd,@$3V'4Fd2$pmaX@I
DNXS0L%60C#-1+9)"j4-@+pMQ9,A['m!IEUYCJSUM(Yff9M-+`'eidqBYRPVBN!"
ZR6BlD0FeYj8[Rd6T&N5YfKYZ@i2'!8J6Qp"i6N+0CfkRM[B&qj*&CdI8qEeQX0%
$N!!6DPK'eD(hcP(,ciM'[pl8De!LebI@23jET'2`k@4,#Pc#lXXHJ!`1V6,m8E+
BkU$i9&JV`-bjK&F-i@J9,lJB*2ciZcB@Bf)LFM0,R[Ke,k)0[L5PdJEG6I1F39K
Ei$#",RLi$d[8l4-@p+eVj"`k%i%P'r,%Jkp%YL`MU'Gr@#3Ep3Id)b1B'l-&Qep
a$FXESJbkVXCPSl-8hbi0L$@pGrPr!%Ceq8fIe"qCBX@4k3MHP`Ka+(8Y&!0iLE2
Tl$Y3,"ZqHEP3,2)T&6Te85%`3ES'0P$@@0&kG#b@YqqQeRN$"(p2AP+10kqAjA#
-Rc&@ErdB,RQBlddH*FHahZqTAA$G$%q406i-J',PGY,UNA@peE!Va&0P!P66L1r
FER#3!&lNYLP2iMYHJlmmF42ZQL$AKBTJ3qBIKNj#[3IfA0XdV"bjmfYLYkHjADi
#Q(AEHJe#!CplfV)B9UYPE$$2RhX*cGjjbhiA8Bc(!*5+l`+&eEZ1$lMfYfaqk3H
iMH@RN!"YP$c5Z8`H`Qh3C-H4'ArP-IeXUBqX2$8cl1R"#&Y[STmf+LeF!Y@DN!"
ICYk6Mj&ZUE5SNKb"6S@R23HXl#cr',RMBq!NJGA`Ff'k"IH!hHMJVp"[`(rJG6f
$iDJkTUNeMeRF"JQ96e(1LGh@kHPR#Sib`HQS5h(G[+QT-@l))'@4Z('MelZIT$2
diM6LHQQQc+%'Z3YpiYrh(UYXeFVNJkEH-H4r"f2+PP,GF"cacpF"lN%R-aQmJlF
'lli5e&pr,-mBR4)4Hr[d*5@f)ZVJrQa!B0l2*SQ2)Ydd"4(4*(i'RU@R9M#l@5!
M`K5+2"m&e)!@"VFaVkSP0[$LRlBLL[#CZ)kYlNK-k@(fUZE6Y%F&GSmBL9JUPbT
XJl$X)IBFPE@MCmXr(ZAA(&hAFR#DDm#AUPVKcN+JG[hDb%0E3V)lS,dX)EeV*f'
m$+26kq*6#Vl0ccD&3GbqmYZQETrSXVZPdBU'*b6#mYGd!remi4-dMikalCdml20
!lVX%jGh+m9R[20(`'&2AcQVjIr1MAIQLX#F+U5pr#T%!X34)%9#+q#3YL,N!X-c
BhhE'E`USjqZIX*E8V,qT([eY3@)@-'qcp4k&eQ!bjdYaX#AaE``HmMJqebG+P2"
V+"VE6ibQ6l,fa"#4rKf2f'BFE$XNA2HlJ%8*CaVck"ir%MI0U5&1mi*64`4#4dp
"8&1`E5[(eIQj*5Ejc$X[cp$+l0hk$&qB3bd#Q*PU!#,*aB&!F[2D12P2D-0Ni-(
!'JD+8+9BLFQrii`S,N#eG5ZVL[-'d65($@,6E4C%C%4r4&mJ6X"deeV4Z`k-!ed
QLEYG-2d5JBbHG08@c@eH,fA9kJ8952XDb"bBj3p%R8U5lb8THRj-GAV(A,hBVST
X$G[ikdCeELK+ACqB5ANI*AQda(4QE*hKd,#cZrG'NC+UIqrSF-Djp$8[S,1FfVR
%D1D+e2rMj8aD"TX5(aAN3VK'N8A&G@Y6lETqQFj1qB))0P&*MYPc-BQ#QkqkkMI
DU&Y'rMZ&h&N#a1-M"Y+U*SP[DAR!3)R6%!"fV%-*#`@PPeq`e-Qm9Jkc$S3T3*N
AAYc#p98Ul6[jF0e2hBY&26"QM+8J)jcJ%E"+d@#LR*Jl)hcrp+R!,k(M-FbqE9T
Qd1A`A8K06EC,MA8NVPCJ$lL&#Pr3XTE[F2Zh4bjRBTRe,l5MqcL0@5m8YhB-!DR
D(QhYR09pcqGG-fF!NVPA'8bf!M38%0S3dNZP%HUB4lN5pkKI4A3')iGkKEkXGEf
FQdJcH+*3hMV$Qe%%8MC55NhY3bcUPKJ5QLZ48&Z`$1d%%"Te-$U3!*PTa+Z9c4P
*1NT*R-H+HTHX)FFmmq8*cDI89K`DfpU@Y&&0`ZR!V8[h"H,e*&!N+T!!8'ArC*E
Y'VRqb'a2m#lJLFCS"Ya([`q@HciLm8HjYLKM&BTBR#E!6IrXYfDRc)EdiZmfG&Z
-q%U&ireYmKNMFJEi1Q'Af016'MR%fC%cli+&+@'A%8Hb0bLFRrQ3!+*!D)!')UR
Xh2QNR%!M,i,[CQfZhh+3!21imRbUCJBTB'X0!4Mk1Q0KhLFRL[UM@*`S)*(qVDZ
Jm*irjCaeqSYdFRKh,2ZBpbE4(XAMhRU"e3#)0CmSM(*5AXp8ddJP""25r$h'SKa
iJ1lGqJHaeEK#kHaU061kSPcp(S[B*@)NZlhmUINk26@#GkH(6'1`jfaC20!,VBX
r*amDBHKmcC!!Lpp8-JjG8a5mQC!!9TTkZAc!%biU0E)kNr50JRQUh5ZIQ&CVVeS
V%'")9qr%6[VV$RLR(GaCchbaValA`@"'jAi0RR!%6,qYQ@Uej+8XCIh82eJqBaJ
#HeaaGlp-"r5!$E-rC"SNZJEKe*54+#fGibaHNFpD"''VN!!9S&*[R8*2fRaL'V2
&k-Amh@dlZSXe9Z$fULD0QML!UAilCjBd4M2m92H)CM%-RIGbI6T5kE&&XlJqFq#
Y`F#[9Z1YZ$h(1*1+VTF9*%93F2DYG@,`AKK)RAAVqTmfh!Mc52iDMh"-+6Zc',6
pZ%`!#e4aV'KS9N[LC"+DGB&Mk!`k(P(LY,@-1h'd0T959LiR03imii2pIY(ljG9
3r*)(Kri#cApA3(RDl06B3rJDK#4fV-I"99k*lmhhCqdb1)V6cMBpq%S89JYLa1h
Yfc6#IrLDj*Zb9CqqQEDTXr!9%R""8hHB`aB$$#+rL3Z+#[%,PGA#d)GN9,@G&F'
DUeLKArYS4&,(XriHX%$E")J[Zp3BcF-A&LKqZZNAmeE%GAlYk4Ji*r41h5BB!ZT
-"@lD*$VX`Y-61fd(lK5k*1U5[X$El[Xic)*R4EAU$9ZS84CBYjC"+9aa-aEf'KV
r[,FX,01hrIXVb,[aX-r@hDQJJTqbYK*Ji8MU@LYIJm,YRadF(Y0Bp&eA@*!!ak!
Z8'[#(E(GIMhQ[`,Y(X!04UQBCkiBhiI"lmN1Ckm60BhkcTbBChf1@qerk19bEj2
B"EQYJ!Td,mKmcfVhBq&GDijk[I%BSl6dPSLB@*r)EEY(@3mTp2AJb[1GK"(j95Q
`Fq$1FF&&(DHdTM$,c'$E!Sp8RR!LEN[[#BhTbQE04T+(&mCr*kDpE+3cF$9c-*m
lUNRkeFf`JM,X'PCS"5RdHFNABFi*l+TNXKQ*m&EP8-,0KSNV+PD-&e2$,be15Ur
3+'fS144ZP@rHP*9SIi+XC#bEN5UK0`K1!D`$+THAKREV#pPVDZ@fkj1BPq41X5f
2DNAB`aiCe',QjDF9C2DEYcmCEVXa'PlR!iZIZDm'eF8Hm@GkhL'PfLaCY%hZ8ek
MI$N[iL2Rr!3&pGr%RRe)fZcqA'#RY(Qi"HY"1U"#pMiNjC2N#KF&RR(#%lckD[l
`c++3!1r[m6b9'Effp``'3bm5QicBe#S"Di#BhE%,%Z1Q(I)pe$bKMadK,HfhXX$
mq2-XZG5YN`NSQDr+cp+D2SDGC2FBcr9HZP[d)QCQIV`N0!4HqM!cQ)ScZ4$%ASE
,K[FpbI"(IU)e)dGJ81RS$5NqdN1Kr%PBRAFV%@3SLEaFYHc(F"5ESd4-F1$NL[h
)P+P[cQ2ES4$rH`+ILPr5[QSBK3T5%P["kArcUG"fU#TehErmV[2C-*rCEJdiX[B
Q1"6eGdBkM"cpe+&*(@qbB`EY#RZHE$%iRB`E`KJIe0E[XIEJKAk%K$"2)IdYE)q
X-VF86+T#`[dHH2IaiiHJm&SB-8dCJBAk2[!SS!c(N!!6-'+a@Ep!!2&j5Q(BS`S
X"ZJG`'Q"Zk53!"BmAQ"YUAX$m,@3!)ESHYYhjiJ)KVmj%C+M2P,bJPA`+fC$4G0
55IGN6&p%*1FVl-m'NF9R""YP4Vdb$`%12k+bl%@[dl0J*M'HMld%m+qEMAV$&[M
hl'H8XT)I`H,VE&43!Vi2"iQD6J["dim9M$Z9NAYd8--PEB%Adj'"lhhk*,hJ*`(
bp8mJ@JZN4CU$ZJdmD*U5iAkMZN-MrkmLGibMpP`a"YYcK8FdUaLbCd15dF5AVF'
p8dapVJhcN@T@)4')pE0rDBAG@a@*YCEdZ#p3V%0-)rR@l#1)RD1Ia@kb`lI1F-f
cAQ6JfMH-ZIM9pXN92)VP0Lqar$p8'i`@rDSDHQ'G)j%dBGU1+8XK%[NcD6G4ikA
a%NG'fB#j2*B6Db9(hT*GD60VKN6cTrQQ"ddh$ML&NM5%%Nm5f+#$L!J43k5Y*LN
5E4[4TM+cfDjpcb@ipq+&NQLG"T&+(Hrq4YXakE$1JPcSATrPYKCYVK@q$kP06Ph
('0$*24UE"al+e,`b9282'#Lf`3B*)`r6jB1QZLk5RR#rFk$$-[kkIS5e425+4q$
Zep!@'1UpaV"B4#D#amFl*Tj%kkV0+[[Ap-QZ@0#0q-Aq`TJjT,&$APjp3ER9HRF
VkCKqK@V[Nj1C,8hk&QTkM`AH#EYUjl@(+`M@1)CSYED)T"YV69AcY-i9bL+p)bR
jdRh@-Xj'-!IV1MJ)PJ1lUl@XRPh%FYdq*G41fFm9IFBbpr1F[m#pE$6VJ)RrV%1
+-(MdM(QG9eJ!cPAcpC6%!hTb9D5NVI,Yq6pBF00AF%8F`q,C0EL9Hc2S,lL%l!4
!@XB[d-MJ$)bDTpI*PAV2)5`"[TLVC$Ue)bdYIZYNeHB5e5rLTGTDD$A21CkSPTc
%Y9DHQ'p"RU$a#L&pDSP8pKL`)i1bdNB6[qF9Y5Z9$T61XSI&KA[mHa5IXkkYq,!
T"(aNYSC5l![dH`rp0!$GfIl)GIXQBkYcUlR*S4Q6VmN"m*4jV[Hq6AlGlZYe5SC
qrkJBRDh65MklBZp64pDLMbi4m(%`Y3"'DEi*BCb-mS6Xp@5r+5cl9U#YNIZZZ15
bY&``YHfTbAK+lET2*(3rGd@$A5q8a`QpTLbC)S&Up'rV$Jl%qHj@$M2GHA2)`A*
5&U[R,bfqPjJ''L9#ZaTaUr0'95f19VV+d&V&Fq@YV1QS4V!Nm$Z%Z&&iG4'cXU1
EU$$F*@J5(F(8J`"Z3'2FU6%CChBYa8e240f[eG6,[&J)JJXH-)pZmRDGqfZHT4+
UmRidGh45H0abfeKD%-94C`a&f),,Ib,5HeJYS4,2XKGH%Y0hSfd52J!K*)'ajNl
f6kCH3(T0LAEQ1`rKAH83C23&H[LiZ"&5QVS5iQ'Q+#ph41U[a$CF`(fA33dRPl,
'mmErG`kiKiN*)FHZmRHQ$IRfG&'BXam#brBAI&N,H"X)@,*hZFZR2"C'qaV,F[C
E!&%ZJbC1&cdDm,1V31"UhV`SSkKIG#fL8ND@l5PX!Z`1DXqNcpEMC*3`b)AE#C)
jlbQ1+LAGFCH-(TjpVS$&,9'TX!r501feq3mG4P'+N!!Cip*fDmTJ$eLdi'c#qp%
[`X+)%Hh#QE0*B*NcJc3%L&MS4Y4q-aV"ERCJ$',j5`YmLR-+GQQ*+'04eX-lG9I
Af3)ZU@eMjTLq5Pk[lD`[mEMM5Al5La,Dlr$m$)2(%99iL`V,QG50[rM!h$%$3%J
&NP%i-KqJmI(J#Qec*BN92aA(R0FDe9j"$Td'NLZ9r%f4JY*Mc3dP-N$dcD)0(G1
)BiU5IV@GRTf'$c$THK&14@-HP9#"H3-2KIXi0!imRIU#5jiUM)qBr4fZlU&EmZ#
1#54+"N+*,AZQT9aPH1+22$4Y$,K8(AJ&ZLh21k3$)QCBPVEN5`"c1UliUY1B[@q
Y*pS9Uch1jmd&Z3T*EjX)K01NjC5Qj3Fpk1Li'QTc&UbBcRAia!)"6q,93Dlqq1@
T9K(ihS)dP5NF-!QHAXRb$PKZA)pP0A8M$Gk`Z5M$Q@#*N4f5L3+F0JYXrKL*YqG
qcQH)MmIYppNV3m`dMP',Ar$+T3T5[dmI`hdDEA8&dbYR3@,F0[D)0bCJdVpU&3k
$(d3$1JRllPkF%82b#PJmDc2UT,P[qh8*@-6'R!N2HS[+`C2ZSMZ20BF&`)j1Vp`
8#31JZN*-H)RpcHD44(d(h,h44Z1'UH+mS(+beF,0BkqLQaJG'4[5(66Q`NaMf-F
jf*!!hDBP(fA$T*86VpAZRJ+IHd@Rq,'L50iMjDpNTKqD$0p&D!Gqk4C"""ricK#
Tqd4&UC-ZiQ!&C[ErfmQJSfZNSqE4cZ`!J0Aif3J$HQfm#IET`YYNaKZKKK,4JVV
j(VBR1bKYNBCE6V3$6"Yca!21IbTMEDTk,6SCXXAqQa93U@IiNEN@+NYNBY2UN!$
QFXpG`8amQ22-aFKh-%0@C[GU-i",XKhbTj!!M"-QTik`#k%*X*eYK0*IY#%f(hd
!LYkU""r$ETL6L2cCPDQYE[`*HDa[HdIB$,8lJK#``V1!M!DM4brM$1@!mrJkQqE
i3SfU&S6S)jGrGkU2)Q9eKeJS"9q'9#[fUd#R&*LZQMMA)1j[`ej$ca1--BqH#6*
Yj$[8rHV-lD@[0'P(1#H-B*KJ1CQM[Ye9%a,La,#VTJfDImNUdhF%RKQ0l5T#K94
i#"-c&de5jdfhfNK#'#58CIU8Uqh$J3qI`mJEB3'@NbR05Xa"Ni8Q%3,l%a1'Z'X
-%aaKN4h[b[8GDT5D13mH0p$e+@YGId(1&rT%adpmL'a!&9M5e3$jSCJ[!)*dmjk
fid5dU-8d@bcJIDa"rqF'0ErXH-6cl92l-UV@qZ[iK0kDbr43*d(ERJ8I-qaF1U)
'&rKDPUGS%2ScR#e!V-&R(S,I%I+3!-mpJJ[d%pH%X-*5kKV9I%5qUfPM2L4i@!0
)HX4Z[1UV4V3j&3IR+!&K"#'('4rDI0XkqirFUGDbG@EFE2hjc-Uc-GQ&)-+R&le
%i,2KBr00P-HR(S!IA@Ih33bSXcF1(GD6jrTEB%9EAjDKieF1KRG#FB`Pm)+9!Gi
$C3DK9A`$lbiCh*dJbiqZk&e%jVJcY9Iph4Peh0liCm&ek26U![YKNReCZ,aKa+c
$F@qdZl+dP9ZK2Si20h,eMP,6T*-*rlbXlh[%,3qE'SQjNV[L9JI"l8!Bp3)Ha*p
3mJ,$,(Y$P%0J'&"lZhUYdlCmY`5lF3(jm5%eE8d#$bM286F)Z&4lc!$G&bQ3!0U
i+bCUk%T%am1L[c5"b&K%A9CTGmNfCr,BNXMlamGSS&q2EX8YiMPV)KhCc6)S+ZN
4+ed&N[6c88RbkFFKJ4aJ8%&BN!!*r4q9YF+A3*R9#c4rAq5VMKK3M)&pb1&UL36
+EA[0"!1k6ERZcLT1Q1BLeA#(l@q5Rq)fFFUDkFVa3GDJ*f-'9"I4TSc,')dHhZV
Q19m,&C8+$($1b[mci'A3EePBe*CYR0E65q!aB6RKjreRP,`bYFTMXL3fNb5a%rP
63*6ITPqXMYilZMQlBAN6$J+&lYDDmdE)i)aLDf$,0+SFlhXZkUmF$VmRSqLLAI1
d&NcJb$YCS5TREDNA8p5lLb$(`pN(d9VB2TK3VF)B[1e'5*G&`LIlBXpQV0e"FDY
fM8DDFL+Da5Y65J'S!I2M(3,AUmk)0-U'PmG'QL())+)`@69(%&bGa!$kFdEfD+'
[E,Cf+VKM,l#LB@CjEKZJNYdRheFm49QZ[89N"!G1,k34#*eTm`Q!ESX5iFfbUkT
UC,hXXU#YlcGb+b5kQVN0HedQVJ`C6T12c%Pb[2`[JI(!HiCb$M-8lG'Lqlk&+q-
,iL`)[Uq3!2SebdlehP6Ci#PBllbpCF4ZVhXlX0+IT2-@2JA*['Mm(Yre2XjR46A
di&CXq%jfmBI3d*FTKApC@JQhDE`022Lq#ReCGpr!NXZ4a$[d&ie`aH&1VEedCJX
j%)[RD*S--J3qpDiZG-a-G#Z(lq-dQiCTQmC5H&0,S'6jR16Cc"$0h!2cmVjep,k
!B#d!X%G5qj!!RIQ2+4!`AYa1D,lA6i2ql6Z[GN26"`qMJdVdd[G!q,4,NiZkqjR
EhrI3f-4&!'JcEE))1+@c[aPVR@jmhS$)PmU0f1)Yk,5lI+HKSI1C)Di!#$crT!N
VQHf!!')@2mS,)*bJ8lC[+cYP1@-*hcZ0PV1'ZDjAM*Il$HFm)NJ6!qdhLdH$`q1
)4EHY[$+S8E&8QbE3@G'9&b`6(mmE$kfF#1V(EfLHHKUS!Ch($%)kTl1!+L4jEBb
m2pkq9#pLSd(h-KEI8i+i!*!!V#M)D[q-SK2NNT%j2bN-*-D-4!M`m,ViTQMk(T)
@EcS8SZ$l#L)f0"Z15'*`K3c-jSBKUERPYGS04,4Bl`GYM95`@SS0bV$%Pp0MIIX
9`"hNY,6(`L#'ZAKLPrlE%q-R9ejm43cBJi"rBVJ$@0rl%56K%8!c$Q*rrCmL(Sa
jZdrSq58C4(AE216HYVJl*00V-f(#hJS!59#f3"&DRJ0RdHAiEkBH[kKr)GENX**
14pmal8KUeYE,pH'%4AdC1SBECUd+'6'idlbNCKMj#UY#f5L$2MXC3*M&&-HNM+2
JLlP8q'hBC,1Z)Hk0(C-[*3l'`V6Gpe`hLEmi*Ah,QC&Th8*p0,(d!f+im"VZeCQ
#8`"hK&&$bE5NC[FG%r6J1V)VTUS#GeHrlamhbh8krZlhAN+6`m9eZF+9lm'`m#8
Eh6e3NE!J-ec++Zm$,+a1i(2I9,YTFLlhIBK41hi3NSkQ1C`@d,B1G-4F16(41"&
N(-L$kd"Kc6A4!JmU&QrDEMXVZRM%1j&me)S(*-lQj6'22VCA&1q,3TRmi+qYd`V
F21%j8eF['U"q4)Jr-$b)VcPGhI("hSNdaE+lPQGh'bY5L28$&e4*Da&Vk"r3Vm)
IEi,#i-*mGfZ"!"2#BkFimh-HDpJEA*V2(q(eEi+4afDDU0"5V&555IXZ)22Hk9G
'@3Yp#FM%hH#qpBhpmr@HJ"5hr$&,[JrKRGl0[[E#VADYTT6SCh@0)3l5p)X`)Nh
QZ%Lc(9[4q'RQ)JfJD*(e&l5mEC(VN494Y(IIRrqBE2!'++ZX,-i4HVZl+43AmAE
QN[*-*3QBTii6*X'M6EC[X#faMC'lf-fB8E,l(5LL+BiI4cIjP,d04HB2($Kf9QZ
-I'FpBCRd2iBI*'NZYZd#kIhT4e',hp-l%['Q25*3iS!YdRmP-K*c1@'b3U2GBMK
kp4)#(F0U-6FN48q""NdY*4+SJ,RIh`Cld+%JXpck0+RmjdYG*1"4"!SfSV"Xi$T
CSQEhPXV1NX1Z2Y3DVDKL@6%KF$+mZ5CS+ejKl6pemS5)IRS*)2Q'kU!i3*iBI)q
"Ad$3'e,DAV0G6pKd2,Y*1hd,1JL4hG&aUiAQ@Ik$r""N'0e`00FjBLB',ZUKff6
rIZ04$GEjR[F6-U6`eRe&D@!p!R)rQ`ed+"#,LA"3(lCEDb5G1+PcDXPab)S99PI
4%c)CT0U9`0Rp8*2,1$$h,C-(I5@DIX@YXDhRTP*LUIj)88CkJPqE*Uq9bQ'@R#P
5BDZDq[P$U)IV[YDFl-IFamE6%F%C#$XH5(JG(A*U3$jffi4Qp&i"VUdR3M`ZR"S
0$hcQjl#j'(i*AG`TLGJp,EZ'DY*p(UHe,,G2CiU%M&Vmq52&BHpm6C3l"I!UC2Z
,h-2ULraam+[j@,2Yial`rKY5TPbh2iJmmj5*Q&Q&Q-KUL(%#rVY!q!rFlE1-+8E
JfMR56qM,HAUV#V0L[X80Q)iHbR6&Lic'PaQcQhDh`k1-LE*S[2!Ce!fh"C+b-Vl
D`B+)$1dRXhGbX5emlXP-GJiqE2kemp!')U&HJ6d&SVLPL+M53843kH+RIf+-e0D
`GTR8Q5[VK(iFUqF,+$i109##caalrCkp1Z1YPlrVeeTcjE(K+2L49V2"lh8NB!)
50VSGUFCITbM+Y'dI"rJG@lA'ZaCHpJX14AN90lA(4p2dUf3jD9PQHMERd13"1X#
pLK[DSr9H%H@"jPRD`$'c10"(49EGGISRD1ipMb%i%bTZiULjZ5MpM3`5)fV[L`M
JHIYRrRb5ePS)kk[IDbA[cqL642G+hFTrFE9M*5DiG@rfPUm+A*dAS@TJ'ESamG9
JN!!0QG2!B6mZ0e856MF%eFA3ariN3`YTa1H*mifLLaaA-k%klC4f84[DL5Ii$J3
Iae8(1je'8flKAKZ8U&&mRS$QLNI5![62Ve,6l,FhkQmSBB6A`SG94GC[Hc0EdqK
P9*eJL$(hf5(fYfbM@DfIaUc-cT(&e&F+2GAf4&YYbF0EdqF!REPfES5@@e3aLUI
),DJqSZ6f!Ifkj4T-iqr+jI90Kf!&aZJ6Q#8-XATBEla`r94G%hDlXjSF*qUpAF*
@`NcM$,XX$I,E$J&K6[j)+I%K(8RMh`GArPeQYQP56%N'5[9b$l,+4h"l*F@qYDZ
2Nq*CZALqG,TY#d9[,8e#5PYHSQ&ee(&IU',1K%V"%kdBYULEm'[50*Y1Fd!4`F*
afjM#R0JLY0YIie+i2e"3h0Y6H[SQ&M"PqPjPe5*SR%'PlHDX,%*U)8&hGf69f4U
r5+2&NIS[$(UM%&mH$%),D8V'q`rr+"r2[jd*G'41*DILhjVqm%FcNBmfLH@45('
1kimLUG,+*MXXFP"8MdCYki(c81djTFZl&Icc'&i`rj0f3TrCrSBPX3rlQijL,!S
I90Zk5XEb)05h&J-A21jiRAqTJ9l40iV(+%"hJZI%m#I1Hb,jm-VdCpSXGf[LrkA
Y[e21Q8'"@)YPQ"$@[1KYq3ZKA+rVR5im(Ii2U!I+M",UG6%K9K3i,ad)0Q5VqU[
R`F*46M3NbPirY(j58Y([J%$Ap-kR2NEjScek,b!YY+8Hb![bNl#P0*3qY6+2@c3
qe'l'hC3ci93#ZQ8&3!e30'#iNCbRLL!+CGaXL4#!#5E69X--8B6I#3,kFbkXR-(
2984JQ)EI+lbXYKlN-*`hS$I23#&L#M)(G#JXPlY[R!R1i4#+@hVlJXEV)hQFMpA
6Y4$8'hb!SZkZ'iUI2mB8R-0b6RdIr1lS)h59[Sm*KiUcMT%1jlJbEk*64(B5V!8
I9DjcF,ER&FE6JY3N,jJ#lrCDk-)GK10"Y3mr&laZ$0EFf82U[kYqYBQ0CiK!ZaR
+ZM)G'00m`CmJC,LfKdCm0j5)ZJAr9ck86#FMQ0Nq`8A8%CB,lmTUN!!Y36MXNZZ
dAj)Mh[%4I95jC#@DabcR)F#`Mp(K4&(MJ4,cP3a'42fCF%P35(($P9bffE+KLbH
ajke*ja8PaNmfq-2U1h#fa+&kAE*)F$MMTXFraCE!8`"Z`J'3!"[`15Fm,Pc5f2$
Mk*MdB'CSq!`qe,%+%Ea609!V4i"KA2JIS1-+Z%CX"Ll*5G2$('lXE(1&FD)C4PA
$@@bFj8V0c`"!K@FHUjr1#jTM8i6"2aLF'K!XeSpAaQl"C5*6j@`aKBbiG)X$+kc
DUUfG1+[6ee"8@0MA$HpdBKZJ-e(f3rc`VI5K-a-eQ[!82q@r-Vj$,0F'UGMriM@
@#LdDK%)j1i%)&0@'N!#e&Ub@5YIrr24-kcJGk5@V`&4dQi`pd8,I%*YNNK@If#k
l%`#LE@c8dlihGjH#)a#6hr9H5eSXbY,'JRALk8pVHMap$kIcbDh0T8EdiA6kD$3
ppU9-%$!TZB*K[PTdb5&)hC!!E!k[r`)q`cAM6C'M(@G'`PcdK6le1[E4N[F)R2m
K$D80AjZQ59I3!rehQIm4ZfcGm@ID$rM,FCVA@KC[%DISm,ADfcl8Dk)'jU3NkMI
lBXID))N`PDM*9*`CT21Q`db#jP5CjS1G$Vi#rei%-Zm9Vh!A4SaK&"A8RVHC0mF
`PU4fqG'8#8Q'r0k*H@Rf#V8YFe230cGrm2rN%iG42j5dCaNS%1)4$1JJY(k0[pN
!j,0LHZK"hfri-""8H"64%lN%@308ML5r,9SdfB@e@UZT#f%jNGZ!)Q-Aj$8F%mb
[30N043d-$drY)0I-f6(i2+k"ch3hKU%l0@%%$"1BXR,5[er('GRQZA6#@`1VqVc
F22S09%&P,&m81UrL'"ZIrVT6#6#C"bJ$Kqi(JbG8"kjNPZ-8lK[c3KP6cQcPVT9
+(Z2reCr21'X![Ld9Ya340EpkaZX%S!N2J#cUU*4ME@J)3iLU69Ll&8lr&%lUc91
iH0aF+4EReTfMNPV[UJB*%d4Hp4R'23A&5"emEiXhi*`HlEb)Z6dq8Br$Z8Gr0b!
rJ(`!,-2+"j8L!R-b(dA[Ahk`,6rA%KhE6Hq'qDDR#*l6ehFqQb%hF[-r'"DB-J!
lS,`PbGk$Z`FheUVABK5@"4PKhj,jS#'`pX3M"+QGCeRNfQH(ld#G#X(Mpf"*p1h
M*KKb4lbhLjhZICa)qkLJPZN%[Fp+NB$T[SGL2[X!XlBmphbreQ5aHdAR5K+N)-X
hqaE2K4-Be4"@[!c'8(ZbfKq1cJ`b1P8e!1G($IefBcESM3L1M4LK!1Y%+E#&(#,
m#+hJKR6,'%!DKja-*Nb,"9`S9jde39$-+26K%rp(fMAhClXP6b,Qq34[C*[A#08
i$K[`i[LF2Nq%52P1RcClbiUUqK86qUAifIK2kA3%*9i$YcHcTjjG"C&Xk*[UjG6
2LK5icZAklbkGUC@pISPYb%a(,S-`RkZ&5(bQ'Uq'9qP)GQ+*(l`%$a%SkIiKJZ%
%E0JH!1MJQ9Z9*4SUhl8NrLXZ5Mr&dM*j$8UQaaf3!,E0XHSfYRURBLK-EK(3GRm
)'#04!(iTYmmFPCdbl%lBc-m'G6eEmH@EHRq(QUm4M35ZAlhI[j460b*rLI8GGk,
bE@4#Y1ld3X`r$##"i*jZ'9dQL`&-1U@%(rdmm!l'ZD&(qJ*`&0C1PF'pkfG)NH9
DdQ+f&JCJk%I$TTSeCXF[#%T!8mep![maHBf,Rrp3*c1lr4-BmF23'GLbVJ0*2(C
2&4J#BCSpGbNAK`r3891l6Tf3!*GJD#8V3C*dJ6j#`F[["q+I-$I4TJiFcq,DXbV
dV4TEeAZm*d`-'"DiQ1Trd2S,`,3Ti!9)(63'pamm6Gkem9"r'(Tmr[SQMA'D4GY
FG)8c[8SaHLiTh6YB&"mA&6i2[N`ekC'#5NQTPGi8Y%J6*e1LG#,)f#KFbC+`@V3
QClY$S)B06mAL1V9BKH9ef"e*AL"adK6iN5jDi19er'T%C,kY6-PY3YePaQVXqPU
Vf4%EZX8L+EpSa-"+TQ9("4,3[JBraK+A(qPRCR&NldQ),+Sab5(ri86pdk+iZ`-
qAlLDj6*`4[F+6k8#BEqdbf$#aT'4#L3cq05XRSm)lR'51jrL4X[Ik[LMFD2NfR3
rB!BKX!)2rA1$BT4UG)#ApiQ+h4h)DkbMF3J(D4rqU0IbIY"S,NR0$!IB-RX8"*l
aYpPBr-4FFlcY")bBe5901ALDDVV-KH&hiZTlmjdM@09VmTLlj(c6b'VKV'N,h+'
2"CQ0T'TjqHjDRaQcXj@`4Se-0+%Aj[3`2UCp5c3,NN&MEcG#aG4I%'h"U(`Mh+(
ZIB3N-j+f#[j&R'cRMQ4$41GLKkVV+A$UcBRBG")LprMI+Y5`6Ykl"'9UVVPZkAr
3birmA)TRXmEbllZUCpldd@SD$r8L!Pfr9QlD`[kj6-`3Pe-KMKS8RJ(Nq&CkHIY
dP(l[)U(RRD1RcR((PAlDNelZ)X9d8CjkN@YQDKfU)'m)k09*DcH`H1keH"$QUKa
hAGM#!hJ%Eqi`SKGVFI#UdP,Sb*QfK'B(R-AJ8Ck$+Y*lVlJS`BP6Vc'b'YqSIAl
UCKpF@j'hpPG01--KIjRfHDI)BKb0fh[MkBFY3,dB4"(bj$beREZ2Z#+B3(GJU&L
Jq"f868615EGb$XS2VBf@j(#HQrQ$8Ac"@#!'VY5L,pp+5C+$1G+6Ji@5G3(#G+5
DDMbfd9"k6K'B@fLZJV"K$Fc@YMYRJ`f9m&18Hp,V--(fK5DU,aRAEXkcbld+%NY
SJ,0DMEB'NRhQ-0kjRl"12U25bXl2aJ8PeeQ"b5*'49YGQ+(QbBeE$)b)P`UMjL*
GQk(065"q%JZ*(afZH$XV8C[@"l1N"f$&q&LGXr1Gl9Fc94PhYIQdXN1,2H,i1lX
1,4"Q`pXm!!2[C-U!4L!X@dpqGcQVd9Ec`Cpk2UHQHrE`RS"rHaB&'5(a)(1V3ZP
6ck#H2Z,XkG*bKqKE20Gmbp5eI-%UEP&3MEFdp`@D["i*Qb(jiF"55qM+!m+AATh
LRYpZ3!E,4m105T!!c9M$SHS+rV6TdXPCNBXGq,M5cXi[hYLT[I5lRVh@khiS-aG
)d(!R3+KX@A%cSUQdBMcJkD!`43"aCH@#9I@C6h8fmR`,q@Je0Vl#lG)lUVN3X3l
LPGXLKB%CB"YS,eRUT2Jla15L@a"GbXV(eh,68#Z(ZBTjFB[9@,fH[8QKpE)kKAT
+532'Cb)95e,H!Hh(!rQ4#J!K54K(BJ6`+0fJf@'i+pQf@0"iJh*G8Mpj&,2G(TB
9jji2mCqTkV,bY6Yl'hF$S&hEMc&JPBU4G@D5LVj!NUhrbBYam*!!jDhd8hS3LZ4
('C2$IqM$HIm3d+cL+4b[$ikqi6NE%"5!(1'[1F&QjXL&,VKCVA&8J",@q()ZjKV
diCFBSf)GK!fG8C!!PlAkV$[+m2eFBYh3hD1%QT&JN!#Mk@('P6iheD1K$)0EmPR
5`4rrp"A!dh-jGIlSjQ#(`X'C%%AGT@TJF,S"+!dp@k-A4$",qX@C(@eja'rJ(Ym
ALT1++@l+Z+@I@kS*U%dJT"4GCB(3Q9,*(3qi@U(MD6L"56K[eQM[jp[&%*SX0T2
&jiRQea%qI`J-6@&%flfr[[@`1"eVL,e$)ST8hP!RCMYIYmk&4d-2N!$)ip(K5fD
T(NNf`8EpK9+C2@Kp(XKaP!*DR2p#rQb5TCLedU9S8Zqhha[04a&538DlT4jDJZJ
Yi8![krJkZk@+rdCU4J,HqZ*L135)'P`qS1Nk0pca59Ff'FI5h-p'h8DVFYGINpf
"Xa"R5)Q1UFJA+"9%GMT*RACH#6*dRF!Jd#Z5%LBpRJH8e'pUi)3QXE!@bj!!j5@
4rhAdAjF`)6KTP3Eq[)9EmG%G)&1Qa-&"e&bGiR(YZFpGDNqdC`Kchc'2BjJcTl"
V6UD4CZPq!l5@6h##1G4FmK2+mb+VP'%ecQeH'"Zbp0LD2,0JM9-Fc(-4HT1V8f0
l*X)TX62#i%K80paD3)N@JlY3BX+idcaADc$`bUVqIm*@+Y454,2C4&8iM!c38!4
$*iQZfEEU&1l'MCbL1&MN",Zq%+P(%%CX2&!9KGQfMSkBQHK#lBGX)$al`SCQ(Q[
dl6++89k8UD!6rprGU"2"'*c"X4)-UE0hkk+SEf[Q+bmc[@Fqa#@*XiV)IZMaKi&
#GE,hrQG"YljFHiTYd(N(f8DC$&dK%k+iNhKc6i)EMJ1-a`LqiA#hb,iR*8I*XXD
q3eFb!BBa,NSXe8NT1qc)TlZFeJQ#AJK[4#*NKRdpqTR8$2i(c6iYN@G0)@qQeQ1
h@3ieM8NKVcXlKcR+I$QAT+5)(DCFTrJe)a6CALXREY$b0Bpe'r$9md'p'Ae31d,
@Br33D,4FI+3B'iCMdQcbZpqIPiPXX!LqhH92al15lc$'jFUAdAJAPe,PSi`'4KG
B6dT,TR903ikQc&Z9&FLGk$DG-cA6IYRq4lZ5&-LUce(!VJ5#18!IN3b-m(P,KYV
+2ZbHEFLPb#A-q)JTN!#fEM&RQ[9ihj@EqVbhhb48-c8I43lpe%4T81VA"hDiQ,V
1EXL69"X0H%S-AJ4UCGhjRkFPl"#cRP+r8F%k!mcfQ5#d'[&X4,(@NL`"[SDI@c2
C"c&mJblm$-%iK3&)f,aB*q4I$U-(C!JmIV))'U9-Ac*6IBXh[%jh1GmJ58B[K#e
6De-e!di$C5$6+0AjdJK0+r3)fc'IaNrI,aec+V8JMKJC1JNQZRk5R6k6dKM2X!L
,C,+$X@TN83aR&XrUQdf3!%EXbmZCVHZMqH*m$f3D3bXRd,5$'SiP$c%3@Yf2h3J
RXC4Yc4-a+3l&K,jPdI(j9I6*P@X+PaBD9$@KZ6h$1A!`0X@HGZ)d8,NHqfFA-!a
"fAF[9H6LTeSr!EK@lC5f%Ci0#bRJhp"Q5,*feddKa'ehNKZ[#Tc+1!&mjHYT-d9
++@(R,61&234bZErf&jh1[E+L('GGiAfV!#BUKeblq29kafq`mGIpq9PZT5&28rG
i*#F&T6ZK8&EJXjVYel2'X!!eq1p+9%E%QiQCEKh+Z'A`#ppj!QHjAj1(3LG)"kT
I`Gpe)r41r0*LTVP0ZSH&15S'e2&iV@[U))k5Hr+ZFec$5I#3!2&hJ#9r!lR2Rij
@k6B`e1jDHZS$A4b)[+5Mmpi(UUEZ)GkU`HEB*(&UbjV6JNa9NYCB-Ph$5j9RFQC
@2L`pK$Rb6EB9&b5JqF0!f9l04qRFd$J$SM!`#8YM4@d4MSDmSkZAX%jc-kBT--#
GTjiG4bmF3YNZQflSPFrj2[+)Rhb)@r(Yc[ID'k[%B3KJ'BpS[I&TlDB5C`mj6@,
Gi!%lN!"`kBZThPml@6T4Cfp*"9Gl0CJ$3M@9(-B,'cNYTNZFKFG"GEEi*kk#Q#S
[fNFm*)q"0SK0R,Cj4R'DPJ)kBVVcAHaR#e28M@XL+SipIKe#5VX*#Z2NCUfL!de
)B&*Jm%JGCrL)l[ph%-AZTYm%LJ0c9YhNQ%Em!0Bf-2#d[$H1FqLKR)%dH6F8b4Y
fj86`XIH*11XArf$%0pJV"(B'3cVUrJY[a5rf1V8L-RBhEc8S`6[[(QM!akX0V+m
1caSheb!`&R,PQH+C)Zi4VA+$CR*4JqNTT(V[jD0abe&l3Ec!3&XGrJJ``ijT2K6
4MbkB$CFRUblp"mL-pAMQf*NL5a!!E$5'`8*ZNUdj%FDKhHSYMK%C*TpYAh3R$9e
!E`)i1#`6mX'm@KXpiY'8XpcV5QH2@,HHBqb2!HXC(HH8Ak#@qaZdZCHHkCVdBCI
0TZV%UPr03M%6!,'Q`Hh+Q*E3iEPCSQb&e4q@0lDUhZRqj`)8S$H-BSXq`j2c%e0
!Ne8c4)jra6Pje3Nq8SBUU'Di&'`'3beH-S)UqVBeB22feq)U@@,PiJl#C[+D1Ib
LM6@+Tmc6U#6NPL%r4IHNANPN!rT!0T5fRf0Nhq#$iQ2l%hr*FRKY6jBiqXaV`h!
hYGf[*aZS[)3%rY1UM-Di&rXAq[l%&,P1@%rf),drY38*d*BkZ8(AP&"56kV5ZbP
0G+Fj0U((9$#kifCIj%KLD(Ld-6cA9Tp"`eApMb+63CZTar@H,q*`!82@CHq`$i1
-5qfq$'j9EiG5KJ%c$CZk#1`T4#Ek6$p%q@MVRV6jrX4dJ#L,X[[cdmM`#Nb52#F
('IeTZ$DLEYPCG5(5ZMB9cqH"%-biV&*L00MZe6Mr0S%S+IVP$Rr#P8@6fcK)551
0B1KlKKEqlfP1D)mBYEK4ImIrMHN@Q%FYh43R3%eYh2rNMrjD$TjbE+DSIc(&Nd$
'3-48&j0'KT,dT3UdX"6*@2DDFP"Jp'8VF)X8#I#ML6ij$'3RN`DVrM-*@LB83Hb
+IFr&QiL)Qe6Q@'LBLSrfKpK*CU@0KCTUB`-YGPKq0ReA&Mhq!H0kf&jRTJ`!JK1
8K+`iC['fc,q@IHU"SI@A-B$X3lk["lcDeH[CK841CD[kT91933mQSSjGlQG9GJB
X)9T@4CmEVMGNJ6(%#2jce6N9ACCY,H*AA#YK-`K$%e6CF2`)&J`b5@FNM'Yd15&
SEbb!Lf'[ajBS(R1R#DGDSk2m0U+`HU4QlX6Vc0`Xljab-Bap3IMh8*pcF*,b!95
9e(!+m``#3pi88c6!i1rFmbb)%#2lh-(a-@"GUqIi#KfAYESR6cbD0l&&j%*&YKd
*a)kR[8h&JaJSS`pV[,PlF2,#cd%AHp1mmjZ(9)[EEbrXSF$r9$Zccdl)"qcRjCq
@Y8NH3,kff*1!rC'BPTi6S0%k#0jich+N!ehQ9"ljDT%ZNFqCA'M2F&J(0eKi5`0
65&M#$1LdII`"`[F"54!@eLa#6X*fR66$cfYf2BJ)[#LcX+'&0X+SRHNB8D6)m')
QeU%IS"TkiY4*E-+5p2RB"`&6ZL5ZNN5d@)FA8BBMCeX[Xr$$9hqk`NL@4aPBX$+
-G-5YblIFemeC+pffp,CVA))$MAJU-l`C11%k&mGBL3eLCc*h&)lp90ad5461BX+
9pqRI[YG6iGU8q(DG9#F5$fX""heh+p45iG(f!TmRYPh1E,59BkLQ)E,8XePFaQZ
XLRCAJB,5!QF6iZlmC6U,%6YV-T[*iDa+a+NB9-,CV2(#MK!8`*34+p-4Km,r#m'
82T3A),(McMYP1pe9U[&[A-i!C3!lISQ+Th-'P'9(6YISqmRr-cSVd*B2LdSXaHe
#I%(j&0be5SfRe*c"MLhL-pZS,JXURKGNT851T2'ji*YCNqYiUfjC3X$*1pC3M6C
5Bcb+0PDh'Fj[B66Dp)Gc@8c!@U)++'XPfimfflS6k8a&BXhKXIe+MjdLqNF(GrX
3RHb,1Q9H[Mr4l)e*GIUXkM%$SSSHm2GKENAZHICGb-Re$q6K"IGJCQYr"bFKANX
pSM5#9l(![T-b!pbcc4G'jDDV!pd9bJ8jFE)pBQYr$2XC[ER310jVXR8b3#hl46`
Q[Mfj5fEFlU50URiNP,J[A`-cXBfD*qM*LT2k#kS&0c3%&M+X"frSe-V+IN+lL""
lh8[MSCYX$DR5qE#l[dY'@im6iLhUG"qidj56[-Dc0c4p#SV4hLY*BK-%mak[ad-
f1IC"SmF)1MA2Fkd*mM#aqba,Z,U#1FIHqi8"mKJY$a0bpTrMaj&$5`pY6UDl4f0
JUX"k0Ar4-T-"0T!!'0*5fr3KK@e@(9a)NH%UEqD`L"4*Jd(FV'l!&90"[eR@[)S
m8G-N+DE@jA#f5fPa`k0bj!!I*%1%V1peJZL6p8MdSHL1&I'NE1J2DET,-F*"LC-
p)bS[dR'+"Zj&ikr(0q9T*RY`4qp#C5(D,Y2iQ"Sr*!R*MdTdQ@k*fH[LfA8X,ZS
$2dR&J"*!qi2ZCp1ap"@bd5D'p"*f),f0l!3,$"`'j2PrU'r4VT2HJpSbE9Xf%,K
,Y'$HMFR1HAFdRmN@NPZ2"YQT+LCm5Z@(1'Dd@pkYD@(Pj$2-hUEJ*ZLRIMG5-dD
mFM@H,JKrm"NBq)Y"QLJq*-Xbd#21cp)6U68$)l+NBXh%ZXA)Lp$Y0a2lrhF[CK#
(A0khZG*3Uai&pAMjl!(fKXQUf"fa0ZU-(3KcETklVF0[*kViP&-&UD$Bc8jD31L
JQqB0j@`e,8cGll,XC,URIpYVE28XNAapa6lXL4+M+CP,BYDQ'JX%0k*49Yc8'@r
YMKj0BFTFN3aAd&R09&,MAp921YlAq$XX2aGl(UJ&@r4J(fZF)L(kpa1E3S+*2Tf
+R'4[YBYT9TIfVCfd&5hX#HU,D@0"'e)+cXR*IFBPXeml+A&MSI%qMeVYG@R$5#[
G6!-PCGrfDB&9CV,M*8,TCX"UXe#E2T)8lX5CK6m[4VYVdmjZ6$Xi@Ra`!q%&m`T
X)I"H63aefmUhVKYr6NIYTqMmJB3H[01*FJI2M',C8UQ6Uq,1Mr'8#Yi&6a93XIS
'$D5f`(UBBek,U"Yr2KP`b3*P1a+YE$U#+$%@k(),!)c@RR&SYL9p,Qh$0K+PK%D
a[!M$C5c6FFXH[2*la*-dK!PXE-LpmlB2+F`ae145CHHBhXlp$+"Ll)#drN&dh(k
rVGR!`)Parecp#4U+eRE1T3%`"5qP,TG@`hM`iAk(D"`5NH)CkKBU&p,0"Zm24!M
h1dJr$4D5YX0"L(88$D#4+bHqf%JK&P9&a@5KRqB"m1Z*JPR1"N8[4ERN[`*beZ5
D%qkQG2bBYUQV6"fDBM-3c,``hTI9`8R009241Yl3T,)h)MmiN!"T%+eABI-9G@,
A8CSM0JQ"T6S2p(CrJ&aXS9IRI%"la+Z84`i'NS*EaV3K12cmpVVR$T!!I+r(ZFi
q%4cQ"G39kb*4''TA*SXrcjFNm5c1X%@`9dmJVQ8NDQ[5CC5jA(a0H-AC5$+9cYC
$'qK8`fmh&$a#+&MD%-HA&Uf@R,8$qX%IcI0AY1XJGd'V,!cApY@F[M,5m,8H$"c
D#IF%hN$j++3)P(JAl[h912Tk1LR-M,Qh"hSV6"*'Df,U$3j$#B%aTCZ19fNXrcU
L2UcICfrDL12A2["IFLPj1+`1-aK[I%G8'XI(MAA,rK&XX6%GHAqI6MSm&3Y3!-p
G"J6!GUFef$6cdSG,X8%`S-Gr1A-c)NhBV6)%qeh"!93)4lIJra,9SlRD"jGS1rC
G2+ppEMh$Z*&CdA&rU480a#3q!A*0m`NE[aY`bVCrD%'m8+A0,'jaLi[cPT+R,BP
YhXZK&83La!DfEBqId)a&Ird9DUqF-b6`"jL%ecJ%B!jL18%E8AAfK+'HK)hJc9P
0Q*hMC#lJ,+BllrVdprYH(E)6S`VH5d3N4YE(-9Hr)(j"N4Z#rbYT4rE*mM-*Ke$
4h-jHpa[BmYCKc6lF4lbQlZC%XTGU(Q2f%'IlGA$[NrG6@Q8PFE&FjjF+A&',dPI
NP+iUIhC1Vjd(dl*'(4ZTFFJ00"0#PRm!%YJ!NK1N)+a!L9SqD'Ca'FMi8,d3cHa
LK&+2ERhZ)*)HI6'@q&GlerZC3r*Ji$ZNYHd,61D,$Mh!'2LqYDhR5Aj)k-c,I'8
6Tfq4PSKPrHLJ3D[UPG$IUcjMQP*ekkYR#C%aq&50UlVb6c&a9mXl4*pQ')Q!K*J
$r84C2cKqP%T6NYSQEq2AfKXpJK"m4`+1YhZC(6r9%pm*@+JKpFZAR+c,2[4,i$#
R$(TXC586EkU6)MFV6el*cAaaKc9212bPj`mjh1C$E&#5HNq-BcB41!eMpdRKkF1
@VrBP(pLe`qp5iAAUm1T5UTZ"k@18dNC@PiR4'KX@LC'&epj%'*QELY#R#e0KC)R
!KNe+2E%+impdcQJZVA"D4'CY,1&IR00fkp+m!-(kDblE&'KNAGBl8YehM!aMYGQ
NqNTR8kJ$Rc82pmjIY0b&,SVFfa)hbE6&+p!+p!p)hmRYphG"3%)9Ej3[BN4q0iM
0!ArNq*chq)rXlUAd%XQR+@@f&Qr6r9b66'#c!-e4`2-@A!&L%+AY[!1!H+)"098
J!iBi'T'kJ2c$fEI'6GaQRdP4*,9PSPVqVbr!DK6FC*bZrq([H,HRNk3qZMfVfNe
(IK$Y3lm[9cL!Jmif#aBSdR5I-0"#,)CY'dMVAeTi4EdA@d4GXAT6q(BN,JXGiV4
iDf5Fa6D6DUhEaj[ejSG*9J"2Nl5'fb!-b'FK5'%dPZ$@fI0h"&%%)GGCQJ)%GD,
9KXSiBqX(@cq&!l-'2mEYhY#QDRf8[2qIZS(3&S5bk&C4ZFUPaFcdLN5TC*H2Xl-
3b3HKN9*h"1i3$6[$(@"+SZjVT!6*SCCAS`ZeeaQ+TjIUG%,0#h%KYE-9$9ZSiKN
1Sk%P*Y*S9K*eR*kjHpReGm*V[[Sqej',Q66[*h(hc5A*DHRI-lQecr$-Yb[Xi%m
'NK%NZT*$MDaVqKGa(*-*5b"AcDdR))RLr(!F@2SS@-q2("c'(FM#i5JJ`k)h#&V
l6r5eY'GLD$kalZG5*$q(UL*MX8NZkh+e9bA9Z9m02-A2FL#pf5%#'YhYEDp4+lB
hD8p'kMap&6*9I2VK6!rl,i#J-!d0%d@h%eBXE)JMH5c&MK'V1#(%J63Je4Z5"'E
(kQ84L9-)ieQbN[N)4q!rjPC+lKk3!-N+0G93#3mmm8@2qQe$4YHfLA-PZRKQ+Pq
HZ)`V$+*U6m'ejBFRcS@&iB%@D+BS$11j!cq2h4'GkQ$m-,V92H$rjra0hXVL98@
D2,R6*hrrQf4KdMVY2l'P2j!!akVBE%&3R)IAlid6aDB%R*[&kZh"*(2VM9deD*G
p!0"C08%qfRjA1CP*"ePSFD,l2kQ'Yd$4!J+&(QTNNV6-f0+@((FQcQek$*l9jUk
6U9&pJ[i"h6TEG[@lPC(rJr+c5!m9M@3D)AXXT2')!AFC$IY$C3QA,4NQK2Y1EhV
fC!4@Tp6RajeE5DjA[d&8kr8"SJSk`N60q1a+0M&kERKNMV0iNPm$DM5rmEqSDp4
33f%DqMH$hMEAFF"lL#3[CalPXN+A-Mc(j6a0K(Hm8ekR(!X"ZfCkdCq-18-YKN*
klV![VGLi`'[,Kd,`-`Pf)18$3&IXHTd2r3d-%KaEGR!31E*qX'-meP45)0R+ibT
(*8@PCVB4H5S1-YY3*e$k5R#3!&(rIL8mT(#fem(,h$RQE"CmirI29eBkRFL#J6Q
J@G"+a9C1r,4(q6CGCNZ1EhXlQ[P9%XBjD'&,IX#%C)efV+4#acJV0ThJmD38T-K
TX2kb%4T6X+V-beA`ch''%B(4Vk(+0a)-jNCh@88dh8eif&(PYi"h-Cmk'a1UVXN
8*0E3r6Lc9!08#kY1kMaj$M@'A*!!SMB4Q!B($%#BCIM(ll!-Bf!13!UUbCbAR9B
4A`Xld"0M&#2D6$KYQmfA5P305PmF8&DepS93(d%U0[43k+*V@"fL+AdDS@bheKr
3[3!qq!rD'0aNahS2))@H#&jZdBSbS)!m0'V56TBjldREFdp5Ijk5B'S6UH&%c2[
S0aclS0Q1!emrea'eY&-(GFj!PXk@C6$)IF8`p4!Lj(KbCK!SYPJ8edL4NF*@CS,
#PIR$9-40)'0pGX*QmM!T5D,DFNUpE@"BiLF9qIVDR(imVZ'6259A,U,9bANf6GD
I1TDTZZ9&HC8ci96p`cDHCX))T#i`CbG0$DI#"(lI"p*de5&TMl"B1mKJ)A+c$+J
G&@,"H'6DfiM4LQ3S40$XMJf`MkDBI0#UKHZ(VhYLQYdB(di,P4%$TAEiG'%3$DN
US@3Ad[,&Rcm"kQb)a$TZickh$-T8lmh3E$J-[IAQ11jN&-63ZDh*A+X,IYZNDBc
5c0Q%Sq[VR$Ra%i9Y8q4G@DrlH6Mj-E&D$B[a9UCXU+DMb$X`EHc([V%"i9!rNC8
,f'%2X%Sc9jKFC@TVDBMa!BJ(5q+3!1L`'0-eb6K-N3p)%8K-Q43dYdZe0FPbF$[
N!H+HiTeKQrRfQ&EAV[B$[N%6cdN`L*Se2C!!JTP+QZ0CGi4&%"E3L@39#*Rc[3F
G1FiAUN0`0JX!Fr)BkB1frefd6[6l#EA1eTb#rFLXp$"LTZG&,l2jY!k!#Q%&UIi
19RR$G+ZY03aV6eNR5$$XEq3TN!$BK!pHf)&UJ'0,A4N0pf)XaVS"'$lN9@5GfXL
f#H"LF5a1TT!!HbXQMH8rSDr9pSY5lE)BmRR&E3lQhfilX2-C#b'V3'Y4M3bEmp5
bl-Sqa*bNGq0443SKF3Pa"jIJePkD8hZSAc+hC0kqqE)*jMS#&3Pa"Q-@R,,Xhm$
)Hd"##IlPVY&@BqT815TCB'feIcj(RCJ!PmfSR-bmV(4ARMU4AZA2UBDMAmN`(KJ
d0$E,hf1Qk+)j#CLTPqi3QYbV!UQSV2rEYJKpqQ-il()K15e&M2[4[RX2kp3Iq!k
Z$EkN#!kAeqUCf4m0Y$T%RS06kL3c%*e&YcmA4%SLIlr5D(%l0`e4#L33U-l8KQr
mlZEKC2Dpqe!Iir4E%4-rDG'cYm&UF8%ZL)F$M[K#e16a+A)KFl,3)k%+GCTd*i,
i,b+c35FK6I!K4c93k68YFhCc"+),ClhVG2IahDe6a0K'@bLTK1c!S8"*+p#5M(@
M5id+Iifp%Z[SqVNj5Q+8c-9EXD,qBSqF!U@qTq$(FZr3p9'YI@!ECXiFp6m`e%k
ThH*B`"Ud40D0AlQQHdIJ1XZZHmX5dZ3T+Z2LVMp9ZH'*R2MMiQ@rLLfrGDkPM$H
X'5NGQ6`Cc1%ZjT+ZpArA6qcJTEDk$60+Z*FaZ2G)U!rSrQRqcGM3aEj&m,jTVAr
fZlFXLaJL*%('im%Q(1k`eGL(Vl!L3h$qe5'G1!%d#-Ph(2S4&kI2mPZ[Tq9UMD*
fTAie'b426JLSrpIFN95PNE6h5)J(BS&1h1QcAdrp1-00)LaK*+@T+VAN,D@U+!9
Mc&$&ILlAFk!qE&DN3`Fh`4bfRDf1UHkZ(M8&NPT(B&%+FBGeVTI8l,I*AdJb2NN
"rN,b3'QR+j99cTZ'Y"9hKb%ScqF*2hE4hF(B`(F$GdVi%F%'V2$pZN$bdUE%@4K
qQ8&SMe8@Nb#&b(Kjd-I+%"AbeZNXMqPAN!$ZX21,-lbTA3h"*c$kHafqLbT+Kq9
JUpKp1i1%86'5-jAe3+0+(fcBb9+U$N%dMc&m$V#hH('b$c0Kjh''8RLRRQXKe3b
T5&pNYN2jCJV38ad4%&CR`EY088!FSVG-fY3YZiM#`QE*)VT'8H'p[Q"-YG,p1F'
B4%8AAANLlp1KImhCKhh1YPaY@UjRA3RBTU+-FM-S85SQQESARJ*fCif@-AYhm6G
'qiRG"l348hU,Z09YMG4bi3Ua[qEalkfB[S'&F0+GDlDqAj[Cf!R@@`5F-h8PTNj
fYG-*i4$N(NfPCpHA#QE0'5+LST!!Xb3&VCF*MJXR6@EI0Eh[(D[*X5mb&qMLC,H
"mKbIa83pGQaFJf"81C-,YfJZc$$#9)SKr@q!Dkfm8iFDMX,Yd9Lr(1EkKff-jQF
dkFLi[*5TVB4fNe+Q,BqDN@,)[mUPlUhr%"#*!*1%8mFmF)H$A$01)I$dfmQV%dd
idDjEM6eL`K8e#N!Z9-$C0DeU242XVf&,M2MH821C,IH3!%jTVjXMJBklET0q$Gc
`!RST*XpPCGFkE[$+$qH#,L9LGK!f#-jjq89MZE-Eb)r)Y82`mKMUjE2jT(P1[LH
+kHQ850j9N!"-#eBAhVbhRL4$hLPC*e''mH+'Z%"X#HV8r2S%'qef1Ze5QHcj$S@
C(TT&q-",M+r5YL,2QTpmE5@86SjCjqXHI[-5VQi#)8`+[)(6ZYhU8G9-KV`!BAh
Mpf'lfM!McT1R3cF8RpNGVmmDi)$f&pkdSR"iF)aCNS*jUQ"ck4q'&Hm$VH@f*[(
+0@Lb#i+XP"4U)*4&aq1Z&RaC,EbZ2)K80hJ*d0qRDdmHNc#*N!#MFYR`%r&2'L-
*`(IpP1!(Y)[4DiiH-30*mZKqhZ##libmNGa6D'k!C[TP5piQ%![D-pf3!(!kJj&
Zc9%RCIi)A-!IS*VcX6XZBB%d`SD2#BBB'L68KYp2S[B`YI$$1df#ID3iSaYZ#Lh
"kBYr%c3'80)-jhfEDP2RF,65Qk(XAbp'CT`"JKrf@[hHpL&1-jfi++`r'ljQQFi
!ba+6%4YLiGpFRIdJF*D564d$b4[Uj6aBKYK5dcY,#BU-C1DU""id"#KQ'SlUiM-
&K--*UCSCd`0h3e(ddhKlH1-`fleN+kT1(h6%4VF*5bV-LI$a)6498p5N)G5%4Gm
bj&3!AbU#YYIQCG'*90pDI1Q9Uk6LAD+@ZZbc2R#KM`S2LPE4iA$$2&P!4e#Xd6C
&YL$ALNV$Z)A+,6KCjZIj6a0FJp8"GmFZT$$U"VrDrGd@a#&mF!-%j+AE9TVKI[4
PkD(e*%5(N!"cT9p6#fLl5jHX@JYKK)DpZ%D1hqmG*L194A`2XijErI6[8"EMfiY
jD`SCSffekeCq$-q%TCTH1IS-S+e-YA$illT[9Cq[KaM4mMZ,&-&jD'ilbB"RAVL
IS5Q9R&TQSb4SYYHrUS$HdlHbijaDPA5!,Rik0I#[PHd[cjfRV)jlbF8V-a3JS8E
*j2,UqZGEjrbLh#bfE@6lGY(JfY2qZlD1aTQal*%#YE+RKEKkb,95TZ),%i3#NYj
H2-IC5Cad()jP60)pFLc9@A(lJRLh$%U5DJ'VE-ibZpTbQqTj0JPF'b8ce5bL55F
k5a!ciUH!$!hpdMjNcR8qVriJ*LDCl,N64N-l&b1h#Tb46&$SZ&aCm(I[kZ4MSEN
D4#cBX$Je%3KZm4Cmjh2hmUjEG#(flrI,*5r4kQ&#0eaD,)6Ucm)2ULa)5"2H8(B
KJE9[K0#BAaaQN`++"PR$(QE'9"rKBA&lSN8TkUm!mBSa"q'EjGF1C9&eV(lf3ia
TS5Gq8&@iP$T*r0")mV!FY1"HG49f+*p")EeKT*qBER'`c$GCJ"GI@SjTY$SLQ0B
Q+@hq)NJjfp1PejaPHCql@P8dNQ)iZ04m$$E[Kf8,!rm1QKB[%T[F6U)bL,hFS5'
855HmFL$5AkB%3b5$T6R4(%HA[@`UYJ,*$lB32b)LeUDe*Nb9D`$aA"KUkr[c18c
2I5H&L3k0P@dj4Q-kQ-H+k!54a@16eR'E45$8j`R9TX,T6+ZN-Iq%5a[*'#Fm6Qi
JF#MAflCm6!9V&D1JBAGM*L+XS9d`-@d`Z3&8mRP0Mb6p9N*SD'k3!&#l4TqAbjl
$AKJ+l@bbU4hqk0f55ZD1-L*h46&YG3IP*PPI!dkBi2pl-cK'%i5D`$$*"PMcR"a
%HBl!lB$$)L%J5Y2UQ$QSLMJB2JJ'a6C`kYYJ6*Ul6Q3G0C3mCdr"f,r2%)-BKL(
58T!!c0%ErdEZ&`Y)TNNFfK50feJXf`GBbZH,LlA#Pd#K-[)Ljm4S$D3e'm,GZi&
654*@'I-NXleDj8jFqGGjLDC#++,KF8BhdY3C(qB%bS3k(,VU9ak&'Fd4PhE'$h3
GG"(eRb3dFf`Ud(C!bd$G60fh$lFBN!#5DqhT6HNHH!D)VPhLQ$dIl0%)b'MS6Z(
6kR"5'TCHYGh91L(9188PkZXBGbG0JjX[iMUR*eT55G4`miXp,(RIR!KU-4Jf8VF
C,Xd5NH9Jl+4TN4mqIa)JAJQ6eEkA25'qjA5#8*jPZmM02!RRE)IVpL"m%E$G)!K
1$-hc5#i-J3icc,K%DR4!RGTIa0qCm9YbFA'8NBd`'hSe%d4D%3jjraC(0*KakdU
iqU[lZ$-+D+5!3kB`8#UeXT'leT02"%XD81BD4*DPISh(cEfHrc`25J9SLkK'Kd`
d2SklXd@@V'Vlb3VRC*F+fP)edKH!`5L--*Xf*1$1EbI[#r5LDSBa%KCV965I8Ak
D`&-f#L)"k05,X$,qV5Hrdj2+XA58Q9aIJfG&LGdkKk&YQ"PKFrThq%p[j#(cD6A
$T'G+Ge'KbI0FI$`RDG$j8%5bKrNNK'kVJ!)#'jKRr+8R4Ka-r%jr@-j3e6e80CD
b4KAMVaN#-*-JXHq'8T!!paGSChl6aVPEF[S-p'DXJLlF98$%HQ"8&kLBVr@QCZI
$!''Ak,j(B'(!PcqP&F"TiqlmG'0DC19j"mX$KDSbSJ5KpSH(J!CcM3bbpGGkdE8
j%ql&jMMi"$mb@!3F&(96-&G4j`T1`r44BXbbq-8KbY,P8PlQqpFc)NTm9Jec!2(
'6HNC*,SAGD6!p@dCK5rPTQTA5-#a3Q!*SG0RJJX&k5P)r8V[hEpXAL"I+ACCZFE
G@pk&bDPM&fb'BZ!5ehhPTeDH$l(cYpb[X5#EK,,A"l5R#e9r3,-QcJbK5+dV*#R
HY%9ZUFXNDMqIAUEZ2MA$RE2&Pa9ZC%kVIN0%qP&IZ*h0C8m9ii8[[*f-&!CBFjK
r(+ZkHhq9he,hY2K&[Xr1(kK"fDSZ[QN(q8%Uk1&L&a@DXEMLJ'kAh'k@be%ahSr
G#*XQ%TMj`UZ0i!q+9X(,@ShR3kl+MHcPZ"%GRp#CMX6DEEd3qMK2"UbkQafZ88!
jB#8amN'5j(YpZ3@MBcmGS*kfrM`3,IV(lhHG'h8F'04RT*N6fcpG4JijDBZr+K1
`#CZ*Xm[lK1!)H,8jZl42*dJM3J`NFNi`kE$9[IP(@ZeLI%SZ++*%K2!+e*MXT+B
UPcE'0qFGf5@Mh9dVUL,,Z2SdRf`Jba"0M%RG5J@rT"Q,R+A`0D#)U#H`(XTAPPV
%*KRXbIGp(TLTZ-[UHmZ)UP-[T'm#iXa@b`K$*BiY,XPh$c-ReEmXakk1Gi4YB`#
hS,aPl8E"!k@d!,A$*[5rDDH5Id%3e[+AF*r)q&(eIq`Z"SmSb[!!T92YpVqGmJX
RUZf!K@ERISNa*XQ)A3ZZ6&"H4FPjBTi85VYHYTSA&9NF@F-T9C4"6$hGqGkG-*G
9Xe1lX30cRB[R0'p[5A,!Fjed!lY*1$eThMQE,X#%-4(dqQj*V5lqN!!CPLDENU`
I3TCFp(%Cd&F#%(C)"jIeqFk%k0(Vm$!K5l6-XJATUUS63XZ*8-la`kaLdGNi#!H
jCb$&,qr,A8T-eXkHN!$dJmTB4@-N-`PL)B4@iY[HLlE[$Mh,USe`&FrHCAcbl'j
iXEHiKG&S$J$9m2qN[bLG!4bc32aq0)8E[kCh1C[MANCjD3IrDk9)SMkL8H64hrG
keMFcQ5&%3'cA-5prB#ML@$R6Y-)c2b--%0q4XU1-b)A,$"%00dGe"FX(b4DZc*i
&8P*(15H0A9l@(EXG&5Hd@fr%M@c6jmLbAj48qQ[V&,GeS``pie&MSqJGEVd)HIE
rFa,[+Mdr#!N6'APrb-1,hKqd&CbeM%UG@b`*P,KQLcQ1iacZN[-@-)bKXXYY9e9
lX6-NAX0YYeUf$!Xe0cce"BQ,PP9mr(HVNMeUikPPA#pPGKe@6%2-ZKfc,f!RVTM
9H+)GbZNBEUUIh%ei0Ym+"[eKeAAbEaq'1#%GbNF#&#@mDQHcK2''U`VHMhhF&hN
JG9fU+#qDB2#ReB&L!jker0-Bkpm'S'iSDbbFrXTFmrKE!FT1PCHhQ3+,XVNGRM1
MXYilcUAjAVMb4rJBEF48#p9bhNEU&6Z&D`kVfT5,K4YDQB8G*,Mr`mB$U*HVa6r
R`(ARMHp0HZ*D-m3@'qMmJI#8d+I"DZp5N!$0NMU1I,qYXU,ENR)0H+GTRF'jd[h
"Fih`ECi-5VaC*Nqe3C!!&9iq[l#N,F(Ul0,,D'd%-GLpJNESK&4J&l*Q2A+`[HM
Jrik3!'h`'SehP21K$mV,FeCm-YaRIi-rXm[CIfES%c0SM8M9$&VKDdhhQpQl,,&
B5dF9AC%P2F,*LrAr[*Ri,H42i3DjJ*liG[CaiRA3Ph%I4-RMD%FSFkAfNQl"&a!
)P"Ch[eZ3!%)b)Z4qp!X*(X+hee&!f#LA)TQemXbM03V)T"NIJGh@Jkb*DV!@$3l
!j@!C2Cl*@%k5iJUa8dj1A-fA'9+B*k,#lkVYZIBLae)203jS,H"2AG-qTTUYa8)
LF+`'Br529#Vck!Jjrd(Y28Z99#c)(lZXBr3j*A,X&6X90+)A*2ZpKjYVBj2He9i
-pQXKHEA#%56EJ-dLS`G%JpcMe1DS*&rT)+JJDN18+r!%ebCi09KPbDi4V[pYh$b
pc[L[NN*U+eP35K1YT2"Xk96["4Q-ZeQ[DMjkAc)B[jpXe1I!5f9Ak*5Z2),1F[V
Dd!$f8m8qjiTh89DY!JAScpLcLbB[`#M5N!!P1$aTc'"4Lm"LD0Re"%klTQKk1$D
iAc&XdQjc`8[*JD)N)Lq"(YFCJ*&cRlBSRi9BEX#*1kMbi[U-0RmN+Cf$laKGP(F
$+-iSU'*ZSa&pGc6fl$+i51aZp5!XAe8%HYUpSIE%P2X+-aEPNMU9FfEdL#ZRJjr
h4[#Z$h3c23"d*'f4Z4FcQ"SDT#&jH0UP4+0Lcr"@'K`!Gl(2EPPhIM!c@BdKpAJ
k3HemMqeBApk4i2ESZ16`3k*V2MYAlkV6Z5,ErlX0a$-4X4"[0U"Ser9'A#PA&I6
)0Lcq)J`cRAad8(E!hIAJN64qZ+GGqKTeJST9ZJC[""fF*XA'qL,$6!U'J'-iA,P
B&KP*1[fa[fI$M*JZ"!'Sl2e+8"Pi&"$&Jb`4jb9!NXCcrc[(JE,Ja05X'0B#-e%
Km)"Gj5h5B3GPL341fDT3C"D@hjA$N`hpCfDk8AN23ZA1Sd"3-LpQ*3ZUh*Ekhee
5Z&H*9#CI#FKk9A-Dp9f`0RJ3K[JaZq'Rp5LTkeirE[VFiM`d4B9C,(r0EQbH8q[
2TK3ZZH8$r3$8["`bA*@RYQBGN!$$-(,1ILPP4j4+Uf`Bq16b&D(FfH0iSaC(34$
IQb*GMJAP1Bb"4d+0YFjRab%k3DU6"al3%(R%,JS@!S#8p!d8Hi#!mA@CQ-1T"Sa
R`Cp6$BFmb&DRlc"I9-+EBXm0M)@4RhaL6GVCH4r&)2!a"cHM3d1V)emBQLN-Y%R
$#`-8QaCG4PiNYALCL!Tb9'N-@qXbQl3`!E!Lk#L"mr%h'`j,'`ZjKHNhS@dNl4k
`K-GKNVHpl9ijGA@DH"4Mm`$@ULe$AJ@,'PT`Z+cLB&FRbFDd2&[TKJXQ8K$e$ZE
i4CL2cRd%Y-%kVMZrc85`qZVqPT!!4G-5U-!8Xad[G2HX`q)$"N3RD-4Qc3U'c&N
8B8DbSZ*N[fk-PiYUlAT%M0QVH5`"GH5H0PbdG"#f6EhBL(+XQifmAl$3rdAHJm1
MVQXal'D'+dA+aeNUR2[*h%LRb2)lIF$JSJM*MjaVaZ,peh`"'A-1fpVc31$(0P@
H&QeCl[iRD-0C$-PUlLjC@hG)lEMU#H$8)adY*,bfi4N0)5,`lM[9kNTh1i#K%aM
0hc'Y#"CbSR)Z(Fr@8Ul&@k)(kXqq+#46T[P"!1@k,bZ#)2-S-YkKcPUr`-@ZJF-
Zhd&ZH`$"PTi6lm3JYPQ0pLVId&%Q!a!N"+`8K@ImjQVFDTkAYCH2'mplKE4iP9$
"hU4b$X61JJB(FZF(V1I@RA'#5"N9Ic19@a-ZZ*kB@,QKJ20%AE6`hTdZ&XQRfeE
Umq4k8KC)dJ3XhajS@hc8`",fL4Q9$5@qY-$&N!#Aa[RXLSpl8a,p8UpMTlCjj42
'@V(HIVRL(3VQFl*PcAS%"fa)c2MH2fZf0kQ9`[keGHDIfpF)lUjhiS[A9JTlNJ$
@ZBNNC[e,l55KZaKmR*VeJiMT"k0@j#Fm2E3i9i!@9[HNAjLaq#*EN!"URHqm0AK
J@GFR4iR4AZ!@9JQY9@k"@Q"#ZS"4$M@48EXNSDkk4`-e9Xrq@lGX4QFY%&)AD0N
j&5-F#bjAD'l,hJm4'R3GU$`5i+'"&*(-6-HQYpUF4IcJ['AP[#a9+69-Dpj)G&%
"dX(8pZYPDLKq8I*f#D`A@j)eDB9f$q4-m&dLDMe0PAPP$XV8-Zm+5GlcUrQIemR
"Jr5elZ#,cUES1BPJ5LUq45aI&5-N,-1rD5ZH$Beh2PY0R+'`(C23+i6JLQaf#jG
I%`$X'Y8iIX(DhFJ+-q@9@4FciJFIAUJ#b`CcqCQmTEXcGHbQ[(TAMD+qQ*j9+$2
T#)U[K`&0!mbcHCDdjEh09UeXGrI&M3X!%%RbdqKm`4J#P%J[5Qk%@+E!TXmc,TE
TQZU)0kp$`C&KlR'LA3j([!c1Fj)J'q"`I8%kE8%+QTecT#HHES,q!'L9@E`6mq(
A@laSd!U%Gl%`X,f(HRYEljVKGA2Fl*HKiI%eCfYlDES"[`Dh9frXTMXr&`cKIA,
I'i1Yl)L1%NKlhB0'qGE4UrR5QK)@Q$"%&f8!h+d'p8%V6Vea2D6FUH8PU(jCPP-
09CR'Aq(ijR4FH1C1,ZhYcm#hTETNmK"Z@KJQd'a%j3B'%'H)CaMG&4fRK[JL'Md
NT3YK@SeE(ZM,BD#"*kc9irjG,,+EA%ZV$Mch!rjA#6f3!$XH1ITAR'2U+%1l,@`
*A,!e2pI4pPGf1&!8Mk+*8K-jf,lqP*L,fP43i!(QJ+V`SehfCQRPeVfJJV@981M
jAXUIBJ@DXPf9Dfq`q9+3!+%2pE'!8DpibRmceckCN!#0ej960)NBZe%65ilhQ0J
%0+1$*LXUbhH2fL0,3)i,0A!%,LdXKkFPeIh@rh"[L*!!,Xf'%GM,@a&CP'Bb2dd
FM-pRirIIfde[P!#'bZ(bJ`*d-,G-9ZY43RiYT2qLa,#CQ`Ge#K1S3dI*Ap@iL8-
rESBGc*9LQZiK#l[@m2k@Eab,q#a,SA4C31d-+@CpPT)!Bh(H,dFrFbDV,IN-5B%
"cRaS!Ml,q2j$9,J,JdHeb)T6XSA4I$RL*0i1&ZK,5Y#X%VP-2,P+#PKQcP*Mr0N
*@8Ek"#c$ePXDj(UVhVHNUr2T!--CYI`"l`#l@Hdm!I#1d$D&h94'FmQ3!!%r1FF
&NTHR%cmZ1-almMlKfpNa`l--dKc8Mcp69!SXFhSd5lUc-F*Mehq$%*3DXl0Q0"C
F8Hq4`TM43+25epr0'Z(b)Ma'0)lNEbUc1e2e'ALCd-,M&1!U[r3m,Ck*!U9&IF(
(rKm3dr"m#eNeR8abH**Nl0iDDUCEkkak`YdK,-S+kj58+TPQBRc"lDZY80k"1@Z
1%`!LGkXick-G(NKT%`NXMd)[92dIpMD9jAJYFKThm(-mB6RGH(cBJG4GS&,G1Y`
3'(33`A#kD+9f0$VKM'56VZD&'M&Q*JXBY*&1+l)ZE$$KVfYKj!XI`(*#-kkPc36
DTYp4FcL,pVc)DU5E8%H12F'YlPp3QTkkiTRU11(@V"-JGJ%Ja40eQGX-dUT-PFY
RGh9$&iMU*FL(9IL$LYZ3!#+0fN"m%*jrd!-k&NQ%KXJEN8+-R3cX6XE!G6U!D$b
c2#'(6Q89bhmHj$"4XQ4)DilKlUIZ1@J!P,*CBB2bl`0p6j441pCC0Yp%DYVEX1(
QkjKL1%Q%@H2T'YK([lBdreiakec,MJ%0EB#qeA9@*V"U#U'6[Lh!*J!&KJJK`@j
T(%,*!,'Iq6cELBp#H[Hf2l%!)[j%*LfGUlhDXR3#-Xq&h"QirMLIJI#8JB*kj8*
4Q5kY)[1aed#QEl9ZcS#4KP@!Ym-Np#0lK"UpA@[",qp'V)3fkd"#A"(cU2#4A&9
CkGQjk53,I,KTm&$9'@I1@2Tf$K-I5Re)%)+c%`&BaQ[4cDa'ibR[$dTrPCG'[#j
+Ea)*qGHYCV0VaJPl0[PkihCUrkX8h[aE`XZB@-ZhI!ZJB``E%[f5*ZDk40`S3r*
[@3aRdL+H6m0I%01dAjh$BhZYNCT$fTpQ(24H96i"6PrU9r&VmpPMm1aYeRBX23&
j'3P[DahART!!&e8&5kk44b)["GVc'2Gb'6+Q[(Y+bJR**(bI('Ul`832QmMULM#
XY+Mp&C1pSJrFfVKH4j@eKpXq0Uc)%!fk$b*Sdk4Kcc[HecqUS3K$'i'@['rVAR[
,dbS'YcJp$fFm,20#cN9h&P221SQZMd[G)'Gk3)5(Fma*MUC1QS,'X$T)$V45ifA
`XZX6jYB$Ed$56JV+jJQA%)pbrNA(l1SD-6aSi#f)U[3&1(Fbmfa58[2MFE)GJ2@
2LejHd#FUr(#V8(HjkEB(q[Y[HmZSL``TU!Fj@b0Ge2T#Rj0rhC`q``k0[hBQ1!V
3Q,cp3pR1TaIh+%q6Z(eqcPSkHCRMHIY4"dIT"&e43`#Y9TH8'9h+-R)C+r66i[$
6r5(BrCJ#P)MDa,bFS(YZL#IHT,b&j!rl6pecE+&,#cbDJmM'[p6d8*c#!`KUY#a
*@i6ebcLRGE+XKT!![l+4Y6r#@Ne#S$r)RiQ8!kQ'[fffIp5HU2IT`ilMNiZe4*J
[NNHU9Hr@T-GlDM[fEqTST&!GfY2HFrJEISPLR1J[VX'"V!5lfS$(P,TS,YB2i2$
@*%+V#jj&)hNA-!FZ!0m,P'k3!-$@QB#4`+XQJLdeXG2I6blAdh*eIVL!fd,E""S
3DL4lLZ*+S(6jF4QN,4b")2pfJQ6,IjIU6&6Gm5')@D1hqE*GM6Y#mAq+@q"A5pQ
kNYaZB"Z*',!2ipbE5r$J$eGF"-jF6mR8-[9FipIC#I+(+-GVPPUCV[*FmVQM$0r
JFPLV`Q2f$KTHc3ScYH)`lkcU8Ud22DdLZ)hprT%bNjP1f40CS%X1!4XpbAGd2P$
qC`Dpc0Vblcp*$mI`fIm%UMG-r`bfJ$0-dHKKbJ[i`heLVk!'`fhHaZ3U4LTDa&b
U)4mbIRGeXZ$`'A32fS($812aFMi+!%fl6jh%&)#)%Y&A#8&kUd-,#,N+aH$$Z0E
F`k06M`L9ae[YqKkaE6mGPVDZ"Z+USSKelAcVMV''Q4@IB,26+dA,*XGFIT8d%V2
i)ZJPA+E8eB2RBi1Y@09idUjMVKR"JM3r3Km@AN-FMAjJ23pJE3lYPl'@F[!b`&S
ElCd'jXcUaT6*FS+(G[aJc#GfEFB)kjjlJ$pi1Fk1X%FrBKBIYqCLpVUU0mq91lH
Rh-!F(J4+)1GU`G%%"LPE8$[DPcDUPa44!@BYCA%aVUiifYK18L6+$$5kpZIGjRK
)ec[9Ib)jRAJ#BL0BULRA8)+C%K6'cr`-J29b1ac5rH"PYR*dc#`'B,qVZeI8[!8
qbZF`)9S3ji14c8!HD@*KP0j[CI`3+Q!a4rfmmf@B(%C23GcF-#U[*2H@9I(3Yb+
cC+kKUm5!iL-SHfTLe$@#HN`PeJ5QP61CAGr*C4[3R4!(h28'BDRr-pB-%q1&dX3
-c#IlciAQGGrXhLdfaUBMeYZ'RGG(Y+,'JqBf[kck@+hI8YJ*8X"6dbap4L@#eI6
jR)Lhb9&2aeShfl(lq6qj`!6UMqVEd50B`dr[,cM[r@MT9NMcZhif&K1KX#5%("D
X$rQ[1[kEpTi"8cBhjjQfpVi1BY-qQ!jk!52,QFFfY!aMGCE-qP-0m["V&"jF+p5
A%Ed(ZSB52p[T$bp'kb5F&'$MVh,#bk('G8Z'YEM5$i%0dqHcPPlHQC@k)"0QUMM
qk34IGHPL-QB,DV(2@6D!KYj1(rJcU,DUV*!!B0PHJJeIQY$ITJ3Y!V-H,Vm%30"
FS"k$UJ6lIGVj3r16aqrHP5GrcEj*TNBdkejMj'dK5Gfa!B1Z#2ZHj+,(2b@Q2Q(
-G['Z*f*Sqh3dfSqFPb)8%NbAaemp,GQhaS8iN!!ChD(RE'GZCd+eKY5&CQ!MXj!
!@+G++F0@Ah5dCJ$iUZ`h%*GaM6"1[#j23q'kLVA0UrC6MSpFQZY1I-p5YZ2Z8pX
`0kAqHe&ALGeUima!HDc,#L6aEEL"pMC1KI[Tch-'%FAG-iL@G+!"-jhL*6qc9J5
i,+T3DfIK&+IJk269D8(R#Dq8LF+8qZMfd+G1'E$qHfHJkc#'5Pe1'U19M,)Rhf9
GDGqhQ$%&k#bV`B4)fc@Z+c+EhY143I23qP$$PdpdMfY2Y2NZp&GdSFaR(d01F6#
Z%VCaE)B&pQH6Q%Gb+L&ilFi#afF'+1MrjV+lhKHHQ0%-h85c-@kC9[[,Di5lGdZ
&)Kq`DZN%p600GbmVp,pPKGVk-2%REH#&[G*V9dU4*"F0*(U4(B@CFaqMFd+-ecd
"$SZl8M#0p!pebDLJ0ChiCET,@8#cVlkB"$AS0%80bkZ4"`6E2MfpJ+J[8iGj-dm
+#p`"`$BA04$SS"[,i-cEq)H(*qPEdEfBPm`Z+Y0L20r)qSP)4ihXB`T-lCA'R@&
Z,8I"rfThaD3@3i)A2k%N%rN0XR-AUPQB6Ak6E1"C"HASjf4lc3"S`qJaQNHj5Ff
TJld(JS,,c@dXR,&CNq"6AZ)(A1a&ZE8KXXYqQ9H,68bK"PXedLp6X0PRh!KqR0f
aRiZ1Z4'Vi0ArJ,M@85[-I@eVflZmChiANN,'VB&k'8)1-9r05jmB,K30S%LV9J`
kT*2"Ae"i)M"c)4UFH8CNZEMCH2Em6eiieE6DVK0kXEZ-m0HFIP)h`EMCXST"D)@
Q)3Pc[laI+5'TaR%3AQ%$40QM,ijAj,10%"'"*9Bq3DR`FZKS)I26FIQ*d[S"H!Z
c&jLQ-E-NB*!!R0$6NEB@5dGElaP@BPFZDf8YkXEFHh`QRIq`![8J$22J-@I0kcV
p%pV,!9%3iQ'$PXSXBKh%-cMlGkJqr5Ih!rpf!P3BY&+`6),#bRMG,'%YFk%ZLh6
&Yc''h8"!3XFTdG5d'(V$jUZh$eJF*1$[jAA!(eIe2Q!*FNj06X`4'+KL`B!l5T6
pB0k%)(k*2ABqEqe8*YjaG-M2a)3S&1B2H!@XJqmbLZU5*Fa$9BDHTBc0-RGRf'A
EYP+GjMdV,'TcQ8NJ$Pq[Sa'Z$iA1(08pE@DYB*IHKEIm@m[*8N0,PciZLfbCAA`
30V3VEM$MVTV1LUJmXlH1'LPjd8fM4J8%H*EL6,P1A8"VYBHMQ##*)*P[YIY+EYr
Yd%UrU(HRK90qlF0B)[LX`Ud6jm,#B2lE[,)B)LEhA%PB9)-i#!!k3&@j"pdJbBN
DNL*ZCa68YN6TDX0Tb[()Ma#L0ji!ep)R@'@aqPL!bA"MEdep#Np4%eY"E"Y85FZ
qUAC-h3ba'9ih(1KBqbq4rj%LKSPB5aa29Td+BT0pAC2H)e)HiMCa3TIGkC'LYfk
fAM`[!&S24ZL`'0("IPU40,&%ACBIIapFH(Mqhlc,@CKaL*fpb5864*p2HR1-rBQ
cG*ll)ir,Ae%2LY9Q%H1)RlPD(V)K+k3Te54S#VM+!*Y`IN)!XeC$"K(!cT(h&R4
U3NP%D'd+l3"i!K$3P9Tm(Fa$4C+4e$jkI!+9[j4X1"lZc-SDDGSM0X*F5!RbY50
0J`ad#MGp+)[cAm#NA%lDaYYLl%PH`1`X9#@ScTAM`(YMAYJ`*A,GT@@jQ(jGE*@
4m,*Pb#aq(39G5(EqHKlhD[GfEeP+j[X3KZ3m-,8mLcK"!ap%bbQLV1NqDN!3#++
K8F+dH6j%LC,M+l[1iNrd42qUrF2F,`3Q4b3iFK#6d`da,R['I8ihVrX35$IH&-R
MM,,19QR1U)1!rp$-Z49F$J!'@M6R%%4DjLNUSXDa4`'HTHmYrQjV[K%Y4@&(FI(
QhG5d&31cGf+lBQjl36aE&T`q649K3V(Fj"FrAl(`*E+hmbMNZ)cb2V"22GFJHG9
PdHjKb*PiF9Ya40%#CaNZ5qlLl+3p'PNV#`mX5Q)h4N+C)P)@V20T5AM01Ekfc(Y
5(&EUHD)QJ&q*C`M&UEXQhRpbF+L#jrc('GqiR)48DQU8TaXUGbbeeSIm-AHi64U
lie(!jf98FGce6XlBGiPR192mflZTdI#PX8GPFbd32EPd9'er#aIG5pLMEAeaA5[
@[CCMJAT4G$cGrh[HPUk3!"Jlf,kkV@r6)N&q,B'%lF1A%CEBS2[ZVVVhh"U@48b
YNKJeM`G!0',)"c$Y[YK1hqXBeRmNVqA8acqF@ij3,)2f0!Zpc$"dNDFULD(6*XB
6I6L2lLZ1AETa,Qb2KHe3d90Zp01@,["Bq"2[8lKMj)eV9VrrMPaSKB,QPpD(Pf0
(icQ99p*E%q@Y2EV[%N8[R,#1AR*&$lfVSb#qL4h!9T9BVU(m6@VZm&hfpDKlf,Q
NHVrVpU@Rf%,HJkZlddK-+6!+36m6IM@%3+X'`Sm)48jG2SPVi@QVT!h8@j3AaT1
4Jp*53'2,Z@8U!`peE#4`,!Tm2*lR`aXHPbG,je1QQMSV(i5P`MedaTBL13%!XcF
QIiDZer0ZNJjj(1[-5V#*[[&d8TVPMk2r)FZ'(C'LLcAd'*2G6QBbq)[P,A3D$h3
BJ"#p#cN-m+h!dK"bC4AL*p58L-QZ$C1$`DmEic#c93UGbL'1)$cE%L(),q0"5!q
qhMA8LK#Q2FfmKf%q4`kjphT*b0LU[JEeSETiZPbUN!#)a6jVHcIe'DH-PjI@ME9
)@6,6ap+ke(FqM%UfXcjSCk(LC4cP(SdUDiME!L(bV20p5Hka9LU`9@#EN!$LqL8
pS4i0ip!leUip(,[-6HVGf4MT[EcITMK)Eq0JS8S5[R[I%R+UQ(3H&HMkKBYXh(m
5(5NR6P,L(T@9`(hdSq`Cefc49$r-ra@VbLR+ep'RHfFehh@4!8iRT6Hj'AHPk&!
,0B3@ElUYThh*Zrd+JeQ6TDK0MXV4eX%IHD!pj8d9M-qVP@m-3ZJZJKG9NP!J0+!
-qk8[bC6[c83$m$SUC1G3U#RL(1&3cFeEeFA$,qXUD%T[b5mDSUk`'YjBh4SL@ph
BjjS)M,1Ud2#LeRfJmm3@``f5R3c8SH,@TcI9,5+-9JfRHRL9-EH%1IM[r)8@X8m
CZL8fmI(B2mK0i3*6$R-*V@Lr)jc)`-%AiSheKK6UVDl0V(+dqd)6IlI'*Y1EiAY
kebaqHi!irLlh-)`D352QbGEkE[iBbj5DR([pq[*KjjI4N9V6,1+Nf,GBbJaE#KA
'q`eY,JiB#BL-r%(0!R98DZQr8h!dL`98mKQEqGZTA0Hj[3ME5Ae"hVEVJ365T%G
ap*293I01Zcp1Z@dm-+4GqkLAM'H8h51Y)5CRYU6HMRbDq30L2EN'FY13!+D%M`S
mAVY3HPLM*%DUXpLe9qc3Y[hDX8cecjVQAH[EDZj&aQ50CTYZrYT&A(T2H[@F,!U
A06H5f4Iqh"%1$N`Lmq0$`%%(V-2rZ$U*+D"0Mbqe(RqKFGQZiL9+hb5PUP&##AH
(E0q3!!IF@ZHfZM9Tpd[kmS&Y4Ab43LD!L"6I`)U)[`imCB*dF%[)jQF$+KK-lXT
6imDr1l30"95G093fdMXSc+JZ,lqe[@@qcdMJjUPX&%,@DeV(3b`8I`qQ4XSIpF2
'Lf%mfJ&I(8X*)ZE9*((QN8R"UHc(CRHdJNRVbJeDFfE*SR+a0hYJ+BYDiMq"m3$
E4*!!hbT-b#Y(aqG4@M8JI$RhBAk*SMjdkqV%JB+c0chEQ4d`)N3+C"GJ3U4&VC)
rL-HNEX(BrSLUQUBq0"3d`&'rBK)cQa-cX$EQ@a1aZKFU-IA&fr6`*R0@QX0Uaq5
B&D88hSN2cY6S*-bD(XGIcpZX2K+`82"bZE+G0FIh3+BCKiZMLN`@GN%*+h3+Ja&
6jQcMZGFF4KCe$'Am$GXf'%if@VhMl+PNQ&I)$GiY)VHLqaHIM-@&U0SP!@cj9C!
!@)U-F)A![VXq-kBBeQ"GQ08HFD!YrQM&-q%ZCP6+#R&"qGTNh5IJ-rjrUh,J969
-!E!)1SpeEm`c1L`2`KYe!E6eK*a)YQCUD`a`%(d)C2Fc9fZ@I9,+&c-P+NJYkeF
!'-9i96-`!"cVEMG0$hIAl0RjE%mfD4$hM3kGG-C4KDkhD8D8V4"8I$kHGM312S-
,LKI[,U-N`U1#RF*hjF9m9F,Aj9S`6Y8e$KCJH2Bc,8#"ElA*Kq+AL*09pM6D5)L
Z4)6XXmHk!kA56kDCZjHQPF'K5QKXp)VT@ZP3ZEQiCTHKPDHXj8#Y%lH(BEPQc6M
5+Tf"![YUB1jK8"E63fN'QANSGEfVV`-VG0##P,``cU,p*,6#eqXSEeYllMDV8Te
kMdI4(0"#'KbaY&(9+qVC%h6r2rBP$d#)29XNP9Jai`6ZbX`Nb["ldDS*VPbZHN6
f(IP3[M%RT3r-F0CDd)b5FTCMlaSX10d3LPhU(UkjE00Qmr@iB4!3cY)Q9Pp,F-E
AiAir)23Qh9HAbI,%al60Z)PMm)f'd"A@pXJeRL-+dN@%qIHIcDiR$m1,p`C"-(S
*C-b!2$YPZD@Lh%jN3`hkMA`Um5L4$HhMMHbcMYT5,CaZ%&1Q+69N4(20k'(m#IR
MEqG$'i@b@GpL3UJ*PNb81aQi,r%aE"dD"E["DF88,$T1Q5qfG09a#*bplDekZAd
jBeUYRi0`V8lk#R8#0'jAUli4`qfaqfE2U-"HIQ[#($-J8S'GRIA0kX6YP"[ElXd
IXL#rlG*NE2@1bkQ3!,8(ZQ843+eFN6Vi$A#qkFjb&AKY2ELpF)M9XBK-,X41K)p
8,jmVUTm4F""I("rG*TY&4QQPD1PrUhJ8f6,K,L$XaAFjLdjhj)+E`f[L%L#'-Am
,#,2[A1jL*[V4lbjbmIK9hUif')ml*Kl1$p5d,+e5$e9)MUJKp#i0'#3BYAce5-)
4Y4Jq@%S5[J"ebFMJ-0,5b-J`-0,5b,J6b"m`dR3kEX)3p!2I9fBj*,iECi4j"kI
FDD1R*JdphrbM-rBC+@"-jA662cjTP2a+'Vb`ZS$K6'h4[8(3mRNTY'5[H"I(C0Q
YHE1,95jKLl,+UTqhCBmCajpM,!mH*#mf#N4D"XEHBXr)-GDrfBbAmNLkLDX)f1%
MEZF62Tfk$Lb$caBJa)edbXU-Q9e4VV,q8Vch8!%6i%"r$F*6aK[Xe$2[hpZ&eNX
U%IlAT*A(kf!6dQIhFAmPrQ%CVP)m2HFY9TY4&mKM['A0&!%V"Mk!(`UqA4PmYi'
3!,1V4GkiZUM!kD9G$EYVIKUk`1E6Gq!KPc(Jm-T$ZjIKFbTD%XM041PI'9r+!bR
XN!"`#E8)PYd-+3M-VqI)6GhCH`!EE3bF5I`XmY##8eMI)*'&2K*PCpJUY-&SRm2
KAN!T#1#rK1rI5Y)fVDL#pXY%9RXHKd#bE0b8cTXpI%kVP!D1Y1h%T9BiZTmT83Q
-lV#8SJMH-P-ciM*mV-mi#RRT5SMLbl1c&%,1!84h6dIha&DHGE'VIFfaf9((c'*
MbDD%Z#`[MMN4VJ'N9VpV98"#$HUZH"T+q@ilE-dcX382a,e,)")Vr"-T4TH!LY*
(H,&X9`2m[kq-XiUf29H0bJK`Y%85'k!XcNG,SZiq2b+0Uj4A1RBlDI&FXcrj0d"
k$'Bj606Zc3&e6MC9I#j!#KF12I*bb2%)-ZC4q9k-k5D8rr*('H@%HmlM%!dPPk$
63'I&L4&T88QcVZ4brTi+%P8,K,lD$0B"hbbpjqb4I6RMUC(4JIL#BAIXTID!X[4
6@h12mrlU!AZ3!!4V@iN(2##4iiP3&SbcHNrK'JGK9"6Q+C2Y8rq#%K&'([cYcJQ
BLr9ji0U-*m8"4399r%XAJVeFQEGJ[Drd045cU*Ca"Yd,dRm1DGYY5Z$l`[P[mJf
LAj2S)0)A6h4K"d,&i)'lk++C)5!VK+MabMV916PY1cLpl(l68UrFI$6HYM*B*Nh
MPNPJYFiJM4TM(Pdbb@hAJbp-[f#L9QZq&T!!mY-+2GJ5dj1i9M0YIrDVX!8j[a@
YmKLUEIZiTHqefV`0f1L5UEVXrD(bdBphr@@2UUd6D#Z4beCq+Ic6M(dE#LZQ#p'
5E#Q`CD)H**9P&YdRCHh%U%,*$QZqHARGC%AS4*qL15h&Ap3&A"Sjl+A1KRUEmG)
&41+(Zecrq&iChEp6MQDij-%k3+kr5PC'&H&ED"p`S94&Sdj`fYmRTM-cLD2XGFP
Z%rRj-$cYb&peI9(EI&ed4GrCAMJV#dZXHK4JK(LD4c1q0[Te@Scr2Y+,FZJ**%#
AS-R@J#!k$[hD(lJVBbMHF6lm-"r(NJpE*Qb'R(fj!'XShL!m8S"4#aq(-GH2I"&
F-5Y!ASkh*$B5HNZl4mJ"%P!0Z'kXIMc[MVeMe3IUVYK,)+KQAfGdTmQJB4iPP"M
5%`aIDkI-cVCHf@C6U5mj!5%,hXZJ@M3K43FGa[qCN!#j(*T`b&bBEjf@KYJLTRT
%*Hda[HI#@@VE31ceRB82(,ZF)-V3pX)3DKemlcF&AbejX3)LY+e2A!GqfR)G5#%
`"VJN8pjU!)XY0&1rEQ5k'G!'k'6HDQ)dEUr,S2pqpSNrA1d-+Rm%arAG!9S")*!
!4DH2Xb@YDe5NF!Y%Th3@@'(D03X)#3"c9)&$b,2BSQIUVhB!!B%c`ddqGicHc'J
`FkE#TDY#&X%PmF+V`'TR[,'m4Xec!Z@PKq55SrF-1Q3Qd*ZiJ6AE"I0`AUJRhJK
k+@lkRPV[+d0Sd&H[,cYc8I%hMDB1M,+hmRhSRG1"M$ZPK[B#Qbb3!,"NT%@L1(C
f+68qAjQ5@`L,9EfEN!"IHL-XArf@Z4m"$imi$bMFkTBY$qjkM+mb$3mE(GATQR5
Vb9+c@!E0954#q%f3!)X(j)K4+Xj,JY14&cdAlrVqYfNZQSHGc2%@%4-C'ajaF`2
5lF*SIP2&jcq&@[k&SRI'K8jCXAI@+QSiLR!YbaX*2G3$KQY(RN6X6Up2q9!,6@R
XcN@jIJK#AU4(MQIDA0XNp'HSG`F9@$GFBMd"5'9+$Gd$5)$+4F`m'dE#p4f6)4b
Je[cH'-)N-(h,&pkm,AF8[cYa`I-R1%UD!9`b`VdDZ*k[KUM4`8YXQ)4EjV)&3Xb
fRia,k)Z-,-6$jdj%L8i"'-9**0PhT4"CH0c`dXdcp#4bP&"T`NJAFFj*jK+Y,ee
ZX2JkSH0k5f8""0ZAPUL*'J%XFdh-@HEV`'$dpiJP1bjRNJN5F5'0h$a5[N`)GG!
3Ncc388Re50ip6'S1!,&#j8NbZSBqq,jimPDM"cl%BF@ir5lrC*cN)18R$LXa,Z3
`iH&4Vi+S+k6)(cR2adNNqU"81,FDcDSc`XLCkETjHH$fdI5T,aB2KX)%)(XB"j5
-C5R55FY'Z2pU8-F3(dY+qTD!UPLI5QMqEY9Z)Hr4-Z*H[9GaE$-jfCLb!#dX0ET
`0m1!5YRD5j,LSC!!8jfK+aY!h&+)Y)B,)Rc!(3f-JAj%AZ3BB9TCNFEVSZF1'e#
eh5`"G))UXGCXNHd5q)Z)p*)UlZ'0`-bjEGJV8D!VUG1C2hBGTCTVQf,mIM3Z`4)
q-8Uk%GiDM5A$q-Q#@jX,pT10#$U5Xp4aJ[9BZJC6[)I18j8*`&@pp"iRpUpSmC8
(300kV5j*V[iT!kBAq!M!,iUZH2j$QMK,SR05i3V#jaPYE0mVZ5(kicmq@'NCpcM
UZ[FN`fRSeA*-U6alSKCPq+*4jAcDT&YSEDi39h,i'IdQVV&EM14dqj53!0Pm)EY
"IC9j5qLd[2j2[MI8ZjCPRc%ZZ%UH%8$r18#6CPfMYqT"Y-*iHjUD`kIefLm,#l!
6fY[YV)m`b`chJ'a1h+XL3m3'HpLcQZr'qUE&C$a-&h'CM6h6,C4p&f6Y@mbr$E1
bm!9(M)6IC2aT"cDjNBYa")AhTrI,1AC'cc9@3U-c`40Q&JAh6+&@Jkej'#0FiT+
4BdCBIX4clBRPbJ"IIkTD5T-4!MaqDScV'I6BUX-(EVN1,khD!#(--%aamG55leB
0C8X)GVe[ikq[HIRJCLBYU4U%D!"r%+f5-6BDd#q+Yhj#)$RP21#EL*i[ARrDLG2
**98cjYD"EcUkC5jhS`)leBb(V3U@Tb5q0B%2`,JUUJarDc+Mb'e`F*0F)(kqI01
$Mdkm4mY+4)Fl(h"C`bi!$0R%crr'-,1PVRl!*(+Le4Hq`p"Uk4a+#Vl3`!0ThD&
d5iQ6LPe@H`4Nl3(04%L*%"2+`EEqR5(Q-EYN')94bQHjla4f@*R%pE&8PP+T@c-
)Jf+jM)(4*"Bcd'PFL!!)8q6G'H#Pm&C0b&%X0!H!["Hb[IFl,Yd3!bb5B6bb+q$
D%er9cmMZ6KNl9R)$B`k%&d9+$[!Y5@N64%36(!XN!re9$jS0pDkdXepE5rTh-5T
LijLF1DD2kGM[AN1RBLpaG2RBBY$QBhU(NR2J(*(J%UGbqIdZ'dQECZcJ)Qq(IfT
MK'!Fac*'6'PS(TYAJJ2RcH$+4-UYTUSYGj6[8SAIS14GYq)m5iSji*P8,fJYrm-
4B!SpK))RmkPF@4-3+XXA2&1jlTQ!I1-q@BGpp-5#PeIe,mX&I8)UE+PSp&$d'F+
43Nf'-H%U3rJX$hN'G2Y+&8LCY8Gk56YNeQ+4+mZY$I)ZVbpELCq)C+6aGGB9a9k
C3r3laTVdd,CK24F[E4RYN!"2NJJ%Ih2@Y@m*01Q-5H1H8)56m,lh$34[r*G1!#b
*ZVSaj+-XPrFp4TeTUaNl()Bj%J3)Df!Z[,hrcMQKr#cIH)k'D`4$!kqBF"qlG-N
LAXJRCI-[@l,TeF8CiYb`(`kMreX@88!3KGqF%D*RMQA,@5hh[fBX-r0#mPrrF(Q
5Gl'MFf6%mKKhD+`DT'Jrripf6m69Lr2"TLSNi$,Je&mEQDMrL!eSljJ0DP5iH6L
5KdIl!q8#,Z!8N!#M"E4T`rLQ#h"'[a,`DUHf8N)Um%%[V@0'4#a`%VAk[!8ba3V
SN9CcQCI$15CR!,q[CE8(NI@@e*kdKfN4rC!!F"UlAb"0IK*Uq5ra&FS1R8L2Z16
K08U`Q`(Sd)IVrMrcG(EjmrG9V+10D,(k2MPS+3RGbU+YhYT8SIp&11"pkUQXP#C
eUIZ+HL8TLN-L9J,-SqVT2KiYUdXppKDZfIXDXjB+NU5DN`JNAR5VC5SKFGe#Z4F
d'k%54DZci(H%*ACBlEL2C[,)DR"i!3$)+N,LFpHmMcq2998mZ9djq!hB0mJmi'%
[,99Ap,c$ccK[Lb0"-C9"**(SFR@b[qD0$fZT`%80)q9jHJ$a3hV%J@Ve['E*3H[
qFTA9bXhY0,FC*3i$&h3Yb0RSbhZa)IDdZeF#dT+Bq[3[`HqRSC-$rRd9H,ShLJT
Skf0"f"r06N[bGI09#hcS#bCDL&RcCic%B)``CNLJaLrFl"FeIH!m4l"jka#dNJ+
F5C*A5RDh((Dr2FpA-ckMq(*j[,dYib8%HQVkZPTq+!jiYKkT3,C)bAb!6Fh"D0Q
Qi#0K`Xc,CYT#0%D`T$S,NAe*e`P8bi*B`KPC5l-i`KY)U%!*mpRb0!A!#QNXBl`
ebaN,Ul5cD[YHX@$iF[4F*I!4b80KBLIVaYTi+H2(jV$$lXIr+e96NJHljA4Kl)e
ik#%#+UHR6praFb+rYfdrf4aa3*kGJBSH'cq'$XJ(BM5dm8[aiQE1Y4E-aN8RlB0
DF0N)ZM"AE(YrM"pK(TfFaVJaGJXbIqm*fI-&)"kG*UZIUi&8Ui(A)YaJQ2lCFU4
V()pP((LFG`4Ph!Q+MdlACRG'i#1ChYFTBqXMpV1TBfeb!,(h1he&AUc%%ek2[jd
QcYFqcTLZr3m4e$bM8DHLG@IM8TbH*pc9[%A0H"b18bCk@"G!r6LpfQp2Dq5Ih`U
6R!R9FQ-)e[4'XN#!f-a([hV"e11SC1Cq4Xh66`afU*XYDeBS4508kb'3!!rT)V!
61iXRiThHA24Z%3`K`HD59j,#XPcGHl`C2(!4E6@hX2"$c3IiQU1rG#rjj$eMYYb
DN[)A2@Bb-kM[2qQUSRkq-'PN80!-82p3RQm"Zl5XNNC,6JrkA6HYF@cpFpCNE4e
4#emNACM)!*KHmaPf)hND$SPhJelVi4ZK#`0m&kZShC+hVMj@ClZ,+H,ccY9`"Lp
EahZN*DKr(pQ5fEY)2B"RGLhiMLCq8*U!JHq(I@$a(#PQ6r5ZD`rFUriTI$c)H$'
!&Y+`4Rb4E)V8IZ*6%*42ZI93XbX*JUZU%h6jH9aXPi(`L5'I3XH$$CaL%k01dlC
EcJ0rAcM0Y'BGmpcakN+!f4RF6AH&kDTVI8L`5MGG1c#m&P2+IjLkVBCfL4%D(@0
YRd9V,$La%ejm'd-hmk@N"NT3Xc[ebl(VP%39-#dfT-Q&%&D$D&G-)2A9e9c'H+-
N@YFE8[bD4IXN2R`,Ra)'G#`,Ulb6r9kq3'*mH'@"4D8Q6KaM)ES+d,Ei[a$eVd#
0,h"9S"m-Ch$e2G!YLYP#SAQSSZrX5B&"mZdJ-br-HK"3b%F5JdFU[UUq93#,R#f
l9cHGbe9dj!i'lRMDGdULLI3M1lL*E"Ip"0#[dSE6)#HUML[jLND3!-`R%hQZhc!
fZdD@r$FGM8*&VHR8KH,--3q'i[6"TPM`BLe1"NjA2'lID1r&("'Q$RR6@)XTB2%
SlKd8L%aXr&mad,aYT'Erj8!ahC!!VV,"AJ4E)JjI!Q%3"Il@4MkX-I+9rXN-Xje
Id&heI9M0DF64[e[#HNSHE!!4LY%Ckrie6I!*j@d!PGbS',GF50+MI'PhPp2A0&E
S8N1mp,U@S426+HZ8NXNTYUmlaN@"6*`80XqXUE9M[V4Y[&rSK%K$l2mE+)qF#le
AhMZ6f6+*qF'2AJqI[TB@q(e#f&0d&P8kF1j@U28H*(!Z[@c`U`cC9CD%eKAKm)1
AM0QcP0U(Yj8V3"XD9[J&+mYr$SBRrXCdR"c(hPBCb,Ab'XAM4a)$)lEB4aL![Ij
EL-c`YX"U83Y5ZYirZZ$2$c0"B3BrPelh*,!bB1U10EbY6kBFfT-8YAhCc5fL4rX
iCeiXNm8130ZQQRH4NH``VR&kK3%k-f$TH*l5X'5S+5BpSF5E04aJ""a%XIFcPai
V*A#k9,9`8[)5HeGiji,A2QhI-'G%9kB[cam!FTSHqLS!YrZHiL8F*FZe[82q&m9
*QM#"rP1[EVF2%1c2K-[G2clK&%[p$-@1Pk9qMJ2KJa,&2eh8lKr0jTUTS3)3PDE
d@8D4"NmG!`T!'Zpdi[(%cKHC-rD4M6l3D'#1+*IKpMBQlr,c1S[KH##HdYZ$(kL
XjL6"@Fj,cR`Vl+bVcGP+I-mI`LBNFp,+UBQqmIkhjBTJ5rHk3@G$RFj`IJH1iY2
FL%,T23(9Z(+Z(T!!eiJ6P2YeQ6G'*JpdIEiGZK(%eP8HaXZl[rdXKCBFf$UJA&d
PTbJNbV$d+"Ka'aj*Pd9Xrh3[*Th[e$PINV'JZK5Z-%G@0J[+i0)E&Z0+ZYY*PP%
U@l)*"c$3MFL"SYB9N!#,DE[#!A"ai%e,D1%9L(0l[jcikl#HSrdF+@qB9p1E`-l
Pk!JXhPZA'9)ie,ID3bB1PpTa,khJY`AJNT@1VL#+$Zqe,i1NR"K`q@'CdiZ")&6
4!I$,eXHBTQEqIDlI)5FG&k6jPCeN&bYqeC3pi@qb(RP8q[%$5&K%%26r1,pbaGM
pi-khKq4E`kh*qi1J$X4)Dm6MLf2XI84KPd4CT`Xd9JNGLmL'Xdm`H9QSN`9FHjI
Gr80P&FCLDQ!dTSLD4rMe"#qJlbi'&A!kMTrkDAF6THGSK8B*!rKbrHZAI)*XXre
4[`Eh2+60bDAq2QMPPr4aN!"IYe`GHNr&4$8ThDV1bZBNCDD26N-8,4@!0B@8,f4
)!9F1Drcr&$JXqVSpRIi6,%0U9fZ)3ZB&#8DiC`Ff'9jbT4TbJpUJEb[Z+ImCbi-
N)e'P($RM*UdpFq"P!eULQk9PRar)qpX51&!QY58$G6'e%5k+5VR!#CA'($DIA[c
lZ!$GSb)[kch6FYDL9a4*I2'XdpekKi0QK(%6["!ipV'pqV'YV*N-2H+0Kj!!5&N
!eSNNVj2cNm@aD#mS#b40689Z!M30U"da6IPTZIm(2XNp,`G*ppM(ZkTEX4UjPqi
PZhd''Xp0`B3iX84rc&jL+@PGM#H(fIDL'hVK9b`--biE6L![$2HfFN"IC"TDC-1
TqpbP#cL'`UJEZ-E'K4(BK"ifm@SZIdR0cf![IC1YR!U+IYmkdibZ95($V3&hJE-
44qa*DS)SLh1ElR8,L3`h)4D*"cjLSCBZmRI0jm!*',dPd'hBV5(a'!-$*,pJ1JK
kTe6lhJX-MDF&KSG[55JK@lehG@VD`2*#*38&X5"q03&@GGqGCJEG5SKBLNU#qm,
0Ie4aZb$[j9Md)cHhQ#$#VJ2r+[d5@MXmlFcNX6Cl!(,6e[8KZ%(F4d*84fI*"e1
DTY$jN!!2BN*Y4A@8#d8TY&Z@kq)pAlMTPfq#hR`h'$M4Y%4*FIhaA*N,qh4cCSA
dL&"cfGbC1M@Ghil&,3eIC$X9VfU5[qrYVRTb#'fPqd0'BDHlb5INkP%0Ti',Up`
,jiQT3cB5m@9dh!Z-eefLka*''Jr"1Aq*AAAA%IUPQ-fb+aIbmD"5@VEa#ad9iaL
j$C-Up!f,A!VdK$EQkI)f0TM--r#J1$S3V2mTGi6S$("S2E#TR&jF4TLFR&Bbc`X
"h&(TGh4c5A5H[E"1G8XX10d%P6hM%)HjaPh"Lrhbq5!rj"M-(IA%4X!,X(h!$qm
2-Uq@INC1BYiD2""`j,Rf#4k!Pqh)lUSZCLmfRJXjL'd9(r9[mAJUD1NX4"e'"bJ
L`ZR0(HkmNRV"2%6i!4mS5cfh5JmiQB5*C2'!RU`8-a5"I+eJ-K8fc`I9B6bRV%D
r0KcZ9YTP'L'm%$'ZY6"PFfF+Y"9dRTcLi%M!rF@8ZdjmkKIjk%Sp$SH[p81cC51
c!e#$MJjmPhFmF6MAGCcfCJFcXbINJ)I[j9"8XR[D'DF82q1K,+,h-V%dC0@m%LE
Z8(N5PFIcQrGa11keL!'caUQh8pYU3DKZI1*D,prb("0@CDAN%h6,JYYcqB(ETl$
VK'pSX"&EXRFP!)56N8ETVM8Smp4Pmr20%1B6+PXcr`$fP%D2Ql31r(HC`p#2DN[
!cD6%keM94ldbC@PcEZYFAm0KDa$LVYbA89pSmr!&f1Xl"@NBb42LLS#ijhU)-UH
+JjL"9$(AdUR58+-a#%9UG`5HN!$)*kAk-Rf%@ITX9F,R0Q8a!IB[E$3AM["`IfP
jjSHI4(JX"kGXiD1C2L4U)9"3!Ic6AB-G2pk)(1+)b$Aiq1p+&lAV$"V-r1F+*E$
5MU%B@NqB$F5YZSLDmG+*-`,rfLGAAhl$`mBM*PUJbTLmP@*S8H6Xdcf0krEDljj
ISMJ#hK@T8)Q6e0#"T,F9e1X"-f9l1+%&%"mN!+40N!!JRCHMB34rd[r!6Bm#ad)
28K6$B6'8CGNaN!"fc+SQdfT+C@e$fYSFJ*YL2UH1!6Vr+Q$llq3`V1+*dj%hQH$
A$jK59`eX&ja[lC0*bpQpler&Cf"`6(UhM$I,dK3*"03P1,radG&Tc)(RJ*Ge-1c
N!Z4-&65"1k1S@C*$BB#E8pDFfE"XPJVbrZ$!"K9VK(a6$%(p2[E,$j+HfT'rRJ3
l2RG5Qhb(Z#"Rm*@+F$-5md58h0hP3-e4CCF"'if0fDihSPRMU"d-45M`eHFGA,P
%3[-XU,JH51If#J9V@peS$%dX0PcRAA+2lUeS+#%C`fA@ehZ4(BdR!d$kHPbf&@3
TF`ET6Z4N*Ubj9eJIXCqDRX@'GUmYZ`JfTdCLL1X&cY,ASEf46CqZqp$pN6QV,9Y
eGGV(Bp6XifI[GA@CbpY[YRe,6GBqj0Y6!"m$3)mE,cPb,d8%T0d"jaM3qS$EmPi
GcENUMRlB-H(89hG$MX%NrheR,hjYMrG1,Zf)A+-4i!rXG4ei1mHrkD180r6(0!@
rrkr)N6j&NjdVMSRq0bXT*Ge"J9JFUPBDr(a$ZP-($T4SVVMCRcUBqRUL3j@'(Ml
S!j%ZaeR&)PZ5H@N"(IKZ0eRX%8S8aYAAIGDTY-YMPYa$Ff9$GGUa(K(,ijFV&PE
H-rmil"h`&$baK2D$(h1kPUifNGQ3!%FC3RV@KjDSTF"1iLLFhFIf1&Zp"l,@8a*
ajX!PRK+C["QipIp"C%S36m45Ai2A"P((+&dEUKr!UICJ'GK5lelL)LKT%KYZA"E
T%Q@B*V@U%`dShA%)FN6hh2lDha-5JS`J@BMe0Z0HJQUh[Z*bk['T'bJ5(CYphXY
%hPkl9+95%BZMc%,3J[)I06,kVF#hJ*M8`@2&Y'"21ElD#GBdPY-4id!I)`[!K69
-4dM%kUDbdE#)ea66*YaGp*G!1`q9h[Ad'5SF-rqk+c#lYrqI$fZ"&Y#SM@QN)r(
jJSb,D*I!c4&EbH*hjQ13!,#Mh5A,MDN*ZG36"Z`Lf!#5d2r"!aj8C'Plba'@hJ#
rJZ&[4fS)3b3Tri,2'XEN(ZI[0E4'KZ2EdVIj-XCR0BjI5ai9mpBGpYrJ2EK2kpR
DUkBDXrBUbNCVrfUTABIbP1ETS,`T4lUM,-b0BN[Ccq6VZ0+'#hqfLMc,EG4cpVc
"jCG&XVEJ"E!1B(Q9B98eHU!e)@Kl6H%ij[%6)M''q'Xp5M6fD!HBmf3"$%C!4f(
9I,TE@-qQTm8r[@Tm&Jm@pdVN6FqS,G!K!$"d'3`LEZ)*'rPmpke1E(K(3i4B#J3
i@)8RBKBRFLQ5YNQ%%R@mRDh4dUVa'YKKQ1LY5X25A5Kla!AjL8*%J-PdXS*h*""
"Gp6j4G+"B*61CCB(+4m2BclRLlTNp[a-TSZN$$TA,1f[6%QaV3!JCJLJFQa(a-a
B(C*QLaL3!1FSR%41-5mL4SEE'mMK4JN!#[*S8bdr40f&1XYP(!VkdI[38-!Bjp$
hE`@p8bI)"CIXjc%ha+hZhppa8K`f0fQaD3f&&6Al4UiRBSSYK,)fhl3ch4L%+8b
TC$V#mSp8I+cb,MhTD*c[pSLbih+aTB-b68,6V-%iNN[TqS+*Si[`P",CI[V9JdZ
+[(TC05Lc$$FHj@"5+d5V"`6N5HPN53QLGm`TY-!M4a*T%4`bAf+5arMq)5,!Nr"
!ZLYkhefi[F&UR@VTDiKU'fmir"2MUc#a4QTTC#&[YFEV3YpEAMZq5fd4jId6PRL
d*9GIdTPJ#-(mZ1pa5m,D`Q,P5E[4MU3-!ATQ6F(Z6F+*PbjlVId,RMX&6I$SI$H
mT6jZ1jaf(hp(L9J'4Yfr2Gem%PGPI-bXH"pU3&(S`&j!H4GVp,$C@0$V$`16`S-
3jk$#p2JqkIZHMV`,#"9!Q30r&Jh8qDTerM$MM0raM1r%#k'i1kdZYFhT6XlX(N"
Q9HKDJ'b,AmQ!FHP*3NBF3De,4jY1MYmZJ4TQZ2T@GiU5I%dlI-K8CGZaI9BTm(A
ZFX*#iHTkp"(1NN01S&TUbPlUJ@0Vc%5h&[[e$C!!VeJjDEG8fa!TGXmd-9`3K(H
ZIk*)Ll6i9&%rFmKYQJlV@mEj`#G*&5kX,Ti*K1j$mI+TqJm#l3I"M)h[KM83',-
02r1C8+X)(r(ZjB9L8LTKkQQV6e8aNeABeS5JI38&a-UK3f0#aMV1i'bS3KL(#30
L$418RlX'(DQBLD!XI!MaQJ0&EEVqrb4(18Aq#@S3kB"qcA#64AbRk66V61qAD&T
aZA6K(!##)K$ZE#)-)c3q8+qNG@f5&61Nlm9XH2$M64qhZ[4-FYfI8TJS)TV1"3j
T9'#MELd4*B@dYKUTr@+Z!#l&N!$p-hRfNA+'NbRDVUelQ2)r-CUare2cAHF&fTI
XTerHYY[I9c,S)b6C)iME86kMZYk"KPSD@AVF@k38CF%GaEA9*SV[QjhNkfDVpZR
Te"J#19HKRm01C3f"5P)0`#r0YX0j@9[E"Pe4,EQ0C0ilEABNlM0U"3Q[,9TAc5+
Sqa1X!"Xa%q+apE%)2,Le60mC9cbi(@-lmm-@EXN3j1jhZbd*Ga)Y4fXak8[,r8B
9NbMJp5-R8JBVd-S4$[A-J`4m$P*3U[#)aJP0A+iqR,3jA9A2!S6'KINdL14R8N1
)!Nae9-JB4+#(FjC5+'elN!#Q90-+G1-aMp4F$ScYcI5Me@rkeXpNK90ARR'6%""
)(VDE'TCH&`PV!Pl)RjB)hia+kf&()chi'4phd)f[6c*fE4+QqG9[BH9Um#jJJql
-[@Xq!IiVQ0q4KZd2A'6rE*!!p*mSK`[I&fdM"cZYhGq51-DVjQ12@f8YHkL8L,%
T353kI,idpPbNGR6i*Yha+RS&4kh04-AUS8Q(m`)dSqTmGRH5-XY8!Qk%R14%A[j
4kL)*L3+I2cP#9!k'+XbQ4R&*RbDRCCiY2CQ5FNb*X%lXM3$dlkS+c6e1QB3c+p3
XJPFe13K3A*3PMeS)"8aFc(q(dPc&d81U`@i4DXqK*SNkH[&SHYD5&,V%'Q4`96a
mZ2YI+QkIK+im8$!VXcZbm2f8bpEBbG)iNTXGM#3[B-'B8Y$$2CIkh$dU%I@c%Ge
#4!6M-V`9Ni(Hc)SC-dcp5AB*KV%[`%*D(e5a&k&'Mi4bPCHQppH(pCF)$3('C"M
Cl$k"-PYP`$N(+U9MI!PH93UPhQYE"a6-aNM@p$TU2YCcJ'H#j1"L4K66h)fQ-[a
iSSG[1UMkM&Y0Nj2SX@9LYei*-1d!qSDZmrDEDr0Dh2V@iJTG1H@B5IKAIhEBR5,
V3F(FVJ)r%mc%f`crB-mEaEX"G*U@V11abdaE$9#QLU4b&,,QkH-QqFbG,fkAI%6
YKY5Ie4HDRYmjH96aQVX%bTAm0JTkUl(X3*I4Rk2"Ul,H&(fQqD*1YEF(dN%RR2T
Mc5kliYL`LDJ93Y33((bDEB(e&ffCArZp*e5ASfka+5-QfT5m8d-9-YA"Flfd+`R
JpN4G98*!cccD!Nj1JIqe@CRd8jEZfL)$$qm#MV"NN9L1!r@pUGpEXAqB[)2l,ma
fGXGeN!$XV1TCbE@fM+"M9T8`HafLQ4'F)E1&6IAD46Xa''#LG3dhTV*915YraS"
HN!!Li[[$m%G3YF3q0Vc,%`Fb[dVPlT(`GcP[aLVK(aHj8r"QTh5h$#4`Y9h$IBM
S8f*@MRKDCXXMJdNI%$KJ(-))+'4eXQENri4E@,F86m)4EC!!d2qX64),@3I)9&3
ma-X0H4d1RpY`*$fX)(8829i"d,m8VQ[BLAYFP!epP"V)5#r(AEcUQbZi69lEQUC
CIfQ&%`[EAeTF'8k@d)-rmZ6,V2+9@Uc,,!m,k*q,V#TdmYaX%l#bK*Ib$@9+B94
DA+q[FV%&1kjerjjh&!#BUa5FH5IN%6SR[,`m5'2rf+i'[l8+Ub-i21BXY4K2JRS
P@Yrf,5MKmX!"eh5Zh8Y+S+q$5BS3GZ[kNKKc4PkRc9NZLX)lKfbpBCicK#Xm'"$
D8R(-K8Z(kK+*!aKbVeHb82NrqM6qiSPGi`dlfE"[kR+0VkKE4Qd*+93-B%&RKlj
'"$$p-8!m2R30"8h,IE&X5M0M8"E@2hh9JlfDp1PQQ2[`'41A,,"$B0Z6EmXNKUV
+p&pZUq4j%H$abHRS0@2`X842rD&)ZbLc(JDl#S[h9q,lZ4*rFAqB6U$Vd#KKb*j
`3fR',&c)ccE3UE4TdSJ'eYTTqAG2H2'Da&j+kRMpTqGe&%"D'bFFTXd))8!X`!m
d0QNICZEfdLfSbcCE1Nc49!UHjQGX2q-(eC!!D!@VLj!!&P#$0"*S9NjmD6#lQ#Y
AX+3mF+Kh-`-c"a*$Q'TdIV1pKTYE(**[LF9iY[Hj$r3KVel2)U&KT++KU2KPH"C
[HbPhpJFf"J[rS'Eq+GUT'FfbIp!,JaSHBGBi)X,,GXI-,$T$1NBQhkl&[+H6B9P
FU'6rEdeSSB&+%2!@i)J3KlU0bP@$V#QUlX22*qpI"2RQr!P"++$H!eC,U*!!K0I
QVfpfj,mUFQ8jMa*ccpcDIGXcpD-DjYB6T$m'LI(fFM@$5)ZGc6Z1A([)C2eZmf*
AE)[2)8`%Vm&@2eNcBriT-dDYcLh&YH29B`NekhUhQiPS5YAU22)fGP)KK(3FXK5
1iT!!lTG"p#'PMqG[&U+jI)feajL,Jkr2,cY*F45q3'X(!RA6FF58bE4iRB@(ahl
*@XiNF+jP*5L$B2[6i%eh0Cqj`a%P&#%e#8'&1lcXmDCIf(-NPYSEE5%YeHDA,Mi
`)BKq`)*#ljEG0c2NDA['Jlk"H'3Q,qNe%2IUV!YRKeH9R$Bj*S@%VYZ5ECeJDqT
Ff(SiZeHeL&!9!A[mSf6e&m1)5G+cHVeNdY$a!q4bpKH&$%,EB)mF`Z9mbF&ki@6
LUc0[YcHUmA+k+lG(Dj8%QZM0`h#J$krh@UQXJ(Te5Fe9hXlDe"%8&#P3!&(2-jF
J3Ri-q,Yb22kFG*A[+Fhe55&Z-A"5adq@&BH2IZ0B3am3m8c$fiR$2cPG#*6N9B)
kLMa[q)1q40T5Vqk6fjCmLA)X"BfEhpb@KD#@I,85`4+HSCSM$*BEE9Xp,aBfr"D
S@502YcB`mK@VC**DClmSk8F1PL"Zdef1mPJZjGXVEH(ESZ[ST689A-MGB5IKIM2
j#hmP[D0hlqdSpTY[XF0!p%%mmr9[!#AN#RAY@LN1b1F#R01B@YiY5qT-"KP'&P"
lrYF'IcT*LT40#qYGX"AYi%H%LlN26!$%q+qa4)0KMXY!$-&cpj)bhDEm%)@#(IH
"&BPNrViCD,Xr@cb,"6$",5#D'S@ZX8*iEkA$M#N"@9Sa@D$"BVJ[DlDJ#pZUa2-
TJQG%jI,!TUNGj#1`mD,Fr5-Sh1AP9eXDR9Q0`@pGPENC*f!Na#NG3*,"8pVm#)f
6[5Ze(Mh@PUL906$LpaJJ34AANPq%P,a0cCKP5,D4JCjH5,DHeAT)b&CA)Ei1JqC
MHHK!28+!I4Q*IL!cK14+HZ[AM")Y@Zb9N9#E5aE4,26Kl#,LmM1-Ki&`2j6UJ2M
XFb)b!mEZ3`A@l!iAHh'X"IRkTXaCZRGci5J"ASqR)fVh)cIM-XXMD-"mL-8efle
-M"29S6UcMC!!ME5U)"VhImP5$Rqaea5MUde"0P#80VT'65cL5Qa-3cMd8YPiX"J
Z-QUQM'83-K*-bqA@pQ4fbQA[E!e#Z"i3cha!,qJ,GBS"aCD4fqe9+4L%Er8P)aE
NDX[40$[DZ5"11RC`%aK+TbkDTCFFM5BlZlKQ4fmS&$Ce`44cb11p,ha*!b$GFHN
"$'0)-+V$f[X$,!YmG9&c4NDCmJIEi(STRm4X[%!C-Ze[lPq$dQ!DVI)&!ee#Te9
kLmX&5!mEbiaS)K"%qMVQqifV#0$G)"Xk,cXk1HMdNq"9d45p%aXJq%3EVj-@hVA
5hFJK%0fR$JG[mIM5F[r1TNBE%hFrU3jcerXqb9N((XM%a#jp4+N[-a-k2Bp-8R5
"$YcB3#!RTD)p4f`T@DkX#[QE9ZM9KR16GIr'dkj*48-Lredi%ped6m8#GN-%RaX
b$99QkR9FeSHPp#4)S4EIC,2jI@2d*M9Yj@BG8P!4`+#P5Qij,G(DkTJ,[%`R)bp
U6J3BFhSmKfTbZ8&db%2-f%I1*BaCdhK!!aRN$[)SL9QRK@b*M&0934G&6i#YkEY
P4ZqN@YMh!`Lc+-qfCU&S%T6)CVGG3cp9Bd2([c$hBXdU[2L&5rk#C))NDPSZrEE
MbF#Ei)TC&U&ac4@'FVVP0[EJ-`8fiScX"M&4-jk9T&'52N(IKI&iZRUK26kPjq1
#4b56LB)rr%5SJ'XN"'l12JrefArZ#J"H@fP(kXNh@a3f6YR(-&XjZ&#k-V`0'"X
PTNejl+S5liJYcqAZa!aV)94c-ImG9kCj$)'GfHKeTcJVK9CqG5T,5C@rTR5`-3d
%4YVhmdcFiJY614Em@lS%pqQN28r@c3U%!ImQ%derK*!!BIYfq)I8Hdb@fE62k*M
MpC!!i%S)ECML`K0$rl"R6G5a40`GfIZHh%B2JP1SJ-&,dL!`8[EKqbQe$cX#qKc
@kKh%E$[[,+l[`8'J!PV*mjpiDkmQ4'babL-J"pS)@(G&Fq#3!0GjSCR&5aK0I89
qB&FICD)!dE#UM1C"**Mj0Ab500R!MBZQ$iC,ll)AMH6!0dG",FelFAqp9CbCmm(
f*iQZ$iRM15(Fhk"2QlBTET4,bE9jaGKGa5J(13'E5pkSNkfF6'+BE+2pbM!9h'G
8@B)(`2[1f2ChCAXd1jRC`!EJFraY)4Cp*FEQ45RU!MH!bZ*S@5)$rJi+XFG`H$R
MYaC!YjNPr8CAYAKX6QHmCB!-SSHkJ3ZV*$25+'BEr)Z3!%iHSEI*9U!e,AhqSId
A03d&rbqA4Jl[-)%MZISR8YjjS4)NYq6[jLc+#+LIlkb[VHI[@CeI'dPF5iXDA68
I*"#"$"1E%LbCb8iR99J5Be+8))4qJB[6G$d*Ir)T0ANQEM31(VS,hR!0#ahFIh9
3@$4Q@q&5A,UAhAkL2jkh+4JGkcNdRh$6H(KPS!Rh$X*N1)[qFUST$bIdc0hq&(L
X2b)JKpKU-`BhH$3+-i*A6,D$P0*hDC8FhFFmJ3&ZZ&f('"U1KiK2fXl,6ba`RBB
4@P"0iGq0a1LC2-qDrrh31DQEhJX,jl6@Z9)BVEB(CTY(ABTV`cqBIYfT+RjT3PQ
JCVQJj804Tqbrc'RCY)G#Cr##fj!!Rl9`p"f@h9Ye2IUC6m6HAeF$i2lL%Xd1rSk
CQ$X,YAIp,LFDZ`,hfmLEPIMVJ'DMRKAYk4`-'[LmlU%4F**,9Pe%%1fqd[DB,8%
E1(TFGT,NJ5Gh&BPi+@Cc(18!(,8a,!pc8JY,9F&SJ9X3%L)NIacL5qKj*[`$mKF
rQmIIC)3`$mNX$,13!0cm2@Z(jR29J*6D!Rm3&TU#DLfZ[&4TjaMKHaIU93cNm49
N5D)k,-,PM5`!P`d+(Iklh`Bmm-fD9&ZUh$%5EH*+`NTAdmeciDIi5$H0A6%%i2J
3J)eeB[,!Df+KEdS3SihPGrBqXE5-DpdiRTHEJJiA6eYcCqmjTN#&Aqa)ANmb+#l
a"%G!-M*L+Cr'fBN'A%!UH)`Y0L@[XlJ(Rh@6*48""#!D(f2Pc"H0#I[$1af`MGD
3!0P6TCf`YLPrG40Zl'-Gp%6aPHa#r2IrlcUNAjfckH4#HrVlaZIp)Ee`+8ADF%#
S0m3p3!k'CTM$Dkh24-+9+`G88D0*9V`%`TB9-&I20Z-4b14Zb!QR6PND*)ElA2F
e)0lh5-Cb,j[9AGkj&VBFibC1,NXPV'k6!KbIkH!`2-f@1$#GIk6e8qBdb&kjMkq
64'5ELqS)S9KBa!(,ZDpFEV4UK`YPAXpp9&8KMk`GBF$T$G@L6d$DL6kB8&$91lF
*YIjeJ65&0[p[$AIVc9G["6jBNYf4#cMrk($!V1!i3#"ME0bVjRaM%cT!rc(H$(e
A*-93MI`mh$%L2S+l&jPDcXikH3`JCfNKh0pQAa4h5d[Lk,5'mIE*D[KEBkPa+Z0
k5r&G+T&4NQh3NrHlbP0++dV9*4U*$2Um$9@4-jUl-$E3N[fSK2$YPh,Q[40RZ`m
6[c1EiC!!-a8qL!i6Am&P2i,c1Z8+2armP2JaZ5DiMA56B%CFJ+mYV$C"()1&e"`
L*MbBH6-+bM@&p`d9edFX&HC'%'b*HhjA9l8$Q'2#,5,R49Z-Gp)LI820eE,0hU6
'+8XcfN2rLkm'P'b&8&&*&qkNd6[3%1dHk%A!liq,+aNL5"PD2SH)L3U@rJe#f$Z
F$@ibBV$)1%%&+QY@Uh+q33j3f&Fjk,60Z`B-()lbVefdJ-2QY!TB)e+&hT[T41%
,I"B9rIrkrDGP6l$K(25'-L#B#qhbiqX@EKQZiBFf-%(k2U&KpD(9&"q(rKaPF![
HcDY`#f&SM!cm40I1A+D%'Pe*`8f2!F6V'G0B@H`+cXr2Ai`MMRNeb1"*kQSf[`)
Kmm8Si60ll@*I`54P$jP%RN4@XSmLpH6"'TYU*Ydefr8i!'8e(6b(ZB(P&QXHV)l
BGFJYYp+j(cNmR2@$")YBh&1J4LbP150Z%Vc0H$`*3f*Ek'MJ+iL'bIXTYS5Sap,
01fSZ80jF*K"#h[*ZacfS+M"qX9Q,k6#&MN6&8i"cF*YP0[+3!&l%EPH`V)VCd[d
q+0,((lSGBLR50Z2k8fY6*C+2,`*%l(UJNAP)JQ"bcjcG24UdTeP$)l!pq5rZh#Z
KZQlB8&8a@82LVf1+Jh-l0ilGJGKBL5@"T#eDPUr,(!GVLZ1@Mm2`QD2Rq3S(FaY
#hTkcj3hKU)cPd+pXC#9+j3DQ3f4A[[!j"DRmFBFc!N,Z%Y,Q+hN!S,pL&FqHd,Z
rarEfD'I01`EAMJ0JQCq0qhpD4h4l2d"%jB%alZR@i1pa0qL@l[q0MQ'mlP8CSeL
6[[E9G1##A@'jfrUII('XrmV[T&6p3"amjKll46+fe$,bK&F'U5h-S-klEmQajLb
Y[ipV1D8Z@Na`,J6eI06mpDaNbpKhQC)Pp*Uha5FEY2kZIc-+E+Dd`$(6IjJ6p$k
2bpNDL+X#h$2lh0U$icAdiV6bF()qE`jpaN&lP6N#p6&!hjG"@63*+Af@5bRZ%kQ
AG)+mF9R1XI*p35EcPAS#K6lPZ0R1`N'RIIaC1$DjRH)+)X+Z[2(P%X(BRB45,9P
CY(XMC$YecmGA$ZQAeRQ!*(RC&pCX)QkZk`@UB'%l&9FK8!41QjT*EC1X9iq#ePM
-R(!,dBi,(!f-ZX[([("XX%ShYbkZp86!Y@#N8N$T52!*qHMdqCm5k1-+(+4rB"S
a-CS449Zf@Pb$l0(,+m(!j4ArG8"B3Fmk1kK5FVS)mpFJ#ph*CD3hl$8&1mkr(XB
B2p2a,bf@AC9HM0VH0l5bSmli2C&2BZYNjfrHb&ahGSGL-YTMAr3'3dUcT[H!bFq
P'@'CU#,1ab!GH!I0'j*Q`H,5dk(&L2)1X%2`Df44K2,G8G,jjD*fl,)Q3Cj+HLX
#5&"EZE*IH%dfE`4NAYGI@$@0IMh)Ae"Gq,@H$NqVXJ3pQ[6-(ZVI,6Vb*XQNXTX
GP*!!k``)E2[)8GPZ8-#G8,6%C4al44,hTf,9d9Q,62lVT(0[!`8faFaaIhTSRLY
PkeYR3jM852EL[1K[CaNX&Z*mii4Qd,58%LBp3ZA63NjdF2PJ9%#mJKVi11mX"CV
#fjT5GHI)!p*H`5+@3C0&MJeJFH@k9SV"0MpbV"hkG,U[Z0EdHrlb($kGVq$f+(8
*hAcGL5YU%P%6)(6VmK)aJGdH!&B492Bae!+H1!4A[eqMh0+,JADr#mfSMDMH#)Q
a"h!NMB`'`SMUS1YmlG&PmM&Tfd2c6&9cHbi1S3mKP*GJUm#(HK$pdFQcJBJ(NEm
@kb#%+bY1l%N'`BXRC%"8Nr[MkQfrNVV22CXQh0rFheEKGfB0FbaEh1YTrmC0IPd
IRAPe&96@`F$#V2M3'!BqN!#r2jfUG34A*m8ajdPk4'@,B-UGjDXAi%0YTi3ZTDF
lRiPMafJ#TKkH2NXFEGDP8NRj##T#mqVTIcjC$B%,86h"SC'!8qk@0%)HUJAe*8I
YAeB%0$-N`%3U&I'8rXMLeA*[(D"fkjJPd$A`C4rS63Le$`[`2"3F[Y")AbBlN!$
S0%d-,bA4Y@IK8(K39rb0[5p+dDI'cZ@cJJ1@Ba+Sjdj[Bf3H(FP41K,%bmFFHZ&
R6$&0`MjP#lY[(NeY-e5h8*4M"FXCN!#+MML@hQ'6b#%[YqbiBDY#$c)#LZUrafL
VmjXGj%Ti%`"FBl`aED8S2,ar'2E2KB&@5q[bi0'kd1QfDBKHZBp)q%!LGi&`rDq
rRal3NiaR2mS*KmNB"BMT#L)Mif'#@YMP%XIF[e"9f4Y,JB9@$fqN#klS`fc9,VB
a+%D,A&Ire&!X39BmcKC!UA!#-qGCNbl@Qr5i@+PEKkB#RA+5'C!!4VmdG-!(4SK
P,F1MN!",G0bYHNd$%MeiYJ9601Z,%XpjKAf+l"J-qlTei9$SS"ArP`AFh3M#MM)
PJ2c5"+MXmXkFR8M,AU6qIVfl0DUHrp'4ep,j'ebhl&P*bap4U"6P2)CM+pHVQa+
FH,`XYRrQ(Ue`3$Pm#!$jHIAMGiXeFXUJUDdE!iF6&(`UC+BiM4BZZEb`0fpMeF"
[fHYGVrB")!p)P&HXb%LeNqYp$!b3!%B,q+me*T3jQAhXENA"r9622hX%bY,l(hV
1Xl3[kD4Y&LIHc9G@GGQ2i!lQ`dRKr*BV9hIrBA8b''aFqm9)"qh10+-HaGIUN!!
2PZ5bNC&I,S[),@U$@PC3BF2j%Fp&cM@bS,G1Y+66AB#YPLp5+VN3i!&KdDM@I8f
92B"M'U-E!L)$bl0!`6XFdC6eA4SRMT(3@9A8e`ljb96k%NdAQqdGlaQZpj9)cE1
)kE'KNcVEFl3SZe9fMT!!BFe3eq#E!qqZ'DkGD!!Li#rLKF!E,Dh,EG(Pkp5J%%i
+mEH&c)90Ikma%+Ll+5j-5Ym#kh)A6(d46mUXaIpSCDXC%SEKjNrS5-KJdh6#6!R
&IIRSf@r99EPKNT2-LS1R`6[HAIpqJ9Li6GQTdV-TS$H$*I+fIFE),bpKIma*1qq
D#ZRfm%H645404L3#kDrB8blpp%i`I$HlEm3mM,cPIB!Q30em*+8"Z1IUHq"AIXd
BfXD2V&QThNNMr@%A(Cc+@0fm$a-4)h4FeXT85P*BEUh)2r+LfpD'!-p8YDLEFGB
Ph&`P)l*5RYb4hZchee-I%I-eX"b-R93QE29)X$[Np%Dr$@eNl2a%ppMbF&`p-B&
HKS8NJ3e1*G83XQ[*d)%FN8JC`!8fE8PZ)"CUF*!!RfG+rqmRM2fJL(DJVqaQPFL
*fcXB4`'MH'V@TmS-3LU,'dl`qcr3iZL-lX4HCB$"-QYV"i$r1Nk$k(-TU3%1!(r
a!qTf%'D@c+cFm-VMP%KZ,1T1+04VV,R0mm@Y0kU&Rj0'dZp,%pabXZ"1JEM9*r&
UYaC$K#*&E#2[b3UkYjr@**G(h''FrP`hImjLPJJ)6F+@dP5VDSi0R&MHA+h$I-f
4[!3q!*5Te6EjcfiCAJDjhbKi+3)Bf2LT4a+6`"e8%6!Eb6I$)dFlZh*kISNHmJr
M@di!2crF'Z#&Sk4$!b"S5GDI(9b2Vdqq2q1Mb)b@c-$rV4Jbhc'3!+"e0RC)(m6
I$#SkjF4SbiHKS@1`kc*&qQj(hl3qfZI6NR#QN!#8Up`UK3Y+-Jh$6L[cS%0QZdN
1bc2R52eFQhN&99lqi&V*j4(VbdTXB"fY4TKHUH$$4$A!+29IP&jp9T)9+-d(EJb
%CX3Se`QSH'CJ)dNE1mP%F`UHA12"dNmSZ-c6q)*qA[CX*9&`m'$p+ecl3S)"Y&@
f9Rc5"4$$2R$0a-!QlE-RD+12D*&MQLH)-+a`+0XA*[H8-1*8@*ZEmrf`$RrYIf5
LMYHa32iE+Q)"BTRm4+E-m6Yab9)XV%VMC,2H)dFPk-@9BQ6Ni2449*eZ*Xb08`0
QG$U2'H-"9QEC@2N$AE5qDqGb2+UC&XpPQ08*KSZNJ&(fhpPJ1IJdF-ZEcf'A2)b
LCNkEqbE&@VT8'iG!Ve&!B18&`VGbYjM#"65S(dN2pGI#@cD3!$a5`VN8EMV205[
kl!*l`j9G`RC(c@P29N1qTS&Y5k5,[3CF4iA!kV-MGm++`Ym"qG@,0RlMCe,*IHd
P*L+1$dj6p0d3bP3k,%+1Rm&2Q$r#d!Y[b%#Y`HA*RPd)pVYLa&bTj+SQ)!NNR)C
G*GM5p&'XbAISp(3pBDN3UM+1C)NVqqjYH@e'0'ArCQKp#BBT359fCDeGH%D5"!G
8#'E![hlLS&#'JK!Y(c%I'VMEb'b!bmbIAPQ"eVi6%G9RESACNMkG8)4#SN0Z2!1
3!#NmR*EZ%pXi,bD8+XTfZQ$E)C24TlXiq)El*q5ibp040$)XaaVdA!-G9X,h$BT
)c`P%6Mj6fKJA8!c$kT0$H28Y''A)%@([DlAXaQ%PFXjKmBD%I[qUXZ'8@KSH0ZP
[&hJUZ@F,!d&IH"q[2)#SV62Tk+,Blq*[qj!!'mU8Nl6`blK@RqljfEbJ)1*d9[2
0ZEf(4!jhFbYk,kVb@fpF*fmVXmDNm2P!"8rGp9p$L['SBD3P#!-FCPJN0VNG0%#
l,-mQPPheR9H1DDRUBY!D5FS,SZKS,+Fb0&ra!CMk#ZpaeVXXXL"Cljf"#9@&qHB
hLrETGdkQBQ)3'kBC0HPGq9[CS-+R+Hr"b@p9ZfFe+Nh*#U@$BJU%JL"IaEYS+#i
,'+fH$@8-PJ!QZS*+@#PfH&(6a2"dEa(*C@Q'M+[@qDd-HQEjqkXiR&qD#efV[)L
[AZN6dEQRHV#I9UUeV`5SI)e6Ud38$`iI&5pHampq"[2LUm5YdSdHk&D9,kdJ86h
b2F+KS0+Yia&Fhrk[A$h*lY,SYZfAZ069ZC8IS5!'QfB2#Q&jjGf3!"M94ma8@!A
H)c[*3+h$0H8K6Z9`XGdI4P,&hlATAMX"&A$ahH-`e"Zq(`Y#IXa+TCZbq06G0rZ
f'Gk[amd#rL%0M5ZiSVSL"h)f&l!B6*3)D0rfG9%ddIh,AHTm5r5d"Z0N,2N*Q-M
mRp9JAafUY#M0U31XN5A%,2)*BR,r2c!#j9`+"ehY[cc)fI+$lpkSpH3@($BqG&$
rGlC")9j52D!a@Q'X'eU+4"FEe*mmX$Taq@q+TrJdJ&RYR$!"-YfDFS1kRKRRNq3
`%rLfe+qMVc`Vi[@5pc8Nf5k&G3!PQ,hJdrParBV'KJSQHhR`G%*ahff'NJ(D&38
Q+Ga$eY@*j)fl1&(i%'SDrIRr[`HM'Z@lF'@aYaipp3M!@Tr!+cXBbUP+&r5'X+6
rIVmJHX8rMK%LaQ15Q5FX6-hI8&U1k"aD#(HZ+C`%D98`mIm4F`8r[(8%-q)9E`I
c[P3V[,5J#Q,Y1dj$cdJkYTpjhKX92(rE(GpjF0AcE2k-pTcqDHZSR@4$G+DYH*!
!i[GJ2pal9&f"d1JP#G@eq+5JXpVR1ja8,8e)RQ6,kKbb`@)EG-'8`#5a)45Fq,D
%"TlH*-(PK6XXe)hHU&Cp!EB0,j-Z4IHcNNcT+eK3Xq,!3U`3Y3#[9f!%*+[dBkX
&SCNKdM`a`mbr3lC$e&iY9BK,Kb%f-(0kkCG&8-I%8a"A&q@BZR!&4G3lk3rk8Y(
YbReMNCcR%S-Vhic2F@S0p!9Nb*q#4)aNQdM4Ic85*P*jJVpe`-kL*`"@[&[PdTm
'2kRba#JjEeir'9+$cVDKar(KK[5fqE1`JFDYMET3DNq99K"kjdYDMG-IlETl*NG
bpG4b,!@DSZ1aq2kLE$d@KKmMRh4HcZX1EdXYULQ@*cYXmRcQccm[J`@Aibjlf5S
mf6PlPYiEP3hM%N'JfT69`MLf`##iSrB,CC9'+XBMA[LCD1qAk5c`q@fGJVA-ZV6
@l%DKLAK3Ih"HM,hH9(hBeQ1d@D&qB3,Rf'i*lfIJG4-cbh"Qpbb+p-dr'+@fPV#
mja''DFVq-K"XE@')aAR9BfKl,a1b6jbQDF-Sq)V3T&A)(J6514aZ$JVYCBq,p%!
ZBfDL%0ak1e9&6-I1REB@Xi6hf'XMTe5HQ8*%E@9+T&e@LZDQdCiZlV$V"1ppZ!C
[k[6,b1Thrfd1DDhJ'TbTE#XC*X34*d*9VpL9@T,!"YPC@$#L90ipLB3b59N4fkY
VkSrIIGX#!jB`[4cl#4KrlG6V&c)R%0l8DIGGC&kYc$J!'[%(%56Ab8jV2RB[DMc
%K!S+MkH*KQ5r&maVFD!+4L!ih-aXIP'XIX%a!1p2p%'#DILHTYG'*`XPS'!U%aD
+%H8*Gh1Ue`SPl3QDAJq(@9GhFc'%k299*+R$p9T)"#IE-qKe`C!!mUYiD`dIX#8
Qkc%5@$2#e8BLVFQd2PYE1,+lSJ*6FXV0cY9`D4jhXE95[@rB9Mjpj-6F80KPb*@
he+l1APJl5%m0@$im)@1bMVN%J3,`8BL1bBHF4+0qjHBP*2Ump+M9RIBLK59FQ9U
2EHAiI1)&de&I19)ep#1B&E1JS3bI26f,G9+0dmBV+%b68jKLb9!f!kU(9$ipSUj
1M'`#b9kBH3Da"JL+&ND9RXG`-4eaB5iKP%&I(M90RciQf4hB&PQcYRj%-@I'"[K
3G(6ah1)hL(K,6ZRTfD&YUVc4h5F2[LN*YGKPNQBDf+qA&1X&QPT'&c2+')h3q)U
)#LEjQ*PILRFC&4&Ypp,hq2MKH-2qXj6fAV06JMDDj8k)IHA&@p8ab12bh%X"ZkB
@hBqJ)4H#'eb4Ql%bYapbaMPk+FNXdVS)3l1"B[JLS@lT"-[l",a9Cf5e'6JGI!i
,+JCT@ZN!b51c!S9jHaSm2kI$e98`5BB4bUBh#Y0+&%k1LqJjMSEVC&[mDRCHQ+S
J*ACJ#8Y$E3ARUqTF6keX4QVjjA'B8TaS)JJL`"`MQ$E"+hf4%)jXpe'-r!lIX4V
0qNUhFHUrF'0M'hR)hA44%DJLDlAefC,eeGKE#TY@$k&!dim,J$"fSHFh-Ma!@'f
,5j3D+MjaZEQp)c8ENkSV0kJ'bQq-J%"b+Yj3ZHrr6JL"b'$PJ!FCC+ChDhMeSDP
Z$%k14a5f-Qh6*B-G1d9KiY'H48KH(e(J#2ZfDJGA@!LZ+6P8@'EM@6B%U('FcR1
*efG6#4l0#'hqi'Q-2e8ePe$H98+%9SLU#J8GMmfrB02,[lVpdEmm'K9'E(BUXjc
1Ta`XhhiNeEka"PXDYBCi2TVR16hY(P[qp-SPPMr1++-'H[cY1pCjkP@RM*P1m[D
fb0&RQZNKCUm4&MhTqhkEk-'r8H@8iNd[1%ZJ[k0#!8&2@3[2VC40ATD8@KPbL4$
!Z+hqli)KbIV"q*jm1ejEpE,TYDfp-BPb+IECh'JjA)*MC-9E5!E&mAdP6Q`fBRJ
4Tpfkam@@kkQN+%pqLSm@-BrP2%Vkc!p&e1jj*Sj"fZ9cQ3@0,Ma$YISShq"LdE*
N&a`V$k*D-"&#06$h8Q,if)jB*3bGYkYk+dX@)irIe3UFESK(5Ii(I2ia4&PrV0`
%(!E&jQCebBCSK"8G0h&F%YPRB4JXRbYBebF85U8qQPN2MS[VLCUTBVlGh0l+@`6
D4b+*N5')j2LidBQC3ArII#G0brfi+A6N`AZ2Z!C1m"6l(BrV5(Tj@dYE+XD(r[0
#a8$4NV$r+kaEmPF4Dc*A5(!fDiMpdZ!FJXcCdPF3VrlmQ+A*EXNp$C@RN!"+FKL
Zl*!!(LkY@4`bMr[`GU!5h[b)5+DP!%5N"4aB4`G$eQU#j*l`dL2((RA6Z!EiZFq
21NEehHJN%+HT[,Q'mb(-[2LY2V[6c%%L6qDLpT9q44bamqhB6A3AXeldYGpbNX)
F#&GQJfE%Y[4r(,Z"E3,#f+C8YQ"D`4+f@1kQCP4!J-+')`[A`TM*&'pCj4JG"AR
aETq-&q!YCpLY&38@,cbmI"9(lT(B++KHbdGENm1e[f%6K+Bb)lAS-BD5`ZPD,r!
`B[*8Gc(Gc2)Khd4FHKTVJEY#3N!(cA6XeHQ`534i6f&BfebVk3S+D-k"X6B$!,"
d'KMG$m[Z&1NV4!E)GmY3Y+aV1QmmlrI)903)m!T4QB&JlGGVKSF[!L[%e3f3!(H
i!E8dA1qph!kQ"cjBfFMDd052!#ZB1VJ&1,i+c%jL4+N$b@A`0!PI8aAc#,cif6+
0@+SXY+f5FB&TSjQp,iVA8b3e9GddjRIU-N&YaME592"S'Ym-1#(TC50G,i&M`L9
UYiGCH'BaGb3f*@#ad1cEV@CeDYL!@M)Up3!mJ%KQlrYU%,K6@Mh[m9qS00hSBBU
(afYNk&#m8R5HmQM*Bl'&`hB#Hik6U%%QGqT!16QV$[pj'JXIFXchNY*4$a$M,+M
mMFSLLckT-kL$q6hNaBGZPGEBMiSpR@qDUR%ZVpCTr9G9q+#a`ZH0IHPN9C[9V,,
YYr#8dZe)A,#8!X@f[m,iXmYfk#2Sf[EaYjPCefQMNCUEV[[0AXSe8+P!6IVe4j-
AZL`h"6-Ql[DYKc[Q`SqfE'q%6RYq!Ec(X1)aLN"-NHbjNG0iN6%d#cRh(RU9-Qd
-m8ma(a8Y`aAJ6mbPGmU%pj!!pkjiPZ$Jh#G08-@H#CHaU%#Jq2GS"K4BY,I6NVr
lDB4JY35-"%kLVM@M35bqdiYrKRrdh`6H6*[mf1Ccl4ZYdd+Ib3L1fBq3!'Dl-dT
KTFqKpiDl926SN!$1A,j$-VMTb0NJ*-@Z9X!09QDU8X3QUh3aP0j9(4NfQlM&`U(
BccfKU"jeX1k3!'!-PlXTm()5@Hl8&prVVZe`aI)"U@U2iT29j5@QR-)8T,IXIk3
'LQfQQ&Cj@l49%%+m4`DD8)ZS)MEUE&!SVT!!hSL'Ij@"eIDb9Q#3!-3V"!*@ZHC
0k&%CmVGphI9H,U@RC"UbEa2RllU)#DpHee18P`ER`(pbi-NP&,IF5Nk#V@$Ar[6
eSl*BfMh``TJ*f+&'F%fi4G%S!6S)*UcqKhG@!qT88Y2L"PT"rUljc4lj[6A%6Y6
FbdG)Ue5qLHAURS@L)P(c!VIC!VD!$#IRJIj@"JPY"[#J*d4&96QpDGpa@BfAMNl
6XkJ'Hjj$')b9q*U[Sa5q`MjPNI[U655qp2a9D#cIf%BPKl!SLV%XFS'jS!bU8T,
4S+8i6m(2%h!0QM$qI@XL0iKr@QVaLV!BA(PCXJNafQHUm%Dl9AYRACL2r0X9$Df
GjER+-+iD1*bRl98!0EIMh"9bFC&#8`Z8R1h1L6&EJ!Z3!+&K+m8&lI8(,I1A5YL
aB$5J1V,(+jUJHL@Ek%I)Cl-FZUIrL`icj,c*$-Ia"NSpZ%ahe,e*"a#UeFKEXHm
-lbE'cmbFfBA8`V&D)'l9L5'L&kJFTf"('X@%5Vb"A-qRGjQ$TJmE&jL#YTY"RpP
U%885`pmC`F)C$j-3qXrT+2$Sq!QbmSVm5G+9!i%kfadJjp[5L+f8Rp8dr*K1R6q
e2JqH(%Rlr%YV135@)3Qr#8%ej*PdViEiSIGLXiB36m8-TETFm1'%!fKLF3U$%K1
&LcP$F&KH4pRVEqB,MNC`[YACI0@Xh%JI`2kG,T[ReF6DZ)4i5+(&'d-FG`0ZfD1
QYlEjU'LB9hc1!#&%0b3351Bf3A&jB`RAb9h`%6Y0(Kr@6q1K"f#GLR+"4ikd,@9
1h'e5FD4[V!3#*6Ad,0iTQ08QS"e@@A)2i(9-#D#-Z2L,0m`S&"04B8QH2&LU9Xh
"T#'N"!jq`0XUY(X@0TSjAM*L"NHkR%F,Z(K2Z0X2c@J"a#8FhPSkGG6d,bd8LU`
FB8KC1YmK&9AD0m4-"P@IrIrHZD3K@Y6eE&EL#Nh9`mK%AI%'94JSRT+GI8r-,&(
%hBKJdSJ'X'90R+3A+8N))U"(c3HU2hCG+5c[bF-p'cBm"(T3TrTXCr8A2Cl!R(q
qacM@NR8A`Di9-6$jqQ[A+N'Y&`U3!!rcUfar%PNGrmha+Z65YTA-$D+((Ih`#e5
!#DEPXddmSb9Ej2TIeXaC'T5e$XJLXP0,$UXE`+0QA[DQ9&XJKH#m,[)V+"q902i
K-c+RflQQ5S6DH-XF*VJrr31NfQ0$UAq9Ph4lP2BiNN0m1P2DCCE'4kDcU!LD5IM
Fck)i$&YMjD"E!#DfchA%E3C&(MTYlVG*TF''#HZNdN5EmEI4GjlDqMh6V%8Q@j(
3*YfK(EETS&p8#YTlY31h`$ZP$q!aXRKVRjr1+*'DN@qiEp6"AUq8!fpNrU&f&SA
a(9Bf!#AR,[l1239Ua[i9Pc(JIQU+!RIkep%eReX'R#[YU(,V$VpNNf14JL@2$Ce
+0`c+a)`DA[3DbY2C%KZm-2C9hM,"0dGH'@MFdNEAM6jHP+d[SBdDCjB@+pU[0Up
r,M3Ae4RZS5p!)pq!*bQaGIFr%4+N0LL!M&ReA$d&ATccFj4D$hPdB5X[a$ETK%F
*!cj65&b@J0jS"PIF8DmV9c`X3fULQdYA88GM3FeA*prX3NJrZR4R44AS$RYLJ$a
k%5k$fCr"*H)0Frjbkp"h95i%EJj[&blhYdq#QqI2lLclq[3+XbTC$EBV8!)3lfq
bCql$Z(d2`-2%e%YY`f6BU'pS23cGhS))I0U8X050IT!!q-f6AILS$@JLLde["35
ajC%+"Qe%1YQHpBqDLHMSI6",VAQjFYeqk,&l3[#a!8*,m2$m+(#[&C,rX2$("9+
@(&!ID#h#"$YRf(9k[TfP+'dq'MA4+p&8liB+JdbBVb)UB$4V)2kR@#*$U8br5f0
PNafjM4i8#*D2j,BEPm1d6Udpbikkb0bS@A%%),m@4GACXKriM+ml'AAP6'i)&-j
1biI`I`rr)dU2$FML9229+klIEGk0A(NE1d2Q886UrSQN&C'c)cDX(S&3)hk0YZ2
HGTG$Ujr1BkkG$`L&!SH18PSZ)$$`Y'pbG`XNSHie(T%[XAVmpDV8mld`Fl5D9"k
*pFQ*ecKGLJd5K*EApkB1feX04hV!m#*G&f(1FSi*CV&Th[G92ij[(KY8lijdehi
K'ipZGaG!$TA(`m++R8HReQ-`ZRb-%"H[31$X+'kVPQLS8Kj0cUj+X"L2&"j"El9
SZ%-F-$DPQAkIm-kqT062$@h"i$d1JiiG"%r+0K@@F-X+l"(,DmLeP4%3NQF,LNk
HDmU@+[L6`S-3Y#Hl%Z$#MAV!%$ZMZjr%URal`ap8Cm-6k2(fCBYAIpCj@iDM#A0
GG8(ZCF$@5m3l!`P2#cTPAJUDEPEk@f!DYYV`-e4iFc+Vj6!6Cf'c1X+&GeV5rHh
V05C05J&a0@K`30'*R-BGNI-E8))')#VF)cC5[Eci'f"3*59-,*-p-3Hdb(`Ql*e
RA654ca$S`"&[JUGARPhjm$-632%q*rbBEBVbGT!!iK6'L9@aVRm2MGdbm8QrN!$
T*)'VM5$QB5CXc`(r)'rZNp`BG30MN!$iX+Nq29AecCU@0LX)@Dl[jK)!bSQ[5jV
GAiKY*c$r,-MlE8krr[2bEPESf*'hM%UQGe%J3rpXT`DBrRG21(5G`!,fd%D"&A+
c%8-m+pYQ4mK0UB059X3)kUpdX$DGkDN*%C6dkhmfY5(-"LI!89&[jbG-l@0GTT&
-#V+YSMfCc0!3$,Vhl&pmmr-behKri"AHJZYjCPcKB$Pmj3,U1b'&[dB1cpSDXMk
hcK"6QdFQL6Rk*KKQ,l$HmkI(dk"4JFBmShfJBNFA')&%T*34iT%hFI4K4KMT`kT
h@BhHq"BI4&(['2a`lc45G@VME`BQe!jNBGicd-V4hF8'D[XhC))bh)4140)dqEh
c6XlG9IemK*T3S'b2id9rG+Te,L)R)CrNF2fkr2mNU*3bSCUc+5J'HB)6c%kICPN
(RA8kDm)Fra0IBcJd6(-8RDA-d4cF9M'S,S1AM6KG*1e%2[LIcfeB#@a+l3-S2MR
`[8q9*&(1l!D(RR50Rf(0MMQ%*6VkE!"FiF&[Fh9#%#q&,@$elM+&U#e9c1PrJ(m
Y'fZNDJiiFc$aHGlUSB9RG1e4Je"%DGkK`i1fjQ%PFi6S)r3(1TD#l&8882N51bl
KDkC"kH')*JHF4k)BIM6V4FUcH+fBFfb!UajqL8AA+N(HA0ELfc2bbFP9(TEQQ$&
qND"II+F%imAZjDlNeS-GNRPF6b6FpS&4JEF*&hKEYmklMm%cSYC,N!"$AlkkRSa
QZ0AE!3Zcd%8(m-rm@Qkc-)k[92cL0rd!BK5(HEdV)8d95*CeS)$aRbplL(&N##L
I+!4Ur[(r-Y3f5U@Tp#!V#deAL@2(G6pMIqNrm5&Bb@1[IlLL&b4j9-i[R6F!d()
6aEp08-JC@XISVVCUB,LS%r"UBF%1%DQYN!"Fj,l*bLSUTG)a)@4rU%b-(b!K%b@
Tb)dQ4kTd+Nd6Qk)E825k@Nk&m41qiVM@V#Ek3dkYTrD%[iTr)B2XI128`3%KFqN
ck2+aL6E4SYaY(ErGI-k4krNYI%ZY)m-VX6B%3")G@I#DArXUp!3[PKU6M#L(mTU
c,IFFNP-XJl63Bc`T@'!dC9$hI2pGPCqQZcf,G(kAGVGkfJVmhfFEI"DLa%D2CGa
LaeNSacT9)%-N)THkE,U@1MViS1LYIZaEAP$DhB(N83#(hU-H#SFXV`BeL"FbhLY
SHQaf3*1$`ChiMrVZNTcD42(Fb'VfmFh$P#0fV1&*CYe&`bF(UlTN('X,H6eF`p!
bSZ1M[,@&4NppJAI$,%M*0E(ZpBf)prUTJ+@%Y!k,`bhX!UIHrH*X1P9H8-Uk@q)
K$LJ+3i$5YCKEIq[(ZEKYk6&m69NL%p*![RTZQ3)k3,V0"G+!2*@5d2JMLLlNK%`
Pd+a-E'+qa$!*'m4a!F68m4,r9'pl`UU-f*ikh*&&lR$eFE06%K)9+LpZb1)6AD@
H+kC85Q,5hC[fZ#'l(2+'2jUqZ6*5'B[Y6XUBA+bkIXNaCL#f[2(*&!-mlJFZh62
'bY"YLmiTaF4j(i5AhAApCUFh6D"-@rccqaES#C&#dM4%Iii9*lY"AaPRYh'4YJq
iG%lTkm5fTqX%5i!jEdh4r8-IFTLbADJ(bS(aNPL,FNT1DI49aQEQINAP1lkNk(U
[Dldp2m)+"AjeXaKN5XH%%UP9@`0bTkF2["089+#FJ"QU'"Kb6[9ErE3l#a@Nf-$
5LRpXiCf(JMIhVf`--9@5dV*'N!$!VAe4!R3X3,jdiF0icD(&brd)iARC`6J$P`[
BG853!'BY29+,NL[XTjSAe3LH'fK#"fkQdUGrXHab60!IfiZ%X$*j&6@lrD#*$QK
)[eH$$JQfV+Drf9&C&jS`1`3,CBJp[jUSc&hfSqc8m29Gi[FqhE&B"Zp)B6e!1F&
H@lM6H&5U!#%-"@c*j05902TE"X(RD5aCQST)Z)r+Hfk`N!"0kRZBi+YFJ3!T,+R
51TIS&4LZT20'3pZhEV%i4*qjB%V*SY060`p)dak-*d0DAQ$@T''eeD42TMBTm1p
VAFdC3[$-)-p1&4XcE4d8Hrh9FT`jE3Jck2#PB$BAE5b!A)A(kIVlh[%N0bX&Il*
j2%YjNaS#$)US@3(kc)@K@5qUkYlN#R$Vk8Z!Pj0p)q32m"8h9D*DNiPkfUlJV@S
G3BA[50-pM"[*)#)`X2ZerUmfkGqa-UUXY(![*9*rM[BBTlYrc*BR&d(r!&C[[''
MhciZRGJi8@r*hfNTe5*LKMm*SU*4cJ$m61pl%r6+Gaie@bE)B,FQ4&*R'T`11I1
l0)L##BY9@NQrjrCX)HYESNT%Y`*AS5qZq"L(#2#!52b)`RSbd8!I68PCAqCZ4[@
Ce*H#AY6j%-H'&UNYJ-Y)jcM)54Tk51"lk8bq&5P19-6YI$XA)ZC5'(AcPa#Ji@G
,QdLIldJm5V,NjRZCTkr5QTlql8*@ld+qeUV5ikhC!K!U@Z9MZrRLA*a*Xa[rPqN
TIH`6R,`JkeBb@LEX#I,$XL0f%j)ZNK!2Gp"*f)51a2M"N[,pdNHV`JR1FX(pcKI
6bqc'iN[aRDCDcc69Yb$Z[BV3JbV3Q62a%KF#*m5BfPpDZM65Y%[1PT-cI)EA,NC
raB,Nq4H1ME4H[3bP11aI!'NjU-SD+PDa[[2#ZmcV4qDRa42*I)KQ$e'QX%TGadP
8A1`4-AfX4+HkVrP&*JeU$iUT'2RpN34Pe[Y!8qIJ!NHp-pN"98%)Yh-hEF(CiM8
GY6k9HK[KN!!L%mEY*bN,)6eF+KUMXG2P&S3$RARHk`C*lDF6QGVhUT5b"C!!che
rBLSTe[)cA*9CEaG"$!*T9jD)Kbaaemk6ML%h[cS[%FG(F'1XX(f''!8Ubq0QE&&
++9p)K686lHd)HUS6KM6q$PM#pVp,$kFF'j`b`LSUQ63iF@Z+k'd!1X)Q(,ANj@Y
J1!i12'JS%*aERIJQ$U[VK!B$IYi#&3j(2`8`CiZKV-mal3HSjePe9TjeZ[r6mFr
@GpG4P9&Cq38L0Z6-#L%#Sl+T2rS3mZ!S4SLX4p,ijJaaf0[ZZ9GKI-LEh$Y5Q'H
Ff!m2hFc-Y0N4QC8`IbNqI"@hV$5QP%'0@$G!4@[AThp(B,CJCRG"Zrl[LUPi4c@
NAR$VdSM+[HHRpS!qklhJCCIj@iZKYipfNLB69$c30)P@5Xf#*9b3!10,l%,33G0
rYmc%6TJGi[$4mMU(("8krhBm&X4GQ%5(bPrLb2l!F&l'XldG0MAdR[$&MP#Ma2D
XG(5i%@S3m5AjIUq!)q8"E6bSe1&+jZEQ25TMF'HB+TMbLhD82H2eRT!!Ba0JH`Y
&KBC!6XH83ae)Ym!rqfLQ'4Fj%DDiU)`F4UJj5!1Eli6d*#`XS#X3%BeNhmiX,%,
d$&eS+5eN*2cmfl@&E-rXkc-[I$-PU$kphKS!A+c)MM19IdPdjmKP*K[)p[Ja'"m
%kGdbK+),i0BUAQ,RF,@"%p)'(U4cCFdhde5hmHaB1cc,j1i!0)-!TXdQjl![qYN
JmpQ4T*Q+Z8@QcJ"mQ1p*''Hmlj!!J$ai!0,GDd$'[EUiKNr&N!$VqdG@)@2"jb1
[RFTef9&qeM#Vlc"a+-5QIS&G)HD4h&D+Br-E-T!!"4TN)'@R(TYfTBGPfQB['kM
`GbQ%6b@RDC1m&RF@EA-p2@IKK#9+pb@EkZNR!f6QZ#$[PCE(ZrJ[PBbLHdBbpEp
ZZH33h&Mf3%H2Xa*1V[C0d$qCXbNa'6#)NA$"59l(h$TdqY,QSjkqpY@Y[XIp"ZI
1QU&EN[$(llFCepjaqL*NTVE3(i,QNZClm8,5$%m(H1!VK3Dccj[I03d[[I"S+)R
QQ1,q-8qVqrI"RQfMUF5#@bF'J'PSQ,#JU'Ld91#m5k&Sj8Z(-2qUSd)UB0%BYlP
b)D3cY9),G9GmY*25J$fMp5YReKH*iMjT5XFZ9rC#&UB%,jZM$L,@*DNbRh(c'i9
pN!"(LpU(T6E",qDD$@2[aDf9PVXar4&*JAFiMRTlmFL"K)IBe4fJN3N%%PXA0@0
Ie8N2HmmhVeLae9+HN!!@qm0[!B#`-q*4hicU-jU0RaK4+MKAUA-6CQlL3Bpk2)4
kaSfKp6EcUdkYd(Hc[)QjX95"qZ`$,B+-'qDli-5"ch&*lK$3G[+LK$i-jqj98[f
8IT9AYcfUVQ*lL3mb"V3C2VB@bAZZQha$-hPL[D'0BUSRL6r"crkP2-%!KSD5'$a
bp,08f&m11Hh2p(9JI4X)fh(B#`kEpGcbfTCUcj6"fbCR@Ir!N!$-f2p`)8fYEmh
mFZ6FM9`rQ*XUPYBXPKPjjC&XLNHlF,KM)lCjlq[j1Ea!amE0)lY9!(SQ*rQ*X[C
!8-SKk6'6Y"dqB(q4q&d%M'6YkG12%"#Sp(lkG+'VNUU[F[))YL8Qj'#45AHTdL'
LQ%B3!$EA*D``&Q!NHGh80qBT*L+#D*lrHBK+UPhEd,q1Mm,p[%X-m2e$mG2D1Tl
mKP8qcF6'@[P!1NDJ,M[G&BAmAB2D6TXh9k@N3FJM2q-ULFLqlB0#8F!YmVGk8fF
2'JChPk0[QH1DVPdQeYqFmFkl,I3+S2fVf,k1ZVZAjL`$b$+FLSKe0Y#,,KlKkcH
f35(0jp`+i%mMYd1TiZ,N"13($9hqSCI8Pj+%8hDF[fmME%ekMCr-fID1LIa&!e[
VkD+CTcPR"ZPfiTRFh@+3!'9qi-abK(IH5if20%PLl0b)m[BlFIKrIFGMXKff$#%
)i,2CSaj`4H-"6RChcNedi$,Ih90(G`f6XUeKS"q*b"2T6aErbLq`Lp+1S`jGKi[
5#M2!*[-%m14GM-1ZDa$4%+$kNkr&qE82Eq[YKJKJEaMf&@+5'%$%8G#D1mJmNre
9GL8lK5(cB%Rbm2D*2N`kfIHJER[X"d'JmAA8DIRcjZ1G$cCYTS`,NN*rBJ0$)ZM
)AhY(X2N)M`erUS8@kp-'#M6eU@9%U2dCi)-aG**KGE0Z8K2HL#5eh(-@Md[L9LX
KP)jGYlVakl,@AG0-RH!NL*9'FR&bUjNIM1`8TS1GQ6hhm6CSji[Ee836Sa+3!)L
hqEr(TIqArh+b@*l[C53rCBNL,AH#f2J2)TrTr"GhISX$LIa`[2fl"FZYa3)qHXb
Xiq"bmZ+hbUMMm2TJH%p6NciGkUEhfRK9I5KGCJfkNfNa9'&5H(1"0X[89AqZHLb
D%SM@K+"lrEI+V`BEja$iXMamC9%5Q8Fd65hI9(-LTGX(0h$Ra4Bh$3rENR,XH&!
9P'fE0i-9bdLYBCAU1IJLfD@Q4F55T+CjZhE%)SMpm3J)%58'kQ%#`$*qM5[P@Y+
R(QFF("cUIIH&`S[Bl4$JSfC#-5bp2-,p32K5`ZMeL55(i1cl!El``TFTEZr+&FF
e%ELjbUE"alNlK`h"")K!4cr4U8Ahj")f%hEDF3d[!IL1MGk&[IlMc#AE`HfLU'h
mM(F9`YbSUpX-9Z%IMc60RI&c[(Npj2mNM3c3BQe"35DYXq"V#ml'$3cRqVY3AP`
Ecq"TD@N(3X4cC&hMP@0L'r*HY66FSf@MGUm0ibk'%-d@0HiIKV9iZ'!e[`!YN5J
-dear'"@+mQ+"@2Nd"CT0p9p#9ime'2dbjbpY-Bh[L&%,16D+Z[#Hj3l-aHD%[%b
Z[NYNA#Q3!"2hlYF+[CIeT!,T$&@@YQmfa3[#*Y`T,X&b[2'LmhaYEiep*Q-a%rX
AF$BRjb2TVpLbeZalG,fX!4rM-R[*dhCX5H@BEUpKEL2+`bkmlMGHG5SdL(mAPbS
,1Q3cN!"@-"p6p8J10rVb!B`5&)aS6V"rJR85G!DS0Bk4PJcr5a[%i)T&!,a"a$I
@"c6jr`Kd'Ldq!"Jc+3eQUrB!ZipX3ce-pKJrF1a)GJX@Z+Z58r96AHpDpf6q[C'
SFV8`h'4B5pT$30S2U!m@mqBqLaLcPr$9jUL"XSiC6*5!fFSXNM4l!&@kL!-Ai'Z
ANRr$B'jMHljjBY*i6HIP,[S`apmZ8e13!(TYUMKp`TPCGB6fBZf&R(rhb3P$GUl
R'HmGY+bpdMME!Z1ZJTdbPQYUGB,&T'3YVI-9N!"rMr6$U!(pEY6$kUKF9K+&$C,
3Q4XAJ@ElBh0Ikha*RU+%(0NT(P%NeV#-a*8GaCF0Pe'qUaXIi2+@+m!2YShkpVj
Bm39hf0!jm[bfmK(d095TYX6VZF`2$Qp3XY$q5#-'P,*8F[2`lqCl5CH@VahfaLQ
d&eeGASLBSm83PM'Gc4fRQE%qb*Db!ChMUFXGI(5-l,)l5(,5Dc&Q!-#8je0ca&c
P*dhqjF"ir!Q@LV'Si18X5C!!UH"+jEIH5iCaTJIHUK"DX1Rd0X#ZXlaGTJHk4Rf
6Np[L&Ge),K`YhP-D6Ai8e`&`Z%AYE!-hb3jLbBAM")B9p!@("i(fBHa)k)AL8al
EG9dkY1YTQTa8h@kF#a`V,%D9GV$(dV#!ILCIdfVFp3RK*LDH@NY'Z&H8'I0@aKS
aS0#bEN&T3b3S3I$,DIRIUDmkppR4,HNlI1b024'a3X8NUG*I+JcBCd[b+P%*qcc
21LI"`#(+1S%Mh9E+K)i62a&FJ*9[R2VYH@T%$MT['`L$2ciVbV3-e!eXqXQbHNr
iSbpihV)1TbHDHIelFGk,1!Yj4%&QcUrc$2U%L2eVNq$rCU442DBdIJL122BH[Nr
iKIXKahNcaf`QE1l9pj1ZJf4jD[VG3[Aj,q%"V-1G54BHA(X9Q@(hfckL43a)h$,
BREmf2*Q5fSh-UHp4N!#GAp2c1K[B5qJ(6j+p(HS2la3GD+6TZqHARe)V,m(iC9U
M)dZkf`1NfGI`9YhZYGf[KS#+r$CDpEMjbB2K9VELDTGF*)Zlk@rk&1#C`1%kT2c
@hrpfq`5FZZQpd+IA9H39R-&P-r+jmUcG%V[qK(I1+m6XjVX&"-f'DSdJ,TU6F1c
jqUeL!"Rd9bAh,G6Z4,llM%Hd$*3D+RID8*5m4c#F9lVp5SL+,N8aS[Q`'@AEA'Q
HE"k`I9-M`%p,$S5b9Z(TL4@8kEc"cN`&[%fmBQ2qdGm)e0J*I0h90A-rY#LCq`8
mVTIC98DLpU"&*J!DVd1fN!$lQ$PJ9Q"!qJUKprdS1+E0I,i*RAp5qjlmG"hXdTN
c95X16HXG25b-*$VLC81QG,HkcSV!(4`[%!cTiYf$I4b&0(iJb098$Xj%"Ea['K1
Y`KR30XHa3cIGcFSB),9NGX0Eim)iB482K[-`EdbNf'Dc(*pN!d6r[*fr4'bQBDE
3D("Dp(X"*IXlP1S!pjD-01ZmTT-PKA,eD,NEiE'[I'r64rlaEkeI6B"AZFrmX1Q
p%j%I*rUR3IUPq-0)CaC,%$b"YS(N`DJ*rZFb9A6rp*1(@e#+@pi8XK0IMUKD24V
9,4C&qUjDkmd,C`$aGZTj**RN0pdUbqdF%$P-if4V58If8ZfQb0)"jY"f%ZiYfMX
b4MU2%F+-HIq23VFpIf&N0RDbj3Xf!EAI4G9$XZTd1VRr9'Zd0KdDKD0B`Q4)53B
2VBPE(1KaaeK3@5$#LMeM4M@l'H8Tbl0DFCZVaaaeK6+B3S8+KRY@eP`'Q@e"cF!
5P6"REJeeP,)a3"2AbBlPM,M14B-h0j(0ZI[G0'PL2f!8Cc*Ar@ZIfijVej2V*Ai
*)YPkReU$MSjp[a9$hUrcC!$UJAdMDpj,9f4Pi-(HC5F[-H'LUe0cfh%YT9IY1'9
`,dYDRhA0fc'ib+J,$ER9!'qBlqh4R6PcHK@#aZ)&CDNcfH3H5P5ZT19P2hHC!E0
MCJm`F9"S121(&G'+!FNa,kd+L3d#h1N+hS4D-CdF0Ch'VH%Q4G8NELBbfVQNGEi
d9&-f4(EA6G)XHSDY!1I8[$BLDT(%dTr5CDT9G%aX+8'kC4eBl*pZVB88kTPYD69
,@m*`MiH!`Y#2qENppqFR2ITCIaVHaX"&3!#C"@`&Q!"0UVZ,*h!PfClhHj@)eFQ
B!Efaj5L,%Z9QEe&D,A8S-R+(CTr#&8'VHC&el&EHS`!VV&T6rf"(c)'m),S*MYV
L84Z6'SLjf8IY20C99q#,k$fKQ*2l[6E`('RVRZcQ9RbQ%$jT8fFa5QcN1Ib51eJ
c@UJH!b6I,H@MbRk'L$$+bC3VSjABIkPqNAPrZ"+#(iiba0@)%*lbFS`!MEdh+Uh
br3Zm8rjeN!"j*f6%YJ*p5U8EhUDDY%9Fje88A$flN!#&XE%#)V'NQ5f56[1jUa(
%$2"plpZ'mAZ%5$0l)mNcr9A215kY+LPX,@2UCr,SM#+(&,1hMl)E0F'i(cVTV!)
H'B`RAR33B"L!'SJ`Y4h(qGKk"XL*m$b9RiUl!b`J6+KF31dcE`CpVRX819!PBMd
i&9lAhT'5-bf,U*eE0Xckf!++4BbaEX5r,E5*4mI'mp8j"M5qdpe$@(&,!r$C,jI
Q'8)Ql$LQji$@HE[8i!ADTr1D@C5$8IbK-Tj33i"HVp@j,[!UZm'j$UV&kdJp[1Q
Jmk90mE(Hi`J@((VXr['BA!B0A48AK*Sl#JX2#ZVGAN3)cNjk0`#i%1YEK"Pb(3J
BhF25lNka@j!!3J4`8LbfaQRY38DYTf5Z6f'eiLmVNQc$B"IH'XUJD4m$VRJTR$a
&@FPK3E""ciVfG$X$E6j%IR#d%[9@kL3$9Q(`kU0L0#1SeDM$VY09ij-0#I-PL*K
*0a+3!!NK)H#FTpqakiiTrGpfEfGJ9XMEf`"b4BXXEK,++JpAkK3$M`-mUel0G,D
pVH&-U`IQaAdmY3IcFbcKqR%-MKf8hQXrCI()DBTPrKiXH-q%p'$r1"A!3"l3i0$
('3DcQik3!0TEr%E[lHp%iiC9Aq%H!KCeSZje-Jpm8G2L&qQjGalG'bR[r35GiNf
aI@DK4(@parPZ)berpiabdYUKVhZm'[A)FL5Zb3!BRVG[`j6XLB1!9f6-AhSLQYa
mGVpdr0-5q9&P9,HjQN@p%@iN#JiZU!B((Ld@+-"S+VH4ES@hLJa)l&qDk`Uk2Ym
GH88L!K+5'#A0m4I8,)&SR+[!m3i6kTRpRdUJA[miaRPVF5e8"$RGTr`$2Fh$,84
ArfE@&d!c!-b64E+j+H5(%)'K,embRbd5j-QcfeRR,'#ij5UeNj+%$iS*r[SG!EP
&D49'eX$$Pb-b1*J&U31)(CUTP$m9R$+8Lf+!$)&Br(TA%NM@-1QE9b#-P0k'bH1
KMm+q(k%bKKBNS+6LT-YT,9PCJXr0U$i@Xe3'%drC'0%rfm@Il#dHMeC`Pq"(C-5
KZ$#*QGV'`B0MCrcdE,3iKm4$R$%9UXp)4,0[AG-$+#8Ri4RGUASmjc[J)3'`!(L
m`,G4q!-UKqikZLG,NTRKG9E*d*M,8%00B!HQ4[@3!#hk*K'$98ZbfPY'*j&j5V`
)a9!hBYaqP68+jr$TDHrr!3F(4D@TKd!'bV-cS,CApZ-[VbrKQ",R0EXM3dp`dNI
b$VdGjf,1JSJN&),6CcXac'YZR@5IbUY+J,jE!`[R1r63(qS)[#Y[51`@V@&VhdK
XRL#V9rX!!cZ-#Jkj0cT[@lSb1J1b"Hdpc*[U+#@DJH`NX@Xb4p4QK0hM%c%'iI9
ra[1)+E-+ah#DcPmIFV4HLcq5&l#Tph(C-"'KechNN@VTUPkhk33irk"5%qVC-X6
`qI+EelN6$2QeEE`C8-ke9k*,mj@-6N@jKEDMq3Dm$jM9Q"96NEdl)hK1e18`p)3
M8XM"LN3kkr-0!AQ&CBi4aMl4&1"bY692I0bJJjQfBCcaGeq-M5(PrU5a6X26E$J
i#GEL"bmVFFVBGTrUX"S"(AVmA3*SjradJNSS*r4926D+DYT3kS[jMGK(A3Y35UP
6XXl#U&DDAlJ(bk$1[RbEjDHb0m#LhlUX$E#$XPM2VTeXb8UIFKZGmhk"4!Hdbac
(,'d!bSc$e"jMhk)Fcl85`GG*-0KT6&NfRa-2S!EI2-28IrFlG#qDd09h4%@#*CT
4K[ihMp[5eFH[$cCSBdim"U(jPf6i('`eY8BA*DB-P4FRh%H#9!YL3(`'$eVF0GQ
M0ISk)AV*kZlM6ALq2VL92J(Lh3chjf88ei*K6*SK%Pmla'GShf'5QFL$LajP!K-
(U9Kj2Db(b*&+,S9p6KA9V%h`4ZB*$c2U9!@%0-@TcPadaCkXBFYi%G5(MXC[XE6
rQ+6R#$Tq5Eqr6SfK0BllDIDT`'mA11+P3S'KCG)KNpij9,mj@363i'NBV'9pii@
Q*Ym#EJP9AiC+8S2I59)mN!"3,adrmlq4HqFH0pfVYql0d(DGMmEp&XB9GQe''Rc
k-0NFKeNU`52Lc5Ip#J#HYrqKND))X(f)H+5`XPU@*(1iI-6bI8)kI$`dP@FaAbA
"i-BHUVV$P-bF!RQrcLZhZGhEG65i1bPE$fE+mZTIrm,4E45lN!$VKSP3f-RbTea
YCUq3!!9JrPPGk&832+&KaX%I+#kd&HL65SmQl%Z%0me0&UE5&D,(!-5I6M(Sm()
#2MTaGP,SAXa["MZeeEl%1mf5dHY)riZI%LC0T$4BqFQVY4i8V5NNm4Dj1`eK05#
I(UDZXSYUF@X@i&hE#)9EJYrMHA1AlcaZaH93+98E(fB2h[h'Yf$B('Ia1fqjKRC
-P6jD4cCTe%f4YH+D`da+qGQ)NB!Mi'`GPJ[b[%h-J!#edlSL,k)Yk"@,j`[T5@M
'b6PCD'6pJBK!I`E*`1C(+CQB%+i82N2iGL"Ie(b'Pa'92&QM"jYicV[Th+&3c(N
6Adh*+I)PV-DfIpJfZL,-"&S*fEXjCA4$b,ILmaR,$i)4"'jdKEk+'4k4+2$mJPV
'JXK&`H8Cj,p*Ek@YbUq2eRIT&dP%AHlpfU)h1'[12G')-I-&Q"p9HF3'G'cPaiT
-[[3J&KFPV+VCmS%#pDMrXRPh33T,5AG*6[6-#(E8Xf`Q'1rm"Cphk[NXE0QN(%$
aJVkE03b4"eM`Yc*#!RU*DrUIbmIH+BclkDNF5*p0hB36iCLkj4$,LCT260hD2"U
a)GDk@F@NJ()PIa0eGjfKbTBR(50UC[(R"E%#-Ep9YXkEYE6HYQLcaB!6P"D16`*
k'0S)D[bUj6VCbAYPF"HcN!$)dHdRVUi@8BfV8!dIm[c(6Q'NjY+$KI16l!8F[1"
k58UZjIRBlbK#lH@f[T[Y0$4fP'X2klMKq9%c3'"(82m+qhS-AR6448Y%TN6NTd6
4@-qTHDX$9"l)b9JaG9X$1-)Z2RqG`JrI$b`,j0,Tr-+(jR`3rJQ`"-93l"@dVS1
+Md@VAe28`NN#&%RIpfj0DJfAD+5ZGTL!`l&+HRkGmKa`ReeM31-9McKXemG@C$4
,emX9ZqZKEhYVbCfCT+ViJfqd`(@'83q1Y%PB+KNTeU#`5NfZNm98%)[e$jQM(XU
,A#N)0c5"Rcq'i2jJlN"AP3m*!dL4Y3kCP*r@Y36fbP*V8Dkp'ZJC+D[c)$U2[ec
3@p&C#@*A'&8%RP5[ST00#[0McNAB`"mPCaqK)`9r'AXNEm5N3b0@V`2FmHAK$U6
AK!Si$r!!Q1@A,FpUN!!jl)PN9FQ@a4`0C#NGP+CYB3J1jZFH*qhccqmGF88SPBM
TV**i*25Z`k%8CJ`,KP$8U,Y[UqTFC0lLZUK9FT5F(mJIMh"lZTZerIXI9!)0mFe
,Ge8bVlcQH4ZiMl+@54pJ0IV4'0+DL5VR*imT6cP$-,$Q@#fGemA0N6SJQp(N`kJ
-0eYAV0E$k)bJR&HC"MQ9!3JdBi"rUi3(jP@+H1eUj2r3jZe-mTe3Vc9Z,T'HdCF
*4ID$&&Ik9U$Pf42PE5X82RRJ-C2+V--D!6!aiJ2QeB1Dedd'-aEBemHdQV&H(3[
)X"K,[2IkC,pK2`J05BlUbE[6VEj$KZAA6m`YempQNJjIb$!8q(Tpq#Ep0UlJT,p
NP,`-BRQ$f*r5BE%TfEQi[IiCdY5A1E4Rqq"RG%+TPED#`6iI4fr9Z8p'qBTXPA5
5FhMUrLcJ@C($r5I@pMmi&mJl)q`eT'1q&MRA0492UhSdTH5#1@MceDT%Y-Tb1i#
i$ZCJ'[%MB!pM,bYb8DmdcjGZBDCE,FAiU-"bmipYL`alarjX"ENB8G%SR[mAmQV
qmGF[+)0*mITc'&1C2E-SfZ@FMCT"X8%Sm8-eE)6q39ZD!-mY,lKZ0IYZ0fdN,kp
aTB"YS,5D8'2L6pPb#HHRER0STqpcp,IaV,-d-"j4H%+@3,Kq%c"6`XVXT51cY+P
`+A&,Aaah8J4!DL`9&4Jq,l9Kbe[3beQM[9kNE0k5-icAZqqkjkqYf%"9E)#"C45
MiZRUVaDErAM[GrD@lblEi8,86c+85"J,P+)J6f9L2'9MH[(H@Jrek@JL1BGj+D$
KmkeP*(3-6eVf$+8UKqQ6TXY-eM4aIKceK0p,HhMpaTdZa!mGX%l'S@P!F!+r#T&
Q`mR)1+F3)jSGD`SHKelf#&)%+$X$[CU,FALT!jK*Ub#QZmfVmmZCQP)$hL%!ejB
SBR1%*jhC'lL80i[Fq#QFN6bPAjf(q5DZaH3AdSi32dP+ca&`b'["HE2M9P@),$C
rLF9+ZEj"k86HJVZN!,`(KDTdK[dh)kRairlR,P%Kp3m`Bled&N&"qCH1KUqJP%K
d680[R$elD96@&1*m%)A3DRdCar9#$kE@(Sl2!Gmc[6dl5XFI2-d0I90h1)CGrA1
b@-MY-8NEqT@UkUM8#kHl4QV"3$8,MhB)dLBpKHK3b!HKMHa+(m1q1RLBb$BKYI%
28#ha1YT%'')dTerp+f8(DZ4p4%h&UQJ(Km,NR$R#(q**"MLK"Kap`UZV`a#elRc
LDQbH,EM1l!K9HdQbUFU!m6,d$&d9L[(HHhpIjBbjmI%#+eB1ME(Hd460CNTd4E9
(XCPhrDp8'*@(+'Brc2dCi4F"90'IJh5$V*G9Nm9,`JJD2'PXER%1)c+LBX#C&Gm
3(UpkA1N0e8Ah,#5XPX%N1"J'd52Q2%1SicT[RK4mec$pmI+KDpBKE!RPP**fRh5
(6hJeh`49QF4$9&99,e@DjpPh22Nq$m`aA'(XKZ#6mlM4G+T1JL2dkNij3UQIeLr
1A)eljcqc3heh6U3D)9#UFZXAqR3ja@A515R,d3#GURQQqTC)r0d[jqEdLIXc!c6
2mTmSmeAf$+KmIU&"+5I9q)P,19STXD2h(MiBj1hD'[KZIEI498(d*)Ym5-QG42&
jbQebPr5S'*`3fHX"-K-PMjK#Y'$TYGDl!DrVF[KYeJ%bV'VN4"rTScGLFU!`b@k
jkIcP04Z855fi@K#'Z*meJK3G9X@*0T+j*A[)FKd1m,qe-C3RP50&*"aA8i5FChH
2$jf6ImD2c1Y4eMrPl+LK*8DYlRr$ACekeK6Q)9!0DmE%K&'[K,8S(lfS"HBC+h,
0l5RE46!JlQHIlNeUB+(HDdZ$3*))a(#EK$mJUrBPqmHV)V-MP4qPc1Xb8THiJ%'
cKrPJUB*)Y3&pVH`UECS(JcEAF`bDfF#q83%"9S`$Z$k[@*!!akDpSd`mE-IlR&4
U0J%R*+r(S'VjPGCb4fF#"+cI[56Sl4RS[Z!eYbc8kA#3!29)mqqCGp9`55rpK4k
4'S%X3H*2hAAeDKcG$!6VbqQB#)*LHEf)43qSUjR$cLcJk(ZECdC#AG[cM#'UCMU
!pIp1638E#hZY&B!`UUY*LSq[,@-SBV8&rfFVfA`+@bUbPI,F)XF&C*S#9PKrL9d
e#3TRHH0GXEJ'3`9L-U[jhqdCNYp!FBaBLh[6T['A8-$rjB889*Vm+e++Z!TiFjr
hpH[Pk4X59$(j((%8d)Ph8jr[$&6hdX-%Nr48XmLrRa3cNF-mUjDVPl,,%`Jj3JB
"Z&[MBTb9FMl+b(F@jAIjPa#&kJAFJ8h9hAc`PB5ETeCQ(mKT1E21pBN6E@D6I)i
5fTXabFd`c6[GG,&jLj4IbpeU,V[AB5%&MPDTF8YN[cfLBU98b[X(r8*I,3(XYm,
!qMS-[JB@j"#j"PQ#BAQ9",B2FNIfHYR!r$Em+R(9`%Ye(!4kZ$VDY26NEcD%8(X
V6,-FKQ#C-iE$LYiJ5@&S,9q&kjN9lPh3r0+"+Y%&*rUaEN1r[`i!*ZM$+XA%c2,
rAHVS`[FT#A0'H`R#'E[%[DY%!kkGGi"$VSYRmJM@`"GckflmV3'b#lbfAqUcE&%
+"q'hD2[I#%SFG1j1reQmD,E5j+8*BFX(SY0L)RSj-3I$9TahCAddC9&hSE*VZ+T
GiCfebAH3!+2d#Y6"3VK9UdMB&JQNTmV82D4&9K!IF!mE&H%rLcFVUP-e"S,5G%X
C!HUD[GJ0,#[J3rDQ+9P"!l2i#4dN8hiHL",r"CR01CL&I*CIM-9[-RKrT%d*3$'
%i(A%Y9Pr0F[eeDKBJCS`Sj-@2Ab`'*LfS[AKIB5TkE[l139`JHIKJRC98kSGIN3
Ke5q6)X3%cq5j0)3mU,51IbAKZUj2)MPjP2-LBJ8)mmLF2(+d+0rF*p,k2cXqk#U
fl!-)p0iqiU1ZI'UE9L)lN!$-Kk++FZqhhC,kEH@hkR*l59D@lm%N&Y&c(G9'6ja
ED%613XjNZMK+`-E#YVKCmpE['a0b0hZ$i6+&cQep1HMG+qYjp5jLQ1dMC-5'0Q(
6M)#jFIH#8Fb9H#"YFh4m-2TbcbScIYL`+M[qH4-baBFJI[,`Ih6lmK(*649l(9I
4m%X$0G+i1%C,$qcf`'1''Q5LVC!!R1e-[AeIAZN60Ji'RCeXH$(CP3RAXeNaMNi
%[FAkbKl3N@3%"GQYQ%pkYXC`p9Gl(!qTAl"FTFUbP%!,hh,r26Z#KCM,9*&*2L9
!-p4`Q!6N`L,cJ$NX`Q'8-JZYm6cFbQr#qaT*300E`VYl"&GK*J`Ac`l`qYZXHLh
XVI9@ap$h`G"FkNm[[T-)aU!cS[0P6(qN)TL-%$8"201(8'cJh9dGirqe02r`L[Y
!fB`b`k9#-XD'HJ,Z*qk4+D!ae['GU1+`V2*ll+0TUDQ[A!Ldal#*CPQheI13!%f
q9&NF@&pqA[2Z1ABbJd`-aj-#XrhC@#GfLhjGBmTjme%JX(4(Bi'T2(J6%)jU4'J
6ENJk'p0V2+`f#""'%8)iT%2$MUdMJm!5H"dPY4HUHI'FJ94cM+$$dYNE#m`h@&5
%fKdbeBkm!Y[TDJ)e8kdG6Gk-q0CEZ`22Lhcj8#rXX,4G(@Lc-LCUb8fSk-14B$D
cJ2bjK+-KU$"IbEUhAK2DiU+$5ZChEmlIF2D0RX#@i5Vc!""2Bb+!SVSdPQ8&X1[
H2iqFc)Y%Fl@H&HA"[@V,b['SHdf-G"((RL-iqS,Fr*(Y6&RNFIjj&+!bjmdNY)"
J)Hh'T'1I2Xk-akqE&I&d3Y"Rd*(65@Yd6d0BFdL!eC@D8)I3Z8@KLmfl8T('$"!
F62Y8@$"+Y#-pLCm9(HEBJ%Vj&[9rlhl`SGd%FQLEkKh@NA#I(+38P9Yf-8+'$L*
[qHCC0k`!b*I1Z!H+k8,,j-RrS4(h@8N"QT4Di4I&,-ejd3[)IL3pZZZcP',UNJ*
)2pKXN!"*qkeZe615raeYB+%,90X1"q[[llBrAic[ELBHrYA@irJ[`&jlQ&pj`(!
k5D6D),F!6Df8rPl+l--@N!!Ea2,V5%$-RECmZ6"q[!Yk*lbp$16Mec&KGM%Y+lL
KINVYcX[Uk*GT9lbV%jGfV*S!DNYYr-c!j#mmhK(%ZCZ2i9MXf93NBIdXBq#*),E
V-b0A*Dk*[TTqBcc5N!#%SI!+1[XfkGZ!*qBFPT3F,A'Xd9Re[9MIHKC#0H1lbDa
Z5)TCf`dZJZ5Nl5`'hj-40@QG%5E$K60*6,UH(BhN(AkHGe"m5dPF0T(XNac%h(4
1Z+RTb#Fbc#rI9!--m8Remr[hF#[%Cr$IH4LfBdRi$'$iljFidXmEphXlpL4FhbV
m(GkllbJ!FL2-qLq*2-e(E@Q'Aj3R,6Ek44cC+Z@GB['Eli))3Q8qcZ5CBQY1"#0
MQHikDh%)-Yc-5C-ibTj0$U6MmdYkk)(9YmH5!i0'"Q(daNFX-j,FAdBAHpQRa$d
*RP2U'(V!r%TrYQ65X9Rh(+mFe[[9["aQlPUX6!C($Ui$[hY5h!ReJASNNrDbHrc
3$"@cI$rrY-mFq'R,9`5NGKm%hA@a,(Za!iFrYj!!qr`"iCfU,IE1H89i4E8aPdd
REDY&mUrZ*Ae3HH%YFeYJi8erl$S"@3UG[F23LkrcDZ@*Im$-j4@qF2`-!kT6TXB
0hZkZiddhXad5%dH1G8+BYE"'1LZa4'ALecdJfHpfA*SaBV'&jXrl2'E+q'!c$LB
BBMf!PH`Y$fH'Fm6@3`Bp-Cq*"YBmZ@KlV9DZlp-Ea$&UNdVq9X)*,j%IiNcF-lM
1iaNH)+pkXZ&Ecp83U85hq'ZE29J#eDV`kAZpY$BJV11&H#@jA[)E*3MRHN!@JYB
dk2eqSXRTJ$`&2rb)$Vd1Sh"HQVNZmiP"'DIZqq23(#ik0UTB`fH0bG[[Nq"!Q93
2j2mblF0!N!$3("83lXk1IbMD-+)Xb'08-0,5b-J`-0,5b-J`C9DRYHP%d(LG%%e
L3FZY6C)XMl`qDF[QYQ`'1H8$9`JRR,6j)r#pp(V6fj9!A$VVkU0F!i#5L#MK!Rj
E-(C+5JXakMEj)B"2S&q2K#cP1#q,fS%$#4'XbSf!CS'b[Ce-*!)T#aZ3!'PFPpp
MK5)r`mSZX'd*)M&CN5@Tp6&&6a`[4CjeVc@!GA6b'3P'V(3,(fCFVIKkP#-6&D)
*mejVm-AUF*1+R2pRrEd8UF!UhkKiYEJ`3[FK)NFGc3HNC$pIT$8,YakM0d@1XZm
B%r[D05$,,kcaT(Tr9Z,!%fk*kj2JLVNjN5K"c@a3(jJZrpaBZHD'8Bp3HCNA(L6
[rR'al12GE"*M$4!fTj,3U*UcH%U0"liUqhLjK6ITY-*@$-k[3T5lhh)fFJIYd&R
XB)&-CK'[`9pr8!+4e2hRGpU-H%1!19JIVp&AE-hDHRbFZq-UPK$LLZQ14Vj*9Rl
'jBNr)2SqL#,KIS4q+8irjhC)A-`!3+i5Z"iRUADAL$4kY2clR&3h@'XI*m,i3rm
F)Xe2`KrFIhIfE[,0c6YS+8*l(bR,eKbbh"j8("Kp9#J-CrGj'dU29&9QGcacX#T
'#Q*10mCf(-ZQ+&8AdTElcqGhSqrBG2hdfaGdl-p&B*!!XpPB(PK0herJXeiN-M%
bhalAa4-,Yc0JAEEMK5TB$kLlVAQAQKkcd+-2,"&kVLq6Jq4*2j%ArZ[X@L"0NJ#
[6H(KbDTDm[Q#CiLCrB4*NqSHK`KbDY@cM!j)@fEjBp(@QKeGY489MhRiCB+-2Kr
iqIicNeUT5e1VV*9%CNr+[1bMS33e`8[,4$hj,iZdC5ebifle"`J'K2d)j9Z&Kqe
Q(QZ1&34T-CKif-S4Ce$)4*r+R2,II,XP&qb-$`2iAQ-J05eG4!,4hl839ki+p1E
%Ee4PkK(SBXqa6kp1&rJ+Bdk3!&2D"m(hk6#'2R#MVH%HpS&)UeI6lhZ+&B1ER`Y
deh(rQ5P2!PA%pb$q-R(ida@QH-LK4A*Dc$1BkB-H0U-mJ%$IClXTY,qLr,3V!9T
'I)+41e4*L)RYUh$1Ibk,*,&1D1A9%"JmF9Eqhhp#"--bEab"`-YiD5C2(H&16CE
N`rr1%Q)*%+eYK6dY-j!!8'1Uic)A22p`JRXS`le[0m%kMP%#*h9)Q9d)(Jc4SNp
qqBqM&*NLU'8rme+k6cpf,8fD$EDr6APXM(ZBrU6lj#rI&Ym$N!"5)XJEQ4'b+R#
TN!#9VHfG943G308IL6rhc5p,*(8GGl#a3',BNq-C[Jm9iPlVP0,h44XChj[$ijP
GGC!!A(mE+)T"JjFUYJ&(jeCNMIl!NmT+RFrHVi*%9P,!9aE,C2rHCSALqj+@CC9
Y'b&9b6&#"Dk*,QiB,D!hr8Id#@8Q0f8hSVh,,)@d6RlADm5Ye32`HZk@DLB42ck
iSBHG@hLJR0@m[XL`6*C&5jM+d6(LH,F#GiEM10&49#',MXQZ"riR8fQ&VJ-mKFj
U)Fcafel*KeGd(S")r8XbCURiFpDVUhJ#K34kVhAR$*6V[-6qj0eGJNHH0Fk'cTX
4G+jr+a2fbMG[)A#rkCpP9"*@RXq@HFPiH!CF"N#MP6$JIb9j&pLYG4SSRJKVm!)
GLX@AUNp`AQ!pa5PiKE'`&3UXfNB*Uc&L[&(qJVXac6`N89d+!Kj"rSq8J%Z)5[a
2%lBCMa2FF)*EVGFdYB'Lal`P'G6T"6cIFk8d'4XC6PK3j3SqYPk&jcX,[`VJmi!
Rj5BkZb8-3I0qa1GAY4D9IYBi[!LCU@NMDKD9M8#8QNlfj&YR"*2Jp8K3KU8M!+R
2DSV-VY*Fl&9pb6!NTPq$SdTjA,YB'(6Y&[jJ(QC8'DP3l!iT[4ES#PE2N!"0$SP
j8F!2Re`2C`@1b&pr9ArJp`lm'jMk@'U$TI99NA!Tc288!q)P8Yce"$+plJ*KEMQ
Ddq(PhUUS@9-$"P*Yb4)!S`J$RU)ZAQ(&ES(@d2+d*VK(aiH`pC,i%-Nj1jlk36$
iSFaZkHmCrSZ%TLAH9[2P%5C`jB@j29C`p#e(Rpe1aj*4NGh!`hkK#F-T+GCc*cD
$Fi+h`LGirA$i+9%6e$KNdjSB#F`fGf),XbpL+C2Q2Ydl3f[0I&R0BP,pkj*JCIr
'04kdmXGV6pDFE)qP-%()Pj!!HmK0k8CYbaPb1lGmQfN`dXr`R+q'2T'A&2%83cK
$H`V4kM&d0C`IeilIqV@5X*p[8qY8kKP*[BC$Y8AFV#hK#l89(P(D*PTr`l'[i`D
C5Q9c(N5YQ+[jCUDB)A*hT'",2PFDP02&)mBh6YU`qJ1SZRJ$aVMT`PX(l$)%PiX
Up31J`+lmX1$[!2@3!2$'EGULXj51#LT'iqI+B*1X$e3D$SmBk"@b[9c@G"%"$Si
J`NSGVZFRb#)D"8Re83QRm3d4q6!VAc0%+4%`#1dAH5LIcXRTh3IaUifXAaRTX[+
F[b&Y(3R(a0&TkXM4*ZU2jQMd!jZri)9Lh[5R#ZFDEa$UFpbR&"iUGcD9kSRD!2P
02lT$TA4SBSP-9-JDae,Z`KL,Q)h2dVkQ89m4UR&$!'j5Hd*5D@l'6dSAAcSFmKp
1"6b`DA#mUb%f$c51S1H1@@a[,NRkmEcbXKh5b85@'hGeaTG03ljmPSf*5DIfa$N
#)D)*PGYYHeB*#BE9@eSNN!$+S!P-Q`i`i[26,JA[L9R'9`DXi#-8[Q&cN8[4(ic
Ff3ar@)NA%6C20e-V@(,UNZhLFQ9iZ)ac2+1Z"36bKpP3@361Q#rG-MGUCTA&YPG
m9'XT22!&"DTSHZVb#AcV96Y",2j[CS*%PUSSr-IU5F(8[$[!G+Jmec"DFNlQY9,
RRYdSBEYcbBfepYCL`GQjVpB'+1YdeLb8a(LiRbI3)lRP&Kc"&H[2m-GSbbe[-)*
"6KM*B3`aKLb`q(R-GIXkIP$*dT`(X(QQp"*S`j)'dmY"ecIVemqPDpcpq!XCfkp
L%ck[(aRZeLD5rcClQ0U9GaXbb0j-PR&1,VN!qL%#1%*ch"5)@'&la[-EmLBC"Mf
06,U#qdC0[iJ@Z8kT`-931-q"6,",@e2AIR0X[#eCej!!4a$9LcP`G%)a+!A$-PJ
jNY8!#c2,3QK%KKfMj"+'G"h1X9epH#,alkA&d#be9b8@Eb0ap[SG8&hBX8lrTI1
14K[85*cV-MG34)"pYF[512ad4k)9DMkNB)Gda'#&KA-SA4Ra5ImhI3eV`U*6GY+
jdm+el(`3SY@H6F,,Pk%,e@m"ZDCP,9%K-#Y11#rDb0kJ&EXMc,G'e)hNb-H1['+
"&a,h['BQqChZ1*iIC$CU10KB#3-d'$*![aL,(hEE',eZ[C9)#qm,)DAjF-cb%CS
$B9dZDl,*cGXpKj1P9`Q6Q38&d[4,"cKp5P&3"YPil`5EN!#5I$1[i8FeIU,*ceK
Ci@(&01U3!#Km[4`0j$09C'NE!iNRI11M1d5pH84@5K`%-*ZS9)(CVkmVG$(+TIE
AK+aV(d0je(@aVF&VVMT15[YG&K8kJ(L`BP-d[VB(RGJ4"b[AIJE[M[Q*kclbjMe
cf3mQYfRN(M!4"SFaf[,8BJh"BmbZK(D*04bLj(K6A1UdfA2X5fGdlI[4iCX"!61
F4QA%kF(EA31R#j!!cRGUkARAK+&KA5DVA*`l5EQ!&X`$0N"33LDTE@9K9HmbHP-
e&@4@I"YS-13UI3ZZY0"[lFbQMp8b1m2K!M-6T,[!D&r36Ed+qUrA3(23eNb,R2C
%!ZBf)Mk0E*ICjp&R#BS'cDqVSbU#*3k,Mb,mbHVc[ZcFAL&q(2+a0@DM)8"p%,0
#9I)IGbVj"FdpiPp08CRS09V6$L*TTEBkZ(MiVKA(c@GG)4f20BhJ!ieiJM1L(54
&laeRb"Y23[E*#i-BjrjAEPNc4lLVhpXCb,%Cjl&"kfJB&IV5f4'Zh([K5SkhV`+
Z3pqQNAH*)HQ#EDQ)b@bpJ@,$5l9+kffq5Z*r0L[fbp5[(SU*1Sb85+EZrPQpMVc
9fA-0cV5(IGF2&XIZcT4Hf*,J6Cc&4&RrG9PCHMhr,!`m)!I&dKJ,(A(B1CMjfbb
lSm-8kVHV04Xe+p@B#(#lb0(R0jfZDVIMdjMklf1C&T!!$f)VP-V"a&Ec)j@'2eY
[k+JN)`3d!YTQ4"@J(F952!#E%H,p!ZR*FN2T!$aF$dc&%#SPUI,C'XlRI6cbNcm
[)NCl-'N`fp9MfUk+q"P2R,GFNS[3RPE#QL$Z2@QTB89hlMNKiY5CkiTXUcJ4QbY
icUCAk)D+GdacpL235eNAEV-F9-Lrkirq66&6fmajHP,Y)C+pB,CLrRkG@A%A`Ym
Y*TFYr[*DMQ&d#d49qJQ8ZYHZ*$3"D4V1,kB5jJKdSbV1%MSJXp'Pdf(jJr#&f`G
r14)UZ69&EKPClq`SmdQ'$@dGbc4CmF8cLaEpEa"Q-IQ2@+BKkrUeKmNZIB5Lc@S
lJ@kIamVr(Kr5KlLDS!15FYb0+QEjcerT"6b0Q11C'0`8#+c6*bfS3m8!B0kS&!+
B"3GAQ*jqI3IAPfpfI*fD3BTp6%`cqkVrMLP[iiX-Bmk'dpSGIFFMA[,c289h&Jb
hFG5$RK60S6I[+2NqFa0&A3Cdir9SEj8a!bA&bU8%iU`(e6-@LmP(cRlAPHri8PD
`h1jcccXe1UDD'lH!R#!R%d!PK*GQmGL9@FQ0YBSbUIf+SH6T[D1YBQe0X@0DS6p
@a0X$[CB2iq@afYYHJL#B$C'VALD**MC6Fife`b35D%CiMdJ'1fI,EZ%h+c4QJEB
k#["i2MPPAKV''i@lP[rf!RM`[f'#SbVqXHL4VPCp&+e[5J(3C&l$%[[qbU%G1h*
4dB-J,Mm3fpb5GfH%BQ$jdfbJ&"JiB%&fG!JSV69E#d[fd9'kIMZT*DSa6HCL,$N
qC5hk%PXhbN@qQZ(Zf,&9!XUIAC5h[,&*Ld[rbCN8!mCRGrNFembm3LmcGZ1P"P*
A!p"'HB)PlX,%G2@J2'QAbf1`JfF$28Zcbh(VjlblQe,KR9Cm4rcRG(pC`-m,Hek
Mq"XG%EZj+[81D+NZQ"3X8P0MV5&dSDb45Y(p4lf"VY@b3,P9ec$2N!"F-P&ce&m
'!QT)*,9cjAPRjq)he8IbA+rC3L52pPXFDZ"$06cX)j-QC[L%fE[LM8Ab8U)djF8
`NJbM8`a&JVA-4aUl%EBC#1B8$09Z(XFj1j!!1,*8[b6AlL0%VlYHA8kl-1NREhD
B!"86Ch"-S5+YF5h!1XM5i622jBReB9Bebc3ilql,*FPF&5%mPSmVYYmRRCBRDH'
GcT)G(@JN-SN'Vbq1-9"0I!6Y9S@rmkIbIf&a69+m`,)Q,UG+F'*D$)'UT*C-G4f
"YK4Ahiml0PkTVE%NA)Ibe!&Y1VGAM&B[Xp381Mah&3&ZPH[pVj-E)d@1e["ha!a
YVKA,HXHM(QZS)GD3!)Y`IZam4CpETq1,2FrlK*Xk61qKLH6A9&8YCY4caG@j[B*
JD5GA91Xb)*IYD'E2U%cpG)26I$MMD1jCl9QZNXrpr1FLkNX$8%8S"RaIfqZ2-0Z
aP8qp+'E1H8[aPTfS68TB,UChf)4ASaAdd&eS5QNLhR*((afI4&!JFfrVE#b%Nj`
JMM!Khrb,c#EdQG1apMaGH&rYM%da6!T#J8#U,rkf-c(FjR!*#Nrr#U08L1m6HBd
3i,Vl@6A!X%F2$)[9U$rHhL3+`D#,-A8DSJE9L!(@j@fmmprM`Hr8$*+e$l1i$,A
-Rcf&H)5P#CL-XR-qZ%(A5d*+!58F,*HVF'[Qi",8'iUmI96eTX3H(8INDRIb#+3
Bf+0)LT3+q0c4A5M8Fc4MiM'2R"TDpVBGfGPMQHaI,ELd(Q53!"pXlc#'(H5C01,
@&qA[D(L$6,Ci`%Qh4jk$+f`Hpkk1PlQFrA`!AaT9$`CXM2b2TXBL%T!!2-lNfrG
BCXj2EL6AlTmXFGkHYTfq0VFTF8f!Q(Rq`T!!R[@F0V2b'N9JGpQm5,")pZNi8KT
!@2raR&AHfX4YG$&U[d`[k-mJ88&Zrfr2hi16bqNl"3jU5,04aPGD@N,j+!KFL3B
E)GXBj3,,!'VmeG[ZH@dK-H4I)AUk(@V$T2Geb`d$3Z0DTA3V5rZj4FNmhM@jQ)B
F$cmLLL9r'2qhem'!T["-UYS0qSP8fcIN("mDM5`*Gmf(m3X93`#$32r1HJZA2K6
4I&M#[Kcp%05+@'#S9'h,(,JNEYh,pp8#mcZkHkhe"M8qLT@G"P1GH#$0C08Ebma
Ne&U#EKiH`T5e)H28JL$qQejaY!)VrE-G`TKh@RB)L)8I0dr!Dq6LDN4HG!88R26
G#QY+N!!V9%3EE%3!6!PA[GraC8,F[hd*#ShdCqQLD40[Qa5dGI,lmcKAlcNRbb0
qA0'abI)F*M)H),dFd3KZ&pJ9cQ&UDiE"h31GbUiNGE0$'UmN8(r3qRijX-"3(+Z
V&pK2Q63P"mMCpkRJCCePP@c3#!,Z6jej3f6@Z,aTC"5EE6GlU1B!aLh+dX8A2!N
mVZeh9HEUDc,H'"(,5j)QS+3aDUL-![qZ$a#D,2TVMFrlhdDmmb4j1Yqiab9jr@B
m(l+2`!JD8pHRDdPR#RZkYZic'JS`'QS[5a[C*4ADAMf3!"!B33"'j[R9)RD%'N6
)j8454AB8,)%cI0!rd1G5S8ZTk4''")i5`KcE&V[dPichbc#@Cb*HG9Zh4f)`f"c
J*P,&)@i2"RKidV2`4!BHLpE10h9$4kN6%QaQ8ijfc5k4GZZBEeI,T1ERl(q+fNP
9rkL,ChrXT&lf$j!!(5M0l(V4ppbQCkMicR3Cm0)%ihh%e95KRCT"eX)eRCaa1E&
UQcU3!'4$8I`TP`0a%J,V$ZQC'#kADGpYiJp3N!"b$YRRhmrR-P![NYBfRHC+Sri
j*4fZhj*"#HjmqqKqhp`%!eTIjQ6%($Yp1Q%[k'jUSCiIV&K-q%P&VlpRNq4#8mJ
)QCq%iX['ICk[lN'&5+Pjfm@eG[ZJ[4PF60PVd38-P!#rMT3DHCii[d18Y#0"#'%
%0*I`0J)ALiBIdPY3A1jHd&HAIJ+jUfMqGPQhFq`8B%m24(Mh&CTPZ&0GVBH#5VU
#FV5BLM2JmLER0m,5JHa-*2Allel*H$Zla#kr5lHU(6HXE$-9Vd--j-S41B3Ri03
SAhk'i1RmDK1Me-Y41lKVYLF1hKA%eQ6T+4R,4Gj2iU(JiBZC@IpM-N900QNU"Ib
BlG4Jh"$+@UUZ@3RDaZkXJLLA"Rih0CCL#I!(k2J-Na8+GMBqBj5Z1%i2TQpEpXJ
6S9!Qb-XVk)bjrRqKcjLT,'kA9)N!Ki$f(T4`IdfCUaY!p$`8VHPSjFk[Iad[`mh
8P`lf)3Bh[)FS6Y,3la[3INQMD0mGFFG%eQ%0eel-41Fr3kL`2&5`(&dD[Jl'$J9
kp)*F*"Fe!mjd(D4rCSqGcrf2lBhk$5eadbD"jdZbSemNmd,Ph,3UY(LPYB8$rc,
l$ZKd5T3'Z[Y2h0!42djH@iY@"8PGX*KHq$XVJ""p+qHL-2(r([33#MjeE+6`8S*
Grdm2b#UD00ZPE*5,'0qh+)h$@j0EJUVDU)%h&rK-54)Ie#%04N(6iPQ3!"q`[3"
l1,%h&+2P+JcRkfdABhU3!)6[Y@kM,&4reVe%DX9BPQX[@m'Gb9+0!Bf9EFrBIX[
I0BpYTSHU6cLq&p,%j(AK(QmSf5DGK@JQHi"pM3p,SHC"'FhL#1$*C#+9RQiD6"i
@T)"+l,Z$'@*A-C9T0(R(J6-eI%ISp(HR6R2[&pI-G5&MmXYH'KY[lr[aNd'J0%M
IifjBGm&,66bjF8aBLYD0R*Fj2Q!(R%*0*aAMT,`kUVL+"iKdX00Np-Pj!f,QTK`
8jVrP%Np,&"U5Abf[[[lRN[K5-UEbGS+[A&``D$l-k&DjL*c"B0fZ-AD94[Ve1dA
81VX425h#G,#8iS&HEhH9HRPP`5LM2K0KVLq+KQUaha8DL9B5C93Z)ff8NIej[XG
JU'lRV2e(P@`pPp5UTdqUBri3f6k(4GIiNq1em`bULF9DiQU3!'f-`iDPpB[TH3,
+'("-PSe9IN94h1H6ic'DYKmEm5TbkN5-dTRCh%VfK0FI)kXj[0f1T2K1RfXPL&5
ZrVPC#PNA,1'2QSVYlNPAY6pB(0HhpGlVIbRaNe*ih`F'pm9MaXbajU[rG@529cH
A2H4YeZQ+Z[b8J832NkJI@1!CkmV'5V5P-mIfC%!'!Xl"C*CK`c"2J#K6`)9J4!Q
Fl8SiE361TDEJ+N!"Q"(HGV-k,AbH-Y,mN5YJceT'J0J#pefaA2dBA3hL0p+f@)"
Ym!TijH2Q5-pf3hq)jlF&[m3c-XRPVa5D5EDXr38JS3+0-kPV#,d`F51qXCe"aX)
44@5S3$@!Bh8d!B4`0eFZK6hfGckMAA3R4[YZ-8KJYehPMC*Fl!FKJYQEC[)+4VI
aV%mirqVX)YPqpPp@*iCe(0""BMKe"UFV[h,3XQ"S,,hfr5FFDURjfecXd"#UHm#
'+BEKS*!!i'T'QP$l09hk1%J%V1NhGc&e9aI88Li#jj!!4B"TP3+FCZ(m1k-)5#F
`e9rJ8!SVB+UFKh&6Dr9MaXI5M[`T+qEE0!9V+c[cZMlVQ8qJAEe2Q(YJh-`!GXb
6Z+KVT+1")1`,1eD6CDLiXJP6D1GG('q,@@L[NYiF!%bAq4N',R%[qm#hH9"c`GQ
D0MNL'M$U*F5kL6`#LR4Yr1#[fPf(@NGrIIF"Pj'cSPNlqUmRS&Y6jQXIrALTNj!
!$'p(rb+(J0Af&aqkd89hKNe``rVdl8$*ML4L`CpDP8@mNC9jfRZa0J)cqE8$!d*
emJH&rT0`ij'$e0M5jEmD#XY)f(FVGGPq'NYZe-(23NI)PTbfLfdR9Cbq%4+CMMN
`!+hdCAb$USXLi+5'mFfEM$HQdZa8E8b[!RDK`l1hk"$`CG,FIa*CHU%GKbB(h4,
S*Ml%qZjiF,F*(K5`Sfp1#+-q"&EA5[@6G2&dcA6ZmTr(X@,PJ$R84QEc!1#)("i
9T!d!E+[XM60-Q1iN$"Td%YKfm%kcQMLk1q$UFVCdlf#r,4q9&P,-,$0J1'-KlHr
!A-EMZVk$@0(p,LfGh5G$Uf9ri"L-TR9Qp8M1!V6l`@S`ab-+M#2*eFp!%(Zd4'U
bY2$*BlpT#P1lf&r1mN,ieiiqih'(Hh3Q!i,VY5@Tm9N!c*iT1iYQHrYGZ-d1*#0
JKC(BEUE+j&`c35mdZ0Q5SE+Rk8+lG%H(6FFi&J4-p-XF$9Fr`X40-i%R-25KEk8
j&JqkRMEae-"qJM5Y'N@j[%T"42T5he---Di0h168$S2pAZXEib6M)15ZdF4F!!B
+pFQ00dZDHf&X[AJ0Tj)fm0V'!LfbDP0PYjB@h9k,`3k&V[*@U08BYVL$A9KLpVB
)dU6!Ef&mbk-eYLa0GDeAD9keK)6$b8b4E3(1ljh'$8)8T)+jQ,*`98"X)RCfp#$
aVp)p*0!0pqdhc`,m-FPhZmAJi(RS9RhU2q2PdG2L0FffMVHER8i6b$IIejY3lG1
mNX4NYhL+Qf6P26XZ+ePV+c(`3%i2*S-X'l4#@GiSIE8c4fSfUY,Pj'"DRkM2%hi
iKb83&b@[50l*4#f&3!3JdVT3GKqTCZ8G(bU-J"bklPI#Yrjk-f[,D%8""GRbV04
C(B2lFKe`B2#AJp#THbU)FjQk$1,DiZ6%EX,DXFd3G"rSl[`P[JEKS*QI!l4XdK9
dicGiD@G2jaJ!PB1S2G,qprS-NcDK-31ibM%[%lYp8DTQV'J6em*86*(#ZrrDL6J
F0'G`@(IQIF)&F%r@rX)Dh`[89!rRHIl-H*%h#NPPYq1FRbR6dNkFm)5c4iHmJU+
(eF,('Z6BFdbam4qabLFI'#2qGm'@JBSl4k6i3$Y!b'@i%hC+'R`c#%!-b0K8AQh
m`MZ6S+VfLbN,bk,lAALdLbGC5Y`Cf1a-j0'%I2P9T8[-$CHI[E4NYi6*VFBMS-X
R`$H,lYM"JF[6`+HNDL(lAXR%*,0,J`j+-U`DK2X3XIhh28pZBUa+TXPc-1B$d*(
9XRr)ri6-cckYh9XGTmAF$CDL$6j&pp@6Cp6Z9(kQR*!!cp`hdG#GdU$1TC*Vm4&
82jLIXhr`i!r4#A%FYDq%mE98PC@MXCCR'Q%[DLC!QHQ6%acp9rAQ,D-XE5"1PF3
BA*a5J"(A!Je+MIKRL!#FDZ2T8*dDL1ffB0D[Qhieelmh$5l(P"Z(h@@VZ,qJJIb
5p**,#INA9fqYZQp*1!*4XR(55A@!@rjRXlhDG[mDR55DRrem&8&f+T,+rL0X3Cd
6HH8-J&VV@a4D'pZMJ$la-lVF0fh&9VqeK$BcbESMSkkMqL"[M@G1(#%@3DfrCY4
ZkYcmU4@+2lAVQE`ra'I#55IK9T1H""CR,@m[piP4BjD6JN%&[T`2Qp,Hq-8jcdE
0BKSN[&"1HKRhSUdX0M@3!"@5*$M-Rp2PGNQN2AlY`QV%5-Bq2N5&VYY`-(QRe60
TPYVh3Te%2%JhMrAq6C6bV+G5Jrr&JaD&Q#$EY[VQ!",ZMT!!k$IA2cEZ'V6[-!%
Y"afp5TEpI@Uh'(PACL,KYQ#4Z2918!q(G*Y*feSfJhDfr[Urd5dC(X-i,K,*fF%
pV0R+0DDTh)F&&I,!3GeklZ(QCZ(0U#A[DE%pUG8$c'kBPrc+ql5ecrc*1JiTmEC
arkk6d2(eq&EQK%+pC[%hjLRH`3X-M(Mlc,mUU21MNf'Hk+'b3P3[3mipJTkTZAA
Rle-ABD!IDHJ,lGU*3B1&l+PhjAlSf-@$a0j%X@KNb0FGBGD!'K,9N!!TF(+Q3ET
J'qIikK4i'BNAc11qH,DCiBAiR-,Pp&)CYQcjlPb(GpJmDRU1qKZMA6hLiJNKKEm
"aD`(CF%!H*L)*mp(%iK#NU)HDfTD$Ch3KeecUjPmQCSC![JTFKQbBYdeb"CNJ+'
,ZeXHJeFMEIfDlY3i9@GVIMqpbURTq6+Ti3%be@9eFhijf"P[4f+R8f#XE%HUVZf
V+aUB1a[!j)ZiDm&B@Gr4UMNh(pJDH"lDYq,I23Rcdk%)eDJGLN@k[Ebm$e#%b`D
"NbKb0`-I-5LCh359*L"-(hPUdCmiCZM3EG)N*d@jfd`fe3#L+ZJ9FB6ki!PXHlm
S##)HZC!!(Q1q8Q$S"qBNL4*01kBTM!VS3LRpqTJ"!%[EQj9*"i,Fj)cdR!2SJ`K
VEDA%S@Za0&(,Y@[T-Mdmi`D4c4kaeXl%G9c2YKU%ilD-P6mCXb2T"j6HG)kaL(2
q`1DJiqLYe9e"`*T,1YkJM$4pR"PXrDqM%8AaljZqe55jIKB&4k*U!-1"RKT4jeV
B95934U0e54Qmh,$,ZG@3!"Qi'!AVh+!0qA!TIA8iShX5VAVJKC!!jXYAmek66%0
*@heMVA19X!YMNEaTb#q%Ur4$cp`UF![EQh5R(%S1j5eShG[&r+8G#F,qL(9f9"L
kVF#%@-b(f8!i`fZYIH9KNIl*'Y)aVaKp%4F5DbAf1bJ%VK,!ciN"b$!ENC40%@A
'raa9%mQ-P9`*C+`+ccRUeI6[[pD'P#)+SHp)apDK9JKd#IV5kP30+"G'j%m3h4V
Fb`Z@5C[P,`q4Gl6i-CA`Y&IG@IhKVQNZm@*D$NeeX49N2fHH2k,`I(3R%&YBT9X
,CkM[+,L[!h1P#+N3`XqNG"c+PPHKpd"N$%6T*M36I-PZY'iG%IM@6p[p''TebN$
16a9+p+hKDM#$`a(SZ'F&(k114bR"hANE+QVi3B-RUCBA!0'E,'d$+Eic`&+a4a[
JS6Ri3!mEUC8Led)dK(6"Jq*)4-Cm-B"mIcSfiDFIb$5H+6*!V-p5d-YIXK%L2Jr
`1"&T4b&F[)mq1X$%!6k-1%"MLSXVSP'G"Z3PArC`6fT%FiI9`!I!S-RN[K2eEiL
F4N1H#I#LqQ`aSmMNrJp+cU$%J(Q8&%F8PD$J@E*UULhpVLHr@#3jZaI,qM&VET0
$L`cZFe%N"fRMZBH8'aZPmdT0NM$cc[X#!kSQ5C1"U1Z(1'pdIFCU["@ZXcNQ+UV
0'f2RVa&GKJP0EM*lq@F9'9@`4JM44h&rc%mH*T18+CKf93bYj1,(X@HErlEdrcp
[6JPNGp(09'aXEKL3!#NZ,C)dLm34U[9N"[,TSfZqBi0586Ik8IC&pCAl+M80eR)
i5L$NP`RFr@6H6iSq1PL-!+BM#I0$)Mjd,*d+ZM0'd-Sp&qr1S$&RXj1`N`)1ld#
1"AEG6G`EZa&6k%LI2p*I2kI`Dk9qh)[Qf$3Dh9-i2YS@kDE4(4-2*c#K2Hc@&N2
FG$XAq+0`AR2qAalG`%,D!IIX0Qd-[XGK3(fB'9cpNh9&GX1a,DLp3$bl,jAPEd4
4'H-j5Y8j6!1T9d@5'&-S6QlQEbaKUYdGMXf`cZFFh3Lq(FLFJhM`kDYXijpDFr0
4[5%YC4-TeQ3D1BddiELVK-(@D[+jZFliaUIffM`Mi`"0r#Z2mTD9mh,MFrX9Jp@
dYBDS23G`QYK9[Z3AbC'&JDLB2Fa910pm)cFQMCp!$ErZ6lp6PDhPQIMh,3Cp[V$
LM4RXqHfqiMCAHkE[ZJRhq(3kD&`b0LYZ0il6D4-iQTcXC,%LhUHb6lhclfXaap&
DQUb92-hK9$*p-29d6hK#kjlV365"Z3H+la6I,m0[Hq1hZrJBL3QeleA)LU0SXQ$
i)LLM#2-lc2X$(eMVU$!K[bD-Y&VT6NH+T(HUNTHPN[jM3%8IXA*"V#81'@V$C[)
k5c5VbKFqiZDj9N)G!ArV-!Q0XUlD,'8)5rh#C6$c445H,(M[)Bi$FajThSGaL+C
Xr'K8EDjQ!([j1A2-b8-Y)m8,f!5DFEd#iGrCBG"*F,3YRZ9(*)eRI4@#m$jV,F#
FdeXa(`XZMaZ-TJ,IQ0#4iRG@BDKUX%kiC1h3ch3qdVHaq16PE&Gc0PGrbV"GG,V
$McD9BSE5Z5"I!Ri5-kk!KUG8mbUYNBk*,kSCZkRH21E9`&Cq*rM9SUf8%D3KcL3
mY9VUH9rCFb1Pjll[Ek*)[1ZjG1NV!lRPC9X-fMQ!5I)Q8J+k'J4CYi1C6[Q2MR,
mLTa2ijl9Le*Hd'JVPj!!KMc)Nl9q-bd6Zc64''LeDRK`jNp34fMij&$*F#8&8+K
Fq+,J&,a*Z2-9m0(QVF1BTUpT!aiA-9,&jdfr'c",JQ(BBVUR-9a-#5*j'@+8`b9
`A0Qq[blLK#hSh`5S"jdZNHLdGiZ6FPX$'*&CJSKprKAT[U&YUhZ!&ZK,,8[!,mT
RD[2PGrKkK`AG!dF&NDYGP(IA8JXXELrK*XhcJ["'pM[9%KQY91f1!JN')09Q+CC
C#0eHd[p`F6r2*m2mdFp9IHFN4JIB1rh[$KmVpG@FD%Ar,(#4GD0%&qM0V))XSi1
a(bijJR$cfG+Jih!LbH"lJ9qLp(+!A48!JAYNQ0feaUbHUH&C)5Q,IDcpN!"hh-N
1V!X!D4bPdHS-ir*HaK0TRI"8'CE&)(E[cfh`dqG"HGY#Z)G%Z6(m3ldrNIpLTiU
RZ,QAIS&aDKm@HZhe@4KFl+@leB$@`jkkUT+4cp!-QlQX5&brh0'+eIh&M#(TM[f
ehXceRXPMZG"p%p!&Z@"0F6`#K3F![Cb"HK[Xj"maH3+ZM$!09h,LSP+RJqj%mF@
+fchN,aL$X@8Q0-GA3Te9#h+diXR1p2(aQ9k1EE@kph'MBNfN`H#,dKRbSIkVKBJ
Hb`2F&Fa@$r3ja9fT+b,TY2NAdLbC6CZ0![jcfPDIjJU[lmVHkYkB,Xh8ISJUi$5
X0kahFpjT@IFelPPAhj[M4BT3)LVh9B!%%bKa`,)ZBUc%5lH41`ZcG&EVN4&%!jc
Q0&+,"6H5ppG6&l`''RRmF)4P-aL`p9i&jTp`dNibaD@8fF#4%)j%M1,[BeDY2Jq
5DbGjrkA[fk240e9@)k%i3rL"R(j!LH!@3AHCZGXmS"+*P[2!6Z"A&k[5-[IX444
UNB%)j(P9#8I2CjYc*GAirL2EBl`GkXIq,dh(#LTbQ#)SG*VLchQkk9!YTQQ66mr
+XTG(r!1UrG!jNU%6L!hFS#9Nh+e!"5BG@'mZI@-Lr40S#*4)&mSHbScLi+pjq5+
"CQUFE(d'5)eDEbE[J$j![9&F1Y2('#Ckfe4,4&`edU"r,YY&cm1d2e(012UR9e[
"PQ!T35CFDhX'9eqDKdMllSDP0d[hp38f59Uq-raaiK[V)TYi8iD,@CM*5#E'H03
Yd0CNaX*fKYNmdM'X6+PjCdlpNm)ZH2-$M-XP+ki#6e1$fpZ%YlJml$'!$&J0F1R
DkMD,mL*dLI5JrE'Vmp4P$N8R+Q['-$U%cI$1m-XE(JfUNDD['C8b8B6Edk6FKGr
qhNMhNIj#2QZX0U8h3Qp0Qe@c&&PY29d2mE&C)89*+GBZcq%4N!$DaKc!"25%-m9
Mm&f@$mi'$ZU*mCJ5$F60k6GLiVGDBTXjdq-Pba5*kEb#ACFj&T1"c4@BibBDDP+
SN!"-eEhjbS%X&iqh2@P2V$+H&YAV`YFR9Ac9AIR)TeZTUp8DC&FUEbeX,C,&K9S
+21YRDdSL8f3%jNMM9Z0pK0VpBdd5lKIQ(8&&,f#YkQa"Q,)0l&`UCTYF)c"Y"%q
VU(0AB#jk,bS[V)rLYNp"645&Fm"&T3L*2V9)VG(+adALSC%ddD(H9"3EA3L(RB3
bFH&NVAMX64qeF6f94[K2#R!)3M5lF`)XMjHfSU*e3L[N#P&,Ya-G6bLcD(*TB--
PXLLmjH%a&ki35)0&VMcjL28"39k`$%LEqhDB("h#M8al4(S"lUH-0-jHVS&YK*@
1hB#iL8mD"T!!@F#h1D8qNj)I"rbCQa-3fThk*6S#Ta-IB6[ZYA41EXNb+Np4dbk
B93N@K,Pr5d#A0)jp5`+&kSr!C!01-R`#jYlp8+!&[`5530Q9CFP(hJ'j`V3$Z3%
`iD-NkB89GjV#Xp,+!"p,SdMT[q&%&L)p)-2S#!-[R++"4LXL`0Rd(,ph[6Q*RDc
pL24IeR[FU,29N8`'b)GPCHhdXLi&!qM@K0jSRU"4Ekd'YS'L,(l!E6)i[D6IkJa
`*96b[F5-)6iA@dr$%DiQGDiFP2Cje6+dL@P%0q*'"0+NRBD2A,3%IfUQLV@)b'c
Lek%0-YR6(M'rDA3VS4LX`H0)ZilaciMEjc6I,BQ*3J%hPhIf1Rl`[ahr2l32IAQ
Ae1$D1fr)Z!ac2[&)*8D6ZiDece+QpjB"j5BQ`XUM+aN49iXiSNV@J'd5%pl[#@Q
ZH"LVNb5%q-VPTl6K*28I*C&3rA[G%&LB*V"e)*`KbTMHq(3YXf&ah0Nkc`mbqJa
'&)''mYa@PQh)+aE!6a$2hSdLJ)M60TATHIL,),9UFF6CGlprB2RZ21)P6$lS[f9
MqRe'H%[cc0%[PKZ[a@!mpLK3%d$#,9,Y1aq"c9JE40R#1-hAAXeB92b49&kBr45
B$9J"c6PYUK!H+B%d&$!TRH4N"SH#kdC$,9BG,)@C!AE(E@NbabpPI%ED@NCD5&`
C)L*9VK5&!Qh*!Lli*$FeLU*8h&J&N8$8f0dKD(%(bq4TGc&JqGe3Mi@Yj%)3k3M
2B[SLVCHdBQl9H0YBTRTJ0K0c99pA"k,pcrNd#CE,iQT5Q@"P3'eNV%0(QQrH[5%
k#LpC9*l03i$QAf'HRJL2jDmJr0J$D4$FIPCFC8ehP*-ac2e*F!ADMKGLJL&Nji'
6+$Rf&R&$YV#9!&U&I+4e1#,4TD%&`0%fm%XH'DbST84$j5Fm@"jL81TVMb+N&bI
ha)keJfU)Cr0"J9X0Am!SH')VMcAYD5DFZcNLFd33)DY$VU-!!XpeM"1@q3%kX&8
!fFJ&FEEi,rGdGj!!j,AJ`D#3!'a`c58p,aH%KPkPkMap*9iQE@M$+lZcY4UY99h
+E3UhiDQ+i8@X2#(`!K$aaUrbH9r8ID#3!$+5mMFk8GL1)0Z2R'apl$9C2mf#$Lq
3!&a33Q'qbQEY5ePGcq+M,4E%9eeDiIDNK&-l&hl)Fr2bbe@e8Ca`Q&,M*YA"X36
VH)e8S&IC9[clILdE9RBbl0Zr!Ha*KB&0F1e06)'9d$,%Cr39++mIGedi&G8lQ1m
$iQ"%`-@J%pch1Dad9prHKmD9`"AjfXX(V0C*$U-PS,k41l!2QC(j-%l3HmIXf'3
LK2C(j*cTKJ"EH'b@KP2(9cP8[Sl*41NiNKM&EG`rZH'2hCS&TCV%GePq)06PR2-
1R,!LNl@AH$1%DMf&X@AGTS"qEdE`P`6NrF!b#(2*c(Hrm@X(%Eab3+*-QRDZC#G
p9ITcR8KlUQ,H$dR1B[@pdjaTCh8*S*LLm"QrY%GSmRa1V!R@"iKhZ2(EdihAcPd
fV!j0LDh$'a`A[AJ$L`PbK@KN@$I29EUGf3Bf@UV0cacH*D3CTe`Ym"AZ%hY@a@I
[VYE6HD0&PX6"8$caD3%[!XKrYa0H@ah4(ND`U39lSN!&f`d2H""KYK4%mT-F(3N
AGIBB$m1celEA#VRQ&8j*K1+@r'CY&1R3IU1leQfXF!mq2&JDq6TUcIBQR,N#QfJ
m5$iNd4KUG6DCQQJrfhXNJ,Q-#*5X1"-fClIqS(QDd2#h"d[f@li+[qEdGRD$XZ4
NMTNC"Gb4B4dF@QqHK(+3!#eQ'8e)i(#hq(#E5dY[T2#"8QEXMldcI-6M91'6im!
VXBr40-##kmEI@(TT0'FpjGli'5-k"b[6KJe'+D3[GH01`apbM%Ia'[3KY"BFRDX
,[FcT-dHbZN&&RJ5NNR'USJBRVdrX8Tmpa9h+GYh*XLeH4aRpJh"$m8kB'P+eRE5
e,qFQC3*YIl2LhU(fCL()Pd2afUhGRdp%Xqd',Q`KLqj,B'MY%S-90FKUc3qZMPC
L$+%XA4k,amPR&"[b,mkdH$%K2i%LhliH$f%%c,ej$DU%-`b(5kP1Z,BRH*'T--!
Z[+jUHq+QB`Jk!YdBM*XLM)J!h1iK!YrDeBNLPaNQZHifl(+G"6qrER@li[r$`a(
2@4UcX'%M#Q[A*B'+b@#Qj"YaKhJ05@Spp8&32)0+L4`"0'fekZrc@`*CQ&9eXkP
S#AGFfR9N*Xf!0EdCKD0)baK[8@pDI2NFk6dV(JI2T6Ra%h$eE`D)"rSh!F!f-MV
T0S)rIKeJ8(9@DRC6e6AL0IHbIDHq+@&,@8*fpc6E2M'cP4CPVJ%(m6398#Gm0r"
"4rQB2'+6rNFJb*[hD@B1EZh+"2A`VmlKpK`VlT3cQ&2fDd4"HIaH1ldDG8[Z#RT
[2m&0$)HH(!CKTDHcm6GQm-l,bIUk8lFSS&pIL0[,jNYQY@LITL'9Y1$@D(85*(k
#EI%8PV#kH8)hi4@h[,Z5qNrU!Q45Vp`A-C1`#%jN9B+0IiH"EiZd$SeVSk0)!Tl
+X2I9$K,"DUjA&)$5$mRjZ0@fM+Bmr(*H2Frj%fe!5rCU1"+Me*hlp6'+"'V8k1j
1r!FNp4QbkJN1XIHh1eT,,9R3UZf"l#*4KdF9%!E%Y[5-C+MSV,i[fGY[`iZHl#M
9#jPrQqcdBkGJ2M2!ENjjCQ)ZPkSBkK)JMdIQFhUC"Q5,6TGFkkcjppR')aI[[db
3!%"Md)5e4c+)AC!!S!1rhGKc1ZK9M#42I@G(ULTX$a`F#m$mXUJc+,0a26TeNmI
PNV6K5`GShFqXAJd@J(ZFi)H"(F`#"G4KNBe8NIKl$%D'(4D$9dPTSlS-4Z*ERHa
""-P5cM3%)F1[a),1TKf5AY#V984Db0*J!eU&Y2Al%d-e)ff2!58"ZIPV5h0meE"
X2!eMl0S*5p58UI6Pr39ThbF3kMNHT)CE62bMV(r@GJ!NLlEl8lGL+!5@@"i2ffC
-prjPE$Yr5*P'6jYK)r9BXY6[ceZADXi@AiSrR,P$`UN4b!++NQ-Sk)kf-r2dE!E
H*q3!H2T-P!"VK0+KJqLrIlI3jMLrMmY0a4Ph(+G4E#k)RhZ1k)jYKp85fY`Xm2j
(DUaF6[j9p6c)@DdZMf@c`NqCX'5RTHfKI42&@jT'$j@b!#F+,T4kh"FYiiAE!Ec
"YB6ka4p@1pqd[LS2a+%$NVfLjj)AD#VjQ9L%%6@a5lC-61pq$63P2!j)B*`"RH&
A*KfrV[bCJMEdhcBGkXTi-dMXe`YCS,h5[qU`1hXkLK-#-N3$c[L-I9),rZNeade
F!T5Ac+,V9Z@VMGj!P6YfbeEL1CbkfFBe)Q9mYlYQL5eU(DH!,b"$ljZaj&-HHED
N9P2PP&#R$2jkj'+EN!$,`C`95eGNNl9P5!d*kjY,)Zb&j0B-B%Dj0F3BI,#8FeP
FJVpN*$CB+lE&Pi0QJc`-M2!A1p%2Nmppi%'TLKlU)&2Z"VQdK@r4'b03AlE6N!$
(lBXQ!Y6P9cV!FRLKH(icY&cEa`HDNGH$bVR'T#A*jRA3l$lhR4@5jN")M!%GL#Z
L#($Hb6G49-`,C`AU46E(6a,EkbJT%%i'QCQ3!+,-,QPAhQcjlX3L,flXfmEZbDc
fQ-P8pq!L"!8H"Q3qAFZKIh3VbZrDZhNNr1HcA$k,-"hkP1`2P*2,4+rlf,*SZ[V
1IYkDj+K@"E1d8*CE30EIpDV-M5HLeAJ5ZL+&(D6Uj)UjVlTrZ2!ErYC1kBF[2Ii
Em9j5bp[Ch4(&R&+NLMUq9l-'e"Xc9plC4f(59Fj06f*$%Z"DCFQ(CA@m$ifl%i@
`UBC06Qa`2'8cFRiTJ',LUHPlq@q8mR(-1MTNhF9'0rYf$[3S6h+2T[l#bdj*V!&
h12T9#lMGCcpN-VFB,3SZF9lFQ,bX@1CT"Ia4eTD1M`QIYDND#PFaHY+-mEEXaD%
JY0",RXQf5)S!PDdIbYTa#K-63$[iQLbAamE%19lFj`a19qB1riTC+&miF$@'PC!
!LRdc'mkU6SFZ%5S5$9F-cRdR!YTk8X0Q+pX5d#%&10)!(!PN)cLTp8`dJ"pT(N3
'6mpGSRL08&85bN"&E#SDIq%[dRjl"DAZib$%2YADk`4938japqcAEImm"4ETBmf
Vp3&fQ@a+ce`$Ykl4NArBA9JCCbTdkP-5JAqV)Ja`!HTcU(9FpYXq6IFU!`m)#UB
clULYFV")c@9-GcVL3A*ZkHfL,KbEK!1F4VpC0Nk[KD[)V[`)EAE($jBBZrFXP$F
*![3AkH8*&T4XV(Vc,@Ml)1L#bQjB[@d*D["5Y(`"aPC8@bDC'dq*iF$ZJaVeN!$
33IE+HA-'r5"b!lTAVpf*'hLCd+R5-F*bhXRCRXl6KGiR6[eD4Lh`T,4cfTU2Jp8
'@eP`6!4'rbNjpX[cj*!!YV'JrMD"LmN-*%,+HJ&*E8fEATUTq[EhY`-GY*aE-U)
-ShN$Y4@d(0iqBN[24Ve4lF0@BCp"QEP!92q+$-N52rebeY+SdC@EA(QJ2EG!BGp
`(S1YmBD)i$LS-2Y$lHL(PkL@!2aEdKrAV@I)$!'K8NHA6S##XR+2-cZ(H5"Li0L
9rK&jMYP++64(@IPHM,[kf,PhjDqjYUTY#YG'*e4%)UA0X4BZFS&$mCl3'8)j8EE
P0Lb00!U+X@35G!U0bBZENjRer[@T9)hBiSNK@([[H&2Ydd4Q1RU@2(4d5jN33*T
!Y9Xb`UdF4cqf9)Ie@&JA@1IN0rIblKb'4E"E86qiHkiLUG$'eiZJS-S82hqm!2a
(AT2-#kBr`ZFAp[SQ8HP#V[CKc@BFer-BMPK[*@@i'XM5r2jA8Tq-m3-r"lY6(55
ZGS(SlF(Cckr[lX%jrMq"feT,kK[!E1#chTXBBDH216qTULlR!NEQ"`j@V9XkU1q
'jM*!a2[Y9!E0TeLre-*AqQY+hm)df#DQ#kmY,l(Ij+$q&5DVadNUh6'a!bA9lU@
lEG4L33#Q6`i)fpr@rX3R6qpm'Y*P5eTDX[Xjf(V1S2H`pkUGpkVhq'Bhpf*3DTr
GCM0I6MU&@M9AGTj(Z$VFfVY(Tp`KF[Q,$@@NDKVBG[4id)NI8H,ib#haUF9fk-X
6Y6Th4$KED4C&'IeBDQNJa@Tm8j+hYjRCcEPIc$T@,l(qIHHrI6(cAV"RD,0(iGq
$8"Ul[qcjmp[Sk31+jQB5+h%6mZ2AYqDCK!T5@)&EU"ZqKeICU*el(A!jISj+$J5
Y'Qhh840F)rVQEB$(U6J$JMm-fBH&``@)YZZCe[4EMU&5@@rZFI2C9IIicm!j'S2
8'iS-T*'`f(CJb3(S('(Fe[hJ0pB9pXaJ'3E*hmY2F%G"1ihNL2*TqXe8I6lHFVa
,3C(4JAMlFA0C,GZ1&ChrDErZfjhUEJI-eJrZ)2QjbZYL)"!c,-1A[$G,N!"KA33
-&Zj0$mSD+l$q&eKU2rfZ"S"a(LKJS%1#FKjB6%Mqhr05pSQb"1[XC(YVX2HAJ-4
Q*FSLGHM2`,c&`@[a[,Zq#4d&hl&#VrhDp4&5AJRfJ&QB,J,0,i1BZDIiLafl8H!
qpK3@IYAdQ`3#@BaM"Z)"Mh`+qQ'4bU3c@4jGc[q9T(!fSaXc0(`pqRZ8[a"abNe
X%2CVKIA2Qi+ZE(DT![DQl9qa(j4I1F5@+ClJIdq8Y-N$H[i"LGi12,5E!AT5H"1
FY'MC+p4+(P$*R3m"iSSEc"T'56%954lb$3F-m'*mc#UY*Q1(#f1b(AXL5N#KP$3
-mCd[,h4If0R[hr1(jM!8UkL,43f,CRNm(GmUc1A6e[KP#B,,YKCTLFICHp`SYHL
$i9f2F)XGdeNA1p,id8'Y-ccqdBFfj#qEDeB$k*Y3PL-Z2T6*paABPB3"2Y,5NjF
rQHi'K6X%dKPDM6Q@Z[C@*MP1h+BbG)khaHdVra[q@qka2*VHl`6Nj*0`@e6d3-D
N0K0'P'Rb!XfUNJCB!YAUm6GX-Dd-lpYBI)dliNM`AScbfa@KK-RdMU,b,VEF9je
08',-hpkFIAZ05P8MZRG59ZR@-pe%!K*Vmr49h`NY`I6N5H,a9AG,Kf!pN8SGN!#
Z"EQNT("Ml3aEN@KcKdXL28A$LmH4T(*Sa3P@hr,`82JarImS*DQpjeX%mCDN-pU
p(01f!cp39V1IrVhF&kQT9h*39ceCYU'VF1#jLJ)VkB&'@e`YiaeCDVLf-Dk""pf
K9mX0$PFT2T0l-KbN1YJSZ%)jd3R'B)))I9cPlki+,)*HjSLJL-m(,&4`d)mFJDB
i'M2*-i2(VNlTpRRLLp5CLjDT*+[i-qCEUqj$llUSIBXq*"+,i$6T5pPIFT1)U,f
cq*p%@'Nhb20ab!XhDlX80+1pTm'ZN!"h8Q-`F(6!C'pf@0h2f,949ah%d"`e)3X
aS,5X5*9I*bTk'`0ar$XEV++XKpY"L@fU*+UpdH[A+G9ah1I4-@4`G$p5Sj@!a+6
9G@!ElpjeUbHHP1GEYM*@`(DMG%-[Mb@QC61bIj+0RBP6B3C2J%6*J"TcD#iqi[`
efH(A`@$Zq9F%fTc4ir$*r$@#m8KJG`03PVDNBmelA!(@P$hTN!$LaRMK&D4S&hA
3p!m[pP$PT!Z3!"fD[bLNVS+!S!D9k!ZfdTdNaC+(+k@5MACEDr%@4r6&qR`(Rj9
TcKV64H)`"EipJh(r8*D[mh$i-mmM5Spd*G[`&CejBJM9!,)IA36K3$Q(Le@@MId
LfmZq0e$cYYKqPNJV4MEP8`J[ZE`cfYHI!BSkXr4@S94miqH)qC5JLUYZBQ0DAme
q6rCGJNTNE(dHUrDUd4&qXE8K5qfaj&8d3-e2,%NLE)R-RB,50p,jRY+l'*lAGm-
Xk0jImA'c,A6ZE`3ZrGGfABQiNK2H8YqC$RQQ4cE+3!!aZr[E4#0@DkHmXf#%8h4
-85&SeYAJ5a$bl316Vh(b1%R,S-Jb&JK09@+Cr&&XEeC6)28'Sac6#*jk8p-4A+J
!`ShB'[l1bENl6MhM[K4GY'RIl9cEdPG,!,'$9+9[UQPc-41G(594G*U3!%E%FRk
"8BlAfqdf2h!L2idf(Md'@jX[Ui1qr2*"kA3TL*Q$pp*EZ2NlrTK$3D*BPV-5%JG
E6-9Rj5N46CK-lIDPG+&J"f1U0*&k2K--"kRjNVLrFPpCSC!!Q,`9e2-90$lcFre
hYdV8HV!MMQ0Xe*)b0%DJe'rm6KFGc4L%G+1Bhp*pYIQ!1(FqBF%$L9NakpVb%I&
0[8[F',UF2'Na'5`a2qYjl,Md8!-Cr#i2@6ba#PGEZ6iMbR*jc&bH`M1%$h5&%bm
3"TYfrQ&FhUHG1fV+S!CFkU5R5h3f,[EYHicbb60iHqMFak-3V"%I"KC"ZHFQ#Fj
GRMVR1jDj2D#iEK2ha'5Bc@JpibUj2b*i6)qVPk''A2R'i($F"b1e#fNL#6iTYaa
$aT)Pebjr02Jf'frKrfi3QIjFZR3$!JPc#292+YT98SIVr%+l[@%"#hj4,HGDe3`
Uee&(p,!A#fA8&YT&S)X0e$e3fUAc)"brXL6kI)PDaG4d2)1Em9LKIH%ANBj&4[9
aMS+TPH2[FbTJ*AQFDAUHf%#0`"ZBc@2$8LMNVkM"4T!!K8cXN!"qTjCq,HFJlSI
QFRK#p0DaR1*DlE3')pYd4NZ#r%9TS-4RBYZi3M9i)U@I1N56GK@HMGS&P*PFIlf
1Ib6VL5U9JUd&"[+MSpS`N5kM+4JLEf#j`QR,Md+9p25bAihq)r'R+)E"qS#haD-
'TRP'"e(%*KMLqU["*ep@G+Ud%Y#@2I+,$`DH1HI#-40a"b-Q'TjmC`#-*kKe6**
--LK2J#ca6cZ@h&1Pe,(C[(XM%@KR1erf0$fm9(j5i%BKHSc+A&8#hfTU,Q1eLhZ
89-aNH`mY3*Dk+B1K%!pGC5q2IGc-kk3IF!d[!d,fbf-T(QpAp*2EP$)p'!%p!iq
$KSica2E$cKS+U12iUSSe0hS3*GP%UQP`kVT6LpZ8qXF55f#NNdEPX,2aHC01m,$
U"c0RNKLQbPB$e&lE5b&8qUh2)IFDj[*!Fk"p`X*MbRr#KAfF4E-dT`C*@)(qqQh
h"@eI-$4R-phlXlT0ff9VDAV!edSSRX82)c9p4jDIXIfZ,bNiiZAVeCB3B)SBr-C
FjR+AQH+2kLBF3Hllm9q-M#JX9,G8e$'emH!QYCrVd"1e9*jk-`k+i!dmIi-Vk@2
JLBm3YG'!L0HRIb[BSapJZpkjGPpJbli&q(lCRlX33M5@fmaIcYfZ5`0,#2&[$EH
aHPli1UfHU5,!@-lLD*A6L#03*AIU4RK@b0GcUX%48BP,MhNBhmlB#FXaZ'K$l1H
mcchF@2pUIY+1+Lr+1+`H93X8(E`k6kN+kp"8ShbNBjE,)PKV8!mLFh!cSR9iPpL
`f[Zd1YLjd-8KX"i'dQq2hfd&EXP+83)C[kZ1Lcr6D'NpYCL0)qbGr9+TA4a&$Id
l$e3hf5iVXeIaP-L%S$*#a03PIY'eTX+G[P60!GNZqr#UU1VlR"'D"B)SY+pP(15
DG+M"-+1*Y'pAP"AdeZ!ElaV,FI-'1dQfA3-fj$8S@%*3Y&akq8[DMpC)SkMIYAh
"m$h,UceM*-N9&T!!ZdH6MYYk9LDdMB#+(R[+A'3UU#VjVGfL2JV$Td@J5B3*A0b
FL1Z5kq2cl8*kqaSC[X&(%@JDVUK0*Z3B4Spdb"HrI'R5,Y*,+rP'TZX56X)iZ5U
[V8F8-M[e(M9iUY49[ZFVT"lK11VZP,L92N(+beMScCNcCE#ea9rVqqVbp5C4R9S
l(%Y`@CECNIB8-36FcqTXe!3qrR!Rbk%TV+2UV29lYHZ$f4#F3Vm&le+S&GDhM)K
IK9SrV+kXJK%*"GXp"%DU1IJ@hGK)2VG+-`04V9aFfQ*R6L[XPEPMi!d1Tm[bDDb
IR$0m2H9X1`mRTETpFj(m4H#)"BFmk01j1Sek2Nrj@pQ84UT"MLd+jS[qJ9(mdTH
*pZkba!8*Nc'F92,LV[I(Eb[Chl(6!ff+14%`rPLaf[4AG"H"I53f[!l,lCST&'p
G-!Hf*(TEQdcac8d19ljD1)Ka&NIV(")em`3k-X"++8hSai@fBqL8(h-kFaN"PQ5
kM5Iem`aak1*Gk*2%0m!PcfHbrCpXY`fVm6[$1f5RAQp[%EVp3JqPeGBjDdeFM3j
kRYJ$N@@QBGYBS6Bp$MTfkbE%(RNcb,0-FGPHa[fSaGM%S635L%"aCK'RJM0QRMf
@$EFb8PEC(&aT[D!3Z3DC1TJ8+9X,#&m2lZkc4km&lUPhTKEHb56L!,#S)Z"r@%U
(maA[$KBNrU1`9lNYFU-qjdfmSVphV*FlZkS1mIVc(``%)&NLVLKZ,I8*-QIXXda
Lp+5dhcRdLb0dFlf#EbMN+1C!#NJZRC)XKa%88SDPRP)llA9i(Lpm9!X$q2Z`@*4
djI4R"#$8#GNU14Vk1V)a1&%3'#4p`am[EMl3jkcSR$NiKm'%65AD)mkImZ)aeTI
RDkFdM6GS!43lb@2a4hRq4Fbda'`b2(Q#,8HGI)P5EUU2XV$j,VP@6lVpI3lZS((
*9,)Z+PBldb3k"VN,*ij%qq5lF+pI@-R[IVDKR#kp$lIB152!I@&r#B"e*hGC3'l
akl"fNb"6(!%5Pe(p+%6R'klLB1m`(qKc2*!!kSBkDQl&1D&Pd*[[YNJCh$SH%#-
e@`Zdc9!@'HeEpEG$[`YP+-rK[mffDGB5$'38!mkemZ3UrE-IR0*-cJ-+%-XG4-$
pZ)UMRqjIf8UIKIm,Q2KV0rf(J'8rr$cC"bhQprAd842,YXFVbFT3XFh8I0b,iU'
XadlaFVD3!#3'TlkpXD3L)9d"+U8kJ'`1dD2KpMT[$+lN!Vf-3ahhZB6-RU%50"l
3'@3Cb`Ul+pheBU"@0$+bf1)5NCA,r+&GPqBq-VDL[mqXFk!QE,TlR,dTFHYHT-Z
Pmf*1$#kqidPiEl,f6*Hh`#Z&jN@V32BeF!Y352%4ACZB)5kJUXd(JPd-BiZFQ+j
B)VMJZhC&a9&*mR'q1B4h-&AZVPHYa)hZ'Pl[4ClRMrKN6di5HUKhbE329a!!5LM
JV+GSH`8$rYQlh0HJf*'Q#FCUZX!l-+`L%G%rc-YqiLP&3F[29U*3JRPjfbE"L'8
!Ar(&3VrL9CQbPU'$i+-4ZZfNde92S1mTcTr,"#*C2K@3!+RBNElZ883p@T2*d,8
dC[GU,0V56r-afSXUU%B-Zr8DNNf8-(K2qKV-285NR#0T3cc3X'1#0QNRY!l[$*D
,)UQQN!!0AN)fSb3dFX,9,!JH6RLQaG3PCrTqf%G2#-dUbH1N8l4,%aMK2l,-fpR
J9HY2PEZP$*YAjS!A@55,@NaijP"+ED8LeTF5e-ZjJJl[R)5Li)mr523$1ZKRaK,
a*jm*FpdKY''9#j1[-,pJLm&JJV&6R-H1CJVIr2mKKS@M&K`LVV9XB4iB5CMT3HZ
*hA!rAZB!DANapk&H'mPa!4KVAB4a5Kj#66YNHU$%"Ya2"*U'0@BCN!"(ATIl81Q
@Ei990PI5Z*S"Si1mPV$0BTlI"h!B&1lPIjVkM9*6N`6B2pl4@IrBD(8H(MUjBHM
m'f0TdX4LUTG*aKM1Kp4UkR'Ej'-2VZ@YGLXJT42m'H[VkbV@HbGeRQ)L#'Y&r85
cK6kmJNkI4S@L!C!!6aj-pVJKK2mXT%3bTZUUSPT&XBj%+1`(KcUYrP1J"m!F#m3
(q$b)MID+$LbpC%Kp-IZpR0rbIT`0a'&M&C*3kVfC5,ST(l*k1lq0HGYe9(earIp
&'(fmpeV1KEa)G,eIHf3Xb4cmH`b4K'1(L[#!`,`BG%4Gkl9NVATh3S6UJNHFlSP
aFI9"HE@D"!M!-BP8`NaDF#XB$E-A9B3i!`23Nk[+P'"N%ZM9MMpG(,HLVqE!i9T
TQXcibS[`I6"+k25`ae5Yc(d!l%4Y5"r6@9lZNAHr+RQjjb#1R`3p5+kG[l"T%+3
0ddd[9S#!BRkdJ18F0S,kkXN5cMm45p@DceQ5*KfAqjPmU*+i4Kb6dT**)8U(%C[
[@UKPGY5Y[ThpX,j14Lp@YZ#IlCGBRcT'`5$&(F*FfI9FB)$#YJ+EB)@+2#(ie`G
!pJ,95RIFKEbLp@G'r6l4MYpbZ@#EF)4L%eY@B%mZF"%r1,%MR+`*E18cBpd*,HU
M9(V'`dP+p-#Y"#XYaQPLG*i45$MkH$HITb0YTZjimdFEqeCdfJ,0GLmYU'Sa'pA
(XJi*FA2H6'H[l)*N6`KM6e4N'(d$TG3)e[IeANf'L,eV+53JPXYH&RJIrp86J#b
+TC!!Ep""[6D#aP4"H38"#H#,i6$+LA%3e"C5LMNNLM'p''[J$c#)8K2rVS"al$e
Q`L@83dHAUP@HeV0bTcHq4p)pD8'&Ak"Sm%%kVG)j%d@Xk*CCLAUIT(T%UN(q06)
,8Yk6HLGm!f"hMmG!2EM6"*I#3)5#l4+J`M5JhEbbDq5bk9e+`[")mF+)'kMS+5T
ID94Zl%BqZRYQ`h1'p"I!1e1-NdI`ATHf3EHC2%AhlZ2NSBqYpLB5PkeX9l'5AB,
4HPI&GBVrA)6`'0l%&%32lC!!!9pIdRbLMK3cGQj6D9UZRPm6GNLDT@UqN!",6b$
I%*IBbf85kh)5T3$,&RKIV)AD02aPi9U"Cb$cfiTS3(Sh'`0a#q9GcFQTLPqV3SI
5*0rC4S',--FJ+PlSb04CL(HlIVjmi`p#Jfhd14QH#Pq3!)%`6rm&$j(%8V!N&p5
-$dSb2fNABAS86LFHRf3iLZRAr0rSbF)L%iAS&0kV*kqiaq"iJHCKSNYqP&1L3UJ
BfDK!2%hq#MqFmB90GZ3f`'`%jE52m!H`jb"+L+8[X*`$b,'aJNc5)+H0"DJ@f(A
S[S#aT)UPAhl#%P00eee,Xd3iI'ADQB8##NDr-q#E`brkHm5PV4ZYH-R0'f1DL8J
*"`)e'ZMJlELB4$&Z,j-&(28%`TR!DH+"#QKHLRIlc5CPE#ZV6@22`TP)ir-ka*b
(ISZeFGmSR8ikh4H,cZHHZ-[+EZbBhI'Uc'B1Eh*mp[BDFLYE0f,lh',dS2A5P4,
YK!Q(ME"E!b#h9T!!pJ"S2ZYN(jTeB0kd%ehF@0UpN!#LpG4h`'d3*R3-kY*p%P%
h5HS3l($!J2l,kie%VLYG285m0rB)pm)4XHJXATkQcla0E-rQ'"5#XLZ+A5P%6m*
qH14[4!qXjV&[NPV-ekA+E8-FjBm(eeEbTNF+X)4XP9LK#L5A0!)CJ#A2`Qdd!Zp
[&Hl`4Z"JS(S#8'1UPTmq1"eT,d+l(ilCQYTTTV[!,`qfX$NCF#H0(B+9[pT+`S0
6*J&@1jU4fRYCTkK3`4SkCe9mfVImB1!HCDC*#q(acRm,['N6DjZNqRlh$&GX&a4
r6+C0hph4p5j56)I,p*ICcX@-+KM`q%!G`pZhEK*'D@(hh-4D3)1j#1IKT),@F-!
fCrG4aFR9ad[PH,*&G@8@m3(1UdQ!"p'1GI5C%IGjcJbY+'T*r25(b)QT'lD'b04
40%,4c9Q%j#XSXT)Z3C!!m#Z0T[4jA@5UaX,Yma0MlCl'#rV,ZUZ63X!K-GbJeS&
@Ep394$4$ealA[6K!SpErQP6r9rM1&h2rJhkS6@cH*#416E+pU1jhRJEH2,3hZG+
,Z")L8DASZTZZS9mNc1AYSHpU&)eQ0P2"&PVPlf#K*dMJ#bIFU,Rf+*UH#BqLETd
XEe`hq"S,&YbbC[8[@d2U+M39mcX0F4f5'4XUkS'rM"&e24lk9hLI-CX09$F3XS@
V$#$rK+(2(CFrNLc2R6M`RRB!EAU$0qX)M2'MF66$4&Ga5"T-+&VEeENXc86PM#[
#RF(jrZkk9ll@T+*[HpGS)JcQj2Hd-BLeL,ak$Y[B*f'GHpYkB9Q&T6SBU(T!eI(
+UhB,N!"G[4Cp&'5AF'Jr$&$Z,3AcT-p-%B2MAc&HXr(6YU9%'Be$DQ+#AQ+J061
Iq9FJAHbq[DBPLm8VRCfUX69ZXk,2Mk#S5E*icfPZF(V'*pja9LLA@"PFY+plc"4
l8IbYHrE@Dq"HM,FI(eB8K"mkrK+lNM9&A+U6r9[*##Fm*)iYH!T@-5SCBY5`Q(D
crF1U&0,pH8Xe6@J659FZRA)[8fPDKEJd@I)hpZ'm!XF"&J)E+[babA+(S6P-TN4
I)TZr[68rJ6b6meR`CeL4fB2-S&T&TFe8pd)h$5GhrB(cHXkH+*PMR8'%QTaXBed
h-(@FCQeLYmBP2"99&9i@hcVS!AqMZj,kTMlhcGbTV@-6#C))"j+"CrqNiZQ(QB$
[E+@FrKp&#T%KG"#BLMU1VHj2AHT("Zckl6$*-d6SMb'"#E-2Z"$Vm`[j-'-r`LZ
&&M0P8C!!pR*aT!GH,SR&fA'CVqFB3-NN!hl-eY@qdHR-UYrNBZf3!0K5)#$G2m4
E*mbXYeYaib0m%5eMX(3$+6$4L`'A(PR4QqmKi4SZ0N'Y$JSc@5D)&3Za2Z23cQb
Rf29c[hQA3[HAI,E@M5(e!L`M$+EMHc(AmlDJL!Sjd5bk8eD,%pPmFH2N2&LmN!"
ICD5PTc2#G1MaJqJBlf%1X)[k`G-LSk51,RU[1djkK*iLR04"4Iq`8P!21+MPRNG
J6&&i(E94&YJI91!CCc3E`RiZhCZ(HJ3Ubf4XCj6eprpRi*,GLEd"FjGT-"PaE6[
jJiYKbIB(@X6c[YQh,4BplkkaNP2*,XZC#kBN2dT,ZVd!SqM&e$F0MC5hME5plRK
ZrCchrmQ5(*bS[T%1!4NN4A@SIa"l&`2lCPD2"9B$Y1b[Y8F8F+S$h@rVX!X4bq*
@SabpDal854,V,GIrd9SAUZKEX%ZMbR8Y%L1b0*M3X36R6Vkme'IcreZi2T0-BTf
@BPE29(aZLHH%LCKK2V%-8KaT@*H`KZU-[@2&@,,kDSBIh%Gr+P%`dYUm'"!6+dK
6r1$9Rf3B1'hq8hF0QrL1&RR%0L"X'ei@(XJ"RH-Jd+-[qRk(DhHrC!0P-Y5ql%p
YB5[UBI@bml2F-,pk,@J2V%rcKSl6TYB$VrbmXd+[HaB0QqV3d#KIU3!lBp4AQp4
B6f%ef1Pm2Umk$0%ckY"cS4"`eX-iYmBpX50q)qC0ZPj4hAhQM4)GZaMmA8-bC*E
U$5,`GmL1BdX!h1'%HcUh,DK25@C3lr$%Ti9X,9,"09-c&L%pY-#0$YVPQb8U6Y$
P5C)l53!U8NcPf)*apSN2Q!T*bp43I1'S#(jK"(T(E1HY*,*R@kHhdck(BY)VHHX
!cj[-16BA!HKDf,LH0*pXYIq9L+Ai1@-jqlB0jGJ9FCF3*&cq4hr&#fa2@KHl45!
E,,p!)jKj&dqKP'II%[al%*K@ibEc@[ME%TpXD6RDCa15cq)2aJNC[`kAM5[KkQr
M*RmGKaSDi`5bp1"IV+6R2j6Q*$2DU$SX1@168RSMD+TdXHYacVcZQl+pKer,dPX
qA,'Ba@p-&m"#4k)q6(#5k0&5[iNBBr+f&+q*Ud$TjK"4*M&5Z!)ipIpeKXd+S[,
&AeePdUNU+5`(V`JbXGHm@Zc4B66m`[AJmHi)j&2(2*a5KGFlIk+a5dQITcPN+(P
C,B-BH09#-85@483B43U$D`UMY@q'LdI9m%"FA+`2U9U*k,5"T9c280T!"I**,`)
l"4NG)8jH*5MEFZIZe*LRZ(ED3RE,$aXAYDAX`Xc8[UQm82GQ%25MCfpSJM`BX"P
hB-V#F5[1,l[ki62%A6"1VPq$fjQpSrF+#Cb(Jd+Y8%cA21Xh$@CR!(jPEjm49VE
p)He!kj(Z`K(VGj9'r`3Q5Si@Pklf5qpdLQ&3e%5lKfc0`@9E02m&bhGjq5#&#a[
GBp%fEi96M[FG+bLXkipKDJ*C,ZeehaS%89Q0"rm&DpV-RCrM)H@Bai+#NhID4&E
U1ar+J&Y1A6'Gadbbp*Fh8EG0SVl6(kbaLYdYRqUf$#5FJ"5AEALceLK&PNVqL0X
C%HlQm9!8B+aheEIZGalKF,H-Ch`A-e*@XKlP309CZ*JIJ%+fm[p'C*H6SU,d*!B
FAkH)lq2rI6HUUicRLj4D`pPB!kD9P--S)P9dH5EJK5CdG-l,Gh[Jp*HH)K#mQpE
LIYd0cacc*p*45U)D+3XR'N)e#RTX1"*GjG"1&fVZ0Ae**G*6TS9(NKj$VT%Ui)+
eXHYYp0"#rapGFRFpfPZ%!"YRQAAISQ')$!FD*`-(,'Z!jGl9r@Y'Eb140C*IPVS
Fp&$($UfpaQb@4mJ1rh`a0BQ)445iKKI0%prY4mipR3ZGhAqV`X#(68!Zq$9iN65
bk6V#9JA$em+Ql-(IR)8%+#!mlBrcURc`QY3'AeY*k93re`+(J8p3!0VMrT66c4k
kU#Lahrm*GJF1CNX@Y`BQBi9r(30GT)RR&$LrbIpjXYC,fLDb(RbFCV,JK-S&[He
K`TH+R(P"f$4*&0ecJDlK,Q'3!,Ym9+QYT6h+J'lKl&ad0)3E,cAI5HmV,EqF*Z!
e3!Ed6AYP-cSQ`6MkLS-DR!,YNj6%La0(k8),0M4LEN21,YYM[hr&%[5L2rG%%4j
HiS`lp,QGXK-ik*QHR'YGdV@kXlJDk+M&p%1*CI,`1ICZC$+%AC1"La3SiV0fkT1
mM#P2Lc2`a-(22#e5qfUeM"NbN8mTT(a,DVMHJ'HPCXLTd,U8P#bdT&B5qNJef2"
c[eS)P*!!RE`hchDC'"1NaI(l9FhF"[[GGQiX86k&M3#Ek&-Qedra0P%GRP(l2)D
Dmb6DM4pQb%+bX4N--b&8ADbNj@hHUcPF`)"YP31MNQpZ*')Cd*!!!P9mZ)`k)RE
M3$XpVQ,G[c6SB2&`#*Vka2VlKSZ$+)dS5e"1F[f,B9q3!-%HPa6hkD@e`AV!9Sr
`)'K%3RlGGkS)%4H'MFIblPqVSTEm3l8Ti2amm$bq"QGm",h*e@ecRGd8&NUAfJ[
#9*DaqjA8@`V%NMR&09rI5+hI5J!@3PX8Xah3b)TPh-'FTC!!'+cTDj!!Pmc0%4*
f!C3Ub25U)`*DPP[E,8JdUi4l*')3Ta,G+9LC5K+V6a8kB!6"hqMfS[0*0I8`,Jl
-3AE3JH$%&K)[L*C)H-Ip)$)kTqJCl,Z0lE366aTr1K%F9$)BBeUlCJ[bdML%L%T
qbZ#)Ih&3-[9+d!alrM(8Grc@JA2M0lfZPK,LFeGbb!H`!XY3SIRJDT)d&-$'Sfr
r[@q%r@*MIb9KmBZC)aH4&4-A,ZlVTZj,DVr)IMaUirkG3!eC'!Fai(&BaZI'HJi
aF"bMq*53!,Y#-Fb@hELK!pAZ!%,*DMD9i8Q5U'Z-p$GE0i3Yb1c5HY1"p%,HicA
qjYkMSQ0hJ&cJScGr``J9k8Ea`QMkCeXUa0p1LUdX0H#QPUT41'e414kA%P[QX`D
QDkV'mVY+(J&VE'KM*kiiVhb'j41QB23eVXK9[k$'*M&YbkKI!*Kpdd"@fK`#cEL
SN!$YE8bh1Jr1&@6'AL&TiJ,5dY*j2LEK'&ZLpkf,*"8lJ5r6cBT-,qQ#KIi4LmS
RjpXiA%Y6lTXa-bQDL,Xh!+)+S*Y4IC!!)+bm1)69-8%V)el*bD4i!`6%"+"k9Lk
ik0e'lqV'FbFH((5lIr20TPG,J551DEMM+VM[bm-U28XkSV4!d1ki-Ma,!IJaf4E
r2PSdKdqdSVD6b5IE1Z"Afm4L+JE&fFP2pj**4mdaEXF81Fi4qT)3,0UMqPY,9I-
U'!VI$Ueh@AElEU5U$VTYflIX4VV3fMBehe8erjc1I`[jJX'GI,2J!prV!-ZY4(4
X!J6U5-$mk6hV3#V#M-32'""p,Mb@9!BpiMB"4aU#jJC-M$"Z"%(ZpFC3YDk['B8
RGGkUlpEkCh(DP6mk!T(AIPG$&X2A02m#"YZbSCl`M`$FPi9B,@X+"QM*'UM1#i2
A!K&JC%0E$rB!-ZD--C85*-E43[qU&8l*jcJK0KFJm@Sdi6k"Q34"cU#"V3e!20*
MSrdrZL04SE9F+9[j,UR"N8+MlGffYe()A(reh-h+b(,c61qmlI1jaeV[KV3CKm+
PEA(ql(TGJ+ekET%CikrDe9lVK'Pmi6%T*B@!p2d8JCBNb`dqNk-(IiZY51mL,6d
QD(,$a[i4S$,AaPh*0RT"$cH`PF4r#98acj1+0r+imI(3Ej*1hC!!N6c%H9K&jL`
)'65*V",T+A(1'lMF[ea3[8KK+CaTBHk!lBL1df*M*aQV+D+`5qF1Kk1IZKRF"G5
*mfm3mm!cb`1p`TelVH8m4HS#`Vm[&mH#J`4`#hi"d[Q)"ae1iT'9U53Rakdq!!'
@&[SYqANbcdQ!!bP+Eek+r,hrmb9hQDGqVTSE@arQ%U9*Ea-Xhh0qfS5[m3S,*A$
1XI&[dSS'R,5ia@`aThiY)J5&&PN-X1GlCHjVYX#I!hq,0@RYA(T2ZMi##MMMPZZ
25mI9cl61$V8f-TC#1c9dmT)F&T4-U#i$aeX4f5G(iX[mDB$P@!$&fYH%#HHD&B'
5ai195SFb)HX8e,q(r[NUSGYbY-rU5iHCi[0SkT+pRRArKB@qQY(CVI$d24Ml+er
5*UqC$f%42KXF2a$'[iCdfL"IYm5+XIV'S*kK)eeAaE,Ppd2!(T4l*h0h,rA),!m
PTcZea@NU0$3N6KKE6F,'hrZ+)ZKpY+ZYZM(0cj!!3Em@PlUJEF*,rUq2MiRc,M+
eZPh3*f+U-@@ce0Ha'BEJY@I-*CSZA@[INA4FAEM#5E$D8[N`r&i['lJT)l2LeiV
iPTS6F3lH3HR%XQ3cpJ0P,,'0cX%2$&*&laBb10@eIU$8pr@qj!m@F'N&T*q1Y"2
"0NXFi`2SUTBrid8q8MU1%F4q8Gqf,%3VmA3`[bbhBa"QQ%(G2H'9PdGRcm#`p(C
Z(a5!(dPIi&)--(91E3I!RFfXj[,5X$2Y0+)1&dIk$I,hS,eriAHZ9Nk!,6i3@K1
EB5q0@!cJEqI03EUh#S(X5@Me&A[H6h'Y[aTa%6hDq3)M-Y1rV&p5*NMCHfF+NqJ
ZY@Xcp(BQFUERD,DXXri$GSJrhMJD@MS*F3`V-$aEDUYq62d5DmM@R6iB#Nl$JkC
K955AF+GX3HXG3J5hqRkQHI(bi%[LJ5-Eb(c2jcAELCcdhD$E5Mc6J%F6TRihSeP
&&TGPHQeMiL*!R1Lb2VR1&J35C$Z,mYK[K"19pL"ha40G$RcT)mK#ILmQ#3k[&QD
d'!TN1H#q$Jf1LfZCH0qDIJ5F39Lfe#kEJDr*Xc82l'Z#80)jF'pr!-,$A*A,3[Y
"%hS@F4*0$`UV%b!#)KRK)IAj+$lN2S#MQhfFdSC50AkSTGdjE(3R8,613R-$PTR
T[-dcqT,XcXZmp6fKQ*)Z,C3PM2@EV(Z&$!BeqKNSmpE6R+XC(Tb3!))Nja4$RSc
"hCT)8*R9kKN@lpi+!4Kl"CS&@,hYRa9@2hNC)V,cY(mN)J"NaT3%"SG80AbDlrJ
G0Kb`800Tlfi2#h*+*p("id2,rdRq+hJEll"J2a,8$iiNHhqJNGR"jUiph@&RDUL
j@'M$Qc5RNrFShMdH,UUTTYFm"YF18X4@%5E"FehT6&ErkXNYQV5SA[3[KBD+4a@
4a%8`m'KGhm!&U18RqqEDX86k$+Xc*ZIiSebr#eNcF,k"A'iHPF[i0qq"P!q&E)1
N*T!!Cp$Bh`F--kU$fFKFj0$G+ij*%i9G3dDd*ea)L*B0Br(iMY1#&8T&YF$M*Di
fJ@CpXmp8Gh"P"6mSMlDrGYBbrMT,!hbe&bc)[2m-lV!F['cNd`)TAEfLiiaqE4G
S)X0M6J#XEedM,G9['e5!M%iAh),VZ$*E(6$!PdDKElmF4$+)q1h)K##*IU&Z+'Y
3EjAPD'b@&$ldZpjY!60"HrfSF@f5!L58h""EKeELQ4KlZbFLS,NMr!!cM-p+IqT
FLY!FG8&BZB#3!1NIQ[fA9*2'[0"R,R!MSGDdN9krem*HIf5`UAQFIeQ,EpK*%2r
BH2Tbh-"5XF4U0c)USFRP2fMK,[QGKZKZG`(0B-D2VS[*eZcSNk4DQS"hd*J!iRY
f6ATV0[Y*B%dL'VkCVKZ)i#`F5B$IarU&Bdr%P@#@mmR5)cU(KF,b8$KJT8CDa`(
1r@@FZLf%8RZYrGb583(9[[-JATVC"[Z[3GMY)''4he*5b&QYkfj4dA2e`@T2$j0
NK,8kPKj"E`R+3'&#K+UULNqDJB-&NCaGQ'U82r@bQY9IP+*LPEbQq84N(P4"maf
rf@8RlG%IK*IXhq+pV$!fQ$+ZdQ@Kk6RHVA5E'bEEVVKjbN"`iIP2eV%c,#(6`El
!STPQJ@p$hANrlT3AqG$Tp*qXQ"9V9mbcl!k&[eqq$4CC$Qm[ESTr`4&"0pbY'UN
!R$Sr3S`QkeI,Rm2`NISl28qE%)fFb8,b[f4Xa#+3!*jM`LmX8EABd%%N&r2Ze#l
XBDEDSiShbfGr,RQPG859c1G3E5XXGF5)C`)*$YiK&*!!,NN-&!GdpIS([i4-XU,
j0GC&)S`EZ`-lH2$CeNh)(TS#kRYZfK6k@E#d3@dQqHSaLFlR*)f)*"q((!J#rQf
cT!R'Da4PLl*2$L,eQqRaE*14e&hP%UmQ$a4(*JpADI!Q0,h9DYLi-dfTEA,`X"f
T3dLbfd##MijNU&FU9!,DdVmBi[`Ki*Z#&9)2G[3i+658H6m8a#Yfff6D#l148IH
9)k)+Z$,XEVh8GjLrjC!!T2&ASp+$#8IZaR@%3dJcXC99YASjNfLPSpCF+5A6489
D3G#p@BZIY)XrY4jN$mT$059eHZrJSf3#G"b58adklU3Y6Ikq)q@TU(B8S1$5e0T
d@MeIKb4L9lbJYVm+"fZdk-9T$aI@rK(efH#5C"*$J`P1JQP"4T)RLi,N,N&M*B4
FSVU04BM%Tjq4%KPh2+E18(a'f205Y9N-Uk6YhR)pJR'h68VG5M2jMflbLfe(ejm
k$d2B-)DI33j+)Si&eIZ8k[aHLB4cSRNe"IdQcpl!bGf#'),)!F2&UGp8MTc&J1M
,-BKc(SLLH3da5qEbKZR"0i[[YS+YH%P,CRY-%[PZ"kP302KN,&Ei@SD&))M6Qe8
pG0(j#-aeI0@[+"G3BM'T9+Qr4*8,`F8PTU#Tkr&12pH[lM9"jKX+i,@*$UYCI3%
V)B5*%PkBf6LhRNLQ(5TU[Xpjl`YC'eG+[JdUlacTYLbbF"CFN!!*"Cc*G4DS1q9
5XLlqPQC5j@2pmFPM-l03KGB6YjQ&L[b"b"p9Bc!pTj2A,hc)*Jb2eNLASH)V-MU
mRJ`Dpd,%kcTVM5*D2DB6MqGM5C-1#c4(KRjCHRmdk#(Sc`9E+dFSR*AmqlQCQd8
2f5#q1J@(f6pVH2`Ffq$lZ4h#`U8[0Epi1M6"$NRNRr2#&'#%EB8&(`Hm)Y-cchm
S'8&Pa`ErN!"KVM#fQMp',XIL5Fh#HlcA('`TG#S""1[+%1Kr30-fCf,fR2cHV#L
N!F3Vq6e"Mr3KE[cZ$N4!rlHPkMd3@8"i,pFL5aT,9[qXIbBlfE)Y9E%jY8++Jk(
m%`IFE-VF+rY%[!"qk"&qCT6E!-%di!aKcLk,%1I2#EP(CEG&m'e,GY"c@!#"F@i
-Ik0QE*9'lZR0k5jK$M&c41ac56HcP"SN'Kd2)rFJDL2SJ3&Pp,Q"E26H6j3#klH
bAaUaVlXQfbGjJ9GYF0!1XFME2q0BR8*@hB-`&&N85bEr*5CUZa5*'m%$"jrrle$
Jp0rmUJ%A!Z8@h6ATl(qqj&T(0kS&PD"A`GP6MG+EV2#*kCNE&`!-9K'c8eRSBkZ
JI[NBZ@F+P%@[L0a!6VFmC9!mc(Y&e`9L*X'crplIrZY0Y)%@+8hT2HbiN4pqd8c
k"dqN*[LZr[(,mEmip9k3!!pAe`8!kRUb"5$CVM,%,4TVIBGaPcjqc)-4D3Fff,H
ZaC(GM%8Fi@EVR`2!N[dQqQrfmKV3E#*@DG*T*&TZ'!"M*p8T3lG6J2H*iY@RQ$q
)43VU3Z-rpTlpjC!!qH+#QM0"%UcE`[%fQY4J'-ffD6Zm-Rc$akDlALdFpHCGc8b
K4NTqQ19J!D`4TESF%5#Zp%4QTLHkQkZ9ZC2+8+N$"a%U9DCl9GiG"E6@`Bc2r%G
9h'4+h,`!+dSI0*m@4ddTpmq,QqP#*BTeLZN%eGq&9IDiMQCX[V92YhX$jR3p%+k
"$pbDeN[[$m$LGZFC(f6HA%k$%m"2mIG,R!9cf2hGP+m5Y,3XHaIS`&Rb#F!q*q8
4Qdf5'1%6UJkhM9+Bdh#fA"45#R"Zbk$qJD5G8cBA"8m$TEJ5i`faLU,d"j%Clp8
ETS0*5TM$UMVD!TFM@X98Ri(cGX(MD,a1jP&CCml46H3Q!fLTmUI,lQ'41h4Lhr8
L2Lkd$ccDXeH4P00QZqBpqe-`D8KCkC8kG5V6h`N@mip*Z&rUTN2JIhQd%E6UQBQ
NMmd'5a'Z[LGjMQj%G2VQJ6H5Ai`+GA(CmRSRQPrXr9#ad,DDP&XqdmX+pcQ@*4C
6cLdB!QHRhl1Y"NqdETR[A'(m)c9!(+9jeb8NiT!!bV+4'I-m*q5&aDD+KiPFZmT
J'lZbiQ[DG6SA4"+e&`lDAdYY&CE3&C%6jVTFbapraj)p9F$SV![5mR`r'@bCq5,
`'-L``hNeKSL*M[`je0D6`JF,0kL)0(IpHa14FIaCPb[GYSZ&ClAYh(0DmkZZULf
aJTk4eU6S4F388dQbeTFr3EB**%BdZ-c"2SMG"Y0`edE&bj*-4Qi3bH,AH,)[EdV
`G("Q1NfN)%@a)rY)'9k(Y`d)+i*!!iEqBHF'la3Fl6SeL#AFbm2UJ*R(mHS+BL9
RRF-cU6m%rkIX4[6UQ43e5-,BY)[(#MlRrjQp)R[eM!Mf$c+6N58#2&K5-V1c#(T
3`TJ@'NR#"8l&Ami)pIBAjB*1X`BaJC`mmr4X+iILl$rj"l5Y$pepdbfTI1UjQBS
TmTSZkUq!lVAR!*,`JADal1)m5c*jN!!h9'Ui`e4f"mdhL$ZL63$MUP*HJM'&,9#
RN!$HZ@3d8$kfbFP&I%,PDaARHkcHpFHL1)H,4TJB3(eFR01+M(bdEf9EY)KrkQ4
Ki-4#V-Sb+KX3TJI4V[FE@"[9qXjS&VpF&TKR$j6lci`3Eh+VYPeNB-f-2E#L6RI
Y[frFrU9Q01NCkp@RJC0DL+NIAJU4G&-TTD`HXfQi+YIFf((K[re8c9&&Y"Z8[Q@
HMcH*rfP`ji@&D@F,U-mhp0qD(TCEGlXi+j5J21AA"b6aK$3f2YFXcD"mDVaV+CT
apE,)%rpmRDB,($QlP5a1Dfj('bY,1f#506GM$DNQZ*hFT`0'JH`3MFq-+%)2*"l
8p(HZC*bV*mAIrAXM!6EGD'QVNhkN!r#V`j2-eG,9%A+rMF**&C!!`UlBUAU&[I8
H*f0pFC8J)4%@cl[(FUJjEm1HJAl'"-q@Q6q0p,E!hT)k[PXEEQX%'NLXC'FP5,f
90+C(jRjqYlCVU"3!QZrP"U[M6c$SNVU-kZPNC+@S*N)*Lr6[cNRMU(HI@dTG$Am
L64VJTf$,AT!!5SrA+aZmi-fLR2l%B6ib4!#pZ@a8LId59&3[je@I$113!-abGJ6
mrd&1ZrhSSJZPE-$PE05)8VJaH"-C#QC6"JF(C3GK"$2Z`%15j8h%XY4`-F5R[F0
-)Uf,YT'+qXRNV,db2AGe9Rp#FAGed@@PSdKl`Lj3N!#8M+F[iiNpJ'laP(`2KPT
5'IGb35$p%10r9+C@"Alka)ck&%[*MDTcFaqV0pker4BI'XpA2AXRTG0j8V'*Pbm
ll"B&+*BBUMC6(Rf!FFBmM*f(lKTe*-LB%&qdM,X*Q+h6%XXrNN-PG+0PTq+jh`K
F(1``Xq`*6L$eZVZ-ZHUqUf&#[RHFE8rK1QJMVHP-fhL,p5%fGbTCbLimm1@NZ1%
D2#'XTi&UE6Rb5*B3C(6'[835j2U!frdYIfUd@PjDAC0S@(ETi2Pf2dCM"[$,k(m
j0AC-R-@hcS5Z!h2ZZT!!*RaJ!r9FA@`4"eA5%!A[c%A'0`4p1#Z@G$j+'FCRKA3
KI@SVkrA(CT!!"59BcY21LVmkA-YX$5V-pHZBNE4HGmN"Y#bd!,eRS5MYH6-D(h8
diQ4cCbR%88jI*jCS#JkPfQaBK8q6%daM!&BCR-8mCIPTi6i!!U%&k8`(eq(mm&9
b1Gk)dTe&XK1H'2*q@"Sacpb@dpe)@QHHJ%6qLPJk[BAqq4#pN!$AiPmA0mmaCqD
Bj0DHR1p!kAkp)IP2a31fr0iATe529aAP2!9)4GeJlkb`UD8Thml90l4D4I$2K",
fqD1,P)kFLDl6`j*ZiiQmhA-EPU+mTqTYf$C)S5#R-9JRlZ4Ib,G6ENPeccpmTi`
Bj&r[)""2'S!aqZpXUJ2ad3#BImQGAS!,E4[&G[PDqSXIXZa`D$F4dXQ8R4B0'aH
5bL%N1-GFQ84(8d[dCNK%kSZJ0VF1I-F%'@4+kT'ThiG8'*JraYB1%XZMLFTdfZ6
!-rmPPT+ATP"bc#D(E%B8'YLKdMJ*KPpNPIR-K&Ri'J`55(+%,T)l4Q(mBcpXL"i
+LQEG12RMp6Xbp5lMCq9q6V!ZVMp&6FlkSCl%-pdK+'J'F,#3!-CBdc5N1Mm6McI
Tp"`fG@6P2@I5[dASdBjlppkB4C+$-[,1fCQ(VAq5%fC1M`A2jH"%fTD`%$V![b`
6-4%b4IJcKdYI*hM&fMhL89UDTiVIp"'r`PE0T6jcAf&KVLpcTfe!#Xfq3&6kr0@
&3-C`GP5b)PM!50QB@(-&iTI#3%Q0I%p0qQ(@!ah42GXGF#@AJ+B"XbKDT@"iI*'
Dk(1f*0kQp6GJ(`5G+kK4ITY#rUf2V,-D5Mp3bLU,RH@lVXICKe$qkU@"LN50&%Q
!2Yij`LV#Y$&*mB-&H&qqHV-!L6NL"S-K+m$0UmYCbCJ6[JXrqX(4M(jCMDp`Qq!
B)'h#i0BK*jC0(UF3F%Hq5Lad)4Y!c0d[F(-l$@40c!iF3Ed[mc)E!LjS'AMK!1+
F5&I6Ne!Ti+f5cU`M0G#"bC&LRlk%K863i,DIR@e3cD[%2dD3!+B,aJVhTfeE0Ca
K[kZLDq(KX'"MhQQf"Z#F#VchIUEK"pU5kMGKeEiFDDd3CeVcZj[@QTNm4Mf0,6P
#!LZIj$lS--mUMFBY9pqN+`)++T@)-YpDiP+NN5U6D1QB4#&%L9!T9BLp($IA$RK
GfM5h+rPUaDe$%qlk6XPIMJa5CCl)eSa)Xrm,l5N@aM$HJ4rdATbm0IQa,l4+5rm
I4kK-!*(ZD0El'l64h*a[bD!0I,P!jB4+a8H%V!qQ$b-DqJq!@R5SkSS!-*9C1Cd
d`5T6N!!1p5QH#@&8e"m)3BRXJD(FD6*0HTH)"NG0eGH89cL4p""5cQbFQIDr[a'
@+J0k-$'#LTJRV1#T+V9EE!$!em9'%DV-6lAmqpQaY&HjY)&G8H0BKqKF-&i[`Hh
E1"1B@3TDiNdG+PGR-FETiCAN&'m"r,A6pHl!E6L4FZYE#B+XGSJI*R&e8QjE5[P
ZQFHLkqIMElJb%YCSj(+(Y%EaTFR5-$(-9Tj)A`,XF9@PA8E6R8l-hp0L!kI,lpK
1+2f"M[&6b@hIb$jHcLYp4rP0J&e+R6)PL,6-`"Y5YBdZ-YKVUK!q'J'r1DL[mXX
YN@AJ)Mf%1LBC+*0&!'mNKd5,Q@NDp00lhXdhdK3LpSq&C3-!mSZ9DBeaLFUE"U)
qDe)#),-2*FJe@ZGH#-Lq[Ui`I9dBN!"-X*%UjhKEJk#1,LbC&18pd$3PN!!@R)k
k+pHbC(RAh&HIHq$MHeKT822SXI&+Ie4,)DYXI,D`@#Q"eFlQ[e[%SX%qPE+8-3N
+c$1B2R%q$PX#ZD#E@VlFaiY)YHU-ZPZTQ9jEDhUbIcMU6-I5c11Uq963M5U1b)j
14aT[k@)EKi2#KRTc-YLGV1&5FX0YQ5F"1`'Z"G`l1A!U9D1`MJ#88&$Z-pb`[SC
1i8Q[#Y+VHJiVm*jmGkT0qU"pRUBY3%YV3E+G4a2K&I,"HiH(,B#8-5&YZA&-[SY
8a9HAa6'fI"9l2)2K5QB@X#8#-RIkHPYDI)dF9`8VjlbrY&L0p"01jdDU&XfQPHP
&IM38Xr8Vae#H6*B5%YZef1&ZRr"Nf4Jd1qiS[qmG9(%,[d20dYrZ(F1kc8@0jVC
MdV-fC"aDA#*Hr'P[qU,(ZJT0Q5c(+$Y*VZF,FSibb2JVH%Ndm@(JZ*-bS'hkLKb
14EKa*qIRY49`kHB+d1Um4$80q+c9R6+S(hG8X[F3c5QQf2DZ+*lSHr5ZbMeF44N
MN4k+c+VY[68+Y8pAU$YYU9c'-ISF9+U@FT,*aG+U%jX6X%+,+`((6Jc9rCl(-X6
i'!aDS+(0J6*(eqkCP8!@[cpH9%XRVfhrc%L,X%+"Z`3Yc0pE3h21$k@r!ELcr'U
**cD0HP$e$cXa8PaDEL*f5,9b8Sf9NQfS286GXJPcIjTTS)NVXPLYL-PAfQTXZL"
1LJI*EAd!aKI0G,4+5Y[&0&Y8-c-`!V1BS5A1&)lfcrUdH,,3-3m6b2Sf%P$FjkJ
!S"ZK1),pIA!i!89%#[N(f#icHA%pF%,Cqj&clqb$9Fi2(81U[ZDii[r5q)(jBrj
S3rQ+8`VR59E[Eh[Ue(1Vlq3%L')@MPCb1S"VYS$Um!fCB0j9G9kNKrZRS0k"bXF
JfDHM86`+p4!55dJG94i@pK*8Lc+mr4i))0#K@Rp0(a@eM1mkii43304`,Gk`dU8
b5b-*XIUDYI0+'iNiLZ0CR2!j*a8b!k0iJHA)e[li5"R[X,Z%k'"i2Ej"qiJ`C$X
Tad%4qjU[GID1,9H&[,#(3E9@3"(XT2j0(-KJ)4GeVS`l)9TbENaXb&V5lr*MT[q
DA!'&2(%GclY)&fU+6)"%MaIhNQMjbVJmqEA#BBTS(&M9K(APP%-mmd&5QSe,qLZ
D8L+a9D$TM%-hTFZN2A,RRNM02%A"!Frf80Ti06aNrbji,bYhSA`K+dJ1K$m22@m
9+hD'j"L!JBjVEp(,cC!!TqM9b1)T9P63qbiPZ0ZJKKTjaAkQC6f1m!8ce6%cTN&
'5DdYa5ZbdlLU9,q+*mleRLj1b2RN`YL0)R!GNRCc*&q8@fA[IbpaQ0XHb+*EQX'
&&lb4MQQIqmcfR8F$80H8*E+K1E+)r)'CI)+F01REK"Im5RZ#1mP,Le@B2dKb5HG
TkJ"')VkmilTr2408Gc[qAeV[hf-*@AA+P,PSbfB)MR9%pQL2Fp+q$4'V#HJek(c
dH98XiI1jbIrGUT(@1fl3d94&LcbFM0XHD'HjRTcDl%DK@008LJdE#hDN8+KRC(r
@$&5FQ)#8#+19mP@b6dSN4TLNbrDH95-ZH$IfY)S,9pGHkiPQK0)A)EGrpNZc3ST
A5`lCjk)pl@fFYa&9d4@&kbI+$1ilpd,,IcM#q`YT%)f+*&@NY%a9RihhX&Tk1iI
jc%i'5ZHJ!dVIVUmLkplISC+eJTd5K9L'd!i+A)2,T92qR+9C8L2$Z'rGH-6p1a+
$#FJXKH`TE1V)1qT@A*5V"f+AJT%"e4lAqij6Yk"iJ%C%*)3%!6e8jdC"`(XbR,5
rXfiXHiaN2ZIEeQS(VM4KjDVk*P(0Gr`iVfThP5AMT&(dPek9feDC,Cj'!"'YJSQ
X`hePS8bN4H)$TAZ5m+5F*&D8aU8JR85i'aKP0kl3+QeE5I69TAkINT3Dqc+B4pP
8i'I@EE$Bf43Km(j,fB69EaSIZGJ9k5mkc'QiqMd"$-B#G6ANk)&D@CX*&3YR8er
ZqT)0h1RI[SNUc2L@M#6aT,[FXlKJKje-albB%Z4p%Xj+l3,bS#9P`,U9qr8(0HA
Z92hkY*hIB4-E1RZ#YXJ5EcMJ#-@$AE9YYD6l*I`DF*@XNIJ9"T8r20Ie-f%+qi1
'jchh@jdLiV!dXF0J)ZF042"bmM9mS+dBY+M0I*Jjc$lrH0!SV3[VPGrP@6RYJe1
MSD5fAbbDLG%'c+3Y1*m4B)GM,,V3(`6m%+@#QA3YL!ZA1FrI,XiD0#ip'(*UM(3
%64[iN!$f8Kmd91KI16D6$Q`3eMP6NNH1k%%#+Z[pMmINm!J,DD!Cq2T#TC)9ZFE
S3djrV9mZBYNJE,%(LND3!(4qeK))`4EE!MhF6&RRKe,+358lZdETJA5RMHM%cFY
!f)+BMcY5RflN5E)2F'I"`!ej&*[dA3e*`"XCL!2DQ$jSB[J$*J9-p91IAHTiXd,
89()VP8QB2$-[aU06ShbEek-)V$*prrqciUTQSBmqPPKe$Y1X`KHiQD%,9)Yqkm)
@&X,d&Q+H&iZLN!!4[!N4',8Hh[q&A4lKDJXYd-EjL!rijpGGY"j"l#'9lSI`UVj
"XPc"1INP9P#!'*FC(jcMp@[$`hV*6QR14Q*i'2ScCRL[`PJh3)9'%A#PmP9GLdD
KrcRjiSP*BQS`IB$4kDpNAp*cU6%P9B`j3((#M2#Ub5FUm3l2I*Q*92Zi32&(01I
$bZ#R#b&Q3LqIhDR'HiYE8mYJUk4Ar[TNj6Z9`Km5q3916qKqN!![h9J8,04L2#l
,bkqq4kPdUH`dN!!Y+8$,0FZAFb`erf`Qr,fEprIIR),BYM9Vb5Sk5'rF00lkCR'
D0e9%Z@VFrf1U%cE`kVdPkGqJmCm3H(Uc6+Z`)6EU"Bp!N45"f*1jLm*KT8#jQdr
bNA5#%'5X[DM&h6R,BLP9aQX)i2ZMb$mrTY3ZSf3MND[GTUD3!!ADaLV'fR*iRXd
4,&$qb4SCJK`,a(3-Q"lTi!ddDPV-1q1FhpaB#-EkJVIA#a&JQeX2KQmkdV#H3eZ
fmQEc1DX@XSKMiLQ)`lcM9-1iFplq4-NB'ifAF[0'6mZb$(#C+Di5"m(4AYJ"Z[G
Z'bA+&#PU[AEIPJ*PQ$6X!"U`"9AQrS@pJK%"pATbdLk%Ur&&bElVFE9kF$G0e3[
UD+*l)$1ch3J)QB)2c1)G%qM,Z@fUXb(LV`6iicHG2`Zb4YTG8Yil1Jc8JCdBCFE
*X%GIFBejlA5ja6N*fI2+A-k2fR(e@-ZEG+VaeqL26J4XZ31$6#lRL#Q0r,*9fNH
kMpq2fHqVkAhL,aUC'j-maBL`M59QmBcMQ6bH@,LZK$,b"HpSY,GE4-e*D`RH@I1
%JYB2i%GC+1VC,a#"%["b'S`XNYKKaG,0`[`m+0bbFKf3!'FG9QZTK0+Xrm-D"i!
N[PYeqpUm#`PUY4FS&,P!ckY!JNp'%f[SK![h&jfH!QpmKSdLcGrKIp$a,U"8(Td
!2pj+Upe$AeAcpF(@@MQjXAk`ARR1I%8iPC&GeCM+l[BXReT@4REfeHeJ4G*C`Ej
&q+cV1QKe-@apVb0I,q4E8ZKCeX8@hXeX"([8b2dT&j3BP9RcU(AI#G%'&@jlm`C
0ja)pr3R`"Yd(EY4HS45L*G4*@1m9*D&@6QV8+94Ga#"U6%1Cldh9(9R3mA,Z1Yq
T'(6623BEaKHB@S+[LIQ$-&D-M"eN"%%E8c!@6q+GJbPp@UBGX3PlY6d$cpE9L0T
I[R`C+DDh,0H[JhU@$#AmM`6!AX21!a@%F8c6NL1DXpXS`5Y&Y@"Bm&%&#DSKP@R
!ZAJE'LTf$RfXXXH'a8P5AD,lZV03[cj[9G$qBP$&H`H!TT!!5Ff3!0J`bECF,Gh
NSA0V8he5Y"RU#aAFcIPcYrkf-[b(fB2M5*AMZCa1,,dEL!,351bZ*iS9TmqdTlI
bp8`YGDBJN!!**XR[m$SA)VrVi(mU2Fdh-AXC$j!!A5fX)52a80-K$fjcY&hRb"d
rL3+p[%QY[be+BS5A0MTZ`Gd5*aC',Pahi+3(b4hV*i*GqX%fUR4%XlUm%L'B`Xe
)cf&#4S+*3L!GS8P#&NY!f&B4l"-a-ibb"TQ+1&bKKiQRNC`iP1Ac'[B*!%CERFi
fUKPT0,Ve`!ch)cI-CS3VCd([2UTA&hc0548!(-RN%$hXAp+A[iDJe52qVLU+Um0
d',-bD%3@DKd2c1U%*fLjL&@Yp,5KcMFJ19Z8hRFlMi6bN!#k(THESNE+EVML1l0
ahcILKHQ'dbl#bA&Eb%&bFrm-i*j-2%rml2K"qDUGL5)VEccZ)YaaY3BSM$XTX'5
$HP6cT0c6Fl644JeN%MHfjhmRK!IG23[[%bACi"%&-$Ik)(X4@RCKLL5MD*JiFFA
lXQL$ibajlK$a0X6IM!&SFeQk1ai@qe(X"GI%T2RHD)-a[N1QIrKV%QQDj8$)cN6
LU4&ZU!,-CEAld%+MpU8IiI$H8SXVa(fP4fi5#P'lE)&N(a#BhXHiVT2iC3&(p#0
b3)NpE9T8a,(1NTDEqp)XX+GlS#hSlj!!S5Mii%q,(q4#Pfj&d!aX%DL'1rXZjF[
033"%Cq[9LVL8fPLGZ@U3!-'V-%m$VAqRfN''jCVh`+r`Kja`IVhmHQjBfbIl%Zj
L)R!c"bE@dUZ+S8`YUY#fp4`Imfd4XAd)PNX`6"V[CC!!ZjBHiAPK-EZFZ@#BZ!-
aZYk,X[aUBA*D1IErk[q###qTPk1%1*qa-ET8i$-l1bRR$a@PJ(6Hj8N[4h`VeV9
JZ9T5jZU26pH)1Jk+'X8m@MKGDM6q-&K-mLbBh9F2YM*RHPq&[Blc&NA2k%P+Um3
$Am3ql8La03k`D3KA'-*B[ZD0JCYTdVirb$"fkG)&b$!`dY,)b$!`dTE)`ZLl@T*
'#`@T&j5BL`p21T%8N!$3Gf1&p!$f6Xrq,(VCl,C$-YmS*!+80lSHfh(VE0Z6X6[
53+MUhFAFl!V2)KJp$iGH'5b@35#88MKZhPB2h688d)lkieX5jap&S2[9qJpGqfe
-JkL(LrJ"#[1,V6[lmZKP$XliD03Z5EN[lfai'@l6YP"T$',"VSD"dZqlGX-#+m)
f83-4,`[0#cm4EfTdbh)Ejkp[%2h1'NBTfq+-f@%T"D4&il*d`I5$@L@YjABl,0N
r+Nml@Jh30SBE1rE+RN6L5@aIjqDB`K,iT%(-1r!@J#0pdp[j%d*6P9N+9qNE-q&
ll$FISad&mfa5+LA1VF`1cD920hmTjpXN5Y%ceBaME`Il"6EDa+X3$'jaMFcPMGS
TkG&!&%SmE'4leNjkD#`UUT!!!1e4BkC&(d"&Z`[k6cYN2l*%M*AMNaCNSTj!XEp
TI-c)VqA)"SGVlCS`%PTZ,r$%H(9+9G09CRCQGc)lrEY%#cC(A1-2JX)*AHf@LcJ
c64X`8ipl%(h!+Q*,ei6Q)Q[0,,YVN!#Q120!#r49Dpe+(1-DR&2SYYBaTa&0eBV
,V5emQ#M)1,D1bar9@P8XPQP%el--L[4L2hmjTd!$B&XQepm*,C2R2'ThaDFaPZc
+)5apMdlGZCG`I'YX2-aTq0L*Ge+e2@c)P(U@T#,K+VBSrfGZfJYcJGjr&T-JmFc
KHc-qT#,Ab+5X#A!dK33Fij!!GK5&0-QGiE%Ra6+40)#`DIpJH!&C3'G8bq*5HVH
)"CLp%ZTb@bHXa2PlA3VdPbcf*#kN"krf6(h'SDjX$5Ai5UNN33AL`JhhBHlFLdY
)Te8PLCFbc!%ERPdR2CQKhA[&J&+,["fBhJd"iV400LVZFrJ-Cb@1eQV(r[F[k[Z
1(ZhB2G4D2ia-j1aDR6KC1LTRHTTJ`6bre1bQ`fGC9IPXR'+e@Sd8H-)Vika5mB0
@)&j24E0fhB''H,apQr-GhAMLbP&)q2$cYPhH*`R)Mq42G0M!N!#85%1AS*b@9f)
%Z34'NC!!9k+S3`Ad9)&8*pLE+Gp33F`U[-%p'9qB3X[1XQ-8cGQiKXr2j`h!@&k
!R+XG#"%UCqFYfF9%lc&J+8(1F[VIJ!"+bYAk(@YLpSKr($RPc4HKpa8h2MNIXEU
qcQ2&j!GE1e!Ujlq3!2lipSRR"`69B#1h#EQm9M[VY1[rrPPQ$j`B1rElC#pi8k%
q2'cIaHeU1*BiQ,`#i)mKkahTp)S1-+-l9fZb1&AhqFXS9)LjB%VG&4PpImSENLQ
ac2P!61TYXAdEEJlPqEmUaVJ0,kf4P@+McZ8`[1DaUDkKpU4#i0bDJSLKCmm,SbZ
T"kZ9"&0lm4`h4CM#Vj6UeY`4X8XNMhjUA1F,YDb2U-[Q8fSFhBT)ViE#cT8e%-f
0)%el1-dV`KA#Hih)lk6#8j8`"55H[M50bb&rJ#e[aVrJ$6),a%CFiQGKNKVSq"E
e,#e0@f(RC&T53!B20-J&RJV3RhV(aBP5'"iLYPj%5p`d-VPH%2-l)hP@h"!aDL,
2PLq9DaB34M'lP@AJI,@-$@9rJkiY5Xl8i&KrLVT0h,i5H'mTL9GL$40hZ2'@`Ap
X3eX[Zb))i&M*TQSI3$8cBpeN4%1[XGkldAHFGL%3RKQPp'&YkR[k6RL#+dbJ`%m
%E#SCc&5V1GeLL8&@HT2Z+UAUmV(D+bMLmfB06rIlTPK")31#lcZ#HLA&rRLNi&N
YBSCQG)'@Y$6'lfRp'6db&aG"EI[4@02PpJBbreTqBFQi92(50(bBEPq'A!3r,9'
6M)bJ@%pc$II"@#YIEd!p+p"RRHE*"'YX)2#j2,!*,'6M$L!lmqhYr3dcc+(YA+G
Fqmi[[2jae6ZDDK)B!3$5##U@)'2fqaC'%&QL'5ZRDRF3)F4L)MM`I(q`U)NrC$'
Hepm5"$!TE1Q5k`QFh`"+l+j6%#,Dc4BF0Ljf(kdf!)VcLNYdZfmMPQMjkK$EhPl
Q+deZQFK,0[mSii6%d!F1-*&b8Ef$-3Z&0J98lh32"RE`rfeNqM"BA(IP-&YEF90
U#'M0G-$TP6B(P!f1N!#Y2Cj+D&[Uj!9c1M9Xhikp0bCB'4ZSc4'd0J*lT"e"F(V
krH95KLAK`#9'1"6F1L8qEL#kG0r!e!@P5(R`%R&`NDhiMTEVEH3LTT`UJQCB*15
BS`r!!f2I3Y"KShPM[hAPD@P[rmA$%c)&)#&*Sh&RcYVGZUcI3TqB6CbFU[A@#HI
"C,aVT!430Rmf-4C4,(6P[[d-UG'Ai0+lbKq@q'J#[-X&e24IA#ZqZ,F`'ee)@PB
V9MJ+6j8[1"Ia!45V5Zl`iZA*PB$c+X2NNF5+5P5114!f1maS*BIM2H,'[YA#"T`
+Y5B3dF5q&+8(LhM5kZ0d!UfI9*)8p'8dQJ!rLA)hS-IqN!"EX31@FLmM92VFpaI
jI##I6`,Ud-HQ4p1Z16l!98e36EBVA-m-RjC+K",cjJkXTBa&qLA&@kNmJDd4,k#
Q4-NN'-98-lp2(ajr`,aMR9d5Lcq3!1H%YU[DP6!mciKq-dhKe(9HXL-aL)MImdC
N,j6FpqA2MBiLVQGfR!5e9da&&BD8jSmYTN9dPS$'VH9XCLRk1*M&"hZc-0++cSp
Y0QBP%jIIGBFT*Sb5VBDa`Eh&@hK0ALcQXMiIqeH`5A&LB2VMV@MM-Z"*J2BU&D[
kh6YRC*PB9S8+,j'i"Uj3QV!c506S*!&Fq1"ZlShM5mK"ZJEMdc(de5&pkCjRe+C
"1mU`T1I(QEe*D(lI3JlEJ&%Ne)6)5J-Pa6L6*U3iF[0q2L1e[Ii*URAJhQYBQPY
rUL4VZ+p!K*fRjl*-aaBlqEE&*le-ibe&L$Z%k)4%-p!2J6r9Q`pHYCrBpQcqLUj
lj#Y+)4"YBMLh`HI9$I4bfD-T3QN1JNVQiKqIka@q(lEQHeB(E,j2AD$TX0S88QS
Q,LC4G&%9M5HEHrR4R(+6'Ph#Aj!!b'S&&!1RA8mKZklj&N&P"p10'TJDAr@"a#r
+MER&GRfcEXZ*4+,H'D-(ZIIEPGR8&JZ)XT%1Fpd!Z!T9SrFmR0jSd%8'CEDDcfI
cTMh$AmLLkpMkE`A12*a#H$jjVD02HpRF%lkjXB0jHT,4Z[G)S,ZX[M2H*EAd5H"
"k9UaNmd*KJIPXKiU)3r%R,'eLm4N',-r*B6,c`a1-iHB&X4Dmkqe,9,LakK!'R"
+Q&N+CA@dMebS3k#!91,q36bNZbK4bKdU5fmrVB+hH0hCq699`Eaa@6'AZ#kIc(F
G46e+U,%'mY#PZ+R3Ch3a(#VkdU@54pMb8m9)C*PBS`FKE#X*['5lYcK609Qjfi8
q"b8JU*kJ3Z4TXq"-'fU!-J66i%@pf0eGqETII4HLkf`&4rfdb2+U@lM3k[%F3'i
140j3VY0R`6#N2T'Q-`!9"&G[jU,p8,a+$2@q+RTckTl+`R(-8fhEKq@,qFCG'14
Ze9SG81)Q4[2iaA*%+!ck#Q%K-UA['@Y1$ES#Y'TSJTVd0KCF6DC'9d4l$!PUY"e
T$Gjl$@-0C`L[DeUQ'aQ#fCH-F4MkidaDS%'6*Y$V4@p6Pb%hEfJT24THUaCKK`p
f!Q0B6S(9*8GH@H4PPl0J3QNqmacT6&-qJ%aa9j`$kicK,KhNk*68pea,N!!T@@H
PZDL$Z3kcUf!IPj0Z*RVqDe&Q'#`ENqBUKc4XI9D,EX$8m"'NPXpB@DSV2eB5kB$
QZX(&adIG4+LC"eA('GEE!r5YfN3rFb6&9XS"d3K"kNqG8B`l,[mlp@KI3LVUcI@
-bZk+cA9*(PZ,T8-6h`c"Jar2l*0R&9$@-*qLNem`(lIYE)AVL8FN1E4#*Hlj4`$
l-LY`d["KMeT',q-[hk'$V`kNe6!dhkBL,5%2@'CP9T&3TJ&H$`&5+&m#d"1RJ[C
iINcX)G[UFHUh9AR,Tm,dq%c+KAP`XhI,$P+e-@DlZRH[5ja'dALQ2TI"R&`q,Sq
ZI2TUUIB+hXRb2#Cb"i3VVi"MqkP#IX"#&6Vm82%(jYhRN3Bam9)[N[2qB$VK*A6
aSDFkEhMUi@-N!kfkmb1ZP&F5KHlK1Q#(Bl8%c#A8'l4'[bf[&ZD5Z*r#88ESMG#
0(A$-16df1&P(418!b*hVDekB'@fUq@ki62Hp*5CLN5RNm4*8qU"X'RI`C6,R$'5
r"@5eak+`KJ(!EPQ+XfVFrDQf+,QF)USR*[m[`cY[*Q5`+h3lbL)Q)-lCq,XNcGV
(fDj-#,[QIaNh2qfL2H0F$BIBj%2EHdVQP@GSJpR'h*(Ejj+K-'FbK)f&*C43%48
LIETBGR'a@*1(!eh%YY&A+!!b8R*@fb``ieQPl2[%kNCh8Yd1[-XQbPdLF,C1-5i
4"PldEEhl1l!VeFf-j[Cp2FjMVVFZ,N6+CC'8TU,m*`1*HQ+9SBJqa&B)rHa-+5q
eb62IcYQF`A*Lfkk$&M)BGjQSZRZP3mfkXT)%'5"@mlfBLP2@@3GZ&LJHD2$h8eK
r#'U2[mf'56kNCRABb`*F0@`6qbK8!'0BA&B6[HH,KmDfCP)HlG2DaISThlm2$jD
fdB15jp+*93NFk+3%9c#ffhBBTe@hNSJFdrlk418ZYi!j8$V6aQ[e6L+`UZf&M8,
fq@&JFDM--h1l+kbm@NcH9T%CL2fbQ*1&fD06%I)Q*A`j##I%AL8*Dr#rGQU@b$"
@fBI3mA4%5SVN)0JNZZC0eZcbS'ZhkrK5(SiZ@Fr['bY*I),G-'LjVbf@'F19kiY
1Y)lda#Kp-i2NZ5lRp8RbI#lPj#jd(6d2Sq3UcZ3&SpAb#Y-a+rmK)H[HIeSFTmA
p(P60N!#SqFA&pFFhI$Hmd`Qp-4Pl9H2e8X&Df1J1G8h)U6%!)&#jc)Dad+,N9GZ
c4VM0jI8(94QfZ25*F"SVrhS%KhTYCHKfaKN$,HppqG2Z[pPLC`&-*6`Ui`BRrN4
fAVA0FF+,6b%,9dlAM'S"IBhd2fF0A3akTI[3#Y0ITjNMMeZYQCk3!1UFhh6QE$)
maXlJl#P%-+Aj3M[G)@)IRd!2-EjVG-X44Q-$ChLN0X2T53Li+-Lcr9SkhG6k20%
Bb%MYIDImXECjJM`6D*(Qm#[hbr4c'@DPQI6DArb@$JF4Uha-@@6FS$k0N3+Y6PS
r91d[a`,3`Z+bf@C!"'%#!X,`FBmb`J4K`PB+-dH0%5[43Rbm(K(Ll+PQE2N9J4U
CIfPGPRV5!mGhkpFZJ0I)LepYaFQ"L6p)4J8@,N8DIA8ACGlLbDIQS-C3Gm%%i$#
V2TMCT(0$`fEa1NCq,5rlGSHPGL8R`Acab(`+`HSfX@Zf'j!!L"Lp&MR,HV`q(PA
fp['JILEa4R-j`(RKcr(aURcp2+pZ)k()YrILhaULd$rQ"ZY4+Y#HU8rH4J#-`LI
M'8)%HF%@jVckaI3KN!"(LmQC1IS2''4%H@FkJUjNI8TR1$X!P[-DqV#rb5@"PSV
8jfZ'MIBRAfDQ6PD-G`@GKSh"'Ae[jDAd(1'8k&reXYe(1PQ9e3JpMA-)HYdm$UZ
!2CNRpcRd[pL"mH'V1[K,b!mDE`Aj`@(dKL4P8%9a0MaM89rlp)maVMVTk8HQcM3
h(q'16iZQ+#2EYa)kKI$HHj'QH@AP96`1-+(8QT[kXm3$Er6[BCqm%[6Irdr2bR%
GAG,m`HV+VS9PNjjB'$peQ8UVXa5&j@,SMV')H8&mXjd$Z%jFULILM6ND"daMM24
Y3$f[*#5!eHALG$RU1[Bl4Y9QpU$'JF&fUN@HiSAqr@Xe0(2l@X[FX$T!1TKLHXi
-3)U[N6Mj![6AM+&Z0HE25f5RhhT)XP),m9Eb")6$!c``XeHQ2%24c$SQddk1fX[
0V9Q"*J8"Mk)XNGB2KajH4k`cYiYRGEjhbb5Y-hIiD#%PD[,IT[UY1Y1ZEX5Xb)2
!*Q0,m-4e9D'D`)X"EfBeBS#fd)e0PAjKI&d+GBcPPF&DR"%QSimX"RJ#b%+(mX)
hkB'biX"RBLl`U&"4+5fUX0XJfha46dIqeQ2!eD4Va%B-5SReKLBi#b*1l"e-j`+
Ya,r3ihEp4V`EmP1%ZUTh"amJLP4IFMM9irQ5LKHP6Q%94dP$j,&Z`006$)IP$"!
AYE@ULYm(HiQ)SmA2ekSPqdaeJRSr#+JleKE`QNrF9%E(ZAFN$FPi@5k+N!!4*Y(
14TbdSNLGd5$KdMQXVJH#&aTPI[8S!hf,bmB(cmRJBHr@k9EN@fYf+10Z#BF0`mU
BJ''*&mB[c8#KrB$3ZKkSfrLqa2H@C6GeJJ05ZMMBBhF!edH@H*3G&KM6%aPSR!0
1S0CeSSULm2q8ebI'"3ifL3NhGIA@*3UlD[LZejIpCk5eV%-N91a4*X,F%F!rR3V
c)&a$LI#kl+RLUB@V6,USaSZf0"rL,1CHlD%(BXflZaeZpmeJ,6JQ6%2*Z-E#mPK
MaE"P[0FIkX(#UpL!["hFTb#L)2rK0[2TJ&4QF%laBSQ$!feC5-e6&JRkB)*mbUD
r'c*)YQrmPD*j8iL)[3Nc*i#!`Y38&,eh`Q0d%U81P'95fRXXVm6)d4jKh%+`pDG
EBpTNE[90`56XfQ,Y!T`qbbBqE[-JR3YAl9lr8$0(je,KCeHDAh-A'!'K1Sr%*Dd
k+-%aBEM[HhrIC+`#&`J51RL+R1X+jebp-j3b"#G$)1*E12@"qE2aeE3qjJ)"HBp
'hUV[Ip3D+V'SEeR[,ZXF&h#K5+Ul+qLCidX%5`E6`NI6h)[,Cph-2Sl#B2fjS-G
`ENlIB"Q`EiC+l"QrK#a$,kV(mLE13T(@iZ(iT5[[NkVbRdd#I`##BcSjQY&k"#9
IA1UaS[00AD#UqMYAS)RUm-P0@AFJUAmHcZcSqDhR4Uac0qbYmUrQ$ib$0UJ'K[N
jAIS,36q3!0k&5h,UYf)pPhG*M4p3EB5&cU#FT-fTBFHZ,,Hk9)k3!$&HBVNm5-T
E@9HD,Ur9AfSYYCXlK@iE33DVM%&j@Dd&XJ@i&if@"Mer89,9-#d@CBfS88H%bRL
JfmR!$#1Dc-NCRR#pbFD'NcjIcSC%Y-Fmh*NZXmaApj319#S4`mPe2faf66IIQRd
0VGS'SS9cj0*K6cP!eaZK1@jdJ'"HiBleY)4NIM3!j'Q+MGh$`2Lml)#YRdN+%Kf
L#3pd"H[HpZ)[lL#0&H&$B0QHZ%)BeFmDAaERS!cZFS#084m'C('+9$RVSKST1fM
CD3@&`,+95aAcpd,5N4*pVMQZlRZGa*@RP4eTSr[MSi%pVm`a#b*8EcYXKlT[6NI
m&**P*CjP`mCm%+@D-@ESZ83qq6cAY)@D'XZI0P16LBP,Fa6#b5(rMkk1b8j,b!l
)T,&Hh[NmTD3FjDHGGjS'+pD84j,2f85h-Rq"1ET-X8cVLe)1(+jkPa!01%cP%N0
*q&hDRdibTp,AjE#p1Nj!`)Q)kM!*6Kl,GTRGb[(I%TQEQje560'ida+HbSH44jH
B%`1T+R-F%PFDG%MU4L3e@(##Mr-9E*0K6rcAXhB)TU5b,B-,S!LE`LY#QEX!l!2
"k6PMh`Y3M4HmJd1K"4P8ch6"mAU!I*q1I0VeXe`fq&"Dbm2abR1YY3#BNC!!RZi
kR3BP#**!%!RaAJ*arP0mR,R,385dNZa#rbU#+-f#9%VUMakk[IEM[$0C'Dk("@i
SSaCdZRcNc"r)@%13!"qcJ,ja3kXLBUNZ#lQ,NpVdkq#45E!ZY'08J1#!$LUC$YP
PQCN,bCLV`'mS-F-1BqS#QeGrX$8TH6mjf'NA5!@JP2KbAdL51,*0r38JRh&"`pJ
XR@'BN!![R#f-45%ch2qb5C62Qkir4)-"T81[bcdqdC4N83k!0aAHJFM6+!&T%d*
@+UQ51KRiDQf)+,Ljr8c$V5Ae@pje+cp+qmeJ)NT'4"jkP-k6$8AHVJ&S$1N)qZj
`mr3G,Cd@F)+rDEBTmK"+f)Y[#88Z3SKqeN2ifa'BTp+J"*al"12#9EV,5G4`04C
RXdSrN5Z1dl%0P8b6#A&Fq`UqiiTM[K!(R["ZTMam2arP"2p-"6k1A[fpVRri((4
3lV4B(HM&V4"f1J(iFR9rTiN,2!'EjIZQKA[edVbr5+-b*4$eNZ&Lp`,I+qCK)B#
XG`,(6-Q,JK9Q"1hThaqGDjj*Vp(6!1PHX8IPc#VDi90I5f6(8rp5ESVi+V[lPGh
Yi8d$B60&%fhf%+L'8cdG[ba)#(Z,"0RNdh%2'5j4Cdj4K(CLL@+CJ&&M[M5AdFm
SB!IeCeIM)ia1*2'fPU,@RHcb#V'*qJ2@afZ80E*,Yq4,FZQm&paN$#jF8'h[l0M
#kJ6pm`KN`4IBie*3MDL$Urec&eS[5Mc"8Pj8bkplHNKZT)PDIN-*YG%0"UkCLCG
,%+[qY814cC[#,4L@blp'1rEkpEl4mND@p*Q-8N0LDc9AmS#b&dP01U1E*p9mK`1
',lmVjDRlYri2U3*F0bN`$@N[I3DZ1K92+23"Q-[)qR3q&6MX5EV[rA3!aD![)DM
I2TFr@Fd2SJfIRr0a`4YJH'3lr)Er6Ef1+SAPR2@3!'kcKIKQ+XD+#V"AE+D"3#i
`rJ*R$[AVUM"(U"-NIFN*J'NU5Q)Ub(6)`@jTU82GKq*,3+"K-2U,8C0a8SjhlLT
IEf`p1TZ3!%E)db#(#DbE6@TS8,`#)H%hMF+0qAUp*TpH%BkZ&hlad5aiajjjPi%
6EUb*m0X[0[dZdA&Ij!,%i'Fj3kZpN8[GGkfX6U`KPmeqKKjU68lN9!Vel9*plZb
JaL!cQr(9),2dUEibDQ1*eZL)U3+`%[ldSpBj,NTUi`'B2QZpaR0jpIj)$+28fS"
eZV-qRr'A))(faB&TK!0jK)!hBklliIJ8YcD`S9J'X#lC'E"e)YPqc@hKheq!e"l
Xr*!!bSBpG$caElFd1Q0""6QRf@`eP5&jN4fI-36J'PL@Y$fI69GZke8L`!,c#6@
REAKQRVkAT-V(E3dJT$TI,[HCJ&jr[Yb3!((Q%,2k)pAA%#19!!PNIjU[+RckJjZ
6#3c"+d8)6VS&D4eDRI'YS[c3cXRTGC'Dd$X+l5`rLBYf`Dd'P+qHEC&,AQ4GZT!
!'XD-HZGY15LXaN2"-QdRhA,V!B@M*R-VUP2jHQ*"FhfGUDrlAV-YHfd@(a"f&)N
j%`rSZfal%G*$bh"j#1lcj,R)49M3f@S`l%La5`GD`pP[mdZDF$4mpcPD`&F+'cY
BH!Q&hjpRdBU`4-ELbZ3$Kj9Qjda9J4K0IlG,%@iIZCYr[fJ6aErpNJiq1I,p#%*
0-B+,jc%#LqpJPI1Rl18,hlk*iqZTqAX$ffb*F`6H4)mK3Cq%f5ZNk`4PC0d+UMB
EJ5!JLi$p#TI`j(U-aZi2a-ZEQbKQc!F#9F8qFI3pXQ%@lKEJc6F`re($1&h(JRS
XLESL3c*-9rVDFUqfAT3m`V-[Yq$h28#V[jRj6"-[9jS+N5DqZUU'LhF812GF#r3
9T8Fpki)k6E*(ZG-Y0bbc952cVM0"hURV1@m31VA+H1$#,AEBD0j0,kDa%YclamS
EEj,f`QeHYRRNL-B9bXP'LTL,AkLTFp#*YZY0)8Sm4$Ji,+5LVrqJ4$iNULa$2rl
a*0Ra%De4)hjlHST[%ST(k&VeeNP'a04pcPGr&!E+GSbMIQLDEc8Y(IFccjRjZk`
qCeJaPBJA)%4ZCQ)KdLQ181ec&&LF@4ce"BTeVkXYkP6@bl4FF-ml*"NNQ+*X9b3
EkS`!T4P00)lrr*!!!-MP6)!5XlFl68Y$F!Zb[9'9$8ibETL&06,dC(p*%R2FT`m
p1iGCSUT"Drf5lLp,3VHRB[13!!X@S0jr9G)I@ibl*Jch2EEFP8ecdPiJh"Fdr`e
[#@q2Pcm'V`Kk[!*R&c9AeYP0B9kjrf6HS`$cFll20+FScbVf4bIKTbYP9rSrNCN
SZK%6$9G8`SC5,bLRiB5b8#6!1hb'$dE`LdZYhAHlf4SQf-6+GQ%l`G*$bdGL-ZV
N,+ZDlE$@'kjh3eFXcZchGe3alL3pQ(UAGf%$$2YV%%SY`[rPC,bm`[Em1PDNam*
ak@E#VPRkBG,F`%8f3L*-0I8CBk4'V1bS0!"M"#NV5$LqYfAj!N%*C(IiE8LZ$,H
U5VYhc9kIAXIm5C*Yr@'V`b[K*Q$r3P4dJ+i+KMM#q,ZpT+4BI0d#h('pCC9@cjJ
&UGh,,4EQUpjIRC)J[8"a[[9+Nj!!E@pK05f(%eNaZ`pBE82a"Pmk3#,VpiJ#X-`
pGXX,1'ES1YlPXjTA62Ij2I*,+-A--rM!bT2kK[ZZ6X#pFLVSp$h11h`GUcKa'Y*
RpPQi!@46[d0aM"U,DBj,%Kej5UhC*Z39F-efmFK2+BB[GSN#D8EHCBT9B#(DV'Z
lQEM[He$f0P(dT-AkSjL-RdIE5F'G[')9CbH&0C*123&`PQ+SM4dP1)N3#+*RXY3
0`DN!6MS"PI'VJXA%'L*,+0BmM+hS9lLNLdXRB45TQC%cEerJM2q-f8RLecS%4&b
Cpc+9%`fIBaRM(PAHe#-R5S8'`@U3!'S04aV&-'cYrj9*QZ9@L'$i"PL(ERj'mqQ
-!-Ukm%N#D2"5EZAi0j-&ABX8Gp*@$1S8A2CiR%5kpIkr4`b2a,ciCL[13'[8d9#
15rhLVIZEHca9Cb)rA'X[08CH8bB&&eP-Ck824MQkil6ZU4c&,q)kFF'+MM-e0@8
`*TU,*j2L+8HD#8lI@FV`H2aJ(RcLQX8r&ap#3NB*2h)U5h!!UEKfqN8VHm5[c@*
2flKTKr"RXHQfRGh[d'Q1,[lZD4@!U&$VhXjb)19LEERjHk$PbB1!CdYDL*!![HZ
!&MZUL9G&SE6*9K%+Eidi1G'H8!%*L&G!+clR4r9D8Qa`[qZ[9Qq*RC)**dA21`e
EYpCMCkPIqGI[P&+&bKcbBFdj4fGh+,M&Q%*aFfI1$2ZM(Z3'f$Zkc9Z#T4ff[Y*
+N@1hCrPIq5aiB`eZbeTqMie$UKI([6jCQ(YV'MR,-fXa&F#*PY9CkjLlp@AKfC)
,'$,CP3P-BEIae82[i$`k)6faLR"b8drPJM8LETRGc$NPUKImpEda6&2LE8r3*`"
j9R3!C4r&f4j08qGL,CRaj)f6+rHMRCM9bjhB)-Z6'lTP,-,14FGf'YL8B")3%1c
h0$dVBIaP&*3XB%8@BPi-4lV$aB`)1RAF)ch&5R8e$Hhh$rPf&EPKq&RH-G[G-8(
md2"9mAPVLhTDJlqXj+&5ii,3SV%K`eM3SRVb(Jm[Rrl2-r%X3D(+Vd5%DE,$#cA
M*h)N8C0*(re%ilEq)53PA#XBHRbjdFPFp8kiU8SLRpY5mLkaB9,)A"ISm)a"[b8
*aVdiPmAh0Cf1RA"q)#(),b+kPKG3A+J%X!kZbCV+#M"S[f3EZe[(N!#)AX[Ci"N
H,b"S"-2NV&Ue8F`%K$H)+p1$-"YaKAMP'"(A+CqYUM2[`R)f9pDf!L1KV[d@G6Y
FA-Y&#*I)Gc*4j69)A*i$jFS5EH($eHG0k5U3!,@!I$3HPj`YGiZ**2,d%GT`*'l
INZ$a5N%eS*V*%*1#ek#%Gje4'K0*HFm,r9G0jKDR"SDMA9Sbpii3l`aqBB`JITi
H-hpq6FmZK''P&bkV-Tbm4GZl#SbE`eeR%G*EZN2d%PUZQdZ93Nk5d*CJ5`+)SSd
C&6@G'3d`86L)"(#N56ebkHi+8MP(Y0Yi[kXc"IEReN9X(Mcfi1Ej,pE*&2B`f5c
)P%4DT4G8P[[DD(9cMYRXc[&)54TRi+)!M,B&J%VFTKcVCm3Ce!r(NR*,mL"NHbL
)ead3'hC4U0l8,6S$6ZEC&rDP5D5hekc#l6&(Em4Uc#S*iTLQ3,8+)diSld[0Zk%
[X+dB9"@hIjfp(26++6`Bc@A&4kmff3Tr!edILSrEF9f+,BBmf1)6pqC8JD`LqL'
%#E*JkKS%*I6rLNU@1[$Nae@VVE1T[fNX2N"jAd3b!(CC-!5VcRekU&1+mb%6%+&
KYMFG`"jKV5l+X*r(LUbJk$hZ(LUQP[@G(C3Ccj,(TYrEA963TdZ+r,Gb9eF0BSA
qFGri)VUIa6QaTcNh+jl@DC%0!TDUTTcNN8QI[M02T8C3AIQC"IqpcIrfa[4+`l)
0G*6DIc$fm2JUbFZCbX[1E35-0JC%Dq*3edQUGJb0FAk3!1TVqIG)PX3@GeEA*hQ
L1@ZP#HHXVhJZTbQYF*@pmK31fY)ULVXP**2a*))CPeeY%lAqchiCpZ%%%UJ(1eq
VKQ-+qQ[,81ji&S!G6SX!21km-S3[9lP'[mM+G'#Z6Z*dG%)h)+@`&&$VRXDmC8M
X(AImUN'#4RF!LZLA+)5(YrGrc$SH61@IPpCq26PJkLI1JpR#Z22V$k3HbjN!ZVf
$'j'k@rJmAqKQZac!fA*AK@d-j4SKZc)PcrDi#JCiYS6I8RL3!,Eq-PP+6%arlPp
QN!"FBfEaMqNhKS`AP3EcIpfBP@dALGaUYX&!SqfHX$BKPlrQZ(#km6MA)baG-64
mQK"N&9hGfTVqT`hiF4h*ad[b&SCKFr4KC5JBa#pbQP3@3i#@3k)hLKL9ABGSh1B
De*H-RNmRDGP#T%LH6EJT&m5(Sp4#XXSaRS-*(#H6jfGmRVBA&Xe$i5jE2KTH59V
C'"(1KZ3f8(D-`4Z8k#R[DK-DC#`h#9PVmUZ[3Gk-p&@j2CB&Sid*c@2%rcVAGe%
HcAahFii61J(&Z"04p'N1"8YU,R3`%Y33NGKcB9qa"YPZ(93R&B92CYpE[4VYLVd
N`d'`V(K%,c8JPE"c'lpNT-F4qQ4"RkfhjJ-lc'NDQ0SLf&#"S"4APEXE-&44B2R
PM8`VCJHc5&k--RTK"Z09-#)#[(Kj2D-"R#BB+8B0q2Ff&i`ZlEid9(kdcrc,@H%
rjH-Rel2BL!!M*jVkV33elVXLJ[p94iI*a6ZpM&*9hZ$!MaDm[f(-Sb&,qXKV*0!
M1Zk@`'"k+aAUiMDM#+V%PC,V*A&PMqViITJ!"1H,4UX[6#fr"%'U5k[3)+KBBqB
Ld2Fh9E6N#S8YU%HB*YU6&Kf`6ihFBN*m"RQFKAI2ZLR"jD"&%'"jZkf*eQV8@Bi
EMQ$rDkfX5%bVBj*-Gq`@f@Ebrb+4#+l[A+e"X1ML6(09ced,*'$`hE6f#BqA3aV
Xf%d9+iG,"I$AamL5'if[c-@LqrTXf"[CI*Dh0Jb%@p+iHIf-qX$m6#B1-ZpBAld
F9L#fA8TGMNRUl+8G0E$G#`ka+MKVJ6KV(efX@&&!1c[$GBpFeFde)+!daa@cE"5
d(rC[2G2Bc5ZrHa50)r0LERmh#!2NQb,%&J@m(V1q"PK-XIMr(*Hka012qLU,*lK
a%bS"TT!!e$(bX)SdTq%SZP@H!KEa2hZL5+hrhjlSG)8rlD`kf4ck-M5i5NY(SV3
*h3NlDE@M9d+J*bmRPbB'#'hiP&(3`bChIX((eS0cNYadl$D"+P%9bILf6+FG@-q
Kf2q*5GK-L[D2[ra!G#Jm*5MJh-0Z53H+M#3!4H52PV,5%b`6Nd2lJ`D#2+4VPJA
j'd!QcRIQiDG[eP!*qd`(brM"H&D`XX3&YiK6QE'D3D4rRNEU2&IKqeBZVqqK2EA
!-"f9QF@IV-fPUH+%*k["4bNl$Ge$rS8&S'!F2e""b+@d@Z"XG2%Q4EBQj+EVj5q
,b""QTlRLl)"m-49)FD&r*DMKXedqjNQZU'BaD46B!bI"'!RLjDXJqIaqJ)[LDA"
cC'm`d4AQFqQmEi#%`@bL!(*JYPfkRUUC@*Y+i&GRB[ai(lPDe5M+mE0peSCip0#
!KC!!%dSA!j@V,kS4X5N8Z$Bq43kAlBa9Q4H1(-bKU`5kK3+h3fKdb&l,A"TUY-Z
)QE*M12MAMh'%QH'[)[M1YS@LdH&a,X-[9Sb#cIbB+JiU9G*aJkl%&YZApV)[bXX
`F)*Nb%VQ*P&e3KiDHNjV#8'NCm6*jQ#Iq&TQQe"P@N[TJc-bkR`83JFZc(S#"QP
0hAPD*jaUB'k@F(rp9+dilbG,dC[C*bU!E9TQiEq0"b%+4KLqX4PkRYkR[e@rPeU
rTrMGNU-accb'mA!S90)VdN6CD`p`m$1-TR#6LQJ!RB0G-TKYIKGY#N3TA`A1IFD
&bi$9l@j3kEqYl6Dh$VLBb((k[rS,qUUdPhG"6i[hbS((cRZ&9A-@fXN)K((,K3P
`$hGkf2)kNpD$G`X)0J)4G5$k*Vde*&NA0BJr3PeVN@+9rSA[D9MlI@XTN`G1QF*
8`f)JPe,#%-Mj9*5)59Bc"-,ED3dN-Z$MqqM'5XR!A4DdTbmNF-D3!#I!0hdhG+a
FcE8B%3B(qA8eP9IP)cBLQSiaha,%X3!cX0#LeP8[FTmmdj-NZmYCSM!EePG3"[[
%1HdD%m*hlmI4J'CSC8,a26%c56U5PTQS@FA[iAJF@-E-adI&CX)T6!SQ4KV103V
S6mJQG)-kA@`!Ci[a*KSDQ0!DX(4N9Sapr!LHKHESiC9pM"$V-c4T6G86`!528J[
+%rq'Vc!,$NpK@N9[VGM`-HMq"A1a0@!IeHdLe",KYGl8r"k55J!`rbmV6mLp-+$
p"p8%5K$c%4"Tp$Ym3krKR&bLLr!dUFJaG(4D,eUR6dpN[4rJiM@R0VlT36"5a"U
Z!"H*MXK([YIiXer-8Heiib$"mBF40Yb[%qM*Aq,LCK,X!G,bQVca4E@eX2U@#DI
X6,pdX%kqJ*BVBJ0Efi@KUElfYCcqM--B#aHCH*K'BK[ClPk+@p6`,"K60Ldplb5
akE`2)KT1MjM%EAc9#NZYSdr5je&R0d)c28kT52iSm)Mc!M"15UM&V"Jf3hYrd%X
8CHKCPSFA$X*&bM1Pe%,GLp-!5JP6b*M-c,Y1"%f`6I3Z(YbZ$q[EF&+A0jI!@fU
TAV'5PQQ+VL-r,VdDDH)Z3JXAG,AK('J$dI@Vj(K$Il*mI*@Hmp3j",GXJX$rr&a
iVF5T80N0YD(@'rqKpBBbq`2rQK*lFL3NriI!S$Kq[iSp@bfqf#ll+&epFFU-MeG
TR+RpP2[Y!9T6'00"BFrebcj3+"3T,VXQ-clb-4Tj[f3eRBCr3Hf'"MhE1riRQfG
HI#qREGi0a!AMMYc!T*fN*,EK&r&qUaECQq[*'J3"cde)I,'SHejGXXmlZ"V1Y0K
MJUf[E3ALa'Mk")U(D@6['`'6392KVQfF23C!*I4)3m-hcLk`IbT9(eJ16FYRXp#
&Mj-K)96)LU%m+j*N@k#q*QXmJ@8Ih%IiFN*3Fl6l4#Tq5Ya""[iqKT[&"bGRN4R
e*fQ"2K""F9JL+)lbqUAcY+4reR6jQ'L,8P,H-Q`F&ea[)@&hJ@Z`h@IV98C)kLK
&e1m`dAq,cjT9q*!!9U')Tjpa8mF8bSR$$Q+JYEZ!B&G(X2DM8lk*GV""qjj3`hY
`33MXmH`6lAC3j0UA!6m+pQG(8-ILT&911V0Nh0$ffGBL3pR1[5e(hXBJFcfFZk1
Kk9ffKIkbpJVIKA9&e'qCNqcDYTf3!(rHhF&q$UGYq['5mP[I2VjmA0E24A(Hk0G
MP)LCL"BBXTjR0ai'pXrif(EiVA)ei,8(P[,EJ5di2$q@MT,S#KY9EK()qi#*Nl@
eZ6HSYh@q,8$(0ePq-ENTrd&Qm)EN869L1Ye(&IJM$1UfZX9Q8YdEI#R@G'b6NV8
lNc#"am,+##S8IZ1N[h*@HX4!UUV(DVrmVhp9[l1$X!8i!re&r*ESl-HiE4'5Y9c
jil["d!Qm`'YYfD0jT,mBFHXXf%%$+'C@3@),8q%Zc!)+)PDLpG"'bj90)r3DRL*
I%[8[FVrGk$M"I2r`$1GdIYq,r!aX#IVh#i1d@0D$%q@QfhkkKT!!GUN$*%EqD!h
[j'FaL+ThTTbP(DH2k!KHm&ECZ`Tel,&l4kBEJ+qEPh9)9FMPj`C,'A%'mrVC+#S
e%K'#8RmU0Md1MUrHb3I25)Hka&Q(L%5ULFS!EpV(5eQN-3D)dmGiNNTTRapCH2q
!T)22q,DNC8h@F*-00jRL+f!qjd[1X#2G$GX@R$MrD35[01f6d2b"D`DmmCC)a0P
3%b)S3TqB-pSQSDR1B09$5cjY!Ib1)f#0P%mX)Ba,89XS,Xq1)ZqDp3MlkSZJUTe
`S%MFrimG$N-,-E4l[h1NIbLbIieEhebKAi(3*([#jXeq)a)4["V,6p@RD&#QK&q
ALIbX89iSUC,96PT-"0EUaD5a5[BFF!"XEfF,aB5d64%kB)E$@ZK'@[q'HbA9@Rd
Y@iffHPrR2c862`,3(ZX@U9V&"4cBjimZqakMX9+I#)&CI'V@ZQRAGK4JCem9-!U
k8&L-[rP%ZP[['E`(JM,MVp1i34,&9!%XG9KTr8+)`0Ah+GB-%&d[Q+60N!#A($V
m['bY9SS$$&Xe!G,3LBb6lplC3LMm-YfhRFQc'J`kmj0'HYY`%3J`ImQMe[h#d8%
a6IZTeKQ*MHN4#B2&rS&3PQKT4XR%XYM)4+Jk')mhSHr9+AA9R)Um9LU8kU(f@`X
Q-d'(Jm8hRHNS5GMkYK"brV@*KNR%hCFF(q%%jZ(PkdRPPE%ei,882QH4LAZ!rZT
iN!"Pr4[DiVh&85ic-9+!pV13!$`5l"%b91mB4[KdQa8*Vp$96ZYI28,ac$!aBLq
Ndj*cYl@-%$#dh@dSR[B4l&S+JrHa&93$ah,%8GI0QkG#DN88eLF%X)2$`)*+%85
M63B-BAI$P"kdD6TUMmK)!AL,A5Z$9aD[R[Z4JM6&[2B9,'FAiJ3P'reGDZ&k&j(
$-hp0lYlMMDm(l&R8Uj1`&9k-Z"d6i[9KFF6BZQ-2M!#P61rMQ2IGP[)"N!!UlVm
fr!!R$Yi5R()H'V+cqqF$+,BR2hBr[RcrJKJBB+-"AGrZ,4XFHd5&K2IfX"l'1IL
[PB9amr-VEjbpiI9qM51@6p0+9jh,5*mBA6H,S4TJ3rhjji`hmNEIBX#bj`Ha,YX
ZTH'MEYh9h3G80c%Y`HXcA$DReCeJZGK*h!@PidB54S9UL%JJFU1*KC8P[-1)Vm[
V#PDhd'LQCkDC[kk(PJClff5NXf4eI6U!#YaFU"d'!4@X0fpTbHIUpT!!h@!cmfp
,E!@H#FjFA&LGqhclE'9)@VVSN!#pc0EkmCSSS!4p,FqMHS)"8%AT"XREbaFm5$R
*P@$(jlQPeG&rc)l1*JB9!qbXQ`('m4p1Q1$``bf5Qp%A,d280*+5@FJL3)`3PfB
B,([%!3hD%0eb%"M)LAN@%m8@AaiCR5CFimF6MU@aCV'k'rIc1RBDR(+kU"#@5Ac
9Sb"BajaU3pdIZF8L1UPp4Ke!20r&VH5+00#9`83IZA4!MTZ2[LHGG`K#`X[9E)*
DK%aD3eYX(kX)(G6LZf"h&X!"34frV'Eek$5S)GB$6i6c54PN+B'Y!Udl!b2#$1Z
piBQc2K*KJI$9[2mJLkIL)GT%pS'*HBDm"ULZIdQZ1KGNm+bkbj!!lmeM9"5(jGf
ILSq[j8UUeqG5[BN$`jD'`F12DaS-pB)dC[ce6[$q@Qjl6Y(hr[E5)[PBG"$DdV&
HErbB[020bP!TjlVM'SZJX4cXQdh2SZ25(HclpYl@qSP5VP2RD,SATd`LDBb1C#q
X'-k@q3Y%VlIPD$d"USQHCd%hKAdTL`8T2Gae%I2iiDijm!PR,U@'D!DmE1MQAXD
jS$)im2YcPVJ3`bj60UU219cYChmVR"M1k*L-l6,SkhA,pf[E$[S(TcB+aR#iJlJ
A5K!I$URJThcjHN*f,Fi&lP2X2Y0k'q6H8rFf&eA36!ibMCIllc!Ei%3-a3'dRc`
5['pX6l1[$Fp-TBCP,pic%@8`CZFArPLJ89cbU(aYKf`'J[9j"R(dP58eUkLmQN6
3"2(1ALF(KN!CYU9kh!6QcLKBeBXZ0H1M+UcD0V!rRS!RL+"Ah%d3-L[PreaS@+[
+T%j[')M"+Ki%1(Z&F8U1f)Er1fi830Ad[pMm,$)40QahHMLl[DI*0,L5k6'((F`
PV)!L+C!!c0Z6rr(BPdQk32&AJa5BA9K!86k5LX$$(-U&iF*-$YU%"#L1km!j0!Q
db8Z-JL8&ji%ZF$mFFH!q4+MRd!EAL3lTHpF(ShA&HCf`jm54d%m(BR*a,[eSHKP
`2aJJ*CkE3d&X9brYICmhef+p3aK%c)X8G[Z$*5eX!b'0Z5eCHqaaZi+`A0i3ElH
[FFkmAYNTm5B6-H1ILDIY)q#cJ2BH*3LY&(9p&*b2qJ!mCKlcF@G'ZV9D5X9hLFR
r15k5r[T%+Dr06bkbiJY)KJTa(Z4prJFABMT[9lphl(kJEkkK2V-C18KLDLI"b5@
cqV0[Hm!0p)DN,4DPiqRc*Z5UX#YQA+&%LY4B(5[c,6!A)5@AX"31IXPP(rXm*j4
1Hk1(fZGH`HRKHDKbLL0F2&HN&2kdiSXpq5H*)`P1D9aIVb[NlNecXIX9+pS#dI2
&D83%G0B$3)GdaAL6LYN3M1Y5VC13!%"6KqIJFiEiMDV8MraIjN'YFV1hcb66m#`
L2J!'EP6!3Q@C2dE6ia(Lm$i0fBKmqd1C"F'f@Mh%Bb421H!VIlmQ-iH+6iKkd3-
pdPacK-b6"E8Uh9Pbba[aQ#p#dC6PMpK6MFM&FrC3)Q6e1PR2[m-14ie[$)cI5$+
&8YeIH+#Cc6dE+@4Y#Ei+N!"9`X2-iU9aq#$$QSQc-0`%XadFP2RI1jRD9)*mc+C
KqX`2S"CYF4MD'mI5M6Y2aTD2[D`2#Z`ceEfVSI&1`6qYl)h"1KH`cQQc'[Il&[M
(PUU"6kT3#MQj6Z"DrL*6@19(YaDjMq,r3NI@$e$YA$`aU8X%T8Q!q1C"IJD!Nh9
BPJerE4U!eUJe`@3AjJC&A-eCh0qp8H#$dAX,c$11lLQl65C$H[Jhq4VJbkm@ZaF
,jV$GE")8XRPhNE)iHl#F2Mp#fXNU)KhFVJBR(c4F'(cDiXG%'4BXe&Qk"%8)B*U
'I#L3!)8M5R$ZbXKFG!rL-j*IH`P,mq*c,Hp9QGB5R04'ILI"B1X[&*6F[ZPi9'K
MPkk%XCL4QbC'iKSp@)1k%T*A!DUm(X-l1HAk9-mUKTJ$I',+!MGVKP3Qr%RT61R
jU(R&mSdB6p&r[I#T3AII4ER$F2Fe00N&0&DYFIadaD9QPVqLJkjrK()2ip'T&d5
!(X+4#qC)ZbEMd4Jj8'"AjqpQ8I$"6GUe0iNl4%d@4BrXHk#QR1ia!kdPd$Q@c-5
ra(Yb+V[+hY&I$1)q'D-*a!a0$XrH@Q3ZG`6e!9#D%6kmqNSe1LB`FmbF,hKB23j
1@1NlcfqbPMrd201!BIYa5*cVBDr05#B"ih%)$bVIVH9"45+VJ('he2f8irK"1,9
qK@"@!8MR8ie`c"Q6XG@rfA'Q`,TC2-HFGQpZJ5F)p$aUPT%*)Zq9L'l0'E6[*c$
di,kHD,lHJS[2I@(DAqmlSpUJG9LY15#dYMHm9HfYRmj"Z9HSdRAB4@i+BF6E[IS
hXqKNqQp`Hl(d6--!-@f3!)E3IQGHZ##iKj(dDN+ip!ML5iA#&#'3!*aLPMlVL"R
FaIDfKj)#e#b!X"hM"aZ[ja38qa3!cS`3G(HI`F'Jl#3q0mfj%(*A5ZMAFqS2NG#
3!(aRm!0[BUX8!+eBD8r(cA"%fil5RDe263eHBbd"hq2j)$%V03@qh&h3apPT!Ca
%I#aXJMHP+&F(@D!+lr6lYp!f)&5HQf9h8c8+TjZ,m'&$'[cGp1(c*BD4D*i35Id
8NEAk"j'lhVQB,@TTk#UA5LjjJ-kMB)YhlH5M2#hF89fE0bhBeT1a!Lr0cGK&kAh
))PEG*qQN2+ALa[@fV#RfUR[@8`*",&KeKH@!fQ5q'"U&!!De,3Dd*f2i(J"8-"C
eY1X`M(!1p(Pba8B14*a3qc`1&i5j9*V,U0cYJK!H8XaR!dNcRMr(0aLld0JpPiC
cjPF9a$5aLGB1-PCD%5&rZV&(elR8a-BrIS8rR2@PkfI3jC+TcQlNfrjTk`iqc0k
jQC)$83MIJkfF*BNbG1,P"6IGNUF6Z($8qa0S!N&ZE#cXYFYCjL$l)p!aQV0+8LH
Y8bQVE$3aq5K(94,2Tkr*6[!@2-h"d'$m!**ZQ+er#RMp"r*A$S&0ID$pejd5I2*
fRkqL`jDJJR!,3'iJ+L$KXl9RKdm,NUJamIQQ4ib9GdjR9@MUT3LD#c!a'@5(92L
Y4J0CrrIm*dN#RZ!$G#$l(K'`&(d*'EC8ak@imAD`T#-e[%2,RNKMq3fi-YY%-`m
Uq[H`'-"`CAaQPTjNaBlBP&09A2[)!6Q[Dp2L@Q&F(mq"0im!&%BDVYSJmcFR+Iq
%B#4IEq6m4)TBiP$Tq@(Za"[YQ'2++fNq+pATL25LiH9jPb'[G5@ja81E9rLXZ"c
#p2rSR(BZVL*`@3IBi$"lC*aqdFDKF!A`A5-816Dl-RPT)%EI#rZGk#!r3l*S8lX
X2aJcN`IXlHM41c+),HdTIf`KCe-mRShfMaZk3)Be-!C0)'K0Nl2i2m%9E!%)VAR
13*5Y(%deX8SU,K6X$LE,dp-h#%9rk()'9Y'a1GU&-KQY)j1V&YUC&p"4UV3Z+Qm
6B$G%C9[#&crdrDG54,D"LkV(+Fc$I0D!P2+p2THKFq9,5Y3lNpm*'+1S#Z8Q8(H
1b*j5lT%d!G9aj%8lI,f5lLZbU16QQ5$qM')[#!,9+*i'heedD2SF@"h([HD9ZSV
ERRYR+Nj5B(kJ2k"l10&Qfc,p)H@$JMdAAK006!5Q,bZGbkBRVFb&@(&YpP3%--5
++NUlX+15KDLq@KBLSF`0EcA%rF-DKrmT['PVk$U9hM6Lf9G5AeVLMcKcUC!!l31
3!'*P&*GIiUH&0d1mJ0'[5T!!dQ-1`l$Hl*6LI%L99@hPIZT6r*Y#RIUAL'V(cZU
FEBf5YCiBCJGK+l,+UR([5mPIU4*NaIP)*EjrGL%G#(jICJ0JDNej%$&P&1-'Jha
#CT%E4@c#PRhG`Pkq-3*VP@YrG4&p($4X#m)bT@Z+V`@pAF+&3$a#rBV1&eM56KT
Y-#NH!3TdqmZVC[3"ah10#)l9)#6p'r6Jip6EE[P'Z9,#Ul&l+ka#fidY&q)P$pS
a`-6JVKP*3c3Sr,rNi32)Y*%k*VIEF)h6CbiL,`(,rLCpj%*kYaj8,1iVmB`Aqc3
PJPG5iMb6U@LPj1JZ@`aM*('-jcLqRA9QTZ6Lb@M5bHc#K`h,laP(pYM%Gp&%U8(
SMpkrQZ,!b%0K#em,*kS!D!(H8BGY%-#3!0A-(dpj%rL&rR1Dbbf'ph-M'4PIb'E
+e$p'kkhe,TjkHHBDU'L[QUj&V1Ih60Ge0j'b!b)b+LBY3mf&@p8riF55,fCe#c%
c(0'JYBc`hhL,TmK#YifVEJ)%`'p$3-1%UE%A3Y0m&NPYV#mcTUA,-NFcHRCEaJ4
jQZS568(c51TPYq[h)r#JK[554k)k'q6G"5d%*15bjcTUiV-midka4S24)`J"EKF
GJ@b[e$4A%*-3qBL)+P`,fc1jKqif42#V&A6hjE204dScK%(GMLP"SQNh40%"+Q9
4-B$Ddl-'#Uf&P`"mQkG113DmMGFdr$#[5Tj)rdE3XBr0)BDb"kDKhjT`!*5%DLA
DDr#8&9prJ*H@m&ji)&0eKTRJaGcF+TXkhE4j82mehV4+("ahM0`$(kiS%9h-3Dc
,!TcheSNPFPjQ(lYa`-lQm8EFZkfQNpHa+22RU8$aYI8&SdPEihGf&f+"b!$J31%
*XBTYKj3$3Mf(!ll**Cq6fU++-G@`#b`1c05aqGK6-AMPhHH+3XUeCQJehID(Uj`
X+)#b9N6`iZJI2ZLf!)XUUYimR3k&Z)(3CBQDANTYaYISdQ!cTTLJG21X#bPGLMB
YlMePa!Sa-B!d2i+$Q(IZXYp4JSZETk(I*jZdrPm8!50VB*2)h#8VG%B$95bPM1"
fSDfXGfl48%V6"BV))BGTGl4'KUUE0aNqTrY2EU0$256)QT%k3Z+@qPJdb&VmTll
)31qF&j&&pJ3)qU3Q@FjT%fDkDjPS@T*ECNS"Qk9J6Y)UDfIQJ-H`Ta5"+2JX`U[
`S+'hPRY`GfCia'"reZ&2q!)C#SQ''ZrmYk(`Fm!-A4+#i%p,Q$aXj33C-pdJeSF
)X9Qd56L#-9'iU@HHjm-2f#9%1k6)JLI0M1`ZNFN`9-*'@ck0NFa2dY9,DIIDAiR
dDh*H`G4$iYRa!-ihjFi8YjRaLVLaErUZ'EabK2%C$@Y)hBEJ1EZ(3rY@dDr)5cA
fC6EMUqTAjbR[PY3Tmh*QmN,'"F4lJMCb-RDr#Pkh'd3$0Tic*!cb(8R#f6!4Udl
B&CBPMBA1HidLrLRFBeP-2Q9@5T6M256P$!-jPF#9H3pIp)9feqJFPZ[Ch*!!HbQ
P"Da5FkbQ,Yc[jlTL@m`JM$ULQM[G+N5erl,jr,fQYK)N6R)MUTRl430CZ-ZZV"K
lbVaERV9%DfAaK`03pkH4jT5ZY$,Ci43+*eQ4dm3$cG[JTa0XK@("[bSA*3'5b#j
j*@6a[#aqJCTY0%Cqm2q03rGZ(lGIqH+AG-[[!di"$,1F1dSDNDlL"[FQ6+K9I#`
Qr(Fb3D5HFLAakR,AL+(EjA2CX21MENI#5&JRq%FdN!$0pCIQK(i-@G+M(ck(*dK
,2U)B%2bE4lI8Z!6J@,`66H$@mBIFZMGQfZQ[IEL4b,%`S#Yk#NG!r0`1VcBP36"
p4QMaaTl2b!JrVD4Nib0E%piiYF`C[3fki%H-!R%3j&C8,91$iFRRR+dm-M+Z3Uk
)%*9QG5BY$pm+`&*f[8&(mqiBI9`eY9H$S6cHQ("8e0dkjB[[`cbNlC8J')jVm2m
$M!!DpMqrJHlj)bU)pNiKCI0IMIHV$Z''f$NAXINDLHM3khdR[d"Lc8ehFK#0+U4
NPRj0Lf-GDjEPI4j%M0M`R('dA'dU`jiX9drZ4&[9%TiNa%PYk#r6aXDXLf(kQ@J
&PQJM`#rHq'q"%5R6-3MA5+`H6h8'Sq(a9)mKIj5G`G0JB%`c8%,0eC!!58`p$ST
3f+q+e9ALGXYE)93f"Z*#)-elKe[1+rLDk[dBPIfE,2ZqGbIF6H!'qhl$qcqV0j!
!J,jJ(frjrlqVM0*,iLJh5M$,X*1PrJLXmM-i'ZG#'abkKAQ#lX%CbD"U1m03Z5&
8#k1GB*aK8[aVemVHf4[2@hLJSIbFM9*&JJBT&,!Y3h1T*)pG)c$U$cc58JhfkQi
E6UEPk[Q%i,"+8NM2&6k!k%0@'Ma(Jjj#Q*!!G%XJmVPAB)k1GcR@0&+ZP1%VqHP
ChZp$0@1FZH6CZ3$IVh*[aNG0X'9Q0@rEhL90P0Mf4C&cIm@dYZ')TSH!M@3dCVB
ZU9dL2aL650VSMT[++hq,PQL@H)YXT@qZmfN8N9fJUAMXSV,rD-l!a+LJGQJ[2e&
HUKc$BQi,'iXNG,&K+2fIr`J[YqA,d6aV$eP-(i)QVUShER-Ti[(Qc&@&qDiR2kk
!,ef,NrfCe28P6M64aml'e4C&3!qS9mee#e)#dpB3(b5(Vi#NE"'XBc&D$'KCQ'r
NYZfZS64!"X!$@iDe9#AmNf#@JU44$AJA4UVp(1B9ZdG3k8P'Z%DcL@,Pm)%6B2D
PN!"-')C*m6m60RlU%mCDDEeVpM8Pp1pp$*681qB,bEMrd6XYCY1h`%a&Pf"J$K&
I"6V&$3X1`DhjfrNdK2"UE')VB,'rPrV&TR,EG+#%pQeJ)bVCbTr8%Yk984IiJ4i
Ef34bB"DcDJ#%#CcIq[49EfhKXpLRPN1S3deNi&)9hpHE@T2UdjI#f!#[!@@+qZ(
&dm%-GALLJ,p[Y8L`UiC#3NX)N@1Y1T`HCCrU"kj&ZP"mLL(f&-JmV96Im5)3pRQ
1FT2CmPS!@36NhHXf,6D*E!-&%9#,mYd6H!X6IDVK[fILkLaCN!"BLJ*58clZ6*A
E!`@FX,,BFVkM(p0AMcKCYfB'hkIUAkfkePhUM80jpG9de6K@Q3dqDEH9QS-$#*,
6eb%Y$d4GL6+ql3lX`ALMafAT`"8Sdf8VN!#G8`EPMcQ22)M0QAC5([A"&)'RK5%
@##F+SdF%mG0(8-D'MRflNMbHX%LT`5SflINGLqbM0Nmf9KaiT2G+f"F*"mq)[e&
c-SH%F'4L(p0C)91PI)VM0FT1r[,!8Um""AY&#kHh@T*SS(Bd-RHXQC&%q#$hh0q
dMDCZ8HH,ieSETE3%66`Y9e#,@e$!4N+GHX'T!D4CfF3q)TSN9G4J@plkJA[%Hqi
j#A!rmd4"BjI`BcpQ4-)c63"UlNMe33-2iVhUii(Xj9,LN8RT+Ka4+l!6&!Lp(Mb
%6,jj6Qj$43Kh&b9f61%$GA#ZcNLh6FZTc($D8!XIPe%RrBh&P3em%mHP$@"9ChT
j$'4VbDbD1!b8KNZ'U+T13B$Xc[h2m@`)a%+A3pqGi@m9LJF**VG5&MDUHTp[j!0
DDj9k$%``hd-Yc`@VGNl(VHeNM9Q4QD,c5B8Kfa"bap0p-2IfICZ9PRjl#AdAQ,k
ZcFM"Gr4`%-T9kiSF0)+S,GHG-,dL%RLVfD@QJBE5j1&Q30mbC(l!#8Z4(*ZZb8X
R4BV29[e1*b-AaMF5p$RK@,[LEHVk#XerFQIZS@r0%%60r*VZ9m"3FBMN!r$L[K(
bbR(,ZQN%)rB1)G+r2fhVJIN8[G&F!N$prDE0e58ae-ZI-fR'c8[cc5G09iMlqjb
S+UA-)&"ci*)NlI229ZYda)4V6!rE`fBi&b'c3pqkFc$*A)IMCd&C"hp&hM3Vi2%
c*5$S%5&)[dNX,Bm(iM"qbr3#'-3&65a%M2J3%hHd"VF"VA`%FNK)'idDC9dqKMA
hc"CDkR@V"-L+(CZ)#km$Y-KlB-dHFjZk5+h5q9I-`JTN%CBXd#HbXEkaSJB`BcZ
M*PIe0#eQ'EDJd`3!($j3KcZCYh@K,+id`j`Q)"UYpe164VXRi"9qXpfBkVqYVbl
9(K'XRmDSX5cXaf9i'lC!hLk1B,a0blaq@&MJLJId!,eri[J`9'UFU8%SN!"2S0q
L%EIY2#q2DANhHY@LJUIc!UVRU80,Z%6Ef05f'JFHdDXL5PeHNU26`3(4NcC#lPX
E,h*L8PVIVSQd[M2VYY`UQ'*"JTRTNCYrFdT!Z"p)r9QYp!1Yh`dHlhCN'EFA5A,
&,JcZ49P'mq!,9f4`&CVbhUdIQ5ja5C@qp[d$5[2HXP$&)R'kdQ#[Alp"2EK'ET6
#3kiCUYSZ[@XrD4'*hqU8V(ch-3"m`F&ClVLDAa[8@)*"Za#"`XId*&5hkJTULqA
+3ITdV9U5'4dlrfN#1"-L&$5YeVqTrlD(hiV2dDZfV5"h%i0i!BSeGh$#5&a@U`%
+MX5R&S9B((L,GfKN&cSih,#p0pe-q($mX3(p"X#i)dfC0UbjHqm")3,d2+GbVU#
U8&CdR#D+0P!cT'E5fC!!AXLXVA-38L,I8HEXJb&F36ie3f`plIh&JNa5U8P8aTE
M`TKZ#,I#*BQi566HPX,S&BPYqbNX)$#lCeMfhaed1Sq5`1)5ej[r&clJDjTAfFG
""V56eIlBk"+)+3K#L*Xp%*UKbaeID3TmNSNLkeZmI3'cb%Ndrq"`02B2IFcXNAN
aVCcY)X8KI@1jc5m&%(h*5d![PXXk0!46ElA9HP9k(-+NH(daKiK"E51R(@8rqjK
k-paBqheXmfUhX1GI-4pP*@'l*6-3D6-3UcN&"dU[T*96DE)3m5a`Mj!!hTbkAc1
+H%1Ye+Yc),"KJJEqfA&+p'D1mULUTH+b1`(aU$9KLRiPE8PlS+4MCALMA"Pm4(8
m0(I1cjKPbZ+)!-!MMeD)'J9k4pV,2d%jKPl*fq[*bTaK`b,1-1TT*V#p1f$DEci
N#p&@Ud#K*G`akK[8jLde-IBJ*UL3!2QVmT&@IrSV6cMTTI+LPfX0`%ekQ$a*eeU
a5U[b`3li9HVPj84#*ZE`*@d#)kIAi8"fR'LLX8D"Q,ZN4!CNR#UmGhG(6IqlYFL
9b!S1c-MYqACEEE%dJ2A5m3mFXP*ZZAHRCA"q!42Rpj-4@F@U#YQKf-Ka8-9-0R(
HIReFUeCaqhc"q6Z*&3962@S&I",r8)Lk*cq)!T4N8N)MpA@,"'9FRX'"GH#"+BE
"H-ES@64ZRD`V"@Y&FU)@EPIl-'AkJR$TiZkdJ-KqkYA@fpL6EfN,LqKXC2bBFfH
l4rY6I[[FECS)B3L3!'h#'jZ53K4aQl@DPQp@biI5681NNE+G,U("GYfqjlhV40K
Hfm8SYXIi6D++%AMSU1TBfKMb8HNZFVANfm8"pJ*EaLB8,QUSGeF+rNhXK[LRTFA
(rQi+P[bbKRBRC%"%T+ALZTZP46f8I1I`DL53!-2he@8JbM&r[4S&a5SdZ`N&q@c
dp)BpUjHhp&-BqYhP,[P#JQ40054qqEaNQYh*0'4)E&hQ5c80Q1a!'dCMi*,*KZ*
A5R(Z+'L%&3fEd9R5IpA$4`1p[c93i-km`P5+hNjM@Q(f"rpZ*X,0(&'j(PTTT"q
pF22i*S5H[6GDa0`)C`2meA54S12KfL"rbMLE@CH&jB-QEY8kPAE05@E@$e2QK5Z
iIl!F#Y(C#r6!&m3$"4dfrdV0,SaEPbEI'IVfX48&[EA4@P63!e`5e8Pp[i)#!0h
H&,DjXX"V+X3a)@LL+h3QD2IYapj8H-FZ#rJdAC0(+a$j18`Zh&"rP%TXmS!VX'%
+$YU3!+K[mR'IBdMGj3"EV(A5h5Ge`&EH$Z'i,MFeFP'BR9C%4ie!1'YY"X2,5hm
+jI(A"NCKMXF*8p(00kX8,`#$F,6Yim[Ccd@(Tl2TF(kYfp*V0VLr0aY$#l&PBQQ
MP6eJ*-kBqYfhMk3*K#G@T%SKBN"A#"k'S05GCNAKTj`1`qp"jL"Ar#EJB&kSN8l
El!k!@+43,kiR`L%c)2a)"*,96BHRZ-[F&[A&-V0f!G9b$,%bNPpQT#`4IDQTBCL
+M$TAmAQ8k[lPZf'!S8q%#B`4ENEk#[#bJ,jE5'Pf$MbbjJf'Ck,E[RrN(#mh-DU
`$(%rcNaZ0k)b!b$ieU!Y!GVbhl[$i,+J(mjp)SbUG`jc)CmEE'BFVU#Id%(%HkB
hHdZ*'I$!j2I`f(RI`0Xd`BR!!5d5McaH38%1mjaTckfEeC*fiFh22[TNEk5YVUA
rPijlYjL-(2dN'$HmSQ*,3KrL2RLFie$pTTFmlp6)Vc%*"B&ba2aq"@&e8ZJ`p+6
S9'TP%RGePBX"qE!D1YQXVqTLk(jUQc9,MPIbpK&a5mXmH)kFcKN8daEP'LifkkC
amp#6D#2$+2#m9f'-EZ`G`(P%$0lPj!aKbHV$m)&1S+f&eY1"[$SPL'89K82cbVN
D@G"!)6+9N!"iBa)S0kjNZCDr*K#k*ec"56C-hSGb1""rE+8@"Bc&-4T4DQM*K0A
mVE5pdh''jQi'Y-G!RhTq`T[HqSNXS%D,@EV6$#%P&@8Yal`E1j,q-a6E`dS*"4G
0R4!k"1PQb8'',1XkjXPG1qr&RklUfIq%(jVC1+5p&*8m*01T&(eIj!PEURKCa55
U#4Q1T2'Zdhflrr2"6%$G[PMGIMPlJb4"6)NjeeZ5T2AeGcBc"5r3a*`GebSj%&e
)'GIMe`r$NF93&[dD@T)p1*[@GJPpUeG&'b84P8D`,hAIcQPH$epLaU[MH`BlDrX
F694q0m3!ZL&#Kr%NrpQV'%Z0E$T+VRdkll!&Y"[8%J`mc2hL@Nja-qcmE",+cR+
6j[q+kUmVN!!mm%AjSK-clYrGLpd!5EDI5QHMpJ(D$Rr@9%p81j%5+0)K'c$J`R&
0'rb9MTC"BEch8rQ)`iKF5Cd4(TSq1,"cV`!JKjP(JB5qD#aZl+Q,lfpTR+*dQAm
Efp`6lMfciVEihkQ&[CHTL%PML6RbDd*EC@Bc@TP'j,LS2b"l[,'XpQDP`',Hb(h
@U5FjVjPA,qhpaS!UYbS(M3MjN@lf@BPEmmlZqb5(+kX$E"eH5Z$&4Fa0%TbA[8E
"BF[($`N6,-TH8V@,&k0XNB9qck`bri2K1XC4'p"B#d2MfTp-8ce@b8R101GbqPP
Kf[FhKJAmjqjmB)H05qkIM`R5AHRJXIbY(0PePjY8U9+Y+&(DYX8@MH0i@TFi5VT
5V9A)cUi4p[DQHG-PE1IHFY6XlGR%5i@[eJYlI""#$)U9&[8`,ScNR1R+eIU3!*-
HU&N"EGc3L3ZL`4e5Nk12H)ZY$ERcS6kF0@bXF3)3K(K$,Q$KLemai05BB#UB@Ge
*LUBhJBBYc6mjk'SD%-2A@GJ0bICF3#i9$(UN&DJVf0@-",dejUJNBZq9Z&HmY[A
l-aT",jMp[fSad[**0'Nj*a5a4![hSDVJIid&ZN2e9EqK6MUeFK(&dA4q%DJ9J9*
a`L(SCjE`0G#p-GDMQEEC3V8acGlR`0rLG(Y-"0Ih'+M44kCBqTqaAS!K5jDeTR$
b3KV8Y#'03THCaZhdc4C2CDG6qMTPb$84Y(6h-2`95qFe0i4Y4cUPh5RDC8F,b(9
(mE'[X9N3@&#9`F*lMm'M,PFR40!e+Q@X*GrB""QQE["bYmM&N6$m@rJIHmmrVcR
1qL-Q2[&PF-2@,K$8bddp652Q[hQpjPQB'd9!qLBCFBGQ#HEmQfZL,$Ji9*3e@3H
&jPSdGU["GV,YZ0#i+b!h1hV2Q5R3AU+QcdRmJX`2p%8@D5`#R@V2FQFclEPk*"r
#bDXL)[E`UKIHKi6eIVjH"q9i$6#mm2PSN5q#2FamfZ0kL(d&pAGbjf!X-P9'8kB
XFZ)FM!I-bKH,-+mV%D4krbV4+@&Fam'pK8JfP$Ue+U4cELT!kBNXr%pHHrU8M6T
1RDc++q%fVFRJ$q)X*"$*kIZMZkk9ATI!,!!R26MrX9X6@*(%P9#fQ8rR!"&86"8
QL+TUHKJRUC9+KF`cmGlMTHPpeZ(kIVq#NJ9N`hXV1Z(--Yk-P)0%Lr)Vde"-Uh9
YCQ[i`VJTShcm0[JM4HUTACpS%I2BY%DR4b!QQYB'E,IN,+kqX385c4SMrm2JF8"
1MZca6VVaH*!!j(@G2ZZmfRE+QCQDCiM`[-5*@8`1FXVRk3&6SZGJ%GC#,!L,PC`
m"LN'0(NIaQUi,&@dDR6#rCH`A,Fd[E#1$%&)Nhh%'i5BaU"Cmh2b9015pN*Rbra
ie(*hIVp2jd(dCjVd!jH0Nc3rkU$pK,4c3CQ(TPE4BE-VNRV#rqRq#RiHdLS+aU,
"12Haj-Z9cJUGC,Ad06EI&HjqeKY2%"aZ9EM#+eJ"S38,d4`&Kp)61b2Ik[fB`-8
Q!hPJplBNelfSLMcZI'35(pSpLf2q8jcFZ5l*f1E&-2%Ta$M)JAHUbXj6#G"4Dj(
MAPfQh[-)$B0XSj196#M5%URQr#(e!Bh!CYE+TZj[#cU4fQ!S(ZDXI&hX&'b`Feq
6VqVD0mKARCRcpbfD!#1pkLImc-aJT'4kPlT-HX`Nlb['HCIZ`EK"fKDGDTkU3Ci
@acc8SM(q91)VVZ#BVq&R"[q&(#cJSdjQ49-G)H"(3[&#DZq%hR5kEjRQ(iQMKr%
!jLaV4(0dAVaf(+K1cGED)I"C,K@8mKQ'Y5E"C0&cThPK5R4EGcL%%QkPhCL1M4!
4(5pqmUMhV[TP#$`,&5+(h+m(9`&`ej5TDYZSh"V4EI,!$TXGIAkCU"+9NeCIBLd
Fp[fF1``1%bPXe,JU`GRYG[LQpPaFZ(Ckqpr-fmZNECaF%#rGDcR3CCmB[H5@l-)
mXFK!lQ3"S2Bk3"kc`Y*"5,Zc3fX!PX+[[F,UdY-3BihNP"kSE$PrfpTF+"!qM[Y
F4Z*a2J$jBjN0f+Ce%13fJ-jE'LPX%@d5PhYc"(#XJ648&i'@f%S`N!#I`Vjf8Fc
"d6A4%MqSrh-DRAqYDBDadma3#94-[1U&M@DTl1YHqarLkP4h[!1Pe$c58L3A`Iq
9fE49C4NUG)j%V$C9MJN8c1GQBEmDp"2P@aKa(Zq4aNZ1K)!!h"%&"5LbZ6Q8J4S
idY@X,-U5EJG[VIpQ'0UCe#-$ajrLjTCQ*0T``6P@Zk@`AEB3qV1IYLhelMQ5)lM
SrpqFLj6c'&NV+E[Z64#UH-G#INVR!JGTrCLljTi3Sc6bcP0$BSVb!!#+4$'BjTV
5AkHi*F'+aH*'DX[6qX(RcXcS!QCUN86BM66Tr+'9,F"$plVP#$l2)$EL$D1a!*F
Hh$36%i2-R5eU09F6!4[q6c-6i,H6j[@fqTqTaGUbTlS`kqB&%@V,e$'b#BMA2ih
S1H-T6N6RRArREKrS)8D"@a`(B2N*i5,C8@rCdeKED983CMEq(*&$Y#4"i3cPdT'
Ge$-pKXdq"-K")NNF!RH$pYl(F8m3PeeeC(4`kfPUk8KKD%%ickQ3!2%69Q5&FZ+
C5cAf3*IBE(YcH%U#[2MFKG&GPJ0a"i#YMKjDIQ@2%l!#ld,@(9DIFdB`0ah@#qZ
-J(R1L*A-a'DbV3+9&-"IC82)c2!jL"Tlmq*I(1RfRC@2mQ5jTUm"hI-KcTPp`(T
YM4b+j%"G"ee0CfiTk[fHQi,B&JNVr'+F!AINceHmYQj(6%"FB0hLj&-K3L[HTKJ
PR5R2NYc-h*!!&"+D$a*kkZFC6L-ULU4*4h@qd%pFh'N#m@T2GRb5LflL$ER0-+L
*k$1kMFLGC@[hTVT)l6*FdQajTF`(pAU2Y"f`Ydle3JE05K93jZU8AYTHAM(e4PE
YY19Rq5HK-4,Te"I%TAl!*YHrr,+qQ'NUAER"(3!QASf[0A%e2%@%!p&qSPKL,X1
RUZDDPmHINePVT@ahjKFAGf06bhZUirh!R,%jTMr%KGJXd0QpMAeI8[6q&rX,JYI
JD,eZYUm%&Te+f"0RL+)0HcUAqBp'YBH`2m61EfG$1a-h"Mh9aqeRRf2`@qI[eDI
Uac#EcJ@IEb92UF@KL)M4iE*cDS)k6FIi9+4A[YHaV&@N3-0&H41@XS5bZ8m1,Fm
eKSUXXZNIGIDY%l")&b2[5V[%[mMiHb-YNUT1JE+3!0G90(Ff(R8k"3'aVmJSP!@
9lAZrSeb"iG#9EpI@,K6SNClJHH%h8jG)BH[2S652qNqXrdk"%lY+*9D1blG"[`"
#UI)C*GUk*TLh,E+$%TD4RCJ4F,F)S+m6S55KP[)DrjHa8XAPEC2qNR92j8[-6&R
JVkr-L5#VMb"UR,YHBrNEKeI'r)aUkKM,2TIer[)m&rbXfl4k9Z8`+-2r+EiARqP
H8bI$rFiM0if!Se`!MS(EEh&&dP$c-@%0HHTN,K@FHm%m!pPl%Z#Q-hcGp69$20Q
m#)XZfHp9('DUea)!Y2ikJaQG"EchEK6*&M&*"Li)qhAmk&Q&'hkkfL29UP+mRQ`
VAJHka1GVb9[iPp#PGGL@1d,ar(`&U1Tj1d%&m&"5iN%C*r+hDjfCk,k`*PXG*d,
#b4K%`'5`2Vb5%0*6eY5!N!!$d(Z3!-dZ4%LTJ'-V#"Q#(#'X(!jC8YJh)G5m+IK
%`(6dN6DhK'VI$Sh5aKH@a-Sc2[heBUGH*`UPe-H!*jr)MNNJRLSFflT*4DJ552d
Dd6q+5l0H)YXiQ0"(Q6e"NI&!d)D#ScqPTP'[FJrJqlFB"hb89H6JUCk"8Z8N#IN
%ar"N)8JUcJ%`R[G&'N3F1m$&L4H6f"dFAB3)3f1MJ@BP')E%f&kKY*11e'INdmA
rfpGBB,"aQhMKdfq0XNfh49Bql*'"Y&rBhG(c,!3JT,'G3eBCN!#H-'(chT*,JJ$
bVGdUrNbdcV')k0,-`Sqf(1mHUU,#(*rJG8&pmHPr@1k6a+D[SP6Gm4GD,jj8!G`
MDNiC`2%eB#5,eQd4YYX8i@4S4`J`"p%e)qj"9Z)5'fQa62C++,A5Z1C(RI#j,!b
H@K9cGH@B5hRVa8@A4"4A@,`qb(B*f$3bZ26DFp``qh0QSXb[4!X3lhM#b%0ZS+$
#)[)p*NK&(1i0I"$P9eG-)d%)-UlfH['m)ckE2iE&HJLeYF5Jdmb'h-%4E-*QlQ"
YLGJ&m@T@N!!SjVD2aY[&$iS8k#qpT5CPaL"bG@qI3USpCYF)'6+IFSLURE'2B2h
MD1mb@L25dH%,+QpS+I[qSd(k0[E)BY)[UTQ,jL*@m&),q!F3eLA@V-+"rP'$3"I
`j2cH(-J5)eJTlNp!iYk&'#C(d3+$@GI)aE9R[e323BXpa%EHadLV"8b'#Z3Z*fV
N(XHbch2)#'+U(!piHZc,0-![V9hl+f@&E8TfYeJaX4FX`+JIH)P&lbmdH0B,91M
,G$e*(pZHQ0PP#qT6#Yhj2Ie%!"P-D#mAbmRicpY8bZB9D,"$A)3kINUHMfNLk*K
[IJ%$Dra)`dJ3#)jC8a0DRUQCQM+,G5Cla)qBiZ&,LkUq3jQlGDT(`BE0*QGcfqj
UHUH0"(Ja@-pGBKP[UPq4Fi9[pkdplmN(br$m3(2mCMP`4,'pEI2Z,QVSdM%mZ%q
-dqD"KhAQG%Jb@ZQ5NqPUr3l$9MRj"jm2ErT9I06G3`04'MKQ2QFkTRfe2L'#BFE
-r24pZK3b0*DU2`0RJYa2*m3A0JI,mjl1AKN%VIhjdN[NI&-a0%mdLJN5BP`90Pq
Lc$'2-HNUJb9jV3*j'!(-b55$k!0FaTKbG)+)[q`1DVb(f'0icU'j[d,jPeP!Q5j
cm*)hG6H3!1Lb5Z*)V#YF%#MAQ1e"!bd6[J'e4DJ4KIQpA0fGpi*ci1EQ4CrTQ-S
kP0MZFL6i3C9"dVN#',EEpP0ap!L00I64U8UB20MK9FZ13(p2lR(F6p&U!8YCNLq
U-C3Yd!eV[@q(6mqA'#idr@"&VbQ,rA8D!NB[YYY2E@6"T*VAAA'2UM&,`0e-'B`
T"LcbirlMHra4EQFe)P2Z+lTd@3*ArBjeQaI9%@la`'&hi,lZ3C&$fb*YL`I5'+j
aASR#,EXRm5Zb4*-)m!4X@B2iHTSARiPTN!#EY%$VKQa,PVBki+Hk56FkY8$-(hN
kdhYkMVG5S*BADYL5!CLN8MZU4[b3!!X-2pD*"C%qF)c8D2KBkk)T'[D!IrSmTp-
")U2a!k+""(1DlceqVmFZap![qYR@f[F[ral$hr-Kd$R1e+cXa@%iQecm@IEPFiV
c,[r!r2#K3fm'6Kd*6@I0T(+r+B28icSq83K4VKcIrmI4faRlF,"%m-jd8XSTda&
Z@`$IX%H-GCJ*5d8ZEmPCli,"$0k#rKeXBZ%5P'DFD1'TR5M`cjLTZNdaH'XDj#R
m1@pmmXGp0%8flm)6V#0F!ValS,Tl4E'0C#66Mfh9TbYCNC-"i3)D`)QdkbYl"80
+8+[T#,04'S14NAhI[UTL)m@)5[6M'aPHkdkT9P@qZ"1Z-d'PI0&H054Al[*Cci`
pUC8"SS0ieq&q1Y%J)meE0KBHiPCKr4XLh!3I0r(pH)5@dEK!Cr%QmX'3!"k+c5H
!&)8(Xf'-#%f`kdiIEL@Z!'kq$FAUfP2'ImJ1APYc!Z5G,d)da1QJf3jf,hF6433
PCr!hJAH66f31jb()8l"2qHPmFKPNfk!+TmPS"G4U,UmrL&$GR*Kf,FPK2Yr&paG
(%cZq&Kp(fD6qYjflNK#B44p`dM9$3LESliZC#V9"*T(QhmC41J00EEqaEYZ2TRr
&@[aYKd9hFSE*K5c#C"%,BHd"+NGr2J*N['@Z!C!!*`2d(0ZZdk9G$e5S!r5G6NY
bqD%MjRBQaRYJRV$FSp)86DdE`3Crqp+"cdpI8b8lRI"CUN0ak*VPSh#HfJIG*3K
V,ZrEmU+*,LS6ra5q18kE6r*`1S3Hhb5,EAFDm%Ckd[9GZ)5'-%Fl%)5r5XlH0J(
,DhiF,5(r8*2dK@QapqVJZZ5Fq'Pf0*8U#8HC$DMB-(d-U"A"jAY18N0["[+UJm%
eq-r-cdkJ-b$pYhTdP3!X*kV1e1&mNIPj*FkTA"TLl%dVlp8G3&[(qkpHZE4HX8V
2XBY4a8VVJ4UeGjhlqVA`F))[II!rF`eI1C58l9pML"3e'(fqf%ULlijJY,9#G@a
!V0*'B"98BH,4ck[$YrhLdT*GEMf0*%Ffmk1Mcf4kljUmr-#edVl1eA5rqGIbNqU
qZUZ,Bk8SR3cN!l5Y#2S$JpHX%PGST1emS0T1(4KV-K!V5NiQKG@M)b4*&f6cm38
8k%8EcYI(8%9jmQf(3P0QUXIr9hlbYM"@`KmXpS4e8$FY15&RYb1de([1Ri$'f02
EH@IZE+b@fib#caEa#e16*8kICTD9[12i)[JfjAa0R&4V*Q%&UNB(,hLBGBm2TIL
NMTKM4f1(--)@6!PlfV*(S14cljFa[aKBR"02B3ljXDGQVhH[[TPQdeAl&cT,i%`
fr%'qGX2T+Ze+i%G`,kebe6YXHNQUQq[319Z%R$ZSMiNNbEXca98m"jE+E86L!CK
cI3TdNp$50@d`Paa@CL+2pmR[%YYRrK3AZmLZIqGB,HT-8`&-rK8-q[MXaI1+`Dq
[@Ci*dUf9jAk9N!$6iLQj*3&ikk*8ZYee,kP&1dLJGAT,RH0m6FT8qV5TBV[MBUM
3C6XQUQqmJem"A',dce0&l,adh*9h)B%AYI,LbfGeG$l3l#0SXRjN*IN&5R#40ZA
AI[Y`aGIfQZDUcH53!!$&c%-GVmjFP!b%NF5,aDhAR2[8TUc*2"k5fK!qYB55-#G
AS`MYH+4mjNhA1TSQb#k"40T-YUkFdTeQ8@Jcm66FQi,[)ie1Hci2C0$LQ5(C-Ri
(%X-bC8CZE3+kZXCL+!VLYeS`U%4#`6"!3CH!r&SBZ-#Fe3BR9JL2KrGcQjmc"!r
EjNq45NS*Zr*GU$`J(9FX!BacaUV25(K0Q`pc20d"kQ#4AEZQm*[k'UIfDXFU)DT
RT4,H'-HjK9b1iBjSZHZ-e#5BE0cY-ZlDm4KFKjNKje$j@&FBSTPM@GbGr9RMa0J
'APLX)%qdfV8+"KR`Qj!!PEQcTJ!%NU1m"["6hHbdiHKmd92V2e4j)(mlfXq6&8(
8-`G+N!#a8,"FYQmdYHC3TZJB[D#8"dEI6P5,[R92cHeN#CL5`Z!%&QNZS*TpeUT
ZP,5NPCZ@AI3NamD6pbVqmJZC@mdM&*M2'"+F5Vd9k#VaRf4lTV1r522i"+$irAK
dkIeD4I&@&5QSl$NLdBBD!lJR4GF0JK@lR,k6[)'SY-1IiQ&KR"#d6&U[Ea1CP6U
kZZY8fPi'[-SelCP+4QhX)d(&,Aqkm%Q*qi&XdKYQ*6Q3!!ddF'3jTap,45*flMJ
$qMhjq0,j,d3F1#26&RMJ1MGBdh#-TM)LZK`4!r4VKSdY+imNi-D[!EpVchQ"(8-
Ar31+Gp*$jG#0RY,Gf#cV1Re%IRmeYP#RQ[i!pA'i%A-Rq"YR%LD!P[F$S(LZJ$B
-2Db"pFKSIi*kKPhdX[i*RUEl-%&6iq$9@VXUd4arlCN5HEbVmH8eQiiapAYk@kB
#8[,M9BCcM#CUN!!3Xqql`'FmG#l)AFd)*0-Z2T9!AM83M3-A2BLkl&RjeY!iG8X
A[K[lHClaI48qRH(+%R6!9BP("3AdJLQm"cSRe%d2+GrBSiImb+h'3@C2%@paY$-
46A&5q9eip8`qA`a+-!a8K(B[jF6'&9-c,&c(QH"YTJ[5+#EmPE@b``8Pa&EZRDD
f23*3FLT[UH-AdH4R5#P4QSa@ed'R,N,M4)BRh'TJU5`FD`f#((qY+2dM`X,If$E
k[$V#[-M#+A@A3,0RD`$Fi'(5!qBi)pXG(*bAimR*"cSc9e`Uf$M8PE@r+b3ZQQ$
eCS0ab!m8@M&Z6kYhC1*"iN)RkPplX`RClAheZ'LIU@*24FDq34DCQ3HY((GB[JP
!ZF$SU3$a%*LKI[(rQ+3Q+Y2&[4bdI5,0kLLVrabRlLf`mU2N)PKFm`3rk!F30PX
#hXHlIZM08qJ8J6NT9*T''RkLfb0[+jUjQcikJEMlp-fTSd0lE`"m@([3c0'r13P
N6qBF!j9ABUGE3Adc)CK21*3@'*AcSkMk&iBaR$qPfd-Z1UPMB8mC+p'UY0A&"8l
3VkFVra@iY(FQRSHlP'aKClTj,FC@JMDXRc!4pJ2k8jq#J!i!GiLbSi695INZA,R
mJ92iel,c*2'@Z1Q3!1e&`ACQAL56qR9(F!FYFC8,*bBHl"#0C5GqFTVKSr[X(l9
M[bIUDChER9VFAdlJSf,jR`8j-`G3VCaraZ2[5NM2Qj`Lc@Za*$Ak64r(3X05(m!
1rXS"dY5(ZKZ&VU0I-`@L"AIBrr'4&9'6b(`4*Y"$LNCYZ'b[YedFmH2K,TSlB)U
dVNMNL3Q!TfZkcc!Vk0DS1NK5mb4dPP(k,I6$dF"DQcU+id9jXeHmU`#3!,S5CI'
i+Gb"m8fIaI"`*c+S*&'IMP[Dik'QX-4*9rhm415MDD0f%iAKe#E%#b6PkC2$ZX%
"f-IXJaeQVe*$BFR8ARrPh@`3DA1%Yl0a,M[640e*TDFeiZ@R%EXe%B608bH1j#+
1-N)A6DamT*E5+-EYfi4#jU-4556V'cGj@G"rQ,5,+@6r!d!C(ZfpRaT!QlkQ40S
Sk9YDDJIe@JZ#e-Q&J0LTYb&M6YVQ)hA4bI3ZXhp)@YDD,CQeSXPA(2[RbU+qa(k
F-Glr$KmL*a281-d*3+3fSqP-!jlGXMY1j4MBji8aH(YVRTSCATN-9Q@HX0d0*D2
jRlP5Im540*aqiiXA$cQRZ+"*l[6(41ErrG#HfLRFhBhe[5N`a0+RJ$q)k&6Fpm4
@mbP@5&&S*1@U`)@#d#dEhhJN2!Z*@R@U-JMBCAU'ZD$33bikVKmBD'H-chC2e,6
D$*d)B"j3``D1Fi)4Jk+hcj9FSm`1j3CdJ'"l(9Y'%ID9YF0,q,Bl&RNITD#LZI(
Z+i*8f$F!SHJa+Q96mBe36PP@Q43`2-08L!P%jji"qdIkk)kaRM!U@lZ!YRjf5p9
XXZPq&9%Ck"(2``QZ[NDDEqaa3r6Y(QK58Z8&)qP#mi$6V`Ih`akADdM!fHYU&0N
pJ)&[Ic!lH&13!(U%`$M6&#1qM#)*aiV6m"AL1%`!"4`RPhcYlIm!%%[0JYkhmTe
0446&02m$#2rZXF"3E"cXImaJr6I2SSqii9Sb'AYc*i)KT0'[p1eF6T`@#$Y9N!$
6ZMJSCHa$$XYfj1IC84,qNj!!)#9QTY*+86T$`m5rk3(`d*&,hIb4qa95LdiIDrK
qIY'PZrm2Ke[h*[-0dJ,,rU@dV3q#[bVh,Z)#eC6`Df&d&SQ@XA9iK8N3mK3@FAV
L0iS*dilB2@M[9EVde-fZaC&*[@K",89pDHV[ILLY5@@F%G&BIMP2,(r4h!SLkkj
9"r821()YTICTYj3`T%mCKQE-LD64X+01I&k[[NEN"F'rT*0AU4hUahm-9kD8ecm
)42dhAeQ'a%PIa'SN1!4DXkd3*2qN4-VDk1VS+J*a[6XPAl$$Kr)CSpLFLmSYGhU
)Cm8'MQf@l6)RLYP-4RZ44`42%hMrP66HGG,qkVZ&NkpKjd&dDVK,Tff4LZS%DhG
jr*N(&b$80m!+$ijCED#j!UJCkjLHq2YK50(LQ'RYC1VIJ2Bir!jhlbpR1KlNTZ-
%XFUM-I#aI(4NahebU&eI06"4qcM`'0G$$!U#R&#Gp09#T2"miHGa[N+QTmU8UF*
+-,l85kZ2US)$i)J#a*J-&a5bA'Ze$Y"d`KYa'K!!&UA[S#M[0G[9a6`55%"Z,,r
c34S*r$ArR2KY$He-i"[h"-)3mbRA,h3ic4@KHDHTH-4*X0H$[`Jd&HSKK'%1PfG
Z&%d#T3XRZBebAi9@*)drBZ8T6E,+$BlL`p5p#,ldFbe)XJJ$ZQYG-bUP`b2qUAi
8Qe%XqM@[K[Z'h`244+'E6J88fi!M'%Nl,rpTK%8,R*iGll26b5FlEEff!-L4f98
XcG(0LG,,j!mhr4qP46PE%f)AZr+)2NK[T,S(KTT`#DDGZ[Q)*QFehbk(ame,XAb
D#r"i9S0JJ*PSNqUIf*!!eX!Fm5NHrbepM@0*B)pQ!!4i#d((A*TH6Zlf*@'%Z8#
PKrRFYYXN5F4%keqP#ek52q*HfFa+-6YFGmb`N4Sj2VXc(mC!4F`(2Z-1rk4$d)9
YICK@elEh!&-*cb22!qDLJp&C`q$!2AjZ`B1Qcc'$BpqrA6[p50[jX,jHRq!bL&D
,#iGcL()'U*f[(bQA[AD2VEKLeATckCI6Ur-9CY'4!*j2$ir'U8q5BA0r1)")pZE
I`8L,IH!#06fmpiA+EHTK&bLehUhr6F2VJqf[5e@5FLX0)!DH(Ce0)p4&LSP4l5V
h#"K+8qDDj!ebjbdcJU,ZZH1p3Ub$*0RbJDE&Rb85q[LGBq"Bkq5&#p-RAE"SA)"
i2U5`8490V5Sr,MTqUr&!Kf4D,4l9VI)VL'AibaGFKp*L18[BR-Zr&5d)M,(I+dc
D2L!GViKBH&lhPl1RheCTJjkF@,"B',Yk"Df"k-L0K8US@'&3dfUhH2HGQ)'3!-6
R5Bd%Y(IFF+bZa!r(6I,RR!-"!LalC3ApA,6&%dK&dq9m@$-KR5%a$VcYLG(DYm`
P6Cf-4YGSq8$G@E1ak-d'*XPY)30BMKlQ(AcQCXN4-1)jjc%#AK$DCD"4LSXb5%p
&XR"hq4iULq1,83+*C#q,),GFIXB3e%-GP@Ja"$XAI33"B$5LjM45cMIdm4pEE$)
JR!6D3lcf8"aYR1R98DAZ#m@4eR$i+TB1',m-0BfHE1Pd4hASfEeN4U526-HA6bM
4(GaK`Aqrd#mc#`#IIEf%j4fYKXmFQ4*VN!"d)JXq-M*,I2'4qbF`R)&S)m#Nc!a
#a+qFe$c&Sd+K&%T*(d,VAT'eF"N!GlM3&"bXLdLa,UfHq@"j(EI,M')ZS&-1Kl%
0k$+3!%qjc'YZJCSK+Jrm+Z-3jC!!VPMb92!bIL116N#PP"9#()`XQ4!qLb2erA,
*%Aj6&ZLT1fHXLC*&K(!HCU3e3")Ca($Z)8@VP`&Kh4K,ZQ6BG#UH(TIKXbE)i0&
B#lrB'NYH398NFpJp#i@$ip(F9VRRjcYNUG@$a2kTY!Y9jPX+2Y00)@kbYFlc-LS
&*HpD)'44lk-Si$3kELij$D6SDp+2NbEHH#8)C"!TcZP-aRR[68-QMRh[-JJN6h*
!!M"hp*N(TmT3bBm1VaGiDTaD'dlbq#!Bi,@DMVe6i'Uj(&$4d(&bREb(kQ#N)2r
EjFPc'mpPG3-8mK-BfEMDIC9PL)Z+',5fqk(aA9Mhmji$&l$MALc+05Th584L[p2
bVaA8F5@4i&1R!!jD6`9kHUV$@2&DrG8"`Z![GX+Hmb,hSPJ&ee(#$HV#Gd)jb4@
i,UmYV+k'eh6@r2C-8e`"*SmlURRE6!+e`@FD6-HJ[eQA&9r9rTSR+HC83Cl,@EL
mV4Brf56$)`X%fL@5'!ld$DDA5+%Sk![!DlrVhc,QZjLR,8QFfSYV-biH-!$RFF6
-eCh0NV,-aiA[2Lj&`-fFXH4T$'D%aJfSQ-qHHE&@)CAeQ*!!eFBB$1QKjUARpSC
4haVkjX%#1*9lJNq60&864`p4PNpM1B"&'!LlH+hHYrpM+U3!,dNh`)ULhINp6TJ
UBUICTdPcSpmEc1#6@03FcIC`f-(b`d8$0Db55H(TVeVEiF'(2kKK&YNH'mmc3QA
021&)i10CdCcrpi,5EY8f2jXH4dh%XqAi*"[GLMB9TG!k8eI(llGF#A5[S*Ek`Qa
0Ma"MAC*ec3dcd&6kilVlm'DI+AK%q9Y!j@kjXBTAJa(#HhKL9+%$$20aQL)i1lS
b&&#$XF'KJAeSk42U'KTpr"eb13VQp2DLIllE`mbQjH$j'Ua-8jmf6k(h3)$PjRD
fb"1M!hU4)8k!,!UD-2A+DHRT"FciaeA0qTQiQGIPU"IRMVUT6B'GQqc*5!dbM@h
5[m)R'GYpBp$(jpMeAem2,1i9h)bTN!$TZE@C1a!a+hR)UMN$f(j8l5C64&SVDNI
LpXQj3MVeCD$ceXr9FYqKF4MEQ-pmMfPM@L6b!3MRR'5160i4cLr&YZ6'8TiV'X9
GLbjX#YS2P+%-3MBGm9qA9YcI4XKZX3#aaXq4*`'06Ca'b*Q(6F`&Y6qM`fMcYcR
id5rSADBY-`M"C(H@B`Qa#CVhZ[-k(D$-9mJ5dqHrXiG5J56+'VD%am1'q0GCY4+
UX0j2S0TV`EQLZNT-EI@KPfjURcr24p8*KC!!q8KhcC6pjTQkNTS2ZrR96BZI$D*
!0GFN(S0KN!!YE'BMKHpEB,#*jF*TcBM4dH(K$*iFYB5*AqB'3TVC@P)9%Gkb%6(
eFI!Cq1pre-I$&ZeBC6-hcSV$DjeD6XT(li5"Uq#*`aiC0l$K3S"P%N@"TF@QHkX
6#+mB3H&PR+3"PHU3!0dY'0rNQVTkCPQN$-G-Zp4I*@-SpMkaZVVk,TY8i[pR*V[
jVFMK8*`c'520Pjr"GKdLbpBRVj!!b4NMrhAjq4K5PVV(jZTKp(`'Fm-C'8ir!``
F1)l@(*kN5R[M!fUQAclV-N4F[4[%@A'ce1kKDhDq&f-%9BNY@I%XT4lGkakjeMB
Za+"HC3mCpA9$f2iB9P5S+N,BES&I(L3@B&FhRCNC8FJGiN*ZPQQ$Z)`,(BpNNc+
$r2+BBc-p)d6`m[ISHM&,Z`d%c`%,%Q9JNe1[K$B@cUVpN3UbfPC0&)S'A#QlY3[
Y(i4HXV[ZI(1SSCX!LKCTXeq&'11YKkbmGXjahCX%-KT%UB(eJ"VcE`J#9mETQ`j
'Hm2+`Fk(Ra*i()p$Vm`&2XLm'BM2kNIm'V`&m'P*KUXkXZQrlZ$0`j`djCD&QKE
D#4qqP6KTAYB'T@jMl1`!%iaCT8(1pM#Hcd-JH&hiJcqjKM$Ac)HDNP5X!eN+j4Y
1HpZfe(-Le0Dr(@$j4!QYZLM-VD0RYcL(U!%SSkhHUR118['qpX$qQYA@CA9G)6#
5+JBUaIidrk[13T(4BM0kPGfGbaRh313SBUfjqpf)1f,3@0"BHqG$4(&XGJ[iI,C
8(lS`5a-NqZXf'rHKSiIS%#Da8dZXBIq3!(1ZX[Xfdj@Zkbp1U#Gi3SP#HVr$'V#
kFGc5B!ZhfTh[bLG'U1NMjCM$ic(p89+l5ic*!Z%*BM%q1J4S2GUP31HEEkEIT&1
5D"jfF26)U396j6Dqe*m+'#hNq,'6rM+8b[B'MS48UcQBVSQZfcZ(V"e'X@P(dNU
LG5ZqAN"V+TrF3)qhTkI6Yr#A)R,0-2R'aXrY@G&3KFec`NBJRmG!V&Ibl(%4FYR
3)36E1j'Y(A,FT'HLK-PcK48kC-CAdU(9UNVcUQSM9@I%lq9D5"'@GlkZiIX-''a
,CfLP-1K2kEL11iHmhaS!L3rTZK-6lBSrR[p1kGfV%Yi8CEP5EdTk-(Ida"XYq2M
9l36fIKF"'IS#83C6GKG$EEk@)ih"$(2l)@'eI6bC(2(8Fp!LpG+CC5!Mr$ZiDp(
f8afSBaT'%GR!KLaPC%`P`0!"K&AQ!3r`,R*&'G+8QGUB#CC46ME6,Z`05DaBTM@
3!1-((eiLPdUf!2KKa&+"P2C15p@!`D'eNZH94Fd9brE,i@+8bl@C!",'MkGNCNG
&%+aC#Cb`B,"DG6LlSJP3k%5U5dMjZE1A9`iECb46Zl6D-QAq"ZfYqNKSGKKaNCI
qb[fBpT`Y2A)p''!ZQF6G4h,YP1aJPck[H[dLrdD%dT!!A'jN@qZHFk62[e`0N!!
Ur1JEm%`m&KIdB,H-B0MkH(hB!f4HR3!Jh$@#AcRPX-4rK!d9b64)2L,p(JRhX@K
k@'CqNFR'lRMI&@3(R!5jdc,IV(lHMQPXc-@AY@62*(@*!B&%H%$([)QE0Xjck`,
!Cfb!Be)J0KQ'c%8qqNA(mUZe*BM4#(rR&JKrh&fD@$D9AcfR6HCfmMU++56(`T6
jG4c#C*H9q-,iV"98"q-b[GA#m$E#@Gh#q'$a91"I("[b!F*q*G0(I1DjLN2ph2T
Jh)br6MKP2FG@ED3DJ(ciQl$PS$C%8aeS[Eb02RHd3da)A+P9e&"$1*hL-E9[a%N
rVX$h9J,"3EU6I[)6eD$4Y"#0Yk&DaYpB9%kIGGPK(-`a&8!f&9J8$UXrfPJd`SF
mfadFDGIhJp-Hl&43Z"H8!')mMFZ#iB,Sbc9Tdaf3!!fk&"$$V1mD18-2UIZf8@m
5jcCmVIfAV*D2'(f"@!ZrSkM[@-BdAG,'ZeFK#,&hQ$U3!0h,bRT`Jl65!AHZL@p
q(P91!a`KX'N85HPlLrI8Bq(DSQ)RLBm&P["-SLRU3*Ji6Hq$KD4$Jh")kDj!X8&
XNL-)0jIc*T!!8N-j'HQ8d,5d30,[k1XYAbR`--R,#+K`ldcV[hm`KdK$k-@'pbB
0MA$mc!ZbU98V[qqkX%394YkZlS0a,4XP@l6"PpDZr4[F#Ej&5SeBJl6bBLhjFEp
aK!$244!CqelETrYd'I,9"3##1-cTRH1ZK$K@6CDerCBZ9VAZY*C0bGdGlhTl3"J
%N!!RkJPQ,![PdH(k5Gm9BfYXGPG6F5%-rH2KBPTa'D%pkmABJ%5432M'1&$RahU
eEp462TVT)eGMQBQVBk2RUGa6YhE,dr6LZ2P!da4I!Fa[Np3)Y`f96pEdLd6b&Ie
Np)`,-+Hd()dA4kC@bfkTUADME(5q*NIILNjJ#3D8c,Af[0FT`D*84P+J$)TGVK5
[Ha[VCA``BT14YN6Ccr2H485RN!$SP1p6VH%TS2hkPj'ipVFU[X&&rZPrik[l6`a
XSELVA0G)9r!&pirh!1c"`HNjZpl@3#D)LYUHA,ARi"pcG#,@AdE"R-%YGiCFQ+&
C'[MdM&N+c'H4'[[ahrr1820Yh,+c3LP0k`DJPkf*fLLpK5@`3NFD1r#0)-RDCX4
`4Pl(U,ldV`h!"$NcAIAkHkci5,%AXaKq[IDT`m'bILmZ#,8&RpcJK6D%fPD@!AC
Z91Cr#keH'*PKZEA'p5%jT)b3!#J@2Li&abXICL0NaP,!bZS6UGU8i+H0MNhd--V
2!!21ZaJ2r-@hedIV+M$p"dk1dlh[1fNRShcT6H+[kYYa[!rVKm3`M"qPiFk%D@5
eq&$0P28N+b-6rUGIcreIPf,JC'#l3GCEr81,q'EmFa!5mP4UL)fpMSFHUi8i4mi
r["GD9HLVjZ"UI![!*$2(%LGGlrdTeA$V+JdX-4R2eMVPVPD-8#!lJJjHZl[0('$
[fEcP0$#rBl@i)L@'G-8jQhf+JiKb[[`%5i!3C&k%"[,Ya`lZD`1[F,(rdXFl`&l
jp0)cLJbBChTK*K'41RJjj[PEYj-"bTiM5UIl"ZTH@b"q5)6bK"&lpiXlTV-YYS)
MD2a"(06-f`5PmVSrU-X4J*LkCU`q2XFLP*hT#&YSZ1!!U),a52aHXbQ8j1J))KV
3dPq2K(IIfjB*q4GHhlK!1,c"r(QGKD3E!lepZ)'q6mF[*lqjN`%$ZKk93JJiHJb
8k!EiHHP3LcJDCdSPkB[4AF`NP@S1XPYiBqE2V5D3!(&LULXa!e$USGAm@"@#5!%
KS51qjlrLESJS(lK)L8FS0ZHJSR'GH8YS,)52$rQDcCN!mc,8#h[9552TlS[%YFJ
A(&,JqI+XN!#$S4ZPHfGkr1+6!jCCP`k3!!Pmmc"JNr0VaP3p5pQRZ$fB)@`,Dqk
UC,$ar&FZCTmdRb1TK4a-4P#V`lfaAr@P@r)YlI@[9e'5RD#kb*A3Q"6$FXCAe9#
)339lBr@9kXH*I3dUcjS,JZIRUaA558m(4GYLE+SIL-SkLIS)0)8mS$NPHH`mHZ`
jjRIErS[+YTBH3j!!jadq`d3IheE6Lr89EZ22hERH[P5X,LR1r@!%AED-f(m8(N0
+IRaYa)eUE51F'`6i+0`N[%(FH9e5[Z+2[DI0G`RQ(hVhl3d0$d&E@S[!pEb1XfX
CA2Xr#4`GEr,LqGD!DH@41Fc2Qm[63&RVkQj4pKYf'NVSXc!+NRpKP'YQ'qep2Rq
''0G@#[6,FL%r[Uf'5dk3!0CX0'hIl6HMM2`H#k$#DNA2hec'j,F9la4bPl22GHH
!@ViUN!$!4A+b'Ze*TlId$U#&*kC5Ak,IC9%!A@%"M3`,eKF@HF8$HGC&pT(fM+q
YidMUfM[6#dKN4)Lj2j((3aPP`EN!@mp!XD5qYAjb#K4d&+iD`VmQMKlZlHrbkI"
9A)!cV`f+kT!!,58D%U+5l$lkI%r,U48UC$b@%Ni*r-ml@JN*@-cG$QQIBAI1PPY
hG*p6aT!!)rYYiqEqhmbY2H`Xb1@Garqfc#JP50PQ0c!cE(MpLbr@%JUMT33(V5C
M-`$SK3,XrU6M[J4p-3E$L4[(8@M$K,VNjpBQBi*NEiZKiGRJ5Qm%9G2EVdb!S"A
JFKVpIq'ANfphBep+SCkJB)IbF`EfYHr0P"m@0V`q06Li0kq!@1YaR++XS@X5Nqf
+CN9b6U#'!)Xb4"Q9)qBZ&2,PH-BNBqPSphmQCa)abh#efrC4NPBBDrV1A@ZVj[f
BM"S`0Vqi1QkJ#1k`$*&m)`BC)eY1YqLL5+,aIaAV0a@4LUUZi[D(,X6CCqRa)QC
TfiFILqkd@9$[crSYUk"SR&r"*k(NHYbf36MV3*23(,r,--jCqrQ'-0,5b%m`[N[
)-$$5dXM)-1#@#c9h"r&9RK$Y2a!iN!#id5mH(Kl0$eE@d(V32)6lfT!!KA'-U,P
Ll!NhaqbU#&-T@FSpc"kL-`'k+'LVSIT,GG0jTDYGA@N&`8L5MUY%2`fbh`*+Xac
CKe`@&f*d*13Tl5L@YapHI9[ljJ*$a4M*&-CDKhQmCrQ%95H%f[DTlRB$&3VUMPG
dkHl(d'!ZqI1#I8%&2jMfHAi6(i,AVhePF9%,MdZKY*E2!PhJM+IQA5re[a5LAVY
pEP`IQQpNb3Da8$8I-BRXD-)ckMYk@A`*#k%YU`F"&N,pEZ1p91+B8l6U9d(N@q2
@"1(Aej28HAp'@FlP!F,%"J#ASA3p%@3IV4Nd&bcJNr&"a+ZTJm*3I[(TDD-'bf%
+(G69J&%Sjp8Ra4EacT3-'33I+M5QAh,GjLVe3)jRF!aX2LNhdADN+2''0KcC)MQ
)YQH%Gl)`hE"6UQI!Q@%1+S'l(!TP2PSh'3rUP3E`CCdC"DpQ"Q#"!@PFFAIjD9P
B80P5J[-mc'[i[NP+N@GKrG-9Xi9H`-bHQ%M6'fprJ`0`B*[Y2Gm2""PbaGKJA4J
l1r#!jdLYJh+k2c%,Li3c--CNI+Slf-%U%[846!C!m*ZQTLI`b3F*Hq-A,GY06&#
#',DD0HRR+Sm2TScX6'NUqCMaB""U3j!!@@GTEB++IZhTJ`@&#QYb4e)Za4A1@8e
[2E)*bI`H-NXk2X#19,lSVF&6)8jY5I365Y2,C%G50PRih)N9cak-i5IfKQ'Y4ld
*Q-!A8MYXQN8Hr-VG4$Ma68c4CS+5RA'IIf5cm2c4pYkr5$qbF4UMHSd4BU'X9&2
&2+X9C)jQ[9H+NrG`8+)5$pPE2!KbEE!Aki&F4E$S(Ke!!rTZE9eKLmKKHp1[TI1
EZ%MMH!qb6f00(A#KGL-clX@-$FjY#kI`BliMT`LrY#&GX2ML#T6Q0E6H(U*10'm
I&q(dViNJdFR"SGPCSIfA$TMfVHmFZh2l(KKYVdVJTpN#%Cc&Q,cD[q1TKhB0b2C
&`VDTe%h5fG6M8Lh,SXcN03FldCF2Ak%j,%VLYiM910M1YGIlNFa$4!JPXE$Kk9%
,dB,L+qccMIJRD)P33H-kh,42,RfrIVBU@mVSh@d4bAUd))N'Rf81d4`&iSrhZlZ
j&$L4#[[eQC3IUe(L5+B'Ph'9DI-ZiV523"KI&bX3D1#$4L,%1IZ('f"AY$B'*K3
@i8j'8$CaU@TJ%Y+M&Fd6mqB"r5P[MIfIFNHNKARqK`USC#-PRF19cUK*bq*Uf$R
'Ur4c%$DU3IV9`qfL!HH-9`TId0-XfdZTcUbf3TNF@ckaehp35J1JD,MXi8LFU*D
rBdMTP0l8DkQ'%HB@A$XS"ej3"jDEC#hT#FHA'G&9eM3f1,!'40&EUIVC5Ujpp2*
ja@k@XqlcBibbP5[T9K2*IG&2U@)Zfb1BKAL-rpG3N!!D6-c62a!dMdCQRU#1eBh
CJbZb@5L-mR9LZR+"i941r+3VfIIdUKDF(m#ci!Mck+B@(02M@F%CL"*)j,l0aMc
jdA4d%@2(FIX`3eK`H4RY#qH4rFLaQ6IkQ!a3q!BlpGc"aU5#NPk%3aicMefMm3c
3m2eXh4@VR"k0FKp2HR1I&mr#ZVHjKj+QGkfA%+XTl$1Ni5Kll@$"KAbL95EP"A-
8'XD5'@"qj5jI52Fi&ce4DaM3-B*A`If[#UeSPSr-c(,(3"N0k&IVi0618jrZ[Df
TAGle&H`lqmV8SkQ@*l!elc&U!%Xl8q!QBfeqYlQSF6S$+8##bT`JURH96ihh8+[
Fe1S@EhV92KMKDR2qd")$MIq5[kQ8fmj2eZTGq'"aJk`BJ`&QVCpN1[J(Zr$BI,d
Xac8#86[3CHFU6D&dfKL-XNM(&9a#S%'H+FaB6Zl%hPaiDD64,d)HU119A%FjH+M
mpZp*[jINN!"rVJL3!(mq%-F8RLrVpDLGA,@5,qi5I"a5L2D-PH&S*!VM)BiB1U-
DYcB6A*0*cH+556#"@$FkbjeZDiDVHaJQe,,&V%*P)V@kmE&+Gl20k2S#5i11iAd
UX$e9m#NX$&R)N!##rPLY42(&QVL8K10)Y-Qm5UGR$8V[p%KB20Pl(rbVfjZil"q
"!+)f'qRMJ1,VrfQp5iac@4EZS$J,"L@&A#iX2EP@#8bE5+`aiTH"JP'4Y2%K+Sf
H2",(6,bVJmc'2FC4V[#G0UY"5('YkKYpA)q&86P%8#8q1bYp&Ld,AHb+DR)H#5E
`8$IH'EJMH%B9SHq*)6+"FjApp+S*pZGL49q'MNlq"[66Sb$Ge)cAf#H2Bi&mI5V
B$V1Z0(%eqF&S(QRpYk6H@(UM3MRdiF"HURm"qLq'm-eHNTLd4[&bl4j1'Pm$"mM
N0m"PJKH3!'4Lm0i&&m@`HKa-F"AAf&jhS3@CXT)d+rjh#$SLMI8,NFbDMe2FRl3
[r6c1Ppp9)JAH2`qG![@+NmdZ)cT'`bI[m!h(JQV['B5@+Lh*eaDAMiehhP9$1T5
iSNr[dUFITk1k'+p2C$!`LY`YRLGJ5EbiBYIUe4l,k@rTF)9pN69P("*r,I+8j9f
im)qUE$SATQ+eI!f4'TGJB0Z&YL%#U!K,*qpGlDp3"P6+E+f"G2NTR!mA%XbcaM)
6HMGJ@if(hiR)'XJ)bqfZb1S6-,1M"qhCkEb+!I6@PYBR+Ldj+I#)iaP`b2cr+d8
RaTaDADcr`be"A#2*-N*2HAP"bhP[VcURaZQSL-)$flKq&C@B*8X1e[1Epmp+YEM
EkI!%RRAF9V#bL-A+[@"F$8db9d4SiA4dqLI%Z3KiN@RLmQDG8DqiZ*!!5H*[Jr9
0bh*2*RV3X3,Ee)R!1KHYDUhikE1DlcZB'Sa6r58"@#+mDVm4RLGL#D5,NKbP@1R
96M2fART%@6)4H@,4%a36*'hdemYZX!M"Zl%`RD@5+i5riIeKH)N5(ANAU[(AXd`
)V'6MTZ05HKAmU&"AIj--SaAfck#dhF%Ymc&5'cjM(dl"DcH8$%%mr3ViZ+[-q94
ZRK+'hY4ZTA!1#&CqRSf(4%CUlDIKNaVYcHd+`,Er8%Iq,G(8IM@aRKbcN!"HCr*
)GSLKErV%d1NjdAUJm15B%HVSCDNFrQ&P`RkSijA%p+8N1IKbUFVi,k4204PVYjP
AYdr1,m(`RfPRJ0%mR*YR9hH)m!%kerG#0R60+akT[p1M'R(GheM5LV,%5)B&5Al
Pla*l``m,FeJf+V$-A)b("cDPS*i8#8LBf3"$ANZDkkiU,+0Bj6h*T,qGQ*B8GX1
0TmhE&T`eFA6,ql8pAXB2#BQRe4TGkrTc`Z4XJ#)e),"pR63HfeA#TafcSF+YPFL
G)UhQ`Ya&Vfj8`S81dAVMhYmJ9aKpICCQRPiEGBA2XM`GR2FTfFdieKL1-a)CkZ+
8$LE#'Ll$"6#$5SAiUXrR#%fb!9D+PRU8*Lj-r!IBC%!Tj-cX99iaAN'j5&5*0GU
3!"LEc3HTaQMTNY-!DUPK'`3jqU2CS3fd9H@fb%V*R!QPDY@-dp+DC&1X)UNFZ&6
qB)G8HAH[Ceq)04f2MNKq42r4&@$99jc-D+F)`,D"j4Q,pJV0bXlUSL$QpH4Nd-4
3rYCfm+kVkk1`!%XFbiTqNd@Z#EN+5h3E$RX!LXqL[Y`0l0$XGS56#jak(T2F08i
GdC9GpkZd25CJ)M*L1@5F,kX)Y`)5,@FVk"S"%dU)(kNTpQ8"!IY$B0@%C20b3F1
F@DE#UV`8LPD68D1!f%VN36aMq4@%1UXrP%0cdM)-3c&lEa+jlU!jP0[,-2K3f51
IbAPBFU0,L*M'@1pL9`B!e9PBpV'IJVS&Z#-ABUaR!jPciM`Y%DP"hB[06q,A-B4
f"5X`,$KLQRV9cQ9j3mE9*f*R-U%G`,aED[p-rQp@GUCK*m*FebP@GYQb6d2,MZ1
q`BM5L`8)9$f9-UGEKkINIlT-`5-"Z6lD40h9CIS1C!`jE#D@2kN!ca*1EjeXhJ'
hbm'Njh8-[EFNCGL12Y',)VrLdc,NG!pQS'lS8TlHF5ZNbD@SZkP646C!&qlaq3L
%AIE,EfljfRmc@BbQ"pqQEP9rI)CVFSLEP+Q+r`Vi(dXXTrR&p8V$PCQ!1kG,GKj
9E[dM+f+eRK+ik4`c%p86YQQ6pX(D"1a)PFiTICppU6Y)4[KVTaGKYDiNERZha-5
V4!Um(h#l56H%q"fh)r69'APhe*0Zj,dh#S(UR+l[K9EHqrQFA#i0de1EPM"`-1'
IP(X+`"d"("J5jBp&4,rqMM1Xh[lN2T,"qRlcJ4U+fMlY95-r1F!mN@lcUI(ZNQh
h"Hh6q*NR,&M5MbjS1-f$eYdd4fc(i!3d2C+ZXMcF#4C$jjmpIqF(0kVP$V"6YMG
LE41e59Y9E&4$3'A(0%KcbJa%AJP2eQQDE4`5j6YLSJrcr$SYM!T#3d%J$ZdHhk#
Q(lT,DM[HA"!MJii@i'2Hd+)l5D*f*@M32HqFfre[b%q`-4e[f[94Ed[pCVT41b*
S$8@QNK-bh'-)dfS--`$83BBBSU0JCIkL0Ui16l4E)IYHj@1TdIi3+!C8j&%,4br
R*&KKfpkDaX1VGXFCjS,!e4FLK$(YG5e-QXcRC*,"qGSjAL'K3VHBc'r`TqhfUr2
Dm%eC)hTGX,Y+TEmX84(9pJp!K4([VGYYXEjDa$-fi(-cUbAP[P!T,VHr4[UHqPr
9T[9AhXIm@e*k2R-Y1PI2qdIF0D'$R6!Ic30R04hN*M+KrN-LLI%)*FD"C)XZpr8
0q0`q`#iAC@C&dB,N!mFrXmP#jb8S0UH"M-813'Hf(*Zhl9&6)'ScfX+(rG551UZ
ec`-EP@YlUVbVUb((ZlejASTeGrYmE1m-U%J'PqJAZ+0Y1MEBEd"qIe[*82X3hrl
12p24)#*3[pc+&NKYUZHU0&(m"i-R#*GP"qD3!23A$@2YLCCBZHhMFGK5J+Blq,i
4VeNQ@3,2ej'ff2BKUD8[@VGK$kkU,%rU-XcEM!5!'c1*9X!0Ucr$Jad,&8SA[N1
c-`dic$191ZAX)*@ChHP'YRl)#9bj$kd%R+6Y#Z9qUeLDFkNeA9mMElEbeqqMYZ`
lp*qB33ZhGXK!BVY1cNAa6`85EDTHDXf[l08cZ6p*kP`G!p&T9RY5qcZmp-BXY6+
2KmJ@Ab)&lS-FkJcpHSS1[4iAJ6+`Cm`fJJ5j`GK%($MpEJp#e64-HF3a*H0A6G#
1[f9E(A2$F*K@*iP-@Xbi-"ciHCIi8$2Bh@i8Z6+b4ee"bp'#,X&M0+2"bDVp6rf
6kqmKBhaaZ+23BRHSCJ`8I)@+l%,BHdcN)FmrGZ(PiFbIf94(M5&U041SaIDm)cP
)bGhrN!!J*U5fXh,+eI!%m9+p`2Ba%#lBT84MJmZHL3+R+b&l!HahS+09"BQ[ElA
U"Ule-k#aX*[SpGH&@eI+ckmMCCr+8M5kIpLpc[BebQ%eA0jVMEcqRkkGV%K0f3`
8[YJF-R4B#HrF(S#-04f0kiRNIk2Y-kcXJY%C9)i1,(E+a[b90rNQ4UeLX6f)'S&
X3i'Hjp5kc!af$r(N4T!!JVdrB4L'qDT!HB%jqMlcQKhpa+`@3-K&*H#G6UqRU+T
')(bGe0YY814C0#I6a(k`jMTl$09R%KBErNBPFQM*&)@FY-8c%pN9FK$SFQdZ%0P
dG'S5MX6dF&+[Jr4e`d,8$k6$NrMSM-iY#dk@!cG)hhEr6UBfAqc"qikfaElF!N9
9'4(Im&TY('G,I&44q1F2%9MbN6G*1%-L$+eV`R`h93E"Dd!a$D03GN#I`e&5hPJ
f0qYAA"50UrpjlkPVR9-0cLI(LlJ)T2X'MqK,A0J!h%G2hQ!!5+Zd+r"mjN5qB4$
pdJiDheUEDVhIjMTldiS1AR1eDD*CARp4LpYJZ1d(AQQ'4m#(ibE5D8r*"pJ3NBB
rpf4*jkmfB3!dpEYN$iJc3m#M1`,DKfNPa)T(I!DA[R-FNcB[k`bNlT`)H9Ir)Xb
E0ZB+F4Ha-X[aH1DfUhpmJX8p*,jHc82T5Z[j3*!!%rVicZbBm@$qMrk"iMmL&%U
hEV`Pj!PJ%%a1*[Fe,H`(mrl$I(TC4,5f$b@5Ze5bFbm#'4(92lFZ&Bf5%i#DNVF
CaF`aV%Acf88THqK1bq"R0B9-l*MR8r@akHJ%I"T!'$2MJH#c1GjQeApYqMiaJ)2
PA`#[BlhlSDTbB4#GRE+c0b'qB-(hC,@&qS!Q3P@VZ+l&"1ATfPiCKI4h"'($BX-
GB)r)0#hq!L[MXpJj1"UR8fA5*1F-jUfr[&Ed+MF9c(XS-TqicQqhdJ+%IMD56c@
%$D"0Q"L&)SJVkhElfiU"F#qdYi'kLF'#AY)+$-qAX%#RUHh[@pPLF)@K+fj)Q*f
h8pFS-k[$CD*2C$bXJFFi3SSJpT&"[M(#UV6'`jQpA6+51!b%+Bmiqj,chPV)kLC
KH!f9rEi[k*+*Tmmi2@+K8rr4dNR#q8G*Grfq*fI01*`Bd&LhXXTbA)j1`3[C2S(
D*K"XiTqUCciQ)kHKH[qE8TqUlH#M1mJ+"TcI,mLH`SIh#M##'i)[-6l)'[e%,5"
bi82p&L))HEA2rjRQpeZ$HV@a9)Bkb-S5hfJ"qSqCSEMZMB0I5Ah-(I@S*#")0Hc
DK`PYSiqQC0m*FibjbG93@9Lp'[QhpS4THZ%U-6GeTp"+N!$9CRRQ%3l"G6*mL2f
fPj)*1UfGp"2qJch`',$DpQKM5'NaM[`L+YZ9E1mJmJZGZk,Y!IIV8F@eCXFLfB-
P*cIpr&04%Bl+E@XD(BY&-%&p08*#d-R9NhL!kAb[I3Km*i"K,-&Zhq!`14qpk!h
khqaUC0M@md)U#0lNLIlqd,3[9F[Fpk#l'Aq-%a#p@aD@+MBCDLB'f!'TU3b'Mh#
4XN5JcL4D*$Z9#QIHhVG&8$lmc`jQ!-!HFHfR6"DNq(UA03C%VN$9dJ+@+&Km[!Y
peM2M0MC*fZLIiY2N9TYrKiBj$B`C&GCi[5-N4EEQ$+%[01(RM2'@BL$TRh2-+,"
Pl5SE3r"Fa0BYA5@6P5FMh!Q%YV)(jcrQ!REQ$1e$+D'498+0FHP5,E$PC-+c6d1
86aaS8dXkImPQJ4V+E@')V#%p1H0'bfPZPl-1S2fq(3)Q-c*AGNdqf&e0&FV3@S!
CCH21qU6YN!$)#NIdU2V-"M8%q"0)f2c!!c-!j$qV+d(iC-lIZZ`[(I9lSKPPhD5
F5Pe@YC[+mbCk+U*Q*B`&'9rGpMKciVQ-h1%Tep9&@2r`L)8LM@khDG%Um(i1VQ`
GK5E%dNTAMdV"Z)9eb5SAFJ*&4A,0!PeKhcTFjG@DLGS1``hkU+`Q8GI9Lf+-,CR
GXGQkdM4SG#ZPc"H%ZV9)L%GCA`+%l49VMhehpDTmSdk0RF89JIb8Hd,FhKY%,k1
`dQqAfX[A@JJ'ZYQ@kd(,,RDr"p-lZRVE0#[(p6a!$ERi(ac5SX%SM5TM(6NXrkm
M`0+lB`fS0+KYVC''Q-5HT!$$KY0YY*HQfq*,4eIAP#D#eH3$dR'*[h*9YhMVc$S
l31*V0BZSkNM3X`YX!l0RB'*(KQH@h&5Z9#-d$#eEm,E$4fe`A)HD3V1-J6AN54V
[1)'p2(ClV-"&)J84F[(1Q&dhc@'Q@(25e!PEeUj)ZR@@#SDqI'H)3&fk`EGJhbN
2)qDE-K!Nj24H3JJa-ceEb3YBT4hT0e[Jq`T*cS9S&3V"lj!!#YLE(RXcQD5HZqj
jl[RS)H6"Q0aAB2+Y6&lMll2h9V&mi8ITfq@HlrPRqpT!ajEbh$b9i'@$SI`jb2P
MeZ-c#9'K5RK[rbhf+%S"1D)J,KD'CEe[KZR8(6rJLj5FUeZY*[LjJ[cXEL2e12+
ABIm11qDdpi*%IaGD&lQ)`iDmP)[h'00,Ee*l[b#U@mIepM-eB@TA1dGBplm2YQT
8'h48AZRIBGJV-N%@G`58T(Y8mUrE#ifcc+DYSbpN4)il0`"AV42DkefT#h!p4lc
e!!($cDAbDe"G9T&kLj!!Z@bf[0[F0*@qH1Y*i+r[)jE,dBJJC@PCh0-d"PS(i%-
#ql+R6hfrl92-2Flp(31G1emBZE$lf2`&ELK-J+BM,M4U4mi%RrI'Y6Sc%"""VVI
,)4pAZjMChA2KKalr+-H-m0`#iJ1DiD5Z(eNe(mC`,Gfp!RQ51c([X$hESFGrq%h
mPG4PD$XrPpZ$r4YQ@!KJ&[kpUIpcbCjpNT!!-q5,Ad5R`'&'$B"GU'HF8J8`iD0
hT3i`0"EFcaa*9(5$f)a5+jDqhXrXVq5'dJ5'm!%k6MHTREMl$iPm5BkJD$$hU('
IJCUF`%%22"NP[Z#iR%,[RJ0pEKQN@BJLJP!l$6Z)0cEM0`MN&0mJ)[!PEF'q4Hc
hq(RkR+KcRiY0M8%H8YdLf(pekU&ZDb-(ckl$ph(5NfTXVhjUj21ZDml9+$1rbm!
DJ6*E#YKRUphq)jF3E9[d'9"'!02!MP%)`Pj8cFa`*$qF'0!EQqI3l`PY6K0AlNF
i@&B'acfPL*+kp3X0h,lMLmrr-59KMV[mch[RLAf&i,Kkhm%%Td`G-@mFH+fSkR,
c9J`GblaF5`if3Up-%p$Y$*b*UChjF0!0CQ')JRKKR%"[XPF%-AAPjAZ&kfqfXjC
CaeSX9UBDPr!c""j1de1UlBA$HdjKa#q0,[XkMk5P3b#I!ZhhiqS)+3AIkT!!UAj
-@Aid#`XDP06amNP4B2ZNMmHUe$*@6c!D-KEi0jE$I"8[D&*k)!#Qe55+Gr+*G@0
dbpmmf4AmCSi*-cR'ad&$p3YI)k-f4@Am[*PbPVp08!PXXV60,0J"3@qia9JPlBf
Iaa#3!#Yf"6eamlki+h$q0d1!V&'N6H-Zf9(DA"PmbR'5rm$C+$kc`GTj!+KfTMa
aQ"NFf#Sl+UA!K)9K`#&IfADa&[dd`r)&#kBeCV8T*b#bBSd4*[+XhU-3!9&rf3`
U!I&jcAHBBTk6a2f)0drNh68i#m`AZXR*1[0%2IIC$[AZaJf'#[QNZYj$+M'qKd2
1qf2"''+*qec,!kH*P**h594#kPaJ,GdhV(p$l6f`q4D-d2$cd!,b(mYN%'K%V)P
eqM+DSVDZhYH5"!!BGIG(HmbBX0!4Ah2MXV)['V-FBXRXEK4m9V&5f$R)JP-a%0-
A#`f#YF`"9G%fe36C*,!&V''E,3#RP)2`CF3GERlfICQb1#k5L69Il5GRe`,rq9L
*GL5NM-Xm"AmY@[QMTM%C2@KR'@'C1&V%EC(j6&rGeZ%p1E9e(GEZb3"Ym$b-PHA
![dh,DljI40eB$Dhf#m+L2S0B%"XTS@Y33Xc-l8$)E(pV`ZZ[8-NVU&!#,E5ZrAj
i[*0i0`TAR@I@K3fq#P-TH'c31GK#mrY2+f4C2U%k@992pRC[BC9ZQj8(Qaff3'!
6C@ScUThcq!LX243pI#0T)fTeU6q"4(i[GTCQ-q5&8%8G9qAZ``cYF11f`XTRXVk
CCb!1feUK[L$50hSN'4Pj%Fk)KjlMk&UIJrJ646T4ZD%T@D"Zp-9[KQT`iIbYLV8
iE@peQa$m+'$ZHr1bD8`)c2Mi%,fr)aA"j4k6")TLhaGli+$a89`e*1r[6`UV2B6
eY4rD2PlpC)*AlEaVL!19Vq&dkG&Z-6KUUI&dBK5ej6Z0"LHGJdC2K&),([(hk5q
G*m2MPE"G`"e*APl'`ArA(3AiT*&KjpRP6[0bK@F%PjX$kUPTVl**llRF9eJ*216
H@UTRM+ZM$N)a'DmR8%8T$N",AdN!(D$fLFaUI1[#kLY,c46&+XBFRpZ@BESlkVl
c$Rc&`"rI8@&AbFeSI+TPkPXM&DbpQ+m[G(91%VmX%5RSC38VITV03l)qN5Q(mEa
Y'e#(88I6@j!!b!iYJJdQc!PB!'!U2b0-*Icd)NA+N!$CY+[%fI$FM2KlQK!J2XG
jUTlX8K6+X2Y()aHd9d8S$8,SYeY8h10Ldjpk#5FrrGjB#eSm&`ejJ,SV44Nq!&0
e[(f%Yq!+U-8,d$YH'aZ0T#-Y(T[ASHA3qaBRbNUXp(cF*0'ZRfH#r'mNk"X'RMq
dFEL0e%d2fNAc`HEGl1B,p(G!Q0R8VcCr(malY!0r*G#[)qAK9h',-LhHMCi1VLK
Fh[Ar`1D-iCYCfp63FmfGleqB5DZL$QE)FiJ'"0l1h-1BU)0[U03R@Tf%S(JZqi'
K&$U+T4l6&9)Rji$j1K)'C[TNUT1d$'F2!*-4dAqhhiGq&["eeYEQk6E-K`[Z,51
BC'q*fB@R3-5@4q$+QKi'Y5(R'*9arH(24rI#@@SM*MMm#[pECqPN4JLN[TaJ'AB
aFZmPd&0#$P-rD(*Z!NMKp[*m(c(`ECN)b0A6R3[ICdCqk5iV@`Z)b+Ajqfa5KP'
hKDj(,5bfKZH%D1-@4c@pq$Z@$SEHdqjp0A%kfUqb,-)ff-&j&dI&dB69N!"b"e,
9!Q51GbFY'RD"Vi*JAG,Z6'h&9Jj@FbD%iA(#G0mJ4q("hKI(KJD*80pMaVFEPQH
IbkZX"bl'(4+l,r46q#HpPCDj8'm*QX!1U((%cJcV[eI*rb@bMq*A"[*GR$RD0E@
8X&,h*3kPk!#mL89X,[jT0k3AiN,NC(biD"R`hE[h3e6"e`qp[a"03Re-KCk,V3I
Jc!0FB((kq,#&pV4a)P5BZq2!-GFI5lB`kc3NZ(jPVkl'0RXKCBK4TeCh%jeTJ$q
VYL@[TAi-Q@2IEhqKM54"$,!dpbGI+Yhe#IkfUdr2pZdlQB$Kih)3ZhX(5a1Z@S6
!`6&!R!GXCB9+VmMr[F0qE[!ZKb&ZD"GHDErlGQpp@1`B4V%1RYJYKY-98!'dTb%
fe$`pX8Q!#DQi%RMpeeN,ZiiSCLLSk(Mk!ZP9*hXIAEQ&-L'l)fFBrb[fbM"'mCR
(AFU3!$42D$cE#!cMQ#6T%&bhTP4SeA-cJjaUS1QbjH5I+a1aQ0[FN4Smj#"Qmf(
SrarmQipdKkMa*F'@Z-bRU[dJ3ekl+bA[Q$`,%Smhl9GSQhi$*U$+VMr)F1q`d#0
28rra99$9P+,B!@$ZD2K6mC`TRMp(rc$EZ63I4kj(U`K5qp1hRakMA3&`89AB-mB
EL!c)*-h!dbj!NASJ[iAiq,8%j!dm-kiN)MakT4mqYQ&Q&[DJK(l,I[@(FB"lDZG
rm[VjNB(I4kAD(F(MTVcNV9Qa!6Pi4I,%lm`GE-N+5'(rIZh`V6'VS*4c0J"SpXK
l4!0K+-`mKqZ#+$G@UB0'+jfUDKB[q9K[j$j+*!1kIe[Q#1'D,'JheN&i&SAGZ`1
9Cd[`l[PijT4`#%%%F+daPH`H92RJ-8!LH2GP3YhAPhX+q@5BC6!90M-FD`NbpQZ
K6L`%c'lmMVYf@l$AeKFLJ8ZUiT!!#58S@Q8ID26,a9q9efN(j#3ZApDIheJ$ma5
qJS+[9$,'GR#dJZ9(Y,q-9@m-plLA"0+iLk5MdD#'I)ffJ[$XINhZJj0@"h#Pq,1
%TBB(J#'-'"hchV-IZ5rdZRBJKFm#3MDZdQ&plP#XU'fNr`,3&%EG,H-Z*d!'*Q)
QHrqbMFACfVHZqJR')ahSAMmLh*I*dhZb51TPCTKpP$BA&P8&i&p$HE*GJX)U(hI
iF0k'R%Xp0cqf`Zf&ZL*#F"e564$Nhm3F!irE`Y'`&&+H`Z!(92BqTjaQ%*al&#%
r@[,a&fmpTXTSC4&EALBbUTB(DH(B$kEa13HFk`kUCbV9k4q)%0&e)H04iiIhjKr
LY2(fr[@ZdAHRccqQ#6(M0he9)S3[#dY9[5r`Mf1TU%qLFh54b!9J$k&#aJaZpI"
YI!Ya-KBK2iH@Jd81QKB$aIXTDQ"MKQM50*YVDQeD&MZca,RRZ0a`TSA8iZJi2Nc
CePDiA%mYjQ'-+#-Pf9c5'Rk94VLIC81lL4!qq`c)8'Il*ciMfq,[dG%jiiA[j`H
VjJqMU1q&TF+KPmXkF$cda5abaJYrFm#3!1[PlGENb@j9FPRiMHZl[0FBB(M+2#D
I)Ap%m,c&Je#3!)RL8*ri9da6HKV20-'2ZH)*abaaT+YY,UTGP&pSPFL%B61*EDH
qiEVqD0UQ0$q[N!$lqAf"'T)hTqLCYE1%p!Z[4J'Skddc8@a1m[Qf-T+*HqRf4iX
dbHfbij&Aj`&)[1dd6bRcT2maq8Ij$[l3E-#%K%[*95X[dFZ"'d1)EHFc$XVIjAC
Zkpq&ZCB5lmVPHPV'!Tba8i%kXdUQB@@ZR3hpa)Ha1j,c4403mJEDSXa9ar!eaPa
mrM'-!+9m0M9)#4fHc"V24k[A9k5VJM90mh)!kbM'-FhSD"N"8B$L`5ee"QAE@A3
Gc'3[NeRfPmVc1@)#hYZ5hrU42@jr%1A1,E@lIBYd1%hj6,LJ"q'hZ#%Ha2Ul%fF
h[U(D"hYCX)+(Zl(+IeJr(#QNJ(j)$@@r23`)LclJ'$F65"F8f9l0#I(B6%BVAI4
ZYS#*%BY+a1lfE9ZM6*p3jUCFG!VGKPlU1XiCA5cbb-Y%Z![CMRKKpb%MNp-E+m9
ZhQ&blZp%dpcDfY[aTlL`1N@5,miN-Zp$[5@&%52dD%qj&SjA8ADL(ZFfd@GlEX!
CZd@Y2-jm"XXSC30G(cqpSeXdAm+'4p,Q[Q@)dYDiDL0,J!`!XA2@a%HaCa2U-CK
HHVANVqUef2KQQ`2'00*bAFbk[UM2#4R5R3RM+Pepq+ZjNca8EAeeQZZHj1-UALQ
KbZ&TQ+0CLdDa4Km&YVb(H!5d%GaJQJm+if+$[j)KXF"UYH,65%Fq`6*86lU3!0m
2[dT6P9KSGTE%b(iIcbQhMRf$UAi*`6crNk(hQYie6Z"$ZJi1Vl94H4BG[he401$
AQ%ADdTk9I)KEH!U$4NTP$BUbL9I22B+KHJPPTKmL&5V1Q3I%UV1C$r6hH[A3!M`
f**lYi0SmPBCDSU%@'TKKem'#-"eBSBQ6JZ0f`-*+62PpkqIm*4V[)pV)malbVmJ
m,LVBVUkLd(*j(F)TY%d3SeCR`QEP4mLa0Ud$f)J*mH@XNecR&#AIGekAe#9j$[K
SJj6rC(cGl9(%FiP6Z$NUMY`FV+BVp#CQj-'qaiPQ15Thl4mH&(jQXc5+*lNXh42
DdZr69G3c$ie2+S3iY1I@pKfqBcPP3NDTjNG+#R@$cCUd1G@K)rAi[jmGjK%pfIH
0@a+Y4j4FGck$T&bbPk`+QqlYShcPQAFhCcqbT(RZ4QKm3rZ9&[IK8&UD"bUMb5f
`(qfkBBBFfQhJfC`A[Q@kkTKG*R[ka%r'PZIJ1EZMIP)##UTNd-Lml%YqM0C[Y5Y
`h3JcQD0D1(&e9R[`"+!S56%cRaGkL!l,hS3mKI8Zk,2F$@!ZCm$[Se@#m+Dj2k'
9Fm`F44%FA+#dpX6[!5*`pR8NbcY"%F3TQ(F9Zj&rLRFPhKESE%rJ1eHQ'rVCm9A
V`!ih1cIR)21HbUiN5bPFEDe!+%4$%i9G8C%$9Q`PRQ5UV4Ac[VPASIa58a-`--3
qiZ22,XaK4P`-3q!L(Ie1ha3FTZYZ39G5A+jmeTa@1#bUSUkX*J9@CVi62DT$P5*
bZISkk4`69"eEeM9aR4![PlNZH0#C%l50dSa9RY'R@4J'Lqh+UR6p0fl0#UK4Q&E
aPQ9pjm5cM0'B4e9CX-V8*R2`2-$2i`L6P#(6T6-48Ahq01f($f)*-RrkDIp`GQm
%F6cFCakFY'X8!!E-iHSjam[fGJ(e2GdKf!hDZip$Z*UT30%p(J#))Xf4*eld'pG
HD&"+dV6bRp"$cQFhDa@%[RH-'&fK9ETGr[$HA[+8$JSGDTAQ42mlU0ZRVZ5-kkB
lQG4AQF%hEd(j[3lF@+mbeEGLK$eABBfZM1kSLm+LqIJ0XVN&d[,mCdH-B0rm5Ed
bd+[aQYFjdb09ZQH04!dCG#GEcS(X&ZUk54hdaEV!AM)A*eHm5NUa64l-R5@XXRZ
%5#PEpAJD"``Y$Zr3EHMN)fabm4`KF)1Ji'aQA-V1f)AbP,Z@el3GN!"$4KqP'*S
ca!&a+fF+TK+9qC'V+b1Cd`X@A%@ieKeB939PIFbDLLjLM$FSPb%VYMM%YRA6JNh
2E9&eh3TpF(LMp,b&2L-`9S6RrfHbY`HG)HXakB)QGbC,iZUSNhXaI5JU2Yab@8D
UR[aRj@D'RI(lM)UNCd#A9c8e,TG$qbVXD1`lShr!KR9a0m5j&PpMK4+BIK`!JL@
51F$DPGY-*[kRB-V*2R`Q`2p[hm%G0T8f#bbh88$$AIcMLHT'N!$8*8mMq#FEQV3
G*jTm6ll-VLbX"01Em*CQ2cel`@b+G8ER+Lq5#pcB2F%!dJp&0RlfA"'L"8GN-a3
--&4%3QeYllJB@VC-a%-S9YaNQH9-5r*#kd1ff4YiQ0-Yj*jCA0$P+AN,PJK9E)m
YdlI"#MPXN4G,rX2MLbH4FV"d)Qc[[kS5%*!!CD!05bPY21YE&EYq,K'QAjb6EP!
Z'6cj151ff!QrFpXZc!)CFmTV1qT"&[e%C#SAfZB)A)+(-8h6#d1fILeb(15%fFK
RSVj(JfHSl+0D8YC&#G5f2ELVVlJ@,H'V@&882YhH1C1(0GGa3dQel+96+eDBQ(i
X8#iUKf-P*ZZ[p"piff'6ZBD-D2"*A4%`L*I@c2e,l`ZI3F"#bZ4Qb(QB@T*ZcB)
V(IH"U@kGh1BMi$HNl[iNqBGhK"DY!i3NX0BG3'S&"9E,Ic8@qYhP+D[[NG8CBVq
FQ5D9(b[3rUGRIYPQG"8bjE58%T8(Ei`,k`!!MA-8i(K1)VP9i6p9Xhp[-MAB'[Y
ea2q9cDBlE`G6C9q+Lpi4)YBPFYYdli,hj)T5-hVP1)`9$h!JN`V-Kj@)[3AST"j
pqEY!0ERYk&-M2A'SjB!cYcL,P#kYBL!T[PXr1%d[)h%P%E#258CFrGLNZNQB8m(
a698$ElG%#eQ3!![a&lJ!TXrAP"&,kQ+%`r9KT3hcX9A-6R0aTPm`XC(N1hQpC0e
B0Fi0aMY8K!Z@'$(50fm*+@J&alqU*#M`X3k'p1F*UhXZbkDhLck853md%XF+J@h
N0ca6jj@)M%LbS1DTMUJ6eGqP++54LR(eD8`[)VLqLha&fGjZL')ZVq3q[k80f"I
4PXQaGISb6T@J@9,@%0(2m)40KNjPXe%RT5'DFIZ9@Xf)iHPUU"m-Er[[d8'EB2'
[83PEDk%$V`qIm9-pc6Ujqif*(5K#Hkf`kPj*BUclj15IeChKRN!'@`(X03qJ@q9
+"`HRJS@BEFjrKj!!DVhGjCH2U!`FJG*RKI)%(($C"X!FIpfh11-ii$m-@UP8PbZ
K18flMkm*BDe9l`2-RASGcGM8"*5,Sff(KE1%`l3"0%i8l`6b**pTISET5U,H3DP
Rcke5Z+D,p[,@[Lr80Z9ap2`UlVFUHUEKk1$)mKF`[Jr"J"XLP59IdHX'-!$4C,8
YCER,Nk6R`"Z(D1kcSC2XPpNbkJ-(+Tfrpq(cLLShiVkIVV%6"am59#mc8FbFR(J
BUL6S!324Y@--U%(NlSMUA(jh-#9(e&!2bUq(qFEl&+NSd&-iJd$d0b-Z&iG0a4p
XXd4,q%Yr2%`(G%Y*9%8KRN'3!0erQEL!@fl2I#E0SV%-F*cEbL)3rDkh(EIR'mR
*6`PhfFr-4!faUhNG#J4UmQ[B3@FjaX4'bJTkk3Nc0[5BeTjj-82D$)@Rc,fJ1Gj
P2H9ekarDP@+EJ9BV&i3pkAPP453L#LmT2S)VCR*J12aH5GZ,RIVUYb'3!*c&Ca-
*jD5AVl@I2"rcR`Q"ZN21H8HjejKre[mZQ*Ym@MH"F"E0fdf`R[Q6))&,+)YLR"0
Xi+92PY*D&20HQre3T@TeZYV[FpZVY)iHjVbAemcR4dI`4he82Mk'VlJdCQ)@AG"
*FUrd3MLY1XkHP@21kkEYYFY9dNXN1j!![Jq"f(-5,3L))!8h"%BPc!2mebJ,[pV
rPqMHEGRe&+Z2,+EI"pXbGPYX"iT1&NJ5Ia3PLbbr6A95VHpeNFI3&$VR,XE)RFf
%)f2H((89)KmQ1r%2JE6aKMU(aIr1'j!!Mp6QbVI)ZeGBmA+ra[*iQe0RmRKCb@F
PBKlX!Gd1Aei5*`+G`&2A$J1"b%*f9%1Pa'd-FCp4Km[Hf,lJc2Q4QT`#Gp2F0KX
ree"1V5`AdF%[5@rhjSG"QY-Y"Z!jRBF-9B"rMGI9d-XbYpM2m`FH6J1NaTA39G'
&C9h*m!rBi'IdVN)U*-+2bqFhRd[jSba![MMQKMPGG[0T2QLk&mS68X#QR,6imhk
SDU%bie6BLVUk#JbKcrI(ebLFK6U%JUI&FG6&HFQdh98!YYh%hd5THFrqP!-er%F
DX5@a"QeVN!!K"6"`[[@TX69hTbDa4'N)K-fZ4XA+FE*a["EL'kG2R6`(kU&50$,
0FLbE[N6iq$%8&9LUV!QAZVDbbUDaA@iXQA[MQK(dKUQFhQNJ+EjJS"@NK81%dqC
+j!(5(d[,*-QH`1P)NCUR-L&+'V@*E`M,e4dHaA4Lrq,pAJD,YV%LcG+eTTS2K)T
F+qqB6XpAGJJmQ8R'NR[[SH$,,Y$FlAIAjM`V&9cqbp,e9EmqfdGSaC6'c9,jHTT
bUV9ElD8`*EK)l(1R2VH6#0X%!&NceG"@!h,IYS[F8GjMP@L@LUD9BMD(#8hkmHp
r-Cr0[!Z)f"3#Sc##H@HAhl[XT8#9Fa@$EH*C5%EjK$)Q,-Q,l`&Sfap[(Vj5-$6
Te$a%Lh#e)2df!YBJ(4HCR[&0H[3d+'52`8dQ6R4im&#9(H&-NSVP*&2[[FU-1cN
Lq``iYpcVqD6DGqSY4P+K#iSTYFbK(rk$P0-LDTlXmY)rFkmpTJ8jNfNjYULl#dF
9,MkFqRHfkJRREiCf-RBHLf`cHJ(*IdrI%50eR4QG)iTR(3+d,I'4!#`Kb2Z(2BV
V0F1*@Dp5L4iGF@A2mq8[Ni-TlhcQaPCQHhCfS[J1F52FSeGKX6V0hJDJS`hF`TY
PdHaVBXP$Q0X3QBKQbA@4EANb9aL)+aaM%(rY$GN+,CV3SPVbm[l&'3CK5#Z0T3V
Zh`0[4RJUp93EjPG#CeIbMdP15Id,URcAkZ%M3ibNZH"KMDr@SK,X%-hA3Y*R(IV
dDP5'V)*L''U3!"&YK[kbm%rGhYb)PbSGL9R"#TqrCXJTb+U&T@YQ0aY8+19dL(c
((J'rR"(*3TV5X'BcFZc4ErVdJG+U@'lES@MU!NdZCCK9!FQ%cA',lE5U1kqKFVj
a18ekQKrZCI$d"dKV8CfiSflXL)LV8m5TACe5K)(X'KJ(MX@)V4#bLFDk&S44#Vi
9R,k[GQMS3dp+pJDL!NacXJ9,!-p%JASkYc5R08He6@C!AA!8(Ul#3$!YCXTibY#
4`YP*((00IVqSKJ%)EN"4q&[Ip#qKG'ETV3%!S)b@`+a-$mN%$DF1`jXr,SpUbL[
9XH3"F2r0fmhEQ&@+)FIKYi-KDM(0QIF5(a3dGEQQbE[FlGYHfb'PYFcjSURZR5B
(KSB[l(%R!G$H`N0jJ381Z#`Br*!!JSje4LjG5")[cBDc2j(r`X5a#PGE!$E&3[c
aVBSP[$&hhE[h'dYjh!Rp0T3RG40')N*@bkh*F(&&[Xr*Y"PHarmXccD&'KlL`+4
r"9MP0RRp#bah3LH5c%daZP&-!!Z6L%$8UK@ckkaJXR6aJkll@R!He8%YV)BAcm@
66`QphGp%K4AVchi5YYraG)c(bmpUb,8@ZH[C9Bb`Q1N`UfeHSfJ&PDcE,LCZ3+k
hNeJS(p'LZb(+EfjI58"P#6cE6lXJc6!aYQ1#mmLKaHM,Pq@Bq2Dej1AN&XqCk"(
"i0STT!dH)!llR8e,6ElENNP#@L[G@YCbeU1CG-)6kSXC[mJjMNh6+&8ClE%Hfb"
4Xl*L0ke&edUS2M+6&SFfVkiCrm(iiFemE1aBAC(0Gfmb2*rJ*D5K#DLd0kkFk3k
IV8'U'R*G6aQYd'0H8l1+AbH1`SBKf*K$$eKfLlA-TlQPDQ%kh,I%#+[L$hk@QU'
XX`SR0!@cIV%!l9,-DDfqP1&T5"hNK11B%'6!m0-qc#%FP%N&L[km8Sq@`(l"[X1
#ddZrc+H9jhS1RT!!"URFX!PPVYkj,)&X4cqdVY9J+,EGMlFJ8QB%i-kU#,Kh,(e
VE[FP136ETfURLR0#fFECXi`H3RA1TbrXSa$M@[B)Gp$%%lj-'d8i!T6rQ-b!VUU
@a&Nj41EGYZiIMirc'%a*%5f$)S)NFQrANa4kN!$'4i,Jd-JVEY-TU"9pEIUQ8eq
jc[[6(A+H$h@8pkY1'3ek'68pBQ,6KF1pE"RSlj4Yfpl#[MHSE%3TQh["lX@Xr'4
a(aJB(c&I*&PPSp2iNq8PTXG$3e+GBQI'F`VVmK8rNP*h9Z6mfVQqQ696%PK""*H
6-`NkGqLX+9pN*qQBhSXjp1J!iCXTi(3%FHR9D8fF32%NM-jPiB5Q'C*$%#4c&2%
2Q$@DfB4Rhl63'4KK"EIj0dleDm`"CLJbjl6*b[HhNV*4Z'DIlmI4@Ih!Lp["-R`
"IP2epQEHID+)%KmD$-#rcaUKhGY[&2*IUNBY[2"I&"fT2NUaIYDLYN2%a!d'fL6
Bh*!!rJ@20`UN%4`8lRiq+5GLpaGQ,lT3N!$aT0C-lfjZI[+8jlL3!0pRJ'LSHCd
`#9RUq6cF0U'-GJJBp51k-"`5QlN2&(0"3&)C*Qr2!jf8[!dbMfJ[b2@ZpH$!jr0
l)DK&jX"MF4*SFr"G5A%d,hc&k44"r0$!R[HdHN3VNC-TdXfDYSjQ$*-IpU$3G2(
%V+C9'Qld8EB'2TpB`,A'MZ9PhbTK2Rj2LCT'`pLHX3NcLrC1N!!KPUfHcA-kr+b
9f*[8rREPDIMIh%$UI%b1e'%rEP4pPRDI1eRr*maXD,UqNQeip-N5+PcNM"mAUci
rGL'4XrVB"FDLKQ!lQqP6pURf6&dmck9"&[`D"!4acX`X86fU&aX"G#EYbBI`fm!
qERMqL12,dcqM'LGip')X0(MkeN2DrmSP*l+43cpHK%(jQLjCI%iMJqe3UZeUQ[p
EmXKj1e"ijXThM$Rqk4*QemCH1[0LmplPC1Gd)aap-#mVKk'G*pP(m`Va5h!r2pf
jalBaj@YYXMHa@[i`,*%l`qdfEYKNa-T[iA#RCC%NPUT,&fep!5pX(Gh&3A`RS%Q
Rj36C("!X-%M1)pkHIi`!D%hhSEpZ9$cJ&eY%NEV5ENIILdXPAR@EP%qHlMdj&QT
0T%`B$[@+e8[#Mk,deVhC2'K0e@NTrRBjqp&%kb`dc8F)JHH#"&9deBB$Z+Bh!DG
$#[3Y@fq$[Cm[0H0KlREr0`hIX*TXlY#b#&9CNT113*4$C6KpA!q%V,Z6J+2)dl&
H&H,HJJbAZMMNBSD)'D+m[4[Mi1$YLI`Z41kk%'Mk@[P-B*Vf6(I1D4*6C6#$cI5
#Xh+Y3"6&4RA(E6U'N9P1)2"f03[0RVF9kmd`-V`!Grlr%h9hGZZRm8+Bh"ff@23
d+3K*9%Qp4Mm%4JYND&!V$dS'lDGRAQ",rD#50JRZ8,0T)A$#Ei4BLTLH$K,NY%G
@FYeC3AZ5(p)GYm11#1FEIekKqm6HC#Kb"9FYVBrC5BP%mL26F11AKqRp&b`l)*0
Cj%l[XrSEP*eYAfIX!(%Z[H-R0T0bE4HVm!M3jQVe3bQEiSYE1,XRbB&ZMJD2*m6
"$I(!m"Ek#albYBd2-&,jGeHA3N9Ak@eJ5S@HlpLq2#KF!Fk[k$cJGD8"e"5MI,b
IiI5NRX(aQleUGFU5NU-[a"j0Lh9+*d&1r"IEQ)L8lRd[`P"9#&&%ep+J0VjcN!!
F8!LhVMZcm9bJdJpm')QTUD$aBh&4(CJ5R+Q2Lab'M8SH'N,@JXkX*%PFi&i8SkK
"0b@LkkP#"G1*dierU9XR%EqRRYZ!%+ESMFrENe`'IRfk-N#2ihED8LprmiR`)9%
1bYq[4`[Z*4a05BNB[YcV&-aLjR&)'JPC3)[3MF0`(PP9XJa1mF5!TRmQ(GS%9YQ
Xb1jlj"51r%Kl@+LC4e')S&,+ZbG9L$YI2iaiN!$iHG$404aKpCAS`hPZa1q+ZPe
EU&9YTh-FKdfi5#BX(E1,K"Mf[SjrkHI(Xi"M"[pdeA6p)eZ--+a+0MPGhk"ZkHB
dj'pjXVV1XP!K)YAlSFGJ44M(aq9+&4j`cTS2$AXlZ'"8D6m(f5lMcF!bES6*&AU
D$0hmZabZSpM1VP#V(3icLFSN1Ia!8D&0kVB-S*'@HKB+`5,d$mP(*T*V@J(DjJ3
13+eHA%E98"`5rI!859h6Y"DML"TGL[)RbcU9KjC*Rd`1VeRPc*ZDG2`iemQ&i"U
YrMK,'SNH1L5M1IFZlY`MJk"[3UBNXRj!0'p'rX3a*al'69caLqp193[eP,[TD1Z
B+%9XR8q6F%Cp$&D-0l!6Zk66rJLj*SYlHGJ5`BNR0l)rFKMZ5m%P`8[[)ef2Q4J
j@TBZNFkf9lDSm$4GRZ+aCDpXMEc,'65P,[2c[61p'bE#KXDN*B[N0Jc-!S)-%[b
CAQ-aDV6MU&CAI1[P+"b3!,SG41V"DYd+QLl#2crRdF$TQ!hYkd)c,!Y#ZmmpJpT
5hK+CZaV5(VkRJjLrEAN&k%j!VBZ,(,Vm[VpTS(fer`46)4aUUQBS!akFN!!)TrL
D#Ilb1Y35G)0`G+L)DiM2k%hZ&LHGDI(VS5(jAe[Y&I3p-(S[0pm+E!3ZM`''hD)
l+@F@1'k#Z#&%eCRcL1ThX#I"8$NYjjmXjBjNZGJKHQElrFEP1BAFPCph!RTQ[H`
Bk-hUPPL9$QVm28$f*rR"Zjl)Y3N,YUpQ39fp@Q2Ib1HHH2,SMJ8pX!i+(5c6($[
cQ*)Rcqq&)#-Z-Z5TQr5R@4h4VklFMj4GlZ+N4jDY8aZFckmHc0%8!@E)5(XpL92
UY6@(JiX#R`JGL@0[k(T4ULI08[2FX@6h"qhAK!K5F6K6q4+%CbLHJII$B4[GDPd
HTmHdK$Fi0caXEZ'CQJ8@IG(*-1b5b+`f,V%Mafi'L@$Rl'0)f8U'QH9,H4Sd$6%
A6q!#aBJaMQ3"#r)aITlIJkH%dr3&ie&(0E%Frl1mcd4j)efZb)J(3RVG$5()*Er
YqJ(C3im,9CC2Be9d&6Sc&CrbIQ6M1I3,*[YjLhNG%![!kiQ8Z)5Q`Ph#!bRN@0q
hFM&q[pj99"V9UH+VE!U,$`!)+5RC9&62"2Fl[Y-SpJU[X9J-UiKr[4R$pFQGb(J
8EHPY@[!EUTlNf5j@UjRNR@"XTP$"1F#B&eSiK`8hj5r+CYKI[S(f)Q4V@,JJrbh
c"6LCC6m[C*iiRiIYT`E4NKAT8I1CDm*JM8Zc&e58kf[3rX+9p&hI`N`mJ@aN[Kr
"4(Z53R(q5%i6K'iVNj!!6Spc4B690TUfl[Fhm*m"N!!92chSN5diFZ"6,E(2`4d
jP4DaB41614a*#jDR&k['2QX5frda5bBjJ6RDcKaY#m&6UKkRb4YEK04j$C5'#Q!
"$[*L4f*[e6h"e*[TlAUR@*deRDeQTi%F+eFV9r`'!!KA[[UcCAVTGH#D"Z8,mHM
i3rZ,Sl%qJ%'K'PDEVVqE0C9B6AVP%Dmfe81+CT!!F@)fLbY@ENrPZB,5EC!!fE[
3&`,Qd5`j-5EaDXBEmpECfLV&45"ANkGF0qkG)P`S,Cj6YXkr2CMZfCkPlCG83V5
Ca5KJUJ1RjE&i9J#Tdp$9FDMF9$MTF+U0j)P%R38!#J$ZAPNqCRJ4NK#QS8,8*1'
*e(1mEjXqpDA+@df`bBbjlcP`!C8P*1"APS,YSTmafR!a9J8$'R[FPJ(pY9XrM&A
1`LmXV)XKJU,cJU,ADY(6cM6Q+E2T1FAd#MIV6%6600Z-#B,k$dpcU#[P93lNYc"
%)I[qd!a(d$pm20$GNM,,3qfpkq"mGr%,@8MRP)'IB+d)EPNf-m#@RU)[Uk[02m5
XYaF&q,T3!hdL)rLY2SXqk!DDa1MJ!Kc3U,(*H1DHr5@"k"[*A$%H0(#rU%&S6f)
$kr!C)MaX6'Fd1U,E3'FXa+1(Ta2*YTM#Pr`S4@Jl&ceeFe5Sh1(D2keY#`S53R"
aAMraHIPQqH9J6a2")&mJHJG`i-X#dSF"Jj!!+@FGl@bIdQI'Kl-$AZMa0Z`5b*[
lba4#2!Q6k@+65SFi1-SRB0RJ'"em(rH%IUT%Ri$mM(8T4bJ"%MEU9``PljU2i2G
d!4p@!U)IdmlG,rR'dMCiXT`@6S492QeI2A&GNGa!`)!r541QZPf!m[XEXE9jd8h
,BTL59+C9#VaAE"CIq8F9UPG"*lG@VA6p!Y+IJ*[r9!$dfCDcF#pEAPAJR3cmN!!
Em$q)+Q&EmNq3!)EN`!"bAREi`ITJjAaU-DfC6h1*i[l(Fq3&L(6e1$0d!jD(0Pf
#5fmLc5j[*+`rIjX)V6[E%d5hGppVQd2b(`pC1Hd4'+fBNTaC2A5)@BR+GcD**A5
ISH)aCE*P#ePrA&c(Ph%#iE-KrCKC!Z'jSD@)NC*F'YfpP8m*"Re[r#EM$p,U9ZY
'P`kT@iG)RY1"J[@!)[fYr,FV96#R*BK+JrHGF`!bdiNc)UE"14b0B(Y%jLqp,+Y
1[#,k+%[XYq)CC9H3!#DX[Dbb'EVaR"C-VddND2GL0eA6NkB-0PL0Cd$8P-eVL!l
p8`bXJ@8dNI&1ImR#qD5*AGMqb90-(d`9'cFQMAG3AN)4!P"I3GNS65XiP#4f85B
56i4ST1AHS36jike))Dl*KS(Aq1[1rU9mHAC$dYUrBZNfq`XPY8Q-4SeMZ3!$ZZb
XAKZKP0aVG2JFJ2Cbml%rNLX9'cIMc1CPMU,QJSVZ)3AC*(NI-edZCKA'Kaj*rq-
C3rebQR5Q%*,Kq1$!3E1YDP'3!,hqC#jJ,J&X'aN+YfmkK[E(%k!rZpL-`+MZ+eD
-#%#'a++k2-2L@pS&Ar95Vc%`LXT*a!TAp9qfN!!j&Q-MG%@p&F8[G9J(5+1#[f,
k&59mjP5p'hM0$4f&9YA0b,$lT40Z0r#3!"d0F5UbUSrUJ,KBXprRKSpU!4hFlqk
KNPkE6q5mUdQ-PY)Zbkb40-UK(hF*2rIC+0N8B"N#VRbC(h)N3DGIQ"qSU*D"rG+
)a'JV6G!kJ&RRJm-13RMF%KeDNcjZ*m-EiUaNRp%EQELiIB@UQhmYD(K(HGA"GY+
9LHQh(VPCk(D`,hi(`@(VA!ccae@*eFFXYI-KrSL&9F@8J6H5l$!Q!I9H-iVh!@C
d&,lNX[R*m[,B4kK5[pffTma!kG(1"fFR+"[i&8T`2AVYNM*JBG2mm%m,EF""RNr
T)N06'"c1MkdlFiU3!#)GjF,Gcl**6NV%R!Kr2C*FNq%L@Y&aHaTdbHF4KcYR96C
eNCr)2i3LFaleYi1@JGN22i'!B'IRYS-Z(6BfJd8lVA,`Z*)ci'+E"3TeBIiEe2$
jDU9f8'Q!VkYS85#56!N1l!YMSRd(6a5eQ!LFRPGI@6VRIah)$SfC%I5%KM,E(["
*beT4P-c85GaiA2'`9V)'LZd95V8dZCGUR"N3A2QZFIlJdm8pEjP0QK-5[Nc1+GU
5JNX@h-[)f4BU293LBIZJmqU&(UL03Yr+YEBbDbU9N!$R8&N"lap8qLUAM[`P0"K
3&C!!'1R34C!!6ISE0CcDLYpr#J+QY"ca"e3k)G,G&FF[fI$T@k1ZZHTe0AGl439
8J"S"8b-ZEcV9apKP)+kHQ'p95LZE&'5RUebkfCk2eHjp@*jGM5#+322Z'+4!BN,
*Qla(p!Pfm''9lmBIl,H#!HCfTL2RKH5VAjdL6#`X)HlNG-X``+a$1eejKHehQMM
9*Qe&aG*2pf+lFKI1#"PP-c6dCM)U,imAjiB4&%+c30+h&-k%+r[XNG(CfA"5hNB
+q*%Sh'C'L&k9b@ZMh0pMC0#XYJ"lPc6[*6&T$FM(#kjPAFba%r6kaSpBD3cbU%m
kPE8*#K,8-&Yi[Ce#TNRam4aVbG2b(4'8844B`QD'NQr3@#*'QrDrR66f2!q,8-,
,qiKGBX,&2A([+S&M6%CdBV1-Tm1!!mBJbYL2`J%bIX*J4T[[GbkIqRBSZG5DP9N
`FcL'DH-jqd"EK[,GlI8hl*,@AUTmh,FD(!kGIiIFlUA-2U@1lN-Tf`N-K-`(D#q
@F3L@3T!!F'qeZaLXi$`mmm51I0B+ERC!YmA#YrYf%N4BSYM[B!qV1T!!QV8&[0%
E&F,C@"d&IU`M*LI'EcjQ20YELX2V%e1i&pDFF5eeG$0H2c'P*P%c2jdNS*23$bL
U4Na1cB2M!T059G%Ffp(GdeHN3K!RLXNSRpPh12*hUScY"46C#"38B-@PrMfE)5K
K+C!!KU+l2U4qeKA%C+&G6M,E6prYaBm`l@BBQmY,UPU,1eaHb+182aIlHB@"3+5
PDNV+h%0'm+m5Y8V+aUl)cN![bd,QpD1'eD9r[L*0lB98%0RqMh5'%m5RPNA,+c'
aiL6Mq-83pSm8(1-"jQhKBT&5!L5K[CA5#q8EQE*mYqDQ+l`-mE1bQNX4Xfi2*BE
ZVULH%)I!X)['Q21+AD9@CFmXi$-0m`STFp$pQ3r+"8RNM@TV4@-kF6XGXpP(mFr
`JTi@bG%lE*Hl1RqQTPq1qq1MeHQ*[&*HE%3`eA[QVV&U)TBYb3#l%j%-9K'9@,[
dLZ4q3hmCFPc#$1$BNQ!5di0LP5!EHlpUS3K9JS0jmMEAi"RT)61B,S!TL3fdpV6
9%L&E3f2R$"eG%P9YrZ5%6Z5Q991j(j-Tmhi(r361R8SXKbk%-AUf4HiTmcGAarC
DISRKajYNC2D&M0IJl&QC8k9!)L"RX3"@T9aMqXMr'hPl"3Pp$3CE0QdQJ2BRjN+
0!NeVl@XHcRY5V)j+haq0#9KNB+CJ3QQZ`EQ(M'SV@mSq#"AmBi4!h[4Gmj!!k(!
HdjFfH)!m%r!c!cP[cp*ibG"#$%ehhY-SBR,ZJTF,hXmqNiVIPN(6Lfc,K`e0q&m
B2%!!YjPCY6HPjY-6J8fif*-GarQ-i)"e93FE*cU*#k!'BN#X4STKaK"4f6D3!$j
I(acQ$'ilEI9%D@ec9,9Gp2-Id-j4UP&3EDlZR6'ejE',8G-h(`6UA5Xj0iV52Z#
3!#UF"ae2VXiR`d3B924lA*Q99lS&IhF3FAIDe#aKG5Z[Ra"@A!Sh5["4+j!!jZD
RB5$KqE"J4@B9Sp%8I$-SFV(HFi3HRbkbQ9jjR(b@ad@+UHG%!JE'lBKpfp*Iilp
9(N!P#XSHd)bjm8MSD-)[f@`5hRk&3'D-(N(1LdfK&+TJCNDeRmMp1RPG+eM+c&E
r)0EJJEN,f"rAL0Ac[QHfh@Gb-Al-kK0qZQZ&UNeeLcHET)Da#q`lEr*!3a9jXak
U'LpmaE*B'U+,8[Gd-G'-!U+d,Vrqib6T0&#GP@l92mcj)5C@ArG1TaP"Nbc$%rF
AmH),)jr)'0YaZ8BIFieXGpBUXG+Ir-dp26RL(0'GA,Y+SkGp*kibH%1M8jq$amh
N82cKZAd%3MKhV@B`QCei1ANb`*[ckiqbB4E11hfb-apcHPJr3qAhPY!r9mL*CV9
P"N4Em2PF#Ud#JlhZpi2bIIiFGCdGYD[qbLi8l!LFl5!2B*GJScAXZNj-#,0rFq9
UcERKXT)ib2RBUlU'Mh4PQa@13'Ji8VbjIYeK@rd49F$4Lr'3!0*kMhKFU4S!1JJ
C@F5h`[Shf"&II(dfjJlC0B$2fhe`e-T[PYGZaN+f#pUfZFN!6PV`pcZe&L1XeC@
iAkZN2C&re0L@J0CPb@T!8G$(rPCUbKV48[1A$j1PIS698*E+)$6LUk2ZQAa2XjK
Z*+*K0'+J2AKYjf5Z8Rp1CqG$TK-TBCV[UGVlH(NJAiT&B+GE5#1%NR*mU4NHdk)
e"%CX5+4bXN90N8q5U)LUM$B@FLM"STN-U"D1-6,-pB`qDCA33YHaVd2YHa3f8k"
P4i84H*RU'$SQLZbr$cXah(%[LXU@1r$Qi0!D0DE[XYLjE15[V2H'&hU(TP'L9IQ
EBU&6SLTr)aMHAY9)2hIJH'rK-cHU8I,fkAfIjrJ%P2Q`(2[C-CA,5%-la21"E1%
0YDqZZqei#J29h"T9Q0D+fMImq3I%#K,**q!jSUG52'T8'e``)@iUaD%5+dca0&"
1,%Sh@N-ekmR&L49l5'''@$(J'3h,CBi%LC33"ibpUYhJq[r5c,+T,b+#VpFZSc#
,P[)GfC*4Vl-pZ[YCj%R%LLSCF090L"EGG,*@HT!!NIjm5IDC3SLZdG,1Yr+G%5-
4D,IbhPD1%Gb6#0&FVTP@rfeMRPAbp'G)IK"dHaSm!V[Kp-M%hGBmbl61h`3MAQ6
L1[VI[M,#0SHN%C'T@j55d2P%L)[XQDbM9L,H99hPR9rQ[dpbcPA*IlDi2crP@V)
VY2iElc[VBV2B,)3,@G@Tf%biZJVf'Z64L5r4T5ZV6FpXl5dr*Z!e5Y83Z(JM,'P
990502I5cKbSk0cQ+M`C5(H("ARF8jRr%3$8Pb'X84p0[*#&!E1[P6R!%K#cCRT%
aG3AeTL&DRjJjF`!DQF5$+51rIPe,P429YQl'9LEk&90$01Nb,mRfck!DY$26#[a
A`KTfqjQJ*1-)i'fDpAcX`@M8"%X-AeX5YaJc0adCG2[$',X*i+J1c2Ih"CrLD"L
*@aIK@G*'qCMf33"8'h,*j`iV'MmGmm00"4'UQB*-mkBh8#iZJdMRLPFPDN5$1J0
MPdFl"Tmq*lA`f0hH,VQ,r5[S"6%[IRRF-Jqc4AL9#RPiBHaS#[QES6TSCD@l@i$
l2XN'Z"3YHVa[e"@EG8+8Bp8[I![6Ke0-[SJ(hLl!Hk!eb$f%"F*0,FUVe`YIM"#
%e(BS!rJ"5Bci))6&bdiXIpL#%r8SKi(&AaU*@IJ'DlbF"YZKPM4bIJIKk%M'(rU
Zap(RjR[82ajES0hJ-Xb5RjQMB3'-%jUSEQ%*i0fREfci9I)$V+CGUbIRkf(p0aD
4+C(4"CrF)Gk*Zh(d-hD@,R+5r,l,,)IKLY8U3S#ER"0pf0%l,d-QE66N'"VdqZQ
%erD(S["EUmF@8$[r'62-I1*1k"&-Gm,+`N%$c&'iR3EeTS&Lf&4RMIdb,6f`DrM
GC53@[CSder-J#h#6i9*5PfN'rRjZqH#XP1Geh%93FI!pSSJIQ!8RLLVFhbjAr(,
f`56,SmLc$,P)d'E&P5IVrBqKAIV+Z+brIAP+Lclpa#JiJLHC,`QjErqD`(qFKCN
p9MIUY9Mr%Ua2*j!!$XQi,V-Fk1q5&AH80'pjP&*i)0HRJZN4e%(*KkVVXF3!(iL
L&mA`XIe%#rFCm&5NMb(*ipTkAqkNJ'0@ef(p%U*Ml$%bN9&"mTaHE`E,Z+Yid,#
,R9cblrY9km,c5@@fYjRHYjSKH&E3m`QAI#)p&G5d2[ZfLdV0,deS)S(1E(CBbFK
@lP08b4Xp$B8F2lV`Jr-&ceGPB["ZLh[fcMGMPrbjE1-1%1SdH0GCA-5ZR(cKbKT
48iQIVb-Mr0i0RbVqq*)daaR[HHpTXLKIq&5Q3S4NJ*I3pdYR0SiBD8TJBXQKaEb
+4d1LVjkHKh+rXQFH`VYqJAV,%a%3@8)`*PqqTjiCmSSe'pKi85(mQ,HfEE'ha8d
CS)Hl`5Hm&Ic%C2e48LUC5pTcLFIdA`E6MeH[2"QI)XjDe-GpjQU8,0hhbC!!q!'
5"3rXZ))M8DjHS&#*$B3h3rBJXHj!S+QCGqF`#)cdQ,GkqcL%Fd*CJ6N!mJl-43H
c)kFcX[qfhL4)YJ(pIMT%)q,edA)F&qN1(,i9rYJ5LlkRlaR1D(qPEMV3QRXS-,8
2i&`Z[aMD%9MjRf#QM5QVVFDVMaFpH1riX5I!Bk'@0c2$hX@pb2#b`4dkc@mNH"F
1S#)qJEk%JN-UB`Rr)B12HKr-KiH$R0f4kNbIBjHVj``m24cFENP!1rh9hY'T2iG
-b4%PH"&FAE3$Df'@VmqRLkIDQ9GC@EaiP32PkR,V(9EhFad(lh15H56LH4808`9
B@-dm+JYd3d$$1e6%B%d,%,fFPBX$b[r#Q-l#rhDKm")G`Y&kD99dC`d#8KXp"B`
hlHr1A3$l@8RYYH!'Q1)La%b)BREKVaX"fJeeGaii0-#CPqq-@j`0&FrJ9@jrK6(
A2lh*kf@-FLkV%F+1-4p"FmPe*9&Tm#[#d@XEbhG"Z-6cDab%Qr23m$#pX03LS-N
b'E`0C,")5c#aX#BM`M#D+AYKVaPk(&MbmQDR)5,1fc"V)%6)!cJiMLNShEY9Da[
,Mh`%c(NJP(Ld"kk2'r&`E(Y+mj`l+bU-'CNSlkY4eZ#lk39`)Gh"R!!chJbpIQR
Zp$aUCCdP#a2#JDj-YC!!UL5JqEc8BSJh)1,A1"0+0#2pV9([h-V2jZLQkALVCHA
["-fZ3Zb`KkT*P8!`fU5@!&$L$aVam!@rV3aHL$)U$jK'FN$U+ikaXkV#6m4-3&3
Qq+jQQ5*%qPjLDfVQ9XRq%PJ$)63a6#*"%!9VqYd2X$'Z%!EH45cZ#MDIZl(r$T'
UFQBF(&VamFa#ZpL$JJ`ZlpmN%3`ZDMUBda43&cEaKT*ciC,3B)GJFqi*VpS)[!)
qqT9e4D[&T@C+SEcpl%-(reh6hqm'#'JpFUU`Ec!j*YY-HR4$`Fjb9dRqD`[X0)C
ef`lEGl&I#9P-$Lkb5P$jM&RLd#AT80Jq0Vi)Y!J[#5ikdR**#c5MD)%848S2eaK
&iIqlml6'5'P-rLMZb[kD*e9eI$j0%Yp"!-I'ar&N+*(-3lfl@Si9[9#5`EI8N!!
)$9SLSU@aBqeB&+F0(SjhL$(E`jPrlP+aiI`$cGL`!J1m`2*[Q6$p3d$AJKT`%9L
P2-Y-j,jm6!DL,3kra0'4hUKa!2KeC+2cJQI[pHkI,ENPaP9Y&S%f##[q@mrj`)#
0QF"jIE5![SqGQqFqGQQ*8`a'1+UJp26M0D2FAJ2q@JHRAqpJ'jGN@@@F0589%8R
BDf'G045QTR0lH$XNrBbH2G89#EReC+%q`-H$qe)L-+qGJfDU2R(3di!0Kl,8BE+
UCNQkl*FH9RNT+6LP%4pUK`+8p+L'5130NZc!(JFTT)0QDj)D"U@2[#90eb3Ukki
XlQ"e%PT)"Hde1MjG8HS4p8mEYmSe*QF'2Y1GCf0iU6C*2pCr45J"DBZ,A9E(Llr
QeS"MaQL$8r"lX498QkJ#4[")2LS+Y3HX-#q6kAY51*hLAA3K0MUNDhhS,R(0+&&
JYd(b%'(dPli3f"!(4Rm+5f4m`1p6RG`Y"AVek2BqKi*&04V5Y21fDbS-aqDY9)e
(C@*kG'FM`eGLA2!-@pGTX!2k[K4ap35Q'ZX1U-1q%q@A&P8F)CJ)VDQSbH5MH0(
iNGXH,"PH8NN-4+0Ea`bV0)BJPl)qTVMcUVcAQaRfp`BN(UX"T!DQ&AZcjIa8pHC
RfRBJ'9%P#3*1&dU"cN5Tc!i$8S6[C3BcPm-@XMPS4J!dB1h6)5RfaFi!SAFh66"
rAVN4@Q5$44CiVaj9Q6'RADH!$B6dq$f0$-eM$eE`%aL9LF!ERfVi5KH0@9%F9R*
iBA*2(1mJJ,KCq%UZb*0p6'YB90b-Vfl@"Kl1F!e!3EpEATU!QBM1i%F"J4L-5ih
)VmK(TcKLN!!Q$MRlU8F&!Y5XfD2edKef"Vc(%GaXU3-38+$GRBi$6J5kjH(QPGl
k%"b*#*2@3rpJ$Q&q%!**BH"3dcFDZLI-NX3H!(!kDV"ia!(%)FVhCedVUq3QIYP
-Z9GN09l3SrB@dlF1jURdF0e%k4)54c`c0ZUGY1`mNb5h2qJl"!c(-iJkmeLZil@
3!0d8(UJ91f9N3&B1VEK"Q86#h-0MkHIhQa$iXZA)[Q(*`klXae%5Y&VV!mFT&Qi
cKp"6ie&qQpDUC*8)Nl`EJ"9PjPTlLl,b(#`Z%f-,IX(LkI!P%59)HB3cL,G"A[6
"X0&*0ra9P[c8eJHP!MNI2PqaRh26r5""qY`#Z@Eh!`U4(a$lqmG$+d"#+HQX$aL
1L)-3ha,+6!0i-4,r!0p#(T+lV5,hcY0rB!mElF)I1GpkVC6e5pJN!1E9+bb'[l`
Ki""J)E#&a8KbC4H%$'T,M-CBVEPU`Y"2c`XIKkMQL*UZk8+)Xl$6ZY5$Td!AUHh
U*dU,KSAU'5@B6EIqH"L1@j!!YYGQ@5h(Hc5FLXTXN!"'#Z`ekKbDb2@UNSbKDhq
8hq5,EhBJ8@AaZ'fp6TDaa$(GFr4GQGZQZN5mCRZ,Hb&Majp2(`FDBj2%dlNcQ(a
8`L1KBCC58'SZT#hJUUM@!e"2VJN1UcQ6A4'8H$,Z,DD,E50ER[)05fVKTUqa'@,
BYS[8QIJ(Sq48[*dBUP,XXcqNdP6VYINlH*IMVd[cd+mMVK'@pS3f+EUM1$6(q1H
f"[IYTElm&DSJXS@&eDCe%FHeij+mFZ(i0UaPMb(9,GR*R(U*5G'9IbDk*9h,3$l
l03P)MG3*`AB`3rGIYkPLH46`Cr"+hkceaGRKQAU*Q-(-$&pP3a+Ca+@VZ3fbd-H
md8k"ADdUa+')!kQYYPAe!j8lAQ6$`MQB1r*jcRZmBQqU"F)`rqZ&'kL,llM"Q4G
4rp*kIE%VXY-ki0lFJaPfAUFEcM!"RJNqj#hia2@V[Zaf`MA,54kP0M&I#"NED%9
pjpVm)f&-E'MS*4lijV(rGI@Ph1DDK`iRZ(83kV%Lk!U!GFkICprD9LSk4BZ+lQh
-JZqrXr[YFIjb#k-YafIm0BicrXVUEVUJRXh@Sc5ALEf&[LS6@+)er2LM8c9l%L)
[KrmA&)Zp%)D$MIe!U%$[C!N!j5%9dS)G&lP8X6Z+rKaY-J*[(fLM2KdFl-m0Kl"
I5#ATAdQ(c5bTF*+6HB*4R9,IR#5S`8e1kfV&M*2dLjT+p"K4BjKM)`i$H4198[`
2T%HfP-BkR%&epJ"8c'Z-Yi&G[)bN85Fq42J$QN-ALbf@F@$@AK3ENcER*j1EEYD
DpC0HPr4Ma08'jVeFHZ[e6(8HTkNNZ#Lbif6LH@MLUBMPJpdGa'dj8mIe64D+NJ%
T)rc0E1d(!QmMAk,)3a!V11@m(@1`$#IfrNDXI3HAXLL,!BMlBAPV!+mMHZGe6E%
qHNbK4IA9Y3k[&@Vm#e&fN!!l,D$Ec"V"S"`Me+1B03SlK2dfM%9hpIDhjE'$eZD
,V``(Fdf`RQ*@Fe'2M(cZBeaAG4BTEYSDq*aPP$T'#M!4-2T4&l@cVHMNrr,9&-H
+VC&EQ(Llm#bj"$HkU@G4HB!eTIIB)Q4kVPm038Z`)m`Vde[+mRANY!dG2EpbBdR
N&U2UUk4*f"q+X-iSCe!Nb'%[d%BKAMi'R,LYh'ZZqD((e6r3ClaXRBG8`G,a"(D
!AiM@8mN'lY2CdN&6JHRETL)YBFE#S"hclqkVU#R&(R&MZ,P,pd2Gfk"4+2p&25S
Z(BqJS[#eaBl*%1&J!bGL-aUf1mCS"TQ5LTl,#km3D)KRZiqh6F$+%@LUJX2$b6q
8!LE&aZ`VJ`@1KUcE*"qPp5ABL1GGRPQU-cr+VB!8(3BIR%VGjQa94%laKA#TF6p
IeiE#GET)BbU,RH!,Vd[MBRURrY4NL8Kc["J9@%-![K*mNDIBe2XH6FI(I3M[PmC
mGk2fL9Q9F+*9ThS,q'jMe+L[C[S3B-PUD*EMH+*1M@&E0)M'ISph08p-Urb11!G
cAUrLS8M@ir$#KiPeS(Tm##9Mq0mSq525*UMQl8j9+%V6#'PrEL#fI-iZ*@"PlkV
TVAc61&56mSFE-&dPYY$BeaF["e[PURl$K41(XIM@49ba*&hKq'KL&h@14Tc3cr*
Xl3"%e')1MSF*@2ED+`EJjT(hacF'[E1kq80h)FNmKf(3aG+LicMSeAD9E&M$ja(
JKc@"Je$hU+f$!`l1ZbAY%kaqbfhQMmNRJ$%R#`EQF*XFpLed!jM2FkZ$PU+NpHH
4($a'lbj*BNQre4*@pBAhH[EE&A4RM6+bk%'AP)N&@-eDKqlrAMBeY(5UU!Uf6N)
hmR8hSX6T*P!Q$qX6`3J11*29R(aIfR(mmp2UerbN$jF!MX32h,HY'#JV4`4+4p"
85()*MF*9&1SMIf`)EP`8C!$*XmfDHUSX!834Z'[Sm6iS5pbqTR5QH&AN2)FV,FY
8R0pJ82F@S38Hk2jPQGEri[ZjF8"[QJY06HkjKRic@Gq4%km1QS8Y8*U$PFXU2&a
f"0XX5b&GHXS9!a9+S[1h+VQ3!,&ZpQI[US'YD-KAKk,cHYljiiNV*"Nh@fVVJP-
$XhRj@$)kI6dlkIF&E@peT!ABbXdPk,$L1MBBPFkQBK3Ub2!F50Dp+hBm#kk54fL
`fm8dL`h'Df&,Z(lAm@C&HfAJDC6r4R'NXIP6%E%$-KDTAB#VTdPLVh8M'fD,hlh
eAPJ)@A*9dc)#6`+48B$ZbVA3,f6RA&&2-EC8b)+UCN1m88[-JI2bGp30H(SG6&#
BD*AI*ih&dLj,(EH3!!lmr@+LG6a9b*cJieiL0pApcIY#b69aL4#HSCd1ZH0S6U4
QehAmQq!a69"Ac"6Xj8p45kD2IIX[(!9BrADjU"4KS*IZ#Ia6401r*!hm82(SI4L
BMBFa@RJJZS`Qq9H'a'I8$M'eZi0f1EUUrZb69NTH@95+3Q9Li0F)C4MEfhD3!'K
Qj)L3!&3r8d1[UT%BY10mCqDKP6Z"(daPC$-U[JH6V&5KBRI6&869mGCk,lHIdlp
ThR!hAT&FFZ9P'Y1k'ej@&!TBC!%Ghk50DeicSM&TjqK[[qU`FreFjI)YHfh+B#[
%-q9(Yq`cDI9UdSGj[C[CZc5eacDh3#[%Rb+bLfD438IL4-,f!8$fXjf+`"iFBdi
eC0BQ"m[rb4-#X(m'13+9+f,P,ep+C9PcU*&B(rC2L'J0QkdaCA)aE*@[alZMYFA
CXR5ZKh-AA5X@Me34Xh#0pTqBeUc`LIrD0#DY)+8(bk6PmSEG%imBb!JL+E0Bd@0
3pClL($2KCK4r*mhe0LJZI+Fj,b"D)EZIDc6&0$6&hF'Jq&ZLL!%8[U'T%HM"#pe
[lZ%UNa6Alhe`dAfY""I)l)6Yc"3VUirSH*1jkIY(3!3`J,GiX&mGq,[[-Qi%r2G
KJ&'ZIAd@#q20MjYl[*S`$ie5m'5T8lb"CfdGB51(Q3Ta(,Bj%3a#r#HLP6hJ*L@
r3'10`&XX58p2j"Y%#ahRj80Q+,FjQ%M1CSfbV8fB4l9jjU4NPq3$UR6&)1*Dm$h
$8d*LSIS,&EF*2!2(FMPAqJ-B8@&HIc#(0P8%K12aiLGV#XpA%C'd"F%Ge#BP'X%
9er9MedaD6!-59MZ(GR0SlCj8&IbY4!*C8IQ0a$`eMaTXrQV1*D(TkbijQEG"N!!
GcQk@r&miHrkT"E(93b@a-i6S)RjVIS!P"SkYGeT*[)N55bAESGr'qU""Z`&YZaZ
VkXE0-hZr'X%X`3FUTb0I,)&l-SaF@[dqCTGU&q&XX&&4!K[)rBSZDch"#!bU[6Y
%2AQC`V@N8r%`5%AReQfH*6FXYU4(Aqic)$NSbTSPKPL@`1c)e3a5d%($p&q#R+J
X&f5h'dBbQ`(EQ`YThlD`dbrhTLq3!'1J32aHDcRF#cI+)'8r5Y9`cN,9fPKcMri
QeSmN@P!-[cGB%)6'h+$VEa'Af&Jr5UaPJFiX1j&dpC6L@`aRSlbmNYj1'k*aTca
iR%pMDjQBiPephQJGGL@"b)IJ2l'pFNRT"+IDX"p9c[H5NZKd4a2*%&F%rp!aTVQ
5Ybj#3iQD!jE08ZGR1%b3!0$)Y21Qmkf)+($ZDq,AEYE-GlfYb0C,"$ABiRUkX5Z
1df8-@J+,m5Q'$aNc8lDcjr['4ia(,(qpq0RmV4GlCA`kJNL0mmHT+jG*I19h&6*
ph4TLC6BY030j6X@fpL)kJ!f5A&#Q`3)'JCcdkQI'(jr-F%Y2%E$XF0B*LpPZN`S
["h"!AjpkpF`FQ4eaA+"S1jb+Q2am"`GN8cAmqYV[P4HPjeV9lRe8(BAdYK`-F,%
3ETr2K@r[ZpB8TqeTGlUiAZTEfb4Ve9"VeP5r6`R#G%[!Z@#iD&D+'kIETU`&T,)
("p,$,fD-CdR%mh-c&Vb*U5*5e#J"(ab-'-XJ#4QcIiJbRpNIAjTf"SXqjhXaHkk
cq1#efH8i&YGZ'-PiM3Z+UD9)pldEp(Nj0V(p&l%XdjTSIhP4lfD(cl$5I2@5T`S
Lec`F4ki-,&Qe4F,3VH8F+IfC2'UKfb,p*D@DSGc*ZmqBAPUkfS2+'MIXTkI9N9K
16aY$YKBUJ*c5pLI)G&4FS[)2lAAKN855CXM'1fl[M0qjAV6(ZlXP@,rHHhUbP2j
ErTl["Vcbc,aRh%FN-@M@Yl58dd1ST+9FKHHSFcYj%pUUR6Rjc&Xp'UhmjVI$3GL
l"cpc[[&KST&((KaZS6Qd@80Y@Y82q&aK"AGCb3F"DC`9658P`KB%1XB482E"D65
1D3TBCb$SMZh`Ri*bSpNVj)C`F+#eaebL&dDK)C'LhBD5j+pd@)c,Gi&P3J'ZBZF
,`eB+8PJG'JGYQi+`rJ-N)8T)YXM`$GceY(MXM%jeCQ1'5EClbbPHJ5(JMlM!2jZ
l[a4NNCU9d$SM8Um$$[cNY)R28GiNkR,9B-@FqcV0E[+5p,HjSVq8k$+A&%d1l9-
VYF&SG[h8X&)A"[Qf,GXdm+KENe&8DRr0pSfH9kDjPC`&[6Iq[5$Ad+S8FP&kr[U
SQ04(A3d4$R[ejDp8)D'UpB%L4BppB*Gp`pZNH1hEdXcXB"m-EZD`l!P!DNJEV2S
p!IL!f[J!K),"&Mq#3(qhKc!4%85[VMdbQh$X@MANbHrc`6cB)$TMi[KE1)ENRQ0
$T"eKrcUir24!ifMJ$-Y),JBTk[+rrD!ji1(hrp4pq*cVQbj!FJ5Y(@VATdEK(lX
'LmF5K'1@m'frPMff")iPXJ++$CV'[Fm-3mpYRkh!6S!,-'2KYD$T2fGR68!ZSlf
b9IS!-CD"k9m4mBTJ[rJr"@A1RBAGf8,48j*DbT8l`P&(!'Y'l%%mqmY"mq$d*Jf
4i60F3SNhLXmqQ4f5J8*2fF0da*mXDKNq[2MhF2lY8bV@QQ%r`pc2V`56ThiXp!6
'NhaIN!#'Rp5E(M&)-T0JL-R22cMpma$+DKi)C(N8%4D&,NHGT)[NIb!caXVcA[#
aUp'!H219$KQ(EkmpiQ#FDEZ%(GCrCqD`l#qCeQi(b02U@ciPhRErCF!rFXI%r*5
a+VM"kjeZ601Hl"S1cCZX9iPM*Cbia&bQ,pFjTQ)'B3NbQJ4&hqGSAlC9Mqh2b%1
81@m[%4GU#jf9([KlILKaS4BFHcA4N8qNmE,V3$pl3$-)H-#UHid+l$r%,ELY[lV
@@S)d@G[#a'FKeK#)(GhD9#eY+%f@EEa"Vd9m4r*H-RC0qjM)*9a0$6U11a9aXF`
&RLkqV&L,(JDUA1L4A$63F$k*b)G6fYh+!dbFT)hHL%3Mh+#hKqS$1c!H%VMP,BM
MLH*'AXD*PET5CQbZk`3VJ[B`c2T1*rNX10`h"%eITKa[dA!1R,Yk"TRFCe'q1jJ
NhK$$'d8N,crPR49K5"[l#lKUdJ'cI4Q[9ZL#9$+laKRcRf6@2iC#!9bR+#eR`3-
P1#eSC%,1GlmCRaS*R2hR)(86""KN,k!2`*0*#CbCP&j`c9&QE5MBAY1lY69I%3%
6Y(h0@A6!"ebaj2f-ce2q[1Fc3c8&(ca[(#e%`(J9,F8FE%3dJ$LiDG$,IVaKY[2
kc+*L85QH49"q2pRH(2e[`08Eqb$8&J#'d!G3`$E5"!d*2!USMSD,FE5FYFrm$8q
"8ZkFi!'64!m(DF[8XK9P658&S$DPBJ1Fa3U3!)$""4AAd@$$#bQmAS!*Sr3IhZa
6MaD*"m"jH$*`Cmk'f5lL5k)kl"Vf"NQ99D(R$P'Ni4d%(2KA"8l$(6(U,MV$jb[
R8,@F5CQUCSPPDrBZc*PH4I'EITame3DM)Ql0lqDM64bAq4cXmSEl+[EaVT!!b6%
e$q9!+M+Mp-@98MAQ(U3Y@lm"0Elc8$ia5Ch+AZ5aGDp0eh4'2&J3!Z)!bSL"M,Z
C@NNPDM5Qb"9HBh2+9l6)8DecVH32YD-kd-4,&jKIBDC93Kj*,PT24`DA*!el$II
mp,lfp1m`i&3ArkDdRL"AAJUC%kR583(h%CbIZdLkH`)r*Q*AY%mP&38C4RjXbFd
qGLF!T)iRP-X"'FSmrK#LNq@)H(Qk`GA3GrSRabCVeSrFa%%EJfENjZH-*93EM`+
5&1)[G9)AX)P8*MT`5jfi0IH4D,N`'k4AZc2,p0fRJQc3Dmabp(Ub'Cf`,B%FV,c
@F2M*@'rSiq'i[RrA4*L-flHi-Sc'q3*KGr9r9kM)rr4j`lU$U2&e&LGQlL)`(D&
*,R3Q"F8%`mb*+2"rfm",qVIdTp@XBV,!QZcR"VLf8T4Z[X$hR)bLZqbl$B5[@dh
H4'iS(ImZYR3a10P`dpI&KGKhSIIQja8QlM",[ajRf5ZLQ!)"hf[l-6259NrHpN1
Hm#Gi!p4!a)9E-'EMh%*JaARMb[VJ2hGcK+QHd#Q1qC[55+"NMGJ8rh0NcbeaX8P
k+PJEpc59a2pNc1ILe@PD5!+ZST%8LGcV'"+B%kdYSKeApBIPeXZR'CPI,eb%pPQ
11D*Y*FPYA%0"YVeI1q0q*rGk1UJFDiX5&KQrC",R,JYB"de1ImABVZG(B5-2-c#
b46*hBcSIh@YI3qPV*UHAKPJUlH2-TbVG3+k*i`+-Vq6[U3I3pIE$9E8DIi,!)VV
[4cX&+SmbZGZf,'r#VRBA+rc$GmSB+(!2`-2*+*a",AJ13AC@1FDcdik5D"#@`,4
GQj@!3U2'2fpq+TKbV&'h1!RGj[aU")IjpU3kNZaQa1+(1a*@LGEfGj`iYfH,HK%
YFT4l,McMXjf2LHN8l8FGRB6I5(L%Pp1BZU6mPJ%$2L(`Kq[IAM9!%(#jHeqk+rf
BTZp!ECleN!#ljXRDBhX(C0C(A91P6'KBDI-5`!96L@4%5q$4jY%!ep9VL!rmB#T
L+%m[V$0,El`f2YKTqXk0clZ[hSRP&U*PK&2eE-@Yh*Dm4M!,UIdL)-ebjKK&jkE
VZHG*eKPQ&Aa,mI8llV%[8*[BI8MQiKQDM"PH8Q9@34ZHJY5)5L5Ap9FjU`*M%k-
MRq85&Kj$QN%GYL1+Q'*01FJJ(rkjFPjb6pG&2kGU"TpNhGX5&RVG!A[bfLXYR3c
&$LL,cY%(B"YG2I1)([0&P2F#PmRL@lf,KXbk!5hEUX22NeJpKQd5e`L4@jY-0ii
*1V@`dTQG+pDGq$ZlmP`0*h84`b1aNqSH6'VU1p$1jr[J@!kX0L"8G9-ITb5!1DV
#*&4hE`X)YEBX`Z#+NC%,`[,iZa*4@!Qcc8"+5P`fij6SUqm#T`&r!XR@A$f[E80
3jDZi5Kqq"95pjdh1`#TGC0)R%+d`Lal9e5hAXLqcCAL52TiZ5jpU3&"phkf9',E
UI6`PmHMl3"FLFq9@dRNA,&ef+KKiGRGQVlVp"I0FS!M4rTkR@a,8,eR!B6Y@1m*
GMT%3rUL+d8jKjB'[1E`2Zbclk"0`l8GQGfXQ%lcXh'YMmbB8#%(YZcMlmKMPPSF
Dj6&12m8jG3aSmePZ%Hi24JrE[0eCd!*8"M0Q2iHqiajHTX&e6`ZNb2T[eHIH[&N
R1AhD`pZjpRYZFZmdHcb"R,em69CrJl+Q@@'#Z,`r6(M3'M!$k85!pGQ+"jAH3Ne
rF3lK"&`@FZJ*Gd1#69XjTPePebrQLZ![DMPR4K*QkPfH*&q1`e0GGb29q#1fjTV
,D%+'26mJIZ+US!GRQSqA#25D!&9Xd3eRRLAE!NGC6a9#PaC)&GZ6TreISCUaC$D
(i3!F#N9M3'F$Yhk'Q@c9MX2(+**rm2JajdEQQ*!!'[q"9MqlhL'J*3`k+i%VZR9
f(IcY4,+-@fjr%LXhdE)`(UpGJ+2HHp@Z[abe-+a-2Pe0"iFjCeA'*0+A!qE$RJi
ZUK`)S'Crc`de#pPCMZb"'-b8Nf*LT4YY83KbP#1,@ML%)%HC"-2$Bq-Af3ckh$,
`eVVSc)rE4DX42f8T%-lr$*GH$pI+1M%0UJfDA43kChiKf+$M0rCqq)%XL4`FGk2
hV34@c'H$i"P$Ud"HJXc(J$j%XiM(PYE)aY0CPbX2T--UkRGhh%,JSD`,3+9S,QR
*c@MekUqU01bY(R-dCLq)i&ce4,Bh1IcbjGb&XYm-'dDY4aMb-p+`l)P+)Sc9VaI
TecQCSje((GM@&Q(2l%qZLV09l&$eC`ddLBHPpY@,R0pl1Y@5k5`SIbA-Fq6p4iZ
0B31K(YpX1[)95"1DF4&L0@X%+8$r[-G"1b20HacF6fDB+cTaBC(@!VpIq-Y(r1P
HrGJ63q&MEdE,*6adYM$F+hiUlCB1G`8qSJZi[TF"A,,Jp1jZR"#kB%!"+cr)Q)A
UJfqX9$-%EUD5G!p`MGjh,RTdYV5)EpSEp$`91(M,F#03B[*hejGI)Fa4Hp,9'BF
8i$qAMe61BC1lc'4lZ@bMT3P[P#!MRL&+Gf0hceX2G!"GiX8r4SUr0d-#bcR,rVI
1bM!1hYeapJihd02(5"d3Fjbalj[q'bdPK&k[CZ'T$M)MDX#F!258p1*a%!LS3G"
+4T1IBIk"XLk-1R*MSUjF1-9FTJ*lDDRa91%Eib+G[XK8CN6T5pH2Z68-41pBKqL
(lL((S#3Mf(@"SRKF8AL@rCdc(-J[T&1(-9,HB-0'JMR(Q,p`(FFCj8!Jl()iq99
C-P"&3BrK6dD%DVlpj1X9V,`U(lYI5#61,FkY#1jFb!@R4BCS+XMP3-V,%LP'h$0
6ffNXqTXm$ca0C+TqfJZAFBSU$!K[40)'RS6V"(Vb"id`G$qDB82jE1E$[E4$[IR
@LVV$ZET5BVfC,Ti$hih6,J,VRm@eA3+UlilD)6ZL1YYIQPrY#1PiGZX`%*,iF0*
`+YQH4"2R+f6'JCMJ"2TUF"D2a`I0&PXX+)S4',`pM8&F+ml'MhL)&iA"RlBDdjE
Ke&[h8+RXR8SY"3J'(K31ZaEm8IA@4aI,-9@dV(U$4bEA5Heap(e0KBAZV[8RZef
Nq3k4MdP(#j(q`k!dHYPRC`P%'Xj+FK)Ab#!(%B&R"LDS"XDQ2ARZZ"U$XY9&fj@
N#JD(d41-14TTqaE$8TAUpp#qAajV'+-"IE*FTEqI4NYNi3'hQL#5$,Ef4q)M1-%
h4A[N4aPJ'C!!!LEKajYRYZVfrLE(kPr1l*CAP[%JI+#0bAXNr5&m0*XH3SP"r5d
RM9r1B5pDS#00pDT6q'@9r0$krXHB@(,Vd1a5Bejb!6-*+[SSl!'FC[!iRiRUNf2
X26Xm!@E96X-8(edaAF*ZCi$k'Z6)3,HaS6F4493pGQ+UB`j3aH8ZCd6`YTT#[R$
)q`Fe&Z(f2,#1QBI`crFNakK42#j0+C2TXa$R3'I*+)cf0(,SkXeTZP8i-@KN4BM
!')5!bEmc#EBJS,jdY#e$b+C(hmVpFd[0AafD-2PC&XcTl59#l'[6HH$#D)1dTDG
D[2IG%qSZe'+JCqm93SM,3UA(Q6$6"L#ieMC,F0b4GBN[L[#Up"(pGLZrA`X%r2(
Ml'k9c#Kc3Ja0!ECf0l'K-1&+fE#p%I&B(UERE"jfhFcm##m6`'-MLqF$Pm2X3$+
i8P@3!-C$k*VUThle*ad`Be(PETCG@A9hK8#'-TVTI6!Y3+%J4$BRFpAq-d'(kGT
L#i403Hp*kU'1-T8#k&[VKM)PZJV#[+l)RL(cXkr+eqlrVJ9,D)`hG[aCRq$#fD[
IU9*LL8KelL(qc4bIMihf`MlmUD6Q$EMN6Zh'!6,f8q#I5-EmbdM%RG3`Y$b)%EX
j@-9qbGGG5!MQ%'Fb(VrGU@ZHrfAGbqedh`j44T'RPSjL`rjhcC!!Dq@BH,GZ2D6
A%fl@4RbjBIje8,#@-!aLi@LEQpI4YEQrRp!&ZYM,1m+#G'E[JiZ&2K5Ke6XFmR9
DAAb*0dk"#ZDU#6#%M[P!!0FJqLi(8Yp'5`pVBUZA4XfId)Q6i,1*5BYrfBRp5kf
e4b[r!f'0Fd)2CZDl(#mjVT+L`0lRqrECeD`VHqf9I6SCLjr-DJ&bbqIKGdaG#B1
16!h*cL&em3dF)1Ba!klJeaDAAFS8i6`*0-%XZ1@BAlCCVZD%,VTL9k&kD`J'd"9
MJ`BPK3rj-,dE#YDK#SrMe-M[$YrCp1XKB0D*KC-dNA&GZ"pIejIZkQhm"qRBDVM
iJF%RI"h14+ijjq51%rLM)fi3j`%6Umb5dqG[ME5QkFR5c9Lh+k[ReZ4IPD#ha2*
Clk(dN!#X,6[BN@[G`U)k4H4GKb!m&)jChjRmTX4e1"I!26qNF3&[ND"5l8a1aR$
NfTdIJA4(*V03[M)NirFD)KU*24$hkbB8Rc4F(fLRMC)Bq00pVDRPq(m0D%qJ##h
8`f,"(&bZrP@dk92ir0#d)pj),V!X4R[V8RI3hcA8KG0KT!pcrFf-f8`4,%UU*4+
-Z"h+"PMbN!$`lS*b*i-i'1GYA)8rXJ4bN!$m8-C#20XcK9r,I3-U6q0f[FbS`b*
[eJIeU1h9)#2F-93+Z-MFp[2dY*4FqiHEAK`JGCEN'C+i"j+9PGd3SUfZ,Qph1Se
lRT2cGZe`I1e9TVp512pm3f)m#A6-6QV,cZ"[jKQm!%G9ILUNr4F#!YGX[f#"C#T
*8iF[1&+Qh*Z!0$R`I+DbG,eJ-B"Yi#RS@'cm%cU`XE8aedTrhG'JeijUp2G'pi#
HNEQH1k(Q&`hcBEqSA@Gdh*V*fBSS&kLL9Q'+aIeB"%KdR8IBe0qJ[D6d)bL8jAi
9,kd,MPm[,Jqp#DpI'VYU9%G+Ti,C12@F4$0`ZNQK8*0K#3VQ'&(kK&P8*))'M&0
1"`"IQNG43LXqTlVD8MKUYL++C`Z(fkXIUH5pHHVYalC9&!,29k9ErBC)[ikF&-8
e#cd[$4)lCi$B%(*R`m0P6)!(q$1YT4Qj4Dk9m(@*'a8Jm`2M@)i'UKp4$!A+54Z
q[%"RAP!GUIL4h2@YCDh2j``&+rXF$LNdY`GCV"bc4l5IK3#[!p`Y95AhF4Mk03r
P--qj30PD$,fIqm&p(R83V3F9R9H!2"ZF+&9(GL%*ral3V4(ffhUeq#-k@b(MEi!
SRQIDkhX-0TjT3BY9dP&[0QJe#0Y[*I+%'8@Ye`%r1qqb%adciSq(43rSMUK&QGi
bNZQ*GAh-S+"6L!Ni@Y3P@,#(fBEmP2c(#V$'FDIbi(DGMEDdKJ#M*H6ZUj`PpcB
PG`bQ(S+*C-bpFjid3aPK8"h6Q!(`[3cbKG'@0Aj8D4dRS6*pCLd*%U2pmSRpd'5
JX%6@"aK4BmfXcNhd,)qj&UFH8M-q%P)F9)*q&6+h,1EejrRqFX[keUjXfpDT'4,
9@I&N1#Y[jai#B+Z[+6Lm-B'00`h4h@Qmq&EXT4Bdkr(!U&d#[VG1-[iM"Z,UGCK
PD&6,qZ2$T'DfC83f(QJi#2DR+DrY1[+Qk6A%A'$)$kqZVSYHY0lUEKVfh`VBA#Y
K,`@*HL6bI`-XiGN2lYa-K!fDZGZISE[I"ljF+mJPH"4#FRSeLHYQY1XRde)+'Z#
61lfj6q`LhKL#miB'$LM0-3$D(00$A%mRpdl65-adQQlQa`F#Cc4KL(K2MJ0-cBl
$e1*JP-RfHlN8hV$EeQc"eHa[R!,F&D(2P#6Z+lHU!r4XN!!XfDXM+l,QZ3[-[8#
iaNDd&a8'kkCX1[H5(@$BMAFAPq2K+$9%SYCB,(S$A!#a%2#@KUIb46R!kM11P9`
X#8#6cE&RHRfAjj`MlFkh&#&cI+j3,Mm[PXI0dJHqaQR*0e&kkeZ),eG2%)+IUaB
80R,jeLk)d0QhQC6mS@0#H`3Vppr2@mI+i4GN,"BRFFYGQ5)P2KTPeY6b["Ufhae
UVF45G&GTUZ%mS@+qJF-,CQH0T*M,1P(3+dKqP1kTKiS5(Cb3!'dp4ImFbTH5"(p
3BlSR1(j6eLGliaEraUhPGb5JXd55be2XrDjf&@EhMG-+j(#KKjbm@Pl9Jf8!S`(
VdphQ10EHL",J!9H8**)8b6)i*DRFXUXVR5U9b(%5I(m0XQ&HESejZe36*!c&$JV
cGPYF50$QVPeJ4(EMbUJ32)eSFIc""SidGH-e%AalVj3-1cUr2`@h95C,G(C[C$9
Tc'R&rd@N[h)(f@*M`4fX1MIdGN0NX,PKR2BN!UfIbZ5SSB9(,6Cjh@TMKh"KNX"
V$4Nj2U0ep-X$e9M@e%Y%4'q6eeS'cpGj61)!)B(L0@c`!C*m`65'*SHhp3ZpC'Z
RT!"6Tm5&T0!p"*d"DDHiB4$(a2r)5lm0-Ri'eNI&[q@E8imP)%6GCPEG8'bS'Jd
AEPE@,9Tj*`m)Y'KB#"ere*dAINqiQm&AiI#`,a1LcM&0&mU2afYS96U2US6US-2
X8p4bmD`%Q9#0l+EXeT!!6EZpGRB3P&$5HK#D0pmR`Zp6X'C!Z4qlN3[#USc3+Sl
#KiB3F5Ti`9!SfKH`DHfN1@a6h5UI0ILUAPB,"NRZHMjD8Z&il8I%CCcFaDdrN`N
rQ5@Q)cY&1d+$FK4Z4H'$M6PB&#1G%HCS#2m$rUY!!3TBlk5504Xr&!4LMQD(rC2
&%'Gb6DAd%"&4QG-ZpYeYr0PbQ*3Hhj!!,(IY*UPmUm@5)LLBYNTEMR)HE!)XJ'V
SThq'-&RjbD'm$3A"NCMU-dHH[#BTaZQrPr3qq-ReE!1bF15@lVHUYV@XrS,#Z9e
[-VFqpTKJ1lDD,qd)J%PU%L6p(qFm"A$)2eP$#63f@br42ZpYNb)(X+(M%8QIU&e
$0"f99h)fPY(X9kScPP[jRXYF+r8k$#hQ@d&)5A3GJd+U(dZB#fDjai9X+"'aH-i
2IEY5C[)jpVTA0j1r#4alZ[!U2J2m,L"X'ljMmfUUZXHHS"UmhJ,@j-9'!&ca2'1
Y!5E5L#6+prFq4"'bKTN)'ArcN!#'1@`Q8H(bcFRL(&Ri%)h+d!`qNC!!Z12(aSe
h-[X3a9PR$DK)QFL$42K,`,VXPq'!E%l,!BZCTACCP1106QpN-Y)RK,*&ekV6)Qp
c[,#Lj[Q!M+Tc)8+,r-mAR9J-FKQK#5&)Y%MJ'[93MVLT0c5[B09AN!$mdrdT3-S
C$+lLZKf8)"fS2Rh4C!6d9(TDHaerm"i4kbF)Tql*@3Qa(cr3f$K&&Ef,p4hPfcr
C'KECVhHc9Q#4#iL"Nfq3!+C1UB%55l0"lTDrp2GG)-*BHLJac+h#HV(d#(%G`bV
'YL[Blb#XYlb5NfkYI#9kdHK(mV*IHL"q)DC`22KmX-FUDLHc8@8ckKK6Vl0"SA@
m6V'Ue(HFbQH1[Q3%%0CSmQA3((P,MrUi!Yp!ZLamG2fNY0fFYhB%K&#eqZ$B"XK
JCfK&IZTQbEGRK"E3CLj!%-eBI,pG#RA!*M2NiHd&Y@aA"-fXUI$K5!lX3#XeT&4
Zm&jrK&Kia3cIl'10jh*#PX594m#DHj!!4I!-+Pf9!rd8T+km(ciQ,H5*J6BPCiP
MGr,D&aMLESRPE"k@Hk!J@lU[%J9H+dA@iNS(fej+(E0XYe!lQl*4[RJ1X1SDdqB
G)qBP8T*#-N!#I3@06RXJ#2@aCe'!CQ(16&Ib#!D`IraEJN9*K4j2c9IAM#8d3[j
D%Lkhrkfl8q6cRe+fUa0ChidRk'KY8F&1mI#&NJ&N,9%Ar)&2qUk$@ZfHfb!P-G`
B9YbaU9K3b1$jX85KF%k[BLIdcE&cd#f*S5i0DGh[VYKI(lYjF0q+SV&GZ110F+c
Qe"(B3Uf4M!94V,5c4HFeRHXk@!55M$3!EX-@"*KkYJT2CFj(R'GNGjYAekR(aMc
H`bLDEUdHT`ZH+cUUFX$C@pDJR9hXXCeT0JV"*6Lbm6U&6)--l0EKf[La0RTQ*8&
'JaU,,#e`-+5m@YpN%3m5PJRcc([U,9LaYb,pJ6MYb4)lDN)G5e,e#E-2%m,C@!&
#8-&0F&Z3!-%+M2*a6rTSm2!3EQ#X9$YHEJ)p&XhBFI-Kc6BiakjR2Qf'KEh#Y5R
qb@V`lrrK)c-1JCF!XM@2mkdXFJqrq`(6FKlXZ5#SqH$+lTAHhZ11ad`PVq`cG49
`[@1fSU"&)Q(c*f(P'JM2b3XIFK[fPL-A40*b1ip(F8'rjS,mXEram)hQL,V#RXB
&QD@Vf'%DfV[SNDmU49GaK-JprqNbZZm4*"6!CJ1c2dfI0*V4*'2jr,ZZ"k+,$&m
4*bM[L6DpA8*5!+TRT&NiIUp)KDprIJD6Z@SR6CNNl[c&%+jfch1P%r`Kpl2Ijd8
ci'N!TA5KFM`CHlQX6!2H%TB"!5GlNeDr1*r1!bT@FPFGHZN33SCU+Er+669%,5q
L&M61*S3"a8%i@XD&Eeeij4+Y$`McbB%a[BUf1NB"&if!GlF+(pE9NSbELl0X+"%
Z(RNQ#e[)fN[-eSTB8$%ab@ZKNZ'VU3+,*65"PS8%e[-XU3KBCmiU3XdXT'6H+Cc
kkc2XQB5c)(ZAqBIeLBqdR9V0FcTfVref(aR128h3G8Q2a`b49J+3!-X44j'rHci
F42h[*Q'JA"BeM)T'EBLP-`Jl&KQ)D[1N,FkQ*qcZjK58ih*P@$kRSSYe21)m0@r
`Fp6X`T!!lHR%Gq!F`TjXBmiq'C8Cf+3j#"@&VYNCB5"Njb!lj4PMBaleX$0MC@G
RB@HH%b9eQ#$0f$RYF-NX-MPQ#rrXa6,YlQBD,-[,8hF,N!!pbhG2%j!!kfPIUma
5qp(2*05QGUA5j!ZZY(,BcYdLQ+iddGEDH-FB)4%$@Tm-pDXXC0rCS$0LUZ+4Xl#
JhHCS,erXbfYIc@3R)2&lGbSJ2K"UC(V`qJ%hKa-f%&I"VPiET*h5FmbP*f3bHH6
!dA6R2Qblbq6c,-1C(Q*QqP!a0#-JD"V*#e"Z2$iA5Sf-B'RPF%T"fEF#fV66-i'
le@$R)[3LUMCY+`#5X6af%D@DMT`0ph5hbjJBE&2R-EK3Q+"95k4$RHjE4YS%iAA
+IUIH4f"@MMC4TrbLXVJkiT)XN!#8kHNXCN`)P9*jG-%lE,Z2Ue&TIYBpUTpG*Vp
kK'518k6QG!h(,Gh"+F#Nf`@S0#UGHKJ46F@NG@Da)d4S['9@jKd1LN4c'*+*GUJ
aMl1%kHqNNfplUiC5AfKiF[@bCQB&&#TSr5Dm#SCV'!hHeYZ#%*+YS0q98hE&kF+
1Zf0Qh8X`1Ne@5j8kH3[!fc'd0iD!"kp!`N9$'+5U#D4*ZZmdB)c0#,)HcT8)XKS
*ZFq,6VL2ZJZrpRRMrkD-X'$a(r(kNHf)&#[UpGTqJT2IfYFUDd,-hc3i5,62ZZ*
qUk32eDFTmA-#@Z[&*@$V6HGe!Ce@kFj((,DI1@5D-hikV'R!mI28hcA0@"aBraj
1@Xkkd9E&f#-)MGMV(5m3ajrK+AXlBk2Br"4'8q6dEU*m+'NQfQkq99AM2YA0HMD
[c*5Q3%H)b2ijMQrBNYfq[#!p4l*YT@*C0Y!JB@0$-%YR*FJm'q,HT0r"N!$5'H[
pXh%d0J%H1b&cb)[QJ&h+dq"E1(SQ$JZ[ad'hb[MAH)N'DZ`Lc&iU(TUhmb85)Ba
2fbDb*,pi%5"eKfkpPj'0iQi%c[HY!3fP9NNJ[MkcFQ!r%QmJj#63Q[#,1)LSY0+
46Ghq2PhU[cEZlQf,BhVJkEBJjTEqdD9[)1%HpVQBf1r,qX*'dN966KA%BACY#8L
l2VJ39iIUBSLB@IUl82l!m&I08&PKH2a"09j6R*L8lCEhCVJb(PGaqXlZV5d4L-A
LbVEE`d'J*9FCSD%HNMf`VkeFAl4!39ThXhZp06Y"NF4SGAJMrQ)KN!$Sr-[-[lL
(**I&A+9U#i-"m--4kNFBLcSReX%UM[ZRTH*F$!IDHSQD@Vf!5M#VrE%FSJbqQAX
Ca$i[fh@Sk8PqKEDi3lD1I&R1K0A`D'ahdM"Y2e(`""1R66$d,l8#)8LCS5i`q33
'RYG'IrkXb@'BG1[di&hl63KN@hU1f5*-(-$&U&N3940!pV%KSTdDGf$@HiQ[R@%
,2G2SSX&DGYYGYD84HU+3!$repd4aKR`R5hpkf%HTf,l$QklL6h%5N!"%&(QSd'@
bj9MfEZFfZm@k9SXZY9(U0bepm)ipM-CB%dpbfLA,8!08Y6E`22!d,kqRVSRJ"Je
UhCV[%LMKcDPI!d`UNTTmDQ@2V+6Tm@RF8qI+48-)+ZL4j!mkP*&&-T-bSBBX!m2
mKdrb&2r*F`c[Q9pB6NZ)GI5piJr55Ud!UE1K4kcGPD(q*BTGp*@XXiE'hJ#YDqP
5C'9Z#(bA6`8ZB)-+fiRJY#['%*T6HQG"ed!EcqKmiSUQ1$MM-lIVeU4alLh@imm
PVZAXFHU+hQ(B-B)&$k'5'mSX(rr+91FrI+lEA'b3!#FRK,XqRDrq6YhH'aZY[,r
FcS,EX*)`MjXKJK0iY$aBiMe-'JASSQF9qEXdK*YPGA$faNr&GCNcY(006IX[`#)
rCZJ6[c9RAZaYqUf5-HqSC))G2MBLa3Y9!h3`2fV+UhH"Lj'(Ge4c9`QF36-!0+Q
8QYldPCNqLpp!hHR),MRqhdX#mS[r88ql%+6Fh!rkSlai-P#+cC!!4ZZ)f84*80P
5+$'!3p[p[[-IMZLRL2khfG,aL6p%@L'Q#`Yh8Cq2&hEVbFRS3cQ-0cS5jA3bh!F
4j-R#&5D5r9Q$B10(E+%8rZ6q%jT6KD(br*bC8P-H+qSXXJiLbc6ji"1[b2$&bFN
%bFTeqpD@EYBQQK[U[b,48'a%H"!@2j@P59pp'%[6[B`"K@5,V0fD1$GkN!$L9KD
rjCCqZ5Qb90S)Ka43FCH25p[DN[`Z993Zk4NEdG"h8Ik)kKTm!C9d1+VGCNNQ(*q
!G@e[FiR[6eKI`!8LlTSr*%YI9)+8dCYjk$L`2,MJUjXp8%B1K)A&BS3b*,0[01H
MHhAdR6ZS88AY$k9H(5bPA@Z2*8JeI6mQhfDScY(r$E(AhBVFRA%)PRR$!8YUI[k
#FND6U(eX,,r8ZkD-p35b,k-i3dcDDX4M&jEYI@AI*F'FXD[&FlmPLYc1YX8+D0B
U)$pkA,FXBf`-+m%dkeLa!$+K`"bMQ9D!8`8pXfQ*e3di1Pk,aCH6'Iik*'$Q[%h
NjMJr$(MUUbi2dFHQHJkeANUdZI39h2C+3RJ9J63l6!NDVR1D&2p#1+Z-`""XVb6
VcKQR9SB$4fT6%Vp@p*l,D-JffL4NE1K9'Dj[(-4%X-#a6ANXZqq3!!(m(e!!H3B
`Xh!VTDR89)BFkMeJ9EI)TeS$93QMh[qIBDD[lr2%eh#lIUjK"ddFHSMecDGF8Bf
V1&&aaqPiiX3($`qYP'G,)i0M#1YacKSJqRQ)jr)a`@`L(Pm1p[BeLI0%DUA,U@f
d(N2dH#ijb%8(ii[mlX&[$@PpCBSQN!!ePLh)+$bBhaK"GY2CB-JT5D9(hM8B'I`
Z5AjNKfj"#8IFeGLZjUbB-c@%+8Kh2d&li3T-rXJ1NH+Z6QlS)!KaBmZmXqfjG!1
q3iRrZC5c4)H,Nqj`*e+li4lE*ThUSZKIUjj[j5#"[[1k9AC8D"$8MC+BccX6C,3
Vr"86'eh1hUHi#NQjRT&D3`ApEVR,,-%&UMfS+eZ+B9%b0lZ#LKX3'1LKQK+8EB2
`N`['!pIiT!M0HZ`C56P9lS[31D[L9TBD'R%JQ3XRcN+93r4"+-prX`0Mq6&*!ha
*AqfH@%rBGijlLTdDeXS6qhFkU[$40,fkEkI88PIYD9iMjTZDiP-DFMlkGSR,*ki
8RP'H50K&JEc!a'PFrXEqb#h9C%NSYiGmKGIeE-'DNMA`EK'8Y2r@T-P&K)e(D'k
j,JK'43f8*Z[8)H(Mb%ID'a%1kB$DDb9'Xfqm@BJqpMLPjCV,*0Ui+1J&+0I'lGq
jX8"h65GKAjY4%#aJ0l5b*FZMC*d0iSr54!N3e`',-IeZ4)TVE(*9b0`Tcpp5&!J
D(HRF(kJ1X`'ZBip'UlKZj4Pi-ZH@5pekeTl"2(Z`PHT%X$ACmR&JQar*LbSU9c[
-e'SYFe!SakXZ'FE4'%dCF9@Zf)[k2INV-l2L3HFeQ6Md-kKQDK2pSp9P!+`6HRS
M5310b`MiF%X('8rl#U!6HV3fb4YX9E%SbQ6ZrJD+-LUI34MG#1BXr$dRD8$3`em
9@FUFRZJDI8qX)D[`AqT#XSM1!)CSf,j(m!CCI*hd)(-K*Yr[HL5+a!B`BH`fdF`
'8GUk[)GCifm22(Z`l1d48'UrJQMRPQ$p`35*B+NpAh6&lASfUFX1N`l6Y&'KeL`
mRYB!T)0,m6d#%lJLGJc''UZ4bf5014Z`1GAKGpB"UBbbR2$-!41k-hKcefl&%VG
9lXb(qr!YA"H3!2iaFH#bk4CeV6dq5Lh,B!KD$"FN8GN1JUXec1-p18*m9rNQe$p
UhH@fRISl1VDZ#ZQ5'K&ID*0LTa%`"hbTA)8C@YHE0MTllr0%9Llm,0&Sb[EUKGh
6NNrHrAbYAkIUq0GmbiR4&842r`+4RXAEbk1$T@Pi1SZYK69efeNr6J'%bbZm1H,
*#h@4#XZB"52fJ86cTa-mmLM,k#m%2$mm9QbFP6R)ZY*F-ERPq@q`qLA#Xf"#XQX
#U'%DIH%+@5r6RGZm#`h)&$M-*#`r6M`8d9XKNcErQGhlADi'`,$)QKLCZaAP,mB
d2@"B1T)8RAS!Aj3+65Kj*N(4MFfF)KbDJ2(A"5Bpc(b9KSFST2-d5KPhBKh1[qe
cV4Xrf4"6qZ)q[EVpcA8+L0UkHq*FH[-4&dl`0F`SP5*XSf#6*ZC9Y'(M3@E3FDc
-2%B&rNkB()1'%S)*3)6+HEDX'hDr6#'E1IRfa"C+Fci5lR0'[-IR13'6Hf)4e'G
331MqmpRYr"%blaS)f[CDHX[U%jZbq,0+jfCbTb)`B54KU@mjYT'hf6!%CAl'LV9
d'A#ipV3F++ILlE*&MSjN%2)kr+0j3c%'j'`,&DrF&1VR-V`aIFiUJamEfjlYH`m
@bLbP!#!5TfDGRV`E*2pV9f(Yd["BjbQjUr2R`Q`S")h"8BGr[!)RY@UU0VrVFfr
dQ`l1I"qZ*q#6$[6`('UF()QHF`a3+!#T!$8B!X4jE,r#V!(QHL+E3ACHIPDfcY)
`$@#2Zfb#3aKB[(,PGYpb"hH&L5hA4P%rXa8QB9-`EVk3!)LjU)qkHbJlVmId,el
3,Z`q94$qUeqUhj[)CjlX#q'%"Mba(I3,1ardYREGfdI[1L5)IML)Q8,+3L9I"+K
4aC`'I)V[,Hl"hk!QH55p5fJ4rmdq&'[dFDaMF(G8B3e)XSDd*pk-j(Mr#BT8FjX
hd%XKa1'HNARK@F'@mpGijUJDe!)rGb*U'V2a"P!4(Aechc8ECf&89K8NhA#a9I4
#X'"+X*Idq!Xl6ql*jP8&S0%*,q"4q(9jbGqT-V'(5T%94UjQbL*@lm4A*RVhe3D
Mk6cr0r4NEhlXll%)GK8pl3mfKp93Z[ae#4Y9MY&!iph!X,-NH0U-mMIbLc%dpMJ
f)NRr(!B`cMl'r&XM%P&@R0VP)Y&cm)*PEX-5c3EfpB(#8,cd(3'3!"#$GZSi-XX
fSh3$D[6%-P,,cc##BX!cEAdd4NcNMmf!hbkdE3lIi2qf*,#'LPd6cpG9GAri(F%
l#RmQ-T1`,%NJMKmjJ[)%+H[GCDG@F`"A193dT9lJ2#IJSSc`R")[4489k!iA[0r
McPVLZh%mL)86(2h+#'NeAf(P,b3$c+,mj`&3eGXfebf2Ne$62*l,Vc2driDC,Ga
85[LKQ0RLR*[EfI4K)JcVBb,q3GrTG!ckH3UHYjeA@Lf#p98!A!L$l5hCfi)FZ#V
q*Fml&d4U,@4'$#l1ZAAIm"jfkriNJL@1b%lS*i#4p+49cRI@3*R$&G'!F6fk1AI
8,KlYc1FT$Dp`K9b'+#XJiK@4QNpKrr(U&-L@PB!B"ae(0PQ85JIHcHP&Jc&*8()
9[9ecKEDq,hdd-9ak#RfAPMC0'23Il01[Lm%a33IA0'6T6Aje%Q9+*CD+E0XBZ$P
eJi*XqhM-8JT6J[5chk`4B1KA0JifY5)[$,!'JdX`MR!0%mKirjZ@T8d'f"392%K
)K01RM!q,YY"e,lF&$aG8(SZJTU6229!QY&D9%IcC)%)Tj4dC,D1b#e',+mbTZkF
ZJ+KlYbdaI&IZ,XVb%U*p2`&XehhUm[('GGECQ$9U4hlV&6med6PIKJIllHXkd!q
0YP(l43[,VjS@VNq`!d[1INqZPq-(8PCffr4*4#(NNhiS35aha!Ma(Sl&ShU2"h4
TV1B&#mffLA2HJA4@)Lc&+3fURj%aB&!mMMh#G$-a4rmi2Z@)kr8UP$LNFGVRV)J
8!*H)EN0$m&%PMmZbJ@)241M[ab3$ba&8UhA+%GQ8jU%K-&d[pMMaBLTlhSaTJ%@
jj@lpH5*0I-'ApIYP-4SE+EX#R4D5qVCZRE9#LTeN-U'H1J[)h%8r`6*S!0j33Tl
19Y&3pj8mdc%E9R(',0'EP$EYS2CM!e@mLIV-eHBU-qjdmBG2L#D$N9M"qHM-2!(
99Mke'fPV2!2S&jlp@mmU,1Vf!)Ehf1qq)liap*eHU8IHe)CTljJT1VF2Hq6`RQ2
@RUed*DT4&0)4rN1IR#haCYEbU1m(@+32X8qlfaXYr6qYJA*1$ch!hYr*L5"GGXB
K"cd)YpN-iJ)TX2DCM&GfKXifL,e5CGED(Da$+e*A6`CD[AM84f#`-UIdIeMl#CT
5rp`5!H"9aE!$-Br3Cr[E!-%(L!,L`6rU!0T`pK#Bc`F"`[DYS#r(6JkR%%"k0+G
BhZPRVA5+I)JPB6VNKDiD5C6&ii#+!J`XqN'P)!m"e-T$Ekjp+fUFl,5G$X'6pp,
JQhL0Akq55ll&NK&m-H(23c8pTe8DX[0pEjdX@6T531f50"@DcNd+PpfkH0c`&X"
cSQ%Sir#kE#`TNGSEjZpPTU-(0KMjp,3V)GMAHk!`FmT%2KhD%cAm,(AJCaL!rQa
G3pMHrMqfPhlL)VAC*NM)-iLDjiI5DMN*F$3SN!$"41ISFNim[qrfN!$BqkM2q5B
Sq@ha+Q`"@8S`!Mf@(LMNiDSXYG6%Q"Uh+()B)-f8&5ZX#+GPXAj,qRPX2ik6%A&
,AI%4dZ)2Nrl%(FV'+dM2*fClMX3``@P-*q!L#[#"@T+e3j!!DYC8Mf8lL28*#+c
V&8lEPX5l*@U#C5RVTLT,E5K3$IM5L[Jr[a-X6ZdJXl0%2&e99CJ6V*Cr1%(Lp$)
)K`ip[B56f)fE(Ik,H2hDj!#Mm56m+m5DSbcY,($c,mi!G(4(GJ86idXMQS&C&cT
f9QL[YlQ-ahDi[A)a3NBS%6T(B5E1TSZTUb644iP5GRS*mP`AUDiVAhk[MQ[hL,'
q`EX,mVDE5dL0LX!p8TL)FdYrf1)-!l`X@EmC+23qkhlIM6D+YmUD-MmiI02XibF
9!jbpN!!0f`bG4f[RkU`rm63dSFpK,#34eHhNd,LhcDC'Klmc2!VE9)Ki&R'jRfG
A4!SfjNpS9B,bILBM@,IDT6BUE`@iTYF-Q'0YmN2@)KUh5UM0b'3kN!#bVY8r'3V
TlUYF@4%YH&jYUN8KYV[K5fcaJGH"$fTh-VUC`%-N3)5A"CkYfLj@2!M2FUQ08j3
aH85Nl6U6&XMH(I,T)Y"qJ'%&RXZ-H#'RMNU3!(j1m[iImL!e9LPB*8*#53C#XI$
`U%(YP+SA!Sj%Hpc!Ti6R6L![[kd%"'&lV1Uq!j!!r(kK&M-K$dKL[jkX,N8dBFf
N@2qh(R&#(U9TG`DmGA"A#,KMeF2-KaI6'6ZH2'A!r*RKJ!V!B(V-h%'B+h4YX'#
`5%QPM&qN8YZ+M,mHpmVC6GG9UC,!S,1[&(c"UNl0cKhQ@miG85p%"a8r$0dGQQ,
9l'rT6J`"BQ-)9IYhR04%"LFAK[kpqhVSm-je(P1ZjXUP6G4U234j"jFUUhi3&Xl
Cl4JK#q,T2KCSAVdak@rVcR2ajCpr4[m6YIaIDIGKdUNa6S8l!$2a%MAM(HcQ9fk
e64k&+5L)rPU!k*J*T2l0F3NFjSE(aX,9MNVjbKPZU8CCk42I8fi6'XMbX`BhMY'
bJfMfVk90S+-acN8j'hqM*2a,ADq&e%G4`Rij8D,-R$BY2-!fH1VhG6b*AXPcH3$
2',XTc@5+2CJ"!'JAALaRDmMrp`VSH6Nq1lEm%3-+9bHPL2-(9EZb46cdREMAE2@
@95bQI&[Ge,3H"UF[Ki!a3$H-1KdeIIhd54&*dYMq#94@@P-a(C1RVDD@9LALAf'
1GYmUZqR(DkDR@#dN&F9)`LCfm1Cj)3FEK()-S1Z'5SR66ij#I2iCZr"bj#%ejq3
efq5)@Y[8&qfdcS&',A@h2%D+l(E-p+@F)"aIji(Z,1UVESGM0ZYJa2jE1b8Hrqa
F9[5LVL68&)8q%EMY+)F4Q1k`GL[9B+BkV8DdNV0QH#Cl6`I*JraAfq8H%Li(N!"
E-1FRBKAY2`l0$QeKa$R-F,d`la@cMceeCbRb6@qEGp#!XGF4R1h0+krAE%-R51c
EXIS9"!*&`m,#Id`-Q[%hJ42$1$)Q8bSFX$4dCQSE#[dHp#Q+$jCBYR4eUh$fr4B
k4aEiREkG9[+@K&m9FAr0@2R3#P4Vf+rB()+*3R9V0iTBL%LEraJprNBZCPqDjkY
)ImN-Q[$C@V,[PY)"8!KHiYUrXGNT&$A+LCH3!""c`d'5P@(GG2#$ZhE)04+KP'q
4"8RJDkiZ2X$6aqb[b02JRmpmK8hr&!Ed"GEBTFeR+(BM0j!!`VaQpHYP#+llT9q
@U)AiVF,j$brIV-Q*be8E''cE`E3'Z0f+T9,k%k4Sj9FJ&a)H%D[)cDfh@m!Q[e&
)fXKbK9RqS*9`b*RM6(!&)RNc-FpbZA1abNde&0+"9kmK!I(iXpL&A-Yf4-[rVkp
ZaG@Pi)hlmjZKlp'SSMSal,#)[jBUe'IDHP+)+hCNUh8A@GGYZmddU6DqQb`1d![
H(NmfNpqqkbTDNa!dG$H#UN"S9Xi5$ld)ChrZJ4U%hq2SQS$1XE`i8%VV*ar+Xq2
#Qff(&VGiahF3[HQ(0[kAmj0[i+,Dda&(P'9c"A%fb1cC"cG8%j!!*(k9BUCIPBR
cLHB1,G`963!DB"hRUqRKLZ!dVpH5mERM[H[rT&QTa!h!**Clr3b[Hb""f5IJ!D(
iLk)dkbmAbDZ)#b!*%GBqQ$-2-1)5lBbKmqp4e4Yc&0m[2"0K3Ih)#S95Tk432"'
p"E@bTZ2L58(GJ-YY34#SH0cVdiPm*[[F5q%G%PQ+!FA6)cK&c%k[!c'CA)1Kk6@
[Sb0IbehVLU3mZN0Ap5Kh[A8HECSB-CH6lhE8rlcXAhGUQ"BCG'25F51'2Aa$RR)
DZ6qk&9V38AI9(%8[ZcbjQUd&!`IADUP8!VIkL,,91mM"NZ3LR'jC(jVQ&F59"1!
[`36aQLBjT1caakiYEi[Lp@S#"kRiVf5qP`TN-(qZLM"Cl9VZ'P")l+elVHlVH4V
&FHqa3U(3S-$R,3b#h8MPVdG'+Jj,#0p-UcfrS(@mB1RcJVK$CPI'P,Z(ER(j)-I
aJ3cPMHG0F+e2$Pfkle9A8(0Fh+bqG8r"N!#Ef`XA6cXlV)5Na%kQVBF4V&$$kEV
2jBR0ClJZ%eLaP6H@fQf2KHdQ4%I3f#CPA0FSPk8R4*f&hYiSUTBH5bYG4Y8CVME
GXB&k)l98Rr-)13M)KakLjkfdR35@Ll%I+!G-11!j)TNXD(iYX3"4l8hc1#@X+Dh
`aF"1$E5%jE&SGc#cr4Q4b1i&NHB2jdV"kVJr-*3'Q$e-1rDQ%lEZFek@mf1B'R6
TLCR[+80`*R55+a1,qf61b(5)[j0ReCR!0U-NKlP+h1@[0Uk3!(9FcAPB,Zh'rKQ
FI@5[)4pTPAN6JX!`k)Y&%)$pXiIjHPrbf6e+-'5"*dTl2$RVBNjV"9TlF'0$'`@
ap-MQcl"XiiC)R`UTr-9dGe-Kc[GYFYam&I&JiU%"D&1CRkl%R6bqmVc18-T6KNR
P$k$GQfDFT(YTr+hM-@CCfVmj)fT''UGmfe6EfVZXj&KZ8le1mZ#X3#1IfqK%p&)
D#$*Y*QFbH`"&1-kN#HCfVT3DbTU8A(2F"jZB9+9'cR&'lUmP)PSKeI1!,6$U6hJ
$h3qF)VH&U!b+Le#"$l#$0elicLA,r%@)eFBki`8#@FBrkPpP[K[&hlKd1T*(U"[
!25De0lC"M'NjT82J6F5e-,mQQ3dH5qJSd'D,-rj2bepkJP*LU3"NiM%0I+fZe@M
C5[`P!8NU'R&(1U-T8Ah+f08hL5L'5f1EB3GeD1`B5k[UGiR@Ve"rQDKAH[JHVhU
jX(mTP"#BLH#d!T1N+,04ZpVL#NkXNRj"RCR)9QdQe$3ErA%BG"$,)[#H$GbRreD
#(GfHGal0GJNVl5!V[TU,V5`'IBI(8HjRc%MQa0iFjRBrR&fk8bjb%-rX3RBrCl3
(0J"b%`P$2@Q*$b@[P[Q$aF(0!4"$kY1h0afcZ`b0R&2-NkS8Z$CdLp*d*fmMZfb
Y&F(iGI$&'UFl'!&GBrf"@G@q8B0'VL98kER998+DUTD9N!!#)0[hEbmX&RQ2,Di
Tj0%D-YS4[lMCrR+,K'I%CNKRK@+23lj$ZFkRqBmiNpThH[aAb6H3!#THlVBJFa`
[D[ib+X8ed(!*1fbAF&-3pA##Q!NRFl@3!&MMha(jePMBC@M59R8S)UZeAATK3`M
YmR+Ud5`S0iBj-59CqKPB&[!EIlq+)(2KiX9m'M@mHmGFl%"Mm)V@0TZqI*kY6rY
HN!#DT'2G`-r%&l$4QlYi'Z,%hG209Uj@Y4kYMpZpcB@q'K)!HKkF0p6H!e,!&'&
%9+$JVVD8'jkl+%X(cZp!RBIqkihffa$b(Jp`B03Y"&,Z,b8F6,[h5pX'k@[,$X5
bKZId,5UXCDlMqZ1C1-*1B`qZk8FVi2b%9HN6`(*[Z,Q3!*NhHJ(KHJ%Npp5B)Pe
a[)Gi$Q[Pa&5Dq`)+b#c1Hd#)fc0&'CCTL$*a)Up$CJJ(!)H)[VN02pLm#,S8['a
*Y-1lh9h%G`"(d@QHrk@I4Xcmap8jr#H6F@&A#)q+MLI)LMa+p,*RU(*(eAU[!1G
`Blq@b"kKED&fI"YR!PIXCRq#jH"2L,IBq[SArLe43EKJmZ+F!$B1*r6"9-YH!Ur
pJ`NmPY'Z1#C81JYFKMEYY6N[&EL9)aZ1-%@lV(MB36)ZSVVIBD(f%m)piP`Bh3D
L3%HIY-R6RD*KA2lChl9#3)`Qr'-4-)*1C4+rB3V[Up0a+[L3!!)ahc4h+edM1aZ
0FqLp@V16JHjaN@DEEXCCS5X)(N03)*JUq'FlI4S)AK[[QDc1H4m)5l8(9-($K46
[2$AfeTbGjfU0"2$qpN2,kH5VkH33UrCd&*CZq%B-@Gbej!Yj4-l&QYN,B[JYb9A
S'EH2*880BHD(H9M`@0pek%&`qLiXMK`Hc%h9X[-e$#,qk'$hSJKZrFF)AicI*,E
D[`LJX5eNbLeFMi@R9cfjFdIN%2lII,pCmGZ#CAQf($!-jVMf9EGiDj2cN@$"HL[
&$GJKi`%$qM2q-(k#ICqLbPl`pVIQTGGamBCQJZ-IJH13!1a#1X6%D!`q&3dkMD&
*++SYG,*eC4[105[LMI2jNHZ$Vi44G[c+eQjDhIe$Q%29DkXF,aqM!DAqM'ARAh-
YFJP2ia#4HArK5LSL1U5$le$,E#dC-c26&C,Qpfl4V19eBcED&VQe'2r'Z2F+bbX
5(i#4dYZe,iI&i)'LbI,4MV+MqL4TKLf!j@i"d)$ZV`*@2YP)#rA%)CP2A$AlK)&
!AVQIkl5pj5dG$Y)a)6B4iFljRJpU*jD292-D&q[2@mEV5&IND[I%(Bd#`Pk0f0m
P&@CHC)-N2NhVqpS38-6NCKadi(kj@pQM)@0kTNG&6HENBF4`lkJ!mAN0a+l"@&8
F2$6MUXhB3lTi*4ADbYHTPQC@9-VrqcZeT-BQ8e+$""+ZmTl6%[lk)$add5QZ)+k
mr,2K@HNkqFYb&c8dmrbf[R"aDJlqZ,+S&ZMHa5@4FI(I(cJ`P-kRPL-6P051d6e
@p+0rVM0JFNb0AeB460rb9a`0N!$YF$VTEq'4fi4[V#MHD&'3!+VSc"ChPIXMRR0
a"G%L6e4N(eF60H-M(MjND'-r@[4'-ld4TSJX'(4p$$LX+&Zl1j*4Gb6S10$Y5MY
d3cpf2M9Y1#%h$&q%(N%''$DciRDSpXpBdK[4#*-q2k9!UXPP6V"S*VTMRb#6Kj!
!+RrRb5KrPb5$U2q)NE5bPe5j!ML0VUj[N`AjdPB+'[DTS%c3LE95XBpFdq,e0BA
&8b5hFbHDbaKcI8G,++M2'BQ-R(k0bXlDeVqq09Gl`)8kdE4XNl'Xa,PFDI&"C0"
0Cb4$k9lBal)Mip"DffiF$9KLNC!!PK"P9&39854f-*8YF%9&5#5MJahbEUJ!6jA
q)868pcRN"mpaX$Hl&c!R*fJ"`I6AYk`0F+J(9GaJUAjAK+'4h+GUeMBF$0Z&0)*
2RlIVrdYcq@aK9NZlJDmECKp#eah+UHh2q@kS9rGh&4MU'fG3iUa&"VLRP*MDhej
3$+BqIGVL23#r*`QShH'hV96dE'f@!8**'UC)!q,EaQI#$ieHk-R2brX#`ZAlpSa
XTB@X`TIqC9'f@A1L"SadScr"p%#aUM'UJI,Efk2@B-pXD"TG%kr0(QdkN!#VlK%
YH$50@qI2Ma!9DP8Yl&4[(AUdVN8mhX-l@q"[3P0V8A!2#qSjGh"i8XpS(iH"p@c
hG[DIahRUXmfR+3mZdEa[55&L!Q[p4P#'PSkU*ZC$D@31EQ`,,%`6$c6!iH9qeYb
0`l6`E$hT#E!Ip'*9QmRXc+-$aEKNJ4$p,lQlaF#aF"-eAkih9*!!Ne6E0"9&PZ2
fbeXfkI#2QlCdp-0DZ8[pLXHlJaiiEfB@#cmaDbYDR4V0rY[Ba$[U'2Cfpk99ji9
fdB,K*KlcXc*0H&p4hF-kC(h)EIqXcZiJrc0'BC*C[2N+$(DjDdR')B)k51QE1f@
N$UJ#YA"err)bjl+J"EN,L)Xe,DBkB38IRE-qh9aUQ+fN)'"-Mq[-[Jj-4"qS@C1
j@%pTm)&V'HcA2$5!aAGEQ2fr9G`-1r)KZ3[kA0i3e+FYZ$-%Th&*"cK`%ckLX3N
%2Zba0H5-qE0CQ*(ZBajk9Qm"kker%`SraII"SI-EVSChRJ&b[h3iea@`($#*$ad
+eMR58Se`-aLkP`'bDpS!`GdKbbI-dVHffa00P8TpJ#ZqpZYJ6pNU20*AG`58'c-
cG,P5b&qbEAk6rhkhS9b-l9#YNG'X,+))B&K%iP00K3pZ19G'Q%BrV(@ahah3)h2
)[ZpeAKe4AVakic,Z2P3'%6m+c`Udf%!q5E@UQZhNZADa0ke0D93NkKBVM$,2fNX
h$mf4dGqGH*!!5bGVBQ+3!$bYfSJr$Eci)dr6(IH5@0bBpL'"N5pMM)!SGUm3Re%
mkXaL&ATF-r1f'"Sli9JS&"B60@X8!0caI(9q8N396ERK`6#c3-!J5'4J2S#Zbea
M@F$XfU!MmpD#19m$eXM)[G'eEE8"5fB5i$h0S-%ipJ[rceI2k'$5C5Kih!qTZ99
EC5Eq$4&FqeP`cS6"B!`HE"VH*rdZj*rqRG%5BV'##"JmNc`$)S$a,R3(e04%h(H
Pd22-0RbTh&YZ8$-qALU4TZ"L`j')@+b@G#NZCNV!DQLX2MXY$bbCKrBU#Q3pd5%
r6Jaf$cRbfTTQ4,-9liriGJC"J(Ad0[p,8f8'$U['#2,$,jIMJ&m-)IcJ(Kr%eir
(BBXiZpf53diJfdQ#jUJ%F&C(Ne')DrBQEE#hYkAkcQpIB8FM#D@YUQmEYcJU"S0
8'dS%NSji&JBK)MPpe[%'"B%aKV[3,!Ej@4bH6X"K4U4)X`lZ@Dp'!!(M$)N1Nlp
3K@qNbpY-Mrip,*Bm5ek'q'qm"MURU9bXFi[iAJPklmZA[a5C$j-P"-3B1`!03ap
J"fBXS#`i!@4F$Y(Td3UT$!(eM*a+eX4*ahFkaVa`GlUT8q)KQE``'%49Lf`r)$N
!TI"Xi@'`X+c@'1@[cGV5L'RdRk+@@QH9c458A+hj2q6'C6EC#b)4k0AYSBH3!"m
,'h81)m8$DhUp#64I9Z-US-fH2@VTJJDN$99`MYH,hq6EH4'M[4Uf[lR[r"59hTj
0Ajr&H[lQ!V5CYCD`CQc1J*&cXH1@&-PN(-d!B4flMIBBkdrHaFCaNiN%c`c9FaT
[acIMce-)Kr1[$jCh84`bdf5YQDUI,EQlKpKUT#UK2%T)NVB)A-+cH,Lb#pe4Acf
"*#P&,'"k9J9%p0q&Q@6MRlSXI1NBEP3''PZ"Y4rT$B`#dAGAhm!(@Aaf`2S6'qi
KD(%Q*1NbB%S@GJ5erVEN[`h`LMSS)T,39r&U,5$"dfDeH2T2I"K4#L+6CCXS(#8
cY8Lj%U#Z,T[#S9r13#,5@E00D'TZ"YR&HN3&DK%aRqhLm,#Fmb"CF"*[cd063ih
1,%31[A03@j*MM#k[mL-FI,J4(3&4GbJPG"dLrQ"IG#Acqr0hb+FS!1Cj(*DQZU#
iLAb`8"Q`"kVlrF&YKRbSf(XRleE-(LiH"kDG43i%$0-l-5Z"1bH2cbePVd#TX4S
T#0V,h(d@5hjBFdI!,E$UXNpYaPb+liVi'i'i!%!55hIcHlDS1SYHpEVPSS5'$F3
NUSrDYID0dX6idm)e6+#IFdH([0lIIZGcm`3#f5jhPc41Zdi+S0B49c"%0r3aYD6
NfCS@T34!AE16a%AaUEpd0Yj)b&Xd)d0EddL5j0,pSRDBA@4G-Hf$f["cfLBLK'm
DIViI-(I*hlr-Ed+*kCDk$!c@*3p*I3I%Z@YR5p'N',lq$D"'[B+Z'k9E''VM!,X
`VXbhAMEe20P6*UXrVZf02"b[K,2`U*`aAm`+TahJ(Prm1$AX,#LC"V2bIpmYNa6
*0dDh!)er4LX#4'9FHKr$,GCff@e8@pp4#Y402ZcEXZPhReV,fM-TpYhC5FD-@KD
,qI+FY0qkkF8R*AXGrJV,"S,h3GMMBYrleG*UHfDp1aILT!m&&+ThKXPk$E9([0i
'UC9Ma44)G@45L4j)HHB4TXZdZSPBS#E@XCZ%(BNpJ308BQKAXdl)SID5P)NX!dh
`k2eQAJB'NESZ#Zm(BA9,9qciQrpT)cV$kA*LQeM!f$8A2[ZIXr$03r,ITU-`NQ%
freD@NLPUejK`,-9%hEVX(jZSCU2*%fQT62EKKqb&p1,@TMS-LdDq19KmhZp9K6-
T'N%6IUF"BG0iT!+LV#C$2a2D4X(4"%M$9Fd+1e3Y6KTqE'#J1EZDdSJMPT2ZUi9
,-Ha!1!Up!bcTh$)9qV4-8d"ZA2dJcP!5BL,AT@aIL5k`[HHKjZe!1KcGd$,iep$
1%D3(QR-,bLX-D-)IH6$#-r[)[f9V6,Y[3DIU`PXabG2@B+9TdLAXfF'hJK1R0(R
-fFV0FI%#IKUPIESH$lJ-6eZ(#'mGQ#QG#($P1&AU@IMb+M4+2j!!h4SJ#'(TY&V
G8VRrC&Y3M$!L-YKdR3&1aRNYVrXATfX2%l@9b[kEXCY%00UY&+PI%fT*dQeqMbM
flF@L5b-MVK`*,9me9+eP&hQLH"qYeE8+V5`(ZFir,%jf8r$Bl(KhCX&`@9P%`qS
h3BlZY$GUP9iKrrFL6f6TT,!2qhpTGS[%qdHL1*'40!cR$$rSF)8,erMY5b",3P@
a@SeJTR2ZlUSBbqM8G,-'(GM8*2UJb3S*jqdhd6K`bl8M9D#el%DcKP9c0BiMqka
M9Lc$fT`R$M`8"D[r5frVTk(XY8Kipp,jY("DE2M[Qbm4FHc[#IY@phm2k@*%NC%
Q21CcUCajX@%$eL+DM,,NAlM`i*%iLCpbX%#C&622YDZ`-5[Tl(56K(R`A!Fq8M`
#Y3Si[829jG2c-9LE63dCZ'&!FDLJNI-cC2fS)(6-TbMYqlaXmV[,3cKFB(E)3rR
l2F[lLZLIm,crkk#aG3!H%Je3T!XlGLpa(4d`i`3MR9UKFeHLU+UGAiNIR(B&[`,
4Q"CUYm)*12q`P0hka@`Q!22&C[X2Qm#bjbmPRb36[RN*6[$8`HdSrT12bqrNSXk
*(fBi+4+r-5Sj%E'IT`c2FC3ck'-S)&D*qZ)r%%U)!A@l1@!@#kR,GE82!JTDl+S
k9Y')1AQ%X#LRL)+@irDZBRUj,Vp*NB+#Klb*Qble1!2pADhXbd'%YhK&5SLT90E
*)!@amr["AS5i#YhhQ+VFJ$GE)lFRkkPm[Taer*R-1MBSSh%p`H5fhHrS[6P994H
Q-6'M`fZIB@!BFR+Gq6%f&1D2Mk"rCbAK6mP[`#-(8`1ZIZpMeCN4GYTR+XEEcK#
FrUp8k"J)pkMie1lbcf5H%kFmaEU1FfMl%HQN36UB(SjSXP%aIK[m&@c@FQ$(p8k
HC5H,LecY4QrHPVSmZjjk$a,"MfmSSiA!-@J@h$XERPGp1KqpVG0eJA19K$TlmB,
ULcJr+i)alDpKkce$XV"0*5UKXRa+XjN%@6qbVN@k48KB(-Qhl8*(Q+F`(ldQkZi
Ta1@Sal@a"+[dALC`m#rY!i[fVk6U*rTSH1`YHFZpI%`Y3%6pSa-bBV'X[Ffa8hc
"8#QRMFpV2+L$Cde4Pf@Sa8p*"Y[,4FR2iI+-31hla8"RKSUhG1)U"h'MI(l*FC8
PX'B'hck11R+@S@!LSFZN#heV*c24[2Ti*-biPBRSUHh)%qeETiDVk!3"$3C"N!"
c1!dMN@BdIQHX8+efhCIQBV'Da$3!Pq%`1YD@jX59AXqMdpTiYjdNf-5rJ''e1)2
662N01(D,B'Eq4`KaT"EB,-U5JT,U!V&*eC!!$Uee6Mla6d-d`HFLe15"0j6NMTL
Kl8K&'khC#8-J9qGC`,d[U%6)%m5XEFQfY+!&LrFMUSB-jNP,+brP4&ZrC,%iS(N
L368p[rFc$LhmM%)04Yc'EQfT[h+46Y)L(ZHUZm(Zd,JRrj!!U%#rQZc5er#DDPj
LRajS2A[hUrRAj0d8'3ElX*G1Pa[6UkK#[eijE51*G+(('HlVi,`a0pU!!jk[5[[
L"lZZ(,Q"(dpK)e8T3NU91PLFRQ29dTDDQr4%GpN*Qaa,"+iIZ6lmc3NI+6[PR3'
EEchVYh"%c9b,dep%'[2VR9Km2YUmcP'JS'R")2DFmVP4pjGi5SX0fKp3qrRj[&`
)iBK3G4T*PjEbqhIiKe345LjmBUNL@Bbrbi1+I`(0qCIh9r3MplImSr`cS*m(LMh
+VJ!!k[3'68YJ*UkBdYQY&Y52$58qQM5Se'@aVRM(9cc8leDp,GNkK@ITH""C81&
HX0GIUlqq9QT$0Ub$HP1S91qTkrS11EQhr#lh"5iih*H%&kFiI[5bN`%%0U3DM0A
FTS)iXS54fjIkV`A4i1L1fKamH0TB1MeYFFq!"1@hp[F``68cDBX[E,Fa,%KiaAU
S8pZc#UG2aLrQFN,l%2293PHXXi'e1i-%Gi'cPCcr4"c!Ihql4!G$(cN'UK[APDG
)[kq!N!"DAE84a+deLD*dSbB'1DY$a6*2F"kQK&qS'S4A"+&YR'e)-cr)[rd'I&)
q-Z"X9CM1m4kBDNUFMURjdfAh02*#VPYK2r803U,0pD6h4,@cZ-R'A$PZ$Y(Z6aM
,Z+dFIK'+fmJ)LpTD+0TN'm&@JN[dC'A*Y!,0)Ic*U(XBBb+9`[$qITVF"KmH-03
4Y4ikJ0Ic#Ej)KmDbT`PAPMAYMKDZl`B,fc&!J#CC1YRTQ12lb'35p2H'9l9GmI&
IfFT#i10`pqk[%d`K45$E!d&peM8BUV*&q!"E,%!f1&+#CNN%Sl$d1FZ`#hca4"G
BM%9p[maP1KqcGi)(P+CFLi@+IaKNi@F1GfP8BrDpZ1U[HAMqG!XqBPhYG@R8,bi
'8*KE6UZ+BRqU@QS@UCck)SLm-*iV9SRDL#AE-2**pLTSXKl%6Zemkp2U4d)BN@-
ZR#P`hc8G1eU5N!#j'1*&&@)cZmY"cicDMMS@I)l@6m+PDP[HELqe5$V$&L3l95G
4E6r`&X'Pe1DcC#35HkpQ4N8(&4V9p3KYp+Yf8$H9QZ"Sa2(9*le4*h$!U%eSk"`
NX90NNAH8hlbm,rbZHVKl"F!Ph*33$m2R+0SYSCX#*CR!,f8[GM62rDL5HX@8S+J
Sr6GH6p@[GmAm1PAiX*YbG3RSh$iJj)VF4&i(ArN8PH4jEP-m[q`aJLKeCqNHdTQ
XhD6+C5#3!+Kq2G-'DCST)"!eZ$qGk)8jGTr!Bbj'bZKRG(#GrHRre9YdHSp%[Y[
QmkkrUS(B5PjmXDHffDBN2hKTbXK,k1HaA`JBp*11!8*paF@)K"libdc`[j@fq28
iIV%'dm5P3R9TBl194j9Pjp8i`8S#YYN&4a,6(TH*F[4-95+mkLXCDcZJ[%(%,pJ
jAh*hl0f0,8TQ-FimFb-8Z#cX*p*#3&eQ*Le%EkiU-4ZN)I8DA++R0lDp)kdE,'$
BfQ61+d*82aADcZmbm`r0ARe34VLCSLq!(p*TSh68$-$#H"4IE*MCZrE[T33[rdB
NmMkIVN9TJ$NliekiEpPSL'4M)F2#ZP$C[-L3!!p5VQcbM0#3!0bT!p-(,6"f!A9
%9LlK'Z"m@YaSBT*!!me8c'ZR(B*N'25(DmZcQ5REGfFE`+0(5DDq9%FUbEcCF8B
keN%)4&kLZmdkHN"Qidrf@Q`[ZX[G2F'5YF'SVQqLQpl)UF(2p0qQ'"9pA*l`PX"
KcEREN!!Z$(rC8#f*TT1"#9dJL5PVbc3SrQ('hB59MLDCFGCb`S5S9+A&T%&MKB+
IlI)cA'D[!p0-3mRJM'8)0FdT3leCl2mC+B+AG"Z@V*@)lqEj"i$*dCifh'q(XAL
0i0H)iZMHRSV3jAX+DpBUIqel1jdi-C0e'r-#2!N[@`3J'HF`QFLLUMVcred(5-c
GUDrB"U#aXMhNil0FU-+E-b9Hh+iIB9UmFmU(*hIhIrNhmI$TV(EK&eTRDI6pLd"
k5Gk%$+Kh-ZV+&L4c[c@ND0FSijPGh"!5*,cF1bXV%E)'mZ$ji8h@E+N5eb%VR#I
24(#p+mPrDZr!%+PP$5@49S5SU4i0ZBBD1kLr9)M2MV4%I,,2U2+0,4q5-!fBCbI
ArU11I5ThG&Y'`C!!53I+)C'f@jr6N[3@ILf)NTC&PQ$8B%r,ELS8M&lUCq)$[M-
eG,"J!ImSkREIC[QILCRqRlk9TF!QM2iQ'PkJJmr&f#*`#PXX2%`@aq3P,%d2*#a
jY+lJUT-Jb8K#H1NY#9dPfBj`rkp2VTF3%USNZSFJkS0[Ep%km9U'&ae36DK3$%E
@-IH5J1aaaB8[3Kh!Zkh!bblJm(-&NmV!iPhZLcE#bDZ2i+R!6@dpe#cF'&Q8Ze-
Pp"C9@4!q+D"cRJHrf*D%!Z@N!b)-!9iAcEkA#h#"d"(YlGa3(rq'Bb!DX9X"REL
lqhhb%UAkC+0)SpKi($*Ar#p02IV&5`1``"Sr-%084!,rT9d$HN-J+&QTc(i1#Vi
9mBD$*JKYi%G3i#b"FY(hD'mYKU@Cp[Aeid[Z,U*cBLEm'!JJIqLBfj)e"qYl,1!
1Hb[!&SHK`9qa%PBHGdq!V3GT+a$V8@jE$hd5LFMj8c)"$94",$'1HHj%dP*%mT@
!JqY1-Yh2+a!I"FJ(3ec5+4*pZHAM9qP"UZZ+"[I5UTEZVAZCdXNShVHpAlr*cb-
42*X3P%D9Yi"pUp5!0RkHPHU8,5%`-4@GrGpjc!jT0[8'+%G@IQbUe,B6Zr6*PCk
c!8QlGX!CYN@FBLPDCcQ`RU43KjBJHjlN4A%f["-RH*SmLYec*[Fp4QN`%R4iJmU
,8GUa9pA&U[ipcbC"Ree%([#'*VI*HQim9A4HX+kHBpERhAVM'YT!h)E1'%3V)aB
4E1p2,b(3bIViGb(SD5$Pd2aqpb$9KM&&&I)QAZ(5TiaFeTmXNl*1K"+TR%Bb!((
IT@[ihJ!@%DFU%V5V((hT@0!*24*@+43iN6Bp`%85bJ-N$+DbRRaiRGALTi65U$S
$Y@himh[l&l0c(mi!b)JIPM1PdhLIN!"@ZfNIE&DQV"1LRJLN8%A44iTLZcTk%3L
SUL,19`&+l("0%DG3p1M"RRXJ,8C6Z+#er$[c#C@,5p[BkJ@Na$1d!F#S1E'K6%M
)@DaCNa0"3qUP50qmd%-3j,BAqfM#drKBh&el#4h$Q4crj6bTK04!(bE2lG"*c#D
p'm8'lK)ARFJFRaeUYGlI)S-$G(mZjkiAla+9!m@P)U5HkL&h+I[1[`(6V3bp9SC
d"m1B[PS+H"TiM1IY`+9ECBmIR-mdD%0rCF%T2,AFqRYf'MaZ)lUU[dUrNr,"VND
IA30M`6kGAk,LMKUaDl6F$fPKDIdaXTd82`Q`C@U'(kF)(haYl+B5P2"[*cj+E)6
6hZrZqR1f23Y@63JK#EFEMa6JCHkjSCBN1f"heJkEPi93k$2GrGjar4rNEF59F[E
UaIRfKId-VLJf9pSVkIJL$iZTM'DKPp9jF0Y"2jVN0ZI1V+9T14[HdQD0JIEJSa9
qrXQh,AiB'5lR+j3i,6ljYEG[1B0),"JB[%CKd-Ke(J!(*8UK6&0F[kE)a4B,DDK
!X6$ckj!!AVGAB,PQm3i9L#rHH(LN#(LpFiEh(l1ca&ce,+lKEf6!J9$BI6Ad(le
@2(lbIU3-[5*ZIXj+RQN2a$9hbK9J#9PjR*PeEK*h!*mjDCZ%pVa1'F@)pmh@hbX
8@)#J$M6F3jdY&%0)pc"&NDqE2aR9H&`@81FHRV,+e*Ycl0bV31r(8PqEfY1$BAL
hTE1Smb"-if[GECSS&`%l3C!!NpSQe6rQ4p&2SSHTFhHXBC!!$2Xc(2j)*5d'Ah2
2$),r$ApjER$NjD!RGUmYkGP4fFGZa6*K!1(aCkGq&8AaqGb[VS@*2[[qdENM#ae
Uk4c'cVC!qG&3VPV@6B8cT[m)a4m3,dX9Pc['H!DLrJa*U'`Q&VQr5#X,YFY9&m(
6eLUi#9NBLhJiQkQ-$@hH3J&6XIIf6,Gph'qYKIa3eDTdm5cCI)Jjkp*b8&5ZI1U
S#fD5`201@$b5'5mpFjMmJ5fFIY00)YVliRfeIkhC!TecY5$UIfYUja4`CKQD`bK
@-pX(4j,'Q'fmBHISmDAKek*)Zef&)STia,!9`jcG9c5$jhrllFEhfA4j#0H)VlV
2B`(%bRENV$$LPL[Nfc(TkQ&bHV1j5I%d82l3'!SPiEMJUGbJ0-EZ3)I-dQA,mcR
kFjk@V#mj0C&6j[hhcrXP$`qU9Am1hS`95Q"D!c"+@B-M!IUQ$-aX'2b"2Zl4QMK
UJ1F)eFYUV[*p0Xi[8I%0$S%KJ9#+58#63Y-fNY!SkZ*J%%$A)$r&q[Rj$Ve32$U
%T(+PAS(l2&Q,%fDKFS)aY#2Z#MDkFCdY+Z&Hrb[C$"16AY#GYjj-6DpG[C1%4GJ
`p@qMJ#4c9[@j!H%eB&Lm5GccUM#A4TqikV-(h*SXXcpRr`+(3-N6XfN5r$"Ac+K
E!*p5H,%`E'e'ja$i2e+RbrT5P@EKl$N*)V'&@"hFQBpm(1QBIm'RHH!XQj)@K``
X5`l!"6G+kLKfl8XdBD#p1dcb0rk&[Dc"i,SZR03k6m'pSL`1L$Zm$JN1*'HLU"p
*16`$b"U"Xa&jjB)AqQVfLkTIXq4dq44@VNh*URB[MK,@P@TSD8V5TC&#QETkQGG
4CCL$#XQkFpH('*-&L$6(RlA3b%S#Yi0mX0rQ6*4a1YPFaUmP8(*UL,Y9X[Q2cBU
-T4S*Yc)mND#0'LL2N9,aYQ`V@YZ*,0fIi(IB$j38K"D+BQ(1V`)h-d0pB*R08XX
-U8m@'$6jBf++"f*Iirl1FAYI`eFAadhNJlq$Yq5l%XBN`F$"(#N#Q4UP'C8r'Gb
P%bk&2m5XH1[!Mp!l+hI``EGK#%M9AJRm")QSLNND*`l%%hJ-`'L@e5k)9H@rfTB
fNd'UEhFPNkr"&'Erij!!8`0Dja*"e*!!a6'P5@Ca+NN"5DD%V9qM1T-fHr2,$Sb
#S4DE,%&E,IK+PSmZpcIf8$erIlQR4QI&NHeT@8M%'aTE5M"MRE##,9TA"-!#9"b
ja9K-Xj!!9`"R-))LJLZZP*JSk43QP@%#a(rfZG(1L&ATVlDZ'qFpB)be3MUPX'A
b&@[G'%1ZjS,-LKZ2%+R!*+cKP8Yd1UT3&"eA!2fl'QVbdBdfdi59DaCSPQ`6@,@
#!&Qe6#5m'HRrc15+-#pILiEIM[6L'8,*)E5$NLHhYKG)f36&IV+,66X`ALJe($$
@0'XfY@k(ZIi`#PZZ$"LTEG#L(bbY3#1`rppSDNTr)`"iFA8qh04%L6(Hk`3G4a`
FbJHNH)jIN!$1fpd2)Sm"A!B35rh*8)GD9M4mS!9J-VbZbAMP,Ck&CZ##pVXbc"U
9@R,aAH$&cqT"D6@3!#f(cj,-Fb013YSKC$CLVaV6(RfJqV8$"flD(&991GQ))1A
CD1r)MGVYd@le,@KX%q+3!'[FB'(`,&Ki9TLQK-,KHAV,Kl5QH5dERNh3+lJ3EdK
(C5TIr(U%2S,,+`ee"JXG*KJ4(IR*!)@%QBdb+MUQGQ,JkCBTfTHHXh$A2[*N&M+
$%a3V&FG1HFle0"%9TBmjm`@LL-Qd"8lQ#+I*2h!mS2ZNV)VMmZNMN3Yd6HbJ0@M
FVaYRRGN)e1qR@2i5"ed890SeV`Pmj&,J"L@4&pE#U+&#D0k(lBIKR4Hd)AeXSPJ
hIB*q@bmc$$6m@&b3!!'!4+V'"%c(2CNbc)H)PS#-Qc"`"fBU@C6Gk)[#+$%*3QQ
'V0)QhH@LDU)bN!!`Fe99eQa*)C-"6[GG0(-d&,&f`$`PfaQT"KNM3j[QLL@"d6d
,'831R#kThGaXL9bqhQZSYQl+0b8d0Di20T!!3N`FXPb@(%m3Z$LFB[DIQ4iHjkc
`MC8f&R2VHU![[+!+MfIa8J9NjEF[-EEBl+Da*"q,$dG@(ac$VU5CGACC2e,fM[$
MhmFr,clIZ-G+6Z[QA8`(0)!XY-Ja!@9RXp%VN8fmCpm$4iqrSH'r!dI)UBQq(aN
0fZp32P+S*&SBV`20(KTM9VF-L$),II5DJf"'5Ph$E5'Y(qVhZH34D,9JRR@NTdE
IZp6(jh)$X-6Y2(%!FB3E4@IRRpcjA["@0"YMJMb8&1SlG'HXQPP*-KdBqPHmF43
Ue`XSj`Nh$hfh0E*'hkTKUJ*kcD!!e,Y[X62[G`,KL[Aq`$%4H&PH,68DM-MjZm[
2UD"ZKH"*(5(Sj9CXQdr""lr+!l)VmJ+QGc'4LZ2RQY39P4&SkRSY*UjI1(Xd)@F
PYFDhXmYH8%9C1SZZUcBF(Yk6X#k-(J%j)IrE*LYqLdE+K9bP6"TF%+d!eDEJq8a
&eR2+6Ll@L2(mBZ8bqDNIkhc(EQR-5)#V5[lQEZZSqPBkZc5q1MANUakEq)!#(f*
$X+HaSQQMA(lhF(5r*YE,*#cceh!K,fM,h3P[CYrk6Z'QP[NZ6*HfYb)&&893L5+
VFil0DS5AQCB`[D@BDRD@*9TG*%XiL$8NIL!VA8haPk((#'p&#G9fZA%4!+h034m
q23,a!$j(3frUeKCENAJqq3!(F8)%"EHDdlP+f*Cd5*%a@h"GFSrRbjL6&+,VrlX
J41DYG@"[2Xq-eRHd1D*@-qhVj[#`N99q#'(&)"@0018Q2aP`Y#N&r6BCXX"h0h[
AX(@I@,h)E'X0#NmY[e1TeM['BVa(cVKdrq0FGh2FX9&8Q"C![aLNG[2r+rB4SFD
bNTX+4jGr`)%0eP!c44A2FB"1)*!!)6QLYl50bDL3!2BYIU$BHM$rlEXl5h2V)D%
i%qPX4ELPbqccKfpJG[,FQcPpND,XbZV(P*@KZTN2S%4#I@p9l`)0HLArQ3l+e)-
f4)bUNMhp3fRrEQiQ+1#r2RdB1A6q0%#NTVlRp'KJZV3h(Y)0fYL&1))ca&Kf1@F
29DNGIeKBNMQID3QJj19'%8!Z0"C'Sj4N-2%F6@bZmL8p-X4+H1p-idEf1J*m(eh
YMX(bZ5dFSQf1M5X@f'SB+a*dl$D,EBN-9K'"FE0qU51qqajURUNMZ$pQC#&jUk3
V-H30Tk-5b8f-#3ph"aV%*cejK&!$P&YY'feQP#I*dm14QMH`25Jik5)b55pD!2N
AAUi*9*d2edJY-)H@BHeV2@bQj!%a-(EEDEMXCGQKeR!'a%$`NHjM@pMkKFYY#%S
$B2U4q4Q9",ZUfYYpPbK*h%9qr,!p@pcbIBlEai"mN!!lCMJ*'Y"C"NF@a*r$D%(
6pl,,DhrK1$L8firdUmX@8CU'f[V0FlIC@$U-ZImrSJCmiSE)GH5)hJBeCc-MP90
0UiZa9P+8rh1e1L,HkNX,#fMNIYaEkQQU%ZZeqLS*0(JTCq1mrSa#`5T1&EZS52`
)@P9Ui8q5JhChj+0Sl3JhMR98#36DBNT#LXH4-XG+laBS[eFbMp+TaSYVIiMU@+V
('B2[USI(9-Nka*A'6KbG[X5e3,([D5&krM$SS(DbrV)NIH$Q0GX%(Yr[`e@Q[SE
9K9[I0&F(amE[k6K2a8QQi81T9$ab'ZK)N`%`$@&B9*HVFlGJT4c6[45l'2p94qZ
)rm,kUeY,k+aJBBG2qIcl6m6eP&5fQm,Y-caF@2Ap!-pmTmNf2m*lY$3)G3-!ch+
$H&3MfhJ6Ji2EP8#QJl)iNJ9TQP%!hC+$TheEZkH2#E4@T94j4)HS%qGi4*9!"kG
3k!l0p%lHkkb3!&KJc@!d&JqrJ$UR9(-J1&4eb2,,PkF!I(BLm83N%rQ$NIfGfjA
#TS1bICd$02RM-QPJ6GYiI!QdTrB*GrI%TcEh'X9e!b6MV(Ji(+b6p1L$c85992q
R8"1@H+Mpdhq992m18,eEKMGb4Q2I[9X%$JP[2hcDe8T"Z60jqA#QPc2Bil#Z3()
&800ED15!AmfKATUa&bY6eTfXPdpNX(NRDYQjP$IU6A5-8b1GcUalImpj6fU`Z5G
ef8f8M#%hG-j6Sjh2V%qCX(NRh4@jP$FK6A5-0ad(D4h+@[9)9R(Aq6)2*(d-[E*
R23B(LBE[h!qXI-cF"QMr,1"DQYa@XNqj,('HS6,-E`6&&CJrI"8SP(@P6A5-8`k
GcUcHkmpj6mZ`Z5FN8G0N""2bZ9SHGI80ZMjppDrQI10XYhe"jB3@%q2h'8&EQNb
KcrchFP26iEk@,h,KIiBh$Ekd(IAj$Rap$DeSHq@I'%rMlmHH3CUZhi$mYpEADTU
c*jPbLa8%$R+c(M1![!`h#%Um2Sq!l1CpIqmG&ZTrl0B6dlI@3@UDYi"6)iY&PKe
bXhmc$SYRKRY+[,52J%V6D!M[jS0bIq`G6qV[eTk!QVFbeb1DeLGUFV-9Q3k,X`3
cFV`H0i"+$$i)J,`6dhERE8&UQNH!8b2K4CBGFPar-`lK9iCl$8DdMi!0)fJ)j6q
$FRmY$NrUj@fHJ*T(-YFMQQdRDR*F&CN1i9`%-h*'(MH!$HXq#)"'jSpr,3jpkZ8
Y&K0r4pC"djTYJ'SM4d96(H&FPM0biAq'$JeAY(Z!4L12#!drD(,P,B02Iq81RZU
DE6+!)dGYefUDA#HCFZ%9"!jbA"icJ%EVG3J04MjmJ#hQICRP$KBKQ5h@%k"(E8(
GQNH!8cIK4CDfFParmRhKl-+K4[aIQCFQKR'RfIefMq0jf(qd*qUMXDZ98k#j3Ed
c5VNZ8cHjP8'JJalJ)H0ja(cMHCjeICE!pphp`)AMrAD5p`Ep`-)LHD!hIj@8M&j
)9Xj6NXbBPSm9h!CSrbcJ@TVF9V*2P#`3ZG-FMpj2R(TjHCl`pC[I#+"[kF52SA+
U(J4pZPiHmX-p`(AN8MdqI-2j`(hm&JE8)Icj'41JQhP"hI@Eme-hUY@@YVTH$2*
pUPQ'Se)pY(c$8NKSj"D8'2Mmq3C2)4CjRZ2eQprA0r9j*chMAKlm"UTH"2RM24i
h@e,!2RPE2F#2drN'I9i@qG36dqHQiehR!6eGb[0650ljr0RH0IRChP$jf9F8FU0
AG(QM9iPjSkTSdaH0IG2,%Nr6&cM#,iUdIG1+JAh6h9*2MfXEKpT5%b8DUqKm3-S
eJ-N392TH8R1H(I)@38LJ"0G)S-T6fETqr0QkE2RCp46j8QJqFV'R8pFGbSB)4K+
CAX40e`j1(QMSPGr2UX&pi-R%XlmcLZ5Um$ekVR`jm[K6%@ZKIHfIIIFa`A@HrBl
N,pf+HZ@2ZE2%r+eV8Nq@P5H'Tr,`3E4@'q8pZATDMpadf*AlHCQ8qX5MV*iKIdU
BG6ebBlb8FqmfZJDaTm%FlcE2HfmRIG12J3pm9,!GfRacVa)!`TGC@iDK,1-Tr8B
"rhZhqe6b*E5NT2)[+8kNT#m['I@N5LrjK)pGR-(KCI[p0A0heS-`#qKE3f[f,qP
kS8(A%+jiiVKl15ScfFC(QjNTk)kJ[aI"lLf0i#RHQ,i$QJ*33R)G+VMMS8Fcr0h
SQk"I&ilZ9Bh"+6iZi!1A3Vj#aqkBZ)0C$c-bSU+E8CRrM[BTC-(ZH!rJ+HaUF31
U1*K#8N`2Z054SM1K52qEpJ+8MZjCq-%TM%EJ!p1UF8+$ajLirDN2-pQPSTZCI[q
1S&pN`HjRLq!T[64a!eeiQ%,eL!qiilfL-rbbrjZJdj51l[d%`5PBFBS$d6"H3Nd
M2EMi&rNce%ZEQk(A%ilfVLM"lXchLLQMAPi$QLBp3TFhqEMMi*Xcr$!6Qk$[Eil
Zj#l"+3GKLJ1'fPj#SqE-Z&)3h$1Zc+5ES5,&MU"6Em(Z,5k++H9KAJ0G1Fa#pIE
FZ-2kT$2mX,QE3T@CQZ(ZVK[q-`1dY9Q1S*HJXEJTHb5+!p'j'd)Z5#+i2R%K-kj
1F*ZCicU1S,5$`Hk$EILilV@Q`EKG5[MKlVf$kVMZ0[,KZ"BGkSZfJ61r55@3!$i
6I5G[5F+af`8*91X)&43eem+(A#kX6d$C-(PBHRZYV9YTkmHDZPfKL(((()ACq56
8@de3C'MMJRXMVk"@am@e%$GpC8R6r0*VGjT#[dPh2N#mVLG!(%#D3-q&c#(iq1-
'0L*8fmm855Ee,1`9MTRMH,HC`6ImKlH9C@Zk#01J$j[U#a4c(6S,$bk)&d!*3(d
"ecJ`r!Zlr'%k)RZhZRc#V11)R&K*$rk6MhUEZV$Nc2`qhZK83$)BY93h'"$(X[8
83,cHAFE#mS&r3#-pdX)*,F4i9!H(GiT!`Z$8TPJE80KV19#j$V3`#`Xh%b"(DdL
I&0NjH!D9)VT(0XbA@+DKJ3jEAPKB1#"3Uf[#5%eP%29Dq8#!@N*kJ*+2)jR41UJ
Q##F%GPK4!ZK)$,JklEDlDfX[SIH13"-4M(E#+X!p1Jkpp(CJr9-J0+-c8NJ"B--
ehd$((",FP%"4`XG%mKZH9&JpcpS`%)0i)RP`Z'!qG!HcY#+kp$f23&ZQ1[b['fX
M$bBFI`r&@(qBb(VCQ#a!fAK2lEeJEP1IFP@i3+1$Db2N0a[#,Ir&#-HmSA[b%10
FC[qr6UF1QKCJ(I"Q(B,&B)0U#c4`!cU2Bdhp(00G6YTqDfX,U4dc3"a5XCeEZHe
BPU'V(+"i@%jIlj@C&m)qEFa!alh#PfED4e33GVV42CGF@"#82mM,@%NpJ!XF`r8
+28!k*VRS1,C,Tb*Gp$f2HJc&`L0@i2)h,-))(H9B0q[mD3FL8FX()[r,j$VbLIi
j%cJ,$P3F2NLRB2C[1Jijk2mk0iiE@(f1j,fX8[+Yb4c#fFf868"k"rdX`S$pP%5
K0-HSGN!2XM3FrYh--&LZ,KZAriGp(AGSG$c(iil#j-#2GUjGFd"bb2d3'c1$@Re
Vj,dLU&JhKrqJadP)ZU`F'lU2&"XG'QCpG9LYj"6M"SQrGlea#he-T2I##H,c`X,
ALV*fDm9CpQXF+Gll)-*hq$fS3EqdDeKJFb)1dkT*3)$8TkCk"R!c1RB,5QbIDrb
EH4`9'+((FaFf&$eBID02@RM8RCYB#(e6!"`d&Qd,-Y4V&$jM@(N@-$pd`K&6e%G
!IDTm6mJL%&RG#dK+Da5*BkeV@#H2T1$N-mbc%3DCSA3r,%#3!"J6Qf[a1UY2jS+
4`*2QUaf!FK"k+dD3!-E&k@BbGq"PLPYGYp-+-QmSl48`MJrQL*@h$1E(*2f3!2*
BV@iK(CTYfc#5pVakNDdL8SiE92)"&k3'FR!*[PcPYZbeFBG!kkqY2aG'Xii3cK2
epXVHPC8IbQ%2d-Vl9CNmh2PS(&KaI'hq[()'cHi"YBEZYed*4XFfZNA(jF0X@j8
MY-0bA,TBYclKA%KalT1k`JGPR%RqIJ'brZ3)9F&H`P[)`E99-+C!8Ai#($GkC93
,`%(YeNKCFcp2*G1j%EP3@P`kEfG[i(BRZ1*8Mp@C[81&Rf&V`8@GqDmS8Ql@91I
I$6JK-LDS9RiD&dAN#$S2LYdNcEFFd)d)i,pmrSBr-IlY`j6B&lmT&c+VQ%B)T&9
10aT!r,l#D%iXMdfYSA&ZZNAk*RJm4ZVkkM[UCBZ,0LMk1-E8B8,`8+I%r5Pik8X
Q5fTXbM$2S3&!X6)I#p8*'rF-Xp0I2E6mp4I3-(fqCp'TcZqPD,Y#c+$QSSPC@QT
#YP1DVC!!9+B#L)mr0SlT[H'bLpPR!q'jRL6,d"h*DY5+T,5!+"Lh[)Y`G4"N#F!
Y4NqqU"!$53P4ffqV%M9QM(B+%@3#@2a!A&Q[K+Be5Q3A'6hL25ZVk4kG`M"r$AH
kaCS$A#qK,CQYNFJRBk&$jP(2cke&"bI'`S1&PUFib,LcKcSqDaLLK1Y9$MMHPF&
pB4qJ6YR6HihfrPqcT&-BbShpqBqrFJZQ25MpZ3#HGYDrHBE[lC59!E%H8%2P-U)
94jf4(fXf)ELk!YEhc*CJJNSE!Kpa1D)Ec@qLl",41*Uf-DImpq(I,p9qdJGQLi9
Ba(3T51[!paLd8+XeT$+@hj1IRH$5XG$@CTk8m&$bY5,ib"DS(TRfFCj,,LXcP-)
&AYe5%d`,dVJBr3eCBeZX`ce#)i`2Y#@%"8T0f1rPGqXT!Y5@mp-[5P&F4+h(kAG
(D0p9heclflZ$d8HPH3jM0LN#cT5"(+!@k(!('cbj-'cSq@IKErY#e9h49TV%iG-
,Q'4dr[C6%C5#1CAIUU8h+%q09QD0p6i$+-mJDfhTK"Pl4![9E#e6XGbJ&4PASIU
B2"Rl6B+M@cNmN@pTZ-fHqhHi"h6QIC*$jk4$@-J+,M%3'Li0%aTEKId4Km33dN2
DhB"(2(G%mNHSE8cD3XP&(5TAH!hY+%2q4m(rR$pB(L&$B#B&Q5d*89jT+@+hMB5
E0)9NGY@eAd#2)X(FhbI4F36qf@TVlGX0d6(!$++j4afPHK3Jc(-i(Z)8b54&ca1
LS`afXE,Q#6Q,SVK2N8`AClYb`E5bT9BjGH,Ycei&N!"N90+qH66r3[&Qb3C+G'c
[-ieq"dj9E2lEV21[ESK1dR+KSke!XN,dQ3LBDM,r[VRbP%P'%r8Yq4j(m$Ad)6S
K*PCI&'HKKrlZ"@YSVFY2!8YA"(BDIdG-f&5UZFEBKc4Rhi@4&YQH-8fcac"0T`A
e8"+c4'#iG0hq+r2%+maZZllEdcAC(p$JD3#Rkr0D+[mN,d2fjl#@c3a-NJ98-Hb
q0%1kf,IYmKq1rl@e%,Y1RrHLGX(06+)a,mK@8#rEKa0KNilL+-kYm+(!b-EjA2Z
A2%1Ff'"cY8kAZE41qU9CDY4fR,+P[q5MIJA0q02m$d5-2RE4D&ckI1,9-940bGP
"r2YFKiZLBc$M6Gd!4f)"qb(AN!![cdBA%@&A$f`''1TL0YVjFJ3pN!!['dRc(V@
I9IMe6%4`cjkm5lpJf,8X#$kJUHC`8BU1fTLl8FVN2YLJ)25Q,%a$L3&i3p,q%"A
56I(lTb"iDAKbX(,1hRNfrGiKIj&fqkJ5H2Vj-&q6*X#R(!Yc[D(150MrY8R5CGX
)Qj1hJUQ2b5f"FFeR6"T2`q!mdmLfIcejmcrQc3X'JNiUTMqDMiSR'Z,F-6R`E19
SffZ[5@X'1544MJQdFSSK"'@(mC-Y65lr`rBQ)krb"$RYBG6Y4SkB!X!p'kTRX)N
Y'UTJmk[VPDT3(QeXilF2ZpJL0Yma(EBiJeBF`PV1[*!!2bYCM[I3TR4aMeY*`QK
blb!effA$QTirr")AE6Gff[@mDEDqb5h##4ZQ6*Aeh)XIAf[(hLqrS"5YjPZM`e4
E5"2reG8HafaBhJfZ`q"E2L-%$VeYal6eq28RZVr('2c(m-H4``Fh&[cQS$lZX#Q
k!r@larh((X1Dr2Jh`YKEU$@lXcbS59J'cS6#IiRHKMYKm9rT&U4dML22h$AbDaM
mhY`i,,+dJFp"DbNH@!lHjZ&EaM1GHL68T8eQ$R6)84&0T0Bpdpkrhq$V!Dpmcc'
LpVbJL6R!mc(F2`-1fFXE6,1"Bk9ZqMJT50SiGJJ[G3E#1-#&)!"QeIk&KJK'kMS
ipY*AchfTkBQkh'fNI$fGNqrdGS&%p"jZZhVVc0+ZiVTF'cV!9DXfmE%fGehX`KM
Y[MrKbjpU-URZaFJ`-0,5b+F`b2B`dY,)06"VlD[Lk4SQ8m8DCC!!fJI&8pf6ThC
aN!#4fm%R&(4%)ZcQpDCQ3`*)DFbKDB`2fG0beT%b"b(XLC-QjV4p2fbVemAK40c
q""TrLF(XVRj8,5qApHhCYGEU$bK@DKiNaE[qiBEiQ$NS'bKp3*K4dD[dD"D"!Q"
DL4"iBLC)3rp%(46H!8L%,0UDk!r'*J+ZaA@N6NJQY,qdQN[C1mq"+Xbr-Ha!56X
LTkaI3SB6S4-L5"5j(LkD#THKPl2CiFXkQR!J[jc9(a9B4N(&G2TS5TSm8C0F1KQ
Y,"$VaMjNIHmrfESX[i4Uleb0a[FCZ0Q3!*fFr@U6kV[[VGNNC$3GBH-Cj2d$KI9
J+qGk9Em"41je$"$-D6DY`1`dY6`Jhj1d&T801P5+[BU,a4+5Bhh'f1X-EZ%DH#M
d#5DD$e+15b9Y2(dkB4MmDD*cFdU"m)&6IKIaAcUm(2M6D,DGbJA,HXIZiVBqh$-
ST6FrD*BAIl3G9(DJEpPI`l6&V(bq`lETeJRrF$REj+0S!H'!5J"XE&KlS9h#,#X
P2@NKq)dq$KNa5!RUdrUl8klZ,Nqa,#'V-pDGfXS&DIAXBJUfXd)2%f9PK5C#qDB
`al$QTFS[NUB$mRN"*Q-VeB4Em`f)MMj`B!lmlPipBKjRIS%"N3(VMK$U,dkM3T9
VIJ6AER&(i-l[C+&Nq2@e,aN5QD(&UaeK98,kHa512,0Z"b9MNK1(2$*!U4qfl$4
TA#aA'a%JhGeNT3&Daai9MjBEM4%fBQ'+aVZ9(6C9!8d5*d`)SVcdR#!)3Sa4F)[
4M1Q!h"fE9)p8qAqf&Uf#S'dVk)EpeLJ%YlVV$SC+*TbAlA*#I@jl9M#Q!KS9Pa$
4A+"-&ci%m&QPH%3d)F"jErV'4hY&cUGe*IVScXYB!5JM9+DrHfamN!#&1NNfrU!
ZGQd)Ij!!$YCQVL[IZbQ611q#aJZ0TA$dQp4UcFkJB@))bNim#i1k@q('JrJ2pd'
`r*Kci`N1HU2HB84L*%kS$[MVE!+UUL-hV$YKe&dG)M2KqG,V$,6VGHiP@91[6hc
HTVPZrk1Tl,Z"haD`GT!!*8GVR2cQS)EG'DY+"a2X"#"q#%h62e8"bUk0Bc$90D"
e(3X2PLdfaX!,)E9B*IR(Ji#528Lpbpcm6cM9rd)fJ`hALlQBCE!4NXa2P5P5,Zm
MD2PH3YHkc8N#R'89L4T[MUB!5UE"d,6!BKFk'lXB'HhXU4IRLibk%Ee*Ij9m1Ia
U!D[MIqR$Y@'-0`KF$[B-B1p*('#pB4S(c8b)NRfk4M[RQ8Mld6)CGGIiL5CQ0#E
*h`iebl@*!P%2bK1C5X`ZL'6ZIVSE[NFriHP3G3Hf*kNQDp1bpQ2H%VB1VcQQU*b
YB4E'b,ZmDUC1Q'2(FG8HAefDGLI[41F$3JP8)H0beV$ajb1MGJ!RiQUlAk%kd$l
qL+QkGN@h&Hprk8`39I)3SmdbP+qUd0bLbp"U3bD,RZDj225E3ALNi9"rX"UAq"M
Xja)SX%6Q,#kEGrN2mDF,J-8!VXh[8)!+XcVppAR9SCiFK!"YMqTl6D)3`m5d"FJ
Z1N5HI5b$++-2l$C8Y!9A4HIQ#p&$mYJS2T1EMFRFi@(p8!I&(#UkS)YI[["#dQ5
#5ECJ-J`Vl#J4MGRep5hJFc#S+2K3B,FQcZB%AaA"F9fZ0mC44ed!UPqURVHdYU*
efpb&EIh`'F$eN!"[dNe'h3a)L2bJN9EDE$0@3U+Y,BB*RcY,,!1`TRb%eG#q$U-
fqN&e4E9L8EG5*Y"P@%H5Ck#FBI[@K+qD6YYcABNrUJ'j+LSqFrHlp93YZCAE0@X
m#D*@Pl`L6+pcjDear3M24iaGJd`I(!5#PFm&N!"6TNK*,J$13H,Al3&P',p-mfc
)Ya36f0JjN!#C2VhVClFb%*!!(6(LaXJ-+Qdb"pD)NImK5V%B%L+3!)[QE'"0ikA
)l+0lJ4"rciKLrGaVNR(B0+`2*l(LaPeRIRk-LJ0*YPD3!$[mMd1le"!!@a!pSA2
cpEh,PibbZQ&p@,h4SUrjUT*Ke1cm4F-H1cMaA,rfYkc)h5QFZ0"Nb&qr+DHdM4T
q'PF9d"SXe@Z3!1)D2Zkq[p)HH(k81mEQ,1,56Pie@0M-ZXAiAq'MENK`j`CC9))
*UX8k5GhdclS!#"fKCJr3cQqRadQ!fZjGk4%k)-k$dQj[N6I1P#8S##qe6aVkmF[
ef'&-E3D&AZ,harpapra[5i9)(ImZQ4h1ka649*f+lK5E0d#+$"cdZeY4c[DeY4r
HfT,fPeaS19'",E!qfe5()jee4#&I3GV@G&XcdpGUUba,RST[pq09eC4X1Ul6Fj2
X"+&%2h&hZ3Q4j`DGrhI%SL!iK4EeSUPlHq"If##3!*Ge%Se04MA"k)GlbbBNpMI
b`,%0"H8Qi3X0eSY($ZAR''jId-'f49EiH)L-a@RVNKED0RHB$RrNI0,X3RQI`3N
Yd16R)"Zl[TXcML,fI$%P'GTi$Ke-VAc*IL,p[d)CRS'Br"Qr'l2VAH4&J#fS2ZN
3+qINh)N'ZD5TEidem'*P*,$',lrCHE4qZfI,4$r5"R2JRdi'a9qk0j5aQVQa`cP
!H9B`fk'%%Qe9kIiF4)mpNR2&@4Idlk'cc[RXV2kQiN+48CM)8ZD'b@kejkfllXb
Bm32dUmK'%rrA-j1I+N&l,(rTdlefR1@5SRa&(klE,UVS3NFcC@0%m2'#*&%AXGq
'JKrYE2Za$&!P2K$BA1"IB3rVL,'hXK)8&%k"Vji)RIGGZ2[P8jdqMBNEelH%e"9
f&GNaDh%+cl5B@[IC2$!'kbef"1X`m01rHYNYP2G39'5P`1mLcNJlZHcPbc)dp2'
lC,1CETA9fk")&j1%diC$FB&2adL$`GCHZTZC,TakGQV4'JQbZ,jT@-Le831TmBi
0BeqB%*69QJ@aFYHTQY6YGXK`dj!!ij)QjdPCNVF&S&)H3ifU!FNMd@6IbcKZI%2
LX%S59k$VCeF-d[k!m''Q1#h0`hj'NJ#ba6ZMcDHB50@`(@+&[kZGFXQRLc!(DG`
hNPb[rE!@IYAJ[B[fF"V[I!QhM2L)C(@`jV!D2mLH)"9b$KkQie$X`"2rHHIQfFQ
-4DXPNVU1[jF8Lca$KGE,F9hl(6N06M--%p)EE!9F4rmePM#p2DKC#1jp*(CXraI
r,Ur-mJG1J3*'Mm,@l"F,E2`h*ZD2BlNCp))RFd*jd4+)8!PDl1V9BNlBJGQI6M`
MNr-rPV#M#[IIR4E0JC9T+*Ji9kdmU[bDM(f*b6M&'!AIBIQCS4,YfXUUC6UBX"`
I2-M-mk#N83LLhZ8,eI8"L&+*(@3Jhe[5YcGNB&CKrJE*+'S959a%`k)6*r3+)M8
X+hq(S$ZJ@hR4ZH2E`,%2d%aVZT)LNEl0h3k3!!hR3[6,-*l*E8HSkYdbL'"PdU1
NAS0rhL&4leDZ5ESR9@Ndb3im+jmeLaG+h6f!jp-f8Hk)*X&S+Dqib441$)!j2lH
"eqcJIYS08&S@r-k"6A(MFN3eqi[aq@T46jCA*&',RMrSIXl,l$1*$qY!V%3C#+*
8bZM(SR,I+R1f%IF4jfc5(4(9Id3+Aa(UqcE9XIdJCD@4fQd$@9mG5M*Vd"KC!'V
58Ij61BI8rS,%IH-Y%mj[-+bQTP%!5MJ6m0j`rF@+#k2h8me95VN9dHRal9H*fGP
!BRGH*ApcN!$bSVkT5DIc$PqC`KE&&UqdIk2HlRldlJb[d()4#8aLdF@EqLhjeQ[
eVLN6LXZjiS86rCb[594X6,cXkNd&RBReI@pZDq2Xp)Kq$&Crr`'9ErQZEZbjVb@
QQQ[XGVbPZ1%BP4@B1'"LX2M(j50e5ll+c4&X+@S-qUPX4qS+MEMH5V,`P9Zal[j
"d*8f%j&MVhUY5'Me2CI$26DX,8[j-#%3l9Q@GfkecVb[&R#pQSc&NXd!Y--VSpR
k3p51d"6eK%5q$Q#V4cqb69SG%1-3-,iD6@FHN!#KN!$[5Q-`Rm*bd$)IJ-@q8J(
KM9pG8ViR%aGfJJEBCDP[&*)NpIh0DVAZXh*'"aGSqb(-[FbRX''c4S&!-8"8N!!
L[3$'08F)Ld&NLM1rVmTL*H1&EcaiZ[*RpKGRRifdc[9'j'JDVF`NSN9E%q+cQSA
h'13A"hM3Grp5H2X6#9(8KM`iq!$!(YhAI1GATM9CJb'$k%$qlSm9"&P@%&cpp-`
RAY$TG5eKH@0[05pCe8fGFkElpf(KFbfePm$V*@@k5kIkRX#4XTH$2+Q*[VlFZ0*
K9&U3!&5rRlSpKZ3k"pp"0@9dX'Sb6$CDrrIrJPfL@BdEGC9ji1ZVrXJ2%)h$eA6
9AldKkDYLVFIaTP9%MH(2l#Ail"G!@#hVCl#-0I)hZ9P5P9$'DJ"iNaE11"hVlI(
!*#J8mfkbc6T`&E(&DYf5LAHH5i1V0Q2f3M*@&#CrVT3SG8,BF%$MGB5D9eY%Tje
2Q6SbJLk1c&(Cr'NpqNR``em[RdCMS[)VNP(j(TD3!20H5A5A0%Gj(V)HX43qIQF
&TLVdVILZq!+BVf4#'1D`JF(FqeQD*!,jrGY$6j!!GL3,XiHPYc+&KHID@#S*L#@
)p44NP-(TIlD@kZ&B[!C(10f2@Q03e6$S"Shc$IdkK6F,FT!!c+T5[ebCL9r4&'S
622jb(6(A)Zrk[[ENCP6[TS%If6bDI3l4M1eBkRPJ,0R&m,@l(51`418$%[!&bF[
HBIP2YaEhBM-M`@HNG5`6@Naq5GCL29a8b!9T5"m!34F&1I$f'"G@"q%Dq33r1GA
cZ38mUbqpK0V`i9Rr&MTK@ZIXf1$$MAm61+lZPJqH1S!Yr0%%a9S-ceP2$N0R6GZ
VPflU8"1cpZ(hM3k#Ib-@%4GjR98JL(Gm8$jcD3l!-M@pDUfAM0$qCKJX1Q8@BI"
'FAjC16UMKIe#[Ufl#1j-Y-J1qB96Ah30qh"+XcjfkU,6K3j*FP3T'&MBhU)FAp+
&K2+GB6'JD!d&AL[AAVdhBcHJj'RhcpJ5mC9&R8(0J#%CkiYSrZrN-RR9Hajd-3X
8F*iV1GXARZ),GXGNJp!aQ[X1H0)05PdZhp`$@LGJSi9cpUY(Nd80Q2N4jrA$JC4
Ph'd6PR&3F2!Kcir(Ld$M[!6")r@#!IH2qdik$1i9,SEeJPb#fTE3U(!9CKNR$bQ
d&Y3iBGMmHfI%f+MCdpM4Rap&%cHU+l@q@@,H2`(6b22$E,*64-Qq8aU`c+b9%ir
@("fpSeacPYaV'pZ&"('HM!9!S$iT(2pX#4#YRAj2Z&$aA@1&FcLR5#!*0hI6f-r
r5`#Y2aZSP5kDIjK3aZPTV4q)!JGESrB)D$AeI(H@+IcEIp+Dq`jQkNl6R%pfJQ+
JN!"1N!#CNDZQl66H)k8YXbc[BB)I)RUkfBj&D"&%&!(kJA3@P)l(hNR2HjhTp5F
V[T'!1MPiEFM5Y&kV(%fRid(qX9'!rQrTj20i&EcCYf9Hj(CCG6(18$j4+jXjMUj
SZ*4U")9r'MaEr',+H,d)V@P2@J@PNPGHl*L3!(,kb@Z9`#P6[[Y81#41$10mHRJ
d@b(KC+-[M8Pf1JD"1"h9V'Y3CHcc[B`%BH#%8dr+fmUdY4H$CprFLGbhh5j@PM5
,iPZK$jQ*$pD%$"CDdGD"[aqb,jI$JIU'#2kGp(Y1QMX!HC0`f$6kP@*l[-ih0Vf
Q9'I,pSXZL2d8H5%`$cIG#2[%5"TGIFV5XXK'aTR1LJ[FJN&,GQeM$SLc5fQKK%%
'4HjAq+i&m2Th,q!rdq`6Gi-r'Rd2bc*620-L4Sa'`@22BK'r#K8Zc,SGV$%ST-c
NV`EV0'THrKSmJ$,FSpUQC$2E89l#jeJE*TeeHp,R@e2L-+2"(LGb+P8T-XT(3Z6
Xk`E`qcEZRhp!Y@)f*S@0hP&k4`#XLIj3F-iI!rieGh-$!QkSI,TPN8p"G+JE+N#
MlF)[iJS!`HldD8%"!QSjZ,m$30-GjRQ&+2FBeKi!K#r'qcFc4p$HdQ!S(eCP8rR
b[D8Qpl4ah*L8SXG42j`aAX`rQkV9)K--jZ@E'RR5S$Da'BA[a[mEZpm#kQFI"ZA
`S91$XZ&RPI9lU4If##IZX2j-60SBjq5fp)KXY@mhlm2TpZ`b*ZalY%e$0LRkdUJ
-L45#S*q*Lfl[1Clp'&06",QH8849(+4f%'`'%6(#@G9$r95rdrUmGlrdJeMNeC2
TcSl!+cXb%'dC`KZHpE-1iY`r#bQ8%CPC2`q3!#ca+3p*9SNK3cmr#eJ$$#2)D1M
42cAd'e3q4lMcjd2A*pG!e`BJJh1[M1+XCR9ABQXEMHKFJ5blT0,LK8U&`U5rC'Y
8ScZF-fha`[&iM-+a#K1LRF$#"Lam0#5TIQTMUPira0+SPb8hmTXeabR`FCjr5%Q
'9h3m+C9VF&,NF%p3B)dJ[DEpi3N!MLdK43Ud-8LBh*8Gce)LV"Cf%l)V4U!#98Z
c9@1,T2,-0KKPMRa,8cbNqEmili([MbklUb"TpM'5m"laD3m03rF5RM6rQUj(J2"
FUN'1V3c"&#Xl%$'Xfj4"fF5&T)hJT!(E4V1qfb&"N!"KNJY+J[JbJjb2hVJ0IVA
2kY'Qd@[Jr(`GSSZNc8CJN3L5c1%`[d9RKpP&q3#-"f[MFcGY4N-4q9kEe+QBZS$
jabM+Gda(I20%&86ae$T%Ql,Z`"d1l3jIlKfN'*Z[lL9G$!D)kHXHTa2S6Qf8,H*
a5Afbe`(4J[aYaNRZJp'2$rP#fCiDQa4&1am,r-+2%A(5$dLEU8U#q3J1mD`p#L$
+R`VXLpJ(U*XSPi1,c9@%0Nd#@hkaT&S5D+VdZ#15[Hdm[5#BiI5p9e!+Q(($U%U
-RTYS@[4LX@TDf*LbR9qL*@31YD+[@VkB2R!GYPYPm1+`#'KfSqYAr!TJ559$YSG
a'SX'Q!!YlL1cM[mPa[Se@L+BMHcmBU,c'$)PalBRFAGUqQDI&N@NffIfmTTm-#S
Krf%ai%jk9EZ98)M,R5Cqd[I49T&XV%hcaLD6d5hE4M&2B3M'p-ThHC!!LB%43!Q
AjS#(If1e*MfY,h*4`h(VN5)(4a(IG4T5S2bfKk`&#,6dIU8R$AQ9A,#,@bTH)VF
GK2L"[#Q4)NEIBHQ'HU[3-1BjMB6EX[%6d%9-"-pZ-G4kiikR"b'NJ*FjqBCmJ%)
B6qlBY+b5#erV,YQ)NC&!bkbqU'K2,p4mZL#U5(2@H8m(4(i6"Am@l%Th,3leEGb
m++,+)h5Gh9MY3ZFE`&j5i(JEHIC`T!pcRbqDPIDbX45ZrRh9JKLcSJ+Z&IX,@Nc
JH''cH!Ybp2"K3lebGV2ii`laDLLbUV%GMdpK'RI*SKCh'+kDDUr1-Ql20elRHZD
3!%9EN!$%rQYf43`Vc%!@3`R1X`+$XL51M`SbR%B(Ki(*T(*0b*drI#528[lb"2`
,A!MX*eik@QkUIMUe6SKP,cq`rIf`qHD5mBDTf!DR"U&DT+D&[)8r2m2rD,E9S)8
#BN(G,RJbVckpPp&cHPB3[d!2TVRh&@FN@#Rq8[(FGA'J@Bm4l#6"XANY)RLPQE*
k"KmFUb#5hm-F[%aTGBrGH6YD1,Ik8-bC[N@-!P1Sk9'UV[X0GcY#FSMX(2fhdSH
UE4*a#"GCHbr""dmT)GIf"A1pHK5@eKqGbSVXV1cNN!#'Q8&p1PS&UH`j"jdhh1)
CI!8R8+%b(LLqp5K)S#a%ZMJ@m(',rH)!`Q#5d50dj'4fGZB$T0R!pf4h8@mh4DE
2dFj6RGHCU%"MC8%E@j(!Bk81hZ%C3dU&SEib@lUh4-66J99(52k@'9a0mai5JrA
D'd0+*fDq&jp,r%3pdlCl5',pTJmHa(%P*F8PN6b!#(Y5D)*LkbG$j@9q@MSh0kQ
FhT!!api,SQGI1i8a9d9LB"`G@DkQI#X+MG@"DIYM!@U+JYNH4DDH[ZUie!A5jX'
-pG4q'FplNahP5"*BFUIiD&B+UaUD3XJq4N'd%4i-QNAmUlZ[)LN*b+UQZe8pP#-
Hi$dqm[Z$T@bk0JaQ5#m0B-3cZ1b9J1r3r,[JiYK683GPDVPYq"%K'8JU&Mj)bJ&
&4)hc!+8CC-c[K!qMh6FNpX38bDHjAHB0VdaFT*AE!PL#'RSi@`5fd-Ncd,UPA#U
K[0!e)R9eL(#Ne*iUhlDaH,@Qb6LfNlQc9CkXf%fN@`-eB,3PS-[A#,SH@I[0PUe
1@H"L9`h`,UBNS4Ge$bZ-rb)EhSL!1&'ZGU0K!F$J-q-i6h#G4a24`0b+TiE1E[K
Ad$3I&3Y@")PZI1rL0$ihH+G0Cq*le"*-ZNiZiQ2jN9Ik$L01I8IXjE$`,,+e,XM
V1mK5LpV8'[`EMLjr`Ar(m#"%&3@1-1G3GC[RI6+hHFqU1ecPfBrNYEi(@9HiKXh
!'FdZc"S`cA0eTTQ,jN&9DC-mQ%cLjEDQK-4#fJ8(aZi5jN)hR6*&MUMAcTR'YC&
,$NF1KJAFjQk6-N3AY$"fa'64aA6p,DleiD@3!*L1f0K'Ep[maX8UQqaGRGKkmAH
ma"(!1TB,$6L`93Fd#,C2AB)c!MJh+Ph[`dXGIEjajK)%fPP`Xrj9Fr&R8D5ej'3
m,pCN$Z5AAeMDpS,63G0rN!!TXVI#@l9bJkk3!#KbKD&J(C891PMLhhmBk`U9Gc0
Pe8[6,%6kc"#+r-02C*ZL#4`6`BMS![8A(%GLaY-'B5VTY1kJIKc1F`eZQcT[2Bd
9S@fV`A$Z'#3'#Ld+[XbXRP(*4#Xl3e$9@l"-Rq&@D9lCdHpABIC`b!YV'FQJ#9&
b(3EC4IRLp)d)(5eNhfMQ2dib!`S-4TGV#V86kCPaVi#@@lqXU[H%Ibke!aDNp!`
*bG3If8+8-9[e!"&9I%FZ#!rATIBpPqN4SA8+@ppZMJ4)p49#8S280AK9l!f)R(Z
fdm&**NeSR"(X,d9reH!i0L@$0,+aVRF'9@Vk3UkXV2NNjh-iU4A[%M4iRRhpHA%
UKK5N-,jhepT8Q*k-fV,mY%bEK`jMXE[[rL41(a[+)br$F2Cc$X%)5'#FqT)6Ar6
CZR#L-*2LQ5$UX@+U+l,96*E0BRjRHIpRp3P%cY@Mq[cIaKk8C!p$$YN8MkGSeQ-
DqHFSV+qD1b,%iBQEGY,Y3c-H#qrI%1fkF6bGhDE&jBT35pVb'J+-bb5d2-5)e9M
3AFC+LC,H!bGSmE2UJl-ZPZDpKR!ad!h%&a0pL"B)$X3DP!2C)8Cd[h,aH%3h)AH
M+hCEl03+-m-De@@Y)#4VR9%#hH[-ZHJG[N5H#(6JHP`ki1&m8JJk8-L&KUCZrHi
XBI-DQqmAG*r)L*+H9SBDLI)4Y-#pJ"#qYBp"rIReq(Jf@UZ[TV8&f+bFQ!UZaZF
$,8)Vk10R)b1@hhCSA-4kd-)*@h1Y)pf#H'jFR`G+TejQTp9(`c+'cTcJ6pjCm@L
iUYDA$P#X#aSFeiVNMcqAXAr`$YG93XGiAj(NMjr"lR3%e!6i9iZI*PlH@pD[RDK
kJ!eJ8EDZBQV,U$VEpd11!+Y`r!%Y4Ab-6`BR@@N0rIFG@9KJ&#)$fL'!Ph9P&D'
)@1edhfNhCLPpdTqM5i,dldpS0TFBMZ,c8%X[U"2&BHkrrb-E[T6hS*j,[Fb,P0,
2Z1-eFE&"DAPc*89LTRm9V9a2cc`P9c4Q(0hCf`@"iD8Xm!DPqQI4eqHdeTcjfL"
[0XJ3@I0Z*q$-4BTP&V@X+bSF)D(bPafqNrkKI4(,&lM1)ra"apQ&ap*q"lZQiMB
Gj6D!NrqXP)rGUY[2#$BcfL*,JpeG"3,"VF[i@'UL&rr)J$a$ZHGBrraRiDRTZN(
UNIkeZJc(iL8ZCqU!qA%QXZ!FK@(c@+)NEDIkf6'E&m1iT48`rc*R0,0N3!ieGV9
jj'De6lTPdiD9eMM,f06kQcC[$qcRS%ERd3r1f0S4NHMlEfe5Y"pM+)%G"akr!QE
Lb@6i9MfirDl**JV[BC9kG!`4EKAFHFc,H4L[IIjQKqbkeKUCLJi)lFqp"QKJH#B
X%#4kNFUL5e&Q38jc@$AeQ@-,X9H!kU9k$Y'T-$L"LP`6#-PHqdT6S-jbl#9L1*I
N-0E`a$""J5HP8KIlfNp'4fqYXfH!YZD!rc$+EX2ZCpGU4-9q!8RIG2+D5I,53KV
)S-FAqd8[IM0eD@SEm*KFM1Fm6rFVT3hT#92CDBGZqMf#)N)$I"A)LSIA*q0bkVl
@#am`,b''icUkJRr8aQ[9%kZR"T!!Bdid1DNEqflm918K)jNr0N@*Abld2l%$b+`
T$J-$%I3KHFH%--5&$1112mm*!l@rHIqeL([MYY!X@`X!P,D#9i5imQm-PQ$c$$l
!1BrHHBe,9BAUfa8"Ec6AVN*R,`AZ9L,K!I%P&!IeE1$K[&Y0,&@4pbK)6-k)HLI
RUbS'YA6('-aMfQXjeAT!cVPUr&HrjD6QrlJ,Ppkhm09hS)[rmk159!`q8hkaUq4
9$)@S*rNeHpH)H1KGYJ))Sc$Er2@$qaE)fH4#PAFM-GM8%QHUj'1XVDG63-Qa$IT
SUUXbR%0UmamKPYD2Lf!YE1HA@abQ1Nq#(LUEi*+86VIcVU'(Y$%8b3214f'&a-%
p5Ph5R[XB@U#r6!GY@!"03ScMq4ZDm,-`ABlh%Fr0kBl,1TD6G[@&4!1QAP9969)
0l@am,*YZVACkL$N0N!!5+G"bG[h-!mAJ%'GlFpMCU-@,DiEc[TbiU-85k*e6@TB
MT&jFdm1HNc@eDUa@&@c$YNpi#V$beAMibHKIGY8DVc+E(,e4[hl43,AhQ#I$d(F
e`@$NbATG5$i5X20cD1V2Z4bT3e+Ih)EEA(#Z1F3`(63f8E)AD994Uf#(mFZ+MTS
mkf-Z,pBR-`bjNM#-fNY"K(Hkj(5+hETed04'*1F`[q[$CiD4LLrF8dr5'@,UTNh
[E3`Kq,#&N!#h4fF1EqIL(pZBbmHdbk9eQHXcc'YZTLKjBeS-*4'J9qQ5E4(,[*M
-qE'4K44%f+5Jl[c'4KVjC-#CUir23!hUP"m,K+GAPR4S)`bC1"bSf(1D*&'NIY"
1$)"ZQ)Fm3m8[e3BPk-EBrrI3KS9C+Q6#HLLXJib[-b4[DYDbp$cNlqjiK19!1Tp
Xb)`V!VcF2G$"BhRmT$M(R4l#$#YJ'GN53""4H9eL"[k!H#JTGb2eC38TH0LiFp2
NF52Q4FMB!f&(QD"3DY-jrDfemdd%+$%EY3e(Fr(hTS!+EIfIC0BbDL(CEFHLY"r
d[a6lQCbh[D3R'XXCD"KY8QcrNEL)aR!P'$%q3$JbU(c-1Y`UmpA)6`0p(FGpd2B
ISI1F8#+Ye2QA@@S80JLq'*V+%TIQa8HAp[f*A2fA@8i9Z4kaK8R4f4I$qp`ch,E
M5j2GIDmrjZ9!!kElFV#!6`+iLLHA&'QSe0"0Vc-U!)4ljVS%M-A)@3DEh"D@,Xc
$a5iGkA-@M4DMZA@H!9G5,J$e9bN%'L3G%aBHh,Zila0U3j!!63rE((VMQ5hB&3G
UG)3&,aPT-"*LMB&ZR,@eZF#-leXarV%S55l&[*rL%'MBfD`*M5$AbGY6a+1m*jC
hI[68a8(PLh,iN4h)AbX6(p$8(%cd$0!F!4N-AA5%FH9a4H!Sm+ZC5VqH'rkiGLm
1XRi-(*-(h(b1S9cBJm#8,3N!$!h@6#[aG[4"L2)ZqRZrX5lZe)!#,Qa&3`EZ,,5
'QhK0@jJkI*KeRcSYXeDJU*S&jLHeYrB[4kfh6IU,X'b+0riJ0(FppK&'bpIJU$8
UPLk0iY$SFG3&+$E!Q%)3r#5EN!"K*Jj*8A2U$,-!9i&XN8Fq3YdKk`rQ6h'Y##k
QU5ll5'kK(56-LV1P'KTJ-'Bq#PB$5(Bj0Q5k6UCp)aKTaY1XNK`[(rC+STH84*D
Cd9`2)K&l3Ll82pr8HDK"C!82R6+9aSjAIGFlUZbJbA6'B`q6"+$1rhApQ[`&b3E
PQK1GQiSj+e#KR*e+l8%N#'UK66ST6H&3'SS,24qTplPkHHKSXBb%LVPia8ab(j2
F,,kX@,Y#c2XcG''H!U@EY(YeM3VBdBNk8"qNrEeCkUpLapGhNH[Nc&IXl8+!b9C
(fkGZ6-8Z%I2bY&J8UT3!c`0-bNKDPPPeP)J[5(`6K(TS'mP!U&pfG5MC*l,Q$Lq
hARH58)0k2Ak`i8J,'2M%FQF0E'*fNE`''*TR13!AIPRjY44FY'd6C#Nl0%ZHETc
%*GEZjMTPqfl(LAC2%dSSXpL5"DIjKffUi$RXM'@`XaI3KhTXZ5'd(Z3)L[ZLS,)
mFeXMBX(X6Mmf1,qXdDf-,XaNC3alDSN"TEcF(ADH[6R)8Y*V0kG%[F5![bZ'bq)
R3bIp!L+qZ(cG4qRb6d2,QhQTAH1R)USbc&3pDRqdEKf)QJN'K4,E-mE$aRNq3mV
q49P(VAV*8j,"H-Jr5iER5Di'5jplFEX%E!SHCL")P#hTP,pr[fN8XdP3l1iR9El
AfR$+25$rhQSFQRVAm[)3"kB9['PK%JXc6hVFRA9qGBVYLYE&[VG-M058QNNI,QV
RY#9,E#Bb83q0d4jIh9"mUK5rCVEUiM5e,HrSPaS"DiTL,b'fdkYAUBjNfm8XUeq
%GdNRCMNVZB*@T61r$35L13DhqmU#LMANGYQADZkZD2[1hMU$0Vk*d&i1kI+ppG1
hHLGSqJ%rKKM`(T[Ur,hGQ,aV-%HUiI&C@6,H*#lD($pM`'-13pDa60hY56f0DC!
!4)iEXcGUkKpI+Uqb5Vd)4%63Na[80ldYKej%VT1M6i9[aU2%K$,H-9@GHLTCQdp
"[BSDKXP*5kLK36@q9SimiA+VM(Fl6KPF"m[46hNk$%c8[TUH+I#+K@aYP'aJ&8G
VmjIYD9EL!L0%bbP,#!EbqJjP&IHGAKb%rdjqC5DRR9-5)(I5SfZ,Ph-$)B#''Mf
C2k@bkT'E!PVBiL965l+rQBk)'#QNU$%T#BGi2p3X3eXc&8L%IR'(9E#T4LlRM62
-[df3!$k8YK5(CB6i#QjTc2@5&AG6i"e&1kQe5#UXFSG)*2$iFXlNQ%L(cSR[j5C
1CaV4VPZjMA`qq&h8"0F+kbNV@61hYS6REEGGic*P8ZI6I"`k6CUKPfmKhl-RT2Q
U6D)X[eQ1+dp'BiQ,SPl!RlRQZ%rr-`6P,,M'ZIl+5r'pAG+9Zd!#4'"22E9Y*8U
KVG6P%PGm0cPjQ(Qalhr"S%"X9459kI&`P2a(k04G98N)-l5ZlX(4Y`U+`iHr[KM
0@TCrk!84"SmX-Up`+qmDk12(-009r4CZ,!GkG4c3`@lB8JH9qr[3FAlA9-f,qdH
qdDk[69[#TfdH5`q@S1!NQihM[a9"jS#0MUGb``&[-e"h)4(Tq)T65ZJQ$5KD5Em
jhhP[H,hY3UhCRI[H',M3$YZIIcXd)ccr)Xipq60RRl#1c"fEK`"rCA"[2q5U8-$
SGE"6`rB2ZmZZLfB&e3kEcbff4bP5V4DB(TS@ha#DZ1[%IDF!#H0,GY`f)+L8E0#
25Dq+[U2PE'iLl(*pj&RQL#k*m)+Q4Y,ed9BQqB@pQ#,"Q"U6KeHV'a8%%a+LGV)
`cH0HbSAhf$LaF'4"lfPB#HJ%K-GPfGmkcK8F3EpYq06j)"!b8+Cf"-AeT2DRTQ`
&$C`869d4U0Y[frU[qX&Qe,M,i'Xej&+PFCP`h,8V8G#5%`c*8!C206JS2hAM,6Q
NBA'4rUG1!mQ#6Pj6JM)-flr&6UFH0IBbAAC+ZKM96G,TJdrUlrpmZQ'm6a[mT&"
%fl6XAiF)KX[rh5mJicJ%8Mph!!F2D[2pqh*jI*e-2293LiGIRrUV50QX0#TiQ1[
BTY,bh%6AlP8E,I'EN!!#UqAULVL(9F1c-0C8"8cG@@D+BRKJ2bYXdBU24`ekH3f
eZ&UKh-mNa(EJ'VZ#AprCB,fXAd34E3da[BR,jp89eE-R5V%pDb&VliFMBp@hq'@
B$IGZVXMaR[0iG89#hh5DSLiK&"@F&6QaNE*D*GLNVl`k$T,6lqBZ#5F#0ie13cV
0#I1aGa-f%c*r2KQQ+#R0eK1E34Fpl`hC*'B0)4dPa&,e)h9*[qmAEP3-q&U0l5A
N'iFIDb$4I4TZK'5iV3LeZ3j*J"PEa!f&bB"6*XXEEAF5Ik4@8eIcEMjEeSar&88
dqd2#$cZ&9c-)I35-9lAC-pM2D)*SfA"Xf9a4rA4&"LKFdmpQb$[fTJ1Z0SZ0k`Q
!HNRiq%6e9Qk$S)EN-3Bb+8ZAe[Gm-a%"*C+$B,B%-1pB)[HUXApN11501@a)TkQ
Y(H2E-Z'+kPBA0Yff-KihHaE&SPHdpFL9ECfQ&&lJR6TK0cXLl5!aFI!lf1`IN[r
be9h#RQC0d95$313m,aQ5-@#A68Yf8j4a'[K9(Jb*2$SUcX&30F42e4m0$j1Crq#
a!*SIRCLkd9A9@@l5P&eE#T*2iBjS8iJ,dXB,f"D`Gh1!bYhh*Y02PFY%13rA-Uf
)[KMC*Z90BZ9hYCA"EUKF%Eq*MD0a#[VUZ1-`(dKpaXI,*JTZlI(YL#L)-,)"eqb
ETJ'(LeADl6+'Y`%MBlZ-i03$AGFG'1%([SXNI0RYi"%$j*h$$%cA(8S9JTAr'[8
!c23LP((GM$5(XD9-p`6RX,#j(fjp@%6!2jfE&UUIZ6AXI)!#,jlQ`H942(r$(j2
TbU2+&L!@[NQU#EK-C)MD0q9YkA&YFRa,C*SG83JH$1!hG@CT3"ep,$mX5G8EAal
"Y1D4G-PchFqY#d*m5fCeZCm%pf[b56P)h61GKUq1e6l#%0GK*03Biq-FFr-dR4"
CYH@q+QYGA#2kp9ca4,CB!!eU5M*BkN2#kK@$N3eB0%28d0!Z`TL%RP5Bea"-YQQ
'U-e#BebL!F4T!Y*#YQ(B%*fJdFJd90(r6H6%c0&h[X8eDmBk&(aV*N$#0j2ed[#
3!*!!`M4eJa9Xec8f0EeV0MA)`JZ"ppL(bb5e)Qr)m[,#pcePAGRMkpfeqJ[d3&S
6#d,#`M4M"$)dG$!krNIZ`K$5[F*YiidaDlpEDqK84&E0`PFX%m*i$akl&lHI3hi
2PjaN2CaB0HrU(cZHSGfMYT14ZYP`BFHP!Vf[5)J#BC`'Ih"IPTi!pZbmfdLqqHE
+h*9DeZPh($aD6$V0SHjC3P4dlCKeX(`4J*5R6a@Gp0Pf'iPT#3m81"VYhrF6G3(
deMGc'S'(#M4qU+mTp2RE3a9S$6jq+MMk1580&[qGVjHCa+qjP$qqeYrVJmdB,"(
'i1eSEc0jT&ajbIZ63+!9ie["S0[S8RdSQmLS%"Lem`9JN!#`3Q`1G`'!JeCcVDH
X`Y*dFp#rR3[6i#K2L$82E9Vbqe&G0'l4%'*fdhES--A*kK4Pf0Jr@HDeAKp!!K5
cG$p'$`39L!QmmPr*,maq&rrdqHLS(r,f)N,Jh)UKb+2Gm(RdY+#M!Fm)NNSG4%m
#aP-QfXdGT@#+("Z1YKI@N[T-ZhU*NQQANFMBALUQ'kJ)Rk@TmU@9iN@hA[jm#2#
NPE!FA0T,CB%AB6AMB5kVm[Mb"23LXD9D5,I`cE#LJGpMfD+r@QL,fP@T0Xf'$U+
bkPrIT1KSIU0%$KUaS9SGQ&E0Tb-Z@`jqSK9DJ,"MI[e$'03ZiVDDXH9DajLZR9U
)Q%20bU)C@Q+BCiE6Z%@L-Q4Ik#jFSmMdZ@-EU$L`AdXZdI4KFFJC"PQCa&64@JG
0ZA%)H-hcK5d'-lr@EUi0!bJ9'%,Sd@&BemR+SUCY'8KDR*U5@K-++$Qapk112)q
8IJX'@X5TR&IXTTkq$'DV9bVYkjH6'L(%N!"M'-c-mMa'$Ph%Me5V@!2,M*!!3RX
cBmmIDd46*CbjCkC(Mh93ZCcM[[b2@e)-AP[TUlQ"FrF3Q8K35mqYI2b&$a*eeEZ
cRl)mhGdQ3,QRBZXpB`2rX%"a+ZX'j@q(%lm8(`[I2"%P3&B3M03j&)U'#0'kDEf
mm2RmSK[*4-[4CU[L-(0h[Kf($G[C"R`a!%r5C43V2'G8pq+bm2h!*4'E'hJq'c1
(SjK$STG*+cE[kaU-m)BeDD+@+LE93)2fij!!2hYBPbEDfb0#qLKh"!)br%UZ)je
$`CiPEr0I1qLGD2Q01S3B&bA2LkK"#M(`VYRD9a`qIfP6kA"H4d'3!--C(iP8P1l
DQR9j"faFV-MCK4L&F`V!@FF00+P8!mhX68-9kEIa(A9H(YL@FXN,-Xf5&ePMbNH
mXE!CU3Z$#UG0P"AZUS2!8i"cEeqA2'ZF*ApqQXqE8jlM4*JES"QJGr#-9YXh`,Q
Pp,4Ydi8qkT%4(9`Y8I#["i'p)F$aI2%dJcPLL%Mfb9MXmP``h'Y8+CBAjr1UqIR
fAUc8miLbC*1Dc&FZUrG*5@KB``i@hBF*N!$c'D3p[i,dR[-Ueki@4a"&AJ6eE%L
J-!N()U0@9pIIe82JhqXL#F[B3G$#CZS2YkFYqJG`S&ET5VPqhRBK)cM,qQQYaJb
$"IQkf[C!MSq#'QS0q*9U'MDiF)D-i'he5PFXEa`aBV2(5Q%QhFKmX$"K1Ic1((Z
VdS"'2CmadHAE!ZI'3'!p*r%j"'m$BX-p,CLcrhFVc6d)lR22TA'rKKSJMM8%YGZ
+rIIPd84@3pHJNlX)G#"lb,-%J(qfBIb,e"Gc4K6pFjcpd98c4DjUH)+TSA!k[@f
pI2%T,VAm,LISCe$@kDrl2)&EU-8f56Gl3RCaGSVdfM1"ip)1FmE6Lj['TbI1f(F
9CKemRJ*2`9Ah3[$*Fl5T'Q,DXL-3e!&GkULIIHQELjAqLKSNGB+r%&IQ&QldBj4
Vd%Gdba6)IlNpL(`9fMak%5ke9Lj[2SNeL&')5$r@lY9a[35!EU!DLETedlI8AU0
cc6CZ,#hZGU1JaFl-$%XCZ$bCKlqj"`AdEKNe92DCphY0NBacFT[C&4e*cJC4TjS
&P#S2P4SK3BXl2-D(I!&d+ieCdUPl+9SUVDVhPHNRRRmd"kCKp6p'S@NC+591#f[
ZT8ETK)8MYZHC[C2(EYb-DRFSd)fHf9rBcLirh)l*HFQUHGk+4&dJ#ll+EmE3j*(
C)G&$*@@4mL"FhSec2+#e$TCR@lD(rRY@abH*IF#B6m#mLC+[A0J%'X3`[Dke+Nj
%%BLpccLDE`arG!F+pd8[-McbpAIPBimF24b+3'aH`&qSkIm&"aY4G'Jp'mpA1KJ
F-p(E+kJ+65+BE-XY6D88)[m4Fqm*qLF5b-QaHY@!&1%4KZZ(!q"45a[2P)((k$3
AR3!G8[IKV+2j46"%qlLi5#q'NaQdeR""fAq'$D'[LRCSKh%PF*@22,#V"i$LfPk
6dpH8F[H5k6#`2r*d"cr,rmpN-[R#i@*5Bj2jVMhk-IbqB+p4&YU9%-&!k*c+a3`
J,Q,mVFqIhEFR*N)$rDbNY-HJ3&0C+cID'h5JY$K35(!-)BkR-jYhFN#%,2d$)Rm
LNE5Lf,J`B8KqB1NN!&eh16K3TFZFNh[3VL5*i6hi1F8@jdiPPMM0CD2,V%*3cNq
5RBbYS@@MH+$%mbcBHq3`aPZ4KC!!25(EJSDmje!#NCh,"VFH[X%AF5%48dCCfC1
0!,RURjPGY+*qrRe$X`3@4YDGG(JeYiHYJJXA"lDG1ZqL[eGT+ldGcZ(de%T3b-D
qL(JM0AFQ%cNb(TT"Nb1iZl1d2mMFYT4"MFhBL'FL*`R2N`cH%%09I$`P`fHi,[U
P%Eb0q@3H-@$S5$dD,M28kNR%DBJa'pqQ994"dLj@RQH(-1QlK3lSH`ZRdD)i+)3
65#)[54NT8RJR%YGY"IMd[VIAN5,)K2U#L'5"304Uee`BSaABP&qcmPPh`(lMLaU
@2mCd%MbSNCULKf,(UfX0RJJjkf(%&I!5Th5EiRF+aZP*(kc[2cVeA'*[Uk2dp0j
RM$#'iYj&%AaEL,afCcCM-$Xd@H3q$Ie8B-"SKi1bQT!!GjU)SHr@ibH-l31Q$Lj
f&Hp#HACFSG"YiGDq)ZNq[bKV)MG$)-bY!6-YLZhc262+9#(jq43bAkd)M@M%fpQ
A`"Xi4@A'irePkAQ*9NdTlF9rK@U)M!(V*S0IZ&aD1T!!lD95#fR(FaRS3J(Y[UH
I!5VAl$8Hae5G5UM"k$pYSSVUqFmX()-**BT%lI(&F"A#6J6@CLDCb`!4K&pL+@Y
K(JGi,k28Nlh`c[RH06r2SSqqHDbB[cacDc8ELI!'%aDEbC+kE3[R&+Rj@j!!lDT
k#*HiI"08Y%PSJL"Kd"4*[GM-MXQrCe%8JI'Q#kkP*j6k"2L3!*Lrb&KFD*k"Tkb
+ZdU%14XUm%'8q+JDJH$&$cf540,X63T%FF&*[Z5qXGQ%kjYV!@GCfJ6YP$$U4jJ
`239(+d`Vr5bEi4J9rBpjRiqT3C5`XTm-M19NCi*+1TDj@S*eK#U@XHHe1ArMYq[
4Z6r[1,qre8AA4"hmC1qMJ*&Gmaa&GN5'$pjEm1&UDrkaC&Yh!JP6keM@(5'66Ff
(CJpGjk39([QELRpPSZebY6bfDjK25ALB'iZT&8JcDF2p8@SG)cM#&kIG)i@2jjc
rb)'Vbj`JUHZPjlL$YT)i#F"!e5%Bph([1JS[9*G9NrS0aAp(iQFbh21`IaN%#I"
Dae`Y##)adh*8fb(kL"cbHeFLc&C)BC@pJ[6cr`A2@&+@'EA#)2f("Uq3!2Q(X5c
K`P`5UN*0UR#D15lYAEcPBiHPF`C(&)VaIBiViS`++-p8&kYfNp$6h@Q-LC(*-UJ
MTI)`aB2JeUkd-"#LLVqiQYq,TY0-VMTEPbBM@%)KB2a,#DqlImrSA06pA6Q$LFc
qI0ep*HX@#[BSUMf`-QmTqKrfqRp'Jh#%Kj+D*)M59'6Pk*JY,bc9@2[aFP+Cqp1
LFIp0"CK--hH@4SIAePd-QHU[A+NP5U"mGL68HfeiZP'mi3jSBAb[&4-"KQY-%J[
d4cIBed3RHSlK'a(&(kqhbYMLFdJ3PDR9U*PSfqjiJ!`E[UMBAMN['ClY2A!"VH)
Rj+Pb"LEjh,P28)5Z0Yc4!!E5iChEVK-+(YD18-[jC1'QhJLR1$lV(6N6`d8@kp!
e"GPhFGJN9&Kld)`G+rZ9J1I*E,+V&PmmXS8(aHCT[Ga1lT!!prLG9$@8Jel%Lqa
XVba!k-kr5"@MPiP0GdhEB+c&1@LI(@09F#aBR-ZC)p3KdTIQ@RLDU$-Uh5JeQ!)
QRTp'1fL@$#b4j2GPk"K1+QU'bPALRNVSA@-R@DYT4PD@BJR8JAM8(URUmh)!06I
mN8#+-93ahp-)qaE18bS6mK+lr18!N43fSLb6Uj&caQR@1RX`$cSG)GCEk+4N#DG
4G'A3VTpmiBd`@,hbCaKQ9-Rd-IKXa3(pX),LpPEXj4-5b!0kIr2ZlApK!8MjeBl
`Z241r-9JXp#D0M%ea[4G&5hd[p&(,2qe+qCUMBVPCiRbjrm-Jm1e%5'Ch)6F[ED
Xr%C4#$GQq(jAd4aK8aPK#%Ul2H0!Bp`%Rr))m#Q9QC1*qCCcaCRSRK%9$SIN4U+
N!hlh2pZ6EaU$e-ZcYQeT5&mFlNR4bDe&VK'#a1TY@)#4%5Gk3LjrM[%eVq-1e09
,L-p#NdiG'`$'rT9ai3!%MR#P4i$acpQ(ADEUBa&)C48!%I(VjpHr!i1Ud8e'Gh$
BRqN2L[rU*YbGR0FYKQGj%j'+e!H)hCdkA`,0Ndd88N[m*F`ZG#AZp5*&K8jlX,&
j3Yk*Tf(2K6,fd0KjR0h&m-[*qF!-H%RTSL[S+h%)Rf%TT&'`LACjF3UAAL,M[XG
TM&*4jqalLH-r%4Crp+ZhB)(eC@K`T@V(8B"%R$"ff!HGS$X8!P1NKSpCU,kF"NS
!kXed*[-BZ)N!4M)%@$8)"&pZ2-9r*J3hbaQ[ZTj+pXh!lj!!91*)USJ12FG`@Zj
jBCBjZ6bZX4KX08F[[BV+UCjkP&`-,LHpbp$b9E4$d(FQZb8@AaN2HLjp)(RN9X,
jeDE'8-+XBR6T4FpM&ckIlK4a,Ycj%K%[0kdkA$5&i[!%c$kc@i+jej+lVI)HfDm
&B3,,e,BJ3P$5[-QP52mHkHdFK`$el5D@4e@brrI2`J4CeQUEP"rQiE'&JNrq`$m
EM4P91C!!B5mq0R5`06!UVHBpJ&KP"@#NT$XJamlbK!`CVpe,`bKkQXQ00+"Q9Qj
DdD`[81Xm$KPMHpHk"+[XH2I+4VY@U4&[HFa#9&T1B#@LLiF35+@LAEm@3kiBfTP
M-C4"@bBj6(0jGH3,AIIaUqRN3C'2EmfcqCZ$28SJBG5$KE[-SE56Ba$bP%49fqH
-U`N(@(m@%cYRp#EN&BYRD#+REhZ'5JM3kf*LiIQf0+[2ECPJcP$#5GjdjSpiV1R
eU'[ZaKD'J5*bJZRhTbZ%YQVeR`&@%qXNKqer-PU(N6Y`bK+Ae"*N!*j[lqF`q4C
)LXD@-G31G1jk28Jb4UppfMlc$FdcZ"X$$PhaAdK%RRdA@j[06(`'%b8HD9NVUX1
U",8I'p&&kP2c2"jeJI$&TBlFk0ailH+G'kIT@XqYLD&LPA,qre0EY[`pG'"Z"U'
*fU+2('hZU%+LQ1ZK)mfSq&%"dhT6LPREiXE-Cl`DB$P*&Tk1X33pED5N&i5V8iP
QkDJ$,(mG&"*VHZDq-*2hf2qrj@fZ59kkqT96@@+eDVJ9)d[8E,ALbDfRB9D#B!E
T8*UBK`r0!UMj'rCQ"$qd%Q$[)"PEb6aKlIk4fHq"6Abdc!'1,0[I`A#(&qRAP'M
DKdR+ic,S&A)H6pECS8mp5l8DKAb&*FJS%NJ[55%q&AeCBI*'E1f0mQQ4jL2-YI%
c[6,!$QNjEN6c''iKTq%4e4$!Er&Y,3D"j$qdcdjj`G))Iqrpc#@pb[&CE6cT*k4
`a&9'`%3RE@)eJc`,5Jkpie6TLZJ+%%EVh4+IG#m9S4S"6,6BCh,%jN[LTL8KXle
dl9j8)Y%R#ljeIC2rATQ*NbkKZZ1Z)X'!L%[&T1k$0FdCeXETPI!-eq+*jdhlj`U
3!!#KN!#3!*QK'4L)i$`p5Lk590c9fIVFMQ-mPdq82#p@&-lS&K,!FH5+hX3H(Tk
kKP"'@k&VhJpD4L0`j$3L)U02DTUd2V8R"j-!hr$ZjIeB%JHSX0D60ZJhf`69EA'
+A&!+U2lL,90Q2NF4'U,3F9k&48bT)0$RJQYZFVQ,#YTEAcCRL*[EK5hL2a9,8K5
$RUKX-$+'"55[m[k2[&-F,T5V4q[#$rI'9X!-aLjCB%R%HZM-HqHF0ISSKY[3$DH
3!+h[pRcqE)jQ5)KC%MKPR88V"rH+H0f#Vclm)eLY!&VaDm$X&jf3!"2rm(*5YX@
&,X2j%!CQKQB*Z3B@C#5HibjFI-f'rIBE+2BhIiL0@@RYdMS&Z3V6e1Dp[$r,[AZ
ZNKQj!jDpN93`e)qcLhPidq$MIm8X%TNJhEqB`AA+*L['B&)d)3TH3$$N[mc2ZJ+
2cJk%L)KNhSrP(b65#&DrVhaFDZYRK63$r6E`MlkY(Vq&EFZ5,lB[4eI8X1h*SU3
,U51Zb$4@0jfS#N$a2Rk$r0VUH-M)Y'DRkh,Rb9-BS#kQ*rfid)@Q$T)EAB0T0eb
k9VUSQM8Yf`QlH1Zi5Dehk9TBQafQcRhZHb2TYQ"3"4PF"kSJ0)MQ*p*'DlT8aNh
d&YmfV`8#Fj4F50[EFp'6C[(SdqaqaiF`Pq00[4fT4P*$a()Uha3hRbGC"m&haHd
(&D,,Uh"QZc),JdF(mMT!B*I)VR*ZcE1F2(`EbPX,P5@mLIrNrm-0AqUHX8!DMJU
`k*YfpHr4#pmRb@AHHeG@'-Kb5i"C4`B1`-EbMq&IdFZ9$YqlRjN8C&NCG0l*@N[
-di%6F%m&Dra+6i"fjAk!1jl"miEhQCM$Sp",mIYmREd#PMCQD5"EU#KTh!pe`9H
8LHQB3aJI4`DBYS5NpXG(m[P2lid4IU$"3j!!0JSe`fH3!%)DjP"rUT89f$fq*M%
ENAfMiF!@1AN64NeK+PED[31dRXhFP'm'&dd![1Z"")lN'E$`-9##6miU)6qNJ#&
iN5-c*%')Th@Y"U!+KV'b#Urj(qGZ8Y46'JiN3cESAQYPNb@H'dE$3cClF!hl9jY
q!l@b'deS,RPr-XFH(Q)@5J&S-rI[Q@MHCh(aSVq3!"1m*qAUlif'I6JKbCc(Ua0
KjH'lBqZmXi([&k6f#)A4M$(bfX#)%q+9VjR9GC9Ial)*ETCE4eEXKJebMfK2@db
1d20cA%5@Dd)l)%*P6G,%hQBC-m`*MhPF,Ck'RE0,+p-13$['kAlM4CqR!C2emQc
#cPQ6jPqa[mKldA''iBkAPK)5(*(GfS""BZSAIS#3!"8jGF0l&Ua8DdYVZM$-AYq
LBZZb,@2$G0kj#N0Xc3[l,e`5iP+6ekKemdrCciFa0rN`aU,S9(E)1*[GiE+5U(K
4VmrRk+)`B4cF8d,QVF-3'*46'U-lK!mF[JfKY3@E5RI))E8E%+3AXNK9pP4@3YU
E%3a`Yb&3)LBZK!-kbJX4T$$Kb)+P*3F&MHLS3NSpc$IKd361q*!!62T0H6c9,QB
,'4LYmRS["e$EcHBa,[kmYi*@NZcqSiJEK)`P2JX4P'SU#THlM!STNh$d%f2mabd
&(`i[!8""NmR0M%mBJYrGC%JY`-CMjpJ1k@b(PaBXr%[lRSpipJMEklm`J0SqiRl
-93BKdq5VY8HBmG"FXbQ@j@GfjLZh3bFRDPlF0f'L@6Fl,ViXR(##c1`f+C,$H[#
aK`&d'qH,$`[6`*qXdID"GY*BFb3[&ej-`'#F8kmZh9Z)4pGJT1ci%&qZBk9pfS3
U2LC6bS9%E(rmVN*ADCQ'bEJ4K`S@l6ldc2ZjB%Q@9Q2DlUmNE@'U-2k+AUkrUVi
pdNBFL$E$A`(5KN-I*4qIJ!NN3cZ1r6K%e46,3bkTZQ`mKEH19r+dFE("DmIDeKq
K2[P`Fa@@ebH#$Tk2Kkc*-GjjJ(NC-"5[AL!e'AH)5$8-k8ip%d5GY4,qNbI[%HA
%FA&C-CP@pBk,IPA4NY2"GH&r+TaR(DpfDpJpcLCXXm2B%FZCDSlpd!b*AT+QR&I
MPFerFEC)D#E`D%K#r5fY2T3-c+#mpE1@bdN*'3Ued8j1),I%KZ9Pi$l(CcPeCp1
fTYl$*"ilMCbE9q1M5!G*`FTr&Zd!V,l2![Qd'Z+@5-IJbK$5!4MRa%MSSBVq2(5
41`S&PJ0bK+j'ejRmEi8lKilD2dCT5*QCB%fSdESA86RaeDX3mPCEjSE[6G&iMIP
VQm9hhFr4BX$#T-mU)r13!,Dd2032PMBVkd[mH--ladm$a,fQU5Tj,c(aepc[DQ4
j$-6A0ZDdPDd(Y@9(0%M2Gi0S3d&%b#er9"GL`5(8aTdEhM05V2IaSklU9ce1Q5G
RX*54FM@X03)FBTHQd*!!f4J!CM@j'Q#1q-Ebhp!8QMX*C@ZeY2qC(VJPFQeDS"T
I([XEUGVTm`5cMTf0T5("F[2Ucr80k+4m!SJ3*#mLm#cJbCTRabcliq6q$M$kiYV
ikL'cB@8pkVJ%P,(qZ@b,QXepbIa[c)iQ`,leGXLRR+b@b+A$l%3JL+cpTK@`XSP
XYRPjJePb@bc'*(P,R8UNS2[X,Sp[0V4j[#T4QLXaLGhI00MEh38RI4`0paNSP6B
%RHJ9YlVB5ZQ3!*0De8lF0NjDLJ,RN4NDIJ3``6`+6MAXK&mDec-8r%8DZchJ&c[
i,NH(HiaeQMfR2ljpLr5VFVriq-`*X+CJUhN2l9c(AMBJ9*SZZLb[5iLZ'je3eeV
QlcEQM0mb-0-(kN#@(iXUG$Bc#60AYcMY'K2i&C-jp[VBXY4PSiKJPL2q(%-3J*A
GI'2YTJH&$8V+"Qr(')`U0T-M`ZEl`(4LRlmP5r6kjZ*J,G0Dd'HqSf"EKjT%TP+
dahMp$QQUaK,mZFUFd6mH$&','eTYKG9-,`Ml!i8KN!#Cp5Nb@RkTLPU2$rECF*E
i41KqSLLBj-FkiGi)-)4+4hJN3hh!'FGDB!F8@Ld&b%35$hb2LKF&!rCF+hTU*pK
#S-8UVDQcdK%"T94cF+B$,4"qd1fR"@r'Njr3c0G0)E'"'qkL8hKTG'#1,l,AI)a
)q(!F'9CiSYQei$6UG"1!p'lrT,!9cb2aUH`"X,H'&fM``d'3!'5pFMr!l2pkeL3
-hJGRcS&+SP60kqQSkH0f%K,FkDa4[qhkd3+j*YkG%!Rh*%EEbkkbR-XY-0pfdrm
qMCEPJC(r$3jDA0CPAG`be-AEbN1hJfZRMRGMA$cmAl8CINYb08rfT)-5kS&Q6r#
LfbZcU[$Tpr*)h&&9A!qf#FI!0Xbj-9U2M-eBEkGbSMr"QYmC-&E'KQHD$)L1aI8
)1ZT*S@kFarX%RmJ#fLR[TJ-H*V@RPhmaU#fPKPA[JV(I'hm+lJ-2`%GhA(K8dCP
GQNQjq%MQEE5-QmAXl9klk)DDafa$0Q0bD6S8qRDEiRZdSIAjEZkerGV`8!0eXj4
+`$lj-IUGkb+)")P&"pP!a+'FV4*$8AR6A"2"fKmB#KF@qI0Z1S4(Fe-5RV!jJPh
KaF'H#VMPX'DVf21LH4jr3Zdq&RCE%#6HHUcT[9ZTrENb-EI%NE$%Tm,HI!I*qAd
Q(AZ`&YEIhaqFcRTMS$b65MDMEZaP$+Z$q[E![Q2(qMY9d-6m@6K!3lXZ"@-khT6
!0a4r9eHq@Ccq*QF%hR0qc!3`X&VqN!"9-RBLRI#%H!-Rfl[HrPQl"9-lVV-&T1Z
dp`"FMLHDl$6$DTC`B"i'GmQ'5&0cDDX3TF8B'fa#ZULEC&am9m@69D`2pmUMi6&
N(2GY(M!Fd&BXZ-lD0R5Fb"G*G@UiETPD()8X+[L)bkXrLDem5eNVL-!%K!XM,*F
63NRdYXbLPl,-!N15%IAXQ,GK9C4+Hed3QXAJNKARD+pPIC8hfdE1jFjl"`!c*dP
MlUfKZh'cF'`ERie-(eq48MLLBfe6Y8rRRY4$+'PIb!+i1J'"+mT'i#XX*iV%V%,
2NY$N1l`D[TrG$AK`+5K'MK9Va$Ba"&@pBQki0ci3NJVe5qJ"6NHpAZEqXDhH$C8
IBKmp*BDF`1(D*p-8!`aU#BTV'"#+,e4DaYP%,YiN&J1FEV8Ui3X'T&VR*cQTR&U
Q25%dkFi-C)iK!N9Kb`YG'6abCTac`))M2'pBBcJalX8$bZQm8`2144Q&`+"$hHf
mI$8E2Kr5apKUGlkbcXED,X(Icp0%`)[@YffaPDNKR5FK)J#J'Ve'6SFK8a3K3!U
rQkU`R16&GhU$I#P@f"c0**eqLFp628X)UNQEdS"+S@(31XZPd!hVlXeb19N-K4K
1+%(mfkbjq#VB%a+k-MK#)DGXGf`(5%B2#ed'11#f,q-JGLdk#!MihHq1aZ%e-LK
XPK1bq$`qGapSZ'T649KfCN+DLVd(`h!j24AY9D4fFd2X*ArV9h2S&(Q93GJ-G%f
Mb!2*BYNadkC*I1pd&rQLJ)qM'cH&hZ!b3-!m9*3&8lQDRP-MFp3j4-9Xp5*dUSc
LK4'GXUbTp&TC+VafECa!TF`9G([BPQleDh@8G51JG[G`&,`!6Fr,mm@E,&Ah(Rr
eMd"IXdQb@Bqk4HCXb@"[m[Kk0&mIbF5(+L+lFFeeSE6McV`$UdNI)-*PMM'Kl&B
N[XAZTG6a*-MJGGH94aqKNk2Cr&b8$MGm[C[6-*%-kZKHd8pjS-HVTGem#)f"EUL
bL2CS@`chBBh'jSJV(4R&RHHm"i$[9JTVTpRK-*T%8I2hTK%Cl*!!EH[MeaA3)VL
T`"0VB6%FN!!DY2!*0)jbhd*iGRDajeF4Hq[,F!``i0'2$i3k&f9MT(lal$!6%XD
ETfAdLUaNQ-$8XiADm6Z8L6mmCZZR'bk0m!EU(Gp%RkHDr3a)MR6%6)$bFS241Y!
86C0dMTSd#YmLH$eD&[aLRElih(c`I6"'jG"E!b"[-,ZB%Te5MKRNJjdqLd3f2[)
4`-h"BjVP[9BX&a(QmB5HmbLp'R8FMTABSCMAm0A!U`PTqYj*DTi4GA5ar'jSQ"X
@+BhQaR#%MLUF'9eVhqcBq[-ZQNRmS,0miANZbRD9Cb(b89+!P1+Ha28Q1CpLYip
q9lQQ@9NNI#cSR-8h(9JY5X``Nf@iVG5bY!F`S&e+aII0RhN+11EDK85TfeTU"bS
%R8Q9'SZ3!2SI8r32ISbH!`Kk2Ui"%!iYXX9p%969SBfIYJZ2mS(8Gh&TU9YC2(+
U8"Ca[)3V2Q(91128mbAf*RcFS&[ZlD@$kJR'V!'#%[F4+P4"+(`+K%`@##LprFJ
c,)A1@$0YH9dFH!bRb+DD3KDrTJ6)*0E14SX3T935%"rJ9IYj`fDFj$5$2JqF#'Q
,Er@CfCj4+)ZVHNR*LCm#1k3&3eB`Dlb'6C!!DFQL(r18)(d#+*4`S#HDC2T%Uk*
,ZRI-J%YrI-+GPJM#`BK&K4ZRf8P!5D`fpNekVmP33`fFIrS0!PJhmF+[K$$0bYF
H8V6ddGV#)Mdhk0*B9"&h-8G*A8h#ZiVC*[$"mTLQ3#iZ"f[Y(cED31c-lR&V00+
+Kl9#AX*8LRk*K6mT#kfG-9LLCa!(@&5)`TrGRX,d8M2b,&M"2p(5`X8Z0X,&"*p
f9,+ICRdjZ(BK@2$J9PC@T#IL`S81XP6fpK2#CpR0GlfMDeIUQ4(HA("2-YfSTIE
F`0%"UUNHRFlA'J-T5+rNQrGj0cIRN!"BNK-Pmj8[lkZ4jk,c(bGC!X@'hbeKq*R
18(`UVJXFa-p!(BVlERVSlhp#1Kr,T+RU@*DRTqTS3E(@hXZNLr#N!#[GScd4Ymk
mNq$JL`VDTrZVp)a&RrIb8d%dK@@$UeL[S"Mk)3C8TiRGG`YC93)k9P[51MP#2!q
9pGmdfkCi0SSBBk)A-!PjFXFa),-%$alE+!lA8clm8qqi8pL,S(BT6)(L@S8"16N
AfFF@$F188@d#JI[qY(qk&#RGM8ZqRX2@6T1J#'0Pad8(C19k'3@ei!9f5DQ&SD8
hYN-A-J(BS!MqE00[Tq9TmCP5iUChqCPcDJP@dr"CrhjpHibVX8hLGqpmkS(djUA
VGi(N1I6TbrChKrhYH-p5l5ib1i,lFAAl(+&`U5Z%6Z%Q"eB3V2BR"cm`2q5@k86
F&5#TVVK14Gk(`+@@[2%L-jpU$ib#[ZBaq!E!YIA9E2NcYfVQM0e2cZ[QPN`rBN,
439"mNEhSjXMj@B!0c)!cV62'9m!aPZ!9T$@&DSY3X9HYZIM"2qMee*VLc1F95B4
`+pb!J'0XfK8R-eY)Vm2i9FaR&6pI+qlQ(-`f&5lDN9D['K'QpEaXLcU@F5KD6CC
8&E)mq'r2c5Yl&GV*PM[HjT&r288D&(2S1E19j19MXPQPLGY[iT4LXLVNU)YeHjh
#SZAAS"!$KAM,12VY25-5NIh&jIec,Yib2QNjN!#GI621F%p5(YQ1jHeb*39HbCj
m"0K`Y0BZ0QMpDPpP5'DB%,Pp"er&[j2a1Mb%$kD8ZBKD0BA)'mJNY6A$UYj6l5e
b,c,ZmIp0Ni!3LYh-S2ThG`"ppkMSScHlLJ4XdH&LiQSN0%$h8eY0Ya1H"b*8q%(
QPIh14id9T!"#&JfNfB*`1lK4#p#AP54EfihJ$h[G3U@klkbK0GI9kMUZJeUYdBd
jhG'h8ciE&DFb6eik4M+JE"BK1XS`)epZB@TGaEP(EhU)"-@%ZBl"&!`DJ"fIGhU
JCi6,TpT`3cl6IHUCT8S!!""p,eaM'%XcX38N5VlX[mKQ`Ge'p$,BkM$1*,QHF49
M82'SH@935d%TaZ9ZVlr+F!'T4k#I"[,9`Zq(K&HP"'f1`@b0P6k&eNTZX+,12+E
kHQPjchc!!XfJ3B`1ZlUe9A3+d6R8Th'Ci-01A6kEeA15RQkd'k,!',3eAaP+cDc
Fa-3E@d-r2RS*X(Y'Gc*eHGhXq!1m6#Sm&Z*beD2c5m9T0Z'iTG+YM6M,pBUL#KK
b6hp4d1VcR43drQhkqak8cepb`*JrIC)Aa$hQ%6B`3rEiSVaS9JiN($BMhSIYk,"
mS0bBp!l12!XEPhqXZfBQ$Tfl2j`@jY,-*YbZU0&LNDJQ04*@M"L#k,+,#[Fe2@r
Q8Akm3@2QCkfpM#"@h!Gk6bfF8AF0lX5MVpJT'bGr%kQcMG2JK"F(LDbNCF1&Grf
QX-Np),'QIEP#@-Tk3RpAr'*lHS45pT!!JI@H8edYK"bM5mQ"SNEaRa8lG&9d0ZA
pUpN6X3!b8PE@L98,"r-Zipm31Bh5X9I@Cd!4)fJREk955dKd-qNpTQi8%-h"&[,
CNKFm5CRGYekb$+%cI&)EC0X5*0XK#p!Fh$YafI$[9H93ce$6ENql4P%-,44HR85
Xmcpme9rHbQ%KI1j+[B3@kBNCfe&(88#b`pQSF@H#)NJ&S*A)2cmej%BIApG!G4*
"X#`rbe-!$VNL9@m%&+A(ke6B%F-QKk0HfAi20q,[F#QSEj(3,[9`d2#"I#@VV*4
f,8ilZN`,bI6Jkcd[R$9&R410ac99'b'SR'eC'QEfbQQd'GU2!([$F[D3!)V[8R0
iLI!(mB&6FB+!,L33aZM5VSHlJHNB@r!C6D@ljfBEqbG$8&IhNd9)IbpG)IbRZhL
cV@5AZ(e2)IAbPf-2,8A%14#ZiLKGml*Z00JjLMd0r``L$RX0ZXcIkSE%qNKZ)b)
*aS[1!&4J#"XfP2cRS4`FRC--GXQG5GZilAji$DEkRmA08[b40HY')26"%b#Q8QU
V183PUX#A+Cp6E'BJQ(QS+!p1AR0"l,+$(eKilH(*--De[c#l6K,ph"Z(ZhdfA"V
6IQlbNEGHVQ-cKR5hla(BGUMeqSeChq,aLB-c)3rBb[X8[A5PZpALLp9d)HPSck4
`6lCT(q+ErCp81K'[lK5Y-)S)%`jRdXVL'%1p*i@ZKJj"Q*iAKQRpCCqI'ml&'r)
*IqMRkUcQFJ&Aie'MKT%`'T[""VlErZ99Vk`!FCbFi`QBNr3b4#aleNHp'9llhKM
eBEIPiZh'R!6mK%kERqfTihRTRf3Pl0qSb'pcKapMVM4-#X6UNEpk!#bGff@e4S#
IRklReHl+f6C9MAGlb8ADe5,@EU101)#M9mNLXj`XZ8"!k1LQlk+!EaHDTajmZD6
5*"D@[le!,0FA)#m3F2qSJB)&G6IVe5FI8GrBiNf0S02&HSS9HGjl6&EGUMcG*eQ
@2*EDG'"6fJV`+eXm0b+MrNdD[G'0mC`-q,TJh*HjTdp6TjPp,YU&JNXD9!k5V(T
AUU8EkH5c#58AhVqcm$%Gr!0mQrMM!G"YKVH[VceG*$4rrjFP0TVeP0(eYpAA,HR
cVDH%N!"HEaQ@!Ua@6bQ'4)Y2N!$h8J6Fpa#S9CpqIT``b'$p&GYbHfAXJc9H"Gj
(mD0NKfAUIcTD6Z)kr34T*!GkP'%VYB-$&$QZ1TBa33JYjdCkLQhZ0Pi*Z%03J&e
+(QhjUVDSVrB2pI1T'Bj`L0%rLN'p#kVcYiTpKkbf,lM+QmjBiIbS(4EE@$8,R+G
U&p5#@TQ$BcRPBHkS#aip(B!VBQjTqXMP#Y%l9IBrE#NlrIff!)*`q"0VN!!R12R
lQRkPA8lHM6FhFEqNkick6Glq6+9EaSR38h[lqk-,EKEd+AUYjIV6hEeh*lEj-de
Y"TZJR1KA*baAL8QZl8k+&lREH)NE@(YpV58X!pjc%m0&*23'S*VbeXB&9#UTra0
STfM@DF$Sl,Xj2Q#3!2qUUmGSPAKJYC,%f46RJYP,Yq'@a4[9pYh4BF14fN%"e6L
9kbT'2NH`Q1T6'ZY(HI,`8A#RY)LX6Hk$K0EBF5hZej0NjQf(r!CRdk0#jLF5)#6
IQACcLN(5fAmikUfq!)'-lmLf-hL6NAii3d2Q%+h#T9k24S+"$IHm+k&Clj6-YCd
bMQSF@UFCJ$i3rjf*F-$,V+pm1%H[LXVXC3V[rIFX`kUr%,V,XEJpcd6Z-M[8fFr
[k#ip4C!!&JbeRMHja$@4Z*qaQmK(2c,Gj!,Idm4F%[`4rhkpRL%a')KQbRi4c%@
BijYl(k9NIJFmL('YR&$3%e40M-j8DX93V&U5S1XYLqP21[CJAKbPBlF0(h5Dq8l
'f5I(mAKaq`DY$+UQ[BL*K[V"-YTcMfR9G9j@-BF!(bf%(m9&r!,PF`C4%`GeFk[
fV@,%6YEL[QI`!11m$Mi-9b2qcq@Li[kY4(hFhm6i46&cU3@a"Z#5aSQlm)5XcSQ
kSN3@d9*9ie2d#EbKFNIkBA$CjYSNjfN4GBeYT,ZZNf8U1BT43054S'bQ&@[3+6D
@+49%Nl3l5ah%#+XASchHbMp21Z)lLK$aR2a"2Vk2Y5aL%Rc0`YlQ"'TTk&j6L4J
E-XBkNU889+9T1pB-&N&Q2'Qc@CmFP!d%61,hCFiIKXcZ0c(41'%CdeCp19J08%&
XEVQDH[rC'#L(hhNEk4jH[eD,e9C[Tq6%!h2-FUJCMZF19UqeIE"aY4j3(JVQPda
Rq6,["4!fTQhkCfqkEQl931'Rf8[V4dYPDA2-XiVq8l+*&LFd5%BSM3N92[fqqkb
pYK%J"[ebQh`(*fN,kRhH$EZ*L8beFdpd&TTY"5NHT`DYQMq)B"MfHM0B,Ch0Z@q
E"Jr50*!!bLEG[j!!)&e$ZT,fZHm[C'rE@b'`dQH!JSC,NjV!Hcj()%0ql@Gfh[G
hp[Pd)HUNLQ#6k*'VJ(Pp#`R$EbLL`qZDq%f`DAIb+Nk`KLkma&FH9V$%K88[2q1
8XDdi3T98[MrdeiF@RE0Mh*G(TEFRC5Z[S'INNZ6FY%$4mM,p0,8"I1a@G#9@ThI
`&Tk[2K"",R@1hTAGZYclA"q"FhTd4,KDEGE$l3q8i,lhb"C2X4kRT-HXCV9HDJI
IBp3J&TpQja!d)"j&dE5Pe`IerCpr%J)Q,i0",Ap5bdZI$@,YRh)UEp40pH4pBpG
#"E4L%$BAKL8-9BeJTY5d)3QpQD9N"[FH"R0'$Bd`JiF(AaPQG,DJFG$6CR5BD,m
5,&&EeEh0Z4Kl+$Bf5c"+jJK)$AQ9YI8fBrlRU"!Ch39XL$KmPcRUAfkTa#@f8Ar
D4UT,NHl6jT9'!2rE)JP"Dlr(qGb3!2)qB+X*ck,iqGEcqL58R2d"e,CDmC*IGX"
UQmC%%4KXEh0(*PmfbA6B-2Nqb5rR(MJl$&p[eh4j3QR%Y$UR#fR&La*63([k$Ga
C$bA*-Y8JdCb2`c(EIY@&PLG[9[f5lq"Sm$NXmd*#mr0#3[-Xm2!X,*qZj5Ckl2U
U*MSXec)eqLQ3!%"*1ah9kMK9p#XUQae@[c)"YcBrq0iN"SAPFkNFA5J4cJ6LM!E
6kENf,#%2MJV$`6J6&XK(HeIDjB$X1H61jZm)qj)6C+N93T!!C[mH1blJ)C'X8ah
(h''b)RCM6HJMK06&r"j#&j!!#A8+pKV6,HI[5C0rU#Vb,c512`&X1rmr8X!3"hV
Ck`96KmZqR[B2+D39Qb5@c&SF[PLqe'FT3G4@hEi'Jf&VqDQh1PC08k3V+e12eI@
aB!Q0fN5RI`f26`X+p'ZCB"jXkLd9U0eFBE,NJ+T"dNE2k&0$d[bGIRlIY`G46DF
3IN6SPh**YX&EdSXQHhP3q@l@HUbUikaUGQq(L5kCPRQa1Ui)XeA3fmrZRR'0[3B
DL&!0)iRU#lEJ2`!HZ*'L(QP3m*c%%VG!Xb0jJL(CIGI+ZX&BQKZal,03P1'IVVr
P8K,fERRlQ-DBcpp4'CLMQF65L6ppGr2d+@ETjJrd'NrCGYE5Z$58-U91Qr04JTi
CT6pr0j6D,1ZME!cdLTPJF6e&lAl0YXAQ1)eVJipmGNmp+[JT%%j,0lG9U+VKhZ6
l%Il`Z9i,F,q!&Fl8U5TE1*K,'e,iZ#+,X@RI"kU`@rFqC[Xap*SACY2)IEG1,MY
Zc&K"&[!$X,&2rjSqXaP3Hdh1Q,4[HFh,+%84IU6Vc0pI&1d,!4i*4-dDL)Np2DE
q(aX6I-I9i`&,G#MbTpC'h!CFf#'9EiFrJj55-hm!&pGiedDhCAA8H4fBPQ+b#@q
[59[p5Cphh8dSh#DN683C!1cUUU$U(Vj5q#&3Uf'kRk21)Z2bQ1`[$GTK#@VRG3c
5bCa9"9iGDh8mm-k[6cXeqTL&#D*M!S+9'F(Q#K#'46X@@Mh,5SlAA[jY0(lFGBK
K##kiXJ%H55NRP0[Sf5!i80D9LZ)RKhhj@'9cj%6ff+TRjPmV+a`!0L-R99J,ejV
kH-0NMQ-iaES$RT!!QA5m#0TH5MfaIY1ErfhbQjm[BfYj$AJAjh`kP2aPCN2p-+I
RmIY&K*)A%SGPI460L0KP1KerCUBDKhZ"e[Dq#29DRfaNheFjiTccVYE2T9C(A&!
4(lch!Bre,*r#P"DdUiDc)I&19V)3Cl&AD%Y0EeKP"&LP`f*'Y1qheC!!GVbcCU"
8h4bFmHjRbh2V`0+F`LlbM5)hLB6P3FG@&`U!DT`Di%!5qf2()[(G"QaHb!6Abpf
a@hbQe&cT4qeF&6`[VUP8YSV2N6YR1&$XpAF1'Y$'Y+B5m5k&5Sjrr6iAdS!mf"1
Ka-5+,ACSN8Ql$PYF@&l+Q8&8X*N[lab&di,r"*32%#53!+feefNaS3m%9`dM2T-
i6MkL%$QTl%afqL13!2C&H@CR6`dF&AFUXh"q19H0BelKph2SJIj8VC!!bj([%f#
`0H63HbU8m)fCe!dkI+YFZmHFX!hUEKT9U*eiV&9N3ibVR`SA$-D@6Vjd(%P1RQG
0l8$SJ*!!HZT38!lJbR,8Aqh[i#"%dQPf2r2T0E%J-U2hpr#b@A1imVYHEQrkh24
hl,C18AePNKi&-&fqLqj$-MR'1IXb5`KRZb@[A,qSd,NkkGBCaE'4&4)3@&q8@MD
Z2QA5SI@"3NIEh*91(3F[BRPRb4fckr6rr6@lS5cILR93TH6hN!!N2ddA0lBbEa(
,'F[PPV,CiITPdd5Q(#ql)rlZ!!Dp#2M'Ml8ci#pqfp[Y198ilY"m+XJ"@LUEpS`
!Lk$CjN'U`q*Z6L,%@Re-R0QEK$$[f)BMUS#cpKTbmZbaqLcbJTAVH90cU6YEU9a
`bY69Jq6kZDXQbkRGADiENr4k8$hp@+hS[ZkK'd0+DQa025@FH2%QDe)V0T8Dbl1
&h5ES&jM`04eL'bLhJ'G!KrqZHmQ3!"NpX,M[X-%E98J0m2#HiUK(mq5$'5&+HL&
MZbLqH38BdcVSUSjr'bA1([BRp!lIJKP*M@8A3q-S8)aZAC3c@4"ESeEd$faf[`p
8ICmc'TF3&+MV1X%mf#aY'c2TccdrX!'kMT!!'dVKl'6MIkr()`JV*&GiiP2C*ql
r&5XqAMJ$a1dr6ma2&(LQ,M@+q0N53`2#DJRUAa55%F&2NX@IBQibQI"cCT@jXhk
k#UUi-[aL41S5p6JN'6EjTIcF6P0MH+pDHYM@`05@-FZq1b!F*%(-)(52jd5"F*&
cTG'm26,4BC*%"rG8i*Mk"V3Aq%R(p$@6jr0PIif@YqSCS%f,eGYZT25Gl(SRHN[
El2q6!1N3$p#qV`TPXjdSU@[Z&qA`K![le%8S$+%DQ(cKZZMUpi8b,,H%PqC$Gm@
bePhA&Hh8X[pYY1r$J)Bq39-KSk4eS`NU'[VV&Rf0e*Y0#P&2!53mahmCUMHd%[+
k'9ljXL"H2fTHKeiC9f%Th[)VTjJer+KEREIR@DqelK$2Rf-FHDSqD[q6VVEYCKK
r8pL[8*&$CV@RdlSPCH&qBVaA$l`[@PYp'T8"Eh#ffXD$lKbD*42d8("3R)1RUFG
3N!#J%QUDpVHQKTCk$fa9K%41!QFVVYD0L!PAhHh*Tli[#5BAdBB'NlKd$%hRUGr
Gc6qfDYTdNhe"36,NAFYFJ-c9G`bEFIrDM`4ZRDYYZp!K@MA-!Rl1hqDU[1V%m+8
r(MK3b0mihiSbYR)1p#%HB+K'airDB'aVA0fKE9-e-5m)1)'fliA)'TNY4kc86"L
*FFU+l-qPGI2USL(f5m2%piA)8b,,VrE8FaT@GpTFIIr-S6*qCUFaLl"l`EjihKi
k(ij*HU+8`48hRiB)ri#4&k#H*a3ApL(3qa5`f$Q3!%if"#54k5U'TX&XU%)[La!
"dc(q$$fmZD,K-Y3"cbVb+$2$6lD$0PKD@pK,DVLl58Y0YfZmr@&[a4M@m9L"Bb&
3p-8,,FFYpZYAi4i#+'k(m%#dI*9rM&U5SZA&&,4b(FCXU`fRfRiST8d$,c,[Q$a
k%Ar*-'N,6JQ!*I#TN3"$(i1B`%801jE9a`XSIBBlfKcFBC%IBADpSaQ)#`ZAVS5
-!MA$k85G413e+%$d,IGJcY+QEe!8!C!!GE&jdf*D!!C!iAj1lIL-LiMq2J,+jNh
+AJaH0&"ZGAEi533MUZ!a,SJL(me4(ILBI9`0U#jMaNiKKNp1CV[*p"h[+Z0@$Ph
Y#X,Q#4i86Qi&m3PkL6!4J01Q*rpBdMeP1S85jCmc@P,(M6LE)SD*-"E[k+9,i`R
A4J4ChC'H,!B2jCrJF#ZQF#62(U[VR12#f-R8X`HE!YfYNP%Ue4LeE3pK1#,*NJG
fZ5RqHY,'ZB&UCeG$Tl#SRe,+U2kqTPSV62+c+5@SU)b(hJe)G",`Id0KL[S0*96
eZ`p4"LVG-HI`NE9kcCV-Ke@)!V$eFKdE@H&'hjf8#iQDal9RZ'GU#4C5NG!R)4V
"lHd`Z14RA4HKLZ%QU(MK'A6'NA!X3R%K3cealN%JD04D@Tr9$ebIp+[i4-eJFqS
&*S`PcE9GZmpB`q!PEaDlV*cA)H'E3+6,TkT!UY9[Xkdh+JmGQ()lA!1%E-TiH%*
ZdeVk&$,B1%dbTkl(HdBU0rU5Tj1`XChKYDDd$%*q6J(r@JQ6$)@Ul'#8@9[!!VY
k!C8&,Z4ciUJB'El[P[25QHRfVKI8M*HAVK6)14,Li%02*LMIT1S,l@N&r1QKRSN
N5d4$PH3CB(&FjFd!BP2Bf$B4jh1qdK(lG3@VG&C[HKS3S(SUm1,0p(ic2[%3G)(
%j&3K53R"(jXP6hhqFa5FHh0chYIPFHG!ph4$aBU##4#,1QSZPZpHfm"LTP&kD1L
5-HS%diFN9@EqTM!$l`05-"+MhV"XX!h,KSPL#LP8hT6`!%14L,UbN!$2E4pb[94
*eC,cDJIbVJGbYCXJq%G`9`lHXQ`QZK#r[ePimaJ8H"AP[4X665GrQQQhja(@&'l
EVGZ"dJUf*@e&*@5mTp+XmJh9$4@H)GN2XC)AjjdLE-P@LIZpT-$IHa@*L3m#-Z`
*j1j)V($M)UC8F#M&f8e(pfScS8@c$ChBNl4a6T6!&&'-FKRCK4Z"Y$6K3"9'm%r
XZB*-)"lNi`#(S[0RGDS%b1*JVfUX5BIJ&jk5j1khpU6qKb`pcI0hIRpdV'mHrQJ
K[r2eUA3Np5ClI++q69R@[aV21R9ajUi"k,j&pZ)2RLk(&a5[ZSYKcEr*9RP"H+3
dar)&kcjYG#ppRD4@kqTiQU,[mA!BV1'(e[5ieb0(*3k),c(ZjeXmaLdYb@#*p3H
0Q!#YU4kB8'46(mHpS$`6DM-PK43c&TDDDVHjAXd1"@qVIIVbm'-f4"00XGX1YKY
)+JcINZ38lqBb3+LH"QqEjRNJrRKrH(HarKe29U2-ZSYEV'&#Kl$IDh'q%[P+8mF
jmaQIT-&i9ZX$AmIH3Dr[Id5m#frVf*XJ!C`rr1VVfBMDIHmb4$jeF'`GhF648M,
*5*+f*Q1fFLIPpH$SZ6M-P&0Z@,HeUq$Km)-&6S,Y1TJdj&PD(,0R@p$%EKX'i6I
A&#&qTK8SPECcRSfpA8K+ER[US&mFlD@Sj`beF-Cr5"P12b4+U8SZkUiFNr,F'J&
kAEc%0Nh-1pHC'eq2[-'l$NQi#eV'TjQKB3!#,T%PpjT-4&-f0JJUlY%2MqFdLbV
NYRCIp19[caCRr#!Si!3$YMl#0P[%+80kH46%`T[-DYCPS#Q8ee1'PMCRa(i'-QN
6'FTVL9%3*,ZrG1U-dV+%#-Xf*FZ3!0edCCGCMcZIB[SrTT!!Rr6D)r(QABeeGdD
!!)20FYQAlc*,Ff368LHX!L8d(l)"AHP9rH!8`k#4GEl,AJZjjX$BdVFjN!"JH*X
*EUSS#"b!Z$IaM[&CP[0Kq6Xl+cGjMJXb6dQfeZ,@B9QT+fI89T@$#D#hS%PVI9X
#NUPC#S"ei[j)FphN35m3bZ2r#(#fG1INqcJ1GJp`j+&9-da3`1YZrLK2l9&dYd+
rE##Rb29fX1[VG9`rV),)R'lN0)8RUjZHp8Nid32'!M`B5QBqfj[6&JBYXYNQ,,9
dr0+NqC23#DB*Q5V%Pc%CRGjDAAE21-bAP[3[kCe,)GSP'm3PTKC&Jm'mXdd4bY9
KhIhAYCZ(YN2pk1c-4,`+R-Uf,[![b63L34Q1HkXcH2jmJa4`-Pb5EU(e%#aFJKU
Q%$-,bfPrA#"dp#'1r(eFh-GPSmQUH-dYk5aXa`cPVZAQc[D6j6+6,`H%iT)-@lT
61cRQ5[P'Cq8qfC9jB2Tee5BZRMmN!X0G[1I%f`E6NqH,0j*Ei9Z,ac"h1&5iiI)
Mib0@&`iFqPRZSN(#-V)%1-)[cLILm#H'`Rh(d@Y2DKP-C)bBkB)lVdBFJ8)9Dr"
#&D@@AD@@*kAL`NGm9d3@(-&TFmMN(,ZlIj2#8MA5%X(#%Y+,`X*4i*jQ`M6ZJKa
VF`#!4Vp'edBe4[e'NPJ6'+bIj(T[3#iNhbjk3!LUe$b5BU9LE2m#5@0XZ,#DQ+L
bE(Dk#'dQ!Qi+hLm4I6KUM[F#9ZrpZRY#FKpR+!X*QRk,(6S,)TPRHHDkSAk1Qi)
(I%ZbBTqX3hk@iYC-L0i6E#Zc4kG"-ALi#3"&TK%Y3J2'mFr3'-pTFbSYBAV)b#h
1T*FdqX$VC'VU@T4mMj+T9Ke2RlbL`[NleJdR65L0J,&cS&`qj(``i02[p1D%F)8
+lJ9%G3c3Ha-ZNqp&JIXS,0!U'68A,"!NJ##S-UP,X@98098-PTX-M@R!J*+aqG,
34@J#&*NQe4hf9A!NGcl*&bPF849dP!E!XBBlF1cihqre5JerdA8bV,&BNR4+R#r
9RSmIqN2)m-9&dd3,QYkXmqYP4!lM6'Qq8hV5GHT&IDMb5lI+$%am4N0'm$ZP1dE
2BS`C*HD2`"d-35T'JJE5eUDCpT8A,2IT6bU#60Bl3Ye+0GDaZl1ZYj@pQ`PA!S*
&U+aG$06DVQf92V0KJA'PQZ1HU8CT4SH%%6@-Pk019Fk+!QNA*@Th6D1R'"TS)IJ
EFMX5rh*Caq,CHTie%1e8T'J84+Ke-4m(2&Z-XkSfCEhXSfVVk"QpcchFP#XbHMp
0V%Z@*451(M03"50dT2b1&c4*&",&,8#Np[[DDZNhk9F(YL["qe`X*@8Vd#$15Rl
!rQ&!A3&JMZJZV@9NXD,m&+C2VB(8TJD6B'M,QpKEKjk[K$"0)`+ZPrS!*K-HEAG
aZY$mC@bq(!Ymq+Y&e@'Lbq2RU`lEDb"GYc$'bD#*a@+Ml[P8h1+VC@)J!@L@pR-
3Pb65$"PcK1R(YVkVr&Mdr[V3)D('ID%d&'H&mNF@F%K&jDVT0"%1+EH%",Q+JA8
PL8!Zk!SQT9kPGVBlS0&l@L`2Q4I$Pk8%eh0DLr8*iekUIjF!T[0(&Sm&ccmb+kC
5%qjrearqfG'`TfbX%T!!i46$j8q*9"+d62K-jkTQ&A@"Y[c8(+TGcPT1Tmd%pi3
Ur9GSEU,5PBK4`f%ArB1&"a-f`3@--#A8H05Hk#LU519#)r3ECCYjdYa[IiClK51
0IFjMPj[M)$[Y!@8DHMF%4bE"&5Q8J5TrKA[KL+H5"1QG5**(9)`)Lr+90pL&*PA
T8cEG"DC[2b-3,UN@d*-TILc3h)G9(b+Hi4Z&E$qEpUFK`eZPAkYIR#"H9q'KT+b
pEKHMPHJ8%mJZ#)rVkZ9Na%#NE!DLCKL((+&pGdUr21S4LMlrT`%jhmC+4kf(8Cl
pl""*)BaAhVLSGJY9**JSPkS&E)LNfF*M3V+IAbrB8m(Tm5,(Q3F"'*-Rqdc-a!@
"EI3BHZ2dd*b3!*1F)A80*F#!N!!Nb8N6I%#0d4G$0'P"DH&+q0`#r2V,SBe+c+2
35b3#5fmdha2AMD6L56@3!+#BaLS8F1-Yq"KVlYAdTJRKb#hi@ma)9M13!#bJ*%4
e4J%&h[GdG0@dm%STc&jQeG&(YLN'-6AMk(#C'T&j4+hU63`YEfB@(PlqJ!hl!5Y
Z"S"4#rGSaA#F8N'4VMiGXrheCBX+)hKZLY#('bbUHT%mNULRF"@Z9aVUG@`K!3M
M[ieIlkKQCPqP!0X**LHh0KV1Ti3I8-QTcG%4hL4X)D,hSp$RHp1q4KZ!QmMJMG3
9,K@hbI2X&1[,UVShcE5(#VZVVE668eXp#9pr)R+6hB%5apcLKcjmX")AEDa$BP(
BD@6j83F%kiVG3l4cerkaMKl0liG5VIlr1'*RGGR*aXH(KdVfh0c6TViYm6m-Tj0
jfY`K-CKVajrj'mm5qhKJK-rpcTNm0Kb9,`@MIqpFKbb,JY,dM)R2*fcTddDhD5h
K*L,0N!$9(miR-b3J+a""&b"3'$!8&8UZ1hPUk@)XI$m9*ZFE+[ljVYTpIpmi8k1
QYT3"RH2)lSrLS0f%+-N#q"p["31UbUC'')T,D'ca$LIBUjUpjal5kKqrXhF`"CQ
NJV1p-MjD)V),TKaBM'Xq",[ZMcYeCbh3B'#SQ,Y0@Aph+fGTBQRBbL*)YfUCEr2
$6fYM$0CU9KK,(!Y84L,NjAD51DDL8mBi5(PTQ14E0!QJVUG@N!!c5Td0BAQ'dl`
4Ek1$Lm[&3ml@CCm0I-`2(p08keX5p"#fX)adIc4A3H1XcHcZdb&A9Q+JRX9P6ZR
35U*9B,-0D[,Ab(RM5)IC29GMd+rdpXScE)cL*IKJ&',L4QJZ59*Hr!JM4$BfAd)
iP1c+58E)p-l8i@E9Y`Mc)kk$EkRV(%%4pECiFNK,M[0A8ZS'%S-b,pq8'T&h%'c
)jF@Z-EN2(0&i%DAmh@R@AbR*l1GK[bK)F55@Q"fU%R*EATmJaid4Sje&8K5PS6b
0l*4pBUr)#U%2reD$lJ-bBJej9'r3i2pU'YZ#Z-$cGNr)k$Ei4h&GM--p8NS9M!8
hAG'bf'$1c-QZc,[h)Eh&hl6U(450SKh&-eU40C%3A)*5A5m+*jd#L9e5LB@"GS*
kLSUbHfia-GFp(ZpFf*B,),M0Sr&mq%`cL)h0Xe@M9DYp+3jiVA6[NfMBF6A`YaV
kCNaZ!64A802pBMMH&)P8["j"jc2&BJQNX0@3!*8+H`)LT89MSFE!1NNX1+STp&6
B45XLNiZlD$KB1350$l-Y,L)AJl%X5V-BE(4(jT&Rpmr)kG%bjN@!#Xd$`Xm[QaX
HPKPGPJTJLfVH$iY3Mk1T*DfJ1rLl"(2JfkBkS1QFL#PM9PmVq3IVC6a3T3@rI%M
T+K[c$9qK(EY8a`,keiS4Z5P6Bpa`Ab3!1`M,KVF`YYeY[1K!%+*+$hG)"-9KXX`
"YYUN,hDXF%k2%XC4''&KS'fm5NNj+0Q5@P#c`*CR5abm@kSVAq"%C`rEMr@(@+"
BHA3%i90Qp!p,$G5D6)c2YRJ,6(p*%HDBV#,E#B'T%"'"p[[aQUD+eL(T6%LY0TT
RTSG$-mY`#G4D"S5+j1@e-@NZUU!Sr0%h4Lkrl0FaeejFc6&Dp*8aZqB5LJUD-JG
pGe[dMS#dkUeLN5Hljb(Ahrd1e3iUMaJpZYDqVEkreS4S'd'aG9#+[K2r&Dqa-Fa
ISFrPPS"'4TAjeF0hb(qJ5B`rDIKR(`mKJ6X2N@28'UfdVjCbAm6V6U"Z@`Ih"Dq
VapJ[cPP2lA@q$6XeKkF!dihqq$HXl9eq)3F,`rG"%+3*Pj4phT,SiBbp+9!hHXV
6krI3N!!FmB-U*XPmD"lKdBUpUD&j8HP,3!V&p(CerXXa-`9MHlRphDm[5TPPq6C
mcZ14l[+PB1ee'Fqk*mq0FP)fqE#+8KCP(fNE4N2k1fNDG%DTM#Tp!KfX-j!!T'8
Ee5cZfT4U-QQ$9JUVGBE9NCPP`M-QkbZ5EPd@VhS&'1pN6A1l3ZbPL9!Ac'EIbe5
6@B@B"F24)C4ZDK9@XS%EGe!UN!!lE$Zh1BENKc,5(K`e8PE8"A)6RTViE+%b+iM
l*D+#jTAqHk@R&#L2pQY@'fE*V$LM*M5#*r)kIS95'M'Xh*lGT!EH'KRP#@fE3mp
(`9,'mHqN3a(kLL5NPZ*'61Slb$K51li*aLaES-e+lCj"N@ZMe#STiJIdhZQG&JC
I2$#hF`@8,PFAGFL%-*hhh()-e3VjUQ9hY2(B@GYBfLJ8QQifDZaP3aR1A(D'bUl
-8q)ceHNC`U[EE!'P6IE2,(0eY05B+-D&-`-'j[$A(`TXAM@CAAMNL2eJA3FmlkZ
m%lPmIaJ%$"(D$14"0i55AEAmb5EdN3Yc6jR6YMQ)iU@V#!T8N!#IRJhlA,UU(AA
-,T!!jajPekJH[6A)%qB('K5M-JXQeLP)@A*a[@#$PDjT!SFec'Ilfdidb4+m[%c
V""aqe6GJ-Pr'GHN9qQU,,&h6S9Ak3k)NJUC#R&FNaa51$r1laIQ3!2q`PUB$paB
$d"hH2""%0LAcmKICm&TLhl(,-T&@PTCBql5c1hjbrc0NLlYYP!00S"Nq#R*`mXf
lUY[TLpL[)0a2YVGjQJEN$LGI02f3!'*HJ)13!'LND&)F9aJ&K!5iipHdI4c*QBR
qEi58@F4hFLi%,LC5bYA(fYk(3*2X+Xb08f6@8Dc55r'8mfD,)kE,2m!l34+M3YR
KX9Rf`HF[#dUZB,@"JI-!D-Hc$HDZ'8JX5bhp81Xd'6`pFhrlF3SiKN(2'e48`XJ
r#LTe31p1jKEH"[lqh)F9TA(dEppIlh(9TAmLk3Ed9B,p(fPE2G[J&JUmHL,lT5!
r+6Pj[ifE4SKIHJT-m)c$3b1-E"j3NmJ5A#1UFD+@SKTJ+GbcDAiSm6pq4CA$`i&
!HkFV2lSN1Y#amCMkD)pY5NlrcXYd1aY&pJSpdJFS*VD[Mm%I96kp+%2`RcK8aLj
$#JjNQ$XJ#-MX3CI+[q69+1*GHF1rVaM3Dq&6**rAG$"jf,+HR1K%pi(X69cLE"&
THU6rADY0c[+'5i0DFVDc6af6%5p06'fG!1XqKYB'55jflhCJHPc!*pD#!6Y'p3d
mkD-`aD2Z")j3@#lE'JFVQ5-M(1dF0qi%1H6+RBaNS0HZ%r6l3D5qGN0#@MSplbI
3mQrG(*U8NAPK#NHf#Q8DHfUh+8D!5UVN!%JijJYMqXC"c9kL4$[Nb3m%jj)hHhC
FLG2P$NEqILB$-EjM!UpkMVqkAG2NeURbGpdQ%X0L!*Hj98BlJTSblF'B2LkiqfG
p1-C0JlVLdB!4'h@2#*p0C,j&!+SP,L6SX+q"VBiXMD!(qDG'3#M2cd#-mQMf(5d
[k4R-l%TD6('Z,[CcU"hKmbKFdCp0I2Jr9"'TMZ#+&2l0[,r3@D1,h*92q58e5+#
dAQ1Pe'3Q3`T)i&T@H&&@iJc)c9!4*9"mAr!3Sj[)03)j98Z3!(fj""FJ91MN"EI
G#)T#q%jRTBH*MpKHmU%A5+TA`[bqM1e!'pj1CK,J`M68Uq0CDiSUQ$c"K)J3K1E
lL(`k3(0[KQZakjPiH,p*0)'+b&J6%+Q8%1p$@,$l9IYPq)P!*M*9%8$F!Fa!N4'
1)JV1@23eiF*IfJf9QYFBjeaK-pQTKZ"N)DKZSPLKkqF#qUk%3PT0d$@dCSJDb@4
0E3B6eZ,R65NRX[JDU+cVq3114dY9!h9"-k,iH`GG3[AkJ1r&r&eU)2*B4Br4f3)
D9'D&R%Kf5k"XT50(&-Y-l6e#&)cEbeQ!Z$"G@"&'QKb18fRj%@dVlJJ6lZbjaHq
R#K@XaqAl+b[!5S$BJ#Z'Jeh1pdIkCqI3j3Iq0G6F2ShM5iYSP$2#E$Ce-p9jlQ(
PEAPPCf9+)a%cXA9S4P@Lr8-5NHMRrZ&!Q1-S21MUhj4P6EM*CiT8[qX%,i0`8'"
Dl2QD6,5re6R)'NPqP*0X[3ESFZUXh4f@BhR5aqN-2pilT@XXY6'"`mTY3A&pmBL
&!*-@GR1BZY)d&Ud%@U,8)[YSj3MkN!#GS@[rDBfh@#lqYb94`UIR#c5'd)`08!4
V3"95!i'9`SX!331,d-,i3Qq,U+M#8KV#9Tb9!M6#SK%p($GBdTUIMZ6(U9K(FLd
LS)a*88P&DqXkV-$MhF#X$$m*BGN2aYI"@HV0(ZVNYPS)P#T!NL6mAU!bb2[SK#M
`GSP'Y+M4SC5p)0GD!r[IdjqK3rL!$8m#`%RI[hV[ZF#$`ql`5-2q9mr59aA(8Nh
[ZGRpa`1A0HE%69*pPkiTT[AF$f%2e,"C[XEa!Q[rr2FEEYLBD%0S*C6l``2K,Fq
H29p&-Ec2+PqcA,*FB1!4B,,F!d9I$l(mk9Xa83V,bfl,[m4qbhi9bj-NEaNN`#E
2R4c`$#-cdA")Np11SUN,1VpimT(00`G98LC*!kcK5K+q9SVhdTT(6dQa#qRa9I&
9&RZ0T,ck1lBFY4PH20(A""r`,KJ8X2j9Y1K*laHE(-3FGFXb9ThSf&p!VVS-abJ
9C*jCNC0Sc*053`Fqd6G5'rL4#F-R"BIkm`m4#P*[&mc&m*9-ZRKUc"")Tc0BXN9
#d$V`E8$I*lRir+eKV!FNIm33Ia0MLSPm%(1Kb8R3IiX2#F*$"J[Yl2F%"0Ah30@
ll'l!`SS(X-**9h3,l3rkK&JL*DpVrf`r@U'RTd#RQ8#KM4b&-8YBL)@E2V+S%4S
Y,4@QjLkmN4fr1!HAm`VIPEhRe1B`,TS,S"2&H$k4@,dND@'F)6F&AM3DA8QC(pF
fN!$I`6U8(**&QMR(SV69,)LK5%`&N!#aC!rcV,H8j4ZXPMeZ)V+*f(CTG1Y-HT1
+-46N*JN3'QP)Y[`%cjd%Xj%1S`iFbla$"AJR4,,bSjEH9F$0H"qHl+PUj`D'CRT
pkaSVEh9"(%cZiFF!NEVB)QRSV6ChV[+k5J+c3fL43jD,5QFE3df-pbBb"r""[kL
'p2#0'YNbU0#bjqRpZJ"Tf1[c$-9YIE[Dk0!jZc0'bi(j+-64J1"Q*&)RK'H4UA'
d%'RAAM[+LeBR4VUTPLIjaf-1,C(Lfd$ZrkeKl1U[D6Al8F'ci9Y&1Jf(4C4jZYq
3!,M+L*IJqjE5cVEmfqQmFGPCY08*%II6e8i`b@22(&b'X+@VaZ@(VYS-CQA@BqE
8J5m9)0Zq4LPp(1FKG%j9F3#rX4VCdjSUf*l,`hQFA0ASTCcJ-LF'NBNRm83$0II
p%e0&eKJ2pi"(jAJ4A'KcV*QLMR2l25[ea8,8C%91hjj`X0`Q&eD[N!!3Q3-fLYa
Qd@[LTAYG%1fjPScNr(rVk!8eRf2"3J!2+HI@LZ,Habr8qk!2BNTJ31I-cdf''dG
+Vf[p$PU2[3)P'0@$&Kfe#eG$QD35&390Y3C`dk%'rK5K-fma0ej8S6GTTFD"@KS
HKeS$'VD@)R$32CrT1)C(#@S'iViAHYSB@45N2@'IJQ$P&8`,Zdr1f8IUaJ*&5ba
RTG-UJB'jaG&+J2YeES*'X)6"6d*Cm@kkPYDE(C,D8CcRl-rG"ERKXfVdY3j*H(l
*)Q*,e#p+E+pi"kTKMGY4mBYVb"(`P9rCLPQ+1BF%Ga6E9"UbCf'rGACGbaqj*BQ
LF@JCqi9+L*J9PE)[2Gj!$a&a,(cYNThq!e&c"j+IbpeX2eGZh25,`!Bl,1kP&%f
#VEjAXbGKPZM-S12RMf9EhEUle$crmd&3`!)PaApT[fGMHJ4YlRPS5YfGEhP-8@`
-b@PIHk4)%Z$J`Ic(YeCAj9C-8jJ)Zc2"#HMi(l2'd8S-H+BYHK2cVrfq*GKjG@3
aA25A9@!ILU*cN!#kp"F(i,9rC6-a8810cT!!,I+`V+B1ZEULjff5J@JqEi,-ic3
C,++2V0KTRVLPb2&GpKS8+iRaY1UMLrTPQ$XppISXFEG8i@CQY11Q5dTYVPQb"i3
9BVL'M`&aKIIZH``BNZ3D8,Y5!V!-qGHk`k8h3E-[+DRR46JU-(A&UB"kN8[Z,cL
+'ZH+FMX&ed2fP0NqK6rEj`@H['6VmlRJ[L&`V-"JKAQ5+Y@CLYPqjeJlla`mp4d
U+8)Kl8*p,Ya!qhb5"%*JrX5h'Hhm3'$5`(6B`8KQJr'5$U"1+8dT-6hp(LT(Sk`
Y0&c*-2C-6mc%RUbb1Zf!-Q`A%LLe`5ap50Q"UL@GpU)J"-a+Fc#1J)Rj@IcVc3"
3D2l@@EmcP-32"apCUf!P9#QFYbP@Cqd&NPpNCP0k#KX#X%'C'CRPM5,H!KqH$Kb
CGDVqGm*2Q3QlRMQSK[&D`pY+2CY$%kXjDj[VLP0Vlj!!VBj"+2TU,6Rfdm91CX'
GA6K$3JA2jZacadrEi51+2lpPQdTEkke@HPYE'$*ib&H4Kr',c-j$86Mmh#m'K9&
eIr481'LKFHJeAIH`f'ClQ`HYcMfk!RQ1NZ'5@PULB5+5%cRkVDfZZZN4h465851
)Qm2*$L`3EjDDFK%`(,VMkZa4`9f+V,X@8[!Y&1PJD&T$0bhV'b0%UhH+b[5K(a)
CSNHS`IKlNA'U["%8C8)$T9LNB3GShi,4889fH)l[m"+DB$8@b*V2'k,'f5jaFGT
NYmD)&br&Y[2$9dAZS&aj"AXT4,cUDJ%3[Pf&3&LA6+-1lb)ci&E)5Ke*ThMc'60
33GclSe$5m8mmG&m65c0hV""9)X!hrfdr05@KSUa`'Q2ABfEf@e"j9N*ebRpT',p
2blKJC-L3!*1'T+C-NdDJL"He#B"QS0EC,(S3D,lVEkJ)@X*Bfq+kN!#Vih1%*)5
`2MlaA6NQ0524DTa&XGjE080'158%fYi0cN8@QhqkjTTbjY'aZ+kPR6mXPX[-CRF
,Tc%,%$VEThiQ[1e%[fLMqdfY,,p2KS-+e$q0PNBV`FdY&lZ1cm3cMpf[d8Xe$B-
Vlk*a1p"3pMkTUU'Q"-M@QC,Y6b,!J[5C%%NBTbfXM(Te!&UpmiVQ1%`[F#N5Bf&
`!Vi+EChTmD$mT#lI8A#qFd[q0BN!`A2%$9NX23UB'*P1ddN64&&MB8X%R2XUD@N
j6ldB2apYp'KkSRHd&5H[88KIiDKBdd8QG"`QB)km8EV%8lL8!R4*k2H%KLN`a83
9aA1$DQ,PUl[6jUZNF6Z**Pj1(SD@pRdbrJQ`NLXl8dpmXF`cXqhAQ`H*8cBKKBd
d"e5Ad%C8K,S6HSGkpc+XDE9"(`Ul,IE+r!EPXeDq#Y,a'q99-Q$pPd`66(,#YeX
mIa!N14j'2I#K!SUm0PVGJ`Hd[k9$lB!pBppN)a!mSU(E0#+Gpm!Kh2dm63h*RCB
kR$0*&GSaZ*[FX91*CU4aE0Z(p!($fT,T-62-PQ@r,G%d*TaR0GJmCB"[B'1c)5(
(KDmEFQ#3!(imiB#4pf-IPe+Xk8,@`m*DN!$PGNJ%BR,+l'bcl''$+")!DJ)eG%J
,0q@8'6mIZdh+TX*C#kbHQG,qGPkSGpQ2jQF`955R)EAMe[9-eGJi*A!CrZf#M1,
23Xre[Sa24mC,a8hSTAF9ATqN&TIYK$*"F)B%TYNXCd,SGSMDL$2q'BTkLb$)+X@
-T"@rJZDR3-rD+E4B[8MXR*42lkdTYX65'VrEHpA5+4$MYaLB-U@iJJr`Cim+"@e
kAA8Hh'lYk3)VP%A1KeY%I6QbKCSK+E@TH&`#@@BY#id@0qkpHJ"'5Xa2NBPJ@8U
2)f%P0[G"b!qS,Lli92,Nd6dNpYLRfq[6U)#5qNZm-VrJGH'VqZ%p0(Z-U'lTD-5
mG2&TEZT,lF()UbQ4eae!0NR",&"Q2b8"Z%r2H'rfpY)SaHhX2+Li+fe2I8Pkcee
4Li$db5lq0[PHkXRVI[Rkd1NaQ#GN4VTq$'+8#`k8!Ga2E9!eNHqUCcD+C0[UGYb
YN@NQrbK,kK-5F'FdEjYXh!K&@AMIcc20cP4[krqdHP[BT!6hJA(m(PHfrhS"cjG
ff!H61%0Zm%%4Li#8$XD5p@lT`ihf63A-@6-T5B4GIA"M3rm,M'Ajqr[a[6!-9XV
39`IAkJmYDFSh5Z5MI')Q&pfafk6Id30IcZE@)B(YQ9%fS88&*P9jN!#PjK2,FFr
1q9')G2Gq&)Z*K@L&`fPdjpTITC%lRSJ1N!!AQGhIG$hD6rNN!ZD#92-9rR1bk3q
1!S$J1TU-[2phm6,NaYG[1qlp+(i+*!%K5i#,#dEFXeLALPX`85[fBT,hVkVR%YD
3!$&Yl%R'`%UVN`#Iq[*5`Df-N5&3h8SadQU@!me$Rd$YbESUUbGZ+aQM-1Q+SZX
[+eV","p`cY,&1QlG2`$%#&BCjeZBhmE'rhjF"$&DeDbIbP+rLN`Kmb5b,i)MmZi
!Kb)PP(A)c809-r@+D13e,[d(,55R0+5fB4%ISL@JE#pM$JN%ciX3A+'lj!GS6qL
M)JGM[HK'"6i(#)$)9aq"ljAi1)V`&'Skb1)k1L!C`FYTiSkl,j+#2Ff1VXAb3BQ
%bHAp9HQKa2,8(VNa@$ar%#4Qj93&Z00cjpLTP)TaKj'b6d'X5K[[lqj9BK#RbQT
S$3FD5$D"(ca4mCqZ%imB6aC-$LmcF'3#jFiX`UATcc'HShF1kbKC*#"BPr$BI"b
Y#28`&ASY,6)pKZU*h$keLJTFRaJX8LGUAq5Bh6'cMU,6jrqHXAcQ'S8Ic"cebe3
QjIZcp)'8a)0FR,[GfFX242[8,Q9#hQF5k422--55KI21,V`1*800NMYP-6)SGbT
*jA"mdT43p$fGQA5RUqCPP5a[r40!@G,1$8JFd+HQGS(a)cB,,8c)BkCj#VRATJA
DBm(5jEk4I'XX@R,MffZQNdaH'iL-kb&i$cLpKeEC2`e"m#L9"&k5SG5TfQY`4L*
&fQeqFlGlIZY9E*-EqXYb5b'kKABZ!G+-%)'4ifG![4FmNAYk3RXpmUE[%[-J%rG
d-jphJd8FfP))i$Ch@'0()'r`GE'4`8LRb%J-Rq(201%453*L@%f9TK3pY3kY"9m
rCfh&DRP@N!$qCJMX*6UcPqJk)d0BI8JZiC3m+!E"Pk!k[ZR0#,Fi9$Yh0r`"`Tr
Ga4D5M&FF8Ei$`eMBDp5["F9eNQR)TP69ZmpfHB),8aYi`j0clGKY6jSbHJ-!ApM
mD&l#lLU%GGNah6K&&81i&5pL(d1cA1#$JkJh'R0I`GI$SJrVV89pEULIP9k0AeU
TRih4P&6TKbm*)PC&64qDf82M`I5&"jMepX@5LQAJ+3GbjdC-,5qj-fJAZ0cB8bd
bAc"jDphCL#DL`2Ar["V%a,mJ$3Y4VS6QmcMSkkmjYSHr1rG*"R'JmPQl[kA!Tp'
89%$JQBGhDhCRM'8Ne+8'9T[a%8&R0ePPRdIXJJ"1kP12)6"f-pJlqC'Sb,-*)&-
8iJT4Q"-9EpBJ[L,@Q+HTbJjqVcmm3CVRhH(i0HBFP82mk5)bA)DArM1rLXk4"lB
5(P)A#RiQFd11$K*S,L"iDj!!'R&#12iVqLAbL%hN0XZV5M!UB,d`!PaBX5dD+E-
I&mT*PQeCmEG6*Z8aprCH$"9jH53'IkcJKkB,j&QU1b%b`8jD%j(LMXrAedr@bX4
Z[SJ%Ap!IhG16E8aBN!#Tk(Kd$'3LLUljP"VGHV&1b[HPVX"i!0Br-(S&k+hSH6U
,LIViAMBqe(Fld9k9aP`q[,rAqlQXXFpXe*0dASbhDr*+S-'C0SmP[fr6SMpf"GS
`HVrN!+91rIprd2i$&858DD4C((8LZAdaUk%L"jp`C&%TbYj#pc59lIA''rqd$j!
!)9`QC5e%BrrVDE"K4(G3e%)FKb65,qFR%&"kpdCh*YdpU!dZG8ALbEGI5k%FklZ
kaBN8dBPC4F5RcG,d24ml)mY@XS-mjPNqq[mrIkh[QV$Mlj!!4*RX@B6+6PVX!r3
GD,E5A$-@SVeql1(r(JYF@-B)dJ@TGjk8"8"29I'T9NmYGU[+Tk0ZV&L@VAb&ALX
1C(UQPF!N5e)i+#6F&#'+R+S3fQSXjI&HmQlj39h-55hk(&IZ$U,'T`bDYHD)39f
&"+c2[4FLq&V*XjrGi[KF#qP"bE%!`r)CfP4%i#1!)FdICUhiG'`r218`Ue0LLDk
Icm"ScP!hd94"ZPpQ#CZNXMrX@QeZ"k8EN8YSGNREGQKpF-Jj4p(T(IkR*aq`DPE
KMG+hc+kd`r,d0XPkA!A&iYP46$[!b!)*bH"9-eNa&VPZ%0&AEK92Y9,*HA$b`0U
j#iAkY"@RRAA+mF(aCm'5K@&4G2S$&%EeLU)Za%cGJjIY1c&e#m3"qF%QaYbXE(p
@N`bhU(NmSf+U)EVlET5[Ak-R'03iqMh02G!BMr%Yl8M0e*XaMVc'q29i6*U('NH
8kf[Shm$FGY8%QUX0DcCph+KGLY91kec-H*EE,*fh!D$4IbZMHFciBpfe,Gq-3Ge
RDRI1+38&d-(c$bq*lB$8UC+6'AK,I)YM5EP`l3af3B)FMFe[f4j,hl'(-k)+XqJ
YR14TMDHVj'mVS@LRBdVNJDe*Nj`plr8Mbh%B"*'8R)6%lVD&LbqZ(`YF(DC(rph
N*dci-RJk1eFm5!4IScE82iIcMLhQlma[XANF)"ldU(CP2cVRqfiQi`i,3'EEmfc
-[%r+lf6ArN4M@!aQHiFd$e++FC0KV508qa(klBk)6q!SY`!m33l1+ZPd3qdKAh#
LZ*@d`cFp`F6*U2X6GJR0C9!ZTR3%b0FpYp9"2bJJ3ii&EhJ(Y6[aIh)1(,Q!HLL
b$jm6*"K-Lmp9e-+0I)!h,8p#EZ[,+N`"pY8PMJ8%Q33VVqT80P!6kKq+BP@1fJS
aAa-,mTq#jI(*A*,CD3ZY%K$2A`4Q"dJ&a$k4`-8!`XRb*)*1&ip14$`J'K2Zcf*
+dh`D8kBXeYih11UIB%#U)YG3IL-j,8VX!Qp(GEQi"i1N!T(lMBq00JU#h$1@5HF
c@KJ$L"3M4&SIG!pJP(`mrLVPY$X!Ta-l4KZ(ZmU06L+"Pj!!Hp[F1@T(U@$krVS
,2S5dQQ6ZSkF!*R)4I%`Q'SLlie198e#+c+"pb`Lf&q*K(Y[*LlecX9`9JS#9%9B
*U6Lm-`AG6Cdk"cacB@8Chf%2Vab0#bU%G[R5rX(d!SDV"3,,mcXKVPEMUr3Mc9"
"iQ(&NE&-4#j5,"8@0XaHHN&5KFciNah1ZC!!&!Zb1pj09Rca1"dG$IN#ef[-DLq
lr1b6Tp,LM2k"d@CKEH%rTm4NLTLKH1`dPTYfcJXd08`D%eR*5)&pRh@4aM'93QT
54Fr"bEq*-b"`1LJ3CABbmFJXf5lFkK0k,hc,`pb55hpqa#9++LFFL)B`8Q@QfL(
E)!EU-k8-*@+S1I"F5!m"JiMefD-a8+J+EXpT13Cb4VQ+HKYhf-i0AdaVh1Q&M3V
jU!p(Xh$2$qZ"N!"R3-kCKX6Tfr$"`DK@rN"%+cp2V53VQCfNEmr-4`*mk#"4Z"G
NQf@!9mYP'di*FGFU)D@#)JecTA3M1(`K1#lQ8GkB,JYCcJaP$`+QT%Hj(N-%0A*
kRc!4L$G8D+B0N!"e!DqAAL"kb4+UfdTN&*j,MV,3"C&)N!#4+mJ8X6$[DDRQ&ZZ
h1YB"f@q("5hFdHZ8$fprFf&&jZ!9V"4h(a"HKkcKpEkK6a6`Ga)`fTi[J$fhiAr
9C6aS+@F3iAMA`eUEGVMSqafhp'`UAIqZi!Tb$(K0(Y&QB##X6)j"A`arSCA4@rr
DiII-0pd[2c+RpTK@d6P8X$2J2ef1Xa4$YhaY&GC#iiP"9pPq!S&MR68QXjFAf[m
eN6SZ3CbE-(Q!@I'rZb905jlQ80[KN6"m3fB)4iAFP(11r,+*fLBDI8!J68[bmik
`ThXcH5&iM*!!T@Z2S%I!Jk&!C*!!V`jLC"T+2arNl`hZ@N&'!V[8lja`EaGN6N$
3(E29j&YDe,9F9G1SjS9#Aj`Ra9SS&6SamV6iSMi0YZLMhFBcArX%4eSPKA2r,E#
&0X$EM'+M9-F"2@Ul9aXYJD$MET[`'TS)LFM""hFI25%3qZaq5bdR8#STGV4XVcS
YK!VDMMjlqMIUN!$!8hE1#b%-"&AT$,F#ECm)fGNim#8l#h[MVJKbIB6V%b)fEYe
EQH!ZLA@GrD3d15K!30fU$)+r$qK2eI(G!X*'*V4Kb3&KGd"QUd1l*DJ6")(dQkk
#Fi`-Q[Q2@@''T`*MCJB`AhN9p[,Kph22(VNdYac[(V%(l3@("E[S*[Qj5-E$Xd!
&)b1b"FA*4LkB#e96T#!%V5j'rlR+)9ZM5KqiPDJjQ-D%U1Z3!-4a$f#IfiK4[F%
QQpB69E6*!cr51PFTQUh!f0hePJL'b[&a$5*pkS9j)CPXmIGVX$H"aMJBZ*d)!9i
)QP),FIJjT!X`,,ISaX`pUVS6a4hZ9(a&+f2h%ecTPDXLm9l3-+BT`ZD"3!9MK5[
[-Y3-P)VjkJ'cFJpQUZ9DRC!!i(PBblcl6TUVC6kQ3Tl5RUHZC#XFCUNrCd6k-5*
U&&*0QHT9@2dfR1(Bq5rT8X"pNeV62%PD0@qlb*hL,B[DG#dJ0-jSHY*fpbrU#jI
i+"`LR&!U$`Mm"ATRda1*+mCZ5f'HaG,Nc"rr8IN$IcpD4TZ%G9$MFDU$QqJ*q"B
U2#VS##q)6$(b'[$BVS0Y!8[*L8iQRNCGE+fBmbM2*'pM5+9-`fVF(Q@Z6!ZG@BN
,-@E'3RfSQ*K)0IYdd9V5'`+H8C-fid[KGf(&Ei``('fUqf)KrQme-j00VC(ilRJ
l`"'C`'&V$qT$-e[5"6CpV1)AXj3q1"4k!#J%IMlY%IrClCjXVH$SU8Z6kJddlh3
qj9k-0#c'k%Z)D1ZQ"@1e3lmRKfAU3HMfTUc&!$CUE@d0AJFcJc[I!CTQ*NF5QkH
Fk"d*L"$PB5S''H,E)S36B*p+6REbi5##)TiFlT!!hEmaKUiKEX"dlS`Ke0`UIm4
ZMcGK`,i@2k5Y6e4Lp[hNV!rk)Bm,DSeZ25q0fd*6C5LqR($qGiq4"#BPRf)0J0S
cZF#0-PBF)&+G)@$KF3db3C'E'BG,JeHEb$I+QrH0Nea#@!%9p[NV&999&N5M[$V
a8Q2cZ)`[!d9"!MJ&I3-Al)XS59G@L'ZC)Zmif3e,5M!aE+%ZJAUk&MfG0@JP$Ak
0"h#*NJefMPT%$D-Lf0hc93K#SE5-2dZ58I"jQ)pCcZ,Z)II9"Jaar$`e15Q(8-*
a(h1(FX#*E&%133%KZj,)8MCN,-L%!YSU94)YI+,F'[$j'8`LA24DGI3aeeFlj'3
MXKm-*NXdKp)$!6F1cUMm)B648J),)a1,'a0DU@V![LJjG"+CAl+E66B&([q+426
Z'XZHqFq9#V8DI(X0`-$5Eh`SlM$+L!XA-%*N#Tfr!R@0!CijX+m,U6aSU`VEi"T
DX+iQ'"jKmcc8ldHi%%iHN!!6&VF&Uc54eXpIh6VDQ4&kGQb'0R&!p)e'3$8fiaT
r#AF5'pVMMBNArliUK6Qk2jVFq&HY1F9AZaPVb*9J"MBXa*CYAQY-i9,STqR*NZT
Zq!Z0[bL+[M86N!#*rS8QVIdk90jf@i"MH$h'cAI*mKXRdQQ--JVGZ8bXHS%!jBq
cheB0)!rPPfTdrK2"KBi0&QXdY`%1-AV,9X8Kil-j$Ym(bCUT`92"qE$I-d5H[cp
*k-C1A&eLPPPDG&VGeP6YBA(95d")+Qcqh',68hFdX+l2#ST#"a,@-8A1*MM2irH
S-CdKRD2SmN4,"K"qh"qKaTM"ZR+4%SFQTb+X`2H@@1QR(B,*(Q89Jc[$p)RZA6P
0f56KN[K(AP!@(26-@B9+*iB8)Re3h0[$YR-K3pTh+#*MiZaA60qad)@h#l-$j+f
lDZXEcFD9cM&R-``#`%!jUUeYc9@dSRLeeSdI(+Mb0KX3*Fc5Ub6MCmU$d*pF#ek
SdMT"d!f9lHUlBXlk3SfX!k`aJ5l`SEap!"ICPCfE1U8F35)VI*Nd[jklm1KL)UG
mX+N%Y&LJ)F5j0)T!FdQR2NjMJY4(q3#[6ZBJ346baB8XS1beQ@L%lkUF9[b1kRF
[fGG1HYeD0LUI!klR`-QC2,V+(Tp1ELK1#YB`I'-!M%'Tf0Cr51qQC#CUCJRbB4#
Y9)*2U"CL5!U*hlZ)2DqmQhM`4iSd52"SGj%DMSEEY1P,#[V65S,jeT)C28V#JIc
49"mAI'1UmbMbdGA-%3brHYKJA%T31lq5f"b1Z"PHUm5+#&0[ClB8$MpZGcl)3hD
b1K%&KcNZZ!0kl'H6IfiphJ@)%2Pa@09Jl3XKMTc5H#AKhHG*Tk1IA,iBI0@'b8G
K96NqPC(4I,E$IhY5((JFj"&8eH&KrFU+91"GQQ9Ph65Y1Y8)fA%c-U%C-"h1TMT
I,rZ!La%0YFfd40!*F(4(X*q8mZGYQpNX#THXb*8lAF)Ni0-XrIa"c6(cKM+Z#[&
JU+Z`1jUC8c[j,'Nr3J-&N4f!mG8SNkUQ,$6,Iej6`UMCHb`1Fr35EG%Ue@,YA%'
p+DPD0+lL83(`4bXE'@K3dLc21cY'IdkCBT)UTGX!0(D0jPUa4Rj*&+Ye0l(+Nk"
Sb4eYCq3pi!$BI-`B,053!'q(RL6a0T3r2q'KVlm8l'CL,*T3I#ebKq2%6d56rCA
T%3'NA!e+Sf0$ph9rU[XYEAM&2@a#@K'&+$!RdD%BmZ(0f&mlVD3LkeQP6d6T[N2
E1lq%QcXjMDYHJUP$[R4QiF@TL5c"Xa3I06EH[)`PaR`ATZ82N32S8Rl"pid[2UL
FKjl6LTp$bpS5lMJAN!$0bAXD3%TE39QcrL0"Y"P)8'ND[X4kG(JbF[+4F#0bP,Y
HBK`BR1*IfI6FTG%&BIXY!6MI6-X"LTll[iC,Dr*VX%0HJ&qPNB$X[54I)Sa+AKe
@LYp05DThJDj)ea,+(6%D9GQmU%S+FM9C-I*RKl+,QZqc2m[-XLJY-GLPj0-H#Hd
-FR&kR5FN1K*8r09K)Br20MR`L)JfC)hr04ZNEMBHQMS9AG'Ar6k[MLX)N!!D3Z9
VF#RfiN&a9,5h)9UVi&$ad#e"0lA@5i$AJf-V!'HGI20kCRcbDGUE`K5G3!DqM[d
3Rh8jL)cTq&J3BT8R2HAIpl@lK9NFi2m[aY$R)cVEN!"D68![CaTeTB5j1b8&C[d
`6Yi*E$ZLB!r!F-&kHdcYN!!hrUJXm$U-Im"4&HDUm*ckQ5b10(0)Xej,1d@6)"p
j4VXrR*pCGUVhUilV!hKh&3-b'Y$@p5FHV!0(NDf6DT*qTLA)1E&DRJ@HQU0HiFf
1j5(aTKcfHN#LceCIk+ZIf6,IK3Sam3(LH"[rNkKQ,0Zih0a"S)I-KV1lbH@6$"m
h`E-e4ihP19(%"5#(I8U%(ZCEUq5HbTlL+c(N$XdZc45N#j1$5dk",rQ$AL$)4[a
qNPJ,+KYC0[XTiPLbUa2h5mF(CNYpShaT&M*e!`@%KZP1$I(b36R$FF82r[@8!Q5
NRcX+XpqI)[b)V,RkJlp0U,RGbkDBJPUFMSUq4&)),@P2IeYA0Rb@"k*VD2'laQT
UjIQS!p48!A%1d5+&Y@+(rE4!JVR2k%rVV0HLfRki!AhSe#p6**!!m&pj%09cjHd
(8f"N,5pIk2(r-NM2-)pPGTdUlfiYpXm6KTZC`TE8A#8fi9I!Y$6F2TdUqb'mB[Y
f8RIPJUZ0*V9'qZDH%5VMI$![,Y3GZdC$C+5%$Hjk%q"e9b#VN!#%[c'dH"kNJ(5
*C*)6&(H`!$-B'k23E[J(3(YPVGkGG[G(@8ILaT[mNb5FGqrJ9+1'4)"Z`[20GKe
[fU2PNETGlmV0)L)FKeM+5IFhjF'EMM[bXDCB3'$5MA,ar!6MmUfC-$JdQIkq1MR
1J@KQ%YNk4#39KML(p"QNN@A24V+P$XS)-iA*EmaG(PF-2E'T65D*r+6qaj@0`JH
Im[KE%iXV@e&UI-Y-dY$LVSYV,hCkR&!QH%m"@99PX+PB4"ASJB(h*Ac"(kbIN!$
kT5PBdBJa3Y95f$LS3a(5bFM@RGVYeT4SJJGQ,4TCjZBY@K['*qqYhFP"E'R&)4q
@BLZ["2#m1kr-a6%*HDZNJml1(%Lim1Vq4r[i"TA68l'+4Vq'D%TU'F0"F8p6k6l
)KaQ,lYk9b&TI%HC#CENGjp[Y6dR9eSbC@,M&eX8,,mqNi"$5k*C20IR!dQmL,q`
Q!R3CY6Q4(mbpIUl2Dm0'e&Sbp0,qe-MbX1paiRb-JmK#mTrV(R4"B&`2d#aAQ!0
4LUZh)'01Fb'6'C``1UXFlB82j)a4kd)&[CLr!*[8E)b2YI$h4C58TciFQq'[baL
B6*+aErELFhaP+SM#1MmdeSP$lCJ#PFN6MpG3#a$1`I,JEj6kiQmILH3&GARQa1E
XIm&R&F1T`SGDU)'+SFp-1j&TR*MT6LqXXT,hBrJfi@!6@GPIpIAe`8fQJ$(CK)Y
irFL(%bX,"ZX",p0C$jX2fZf+Q+3+BNlGLGF0E2Ya$3[cHU"!kJcF)4Ue('*m!0f
XV4$0$ScZ*f6,X(l5RVGpCHfGAIN)5jIr!9R)cL"d(Q9ir6eQG2qY!'&I@A09*UZ
#c2qF5'iYp(pCTra6G!AG"r`[!"rS#1PJdT'6qb5GdIEma(U`6NeJ&J'L%6qCdE4
MVC8VqZT"c!3+AC'kqYl5ZfCYTSrj@V5+!j[Ca!#S'0hQhM(X2Jf6brX0qe[6)4f
QmkccrTEhX`FKD8H!UU61UPFSGkS[f6U5,%ck-re"0jT6@PKJ%qbX8LEk$rEAi3T
S!a!a(b*ZhUHU,[iRU$EBC9MKqI0L@'8X2-K-iUD)-IrH,A'$RBN(%Me%22'!0Ip
@0(EIT1aj5RV2NDLd[VQVmqZ[QlFQP`3Iir!p*l1B@K9*VmLim31!q8kdI!*K3f)
M24FY(iZDCFUZ-aYX+-XdVFdbpaLE8JfKlrJp@9"a`#C4')[60$V1X@+*!#e8j1"
maUNbq2R3`BHADCb('@6&TU@LjCCQGlG%AIpr')rArL+BSYhN`KFefXd`J3@C+rl
q8KMXIVQBr%@3!$JcAG!*KVX(p@ND2P"$K*!!3j,3p(Q`*+S),iYP$CSBNViK*56
Y#*f0+*Yqldp`"dF,lY8[59SFd@"MiZa@X5PIM%m(6@C6ABIKK[V-ekL2M"cbdr3
pBI4LhD*iRH%ah'6Pi8DaCf565m3,HX%A%$A5[62T,a2rXR$iI&r"Gl9@H-f,-Em
12ICX*#`kB@UDSTBYUfmL8P9fSSI,kQ0d2ZfPefaSBXq,24Fl1!IT%Pe')TiN21`
b2c'qTT4'43rTQ$MqL(@MJCVT'"qmJ%"62mr@&`H'#*j9Q9[j[Q&+hHQ'Ghi3Xq%
4'cCbS[2EjK!iUIZGaGUA`1cS,dL`,qRHdP$2hp#R)"9+AL9fT-Z`XKLT[EYc$)I
%'Y%SH210AEF5NHR4fZaGKb"6epU@*%9Fjf+E5LhQ$cT",fFDcJAhK&5ZZ2UGEHJ
)3b&,r-iBM,`q5eZA-IpmD9A%$&#3!1b!)TrUZq1F(@VS-bIa+E#5!e([k%Zd`3k
UTDhLC(@VI*q$`c1m%bcPbcHS(bPmpl,)V39FDml84qUE3YhPFerre-j59)mDACP
"Q[+rM"VK)'reGh`@b-01H@)V&GX9Hr$T[%+dah@GZEG+C"P$L0d`IU4LdpF)C19
TH10Zm5hKJl+r`+hf145b4pHPY-lQA0f9%1r5l[Hp#,D![TCc)APc[0YMU2Eh(Lb
BMbq$TjS4iFp$Xp(J[iCL'!K[b%55TC6#PB86N!!K)m6r&j%dmkBm2*U#I1T6iI,
)G6QdmIQXh0,pj%5HlM6Dd[VMFE"ZdD'PMUcaHH9Cq%(TGiC"Dq+diRLmUXN8S#1
p84Q*HkGj&"R%G,N1e8@f+KHK+bZTJZ30kUl)%h5paS0D@$r0FkrFPRN9k-YifDc
)1(5GG+0)jp(*hD`qA(20Z`&XIE&UKF3YA+UNm6%YhFZ3!-MN[THbRM'rTjSPilF
U0N,fI[V,a*P#jRbZ(%,+@X`JDKXi-#FfDhdEhT'Y"Yd+i5(NL3'dSFbc8GF6[ce
&KbZr(-aXY2''2R4KI69SpLeqfaqBc5dd!@*hG(dDGc$K)!3U-rjTk+'V6rm+J9h
bFE@(fqN*Ya@c(N)$F#"ZjVXF#2X!['ZD"JmfmC(0"Va'L82FcZ[[Y,iaIdrX&G3
dkr!hEVM-5hi5!#VY'fe&(&bH3H6i41,[-mD-5"a9eqa$GVjIH%U8KGFCJR%c$%#
fm8*!L'ri'Y*@lm'@hP)6ZaYc,bRjhdDrmRB&#dZDmShbF@!V,lZh3C0U9%93)5N
hQi'YlDMdG4+58",PkHAJrN`B1@#1k(*3Vp+j41UMbC&@`M5VGk@1Z4Khi(8"AD`
!c1CLi!HhVZa,4G[J)cE#9I#+l8BP3)feIJm%)CkGd!ic(Td+mDT&0e)+$FCfD+5
2YYKZKBH+("(6"mDT!623Gk%3*86QfF`6ETKGG$DK88l6V$j$&2$N(B#F!Kf9V8h
-Gf`arjiZ9(aiUPN%%JXDlrIKi!5N1Phi(Z`2L#biHQU(FEK+3S,qi"0Nd(hc[''
Tk8jrfpmJCjicEa8-%%[i3L%iE$NXI-AK@C+DXbU4LMYArSPAGfGNi'iAq`Y6+(,
E-i9YY$q`$ALaTDbbIQM-qbfUc)0HjZYLfGFCA,K%pl50Zpf6S$S-SK&20*E,%D1
!QLF'*M(H1A2'Tkfepq+XR-4TrUl,c!E`U9k#Z9[rXlG8C&U(RlqF0@Xia9ZVaDa
m5LcGqL3KXj'H2"J`j*,8LMAJ*`V-5RikfUTTqD""qcj!`*,B!e9-JNPj0b!XN`U
h6GclZRrM%B`li!JR(qF@XiCdDpUFRe9ACCC&(0ZQj[GM1UQVHLJBUGlRc3AN4FH
TVC'GD3[306Dc(rG(I!PEl45l,f9USMNH@[-iTFc`&BQ8C8iL1PD+QSC@4J22$e9
4qlf2R-KJZic@G&JGCa%kH[Rdr%Ka5KaF'!pT%,%qp#"aV#PR!$*T+ATHZ4HV$0Y
ZEU`VVUH$+"QX1jYLp4"ZDQ&d&)!H$AF8'dVDM@jp2aMb&4%jY3AUkNM1AF2jUNX
(@[cEHla&3UD3!*`-8'R&R"fbh+KqM-ShN!$KH"dEK5$kGPN#p#DdU*T`MkSMk6m
p+dLh%SA,P*2HRjp+&kF#C0S+Gi,6,EQLBS!mdEAqJ)`N%XjpQ+@NE9hDkGH8P*6
$-EbUclY!@P(bd0jrJdkrkfR'&i`kG#3!AQfN&&R4B'$@LJcMdL4m%X1q!r&!4BP
p[rI15(361M@lX1qP5IZXQb(b)46*3KIaJN+f'UMR)e0rRaYj,%pAN!"GTp"2&m'
k`)JBM04(c*4iKfFjQj)%BXqNT!*miL+9%A4'KpmDEijH)B3TB(piDYJH6'2#P"&
H0Qf)"m@m3br516'2(fk$-35!+YYZ&2*jk%eDP(rqdTAGjLf1Z54BFfqBb[h5SSS
LTl+Lql!R-j4M#ZKP)(4XDpeS3SbKIk+m)e1F)9@MG4N4B)I!4"4*(1beY+"M9[5
[JP!T4PC-Dme+,Rf)E[e8@SHr5K@"k@qLKQ$T9aEG9kiY'5f2q%4F$$'3!#$m3+3
j#$MabDd!T,iZSVHMM[FlQ'`pk-8i%P01Em"Nm#()rmF%k9UPPJ@B028XC4YPBM8
i'K9i,GArYkErDGQ+TD9%(QpZE@E*QD6EJ'r@1T&TC[Ka4("`bmj%8`CS*Xq$$&0
dUUH@H,YA8IjIL394,J3J5[[p"S5cX0pqkfbk2ZhB8KNT0AfHK2P-TlZRN!!KB[Q
Y8c3(4TL8m*DPIK'm!lN+hF#RCYd"4qMEB3)Jd%!Y2BXFe"52JYd,D*bYl1C4dMb
G'rMMr5Y$*#9Xl30[GM25hB%(B3LBlAjAiDIh"-L$X3Xj+)mNG'HhNJjBXqdY'Q!
Dk6Iah3lcllQ%,e)LDMId!8qNNS6R('ZG165VF1#j&Zi-)NiHqkj(Jd2PTIfCK3d
M4@@f[['IVZEXP#*+THfD39c&jUpQ'"k2U@'M[K&"a9#L3'cl524'XpU8i(0R4EN
i5d&@+$YMf6F4HTKpJ!!BA2YU`5[0VU9kp44k+YUpp*`mQ)2+*rGLmm@STKI8HrG
j*qT,HeP"hCa,()DCec!"9'bF*XMfG`C#lA5I$4'r!LYe'p(Af)c"lL4RPb2Al&d
3X0eUX`PIGd@Q'*+kYHi,)BLC$`,Sh)iTRS'"'#*aMN[Tl86Up906-$iKfN+*,fP
Y2j+lBEG"5p&"!$@haT56bf`VJ)@NEiMNZ%qm25L"Xm!K%9)lHP8$La@(Ii+N@Bq
EmMB,hdS#Z")FDdPS`,BP@R"aN!"FRGeaHMQXdlIj'IcKf2'Rmbf[1P@Tir8pGRC
44d@H(c"pmNfIqkcE)$@M42rB+bfNiUm%N9LNZ!kI[`-H(0emJNZ'aB-ih'i&h-Z
eka6N@`m+fCCI'kX,5TIYDre$FkM&8h4D(,!`4'LrXPi[FBPqNq#E+)2$[iaG[Mh
ajjYa*,[1!G#Z&65R*GfGM+qDe*SA`4JPjc,2JRf)@8dSHP4%P%%D3K%D)r,)$p$
PcY'[F(`#%9XV-h2-Q-(RqL5kSXS&*jh6EK-@kShQTeS#SFJd2B6p9pa["@F$8I5
8ehfqiV[S6NSFpmP3H91"cbXa08JT9JU!-@A`fUirBhd*-+-YYb9L$5TN*+!eMjX
S-X9Nq4d[hCMR`XD"piG2F"6"NE5G5E6*lK'65&j3T`rRcqU8r%X@'kE!8i8bJCX
`@8mB1e6FCdEaTf03*8p#JMfNh*XeqpZ5K2`ak12,1q+0Mf')lPMUqmh+[,LL@6+
28EJP,GJ1AmDjB&2P%66cTVjGl(cFSVk-1e6q$"peCBVCcRJQ6(Kd3l-%8m@)%@`
VhK!kc+dN6iE!1I,jN!#XSiZ@!Fe'djbr+UB&B-583'1hrM(Q@`0L!TR[p"X,"++
22M8,lAl2k`fXdi)b)Ap&PJ*-cf18A'UL#"&pX[f!lSVeMA(#KE+mF5!2Z#6LR'l
Kf($YhHZ*qqaZKdFhc(-YcJ'XrMYf1HFY")H0[DQUVPiDhEN53I0-d9lJRMm!,Cq
1XmccA#4SRZ4f0X$Dqp%jrBf9B[qSk*D6TJ@qF5&$Ul-jm"9DHck#blPXa'X,jB(
414hFk&'ck$MLXZ6Yb[IGFk$VaGeek2e&4R15P'XQJdY5I8KR`'3ffqd29+!T*-f
69'EBlZJPclrKhp"LeGZ,F-kQ)U3H5kG%Rkd35[Bd'%JeK!TN11pGGYYdI"dJ8e%
IRbN*"SjK,&$Km0',e4aYaFD!Dl3kchU3!)m4"e3EPL1q,pML%,cK&aD$CRr+,QB
@TLmLhc4r+ra#,T!!k2EXkQp'+pTM!!ki#$SNT"F#h'%1fa,SD65i(9rpGC[889V
@CMdJ'642B'Rrf&E**!hT4%X3Smp5f3SfAFeC!4"HMPc9D(D@6NacUUGB'[8*I!`
5J,R"%B0`lETlDE"PUmlD1lL3!2F`2Dl5BbU"6qe02%qTVF@@[!R!3`XQZdG1!k(
q$[VVV11+mj`ICRkeS3&MmKp[%ZeKSUh"C5Tm-YBJ!0b93')5PHDpUDpa6ZFNElR
3TX`YYC6+4)F'XmZjCAA1Zpqe@[haU*8R&`G(,-",PJ*,j,MSHXf$kr1K[YDjL&8
C-4FIY*&DTZNGaV#qAR4V)*pUXXX%SRQaa$GIT@kLeJA8a%eV)6rJ1@3Nr`)S`C5
&LjPq[d+JfBVafcMh"BA5C+h&-J$3JHJ%la`FcHbA,iGD6P4fCUDS85rDr!L"$Y`
3XA`EA4ljS(@jGK@IUq*PlLfiaGCie0f-DV'X5cZX3B)Z%f5%UR[Ir6B356Am!IU
$jEpJeT1alrJa8"hD-bXcYBFfZT[kNR()p@[jijr+4(dkH!-ILM!1l"k9GXMD#TV
bcaU83hB(3!8NTKK+a@C$rG`1A$d!B"IfdjJB'dT@'[3DmD'bpGd81'Bi"E"Y*3Z
L5fafXA%G6D*mPB*'lEH9CSIR&p%D1"F,TBC!LbpS(Pp[p)$"@LYH'PG`E[rrCM-
JY8TLcIIJ5Ybj(d`C4j4Y!eR9ZA&-SGTG+b#m*9*MH[h9plCeYljQd592X'Gph,-
PY"D!%[k@bUYY@Cle'Cj@(T5cV3#$Ikqc1a3&Akl*,&1$Zh,3S3%abJTYr3T[&i2
P!YDQ$meiFIFSeLp+VZ6Vh4fJ(*[hP*4dC`PIZ`'j-$',)USMHHLlN6aEMbI&qG!
+Gb(4edH3!(k2VaT0FbT9h2"eTBDr4841#c9ibp#k"JFFpk963kQMkUfrBJ#r(#M
F48Hb9+)X&16&m0f"DDMD2Pb+k,NEU43AD[&-c'rrKE[)aJ@R4(2HJ%,IT$%$[V*
ACdLJHM%(JIT@Z#!D46CmRR#V0%b['NbZT6U`djjKA'c41-cah$fQ*XL')YaJT13
"I49I3$@5"3*PM)kXJ',Cj$JUM)KdGr'+h&H9#)MkGAb2M01Y(k4T,i`J-#4FdVl
!VGjq96qeN!!AUJUcGlE8kJ3#[#K(YBF4a,bLFUYjU,62Zjrrp&1e,QSQT3X$[X$
-#SXd8icXG%[V12a4BrA4j`'+Q`BG2Cd*T8bLrLk,*KY&b'fElJ%4Q8e[mH0G@6T
r%m%%RGjjL-ki,iH9I8URPLHB30KXKhATP-Cb@MVPmFlHhUc5&-Jab4AMRkTJIJ'
0PQ!NXhE-3ibG"FLf9&L$XGb"IJhK6%$6M59GKeNmh+32+%E[KUA[hjM@h8UHh0j
B)MH0-1cr$39R[`FmdCEiJdGiYcZqE2FikL8+18X"h4@Iq)dS'hHja,1CDdXKCC0
60%4@fPr)Aa4ANcJ`SH$qf9djMY568k)'HCFEZ5Gf#N1Si5-6IrCRbr@r8$8+LRD
F$fU,#De+iZheJ9H@,UVa%2r@1f@X!(SdY%*lBeQbAQpBZ-5U[AbP96(QDH&,(k&
-AJ%ebk6D[cE&N!#(He2-CL`iALTBe+"E&@XMD8I)3'-3k*Z)B[DF+%N9kFj!AG'
8pKRfPqHYpDUi$&NaHLi-U2jCUM-3SaVBj$i-NlXTN!"+Ze)X0lA4#6(Fj*r&1ZD
rl9JUdmX3Xa5bXIdT$2E"46%k)l,!Gd)6dD0Ml6Qd,bqLJZJaQ93Mc@G!l@jJ0ma
r&3G2&Bl)Kc`mcB3RY@SPC!9L5CJSi8D28%BBpk+5&`Mk5K*+U0"&#!hI#+JfPAR
F1[`"N4J'Ya0&L[CIj0e,UB9e*+FMK-'0Dm'"-i&JRiCmrAc+1aUq!AE+P$*qUrC
26k)Z@SEbKJ,#$D@lR'd'a8Rp,0*"MJFNPR#RDUl,24al[6(U(#-(#Af*Z#EKYrr
d4%S3a+raJAa#8jePF)INp%6Zf&c+Y!q"@-&%aK"V&B&(b9DS8k,aN!!9@m`+)(0
TPrS5p+mZ%6(pGh3U+)%B"+K#qi,d,qECmjh2)6pq+i$)5caq!alKmC4,RYq`(dj
3*N!*"U4"3#iqm)"c3,KdGeKqYUDaBNHdVSALDi)iF#FqSe(6r([994lQDi[0RhA
HlcSMf`Z&r4EGGQCjZpDAP@J4A9T[@Ii0JH%QHK-Z$fT8,PRVl@%I&6R#"GRa'6`
Q%@'lhT6+BB')QNeG%RZhhT&@,Lb&RdQil9%"ARALkBD-j-j4l'IkSTDTID(cp#1
9pMPjPC)Ek@jZ54L$lqak2YN2emEH93Eb35+[CTZ6RLE*!rYT6BcQiDS,SR+brd4
P%q1NdLEE4+aMC(9!-M2ZYfYH)l,Ye5S3Ek@ipLm5HRMAp#lQI8&Qa9Qc`'&,*lS
qGVZb`!C+9T!!R+P,ZDYmKK#F4TjfK(@X2Tj'Hkr9SNZ[hH1kiLYaE8q3!!RFB+9
iHYkVqDTL%mX'AeG+8B"*HFEdSU1)-8Y[$iT2N8GR-fJi$VZ,rX3b)aqmh,,Hq1U
BK2j(1b3,Bf'&(VBCU2U5p+8!m5e#iKXfY%-[qDaA!Fp1C@,B'XQ[-!`LbKG3D9Y
A'V"lK`Sl3e%!PG4$AXCD5K)X#E-C)Mcp4E8'T$m2V*@j15m4f$KZfQNEfX+rAh)
q8NpU0(L)%BqPmk3)[lh@'lSm`1[-e#6ILPP)'0RP4kmBRT@N#K("H!Fj!Pa1eBf
lZJKCSK&(!UUZS5(&E*NLbcJ'TBr[A)N0J3SZ*38qm#h9`l5P!UHIF@Bm2H!Q,VD
(T'PS!#h+J5)Qe0HIGBZh53`('-bQ#Lb"+lI%2LU55%jXca,rY'"!'1Q#P&jd[04
P"@'!Z!ab0&h*5Q[d*9,qibpQ)$`(pqBHGA#9cX4i+*(2@UH1E)K"DNa!#HkfZZ5
hVF8paDAhSZj-qjXcp'aG5*NEpG%UZr@6F1hf!LkN%c-FX2YHGKMZ,-m&GJjiV8R
hp5TSTdR0S`*m(aQR0iL)fKrakNSSR40D0LhA(Xc6G#Pc1%q2,@ZEI8"66JfX-8j
fYKINGSq$cSG11@AhR[)8Zc#,HVA#rf93&E39DEk[8[reZY[LCJTM#)fkE5fU[Md
Y26U)qrKY'ZUr,+5idTQciS)i-2mh92aJTVp"YhUVJRDh+mA@QT*KJ!j6'qVYVrJ
PE6NH2R&+RD9-&Nl-qJUd4bk')kb(DK-VUh4#)r,"k8Bk@BEqpL"C'`r[S+R,YpB
bdVB2IJd6jc9Eed6AIcdD!@lq*Cf#aX(,&K6k*(p4dG)'jb-#,jrARmdSqff$m0[
,#CQZU``6ld4*F3JBNFVN$*@Y4'e'B%CKHf8D&ei!k,5I-bf3!!ECp103%MkSkp#
,Y',3E*Yc#b%m,m5a22VrCZ3C,aBkE$ek$UXh'Sq`@BZL$'HbBfBK38CfEk*[(-*
1FeA+XHKKDC!!jX9(Mhd66B%4p%3m+4*-e!SimQS6rA$FhP#b1#N-Y9Ph[FTCc![
j6ik@G0[#fl8mkrMScK(clAYNj39L9pcJZU%iP$3K(Ujkm1rAlFh!DD5a!kT!Z2k
hh[+j[dXpkZ%c0IIURi)Apr*D4Ia6a2pcC%KpNM$6TX-MV1#mGYN3$e[QH+j@cUU
,"MD"*TpXl`1accPSp$hj4N&BV(mmrVIPS)9$46VKJRKrGekk)3Xc!X(8"HmU`#3
iFLYI(4Fm81aIS[293DcimrYMFa4lmFX8*5Z0V(20qbIaZ%'kAhEY0h2jb2Nj+RI
f*5U+qqCq*rG(h'l33XZG,pE[q"`Cj#H5JJqmc0ENrQ4$3G%cCi)m8AG*XK!aF@e
2QBHTlkJYR(mrh2QUVN-!1TJ[+d1Q"*36+Q!YDM#AUd3+`TB),kZBSBILF8aP8%q
2DR[%VP$KJ@mbi#r'AfJ23R`JN!$KrE4hj5b'KN1--X"VG+f+CDd"k`8D`j!!Erk
HPBi8I,(LcTc2c'Pj!+,9cK1!+5CB%6R`0f!&i9!'hlIDUr1GJ"[kLkcf(elGY9i
McRVmB6Hr`6QD[m!NE*pSh(C2IBEr9phlV5ed[&0,GIAac64GUpK"GUKjCKbU"eN
-fmrFIfjeaAB["GRU9ir3bCkp4!Ua+1SKrhSI"HK0C5pmbTiiSlQ@ALZ6@1QL@[L
FXNRiLd*,acK&QL-a1@Jq0FXTU#Nr"8dHb`'Kbq"MKj',9R9+`[#1!1j$GkmN1l6
f&(!6IXdrhT@Q%#kQCA(T,VfBZHBb6AGF6G*G+kJ'KpUSmQV*8aN,UKP@[1[bM6*
&YMT6*N5P,,P6H6r"*AQU[RM5'l4Vb`pU!JhS(3RD-@d6b(DXa3U6"ZKZm)%"'%S
4-08[CDG$Ze"4M+Girr8elik0H`@AIDTUNj!!"*+)M2d%X,`SEfAh-[83G@J&i%0
KDYUmLY*ReT&32I6`LlAX5NRrm[hi#-YLI6pe+DdQI(c5UAQ3!)HPdp+iVf0RXFQ
Cp+dSQA2T-XGei3fDqj),*4,-IdD5fe'UHhhQlcK*Q`8(NAEZ%Hj@`iS000hF)8L
&%CX0imS-pM6-f`B+iI#UH"jGY-(c4C,3mR-#5`X"KRV@1m)d-M2*$I3eMUQR9rZ
HG&YDh)XAkS2Tj%khqAHfm&@rj"+SjEE&3(rL@1l(%+*(cS#XTR9d"mK'@-1+fU%
S,0bThb#C`q0VS'+II35#FhF`U+ma-PL[iUh#2I&Q-N5iNL&**L4fMaIZ4"%*%bU
U)XF$-9'Dj2+l%(#KVVfC`*%qdKU"J-A&UZqjQ+CGddD5-"&*E)[Qf-d4qN'HK#0
eD$8,@A)'JT3KkZKKm,XBR2LVbJ&3Jb`8GRS,Y9aq@2V)JY5b@,JQ)em,SHBCmNT
Nb3`cFa*M#!D"C42'8piN,kfRpG5G!D)1e0$+U*Ub8&jfrm5F2#%!&)VE@dC5B5R
iVT["AcUYBZ3JapDb"pMp3AGb$@M8*'iVNkCT9l2b5JG)[-##!lQNIUZE%HY1`-q
McMrIJl'UX2e,qPRcqf&'`%Bq4d3!l4'U,"24hfR*a5b`-aI2Y,FEG"4f2Vla%+@
icRE8iZ*cZ%9&e2fDXe-e["*Z[bU*qJ(hC`Eeq0[9XAIB[88p3MM4@EHcm08$"b6
)"(Rc*0$k&KVNAeIA%ri*cl*l36DVEi9%,1$kcj%RZ$`X5QLV(LLfbGMEZ`$YGK@
EShfVXHQ8K6"($fE,KmM9IaiU#!L$1+h0HI2qhI69e8Iq#XK)L-$TGD+lhbK9,F9
QkpZRLeVlDmBp2,22D'JRccDRRV4`b3k'PM-V#-LA[X!STNq2#V0r-NUX*c2ATfb
CYp!Xfq+(%)q@8Z0L1)Hj2$-m$`%VdTLFKR#0(Mb'c)U@G"b(9MR4)a(mGhSaG1[
j3'PpZ2VPKNPf9AZ*CN-&kFJ)#eVFP)MHPIiLUN&&Ib%H*[H!@DfCKE%LTc&9THC
EI(j3ha"C[b!jbmq)d5P8&0TUfJdp[1YYPpm'Tk*V"2BV(KjCTbb,#fpk-McGU$h
AAlk6XFcKj"HcRh3q-bJBiH&i++LYp6CZ&A)jMLX%VLlbfb`%3k$VAVGBHKm+3BQ
lBbZ&$"q'M-aiHm,``[31(YdZk,#kX(ac089#+hc!rqm6rK`4'H5T3eem"kcaB0e
89$l[0iIN+0pZj+*69RiBU&2UBGeY(UpC8rMUqBk+(m5ZGQB8i")YE-k,1l%llD4
Tchbf!JGV+YI2`(qXZH"*`QRQBl+94M5Hc6#!L23H`I-X'Pa['%qKlC!!'h,l4fp
[KcJj*9&iRl4ZMLQ@qm'l@0Tp3#3NX6)8PZ&Fm8kd9dNSD%Vb8%d5#*+HVC9%f*M
#M-jC*USdc9IiK%fYj6kPSL5b9Q'IU#rEk+YmB*a$Q+,Z9qqjCXQ!3NDZAp++85`
43HaTDaaY`@aD9HQpbbrdc3%YeZ3ZIf9X#q#$(8RFV4qRprLQXVRbc-mKDIm!PEC
Nf%`3G[DDf3#Yp4rGaH*FjbSAc(HA#@VabpmdbA@FNf2[ImM`c84eQhJ8FBCbK5C
+Y+5el)YL8j!!1NY"ZpcP@8pm)1&B+fZbC'K"SFQ95Q#@3*Lj9'KSbFeU8cRdS1(
@JCcfld1+"HKljJLB[j1e3aX&)*J`PMQP(&h119V5)"KJSk!dq*p6+FTkDch[+Ul
JrUdZGQBbCq"8kiY562f`Se&p0ki,f,qIj#Pe%hA3@-!d3UEihPThhN*#1-5!a6!
"@&*+)"$(c*iiaBDiAjZGNNhm'ErZ-!a!#l!T-m(r[2HXK3BE84M,8j@P*'RKrG8
[MjVIq[[!qNFZfr49HM-&G90bhXU5QYjje9@+4TSdhlL(0NUDFQ&`-S`BlDpKlVD
4mQj&kb-ppiN!r*qIYcfcUFb9d)MhmiN*Y-6M*10IlGIXk!9kVh65%eiPkAepY(f
-kIi1`(ArGe,N`2l0l(VE4*JC#3p$bM,5)X$[k+XIH+i,bT%#fcVFP8CVMl[UZ6@
KllQc%JHd6[PPY,QR6iJ3`AGFpq0Fb@&I15B3eJ$VU(iSb-(8r[HahB2TJ+TD[Ge
"%I&Lk&8)1M5m,rj#rSMNbRXi2c8Qi!aVD(HVe+*KN[Qbf4BX-0LEH%r9URU,HQ[
66h"mRjqlISa$f@A&,kZbIPIM)+(Fd(0!jYl2!@r0(L+b3kYZ![h+fDaRMcK'bkZ
IJDL[0CUjblE2JFh!3Bq`LXmQKXT3CQ`DKeM1f[miASbNk6*UQ(P!b!FLmDITb2B
YJhqYURBDHDcA(#TJ#V*pqFL["h@N%j`L%QU3!2r-CrQC`KX"5XBTCK3pBDXEaU'
4p(RUBS)PDTNi&08B1TP!I"kNHd$fP(hB'cTm'fJ,5L1LqZ-NJ2X'R,j!jDkN8RX
MPp@ZSi6eSR*iI3R80&3q@M+k9K3G5MS'rJ5Bf(aj`dB6Z!-Fb'Y*!c3q,FL9GDk
NEqA0S-(f(fX"QMFYC$eTF-p"X9a,V&)2TEQ4CZ2)'qX,-)LafR5pirpJ2Jq)[8k
#6,'2*#JdRDciGX-[pm##P8aK&L)-'me5)T9V(60Pj2FEpaEA9h6*HTZiMJr0[dD
9AV0$crR2M4XbhcYiB-eJkA0A1&jaNh0A0EaS66jS@1bG,fPKpfPiI"c$Y#Sh)M-
H*r0J)Yl-rRRf[eMGM"GNTrc*GRDa-096-'M-N!!,3H)M15DS-BNBilM[Tb$Hch`
4R1iGlQ[T`3+dS2l0r)&T3dkhJN&8J5BH`$VIBiJR`L2De9M6Y@[ZE2J,'k$DU$`
M)im0jc&VR9)IKFH'1G6(&VqYrCR49(m*K&M@#3aEJZJlFMTZrF#(lBV#J$Fp`X2
BT1+KC%GNPEApPi"9fC3LfL%48K%TYJqVBcZl'U+82BCTaDA5)hY!cV55c#+-`Uf
5HM+CDc(91DG"%a-%6j,rR9'%eGL*XqN5XNr3(9JcQiVc[hR*ZqR#G-LIKr+e,#m
IjI4V9c%)6H9-f[+F61fX0Emk('cKTdhP!$0@S*)+6I4GF&S)%erU'RckV4rG(ap
H#H#a*Z&Q!eejU&48%E`pm%d"j0#C+PPFm&4(Zh8*HJGC8kEidpN8YTPfHIh992"
HM2,ZC-)GAT8Gij5"%&MCc"i4HaBMmUdY&QX1e-J2'i&Mfm5V[TX",%fcklib325
VEaVXTpAF8-XY%Dh'J!TqCVaq9UrCCT6&iXKMDF+YUdZVThFiiSe!Y5P`JfmY3+%
S8R@(556[K2)ka9j'ZCcDkfEU9Q$aa&p31+Uk)1KP+RdDJ#A'h6'$F!2rL8)6`*`
[C0R'0JEGE8lNkM@3!(`4GjB4dK&,,'24L1K8h5,4Pb,fIKT22m,#qj!!T@3Ri9q
Ai4cA(!#G&%+fNjhF(Ckkl21Cdm&VfBMl@0Q),&LrL-,R&%,mqGSeHp0l`kS30-%
D`RP1GKXH!K3L#3eP@2d$k)p6`X,Tk(cf)[qQlYrD`RY!Z)fbQ%lkKIHCQ"YLcf+
0j5[e1LUDhm)2Ym$0XT6&NkdVH2S$T2ZT5ja6'%l*1T!!hAb(`DL@`(*8l+V5Nd,
bBP)K&UEaYQ[8XH#(Ml,d0LEV9`A*Nj&eH5)38liA#pGFIB9MR3#GZcTLG*q,E2k
U@GCf*8)`T$R1N!!%GUYE6pd$@h)fhX016('IE$PGS[mFmNU#r&,dFp(%5DU*8&#
EHj3%["rlJEJX1lQ-!j!!GLpp$ZN(beXkZTYem62&U,G#eYU!fSm,4FKT%02EYX'
YqP$q-B-(-!aXV0V5&P-kYe'Y0bDc*4bU,baUh2C",*(UVXDl"jLSBCZUDaX"4@G
THBCh+e*IUp*,%M$b&m2&VTcice4"jB(*%(mUMPEK4dUQ(jbBDlHVGBV,l-c&1e*
a5hiqijLS#r0)2@a$2PD&a9PqV!5ICQX)@K&935icbTKqIRbN-bbVjh'R"H(UjQ*
r6mTETR2KbYU@ReSCRF$bebH+-HX[DpEI3"@N6qMMF$JN+$6T,idkB0D""Sml[H*
h#kCj@*HT6P5Sl'MGBG@a@%IZ8'3kkC5@(@9VqNa23#2Q0*d%J'E2LrX$Qjd9'"l
YqdFk`5!H`'Y"@24d8&!pCFfQ@%*TrFhXlG%dMc*eG*pRaT!!m[NA!Vhj))-B11X
arCSJEF%l5eq%QQ!kmMl#D(69+-2!(KG2rU%K(iLET*X$RQ0DVj%Lbh0pXJjpl-8
K5&@mEY-MIELLfa9Zd9#FkKHrVFdh`T+YrKSNCjdXi%6Lf`PS!b29q3JKVjBaI43
6iE6MC"!rHk$l(Tl)e@NQ+22IhCra(A+-#&lMmhFphS[T&cB*E5K+Y(+p'L"LkT!
!l#JiL6M8a6l,L0FMi'#8iU@iY96Id[&e#FZEp4M&SY!-N6m3&FjFBl&j0-#+FS4
!AN-0QL5GmTYV5GXGY+em'%Z+9NfaJl6EZI'8Y8p65MiJBMT&j&)6L&r)dT!!U1J
8*#Gh*MK8#6#rrUcI&jrTiB)PR"!BlHN3X!@!XXPjN5Br&Th0`@cI@Ab)5+f+EYG
01RpmT`Xj0D!PG+,N,Vq9#Ud2BL5YV2%h`+R[l-3XmACT4kYIr@q5,!J1Rr$iKjk
@c%I&)h#eS#4d9fKU2imM,%EXQYLfi-d[rlJ$kJ&p4G("Ne@XmQ*0(LLL(J2!1[P
9MTkZ$r,i!XCK-HVk"#8$!aXBV*fJJEX[+F[6mlFRYe53!1VP+bD"Scr%MK6K3PV
L)44KR@K-EZ3Ef@bNpd4#4BCC(A(21j1[lL4P!506MY2NTT6--i%%N6B6Y`N-9I9
V[14X1A%KI)`ePYFrI"Hj#0G0m44'(ETIV0'986hJpU4Jq4FJAA@C)b,XjBR-2L3
RA&bfTT'FZ8PZ+3Ie)C!!KGTMfT9Z0@r2GB5+'bq"94T"Re!2mESrfVcFmkR![YB
j+"Gih(MVQ6c0(l#mR8YD,jCB"+Y,U4&QI*FADpZd9e3D%k9a456VDC)A6b++aKl
aZb0&$p"jh,hkRGAceh2Td-S6UCq*JbH&N8H&cFBF1TZG3#2miJCCLc&$j*!!pJ@
LGE%iU*!!VJc2'prFdaZaFfR+"21Ap438HJ3fA#YDq!dR*CeJ&DJL)GF#91H&VJS
YGQ8a9M3N4N(lj(f0k2[E`#Mpq"X!i4J"Ll(qPUE%1A%Qlh*"L3de-A!FGV0QUmf
NUFKm8DLSeLf5*&i@UAJDI0)5cBpkLc*QiE9KEi+RTNb'2N02c#8fq%1#[iBHP0F
e$Z'Yd5BB#K8'+0S8e%XHb@XPc8(QPGa1RU$J(S2J4hD0fVj+3E`(jCe$-8Z)HYA
Z5KJcICJ`m,VR&#)mB49mAkHGHhrd1ABZaVCT3@mIPG*VjCB`qB(qi[26E`205DK
JH)JEaq!paLcieH%f(&k-1cX"feB,Gk-*5,TL!$$[BiLa#dC-5,FMdPKMA#PHeFL
KKkBrD-+iTc)p8,'5$a0M6#,l+HS6ER*fP*1Y%f8FTLZfDREacNV)m"Ril9!AIdf
IbjcE*9B)IZ4)21)fal5[AKAq&[G8HDab6HLifU`N!PThJM2SXMP5X[@cK9RF&`j
"Ee9DZAP"ZmSR5`+QE4M++,3H6NJ01Y6d8pLQS[ZXH!RU[TrJp&,J0`!TGT@(jpG
YM0&Lq*02QZNFjk`X8iYE62FXYU,*mEqHZ,(jR,kLfKXDEMa*3H!Y8fSRTdYY5rd
jAcNbm-FLlAAqpBX9![jIY*%jj!aq[J"SXLcqh8KNZTFLR@02VMi***8NM(5E)[4
&D)HMJ8'@8r2*UVQeGCXAKkKG$j)LdJ2)#9R!0B1U["fIU0QR3RR6)Y)fQlAZ,!&
,YYXCr%hI@ep#rJFPUp"FN6+YQ*@jehM2,$bq-"S[GVNFYSCApKXa"T0dKi$0#0@
B!m[E8Sj5Rlif&p*T%V`,!'+P13ZFp2aIXcbXkST2VM#c@hU4c"FZ(0X'cZF3K"R
SFHd(m$`i6@$)"+DI01+*9PS81URjiN!`$'44'a062lrYdD991VifE$&'-I#hcKk
9+TLl%@HYQ"V3!ST6KEeqCJQTDeHi([4eJ9-Y(JI#$IlUp4FBZiBPlpP1h&iiEjG
fR$dp1ij*-`IEZ[qT$-lQXA8(&a[j*ID!"+jjd&Rfa"49I62Q3$%3Ed"L$'RYH0A
'K)%MH$q0MG3C%MBQiM1EEf8'Y)m41e)KD0V$2MDQMmRZ[&F`2#IlY65e"`FG`kM
j&a&&NQU!TlGra!&ahJ)3EMDbNV,l$b*E%l6V8jd+@,qdGD-IZ!U-@c500(l3%N[
'PDMF!L'8b*!!S%2jirZ'fZISFfpFB!(-+pD1%)i8IC+T)I*)E"+bS,'5M("cmkr
HUKjD,aLEHbJd832chQMY(IP3AK`+Rpd"a`f3!-$"-`B(b+aV0QjMT+0q[$AUZIB
9R+ZcS"88SDeKh(dP!aG68(b@hGKh"Ipe,@F@ICNEiN5$E#Jr&-kaR9,3F)BBEq!
[9[Z6Ra9CVqr9bldH!m2EcacS(ef1B2Y(AU(2)F-8iM9"4V[Ir&-&iE+L%Rq@+Qc
jVPP`5fGZH3G9[Q+LZKF6%8dlfX&&-5#mDF%%DT3@*9Tdp`02UXjN,f-&Al6Aq5K
idM#dI+4J#kHh5bPD'$I'k0eBk5J1"d@h2!E4QNE0L#I9KaG'1&hL+lh$hHfShBU
+kIU,pRYhb6pCGd,(S818`m&622m4Ff#K4)qe$2kJ)Y"PG`Vjj8HFN5K#EieDK@F
1C*N%68'Kj4[66q%E3LJL-D9*5%Qd2X0h,Q(5G-LBL!+--@'NfY#h4Lf(RHJb1B0
T(bR5HRH5N!"N(PK"G(ij*RDHbDfK@AZK1d6pGD%&3VEGaBaHr@CUV9p6%hLX$F3
cE'JT+`iJCITVQl'E@e[[,5kb"jN%C$SB0L3fIZ6)0N2G6MNfS3621@VMpa,ecQc
2"eFPH,'Nj,F(-1"-JKX[e8Q$G%EXlXS+hB[qJ[T@H)RUf(b0![l&H2YJeML(TC+
DDH6Ab8V021&aG*+r44#Lc4')dD'LAjJKm"f$,&D'BGXU'RD`L685ZcTar@RRNpb
(0b@H3U)`%PPc4&3PU[3QGR!0U6-M-(!JZ)iICJ4CjTH[b*9TQ5#iaK"r,)"DY,r
",DXS9&j6(#Ci"C+(!3#HK"-E2G[rD!!YU*13!(Vhc*&YmUkc5!SFbJ5ilmRD+p%
p,`JHUq6X"%G4c-9e6I5iIBjY($2+)qXhfXX)ZPT)%*f)!3VjGdF354fCD8$aX23
3,Xi&hhmkApkX%a%+M2p1[c-)rm9LY`Np9qHV3bPULN-4cakNQEXL1CJamfTZ1Ml
P$L!CV62kQAV+Gm(9MR(bV!h9S$lP$-d'JcVmHQKJC+M1l&r+1qXV`m[`R`(B,F$
L@H+FcaI%0b"0f!p51M8rP*!!RU$jGap@JbXT!2ip2icGH*9EfRI!eJA*e[c5MTm
*LdS'cf&IhGhHLq5-EkD9$%,j!9V-DJjIeCPa&Q@fS1GUa+$Y48N60f*!11FQU&B
XVULLRCP[imSY-b","FdTK'eFiS%PK4(h5ip),Ai(+1$Yq!e#bm!MEIba#p2J%N!
a`IkeH8(5bU``iUl)Jp#DC5M)BfEHV3UN,BA,Aa5JRjeLPU-*S'SDjpUQp2J6(&A
FjicM'9P(qQk3!&599`5`j%aB"J--lRU"8a6Ze)8mAip+[1dkKdY*i55hf(6'3X3
CU#B@!V[pL`+f-fQm)U(j*FBXRhQc1"Ml5mL'ckr0*m0cMFSDGNZ[+Z3a*dQXQ`I
))HT1"4jH023E!"fG'1&@m+r'R4#jDmE&chab,0bhI&8H3&8)jlRNEKYm-)*[+c3
(1dr19$[89Y+0X+rY[2*5SSS!BUpPU3Hm&0#a##@h*VR[Z1V)b5kdAp(,$ElSl`-
!kpQ5`IhqJ)&UXMGT)[6eKUX4ZrmJUrJVUVHIGQk@AX"NH9E'!J230J+q0#+YBrL
r,3dTk"5Pf#I*5`,K&m)a$I[,-HNrph`&Y91*RL4cHYfSTRS&Neh2eFL'62URSc8
&CMqZqP$kKE+f-HSb[P6V9TlcRDJHAY,hLdhjj(bVH+b+dNV,*P%8E&4F1jcCZ3f
"G+Z0j[q9BKJrPQ"4VmBCl-e8M6e&H*1NXJ#BT3KF!pRi0HmXqL#[EYYP(!$j(d&
JP-XA$aDidqdp4#Ga1P`)*6i8hcK69d,pDQ,Ppc[I"6dHSdVAf[mC&8b('4Pp,NY
&61UBMRL&cC4fb%NPG,aiFd3aq5R$DrMAc$YFJ9R45ZrM[EIqM)cDB0Mr8Ld[C9d
PKEP9Q+UC%j!!H%2kLEaq1hQTR&r!DZZDlk8'&&*EM,PUGj335f9DIJhbV!*RcTp
#i+QSqI*)keGN68M+ed995&(IFbG84MQN+Rp"0E'AGAVVkUkiIcIS1863346q*FX
*MSF&qjb-R1HElf-'8rFR+qh-65M8ePJYDXrL'c8U8,Vm$06)KRTpH2*HhQ)[kh9
U9!"rq#"AU%SXL#,XHU5+EU!!1)d1&GI-a$-c-RRV&Q,KMYrAf3q40+Y3X0lk%5S
UY,'G2b&PDNV46@&DEkXBJK@)dbHSb'X,l#1##liXDiL"F!8H3QhUKjMhr![NDI`
SR0d4E`REaB-!e`j!+T,b!N,*p-@LGXrjdm(AJpi'T&-$0$@hK0f6`)[q5ScdNrT
%@J6Y!AML8,-`[MN"L31QLV@43IeA!0k[QTNQ,+iJLM`HaZ!2$r[CbVb+Bei*fVf
@N!$SaFJ%EYBa(#'JYP-#0##hd!lIK@qUB69'2cAPde1U"GXdh44YS@iYPpr*cEN
`(!UC!EF')@8!Y2A()Y(q3idJG6i+T%I4`4%Aq!-V,fNVbYB@B'1'CLUmG#(N"aa
AcTYeCL[A*#lSVMB#(Z*MSMlQ3EXm9J*@A[N%ATHYa,%P2YaJ`2Ebb*`mP)Z-$Fr
U"Zrak$F2rEKM#j!!k2"fqD&A*eq3!*&bRL)I3I&i-ThRI,MS(+24(lff4'92IfX
f-2DEXj!!DDXm"d&IRb1`QPSklDAb8*!!CNPr6K[ldR1Y,He'$5XB+(YAlGN9f94
2(8em@)B2BbS)2GZ-!HVE#!1'%FQQb`@e9eD@5jd5&IE"eHSFl412GPdj-,&V#Q8
Hcb%#dmhaiq1G!!CU*Ad86YG%,+PCTfRV[S#L'e!9%aNqZ(&++pQ--'&KeTrPi(Y
Jr$4j'ZrF4#5-M(*%j$0TKdAY#0&5jreDcX"qEHU#A#`[YS%fLPZL*+Z6*PN",Nl
GAfXcCY8`(cL2ZChb0VDKh"''cMYddH(bVZdSj)EhMENm+F5V)T`C9LeA9Eb8bc`
ee[,J0qVJCNY5*Ki`p82cE&`9DSP"ZGpKdDXq9XK3AUC2jNhP-+L`%qD9"qYAFAJ
&VFBC(cRZb-f$mBVG5T*QV%``DqQ5k-KJGj-(T!0Pf[TQD#D5S3'1Pp*RPST0AR0
6V%r%,l1%Dlj2V@TaiPZEYkRIi*!!kerUJCLP1hE5S(@'E*-3aaMmSDrk1pG00&T
`q(F3S`PbCPCd5MDjp2a!$0N`N!"dm$X,TMhDZN"0UIRTVIN'3912`IqC,M3H+i8
k4@#EGS1[p,Plj6+1FAIRH`jQ2A'LDpcr!Gf[jFic($VVIZN3%$`*P,p@1)NRG0-
1G6q5ZXq!cXh9ReVpG[Ra06j'[6B10jT+N!!2ff['Me#@&9EEH(@J+iiS!)K![%U
'*%I-fNrMk9G%&&Yq!fHZ"d&3!Ujea-jI,hT*BpTi#**dKc0#!%5'P(3LaN0hVK6
14C!!S6lCR$qjYp5TZk6TULaL'p&ij3IciE"q'&,[%eMb!H#9*D@3!$rH$#,2MrA
DLDh)k+YJG414!DE54@a2J@Pi#pRGhF96$G*AG6NcZk@hl)-++pVqa9Bc%NQ,PJH
"lBF%mk6#e0*[Kdq4jT!!8lKmNaEUeGVE@(G2b*PrHL$FdNJLHQ6hL#l5TYbNE"'
B[N#ZRfakQ)63-M%IQ!8ADZmjJp*cULmJUTUFk9XqfhTZqT1`R4+@!Bai8&BZ3#k
HeM4TFdI&!-'P`DKKpqlUX(Y(aY,J&Mh4rh'8MG&SZ(*p*PmJ+$a0JAb#XY'10AH
"5aU90Gem4,[k!%E6P(1@$K",+Z[fi26"RC&q1@K2phGF2Q19IXK5STFXhrG)q'$
3'h$R)$EjbG@'3U9JYCN#G%h#F23V!8qRc#N035'F5(eTib)PESBKB85PFj!!AlN
XI3hk(4I!8`&U[ZGiNd`lf9i+)5G-aIkHHhb`J5Ld&1l$FE[L-E-T)Ul21cP5A'b
j#Xk+-ekm*GXJElFNI$Vc6(8(SfqNKjmR!'HTBLaQVq,p*F!m$)FLqA80l%e4CGq
pXUYier)rc5iVbUIH#m50Md)N""SMBUdE8UfE%cP2c-58KH'pU-b2k2"pmHKNILC
Nb)ic1)EqFH8R$Yd+Q"m&U-YQfp1U2-+6T[kVc,(,8ULLq)hb-a80r94P'ZHTZI%
11VNLJ!P1[CXf9@U(!$eEY`,%Q,F0l59!2cqPR#9*R[KeLb(E)%BPMGb(3cDMFND
i0!NH["V)$65Fb0pASpS))mN'AHKS(dp4a6NY14PY-Yb!iaqbkLXlXT+Ua59G(N@
F4(*hdYUl@5(c@$MHPN!#"NPNhQ+[a"8)62rb,8l!BY*PIfaENrdU"kL&ZjEcST,
@p2,@mAF)Y,AGee(URfp)U6Yb[$ciiIei6-maqZ,FQN-QGeAJjcR+@[mY5'jHa'3
0BKSadVXQ2GTkqQYEHP#*CL8@Z(4JrJhT3hQic'2H$58+RTAlLC@RHLVL)'K%2+S
$5Cd`lGG"q+MD%bGGZ4K*pUCa`XR,*Z!,`Rl4+Ee0kp4'`K"GE#$KUa2qqj@8l[)
TDJYiFhG$l@02C*Iiq0a4RHhY2,PC-el5kYK+S5khdr`0+928HPMbi`qTd9[0J9[
m!k!CpNmdUPP!QMii,lUZ+Q`eSp@N!Cmb0$"$qMShVJ"q9(XR#JQkZVcM0JXiB$4
raI4@`K2Nf'"jFR%6SlBR06Jq*FDATrX(93[d(0KA'$RVJ%JZB@dqPrEipPZ-Mkr
cT,GaIi)M$lCYDD0G(5Gm[H-9(D20YkkMY&[$3*Q!`"RHH`qlJ-24[#cp4F1BpVh
mJ*LMQ5RD+B0f&-IEjFMY+G5XS0QR#iZJ&Cm"Dqk"l$L9%r@lfc3r`8N1Q41a2hJ
bc)YG3[$(iqYBIk&pkmi,r,fFq)2#CR[lGP4ph`V#-N"!B8NUXi+"(*mi%AIHPlS
56`j1#IcD(00G*94bdSlf9bdT,J-'dbcb+E&BTlY8)MLA'""h&"LTJa6FY%JFQQE
F@l`A[1052d#cASCed"RcLcZe&+hecBR0Sfep91A0eI!MM2MmI9JH`fZf$#5@-J[
ZdjP0h#[qI%!MA6)M6,1T2ak@LlBql-L!(!JNF(dM%fEfkbQa$2plJpZ"l)c83e%
YMSp(&kHr&,IfMN#ZQ)I+Z#ULVAl8-AB6jS@M2R[I#5bE[*`LjT91@"J89)%h#F8
*3F*!5&-S'%"e#$M#-ZfE58$(19KV3"bp1JMb-Z%lGa8Q$P5%j0UQIm*4EM'R%IJ
!R-+Cj"`)56)pMAJE%+XiR5YBSc-8j50$k3XNUNaH4FQ#r)KBPj,[3Kc2lQfHK+D
&&52HD*m)&kZ'Yi8U'j9!r&&GZ)pEie4!R4Yh"*F`K1jf9)"SmHPB(2Chl[*hBLl
IFD)B(()Z'#+l[m(Sa0Mi1(+!,Y#Up94([LTV"K)VpIJ0pN9Gj+9QlF,#@-)b`V8
,)P8MrdLKPX*VBKf299(ik4(p%2ENhDS$461'91k2m'X8"(UJYX!F+B`64Npr&B1
"8J2e*rM8(9d)FB9VeYe"&F,Y+5iEURG9lQGJMaJkeX*e-8NMULPlHX)ehD%,II+
J%R*RGabfl+$HRc(C(1B,pRi99A1dGf[G1(2#-M(3,Harifk$YhA&3G"pQMaGhLT
`ZmcHd4$i-H-b$'XkmVqle@-Jc9'iD&*A!TI@S#P*ZDSY3IX5@,q@d6GE5F,G8@-
bKq6$HLl#K(Fm8iL%`P0*kmG@ah-hPk1I(%#$1m*jJ48dZY%P%PfpfB'['`bG9(`
iii'[SHH$2TF%VVC+[LFbQD2GKCU'HlL"9"+d2+HheAYh'h6dU`Y0PeGSL&MqrD8
b[G1JQ(UBX)-4Y3jeCQXIZXIKii(X20%$(,6%!c3GT6+$@b3F%9M)q'ZA1'+Sl8"
T8HF)dJ(#&+[YUK@kKe3hHND234CbcApERpd3ER5G6[L-3-)eXmc'2j-GPZ,T%Cd
hZZPRPlD9((Q%BR`ErAXL&Q#6ilA#'S&bNN!LXDApQ95RrrErJFbYGrcKPq5r!&E
!`+GBIHkT`K-ka!C4++V!+m*)aZE3F&KCDCGmJj*hRSK-r!ZcP)aS(&-Ed-iDe&F
F!l*4lArS&3X,V*5-jM)5l"3!P%8k"Q@KFP&eTq@2$Y1m(-)3Hb8F3-*rD"9BC"3
CK(bRGcIM8TrMe$idFRZIDd"r-G%9&PM6QQ+DF[P`q&hC&8!ZZ[Y+&m1bE2h3Zr1
ZNYff,h+X1*U&)@H0PG)3)Y6iU&LmhqD*e5PSe4QP)YNdT'R&bKf!+j48GddRdAS
qHrP8e$iiek!0eR#&ZrBL1"[&RNN*&hfUH(@&hP9`-Lp[AEP!(j-d#I`8pNF3I#m
LV+23DfYdK4NE%-d2B+!&`k-*9EB(lAZ,P%"r"PMmKV&$H[af3#lpH-AN@2r#ImY
V#m,C2r4BIA#)@(A#DmA#2GQI3&fHH+Z6iJj[UVSLifHDHX3M`JMiI#2Zp4`,+NT
I`PY[11G5j"f8U(N@aaL!8U$[k[DD5EN3ZPld'r9j(2kEAd!Mr!bN02hihH1e1J5
kf`1pejAE)[Kr8R#ml#5@KVh2-9-,dlA"rd+!dDe8$-K8J2c-%2@P`KE$URFPR%R
bACCK4JlRIeIC3"@-LP3h6ZbM)F`LkYPmaGjVGd!*icGT0-,fFbU@DcjEUKqR$Jl
cjF,#UX-!eL-j@$TjrI,FpEUC3+*)jP0BYS!Z1341+XGh1%KkB%"V)N$-4)DZP58
dAG'mdmV,M(XYMCh#TcMZcpHkq,[M&@D$XaJAAFdTVGlSb("k`Ke!kc%*I2r#'P8
NA$)*YUG8$2p!(8k[9XXF5%L&(2Df*$+*(#dF(p#l`Qa0l%&kVe6@3Zb3!&(&G3[
#IF,TGX*Q1!V#-N"!bNeL+X)FU#"faRXGX+AB)qm)SXBkI'$QZIi*E"-'D(`Fj%9
2Z9Z@dqNhS&Ai(!Jr,,*8lR%BKbRBdR8F)-)XV5C%8K6P`N'P68,Hrj&VRArC@)M
(1+0kS28Cp5GbVka4"Trria0Vr#FKJZX6-JMfY4N9a3C'8qh6S*qcre$`DaGNN!#
C"FB2Xa6M@Ej45Z(Jhc9QU+FaHF--Pp6-@05QJVI-EjMe[1GDhY$&B0!FVKcZ[m`
"pP&+,Sa"lVcYr0VbRhUmfEClj)3ZiCTb#KIFSk0alq98kPe'J0m)jX(b`ZlBr#j
Ee0j9"bq&2b0EHq8ZXdj*CE"lC9&S8S"1ZTNGi#',ea$i,EU`X&cce%QrXchCE*P
4A+E+jl-+PbELhX51$X&EdeYV'HY*@e[m%HIRFGm#Nm2RUMlPcTIMIa8`a+(pk"i
@QZi4jD0aVR)SiGPEA-Gb(E3hHk#Zq!jb(D(JTU26ifM1am"rGm-rS4(BdqJ*S2M
P8HIpHa,$*MBQXf(EAIME#$kM!l#MH!(eE[Me4DU&pEeS"Qk9mm0Fic'Qp4CrfFQ
QIB88PdQl5I"Zj3jba)"l1)9b63J'HjU$55VeD!jGKl`*XqIJ`pkD%[`bbGK1ZJc
e@cGK4NRD)eX*S(VZ5eXNip265'%J%V82rUS%L8P(ciqES,G4dmSq,3&2Hp-q(Gd
*r),fSjU,QQJ@)mIC@qh6CrRRr""NYbjEQZ9r$[LMcTVN-p*e#AprbIcmGrcBSB0
h`)h6@`NFN!##'B+9hLJC0r"r4e[mr68H-R2$&49E$[P'e0ZfR"2HpT!!ZZ6[(dj
bG9h6J4*(Jd(eFXi@FM1J2Z`J`f)1FVTRQVrVM&ZJM!8Kp8SqKI1A*Lh+q#0GAF0
ria5ApIhSQIeFi`+Q[rfeUFG)Jr`UQ[9*r8pFYI`CYN5kX)13!"D`Jj!!$TSU&SA
l(#C0d-G&96!k$Sfr*YK(cDS5`pmG0r8GhEBGHeU2L)8)B9`J%HImfb1er&hiJjH
-Iq6R)bh69Brfp@FI"Mk!JdI4HU2$J[EGaaG*ML6eDphpG4,mQlIc`ec$(mImif5
h3I`Mdc((`a8C(8KK$K*lU(Dcd4mfpB9E-SV,S8IpQK,0L)JqShGGKj!!&V#$rHj
'SdRjmaC$[&[!ahU0)ClNM2*![,X8jEVI2J1AA8NHU95kap1KmBGbS+!q,JliF[,
`3Sl(q%QkpI0M9,SC0pKljL%ZamBi`h,X1+CFVU@IilDJY2a)dk!G5""bS"*)-X2
R5!lR(L!*ae(pe)1`j-FY$(cB2i+MJLpEJY-3YY-CHr`SU[Gbh[Ai5EZH2Rhe&*I
-6K*(3K2$[()@+&XM4EEQ(-Iiq!jGZ[0ZF9'!DXHce#fQ4-2m`lr(QQl(-l"!haB
8pG#GPbQ`B1Zr@kpl4NR$YQLM9U"kLm26CdR(qSfH&eZCd'hp2DSTKGA(QZ[N6-F
9&Re5Sik$!EU-ZL*5I6leFk&-Z[P'+,J*EPYrMG[cVK[(Ip"l`bh6V2c9[0#A'h)
TPiZ9ZV%Y$Lhi,1kME3EHAB-Er)Yl8YjMpF5Kiq5hIqE6J`C2dhUM%A[mF'GM9-H
f)hE$IE0JPr9X2)e)KN%5#B0fdhAM`c*Jack`e0CFlUfQKIJN$16M*-I(r&%aZJB
C2P-Sr1MN61lp'HfXdaQcMj[mI2jMIc6%d2`R'q2@q0-PUNbk2[jMc%l[Sd$K,bG
lJYh$0jP#TZ(P5&+,UYN4JA*SRe$$YZD9FV'kUaI3R#G[)THmpMIA)d(Jf1(PH9,
8r45k$akk-9)d&"@9rLh+f'MiJr9&PaZk8AY!TVe(r6i5-MI+*9M$Ia@l`qrH86T
FalERLim1mp@f"QL`Jaa)9)YG8[81K"[RS(D&k,S@rI1J3Km@jY5aLFIB)bpEEKE
MJ"Zka$,Bm5h6mSm9&U"elZImHMMXjQf4Qf2mZU%9Fm-MRkeXN!$NPm6V,RG5iFB
@&LieIAUM)hXA420E`h+H%Z&6Y[cNYM5GA,TljVR3pI#kR1-djkf@@r01*[@fE0B
J&rUU*[LfU"iL@eDA(AbkYr8Ra*b`1"Ai`hp`VEFqM2p)dphmZ[1UYVfMIr#lZKD
dR-EeFXJGR,rXa+)-S2MZ%m08hVZKQYRlR+$(`,CkGJk$0!D`pZNS#[SSA1j!`lr
CD+PB$KeY61AR(+5EBl-KpC9arE#6'XGK[kUCj-MBqZ-T&[L6ZT[(imfjpAY[528
RD(eGhK6CZVYKAIqkJYJb+JqAamQ'l&@LDeY&`l,(NhX4H([N&KiME55Xj`bQ0lb
kq,Ee!,+k(UTEHYmpZKADc19bZ"eYS-2![kN@Xe$$91aH`rA8JA9(%VB5'8HJSr@
de)$$1qXd!X-HrDCSY,ZYd"Q8%+#Mae&b2S1AM-5FZXMf*al,58LEYTN9b0MVirl
8eBN8Sm0ASkE(RZ#&cra(,F-5l#LkMKdQ0fLfrdK8)UE+(r`YpVh(XIe2AZ`AJ`H
V,SZfSjFFeMLJE"CdpH1R,21JSjF5`efZPp+AQP+lUQLr!G$S@MBNFXIVRY`bGAR
el#Y9HkJ6R+$Jip@fV0LH[4VeB4bUFVqUa*`GbI#6K9eYaD5Ji`6qm'G@SjPGa%`
Tj@&@#AUMc&Y4M'E%kq2eM&3E(G-1q1G2GJlp'`kh&KB@XH+cHp2$q1b-5&3dr-I
VM[qJdr91ePkkd(T8('mN@`Hk-LZ$,`-"2ChijU!F,VhDlq-Maec@#cYI9XIXVLl
%N[`-[dMeda+hlILMk%LN8ES%5VCGHd[m+U#CU0NYI29&89[cr5kkQD2J`dDkqlS
HJX`Fq,DMX*+*pI"Sda)GlD5J`@M@Jl93QjJYdb(DijU(S-HFf(V3S&f`9VV6UcF
G&UQbLeh88SQMPEqr-eGa%HH,r()TEVfh8i$![rNG1#lMcXFM+,KlY96(`i!`Z[8
#62A(EalpaqZAh063JL-qSh!6J,rmRHm4Jp)aaer8QHJQidi@A8helqAJ$lUm+-e
p'AZQ8Ylp0VGp8I89p4#[AH0R`ea*qEVHZ0BT$*@Ffk$(`03K&ZY0+N$M#ef6[eX
ZahU0DaIkaA-8SehepJqf)p!E8qKYkh4E2K)-M-If8KqkpAYJZTVMIp6Y9XIfN@Q
M"PffQaLIPf`Q$rCEYVIe2[dI#lDkFL'Aq,6PZ),(h&diUTGpi9BNYVUpp@24(rA
iZYQ$029Z'THcAB*8'KmTq+!#f4(FEL+k$kUk-5Lq-fklapNZZP!b%05DVFI`c"d
5r%ff(32$j,brZRYlCGK#8S09Y$F*jkF1km0-r)$PH9ff9XGFPac311kIam,Ha1p
bpI!B9Pbf0XFbPhTE64jkr2-R)Z2i6*8Y!Zk0&VT&PcMF[F2Kir--8iGk[5II[F1
!'P2R0`[$SB#TZZ[@ap5fL36(Kk#[l%L5p8PmS&bf0lBH'PJMBP&fB$D3!)Uk&V3
hr@''cdV(VM%6(lUMllIe-UUJ['Lp3UCbAIY!D+9Vq628J)qG645m#GkMF[cYr+$
(cjkJSJbQKH-dDh-M(FHH-#U2Xe[5ihrP3VJh!Zb!69CbHR'[ZlfN+K2l+KQ9&KD
E,M8mYlQUpR%(1rPTKlc*)3Q`%`e40JA59M,irX&6Y9@-MdX*c)p9VRHeS8Y!pmj
$k3T3`Q$(&M8$GZJ*%F*CDb`SJ--9!A*ddXGm+[d(V$Bp[N'GdN3854i!aJ&#!!)
H2"!mQ8ah`Sd3aXji-'4aAC%h6'iXbM9Lh4H0kEaA`&3[m59N&aqQrK+@X`@VULM
Aa0dEmTb+rceI,qJKHNXAr24pq3@Q!I'PLJId%j0kAjqXCm&"I*qPM15"Krpf)q,
Jl8m&K[iJ#r&AFeCmF11NLPdECJKT"brZ83q&*PV$1bNC9`4A,`$+FlXU[Um6l3I
S#QEN5QMelHR[Nf3"!cPASSIM1ASH-dfEkpYk#0S[3608(!ejL6XE2dS%6-f#Y$S
GY0%3+lSLkS*+Ac!'Q1ALMdi,QjER$KPP(X51$BG9rX$E@-mjrhMqdlAbZilr!3'
S!9PPTS#SUSH-KM(VdVQE9-XUYHFAHLIrBf"$EFYN)XS(+eAh4%AhQkhrGPYPq0X
p3F,AUe%FFdJ(D5RS9ekcb4m$2rA)j''Qq[[q#pf+*JN$DUKV'+)6Sja'eCZe)1L
6-0EjKN!ACX3c8fUl69Vq&BZaDkA+*GVbUHlPepi%F)LE3MSM!VS$,4`5D-[J5V&
iJaFDPXI(69&2d4E@fpKF18`C)+HIh6,SqiQ2ipZqJDPqLGfNIXepSLE#eb0X%A)
LcI*#XZ[K(T08M2d%LahTMr%J'R$MHJDl@52bi+8G4(A5a8B`hhViPVb5q*eGLE6
6pkQT30RR)@S+f`EQcJHeKMrGUcDI8@MVcqeCM9Ue!&9@$9pKMZBT&03)SQ9N@k[
beZ&,q-``hi@NALGH(c5#'V2-LZVXZmB"SkRc!R2G382jMZ86a6BI-1diZ6%SmmM
T,R[D"VP'0FqGRmMG3DB)BRSk&(kC5(SM"1kl'J"Lca8V$bFa6P4lEJiZjS'LBCm
'NC+JKPda-$LipLV#T'"A$3GHXc1Jl6T1GiaFhY(5IK`1-`#iBHSlZpNqGNmh$qG
@G'N36`aZZh#,cHiS,90A4c0**9`XA@ULf'6,4ZPPB)k,EhkIF10q-B(kqT9i+qk
L@ZR!ckDD#q[Di#f%G'@[hB&0bfFS"%bm[5N)[ZY6,j8Sa)Ir&r[5Q'Eh%Y3)3IU
-qVjhK8E20JK9"`c89f-IE@U@"[l%d$Q48GLYiJj4AjN-'35hPQH,Ce&emCI%cf-
E!2!0,mHh$*DF(4-"*ppS(3,(E4%V5&NZj0p0m0$T`9ZGL#lhU`F!Gbf9J6bDcLS
FP4RU-c)HK`b0[P'kih4RY*%Y(PAGlVbr[A`VX(Ha)#T@+Y5@'VjLK+M**pNJSID
d6M@V4*2'qN"j)+q2"iX#!PTYpXq(aYX*"[*+BQ)(Y$`mCe!N(4Q9E9i0e8R@iC2
3&0(1L@21qY[J@Aj+md[S$$Y8pcV6lprUUE!LAGiDeZ&GJ"4$-YB-Ec-'8G&ZmTS
+$`F-QPQjYJ`AR(N-F0(1h+01j1diG*EQ"PD[FH*aEQYl+!C-RMD0(ElM+ecL[IP
e`FCj59Zi5[pdE*1$4ljK+kB9&9U5rrjNZAq&aC388VG9e-T)0rP$!mB"MB-"Je%
0*1HPI3()[(I2G3BhVaCQ)N@f88V$2pJ6#9h4hQe@KRdAdL,c8)9l83BlMq2PjJ`
9&f'V%,++rmIl$TZhEU'C4RK3YD1$[[8p2Kda80K48G2ar)fh0%KejQM9pHY-6F&
P)b$f2i@MpN`ML9Ra+l14BKrIi+i4@E+8(-IJ(@[dAU,%*Fq$+4kAC(jAfD-qD*D
,`%)fRNH3!(&IHF#HZq0XQXkl*Fi-('PG$Bj-3mDUQ[kl,ZT5BSdP5qcRNjl+-DX
-TGi+qZQqk9$'5hb&iT6FFlmDhdUT!lDM!TCHd2Da6ahpSi-pN!"YDSm1Y2XZ5lE
pJe&)q$KN3p5b"A*r+lElc@5UYT25dID%%V2H)h6hcMJq6Y3Xif*KFq+$cEFK5Fe
JBdNYVR##K$N-#!8X%,*F2Jj8ma)SPeD+2A"UZNckB9pcL21l8rLcqi+1&Ne(86'
lU0c+T-@$CFjKi1L6Jh%qRfm,)j5b*QH#qlrHI`)r3Pd$q$ifqPD-p,**B6JL2@V
pCBS#Aq0"Z2T4dHb%&&P&i%S4b0h@G$rbrddq,@hhIVpR,Zm)jQ-8pHYe[(YKm1G
!$V3da2pk31C'kf2@VeNCV8UFV0$eYR&'l($Q,Fh0Y,dYrjEdfMN4HU"@jf&EZcm
fPj5ia&3910lMq,6%CZS29IUhH-(VZeX9*rK"-TFE!+)6K"5$@TKXK$K%JiK*PES
"ac2jmEdpAXEl"'!`R6)b#qT9AZi11$1HrkH6X[F'+h0#JUCF&i02LhL`b1*Krp#
(9-9p+)YG@9djH,*k8j*kj2[,)R5,JS2rVKVY(l#05BL2M64BDq6@FJcC6E2U`Ip
H4%d"2Mqp23Lb%#&XF61i#rHPDdUjQiqemKb1QI-kb&R)Cd*qm$AfJDff8@ESNDl
L$rrqqS5%QjC1FG+V*2C[B52BTbXX,R&Td8Qp5)8%,kja8Dp(lYXdQlR6bmG!A#k
b@8kf[``!#&[#PA&Y'FApN!!Al@rNT8@-Z'+-mcSC['HGrIa"K'&bfdNQN!$%029
['S86AB8&(Y5d1!l*iffj4b11daV0Hq*)XfirM5kL'XEedf,+fNG)r&34QL-PJRh
Rjh"LTBiN$0KeTXTd9b3(83%,&ZRXL48RPP,8V)3AFEcB!Ir%VV8*dpA[m2@6'YI
Qhl6ZXHSTeYN#ji5Vr8RqJGR%'`Q#-YSE[qkV@a45HZ(B$50-Irc+VU+%6G8#e(X
qGId!)&l*FL[$HUJC)b2M50'JTQIpS1dVQ8hMF[lAR"1eTUBQSjl6&[fR"V'm5pM
a2+C83,"2(a[214*aBj0cUUm@!a&VJQ'X2Rbm32'5Q%KAY$+fU#KbbQ,Pj#PTcp[
"@lqj8-1H@"#@dYF98X@Sc[&aYhR%pr4D@M&`q#+(H3KqpJEZ44-4"8e92D)kT5'
#38I#!@UiaLckkFDL$95,@Lk86b`dLJiVp&SZh8TL)F!dMkX50B)Ha,6-&BX(#qQ
1BkYDEb*JSE%mSQ!mCTDSYc@TX595R!Tj($$)D5b"48+)jMe8cRDhiDT2X4-0GA5
[)$b2#cmc3TP38qi#CMmVVAALp!FUCD+9i[Mf"(VPHQh6B!8)p`@)%(Y6f8ISmmB
S`4Ja"V'K0@d"RKFTS"*Veh&mqpEL4`d'5BU2$q2MAZiY*%F9NipVjSPYIMlf#,6
rNZL,dEY+ZBC4`d`,K#CHhI3@*AkTF9&dCDTf*PI*LIPI@,TT`@e,j&+J[r8,@`-
m+,rD-cSJ[@icFUXA6YqjS#eKITLT8FIHRPD+!ATljX-l4@+2VYbHNd#`A)rN)CP
5@!Z)p9aLI3%&dG9$j@dba-HHHAE(EB"PYMbE2a@e'E`J6M9S)qAa,V55I63$)jb
J6,Kpf',ML50I2CV%%S8Y"jCMX!Q*pJ*B'LCH%l!S3-*6,TiDaBmeIdZh5)p-pa$
&8d+hFZG,N9iHHMm#m#Dfq@C*Gim+j-qPjm!0h@5GK*lLK1A5LABT"%qGh&Xm5#r
IYf)&5,[e%i)Qa*kp@c#h5"N18qFZ49,M+1Afq1`IeJ$p[3leHa6qV"UGR,MjD)S
,l[`9J[ckRaFUqZ)a0Lc,%-L*dJRQ4!!#-$arNkj$1EFhe-kSR26*dj0hFm,$33F
cDYB[-!Y`(LI&X%C03&ePXY[NKSGf!fJ!"Kjpa(j1JM,#%26&d,K2)eL3!-[e6aH
1mQG1D$4TpGNjMMd[fm*`hb)cQmi[`L+TS(FQk[([%lmYh9j6LH(!Jp5+83#m$`@
6Z)j!JI`hhY)9LhCci%2r5FmY"(XPF5F&FCC%,J09$D9e6[Ze,VIZE"cXY2CI"q-
FDZTR2`-6bd94+8M8`2dHE1*mHA33m40#4*f'XU!5Nm,Ta`EAS(i,fcU[hf`fG,)
EXBDb6jAZU'IAifj*[HN-PqaUmlJ1ak34Mce(%E4apJB+X1Di@lV4m`Sl1&l5cJ2
E5SD%mcr0C*L`YR643PDPkU4bFRphQA[a#qHC,4@-CfpUQAHFr*kH(fT-I*(0'a5
RhRZ86PUU[cd'3b!jm"m)'1d-HFi)CAULX9P[LB*l+5KZma'SF,bPLC!!kB2JJ2S
,[k#*'6jqlKfVH9*UFrhP+SM5G6qeQSQM1$!"9Irp3L9pCiDZ$!5J#G4J$6Q(LH(
l+h3+U`24XB6eRm4Bq[2G2kE(Nj&cYkk+iXC%faC,Ec%V%Qe@!SEE$Rbq8'Y!q,4
fYI"5Sq6Mq"ZrAR$aaB"ZXiAV+ehjk-dTkTN*P,!,i0D3!')1(Hb(#MjPiP6dk@*
FJ%0&Nd-0A`0L%`qmkG#PhK9Z!Yk!$%N'8aG8-KM'f8AHr4NhfR0qY,!AEa88rTm
)C(DG%bld!Uj#h3RkQmRrIVN@jIEF8SBJXBeJGcY-6mjqi@&hS@8`a$j9kdVrQ`T
c3f&CqUicc"6d$K)UHUY0l+kIChV"NRZ!b[$2TkcNb$&p%e*8KFq,aEZ@9"i3Gr4
l@%V)'hX3j0&!jP40dAXHZ`&8jZ3pZh9*HMJVXX8j1GDR,YrYT@*'lZ,+VEQ-h`4
LB98*ZU,9)B[i)Xkb2kP49#1pA#P8plEkY%2Uc6lk6R#,JeT1+81X)$%lDrEGP-i
88ihJRCY2M9X6dP2[F"mLC"@3!%#%-X%$+i2)j$b$ULNm53'Y1l5Ik6XI'l@+-ET
a)@XAXL)aMED6jl[-Bd`q(NiTY)q+iHF#bDf-jFM+rZ!)l3@,9CqeLdQSVC2pY6M
iQ%i"BCG@rSH(1$`EK$iI)@XAF"GVlUikI+eD,+G`U)5Gb!1*d(PVk"f&Y8Q@4,)
L&(9%H10qaBHKL-+JI42%FBj-QbYP9R(8LB23MbYm6c4TEf-k@Q#d8d0V(!UCTDE
CHS$kATIh1BDarI"q!jPecjfm8E$bhB09LRF538ElIHjQ)#NqM&jV84mGhCCX8@Y
kTA-b[943k+```M0Nj)q*h6DjC(08Z'6LD-[J!Fk1+G$@+-AU4b@iZYLffTl',H&
[fk2BNeJhm8$dMZ)Pl[KL,DAJ(+)Z+-(D'$1LSaM"#'SH4HXSlI'MY"ppDb`h0#X
f#*+H`2)3$L@83%Ef9#b!l!"fEIb85kSRmkPR(0Lf-Q,C#E09LVRT,8FP'S4C,Ne
m56ZB5md)18`rk2!*R$p4(Ce'JHb5V`)0MN23hKR9''Qfc*Kf981H&h"ej,DR4Q3
'AJTF1pe!CkLccrDSZaNRP)YedB@0kR1l$@1DI"3UhU&39-M+*)9MUS2E#)10Af"
J&f0XHeVXpDUe,qPJlHEaA9'EEJ*@B2'Rl,%94T5&@61fY#J"I0j$-b8dJk@qPNV
@mLhhe#bUh-J-%`kUPk`E1*'mb)dH84JNGFNGJQ@"T#"kCLhPp942EkD0cQ22YBP
YBD*MASBHr&TfEQ*fQ+HEV@T(pS,SB#Zk[YJ-VAGif--31j&Sl(F@mIjSRHL3!*-
L)J&EcA#%T1`mRNf0DUKIY&e*2r22EhbUjMe+FV1Rar8[3$R4890pM13aI808i'L
0PVPR%GHL#KYX&EbGP9+"B&G@3f`XEB0XKHb""cmrjEbH*Ua-8A&'#B'd1NecRA9
Lj(4Spp'b2q,4`6&'$Cpm0VF*![R*bIZI3Nk5*r9p9-mIjSa%*Ub"IM6ih)-l1kX
kb-9U[M9*b''Xm55Nmh3Dkj`d1[4jk4XdP5ekV9ahAlZr1ZqR(SR[`h"4-+X[k9"
#NVPQ4l5*42r6k16lT*-Fdc+8,!,+2$)aaPAVEIZpG,*j#H(IAej(mRFmcF&eB2H
D`P"h9Kq3!,,2H2X-IJITjEYmkY)+Lc#q"9i8)VX)HirAXh@ef&rjYrh)X11+PNh
DPME-hb(*%f!,*H"qNeE0$8q%eBN'eBIj'3HGebd`'rLG"XpXFc"NA**%jFRiq$M
"PYR@B024)541)-E4CbTlL`ERp*KN,J5mNC(E&hQrQ%kiNF$fSNlNT[C0km#ZrHX
+fUmTYlG6Q)qiXBVQDSp&36!$a1DjbJIrcE0,d*hd+9([f3*l$MMcbf-KhX$k*1m
Z-RphZ")mYCYiZdc'fIAKi4jD-1CiU0EP81)+e9E&Q$`RVMP9Q11S61"Y,hpSj!V
Dkhmb$Ij(fNHbDSk1`'3ANQ+3!,Sh3G+iqT`hT1Z"FQrH8-3&TMF86RUL&PQ9TIE
Jb'JfV",8f63T2CDG[C)2S5VXe-UH(3,6e@ral'lRBH2elMiFdA&P2hqcP*Y%[1V
ZBpEa)0E'8!bZ+#iGa9[+j'8CZrc+KajMFp%CkSX1r"6["cm6q*GG%k1S3$iRfbi
I`'T)TLLSl!A"bXhrD*%IR!)p%UkFXB(F,6F$AVX'cCCCb@!*4IX$@Z8G(kG4c8C
bC!b0Xp&a9f(JXbKUm0T'CQr`R%9i(C9NkbiPfV)55F2YYl2qKckR$ZGJ4CPkm$L
"V1[`T6K6"bi'h)ZKE[!&-#AGHJ@PpC8RQ&#kX*KSDQrQV-#hmhCJl+Hci6Z!Tb#
,LeF4RIB2#,IZ+3jJYNkGHmPIY4-iPjN#HpUFH89SiKd)5#E5C"VE0arfST*rLL'
5e0K&$,0G#9D"a"f-,Se#4MEH!*%m$5A8$k&3m1"Gl1jk*"8!5a4paKqf&3[R`[#
Jd5EJh8UQ'ReC$[8T+@60L`1Y$FCpX!MV8L00+%LcYbqD6'f&5!ShS!pSFq(MYKN
lAir3cC)9`QR,MJ8Ji'Q2hhI+"%$pl6I1P-M!#08jMb1H3hTLUrA6C#)eKX*Qm)3
Gr+rpRSZa+ia%P6PRH%4TCQ34"53Rh*b(rfBU%JGlPLJ`"h3+,3#khCp0633,ZCc
`YK2EI%j@K[D2bU4f6GqSNPSZYh!K8dIemR!8,BUdfbe9VSrc)'iJRJcR,M0P0TB
(k-rET@kJC&ikEp`'F!M'CQ)RI58ID6+`SZl-pjDd,)b+*U2+U3[#Gcf&lVEbMQc
jRY"d4,1'l`Q3!1+S"DS+[NH%mp!YpRF8Tj*LJc1#mPbjS8`p'Q#2,jYJ-9fdra+
pl[!H1IpNicN(qi%k2$kR#CC9+)Uf@D%Ga1+U"H)dklX#-R`8PHme5U4$f2XXDZE
Ra+H56`CpKq"h"3&60-hq#BP*0ZXBNZdKN!#Y'&9F0c3LQ(#@E(2,dF5FV,bclAd
(#E5Z!FE!6Rj$B@@lEUhHSm-jPPUVC5T!1TJ*lYN'2&'4l,9`iV)F8ik5%rk#GCL
XhEd"Cf1*V,#d#)kBBlPD)A1RPXadSir+fdeQSbN[RfJZK4rqep)3pP!U%,IFR1*
r,+d8E$9iNZG(SP&%Mj+&kZ49%9qR(LG*VmA@6%4"4&61Jbb%'f(p1))B+SQKlGf
'rXZ*KZ5jF1I8cr1h2cF''eA413m6chFp0GP%-rfrTf`[F09dR6MTMl-eP8r`-,)
,EMc+JhAcF9@'`MCajXQdlbSQr+K&@)cF!q(9[-kQ!I!6DL)mrj`10b%d8Afr230
q8386#c-b`U!C%rUHLRXfK3C@qL#(TDJ[VLbcI0rVhQFSAEl%@PcDZAd4YIZU!`B
e-(!dh,0'"GEl'he5$FqXkG9F,ri*8CQA!i'*D(+2P5keK'mSMkRrMX&1GBYBK4V
QbaZc9Zb&F#YT+-5jTKNrMC(dCeTXkf#RALcNKkHr(&)Kc5a-qm@rY'E&re(3cUE
f))!I8(ZmrXdj19VLl5lY(kCSY0%[$2UQNJqKRfiCl%Ai90$#,M@$4$2FYk29V4X
qk09eq5),Da`hF%R#I8QY(%Qae6j8d-)Q`q&&HRSFp6+[%0AQDd$R'Xh#M4ElDkh
#b&K0haaQZmk9-SG!$QaS@$5kU&$(`P`qGd"h@-*mQZ&*$Q!JYfEkpGqYFPe8cim
Q@SV6l"[$ACqGB-1CZ[-G4F%Z+&hmqZN+XiKqAG1U1H*)5iqjMl"q9MGM6I+b!h2
$cAecRQcbX(3Y9"`T!PrpFVpe6A'd&QrQGc)e4V6HhRqL$5`(ZRTpGd%%@qEG9&I
M&+H3!%eB8H6Z!M%Q@q(q#Vb(ei1HKeSq1STl1e1ip5XA!1drR3C91blX-VA1eNS
IR"`GHmFVF4h0SZ$k+$UJ1k`$Q566j#Pe01h"rR%U#XGGPS59$[JGVJiXTc*fX0I
lJYIlXAfh0eZDJX`5(KX5$!jhkIadLi5%PkIPE,bAk&eJFdEP3PE1alN`*02b(DA
)'SJTa*SQd&&@8PZ!2#*8lQDPfl66dI-1r'*5bBV!)Q&0L)2mcjIMD"PSlG8h*T!
!+IXffj!!d`a9-LhqM#qBNDE[))+CJ-3(@rU"UVib6hfhcpf&jHb`$-p4)fjBPfD
b%6F-(Z(mk[6N++lakdPPTaRbX*pZLj8i9*IYYB-G@+2rqbecdalM%-XNifpcN!!
,$ScpCJZ$#Fmf0833I+U"ZUTbNEUblC*6DLUM&e&-F#+h&RDP`#rJ@M6*Lkl,SC3
-19Y$bq5i3Y[mrqY$-C8cCIE(l))#dh4BH+#YP6LPT%d#4e*m#d9f(fD*dfhSj2E
$hISLYZ+e([$m5MF,f$Gd5%SKi!2%e"$N2KT9PTEF3S1l`H4E8R3B@erkEbq8'(F
K5GRcE!MKJie%cZdL6(ANXA,BPrCplU(N"F8KQA*cJ'lDXY1X3*P,&&&MRTYHXj,
5S$F8j2@S6hMZG248U062Z8'$&9JeXRa@hbQ!MK5Hf@#eH0c*K3mQGZP1B'!C5aU
N!kl1J%&48!P&lQ')A1K6a+U'cNc8IV`""4$Lrdjf'M%'9*L`M044h)SFk[-QQq(
fIJ@mIXhrV"XpTk#AM3(['KcB!r&##D$0)#8EVRR%0kHlcrlGVCF@LF,90LmZD6T
a&G%lUI)h4ZbGdlM#13crdkffr9j$Z2iHia!I$XXlfbKmNqe",##q66F3aE9SQ&J
(,Y*AjXm@&MC[#*SBhRIBiTK#4CV%E6RDIlQK!6ECR*Lb&(P0Th,[38)YiEmj3La
TAJ%R%CI&K8TR895k3+d9E0-Z)F5ZXJM-iJ,&f5bq9J5U60r3JekF2&J@k%'eNaJ
ED@,qREDmINHXJeYC&E@QR0+j6qDC*!rQU14f$Le9KPfX!V3$UEFL9Qp$fR%[@,c
YS-L99%ZUhTdBZ48(GN,l-dqPDQGk,@hh)`lr-H596Tm1ET9E6#P5Cp2*Z9$6VI"
eB(IHIdYIXNX-99)64UGFB%(FANje4K$a&TVTGNRAG3iGbl#X&Li2-B%LAQ#-VVG
GVl3iQDNS%5T,eU'4l(Vbkhe*YK0Bkb9ZE5!E5&M@PeNh$A,R`SM'$%aBXld3Cce
f2THp`K5l3#H69INkF,'GVEB4NJpN9-e@@)RrPEUB'SkAHdqQR4fd"NPmA2a)(G4
"e4R#&(dqjKj2`4"LPFHJeL-Zm`Z`mE`MT6NpmA1R@K'RR[a54G&"d,DH066rZPX
MhS)P(`&@rK6m[h,RYH45IqCX0k#kIli[04UkT*I'LFfZ2DIL+QH*pjHR#j(ZPdj
b2KHIqCR6[V"rHZ1D(dc8lPX&UGeRQ@N,F[*d*j!!)qpkQHPE9%`&*5*jIbT,Qd*
+%"%2QP3*`qh1T$&`MJVQmK@!%#V*b1raGE1%,,mMPCG'e6[)Mre@-a@HYG6&YqG
k$h[mL*mAMXKBP!IN[-h68JMU(EDZlDjb&[fXYRZhmT5V&X@kr!VT5P0b1[0b4Na
HcmIAFS$EDTISPk8F`#XG(V`#jK#je`lH8mU0$HGZ3[fS%@,J)MjX8dcXPXd@HSi
p*D6d6U+&QL[l3M4re-#aZ!LCG#Z6@#1j1Z,c3mMe%!Xd%Vi5)hZah`jf!rbHM(6
+XmI6@fADEQUl@iciYMSMR`aG3qMr-4E(aD6+deZr"Kf)"!m#pPV(3ra9+SGFaJ9
%aIjDie(2+cDDJCU%FLVfcEcDCT`jUMk5VVIDm#5BR6TRS+2$ZGh-Z%Q5hJ)SZ,B
+X+U@BXlVPJl*ADF4MK-1AZrA',IZcb5,QPfMr*p4@$FC)DRRH6ic@rdLVTE(rLG
3Jpi"B3alIVd+p"JRlY3UTc*)JmGT&cHJ4-pi`E142[q3!#TS,89'X,hQ@&5A-Ph
DV'Y"pEi$EQ%K(PTm&VeXek1iP!i"NaB5-QkY49XI&Y)iL3@#G[C"d6k+LRTp!`d
[-+!Rlfl"%Z0AYhC`rmqE4+QpXb'*fkZ1c(NT6lpE4a,%p"26*hp,m0V2c[ZATcV
dTCHk&r8$8VPfr0HheDJ56b(d0j5fFqjNJ'h89"k@&"cm!!N0crKlA6,!1PhBm[Q
6(A+m-3AeBlKJV8hGFRVZL3F*(Kq4rE9DkY2F-A3[hdcE-Mr1TRcPpK5k'ZGKZ5`
pPUh#AKE4(LbkB!BHi,m$j*'l6m2Le0A%h51!k-XPe5jc*Q'!Lk2L#dPf-`44@Yi
rr!BrHD5dq@c,0aR%`38#NQNY-GHE+bFEG+apbA60`mZrITkbCU`2QmF"&BCf8B`
mI5DIUAe+UZ0UZmKa*Z0QS&&"`EhaB3[CfcKl[R)&k+4FkApdhhHAT#a9EN&QA5P
-14hLi1qXe,XE),Q"$+95+#6CTIbK@N&''CS$C[c*%X&)!pZSb9E$JIT$I@N$qmq
Y8pHfh,q220TKALL*NHN4ZFMFH98(Nc3+6"m@`RPc#mkiGSiNTTRYdR4`VD*eU-H
ZXi1r&1Z$Up,R0d81JBKcQZ#HkMVapaNLNKpbV2NNb-K,TjBLN!#@8r3RZ`Z%m@B
NpS,bki$ih058cUHEdZaN64q@F443CA+CB!0iUVFY!aIa$ZMr*26M#*Xh31kj)I#
E#IQS[eVfJ`Q2MBHrVpJ%P6Ip#hZPHUZ@2RbDfG5X`AKm3m3NIB!T9T86%5C5ck8
b!SED25mC(@1&j-F21($0bX[+PX-f-@X+@UEFKYNpImT#Ch-#jq2dfX6SHTq2`lV
`NX@DN@Q3!2qlP49dqG5iQ+$r8'EX8'+d*3Zk[0U$6k"JYjj0@KSS[r*53H%bm$M
5H9JE3CC6VX)(-IAB$Z1*B!hE!fd!HL"09BU+[hm`h&hEN!$-6XJ#3kQNcP`(#ZL
(+!Q1kh8J0kAcM2jP!kA-9+UU9[#0HX%CcG'C[#*EEUd)YeZB[qLMfGQNe+5dfP)
6PLqi!3Q$ih@XPV0Y[&+@HK%5@S35b-akCfpTRDJK#L`8aCU3!(XZ+6C*"m&-,EV
+S'&TYjP(aDqX4B4%'*&JZEq13Jj#KAJ*88b!Z,d@4C9bmqVbE$'(hA@mHG-EH-I
lCjU4S(dBcA3XpPQDKSd`25A,cm9BK5`,Lmaj%c1Gmp0Bmm%5k!qN3QlacHdi!+I
2!bc4HQ'9p4)EbV#mT%VKjCZe@DbrAa)(m*Yfj+(hVPf3!1!GEra&hNSYfE@TLQT
FH,FdVZJiM)58`6KJPF59Nrm2bJUY%5!Y-X#b-mJ4,q(SJp2P`IUZQGIQTmepSYr
eadam%FY2)6C3&'EQ4D@G6Cr"e`eeaPf1m-9bPFr3+i3Tr")kK!QTIMbL,m0"I8P
8)Q8EQLQD6XiU-AII&5%j1ka4CXKe8HefN8+@Ykb&(-GF+8P9QClm'If`#CBB!K%
cc#Gr+lG#$,CHhhep90'6pA!ANZcX0D(Bp@r,'@E"rj8aMTH[##CmX5MSlS1M##`
QX'AXa%fF02e@YKrppAdBTbam3P%kTpdM,l5I92JVZKq0ZL*eXS4!fpT!![GL+c@
FeTD9(r&&0qKkDK)hf+,4kI"HAMr4AFaZp5+[pk[(&U$cQP%Iq'IN(8jlB"0l4V-
$)RZ[PX)#%BHGldNfp*8N-B%%MUNLQi+ZdEik&ehZj1eU64G#MQmEKYM@lAc(*jV
Gr'D4L'k%a$DC0QhhlMHik*C98`ibZ&(**F9m4B',X!acfiNMq16((jbJdJhaM,c
@KN(Yj@!F2SAiUp!d)@2)SlSqVI18A-0b`HifVN&0EZkIFVU1YlCTmTG`P2*e1R[
PYRXMhh#G@UHR`pFM8aDA1Td"&dC-)HD3!*FeEjP0KJK&G,V"r2-[6&NMX!+AJ0d
mrUB`%&Z9FTUdXqRZ6-!ka-f1GVN(PC!!e6'kPRq,PD#m)qH)@h95ia!)!XH!&SQ
!ddbreR*Q5kh'c4(jQdB)P)D"YqNS2Pk9c9((H"b4b`X@"SXjqi!9ifc%aM%[Vk[
BfR@N0b'eNbr(I&@i-eZ+,q3S`cDE'5QE(H*qrHi*iF0*RL`""pE2pBaZINj%6!5
5ef+9GRC`dPfYdJHYa%UV*2cTFl(LYJ1h@V$6D&X-SikC`*&NCiYUAR#f(k4+BK@
Lah9HKFe1eCfY)AK2Z1jV6()2FJMZ0qcDN!#P[C[e&S#hIr%hl[1Zi9X!8T!!,NH
$#HhqBN3@HU-#pF0lcrEZCpk4qGK,GTEN0XmD`9C-$'6ZdeH#Z+$bmDA6RC9G44d
eH92@8@'1$3Ie61IKAK5Ah*Bq5d23ji0mFV8(IE&A1rJ0ll`H"QNi)KPh,%FI4B&
G#9r&VlB"Q8j(e3MbJaZA%m`T)3(XlpFMLH0)Xa9N)ZF*$'hAS+1Jp)bE!rFf4lP
eFYV+&FHU"ScfidE$RrbPHqRFEA#e!RdFR5p(Te5YqASQS"mMb8JrM3l*4'2d6Nm
%f[hDq%Vp&45k,q*[RcGG12hVS29Dlp,@I#E6QGE))d%b&3Hj52c8bePT43plU(h
l0j0ALNlfKE'q@k-dB1l"L8KIMQ9kpXl&-9maf'dJf4$qQC+,Si1Vahf&+`cVfl`
b3(Xj#[#fpHi+X9r)aQXeRh'`%2ME@)NGYD,ee)C151Di64U`6Pf16LXJ@r@!H+4
"Kh%%jCNJZe2&JKbA%l)98d['0e&,V6ej48Z"0[MFad`mPq6A1V+G5-")QL5AS9r
8j$MCfkSdUd*-TNAL#6Gc'YEXB(AZ9UVFC)%L)@rf(Jl,@jTH0-eS[CB2iJZNf+$
d%X(60jdS,j''LkK!dm2dac,acM($+#1pj(*Aj+mEU902+J-H(dGCZ2A!S6FGf$,
1Xdal-M,AXd1lMjCaj"DNZAMDQ6CmMkKIJRDm1`#LDXlJrM4lDb$3qapRGa+Q5k4
ee"@8J1eicLMm8p"-JFHfc0a11,TVY&C69lBH5BlNkS9HapLV3D(eC@UK[[aCQTM
3@lFFbqkQI-lP'JC3!R,LT&hYKfAmF+a"D[f%1jV@d6B"eKf+06PKZ&+LNZqY++Z
fi+iXj5R-jBC3-Afkh"S4G'*H,2#"k[IedbEf`A*5qZkPrflHQM&Z2$Hh6NrTY(G
b(e(dc1G,6C6([NR[9VCFGaB#34kN&eTSV#QEk,flVDD"mjIPS2mpV*XL`[IT!B!
YQ6,mcqp'N`B+EJ5Xb`19Hi2m-q6K"[)-C$IPbdjbZE$EAhXfG%ZMkS6@j9Nl8rI
9S&+KVU*+P*X$Nde"L3%kB&&Q6Hq6T!YQcQp,(VhQ#&+U+U#Vh(cM%`ThX2TbXKd
PdYDMj18CJVQKmbRqP`83SI`39S32(T@e%A*l1NrG'K'NMRed+6Ap8MLQpD@XS3P
9l4e-V,r'cJ3KY1kA&$8*DMMVEYENpJIY61p5@H8$AIbLZaadIB9hGG,+ZILG5S1
p$R'S&IHi(b2p0()3H+GSA,dfE*l#eQk@Pl(5bkCE[UkMB,0H2+(L6pdr,dhHY%i
4&3ecG9`HF"(G85ePPQfm(8ZD#68PbAD`!CL@CIlrRI3DNV1p`DlUh6FA6h$-8dG
`iSHe-(KP3Ua0D1kAeZPHP-2j3BLA5%riJ,fNR*pdIi8@pMK!0dI[2JFJN!!R(28
,c#S#$YhcU(d-lfXUc-XMJA#P8@#MSPYCPk`U-pBXAh)Sq)S@&D!(JeQ!Ec$QIZ0
dX[qe(U(If,PQa6dq30NdI-HN`l"dhb(LPD6C'HppiN@r[5@UJaCj'9V"-FG(,UA
BUd8jJaL1pQ8i2A068[`h"k,,+S99iG`G+K-mMj+Q$`F3QL"5!6k99N3[VaCF,[1
9&)h-h8ddhP`4[VHQh28MiU[[YNRqmLQ1h2eq8K-#qAHX@MP'j$rmfd&)Jq-8U!$
m!c8#&,4+!+48EMmFI2e-%"bATVVe)R90Y)hFdfq1YV-M*0A8I$BbHm8,eNqA!Dk
L&'Xh(8`R!bd-%2HmUbK!8@lB)h5,0YE9F45mqmq'YB'a3'*-afm%r6aVRp6f+"l
Bkl0Zk$I!qkRB!X0l3AU(bTekMRLb`Rir'rT&`bj(0p$IrT226(Z#R4SjHA,E!E!
F&e`efp&-r8iecGJGJEpG46lcC1Mef2'j`e,V2d['HZramVUl@&15p5ce+!A13%H
))&"h"Z2qp[LmQNP0K)Fj!lV"!hT-(+&ele-52eDfc"EAY%`@$PA%**a85U0,#l$
fcp2B'6KGi(@Sd8CmJYC5#8`N0DE'e1Z$k@m5r!YpT[hG9E"fr0Gdj,GQ@[EKVBF
-dX6ji6Tfp06P[$9VTk%8J"ifL!bVT6GhHqY-*k&NhH9lSY&)[pkcPR$+pBTIkM3
G`9d4Y-9&QLiTA5J0j(mcfC)A)Bbclpq`3S+hlU5G(VDEkK0%N!!Z!eI!q,"4G2X
q@ld$IAY4e0"@[*,V*%fFmh'HS`bY&3Nqj2#&m[EIjRHHJJa9#N#X(%9T@U'(+$8
Y-$K)0F&`TH@)3E`pPbK2eK)TmKBSlAf'fB9d!bm#KGK1&YCI``T!5BiJl"#[0VV
BU[CR"-j-5P,k"JX+0$HCZ350G-X%8h5#bUZ1+E3ee1Gl*'rbJpk&NX`AQ1fNIA1
EK1+AN6L!eI!$XD[!'1)BEFf@kAA`,,Akf-Ql(8QGmIX5qDPJqb"@Y[dkIjD($A`
5+emHZhD(4'&!i(5HT#Qjf%rF"aE$L*q!0ljRi[(("$$qTNh4&DC&KRMr9m-ePUl
EC(TII%[$UYl#-TRM#Ddf-B!9q'B%bYcE@Z$+l9!HAGb@L3M+UR+lA+Qlr9e6Yaa
4D45R[3&0S-h2YJN(bL2`2jTiV$rpV%4UXT%Iq$(pd%2"FpQ%$A9YBkCmYX1'f1i
5mfF2)`IXSUaS1rd-ARB&P6`%EB0D5![(P@9USA&'![A,a,'N5IbE1k2&$bEf!Zf
&&q@mEV+kL`E@H5@dj&YAXlC@YdT1Rjq%@cHp#5AYdX-Qakp(41X2ccU@$-rppCU
PJciDHrNJjINI6D69198(C`@@kLNZkRIm$YfP,PHSP6&cRGq!VleECVpDr5X3FU&
,GlB*5+U'J9h'5,DHh@L`A4d@YUC)1BfEYHA$'(q$j$MT+Qll1$0GGrbYI&H45er
IU-UfU`*pG,G&ZaHFBT-%$0G6$9'fG%cJ8Hp)AC!!13LFlA02Ja6)pUUpp`1YNhc
2JL*Hb08*Z#Db"+efYjq3!#[SG,b`I[bMTk'I[YpLrPVZN!#hHjG#5Z4-4CIHpAc
qM*U*6GCG6@lc+SK&I[cqZdRplfGlV"Biiar$2MFrEVM*8H-eCede&hk9f%YbDS@
iX9+QI%@f8[0R`lS[mi!aj!*aIqAQS3Chr8A90bl5PFTApdM$pU!qGPbQrULD)r&
T-NdI8MlmDIcpQH+M*FeS!JhS-FhZiIi-GjQ,ZNIP&E1A'!1#@iU3!#ZUP(*1(Gl
V2R5PMA&+EDV`LBHYfLrFHLlR,M!$U2SI+H1kLfNVjCYdlhXq6S'qE[U-&SE*Zp-
dQ)0JrpQQ$(bEHdb$9,,9eF3$"fELVR1`Na!blK$&K"RFHQ$fe6mflbQPKaTZ@[d
jXr513HqRh,@mLr+mAVIpVp0q'JZUEmIMT[$N)fI@4!H1I#$6'+(%a#-p)"%QRqK
lGF*Y&rND$cN-*lkq&h2mPrcD$c[C!!!lf21p6#%K&6Jcqc6)fLFINL(br'6F(TI
@'6pmamDXR)JKCH6EVeh)EB(+26D6DR,mZl8q10NFaNYe&[pURVcXq0X"6cjq&#M
ZhTFJ`Bq1*qbIhYHLV[iJYGK65kB#&L*Tc!Djl(l["EV%J)*D#dfQm#pGPai9ZR(
VADG3-0McG[rUpI0BhY-PXhH*0CP,f#8)IIElGVeEe8(%m`8@T'JC-j9dJmU&j+U
jK"Ak1%'KNM!*iF)S5SKprb-I8$eC!53hUM)4eh-6b5)XI-I*0ZX""c#ZK#Qj(A0
4NNR-"Vb8EM#T0@G@Li0Z"LY,5L5C9iCFbQfA0m+Jq5A@,[84'QJA&%C%EZ6Bm2E
ASNh(PFM%cILdQTip)GM9cNPeHE3cD1iP-ZDk*bPEQTT5`8mD'R,BT"m40F6pbaF
JZ`5jHh)Q$MQH&I@3!"JEhB$98RrifRd++SIjG`QZK&)ji9ZTHk6JHqlQB*TS"GZ
FS,Y(Pr,fTPXINU"[T&*Vm,1Eq)@kE$#3!"m9iE,)r-Y[TXcEMeQYQbrE5RXr%Sm
+N!""CG,-dbNV`D6AHqlE)hY"`d[@jh4fKU$Th,$G)*@jaf"'XN1'D$b(r5l8GD5
MS1c"$eCCXJHrEf%hbEK+kjEP@lpkk`JIa2lK16+AYA"5VR3DFc"((c,Rm+%M[m-
%(BXIP&23EM+@"Z!Nm29l`GSTma,dN3Q@$kj9QE$S+XZIEQVMIM8Jqi$TCUReF-l
p8EF@8k@m6Ec26DJ*&i&m5Tm(P(a5#@Zh12H6f0k3!+P2eRhK,A['cjM1jb%!NI5
'"CQG[RGV"i@G$3jE40X5a#mR`KS+HB@!+em!Kq9f%'r2m5!p*[eRU+-Bd"L2GlC
-MhUIZ4!pI6hm)DhMlHk#%A-aG*Ik-QZiV[cL8MR%Sb@J@2*ipYQj)rG`%MN6ZTS
#!EClIPXIfK-q"0BD0AHJ5!dp9Tqae$FfI!VU61eZ`mhH(F2!EF-(J2SY(NUAA[`
$9N(f&G2PPAI3IGhN(Eh5%eV9kF#kb5@LSe%JBG2j"iPp(9e%e1DKD68,6%C+C0-
*TZdEGk1kdFH9#D#kh6TYl4Ga&j8q!8H`Mp2"rYSE0i'iA-8i``TeYIcldb5GAAI
P8HDXaKQd+Tk&-,-S--FJ)(56Pe#eP"hLY(EZQ94kBh"p1hd-l,SU,Nr'FjUZ,L&
GrGaUrYLNjP+THaebmr$Z0jq2VSi!l,&*eL,"dE)5*qrMF,Xkh3%UQ+0V@MfCNKp
VXm9$JDdJ8VNaR'al$0aGlJ+kGm-*URcpK4a2)&AA#K912Y0[NIf49a*RNK#BUL1
pb#AjkeB0QA%Ikkai@m0lG&%1(cVQQT6F+Hqf!LC2lbMch$$3S(T5&R*+'f-q+hG
dPC'ki*HSj#NGlLMQ3fZ#T&3J4")I&U9rYPb+3RN'9Dr+dUIIQ2aGABl16@4ZQkC
+(UNb(XkRXf$Id4pG!ZCZNIV8[@ICk!kIdP*bYB$X#kr4@8PpABlpkA9bPmlj@[$
BKpJ$!S3`H&2leRE!b[9me[8M4dL$l&Y3F`eJ+FeeGT++b*,PrNaN3*Fp4ZmKQk`
hP94Im9fI*eUE(I&9cjIfED$Q$1erJ2J*)3[bPSYT$KLZTP!)kIG@05T$KabA1m9
I05dhkClP'a%(Ml,lC62rq,mpb#&IRU8Ei)LAV0HhI1bCeYQ&p2iNIGM6C488TJi
469F4flTCU6k'@"ekd4(Dfa6$mQImrHGHcH53!#q%4jR2Z8H`0'b540``H"C5%IE
"@UZD#Pk@'4LAE3hZF6@cZmpC`TP%E8deIajHDqjLrqKjZ[DIVCDQi#0'j92hH&j
6,FHI%fNBmHEQK,U[6KRCCZPp8YM[N[HKi[A+)Ek+T[IjbD2('R*@%ar,Z8!@8(X
3)pamVTNM2&`b26LCpJrFG(MZD#)8,h5YT0lhAM$eJU0(Pj@c`km)$Kj'8JM0U,R
i"%AEE0A8pAEZR*TYr3Cc,l3EUrRp-GDD-Je%9[Njal6L5Im[lBj9QAdXNMF2+J4
e80,fmCDSH"dGT*m0ahrNMrciKT'mIZA,ihMP(M1,*38-V-J8ca&fKKr(%8KKGHQ
&Ka`$-cC`EQQ`d,+iQLjLa-1TV[Hf1,LF`BNLMNTc%R)4HmMp)Xl5a+Tm&+M+ahX
*EN%Xr$i80bmhj%R968HZe[CI+Fh9,Nc3kSaR18c2Z!cK892pJlCYH`FVD&FCBET
cQ02rRSQTIRCG)'&krh6+[[6!)B[kKENCUDhHZi+CjGdSd4qZI1Sap@GmiGTZT(c
D%M-["pk#kL'IXp#AAJNZj*!!PT,,@`E"dXH%Dj9J6IX8kqIqZF0!!R29`cC3)b8
LHfR'kYM&+XJUI0[M[+1RBBUDRM0Q*hfB!hB"p9Ba@a0b$$X"U&!)FZP9#*J-p9A
%mD*-ABYr!fQaB!q#dVMP43L)pFIfKriheKQ%HkkY8",pT`idVC%666PMARL%L8&
p!kj)T$[SAEcf$brlTIqU9aXB%S#&S*e*ZL"3%FkV6#'YN5BJ45Z(,T(HeX'+p@m
l""Sp941l+f5qGVA!d#&[FQCBdJ'(FNJ46@@)N!!H!RBd)5FE'XZkSTP(I0FQlqd
R`hmLCT'E#ph[a1l&&r%KiabN#5%@1"CB[QB-SJ&,YdDk36*0AE`41V2(UPfi0[!
@#XId-PdE$ha2k**KPllJPE2+qlHJVFcQQ@NA6IUD!JQh`-%%5TSb&j!!4+'Y!%[
AY6pjGE2$aBM%LPS-fij8E+&#cmFXh5mI,[hp-IdQQeJfPJqAFpFaCEjRN!$Kq*k
2d`GeJ*T4FXTQNl8iEYRZPr6@b+RF'8+Tef$$@[cE86H(SET,&i@VM5RVjL%Ph!R
XJ-5h6)If1!3a3*h@HI'M)[U3!-3q[mE"ai#`c`+Ie"bJ"cGI%mplPQZlGL6k4ia
E*Rpj(G@UHE)550pNk3!,T*(K3UQQJU%2a6MbV@$60b5j#rL4398i,i"Ebi(5ERh
39YR"0!apQK!b3c-GF,qiIVKqlEIN`aUC2!leEfj)&[I$KpTm$'8Ac$9`2V)1`p%
F$D9TFX$G290a*[ITS0Nr(SKUmB[prF1+-@m2!B)!CIqjDSlpR,SGA*,1Ucf$Y4)
5AEQJ2`aC'JK[r836,!ebp(Qqm!P9G!GN0L6aQdEMRGX!MqS+!FkI*b%Xp(Lqq1i
2A5&+rSDPb#T63c0SrIhAM[f2VQCpkV`81C0TqH9PD(Pqq`dh4a*r!*pKXjD!G`U
(NTe4l"QI+G#dDSV2He1darY2cSCZk#,A696"`Ih+pe`ZrBAPahG5"m19d['YeEB
q(F2VQkY1JX2c&haJdFdb!fY@Qk5#-NMBlTS9bF4e(mfK1XplMH5ZHpdGak&XMfa
,U`ZA#QBr-I(Mk(A5*fPc*5&6T,Qr@cU#P[V9r-TLd[d5d+J5!ICh#iSBC8eeb!r
p#pe@jFr0Q(+HKd,d(CTFrf[KJ*IZ8Ae+dqcD'@M`$ZkJiI%0j*mC-&G"JAU['bR
+bGE+CI65S2BX&r*d0FYa)Ie@lr2#@G`T,M0c&q,b-%QJK"fSN!"eMURhBl1aekA
f'bl(%!+MT2NU"pI59%E,%ZIKhb%Lh(&`CXf5,IbJANh%i,F5bf(hTepf6-@X`T,
$46"Npc@ZPp(fGq!bZM8UTIC(C@PR`N%VZHLfRh@$6c&FV'D2JS@Ncl*Kr33GXPY
iJ5-FG(1(dR@('*(`XbD$9Uf,8UjV"[ABBDC18TJUN!"1La4fp8Uq#T!!9bVlh[0
60r-PM`PU9509,10i0ZhXa`K8,MqilhHdX18GMhk4a)"dM8%XZRQfIV)d&PLa6CJ
9hEXDA[Bh83I(C8eaP)',Z4D9F5'B-UGVk8H4Tj2-D,8GML)2(dTZS%XBj(`0(FB
UQ[VD1-p'6Y'i0cVXT%IY1KkV`5fkh$pSI'IKcmGVI'@`qpHfS3P'[dH#'1lH%*D
@B-!XYFRhARZJr%H4Y(M#NA4Qi)mXfLP!UUYUI!GQhkP2A9(D-bVNC5%Z!JkR$4Z
6V8Rd-EA,b&kI(EKE[5+qI0"-bjbiHkMCI$2i6qmpl*L+IJ[kb0c8)aSYr+hfG%m
JXiMZlQ1@XGJTc&*fjEq6`Yer(%McG5ET33!pRT[AC8$P,iX'paU)j#Xa3lK+%[$
q!3@rr!LIHe,3Tb'G'+-*iTf*pdjb34jNVG)hdIG&I@PRkN%mp#mrh0AH2mE$63R
h5dNlUT,`K6B$Ab2GadrY0Fp%8,q"$QQl'2'C4[,lRP2GAEl%&EYm84+Lpi(81VH
'9Q%!-0X1%8T`$$8Me'`(M2C#4G(LGN`aFlY(i)`N[N5NJU0502h(qDYL-PR#IKM
ji+dqmJ6$I5e'KGMBYkD4XTTrVrU"3bGM-d6hVb2@0XT*a`pJ,4K*[fVDi43lZXi
rJckA"h3ZqM4GBBJj21EZK$Fmb`CZR[k3!0!G&YDClUf'XrZQf+@[Va)1M9)A(4S
GZUCGF[[56ZGd`jKE5jfZk+X"5q`3N!$5l%E9SRjS("VCQ'RD)I9IHNS8RMVq59l
mT2jeY4h@bkB5TVhk!Cr[pQYih!*4!cIKabF*edNhNQ30369KUIBT8fRCTU&5BcL
,lc9UCGe)QNiVk#S'#Vk$YTKDAS#2XkZY%S)&,X@&cHmr,FFp*0bhT2XUj&,@6G+
$,46%[81#2P1AkfKYIY)f4bP20-F#%0J4UN3`hr2m*5da&ke--*M5IRSGhC8d$Jp
d+'F*CCA(lM'aPhZjr9qHjeUQN`RVf!SfL)EEN8*f9',Y'Cb3!%lUY5EK2h)%j#%
MKjr8h+HQ1fM539+fc%RXhSaA#GVCh$Z2Ea3e`e!mhhAmZ+$FGeZD2k(%35e@`kF
9%VlfIUTj)4+3!1$TeqGQ%Qmqd!CV**9"eT1UZVAR$d%j%P$%XY@i542XdfFp%U!
DMUZCd"GFHEq+Khihr*DkQHbKleD`EV@GKF6l(NG,q"38$BP@(H`SBefVGU#(38r
el3'CSPNEGZjIRbYUZq8YF(+!6&j-,KAV[CdqUmG%$eB@*Xj-6QC+Qa&5rm`'5rc
VB8p%-+#2Q6!XQ9I,9VX468)iY9q"kAb@[*VQdS@r0A2D6-a55Ad2[EYAde,a9U3
%[UFePl3ZH'j-r@I+1-SHM4@cK[r5ZV3&Adc10hTG)GdPEZM@l&D42Z92McQm)39
Si$4JGdfek+[0S,N[!m[[9Sp-0ZVSV(X"["Gm)@TNlrl!#@"L)11+aYS3da`"YUa
TC3XfQC4I&#`EbjEKPaYKf$EJ1jIBcDEfKrEB#[!2'T6V$QH#KRppbGd%F1A)$lY
VZTH2dCUX3FAS3TGqr"'3!'&&qAeDV9%P3PQ'ramIj4R4C1I-'-&mVP+E"T1),AK
hB'UJ3Q-eLU3qK9$*8UXmM'2lKjdhAAVd+EbcBUY9#J@25bUMe%ZC)V$'iY*rY4U
J@Eb$K8l$$6%B%YI28!%5&V(Q%mPq6CbQclE+2`QRCij('354!UcPiX0Te-60J$$
G"Nb[)'NKlAaU1dV4i%BUZ6Z*QF(*[,-1`M!Qf$e)!8)'Jm-hXmhR[HG3Y(4*I@l
r,$*@(TIelQYGpihfL%m'JGNY+1)BG69dT!cGIA[qQL!SI5HCB,GSHMlp(fZ+%&F
A!KheHDC!&%Zq&i6I80RfrAMaP23QYC`BRQSc)[#N!@%'1X6D1E),ZFS8e+ha5)8
9c2@0e(V)ZL-!F-M3Xq2"maafhBMKQfic3H2(*FN`Tk0rGmHUdM'GfC+q@!"65HF
d3@86'`!YHIZ19Z,M(N`m8h5P,8jb3qFpeUT19f[&FBYPC(K1FK)d+4mi1c#1UQj
*hEp$*j`(XM93jX-YXLVP#mVL54-1Djl$eE6R)d1ZL`mK6,1d0UN1a0KT8!PEZd4
Eh8Q2amQ[6fI+U%`rR&``aqBMq,9DJGXqQl3+NF0MdPrbVC52","%4)FTX-IPP&h
*[KEF4rDCCLT@[6[B"I4f5rjLf+fhk8rfQAhb$182&US%#ApdlZSIMdaHpa9P1+m
rHHpeUD,1YB$&fJpCepkmTjNcFiHY96JR@@FCpMPim00qNe`j81*Gp!$KCcI1+Cl
ED(YbHP++RTTeS@qLNKrT8FT0!jB1,GZZDe@@L6ZKIl1&@HieGM)F`A29jMk4&Ue
"HAk!%BE(KYQ13q"(XpU%lYNqK$qrF0L%G4-I6lQqlG`T3"cjX2fDpSB2M)caFP6
,&NqS'*NHQQ5idH2@35544mS#Q6L2Md,[BF9pEE(0pfare4e1!U`Tk20C"N(hidK
kX`(rd,!KX6ZN`Gr18r$YS%cBrZm3#i1YP+2MkadE)LImT!AP3J-bM0F2Kf1+&$!
I5*DJ+C)%c-IhTR0Nb&jb'3'88&Fl%@ih@8@NL9V$De+Xk,(*C$3f')T9'$KqX,r
@H322VlrKB@kqTUC)*I8&FYc3`i"f+UVK1%FeMI&YfGVIbB)"e$GQGSdDDm[I'0K
(k8%R4*Qd6-U(T9Q4hNf[F+YAEkAAFRf5$T&Qi!-l0THQ'VDU4jGV2F9#d+0a-D5
4([%cQ91cA0+,&&J$#ckc4(hU(aG-iE1Ik)Ei@M05XlBVHGjp`Sk[ji`[6DAe,[L
HU$[4!@5a+9dU1jLc88jSSrqdr(kI5A3mCD8N-I[$Q[lKqeqANR3-Uf-!RCJ,'Jd
fQC!!im5fd(lYM8NH4U'&3UqYTAI2LjFh@[behehZ'r8,F*6S&2ehkIM[UAckd2i
4NpN3*SI2HZ13!2NJ%"TfPTR4(B'IA`Ul",$"(Fp8pJ!#@KHl$[B2(K0FYPYVcFk
'ZeM'BIi-jK8-'%*YIRFK)rBfe06lAlciqEc!e+b0C%F"c)Q-'(h!eaB9ME!GKPA
(!CA,rPaa"FDG8-q`ShZ)[+8A1(H!*lFL`hlqiC[)qYe0YZK#eTSiM3FGCA++Ge(
(i5hP"`I%)`62T$SUlXLZAqi[q8M2&40+Ne1Di`(EpR%S%Rld8PUJ-MXR8fAF8%Y
mlTNIl6AaS[+mYrGNU#%Y1B)&&4H3!0ZL2VrpPT%3(VJ-QJ19%9AQ+NIf4XfGG*m
YZL(&$AUjPk`e+lNI5KQkkFKh@-[30N(!jlYU)a8$S#MqF,Q6Hjm(HI$24EY,pR)
TRFm"j8j---Y+elqh!3'3!%%"GpfXY2ReEAhpJ[l(LfDJNN8PRbNkmZ2EZ,C%HjH
*!G-qrb2-Y13E,UE&p6$q5pjmZ'[!8N86a1j`d@hkkd'Y,#)T0E#kab(P,AZQ3TE
hm`qj3GrbjZMhAKDr"ILLKcq6SGR1%k'Ta2bYA`l"Y8ErHphSe,Y@YA&3dVp#$r4
4e#SKPBQ2,kjm85@eH(GZ(lL0-91j4A[9`dXmAr"qM%j38cXXbBj0EdF[%dbhDUh
Ai1'(VQe0N8DFA,T!GRNZ)l%2laP[eKND`j8(V00U@ZX%Ai5A!"-1qa&3U@iLcKL
B#k%#B0FhcY)P@V95kA1C*YcQZICG-VUbHbrKfZ+[IF&%(%)p*3EkUh`3kp!a$MG
ATXiKF5#cY[%aS)Q1@0-lq4l&X2%*dT)Q6dd#r$'2G05i9PRk+EHh3*!!QV'jf+p
2*SeqbY,H2[j&!![MaFm[R(AjbGjc3DeN"I4*T('(33m"8KId6mar#k#Y8qL*YKQ
1T*8)!4K$0"`Y5akLrdBB$V4ARJ&rY&20ej!!PCH#fN(P"D8F2)%(kZk%F+QJVQ+
@b)X@+,j&3AZ,,ZePE`PblA`+J!GpBA3'1Y[QRLK4i"c5,2jDjKa'mI@Q!iY0TD1
`H(GeZIVcVA11N!"%Uk%@'d-",Xra-R&GGZpmBFN`ABT4-R4FLUef!RAc"L5Z(T!
![kjD+Ad2l"IfcXJi@PUb`MDb)VT8Gaf'KQ[%UUjB8rJIlBRp@DIbADIjR8LTKqH
$AmiU2Q[HSKh6`80@8C'D%KK,HB"1!jYa$mPZkX5Ncf!Hi4,2-A-h[phAP&+AIc)
e86CVap'k#qJ(HJ15TD6bDIkY+QhCejP3fAaiEarBblfX&C`cZ(BYeLR)![RKXB+
d%,DM!m$DJ)h(6m&bP%0U"88b`+rETQI9U[8'FMc82fP10lap`Aj92Tc!dN#-QR)
1Id![fap[fBdppSQH&a-j(6XG@d%CbHQ"0+`I2KFAE[R#%)N+P+I(G15pq%FV36)
U-ImPDeD`05LjPeNipQeM9rk),"imr28'0bNfN!$54VhrfkBe-9(2JmhrhLBKKpR
`B%dTEF0"VHBZ1r8CFSGH2(5E4$R5@XJ[mFMB*JReZh6LSIX3fE!kXmqml)bSYf0
8Gj@kFp4B'MP!Dq6SQX[#PN#TmH9MD8K!()Nj+LKS1Q#iSRDl0Ki43&A'VEY-CQ9
#Za"X@J[&`Y0TDm)rXhQ95caB%)q)Ae@23)"(EB4q4id,FV9$MPY'SN-cK3X0-Ib
)DiFVHKMK'b0-E-PEm9JUe'V1&1NYbbq+4M%e+KL,rbdPkUUdIIa$VCpX0B`XS4J
8+Vb,Xk"(*Dh#J+amF4CSk`$rXMU#ZfP8,#rZVHJH1FGI+S%I83FQfMX*6#Le,ES
"Y'VC&dAppDR0D5iB`j!![SkS8NEZSFKj2pa&9j!!CBPJ8YkP#LbG5%Bh',8kSM'
3!(ILPapI+pY!Vd-$ZJ3KlI3GMZR&-DK&8d48cfEb"&"CN!#ef1lHI("**Apd6di
1@p-KKGiI+KRAB1Q(SMc)"$VYmiL[VHLJ#&[d,('e2cE+UGd6I[VS`iLf9')MF@@
ZardII'9q3A-+@hQam-%J(LLBBEP)qSY+f6"mR"IJNdB*-!#&9VYNYhb"'%p&3m*
X'R11r$$fE-(-'8!e8#aFJ-QL'm3HV#&rP5dB"FC5Vhq968ka2Md#ZB4%ljSqc)m
[Q*Ql4L6D3IFjie6M0CN5@Y++[[L0mBUAph6@I+k(f0-kI&-mAr'3!!PFY3LUUM$
J432aQXdD8jHm1LNq+8fcR$44hfD!PU%`8dp(P-GTchq9[S-@N!#Ah"`&aqP[qkL
qH5r@8G9%[QCJKiPF'ULp*TA63dFCBEkq)-e2Q1*pK*!!YSe90U)5ZZhS`055hU2
#caS+br0!5HRqqUThE'@6#+NlG6(&YTh*U+2[q9XpqMqD4f!M34qcTX`6k@Q90FP
H9J%8lU690aEjZK1BQEM&L5Qd2p&ib!@K9C)J19Id[NbXLjDrkUIeb'mMJ!Q-F+N
A`!I-I+J2mcd+4(RLlf,,AkT#Z,lAH4*k)UK0EM3JCR"H)UhFYKG`P`b(rZb$RVT
J8EM5*%5@'K9jqc9pl&rP4IXJk"-b$R$lL9CA[HMbG'cTDD9GTBBkihfb#Afhk*c
,k"[rdVYQDeY[K,iZG-S#&YNqT86J2V$APpcUU)2MiKmMRcpL@MS#%BD!50k#[QE
2U41&4FBd8EQ2rdqlmY!jII16+I!YdXLmGrFbfKZ$QRj",I-$-c8D`A(T!,L5mXH
R,(2LbdX3`"MrR*PqNdR-R!-$JN1eZ`ADA"1+#Da9Z*fYIGj1bkll*[*T1R34,(`
U"&)M,!Ri%p+mmGj2AF*(PCPI)ca40A+X)Qbj'&#Lqdi`EJmAR@B+Gl!IiTMVVQ8
B&ca2XVLkD$BX6FB2QF-XK$(m'F@kf@9&ml8#E(A2A9"D(f*'YCZeb-ca"#ZAiEf
fdXJ4U""qCNSL`C%SUeSPjM6&@KTb6c&"Ub#cU&bmI4m&!efe0%8IXCQjPheUcjU
TqFa8)hjkXrZ*!dI6Q,EKi6YHc16ZN!#KpT42$(d",E`V+D&CbkGH-V0[lcLaUki
ZX-2SV@kVd[+ZFcE`%T`0JJMEU"bjXUY,efDMHmkJMaF5b@lL`+(HA&r4MGQ@MHq
aLq8G*FDZXqd#Eh,8$5T@,Mi3XKhr#S,q[CNN5HP"55,$H)&mGTDQKA22+d#!IMV
c$kZV3!'Yj)%h"CCQdHG90JjchamUT9D!l`GJaHQBm'N)drVMJh$5H$!jjH,V'*R
F(UD!b(hVjVSk1$A1AhRaQQS!L'AKq0AZNdm[C2jpI)q%S@-&UAML8pKYrCV2[QU
!8al`6#pXH#lJRba%I8cckLEG&p,)THifXPSJ+Ya5%LN2!mIr)Ik)$amk0cb`6H,
J!UdcC[bYmmm*qbbYh*bQRLM[*I8LYKY80Y2$k9MN!c'VhmLeBVjJ0iD`9pp8T9D
Vf`S1UGZKJ)YZRUaEAT)Lf,%2ji%*CQcq)JP(%am!I"K"3hC6QUHGBV#ENaRBAbl
$U5#lUb(JN!"RDj@ZE(pNp85cbC10VLfiJ@LH6kH8R2%PV+TX[[A`Q4Xf*qb1%"b
jb!'TX30D[fmPXFIj[FLkqHQqH$r01G[$rFVXF[ZZ+,(RZSB9-pDjVS$rKM94E05
1i9M-SI'@CIjVH)&4TICB3P,q"(fd%R-hB[8U6ZHX[`5kTXHa@V@ELLR`)XPi$U!
1f0+-qp@9J((hDH55aZ#iXKfpa3k#QJZh3m0X+PPF!(5bG0dAi'GihC!![(1Kk+"
DAFf0(-0"-"MD4-J&i-FVH[c0E"bf*m2`59lM8Q!QQfG)bM83QIF,-lNa#E@JE#'
ALZ-&LiJUbiLj,L@,B0D81Yq*G22UUa5NGE@Qpem&PiY6d(3"jqae*5MF@41-[F[
#cl2(Df&DiQd[Y@'ij0bU8ib2Ek2E4*I,kjRiSZjpACA8Xb[#Ip`Sr8XFQ5,bHmb
#2$+C"6i0!@18#rYGaUY3JmfZE3j81,kD4Z%pQ8-fAcrIh%,Y&MPd2"l[I`0,pb%
I3JmFX&-LYD#T0Ae-kEhfY9YC0eFJVYald2YZ)#qU`9*L18@JSRd"JBRaUCKI$*f
NpTEhh6#h1--XmPkb'@mD%-6$8m8e)*TX4jH$kK$LC`cjH2($2LT#RrYX#Y8-GA+
r#aVYX(j6"lad!LDVZUT3&RkY`D2)),'2li$ZHdfmLih-lH["'!A'A`q5Ma'FJ1&
M*rcGVQDGr"N!ee6SBm6Ne8`61R[![QbSi"84hrK,I3SIDcJkKaHHG3K-9"q(VXc
Q[Y*15rMBUH*8GUU+54c9+"ZSM8f)ed2$28(f%[48lNkJ&Y`F&U!BiIKLQH)JA&Y
38MZUhC8V%QA6`fiIbM0Ar!AAlERCqiQMGHai$Mr#Aq@VmN&GrmlU9TF+EkKrjV8
I(rHl-[JlpKkB4hQhJp@T)eQQBhB6+A02I*%Z1T!!N`EI98[M3H-6P(cYipM2`hG
5NlM&8ZR%Y%rS"4qXVH%,S!-5Jk$VVRlB@f)4XmY40Xq,AEJh*km%BhfNrQ`qdmc
IEc6T`@*"IrVKUlD%SRK6@N)P$+()JjJ9ei"(b-Z[Xh-0Y3rdrjq%aX,ihR00ZZc
F1&YLh24NLY,2d``4'Vr`J$*Da[3jjqM`)D''"NKZ1-pN(N[B)mIPEE1`k)+4QI@
dCL8JlNp*i$ISj5#UYE$3B2Q0J"amNd!iackTTpQQGBGi)([h`P6hZR2T@,Z4hb$
N[&K2fUp!dPcV0eJ$%IjBd))*DhI-41dHhNX+Dbe9IjGk9*i$*8!I5rG0%#b8JeE
r6&B!99A5KafbJq)A42Nlrrl2&R((KdQCAbL[B%i#4%C9!bGZ)AelHT@JP8HF6CF
H!Z9AI4fTCkp[N!!a6V8de&JM&[FAIS,PlC!!RcBb6-"4PHmaTEVkVkFrdTY8TNP
#QkS*hBcLkijd*c@F[ahSrll)E,ZLflap8VAT[Iil*Pf(0TYB8hiQM@iVliYEq1i
e69[$AGD0U(DMH4"M8%-6*M8$keNqa-X@i[lSpfR3)C!!G#V&N`$*f9S9YMKM'%N
IRc`DkKGNfZQTIPi+`h)#V"2&I!Cae62m`jK1MiaF`9YXJ88XMZ)636U3!*&!TJl
2RD6El2V"5Da@qk@kEFV654TRf92*h+JX+*N!@qcIqG(,3Rd,G,#JNm-&@@DASpa
Z39Y[06B2pjqJ0i4Ih*8KHf![adqN)'B+Q6qk-I`-i%E1!#p#LCV[k`#eerDrSH$
MSSc)p$RLJDUH,jXG+MkP5(LJp&BR,c%b09NRPAI+pYcik6$C6,Ia'e0p#c2lR+Y
,FRhTCEjD8Gj!ZJJq$l0Y(SkEmUah9&SHK"-AZHe$-%jZ`r!EdSfiic3-bRe-a5[
-ZjpKm)F3hpmk8`mCFE(8lpTPaXXCh`8Za@UhbZ2DIIAlPL2cqd,'#ar,TBM3"'B
"3hr2*q0JU%+Hhh'4qR`'UUPk$Z4)HRkA%$S#3$L[!FlGLqrdm,bM-8Ik-5!d"B+
ZS3U10qmN)ReYaIlrY&,1G8)%+dj0XVE[6RR9"MZ[C+S8+AJ%KNcJBQV[aU`$C-i
UHJJeD8,SXS&UNMQ'R8'mbBV,RXKQRQ%G0![c#F35SFimEJmX&b9#c$"dDNUY@T!
!09pdV8fb9RAr#4,R)4A-!,(k'aq9a6,)D8q`aiP4P*&M!`$lKS9L63P9m2pc(mD
qT(RhI`ekKmp%BQ(FFdkq*%ZZb60D'L[EX!ATJTdI%i3YYFZ*TFmUZB83bq['DTh
CTjJ4&0VlK2X'JcEGA,k@N!$QL"K4$aVBY(@eheiC)ci5$QY1!eY%PE'rKkf`')(
+%0`KXYV##H,&BlqqUYfUp[2MphG''kmb"(I`2q2G#DjTahCT3C`3Q[iU9LT$fMI
r"#0HIJkV@D6TFQP8Z-YF'jlAjbYml)6+#%,I@Y+21q@Tb1DHfBC%biLYfMVBpii
aPTd"2&LfqaPe0lRh5%Nc0m@3!)!4Zr%hAf)mC3@MM-m"C&-q%)jf(J2%JSVL2[S
aRGBXd['TeLI-V%KiGP9-YHp4`mX+02BZU-1XBPA5Dr@MHl5GSC&$'e&l6H,1ShU
0-AJr-"8B#C2V1)B&[Iq`NJHcH[YX'[N,!(HBi`HPUH3a$E#l[0YG$*HS#VM$)!G
pPbqR,jkaIJ!q&-)b24F25kf"N!#CK(4MJ*mkBA2e*+5J[M!&id,R2KAe56@8K!&
2!*PQU0%UF-mQC!Ybh)LcBDrl"3pLA"9,m4dN"%N"13TZIU@(BY,f(a-#3DN31dV
cY6AL%!b1lmXE2DD9L#"rN`U1YZjJ&+ARViKHJ"8m$$US,r1B)`2d#!EA,`m2H5m
p-$"8(JICdcd'Qj+i)23C%aSkJP9HC44DKfmflG",&#3'e52q+AhaUhV(*,Xl(A8
IbIR@"+M4!fRJRq$[b*m%Vc#XZEXL+AHHMDm"E`T-bq9E3VbMVliF5hhhC[#"VRm
k29E"f2lJ'$aG5&K*A3TdmSCK&l#H3KFFa['6fr+Z$bhR+)38IJUiq,$QIeVVm5f
ed4LUale#Y`F4Ii8B&QAJBZ*qQE,X+ECNGlQJQ(2VAf)30##kF`4B3(i,a5"Pa65
6(0jQGRG!E'!-VKa*Gj11rm+X`ULPM9KVLKZZSfBP!N$DJd3U0MDpfARH$0TBXKV
Y@T9BY)FqG!Z)0QhJA1(p!4YEjA3'Gj+0VEd3+82!0rE,M(+V*ar#X,CLN!$6UQF
RjaVcd4[U&C&dC5phe)kfXl50m54+ADK32&i4c!0@a*d,-VdCfl1leS@c8%m`eTR
d[,SSe,ABZEXpZPM(khL#*UUSPj&Hr'PqmXX,8Mr,b(VA`0)QAL[e#m1'RHi&-@"
XNL1LarLA-0qEZhG#58PqHjI+BYlCXKMeHN39M#K$qcU&Cp@Y@+$5!-X2TmU4#11
Hr$hZ1l$k6[&hfq3j1Fq2$AZ(hF'i@TU($UHrXb1$mCIB[)FlQ)NP@EK`0qQm[ZF
5b"-fBaqaIJ0-iLBZ+S3dVLC[D9e`I$LK*U8k'iK54P)#f$3[5[#-hJ(9*"kDh50
aH`Zll2k4&%*5bPLq1leE&KM(1#!ed"(B-JmP%6+D3Ze0Xc1Z%%Y&VC'5XJPT9"G
(3,1e'A2hdC[VM8`,54LhA@Vr$)+k19fqF+blR1fJqZ3H!-lB,hhd9bRP&ZIE5Ed
mB5pa1Y(F8Em33`Qcl9Ql8,Q0#H`%b(&b`jqX8T8ZAI-bNG"QJeTR6r5R`IbK*',
V4CQK3T`&[rb@pp3i[I%Cpd1(YVqGpiI4Zk(V%jV1%3N&i9$)Kr#Iq+I$#iHS(j9
10T)TPAA636b%fX'3!&STclE(9U9*Ul89+)NmSe++%5(T`!jLe0NdN!#e3R2bppV
ai+L8&KhJ4RIhr[(+jlVNTf!D&'XH[LVN"9(m'3*i,h$-Ai31cI##2IZS!IJS4%H
"qR-R@DFeG8mLVjTdmA4$5@+,Y%aJ5&'@ik`!5rK@lImNSbZ*X3(`D0(BQM423DT
,pUm%6bBCMb(64N1DV*'q@KVkDjN4!lLe"3f+MDUc'dfqBcRj18+mpcS16lFrq#b
,6d0iJ)$f5Z,Ac%crdRf83MQ%@1I&1kaFa-,d9&&$FfiBiT[%Kl[BfZ(+IkcV5&T
,b$BMc*NTCEAr(bb(Pa3EM&NXe!h+)Q"lV0,C@%FK$-&Lb@,1f2#adGkpmKm(JQa
!Sp`fK4",33lNFD1LEq6&M@b9Pl9,,A*"CH$8f[q`dk5XXQ@Y#",1IG1pCT2R*A3
3d'"),#-*Uq#Gk(e*GJ2`ZdPAHJ8bhQ+-`,Q"aZ!m1h5BE%4)qh5d6VDFL&JJMa-
I5VX*eld'pC+CVD*!a$ZB,$iL!4dfERULdR`J39(p4mRLb+JQ$EQj-RYqL1JiU$'
diYb"JcSR3FFZ1$[RA$F#2-6-`2%B!-BQZFL+9fhqT(#jDem"R&!30r'6*4d,NIr
@PDTYX2XfIkPM9@[jc#kaJ4XKFEAE'Ha[KT@3!,qSBG(dr11U2%%J5jApr"b)U5[
ZAGNY0(h-c&bPj2)0$G0`i0c@3r,Uj6JP4j6jbJAUa2k0R*lZIR2Z8Er8J@ZZ5!'
ijC(KS[fD&bR4q*A51#6["%-+0Q,@jR6Sa$ddh#QU3J5(*LbAHA,'1pJc[05l-H"
rcFbr!SbMAX3-JEFciS4KeR#CI,lfN!#cMd@*Gqi!8NQ!kVCc#JfKY!AfYikN!`2
E@#9iS1+SbC+HE-)a3+&`Dh`h($FE`Q$EmX9A3"MD3*BiJXSF)RI#MT(2DaMYcX&
8R3XZ*V&BTN3F#p[I`$NcHN$Rq9q!jeF4[XP(0f'--(*,SV`U3hcF%0aILYa1J84
C)dJKrkJ`q!hf)h$r$EClI!GqINebc9q9ciMYdQC'@f9P81-Ud+QfREYA@5c5Y9!
P4'+@BNUY'[SDZXV$44N)3V*PhQ*d&lF-qC*N(PBP#VJK&haT,lRjNJCL+6H+eUK
)M))"hriqirb'J"53!"jP%+#3!)PTI8KLHb&qcbp3Rhf565K6`j&jCY-h+GG#V-d
e6kUQAM-B6KjeY,Th+0AD+@RVQ3e2G[cd(2k+#E)LceE(qh+r,03$T4TE#ETdLj!
!LF!i4l#pk$A@k4B!hB6UEYYda"!UdYM"D(3h3P[2&lEZaM+i[&@1P)qkJp%!d5p
X#G#dTC6I---h0cbJT'h0&cfM&ffkiDYd'1K3AqS5i"H1!i,F&-kAGJXk+'&5T5c
pYFP-8U%[Q031blD6#SIi"3Qe05VM(pb#VNdiQ!rch"q#A@ZAkejJNq+pCeATClE
&U-[RGr+B`pbmAZK+LD(FL6racbN8acX$$AJ3%6RJhH!FA&[Jd`a#he8m52X'h$p
%meK3cBfFVLT9@)E"VF8f,JEIdZKd&mL)`40BDDXdA+PT6GE2P4U2JEkp-U&,S2L
fmalhYpGY#eZfNb(mUZ(McU45YCcjb*UJ4i,Ak"`5LL@a`QqK@YeY*qlLGZpU(j3
h--ThDDG9"VMcc8HY@XZJj!pDqD4L(!Ir3XcZKEZJq)jT3H8U@8'pMFHJ9R9+3X#
3!!)VN@4#4f9j&3j9i893!%lm89M(,I)X-dhHF4Z@''KZ'kVCLFR-[qQ[!clRIVP
a*EPj(ZVh`-a#Aa(qDHGCT*-9RV[Rb`[B"f@3!#(P`6JV'L)r[36&U&(Y,Id$GbZ
*NeSK$&-V643Cr&E@L0KVEaRq&qdAik1!aDIQMqA8(mQb#1+h*4ifVE6I+3rN5i3
*31@mk3H0+ll*K1YD$kE@iY(bcGeD11Z0BSFY$TTh$#YM4+GhTPjYNq1#0brZJ9R
NkXMFLNfBb*8VHF@4*X16mEac#cYI+AGT8'IlV"BF1KjQe"rIUQ0h,5jm8&RG`%1
X$S"F!65SVPA-TLD6J)15RdP19FPD!N9lq&9(,bS*r$hY3FZch#'`leIB5k40dZ0
e6H8Xi2[#8rk5SL*U9*9%-QF*`J3mj@GSS[G3'6-(I!GRBP43PNENi0`+i2)b-Y%
HUl8GdDXI#Zk!hIT$Km8Em@qUebifM6C%CC0BpXZrqQNaK$T9Sb2@CBIrZD(p%(Z
p"ClZ5#`Qe*,l#5rCI6@'QKRG"A2TH9&8#UN'J4&hd-CNc)HE16KdJ%)#e(DRaCN
X@k()"(U9hc9,a'Y$U)9Qj%6[E+[elNdMXCGL3qqh+m#,$4k"hQ2k3&ZALC1LFdV
dIK8P'BfF"AZ+8e!Sc[83Jd@[LZ&@[Y8@F[c)5mlN(ACL9E4pBm%IZ43E&jYZGZG
UB!#L5@XdbYLe'($dd,00)5Vq,4KG#lk2@VNc(0%fBJGVKHi*a,i2jjI`(*8p-Rh
-6"Z2cm((BH3RSMifkre+c9IbqNcI3JZJCI4D[X`83fILS0!1e&r2i28Q,)kT5F`
X6Te2AZX9!4r-A*a&EBi`Dd5DVIjfaP()P0CETM`B@")X%bB2+iHeLGU!#SNe)GD
(i&dNrI**e,C"QV5b6r[28d-1&-MVrU4)SEXU0E9BIQB%M4)pI6i#(Vkk28I36@N
i6V$2G3,XfXB*a&5BJMc!+Gl)FFr4NR15ChQ'Dhh9j$M(abB@-r8)aIc0k4rE#EL
%iSD",iCpij&F($hhl,,qNBLcdBdXG0Dq,hd5f6G%1,C$0D[Qc+cj(mfj9Hr"!TE
-0@pFLaPK+Gk64&Qj4F*Lblbelcr'raI9hjK'I5IZi6K*-Z,'MqJ&+M!U2$FqVV0
mk5a$kX)DpALdiK3FaUY9,2hK!"M,!BNB6C'aLQU+VG16@jJEbc4Xr9VP)DfL!*,
QNBj6PLdaXiAT*pap)K-hZVdjUJ$BN6FM,rdFK0VLP4m`dN4Hl)l`KSFGAFKiS*c
3JlKMU&+9DRe#IJ,q8f9k%j!!M40'[H0k36)6*M'qUGfQ&'@1RkMJ1EKj4`NT-Kq
hAL4*+Gc!$ZiReVA6r4HJSq#e!`dd5lj"L&QMS#q@hjeKH5M!&![AeTDJlMSQSX-
fVK3q9@MKS2RZkM`91`PLrT1"J+5Rq%P6Pc[P2(YGYK0(f8K9$0E)MNkjUNfXBQ@
+2@,U&N13!&9-$[i0Akfc`FLpLpJjI#ZleCU1#5((XQR`a0e1pKhJ!RE(NVMZ$2(
GF"i9U4X"hf"qhSkippGe5N-SQ#dK1MFLr`TUr*CE8FZQr8LR*f[-e1LZ!rLY,bQ
3!%Q`QP[1LKp+56$5h5[Z)[6@4a`0@$rI2Y+hj9I(@KIJBZm#@q4@6)6RqZ'-Y0+
4l[0+M69+98daIS1%eRk'5jDrp9k%Zelfa"KY*5TQ!C9'rR%K[ML"J*9h'R+81*E
JdBAJ04X-lILX[iK`FlfTHN*+UCE9X,4DdlGU)hU@`lFK*r+#EZIN"46lTK(X6rN
ehlT3"8kLS'LYLTAdNRLaRNL2p','mDrq4h1r&+-8IL1(88*"K,`0q-riejEe#[c
NE5iQ&F%*bP"Hk'31H-F@6cE1i!VT-Jj#ikYT&Iph*kPRC$dr9@%Qhhd$Q'3Y1-Q
E[B#qib@2ppCl)H6CNk[VFYf*"Ec#,%fYJ*ZNhT@'9bC6erGF,2&5+9*hA&Xq(S5
Apha*VQPHr3fbfS*2"!(d@6#UkCC1NcA0QbED&rPr1q4%-[AhG!Qp1,mi5QX9Ha9
TGq,jKIQE%VX)j,PU9!0JrQLC"`(&HQ,NKfJ`A-3TrVY,$h`VV&B`H%%Q&mR)i6%
r)4&eJdC6l)@V1PSi-ZbNq9`)UHY*"2r%da[pV5bmqB'!3FT#MFlVMA`,2[5PBi%
U2QG0@M#f$1pr!&YXVKbYa[-A(2j(3QDD+H#1[mQrd($J*XfQRQG5KhbXmXaPI8M
`4(&i(jMZU9eGB184%(9#dLQ)p5UrK"9[YV!fB50hl3EHfpXDSqQZ0'Z+Je!Zh+R
caVY6%`U+c5E4Kq2Q$"h#FHVH@hD$2X'kEmrFf9Vf*$Gp!qi#QC!!,5)@5*5diVJ
(rIPr1bCS1rrYiM4XU(B[RQZY['r)-RT9i[f#JdU@!DhbSQ1J)eK"L%AFmK[$(qT
bQ@%BVmFTTEcppbUVh,0akc9ci!*1a*&qQ9B$hhA$FS,)-M9Kh&#jB)Lj@dFQ[8f
Q#V)`J3IM0IrXJL(K#[0r8j8Y6b@*aIPqiMBT[k[kiG[CV#Z9UrEM9*9rcG*"he)
da5rR@SQKMK6XHjMQ$[T'PS3b'63)rdSB!f1r3C+eb(cEZH8QSM"r#cZ41#'-H29
Xk6rMSQXF@m23&S%)jAm&P`Ze8qp2cj!!@f[Hp`1C%lDp0+ifbFb1Xi"A&5U5J`+
[+k25ALR,QbJ5Ce+Zp5--kRfq!"Rb"`Qer2+dX"cLA$cH"9J5rr0"fmHT3[mPd,I
B5+Tr6`ji8'8#j[9jjNK(`$VB*8b4U44Qp&AP"d@NJ!,T8aJ3'6JejCGELF2`2AB
*jLfBrD$TXG)*(cNqm,AabPB8K&!#)Gbq3S0*'KpDE5$a@i#pmBR(N[bHRL9mi)#
%*P[N,Y%K+QTT*aU3!%b4A"(b!EAlG'p"*@%3DelVpFLJb)UKDrHkMUARZIR$0&l
EUP*iJ+bN[FNj$r"kGl5X1'GSKkY0q3"!VP#4k#Rkd!-5LY9Xe5V"YpV)6jVT1*r
UBKi4'amALQUr@!rPE)Fq1h*D5M$UM$0#5#RNKaH3!)'2irfpT4!RTiP#jEkem#K
@9M'NYpNSLUM6#0hhj350P6aJ-Nf6H""!1h2)P@+Khqq!%R9MFNAS%PAXFpRRmFe
e-X[Lb&dfQIUCK19L5h**mkE-6A1+AQ$RblEG4D4mVp@[TH8&l"ciE*ImqcAF0kL
kc%)L[@hL,Cq0%pAYVDRZKUAV8-`9VUbp@d0di"+5bqD+KQ1%LIDm1(brmVTIZ2%
&V$iU+6FG4fb"i@[hb`9J)IfGclBSK2SdL(LIXFTSdNGe&D,1Y!)Rf0IbV!,QHPV
m#XH$3SkeR5maHC8P&A3(r%mh%+!+[T@SKl(Ma'f#-Y3-9Eq`D-53!%+IMVNU6bG
Bfqr(eTe6')6dhbaZM!T4"q!,i%R+94*dK`K2[2&q8-Dd&Up28!fVmpiC))I3SHp
4eMI)qmD2c*08VD4c#B$%ZIFi8$H,42Va)&#jbp`-4cSQ3fh'f0D8A8k8$i$QGHj
!(Z3A[S#3!"UK28'3!)#pSeS@C2S1Y8E@PjN&'hEfq*8%RiAN20e2dFc"2U!hSCm
[cqF*)3GUB-26#`-#a%IB,3!fBFbHRjr6'8E'0169-mFPFqrH5ZklXpiX26BeDQQ
UTUSiXp$eR-b2(3`qbNq+9IbqrACc[j30ZIeqBX2',+$"pA,R(@-X05cSC!PS,"@
QI[@V3r%I&BGVEKdddNpCE`k'll[HejQ)jeH@$%2e$)NY[9-9jU1#2m9rkq6UIS,
DE"iA[#fFS(X4P[k68m2p`!Ebk5!f4pL$YSb0BK&qQpNbH&$p0Tfl(iS9,c%3f[I
khMmTiP)pccJ(ZLIDT@kdD(a!1Q(+2Jm$HS2`*H#(r-1kM,U!!'N*5lcDe-i&8QJ
e$&HMZYVp+i8,c"8-LMc[+"r-*[ZT2Q$'JIP'qHKcT[qT[VCL*209Y+FlNZm`k-,
h&(0m34!%Sb4*ZKB)0M-IF(,RUA@[&l(@Hr)2CL3*3q34J3QTaV`H-(8Le"'qB5l
'C@VlD0-UYZL4bGS@fU%1(QK'LJMH,d+QCk3r9pb&PDMH)8)d-FZ%TPj0bQ+"hNT
112E45Jj1,Y6*9IVLJJ-8NiFZda+pjL('e6*IcFmFGB`6!!Eq+N($I+iCN!!NRSH
1KNb'eH4b4[&Ch99AAb6NQJ@V@5daFFrqHI#G(icGlCiQ0F-DCAE"6YdAc8Xq&cZ
m@TFPR`"XFc[+#KK01qK!`RD)Li,[!hGG5A+Bc2l9aQmJ5N`VP(,)K-T5+IkY0hm
2c"e8Y)Gr8He8NFLm!0+Z%TdrAY(L)[B4,-6UTaK#5i'%)8!bM6*c&)rfc&$@jEA
#K'GC4'qJNk&R-mGfLS[0dBK(aJPHhCTpQ"p,Fb2Q0@k*@[m0L6*qIaIkI'Y9V5T
E4Q8[i46)8RfJ"Q$ZXLbEeIa(X)hA9VN06R+2dTHGH1@AVdj*cTG$@"+!SqrFQZ'
TNYqP61N8B)Zr6ZV'lZ2E#cG%0lahaMiN9bfb0m$[9-`H9)(RF4$Z(TfTF#S-SLk
lGaGm&NIX"jY6bEVrj82ZK(@cpX1hAJ&BMd8cZX4'IN$X&-hFe[GhGQb!H,!YrX(
EY$"YadD*HLN6N!#R,[4p4B&!Ej2d%IS0+kFCp8!dr*Tcjj2a8(`jF'&f5l!!p&T
1pE2GAkd2(Ej)r1iX**jL$cVrTS$DV6iASiTKAE3KZdKDhXp9i#1pPUU*YK@r,UI
V"ACdfF@@K*3CCrCT,#Y,,Y"qBVM$-Xe,5#k"%56Hm8Dm4$"G#qaVp1R+TH1`JYP
b'9CVT**f-0ZC9RlQilLTJ[6rEAi+6P*a4%"VkBCpB,3PCpkG5dq'5Q*HZ+,5JcK
E@DA[P'iZ3H!flG*ZEeZ#mQ$J03maie%BS8I-Nr!4$F(PMFLm%M1Y5lDPdpV8Ld(
1YXXeS,ZeMjf%ErYSr'RDBfZBfr!jVVjQ`iITUK@!qe&4VmqCjjRfaql%PUAYTYD
j,UXHTdI(6dClG9U8A46h"l253Xp&iMFAAQPQDBMrHXHX)4Br,ZISB,9kC2aD&bQ
r`BPYFS%#j"0lM)q+q$DXr%qfB0b@Eb4EDT!!&B`*lm`RjqkUV01rVLf9!pZ50f*
6iLa5G8iXJTIA*5!*Q@BEDGbSPE@U#3EE*K`pJ0#9(Sh&Vm$mh,lm8NE"rbbSYBZ
8XXrf45GQL*B6VL`iH6B63A!0&aQceqNcK@a0c'Y8Lip8@jY)&$!dV[Z@ZM8aRek
C"p`0eLlQ+bcAhT3l%L8+XEV2S&S"BpJYd3FJpeMmjeAe1)Tq"+me,KkhY-8$i3-
!((r*hMHqmQmGVREFVHFFJUkU`QdC6Si*"jN5rfl"+B'D%8*2rEk!IBM0aR4Mj0m
MR%6kIBicSN0Ejp`J)5qABV$6MI-h-FKbjH#Tb344Cr)CfFU@Rk0DG0dfcL%5hCB
iG%6B68Y+0E!EU+k@"leTB[Uj8aI2E!`6YXdT"+52maG5R5UYGd+r2abk%HGX9"5
)Ze!mFZfXPK*0QH[Mlhhh)ELrF-pVhEpXYdkpD!NMk#90f4!5a9eEcj[0d(e0EaM
e3444aleX%2khr0"4E(!KEC!!*XR,0mK"U6M1-)Er-3)qr1KA$E&9icmb9c(TCJm
XrP9eP*%`$0ll2PIbE[SQ))kCQB2Rad*TX6LR5H*X`lUCCU'-6+RpaNb$1)NFfdZ
5M!FA0&P"[V6dN[B,jMD+AeJrciPlaXe["41[jAXjASQ+Hbad+U@k[XhH"$@[lKb
#m*fX@B32&2'1Bp`Kl8N96DXP1i5@FAR2!rH'I`6Ykk6RH,c9UUG$b@Nq@1CkQJ-
Z`M,9iLJdFlfDSmBrQ3YfEIV8&XXa`CiRAR*-IV5US@`V6dr"K9mr#16#-V2MTCD
"aLAH&Kf"-d4QJfqMGEd41qP5PCEK@P*[jCFVJq*aPZLE)k%GT[1`GcA85XCp1#-
*lD"*1*ZP6(IC%[QSdTJ6TpMM[a4hf&@ZkY,KF0L3!&qri&*3FP3TTkUp9$!TAdN
**j)9hJi)G$lrR&hHr,LMV6F@G0VFJf)q`LTC'da+0lp2bc6eQUIG6'(F3i0+ALT
l+&8[kNpe#ke%UkGiIT9M[e"dRrpDY01`DF8fhaT@")UGrTLYa14kRGl,SDDm[jC
$PE&F#"1EID'HMYa"4HfcL'&QVlMpQ6[p@`l5RB"&QKkRJj8(X'CZTL[K5Sp#-8d
C"M+-2Ek`mR)'9SA-l5"3(pV4K)Epi5Z9(-A[YB5(URleH-S+YPZbHM6QajNe`AR
!S9YcZ9qJV#dhMT9b4+#Nm`"'Z+m09,*#$RCUP3ce,`Y#GX[p3U!Clr*"MJ&h)N(
T$#8m*pmQ6ZFeR-G@iH"39K@k$VFN0CSHRFIaBpEP6Y"cGRF[3'Ne`JEI2ed+)cS
G'M`f%KQ9[N!XM$E9rH[k,ph4'P)NEQ,,1*Hk(`SVdS221V!U@VFda*3B(pIaVlC
+"lHqc"%IFE0L,m3qDE4ijqiX["N`B*!!YiBapmL#9DZF6r!hC!G+9-lihUdYr)Q
fq!GjH*lh(3'&h"E(&QNNUr'GehP)%TZNGfIR0+l6GIHTdE2hC'k3!'CibpYPT,k
663JS8'M"[r+Um2ml1Fc6LphiB*!!l%PCIZ,rBI'MmliBC*X(Z*9[Q%TJU0)5(R)
LDkK'Sa$6I*BBF4IArRQk"XFm1)23B2C1!,h9fNjMA3-$jfENPDha![1MZE-KZ[B
dAK*&&pUJ%l[Y+C6Ea@43eFRaP,+iP3NBhap-`@8X4XGeT!(YCiYe@G'R[I(qKf@
jAAJSZrR4l"hb+0IdL62qdEUidTHTZ@ac"Ip'XTBB3hMN*dIHce'M,"GIUl9Ul[Y
mr02B9Xch6'BrdAZe0bbQ2hpqKYV3XX9Qhq[RdPd9lh&J#8b(U9#r,,5RjCjmBUX
iHS@R@ha1KGQb%*!!`8&&T'58j$Jr,b+L`hY,)FF64#0E2N*rD[Bm-FkcY@[BY2J
-'0$IPc[RM4I')I8$YcI!9ZqN6Q*hi2fIY@BF(A2)ULS6ad9`k,SXdVIUVaAcZJq
HJ-A,QXKaL`MG4LZC!NR!e`mJ48YY`$)BqS24KRk1ifrmGP+kjd"X3GMY[l0S(Yc
R#L2UUcC#jJVX`C5!5C(p`AZD&!N`Bi&$@fiGC2Vm#(p+EPbp%Qa3jQE0emr)5BZ
bYdrT@Y2c8@qZbcTQ(S,6QEE-0M[q16C@93CNDCXK(@DHIM(mqG&!1@l9ia6-B6`
&C,f6aFT0BR9JrrL-3VIT!-,IG!NTfhQr%FD)BQAk)d"#@'mbJA-N18GU6I*clBX
H)*Pm+dXaE3lkibaI@!GjAh3!r2iG,BbfVZfk5E(qeiN8V`bq%aB'FPHkfGI"R0X
3RB(YXi,U+61jr+4!PhLJV`cA,1F8iPU[BMe1JIiprS6PRE2[NGdmArj-0md9qCH
#`[(d[Nad!ramG%Rm1Xk,c%qkm2mAN6RFfcJ6&c%[Ej-(h!'B55,H1)Q!b5*chaq
,CR+qVF&5ZV3ZRa(D-dkZX$ERaHZNT&D!IEL$A[FUP*kc2dBkj)-,$FZhbUEm0Si
dZXPY,VAe!2)kK%!I+KQfpfN3kh$kH$[RVNYf8h@S(@@M[3Q8(+6L@6bm1"BCA8R
4`lVArX(lY)fCQA&PVF2q%`2l1c1IDkpc'#f-*RZV!kJM4iZdH0#NF#c!JJYcpj+
Vdl!lqH"r)DPcVLaLFeMpZlBFqXjYFSAZZ#r`Kk@l`r%J1&e'0RJ@N`Idf@fmfA1
q"b#8qA#d5k!kTd8I%MTeSKHS#5JMAcp6$@9L-McqI9ZIEhk[SIZbL52Cp'r"Eil
Zm&F$,"!qSd#ET1D0b0AZl#r%Ge+458R*,HKE%S$SHLXMSI3UC&2,IMd*9HqXJ!*
A%I@T2P*ar!p#6#eAc0EmT+B&J4!&FS86U-P%TQ%J20He+5TXiT+C4jHcX2`TmYk
YG(40c(98RDEN+N$eb9[Verh2D`6BAp2mQ#TLa(2!K$iCCAp%dkV0T0SQD1PKZLr
r(lh&N!$qd6%(j"3p9m-#MIUpUPhbhCJciKIq1#HTi0V'NC`GDCqb$C2X[G,LD"(
eX2FMV1jrY'#l*#q@0HdVcK1q1N!3A)1BUCJq2kV1i#%he0p9eH&(Ve3VB[YG['U
c0k$%iH9IGc'EYd[H#%&J&B[h`lB%lNmR&`+fT+d!SLBV"SU!VEC1R$!-ZE)5X*H
!jHGVkbpepEA+ZHTJQH-q[0a*%c'ME9kpkhlr3`*VN!"mXl#TT`il)YBp`bB@(26
[(QkbNdF`"@qjVi!"S'`X0[9"&91JeYG3%&KdZBVjT"M0fK-a,8he+D045eLpJ,X
dYYeaZL&P[NT%8I[2m9E3p8!@kM`*,5r[rdKRb4i[Ci0a"K-%f+8&(F'kYP%m++N
"&&AEIYYDfqNhI9(fXX%a&XbEkQ5),h4Z"hceHhHDaeLJd"MHIakT59`)rJIS$fI
jTUFpUQUQCm&e+%pIUH,Rd6'*00($K`9Mr+!qqaX&['X0rh2X4cGIqM3R1+8Dec9
5-!Rq-Dc$b8$Jb,00'GBVp0@@0E0mh'GY#Df(ThM"mU38IX1+&Q!@#4J2RPB8L9U
bGrPc!K)`9UI['3Y'@9A$83aQJ#!,jikMMmZ,TU`()d&aC8,[VkG,TBhJDGYJepY
&1@#er042Y@#XV+dM*`5pq3I3BAPJ@*ekdVX#04r*Y9e8qpEiG0[f`9U,r!0fL#p
EaM6N(hkleadR9G13!1QYV(VfITK3QLa"-pX%NH0jVFL',LjD(R#kZ('X@*p'dH$
JhUF&hEM,M6QJkVbSYPEq-9V0[()`iY&#ZBqk)N@KT%DAEU$*Vc*-mH*45,F",mM
XT)0bj$c4ALB[*&fJfSIBHm1$FF6d"9Y91aMpUFlQ$qeA)UNYAq@Y5lNF"Lq-KlK
LFaaqh&[a3)Y&#2f-M*QLam5Vqrmi`cb`'`FHbaY2P'*Nfp&,6&3)I'M%4)-*)Gm
#T!)3`DI%V&$FI0&PYAUIM*AHh!%V*#VX"DiCr@3i31038I'J)$#DU)D*09'VArI
TAAB02mf,Y*LKaUkNpBlh&KG5ACl5TaIrM[c6GUVhpHQ3!-,&EKULTRiI#h+JBEI
iNpU93(aipk2ADH+G6#QIiGpI0-5d(K422*FXhIb9d#*L%AS@6r$3+P-@ISTGeaT
"HY""bJ`$32r"a8QNmm(04iYPJqT@cc!H3E1Uh-p"8C8BBBkjRh,($pE2hRA3k1J
ihdJ'p418DMl"(8QhN!"2#M@j9-ebmQLi'Q8$I$3TS+b[9[rPcReP3AM*!ec%#J2
5f"G(LY5E6GbBHfm,8D`-K"EjKRElUL(aBIK33di#kPUA4Rdh9!q)8jZ1XTfKZSc
bA)[+))Sk+@ZUJ%C`Khj$!iN(FZB`%RMAQb*BGQ,+4U(!6&IcH'p+33Ae$G)IG@)
h`8djk`Y#d[U4CV3ERpM2cmaqrPr`DEi&&cp@VmPd1mQB*XHSML#!pBJ)T$NVPGY
C[HRPCY+lI#fm'DN0)AAQYPha&L53!14b56fC,1R,9Ei'r#Q5A,`RbKHmXXj'P`6
K)hfacICfNX9#+IGDF6$YTMUFHZV1@(bh6'9)Cra4SQ5E5rS4+jU[iIrY1Cj1c[r
A2Cjm+V61k(+#Aj61cFSJGdP*pCpJFTcSEbbH0iL9X3@"aAL*CVfHri9M#dJP!8&
d[HHRK0"p0(Cb&Kci[e*VV3"c`[c`b+*pZlZbiA-q(0IALXE[$VhE8F"-Rel%!JF
0$5PCq54d(%Ja3Y64lV8KqK(E-Q5H0(UI,M)QRJF1)Hj@A,mm0hf#FI8+qr*0Va6
F%42Lk42$(9"`&cIND$%`GNHk*#4p(#NqiU4VMiQ@D2S30MLA(S8UT'G4[&`RH'h
Y%lUmqcGi0RTBAI!5Hrri$LPE2mK@qRiD*r[j3a!C&&R"l0Z8lB$j!"h*+*5951R
S*K)pl0e0fkrjZ%+"FFc2aQkh(b+m-*MMh(!(SmJ18@%4*XF[RJ0Lc,U8-8fNVLP
Z*feZ4GIBLaXD2Hk*48ZfJD(-HU3JZkVfIfp"-52pF%051HfLdjB'hMD"Jmk-"S8
m'YU!r2h(`BI%S`QaPT@%CK"U4f8AQ,hm3HCT1')0HbV"1M(Ab,$`Nblekefe6`P
+8@TCYLAhlJ02LJJ%mZPc!iXp3E$,0jh0Uj+YbZD96cDCNFGL3dJ[+1V(3rrP6U#
!k"m2I+"i!KPJJPcqkKL8fmf!Zp(&RJ@I#X%8ZH3$1(8PT[SJDll3QA4")MLjR4'
BP2+CGb2(JG+k#k#M'CrUC(p@[2+A*QG)f5(`*djR0D,3cCMkfIFE&,Gd)Pa0i&B
`If$XE[9%`iYc+5CT09LIUAS5KLqNj162Z3rL#lFfHr`l8EIPfL9+P+VNbB'BdIh
14qL"I!-CPcbT(ICV8r"HF0ZhcXM"1#8ET5mF&5d*HM$p8EMT0qTb5QS4(C'6-h3
G45T260RT2aA"AF2a6XCp8Q+X4BJ@NEm8d@L,!ZDe+d`m#G0+A`qXc-iGESA%&mQ
CrJRjF[l4YJ&k&h9(F04LK3CMYV0`[!XEImL6Rc[&mCX6TT!!r("GC8)4G9&V2V,
qr'D52KU0I3q`HPkl0dc)--!Rp)kMQj2Vd5FRY"rdY!h,kk9Hc*1Z(r&V+B4Ba6d
e9DPJQCfi@!F8+!['[b*q)D4i,9"LBpaX!r+*ajlYNXZj`5LXN!$Pc$S+2[cH@pM
!!ZrXY@[[3pLbACP0[mjd!5S,R6Ij(MKdKdN&DJ5d[!D6!M(&$"8ZA([pCekFV5J
BEcmlX*Ie0-j+'4VJLUZA3@3k1da[%`F"@KYpD[Y5aPapMJlS06K5RP@!-Uq'aiB
3cGJBG%p*1&9%D%lK+'8GQ!aDmJa+MU$9%*YJpl@(9ZY*(XefQ&A8-+K[dEZV#3P
XmaHX1hc$U3(&h)cmA',(GDc*e&"#lG$4T8)$ZkdiP9i@Zr8B(5'eB-$"C*mQGLb
XFVL3!#'G'TRD,MrrI-p*l@!rpBfmRKqRbRHkJ(0l-PD3!-GUSV9pcr55fLXCJV"
aAq$1()2`8BYI`@b@UpSSMhYP-6)*-bJIDRGr4T391&PeK(&XDHi*l1V#J$B(a5&
66IbQIANikDm1p4cQMJ(GlHla9`L98($5JY5mqQQeU'C$am1AlRqc3hS1i-M1*I-
@4(Gi!f+qV`iL4CCq43F8cjll6B$9,e+JF5Fqhh``&V59*D"C(hhjIPhEe5L$F4i
S)G15*mDfjV*((H'C2G`(9DH*q4@I-&aeZR8EhI30,PXbpDj00rA$2`RbiGY&NQ8
8i&mS(MQr&#,T0$(bQ`d-A9UXqAA)ma5q,Le-c4)IQJrK%9eMZ8Km!qXKN!$jZY9
P@IGe$9$C0CJ`,lMB-(clpefNbi2b*%['$4Bh83#C*9fj3"N9r9@&I)EM%r5C6A)
L%Cm[8CXej[U0r"h,35X"j*0F+P)%@3RbpPajIJl$q&a89fYi#H@lE*qFQA)ipP-
FQK))[6IZHr5X"8G-V6q#,""KLMJ&&cf9"F1V2,[-qEU9XRIcHNUYjCRrYi0eM[l
NI%&+'@CI"N`,f08lfpqc+9#ek$RUiAk2&Lp#ljGmacr&$H3292FHZ1a'Gk500aq
(-4m84P@Y&l5Q-#NMIUrZqXl+kN)["UDEKG,Slhd&8fS[h5I%Zf(iKE3"ik6lN!$
iaFH(N!!Rpa)3B@!38NTlq%GAIX&aNDJHM4)1L!PB(V5+Ic9GQ-6cP5%Tr'c'Kr!
BrRP#q%*%iU-,055X9GchY&5SfKUAqi`8%d(*8ZklUM,+88QA``c4(0SM+T!!&&0
pc)QrZ90ipNHf`mmQ&fN&EpDKh3fM5#fXQ$8,iK!8G("G[i9fRYQSraUmh3*T82j
-FiqL*JQD3pNck`Si[+b,Vb[6Z+QcXc!,2HRdd*(f[k)Q0S*akF#+U!QF0d(XM(E
-JCM,DM[#A@'fXipI6,5RL%`qVLT@RK[JcQ9aaNc[BZcBc`R)iC!!EIE55#(ai(A
b*KdfV#mEjC+r"pR6#MiIp8$m9D`brqC1!*Y60&%M4DMS+[*@$i$PCa3Tb6iIjpe
9h4$Idcf9"m5cIr5jc#`&Pi5ClD8beYJ'DY&`,2Q#pJT#%1k[44L9fSk1+4F9+0S
69Z)'4QpBMGP3I98AU$d[QTrCQCbe"h-hBa%KR4HT'11T"4%AAZmfVEYF0HBK+$j
+,JGhbb6b2hZBPA305K4p%T`rq6m+@!G4JI`MUh1(PX8('Ye(%ampH%S9-U6FmXT
bK#FP0mB35j@,5+CCb"'9lJ2m+(DDY43&0j!!eiJjrkCaEr@ee(H$dMVhFGhE@-H
aJ(Ym5#XQ'rBeE8(AF65ZqT6k9me$MB@&"haJAFEhDClHCK`e%liK1%*$3S$Zh(K
lm[IeG*FBlee4mRi&pBbZP@@+LUK`86-pA8aqClTF!"S8@'@kQmF"MSqC+AH,)",
ffS[I"(D0De)M,hG"c8D*+LB$(GFk,qlIUV6J+QeSmBK*H)Q+CT0c8qI,d#km*Ei
mJBpJM+'mlS&JUJqN-b[,%'*r8-1Ld'jB#+0jc3#`*IZDS1$(5aJ*I0+5UYil*-4
c$"+NYC-$BRpKi5&fB8#S1TVChi0L"HY3DB$L,p&qca[2,Lr@[4JN@FX%!FrjjE[
!rQ8V+5i#aZd(ZRGDJ)9r#P,'0Qk6VM9TfL*XG8ZS)8%+c-&58H")3BUJL''8,+[
Th(!U+FUD%G+T2,NiGB6dLKkiX@dAA+X#SEpq()DQ35EhpGD`-a0pM$#Hh'4@Xep
Z(idN(D2i@P8Y-Tk(0L`h"ELP!qQjFGl6AE[qa)GqqMZp"'rpN!#Qq9C(IifkJe%
GG[H",'9(Q0%mL!@[pk&qc4)+2"`FM11Y&dbGpm!XIR,D$jVX'#i&pVPP@"lE4am
l,)K(r*&*H9EMlYPJ9mj"V!dpi,8h,#h10+M&1D)5!2A5R41#b$RF8`C1ITA#mm@
r*L'SDap,XM&km[``(X,*A+`3Ud1UqM8Bj$$A`XRK*[%eTeMLBd!PM*h1#mp!k9`
0j(-`Cjd@-*G@RfY6UdVMl&!pm8M0KjfN#Md1EI)2[DRG0q!qh0-ZPah2dCHE6'!
hZ",R"T*SC$(mDq+Tr(Vkj8$BI#KDCh404FFlET@4,PdEPmhJ$R`Mk`0*3G6i5Le
98JV+6lT0N!#1F!R,IL*hGq(HcpD(6LblT!k"cV2i8jcahI'cGYGUJY)3Jj!!p&)
eMeJZiB,5LBYQrYY%'*BpP5[)4hU(Q2arZMG1[(PX5DMUm$ACa*XJ--f0iSEp(&i
Z$AffR[mC#%FM@Vqhq#j4a*+l(+$qGZqpHcIpZc+BFlYXIbM2Q(qjN!"(PB')Y%%
jU)@LYSZaQrbF*X[qI3`8&$c-k(`U,JG)Z%L#-aR6m$8'60e(UGZ[qNfU$AFA5KK
(Ua6%bqIL42"12C0P639(XKVDq&9KJYLH50()"+$Lp!5%ZP%+)CHKS[2KF#$d5lV
B99bm8HMaL[r99VrPSR$F6RXAaF%T(KReRI[V)$Hqib&RPpcMe[e#Tfq2Fc(4@F`
I4,IXT$K`!+Rph#X4`"H+pd41MaXU1#FkCR!VIY!AA0a+'hme%396[,j&QGV8SJh
4adhAci"pFq(k+"qLH(Ar33I"-2,$--8FE,2RrMJRbCEqHZ6IR!qC[5fXSDMA4P8
VXjb3!0f"SchJKc9#MXdhbNbLrF0-"6LNBJJ&k[`Y8J!*k4L`S8MI'hG8Y&0krPe
Db)$T[a2-1&m#&J3ACPGVpkKP(l$MNBK'Y8cq(rZR&ITa'q$*@JkEFRHTbi9%Siq
kkHr'RI6,T3U2Q#"$,!@TD(F3q@QGT6rBV6H2[&Yeq#1iKF,LL"2pR`2(2$)#S58
aUfceTbKc0%ZFp8*KRmN6j$8h8!lHh6p2BK,35Cr&d8@,5Da,E2PjV1GNVdf5+A#
j@dd'R#D8$hbYJ+RlpY+-fB9H5IXDB5Dq4rh,ma[R-$D6*rY)a2[TLTJUM4IF[6q
[SmG5@I8-hIBTSBSaQZAG+Xedki$YV3C-@VZ+C9l4E-`KK2XeC36TeN6hB6ZIRCF
P2(lfiQG&`UFICf#83MArq`L4Z!Ll"2lT-ZQ)*NTLZUcpZDP8m[Kr(BfZ`RXbV&*
II3@dI@TZk8(QiD*Z"6E&--E3)SQ%e%SldVdJSE0e-SZ-VFYQ0DUrMNZl)4BYdM)
SCX4I-I1*jh,)V6AY)[T1DGA1qh-8`@VTUDcN5(i4mRFH1[A0X&-$R*3VqdT-Lm*
XZ"@DK#fYCGM2#-dEDTDPA*!!qlISASX$"h8,J+ppqN"8@M211cGVZ@mP"RP#TUP
f+%P-4F&9G69L3e!"X`&XY#"6485Xqdc&a,1)b-rbG2J*kk*,k1iMTSX#ACDk`4I
K4LE5jEVT3ihI&HV4hI9-5XPZ,TC,%LR)$BTmd9X`,2NAb'Z(lqCf36hpDa`ieS0
m8q42"N6#Ua[c`ZNE(+%LQeL"HAI#IZJc!6ld@0d%1P(bNUUY0#)-6E[b5J,YU2d
mHL*V2KFhiK!'"d$+V-L-+#%BP`kYI,Y$%eYX+Vl`Z@@APEhY@lG6m!B*B,U(SE(
-rdS[a62#V)31,FcMrDFCaPJKK-BJcbXdG+i)mi3cUI2m88FEG16c[DXKE5VeUdf
R6H3Q#VPJk$9MC5i2IXJ%q-E&M3RA20[ZZp&T'l[I5q&)QiCd&JSShp5SbfHi*Qa
L'qCaAFfq-8Z)PdT$2Yl`QTpYH+&a(b!AG61NPQ5Nb-eG*pJLXmG48i+0dUeSIE8
HbPMI4EVl@H)GEpIeG'"E)@$#F@QpDb$`Xk#&*-'%JMG)kL)pN95*R%H0E*DrT9b
Vd20%0iHf)0#leFPimhK3PFY)qpIN'i'A[,RA$p0-$(E1F6'Lp#I(T3Q8$VIPIe5
l3K+!,&$VKf(LXC[a42+J`Yk58X`PdZ#5Eep-qiRa%L&ba2cidGT)qXf!6c@elJ@
V@i5)P9K2k*GE0rE!JSEr9ZP(5mD,CHJ6iX-II9qAlU%N[Q-0f"5k'RIB`qEh35E
!fL'q3YLb[q+9Vi"mDk"ELD(T8T9*0K4h-LIR-dF0&Vm#CZ*ZT%+eP(YXI14F[K!
3G9p6m"0Lk9$$eCZ*%erLrXG1'XHbV!Lh9ljRLjC%"*Z*XlUB1X(-Z+j$lqeiMPC
qJG3QGSFqe%(+`+cBAbab%$)JTG4HZD!2$Y!KGeS!j(3jK0q05)HBcdr,&!$TID"
eTrh!1p@$mQT&Gad`lqPTk+('ij!!HP*,4RirKAY$VI(ESAB*T(VFaciDkT`EQ'c
E&9`9k9PH6Q`TBFcCk!AaHAcrNFrVfUcrRNm!S8944&!5I*FU#C6G)NHKSBr2c*a
6-l!kb`@B96)Zf+PG+MbLJG9#irI5PmZdD!4iC3C-@lflI69qd,EGM$[T@6#9N@)
@SCITi[XTBh8QRP8d*Yb[-$Q#1IUq83RRU#'GhP$A-UBkHA`00a+9@D5!53T8YHj
TjHdKTc9c&+mrfJi5hD&HT#ADZ*MGBKK,dM@qI%d6!-dMEdibc-[hpY#jC"D%1Al
L1!0P!M--iq%2fdHmlrPa5R6kZj3P+FJ"U0*3Uqq#$FU'eH5BJ4SadXF4+,bVCNV
6h@D$)mL(*J8#rQQeJ-l[0,DRi,6AGZIfYmq[1QM3B1DiZq&MDY1GK!eUhZ6U`I&
qR#bE4rPXXL9h906@Ca(LU)D8(Jc(T,-al0pm*,A%lp2j-pP!88D0,rhY-0DeFfi
,G,)IPGZ!-*QDJk3T[f8`KZd+,8@qkiXA&Np@C3'rV1*,Dj-'-KK")Q(&[22d(m8
Dd,L"YPCc5Fa@I-2'Y%I'AZ9#)TYAd(R8(3e%k5J[BV2"e352QcF)k4iM$41H,T,
IXLj#Td*'GA5G&c-*r2EZ(IkrfLcHd01)FCi@MVPa8@kBIqMP$6de[FXd`ZZJi&K
YplIMCjjLN!#&PMEL59T26HpPSY,@ESj6X0#RpSYP-&%4i)a6,d40N`ZeAR5b+Ur
bpZb82&4L0H)CB-XXDYp5hR$EHc1,+KfYcDXjDl(ShYdLh#,'6,#4k@[P!bV09`V
ESI5$S))kkI2l455ZL`"QT"kDA@)aHG*kZLr58eq829mLhGmIDpVC0$[&62L%pYr
jk"`q6F%fG3R)Nj32[lcTSET2*[TBr&$-LBRIY[iXMqmAG3LbPD4-(%bF#Ub,+PB
q[2mN$$F8cY'M5f0LfSdr43ITr0c"**5mB5ENXPN",Zpi!3!A-k"IaVEmbXDll*k
Vh3XDQJ#8G#'HM#KUm1pM@NAiKRK5U[B(+5)cI'cbNXV[+U@p0V0fA&kh*VNV[FY
$`4-RYI8k*--U1,$&Q[*!3rb*mHi''9cN'ckL36rRTVdp,!DcZPXdaF&@H[S(elp
"h'qVei%KXc6A36ZE0D-,AjAR`pdMBXpbbr-k#cqYmcLK[%"RA4U[MpR'T#J0DA)
R#2Hp&j*`HUKD"42`BJr4p,V(3*2*Xrm,1EIIH8"M'!1,&*`C3bbcTIBqX0mfY8l
$UAbIG9jE)l)9M`((eSVM([[p%p)VF`l8mlK$*A8EKjh-m8Bi3MKG!Ld&ajp"(6C
S`P2prMlle1+b`U[V1F`c*Ra(a34-QUMKiV!VZ"9fTFmP&GDPPM$MKLN*EZa$8ai
FI55@df)S#FAVm5F1&p'XaN50C@4'''cKEii[jXNfe#VVQS-Xeqc2N3,GDAV3C(0
"3f8&$"+AS1NllNF,ILM*I#c)f@hTqKAPl)CU"'[lUU*D&,U-4ab5D19m%2'@4TH
HY5T[4SE`clT41#D5'rmiK&!R'Fd&aGM&m+5Jm$'Scll(*jr@IkE0(2I$mrGJbIe
-bRHIF`$,08&9H"Z1V[LSYNEX`i`$@TeE1kMh&!3`'rc@Ma!H[Lq3!#RRa6Fb"4l
EqVV4[pTD(4aV-[J+e'+cV21R0N5F`D*UHN8p#AA$+ql[JqG`dI@*21GjKI!'m00
6&[M-FdJ5LdU`Dk#*'Rk9)iVUESe(6S6p'1j51'+!`&$J'dpUrP&9-1h*ALi1%Hl
6dB@5lmP-h#ceG4Q@Xf2'"AQI)lSchf-fEQ&@%abKTFSafDYZ82r5Hpf%cd`R8Nb
Kq#N%)20ZhJ(GRL6q',Cqq#G[EjL8D0M'3IkHTce-6!'mVF**p*)D($l"cY"G["q
6QEbLK#LA65Y-Vil6f6&'Da`1,LV$Zc"'T4T%rXBTJ$$iADIK!Ya1CB@iHm9RT,8
1ICF$[`p*FcKfS*X3iLN@%Cm4jG)h!1Za4M$j2HjI&jXrl9%M%&hqE"JqpSiC+RK
$`FF(Kel%"Jerlr0&j4miJBK,jJDMac6+"A#G%'+(h2FUL3I)3R@U,jNf1r0e(2"
ma9ZD'-3'2$+MiU*5a4,B&0cER,@c,20aE0F1@EDfK&K1N!!'5iIJ0AIRU)BhPmf
9If*dl`R&ehS`JKDTH+b4'r$k)e,2+mHTHdHV`PCc(q1pIZTQH++rlMd''08mFEf
cB`-N"4Q9VD!2X',Sc)(C&[dM'E+M#bcpCD[`J"B8UU[Z8dhGDT*U$"1ZMZ!S4Qb
[DHrHj5ij`)5Bfif')$XahiEpB*%[1cGTU,P&qIG,(%+Q!!HTDK6ECEhT%D'dc*0
0kSF#a[hkE`Le*mKdrrQq5UNe8&8b4i&4k#jL*VBk8BffJe"55*PeDj(m[LDd$aX
+iSBm8hDf-BQ+d6aa#)E8!e4N5@P"J)6NDR0rGFa4#B!pXMK5LQ55*qkfS!VKTGR
U2L#AGPD`!X%f0dIm&#R63eJi1%qp8!C0EKp#PH1D&,frGFZkF4MY5i"qY0A3AFr
HTN!Q*+rUp@Pcb)r-l@EQr(6Ek8LX"#BVIPemFlT3Q9U!krN,-$-AC$Z3!$d&lrE
9T",BlPT5bc`594q+GcEk!M5`cb@R4HlpcaX[3d0`6bdIAl8,@E4SJX2aR-dmijm
[*@'"Pq51%D&-mr,-,D(9%5R$j$*lP'3!3R)rU6QqI&R,ZCjmKp`id4cKHpAZFdi
J,ZAB%2#S,!$b(*UZZqh4HKdhM%*h"L3%GMk4IV6!fRPR,$j*XLf"1AB-L3$2!q[
'CH5+p&ecXVjI#4UPTecd"!e$[e6YUPBl``a"eibMaPA3H`ET"cGe$Ck8F&jSLZj
hpKa-VX9&4V%j1K0FhA*%FLAHeMe3#Rc`Fi3plqJa+%1"feN`-$'F%eDca+2k(l"
CBk&9ETF9F`eTariQNX'cBCZJ3QDqRPh4RI89PK5NJ92ZPC%3TC&'ANXh*@DLTi'
VDJ(`hGhaLaNB&+)$@4pUK5a%G@GUMFJT%J&eih+K8GSEBZI*2TATQ`,4,9Y@,m[
!k%T9GrD@)Z3!b,%CZff[Jccqk(`pkTb[1,dmMcL+q3rS1NjPCihC33RMRiJ(R!%
8`kZY+Ecf&aEeIQIP$cah-el3)%2@MrY(acailQCdN8FLlJ@h1IJDZ9LK-#mX%LL
4lDMMm#NcHHR)f@r-!0a&G"QF9+LI8rpjYe##6KHCa@a,2"3hd(66UCGYaXl9q+h
KMX[qZ#!lZCI&NG[UDfNCc&8SE++AIG6"#3I@S)XN!HHS[8DQiYVZ9hk%!6529`I
epX03PFXGIiE5V`k0GGd%S#aG[#SF#a)j1blaL41TSIVI#0(FHbH&[4c(CN-c5qK
S'V$$EZ+FMZ'!q0(mQD"K3mT`"c-TjHSLJ6RH"4p+R'l%S)9TlP%VKjN3K1hp*H0
qI8QK8)E"Rkd!,e38krD"h+hYp$hRAh"1q'j!'`&pJZ4K`FI583!4jiH$9HJQld+
BF#&l80d0dIZ(BbRfbLmeQLLZj`31@)k@*+EL)AMK!h6J3&,BJVe3LLS(S'YlAN2
h&m%UYXNl"PS6bj4fi'+LaC0+j`F'(d5r&#P(f,fkp'pcfZ,r9R,Gp'@LR"[$Zer
(prpG"9%X`HiaD,8Jh&eX(H[dbiR35I((!PEI3mbd1S1#!PjCP@3cc8jk"f(e#Y1
cR2,hZ)h2"4BPq-9e%UeEC@*+iGN@j3f$QbZC6H-#peflDbA(K$4FFXr,6dpQAMl
*eS+0G9'3!!3ZG@p&8%9D)FpTiSU,$ECT[[4PSRS8GRb`m02bk9FQHT'[McppKdY
TTHr-'+TIjqd!XMq[FUGY+S'&,[NcJ5XJpi`(G[HK%3LZ-R9P3Q@r!IN%XLIZlNG
i`ikSUQVN[JGcI2q4H[Hb2%@lEhHINp`5L!P,4YBb@ZXf)IX'bJ9p2YbPjl3@)J"
@f3ZPUA92q83q!F'%82!PrG69kaca0QF42,04EEAa4mSUSf2"Bp`bK%$p$PfC1BD
[Ge3&[R#%kq,b%8FJ64-"J5(4'8"3E,J#&0G4U#9JXY[KClUeeYbXV3pf(J9k08h
'(q,N8&BM'1FD`SCQ)A3ME-@L@1S5*RcX*2CqK@4#!9p@ZYeGP[ia39E)!!S&r0#
dR05Zq9IMP-SNei"JAPI'eS!eh'`8kpM-H)0E&F5EI6#UL#YYqXmVr"H"&YG-amF
U!9B`SSi"bCiKPGJ1%Jak[dl5AjF',Cd#k4SAIIAr9[59L[eSMXbUX3!YXq02mQ[
d0h#QI-+X3"`,I(Ff#m%P9$45@%cY8MY*Pc4eH(0*V)!dM&i,`K@e@UT8+4%8Dh5
X9#EGfi1)%'Z)p!%36hXQ0'EGb4b$Va#9Z"JFL,$6#ae"kX0GSmkVUe6GT@FU2G@
,b%GG*"*B*KNNc!EmLp)p6#X%8r(22F(GcAY4+@',S'&ZlfGiF(Sa5IN0RP(5p[D
%XMcZrYXN[)J+d@YCh@3FcEjNYQheD!Q%L3M`r'c4N!$8*,S9*D4%THPM)e+r$-U
0('DIajGP+fAj'9$#p@kjKk88[a!I*9fk'K9BR8RL'E,l%R6p3rAJ@(8BKk0+L0K
Q@TUfM*+KjEJIIS1CZT[G9rX[4b"6&GYKj2U*K2bS%G1+)QA%J%N`mZNp3%l(QKK
il)DM1%K1[e#8#j1pclpTAM#2k3`r!8p+MQ8X[YK4'&($0"C6'+%mPq!UPDN'`[,
T%$hb,%D&(mJ`AFVf2UameNfrX+9)a8l2AJY1$cA-EElNQf*f58B1U8!9RX6qk$$
Z)&F+)p%[NSK#Zqbj,)%A6ZVaU,NrDAi(HqIdkeDPbdF'N!"cN!!Dr+K')&Sl1,2
fJN3M@`4RKX&5alp[T)39L9Q6%VSr-BK[5If1[Bj8-P'CF`bd@q,[3LD"CeFp618
k1k[Q1cjZ,$*,B[pU&p(F`mmiGN3-3Ve'JYekp`%Ik%3iJ%ZfcXJjR"(hVlZd)XB
1Mp41lEjEcCP0dE6fCJ",@#%RET'5MLPKk")U9BG6VAY8`a(2Q%mAjV6&#QmTA@+
Q+`k$BA-VCRJIJr+$aYL%LM"35p#[GLTIa852)MMNK@h(fYr!AfBR@q`qT#NGbNQ
MLTN&*C*5[0XiBJR+!"8a0"emMDj%$4r5$k'(Q5V4mAQbEq'-8IpLJ&2'&$bJl#p
G#CYJi8Q%fI"L%300QemebmY1+[TIf6*VV2jK)r4Ea,FV&UFJm2HqL!f'JQ8G9R0
UiK1A0Yi'kI[*X`JXi*C5c+X#q9J&E4U,RFc,!1KMc',k0cUV0mX`%*3N*EeLGBP
!PL5CLM6Q%0'j93,m30c[m5"U9SklBM$hI&k&,p6il"`%bK+`24Y`3-NL[-+&`S6
(b!%UpIVQ2KJK8Mpd`38FGQ$Vi[c3N!!2ZNiZ1DVC89Y#b)D#cLTcUL)lP80khl8
6#Ca-D$+d)0iq)p''p1PJ6pJ$fhi!IYKQ"hm*[K+[U+*PHYqcMeXa+jQI89!,0`-
jTEjM#S+T%R2*lVKdR%[X)+fL+K[[*Me-(ph9$IjX-#M*!3[GDl)UNTKcalH%18Z
T3'30#-LT2r8*-h1)d9)d3'[$(2A#I+,0ZJY!$[+VrLY!4X'#bKa#J%$hdjFdB-*
QDbCm3-5%!K"Q'p'M(a06`0&bVF8SH-MjkH3dHDqGTARDmfJAN[L1hHeTFAhaGA)
ZJK6&rKrZ)kVR5T!!&9E&5QlVmM@%XL$8pm&'`2QiVef2k2`d[FH%!dkpJRGT2Bq
IU[#D&)CUCCCpE5ckKU,bN!!Z9Umm)#N#)Z-Spq$(`0Q,4-jiq`8MLVC''EfBL!Y
H62h(lA6lXef"*NeI*[kZ--rC'dRbjJ3II#6GhK9XL1)TdK3Q"h9lZ2HG`a6j'hc
Lqb`f-5FD0+3k60a8-[lZ(VGGK9,%H*RARGe')`ZbX`@P'`J6H3rMiciaJjZ,4BR
%1Ub-JAS(6*rld0)VA+I+Sm6Nc52Lfd-N8Y5a$VkcI#!EScP,bf!N%`m+pL8[qDS
1lC!!25q*ZNKS(edT6$Xb!)F9U)Z`SP2E60hIfR$E$@Jc0MAhlElF0mP'JT)11ib
6e0K*f58KI0TBcbaX!Cj`ffA15R&VZfpi,b4ph$kXFZFHB&3*X(-#aP*)Nd-"-kN
iTB4#r44HhCR`EP2)He*"GTeA"Scdh8QPD,U(Sq5"Z(81&mIHJb%*DBhRT"`eAQ3
jUp@fdrdSq0V1'P+r0m4$-heD$3p1VF2mpZ2))-NMA-V0r6B-a#N[DL`[RcLPQ(b
GhR$VQ-EL!M3m#BJ&(rQN$PdCraKfL[FBV+0cE#DRBl9kFk`IEp)KTB8Nl@+mJrp
#5dp`5mZB$mB"N3K4+#LlM0*(Z*!!Ma$KQY"j51%S3keXS6(Ub0(4-C(F+"qY3Mp
DiPG*q,h5kSF)%4iK1jD2R*C9N!"BK-"`#RCQRDCh@Z+T+"(R(YR11G%KGN3$,NY
3pAVa(mbTHS183mfHUCS`"&cfpfI4#pUrr0GZdH4mj*5F"`Q#N!!4T1D8dV'Y6R5
G'a4f#D3cLAX`f#KiEe"NP"J8YB@a[8G`ir[fX`fq0aYiS$!K3kq*p!rP3VYU)HV
C3a5YMGcHJ&D%&BM)+Ya1lcD*+mC'kZ!2'qrh9HS[3k"Q20cEA%MpU@PCGC2-[Mm
Ai2D3!"p-f%fLIJ@i-r,JGBH!"I`8a3TY'YbeMA+9#iFK)A*eZFB8UjIeb@2U`jR
XhflVa@`M0r`k6m5+*I5jX['8FRr!4U["X)A&LTdJ$,P3-MX2C@j4Sd3@II#'"(4
U381rrHPpD#QAEq--4UYEe!1qFdSAGLCFkRdJqcA8UCqpK#Si#i185NF5-[1L83i
,K0)NDdfMI-V%YCP1H3b,b-V28ikLl@d'qJH0BRqVX,Y$NdbDUe3VHJ0[IMZZ8dm
6lb[&ikM40C6)c3@*T95IkN4`-5cNJ1r+D'L'1(L5[`,M+h6jNr,[-103'r"eUEb
QjMd*AS(p%[Y`kR9&K19H)!'0`J*DmrfClTPDb&4kIGYLa3cme6-3kX3cfq9PRkc
-Lk9B3Z$2H`5%aFNKkL'-%LFdFh`,-fqTARY9''iUqDqkF1Y[,'3l2LRI-)E5IiF
mN!!ifP'X!C!!'K[fe`@6`HDSFikSFq4DqC!!A#c)LQ6@G'SZEBpj)1A0D`YI--j
TY,e$Z8Y"hVHN1Q3GV6L1q1q'090GbiZ8QL9Q-91jT",JjT9V92Y0EYZ1*`FD*+j
J(daBmXi8i(1ZLJ[T)LchDU%LPG-@ESK$Q[6K6P6YPGe!E+5dY(V+U$fHjr3NM[2
6A+(APHqPZq8#2'&fed%`#q)IFhLM*9-G&A%K[6QpJ*!!HRNA0#F5`l8N&-Y(TPH
+&$K"kC!!1!8%--F049YkZ#K[G!4m'+F`&8V"V'0SfQRihcV[!YKaZpF*X,iKiIc
2@C0b)RY[DkKqBULpcLSGGK6%f`QLCB2mC8bVfJ+a!F$&k8`5MhBLlZ3V@(cN&&p
A`2jfeM"S[5#$lhXPK6E-@L,rTGH0$fR[3j'ZB9Ym*pIRea-6hBPJi%Bili"#+i-
X"%"i`Ked1j2mPHDeIYY9YZl+9&-B(Ia&,(El+S3N!q[D(CLQ#rG'U1PmSrGXJNc
fI6I)T'X!Ae-H!8cq3BP-cMF0U2Mh8A6GRm#p(JB)caYlPAESQe`$GMGJ)+,$G45
X45QMdDT-e$B9@@Vbj6%bbZVd"aMBRmdXIL,ZH+%`TC3-+b3i")#-QLG"#%jM4(4
#`(YLN!!E5eXPF#XbCB4Q$X"if8c%Z*r$X-&ZlUdKY3-%QK!BdLJVmTGk`8*Ed2h
BH56MD6k1&Xla9cD$Eka(D2Q-Zr*cP#LHQLNYG%CCBY-"bGR(mYrI6c*(fq3HNTX
LIi1&1@*dXS3ImMR"B(p1E5"$+LmA&#q9kFZRDfjM[@ZK49X5&AkrQq80Y*J+Q5B
UZ0c2P,0'JikpJqqa2+DFebqpG06FRUE5"`,$fT!!0EVjpDN(DI1904-$&)%0E9c
jHSQViIdlEN!SHjk-I,d@0fYp3S8p8`f!-,8GVG@A+m5K%0%L[#2YLiV`I$b&lpj
,kMIN5&&IbPkkl,1V&P#!4piDm@'pJ8M4N5dXi!#ih&c&9aUM&+bV+rpD(,CY%Sh
2Z56l`9ak8RHC`TNZ8GNqSS*Bi6&Ul1fV5k[,`X$,FJJXX'b!G#%mf$SEfIk(MVh
L%H'ZT#hG+F4"TR)[QBAUQdde&l5p,M*E9`MVmaMPdR9bmhXC$Bl$hMDS4G6dakF
2+JCh+Ni2B$042R3!+PCjT[eY&ia6k!kLphTNj)GYT"jqY*NRjA2(U3YH&Y39,'P
MlDhXhfVSfYaBr,1qUDLR'cTk0HVXG&&fHZTVibpbEj*5-Pl"3db3!*cZX`[p%JL
+$3fq&b(!M5NjIC3A#EN-PqKRF[qhQ289)p8I4KmfFdXFi&l$Hj!!HF2Nd@ejf)*
#+lTBd-bQY68c4N3N&%3*aZZ2H!3)KKr3K)#%5+ap!F+,ba%P*(b!5FD()+0blQB
h,*TUR*Y0+c!li0+p@S6T-6KU9ebFkHX&l1[&4R1m3@IcRhe!5mfG"qcFcc3,JQ5
%iM0H9Gh(elRCJBCGApVG+Bdr&+"33!b3!(pqHB0@F,N6INlDITaY8J[L2$QaK5*
2F*["bSe'fb+[X!N*["6H*a#b#TXAqr2jFbRTK2f"RJ"$h([C%rAE4XJA9m1j#ae
3iL`,%2DrAIH%#AGX0qmhT!A'bES`EKGSlX%MHhQJ+-AX)Iq[KlkV#bSeJLk!ecH
`'[3q!9&"qC,R"mf0[L8pbpSj(FcI,MXd6l3daP@SESHjfr5c0c+MA1m3`c4h$"f
+!R[@`(6A"`X(hH5'VI('RD4R%qPpkL`$(GQ(4J!IBR`"SUTJ%4`JBUjpdBfIYJV
AiM*5m!%,lTNY*[`$VCLCap+F)L,J(1$0fArjAi%912eJm1-GFr(&4`mkChme6R$
+q*aN-*!!"Vq4IA5IedqHcd,k0R5Jb`$,0NPl[c4L3lMpeq*50I,H4C+52'Ifd@L
iD"Q(LGa0D3KMh(Leel[d80)PL$@T)SlEVSTpVql-kbTHKB48,3Jpqia9GbLhrUM
D4%V0SkMS*G$)"LFl1cEbc+-Sq,@fU)CE1,NbRBdDS1l$Jr2[hIar!q)SApd3rkX
e,bI4(KqiSApT@Di3S[!2lQMlr4I[L4p%M!%&bmV!@)C&ppE%eLT,!HV8dq5*dBb
U9-'V!bR4EI5L`lTH,d#6GU,$B,1adA"UrBmY4Cb0GQ"M#+jPA(QB"2**UU4mL'h
krV$Bc!RmfreSXQ(E#EeT9XCVAJSLV!cM&!Yfe*qJP[e0dPV968p*bY@ij,9hQM,
``(P1&R&#TJ[@TBSSFZJiZ8h5(+mrkde4YqR5iZ3(HD8[QMd6YP01E2'B6Ya3q5p
"cGHmZ$9R,[VR6A*q0jUXRm$8)61FTRL%Ibr`ihkFbed(K9h%j02X&bqpUQ'RrC1
CC!R--HELk52GH'*12dAhq'N"dZ*$De"l3Nhc+jBJXjeUFJQ+XbBi2f3"YX!6Y6"
#iIJ,ZScH&q#B,06fQq`hpmJK%q'6m*EjVZ%0+d[-)Nl,""addM-T[p4rJKLQZ2D
M9MRTlU%ehNhI906"[TIDPIGZA`C4hU"B%-6PFC2U[68K)Y8#DkSH4S(&mjaK&1e
9d8*0DYB2+4I0QMVVbZ6j$Yc,P*qI#i9#TrB%N!"PrP8V-&@5d@2'F-L4!jcM3N6
LK56*2Si-qefBTi(m*GNBi8N%BV'rDpbT9"YEZHrSkH1"'dX*ei$Lc@lBVZ2Xl8L
*qHp#bZcLkN6E*Y&2X"BF,-C,H0)!i,pi"'X4!-aI&@dN`B(&cr,JlXSEaYK8UP'
j5d`)6i90-2MmfETmUS%l4HH01Ep-k5+5$26c%KECYK6Bj+(6@mpJU%ZTl6ca26A
+a9SkNYedY9J1%4*Fkq$N(NbCH%l5B$F3X9pk&T'rZpEcR"NHN!!UM"BSb$2Zd-A
[dTHbAecpNhkI-cm2E*TZR,C"J,)S*U&*E['PSD4hr-IEKEhjVhrEA+J$kH!jpF-
h10L'ej,G,RiU0IK@lr5icXFcMCB*5iB8&0[2PAJ&T)5ZqPblVI8QPZ)fX`'3!*4
JZJLahlC`#a3*eJhFKAZD*biSSEh$5K2%3dQX[c+I56D*#mPfjS*EPbUjD'&MU5T
fQr+T#-Xb6pd9m5K1NkCFh8N[lM"rX"[TLceCKY'IkikpR*G,eY)qTprCd%2-IDp
Q`h4IJGe3SX'Br$r4db8*Aa#B@%AZplf8qfVqA9e(+(M1&eU[5%Fe`YSEkb6e2M2
pLA4dbCE4YU`5aPU!#kL9,F*cbET0lJ'l2cKYP@TP'pZ*%28,-hj$qIPEcFBZ'#a
10kLjh,5Z@&4QB+RNh+!C1)+CmU*p35UZiFd#k5`hk86Y&MFYS!1&E"pde,9Z5#`
#fMLd3VXU$RR[2P8m[)K5fBFYpi8N1Xkq%cLl96YZSh%MUJ@`&0TKkF+TD$Rh#0j
mN53m9C@Df)FQEfUa@i8f&AJTbY0bU"1NKTTF0Ri8K(Yf'PeI4I9#H3Ma'YHXFk0
)B4JpDdE)R$bGTYbGELS8mEK`RGq0#dXlXBPdP63aYK1dmCiYb&KHE45H4ce9J4'
@@f9$0*5RHjqkA-@mMbC'@,GPLU9PZQZVb#ZK1pa+3*qD+DGj%Ud8SI!1b#(Rb60
a$jRG2SA$Gecc)#!VJ)Rh'b#5FhBF1i`SkZ"pdAhX[CA5"@[$dD6jc'RDDS)%)GM
MFQTpJM!2da#Prkld``dD5)V)B"CK+pL[PlR3PNbfSPljh"+*la#03dfTc51Ha5G
15Rk0$qaIU48*h$+pbdSk,6H[-JM5"LPd%iMG!8M'rRXXhahXc0*68GY9F9+8)13
%KC@dPS@FFef4%bKb969*-+&$8-FK3MC2rXi&6Z1Gaaf-&hBTc+K9(lEUp(UN)@+
eBaAcpHYb%DeELd*kGaUelb#e[2aX%e&'Yf3%5JPPH,H0&VGbITDp%6S6GjKe[0h
SMhUb&A'XI,FQeNLAp)`l(k%Ql0LN1mGkJF5PN@)8Em[Mmj9jhjm!Nl-b&a4f93S
#H,ai#955EmYBVJH&2p[Q`r2Mc35pJlrT38U'N9@@rhGhJ#mb`$%FCJU0iQ*Vr)b
5`RT*Qp%`cmA*rAEc03RM'-HQPlfIL(++e-S@)5c[K@h-IibSHqBQ-U@%MIpLB46
4r'3"4$T#KCUK`LUkUEf1Xkh2rh3X15+9)[I0Pr#JFUZ1l,-@qI@mZD$XEaM(`qe
VT,@%BmLIU%Q'1Fi)aAEG3iX*83(KcVrr3*rl,-28YDC@'PFEaRVAJX0p[A)C9FL
YD,d4)3i$mPK1&J)#Ri9*!f,ddd+$`B[1kP`e&UEk4f[,kf+G#C!!Ucrl`Xk$HUU
JaAd`&d$L"#h+KYZf6i$aBB(*(VU+VBe"*c$)p(IarmKCXTVmFV1[IDkCl%@BdA"
UlA#d5k4lFMcIl-L6rE!&,a1RG!q'5`BPKjZD$#AYIc#dbCddXmkFE4,YfD+HP)9
fPFc,eTPG8NTICdP,J6eqbkQp[c'*3I%J)9BQQ-0"e49X9PMf&3)k*[9@ZT!!1(P
rm1PbFTre1XlAf-jB+)@fVYHh`d5APG$2H"T23*FLpk4r6,CbM"`5`(@ifZlX99!
j+-lZPS&i5K6AV4XTlDp`J9D$mQ9pZVjPH!pqkU4ER[9X2-ZA2l31fh6DaQ%9ckB
-c#$3`A8iK-m&Kj!!S"6Jr8$-e8B&Be!&b#(#XkBk0pSf3R$XZNLI$6C*lS,A-Jj
B2"%0N!#3!,GJf+L%9Lk9IAQh%c@,6H&kbJ!I04G)N!!NV&KL5XRr+0(9+GLap(@
CZr(p3f)GfMQ'm&fZ@aDQVkSr9Hb3!+LhfUMH!DHfVP"N#645J,5T10&CMhMiVVY
9i'JZ)'Hi9%h)K&FDeK396[F9S+hl!CQi5B,rd`k&UMEFaZBShYfedE6L3@*"+QR
YJCiT8*Y08@jYa4Z"hUZ-LGUNldJ2cHAeIU'`H8qJ,5Bk0T5)'q5Q9CCB#!N[YDi
XhU9"r#Z-'Ecf6bdKd5a"N@hR-G(02MrIKh)APFp"Z*90iV8*pmKC%KETAraN%+j
+PGY4fh34aip!NJq*9CK%Y5$Ql+AeNFG5f&!DeL)`!Q,EF[3-U$JdD"AfIpaPK9+
TJpGjld4&K8,@ER6)LKc36CAQ0Ad1$ENGNU6$L#%#U&V41i`Kj@`c%EaJc(S29QK
6!G(MI(60-QIBD0Mb5-HB$Z*dNDlBU')e6"MZ)a(Sr%lGQ@c-lfEhLh5K&,J$k0f
Sp#JieSeJpPq#e`kp8*4hXpNh-fUcQ!M"9BCM''E9hBTiqBHe,ZdqN!$3#MTqFEF
kDa!`N`1a*95k+e&Y9+19FMJGP3c6JBi#cC%V+q)X(-X!Q8jlF[-GarDFP&Da*RF
B('a"4-(r#Kr+)$#K16l%h-hf&d-DhEF[MB(Ff"DIT1lBb(6bipHp6GcrU%60q$M
mNJTpc4CL+8b8G6$5X%E[,BYMBNacZRb+r-iLFGdmQ1%Ulh+ST*9QNfF8ADE$3`a
HJLENXM$&!Ad&pM*0UP1'U8,TSTi1![aM,6VmamG6A@"pNlcD5H`DQMQHrfJ,`4%
"fcE%Shh(#DY8%Rk5k&B#F9c"lR`fQK1$I--G)RDXhVc`61G[l[XXG&qYmAqM3k,
$B#'a%CfGl3rI9b'8CXQeXBQ'kB+*U*qeHm(1'5L)M'eeXN)&pI5dLBUDlkUcB0l
Kq6A,"c)J2#5Cr*lM%amP)3*YM0XJT6$(G1BfC6*&h5ENp)K6P1JB`0FADEMP@m!
Y+CB30VZ"K*RLCSIJ%-VN,,8qJ%(m4eaHr'`VVi12r8"YYZEHA9I6&h#c*Ma6X*N
l[a&bB8pdp0MY1hUhjD,G5CHTk#K#3B0j6&hm[4(rEQ1NH0fT`e(mkKU&Na!$`UM
`laVCDmU!TY`3"!-YdKRNb5`,,Gfh"-[$B4hCLlUVIB(m(k)j$H2-0fm'lTKHAU!
)PSHfYFKT+hei0E$%"6(AT4r2l6LT`"[Cr'F#b#cHeeC#VM3j$S&AdD(X)mblU'(
T''Y2X!8IHkpSG#hFhF)qPBPaSVNcb6S`LM5j(*hClm02GP!I-mQrQpf*N!"'Jpf
MK*9&9L@iiZVl2IFJY6&pI95J#MfGQI-5GA**B0Rh8iY[%HR,&N"E'@eJXE-fdi5
Td,+D%J8`6hFmh,EkTDBMH"cA[GS4e49EVNML[m+d'ZH[P4+$QIH9fN("bMh+j&b
Ve3RedMb!fi3Jf5%&*#+`,)@[,ELE@YJXV+k$8'E4@TF$lX'"qZ,T8#Mm4CEiC,-
iEd(qVAYXUi-a,2jklQ9%G"4,hVXQ+K*$KpX5!,A2!G*1%pSZ#fm@m'0eiI)RQZ'
',I8,"C(ZllPe5XrXVqlK8c5*emGGpL&&DYhe%*)j8B4*c5B8EP1d2VGL&K#4cY,
kdU@KpF8PBCS`5Gd(flSJYP!4TAIp'0U,%dF*R%KL,VA$JcBM#4)C6QTU,SH0pr1
eA5bUd#PFAfjDh"$pNhd'G&I[b-ZGe#F'll4Lj'N-Q-6UZG*Sp@q1IhAfhShBeXZ
$r5@+h`-$Y3C@UacK"N0!BUXI'U%*Fhf*NFReST@V4aqYC(j0hVHjDK@VPlV5G!)
('aB3r&XSHjMN`YHVR'`N5L`X$6aq6R-eJJqYhF0#$b(DrFpeFJDqViM+LGd&m,$
@ilcTc8h0@2`&Z'KZqD@%qAN*bCB([8,+"iV'[FADfm09PbkL'%bGGaP[dbl08hl
$[kjS-ML$YD@I[GTBIf,0KNH3!(KVZVrm1&+kZBES9j1C#F4(VT)Lq,"Gi"YMZa0
'h'DX"E!c)-GrUc-Q35bcXQ9cd[6p`fFL-'5SS2L9PVJX6Y921)(QZL[6&R6k[br
IIYEHk58pqim%`S#9D&mB9MIN+Vf10*Eq+`Qj``DqrD+haHP&#m8%H4CDA[ibAEl
Lj!-@eAhl')G-a@,C8IeDASALJPRBi$$VMP-R%Q(K1-PaRXUUM$BX[Qh2j94l*LY
k#M,TP4i`U#P0(X9HFaEFJFmUTH8BP8PH6@"+S-)U(!BHHR6&pj0&!B0eSNANlb0
iVEA4RNIdLT9"d#(4mBYCcpXkal,F@2hHQ'*fQ$+Al&pFf6+I&q3BXeiiVFkpFFM
k9pAQLR4)4M)*k@Z9aCB4MG$"+drQJZ6D[6jlrJN$FLc9iH*G2Sm*fbrE(#rb5BS
AbGhFEZ)XB(HA!plS1*dTEe1f0e@p45$JSSNbpPdpEKT'Q!Fmb,q3!"@JL82PG4X
B2lY5pJBGlC@NR0R'm5Sa&#62&,61liT4R`+DbNTia4d)rh3XENHhJiI1[b-TrAH
r"dMd%G*FN!!)Mer8%2VLRfMX"1*i[$GL#,PPP2IKfACdR8-%@(@V5&i(0Zc!PC3
qDfBGB`S+2C+m`IY0ibDK(D(V[k40`5N*6MS)Y$kL2hKcS'*hQ9TPFR4aRH!DeXl
p6VhCj[k$6"4l3IqT%(&QKIqJQB5@C1&Zk5Rm!8)@pcr6BP[2mIC#SESDZU2-6A0
ii"N3-*d!#kp!)K1QAG5KiTAiSTQDIE6bb4b3!1QC9FBdfAlPS148rEfT8-`$Cqb
Z"Yp+m`bL)"%a-4L-'U[0MQi$TTI$--!!fITIe4TPFRMYh@Xh$TmFJlkJfM[*-2A
CN54mqr!aK1pafFp01"mJI0#QUT04fK!63k8E-U4ZPeEZl5PbT!*rh5mIjH`GY9d
DNA"LMP5K8'8Cq[#MDkS&P4LV[%3p3)%i6-mcAXD%'Ea1ZSAihZ3V'hPGPDSi@D@
FH$GASN"9qj'r[PqJG$8He2`Pcc+")SFS+i&eJ@f@p@DMiHF#1aFMfSk1!kkhPh+
C$D43[M4Q6$Fc`m3[k&B!ISD2c45Xk`8TEjGC+b8j@fVH6X8MA-3Xe#RB4dXMpl0
"2qc*8#41JTHS8(+A3$MXFJS5He"T`X6%Q4hIC)6Rih5XFl'N2Ld+F![FQ-r3"(c
[)$l,HVQ@U)RiY!@bR5U#Q56!#$+reX(TLRh(iDmGR#1X&)fDR'F&dR"Pp)&LpUb
'YddNJeNL)D-PmE#3!2JhRNc-VLHT&D%Jql5eKUkfPa5NE8+#he,S8p+!6(JY@fb
`pTSi`h5%&G,FmPlBh"kmbC@,4V5kVrfQ%Nm&CIpQB4k#jU,+&*TVX`,(G43jM5X
YY)Ula%e)(-Z#fRX%9[U9d(a[1XiTr0h$l'T+NB350ceYq@lK,R2KG)"(2+[QYF#
*SJ(D3ARG*3J5#AdapcSFPklILji5FJhjVD+EUaP[3fQka!LDDlUHCj801rj`Df&
FMH,p$k3Jb4bC5+3BKU%A"HeeRj(JLfRGr9b"9KUjEECK@%Qe!TFhe95YSqQj#p!
Y4&hZT[h%6L0XbSI4UIj11c$k6DZdAHiFf[j!(APjZ"0+DG*+ke-5TF&0GkHQF&G
Z0i5pl,-A6`)'1U-$P`HaP&5*B!e@b6FK8eiU)cSh`Z2KRIFfYK09X1aHRf0-cPc
qa0%*XjQ8BmqXdpM2Qcd#99ED,"T@8jAa@14(3)MSA$jP@"mJaZj+$JQKiMMGdhk
&LB5G2'ZQHh@!,M@9K,2(lqq"9H-[f)A[mRYmAA&*@pam51`hRDPC0k"bS!a)IEQ
(A#ALD48i+aZ"fj`@9lX-L+AMaIlSUmhq&Z0&+$NAc93YDPA)2#T$i$E+cbb*+b+
RrAiR[LkkQ[B2k)c,#M#"8ldIAI8VY''"Ub(X9"q54Y53!+E&Am6dG3hqQB!5Yqq
cR,pVVRri44%IRV9cZ1-NmFhG5!K(UIc(R[bR&0@+%S3Dp6-FS9j#YJPN$LZeLST
U%,J[5ii)ihDNM&`3$'kHVGLNY5hYIbLYINd2AG0+8jR`KL3HfEl-mGe[`c5TrIh
Rm5pZV80dJNT5'aHXiVYU6`Y0`+#G@lmlr(Se+Z`@99*8ZcrR6%mU[b%p""beVRB
`#E"rR%[XR,+Ti!HBPmQ!$)!'YZFQc(U(Y4IIBJHYR41UKdAc0q5kUabQbCG$UbM
5*&8qKBK9%5DiR0aaU4LkHj8I$($8"Ce1fT1Mj3fHpFGdNNCY0$Fl8$JQ&9NALSV
`1(KQje8*,HM,N4'9G&4cERX#NZ#r86jq0'p(mRdEC8Q3!!Zh[,1,8f)HKq35V,i
[)NfNGPf$%l$EL9m,*GDk8GEENq*E96@*EID"Y4"0[)EF%`6%YY+'l(8NPf,r*k6
5mYJ(EiG3hc*BK+GKL2#R"k$hmdpf)L-febb[!2`'3c#+mM(%N3G,eaJ#*N%QFM!
HpI0L$,Y(@AVGk*KS8Fb%ALa)q@9JqLr1!(N[,--+AbX+&Pc`9Fj$iYHICA5dr-3
i`bNP*$Bd%V#bj!)&L0!F4`GF2*Uqk8E%Ci4L2edcjTa$1f*lr9G#lBHJShfX6H@
N6D@A3*3CdEJ$kEJ&(2i1M)C$`ib8DX`F3Q#A)`+hR(*i4m5j8mJr),aLf(kFQB#
fjDj"i9DEb%MVSB*'8%qA*4bF9ikrpXPrKZ9h[["iLiM-P[XdEbaf8[8[P0qpepV
80-Y[amZJGGh-)X(F"qVr9QiF*SkQ+!"Rp3S2VN[(-$GV-9pF#68DjN0@bTFBN!!
i*qYeT+T`i!lQIVPd#Q[8*J5Gcc`15Na#&N+%dbKdq-bF0id!Nk3[)c+-0ClP@!$
%F!AdJ)BhZJ"`SKP5@TSd1ZGHIN6aVXmJ4ZX5lN,J6Z"Q3GT5F6(SdmiL@cbf"r9
e*V1h#9l)0r!&["ZrZ4dc5rXQNCS8VY-D`5b2aL$abMScSMcpbH,3CDe@R23qLlm
Sdl2TjTldkBDm0aSZqXISk4Y0jhGjL@(R@1PVQBScb&*P"29fJ&5SS$kP$GQcTc"
4Uq2C6mPe&j28m8aJ9-3#jfNLE*[3L5He)$+EI`Vmmd%q`8h142#+#3'J2-'9-c)
GrhjL099jNhFNdL3UFPND)3SEF$KFMbJ[#b'fJRUVPLpcG0q`M3NhG[*Xp-NX98F
X$UMI9@*84%J8&**-Pa(c`BF'`H$fcL@%@li19G-*$MR95`I-da($VmfMiph"9Qh
SFrc3ld&SphYq964$Qd&[c(-@[NjG-Q,Mbap(8,3T[5Mc92Q3!''VDELTBYpPMic
@UR44k'#b0YZLX9jN88)!q)MlrVJ2rrFGb43J[Z''"!-K--ii-,SDdVM*qZkJ$Vh
m(`0Nj$r0Y0am5XFrI1N+ik'(,XR`M64-k6!6eDhlST9S8*Emf,[NfEZH[jD1(2+
"6NaP)p8eNAD8`eeXa5(245!9TV[+"1#rTf`L&k108)GDL%5-6eYR'#f+J!%9Ea$
5DkV3ShQ2PAUkf+i%)8(2,arA,X"TPF@iHRP-H'@+RHh)E"1NH#j&@R0-Ve#@@Fb
GMS310+%GZr2UT&4NNblq-*9FkiIbk2IJD@Z3!)P8`dJAkLaKMc%NhcVX+d0%TVd
'jbiI6Tq6`B-d$-@p[Z`5f"%eZ[%AZV-jNm@N!LQ*CmjB[-TVimFGPrlR-+9T'RQ
00,9a%k!2rGU!0`I"&JQd2l(3C0T2dR@Vr,,BVFr2UCB`lZNfmE10"eR@6cGEV,m
SMFK12kjlX!b)SCCSDq8Mkhjk&dTac*a15mm,NKkqcZ,*B-LdlThC9(iU6"fch(e
AjZFK$"bFcF2ke9YXGm6mS")VkmB5#SddGhNc*T)$)"`FmPi@*+bmbVSVIU9UZ2&
Im@"(r)eUqE%QCJkZC5RY`""aR8%aT6dNp)iTS#SB3EL5e[!5L5U`V!++H&!N4ha
Q(dd)PbMH8YeKpK-Fi)ATfCBTN[h`(4A,&1)aMSe$K%KbP`-"-dN5h0c![MM0q#e
P`E(92q,QFcRMq"IcpDUS(@Il4`Q2V3eZ,)&F$XN'&,GDi[HX1lG5Ffk@VM,EVh)
Bc""F&Ae5KXh+rDhG&j8j(e4#@p8#8A8pprcFJBM`j)[+6&1J!J*$BRVb,LGEcpq
"44CHiEPE)L**+FLQXq+eB+4-1(YB,NP)!)C0G@R([562LZ*I"6(ccE#0b&k6k12
cj2kaBRZ)!8j2fTUk@5%c0qc5-XK%eG3(abE9IpHiaA%)Q9CY(DV5PX&PQ"LjqXV
-0UK3b)*8VRbYCSD`HEVpZA[543)LVUq')P+0%IY!lL$&8%*1kS)@mDc)([[rS6"
IQZCFTh5Fk#,ZK!eD-L!'9BcN-PJU`bCUI35"Qm)6bmI2+Em"6,p1NY,*aM'402&
fUEk2BApK[+[J&JbG4CA4C$,6d[&X$5Z9-!0[fjHXq(+T!Qm8iSNCTe!@VfFN[k5
J"`4ADp&INT'$c'$b2X,p!X`5YEUNqfaVKT3!GSJe8ib[Al`6#c68G`TApfVd92#
L99IchHiVMjKJR@emMVhridEp*HQXF08`M34H15%&CHCT,D[%P`8KQkA#ZEIi(BS
kT#De6mh38l"lqEZ1!Pe#6A-i9pM%J0)PbK#$G@%lhC`qbbXhK[BGXeD#q1MSK*@
V0pU!Siq)TLAP)ekqKk6!lqZ%T#!`0@4l`r'DR09#93DLphfC2q)k9Mr)KJJ@P1F
bGI*k"&@Emj*phUff4MJI[jfBZlj4Q'F,`ZXIlmTkP8K,#m3Rd'KkdrA)Y1YJJRV
D*mbD9NbDB1UfS)GGTq8AQfcUc0TU@*8f'HV%6j6HG-4cXV$`i"-$I2+,))3)fb0
PbhTJME0HQS3kU(K#mGGU&,cVl)2PdabrjVhFqaLA10A-kb[il4!'3%H9Ydkr+D+
-,Z"Z44MKZ!hXDC@*)9EN*ZBi!8(C6*k6QM#GqD%KdQ-LY-9H$b6J[pf-R@13!%4
8fU9G9D@VCiHr1#KVkb-%,YNX10PN0ZU+QLCrQT!!+MLd4%D8CpL3!!mC&1cC2MF
-5Hr`f20k0461kF4iHpE*9(Ar5,Tk)Q+Z21i#ClMFXG,HlAYC9F(V1GXPb*1dJ'6
i1-!D#D#bL24V)SX6MSlR$m$c'Ld42(CrHJKeF8BYbd#f0V*TMP,jGUjUZDYU4$'
I,)28MX[pi"2$LpKH%QZNJTH#[#[)9[,)38HmL!QSHmBd!1Ah3Zk`#4PZp%q"Y`A
PMjif9TBVNX0G3bEm[M)'LM)C(pM*Zqe'f2Xb%HhhTh%iITS%bK-b2jQK3m8#03+
E0FF2Rk"A`B)N12Fj!@a@IC!!TKXjUMDQ8YJNS%JQ%BrSNV5`)-h1TXI8@XlYC$F
bV*+B$BH*U0F&Q)4!hYC'aH[b8AF-Q'&`H**pFKhQ&MD+(mQipZk4PGk[!8+A*hT
VCZ#pRZY)4`P3DAY[(Lj9h84iRYPJhNjlYG"%4hH)+5UEVE3ldJB6JJDNA`SDUU"
qe"5J&3"c3D5YeZe0j"390ZUaF@dXlZ'apE@-EdF2Lk0mbId5P9[HJaq"efQVi0Z
$R2#23hI%Qj55Ri[2pIUiH0Ie9qar8CIH00MN4l@3!)+D$Kf[)YL1XFI1PGhUa8&
rK[ZAUj@2di1F$qYYh#feL`iTN@rd%P(A@aYi-$H[D*[mSi4kl5YIl-MH*kTQQDe
TZmp$8VB#fP%BfXNFKR*p!`NT)'(a$LXHrFMl`C!!bTa#KBplER`@U+eRErU5"#8
r3T!!RRBqlhibGaSbTl[*2DH!A3Kp@k!GqSX*PLARTVGlfPPr)d1K#ih2RVf0JK+
6K(#6Hm!c5"A1[+Sf4J2bLkB5bf0i[l*@6KS(!#*-8f31ajB,l3Up"9)QiDci[Hd
"dbDD06Lh"lNj3G"CJ60BP48Z#fFfLTrNZ%GQrq'*+G%9`Ij9)[+h!bp2J&RJDHL
3!'X44*Dk4SN8+QF0HdICPJ8qGZGlF&a[Q+P@PdSYP5-J!*P3mZA`ebQ"XdcrXei
8LDjS`EeKL-[N2d5f9r3G3B"Zf--dqlIj%%Z[92fFeGLEXT!!jc!j&#Q!eDUU)bE
J#Yh"c@6dTUApqYSE'd1GD"G!0Z@V(Hm3EY91!$)3q`4I1K1F0h"9CNJr#2'eIPb
ApJ[mb4)@8([L1PfDLIZ$ASfK9fi6[%$YNZZKjZ4amGZ%,`5$-Zcm$3Pf5*P`&EA
-KQjV,F@bmr9E+IDXcJGbJaaPAGe1JRM3rVA"0*!!MT5MLFc2h+)((fPbM'*`6%[
Q9DpGqr`%C[#j5@#i8-dAVbK%BbXUTVKX[#BG416pA4c,8mb#65@Km(1BPF'Q%GN
!jfQQEXU,TMFcl5c-TXpj&521!p,AehVf`pQPKHQ112r$2-(li[Xf$r3YheSJEPq
!A'I6Q2X4pm!!0bT"EL$`c`Kq6"4fHK94FQd2[4,B6[fJ`f0pT`58Z5TcHTRT!a%
A0$DVpmbD4Ep(Z+aS&ei`D1Q6R&aVc0LP+C[*4rP2`'Lh@660cE`T)m0bcE*f3Z'
p'!RHRN4mldP-Tqj$$T!!1i#D2#@Ybr@d$fY+8IC!Gbkam-qX[M'#0hVUb3f2p-0
IUHVI-B!c-U0bBi#%F,A[M8l(VYB-5LdfSTUd#YTNLdQ(aq4dH-d%)jrEm,"Bcd*
Vq@MH#UAhmA@C)`e(pN%J*Vp,Arhlq+"JKN2,`i8`ckdl)9EFUbrkYCC8*MLJhje
1`EmQF+f261YGmRR['1cRE*0a$YXVT$TMYY6%iq'4cVAHC!I[$#T1h`e!GU"J@Ic
fJpdH6bJfe$MCT&Z(3haQaC!!YYhS3rbUIciE-81b0FXQm@I30j2l)8[XFjGPFTV
e2F5,4IiArbh(TT56(bGThmb-kKH5Zq&80"1Z[PZ*@`Q`LlrkQZbcHKrV5SFGd89
33Aa%lQbKDXlG[)-1PNiM'GpfAiZXe"XR&ba'XAafq+ZTIBT8Qd%`L!UjEAb"EiX
VVf09S&qhK3P,"JAD5ifkA1*0eb,@pK"r9q@i08[(d20%X"p2(NQC3G`-pMcZU0d
HZVfj,(GS+1J[kYa+alTq!6(a8K0S@5b3!+Ea9--*0lCZ8K,Y@+peFQc`rFre1q'
)6X,mMM6#fjZ2V!c[1C45R9P@#$kq`IB[&2BABeZ3!'U4%&&iTDNI*&E&bUfIb3q
S4INe0qm"*@Z*jSYi991@63UARUh+rrdeml#%0'APb'krk"B*fb"6GDiV),@P@!H
(D(Y21&S),)-dQ(q8@EHRh*I5V2(6$ENbc6B@'Td`J18*ZI[H-rERf914"ir2AdN
5IZKdUI9('YK@B-5c'+[QrI8Elm64AcL5,6AE$6c'dJ"q#1[m'K+EZhAL42N86ef
a8*!!NZbrS3TU3$(KRGVA-0Z2LD@VU"C"qZ"*6T+fClU@H#LVN6@eM$El29[K9CE
Jc1#lBX%M)Za3Z0pPf$r9rBBli3dSf3FlaEe[*6HL&mllpA9p8%1IPMlI)3@hi'a
k%SJ01cP5PhlZFIRLq*G8,6d@#A$Rih[2N[Jh28k(VaA3)CS'K4[frr!+1#`HS2Q
krcpqC$r0Q0`ZN9hm66Q#Y-T*IPSj2CSFQikH!5%9llrM+-(ZHqcma62[9ALEKMV
2,HI%&GalhFUKJBjZ!X+rp)J9i2q8[Y4RS[4[-T8aE8S"!3TB-5@j8DZIHVHf'L%
##Qjqem4N,`H''&14Aa)iNac$#M,XpL,8EA!TKfl#)FC[rYpqcP8Gp31E&KiC`NY
ZS6Mmf9M1bl*RbYYmKD%1VH$Y8EAAZ(lH40$[hYM*pPEY["fN!#XVB"4YL",Ud94
I#h@eU(#5ZCZl)M2k)6ET$aN0YGTah@dT[[LV#ae$U)M$A3rdfJAVMS$QICp%Qi5
De0c+F[*f9jUpQF-9HJC1@l"eY@9i&,+i'125+5M(5f1KT02k,2EPKp*L*()p@!,
1HD4d)E@YT$k)hdlYP1$SdP!NGFa-*BTe*QEq$1*qAT!!r3NIh2[cmkpDX6p,#8Y
&KR#P$i0ah1B*Sr&qZkTF1C46LfXaT(KCYdd,phT!`A'UFC!!8amkh(rX[RZ$#Mf
`bXbXIB!6[8(LDAf&P)G$,3,(Y-2J0M,`X,`!80P[F&G#L9G8+)FV%H-'"A8&S`k
B4DZ62(YiAA3,1B94(5q$,H-N&+eJirikpI$XMr(XdK[q%Cr`(3SLTAN!hE&(S8)
C9Le5(+6L!`Uec%SPGI@YK[P"el#LZ1[r-krSlj2EfN)368fAh)5l!e4T2*'BGJq
XN8)LiD(0PXM$[eNj(pI")AdfrF2*BU+)b2R`C2Ndp$Y(k*dH%GrKbMFIN!!54,#
BdAbQ[)BI#(P"!M!"K'5HUSA6T6XD[2J$kH5AE)@M3HcqHI##(6HSjbpS$Q+b6($
Fep0`dF10fYK53HN(,R2+i[[-f!KC)k6,rJ,D126b-6'IfFlVJ1+0YDhb8l)pcb%
Dfl@ma"H+1[8PihbYrm9&1L'U+!hQf,5E8kafD@5"*Gk`J$$FJJK)"$H`659YKeb
EVKZ@iK"q+k+M#EiLF2-mT%r551MVd[&Al55q3-P%(pQ`r%ck&E3j(GU4Xe$Fb'd
Y5PAh-(AR2KIZrAi,b#mM*I-I,"j'kL!NQbT,Z0Eqf1M%TUp@ZVhjZ*Al#Y$Nl+a
I0+&fSLd!aY8a9m05f+ei!r)jKcR6b'l`9Zr2QRpXf6(Klrd`mI#)'UIC6-'-[KJ
aNXQ!S+@LdU3qfHfd25(F,Cl5VMHQ!RNj`ppNi%!6hl,EF-cR84iQmfq`6NBFKNU
%LmUBqIirdG`dY'-Ed)2R'5j%F)ql6)4PS1GXDe`FdACpQ)SP(QNa6VmDCKVFEre
J`hALQq$2,Ick#VfTql4q3mI2lHX#Y2MYIjC8b4bU9HEH$ZbaKPpQjIbU-a(Y2FK
i%FIB+#LIqPVY8Qk[8@0-H8,m'5Zl2K4j,kaQCQDEEYRl1k[X+JQY6aCXES,aaF&
#6+MZaB-UhA2-L`jK"ilD'N"[ijNi)!F&)Z&hX*U'508i*Z5ibRCaY6d`fZ-XUIY
E"*9V!!KUY3$!JmL8peS-P$I[[0[-`H&b2,DB-F6)FM-hX0mHD81SB@b0"MJ5Ti&
"4rVY!23X6cm0T2-bE+@%@FPf6@E%@$AG8l!h"j6ZqD`L3415P@4lhFqA%i(@A*`
HPSRkhR$2`Dc-JHF+LjXji&#biKaMNDpJ&Pl,RrQIj5rM3e0&hYM+K,ScFbNqHM0
q-VA[@JZXN82YKp)IkMEKNh5@a`f,S8r")fZrp8HVlaAI0TQQ0`Je*cC)UEQ)pM+
'm)-(YD&k$3F"GhXA3TQST$`4H2BSp!PL*NVP*)6%pQ-k0X"lqJZabCAeP6f[6fS
NFi#QIL)QSSjm)Z5$kP1Dm@XUk"j4Y)MbV)%Fb'+2q0[S@$PA91a64!&USV&*dHk
9(0!PIPLdDTbH`QTYPc*lIcCPqiKD5*kIcBeE8*m@*S)Y@pCffkeaF$LmD9TpeYj
qIlT9HTIb2@1q+0&FNSp'!mDS#FAXJ'%ehq!Q5b,5V,J'p6e*''iMUEkAHKq)RLH
hHm1@bb#)BV#e4qj#+,mL')JR3eQ4J5MD,JT-Ja'D08DbGdTj@i*K&bqId,k+'pf
1LQLa8P[Q%%I8XVA6Z2MLVk[,U5V#!j@G4,MCmLX,KBmq(ae0h@ZfEXLILl5h"8Y
1ZVRr1FT1$6Cp&F@2KG+4pTZ-C#TSJ!2k)f%GGISL84Q09'[`aMl1%JPl6AAlah$
58a+r&i"cbFd6LD"JAEViF[$)IcbV,H@a1&UY6jSb,[#e,2VQiGlT&*p-&(&@EH2
chf"5q[TdS!,9I6%lPQ@2GDdPPNjqfM$Z0k3Tq44He#ESMG"63Mj@pD$1TBeDZG`
@3LrUrF)T#SGaBT%aFkMU#G!5ThB@VXbq@h$X(J'PXGKp8*PF88kNFFHIT1aUe[q
F8C%"ZDX+B'48[EXl,aV"[pPLMje@amUhm+q!-CR`3YS$E-*hC[C#-!@2em$-brj
m`a'bD*KC8p@84m!k`%4Afl$VX!(DPcmM1G+R#c04C"Ac1B45Qe)c28Xl-IqiCNS
JY5kmCdBAA8006a9XrA#Q"S6IJG4&#8+D2@,0*-@*-"!%qNF"lSmD-SGp`f`UC($
N-@)[%(ck)a)PB*ESJaFNXE(M(bVMTd,dXqULmi[LMA+i)"m#95"Y$ceViB6&Xmj
AJB+09TcDPQMe4P1F2+,JSK%qdD#($*kPbC-4Z6KckGXU*CHchY3@38rdrJM"h5&
)VF$d'`b48'FeYUq*BL%a*-@8',K(+'l[GH(GdBIDB+rAFc#Y&)%-!Prf#ZR*YVk
0`4TA'ePiHDY00"Zek@Q[Tjk*4B&cAr(Q8p`Y!BREffMjl`"+hm15!@QSNb[YhK2
K!9-V3eJfcaJ`*9%%'M%qP4iq!$L[JB[''ep625PLqe`ALf`fk0a(VhFGpjd*m(H
I&q)RN!##3+`p9`ZU()6%*!R1*CpqRSi`dI#iJJITGV,Lq%aEH&HYHKZ%,+'Sl&X
VE#ZhKq-a![p#55MI`2EE(L'K)Q'Z`e-4La6&b0+hrN3SdM"`Z-AlZmJNCV16F-K
9Glp9HXc5MGBJMJ+e16)X4P9I(@r"Sl+)#E"2T*rT,%Q#mZH#BPqbCL@NTiTe!CY
#0[1T8HqPkYj)h$9'LM2%TfBa%&Z3!+f+2C9rph2VZJQALJSGJmfF"N)j6(9XUQ3
Ji(Y-B[[1Z+Z0EeUU#L-kiUhLLEqiTL34bmcmX3l!eT1%9E$IS(-XUiTCY*!!9Cb
2H+86@NKcT5*U`*0P%j8jpr*$%I[XdADRqq))6PP&KG3F8KaLqZP60R'3!&(FAK,
IVbCV38EjqmNpE(r*PTikKMS6RB[hRQ+1NbYZi+P22KH!I,mY6'cS,abqb9lGF$p
HjGRBEqZS3$R5L&2b@QPE&X0[Pp!QbBTfmHA!P8pKbj@mcJ!-9Y$TC%YcS8HV1m@
49FXB'8ISSJYhUSRi@1Ld8mZD9IVV$#be#6,@*%SUTFN*R[d(TZa$ViRf#iSGPK"
MkpE6`8m`Z'5UjhTN55%Z3$Tf5AY!FiD(D&m03GLDNX$bVqmN!VpaG9&"aDDdPD8
eJ2'+%la#Nk3i`1ADH@kN4q%iUA+2-`Eh3[KmaL,Q`l%lk9RMi"aai1QGGD@@QN[
J@f@!,(Vdj"D9FiiXcMX+I1hYf#B09!Hk!Z+ZY6ICQ0U%,,0Zi'KkRHMD,%M*12k
4rLEGYqD@%ISBUl1pR5FV@FfTPPiGM8Ir4Z1+113NCPL&CD@PANI-%&51LC%p3RC
-G)0cdH3Bqh$am-r*qAe3NENJ%[VI,XPb2r49T(2Hm3'G,)R"mmmd!!D(1@"`a@d
24ej8BmepFpbSIIEUMca+PVS&LV1bm4Z6a-*96HrM%pXcm31ckf--FAd%Z`ieBkA
ETKP5NDLf2XqQ@K9$m+q*DmHqTRUe9VD53MIkf$M"P#[AF,c"(e4L9)U%)%MC*-X
L4,hQ@NJbk#,N,1[)p9F+k3(+"fE'9CG3j![f(d*qf[JibU9!Vi(EHMU'j1lD+!r
0qQ',8*cQM)TA$jb)lFYAGIe1TGJQ2'e@b3JRq8Q24hQ)adjRqTm++340jq9M+ar
*Pl1k&#(KNUQ3!"p1cUBIiCC"V)3VPR($6NrEikKh36@pEX9*edra2XGjcKJlF$2
XC)ZT2aePGR*-@Y`6+eLXd#Ur0ikIlH''3V%kmR&K1IBGLTpN16VSBXe*ZH2bcV(
(PKPR8''FTIpSa8E$0N("5B"cHf,hjd8@5STjV(NNEG$1H6f-p*4KZY)ClC8fIc9
%mSa-+p$2Rlcp)Dj,4!h&H'4lY1q5ckC2CJF@D'9jmac%riGK`LU*l!"RB%h!@rM
6FPU(-5b6a#f3!"VSVXqA43DELZ%RZUfqjY9lC&F+9$kp08BJCK9c4DFr0CT2hTc
DmkdE'%`-aL(*8BfBjcPLlh#0'L0G$4)3M(q#CGMkQTiri5(MfZ*l3#+raZRK,mj
b[Sp+H-lH1fCDSDbC4MbR(G(G5Ke[hJ(K$fqXUhlD2D@ilS``G&PS22I$pTY)490
1eCf3!0!C,%YNG&mf1fQ%c5%!93(9)C%p-1'e2KQT`',VB(H`5-p(lj0Ee62mQ#V
$EP0ERE#jCqFJR"TU+6a5CSDhBK51r+2db#YKBFQkj1*P4j1iXHNNL2&"&ZRT,`J
F1&Ua`$Nei4,Hhq2LI5DD,NNc'm25*1MPdqc%9f`*eD!2Kpcb['LjkNZS'QeA#ZM
2,FTmiFXd&(Pkjh-E#8ASj%GKAH#5U@X4A3!d`#X8rPhPh8m,MZGS6#2[erUVHN(
h%pQLH4JX0(Eh'RV"*0@6TM!1%MK*dkH+iq@KPM,pXU95(9QL&SHE`&60$FR&8f(
1UNLmMi)1[N%6Z)E0i42pa@&XMKe-b41q+ib8i@)RU+@4kde8HP@2Ij3&ijh98[`
5!Eh&Ml&%X*0EL,kTPc*kl0AHKPIGC99qSMAHc95Xc(k'&4Z5qX4P*-1r4cBa*`X
6Q`EkBVhCf&,8MG3eYEi3qBq2M3Z(1cIC`&3$YcR5!@iMed-6XTT0b-6%J%&pA#J
EciRjT[+Ap*HXZ$4)q@ePaMaM9k$h32*S`PMC5M4C"1$eK@2QXCeXV,jZkGc&U`)
eiUp1U5h@SC``@hdTAU&Uq$qF"q8K9,Fr-T!!MNiXehI%pmA!pd1VEQ%cN!!(+aQ
r!TrM66cSC"TmDSb@$Q&H!-10MKZ4QpFZ@Dbe1#$4%#(aP-N!6Y3MC*9[!2G0kAl
VKafF&V0m3q$%YAI%QA24Upf[*LH&9bGU`BE1RGj@PCI-pfZF@b5"qVlrDKaLNMK
[#JBk8#[3[IIBJ@IY4cPLYS$Fr5qA+&,jB42+,J'Z2NkVq#"NQ[N98Heb-q4b+`R
BAH&-&Q&lB-i20p1NXl"%k6XT(NC%U[83r#`Qj!PMC9DC#p*Pr(CkD#4$53`F@Lk
S4G,(p[5e&4FHA4kc2bLEf$B&[L6j)"2FUT18[4r1#IRB[FPX(Hap'@d4YRUSEiC
K%$IA[9CkY)bY[9m+)1piSZ*Ic[E($EGDNA5[!)i+rmS0p8fSd`3RUphbFmL3!,T
jDj4*AR84ERNi3Bj2IKPpZ2AhZC6Sk$AkkDDdkP6I'MLjM,lB[-YQbK@SBf92[N&
j,`KC`&p0pS5T-6-KHI2SX54QRbYc"Hm6'`Ud*iAD3S,IMQ6cjlMjr#MJ%i"4S10
6N!"h9Urik421'&(2kUpDZFl1dGS&KRYbJ#c!Gd&FK&F8KSUASC@a(la5r&bU$PS
FjNk,"PdG@C+L1l-6YcDk(9N25rj&AL-#jI0G-G6dZ+qaZhpR$&)`6P*Hp)`jAKH
Y'3%jK!,"+F6$cm%QUl!)B6UG6,Nb-q1@8'c,@+Rj+XL%N[S(VE1a&0Pq#58e@!e
9TTr89ITKcYkfaIrAj*2'M)(l*pSi'&i4KLd9cJ)V,@QZQhbiQQqDbhQ#)+JDD(K
`MVJ,5erRCj4JRdYPpkb*!"K8Fk&2M@-H'a3p56fRfSN9U9BZRr-P#QNXDY-`lCL
i"U*c4%B%5BU@T(!eiKp8CD+fCP[1XRVm5T)5Se3"ULP4fU2r%"a5$8k1QBX(k@#
`hj%TMUDR6ZVk9'N0m6%'A9P+&DBH&k62XP$&C6ck9H4ZM`l&*)a@)QU@3f3E[F[
Kj-*L"2L)56`J`f-JlTTUhZlF-A#E%'VqU#(#'@TQld3jqh`6&9+IF%%lme4i+[k
Pi8aFQe!$lHlYM,&fe,'VqrZKFb4P*'e)9r)d[l+$J+eKXESU3cJ&@Ri`C*)fLb%
FZ''%dlM1E((S-1HXjL1PI@,C0JB9q2CR&-apJQ6TGQr''JR2(e2PqYU4NU%#!4K
`JaR@A)$mcRpHb&ABH(#*dVjdJ@1"Bc%b1*Z28MPCJD[Tk5qP4%#$H,$&@6GbKZF
HA22IQ*9QAJVaVHN%PU`%aehA+Q")&32E!3LqPp4IFj&LR@+b9p*"H81L!'&XE4R
l2!AlBaip"5-b,j[#ImdIal!lM##!-lKK8Ui@M4EkDfKLiMKSmS`AXF0%0AJ6G`!
GU*p2GR&$eS)plp3NP8HN49,9aKh"q4*AkJ&Kb@8h$D&CUaG'0,Jl`i#X-'qMF[P
H$eBB+GqYY(L`Ih0',FRM1,3[Bll*qTL[raYh!Hd`RCX#a9bkDaPcdVeH!T!!b)'
,,rNZdqmJ5*fM"2h+ARkS8X64H0F9)#e`m,"30#)6pi0V5'IQ6JLaS2eI3cbD*L8
LP+mYP8PlJ6E`dp@DQ`i#1fHbcrL*D%L8*Ve@5Rjq2@"TZ`++5)JrTjj(`5Vf(3M
2RD5#A&5aZb9l*G6cKaV6N!"UE3b0TE9Tj'kM@M29ZhK%,@+83Y2Q)35BNf,fHDk
Cj`UPqXr(PNm"lB9EN!$'`4Sq4fS`+(Gi*B`m#[fB@X@LUlb`jDL49apB&SQI3bL
BZ8AJe`kfjrpq0$#qF"-TJp(BJPTAM*m!C9'f&-*[!8C+(JHH!1&#M6#C3RI!"'"
T!eaQSpLe@G2aAm10X@Vk`mCBcQ@1Mh0NhbiSRFMmh@`2QED9b'Gc1%4S52p("`A
k824+0NA3b0%RN!#d'e+QG&5Djed)D%H)`BXhLEMK-)+LjCKEcbp)92AIL'TC&,J
La(*#AR5%ZNpVU[ReM"jrN`HV)0N%GT8[0MM&PAj!rM*ihf%RYIMGRIm8b9$lNeB
ScV6bGGFeJ0XArA+V(4N`X403ZpU9Jma$1B'[a"9ID+(9Bl#%C-K*3Vd)pT8rH&N
Dl9#)CiP[AN`*3Y`M()[i@*heaTG@QGeeAbHR8rQ424*,f!QVNhGT"GCRa@6X&(m
59aMpeF62M#)"9A@b4)da,E5+CcLdd9T0PU8c4j@mbQ"j`ADrim4RHZ#DRrb$C,@
&1DIChrBIBamJeBbk*NqABb59#E&q'i)lk'SilTR&EPjcMYcKCaM(e36%ZJQ)ZIb
[+@SeVFAR3-1)ciU+-Ulm)Kq2#46Z-9kU3"rYQc1-q2JQVCJm*!UFr[HprKVrU[M
pU8eUk,9cR)QiHE!E4'EmVrj[k)NmNkd4#I9#$M+QkJrB68Rj4mR"T"'58,$h)'#
#5Q-"c["Q&QFVb1-QLakCckTQJNU[8j(5KHB8TTC[)NDVE'H1HJ&D`9Se0Q(fEj[
rej!!I$kaq$8+-G*[0)#-e"8aJLZkA1LK1Z*9LPa2(QdAbRDGNF1D2C8!,aa0@3)
b-qHP,A3Ym8[jqCFRT!S"5i$*[RQ+k@SXY!#6hX55m4Y'[Z$p0#'E-CcdG+K8Z-Y
f!LRD8pAKZBf)qN3FIejV4eC1erT%R!-a(Va'V-RKhA%"AHpC0JZmfaaaX5*aqDF
"eTV#PRlE(XZ8HZZ$0@(&*m[+mA4c2Lpqp853!-a!b)hcFGUa"DDj&6!8R,-ZRm0
L52PY0Y1p(2YccAY&mqY6Z8D9I`,28fq-cpTRY41%bC@4JV6,3'P1d'j4@fU19)V
GU(i0MfbV)+iHR6L!4cC26*X93PFD$,c!R++(De0DMd-!T2M+JUB(%Dck!dH0b'b
rjpa1c8YR(m6eec*"5G*UB&N8r!2f$b%QlpZZB*&Y&Y&''*+V4QAF1!rk$p@X!+F
VDe@2NFTPNPh4cmQ8-aL!dE1+i+P$Y8"-4qhPrFcMU,5ph%H20GJhTS!qqJe9('c
k0E5AE%q#!XE*MEFieJe4FKKk6bM3UDJ[@[K8F+ZIBNd+E-*,H,@&G3EB)r&eCbh
B`%RB`J'hhYh,15f$rrl%NR`qL01)JbhQJ[rp,@#Pj[`TkIlh@QY@#`DS9VpFpKB
2-)pV%l(CF*X(aVKTk@B$eJ&$AkJEE$ZYdFC+5+p6Z2H9XBd(EBd(XqFa*5Pi*Y`
'cbj*),E3re3p!@,1Di%cK0GBEh!pbECbp8mm29@4Z*-Uj-[4)pd$p@#X&UGCPU8
$[NH81lNF&9U"fHK$mH(K6JUH[V+k2C(RR@R(kKBiqFBrfY[EHHm%@jUiH##jBVQ
6riUF08C430'Te'6L+qL!hch!mE#TkrM6`M-TbFd15aj2j1*&jf)PPJCq'ME3dJ(
5K[)+T#P$#!d-8$cqX@@"6JdVpGk2i))NRRdr+Pj'#3Bq#6fc@TBUNVFENjE2l[B
IVNmPP$#QU93p4@DMHmSqR!6daeXU4b[(blQ9[!%K+pJrXIk3!0ILGaN(A3$bqRX
03lTHZ2QT2hHU+ZfXh+XT*V4YNPNE5$cemfL$m[fD"TGX,TQ08C,cA!eAXP$JFh0
jC[qDRfU"@P(@T24%,$H+&B6Bp$DmR[4b&6@KFQ"$bm'AFQiA!b*b9!+NU6)69@*
1UTcJHl5'8e"B!&GpQ%N`!a6"9T!!iLXUGJ'b*QGALJjd9b4T'mBAI4&&I3qUKGd
@D`%(Nc4UHr%F'XifNX48[rSDm4['M8(rfc0+U&R@"[l$HI%*!3m`M&'1Vk5LT2)
G`Fj`ZR)`FB4C5Hc40BS39SYZIr48$KSbZpAI1cB0*P2GD+)aVaL#qMR[[$a"Bfr
#XfD@+SL(+00HNdkT29+1&rr@$"9B*VlAeh2mijDGL@)@I4U"BReLl$rT$CB+AbP
iTkVEpFSrh+lPDN0L1l`lEeN[MTDlfAdBLq1TTR("0CZ'"'E,TJq-I(Je1RPT)'$
%93"`ha'em)Hrb(CdC+mdCN1mkc['2VGGR)-,V0rkFUQXNj5,d34aG-HGFj@DR-5
,qb1[U@X!MM1QK@@d)Pdp(K"lE'3*#BfM2DDeVBCiVkNH1m2&YPFY69)"hU+%KJI
aH2#mXG%2lm'i5mFA&-4h3ljRm&-P0HQmbBaM'``j+fRKqeKS-46T9+5Y6*+CGFQ
UN`GE1+%-LZVZl5[KZhQNC03jJIDhX2&`(2)1djIAX4-IhDqp9LZmD8&XP-ILPfA
'V[')R$j6E($TN!!c,6Ck@B0G`)rM%@V#m6#I'8**GT)4c1&L9(#i3(JpV`EZL[4
*aZ[reUDej,p8PZC[&!PBT34$hMfBAfKi*G-KMYMc5Al0hr9+6F!L0Fk*%r$0HHI
BSG`erDF2Zm38RZ'aq98UeV+N[TV&6Jk*IHeU+Gk)a9aNV32&8hd&'ZXVHNU6DEp
+"i33md,*KL!JqKNfh!YLKp`k'A@q,Y9Ei+iC)Q1R&i6PBDSF,rhclYS&J6AIm[k
E'CCaqpKapjh@PPZl4haq9!NY3F49m,9qL*D9HFh&e26"!KB!aPE2hp&Nfp9@fVE
XAlPi!@EEj@#HU'9PBjQEbSe%UkMAmh*d6XejIG)Mh&q9`!hVhYN5Y@2H#YF),EA
5[J'c"KQR+e51G'SBj6"+a!fde1aRje28a5qi$6Alq"&@-h!AMQ$M-F1i0brH!+h
h-@Ji0966E0ChHB+(AYKRhq0Q#Pl#BHEBQf*aB+Ckrlq2(pip(+IQ0`)pcedLNNF
)IZU-(Jl$dlXc+Cr6U6'U2+,dir649q*4LDF6XrXC6ef#MlDT1hIrFqULM(CTC0I
UIiPPc'k+)Bri%CEahi`&jGfjNQDEa(U0m2bAq`@8UMZZclUA`,Z6PE9d$fSI&XR
KAC2H'YAk6jIqfCKX@mPP4!fP4*,!Da@!qiQ*CDIV`!K4abJ,pS5lf"l&JVEYF$e
HZYL&Zif,repl"R-)+clmid-FR),HFclBC'3(YNDQlc`T2F["3M3[VDHLfKQ',Nm
rT)&c8FXFUf@i+f6A,k9erVH"MBe)ERb3!'2YaHfa,UNTViPhq9#B[c9S@2'Ff'L
8L8AAG0HSjYBZa',[U#p90@*mCH`SUXr5aA8PX#[qlV!N5p*XFeYeATl,0dB!c6T
H*"IjFG8i%8ZcEcTaLY`G*PrZfXMP+i#+8Z6YS@Tlh@1PdHiBb+9@(QR2r)NK4(N
ZMaA-[2%H%k2UJ'XEfhfa@"Fr!BEP`Ri-`c$q)2VSFrh*,8D18d1X2TB4+lp,lCI
Jm)N36h@D5J4-%UI4lB6@61"qM&iX#S[`Z#l6kpDIX+`1pcX+d)2ek-)m)4UL4Mq
92Y9qD$kiUqF`#RIP!AN`UhqaB9i`L+3CP+#)S14kiV1QBV)`XH`f##2)@TJ%-hV
KiG4L,+MT05QMPEKd$Gl,FbeFk9VJhI'IB*f#%0m1hekL*-mDb#4@j4cNBK%l3C5
18RQPp4fPM[HpXF)(TN4SH%(`DX"f2PQbD#a6H5'+b&NS)0$B@K&U3LdKi6jKE%R
YkA,QX6rdVeU1PrG[H%`e8!MZ5V22!2eD9#RdJ*V5+%GZ%S'HaJqE'%2S!d3%1Ge
qU+KQN!#"9UfTF)%S##!d4Kr@)q-cqDN%D8[&KK4fkC0I,eprj$ihk`46rQp6PP1
f*$cSP&aAi@,LNUDdF@0Y*Xc%$L0#bGN*TI6M'D`@lIp%j5Am0(`4a$,JAf0cGVB
Pa)5IfHJJ)[rkR5qFphaA`@h6qr$K6jRmH62-+-&UhKUTXhq+!Hri256jXC+S&")
*'ZjkbpeiJ5fCT[6Mi[b4kIE-dAE4X8Nh-[*jH8eJB`B-8C1dI,$e&G3VZdrdI$R
L"Tfe*V03CRG1fLkIiYiPD4%jQfdqZpQ*bBch1dXVR%02qeQ"4@*6b0*LJ[mSMm0
$&QpQp8V5C#*"M09SL%dlT)@1di%"X8rShN-V,j!!560-@r`1L0PU**2SkT0`"1D
m5))1a2i#ZSlS&4iNIl(2aihbc%YCDJF+0J"%2H[T6Z'a-D`JbD&AND3fF&VF2Xc
dXqHBHfRN#0Q#PIF59j30[K)#'*6i+R5E#5V-a[5[$QaaK#-@X[4HX,RR`aR"@KL
hJUH2E"Fqd!(VcCH!G!FVLZQa0U6kMLf'PEr+Q9aB[Jfcd2'B'V$KTh0&qf[(C48
Z5SVN5%CJi'Q4PArP%FD&%bQCdbd'!H!"eqqR`5Z"L"66N!!5BV8@JV"jH6bdB!X
N-qMEhpdpP%i1ZFd,Z&[6a`qH2('$EY$E`b,FI+HYepHLpiN)91%iI1NqcS#)0Cp
bcYLKIL9NrUTML&5'A0RTeAZ")Z,hXb-"(%*cGF'+0XE1T5F*(Q*X3hiEYlNU9S-
!3F3JTe-"kakS-UT3Vcd'(LeXH0c'lP4JM14N,&&,)3MkjHTE&hfMr4+G"Qq'f[G
%2VJNfR8jV*!!BZ(6j36-+r2hJJi1qVL!2-bm3)kUqdjX*ijSAR$Le@M"J[P)Vmj
8iUCh#q#ShNMF""T,S6&&+1L+plL2b'i'KMrLh@'(GHYcTpKTci49V)%ZAkiIG`r
B1bSq4#1Sb-LF)RMV&9ErEE(6DT46ACp9$U`02Q@r13KE)qE'qDZq`1CUTNlH4&c
,4@'QfbrT00SEa!`HST!!Vaqj`f+JjIbMTRDCKHUC@XP3Rk#0N!$K+0Yl1PTZ'p+
J'HHaFRI03DBd%FE!9P+EhiN66SdZ)#8'-`YLXG%BqA`82"d0R[Ja2[@0@[P*X#p
Jl*Dp,2ilZp#V)(P!R8kb%X0B1ieB3bpSK+SmTN1ddl4Yh9m5P80`KIDNAX8q+c2
hKpU9#4T8rh@1h#L9cjB2IZhp6,jD8Dp0Lk`X$L('8-iGT*GmKY*frCCpF([q(Z$
-eqcjG"rAr-!F!QFj,h!,`paUZ0[bB-6#kTVB*)jQ(JPi@AF)cmZ+aqSq+6ZmAF"
kMG)"-QYF'HY6!aZeAVjPG10X*!aGQDT)h55b9h9)RHpNZ+k+R)Mk!)ea,A`('!a
@FpYI58$eKZhLb`,2'Ql*de1K4@rj2'9c-(Y9FIe**1*c8XiLUmLZB+[*(CGjPS)
LjLR*$lKL8*%##,!A@p9a,hBA%#'r,c#)JGDSC4-C9c"3iVMc49MB@0mfaG*&'IF
eqDIddP5c@jEFb3[)XPR5eE,dY@HA0&HEYCP05,N+TcGCQ4Fra'+hpp`h-U4K#QF
99R5aRdrYpEX96XE)U8q0FH-k95`U3M1j&5cR`AiD,k'EZ0L0ELF+,`!9epRc5b#
dq9AhXVQShcMT1+Pa&4Q*#MQYBB"jE434CqRTiNS-d'JpkK5dbEG4SSLSL5@G#Ak
Qqm1VCFlMjahh9NQPU+pHr,aKEi&j11-$*2AAb4-IK-1*4EY-qZQ'@26c'B&)QqF
E,(HB$EXi@DQ(fFYATQDb2LCb3*!!YA"(RGX&p*N%erCk4@NJ!&TMJJHL#VRE-$B
EVSTK5KU@JjJDr4N(G,4"F4fQd-182&ElN!"U*X$Y(qh!458kF0P8'rk8JhGjY2R
`23*cCBiUE-JNUGZ%&08Lcdd4jNeC4&l&TQFB4E+L0q0+IA&JM'XU(SV8edmhG+Y
1EM$NZ%H2#+D1jPPI`Ae68+eUZVS4J4KP00%UP%ZdT5l)d%4-KNKTXJhf1fE8pRf
PQ9jQC"b%b0EGqqqX8hFE)@IkT9RIMfSb"5(UU)m3d2Qjh59UM``ZIKQEjF9`c)&
EklB&KL,AfJSaHqkGRF2Ia`V+0eicL+lkGcU4KXmrZM53!2Jb#4A$2pdacaUF-*2
hZCppLYpVQ[m+J-DH"0-NiPV@(F#%k4Rme"8P224UK[&229NDLpQ+h!93!I&,)@h
D,[F1b[CrRrPVqhkDk5'hr@pa,R$J-9CU6K6mSb$+6l5DkSRMBZ[I-f@Yr+MA)%(
ZD-lGQp3FMV,V&)UV[9lhT[6lJU+hmE@r'jhN&NN[IhBHVaCT9qVIbR@di(SEl`1
I`EiIXTX90'mB'0AqJmlEALe`fC%T!*pi6S,ZKGX$UDE4cTm!MiU$,DE62jTcEX8
H34@cDK2pd[dHQN1*b!i,pfND1a$A0P(-1hRJQkEKDNS'JM([)*Q2BKX&f9!(bT4
q+lXr2PqPrS5(p$%F2-mZ&83P)GFQ!GJ*i*TSf,#9k&"VrmG@rdF)R"Q"1-4C$"Z
"RX0$+*8PMeBh&Yf(VU9mU(RK3rm,hk"mjh"J'm6N6VV"dliihdTMR-b@mAdEQ%l
G#6MX-9+TN!!cTeb3!!p%`fFV8M`33fS`'%DFj%J!MkBZeDRTh*S)%VV2SR49-De
LD)Ke&Q+0'3d&,`(mMHU54&m!VfbSV+RPDPr[LDBB0'iiQ)XRhN0NYM)A&RLH-dr
+D["8cEpF1ICbMIi03ZJN!!h9R0,L-X&r#M5'*bIJQTq9TK&JSk*RYdkG5HHkIiC
k[ZEUMcY$X1I,c#&D!aJ+SR)E-IN'FI@1,lP8F'k)NbVV(r@H!lfF%hd9A2YBT-r
FKS0Z"L'%*C(86lR"(0I(+MkSKjcE%H&5+a-4*9hMeeMJ8aJlQ'QpqBEaZbX5e95
#(1'Z8Phqh!KPC1YPF4$c#i,,!-blmC`DZ[T*q[%f%CD+[S)-K)V,!$he,kI1[cV
qL"&#BXJ&qcM#H9E(12(dpUahGKr@Vr1@2M063TmPT@f2C!TXV`qQEANPhi!0!B6
&qIIA6f05"l&9H13*ZkQDP'MJ8VkR(9bQKVKl&-4Y13T1BTVP2+A1V$Z9djGC#4G
NE-fJTQQF205I5l6JZCV26H4!XSi!pf),U821JSSl0&BPV399(Y#YR@LF,l[XcRX
0mG`#icdJ[,Zc[liZ[9ec[+PJARRVJ-%%(#9ifHTTJ&ImeD3@@k00Nk&`XVAp5D@
Uae(q3kVe1R3'ARr(EPSK5[!kfTFm8D5E1j'h06bGE-k$qL[I568pX&9fM8frd$D
rSh#(6J4fkSBDB6[%afZjB6N#N[eJc@)33U,1ZV$@SC2"+$#ARX$IJ6'HVj`N(*F
eTmDNC90Cid,3eZl&iN!BfH&Bj$&Lp8$DplEeL0)6mPF,@AGi8f$,2ZlAV#TYc#P
pT(BB@hrX-+U6(8)6(4q)h0d6E$J3I,JHD*CNldMG#48qhi5!m$&DcTZiDfQPcJm
VIN-m1XqiGEY3*IblmJR-@PjDV#f+$3NK)lX[FQ%F4Y64)&+1EkK`9d-bjHd4aTC
9lb4Lpj1LI(CjJKCFBE",fZ!aUD2j4XJ+988b9I1PBj24CPSV,*a(TCfb3[-e5p5
r*qAFD3hGeNV8YBT9`*25#iZXYN3jS,VDahl2T2Kb'fY0NUj-9CG'HlFh,ip,VFB
LQhcP0@pEVK931%ZQ095d@bi6L(GUf4rh25$UjrfmcPZhPGSQCZM,cPZ,KmD[9'F
4,()8qSmFcB[a`#b'XXRA"M0YLA1kkeN[rIZj4l8VV&KPeA-&(IBNmfN*#UICX[(
b4f1'NQ,@[CR1r[pAb,RkRQ1+m%IGr`cj&ab-B-rMKS4+APlcG&c!hi5mFZJN$r@
3!%9&YA(kjIKm[Zpj*`K!*TM%`VQi!"$U-[M46K$,41$ja9q"fFp3)pSVmGb!M[,
ZKMR69Dh,dZY)Qk&D*FL"r9%c-F`4rA(cQ0J-p&qaU#3TcjUGTD,"I%QSNcAk@me
,1B*#HrarGpePV3!8I6F48Gd%U2`Z80MB`kCQrre'$&H[9@V%ThA*-*3!X-CM61T
SE322+@,(UdXH2d)prLi!KAK#BTN3'c!L039Kcp12-miHDE$99Q60FNFE$L3G50e
PiEp9VNXLj)$%L9GEV+6fNb2N)e)+(H4&!FqBYGeUQX#a"Yi6"DcN5LD#$XNGq9D
IkAL%-HrGc*!!6)(6Jrq29a!Q'h8!9N-djc+G)9!Vapl#269+!Ipp54QU91h#1+I
Nl3"mj'EH#fi0(!F,V4#13$6#FcM!9$Vq&iPh`X&6XqemCMG+Ea420(f#55,d`M6
#9&KB&1&!)BCQ3$6#`KMP,F9`3$#3!0&XI94Bpr%FCU3!A&LIj15%qB*I3-@C"m*
`2Sl5Zeb2R'ci0p0(AX49dmZPSPSj02(3X[%e)P[HH%QBe"IPL4LJ(iDk9MaQmLY
F%eVG9$IiVDcHZ%mPNS5!3Q'S@ccTa2K)II)eAK6L8+KBEb%HK5kR'@fHF!J0ZSq
2,a9mj$*LIECRI-B4G,JDErQPaUSNI5*mUHe`j+h4C`3J2)E+$#r)hD"di945MhX
+@JXeP8Dm"l,U1T!!ZZLQZ+-e@JhPk*@#p6Qb3i*D*i8f%lNRCFQUJ8@Sk$fikbm
Ll0ap)+1'58MQSPHbBJ,,P'aYT1Mp0QdF5rHc-&**K+6lmPQ`P[53!0-IUekJ#D5
+Q(kTR(fkbp84*lKpmAJ!kAFrkf'k2aF6EEf@)D3&aaMK`P,&5cL*#,XRR"%UT4I
,MUY#B6#Slk9(bDZ[qqFG)#mr$2R8Ze2MZ6*5*p2DNB!LpXpfL4j6G6GD[jc5EbQ
B)U[(pbakX8,R14QV'['*'$(4em6&Ci`&E5*!(l)j632j1hPPX,4jkPT9BL(T`%!
plDAPf*%m`XcJ+q6V5iN4q&$`HJj$DX'[@c%r6#A*lf))NhF0NKIT2)I"X+p6!PI
m(M)(FN,rA1H6""HdZK-K(#!@aNeDUMiMNQVE5KKh9U93BYhi+B0$+['Qf`Z+4QK
qZmlG0&SdUp[`@!GmM@3Eie9,VkmeFi)dZV`XqdaBMbA8h0Td"dl1SH-Bc`keQ$L
'Di+a!G!9A2SQ)#r2)+U[3+B0!r%DSfk8@TJPp8+0erF#'6X5IRIJVqdC5MYSDQU
Z4ITe6mC4el[&NkNCir+6+3"h)Fc+AaPl`'a!k`RBi@SL@4*d80K5h6ATlb*&LMR
fj4J!)&-6(+)4+$,5lcdcZi[qD$cTkHqQL3XBq8cCdVM*8UP2Nh4-Q`GCGN,-2%[
*XT-!GHN[T,3j8SIDXHV3(6k%LGFYAQ[H-DXe819iFr2h3eR0hZ*6XDp$Hii-JjX
63eTrXTUF6k"XJ'S5&&2G&aB`J"Y6KK#dX)JbhiN!8maGbPKr881aMKE(P@dLU($
ZBNp5!fG%-h`Jiamp5mmBHY""K83kbH'EJDhY1Pf8L*0j6dSk+$"P`Z*2miS"bDr
JXj3daCr)'6feXmpjh2paKJ6%26bX100B*9)mi(4CS5ZU@AVr-K"+*Y[[i!0%iQ1
*1k)h(F30!!GXL'9N"M*IhqSMTPHQVljLd[fpFI)p[Q-qHE!!,P6NDaq5@p@'16k
4HAQ3!+bZS(NNTcI3T1F5LZ9A$H#iJfi)UA-k3Y(!6lRAM9kq)1)#r23leI[-brl
AU#"FYM(c-1SlSr&bK*GBAbrKrIA'8hIIR3FJ2dNS"BaPPE&'V'T&@K@D9hDD9TX
II$()(Zf9T'9m,UhT&kS'fTeq0p2jU9"I"c2-Z!DXb)XIiPPhH#@K`A+#!0`-p)1
M3lI4A"2-he,3i)I)d([R$Mq+'p"ZL[fhYPfXIb!l[&pKk"X3eQbPVNqHJBG+a@2
#5epmIZ0*4U%Ue`IA28hFp84kAfS(X&D9Z+&HF"Q0RU&MPXQDFPcK"Z@3!--T%-&
eF$b3!-"p1[MKV(D2k*!!T&lDX#YTKN)E0RM*Y5ETA)V&8-X6K!EBJ#pIb%@B4[i
6P*0&N!$Sb6DTrcG`&2$2dUVj@F[*b"L!MXfZ$89V@bNl90Zf#B5QUp*Y5VJr$2a
(``%&EE8Pa6kS%l%aU"4EPMiIa#6ca*Bl#5&jRN4,6R1,6RiN!M0"U2'P3Mel&%9
kEV43Yj+hA`ac)aTCiKNC5j3aASLTeeDS`-T4+##5@9dfdSjT6%STG1*l1%2F2@e
FUej1IX,m-j`&kl+X)"+3!%J2YB%!@9*@rdKPN!#Vk$,6@GS@,F4GCh#phmFM6(m
JNRRP$hREMcSB-lDNm(@2jkcMa"5B$8k(4T4Q%I6SY-q-PA5dDcMEj&pTfTb%9'9
3TrR[*%kHH(QdUkhB2MaV$Z0Fr+%3PJ(T9V5H&qf!DRd`cNhQ[['+6)e5iJ!*UpK
fIp1Z-G+ZpK%jQJNDfmEEH50dX5LpRMQ$fL`mH9BV@-k1,T+4!LMp4-2a(SHVj&2
B1)pC064Ld'cAf"IIG#M'r(#(T*MTISAm''cl1%M353Uj0GCcR@J9J'43"+&pES[
ihiD"qfpP3F@ZpaYQcm")m6[Lfm3Ba#0X0-hD`FFF)eY#JRiH*Y9EUd8kf(Tqj*`
6'Ddc+Zc@qPmLUXm,0jHmh6)aI'5'!8alPI%JqVPLeh(!k5+Di51-1)-DC*CEhj3
j@45DNGQEp2r[iR4#X[aD1@eG)QTaL)lm(+4)5c0S%pTmdHU1AeS#'Xd,cad8p#E
R&X!"@*bi*mKe4GGlU0FMLD)SBeUH83J1MV3LD'm&Q9U$$%CJ618a@aqla$@,ADr
D&GZj5eCr9IrEN!#B3RU8e5N)F%E1X60eH3qQ521ET#rm(UAdib1+!4[BD1L,,Hd
+$-M1'P9Z25%9V*fp3mqSj@4CT!XiZb`&VkMFAb9@bM1r-MQkEme*36RLq@&kZI&
58jTIlA,jTUci4ejkCD[Li(,2#AcB$I'SViV20`b1(@bU&k%@a-BdkQi'p!LlFEX
RC3$3D@UVT%*Yb9E8jMc$NrT98ef"FilXiJM`ak1Jqa"RP380,bTk*'IK[9Tb8cl
GjZ1HQZNeeh,rr0%MYR!&6@!rALXBa-MFLSJqeYc'rNa8RpJCR&meqDGbB@0j9!Z
2`qXU$epbV5r,#p8NDAe)SUEV(KXp#YPJ#+dj@5C14DR!00qF(rqVeKXH(1b93VJ
0*3(L9ihZ6HXHPG[Hill4QT2+6Rjfj'4CdB%ZDkBcqeH#3@a)D'(2)(k4''a$b#E
995JG1GCaRPF&lSE-"51%kSI,II8DqIiEhhEF4fhq5X1#+S"GkU+iD0lfRKfQ#MB
I0Sb"Y$Xd[-P)f,b28kZ$9am4SM1Rh1U$BNk+cU5r2N-cA([JcBpedfX3`l6(#ZU
XZ4a)PDUZDFJJ-,iLUd''eL,e,R44Q)[9fMk@NAp(+$Ff+fQ1&(m!),ajaLNX[54
[@hbkTaBa3MXRNp440jHL"k8XrNGd)@fPJB!&YiZ!@KrM6aMc`PBjr6B(kBLVJQE
PY[Uh*fd@'HT3+%$Rf@Y"32Qd0fZkK%(bMa'VM0-afRcb-f%,DZLj['Rm@Z3EmlI
kMPa59Ch2+SDV002R`A%'9f*`F8EDEfX-cMNbUlLi%+&lKkP&HLE)mG+b+3%cE&R
3l!Ab5Sc(Y(S*qUm"DK%8Dc-em5pDDcY)*j),%ep&60L%'m"4F)(bCHm%d1r$F)%
L!D*clX1pV`jppl5R(P$SIVL3!*Z"Z#JBl@2`&K'8&1)l`Nk+U"PXdX4fQdQF4&2
4KJfDKJZ##EkVF($6G*1JX@+eFCNYEG5"`V%N0`fqcKL6#60c@G--+V(L&"ZFNlI
'P'Q23G4qIN'3!'lFcc6'XJ(DU@ZA[r,*$Tq%p,DiY40q@Y+%p`k+"ZaBAJL50XI
9mIFSYe)CBFCYlDL'Gk0T)0SB9pNl[@NSRljmPl(Ip6LVeiUQf+15F6VDe`3l+Y3
8Ze#I'Fp@4(VECZ%r8+p85ZcJ*2UN51"K1Bj3%c,cU'Z'k"%j9CY1f#5JN!#P`+%
+&%#FKj*Ck8d+MZb8b$rp"cSY6%Tff"*V%biYGGf'0Y66L4F!ql#D-ld8$95!J3D
-r!Q3!(9LQSiJXeSFGFe[IIf"X[cr3f+b9h8@Q@JCqL3ZRN`+["hNK-3bqXrH[%q
3!$,dhE!5rB`MI6XlrBKK'B6AR'lah(,haVM4R"[S!b-,hBLf%fB'A6GYrD*Km-9
VfXc2eD6Ec+kaG14&'40BTAabK)V8NS6`T`D"iZRqMcE+EEL)H+RVaD5hd('!r%%
dN!$3*YCc9-SE$pSYk9B3PjeK`RcJ#jXlIA@R'%D!@U,9,4lFmSp4qL6J08qI6)'
`AqPIP*eG)k3%B'k`UmN9(,bSUjc9lSYMmL9Ml!Gc`E@15@a#1Be-fil6k1C,l1G
AaLRVM8CCjBEf2cZB'-F8T16H[N1)U'jB@MDjT5%$R$pE9d@e$DMB)VRpFBmkBih
jKi)Z8E@)kI+B8b#0ETK*4+,EVra*Y'9jPU9QRc+pBSa#3+SQ(0e116k"'BK3YT*
DFXH*X`Z!'6MXdMF9jTa,G*MhfV`eV9cR4Z4*r#)YP4m!(IPAC2E,ZAF,AeE56Mk
ZBp!PD6B0@i&+L5XmZAqSL"@pX4YfIl%h"AV'KPRcC1Sll4lhY(UAmc*SfrfDhAM
Y0+ZTCm8HNlf#Uq"HjH@qCJ%4@HjpFaE!PI(I9[6jFUi(l"iJY4+qfD20K0,QeFH
bqD3Ypj%C!'FDV@cDSVFXTr@kAqYTI*+'80)42$`k)9Y`!0jp11f3!!P8fVRa9R[
SjI@+YDC@2VQXZfc,-mVYAa(MP5h)AK,E2iB#-qNHhQfpHEBq,8S*8)1*C"NZ2iS
VC*!!`85ei(0H1EVpS4ULUUEY6-(LCGrE56P(b#9q0Ai9hA"GDpNMRa64GpMkCUd
Q")[2NBXZUM0Zp%XGQS09G3jXbBkI[D3#9BUr@[AbkC[aD2K+`hhcdi,N%PKY,dE
LC0F4rVZ&B`"MSM@3!1JPk`$SFr)kqJi3'IU)N!#a00+qr4(&Z8TP1`VdG4F"$dR
9Cj@%Zlh[8l"4[CVUMb2$V&$hP$c'Sj2,JS(-SZNG"1DKm0YPS8)VN!!BRm@3!1Y
'Z#"DYVG1lar+$@GjPS6RPAf,UhB1lLKa2F%AK*X,QUpiJ@Y4PRT3$(-aNiEmpKD
eCb4r0BBBlUA+%lbppJRC1r4(VFS9ZC4Sk'NefqF6j*1HhU-H,UQa5'BEMe@9hfN
Ga#pXb"38ai@@'UR'8BcPTj4*,+4V8'M+iqIZ9iZ!A[`Rpr(9SDr5TPRVl5,EP"*
YV1*QIajk$USY$5B@2I,SjlL'1E9INU0Cqe-N,-aX1V(h448QfR4[Q9@V[1U-0$Y
V&k#0,0@SQAXl0k1kAJ53!-N9qDH14EUCddCS&!12BX`UC)Klk`U2KB-M-iMG38*
p1YDM5QrCb9L54(%``**ZV&ldM"S-q%rKB2PbG6Yba$0UCH&6Er,b2fiR#TkhEAT
jLaRBYSkIqUYTD0l-,2CP3Xm9YLV-'1Z620,[@82D180PB26K"Zd)`Mml@f`8#9X
q+c88-AEU"&%c*[X)P0*$(Cj@Q56h6GKm+6m+A5*c&P!SR)HA-V-5aS6HkCp60MR
mTVNpYHRTEqQ'91$iX5Cb-J!K[HI,LM`q5k[%RUZ9mGC$I&Z``6BLcqV5(90`Z#[
8a5KAQ$j[TX11TUA5hSia2ZQ%m@06E*9fC((YhcLYE%2HR!-IiJQ8*CX8i6)CC3p
I55XrCilh2il!D[Zeir`X#B`NZ+8ai225)iil9b[,Y!D!i!&pC4(mVm33Yi)eFdA
kUhZ3!+,0N!"4LrTH%ckE$kpAal*#-8P#UYC6HJm'FZhBJIHe'[0A!U1kcimq!*-
--kqJHjBr$0iiAmbpM*0&k"!-[,#+4%S,a'YN1A,haqYqPB-l!DV+f)f+`JNII1Z
SDLBT`EU6Y-6h!&&pZ92CMbBd+52ljATcdBe!d`GB-82#p([ra&K6C#Rra*[K!A*
+8D`I4TE)2%8Z*&,k,S9N3@XlEq"mBQpHV1[$a5r[FbM,0BT@[peE55Fr)4$c2F[
KNk"%&riVDI-[iS[HbXBE`-TS,PkP['bY%,LMLiR*-89P4@"GMmYqIE'Dk8KX851
1F1$A[S'kNckTp1+`#fHj(P8mVpZjAAkf2%0CIq,Th!jdB4MH&SU8'i$@6,%k0k"
Hb8Pi!i!,c0FqK[Le,AQB!pKieMC&CJYdhN+di0jL'"ch5",aqITT&NB[L%X[ZId
kU)i0@pRdReGpi-FiRQdF'HD%kj1GbVL,b%F8%UDF3m$k)ZJ5T4U%e$MJ8PmBMAm
laB@C3DBijXi0Qc6rGZ2N"p8qjXBBU%"jXc($LTpq8'ERFArXXTiSa3kTJ&r)ES"
8@JD4CMpAf-jT#98ea)iQ"BTf-rma'4#!hf-)I3dCEIrJXJYqb,K52%,8JFaAe(C
Kl+RLaG3'GTGaRpV2ik-XiQ`Rd9"9k36I&L`Tac`EGh`V55M1*XK'i33&9pF6F-1
Z$&FHKikMlA*QkVdAqL*pP#b`S%01hZ++b8SHh#riL!'-rIA%T(DV["Kqa,aL244
jHT9ZM#@V0qF"P+l3)f()0N+I,qbDM9C9T'ZP4BViB4$j!lKIlI)"85ldF8KjTiq
,[,#3!(`BjD6XQ%kYF3Y35-1HElp!q5f3!)eE(YpIJ@DUI8RIrNY31*!!24TBk)N
m)4ZJHGXkEp4EaP+Ed,,M5N2har@DQ!P+@9CmGk1peYjYB)SG9qIUB8N`Hl!30Bi
S5iA"JT1f#FQ%`qJEEFQ@LQ%aEcUZG#EZder&kM[mUlf+m,SafD%@6Bmcj@Kh$34
Cm#DV&N+$4qD&`"[TV)l'M)HpFehRGRCJbIUA[N0ME"a+BKLc`Q,5TXl6G9ZYZJG
(Q`P$S%Xij#jTYiNAFpqjZLaC-YJ)ie8ib-Y3bP"DDPkNJDHA%r5c$5kUE4QTdj-
YN33lLM4plcde1)@C8lAl&-AMRMc-cMBLfVR$KBRT*GrfAi`"P5hrV#`458a2mG+
i3(jDL#Q%R)lI##QkM6#eTmH+QX#&@HXlS4&'rr')+!&9ep*SS6LR%68J*KSmpFX
5&i-'UI*M8JfIRmb6#bPk4kZ[2eQF#FHAFK6rb'+aU%42FlH'fBE%m3eIBlkEb-M
!NILQ"ih"DVS0N!""d#-IH5R9R)@2*5Ei&ISD%#3FNQLiAG!)L(da,Y[FXD[22,2
!HceUL5@'LDY+49E-Bpq@+D*X2`b$rj(HcM#8T&!c'*J%i9R(&X8J%HKlr[dEer'
VHC%(hZ3qq5G(`&h1dJfcE`[bDaE`QFAp'XrBX0N6kT8f,8P[53f-ZQ(@Z)I-R3)
a""l5I02U,e6hM2VJ5GKeQcdVNp3HCIA"I9*6VV2U2J!Sa$2cLYV*C0#**V@jA,j
GP5hC0RE!kVd35*b8EG9MX-UZ!@2Y9BRSa%pAE21ihk+i2#-[bE%M+6NBI,KB2LK
m1QI0RT`Q!SJBSUmEj@"kBIY,[8d6r#G1'LY+hrBRX#r`3l'LVh#e"$$jRp9+q80
fJ!,-Z8j%!58S[UFmTliU86@S[[6BpUI8T`)9qe&90iCl!`3pLQ66"--lM+44FmR
qNkQGiT49``JfdbemKiM3ZE[89fAXS`%+"VXr5HR459qdKK`HaT&,%dl9MLT)fUX
[8J&,10&e#B'j0p@`kGU0Zi3&m+P1p-mMpS4M-m1aJ5#%'lr"Z"+IpDM*pliMpHT
d8cC5`4&0%b!aLpTFK[5c[C)f'`Cj3R+L2Qiaq9Ip"b-65SJdIq(a!$0![MrP&bV
bSY[DFIIAc!aLV$&8IRG)`'C[K+h-8qqj`YS55,k8c&0@+XjB8lGNV,R,dBk-8eA
Y"h'P1T)rZ%qSE)r$LfMIV8$baH@fENFJIM9DfNmJG`3ZBfkV"H9qF"!recd((3[
R19"Pf#8Kq*q+r0!`B46#M`J'FT1%TC3FXc1jq+"I!*Zd8Y0&Nc4q0i'%r9"$+H`
XqpF`6krCk!69*P%5K)T09PCdr#65A(CUp6HDUCM!MA9,BVe#'3Z11+4R-H"4L0L
lNP"k9V$+GFV!9N$#E8C63%(&C19PeR,[0r1iTNBY2GV$+(FDG13fj)12d&#X(bR
@[L9DZ1,TZ$JXVX,$5lMK$Q!&piC"5MTYfe`M[@6c"FD@ce,DG5ArR%QDfQB$BVr
GJlAHC,hUaErlKGF`B`cd36`-FqF"S9e8Ga`P+XXKH(*E8"0bFBZec)NmcXCeLHB
M+&3$5j6LR8ZX%jY0C&#d1J0!eENNi`6X)1$XG54c9(!2j*2jA-6YCFaIJ&IlNqQ
qB%FfBD5Sk"IYq-##BMMSL+(!l905aiKcLJ*3#+DUS2'dH$hH@mD`5S(&09N-+Lp
XRJ[64lKjmUC9m`"ep)jm6N'kd0[rLB*L"9rHDT[`Y,[rdVMbT'SF%0PI+d)ShQ@
i`ZIGaG#L&15lZDplHLLJN!!b$X(SSZ-20a!eF62*TT9i+l!0hmh&Rr5*!G-4Z*P
S6,6*Mm!48,%8$)(("VY-K33I"6NcGSlI5,dmG-YplqAUM))VrJ%8"S&L3p3'F,%
jbUMPe%$Y@P@5"Pdq`bI[h$"I,Cc'AaD"mPNS'5Gb%%!%HN*'aNr9+h5[9q@RNU!
Re'P[*dH%G0IDhbNV*bp*4ZX5f*)ik)a0A@6i""HX-C3p65b@TeTNTr`"0&f[i)[
Kr-IG)R1)T[%C83mbSE1S4b#P@$5YX!GSaV!cSK589KrIh+)!,5(+!,2EEP@1Uc5
hQSGD2dMS5P3Z(q[jE*'!4B$IUj4GYZTaL2m&VM`Dl5ThNI!'4%CE"MS'VAd`B3a
U%kMSJ6PieDp$fJde"8N+f@CHcqhA`C`LG+Pq1LfJhZKL38+Fh1QAqVi0CZ%kSE!
[$0pIFqE`"LD[pl3%cFIY3P&qQL@rfpr+14B6rGb#F$R9(9Fl5m-hdhpaFSV[,lR
-4K)acLL0Ek+h1hL@+6C'M12F,5Z9a`f#"9f)NP50`*d6jCp92#hIqI)U,2Q"dGN
8bEJD4!EI(KB*aMkp[&QpqB4$Eq!eL[RhD2r&DXS61#YF!RG[qR+3!%&E5RlCr9d
4ljYPe$E8IhlhNd#U#q8ke!iqZjKCZrI5,(Qk9-%Y,1Bb`@*%AfKM"NTb@Z!+Nd@
`DrEVb"B09U(MD`PC+iV95ij`#GCUEaf*LTGkVY9&fRKJ@f48&1-U&LYQBXPX'c(
"GY&rcK,S&AReH@c4,Q93`62d3R8Ii5,reS3j'bKSr-rSSF9KBbCLNM%mj1E[HdA
)C$r1m$`-'N%'4V)hN!#0D[M+THUeR-(R*M"YBD(8YIm8"!)F*SdiT(c6kZeSqPS
b(FRHfqDV)Y+2F@cY8cbmIf!h!$ZT(3j25*AG2G'Lcb-&qG+lVXCPR&%mkJcYb4+
9NNPKhQrEDmf2phhKQp0a!C!!,+F)J1q)'IIb5)Qp22[-Y3EH14'3!%S-8CMa,b(
AEh+S3q@D,Gk8M8[KJ-DHE)M$le#kr88dDI,-K6LP8`V8JY8GLF6Z&B%qSHkV%B!
Amkm0IAeQm#3SMKp[&(frc[A02![NF1h!!&iBI)'8,Afa2d[h32jDJ,Gr#NJ6S6[
jUd"!d)MhQPajIIdS2f9ABhHF`8Q6a8qVH1bZc1P16hNEImXZb40#0k-Q3RX$f+K
`AYDXhaYpURdT+"c4h'T9rYUjNX8[+SAV4h8I@1(Q6S8@pMM,)j`D6HCMeZ$Dh`d
`-Fe'UqR'N9EVM*+fR("LTc,826@AiV690(cN(M9X3l2Kc&XD4UC0QpD3!&HVCY0
(EPTQS"&Nb4&m)QH6N9cD+elJ'kK(HRbN&$G,N@aHq*j93HFdIafm`pPL)baS1VI
X,Tq90T&C5-'#b[plNMifiAJQMTi'),PP!0B,Ni"0r[&GJN$-eM,&I&8+FcDZl`D
P[PC,"-R(Y3h83I,F58mkcGL&ZcHMl$mPJPJYFFNr@VTf`cCmS"I*NiGMhT9d,fC
jU9kHmZFcY+EPGc+BHGimrckK5%C3P',Ua1()+f,J'Ml5&G2@!%IA&&kK8"9Hd,I
49&G+r5L9f'L*6m5mM@IhiG(D[mG#aQJM5p-YJ(FIj90ZdT[Q4dSMiGl-!*9K*R"
ABB'#-F2'b4B#1rX5Lijm"k9`3P5mL4rS86YPGA"[YhY(1&2fB0Z6I@2)!N40Rc0
8CZXAhl`GkUql-L`r@KAE`lXB8I"HJikHGRQ#-!@+D+Dd`*HHe*pJAJaMY`eNi*@
d1@JJ46B&jXF[XrBi@093BmX%3V&A4a!6iEDTULjaHLNfP3H9e`(T6AHliGI"+cB
TI*@mY5p`3pDYfjB84Z4N+A9dV3K[BYF3eMP)9)pXl#PVA3i#P@[Q@G$R3Cf!"(i
AFQILJbp5J#"D&abN'YEb+aCb8PqCQGMfaZ)("%8mAQ52J,P`FaHq%J2jR646qel
(#Aqe*4VI6E+*ZTY(1N-qi4(rAr3k9Bic4KERZMj,"9,NkI*U"84+aP[G"GJL$,$
E9Y1%5PXSXSi-AV3'-"@+r@5P)Cqa'd-F4FD'Bpr!mkJe6E)lj8IVP@qQKT3`dNi
"@aR6'J"X*2%MQ[A2Nl@kIqU--XEDG%-`MGR"M5ZZMP8[!SjeIfkDqBclGMl8qiQ
V(RBECXKd@1`h"jpA!3HTh[MP9(9NjV('T(MF9lJ0hjYUQC%f#CAPa$bdh"reDBT
`@6@iZ-2jL*e$#i,,HA0Kbp)p1aQ"pp#L-fVkkZ3R48lL@i+'6&M"[)6%d-d&VP(
UE3iA1p`+b4Tl'Vi"EMq"'a901MLLF@"R*E+r["fCKJ%XeT`-C4@J%(i,%&9dCBQ
VXH4#dpcaM@R'@6aaaUBUmULI1QjNbp-J-kZ$'1aGa#)H2$1i+dZMh"19qq#3!-@
84#VMaSG$M&4#CjQ1qINdL2)*V9r8(ja#0aLpJV#hG'X+pSa$SrI9+jTIYPY$Sfr
0B&qM9F5pi,E'Bp0`Yb&(L&NFdbF&k0Ri*"cF9c1+#@U1ba1SNpadb8VPZ@51-Br
6GK2)'(qI!lq2-f-'(C9mS1Bf6qj&Q+p!1(ke+i,Y0$m!B18e@+jU*MJAQkrAR#4
hpFj33H'lR(a59&HSF`)D(h`!EATp1lcbRRq9@#@I$Sja&ZRJ',kiP4[cGmQ0ePY
4-l(j'T*R,acPfcT*D-Pr53XXKX%JQhaq3l@6*DDZ(&5QT'efA8YF'RAdN!"U,0C
1Uh3SU'Yr*dL*)PjQ0B1$,Ya0BdXrC&P9aYElfIUDkQHR!-#1B4L2aXJhBrf1h%+
Lb-XZr%[6K)mLdk!qDU84N!![HRjhT+(F*,K21Yb96-E$TJ6Hck(-`kqr"DbG`R(
3iS'!qr*Tc2Zd+(r!q1C"9Yqm@Yifa9(YQU1AFSdEK[h2qb,iM[h[FNH2L4rQK&e
Pimlj1`C113r6&h)@(DELhebI!['`B'hqCQq&Y*2d8)Sl,c)4#l6)[@4Zq`$J'jK
'-Nq!f8Q$RJBYpBMCLPU8ap2TGVQ#J9CIZD&`!NF$iNMHLU(rSLM8LTQ%2JANLAR
AD$%Im-jTUBb-5E-fFr)Vp6bJRF"QNlD)c2aS$IUNR1rc,`L[4&$aSELVT(*`lDZ
8))3)Uc8J5mK*L)rA3)UR6eldLTrE6GDbk63YBA#Fd9(hr)pQ(+@feUKMa#["L"#
GDT2A,Rp&ZCReBaPAXFSkh*33rXc9[F`CZPj[-i0hZQAG1-QEh[qdqYaFERMc+8m
Q3MU9D+r(N6ZiReL3!2HTahF%i1DIfCqV)MD!$Uq91)D1RL'40r,S+j6bba`f$6R
9lMPB65&XBI8QA00PkF'LaS5,a(RYqb',E(Ke++kNS3)f!HmHmAYbmA66Em5+e53
$M2eUDP`a$@39iXSeddl+P@,8@SA*h9Im-!K'&!D9CppCe&&D#f`ekK)9L@q2L,T
A2!L+IZe22d0Jpf`DGB(J93!aAbpZJbY9P1PX!Z&-4,rATcd@K6UZ,D(qP!cVUhP
MbjjcF[d8hQR+,$dVR0f&hA#YCkLb#IBHPrlZ!,9[[YjPrC24M`p9FK&eGPIEl54
T9!PY[eKHIlRG@BJ#!0!)X5(X&J+&"NRV'A0QlNkY'*4[IlBf!G4)#jBEHXDS2$5
'BHIapeRK%6NJ5UBEB-@HK[4ldmPM[BlQ#H*j3rp0TjJI"GG#V#H3!#[m4rTThDI
U[RjD-+T*HkqDla'V)[Y442`1A*1H2@N[qIcrf+d59bmDHJFhM+CS@J@2kpi$1D[
*VGkLBP"$SS+YT(*chF3JKQ%$'9Ic08q!VcFVZ!cB'dRK@8Y5fA@[T+8U-SJXM!d
V@(Qcf2GU&335'V-TXES-!42$I4bXTpYQC24"L,0b-RQ6hIq8p"-X`b)eKRVjhl`
*i-CF)@)QJ)!'l"6PZXNjAL8QKT8T"dmB!(,0SK#F[RFk18hlHG6kmD%`'AEd2L-
F,RZd)J9maZ6,Y2iV+cp+,$2H,CL5TfmJ(ef#D90Q$K@C9RNV"B(bDV+Di9T)HE)
DiDJrjL@#R#jQ#"`!FrNVp'#E5KMQQ)Jm!NS[pQ%)DT3'$@D[C`36-,c5N!!PdiB
2M++qHL6JMkC[&Dj#&3B!BlVIF0K(GjK"8@5b,**F,K1qk'dC"j-BkZkc#'PFS6l
F$4YrGQL6@UGmLRhQ-IaBVRK1CjE6I(Je5hKY#+j5*PG"j`JiPY0SRM#"X4`XiR8
qC69L3kbmAmiIYm"+MVq8CK-iL3GAk(A!RPRER%c-3qebL8[6kSDDrXeZPj!!pi6
-@P1a92A@H69U'"h#HHmih-Q!%FN!Z9Ej(P5Uhpk9Y*S0QbB*`-&,&$M*G,qR3"*
)ED(q1YG)F8[2pF[j[kL6rZHEf`i&$hc&EE-UP!hh&PM@amY#XfjZ0VlH5Rmk'lp
,R8B3FD#$bEB&1e9+#(2hKhP*dZT)H8e#V0j%l"mVP`[J!kjpJMBUGKeDc["2)I!
CdXkE29IqHVcQeip3*[e#a,AZ%UFB*0BVPMZ45(TE!@H`Q-h5@cj`I,"c(TGL-[)
Pp"HVUSaM61R$GeGD!8$6H+E$JE!6fakZME$JelGdUULP&G,&&q%fU)BMSc5El'-
X3d@E$IUVY&IGMjCUhr1G4U!-8,%pA2H3!#a2-YEq,mB6038NYJM(UH"4,eS66%Z
6M))$q!p`hf)U"S&hYb+YVQj4+cZV&NFcE'ahSCHL6l8+V'T[br[RLK4-d6"e+p[
rjbla1%KqbZ*Ge(I$[ENPV0K`-)*N+Hc12H%%4YD8LGQ[XChJLDM!CX[*pipIb,Q
HSAiqlQF&3TcRV6cTi([E(""2jmPFYZTpD5iIDM-D,8Cl0&!Ac!-D,S(12-[epMT
m0Q1mhPL6S3Sj3AhjQ)K8HIR5*E9Z,&R!r[0kq+EH4Nhj`6G2IDpTKrV@HGj#`M2
lMAcCU*pP#h0D1L3&MZY!++8e@9i8`)IQB+J8$6929!A4M*Z(#,$*#eE)KYLN!"#
p%6'jM,LG1A3PC#eRQ&Q5AaeXN!#)[D&0`Z%C%1*#3SbYcMK$ATm+%SRbK[IS#+1
I$dhTd@1Gjh[LZ2HLE([fY&R*5Z`rFp'DP3jCASI(q@DkbEr$6adSa,P5GU`9K[A
p!F0*qI6S5b#G2q%fF,Z4DFDPfQ,F)(4qdC8Q1r*UdRmBdEchUmR1A@9Nj&9AJ@R
2aq'qZ-U3!,%JTRDqSLe3R`[Ip3j(qSNhMJR%CL[e+#YB$8(P6L6"khiJDU&BSP1
1D1rIkp36jhme1Ki3A!MU'iFYM,6a02QJ2HNJ#54ITdBEMejiRCr$'QbV)VM)"VB
j$ADHaleFeI8kEAF1XK6fh`$MSTV3[km2V@GdG9@ELVBB1121Fj@!biE)C`&Ij%#
`%L(@&'VcI5cRUAPkk2DC9BqSBk8Pc#)pXQb,C[L3!'m40QeJfQbaHl"QKNr"dYd
*m',FZ$@fa,cCDPG$E[3"UlZfc'5BeB4cUrH3!'G)S8`BNXV[fD'N$+HS0km,qZX
Zjd%!'ARSVrH8`Ha,MYL-#4D*$feTE$5,CFAa@$B8h0'20"4(lGMRIKX56!Mf2"`
[,HHM!&mR`fG(%5&(UL%m`[M$JCb"84&)C,!(LLG(r3hEjAVb!36j`-`3D9QfVUh
&I24JKlPmPp#1Z`Be#HE32Ri+p1HQIVJI[fP88Q0GVh5#2Bk(PhfT1eDXlcKFJFN
iakdmH%XMPfRfKq6-aZmYYR%4(d0XGa05Y'QjBe3BKL@@PBUU+`3Qf(fS,T!!88k
V[J*la8IFf!SU"PCFEbA"eDC9bBZ3!-iKL&UbN`CeA12TU)ppL-36&XrTB0)C&NF
lGDdIaTm0$)"8%Ec!mFZ+kYDUi,rPYkLAVI-RT8rIhCb`b)VK)K&a*qPK@"EUX93
LbT'SK$%5L4V',PiK#fVM`BkbYXHUL&pKQa%ZJ(kriY01T%X8cKk4dk49BTj9,AH
VJ$&T59Vejpq4@qre21$aP6A8ZU6!Q-hY2'j9)pXX5!eRK4@C!%GM56dTRe!bL(p
mG(1VpcVD%Q*q!RQL[XHj8BAKT1CNKfJ#FAlMkE62jjl*5j+SUl0V6V#&1dapXZ$
d8%3'lhNT3qFUUI8D(*d6i92XC5aK4LCBqAS6h0VMZ*9A!D2TRlUPR$ap6ieTQVS
MEISr#369A[f$(#%6(efpQ4GKk0cIcV&(*qEAQmLk[!ZR&MKXBVRB`l30IKH*IL,
KA$"4@,lp0%pT%HH&I&qIX`c%@bSb5HP4TULSD5KASe(GId,RZZc2YeZ"cV6k$B*
2fN6',+j%`ELQ2Yk#+dMqC&I(1BJP@fLTlf,4Tb9T8C!!ppbIEEJ8VGG4`CEKFk4
[PF)$iGpE3a4MH#N"LR#93*2AT)h3XrGj1ecZ*F%VUaSm'c&911!i3p'YJ&j[("E
TkC4&LFP*YYbE&0$$"2PPrV@2BCaNBM[Ue*[)fbk2MiT*EYm",R#6@P%&Y-r))UX
9@!!FeFpAETMC)GGjdSZ86#Bcl#Nip&4U"f0IppQ1C)[MY%%KR0q-0Hb6T'"TdGm
CcZS5XhJR@C)Q0@b!!FBGcf@f[q8IJMbY1!DE)e*hZ9$0&Dr3&)NH!Sq5E$RceTY
'XBbS!e@R6Vj[Z,XbY%kbSd'rMF1*,`55iZQS@TN$QI8-0S+%X"EQZ8Z02HdfG&4
#P8ekE4d6VVI6Q"'d2f-APie4+J'KZ"mHNadpM-%2e@*`X6%P&@a)'q5Q[cNX-HU
"hU4jM6TZbZU+SjH'`0l")+"mLZa08b$')ad4H&kHLi*e+4Pl-K54TEG)q`03$3U
I5jLQQ)VQ8lUUe@rTTC6IXh89K1#$TPXH#US*#ETEVmbJ6L,N*J%$,h4ZLI))kEE
e[CIYNF4pA2c,HIXJ9D*U+*mZ'#b(PJeeISh5qL'+P'%pJY@X[@1,rh1H6UQmUL!
*K4(V3BAmaYZ([TRJLTH+"-)F$MUp9PZ,!5fjakkSZGeVpJ48f6M*80251@RQH"+
YB4jm'DXDjM!pc&'prJ@-cpM-LlirZeX6MdVVN[G,+c1!f*!!ZddK"H#%!c')pP6
1D+q-ahi%[V6h95690lG2K+&HKZiV,h"6[093,Ak'rQ0D([QSJUH0QU*&J$,3jUG
'X5`lHqamaB"E[6Kj$UrVeqmXh+afCh0ib5"kV58!ImES-*2-ZEp13Q@)CS,DC,-
486Q+@Q%i!KHcB!SLSrNT6bd+C@b(!##3!0Z2Q+6ha-lmX4'1[G(h@TJ$&1@+#$J
%I(TFakq'GlKCafTRh16U0dl8l!D@!ITd-mrH3RJNrC26cBaaBcJ,qICJZ8DXBhc
9$R4@Ii%Nbr+9aX'8XXI1bD'5C!''m#k*8r+b+FYj"%EYTAhAr*BVFDrq#`$DkBY
lU1#qCl6X21(lSke'-eZjTL&j&*2mMlk#@I'jc5LYqpK)+N1PNd)6rb(1,@&&B+B
VMXLY4S`frYGP8d5(1Z6(6hXk9EK6j6Q)ab6L5%a9*Fi'@5&drJ3#4X18X&![6Km
XfJ`!LFPKKpKjcrrd3H3YM1R9$VHG*,Y+fRpN$!V[052+U-%6MqlHJXr)AJhe(Qr
-2C9@B%r6b5b60V&R)$UYU"VmTVhch$34,ajEDkYf!Z%IH9"K*Q%i5@,J"%[8DIG
)0i&1*@13!(9,%k[d5&NRNr@FBHV1I[%#PQLZX%&@$mj9X4Q&UkV5Z%2rTRcNhA(
RImZ!#M-9DFhjfCdmrhJN0HlIRi5"M(M)ke,8ADiTC&i3eHBCeCdf1fVAkV%rbX&
VlZcp8$TS4@Jb,6MRH6X"QRI92EMNEj6R(MC%a"1["0md4*A)E*@K1!&2Mj,[bVT
NaDlSma9[T0dpj5M1r$D)qj!!Y6FY6Pk(QIQjINQFQqdK(-!HPcRGE$KcMaCLPPi
bk)+0a0aLrZ#lr6QP#GZ5D-q9[V$!A$cZdiqRXJ%"l1*NN!$B-PNA&(kiG5`jJ4*
`FFR*!3YBXD*Hr[&1Fmj4SR)pC%%ZkJTe5)Q$P1@aJ6"YciA!PqqkJf@Eq3M+QBM
8FPr6'8k'df"23A(G1"D0JR!)5Eqq`hQH&f*P0LK4VQHRladLerD'G(U9B5KkZ4`
f@jEABQ-&R8`SS,Q0&*1`eI#%Rh6ih0LGYBALJc@NdPNJ!UL3!)@qN@*j62TE[Kr
H9N*I&3Ca-c[`q88j,RKKh@&Tm62%-r8+b-rYZ32)q9T9fMM3Abi(A!V9ENcPZ0!
%J'G6bZqD)&kSJ4Yif`&q'b8[qTRDfU['*[ZqT%r'Z8DfJ2)YTqjGp*aAJqfQ,iV
3Dq(lpf9qk+-!al2L4cm!V0NmbG3rV`2k-JAF&#HMGrPc"Gl(Q1YD*)Pi6F1-1U"
ZXRL%m6hhJTf4eeHabm@hkYYAYKlR298!+im9cG'I4PPQdA&&IMRH45E4@`hU5UA
pe#m)HPEj)*hRQAp6(,e"&%2i8f5DN!#[6qajTE(6r3@FP-f,Xc2b"j20bVBZPrH
5YrkBNlM+kJDXL@b,1Pc(@8M-V%YKcXU0+e3)[9D#FNjKBql,U6HJ[Z!&8(EXEa$
TL++rJ6!HQ6%0$9JYFh&Y#VCGaS)r+CYb$*kabI'dqSIM)5Ie'j!!*88`TiRNaP-
VNqi+Y%#E[DjJdeI5`AGHCZ-l6d2`dSib$d$(6hJbK64'q'B@!ZLNRc@%BYSb263
Jp,lL2e50)@,UhCc!dH1jC*B#LjqTk5md"Q4%,fe3T-E@62GlfhbT1N%%S+2T2iU
2#mLI+EK,JCQ'HVPm5VI%0Pf1`6-5,!%!8`YU2m@lcmP`Sd%PeF3dT[,6R5MK0AF
"+!d1J,,jUIF)Xq*jilLM-kJMqACT)$b+E!JPbiV9#aM[rrccUA,62(+HT%A)eFB
*m%-eQJTRc'Lh-Eh[1q[h%-$6NLAac&bhC&kBAGhYK#fILUTMe@qiR1(CZGDC!#%
c!qLRJ#qL4rpX[9&Ek+SQIqd+"Pbkm)26BjKj!C[,bCZjQBjEaU6@6RDIZ$!FH0(
1iM2%NA+'1DNAV`QM`SE8eCNDE1VA*$%qk2(AJrI#pQ)N!4C9fVTLJqX4eLVhCT6
!q$TfekLc(ekX-#85MjbEj%#TA"icf,i4%$d(f'#XYp,Nb'q@b8qA6F`k@UKYMTK
6#Mm!MGhGee5@2IH@hhMX8'6illG%2,(BJ94$Jlf(Tp*-%L(D&#cJ5blT"9H1h'N
eb(!ZFe2MT1GLhLNfa68cQAbaQrJXDE0UdQdKmGmPqXI9rS(&KGD2rZ&qR'-$k,1
l9)8j1#f)eCchcD`I*I1"S1eG%fUHQ4j-rhEPaHV9L+Z'V,Q0XF(FcQ03Ae+(4L`
3$6Z'rD-pKKYc0@,DZY[pX2rlk'I!iHBkThYLV!!N#CFXlZdrZR$jBfq-I`I9KBQ
[+8%[eANhEHL9mb[`QDkh[Y(GV2*3m`fim'4d6&BkfSLEAc0IbP[Qdhch"(b-mA(
h0NAkkD&P$Pa8LR,MRREh`2f5#hq'i3SFU[`4)N,'6hcA%$SMj9()C8KjA,VP4R8
r`HZPVj6rUqCdHQ9P33[!T`CpqD+'VU`rT,EbpN4#hjG,Vk$D+bmL@H0""$hh1Ep
H#1@lfB-Qd25!9PR5jmk6mITahp(MDKX8SLiRk)U0[BV9NcEFIEZJ`E4Mi!21"FI
rH+TIE@[dMR91ZXpI320S'@)GCCH)8YVSj2UhpQSAI#-EkpTRmcbFXUd@+ZCdC,Z
HPZB4$#LC`FKZ#TI-Y42A0D4-R1jIX($D5`T40fYdEGm4TJ(%!HT'6Q0SSN@fR1#
l35f$qMiCmhR"#i!YDXQ**61VAXHd%S3MX5%CV#hf"GR2c1mdhG%kGARi6m#U$3V
QLYEf+Sr+'L")++,h')FPpBJD9fjYr&T#2c6j-%[IbdmeGh52UDk8EU-"qIFZ4[k
aR#+6)-P'#k3Bhd5`L+M2pbi#Z2'F6KZiE[G$[R4Jk4"-lH9)IbMEk+BdPQL,Vb!
P9DrHi3d2DY0iCB*q*h#2h"JSRKIkLrVQ5kZI!d4&43VI6kR41BjFZlDTPF2e81a
T@dPaa*ScMlL#&(`'*T[8-6PTZE1Z&iHK#!Q$!qE&l-VE-Vf#%)#0pIjHbfKrkHT
fF%R%efrJ10a-BVi"Pcehea1-Jd&5aI'#dH9mhZ8l148Fka9kL[M8bLKCH,%8QZM
ICPTBp0d-3lh)Qik2-"8$LMSHCEURFJ(cAq[3'H1[KCaH40,+'M)EaIlbhCh(!K&
ZdV8T6bH'D4E,I3BmiXNE+pb&[lUL*aChVlIM`"p"1r*,ci2diDY6L61UfIBfqM5
EEIj$EX2VY,qBp9)+0UQ"HUFR`@Gie'hB8hNHd@G+aRE5ac(Xp*1VAZ-N0I@iL@"
Pc-&mUK*eJa+VAXk`G9`+!8kT"6M!eiPi3b2Y"#Lp!B"954CJDAGcRqIabBEbHMj
`1bahH-iL1MaBdl$lLR`!JJIi4q&8GLCSp9!B*&$%3YipL99QMA9kp%84Z',AQDr
@QQMADq$'Z4&mMr$&a8c4-##XP1'10h(ZE,pdciYPmE+%+3LSj$N"YIl@#4&Ab!m
"qP$kdC3k'"JZ#12K-023hIi!Kkk!',[,(Ga(bSUHi3ldQq!Li-H%Q0@1BYDZ5cA
qi%(A-@)8XTcBCqfa5-9#*AQ4MfIq*6bAil&JPNjX4ZbSE1%LE5JNSDJ4h2b1MQ4
AjdjZdT1bXUG)GML[KaqFF&3ZR!SdeT6@qX(a'*6KTjMSP5BcN`BSDqDU%Y'#`IX
P(QiqU"VQ#`U+$25Yar8[ARNX1rYT%q1TlD[`T0Tq-@9$'D)fI+55ieIdX9V+T%2
DAP$apDJdNlMUXkbPIqSb4&AGe2Qj+`I(!i5"Ve$lB@3!R"If@cG(9i6UHGMBekZ
KGd5q)!rPUB(CaaRKk242lqXSd-0KkLEbAdJH,12'*YVB@QIeFe*"Mhb@ZLS'lTj
J0jU)RCX0VjAY8&QmAQ+$cVT'h"B$$BqUlTXbSRe5*QRR8+JMamFQIC8(kACLM24
dMR"IilijHEVS+r9I*HMl8D#)rV6CUeJD%c"'lhqQ$!S!EbKT,#U+cTIi&'5,i(b
8@4D4%A3$Tk@HZ-hFXJ"q[5[UHJ15%YppCSeMM#Z5,YjL9MZJT[Z,'-DT0hQYVQ6
YRca2@C)*BXqS'KpkGA#P#-#GZR('$)N1EllamMY),NhV$GG[ELFTcNFJ*"hA2Er
+[D3BphZe6c%p"3FCrMeS#*IG4Sk!AKFPM1FM1cB)49H&b4)KeI%l5BHr81M9TRP
Ur$XLh'[NhcHVRkhbMCdJZ@)rrJJqI(Z@p4FL(HAdJC!!%6hG)aZNF'*qDK'V3E2
Rq6a,LbMpE$YGaMe#I%Va85EJC@dlK9I,Y"GSa$l3dk'1Ha5VfRZ#fNB'Pmlrc1(
faHHl#"4U['h,[Yd`P0'a+X6Y"3V9Lfh14BS1e3Gikj4NJND"#T!!*RUdS+aTE1-
lFdEkYEJ36cIPD2RJqjKiE(`TTMmi9)eE4*JFeiB5@SlhAMcF3eSe,H#bkSC2$)U
ES4HE,RQkJ'QKZqFhc"AhFlFH2AK&8HQDHpk18Df+d3Xb3MSB8-2eRakESAApKI5
Q,JEpMqG[aeQ!!*2Vf16[#N"qK,biRN1`ipXidf%IHGT'Veil(-[)8rI10aK&c#l
#UrAbU1hjb,c9[-"''F[)FhQ6@3q'6r@LQ"R@%cJepM[jE)&jAcJ+q3(h)lcYe-&
H&BDj4cfU+eCHHFRU9lZNi#Yq)(Hp8SJ$MQc"4IMB#GRfjaRTMeMp*+d+Uel,&*`
!qc`R'5j"m6D@X)TlMeh1pfQmKprTqHNhQX#cK*cAP)bKASJ[Bdp"'J$kNBUKa1a
P$f8FX6!EXIpPkhlK8D5B6`,KfY(-%Uci)VB))RYpXke$,LB*9KhK)JbX4BTG*N$
)A4chE(Gf4Z5#1DC1%ePY8ep)H25-q*5[m`A3iS&LpTi0)+F6mBYR"&0RMm9-Vla
leYlh@IepEh)E""NT41R046`Y-V'm,f,FFRKmJ%#(dJYIL8CkR!el3fmV-PlSjcb
H1Am(p+XTFYd0rHC#HmP1[5pDYJIqiRbfGdqD'Q`r(bSe)KT#epkk"5[HH$+cIfF
I'B5#-,Kar5j1QJ5*b#rEMN)c8qIF)h'q`5RFCk6$Jj5%JHekD'SaB1L8qhR8AXj
J-0B3flk5*XQa&#YZ(edTqG-$`-[CX*eZBa6ch@LK2#m0Mha#$*US#Y),N6-j$jU
H(*TdUjqGY+R$$#U+GL2N(j1[G"Y4N9G#ccl6h`j`HRmbZTU!1I2T2m3!(26MLI`
Q#`m4L4a6&'E'U%RmFY`CIiUpHL*qi5kS!'#CVjl8rAJfZE3%@UaF(c-JNQ`!1`k
)$H9N5T-)A20"bD6@(SpVJ!h0mcBEXj5ZRV'N'*VjmG-[QI)a#DC&ce@$qlKE#DS
p[f4S",CBdTr5mr"#ENRr`X(X0CV1`'JAZ6q(8-*F&Z4A00B(DUXC0M%pc@Kc)Y1
4'cRilZmK('mq[6AdV3Q-FL1[22rcri9!Elr6Q`YHI*06UP'EUXXLNpX@kaJPfA'
VP51Yj"X2XjSKfi+@kiC+FC8S5(1l,hSUR!Y8NU#2K1PANST2kbi3J"G$"&-V)Z[
T1Q[5!aH$$*!!a(#q%(6,eJ)CEq9Kab"fm&JqZq8Xd8pF%J%9T%3-SbG$6clCEhB
iUIk)B2!%4%(hBT&*p%S3k1PU18EN1"JfIjd+&Re2J%Paf%*DI!&dj5YZGJ(HM@&
U)ZT3F)`RIa!ie'@2p2)6k$5HUT'cmNNe*ZqUlTa8Qm[qG`4ZD!q5T[RjZB(iBLD
0KVpVQCD,&lUL#CC!`Cl2bIUkmVh*RjIGG+Uej[lhhmKi84H#S8kiBF[F9fT3KR)
M2iJd(L9)B$eB1IA%IU+YRFBpKq(G!30'qXkBB[ZQm#(PaiUrVm$L(Cj0*rX@m9R
H8T4[XcMYJqpC&6p$aE&$G)*1M0B!CG11EBdmj@)LDL`ehULS--fT15p`CY`@TI!
jmVj,b+5mqZEkqf4k4!(q1H+Q[HJV"""T6&G#LT(PP*-"RUa9K#H`JZ8+*[0kR%p
bN!!lk$@YdXcrMZe&,$Eb9'+5!*[c+hGkVb0$9bS-eGLm)L`Pe$+*IZ(#j+(J+l(
HQ$Rc8c@k4!'Q,*K(FeiANQE$HbmmM*mbC'"5r)0C13I[*1Lkr$kFBZb%Aj9,DMI
H9b4K$[eXjj!!))U"rPQBCI"LLR9C0%S&ZDq'"jTTMj!!iP[hHkhUE`-pQm"mD'm
c4lfIjR[QAlDD"HM11lp8FLf@+M*05"JL3ii&"BF&0"aH,a-61i``aa!p$E&m%*(
DI&!q[4YIJpS98UMpR3KV"'JjC,ljMf*L!"%0VGaC*B4VK-b6@DmDElk"8a,SU"j
K[i'mI0XY9i`rj!jIL9A,D`eECZK%8)rdE``i2Y`S5#BKJFMZqNjJj%KNAcHN"hI
e06EmPr$cr4iDH,Lm#2%F)6J#LN0L2I(d%"Kcah1'meeh%Nh42&dBAAc$fe@&BUc
D2`fqI+Ha&"hMl[GEa6T1',N0[@k-f5@qbA"ere1m1DXA4GP5CimK"c0NNBMUQlj
Sm')m)8)0GpL'dS13!(U5Ja9C(3KH9McXArhM[Ra%60H61!Aak@8F"(ibq[,Mf3R
N4IAK9aHb+e'jdYpH11dM6jjFpfJB-Ia,JcCqQI+6C$@S$VeY[VVY[R$#)j'*)-9
Fa"kj-H2J9%h65!`4`RNmIDR!X"b`qQ2!Z"D8d2!HJ[f93%L2L((N9FkEZZ(ESmQ
-p21jQ(dG6MMbhR&MCAEFF8LLXEZFZ6-,PBBVMX461mcT2KTAI"QXQA1QZ"QUb4h
b5UXC1NRb`ldmef+6lC8+bKb@V6+qQ!CfA2NiRXAhZ0DNLmPR)ABjjPB'20'&T1D
-G(M+[k-3I&jMp+k)`l&*Sjp2F,jFDDq#%D0cTf3X0fX[8*!!!8bVK*H1*aJ&"a,
!6c*"QV2`Y&YKZUaRQ)lE(4#QpZfBeFmpd(FC+S+2jfKh4pCImE&0r`(kKC!!1a9
jN[J&flITjaiBd`Ck3JP!ABNqVaV"`Kpa@$!"'A9-6$[Blk-YccYNIpV6S0G`)UR
HJ#-!VfSm-H&U#)3bREDF-MkU5$BeHEf$1cM`BU!f-a-q,Sam#XNm%TVB)j%!hlh
[fj!!"&q'8d,[kSZb5X)qJe+Z4qiFa!M%TbA9m1IclbNledBD%BYI`)e3Dd"qr5B
@9,klp-*p`KUR0-&FI"#1$kMdi'C*3"aBCP6jaAF0@L9!@)d(-'X&D3TD+JXP4V0
QZeJdTqIf((HI%'[#Tm,&#h1IrLrEDm9B[m8&&$52CNNfD[JN9-*d89IXb[)3pUG
2dSeL6imZM$88PM6@4MMjJ(A+CiH8BFZiK@JS0ILd+,P,*(49GqLi5@CcpjpGVdJ
e4cR'X(T180*e@94(0[[1!cpI#-[a`pT0khP+lNmCQhiKQKl4@aC8$854P2lDAPJ
#YClh[VlYQ`kIh*kN'#3[T+PU#X$Gk+iU#Up41LBYaadD+-`!CQcSVCSJ6""J`CJ
Y4BrHh1rmKLXVaY`b+3p!66,h-J[)'e&r,kl"mhrl4h20!h8eJIMSVp2V,`A+1II
'dLqL0lZ4P)"*i(6D%2rVE'@pfNpM+YX&b'YjjKKX"`$(*MQZk!E%AAN4TX["hpL
JH)CX#VbC'kPE-XL0I*`1KIRN22GIY)+2AjaSaQJP'cGDaqFR+dmY!&b@2NFj&$)
6aY!ReLK'4m+Iq(lrk6H'''AeaPl#4'Qdj&q,"Pq$dAHEU[Kmmbmjj-VV!aQZ2-6
#,ej9P1Qp)k)A'ikIlfm0`p+V-fF8mSkpDif"*@8AL&lk1d'9F+TUVde%T,2RZaP
GlHLb+SD4)VbXf&51ISm&ZQEG)Dbpd)K6Ele8UBdlU)F+T6D,BKFJjjrjC&BABV@
dGi,NCil(#S%4"VDL*$3$#$[S-k4KrY$b-bTj-[M1QcG#`q$d8jd4JAP(laf%aYm
R2e@rj)VZU@*[9rl&4K'qR(KUDA+jpD@2([Z,S*TU[Ca)2-0a[580'f$JVrPHaGm
p2b9)UN#Ndm9L5j03$QUG[BUqT2BNJiSlQrMD)YaaJ&G[a&2r4)T%0'8dmDE6a,9
i)2cpHQS3+$-+Jh3$XI0l%N3P2#Dlj,)LPkZZ[Y1(*%j%I(DT[[NPKGB(2#5S#Ta
Xcl4qCK"8130Y(`LclZ)6PbL0HVPcX5VFH*YU2ILZ',6M6FJM!r,rqPYH1KFQm6`
C-!@6a&0"F+qHF$Ti3,miC9Tc9V(Ga(a4JFC)DD%1BkQF-+NdI)'L(%"lGcYU$re
p')Dqp(iCB`K#l8**pc+jC%1RF*!!)aa,!)U1-NIZ*0Ue4PlSfQKHe--%hc%e!Dp
hZ'#[V!JXSG#6&1b'Y@3lTqMb-S,b(da,m3fL`E(5SMHCDq'T)Ddcllq2DpK9G)Q
UZ%Z6qDm`&SCA2)G1Z9V6D()Z)A5U5Dk-5(TDXqBJ'!R8)A!PZeiCcGJV$jRNeh!
0I29['-fh[J6G-kqI0,*9@B@8mAL8#K0b*0d#-hqF3h`DhZIiV$[K@4X!jfqV(TB
LIHTTk(-B3'SXCB1rBa2-q0q-a[@p[A`9q`b,lYB%mGaqe9Bf9Sp#lK(1C9X$cC!
!GFrAM%G,-SdMHB[J4@MkKR'+$Bj5M#(3K[Rkb'!hC2G(R'fa4M[ph*N(IhbHCU9
Z%9CYfQ`VjF`PUj!!hVYi"0S6*9a!53NCI[NG(Ik)#2NVTbC-1Mf015BhTae#f8Z
4pCKi+*l6AjCL-ePlHKG(P,(J[*@6IM&9N@1QAK%[cimN%dKCMimU-[[15Clm,VD
UK5'8cL1p2Z%eXi@+&lJHZ2-ClfiPNcJ,1ihTLZ#NGm"qc**k0'j6f"l()-@*r39
mdJ-!'[(,"NEBQ-k'%DRG3q@@TQpfU,YRA$ecbDp&bm&0BhMFiMIJj4T(ZhA`LV0
6jd-i,4@[YF[cBMdH!,q""M0Rab3elAEYr,XhZ"0Y!4KFSJNEhhK11XY"fSk6h$m
-1A2j2$q*kG*-FLhl[h"eMbI!cZQie2e,@T6"frF(q6Q2'@IlTRe%KQH'qU[4$SC
U9JK`[`P%M8`T1%3lD9VJlmYZ")03l'V6M`&&6MTe%)6CbSK!KRfS-c0fHqa2jAa
CKjBEGkd,DS"d-LC,DM$r+4rm!M0rAS3JP96cqY@-(8&P$$2I1CZF5S5@(kMl0Dp
%I6k"F'P#`5MdQ4UV-SaN!HR(LMkrABf'X!aKE"4!)8dXlH-RP5*K)-kdU8)9Zmi
'`+8U2'i2fN[bkK-#dbF&b`ImM0r-")$c06Y(Gc#HF'IN"bK(9R$APNiA3Q#Q0+k
RH+bUa0-44@Q%CYPK*Rr1)M03,fT`DhP-4"9iXkAE)5M2L$(lq[m"fX-2h&@26Fc
[AcXGF1QNVaCLAAAl1Lm"859jliC*dF'%qCr&iC8m4di`ckJJcce!Z[C(1%Eq6%'
A$DFXi&%LAF"#2RLN1Spb8J-&+V&d&p92k')CK5a(TNdE*6[35a#)5!aM-X8U1N[
1aXbX&VlkM@rF+mqcqIFj@'F)U!l&h0*'3EBfQKXk8BBk,FFZp+Jf%r5DdHN1QSB
14pRmhh##M!A[HGQ%H)i9Vfpqr!aEK-AC!LM'blA61mNZXRpp"`d8r80'!!HNZfF
h5!h[TYMB*SYA)I$"k+j"`#-'@JlI5`BXc(@1'@hPRS&%FmqP6dL3!#E*U"qF$!C
84TS@CJJi3e41q!Nc5@CVAXVHaY`48S&PVZA@ETaA+[#lb0,2JG,%b43-Gb+k2*[
Rf&CFbbVc5$'lX6+#eQ6"2kL3!)H$A1K5!BHjXXLCFA!99[lCJD)lXaIG9qhX)1(
6GV9[b%+RGk-E@AiSCFK,Zl6+G@HSJRN8&eD$ifUcBa(mb`6p3l%a@f!fQB9)G@-
G0Ic-Vk%ZR%54R6L5-9Qd,#$["f$*T`'ThfIBFL!rD#%d%A(QYC8mTJBK'6IRJ4+
F+eQ`I!EP*bfV2&eM%rc2em2DVTbYlIP5k3'#RD)#S2lph#QB6-[acV86`Q@rBD!
rlS!Gm`N1Ee5p34,i(FXFic@'bZ008$RL1M@Eh*4kU`%2`0eU6e`J4%0EG3!`8f8
Ih6YLA9Q)HcSR#+KHmi5NHU*('a5VC@XTkIVRDUr"9I46e(G0&Q9$e$[`Z("'`Bd
Br3L[rZHX-bpC0TAP!1$&)r+3!&hqR#B'm-GrDG[))Dcp3aUl+@Km1kTpqKiai0M
YPEImRA#2"FSdKU%4pl388*B-rbkF,AB0e99Dc!Ip[D3Fb9$mUbRmiKMJYN')0hq
*eE!JmdR#Y4fp-ELZ5L'caIP"LMA4kRIq%Dq-bNiBAi$NIFm4FT*#NPbkMZDaqcl
TBSI34Y)m'EU*qp$9Z319k#!*&)%F(Zka@A*d@'50c*AiS3),demTBk$LBb[C,BN
c!D3(-IG3Qa#e&lQ@M2I4QXJcrIeR+00q2TePCq+UjP@8-Z)KUj3-1iGr-B1[ph@
jcU4DE!bB+eHP$D6RT1j+J@%CUad!cQ,Hh-IXI,LFb8%H2'84+ES`,GTZ@M*9GP@
@6XSB#BKTp`I[K0'TDje1E`&3%8NJY6R4k1F4""04@ri0Q)46fB%Nq*%ddMqj'QV
IiSNLU!4EMl8ibEAK$DAh6SdY6mal'KCm@)r!L!U8R0Q,'eTl2H0YL3hKY##hVGZ
K+1'i8Uplqf@*'*b1IS)9EKINSND2-`P1b")bbD6Z+FqI"m`QH8XEk,YqTlV"5qC
K+&,J[F0h#I%A2E3cBZHr+Xd5NcLULBjGP5!)dFk(!DKZf9bCCb@T)RdK)[mV(bh
!1UGGcZ)!'R2LPYTNV4H"N`dDifajESR*kCPj1`LjG5&3NU,e(k)f[FGlea2qejL
IJ-fN`ppbL0cMBXB-SMQ8(XNC`%XUp)'#*li(`!E*36D9UI*hK,l2V4-UEQ,G"69
4$@U0X"TCp9J-M*1BakjJS,RYGRir#qE5C!ZIMU5d,e"h@8hKC@rjN`98h*8)bD%
!"A"TP9Y@i5S$Km+"BQFK&SmbVqR'!KKP0$*qZM9rb"jE`fd`Z0K(,rp1qpe"#1N
@Nm5--FU)Y@ieM)5NZ25SF5@#@KTIY5Iq)&hGQ-+!5HL"8jZK&(e"lYjN%L!G5@5
EaQcH$BrU&k!1&39k9@CN1ci3Vqf"9B["H%Ge@8d!IX&T$0C-*-"K03X`[emqaSC
!kLF*AR''L)U8rd`++[[UZ,2ViLq*iK@NU,Y4'BG6,@r&2'R+c*lJK%3+i1PfP0T
4V$dp0'2TXh)fEcUiLA'Ga-P-[pJi0`dZkKKIHm(SBL9Nm%$J9$36&6PjY5p%2"U
P1hX3p!S+RX*D+UZdITBk)1K)ZMJX!Dk2kG$rq*JF$mr1D6h+MQIp&TZZj`VEb@[
j2RX@3f83!GTSVHALaIUJ,Q,NKrma5ePI`U5SGAJed6LQR9Fj1-0'VAkbqB+0I9F
LN!!JVF(B)A+*BP3pJD`RSGiFHYi1E%a9"dp9MPYFGic$+UNElRlSM1i6VQ+ma0h
VmHTR`bDRN!"[$dcb&J6ElhKkeBX@%*Q(kV%BF9DVfc9K8lqB&mPV6G8E*-pB0NU
pQ1"$VDRRZB&44CSTU8m%#R1(44%%G+U)6N$TrC!!c(PIRPl,T0l)FS@kb&GhT9&
"(i)lhH'Am+9HSA&r4mKlDq%I5mLp5X!*kM4CT,(3,-m$3#(kFr3YC)pLdFhpZ(*
+[p[8&B53!%`#*DN`#(bmCqeYKAm)HH!E2V0qC-GZUId6++hr+,leXjCZT"0*$@M
R+LfE0$KP+6YN*RS)(M%(UTfq5V5KHel9-q$UpBIN+-j2`E0eZP,L'HXKYmQd%5M
UIX1[0DLi+l%LLl1M6kr@ik5kETk-V&A&R8V#*ZVR+JjjT)UYGm,R!5`)49k1(D+
6JMVH4d`dBCY3JJp2lPR*GMUq,hp#@TA)NkJ+-(S6ej--8U$5(ZIE-%lVdFC+!bT
f8Q9IpFUi0U@9L2CPmZ@iqm,5c#)+A@H-i&2Nmji&C@`(2[B!2,jd!5XC`B%kNm8
#0K9$8aemRTFE-$L44G0ch)-J-pNee$!#&V8%B8e4L3F0rHYL"XTf5+fPYm!&!Yk
Y"c'VBNdcQr8FaXKa(Bmd$6V#*JT13eiS(L8dKd6K9Qqqb,-HMe"0c1fV3)DV,qE
IZ`mQ2(pmEX0I1M9@[Y@q4cee@d&LQ845haE+NPI1D@Xe4HBm9eeIJC*j2GMld(q
GPArjahPabr#2+QSa3aJa`KrTF'rGajpZ1`aA@,bUlPbhf!65*Vp)blQkM('2qMJ
#aXf+AH32hY8FUPKk")18ZTeUcKBIX#a$abb"hN+q)`8EK$+!hU%ecaQ'2Af"2TY
HXK"qCri)Pieh4,J8h+("jk9Ya#[rQXbqQZZ[QjrXUE[b&'0e3hp(2KjH+Ib6M)B
-D[IZ!I*V5PMFTA9a6M2dA,59iaENalcKS1)P'#j3LI2ai+bYqa@`DM'dAhq[(Rh
[3BTk#YhUc'U`[+XKi4LHkcM&pp8jHPh6a5%CUBTRrLNQIUM2V@LbU5%&f5"F*IV
5p#9@4'UXNM6LZA[,q5!Hk4@!F2ZUHaEE!&,Sd3',2AS+YSZ'8&i*6D%Ij`qi"Rm
8A8q%1@3cahrb)qU)(S'@IppPSkMqV9N&Za4QXJpPh`pp1d(K042N1Sm,MBj&LlC
N-VG3DN2#dpkFJMi)0m&2fi5JlF')0*)"P8S'5hDCL3)kr[UpEiraV[j$l6f%q+Z
KL5Dq"J-iK600$T)SP9K-,H1E#Sj),BN(ASp`RGFCKF4E(eP92pl-Pd2*i$-laN,
%@e-01FLX6McS+cU"3U'&&1q#IDd`c[mJaUl0,iLek&A%9&R1#bq(`kLf41aa')+
+dlRbIijc[Q`(L,P4&&,"4G`NlRkUH*C&EaKR9IV+[U$bBRS[`c"LJZ4h83%&`KD
9ANaFdJYckEj5ZP4"NH!#Qkdk-bpc!'e-Qjb1YTkHTS4(6+fpBP6JCc@!NPC)@Qm
AUM3cdd(-m`-S`URhfTZT[-[AH3jHUC5r1A%IjFQQ'5ShClIE((*YLeM58m+!D6j
lRY,j@J'[`lLQJ!$KXJXlH@p[!la)I0pXai+"bfF$E'rZ'QYAR21qk*-Emh'6H#U
6232F!C%!+LT,H+[HHUZ+*#V5C!A*ZGHiKQ"KkT!!k["D[`L8D$NK(c'dh'Q@L)E
FUDY(EjJ&2qhdC--#!RR*'a!8Gjb%'qd%K&e&Z1%q@$jPZGIa!-5T9jM9N6!'8-H
2'#m6j1'69M42+Eq1SpeP'Fc$K$[`Q!p2F&#'DST3TdZK@82CAV89dD!*4!Mi*,l
QN9lBG3%AJe-YdcF0m53apQ'0Dd(!'L"+3NYXL,P[hYJE'ET*L90b3lZ-YF0r!Vp
CM(m%1'126d`B6MQ'L8CYLqeQ&fcl&eBaUj2GF!lG)2MG0+i+#mjSU'ZT0@@kUQ[
biLE*VTN5d1@J@Z+@H5rNqNMTCf+lG`5j3JZHl14B[,"ej$hHQKlLhLJLjS5PBHT
X)Ja9LhD8"$J#!q$lk*0d4iTFj3Tr(XLSjV8(G6+U2KMTYqX""mcUal%&r8Bh9M0
)E,dl*CRB#CL9KACUL,28%kpkpI6-3GT!XV'!C)jUdQf!N!#mJF*$H"YpZK)!#JG
d-eJZ5T!!hR,ZhSViqJr4Ujfe)a*SYd@&PDCRBYIYJmaTdq#4IKD&Z%HJBhZ#*+J
I3FR9bNBCZ5")$C!!SUSF-LcBjENKp2VqC#D0-d-f4#2Ah6krdYF56D@6[KDj!hS
Pddjpc9aeT&3IcVLLId%@6"SBZ0p4rYADd'4jJM4ZUEpFabU@i2+*90*5hfKbef8
66[8AIB!'0IbAB[42qDJUfJA1fkrc$3AhLLUD-692"0N`@(H9*lIq'6d9',X0UGX
FT5!5bR0NrpA@LZ(e3'kc%r#2BemI-(KU,0SQ@HC4MX95@rFbD$U+N!"Berj5k0G
PQB4R-K0NBL0MHj!!lpBN3L'Gi`'Brpf`,L0,2TGjh-iXI-+c6'!6PGdaJ[F@&&2
4)`eFF1U2QhcjVTC)CA*kcbp$ci-1SkKSq6[-LL([XlV%Z'IPK"jIcH2UjrZ+lH9
,ah+99RT9GqNePK2`eSclmJbm9pkA!HTT`H5E6q9Pf81G8m1EK$eY"['0F`G8Q8T
1XN[NTT9mMkFXrQVrVphhk&Ld!F,Pl[!kBK6Kj9INCF&FMHC&4'ecb614krX8MF&
@$6icZc+HBXC"aP!5"I66l)lQ"(*ClF&Zp+0G8UFXPk3p)i0EGB+!j9Zl!KLXLIh
66aY+TJ"&J6AG+R[88Y(Sh3T8jch%KcZhpl1BSh3pcH)YFf4QdKbA@hQ+U3PJ0D"
"GZCMUq`A*jVJ4ZJJ,#!Jj#IT6JFm)bpbV-N,A6*kT@#(,lZp'6UI#EbArbB@'U8
XR'3LdRrhfkqmi3iJK4%$aA2TQR1BFVbNK2*Q'05ZA0"AM`c)CH,Gq@1SVb#k#VM
#!haPLIG%Sb`G8R#[*2Tdd*63@ECS3mI,fV'2Raqp%$qS0Uc+)IFJ'VeG'[B[@hi
-mk,kd0rV,+*A4lFAJ,'p5Bb,VrXNQM`E`j%!Ai&UZbe@([eSbkQ2Pd2ScU+NeVC
r&GAPcUXd'lJ,4-K#PGVI&'Z5G`N![SjeBf*L-CpZU'i-,"SUmQLhYF!JkT'04bA
TRZ!PN[`pidjX$BL0AiMV2h[R"$6bE`)$"DfZ'9J@qNJGfK+`5phMbRcf)IE[jPD
0j*GlJCr)GGZQiGGB-fG9Eh`b'VER(FNcUq"-9dL5@Yr8,ijHJl2B&R2chjR904$
T)$*$AmC$XrZ8JD6!&L`QSk9SEGEKLHRH4dPC58[RQN*m2aTl$Ba!l[5H89YK8f)
!5-Z`!4!$rb31UPUL#GADbq(SN`b&khl0MRe-1pZYfkXcPiJCK*[HRB'eCEK$lPA
qHAT+MPfkpG%,bQ!mUjBpJkLerDak3LAjCGekdQNqfcdNrV`Y5NEMIB%#LR,JVY#
+`8%i'mCGj02q*@[!M#PrPAQK6m%6!P*YI9HBf1pQB[cUa)@p095Fq3l"cYMm$cD
!,FPSd[k3!2L5H@ZiA5UMKJYER"k1"'cZlqm@"-3-F1Mjq%,kAeeeY$@QilNmkQ4
F-%YICI4pEkPq-V-`l1VpSPEY5LXlkJ6lr"2Vq4DUZZb@mSr1*8e%JX,MdKE4f$`
H`*8%,fc&bF)JbSdS5fT#VUP%0Ep64&m8i@R*hBZ4Z+`fKU4Gp3#akUB))'100m*
'U(LR[2!Q285)ll)MfYb[frIX''e[V#XNlp[-fqRVFjAVi6#`QlTfKM3j)Xa,`3B
'AH%(+&cMNUbDM@$c2cEK%#r0rDY3%`m5'B4D#@U)fGeFXQ6*5[[8(Fa0dPC'b4k
CAN[LB*G[`-kjX4JZdpZ%IPq"T11@FKMI"@Z@hJ[e#I@0acI1JcBI609aIPA@ZN,
'8X'KYa5rc"$dN8X"0G@Ne[f80T+`hj0FPjMc)f"34kEEkA`(`h41$+4lcBG&*Am
dP['q+L$jX`0D2**qQG5,QMB6PJRBqHJl%I'P2Z&C)&Aq)e'6XaErXDmPTb%F[F1
,aXM92m5f@b$T1`D[eQ3pe3XpK3M6K#JS%1('FI@aTPU"4E2mqB(ENaJAi--@MBq
6$[L)pFN6acXbjaEAMaD[QX4QTXUULY+"8BTc$hD,P5%NRURq)dkCaL5KA#I42Lc
'jN2'abDiH$DKKVX!-k3U1kH*pZ@NIJ4NEAq"3"meJrE@I52E1jc-DI+3!'(`NDK
43e46BNY*qB@514%B4-)d*K@9hiX1*AVX%6SVPRXbp)EEe#DedR(`K+6,H3Y'c6Y
iFr'#'@R%e6FjqMA!Qj)"A[I[,Q*%Q2(aC9F#JehTUdUlCrr1`ZR-bS[1+'`3qQ0
ahJBk"Lh8a(l&QK+*MIPpd9Jh+f9U9e'5[P(Y8,K,(&lpa-eG$fKU0,P@PN$IZEV
,,BH0NZ*4F&'&rhjbkfRXMU@51CAI1VIr&f83E#98P8YHcCprD%(CpARYAHq"G""
Pdq'L-63)Z$CeXm&53AQB*K'q-fZ%FRKN3fhT5FBQPim[#)rE4'1-2(+QC6S[`pl
3p&6HRCNZMf$'c6aJ3qP5JKBB*K!'XMV+`I!Q)Id%-,N)h&XefRQ!k-E+`f)Ebi6
,U`)j[KA[`Iim'rQN1i3h@9dF9D%01q4mXmF9QBTbLC!!iKY6+lILBQ&r-l*hYT9
M!#2E`GZ8"+B(S+h*'N)4MPR"'qR%,YJi3P@mAPEH02)Z3NeX9#-d@ISpBY8'SH5
DFeb0k#qJD!#mC&YjbG9a@,@fRY&Hq08ijY1*9rjPM-dh1$AC2+m(UH6%*(HbLir
bek#r,Ge'4@&VYjp9VLKc1!"%%r1Q4jJBfTpIcA9BF@3DGLT-NqdRZEGTJCqck#M
lV0l408pm#LM4qe!!+0Z`L[QV#43*BPD08fC`18S%&QUJ4Mj`D-L1Zl'0`e#(M98
qBIphG"'@*(PJ2%b`L3&U$XCCKf0I*2F[NmpSqCXYC-YT@&)&1KXeQci(k)&*hI[
bpP@MrNmMB0PPB$R"6#+D)GYM#QL[KfhT)H)Jk0bPhQF@kUrqP3BJV9SLH4IR)+M
2YpXcF'[b5eYa)jY1P$#SQN(LGhHR'RmZa430QqdCp'*C&MN&#MleL3ZIB'a9E$a
HqblUb2F(JXD[%lHfKeiiIpaMl`6c2`%e@SQTZp6pX)FH$pJ-F)HCC&bHHe6&jT-
32l@9HBm1Em`e8SS&3A-R*ifZNq%MA3U2VV!,CmV,j4+aER4HQA6X-TY(TP#@R+r
JhBU'NJH#2X+V$PT4V$9"j%-``@PMdKqVNp[,%[&UPc`i1#Bp5rp&@eI-)lefe#!
mrY2k8k2kISUdXG6pJIq+BQISB&[ikLl"!Jh%hG*'1ZRJ[dYdj65ip1*S'VQEY6a
SHJ!mAML9)*MSrKlRXikA4(6%e6l%0+dkDYIHZeJ95@Vr#GrP%YDmU$-A8-T9dXP
aj0,TXGrf9Tk2Zj1iB'0JJN)Rp3#SJR)4A&JZ1UZ)FYmT&crY(4+G$J`cj8!CTiD
ER@59LPDL!5MI+Y+8C,jBhNG(QP'$%f)KBDVSEjqX`8L-iY)Uj'qZr8MShfb2EaJ
2bQ*k0-&Z1[Pbf-f&-S,KAcBp*K9QmjSND0$IJS6(F2!HiYPY,+cekF2fB%)h6kZ
$P9lNrfL@Pp525"T4YXEQ4MQ"(S[%jh1RKRUV,iG'hrqKU"JCKAM-h4%)`&P$CTF
5BBc'rL'*AJR[aZj4k'F-!MDlF&Q!aBT$E0[mD*Z0iB+#P-[lE!Al5qqL(2ET20N
+cVm'Gr@ZMCmb6[YbcL3BmIGhX1UL`DGT&b2r-a&k%"mpV-e9VGNVIBP"VA+V"#X
bRJjrq8*T`%*Me!"PXA!M5k&F2`fKMC!!YG@dP"K*P[rLU)miBLB6B5,)[X&FGH%
%I*&T0"&Ni3mpr'S6)A4kKP[M,-M#%9Ck#r,m4,k$j&6#0lY8($"VSS-BGm*-&qV
a(-*cb'[#fACp4'Q*Yb0B0,B&CP4*@$*h#drC&-)dCN!8TD$63"#+Gq($f9Le%-X
!Ibh&%QQ'ED5i!9&r(cK,NhIXab`XF`CITBhL-5[dV!JrK8E&aG3HU*dLEJV4MYE
lU99I$6X`jfUiKH9B53`%Hh)h'4c,qd0,2-P'bfXXbrTipGS[1&M)`)B+AQ4+8d0
3-GPB9X&dhBl"DjXaM&lff+'4G81'l38,qpmD-qUb*XB@SRqQGS(RHX2G-mBrNp-
`NbfHKhia'RdPFkZX"$FBJHTLNm`@K&LfPlVN@FR0Zq0Y6mUHY+XaGEGLP-`)q[3
ieZLrI*!!%'9CDFKXQk3LeVV)`E*Rp(iYMdQP-3GCF14'`b0XlS69)4B*paIGKp&
'#2Y#XG6i6k460P(rI2%e6`&KXA&fJ"V,CidEmM0i"R3AhKb"Aj1qmV3kcja@8&e
3HZ+q%lTHPNSK[H$*QHNldJ("TXd"djefPASllh2[h&RCS0Q(6Z+QK+9Q"YPKkT5
Vj(H"*b4*[B+-`ica4aIDIkREp94N%AQmIGI'[k[D3E-GiPBhid(Nh9jL@GV43(Z
Na9V)@rFXRr%I@APCRV,Kf)+''Dfd6B'FefS[*8RBm8BH-dUS!`AiU*A2`jKd0X5
)BXrH3"K#rJV'BcB`P+3pDb`Ke+Mc4rfI@9S"TRNGhZ&IjBrJIbRD1k@qrX5UT&B
T4!KEI@c9HffB&mBh9a-0qU+'TT!!d5@QY2R[$Mjhb$HDMT9`-fY)G%#XT)3[2%(
k0)d&@jqi9b0""e-@*iIZj!%'2(mF-e%eP"6Mp)*9-'RkPHX%"#PaR!@""M2a*J'
R+KN5MQbD1Cq[jVLG#5!M(Al,JAXP4c44+TC[ff2!r6#GJ3F8Kk%hZpf+ZKT'Q+c
HcXFa5p)p*a2U0GS"#a*L2KKhYLj""[TZ&4NDdR[`E(r0r[2@cGQ3!"Lc-[XA9LY
X3kbaUNiPeP(0qbBA+h-h20If64Nm8Te5,!44kGTM[QqZp6bI@,9Lc@,Y[TS#eYN
B2)b)9!Yb3"l%mep"[RS-D$,E1UCk8pPB@+qkGlTB9-jBGf35%%!CJfD&J$S6@AG
*%"a8Re4*('Z+mHeD%h0Cm(HYihjVP*h#@D&VVBbA%%!(DlNG(+L#ILQc#-,#@ZQ
1'qHdDb'0K,q6%eV*k1GFp$U%b[b%6lI8qmEm6Ieb"`ICc,)&3$L9SR518Vf+62K
1Hi,N#Dh-&"Phf%PK%$jCbPrAk+$+*XLS&NGUiL1V-K8cM@I6QK#QhE5VNXHTal4
1[@-CHI@-*4%b!acBGT6a3c0X@B[SeBL3!046aXC6kT2klQ&BbG91m`XJG49`e*K
[3M$me8cd!8TU-r'5HQeN!)Pi*@hA[QV1MqJA&YTQEL+h1++2-E6)emJ2pMDe&@(
DIG2)S*-NiqQrI(8i6rTLFejA$Qf510MKRFTHIM)r&bN3eprKkjA4idd&2hY99@T
VChLcEql@HSQE*U58L)U*ApT``8f'GY8Qm84R)2,FHT5+ce'0!3(JM5q+D(-#3R!
3q,LT2Ma2EmHVU"PQiC[NN!#'l8!kjc-5a%q9Z)EF9[k1DbB6aDaeY$Z"36D6!'1
rj&*V@#M2Xfq)lj+I2NZl"NQGLbi%Sc[mlPrl!fS&Y49Lb4Yr&b&QDB!8%E)#12$
j2j!!$M1*f'"ir,+N4caD5QVL#XHk,Uf8m6"8dY2&f9RLk4-XZ0G3&(3cHYSCEh'
B1m3j+Q*m58H%MF8D-qLh%"SYXJRL193P(jKS2Lq4YkR)S59Fp1+KV6PYp(DE34-
EQFJ6`'$(9&PY2903p98"JPp##M,i+heC')F'GarR8M2bZK6A"8iKF&i5Y,Z#hc$
5B`E4XK2LGhBBb!Q1TLR[#FAU(@$,KYS#IEmAqDDVVFmh!MaTF3Ai6#BCN!#(Lm$
cpmaT)MdjhcK`Dh#504KX@ZXaQAQ9Pi38ei3l,r&aLY+i,5)Pq`#d)S9q')Mc*!(
8dS(C`0+ICL!95f39DQ$ddITdDCB`AN)p1J4+"-h%J%JjASSe@4XiRrkqCVL99N%
G)"Tded3U'HdK'iF,D5Zk$D4K(%5"35!$-GNcmN,b,9jhB)QH-)M(%-`9X4"Kb+&
D,rD!4!"l@ZlkJJ3XiA2E+`$8NE'8',PCE%Y[d0I1rEaDjVZ"'#dBm1KHlq`BZEc
l!8U(dXX4aaC+4j!!Ma$a!6bIcaI,UdV9lK@SZ8dVDZZcPH"@`J'891KrVrG#D4$
TpR0HCYXY4iMIcPfERmMCL$390rj9E+&Z&Q%#CIXafeb63b+3!1)bj3['5GBCppM
6!0rYeha@AX8Yd(Uc[@#@c#dUf(GM"U[U9fmQIlXim+dr#4Kj0#1`EZX8Z96"c'-
SkKHVBhq-14X0qi43kY$ec,R)**NAkGA&!kNp5HkBrj+$h2jU)Sr!Gb$`#fV1r36
bFeH9Q*MY)@5FRalK)&"KTY(DjLM,&bE[q('"dDEN'qME"R0@ZFi"X$`Rhie'(&q
Q+#kQkBQHa2%4&Z3XDK(D6Udh8drk-HAP'Dj&L2k$H8X[`U*q-0*&3j&8M),4'8r
%hUVq41q3!)B9Efrj#RP1)1a[cpdd(b5FIBI9-Q5%VrMDe`96HN(m%J)fUfGeh*a
X*pV,M&)8QfU0-CXdQq6R%Cb@SPlLcd6N,1Car!T('8h4EL&JP4XKNUGN))f"r'J
Ai8iaDFf"2"1$j-Pec5G`A4S2DhT6-ZPFDlR0e&qZcXq8k9$9VGhLqKHdl*fI@ZR
lC-Eij'6bAiZXMc#AXUEp)KZ(DPreh3hqmrmfAX3TFcIpP$IG@AC5ZZP`)&ICT)Q
ImI",j%&Uh!JL"fBDb"%)k+()#'GYf@*cG)l95L(M)1JU'h)1qV(aVG4frj8-l)%
T9eMAVAIHd'3fQl1*lGG@KTbAK+`%*F3Rek9J(j9fKY$KQS4DH65d69irrr!L3Q-
8*C)8hcAC33TYRjGf'6`LkGH8h5@SUIAF'8T%1*k6HQfL$C)`C[ZI*0@@8YiFlqI
mkTh9ZjcP-&5*b`Q*E&F&A[kN(5fbc3D4+#De')9K*%+U4KP-G9RBTV(aGYdDLch
&BNNHV`$)bS'aEDN*5+[RBac9P*qRDq9F[3j2rfdKkF"e2"J+NU[3I%X4Bjj#80r
,!'*Q,$@CalQRSD+cU6*cS(KIr3i'aMBae%jVj%GLMbYe`5B6%MppGfPmf(IT8l[
Jh[P+QM$[0H%b1i1&h3fSDSVJGVj0@1T6Di"M*D+#"`G$pZDS2(!Qk+J-d`L""F%
JkS,8AhajXYdXd'KXhm!rL$)jH@VDJ-Kdp$TPGQ&k4$1VRE5T0mk[eD!$IY8[jLS
JNqfeXh!6hG-fEhJR0FCU!eKC3&r[m[8#"SmSPp@PId,B%KLCeA8"R@lGC@Fl#br
93i#$Ej09bC,Ma&r&iiNq5!eFr*paMdE'2IdXqcY$Z2fRe31C-daK-XD)2)aSKKm
!`8d`'d)jd4mN5Xk1jiN6hLfFR$d0Krc,%46ICD&M4R3l[X+3!,R,SYLBMH&5A4[
+$'I9,fFjjQDdp"+qc`rVUNRjZ&h9D4ND$QG`-GR!P*IdmMBdIUVbMT!!UIF$P`q
[dkSfI2MVDHJU3&C3-ZJb!b1%!kAd&TPiP!fTqM&`[XcmV0U,hF#j6ibH9ZdakFh
54JLCjj!!aRa4UjC5aNRb-f-qZX!%A+Q[+A[GjpeSQ&L@kPAT%l$`6UMqVHL+Xj8
URqXd!lqdh)!06X&ce92,hGAbrd(`ci![[@6S9!&UUVY5eCp3DfUS!1BM2baSNIK
0aXh&mAeaKQ3cCZX3a+6+I4F@%iALmIPh(NMPH[,Gpa24mEm*fBTK*$bpQeE%h5$
L$3A$)DD3!&jF'p1VjjkXAMVb5SHqN9E"MT0cpQHEa#MF[YA4Mh$KEGGX1*kCMq#
Im!SC['ZZ$FH+rKrP!J(U%S'XD(I'cXfqHS%e#E@GRBr2eGp4*UIpFmCfP&HN'QN
c&%XQD4P@XS*eR12Y`B%p2DA%D#CT$@)klVk56AYJ02V9E1dlTh268(DmqAlF--N
6CA-r(q52mlUr+bZ5$qKAP1c(5IKpjSd'!+aQ3hr(N!$UMc2k4YA*`GNkiM+1GJI
C#H,E%fPFY0cP!88(+[V4X"jBBmrULik@Be6HHpMQUmqRM9AdN9Irb@*dM1fY2!K
mP6S!XF6lUG$qL6U4@%p5V*[jSTh6X)R@%!e3-&P8*@k8VeP`aA)3kU(FI'D[TLZ
'kp+iDS69J'kAK6Z96b)(krJl$IU#Fa$UN!!,p(MKmeemh&$JQ8dT6r`1--m,GdJ
R4$PL3TLQblNdTEC1jrBUrC)[%*5"l0P#Hrrf+e+8#cEe&ppeGI5XH&(iLS5FH'A
,-P8(i`m(0DfV6ZH3!(NdmAQ!!Ifk$ir9jfJ3'0rGZ"[HeX)Bq[kT5MM-c!449@i
pjJYXkqZ24-0N29#Uhl1LLK5Y"eTjp"KMQ20c[H2#mV"-aK#R@[qV@!Nm+5H5Jp[
hlbfj,hQ((B@P$DIY!&mcPZ)q,G@XV4+2r0'q`QdEe*mKEHGl6)10+0J@Fk'3!2Q
rhpKILRlameUIjq8jrUJ1TV6DqH3GYa84(c!lbEL#m1%Nq104MHHP4EbEbQIZMJ$
!mN*pXC8MTL@bKNqmiA@f8MFZcK-QTjajI,EKRjUX0&Dp[[PbU&eDb4Rmh*k)ahj
B51*F2Prp1!J6)KLr+ZK1qF(I1J%6m9IqSB!q9%bDB&rZP-2F!2XY'9(&(X2p`pN
kU9fm0)k0,UDP*TkLT1&`K$QD66DiGfMRkaSY-I6UJIdp)YVb1XP1ea1(MP$#qDp
[-l##kZjDPbK&T8m[YEr-GVK8i'bi#jQN%Uiih'1SU6q""F6Vh*3VA%1B*BSRRrF
(IJY1K(H2P!bSLRMD+rJ0VSkIZ%L)F-lVC%[F*8+ffX*KjiC#P+Q"hB#AI1h3bKm
DL9f*BYjL+ip&2pYCre3bqjcX&3i$Y1""ZUMqBdU$H$V3P(#ae4BC(RXNb6[)d)h
cIPh&D8-Nf3@M*`@`+iikk5bEML3N[L3KUNQNK`E(V+@feT8Sq8)SNSBkNfAlT$Q
PDLD,1DrGSJiKf8re@MreCM&JC80BqRmH@)i$C0dXRThCR#GLRB1!JZbKFXKr-@K
YHH#88Y%A!b5(2Vlk&kZ4D[JUXd5IbVlI%pm@hj3NCmIZji&JD[&I3@J!4acS-jA
&l@CNb6lNa"jQBRFX46!QKlV`DYXAFd%1Qk[ck"&-Sr44RH'1L[2"mB)CD%ie61M
UX@1KkDdjUZEIk%!63I1)2D9H!"H`+)a0ChXK!6j@0f!kX0I-eJ[*J4EiqT+X2A(
&MYkXG[D2IQQi&$BciGFD+B&2hYfMhm"L9fU0$VfCcT0bFT`XQ'd"Ai59mB016qU
*ap"mbB3C3+Rrcr1e!86+6KU0e@EPUBXf-1qdH`33EJQMUN)%J$p1b6c('S8pC(Y
(P(U+-YI!UGV#3Z#9r-XVTZ#Y5d@%i&IBp0f$M0`c%%&r)VYpG'G-9HIq3H,1mDA
YX"lIc+!Da6e2*HKTDZmlTUNhp4A&%pV4!A4p0D*H5R2XaVUCRH%0-icIDhpTUY6
J55h$C'C$4PpMZS`35b1R48EJd-dPB!KLl)SJ1fk2`BHiUq8l)3dN4J"c6'H#,qp
b"1rm3i-KB9'9$#B0ALRi('0lpdkqE`U[BXLrLh&$e'RbH@@I%L+a4K26)h3a$69
Db-4U+9D%NBfDC,*EkMQJkYP!ZUJ1bX"lQSP)qDeGTEf45eRq*kqm5*c`UA8I1eG
8N!!2Si1@1akJ5['eD@6d(i9$LKZ3!#re412Yfd-fJa%qCZdJiJdA@BADMDjr,#I
p,Hq1cRRA0D[FYm0fmmUGC+GQ9M2DQUF"@[GLj4Y3'1E!aReLaN0T9KePI9PQc(@
(#qD1L5qcB2fC8j6a-X$p4iSiBm42ML58`NJei3D)kDI@lfULI5IAAF"hUeIf"**
`25YLcM[-!YITK&"c"+C&k")AE%C+kVR--fLXD4A*MMFi"N1Gf03ib*mDmRXUHm6
PZAD`BcHR0aIILY9)!-QB%"NR3EX6NqGN3cdl"IQA5"%L+U8U"ikld,llLXj0F$*
TfVT6LYBV#2G+MkqQ"$SK!)QG2SVTG`NGA)V&#q2H&Y[FpIjcP-D[+P+)iPa-I6r
hL1,ec0,*)jECQaed+%D#QZl95RUN6h!'YJCFaC0,'[9VMVC,Q8bmALqUG'dpVqA
MU!FLblNcqIPNahT%&Y!%fi6")[MFI3(6BjVFPe5qR5q9h[UJpZkkmSfJ20VB'B6
d'd)"hDk!Cc&U2268dmTa,f`6ESp-[UE41h"MJ("qJ)(+Am4VV-pSQ62jdP!4QFR
RT*iUiR5aG'2C@9QbjE"Im&4R3lNq+hc5qYTdN!!B(5@#E5m$+'bCme"+fZ)m,FY
GKq(Q,b,a$B1U8I)BL'F(B&NPHe0+4JBS%`'IR&T98iq!k(H98Ee8fLak+1UR%c[
KjSdL"X3&`%2YRFSE%lKU)Ih!R&i`"B59k9R(i89d&m[+je9J91Uf(JE9)CCA`N%
16[l8'R`j-H)2!$4C`-kR+mpK4j6T5')Ar"'r0EdBFM5FD[GSra&,9Tj&-mZLRVD
3!1JY%"Za98%qk1*Dk8m+$4I)mDmU0VLdcLfGRkqJ*T'2@(mfJh)qF#d&JB3P-p8
bCdrq)`#Y16'dah"H3R)("b'qZ0cb)PcmC0,hbIB-jZra*[FX%cXQ&KEU['HrQc%
j$+r&PZN'E2TEQfe+)18)Td&lKGq`MbI+GCDHH)dRlfYJc1Ph@HYe,DY`Ap*ZMB"
p&2HpSeP,c6h5d'0iqCTChb@9#cKpBQNicACD9kXpa4eLHrr"i6T$XDNPZN2j!k*
U5#F5flLeLX,ePUY'i88d-1J"feRDN!",D3M%-pa+Sj0CR#[rN6UYFZdbTRSBm5F
HAYdPe4mQ''CBGUcK-C)NL"kCi(-i,6lTH@%9CbrAjTh(EUe!+pT,,(18i#Yq&lI
K4TcTLmH1Pf!S[T&q,968@,,@GDANQlJB!a2'3Q"EZ$e2,2c2aV'Mlc(")N%`M+!
)IJ%S`99EL8!-r[C+lUP*f(`(2Jee0jkUje%Cb)jLaPS,X'f1b6RJFT@&IM-*e6H
Hf3i4Pf$NND$'-#IG0lT)!A2&'eqq2*qMKJJH2!Rpm)X6VTaGmd$0+rpmPGaXX+0
A[2(C"e9hH,6i"+QSp))1D[#FS@9P2Ap))0ZS+IjI3@Pr"&M1f,Xfj9Y1a(+,R)B
&i1$5PiHm+&[2a%&m%mVCK[bm-qJ'Dj03N!"259al&af#(`f$h%GE3[@+'MIVPE(
TAqA,5S,cKP2()UecUjD,[YG'6XKGUR%AbJlX$TiFRR"p3bPQQ@&XfVH25aSSG`@
!SS5(S&ZiZRDPfj!!L"J82*LdFc0M4)jK!3ILIkENh*h*Nr&Ha'Flk(Xp0J(S!pS
phPD6MJ!ER+42(SCBCcI5,Yjk01TU-$Zc",3Cb1915EDMcAq$3+fNLLR0bAGN@bb
c3$PDE*,D8*NrPSeQeC[Q&ci[(9[TC$hGF1*,j()IQ-ZfLG5Ya*9'cc`2Lq"MdPP
LLhJ(UmV)klT'j!)3jRkQP!Te)28Tp#-Y3fhCA3Nq*9@bm3"`b1j[id$A-c3JA8S
k3pMkF)(KI&'&h4RQYF49&mY0)P+E4"eq+$qZrFd)A+9PKjE5C'c'UpV)h@N!MTG
Zr+DEI)mpSf)8VGb2UPe#acX@RfR6k&[kjb2mJ1b"b`'81QTq4(-Mhkd["E,aJqe
1Z(er'R13!&meAV9,ElAEZIGS5KE)Y1p3P$Ui,f8X3jX&afRDpf*h5QcT$GKJP[)
%`0[j3XcYSC%(318Ur#ZUKL!H1N4Lrfr%NYN"XG!bHFNH1!j2eSffD*0D8`!dXKX
lHZH!"J9S5AfkaLAd[p`AcfJ'9BHR)E'H&*B)fSpB$9NHeTk9H`r5arTp`K$h1RM
eNGa6#"B&K-aciP,JF2rBBHq(cEVUi'$Ke'QiC9Pq["DPAN"MCa$bm#U$qZ%hPi@
%6eSF3I2@)@'*jXF!VVcH'cU*#&J,Gm2)1beNMcrmCi*,mH%%Y6ZN#JK9+CA'M'R
(lN@bmkkRV(4+(NrETCC,&*!!16Z0Qah58`%qDda1aJM@SkqQMj+ea5cT4eAcIb$
m+%6l[,4'X9XcG"Tq4(Lk[a',kbU)A$jQ(4%'6[aPY)"!pGTU3dd%@%+1dqF0,lZ
UDB*01XX((ed,118m850,KqG+1!,'hdL-ma%'EBVpZTIZRFJkUAf8U['@mU)Gr1D
5'5'kD&m2ClcNNr+GYcXIILr(B2UecY&jK!@0!HHlGjXPb`HfX2*XS@KUpA@`e[l
Gaj5)JLUU2'N*[m3SiM54jd`*T%,5E)N2RmCLc,@p#&-C!ZG"#KLPUZV9PG6YABa
UpqALM0X6FTAkH#1"pr''3aRNYEDG1bp`8a,TN9aLHPNAF@I,"9caC8fdN!!@D*K
cp@14ceHpq@[kNSj8lif#@Cl13K$10f!@p&i8re*39Rf"1AAhNPCImG45MP"))#)
U)Y4jjM#ZSJ`HE0YqQ2fa(Tq`M-cRKqVC(#EppDL%a$LK$,p9TrX((j9#(SUfeDr
I8hH#!+DPU9CCZ52D1KM+&JV,N!#$29l4qk9+jeR[l'UE!AF%D$JK1B'j-HR2kK(
LqJADQeTCUeZp%CRKRh@qDfKc#NHU2%4YI$(UY5a'jcciB1GMV6qT#U+HS5LQ3R!
J!T4NXG6&BBQdr@PmM(iPrLXH-F(2b"V$$d(ahE(XRY2@Md$5#98VHL)MEV*A`q4
YlK88mDJ&@iV&S"U4Fi$L2TM8%LZ5kLpKdPC1p+f6*Yrm'j!!DqQGY"cLX#Xpf,*
eSE*5Nfa"RT'db5K&jYm8pHFa"TLUVKDMG3U0,*4-HaT!fq'i"cJGJ0eNB%2UqM3
fK$b)&MH+f+ZZG+Fr)%KU"K'#&[L#6'd-&UI$8ZYcVIB*m`e!P)&CdSaU+r%CEBV
E'+E4P!e)FR,UG%Ab2Yl,!G$$iR3DGZGEq4FE4S%XS`+eUSaRr-hXM9S+TMGHpHh
8p+lH%kQ8d-1b+K4ZXqJ2'lp&a0E0*ekN5p,aB6efiY*8Vk$l8c4e8jRM@SX4frY
,b6b@hP[-""ZqS*ELHJ!Hcm[SEq4&G-Em@bVEdMEQ-+H2epYQ2!D,$9-B,NNDC"N
N3HkfHIkaA)9k&NI[!b5)ed8'1eFVA%"U#P5D44G1BBFmdb'AQJR(G9[8$N8%V'@
LG%IN&1MVQm4,)MM'cV&jdi0)SLd2(Q9Vk"KRjrBIKXmIh"K'#)Y'p`ebCj8Gf)X
Aj8-m-[&mLX6*TBl`9prl9#+MESjEGh`K%+#@lhh'BS,[I)-KjQ6IP''EUIR$1l&
!pb#EiDhJ&KmmhiTL'M2cJdB%I9UAqmQ93FFG1APVU$9+'VB$b8l@&92bHVqjmh`
MKfQ#U)PZNp[5LYJZHV4ZXTX,EqRm"C!!Y'3"3fQhJ@il"HV-Y%`8CP$pUh!(Xqb
#UTcPAkY'V-A!VZh@@XkT-NDA2[[R5C*1f0(Qa1D,#iG13`3%Y+1JbCjUUq"C`*3
R$dYphd66h(6,"c'RK'*#CmXY8UY,-Ab)e(lR*4BhIP)0($VTpBlGq,Cc&lU`U'I
m+3`Q!"fE*Tb4QXBMQkX$4pA2K1RDJeE&c#VNJN$MSAcq03*V*'jGeFf%ZkUcFlq
PHFbl5fVCTZL[,c@aQ!Y"Q0`+Fa&iJ3'VYBq`iB`$,!2H0)QI)Y,!""BlD4jQ9F@
bq'4bCXcDV,-BZarND0i8P90Pdjib-lPd%I%368[ll4GRalA%EV[M)Ajqj%*h*TP
85mT3IpeNhl$5pPGX2KL#LAe)SNiBJDcVb84"qS+8MipMjk5Nb9K1a6pcp+dKlZ1
*KV-*+ef*`ZpKq)M'*%dlR00Z5Al515JarGr(fcEFcbfl$i*$D[(SlSp$ZB0fF#+
+,+'k4jAYT0aBadiB4ppJNG2Dbl$P8#ZBTPTm0C4HI1DbV*bZL-c$ZP+cQ4i`EVe
I6P&T"EbD@5YaMUZmk'PHkbDPf(JfBT40BfE6@PM(ii5V'FX-fR+XBk!Bf)'9%H*
R-ZqZ'i$FBT+418V[G+VJQkST6GE[qEZ#%-l%r0&+,#EqCVhIcNYLUb[,UjIMp3d
hXUHRJ%N+!apqIAqD08-I,TrDpcb4rD!iikfJLpb9DG@JYj6lqecaqUA@h)J1SJ3
qq[mDCah9a-Mh+j@418RNJiaN(%*9DK,A"FR&XG+EKKQ96!YKf`b9p-Jha[VY[8%
1'MeM#lFP+PZGCI!Bi4%JcpEA,AQ4H*KNImLGRQpT`KmFjH"5rJC63mfrV)MP9iG
M'1I'A2k4+@H3!-,Y%SS`J3Fe`G@+MqEaE$aU8!*UUK260)ePf!q[)0hQj@QQhaF
D@4Jrk9EPNmX#aT[6eqZ8e&fFR,36QiVfjaaE*HdC9rT4h5`$hPM1aPl(1,Vc(Kd
Iq)&UZ%9b'cIX#rLr''$RH&A5m%rT3*B"!90M**DMT+FcbHVq$JIq2KddTSbb1*!
!Z!q3!-DDFLh+HJc%dXY8fZI8iJ@@A3Ma(S0aRh"BNIcj9dp*SY!mBHQTq4,dqY1
G["6K'V1ALaCS88r(N3Q1JRp&i*!!T"B-Xj-PUeE,re6`j!DPQXh9h("H$E%fSHe
h6%Q#,J9&A&+aJRA#hHGZ5HFBL9H&MX0Vhm"XkFVDBZ0DHF5$CIlc,BH(PdIC&8#
e(@`q3f+BCUq&ZCprcpmB$b"52GDY06"3-(ADHCh&"9#-d3Z92Hca,-fc*Y9AjhE
kjQIDmB0R1Nq1LU*Uj#NZ8jcR8j-He#1,eJLQ*RXHHfR'f6i"jkNk+mIN3BN(rf@
LfT%(G)[HLpdGIe+jVB(L%BC"8F%M$BN,)ApbX9(Ee5"(F%`H+b0DNN%PPTkS-MN
6aNMd$3#++R`qQTkh65(Ab1KQ8"i&,DFCmF!'5)pN&B,CCdNdDf3bIhL8M0UkZSq
MKSG$aqI5&G9Z"$[PQQJbTC-BZ&`RANXp`#+!A(r$EUS&%eTqR'eEGIX%pdZEU4h
*C#[ER%DP'jL0928"GY@0%l(4444q4+T(5RN8@m$'IQc4bB2NYAhj,H&c!0S&Hmr
83+2H-N)qQ@al,+J'rTI)1J"+'-9P![U-mD5!+`q+BmPEiH9fRJq"52J#56FNapQ
9QZcqh*5HQ-JKDTkYaNj)Fr+@&jVqM81Yc)ll9L()4@*eXKhpD68-"!8eNrV!&LK
$[E&(NHZLPGl@I'f%Mr[5kG[DMPNR@6I+4GR(eI%eIN)&E&2Rb%Nk-m(3*TL[I&l
IZ-8IM512)T!!SDRT1kDp4XIS!625N!"IE#3)K-Z2AGB"["Na+#rb3YGT+R9$VTr
lcU-ECf+3!*D5BDZSG,BSUDm%QKLMLDX)@5(Bi!Z!lUBQr`HP5N6SD`cFfCS5VHJ
Jqp3j@2p#Xb&F[r45hFFR%TT#6LX6$@V*61$erG)F!eC@&N+880iEriZd%rD#dkl
PM0aZmfCR01m5ffKMHYVGUjPV)'PUMmB3h$[pr9p2LTa2RDD@jA,(fLc-1fV)rCZ
0)GU!!GG5qm6&1@PX6R(6TD1-lAliM5'4kb3r*"RfAlkdA32CMi6r5aH0ELie50A
!+9F22M6iUFic4Iib)dER'cDTAmT+[1#r%8)QE0*KmfTVK*60FM41I&-d6LPX5'h
cIkcki6T@V86VNYH55[1J1kZEaKF#@U9,iTjURJ$NU5XES2Ici*!!0'a)VTKcL&#
D%&4cc'0,QFE4ReejF$df(ZGC5CR'!-m0dk(3L6eLN!"`)9,fEl'kc*ZJQ8U#4P`
16JNP-&5P[M$'lqH+$@S1mcM#5,qFdR3VNkTa*30)kep*Ddh3T@$2%$eDd'(HNe#
mf`C%h5Z8FB5%KA%SRij$Y$$SBd-dcVL+Fr'NGh`jQ3HYqPBB9XT"jf!9*)aUCr*
rY!L@SCPM0RZ#Q33D0J4[k%fqhfE`m2,8BM,SfV19NUR8F*3h%B+KF))h[I0q1QU
J5Yq9A[G2DcUljNeZb$p+k&q*jSPbNF,(LXcmr+8VP9Vkr[&@STGe%b"Cl%8Q[5p
F%k)*K&LhC*Qi$9(!X3N`*Yc9LM"l-prTkBm8V)8Fi[X"i313!%pAb2,MrqY@YBd
(FUT[8!3d[cVJ9*lJcRHm$hV"5b!C4kkl$5CXXcd9BRh"Pfp)V6'0QV3Y`XLH!Ni
*hYihX3,cP-5)5iH%8RSCB9$1#qpT,UB@p30X%C,iY*h%"qDTrd[)ji!b29Xi$Pd
p`U-VNiNS5&@qZPchI9EhQG-bE$%B"kK2m8'9P[2K-5qECKrP#$$L@Gc,"Ap3+Z-
HjbEX*ANZ50%0MM2KNEh'*#h"kI*JMpfS)*P'Z2$G&@Ge@S!p9ENRVCk644r52(8
+qe@%Pk[jMNNV-#26S1@ScXfJb6D`3!)EVPU&@'iBJc35+T,D%Yq-5KIfXM+`SX@
*`KS#&'BBkH3UVS"Y9UP[B`8J4$9SN!##em'DPBDhhXp8ZMZ@4N4%aVkaSS,(+!)
d$hmq@aPFRJkkCmQFZaD'+`jEN!!TV9MKISf+"&P,+MiQDVD`0bQ6JEL'8Ia!IM$
$&j@)HJYdBHqV(Gpl**eXR-GMUCYHaI$[$jFh,@QA%fb,XF85eb3)G1pMU5"H#8C
X(*p!cl48cTIfSC,54bEJ"2Mk3%'k1aUll-0i6ClY9ShMG*)b04bh`DS5iC55%15
AB@##[IDI8P$eJdqUTAf+je+8@&NbRiqhV9DE)P%bDc5Mp@4r`fFdHGDM*48Jer3
5h##8@E[SdTQNrkepq+TE4jbkb%U'X**$9N6$C`PP0`DAAJVV$alRBRe0e9e[fYH
T@pkAP'qX4IY&C&k`+*b2*N2C8+kT8'&94ij15MlI3'4dd49f,*fF4D4Si!`kaqV
PZI$4)`+Y3h""M"0a,1RYD@p"-c"M"Fd-UF3qil(V,cVN&M!li(A)H20NY-l@8L*
"IZNmiGUMLaIV*SqI4mK$6V#hG4%F+2,TJ,LRd[`m`Q`QF'Rm[SX`Jq@'3QiY)Sr
DIB3UkrZ(SEEkUHRIR[lHM4(NmbKjeiMVhKD-USP0JMEkk4(mATCTG'kpSeda2U)
Y%pTd`A36YCarmM2,Aj!!"%lbE6TS8+a4G#l)4haQc2)`[DIFa,)HMYhQiLP'%JP
Spf-f,CDJ([q*MkBL1&[dKpQ+Y$(fGU6p38lD!I$dC$&CKl(RhP3A2M4l%#LD4@I
HQGieH$IkH,12jIRRkCZ$c8#r(6U3!2N"$Gc-#2h+&bpc-GSicKXjrZ8bIi&h4`#
l'5mN&fddiS*m6Z-RAjDT082ADmXMB3Vad,F1L&KAdKAI9@(@A%+ljiV'ciEjD'K
3@J0,#jDa*)(keQiR"@C0)aB+NV+*!FM4FcjY*N1IQXDEXiqUjZ@(1VVUpr!apf,
T)YXi,JE3H2Yr%iMNQXEYVa#dY#DL!9h*4I82K@0N#S9dH1i%XRclZ9F*F!!EMUj
B-AIr"ZQjR5q[GP&%`pIMGAaY'k`U)H5rS,$,N!!kmrkPiVZi'DCX'RXfV8q12FG
dMDjaF@'YJd,q"b&TmH[!VX`IhP&j@&Tkd@ZdY2YqBb(cX4q*Her@EFr8%6c+G1%
1&2J*I[Jk4J9a!if&``3[Qc64MXXVC*,T`@"8H9#"5"XkEedQHD8XMCk%*kSMCq$
H1cKpNR2JDm6QqQ5Qm$L9ARmCTDG+JlXkF%*qN!"a[ZhMdV*#Akq'$F#A5QPk3@Y
EL8XGm%R*+%TX[lC,Ki!j@VaZPML`C''HbZL5H(-ie@NDc@Qa(BEL)fT3p@kqk"-
c&EAH9N'j-0@Z4UF)DL-$iBVTa-Jl,+11M-Q-lBGll-kE9cZG8RLdAJ1j2f0Nr"D
qZSJq(#$2,*CEG,[%!Lh!CK@S"aR3CU'5ATJh0FLDFi@hA5`4I+&Q4+ES"I%VL[3
N1H4mQhbZf1[eS+3kB(k403dYceU[C*8mNSVq10`dlmUje`lHbYMjJPC[Rje"hfS
Yb9Hh8NQ5TQFDYIjEM,'!,rJj0&"*,YGT$l25e"#"he#IE8q%mDIlE12@erpA5+D
DmpVT1M,QmeqTM`*VN!"8ac6IVp2r8FDlVf21L@lT(m`0$Bi*TacL%@)(@(b#-11
FcK8FLm9Qi+U01)THVGR1bFjjHCcBE9B""9%Ya1IX0-D'1(+a%09#ZDZiZ1"qkPK
Tc3)G!P5HhpI%bI8M')IIB)&Jk+N-'hY4B`l!(UFYAX[*,N+2ZBmQANq'KScK6F$
BH@hR)EVr0)M!i+VUjZU-e!Rb-PC!6J@RD'(N[ZT`f3!$QTqYc#eL0QdeDQmJIGC
M[e9UdE,9EpKE5dG6chheaJ!TIjJ,BKAfPdiKFaQVlNiV(SMIQD6l,Mad'!Zl"(D
9(iS@*b(4(,QH4(E5YdbbS(3bSb!@N3M9P,0acL2PA5J%3iYIr!PMlmrhCC!!!SZ
4T+Z+UP&@F+rLD"6H`JSqHQ4rMrV[)0lDdTHI0A#9,@*)HK,KDGlUm[bpZ%PhE1`
D4[e*C)5Eb%@6qTM)9F&MS+`l@8#4+VAmBJ"&fN&6HmK'(`KZk%qRS55VmG[A%kk
DMb4@G0SN+jc@#li)K%(&Bf6(e%S#*34438%lqCEm3"PHA$2H`-)'U00Y)4Mf+V[
T"A'EL-DeF'Lk`TV28DQpmLD@,par3Yf)b+l*qrSE'f!(`Gl!)#-6bRa(iDJJL4C
F$NC8hbPH2-c-qfLV+F[)(%5NmAkN@bJS@MhXHG)42'3pccNiiiG4l*K4`-8SJ+Z
%Gp"URKZeBp2a#3B)@F[F9N&h-CPKVNkJq91hfR@a9NKb&Z-)0ia16Xh@-rdb%rr
KR'IPFp$KfZK@T0a$'N(PC"am,!X8Za[iVd`LJ2e*4Rq@0fC2B"18Y4-IG&HjL$k
9h8NYCNjcY!HJXG)4'iY&b986(FUC%,'JMG%,[C!!T'cXpkN!U`E2SQE##%jl[(`
HCc$48qPmbk[q@1`ledShqjRepNKV,p,dY[4HPGRZ)a1XrN"pQrbicmlL9,qp9Hi
S2N#KM4jR11'+-aMrEH`mkZ*+PPlR(1@Sc3!!4Y3mjbpQdM*I"dl#DTf6,HllMb2
j'%%k!HXaArjAed)4J$VlURX9I$JDDh$5qeH2)f`mV4'k'K!YQMja@l%Q'rVa3&I
H+!(B*bH2[4%%c0JA@,Ne!684Y%0-`MK+0F,1h+f!KF6@"1&8)c)HBm6jJ*(V6r4
hZ%8+RU6BPR%TDDmr#r@09q-M#IUK,X6hI'cYfrh(4dVmAT-"Z@L"D5XQk3MNBMR
4%LXJ6id(82X[*rr$HUTHBL-mmG[q@0)3@l@&d0Ai2I5cC*cZffla)qPRmN#B4@T
51K)$aZ0*M$h-[H39NMSIaaYa)C!!$T!!BdEVBLL,pbQH)MXk,Rmmm9PkR9Sm8f#
-D5Y&ihi(`FJcTid+Ab4Xi+H*Vk3F)*U51a4)'QCU+aXPY+-U1Ck985V6M*FJkRQ
lYh6R(h12@b1-58TK'6P+[K`plBbU*c!NT$GR')l6D%pXXDT6"bA69,4l,H2*dqq
-&h#3!1&F)3,eXFTjaJcpmESc`&cG9&j),6rNX'Cm0H1"29bEK46S!%,J'clXfSk
K@B4A0)Zid5B)HD5`Y5Y32mMbk1cIa3ZLPcjK2HeL%q+"K20[Zf6m`!LYM,p@XSl
aA4!Y)k&EbelHlfAq'TK%l*%%a5b)iKdD$H*8A[@9khXS'%Y")H'$%5`IXab[9L&
Hr@PS)k!TpIY$Xj554,*9+JM2IT&$jEpbrDB"bINM-3pXVV@T)"M"HQGL&chb8AT
#@#S0UJmb8hpL@"#T*(@6@0(dF%r),lhp!(*)6j)e,ehG*NHRETj#$UdGUbAl#Bi
qC(D+kNF&E2`8H@LF4I-CkmPV@TL4-V!2"Y@dP*RE-hVeE`Pr6@lGXHEkG[q6SH[
j-rhBj0#Ha`A*X@2bhM"C44096Gr5Y*QED'qbGX!L+#Jc"[iM0$TLppV5pPSfI,0
"b)aSQ%eq"-N2A1pa-60,9QCHK'c6GRYQ$fraPXFFf+F5p9lhBcQVEFFr#IE*Dh*
5c4hRhN3616AR!bcGr3&8fXb+Bm'T(U(RILYJI*h6!i%[YQq8!+9AbBj$qX[TT0R
dR#d(E&)U!DU5m,)m+eV1$Kelq'cXaZ*8C"4$q1c)"BNhB62JCYTGm8LBNeG8Fc@
Ef4`rem!UjR%0UcDD9b6DY*QDii@Lrd6PrS&1[[E-8XDkeGDX0`T*U(U5m0()Tk*
L6Pq@Aq['#L9QpV0851$p"fQ)F&Afr5kbp!&dbNT(hVmk#(GMZ@*TJb,+Me8)elh
)*GB0JqUh465lUj*kjkULq)JUdP3jhbXdY#&j48*QZ&dQkTZaq@@'ZD`96arL)MY
AZL0@4[F#@PSE25b`4YZJ3XH85@jE,l2Q@Hq&hBP(HZ#+Mhm''cjliIr!em4qVR*
D#N`T@*mNGI*q9bbLB4H!XAGF6X4#ZrS6Vd"h5$jl-VURN!#H-Ei+-MQT0'MjEF6
Y#-MLPHNe*crAkYkUh%i"0jURfF6T-ld&JA19ffSNSNb5*DJN[1,-dDY(k&Tfqr#
pqmFQjJlcP$Y+4XGVEPLa3F-KBi)BbZaQjalfh#+F$CZ-@JRDcFFlA&DIj(GMJA0
+Rc,,!S[,',kC%2h$JC8MADi9N!!GhAIY,DX'pS'!'@TFE0ecbTX4I8*NFfE&k@M
+P'S8&$j%X5H4&XEVDmfVQ-G8C06)aV"fD$,+VH+1[''E,ZN9aG(3&`R,QmL[aQm
rKZ%V`XTm$GH8a'D&bLYKVDVkNZP'pMq1@PS!"LeBZG*GbX3,$lGdDLdPQjDbqPj
P6hGPS9Q%+%h14U[i'%c[p'r6M$iH64J"L@lHQVLPX-BLY*MDcQAj551!hP'5pZ!
&jd!mip@hVBVN-ANrGrqd+T*HZ`CUHFRVacTMCK*dhQ"+dSj2X(eqBH9K0L"ef*T
RfdaX#)bL!dk#58,Nrbp(U6TG9"Tr+LV*QQ*P"CRC0!@48pV@FS5D#%('`h8TB0d
$fZ9FITbZK6Lk*Y5HPc`&(j%6@%m3-'$GF)&VZkN+MYIHPKS2#PlZbdjEDq!crV+
2T,TRKH521Q8rCVLMF1LVMQU`YAG[GE5b"I)4q!3jr6-J$A%aip8j[BKb0V8eR[I
HSl-lF1h*k63H,NreKSU4a&`L'TYqGZAjq5,jQIR,@%S%F+E*D#&KhPqD-0+%%AK
#C@S`&*aHEl@HmXa9#fr*JUX6ES+SM-X9VdF5DD"N!2*'#a+JPmQK-c4e3fY%l,,
'Af,4NR8YB@S(cf#@pP-e9E()EK`e@%RAVl`j&$C%+i"X8d40rmXDPGl(09hmQLd
+eP+3!&F!b4NYX)9e$Q5B!R'+I`6INBrh2,d+QjCY5@KSlBLdY*!!IfNI`BDPiiq
9dH2[1pNpEU(k`2(aAZ8PBURYQVcfV*XM2`B,&e-'"NGcR4NLkE5i['*4(&U)a9`
kCe-KVJT99ADI+eG3%*XdY%bV[M*#klCGZEE*Ep[ZLYlcJYBB,IYGFT6rmC3%#pi
p[5893N$NdrQ*MHM+KX@8qr6*EmaPTjf`BFQX#DKSM4feE)V&QY$rXa28a$!Q%d-
'ZGj4,(X2DK-[-i)-0RL@Z2S2-i!D!2qaH82jb+M'JL!SJSJ"kVcj,4!ej$me[p!
dEB3RaX1E%!*ba2NF["LCNVe#bS2V-Z!AIiGc`C@T528hNSE%br%FVVZa-+c98L3
`Abq(G2mfk455D5%UG-q3!(45'PVPbaZEdK8S6&SK)lH1QcUkmiipLM)0Di+YQc8
"6D+C2!+N-FL561BNNqQXXEeQ$jUR&E)ZXLdBYqced'Mh`4iPDVjIiR`ML"T)Fc$
MTP9IHCKhdlS4P@mHcSAF+P)3LZ5XPDBT3-RF(hkUiHJJTRbX9'F%C-8%jd6V%-p
mP'Zil"QqafA6h6h+lM0X"U8hIr,+Qm9RBREjfA#099G$KT`lj@d#KkX*N!!T*fl
d+Cq)J("A6DF(hTMd8+hJ2P+)hCG`CiT$U*55c%F,-`p%-ip`4c-"#%8VXeZc[C,
kCMfHQD!VhX4bk-BjV2@2!0#"Zf5'J$[$1C[A`2G6LFQT&0M[VKQlM8[-VRVYdZ&
q-TDE+4`0QC3H4U9YU1k%RSjZH[V5caC6RReiJ&RbJi(()`J0S5RkKriTiCrlh$0
jG(LM+icEPG&Q&@b9$BpTXJD12MA[%6Z6NeNiaDJH'YLkZIHK@"0T%k4TUh03TU$
6Na6-2aD!CCQpiQ98pI88@m)'q*FcRl))XC!!ZQ8&UU115dA[@6$@hC0"1qf"'"T
[eMiaRZXf8Uh1%QBRGm"hX4(U*G8K%pQXk#9&($FClQhp#)f,+l(0l$TbBYr8!fC
4ll[TLDmL1ciMBa(1(b5$F)JMVHI8*GZ-d!'5VE(kf)%q(N"8PhAPBfYF2iNYb@M
AV55*S"iaCbKc3@q2qX,BEHh1$KE)-FI+d(iq&V$@4l-!@Pb4[mPH)CG$pmFq#`9
5Qq-(q1I1L%+'8N,[Clk$F#'6DG5IF%NZ(-93'0dpfDCbpr0'a9*DUG@@CdT-RAk
9mkY3Lp3[pjqTCXe)3dQH93`3$YCNEbPDU9BqiaiTdcNhMU[E`6RKT$4Fbb0JRp9
h#[haCb62'%4%r"'Jl$`"[4QIVpkF&0SZGJR*0NP,!"Z(3c(D3fY9Af5L4Rj*6r5
,6jcf(8rT&ib0$6p(E+4lESXJK%-'GhNZBC2E2i@LGk[KHBK%HR0Tm#BVmKJfqG`
&J%P-Y$ZS$3(rGFXb%IVBcF6ar56DXIAIH2JSFqaUeZ&mGmNGGP@3!0$r1p%UALY
mYf21pLEeq,kEfKS93RaE(qlQpmHZ4fRS4KQ3!+8L5i"LV,PZAZQ8*[,HCH$M5&f
8!IfI1rTk3N3J,,EBi,B[FAb8'3L[4[GeV36X)B`LRic8S8YVqch53hI6+S"-6lM
PXA)mGbPepk,[`XhK0D"K$IP2BEG,HBiF+XQie3"H`KP%F58m108h,G#TVq$8,1k
JcJe(JNZ&3r[fFJLh*HVXA*Vmf[(iXBNZr*!!E`CPe9HG[MD)K2k1-e'%bh2PX4!
RHB(r$,XGb54J@`!-rLl@3["1D+fb'`CH+kl%3,&NNKcj8(%`k"@2FH-qPr#T*(U
ZMFlUalqD*4IhP41D[6FSMS9R@pK#!11(m4[SNe2jk3$#5ME*2G'@rXHJF$B+p%V
AVF212V5Lb$(cVjlb#F84Za`eLD),Rp`j!DSHA8bV(+IQk5F!r$$AdJT3Vep*EGB
bdN9C8!2r48c,Z-VLk93@Y$HkF8GMFU"@0SY8a02VBlf@,dHFhpMErN9aMLTr'lG
!pH8`IL51Uam+G&*Sm302l`,MHfe3"Q#jH9BUBe5(JImc@rk)ERjeKAAEb`9q1J"
Zk9B1jNFN2P'3!)e!+bUeE$U&mD0G6KaDdAi-QbTmj1i(+$BEcQ"rFNi(#*SGhR$
S#hG$59`EA(B#cad@*MM-dK1P0PcpM)a`3-AIHidX28YKi6)5,Kjd2DN%%3!dlDp
CMMaTK-l3c&pmarE"5*!!ZiG[m`Ff"3XYa6e@lEd#El3a-bRDZIVP%)B-@0U%iIN
3hDQ&IE*(@SM$E'42EfZPi-22S(G9+ISiSUSDPH#RTkJj9Drl@2kmm&4TVFG3jb5
!''0%"4B0"ZQ)6@l(0E"+m%BCe)8X9ej$AeK5J&ZIYaH[SNZjG,@QiLkTrDRk#rL
Yb,Y#fl[jQJN*T5[Kf@R[J%)'X&AYD`CUZb%"3A(52$pC-TCj'(GpZ10$J"RUd#G
66GarH(m@,i(N!+d9U!!JHV%EV-A34(0NE'8'q9-!(L@j9aKlTq2!C*1aRqH1lMX
LBQb(jZ['6rlia-AN"ARCXKGipp-VjLBX)J)$l5VI2djNdLaIK$`XU++bNHMef3+
Q3#AFe-AXBJ4K#U1YR-Clmi+9V*GG&6mTb2I1dQ4FdfQaKjpJ,T%,%`3kfAk`D%A
9E)pH'1D%2,QKH!if!S#kh`aR"ki"$h"j8@"Hp$L4BRlpC883M9NMj8lA+*JJ8Hr
L`1%@Nck[MFaNHcEq*QT!T'mV$4,Mp#jF0a%L2%"-&Af%Ii,Q0AJ6-NEU2ZN)kV%
#DYQLIJ6l,2J8J99")b&5$T-TPMXfZU$A*Z[Q[45-aNFm))[!0P[VU,)lf-Z+D29
IrAhmV54q,hp1FCL$fZSF542Ka%NrFF%BK9Y&J5Vhei2YNRG`0MVP'!a1MEl)B8m
#MI'8*FZ$eH4fXS0cp%i5dQTKD[31*`0lU4L9r,CPp$(JBSb)CfCHS$fZFqGG"(R
GDdcMAT4Kp!hkl5KeI&lSMYG`lG4NlMm8a2BNa1@9a@`ldYd'Hh&j6LH1I%Hl0Yi
"6Pl`*,2MR@RB(GTd#1#0Qkj130[1kMp+(DaE@f"!@+#Fq%RF2E#Fk8-U51+82HP
5D1KDMm#[MeT'#UiV-,CQh8dH'1Y%pJ'NT,%j9I4Q2iFdABU65fSBX+"5h@)Eh!8
KD2'L9EDL9(Y&BVG%*KTLZj,bp`b4aE&8C`KLX5X&F2HSBMSleb'6M'EjIdSA!Zp
RGpr9"ENp@YF`1X'CHaV,&35$[QGN8*Kr+Q+)U*I$,X%qp5T)`BA3Y@1qRM@DaNQ
aFcGj16N@5hIN%G9"@'$%6b"JfqPDC3lUcDdr,(Aqm8SaK-H"2""6H%a"PEATY9!
qRVJ2)E&jqSRTGZVHpbS(D)E"[5Q"2(p3XSSfah'jS82('e),,f'NLPcR'p)3R("
pN9NMG0J`VH42iF3MLBD,I(R34(jYdA,KaB*Ud0A,3-NlY63Sc)h&#!E$N!#U802
'pY[kpF@6@*@Zm`VrJUr5bIj[-0fE+jQll%FYI+$A$`mYKfD1T6M9BQ)EcHK6&PZ
M9LbbPR#l'r%cPShYZLfkp"KPF*!!#L(KBpa(aBLlbQT2RhR"Z0BZ&Sb)-A!Iq%I
hT'Dr148BDrRkqMMHh0Vp#Ch9406fVBh)U-@*2$lLQ!Aq(%AN+rZIT-IX@k!h!*Z
hjjYdDD``-NXiN!!!Fa'%YFaJe4KjZU9HXKR-TA"885U8m16pF,ejDh$3F8e8T9H
&kQm*8&qMEdjfCMXZ[4X'bKRDkZXYaL,c[@S'9LcMeD4aYYTeE1(IiND*r#'lN!!
j8kld!)KqH[ZN-0Z)hMA6%d4&eG6Jj`Ic*Cl1bm6JcXZVKFV-bTTir6qc$Jc2l9j
IdkhJCi1-U9Pm2)S[#*HV9Hr!23BiFGfUfFIE8!"@RSd'iECm,5QZC5[q4NjJb38
X+R)CTXE*P&8BIN,&Up9(),rU&"0TQV*536CM[MTSC&8e[+Lj0IV*-HdY2qA5H[R
5Z(TaBEemBf*r3S)eD42X%VMV(T4(ClB&@V6K4ciTQqR3NhT2+FJQNXaBM#X'm(N
!4*I)U%%a4@kjU[Xb$MT0q81,m@)'9iUaJ3Da1PYSKQj@N`!8iGQNT'C8Sc*XG(Z
jhe4HAijU$D`FG6PLVd*Qc5d4FH8M-%pj&)439[@##'mrHd580EFmUjcAI`"p&UV
R+i`BR#!`rFZmSXrqS5H0Y`'l83m$(S3UEJ3Q36A))0ZrCD)m8#D3!!X!CMfS&,F
h-+i@#j[b8("'K)e1p@kJ`f#DZfG'2@5ae'!5X(NqKU[pkRhDDQ,(Z'*P'chSrZk
BBGDqZi3"1c$"+`!ilcrmCR)dF)aI6[@"QpH)b*2irRP53@AL12j`8akj5TDdi+5
3!2Qr80'E5'U5P3Tm%"UJBrB92J55DhGGSZ`f0SqUHl,)Fd$UC%TAcXYkLifiNI(
'S(3X2,r(e8qR@fKcq961%@U(*,2U)rd8@c#SKQS03*aM2IZKY%T3kZP%0irNN['
jHfU,p+d3j1bdPcf+M%Qr@h'XVZkZ#&UX`qXQ6iQE0q8V)iUrk@p2bm`5`-QBehM
,-aYEKpJGD8@VNS+aFUMq3Fr9hbQek@ii`,UpJId4dUUe9F@a44ppL8lBMF$U5V-
9&E%`e2V5'lRD60bX[NEAU'LQD'A"$aC6c"C'(KeM4-jZjQjLLBLP6MZ9G(mIq*r
B*Z(B[!iV`cI20Xe,j`ELFL!lTa((pPh)Cb4mqDM*$"Z@0m$0c+k8p!8H&1dGrhQ
c9Yp9!'0Ppk3hh$&Q(8%(Fp`iqeIBETFlc(2XT@Nc1dRL0@'c0CFm*%iPJm*Bfa%
DQ)8SqJYAmJXQQC*0+Mj-SLi'3NL$!3lpcT&Le@*NGKrQP(,p9el$@h,8IM!k)-J
3D+F-#ml!lH$Q"GUGQa%YD9Y[d9DYMkG39k&5B1Nq'89bNVmdDS#KTEcQ#J0,(HD
U0q)kJ2B(4%Jk5V1[krKl`c)Z@"kbm'rLhqGq'[jXp[ke06k9Khj(lQ4S,)HG(3b
U&NKXEh[&dDQ#Q(EYB,(`M,G`N!#'S%U[LY$MHkKbLjJ-!ZDr%YLEIjc$Y%6Ghp'
pIXF80LR"CadXPhYlBc*0"lrZ@UGD*Bec&LI,ZVL#!aH,eNVXS"*X1V5Uh1J)S,%
HN330ZNbkeLfAYTj)&L-VGHe,)F"IcS9A%4FP)@5km$bH'6f!Y9,pGI5hVbafhCR
*V[ImM!VLcYEIIhZIXQaMFVYRr-f81#V$#VD436F"d`N@[bCj+Y+CSlh-jIk-cEj
M!rY[)KflVNa`"HH8FJjS'IHir#q&NFdXd&i#HEqM)Jl%P4B(VSDMBPDDl[-%5-P
9IDdXjbT3S[$UL2(TlU2"hbLAFEfN-a)pd)2TjdHhi,F5hfHl([0aX2lklXE[[ij
fbU5Bcl9KVCL-ei-6Jd8Z6Z+(9ANl-Z5H0L-aD[c-#A"4"MT#`h1!H(`[FZN@ITU
CR9l@UIM2549lYXi&#%6fJ&k[e*8h&Y-'5RQ4m`1IkN3*Y0LClS808QA$Lb)-eY&
lZmH3!)03aC'JNSY[@jp1YFAQ4MiUrHcZcN+rpEf$h1TiT#F)[kc4,43R&*'9#-L
A9X9ehQ4XHN+J1rB&+S$X@!TCb4k@--j4@9dRjH1fZAYE5qpq93Da`+$&@Ui%jQ%
RU,RiHhCb(a#L![`2R+1Neda+cDY)ejH9el#I!0(0jaINF6IY,pb4XG*G@C1I[fc
d&2@)QrMJq!1bZq[(2PiFDjkAFYD(5lkDJ*b0Yl@R&1F&FMkq2FeG@rJiBZCRj1b
Z)-2EpA#HTTYX"&C(0*P)Lk2)"#+hNS@dZeQiPF1AFTj0Cp8cRJRP&TQ544D`@[+
@9-S(hiF@l,Z3!+8qc2KAB2Phq--KAIU`%rCXfl@lrEFrH6-#&[0ZJ4l+HHiSJE@
!R#"cB!Re!`MrP43eb%Z[)C84(C08R0PJ*m$[[4DYIN9E64kQQb,KM8&UqrKHSD1
,kGjE'4*"r84`9"IM'9,94Fhfe2(AD,`H(U1k6#`@TJ+L!"p4hLH[9698Q2@#Fai
5(2BBUKpqIpQMD,HXB6XXlmSM5`U%pNY0D+I4YBYDMLU0a+G96KejAId(b*HkLe%
R)3M1+LR3")YDpTHG'DNRe9Jk0AV6IVVq"SX(ifTHrD![,AbpCcKG(jV0G9D,2Z2
[l*l+qh)D3mU`VTc$AMSkZ-0`a289!fc0FdSAljeSj0B5qB"d*qbVEj9CXV+MhaA
JF-&)Q+!CU##SjI#0E6,12(ZdXhZm4"Vf1[C0`%M-P'MP)S#Cl#h5Y9hN5()AqZJ
$laC@+D+4&TRpEMhe@h+r%C@!A)qTpi#Be))INdcAeH'TX+4USV-ie([HAM29'Mk
cjNIeSHQLmce-D2@NAD4&aE-XHbc@-Hk0+qiU&pBSc"1e"T9)R51L2KU9Xl,MT5F
ZDk8IBG!C&-eM9"H4"*Pjm0HkIJQ3!0*"NDJrJ(eb5!MpSCTF$LPj[jQbh1Xi)lm
5"&3XQ++fT&f!&MpI&5Ld8e694aBH(hY!eRk@l"HHja,f@JEP#IIB*`)H,[BMmMY
BQY9k@9L!MDA%-)*e9JfjPAq([bC0ErPpqI`AU9qmJVEX@kLcK3JT5S-&DKl-"PE
p!JNZpEFNJlV3QZ3`)MJ5QQFpC*r1m$me9TUCSI-4%*)$FRXi#a%&P'-@@MTfjVh
U&Pll"8E!dr5%'!Uh*5Q!)*)je`+3!%@0-CNJ0UX+JQrH0f29,@'Z$FFE8RGbidJ
q-*J6lD"DS104$PX@lGmlFe(Jh*Vd9`BLP!LD[2ebSQMEY-Lm`aA(`D2mD+bZq!S
bPBIi+6HY65L9H2(9aJUEiEa5!fNU9MLJ6*)-*4R$4NMVlq!0395Vlk5V&38@T4C
lUU'&e#MVVIRiXZ'-I6PShf&"HK%$l9*k&UDHXLqA#CdmLfjRq*'$@X#ZNrEEYS0
V(qfk2(,[%'UfHk+cVbRZ'fa,BT*4qdJ2&Q#ShJ2()HffQjQfKH*lM%h)+4!qp)d
!c5I6q[JIf#AZFC2X5V"Z128'UZU*'$l0Tid(mDeMVJK,fAdBibE@4fcJh9M@(S$
U`ib"UiYXR3U%B&)HBF[BEcMNQUJX%#PjVCMiVj+c6bKlKD'SUM)C'jGXPdKkQMd
LC#5Jf)8i5#JTdHA$*ID-b+$q@lfrLcleaFaXS(AQAbM215YXP21qMEp4B6(`rpK
3lUDDNrJqXAFbl-fPQL1flSqp%j1MlZic'8l("FCT,Z&MkV@KdIAHY2PGHC)@!Zm
I(Afk@i&0i$aj`IhiGB#e%ED6SqDSalim`hpa%K53!#%mHmh4SiZ(*lc[RRqRS'R
f0j[FQaFHF&-XM+BIlr-6H8q!rVpKk-Kr65jRcIJbpY*i,M0YAX-HY"B688a9YMr
+8()Ad4N#if6Re6,@A88Zrh&C0X2iRLNc@AZrDN4424bKr&cer"4&!FINaq6qjTR
ESkNF[e4UmpAp9Md*qGC'&HjK`-Qpd34[q1q!#P'0Z@qC!Q%QVP!5+KQ5%NPi5el
Qf6MeF["Z,`3IS*1L"V,"&Y)@fR+0-8T9XErIj+`jXT-@DEU+UUL@Lf`*4LRH9MS
HQL+qjX9iZk1*S4m!AM%c6MkJ%JrB&j&(#%cMPY2p+9Vi(cYGi)dC`l$XehM9M0k
*5C!!+Ue&dcH&5e$Q8GP&PBS%X!EB[*mK#9h&PLprF'Gd2S,jUU9)#RV+(LVHB*8
h`@IBU%0+@h*%[f2PrUp36+KCI$M$,S#QI`EdpHr$6AM$-ki8pPcI(65DDPd(UHh
@RXdT'"C4UBlAS[BBPV@`XMQF+eR(R2KHplqb&TDERic4Zk$`(eFKq!9jl)Pl$!T
bTP('N!$-,2q,T+#!XQA1m!CDcQ,61ZMh*+0pG4eaS(r$DML)AA$[U01T@k0YIp$
(k1El38F@'&%ml$p,$1@9pNel-Af0YU8@&dT1AV201eSF5B8G$aQNPdFlBV`MSIh
%[5bq35PiPca8a,UM0BciIDjV-jV$B(R!m*%)ZXpblKkf-lTl6l[ZXU(4BjVjGHc
6eS0-XNc+B([ZLr9riEi1@YN-X&)b0YK-qIJT1-VY6p5,TaC`rFR(3XEN#6HAjIK
j[9+J0h&4eHmGpp0d`(6e2k3(@N&lrXGKUllc(Z(P"h8C(aAXNC!!DlD+@plmA(q
B5!rFI8LZH`PGc4CNFMZJKG%ZD,iU2*FSq)"BP,UM+*Dp$dc)+EN@@X'+YX5!+U!
@'B2&VmrcYX!XICQ0(e%Uh"PS5%X$%YZBQ6r@M0LUa@ri1qajA#FT`E!GjekpF,f
!XXa#P"Zj(KBX49BI'h'm"-Vmcl$)c'YR&i*X*6CAQR@UH'%#Sff-J"9JQq8ZRM0
8`!*klj5pf%(fS8U4B,VU#(L3!0jEY6kXihP!QEq4&h)!`p'!F,ead4j4(,0kSC2
Y9h(2r)D@Zqc8qm%S"`dTU-fE2eV4BafI0KqRS(PN&81k+#9(M5'6+r)'R9e1jTA
Hd1$f&kUbGT@kJA`qCe%V-m9&q@eAV*m5JMj-[pQHH+[6YkkK[9qrlI`IXdl$,Nk
q5qj(iLbmF(Z!TG3%H*+R&[KBE+U@U,d`B5GqJ"DSXq*VlQr(6D&%EPTZqCPU@l+
EQGAT#RUbKPf*2YiENFMQ&q8ldeC+Rq3M"T(3X**1%%+'496M0iB%AB%T8+T)j4f
RNFV&(rYZ,0%6lXU`j0iZUJ*HKrbMp+(4`rN(X0+kKHHeIA%6#3K8X9EFl!E+eYD
!r$rK'ai2dhNX&#beX6l`EFpjek!Kf6G$(MQl"Fi$I81)P-hM4'j)mI9d*YN'U,f
(Sc+l)IJPpL,0Q6d@0ZBjSlHfYlE(3rKqPFc0Y5jJq-pRfYRR+0kf[XH468FQ#0`
$,k-VlQ)+[hf1PpHA2f%9X8%5(JiDQKRb8PmHH!K4q,12c0G)F[qAY,#1%N)PepJ
(K6G[c4ZKL)Y![0$U`Y@["LRKl#NZTZfhjdkD#Uf3!+E-S(-N5@iP6Mre!r@-hR[
CIDkCI2e0ZYlB"RMM2$rLcScaQBF@Z+SA8AUcJ+A&(B'DpIV)"IVmEm1NfNM!4`#
65V+aIeULa`FTMIDm"')hpTl!I083%ice32I)60lCmXGFEaRGFRqZ#U@`q1p@rXS
IKIQd!l6e6hLEjS#9bmRdcMG4JYKSFFc@FZl9U[ZhUR(2`0LV2hmSS(hf@JZa`cT
#8V*134EQK-6dp9hAFXeCeS'0Z@X0lUL5&-j"VSY'm5bN+QjbFrT6HraN-UHX"T'
HZ"`UhbQ9*LDDD[a)"TGReHSbrNLI0q[$%5#[#)d$PiB(3)@UDC+59*&8mX*VPm*
B3,S8k5J,c!)jri15*PMr594cKl`EG)Hh94[)rcLe3UE4k0Fa3S")d2p+-Hkpeb"
QPFG8+)FprF*82!J"erq$p(2*)96242V#B3&i-YP8Y,`QahVNmPSGBle49*E#-X-
P%NE2*Gl5["m[*NG`DTZQI#A,$F+lMi8iZi+6rH,4@!IE,YZ$RJ659TDd6NT[`[,
RYl3+KGNir%$FY!J*A*I(5HBKcU!'*3*aIac!-Mm@bY5j0Kcp4F6%DmG`''XhPr6
%j2+ZDk%E5[lC`"AmP8a*PhZ0`ZKeM2dkq2r"CpN,1++,ZIeBVR!B,Y8N9(RR"3'
kI`,SI"G*"+mhj2)H&@6mh%hTbBS4FX%dXbTpVBIUQILPe4UF&prbkl@Ic#cfJfq
,QX+`&1Bl(0p8`[-F`rpJ30C4`&mFI3SBCkZS-r&BKX$DX2DrBe1fA%S"6hU6Z69
I(B0[CFc34Dk$HPLALPM[fK-NGZfhrLV1c4"kGeCU&"[F!*-L'UabGHA+1QXNIrc
rSaj*c-*BQ6kKB)9-l""Bq-5a`Si3S9L#@R8F"Mfa('Pp)S-BSpS%m-PXa8ZC1UJ
9"9JRj)Y81YQa1!RMC4YV-Xa&U!(bR1L$lJN6rc-S!4*G!V#XliTKGibS5ihm6SX
1(PdK1dN+IHjTNj(MPLrQUIEB$+eCQG9Sc%&4#Vpb-h%FXf3KaESdIpV"*b"E6XV
SEAbqM%dEfU089TC@h(9a%IC&5H3&GTGK+b+N)'6r)-lJU`eDcE9aK'XFR@b84H6
(U)jG5I4AckTpPLP[0,#HNX)e%C,N*N`&TMR-31Gk0X1X"N9QV9JZ*q9H&RFHmX-
Fke"JQN(P9(q+k@"Dlaqm-41!bQ"Q40rAGhDMic5UhfYeM2C5a*FE[QTb8)9mQ6S
AJ0SZ6RYk"1@ZKCfamM5rd**BeX,pF"Q6LecBHaRN$5()MSRI"&@9ASY'h+hQSTT
i@#`@ZHpHiCp'KNb#)9KL)H9V$Gd6305Hc6YVM&kXr6J4mT!!Gf(C-RalfYPQTq`
3((Gkd-M&-GMG-SDl+*p8F*pZUK#+,jr,U5+TZA+BB"VhiQJhkEd+6T(RcKF,0rr
U4eYrRK5pe+hd(-0jpF+&1MY[C(d)E)YkB$INhUj)6KLeZMM$M@dX1U%LV`kr0d#
GE%Dq`dfcqq498eENm0-@ljiFI&Rel`GeBhU@aGjCb--KQ-1h9l2$fi`841-f9AU
DRl#XY'iQi*@Dj0a8,Dj930$GVX,NM"FGaBJ92N$#T-G!q2"+r'YEcGrZ"G23pT2
pK2NRTZCpL&QM2l4kZGNr5CPB+)jpJjr`C&6bNZBmicGHR&EF2VAGlm+NR,&I&(e
1q)2#Ha[eeCGHM)eE3&+l8[bQ+%3lAk2@1L0dIDVdjRdFeCeer5*[hX*J@HIRKD!
'E,kb42A3G%hdhPGV91c9HdAd0%"0$2,rMZiUYN0K4[QFU,iXPqd532NRPT8irr*
pSk!KkRaeRp-AI8qYA&@`PN8QD[Hh0DlKq-8TM*Y-h&Ah[9eVI)US3-1I9kppLe5
IcJHrSG6A+krG1,,@F86"3B"pKT3Kc8(lHC*9SJX$F@(fJT5AP*'Id$UX8AFlMSE
Jek6#&$CR32I#ijR-9fZ9DHae4L+ZKdHEfmZ%%p&MK+Dbf0Rm@2a"SQeD9qKfHbD
D%VP9`6VMl@F4F*C"Q*((cDGBaihLZMLc$k$)j)p'!il20pV)0Z*!D)ekqpdpAkA
E`UlRTVM&-+JE)R`hi"03!5C%qaT,D)Sf6Em9U4Fdrb"H126Er8#+)6h*pmL(09M
qiDd"B-Z&mNcDFe%[S)kP*1)[YZUQF*E)D9Ipf3RZ5EIUqI3NF`9i#hKm94`aS8f
ihFXj01k"i#i&1#4eJh8LS3iCPe*cZEG5L-"MK+18cfY,9FK(-PSNJqPHF(UmLd"
8G++3!*AY*1ih4e@G*(2rfAAM,N),TpBlmpNBrDI#UNZ90GVTj(D0HP33hGL+J)C
prEi'!hXK[-S-ch'Zl[qkbILY4Padd@HUCDHQ[Q'4KhY!bAk5HpTpbpk,PJFHDTe
eVN,3qmLGpR"'f#fp8Km8&)eY6Uh$MHVE&-+Z0p`hlGIr9$4k,"+X-JeM$&H@#"4
@(ChU9fSIc*aBmX%8Jp6eJ&r$1Kr%GE3k5c!"0r'$Z,*5idKB-Lfd8Vhc(CNE#2X
*&'f*j&bb,DRhharN)%cT-cLKNrQLbBl[C+!)RG6VUb8mUkS3#""U)"E)pY&T*c4
V+#H2rhJekG)`3ZLrT#le8CKffp)fH0RDF(1G3%)Tf+qhJbM5+Yd0b,(N+r,3`RA
)a33EH948cIr*#h,m6)C(-#3I2I'ibp)DflKeRR8ZD42lDm(5--Kp4[h5b+qKI&%
r'UAdhf5Sip(($KXl2c3H)I(%K9Pk-3ZllCC%Z'BcARADBFmJ*#"D3RiFZ['PLCX
bbCK*I5!B1[rNE)ppMLmJp0-H$Mq"G4F48YciJ'6SH,G+P[K`@q2Zqkr4a&Abc%S
Sh05qGQEjZ5(Xrrm6'8,[+T@ie!q[,q&-P"RJj0mQp1$f55F(hbhF"(`J,0Er`UI
@35mNjr3rk%i![T+dZp"k[dhjr1U%jEmkP8ha#K&jN5%5`@kiM9(m0fh*f18Nl[f
J8l$(1$!6#'P#@)#YmECQ1k9P4(e14*Dp*[f1k+U$2`'1mJYVbjr8cpbD%$$&Laf
r[AANM(f5VRR#0$3QH93YGB3LPik06h@)61rl*0eNXB))ak"4*Q)8ZY5qN!!e%3)
+1$U3!2$b[C&8X%,-(,4h[E5k09MKT9id)LrPBd86PqTHZF4#G`G#Z&&I`#[BIDT
q5q46Q[&!PL&,D+ek3,RE3,Y8KYUHZ#)6lBpQNGVIdrbJI6K0*6qTB5(UI6QVQ1S
8%%m@fD$rZ!AZ@2l"bXrab6-K12c*fI48a(bcb2$5ar%'fBK-D8Ge"f(6S`BY4(A
Gh*5-jZfrURDplNa)q!lJ84CTjN9#[IHlL'&G-2+'N!#`)8Z1JMQYb&q4PEb96Np
[YhfTdNlj0T!!199m'a,)5SmK)EJNa48'G,FAmJ1Pd,aQ9CA+SUV(hcL)I3E28$G
@GKP9cEhVU98&qCNhTh")1G!Qd[#qSX)f99+K'($FG10p1#l5S#0e#h4ph"MfS$J
'&4Mf(UfckRh&TF,AJEIEDUh4)2Z@1V##NDD&#HSc83'D5M)RrdbEH2J6"$0Yl43
[36#$Q42BJbCbYDAcT8l*Yj2"Rh"BbCQeXX"*,eX$9jC'lN6k5!RJbef$ZTQ+lK+
$J*YJE5XC,EdN%A#&2`&"#dNDbrp(fJfSj2"c2C!!Z)"B3rDkGf4+rZe55MeZbh,
CLAq0&3QS-V%eAR#2125N`4c8dcUP(89HE8[k9iljUH41c`RJ4J6H%119)kG@3`P
"!UFBJqGDY'qLJk@[DeXN4@$PPC[bIChIdLLIq@&$["D$#AGJS&L"%H*2)f#6kU6
i(+AVDfY0p)$3$Ja!i"2"&MTb1*lNZB*3IF')p(-CHkKAC$CVP9KB)aLALhIirC%
#MYRQ&%L`3FURH`'kjR24PHS*`4Z5P66mK3b*`Gp+ZpP5KIi[EXTMkA"BliXPScm
i`6E20Hk094VpfR8)X[8S#HA`E+34L2'SY&hIe-lPP"8r8[&Sr3jAUEmKVhjp)Jm
T'Y'`4`IDT+TQrBYHFS9l"[$F2-LQfFR$PL+d0-HNR5LJN!$lbPQT8RGGPBL9-)f
@iGJZD"elF)J%)TljBXB$r'MGijPba06RMr(pPpX!#Q2MLlVU')28IcJGr1)j)G@
#Y-EN-fh`9$Q0J94l9P4`Z"9M,r#[!"Er'HY[a`&pR$jl%VfkJ8UZm-XPk5''rl+
mI8cG9r`(rSCrdMHSI5$@F*U$FeX56!FK4Ma%DTGU!0LJMN2,PV"#e0HK@V)Sc1H
mIIj3N!$9dl'856AmiFl[q8-Z1,fahSrPNAfCb#YC8l&)r(8T@mf!Drda1$UMUm8
YDZMD%@UX-KKc'pk8L4MHd9U1EV,Dr$QK!GSY0V#EpCY4!bV`AGCdCL4#G@J&QG%
IRQ(K*B2Ri6F*emr+E$jc0+dkb,DGTp+qX#JM%*RJ*a@5#15M!fUC,cH0TkAU)$9
!HEj(3c8%ihi`HQih8JP%!dDcQe'XJbrP%Md458irc'-Uk$9$`,iHPi$b8#q0'jb
a'ie(*E!JB9BI@*m62DR69(9h*J*j!LT0`XL[0qi"LP`aa0I3$,Z'*lB3UM53!*!
!Tj3TE9IUZCrN6bkpp!Q98a81T#Ajp@KN4dA6G@)1&10#-58(`efH6`[J#ABBU%d
M%p[Lm(bp)Q4Ab,-KmHee,m9kIFT)iECSTIfH58jGbl5Rc8XPe%&"pLBIdKrkIQ(
FGJ-J8PIS3['UZ!3SL`"%+r`K@8EUScG'TQQb@U(faj6MIrD3!#MIpmE6XXrFlGX
6#T,YeN4""4T$hFRD+@'crT5,XZ9+1jE(XfP"A+!1C9Zd8hk68NBa*5KG+69`[56
A69cIdQLX6EJe8X-jfUEI@S'i-c2m1AIJ%-8i-F[0(E6V,%4kQF$f$3U%kJhL0`2
Q8I8k-0aD&bC3r4T&#3i(3@+VbbP@2,j(ac80)-Bk@T!!C,QK0bmT-8bE0"(rND`
8HlmahHbR-h)h!S@M'`L)LXBGAkdRK3Z9P3URmNA[Ri1$NG&Qh4Y#`X)9LkRN8JE
QeLVRSYIc1"FKG+K+,1BQ94+N5BIS'Iq,8d@2Y1rSYM4!f%ciCKIR$URG5cCVDr'
XiF-#S@NJP[(IeU+QY5"kpPkjD$4cF!CY$BRBUefK@05+CCPaQi`I)-E6q+9mR1p
)dU0fM9"%eBF55d[6*"bjY-!Dj-e2`r58I&ql@i-2lUUIURCaB&Djad6JTdB'5Hr
4KT43r3eTB@RV1%eKbUE9EAMV#md&qj[kK!BiXa*A4%c2pr&-pI6MY1TLN5bV[$i
6)GprrGSdj)lH)'fd5#(T5&%cRT)2Rr0KFQ8aMeGC'NL1,(I9X3E)Eq#JjML(bcD
ZHPaQQ3%Y*,*PrpXi8FpB)*P+hVkR&qdSA16hA9HKAAc)p(@GeJBi58J*2Fc#q2-
KNfa+GDBM"4he`B*J9"!SS&$Kp*(heRk6bJ@A[a+["I3Hdre3YIP+i@88"P$5rR%
ZGA')G5P$@KAXJ[r#8CbR05kT)Zm0jb@!rXD"')*`)rP2ebRhbkF[0J*!k0r@B$h
UAE0EJ@JC3YljVkD#ZJJi1H30kLLEbhbE$RB3GM*@k(kl"`El&l(C8JbRljM(6,*
"qQdK!&MHK@XN'!#b&"(2iBL#1940Gl2Z@F$+CJ2rK[%KHThCr5)V'aHRAlQJXNk
bBHZlfK#d0)P#E3JbRm`[Mf[j!3R([TFHeFTH*4BNAG@R(I8CZCVQidQXPAhIbZ8
(B(R,Ib&2Z$1VGRpPF45hV+h4aNHcNZF9+dk"C%F"JcGk60(hAh(i@V,2YDKQNBb
1Z*0q*#)[GdqReZaBrqZiJjPEF@K(&GYRPNCd@hAm1$8Z-J#&HE-1+5PMKL$4QB3
VNR8E9L6HSQCEk%ZUhREI(pki6Td"RFFaI@lj++$,"AbX)L'4#mT8h&Fchl!V)eP
p,BCq+)m++1UIU1Rj-p,iQAMI#q8,hjG4ml1$4RB9l%UZqc,L8TqjUFqC(Z44e6R
-9j-D@&13!#PF*"NiRL*X$I'9DpZ1FH'&-NAUMc8LU0RK$TN-`fZFmCA*('[2Y'8
H#c@eSijY@CZf2*!!(**%mJBI#XlRI&YpKi!"EdRZGE5U(Brr8R*eGV5aiXcLLT5
ED"%*"Kich[r[m8KYMLXjXPJZV3N"e+9"1daE'RrZX1STXU(q&h`BRlD60fC4%NB
3`B(Ir'0`C(G1UBLIpQdMcKA+2HT1U81B"S)Mh8dDNb4JcG#GP!*C3(L5ME`DP4Q
(P1*fRDPk1%#'P-H9b8H5CEAAK4mC5#KCEK5Ppc4QAN@-BA9+C3Ic"1PV0H[ACNN
jE`C0rKMJ,JUpa$2C1f-0qJ&'DQ("PT2FpVAJ$28AIR"1X"#@,+`K*@"fh0mM-ph
E1IKPZDDk9cHZl@kPT9-3GmL+B'B,J-LifPr!fd`8rb$2@LM3ZRqVB62"4)RVdkT
+T5c6T`Cp*L5G#`p'TfckVlM[H6m"9prECd&'$'*`2Zm1deaZR$9'PkZbPiG1F+Z
l@XUebjSbNJ&HERJrS0l06PaM-Le0Z3mT-@LSMTEI0P(e6Xm`Zja()8+a,@6$2ES
mSdqIqZK9CZAPVEdVPYYDED-"Cq1&*CRIIG[(h4QaQ2hUbbP[C#ea[)UE98DDiha
6h4'MSdISPHPJQ),+5%j)PMK%lF"cC3L!,L-`cLIam&c+Np'a)-A)))iE6N)KVqP
SQA&PVmqVZ3#%IU8Ec`kUM*ikG")0RN5ICKr"4'lHXPEIEGJ+,m*h0-9(G*0HRDe
6+"0$qek9L0[4eqi@mUHS)bE5Cd&p8kUd$9jehHlSr"%aa(TJEPZf[8mq#3GYV"B
qKGPd[kJE5C4XD@$i!9"(ITm(E%Sh$JIr1Tqa9(JS[Y-Ccm5LSIJ`j+&Z%ZEIX(m
2RMGl15BdAVMfAqVH0E@DG0$XP(R'A5jXh'Dhaq*m`KqfJP!AjDeGfZ1RN!$ql6G
[J&a8GJUX"3#CSe244$bPrX(Z$LY$##hm5a-KSpar$XpKp`V!*e0YEY(Z@%SLM6)
4hB)lAba,Q@L$Xd@820FYC2J3hGBDYM,YmLEiV"TSCYi09p4NrUM5G*0k,2SG'aY
cJ83pR%E"D+8reB%hIG'B2EIAJ-11P2GAmm`j#)cULh-$Zr`LQlH6XjDjjdE[fl(
+*jhNhY8,*iL6%clie2M[`F[q,1''VSF0ALEr3T@e&+rMj[lkQX!1bkV+RB4d-k6
43VL'XqFi((`reHF-I)SM$50Rib5Zjd['C$GbPGj5X#A[R$VYcU8U``mm1EXAl3Y
p6IkZePIjT@m'c(UXBEFj4HlX+P[$9XJ"aSCY'64Rhld51B9,Rm"UPqiAidHNDN4
KYQINpal#Y@!V0qYZ$'P'K0p$N!!Mfr8Ce$G)EhjYSf-Kq!CJ)*r*9%&T@*!!2`8
LVkA9*'UhH3U9lENjC1!`kD'jfB,d(j*P$1VIlDl(US`3`c-AmL"@PL+j)B8N#Q1
h"hqlYNT@VT%9Y"eHB[JJ`2jr9f'r*f[ANLR28FPbAS8@D[,m,fJM1M$UiV[$hC+
CQ6HmTcE`a9kp4TfYY-)mD)Y`hVSB[D5HX9Bj--Lj`E$NET4AbVC-TJYi*P`G(C9
JMM)#'Am6(U8QfM-L'-,DTJk*EDE!Aj9`2D"A!aLLpbT&p8P)U4e8!YkehKkUhER
KS[5LD4+YjfQ,05%LH(rLimBQcJ@X,i911-L9M"UPXAHp6%YKG*-GEmK[!"@@6cN
+ea%CEPYAbD5r,JA`VEYh(3Ge0M'GAX%5J4X8#XkrrKX6rZA%K!!2K4b9Q-ZaH+2
#pCphmYQqjG8H,RRQYidXE,Ed3HNk1*M5N!!JhGPhkkpL)KJ3Q'2EF48[+IR`33+
ddZa1Xk9mhQ-&T09&&eS2Vjqj5Z8L!-$5C$'EP+(YeDAfCP9Y#icic,i9E[mCLMJ
9fDjHpjQR"-dU0L*T*r%q,F*)apadKcK"IC1!J#cUEaIdV*%p5J[@#CAYD)$%U9G
jE[51pVmMhM*aqfmGqj0[C08Mda#'Mp%e3-kHM!@q9MNk!"Erl)jL3ZGM3l[iMdH
HGEchhXm`$&X3rFN&El8#Mlfqfmk42PQl3CI%p*)2Zi(lM5$@#h`km[$2cj)BeB$
1db&ej8q+GQE,#p4VBkKSRmFLrJMDGVrNI-TfN9B0KkSDpATH6XkUeR[,a21mC*8
BF+`mDJp6JXl@%MV3+&rTjFpC(`$p9aPfG+"Pp,8h'LL06'dXa#jRPlADc$"j8)-
IZaB!)8!r@A-5MMIqYd3N)CdEaleU!pfr(&bMA"3b$bJj`Ipm(m#pji1Mc-eF8Yj
HX`mbkiGa-$ZY&I"NFP5ffU*N'DcdppYQA`fhS0bY)%0SdUT4BG"j5)PbVr*RSIS
M,'$AGG2Q6!d*YNDApBBh%(NVXlHFjITELq@lU*'9a`X'`6mAPhN20C6NDQ1JG0R
PpS@A@KRI9C(ZM!Z`C2C'h`[lY&k3!2Fk,FkmZqNNRY[F#NUF,YjL!QkTZBN,dbe
')XLiqhfV"3P0Ka#q8b4VMC`!2383-V#&*kplPq[!Dilh56pMYEEKc$Ac)*f*eaY
QAike@H2lGT`5P,I[dfq1#JBIF0Ej&cMT&KHaXMp['YqF!Yarpr1)`$8ER[18m#S
0maT""4F+KbGC*R3Mr-1$N`QTTeLb%jiAX8hpcXAJ9r1YBA8l#BqeHq)G4BCQX`6
(q[MBG`rBI-bir4l#`X%B"IpRc0hlpKc&Kep(lA@QRF''Jcrb#pZCJPJG"dF#%PH
h!E+,B*T8)$FfE5BPb[0"GhH"02XQMICm5XJh%!T*bN-0hDIcDmMjI(4F,VXEX(Q
f)ID955Fep@$EMEYkJRCmFSq!B+bCGG0a"U`kq&iL'+Tq8BhVe+'b1XXhLhj"kq6
Rbr"FI[RkZMKGMNR39Tl5C&QiK0j(b6LE3!P*ZBi*!%8QS1r8i,UeJ+TmUY)N*m"
N`,3,#9C[V*@VSf%M99CcilH3!#bSA9%S!jqce&80UDSYQl,8dq)T+LU$8fai4I%
a[QiE4(B8aJ+!43LmKmC3Fp+6"!3PPJT3r49FZbq)ETQ&QR(KRfh$KY5UZk8Q'h-
&q`0[q#4'EBk[r0EFjqRkAdQ+eVrjiK9+)KcN3HDI&Xr8jQaf+rb6[NJTL,B,h`&
pH`jf30T8N!$5Rkr4p2-l)E+J+#&r)B2I&')2)q%fK*pMGP-%`k&k*lBkNL#*mqP
8h@[!a!Ejkh#!9Up39f0N6a16XIra3'`NXPPFD1DMN!#2!0c*A0eULFhHLjkZ&XP
GT3+9"0!3--ZT'`(-IpIBfAAd2XIFdMMZ6R9e'm@51[VS@DTher(Q!ZMRJjKPh&p
ZcQhc,p)Np@eh&''C,!"Cj2,MRbN[-QiYN!$Y`H![q6JL@8q[00e44@DGG6MYQa8
$KJQ(befGMYEfU+S`HE#AT+N1a%GbhfdDQ$flJU0SR8FB`RERK(FcqXjRD5%'%lm
0Dp'f(Q)4lpT!h56jRNXr(k[PpY+Umh`UJ`ZeYDM@5L6*'TbZPY5E#+T*!`BXc9F
1kV*m*SS&ep)FCYBaK[[!8VDpHefIGbDki9m(ZM&G["PbTG(cM"#JNHK@8K!IFJZ
'q(kd2"R#*aR63p,ZhZRa$L-Sh`0YI5l9*@!YCK*J2*-RHD8ZD&arY9hXpf5Imdd
I[rf#dUGJ"klNbTTdh%Y`Ql'2@Qe'ZRq+ETFR@IeJ-bJU6BEr*am%TLfm(3(0h,c
ViURc6&F8mj3@T0&ZHRq+kD,'TrrLVAX#XFV2c@Qcp!DAjiKh$$r$!`#($FqKSil
!SRmHl#QVj9@XcDA,Z21QqY%,0eX(&jH*Ke6b*(2I*@--+YN,Tm,('-LambKV2Pb
pSAB@QE$J1,9Ym3FTjlZr[T!!`UVk`1[JSDH*%dG!q%LeqK!l&"l'G6V#qL"%KX)
Vj"lh!9A+P$U!T!Ri+d2UjHh-HU%ekXhpiL+I&%HDiS-%+C3kJ#(i'')q6h'+JVf
mdYlP+6UpRC[ZdIjR,B3ri&FVr8N$R"dLqhQQBeTJ8P&C0aHY5pk0&E24p,956NN
EBmq*j3P3XJPCM0-(K9EIL$G%H[Z5Ykkr1`iMdXq4U$1rQN+G`a'M*6,Ia+`81EZ
Ef,p4&N(&GIUMDUK5ejNhr&d*&&2!2dm(39!P(4++MYRIJ*jP#YXf'4e'bSM4cj)
[QdB5'i%pN!!qRbCddGJ3XUeGC(lLZ!@Z*QkY%EkKrVY5-%6MbASAlVK%KBBHSbT
j8F'CEaACGI6CU`,Lp(&HJDJ8pPd4cea5hX[e5'Xm[T(F5'ckIT8MdDV+BTE)q[K
aGPh11AGR(j!!Q8ckMI-ZY"%TG-EPqL+G9N8cj,JpRZ1AM((@X[EBC,rXEX#`(6k
,QD8d,@C&FRLY4TE$HjCGLlP*Z35q`4`+r'@G#If`K&fjF`TZMr!8*9%iHKipafJ
hcJZQ##0QZJHC%Y,VM1#,R#5YqJji"$-KA8#%8aM!@d)KZIp&6,2kh%pjfKED[If
-0@2Zp1VUa*p0Cm5Ne+l`K1@RV%-8&!5rDAlAqdGAeT&Kb(rklL!*SkNcCcG#Kj!
!b#fKGD8FmkjkF!frLYdi+iZD5*TSGleH[RcV'8Vd`8rHh)V,h&-q#$NH$U#hmY&
$!b,eA,mC*C2D"k[B'b[je)0,GV")9T4hpm@T6$Pa5"EB2PMeF9BXjMK(6A$HQ2-
RH)!jcq[H[1*[J[fLd"klhQ`+D'k4bL+1Fm*0FI"F2UF4fb%S"3SL[9+dBLhG6,j
hl)8XEm[BBM9`0AJ5&idX,la9SZ(Z`6TYfYp+5i'V(ALp8Gl`&d5Rl-XIK"'mNK,
XZbb2,r[8Sf(-m2j(*H4NRba5AFC($rSXer4*&-J2C035&MNJfhXYI9L1"93[F'-
4kI64a"KYrD9&!N%k*lZTeaM[9PYe&9&V9l`CE2B%UplhlNq`cGedJi5(&qqQQk6
5l'rXa09DRm@!Jk"j2MSNa186X2kN4KPVZ'!ECeI)%Tj)BqfAb-+Dk)Q3!-9`Rj9
MX5V")fCrRiT+Gm0C5XXC+pR%&q&LZ3#dAPRl"b1Ubj`iNi`PR$D*8BNFcZ2hIR,
1#$[[1ecrf%jkK#ChIjh&9#rdP@(BXqQNqICMDG50%(ej!r84YP(KKmVV%INl@JK
PYlE-+,H&5lEZVTSHAT([$!(iY615#CQ@NI88KprdrdKeaa)mZXH&-LXAh-#0[ac
U5*E8bAF8FcPXUrGGPm5(,KA"Uc`M%53Ypb#L'aT!KB8d"+0(aEV!Ip&V[fCXAZr
9bC1V!bY'9A'qH`BZNA-TVJlKrZdMIYIf5R6H2,V48NqdEP%GbU(H6&HeM'AhEU+
k+Qr10AbQh,'8PTTlpeI3dBd"a!3iIq(pIBL)jM9mN8pe08AZ0j5'41JVc5TKSKH
'E*YbLhU2V,JANrQZ6h%HN!!3%p#h2U63lDrYr4A4QQ'@mf*3`0T,%Bk0YMjkSNV
[@@d4r9rpI`,KZa*&Ncq"R9Pp(`#@'D`dfNVMj)d1h,kh+L[(k)"Heq-e,%GBD&X
TMTi!8B%KDLSTSMadTC5E'[QJ4pZ@40Bp!E-)ENLN1*0'qN)RiE')QE&3H38-T*5
$p'9eNe[6[Jl9dT5!HN`kmm1jS6jrC8mK-pe#S`5YC8384QIYR1(&T$,p"HS9jPK
STZhJh9YD6mj,c%+UJY9f('HpFGH*5aqiFINaNrrI10e))S`aEME8`23GMfPIdHF
I&U@1EE*+YFFV2Jl$lYb14C(,U"$f$YR*`)PZ'*F5Md5a"mk"q-%8b!fQjC!!rHr
Z44hVDA04151PD8$FSQdUlq$0VS4$)Pq!h+mre,d!cr-Kcke0['Y0KEQcaeD9r@L
LZkKT0TiKi'[1DfMkp+"3[JV&Qefe$YNMaPG,'D&2,mQ%cB3,VJ%(NRIZLK0kP9H
EN!")#lV!MZ$XpqZAp0#UFMQE)q1deCIKQdEP$HM`J1,XbVp&-*Q+*82aM)*iJk-
aR`qJ&m)*N!#+iXlG1!pKpMm0r`!5Fa5BE4BX*3CmKf[f24+C)f%BCfA-`(-lNNZ
#dKS$qFJ##UIYZ`22+kIr#+TJT"Hm*)VC&Jhd&Hm2JNherNZKFKE1EX`6+Nd4dd'
'ZkqIZRm&8R6JKQYpFF)A0keqFr4VPV9U,X%4Eb3*eaNJ8bJcaY+A[Y&3Aiq+*Ti
+d)P"'$PSCaQhV`0hD`d8!e6ITHe!B-i$pPI4,UjL'0PS"1'Z2!Epmafc"Hi3f9P
@dF&R!3VijqB+4a1,(IfaKC@hiYcqLG8)hGaMN!"P$PH'k[mJ9!ea5c1V$H"@JEQ
"%L(l@De*AiJcqrm'lkUS"#JB9GaD"@m`+YjThV#"BA'!DlPAFGQC+2!qR6Z60)E
jEGkZIB[q$HHR"%V4ZG3RD`K#3Zkfm#rXZCFd%!$m2hT6hh[XXY-YbD2A-bph,S6
BXHqe3AAmL@$Y("Na#@cjL%*'%Dmi6Cjb2M%,%*[U#DrH#"mlVZ`@"Da5%ZDe$88
5k`CUfXU4"ZTeH"@%Q6Pl'fq4-Dr`!cHFrS,SbJ&`Pe'e#hQ`8eP&TGD@TDX[+*8
8eZrF1hpr*k0eFTYiljacf&mEN!"H!9bY9GH0hYeD-kdfiKr21##--LFXFG1Jd0R
3ib+K4hea8'j(ABY"@blH&A$e@m9X@9S5Z-G"Mha3hb5m&-Qb)LV5lM1SKCdRJ44
Zf8chlSScq!L*8FlRQ89k,YrDf(18V+!B)M*F[UR*K`6@P*3Ff+)@2F"0%b3YjAY
L+QR(5P+H%M$FMH+'N!!V[ZTAr(`+$8lc9(%M@Ck!"Q&Kl(++N!$Rf!Bh9DBEE`"
d)--9&hdS4$fF%*Y+JaEL,0D@8%r56MjDP%kV-'18A0[)`j1CEXLYb6Y[lLaeDVl
m,FeN!-!ehG4R,ld%kbfqPTMr(j1dd(rIVC,pij94['K[%hHXmFJi)@I%`rR5&d8
ak5UhjGjYN!#04r11,G)a)3K$!m-lZqLM1TaYD*kc4C19`!!QH,aL2!!-j-0FDB$
ZiM[@8l,qClc#11rpDPrUS!hX%eSp!LA5!@lk!EkaYe(e@J%-BGI%Y#qG"F[%eF`
iX&6`Gc9DXJQRq4!9b$'i%DA9"Gr9jj506"EUB8%2aI00V$JY,D4A&+e"F2bi2,0
kQKf+`F99X"3aGJJC"Z'Zfl@2'[`Z3*4@qaHY(Se&&iCYTQEZ$U(5`r`e)HN!Fl1
$UfXlfpJjF`0cKdNb%mU$Kc'K6*5'ICQMp4CB)N!ja[RlPj@U*ml!,PF3AYbYqZZ
Bq*8U4QiNM,frBYGkqp0EqHDbN8)R)4IijpEfNHHd@ep!9@%0LfS0e#5XXdh@4e,
LF[Qa*e@,lpIZe*X6LpSATEKGa0"[((-33(iG(p%h$a%@d"H9mk!BfUhc4qBUK9U
Vc$H,j@%N4X83jS##Em-Uk%"d-ScC)F4*H8"l5N6RAN3qq%r1KTc*2M%q,IGfAp$
k`YVaAT!!lEi8c4$1l[N&GAmMDY4cGfb+!QFjKJ!kP'#`iQL&5De*SF-(Bp5Nfq@
[2jjBjVa[`3!V0q60p@2a$@MYV8dhGB4[P(JGY*Ne3[&ThA*82bXiJ2jH`8QcHY"
1eEjVCjY"RUYVV&'I#'feB'0EESMEqUAV*#YZQqj5q,X!d2`,!5Q%Rem8k*KH*JA
*+ZPlVGdrmp-lD0MlG3j5aAiSm!#U833qc9!15#R`[`e68*b["C+Vf(V`,h9Jk#F
MP)KDfETl$F%Z08m&q[p`X1b%NPNl,5[SY9*YYl5a*rp3[`l"YFm[8PFl*r`cLP2
D5PpqErkc!1eY`qKC-+-@Q8+D2!A!4XrfAK+")k-h,i&,UGcVUAZKT@@!BHc)PhH
!2l&Cqrcl-%GCQfVCCDkU+Z!Y)bGM6,mj,5rS1f46faP#GMYdHkJkJ`DZGC!!GE!
05j&,R%Z8LfkRX2A`XN2QC8VhP9I1'1iA5KLQC[`T#DTX[r#krdD9q"m6pFph5ji
R5U0"1bHmM#d*)c'r)GYfG1r-3Zq!(PF#*HQ9prM[&mH(",dPBd-N&h1GpPDd(cY
LrUYjf+0a5M%Z'%0im`c'd"K69I,Jir`*h1k+C$X2dE@J6fIFMECJYMS9KJe&1JA
i5"ZVa(#JkeR9,F,q8*1aH4PhADl%m1jA,iY-!RShICAdpJaN[)e@2Ei9UA9RP4C
H+LAaL8V,FaN&1R8iKfF3ErEXNIq-4lCQ)F$em`ep4q')+DA[qYkIl4@'D*i*d+h
9l#6HVXEjkm1YIXjN[-@0LqmQr[jif"V3*pCfFAYDRpMBRemX8-I@M31NhmcP`C!
!lDq5Tdj`iql(!l#r-NEhG*!!5k6c[RGeqC,%j641f)+fiICU4i6IUeDBXG+@4#8
EiRIN,klbP5XNISb1M+HK5BFZFFPZ2ABl8fI2IpBQplYfpGK$iZZ(RAk,l%%hRR$
2rh(BdPT*cU!rrqpFQ)fc'Im@"db9bN,#(20$*"(cCQ58&$+C,CZkf*q+(hrD#l8
!c[`BCLVb3`BaL)3Ci`5!ZqNK1ajlI,IBEZZH,aZ)B+$E*L[+@A3jJ["CXY3N4T8
16*@b#Uafe`#BV06i2fK9U&'X9[JI(re$XYY'!0UIc%*'mKb*cY8+BDH'Y,C-(XC
c''Ih"rjf`!9IYQNa'&!)JRVqB-cMGP5d(-+hB*[ld*D[NYa"h*Sr3J#Y4`-ffdA
U'IJN+KR*LDa5"ceEqE$LMXSlVdEPKCpDq+`'0(j&+%LMrR6R'@&mBdBdRThrMMU
A@m)arKYBI"0h3-)bGX46B#&N,`+e$2)4@Q`@ffEF(2URbTH9PmZMkbIAZ*lS&hK
cT#99ibQ)FV2q@N26i-5JhiXYG"V[c&k*fL`IcK-NV-T[C0Q1jH!ZTEZB1I!MGS4
NH-eX"-e6V%$fbRk!V9DJ#YjR'rj"f*+CkMKQ8K%cm#G*%-*emX*4I,[e1jSM6%a
a!"aYeDQ89DXj`pb,(aGA%M`RMq-KA)YbefKS0!ef-fk@&KI+'5806+B*(b!TD$E
+aTVrC4QCIPb*LUAdi#8T(6T!m2HcYCb3!!e0l+*,aHpE$d+#h1ZA+HHSMEdPM@'
PqNYXY9VrGL6eElD[h`4(%qZMpJak"Xj!'&[I5F3Q1Q36NE6$m&-X#1E1N!$)pj5
&iEBTMU!D[Za#Mi)5D!-U#A''5Q6a,@9lhML"-ZEZ8JaGJQa*lPCaQjXdXID"Vk4
c+kebZ`MbNFMX6c*MIm5)*R2!pK&9MA1[6p2EbDmT#S9Sb1#X,3%VJlBEEl392P8
FeqNPaTq*J+(`VTHLU2jh1!d[0HK064Qq6HQ%4"'2F0G`r*C4iCMDYfcH%[2SMX4
03R[L(#FZXUDC5#UKBZ#90Da$6G4)KIAP'Dcd,-a*3U`mBU[P8jR6aYpUUj-fCTB
"Nai+cpH3!%AL"paB`0eQac%i8N"86@MJ6L$"5HRF-hbNTr)XG2)E%8C)GM6hj*m
0lQHXUQi`0XHq5%lT+k@$(F)@(bHk2rQbTLdNFRq4XpmIVG60RF"63qZ6Z0Ta4Ld
(T(L13(DT)6K4h0HkEXcID6E4aGc%rA(j3dZqqFlU#EmUBHkA1pF('J"&(C16BSr
qqhU'9!TU*ejqIC)6+B"e`STcQ-Lj`i0-C'eTNGB"DZA`45PiKK1FrB39!HmVpff
mr@!QTdU513JhL&239"CpJbkPpJ8r&[C`8C+3!%Yah[bkrS"F["!kI$(`XDTE!Ah
35`BEVij5Ycfpi+-BiCINbQJqYYY*(%BGJYAE(9q4TE"`kj[+mfd,G9X@Iq6CQlP
d*@iIliNK6rmbhP[F"J!TM098AhQc*XMU&$&XZK80%6m8!0lHBLciGUZ`qS$@Jc2
1rTP$@'fVTGaUp[V'8$cA@VS%!k%9!4N#!9+U8$,Y8SU8$4C2cGZPNF6JmbIPUCA
Qa,-LQ&ipe5-ViT&A*L'--K*hJP0h!@'20d6f'@1L9S3cZ02+eG*M36-$LahjVpQ
,qQ0L`"DhHHdjH[KldXGE@1i8PcTaXB,9bP['0hKrc9Dd+J!36frf85@BVhmlLbD
E-+$[JAkXdfU#[HRFbi`(XC!!q8lrRU2b!h*N@r4X6KfXV+rI1c5T2E5d$q`CSpZ
qI@[iG$1YBrpbePDh"FSSVe`Fham5![5XFccZlKSVj!")X+e*Nlmpb$[`-"0dbf3
Im)3h`rr`6X6R4L3Z(9"4q#q4-rJi8bm'!@S2$81*YD)-09kVN!#NbY%0cGkCZ*f
U(pkcbf@l$5ML3k&M%H"EUV$@jb#L)(5&TXb2-p3GPP%cql,8Y$VA-UmqVBPee5[
R#YjU[qmXd5%-Dmh20Hhq+6H13"M''PP(,r%%eF"Rem3BGGU3!*++0()b4XZGr*N
BSEdFSGHi3''ENC!!il*+6lVjNd*R-I1mYH$aLmk'M9'AE6rEp[H%6IKkjIPL``l
a$2lqRQSFXiq3!#G1SG&NE8A@4cjac[CjXX6aGAAV2p$lF`[32+,ZF6KbdrMKq5N
E"ZDH-Y#JYXAMjq9'@CUjA#BX+3aTQ)k1`L4BTdc[,-Ef!DR+LNlN4q,PjV'Bic-
mXm64%HUbf)A1AVblYdpRTH[BZHm31GJ$Klrr8H2Z5H0CkE$NJFfNVqF3CJrGb+@
%&Y(`kb'c'@hjGF-rb$3"NmJ3P`"pj5"f0#EAGPMMX98lEPL$mE-IU$f%!,BT&eH
9i)TJ0l'i6d1LjCCAKcaSDB!8biT`,a0dEM9[IG9L+j6q4Q(!Q`erU6p#cB,$JEi
G!-@Q+cU4LG4kQY%`ekNSr[2rNKDL9mb*LmK[&k&B451`1lSZHjiJ,iD[C0`KYcC
@&B8jUiljd6D4dY`'MC)#mbi!&md`iXY)%HP)p)YZQ,-,"q+)kNBY`[F[KNlbb6p
lhJ9G,XJPNhQmFq2iMbA0S9ZhUc$q*,B9#aG5p%+@i2Fp'3L9(Y!qpU0'!$J4h`#
Tm$F[2T[B,)-$lFQ-(NERBU#$jB-rXRp&peK&+jFXFk&$fmSlUblESMr9%8h8$&l
VEjDR#-$+$Y!NMA9X#'Y"e)PS06S&MDa4,"$p(VEH`!mPbfV5k,&$V(5D9R2%daM
PAh,P+YiEZqe6)&'+,--6cl(8*L&CQN0A*#mHiK!%J`!CK[Sd%1+"Cq3A2ba*8Li
$(kCkicXr*rL#cRlIJMfpE-`ZPEHq5m$aU'"b"4rACPfUkaHKpAfrF'Dl@QCV,dM
dhq2TNp$YN!#15Ri`(IRQ@A#)%*VA5HFY%[[Nh19dCihpr4)[EkDJ`X11%&IMrG3
AhQrVa'cZMBHH#fY`cb)p3RT13+im!Z&1`E2-a2rb"Pf%iGh5Ncd!-qKH2D%LX&,
QI!q6lmVe8r34ZcPdMD2Hi`M8bDlK#RRG`l6bjT'%*HX1J1@&9N3(Y9J(G%fEm%e
0LTHZSIp,Y6V'&h0QIZ@b$&98J*5cVM"JraJ'aUhi!Q*&"SV2mp)U1qC[M*TiVGp
2"hA'P6LCBTHhI9Im2ADaAZqZ9c3@E"95cZd`3hh9!)XGHpfN*&HKGa+2'5l,e*2
ISPEH(3"-bX"LFCDZVBm6e@UdV["NmhJD&V15Y%APjG%4`fH,K%I#6UbAG[*9k5B
l($qEp5IS8b6D6+B#+T!!3dU'$SL$h-Z4P[&L41KH@YY`cKKd)`+GU86+hXah$Le
SD%H,U#BGX4a)N!$k&QJ+FNejSZeSdl8eA%2S('6Qr6,fEV5Tcm49Xh,Y3)GjFhM
5!3ZcrE#([DbGdj%eCM%e&k0HJ)&4dP!IqR3'`KQE4(U#B8)q9ej`Bl*N42-YR"A
8Am!fdrrFfXVrCK&F#4RFT,rKETBT829'2"01%G%E+m6,Kj5EhcE,P(DVNBRRdYG
@rF%$-cmXjBhbA#hM3(I+RPR"[e&b*R2c@X58#Q*F2KYh!iPTQRilM&[T5-IM8a4
T"[r,Sf9Yq"h%+c9STl+eVqJc*c32KE[dl'6KV!$Cd&)3aYM56a9T39kZFeQ&cef
5[R&D%,[AIN43cfAE)kD*krNZPdAY2HS*kKK""l$Q-QAK[GQX$I9AXr$qPEKf&ek
HhDkc3e)ki+mpQq8eTq-2Y#J3F0S[&4)'UJF#4hS,Eb1hE3jM0dPD#5Pe9eS83@a
3fS&NB)D19@I38*Xm!pSk"a#(H1dL+c,k(EXYN!!jH1c,Q)J@N!#KRRr%MRT@jPA
YLD!hF#N[`m'29ae2aDed5KddA&P8)SlKrAk'a`RT1H*jh09iPY[F4Idpf"b-D[6
6)m3NbjLi(XYj!j,!)Sb)0UP)LM0H$jSlS2&F1`@m)&#JEffhFLf@)dG5GRDZdZT
%0`TlYBqXIrQHB6jNd))bjbE8@Y[J133B+kZT*)8M-56%*0D5Z,cZ,TA*V#hrVTD
Y8B&XA00[imJC)piC(K)#kHHV*1'[UF`RHa@CXL"QH'VM32AQ4LGfb(PFCQIjGN&
ZU@,c62*6eT*""U,@fV"T2IP8jSA4(4,e`Q5I-RQ0-[Yj$b3'TX2F-*DEf%ldq@5
XqH4N#i08Ic3lpQJd6MC@9-)d#H4D+N-k'$Z,ICr'!BU!0GX$lX-NH)F"U8cZDr)
8#%T$X5[m!jJ@)cAdlSC$6hCQcehqCU$bUUp+@q*%FkrThee5hE$i#l![+$N9GE8
"BTQ8a9b,$eJh,(Gj$kmJGjZXTd@dG"5S8@YpV3ZmcXkY2bcV[3YN6LR"Q,JrNHk
,HR%4-j-9cDY91EqNL#1$Z![+rCF4(Z,mC,RHbCQeQ%a#b"b6eUqidc@rrUrJLc$
!LPPjNJp-1@THe(SRmQER#cHSl248ii"Jr8EV2h#5"UD#mP'4jF!F,KjbjVFBqSS
S-mCl8T!!([-`G4YlQETkM3TeUGGNCTV'M"L-NT1@GU+c9'jS0"T$4BbV9EZ!Ai#
f8qE*#&*9&J&jZGp*,&QRcMe)5I2N!*UIqb(9qk+Nf25K5YUJGUfBAJk,NqUq+)B
pf)jCXKY8ALQP)8D)P68e,TIk!d+Ap+Le35RAS(G9*JN+*pHhXFK*bAH&GDE9,1"
@Zq8SmKN,[i9ijSHG!3%"KmeiJNi!k0G"@C'qeV2DUD*AA*9NMIrI'M6T*cfS($E
"'2cT36BP9f6U#rE4-cT2k"l2jH"$mppbqSR-pHI9-$Y*E6DaV8Mc!KGCh)ZBE5'
k`#aRpmX"%[`44+JTPmfBa`K6JR)j+2"d`K`qY%)YA+9NEpX-41*aM6JCKSRM33Z
ZE6N,8ip2,"$,K3V[I64#2lG&k'bqmI`LQqV4dQQXS`kkaJ1LMd*cKpqP1lfdDl(
%Fl@2p5CZBRHpZ4NIVj)4,20+XD@9F@'K-[CZBBi#Za$56$Tm1@LHRUGh1LlG0E$
ZS9bP`eS+0a!@86a[iXdkJ@9D@'A3`"k)lccLm['f#ScReK"C*A'UBHhPTa-61If
k86Ya%1TBA@["!E98[K!GQMTZ6%F5'k[HTlCQT)RaLQbZc`8H%pXEV%,SFc`mR@L
D!'qNSBLKh&bd3mJ[U6-JIBeZYZpP+[hQ'ELH3)6i(eX!lpG"XrAXlHCF,'+DV"c
$JdfkSk-r1d8a%J(J@K%,MqD%!%1emZK[EqJT1J1*41j!FJaC56BJLX+'hr@Km89
""+rU"P4iM*2AXe+cRf,kB[ZC(*FMiqZ1Xe`%kJQDI&JYX5"l"i3h4%@cYAjK&jh
hELKa6#UU,3Z%i8pT%Y`GV$-360GSYfY0XQC")G@AkUBN9r4+RqX3aTd'6B#ZiY9
f@T[0!,RUfp'-*2GCS&V'IKQZVU6q5CE"K!hq(C6)HX[V'-Cb&J#ER1,&q2Gd#"1
56KQm54j9X8a+N[E+&X0b19Gf00+&["L2DVZj)bUJr$&ZhM&&RmAEF2Vh#iV,!61
mb2R3j2Ih(#$&l@!66mA*a$$FcBcqamKJ,A-,`H+cSLL9SqGh6IN3M6@KN!$4ZNF
4mfE0c[N6m'!9h&D'h#+2j52qZ[H2bF$!HUQ0V#XmM#S4(D%RR0+VE#hlYELejE@
I#D,E58cUC!jjYqKB59ND`6,Z$V4245afEEh*hjiL4m8F$`2fmHdU3-)i(%db"4J
AdrfL(h)Z$EVYLUINTppM$,,I+KVQXdAYlk4rTbCjhj!!$kqQmkpPDdNRDQfUQ@f
SC"AALi-%pMFC,QfXEPPplrP@Tp45ZQ0*SpqVYNSdD&ffcBZ,E6f(#Q2B%hC231B
arZ"FV36&kaP6iD`e6'Z$dNj-B89T#PN,S"TRP[IKi33@8#dKF[5&%jYNJl@)2BI
U"*YhQbVmCjEH+4Q)2,+24lJT5ffV!ZfV[#MF(rT'k-hDTEQ9BKArmpK&hFA*hKr
Ur3V["'GE1L"F"HGDG[0Z%`mBq8J`APr2k`m&0lGf[-(H1rB"BhNC@"e)H&4!j*f
MHK,SHCRP4P!S$Z&Vff8p[pPfVddeec,q+qDiSd@II6J2pUZlH16GCF0h4$)L%$T
pFajHi)UR--K4J&T0V*)JrrVEFFf3!#"bIhL1PB%3(+2@lE+DG9lJ-G*fGLMb@EY
ATXA!iNX**b&`+EX,'PV%dH6JbrhA+3MpSHJS$8KY8!16B3)j4))%2,)eH#m41VA
J$mMCH#+G*`(Q#I-8"dmpcA0m&+h,fa-("a(*HEdF#dFk0[Fd4r[-!e1,1mKZ1MD
rP!2T#"A1$1peS!TeYV(6!0+3!$8Qrf"C*3HeCZ4kaTmb+Y#$bC!!l'*SaAY!4a!
('NpiT(CZl%-+J-,"r%524J9ArIEhR"R%Q3m98$KRH&#lbhTMT-4U8q%,ZP,SX1%
CARFkH-'S1UZSd%3H%@5K2Hb@h1Fl)PpKkpT'6Uri4X!VGIJKH'`5!#4TBIK$)NR
QrpZCAaN@AmfLr33(6%X%Y9NH"c*@Fcp*!`r0X9AGh!HLe"[1"!IGa0PmL+Y``0[
m5rJq)RE)4(3cDq3eHIe&%DmYl94R`[r$!0$%6XdFCq5K+jcNf94!T4d,Y(6l9(6
`B,X6+1'i!!2a*@A!lh,,kVBqb9@Qi$EXl+kAkfjpdb9CUXqR,`$p&[FEGkic3-@
MZ'l#XBD*(b(rD,B(D-jKET!!bD*k&A+!AiaihNN@p`RP,Jmj#!dYmiUC3ll0q4&
$kTlM+UG%Q13Z8j+*Jj0pa`QPThT*55iKV&D+LaB@p54(IhMDfBe%Z-@%bP[3@@R
D@JUImG9e-!CEq-`Bf&T$9Ik#S(Gf+a1f,T!!6Ip'M[*FBhQK,RS[`E,[a6,Q"hi
LHL'l(VXQ)Eb"GUI',M'p'CIVJ2iC&T84b"0X+DdaTUhG2Ujk&JMd[m`Ik8-eD*H
$R`J'4(pKKL"Rl96a6fSHX2kVLRfR+BD'%pLVdIdVP&Hf"#)(lpd@RR,MIZJiR!S
RFU!U)ldiL#X`@TSkbT--"YHQMQp!"SflXcHe-8B$VT-FjTk&q0JBqL"K8V09@ER
db#q8r(je5k9bXi2M$1EZ)q0D,AqQ8`U0peBMb99[0Jq4Vm6r'EB*E0ALj&aTUr(
k#&eT5VpC`02Xak@S"HYV9eUYLf4`eM6[K#5QdVL&GPAjeTlCfLrSk6N+4jfdr2"
NIqHU5$jpp$J'T4cUTH!qRT)PBqALP(EdBQa#A'D!RZe!jq`3&9h!l[[1TqT"6kU
(%iG["'D*E5$VGJ3CDZl4Z2[Dhf#'pK[)h@[5j-4N1R@lDIc-A1BkXbV'k)-T*%F
fJq6I-[aB1Tp@p1#[d)EDY6Kf8hR[DG&$l5MBcS5C[e)S$aZK*PaD!9p)ri(fR0h
HVr@"Re'G4cU(`4D3!208e*EPfP+G98`HlA9D,'DLkXfMlRU(cY8Zl+eHN!"&FaZ
4EVD1D3Y'"F"Na+*mh3VHe*pPi@b,+c(ccI05,4QqId@Ah[$bd+ekK9plp&DF2I&
f,'41(fD8&E*rCFK%'P%X+"Q@q3Rih94jdPXjfd9!lBa(8%PdDX"Sl-"dSUMp@DT
JR9T(*M8E$ZmA%`FUKrY&&HQ'UH2Z46,F'mC"4e3X(JK%kDX%c180+5*E'+RbDR+
Hpf9,#-Kh"LH$aZ!$S9#1-Q"B+aV-TU-i@Q5Aji((F,%N*hMNKG0i98@e`QNG!mK
FQmN%GSIGTGm#@Q,DRemVE6ZRU9hEjVq)5XLP%+)Qhq9ZGaMJ,NZ"'JA2B!+r3Z!
R9#q'0&bm@G3r9Il&E"+(R5dHS)%@D&bSiPSVK&2-R!F1KqSP%HST12)adP09V)Q
@T,4C8`+Akm$mi$8$`D5l4`XAi[)Z3+I'UZBU+%6(PBLF0r2@h*r1&N3AD,bDXPZ
HP8CLf"!&j'LZM6di$jpG6kh)ec0r3&1q)qTc)Q8cT9mSrM12V*Z'0HkmJUZ`rq+
Tk8r"9P$Uk'(LlrY3fc$T#CLc#U+l9Vk$LE'lP9l8Ec3(@U8fK(-*A[SL#kjppcV
TL8DI*BK2PL)J+bTUd[f)&EN6FeK[UCA!+eMj'@Pk!ZMRM1f('cpUAR+&@ff6Y&E
d,(MC1p&rld@,#+ml1SdH(9jMEhNe0,2U!!Q((c$`caADlMi,kMJhAK`"R5bd$R2
4%9Fe(khREPelCY5L%Z+C`ck&jAfRASR-$N@MBFdaeT(8''L8UiEr#iDQ%FlQFYV
,k2bbScF3'YMXcZ482TRCQ9blS&Q!6T2b@BGM2&`VdN1bqKAS'G$I$a1afj6+q01
DmL&6L580jj&r&6@Pr6b!2B3k'UAPaMj9M"d26`!633dj,Y-"Zl6He4YY%e%DY'1
b`I&L#hErh(QC*iPCSfN*jT@HfVUUlB4[Ph!8XAPlY#M(fM94[rjC"keFr93&$BQ
%REPF$IRVqhdd`BA1GA)3A,'H!TjKSSTA(JbhDQ`BPFq*4+6*c(4%V$2a%,Xpj#m
$`GfRV!D%8M@!%BF*PL+h*++rm`6jHFf$92m@9jRfdM)1$Ck-TD`m2KGUG-ZX0$f
$-PlahEhE6GpckrlB8[-&ap"m40L@R[Zd(`1*cG5qSe9Af88$8VbRSmaIr9HpGPa
+r-AN&9KKP45DYL-0TTFT-1068N$E5d#pUYd!,ZUXLh9cMCEdiBS0LLPCr"l5)N'
6MC%ifa`eBlc-Kak%akYmlHc[+ZdqhZ1rq2T&-heXd,H[dGcaU%5($c[)E8Qm2k+
)6Q@@LDV5Hb*pV2i3)JP9EM,rFl1$1i,$&NC0QKkNaJc9SbhcfbHaG4S,B2),,2&
4,%$[L2UZk[Zcj(Gm@fQG$Pr&BK[M(&!hcfTDh+!Lh))LbAD)[*!!h[#UiAhc830
2h(i$rlp9UEEp*3XN*TDp9Y%M"STRF5!#d#aCeMp-cJVYlA[HqbKJN3&54C(l0Z0
#q,AY9ZJNa"['M1V1R-VG*)L)Pji*J!0e8%Pc0B2l%rka+%%0(i@Dm5Sc"4YLl"P
VFR21N3FI6iT[T(aZj+'-`IHi@PC)RQQXRMNj'YcLN!#LGT)2[IT%bABl'J1qDES
fMkKq['%TJDN'+@&N4iM1UfJ-RLNFV$bX*m(LDpK")C`8l3T13KT$9K%bE-a'(U2
ClL5522Z+Y(kXbr-,+I!Xp!%QTZk@5&0S4F`L$I!9I@3F-S$R0V9)bJ4k1!4aC3U
hd@6pYD*fkLHPKEKkkSR)i*p0G[15erUP'%!mkQ3+TUI9QkBeq@X[)F[aGj[KQZ!
9DFl[kN8K3rae2V`9`b$q)5UmSU&r[b!8RXL8N@CZ6(0H9N!&ScCfM,lM)'iZU84
RcQQAXK@KGJ'8N!$T41&-'p$a58AHi4(NZQf,Rl,cqR2cAD84AXfd*5T0"-VV@i8
6E&f)$mZ6+HHbU"hcUN`CPYGF+2+Zbrp93V8PjaI[4p,MFCG5aK-cBG*"P%Na'pY
'fE1##C3eY6mc!95D2M[-%&SpAIUQfMFUVIS68!%2Aar5GTF)lMAZ1Pa'$M2P1@I
*KiNTqLQR6MN-YlV'kJ@B!V$A+X-MJ1dKHlFQUMYHb)9I[IerjFKq6E3DP&#fTY+
lk4(J(l@4%Di8a*qNp29ZS@&QSUIc&6HJ38G-Ii3Rbk2T,SamA['4IHR6G$)8q&h
Df9@4II"YY-mZhF194SVEBDb',VJ4D9EiSS'4$Ef4CphDcM-$L8j1-b#LSX`Ap6"
RaKX+prGEiSD)eLkiG2Z)qhEYBee8fK4B(IZ`0*&QdNcGN@%5hDT#U[Pf6cX0$9+
U$K`&*cp6JDNY1Va24kY#33"5GB%(Y628%[91aC@e8M5m6[P6!E+-Zemf,!f,i$&
ej#U%F+L,$&Le41hLkjmPm(Ml!QCb[C1*11jk0)dRA9L+p8NPcP*h5H0@eA0P6NM
%j-Ma@[M05iKUblXGaIjBQ+LY19B*2BHR1k@Gq)h[[YQpNV'QE`KIXkEJ[bZc%!l
kR315jlaN-CcSeZpeR)l'k5pZU1dLm9r@p,bc$B13!-Cp(Kb,E@0DE&6[IcLH"'k
aBGY2SS"I3Rk,$S+BHA#mrC*'fd+he3(dVpHpDIElfSF)'2AR*)ble2Lah6kGYif
-#Lh3X"M3$@I%Zk+,M'k+KEIq8d(aMk86[JQ*&aJV6K*-mVaY$e(`er&TZp4aUkA
9F%)pXNKBFq`q552Z1ME94`SA@RT#31hE9NQNT2a`Rqb[E!![hH$rG[,YD1$l6Pl
Z@Mc[RhiAJ6"ahkSiM6(%IYd"`U&lCSR""Dr!Yi2Ap2USQFe2rBiCa#iC@CI80DS
P+6BmE5[8KElFCRT81a9Pfh&kqii!D4')h0@ajX[qDi4)H*3j[5@[kY3#bea!m'T
%1m&Mp6AjbD3ppYL%0R"A,eqlcd%YXP*cX,VC55("a530)$5Z%M!l&`heU[NpemC
HT'a%MHT6D8&[CU0dMdNQJ`6GMV'U+#KC'3)E0j@,$PGM,R,jUjcK6TC*c[8dePb
`TcD9dBAh!X%6'$@+X-ZeZfkhdK8ZT,pe0`aeJCQrpcFfcLN&'V"TmlbH5f$5a&'
qVMc59Ep#DD5cRXh1Z$YDD!3ma62`CT%U&QY$c5mLh@IA0lDNJim@fS'mi1"f5@S
6#`8e,!QSJGGMR'%Bd4F9@ELC)S0,k1FkmK%2DKE64DjMGZLV&`FJIZrA#6S2@@Z
H3&KK3f"NUGfr$GMFEm+Jph5QPRlr32Vhj2l15GZmi%e8LjMF@C5RkVi0NRK9`'-
Kj%%#BZ)[Rf("L`U[TE0U@db83je3,m)KN!#1Cq04c)1@0a5@MM4*q,b9*@Y$-br
[BBPA5R@),Z(FY&4Mi6b$*8`L*3T`f0QkE+kDr@`,4Sa,U%VfFhmH3*HSLSK(EQY
Q[rriqU)f'"jhDpq3!(#e&SkL5"T%JFZ[)2!*0,MBP8P2`lUrK#13!%kk'XHkhA@
X`MVMX-T!B2Jp&"FjY5+mq$pfr+0VJ"-q"LSFKl,,2)d*Dr*KRdaZ2YYDPFNrchF
h"#,EP8lCYeRaEBjplR9K*%!BTK%28IkaVPSA,B$llQr+G5&A`i3%0A&2R*iAeBH
TCThYfZDSEKJf&5jk(U5q6PVqf9p9M&'$F0#JrFMXCCe2*9FMb!hk0MB&h1"&LcY
`464(bXSKY1XKpXU9S(HU9q#"55H3!(FN**Tpr+-'44Ij4)a201B+4K$,+@cEXaM
hmJSR3DAq`Ck"LY8,"hJfLfEH9R@bljCA&cZlQAb9rmb@(Lk!e43L$DB,ph'q5qI
IrT1!(3%Ya')#Gq,)V3`PAimaA6l214Y[Qkm08CIYI"#Amphq$E5m[V-qhrhLMc!
PdC5jPFRe2!dECQI[D2dXjKm$+PE&iH1FJ9jkZ-dj9+XQBiCA8(@[GNDIAXmCi`Q
2kfRmFaT6+j!!A2kX%6@1Z58)%*UIb6'92S!4YT%"P@bK(rbi(0F$CXS[b!*N-0R
BKV#JF@-J'0+bhU1KZVm5B"K@UV(09IZ-YGmlV!$8jTU1bZ&9#`)2ZdBN+R6,!D`
4'CXE3dS-XHJ!m6ql1[KPF"l8@@1'EcV%9'j11k)Hpr@m&CR+2I-[BR-L4CjpTMK
l6rDD@3CR@MiDCfMfX(a9-MZq2@,H6Z)QTLU$TL9&(Paq[01(9U(f'&ZDN6TeIZZ
fAQ88bi@3!)Zb4PJXrrLj#[*#E$@,peAYbE%jq0`QG"U!b&'b$II5T#aiU1"'b#[
Xd$hl['&m!mMH4DF310@0`,YmBCBU)B!Ilhcc$$hBZ+hMC#EDjCJGfA+XfX49B+U
+rDlAM1#LBa8V3G'hND'S#BH953QVK1-i8cHIK3#0'5L%SB,e9,DMB5)h0,VKFdP
eR6dqPSQ6le,QbXPi!!A,#VPINY!88-%[G',aP"Z(P44D1YFqcLBRDj,@Fi[E2Ae
IPKBa#f$l`Yp%3!"@0,3@$Ui2QqNp9AKAK"aMTQ"LHd258a4MdkDTB0VKSrNNLEQ
i08MP4#fD$0%q!!hT25c,#!YGDE6hC9fY6jS,3hT'R$e`B*!!(,acMEC85kP@$%[
riYQK*`41ki-EqBMC'!YBJmB#Rm"BL65GdmTB&3[6X,hPVQ6KaDFT4NFAb%lI9pS
H@f&lR&24p*'#(LS9MV1GNSjiGhf4i5q9mZcSMLFL,V8Dh4AL2qp'LeCpbahBdV5
8ClA&`qBlh1@4a3-XS8GNEkU025KYS[EK$XJDULZqMN+04`FG@F%XZ4+AaAXDQT!
!dTk65i(B5acadK-DT5j38KfR-2&i6+Q6l2`LU*-d-X"@NGHQ[lrC-0HHA*!!1Q5
6m)Mlbq8pLVJKjG&iFhG@!r&@jYHH0ME[-XDX+INRF[[$!k,RQREPeM5D9q*%+%[
X,5NcVTeVIU&18,eR@[%[1'CIP'BrC@Mp900-LIFmjE1NrpQcQd4X`Z&`X%SB%F*
i$h#4'T@h0,qR$EhKElEN'+4LN8+*21k'eL'H4M8d%4mlhCe2T0q"E+@0M4@-NIb
',,ec+CrZX-TUrpZEm`pQ$"Q@P8HY!If*e)dJZmJj43XHBN@L4BVJEBk9TkrP+k1
0,8)`P[D5C(Ii4`cqhEf$D+cf4Ifk9+k@@qDrFRF6Sc`bL4mT%)XDqB3JS`9#E-M
U2D[X6Me41I,ZehFk"CkYR)4CAjk9BNjX"KR9)S56CiQ&T+EqSRGG5fQerNB$q`D
`RrqZ)S#j4i'G(0jjRejR+PZp!K4S)r(E4(9hA(k4h""l0$i!4Z(X#rm,*SJHEj4
QehqNPcQl`8r$f&-eXKeCkV(%Rba+Gr,ci5@qZY%F(44T*4fR2XAcI"-,@%NcI99
jI9,PV9IAh-plFYXj69rE9QM,6U-Fci'C$-&Rj@jSi"p%'I`d2TrEeJeac$RP'Ad
YV!MZ14UIHQSlcM2K0JZSl3'Gf"0VQ"ZJY1`a%69JX,e*VPjjDq%-jd+lrY0b4DL
qG6C2c8JbIlKkaXCSGfl*ek32i(2kLV`jKdlrS9&Q*(h*b,eGa+pTJ'3-SpGpRH1
+4A"T!MCHMJ"4Ue4MX$pM&l1[-8,`qfkLYei2Zh3@lZ)Aqb(G,hH-LNSGEZ&NP%e
kP)9ABd#hYL91qN'&J(*0DlrSq-q8Q&Lk(R1R"m4YYj+5NT*kPS-SFRpGN!$TZeI
M(&H(Jr)r+AmAGXD!mYFF)%$!FM"5-$%%TH0F*G`-6feceP9U+)5rXFR6&9aSRE6
KhH%PbDUj+1f)`D8jSi$BV-Z![9S[P#Te5m3[ljd%[Z"B-H*XJFVfr`hJNK0Z%$)
aU0(L,4'`@DKPX,f6[5E8DR@9Tc9i8IbLGI*Z)0,2-HF[bMQ,i0KENiTUYqLrM3I
jiC)m-'lDFM`B3JX,8'Elq8lL8`UFUHJN[(M%K5)-Q"6S-RAk1Z30RjdamZ48h@Z
R%044JbU[HQm*a,E%EeEq1J[6r#TC*jl!*JL9'@6XK+`q2%UA1eM,k0[D#b#qciH
"5Cj#PVMfi`M9qYrC2"Aa8mrHHLqEfMUTUhc$9[A,1Q-J"GHEab8q`0Z+!jH9Ar"
c`M2'iMM42)(U[L0C0pB&e+5R1('X6e9mD892kkeYUXSad)p%IBbElpD)jpkhi28
D0CD"CCq-"N3Lk6[2(fJjAYej55a%Dl-h(@l`j&I$+Xc%Ja*dE4SY&%I%GbSU0cV
bJUmE2G2'10[d0MhAX`%La&bk+BKfXdQq+6KeK9!+R9,XBmM'VhI*e@'3!""6IG8
SfP`"(#hkIkB+,KV#k*!!VM[2D$M(FqMaiq,D-0YKfMQreS1Rf6A,A[LF#&H`BJT
FYMr,hH9Mr@AES*1@iHiN+AV!peBf#@-2-(H[FmjdrJM@I1T5J@X(6p&U+8DZ-89
,PE3`@dJTmYDN,##6KUL!2L@6'TlX2,bq48&I3A1jS%H)5pZf922BjB[JCM)0"PU
$ML,@lfUi'l2pT'"C'3AH)10FmaMKmeK,$U&hR*T*TX,DaX25%,&X-`8RDeRJNb6
)J%$k(9MqTRqA&-6MhN%RCZeUk@N4QG(B2D!kjVBmQ"Jq)NP+5k-T[jCi%iTrkd9
'`1qB*M9-p0l(#hMj1K[dA#DqL%5Rb,IiqjD1l-p'FM-!L$-85baM*V@K&i4&K6B
PNQmQiRM-3bFf,5Y90ib)h0K%d'PD#Hm5["55kE2Sr)!'3ZjXpT0$cUfI&6!+Ch6
FX2B)T@2MFBb5%A8IMN31PEhJ'HQATrKS#NL3!$YUbc,(Zc1VLdJdFdcbP`U)0M[
08#c3j)rj,mkTFC(+dYl4k(*%R+-CZqlcGIBNPBmU$SpH)-SmDr$3&@jd&hdf$LI
*DKq3!-fSM'EB*qaGj1ifZaiai@0%,bJcT$4cY5'2)fNIIU)S6%bQ@0ZeAGAe!L8
j-pKb%R$kY[i81FEH*@E'6Cq"cc"[&4d4r%1kb5ZhU3BlqY1I(9UH(6rUL[d#bNM
CE`Z)FN)#@%('#YAX9$hR))iVLX0629$f0*j#6-5GMk04(Kcd"Y-P8&"lDj*T9C5
TLL-JHX3%r@f@Q0U[KI`!'R5c0PqS`$rNLFidJ4iRM*EkfUc[qMSTNR3R0ZBR,EC
+X8&KEiER6[6Q)(F$CT9SKUE!YLcU8h31VYUIjMQj*$jFADDlK6E3eHmFZ*!!0a@
2er`p,eC#kXlS!ISG'FiemD$@bI!qlUb[G`"96XlLdH&YeP0C6QC[b-8"CNmXGfl
Cp++8h58*-h0NE"iif4Yb"V4(Zm4#`!+C$XPIaR*5pI-lXG#NP"-dV'QlDr-b[0B
X+Vb1qHqKAq0IKe#qebd1AKVe$DI2a%iIGNK'&5cU#L"mEDJ`%fd5N!#qr96VAdX
)',E(XXNML&HKbH5hl*LYPmH'HT))+AG`UP%@2S"@Nff'h3ml5`hX@l0f@-Nj-Dk
CdeQi(DR2[9!jRV,[&B)(r*LdpFbeMHY8EX$P$kB[DKq`!Z0m43%Rbab[0R"[frd
$A'2LIK'EcQ)b+Gd[Efc!QSR59,P*c0I6eQSQX+CM40@cPrdcH8Fli!d+NkqUS!h
'*b+e)NiJae*`k&Q889*9!aFA)+D[rq8Z9CkZ)#@b%-0iacIGYj6Ehf&#"d5YqY6
$PNBJ)F14(K'a5VB`([FD00GC@DM@B@Q(Dq-G9B@rhr8-b"Maqk4858E9XaH)mHp
a&5R'A"YHmFr"F9NSUpp9L5Bh5"qX)["h4N&2pi3-p%k&6(Pp0k1M-jAkC9Gbbe@
IQ!M9AkieH)#YMbD5cFcRZjISCq3Z`E+Ji!iS"A8JD9KM4r''5akm9[pd`3l2amp
KieCJiZFDb2TP0@PK*E+Kp3!I0dr-Y6,RRY@Ef+N`IJdjdh,&,9K$*FR"a`@DXPc
!c"Y%NVDlQFeC!DGQTFDL1+G5C[(l[%KEVj*iRhCa#khQd18q,cJ+c`!c8HlHK8-
qLN*Fq@,bf&36e0Zj,dq1*Bp[h8lcC"fXiHY[Q@4YClJiLY5`R*jG9,GdVC3MeZT
aXFNeTNUilrH`Z#E+05fJPjDPCB#cS-HCDm%G4+JDdc*&TT&(hXR+A1'#U%[,!Ka
dVUL(Hr-C8`C1)l9L#V%MZ!Xial[e,DpPC"EHMk`EK'laM3hLdQJl[eqRKhAQeZ3
ZB3N4TRimkY*hI9kXV01Y[eLJBEiF"H(L@,,#`0qNe"NZ841ZPG9Y[ra+hVmDiJ3
!qGVDqF6eBpE&31&XbpRq4)L*6GaH[k!aQ8UHfFXk0&He(cd4[mCC5*(&jf6D-K%
6h35'k,MAY,RKm0A-kL-d"aJ[Qih4lMM3fcj6p6E3`MTA+h!brQfhEh'1(`E5,-j
$3k8Q3""f-$&6P*X4EE@r"aMRiABP%qlZ23)q5DB"`D%+,d%,9lD)!bP#2CT#CjY
-lBRc!(X323YL#PH#AY%DIM*GDLDi(!"U0[S6rK2HakCFp0mEjAH`bYAc8&J@f+k
Za!49&dT1SqCXc&D@8`JPB@T`'[,Mi!prEef,eUF[HZIjTZrdJUECq3YkjK!5fpT
&&`NE0RL0r5T-JV8DJ+J1SRZXSDb5Faa$#CLQ-@H+)G`a`QIBQ*,8c"V1jZ8F(Zk
6E`lY5ljETf5MKfV!l"(f(SPcp[b[UpXm,m#3!$$6&l1i#YaMG+Gkm66#qaY[$8b
46LI44BqRk*e3b6+R,66mY@pb[DQdpM,I9jb&)fF@Y$f+6mYfm!j1rICK2F`McLJ
j%c@VaT!!emAe[fdF86[K'")RZ-,4YB)SU88UiN92Z,%+8JqSpPp))FPUb[p9*9*
I@mC[b"5VYL+*i@fM'r5QImeqcH)LR%%d"PS,f%p+BJark`(b98%!l#Mh1`DKrLi
QM*P@0QM4)+$AJCcjHr#adK&FQKE54NCFac*lD9j*!&h4Vq#cXcCa@$XQD%9DD9l
@b2X3cP4(Rb,JeJJTL3%UU1k$dLp)4S&k"I@(0'5hf1F(SYAf@0Qh2KN&'"b05S8
bYqrUN!"kM%VfFNCca&(Kf`r#Q6Ebc3K9`TJEGD`4PL,r#FGM)(c)9Y(Zf+58Bba
Dq8Uk58[&&X5,APrEH`KcLKQf'MQHEZFD8qhN$Y5*JBHPIH21miE#QCc[XciaRPr
2@8FjSjm[F#'Ld-*+kcHT*TD8YVB(C'KTY5V'MUji2'3KNF4NF$kHbF$$-*iV58L
iHV1E%cA)#NV)(BK#L-!6rXG[5EH(k'H#fpU5ZK8,pJjHFRaB"Hp%k)ibdrie[h#
2IQRj(le(YCMCHk2+N!"8,e-dmDCLAD'`)BEI-d2kVPM5PH+eJ5$IKYH$cJYPC!F
RP2"-!D2NVMJMekVc[G8U-UK6ZNYB*80''MEAm!JqcC6`,[Mq!2NSR"V3LcU0Va+
,aY@JM%6(jUMAi,pQKL!Y6!l+i+#cr,-JakdJLELlMC1cUZ,bCU*VcjeKK`1h,Hi
@TGZRK-NpBh'(RhURJj[2@SBl4eY1bLJ5#&6%@I-R(i1C$PPSX"laii"j#X8q1$i
dq1)5blqR8)FjfAd4%(pp`0c5brF(cNQc2(N#A`#1Z44ee1[pahmbH4PFVMSi"H&
aE$URIPqe%2#i'Q(@0**RfQVNaKJ-[[S`2ZeiTh%cd#FCI[25&9++%f%55d0aY5e
lb('SQ!NS@PCM&P59m"R6"Q4$-`Z&"0($$c$K4TD!5FL5MQZ)Qm@H-@''PFRLkZ%
eJe0+)2dVaTYHEU"[-dSF"'$8T96#qeVkDYEji1Vhl9$EJ!0MGMYRZZ(94d@MS(A
F"3M8ZiP#HNhT#+Xff3jHS$2*F83CaHYj9#eF0b+@R1KdCY2j0h@D0mXq)1p4V+C
qkK+3!0[`*'8,d$eDlL2IBfaQ((pmi,kH%M!SGZpJ#BpcN!$dEYh,%I9&36MXGp"
"c[6#Uj!!dcX*Nl$r4rc3a)CMaN!bf2U&K1H`ei,,V0DB5)cqZ&EAkm#-1CrA98H
0hKTX+RlAJcQR%iq($X8-$-`mhEZBB"C9e9,UkY@h#F'c&eUFi9PlceNKb@'-"VC
A@26XF#i0J,X!X9bPE[#HaPYId%+DJ!%2NMDPfSb,L*P(NZedk#8Rl8RGf2P+)VT
23F#I1ejIU1J-0@&5""%$Km3iGCFBeBhre4SfX1+%8JYaei*pG`cLSmLlEdd[+0M
6k*UYahH1d[eUVDKL5j!!U,j[IAq9'XhX&QERTIK2Z@4I)9b@(%@rd1PTil!i96F
N16N5GLhrhVNaKe,Vf)98$"h`brGpj*Pca-%I)0K%FX(fJRMI3eJ&pHT(EPDIp,f
TMhi%r"Le$(PeBV,hJ@*a+L-12f8Am14*e19I[@9f2,a'Ui4(3)LB3F81BlJ%EBj
*GJa6Nl8$))Q#214IFVNGS%9f#3+NE@Gfm1&Upl3mhNA5dp@D`IaXTYJ!4c809Ql
YfmI%BlpIka'U'#5%%(bM-MAr1"Za['qG0I),QRAMGiCJKQ5ZkDFe5U"Xi,!KbfJ
GXY4laD#pPBJdNKABUD@HYAC$FSFcXa$3a1imaLpBPmB#U9UA3,%3*c#pd'dqT@"
Bd3RZM32&[iErQpqb-lk0)qq[Y`HMfH6q!kfDV@VqC-YJL88c-,9m(@Cl%Aah44%
Yr6iT[e5F3BQ*YUi`KNmGXf86a6EZr'TIf`2([2CjRFUk4r3(8SeTCq2B5Q`9Iq6
LVH3-aTR&!$TcaVaI2#XU+Pih+G,b[2%[KdA1HXC-)IhH9l4[eP,IiXl+XNMf,bB
M%rR4LU2jL&cDCm#AP0jaa6$l!qm+LKI4GN'$$B'Kar'cNF"jh+q3!!HmZkrpVT-
DED#%26Cj*J9h"6ES8hj'&`%jeaV)bZ#`Ei(eJ'L`*$fS%#S0[i!K@cIqPKl+`kh
"G08%r&8[8jU'ar"`QjLVS+r-&k#-ENDJ%SYN*qVZH@Ji[1b,5-iLGHc-k`PrJ)K
Di(0%N!"Yc)EkPmP3-I"!'RRD*J9cIA'!A"YL-XMT[hLT3@DVV@Qm1mQKrM1T+ia
39BSX(0*Q0kTN-%j,bd#aUHT#QAY3#Jb%lXc0("`LGUm$i-qQLjS-b(l*4$UHVmM
)h!T16(35@,d+$6"NjH'Z$De'rK+fp39Ei8"ap!lp#,[!U%Y`mMpmT$d'I%4+,rI
Lf`hk3VCe2H,l8NdI3Q`A@iQP+j2aMb9"$Cf+I95NJ5(@@'l!L3#`m9qr8Nf#4QB
"AhKU9D91efCAJr#V!GC`B43GUp*aB6BD'HI2mXK2[@S#H+2V3`V3b4IVmMc`#3r
-RdUMda$NfiBd#*,%KCULc'S13F@ba-4XUPSKKQ5Q9fM3AcI$S$96H02)`qj)*S0
XCi-RpjdT!YhfB[K[Ap5d5F$k@Z&DQ89E,Xq9@FdQR%5GAj'j[NeLcI*$f(BA,'Z
Y!`%R*Ak*0FQ!EkVV4(haPHREKADcB-Ne29+2HPaFMA@H$%JGV8jl+DqMpKRPmkq
Z3-FAN!$@!lcad2U&0[*CXT29"eBU@3@d8G!K$#hH)-DF4bkC@CQX'9SB,%1dTCX
@JJB&Qaflhj5EXfG@He*d2*bdEPf@*H5)4H@qj0Kfm*U9Dip'-Nr31KLh5i!`jp!
lX4lr!f4JDNq1%1+h*jbDQH@EUX%*E`p`CmF22l51H`3M%lh'$1GkpN8"AZIHhP&
&Ak%iJ8j0*A[X`rKGcVJQJiHmkV`Je!HlA#V%6B3Z&`@dkb&M[P`8&b@!@C!!hK4
BE2Y[A[5CGVS*`Klp0)RM2*(d@!-80J9+QrpLRPa2h%*%f&rK`0VGD`FM+-+AaU"
AG"qJ$CH2VCI-rBZ5M1jFP)E-,c"3YqTqZXRGGfZ3!1d$3Y9INF!9Y953!$e(*V@
d@R4V'L`%8A6'H5Bb3NMU#RR!5PpUAd#aLZ%"fa@IM-b4H`p!M,KGfd('RFH&N!#
-Y'!NT*Iq%GkT6jHXN!"2H1NKKZ&iQd['mBL4hbPTkmSKZLXe'F%6!QNRk(mNZA[
%jijKdFl`k43Eb*TJT2HlZ(R5C)r"CeRTbH1MID-GY8r&6BH'Zj8*ARkSAfBh0$V
i)E4(-6LklN+-hJ*J#P)Tc[B#04FCp[5p+298QNHCDj51M+SM0eF`#f3('a'lR#@
$B!flGHUQC08l8T!!dqDI(`klk'G@BfcaJ+er$(Qc2AC5mSp6EB5$+jh`J5pVNjm
MMBa%L1ZfkBjB#dQ)JY-293QIEPi3-VUqiJ1B$AJlS9B@5Y4c$,!GhiDJA,@!`2C
-i5mEDheEd'`hGU,ReR-9XYN*3kAS*K$jN!#SdAQF5[SP3q"M!Ra6VJ$m8pQN)id
4KYX-`ELHf!PYrC@K(A#5#)Rl'RV)@Pm5-R!$$*Em6ZKFJG&!jTmLlk%CrN060#e
0PEXDjq,XHrK5f8XpQqb6FIQ54D[Qif4&41I3k*K*Er)[5ph#l,[5XMYR&pPlCNE
GZcbmld5#ANbeBITcCKDJlMJPI6'qR#XE(VE`BSP-S,J&V8,FLCEJ+0dGV$b"0%H
Vc)4C(LH`[BPV19p4,PiBd-%56(reE`+A42Q#-HK)Pm["qcG!ciTdLqSaQ@1+AYD
X22HRc@h@riNrAcNdrB0+k"HDbb1+FQee6bY`$E)bYPZ%b(SXmb3RB`-M03Lc*)4
lhJ1aZUZq@)ZZcQN@'RaZL4jcebmljpq[G*@G%EQ!ZRR@)hdrV4$GbNh8am%2PT!
!BIfZcI4KhZM[LV+RLIqpA#9Aa!P05J$h"m#hKHJfP-d!N!!@"5S,'DPJLlHrTqT
$4mKFIqdTSfD+m8PdKeE08Kma)UDL*q+Gjd1m08PeSSX13f"cGJ(2ri8TkPP(pb-
(h1M%"e4QHV0(UF`BNC0$bdcqNU&K)4-i56$S0-J4H'pjZmZRN!"6DSQ"Yrjr3rl
YR3`%+JRZ"mi)*qF-@`*2!$e5cibeD4S0[rr@i"XIAhj&5AeJ!2q&UU#l@FlB2+I
&EYB9C$+"j2lKTS4eR,dd,$XX[m*(kQ$%QU+5YXD-eBF*6MGVC3X,$8CPr%U1N!#
lR0cmMUaXe(cAHIrk)5VkCNbUC33f0CpARENUDrR3E&RfQpAqH[1raerT2KXRcb&
5)!c4hdTU%BqYX(AN5I4c!YN+kp4M6V2Np(m9H)BYj+eqQcZcPa-,&G)"4qV(`BB
8G9f4eB!q%B*fABhL,k0(RGZ@Elf8+*Bh-,lDKZK@#11h8,MSCKSMU$92BM+qbJ9
H`LY+P*0[MN1K"r*X((1Kcr,PV&K#T8$[5VH02+BbbJ@AHZ,"2D`PkJ)0c#N)$[r
rD)S2B(QjB8eVTFUi5mr$$a(&$8QZbBC%R(f05T%f%(G3-iqGE($rDE)N+C8)Q'U
h*608Q-[HqN6bR`G"p&@@MYdq@%Yqe%V1K@BrbPHXf'L+V+pkbaBYPHK(jLp$m2L
#1eJZb2*am[Dr#QPS%d)lrP"6lBSIjPrY`,[S(J'rTl8J6UF%iI`'rMm9PA`3"'"
cX)+[bUAUY,SQSJardTR4FiAG8bR[qqEIkdDK3"LLRb+N-mK!Z%&0+i)dS4k1`((
0IHJE3"B,2UV#3&h5aTc3J0d[q`MA9-"K`"FP%-SEi2N+Glrh'c!6*T`iLHV3'p!
ap)Ekj2k[+GPrR,+SVS#&GdAk`pXaMLIUkqJmUShRFd!Cc6H2TR[FYcG@Kpm83-M
KQEp+0RGB,m6eVH&f'IPXBrP8"")SJJ`MSrlT05i-bT32@2l"6,MIBDLdbfNhci,
8A5r&,[-&X*YDE0q22edqQmmK83"Vbm#-p"TpMYH5be%f41!@-dR$CU3LUiQGRDa
35*P1J4SUd8$X"LiibY0BPSHqULpiJ`*LM[d-F1Ll$SA'5"Kpj$q,#ZmVG3FP5IJ
UDXEHSC2+hH-c*TiACST3CJSd"UjldUh&+SV)PckVZNq#0IeM9L+I2N6l[X#qeHA
Lq,p0rKllSS6Ci5$DeIhS3M-XZALDKjmdpU"6KhIPe$`5H1@4q'4"BEl9TrJ!VSi
(1b,"Am96Fej3JIm%J+a[BRfPi%$(Y!(H@lGj3'AGQ!aaiq"b4k1S@6JN[YJVHpa
ACN2m6S,ic%"T`#Be@1G*ak[*Up`Y0r&AhBe``dI4ZhSKqGiRX)LFk4QKZkCfEb6
($TjSCp(88IAh%!emThhDBT@e3c[P5CZEBSAHA4QlDJ!SjeZmh6$GjbRA[ZhfVSj
#RpNar&!3$'ljrTpE##Z,iJUHY4rCE[Jm)%G1f95F*P#i+2EM"lFhU,l1!61HAE*
(qrNY0#K5[@kGi&Z[NcJp4r39c#c)V"@@Vq-jbb14SdC"RX'mY@hbk3pL[r08i86
EY`CLJ%Hb,NZrVh%L2QE(T+I9qQklP`+T+L0-B*'`*0j2U[NPETb[)F2kil*Fh",
BbU1ec%J4N!"2C$FjAZA[)Q6Jqqm45pS2-`ZETeLEHhNQ6X#`%++BdNV[m*k,,9h
hF*RSEc`,jb$+h*8SPEDllDdCkQjp5a#A19RPdh+aP6b'MNr6$McaZbd$fR3XGF,
mG93E02"#f`8B9#"['(h1"q4&C[,Q#i46krd9VG0jhFp*S8QXU390LH5`[e6"KHq
$$(UJ)iFEZm6leXBCeGNR+%MSB6Td[G#mZ(JNZ[B%YmT@RbfaC0p)86LYeqBl0qQ
%9-CF2Nr0c4%l`P9rGIP8V$)Qbd*YX5!(L,-XATSUr9-8V%eqmd-(CQf8&dG'1Dd
0NZELm`SDji5(r"(TiCXUf$L-2HrKM,3S)Y01LTcTf'aShQ+mHHirkj0hC9ibUDB
ZkFm0m@B6`"D&E,VLF6h`QLJh$I"I#()H'XUFFkh,GNS9,[UVJNVpUla%YR"1$1D
D@Pie5AKp%3L2ZFdJE14)F%NFD*aM5q6TBX4ZFQc[(3)-Teb@f'fPqfrZ-k0KYY5
!r65([I5CN`0j`RHD0'KQ,ZdK4ka(NZI9rf5!2%3U`1a[HB"ZR#UBc@'*pcQ*fCM
DTKfr(c3c(JEHZi[ffa`BhNde-lZ+lqjN0hq4jb2dCfbcJpJkYiYG,LF&QHrZVNC
ai'p&r,p!3HC4DLh+iRk@6T@e'Z#8S85D"*C86k6Z)11hkVH)+&%VD*b,GTkQe88
rl$f,Bq88EEU'AaKLY3hI5-a+4VaEfI"$MY)D,c#rpfeB68'lQL+N4*dIR"6L9Lc
$Jjp-,IVeX",Iad"#"j!!-J!Ba@cTic8&0CY($UmKm$`Aq85"JaYSq8e18pDe!5@
,9eTNM4A68@!I1hj(!"RR%Z0U1A08dJEqeBZ%1cBl5!`b$)8'#4V%CTe8lr,rhrX
[$BP`Nr41aM"15D0AQ0HNBhTHk',piklI,`*8c'0&i9k,Sq-I%f4Zl4aPfm221iE
8+jdHjZ$%BQ1&cMme*R6!CZh(CG"m[AjY9Hr"RQ5[p+rmIS)rGa`$dUKi*MXP'GK
3KBm3jU4faUZ*6X0dS`pUXSf@aZ63Y!ri1-C,%)pC'*!!23GNLqLY!aE6Pm*%kG@
NrBl`'d1IY'b!EflKcT!!L`R'YfI@RK@'!L@q0T*r*40lmaViF[qq8%NBJZGD,IS
1Q5AGFEBYi,K$E8'm%*`jJ[qH!&HH"P3ricq#!`'@G"`2mh8(@+lY&$YT&B)&#km
KYmfUTZX"2qi*AMKMqfKAXmX8Jk*4306+D$F'"3&aeEFrM)59(%P*bX)lkVkZTe(
LRa`25I-SN8I4lkD`V1kq0-36,@0!p!'9(r(ij8R2X*G#F4MVJ8d4-@KeBMpD"q(
3*TmCiBa$5*eB'1MI-RqXGAPh04q[,TYS$2D$lUaVm6GJCmY1J9-l,'hb,`raPmj
1#NL0l2+"42lUN!!8jl&c$eaUA%"5me(ppB'D2-+plMK[h*mNALRmMDa@i$e*b#D
MY"`mAqYqpB*I2de@#FSijG2`EcFDqU#hQdDZYb0YEDM5hJ2`P$02[XTd$3*HKPb
lXEF0T#jM'C+F#jj&il9mD9XiH#V#-9[8iUqjpe1H)rSZ'Q2+&l*a!,mY0)3U#P1
"1Ek*"R"*keQULHPaHNTl!b82(-krP@Bk3LV%)UF%6BJ8ek[kjM-H(R"kfm'b)*-
Q"h@1p&`JcYb#j)NG"%50LF!kB,6@bYqS9Y4LNf*#STj'&bj%(R(P[ImP,46,`LG
i9V14`8E1!Um80I1lkG%ITT%B-VRF%YSQ$&FLE6d!c)PdZ%PI0aJ"I,`bLlB0,ZT
N42D*B)3Badd![e$IC[1'S%bK&Lb9Fh19er#!HNj5MaXC-+iA1q&3Jl9'LUEUZaf
*e'fj)ThD#*5HfK8aif3&KbPTLZPKeQN,4L1mc4VQSQ6Lb`&I59-,#5dY@f[qpR5
6m60NjmZKrd*6#KRM@P'R9LVBUS%BX@8!RDZ*MZqiSZ3p3DKR4q@E0'F2HUqhqlQ
Df1UKE4m#MQR1QXBifUa+Fq)MmSfI0H8QX3Jda$R!5A%pr22i55C"1C+4[68X(-h
c&I%L##2qp",BClQ#p@q5`TdH9Eih-AG9a#ij53JJH[K@rR&i1SFre$'cGD*4CLr
IT4Nf6SN42`j&GJJZr0hFpiL%%e!fEqIhF6ereiPLeE"U&EHII*apTl3ZIQpGM@E
AAFp15UXQbR3IE*D2aUVL@B9KBBVP#$31-0VITlhI[VG(E@pDfVAMkE-Hj1e0E(V
bIQ!'"BB&1MXHH'8drQ%35(@JY*SEY3l-j)lqlBUaZP5D3V95(AKIdZF5K&8@#QJ
+rIib8T*!a,c-jXkc[kMD*4YHKM40ZAe&T%8Z1Z6q#LZF[9cja%r*0eRM5lId52[
XCT+U@Q('4fpr@6CNR1'FAJc9'Q0mahI&C+qieILEk9Lml6!pYfCDE0*fiZD#YB-
l@+ERE0d8MRFkrJ2M0+4l1#9i$k4Bc,IS*C(FiPf#YijTqb#S%fR4p)@RT[,H5V`
FEk)+hEirEiUiZ#)`iH%',I(BFhh"+AN$f`1iHXHX2YLqj#53!!9fQ`$P5X3hL4Q
*8JqL@R[,)PBi*e2VM#l1hQ"$6b1V$kT$cRqrcPHjb)42h)ff0AG5!`Yj0%+4)X4
fDKQ,N4kJJ6%KN!$M5AcBCEHHDP%&G`"([pkENF-hkETG#"G%q[B9qQAEP4'K[3H
+i8'ee6VPNXZc[((ZLcR0iFcpTCUBF1)I+$Eb1UcbhDaCY+e)dd%(FNFRi-Y+da&
40Xf+d'$EIUPF-TjjjA1fk#aH@BNLAcpS(l6de&(kpTZF0GFc3f6$BK,Za[!KfeU
4!Pb(,c[NA[q'IeVTN!!CCk3rKmKUXUDrU0l)G+-E+36b@+(ZUbESbmiXIY&&2D$
8(crbp'mN1@,HCC(iZFX8FrIbCpP)C8Rk`#N4D8lLX`RmMCBjAkY)Y4p*-!)J1+P
Ef!$DE[!!apZp8d@qeLrKi8kjN!$mLe&P!fZrUe`q9eX('l6c4AZNcF#S`&+C0(S
P6A*(p#H3!'[BP0l3k4US"29&-!!J#*P1%hCSB(aH%I%ZFh3X&,KA[r[q12k[(fK
Tm2"63cEdB-9#LTTBTY5DHTdlQCTmh9cCBqrH&$Ce[Y9dEB`M-rq4583,$ALi@d8
RlEjq@IGr8Y@5PV5P`5,('p"NLP4"+5QbN!#+PZD&5jBqb2PVE+@''6Z#+G9NX))
QMPB6%UpM#5bIVddI4`)6qp!'1ediHjmIiM2rpXYS41HF)GAJ"N2XePXqlmhr+8A
kk)YedN[3J6G$P3pIK,4[bTJDA-f9V&'-G0-YX"6(celh(lhPCBlSAdr3)#aYB&C
)H8YkjCfF5eVb1-m5BYp$S$Fe1@+56,J4RXU1h,dr9-QPlNf1+D4"b!h#5NLlbDF
4V`*4U6"hETq()PfZ3p6HmJSImG"l98#!%TcEZ*JhkfqXC"$&JLJ"ZHc6$QSXfjq
TU6aUG*kLd5[8C&l@Sfl6E'$R4Efp1AfQ%dUeT+Y2alL'(cPS1EV$mC@CdqlpG(f
3!+HhI4Y)e)f@GjAiQ6qaVD6J9%5`'aTQrFDTT83HV%B-ZmejUIQRaIfL[)Q6LE8
m&#`5[X488YVMk%@-I`,L4Z`Xc'D5+3+4(D8*+(Ph-MIZpKSK1qhEJZ1rf,`qffU
c`-B9GHJ1Uk)!HX(2!If*l!Y)&Z$NUK'mqp$b4cT%EI&m$H!3#UiU+MpGVZ50@6b
)pb8`j)rA,L0@G'!*a[&F5Q2&E`Kk1T&JLe!%iCUXU[KTb[l1*-5GG"aRPEIRKr$
Q6BS8@cp`aF6Zca44CZ5bDm@K#MFqS`#H-319V*Nra#I6XL&R0EZB@&QIb4!1*+q
pl#FdjP#h'Nr*NEhRha&@-3m+!fZPT9ImQ'NU+2hG+LGEB%'HR,G$3+U6CiZ,-#!
R,TTDR"qU+&Ij1Mi1dZ2RP'!pb4#qZN%(0DUb%FMG`!Erl6b1c"Sc)A3[pV@m[%(
91ISi40qr!8YN,rH3!,$VV@X-p)h%0@bQ*Ef8'[Iir1%R034-CKZp6[q'YL0eE@e
AGM`#IYK6,cL%4SkfpX2HiVRK4S["%8',C#jfi42q6FmT0F%DJLJY1JGe-X5+NaK
md#m-U-#P#[H-&)UD4rd(Dc1r6fXEV!(rN!"qk%,eG9k2-phHD9k%!blR1AB)CYS
6aekZLqA%TaFP64q%Aq4XL8&-DC4LMP1TpJ*Mbm0VS-HU%J*TZCaHK#FaP&!Dmih
0rACFSUrL*'BhKS@d!j,KLFRE3dpDaTj0(9C0)($6,cV5VEYIp0+VmFTqNM4E&Dp
`8U(LjC*T'))&l#IkFF6HlM#bSUrKRC(3I4'qH&)(9ieJk[B!$0H5#29kX$Z0QN&
5k6*`"41R!IKAjp#00IXHC`'bG3jBdDEALQq5Hla40B)r)8DXMJjpi!*pI+XA'EL
("[92D*bTL[(DmrpdZ0hQU)X'28UQP1UVY89A48+[Zj[`e9mHL()Z1ejAKfMpYEj
r8$$F!XrDX6'mFHL%L#h*qrec@c9i(h1iBIQTKL%*C&cA#T8)D#C%NXd0HY[A4M"
*`(6Nm!eNlEcGQHpI12'5ZpF!$a5%H`e2qVmP3c(CTH4Ubf1S$ql60e-e*&pUimF
'*(B1'0'-R80[SaFSSZ35!-$kD4,8*G3S$H[K8MlQQ)kkXhqee1kD,DTNqL)Q'LE
h0P8HHcY(!Q9Mj4L88I$9,P'mSXqT[l&4M96Em9SP[4#m0HC'M*G`pi4Rc4eU&ZV
qc+Cf-Xmb)qKjrY%[X22Bi)AHF[G(rK-!j!pQ6Jl%UK,PHX&EY3Tffa)f,q$4dbQ
$YJ%a[jNXA5m,(U-i!@E+3kMVJ3+rP!-02H45,9k'lBHX*"UaM4H(M[R6e@ZFG3E
&!9`U!CRQN!$Lmm89)5VFZ`A-58+(h&-lGH0Ih##rBb`JEQ-XAXS2a4A"C%iffQa
!!e2E3H`VE*Q3!2qYlLjDDMeXQ5,KpmkI-E'R!lQ(95)E4mhMAYb!F,9(EP#YTPa
AC&9LXQEra1NFTN4ja`fX3586(@m&5i)Vm,*%NM,lY9bX!VjE#%TGeKcG+&RY1K6
iid#,F6J3YV*hYQr)3T!!a"+jEc*!Ml%2j"Bd6+MkcRTAASfQNekq4%NdleVahAk
()#JN9)LhGF4VDl-%@5XTr`ImTRMbKdmN1dE[EC`Mi92ckTlF-FL)M8Kh@R3XQVS
IRk4+3ck'VKN0GCqR`+i&GEY+QHE%a94MQ!e-RCB*$hE2Zp6SYb6$eA3lk13mGS8
EBi!Kb`@BYq(!&`I`Um[@2SPRfAUj)Q3Mc%5A+HQ%k3V3pXNB%MIpaU16iCd3P0Z
G"6%X`*ADN3*HaC`LXC%HMAH`jl%YIpZD$NmGa2aD02DJ(maNSCi+iC23,$dk@'!
3#U4iP3r@`YRL3-!IaT5UB0-bMi)pl+-N4a2ULlIUMp-96d()M3pp3d4LHC9"!ce
$kkFdNZZIS3lJi!iN4CITCmq#"5dHY(dY@)PTF(B5R8V%`%dcK1*mGN@Z19R`+52
)S8She&k[FB0JYb!9X"q5d1CSHF,bMLJ,"3hGI!P#I%`cRXkrGT!!++K#)&FqCZ5
&kRPhdGjjV92QF"8"ZB@(T'6pG6fT,MXYjq3HhK5jYY&lCSc9#IULpr%VJ#bF3aU
JF8Mff8U!j$5ULH2aCkmca!d!B#$MbJb+MM(%p!2fj25`c9NR-1["L[P%ShH2'2J
hZ8GC*3SpHdeIh"44prC&+KphGbcPfpG)U)bAd@&MI@)p0JY-bS9G2aT2qNr1-Im
P'bRA-+UG2%AVbNfQ,J*rKAhYVE`L+&Z0,MIRSC)Z[rkaq9iNpbi[`6hKU%(8Af'
bhS##J2HM3QlTVkLf+JACFj3$*M8ip9peS!@84@@(GjmI-TaEa1)KCm@K3XL)Di6
(kVf2@r'p*NGIEFV+M'qVf9PSSD%eiD`QCek1bH1RVjAHdYk!ARX!Ia1eCDbHAq6
mT5FYc+U&(rEq@1bFKlhDVqGY'#iUph3N5iF`98b9(&-$19Lp`c$bH!@*'fP#bQB
1$3#*F0m'(@Ie*6jZ&fQedJMNqG1-h&@L#XhF$@`c!G9f$5YR&CF(3UV@r&Z%B1b
)RX,e6e6m&DV8i[Ab@52p-1kZS!mE`f5Vajc@+1Q8VIk@*IAdC55f4RaY,qF2b9A
1',ipVL(8eH@-EJiTFm(3[U``[**[H+8L%E,FmU8Ij,RqT0`1'rQd&@Vb!CX,q[I
2HThqfYrBFI8Ti5$5dZa(4CUJQ-kA4lVR(4SiHqIkfD&8c`S*M`-&[l+d*))C$I$
ard4qL',C-AJC#mK6p+#NKN9QYPm#j%pFP!X&3%*,L)AGfQeQ'BqAM+ckm5981dj
Q$MXZL4MXfU`6dSTiE0[J3E!r5!1#R1i-MIGc)06!YE3q2Z-b9dFLbMGULkRFCJ'
8qb"cGSklGUp&a,)X@Y*[6V$AcC@0A2Q*[Fj-Q-STRB0#rAjCH50p,('*%G3RA#-
f,j&'S[N9*irFPC+02Nm!9`J'U'JD-Fj!r&2[c)h'+jMS'$CD6f)e4SDUAA0q#5h
4X`4T(ZBbdmQGa!pAqL90B6pkN!$Uc(ml!QIA@4!(%#9@5K1HX!("2&1FQpiJrNV
CdYJ1f%K[VM[QjTCUJ-irC9YK$N6$p'pRT(,AFh$4l1Xp[)2"6M9UY)D)LD[ap+q
(9@#hbEeMDr`)ij)0V0RdX)1NZRVUC(jpNSZ4df1+[Q'alrpmrlY(cGYbXAYN9mc
Q262`cU9&eePQp)@1@5X,RS,cLR-#GL),eP#H549[![1[%%N0Q&'i(AE"pb1q#mr
Y2I'15SYRT$65VERjLLBfeUF+d+*SqCbE'N-PFAm1+Y&NGbm#d[VUMT01R`#)XmL
%``h+rZ)5d"9DZV3e#8ZEbH[%U)dj'h`l`a!r5V[C(lST!-C+XrQJIpeK9pYN,QG
'QB2VldfmL3P65aC2-`Z!J'@bGd,jJc,8D[X5qNHaP@H3!-MB"Ef"[!26Fk)''-G
3H19q2X#eFqm5N!#-$Z,'9TA'p9URM2'6892%)fPKP3*k4Np-"0hZDVbbNY6h4Np
i2hcK@ABp8+8TK`#5@MC*'fF2QLG8KLjMZ90Y%&L+6-jCEL8VTf%3cY2M(MYQ6p(
D([Gb-bPMTQD-m)3qhpD3!0H#fDD)jd+Xi%J16*MRQZ8NTT!![p8[1IG)aqSpqR4
arQLJ4[rhGdA6L`kYV4R`)r1mBX,BEajPlc!mLh%SpRqHhZpTA`@#6JCXJ&4KHbA
J)iJN*Vp@XpZNR1Dlp`lMi2Lf'XBPQaSNeIL9DUk+Y3i3DAl+01TDfmhUT`rHAa#
N18!ilpd#QJ6rhC)edZ)#X1R*RX,$qMZ28Jh4ajS+'a1TXmASi5X"pKGVl+)S@[H
iQdI*(AY+&'i"'f0CQk(ElrQc0J`GCDe[EPf'pFPPMPLbATk)2IEMaPVY9Vd[BA[
HjJTEK'[XX(e`[Y-MZUCK!ARchX-l)!H+"D%M#XibjJiE2H9&hmP*d[*C9KiGmdB
!["X-MGCiDfC,dP8lKlr@XiXHRT!!'R4rm1"K3c!NMjkEpRb`HC9A[%BM1YP2(`D
3!#$!mTBA-ElIq`b`Q[m8k1T'GA[UMbMpa*TZ'F[%4mNqELHeUC!!E8L!353Vhkb
X9E44Ih8-BCfj9mI$Q24[)qhN5Y0i42Ma)Q#f+--@!XLkQ9M#hNj84bJSMEj#X06
RTHiJa%jeY)d-9GZ6Q'e+F+ec'45*Q0!l["FQZe6V*D%4P(E,0*DPE"'$H"XfL24
5(DC'*0-rjm@bRAIpLr&Z0d1emQ9&YXaVLb+2da-PiE$Yed"PYD-E@JpGdiQj#'Z
hEd*6B&Q8D$"D5X$I[C&UHXhk+2h49p1jq8G*j'ASibI81'rEmhVBa,Qil-ZX0N5
q80E"lm95ei%`ZbG*SC93VrS%#%kL$*Vk3F)DSh848ThZr`qeG'-pKQPC-jYH#Ar
aNAVm3'QZrap01k4PU!)k5eTeJ&FH1d1KK"T11mP6a[aNM"0J2FCl"mSHp213!1H
#8%f#29lRA!hZJLh+i4C%LVhk9kccBS,XJ-6BYYNiY5b%ZLXE!V[,R!YIH9cU&*T
6QAH!"*Yfh3ZCDk%((-i*2B-$fQTdBb'-0%+SBFk$BG+,V!M!&N$41SMMp0r&f'#
@#fmL"(@XA1'KGNT[LhefZ-lj18Rdb+5Pbr#a9@B6a0fbalYCTMS+JGehjE0eNmf
3!-ASp"VrNc#"%-2)Zlr'rdCklb@JYaA)b9#%*m)eJ(CFQQJ`k-X66`''1q[4ef*
FmE"G$YI`M9Pj(ibSm&Sk-qK(Z2eSL0"6I&Lq)ZdUeV9`FGeZ,['$l1(r54(+#3#
DJLb9ieLSrH`bjhp*3DPRRkp1F&KCD@4iZFC$RaB-Ya8G9+h1D@E`*PJ)&"Z-IDd
lmJKXAXE)pIImIYP&P*LrMfBXI$S,'['U*&%CPZVk,1GiBPK`[D0MeNH5pj2Q9-i
JCcm+-I+A2Hk"#M)Tkm%qGP@X`bUJQ5&)36bL6#-L3!9FqQNk*Q-!6rN,lI),,r&
d,*e`K!`bQJ@Dk4MKj0'dD"+B4Ni&9N",'%3pYGP0d8NX[eqC+B`qBT'+qc8Pa8"
kb,YBfbF-Cp*pr[3P(Z"Y5p&6#`*cNHN@9rp@DVP8h"#q-rVCANe$ZeiVfbq3!#N
qU!lU$GrILjUNk@4q&HpM-,-KD'f3!!($Hk$"l))mkA&eYqC`Rj8XKQ!5SN1Ijki
+M,!3l1&El2T#XCCQQ@"TjGBbV!22P-,,-2j%M*BDpjlm5@!98B9NJr[caQp`c3"
Bb$dcRV686FUU5a-T,aYK"&FFpITRB![YYYXhb$QD3cL0CD`FVS&0YeE#d%UMKm-
q,iHC`pB&k'mf!F'KHc%N,DeLP`mASpYmZLMrCpZ+b5)If"P$1l8TSKi%"S3%d"`
bDI+)GK3SPjDpT!2If+GIC9ABccZ9QA`lCp9#Ji(arLhpl[GKPT6FKNVR5N,bCe2
kl-#&"&Yk+8CBXc$K$ipbAH6)FYIS4PT#BB[khXj2&rHI1`&D9LYmJZiJ9Mj2$ap
f[+8mi0GfHV`mp[U+d$e-aYd+5V%!DTLU1kbmpYKFa8iJ3(YCP9km"Pb%d"YXfL6
'!c(6+blPI-XqQd6-'"NDfe4+3YKP[HY&qkHm'dBiY*6HP@P'MkRIk'Yq!P@SDT0
mSa!0hmEMr!PVN!!,@ITU+GAh[Vp+9[VkSGjJ[`46d(N"S5pJl&I9Mc#06SD`'Ia
ZMTa0QSh%mbKTl'C2UX#G5KYd8pPp"p[FKE@)iZe$p#VjEI6R3#Y[Z$dCZ(2D@%R
k[,R3ZRV#fP9Nc`QqZlPMqhcC`'Lah"6eI&r`mkL0E5%[9,T!B3qhThrh24+C$UM
!SSqcV+*J5KVaVB1VlHIDm'J(p"I%%$Xb&[X$Z'A*H"hGjKq6$AS5#b4ZGrN1G+d
`QPTa53AUQXrMffPQmeak+iqfepR`Cm-i(L"Q2(dm$kmKHR5UA)9M'FLk)idMmLJ
#j@ep@TM#l6C-mZYl(JA[akqIZBqB$,@(N@qXhMK+0NpSUIiSMCL`@Mk0NAUhbjA
f)+cR4Pp-9X4%Adq5@JXDE'S9rNPe`a"+iC!!Kq5R#02IjeQ2+mPqkBKVmK6J6c8
Cq6)$#fEY)ITFM8kmfX[G9+#Gk1HBZ'(K-r239%["0U%"qB()N!!$[S+a%0-3S@#
(RJD!GL+d395F%E'Dq58*)HV%$ANK#V2+mEq1,,*#DXc9XD6!R#c'f*&r(pfk2`E
f$X,)$Ga*5b)Q2k5`Cbma'E$)$,)'f1)*bH2Zm(6q93TbdjEm2PLNd3AGhda6LYF
GhBLV[2Rq$Um[YY,4mflf1QfV%%(Kk45&0hR`IRTi)AJ[mYLGM0N2`5J")I(G,8I
kh0SkqDcaX-mG*%GNhVmNrZ9!ZJ`%X1am)5GV%@la+-P9j0''4DQAb%BHJ!JP9Af
Hm-UN[dM*T'QUkMAVRkkK#6"pb8`bVq9faYb5+8$V!95a#fiIET2hchJM*%$D%9a
1T``2kXAk#+ZK@*RbeeGqe'@`LDQ%@&V5jbU8F-H21fc,+ErGTkk8UU6-ZcLQECf
+h*b8P268dHX"0f4mIchIBqeQQUEDC@5!a)HV32`fdp[qU+XC1FdLicB9#`l0PjV
ZT*c$Y6#I@2-2Jl8)04!"(d$M!545jYB4DG[-&Sc$f'p#Q%PfTh*h1!VmE9Pf"G@
BKIZCX1-6eLf"`XfI-DYe6ZBc3`$)*3%QI"EGA)K)L*h8c@+Y0+(M$j-M8M@UN4S
PLN)P(,+9@E8c,Jpd5d#hM'#!XjdLDm[+"bb3!%1@*-iqrf)IQ53e8bMcJ5Gc'V$
Ab(hK2$m#,K%hS)@lE0LV@0$FA3[)jhDKIkPH6,#icIq45pG-"+@L2kk!lE"mSZ-
hF,D$`j'J$e6-j,LF"8%`Ud9kGkGrK51ZQP3)(-1+"Z4hVY`mQ*K+()5X"@hCL2P
4J6`Qbi#KQ61H*FIYQqHl1)eE&m['hfZJH,q"CqqIAMVLIA@cVaTCAQACNB1mP0Z
+Z*PkiD@0Z%BfPbLiEUB!53d2m9MBDG4SBF*'0@A9@$C-D,6U0,8RJa[eSdk,DQl
-,9K@ca)Q9aIRMMUII5p8()hI-ZKl,jcSYK#F8`mmFG`YmG"a0F3&S#&DER+mYe%
dKfLhrBd91pjQQqFbQL#Zlrp#26-I"6LE+qJhq`A4qe9#r5UpQD-&UMd6V9i,YMH
'9"L59Jd,j(h,EZXPU'P)diJPb3pC$JTPkD!dfUqQTqkJI4K[`4SFM0Eir)(("$m
kjJS,HKNBdR19VaIiBlKV5k`X%3Z2hl$[C$Fj5G250(1U$iDNqZNd0dG8#fb#q1e
,G`SpT*mkN!!2IZ2$3qV$*(A")+HZBUCQkR'cbBfr'mkG9EX`CQB[@XKVM4JNa')
`l[4h56%5,p)YT'jIJKRNRGRb3MH&4chb9P&32G,dU3*a@JPNJSNj2ITUTNYHjQI
!R#NE@%#!b&crCFPDl8"!fK8Z%(&k@[05lIV'l*JlJ$95@$G(,5ibB&Y(Z##!FmN
Y8k1a`*Y(`e&$iR)hDHf!1d"B"mrNY``X,MiV*E"H")$(B'a9#4hA-P%GjG&b"N[
daSXNHHBBFjU#TQB(c#EjE'$X6,E@80rVa'[V&p'fTZb)*-)G[)fc[+CaGe!%YED
R2Kjk@UX(BP+YFJ"G&lRb,G&80`)VXSG`L,"ZA'$kN!#Sfb"p0f+f,3b[6&R`2FP
KSpFYF3'3!)qVQSZaq2UKp9ZNG-DD&iY1*+XMPiIV@9Bl,[LY'Akp`J50')P)'dl
$&pT+FQcr"bG3*C!!pHf%0B#JHT1eRS&"BfATSA'[Pc411-F&6YmS2J)66-"54$j
%9pAI1"4TL-e%1dG'V,*H@FmX(Z(R`*5Z`L&YGDE*$X+qP&fN3jfKqGKFQ),YlmQ
5cAl"GD&*9X+$G3eZl84i(ba4N!"+m938k%!KQ,NkNQR0rPSPIkpH4rJS945m8C5
lhq0(4pKU-U-Yb$13!+*QT1YCS"q(0@kdf5"e"hDYk@q)U0@!PH"9Pi6+EGEQ(T[
@,H#b*q!N@KS0R,bbI+3LJdje8Je(p&,e'q&m%bGrTBIUF4c4q$b66aNYF*qG`l*
GcNd4qlp'L'I03PHc1&jr2dQqj$Y)lVTQbJ#XJ'bfKl'f2c#@6J&#DRRj+jaQGb6
JLi5+m!S'ar$Y2P(99-c)qCYX&Q804#D1mLkT8YbjjJ'MY$"Hbb%A'JQNNIA'Yjd
rUlJ,CHU6lqA9jLq02'TG!L'SK,MpVq9,!FhZC4bM04+A'TS!5p8L),[S&4iG`#J
p3qJ%4G&P&'-R!mYLmc0a(hkmIeBql(XI8U3YR,m(FFR%K4!fe,AXX9cUG2YlP'f
4ZDD2('4(KG3q8`'dG0a(aPaIYS!rJ9beAKGF%A3VelZ3!0l2F,L3!$j9'%QEX`d
95,UFbG23NHlJA$dk,6UI2!UL!CMRZjLCqp(ZNS8B%C!!Sm'!KKF(fiCiL9a+*Q&
-$A)5C*46hY$+ecXBd@UlEViESNFK#b5h3`)pDI!h##EqD-q1Sd5ecEkcVf9B-D,
Pi8hibYXkpp1[#"P+,-"Lhjl6BP#5Z&Ca@@HipDRLd&DLPdDFS9YSK@&2G,J1J[,
`f+1QBIXqJ@1rl6K06PH5b#aMIF2R#3$Xb[EXjk4Lpm`H',mXQ3DPBI+fq8Ae-RH
5,GLp,Z"+3&NeN6l4j900XXBmQ@("#5iMMQ(2iiK)NK)m-iD8YYGPX,RF(@BI[*i
Z80ajl$l&[1*ZaNa@-QQ6[d'mqJ2(X"0H#HH@1a$-e$-`r`Ml`MB*9)HNHDeAhb6
"%'XTU0jJaXa1,`Q2lqE[F2P@a&CrYV$$DZVA'ap`k*Xd!b8DUfS"SRTV4F@@Xif
S1VbAJTC&BrRe4r#Uek"ZS@-ci(0['H!E)jcM*NVk*Z*Y'QbJ3AJFdl61-G8IQ`9
8UKdE3UBb`ZlMC$[pU(1p*S5cr%IlKrfqKKb,dSpQR2'r"k)eT5"5ZI1"8d[IUT1
fAh'"(',p"af!"$f#aGmLB)9ja&8rTHM6DqBkI!K@EYbXGJD8*k@hIJqYjhV,B8@
5LVCF6!p[3Q2,``8k5)Eij6#fZ*02A5@A'dD)m*jkZSl[F$A`,i5&e06bBCaU)L2
T"DKpM"K9TKbJHi9[6l6ma2J9S1'`kKRm*[Y8D+r5E,`+qh+K)9J%fS#mrjC8K%F
))R8G85@Uk16f4akl1Q0kD`GBJb+-H6,ChpZ6&6213FF+`ZcT2qb@fB5ijfT"P,@
TmbMNkZ[HkQ-2eq51cleaq@+4fIkBI!`fVSpI%2&!$j5*pq3&8h"I@Cdq34i(B!U
6jN8%hrR&K9+*Si"&NYS,R5rbF"'NrI3'XM&lGYLNK9eP8Q#Fp-%m(e[59I,MJ"Q
#rLh0(IM%f)Jh&6%FJ"%h$-ZK@`j&'`UQZq1Bp`)-dY,A$mj(&dF2q2RXBmElVfM
UKRI5-$c1VKK,#*&+Br+q[j!!'pCFeY8d'e2K*DQU59p#Aq"3R$EL-fT2$hp#24`
Y&N6JG2Z3!)"rfX2pYG2F9Y2eb`E`5N0FES,-+899mQI4#0D9%Up[hNG2i"(VLK"
N9+Zim52-`!h2!JemTUd[`XSM@fp6"83[S*cSk1iaU%T4j&,9UHK4[LQ8[(Ii4c"
(YAP8![U#3jJ@'k1''38qZ$IkrSq+#,pKP2FX2Vd3TZ,'2N*bk,RqM*Z8"b@#*Bj
PrTj6YL(3TI"3NNflM%'H'5prC-)3j-a!#(aG8"Rb@DR[-h'%38RI+@FUVL%,b0I
!UpAr1L'2Mcm[`#L3!,$5PTeeJl0YQ4LL26C[LJ9f))pmaAL!CJHKC&i6VUZEFR4
*Yc$aZR8#qTP#2E!k&jNVMeT'pP)%1bVb3C`Ym&9l95Mh&$)YXUSB%kGP@LCadLL
`P*C0PZ+0-5M@im#0T'cj`reYdfl6RqVATq4+R,Z0%)[-0$ah#`[$P&Y"*mTFTbq
ZEKA&jaS2PN0d[-%)N4JR[bmB6Z)1k6Q$Mb8c-`Q)2#cF(E&Zr*)V&Ce4i+,AQh5
pY9%p35',P!HC0[Qe`bpZe5i(*%%Y(BL)R'GF3IPpVRmG'Y)U30hL4!mZH284fpM
k`GYp415$*@GA$DT@3'CjhFd,MkIjG0U&DdUc2bpF4`hRmSYl3$6#PNm8D$)B*"`
3HU%*GmK"RF'VG8NVX621,+N@X5[qFF"'FJe4(I5iJXjFVLV&[mE,jJVV@4jTB)c
C'LGS3l&JNpd!3i&QD9VPGfBA!FHGNdSJ6cL9dMf6GhEA)QGF+lYpMR,0ET5,UCN
L5(U+Edmq0lL`k!QEQMUa8J1+Qc[[Qh*#2$hA@J$8f1fSI,HDrT3LJ[*1$LK2+-%
4Q48N&23+rBTJXdFbNT!!Xkh,iSUA*CFR*U2)4@$!%RPD%pjC+ACb*'maCEllSEf
CkLZl,Bk-K#,T2j434HNpbY!CV%"RHE#Q6#$N)&N#RM2%,B"CXmQp`RbDcS5ZAp1
GbA@qTrC6e2!Q6jp5LYTl,V4m9FAH"D(EEYFkeY6!X422NPr1@M"I38(T4[HR*G)
Nk+&iY1i"iD%)0mi(1I8@)92c#9IQ-'9'2V$%NXEM@!&Y+kj9`I-meBT@RjYAj*j
M)L&V&1GRP`2`[Kj9$hELl("9qF4i'hS5l"&94em@er9#XDNC8Q4QNmjrAKP9HcH
Ud)9M6JilQ@#U908kZcMb+6CX8V&-G2l42aRH+fNB,1BqC6b5LFE1hADKU-V[Y+8
Y05,imSTlMTU6JE16CS@MEXph9))R51L!URH%C#EICbh6%cTrI'l,p+6,&Ucldc4
'`a*Z@2q%8SaQS)EPaqXc!leRClF#f%22c*G8J5A6e*1RrSM`Er0D9'h'9YNd3dC
KKq6k#iNrdKHN`T!!8L%8dB$HcJhV"cV5e+0h$[iLhNE%R0VLJhL+#3,IeAl8XQk
Kjkl34ECKic@D4l#fISb[3iTP9V-HfTM$3#i12m[53iab9"hCMFaFp#Mq"-b,B1f
`Z9L1GZ0mqLme9de-U)"TPEV",8K,KTM4eIC$#'c[YiF`1ITN'TAVYD#6Yd"'lL+
0G9fS,Q!PVa0XIiaT-VLU0V,!VEQ85T6T1,TEB@5he$GkRBJamGMJrJa8T!UKKqG
IEKI'dGq(E-!8I(iXJ"SFGK(b`AX[efldY*VPJXkdCQFpLRedL+'#E$DB%&cQl9c
f9Tk2E4-I1(b%(VmlaS*XhkR6MaAJUp9&b5%mjf*lhZR[Ni'$A%SA1SSDa5T&4U9
$CIi!mR#XBJpeHaea#D"3cJ8KB&MXNpbA6EQa34hKY6d"B`hPA4FCP1CFADJS)D[
C+)G[#kP)*X[`KC1h[M)iH%Ahri36jd@PCiTjdSNi[VZh@(@r*qZ,@P6S!"%YN81
kB"TBI&jGGJ2elUB(LlX0H`*3M!1,S5GHl2[9RRJ`@YpPQelZFSAH-Gq&*'"-@A'
AG-19R*+Sd+qJki6,Zrd,[9'YkemTK%-6aTbQU(k9+hI9%I+#(dA[RQ1FeY+44%i
K6XISebDbl$KL"rQSQQ(j0VLl@D9+3S)Q6Rb"6[@$`AQr)JR980%i`5Xq,)%056D
m"6'26C!!(`ZC*BNe@MpQ'LA&K+r0[C!!3kFK9qS*9bAXh0Dc"4H*Vh1+Jp[2J,a
(DreL4[TUicGI$$"0NDZD4&hYrDVNS9KG402!MXD-5F#flmCEB*@S#B@P!PB+(b!
XQLqA(f6IH'8AF5GMD98eEJ'-F11SMcJf*Ta6K'k+H8++ITRp6T+!Vk!!KBb($4E
Y'aZ4J4lF6$qD,U#bI%*'"LX3(lAiCZLCSA%eUS6djfGl-,@ZR#Tm&h-YXTlL+@"
YDj*5Y()rR%Y&DY%bh59#DT)jpEK46lP8AE!9RZARpP$UqfHB(3Zc2XM5F8k!X2N
PZ48ReHmZD#Y4L-NDB$+[#`1`BleG1a"30KN1HrFXS@dYqe(Z)Ge%ZRHf3i1Tlh'
IJaiX8RGl"&i)!,b0iSamd2XJ![AaX@`,TVT+a3f4aJ$3bRT1Re+aCF(%G,MPbBp
Pd6aRpHEBX'1S3*'DEE%H+&MI2iCal*H#Z3`QRC[")RN2K9jNFVTF,Ir5&[CNa2b
mm8UrAI5PBJ'IaEI4f8U1-)PG8&mRDT4MVR4dD3H489r`N!#TiA5m%R6#!9"Q5p`
GGADdJc4RpA'd)NP[m9bVPV`T@b12CbM*k@j&p3p)dK3$D[a6+BjZ"6cd0p8bKFk
6)03LIZrq8%(iL"!HKHBP2S@ZEe4J#L'9r0CJ,aFNE(L0Cl`(@YYH*CQE@jKXPi-
8`d3[BPCQ'YKPj[qh()0qMPDVlNm1@)6(GbQ'apHq+)EU$4a5XahVdjfpQlej"l!
TUa!`I#XB&QVi'I9c0jT3hKqKje"0"QZ8j2pYB5pRP"`#4-J,-35AMYj9dV)60Z,
%ee'Y*rQG2L8#&44Y)`LLi4%@N!$DTB0+N!#8Bi%BPU3CYih0`9iRCeFV9k9f#4c
ZGD#1M6kAdJ(1!bLF`C!!J!k[jNZpBkSYmmK,-0Zcf,YdKT!!0h[C%b+6S@I(FUU
Q6*5'IPj+dQhb0YDYjL0%l$[FE-5E+L4*[4PA6BMDjbd(D*A!c!%[qF9eL56R6V*
+2LR[pq8KQfZpH!RV1hk6T"[1RB1$LcU%!`m3ib`2@9iQ3f8@&hYTX)c&9DJ*L5M
mZTeQKVLdAY`Em'8-l[IF0GcSAER-32H*3jKQ"Bp32@q4)XQrFBZ9qied$kFG1p6
S-aAB%$&HSk5Nr,Z@HlHE3i-$r6h+-Ier6AcRA)R)mjLd90'@hZ%QJ#T'5&C3Dl4
03'DeS4B1FT@rq#'e+8CkY[TV6XG1NG"M@FMXeBB@`'AX(RJZNk-94"NL)C@rJ)K
2+Ul6DrSTV@&jB'B$B0!A2l0EhDPJLLTQ3[[34'XSHD2YQa@3!"jd@P1Fe"bc4Ji
%)9$c`#Xl4b5"FT9VDeq41rbCaDAj%e0T+5Z(!MX6D6Y-1U8Aq[DN"hc5SK9@R(I
9dmbf0"RBciIN,`bbTMJE'BJXjj!!UUIKfT[c88rjFd*(0*c(F)rR!GM9,F2erE!
+`+GCTFr2YXdaCH'8B-[RSr6C!Q6D8N4PSNJ8HGQ)FI`))Q4f9R"@D30UXXkmk'e
Fph@9qZrTMBbeJ8DBJ1ZJlh1R))VK#aT$T6UmcU$D-HUQiCd#jqekaDN"#5+h63X
KfV'9TI,@i1cX#NmpR)(1#*-AEB@f0GQV@@f%c(`K61#EPX(j)1ir4N3UrYbD6)"
RSp(*,J2aYea#Kj-Q3AJ3q1Lkb@Vjr8p"+I%R51h#BLNRe!P&2i!LEB3r1ZMRZrF
X[dXej6P+F!YTi3N68li8IFpDDh)',AILS-rDj482jh[bP#JqE%Eb5dXHa'(`6D'
18d%&pSfaPL-Q!5Ti5cUr-5f5rC36B9GBrl`&%*55)!Q1KheL"`R&Ed"6T$D8UES
SHG3[bAI5,i0h1i"*NAZ,3,Q8%G*[J-,3*8L3!&9-P!0M0heDFKArRjq+6!APAV5
)c9@aT($VBka)[d#!(1!Np8mrJAMDqMV+m-K0)ZP2EKL-C)#FEqj`)S4fIf(TT#I
N6Q8q@$X2AbJ(N!$q[l1DZ!fXb(J(3H$fP9r,GSKTr,IEi4"p-i(,6YlpL3"'r)@
)*VbLCFVil6K[Km(r#`(ka*,1Ia,0RQ`PXb(C8ReJe@,dS`@ed1rlTq,2E[%*X0J
26TGC#XZmAY%3XS9dH8)68d$GfG)H1%r'RSb"5HHM0$+rQT9U,LS1JJQ6-8a%&K`
A!PJFN@Q`KqU2`1)V@1&c@)@488ZkM@biX%)`'+%K,#6fb3hcIDK8c%-06A"6!"0
j8+1!"'%mDmDkhNjcFrLc4ZbA&Dqr%rS'fjmhB9pGNBliVZ3@m$aRF&jD+rY88p6
16SJqNXM)4CXBMNFifHAXCN3b@VFm&$[dYp+ie'HZ#0A&!TN4Fr2d`#pq``5[BC!
![L&pbAJc2FZ3!1dB)9`N,Il-+j&"SpB1MQb[!IS"hLqeU$ApD%3k5XS5hHhk-&f
kcLC0%C4&(Z(IQ80M8TM-+HNH'J$cL1pSVdJa$SZ-E(iY%ddN`J40V"MT%%$92%H
RD@i[cP04UPQ*H!aP'l$q[4LmY6KN#,i%fIlR5Q&r`'@@$p)AhkRkf'5,icBKJC%
6hc5"Z#BFr3h)VND443EV'F*HESF8Lmdi`04Z)FF!m4%Z#0DTR%5l6bc&+Dpr$++
$d&H(!`99689!JQ&K%,j#h30Z5Ad+ScLYElYPd0PmUlbX1((eBT`%pd1%i+B*aTf
"9'6YJELiZ"4aJfl@jdGK1AX[$D`208`&hZKmGRi1Q'DN$e#V@YMZl2$+qS8I`&A
&Pej268fa!pBNAC8r"0rVB*,QBrIFd-LZdf`R&hFc*$-%cRBGkMfr8FQb1Ji$NR@
aKIGVVKD)PAMN(Gh-4(bhqk#mU,'Y,K9i#XT**6qb-(*FFrG@+e,l&(-&!AF,H2,
KY2YJEDVdjhITZG[lb2C6(P59Z'dM%BUFfE"lJ%-TeK4a`-hc!*-TcN)M+XCTF3N
AJKl3pEHl*'+DT,VKN!#mGZMbFNR%@53Y[mY#9m+Z1)bB3fZFmcahBl*13C+UE[F
M9CMb8QeAk4Zc6FKdN!#,fRjkBImD3T[-BNVPlffE$TA+QMf6KFZZ!$HLm!@dM6B
"S2FH6F#CP5$hGjR)PM2K-'C)HR`aTM&BTAGJSKD1f3%*S%8h34eUJhVUc&MG8hi
([ilELQ21SKK(-p&dbK5$jRH"rm(EQ$Z5qYEr9YX)H,P,ka&&+0&%f4VIl'BK"a5
h,ri*[,&$4"PNBQH4&PR,(-A+-B'GRjmD$X"KKTZA%-PM8K1rqBpa'1'J`c5'Yfr
jVq(q#Bkm'8k3!#Zq*Yr03B3(%ZrDA'-6i3pfNkT-XZ(1mQ#d1T!!KRILY'lfXrB
4d&aCF4aMrTP[4a,R9Ce$ffPPi6!DHGelUIF0jHH[r`&86TXGEr#JSK`c9P#3!*A
&Z9aGPC!!FLM,M)-54!*%QamF0K!0k6qhi6DbZ)NPl""KB4m)d'lG%plEl[MRCB&
SRMXl2Dhj6Z+r(Kraf-T6R++60LpZM,E+@@qQ3LHSf#Ki$!'(+1AXT#"'(N+f)bb
-BX(Epi2[ZX3%%54mC#[0Uce"S3pSiPPT8R&'mFA`hdbK6Rbd@XJJ4TXYGiDdYY$
'D*dJTlfHhMbaV9P3YJPkRhM&6I-FL"HfZR'-RKUSZHST3%95f-)E-E91Xk4IDCa
dC@j``"KcqmfP$V!C$aad19("42JP!YRGcM5kmbp6hTEII,F2)'1Z"!%QXhIYLh9
P!pZFLeGC@NXQKi4'"m4cbjaC9,-EfYX9hKR5S!3NXJaeDq*$+*J'A'(E6@$1Mer
k4`Ze@Ep,eN"r#S'YjZ5RbB@SJU4@bcNQ$&f1J"efQQp$PZISp&"e[G,0C02hR,)
J0qYp11kXNl,DdZ)qba1#H*bb'r`heZdh'#h#Hf48PMT"FlNRjEq+Di195P,lqpT
)9!*dGkCAmU,FA"FlkNACpV6Fj$`4b#$K-BI@[,-A[N)ad$EHrcU`)2'%X#epf`C
aP69*'`ZEmUc4QGKB5XBTUUkaS'Dj4dK21AVTf4RdhIHLE#$Pc8,PN4R5,2kXB+j
*NZ@EJbCA*6Hc#r%D@N@iUFmp2AQfqGcF[iq2HBDrf[k2i5FZ%m-4EFl*"Z6&Pb9
-!UQT15f!%b6B`%$CqFPqFAc(Z'Z&RNjV)'RA9BR#%3&39jqAeq[,M`V&X(rf&jY
DQ(H`d2E*+Ap(LF6)!rlk1I#MeT3!'84"N!"`9GaY"dKIIMaU)JdKa'F#GGqK!1d
8C[VbGrYTK5-1iA`%X4dV*qLqbM("EkQLUc2AX"-@T8UdA@2@qXh+b'V4FBDA2i$
q%9H1Udc(V$D!L,`+kHUXlNi@$XP+'I`lGR6L'2CKMDlQ&%)XhYh$SQl[3jcT553
ilpmqNUJY[V+hIjPJmL94E'%X)*DHa(b@-UQYGGfS$1P""YJ669G%4)CC+iT%%9H
AJ$)Cma',cc[FLA*e(,,9Jeed)R`Z3!0QZDCY2(RD9hRVD4*a[9$DL%6k"deKc"&
EpUbKc!IpkZ"BK2@29"1S)VHN`dlMNmrLFb@qqSI,FEib9ZLSe838eZEcheA4Z8B
23ET,Ca6FLE0lT4Mre'S)#KSmVHpGJDBSEeIHPI-Spa2"&R`M'J+8h%$M*RQN)r,
HMdr5R'Ck0'SBQ%JJqN(5HDRqXd&L#$NTbcX2hq'4KFG$NF2YfXG1kTDDVH#c##e
I2ZQZ*bK(4M!eBXkm![42hTHTDkjKeq@2KN#Q5e*R%L+h-p9TEI4k49'EZ)#LLKP
0BK0L!5-QbS60ae)aEG@2RVfc6'J4Ui2-Y1e[qLG2C@C#b35E!Va2e`I"*@rS"I5
p8kpGUC,TF5XNle3Nk$b5AJRk3`m9K8(6m,T@B@bCb*f2LX59RAbJ)[V%BcX*c$N
[6G2qSMA"!KKMm2GNP'b8M@6S%3BCb069YE@8S[q'"kQ,lq[A"i@2(9bA6f6i9$P
ak$-(5AGE1EeGpYPJm90qE,kKlL)b*RCkPrVlqX'1*DM6fG#eT9aXKG)QC`8q+f-
$c*Ma!T!!cRiZ1YYHiZGlp%2U)De!%I$eA[29U1@9"C&&KaVdQ@`h&Q9!'L'"Ri9
(BLCiGlE"h@C`"$mSZ2Z1%iKUHJ-NDHdSmR`Brd41S'*E"*ediP6PBLjkm1lC&&T
F+140(&4R&&m5("8bDl%V)*8Iqb`9r2P)Ha(9fY%&2*,@8DrdF6r6''ce*TiNcmP
RZjNTL-d5+qVV#PNN3",fVaN2%)Z+Lr&$fRI'$`a@8C)c0AD$-BDG@YfBCZMJ"q5
(2T1QX`hE3!i!eV9-NfpKjQ99T0RB9cGPLE*60Fa53*h@MhAM&qd'+JFqfATRG[k
0(c(82FLfhQX9@Ue%kUS+26e#U,%9E@C`KSND3(%ZT2RaiYC@2m9YDAX&%jlV@ak
%Gi$cJi-Td(MNpjU)m@S%[ZcFYeS4*)TRl`e`B16aBN$Bed'P$"'1#fhA(!V0ib#
T)5*MZ''amJeP!p60p0I&PQqPGSbeQ9GX52b`CIYITSmp``TJ[(a5Q'YdqB1f(Er
kd*,K*5)0-f,2CSZE[r+PLc2Gd9b6NAkr(3%J*l'#8BT0N8!l"5*,VLSGdQB(aKc
3Xapd'he(hjILKrl-T`6V05Y4lTbYYF-8#2"*PFCb`)fNAlbI4m2k'SLJESYBCGF
5`0&mbUaVa0l+RP%I6,MT%4Q!GQLhfNSTH&9MGle+qrUm528![rDFPUHrqrEjbCd
DIm8ZbJI)U$fQhp@Sj-N1HC*G6kb!+dT&)KAY"ZLh)6pVV[8(S&mDal9pK4I8XiL
55cP')b108!!ZJMF,"fl49lQ#j+[GM3KCmS)ANUX@e[THT([bpA%i`+k9A!,mpTp
N*0ZE9G@dI`ZpP(YMR'Z3!!9!H**5KN1@(9IbefmKLXaMI2C$(k@H`b(JfAS++mR
jJR8-4Tc[p$1%c"f+$aTpm9(,lY)S`&%1Yqej$&GL+1(%AR0(,hpe0fm"Id'jTle
YeB%(3'K@-Irf&F21cj4LL2,kkr"E,MNhP3!D+l,ef+6d+c1pLBiAYrl0&Ta4R,B
Y!JViqe2)L,kl+05K+0-%)EEkP-iD*)2'M#'XDLB`b"%k'IUYMADbqX,VeSa9hZU
+SiCAdDaYIkB*$i2','%N0rp#kjHBcL#SQNJT#,,DRc2!(Z)#L'ZDTPVU"&'VP##
BZS#cha")fC@rjQeIf%Y5X$bTDZiVGBa@jISq([,E@q!"!N%SCrP+3PeA[[4+F28
$ATJU2MKqiEHijpHE4$Gl!&baCVS!K@ZHJK65i'pY-"`JffLf(+$+"pFP(`"cF+[
k3VU4l25AS9A,cNTh2hI*BcCZ9$pErKf`#(k4q+eUfJ1L6U0P,",rd$X!"5Z&3)3
fep-V6Clp9B2!NM&r#JMT1`d-4Qd+!KJkLI*cC+mbiaAEYPp'r'GYC"D[&I)i26B
f[qKJr"8[GFMlH2dQUC+I$Cjq5Qkp#FV#``*j@2`9qCFdijT$dHZmdJQl""KNImL
-jC'@jKFL-JhfpU)`M(4J6&RhR1SZ&`mVNK9&r6qICcRmelG+rQ2ra@11I49[`49
q@$Ja)%&'qVC+F&N1R[U[!3D@!a[q%'5)bL+L18m#BX&2e(lU"9a1+'(NB3e&ml6
L$6fb'6[B6fJmE)b*9M(64-3LZ"kXbkY1!p%56NdQ)Cm&hRTE@FVLDU"U8G[bQ1d
S*8T80A%jXXb4MbH[(Ke9If8bRrf6N!#[(m[h`c9IF+mUSdQA$SHD9!rLK!KJMBQ
-0340HE%)""V)h*)+%XK9+m5dbj)4[0M8Ji)B#GbDhCLhrcSh0KaN3i2cbekGVC9
(&4N5!ba!Z9Cf1C,+"36&3HpY,Hm#FjBT8EJb1-BLMef*5XL'i+9k'fIVG[1!U6'
lblj5f$bq2E8Yd[I5M8e4r58j((K6!N!+%lX`Ta8F"jAi4UpbTl(SpAqlF0kES5e
$Q&EHjYrSrrE1+eF%G*,[hBLpFrJ3969j48)3U*e!qXBiBXEbKMJ4kLG0e)#aAEF
S#$`a[$`q#)p(ZE'BhX+'ZcdB65aIAkLmZ[$U[05l$pK2NmMF%qf5+PPl'hAeL6I
'jYkN9)Z"PL3MKi!5'l%3(P5SXb'$LJJ+YU(QCZ[k(LD$bkkdhNPNdeYLZqA9qCq
a`%J"e3fh0Zlj#kG,lV0JV!e3pP8RSYIP4DFTNJFUL)#M(#l8dmX%L`J5bT0)+cc
68cV%Zj(f[l)#H`DjRYEZ+mm83&$Z+UQr3'qTl(JR*aE'E8GQX)k0$hhqjQ2+d)P
EPE'AC*p2"C2V)6BrSD5FYSGF%0f,C*L&cQGSVPAN54&'j1U*335N3I0rcirc[+b
$*l1EVfF(5hr40P-FqY)'i5"EHc@%A`hk[1Q"Plc'rY",,F2m#D6+ZV+Q,Qa*!+T
$2liYa9+)F6c2BGpBF4RGiqDSe,843I-m12cZZrrCTbZSkIQ'4F[H5!C$2DIDqA5
(Lb#`pk1!je@RV(24Lq*N9lV+F'JaE@8!JfVb8!IhR$*'hd8aifYIek6*FS[-1dr
R5"34!Z2MTrTR`,R99CREQ@Jm"6E9R(*+UK3JT6Gar(NMkKf8e9-SkLQ5Q1QSqd6
$FDi5S$NVC&Y'Dh-D[52C$L3$cdcl59U2Y&XLQbmmCq1bAELM8K@eQ$Lk9cMVq0K
D")@#@@iLSY`A1XUecaDH6bJAlmJ*0"Z5C,5fB%#U*&d6HeL(M`mMpR9T3m$mTr-
CMDkeF,3cR2a%AZC*Fh"Xa[U00Ga@rV&)hIB$'[[fP(XN+&PMkYfV9fHS4IdCGBd
abV(lG!FGiRedfc@m)!r,aGmX`+1hHiQTmR-[DP"pPDD,LV9*#jY0K[Y$fZG9+0V
*!&RlqPr$J2I)Y6`"9$XGc9T)6-)[@jQ2J*H!VCE@XmSJGlB[m8#pfhk&M1##++Y
BcfHU@$"KbFD!L!l*6bc'ik4,KDK@64%8,@R((2%8Fl!,9B4a0qMGGH#ie5M[%1+
Ae@4`a0NN#'-JTKH(L@"c89+a#1Gf1b(1C1!B0XkjKXe8RaTr9N-*((3XX,Cl++#
e1EFY"!#hif"eHJ3HEVlccE+qTrk,M$#3!%+5`"P#"+AcQMffqfhVZ,YT56$)AeC
,E"ND5eNGBa&)c#R,KQ6-kEC"G-k,!882!e,@4[4Q1`%Y(Fd#5HGZ`P9G&MNG-#4
VNq&,4(9Ac&IH$LFRj(IPNZIH,R(`KCiNF4HeeASQ2!p!dJ3+LKbDp3D&K,UmQ2C
-ldqIYAb!"Th@&AfSk,Jbfejmq*!!G0FJ+'9+@Q2Q0p!X6p,1`[EjEm$3G!fc*iI
[ZULfZAVYefB"6Heq5Z(VVTDRI-&9,"$bXLF1AiYR%Vq`0H'FePBH*RmSm"@,bCD
b!XiQ8B5)&!$Rl$dRMrSXdpQ0ZmD`8&UQVf)$49U$$`R[YbS85)S+(+4"b!JmQSU
5QFch!JeTE!R-hiV5NH!qEep3M0LfQ0f![0`-JSPj*iL"NmmD(eE%Ck1b`-'HQ63
",YiRR,VQCcTLfDA&,[L+900)@0N8N!#f1+bFPH%aPEilEU)XBAUe['%TZfJ$Dbd
M[mLSk+[kmJ,F(b'f+kcGG2(N,0*9%L*mG9)kF8q1e54lFNa%NHZjjmC5%RhAUQF
Rm[p*p,L65*0F`9&H%Y)Va0BJi9,Yre@qU61%PMKR!J,@@S4k`X1Q9MK(800jqHA
jQCKc8['IC(Z@4rCiND25%c3J"p5bPGamC,e6I9DZdV''IT`NjYF-$4,TrmJpY@4
-U-U5XLFdPkilRfJIEVDMlXeL(j&fSY0D00Sb2(%J'!V)-"TKDFrL4@@A%D2D&'9
,*r9K$d)a8HHd9hA(33@SF+BX'!BIYDV)Ti)8ZRbR@#)lbYY51A`6c40hM3-6*-9
Pfk`0q596+3QGRF$H-@K@9i4)%ec3m-bEJb@'qRMSA-am[ZX%3)rI$Qc&#GL[r)S
iif+KX$#l-G))IeKkB*qh(I+Y9UdiM$qa)T!!CATp3''f%0YVHArUbdCr5F[BkG!
FdlM,D@,6c,FRLAX*JGcMU&fA8UJi8Ld@dJ(*Q!qEM,aG@a3A"d*VR8)H#U0KMKD
%(49#5MbbKTfHjjFmHee`cAfZ%B-C#%8&&)@kV,PEdV*T6ePU`R1+qlI##*RY*Ib
mpD3Q%-#0$5PF3!a@[8DVhfF$-&i6@9XHmXF0BUF&YCckMm@K1mY+Zm%*0(Pkppa
I&a*G3rb#EjH3!$&A(!)'+E[AdhkDYKX&4#%qNUHQB9D$AQk#$KY'LI!H%D9$XqF
ce'j`I(J,ph(ddNf0Bd94m4'PiAh*L$(im0&,MB"2,*bX4LN&hh*lli`#39iX&LS
pH,9VT'E9@f[b,)SBcqi*4LBj#0f5LcaJMSAKk@+LEU8qQ3E$V'Pph[U$3qXmK8!
Ykkar`k(cM0A1YFT6d[6G*4fTcK%YA'9RaXaYNVhrHi0FFH9(El#djb!aj,*FYYb
0-biJKZU4TTqE1EYXPmYa5R&X,,5h8jXU"*DFm@j$#ZRhC&J"RJ+LiN@IJmBmkb#
ZJk3++j!!V[4f-,RTE+rARURA$Pmbq82Q"NQERik"aT!!PjDHIbrHUYTUkEmKG&Z
V+FLbMi+UCX'*@B0[bVpkjb%aKfA#iIJj"IXc,8D3!#$kIDE*Ra(S5IF3dMKkZYd
ejDiHd3Qkcaqm#Q%jeC+EJHF4diX#KE8ZXm6b[[(XT!R"a)RJ-$bF6ZE%HXKMRqM
LEl`qJ!ZrrTV$LP2E''*1j*XM%Srl,C!!,Ci01$lHr'2PNX#,51K5C``Dha-JCNq
-Y65N5H"NjLRbPYqN%0Rl5IEll-,0XG+c4ef88@#VVqj(lc[a`D'0%'YYme'H-#K
JY)+P!,jL3`U#riA-@1(hUQ6H+ia5C1F,Q"YKN!$L,hGf`c0I6X'%LlBY1U9AlAh
Yqb#``l-TTX`a$3Nf($MVPe3"VUG(G!Tk'2Y,hDa6Pep8f(BNq-c&%h`j,66Y+4%
N8S86"eh,[h&LqjRQi%Y`UC'h5CMr`jf6$F!Kl,l&4krJk@RSNZFeAYl[a%$pp5B
bBaHM6Pq12*QH(P0K20DdB@FEkGE%!lE[jFpG66cfX'pMjljpMY@6EkT`89ejcHV
8pa(jRLH+4d8eSUUMEUG3SSlDJp5(cF3m!qVeLr4k%bm@[ZN&BVbB[3GR"T8dMNq
iV!+eG+4QBR%(5ma5%``(1N1Z$TK+Ffj*5T(%S4Ze`i%YGTQQbbG+8hb&XSLF0CD
`5(I,43,kA4dBH![cbb2ZDi#LeDQrhYTc+@PXX1#-fJPZB1bk8(UIa#Y-crdXSS'
6M6M2(aJ()*+@$b)prNNAP))GEp`hr9j"9JIlP!R#QeT14)pR!pY@ILPqr8rKmcb
Mh5da@D"c-GEiUhcZ+i$2i@-)*mC'MQ`i+deSA5qUL&R(0!iKQaJTa#Raj3M+P$0
0(Vb%EI''XRTNeDiNU+XSX-YjHqk@69b8*ik`@SH(G`0k&iH@U4ip2`4'j*!!@eZ
EE%+MTFY1idVBULDm)I-(dDb*b&%pJSRPR#rcmZk6LdY!`!j@J8ALVm1#,SY6UVM
aG4FH1[E!KKG1GB44+Ni+U!F'XF@TSPjeE$(*qLa!fBBEQVUdP-r0(mAl@I#Ma[J
Q2FI0F4ZEj(mHPSkQ#e)lb*ibf&jJR#bml`-al+VF5Jh4r3jHqmPe'@!b,VLh,c$
BCiE6A%E6H9dGE@f68)r`UH&,+&CS"Q%a5S'H2mMTF%+UUJh`TeG1M@NS,8MbVaV
F(`MK%,D11GQ9D-S3U%&eh(N@8PiApQjEHb!THfJ!S[!3SVCNIa'6[M1X2h%k38f
TXfD(PAm*a&GPBIN(H)JVm1klc,KCY!S,&!Cbq'#YCPkJ#G*h'8&%H(eU@&VpVNE
qN4AGa%LbliY+H"*Bad)X*IjC)#D)Y3c'Bb0H$ERCrN6`8J1e#KlP`laK+,aQ@1(
cTa@[6I+j#N&eclZaJJD,6c#,JcASNJRh!dBcK)e-TIXbEHj`khkq5F0(!C@kfN1
BM`"'J$Ph*VhDF&hLic$R1k&T[&5[C`'cEG`lPiKrNH3G*ET%V`Q3!*3XN4bECNL
R!FK2!'L+*pH)P,(FF2l*8"61@0&S5")$S6B4X5TX(5XQCAHa!IK%Rp,aI3LS3EE
+%eHCS99QClqd9bMY&N4qH+5+!brl"rje)BTJZ-U(&@,"8jm%DPAH4pAN6D9-C@p
3NG8HR"*F`pjYrSEPBibejCP-Q`M@pSR5k*'kq)4X,)H6a4iiRRTe2!G[p4(mX6"
UGd-@1cR(jDZH*+SpG4m%ZbA'a13,KKjerBJ+Zerj-Sd-p%F4q[m%dPU#"dmDN@3
GYU-2(2&dr$GY@j0&l4C"D4DB3arK&Y)'DM*RJRmi1VLL#4Nj21G`'@X$2KPFJ+1
3!,iX1l6QlTchFi&m"$8G3-chc2'Lc*Q#,5pFB9&Rbj'S%$UR`$m$NRAe&1(RFjr
iG`K##8qi0(aMIfKHQU2C'm5+4,@T(UC-m,FZ#XjLl%kN&6+$2b38jD[rJUII&(D
TlEapibG4(MTSkeUEB5[&AebY"YEPf2FJSE)b$Upb9pfk9LBe2""NCDD3!(J4Kf3
l2a,fcF0#FV86EV6f11,FmKFkNi%V40a-@5Ie9XTqd8NGfb&C,fH92H-'5!I1Lrb
NPkb,FEQAYaGN6-"ae8[HX-mUGh(Sp3r@mM'DS(-,bamFYcG#[Pid$6#pIA,faaT
320m+UFRPhr5GP88+Te#X1i5i+0'Ja`KX(m*MlVF3JM8Q8Mh$C`Fb+Bi)J@hYR-L
G08p6a`1r,9qq6rYHbJj*9Z8&eG,%M'DqTYVF!JckpNTeMhEiK$AepSF"h1UC@q-
P)h96a`rI3ZZTJ)YJkHL%F6f)%#&ZD!3RkSXhXIeNZB@bLZMEAK&2&-Q[@4#hFFX
`+A5$LE%SJjIESX--Ci[bdM2lqNSj@@T'bLJ0+)lcUdjUV$&*EMFmB+1Q,E5U5Kq
NNKKh"U6,r!Q#+9V@Xab3!1`&k'95QEeYZM)Ga28"302'cd,[f8h5(h5Yf1lCYk"
B3B2m9%'EKd$rJ9El%'6ir@fc+LQD-3A%eeL!rPeVeNF,qTQAUkq%G5ESBm8RfHm
)$TjZdV03aJ)lJNGMh29dTAE@dFN&CBSbhe0`@b['ammH1rX,ZK+L4DAZ*#d%HVB
VfVMdpk&VGJpK[(HS)KP2p)ahZf5PqG+J5N45F1MP"0RJa-"Sh+4%VcaA!l-KccK
DVQhmZ#9f"b!UZ&VS5i[%46%!iDU&iLSm@Q5(jMRkq@ALLSC'3qlll10alTA6#S(
kQm#2C0Vqr(CeabDNMlB$RL`Uk*Q-Id)*TTh+8fF1EL$PAc!9X5)q52(@$0@LbE!
q1!UFX-(hGD&C'F#rfpdkbfYMbm#*UEIr[,%BeHS"*YVG$(I&*P&#DB9LE#G&GXG
"M-S2j2b5+0&IVe6S8GAA60-6EATKarSI5X[RcElkIZare#8H,3N5p0`UMp-02&U
8A%*9[&MC$ee(fZN*hep3Mc#EZ8&IK,D4hm9FFPe)2Y+F)NTBX[ibXDdJIFJCXpX
*pT@S2CiiHJ(lb+fY!DA&A[ZjmP[!D,*@US@SBYX@(V1#GY"0MhaiQT*Bm()H`(*
I4m)'CdaX55IERE4%[[j99bGeG0G5%6hPemKD$8,Td$#)LE3`c(&9r[fcHTN4#X$
XhdR*BrQk(YKXD%AIR02fGq($29@3!1XH(F('qDD%riKQi3+)RKdd@GHFcb!R69U
![S2rHZ6(0&$lZ$kA!TSM9,8AYcUZ'm*+hC'Sm1FF3K)hq6[IiXL#r$IA0B"4ZPH
A@,-5mrC`M!h-HHFic%"FK*!!6i,4Z!NijN&C,1rViC0(Ah9H8*!!GA@4qX#)3i6
lIe-I*k@'2@34p8#'18fYUhfe)BMSFXVHIC-&C"Dl4AjZP'38'`Y"AiSIpaiiS)V
5YcVr#@)@,4B&`3YH$C6dGNeMF"bC'FB#R6Q)9&,'T)4iq2%-Q9@+18kJ-dZ+C`r
SKbD"lm@@a"rlqY3K*A46H2DKLhTUaR`a@dPHU#'$V8#2pVC"Ei4#EmYaFH`b4hm
EJ6ZD+*9G+UKZ)EUKR$`J"4JG2GDP9Jbe42Cc!jTPTDf2%55,iHp$q&I1#jLe,*J
hLkcGm"FFZD5r1Pk%DP$R%jGae(l$,i@,dRX+VQ(8'M*1JhadS8qi!L`1TKJ!S,L
"1,Y,Za[RPR@$3meHCrkNZpU)R92MafbQqlfPiG%l@5lK8KK@q3!`D5fc-A[CBiR
`6N)@b[T-KHQSDF@aqJqRlIZS@diDSMeB0cZ$$*!!rC`$KfRfN4%P4k$9JM2ZkMT
)QQjIe"lN(GJXE2M4mC&&qTiZ!AS%G@4+%Ld0G""GL4qUj`C()hm0jf+#fj0I)N2
&jP'Hl,QK9UdEEbQjaYPl`6$bLa!8ETICJpYQcNZSYjE8GP++*1a8hb4#FD0ld#,
ES0jR(X!)2G+9pC-q-V5D2f*(U21e1f#YrYMVm[520APralHHPAGHMK-Z-SZM"1`
hYBaA'+!M(3p6IjblAJ+d&&b(%eKBZ9M44)+Sqaa5FRABRa@2Rdb2blZQckRG0-[
#56VC"BfRXq3Nhb)r#VLV`FJ"IRb5cI(!)Lp*V+b$9&Ckr,'3!%F[5ATd)PL@%Pj
C%-jJ`5&iEZ0$c8SKRaARePL1IJG`Jid2V,IaGh18%lL8(&kAb81RSMG%3L%Ea(0
!L5dXrF34![9SNcc*Q&G%*H@dRKHqVMmf`6D1!A4f$'[P'#UXHm2-A#6bZA2ZXh@
5#DMQ)XmFU$T4cJ1b'5h)2PShN81lc5AF&k0!j8[+-1ML,Y4ZIXjlH,1TiPY@,PG
k#diU+RS3ee-QXh#lQYFYT[dl*(kbTfR#'r,'*9AiNIE3JU-'P8FqDYdK%1DFa@b
6$l9AcLQ&3J)hLe*[![4f8f40j9U-&eR$Xfq-"(%UBS3f0dX'ET1[9#SEm+NYBr,
84JK!RK%NIcX-hJMefBKBVV61fVj8$CZ@c)G[c-YCEqHbHE[`N`Slp*6NLB(DjX6
%,$EE-NVrQicCl(5$5$jFVhl+Hm`8#,EbZEB@(h@YA*&33#"A2'mf-%+i0LEG#RB
jVM!GV$T6V0bpC5HUBh-FHS$-3R%B@RiBdNF&'*3#FdTPMN,X#I(IHRmUUG&a[Zj
ZfD1Kc3$G9ICS-213!&IpXp5JN!!SGq%L@B#P[9A3e0jhNjIh&QN8d3#K4qL!eV)
%Xq4p,1!mDR4jTFL3!!0#(N9,QmjhGfZDeR)Fc9m6PV$9M9ELk5S[0X#IEV%p88I
H8i)"kiJmNa2U$j&Jd$Fl2-06j1Hf%d1+9dF'XHiF'YA2@VccUG%CfK2LE%PR[cH
LcQY$Q@ii[AfM-SB@"V"J$hM)F0K#AMeMV"NM@+AdYhA&3+5e$fHC,Q4$4PAQ5Ra
mZ1qi#@N[R&cK&`Q`'EhPV*Y2GLXkQX&L02"-Km)`#3m#$kh2+$AT#*@Q`B2SPMp
ffkV,@rMLIF,q9UQ[j-fV6"+hGa*i`#[JcN4BM+MN$aMa9ljmc)RR2Y*F6c'd0[r
li6VA,E""bR4epaXR3RIY%m(@1SVVbAkZ)LUG*`&pUiE[rQT-$Ca"PRSdZfl6NVC
E(%%CmZ'#0Jp)rN'"KGfU["NLpP++PJP%SAE!4@F`2H,bqe-i#XdIYG-E2)b-hEZ
N(SA!(UaJT*He38jhZih,[HF`*%65drG+UZHB46#eb!Y*X',r&30PeKS,q`aY%,e
f[q'`2(q(f*!!4arP2N0Lpr"6D+kK&V18@3I*qr'%VSfjJqFBLimFE9T+)6HGY1Y
,JLHrXS5(m0HBkAebkEXQQ"('H8dfZME!8N0',0c"64rN-eH9@dVNI0Fp`)Rh3C!
!KZqBYBVqq+)))DX(5!R"AaiCaiSj6#Z(LaSJ0Q3a"@9a5XdaU"`LQZRqiIc#`UU
8jN*!&&AGcJ)m1MEpLR4-qc48m@!Fp'[k1T02Z`V(bC+8HNCYla$M!A0#$HY%9q"
0'3NmI3efqi2eZj!!CdiV9pQK'-R5ML#B910bHaJd!prq'C4b!e!D@$VN`pdc$!8
ceAcb8Cr%Rm-Sf88(J+9CDkkq9P2PMFjNMh&VQS$A8EY8TaK1Q"Ye'j,%F1EbPN9
&q'Ii`h5Q&a"2mRb(fbr6'Mk*STS`056(A8#CDBLGhEd(QE"p`RV86Ba6BBbUZmQ
@,e*5-MCdJHr[Q*PffAjDiaE)CMLd5hI%qD-Ek#Jh*kF8[ZXHMhbeb8!Q,f&bbK3
SkPh-p%'@KlYUS*LSk'Q)IDJm(%,@P5#q6"-LCiC%4Q96'Mma4q),GUD1$PGI"%-
LR`cL+k'"XA4'`McMjff)N9G'e'GQDCDRV)p"P3kP8`(hlFlkf1'D1L0'$N++2b*
9),iAP2[Y[(6&C-49d$Df8rMd@*mik,Fi,qU)D$4e%dJmRdfFqUACXC!!K6l`4YL
$!-5cAMpEb`"U+H[Qeb`$5@+U%2Iq@V0kiH9C4XI)RP0l*[#XP3Q&r@*GJTD$kfq
L#%K&`kr+T+Kq#lar,Df`A4I%pcLNk6QmY$VfhjBk2%['(h#+"%&m60Aki3*TGK&
+6REBXP*hiHYASFI*%D,$K0!,qhSlC#A,bi(P$0-Y2G3aaGi!M2*ke"kD2K1`JN@
[C*MqP*d',lZL![14G00lHcE3Q0Y'eGb3!1V6+0i9qiGL1AK#l5EX!AhFf&Z6q25
cFLM0X94+M*FPP3QMKc,cp+h*E#F$!TYLcZQ48bh@S#M"m2I6d2c`0H)S2&RdT`m
2p45S3VJ#rR#Vpc$MH$iiE["N`9J%'i+k1Z4@`VQTiqbK2$EX1l4HX8(la[Rl4KD
S82mZl@aejB,q[pbGR+-f4+[QVV5@IpAjV2LlKP%$$I"c0TG$pf6MqZQAZhe$qEl
(LZGChNc2T29RM*S5DpB"`I8lcD"TQm%`@IDlEZeTepD2q90$A5pG+b5C&`PLJ1'
VcJKiMmeSp$'C-kpVD"b!@[elN!!3D19(!-#Sd+61P$p"6i"Y1!jUfFK+,p1HD,k
CI,IECiG80BE%c[*M5dFaTFESY0QNMSI&EFAPR04))kTA2"5mqP++$!0BS3)`VXi
pl6-#&XDZ(-#MR"R[(jKeNH$$MT-Me40Eje92M5)fIi&-j'4DEc`2C,XqZ'2%0I!
Gh'J0l&@PFADBR%mI20ldd4L"VBNCcj*JJr,Y0Nq`Pe'lIS8MLA&JA9rU8Y@arJb
$(i'2m-YlI[$0Hp6pYDYb`&4Mb'6BI$#&(+B"U&NP1G'N(`D"fCr4U0*akeE)XDZ
NlLAH[pl%XqTlH8G#5lZRVAmN559FeC!!2Cc3MkJUkNVDGZPT8@MNNX'Lc#0RKNf
+hjMK@6mi5aCZpiaTc@Hc-+JaJK"I2,*TLI+A4(5&Zc2*@S3p99#DRZ-"XE)hN!!
&8jDc[TJZDj*JRARlNd&C5C3D-A%H%j9I+E1kUkSUP$$KH31[qdhhZH`90rUEBYd
V*X3bK&%!`Ba6CI*Pc*Ql"8F$YJ#HTBfl4PqFUV+RAf2V8+1Xd+9441VQPcNd,he
cRS)ARZ60fL$CJh,2"[A-&&ENH,9I6U+VFLB-0'fc$&#p5iYrR[GMcB"l5N8X82e
,Dd!H0-T*@-!0MBc0&a+dYCria!VQa6EMrR+!Zff-Fq6SE'4'C-&6M#Kh"MkRqLE
f"MVq4$+DV3LTc'Kekr9j1jeXAZkpUU1lb-011F[NP@0Nb0X0$(+hjM9V!S`UY#3
462pre)L44SYN'-ic@61HAkL!"@qirBbA,e!0526HT85RbJrD[iA*1A4)eBI&'CF
!,BGE`b@CT4,2Y)fH!%TT#%H%DG+)BR@eS`D[ZBEE#RHD'b`C%pibRP(9m(p*A$&
XD84CjZKf`&TYF08pCLbY&0&M6-0YM[rdm3prGQ%P'2&f$TQi2HrYG)!#1cYe(N2
X5a1[V2pqBfX"NZHqZ96pb!2eLekRk1K@f1SUaAJ"MS+KdIJ%E2A6kU8lJ(Mm*[H
BALrPiTQ059XHFF-KaYCM5YT,@9@!mD6KGh1)'ZLe"d2aB0mZbIP#q*TEIX'0ph0
al%KUlaS%JDcGh%YNle'YJ3MF029'e6@FLqLi2hh)2pf4!pJf(ce%pED`pf`I4Pm
Cb#rK#3Nbl+%m$Z"AZ3#2UV0pbVbJ+"`h#"pDiEBHMp3Z,PLm*,$q3[!QU(JUE`i
D(mXqSljLEEmEIa590AUQhf5RiJ!FJ#Z'QG!kmem$kN1@mj9N!pbR&amBD24+,Ql
%B,baZb@(2RCrdCe%!h0qqBBNm@6BQ5B"e1FcVD%(,!l$BIGDb4-YYFdAYFi2NhU
&",k+d9*%5ZMm#hIBVT26d)9JNEYe`i4D'Q$hRmI$0DGMkZCRipPQPK&imQl&h(%
frk98(j3(d+&M5M&8[ppbjVZ@'-@Q#H9TeRF`Z+Zf1Sbf[9N%PBQYU[aRYG+IRKC
"MheZ'M6Q40l"8+h*0$H*IrYcY`V0#I-$*#NlF[ZLhH9Q+Sjk$YiqjF!RIG-8QcC
EfilMN!#DA3i5m22jJDfRSeh&R)@[c5`Y8P(3cVL&V&bKeZZ-QF1e8Y-D(V3'0UF
LUP&dpl%SK)9#U&39$B95*C'G@Fd4j3&MUfF$Na2hb2FUrD%QbZLr3[N3KPk9B6`
FEAAGrbhHNk040Kr,S!"+4FRXcKZZk'DBdH$MmUU&&5BMG,[(G&3cM8b#@`C6ekC
Ae@hm[00j&,6Jm9"H&VN`lFRqjBZIYYXFi&AF#c&89Pe%pA[NXPJIG@rHF'#l)[Y
j-SXUf*hm03VhU6V9cSTF95A!AUbhRQLC,l@kcC)J-`Yh24K-%Ej8%,@3!'&j33B
I['@RClcYPF3A)`pBmCFCmCU0Lf!fZ-5H5MdlJAAXm!b#k)lSAp$dQ(SLGNljjRS
CPP6`EhPTG0ZLm`FGH6-[Tq(R8ElNXe*RIc!eYCq5*$SGm*Nc!PA**[h0"UMN)+,
d8D'@QdfK*h@YqC*Z#ZAYP&lY+G9PYG*%r55'qQ1h`d)dA&M6B!*mGDDNf-$kR`d
V5S9!4+,UGrE%X$d$SI,HiE!,PJ-JN!"R6Q%f6KZ#9hUN2X#YJV10YKJVUi&19K*
Zi63m98BDCKffqV%(DC-ZbCCeKIU!SU)QIp&,F$lmA31dUhr[H+ZfCdK1bN62[dr
VJp"YXEe,NdQV)V"k&b6XRrfF,%B)4l9UkThr(0P*'Y'E)&5r5-h#)[(C6kqVh04
-J[PmI+3XKbr'!-683+["9&K'P,qQDm8D`VqhlI4c8QX[NG6Pa26HFCEYeHZ!q,H
2r(+GfGIKJh,&1bYR`SC*crpLf2LTH[IIR63))fG9#J,!10q3!!*2&%VSq4b2fmF
Ie+cc&lb4*m4rKGFb8BKrYYLrLC!!mr%UN!!kp3Q*BL-H*eQ[f-a&*Ui+p&#!VV,
m-XVqU41af8'MSALG(3N6)Pl`,[-qh$iATr8RABV(,hT*hSc"2HYrSm8!kq5GBi9
HS+eedC@`a#dh,PcM1IJ6PSk`25D1rh[db!XcJIab&$!jMEiG`HFdmqMQk+eM4[`
flR0NT3%*PGF!SdGp1R*aVhKI61Xp(%B36i#*F2(qfelGLJ2h6R4YAX'Up)!FI2J
B'$[1C&1-'qHF$f1CKD&X0-M!,kJb"eYe'`$!e4'GNHUUZ%C[X$Z+5(j[hm)Mh4h
6B5LEb-V9)HE(T**X+pT0D+kXU!cj'5@6r#hheTlbpT!!j(hM5SSVl3'KYTp%+VV
DD2pLH@'lHS2pmhQj6b)m[J`50Y1FBa)Ji$l9FR4c9Bhd2+,XDp-H+CRH2GR03mT
MEHd)0bcJ!%EDVl*2ETc9Dc0qIYXm-"3@5Q56XChFk[UQp1T)pZm&H4X!!E+QC$G
hQq%*N!$bN!"bl#DTJ[qkLQ0EQlar(lB2@8(1'MPNA)`B2+U$k@"`F#&lMRMPTBq
BUbVX8j2'0I9lE9XI55&Kc#pXKTNq3D`4QT!!4#0rKpXS4"r1bl@jr1@CRFk@P&F
9NITXeU%pLXPq"3dpXr0E$rBjCQi1@[km)B@UD0BQG4Fmf!NGP+U!lVa6FT5haAj
Ae6e@9Nerpfrj-B,SK!(ff6qU($V"l)h!Hi`'-)$jCYNK#fX6lVD8qZ!%AP,ALi0
1#Q!@mAGqk2+68L55UqHkDc46NbV(Ya-cGacYc1C58f#6P5`S'4qF3U@"ZCF&b"'
K2iL"NE&CRJ86DCIYNk*(@L12c68q,$VF6Xq,8L8#q$J04E@YP6bhE82+$FmES2B
E(aX2qb-X))+42priRI-E@BFA+bpUYF629UE)9D(-X,q4H82KC8K&$b5XX@9R24H
EBGSBQcB-Ukj$ZL[+6q1(9)'a*lUfkDM"qAb*r%MFY-L(@%P*0#JM9pi"KqTHV3f
9c4M@Gc$P$@M[Rd1,hqXFAE68R54a(r,AaTVmrQXkr$cFaIVq9N-fAFNp$Hf,kDA
rN!$+"&h++HQR'2Dq4EV62$iRZreN"+PH,#F&V!IC@cC#F4$+I`RS06hGYa)3U@#
PYdrb`Yh,K8l(%Y,q%-kh6U4H%1LUH6j+U&##0ADZAR!aHMhm[4Pk[S[Y8&4V'`F
-j2I,FaX)dT,YT0LYXM)bT3RAXSI26D#Lli4NqNlH'#![M9[kVme!,[HQH!S35E`
)$,9U5imZX3kVElCB)eHFHPU19P`Y16m'DRqjYm@GJl0D3cTc[T6-R+PJaFV3!FX
h`lX0PkE+SrUT2ch4-jJbHYp,#kI+pZ&i1qZ6I(&,XTr%aJBl1IMV-%G)5$4aC%'
BQ"#59*&hXR6`3lrpjL#!*H26M"DU!A-YfLaR9&EL#1-(VUFK0hYK1QE`9)P,26l
4VSHU-)aF&YS!9NRjTqTU&[hQfYp'2bH[*0,U-Q#@m8@*#KpkCBh9R65pdhi2eH#
f-fXUa,YciUbPMb+DBEQeZX[iV9APVYf4q$1Ie-SYqGQS)LK,iM08pNpFp"b4c1$
h-Q4,4eSlCc[jSF1K3,!hlG(U8fHi((HPTD&"&C%MGRC1GR6NffZj-F,CVkm#C0J
)mSdlp-H[f$9-NbETP&Z*6Dm%aH9jiKGGcc(%GFdH-$1)6UG2QJ2JqBM"G-Vf(Ah
hB`MQJ,kibVkq5"!(R!HPb#@564PUHFjGP2LPI2+1fYMkD@jRi9jNkRNkq(SEe0e
(hEL5TEBG2CAiqE&85bQk!cUeY-hCaBQk1iSXS8)lMdRIeM+biQ`+Gk"H0@q1`3`
2abLlmei)4eeR)2#0LS#dQlj$Z"Qc,3VP*Q@c3i43"H0kCJei&N&A'bAIZ&9`!YM
Mh!m,"2`kf&j1G#Eb601%$@Kc$IRA*C`mfckF#KH2QR)&Djk"Q,IPDPFfNrDH(rl
)BUCmfkBG`H2Bpke*Z2eNAKFU%kUGKe-9,NrJR9DlF&QdLUJE$'F6Yqm1mY#d*(6
d['3pa5P`[G&@kUT052EkN8ZCPKpZBPr9raF8)&`a-RSEC!U,PXB`T9j@3fbkCcV
dZLfS5V6dC83iYXGcKX1T[jp(SkAHXU)'XM,88jQiJicC"V)GPNX)T&4H,X8MZ5C
2F#j1#8F0JTh(Xb0m-!FiX-lG0*Tc"cc5jFlL9e@r`GPYh+a'3SeE4'KE3T0,ZSC
S$ACS6b!1)TbX2dGAUPhMeYYJZ`#aRZrPd*Kj$3,'0"-2F)Y6J2#Qm*ZG)jSB2'(
C$qX6pDQJe)JS-"lfkX5a*`!&9B8r,Fk2H5mC(*5%SKT3XYRGCa$EXK#SA+YqC0q
Sc'N#J0Pc)$E4!PKBfd3RU1$i[0lm'jm$Uf[`mMAa(@@P0T4,%N6dbNZZ%E8V$&k
S8A5Jc(CR@DH$@RUqiUF&9+H#!j!!ZaKc(`pMh4!6jRD1GT[#RpHkA"A,bq-Ib4!
#lR5-Q@YkY!1IVC,AkHX8ql!hY#3QX(QX133D2a2lYK@m9`)pZc-HF&qGA4i%ek-
K6a1PA!a$DD"5,ak&pe,5MC2NY[3)*YRVhVrNSCqd*G9#fBll3@p+fLr(mUrjiC@
R#)jS!,ba`l5'9"&JqI'Zjjkl*"[V@$AmcCMUPk)V'b3J!l9eRf(DC0e0mY&#q-A
))(hGR6ql$,YT*qlZ2J4ed3b!!1Y3pR3mU*8KDc%RVp)c'#A262V!kQZ@#-&PA#*
KdR*P(Rea,N,YJk"Yk4C5j2Pf)dQQNd8q3k`-R+"iEX[SVYj&I3Nf96[S-T!!e9H
#[DR!ldX3p)hVpH4,0hkc,''jU4#mZC3"*5'ZN!!b,p-T1Hr9Q5*S[kqB`9QS&(G
RAaiE)#8pQ9P$CJPq5jeZ#MGVb%K"`PVp4ih&92fR6q51`qM9mq-a+89$r4aLhJa
"*,aLJX"CbdacX59"Z1MjrBQE&`Ci9)8"c2GpJbp-09Rqk2-GDp8c[Ur&a+H(mH0
k,'4b4p![q8(5b%0XmFhK#V!Bm5R'#Im6IFcG6"T3Tlk%CH&G"K0VrKZ!iJ)4%JK
9bEhRB3e+@N8rH(-UZf&!hlUhE,Q@@f)RejUi'%+M2mj'HP)peB"1eQZkp(S8)l5
Pi[3BET4$#ff&qGXl1jXICY''FP$Y(DYmJKUK"N`aFT3D[M`BRhJ@M6S8&$Dm!@h
+AkGIYFdRU'RSe)RE#m"(`#+1*SE&lprKHJIc&4eZZVJN,DKA@E2+83r[@4YjJ#5
I-,G`R")r[-pR2M1hV[I3`)$9V0D#F6`[YLcb1La-l*3jPI45%He@TR-pm8ZKGI*
f'bQ@GT!!%NM%[8lm`1-fB2kK[UH``T6Q'!pk'E[cM(Ai26BQk-M0Eb03TjEe0$4
-PQP&KpHAI0AEL,,Aa3V@MMj"24laH#'2D0kER4-KKh()0VJ&F5$R$Q#X[N)N9#A
41-ZZUC!!F@D&(JQpR#TB%Uql@J!YQNI!Vk@NKK,8iEjYVRMcLbbSSBG0c`B41N(
m'F%DKf-+Ii*d#fJDY6!e'1m8Y8el8YPGKSNp8Q5KSHN[Y[lhK"%ri4@mk&F""Ub
dJH"FY)dNN5`9P08CHGjI4XYap5q,cdR'*-8(kZ-Ni3,iDY)iZ8)$Y'&!`&QJGl0
kS[Xi[MB4C(1(FRC0dc4DG86(ma62k&e-CNC9-5DT`BI$,1fkSfdA@AB-+8+NGp+
Z8F8*mXVpETdi6AIiUihbm,q`-T-jZj'FZcCYH!VeqVrCPPq5Aah5VADiKNA1l*0
"TrT%+`A318f8bLAYpmX+%)CfGqD!`[B$N9%[+HQlpcRhULi1FTTpX0J"N`jJB3Q
M![lX6i@-'Y1()*ZhZ+b2$AZDEj4#2lMVTAr"1XD%Y#[E5!q,#%DLFr%+"KqB'@q
ik%i*4rZ@C,YXS!3KcF"[`I)+CB[SkFThh*@b299d9iBE3Ga*#)NK9,4YAYhUQk%
G1TMjJ`rL(aBGCGJNY0&[Bl[!PrPf9kDbHVRGfA#2N!$T9F2N`-QdU'-2pBCj5dl
qkrlMkSb@+aeMY*USF%K9VMZhhL5VGc-Gcrc%N`('q`bUmGF#rJR`K(S1iEj'$LR
JN!!e0C!!lT!!Xk16lFK"4H4ZTAbbcbL8EhSlAIYLS%Vk[L1SBM2hSm33CUAd6!a
r366!0deU9LVaBE[@h!I9i(D1@Db-)[q!)Q)KXHUlPhT3FdM16DIqD2#4cPaB*Aq
dLDS-TD$&,4Ip!$RkJqde'"LXAF%[G38)CZ`rV)c$q%",KQ$aGS5D5bBD)V,[6VY
2(HXPH5T&*2)&a(aVV'k'T6"pXG[TFYB$mJ`kk$B*,PB9&CKFA'bZ$rdMp59i)r6
0HPChXM)H6J)qpH'J1Y1QrNLR(hmhe,mQJ!IlV"&M%DI[caB[9HM,5`M"8Zh'NT5
E$Mchir[9fSA3i%aBb*!!Q(4H!fk#P8PY')13!'eVi&V2'ZK'(*&H@VJNiiXZ1Yk
lN!$)#R()YN%(*AFE'J',)6+VDFB-Z9Nir(G!eNY6bkJ5B9lDVCqHR`EKXDaD`PJ
JLT!!pp*Z-'DK"152Vl%be+6@9mkd3hjX6d[8$@L%iD4N9$UHeIM!aq@mjQ&)4Rq
X1fB(`RD"ZjG#jX0KXM29)BB`K$CGp['V*SB2D(L+6%"Bp0`%VrA!KP@`k(a-mB[
U'@34iU8Bh'CiHLmbj$d-R2`ZD(U)I4&UhfMkKF4H,3S+5Am9YVM3$E!m`@N-4Hc
`HrSCTYRA"Nk9'`cVqR*6Zm&UmPqjLiT"4UGGA#`Al-(#8`5VV1-D![k8ZFcU)0c
F$K+i%aZZ6Xh&*4+3!206"'dla(mBjGDHKF2*)BErVFQ!Zl-V)GiPf(ZBZPI66l&
i6"KMKkH1Db*f%pJ[%UEJdakQNVYIJIIj2QH`Z2HPIZiBH*NljH,MNcHL3Qe#8G%
(bHciUbc%q43INiVbrdq1$@ji%88(Im2!EVB-c`[P5)H'j'F'GX0D4RS10deTL6i
bcUIXRH,"HhX-8@%mi(%""&(8-jM4a!*SF3Jc"J!3hp5BAm"m!AA5XeiD5SGackB
kH)bJ#0Y%hl((XS'lI0G0"Y22SpMXEHj$bU)Dm+AK+N2ii!-akFE&N!"J+&1q91I
Fch!(!H(Y!TM4lXZHMMhh61!#mcV"kV0HM6hK#[aqRr(!Ipq[m[+QRZ2mi)8V@rL
#YXM+8S)K%LqBV2@81i`MC*%)Y3R30qa1LP*V+14%i`"r4U%@[3a"&52r!'!Y4F!
%Sl!BSYBTqjidLV8#F4f,JDaR,l0(r1Z3!1j)h&C8JU(Hq[jS2qRFAjT6#J@4(SQ
(LNSk"ZE&-B8Y#-c`CG#(fB3Grj9Epp!P`&(X2d2Pil*"XT-U@Y9%lL0+V4)Y28+
`&8-@kB%k@jTHpb'4$BXZmGXl`[@ZB`dkq@i1NZ+qUbb'AkNpH`dS("61+X3AKPB
f8k4fcYI'("``hrFkj(SNI3@**8ZK(3"RaZ0H+6iC3BFmjD5GmV6"qaDSPILKfb0
80bIUHh@kZqAIK&@m#CIeZG%rB'H,bT)H2`,H*DNPS+-Ml",$0&l*P+f'KilQD"k
hS25[2(Z@[b8"$d%MhA3Lfe%dmMC)('h[YK&kmhmHb&(lRH8Fd3Dm8qif0dNJ,42
"(E&c[)!X(PFB*IqEphAKF(a#,GK0%ld0N!$F+US#IL&S"%cm0HCILMpRR@'J@Em
6L8D8cQrDjE!6F*a2MK0G*aeHaFr"rc'V!ccA3YTKrDe9T8qGj9L+DA@kB"3E&c`
8KTE568CiN!"8ATQ4mD'"9iX+4[9iJ)CM%m$jD,fL9ZCFGG%eh"kd,Q!0LaTMfDT
+Q8HF*`('[,Z2Ip2llK)f2fB"LJf[!4TZbIpr'S@I,`EbQXEC24'Bb+F!qP!Ha+(
(bm'jFC*D*5D-*5Zm`j((L34PLa9NDI*mKTJQPhK*G$r2UH,i!UHFhNf+fb2A0BA
6N!#eB(('EqE5T-eiVE@AGZ9V,e"V0A6p&M&,N528-iqaMfQ8qSEDmS1m*2Q53Vb
KmFJ[&(SlabmP(Q'MHI!ldIIBH2B$#afXlLfdHZFPaR%)SqJ3eA!'NcDi,'f(V)4
2,(aQl`(FB,@4%##&3mN+pQX+!8mmUDG#9qkLF'UQNi3pCpi1`9TTU-aP[2PiGLh
aDKHjHKL-F1NdL)%Y+1-+L`RC!rZ*a1QR+ZSm!GP[p(bZjHVfLp0(IriU-IS!*%S
4F#p8hhlfclLfYGV1SAQ,VBQ&MA1+6cbmcG8Pl"[Z@Sc%8X[cEd5V1NqMYcmdh-E
RrVHM@Lm+CNIT"hb9#-aJ9l[l#3IF,iZT&IXCNHaTK!)PPHM(X&plINQjD'r2,U0
Q'%[%VG'3!&8iAQG`!l12LX@@'f$d3h0Em[28Q'"@qqKI8SS,aCA)FY%`ia(9!i(
DSFmc8hbTdX5T[p)5Q,8a6Z2riL`"`@2K5U,54,GbQE$36B&31i3%fVjMa#F4)+U
[UIEqN`L[mXm*$6YE31D,Y&`'m3SckkNSDV9*Z)2$QZm&m@16Fl"l95[jpUfQ(`0
+S'0JEFc)@cCP-dU9BD3NQ2SbmAD'r1'4&#U!bAh)#jAlBa*8VdX[053&0eVY"*k
l!qVGXb)r'%IIUH!X`(Dd8c@R%`bM)BmT6qp8$XB*p0dY-VQ2,KcaeGEcAM5d!)d
BhaJphD[@N!#[9"-jU"J%N!!FrUCmpeTM1'K#'JrFk'pCJa6`f-C+5-ZlZBq!L,m
Vp&Rqk-9maJHZYCD9Y+A+C1McX#P3fFUQQ!3)b59"cidr6&4!6c-%HDmd)23hqkH
SURA"eU9$'NDS`E8N49fqJG#H$Bf0A,[q(Kk-qbV1#CP*`0hdLV))+Nb*PqTEhUk
Vpj(-J)5qJBqe8T[e+A63I3`#iZ3&,5KAXPHKA`V(lT3d3X[aqIZeVpSk#@5LD)&
Mm1Z["XEf*ijTJi4VXi3&+)"DRq,irChMpl$)JKZV"m5m0Llf)-5f3q3I6BEmb"8
URRqhPh3B`h'(*)106NFUGB3iJ)f1(j[6i'-KeJb8BIQ6I3&3CJ''"9%CAa*3'*j
T8lUhp#B*9CX`Qf,3,"lKcf06KC32YTHY'U#cBbU45KNe$a8YKK6@Cka1QA4MC!2
'I1Q$&`8MJdebqGdcjhPhJX95,fD2p#E9RlBfc@Vc96)phdk-C3IPkdP(i91cJ)h
-%fiijP$k*Y)CHNr6'lR)S-6QJ`XLB"[FESbTV`j*d%p53V&['5JS!!$[X4b+,rT
`QI(*,D)R62XfZLB33b512i4TrRV%GN5,U($Mj62hJ*M'bKUU1G"kBR`Uk)Gm9`N
5@pAX"Q*k)9@C&T3M!LBSN!!'D#@C8)"&dLVa+0L-9)KU&9iIEccD8HjlDATA8&C
clIhJqUbMela5HYidb&l+YL2&R*B%lJcdX9N'Q2*(Y4E4$lr@MP0*[aDX$*,%ek0
UFi&4ca'3!$Ql2keS1BlSa&6j%NAX`QAa0E+dLK%q#c+FXpIJKk5pBfL[-(B01Qm
VCJH9Vh+5-6,Gf3UL#EQ`I65lA%PI&[Yfj#KYV4KHb8#CRYjEBd*R#l@qTmQI&%6
m'Kb8kLSJ9RbU`acFkR64bZH%r(D6Pal3G@LKqAa)6q8lq3T&iYNbJ3YHX484k$I
U%!R-5cU5fm[6P01QpKGc9-m%'Z1fAFf0#2YqXb04fqDXbRRjd[@25#lc$$kRGG(
'2N"3`LdcUk,Ke[HT"3r+(LF[qEjqdrViCEB![%$dmNB5%"mmbr+h[1'M3%a&2qE
p5T5Jf$)qa-XrE!@PVcNHkaPT"k1HI+9NUHIQ9,jH0+3`5Jlk%hYc-L(AMj1$(2e
*'ChkAi%f#[4iQEb2jaZ#Ef6q[*r(!qmF4%qM-bJPSbNZPLrZad"'P2E3SihS)8H
ZlHbG'C0f$"-d$D@Nj9DLZ!RZ!`A*Yb6N#D``XH%iX"D6C1BNk#pYBc5,LVLJ[1T
PpkH2ZkQJNE0[R#q'I&)KXN$F+,'cMhG!Y'(2%C+XTEXp'VZ&NA1fCId5q#SdYmb
@`MDA``E[E11(r,pj86(&,D&hNR$Ph@qrREDrJh08"@P(Fh2kTL65&hE(k93[d@e
TdUN#"M@NSK(kJD'#V@)(5TcEb$C4[M34%N@kl9NP4pE'G`%PTl06ATf`cH)UZ68
6IPCCFjpS)m!BZjSql#Zbl#d23Mq4'A0+Nf&clD2QhG0@J1J!6**ic1Mq#Q1j[c(
dNS"LC4e'GG8idRCIE3dlNQ2SQk(i1-9RqUdT!DD[L`4NA3jBMEHKR)!2V!p%Hlf
rkja,)')f0Dcc!h$Zmr(El"cf%5lqNE)6CA0l&qTNPJEN!*!!""*48BRC4aVX&j[
aRf0GK9pA9D0N*XKfXUc4jBEp$(Y`p(U%NjfX+liD8#i$cem[,'0jd2@VK['k'hL
8cNI'#MEUFr`%RkeEYCK@,Mlf+2-AdiXL)Cm@bKB5Yb'TcrSVAaA&1RQ`AYm*A4[
%6&-C5j8Hj[1H@2M4ldUDHKe$J92l+iU)9#M8rTLN(G`X(cm(kNZ6CE$fmr8U"TG
HZX0Xq@+&FEmU)IeUI,L56cakVL$hT#f+#K&4VNGdT54A62p5jCV`f8BapiAB'-Y
r5AH@#a36pdlpaA5cTeGjCY+(Bdad66G)i8YEk-0GrkS31A1-e0BI1i$UV,@lTLp
PHBHeGh`*iQ0ZCPb@b@X+kILm%H'%IZ$!2lS*aA9'aMp$F+b`r$X"f0k-P[!1T6q
Q34'k"ZF%hU)3LbXqhVKj1beTd$P5963REZr6lVQLSdchC``C@5hD8@0K%AD91@-
BeYCGffTe`MAl@iA2drXj5Aa!G,SdE%0PQQerZQ8rlIN`!*Ie)fD"Aa(`Z2"'6%1
B"`BLc62KLQeR&ISc3Z$Kc"eZ8j3*K90TLZ*GNR("Z6Hh,AK`A!*ajS0faFUHJ`M
B'[NN`-UNd+@UH+EdTY4%!BD"Rp1bh%),i[kqFkbp1&"#$*UV!QV@'%0mET3KZ+*
4k1dFH+`KLkHGLaNdX*!!khe!I(bjI-YLLG8jDU)e0@Fj&6rP"m"HJK$$1#6QYk%
N*F$rF#SUf-jDYrY0PE%U%*efDqBpi)823@PhrXIN0Mq2DPU-f%2$%R"`G6dI4YU
Y-%%4'P%I6-X4TV[c#-YY-&G0[mT)YZ'3!(Y'cheCHV5f&jqcB0ipCAHeiE[2B$Z
Kh-8!#IVK`02!q*!!eAc9"2XV5qq3!"C00p1Tp,pHZ&C$[8[G`d6["LLmHH[,+fk
'l4%VC[ZAkY%m%q`HFS"S[+Rfj@iFlA(HaL!cheIq)(HUkTkNZEL241p*mQhT5Ue
TmVdkli[`)L[3j"flAqSQGL2A4BS-eR65q)LlPHY&CLP84hDHAm,@lZXX0Q#i8,8
ZTN`BBqLM8AeIM+EDMTbm+@Rlf`&m0pA&TX#)jT6*J#9((PYc*RBEE5*SRSjDb[#
X',(ep[S(PSVkLLV8E-PGDYdePZ,3R`ZbPX05pFrF&NJZrJ83i'23b'-%TA%*`UR
ar#efG-R'N!"5#&+C%-e[9#jlP1L@f',#J(!PaB'IXAc4P14&)'PNPjLE[q,+L2P
C@MNIIG3Lafpb5FCTH"P%S9AT8#B1HD")H8f@Bb-!8I`V'G33Km`"aK"1q2J)+,a
@MkUCFilmVk1I("`-f$i1mI6[b,P0V[2',`)ER3R@M0qG#c%pVJZ9a*TK33bFf$b
0qd'eHk--kj1*%[m0UEK,I#jl'+)D30CZDM0&rP#H+HE&+jQl&'ZY)hql@cdaclV
+leq0iL,+!9qFJdiVGY'%5EqBYTm9,b!*pF@T'[rR43+ii1"GH#mR+c"ZRf##b9U
Lh8JU6)K066Fa"TYiUb#%H#![Ic0``#,2rUDYm$XV)fX6HaE%H2C,Z[mTqkT$KmF
*-S)a#*qKe6F$Lq2Ylkcd,rim#qlce!+!YmlRdeQ2A0DPqkbcGl-r1`HfT)(jYNY
YXRf#NKpJh%13!0IXM!8akS4m$j%GZ4IN$CcG+b`0cNbEb9r2"!JZU+IDUIqMJ%,
+b`Da1,D0%RUDQd'b01[$654X&lETJBD5q&EN6c24@@3*AJTp4Bj'VjAC[ZD9aHZ
)32p(#CK9`SC$ZdFIqI!D(m-)Jd25GEKl6LTm0cd`EKjSX!qq2je1lF1FR"'HqLC
$UfhSb9-1#)6@!*h@49elDTE$394+,-%*per!9NqIYT&p#frq8C!!jJFlZNUeNGc
GTpedeT(e&ZDVhac")F[Ue)961`e0!9KA8[cY*%!PR(lLfSL##"6F0lpaZfH`5fN
imL@[-Q-G-iNHUH%(1)TJee[ZRj+d[R`+IB+"D9'C'6rc8-J)9*!!a(3`#rGm*&j
Y&eTGEq+2@XaF4@R2$3)hBpYMIK4Kklpc*RCK*fC&l1#EY01lSa0dpI-PlmU(M4S
-(JqC%dac'iifmQC![Ka@Y8b8a)9,VYC"kTG1RCM,#lhj$,F`C+'eFV19CUScJk1
PZBM&5G485V"e9Fc#(abh9q!NUbUiH"KRFGLZ4lbE!Pi*b+8Y$Y[X3jdK5*reQZV
NqELlfTjBfQI639j0c%3DV6%4R5C%0ATmjE3k'4$@FK1jfckKl[1[bYH!,f*["aH
aUa``C)b4S0p6DY@(,rZeqNRL1MFrAM8KZGT1-jbBAcMBH0`AJ5Cr6X-HrhV'fbf
e#IDjkf"fp82EqkjdKrmbG2)2M3bJ!B6'j$X[!m,4Sbe&4&AG-BA`RVhJINC``Q4
*I+VfKLF8(T``[+TI9Q#TiJD5#CXCJHGb$PeQhD`XM9d0TYRXjH1XG[r)r,3MeCm
5AEY`eiXMGmh8D)6Ie)e1SVZUI6!q2F6L",VN'hNCN!#jAYmkDc4L-3FJ#55Qe[M
'VTUMAeH6PX$J5NVES[jiKb$8FA'RLD9i!f`VSp"bhF5b8)`-T,J98mfr4Qm6jl-
)b)L@c+[*SB(biTlRQ2EpZ8(@j#Ycd-0TIlAIZQmV4BD(VkL93AVjKJ#2%3`pL6A
rhRI16MK('ZA&&R,I,#NhBR22*C9*3YkU)qRiai`a5Ye@rcM[+()NkM-TM`lHH62
`%d''G5$lLM2*%A%I)$CY9A9dRH$e9K(Ze-R,Zq,Rp9r!!#[Ie$lZGRMiT0J!Fi-
9Ak"6'eqEG8(3$lrUVqHXeEkdUl)Sk-+Tqc($9Qj*($Y&j4KNY-pT#$TH26e%Ja)
mrjm)11(E$rk@a%-*3iA*I'FlUMZRj5,T2DkfN!"RD$p4-b[64IVbhNm@)3Y`SU%
p1DUf2#VC32cr[91Yk@Y'iQJ4maYXV"0VUCGrLb&jEm$[GbM&0IldkXBY23HV%B'
a+-%'1Nq'$HTM-MGNhUfp6&Zm(Uq%I@RBLp6`G'CZpf@N&5qa&(r[V*TpahYRSRb
PIlUrVU%RYFXPYDDM&E#6fLNchCJ0b[@kURqr[J[aeF#Di5DmCK*`3N8aji3S%G0
q9id#I0)f`M@CJ3Eae"(HjL"RapUf+#AdGS6qm'0+Ve%`6#,l5*`aF'Le@&KIP90
hB&I)$fplB#&AB9962*f40Q&b3R8(Bf4BcK1!@l4X3%fDVB,6YE#a91)#&imaj5r
q#mhZ"FrAUG-PZh4KL1'iUN3YB+JKd)&jYQ24CUGPfRVkMpBK%TiUZpUM(J'eXa5
EX,M"Qlh[rUhd`IX`G@jb4'd2$Q'h9CQ(lI5ccpXJ,S84j$mTfD4h!$T1QG,CP*!
!'"+A%T,$aeq`lSh9A@0hHiF+dR8[!'9',`Fq52X#F01d,MI9l9a!TdBX6XB5UM@
ljLFiGi0dm*kbiHYK0'V,$0%fX9E"f6J018M!"L,dLr[f@qQUES@*kqffU+cCZ@8
AV0-,)rF64%ireFhCljMR'39Jk@3hRmDK(&(lS!JkCaD6G$5,aD46JUAR$abrU%A
iB%IX$6MaRe%#f"aPL9k8fJfQ2&b-rfp`KG2Q)Rc*',a,4Yem[9lXCFV@4S9@hAZ
lQ[fpr2eJUXDAU@l4N!$Z6C!!C&q&1m`3rZ9NFZ-*j(cdqrY4EVc@JUhm&lR%*4e
[$bf%pKGmM(5TR'F)l[+B'!q2UGT,N@"E-FqflJjQd'kcH3QTX)kXM[DE%[NQ'a*
q5Hhc4e#VrL)eTNk2,m$A[6#`8!MrSUCeqhq"'ekHm9$P1&Tf2DFN4,&[2@amp@6
*eBrKRED2L42lEPPTAPGbld(6UBGV4(0MKK4mK0clUqa3jh93Dif-hJ`RXDGJ(NJ
rbUj6Sc`BCk3qe9i+L2km)4C*ChE3&hD$Fk3SRi35YRkICeBH8-DDC(f9IPG1TV5
F*3$PA%SNP,JeNK8VUUX8HLE5$A$C-Kk#Ad)RTDRKB$@NmG85JHAfkf%SLGC'Pj`
!fj!!i+Gick"QDf2-!+mR0S4FEQ6ZBi#'bbY)AR4[4)0HiX3f8#6"aQp%Y+8aYUL
DIa)bV0D`$[K[$9`DH#K%)(rPjE+6ekRJ!2eRRT*jLrFMbQjUi(4*'-HNJ-aCZmk
,00adB"PaUC*Z5Z+YjVF#YArL(,0Tcp&[["KHB0kqd3E@6+XfT9`EI-$@Kb1CM*K
!45bTJj[MJT6d%NTElP$hAMVP"mJrM-i0(qEQfP3KicJf`,jSC!jlUNm"Dh"N@Tc
3R4!ZBY&TU!V5h(TjK834`PK%JD43jLdNfGQ,RH+ZNd5*+D!YB39&S1kQr&#%qIS
9ZjhBm6dqFKh3i+R1"BK8l'%kVJMV"eE-k`fc(0XEBK)ZSl5YY@DdF0Ar+XaHBXp
3b+A+e'GC8)%'p-H1V@3D'MU'0IN'K+&)V+68dqeM'9XU"Rr28("N)q$HT&1(!@"
2rmEi,$r$&@Da8&Y!I0"+2&XZ#dEE8V%ZL0G%`9B-IPm(qp("DB,2PDHRCEi%@C2
FP6`0p,(LB(SfLrd'B6dG049CbKCFR%h'C,Cr64#2SN0RLM2X1fdfEi-Dca+LP)6
SE,Rf5rU&U-B%Yj8D6qPAiC0YGm-GAHMU4bX1Dk**5MYQB*V2&e4!!9hl"Qqc)*!
!Cb@'4[R3jQrjd9BBpXU0dU#q&(ZbYDeBmf2lH5K8ebHarP8AAD(-jIT4F"H5-#)
'5qqG1-eJ6jX6)iI$!"36&S4*"aj[fLK'6-VQiI+,mlZF"K+Uf`1Fq%XEYJ@mP#h
$X6`eDiKZL+jTCC&ZV"q2Q"rX*Y2P5QjC8FLPJD`95CijKiSaSD46Hk`',9-%,rP
9*1R1)P*SUqKEh-`FRVS98#QAFhqbGp"8BS8Krpa+l1pa'8mJjD6--rZCph(%lpa
cC+%P*4Q0L!A1h)UNaV%HCPU`1"rHfKZN2M1hNQ[Sf,8QmpfUp+k0)[JrRGi4e%#
,9%#UPfjhXRS5L1IF[Sm*N6K9e#Fk#B6c`81U*`5adXqTj2C0h@liD,fY"A#)PZ'
q-dlTNjR0@eC02[VrVNIE[&CE2bQ9#HH2RK`M&#CUbj@k*iJKX34$5!h'CS&l!%C
2$+MABk'S9Rm03*iV%3iA2(2EI"YdI(D@,mVf+TZJm$T"KcrGK4%FA+c+bTBARLh
"Ne,3Z4HQcBV6Z5XikPq8j)SE)8VYNd09f*QbQi%Cc9HX+-3T5f'0iE1V%N0#2P@
Z[@3+4k*+jJ[Z!JD&JDYC(D8rXe35$&1Z)J*G)"jh+'!!QX$BFAZ*C1KC%CLX*jl
G$JQ,epRX$0(A2S30-VcGRJ*66i%@`XN),GR1T"M$jXj1YD6Lk@'XR8iUadH8JLF
!r,1Y%#,(m(Q135QTphQ8LEN#bH#8lM$0!pc`6XV$a*C#J`fai8VZ"bq'hM*P5,(
e"Fcplq&Q@QZfpfi`D#88i9F29m*SABSHfQehH%T'25j2S1-ffdfG2(N5Z()5)#f
YhJTb&Jre5q4[m)GlY0h-&4TGr)8`bG3`4NQkfqB6e#C3H"`ZABeH,91VLiY920k
db,BIXRB#k'k!FhfkRJrVbD`(d(VCG`4l$+CaIIXYiK,STGGHiNN"6-&i3cU&B*(
kVK3V$b`#CP0TPFIpkfEcG$34m2Z6#cB[hJA5jcBeB1@4rFH6B`PEHY1!DJB+j$&
,h*5aNX2'Q4fP6HRaA8!)H(H'Qk)5QY9T[Q8#5*K&$lPYrap[-4+YBf"F3dY@c8L
F6H2krdh[*h-Glrq"BRjeMhR3kl3C6hkBGQhVej+iLG!`GA%AVPY#'@YTm%&--TQ
'8"p`k"m"Kpd!ILEQPRHm'C!!G09Hf'#1ca`FSUViMYpm#h2LShL`2`[qGlB1%'!
X9L9k0FX!Tp6CTBrBLZ1jae#)@VSAZQMc#L8NmqjHXVAD'&ReA#kKMF!mGCPEC@(
A,+@Tk!L69lcIKmTb)IK,KJ$3QNqZ!JNh@JC[j,0ML(A($PMM!5'9T'[EBBb@"mI
`N9#R"9PAE8PpZP98qQSfV6NiMjke!R)9$3#S9d6AAIHkh-rIVaY[6eKYU`e%@b0
GU($p$e(q@#A-J2Z'e0X$"%IZfijZ3Bq3!"ZXra-CY1*B3d5)&mH05EB#KGFJ(jk
Qill["*`&2TT@Tpq09*8ZKmDqHC-2biBbHFb`NAqV'3UH@@`-C`"5'b,[NI-b5()
T(q"94G$fNAdHFqHV(0mlU+[Qd8M+k[+B0f1V#I!rSLF`3M9aTGc-FQkhG"XbYLH
4X[9p8Ni1JS)ffHqQ6l)YY[C%l(NB0'8EjZr`3*DRE,6([h1m[6H%,*pU@FDZM"G
hdUGVf0kT#B@Q8a2+i%TZIFmQL14aiV,(eZ0lKM)LC(hlm+G-4N8`Vkk'0$eF2D@
Ll82!2,-E3+G89(C4*&P,XR6hTDHX`DMdk3aD'9iTql$C(F([0HCpAm!*YLGVdK8
F0$IlkCri(kP3Ti8S$GGq0b`C!)TLf[TN2l2UIIS3!!,k%T1[$Va2Ek+DRB0Y8$9
9qTM$f#(hf@N@SejK#((Q$8rN-R%U(3PAGXdqJ&BZjB+YGh+[dbJYV69kr3GX$!)
mXT%h23$B)F'RKGJQZJ"J[aDN2mB#S,jq11Z`X-`kX9c$cNf@X59&CLIYdJ6i,+6
f*II6mqJF)3@0FI3#!(AY&pk4N51-ECYa%q8(c[Q8cXF#TBlb(HppaFHQVC5BZl3
Eci%KhR16R*mBSRd*Nh#cQrph@$U)ZX%15F)A*)Q4a&3aRF,020["PFRhA"-k+aX
*$rm(XU(!SeDi9B*'rFFe8bT"!i@TFRJJ)'acNX6djQ5mN!"Z[4&IA'M0"rF5*SP
S%AXLC1pj'pI+3)d`LjB0"#j@6f&#aKJUFk628D4T)@@mm5HSc)T1bYL2m5PTPM'
A4@(9YTJ`q&mReS-6"i0,EGl4JflJQD#!3$qm'YFHN4A#lNjLciqE%h%9Q16[Cfi
C(Hih1i,e'3"$kPEVBdV")TBV1D&ZeH-3KPajCJX%+)LlBYm3rV(m&hRY4R9X$LR
daeN*-BZYZli@iUBqK'b9CfYiiijhUR9e-)81j$H9MRGHkZ[f04PJ$8i*F"ES)I%
mYJMV)6[lBq'INq$1*fSM"k4hBKjMp*4$G9Z5"pmdjZFNHp(1+ld`pLfCS#0pS,V
@65B['l-Tm#EEfX15$C0NjM,S,rCMfS[fN!$N!f$MR0@H2P2m2TfbRX'9R4`%G-X
dl'Bb2"+DCd@MIQP`Mf6,%Um$lC!!UCAUXQ8H[)0CRZkcCPKii1Y`+VaEJh('24P
rJGQ0EqBe8YI2`UQi'3TEYk9Pmb%mql"2miePH`1h-1Jd-DS&68jC3Z&FpYlD&%D
3!)k6Rp$FY1UB(r%r2'LE([jKIVp,,KUb"miS8!p8`!6%UD-aq,c4U,%pIcM"JHT
i-HXMYak`55b3!1jkCNcJZ"TirhUIrpX@1B88&B[255RClQQpC6*dE)K(YPH5jfN
S-!2bNLNT&$Vp#Vp%@iPPh@i51*0-Z+(B2G2l-8lJE9,`1bp!p1&Z*qk%8L98F**
+iqa`ZR,#m+r#JfTN5H)EZ%4YUM!'23V!3G8k`Tek(SQc0Sb#3K@*h0XCIS0ZSZ`
c&X-%6$lGJCSHNXVF0!mTYbSJ--ASmdFji2FVP&UR9Zr8kG5rXjTq4Sr8%%ifI(h
'U$j)LqCCD9hHcd')FD(("hr*HXeeAF,EDQU'qT+0RM'42)4jUZ#&-SbNVUm"iS"
K*eh&rBC)UBeN+T!!G9VM*8mCNZcPc!JE5jX*&h5r+M$$!%mZ,k6LRQm4cV$QI)h
iaFLcf3KUX('TU,'QJJD!4+XBV2pJTirkTbi)TX1`SE!qe36ahd5-G),",Ke@-##
qAP1GPG%11"km5peQbdldc01+ARS6dAJ-HV$IIET-BjaI,2Q5D[DAX3Q%'VGP38L
'hA0EEb,[B#2ci%e$(lhrfTpi)-CG9#Jh5#$2[E6H)lAXI,aA(qb)d)Fd4D"Kf3K
0kHQpDdeN%89hFbqB)-KQa6&Bih-l1pFc0*A[l,`F4GC9j*+2'XJYHb+4qdPXFSF
CDUY[Aq#GQ[B62#INXHJF*(1NaKRVe*'IM5GM)KlGm%2HUrjj!lph[qP6'c$F-Jl
AhmNAKLDBYcEI%[CiIV%0aeKFc!hX0d6&h-RcLAX%0diL8Ge"!b&*XI[38p3'"(R
-HZ9ISESqjYRCHfjZ54YP!j@,5[J0`J)"Bb&lG`,!bc5B1P[,[ENP#k&8)8kq-Zm
3fhTd2!VGF*pJ8Rbq6DUKMbU0ceceQ2+M)!M1MNeYKelR3Fq9,'DX#pNFD,6TeQ9
+9T2KjQ-a#CU512cLk[A5-*bNGIimbA"B08P'"!#&@P%Q&-cM16iCIS8a8B)Xbf[
laFDqY"HbGPT,G"$#993K,43i&h8U%&#6K5M)99B86"Xerci$a9$BhN@l+i8$ih4
FUD5VYkS*RIXMa9C`Z[`'UijpL0e-epM'9&!'F[aPA46q(!Y4Ih5d3Kdq$'YJ$,(
h2[GS'k!hD&b0$I#NTmSMddh'0MFS)U``XJDP@c$4#AaNdD8+IG'14U4d*,kpG+d
Yh@dVN60F1e&cr6BLm[)h@0DpLJDfLTcaC+D0IQKqZ$5EbXVe$ilk'hZfb3#'q5'
rEC8F"kaYTVfC49('dCbE$4P*1b"8@MkD+'+!iU*B41$rAb'B4f`md,UJ!0XVh3F
9)5GAr`+T-&ThaMU$QUa"XXR$9MXDic6+hP48Da&Zk38#2fh@)5L`9h)dbQB,dGP
@HEMHh32@a[)8CqLd!Lk9ZB3@,ZaUN!#PIYK[KGB5T)qfmCTF[)lh+#HG6+AX,+T
aI-U6)LQR9Z51L[mkSK!JYH(BS'*5h[D(UEVk9%dk&+GJ6P-EdDZT4cC4[kp1(f2
DaPrP$&+fj"N+@1k+0m9D`@"TQNp9Vep8"ckUJTF5E0fSU@2Jl62KqlJNmppmrDc
qMIIP*NJEeG+YLc-r!&Q-1Yhk'G9%em[DLQ+2!#KZ4V6HZC*erdCHT[C#&G*UKHQ
Hr)1AX'3$AUBrq+fM'Q11B9Ci"T8T!VDI35j*6440Sq'460f9I'A30[XliQ5-rab
#Ae*I$k$Dhi0A*V@K,MbM!3h1@Xkp#TSE9mBQ#8'P1P#V3RT%M6dfeXm&FqddCiE
hQCqRhBde)a8eGaVV@8&$2-Im"L`PPjSq4A0aNYjCkkKU1i1B2"RB93kZ8JX)H*m
S450M@C32Pe&)e)iJeP9C-QFm(rJS[kDUDJFVA%VSa-#pqEHLraUF1fJZ21ll$e!
lPNd$&0,1@MTbQHS(Q$CmcMl*TH%(Yk+SNc#'RB5-E0@FKN+01LX4Hh(5&fLKMQq
%YA!DJePUaFbF!'b!"KjrMFINXlUi[8JNH"+HA'PLbXK50$L1["H-MX6TXZUHc@'
ic99ipi%b6HHJ#S@Vi[-Z!"iI')eqP"AV*SmVXU[,!G3BHV`C`Z-,eib&YdB8m!5
2TjEa&GJ6X@"lTp83[0Plp6Qdc#$mbaHA6hHN#9LR@*aUJ(kqmfh9#9GbBdcEm"%
U)#Z*+0HY(`GMCi66h$ARib,21p[pjQQN&EeraRJ,e1Hj')SAYVZM@SU-'rRN)2j
8bq#88jSD3SRZNA[fDlVaD*6amq8$)4pqT($mDY#@DIaR3,r5%dEBCRi!h1C6'2b
$ifrAc(PV+d9kIj&Am&C16iPNIZUcUi[0)-p*$Q*UjaM-pFDhU9b+UX!k+`TYXpl
iUD%pSr#PYrBaEQZ204*hU5A6A'ZQ#!XC5V"a'0L2A1QJqSJ59Ld*HpGhlmpcDY%
DG@E[KF@`TY28&jdZ(&Y*b!FRkFi%[b(eIZcp!hXT'pmp+ZY@F&FKf4mMHM`9lVF
*"Z8UrAVjU49+@`La@KaEm`,($JJ3$"UiUA&-Er,*KMLGa#EjP`PIrpjSfXEa40U
lp&A,DF)kS@5CaKU6%JemfpNqbU2i9rbKJcCD(fp"VpBc2qK2%J%f'LPCGC*#+@B
BpLR5ZbB@kf8NT#cL$r`iCcSQd9`Q0[3DRGUiC+LV-Flq5H0A)"![ZFEGf8j+cGc
XAm!kMGFrTV!3T[iUNm1`id20j+Q1e*,k#L$T"+KSD&U6#Z!8PDf,8)'!aH5hcG0
TU%2+LC'+PdaF33l!F,abF`9$b&AFGYHGRU[jArNE+d*0i5*&H(k-PLEr[%TX8*c
XI6&UZ8b+5La*Y89''V5Z"9kNh883IXHk9)!4VZ1c)Pr)&&Vj5BcK6BkTe9Yd&X'
0bqP!Y$@$j5BFG9N#Na@B,f+j3ZT)CAX9DFK2$39iFGS9(rBrY)&cEEAcV)13!)d
c'f1@N!!qIZr(R2SDJMP6Qie#$QLNEXJ-L[m'JpNmqeCpQ6NKP)[M[F1LTj!!0$R
eNQ1DBEm[M816[h&()Z@rcSh(-*q25)M'&LeqSrH[8)0K[j&T%rcFe8H(k-JdYGR
4*mS%8IGI'33i+8#P830Vrm+ebN3cRCP#Y002kJT03fXFe!*Liqi&aM&GpVN3,'f
Hj0LTJ"Xh"er[FXDR'9*%!pS-Nmr1L9pLmpcdi2El![,&D`r1G2PCKcPH$5(H#H"
daA8r$rkTL"XE-SEYla9Mmj!!!dak`!8LL1R'kc5*Z,FV4G0+LZ1E#EGQdNZqA"6
4aTi'PLG[5P%*2`iVN!"26k-LK,IbLa*i2c[-YceTBKIU!UI3&3dir4le*S42SD[
8eqf9'%J3`a'H-$[eM-m#[A965+HAUIDH$H0TT,HQfRYCGrZN"8hqek#fdGUNlh@
YCBBl--TpaD9pCJYiCCS8$0B8Q*49)Qae6l6Gh()G'PHZP6bJ2hLHMh3',p-H88N
153Bk&'+Ba)IXJ'r5qAMNd@c'`Gq8rPcM9ZABF@Ll&XFr,l(IRZq-m%S06iQTZAm
ZQ[EU!2+6m4,1)01d#Ak,mRGXi"cQl,8UZYPDdYfkX6H,*Mbk&AQ)pZ&aUU6`d)4
6Km%KLQ8#d-88*E&ceIch`"(AUp5$aMKP0DD6LcSJkAliPrpeSi2)#FB3JK+Kch[
9MX#6S(554AE85JTIBD`lR2@ZJlHdj"mK"30c[UDB+QYP9qC5K8'$"EIabDbYlji
M$Y`L6HH[$B`f9C(kk(qkYQpF+Q"ZY[M+IJ5hP"I(qC8*UecXBElje!qN*!@ceDR
+&hhRP`lTcJS(PR,PKbkiCC(dp8F[$1bh#UD102idKL!i3cV!(hqY01dY&8FN)lK
Rm-eq@BpE9ApDXr[8ElGM#V6ZAjlhVmQFK9RFI&9CDli8m!NiG,bVqQ5b0NX04EC
,@5)!T93,#LHJ6AhE,KL8DZ3k$AEk6AXFZ$()2,@`DhEl`l"4Kqmahd&[8,T85fe
c+jX(3!%-Qd'$LLTc6rlrH`UG#p6k2,"'Z031er6M0K#(iTBfBhTKeASP&mFr(f9
*(%N4*1'&6k01&1"P2I1m#'lBF+9I`I"Cm$D3!'ALdVa$62k,5MhC!2&iqT1,M-(
C6Qr[8r!rX#)-C%AD@NXTd1%2-UA0+pDb2S8,rj(3HIC-&l!49hJ"k3k,PpQkHj!
!GB#ED6K,DeaQ4$%Skff2Yl@Ka8pQr1E08"'dLKK`3)C2A#DCe+e,LZPK-[Ych"a
&C0ZG$9)B$f'q0*E(qq+,c)i!0L23ENLB4LI[MQDbR4p0X(c$ea,DSYQ4NKBG%e-
QMi[Jd#mp5#TbIcIF'h@-Y9IN22$9(flH$RLAiTp#fT1,"r`3LBi[H%K"6M"&+l,
H@)&!@Z-*m-*q@Y-`"QI`,KL1IMSA96aV9,Arm4`aCV1K,L[Y)4K9(+XCP-PFahM
bRDY@@hMA@18N2b[bh,@L2T+Y$2h93!lG0R2I`KLHHd#P(!0A#jb[)X`1HXN$A%(
,32pCcRp,XXj%V'qVJ01,53%)-MF@V6,SBjT"Y5YF'Ce2KXh#Pq+G)mGeHU'e("h
pB)#r!'[(hrM`Hb`NYHC&4GRJ2VQUNYb*C+9`$SQ&eh4XJe)h6UVkVC%j6IDSMHb
0c'#fPa"c9@A0DpYUD9m"5X0qh4SiSmj@(D84S'-ZQeHYBD-A'$#m36-%'TVH'K3
$4lQS'"85!Z(@eP"53cPfRPr9EG&ZB2!mC2'i@MVZ*Y9rLFHCVY3p2eB6lYhcr89
YRG#NYIZI[+PI$0"4qUXIGL2-a@`EeS3r0&e4,+&0G!Rfe(dYjhH*BbJ,3Kd+ISe
'Y,#TN!"eCe*888Scm9)rKJ29'R801fR*rD$@*NmG&%Nb*+RGLmdQkK!!EC[UiV*
Lf@ZelII[&91N8Q,p"3j0BN'`'-NJmMAXKZIY!Y2Gqh(F[8Pq$N+Ji6HS1-AALk1
B4SkA*k)MK2Sj"6KM6TrlYd%C1HH)a+qL8Lbk%Vl3UJQ`Y*b"6Dk`DRVcRA9hk@q
`rY3m48LS@CN,%rp-kGQ1VG4b5C[2aLe2KK$4clH@A6`EeRV8b0'`GImHR"ja"($
!K+lHKr%TPNi1KGQmT0ijS%ll-j%R%4cph#jTMDrA[EZ-d#Hjd&fCV[8Y!TSPa26
S0XhM`dMb0AD9-Q$#lF*"9(AFULGGiK`hjC&MMrVF,S(Em,2!(U'H"rSc0H,ND85
5X5,@GhX$-aiGA''bi6ii[)'U4FiX*F'G002')46r#V%fLGYFcI'UG1VPa[l2@[$
$@*rZ6qY($"mIZ`)2fA%)1mPafQ&"e0#90i3B56qKqU3`X"0*Bj0cNUSrKJ#MC4m
1haHD6SFXqSlEGFlDlX&CilXHd9mmKECikpRRc@$&iCQR#',HRp@Nk!DeBfG8%rB
e(BLbj59[GU8RMh*r*k4q3eaq+[ZAAFh12Al[hhDCm$IAeXl,kmZjQpjbeFM3b!e
FNUi82jQNbp0lA4HP,@Lfa"L5pP8JcCL!rR8b4Yai2ZF,6)ji#-4Ff"Lb@)XF9dE
JjLC[b2Yf6%XYBZ(2@`YGeRbB0BUHbqfNAIBb"mfLU*Kr'BAPJAHrCGXf+"pM%f`
rPK)iGY)3Zh!,"(IP$3l!e-L[h!(*3`1XLRH(p2Rl(RYNbmKQr9P!2hVJQqIp#[#
HRfb"!kBlXG"&PSY@ZDF*$%JfYk1b&8IU0"e+"3lKANaH"GfpkZ,S0IL896!pTM9
1#L+08XID--0U4CEeHNiSIfM+3mSF-MYAP+l`bp%9"YCr*%@CN!"bX&B`La)(#Kq
"MY9PF"DTY8mTq*I06+)XG%FhhlZ&b590X,[flM*l"Zrb"8$G%A-QFUqhP6G@F0D
4iMZ)Q2`'#NLq9Ff[l5fN&X5d3`"#(KRH+XeRT*SDZ9!!VPlM#Tkb@II@8k2dRr8
S#3rkRHrp$MNGr#2L-rb'EKVJiPR+QbbFm(+q,E@Iq5KXBE"$VNjf56T@U`JXTFr
1@6%ZIUk!HVk@aP$Y3Ak&k#aPHLkebZcBh*fK$B%bBqDP`mPeXAXe,T(AKZ1XV2k
ZSe6!"ieKPVV%T+6Ud9[lNM8lcFTm4J#er86L4CVfiS+4['",-p@[G,Q!eapDBm!
fX8"hlB"UD22NrFEH'[,,Im1UZ5(2Xj@@0!-qh43)4EVXZlL-2Z5J9#c0XdUS0$4
DC,pL@ChB00Bd-8lLPb"J`dMd0`h-qi-2aVjSl3BHJU$(VD5TB63Kp92kDh)MIeK
I1KF-[E@PU9KCq+dU3[4DlX)h0#Rbb8Lj(HBiEVD"4lrbZL%C+Ch#1'(83*GIKRE
'hDLF0*[NR%!&(B04mS&N[5('YkkLTG-fj@j*@VALXR81"V+)caQJ10'Ad8[ZR+A
`SFiGjXL0%l0A@lpYF2#VFG%bGPjN30iDm%Y8%jGhX505hEPEm%#5IE5LR&TD[JD
PGNB[J[P@j9l2J`Z4$G'A)-AaGH#iCLBj*)NFpf5VZ`R46eBSq1*K,fLIk2@"Z%S
pi%c-6*ql2558K&"U"`B3kTYJA1c`'UH!DKrGT%Z"`KSq@eRiYNZNeR"5cZ2'M01
[jEH%)*j+l*imG0,rK@m!UhLhHG`bc6&i@G#Dd4lH"T32d,#a9fkm6e0+S'-4Vd9
C4X"38mi5`h!16Dmh%G`Nr!8)M8@a"$jU4RFSR$V6eTSfm%`SYdXKR-Q-!9CAH'k
C1NSKE(c0#4@-riT`3l49PU8A(@lQG`K25@a@fIJ%mFdTdr4SAr+8!10(klRFS-V
Q9%LM$0)G%ehb%UL0i4(-LjLEG&AcT`8a5kd%SBT%Mk"d6$pMUREJ$)6VXf&(Clj
#Yc@d1'&8#'FY2Yb$h8kZ5V`jaXEkYfHkQXmcVLU+kr93"d5rJ"iif`VSGh9KAYA
$YMmEj[DXAI,aQ9h05%L)GNU'HPGF49J21"!"c#I%6m6)(J%LJN-5Y-(-U4L#*4X
F0`k0'@L"P&F%dl8QrXfCk(80b$,B8CqSXQGVH(H@mMJ@TpkYXja"lh0b5@HCZNT
bMhe@44J'K!N@j@MRA'XVYejG&'mYl`D4$!M(D0*F3S+)k@!IUC!!2VBk6)Pq#cl
(8D99If&Sq22`'PQ6ILU`EC%5M9%j[Q1(ZDE8YVipY1b`(S@S9qB)'%1$rld4jTl
Tme)ffA)P&USkrP@cYLhLX4Ri[EhUSC[di6ca`AUlkiSF)-88d'aqk-#aFI"YjNS
3pL4abPkC9SSp&&e$C02@jEKak`0R[[h83L-UMpV$*XhG%"3")[GeUBfU2Df'6ak
ac4!+`Zc4pE%LTdbPeH6#!+iMVT9Ir1j(rDZ2%&!-HPbS+FH463rqrhKBY($1PS`
MrRrdah6'!"G%J)4e32a*r0aBkTV$f&5IZJDHIDmkCrjjXJkhLjp1H@H6%4KGRpK
!RRaUQN@AV8VF-(-GL41*48ZmVLp0"Y!84"%X-Jfeq)DV1kZAR01@Ik1I46L6%iD
RF"[R2EQNmlcrM4QhFJqpFc+C)#3"pAE0["AAF#M*I1Xi'NTSNV0'IaDDD#$J'ST
QLUiEBYj1eHrMSeECr"jeN!$[Npkc$h1r+efD[+(Rf'#L46@`edc-8699,NUS+2&
C2Ri`*#a62E5[G,VmmR41JXZbSY2+5D"+%D*5+8Bd!L5FiEK34rf$5mT"P@K4fG)
RFNaa8$VZ4a,+J'8+1PV'q%XJEGUVfZdQ*QAe(j1Y+2&!@[dpJ,,P"l9e'mm,1N%
K'"@dhVhmPM*N#D8fI3k14ZUd%@Kb3jrk0QbU)TU&d!36-H#c'cH,%*(K3!Q5#9[
qbAi2`"rc0+"6$RimX5MKC`RV8VAj%`qa"D6"V%a(!5eM&qTQ4q*qm0@&`%80)3[
U'`r+-[SIS[Eq9ZfQdNXde[F!SG46V$2VpL"FhCcajJT3aqaEipQ4aa#X0BYh%,f
P`l-8TXh9blUX%[["J$4693r2U)YYEBJHDH"`99VHAGRrAjNMUI@@aQF%pX5K#DA
dqBCeHU#q,BYRbk(PRp$qU&)PAl+A"PPJ9%b%@JhcQimCTIV`6,,L4aV%*cqVU2X
XJ[2"kHGik6Y),"dl*95bBHf#1X&VmL#jfGS`DU,T8f0GR("R852dVcRKiG%B[A`
1iVC9)GF&Up3r9`Am+VEQj0`jZlaaM"T65"!*(pB*crNG,VqdH5D,d'KDkPF%NH-
6aZ*X&4*C4U&D0!9Lmd8d4UPDDL"Fe"de-,eA&I$+p*1Eka@m4Bf%3CD2,8`GNE`
T5DUL$3%-4Fq[bHPMk61'IYXJqG5CUr")pD#mAf0UrFBIe6Z`68ACVf)l9HPdqBC
*Lj0,Vm4M8K!5,*LGM6dNAKT0j8&rh-[3"&B&R4alDXj)HPXA-'"2ff#1q`bKKR)
q94Q#phZ+c@a5cl6r8[hI"3kqkKGM#6Q0(T8Q"e$ZG4QkQhj&+Zf2q3!Sq3LRAR$
fKT3SArBLQ(MjG8",VKcZG5k3!"TNQPXY3lP"J2XFNeC+h1',YIR56N%qRm&45"5
Ye)f69GG#NSqHq$`CbMmedml4Lme9bJZNDp,d,k,-S`+2JZ)L+b$+6'JpfKNHFep
%em)+6&6X$l4-8N#)XbmFcIc!I8b@1q"B(%C+f$[hh"XJr-,,#rpZTr$6aTTSQQa
Jl'[!R2*5KCiM3[C8$95-j-4cVf"6ZicVJe6YiCJZNGZU2cT6fGQpIPBY$Vjh[LH
,4C&dm5eVQS1NlHa29qRj,R(JIDZNedrDE('2'CPT$MV0')UhqqGl-Tj4bKRciRU
kV)JpGG!2QM+X5Zb+GH(2l+Nrdmea'14k@UF+rackhqrI$G[Q1QZ9pVm+5LJFLQX
irHYEdaarqGR@LPNepAQlbXD@UT1bY+)NjJ5L!)2`[6llZL8cYND$P4B[ENR@@`m
P$Si8"MTR`D60V#blH%c82rqGiQmpfar['!#ahT+@0a4q1+b%ZD@MkcK$d`2TQ3I
QqlUJ"BXb&(TCermlP$i1PBX@,%S[kjZa52++6@i6ZXU9P'(KpXf9rC1UQrcJZqe
pPMI9(&8(V+Ah-c5kNL"p[!$UL&KSVX!A)G%U4#[2S9r9SE[3D!PpS5R$&H9G4K)
'cP,6$H@5,Ubjm,kMNZ$P$MC8dcV[p(P!'&*BhY-A(%[pHbqYG9Ld8I!Z3$Er,MU
HaZ"jR'#H0raU'D0b"Ee86LF6p'"&$E"4)Geb([b4"54*X91**"cE&eXG,K`0&#%
aaN#JBrQA1SlN#@CG54c4k!d+#fq8N[3aB'Djr@$Y0#I$QX6m*00f'mS-1*e`q,X
KV1rdGH4iGhe615CKb'5@AMCpqd&'&aJ1'0@+Si3NmYCZpAT9a#f3!&A(j+62MhI
*BJ9[hGR5IlK3S3'Gc3De#AXHkkI++qFI8KMCqX[rhN@djUiahQN[9RYcS5ab8&P
*mqGm`8%k4i65XH)2r@rS2lb)'5RVcTIM,D4Z!AjL1aah0kSm-"d8+MI2-)McNTQ
69hDaS*UqLYlFm+TZKM&b3l,@#B9jU-S"N!"*,Br)m#D68&+L)2i9+EIp5b5-9*&
Q(Tm[Kb[%LG!@!@AIiaCS"VCIj6D3!#e'C6E8YNV-8e,k2V6ZSTh!)m2F(q(*F4'
ap",8QUrNM,d843,Ie%GcpQeG$apaaMbfDZ'a#9Rp-R-CD&BUHbXreV!4Yi88K('
pr(JalZHlK)Ub6b`14pK-2e5GilpG6rf)@@k("(9MYD`&hIS)*@518Hf6F%PbXXT
TR4Ca#IG(2C2lh+[mJM!)YBMA'%9NR%3eA1rdbKKFYpXh$b9V81(jT!m&EdI"MJc
eTY`)(fHJMSaTjVB`"5jkFD-`#f444ei`(GZBiA*#aXAR-dGE8Z+SelDAG$qhqpc
I(8q#`b!-MYB60$b4@@&R&IF-%3*qkCYPiI2*SCM'BqC0$qpaKi@Na"FBKJq"RFB
b&1@bjp[Z!*--mkkK*pL53+#bF&c2fV$"[ZAiA)3l$r3XMQTfLJFdY-6H5IqZdh%
q9fE!f3k5HILcaSSS-afRc@!L)UP18N'Zm9'hR`K@AX+&$ZR&-jjXiEjkj)%p''k
E8TXG3,IBG#@5AMa9e*U+`eJ9IqYq1'%H8qEK0lpQaV1hTCJ,(Z*ENF@ZEmL9rGS
b'1Q1&[L-JLrSJ23h3AfELBr-"1HP83GIPf)(ap2GH(-HaMJMkh(HYGjK6DpCh,5
9eqM,USTB)X'V&%DqK'f6r0ED2qdNNqG"#RQlIR#TXYd@"lljTR"i'(KiKGkP-D,
U)[!UA42',',S98i6ELbmS24%1%6KDLh$93fY2pj-jqF%fFdC85T-h1pFi[CY43K
9CdHrcAm#6NB[@Rlk2Br5*@@%kT%$G)R0e1X,C&bYJTUeB0heKM2HJ1K(AFSEM[F
HMIG[G-f"#mA,YS,Q#6dT*d'-c4+MZMXM90YX5BcRjA-f02LU(VE13$6eXhVFh8C
Xp%KpGD+Fi`VieB9a6[aia6E'XF(31lN"9Ud"!mYVD5&[ibU420)El[F+3d[--2B
+!Z91i-G89%Hr5lrFhmUUc&r*Mjr#X4I,JaEDhlal+@M0[,!PDPqjI*1+R55*@aB
G8CR3@+S8FbGki!R8R`29S9hUCJC)K@eK#'XCddm8Vk3Rr0b@&Ci[U[L!5cb5h0H
dII!B$N'P26JaJkS4eJd'JQ@RSbEH"4+k3&m-$a1Mb502NGa#'GBT@4ZZRib+clk
$`+JimS95b1iC@h2$fIBfJQJkXHMrc%ER4hlp0EiQBeA%4@f@A$UlErpNF%+5R**
9Z2Z)9SL-)1DTBqX!(T(qG*b)KkL)&&Dj-bSA!$R"m)GN&0$dhiQZCabDlf'r4[c
C"[C(Rk*9"T2"2LL[6UNT'J"`3SiJqTCMl`$0@VKf-Fq[ZaNSIDhI[G2lpeAdR!C
F9%VSH1LlJqMbRqi`%pUGS`rY+mNN['&[NGTRrDMNj56a6H@LlY[aPjCQIkHX!k,
&adbXdSYTDfhci*Q`F#6$N!$!1pf)+@pMd35cMZ+e'kpS'J"4bbbCN!$Pf&YT[DF
,k3P,GVJ)Ve#V54M(MD')0"0cM2ES*&9DSk+S4[5E3[(F%qLTQrkM!UH69aMLVTl
@HTa()4E11Gmhf1T88#1)YBPD0&+4hB#c1LG2+qRd!Y$F")B)[fPpRl%8`*N,Um$
mZISd0amQ$20BQV&,T#4Y2ZZ1Hq9GRSTbU8UliXkbh1@m*4E6"K,I8cEKR69`fU'
V"$LNHNcd&df8UQS*Y#eTPTU4#'UIjT+213"[j'NTmH#'rf@UYNLPYkqE$Qq#ZSj
ac%L9X46cYN"5S5A8U)XITUl'QN0E!)k)"j%H0YP&MH*P"p6J'L&QiNj%LHHRCaF
XP1bS1IDdf0,RETdF#RJK(EfDr0i*4F%$A4G56&*)$$S[9VDjA4H-ajTjA@40,")
bb"iPU!fTJ+1I&EcH42)d)#e-T2S4$D0TmIVj2+FrlHC,cCk&&VC@`F9-1b@G44E
!M+QG"(i+d8V)`546*J4T*McQN!"LV[iXNYlqKTi'a'3PBMTI8e"p8&LR'B$+)YT
EE1#"R*JrqfN#UrVJ[Me2Hf$3r00"[`eLR*UdJ8JGH45aCGd-B"Yj!mqLHf!chUe
Q[4erefGLK@4LYfY(KiaFd%X`0&-GR"a-`lI#qeL)U(($C2[ibK5"D(UK"@f5NNN
Y0'D-+alZMY5TJ(HjqhD-,V"*`hM$cHebp5A!#,L#%*,(9-VJR[AThKmZTdSdRfG
U+C(0(`ESH8[`TDS!l*(&A$Tf(iDh'E2#BAjHk6c+)!Th[,PFCqr30cL8`$-Y0@p
[R#eq6iq8eUC,P[0*bNCS2QKdjjB$f!fF[mKqS4XJB,dp5U2%f&i1ka-ll*`HRiK
HVSDAr1NDePGkM(G*Cd+([f"'mQUlZh%Z'Rqd0RaUN@9DRjEI"T'3!!&'*Gl'Gr3
#H0A@6qF+Yhr`EJrTAI``fe5V[N68p+J`Cq(50ZSQ*McJkT[r`Va6-S3SVhr6'c@
h)kNKS@)&j[Gmr%V"$rF$%L8Db#-HT,81"GIU6(3,V)iBqaLmmiDa5m'2hiTpEbk
8$L#S,&d8$D0+rc6bR+j0Q3#N3I+%r+Rep92j%1K-ablLS2`f"VS'*,A05ijLc8h
lmFIeam#!IFZ4!c&i#"DLLY[2p2efJ1Z'HFR0Ga'j''L"6l$X$4b#*cjKA[ef2$R
(%m9(UlQq"VSSGTkaep,!H8)pX@ZII)AaFFd[0&05"KI)AF@"H9MPL,*phG,6DRh
a`%N%k`VkjCRM%0R1a4Z#1aU&eH[R5a*F&[rRld"r3+SNCJ!'0,R6r8"ZrkhIa9P
3Lcl,ma"IXAYT9NH2"hTh"56QTDMeRSPp5eF3`R08R$@9HaE&-`*8X)*-e!3r,EI
Tpfj2FBJK@$Dk9K[Q1B#0IS)FlEFHb!H6(c36Q4+Y'HM(EqPIAme4jHdF9rfZf&Y
,BBM138")0-!TfXQraXHC&0)DFqE@8'JE6$aMi-#KY5$HZh*A8pE&,qKACI1VrpD
*E`CQK4lH02fK2D%)4)M&69)9`lA!r5$Ia#IpG6PeV*N$EDUa5NKG`(jIQPJrG4h
2rcpf5M0Gi4V4MCd+30k82Ci,ITEUFfLpYc(b8k4@&ZhRZG0X4@4,&*&"SCa&'l@
ABfB1Mf[+2P1Y&iEBi-CM(2,4)Tm%@LiJ8d0JQflV'')6U&Yl%X3SF"5fEbZq,%-
VlQ-U,rJK'(6E#-$0BK)qTJbkSaZ1`HB($)dlGYZJ+2J'CqBA9(VMcZ'`-0Na9#D
`aKKHN!$mF6$`,,2&rjkaB[l(PmiqC(dKUJ$S9RX8HA16%-,m66V4*9H)apD6I[b
IC!p!q@2qac%$aY"r#rYN)eU0LJK!$#,kASU@biRCEGaVCmc-PJL`!5X3X`-Ebf9
9Z#HCQ,&PJUmQ&b6Sa3J,i[#&&6Q4M0U#hFbQi9)bBG`%Sa"I&!aIe"'+p$ibpba
cc1-!!%Sqik*&#"G6HPI(PJKD20ReG5Z#$Lf"dV%D-XjMj[b`S'5B*)TbSPiJVEb
f)filPGf-[Z2$TB"!Q*TZ[8[3fKSZ2pALEdHGESf`S"8,54jkNF"FECJqAV3Re9C
Ia+d%eRSC8[qhI#k)hMY*eeY)TkR,jpci6#11F,$!%#0(2`T1&**`5SB+J8E--2L
'QK%%&8@X9fFd"(iP[S))`9jYR--hX"b0B8TMdEf9p`Bq[,3LSj5Z*$3$T*)8)EQ
[F!6AFVdcDkFa`T-Np*ZRD&F*SG)IRYN2GhTP5H-Glp"H$hCPVGBA2HMPIrd)HpH
,rFGJNbpY(rZQkb36P5aNNH"cCGMDA+-YRENclTG4['4cCa#01E8B0kaU5SN1"'G
qh1qDc$6!ePVadfAGF$0p"RZ0ZCDQh'(B)ZMLMQNHPkVX,)2T"pFVT3HZc,B&5#j
2L!@SU"-4c!VBBQiL5I"!LEriRe"r-!4bVC26#mGHSaqRr(pT[AhrQ(84,CR42-f
fQcZ"qV931!ScC%dGF2$@'&jYpj-a8@,V!kJAf#bc(jC!VC!!0`(CXD2'C#%Ll*-
QQ!a0P4R!UTa)VJ(AKrA1QdN!+LaGSKQajM9,iV8prN36Yi%2`eqaHD`rXdI"T"9
N89kR(Gq$m5R*-,CCYEGTY8rUa3IUMepG+p`8@Yc0lb)9"pVp#0E5PG,ACjIAapM
lr5IIa8Q*i&*qK!N-`)F@33+'pk+,S$@f"hE1!jBc'T2V)1N(B3V+BPK*q85MV"Y
UXG5pq$p#aFVcr2LSHi,RDi(H6-CVCeFJCPMd+`A)8jhMR![r('F(m@G,NSS(#pi
dr+0,ERC92!XN)+l%k``VX#,CE93,[B9#jepJ1d2E@9S9-+"B0&,@a&9#@cDf2Jf
1H3)peU&JQ(Y`5'"Rp3K5RmiRl$)+hPi1!J`-(RY,b(X!iMHS@K$"0k!kKRk@4HG
B6C*FRpbYQ@5*K34VrZb!43!Y6l3U&D3reMrMphrN5(#U8@,bNCqdElDpJh-qQCc
SK4H$FhTX4f@['ZlF$#6mGd8'0,Ye#&8"l,1)P![r8DK5IXR*Aqi&"YA69Z0$MP8
mLAdq(4B'6)NCMCd(h!+NkHaPThTYp*S$alNa2ELY%iRLU2ZpDa'pj&bRk6-Mh2U
kla+0!lG(IAB51Xpk)4mi8Lf)H[j&ebPXUd-+(2&(8TcjE!!(QNhI5@*'b&RL+*2
jCTR2kkjN[#kUf!9p"&a+#B@ZF0V13TPh)**%(h&@Fj%!YHF&#65PYR9ck+583SP
4Mf8`q38ZM,*al''9@"aIE#CF5VAFU6[q&lqci8FbNq6Fr`0-cF1T4e,YD'+X!&@
jj6fkl$3deib-bj@8`RN6&9l5j&"0*QpMC,qp),ajXcIik54U(!(qqSZYd$6jY4-
SkNQ+02@L+"MhVb,S%dDalJ5da2Sqab0k$fAkY,'prqC@*Via,!r$GbQNbGM`DA#
8p6epDqQ8mF0q$-Gq$Y([cL0F4Gr8%,DqCZPa2U#!aREG4IBXJEj(0@%%1lpljGb
BYBB+&R4A'$JL`DF6@*!!9NkRp*cR4i`&@T+i9B&GYP*!r[K!cDHqFI&F#*4ZP9H
5RRj+Z"J*6QjciEpG+4-ZLl,T+M`Ic*XYcLe9Fle3chZG%2TH-MK+!KAc+0U`5$K
B$E%,Hfb$)iMI6MCq96!A&MX#[jJIUVTIUE5Xe!*@S-89cjXfQLTG@i+aTXU`&K2
)K&BbCFGe*-b5p'52NH1%U9K%dlZ8&!!a#Xq1UQXFa5(,Mc&%*Ga`Gm*kr@iC,LN
XVXhiKi&f!5ZB5Ijdh##-!0!GTI[Mp,#-U%-$@6-IXKk`qQQJUGph([U#)0`TLa5
2[#dkijDc'5S9j238eC9rfEG'6!G!DBV+FELK60,H9VKC558NJ3!HfY8RH)$0L*D
,Uh9HDAX)IdFF(IDIJ6rjZHSlC"k0'$0NE9A'X0F$USSY2T!!qrGXpeiU[$rjbpp
Ecr5&*f&6LfDbJ-TlH6XJhGP"h$3E'jbfLd9C3'cB'VJQkr`bFhqmS'M!emG`Y-6
ZpeRN6Hmm8Mk`Y@6-[iRNGrk`NK%M#eUYTc'8hh0*d6m*`G40DqSr@S%P9&5ehl6
B"$&M*`5ThG3R-dS&hP@SJfAmcrSUS0*a!qM*,FrDb[P$l@Xb$q323AK@&`PiFr%
$d0[e@QrJ$M4Dd0I5@NkTq%!i9HB&Z`IjGVRC4)c[(K2G!r-PU-%!Nl`DH2S`PPI
DYJqT"rb!$E3K@@c`UD'@@5G*aSmj['#f,aXXp#G0ThpVrSAI'Nq8e`hZ88VL9R,
%Ji13!+51RFp$aD'0TaF)GkaME'RYlHk5l(1'aXQAG$(,+,d61KT-+E6fZ$'H#R#
hC2e*@rNraAQcN!#4rLT2Nfq"+RCYB'C24P,cN5@GdD((9Y1!!QpTZ3p-AfV1bBZ
MC1`qj4%9pV16eZ$A5fU!04AFLd+c69a1+df-&bE4e3D-!!M*DhLlaR*Hf5$SAL(
"R"mH2[bq9NIdpK1!HJhbP%b&6%4,QK$BDUkAk[f4P+B*S(MS*N3G,a1r"rXe1`c
9pFPYCSe!K3#5e8d9@k+N1XjheeY'RG*Se*qIdPCrJAG!Ib%iP,$-J%5[&DZ"XY%
8S8K+3jGJ+ek3!)9ZKI9iDd58rdZRYYY3!DY+)i1UC*%mI(5XBkZJKY01rXEPLRU
ZaMbf[pG0YX9IbBCT0j%@ae(Cej!!#GRik%@Q3T9FBqh-K",%41+Kf&rb&aQID'j
1b(JLEcF2V+'a,DfkD$Eb+Fk8IEG&e@dPe'0'&BVR*daj%2*bJdmKT$JEdj3LU4Z
PA26Fl3TMJZ(cHd*G4h0qDcSJ*L&*bmcTCVCDekH*%#(bNTS3U2Y%TCFEHUG%%#P
C,9%EQT`F)IjQ#"AjM`THI,SMIMQRb0Y!XAYr&S-hkAR(S"S3!YZA3%aZ##GGp9-
M@2Zd6a-2eV5RT+ZUm)L$Jd4RIp4!9hSCq2PQ9JKmMQaVbik`"UCX#qpq%+q1B%Q
1d!J@bi2Ccii'(+GMfhPFb$&I&ZV6iXc`C$VaCbP12VGi1cdRGC(+DDc-R@dUJ"#
-AY34AXiGd,'aFjibK((XCh5$(&C'SlNII6#[ZE[MHPFG+5dF5'T3M)PRUDLG()Z
Yi4*!hGBVK*,1XV$eE#J!FbrPFH2kijiaL1Y%*$[l*f**`'M%Jq',)P6Y@b'C1Ki
[NPU5QhCPrh)KJBMQA,'ia-0-K(1*ZpI%m8V$Q+KCQ2-*5kEr@@K&F@8TDjI+XQM
1kJD1#YKAk$UUd+kIr@8*Pjh1"&G&BG2k&&$2i5HKrrLKdf62`B2[9!TP$'JYNcH
@A1TFIGXB6'F@R!KR,S@DXLqB%YY-A,e8d+3$T(Mb6ZA%SfGI%,&+K8jT*eff)CL
H!I2X$#CEfBcScTqS`[,l%($#F'DEhEG5YpP(8A$!KEYC@1jQD&R@%F%8FYPL&Xf
((AABXAS49fLGHT['A)TlXj9RUXkX"'-r%9!6"TiI$[Y[6U(SJ,V%"HpDJa*28i2
@J4Z[er5pNYhF)9*5NQUpPDLiflU%5b8K#Q5rKYi828#9("VI8@Hq5'rB&1qB9'(
@M`FDmHJQQ%,04L9`)hberX+RE&))diCfiT`8G#9KbmE5GQe9MkG6lXiRIDeK!K5
)A34A%dS1cX%S-rUcIZ9Y6#J#j`MPmrbXPpMmNq*[6bCaPr$-k@'fH"XG29([3[E
mJADUJfL`R$MAF'p2hiHVQQc[QbLmGa-V0q6e[2Y4)iC8@m`K0BAJBkXPb0K(*ed
rKQ[`kj!!68TM5LS8p%ah35T6c*!!XR+`3&ISQq3BU%FXCPJ,XPZ@dfGNG9`!C#j
Z"Z5(NTm*m8%Re,clmPN$4V5&rQRpr%`N2aA[5db#$LfA3EjY2drr1PiIU-ja'(&
p,$H,ZB3"c`q09fi%ILXB$DjGB3&F6kq@lH)Pe#@R)6&D*r*QTlSlQS%qaCG*1TD
HFbJc+QRX'LI+mcQm1BkSZe'p+I(LSYYXKPJ8C362P03f,PAL6h!DSjrSEA%BVZ1
Rlq(lr3Fp#Z0r&&3i2*X)QG9C'[%F&ZlXU'1*#R1p3CpY#E&1[8jAK3R'Q1T25IT
eH2DmKTj`lh+I1#Tii,I)mYp9CZa2%-Y+,,kFpP&*@@U*qI3IA-ck"&3f`plM9Fb
kX-@21X"@&ajDSma*Z*EIm8a18kEYSLD%5P'25`'dL+(L&Hq)Zq+&)cHDrbcFTfQ
pjPN,PjYN0)kjX8if6QK6`rXRm#5H[H@9L(G2%&DFC,A"Hb525!49@%#J1IJCRlr
ND!m4KIfQK#-d[0S6CHAa`dDjqd(K8i%@A%c99-U)p1ddh6-*e2+1LQ4bCQZeL@I
8*Xp*f0bDAL0YZ83R2Sq0b9pZfa(JeZVR'"i4SUS1bA,Paj,%P6!dES8TNbFHAk&
-8a3M+Y"6iN1I14`!q3CC[ePXX2$b%JJ"Y`clm-#B,IJ-raJe2P1M`BGr26r6TTG
rNG46i8G(Z%!5ZIM8NikEVF'2a8Ffqk&!&'aX'PIHfqX%+KAp0YjlH8+aQ3J8"FB
3ihk&T(p63F@YKU9QV)1SAaX5YZZSV()*Xh4lV@a-dpTTAUh[S2M!9Ca3kD)pHBX
YRe21c'GP*G1mQrNQV'*5*T4FPm&A8M8kI8BR$"XbE69FMCQ[GrA4@5-+((+p[rP
$a2kGCP+aQEN-)a(DlL8e+B24GLq"i#!lY0JDeT8F)+kdB"[2blUf-RU&(J'dZh+
K2alM("hY+D)N-$,,+,BNp,3E4EHhH6,,')JaB)SiS%69mjS1[X$!l8kH*Pm0[eH
-p,D&6J%Zhc"c$ph@"B9#GkkETcU!k1Gjj9m#VGFh+pb4"YNbS+99U5Hp@hIa6N(
q(AEqek1HGJ'H49lUECIadZ#X2(bS%[eeqFEY(T(pN!$TmBCQ+2+R#9J3@&48JIM
BCP[GM'eXITe1qb5*C84GX$rSNab'eU"J3k%C$E0H+VT22-"LSP1d3mYIIdET-K)
DJc*aP)Y,E#1I5AHl6H)3&VqrZ)84*+l$8M-8d%D10L9Dr3PfL'4h,X@GPD#SJ+I
HXBieN9jF"f%"@XQ#C1hA-@(*6bqeT)VKmkDZ*RZ2[mVc(['1ci8AimB4B,'0h6!
S(E+'F'*5eh$M*Z-6lc0i`+29!f&9S2p8,Z2dP1BM3J8aMUX+IGDBj$8[j8VIVB$
4$1@Qd5qelpICERA%edZqIpHIH@3)-%'m@Yq5Kk&Z969[jG%8V,CN`4$m1KR!*1`
3*&PlPTM99dP&k3@T'(@DP"kYJHBp`hVpr"j#dRQVKp!SG8RQ1-U52GJLVPVm,1p
84KYJ-UXJrjfKIFEF&Sc'Ch4pCfIpC@Ae5m"Vjp4Pq'aQA%*34TA@e$E@LJeFb2Z
"U+[H(l`!HUXI5UMFlP@$AMrm@A3#qbF,r['56%N+!$Qj3J1$qRVA&Al3Df8U`8H
()ka0DS`6CEkYplJ'0ZE-+1S`c)fCqp'2ATT$l`c,P92bE8ZNDiEVr+`CTJ#dhHi
m*jQZBrJXp$1VFaq)Zc@VNA)"mdk$FPAJlZ&N4X+8lCB&m,!RSb#(@G)+Si0G-3i
m$YK@eS`pcbDFKHmG#SGh`d9pcZ1%QJYX3@aLZ6rm902+CZ!K-Tm+88SP,R+bBjT
jA8JLU@cG*"!PABN"PlimD2r5lHIAf"(ERK)e@pk[)K3,,A3q8P2lb"%HCaIZT)C
5E2N,NRRbZ(4jcPE*r$fG-3%h3rM90LSS9$"6-851',3dS$J2PK,N[K!YUjQ"0)D
C)kj"0"-,l2CA''0a'%RhR*(DN@8RE"cDpFXF%#(dJ)`Lkmfe()cDAha0cU%@STi
AI+Za0GjG#HLR0l8rkMiaDA$aF)K+TrA0,0N3[4Q!CLl%j9eKRBTk)SklG%IN,X%
`93)mP&cZmpSVUTZjTKLQ8kHcU(SNp8qG@qidIdi-hQK%beI*FqAm#N'Z#&(%-,Y
ePq&!YA#HLDDl8MDL8'Q"l++2AZmZK[$LmdH4$3FNMc9b3VRiT#$E9S-CL2J1BeB
5#2CZGREj2aI1a(8(-RU*0PhMfZ%j&2bR)Bk3!"0E0eAqm3MPPfTNPJ1YQYJJ6#$
$d6*Ur-re16D4`i*m&,Rb%KCBqG`@fmK"Z[(R9CQ)N!"NNACG@+Gpka"G)ckEQ!$
K*0-jG#0V5h2N,#)c23S*P"N,XJV4DN%VASM20*1`Z!%I9$C0JJQ4C@JcE1*refT
HcU&$QS!l'cqJlSjj"NZT+b8#C@T&ShU2*B,5!4@G80e'*$i)4H10V*-R`$VXBj+
2XJ06Sa3Rk9#1QPKplbIcZ,d9a4XeK4(GI(2#hDSqT(ehNMCaATiUSmVZ[1C'4IL
H')mG"3Sl%ClFMqSK[2eA5HIlJMj-r9qSV#QT%P-bX4%U65Z!@-)&E@T+Ue`YR2I
!%c5dEf200#(%j0`V-D$XZMAVe@d5m`&mV(ii&#,Z*Em#aMb@6&p$+j0K0+'f+Z1
r-ACd[C!!CpEFE%ZX#,ipdT)TqfVYG1'[`1-jFJK2Db(DR5ha6UAHN!$0i@1(cf@
QTim8bfRFj"m)ZqEY+EQLBl9,AN)'@,aiMZV9%LCc#FA6+eMp$N)e8DeUXJQD00+
#GUKcX6cXPQ-UAmBTC(*XKP(IN!"VmBe((!*Ym'lIC#"KNXa'd8+N&r`E4i#NN!"
#hZa4E%"A*`!*d1H50!,la5kXjiIqTTQ$8"@d*"jDe$mI1#ddbK'R4*@ED#SG[#f
ZU"),kL8-(#LXM)VqDHG('1!HYraDU"fbaU3'Y0@+l21[pT*Pp8'p5R,54M49(mV
*FL)kI`M8L1GX+JEM1P5r1VU'p[FP&E*FNd&N4b6bSSK$"Pi&SQ9+'!`H-i28+c[
E08C'00Y3bI)mEMBZ3AU(rmF9lpG(`AiPeP0FlT&JD!%ak,"l!1!cS&UXlh[jA1Y
9p!3cF0CZRhANjPMC)U*Hq+a4YC3)!4BLSdMMpX(8rU4HC9H1S3@rZRH#HQJLH(M
9H'L#,Ul4lpQ@,-BT(lk#$DQh-Q0ff),[218Q(%L,XqjTI3+IrN#Rl['QSi3KX5G
S3q(Uk3a-4Dj-Vl%Xqi[(rKCX")4ij*+Th5N66Y9h2Gb52YQ2Bd$TVZ4hF$&3UdF
li(8$0bV8fqlMCMJGJ-*eFYZAd2"rP--k'#4)ehR29N3MhIM`ANdUd#,K2$aKk9,
'RRTQA9e8$ApPb*9LGhN"G#5bpM3[Xr+ahH4#@MbSmGPD+DH*6LcbcbV4!JMIPB0
0DHcJBR#ee(+idrACPRIT4'dk-dSL#K3+ZFbM"YbLUSVrMmpA&NUUlZYV5rrE4%"
JrRD96+kZrc&[*Zq(c0-fCCP+)Mhp33mB"`K5NZ*NQIUhXIX,@b1EVJ(,UN9GGS6
h5'8V9hiX9[daNFDSrc-%%h0)f,3AdZ9AVLdrFjQ++N#dq@f[LHDi8r$cXajQkFE
HmpSV2Y1"['K3U$af8C!!p%@cbjZ'H(6pmLS-6hXfqb1f5&Xm([NY"#jZ$4H('+V
eP8f-`Sdh%H,%GPqE3@V3ApHiQjD66)C`+fM"28qPGVE[Z3lE(5Q-hm'H4Qa59[H
3!-()(U`Gi9Y,1QSq,JQJ4)Y[Xp"'!*[8dBe6Ck1P*3Q%B5CM9#H3!0,I9*'qDJi
He(bNrTJqh+M`K08[e&EqpV1I[-XelYK2lq`@XppLb3j&ii[6qZ4X2BmElJ,`*fV
FAk#kheG)`[a2$c,L)*h[EbYaD+Q-lSd#X43[0XLNi)0)T6a*3Z8f$5a3!,p*c%0
RfV*Jh1YR+)jFj8P#I6)$6bj`Kr8G&&+hr*m[NF[$HmqcYCqp0diRrBDJr#F*f%@
0RAcHKMmBTb2d!Vffb))C&Q8++'*'!#PPKiBI%8qiHXD5lNA5F!F$MmBVlIpdI!Y
qb#[JjYHc*Fb")YA8$rp)ja-N++QGSK+LT,FIM3QBiD,h3UMNM)CHd#([2T'9lXp
+Ydc1)'r@dV0R'CaG0mD#'l'imASl*pAk*eREpZH9LRj#fARTka#B9'5CG2L#00k
LeMU#SU@F`2PDa8BDaT+T&k,MQ+Xcr99qf5)ALhT(@"jmap&cr4YB82$E4qDM16L
`NmbbKFp')K5UKi4)QXF&MY4"J6l,ZfV`XF#[!hRD!FkSfpGj%1%!-Bqiaa*q2X2
#1eqk`Mei88"40rmhRA)ATRA&hY0eJ@Sk8$2FNQC,i!D,EDjM(KCabIkrM'$([%"
1q`HE9qEUZT64e*J9`,XI-KAZ4V+f9KV@Um5)'@`iJZKcdr9F[f`beRbE+22Gr14
ZP9C2dPc5@arHH`f2k6DBP$fqE8B%'d@(+ZjLfZT4,2[N8df@0P5P%CSjEXh*Fpf
9"KE(6fE(NKQ"Em`q$RXM*"2)dI4@((X4*b@l0S*jHebCI9km[KL%kqa5DNG*DKR
ree#AeV-IEb##fS)$&r15`$,j5EZY!Vq)BS6bV$''TqBY[%5Z+Y2*ak5j+2$h#ZB
#rB5Y8h,`Lp$62T10%$8`d``qkf)+1Kd3iD&ZN5A'A6,bIHLMkpLbHV#HP[AG9!U
3!#fBGEIf2#fm!#VfQPRc,-BKH8c%+NA8P9RT,JjAM4AANqYr&PUi%60(Z%-"-LK
(G(EL2C(9L)CI1l@m2`4[M,2r+VTR3Ih&5R[S$hH(9Lp3)NC@@qF4bq0cq-D9kT&
+RCi5jRP@8bp+@68(ELPS8`kD[NK",U5KS1$%%bc`,JS,5SC$!I+D4pBG%m&"K,I
V*L9#GdIrFV-dNSZl*lM`I3)CP@6raYd92!5RRibT,6-`EEC`idHA2bM&F9a1%Zr
4(EbiS1cN5PkU,Z3m+NLhVVh4E0V-IY)'IGqGF34UINb[%9-`C3Q#UX2Q[!M(TGG
"(%aHRA"'3TY$h9mI,$$V+GVXVrSEIdD8-MkLq09E8-mBAPaTpNp-QCYKZfQMDDR
mDlAPkQdjmHA3mDJiqFAL81@fhRR-PNP&%J0IH[8!0p6Y-XSbfqS$mPjD(M4U4L4
SDZNcK,a"Y&hFU8,)bef4#A9*a1(LM&Dd#SSDXbV+p!N@eE,aSJ1*i&JZF@%"8Ak
Lh%f`!FJ-J*TD#q9K*H6mJ!"eBD9C-&2U5916pe&Ta#RTD@%XAil8%i8,H3RU)XV
KE%XD%QBA!pBqG!EY4pP$c+2@Pde6Y5M)[5klC[4,e8KeV15IM'h`3hJ30F$b69-
-8358b2EI&aYpArK@Z)1ef@jXGI@@CTkPFiC*iA(RXEbXbE)1Vr9Vb[d@X66K5B5
kp$T8GP[06B+VeZhekhChVadR)91C'9RMZbrM&KEfmbj09LjZeH`09IVGhhfr10X
r6&ck`rKPADJf14d5CURa2rkN*Fm1#$LPX&)#ZG**0-D([1b84!%BjcTJ'I$+5J6
`jV"TUPM0IeY"eZirM+bd'jqhN!!&D+b(S*Ak%iAIJVXb&mQ5!lr0MGiJ#PBMK0N
0mmK5,TrML9,,,L`*0jUpR+Rp#qJJ*K'BqZEjRTJ0G*ZDpr@I`U,9A8m%qU$2RV'
NPpQdHI2i9K&d`GeHa5G"'V"+QJX2Y(qSDe*5NVLr-aQE5pI`GS$qM*Pmc(#P-Vb
c[a*5rE4EDVCRc5"fk)U%iUbb33*FfQ-a)hMFIGca#9`$)TiaHI@116EK01M8XqY
iZ3ijrT-@UUD(Lb4iJlUNRKqEBikBS&V+$R$UJ9+dC9ULBF852phS!KMr)p!j2EX
Z)[R2414Y4I%[lYA-9lG210[Ue9$-&ST0BkM8SM0MK"F!mKl&IC)[&F90$0e&8j&
KB2kU!Qd"G"&fFTRT+Ba4S*YqqmkHScH%V*PMa-eX61i1jC1brR[ZF%QM'1`,Fj[
U19+,UX8DhFZ2XYq#6f3Mi)fVXqAfJBPqP@b)a+!*d#rQ'hEM#-%F"I#%IFZq+E*
2203-'8@022+hdFXUQYXeIA03@*J["!B$j'Y3NJm1j'ZRIAA,FCf01XlA28I!rX8
Hd,BbGb"e3%YH8GEZ$-)2f"5*pY`iE2l"P2cFH3B@R9@(9RLA3Z@qiA!*p$UPr%%
Yaf%IdG&H'NccEIhPKe!hj0VSb$"I4hN+KG$'e'kdVe8D35F1)!Sip(+5jZ0rSV)
`Y0@-$"R!#PT(PXm8jD2JF139('ejG1D5QjJGYENDLaABPKAYlU0%,h"CBkSG%-m
b59K%G"$ENN"B*6[ZdZ*B@LVXH@ZGSh+B-NCH%3*C$$D`Bdd)+2L0PQSS9B#hrZU
%5p%BYB4N3X#"'ZGaqQVdMZS2VLlJ%5q#4H'NeIHfeY'H5MH3!$m$2+2J2*ZV)pX
2b0ITESrprZA'BRd,$"-Z8+4$9$b-&1USjm6pCCCrdL4eh$M0#ipKS%')qlQiA,S
MK-'`Klp3!eKL2e@EQK[$#I&Pa#[e)6dU)`4p05KXB8bQ(D12BMQNMbbeD&h)L"N
AD)ldQRb4E`3pedDr1aVNmR[iZ$m8BVrrhkXN65lQFT63"5*QC%dPl,&8fK-U(*R
3k%ZCCh&dlJ")S@5C0fdR@KCHL*UKRF0b&HZ1JjJMme`PbqV@J-5QiMkFKpbJP"`
mll@d[d1%@JQ91Qcp29a@S2mcj*HBP,-53C'#6'0L1m5Vd'hA(q9UR-R+fAUJ++b
Ch0eF2HBP-bNHF1[U(kDA6mXRL)$*pjQ()+)rN9HaLFMAcrYlBIRVP(KIPMK&`[,
`MT*#C&0NS@$*8S94CBRCN!!Gp[l$5KRdM1J4UVNl8)62+CH2U16j*"(PQdcN*Ah
M+08F#U%GR4bAj,ZAH[hc,Ke9K+4`$bC5$eQG9h*"9II[ZCL3!!qqb&%$9Lmq(%A
SdbV0!a4iMJZRl-[0%qh"pTCr00MMlR+#65kUYl0L@5ZUKF8%G`1PD`@T@h4p+!8
krpX)rq([qQjRQppVlq@ITqe'L"jrScEbjNHS1Bqe9$N5j9"C5,E(iMd"R84[1@r
RbSU4("P6%p`GVe%$$-S[2HV-[lDaES'Y-D"eJ-*c4H6$GG@JqF)c"BVA**DE!eN
0Rk1*BF'QY4bUImrDfY'Za9$)qD&c)KF10eXCDR6RjQHrpCIK8hC5Q9dV(D,C(R'
-S+($6!F0T1%0c49(LT-G)8f&L%B2V#5m*)T%q%jHTbPM[pJb5-i"hPeqj`9BRRl
4Pq@LjDh%a$2@af#lEe5lLLiFi$1f`AA+1V,V'8(KCiXlGj)(#aBFP9NF8!93Q"`
)c3N!Q4EN*la'V"S2`'B6MHKiMmCX%aME+dKHL4U2Dh+4K5$8Pd@p`i$pA6Lk&C+
5A(Q1E4e!Cc*AVbRD6ZFbMj0UDeh%3NSKD3KR4N6BE+0V-K,6JZlp%(2aLmamDD@
a)q*LEK6N"mCZl*A@fY4i%*e`Tk)ME019$jGh4#Z26+ji!+b@)53)ImHSrhHdCM0
!iK*NXk1UppfZTCm%'BErNdB*C4$d9[S!IP0(&HX4cTkbI(+H*rabLZ#+H'`&YiG
(ELip'Ne-+P&,FKM"*4cE'i[U*G-X#GfQi2)dYDY@)`3r@1A+(LP1Z@[D4B!H@Xd
MI#X1#mA"m1-0aGZ[$fkNJ$I,8-TeHZkSf@#Fh-9DIDCamQ5jb`0!q[IB!caMd`2
HANbaUi)'X0I6ND0r%'m9hEG#im-(XYa"pH48D2r,S'N!EfZC30[P$!SVKEVY`jD
H@cp1jNU6h@QHp`M-IIKcSKQF"%'caqml4h"chBmhRhFZ((@!1P(N[&JQHmTr0%d
h6)SABM10Y[b+U%!6TCD$pDiG!RG!k62LT06#SbLD1Lj4Veh&SK$(r`JELMaheqC
"U0F3QLr89&3F3+V@EC-@Hl#qd+R'pUaMAQ9MrI6hhXGpT#6LTUhVldQY"-+IK`P
0Aq'-hp)-Cki8M(m-MiI1H4P-iMKDm%QB(YmefPPCHkT6#Npj3D`m!iAJICEElkr
i5@I-q*Z$If[lGa`QLJGq,a@LUVY-i-IkXkF*%[DGJ$q`[L2rB!SPCrG'BSYa&8r
C2CG'3D0cFP*4UjlbpF-E)VDfC"j6akkV'$NJ1"T$a3E[Ci-6!&cC%jep$$p+qZe
KM1C5BRY'KkR$F202TBP(25iX[5`(9EYbZMeZLqT9iAUcjUaZ'0Bd&rRmmJT"rb8
j64!q%*Vc@4F(BJa5pH'1[qC-je(5Bj`kFVG&2EK1)Zq12l3mDpp5Qb*5B#fPjZG
)h#U&b`*KcYdP9fhN@`A)4@9MUJ9-rlc[i"#-`8l4*dRBc4c+Xpk&HZi@-pI@"BX
K`rrhc2SjNY9APG12bZ"Q-QC5Mkdm5rEi-c@ARb5hiB&-N!$FZ"6b'L9m,+JKD)(
)`Kc(NeBdX"q)U&*MPkc301Z@J1bh4*@h&!%ah*D5iQ6ab!3@2!@!3`M-2Rm!ZUh
SXqaUA`DYM)f894K0,JH*l(hemc$$%Pq'NUYVB'Y-*ARPmM*qj['")S#I`@8IS&c
iXE*eJTm4dm4KD#meHiRrV[aKDJjpj0I`%!rf%c'bk,%r(T4I8V)pKae3ebbZb6p
6%Q44RAYT*8$peNdNIa4NK+a$9NGDM9qpGUVr8)alJ*!![N&FCm$9r),PEr3%Ck@
3!)-K!Hkc@618!$p0Xba9!Uqp)5Ah8+X%bKP*QHePY44D0jkrX9LSRN2D(Xm2G``
(qTk2!%4K6FBUS4IbXMY#X-maC"@RSA`1K'@-2N+f1iXlCGMcB,Pi)QDVYe-0Q3G
%`9H[+([CE(r%I#e-+DJk9HL$%@E609Z0L"A&mj*ST[$2rYm'"fM[+fE(FqcqlcV
XH-!cXZmp[8[abP&eBIr*+NRMV(IKS"cRkP!R5hLkIea-r9JUc3*))j2iJH*-J"B
X5AJJEUBrI-N[+V$Rkp3DhjAG5XcGUfaIee1bl#i0"3ql)A"-diS6T@b(JbVAcFP
cmD$,eTNmPK95i,p,5VSN3pPk(+aK#9I'GrlBpLM"r3BjFJNJ([($eL0Bh&TBGI"
mhIT86r#f-Hh5+eP!+9AXKb+J-ZY%H[Vd')fGB+A3jj%Q*dT88`[1HSTE6J$3Bq9
899h5DUL+aLPhe[*+p*3[E@$bXRUFfBJ[8@VXSYSYCej(MqD``e8hd!#RDf4jmS8
dQ9PH+dFf861F$26A""b"pNQUK@P%rX*e"&BJXkr[*,N''2)a0D6%GBQZ'&XreF[
PB&3M9%#`k'C,c)q5bAAU`S+0CHEk$RQYKNL,pk[B980pkp$dNpYFH9&ABI[PNm4
eDMmTGAPhr[-@",&5hf@K&``YUqY52qMmIkkZ)*chEf+lq94`@Cj2(![,EFFUVGf
4#VpX*FG31(bG"[@rS8"95kAi*Vk@jU0Jrd+jjf3c5(6*YrReVDPF!NSj0k2DTD4
pV&G&%ffGG1e3V99I51ljd6EL5P6c!eXAqN6j3S3+F)mPV8qJB'Mm(Pa0Q,$AlMZ
Hq6Pm+$$Ffma@VFacL6&K5j++)mbl[X!"X5Z$1MlXNhq-0014qQj!i(bhl)'2QMZ
+kbIq+J$ba6lpc(@8VZNVdh`qRYL(Y09)jaF5+Uq!NiJGJk"N$LVEBkh-eCdIAq*
NKJlYK@c(NaI0ffaDf2#GTX'9VN[LBU,@aQaR$1'kQmrXQF!LAEF*eqEj-q0QJHY
M"6l!p6-T%baSaXVAN!!Zf#T%&fFaHk-0pYDbH$mM@mHGS*q!E(B!CH'2G9H4@$P
DiVUcdEGYTYM&`UBE6RQ5@RN55lEqc49LlDTLA-lS1dA5Sa*KBU'kM#$9%l&dIK(
SQD@*M1GcCJP0iNJfhFR9090,*KM(2(1NKKYH6l8dcZk+heC%&p!p&*bDUAJUNS(
`YSc5m2B0q(3d4KGl+r%FYiX'kJjh"qq+")J1VXXi-AYiCZ'iSajJ##jGMN9FZ`U
$-%PbES!rUAqZ0+KU+6B[cE@pQXLFkJI3i4TY$jic,Cq4$6lZ0033q5AU40q*VBR
89kE9&'UJ3!aa8(X0l$LLC(IXmRrN(,d2[rEBR0ThBreeRXpqG5XK@5m%SqLDdeK
PAkjlLRTXRbULj(SbZRX-jfr0+26[MlbD1GcYj24%F"eC#8F0lQKPKZf9M,X+5h#
mJRpEJQ[k-MrHE1p,I2RHC#fHITZ[RT(U+lhL8SkCLcIBSQ2lC@rqR-UN*e6XZ!G
2md%H[,k5U+1@E"(BR[bC[1`0"+b,'d"B!`FkcAH8hdh[`b[I95pY!"cN8'k8#q[
b0k8rN!"YXcTGZ1rRC@X&!dCePI#Tb,&D)Sm3D*FK,@kF,DHNS2H@!JH&,#fXM`!
XTp#!AH`#-Rm`*bSUS`BEheR*Pa36r(2HdNPBI9[C$5Lq2aJ81cI0ihG!4QTM9Vd
KaYSH5(l1'h81+-H+B5l+T4Ki"Q-2[pkPalFjmHl[`FTL@(8FpTqa%&j*V)pcURM
&(fDG)LTMDa3Q%+Y8L0F3ka15BADCFVAi$,(i4U,EriM-bGFiFHkBd*iYjP#'&Ap
N#L8iiTN5IDfkqI""q1GL#&4+$kHr$'8MTq"+A9UY1Z3-qRA$aPZDM8l,&T8C-mA
jGjT30DIX[`*#)kS&)NP*1['Y5i'!U*2U8dSkma#AUC-!LPKNGMG"9+mdVm,A%#C
kQRLm!%KK%4YN)Uq99U%JX%KNUTb@++#C,mKF8L-C,5ai)6#9mcS[A,G2(Zhc(*!
!,DKaKcP'2`V8er-LIqYbS-k%rMDQ1VFA!Xa1$fe-+RcYh510$m,UDcFl(-C3ZcN
-'+Qh1ia"E%4+1I5T58!Q01rBp5EiT(a2B*hAYDfHdp@JH)PfB5A+H*je%A,Q(A*
0d4E&RbD*kE0ClpKmL$@9,aG@cF1D2[@2)Jj"YqeB[Njb0G#C`N4aJmdL(4SG%8a
8Lj2)#A@kia#ZikC45J6,M(fdM-3*8(@Mr,m-l!TDU66r[-5@#LYc8Z%1d!C[,@Z
9m2$cdcm2FkG"%-,0*Rmh80!1XR$Vlar8JJCN*aC!mEeICI-h6G*THaM48kV(0j3
Q6qNIJC`)"'d5UYe3+CNlMK4NHq+6I,F6*d-fYqG-J!TZkmYXEcll23aqRm&)0U'
BdXi4P8UpJJ[k3XG0I&l5i'AGLH&F#R!+pRqAaQlP#C&YR%9Ke[aVJI('@lMZM0'
D$`A4[HYjc5CTradCY!`jlSepCihHaLrMVRRCqL4cZbiN0$b-mA6kV+20E)-ZHl&
jik@0IG"Z4p#3!!bLqTN[I(1E(*++)'r!bQqP-*S9p&6I`0UNepPD3k+q5NC#cdB
N#k*BH*AS6*KTI3S"QL`SPV26S!0U4ak#`Q[SjkIS$IC`ZR%"PcU,Ja+,Vp8)lZp
Kf&p#f-%GNCI'9)IUU1KjA-94VqFL&I*a39ZNFPTcTdLlGBfV"Hrj`BkMYEC!3p6
PUe[1cJ`S-1FZL0-HlfMR@jjM40QF)Y'3!1eBRVhp!cXlKR!BZU5'CliK[H&[p8(
Zk&kEeleBE2Q(JDGlT"IM&XRK&AV0LlbDD@@5-[!YME@MUrqkE"NfJ''eD@5"[*k
5r!D,RL5IIeGbf3fI`Ra"Y%U`b9C`cHU'9TIi!l3UfL*mXPE-Ar5C"dIEBphK+P9
m1DGQ*PVH3%R-J8mreI$heGVHUa8M1"N$qPkP2VLE9JX*3[Kjr-1j'icGZ3#Za*Y
[F86+P0qIdK&m2BfNeEGl!,1Q2ac#DR#S43ma5j!!P-$cFQBNDCE5JD)jjBeaBKM
qqp6X58%9jIF"RYMCqTEUhITGQmJhBMl"Y*Gh`mi,$GP@LSEeY6e[%Vq@QM2%8Fd
(3jERC56#j-5f8&(1N!!meN686qZie18k0R,MZ*V0dV1SiE'R(-m,I8"c'fKm@K-
`+3AVRTeHQChb2hh@HQU3!(Cq#2V5l0ZLeHVdE4%V0ja,0Z-@li(8,FZ(*kP)eUf
E*rTR5bqQNEHqXBDA)%EM5kJC8a3SETG*MTCBBC,`8[L"(0-PMamb[rilIlrfLDI
e5H[m!m"YJ,CYkbVU#HDcFX1'HqMaa+8!(3[c83e$B9-Nc+eG,6bl+YDmjjc`UUN
X'q3XlKpJ,Md!hdQeilDU9$YNVrPf-Ai*ei&Zl2PUKbDQXM+Dc!hF#8hf&XZ%$Kr
8*c)&*5T4LBMYQTBG3Ch3U`fQEcSVaC)q9HheJA(UERflkhMe*1mfX+!*TLDdc#'
,Xl6"Ve2MB250`GlRD`@mBqQk*K16(EG(JV(eRC)f**TL61"Klq6YHM5h*Il4TSZ
JhI2Tdj8,P+NSa6"XcUG9D%NURN"1rFFiV$L&R4@EFMfjiB2h%cpJLKq5`8AFX4"
b"G-lXV1JEemkj@mC4,E2H@UZKL"6aHC*)d*Ek&bC1lrYQ2A2213-+M1e!fMkK#S
*H)GPQS&$1CLN34PqHr@MP#&4+E)PM(P$4q-1c*TeSkf@9rSbEfVrTP[6HE*c+'"
C2B)!"&&%#CEHdVi[CP*A'L6DR(p[m6@&8X[RF,QkcS(c*EC"IB$JYE#m)UfTYfb
eI2pD9q`UdBFrS)D'dhUHfU,kUNh,H5(Sr64Q-+X0AK9,Qh0NE5%#[6NF'eZKJ))
ZSkDSCBT4X'`43cjbV`G"F0H,*c,4JhX5NPf1qY`&pJDSHEmTLd&M[A88ZEp2(&+
24+G)NAl5ARl4iKj3*1bVVRpJ!`8e&%&TE5'(('&i8(C`EXjPUIMlaJPff[Mm"4+
"A[ilN!"F,JMjY[-*-9U'(m1%h+aF59E,i`frlCi@5)1KQPG@-lBTEHQ[heUqJfM
ACcDB$-[P,V'cbQX%4F013AV6%k4frmJf6K[p4q8ar!a`eY4#F$bC'X)VFh%UQ+m
1TdT95crJQ,6!T5MP,CRhQp8"YABjG'BR9#BPaNR1djB8ZYPDf*+lR'P&+9Dc"9p
Hpmr-B22M"1L&)MhjUrMcpbkYbFZjF-5EC6-TQ+HX9X`m3Z1Q`pceKG)mL9Ra19i
EiDCjZ4M@E-r+Fde4EhF$8*(Um*DrZeJLGD-,4I+'EbJ[@VZDRMc80liBU1KIl36
h1-&%M`*-"3ZhX5fSi*F1qad(qFM(KU[,!JM3E4hZ%#R%p-l$A'IGXdZK)a`!1Ej
'!E)48XLiGG$rb)$0H&UPMkVP*9rfNC)UQHEdV%@MbTDe`@TT&VqAQ(rN#)"AbMj
B"cKAVJ0&`%q[a-0KUei#YTcHc0$&,'ef,l4R&qq56B9,R%RP8eQ*KF'4flbdG8F
cdhc!BP1bPBMi6GfXVQDCic(%fa'a"&ZXCi1D*ia8TqelRN1XPMf$jZ2H"6RANr5
SdHF8UL(aV)TZ"&0h[-!TYHN!j2GHcGGfJd)N$FBJ*&(KXHRMc1&*J8DQ!'d+M3"
Yq-C)r0HN1"6U2kQrV)*AiAfYGY&r-PKE+[(TC2JBaQ8Bc(&RACcd9brU4'HD[jc
lAN(#`j`Z"XKUeF*Y%kL@KSeISPZVU9jBX$S-ceTp4$k*[PGCRG4ZFH[+@4((VMp
*YMpN5!ArQMkpL1P!-NLh-PrMfIBV56fXTmkH(LZD#3M+Tk*P0NF)H5AJdKqQ&D&
kP16EYaDfL)'jMPIXZim`30dh2DbE*X+ScH3(@CfVZTHH3`K*U%X(aI-0%(JK#j5
CP*5aIVkcqV)kN!"!43QR`d4Q@'XF9MG$E0(8M[m5XFcm[NAV82T*XSRmqHmC"q#
m6-BFq[+@P2lf9BA$%J'H9V$XblVKUc9R!CXX1hcV&T(CiZBpINdFNbkaCB$bQ9`
-LB@CFL*B[,bY30CTiUEKV!@c&$`b6T'eIG#Jfe'L8$DJ3*j"UPkm!,MRlia96r!
N(i35fJ-m#`lUIVkY&lBQi9#HK)GMUBk'-PQhRc'iaJEmkQ[0kEbLffdbA6bZ28S
`)iqCPZ0C9E($)V$@95V$B83GMm"b6CIHS%6IaA,iHkZ@5DD!4f10VRB[!Q09N!"
4NTB0##b%XFa0rZE,BA-QH4LVKLNpBqf&$!qI0q1"X[V-$V0c#I1'FTebb38dfU@
SerMjm$J[GB3dG[q[q@Sp1)Qj"0"`#243"T*iNe!5"HJ[dM[Dqp,LaTim1JY!VC,
3@q-X&MTl1[LYUTNA$heISdJIFQ#q'+jUqd$mCM`3eF02hFP68$j$r(2M,'FTQ,[
HSK@)I![G(4EY2Xfi*Yf$#G!9C)#'cS0'5%qI$*0-L!*6EPd!SB*8)r"lQ%bq$q5
5(0c9)mFX(3'I8KTVFeqm%&KDe'9IAJdq0a+ard&"H3K8)AelrG#Cm['&IZ(NKNV
Qm-r`4lTQQ9#rZTE[JXG!23I`a5khVm&iN!!KT03Fkd)8kSm2YcB+%m&-ID08d"$
(q#BAU9HBFk2Bq,@V&HQE*$'e8ldkZ4#diY6)1[hbj4M9ICR#U#8aKTDPV+K'r'D
qP2)hB0-E`%Cl9GdZ8Gre'!EalB'1R&G!`(UrS0,@FI8Kjr02S#Ui`p%3FKhaS8l
YJljXF[Xk8%e8('K-Q"daSh`L9)F&635X2A%BGAGeLh%d#NJ1jHd[D&c&mRf9N8%
IHf1FS395[)L!p)j4$VepZ4NH[B'-2!5H2LEjFSV0r!45+[#NF%EpXhj[,K#IDa3
)CR2F1&DFH`aMkDAH,A+J+GG1&X8qF#+FATURe4)m+&YbD0mTPcIr(N$0#UDqGkC
UePYkdd@@DdJm1Z3k#M`@9bp8'ha9erl@jTfZ-f+$TmHPJB`a#Me-CY4'%MDIPCD
J*AF%9-c1QUk+9+CDKB!NcUH4d@!MC@!iZVhAj$2lNRbY8AEFU&"3Rf$EDVI,$kL
4l@I-m%CVDdEeTE!U#`#fp8P#%G8kP38*Q0r`)12RJY-Tb)-4B3N*K'+imDiFhPZ
fq5'ZaejjjdSEmCje'lQBb[&5JeDp1RYh8Yc2`rpmfVIkU8fdP-p4K64ScpDm8J3
4c5IY9"b1'mbQKePpkEMC+"1KGAfkalUPYGc0N!!ZZqa*q*m+jV'U-!"Q4JEV`MI
!KNPEhDp5lRhBfDb$mP@6R9*cApDI+m%pB(@#ArE65GSValB%@qEMUY8FVS0AIJk
RmR$8Cr3"'MTjTYMkVR@`8!L2N!"PI%Aa-bTF"G4#l(d3%(M!e4$X6YT4$MrIU%Y
-bXH[9qEq1!`1-0Q@6@+Ka4,-XTH`&FMM"$qYZ!+Ee6-a@2kl#e(G,jK!2KN3&JZ
kFa*)PhY,eR9VV10kUNpU`S0@jd@6cl-8Nia``"XT'4d,r`q+BG06mR#TUVY(LF"
V30%6m!eeT,"IA3N@4R-N3Yce"fE#i(r,&+V#9M0,K"kA-D-B*eEKF5cppGPDDfH
b&)&!ei8*f2Ac#[r&DAXhLa'6*dM!$T[V8!0@j*h2QmleNUF$jq50"D44@*3UBqq
Vrb3'52IZ8$J6(LLU-3I-U(D"61lPeYd$!`hic@%!$[+IlI36&C9Se#P,5%I!lbX
RMd*SrF3l*JIBFITkQ(HJSSX3R#Cr4CDiBhE!%H4CU2M6@2ce!G##f0TZeS*Ge*f
%8cePQDE2TRYRSklV+Q"X5&fPC"QSb61K3+83G5`ppPY!rSFLaHeBRa"km9BS)Pd
"dh90LfK30*-6J9J6Fa!F9ABe1Lp"DfXmm4C5YNAf"b0j(PGIULJM8k!Fc8!q5A4
YmPVq``&lBRXLCq10ZTl,p+DK&&MAjLh#B*P*!c#@T6qZ'!6H(-lC-G'-FQN!D'(
dQF2R9ArjL53eVJDY(q4QjIPLrB&Y4KZ`ahJAbRV12G",NHZjq3Q[Pkc$D0epk3$
hbU'ppq1D3!Vq8i1'N[([)JD"CAQkX5hXGk$K,H&4c'ZB[Rbp+V(9M48mT&6FD5G
'S3'Q$YKc[EP3H%KI5Q%LV@DaC&[m-Gj!lXEhi12VG"MkcC%C$bilIM&%Yb,@pU4
-SVm(Ia!qd`Qe(3@i[MIlQ1iRqYCd#!@e$-TTdl14MY0%q@rjTTmIh[THlK0TD5S
4XCTlD!c461@p[,c"HrX#'&3P9-)$0$@V(lN0a+A#ld#FNIXXf-&kbX,-&i`jY5*
6X`$3NHFIC4C5[)2U,AK!(@8j%SHdM1+r8I8G-XY$Y[I!&hhUcY[N4GNCd-+a!i[
F3*15!JrdLf%Gp5c#6$Y*PL,Aim9P#f8-rJm@9(L9mZFLcEpa$2heRR8%J`p#D[K
`KI9L5fcplH@2&dmU*Ek8DK5*Bd+,FqcmPYchFGr3Ta&H(p"+)2+@B13rXD5LR9B
NBUS6`L+2'E8m1pbH28KTa)08USrr'-NS[&"0RHQ!X4lMBbiYi#!`UE@H2phKSbT
hiZbS+Qb6lLJT$U$6m+*k1R-a*S'1Z"amqXq4h*SFrh0"VX&RF8(I*eC-KTlZaR0
"bNaIqM-JBj1!I8PMkR0D61ka14AJ!Tm8dDZ"4hV(A21SidT0*cKJGQrX0kmhF5,
[*4HLM1-XYMe4h4%*N!!Uhif[kFGHKBQ1dXPq&Z'V02GEBJ8Xlk-KhVqHVkB[!pc
T"3*EFJ(M6&Ma05r'm@+KpLVk,UN-X356q(mj'kCN3FSVG193k`L)8%`MYNrjCdd
rBT3Np8j3`AL#5qP)*U9)FZ3b8'hV#0LZR+S5d+M-Hl5IMee9l`$M'!PQ1BdM1TI
LJfiU4BJ!G[9#4F$aI8"Bc*,jhRH2#E*3%&N"VDPIK2ZjJfjb(fA82c0#*'XRM&D
8E$(S%krBr$D@b8p9M*,cdcq0N8mUV(C"beB3GiTmMZY!Eh!+3UDXETq0`[-@-QA
qX`i*Va[h#,NEU`F(YY(A1krGSMqc*UrfMK8!Dcp@#N#`E[q2`0LpQ@arRN+ebr`
E6kB-L*)CZV"18kC*f&p0-fb[Ul9B96Bkj@*bqdB'q4-QIpCT0`5EQ6b%6Vil[id
pLJDNN6"XIe5KE"6%-EY!#e(,,ia8V-c@HQ5[IP-T@Ffh[81DrLFpqZ#F(mHrZih
*04q-)fYGk'1r(A*5k)I`F!$"c"UEbr%*XDC9+Kf2Y6F40p#Ya6L&YN!i+SqY1MI
Em@%Tj$+Q6"2Z8E#eXHTTTkcfS8,2bf[%)4VdVb+`LGM4E`mYEkF52EZ&+X[e6D9
['5f5IfPPK$8(K@bXNmXj$kYkC($3MmUU'ma9IM9NeflZMbTEAKYJ2$3)(!Y-LSq
c&hi0a5-*e'4Li#1R$U9B6LK23q@@fA,FXpfC9qJHM8YE5U5Lc+R-AH3I8CiK0*1
@XBSH(QK`Pk)[jlB-Y9@JDkahZBD$HQI,DS$6UZ)1*RLC,dZ,SQQ"c&6LZ(G05aU
fHr##r)bY3ZTTqV!C!m,2!hdbmD[bXA('C2KTDrEZ()bdrf%f`e(cVhKT(ajFG'(
)1qjaT"M[M3ACRhLHT'Bk1HT-R-aKJ(UIr,3eQ4lZq4@q)NA(['FT'Xfcib*BI6I
4GYS%3mkdH4p+-L`Hi!DMEU8hC'dZ[U2S9TI$d,30U&eCALR)U'3fj43NbUaQ48T
3Y@Z0(Z"'H!0JS@mS#@EPII@1ffb49IS",af`Qc!$*j23$cbMfAfp22@KiRL5I*C
24MMMel(Xr[eA[A)S'4!h,-e!4@"95*k(6A%+2dq)JM)%50+SDIE&lj+GhA0A["U
2,HERE@5+R9H+R@2(hhj-Y#Y)q1A5ZJBqqr6Y,mQS-L+)P['Tad0b[I2NiiIVj*'
+Q,(@$J5+kNb-Xk)lEaA&+1+8,0-JVKHI`iSF(,Ycfe4ek2&*H2)XGaa8LKG%C4l
PKflkU#E%+3fJqRK,$V$A64hNYUIFFd1,qIGKTMF&5P,fmVTkZdE!+''[pGE)i@q
'K3kR%pZQ([E9lhlk3hZ()K%K8cr@[bIdBj8(`Vd1XPr1%m21fReIT*IGTBV'1bm
mY4G!-eH$ipV&R6HBDS(e1j%f5AT#h2LhU136)R`9jCbY5d"ih[PK*lA`XbDqA'f
*!!r0eikQ,!1,HQP3Lf1[qUE'4C'q%*dqQ%c-h,Eh5*krXbU4Ld,e%d!A8$kfc2i
FcBdJ,IE`PQ*[PYb)h4ML&1`$02m3JBkI9FF`4BAIEkkm")%9e@pYaaL1q5IBU5Y
pKC&q&K15ilUITiHIK[08ZDIKd'9qkZjD4jMRHce"jhXcPU&eqc[(KrPPAPfNIVp
rf"(`ZV@fC1!I5MLcflkqSrM9pA&+9iq6id+Cc#)VRH1r@qC!ElSZ#mF%'hU`ZI!
aF@b%$PhU@JNX@Xl1d,Am(qA$p$F#+mhi8mDR,i,I$hlSdL%bF4L*)e4%Nf`6Vb0
mUDY`!Ca-)Fa2F(LGHbk6kQNefA$Qh6!(1&!pQ@RS"%q0A*53!'KR3@0)9*KPQmd
JELARRY!#0f9E4ATXNjS0kYqD92N9F6Sl%""6"4c6G5+GU(TQZpX@1GmYJj!!U6"
-S,$QlpTR6''h#[E[Vq)iKGl&(mM2cq%)b4d1R9#3!1h-Bf`HK6NGB@6E$B0,JBN
Z(pUM9'2N+c2k*6NhB`J$A%J#Mk3JI!Dl29(FDb"Nf#BD$IG1NpaDr4J0r)-(DKb
Y*q1&AJcYV`(cFVfp0j0b"UQTI52HS*MAAim&4%2$SUp3pjaUSVf2*(hZ$YHR1m`
UXHpH*V!F-$YB)SVf"CU2E@X5%FN@%@q',-IS3iYfQJR![i&Up5ap5h4)5YT1hqP
-+CF68@M"E2G`kfI0UBd,PeC'(5P+RH(V(f!1Pi(A%l$TLX#EYCH#4(JDQ8Ur,0(
-2"KJ9Cj5!q"3TBHcN!$-$"2pF'GAU10ILU$MSkmPSZ$BYRe&Bi1(I1RJe[b0VNP
!RYMq`BA5Y@jG5XQ5Y26h$R,PH!L'f!0b'"8#$"4q5C)kbUlbaSA,&q['$J21cZj
TEM#TqMHN0%hm(I$'-ab!-iB%Q'DM&b+Q(TX'2rrL3hq58,kY[cM@X'L2!+KPZqc
Z+Yl0JNZTl1mT+-,9IdIL4k*64MGE)0H!lL0`3X`Cb)1PDCm*ERr+1)e8S5kEh0C
#bBfkqbqLAR'bV3dhS,cQ51k4*1Le`YLD9d@4aMf5+H9$hU'UXJLRDpM[Ye,S!Z$
6-LHjkP$lcRiZlbJjD9`d@d,I$rR)#Ij*k-6l$Jd`Aj5PK(fQUSBC"4kRdFDDU$h
A6dJdCU,&jr%VHULIhZEU&$m!6id33l@kfCFf88%eM9pLZ[pfi0"m"9V,JZ)I)Ch
e1G4Li`cD"q&UCNifpX($45Ip+&Ca2E'X'*,"JUcrqQ%0*1m6I[f9P6bYQb,X2+Q
aS[e0JZ(US!&8DjemQ+Am@!XMSq#bVkkpbi4Xp1!dQZ6IqF)KcH2`ZDG%H!emX0Q
#4$bGcJ8ED%@6Qm[5Vj8BkkkP'VC(i2-D8"h1bqa38B8`!!L"q[qF8KX5'lLE9-8
rb[#!20E%kFN#&F)r8kp)d-p9LeKSFDG)2JeF5cTDEal5m#AjfEIRi[HEKc'dQk5
aCCe@GREDh"iH-,$k3SN9ICLZ(P4f1V`EE(`P4,%kSl"#3-3)B"('%XJGUrU(#VP
"j%cqh0BV1L*(PiZhrpE+mN-@U3!qYqqkI6$A2V0l9Udl8,6P$le'k,ahY@Pfl$p
(-XNBm4$rrK&E%,e+bPhD'GQIh-qNSTrN8l'fJREJ8BDTG[&%ST,b'Il$38fhq*J
6!MAaSDD"(!qiP1YddUq29Y1m182hq!0eSR&$%mFVLRLQ"Aekk`fHb9NkmcahcXH
MM`C",r%i#BD)@6M4b&qB6+2XQbYrB)Bq@9AG(bI+lN2aSP4RSC!!VB(pLXBp[kC
L!$)VrKZef(4BqXeDHcKmq5cBi4d!AJIkN!#eZ`"bf2Y`AFIH[ME84HHJNT!!L%+
[!(cBHmk+qhHKDm)"i([XD[JS0`EU2U*DNQFAfr$a[B4R)QAc6KVLhVAp(GUQQc`
%f@FECrQlah4$%,KQZLJmS8qe2&(16G@XPUE"G,rLNB$ILEd-a58TV#&EcQUb@0'
LKkEZ2'd2XHb[FeR5[IA5LZDSFCp(3-3P(mIBp&21i-NakK,B%Q6535V0EK*DU*'
bjZTf4Qj"jkd$ZNcjYakKA)!d8ck"GH3DMF%IlbU4cmG#K5H@8h-9)PcrS&k*T`p
Gh!-H0GGedUb5[AFNK2)G4hA''c6aYDm0AB%(pYYm19cG%TZ1ic9HcX&*cbi'-SV
bTE+FN!"eQ$JNA8iIPC0`8j!!S&CIjZ,G+-(*XrF1kU!fdU*!M@i*,6KZHmBNZB*
V+4UH6'hV(*!!0c$iCfMpD2CE0$XFlP0`h92+-k$j)509@k3Lcr#*GSicGNRkQVk
T5DR[dXiZ*,hIY#3H,4X[a%T2+ZJDTD9`CDjSrZ1%%1"N4VJp`9UI*!HE6jaMH32
ABKDe5qq1'TC5(-h8@rXeL-!VD58*9N&+f1'f))4YaT!!rBbTSrb'Ua!eQ&dC9-9
UeFhmqi$dFf3i[[QcUp*$)2TF-fjY%GiqTS(ec"C6rEQTA@bGMd&CG@Fmq1AZ*f3
e,-,DK((BM@fCb$063[iff5BA$GBq6DG6Rb-qUI%ceci8bZqj(DRTZ(ARD(Q09r`
h[mb+K&2U$M0*5@FAi4hBC1BaZ1(rPB,@51qXNGf(F)R"lqYT$,Yr#0'LY['%V5f
UJXRLC+U@XLG[`iH1mS'jfQH0!&6rNBMEkpQpKDD&qj!!+c0'Z6%EP'G@j""2G"P
PS-bIR$3(3V3XM`fMchqrX&"5&(SX"88R6+1YF)qKp@i&rlQh8[#mVZ9N4$rQTGH
+@%PhT62@IY`iFH@1im3F#,Ea"AQ$l0*J2$EHqb0I!mcpHCp+lNN`dL%HYV"N6#Z
Q4m0Kd@LSRS6*2$p60B5bZT(@-#jd&d4S5HpXHPZL6dLimUK-2jRNc%T$-0K*N!$
EE1kL"8QkD36bYJSEVe,QMVC%JP+fjSZbDrqkXiVB1Eimmh*@8FP!q5`J[eH9QkE
EhA4@i`fl%"0IcXX$+&6JI5jaEAf)TU'#p"%'(6Xl4GKKqEhj"E8)r&Z[ZB&kENF
H@N0+YFU5V"TSfIE[JB`HX(JDSc#T+TGfC1S9F$B&5!$P2pe[))Chki*&S-IGSTp
95%2XKKBL!j5'8212I4Ka+rN0bJr#T3'L#e56YUhc"V1a8flm2YVPfEfEF+0[E$m
h42TAIFc-QYCIV0VeqcR5JS@!(A`N!p%0dLA8XKDp)#De91+9dG,0aCQI5$[F,q"
Y%N2@*05m35[A'K)B+%He5ZJ'hca-5h$[&FrL"%bKM-FFrJXX9PM(K,`5jcpp9#$
Y,kF,dS)RCl$kp@%GA,3dQ#RPmUe8k-UB8cR$%@f*(K1L&p2Di8TNrR1LH3YhpQb
Gl,*0US(*)HJRK2AT0-@2JhPZ"Dc3eiS-5(MmH(Pl#Z)M"aX#e,`Ue8m)Rh-jjMa
bB(`mip`PGMH"4V,5*TE9KHrl&JY@HbG)ka$&pP,,R#L-5CNXQTCEM"6DEJ35`(c
-IANH*%NM,9i-8ZYeNG)!SIAH0)[F562S2frGUb'E1TAiC%YR-SPNaU,*iK25ddb
U[K0cRcLMUk8R5VG[Sf#m%@TKcZAAKG&S(&'F)HF,hJ#+iQIFrqT0Yh8FV`18#U$
G!T8@[028(Seq-h-Z+i9CES,aBSkP(992P6,'HrV'1TJ@'e916J`hfNHc5+6kYcI
%,YDNNKA@@SbEqpLZ1ISD+i4UaBh+VF6XNXqY$h&rqAZ8c((eE`SSKmc-&*V[G%r
NV18GP%biplVc"+mP&MFU`[8$F3U`0Idj-lD-1PQ1c"cN*C[9GbM*VfZ2SV9*[aK
X1Q#6#'EJCpqVm%*9U[bHQNK0rrHpimhbm*5cpTB+feX0I43F#QaZlqLRTHra8&U
%2&kP(C,,(eY,'p!mZK4pSMY5`#[(JcRQ'$MRaR,lj-LRkdNkIb,Y#k1K6ja#XPC
[119BQ%VPJ1GJr,eJMcV)[L0alUG89FS9Q2XmN3TI1-J3-VYXfSq"V2b$'kllcMP
`NcKdb@Iee15!YL""V-"dQ1d+emIXljq[KB35r&Jr$$*dkSa%KF*&0(#bGHBS85j
2rkqG[#+1Jh+(QG4BLiN#kX8CYS-Q(jL$V3Z%CcHqe@6ZFUJrM2[Gj8j'1)EVb4C
DMD*Tf1+fiJ%(d!*h'9#UPja3Jkr1ImYH3*!!9&Qrb)(4F&BH1jS9E-68AReZ49C
'j4mUP3mL406P2[Xp6bI3IdqGa#Fd!qTS[(JM@13lV'"8B4cQe"Z@+-,pp2JBD2Y
aUqQ'5XIR(#FE%YjY0DEG'GVS)QT([Q2[Z-5rVjjFZ'VFRHE*aB+M`pF,iKFd0@V
3"HC#q1P[SC0r99a5,l"QhTir4LGKZL2f!G+8%d`i,8`TCHE!rp--83#@A'#G#+a
NMf3$I1!@Tr8N+bUV"p@6'jj"kHkVl#I+FfqCrm+$0[af`X+TS(VTL9E@eF9#IDR
VNdh&AkEh(m2UT'9`bReDq)-CT(ehRr9E2qqdi9[(%(5Y9Dl3jDk8Ul`[a%FBXd8
m*iUZL9cc`'mG89QLYH#%F2DIMl'e4BAG`[pj2eJ*X`f9hG&dX2[Vm+!'D2H"dGU
@@84KU8,3MVLPfN@r*N`%3C**cPiC4@4$TYLRVp3H5@@)A3qec6h)SE!GH2(94)f
FmbGCjB+mSM#ZJ5J01Gi6)5DUlCdMmpZGTYYMJh)qJ38k[SC[X811R91SP&958!K
U-$r1[6SV6m"'PbVp$1SQf!B+bbT0$D&!M&SHXqm,JC%`bUYC6b)E,'ZfK,06r(A
GmEfXY8+C[!hcc*!!lNfr$J1NcJ#q9ape@ZpR9-j%cj1%[3(4dJeF5I",SYG8dYk
bB2DkbULqLdI5(0l2N!#9%(IZZ[YXJ9EF5bGm0G$MMijR9kR9RcJMri$eIE$fB1m
5b-l[`A#SZIU)Bm6D(Vl"FhKeK&DDEaTTB%$B08kN-&M1H'-fa"GZ1#J-lAPIVKr
@I+SGLHLE@kGb2lCZ$0"FS'90RRP2&r,%XUYb(04A&)a*jeDmkN[*'j-q`l&VI)-
fchC2ZhUZGcmYL19&cEDiMG2iP1Q&U@`TjJ*mca*DbjT`NFdX8eq$&$l0494"Qhe
jfB!Zj$9dPb+h2!fr(Bp95q'IFEm$&RmFME9LpRZ%kaP3Sa)L04)D$S#M)IMERT3
5a-De2FHDB[`A%FppJTqG'j956f$NNaiYUmKPMj(4ZS5!l(,2KGl5L+886+K[-*'
cbeLE@0%5FbK3"DpH6XIcF8i'mMeXYNV"eU(5N!"T#Ila`6F@JaUdki1DPmj@ATK
5!4#F0PdUP$mm)rMQbAabR&H$E6Aid@rqNhp53qJ[BeNLT4FdDb)8epmDC`'QSPY
2B#c2haN"*KCdlHCVIi0N`q@1c8"Ue0-Ghk[0bbT&j&V,@$4M-"M,`Tec1(BTRfC
J%+a&55mfPr9S2R)Qq2CQZE9V$k[8$P&*U&KDY$@$18&GYY*Q$YFJj$Cfd2*ipBQ
!kr`XCd4Q,k6fM%f,Sq4B1[DXcGDF%3%5%['2CQMEPV$`H'$RcIL&HFE+J(C-R4P
Adc&BjmX)Z4(@"-Y!,R*$5PI+"LT!8"jhE4""VFhYZ+`q!j!!#DUfG4`0BC`+YVX
C%*G@P%N8CMhf#b8cbm2LdU-Hi%U@NqCBfHKKDc&F3@i$a&`F$R3&3HGa)"0B'5d
1cT0"AcRXV85,YC1-!aQYd4FTAM%918(ZLZJ,Rai,-P'S[+Hf$QcpA4-"ij1+p0M
EDb%JDUPCI%['ePZ6FZ1fL$j8#h!1L[qGMj!!b&4i8J+kpEeKrN60LkL3!!LJ6XR
Y`hC3PqP--3XhG0KhbqZQ-AaZ#'QI$31`%3kX%2GQfmeV0QF$Md$P*0YHhqqhplk
D*Cae!DXT8-hY'4[p3*&5-I6`4+6#YHdX,XmP&SFcdVCC`k!mFCkAIfbl6+K!EK5
U3FNJRCA&*TJ3iirVdAJ1VAa8@(1I6)$2#bQYYaa"#hkS'lD0"BXAY1J6l-*cL08
F!ZlD-q'8T%Y!0D*+dCQ@QVT@9m,,(4HPdi8h#hhiN!!SbdahCM%UY*j8qT%KVAU
-`"`Y,T!!cmRrIPlSaB"rRV8r!YdaYPIR2L,`8C)8HNZk@*5*F,bb6[,63$+TXA'
B&IJE#chY`XedCM5Jd%@UD6lpaehU1KJ4%re4cXbdb*!!MI![fqAcm'D'+akTpVe
2503LlALeM#*h&+#QAMPr04Br`M-BZKl-Cp`LRL(&,h2-RN(S[5(ck!1Zhd4,$`-
BHbN1mXLd#(P!qEQ3!,Ced%Sl2FG[KZEkpl-3LVZl3MQA1A0"%H4#U-mNQZc`P4r
IQ`iQTSVIEiRPPkkG68SUD,iV,(hi"i)"23e4f+eq#%4lE0CZR1b%r"fQ&),apJ1
c)BmElbKKN3NBZAA)dpMdXceb46"q0h5jim6YCJ-$kXjAMd6lF0@!i*aD%ULiIDe
pY*+E3jq%E+56T"jLih'H&Y4-9Y[5cdV@GpU4k1pk&D`Aak&&VG4aPDZHP0*G+hI
&%4%#1d$25$SGDl5k55)iY1lhk6PT0L4ZjA2EDL&*%X#5e4XG90*m1kAA"0VSmNf
XEqfiTbVKT0RVeSh$H'$'AUc#Vjq*,N@)GhTEk-be-Fqq-#)+@AVYGN6F%39`JUL
5!Q5NAD+[U"km99``FD&kGmZ,#CJeYpE'cG$!EXcSkcL!ciX8*)XcfHMR5E4,Z)T
D$h+e6MR+Sh!PqTEi*X@L#EeZ8Z$Aqf4D#R*PF`BTjS&eiMVC[VC@PPZXIPG4mc&
jY-mL)mR2%CG"Yk(H,i4#`D@&PARC3XVi0["QEjqP$&FQcRUj(l61(NUSfdD@Erc
QVHTp!Up!!kILf5@4qRi"ZEXY6S#`qA)S*%dq4P$aMc1YrVb8'TAa+DlkXmG+aa(
kdB1FUq,j-Xh!jc+F2X1pp+#3!1!hJ8#8HZMP95bM[0@I4@4qNb(BKfpH-)UVCA$
CpRP"##qjddLl4LMqhHQj$dj0-Xd"X9lcE)9bTcQBUYYhNmL&)N4I*UqpMCk$#G,
mAq)GNC[@TP(cX1j"%C4k'[2K4dSHr52"m'4p5ThU&k2,3#lAS6&Y$&ZfQe!3D*j
AerKA56%j$HM@jY!f!h$+1+f"VFYD+dT12e!+HSdPr8lpPKXF[H$9cGL+eR`c%$@
``kGGI0P%M-HJ*V&Gl`(-"B($[JN3%T5&%*SkFTG'*C4YCZhKhpZhk&9[5$NY`r@
4VBQShHei1IBm8fiM9@rC*ep`&eYq`491q9J2I8+fVVq&YK8R9)BKUfE5DakrrcM
AL4b3!!M[X$2H2b6a(-X0l@QFH3LrpT,pD!LPKB%Q'qJ+khQQNd64pY'M'[#P5c4
-UVHYqVTZMc(hi%@$+hG,Za'"c)KKjfS#"S(RPhJQBUJF",ma&U$`m"KlFdc9dN,
YBXNeV@UJ25pb%iAHme[iM6KBhd`5VBSbHdNkX9qYddTIZMC+[M`,ep[,Hdmf`M&
P@r+23BlJdkNJ$Sh8$*DFNBp`bE9q&Y&(V'XMF1"rF`dSmZEFFK3A(a)ThpDIEY+
d[+pJQc#&GNEG4FkpZKBJJ6h,EVLL50r,EeJ-+FRdCcmCXiVic"L1ie6I)#NGjA5
mmV(%%L%Ci,E[AI26fC-d!CDmDZ)H``FjD$+f41"@4JmL-@*L%EN+C3XlAHc(*ai
*`1b9lF3bfR4melJfBSKU&&ia&p(Up0ppc"E2@epeaNXK"e1BEUGGe6pJ)F4`(H9
#IEicG6J#)FLIGX-*2$r@YeV-b$9cUVaBlDDL1S#jZh[4KZrb#JGXZUA+h'"PV6N
hXIM+hiaYEh&H0KPAAe5D2r3+e'F$6crr[!%YdaKdjH'c+pqY4-h-34@af,PFDh!
U4TVVkd%[+Tr$`S5Te48L0icbNQEE"0m0FFqI,Q(b0k6#@eM3[%E86,LH,bCedAZ
dPb0MjlV"Dk20p'6[[9FQYmNA&H1*93&+hqLL84-5d1"`K!jl3SIeUDKHQp*Y,bh
j42&fKR0,J[#3!0C@fA+X(aCr`X*VU6f-Z*Rc-Z*h6e!R96aJ0SiD,D6e#HJIRiA
+)TFJ24rKkBFP+!DDZ!kN-I*4iIAi%DZ83#EE0ZpN8K&EHJAYpHk&"2pfZ+@q&",
#Ap"+0[")a3iLm*K`Fq[Ld0YBZmD2bk3j@)U@McGqQ)!11bfpbF@'-8cjN!$--m%
Zf#q$QTY+c$e$m5D3!2edj0f)2,593LJL"dFPphXT4-abpCihR)&AX1)+l0b$9L$
H)cc)#ljZeCV@@33LiKe'd58&b,(A)1eQMRpl-(LQmacqTD8rTe$LMRRVQc6,'pV
$,jeU)YD+9NN8e@)RLkS12$hIBrlCeNh5LE)9*'3YLlr&%IK38$I1%eSQ!eqja0K
2bi9[lGiCrk0aPp$mY(kKGj)jdX`+(af@ZjBk)rdGQT+Eb8hSaAhCG`'ApZCf@A!
0#GE%&ph#pb`!hecD-*6DJD@$`@`RCA+,(5mCdm!T!,Kfm@Nbq`QKKhHHShp0J+c
X`$SVerGIHFf2KYQe9X31A'T+&d-%HB(QB[2[2m5C#"UI1')B%RPG!Vp*%lK33FF
cFik-KVJE5,58faP@PX!HS#G[5IPiPYdQqY9$XYe`1TP"HTiEbd[-('j25SKa(NQ
'XKkiH!1,j5m6&@c&f@fLj3JJjYrV,$5qQrUmJd)bNDN0)D4pF+l03XVm`VFh,)d
ZYc,aXe`8&h"ZR,#LZDh$pEXG-LEZ9!(*ccBD#CqkGrMFP`rmGB#@*XY)c(,m-p8
D8(PDS!TL-Bc*RNkTDYI""C*+L@cc`b,jp&Grb,fI+JHjkV+G4k,qBFC3%M@$p(-
jPi`q)20NR!)eVf-X1QhNar4,qj21KdaAHQ4-D3GNhIr#d@)JR2%pXK`V(ae4$@J
J)$DmH15Pf9jGACKl`eTYK9X[k48PCM-5r6B3b3TU#9(P)X"cT($JAlqeGCUa)rX
#j&"HHkS'9h0PD-65JaGm3Mm&cRKZj4M,%M"c+KlBmHh6jZAra-AeeVi$qk"0Eri
P`dl+)6MU[%N0hA6bF9TBbIRiF8)XKV'ZAclPp$SH$K*"a3&ph$0ah+-bl)Hp!%$
*B3B$baYlfa'62G0i%VQ4QYL4j4+Z0%Td,0TK-M@G1e@ARUD0'#bBQ&!KjKq@rqf
@T-'0UPYbph(rq#*K&M[C@pT9I!N')@[0UqQ3!-dC*ZCKS-E[NhBmT#a*1EjJ%X6
4Q,SSc$cT,AQMKRQU6VarKX8534c%ZCl*%P%HH1Uccq$C83*,aMVCBDiF-VR&(iQ
(0$dKJ*8"k)!adeB,cRl[RppY"aQRZ!'AX0d*-$N@iee""UL#L6)*Q@S3IdSMZaY
a8!Zk&!Hk!KXE+(C09Ef2qAHA'3EL2pKje8#a$eS5imk5RmE4KCLfKJ25iHjIcS3
ZC,1L+P)QTj(HqJ-81N*+eYcMZ1YGK"JhCR$[a6"1$KL1iBalS+rT53ZB#%,+I'f
@(+5-Yf1DQ[i'SSYR04JeI*,h(X`HhD$@(!,JQm0EG,P&BS,Sm-"@@Pj*SVUb[kF
#!V`X&FNPcI(fBfpTBQk"eUj[BEY#F(P[1Z`3P,D0*3rqSSY[fV6-$'`4fbHhkj9
qS@TH1Y+[QBdICklRR#'a'ID8cFBbYma(mGVXQ(El"*Y&J,0(E2C3+EeUJT!!%CC
ZZVIem*!!$H"Z,Pe3N!"EIlqe1!2+`'%4JM)lT$F#rRKpemT,YcC8+93M0JQQBmZ
KJhRUFDq$E1``TM35rG1%3jI1,dSHJADYmUpN&6HlB$`(b-3USaq*R(,GDpT%[*Y
,+8HqI"p'X$cYYG!ETebqNEV[Ei!$pN34G$CHSUTV6KRd0fTJdc,CrMLr4R$CIZ-
L6AkP!E)R[b9Pkic3C[CkH1B-bfl'AQ(aj1SfHU8`lp%Z$+pIkh"i$qec*Ri-dai
baY3FKNX&ErJ0-Z4$1Vc4pQUAhBj,#KFlL@T3$+0q6XqTAU0V5D4AR*q!kB-p5jA
rAV&5PDrdidQ+hSBKFJXFjBe-&0LL8GcEQp5$`HMmUZFL`H0AdDqch4@SUZq82S-
+hdj82(0fPVE9--(%VM)$"rN4&qZh@Z`8GrJZilr4LadMS6FD*R0RH+BEA[!9%3e
jrBIBZ-K*'mY#lP68L+8+VqX+dTY2@Q8j!5h*`DJ1X'GB8(BL'22X"#'@JeQXVr!
dGh"rG1H-%kEHF,-5N!#kIriKkqAIf3im[1%0HjJl`LK*Ea[F!*!!I!6"2Y-`BkZ
F4Zhh#G!'-f`'cq8iXP6hH[3JY!CVmPZ)H8#-HfU%,#XJD)2EEYT%fprj$fPfhpj
NB2"VVV,'-9#KT9GqXCF4@%+KD`*CT8ZDHq+*Z3CLbDK@1BRNl(5XIFJ[`("aR(d
YlTi`l#fG-S!ZfD)4U)"[aAlVrkkK,UEGCC*LPX3eP"68CmCr"FChAcIY9iSIjaD
NrG3VU`j(2ElfK[CMDcmbRMR9I#59M0&BE3fI[9QBDll2"Xie8l3KR6T9J&NVlrr
@%mMjhS[MBehr)N@I*HAU#l3`QY`$qBRTpY6&AFNVGd$ZQlJE#*Xa5mZdHKi%UU9
2h&GGQ%m%`MimA#qQHYe!a)&QZec!Ul!$lRZjMaN"F-4MR*@4CLG0fa,eET&Nm)+
cA6A&`ZpB`0HYTl5`CUY0@T%cIMK0*U3@FYGmm@jKAaGhXfEpEDiVNH@ZlE2-"B`
a9F,F48XLVld!+mFDpc3abdH"+cRh,Z'ZaV--M-L!6fki-A9a2TRDc#Y@TijFQ-S
@B943r4`i5G-h(6L@FmZm#'!qAHSGH8iPbipAZ+9SfBcX6VGR0eEaTLAR48&2eL#
ld+'4"BrZqmddk"kFNl"FY+eN+"TQDIi&HS&GD2f@c*42fR5FrAB)GU(R8(I-ad6
(&`M%dK8E(U#dR3l"YIIplGcM&dHa5RmdIL3Y,+85V(TE4AbBKTa*`E2486)@kB2
PpM'i#pD@C2GSqGk9miI)kf)Qba(![pH)5#hrNR,"55P[2KUjeI'af(kmH$cN!HX
@I8N5B@245IA9BIirPL1)RYqIKP-d%c84d[TV131rlNEf5iAe$-2G*b@&%J0$+LA
p*YMZJ6R9Rf6Z'I#Jip!SZ,6C(mUFf-D9lXViMZb46cD'bGd3C56K'T*l3k&X%E(
[8pCrm$U6SJ&qk[8jZFFq(@@'Ejr,FF0MRU3[M9%RLMaD0'8+r6fIhdFJ)QUdY*L
bRSCeI[#1T1+8h3[d!GZZpf&hReji!d,UJN-,33(8f(R$a-+9Tqj$qFX'2clL"$C
a,'iM'hVpC*-ZQ&(KLY20Ec(SVSaLRl*e,A3@HB#l@IlD3S!kYSr`XfbRiB"FGYr
1+!c$NG,*UYr@*dXYlj!!mSMYX5+-)ke[98e#"[0XaAfNCCB2D$KL+&+0*JQMJeH
hKdlVYQZ,Q3@&IJCYG9M-KQVql#N[DKfU54&k9Xd)aXGiXi-9G6QK[-JC#*9G03)
fMlmFS%UqIj9-[!0+)"!3XNJKA!aRQI+1'V-4Y#h,L'N56p,KIU49ja!PLa&Flaj
4aMmSP@f*[pI'5f`A9q&3U-*9#$1A2hB@QGR6VaJQ'LS!L53HC4"TX[m#EBhX**[
VFNm'K,pThaZ%p$MV,6*Z5[@C80D&a(jm5`2B,584'A#dBZ(fUk)9I`cVMC9qEJf
Qr(DIf@U3!)1b0fN,cmU`(Hlq91`eU#GM(!26`KiAkacJ#Ta*!m+IYB!Dfi)R*F3
pA0(F`J@f!R[jBaU[D",20Se6fbA!l3I4J#jidLD2eJPjI4A$,mdCIRL4)N0@%!e
$8BSHG5i99SqTk)Mb`fc32M*BZm&1QIa(*#rqaVS5j-9ED9$X%JEl"*B`)$c@a(9
b6q)hirUIE,M+K3pRR$IHlB@pUkQ[,9-Gp@j`D+hej2E'0Eh-L)hUaK&rpmPV)al
i!r*09mMUXr19mIa,b9#-Rh%Qfk-b-65,ZF[)ZeJqBj6@H$Bq%1[0+mPp["alHT3
2dZ*liIj#TN9G06kP9)[[DhQFJ%$R'q!(%1aRF,TZ8'IrbPkPcr,YHM!jr'hAq$4
Cmh#4#U[rTP@$M12qj!!2@jV0R4f4+[PR%(b@b)04d5m)[Y41$6+&K`R,N!"$X"m
SCX@'V$lB)&@G(%peZ2'qDlJ6)qAch6lPlU1-!LRZSVEZ*"c@MhC6-E[)Nl6hK&M
GYU'GjTmBAXq8Kj3FdJmKM#Bd*`k2@Mf0AYJ(rk,B"F*rdY&idZ3KbU6h#ldJ"M6
lcLqrdeB"fd!eGL%*hRmlXE#i8!dBY#Z@UAh[&(D%GAPBV2%81CYrkjShracT9*S
hkK$i[ZL+4LZH"HPGd8-m!#elY#HkNIAGk[84@-X1)E1H`mZffI5&,fXZIk1Ra#2
pGVM-M-YIcHrEXGANK'EE(@9b'D3I8DSGE"rX4CQMfiE,IEM'J'kf'HjQdlad+UB
#rkGiBm4rf+%QS55RYUqk+'aSG8"M*Nj`(#)aDQ0&lh#rdk1dqkLMKMmTll4BepT
*)r"DcPTCUQG"X#qVN!#liZp#PLV!LpNRj2#pdUpNI1BYRT!!'$RQN[LKR`A()M8
I[6X(-V3)6SV*-EccKGLbQ2T@d+D6CT9kAh33jajT22Z0(V!h@!L8eMLB1%M*5E3
H-L$ReD$A+ac%R-a!q$%P@C'I15Dd4jfd42ZZRm")fR!@FY#hIdi#@GX8Q'+NZ*@
ENS@l+[bpEQB*SJ5LC0%BfUY6'hUMIS2'%Q(Zq-GcMCpMpr$a"XME5P`318FXd0i
d,pjr*%DLr9$ZkYp-)6P(Pk*cjYm-EcqBaaNT)HLH8XYmKIqh'HKX)P9#hC'UFmR
2I1F@Q`NFK9`b@NMH)IYJU'iFdjTT5UbAbkL016!!296Fr1FAqI9AG($YRb`U)qh
9QQ@H+RAHiB'milcGi'1N&"Hr+`TM!cY&#IAQ%Yb8aX,U`!1mJf#(Cp8rqj6[dp8
$X18QZe--[4jNkC!!dkFKERqB,ji"KhFJfqUmA'3U#,RmQ'Fbc'r-)@*UUM(IY*L
%9Uq5+$K%r+JmGlqQqkS'32VYk6L4@US1[eU*[8dJPMcK'1QVZI5FJE2iKI53!)p
&5Y1"kl!A06YdRPaINfq8Q#9(a[%EHCN"Uf1P2@"93l6LKGaDrJ`pXAUjE1pJYli
EF'D6j`*h"BVe5ar!%kjH(A5ep@'Y63!JJ%ehJl)J38(r$ZUbVGQ5Ehq56PMCkKV
CPUm$1"dlJ4!Q9(2#m9K`3-RI'+RVbrGf6hTkHL4`l#F8p[EV#',8k`%aUpbf-&3
REFlq[ddMe41B(Ce9X%DX+!'5pcqb+e%k1lc$qj`X&!1C&pPaGZD$iFK%pD8BbJ&
k$Jj0rc9,eY@jdV9UCm4**Z(EbjKN5a%S%mZfj@c+'Xc@'RIq+mE%A+GE0JJcmbi
5BkXS8-Pdkj5e4[f`e,1h12c*+0-P15JKMcV,)cY1diX1HVQk55J!K!eB%V,4)G3
18hR$P`@iSRJPm8cL6+Y2S@,a!c$drX%QfeQDGLX4$h!V@Il%*XBeMPB)-LDQcD)
4+2hfdhP40AD2A9Gl(0$X4D6"JNQS%QGJ8'TYRCTBlAB1ah%8pTkj63C39[r3!"I
8FDC,fEf1dY`VlFUR)e-2NArUX#rGdTM"qTc`cmbQ#Qr@$aHh*k+#,%9HM@+M,l9
J#+@d1CeHA3-qZrV19!`l)#Q*41Ji31$pkLa1S"$UA4@r(`E1f1lYciA5#H2F0!h
jImlB!DV2m"9P6mrhB"(DQ'kEX%4NZbj%3I&''p+i#dlkT$4LJmMG`TKDU!kVqQN
VRICdlET+UPQ"XkA%hU`'6$e0&D!RrdRVJDc%h3'bp(!q$&Ta0bSPCHeVip[RK$M
'`Nq@9Ej)jN(T%"ahG'!FC![%1Q[hrhcGbH)@(*c1&fa6cDEEff1@Nd-k&"Ym(X5
6GpbdpX`DNp(hI`qHSr,pkSUTa6H'!@)`hdf2hb"V!,%IHU'[5&(dNG'0-$1Qc-Q
$P551f+XjSRGZr5Se#dLIPT!!Q+fD[Z$*lUZHhh8[FLEY6H"k&1(3lN8F8&p!KVP
'P0TC&A4`BcAiece-U0EV(31)#9kR6GTm0Kd$#HV90AbA"X0*$0*ZANFM4"pLBZK
G2c0KdGVTBBlddkj&MHbEP,MI)(2IY&I[%$Q6HG21%iSVAX-e!L-4H18[dE9"aGU
a"bdX$!MHmrRSCEjeAc$p'0@+k4)kA4Lk4-X"3FJB+EMS-PAZ6KIiaF-K&-jpYMd
KhNee1DiN1P14ai(N$2dk'$lN*)#YkETTZT*Di!YRZHeUB&EH*r'r"jkIjEhpb)+
,JeD@A@T"`l$)XeaRb4j8`h#2-e%Rl4B)r#+khl6La[Baf)llMVmLNA*"$CHM$5k
feZ+&qR$J+#`fM'!)dhmJA+3EB'Nkc1Gc@EU'Nh0!f@fVdjV%!&d*%Q#2d&GD,mT
[,l-%(L0!e'+5dHTj$p@bd*La$`(`I2LV-BYA0F+bm19a0[R%RTI$Bk)jVAirTGD
LM`NcJ[c0ZUq*B@SKMil+9[Ihi3&hjX9%'XKe68hZ-@![)Hjmbh[AlhVl6TiNN@M
f1p%ehDTREC!!1GeP!&-T*I*iDC[KVUZMa%'afGmbTppqR40*r1,j4rXCXNSliDj
A#$IqGd*!%J$,8eJj[Fa)[$HXD[,U9JCAiY*4!1"+1*4T&R%"@d-U[NI(Uj4U@6m
&YX!'KlCe'H'PpH9#rr`+"(Aci3X80JG`USRlRRZ`C4KXY0*S(D@mXehG&CT#EQI
[!L$F'F3D#,5HBFQVf,q+'A&X!X&U3HFhlY'bqk%ar1Ac#886bLH('54m2@SXpmL
M9%J*0lBARHCk8SE@rQMZ[5$ScUB&D*)Ai6VSErBBH`599"YAfph5d[*rAh%49CN
GdUpLIAk`i$3$%mLlhGT$5Y8X'3YZ[fBLS8IS'kTYHDc639R"9[rmK*F3SpYdLjp
NN33CTE%NL%fZl-&iGmpqV6r88[L3!'mY$jJekQ+pTFX6HQ6%21J)XjKI5$b[QjM
S)Fb)#[`ATak!AbS'A+9I$e6EBH*h++QHMTHKr6&DYIcfL(Km3lFNGX&fVh4VVbE
rFadqe(H$qp`XFP'&cM&f2DmN&V4@F8'k$KP*q'`3#SMA!VCe5H0*jDkV"Z`NH*5
lJjp02L'"&F1pH%PrNZNKJHc*NE0CrpC4H4*V[eT9+J+0(Ph8Y*p-II("3mii[HZ
*"`@pXKZkILR3c*b"merLEG1rfMHCGR0,DX0APT*hJa4CY46pRr)Lk"@qZk'-G0T
jeiEPi9hF&V3KXL,L4UD1qm()18&JmY"-S6&2aJ0rkfpI80I5183`59"dP!V@h"j
MPINHT%j*XHafQKXrlKYAEL1&J&T0e5-'8ULJZC&[)8A9j+3SLDd+EaqLJTa@66X
DGA68D3*&ULRdLERiUa@S#"DVTAbHdR@J'TP4JTC)HVpDEAq!A3m!aFUQ8(lCbqJ
4#8!&mrh2,!-3-KYl!26c$KUDXD&N5HVISQrI`85N#D2hV-DNG+Z42,(Dlr!N8qD
SPq5`cF`hPTA'hR6rD`mqG*B#+IBQ@Kh-G9%AimK#E@`cTpMN+8J5fE9U`6EE3iT
r"b96Cq#94-#bqA(S0,B"9aEI8q6F@RYGr!E1[a5"Pq-*QifTh4BCN!#@[3diEhX
I4HUHfQVDhk-afLIpMP,ae[6iA`&MH3'pDhM[bmlJk%AmeI#K$r32GL6V1L&9-[i
kbfKGK4I`qFLkekVUaD@aG6&[EQl5F$3+b'fV!m(fj%bPPK(&qJ)*#m#iH0`Na2B
Y&*%,PXeV(m!(cX&"baZIhIhEd#3paMGbG@&FEr$QNM'bXjJ%!E60l6*"&jmKhZI
NX2rh9q9FF,jS0F!cEGYmPL8!#qT%*+KjIF5-[Ij)mZ0VS"-*)LARTMUmpL4+rJP
MB"8"SXfq19q5$)2c3`,5h3Y+CV8K`9M+"5@(XFami`iBIL#F`N(pZHQbjq)pTpX
eB8B-C#0,F!ijH[Yk0pPKa@ciC%S1ePm'kU@km,3J-Gpq'jEZP@%lj3BScI3&F5D
$Np[d-cf*NHN%GpBIR&LH"E8*+#!Ic6-H&kIk@LPDmeJB,fQLMlXLlYZPDbpUhHh
6NG@cKN%Gb*@(DY8q'QIlbE64#+l+[(0P4Pk)!GUPML#UE!r)#liLTMjF9CICqmH
jBIhp@RdJ0STpUZM#aGf2I(`T3"e0d(FZ5PJUIb$Y"r[Adq4lJL6,KXE(&@S2CA6
Ni3pYkPcKX2fUTLkNU`@(K*m42FC@[('-,ZJGr!36Xc0qL21"bffDC"#fqh8)MSM
+ehA11)Kcbl`)RkN5a58hAm&IP9Q$Uqh9VTi5[G2,3P8TZ+'3!2)R0+04Hm3GN!!
`dk[af#+Y@8iAD4"TQVe0&HG+*#AMa$I1&+a*qZc2Ea*Xr'-Zr248XFLlc1D!$@-
ki[8p&kr3%5M2JHSM#I9Mpq9h`%4X$V9TAN&ISk8A%(*IP&8'@kfA-`A'm[Tq@Ei
Y@T!!2Qf"i-GMmmdjq8dNSbeh,pPdkM+qk[fmHr!l$&AG50%[iNYYl8N,pd9iAq4
ceI`(E#(SG"fMTME@G)P-!)pdbf2HmNpY#D)'X*(3me[CUlX$ALhpISUkAiNRbNL
Fer0@jhr&)2GK-LrlpEm@28aMLNbQAG0pp0J9RRXFCTfHRQJ@MKSmQShjj2mDdX-
K@Vh5+h0Xl@K2e&DEf&$,XJS@CRS-TR!QP25KJi,(ITeUQTNd4PAY)q+hVqA$0Rh
-QEB+DQc+*F`ZN!#XZa(UbD4%er'edfjJS3#"TMPd4HXA"44J*Y9L1-&Z"j6Xj@S
dT9jeRIR9"Z&1*j!!Zc4p6"R6m%KTXNk9haZ2"80P8IfDZA#Q[rCAcVTd[#cK)53
D2K"iV'fNXK)R'46cDPJe5e[%H5J*KFHCjBINBE$8b,'lf5`4`)0hMk&h,[8hp-P
ihR8i3-36P6adX5)5#1Udc4KUeGbPIQ$YIhAfR#9'#a8qNDNMN!"ZbeMVV%pk9#-
k5bhf$'`iF@%Z[)G(G@XA-[6D#"hEk3X4Nc+#MPP6L,pSmY)N29E4iYVjX8`pDjp
50KTA)YlhCY[05HqK)5VhI[L4()(NV+9fT(Hl8EZeRk1Df9&Gl@BTr6a0(&![&Fj
dErjcJjh-mKr1+LJ,D46Y[)9iTlS1qV+&J8l)dM5&dc066PeGmU"ap%RSkk)Zb,%
4Z3&4)+HK&kGZaIYE3#BkKZRVbhfHCqic52"PeCaJAjBTra@5@q*Jk`80%"F6aF,
$RX+L-aP6ZSZ*hjpU)bed3TAh6(lPi!2YRHKm#5((&YK!fIF&EMb[G'BaPF(%mee
)MiZbIBmj0Ve4U3LfS3AK0[IkI`hETQSJ!J#K2+!+PG[ihI'%T+l$S31Pa(#QieV
kC39Mr"cYNSC6"dfm5S*p9heXfi%"HS8MdNPrVTb'VX(UKBhNVeR4XS)Y1,pp$`Z
eX[5rGPL0mM1+R#j%Vi#`aKhGr$+EUP*FkV`6T'B+JfBRqZh4pYJCA6iKPj3HH[j
`B`)6#(i`MdViB-42iEP(A(c)NYl&!4iHCQFCmVdc3&iDHVTfr3)LdS#CTLD8jI5
F-RYI)SViY!""5-+,Y"8kCSGDb$FQPYc*e',QD6cDidPk%%1AHLFPZhcZdB(DhkX
4IipD"Hr#-,q*-I)1-qEN2b%,1*0l+A-BLDA3CIHip-X)$cTqMZcI[mDR1KKi@k,
eheM#(9plL'ec4#I!`Nk$CV`$L[Fr8aXBaGi!BX3Y@r59lV4)AeB3*`p'%ipIHC6
r#(lU3S0%m86U"[i%ZTRhjCl+IIJ[&8q6+R6Y4haS!1$ShBpP0jTYibr64lTcA(8
601Y+i$PN4L4$YP9lA+PL'!`LZi&8RN0%R#Gq4K@,a%`D,pGS(b#0k6,bA)hr"e-
HQaD3!#k@XY2qQacMKC0H)(ch*B4(BX$drr+Gp+H`k,J1*HAEB6Jm3RHYI6'm1P5
dZAk3!$a$fhNimr[N9@iKmX'0((%dlLiJ+diZ+#!Ce"1Ybpr85%LVC@PpMPMZY1+
a1+YS1L(C6$%I!@Yl&jJ"!G4Jk+0[*)*G!*GXlMA1HIJEfhT-B)ZjriNlGp1Im(T
JELjkcLbiY6q*lP48eUH-kB))('`TKQrP@@dZBN201"Mdb**XXi*UXB@,aJI%R%X
jB(9e(mUi)$a9+6p8Q&STHq9GaVZ@m2++*"62#eX*TA$Yj%Q"[jAdVh'c@l@0@!X
4X5M@)R3mAPdK02P"!ClX#KZIECJH3DXe-[3mTScU*UlqUka2d-0BRZ2dCJX'k56
T,R!9@-a[U2NF8H*X+%Q9&M&9k93i!bpIlG9*VNM$#JaldlhqP'(p'lUfA9F&&2K
'f#J3L*Zi@aGb9$0IihRfefR!Y#i`J16$J@j0HlK[rNrl3$3XCR$SXEFjA+6CRaJ
XJLNcj'!A0iSMK1Pm-U3lcJh+a('SU1A2AMb8UrL-!6VlUX0H&HZ%fJm6PVjL3a%
p@NRh4,3,*le9'lkCQkUXAJ#E9I@4@hd@e[$'"Z19PQaLYfS8ebqma!%`LY*Q3$!
I9S!["'bFSrkacK$Mdc#*Nac0TjUPU3M#QaZ)+Rb'X#i$A*4('mA#9[(l&BM$fQ!
0V8DcHDD4)J2R1JKK&MS&YE9V9+KV'd"h[A28G!jQGajY#r#NS`1'qQPfMaa8[@E
I`8M,QR'@d0@V#[2-XlC0QkDQmc*AYBG2[KYmTHZ$%(0"PHA-Q4d0!k!q51i,EqX
#-*Xdkj1RM5)lYK1+"'0mCrR"#V[ph6B-r'lFm'`,rF"4bij$dU5"TT-1`DNJSJk
ebV8$6@mSBQ9ladAciJRcpQ"lLcD1fKh"'J*ZGm&8C+fB9c-BiH,aSD0(`r8F"(b
Mm2m'+RbH0CMCC*qX+(35Q$PfRpS(Z,[QI93YVcG8BK`[c#Gm&iZ"1hp$Q16H4C@
['M34NX9F)1fZSp*(RN5dhJA%2)L[JCj4'1-RDb#(0DArBI'0D(13!-hUN4`D%T(
A$HZKTIhfCJE[i[pUC[$2DSDmJ0JFV&CE[#c5Y3IYa'-B(cP4XLB4q2M,$$6*Lj1
0i*i6BV43T'BT*"V)Ae`h1lEIGDZDAQ#1m#!4[l(NcR$TU',DmG&3L85DSY[6ZU9
([dq28fQq-kYH9LDhlrIeIY`JBP8M8M0Tqr[0q(ehr9C[l$V43kUB(BbBfqF(erY
'*b8*"@E0GbbJB,`BN3IPl"L15&EG5%6(S9qprFC0-Z-eRRV5L,4YEBk43U"KPir
5[aRP+!JZXfCa5c*("p&1b#I9+C,X$aASBMji$qecMpIieI-Y8G"h6#depRkcEZ-
&Y*1#q!,ZddL%UhPJh26rPCc6*31Pb`'5P*KDD3p$1Si8CY4!aa!k@E4E+Me(6dG
4#'B,RKXdYYYZmM`!ST&YHPclBPB#I6+e55$SU%#2a9X4ECG1UmhMar6,j`cI43U
P),@$a+6M6l9T`L(*)"89Naej6-YJI,fD1"mDcc0F1YZ3!,2F1'$6m*%$VqiXj*&
)H4d(-D[ZV!XbK+#BdaFPGKQLL+MI`QQ&5!*J2h$K,-`qcmHAdp-+TG,@lA!d"G&
#-%hYmIjkk2k&IHL6BE5bD'T&p1hpkQf'fPmb[LL0UjL&!G(((epS!#K8XCqQSXM
DALM4fM"hMQ5i(HU6M$5H+a$FkU9m!3LU4Z5+bJaqR-+6Th4jC(MDi(*P5P@(VJJ
kZrjMhkBSUl,e01C%-ArbH#4HkP24PUA@l@EGkK8H"K!lXCUm0aZ9N!$b$(k*$5C
c!Nc-dCp1BSG4GNj)eC'(+LGY9PqN*Kp@2hlI%FYaD)CFP'#8#IlKK9VcR,D'%K@
0V9C$!CeKbJ'hIjK8@3Tra-M,5Z+qCNh,brf3!!F"b!KiR)c0K1I2i,4K!B0X"L!
`fU%fmFCRC-b2mr5YM*-5rN3V+QU96I5Jq#LP,FNc'YN9MpEj30UY$-hde0M3l!V
SVGkA#6k,&l@@ipYeVDk"T!(BR#mAD&D9)fE))HM)5fVEEaFKZBLXTh6ar,DRc--
(6[UXl1PjZa*jQc*fadicp8F+YB#9PV(9r8X%%15DTS"C*+VU[A0B[M*NJP9#5DB
#pM3-q1&"J3qiacJXGh+-YY"djh!A*8-Db#E!A,`(h95,EAm@f#dS4e0kl8Ddl%3
L)1GVY&iGZlA)B1XTKq8Q1E[1QF),155J!0[-)Lip3RK5k0X`H`'q0k0F*iAT,XJ
Q+'rLI!rA%V%+#`YD3USBj4l*M@`NL%USVZhiDYJlf#Ec*L)jqX9BU'25[AUFF@`
XViJVNrZl$mr!i"()5Q03Q-E`kDHZakUI$H&@HL-IHra)jhQT1jDi48#a8Th&)aP
H!X*(i0U02SlCCNk)$H[dmjbm)$C*MmdUAVq22cMEJ2!c`a+JV4'UIU46BTVSYIE
U92lB%qk2fT@01pmD)JhP6(CF`m2p06VEb!G#CV4Q3DEN5X4j&A)#lCjdIU@1+UP
ENY+0"-&"@$2B*EF-c*hUH$Qb#)NiiT4JMe$#`F8d2MN`krepHXB3l8M5cUffFT-
U*YXmGpU3!')kQ9-"*0prCT'Xr'JbBBKcbQ,E-N`"G#9HANEY5PM0YI60XmTlJ-L
QIah12jpQb4$e)`MJaGU!di"NQ!@1q,K1I4#*"1hE!J9HDE*pF0NjBTd&9@XJCU'
SJlfQ1AF5Pf+XHMTATY-XHZ)bqSJQMmaDajEdAR,RQja5KlGMKe#B!%K'Y`-FTE"
1&jkb+I6iQ3h!ECUCZ'1d%EhYb"M%*Cd6@PeS,FEm&4+P`lRD55,0H(KEeSDBNQA
6ATNN4'LjCDGC*1VB`JiC9SIcXpQ9cFB0D%6bAPQMLq#q-$I3Y!VE9&8Nl*`1NhH
[eP9ll!UhaY35,3&$lD1kk'D[&ZR1AiHK%84q6mX6ef&CJF1YV)FTYiJc'+0SL0&
aGiRjrc!1MBZ,aIc0Q`2eaC6h$'[5mS6Y5mL0[6BXXUf,&B"p(Rha%9Ck3[&QiG+
(H%,9&@Je3Kh3PP'f2Ne83R!ceiPb1EEZ)ZN`dMKX2J3-i3MAd-d(lm(,#5&@SK,
1rR+0#FJ'mdj%Qk`+CkV(IPUN6dBb!8NBP$1TUh+)4I%aAT@h`p3INjbch`h4')3
-A$c%`e!AEfFqJ3)LaM@)*2,r-c8Z`,Dp8lMZqmCd)+HX)Cd(Kc%eV+M'Q`1bBZE
)N!#K01ZfV5Q$eL5Klrh`Y,-LjZ-'2ZDY#MkSQjb"`h)I&5SR'"Bb#krrU3G*6@(
qYY-#IFYT)9C-@F14GadcI1Nl$-l**1I",1cMjJ&BSXCc-YSaDXe)U,RcZpiPAfr
Xd0%QlGpGkX@4cPDYBd$$hNCC1PQN$3@'ikE4iaB%*Ah,9a"f8G)DD%ZbSjaH+RZ
@63`pp`d"N6+CB%N-5XfleiC6Q5Hm(a0S"6"!MG$!-EUHP6U(`M"+FD1kDAC@p0m
QZAI(E`)Q&R8$ch$,c#Uprj4hd,1hT&@qU+)SDEUT#Ikb(J,P`&q@N`l0!Tj(-(,
d"(Td-Hr%Bil(p%C*"`QCX[cGfT!!P5*"0EVU@#rbilZS0p8E-bG#B43MB9N+jVa
p%3m3"S$m3'h$IeYS6U#VMNJ@9EI6rD3L[EEBR'(ij4Z#VpZJ@EP8KCd5l&XK1@E
6VHd2eNe@qJBeAXJrTqakfX04fEeUfdDeKT[mSP$`"@*f,J@5Vdm6kJ!eI0&HNUT
@)re5r[deb@V00CAaGi0+aMS#m2bq6jPRZGSHV9-0*eRmqdq&&"Z`-QP94Z"B5Y'
X!)cMD%`RJfURY,cl26)rK@,4ADbR*LN&8d25Z0p+QmbKBjKAeMMUQX-Cfd-DTbN
hh"3JC&'dNV8mq-82["F)6m3DS`%K#0QHeEl*@-6f-a)U!X5*Laeb14+L9d$!`h9
ZL-G4LUKGh90Lcrb41H8V0[FNCP9`!ZL$!mE'[N,e%&RNe4X0HXB$mXC)8bN6aH*
Pr5GZ(XrC9Y`08F&lX(kG%BNcXF[FU!6H243`QTXm2aG3TBkR"L#d9`Z@hk-L18(
9T`h'`GUV+E)+U9bN&G*3([fp2$9Q!UB!$#Xaa1C9V4(8'a4Y`b96jp@JdX,lD!H
Sd0('abfK8Y1IGi&A!VF@i(rC(5I@U"ZD8#hZ5p4VQ9Ic*p[S"KkB@Y%ZlU$HNh+
&M8)$FU9Jpc'jRl$m5iEMGjC[UmF9rIAl[dTZRVq"b6'1PcTpUm1(Km&CLr3'[%i
GLYI8fPNLkdaf([L6d41YhN)8!Df'4"QI)X!q&*c!01Lb4cK@HAKFKL!biED#`#K
r*Pa1+5(UiSL55jVq4fI-jB4[VZBI3lRHU+deMI&cU)[(hV21KN+4+TT)S9,+-JY
D5p&[,i4lapK2EqIUrkLK8a5Q3i'E-"0)F'$GS9Q`Q4rr,i%b'Qi"GV($XM4bd[P
(%ba(JUm#69pkN`'9![(Q(MBpi`k3!"QIDq*2pQb`cj68XMqTd"lI&Z#5Q!hf(1c
ESVd(!eYc25$Cp8d1V+6M#eCFh"*4b*4d&(H[cPRPQ&kXRkRG%&AhfUjd'kRl1&X
e"ElbJEMd8),9kSSf3Mq!CTNf"VREH2-@Ne#4D2ZF%ZTHI'N(5aS`)S4MFSJHASU
&#GS&VMT'c1iIV-F,&8b&9Nid0KJX")HSZ@%5K*LEZLqV(rkY-@ZV`31iU#aBF!J
-0I!,[8BNMYLV"T!!9IVmh`He6*i"fl$G+`(R030[RQB)Y$"dajMJrfcDfeDTI[(
#QL`Z9!6Qm8d,5D!RpTX6SPEH,)-""'hrS,&G5I5Z#C,9NIPPGdV-#+A1N!#G[3j
E0F@VlQ'1QFrdUSrJ-"`+AkH&#d(9B5b!QTY3D3I"hdSA#(Sb(2GX6RQH$ijpe1j
rS4`5fZVf1HGMZE@TrSkJET4D#qif3H%Pl)A6*&6!DT1MF9%V)[jpr2&BkL9KR%D
r0dAr$hYU'A6@KlS%S5Ih05mlPJac-FDK3J)`RD5IQ@'10P9Yi2%FlB*2i5+%JSq
1lPr@P(RI-##emj@E!S@q8'prQD69"X(l5,YH'19DrT)Ucmq2D02L(p4EL54A)F5
a$k#T,EhJ"PEVX6G*2jC@C6Qp$%U#"Db!M#FcN3BRAI0F9paiASBmC6pddUFZRhU
1UDK0DCpdb[-F,bpE+rp`'JJjA6!8G*FR4C-iHp8+SP6qC!lE%i@-"ZLq(LdmBDZ
kDb5%Q1q5`S39VS'bkH`Nq+[rH,#VqLZV1)T8Ik"mU3EYpSAS[HPNJmFYaS%XmDe
MeZFNe3I"D[YXm+d$-f`3V"R46GfD'!&*$30ELl0J0Lm!Yf+03E`3[pM++U3KSi6
K*&hAjVKFehlAj6[`(E,R3JL4#JbZ,'LFdYhj9kG42j-eNC`Z[8Z8SqY-6@@&8(,
dJlQ%'RHra0R53hm4PS!B1TQ$%PA)3@'[F6Q!Pp32TAVPHJqp,fqU+`$Ic4D&jIi
I@Y"3[pX(eA%l-CecYR8LQH&J*,D!#&rKG4pSk1!qLTrRF02Jj&5N%!$'0B-5Zm'
Rka3H*#IVbVVR+j38MKe%(&'lE6K2E)pdGArqjamQh263C,d8Te698"0djeb8,PV
*1hJJBEK*G9m2R(6fB5a@r`)&`)5eXj,2k$dm,$G41A9dD+a4M8H9dpP`[%d+2VL
@`[RRA$-*"K,Ee4XaDqYV8cSi*%&k#j!!qTkXS%QaPY6AC#Xk+d4FSem"*K+B54f
4DM*Ji+phYXk`1@@FQVm!V0Lh0$9*eI&1GCERH@["Ia2J&kml)Mk8G)48I`[&#!`
)BqH5eY#(jFeSfJ8`0"`plM9VSI,c%iL#$3eGLp9)X9riCbSjLK2L,,!RZ,`3[II
,XF8059ZbN!$*lK09qp)dPF*R#2G,2A8K[9NC6AU1qh$41%j#RbKPPe6Nm,B@CUX
mqr*!ZE(0da9c2,GS%BI)5BS4U))m"S1f!fDlFQ9P1iQK3M5h$r3ieCjEBaGaD,E
KL,5q%bfbc@PKMl`!*MMK1L"Me[)qVdeihM""0Ul6[NY)fmVTDqb(B#EYXI(j6fG
f,paT,9V"8(M,&i@H(UQMHrMl8XYe,PHG(c,2XEJiGV-LErE+L`aN#6D&2+I-d3#
l5KcE)&i9iPb1LjllbTDZdU#qe1C8R(L!DTJ[!V,i$SQDH8J$)Y+[2!h%,&1kYic
&J1d%r(FL0mc*qIQVPhSF#-MAS$MPXeFhaj-lSXC6GR1!LK4)C$AicAQIq5($Il`
1-ikG'1V-Ej-JRmIiEcAV#$ULb6,Y40H96QS%bLfS-XK@kETDLhT8VT!!SB4X+%A
XY8SG8HP3d&e9#B*RDRErc-8dUID4GL)[(GMQ+f(NU5RIGY[DGbZe()@f,CD%mqJ
5cL9TU2SaGF+CCkdeRA'4Y0C@LrQVIXfNj0Yp4C%Q6!6)'Yh*[,iYRN@fHppDrER
FbJdlSIr+[UA$5qB8pPl8)*E@Vhq3!"&FNjAB&h5b41h@p40)5YDH%ED,VKf,k+Q
U-)'M[,20)#m8'SMCFpRJc)2Fj`'k)+aXPke44bYqMr3$VQ$!`Jc+@UqiH@V$aV4
fHD2a-F(2*0$JXFe26&a@'c1)!mlZrPPlRJqcS6H#4AB2m1-RS$,3jhh,LZ9VkhS
XeBPZKrZ5j,mJblb'D66316Pk(4C)#%dDY6F2P9kYh!)68Z6cSGp@RK'ZdR041DQ
1lEQdY!l`DE)c*rj@#JDmjM#!!E62b[h1'54DN3DaGZXL`fJIk4[Nk+MhQ[1*"Gj
1FL&RD&&#HSGUB5NN&qE$QfVU[`rqNepMRGCJ$PCq'r4#(0&eqAH,Vj22fHc%pG`
Nf8LTR$4Di4ADANB(TSD%HN4-'NBd8'B3-`[Ab'2"DiY(J,4$Z6ZQ6#3[k*2)q$@
8Id*#)fpQ@JK-e![b9e'L%la,F5T9%2ki,i(Y#(+M&,l)!"1U@H&1436*Jr(,e&-
*iUY(5"r1(f9JKfpeXB3*jp%6jXR*&*4BSU@1(l'"-embAZdepYV#CPp6-Mh+[25
MeS[M8TYj$l,U)Em1a3LiT2&j[FZfl%pqcCSR60PE84KDEJ9L06Li@l$PfTM%Z38
FpJ@KLUhk-#"ZckD0'%@bX)iRjB@2Gj&GIA%,f-$'ckR%G3KG,RCZdEcp8kaQb'*
2R`++,VMGSQiP8MIMI4ee6ZeMXaJG&Ul0$f5*kU+3!1qpdrd3IU!5kJMka9m"FQ!
+Ua*TE@)[a-KBkTL!'VK,+d0b5#lmUG8KPEh%145MdN*VXQ-29G%aVhf$Ep8lZQ)
5)jla*8*+V0&ACa41ic[eqXVRa[)pBF1i'+Mk8D4(jlZSqMFI9j-NF31S)SkhD$F
5ljV0)%N)$e*qGNa#qA990c63m(rlLbm!fQ0VKrbqF(PP0X8HT4p*`!qKN!#EUhl
*%3%fSDLX#8f3!$`cSkGSf!(k%3VXV3R+$C(ek-F`XqZD)m-DKkTkT$imSU069+)
Z(MH"aj[$cLR*Z0YBSf"52L,,i4ZMbej1&mTkB#`ZdmE1Mf%SC5E@j"lf@fDQ6FK
0bpT!8p5h+-De69fhQ6GSpY*XCrj9ibHc)56D+Q*fhBEX@e!69G3Lq06L%%MiA4T
SP3E@l5p8dI[a'[f5`Ac-mAbU6Q@ar0eep+1+%KbGJlHhNb"VIN%MPL6X*,UAZRh
8b'0qp3kP)lZ[-jE'FX%hG8h$Q2iIV264444$9Jc%B%S+JJdGpDd5DVNi#+h95P&
c"0R2C[8#+b9&Ned4M3iejc'*@+"`U(AZD,iGJ19ac*(UN!"cfpQHN!"J(aP0Il!
)F4f'HM"&IN4Q2$$"1,hRVGrdbL`jGIAIGF$aQpqBb2#2Z08Iq25D0)eGb0LSJp5
*R3@*8#MC"P%9Lk`,h$cZ#i0V9r&iGfmaflc6La`*h[-!)[Z!R6mDR9bdGQ3rk(J
)NPNH,Xq0,0c'Rh1[G2fcApmUYLl!3SA5'SXM#M9!CB5*S**5M,bY!"cIk94mkF'
29DJEMTifcK1,-a#[Y6#8`r)3k%V0lj*F""9CTU1L*$RNQ'4eXC5%5T8(+V(`$-q
(I#peIG1bi$NH+!!J5AqI0C-5L(0U4"FYa(eV!QAK5Tfb4FYE2+VrlNT!cb(3h*4
lR$jhF@QY9*adP+aZ9Y@HMU`Ne#M2pbP-%$b`(,Ph8"5)8Vb++V8VMeZc8ZQh+-B
K*p%3LD!jYHl'pJc*+'kKVA2e-plNe")8$K#Z3T'YfmEXZ[kcGq2Y'bYCF+X9NSJ
XpIpjqm"GP1-fIpT,$STf!'F0C&+MAk!mdB@a,BPXfC@&S,Z&E1N'SE'Yd#b92cM
!AV%e4UKaZ'm-0q@$M-`(Y49EVNTq,bllZ69L0`Ki')Tmb-B4r*UMd6TH1i@c5iU
e-i"2G0LLBX+`kQM[`6[,*kU*QU0,RXi#*NYe#1XpX'NZRR%HPJDr%`%mARC9CKB
+8PbIda60[CYi`5BmZ2Z&H0X2-UJ3ALQeK[(a!#M$G-[HiUBEQmfe0*S8CPlHKE"
[H401EiIb+&aIlQ54P85HlS'Mkb*P!I'kMe-4I2RMSNM89U('Yl@cB`2DF,pMF&0
80YZAZ3!HS`MAQdK$M$$BP4qcQfA(0SCDSR8$flGQXZCk2G0E,a$!b+Za5Klf3@9
&2,3Qam[4MLCSKq-a%ZD&TkpdaZH9*D6$I@5[hId"mQaD#fEVq+DN`(hT2#'AVG(
&'Y`d8$SrMIlXTUH6XI3G6PEFG&FiCe6U)+`98f)Z'RL#Ifc)I8MGIDDXppR*`dM
M!*)94LK@-*`S&r@G'1@I0Zi9FI2d@[8Hf5RV3(%TVV6KZ9c$%jE4YfdR99Vmb`%
bJfX+b'D2V#kF2,T9Er[#B+J+J-iJN9p2P1rT)@JFJJ2EmTkMGiR[&NGNliqTpkd
*HK$hlmHT2UCZNccki4EGCG2QM@jXPY(f5p(&BKE19d8b+*ETNm[i1rf",E6V6Vq
piej)iT8(q,#GdB($NY0"KmDcpjA*R6FNV3DUZ+C,$cd5Cil"'LJA2Tf5C"(X11K
[j5Fea+HM3eNL,q*HJJXFB9D26G*[Z8aKKj)i3C('k+4hk%j8EL46!+1VX$Vm$NP
R!K9hJ!,&(mb2[c,G4ef%Lm8$BV$I&SSR"b(&S'q,1rV"%qeQNprNTFm4bEe1AB3
l'`rpBZ'U3GMSeUT,AY8UJrV@C'+0Cd-690hN8"p6bPi%Q,-%0j!!G@8L3%Xm2+!
q6Y*aXqN@KE'e+PT&Vj(DheB(aBp5*)j-X6RP#UU#5b8fjJ8KcaEZK@NhVG@j5Zp
ANk0'"35h-kc"!r-@ff6R,8`NKk2c+H*lC5NNYJdJD[Z!(Y(9VNLK1f3I9HCI,00
4+fYH6Q$[AbQiE1[36qNqHe'eN[UQN!!DkkrkFU`T[H3&Kr+%04pd'"K55f0'R6k
!NTLCkFf3!#AFkf8idr[C#36lHqqRc@)JX!034S*U#9V"T-q@"G5%&)V*!%([Th1
0f48"Q([hNU$mjkaE35'@-(6!lT-iajcHRA6qS096E9BkQGEZ&Fe5VcQfjT4T&aG
b0bi#T3VS(CM)&$Dm+qr@R5"J2"MhFhKS[B1FqMk1h3'!qJKKP"Xm![U*la2EDHq
j3(dqmQ0[qeQbD@'%MK$qSQ[dQ+3p0[1`b[p#4JV%*ME([N)DpE#jL6!9BG4-PN'
(I$6&U+G9S6NLjD)+H!1BCmDMKlecXbf5a'5h+4&A6jFlMdj1[69C5r3'4$hT)T0
%QE4VMqq"RTkFX!FJAGeZT,dGSc6K[Kk3!*JL5UhU2&L0"-9KjQL!00(b'[)'qJ`
Fh#3P'318F&h3LAj@bCcHImLkfl*'[DDQeGSNCr3iDVq'KU9%a$lMHS,#9%am-KH
[G6PMXXD'1M+bQ`9k69@l1G`9l-XG(Xl)KP0dYT3[bXBd'Q6)%F!ciFAEpbCAM5f
,Np!1Fb6hpMEpX)[kFcdq9hr269EZ$AMhl#114a&2rGKVbLG@I3p1X@-B4NF6b)Z
kGa[GNTeQC-!!j0PVCVBNb,66b+k+[JrJr8IkjqYXdmla-Q[EMdEfQ$L3!!AEUPf
b(lL&411iTaJjcCS0aF%mMY`(QV#XDV'mDDd1i!h*q[C+iMi6XSme51Nc,L`8QK!
bXlY'3Te$5U829`$3JDKP6GHJhXQ06PJ[+am$hqZP(hRKqr*q-N``6YR1jGjjeG+
,#S3`2F[r#&Mj'%aZcF$Ge$)CaD8KRP`L*#Y'1E%IQ&LJA-l#'LAVMZET,m19(jJ
mRja%3m1'HhRIkD9D`$qk"3U3!0Di06+J8fB@p!pCN!"@LM@"FqI`TRPj&@SE@Y8
LSTCcJLQ)LKKjdElh(Bj*(9SXNH#ebek6JB-,f$)"kQGmRC8S*(`MV,+(4Aa2+&E
-AmZib&AJff-eV!@4ij-D3MJ[hC!!,6Pq"cAHAQKbMXK%RhTiA%9SR8b2)JMAUC*
J[!Fe0ZTNIYYCP)"Kd'E,!!eB06NfmEMMXqZ1TSkIZG2[A$HQDN"Qp(6#eRNQdFl
)+0Z)$#Pri5%AG-N94*M6#D&D#Ldi9p['C!m+VS')BA5R#!b")G[kCX5ApHrYcLj
)hHf2pGJ%%,D6-$Kb[r%2'[VQApdJ"J2MJ[MiDRHqrVYA'+rXiD+,98pihB*k911
kmSB6ke)*ppr1DdE(48T$qb'+!BB6h-BY6T!!hr-DB"NriPj$N8-3pRk@*AG[hRC
)3B#bM2arNrD'1mJXkF&@RTZ826)k2*J3C-e+3V&BqRrD"c%jj$AFpCMBQDld5N6
Ara$mdMhS4%fQMrH`$4CIVRAKm5)8%`@'C+r,V4jFj0`bC82)h*%1&'$aEL#H#HL
G"T!!*TL#Fp8mYV'`i1SaKQ[(I+!m6bh9m*0-ciYIZ!N,EIf`1Hd+KG&M1UJ'p#+
LpNe!rA,l1-l4I!-15*BlZ@mfLclYKD-4JU@1`cqZY@aamI*QBdT*KS6@5294r8$
Tmq3E*ZUhmRXEMdL+r&`9ZmRmi$#Yem[FHPGeSZbmh4!9&F!D-BkcXkEZDFVfBIL
ZC4H1)Q&GUZTjAhiNQZMei%GD3,P))hQGmDih3K3U1$!4+,)QDk9eIPEqQ@Gda*e
5)F6jXDKDNVdrKKR0*VaN!*mBjR&lmdQBc)B8pMkR,)3cQ@iT8Nl66)$(Kf&!2'T
)!eMXkUVEdY&*9lEb-fGa,)&24L!89QecU6LYG)&U2c3I$fZLAMm6,pDJC)p**2Z
GT%L$0V`ILKa19a6`@L&,*F[pmq#!H-fdV66hFT&Q10T5AMHULN$Di6&,kRP@!!2
)IM(BLUVLiD!%RC,h12dIX'!@3Sk'BC[,qXIq@(ph@e*mQM-dfK'%#m#`HQ$,0+#
GHGB9Rm0"%X`lb#R0ZX`qR3Y5R@!+CZ8FSF[,CR23F[+jF"C#iP%KdG2+06VH(1G
Me$D#%KmEUYa4B6UCD!)'jK,Ir$AF'Ec'!pqY0p$UAS(mqVNeVPkaRRj9)YXA!D%
GI8#)$%Nl90@EMY"@aU$m*C@5#fRAH%l%AY4SaMcpk@E1GSB6h`#m0-1G!19j03&
F-5K!lLHG1S,pFD+Z@l3q0XM3(QC'h0k$JrG61[mj@Z6+MR(1#J%IjfE@0K@h(JX
`9F9VZEL#'%KeBJIH)k(3D(fK6FU(q5F"*0&(%*j,![p(Z"m@,V(Q0EQlm$9Xp"Q
!#%0-S$j%R9e4!rDYB+jpF'I'JBRSX)hFL2D4@eU6h,5+*A3d$QDN5bA3)EL92H*
1dY+d9UjUq,55*!SD1(&[FL2Eh4Lm6&-dTQQB202#DKB5C3S9i1fFAYM1I9S[(kZ
VGf$eAcM)m9"j@BXp8GG,9"-$mJP++Jk6maC!ML+3!"!8rmF6A!FXS#kNS[9@lPE
SD,)P@YpX,RQj&,Sd`"Lh4j1IRpZ26NlYYqr%m!`1$p!ibrQED1K29aEDLJ3#hc)
`1p'GHjqDY[pi,!dCH&be1@rfI4TY$`UqY+qrj8RS!NQT[I-#bBVjDFTVUd#IfqL
h'!h62a6mhP+CYZ8)HIeH0`1cbib3!+6F1SDSX'ZVHSKA*kV!dC8jRXBh-lQ,@&k
mA9D`F--I%"PmMYcbdF+SMqS6GV[SFc0d2c(,Al@1DrJPZ)*KkSq*+IbBIhld6qQ
F0caU$#E53-D$prE"qiDXMNkSA[jVq!Yp5DYDY2p@NTq4mRcr`SI#5&K8mhl#brY
8G&T*`M@a"c!Rb%"C)LU("'TLHEi)qJ8*UV122'(L0B`C+NkabV'EGip2YJbehVT
GPehqeZ4Ul3Xj*8fCf`hS)$`lapEk9RF,V#9QP,k[AT[)5qFiX9#@0*)1@Tr[9'a
kj-q1'$1I[YUSqFY55PbBA##TmJ+e43pIJBQhCb8i'M&XqJe8'aL"+GN"GT4qfC+
CKM%FHKb3!&JJGPCMQ3FU$6D(3Zd#U1))pZi"+@4E+Gp,JP)XkrP*)'$#IX,KlAK
96i%0-#(YF8B0qa6,65)X3m`fmd&jPrp3Da2D(H(I4aZF635QV0I6S&NP2%VYALL
qfr'N5k6`p*Uq5M#rX`H'Q$TMFb*mc"8Fd!GqKP4'a14jLj5$jF9!9)F(%[[#mT%
I(c3"J$i"Bj%X'M68eDYZE$hJ'b8+8!(PXT`arElhZ1KIA,$91d$9cRM5m&J9[bB
rG*LGeM'KBf$*4LD55r$NKeVakP%r(crGF5DQm+H[&%RIVp3$3XE#BJ0a"@KHD-+
(4&"*Jm)(!T8GrTaKb-4qm4,9Ej4K!FfXEPTfPFL+A#bL!Nr'E","U1QPU%PQT[M
l#+@P0UN'S,)QGL045RASj"qfpMq+$U2b53[bm%jd%1'(@k"aGM2FJbp4NI4!3E$
'abACT8r0)Afhp)4E9N(i*4cjmAHpaI6r9VM$HDdP!AaI$Kc,%fD[0a#fTDX+Q0R
q'@,rXT%S@#rSF9L&3*CGYU$3Q+#5%9L,59'SGcq#ZlIiq(390+hB9,TdZfN[$L#
"Cl+Cq,12Zm,`NSHdRqcBj16P,HGFUdKQZr+M!mJmh8llE+2C3!eT#'GCpTaiFNb
QH4GT(0"+q2"*Z0Q%GK!8AD$b*b*I+)0MPr31*&SB8"ip@IE6jr&&-deq#'Cr%*H
I5TiY!J!`3+@f*'HS`S6Rd@2k#`[%0ZRH@P$XTE3iq0BKm!-MHf!TGiLP*Ce59[Q
GRUlA0PkX-F"Gp9qBGqf9BIq&#ccL#3!KmrmLT1K!Da0c0cUTbdEbY86@l8kj1L&
fY0C[Ib6kh6'GhqpK+'IK845TKHEK6fa`hTJ5'QNSqVmKfh%"SZZFVTF2J-$`Km'
pEHTA8mkZEaemiL@MR0)YRcj)2Ue,)brTT93`kRS,IV2)Hj'GYTBAp8i%-3)@iX3
$6AEKBa(6m$me)(ehA'E'#ip-qYRhQ-,QdRMGLqQeGr`4N!"mR$p1SU5,H()cUE(
dJVqV2C5eZHLSm42i$#%0K9E2-h'HfH)0[jIR0R01Q*8&2qD-hL#"*rhr-@m9bfJ
I,![@S'!kGM-PFC'H3MUMH*8Bl-1CZ`#*!$rI9C9-i-Vf5ZH`0bqfTI)PiV`QCJ"
pG`QpFVKJ(hA6VJ[VS!aJB(CI$S$E)"@VTQ!45kM3-pPD6cmYUj(9)+#i@r[V`er
ldGi3f+@D)qUpef0c6*E0#,EZ(@k!*3L,IMS-i8T2$qdR9@H3!"@@$V`qC(9V+L%
VrkmFBV'D""NkfS$#heBEXRM&dfEUDVSfk*DVS5K8fcR2558KH[33IAbFhFKm8iX
XqZa&Z+4KqHE[@9"UZ'-+Z@J[alfmlNAFM494M0mGC!bUAE!Ljm-N#1Q`YUiqh)"
4E(6j&e2QZ5@3!2YpfT3@H5a+H-FddPRKaYVaFDJG,[IF$G&-%RQEHjkBj!&9NG1
i8@lcep#caerHQ03&fM$'I0&bTb(4Fa8df@LR+PTmIKcdT`!Qmk`kM&hJGd`jL`m
,02&rHfF+&3S9#8%K$`IfK5rUE(NAK35%i@2LiMb[Z,+I4THHSf98GHkN'J4lC)(
Lh19)[SaZdJ%5ZP,''e00pFrL3I!'++IIp&bKE#'d9GV66@`SKXqC`hVe'KZj6$T
1M*(`dR-McpBRc6h`+a@GLh+N-#'HpF`P8!N``(eD-h'h5mI6#MBIchcKaaaSAbe
'iQbZ"`2(j+I!+6G@"IYYC*cMPcG%0`cZRZB6R2+cc!VH%T0A&Ee)`Af8Ybl9`3,
YAK@&#8d'kGQ@'F%#Lf2KE82-DAmd8)RmmBV(3Cq9[jS""ZEK$5'F58LNJNUC,aF
lENjib5*FHBQ6XGhl09d'LCdc8F0ABXe2j[hHAb"6AI#IpP1ZBA**'c!$Vj!!rPl
$"JpE0UTB4FZ1(dkdlH6G('XL3-+S5Hpk[a"3pCbe#kE9[Ep2Z583I!l5G3AZ-Gq
acQ0T"'4`'N*G(NY*Pmf(#9!HU(l,XmbG9a+Fe6)JG9D[EaY+daMY`1A!Qli9'1l
AXq3b%T@C'5A)-KjMS$fi0$fm463bhSIBk(a+*FUF-m9#(8crN!$X"2fFM@T4VNf
PiFGEbS[H8(rmhZ+2+069pFMY63aF8'eCL2V@eP+r+MdJcm5UCE3[dl5AqJXEcN-
lrac"[0keqkA96)A*dkehrRAmTMEdSV6mPM$@jTcQ`9q#1PdLEah`YLJ-dkfU*fM
Sck9rhiGiNdmN3)2A[TMA*m4p1UIIIKL5M)dPhq,PJP"#'RYC"5iG,r"aKr`0kYG
f+,E8h1,j+J89[!T452idpkm&3I9CR`2Qq[[)ejhiYhL#B1&Mjq&-[$MFH2aZFF(
'!YlVm!)'F''JQaD2*ckI&4d0"ZT4jFLp8DP1A3kM(I51!NLBQ['b2KG#dC!!c''
NAm2Z(IZFA8Zk%hC)HI&`Vha@MP(qKi4pk3DG@&ajhXaGmCJ4Pb3B*Z#KS9&G$J,
A@Xq(-JJ"BP3hh$+DqaJ$"'I6kq"3k[,4[`T'+'jiAY38L,FB[Pl`U&qGXcb`+&%
NHFHT59I$qdTEQ24&F1T3Y!akiUpfPLEZ"3kCLRV4c)0#QENQi@F*TjV-$#`Ci+B
(1MZCfLN!ha28NdF!,,,DP!qbj'GHE9%,$"N$XY4Q#(*19QfHX6YMmK%Gc*chE`!
14k($G8ff'KFYT$ATc-IYd#FAa,2$jQB9H)X#iKQ6G1(3JiDhfXb4pf4c8$i-rf8
BUEEL-SqlSLq-ba0G#bR4FBSmJ*PCe89)[)[ANfURV'L`aS-3JEL)59Z&*Y()FGA
UNPFQeGYZR3#cl(mE6mAb+$BCb9KFPGHEYEa`IDEI%lE`dk1%0aMkADe(,Pei"B9
M&#iMr"bGjUL&kd6HkfZDh+m5l1YpfBd@X1Z#b2h2l`C$Ai+Jj(V$Y+QeCUfq(dY
@5Dka1)[b(5Y@KpFIP1LMkb`D,'5K0!mdIDU6*EA`b'LN--QG$1R+CT%J91Lm5D6
C2`NC"NIFM9,IDT1HJ#EZlmE*ddMdDb,RX[K$3Z"FEP##fN0-h@%6%R!PCb#%MrU
hRMGP@Db+FTm%ENK2$,ePj(r-5)9PNeD5TS$fE*S&i%P(LkUkS*UBa&HP&q9,aI9
0X+4@2UcM[H[Xi3fhV+&-Nl"ie@I"e9'5D6YT96MrI-8#hL[Zf*E&5iZ'I#k%H@6
JbVM[L2"!GA#44DL)R1(N)iN2LG5rImcal-rH-RYpAfjJT"R[1ZYGdb1DRQiIYbc
9[Hmmj[11,TU[2PY`626i94'6Y"J*lPq(!GPLGHM3Mj!!&)LbKmSNNCpf8FmR3*G
#E5rNe`-k)pe*!T!!LNJTa#61Xr@Mf1c(-81`6m"TH)UEr0mh$'Ik8!)cU!i#f$3
TXT4V1hYA`HDcdc82+*6hY6Y"Y"2RPVmYdXl&QXL+0Pa(FXC`EK`fJDdh2r&1kM6
*)5ZYal#9JETD%[+a8V(Cl[HHc#'qJ@IIhL95$ZZ%j1V!2kZjqPl6q$bGhNdYT!m
p(mP40QFJ(2N9QCZqQ$$P1!4r05fK"(ij0dC4$CLb1TplFUSkpQj9U"V8a-i9aik
ZSI+r'ihGUR01q#+24aj''I,YF0+eX5APXLl+R4[&3Bkf#JB'cfN-iTmjc0J*`Zl
5S9Ide3&6P'HS[jb`2AjrTS)VAbY6l2F#dV4QUpH8+$NIZ4GF,cXU&RK4cQfa$3a
cqP6,BI3IHHN"r`BN+iUJ0mc-Y2H`C1"F[4NpG[Ul&`'@VqeKpH+D4fDX0HVFecH
qSEmE))*#C)X@2R2ZT'4ipUUTdZRpq(em"92LhE-&#J&L#h9EMQ##DCQ`TDVEl'+
PU0ca3@F-NXfkL$m"HfGD"kZ0irH,ecd#EPAXeT!!BAmklh`M($l0B38ZD`3TBXQ
Ylk#ri[hJjXY[$[QTX'G8f#+Adl4jR+YP!c,8SqTVED2Mi6adb9UCX*IQl)CjLC9
cD6lEi+NbE*Ek6h,HL+mZU'%4ehKT)bdc&q&bM0MfQQ)Z-kV*`'c!44SMQ-q4q$'
rb3FPd58cKC2p%XJ8q`A3*QLpHCY`pf,FQGQ$EGK#qXdI@3400#5")f-54e,HR)N
Tej%$q*h%qABZTH"TL2B5Id6lj1k8jGbCiMUid4NkRBU-K*!!hqC*fMYA1"T15GK
DaK[PZHje-0RkfA$)kQP3dU%1qX,A5()`M$Y(e$T,Dj!!*DLL!kHV3iTEhE$+dc,
QIc)$6F$D-C+le9Q-#'mc(R`%[SDDj['ei["L`XNA)e4!8@MN982'Lb*r'P1SiSY
UA*dbp['@--kT-L)BVK)'Eh8-63YJ!HQG`(j#2dBp[KkQlYbPmU,E)9Pm3bG4$-h
)''ETHB"UU8'MdC@L9`,cK0&L,@"Cqil3J1VfFqa"akESj'$lhLESPX'ihEAQk*A
6VrqE#[kiV4""Ujl9BJ-MlijhV45#kJl,G#4dKPiEQXXiY0[N9BCLk0-NDKk+01Q
2C(5CpZXT0Drj+hXHQ,ZH!9)YJjE'a#8[Dp!IRX(paM"-C+VkhdfHpKZ%rA%QLQ)
!F%+hC2'[K12&P9982a31VMPEIX3-!,h$dCdCjelQ2MKK"[c*q@k6R+rE#C&DJDE
N1MYK1j@U(%A!F`FM-66&92d6TAM$4GMT&mF9m89SH@lP@JBb&XmaM"c'&I4JbcK
eZaUY@SjhIDK*3LYL)'rc`[2M0IEK&Ri!!QUYcSc$j8TY'e&5@RL3!2,e6hM*L5B
cC8Ij2*l'5aZ-3UpIB,X@'2cTH""3e-XjF#UXc2i4VhGG(jLU&*b%ADE'[*FH*V)
@2BeG16ZGLiKIhV12VejHBL@mX#X5dMAR!#EYabcdD3&"2XhJb0"%Nk$hHMDAqM%
6-Ef*Lk!+C'M$@E%FGb5j+91hh-d4C5A%,Y+*IPXrH*i1A6J',hMJNhJIb59R'CY
$0eL%l-dR-mlX3L$Dfc'D&Akr*3+di[MJJ-Bc*Q',RS5i%*UJ$!cArBXJKl88NhT
ldDZd0TN,!UlcFp!426[[a23djhB5,1ZQcUq&`LAJaXQ[@'V+"c+J#"I`JENVdV[
5%iAmpKfkZ+mj5`3CJ-N,@CJdij!!&B-KpliM[&GGF9NC4lTLb"*X55cIpQ3VH%&
@dL9S(C0VXSB*B+NRI#bJchF+iL)Ahdh[MY4AqR'EHBjX-*p0F&M!%BTQDLTLS8p
lPG-CbDPN+DmpSMjarPLH&L*pINPp*b@M4IG4!-[dA55@22C6#Q+Lc$mUpcZPN!$
K5-[[PSrDD@kmpEj@JN!&'#Y""[pf&M`T!0K5P)Im*JcYmf)99a@+UQh@SNSZ@&!
'Y,-"$+#rk)"X-Ub%l&+(mhE%SPNEhbReIG*YeP1)'e23DK([0l,XhjCAMM+p3-E
Pip(R@!!DTN)QIS1c!-rM',pH3RE'JpU6MIbp8dj')$99e@%*2jCHAd'b26+[1ep
c9G!QCb3')fhR@j'cETN5T!j5pqM9`F@K$dh#L55#la!P2X`dq!al0$UB`hj+X3C
'Vj0cqm'kUkEa&aQXAL`PfQpRLiei,jj6kPh8G@TV5cT3mb**UiHrh2$L#"P9hiS
XIkmkEf()q)aX5TM!!qd(U!#&5XHTV#k,JK*HNMGa)H*qB8Zkp(VcqpjS51KcqDV
`jBHHL9r$2QPNfrdmFa,CP'Xc"hCIGe&L(kMCbr'ED')f'QjT19N'LCr$[pR,E!B
,Eri)5Si"mMB$L)4%[LXcb%a(#@i8B05)m2$F5@&*53VSpiR5a3lTPELEB12@GEr
2CEUMPb6lS!h4U$Rm[)`rPUH"G'((J(N0)`'`5H9DFdlSGa5YIQ)e0VfXjPeCpLh
%0Pb)+r8Kk60Hkd[,@ki8DVL5'@(S'd-&Nm%'IdN4Z!YM0rVZKC`F3$GXlMD$)J6
m@B[2MLah&bBG!!e2kFHM92*C`)30l+E6[mVd9A+$Q(-1c@kB0[[61T'IcDBeHBr
%qB)Q5dB,8fh+CL$L`m*Ya[`U"!+GSR#iE'HjCEY-%AI!IKk2Xp9MA$lcETcN6j(
PBpYmcZRTbbqF0#`D3l#b#VjjC)k)U[%h34+2M-(P!04[QQ)-M1q'bI#QZ'iIUMh
!HB!Sqc8b1daZ1'S'kJVf@pmJ&L*8UmeT@GM8)pdY03f20dbP2T!!S5FUkrkXr$K
jjl(L2BLr*2lmLY',AT39FG,q&`"LSlke&[QYc5UdH3fT3XZ9`U,N91qakVZ`bUN
a0&QZb5(UI$NdTqecrbbG0X,HGdYcVN$XIp2f9rV&5irGpf4Kh9G-1k'j3,RbUh5
"5HNF[b,kMf@9LLrSESqB`60V-0QDhAajV4-qYGJ5468%4b8c&T5k5fATc+Z0JI)
%c!Z(k4SQ[3,rAXpm*6ADjpCZdYmfC0BbIilcV!3,831I3JDd@q'9A`Xeq9F&2p`
,qR'($L)#`ElV)!ZFV5JVB$ec2"Zb4p2m'c9fP"la&[lm'0cY&IN10233GJYfGe"
N@0%0E`*e`00kmND)eYMYjZNKVPeBee(P%UB,fDX[HK6")QZ$QiCle"0P#8UUkEU
F5`A%FYMHJ0rF98XjZYqdMKlT(6R00M+CF-k"&Bil)P)l8TqRR2"c)+q!@A-L#e6
hb84,1G&CEQm,6,lefV)mG#mKD`B",%0(Y)Ha%jSKU@kdKEiD2#Z+533KRIa8chm
XVF$3QQGmbe2AGap9&lP0DM'(#-eALT3'Y-Rr$YPYl@IGHQ5$-$f+jEicJRMYCdd
lP%qN@cE*erM!p,PIeP9X3U4m`NHZhr2r$5Z9k+-M6j*+Qril@bLRPSlT&#HZaVd
Vf-3"'p-5XTpCP6J+VLR9A4[jT,dFI3)eq[(FqJCXEGB%qTE,Z`fK6ddh*XeCi4M
TU$m"V&dk9qPK*S)1"Z+S2+L%&Z&X&K!!#j52abUm6@BPI6-5C6l*!MRT*D*[6$5
m1d24l(idP$eB*AYdEEjIqbQ41LjiJl%p%E("A669jb3+G`$f@!h%rfHqP!Q'AlA
,+H`HjaShQHM[MXD2#pHJqpR"%KJ`UcZ@bK@6-(*(%$1D`(N$3FU6iLVLD[p)P@e
6aH859X+k$+D1Ie1SFGU1iBXY'Z%P)q&Rb%%akL6P+0!"qY'5j[#Fh!6rB8$FZ'E
3G@!K(iB(YZ3DTJ!Q%dZkXJ+6BQcblIc0I'hdfdZijlh1aJ!LFF+jPK5-1HD*V5H
ij4"$jNKXcLa5p+X,ImBAV$'5M4a!5F,)2",UV1,QqX!GBe$!E`C'@&45qA520e[
,5GqRVFX8DL`qMVm,p["j'[--P2&e6j1"C-H9UQ`X-`m,X+`jl5@*KS5a4$i%20"
jBMj+-1@)Gkr,k"cj#Aji#YIm9QQ')E[JIkF4Hc0Cqm%prB(`V$$+++GcH,b0AiZ
c1NC@pF(`VD@P3[&2!%HimSTASB%UA$(j$4$R6a0"3lkYB+i4J+3a[HJU@'eU1,+
C4-QK0X9mclf$BHp%!pl[A+XYS$cqqI#(%hKF8YUCe4A&KMQ02PFGp$QKLDD[6E8
[a[bp8p1FVG'ECIpBGEFcabU%aTpZiX5i1bPG6A4T$iZGU)N4Qb0TRi*YBDbTUF3
l`RKQEEKQ#FM26Z6fFhDhU+b+fC9)P!hQT0&IXGDbXUk#V"A94i$ibd*Dq(Y3P+2
MPk1m'6Q9@(KdDRjU,pY$aj'lGh`XC"H2$blUB%p26dp2k8-3B0rM+5*e8alhpBb
ZlJFqPF3ISaEA9TF-hTAe"SSiSBqZ,Rdl--Jb3Nar"pjIeK&S#98HA%CjK1dfCM)
[",#aUaR08'P9VpKLI,re0M#RT9$da@iqH[l&Sb2[$@qiRJ(J'HDZlp0-bkKk4Q-
Dp(rfhAkp9J,+JKc62%h`!G%'@2Ee[X3!`$+b)aF*f83YR*9IT2k3!2$B0ibID)k
lD9KLqU"C-+%$[S!558Kf#lfidRNF$p5fCMmqZj6jhYJ[q8QamHNjQaaU2i$Z-d!
$[ClS$0(h@C0`*pGQRfXI,lDPHfCrZ5klTdk5iMQID[%$f*@52Sp&2%e'"piC"b6
Z4*N[d+Nq"U-I(aA&8k2FJATU[*,E5(Kc%S'*+0J#2kQ&P!AYi*dZ`I0+ZpY0ETV
Za"DJ[pl[@L'Sa*%U@eq'P+hQD#$0k$P"ERLj9h&8dpfdZU(5SdFB+RicRYmhjMc
j#"Z3!!ia#NNGT38K"m0BTc%&j(&cY-l(elY2Z(9[C1#%3hC4HY,)%%!F1MMTJTV
$$'$hXh`E$,8ELlf-%YjT)U,hKFM`D`lI'0bYari!rejH8rM)dA(fmFj2J!)RPUa
b2QLN@j)0ZI`5QBP*`Ld@3cqCq*043K$Q56KQCUFLQ4aY1[3S3TrHYmaYYT4,PES
31!i',CM&@4r-SQiY#acNa@20rDSJ[aY)2KVU(VVe2iV$0RU5iRSMG@G(C"(mec!
TYChT,*-SZ6J$$GZHB+hlk#2'r2E"F40`dYFQrb$1bSUGESeeQjHY'i9+Qh3N$J)
#"0T))4dMcJa@Bj5PH5J6*5TNm99QNAMFU8F$eYp4f+Z-GcSG&24aVU"p4dlp"'M
P-BjC`&1qekU`M"h@hE0M9eb+(f#(!TVe%U3@`)qCkq1M@i&I"hD'cr3ir490pdV
#C)-!,$cCaa"UHGGF#U*)XYCEeXe3SMkIXk-h0JS&hPCiDMR&$V,4#a`TS9AN-Ep
0"FQFbhK")RrHL9ArN!#cfYM"K+[@N@Gq@#PJ#q!kGc$lX"kYd@KD4*+Kkq[5aC6
Kh9rc9p(iPjRh(U3h2fqBb%!3fET4@LeYd"$%D"BBB54%!'YQ8GIMqP9,!jHSE8U
UbV%0d2b6'GiJTICC@`+DSQb+d$TE`iL,(T1H"VXJ0Y*5bNQ598ZH&EFf5JKibYl
Fl'X%krMhT41keHmPAlD6YEEr4I4C4NMh%ZL61IJXEq$p*Zh9a59G,TAJ1jl$BLC
`qb#b[f5V3PS#-r"[I#ZmpFS)BT,%G`@M[RH6V$HUV0EP@,Mr$DMmYp2M%BQq5(%
cm6B`lJ11Z6-,,NFV*Xdj5@`+T`FhZ,DqT9"FH+IGjC9633!edDHM9`'3!-A@Hf*
6GSND8JiGqB0CC1VdIq2*0)GkM1rm3eacFPb"Y[JMD"$leDqajj(3A4`GNA#Qr#4
`Y-Z'MjYa$2bKF,AiG#UTfr15hVAR9'De2TEq,'aH3R%KiVF)a4bmB'H1RFM"[JF
rX`c$`V4ApQi@""4QQjflhf&rXJ5b9+PlK1X+0Ld0AaQYc9[PVbdej[$ZYjb$T&`
83a,GTB`2D*NE668'k(0BTUPH)Kh*cBH%8!F`)MCHS5(4qaY#`QCp4k4(F[h"fS2
94A#(3GGBV-d)N!!MAYRZU%S51l+M(#bXemDerDkKPRUI(d*kI#UiDeE15iC#Ze5
h[K*!4*B4GG0JlmEiF1pMK2%G)8jbB'',Y"0E+r&VrG*"B)`BVEiZ*N0c[Tl3(d!
MkT106Mq$j4cBpplap#f[H[mk$3-+ADT$bXG-S$BCcEfT`rV1LYT(CMMm!ZfaAa-
BGLMIqaIk2Med+BlTV),)qPGdJ""[e6+4jG1&1A%'fiTeqmBFEL#GSk&-XqkVD(l
r,`!+Ei((MA1JFd"kI0ka3eSDk1l,*!d3ZV-qEGG5)9mb3-FY+bJ04Q**m0-2J+D
bH8kqVYcm#-&ZA5$@,8fRK[j#!d'Yf34hYe#J&re3-ca[1+$hFdF'M+qJLh!F`H6
#8#NhI&AjS0Y159rABmHESEUihlLTbJIP6(HI@,K%F$S)dAV4+4*Gkp@D8VlQr3`
*@Z@kEHF*Nk(L+CjN6TTQ#T!!Kq[iY)Xaka(0#r8*[Vi$5`SN@ip&K#KY)Nc`)k[
kcYEPpekq6'1c10m0k2M6iV4+bqHL2)cM69G+4Q'5m8@V"!FQ6CD0BG0P'8H%b@3
PZqU96#1*pS3fN564XEYcCaDN2$d0d0KVi'UTX)+3!*f`9,'[6'a`pcp%kSkIS-e
prPYe[bj2T2PD+&D3!)1GmlqCjYl5&GIi50CrVY#3!)BE5Q2Z%qGKILDaN!$C@Ze
i&p0e&PY#d0T[4ZL&3QSL2Dr&H,``QZl`i"e&[jVfVf@r4LL)R"XchEPe6`)hDZS
(qhjl3i5ji)*+fSlGm'!#)6DFLkNG`!HkLAD[)+%0XNbA4qCAiUQYrhphNm,A$Gr
mp3M6M(@21XbN6P`j*iPXkh3K4f)JKd`0Hjc(N!$-DP"Sar&4IS*N@[FHG+'cGSr
9m[mZ8DrCXFG#KNf(I-21eZRRqNrjD0J'SA*B$#!C4021[VcF'ZKf`,fEiP91CiC
M&q%h@a$erAS$6%[ha062BI'TcI*(E-N'8VHU,*j)mME`F$"aiNG*&QbPffpZaer
p2hrCcYqF#aREU$-bkCMC4rAJVM#*S6kfp`m9L2-q+d2i3RJ8Rj[U$f@2XF$I0h'
ApQK%`mk+K,r3T1'G9drpPiI5D"FI`"TPh92HkihLe%+P!RSD3+cK6G9NDaUXR4c
)RHKTf(b6PkBQja)aX8N8@-YDe8eSab095UTRZ5Ikb2'G,'29DqXPLe)1[+RXq6m
Ai!KbV4)3McVFMC4*VYY'Pj90[Hh3)'P6r,B@l*`VXlM(r@PQ[TR'PIGVd6KP'MH
T4(ba5j8#h0*A[8YG[@XYG(%&"3[Zd66BPR%Kf5QpG$@Nb)*H3!N#539rA05L-af
d4HMa)-E[Y5VhNR1@@$@e9liAi**q!qCP@`"-UGEYH#a[T2dMGGKj$L"A3cK2mAL
9,D8UamGkU0pYKb&Fp(-6'(Y"[,[')8K"[(('S8EECSDFZq[F@Yhi6%h)Z[a!QHJ
PGAD$Y8CSrlS*NNS'Al!EmcfBmNGfAT0@Q`!8R,NfaBE()hQIH`E2b9XjP6FQ1PJ
[YrdKGm+mhVpCCf4cP$3$b[!l!Q9,r31j4-"$QcX@&&X#8V6cRJfhYBUMC4rpJFN
UjeGM")1@94Se@1XC!qf"1JMC"08-hY0b-V1AHj+Mf[2e4r`hPi+f*`p-dJTdeLr
cYBZ)J6Brf'JBmj!!d263!Vj9$K!j8TcVR3$-hNejC1B8T-Y0r9DTPk4cDrd%q'q
[rH1Z#DI1$c01VJ9PcJM"!IGq&*qX+,H8j-pDmJ4JhDjP[JV-e2k%U"PKH0N$,p&
S$k`a)c,PdB"XcN4qc5bJY+KSqK15KTe[f8!49T0eh!!96hii[5LC0J'GSU2C86I
FM50ELE['(hG[@I8jAP)Q089McSbK+(i"IZ*j5YA9QAR8(,Y)DakDq%D$#'4lc9q
h)3@c*-KGV-I0)CLHcfUD-Br&cG1UMAMI'fU&VZ9(5FG%!J(#YK!,dj[5E(38DIq
(qMF"fp[PPDcBajQK+&@T91VpPA5caN-E6IQdhS'D9BB4q3NXa`-!bSe8`@('rN-
DQd%R'8!$IGK1m-b4(6'PQU1TJk'qPFeDqibrePe1E-G"CRh)b,QqT1kaL`2bBpj
Z@He@33,`&FQ8APpMS'3,*T6Gkp@RV!eRp1hd,#A5CV!KN@#&F+1Y`pac'I5K-b4
F&fcmiGAQiH@kcjd1r*EdN[qk9X'Z&Zq%FGq+,3dMNrFr)VeHlq2q34&JCdY2+9M
iAXjpK5)41MCe+Y"(2Ge@`MJflHhMTY`a6m@k('D+aQqA)CDU1HqY#TCmfj1lfSj
$eHp"ed*hATAj!8$EN!"@IX!mi`@dFm*Le98i"AM+40KkjDYFdf@ia-5k8VIX'9+
FS)S+GEb`@blbAe9m6Be)$MAp'mdJ*D3a@[$E*5aILMa1F"[3iQ5SU[QlPi)9QIY
i1)k@90TDaAa[@CXf11hY5@lFemB(D#Gd-0!(NS5i5"b$(%ZdT),b2'*"bb&Ca,P
KI$6FEbYPQmLbBQKAG(Mi#r)%8N!F*K,,$5cNXCIr5b59HFiCLSZ(q66VAm$XjBd
MhH9YidJbqkpY(LUU*52Jk"E!fkM'P(Cp3#ffb@8!JVH`2dSYhpEKITbZf+ba(qK
GF"q[Jf!VmM@@'XL4pE@mpepFKE%$&'J)fXaEZmrqaK@l!99)AkkZ$8AThRbmTRr
8b9KhL!j*EE"!K(P*R@X[GZS1eJ-0%S0p[XX4'#45(XkBZ)e)iXYGpbLHNYIjj6*
,KQh@f6-ke68XS9`'2KFUXhV!JCrih+qmlK1ZXH,amHU%ceS8B%SN4%PY3IMKNUZ
UKe9clX-h)p23Af@E&i)E'CPm!J-J4,)Ckq"EU4*1%jMNdEb`@,eVQ5,8JTBqeY%
6)Q'+rCRZDS08ec3FqDHI9I#[mPb$%c5A!r*9lVTq@1S!GEX[qai6kcF,b!F38RM
CNYqGX!Y'UB2Z5`-J9Af@Kije*(DJTeAl[@1@LY9lQL(jTcR45YN%5iU0kiP2M$[
IeJc1Cepmed3&1lU8CcFQ-k2-ClVF+q!$8SMS(@Pk3c6L8HfM[9J&A9&96''`Y)'
A&&!r%VSCHLp1"fcfI!@S[4%I"MjZ4j8r2MY22UEjC'%A-h$$8GLHECJIfUq5VPk
3!$&4B[0!5KqlQPVeb*0"ri0jpiAHH9Vqd*9iM4d[ZTRRJjSIKAJaj&&0L%p1$'(
EZKl!JQbT5TL!8Ch[H@*C,MD!qfU8N9pGm9,XTbXp*@rG@BJ'[mjMQL)lT[@JPeC
$arL1D'M0J'!YYCmQXiS1,+Mq%*eh&1YKdKcp@Pl3I,p9m[K,Z$4d#c*f,d6*622
5#V)"H,`&)5r*VL6Ml+`ECRN3h-r&$DUU3)9dPjh631+G"ERU1BV3!N,h#-3ISV[
qY@Bm*[6)*$f2SD+cF@Hc6@m9h*!!rC`5R"QTfc#!TVR"1*FHMi%%KVAHJbNqf9Y
)LhF-DTRc5e0(L"00,D(8HZj$&22QN!!D3E1")Q6dUfr4Tfee`*L)D)BHpQ,*8dc
f64if-i@2e6DHmkLa(c`+Mj!!U!$V(ZPUIZN((BD-4m(q1Np0dhRa[&6!rMk()U2
K%AQ*eBG,$AbIcYkZ6Vk`HMXFGjXHK%Q9YH2C%Mje+L%%eK)DCG9cYE*16*E,qZ5
E4a4#4UU`2ECAT[N94AJl'UYA*V,9d9&e[T,8DT8PVlf152TAP[cNb$&EQk#RlC-
f+""(!rb'!3Y-9`3eA5IU+I3Nq5Q"d`AEI(V`H&(Zq@FjV`@)S+h1%pV8K$hp0Ae
R9bB8"b-lM)m9QclPNb1PN!"X!lcLSJ4+jS[+82mcdD@4[Cp(JfQRaZ#EQ9P*MQ1
4*+9lq8$8*PV9h[CClFKNG11Re9Q2qa-T*62$c$Nk0r%1R,+b3,PS15T!bk2C"e)
i#33e[f&hXmAAP9[&Pj[R#9@Lq(Ij))YU1PB[$cK2)X8L-0X[I8r41b02bBblq1`
1)KPRK'-#8TMVSlHrH6+R6UZ!baAS,R9e"Zjc39c0`lcR[rkeHrfCMM$(1MBF!Vp
P1SF1Yp6VLrq#rdSCjeKc&dEDYjE!c#UZ+KNid`EZ)b&mbM6%#3NrreapQ3ZF+k(
-h9(eUA8qTq8cCb4Fc),4hf$G*&c@9V6-PKRekDEV`,b@Ga!m2B6fdDKGqjJEjNP
+b2r9h+F)h!H*GY(pUQAHMMc-'V(YcUf[1e"hZ2[&%bql(ZcMdcFddRNMlGr"#$"
2D#r!9!!klfCl`[VDp)I4GN2ahcJQ1!GV+E)M"Ar"R3'P#!baeU#1flkPTja89k1
V[P0#Hcf9GC!!&3f[qU31LYrcKYj(`,I-e@2!5lhUd6MZPUCEUL5FII*#65l0IS[
$i-@f0P(5m6FS&lrVh1F2k8f!!A!+0UiNL%l4jT!!fV-RKFX1Z$XHTK4LB@VQ2-4
U'"`$QJKQ4$1qdbN,$QjN8a+Z!4Xf$[-J*,Li1$B"Nciq1M*+ZPFUCG)R)e-#KD#
3!*!!N!"VDM`8*V@EN!"Aj4-f"%*HL'FI%1L!VL3Jch8k*[194[Vc",aLelrpAD&
[eLZ!'iRE`LpcIANh!`KehSf1*m`[`[CdRlkTX@bRY2hPTN9Mep-$(jT1FNFhh-c
ISSQ!N3+V1%1[Xh"Nm+Ukm"2,UX`S[9+JbFHc2$4"XQaIQ&k*"*'+'ViVlhaE-Pi
c2S,QNAcNU4h*1iEC+V[`ca0HPi6PCH'b-LTE4XZfHZ(AK0X4djSJq"6[rS95ep+
m`qH%5%8`E8aF%H+&p,ETLQ6mCZ00H$()JqI"c,!KZ8"DB00iF0(C$pkZTf#dLN4
l!--k&N3iATT3'0XBk1HNa"6!P+l&S,NJEp&SXUJN"aj9,$V+QbH[PAUj*dT6XMR
l3hh*dU$rmG2S!6'KGAH)63D4Zh1TTr2EJ5X"dC2E0M5&XYUHjKZ5S4E$aXS5E"R
HTaZF9ZQaLb3+X6US$jQ,9@&CER',2kmE@cJHZEQUBKG')FQ!$qj3(d(aUZr1Qe0
ZpFK102Cdm0TlcEkdlAI'jN*K'529SLCF8N28hbYl`-RiL"I(3aBjDllkfr!NPAZ
hLiJ`I9(3@&0G,)8Z3ef*YDe0[+bL+Zp1A*Bb4Me1KC3k[k8TRiBSU2q&h()Vaq!
+3L*rqbdPj&$l06rm1VAI`cFkZNrPk)jM-HDTSaKC@"l"&EH9lUEYIlD9Y)&460e
CmLH)ia3Y*0hLLl$9%NhZ$p99a$5IQ1!(SEl5pc"-kKkUl5[qGar-lh1V1ZJm"Zp
)"U[DL19GI$Md9BE(Fmm'4Il*J-9J6Df(MpK-$6K"+G)2,bh5[Zr)%TSdqe$NdSd
Up([pV)JXSQ0S*YDdP,p1LMTCZ%lBbTh@)HJ8afTM&I0fA6*1Jr(PS$ME-TF9hef
jNIABA3Gl14%Zl%#$G@1M3KC8K0bGfIfI9C,F--ZXXec)A-6#1q&eb)d&kK)K@9B
9,62`Ci#L(PF9''rIZ-)r$4+FUE*AqkJVF,r$32*VY'%'e2aSjShp-0BCa8%Xlmp
4[k+#[D5@PH",5f4G8VEjJ(j4VkTqlVVi3%!-XHB1k)Za(E0QX(i1E`S58UNl*-%
Na+TL)CI3F*r6i(djbDKajdCbHZbT4[-idkrrMijIbU@`B(!j)5p-SA"8R'GemD%
XBEqrAl9jQFai0pZ20lG2P`!8)DDEGBM#$re0#E4rG#lQ)ARa((jcLA)+A$a`'$@
XZEMR@1ca(qrUY3cG8PXBTQGhqCd4D@AT)2!!*&p@lQ9mk'5k2E1Y`S`#LBMZpN%
VK(D(T"c)!e9`Df0FCU@eTV#TBa9I@bU@J$SBpr3*r0E6AErM&Lb%A'12L(m(bTa
63kI!BP'#&p)bddlc#-hbUPhNcpRTbKf@SSMX49b$9#jFQMaFKb#"[+62[MrN%TB
(22$EapVm1l@AAJcHN!"Fhp!Nf!5UIimAj0e&*#Q$EE8kKPUaeDUXTa))E0pJD8m
pHc6M+iZQep!U$chc2&D-8r5DfJKj-$f-l#N(XK9U*IDQSZKc2%U0,+ZcNU%3eQ"
5l'JPVj0f-pL8`p52jF9lXfra(IY*5!pAe%e8Jj+9cLDJ`IbNDk$MICjl'3YF@Dd
FGE&!f89#Gh[9HRR$+"MNb4aliETCCf8@p8I@aadCk,B3QdpKEVI[qBmHr*dhCaM
A!k@XJ39YHiLVS9[P3Y0C4'B+2h0mSE5D#qiEG#8h+!%[qXIVNXRqlJh1Gc$miJh
U`PJJr%P+HX[j@r2EKMG`(TQml@m4l8X$0T*arIRUhY!fZ+h6$9ZC9aF8FIcF)IV
$#F'(Tf'#A@PPH39%q$QprrV-PHCAiC1dX3UTAEfSU+FiFpR$P2-mU#`XP0Y[h[L
q29,KR18mR1!F`r2Qf48-dN)6dAUMF#8Ia"(M!2a'Kd[JYB[#5e8)Zi#+GT95$93
54[6aS[J'E'N-P4ff-%5AqR1kQ0lh&i-Y$p*,*&H*3YT)L,ARjY'EhkpMQ5J(KYF
V3dF6J'HY5RHNFkFE,RjY1T&jpU3N&#32jK1@EGS2pfrR-$N5CdZp@Qm+dFH1%rY
R4M*pK@Hi)kQIqJ9MTQrGK**$!h$IeM6fE(2A,'2$-C'S#VkB-YV)TcY0ZdPV`,1
3!*JlGQPk-)$'&Idl4`0e&T'4mSaIXRIdNUQRk8fd!(`JI`fNKe6e`hT&DVXPfR2
-R[)ZVc*j$c)0+YHhDm`V9U45HRGU4B+LUfZk(f-*$h%+Tjf`'TFGAl@E&pSZi++
28eE[4)a8p0+"#)Y[!*a4DV$ecM*#jq,SPJa([8eM%H*Kq,!qHq%R+,N,)(p9N!"
'2*K1H,(q[00UGEI0jMH3!$q0abQ6h-$U2I89'`QABc8iGi#LiKlD&fCbDRklK`B
T$0hjMAP[958-211Mmf#50Q*&EC!!q,*Y[N!%)bZ6@`qCSPd$S[XP8[rF*d%,9,[
#I2lriNNTC8"Ja4Q,fAMcD+X'6XTVj`Ik2f+[[5c[dB*ck2FhTF+a&0,N,J'cEa$
+1GkT-p6$2AEIN[hA)aCT5la*94`JUGK*!e8jD8Y5NR"Ra6-ZYSp4e2VR*q%YcKU
)HcL9he3j[ejpJQT4Q2VBm2m(-$Y,$"862`d102%e3p$20DI%#Qje6F4A&jHj!LP
2bhUC#--Me"9'XL2fL$HijeC%'5Z''*Ti!)TKGP2pT6pR+8m%YJ&Uc23RIR@-e2(
k3G62Z,)SA)(+pJPJeD4bl+hAY#+@IS&ZAl*d&X2'peGmQ(Hm#Tk5D$bU5Y0h1#S
ZZ9Jhf*%2jI8`A&#B+kJY!H+0HGhBiK*N"13HSEf3!2`*mG4LSef`038J,FLkGUF
mQAXVUmb)8qk4F+)3G%J9!bi*m$RS2LH+CX*Z@R5!eN8Ui0Hbf35i-EHE[X,m6*L
kMVPr#m9rc##EQ8Vdm$Hq-@EE0"MZQ1c9p)BC)08%HcDQ"('#dKHZAG2SNRj05$*
qkG5mfGb6PiVGpb52eFL8D3V%dQKE"(dp5p1UB!$5edPQ*2#Zqk3L,0Pb`dU+(!k
*BEc$C2h!([e$A0)XGQG+IJPX,J30@mj8R4A2UZHUR4!HL5$*,m8LijT[DRQ5J&3
A+rDK8#5I(#KHXbIlVKlG@bG(AE84,q5'Yi[pap9H4!2(&M!L1eZ)DU9fUj&Ud-K
,bFeJGiGA4#ijUiQcVr(LU+PMjKjlMqdL$0[9Q*Z19H*LBJIM6rR[fZHJaP&p!2h
`f#bq,UKSC`KiZS-"b4U`Q3XDfDdQ3[M#6YQeh`kmRZaecLISBSffNbE)KCH1TI2
k"`I1RF(%)#d9J4r2j(r1U"IRiKR4E*Vm,SV'J(rH&-IS4dLjEb-9Tk$'!GTHMYe
a,I2$,p-9[Kb'4Hkd-ifAYD-H+q4GR$+@aQ1KSRhS#q08'kJ58#"(ZDScRKicjA,
AFq1S&FHrAK2h[LmBdR)X8PRe4E6jQ(S0+k#mSP(NS+dXcC@'Z5G-U2PSk-Hd!*E
-2IFG9aX*VqL'qNN21JeEBRHLR"YFkM2@%X&"jY'G1YUec$2K6E8fd,M*LmXhjad
Xc@*36p%9`)Qe5c`SYMG,BRXjh1!@6eNTUb*Tpb23`$P5JPiq%&p)#6X#%Neq!1J
8[RC-j[RV$!A6)P6Xk8lq)c5E*V"r$NEb1pj9D6+rGLP+L2P(!2F@(!RHKCE6mjb
2rlj6H@J+&)6e`#iS(VhaD"I1@RXMSTf%)DVk%mD`#di4(08F5mjN10UQGXTr$Y"
[9S!kYM0MqBr*e"rD-3[A6kq)GpVEpKV@EUKUi6&KNL%*0(dVa@`Z'ik2"%a[9l0
Uhfh+pVV-685,i3ckK8bjk)F#!"K1rQbq98h"PN8[S,ASjH'N3XA8Q[kM)A"5Rp#
[ZhX9clMiXU"RMp[p1J,H@ffeB8TQ8lBd3GAFIVcjhGh3N!#2Kf6!!D0KVS&NdaJ
,3-d,dbXH1J9Mbfi+&"9Cj#TSe8!MMr&DQj1i%e)"hC9Gleqk!EIUq2@dqb36&3r
%r"&DhS9D!l9RmiJ!@i%8+lH'Akb1J&-YJS3M5CY6`lTE&,ACl+6F6$MF+kL3!'+
RImT"#!19&()4iD6%",eJ8[$5DIfj%q`(Z8Hb`Z4B0LEBQ3&BLHr(d3(-G%GH*X3
q+e0ZYbFcEe&e3$%m#EqkE4`#!bkl[8eVPeaV0K`DeD2a%*RaR#9dc6"Tqc6f3#2
#kb*i5MNSJ5Z#fqT4Qi-LkI`V2HQ#,Dh)M"k8kULE(aha1RRNY!XQbeY"VV#@dKU
UA-"#m+LJAEY41)0fG+$T1@ZBHTacRY"$08bQTNq6L9M!Qh3BkkleHjEhe!a-MPi
CRBBL1ipa#6Ki,%dS[bdFhKah!3'V!4k`iE!T(Z$BHE!X(r#""0ZJaAM+ADLr8@A
j8%FYiYP"bqlZ'Iepb)jpX@*$R+V1Al'8kEGX&XFcZJ0TR)*"ZTJAK!Q3!(LR1[@
SEKXfk6(m131EG[q+K64AF#9BGBLI%DE[U8*JI&L![j@cT3,jJ*DY3,iTK+Ml#L$
Br$H8"m"R&GcAbR'&aDbfA8jN"jH&,r%CK*QrZp@66J+)iiHLE5NASj2I5"hH0fh
'dc`DJJK1BSr1#N-1D@#59*UeQ8cK*bRUMCBj-dUTV%*KQiS1$AGSX4r6Z)EAZ%P
p'SH2eN%CA`dZYcZB6Up"RRX[lM$0D6')&QfeTUYeN!"2preij2e2,dI1`qXDQL1
*EXaRGR49@%N04@p9K+a9i3U16rEAip@m8#m(@TCXk8VmTC)P"dATC(eUq5IPVa0
RLa`K-A($q%1&GU'pV*&NGN5YJQ,&[BV0c%&e1ejGDbRJ@2'@+kkchBd+!ap,a,,
J$kbrpMXIK*fBL"Jd0eK180NN@6',HPk)SCE($D6rF%T$!MCD$@1NG6D0D2-C-')
dkf5Uh2q*mNP$UdJ"fcp1$r6+)*0Y9IC`559K1YVa-Z'L#G[MHh2Ak20[4aGH`R9
1+q(Z4GVeKMdB4'9UDq&H-(lQ3ZG0&@G'IAi2P8l@Zf(5qUldZPV`4CKMZ5ljbc-
p-036D",MC$%+hF(lTJdTCTUQlkajG%9iKi2E5C,-2VVLKT@8'NlB*+G`XclZPkK
h,8j3DY$(R9p"aAKe4P8pEeLlZeKAh0N8U0YJLYjF0URR0jldG38Nb#Im4`M9"Ak
2#%Kj*IQ%A#bL124F(krB3S*+dSbqS9hda1Qm-a('&%'D25l6'IG$f9a$fc"GDdi
`*d`Xq--#"85r&&"TK0k9iTK-A,@B4*6BTdpN[!i8IpZL)8@AR3'2pM1GTqFX[!h
EKMi6aBV*fj(-'qCLT`QNY4QdbM@FEcU-[iDYGTj-Lf+Le2Gl%BXYcRXB!h+lZN&
VL&JeEMZf+Sr9rUj1X[-0`Nq3!#NRRFd9iS$H9%6DN!!@1r5&`%0$BCFY59T[flN
&Z2-VbTYT*+MfPG)SYZZQNRC(`ADhl"&%G&@&)GBM3eqfP8F-(Bib,2Yc1,2[`ff
F)JaCD%"(%55$Kr9Y0qIp@[&4EiFNp&l[3@S4JR&AEZRP3R5l2X!9992[Id@5FRM
12q&K@&'q2TF9PqMMTciUf(9`$@+aSC)l6qG-0[q6)QI8Q5ZrU5B086aeeFGLTP$
@kqX3!IB36rj3,8%jVIma%!ldPCl-,%"@"%LP4C)ke80Sa&`q*X9C"f5Nm24jUfR
h2$8'lG5KK4Y('R"&Db,X@#XL2d&8GZVQ$VAh8Ke5b%@)Ih94*R4PpT4,$iK"p(C
*5Hc+@YiJPfD[b0@9jQAqr5@f`b'Ji68#IC6E@p6B)k8GUa!Ff%)1f$ID+3,G"Ej
S('$5lMVaj*i&AeX*I'qh#pKbB+3($4eHJqa2ca"NNVq[09PM@5HFA1I9e3BGbQk
jj`$[8UfeKKi3-2#phqb6QrImA05kJ&i%)@crjXXe!9iE-K$dq4E+[!0k)P2VALV
Dd0Ej*iaGNr'YLUFS"R-TLQDr3dMMaD%am-Zh"IVTK9-%K6rj+$+CKZcSBY@R%eZ
'!IVQ*c*lB8j,q)'0SS4SkYpk9aJdGde+[3F@Pcrf9imIDZ4p!V0+0MZGU[hHql2
Tp-aMLZhaPp)%dXQ4K(kQX$BpfF549decCdNAK@)DGT)25BfQEa`FeL)Z3a+)$#j
4)cp0QNX[T[X14Pa"RbZ0J(fJ+Tk@Y`5Z)m6Lb8*&60CPjM!'UK`%V+TI5YIZ8r"
RS`"fMLHZbpI8m)rD83k`d82A#UM!-GXKfGmHNqPiRHHDlK8-l&rc+K,dCBfX+1k
rU9DBaQr5paJF`4KbMV@l"EKh[2`KQhC3#%-6A@AKI'KS"qTVDk)HF%VU@"MNqcX
62M*UDXaGhYb@!c%LZI2(LV9i)BM@PChF+*Apf[$CC559dr2HZRAC!`5R0ahC6D9
6**qV9c'Q1Z'F2cIC4p0)@kL9Hle95ab2),%DrkKR`2`Ym,a5'D29!&Cpj")UN@%
l#QN3L22p+%@FAUQ5HESRQED8"UGM+hqKe$RMmf$E-F,6kc'AqDCC5)%,f9rRem$
%pJX5FNSQ%aqV2&P[r$L`MPQG&QpTPN&LKFadRkd0D3`!QRHZYYP(BMRPV!+#&(k
APM$)m4eIk9cXD`Q0F&+NpM9#+!Pr2HdYTQNZLih8F+[4e2b,Se@lkT!!YUDJ'Zf
-hiHe8Y`hH)l(0P-XqEHCI-S'M`1[80f@adBZjI"N$6CleAfkc&l2lBE1b1HGRm!
$jmV$i0KYa-qFQj!!L9f['#EJ(05P*,!,Mj)Rb4QAJSX9LJ(f&`TSBM`B*0(MBU6
"rjP3GN#HrM!qRBFqG'Xrk*Q2i&k%)r9!))ZR0'Sh`[6ZTqJc((m[KflP3VL(Zd$
49l+Dh2VBQX[-dY5Y&F-cIa(qArRS[ZXT!YM+&SFdVCc3l(P"A3F5`3hP9%8QP26
aM3,B-kSj*B#IMP9AE"N,0lXV(&1l%,HqdN!pDUpD9m%HfjlEPEQVH8`f@MZaVB"
m)0$bN@HVl4p[`rBFe!X6FMmb2&d+VTf!`6jicqN['q)dqD3bSep$3pG!c3Na&R`
$e&Lkm[L)*VT5q6BS#XcmYI*'`i*Gr4Aci4Zp4)r+`b-AJNZ!a9'a+[Rfp-A-%6-
EcUMSfcd'X%(8hGl!bE`*k!QrX#c9'5UTQ3%CpS6NrNC-TQ@8h%Sb`@N@+Z@bq5q
(T'L@89YN5BH6qDq$9cq0Y++dFNY6B[H)j3C%[Ke0(*G58Y#GZ)H"'k`9EfX)N!#
h'I#$Ym!haF[LL'h6b&))J8f`5`XUGAXHViNc9pQ2mN['ME4qXRDPAq@f&Kcidb@
FL#DeP&89dTN$iI5K`I9'eC[-*50)!)!qkfLp0Ed`RQ@KdMjrA6A4jCXLY5$X5DP
A,5SAp%Ii!R[-Pj5e95cjZ0FTH[ZG"H+d,EYV5UE+eqlQ4E9EYY-f@eY$MF(MmBF
)MLrEe[jf-"0VDIVI&D2fBiHZY2(qI2#SS"L"+D$+ZUec0j4!Uc$YZ+6b6Z-P&#3
-Q8cZmRkd(GY"(,jI(i#102fl10XFSbepL`Am,kdpDaQDU65"#DJX5B&EP5BHT1I
c+IYVQN6T0a#5Z[4rLqI)T,[bZjEGA+2q@)KpjZJS#[0#PaZZ*UVHH"p0fR6Gah0
el3MNe&aMaPBbTT)YJhjmA(#kF(#abD8Z%A,&f23G9,lI'a6!BGPBXDY`Qd@R'h`
ae'*jL13AVD3LYX2aT0'JFiIqTS2HlbM$!'`Hq3N6M*XV*GVIaJ#-6ijKAI16lKl
8ff-URmBV1-mYC5X'l-2HIrfXLfZl'8dh@)N$RNNTqlpPGCkFZ4@V3JQ$[kB#h+m
1d[XNj8NC#4[bZMi8(dVLZm,kC5)VBjR2cYKqLFJN%erdIUVI&4R3QR,h)Mdrk@e
8G(@C,@Q8l$6+bd3L-6lf[+2jG9Y&FZR8iFUY4IP84JID5*i@#5i%LU92B)F-mU[
*lb95UCkiCHU-CS-3jN33rEF@@1X(l!qbpSFF`Bd#@%l`2DD*KCPJd)p1QeYeEY(
I,cJB&L*ZZ+$R4TcQ5[&XJ'f(fA!RPGS`bH,RYaALJ&ejfK4ej2mCbdk14X"@Q$&
2KrcX1$iUr5e5QD'Yjf,6A[D,#*L&"0bqUpcABGTNVe@lpm(Z#!kPF+23lcN+8Di
BKB8KkkCSAphY-NQNK[A$VH*Y30k1X5RLL)V)!"j,'-4hP(#9UKK3jZDIE"m96jN
lSmHaArTY$i#qhcHP2S!f`(ED1d%R0Y!5YBKYTU0S%2fEP'be`5p!pbdKr3FQSTT
FcE0"r"EGUCYB-SrQ6R4CM)IYaIZNi-RZp`(63RYf,XpCr"F"&@F8jQM)G3QJYjA
6MC6(dcch`-iLqX#QZXN@Llq!8CG4$a6%A#jZ1f(&5eC,UY53!,F0ZSr)reQqIN+
,(,6Zh98Je3X$TlYDmI$'"31'aFr)b(h)E3JAJ(@5"N*E*`J*XqpG%f!kk*jU@Z5
IFcD%Za$(L`A9f3Lap5&%ElN4qed(SF39X8X-)S409KTFMAkBl`Qkm-8ZrZ!QZGJ
mE5ID`414YqADLII%Xfq@r6)%&0i1c0+MajCL2I!e0D`ZVLi9A$pq')F@3dC2`fM
Ehci%hCU*$M30RqARhYk0kCEEh9qX@BjZkDb#h6aZQCYapTf41P8-pfDBqrP&mel
IrVU%c89GHLR-$+l893B)kemcLSN2q-1+)Fl9ec%0rhPSl4RH+U`,fJ+kPAFlD*3
&,$"E%R+Se0"BhHa[Ch"UlPTFJ%MLMZM9Q0f*S-#8,BfFVHCX02efm!4CfGRECr@
-f"2cAek'pNk&l6L0Lk10FHr[PpHj0TU$lP1b&+,)5ABA3`hlKpeZcbr1(Ee&c'J
K-h1#2j(0'Z)M8H,Xbb1a2BbXf@8AY286aF,8@h@#KReRY%pB@3[,ZmiS4jKdRNU
#"qT$RcVD''Z%6ldNLSa#3p6a["1HHY&(hi8!ErBCm-hM%02+!lDmma3U(6V1cDj
C@*JSRUl*6mpFd-b,1PR)J1Uh*Z+5cf`Ii6hA0I"d5#Qhi5R6cTSP,1F)pD35NQj
UQTT(jd58rE[AmS0J23#0Z$)$f#0E0X$qrH$pY5SG@dqa,*+SN5(Bb21!92UT0D"
dRjDCQ`39Fimb`bVBrb`*kl!!LC[dc[(a3GE5P!MYjqX20,BcNKrmd#CK,r)YJ!E
CB6,jZ1P45kA[h0h#"qlc*MhSIJq5bU%KeCrUK['l5Qe+#($cBUHTPF6&66))1A$
e8cPZHU5`C5pf,mcCP&dCZimBQ6X,0NI3hL2fj4+AfBP(Z3mp8jJ$X[cDGLcZ"1h
cQ$H@!4c3er*BhJF!R,"$J)cTZNFB8Pl()[,Xqr6`4&1mjpdr(@,!T**)X))T$aG
R@3$pXFC5(9K944*lCcqf9dYHm#-p!%N$"DDBmi#ZhYGANYLVUEBJP)r&`db[UiZ
J8*rBZ[e8J$fj*&(XXH@fkTeiXpUNad5jCT0B*Sh-TrGF*Km5pTe*EEU2#CC-f'C
"'UlH"ip@HMCA%Z`!"qS`irl6@*HAhelS*JIZfXb-$RlVd#3LQU2'L9H4SI$Kq1[
AYY`SbCiDXI2m@2(q[Kk6D2-hk%J"r+`"GCG5RNqX-d-jkM6FFGD@5IE@&FdC"D`
rLZqUQ&$X,1b[M[FX(9dJk9m#RhTQbe#*"@(T$H6m&kD9[0++jCPAT#9K%+Sq"G4
'Pk4fdq+4UXaMcK'AIReR1q&PVF(@q2FQ2`*YL'f$483[iPM-5pN+-,FY'8f6QYd
$NPQ$mlJSf1B+&rG!dZ*N$Sf#jjra[*2(SdMC8'MAC&34LKYFBaNH&pTr2T!!G8V
bm`fKk66[XR#(46BGHHa`VHJeC!Fa"*9Sh2a`FZD('(XH!(kHH)@IkkcBaBqQIa'
MJS"GBI`b'Eq*kS8d[`ZdRa)ZZR""FlBEK'![@Rda3TA(TFeFeQe6`r3bE(b0K*@
R#IipR4)2&$ALmSmGF@%a5h8UXJHqM@I)1lTeNA5c*Nf[1$b0&SpH2lkjEGbihUC
XmF$)N[kl"mEVIJr8RN,*$kR,&h@3!!jRAcLJ'*@Mp9hD)T`CB)!mPB,FqaLcm6D
Ca3)YX-AJC+EmjGl+4iLkpIE)5K&@TfG[+$TF"c&$$HI%4`PL!X501J-L[S5Z+!2
X3j6Pl(M$5Di(4aPR@EljlZVq1T+kYM[3P6,5cTjBNUV0H3a'(m@1XSY6#T1V&4i
99,PXh0iBc8l1[*%*H3eV2C)HTpAJb"R5B`"J8(41[LdMP+(ip6m#H3%!j&*5jIQ
bNKDPP4ldXBD"iL0bD&M"mq$e%f-EQVcC#hjIGP(a$546a6m@K2UZ%K`Y3GKFiq`
[0pf3!!@"ZQcMm"`X1ZTTeqbr82M*UpTaBIapJ2c&&bbim6A0N!#[ea,JXr00ra5
Za&'D#Pc*4b[a1XppR0Z%km6m)b$J$rM3eTalSBh"Xm6Rda9*fj8"VLFNAX9ll5m
a*A#HK$U'-'&,4PIC#"YFjq6XTHD5XBEZB5IIYlK%CMR1FfdmmH*Ubh0$r`@r4N3
IAE@3!%S@qSH&SS5I%AlXf0TF2jf*R"a04T%5,c&U-H9AHSH3!2ES%rB!U(lGKch
c[4#ciiAr!k5!"1@G+H[@M+pX2IK8m$2'S0UF(*-d-p'T&(2TGcjrM3UEehPI%IH
+f')c")Cb(mYpk+SkTkmlH1k'EdkS@XjJEbAe%EPdZLh&,Xh$J9Mf6DlAJjCNF51
V1-LHHm3LI+ZfB1#efRD+Q5"5SMfep0ACePj*jUmXL4Q%haB*eLm!(jDhXPplf-5
pmJQ-j@RRC!aCQT9rl41CaI'$+qcpZ%$Cf*33I4lZRQKUjE6)j!KTUk*p'eM#T4l
Zq%IZTHVEaJk6T,EcerJaFpCfd0PKfMrBqEM2pjmS8Q%iQ4`hA$TF1ii--X`U1T,
H*-qKA!mX&YND1"a@8TX[8k1#*!**j,#dQX3,m3)"D1pYLUXX2R'aq0DDSSTapSM
NlGJ%qPMVTD5rHV%9#3e4Eej"[15-ZFmrMMQcA`eamS,IC(*)4FIkc(,2B,1GVMF
"jU)@Flj%6([@ZL+MFlZRdJ5aNl+aq(Z+jk$*ahp2'f4HITjkkVV@MU$j8f@jIb1
$2lCDH91%RX0HfX#"4RR`S9D`f1C@p4hI5kN#h!*RK5Ll(&[8K+#pkS'AJ@3Af1l
XN6A0E!$YY&dUAhY,lj`KJ8,kaj+1rjLRp[%p1+a$e2XUi9%X$8&ebQPS*5"hTXN
"!M1P8jp#L5U3!$hNrb1Nl)U&BpIEL4Y6Z6,Y@-Rm6KCP!4H!YVUfV$Ab5%%5NBd
ZFFKmfh`3VSqIK1m*qAb8'G1E%ERh-B%8UD5mSaYQd('*X,1UaPB5m(PYR"ZDfe6
B)%%mh6Ap$q8J6M`D-SA@Q3ciV2lhC-3UScGI9hprXmb4(Uc1Rh5Af6@Kk'+8h[[
'DFiap#Aec)JcT,NBjEm+8`M$jGdq"U1eRc2l0X!la@E$C2V5SYXB3kD8X!QphaF
c+JcUd2D0[9lA,'&3KlB0LZ'cP[BiI+0SciIJQGbDE8i![I1BpCP3qjP`b9)pd1,
,5M6)p9464K'V"j%r#F&MfLIS&Q[`3'QYSBPdUiAQEq[mD,qZUHjpf*B@!%9a0[X
0(f1ZFldM+CB@,lAf,'&m#QMP*91mebL8VKcA`Ae$cqL0A6C"B,-bYffJpHcSKYb
Q4HUahpf6GbQG*9N$Z8@9a04mT!4Id(2rd(DYKQ"MMTb,B-SN,CV5Iq&VRc[ZFak
iBma#-r3NZ5fjDD2Z%PfpJ)BXRr`(UQ#$3L%T@U`EHe(!j'GSfFHThN8&JU(*TN*
`f*8(r',fNLX3LFLD(beGZ&0K3l%r0e0lqP$5fH*#$$$m'dNU8dZ2+4(qQM)!jV[
rL,#pDrMqKdE%[Y1j,5JAj@+-bUH@jS`Bh,pm2bj&VQ'af!-0QG2V8rQCmAZ2JHE
`Q5'VhJG&MrEY`U!+9&+aQE-kp!EN`GTeG['qLH!*lE54&TJ+'jdI4qIdX'!mSVl
Q5#3$`686m%Zqe0BJ5l9G*eeTfj5c(M`aS["bGZ-,j5A+KG$"3@[pqe[!BQGJF*d
#I)@K8Dr!!q!Zla-FH#iAYQV0SP`2T[pF!p1MkE!cj-rZ@-Qr2"Tl[q-'QM@VQdj
(NJ(&'2pDiQ[J!0Zf3HhZhmLh8)rVXci148CD1kBL+T!!V8!6P`CG#kC*J$H,U3L
#FNGH22@K!Tr!U@h!N!#@a-&3QNjP@"hiS48bb9dX8Fp)JQiPNip6-P4q5qYNCcK
0hlBM+TV$UY0NR[abI8bdYIX+5[EbPjEmA$k@m&a`-D8*C6#AUhm*IkPT*%j1r*A
Y(%,&!3R!JNfV-V9fH**GZ(H`BJd`r@)c)3Lqlq-)#*Y06iX9cHS@ZFcUbD)EP4b
-mhLRPcrYRhBbCHedUreM*$!+BUpBp!'Xm1I`3!9fGNN4$&iHCM"NZFCifaTffr[
ILeM)!(0af"%*`6#(Q'EeA!0ieq3jEANICLNJ"Ub1Fb5(3(AZ0qT5A`2#@#hZX"k
J00KVaYMcGI-)SV19@P9,b6RqRTpJ8C,IT1`'M-i!*Ahfa""*)(l+PQB!16Ge*1i
$ZN"jMA@lpURYQDbPLGHS#$9G3G8l3PUq*N%jd[bY$S[i*C!!RcHa5b9`)hS,Q3@
rkCEF+Sp#@#feI#A5BQ@"S%$#JPpJXhZ`9@#Rj26[Qe)FGCTD(IN3CV6`l3!D3--
B3P3'c"+*Pr6JS@1h%e[@D(-V2,4U#'8d95h&!+K`-LF`@'KPGUjSc&RKE-rKSN0
q%a*&NdM*FU'IBU#J,r%6%Pl"5#9LY$Laa'Q['dG`3Y!SmhRbh@+L%-A9ibl'4NL
I`k,l1&%0&-mm%&N%lhd2L'b#RPA9H)5e1*9ieG)LDidq#TPB-3kIm6[2Dq#j)mT
b!!8Y`dkD&P!c)p,dA'jX`6cN&DfcAR@%3VCBKqRI(8&D02!6ePYlHm48$)TL2Jr
#FH[kJ`i)+#5(-P!K08JKX25HIP2S$Pr2$1kJ$+9m*1+62ifiXpeDDBY4C9RdG#%
,R$h&QQ0Bl4bXdN$D`9CAeS1pU$E5N`%0N!$5N`V#S9Z3!(8TI(1af96I4mjT",8
ej-pLFiAk(dNZEbYk6pV+kC!!ceJG4rPR++"2D3YV6GRTJmk[JGZ"MjD2#ijSX5&
E5Mr`+aK9l53NrS42H&G33kD%FU6c1((H&Z@Klb%q-M3cP2,'pMV))PkcNSjTiTG
CR9PmlC*#6*4Q6l[CXHXFYcFp#2'I9!HlaV)88e13!&)RjD8*&Trq*b@!4e5cJKd
Z&5JccJcC$pV$L)L6j4miiT)lfZjN,'0ih4pjN!!8Ep"%`+8dd8I9*'[,N3!a8M-
30jVm5+epR84!(GBL)%"jLXcZlC3kP+Di%J"N+eE`DVHr-X$Qmb2qrap"B[3H(,*
*4Q6SZ!G+1DVkkX@b2!)%`N"rad'X(B"E$,ZGKrMX%LhUCm0lL&V2hF&Ji!#dZ"B
A)&EMkdIHH)!SCU4XBIr5+bD&RKKKjdUD1F01[J15K06"6')Ci`@@U95QhfHdm,$
6U3NjFY0l%(c(VcXK5XpVAh(3IPelPdTMrq'PP5LqKRdU,80YE2VU5'Gcqe`*JYm
B)[+eI'f8TPSc%1f2a%f"e+'jBb3`TGHf12p4qEi*4C@-P'LrHPlTpbFM2%Bj3ak
iHd*dkIJ3$0#4!%r`PdmR'BmjbeHh*J!NVdEU,BdqZL#kecShkbp`ejpRIU#'E5X
p3&#jkP2liR9cZbi%GUe,a"!I1'4jP'B6Zf[4'eMNf`[#m"qrMdKSff)3M3QTJE+
VI'5(blP-rjB%ep3$-`,'J$d10CBZ6p6Uc9`PE3-Y$Q06'kN6C6V4RBZj2rhUIM*
-%Nc53'H0"IB["KK++@@*h3%,2Z5IC683Ml*4mYcrTi(2S%Ckq+k+'iJY$bYaU'E
3Bq*Cqa(3-aSi!I,rKbSI`AGUMJ,e8Q%Sl63Ib`@49Xc'AG9AAD(0TC01C5XBN!"
EeZHq&f8`i(mXGf1Sd5iXiD+$DZf3!,&@5m2"$XDVFbqak)HmKSlKk%Y[K@9kXVS
rrj0R+TSmkNmEVlAEq8"%[hF"AZ`&!18DrP4LCcaS3[`eUBKrEhc(,D+J-'qDHJZ
fXaJL(R)3cA$E'kKBT[K"mF+q'Nl#6JHf9&%0`l+kV(HIG8qJbp4M0l`EN!"VKl-
jXGmJrb@!FK11B#5$T`bI0&(cV9#5b)a&`H5T#GG+eL94H$BXN!"4EmCqmR#[3U4
P!KGN$'j13F4Q-4kc3))U,3!AT"#DTa1P$M!+`[IT#+BeDS)`C3I!LDqrKL5AA3C
,!9hZRKLTbkA-[jHdD+,%&j(!BR$p'Z-T5RNf'jc-D3"B$bCCI!d,m[*VFNXaKTE
baAI)"I)k#f%[@p(+eVCZT30Ld(&ZES0AA[2@`3a$1M1BIRjN[6T*CGM%CGrc3QK
(@Q%HD-5V$2E6"-P@"G*&@Ac9($eEb+MG@X+q`Z0S`Q!)q3dp@-+`I(CUD`!C-@C
mM&%r'AeCB9[N5GqZG1'56[ZL*989BL$+"kk[rZR*'&fpU+Jc1*VI@RblAC*hC6L
EH+%1RcF3H,[CTYmXRJUSVG`p+FR')ZYqJRak''3lKe1CFrbUIS%jA"cp4dm,(%C
Vq62@`KVJ2aRQSVHY@J`(`lmbXqrkX-r0*Fph'h,YfD5ZFG5H8qK,Gam"ZRhaj%9
REqU!RPYf0KQVU+d0Ti+-cq9SEPd+6lS(b9*N)ppl`qXZ4bC)[#FFmjA@9A)TN!"
fLVNk'1XC(*(p&AYV@HPf5+'djVELE1N,re5T1+ZAX3B6CL93E*2Z"0H#cl8%N!#
V2ZVNUhTUc)IPJT)32E%5i#CX6"a5b6r-$k8)YE%%3cT`R@Sfk%%9L2(cY[GfeY*
'MV2T6&fc@QaV"Ne+ZeKd*$q8A4mfj*+h%$!+X)4$PI4%G!M$R-d"iNVJF@Q)L4K
R-VE`MZ2XT)b$A24Jd5$@jp#IZ0$K84j$GS`brbl-iph'6P3SU+BT$RC4kA([T"c
Z3%jNdm+X!rik3M),Y"`,GCeD+!Y[cb"DjpS3RIpQ@QPQmL6R3@pN3T(U!$Jjc[K
3%cA@q0)GBBN5VIpS9R)Cm(P"KAV4YZpeP'+QkL-BND6ZpRrd(AJ2SB8U"hpjF8*
91RZEq+r0[`2XEdL8dL!0QdpKqcLRRBP'+ZP,AL,DqCk-,mM($&e*fRTfmU89#E2
jDai[Qr"3-JAT*%Z+[YEe8ZPD3AEINf0b+rkMYI!"&9eJHAh&BEafKlY)kY#mMjN
1ZX)J-H`@)c6FHpc60aP5iQe&c+%C8)P5T+$)fVBmY*MPjXNB8'*-X9,!5QPZ$1B
ccDH"Q!PPQXSFPpTEG)m5Rb$dhFA1Gq$[0cHiL[-&bH1UqIL9cE@plP)eYKfH5kl
M6bl&0aE3G4I8`rVGr"QXli5U"mlFJ-dB[iQ-Sp`1eUEHc)YEVJCH9XS2%X`EpIJ
j("&AS*CT-BKX8[eCeh$(UB#Aiq$'1epe&,&kUJk"40L)6hD'%f8I"LYLpaJ60Bd
b#5VMPNr,(@Pa!`(EBad$9V63Y%EUC[#'h`+C*Ci*[mV(Xh'QFjQ*!24EM[DR2pJ
`kYJQ**ahGc0IY14dMV1a9E-,&BD#!$-,jQ#iL`UGhZ@B1"')e3$[mAC!6&fjN6C
4c"4mkKB8i'Y*9+9QGq6[(+GLD"PS6&-%5&Aa,pbV@b(Vaq$-*6L6E+H8MZ9RPXA
1kY0*FArJFQNp5Aj,Bhi'2E`YJU,S%BcFTZ)+`4[M["HVp6B`r4"4eVZPc)JhY-e
`,$&pG(Ja1Rdh+@d!"$4#3#D2IVhp5@SGE@%*cLS,TCI+lHK&D1#R"VAfaM1dM8S
)IUN9CqFNh4aR-4U13Bb@NAfM(92Q9c1QXmJhpN!3JS2"fq4231i)S*!!0qNcU4i
@U84GERCLECDlh$)AEl$Y8HF33H"T4k+TZ6e*c[C4d(SL1$!a#b-E@2dCCJ[FY$P
,R9JZj0#&qVrPUkf,f8BKABBFTQeGq'b`m554U09a[N%$*5,VhQfm-Mrb`,q9l,A
NPJDdMr$KK#,H3*Z!E+X#FL-dS"5$Df4fjSQfGLqh*qA(R)49JL#c92fch"H6@[B
VjG)P1G-)(cL0f8q*cc6dq2fc6`0apTN0I!2'SV(9eFE'SP'CKQamE)i-GB'!XP%
GP'NbFNKGPSV0Q[j2Yra,-!i`pXidI9La*P6D32RHe8Q9D--1R@K11-",2pFUh(R
@+6P'j*Y#%pk2lS8fDj0F%mC`pr#e&Zk5bVK#Mm)$2$@ESX)$L5!bcFGH@JKZF0T
lY+M$Dk`((5Dr%DK1&VApIKl"-mZi@kS+pJ39JK&e['9-2RQb#+mSL-KT94aV!jC
`,UP9!iK6[&mAbjJK9qm[Rb5pb1(ERM'A'DUfl!`0I!Q'TiVaE&6S++#kmM$1MCI
kpH+6r8CiRNI"a3FPNiRYNeh!5E+i&Id1X4lf)fGrh0INRYD1c2b09&""18%SJ0h
i8[A-LM$9qZNkcQALIlV6I1H"IqQZE5A1[D)FXBH,RD[l12c8B(5@`J)CAD4iU"A
pi5Yr,1d$-Da81VRXZFrF`02YrbRY"C3f@6SD*TU[$fh"CJ1mRb6Pie[LL6IUQjq
VHrLEf@pi(SRSmT!!82h4q#TG'N[fD5V'Y%Q4B"qZ5#KX`TQlblG'ZA4@!H*V`U(
h5h,$,N#KUYG!%3iaV$M#P$LJc"ml6K8#j1HaP-VB@Y5CUC[(i[HL6hi%S8l(r5G
f1%KT+2HUaf0EAp*RBCYQ9YjR1FKE4PAb6ZLC#ESX5QML#"5ck,c%p*8*Q@L8[p!
ZDQk5hk2eR"0kfeJEk[6&3"661I5j!abdDjR2*FG,SJk',jUq"q`Nrjqi)PNK23Y
Y4A(@ahbBe!q4[B6Kj-c1#6E4U1i3G$"&'I'TIZiKkQQGR4qG'dNGh)JCLdlL&[p
Q0MXl4X[6,1rE#`#B'BZ-RfG5jR"HS%"J5CFXIPP$iX*Elk`q#VrEB)66#HD%r(*
D0b%$qBK9E*(H5J6c4bBR[9r@Cf-5R-NQ-[0E$DV@iRrX#@)YLdIUdk![4$jf9-A
qRIeQJaI"M5hjlj)JeSAlKfCR*5biaSbqR["3Ym2k&L3JcYP$Z-mZLECF[&[F8*4
r!dc5amF!$2Ih!qNNA[ep'[PId9f1#EFD#lNDl2L#9&e2rX@2PB'YFBQ-,D1Q8BC
I5)H,`+*a`Z-CJLqA#6q,Kbbp95jBD)UENAX!)aY2FPl'9!)T&IQX[di2Vai(q2I
%!)ZGB19fML&aq)0Rf1JX12m8P1&5[l@qF![XM6J(lGaBPrpdDVYiGUhUQK$pacB
"P3pZ0N'VH)4CS`JT6YAe2`i4dIPhP5i[UlQ4S*lF*[*4i1NGSJH[h&*EZL0d08l
NQ#HdfPmd6+YRTK3DK4eG@9MSTiEbIMRd#jT2@iIPHeUVZJhYXZCd!Hk3!$25&TA
#9c9YeC1jLiimG5hG!i@ra8`TGNJpcTGkq0EhpcB%9XJEb-UA4JcGdFj*X%CAFAP
'dFe#p*TGYh!$()JSV4QM#RqNE0f@)lXTHUUdPEJI+Xp)*cS'TJcVEM9fr5Kl)S1
1S9A$5RHjk,S4ZN5JZj94PAP5U#ef#%ARi@UYC+BZk5$dUqGU*r9Sj9kZ6pi#GK[
Xdlep3H)emJk[G$h5RdYLkL0G#"DL)k%q8I*l2bZQ)*+Rdf*a8lYR),GhP(4%59Q
NC-'P!VZ5[41IqAJ(4"JhC'1@#VhY`Q4K)#I'"65@C(%,`m,a3peC!fhCd$eBMp@
1c#$@T9JP8I)"6Ur@#mZI9bMa5+%l%Y1UB48Le-F5)pr9j10pQX@%XqHkR'&Q-,b
(()#ClqD%6KDhcJ3-S2Cr80dEMVFep*YJV4A-95Qr5b)#df9bNJF9,8lQlFGliSU
EFZL130Afrh*$)fYkrfQfkC3@,@E&qmA(`U%9Gqfm)-H+i)!`jN(KdM$UjmA+Kl4
i+5Bm"CUqEh+Ip%*#6$HKi!(rNVr92#iV3'Ti2T[rFJU$PH1U[b0@%KLDIh!DTNb
GEZG&`dNTPVBZd8bdrM21H`V`560)()T8f"pm[RZfPe4DS2(,%4bPd3-f9E4D[BK
1(`kA&!4U@JD95AcqGjpBZ&pkeC5DBY0kAN!cYm*d`YU'II8#$34QG4!8Gc1Pp[q
kThd[+QL+4CalKJV`'!,4qAQJ&TmCiReAEPp3JZSd-+fa`J-Nd#h0ce4mID$4BX)
i`V)"Fk44`mjpQFfQG0&pF)-34YIGj)1(il[L5Ae%abDSU,8@b(@G*#cC0"+iNZU
$l(#6*X5ac"Vl1&c&'q*cd$#[4%'$[AADlT-Y1YF2R8"Lq@P-CLF4#S5J6MKY[5L
HbQR(hB#G'K#*bHF)5$j`ACP)Bp)dNe`S0IKTf0`m#5DJHXDai1rNUi"rUN(Bfk5
Y'RI)-"&K@)j6,`iT'0ld6AQ+!HlVh010T!M-jTH,@Fc-U5dCGiF8A9hAVQT4K&[
$K"#X8pPY20Fc`0PSA$5TcAZQBmrJdQZ1YX4N(mH+LF0$`rH'!Zl'XQ0ZFbF"DFM
rDkM3flN'L*5HlSej35l95+lHiYF5X!$h`dN[lh8Pk,a)fZL5l4LA$*l*[8)R+f2
@ArYL1I2!k'5X(I#iX!qVTP[*D$Qr*(X%0MTr,J+fU54+#MJVa'E#8NerQ8(fjhh
U1KL'aL*GT+dr'"B[9"8b3"4jdh[IpGL'@XZS69FBpjH@$b%IlJN45Bq,DXhBS#N
rEGJRIM$JrU`GCTG-%+mBEHcMLTG,(R)Q1*FcDN*amK6C1hKZAJSF[2BTH(j"B,'
F-mr'LHb2S!JN*a#DCICb2(X,8Z0%MlQbRZ$#ZJ)1RD##+l,e%lkfSlRK!d3eSJd
-[q6`T'AmqXN`+llNaMr06dGcbd2DL3ejU40GY!cIM9GBUphcM%`f)j!!'eB9e$H
AU$eKDSA',d59hrM9Yp2Cp$Qb#4eB#%k[1PmaGV4LGf#ZBY!j9&+daLaFpYKZBV1
4km$r&#a[8QhNQCHqLjEJ0e&EQQjmi6%HG[dmS'IZ!+k1GBML@#k%dc%TqZRJQ3P
ac#[DiJ3)SD5Ah(1ddr$$GLCpd3PhHpm&$bK#&!4(qmhLSQ9mle1fDeN(bN[ZZF[
2"jJqGqL2mH#6r(GqJ`Ld6EB'+I@@Zp33A26MEr&4KhEaY-MZEGL9e1qSMfhAG'L
,fRac9bX%@#+apb$B6ak,DlGBG-P(@r0f@!+TD*1$B`[N9fVX$KViZHa"PIeeR[@
PF,cB`3cB12[ZCc86FmZ8Z8i)R%XL)MNT-dRrhAUGV$"QiLmBlbBq*K22)C3fj@P
JH6,8dXP*hCXLV,KL'kk[!I)S%`2PTp&HlGXQ5IX1R$CAHYY5&$riJ*N2jAhjFA2
SH$bf880KAAThCC6H*N%+P)c&*`b29Hlr6S)+P5[Pk6b'jHMDKF'X##AAK5'5B'8
!lc&kV5-e!MEM#Pd4aa1fX@afja5i)"[jr'4kXYrQd&Jj89&$+TPBh!4lIMi0%-m
bCd,9NeMr-"d42*IEm$JV+j%5lHU2U`EAZhc+hk5iVdC(A[m19fZ-T83Qi6eTZeG
GlB0,E&Y4`eLEN!!ZlMj*8EhibcCf4cJ`)0&R4$*E1DG0k6`dS0Xh`XJM+EA-@!J
*ZJ",52de1Z24#3J*0b(NB&LJM#QRr5d0h#d[q2K,Dk3,-!`4)kc!%#NRR9mm`S%
+pQ#8h)BF'bdE0QkADdT0,"EDM,EIMf&@pSrSa2IP*l1@(QN(L*66l+*i(CPM56E
Yh,a9hfS`GrTV1GhD"6-b)%k&1h2(h8*Z4c1c&"jkl*HEPS8pX'"*aYGUmSjX0h8
+P2rfl1`h5V%8irE"2Lm9i&[0h6Q&E0NldRp3eM,DbVIUH!C@@+K@YJ+-lp4N1Nf
#C,4(L!TpBam21fLbFGiRQ1(h(Vf+@6NVT*9+%*QM6MFArX#I85+LN!!J*2XXfpK
9brGA4#C`I#mES3SGR1!H*49I!6Mc#ad*#0E9FL5EHj%i$B2F&bp5ph,q-qREb2P
`e%)`0PUVC(VHpX0"q+01KaTjhM*Imb('jXZ1@#k'ajQ&Xi(B*lXM8r[+IFINj0J
e-d9q9`5cIi1TjZX)hZ##[J@#8'9CP9L5Z1GH(A&)6XR3UN'3!-@cL3G2M3p)%'5
JIR-4IE*ddD[EMC0GQ(&eQE4X8E--P&%)VI[G9B&!3Pd!Eaq0P02-9QQ9"hKBl2*
,L8QQD+kq6ihNkd#kL'fD@lpqLSlf[,hEX4`GbKrj!J+@"(9If*!!b&LNB(2K2ZD
BX*Ah41JS2H)lIAq1$dD9pA98`1AeGATDF6IH`EHKXX6@3YIMclT2YJI204eRrLr
ppaDe88jGcB3cr*!!N!"G[AM"Ccl#r0Z#8m&#RMhGS'Ikcpqe!)ANrYj@Lr[H#aZ
*`AVIJ2B%*I!2"k@8!YkLrMIP[5`*T3HklGkA3dcCrY2FQRZ2+Tfp*mY+6[JX$V2
4P3Re!$b!B*%ZA`Zp&q*#Ydd5$!rH)jHj0Ufj,adqTZl$3b899Ircc92Gp@X3r6L
[S1-carPI@j,F@dreU2cQJ"X#N!"aK@q,"V"FAa5HBM,9RUFk&Q8f@1P298)R+K`
-$ZC*2rdjhf!NSHK@H4)'fG5$kHk&k8aNVFjAdjC%LTR&cfNLcS5(,LYk!0%UGGQ
MNKjIZ(*X"ChFGa,eUQ3D0mJDm#rLQHbETbLC,3Q`U,$$mTCIa9J%K#0NM09N3,6
FCh#qaBbEPa#FXjjIf+H1MJ$TjS00N!#K[B1"VHZie832*F",3k'SL*)Cf-@c(iK
$AXcU`C*qB6GKUr8lT[bk2X#Zi$8`TM23hCqB20U"K3`$[cJZJhbQrS@5-`'`hr9
hM5jU0)Aa`$c@pjYSddY![!0F-jGc'NrZQ4J6,4F8PUZ05D-A4ci-'fTDLl8`8!L
XahZKmjhk1'CA)ad%e5VEpJa[b*4)Z08*e$KHHNAAl1Cq`ijqNQ1I5Ij(QJS"FmF
''B2!CNDii4A$R64MmIk6S(F3,iZI*'4V0-D!e++0BdH,BU*)9lh1mrk2@BGU&UM
RAH9qEjE*@4i(RAHK1IF@p6KG,KPkBe16LUh-$dq8e1P+pCM&q+MR-9cV&'&'DNe
#(kY2a6abik9lUR5Zj4P!rY`I*QbeN!#[IZ'4R"YHM59#i$q$2&Ylr4DAPc-rpTR
TdBB(`i-ql#aHC+!2qA,m@&)b!$ElcKII6[lCpF&f-b*&D-LJ,1Y!cFd@AMlYGhS
00UY1p*J'fJ&8rlF5VSKbd'X'1VRbGNP",pCdPHqDlSfjrGj%h2BN'#mPi4hEGD6
f"a`GCD$[`Q#ZcpQjA`i0+F$eNDk3!(*"qm@1)me+leb9L303G,2X04YZk'ZI'GB
U$*rK4F)c+epdGjHmA,YXQNLUP##'83GU,E4d+(M1IGcj5IcSl$h6H56BfEl`jqc
T#+p%qmGhGSf!A[b+XAE@G8`S(Ii`f`VhlQUa9id9jrS"T(bV+(8@L"3ZSdLENYJ
[iIE8[+#Z'$IRIZX`0S,DTl%l-MYAZK'I`hh&(6jY#M`45B"Lirrmk3h8hpM[*i[
'NeRE%32"#qiblV+,2KYhUYFhX(R*-KHapDk@qfUM8G[H-UF*H1ZM-X`elNHKm51
JRNbk"ISQ$P"K+F2VTY5ZFN",INKr)lUDHkG)1JQ1hNBGCM"NmfIci#d)X"DF5rf
EpiUhQ''(hKiq``K-B5PAm3hlar`,$e!U9e[DX`((U4QcY#'#`#&",(qb!8eiicD
&CE&6fYj!$L[P[6!VdaP`iq*S+&p*rVi!dV+*FHZCSp04ap%mI)*aT(MT(cJC2PH
C2jU8M,[XX[S@Um5dB)+,4h$F*-XQ5%$e2ZHmlU@Jp!EZ!pjLl)h0f4FDFB4[%N2
Hc@84A1aa6$J*jb"*r"jRbLVF[L3(DF0'#!!8NR9ID)e$6rSld@`Mp1qP6lLIq@r
-DX!ML6pM$*[fEc25FTReMBm%2FbM"ij&KNcAaqX51LC2lh*Hm!TlEVjMkL6V9bm
QXiJ9,Cdd[p%L$DN0a$f`[!*9NViAC"kFZXq406pUEpDK0pk)H-ifEYRHPrk&&qj
jkImq!hR1PYm(*KmdjT*,k%S2h&HV0f6q+DCpJYHG9CfKfpq5--B(N!!N4[hCT"L
pUj1TB-$p1R1N4U+!0iIRhL(G5qC9pI5dRa`'N!"cpNq8+bQrBaI*D3"$c[p'52k
`hDlJqIrQ5pae(Z4f[6fbqC)JDFl#()qS04"9A#dG-B)rF[,1U$[LiRNlf!XXeJ0
r9m2b%0,*p9iq5pVLAUmb#BlTZXBVJj5*4&qbR&EN[J$%QB!eBJq*1L#'04Y-Kj[
"H%LpJVLe`CPjU#kHq9$*6QpmKPlPUUNc3jA(P!H1!iC`5j5$qjGT6L"3)V3ZGB,
MG$j$Y'dF(f'!R`0F(EV(2a,C$i(cGhR44%eGU))eR)5VC9iG2DQTmcPem@)SUNF
(iCKVAL1l'pUfKNq8#Hf(8bQ28p1H-IK$`Y3d`#,83[kLXHd#4A9KE-&Z1QBTbMH
R+a4C0h"c)m@b#h,`99PXCX+H8Dc'2'm,Ke0Tf(S"Bbp6pmY3"Xlq-M06m&'NC'4
E!qE+aUl6hcH4!8&04K,4`*fNQ!YGT,$pT&JR'V2L)q$A-%dY`("(Q'RDrUjaHe*
YbiV5hPrP53NR9XFIc)SFJ`(*h$,crFJI5+CPZcHaZK1#PTI5hI#J$TRCF)rkf69
1,[ehjS+(Z268`K"k!kBh0RDF#C5,r556DP3pC@)1!HMHA"PZ@L@&&iP8#j-e[`L
i[Ch28a#T%ihMpY[Y6TTR*rh+ISV9&X0Ze,"U*pS0#G6mNS[TRD`c"UhI5+"MJ`m
1D+*H*$*(I+"e6LbYqc3&ia9P14fGp4c&XU+'Z@@(e8q,IK@h#k%YGEVl)+fYpRd
9rcl&Z3kAfh[)&#Im1*p6qJU`rBUDY%XK1j8HHZC!b#kYSCIF5UlG'NmN*2Sbhl(
EB@L$iKk$VP$IFlL9l"QS&#BFCV'reK&%fG((PZ'#8fN0[VS9&$K#P'5*i6L"!-S
-59m'QbGDYTr98k5qq*4`@0-keilqh0QLMb6EqqIE+"$c3U)Q!9E(MK0LYaJ@dJ-
T%*bN9+3(a9lJC)C6+Q63r)m@$ba+B[FXkG9)r(iK`D)SH6V[+KKSVX'j%flSr9[
PPX-1[Gmh,9(!'CU5Hcmh&Kjp(GN'PTHQAT[(3&,&jKaVHD8,lce*)0`E1JC!Z(J
E($PZ4KJ4AZkCCrVFU*r`90pY#8HTi%)'iMLB(L(M,qm`hERliT3iMZJLrMdPfda
$&CG'crbBMlKp`TpJh1ek6kYB@T3"P@3Y,2'B1r1aN[[N1*PIZC*pLHi"(@0rrm2
(BZ8Bed*i3iV1"$GUEVQJ'LP+"V`LrF$$`3hD[$rHf!2*+Uc*0d"G'p0$6RC6KbZ
%AQSX[-Ve-@pj$f1Z)l`J)acaDrSJN!#p6'bL91jGfm+m(4d-PA+)AIq-10XhR)Q
L`k*%&ZIUa$5L,!X68,JU8Ckb4,+fN!!CeAq8JLjC"@1MI@1bkSf064a"I1PaN5p
UM[KGeZSR9-4jmR*Geqqj"eP(bVL'MEA[4S0M$`4Lf*6[cq"5"15mmd+GJmM03k%
J,"jd6"Q[ULml)br%hLL-G3fk,"864B*35"2[lUl(rP1ch8'60c260j*hXjEH)Dd
qf)0+iUkXdb[d9C,kf&$pYKB&,L"bA+4b$LIVd50LmmTp4-2q&QjPA`*'J[r6)(+
pm4U3!2ip+c1fa5V(-%)`("`pR0p6kS"V0ID*1m0L%DIG2S`KiqQrb'J9H+1Mf,k
0S&UGdm0JH6,4fQ90r'31-RbI$&lI)hF8'4E`YbmRC$$eHKi%Ua[`#,`S4IX52(&
P6)S"[aNRUmp6*4TRpT!!+"X-E"iXUhV8+ahr5I1[E",1al,iAL)rr(d(4$[!,Dq
rd+R*qGY(dE1VPU4`k!l1El6dhiUib6QD#8f"J5E"#&-6*(kBK,p22aEe!Y2hLNT
$mm0`1-9&E&h)1%Y%3fjGH!E)&*5T@)li''CR!``j@lXPBI-5Z$hSXMa*HENJ'L%
qT*F416"kY2%M&2&Y4Zd(rDE[DY&Yc-qpm4Y95*UT@VJME@SDlE`2A`'&*QSS9Ze
!6-9-Cq63f*GUVP*3ZI8Xa%Gp[ip$S%Q#l42e+M6@3K(BJ,NK0hQ(I$@ljHlK159
A9HD'qH$V6JQTF!j`pCbNilDfUbrh0ZP@KI"e-!+&%*ARHY'9"Y*Q6D,3!'&Uhec
--I8J&S%U"`59@EI!fCKBKr2`XB*M1jP(*q4,c!$!DKa*[KR&ClbJ[G!mcN1BKUf
4iE`0"H+4XcD`Vq58'k9"U*5"pIm3&+fpHKV)Mm42rUHSZ'cCA"i(+pF%Mj!!KkI
l3iD!N!"@Al(SQ(ASFN951*LJ06'HD2GA-VBLd0Xb4b&i@a4F(Nd`-#Uhhc(BRb$
mk!"$MkDiI[T8BDYa!'0HU5QlFjT122iR!#119bLV*RM)G'("'C@'LYT5SfiKB"q
3!%c4&FY9ikiZlFMhV8F0#DpC*mdpA)C"YqaKJ$3rS2RU)B!X3D+i+6VIiZ)qc2)
dmYpc!LIVAS%dM9NTA--R'8BRJP!0m"r'4NZNb&h@DFQ3!#9bbGrQl%RbRj8JZ+!
6N`a-5eqp*9*FNqQ)&Hi"jjK*Fei8pJ`Mkl2ac`$!r'SMAfVV8FPV9i5PZV'bZ@6
HM!bZT!0KQSDQf[X2*[30*&5$*STG$Gj4deeEp'*q8-X$QF0$Lciq&-i%-26QfX)
aahbF(pB4dI`Lj$F3A&[YkPMmXk+I*Bm+"$LPJaMK9lcaG)PEaAEQP",JX-3Zl(D
pB(B+j#e#j-S[)AhCY0aJZb24#8*peFqjE$-5AfYIP#bEPT@6-!3EKdkh2Ik["'4
3#F6RMc)2!N@%B$)SVQkS*jGjp8fj5r$FDk&hP@(,Lreb0NG#5F3(dJ4cjcdiN@J
IEaLk3Y198GHd(4*%[kLL6$NGX!F'"1FdME@%4+HHNDiaP1))82E@BFKq2piXPDh
lXifaHX[Gl+[MIGkiRVlVTYCqH&BL@E10L"C-2Lp6[@%Kr4H4`BP5"T`JPJGHNQc
q"Y+aQhJ4rC@rl+2$rl&&[q9+lN6e)i$"SeNbdmF+XT!!S(&(QHhpTa0ZGAQHqY(
Mf@)4DJh1M91RJ'NfiL&[&K0+,(S9T[3F@MZqfC1BYmfq6Z"3"*kJYQ91pTRT2")
2Tf4#HZZ(SNH$%NaI[M5e9mq$CGbZCi-0#1IjRDk'2Pjk2Gi(@akI@+59BPkp0I3
d4BHM*+)TbrE`8EFBYjaiGVT8LSGBe64",0a(FRZ)$VL*FkX@5cA%mP$hKN`+2Ik
biRcM+b*1-9HiNLbdhE"mCNQa9CPc-)GaZ)bq(kHm+L,YRTTIBV-S29,Z3@8hNFa
Z[8fT''34Gf"0'L&Ppjp6m#GU)YKqZ4,S+S8'YE!4(ZR4EZ['*H[[j5LEQV`L#IV
iiR!A+AhZ4ih[UAkd&%cfcYNlhP2h*)iQklUebfcQ#LA6L`9*Rp4Qj1jLc-@h`qP
EcC8*j(L*0he8cBAjKdPp4hPAFGN`IUU(c#41P"i-[dVKe'ShUKpc9M&Tb62Y-l5
h9e4UFGPb[@#N"pD!JbD3!$I+TQq23b'j`(i0JP@&fkdPf8iB#1`VTa0&"QG&HfE
G(hU3!$Pr`UU*Z%cA2MUpf$4UV&CdE%L6f5&%"ZVqL*N"X+D&j4rhh[9-`MQh9hf
hZDd0[Iab-JLPJTkB"D,[-(98XE()C-,e5JdR*"*h(&RMm&qD$AYkRPTR"`-3mYP
55q+"G5%S,bMC2Irr!0l(-i26C"qMX@6X0*N%rM"TE#Y9FqV(iUc&eNV!j&Vf2MZ
@@GUDfU,qTc#[XhR(r0&Ck[jqF3Vri4C$D3q,aL6qHDkqaXm[4DK[UdGd)2qPYmm
fST5'"H`d,XD886NrTk")!V!$*Lmj5ISb!pi,PeTcGlZ$ReJ+L&S8e*5C-RfJHHV
#b%c()3qD0jkbj!(Zb'Z"5AXlPjR8Ai$PZreDJrdBDEJdT1Vpm"$0,2$`U-6CAhi
`UdC2kP02JhLq3ak1hhQ6JN(f9e`0T(TkjJj5$ETX+8Y)E3kU(8$2de99S-+((0U
lPK`p3j`eV9)j#S!#K0FAq6[(%1CYT(!ANK@p)RI#2R+!acjBS!6-!M@Ga@Pq[lc
Skr-JH4lJYLPFY3r2+BNqqcT0NMQ0&-Kqd%i@-i%J-5NqrQr"V['+pk#5G06mVm)
fLV2899&qpYXVmI8L"BU5VE0YHqf-i%K#eN(3MdL%$$JD*`&#d8)h)AS1prd6D%-
@+l++)iE%ea8XNHqL+2cXLBd6TGkIP#HS$FI!@HEH4He$AUlTkmlk8I%Ab!p$"cM
4%#P6aL"Gll(`@aJ$AX(CZS6VhV*&*ETTVZX@dC2qIcb)Sr12MBLQ#`F8TP2`l9h
1"EU8(BkG-"a(EDB&ET*1q'(0#6#-TVk*a1B`*MIA2$p!diJc$iqEfC9c0RE"hA1
aTqqMHRhR*9eQCFSqV[ekR"8hHQ69RSEefU$k-$,b#AKMf*,f1I5#GJp#F4U8P*m
hGhMBiUT$`J2,V+QT`Vl-c,QP1Q"N`N5ImTUTUD[`("1IJKa,"GZR`Zejm[*V+3[
`"dERHB%L@*dMTMS6%fS$)&Vp)6,k3b"!!d$#bH4jr6GeHR2K-i!a1H(Rq)Piecm
C9I8Sdh'j)r&JR`5HGYjd,'1a-(Yf5`Xd-e&bDh*JDYNiq#`@i1F0JT!!#JVjbbT
)!r%4c"#Fach!K)M[`jHNdem"P9kCY0"QM#A[F&+R%4jDC@l[ABd,a&,[a4R&TfQ
5L'&aTmS(K#a'Y+EY"$H3!"fjHm0U)k[P&$ZE891!l0-,Ie53!$P#2Y[XCbL(0YU
GJ@NdVd)fRjk'Y!QY2#(GAM*$*64R[U&-V-5I(6Z0$ber!UK1Cl2Qf(S1qiQl3L6
$raff5V[c)UP2EiY55Nr`Cp3HSb0M)m+BN!$QTDk6"Zjh4[pRLTI6G"0D)q3XPAB
"qBKR3h*6D$DXV"cFcK8!Y,df)N+hU&PjUflB@mRi1C5,me6JZ3rj4b4+98DB+j*
%XRRMG`Z$G24dV[*EZmL$0NXFEqf8MY3j`XJ6rKN30JVE#%(dVbCJB&Qf'*jI0VN
9CN(S%qepi5CAcSDjCm8MdGMmQ1X%B-jp6A6BAG`d,UXN@V,$#1#+d!J[V%DaYf#
U$UpNM(rEZ*m8R+TfdaJPU2"5Q#k"9MICA$bJ"p3DJRmZ5CEY+)(m83SM'ZbF`+"
BLcJRjm,c!2J$(G8#rQiiSS!qMaRj+Y&15*TN0-5q4qRNU[6Y&,*hF4$4i""H&-1
arANi+KLH9$1'8bNF""fLP`%jVC*#GZehF'YBRXKTJ5(a,Kbl0hSA0X9Dl%*!dpi
%bhK38E%TM3emV-'V(PlHK`*$531b&!XH$L%d$K99"G[Zl'(aY#8cMYXP0j5XrXr
AR0*bjUUd59V0(NeArcKXTPqMZ`dUjdSl"9NmXZ0*ELUIYcBm0-!DaXElB(D1QC1
H,JDdcDS5PXK)SbALVd`[F'A"JL)ViP,*qLSjE%)'5P)VbjAFaC[(`kM3*KIL'r0
AQA)L$Ap)+NHVSEA[-k'hhMm5L,H1U%PlpIl9iY1'MU9"NX2cK*l)`Je'K1rFdHS
FmM"DeE-f+Tb*#[EBS[lC23GeNb5TjKLa*`c'LH@(1PGe,EUh8QAKN!$-%9@hVZ-
eIL0'eQr,6LH"-S5e0`$V+Si+Je3hAACAHDeT@[8Pd4aQ"r',%16KL1f)kqqr,VI
)YJHJ*X-9i6a,*(`r0SXF8qQYUfa[d+M@Ke4X8GR&41AmZSjRj1Sl+QG+*DImdhI
G$*0JX)Z1fjGr9b1D)1mM1r"9'kh*X%``mUeFklTkRKc$`'DHb0()9KH'I2`)P%U
%,L6hl*BV$&P6j*lHB*-!)X$HF-c($"Sq-4C9G0i4ajRA5(k$,B`"$6c!LNqCA)#
mY-0ILkIJ5VdLI6[f#d+84%C`Sjb5Y,MqGV$Rm0SYS[DDdA2rN3b,QQ!3CdYR@0X
[L@!@IHEcZJmj&S'f5cNDd8fZCXa"EBirkDJP"Ik-e[$+akaj945[bE4(9ieC,a+
M"*YA`5"G0+YB`rhqjU4S`lV+aY"idHqM3NDeiG1j-jBPPf"a$hI[q4aYiah)34-
YhT!!q%45Ib4NK"T4Gf%fhJfT6(N&J"IV$m-46`Jl1MD+*2r1cb6D@EAG%&KakP2
Z#9CKG!0eb,aFH"jM5V51FJPPZ1r$4--YZL0YhP5Z4b92GJ`-*b-dLfB5FYc1lcA
rX%9"FVp+ep56Gk'VC2cT@Q@,*)FR*JTKMUU!24C39F!pR2fmGJ`J2Fb()EpF**a
XL[q1E0S@ATAk-R,NKi*)#(mKIPhiTkYr&EXDm8K!m1Rm#5N!bGjZd0*ki11M9PQ
2-i63rje)D$%k6N+N+28[3H)(VlUhF5"3FKicj["i4iGb"K%Fc2#m5VlEdjM`ke0
1)KY&ff)45e#Xf(P4Fb6q8ZlD(!'HLr)c+pLpI#+4E)Xm50cRS[cYacj5RB[iFTd
pm"fRdH$C!RclNa%NLXp[$PKr*QE1jXPT-dk5*"3BrJ#4C22GeR-FLX"B!JT6BNr
Bqd@Z4KI!(Gem(QKZJli(VbcTQ2A+P3el9`VFVJ43PEGdQH'CK'+,(jqqqTbrPr#
c0pqE'L+U4-h'K*A*Y5Je3e)YSihNEjQ[44c(PX'9c'["aiiHak&QNk#Em66,&V%
N0HYZQfj(Me1[#VM-8BI*rq4R"%BM+(p@@rDcbrf%pNYfmpF1k&S,fB-pD#EI'9X
NVhJprG[l9i9D[j@%,r00AIXqaQhB!Qh@T("3pAMQ+RNhR6lrkVEAUMY0M%QfG'[
2'J5eq3F4a&)8R#DLR#ed#hEiXhB8IjGR0H-bc00VUHZ95aXcDqYi1MEJFY$efRl
N!N0JG*E#)#1`Bm8$pS@``J8,eR6T)0H4kGDU"pmiTi%Kdb*PFEB`PY%`k)hFF+4
8N!!)!ZS9QTD"VP"#jZ#1'UNJ*Z"(rD&V4ULA#cB6dV2K,rf954r,*m+)&4"CM8a
f4"6-TM$H"E+Zh+TEJh2ehi+k58bIXbIKqK-2f0+hGqAFQkBaf"cZ&f1*C-lXb@1
Aj$cYkfkJ!Vk5@$!,U-aRdINNZ`bQF"3"JK(j$i'P('5-'lR8[TY2P3cKEk!j3P'
a9H$jTEX[1b9'F"3BFQ*RTq2VDRpN'8HXZ6D3!1AipCkBqDX@a2Bl"*JJk+#GLQc
NM+NVCb3T+N9Pe4VQh$"6a$e"YhH9pVq0[4Y6h4$3rQN@4U&!6[GT0)QHS8MUelZ
a0B!EdE6p!50T'0dBk@FB9IhP+5+`EY-"ArmM+jcG4VGbH)5e26Zh!JA`aS"`5S9
DATFVc9U9+"mJfH'+5HGHa!q1qbdFpFDD[TB4S3(NCC63V"pQ&[4adme(ARiQbUG
DdbD1qDd0-DI0jeVM&3krUpM8dGBVbd'$E%Rlkj-Lf(AcbRF5Ap1dJiZ'MZ%b#$6
36YbjK8e%DilX4qe**KX`k!a+UqiTSX$)[$18R5l)q5D!lRCr9YI`a[r0-6H3!2V
Ljj5-4qJH[hV"XLrkZ02U%)c@5qM"B2lKkjlNG0Ie*r['HY%0c@rhMGr4MiP(Z4E
RKVfA$f[cTj@1VE"*M!-%K"R0m&RQBJ*S@j)U$[dP%m9I$MBBrG&PIFbKd0,RDST
(mHAL*[PjRr2jU[1"L82*Md3(A3rKAdGe"42fA!%E5*2KqRlXQ5hQ%qF$h5QM%F`
$,GAYAAhI5q3j-5J&93f+jGMem6l,2N9SX1bbdcThfH9JGQI6+%MDXa(X6FHbF"j
,1pCfTL2BaGdGqi`hGYU$"T`09*cDR5TF-6fY&#),i3$Iqa0"S&GNcjBSl9k8XK3
iZI(DBbf(AkJCM#,Z%rS`c)3@J64K[CAfG+SZ!YcGak(JXh0b8FrAL13&F@$$)F"
ehAP3YZT!9-)bp(QSj[c8!bd(-YCm86jK#H$++TKp6Fl2A#"IGZJE[Kp#qlb!DGZ
bV5'H298QfqEcF+Kj3Y)6Dj)c5LhQ,VdN4q#'iK6)8QlTqMM$T`Ne6pCJq+*!L51
cr9fIMF#QN!!T4TV,40l1YEEU%#ll!bbP-1U%$Lf+NTGQ41`S9GbAa*!!e2'-r0(
%EXR4[j9TNL`1*XLp1[+lK*Gd)XZYlkR68F%$UY&R1+Q!F%'qkcHfSjK-"105#fI
JN3f-A2(9hP3HLieD!*S@K1r8K"L+L-8+HdLc33Me+A[Ei3N$!KMDcHA@EH0qm2U
02Yk[UFfLRc,q6Dh-fl#$62@I[YP,X+`NEF+ml'e#HB)q+AMalYB4KkKer8Hqr&@
b5+'&#MZZm-UAeM1cQrl0m9RJAq1qcZlX63Nc[3[JKf6ibZ*JZYqEmXTbEG1!LD1
pS`3df(ESa*2(3DVdhINqr(-hP$KII4kMQY[UKP*CdFidMQ1H6FR%c['`VZ)HqKe
$ZdJfT5QAF@HmQ@ESCQqha"55qZRC3T&$h1e6(crr245I+TCBcHP!iCf,-4LT2+`
q0Z+[3%kMUFN30*BY%r)N1NmbE["eY-(L%k1PUdBD)4jj#@HV,r4,eh+U6"eFr+N
er#5h3E8`&aeET0f"J(B%(T!!T)e&l6#@8ZceeT`rljT$'G3*pY!bJ'P9pGk`ZMr
0lT@Y@E1DSf3m5GK0ch!b#,!&@p%!0,6-P(CJ6iL8F4a[H8&$@aU,Qa4h4GjLYre
4iF"K&adMKCSq%U'eh#3hHCi8Q+&(J0ZXXLTIFh8CEpb9GVGJLmMGJFCa#,KjfSj
5&3jcZ!3-BrFU$XE9,@1pBeFQi'3ZI6J0YdGMSiD[cV)"PDkJ1NPV!f+e)*5$C3Y
)I$'[4*AQmB5"S%kfFa6C%+IGJ6aU,m0CfN#Rlbr"e5SiHXGPL8ibFec9HVMU`)2
+T,#KLP21d)eX#3i4f""pe&ZFD8M"-YC$0E4PGkEBr@1E,PMbf%$&k-X8&1@0Y)k
D@CXBpH3MBeQhVUfIXXbpLXc`Q6Jd!&i849almRjUTlceFXS%55(RBPhRd!M2h-8
+&%D&[qH(S[-8HLf-N@f8'%m2i6T6XJpM!!(A2SbJkJQTEY2%rPdEb'fAqC3186!
&)fCfeTT#$6mmQ!E,'CR"ki1`(6($h9l,6E6RM1A3Khm+j2$U,-3Fp8%(Ch24AM$
0Th80T`JUHRFECHA6#6MCqjAN9DTi1GL(6RlbQdfcbJ(N03Gh%2hX8hS*BPA)$DL
LRE$)dL81-!j%Mi-b@)"8Z[6(%Tp`AA45f"'IMJm5ip9$Z%i0&i5'YXDTD"TbZIb
CU3`41iHj(T`e3T2D&+5`JGZSMp(eIlR@`"0f'iIEpa0"E4bmFmJPr0MB%5'Z02f
3!%qNPb8`U12&!rcAU(IY6[6c,bC5Y0)1dMlJr4U50&&hDNRB0&a"Ua-+P(8XGPq
Z#MCF'Z&PZS66Ih)apEUb$JX@kl9J&q)9T@F[#ef0'5%QCG%rimM!&eXNk,"Aql@
`D82m)+0RAAkVaCHcPcY4c`a9P*lCT8MNq`6(Hc6d4iV"Y[N$@MK'R,(IIb`GE%p
&k,a$+mLjjN09MQ-R+bqTd)&YkTI,1aq#`0IC[Rr)&B[6(6'jBdB[q&@j'l4A4&*
e)[SEi+Pkr'-K20KcCHM`*I$8$I`kZ6UV"MTRa[Z+YlT'Vej`GXDF'K(fBLFi2$M
(1kYDI&bq86ek,DYLM9H8-`P#Pp3lA4(ZiI43l0RB#J$-T6!lGARh(jFNh(!BU,&
jm6Y,Z+2-F3(N&J*)8%8VJlR1+c@UB4(KKXl&U-C)p*!!&0)N'`MCb3#LEA(MF,!
Di3)!i(Ee2M&)0NDK,fDcEfkLC,1m@e0m6pG+[URNqXC&ba2AXHNkq6f2kmS@!f3
M5cYErYNJ36i)[8DrYJUQXANDZMGmUGlYN!#`#(pmePL(I#-"cI6!E0!5A(9m,TY
d!#VT@,PrD,M(NmB!X@30@[U3!&@H(T[49(Y9qG,4X+LJ2$'Xi*!!r*J)DDlDfG!
3MB+0j#0G25)4G9UT!G!rZdEf@eIqNHiM!DpmVAq+IRjbM[M#p+3[[Gq*eB4Q1LR
-ZHkj+mC$cpr'6d3$KmqP)QJN)#0X*SAV-44BFR)a@R0a9VmF3&KDa+NdAcG[AM#
GAV!MjE,A'c5`H-C)&!QN,P)8qkZd"KKJSD15N@!iD+hUde'SVCE*qm$ijmL,Q(*
)3Mi-JG0A4,M$!5Zq!fBK`"jiHCi%q09@HkV1k$lVf#X%G1,[HrGMIm86(j'$l(0
mf8@0dlEUTl,PaB5b$pJD1Q)2R0"e!k%Nb!N`1+Y*5)VVP'#R)KXdj1P(%DrmC@6
dAPKbh,9ET!ipMR9@45fcD95EXER1M1Ni85GeAl!@MrX4X+iT[UjA("Bd2K$3!K3
YDcGPihd@,SP@epMqqB3q6d0`q5334SN)e"pbHfl%LMaD"ZBJkVRTCbDf[!m#Hhb
22ZF10RqrJ4QRBX)rfMD3!#61+b"pRdk3!2jS21Jl`FF%ZQIS`FKH2U!JQKli$)R
p6'm+j@",Z$bKF1NRRlGFU0Q,1`*aI!L5K4lV,96@r@i-T9HdJhIK)3AaV-rQQKK
I08B+hSb$1ZI-pq-EX6LC[2Q+G10,1Z3hh$0Mq%HTT(NFJlJ3VfdE[K&(GI!%8q[
0kTB2&2$-18619B+!rN+Hi#hSEd0M0S#80GdD*3qUXT*da(DP'qZG[ic2@1HEcXr
(8hA)[0-h6HqBTKapBEM$cB+J%X-9qp)cMcc$T&!DR(+1bD04MSDXS*JDTGP#lQm
H"BN)kMKZ0%4UGkiEN`Jp`YET&,*YhcMC%--X&%!8*#cd`miN&1P4PB2U5H6EiNk
BcK,M)H+Q[04L6rESNPl65$Miqe"FqbBJFe`f1kK[0G6d4`3R3!SZ-[FN8ID(!9F
(HYiK!5pA&23%`G5kkRMFaMHXZ5Ia!'cHLGh*p*E"*KLrMc)%i,XZN8kI'EFhQYi
#TKqHhM)hkHC$4Pd"-hr@Cjkkij3NS!lYbA%0!J63@fP0)(N24Sia(Va`[bD@0V+
CKFkRH`bPUMJ)1UJEPVP(Xb!KHm#@edQ-)fhq-h@0K+PSP-'2`K9NY89Emlp"Bc#
'Lk+FR!aB[@2-j16*30PX@0+[cDJ)kF2PeU%bk,D*"k$9C2IAXcVpjYq)!4T2EK"
hdU!6B8de02"-8RV8+4HQ$kd40*KAH3dQ"'e*@Y,0%*T6U4UVrHC[6+Ad!2mKp&2
0LC)D&6qXX8T#H)"`(QMeQ,#dMScmllU@M'0Fl8JKTqX#H[8!p@0Tf)6U5BhQq,5
Z"QKb2UaP6j*IVmZpr53B8AAJ![h(aqF4T2ereA,$$ZkXiUcT'qkVb1(,Tm@%H-"
H6[QGTBQTe%aa6&UUimNVS[!-f#Z"A9%+@KfC)eI(UehL68[14q5XLhhr5*aLZeU
NNM5K%kkE1bKJA4VK()b&IIp0Q1lqhq!"q'UC0l!3A'Qb"8,rC9PQL908eeHMq[(
)(fVp3!58QG3qf&LQAZ1"2J3`DcAV-M1T%UdF!aXbHB2hJea*cPTYdL$FJd*9Xc%
141Dl@qhIb+ljhbI4q-kXVd)$'qMZUZBr&*UY`!Qa!`9j%rC`(V&$X85#lfUMK5j
pF-)!$U#K2k+%0I&F&hlE3VF%GMRd['A,'SX%0e,Aada*-m!,#arSlIBhB""FG``
"r0RC*6P9F2Ei4UQ*JCGMGrf$Rd*1Y0&m`jCFJhmFJV64[D2UG(eF)+8ee-Lra!*
"UEb`kiF`Xm[C&UH#R)qT$pL1A)@[,K(9mQVRUf-hJ1Y6l193#6aD@k2hIQBB11h
fhP-CkjAL[h0'Ne`XN!$QU(*E0INpMJbChN5rU2J@E`65P8p93XZmAhcA-lVH&JP
`M%a(XeJQf)`mEphd(+pN)kF[deJF*$#@QF9S*mAR,lSqE6U9ChTSZRkQKScXU!!
#pRpel"-Rd-2lUQH@TCQX*+q"qM@MBA@lm&%MCH)@IJqr2be1f%#eTQBr3B@(jeE
2T'!LJ%9,)HmhIC!!,MGRKqXfP6qY12L@4lZ$r15YAfm+aAlF![F&cj&@TE(0FBJ
f0l*je0G'iXPJENVT+UTRRSM+$llSr'6Q$5T[*A(0U`%kFR-KKFaEd4l4LmN(j#k
Sl#Z-T4i#YCDE[3%$LUCU$23Jke[fJ`J`k*q8EBiJRfYQ,c!Nb3[YXphc@HXK[cH
8VEp[KI2HA-a"'b6T)6B'+,&M1Jd69Rhc1i'pD$"-'2$Iq*Up*Y95(UT+F$N82Dr
p8UI#f+!Z$RVUe4A'ZKF9J[3!JY*0m0fC-4dp@Vdl8a!AaC!!HMi`Y+$AXTIXal+
iC3dq`HY'k%J-50LJ31J-CSfE8+"kbR6cA!FlJ959P))V'U$"Vr'Jr6RK#5GGfS%
cYG!kMIRSAmhDPcVQj0U#IAf12Yj4#3IjUD(maQ1HFP*Jh521%r!qleaiHL9-@F#
fF%D(X5Y@p5,(E1j3-l[GETL-Rmq$'dr66-pF`lh#1a)EH9+d@UI[k*qN@%P+NY`
k-9BEKENhE00p"2Rp(MKC"dQJ83IBaNN6lNE'*d&Pk0K[+Qmd8)1@E1Qle&2SY#e
'ddjR#-8qipdkYVe23Ke3RL(1mZD)DlrJ-T@HiGhD4JKI@'f8fpj)X84,`&bh'i5
50RH+)&ARrL1LH[!V#Kdf!C!!5E,*kUlP00lfG,9m(J8DdBF(H412KKRDeRZDC5P
&[!B`+CEM[CGM"5`DB"GbS2@RUK#"p44Z[!`h#CSA($lHTeqITcd2rBLUUP[Y'Y5
DldP8Zd&6iqkEm`1K5)eCVqJUC8I*5ZqZ''bFiX5PLA-EN9qRpeX+"V2)jrU)M+1
[2l6GrETC*-Hm,XRjZT4aR,*fMcbKa&MPDHqCVVB1(*!!G(dPS`JUf5`B12"4H*i
!ad"R+PdNEZPZ&@T4%E)(cad"Qi"(9bZkbr,9m4-!N4i*'GSUXjdM@kf&1+"e6f+
dY*0CD0@iBF-rVjB)QKP@pN,[dBb(if#X,V#2*a&Tac(ip!H1+jEPZ*T+#0KZQ2P
A[f8DLIL[cF,IiB!+cP!%IQ[b$BL-GX"M30Vklh-H`[mPk@(RMM#"6NTZ##9dlh!
lVmeVbRbpm"9)8",2Mq#2-E2j![M3jFYf5"mpbJb4TYCTf2fPq)`B0Gi0r$k4M8J
9ecF(RbD%',I@4ld%lfI(VE*`MG6`1Xh'-rMe8BA9ed-q9$!bajZPY&m+H8C(U(%
(ddIp-K#X[U)dkQSmKC5kr)rYN!![+81HRBj[YkUdUKSAS[3XJJ2kQDU*`d8K@GE
R3pRP"3B'Q(1h[,*Xr$`KrJd40"Eqf&FShrK&c2mZ'![T&*i5H*CZKm#1#8+(M"5
i4'M0#mb5%)b*J6Pq`Mq!DF"a-pq"hUQmhm`ZU`0V$ij(q3I@j+D9aHG8BLB'j-S
cAhKY%)MUkY+",kShl9r!U15MmI28d!#,JcUaqciaYGhi8M"a)66f2,E5S!hrEQJ
A6f+Zr"J*(ESSqMR!+Qi&0TJ$IQiabkfA45a$$!`S*Ik$PC`85j*dB#,X-DLID+B
j4$*l'!8P`GbUZYH2Nrm,Rj@D%+ibF8Xc`S%qSUCR2Ul2VDiMRKG"[*QNp[c)[Ga
aUbk5"!L@dDVf8XZpV4$`H6S4q4drSd4Ga(mhQpHYhiMG0eH,mQcS&cJ*ppaY6GF
UBbIZKKUUp4U#9Vdq'KPba([BCmjG&Up[[YA(3XN9@Y3@E$#89-CYc$q9K%Pe*V3
j1Na*V1q0@62FmmH"M8a#FNe-ITVe+l0Rj[ANpl*%RhhH15k41T@A#1ih+'B4XCk
klBUieRT-ddYAdNPX3BG33@jcbLRQ'4+FZm&8F+*'D0DkU3eDhhh0i+rcGS*aA)X
HR,Kib'1`$KjlaDDI#Mq!YSh`dT3)aX@m&"LX5",qq3k%qLRfC,"J"l&Xe"VMVb2
0,R[NZ39(6&i!6Yp(UFi#1'J#&cNmI)0-JcZp6YMP2S'"BMAbAY-V[[5`&-BQp#Y
-DRAB4Xq%i&Mk*BMj(9"60%D89(LD2IJ``(K!G(3Ii`CEXPZH&1+#DK4h-SK,U0B
jJPEhU1C(62l(Nk@Y`P('c0pF'c03#Xhm6-Pa2MZJCUfHSAlLi98c8UXNdbm6abK
NCm#X`mkCHJV!FG!V0TMkpFAR,j),L@VFK4N05IaEMX2NHmZ(I3+bqr1XS(pfmc*
5ii(FK(*E1BK(3Fi12Zm4T0F(ad4hrU(dPiJM(V29h1-Lp@"cPmHVm"kpc[9`!%9
GQBVTIQpH+j+4MQINL#U0diq'K4U(NDp+P+(l$pHN-qa#SLDaL13Mq1SI`Df06Zm
6fqH6ai$%@9[HlEkFC-#5%J'FNYPP,T8RZJ0&5@9aZZD3!"66pECQXQ16#YmM*b@
NQ&52+XCPG*ACQ3lVbc*4DBA4ckQ@[c+`j1U`c@GZ#Q'6hh3S$%L*P@AiKXbJEdV
DH6p8PBIjH"8YXC20`9+[)dQ92+B(8'!lVYbqNmUTCVq6IDNX44&,bAhUEffhZj8
q"YHXYXQKRj+iYi&YKH)$+kTP2j-kPNac4pD3!(8-mlGY'D1(K%I2QQDfZc9ie&&
q[Vm`!e-&S94hC!`dH0l6V(2+1G)Ha,@(JeE)`4L%SFcBHj&T-Z[MP2m6c4Xc(fC
[cJ$X"`Hhf8#+GDQlb*0[l@1i90hTGYCHVm*A!CN0++Z14frQLe4PpR)G2ib)KaN
jD9pb,S"&#ZU66"hD[V5K6INa*Deq`c4M#$"EJ!!hA1Q,D-CjBHUq,hIZk81kS'3
8KmNQ!YD(E'+eEbICRQ(c2H+88*+V&iLD&TZfP&69"a51R8APNNGQIH%BGE3V[MB
f1&Xqh8m0+mHSXZRQPprq*h"6`bq%q)qiI')Xh5r9HkZ"`M[Xm!CSIq39CQlj+[M
dSX,f3E,i9S55ZPF21p"LL[pTcSb-J!4r4-DrK2[b%S@*c),ZbJmDYkKPDQI5Y8D
5P,93[NT[['PDAlbF(ljmLVbH431)Y3060aF[+R2fJfGcN!#T`R@'Vi!m0iERfKP
J40Vj*Ihp62UXc62S$IHp#$P(pm!2G55Fe3ibGESc#IX%9FI-)j[U2+CUQ&&mbJA
&"$#,6mVfPKhN$4YAr6"PdVSD'@kHQbKrb8j#E9T[3j(jNCQ1cl#cIAECGHCpTBR
&BGl"-kq3!%l"HTQ)58Rf"r#KN8VICEhj[h,dN!#cdSJl`LEMlVVa*aG$EeqA-Z@
&mmiS8Sccpd#q'M%a&A)Z%LHk0BHp!BM1!D[Z[-UfSD05+DLJRS4dN5FLjReQ4)l
5Z4RF#AJ-IKM&0i$Mi1MFiNiJEBA4"UR&dm0YCfqTQS)@rpY62b160kr1+)J)Qqa
[Y21GrFN@L9a5GTiU#[H[!,9M%P)XfFiG%"HS$d)`qp'Frfq(*CURIA%J!-!6&1(
FjH9Tkdj(RfpVCf[GkL3L95D0rP33SYHbLcTCK'+Ic[lK%a&-k4P!ee+,Brf!I+l
JYq')2kS`L+DJjNJ,Y$)-B4(e1Ai((`S"meXk"!5ABJD8KJ5bIUN!+Dea`dYJLkG
PEal,mZH,$C!!jc8M&V4N'mmh%Zj(X#ECNQ%#$@$-R2NGZXdH+hki`c48XRIi)pe
R3Ha(ZV3rf)&HRAj2%[+#6KqE$&CAA+NrZ9YUGall!38jPXeNf`-6E#@9&--"%a0
`h2!D)YNeEh+Ca4Z2HXiZ-fmG"F$kQH,Jk-hDLbBLXebH-KjBUM8l$',-QTpe,[P
M8dA[48%p@Ji%DfmGlIkP&h!&PT1-KfQ56ENCN!"[TA&'X-NfLkifNNDT6Yh*6+9
I6i"APK'S#$i,P(Zj(%3N#!l",hF)UjBIKNXFjj!!(2Uc9cGaK8&qEL205I*-'K%
M((8(""p$UbmXS[*ZPamN52361L,VU'PTFkfL-qLAp)I(95@&fM3QP)VK@I+NrhK
liIC)FIK1#4lZXNY&&Y@Ai[M6m$ZjUNB0qKEP(HPVmRSr&A2I3N4Lf*!!j9`U#AX
hUM5dI[VLYqr)LqE,l9[B-GSbEZ6fpDJGAL10bPirQr8B@)Me4ZqE0hhcEjV9(Nq
5[SZ`0$,L4FI449[9H@BVkQSZ8XDdl#db0'5cN`G#K+YlR0*(q[NXBdAEj+RMK12
&NH,FZ2!8&JIEeZqZJYE$,KNCfr!NLqS!!Er4c0eD6Rq%Z5Sh[lFhX8PbH,"jXcV
C*p)`4i6V--l6DB$!23SNEVkpKL+)p``PG*9X96Bh!qk,Q92p@3YRH*1A'4#Q"1J
LGI&kb0YM*2[k#eNb)AA&R$"pmXc6%AI*'bKHdT6hP85ei'SM9eLK3$@ZAme!dd%
G5GiX4E+(aMdJm"YP&``2L,IV[Ie$QNBfqGRHe)J'Z*2@U31(LXD4Nar1YQ-l'$Y
N6FP*JEKSHh%li-rc4(YFj8cPS,r$F-hccN@)'8-VY8L2XBlj+BVdHEPH*$%'`eG
6$022E0j1dLR5ARb*0khNIZfiK6M,lGBKAGdm8iIaRBlD886P5pM6mq)GAP5,4cP
I'3hQZ"LTak+"pkY$JJXd2*43F2SIG@LYU!"fJmSKT['#qG-K#aH4-ikEU[L`j"E
F&U6QQ@!Hk(+PhKBL%G23pjUcP&*-,el-SPrD9I8SP-'Q[IJMkTh&S#8J1"5Y'0#
j9kMTVqbEb,dkd[6C#a"d%'T`EXPQE,jfM+qSb82XIe1+#pT$88)UJ#lN99Le,XY
aaq'9TpqI%2kZIBGmD@fYE#41!&NElIbb6-'1#pj2`cNCT%(ApLjj+N(UdPkadIc
+%*e[m4)NP2JZBG5miI1Jk[!`C&NrT"5QPq@3!')`d*GUFT'i3YK!FqjB[LQTZq(
C-R"["G00$N'`[9,V6rXQa&acPV6E1!4epJJGj,i1rJekY1fM@a!NT0#l8pm*$pU
efaCAT9Ue,&c*,G[+crl$20)c&8JA(mEf,p266ZH$VQY`Iq"lGXEVi)PIXNjlNH6
dV3@8A[B)F39Q"5,$*&LTT"K)3MHC-lH%R0E9QQ,ThX1X568CPKARpZ"5")'0TRj
ac[X$kKI4R*XbY03-fSI#&Q3a#K*I)-cpaADXqli-Taq0l5CHQ(iS[G[qfEZ*Sk`
(,)lKR3M(kCAdACqT8Mi8!dYHM1"I$jAQVGR6$GF0Xq`$KM)lRVVEiJ`cqMeYXj5
HDC*@e*e,pXLl8LN+6j!!91)XZDr4lA+@#FMJF)eUG`cfb@+Slde`KEQJ!f!TS%G
GF9kd#EKJl`#TbbkTR5'F#DAbe0)Nm9'('lYhhq*mqX0V!j9Sf9ae*h#"A5B&I4C
Bk(RfE36#D9R`8SJ)MNdlm+QNYA"*b(Sj&XM0V,Y8#(QG-+[+2j55C$##+X,j6E0
53243G8M4b$mq3,(R()jUq!$-SP44`Rr"KNdBaQr(B3H"PKT8`ZjhDLY6Z2Q"f3@
1m3JBN!")iDHQj"Th!G[[&0m,!B$5*K``9A`8Z&ZSZq(j98**!p*FDki!jAU3!#b
5fQ2@UPTSG'""T9bK82&)c2DP0%Km*Ndcd9bIe-p*jXEZUN9riVL3!)IcrCLR'S*
&3fJr!0apA8cGTdBAM2`(cRl$[jArPDPAf1QBT3!-,`B3KGhRkj0kiXMQkNKCLp8
VEV*,mV9#D8TV#ldCQLC&dirjaQ2Rd%2laIAJK'iaJN%*l@m*$#02kK-@k6#2p[M
H`MM&@6,2p82$*J(4`'qE&+0bS$9)kD5Je`&6$!,40hbN,1#*!8FL0Te+&paml6Z
[LpPZYalHTAmZV+U8L+2-L+,bXG'Me@h+Q9Dj-hU(cTe5+r@Xlh+8VSB'(2r+N!$
5jec"D+HFibTLSK5FMrU`qS"Pbi#KG&-1M1Za8RPf#ErVE4rIlHLiXV[4*(0I0iF
TTkhRjBe5FKl"1)Vm'"VEh(epG[Cf4A)ISKiUmeED)Z[F['dfJ[S0qbr+kF$8TJ'
AF"5BZ0((YAABjN3ChTjpI$'[*T!!TL9$`Q6XH**$d$A)6IXHkVdhA"mT*0#@Vc&
CIADe)#Lhd[qN$FapG'(XD)G[L0%4NYP"fehL39,1-YFe!,Vq')3mM1*,L`8V'KT
4VAmb!Qp3SM&L&f"0pa!"'26#3ElTBUC&VDemT,X8)AKN+)&G!DNCkkY-G!'1"dR
hBl)4FVhJE4r0'CpHd3FMYGP%ZkPhB+V&ZVHkkLm`J9`kCFE+j`CraU-pMf82VPp
+KNHf,!d1*Ij9Je`dT&p5[hY6aeqUM0C3a)f,""BCKbqa-lMh*+4b,jQm0VeJM%k
X1[F5GTRXLrK"hDIMaL,+rY@eFQKH6fC(E8NZ86%lkD0YE`#%9S*H[2q+CqTM$J`
![%PLS)ljj*6c)Ck'ZL2M#(qaKPEY*$ZQL#5KePiGlj0a"3!I-MDpT)iiheQB-Xa
-QdY!-YQ4hKj5a'[lDmeAc[p"ad3mKcSR,`I-LB+@$HhBIJA+$L*(-&YRU"q%qRG
9*mMpXI!6Am&a2T,!LA1If9k3!0)e4QcSJ`"i6+dEC@f$$92j%r!T4NC($Lm3hZL
"lK!Q6lf%6&,T6dV1K5&D4,"GSPUAL'GIpdppP!hcb*3$dZV1ZkkqC,@-80JXEe!
fP5#)XHYf'a1,,%aaaM""VbD!@mLbRK9DbAT!&YIUlTUMhrd5%`"K9mAQ381jq2b
032)aP53h[9lUFbSQ4U%aL"R'LL$ij'8K+12r95%RE,NS"6%L6[U*fdMrmjcLDPA
`,iqY,ZlJjd-#DrFD*J1F-YUI4@S8(iY!)GfeSNlPQ*e3"'m*8BAQE$bSmfr[E21
VNa`Q,IL""ZHmB11T&%B",LmS8%p$ja-!&lVj!08AFpY[`8(3H1JZqL%PYYP9S0p
X8TY"&lBcqTUAT"@IVVF8*14#2+'be6-YL#i%ZpX'd[4VjJN*"(C($h2KTN$MJY-
`+a'Qc$!2kLH!q#mrLhmS#[ETK&,@4k2cfQ!kQZpT4M*ja*pZCBEJL0`d#V83dIq
Y'1A")lPJBcUF2G2Y2XMG`[TfEGG36Id0dL0%"8B2XpemhcYE[h#k3m9qefp#1`r
jqKHS+%l1"3l5$6e2a%mEI1jhIY%Ddl8N82iHD3)$6$94C4%AprkQ2T!!e)aC%%*
`,Nb92kGBF-Za#)D$aVm",+dR`hI$e4%K'*Q`)rrq"&r$lSKKUH1$`e9jijXF&F5
'+25`-5L*aGeQ9b96`35,AHmGiaBGF(*-qDAE,[M1c86V@iV3VMSHhGDjLH%A#BP
dbdQCah@Q8-#Y3LGm-G01%Afqhja1K#aL@%$MY,`$&V,dr1&)+Q30&X6Z3Z#jp-V
kQ[fiA1Mkc9ZGEje8X%lF8EMTYVm2d34J*cIDj8hNiYD[YFpcPMT`YAdrjdIRXN6
Z*(+--pi,,i66X585[M',SR*bZCHFTVEE*L"B@N%55'$H6*0kAm[-)ki*(!ZbF@Y
jIl[X+B"YB8Te!!G$[irH96,dH(GS0lm0ZL1IHHXbEC!!XCHcmHA6qla!kr2'jlP
kB!3Yf91TYUJhhba2VUhe0j&qf-fD*Qc6Pqk&+cc6IENDlP!qY[be05A'HS*@G[f
+%(chrPJlR-$"bU`+EhG&Pl8DYpNcVEA(132A(ZIMe$II#B*RG8'3!(KfK02)AJ#
*#$Ym@R(EL+dU(fMlD&l2+!UN4S!fJ*!!c$BQ+F5XPBG!dalM,RP[3qH-k$KJ`0p
iP*(D$6De`2#jDaS-j%4pS$Ia3$I@F2#Q5Z!q1fDrjG5HpTG*jZ0H"e#A@!HD81I
P6#dNjVbqqjI5$p(U6$Aq-dVD`FmZpJJTc#(N050AGQ5[2Kd`'hkiqcP8Zj*f&R3
QI45L,0mAeX'10!jVfjrX(AM(B$mp65Eh+a+rcMHP!PrU'MjH(1RLjH[XGpBV8fh
q%8X(I-f5QFXFMEZM5+'Kja$(%bi(Fiqq(+JPdVV0T,BC1!Gc+6lF9f[6fhR2M1l
E[[rVP4KV,c'1iR#VG33I22-lh6Ip#kSQV"(QahA#m1'm,fM"0Q"L'hUEj2i!$Mc
fqcUN1#k@11A&D[Zc21rSS'6SkZ(KK+Q6@Xbaid&+DpRe&a%C1D4DH$S#(4#li08
1e'dSMJFIpD0QXUXIF6XNK!`&&501&rK+*d"[6lpD-,@MIZ'$R9$V-G0)eC%-V`J
2)"D@eI)l#HrDh0k[$E-0eML8eY0F*PIr3mQ4Z26#T%RC-NHGpm,cKHEBf`44&QK
%jD!4e3k*T'UL-A6`51jX!H9CfD'2aKLIraK1C#-QBlcDhMmS8VAfZ(3[D1DhM#V
f*G-N`)I%3ekUf"#M$IN1f2$hr55L9AU(ff&48b,,pQYHH-FlJT,AH-6M`ad1B-3
NH2H9Mh-$-3)i)pPq(VK0,#dIH'"r-blF6RH[V09RDLFM$3TrPdLhM$m,EN$kqrA
abG1[#3*9@%I9iH(hUl6`63rVZrSK!3)m,`UJQNCpk"N84BU3!'P5phA'BLCGH'A
i2dbL#TNZQY!$8TBGHhh@lS#e%26j!SrrkP39GTA9#Na4p('[0C1)9p%N`,hXj3c
pR'ShFrmPA[`Q1&B-r+b1cPFZNDmGU8SkqFD[KNHLI!RF28Kl2B@[c-mUBj2fRc3
9a&JaE[TcNJJi1S"N+LJ(eVC&N!"E#djrffPPdKVFD!mbYCcZi,GJ!H4HBaBpi!R
R-*8mNfKfA0pYU!B$AcqPF#NiS-qZMNkQPrI+Emj8Ej0rSM5B8-6V+K$I*HPeVhD
IB0&8jca2#DpE3Q6#B0KBYp$(bPHaHp)Qh%i0XCNq2%8p,cNY6R[r%'kdX$3k*Y)
GIKlYZF,@P!JfJm9p!&E!@VIF9T!!pVLr#aJBcNaJA!@JAEA2J*J(Pr*pGr!mU1L
T&*dbmhL#Z$2SaUNaSD4N"4mMBpPmS+@Pcp`1*AUeU6k4d8Tk$0ke[)Z1ER)FceH
'5c,(a+X[ZR""SX2,f#aF,f$MF!ENLRkRPC3CeFd#R&S$CV@5#pYVTXrU2(+K"0&
Gq1*qPJMj26-[rRAS))1pUYUfL,5060FIlP)X3UlQ#&9RZ2LQ`L(D*,*R0UGBe`8
rB!"j+VjM52ZEAP[MjA*+KAdL)e"EJ&9qNL6ZKE0L5m52hUVNN!!1pShG%R$h8Uf
[MYcTLpk6)46ZX4d(L,VVj'B0!MHiZ"i2a2+6f*AJ9SM8R28-SVhJ(eQM6HTG+(Z
c&54kZ6LI4G41L`PCY+PGkP)p[)$GTYBeSN%!e#8"dGHFAc5bHUK#`VSRBp[e+N[
M5FF$DQM9AjIY6[#0E1i6X!V!@AjV9m,AJq`LqNEDahUD++i6(6&l4EY@Vq5pD2r
[)reeYSmC$(L`#V5FKj5+IZ,1)RGHcIQJ@Y@Xd0KR06ecHKZ$eJHr&F-[+2S`,D#
f4bIj(de+Ab30Ej51F!EY@lra0`KD+dic8&FE"2DVq45U4AMqpRUM2AEU'DjLP+6
43m[IZG`#r$Q9(H*"1`m-%ZF)eME,[eCec#'AIb$Zjh))5h)R`fX$2%ZK2p"0--Q
-%88fi%Gq8)Fp8-3'KMHj!I$6+%L!fraI*"5b'fE-FLp*fAPEK0&PL1)flK5T`Ja
(Q&@+if"Aich$i(*#krYUNY+A)54XNV[($)FMqA3(YaQikpkrYT%!fVBUQ5[MEZ,
em8MUB8cRb$('HSMVK9lhY(P1d96MSk$JU1iLc%+qMB9AHE)*H-"`93-rfaSQ4BN
,!%NB-SR%*K4CT#8Q(N`FFC@K5IhC&E06MX9GXUJD#khrN@3J[hBalj8Ym2CCV4N
*5[FkFUB'%Xk[fX,FcYERVqVq$a&p+a0rA`rp94-X'C2%F-(&21Uh6Q5eP*pb533
5J6qm+VX*HHH)*,iVl&dR(Vl[AIRC[8ll(hjT38B`Dm2![+TIp8jjTIam"("F@6H
6%@[#0jlKDhH)$UVbReL[A[qQ@*XjMrX$F+mIhq5,9c6+60i0mA+9eM@lM#q3!*Q
eQH2PU+YNl@b$*FZ8'(b9&@31ie9qIEQ*iTl4-2ri&,4r,PP-0%U9PRGI1ZDqcfB
Lj!&+@S#jG8JT)YeG*rVJaa`L1bke6QZdN!"K0EEA(T[T)N%ph'dSa(fRjq36I@)
Jd$$fSY*20""85#)6R1N1k@B$T@5jHYchQa6%T@kklM()X(-R+#BH600HBXd6-mc
q(XqC,6m,-FJm9kNSdSb,"f+A53%Y6"MD`)bXTJ,i1G6iUrQpIG+N#KZYk#BV*YY
Sfj(l-QL+@U9%HVYBbQ,SjL6,63GMr%+QNHm6(hJ6*V2ilp4Vq$SaIi!V#e1X+30
SfiIeDjbAB&2k6V)6Pf1kX"rUI*Cmm)faHeXHMQNUeTalGT+ShK8)HP)fXch)T'X
rrPcIQQj-l!A(M"PBUfZ&#bQ,a@cjpFU[,5AZDXM312G5iZCUFiGS1rQp)--`TYV
69SfU$[qDN@h#`PjM,!LXGLRj`eJhQ5AqFB`Ch5JEJARmSIc0R-4DSH30MLQD3)$
rPq8er'r5)4m6aPPDZ*l&'[UX#+IU"8$Cmk8PRN4feRFD1K5QBBmq9X-MB)lB)e-
6lDVJ6jXGm%P4L6p9*#C!D@AmShBV&bB!dIaZ+&DY*mcM45N,D`Pfa'pidCJIT$R
'Jci%H&bT0Uc[G"bjJqD0KU8peD8-r1-4[H+3!&)qpjMB2+[0PI8rU!FDmH3A*CB
`40c#KfkVl1AI`"#9QP`hGAT6i9Z4X15YU-em0eaK05(3dj%[C0f-0dH#1TdZAA[
,FI'NQP)hc`Y''1-`fVBQX+Ej1(mSJkVFPqGD,U"b0SZT2fNDcI-6J+&5k1!Ipqi
q(D2B(rd`UK1EeG0"FPXpD)C41lF*%@c*CrfT(*PC9ieLE0"0#epjCY'$G[K9Hr4
1!%5Q14&HUmccV@3hN!#eB(T%VaH'k)e@0Se`2"Z)8Glm0SXB(S,A0fB(R)Km`ic
QkcIJEQ1Df&i$p5-b4'[IZhAD0YXk9bSM*2Gk(k"K[ILBT*ZmX4[fSbJRAlBaGCa
#TVqPPqaqSjiP%-e5QC4GD"Cl$88!R0,HQNkkP9XH#m@jrfNpUVGCcDBbrpFHc#,
3#b%$AV)8Cm9d"Gedc`ZN#m01(+pHhK(+(Ji%b#%%5G4km$K1m`#j+FT03C!!jdF
DmU&#U0&bTR*1pVR)&(5Cb(+jmCE!h@4#T'[5'@U8,(hrTLTDY[32I#C2$b"@Dl[
qRh8Y04k*UlZXPp[r`RGL!!EDq8@rb-!4d`Z`C(pP#GaqG%qjX5mTrX4AiM2[2%X
ZH0DZ4P%$qTpE$cNARFF%,PpVP%6YU'V"I#KQ[e31B+9(HMl&5d%"QJV"jRShU6i
JSP3#KY&4VT!!N!#hLQrlqm0j$1XUHX('p&G@pd0@eIG4EJ-VJLa+pS@G#m1YZV+
V8e(VY*F9IIJ2QV2dDQR*1R@DQ5$#ZLj)aj@)VMB-b)cPXU2U,ZrYdjL4R"ce9(G
$Tqkpah&9Ki*T651#ieEmJd$82S$bFJ3NjkVhVIJEmr*BYZGEUQ[cX")%5e,IK61
bUIjb`S!G`KalUZp$kX+Z[4Bm)rcpNPeUlqhcLqN[8[`)Na$13L4+Y*T`qIB21'K
Kbd"LFQlPP!HZDaJLA+!4T'`VDZ9DEB`E1djN9TMk0dCeMrGZc,I3IAiCb9FYKB5
&$Pk+"jQV05#CKH9cK5N@D%KCd$Q&JI0"K1lRJaTlfkIk)Si`D3QCRUS9CXaf2cB
Z8'`h2r3X#YLpEd3@NaCDLZ$M'MUJX[R6RK-lKIAjeSb&GHd@8miAN!"G@epMUaF
BqqdaXl6KRA3d&)S#**a2CKJp2-M(#0L-lPP6YGepjBiIYM[(Dm0a16%1K(M*`35
VRq+111XihHKJ)XZY6N[+P!+j9,SpTjE$26F,K#cKrfr+rcUeL4QjXKr!3&ZV1J`
P!Rrm"G)4H5KT9efML@9ce9`Sm%3Ui%m8pS@*r1i[('GNGV@2P")a$dB),2Kp4Hp
3U5ZBJUfLAh%6dCSmR*!!jbXmjLb(KUQTQE4IT0f&@"eTlTM8D6))BHE*6V!lGVQ
ibl$VLed'(C(H8CQk*c219lApPbI`r)C4MY`%el0F+D#2Z8%%C3cikHV3'q,X4%P
0!9Hp[0[QM#prBiTb0TdJLP(Se#0'j#rRc+8QP[E!LI`aFG)1llQUHSPqe3eLqrl
G[C90LfII((jkE`%@eakMkd4U1GJZJ6"AI*aYlYZ3!"@AA%U`PXNRSTR$S!c)dhJ
P"KN@%%j5q#1@,GTEpd3-Zc5Cj@-QTVP5S&@5bVC#L#R4r2r3)2L[PDC)*ST*ffH
QU1lqEcPQ4!j9kXHq"CIJ*#4blN5Bb)*`L9r*M&8BI`HEEBQ"Jl[4@ZQS1(!rjmV
4Q$4a,FrB#AqQB!MmE'@dIqYM)%hp8,@JNe&akGA`MlDjSRM"19&2M$@QXL%10G$
KcdXZ&JLF54-GMS9+16*6B+Arf6I)M8FIDpak'Fp,PHl9%!UjQ#(*)5cfLfY)3&3
$ZC[#[$&1@9S'[aQGbqG**H$[dFlK#Vc8LQD*le1$eD-lXp4,f%bB'9Z5,$Y[e5*
1ea9Fmpr(`$DDQ*[`Pm-r#&@bIXbjPI[f,5P"l0-AA4YDM+-d#8hcCEbfiAR5q2c
J3bY,h!GAZbQjbF2"Vpei5C8&+i+RNSM-BA,i,[11(L"Sf-GPU)kjAXq1Q5PS&$Q
I%,@jBE1YkkdeAA'&X%M)E`94G5EJSP`fDhB&+8M2+@m4H3!Xb9kFYBFXblA)pdm
fm#4VQX8qfQ1GM'V-,XMLmX'4@c[B5DV6,qh4e5mhG3)PVe8ScPam!pr5MEe'6-[
VjNXc[&0&KZ`H0#h@0LXI#UQ,!V`DImEca,,l4+!K(CCaA39RPP8$Qr!EAFI@X,4
S0iaJ#C&Sc(J*,4+@ALRlrMdY!,I4e+[G*JK*,ZqIM)Q%JMU&)N)MYMj'fX`VaF&
SReAKQ@EH9K*hCp6bV`hX!)@$%!R'@mR&,JNUeJRAhN%bf$FP&rN9j%-SSCL0L20
APiH(@(XKQ!AS`ANfp"GrYX6(PNrZ&qP1E&'PdDGhhkf"NDUSlHdYb&S$fjR+Abi
B6rpQr*8M`G#Z&Y8b[UF&HI(k#p+J(K'@lPBVjZIpf1ij84%)`UPm*`)`!3-b&I5
9hl-b#U`CNlKN90Y#,-`FP5GeAc+hS1@L!",@Ec8B$"8EM+Z'2@+5VG$M0`5FYUd
b6q`V5!m$FVTBK!$DA@apJYNS6#f&fjk'9Zk(dpSK"N8RPM+hIa0il%X(XELiabf
eZ[R&$m8dNYBq[rqNd#%JP#dAmZ$p*)F@PapbkCh)R,!-r+rl@mJaJU8kp@!lhLi
X#(Qr99c&,kBLmj)(SZ-4)T!!KQTLNA6)+0@+3VQrZ-,#AQ3I3-,fYlLe09(-+%0
D!DYE&Xp*kGkMfelA*VcrfR+q[F3V#Cq11TY*Tq6-VhdpGKmC@(@XE5heGkY`qk(
`)Fl+fY@JkH,PUX5ZDB(A5m$imhNQIKjJjNZJY&GNl2Vjj`RQ1qBlXA"3D4@4H6H
-3lKaeP@DPi@Y0h4!Ub)-m,PQfB3b@5KPSL&BI5%-f81j-GL$qNF2DG8!SUP'Y)m
bMUmf0hqmT)aMaeN9lq)Ur'U%M9XU@r1Ad2dkBMN6#9[T$B(P%1(4alPcL-4M'84
'$d[bBGdX0ERM#i*-rLVUAhCejS((L"*`3IY+4D4JHc4Z)9)EX2-MVN60,"pN1Ua
F@(-KmqBXfVaPGb)kSTLRV6@jl(QE(jQjp41Dijd#rBV$eHjR'iMh+#dK1m23rMU
qR!I8eHJ[-$2E)&CF2Pl5[10H1bA+X6!Sh0d))m3QKVC-'@GT@"FkdBM2C#ZqFaA
,CUSqJ#GdX6FQYbaG(1E@HX42"AF4a2!BKTI(8a%2$!MVHq0iL*j*MJSpA86$H!e
22`Y`"VDeY'9,iIdCH('Fc(eIf4ker[#KG3@M!d4*U36EVQKBZSraJfkU)Yp#UT6
ShQ8[Ik#mqrB',VJPfF9e`LkUPj!!4fMGk38PVCZ$kqLKJ1H5@`)MI&5Ff6%`eA%
82c,Rdi"ANj56k1D08M5BITmG3VV$[1kqF5d504pfNjb$-63XJJk9RS$Y2(j4($S
)9KK8qTTH)rSph5981hBE&rPf'aIZGN"SkI$dbM&VT%m"4`XLF+a!i8Q3!+GVT`0
V&-'`l&"!BV9GRr&fpYdC9[X(CUIKJTdZ*SZ3!!-+G96bl4(b)q&JJek2KB!&GYQ
a4&QA9[P#9CU!2krQl-k[J5$m-q0*CL"ka@!qQ64lehTUd[`aS3UMmEX,a10Ad4$
5GmNGh[,G55Beq$RVNV9,GmMZm-FJDmM5%SBbjaV%mKT!J#Cdb@DVdjIrNK3BRRa
p@XJcal%339KL0&X`5-RFf-im*-9aIXJRX*m(6UEjIba2M$X[UMHXU`riQ[rqf'0
0D[-1ZZrekNBf"'G3RQ0#AP!'@!`4'%C'bI63+H6d-9!'F#LPFNDEIH)a$!h&K2S
Z+9G@F,)6@8T5XQ8S',fHmhA`29p22V5!b"NL3jHERjh!jTP9e&hNS0[aVb*AT!D
Maq*1VI9K@KjmF#XprVH6ZQbNF2RCLZQErBPRHR-+[p)[Er38B0([Tmc@rcAJEHR
mYTNB&K)CZUJ@[Q+$c@@Cqm!aVGN1hB`d%`5rfD6[AK4c(N-$br*')`($&Xe+rJ`
63Rh65Ic@UU&FJDmlbac#f4U-UMeMdGNmlI5J$J`16+bDcL(a'38c9`0IeH*INKM
lSMJI,BL'q[,I'P1jbHVUUU5E*4[qFd-RYEqA`Nl&"`&hb[S%#VbG+4"jpU)c#hh
eT3*c,l&a%*AKb,&6#GeKZZ&$`ETljF1miNB6c!*"H0e9m!Icdi[FX19mHi%5P0Q
h&)MbI,BMp38RkbVk8mp8NJV(5G5THT*QEjqbm5kIj2RP+Qe%VP3P2R89mq3l'`!
1P0Y&hr0K*,AIfH%h"&4UXpHm)!QEfZ#+GG3Sf2HaL1e,GAjI&!VHQ[Cc,$Lm0'6
'@2rdI)5iAU1Ljf6I*KUFf659@kGBQm"RYfqL"JCZG-)hLk55)mi-FS`3LQ6@rFK
C83qKpbm,0kk!QNhU"5G`K&S!,S5XBk*q#"l9p(Kl)a0eBIUc0rlA+j&,0B3iL)6
RC'UfcZ1K$@qC*pkEqk53!)ApY3l((Ve-pH1l-ij*T*f1YepXM!3imKq!&XRXeNE
B(%EBHaN9$ZK*0ZP$b6BTLEDb30EP4`P+m2"(McDMF"PG%b14VRA$)IV8`S8q4R-
*$9`S,Z"8L6aIN!"`r8J)53I'hSBL60b1hrP+T&R#DfrF5#e&K%GY%'5elq@TAl2
L5V3"KZITmV5qAAF(lZVNh83U4mr*FP5-A'ea-fcIeVm)'f+1Aa9TLN9V&b!h*3R
B%3N)95TZHcU$+,q%be62#0i*3j)'MESr)"6pS*EQ$4jKXhJ1Yj0HLfSjfr6Y4q-
$%[[c4LfMl36qI%)UJ$&dbS0Ym(b`Sabh6$Z*0BrIaN%*S,*V9BLVQaQdbM1N`Mr
cV(d3iRhKi4!3I4EdbMS0XN98i`L*Z"MAl)05(#[$N!#Y-j)8K"c[bNL3!)pB@A`
FL(SF`1kepdAqRdIBph5PIP$`2R4Zp+&krmr(qm1'N!!0%UPY9`I@Ia3V'T2Ic[$
Tdd0$i,l(pZ%MXT8KRBdGJ$`9'-$*q+BM6K(6Pp3ZPYJV$-Up%LUf`&CZU!+,lJN
H3RNk6BIA#EPK$Dc%Am,IfZ8UeeJ,*'6jr-!0fK9mf%3aB"NCL-p6[!lBaIpQ6Uj
V(&2'KBM1lT@!PAJmiA#JLJpF3Y0bdTKCEK@KBkb4Bm2-dAZ0-%f9,Qj8f6iEU6V
5H2d'!T,cjdCY6%TDFMbHRefL8JCm@06SC@9BrHK6Mcp3HPk*$CFA!Z*AN!$TTdA
VaXrPi1peH*6DMqEJP2``3`aZ&(+FE6X%6CS#ICUHRj*lN!#&P[k&P"8'H#$il+L
CR+"MDU#%BKEIp,UJc2L@Xh(@Nr5HRBFIF2Z[@jp4b+CeU,S54d3V8QjU0VEB%IS
`$P[1qj`%)-i'MD9@fH90j4m'3J'*KAm1+dJ`lLhRD4d"#J@E#KJME[bXRmAN)$G
G*#Yr2N[0mZbb'kQ6aQAT5M@#JFCM`qZ!4NMd&[*MbjC1P6,hNP'#XVBId0,cK(l
ce&$I(CMkJbVE1f)UpKqj1d@m5XTZJ+i@"DZ%6jIqNm%GR01b0Bk%p4dLIE3ZS9Y
"Tfk9V3Uq90K-L3mh,8-fQ[(E2Pk-6m8A6p1)Id2(a"*`&T0YaaYN(aN5%j@9YIL
)bY[IR9haK0[(2&CE$&aQ0f!Y"P(&mJNN(5%5`1h4rRkHfE#XU(5l!cTjm9"8`&f
1db@H'a)PUYA2@AKYX#%EfpYGZ)Ti(Mq9GISSVS)q'XF9BkMUl8ffJ+3[++QAZML
MQ6#kjXAJrbGSZMcTKVqjd8+$9+bblGbQlZQ0jK-EiJ$F[%)5PLFF-c"U(`Ec#*C
+"c-f@#flp9JF[l@lP*6qM"HR`ki&pZS$Z0AZRm"bBFKF#A,m%5&6+B-RJllrB'+
Z*HZik&lKj(cVPhimReK2pK65G)q)ZkkVf)T,9MI0J"5Al)-BDDfD'C05GN`HhcT
e2rKj51ZL%-3)PJX61'69T8RZbLX"8DiB[SrH2qbE64baS1RlkKFrqcQ'K!Tbhd-
MYBRC21*NrD(V+RVr5!H56PZ*blFM6G4Nj5JmXY"8CKPr$BUl[J6G(T-H6U$1+P,
i*LRe,f+kkACMG#X5,mRFPb1b#Fp&X'L+2#JG[XT`#C`C!0BXULb,[$&$-LQ"YQ4
G04'rj5#4`I3&Gp8pF@341TZ1e@pDRm%rEh'N@D@Xd#4+k*qd*DXY2b%M3VCpdrC
&,,EHIK$YXMGJ)Q&L9UV+B8*D)QMPf%HME5V8EEc,+A425CAb@C3(&`P#Q`8dV%i
CdqG*9$1YdIpL"A"FN!!GS$I%cS#&A"hN5!8NkC8ISE(*&,")mS1!`i)@Ud'NI0Y
bPVb42qDDZ@[)d@*NdHdiIAI[iIecEKkXa$LM06iA+aIQqQM(&U!l,P6Z3Z"QS,2
$C$fYm%bcT86@c6GUlqAhhN*$)C%CB%F)qBq$Y8p(Q(LclXZ[3Ij'+6Y03aMlkcJ
dc!'`&5V(UEDCkQ6e'HF+q[$(EL`RI,Tp)!jmC,H3!(#85B*AArf4Ce9hqA+,R+0
Jpb+45P6T0[E@1"EIAB5C[&jcPSbA%h2h*B4+92-KP3C[(&I`9d)mN!#!+`,ZT,Z
I+Mm!(hc!m!UCRJqC3BadE@b#B2QA+,Ibp%GkR)&IULkFET+KSRD*jbZF`&9XYqN
%-fR-H,B1a)ba&$46fdUd6RERKfjd$VU`qEZJLBK",(RT1Hf'c0K6HrUi#qJDFkl
Er[EHhd0+E"33Ef0+JeQj8H3EMVRAfUqq8k!Tq[LDiEVcMr'Q4*'ICEh6L(fT50k
2&!brka8Y"C9Crr6DGBllq%QTJZe&)*%ZBG9S0dh1+VLiLRTe3*N19[80`i)%rQ0
ZEB"Gl2dH`flMdQY0f(dqp*10FmdQLDFC+4qjP'4*3pf5,,GE1&J4e4j5#6AqXKJ
RKkcFKl"`mKLC,ddF+336UN"GG'YV0"Z66LDj"DBE#p+q1X8M1-A"T"CjC!prV0H
EfmT$M@+cF%Bla@TY"BVGQ3mV`cb(Q0@$+EDkqPNZ)cmL45BP%6rqDMp2M9C+U5`
Ud&qc@856+Gl%K*!!Cc8!CqmE8UBpQ5e5ZeHG0m`RP"eRf2pm(MJfRLNm%Ac25)L
#2bb"9Mh+U(lILlXYLmh!&QHd"kl[Jq$T#EmiG"EG$L*Yc+l0r$0jGJ9hf%H94*H
SBK*(JR+p)pJbK#8Gr)TQ[+'YNq+Ddf+Df@i`abSQ&KiG!JTYRSR4E1)YQdiHM#F
I'aL%XZf@E)!fQ$pG9&B%F99*@f16cdVAdC+2a,E0P"Gb#aKPMlj%Vc)bQU2T`a!
)RLpi6GAa"C%A30&2+!f6,daF"41$!8qc1RjSNmY3p$S"8R)i8bSm3G'c%"`c0E@
5$KbT#M2B`"Af&T5aUSqkELHMQEl%1)B(452aN5Iecj&VQi*LBpe"J0TY(LRPJjH
%)c@42#pYf48JkDZR0l$'[11BT@ET&a[EU)a)E@Pr$QAeILYqpCjD)A`[bbeN6L-
5[)2eacKSAEpi2N-QJ%69Rd&Vh90b)k(-p$Q@rEUEZY$*GQMGCMj1eQ$eKU4kUbq
&JbNa0&1SqhIIY6)55%q9cl4PiHc1Ja`FG(kTF&@qa&bXDL4LJ#@pB&)0HK#h+4r
qc9db3r%2T6C+%ET1Y3$[,Q1PX-3KcRc46KApk2[KIKHjm4eC9T4HpkPJE@&UMj`
JHA14khVVRQ+Im,&&LV$!04%9E(,5q@&A8$4)9R*2c)XeQG2B@'UPj&LDDSA@mC[
FjC!!bI9AT5cMEl02ZF@eRVYPej8NGlaDCQJ[X"aT(*r-*l[ja#`!hh!%j,DQ3,F
,k53J@VeAhDJmRrdHb""Lq8k*UNBq2'@EX9ardB5CQU1d'IlU&"a(FR"iqYRm,mJ
!r+mbbb@+mrlNq"VXqM6AZMeJZ!Q)TYZD0IbkpG&a)2kB&KFA6bX(XfUSqReERiS
9C"5UY'2VcF101V!e!"L'R16(fbC5&+$ATfmFlhhLJ9K9bP@N))02Qj5Xl"XMYF"
b,62jNZqh!S&KJ*rC3a1DR*e)Q+a$bR%(Y!NbB,kF3m+p0VD#T106aVpfE"FG`ea
AjmViN8d@V'c2a!(9"AX0*GDV(QVFR3`FEfiLbdR6aDd%LR&DZUhMrZViF!+Q*k,
)2NZ)a)I$kP5BS4(e&""j&)Z98MmCjd6QhH9TDa$[FK'JC$1SM+@VLK66Id[6T@j
@%IqE&L!4@"2Ak(4rTR55P(&[4h"ZZ9,8ZM2NbV10F[e$!q3Z(b3bF(q()-T@'F!
mi[ir5(3Sf5Ma*(p!TB[&C'f5hh+MB-Si1`PBUDl,QCI4b)Dfc&CQkE$ZU4@aF@p
&k(bdD!HqpM'c3@pDd!I)R$MNULJFP&SC@bd'`BL&3'8D2mE1qUbqLrA%"+r``Uk
p8LJE)XbF"cVI*NZ%%laVYUeTURB(-+lk,,Sa4i0ZeSS`-R5IlP32Ap++I$ip"6Z
'J[cUmISTEYbMCU,d@$mmf@)r#iDQM9RclCPq-EfAFlCmCcf09TH*BYGZJ)*'H$l
LSZ5b6$`McJL1T,d$`mUJTSi06i12kENl,)ipI8*YXa"+U&#`IXYLk5,*i`#+YR9
H1pLr5m2kZD1ZS%+3!!dP-')e`VZif'Z#'d)YmT2)!pD@USE"PX-K&2Yr(20m(&8
b3E9-f6))'Pe(dPr(aX[M,e4cBBjZN!#84j!!VLLfXL@4hSe424A90[8l9rM0pa-
mBM)J9qSAIJIRVlDj$32f6F*+`L&aL`V$AUj'(JH0m)2@%bL,%SPmVVQLK9e``e+
U1)4NRB!,B'$Ej1F+MCrdCL491!2649+&5DL0L,(!6p$jI&#Uh$F6YZ-$$1M8"hI
$jRd@,XcNPGX3[h'aYT-%elRaQ6erjp,03Fe+kQdYc9akjk@,%MIIf*rXl!DPiZQ
k$dDFYSQfj9dRZ+5l68D&ME$3i4G-88#chYBUALip[@0DVYH!12"4!b(ND,V6E+I
ERc3kaEhrUNEP9b[lKF$M'DZFfTM1C`RKaLS)DKqE")ST8XjjI2DLAYQaSPS*mLj
#S8@$&F8pUPY,FmLPX%fJ%Rb'"A#i9#T*LJEZm@m&I85ab+L`dB!YYpD5ijBV*Xd
!'&'DQZ-FVmi+)p#)6-rD#kp%IH`M&*CS8Vh@HmlmHMUe6[r#R'l95B@"q[8S,L*
-!J#UX(H&DN@Q1r5fSMkZ!ICPP9@LLi4NVN()19i+X4P'IC4[b!%N4ej%@K"N0Fr
8ZC1eYF4ELN@*eiAV&If(lQ'HGqV)8E-QilF1[8c9Dp-cVbMDJYqJc44XMq&QfmL
)hhlFBGfS`kbQPqMKY#f1-dGi[b0fVIB0M$,`b9XbmiJ"C63MmCr-C8Z!fP)HKe2
@i$K*8A'P%ET53XC&ABpNZFT0IlbqB[!H6A`G$3CeJNmMA[m#QSUKa%Z$#i"jSJJ
%qFTSdFGq3M@lRF`4GCpRJ8Z(bFaXf[a-pb9ZL#0-N5qNl,J@A[U@AS9K39b,6"G
"2#5[q#0LA$cQ1pG`N`H+dHkk5F#0p$1!dBeVUSXm21-SAdVl&M&%L0fH$pG,&`Q
N8!51R!$F3QCAPHlS,&-hamS,jSUpc4[F[Vdmj-qFeK3`ja@)Zhfm(&e)h"(+3G2
YX'SFich`C6bG%%6lqM0+rIf[@Zlf4M0+e0kqra)8dGhEi*QFhRMA3!ha,QdI,9@
GcK`3kY[%!"S%d"MC,Ek,$Y&lP9SdH'K&VMG8#m`V8VRp6qrhcJ4NAcVNK,f5*"#
X#H$Ym1b&"*D@d0)X!PrT(TcJM1rCGb&#eEda`$GK"b5YA)#hMRMY6DTP5aB+4P9
Np,AX#%NT+)@*31MUQK5FQFLCQA6QXQZ%CDXIh3Qf%,mbmr%[*1!(aQ5G(EZjeiN
RHe9F3`(INQSFYad5GK!Fba1V'+UH4qkhEAhidXF05aI#4rrpV+A2T1DPS#!X55D
%j'E'KbSb2JjaDQG9IkQ03aMGq6AZEI9#JZIKU!k"',HI"rSJei9PY"YR),8HiTL
CG)2cpPXd#4%Ba,DJY[Z62*`QhjNSMpm8DER''[%I-fk*-r#Gka'!!#r-3fK83Fp
NRY,,RP##m#&VHHDKj0JJkilbD`X1hrX)r5e#+ipdAbGR$IHIEr#M(1T4C'Rf(%)
*`L["d2#UhGac*`VrU[DPP@"2k3`m8XEBa,6Np8djbP,EiQ3T`mm9pYBH9"q%Y&I
kX959q9MmAm&$$6X1Bfdi&-Y)Vh8SG+LG0-)"%kSiqN*c`*0qh+!YeH)"@YdJ)K'
$J5HU!G@UbipKEUa%qbTQdAaD*IdBGlMC%,KjP%$#HTQ+aMIZZ2+Aaa!bPf`B98M
9)9-X-&Ud1E!Q6k6l#AcYi#&HGh&b$GA69TV5K+d$k`d[SiD)k5)F4!NUT%Jb1e%
,'1JT(cSdMP'i)hG2bFGdkEpck11h"eDAipK636Gb-VH`2I5Z(Ji&k0MaijLilHk
%@Z8KqESBd"k$DYDbXT@HTqf"TQ[eb91%N!"@Z*iD4ae(KZDHhL53!!l8i-MEAJ0
fc&$c989',#3epHA+'3,a&+a1*b&TShb1IFQd&ENml-mK%mhm+)'+V(l*6rGV%fk
%(,m65K`',236FSiJ&&$!0b2V@@[9Ie&!p#je)RIDa)mZEpA0El3aFc`MqcdPpUK
[+K!Ri6jA0X0'$'qckm+ah8,j&Z9ekpX)`HkN*I3'&"iIBr50%j-+Nf6C-MD93$%
H`lDbURI4eQN4AHD%d-"3FZ(pU2rA4XH[H&Rad%d*hJmR1jJ,aRITEDU5KS-SjaH
9U,CR2)%iK(%qHAZNjk(ANI"*(Qb[hGb+pXXBM(E-f!l)Jb'5NmVIm0d3U0FFG#+
#a9-N-"5U`C8#-Di#m'VS1-rD"Sc+Z,CFTH&pL1Z1lXUMU()M'6kb-m6[P"iEKPi
M%92*BkN$HcC`b$06e&HGLX[J%GM[f1b8Zm$*RJ*PHTGYXjFPaR)0klCQYA(92c8
Y-"VqC6f8'klElT-*iYRijlIQ8FH6q*!!*BYH2`aC!SK%!EULbV)!0K4m,5BNj38
e4",aLNAfYLiMdF1E48iiPMdLeP[aZE@Y+DKqd--rpAMj"h`cRINf+H4mc&E['Y&
p@D[6p2lqL[dhQ4F1&-LF[Pd3B!3p+1ebF3hA-"-0G@8@@ZH[8lS43cSq6'GJ8LQ
lafN16833dI0(c+c2!ALq)IG-Lf2p1DVS#HLP!8#98$iJX3j`h$)fC%R21H["QSL
QMl,Ida[YXLa,%8$alGJ60IC9mG2'khd@paSbdbR+-[LQdaCUZdAa$Rk`L0CX@H&
'a,A0Zd)6-"GNL'U9b)JfDXE8`C2(*+q$iBLrlK2345Vf#B,b4eGb`1RM92'NpKk
X[BciQ12kS`4qiSI`[!6+U!SpXmk(2LVP+ATm[UR(&iiUCBL%[i@jP-JfaG6HF`'
p4I"NNkkdh!4d$*d"fi*)#("`dD8&#8'a(G1r)BjV$Z@[L1`&KUN6qah'%[)JA(*
Qm3'CNfP*,`lCM()aPb)*Zf+iRY-l*eYZ`C[T'mN,qU+h5#HH0AQ-)%HbXGHibjc
c@(A,[bjr3r#-Q')SYSmJ1-3K1`dJ`-d`cIFCMfG[pijEf5HqF&!MRa(91d`P99V
22H8q0T2hec$K1id$fL-3S*qAejNc,dH%K3*4ME93$%DJN!$K`*%V56mP2V61EZ%
TUBa-bE68EhkYMB2EAMYP"`9LQ"l#NKFCE003RMX5aLBmfK`4&#AHF)$A`E69ZFc
F28h346jB"&B'(2b&$&q%"aFPF,jH'%RM30KY'GBEK2Qr@VLJ1N)emJ@rN8@+(2[
%9e2ERQAJpG))+K[9Q&5jk3LCAD3"ld+P-3j#L2)`TpmDY#$f94b!bBYVc##(PU`
cU55bfL$)2&SeX%RrMR)A1mN536N"3)Q+IFSH9kJc%a1qV%R%bmMf''5G3LfG2hh
NI,aTG[L[P'kr--T!@#6aSP'#HA0!KZJZh@Ba'1d0m!VFl&&rAHhVD`*!``c#aVR
GRV"1XMDYaCmND`+8r)"Ub,A4d5SBMFXJ100A0XLd@Pp,Q'92pJ3NZr,EX#AS-56
#fXlab5c+i*h%h5"F)HmS`h+D$%j9ZCPYSqFEm2)6%'blY%S@N!#)m0%SU[,&fN)
J3cP1Z'Ce5Ab+FlRYZF3%EPRp#dZP()[TiY0S2`%"UV-jZl4*qR-4'[T,HrfbD`6
#A`4rVQYQT8-r$f%)b`%E-CUMmB)8XTFE2KED2qKAJKjE+UXQhdZT&8eHl3k@1Vq
YD4X$KUJ3jSY"+Gmb+9q80*p[Hp(&qC,,42*B'Lm@#ipV1AYR2aib326C%1XJ%0k
C+5mKE-NEk0ME0ZfQhhIZZ2aic(KT)G[N+D`K4##4`EpD4Re!X!L65EcMmRL29-G
BKYeJ"29rZBC"01m@0[ipZpp,QArhim,6plXBNT)'+V514mX3!A8,3P,BF)9Jj$F
r@YJM'R[1STEGp(RqML@N'-CH3eTK,A*S#1%JY6SX6ee!TpKeAYLCeK$d%0Qb`V[
BSM5QUU5!+5,4#%dmZY8)&X"iqK95d02ET[P2i6RBr%ZA-"h!m+kZRG@rMD@8Jp"
e2'`0*a$`MJr-6!reL%FS6YS)LR[lKTdZIQKIZ2V$rjcllPPjLfk9M5eSZT9C5m"
K'3#5+E94eYDp&j-e0m))0qJQICR(kJa$J(3M[(ah')0GT$MESqeYp8"pG3@(`8P
[[8lErAehebS9fbp1[bQ1Q`FGCG*93j!!j0`feTaQmHRGJ&M%%HK#BJ2B@pK#)GK
i[1cGN!$Pf($'f0%,'TEa(-TfS'Vm5Hd"1&ef8EZ$!`X,12eC1A4TCU"`(0ZV3@i
%UGXk!kIib%kM8aTYB`+%Q4#PrTHC1F,fH9mIh$2RE$GG1YSV`'$DN!$hIcA"1FT
E#M8(N!$mfH*&FRIQe4J&[BiFSSIpD(hm)U"5a5Abm9YcNb'pEjh#Zkjc[bM,r8i
c[Dl[U-fppIJIamK1dCKL`DjehYEJ*#-rf@RBYH$KQCZe+#h69l8KDd5r8Gf-,+!
X3D&Lh`-'@rb82qLp[4G[3P2K2DQ[kkfhqS[ENPfD4ZrH'fj22"[D-$00m9UETlF
YXQ(``c!LA#Vj,jSe'2GrH-NAc5$2+MUEiSYQ9'qC8m8N,ZZ#1'KX3FPbi)G-e6X
%YMZpC@iIh'Z$F`h+[5p9abb9A4J[GU5pQNl0,@N-a42mEK@jNScDI)J#T2,MXI'
i8cA2+@U(eq3+14)FpQJH#6X[q@@``'rd1#3eJYLmU#AGVLTCDh0XN!!*R(XC5"Z
0$#eZB+TlimSXclMq9A9[D3JeDSdS#BU+!4REDSJ[qHMb6653!"qpTFi6rT20%DG
hDmT(MjT[[c6c9!'#90lSV%e2*&0*[rS(5*KL24PN8DD3!)jL@e"+PmNArSk%$RN
2TU*@jc,HlrT'dFGbc1+$E&[lP'Up0YPjdUIpi`hQB%Pb,41E#N9KGml1#9+JmKa
FC"0Rc6TacV"$r0J'aV'ric$(-9V"`)5FP'Im`iLV+*EQqI&1T6I"0l'@,3-JCJ@
I*0`q3Sk,49m"h9',[R'KVF*JJfUdGLZC34iFKIbIlNU,cpJIQHi%X6ZZ&XR"&NY
XUDf(bPccBZhhl6r)PQD)1NT%Ra6hcNK,@[lS-6jfEc3@XCIe0dm8)C!!Vmem4N,
'8EKPmTAUjm9P+lkmi#@)dbr$Uk'UEBZFBMmb-`N+Y@,TkB*fb3ZHhYYQ*f,N5f+
bjeeZjQlc5!i"A6J&3[ifZ9UJ#EDj)"*Z`EHD++J@%p%HchXDc9k@8J5QNr3BE`r
H5Pdf-dR1a)eX(K#VcYCh30(#(l''bUr8Nb#pT2J32Se3ZREQ$MIRbF+FI)PSNHE
ZPjXRr2Gh%DIafB@K[Q9c1mar'PlF1C!!f%d460ce$G`r(V@*TVME10mT()LN2[T
X@Za*+N!8jeIR(9r%TdMS&"D1AjZX*Pj4QL**S4pZ$J-ZXhBKjK`C81!Em%'HF[8
KT)0Ci4U'iXaX&V30`akaA%Q)*18%N6aXcRGGkCL+@3$')&GX3U[3[6kPfZJ!HU4
5Y12qQ8Ujj0mSRN&6TpGpLlF,N!#"&#Rr4Cp)@QNDmY6TTLql*`"F&CCM*XbG@!E
mEVI(6(&*S)#IXE4ZU(U'!6S2MLl63H`i+k2419F4S'1+D0dqNSK`D@5HY-p3N!"
(r5lLNVqQ9RF%BQjA%0H40%$i(M@NfL$a4GpH5,(XeLqhh6AfhBIl@F8,$l8'+[9
I4eXQ!V%S2kZFH`#rr)R%IBb9#RG6fc*Qf4"0ijS`fBPB@8%X`e3l`P9@YR$JMPJ
E@Xc4MjDe"JB@N!$Terjja6XN"GQ4BJc-pK6NLbA5bc@`KMbNSUF)&Q2C82@Gf(-
AN!$lYH#%+@5SkX*B)+Fkjq0Hiad!+1Ib''5%$D"UqfpAf1(0[f,KZ1I(f&!1&Sd
(r)dR5r2dX[VS)2U@!0H2A6dGIDZd2Q1S0S6dp0M(JGmDb0'eP)$Ad"N)r`+8qdQ
fFafJG%E&kPD-p$qb*T9mIbdG$ZMk4T6ZKleNL4IeBQFr6i+QSR"iJ$qIc5APi09
S2fNMrCU-r5&GGHHKp'QP5"K4D8K0$E4$#c3#F`XbJr#8U'Ql#lYDB`S&!MKpL[m
#Vm9iK(J%Y9P(#+`VmX4jf-"BYS)505-rU[R1@66)kZ$I"c6Y&D#Li"E&VQ#4pJm
@"XIAcSS5X[lBU*BP)dX&Eq%2[SC#*fc!cYf`6V6C3KBN((YiZd!AdFaBJ*(0a&&
T&DbCS*Z8el,NPI4C,MACTE@'YeEdF%LXHm++$T%b&V!!L(U'LLKpm+-3VJeU%Dk
#9qHc6EqK%,hmb`RV3T59%5!GEi,8[@59+U5#E50CRhK9h5K+LQ`Y,HIA-Y$f,jS
I)&G0HYNCdCqG4H)JYI#d`D5pcMG`SD-EBcZqVX5+e-'!,-*lhpDVTjU*U9,cN!$
PE3fNaR'mNM!I3Pa(UY*+(DJ@XY`Ni9YpkI%9'THXS!bDM[1S%*FjQ#hFQRrNU9Y
%mf"-@FJN86qQhFcI,Z+%r'@HGI`++U5jihPq9XV&YUj4,2@8*`N3fG*[-Qall$%
Cq56&(r[bC[aB@RRLMMNA`Ac,*XQa[@K9I'li3[#X*)Q6mA+ar@F)FU3HmqVbL%p
Q3-dmq2H"!*S9d%&[S,0!`ZVhB(-Nb1d"i%a6HP$AD!J-AeVL8%*G4KKlllYSZ'B
RMelClV#Xh%`KeV@-h2PhBG4q*%jIf3M0l0kE"JQNdm2X0kP1a8IBj)DmF,eh1qX
brQG"P9D'eN(JJqEPRBIJ,Dh`JSql"%pNJrlfJ*-#Y!!aQ[q+"15+1KB'0d0M4RM
pDd%''l"YU`dSFcaV9'eqlh3mbL,bMQMl+$j+TpIKCAK1DS''`hi'c$C"*qpjY)3
SPSfrU"frDC2$#p*'r1eV0F0A`A6%ALJNIdSTiZUmM"i`#2K*ZVY+`BAf%f+8FhC
2#"1aHh#@IS9hh$*X62R"L%ffeXh`rHMrM#R&,jkP#qc*3(@*%9#[+R$@S#lmAUG
q3P"UpXa3YjRi[i60CU)9EB-hLhDmE"['2'i95cPRES$fS@J*e$KMKj)TH-bU#CS
')0+k3TiTaqP`h+,1i!VRdpC-bYU`L6&"3L5X*jrmj8*#J%S*0YS5[[kjA!5Nai@
&jhch3+LV4b,0ISf9L(JNH4C4EcfXQq-#%%idBQ$SUdqam!QB#2hCVY$LHb3l-Nd
S9i!a`)0pX9hj$2HCY14&LL34c@Um1S2k[6q"U`qLS@j(T%R,5ZH4b%m8Rba2l9m
+STC5hr'0[EPqe5$D6`3UkcR'mNAJ[41AmST#U%!cBXQ!DfLl'GN+Z)Q11"5FdF[
L'9&6@!*'!q-V&1`bb"j9arIbpU&Piq(M!GllK2AeAbb!Xh"e-NqcEHN4rj[HC%*
ThG[f$$NlFHBhkKdHa&FY4+4!i-NUj)$Ij[S5YAS%-XT+L3G[IM9E#d@2j`EXT&3
mR@iae!Y&!fRP'pK("!,BbN$)ed$M)IBH'4h*P9@GJA6&%)T3j@1-+cpG9BK(qGS
%pD1YqDVV8TrHXD#&VbYbDlB)h#SPr2M2pIL8NV$1Grjde!1rA#jd1"e[`Z59[Li
,b+!H&!FTqq2b@rj!H%63pe#qilTHXYr@(9fq2VriYc0PaI8Z2P[`#$0N(Sh,2fR
!"96X-$,TG$+63ZXeE8`HKYQBVlF38#4TI!9BR+bkAFD%p9aV5iKD8,-FUD"PM#I
pl,AJFa!8ejB)!V0bS5"r[dQ#Ukk+DEQbP`#Y82H9XSJb&#@CG"Bj%'ZaG%PfCD3
1h--pk5('J`C"a+fpAVjCjTD0%U'LDffZjhJ`YPiUqN,6R%%YR8L3!'i*CC4AXkB
,Aaj(P-VBSCSAM`+!6GkJfJFRTEVm1CX"4`iXCbeX[BSi[dGpHP9RqE5bcQi,J&+
!(q1Ll3NK++QAq4q--V#1,[fS!H-+U6R6j5ZRL1DKKX0E1Sd[Nc&HI",B+Q$f&TC
jUHdleNfPMbU!ST5*ZG+Xq%IACXm1dRC3Rd4@(0R!(D6eH(PIkQD934h&5)'IpS-
3MN+6('H)U5'd2hN["qjQVlUh1cK4Em-`90!j*$VUH,Q5rdH@$hhCd4ZEa+H*bF*
kHY5EBpqP"rj@aU'Lh*[&3iiDJk@@Hf$kHLH9RIG*P)V*)BbbMAB(djd3U4$8"[e
R'i#j2[GUlf%LBb+-amYJ*TmM4!X0!54r#*6KQcFqPJj[2Y0AhQ2E'80dP11H5eV
Hk`NMqPFG,E53!$iAX+*eQ@CEaS@`PqN+I)XBMF3RC[DF'%NE'jaIU#FQH4dmhG,
+"LEq$m`CLe!YKDI9bL8-B)rGf0fi!mr1IS[H*j!!!+[5FZ)8[lRBY8"cMa@Q$e$
TLXbS(FXQ'$pcjhh`Aa-3cki-NYL()fqG&SjXQ2[`2mflI%)rELqZa"RQ2#QX,ff
!q8XRN[ZA&P*dd[PNcG1-GS,[*Kea-d*Ij"85BYUU&L6q`h$K&SmZJj'AAllAlCV
&X1FpfHcCAKMP3*f9RVqfSLETLpFPX'e0JRKq$paIMP`-'prDLFGl@ER$Nmlk2[C
UKMdIbqI@TqI*%J["CK(R"mdY!Pj`cD03Y)RH-T6fTpl*j203JSq3!-Bpp12BUAX
I4@$p+qX)q1K9ZpR-3pZD,)j6F[C"j6rC''F0kYcKB`2Y30T@f8,0L0ClVBh1T)9
r$P+a"AB'fSJPi@54J$k`qLP9kl3i@Gi1-*6`c(*KSaZ0`9N29(kIf4dr"q5HP'*
A6#BRHK9Y6P0dciZjN!!0C(XKQ+CLd$T6+2T$0+Jf+Ym[+"l&jALApVq%LQN(,8%
Q"(%r4Z9T[&1kj@&$V'"C`35[i'4VN4ifk2iV"FUalm5'F(J26bd*%fj5JT'eLM%
#f&YL-HS*d3)*KG#Nf@DN6q9&15&QcA[28'J(RbjC1XbZiR5RZK%KA&R-&qX8(#K
AcLE&EHKHVdN*LCAk'[+@`h[F54Y$9[,"0K'i`P6(ad3QEe1&b![!eb+,5ShaR'$
"pMPNqq2KZCe(Qfi6[T303ik)Q4R0Z)"EePh(*P["Mf[*0"#IKPZJ8cYHGmP2[Sr
94k@4TD9UT66ETZbQTX@#5dQqIMcG8Dhq!rAq6m,#jSpHG5pA#c5%efG*+0fqeiJ
YDIQ*G#dkhm*&-@JV[K"$-6c#mNmYMMU$"AFLAl`hJR0*@+N"1UmcL2'-#mDR!M6
DIVdE)8P2Vk9D%ZPHCQr*-HekG$m4UdNV4%)a9Rbe-iP60EbF+VQc9l%66r)6Vf[
*&SPQT$3$Z[&$%!6,-+YQ6rq2I"[#IMKf!A52J5Gm0X*`FeCmmQTVrM3eLZX)Z8+
kiZ$PVh4ACL*ACUaIJ5Y!Uq"P*d1(bBB%%aYqjVT+S6!31Bmb[Y*Yam'j`AJ6Y$%
0i2M3al!%0I,4*mm!GhCTJ8N,K!lH%)P4!S3B1f63pjje&G&KKiT,N!!`%BS`P0T
`A#R%K&X)rmfe'@TXk4mf9J,U5HMmD$MY,,kQ!SZ@ja('MEBB@jc[GfY'#F9`Y2U
1-C2iqe`r[4Iq6#T%Lk,lbb+GVp,GrmAalFB#k"YQ4,Z2Zrl)L+)l[ZprqVb!DZK
kZ@T*`mr'*bN34"b[((AjUN)[`cdBXkqllHR4B'P8p4`)Q16I@&-e+Q8d*YSa@X4
d9(D6@a98a6CV#FL%$!cVXV5JMjEfJ1CYiS&*pY(6C5BEI$V42q8eQqi"dX%jK$m
"dpX4+hijC([P2+Bd(I[+Y$5qiZS!RG@CDm&i#lrJqkRhqX!QUSR1VRLE$mbp$ZF
Rr8l,A)&Br"NCbUEM&QZ-CrmC@mF2%0AmpEe8f12ah)a6kI35D'XpLm*%N!$D9Y"
9"UN$5J"de+QQcf6)C88cZ8NVIHKkhhdpeFmhS&2Rb"PhYJd2Qbj'E(YcBHYB8!,
$p(qJ"lfST5S95EVH0rerQKc+QXQTe0%#X%MYSZ2JYM#J$)0i0ldSl'"%b`jdrK$
dmNb5Q+fHlB6`[5LDj`0*B@E9*)H'HQiEA5MDK4*0E+e)m[pqCT52)a-E%U5`e6l
G$c%$(S'beB1Shb@DPe@e465P30@j%+&Sq+8MZIcbcEHE*fF*LbHKDc(EI-LM(8)
RdYM%#mPi84T"de`jh[(Tdm2S*353!$E!Z,c)qdE2Vm9ka5f(VYKmCb'P()r!6G'
b%1FJd2ShR'U#"bE4mrT"*Z)m$maVRCb,h"$XfXdrZf)4dF`)!eJSKE4iAqD-)'C
ThG`c4FEp4MePHq64dC&Ib!jfP6%SpB&iU,pHk2c@A6LLijePbAG&54Rca34Kr+D
@pJEH,Xa&5(d"+J)CV0U@F@kAbQkK`lE[rkE!NFDSlBUVSCl5Rp1DS&ZJYf*kK[b
c!@2GG46[ZXL#SYdGV6Y$9ELZS&rN)CE%lCDS*0LPT2&#KIh6*ppj'K`,#+bH1N4
+hNIiNFdIGpAp(VII+qmH5EdhGBV'r%!LVUh@)01N8B!NZ1,Ubli&jq*p*hHKLp)
did`pb3(a,k#&!5SUM`'BM2F"NY+mH(IX"!*X"CXIGJi')bZ#cfqC5Ml+pmT1G&+
941%K-QbPc[Zfd*K9#Yb@rapelSVY!Y2GJj0pL2kSiPD!bq'rG$cHr"#3!)cGjSI
2b(H*mJ)Q6@-l"%rTUNQci(JRblM,R@)EJpc[0`#(##aZ%6GklSf115l@%,GU3PJ
`Gj*NZpT,Z'iLUZR$4)@rk!$2d1#cK*Z+YSKhG)M(%dQH!8@DZBd+(qQ`!mVm`,m
e!5BrI+-I`BS,fN[0LX,ke%MAc&a-@C%Se((#Q4B$G-Li9(A[,RLCPEC&p8J8Z'a
qTTl)T`Urb5b$I$[F%,Q)08Dm)cIB",ST5*Gk)(kq)6%i#hUkIJLBVJ'E$`I,dHC
fKm`LV[k-rm6AAApY'!&X9+Z-b,bTXKYQMZIL28#m$ClKZK5Hl3`d4$"a#+*5PM1
G`ka59#89)[%e%Y`Z%EBI#dGJTe"$`4"bQTbB5P[('RKkdU"65Z3a&)FrU&EQ`p$
0+!+`DCiDM+M!N!$6NJimr`&R5cje96(&0qNh)%'mN!#&T4i'R+qe3QCUEI!d1N3
U9*r-P%QC1h$a5!#3!(eVKcr+!I"MbkdrYlT*D(JqV92hD@*QJhQ@4Nq8NHRbA+`
44VjFXhLd(8fNpUHVUq0aa('aaM3QR#U`JQ@iSS&8cAbf)%c0F2F99k)'%qXL3dT
42h4Ie5PNfcXH,D1'lakScrUd'ee9p"B%$Di6YqB1,j-YJi*aDN88(bXS)5#%i4*
@NkTH@45N(rUZM"$DhiE0pRDJpE@1CB1(&IbECZR,-b[BZKNTQM0UJDFbS$A2LCM
*%0X4`Qm3fkDh-42,NPK`3!&ZFN3$hejjRh-rQGmbB5#9&PThX-DV@YiqhcmaZ&J
6JE%B-@`!!j1fUaL,VLr#Sp8adDHV4*(#NU+T@D3'%"YelLTX)4J#$*2+F(E*`QN
kGU04S#*M*dk4MhKb`D2NHpJ88+Sr`BYB6MN#ID`EZl"-2kGEJ(1r$mDC[mAa'!j
%bH%8h,d3$*H,1Cal!@B*b8e*fBmap4&2GP%ESrpe0"l'Fc(`!FCh"GQ9$dfE`Rc
)CX*%'`p,r!MX13X8(1$Zd1$NXp)'0%bX5F,H"8IpXcQqqfT`H6@e'Be6#Z8AkfD
6bFLk6K'6ZDQde#P6`"f&DUj9$Ud"KJjdSA"X@eKp-%YI'`jb`YM*cZVa4MpIPk,
q%fA#2Tf8*JLV'@h0TiLDB#FK@5rQZk5'918EEh8N[M`SlTkcH5)rd8a'(Q,KH0G
FEQ*@3TF2,X&r(e@ab'C&R2p,3mf$@H1"#"ZCSJHN"Pp,EHFa#hZTFSimCpXa!Qp
(48ZMFMHX'SJ-QI(1TMPZ0L)#f6(*cMl5)E")FK)cZ4Kj)F'1JKiX9+$qV#0Fp!j
$mfihcafjdk4%lM+l9NK*a$#GZbMHpUL@FjHZh!+r"IFJ5`0,L2Z6XCm%EGZcr+L
U@U*cBqr*l%ARERm-a#V3VT1pNkUfpF$#hMYqJ0K[mh3rIGcc8S4#Kc!8Pfk5X4c
!hjJK0KhK*'0C406-rc3hB,eMJC*5Rc)pAehf4eYR*[f00q9cIe9el'dGEK5`h"'
H6jkr`kKb*F#R0#AIHKA1mlG2`rebD,lim#db29rdre%*-c`4MMhkj[cNFh%9pbp
RG2KAD[N9b+1c9l&KVceU82$hq#$(EX6(2kbqK6e"G8b8BK4`,[pGHQiYj8*K!LD
3!(RK9lqVcQ@&dKSXFf'LT+rLcS%$bCq2Glj6'BB2N6X$JJZ3!+Q[5`KM!d)Irqc
CmU16fe,`m2Y"ANap4db1iT!!"p05FeP*eSdBA3*3NVE,j,K!&TCbcIJdLG[2iBN
58S%@[4Kf$ci1rHR-N5fM#YK*,EbXZ-*GpE!H%&'Vl9QX5)lBha-E`MUVG`%SMMr
#Th-K5U96C1*#IE,bc!eTcJiFM2Jec&BS'X8*I(9HC!!khrIHS%d3(-$GdIp2``L
M04)#b3!-!MbX83XQBk,Xdem&BfHFGr)L!jPY$`PdER%PZP8#YEq18VU3!$CVIP1
+$bCSF(YDF+0i&B+l6Ua*1J$X9B"+ADB2$[[fS$eBI$6m"G'QJIX)#8ND,%J(5G(
-'K(jEJLhjcNM0++eUV(d+`bC*MhGSa2(@M%IEHU(FaN2DYmGrfET3V)NTp*Fh%L
dlq*cqmC[kDCp)PXEVQ3[4SjZ6Q5L$rX")9@[EcGd3Gr#kU`'bURI@VD00b@d+6L
Bd'3mENIRhZIB)3deaeRTZ9cVVU+"iP[RGR9k+Xq@EmfEZrmAHG"rP9eQHKGcVaF
JDk,X,6#XpdmGeEGD*,4pF$XffbQrIF0SP0d90L81@l8+)!K'hl[LL4lrm12rJ-`
pk"6N1T691r)l,9lS%`IR%Mff)QPjMfV&ej4Y0+I4cfT!5FE'$!#6DX1NlecX)Hr
BVebl+4+lpm&#HLLfDZM`455(+pYc9JA!6i1LE0QRpXQi#T9%1)R-B&@`mQTIX[A
5"5h1UM%5h3ah03NNfU+,G8"1+Q,%'0J!CLV'5HaVJ$K#G&,PN!$GNZrIJKj!Rj,
NHNZG*'(Na-Y6XDJI#+q(Fi25Y$-$lH!DCRfCCfcGB-SMEEaYQLbmZVD'Z[EaDA+
i$m5hQXT6hmVc5kQer5baK"pJer5-QJmcLm$VpB"%fB5j*4im,JM&Mmr&!BXMmqb
a8NkLPAlZ4QDAh&5J$*5qic20h9[N[E6%-1RecbC8"UCbH6@cmcFie[a--,bUC)e
3hICaXJ0Pq&NTa*X)5Z2PA'[$TS+M1dSrG[@mr0k0#SH4)dV&hY2qM-!#QY2VYHM
IA50E`NqA621AMm9H-PerX-`fVN*0(p%@f+,*'TrTQY('58le3AAiZ30-r-bCRdU
&ErUHki[qXNDXe@Se4PEk$k!EXqAJ(KNQ,!BUQql"JM"KdA4Dc)456,8CMGe"f!@
Q!V9N+*mfk4HkB8XQQb3'QbZ6L5*KH[NN3!JX*R&MC$Z$LfVpiED"`ITSdYZSqVA
4pU8NC3jPRX(ZqMP[EXc-%e[hIeap-QcSV'('bJ4F(B$C#bl1&qh`YR'-)*PcC(Y
dK"rf1FFIVarB6B2f+[Ke"2a$2"9cGdlllP!J-+pD$KMl1-HmIqV4HFq`(%ji!RE
6Y+CK#$((F&KY`Q3JAK1dI#9Jle6JA9Uem3d3pX)Aaha+p63laR-4*RFE4b)IP'q
!31%(XXD,&Vdq[3KXqqZd,cb82P-I(lQQ0j[&53iAj`l[XE@Y(a"jS@8%$Dlrbj-
@m613!2-IF3@'KXl+1DV$q1'rdIdTXfJ!YBC8iZ,Fr*884Y2F4(H6,I8-dD'QeRT
X@qFiUq*"e0q!Q[0RH"(a6R-6k&"0r8LTqM!#3jMZ9-E#56EVET0[5($#!IA&`hl
r8h%EUD(&l,IJ4PXbIjXi$,Z@Jpa,I@hbLEj)GL8Q49UGIppijL0`9NlVE5S'4Ed
h-BA284m2ceViT"m2$m%*EHi1Rdj,U`hJB`"RT[+SSP'F+R30)f$0r[pYG,R"h96
"XH1'l#LP6*%&$#jLX%M3c1F`LliY`aQlB!R(VNq&`VCU,'hJ05k5D+NB$5k@+pk
+*A'!B53kLG03QKDjDUqCJYEAk@2DVmjrM0i@)U+[$(4q+a-hd#d%8f)4haE%A*Z
0--*Q!hK+@%qXAQM%%*pka*UV'fUBkk%P$#G2Z*hl"S3REiCkTJZR'58mqG'5V+0
Tk-d"ddAX9XaX'DTS*6VPmcq51e$p1XLS6$LmXJmDKB$mT'KEZbF,PBF+K9%f!J&
0"MU3!'m6E01p5C*jb)IfU!6m-'lMfj+'"FB1"'604k'5pZbk"JldbhQb&SEA%[1
DR,ADRk*f(RV"Qa!&CQ)Y'H*kq&+f0U0FfrVP-TbVQfX#ejG5ae4jlM*%Y[dTGc3
5SiS0[d0N$V!Lk)NJmTUjdbFF"QfAN!#VP5"QC-T8RT)rNqf2SZ"f0K#"SMi(4qD
*`e6'e36,'PHSA5[L!pLPK*d3@'IBDF8Yk1EmGVQ(()M!TFMU'D63HbC[6H+`c20
aJPb*BS9QX9[UNj!!p#GhTHY`5'B,-Iq8Mj91!rNf[Z,F'k!1kU(aT'3M1q0cYp6
*@e!Jc1q[$Rd,pYmITbc,c8edGU(Lh&q`iH0McL@NGBerI8L'lThQk9-V%C@)$YG
,eeKS1kMZ0r4+EB6klp+2K&@CSPTkTc'5&Zl()1Qcmh%k&l[rdcAeFLp5"9V#0$,
f&4`aI+i!%Z*Rq%Nk1-35q$TDB[ZcFD[6PAL5U9aG,E#p1FRM`ThRA0!!h+iP"&`
I9YC*k$0J$JcV3A-Np1XPJQ-L+Tp"R3K[0pUi$Icfllm)H(qmlhVLZG#cCmD,ePP
$[PEib9+!bYm$-$+Uj!+)'ciPm)hQrVZSD2(PfHNjII@rjDBAh%ZB@"*e&jZ1rJh
M8Ea28,Tm3aR'aYaD1G'bPaEVKdkCE8@eU)cipj(lX2TL0#K)GIiUe@L0c9@GKIL
eV5+`Z5hUk3T"`c&mkp$#bNp3EGf%!JbI'CZL0riZ0UFXHUYRbc%LJIYU9JNYk"A
5k*cGmBHp6S1I1M1cCT3Q3Hh0aiei@[N*f1eLd98rRTJQ%ZZrfA`f$l4*kFc2qBN
pqCp34Ud,bXh"K-m4f5%f&8MY1XGU)c3rbmKPplbN*(C2!C!!q-bl-N&LUkkM"k,
P)bEX9E*rLiq[PB9L'H#pQeB6rN-UKbA,kLaRde(-PScl(N[[Y$qrU5(hH&d#A#5
TS[F3@TQ20VrU91+&"E18@kXkQl$Lfl@X9F8(#RImKG!Xk$[@d-!XkkqQpCfP8BY
!C8[1+9VCX,+Fh0QSUb&163ei4FJhhIj!c4Lm9@qf!(QkbY+!4i5[ejjFJ`p54(+
Be($m8-0`jfjNI`Lk9N5[GhSh)%pEA0c,R8*B#*VbJL$H,9)01rim'l#UlI3cXe`
%jKJhAIe&3V)8lSZQcY%)NffY)@KCFKAXFKcYd6m&a-E#I8c5F3[UX-HPP2,Z1bL
Yhl@NQP1jpEpi'5rYeZ6CpX-MN`[)``6@qeUPcfffqA8Gd3P6ZZ5!&`6A3'iaS6+
eLcLMrSi(A@k#'Tp(FH[UZBI5Zh,MZP$9V6HANYB!XcJmZKHjf@DRKdR$dXNKma%
RQYPE!F4S8,RKjqEGScM0h(TQ%lfrl95aQjJ(#,NUNPH-3rQ*%k[N95E2YjHZQ2f
r#iJXVVF[1`Q5EkD9fk3&I9(Mb!01qcr$qdhm!i5Y`jY$&+lLeGah9KrYc"2YCTP
EXK4(JqZIhE4X$G)(R[IaQ[E)93a@0[F*r(H6cN&'bFp5E[YF&L+k6P6B#ZD88%1
FRQj9+qD61@rrGY&c6&94PpcSHK8)AK0T'3IU0c(b5dRjEKH5)8APe@!aR`i@15i
NMXEM099Lf3+GfKc63V5CdLH)PKTEVI4C9LGU$e,8&&M(2aRrr)8+@T`P2lK)fTp
8[Pd(X[H5B"U`&C0K#Ehdi3CBQSe*5)V[FP!KZFDJQE69#"R8BaAk-,NFVf'#4'Q
-NpbXR0ABMY[B((`@`"eGE-YqQ`&%E*!!SP,Zf"kLKV,6Y+F!cf3Tf6`&p4p*D#(
c@JYTd1b`0i#k)H+a2q)@$-JV958UkPb!'GBe@++2,*B[b-JY'dXY6eqa9,f5TPR
E&UX-2G+f+M"8`R@-j8%EL*JdNLBAPjer%D95!MGap-Z#+CrCeHNL6HI2G%!aLVY
18YRck,8,H9X*d"Pa@65R9C,aL)Rp&+d3r!8&6#jU'!KT$$fS5P[P2bYdf*I@p30
-S4eb!lb+El1)5Y&-YrD3!"hXIR5LPrm2(*rq`KM--G9l&h[i['Pjk,!j9p)%1Dh
1[hU'pKldMU5XG!#Jkrk"&1Kc%qJdY3LqhDQ`PZU3!!%c4JMX"r)baK3#`&3Nd4`
h4S"3d*Tc!GAGTeVGdB10ILD`#4*T09TCq*Ikr#CE,N,C-"!,09AMRC2reEPNZha
NM+*+aqF`Aq[XLI("5@0QKiPrI%@Z)S9GT39IN6C"fGr'$r+r(BC51RJ36L$!%cT
FHi%`RVdrUBLMDZKQ%D5%pha[Q!l9$[4V!XFh*3mEI)NlX`l6Uq%j0I(i1Ld5*pa
"%`Y4TFX(S2B(3iG8k3BGaMQY`Z)32[A58MF4dSK@h6XrRf&CIH+E@R(M&&RIdam
JP*'CNB"FLF'U9*!!LCE11dA4CL&"19R)c4XUJV4Gp01i9M%dER#"(dc[+VI`fLe
-F3QUGYf,F&0mH9'EN9qY3*ml*JrSH$Fe#ebKHY3"cN[AP(8aGj@*lJ30JQ0X[$V
(qMbV05DhpQCYM69bJDGDd)K'9H@m15EDelZ`[4dC%j!!l*!!+%3"6"i'SdB2(Pe
,Yei%[%hSX4NQ'ALVk0Q93k6mbrH$dRL'cYM%%`PF1USf'Db#r"Yqm"a0iXXa,*'
r6%R[3AN3EFVV@8)`0c!53b6[`*e-4db5DQDk6CdIPXiB(PYT#X66`EKJHpbJ-p!
+BRI5`559%&Z&RYfl5)4cbf+`#&VF"3I4(k4%hP6Vh'k+fYLAr&chAZqBYMNDl9)
CZ6CFG59ZH#K5%pbV,rh01k"*1-ZB[RG"JcfJJR8)Bl8Ci2+cd,cQZM5ZB6PcKV(
*Ne+J3&NHm!TEk@6d@Nlp3d8A16LBl,`bXYI@EZbEcHDj[*MM$@e5eh'rS!e"Uf!
5%6qc4&BM(+)SAfPB6XMP'f(mrP5$4Jad+i9ZQC@X[*5q+6)e8RL['B)'AHrRa&3
"ZRbb%ELT9$CV&BSe*c'K+Y%!r&BraLT@H,BL6LlCdiMLk#mZ8T3ZD$Kp2#%KGc,
,Ze9qXE)Jf03QE34Z)5JjX(DG`Ub%V4U3!2'*8KBSTqd*S(9P#%6$52&#1Zk8eAS
d15IX+aUDLa89I1SRQjl4J52MpmG+S'dZP4q!LQ"4S('(@TX8prXUlShM*Q)")&E
+4VTpdQ'8%`X!HI35"a4j*+EC%fqY1@Mda'1ZeC'+8DU+MdqmiP@Y%p$G1eKclPB
+GE(#9mGJPG"6BHNf21VlU42U*Mf%)Ip(Yb83Dj+1%!FrQT)&Gl!F2qq@-b&8lHT
+QXY&3+ES'hb1hBr##B%E1LCVMqp"0Hm((6*YYb5&0"lP$Y%AYAqE8`X-CR#hqrb
&%LC8%h0ma8#2J46-UiDUZTJP5M*mNicSAq'QP-R3*DDYSCFD***$IjFbajm+H98
831L+#`%kPTjE,+S8)`N3%,IdZNl@kq*V*!TEP3YqKbEP$6IEDT2,GiCU)d5%Qk,
q+Z!kHIZ)bKfH0Tb(E9U8YZcM')kmMHUmSDK`da[M$m@d2q'D`k0kh#R-Ipr@eHL
Y3kq5X3AZ2GD!NeI*jM,J(a8$!hrk(M6+J6b,ljTN#L0HJG[b0`pp61b[LZL6Q`3
i2HSM,F&Hm&16@DJ`$IV``afED$hIimkHH6C-f3VVbI!KCXpJ5BlkRB'aDc61#kL
NF!9$rFCR8a3P1jA0+d))4r*c13maR$D@!+VQAVdSCM,56SbV!*+QQ05$k*kqV*(
S(NqJC5L25RX8(F30$XdNH`&1EkB'G)!-bb8Xb-+dc-RFpA+RJr`Pj6qKS`mb#`P
Q&CA'RX[K*0&5md1TLLfN-N'MXml1XB$9kqq3!"I42@J8LPfa"M2[V4#j9I0#&)a
m#dJY1%iKJQY"rI1XEpkpTd3E(2Im5fSLJBYdhS*V%HrV@(@Nm9KFK*ZAFEehL+h
Nr,KlI2ahf$'dkqq(aTZl*)LKZ$DE6E2'f(SA2HB,&6[k'#pK&#aIVQXdHm'[99Z
@NG([BIV1G`G@e[F8+DP"RP5H-@6B4)&r*"pLpL*A!Z$A-@Q%QLM3fV)6idPeVN[
eTApP+VJ+iA`mY32135@9h*Ik&E!Z'($*X+(&2TUY#XAYZBPpB*F(!d!F21!mXC!
!@mJ@YbRR*S[Dr(5'@)Mlb%(fQG2$rMLFX%"iEQH$8C-+G5K4KZ$Ca1X,+MSTcDK
NR50)c4K4fiqBCdNj39N$GZ[9,#AQ0,KLFJi44qIM54r%hEJD,i@&8RdA@R"9ma'
q&9$8NGUicF)9M0m8&hmY6I)eM4mHLA+3!"8BVNhaLD5`BBfrTf)3HHp*ZrF38U+
"#jAM@#i"rCrYUelUkI6HZdbfK"Q3!)"#TC[R'PK6'0PjDkKH2qB2fjDkp4H@!c!
Q"+SKbCViIbA%,b[19J6XBTMi)kIUD`+r"@%E"1NjiDZ@di-ddR1@B@q5"N!kmZ+
2*C!!l*-bq+LI(d+Y[Nj(+9"5MLMjTVaEASB*+jeqSm+"4[&h$,Bd3X25r)HkbA4
iZM(DH"9Q*pR"S0i46EMmV,%G2R[lMj,AXIDbc9NNJmhj9S!15*S15c`!-B8VEBi
85pZR6D2FKG$*&e,-B[#5$[T+fP[@40V&jQ&Hp@SZNA6X%mV[J[*`5ZXXRdcP4Eh
a5[2Phmj+RFRT"mi',$Lkrm"b1QL@Rb8r-KNA[d0+R@,T[HiSR9cLlIP,kd-FFh8
6pT-M@5MMc"#J3)raJeiJ9rkDT*0J3PZIbhRpQ5!YDESc`M&*2HTA5+I(f04BD5K
mCbC$C*laLHL6U!KMXrk90M54fHid5Dehi)U1QJh%eq[PIUFNGfEUBAK%EkD3!-)
2amre%rD-*NEN`"FiTk$jD'5kUR9&jlAF69$F@DACBk*Q3Nf3!%-fqHc*V@Uc,)@
qe9%fX65bp5cVSV+LJ8qrAI(360I)ac2Tcl32)SN2-FdeiX@8pSSi4`b&)fi[p!Z
$MP4+'G*qSm'Y1+reQ@06`*A)EBi9Hc[rRKh91Y4F!"TL'2UJp$2D1BY$BKVK$'0
lKl(&q3JG,[[[50Lk8jeTh496TP"#$+eY8`41&05ljc[L,9MHYri"N!!i3pQ9d9)
k$p#D0SPqJ-aFm)Za$Nr3d,c@KL+KIi'1`4hNAmd$q+N[fRM*bF#-"ELijFNk1cI
9Y+LME'S%k#lG1%l9T1#T#632m596R[PIP2b&mmQfmh%*-2#VTH4IQ6hj8-SGNkE
`lFFb&#r+1880#TiLVkQ,%RZme%T&HB!Sr52i6mGN4LUFZ5JZ'CfjrTT%0Y"I&QS
qVKf*"f#V`rq!QAd3TLp0EbTjCIcP$3hS*3)1A"+"-(bda,1dJ5b(HdH-cU4c)`9
hI5dUK(ff((I8C4V3XqaQ2"RN@F,MGB$0(+#+UZRrCGbq!#8LYSb2bCGL-djlAYI
GRkU@cD#@,QeN'[ceR1bZ-#+`mB2km`8bmUqi$Y5rCmT(@&5cI,a#K*1*KYr`qKR
TKVqdXe2AP6FS%bMmf%[!3bdhrpEmQ!Mj*(9LJmF6pC9`9CFI)0'('#(#+2qrE*b
HKQK`310%9mr&q63!FiKKqq$GE+9b,+,%M0KULdI2E2(5X2CYUB5p&90a%ARjJ%A
+rebC%[,rV[KlIa@K&&fr(2C"$ba%eUSe$&HSYTj(94hQ9L(@A%843J"kU[QAa!p
X54NqRS9+QBBDGF&-M99'JrN%bq&GUh94eUJjjJ-FciPCQ4ZF4@!JmUP9c)U@YKZ
Icd[i@8DkXDAplqAiHDAqQY0#(+4-lkldGE(hS$Y[d$i[JT*2P'IS*@He6$C`B0@
[CdYE'R!iqT+44*[KDfU*2`)iT021VBQDF'5!@c!KPZBjE$$(NJ6PK,1i[1eejAm
T@NNE5qc%883LJff*5$DjI'Vd9M0DFfq0)h2m#5#4XSHq(!dC`0FBc'kPT1`%"M-
@H02FIhe#8285-S&KNNXem0ZXRJp-f+XQkrKN'Fi-NF%`3p"2+r$m#'C'mqj,S%@
Bf*hBdAArT)(2e%!PQ@%*P`[ALFU%dB#Z`6hFQ8-h9VPU#%m8UJDfZ!rj$hSE`FU
c(3YZHf`A[pe9PMF"%he`+LC91Fk$BTkpla#,i@KeUCrKfCJr!qe4hHQTXG[4Y0m
3&9B%Q-`9qql-T'"8YJ0jJp#)(AprqD85T4)%rHZ9e8hGl%*Z%TL"fqBK0P0Ab)M
d23[QG+qi-JU&(YjLGB'U9qcEkA-@N`!m"-+TYBYQ@$FP%Y%1S(pT+(@h@la*kN+
j[3c8Je45F@Gd3H-1LIqpMD-EAk"D(LqT%PKZG`1bk0(9R`*Q`NRX2h*Ih"N[#($
$A5@1CC6kEL9(R--#JNmB&$pedr6qA2TM%lDmc,`e-Fci(%3GSQY*`Ca&bh)R8%j
h0EANG$CB%f$R8UqUYc6hT%B!Ab-Af(P94a%YRc&cM[J@)0FICfic[kIU9'dIdE#
*(P@6F)Eq$6,CllKe2cF(lK3BE"6f5Gi4a'`"kZj,jBjBp19Yp(&$HQUN#qkMiI$
LNUL3!(4%H3L*(U&Z0$BX6b$8G[m5UK-*)@8VZ#Gd'p+Ncc3p#kY@aA`PQ@01JK-
UJlp0@aBT5(5Cr1%iVZpVHH@P1a9)3Dp1KpbY0q%,ZTTV&*b1fXITf'A"cc-,AV6
aZ[CdCVE3#!!9@2I,B9fFQ"Qj2Bicai!JYNIGA0a@GT(ePYcraYkVPQ5*KIk&(d`
h'QmUR1lMI(aY@"@a$DPedrDdEEHY!$,B$AZ`HlB0cQ[dC$di3ip4##BJiqr`XDr
qSA*`h@hMmSKEV*4FiF62Gb5%0KiDDU8()YX2d6*#l#dc[+9kl'h#XHcBI8#V'h&
TT1ei0@[C,"N!X0a(b3(-24f)BbD!F!L0A!llASE3fL$Z6R&KE@!H!&rm"6[e(AF
SVJAq*VpFTGhD&3NVNqhUDhFIpfd$!QKVAi1p3%+(JeMIqG9jQH%Xj%Q05dLHm%m
Ch%kcK2h[,,QM@e9H5r)j-L%6S-drDD9PXGqrS66i8'5QG3i2M33QcdXCAEq3!$U
TF"QhH8Tp39#CEQ-&i12AP$aGE)'aqb"0-M,!'FTHh`&3GdY`1@P0YLi2I-Bep*Y
kGZe[6C0eN9`"Z$RpVeE%*jY*)mC(PSbDjTDi@edK5G1SS9U6a2c)(30ST@+fAC+
,a-Mf4JY3Id%JrE'a&"mE6UqNViC)B-P3RT-SQ4-@Q0BfN[T96kAV6@GBEFQiDKZ
dL,4-b9M22T&d+[kE0r%m)GGJI+-aIAlfeXM0BXb8d%&4hmcmd)H%XEFKhEGU[Lp
T@E2)EZGIDD,p5ch#4mBlKZ1dF)Z[U+8mk,K%[-MIb0hJi98me-d`INfXM!!,q8d
b8&@A5,VlaLVX)8BLE'dmP84qr+f9(&*'+G$FQ"M@4fDpqBRJ6mMD4DbY+8`KMJ4
AGX&X)2ZfH!l2fCa618*TU$DH8-NlbCYSDIbpYNR`G15PF8KAmh3FjL3RiJC$jM1
21Gjp,UkF%03pHHpehFkMf-VL8YCBFZaeciP-Ui(`#[`EmYHPJ8AaNY#2F2Um@Dh
Lc%JDqJXT24k4G8"JUq$,E2S(8[I1Cll,qaFJE6PdKT)R,%@QU$r1l,fY2"[rF-N
mAQS5cr(hem0,Aq!PUMIV'SR1)2D!Vkb5T)pHGfm#KhE!*5AGXe6KXKa,GT!!S-&
PRIVh!MTVNf2QiIHCXf!"Rmr8#E)A,r2210pM(rl@lTJ*lc-Z",$bmq8kc3Rp'RY
k(DA1N!$P,GKS[ZRpSM@`&8*3`I*#@-ikCV8qG6adAFEG+GXi9CH3!(S)V&4E$r&
`(q2fDXiR*)DF1,*3RN1'HlZF-S9mAi0E*I3PSqRl8D$[pj!!Ec'[,RV!$e!&3%'
"+Cc@D@DR[993kVFq(5CZj&$2qM"(d28p8pL5B%HM,3!k0Zp&(,EN'!Y%#1KHaB0
ICPZKVY(MTlArj+a8QUlESQRcqZP",CD6k"fJj"Qe"DKRece)QKacTj88*FD+Hka
1"X5Cdqb&er9,d+q&ZY#XG[M,",pp)Ah-TU9ErmaYdh$'H[3@[NKX-SVh(6QH*"A
LGjrNVS"Kfjj%#(GN+RZ5C#h1T,m,kL`9)Bi'(r49*EIbIpTkZTVqk-BiHCXbAS2
N&63KbLJr$bD(B@j6R"iKkiP98!CdF[drrqf`mlT)%$Bl3cZHpShU022hde9@d*-
F-2kT4+@+#E0jhlp+lN+K#-Cic-8G'pk3!'1%P(D%9Gc)edAha%Q$4CXl0T--P%U
`Nq8!1rdPjBjIaGcR!2+e*a+eNi6458ZcP[6B!KH(eGJCCKVhbUN&5G8m%fLfk@K
cGKQp5U3jp#UMRTR8Rq6%p*B)"p0hTS6@",4IkZ3Vl#Dl+l4FZ-Y-$Gk(6)JVUGj
m8#`JXkQM-CmA2a'EI#Rq4X*E*MI,9FrjUX8m$5hmT*PM"!3PYppYq(3,jlCAYNM
Y$L(AZ$`4)i%"5JZVe)MSk1beNh*PrD6)$36M2F3bIkM&MfL)YQ`9#prk2!"55R#
HYkBY"MZMUj1"Ic['LY2eN!$SGAT`L[0H')45jNj5Shek5@8@N`Y`"+PEF2CVX&!
a3SSVak33%[iJ'69c*dR4Ml2hfRr"bBmaMI"k5A&rFd5+BJ$&+PPpMh$&N!!acP+
)HX-PTF1R@KArE#qYp`1HTZDhI&dlZr&H-jDll@SN30h2'PD2`Yq'Aa"@)FT6RR3
V#!r0KTIjqPT9%&,GBUja@11P`JacM8"pN911YZ3KLi"3DK,[H6fJ+(-HTkP!j-i
9@SZR2&1Ti[ChYfZH8hKiHS&abA1'm)$R6`ielJf3!'UL!#CELpGm`J"19D3ap!*
-l`#i%RaQj)3LML6R"&*H1TphLD!!KNG!UG[Gb,!,iaA,2KEm@)K2ETBp%5hKNb[
&R9ehi)I0pQ&j,FZL!S"2#B5kL(!YQU'c@-#(+%mjJ51Gff@YTDp"fhAZ3XT2r&&
B@1'8B8cST9T1l3p%dbCpDpHX+*aXE0XXmI"BeX*!r93E6h0VRlmd,bVJfP+4b[N
-qE#JGCBf$QfbB9B0aISj8jDq2%)8mI+h(Ima5XiAeLeRa1l!VkZjZi#8ac8Jk(d
[jeTpf-8P5)eQhFQ)d*hrYJ4V1k"m`IV`r8m9)mdA(9dU$EQEjR@QU'+bI5C,m5*
"ZkQCE2,1DP8"kR-D4ER'rkKdp2VfEeM6!F0GB,(Ymbp1hRl3%09J)46R8icM39)
d)Yf6kVqAkEF"@6$)G`Pb[IfPPZUdBMa2KB0#Paq%Fe)iR"$qrGYh38*A'6"0Fal
ab9mrA#13!"l5Gr[C6e#jcHp%,62AJe&$pj1!Gc9dH@Y*Cp%Dre8JrcmV8jGq%6T
ipAS*rD$2K%bJHUX0rbMNfmG*LJLGcbK5UGIU6EmbS-!q&4EGFlB3T'ErU'"B@JJ
N2M3RDJfU!FGq9ZBCM[A(4J%jRZi4iG1*LR$cD5LP@ZbpBKDaS0fEcSSAEPA@JKl
%,[N)%6$ZT3GR2),ZIA3Sb#-*G)SSkd&6MLLb4cjC%f6S0CSYYbR[pm4Z,qXamP3
L1R0c[b"GI[mD9hi,iemX%lYmV%Ec2mjRprdZMM5hIHF&(XP"CX&UZcqk()aN,E`
2N4`5`N#3!1-5@SIDM`(f"$IZ2e[Xcjk[PmIITDQUd9ABZ415Cq*M*`aLjj8Y)al
%ULMeDZb2JJ!A9bal[)-ARiZKX@C+P+mHYTI0Z5(p[DSP06%FV(HI*[r+1hT+4L4
mTfp%@NmMBihjGJTr%ILFTeMJ%33KM9,6[3Bk&8qVEDeQ,$!L8-iVq-IaZaXkZEi
"SGQINK&R-d[qpFj4G!@YGRJ8qY([DMaMTESfKTfA-*0b)+[NQcFFl[@j1hq"DQY
$r@*))jI&+2hTqSYhh@(A,D+66`4NIp`[d4UP+Z#(,M-jRkJi'@aHba%-iI+cq'P
2&jkEC9CAIEYFUfcf"6p,jYRR$Pci$*!!d+Z3!(b2N@+*32f#EKDQ3!4Y9C,N%#`
XPMkca9QVLh#RVe)C52[Q68!aLL"6%ddh`$Gi'!mRTXF$ZNKH'5#4ANV8(qHL66C
MEXC)[N&K9mFI[V!M(MP050TC[!X&FpdBcmGk(b0jCU[FXV@Qj@URk-QiN!"!h9-
d`FeNiNj'"Bi#kBjZPT%fY!PqrjjZE@AbkPFhfJPhaI*8l"a5"MC+%CBPKVJpM-T
3-fTjSc@fLJZVP*c*-Phr&HhN0-)HI(IrIGrAlAINj0'RGqepr&M##eLD&X,q3'[
YTjd*rhJ#9`@HcbNETjBP!S5@bQqB9HS8k`+$`)S#4mRX(%GmrlE*"HpHe-89)Kb
Ca&5,iRk4eIYfV)EGbBVch#`B[P!lLA(r+)PYk+ipj0**Gf0meIY+3l&qN!#aB!P
l`9d#[eK!S`8L9!GD#2'Y4c!STj'5H%ZQKrlRiS"ka0j,`*'rbX+Ahr+FZG5q3#+
HH8E-lS`!A9Lr!KF48Ja3Gp%4'NhJ+-e[1rmijl'brfaUL2E(BdRU2C(J8,,r-X6
mfFGi`h)$cFH&6mmX&QZZI6I"#mqCLh58MXm2N4P'a%UcKS#5GFNARCCSNp[pIea
6lC,[-AdGfRfZilL!&IL-j9HB%amfCCi*m-k,Q(3Vi0*U0E$4bB[cQ1Z(I#U'D%#
ZA4%3f%Vd2KmT3Be3YHj1B4`F!MUdIF,lJF`p)JNLKcHYB'"j0kG8&I)*[q6Dh3+
jEV+),fQf5J0a'!`EBrbpH(rU)15PkTINc13jV4Fk)K$%'+GDTba1$ba2reDScr`
*F"a%)A$qrmBhHXmd"kXd2`@hXk1(")i5k2a')cfklrY)@lrk''D9G6T5HmK-fPi
NMk-fANkA%LcPUAA($b"hldN(QIUBA%rpC(a4Q9qm`G&bFb'R0*)i83XB!%UULIX
p`1rl4rcdFAEkKQ[r(RSF,(E([ameRbp3*)8I(eBHf6P8'#!dHq!,EScbCEHdmYp
k4%&8j&3B)+3hc0dMdIj,,c#mC@LQm5)DlqJdPH$jZU10Q@h`K,MdmB#(I-V2B#G
R`D-L'&'%'4Mq!`d5"'ZA,UVm&&IX6R#0KpIr*4TN2LBq+MMe9hirXmFA0Kr[@04
eK8NaCXB1Gf@'j2RdIdR8Mq+@VI`[RaGp0l1%!pV4jVRNRT9EU+"jk05lE@S-PeH
fSl2l6915Ji5f*501PR&pm!l5FjeDS*UeiAK1pC4EIBdCK"`@Iq-R[6@X#1CPcbM
MQ6CSAN&i&SiqX0[,(Bj1j1(i#k0E$aLKc)N*NGpBp8!$*0S*dFG5`h*DUU6l6DH
Jjl2HeMEi3U6d(kdfU[$UhJP[,@VPmIqi1S`ReBXqGKbZI'6B0haf"@rFKM*d0kB
@lf6HfNK"i1-rXEH9"m1a1hl6r%`(,jZhLP)GFAL!i0EE4H&88!BJ!qf2q+a`-c)
YQjK#2cLN9$"1Nlf%r"NKQ85rMaeG[h!K153Pe6F3YFLZFCHb$%6AkfdEFRU&Fa'
IqG$+rCNZ1h$80P1l+45EGhY0paF$q$%pDai1'j3KY8b&XB$2*A+T`rkA69@1@dk
Q1RK!%5PVfKc3k$6bm-dm%19M'*TZTENaEiVmPAU1VA2BE'mk3'HIYa(90Y6GLH'
JV[4,SBbfMZBef4H9Ge2r"f4e@R`Ke9i*,cFF3P2@8[NlAP'XpV*V#C0FG)F2L`h
m-aYc5DPJMP(ie&A(l6PpYEf[[E%r,Dd0(fU53J-rh(K6k[+(KAh&PKF`0[199*&
brVT2mGX$r)rNj$3f*c,'UEY``F$mr![Q[ijI`e3#$l*EQNqFG8AeR2R39&1FRlS
$CeG"80GH(p9'4T9m4h1!$Gi%Lrq+KBRcAGEiI91P'"FV9e89Jki",jDGK8Gp2cl
9$F-ErIAPkI9%8H6+kIh%hkej3IfY9lVMMqpZQD$$YhEc4,M!%eUBAlT@Mm$dab,
i+VU!Pc4ZU%FcqCch[A[jMHppf6GkeUmC9Z6%F66*"RfArS6A"+SPcL%Q#'-%6Ef
5)SUPe4X1,r#6j!JF$p@F#a+!9,GB5TG"%5YZ5M@E&Y0HlhPZdXcHI`Q"eEl$Ie`
eri`0Cc68q#S1k)Aj[EUIm4dI[RECD!E9TRfr8EJZZ&A69D'!Sq1jSiZ`@'c69)F
b6XYN1rDL3GE*YU5J2V"*-D'PARlfP`FXT@6(kSm6VY3EBJqAmJq`IK3Hj*afj2N
r[f,e0a6[1[2N$)89[V``,&$2(aAURmI43Z*G#ZEB3RJ3dAfLJR*A@aQc5BbDfZ+
re*6(H5P02+)Hm[hFhF@Hd,5Y9PeHLS12Si3r0QS8K5HM(,-hTmFde*hemYemQV2
VS2#!*4NUZ93ZkTkFlV25cZ0-Pb+-G2hrCM,9r`5QNm1*q@A@H--R$TrQ&YNMlPM
Qi$&4GpcVAac!XcHiqlNre4blB0!-h0#jKm4VGV!D,C2BHYj4q4-eSYMP(UIT8je
daif4#LXX0[6j4Q[e#"i9cfA#"8D"E5mk`4c$!@ABciFY&D!mG*cSU31d3AC+V"A
Z%2db4P!pq#6KFHPA&3(Ah*ad(P'Ac[,ADCI@XYa`YLGCAb'80`+H(q&[##-F,ZM
([Q$mU[b9Ll61Z'e[)H*RfY`5JZ!bLLp$2i@c$$jb"10VHb"+Y0N$KV+*pB9[ZeD
4pJAqKFN#Jqh%1i$jG'4UbH4)RKkde*lq'1XX[#([B&h2hDi`EhB3PPG2kjcP[8i
FpX`4ZVei0Dr'G+q)S%Ph9-FKae&6MK'M(*mC,ZHSRVmJ@L0hlMP"bEXk4BXGCC&
F0C02[2#NQ0[p9BKFa62V8T-)@4X2V1LV"db46ibSajkm8beL@$H6a5HJ"c)6TI#
0q"cV-a)pR8ZhC#aRm!-4GLbGI`5FLc%fiK(hRHIa6AYLe+B[X%"Xpq93"14r'!J
2f9N[[0V)dIiZG44[IMF(I$JZ``SHNKQI"GTJS)3,5&T-63qfBl+hjApK6,SfA44
!@VPHX+L`+"A@QlE-*B"JHi-bV$hB1)1`@&M5`368NbU,El3jfY#j9ki2+4hBN!"
"69&2@RdUJ)8ILQihN!$pE*JN[Gl#rTp3@BYQdcQ63ehJmJI$Ee)CH4L`bBlL82H
aIDB)fCpj-[!5f@leMX@QHcHq&,I%5-f!)KRDj&8d,ed)NE'9d#Lfa'YVdmAqrqr
@9Fh`ACE3rVZDrNRhd@80ZQ1QqY-jG4M$KZd@4m$8[Eq1*5*GM,FNUPL[4Se8P4m
[,G+aq`d8TB'R4Ddrf$ZY1KkI&Ie2p[IT*83i"P350q[+SG1Uf"eBB6HJj441P5&
2L[Ucpq81k08FED+!f5UIK&ar9#CphePbHjA`KUbqPQB*ae3j-k4p+iMFac!)6qS
P(FJBai9F46FHJH9mTiZ%ZP3H%CX*DePAp3%H$GK)&A`#MSREN!",Cm*4S'@[-Gi
+4hl(Q[lE5aKUT&p3pIE$Vmj-fNkPrPB8%G)DbLl1+fqK#35i0Gc4"i`MY&#GTeI
SQ23&N8ja!'1$&HV3%RQ%NS%QIPUX'6+-EcNql1d#Q',Z*fDQ,R8@*+0#K0[qc3,
0-PDQleF6pM!&MdeDD4e0Sre0p88YQ$,8kMQAk[e@ePR5VA-e9C1fcQH`TM'Nk%F
SZ)XEF@"TrfR$EjU'!(CM%6F%5p#3!-LY%k[5jYCF'3)"`#KD)M-m"+MUR#()0GF
%0Kh0ML26[r48bLU[GH1!j#jFJ((@"K%8Lh[SKh*2)A9B0YN[Y@'TrjEP3(V4TDU
&*CEcM8M#0jJZGP1fkr+&12Z9E%J@)hUD8c9)3k#Tj9K9A+$9-MlmkG$rd&c#5Am
KVj*P-',*3U"$Z5d4kI&#mGH$BKrpcq!812&e+8DkfPP9ZaMM0h,85LU#Ub&R0F3
MmL(jFa@T@mZdmfemp8E0F1c0*meV2$R(dDiPK+BX-E,dKJAYSM%3fBZdElRU8D&
PB$!d58`emD6!#1T3F)G&QV)G+D5U'q*@h`TD"2#1&VRiJD,qQaV4e$,m*VGNq+`
*BrX%1"B2'Q"l[h4dU-*X@Ph$(,M-B[A"9I,rqSK`$r@*C+`ZlG3Sl,0JqI*d*f$
r+[`DNCkHATQ!I#$m,c&Xi$UadhMjq*45ViQMJRY3JpiYN!$`lPV)`J[Y+!TJ+0R
aDhBE)CE'#+DCQ,!SKED((L3'I'$r(Y,fiG@,SG6hB&!%ZK@['+0C4P+TQ8kj[9L
k#eeVrUKB1%RrB1&pUM6$U''X8kCIqd"!!6+&'$*VP[SfVI@KGBMb!If*B0AqLIp
BUL*M#`XE@[kaCMdAk`[LiDiBc"mBHmjCXeT[Ac$B2bjM[*!!6Bqp)Y5AF9J4XKK
F3rb8QJGb!Hl-B6FYirkI)BD&6be12SGNTY$Y+Vhp)hL@f1"GHG@r'4QIH$Y#D0%
pV'#rAif%T"VTP5iSlcm$"Vkq$N`qLUSqji`R2UB+E8TjAlLMRTh&J@biP4-"[ql
Y@Ec`b`5*+r%U$(GC5J5Ll4f3!%k)2QEIY2L"hLjhRAeH2ed9Q4X*Nrp6!@!P9Jp
*G[48X2`#m&JP9Qd62AQj`R'eRX[dpK"hq--PSRUMEPA+3DMiec[lpi!hLpNXcMq
me`HB2"TpQZ,4@jaiR[$!G9rE"@6AP[Z2ZY0"$Jjq`jShSKLEY!AM(f4H*H%`p,K
@%&V("Y-k&fLYXE1UFcck4lX"1kGm(DhDHYI(Z$1LXP0HDGR0a*FX1i*,[JM-Mfm
)&$(8[LD6E1M,4P5`E`mPd,mAmSPPG%jrYNhcid%cE6ka3)r3Ri[+08'P8GSCQaY
4,E$#,,YE53rQYDAI4+LpNc!b@hCUlpd*jXY@-aT3C*ml",b[j"kI'IUhFU`G&Hm
4SP$%VdNaP%%K&IXkd-!p[i@lBl$qU[`Nhr#rX93rf`abULk!C3i!K*1JFAD$m`e
hGE#i@,K6hBXHZcUkYhXRi[-&5-8Sqh3@Y@M!b``&Ye*3#[j&lVLQKQK&fVHkjip
(PK3N&AV1Mpm06E%d*rRJ`E&Bc2M$#Y0"S@%"H*bQT1NBmb(Kq9*U8l)rd-HYMXR
i%@l$MY&0l(0K$!JKa'r26**lYJ6fB'[%qe6DX!-Yj('4[Hh)dQ+5iD6)9IX!4d"
+TlV)q*VP!Aiq,%I%q[1E(+`PfM)E'+KHK3rLlDSA#q%)%l2QV@0l(%'Kc@Xja[0
Z!&pS*HXq0%))h@!NJXjiHjrQ#NVIC+ZQ4T,mK8[YeSA4a5SXFlU+@,M0kDTrpql
HHBJBc6&*Th-6FS-(B"f#X1*HRc!)+X'Ic-Hfa8[NDpMf$qC[4'HHc&*)*l,d'jr
H2I"2J0@)"JZM'C!!H*i)[SXd#%f2BK*AUFr+h+F3@BaUaKjelB3H!Jp"j%9AGia
kR!6Y5f5rj)M5r8cMeT&Y&AD#Alm8",6B&SXPeQ%I6!#L5!m),b@QP%a0CqAV,5j
382eSM8$+ck[*M4ifXZmM2C&h$&aN1#rDVq)A`rTlDpP2h5r#1+$f$e8LM)NUf'K
Ff4QM+#"BAfBXCme''5FDNpAeEaA&5PR4$34*P4pfe$mT'rl$K[LH8K%mBb-,%"P
Q1(4D,iYk5l2#2@#e@#@FU"$p#F%V%!j`!9%2`CD"LBa-RX4,MDe(5%i1IHLJPZL
mK-NQ9[!1#dlT`b%DR,R-B-'N!cpGcZP4X81dHhTmE[m'kih$2f03aLh6iZ0#ADl
,`[Fa0FZ`,(Cl@RBJBbfYXN#`!HdF#b9#i2d@(-GY`mmFh3M,-C*k9a55h)$AJRb
cHl!ZJfCqHTMD[c5ZNXKj@1fUBGB0mM3r30B3PP'Q29[RD`j[#)UNjq2+kBrC"$i
9PDDGbibK9rb5+X"(I4FbKDhU8RYMhZZA(E95e8Uk3"mQ1%A%SdmaG6YqN4l91Jl
M0[,kmPq+'*+YXaF`"a0NFdI$kpK+$D81fj(N"3P9DAT9"bGaPH5UES)%!L$lC1j
)90PjD90+$+4b69@0HdJfaXY((#6c[H0CCE+qVPr91a9+VS8S9$Jal@K2+I6pPRk
0#X43f@m["LKMY'H)8KF&YEMe#2DFHr%AMi9AEq#2ASJ,!"BAKZl(fAI5m8Yhj6Q
Ti`@8HE31P@Lq#-@U0"jYb+cq3TZj$GqkJh0'qjBY*8[eIpmNF&&+3fNkVG&Lqrr
Ze6*%fGeFi#`+c4iH``TS'lUAA$13!)bqQ[Mk,*!!bdK"$&&"l"2,$+1Iir%#Y(K
F#J#4S)0*0(jlHFA3VNGmI!!j*j1FT4c51*T36X)#JM,cmTCQTP+TihSkmDc-ZNh
GfAh#2QS'XG+'mG-qZZ)qdRcj8L+X($cDHrYKEB"qZV)eQcdVMKp&MJjDNP!P231
UGMj@D9@#Pf*&*`*5U[XMUf,E$N)Sm6bjRp%a9M$EBG)cL0Md&BV2G@eeV5"&MS,
MM1-08i3aBiAh'*!!)pAE(cLYUKcB(lld2CDrmlEHDYpE3fp(A#SZ)6*X*S,NMH!
F4Sh[5(@[e$#UK6FB!KY96PSbXN,em@!Dj9$HHikPfGe**rBZ3Ude4d)PIaQ"eeV
IhlVLSlE[KJFrM@(D@#D&2V[N0'-i[qhDb@"ZLS["[f('F$bPF-[*-CR@TR#(326
rEa6,C[dibDad3Grf2RET1IFq8RF9l[kNrelIFeRH6V-p&DfM3Il@T$-&&EV%(Bd
h`EiZVK8HLd"EAB&NBhN-G4&UDS[0AfLY1(h2mjUiN!#8X-&ejGeKl4HeqaYX6("
lZH$Y"DZ'MT!!R5KkGBXMQ'4IaKq@EYF-LD!3ZRl06hN!)1&#CcY%V[H8!c1XD'b
2%,H+lm9$e89paZe)8-ZfPlkk95,(NmX,IkpRFSqX*'0bd*E2(%2R$U&!+3B6Drj
LV4LF+X6T@R+TSh(qI&Vfp(Vr+rb5Be&TCl,G%alL[EUfPB2Ib`b9!MpZ$$1kpCM
-bakq'V$H+!BBp3c+!kN,2CA,%1IYS%lb6GeF`[pZpVLH56J91'c(p[iYra1P[M'
b()BQkP!U,ieLMF"bR'cREkIm41dBX!lUIKrlEE'0F`U&"-qmQR!N#9fVkfA#LqA
DJX2YZ9"TEXHe+*@kUFBi8*6ZPQE,[j[45f!E`Af$5%VD`E9&apT1JLXKKfeA)#b
IBTe"F[GeIR`eT'M)8"dd(eJDm!cU0ARPqTHZJ65rQaB&U5N#G-%i"4+ma(#VhhX
(Zb'I"Cdlb&Yc!d&"RY9`JFqea,md`G6mqIK(-HdR[#dH)e$Sc8ZKc1i`@iJJVkN
&G(r4%lbKKBH-JL&0VYRqrbEqJ`)JTppIfbARD86H(Kq6'-,1DFBl&ih"U0YHTDT
'[&TS*eC(XY`-G#r4e`lA*cR)NlBJ8*bV4bFqY!p)djP)EkqR6[h"`1bla`!N*jk
690$'m0d&EXqNa5cQ)63H2Lbi-QjVM-ca*-L2jeCrDLdFL)m2DR(l9&-"MRk3!#a
'5m!-BI,U@'i0lq8GhjQcCS,CFHFceT,HAL!C)-bHKHechKhBG`+(0YLFEJ'"A,G
e-V4"*5kZfGEpH[0j2LXedY*0piGV&0r)-'FJakGih@SBl[cbIV&qfl8`SEjlGiF
k%['C-&XFD6YkjNqlEXJQ3,,,+5%c0Sc84YEl#*lCp$@@HPGDI+a`hF!f`CC$a&+
IT'XNSE)H6"8Fl!U"S*l['2#S1rpqNFBjEkLe(K@f&k%q4@HrQNRM0aJr&DrIZ9X
M1bE5C-kM,p5X9MpkXeM[PHKDk!(T!$ZPrF0Id*P68#B9Lq2q&jN$e55pXeb1#[F
ikEJ8SAI#!)IJ!8E)YZ!c80)-@3b2UpeZFlUi(B"X8*pZLH$3P"d%e)EMATVMTK1
rZ0F@GM6-b4Y)m!r%"'N)+,H4jk-cE-&'L9h2rNd@!&B+q#JV1pQ61"V(bVLlHpe
YlhHk'pAMCAbpV,U5qKLSFLSM+J)j)YHKhZG!"(fSPM6-HIZqS`9r[FUCK(YCpmK
G5RYeB5[j0mJ#0%(pPF2+jbLZhY)IBm04Y%'[DUI,+*dKF"ZF[G('L(4UGj!!$98
$(5q``EY3UIX&A628VC,dAfUKMGSB,G'3!*TjiIPDTrRR0e[9`-Ke%Z%3"Rl0p&X
-4+m3CdpC@GdE#54*r9r'HfeQQrX*9LS9)RJKSiH8r%HRTNf1@YcfbTAT*+Pi2')
eNf-Hc+-"LmZ896kZXhP5mq,!X9@`-1P"TE+0Zmk*-*Z3!"b`emP&XkPKrJ0,i#!
B4!Vahpj%*"a+CF468Pkl1I35G`,TP'NNNiZ3!,H,eVhbejUrZQTQY,'R0qI@!*G
P`N4R6d$E!BP&9h*$[IpIcjk9P@Bi-JA35fIKr1JeF,'GrDG8F0%ZHm"$a@U9rHc
j'6Y%jB[FGpbS#6FIeD44EL)-D4E!UEfqaqphML#3!+M30FF6*ikmJbdBbb8JL52
N,BKJ"F[pmT*%hV9Mai0a6MlX"-D[(HT5I!Al+L5EKjYFJE!Y#E,F4aV`$IQ3!$b
bT'MEMP&h8@6+-Xj5-,(ca@U)AM("lkTjLHKI0Dh+BFLFQILGiB,'XeeFM2`9mSY
TeiE)LMY0KKQ"P'rDFUX'0R&p1ekK`Vj4@`rE4*`m%[V[mb16S'#ZR'Vd(e8*QN!
$aq&ZcXrJ%6`SZ5Bk3@m%A'd9KeXNa@RkY!@elA%34`fTf+FKk0IlZ'(bN!!p0ZT
3p&bAGTYMBemiV-(qf`rBbD%K[5be,DZk+RTd$'5Fc(4%-hD0MRJ``fTdNBma4lG
D!F4040[0KfZ5Y5CSJYhF-*+&XR1iBa0fVedZD[`1RXeZKRUMCI2h`b)`%aTKFB&
h'fJ4Ek*HbLf3!"U3!(#eSTKhCQahN!#-ciHX,"Vh9XE(A0[!)0'))Y%D#K3DL%h
Ya"EfT@,fmY*8S1I+)&GmC8MZCHjLf&@LS&2dEVZNVlL*4I&NdM9DlMDBV`GhmC&
#MrYqbfX"ZBH66pkZdC4DT)+SHj!!ZJpk-IQ*Di0M-kr+pe4LbjmUAPE-)b&-hLU
U'K1M9p0lLJk[r+$C!fiQcBC1j$KPVfCD,fG8l@DiZ5EG'1JmhZLiQXXdP853!(C
`CM[%q!L4rMNd9Zpce,"@CGX6PAmjLBeQS[bGU-LhUK6)&bA%`GT!!"0`PV4j%K6
5CRdY[l54S3lfb2U1I'f)#b#Y8HL*qjah'pcU)HfSMq4(1J#4$+ULS&Nc[UXQ31m
$HSX@qem"5JPQ6F!-U*!!*56G%4qEjj!!e%[GkhC%"j!!CF[G4(K1'$h`Zp,q9E4
mTK,jPEYhTYhaf,2,GrRY3Kf#"NX$el3PXTFT""KQ+4$#dEKjbpP$&&eQGYf['(I
29mMa!E%J2B3rH!YBAh6lJbF36lGZ#29)r)ZSPFe0MY5DCMR#MUkiNNS)@biIU2H
&CR$,q0ki[kh#[lCe,fKQ6(AS%bbFdMDEiDX4aQeQ3)'5)l8p*+crlAfD40`&cID
5TbQcqFeC'P-1k5pJfEY8UJ(,5lI&M6dkP@HEBk)i8fhKp3'iTrpr4KXa+@DlYUY
S0GK29QD3!!%T!`JB'$jNPZdA4@!8IR8&ApD!LKX1-D*)Y,D(-a$Em1p*`Qq0ehG
GdKJKVk4kG+8a#d&%c(8dRYJaKer5Em9hh%qN#3b*3RPQ(rD(0SK$d6QAGY)&N`G
UUH@1KH[Erjh091B+@Tc,9C!!k2hT(+ik(iXIKJfcq'V9k9PH-@0ASN6p2Y`Fedq
hZF%+-"5*#eM92'AQqVrHUaG3M[%'J9)9LlGd5J"S)GP''Xh+DK-SSmLVNq*@58I
dMHqVSi,km9h"-19YF1Y#)TX"5P&d&Xl5j6#R90E`3T,(D5DS!r"e51akKU$ZC3'
pkG)-1AUCPHAQ6HCL(%@9lqGPD[4Dp%JfXH5bJBhH)4H$SHP8-Nh%LZdQQ%XAZ4%
DED(2L3m`%[[i@!H+"LbQlGXT!qRjI[r2PF`N,KI8GMp4CJB8AFS@VSS"Tdr&%1#
NGfk0JijmaG[b6SM2(pePCeKdcV)QbF)'9VX4j!90fBiFCQTaTJhrrC5VIEPGLrM
DYMU0U8lN#39c@2dDNP`,3(PBY*a*hdd4T5"pkRD5#J2c3KY)LSDSfTpS6Gc9IkL
-UppEEP[j)%5&1k&qY[L9XaR,V2h6436jrAccEcNCSK&YjJT!rS1T!c'X9G-Z5$A
Z5!q(NpV![%Y$HNK$Iq("5)9jAR`%(3+-jq'C(K8Q9Ddj92rlhm9[U&)jLGSaT+J
l%HX651!Ld9hIIb'B`YRF88&R%"f1C(l44cAfcXD0Vbda[P3!m0X6h@&lm-Ii,S0
"PBJ*Ec2A(rS'8aS56lVm#hl5Fd'eEl6QF,l*9)*lKS8$1j[i'6#1V6+hRHdLD`f
`$pip9eRcJ!K)Xfhi#X48"`)"jRAX)Lq##qZi@F5bJMCkrN$%(95fZ$2HP,["Q8i
HG9V3X)EBNGidlDYJU1fIrH`&Th3hA@4R2q)ah-[HEE26BGXLF$1U#)p[*2L(YIa
`6!fdpLkS#6fjSAhB"6lUl*!!flkeQ5L1(YpFUG6A1S6DcKGNafrDpYGQ(6)hH%r
Ba5cTT%i3`RhN#'fbqi-X)2*2kc9Sj-@4E)e1m6p@5$UCihAX,A,NcCj&a%3Z-8l
hLpd*ISJ(YT!!2m8$YSm*ArK3jb*G2i[RpkdeV%ZjcRQQVd,Ef(T!TH48`"I%9[c
L!Yr1mULL$%+Q+%2&K&[UUAPXT#AZR++9)l&'[MDfFbXpY3Q"'&I,[AUS8P*3FcG
lmGUm(EL,TKC3D@j(C(T83$A2GjV&eKaSVKD2'kR(T!`KJQ'SL@MTZ%2qI#Mi&#N
h$YXC[i2mba@)[rbm[#-fa3GG6E%,d$Uq@i)&MX`U'',KfC'Y3pU&+,dm1&C4J6G
e#qb-5R'@Sm%#*%6k%a2HBTQm[)fcV3K`+3I8hK-e1T4Z@6,D#Fm($N!Hb!P3JYS
"0$KY3MY@4`fH'kjQB3+mL!jXTdm*$5FYJ[iU$`5AG8Z@2)I"[QCm-#5B4e9l!#E
F09P[jc*qXP[I[B'r5Ef96'GJPMFE@piV,erVFBkYmj!!(rCK'dh,EUR*hpNX#J,
cR0j5bCQidkPL+'A5ErI*NFm9)'D8G,GPb9GDYL1&bGR"McDrXSMV')Xb4KT3S`Q
"Y@di&UAKmqdMB,2)cp&r#D-K6H3qHIF"@e0)3HQ(k-G4CJdp&N!VGELQ5GLl8)@
#,k+T(Zlrfm*K%@)!('r)K)l(4@Ac@10S`kZN0F21cK%b#$QPAXfZG8'a%&Q-0+4
Jd434U4'`YpX9QS4D[EG48(M@qDcITF)Ra"a1RZ'HTZ%R[h99"qMI9BSY9826[pc
MB%9qb19+A"r8N!$QDC!!5r6p+0K6QcG[mrTGN`BZMCmA,Ll1K*iM$Veha@GHI%Z
kX$jqERjQ1`bb2TB0U"kq)"f)r[B$44N$DH!9LbfJNH8CN!#Fj+@i3d4p($c32)f
5Khl`"S2T!A9h280PQVSBBR6C"4)LPFXE+STC&XP9&%&`RY+@F"2-HRL'MCBr#j8
pl$*EKG8ea38$"V@2#mqYP$45*#lJmXI9`VXH2Pb6LmUZ,JH%$2T,Q)+%$)*ceCj
)m("206EI6L1(FK%M!KH"11brbLH*M[pID4HYEj(SMK`L[e-dFjiDcda&B3`!N8h
E@jN`+`R[qhaTUdi`311M%pk@UID!pa(P(Ei")k3a!C`l[SErcSa4%G1pr!KH8!Y
G)GJGeX4*C@b-A-T-343dR[mCGbQh02VAN!"`T2ipShjI$a!'F"`[+K#"&Q8E1!Q
V(5(5e!S1'LAE'eJNL-)cK*'eceU9-VBY*J)"I"K2"ZZ)LTa)N!"mXldp`Kf0mDH
"*(m+I(QY0C9ak#%D4iYbC-#Rj[pCmp1[IIZ3!$m(jXTk+eRY+1BLa20[T9"jY80
ITrKfGa'3!*P*+&0$ShR`a8Kb1rJ4)3)Gm`p9AQ$K#Z6"$(lUUBS2C[F0!p'28mN
G*$jIhPKM8fKlJJLJ(Z9rV[62Yd!aELm[#PUK9YPRXRAlraS!rB-qLfJPBJ@C0MG
R2aFqK[("JQ2f-Z-&MSUIhSlR"GRd$N3i'kf""cRi24@Z$NK6cUP`A*F&-1"Z2AG
XDMY`@c6K-CNFF$'T%LA[3QmY0)&P2C-F0BDZYcGf,Fe5k$FRei[(FG@+`bZc)p1
R'&9[R2,9+bIHiU-S3bmQDGVGPQ$3KpEmEk'LS!B%@jq1GrXJP,TRSmZ5@BjLiSA
2r)R2jE8BXel+YLTaP'93GDjF&+!KkF9c5Jkc3l4Y"Sd%SMST,-1GbNMAmGQjNM9
#6kB)JJEEVP!N*(Jd2fkd2bRdV9'@TFH%MaEl23pf9R!"&D8%Yl4ljR4%!MBI!Ma
bbJkLG21+`1BPh6,X+3jH+2AhLcE4b@CIUhfG+&UIh5bm)NZNGeDPFb(%XPl6Gh%
F*RDbL,kQ4eSifQUh+ZUbUQKYFab8l49h*V+RVIdbDh``*@-&hfI$VbM@3cA3,J%
R1--RICNrb#@(NTd$$r,11RD(*3*K-PqiaMUL-Qkef@@pfmEU6Q#d,kb9m(2(VJa
aB$&SX,9ePmNAUefIJqA5c5Mq#P9NG"'p$V-6(-qmD3*(,amNJj8G`-99b6F3iP9
C`bU96l&V2c-*Pj)bVMS*L8RhlZlTTdQ@m8,lPlk@R[Q$@pQqFlUb8(UdL!m*JXS
[PZ620kA**lJBGF33%R*c3Q'KArh*pDCNSb'*#N1"6,UPK"lRJ*6,#9K+8D)N$rj
ajQ#4XI,r"Z5LJAp8bPDFf6&B6Rh,,aY)&Y+N"!%bUAd%me$f*el+Qe-K@Vf@mKB
i3GdqQd856EFrUCTT3jRiGHGJ@3KQQS*LD[LjI9U6%J&U%kFF+$k!f+*0dqTU4,+
CkF+ETS`8a`9br85LVS689lTlp*-Pi8cR@BZS,'Jqml#D$H&K9EqK5K'Z`GKXGZQ
-3YMbcV+SfAUeKMD)He'@(kKGNr9"HiAZbFe4$[QS0qhS)cF-)mYNZ"K[0f8i$8$
BaG!",JVbAc4r4bIN&X6mZ*3HJH5S3cM(Dd,-f'A4SpBj$r5-[UF[Ap5&AI[1)IE
bi!UL+SXC2lX(jFM(V@d`NX`@'mZb-'P-B*N0C48*fME[U1B5ANI)Lr%Y2%cA"Jm
#)'&k'05XpjAfc[ePc9pq4JM5G-UD6%Id[@`D6m`h"3i226NQVPeh1SHIP"FrVY&
8*h``k[XQF5bXS4SQRe'3!2+LaKrY(bVa2N0S[TM"!i[hYQR-%aIXa4*b1VdS4Se
cVSLcMc[U1SBXGIKPiZCk'p$T(Qd6XfJ#&jSQl$MpH!FZG$Z(59&84mPNfe2+8qA
EbDHA-[N+HQ6FbZ3SQk4$'T4h4[086N9)VU+mV!"I(J$ejEaSeI6)VSBhdpc33Rq
*kJ'%Gmf1A9G`%@G2Ypk1IFX6X#Nek`+#cV+)1f+RUqZ'iJ'eGC1JppR4c-4kAZS
E,,,k&dH`a8C&(b9X9ip'154$CcC(4a&e0CH@hVU8k-ZB@,1HQm($J!djYeB0LBV
B(Cd0jBGCH(e4VC)MLc*Y+$jPCrrX5P8jk3-DIY0E+RAE!IMlBNZ#5-LQ+b&(hlq
Mi-`lkbKP2LXK(a0Y8qHQrPN#1T!!2k*(mcL1aad+SmdS-Gr$PGi"I+iXa%XKAqV
-kA3&$pXFVc+4L@h'pE45lHMA*VF8&"QqXe)p)42,M$B@EhLq)l3hjACrE!LF[N5
KM2ad@khm'd3&F'FFVUaIDMb05#GXrmAM8FPI+dXb,r`Q0hk0%8%h[-,6[k2YN!"
TY8,+A%CAp`1)[%L`A@dM,'SpllG*qP+cf&mRYh8@Z-LHb@fXX6XFIf*!dQkmc2F
%pBUh#U[CiGrE)8`S*j1F3LV5+Y@1($PGSe)`DZ5aJ3CaaHc18iqRILDP(`YQ+!V
a'`qA`Y+G3#@UQVJ*9+GjCR$C`+MKVP%VC!4bR"r'Bm&MTrMT8I#K1)K9&6$@j*S
+,8NjJSHemEG+68Fb#,J'0rXmAC9b([Rf6JZeQL)Lh9kXP[qf,eJYA'(2&a(`dhE
e)Z3)Bb6,0BNkM`D`6hY9QHfI&+JLU1Y+`(`,hPd(+`FJHkAp9#Q5'3UCkd`hrp[
"c-XZflZLclL)DAFl#eVlU98)8fd',hrhCa*DejllhNYXRqfhB-U0')"CLf"UScc
F+m'&E&IU`S&TI#QP9"4YVeEh-S,4$RBd9)r6G`-V0%e*,*XaiN)`[jkB5G[pFF[
Za3iN4`6F#b-Xpb*m)d'lUGEGPrK&33*mNm[$@k#)l"R!F`HNc"Jklj84a"k3!-$
DcRR#f630bQ5(jkK**i%0@bKp&8iJJ4+Z6X6"h2p,khG*00A[ZeVEB!ZDFjmqKQ9
daraPj1[95A0A4Vi#1#*![eL8M"FmT'3GS@4J'mPRRV+HQJ8DB-k!"fVH!ele!'!
F(r3)bKRdppkFcNDY$pr94QZj!()ijkZGA-iKP"Y02E*+U&rd-`&%1VFjI6b5i+5
B8R5XaP1P*q3iSC4d5[lraaPq4UIEpVVD![lJb[#)B2fJPL(M"3p)"9#16pAF0PT
C-B2Y(Z`BrUKVhepVh,iJKcDAapJ8E,#+$a,81e@9IR*PPIN-CZD$6D2rbSTE''i
[blf$J6FkIJU8lK1rN!$Bj$8P$!C4hbd(%DEE,fk)CDF!Vh15!BN4E*E5@b6,P2M
q6#D3!#rpFh,RfASr4PcjREiRX+-GXNmFF5a$QY,8i"%phHQA(9lN-(T9$QIX+N!
!*3,fHTh`VhpMjNIk9@6Gad5dq`bd2J3l@-4&'H2T4U#GbXNA!UIljBB3AD66G[l
TZVaQpIJl$mmGKL3qPD)(%9E[pX#UcRYIC,i*R"Al84@m%TK$2lAMqYKEl++!Li9
&ETI`5338!*mFDA0$3P1L@aTSe#NX*PTmbr)a)HC`c*H,PP2b[U&a"D3fq438[P&
e)Y3K2`Hec!2iB1@b8[#82*kJP@j"TYBI510"'cT-Pm4YhdBeMIUih(Bi!U@Z@rc
*!*!!GM(A`ING#6m([YGY[@FM1aK+Y2Ye8pA-6DGR9FRCfYcXiK8'QlmUJpqaFYf
GYbUe#A&R9A8#)Hq$6J[+[$m%8FEHV+Sjk1P)"04jGc@q-hkd`r&%aC%!Nbq@+,m
+VC8Z'Uee4,M95,X#GF(PRV@(IKTmqE3XYd8(IJfK-jK"I(QXa,"Pihq-46jbRcI
3HNUqX`$jSpD,(f@ES5Z[1e@@DN)j"VYG&l5HmYFiK9ld@DN1[B0,*F8,hc46j8T
AEkeYp)KVeU&[,Ae)`DC204#SH1SSEQB`bID9,F"bB-bAl(QAF34#dhRbV"T3ZNF
K[6i&DP),JJ2PCeXI)B'&DIMkk0IT"cmp'drIS2chCR'r!l*[#UkAG-8$&(e$'qT
UD0p,-E6S$TmGQq%0(+)-MTE%1B9*#D!rXdD)[H2bN5i5J'Ahapm$'S4+8N%T6`4
@l'!h&GXGTm0hUr+6BJpVjpU'Z@H3!(UJ[K6jLSp&S4SIQe94)ee%Y'QK2)CDkb$
3c,3`dXVG+Ja)P@DpIC&DcX"Pcb3r,0UB-[fP!*!!Jh-$mFqb(fqP#l5"G0bPL*`
5DL1CDcSZhKma@d+mX6XRBf%pMMB%a#TJaAF)`L333D$AeSlS*#NUE4D'8(hLBIj
d$N5"bRGFRRJ@GhA,GBTrFdVLS!HHS@*Z5*r)mmHCMF0e*V98r(+'Gi64B3$%93J
4P86'bMQkBr*G2-fa5@cc+SA&!)rYjLAdXCB#$KVFr%N4E+5&AB#'q%*K"-&4+%d
r!rZHBR#B)RKXbEZ2*f!JM)pF"L#a",('jf1C3JS)M4'NPmCQqM%9Sh&I#(h"qY4
aKj-[X5ihC&'#XP*+*f&TCFhd(jjB8(C&qF`R*6KklL6Hh@Lf-EQDS#cTqA$T-pj
$bGVCKP#PGe1V4Q'i*id3+[U+ifR,hbD+c"bJM9CApGZfY-b0JrR8E1!C2kQUERl
D3VZ@RCN05Z*)4a#8eKf`mKfc-$[Rel6+-UPqCqX2G&F8#Tr[aY$q!lYXLd2DmLX
5CUQ8D5fFPD4r130P)[8KZ*AU5laB(ZPi#!A3V0'eF',RVP$'*GZalZbU,2AhPB,
pSTqraHrLi2#,5I%l2l))hCD5c-%H8BD5#)!4qMKNC#%BD[2NrQf0"R6PbXM%RD%
CaXB"a1*VCGP)LfT5'Yma$*AR%Zb`P'*,i(R98SK8M0'q+9KjmU&,r'+Z"XBqa+K
ah*BE"XPMm`SXbb'Y)3V@Zh2Y`FZ,JHLY&Z1C'hj)XdTQF$H0ba)DFqQI`$"6XeV
B,MADm8PRD&TfEJ8$hhiEkb)c&N3r'B`rap#(#LX0'jddMij(!TTLm'SC(Q!r2p3
jNQM$XqqK3XihTU*q5SIaH`ccFS#IkB`+DPIV&@jQ%ADp,RKm05KpkSKm2N"p$MY
Y-'[l96Jj3VJ8YCpQbqhlI&J$`AljqG*9HDpj1@3&-DIJ!1L(I9-C4"GVk+&[""*
'A%FCa10ep"D3!-$PeYm-JPXS&Xb`p9JcRHjN+mLLP-hmT$b,8AS3lhXfMa3Eh#e
A8'AT$Xk(GiV3Bb*1BQ([$(9XB3M3Gf-VGJKf-S"2ja4e4PSa8Tm2H+Tdq(&#18)
P+-+IAZNdNVJYTd$c51eA[XLPk0NS[R1X1lYbe3F1BYAUSRaf6!ajrhRra$[i+-m
a5J$cM9EK5Z9UT(VISSV3Z8bB60JS2+8X(eB[2cbQK9DrKDRHKi!X%KN8jN32pCU
MbmL5[*YUEKjTmRldNP,VPhc`+LP@XkmScN[Vq-2EK6ST6L!5,Tbc-5ePA1ra*qp
P4Jp+IAdahMp562aP6A+b(+d"D,!SYqKb1a-qh,Y(D[0HhhbkDMd4HpHHR'$lBfJ
!M-9M&$-R8161*fjAA$p("R%fJip9G853!1Bc%C0iAG$dA&RK69XMQV!5YZN`XU2
dUAfMk1U)BAX+$*&Z`)5A3Z8PTAQqU*[S8lr"P93N,q@T9)#[hPAiCTMi2%)[hi`
P&$eHV(dbTUYK2Q1pPXRYM#2Jd+3%8*Q0`aD`,EV"!Ne#48+kM(C03F2NU[+!KfB
S+'YVTQX+@hAj89a9DQbH0m`lQ0#M&SI+,K5VlJ#q$q5$p$dblH1'1&3@rmE8G((
%Ee-b@Q0+&00A&L+&HI0IX90i(N3lqAU(5VZ$X-cJF2c,5c%9#T!![2Tr4-(,NJa
*H,!'59pJF"TLka#E)4E"&NrBe@a`U0TL5CLN2190(N!A#mq3!0$Qf1FlNUhLVqN
ND"EmETLebdMFIa#Vd+SUD1Vimk6e85DD3e3VV$NCpI*FQFB'rdJLapMV,lh%erb
l-DMGEK+6DM4qN!!#PSkkdPaQkcm&C[hr6K!!D8r*-3@Z-Q'k5`EU2++bE'4CE28
F9(6peM(1p#2DB*(Z)Xk(!b,!X2JH&`KSM)HC4eVp@#)f@#)RG9JEI(G4D!033-[
a@$+qI0XL(mDSbhP2F%4QrQ'5G9eL(QH88d1BSDBqG8aNTGjcI!fk8-dJL#*+LM!
%d*`Kh0iCrj2IJ)*`SJqBI'qVp8ZJ@i`AM5Gj&EkeTp6ZPUN8+Tj)YVQF(Q3E6k)
l6T'(#k"2K+Qcq$Kdk0#dGa9kN65$Ykp0U"qPZH[%BN$RJA4$$dkU+*q&a6#`*1T
,MJ2kd`Hp&R'&%@%aU*439-6X9JEA)N!FZ'13!&+CRHGB1U8abd"KZ"#IRefE86T
JZ"#l9H65+XUUf2@6J8XLi&B,c0m8,8#TYCGLHSS-P4EhdU$V!XY(9C!!2jj'RSC
#1Uk@1JXA@(5J3$U,X*EY)1jV[rJ4X8d%&iq"UaaCi30#CF,JAmXRC$R9!Z'jS2E
S9(aS2&Mc@+)*dKlFVEKf-VAUSpZ-iE,ZaEl*+hlG,19pUGhZ$aILL+`9`FK-DJE
)&8mL@,Ab4crLB[2*"[)eN!#Si(HfRccCqP,*1(DND4Uf4Mb9"ETA6P#j&&JA9m#
P-Jee`D%MY(Ma1PS%PSF2N!#QiNec6AI`mVbT)dm(8F'"hA6XhK5j564k4FNM+Nr
bGKM%1#X)6bh`leCrE1dPmhefJ#!d(51IIDNArm5-%m(Yb6'H&bAX$#Vj8Rl*`)&
$q[-0#V#rV4BL#aN93f"*PN8D+kk&UrT8PL8c0c%a#eAYm'@dIMS8*Ae+9!`irY2
*B)6bSM1'J@MTFi%3$)MT%XQ1J)6[MB1MFH,bHAZJ)EFJ#&@-YpC))cIrjjT`ED4
&63QT#HMdKHZMjr[(pl5ph6PBJhJ3YD8UMSd)UKQSa2PX`#MT8KR)8#CkMZRMU)[
jVP*Je2"8`%XCM2RY)-qhS5e[UJ*2fN[,+R$`j1ijIEH'9#+,0m9!TI'(*+cElYY
3c%BGp@aI*Eh2bfBkL6U$I"0j!Rh)3!eGSCqa"Zi46qhpD[kYlkMmKh-QiJ*&mR)
SGiLrm4UZH55[kpELpq*)Cjhe-h6'+c2c)XU[3@JUp!&C`icD)4K+%G(496EPkA,
VYVNP,iBY#d94A4kJ`"XKHU@Gc5P@e4@*Ri0DLIT%iCc)'0Rj4%6dd2eb"S4L94c
I6GU441GY5MGKJq)q@'QI#(dkTm**,c"$brm$XJ!c-"U3!'i!"IR2ZSK2N`T4@"[
`BKE8F"(BK-l3CChF5R5lR&@H4$A"Jf%J@%4JHCPj#03ZTeY5ijd3J0VQ[*1Tc*m
$pmL@MSZ0IieYeifqHK645Se,*BYSKA9dJrr[ZPK)@'[#l3LEd)T[SdekpZCmG+A
qH`e,j[lCDPN)D0fVBabl`8Z`U'TGA)(A!--`PiMaeDE$q(d2*!`[ZNA(8iBM2d`
IU`!q&A-3-`k19VJ5lRUI&rb"T8GPN`fb,"DR$'[!m011iQZCIpD$$%KX9lSq-Q!
3&dY,Y$SK1L*Q'9IJMCRLG'pc5U!0hHCLa48Q(BUSJkNhVh#[`j`DVN"8[ha&hIZ
Kd99acj0+jk,AQ`9J1Z@5@dQ0lcILj"4bfY$#Y`m3kSf)j&5NI3eVfZbdXJr3`(F
K)M"MHXIX##0rcRfEd&bB(eQ3!'ArJIM%'S$PeaGb()9RC%+5a8)2ET,dPJ0VeF+
*(,cR&EZTm(l'dfYbGeJ30l5ir%PjJNCVY6Cp-"rRYG19rIpkaFcqDq!5q$2Xplq
@BK43b6KfF)2Y@%Xp[C!!R$@UNAD&-+rMKClEh4D6ZXB#SQPa#R-U(3rAJ%$lbDY
+jTl!a1al-h93r*6c9)K-*XHMbScK'#9mlJXYT9mQ*XZ'Cf@X!L[rp'lmp5Y6YjV
X84Q!-Mki4c,Kj,JPj@3ImH904[#2ZT8%r@Dq'IUX`X!J3[6M32hNdVZeK`B94Bh
U"N2qCJ9G1%KPL@FRHT,"F-%DFc*T*+6V*-12JTqeYXCejhLTTT4@U,lh[,4fJTk
j1+kdBK5m!)!iIc+NA+A*!KJ*ITQH[3I%U2d#!,CXHBVFA4-Y[UP"0iMYdLe#)T9
$5PiKPd"djAf1b"aM@&SAK,TeJe&3VRCHS1CMQ!*S'YcH8!HNDK*UmIV@!0BbVa2
TT,BYc'[Hc5#*Sa$Mel8b*H-Xdp'NfYlQ)eSPqT!!"i9HIU!EXP$3(KUd1l'K8I@
#q@qD!1S'(GDHr,NA0+VD,fXFaYe)jN'-KhF8T8EI@ec0)Rk*k25V4KD%Kq8ESGe
S[2)Q[+3K$Fa'm@N*,cleGlR(9N4dJ4,(H,3Q0a%T[8"QXDbm[`4PF35e#e$4KVD
ZcM$UHX3*`-&V)E@*Yf$Fi#j5cmVj4hmMZde0b,DE%rF`D3@jBj!!hQJ)YQq#Kbf
9-3LpfEK*Kdm2hfmM,m0dH2BMX-Y"1!d0D1M20`IXp[mRDaE((HcFXRr(d,b%@3Q
BFH)%*FmabjYf+'0A'fX6"89Qre[F`KHhSjr"pQ6%kT!!V8YhT!4X'Ii6T-`@M@G
'0&,V"Q![5"R#&fr,5RpLr2a`3)-rHQXQ#c(Y@&SMmK`ah5*BQ6QF$HTpTQdIKqA
!!r8lU,er@pkEK0$QN!"cra-qdA-)el4fVHbLe[DFXMS3QU[[9H[&kTF#4NX*S-L
a#E&09S-1pf6[aXDS@1F%N3VY"FCJ89'ALU6[lYk,I`"90fUR[LMJIPN'X"kKZiG
Zd(I15S-*0L@K1*j`'+6+drUZ+5P!@b24[rZUG+Jj-eS+G!QT",UfUb$Fe,U*RJS
%q68kA-4B`f[(dH-f#4fQ1J9j#)Q@TMQS!(8X@[rj+UH&3VT$eAZRR+4Ph(P)ZZ5
LEA+$iV#lH#bV&P`De5bZVf)1MZVeU4bJm![5mD,5d3XaHD'(19r*+r$,b1&faJb
XdkdLf5PHJe`UpdL')AHMTfd!EARrQ(cUpF@H$f2RZQh"5iE$hqklcmUf,+,[e1G
MGPq9M$BF(b8efYI`T@F%eF)8"48*MX1eI(rRr1T6RpbkfNE@9IBb#9LAIXeXadm
MGAm5km(HCY%CD&F@dEh["9aa%eN(pJ(*Q,Q-TMY8,TD%+#GTLGNXjh56&TZek"'
44[bBqK8PTlE"Ph[Z,3AK9UVj''XN9hm)8X%dpFDQpE(VVl)#[[XBd5NXZ22qP-e
Ud-(!X'RM+pUdZd1b+beA$Bdkd9"2SKAcIYXN+H28XE0)[,qZNN5-1B`)f($!b8Q
I"Ih35VcaE[qXe%%IBMG9IK*@I$$X4TSrJl!--HF3m6-qP[&idD!cHJ&k)$SEZ0U
dllUU%cm[1,)@2[$1D6d*Y!X*HSl6lPI#fNSKQpE0$N6KZ-LYL&!qN!#(G6mmRlV
1&0#653b-K4QbYcRQi&c2MYf)#3M-!fYR![G1,AMa+3!&m1ZJQj,b252%a10Z!f+
r26*K9lm[)F6D2$S&q6Q[)%lNG9PSK[8Q-iC(Q'pPFT0aNHcKAG4ma)e2X#9CQlK
SCI(k4`V-ArQ3!#F'Z1YQkTC%a+@"P%kdQF"Fr,+mH[Y$kfE2h9Pj"H14F"D)D&%
+*mhiEf3-F@)"9VCK+erJ(irDEaAl2QS*BD-Y`ChHpc4A9fBfR@$bI5Gc`UDL5D+
f$8#Z12aS"FP`Xh$I9XG&5Sh8EP[C0RCVZB4lDFULbXjG)"'%JH(,6Z-Cc4QPJDE
93Mb6m,6,H6mb(bq8NF'9I2abTU98'V+a'1c($*&lM)U-"HHcac"9q*hj86!cA-L
$!5rDl1kTpcq!FL)5hi'"`3[pAc)BjEeE[!$NV'dH4E,rBeh-i)i95&U1rGf[Dl+
(VBR+9YpUq#Dr(mTj2f3m-HBVqYLeaZ%$cK&'E4CH)Yr0,ekXaT3+kE3eUS#mppa
LhpB4*iVNIT%!L!U"IA-i-%@k&C9MJPUhRhR[K"K((2F#,H-lDc1`kb-,eBHX3ZY
'9,A%f)DaT@!r&4GAAmDq,0rG*B2kiaHBI@FSU-kM!#"Mp+A$PE@HDU2S@+XHD,A
+,Gf'Ee'GiNIS@iNB5!iA(UlIP,pJ0AYer[5%rMGTN!!*`c"iSY,Nb`+SpS-"p0e
dVa(c5m5fFDNaX3q1VPN`,UMIDrY$S+hD1%eXA&8V#"e@hV2G,(LfN!$Cll3EFZ[
pqL`M&$N-I56JZqE2'UZ1QI!HNGb!pE`[1M4E+Y&barreLlj'`q'cHU5DL$#`hkU
)bh5cc2Q*&DF)+LbUh*41*NGSU"6QrXAJrKiqEG-!J'lF6U!90i+GfJQ0Q@TpGr'
!ji,+lDljGdl1*[3kA4Y225aP8klbMRqqP[DPiXMTAVkK,jY)NIG)m'CF*DK0&(Y
K)bSZi!Q'c5VA8$I!2BG$[$KAZlPF0U3dAdC[IL&(lG!p9IC3KSNjBUi&0FQBd!`
`cXZR9B)0K`$8R2(!H4e"RfKLVek620Y0k9ddqL@V(liYKc1eYIGVL1Pcfd)C+-k
GA!2i)G`1M%r@V!I"R*-GG1LN4fDD0UhkK[TJUklAd$U*K3[LMdKPMbi08YNpfh9
9b[80A-4@3lj-,+BJaS5KFd*D6r82-&jT)##L&3l,)RRAJDeEH&"Q$JGY*2ZcrR(
UB%@@9-%hHXeAKT[iG-1ZNT!!D#[@GC!!Kh2X&RG5Udj9A0!ZmqKXBEC(pY9i)L6
FkB561mh-e@eZcJ'r)%2p$p)mhf9V9ZEXKG2RA#Prb4+dBDXQTfU5IjfCCb'p4NH
phQE9,U95j'+&Q-BRjj!!Mm9F#)Lbha5,[BrqTdYh1(C56rhHb'Sje6,5m8A-8$q
Gh'L@q@0H4[5eZAC3KKZCSKmX#3d6MEbrU`KTU5FA(V80%ad3k$MU%LC+eTS*`3N
MS($P(1M"+XFlD)IC6l9#@l*9*)L&UBYFaiY(`eEAh!FZfk*#!CA!T82jBPY968Q
%`2'c*JV1",851[)6k+TPc[GjUU+%d$f5d,8"X,[hdpSMK2Yj`B(jldH*3LIh69C
[2bSP'bi1cF-V!$[h(J1e`0R5@K6'FF&G34Mq+UV9KC%(DB3*f5eZ+b&SLAq88ka
AQE&16fVi`$Y%IbcDh(IKqR4I,KVHXEqi0jk0[Ap,4B@E+DB&rmjHDHQBi@KeeRY
05,ilfkk&V8X1k4q*@YE8Hh1I,j)aC@4CLaMXI-lEcm-k'cV(T%dUi&ej9($lk$U
cAcrG"P8RdNNEmYI#Uj0$4r2GNY*!id$KC9M[H)VYb!iV5J6ci2"3e4lVRCceGFF
%SVN&GJ4'(ijJ5EXJY,$JjJ6AUYL9r'pAeG*9l(Bd12,DTf-D'(4L)aRqD-H!Rl(
0-l)HaI0DIPb3!#S)di8D$VhP*V5YQCD+TS%SDHE9d1'Z3'GfcM-,UYPVYB'0j0L
,#2X+jEmiUla0IElkR+r+V+pX8G6mF1ABV%L#TXUl8b&1f4VV19XceS#'Xf"iY"d
*m)5`V"80pk5@&pah0(i2d"mPeKfhmcZDY6T005RJUk@rAJ)'QrDf"1`5QV8@qmr
CJ!9M64)2-+P)1i'q5+)kmI!lD&b5lKSH0D&jq(Hcre[lLb-'lJ"XRi$2683l[K"
*56U`M(352'[hhkjXbQ!iXC6+Gr6i&Ra20'kCP66JN!"R%e9!J0ZVM1Lr+)4QNT!
![UUjbHk2!j[NHR`E2VFd*(VDej,CfR&b6J(9TdrRE3+0HYZ"b5Lr++U2B`3QP@P
[iB+!TM62K8X,!ELX8"M-LllpIBPm&&j@emb6$Q#80hXd9eXembGq4*G(6V**e-*
baBF[2U)UeVJFVU9rjpZ1k[VM8%E6cYla[SRql[DQ+e(@kbdK(lj$&#HrCHcEdKY
JZK814rS[+p@F@qch8*!!Bp$@8,r8(*E'qT2$A1Mcfm!%%Zb'-NKBULNGF-P+*8,
ric4N2`3DJ!2X%103jf$5*VRjq&#dQ!'IZr4*YVX)TM9GFc%jZhHjTZ,22H$hIZF
BL2&[Sc$4i"2Jb+ZYfl0(-aBD6LNj3$Q%ll&!V-@4hM"R5riR$kqL%D[m##F'h`a
D00-#mSCqJQcbl!LZCF+h0UjDEq3rI8VU!0PLUM0P5rJp[253!2%eF,8)qaj!5H,
(3ePIme1&2Bkr[+G*b"N[jH&SL)B"[a'd4FLliT'Ml*!!$aSR[QcC+IXb@@XG9#h
6ICS2M@XZ23D'#fD4319Y3rG2I1('S,kN$$GfcJ$33I*XU+()2Z,MQmfNjaXV)e'
qfdG&2fQV4`UV2,@P9d8QT*A"j"Cq1h,GMQaPPBiFhH,",bhKC#0b3bX[f)IV1mh
VQ%q5GN@+4NrYBJ6lF,%YXq*c1`TF"mCe(mYr0[JLdT)$BGZ6e@'FYIff#N%FpAm
B1+X2MBFYmR&26[dYm&k,ApqB@C5[mfYdG`2,3!@3!![I2`4NVmL8`[+cXK')&+$
rmG+9er#[khZ1Yj!!%FC!+abKND@Y+YZ4D1JeI"1aVLfLLFQ%4j4k5l3UUci'Z&4
VNXp**`1*E*0Mkb-N'SbVY2)!@dTh"[-$h*9VT35k3B'51fFlBPf)lC(BCYd5+5N
+@8'c,80LBSK58kX$a,r!Sd5V#fm[%Rhei`k#H`9Fm2([Eij3INeXQ)3`kM0U&Pi
I*E@S!CcrclKi2Q+,2K3*SD`Y%+XlZAD1%m)!TrX#H#0"9H0Y9'#M,q-!A`#[KPH
"5ff#S%ib&cNcN!"9j9CQl#[E[YdC*NJBV+ZajK2a!C(Si`Zq!25IL38j28b+')$
"2-qU2F&rX3$cX&B$0Pqc+Dl29D'9)5k3!,`fja4-UbGqbb)@l5RkQ[a0A"mpFFr
f4M@Ea!dHMp@"J#fiHSjiS#hF5J%qV,F[Z8MhG&p2-FcZ+didA4299LPAMNGX)`C
E6Tq#(YPJCDkmcIYFSrCVeCpdMb)XI4%+dYE"bk+Dj3"*(,5qRk80[M3!CbU(bC!
!dP,i949PL4PjZHGXm2dFJp'ZiDA'`$fkdcmEaA'8Q$IDlPh-L5GXbM-9VaKTl1c
JN!!`fH,dkNM)F&q"QqCTZ,GZechm(E+Z9!,E%&E1JU[l6%T,5V5ieU+d#XfG`),
+DRDVlk,U%Y)h#2lq5LB1Ad6C'NBm'48JdhD-UmVqB91qbQ,EC#&Gl3S31crQELQ
JT)fQ(J25)393D3,e'jF)aB2(&B1'rcfdRJUjXNTFm*4h#*86#c'Qj&ZQ,%-,N!"
MI@AiKem(r'+$ElJ$EiQ!r-*#VL"D*`9GEA`qPI$$+hPF[3Q01bipKKMRekr@bYJ
`&m`Rc4rRKpJ6VC'HF82Ke$J5Fj5fk@L5-#h#!hS86bFBai"9aQ-SS")Ve[jCXH8
#$q@pP2X!Ll,"CHr*`mNB"3!,(dU1FdDHE![8d25R9+$k$6Af2(N-#NT)Z2k@`#9
'%8&ml4)EEe*SrJI5E8GbL,Gq2hGVNJTHHf6,R6e!H+1XU0Hjm+IibJq!SI&'pMH
A9JaAJhHppC&dkj@BC"NGAFiq2r3$4%3mJ*Eb*eK`lP'TjKp1TcF[-Tp6&*G[ilM
HB84`GT8M"JMj-KQ%[kcahSld8S[,k'-+XK61!MSiQMX-+J53!,Iq(`1D+YFSZAX
qhm3GNZ)ReAED*l5ZpD3)5aG$"hQ$9Y&e0!8I,d-qNY"9Hhrj`aUqI(Q$DhR&4ZC
N,N(mS+pYH8TE"Dk4kNeQ`IJ[Bqj([)a4G$-ZX&XTfNEN@Fp#j`m'GS[4iiH-Fm5
3!)A5*ei)h1*9#9),#ZPekVIfmTIR2mYQTX(F2b5D,SHEKYH!bSL*mPhMb3p8!Xe
4Yb6e'*E114`40'Je@LqcIE6eK4J3S@0j5KX8eSkrl,f$$'"!hDMBcPPMq5[$jS9
*i4*CdKDeEJ)(56e&jMq5PSM1f@[Hf4X)*F6P@5T-SPFLBrb*ckm%bIGGb3i1kM"
"ak!d,3LiZT+F8a`fk!Z!A'(h[9p"EkpT`A90f*XP&XSf[jLh3arU-QDJ#616,cL
P6%U4l`f(E0LkI5GRYkRri'$$hjhrI3i@*BLJdA&!JDfr*1p)iYSH"dARa&[!R8a
BVRNB2fL'bf,K`c8Z'(Br5LNcLN)#fQAFq$'hf#1YcLkmZqYIPA$cJ&p[qV!HBNU
ke9Ud0D',HePVpNANHGGNJQIYPdS"bbh`pM0GYPQaFp$S4(r4E-iDr[$pX*akBTe
S3qlhi$qq1f,d0A2Ca"HQ&&TL$CaHZrHLJ+(XLH`!R04PI1qG2PE$paYAi1cpA9Y
adVZSk5AFl04"@*k4'qRH$01(DN-L%YhNPSJKqKbSZmdTGIDVf)ed6A%2b1$a2-q
K'&ij-'mY)+jmLpQl-MJi'm,hRiUjI[i-b0$#q#N"PP#TR,P#Ri#E"cJL8Xm#MiL
ZhcT&8D*&EIYmR1iF6-F($k4$0*!!@MMZprB)1&q3!#%jd@d(,FSqPBAP+SrBEKG
2aK2-Sl&jXNE%[M#@SbZpk@0pFPFl)Uj!%!U`J'#LI0')6CqE2T()pA*51+C2A%N
@EPdIX9&DSB0)l9Afb8HZ'3T[q1(l"P@928VD5P&$q5%[#XM#Z9!j([LV0pVFV)r
KYYDLDa4d`!LiiA6+9S-!(V,)fqSP!YhNd`LcYc43pB6VC#bcFKiP(K[Yj+l&3EI
LDC18FmjhTCGXU#Rime0(b$ijLM24YI2YE&)5Rd5K1NdS@JQBT@qZF"9ZH5iPUTp
2-Z(RIdqV2CAeIVlX8MKphqG"A&5KCIY0PDZR!Nef0VNe8am0ci)JNA9e&Q22'D&
T#,#S-"q4S@A#,p9a#-i4p(*d*m$Rc%fff+SQ)`)M%L%0#F!5@CpkQJ@h(jEeIZ0
HAUC'U$@F)%,d#`XecVRAbG*D!"+*"$l-P6`6akMr(pPRA6B2$q9MkR,(0#"eV#F
cTe$bda(YlZET-IiI#4lSeNH$lZGBc(lre#re9ppe62hl+[NZ[+Mh+cjB,!2cfl-
k$@[PhhPH-q`VF`8Q&fS4lTHc`%([D0+l""k5ZU4H@MLh!KX%b"TL$`dp**KI8@d
!lYeal2[Fi0`DJ80LIAlcKi,ck5E,Mb!,`eK`dL3XLrhC!i1JZFPecDBrI4U-Ae2
jrYQH,@+3!0,l@eH(lbU-'N5N6NeC,E!9JHVKkdYK!6a+f8f+d@M3p8IE$YiXG34
"jmF%0SYdmBRB*KjD3p-6FpFV,RhT%KRdr14&1LEiEH5Qp'!#,lH4k"Gb%G0*l%`
eRk$PY[hNqQU6j4FAYR&FDe8Z@X#&Kc-,XBpLMj`f@qPqkCR)rhT)X&X*DlH6XTK
6'%K@PcE8i3ErpVaNPla&N!!`$VF6AUAd-NM'H,5hX`DN$%@HhHfJ@CcZea,&FRk
'p81``El*Z&Jamf''lYT$5H-LPr0U6[TAAGR#@4raHPME5E2Y%eII((9!9KGYCY[
$I$2)53AYG$(bm48B1DMpr*+@A#l%'D8cKN+BD%8l4RrQX!Yll[-fk%V0MG5jL)0
GHa%+36FHIiH-*bl1arZaH%Zq-i+p'5),0beP,HcUEe,[G2P2l*JRJ+H%LkkA6aR
E5`HY1cFUiM@EH[CIAKF33@EQET@@j`,4SDGe3E*4'"6kGaVAf+e0j1DVI6f8r$+
aUB8Y5ITheNe4TLaK0Ur(XlfXB8dRLIijDT(Ip#'+Mpa,#U69j+&$'#4J%d'EB@2
""qKmQ9M8&pmJJh5P9(2kJ8bmT6YNXQhK#*d(T"BebVJ*c@0G9Z(XCVjABl&N`!F
l$@!(c)&h")X&N!!`cHY83QEq[ZHf5Y,XM+A!I92)(mJ"Z[HDT&KbLFG#SJm-k%3
(,GQ`EZ3+kmZ8mVIhab!%V+ja(Nrc9Kc"i*eRf,M$H9*3`aa2GkDKp#YJ1a1XT`3
`l6*Qeq%ITGHF9dV,i30FC#kCa%R'ar13!-HAMY--c1A,(b!XcEr#T35N31kkF(k
4+Tjh`5eF#r3FPMBZ#*KPY#I5&hp82q(ZBZ4LE"i1l4'Y5pY[lBp%NCC&5DG`NNi
V%)hR2[*6TI8p+dhKG[!JKe3GmMYUIXhrZRkV,fD0&Uh#I8M*`[lkpF9%eJ3S-`'
PZrkepD*L+N0qjb8#YYaN`)r)[&biA,eL6h0+LXdpR6"kLJ`2IBVj0$qa4PEkf3"
'mFhT5Md[E$KCP*YRDP8+XC!!jZdIKr#Fr%XilX%LXEUf*8U&DQQ(BUAlLN[2!l*
2d%de9b)M`3jY99q(GhpkGKbCAM0D$ZTQYB#$1%5kc48CFaPC'jb,e@(kfG9#pAr
5kT&%,V56cC)Q&1qf*#IJQ$b&c(3K(baI#G,*(D3Z3D"iP)-@YC&-,!iIl2diC'V
![qRf)r#C-l#HFTHA-iG"Y`9YjD'fdMb&[TU`YXZ+h@NI54@N88-HqPX$")JS"1C
"U2eI`m1pPISJP$C2mlL-PVG@AHpEf+Hq+hP[KP-2L''NJaD9UJ9D,+D-PB9,Uic
3aU[$0pZQM'(XR[d-B9ZqSPbir@Kb!P5F!4h2LI8Q'L5QMc%1fKrire$0[fi#kB`
f4G5,aaTKm`[V*BAiL!EL-CEXR1mU1aVFa`'0,q,F5MKXE+8aUK+YfT&FQN*FrKI
[[XQ-dYMAMGJJ&9G0Cb-@T($6l2JZCQIJjbIdB+-L!UI-$6`q5ReG8RMRPZpSa(A
9H'U53LIq,Z#i2Tlbmf5$pVIIH8V`a%(C'Ll9*bAllrJa0Jq)"@pTr@2k"m$)JG+
bBHX*XUA3(9JU11$)(UJZZ0%pFJMJe((#SBI3[Q6CF3*ATNlQ8-eDrVk4Jk&pGRX
kQ-)1LjHCP8fPh5'jF&lEF&CcI@"8E3J$Q5+U0N(&rh"[Yl-,1G3TU%,c8P3*Ma@
I3%RUf*,N`jKk[DcfP6U@cpcqdl!!*ZQjh1Y86"9eU(rcXdYRXepEie!@5j,6!bE
%Vf3T(k85XF@,)$-UM-ia$H!-f0aqX5Qq''E,,$[k@3),E&AliRRb49c'M$kQlT)
)&j(pRlElJ`'@TdQ84h(1VGe&Dr$-p4TmiT&Xr(qcIeN+6h84XpdTk18e3Jj1!)H
'Ce+(Nj'VB@5Td!*P`"C+FHm'40PQVFmT4($Y0%m8,(DRK9T1F%Pk(,2%+3@[%aj
C2-,BFdH5q&h1-jS@HHJ"XUjc9NVNHI68-ada"f`r%Z@'kLLQQX'-I)T1ISVIH-p
i[[LF1fL4Rp[kjcF+AqZ%)HiScUHaJ3I$iAHIKBb[LM3h0BeDLirk-B[bUarB8ia
&N!"9jDl9&CF`jr#f@-1[LfTL'(L'T(b'ZfcP"SGHXUK$"4h*L51$Pm(J$AdXTCi
BKh[(0UAHHE@abB`X9bMLTq$9-2SN$2FZ2ic4Z6S#QF!-AZD,+HI(I'!+)rPlX#C
RA@SS55T@CB%XRaMkCp,Nke2B$[+80Nq(A`'I+-I[E@m-JLF[[-)VQY0JT9faH+K
')#J@Y5"Vq&HIJM6MkY%AI,,ZkL[b"9VQrK$kH-EbTpLQVJ,GkGN8'@d8SIXmHRM
C`DF-e`HjqJ)LjSKFMMRJb4YR2BUmZN$48ICZD34`IV&jq[Y1h8M5Q2-6YMS8UEd
1D"G,Jf-RfH1qa4ZjL!VAHc$2rH&,G!95BH#pAEc,URL*4+U`r`40B"BhAXFl-Mj
kA%r,j*JHh'qi['8iN8X'a`$!cQ*fjYec'4h0iMY"M2H(rb)RDd106I+#%hmi$U,
K8eqj21"hF2%!Q("`A*IXLJ@S+65erbk'Da+`A%Q%X(-Dc"rP@V#%LI`IUF`i#G5
APi3cqA3e$Kiq85-QEfAq3!6p+f"JMa+0hq1KBN)GFbrk6H$fj+LF8AaLP&6-4*,
*0mm5mUca3%Yk,T)M*G8fFG8l8rqJ1c#$j)*e"C3j@h8QRF(TG1&P8B[dBYlZQY6
fcH2A36CNeGK31[PKNC8SMY[A,#1$`ei`)4irf[RBK,RBCU'kfQ(qqXqe%r#cc3&
Ff@)-qlFV1I2c$KP)Y910ApE1,h5!PX0")@0rN!$Rljf)rN0`jqCB+JAMdAGJIcQ
BcpKfSPKP9@0eBY#6irYmqP-1q$F0R9K4YUmKE+8!5[CSQqJ9(8EGSrrE)P6kXdD
+-#c%LlrCSbFI)l1UC%02R)h"-Vq3!*9dV6Dr-)cYijJm`p8lYjA1A+D'30rDC$%
[,e"rBe@-Lbhjk4%!kHKFcmS5NY5(R!c2GL&ZY`[4,F[LjP$pHi`2RCQDR8U![Pj
f*,2"G5[#K#V)e3ZU5N8de`@R'4([NIHr$1MfqY9[4paImY`-+G)*m[1`iF#"8VB
J)ChCb+VNaJaJF83Y-dmL"2C3D!*J0PDI2Y4!(`eA*d)5[a&Lfmb@UMVX$iJMCl3
"8[T3"!$"X0`df+Qam%&`9L*8!jQ+G5+rJb*kArpHP8H#&BV4`YSq1(pKbS`bAXd
%DBZTM!PTPRHAAZ1QjC*C&qTK#KQcXM,,6qN9r1!)("P!'*eb6(V,$`NFMcSaja$
N-2r[3E*$$(0J+J8pEjb)J"qr&!cUjMCd0"#&%TC#CVQEXYBGq3QBM`Ii1*d'Y[Y
SfljcF%"'8&&55LV3"dFF8RYJ6Gmh'Q%!3fIH0-)M"09VM&eHD4drP2k+YDa[+*b
3!&mPkR*T@klX6PTSNJ2RFac0FBCP*C!!brElm9GmdkYHAa$1d#RFTS"L*DJ3KYr
01l9$82kd+&"BIX%14)NGE+)Vcd!RQf'd"Qk4%T`c0Ud31LN+S3QZe8XbfJYam)E
)[%eQUbe(Y$Q$+L+(TVmfIBCdN6&T(,CFGdY"k((@aPR`-X,CScTTEpmkQffA"`h
mS9@4V1ZDLe1&CRam$Kr"3e18GccF$DMfch"iFRCKapC)-fI[[bDGb+HJ@IpGSG$
D3IDb6HHphcQQA6&h1T2CPmkP2D(ELr@5X[$T+#AkmcHMm)l,m1EAJ)ZMFD'0aM&
LbR)&,3-GpQqV8U48#"%j12`fKJ6rBNQ5ZZhj!a1JJ5JHh5Em0qYG1&a'5UE!I"Q
@+8*r6&Y&!`6[cdD1M&r#ll5+*9AZHL'AF3re[R(2MkPNYZ&S[&pN1G"pd1'GrQm
(#RjG$"CXE$a"jiKrI#aMrX9C*FfAed3VE$(@L8*ZX'KUJ)3QjRMqKl3[!N3KbZS
R#6SI%5Q("FVSeGFZl(&V0HG'JY`%%,S1V[GqP`Z4j9H)X&Ff'b*LFZ#i5%JDUi0
bYBc-6&2+I9Yr@mTEq'leQYQ5bU-dmNkkZSdjRP#e&@[12"8X&&I+e#k[62)BrqR
H#Nd+[`9P!MD&l6&IZ3VhSC0AjBmJf4Y)8lrL-M$'@CDcIT+ZIl-e8%b3!(cT)ZJ
Ip5P&6G"lEP)+9#qfY)ZS8%5bimX)ZlkI+4m@&'FqS6XMC1GJ0+*3&DD'AkYQ5,T
SQI)i*P*jpKLF(bk5Jj0,M42(Hh+*+P"qph'p86-%Dih`hMM[AlhB4!f0&F!p)GP
"aQR)8'FDH%2P)$J-mc*SPLB63XrMD3e,6D'TaT*i"`hZ3qcM,mSX4e)[l,'SNC[
3&"B4pLUfS05Uc9-6NJX@V9ZmfCE0$4@EbZL#`Rkh0XUVKrRM'TjNaqBLLTB&!f`
L)YLfcdQ,Z2L#U&jB5VmmkQU!X3,p9Q04%Tf+Rr8jp'$lC+`jKIZ+d-X#`YRd6M$
Y!6eL-m6Gi&2l64HDr`iBf`YXKZU1GS836YJlZ@FkJ0iUck1$Jlh'9-CKF1p8Jh,
d3Lmm+p"VAQYfjcdAl9U9F8[L#Kp$F@FhKM$GpBQ0`2$f$j(S(0E&(Te!6'h'iD"
,*ISc#(fZ*-`c!A6h4"+*%&HHXA(%R1PqJ#VA9`2df3!&F9!4brC[$X"r'%Lj509
K()3!&p6)$jefYGe@hF[iPd"De)f`Kh2`bXleX-8j2#i`Ga[j-dSe@326b[BFGEh
N@#MdF+fa$!SkJ$fPe2X6*TLLMj'4U,5XYISJia'!13j(T`b$Mldc--P30R#VM+P
G)Z3"'!fE+IrVrlR2M+Fa3fER&CNGC66Cae*%acb,b1Nq%#-Bp8(rfaSp#,e)FF5
1U-5qN!"8**1%[+UqHKSFrrf)EJB!FlJ#[3rhFB84!*8P@SQD!a,ZL[mTMAkD"B"
&hab&e6kl6c%UYB%j6MG(NrJd0Ai8G`"96Mj"45%8iFGBk[fI9C!!%`E&N!#`PbZ
2"YFiB@Bc8fKSeMK(Eq6VBh1dQGm!f@cZmC5$[bQK@Z[cRHIXNlUqYiUhNM98&"r
Bh)B@qHaPF&$R+J8pYI"CX#j*&VMqA1QhV!*QAIl,Pj`)EQS0@Gph"cGNXpS0cAb
)G452PJ61@CjJ3ClpP[dm+Z*ea0plB!pkr0cYP6bA5J'Y"32GeVQ"))0k3RV-IKT
'[!YB126AIMlGjiP)3fGkR'a5JV@&45+GA+#c'NJ(633%))BT2SUfE[d,c,9"dPh
!ZE-2TjENB`Ri(dkKLZV(+m`S3KcNaiZ,EETQkJlN6phH)R+,'FDmp0$6$)iSVB*
#&@kjGe6MRhi-LR+3!$-T%h'ZSr5`XCpjY%Jq$kblS5'CD9#Sj9eL[D`Ie"fflKA
*))14*Tp`[6H[ZZKXQ$C4(L,E[%K9!(iD8KmZb1'BaI6&4[QM3ieHi)cidC%C,DQ
`+$jlIKATN!!ZV2Jk9FZX3,RN92JFk,DI1141kii"X3[B-Ii,bEL(f(lZ"NFRRDT
hYP,1c3#AQ5DFPdQhXdLep1+fVZJ)$R*CIehb$Tq$SFF9i`#kXQZ(HK4TCYUBr1h
U%JQ+!K8C8SQfdH"hm2Q-5(AbKjZMQP+[HFrZe"d8RAJHJ#+A93S,6cM1ji'AAM"
4bDlN5iF@*`cKU[@R(&Q$FeQBT9apZ)l5,b9`-@QJ`jm2eC&P(5%Z-j9dQ#BZ-p3
JpiQk+RlUHIjNmEI%k*EN[K"X,-a0HJGF2dF'Z8fa11bM)GZY5#HC"kD(IE%E0i(
r&e*cU1BIibMYK4,iVL!KL"TKk)Mj91Bi@jjAF6cS1iK(m!25*`4[TXq*eiC"@a+
0MjDYBGGhpmN*F9$#TAA&j*RI@'X8D("!`JXF3&Kf"H6G#bES3)iBP"#8#!QJb6N
`IP6GEa6F`N!KRcB,*bC8K@Xf4%HK&rm6ZBp5FBa8lH3[)2EM#$YrJd%X[4Lp%"J
V6JQ'hak,CcqmT'(!MN'1q-65ZT%)3m%V"-%fAl5q43Pq@9'ZY'bdKkA-*Eh)F62
3BId3CN-"piRDf3mHb&D3!2iETeFil"hT"a'VVpI$CbK&,-P+XkMfAJFSCCHT(&L
@0-QYH$eI24maHrj$jj,8@ZLbhkAA49S6f8eeX[8YV1Lem'RAUYF5A$c*L"")$$[
$q)`HjkUAV8HN"h0ADl5r-UhN*DZYKi0eh,I-AiDN0`Bl9LLVYM!dqLNBl*S%q*!
!2-9-PHX'p*CC0e`4@aihHca-h'lDk`!$$DSb+*M)G,+814Xb9qmEPZ)hQ8E('UB
dPUp4Kil5meJM!0Y(0E8Hf4M"-Rf$%,Y8&LiPZ'DiG%HdrJeD+RQV,p,Zi-HLL50
lBA!iSj!!"m8dGk*6h1c@$c(dq)')S6-#1E6!LlFEm5"V*p81ra9qj-PBIfhpM1f
#h80MULAq&KFTd95QEHQP(m8$&!aDAJ[6YJ9#&BISl,JlfE2*I4-APUUcYHicjSH
ff#A$rJ@Z20G+$K0$d*00Ff4G&8mr#@%DXE*Fh8b(fS$6K8@aNGD-PF#ci0"3[)R
ZqI9be1'@lj5ll18Ri`I@#p*a8Ur4Z3FfdQV["C!!AC!!RF5iQ`D(@9+'*ACCAfa
i!Y6aE0!Y(8d+fVG&haelQ!lrX-CqY0"F'R!pa[Rqr5D0P!c)bIh0aI9$peN6HHT
DKN'c1T4*)D1dAR@afXLeR@$)f[%KZi`FPfPS65G4PQeqkAJ)3AdXZ6QfA,2p5U(
blp0QAbJSZLK@#fBbal4BSFdrRq15D+fDKRK6ATE2rLrI[@V[Mp!b'%Gk1!X@HU#
3!%d19XVZ#Z8S%L'4Ll["%0VkN!#(i3ipM'd5pPM*eA"Jl&U1Ja9BVPGPYf9-`BF
)X[L5$FQYY0N39`RT43$PH*BS!XiBKD'c#cE!l@Al@,-+r)BpALK,+aUeX,AkpSe
M'Pb,X6!cJb"01[5X&%1E4+[-'iL92EaSpNlh@9HIfa'IFHi",i*+2L&Vrm5CfE'
MB1Mc59Lp4@qmS06,PcE&UN&QG0[lQ5LCM'!FihPcCD&T9lH@!"$GY*BY%dPT!$S
&6f+Y2H&SXG$Zf8TPr#9XmYKXVF5!j#&!KkZC!9US`P9qf$AIVP'p4+H1('-Z48$
J'!FqL0-NNpGemr[hk+"bl1pGBCB,TeSaKZ3XZSYc@Hi8H9#TH5%+Z"hNl(`%#qN
rU[3iV@lF,-b$C*38T0[E4'U)Rhm1A5fiP-RT+9[SP9AaJr"cah6Z%ke&4eF6M6D
"G8038'BS&92DMD!V(EY"[&58bD3(Pe6EB2GcapCA#VpY5G#VGANX3!-ap,U'K12
YG9-CG,V)'pfF4*L5b5e0V4S%92'ZVKIh8`!q+,i6c!TP'*UR58TFlFK9a5[6%*(
bQCem9-m'XEcT&+Q,SI[YK0S$#)jH1-`i5mmfFE[h,FiQ%M0UImDS0$j9pf)Z%GD
dpEhmElpCDZS'Yd0#D82Q084YZZ'V*FmKiR&l8cPMIIEFqmTT(#cLI'9c''4*'Tr
*bFJa`q@2BJASq*r4jDh@[34Km2&d-c&Bp')`f@+X,C)9ml1EKlcG(`pNGT!!4B`
60E#H[%i(M98&d6m[BSpB3JVM1c4mU858H8qa"*5`dMDRh9QF(bEG0*!!ArIEch)
Z!3(p8mbkp3',8(4hI5)SV4&BLhUcbb[@Yr$,'(ARPZ,G8G+98YL[l4M[AGXMEGF
X(5Z)KMFLLU6i`E'dcf3'h,%*0#la`aRX`B6NlmF+`3!%!KX&MdVD!(@'Uqq1A,Y
CA`Cb['*6qV-4)dA'6f!V`--NXa0HSU"GekV@,qfS!Am02#mhBV(eYYC2Gmk%pXc
4Z)QqVk#A+&QcUa+Re,L)K&958!hlNLMeL#93P#Cf-@hA$51,-IqmbK(LcbRk52i
QVYkrqh6r(!C[9"65"lZ``UbB5m4,-&l4%I$l"c)K)BHjUTSllRD*6Q"6(e2eB+D
`!,CkL@AF5kcppJ9DP'lU1JUL+i3Zh4k3!'*q'UST1R&Vi0T`i`CabM2Zh,D'SVI
'+P#5`he4S5AMPaYEl+qQHKI6DkJZ6R-E@!GmB-c2,6Ebl)k(T8f%LcG%eV(F+kV
'd"Qq,VhT8HM"#rkHkEi0U8he`@1"iNhA%Y%$MS*8r150U[Bak![3(8`U(#$+k&K
VD9kZ'$BZ&XQQ29i29MM9bICDA`'!k8D+mN%c9Z5cf([IVjrCB3ia3ZF%dC1S#42
YLc&&%dPq'@jA94'pd[44lRfQD9meLSF@DXX,%%PMI[al2ha)6piJ*L4[TAe+FPR
cSXd--'V+8c&pc*3ieVRQNS150SADT#`S8Ta40PaSABcN0Rm'LqFeflr'Y@BG0%6
c2i3-&FXaNZklPhDe`MidHA&JhpYA-03mC9NeKKRNT0X,3J)QRXib0BVc9"aUSmA
pZm8Uj6A,(4CA1SKm4D'@"h0hS2)+',*#DhPZqV@IPZ@`!ZeF`$(M64Li9(P'NfB
ja0dq("*6i*@1*HY4$3M3I-H9#6P"6UMUV+@IBppA*H*icQ!eBE09IDQ$)LpmX,5
98"a8N!!aL@6r`f@EV#58&-rrSVTAl3JJ,*rET*M-X'$iJb-FS`FE'kDGpdd3,IK
jNl1I0Ace[@GRaApUGf4U29NG''l8!lMT'AiYdMGUq0hQrY!(+CKC&H)!FQCF'Ne
G3RhBm"BCZ+qZ04K$8`(REbrA3AUGbkH6I(c5-p'@reME9C9ih,64PN*kHYJRkMh
YSU,c$+)TY8f"Cb,'@Bqi8R63HXQa*JGUD@qN*H)2C2&q)(NjemD-+P*G,@[82XS
d(eVKp$hmCUDb2)4FZ5kaIIc"6`hiY%m6kSKB0@0h&3Qf-kAH"@*bQB39QEqU9cq
hf&b3!1UhZ2!ef"8(KHQl0AfhK*AQ[h*0`pk%lqIGB(8Jp)i499D6pZrGThH!fiN
)K,6-mN'R$%Sc-J*r)bm4Q8i1jE4fQCMV12HM1V@k@"[Aq0lYpAffMpF&,l`Q,pi
X*H@d6Yj8LDU'JA*9f$LSE%HX[5c)9K2iGqHfLc4i*h4@Pij1M&AYAl`XC62KG5U
MbB9jM-K9e458PEKQI21IT*!![GRD%!1HM$$ZcjF!%%)S&lqILIJ%[FaJJSl6R,#
9frQb66G$ejU2dDLX!fAk$Fc3A3hhJ40-,l&,q2eD1S#+#*L6j5#!#RP[j2ZPbKJ
bKPlCRPb1bk&IVGjhPT'HcYiU5C[JGSVhlAV[Fp)Q8'pD*f8UG-JND[N`K1jSc[+
MBm,YA8)eFTNj%32VIq)'$J!rZABIAf3TPe+d2r`j,G!Q)Z28RVeP06-f9BNDC*K
B&1hI`Ud3rF)i!)V6FbX4Q5&L$XCpMbBRGRaR%D8mDK$aZdlf#b1f!phPZ)lfMa$
Z&hhGGSc@K#G4STp2Dr+T#ASFAXN2A99h9rIEdHFa'-Pk+IdjZB5G3*&pqFTR@Bc
X-MFlr-$&*3$Y+Ciq1bQ)Z)82IdcC@YZ'h)2Z,!j",SF0)[3TLVJJ!qJbT,fIkkU
c3BVdUUGfr30dd'p-h#12V4@PDDFN&ZFaEj2GmS&T'Z8R2+@hkh@`Um[ih51f1Q6
'$&jDr0frcC!!9M8CLFrG"VT5TRF!3JCiNT'[ZD3d-F2)!BQ&3d!`+)hV&+M[J0c
[Qf@)5Pfl![Q(6LD8X+B)XIh@phh9(ImVmFaeNl6(1aE#Fah"+LIA!KMiSLd#h%6
cS#H`5f0@"pf&9kLFX@GJfB+QVrGE#%8P,fN&K2[bhe&5$[MaSfchMJ-Hf'4!*U6
8*A`&"kJ&MIQaiUELAQir$pk59,JShahm(FFENm+P&BN%6Q%E1aj-)Ne%2eV6M0!
PbKj@%C[J,BL+9@%6RF6HH1c&0dUh52ZDTdiKP*0E0bbVPrU,$NcSPe&bBmF$pk(
XZP0X`0*E4lDraL"hXCTiG*dQE@+m&BL5$,A!SVLb2J#T*H&(q*6%Jm4XCRHUc)P
!i1+@[N4VV*h'`EYUiXl5H*'Jb!2UARS[)"6a5fL8c%EjRlQUdcfRS"-BN!#(NFD
HpqS("`C*"CMPhP6P1r9+3UfBl`RCSr-C4CAPp2(fJ8EfMip8j8,VUiQSlK@2`'V
9!N908H'h"eArDAqGeBbcE&*l%lRKDIj4Sp(DUCqU[A1U"Z'%8Z`p1DB(0VYUVjc
NfIL#NbF-1(V*ejVZDEDdiDD9E,$)P`5!B!qEl5`lT`E)fMDMr%NFqB(rZDDVHq(
`[A!HKZp9a)"AepT%E`r-VU(F&DQ4MqLkK)9f$HDeaP&b`YR6libRJRcm8mS%3bN
`EU9%hk@"`mlC$[a5YdHB*iIrKlc8mBI9Db&`D059H1i&*N2`AeK0qPRA4p"AE'"
&X1"I4RB",3Sal+38d3D-!H%MD[QDJ09,F@Ilh#+(qF2jQjkNkL6GTlHrrIb(SVb
N(jP$3kUihTH92SSaE$bJqh61[@5L,d8"pSX)aQmq$FATIML@U4qi`41[D5aq&Z[
5#rGA'Kkh1NfF6Xq&iiNMkiPH'L4U9e52X#X+U5cQUXXj@CRCUhrRe`k,YMr$he"
d2KZ1DpUh2Q4l,'MaIXRXi8Fe*$YP@+U$9GFbikNM#[HS2di,8Bj$dZ0%8*0)RZ*
KK1kf0XT!#iraQ16P6F)hmhdr3edmJL8AmqHKe[dI%BSb,U93I*G2VN9f1li#p6i
INemk@i33**4$[&FN%DH%2`3+V9EXCU0&Ski[@bjjD1DVjNiU6j--[#0-,#XTr!N
8NkbcL!@$lLdLEeiC9aJjKJEPMV"Xp$4Q)Y0N1fUmBpf@eZcf,B-#pf)6"34R1jU
F#IK@A-r$S"T9B'-ASajM8PiIfC(HNca'28kD'J-m9SZU!dAm9@06L58YAQ8"YB3
[i*V-GjCBQYMXh)ajZI!`!P4B&#SaUqB0NkMpI$VK`Vp-T0,9R249+L3S)9lH5dD
k$GrC%I4FD#Y['GJ9Xrei0C,rNV(DG[hr"e[*S$C[XAXE9)!e1kmM$mjDr)9`U@r
%[ee!kL8hL0Z50Dm2lIC*)bANJ%VhVqJSj-C$DJPq+68fVi0$K'1lTXRA*ciAbF4
SI#ZEp9SBjfNYdF4c9Ca[+qYF6lAH+X6)N!!`3[!r,arLCF8Ic36&DAaF*R'*6d1
SaRb6q`Zqr2FAD%d,fa5mdP#rhIriFjPdK8qFM@ZjhHp-HDP,SYJ3rQ$N&`J$(b&
1[f!mSVULD$2FEk9$Ci@*B1Z1hX[-%!F,-#+YQ58kGD41[0r'kJ[Emjr5iK&'Cc'
LHePjfrVa)C,9i&kp9H2S(F-&2j1P23E5,f(kLU)(*mLXlp#ERf9a&fLM`0!+DAC
mC&mI,I9NmJ5@JiH#S`9E%`4ka'99)bJB6KQL2K3@BH@TGZZ@-dHi+fHeCfA(j8A
q`J-h)5%E)IXdj#*8!f!he"&H,fir"NJc2KG##5k3!%e6@GpCYq+-A1HBjSUTFHA
9[-53!1@1F*3"N!$+RSZK0QP59`$FJ*[(h@`SMbIjq&k)cT4Y%+k"8I5ecUE4B`C
''i#m3k!jF6-bi-iA-,)P*3VIHM,J`%#rT+#YSql(im@kQ#@$dGkF!R%1)V'Zj%3
l9HCAXl2)@+INd!YlZEbb5JA1VTdhUL`BjIk'[PQ$QU"(#EMk`%IUBrI42iEh`DA
L01ME4S3Z&hrRRU)If'$DhRJ-@H(0iI'HIF2@2!fjl!IKjEB,JlH*'9Y#'*VdH4C
V"B2N"N6Yqe4kmAqKGl)pYSk@N8T*5ZBLl6BJFKR$Kar)eSUbS)AL38R(U[RpCJ3
XXjG"a3ecPE2`+$"Kf+l@)e+1@cS"$VM1ENf955a#qU9$1e#KMSCPqe*Nk,&Z#4k
1!LdLS6V2[ZH&8d10L&kJ30i*4YLZRj6Z`3i0P3Bj(A@PPhP0eb2NCJLf,FZVhd&
e@&e%U[CFiMZHahLH0jX8V#D,Q`R#3*HXL5CTTU1RXfNk0FP)Xq'Gdd-#BA$RNAd
&Y0pc92)HlhI@4ri`fB-[,mia0GdT@b"b5Z'd1ThJ*HL)!8UqIlaYlMbcNET(alX
R`2I2ELM(6Z@hYV@(,G6CcM*@h#+3!-cL3#1EUR"N8$ke'"E%*063-@Y&00mBHq6
!IPBJJ%*'D$kpJ-XQTk6SKE0&QKIcK5"$4CH8+*8b3M)LreDZKAer0&8&9)EbcIV
VQ!9jaH#P3YA9+m'm#1`Re+b#%Kp'1ejhU,4![CEiBm%!NJhT'HMD1Gl)f!!89+l
+XYBF$9b#aZ1SfkMLJ1"bB2Z1JZN&R)8L+L1Am(VY'd!l`Vl(8Y%2),!Rb'THk-@
!8`IGffrYUM%H6Ac-#EeCEhq10mA9EJA4""6%F"Nj`GFc"('EHdaN`p890f1qDf#
4)+T#`daXdcRb0M1Bd32m!cN2!b%$rLC[QGr&b'[)b,603CC1r1Q!,3M1)SpIXJ@
+VG-fEST'mBpGXSHRij1N96U1rA325hMVQCC%Z`2aYqhD!fdqbKrL*&d3"H`6rKK
[Ga!AQF@QP[e*HCah'iSKVDDG-EP-[(VV,4IVBBlr$Zm&[aqfMYQ*!jc"T-RD*SM
KL9X5SB[jpXQhA!KBIFr,Kc)dFV1KZ6A-('#D0GD'A8EGY8&X)lQHSJrG%aZ(![N
4X'i*@*DGY)EVlif,9ZkSd)%X@F&rEA$*,S9f6S(J('4c0%K)p'fV4qBNXFrfJDG
EmYBB6+I8kp'VIK)pRrdFMIjS[lZ`e`JZD1"&pRQE0i1p@ZQPiZ`bmZ4)-bhDPER
k-PqF%@GNVS(i*)Q4HkIXq5LeI*,AMj&c@@Vi`@epNHTUY19SZ[lq%$Vf1XQM5mj
GLLb6V`ra!@[`NLbi(S2C9!*ebIem-9K0j![mKhh!cqYkp,@H`-Xc4cr$RYRV2Q[
Y&9MY[Y%9b%Y[9)c'1!NSfK@Gl'qHi+!pAh+i8-6Rra8C+8SKSC4fGJqRTS)H``H
#C3k%*2cqYTppe)'0PeT@epQ5%KmPFC!!k`AQ@q-RJ&+e0j&&03b@MT`-LTA0Th-
i,dGrr[cI0%S!#LR3$``%PXeVQVH2R!Hd4A[2q`m"fFlXqhE))+-$Dp'p$32r1J`
"pH'C%TK1,hI!$qQK(EHbMA@CKAL$(XUbGQcb,TMrQfrpkmhiYPM'0PVliICIQU5
rY+'@1LdbAh1,(ELBPRY"SfKlH8,Mj1YQ3F3A13aeF0"eGdd-&#+$fa`FXb'B18!
UbCCXbli$V3B!@&+q"5"mXJm+mClb&NUYh&)0+)ciqXPYV1,MQrafe'*KP4akRNR
`HP)k68P4e#1ZG,Z#S[aV1P-*r6@YYT!!pNS@[9%FJhbUJ+f1Ri@!1VLlHM`G8CD
e-RTYlIF'K[`I9F)i!T)%H9,Bp9D5[TV8a-q"J(ZQ+(ac-5GiLD514E'QE)``(I1
Nr'[LE(He8rECI`%D1m3"QX548Q6mAT+#qDEZl1IF+B2X,H[&ikaYTSpjRb,&#[E
3A2D6EEMIrBX[L@HD`*GriA0@h"@*K-cR(rJ&jL5JU$Zd8qZq$R%!)5XZH"rpb2@
Rm(Y,Cf@6528MT@T5jL'28#Q-ri'KDcbEB-5QI@Qdj8ib6F'&,FbNLALb1904-)a
H&Hi*#ZJ@EGX@T6jHC&(eQ-SP@*2+S8iFL""SY!qX%$4%4)!'TCkdIB(5rApJFb4
b+)S#f1(m6G!"+%-bShmRMpC%p&))93@(!kIEq*&dcPD!PdT5jVU6P,cpq&P)2h*
pKJ+$l@KqpZJMq`rKmlL#$KXi!THc-qU$ifh)UU%0,+6D6JkHXbUUZMRFU*TK+hR
e!&+ffUCGdhJiUCBlNP`!&p5S3RR%PNf%aPh$Y*LHCE&(PAEN592"e%+XAjZ$ZR"
0QaAm"J`TQV5-[+ZpP+mVA6b[XDT$,1)(%6XYD'miQl##c'1Aee1*Md2+djLREXV
X4BaZQZDqLC!!XSq(ESCYcQ'eN!"GMi)-KRj-#iGY4&(ZUARQV[E*6#R8m3cNL,T
icED4Q$BqL"D`VNSf"D1brFq!r,!CAa[$4iikmjZ!BmCSb59S+,"KD&4*M&0CNYH
Ua"aHUS$4*`rVK8*0aUH"EV0BUK,-"kA@('(N&,"5CbmQYhMBYA,P1H(Tj"a5j`Q
9QrZb`@6jUQebZV)P5hi3!R[j*,+26*qqcrB5C%mE,Q'Z8fcHeHLP!TY4Hj-Ja(I
`cG#[er"YKi`mX+,CAEC0AI[%mZGQEhe-jkD&'@Cb1-064!R%mcj9i0L!d,M1EEE
EC16F69pSTFI$Uq@MKFGSlIJ-,2"kRerH0e+,S%85l!5CmaXSf%X1"b6EP&p[E&X
KKCQ8Lm*-LXcqNhJjpMh!r9[*amGV8V1DNH,j61A6EeDk`j!!mUDQ+V(J#"+JV+m
[rD0!8@M4%H2(aejm(HFpqG[SHLD9qUd(R"DEmm*jhZZIY3%ZG(23IaEQ-N9kr#9
RUe9[dlNT[+qE'@lNG!%@K1EVXe-kAGhk4bMrQrBZK-G9@k9!eB6Ti1X1I0SLb#A
"T8JIjLYmff`f)cGGd40[IV0a1l(%"UaCDRRBSD(kEXHrPk&lU*QbdCP-`ViZ0HI
LVqR,m$(5*"kd%G[ZBA`AiPTdI!LZdq0cY`A"LcYF2Kf3!*TeVd*,jH&0ZK'9+dT
r!T)5$EV[fN-4[4qp[CS0iFMr*fTkI3U8L*M2F(qqNa6XSEL8EBX*8l1(8,Cje3R
*q'fV"R[mGT4r&m4'PQABd[6-fk9Q,bE4KE2'AFcS&G(2U+#M#AT8QCQQ+#f4%f&
XP3Ali'Pd48*0jldbCir(iU2%#HcilXqb3f1H$fiZ"c!bpCT8ALe6RN$@P`QC0[$
+r1qp%c+%K0lQii8R@jp+SHJ-RaPD&2C0,k1NNPjMLH"6@,`4Z580eG+-mI%c)(E
PfXR*!r!UV,+DqX$pBU)Mr2"qI!V620U)[6l'QSX@pp1(V9,$8$ZcXKRE1IFHRS3
LVrYHkUj!Y%*Bd1@6MTaG"4!FY8p@B13B9CHJl()6F!X)YZ#qrA9e"[fR)Ui[EVm
GhQVZ)-eVPV#k)aLNPk%iHBb9Xkad2#0TXB,A-TF9dhSX@H3FbcJE@$T%Q)d-2e'
4jbIY#L4ZQ!XM#h4&Tj66M[)"@kH(BUa$CA+0U4)KRMBThHjVVKYI[@1Be(9CZ`9
im+S1p-SY`#35MHBHlla)5(LMq6l6e4MB2)hClm@H@CUC`04,ijbkChEE'ppTKE-
N@lKq$`1R+k2-qPR22[hJ8RXq`lSJ`3,@Q"'FJ''G$fm-[1FU8hr9ai%1,c2("!5
arI30riNdBM"N5[%ChXB'@6bFYM6+pXZM@YNSiN+8T52iQri0YZCjr)K)BKaL02[
#iq-C1f9Mam-hN!#'NfVT8(qm2IeT4iXI`X4M$jU-fM2XN!#[HcYZVUE)+rN+Cc9
@Pq'6m9"YRUKER,ERR$Qpb)0eX'Th&J2MXUQd'QLKRi)k!"CcU4'c#XjMhNm"&La
rkIiEcC1eRB"R&+[+`0fUM%UEbA"rD+@)(i)@eUYmY6Ir,Z83rBNrT1'XrVcr[SP
Rl!!X0LZH%HC-flM*m&flCHP!Y@XIFCf85A'K"Q')Bc5-5e,&*p5BKk0-1GTac!l
8lV#"bKS06qA6[@Rp%L[+qRl3'iJkYljBN3qj-BET&X5IVf0'b@M@YZpLT5-Kd3*
,)l0d-!c`9NbL8,N1(bKf6,j"GV@#H!Q-SV*AlNG&[-SbJ06"Vkd*T6qe&qSbm#8
RC[lQi*mI(G-&r"Y)`%qGJ#Y9iQ6p'4,,JP-@YdZ,LTQZl*iJC6#mVQaL1ZqaqDb
Xa+BiP%`-Vpa-`!R8d1"5"iGpLU42VqTE8G9DAXFZ'$iLXDVKGH-U*2Ppil54%MS
B*25'Q*H&QAdGb8ZA[a'L(i'h`)4a$0R)VSbK#KVi+"5h"SeJMES5,jq9V-a%qN5
X&UAG!b*0j,Rl4Ar!pFUDb5)RbQ-0hDalieV9PN-`BE`5,(+#T(JHU3-H'I,f,$'
aU)8pJ$jipA-X5-HS+hf8pJ96r)&L28U!9rc@6e29qraYkpml$9&5MH"d9Nr&53K
lrkAKbPIm$1$*LZNFq1qJKpZFdVbRSkSe8"QSHVj+HdbH@'Xjr1&9dPSGJ!,P5&U
+UlMVVY#,`#VJX"hcQia9UfhPh,LF@r2+Y*hXDY@Tr+Cq#3#dSp-4m9`&!6I!D%m
GJ'GED6mYYLaLJ2K-qce54X#4`flj`#Ab&%FG$MBCd'!Y+S8iSP%8C6(IV!6lS-"
P!9ERj,fcd2m9EqX,S3&HeZ+DYD+qSG2D[[d[p13R4BF$C1S+f[BKN!#,6!mlkl#
!9cB4`%2cd)5dKSSY2(AU[R6*!3U&#M1jC5k$8X`#&kc58AS"ZB[akR@)$Z`kc@F
U"Dl&Biik8&#5NbG58`+i0hb@"N5FE,I!@J5aGX-cmhjh1bmQZ(C$XC!!NZe,@,5
RdkeLDMG0mE[lcRd9)XqTV4,i`jNJU8E%Nl&"a(bZLUb,Phfr$*14S&XTJ`c%qI"
"qS4C#!2pqKPM5BmZlYJT98jX@jrcr(Ni$Nf!FD&LH+@kQ)-@Td3*QY`#XX9Nb5)
0A5N&f6Cq0QN2D[Bm5,P)@QX,ZZl4NPFd'RMqHY-E3PU5KRhX[AMa+%1Em2@(SNj
[[rFb1G"rDDJ@,94a'PUTeZ[&RZSi9%M1[fRZ0c6`jQ#@(!A5#!MJ+CI02p[$B-Y
KJ#m[45Kj,[--[&(2e@i#@)QQ+p)@04bYc3mA5,e#b2&QBl)A"G"k%mjXM[B0)($
%aUD1$(q-4[eLlim-8N)G*ebLhF6Cm'M9Ijp$"iNRRNCi9NF2&8F0Z@cDF3#BkPV
E2XAe1r`8Q#9U-i4NU8*@2,,`Ak2520R!cII-E*!!$dT2aAMdj0D(SlGqe22!bCf
#S6ifS('+#"cYZ`r8qRF[d0#c4k16M&%UQ6L8bRI2T@Mal[MA,3*Npme@*Q"HV(c
"A$bUMi,eYL5iaX6LLfkK%K[@PA)%l'db0hjq@EmLejHCEp1@A$@`T)U+)N-VaQ4
Sb*II4dd,5a*p$G0R+BJTM$ZR[hFV`H04*BJa"D'lpX5%kik,pkU`CaXpIDNSMD,
9TS%bZh2CBmXmiYU9Z%L%'c@[`fZAX33b0&[S-f8&"B(e21NDLIcTG6r9U!3hKMi
MM%`ccmq-kV"E'Tj($2J-8h&mBJ2$9B[l3*QR@HVahC!!LYT)&44[[e)6VPR`KCj
q3KTZ9k`C1GSlYk,ddG*+c[rYa'-ZlcRa2P24&Rqm&ki5#(!9aU8jFVe%%PGaZ"A
G1(3JFA+CD4J)m%jPdjVck0Ck@3J[,+Y'RXf&(5C1EV9P$)6jrr!ZTJaEQUp3NR*
"ZLMqi+EHcl"GfG"9$hYjam$PVi[VN!$*rbl-R&6$VTVjJ3JV()M0+ADEHmZdbT@
+,CSQi'3)jm&a!,NkMfq`SCiZFH[!D'IKYLH0#VP`pC6@8*,M0SaKV'He&[LSp2L
Q3i[AQB'KE+cqdJ)@b*F$#TrHl'%2V8r[R%Y12G3klh9#$l!@Y"PhUmkq4Vi-qf8
BlS%5AD!&$[X'Echc*e`JC%TlFSC+HQa'Q2TX"(lHJCjPFHlq&Nlm#LF6id&&Hj0
SUiD*j&@Ide49'')Bh(%9X86pUm9Er@H'5!DAd*iFRkVcU'Rk(YBc,)a`VNd4i1X
24"F5(!r"k8EHc!dHJ*ijl-T1LD-i9k8$*bZKUii8+qN&,MAiJ31ASbV@3L4L6c%
*iRAA4q01DBSc-!hj9LFpSY@3!))ab)DK)!YCSA)rLIl!CFb$%lqq8YRlH[j+efH
PfTJJiU'1UB#''1%aBS9EBi8(33"PpD4TVbDF-+aJbLk!6qPp$paC[ILIM%bFFZa
(-(XBm+pYkMU2H,P@aE*p!miUeQi"fP2bM5bY%aA%SVlC"rR!k-pU6`L3!#P104G
dIc-m2K-cJ$B5rG)0cpkJr6XMHEI[mlI0rIQIVab@%SSPIECI65km+lEQ1(%)KH&
V15@M`Zq&1'*35*'#3f("qZM61U,&AmIkrLj1Ip)qRb[ZDRLiiHT468UUMP(pGF#
MeM'3!*RXGM5QZG(FY@*RTDcf*5cY#@CD&r(50+XSB(!a#')Zp$&j%6RZ4`,VmF$
bN!!dU5dS(r*MUhSj),J9Gf-2$%k(C!(Ej"`XHEibmJI-5Gm1R,Z(XAFJP4lac'F
9)@C0eFEp!k2GmClCEF!Hc`Jr3ZUTbDQi-dYiM2+UTD@N+#!V)#1[p1VY4-E*9C!
!TfVb+$4DF(am1HZj2"@P,L&hb4&p)fC``p[lbA0h9eDT6Yem250m$KaJm[J%M"U
QAeFH36!!K&Y4fLeBS+JJpKk`-rH3!)bf)e(p@#*R+VV$[+rrAm2CpKF5h+pDM2H
MQ%b%,8MhCA6cK!Q+rLNXCel5XI4XCKRr1hUGJKb$qbMDAF`KH-I-qFqU,f&Fr%%
4Fj-dqP5Tfr$S9D'j0Y+qcRp`(miK#0lrH,b+%$dR3Tj#c'8iRPiVU"%a@6'lZ*T
3J1jqSZC`VfXV!#8*U5U)d6rRkF*9Bc,Bd%GbMY0BE2-!YTi8PMm4phc!e)U0G@)
4aHVc*r(0IBFS(RdqR"Kp5*ccJQ8D45+#R3`0!c86l&21CNGP"0Y0DHj%h!d&GNk
Y@`8$-E31lG)V6CXmJK)NG'H"eJRfmY5D-Dp%lCET"+q!&L!1UIR146jI,%K*4U*
80Ai1`c02"KC,alem2,@[VSM$*l`P[HrV@bd)AFQ9UKPN4&Uk*a-l#cI$8S&U3@#
AUDibXAjkU--NH0I&T9ZY#%JqTET9d5&RZLmN[0FkT9[hLRHlH3K)2UN-9Cd)FDJ
M@i6f"Y-%B$%@8$GlL5jQRbE`Y&S`k2`9bJQ9S)AeZ[BG&,ffSe)9-UJ1MLaSfh6
i'QYB8@C*LcmVB&+hhp-8aQ2SNUBaFS"'&ATf$JlKFRJ"%'$PJ0'IF'Yr#*+Da21
PUJi)$AY*[M4%FJJ0jAk'B-*rFXXH%-*rJ#[p3-*rFSFH4'd)p5ZD'"980*TbmTp
%9AqNJ)*$)ilPp1r14qU4QNV5c,G-FiA1FVQ6-5q!kKf!8(Z2MS'k)e&rB1@!hq8
R'$kkl-YChqdb9KPCGkQ-jbZ[h0)h#3DUfH8[-U%A&@bMDZ4rR*Hlep6[)H"@[qX
iK*6pehN1AhJmZ8[M8&8*R%Q&53EX%#MUl*!!(miLKrR%k88F!((SPhkaN!#9cDA
U944F+D)*lVCddG4a"R""9-&KT'[IM&8Y)Pb90PAFcHd6ra+L)q4FEl1fMmQ9NYD
mc5lXGQ9[S8[Naep**Y*l(e5Pk)5Cl0@JB,ja08!1N!#[$+5aI*!!aEFFrKqUTU4
2pf(dhf&rj"E0,IIY'$IH**1!+F!8mm8Fi91fJ-)bAH(X`Pacc%"pRqilVK)"Q0e
!4aPdrJYPI3S,Te$HM682ifJeR@BNh[3M9bE@DNeE56Gq+T!!4ZLlI9GKJJ"iEGq
Ml38i`BiU%I`$#Ej&kEp4d`E@V15QG'a%hb2`VJDmS-[KDpHQ[r8a#IN,iPfJCI-
l-IN3R'%QlpiU#LBiX#Xh)J$"pei&A[+lerle9cK8j#0R(h,D([T9fFA$m+`Il5*
M@XUcYJ(dAf,BI@B,`ENHlHm)4Cf3!"0"0Rp0T!+qp1q0B%NTTN8#5f2VI+@%*'F
mfeF"bNV&qL(S$0F*[EY%rPSAh9!,MRZ4D"'0N!"0Iikf1EDaS,%#,Dq[SjY6e-&
[!12JGJE"L`CYXJC1EG&pEklULSb`%MmNCCUB9X`FN!"%eh(&,d#"5a[PIZ*eqNh
bpQX2V1*!cPpBC)[)SqL,!Q$T'T%iB9&"b!F%hYKkZbKIi[1YfJ+45cVCGGeK3mq
RL0d+Ar&FDe&R8BIKI(c[),J@EpRSX&+IAZkiR+p(9`hHRP[DHLF94I*&eS1Z&"C
fEqU8rh-ciUQAGFr*)'2F3b%f4e%H[q8aP-4Gem6IV)4c$edR1Sp`5Q+jl%hH,U!
V64k3!#F&k-Arfq$e$@*ASkpeRab)HXp$ZrT0Vp3Nk8&pLq18%AkYpS$FebY&Xjk
HTVZ,EhidUKZKMpM'!2l9&Lck8&U100e0T%j26HDK3HeNKQfElI!aUrb(S`RMG[#
jc9qcRL"'VDVPZ6V,bL,K%LkjU`P,qEe`'-m@RfS2@QY*0(U8B%I"qDd%kJAIAIj
[YHUaJ3A(PRhcjp#Y3acp&m+3!1R`4LUM(LcI23BJb99*ScE@J54hrlM6+eF(PUV
%ba&-)fY0(DiA[adifl[)6&3jeHm36!i,Kc-FlA'C83k,m(NpB88N%VQPqIG2C@B
AE&ljbI(pM+IM'c-aeZP*'Zfp[df4XPKVN!$(J&C2a35[&,lGI'GBL$P3MGB+@#@
iQ(blM`,ae8PdB%+"#4r*d20$l,9qSE#)eR1i!r`#UEI%c3NAHN%h8ZAe[G*Nkdi
CqVfK$qKV,(2G!@VKGVBY"Fb85qc-k$XaZf@3!-NeIZLKK"cYV9Li!cDUSeU42Ne
G$YBiX4,lG$@fRL[RQ!cYF8G28r!m,VNRYm+%ll1U3Q8H+844R3p-PeFPTC@4j*B
10diZpFPbp$QQLP)+R5rHPAE+"@X)9A[$m!K8A!8)[EZcLj!!ZdNS@'[TTNCK3Pj
`Y2bRpM@r0Ee42VC043LH[FCGHXa`J[-[jp,+H6ChLf6,rQi1@iJ2+-cmca5M9[V
"A-KkjX[0iri+V8N@Lk0,*XYrSC9dP-pQ(pdI)LRYr`%B[AZ,EC-K36L#S*JF&aI
e6jBireE5J)C$A2rHH%PlR8[!'21G!e00'D+-@[C'ZU0JEibI3TIULe`l-`Gqhc8
M,+r%GT,elh[Jad@J0N8'lPU&E2"2f4+@8Fd`&I0D5,G2hKap9Xd5$9r+M[(N`PT
'[)P(cib,p'LSd[EV2q*YDC`T-1[5[HfIbFk"6S(Qp0rr50"ZPA2rHAR'EB2TcTV
"11j+ESZ-F`9+*AA'f%*`9I[ZK#!51`dH8k#ERKSfd"6Uj2l&Mmqj%2*LFrArA%,
c,d@A(TY&eCk$%@iR&eV2eV"F2f+`e"4Mjjil0U153LILMb,9jEH1I3ENB#!M5,'
!Lcm4B#FI!8H0'D#FGFJRi(i)rV(JH85r4Q[DJhQ#pTEjQVBL&14[iLfc&P*Xc(c
F*X!qe9eL&*bQiUPS4Rdmmc,!IfG)D%fb3RY,YYZAb35J0HHaII&[NUi4b-#d`q2
GT%AZiS*Y9F326b86))NmGeGHLMjT9FYHr[rK6NdV`Ak#b+P5XL@@G$EV&Y([LiU
j'$ZKQTP@m,Y&*mEL@U*cNlaXVG`JfhBE-"9QC"K4fCf(@LBVeT!!A9FKDFG)"Y)
,%$D6*"a'm#2(ZhM%3e[+VjbG)i!4GY!"fYV6hlAiRZNZPMZ)$KX,de3qa1bY&`J
bLKq6KST)-C6H'"'k$G@a%5MjGD4a0l(%iqVK)Z1Q2UGbeRMR2q0YPMDZGCeV`"L
Z)CB)aN84LR#8U#C'AB3Ue)4Zqj4'9K[p4e`$Qb2[q#YbGAYKbV[Ei+VVR#X"#b9
iHTN8k!-$k(S@R4Qr8e'pBlmf+iJ0!,*r"i,[@`9A@DaAD(`9F%@DP9herlKmk*+
D$rB)h[%-03LQ&f&I3j&FLcBbX`,l+@M9-MJQhdP#i(2[1'(2q-JrFiPiCr',T!J
TffHLqYD0J#ALq%L$5L@Up+6i38X9'ZH[3XS-cfbG@Hp(HIlh'4`m1kIp33@ja9G
Xqp+-r5G-HASN`Illm0R8Z0*bC*a`k@RTZ[DYqZF,*%1IU8jqjDec"G*bDiYq)9)
mfM0BIJ"r5Ip8!Je$`LLl(4AkcjjS[LT9H&E'p6jj04R)d-)hT2p)hDCf&b,r66Q
*#hKfA!%&qLD(0@dSKq5FUSU55BjZam%DKcDNr2cC8K@`)ik@R%Crj2-&)pY4RS5
$),"`4hJV)980m`4LNF'kQLFF8p5QJZ$6QeAY4ZfYbfS0Hr8$YTJA!eKTTKM9j"$
5c%rKlMqMbSa,P%UX3MhGj!M4jp4XHbr(rQ`d)S,[1NBT(j3DH,mAk0Y[QT[6h10
pFi@+j+K[lFKTfJA$3"`P3#&([,&[CCF89#,rf0h-r)D+&!%9NKDURfhV*l%d,X6
G05QVck-DG&@DdG3,JmYGG99ZH!la1,kPf#,hb1eVb&Z`qJkK4D3RHqFNE(--XrQ
XkEiSf($MY[#hdYkfMDer%Qf,h2iVl8D`RM5ZU02Bj5Ii@03Y'REAB1)I-`5VD46
Cc&'iQS9V*d&9cfPkA)Tk&HLp53c,eQP,&#l(5pf`rD6lR0Nb%-k,kA8J+CVP`8k
iKJ)%#9l&ZMX(9ld@R@,YmENMRN[3FhB9"5N5UG4Fl5'-,&iQP1Hm(P8iacQK32U
C!#cqJTk-S6dGA,Sf*Pk00DM`Sk'[!$`[,(*Y!PTR6#"(Hr8)I8NFJTrTqp('PcE
aT*MEKh(UI`kM#+1L&cEZP2#9i0YbVVBBTJBRlPepfEh1&PlES3Qb4`rXq#I[$AA
XL+da@5*Jf&%ZD-U`1A#[X0%Hkl1mBXcRFJfhV$PElkbIRd@[-Tj4%4G[1S*b$S4
aLh((e@i0dq-hHZhdele`Ak6ArQcrEfMLaN#(HJ4RpiRUjGj'!c[e'a@SYdbeDcT
)c,rGFYACTl,R`"aJ+fF@cS(Hc0YRNf%P6k(M+IVV$%M2+YBL5+6@1#VN#`BiJFP
8Y0X!@&S8bQR1Fa0`aSF698lGZUKkF2Nbh-rpe#LE5bq!9Ii+B,Q3!2*#3efl'S1
4rq+UZa4&#%fJGDG)B52FT$pc$Qk9qKHmf*m2R-6Yf!j(qr`$[9%j"T(ED!5([UK
40@9&8+HXZ[hdI2&E(dIS*BjDJ2IN(@Tmm'FAh!MVq`+0b[IiG1J1c-r*ar%9[hN
cB-Z5J,Kk$"+lG8dD1I!qQ6QGhcFcY'@(X1a&p[CJYYN@8P-Bf'dD%r0fb#TUSe*
H-k'&L`T@fCT,eFdMf2)-pb+E@i$VU`$8ZBT0j1qTYP3V"r)%pQGF`(S!9h-RHf!
9)Qm"&5QM2@iMf8"p+9EK"M*UV(Rfd&i"Sc(ZLf&$2V6Xc4GQ`!I3&T+5&XfN[qr
hBIiZI@bF+iT&4k!-BFVfKl4MY(Y1%YL9V9MLU)q6a8LGXX958T%'kfKVDZmmP$*
m$-!L%HX`2IC&"GZ*PIbj9$2Y#[9fVGreVm29&d*@kmV40(@Dk6Rf"QrR0I8aYc8
ee3K[ZLA[ldCe,H25XeC)#HD6RR*"q6*K%,9+"*GI10I69f0#MEjfAY68A((,f3'
J6,5a8$aHP&R,pi(%QCl3+U-a6pCdZ2FAP5JmRHXd6VG$Hd19IfVYNdjKUp5JH(@
%5(LM@+SI299Xdk)8XK4qkB4++H!Q0$Q`9#'#VX1KHS+GIAD)JEMU,*l0RGLHJdh
AVKiC%P,0EGY`3T('#%#*T&H6YB,k,Xh0pT%K`ZPiL8*()q9G8Df"RRNPDS*F``,
M`LRI&VXIa[Bj4K2kXCX1Z+djiNX-R5YCSR(96JUBJZ0rQB@qahbI(#$CT(3+Zkb
[+mp`V-0R,)S0,+B*6Sp"DZUNGYjGQG9Pe5$L(#QX!+-+SCaGrV-Xlkh%""Y9iQq
'*hQDjQ()clr8(jK1G)KhAY%m"L*laGZb#*!!j"6k4@R(2kRX!!aZ&N4,2*U!)r3
#&9*UfA2AA`$DfGA[4CmHTrPCHcQ$QU*eGBqJi#)+L$TCcjR9,,Mp9i5DKTPKeFL
Rab(0L3rQM0b0hJ'bC4ZG+Z4rA'R@P1--&5CUNM1qSDZc`G5"pil'rXCbD*1BYL5
PZ4-c2ihIdp5$SS1JacZ3!&j+3TrpP#ee0r+$FP$KL'02mdIddl&kG4i%BR3`aTm
$CRmaSUTcRk-3X,L$VGEdb,3i4-1CGpSa3l[2[,TqMUMN+31+BJPH1*H(#BbiCX"
l*1G5GD@jFNkiN!"BlL[8fG#XY-j)EEcc9)LIL(i@+DDY1SYTjpR+Cq0p&YprET3
a4C23%4mq4&T"Efl'J-fpBJ[U3`FpV#$82NX$VFQiX$$qRM$6j0hV,$,lL0)4V$B
Q,-6m1SaGj@`F[kM2!62k(*5689P'S`S[Vjk0Vp4j3DHK[IYKKMY[&r*jeV9D-$,
&N[6r'Ga++Bi)V[*%AjHN*ljFIImGB$1NU"HcJQ#9G+33cpQZq"m!@D41C4IQEe+
M"*f0e!QCmI8!86)&iJSK0%RVpa%qfJMebfF1BE@eSV5U,`JX`dXKT1[a*NBrMkF
-j9*$"V(IY8(aF`Z3!-+X@4bM"3dXR9FNG5QPd`51d9`&9lk(6e-C5i`RDX2,VF"
6SRLERTdTpQXT`%m$(N6Ik)lh,kH8-IpS"pDB`m,98,C6laAm30!L"&dT0T2%VGU
bp$d*QiNr$k2Mk"de$lfaPmGCj'a8*FAe[CKm`92le@qk3!rAq-1Q09H%30%3"&&
jccG0"9jm[KL""6dU,SjRB6"P0`HRDTalEh[kcQLR-6-R@U'Ekf*e0+JE"'QN,hM
q,%"5`4i$#)`mi'I#"8PlA%*3(f*NGYlAKGVLVQU@r9D0TK[[hrd2YerdjlmP@CZ
,#&mrp8jkH6*N8+S2h`TlmJT4SAX#AaQ*ji$UBL$Q'G"Rq+-jA%ATI3h*bcCi()(
8'-Q*!P8kEUDhF40S`3*R%K*rMB*GVh0UR9AZ")pmc4*pFD3Pl$K5IUM%CiSl29S
6FM$KSPR1%#9F6EZ5'XjqEJ2PYFPl%fp9mqe0d@GZeIbVTVf*Li6B#IjqpiEXrBA
RpQ,2,XPR)jY2S+Gj65e)8Ta5cFC#Cr0SmUFBR"Y6T2N8(IZE)Z8'GIMCIVd5Bjh
H4,fQ!*Tr85GqhV2-DGfi8#ppU"4h)&i-VX'9Cr3[lpJ4XK%4dA$-lVReXXC`BMF
YAQa6@,L#Dj)T!0Hf0&2G[EpLm14D#Jfhd&j%JQ2%MC`!j2pTb5bj+A!QU$K,20l
%F"d8NZ+-HZ-ap2Y9*F49MIiJrh3BP'ef6BYL3&iE[5@64K0am0bpC)FGp*!!*(0
6FD9%Vq5+H![HjPSUdAdfQ+'0jLe!-*CZ#GS[*hp94`cL@@FLifHqG3Lbda8aAaq
H4pT*B6GU-BMfSUBeF2T@9c2&CSBhGPL#bVeITc)lf+I,JCHhYb,Z4b98Ge%V44E
Y`lP4*HNF+C,8"iI&KcS9$#edX!Z&S*@-eqeQQG@mkK4i0"eIPF*aV!Z9l"m3AY!
a`!fR1m02iU,R[##-FqKF3qKlmAmd"9bcjHSSareai#S2d[1h!QAFrMl%I3f5UHK
ZSXRH-Zi+AX!994ATc1S!b"5G!Q4fXF#%l2aY0B[0N@GNbN`H+jKXe3BFX0k'"!p
X*jCA#Y0&I1DX656`I&Ek[5'-K41D!`(1i"XETV*q4C8$)A3NZc+Zflh2SlK(J&)
hGU0f2ZD8dfUd-89Q$XjAVX4(4f+mpZ)6-md2LiB9h',pHR44EMqPT#Z4b[B@N!!
4*Vd-40N+TlEaUYPY6JSqpG1DL`p"2q5`lL$HcC'RL%BAcJ`AYZJk"HT(Qb,fiLr
I6pmMY(*A1@GNbIPIAG@ZeAL`p'8+$R4&Bh!RA@j(R4q@`*Ef)`VTNS'mVjpCP1B
A(S,Gl*4#f*,`dDlF*9q9`qb$@VFbq+#P%brRk3j3GQPSlL9#FAdS3CR-CaPS@C9
IX868Q!Z(U'mmZErKPLqRCK)mNQpfC-"4jE1!Y9%I4E`RMJEa*b"41E@+'1I-[YJ
*"'$QcS&9TINqk*IEN!!,-YL'+L&5'U52@p@1ZKBU3S&1P@UB#Abkh&96!ES'!Lb
TLaV-[M%NahPlp2,qmVP)qEp-Lr5EETP"fZp)JQjE`4PBDBmGTSI0`JGCM5D6eJ,
J*SBfmYHr8(i3!Ud(-CG"Yie8(TqkLH@&-c`SZ9TFNTeN`MUZH"VaJT!!R5a!FH2
lAU0Ym3`IrZ8eILV!BUpLQl+Q*",b1R)"6kEUAC2N)H4b51IDIlB[@05K&2b+'6[
Mk52MR[C4mZPV[B!SrR5Z,m'lGCqAcRj*H"d9Id'I1cF02q+4!hXGYN,'Hie[cqT
1iY4cDUmN[b$@#YqN2#H,GIa8SB(K&K"rkGG!SBC3)HbH"@B#j+25c%`8b0fR"AB
amVm2cN&[DRfSV[+[P'XrL1*r%j(kIDrFlb-b"i#Dm[FEqJKV2M`VSaVk[AH4-G2
b[`34[r-Pi[i+(cX$Zh"S-mTerL[TI-GpBQeDkMb2P'i[INU'J8+TC36Trf@BB)%
E"@)$m5Sk'X`20b5+['Bh5SjijdVFCh$&l#*qHU8d-a)MEF&B-)65BYPNHpFVUE[
PB#dq&f-0#m@d$58)[@ilD'dL5EJ%$UaZ-8)`FprY%9GDDaIr*013!)#$CpN#E$j
m,&lIJ11!r-9Tc@!@f1-qlHABFa(0UhV`4qjKYTHR@`%pP'&Q`@MXR41SR#mr!HA
R'FDR-i3Ij`aerJeR'9@mjD!haT[c+dJ$m-DiR$N#!43fb`hAUk4LLP-HemDJP%U
ml$af+1[1#+@Fh"X#'A@Q'9j&L2*Q645)mLCXJaRV*IRHIlfUf#-8@0$GlAqX#K5
iIR1Q6RhU1(4`!F+Kj&-,KGI-*+98l1rmPX"KUMX'c(kT!-("V'fd!U###&cEdIA
4RhFp%UT%D9qCc[98,hDfaZIfY8I4f`rc0B%qG8bL(KSTaXUXG&3L-@GU-r)Qi)U
U-j1&AHV&AN'9YYr*NEHIp86p8b0!54NdNlq-1!fP3I'[LH0ZIi#0TL5E6(Ae'kM
XBLZ`a*8$+2Z$"bhd8!`C8"CA)Am-NrH,f4Yk,d!c%,Ke9)e-cA-+&iLc`!U9j"N
63HRGAj8SLr4CTc,M*#CU6Xijhh#%!%6FUYdm2"!JlF3A6&ZjjSKRAFjNGYcGdX`
NT4SY0*kCC682DIQ$CR)1Pl!rGZD$jk5l6Vf+@3RVmhBfDdflHG"GK((-SRH+UV#
r,h$I1T+D[1&qRXjbPKT%`DhVd8cBYG$8(cqK%$*BL'X8Q1rm2(8FSD,f4&(`[15
`)S0CGAdfGHkbDUf-%ZDVJVP[VdpT08TA#R'N(1c%fQ%ZR%iZQZqAXlIrM!P%&$R
3[r2T"k,,c(QNH)r(*fPjL)*0$T-hfYhQ,%)Q3iAjjmha8`4NG'QMJ$b3!,!e@FM
%NF%#MQZ-e*-hJaFr*`6l5KR4(p`+U4B*QNeh$BUFIfM4qb'L2G#&i`CiL@3I"*S
Zm#BbKfX*BlVp+ZXU%VeJ$h!P06J$2NhRECkGK*PVZ'Em4JXe'a!cH1*KXT!!`VF
-alF#TESY$Sr608,'8Mi#9%V@ZaXc"eY@*`#1ZP0B0BNFq810`Ucm+JIJ,L)lY+`
Xce$@*#ThJBU*m%jJ!P,Y@j,pbjA,%+T5f@@l#B4aDU+LF$NS,m[)"AA*)0J1lDf
'SC&QQC[G%@A,%8jZlLMH+!f9q,SreK5T(KdJ2T,N%0G)JLVX@'Sa)#G!YZ*mLRq
Ji%NCUPrjhIS%9Kb6KA!Q586'h%"4$5l+6AE2fX[iENa3"'-"!ce&cIj5G`2+!NY
!,+BY(1GUadkQ-$Y"9HD3!0paN!#RZCERJU4ep0DD'Ff'4P'b)&S-Y%&[@2APB1!
UE(dTf-0m0b6PRm2jK$-Xj$LN)qI4bZQ"#!6aDjCaEQN"8rYhNhqQF9+DNNpq#iR
56446qTr'*2MLM@0N')&@hTLhh0(Ih*!!Yf3"Yim8P3cmd1hNiq&A#3Il$)X9%f@
mRPU['TLY$Bi9Sk6)&"-Vi-GJLUAD5VBDF8TYF'G0&@#4!q+'UYaR)m+&88Q[h&$
+DlVj(%[)pQY`h%jfAB50qE1$50Cb`f4i@!X)*DG3#e*hr5Sp"%@IFj3ULI",DEY
i*ab[+al4pHD3!+(ichcpcQP8&DNMF+TTDU'*9-S$MRFf'c$#%`@60`A&UXSdq%4
(%'mSAC,2VZ564*h6IYe,2CkRXB3&Y@TqKeA`N!#`mYH&3r!cPL'G@Maf+m#RJ@-
K%`(AcIYp$XRSVY`"1Te3p#dVbK-ErrrSLD`1I!'[H$)%k-+UB)(N4[kYiV[c(ZD
e!5#Na[`iG#HH6YX8X)9"hZa-kKLKmZ069cY@RAlCVRZDaV+94$,e"aSJ(CY@*#C
hq9-fZR!hQQkpRL*6KG%8QLL1X2*jKe68eeZ3!%`[rCNYDh6,'M93-eU!I(Hll8m
JC,ZJ1"e`9a60V2@C0KK4%++dNZARN8JUr,21-b0rUFRX*)5D&NfL4B(eLmP#["A
cMjCFS8'0hFql6Lf4'&@[T6)4E[Y#$qrPqi0q6r9CEh*M+!S@cU3qL-"[aP2@`99
-e2U-MGL1)5Xm5k!Qbkb$$*HE[rMASA'rK6'H)`5QpB,b2l4,BRa+)DXcd12l"8'
Vlk32M6rXPU5eD+%Eqda9B8-%qNcqZE4"G&(+aQ*qV6d'"GR+C@$ErT@)aB(BAe2
1-3SeC5jqMY+-f,J2bJ8&'#H)&Uqf55klN4PR#62RcV'Sdj'DP*Tq%2MU$EAk2lI
&K%4%l,'8MF5l%)8B('-Blf+dlXpQh"1#Q+a#lRPIYQea[TS+NShJ@5&$5e)"*Ik
H28kr3fF+d4C#*4lqF8Z83eGh)Ir'IXl'l"`(krFK3M(F'q$NC!+qhR[qGJU0E)Y
(C+0r)PElaN,`jlULhHcL+!G,mI3jS(Q1*1Zk@iEHj%9e'REf@3iDPBZ6K$*&@CD
4XeN0%LYT%*e09Qf"h8Rl-hd*9r+-`'iqZjI0m0LKEai1)[%e$(8HJ6@M`,0U`L$
f--CIY%bJia5rrcC@KiD6(X[ql8Pd)eYdmm5rAKm*IMdb)rJkrJ[FrDXV!CVS#a%
"L!E21IUKI0m#-QDSJU)b@rTPb[D89YV1Li[m1'9Kd0!G*LcKC%ZP"m[DjIKb6GX
!AL%`+A,f[`j!6[)&SXQ&RaqfUEf'jFlKS@3Brkr19!JS"DE469pdSY`J$Y,b$`!
X+N%[3ZQia86qLBclbij-rPi+"ALTRrY0H1P)&0q(FH$6b,3MrBE3hbNNKMPqr3)
XHXmLbYhkkSX19D@CJl"`U($8m+E@D2!`miD)2EALpLRDfV`khY5mHX!LU,8keG*
d'Vk6PQeC$B1L@@-'G'r@`L&V@E#(XD*)29Nd&EF"l[+lrqH1G$(U&,[R%[@[%0N
@cBJ%#1Gq"hPM6!ZI6lr4q3dbpX)L"Ek8ZAHCH!*@dQ1Q&4%p$%-&@!,LBL14pe8
*d1&+2Vh"e#(IpHkm"jmMV@2iAiUb(NRC!5P@2MlYI&KQL(ITm4+i01#leBTTLbQ
#0@k#I51mTYLMZ4eNTq6V)YXaQN,DH0+lh-ZD%RQh!kdLhBkHZp@E"J%E81I,EVj
CY3IedNC1!,8q4HUT[`E3LS-VET3iiSNQp"$je4(!BXY)$PU*ELTNGjGNPGTK5c1
pMI2**NZa--+*16CV[JRND8lJ55hJk28Th&hm4bLrM8aTDRP3fG8#1!HDf18E[2K
C*j%0[PhMC680L*rm9)Gmk$Xj!HRa4KN[P*(0c-Y-)#[a6mPUQqJb#e0[T%(cfTp
rG#Hp'@0"Cqq-jd1,!Ta@G#U0!Th+e[-)pHTX&L3!GZkCV`Ed2ZG-&R3[,&m31#J
G1(hL,ZIPrYI[qH9iceK,@MeJiU0lBeP6*9RpeAeZ!N+#!2Dl`[kVIm$Bh19Yl`+
,+4cp6KVciGiYSaQe%HlNiaKAGPX6`DBY68NDm$mMGm3[fChLm&UDL[9m[ElCqQ[
5kKFJYUcBYFjGr$8+r-$Pe*LQC23Yjjc&UfR'L'3S,A3AUS6@2([E!XIch2UpNKf
'2U0S6flDbGKVaS05Gqeq)MC54"Tl&Sa"QTB)G4)qp2QLmJT@6RSH#6(()!5I4r+
Ih9"Y3bC"6qJ6T5#IVhcqQRfU'kH+DF(S3%PL8CHQI@V44SSJ9[eUDd*AGa"m%`G
FDijMH-&qH8(EA[fYPPkKbP0Ql3K5!j+P9Q[)LX!,[IiP+IfkJFKBGA1m8G[N)ll
mZ&QG`-KV66e3#dR@HYJpGeMS'&Fa[mhEAb$53%C$9l3Ep3FBUSj1`M1G)cm%8)9
#+'-3q6q8FQ2kpX0!CVb+Kd#C1aHCeQ8[6"k(X2CFc-P)Hr!Nk@p25PjT5+4c'S4
99Q424VY3UN1%lMM&m$`4dk-!SSqE*%APJD*FUe)BCTPM(GAL3+i&Hf4VPPa39%&
-)6kU'rK+EhcUGR8NjM%CKE!9&JpiQ#Pj)hr,f0PVNM5AB%2`ilAa&cB6N!"+%6i
+R%MLSqE0UB1EJqTm(6G*##eSJY1jPM,2F2b@f*UcY(mBN!!-j2ClA[V3+9"T9B$
[[!F0Tb8(2mBXEjH#dY1`mPe1j@pXY!&ic['B,!kaSZUBSB)$ShjCdCUlAR9HBj2
m1SM6FN4&S!CJIf$&0*f1@J%RYVCVpb"%hM)kML5FDHr#1RUXJ*[N,2A3ah'695'
D4QlRm#"KSlmPQdb,+9kQ!erS2b0&h6f%YNF[FG$c*a+(r+rCQ0bSe#DJ#ePUA6$
##-9NbA`S2NCD#2Fc1VG`-Tq)`#3-mP6)%)3)EIR0H0r#IrZ%94C@jcqGLI+MmL&
[%Q@REC,Ipb*p)m1B(bH2L*cLq9fML)"FQ1h)Q*l2C[3f86eK%fcTfc23ZJi6UM(
r1R+G2'Y9UB`&lFfFmUl,AAK2+-5R5[T9D@`fMd4,Be1)(ChER5ID2*bmdR9pX(f
KTr*lHfFFB`1Z&l`m!RVj,BZ,`+3qH!!HB@##T8'eJQ*FR8Q#2h[kqYDjDiF*0(q
A5ASae-*0XlhT#ck3!""ha-c`A*hI2f"GK1KfZ5Km!16,%"iBQ32VHiC2VPR#Tcr
!320kbmSfd8bK6V1SCLU,2VFaYB8k#)@@,#aicKHjFRpB&EdF'C'Hi0+j+dEV)Qc
[H(md"CkZ$dfl5QRe110LLqfk"D!bHi0TH*RR2*!!%E2eb[H*llm1LU+Kc%[640E
P-MGMFQTJqBj`I!&e-f0@9MBJmb8GERK-L4`*p%5R2acTLheY'R2A@&*USGp,NUK
3Emd`fL6dIe1)(LB&mX$,rbP%T9r%EbhI3kV5QP6#BR0#RT!!*hamESVqNY2K)SE
UR6#EJd)8NQ-N4X3DTkX[5L9,kCHScceGD-@U$f'cjcf&jQpNDKQaKi!kU$drHIJ
*lH"DHFlF(#(m&8['3A#J1CI-bX@Ll0*A%,aM93J2C'b[HXTEd1aY#NbhJ(p`Vhl
miHZ09`KTp""Nc*k`&5"fVDNpjCNUMApYDcI%X3GCK-hpSH1`MEpar!a8`Qc2BHZ
c2M+LBU[kb5TJr4d"idAl-Il6ZS8hc[K+L#RE!Ma"r*i&-5#*[*PL1RIJ$q3k,-$
K"ri+frP31lG5c,-l'(rq2j'TjN!65P$lEU4(M`KP)@l`)1Z5)fC&#Q'iU5D#P$A
&%CGPG[)Bp9'&[E!'Hf'6JRqSe[h*i`LK+AKlPU8clfTRXKGlJ+f10SZd0f!K@1H
8"pqb39!hV"0G@Eri6'D$"lKc"NE+f-pI+r"VVbJ2#&)!`GLQRYITV(3KJA*f1VY
JV55cE,B9p6lMdqjKpj[e-)L,*damjrLc48&HrC%4%cejFJd%SF25l-'ffM+kHM[
*d(,H2A-45Id,ZUA8JC6I@rGF$K-'HiqA2b3a#CcFh1pI!q85h%pT"i8q[0R3XTM
P&5AL#CIG@K83mkh43bU4ZYDVI%DG(!))%mX5iiRX@H(V@G@m+558jmB%,kR#!"B
4HpLDaSPY#'iqPAqI-UIERr-N)3G&$3iLcbTcq[#f)2S8cDL+8*G&K&Xb(RH@h!2
XL[LJ3biAUl9cbp2DGl8LSkl#r30FSTLB158M%(kIkG&MQ#SH3efp60N-2Uq53D%
lD3R5rP@Qb3KG-&iL`JRU@mFXLT6!TGRHVk-Q2La)Fq6QE%m2HX55@i@krKm*"`b
2q(qK5JIkbXqdY0b&b49)AEBPBEIBV9FY%lh4S+PiRX3#)rRfII)#[D@*ij9ZB(+
8Dh!f[KML6l6MTG#DqQ03cVKP$GeFAJU25e$l%P%N@e5h20"54VUf2,fpqY6bcSZ
VBjbERaNjP1dl3J`ZlJd%mST`CMQ(C0VqJ3%VZ5C9-V6(UDHD8j9baQU"H6JaHIa
a-biBq&qHA6fclCGVXUra3"JrJ@F#*R*r!hIc,,Yp6hkrL@"D6B+$L"Je*'ckmi"
U*fAkCq8BR3#5#Gpi#0R)IR@CQ@h$$[TGAcQ6-L-$CSPcZ)%hq3&MEe@CD3A@6DN
am!jjIGZk5)+QjX1i9e1dAI-m-DH#me(a4%Mh'`@ceE!c+dfMLDML%k%NhTiZ`2h
Tlp$$EBRmF9dCCUPEG"Q!X%+j@l94"Z9[*(0R3(1Grh6CBmM@Vmhh)jr6[80b,cE
e#CXIXr92a`PD1V5"4F`VhRF!1qEBI)$CY%J2&@YeqlGlE+q$lLIiG-2F*@+*N!"
3jV$cQ%jcJJSX&1*ZphUT['!lXlC*e8bAek2HRjF2leqJjpJ[3rK1PdY@b)V44FD
d2[92jV"2eqV$A6e6mXLE(62rEZEASS&SJ)hGkNphb*NX6JY8T"3dGDRI'ikNPkj
P8f'-K2"8FRVI'j'V,21-%9P32TF,Pc4@G-IjqV"V3+ScJk!Tjp"V'3ZZGemj6I9
q&)4T1Fe"DLJdX+'Je#0pm[+dB-H+E@VXfLi$cF+S%FEQVH@UF3*)A4id(S'-QhZ
aAE@KXd%1KBF'mD`%b$d56!$pbE#URfcDVZbK+k!J4A4-G90PeU0L+a2,X(pCVi0
HXX&A-Xik#5J@YGHJS1EP,-d%NfA(DA&15SA#[(6YBP85LQ@0V!V8mYS*B!i,pB#
(G6f")Y##)qIEHAE8fXkc`k`ATR(1m&@M&TcUe"$U,#5U`AU"eQ9I8jZ`IG5aE6b
ZYmXAd[l@YdKGCA+Y#EMl8lrV4iq%KK@@[b9dm)EH[K9)qZMa%Ma[AD[[`Iadr3P
N0P8[pad!!ZX#+XX-%ddX59Ei`*DARI+b#k#rdi80M)If+Lcb@!q[L3a4$CJ2f(5
BF([[b@TmraMB-[YiCE)S9VFA@5)%hX*k@jlDJ*D%C*S-q9mNG@bdrFXI-lpbS(G
JSb`EA5@k!HJr%EMU1K%#RB%#QN)brCq%bYheZJ5pT#TiCI0I@@f83Ihk)2Fab1R
"q9&'S#NP5dIYj,)!Vq@Cpif&&0c!%5M2rC*)2`UJDGhN1TJ+JNYQ#US)lY'm#aN
mj%RaDcKi%r%5(c965rLj*cSJ9*LPZmaS2b93l&rml$dfh+PT,'MKBdZa'9AbIcN
G'i1F,r&5mL'jJ([D&q@jl%mZc(JrMR2XHpU6ZNLYSlmpPZr2c49@hc[0Qph4m1%
*4I6RC%qSf+1AETaR*[YPZiN#e,pI+@FcRD*bGi)5TTedaU&MI8#PGQ%aZNmRFX9
hJr(#aT38YhF#THNb!hAcPLPVZl@iJ)YNRqb0qDG2438D,+E&UhaXERI8CZfN0JC
bKRM'lecV5IK9$2G0*E##pQ0qQ3,E+cle1r@#("d1K9Z$[HBF1)Ybf!@5MVUdM%Z
M*["A4G&YC%iTDj52&p[R$FRacCeMm)`a8#N3Gm63UiUfXk9C'Zf*K8&L-LIU05R
m@b1FrU&H!a-VJT14rP*AVr'a9Fj'fDRKe`4T,IDD6bIXH%*+iNpUA,B8V$T9ZkS
*QqSKRH*NSK2hMA#X2clXKf#C454EYS+1TH,3F"eh56-4a,,f0U1D$"rYmpRJS4q
$R@'$45hNbi35`lkhHC!!`Q4hZ),c`[hDrKcmffq+)de24*S#aeJ,r@U`FTmEZMR
A(rhk,@**jJ*LF!aFX@Z*Ee3&KjeQ-@X29rdSPlea[K'*McJZfEMKb9SVCV0Pe[4
(54!A#F49K(4c6Q#m,#'!1"'T4c)b`jH6QdRS-am)KaA`"[A&%#Z8Rf-K"PQKU"9
Y+kQ`IYA*NkBhPh'F6Nj*i@"9FUfL5U'D5*JCLmk0%Z,e5TZChfciRh-aY0FIB1"
c6BPE@QZ$'aS4322FApQ[*9b9Pl,[MPlcIrq$Z@d9EZAhf0%FT8!jGerGEDeXk-e
V"(!-ViG+DFP)krI[2FCIJC+l&V-h3P#Fb@U6MGd1U&K00XQ3!*8YlKjm1`Q#X(V
3lF"F#Z`+$bELMPieIPYf,FSfa`*)'#q[E,ei[Pj03MK`V#Rc*6aXimJp#L5TU9!
b6JFF8d1'PaQ4fUAU'50[Q&@Q$)-arXGHTE%i-@,MCQVXK9)$jRCjlBYPb$8(`93
LkL$[HiL6V0!Rq)Gi6RX(N!#SB-,d%%jQq-qcqHX`5VLPBHBI,@@-Khql1!1+G+b
XT%0JJIJYP`4&*jq)%,9mG8lkTGm0Hd6%4Nb,DCHlE)G(bk!(mTVVS2HA&6k,DQ@
,rGD24j@rkXp'(1JaM@YPbZd[HH1Z`NZDN@G#de*(c535EIB+l'(#c%@KAAAfqV4
Fj6FSalj'56-`',acGG$9NAqIDb!(%(X!3hLER$,X3%$mFG52j@3LR#X#YcdHq3H
9(dj0i1l*dS-,P%C4JJjBV2ZGX$+930P[CPJUYZaBBCrYm$M!T1[T%!q'NE3Chqi
L%CjiKdpr1Hb"C`MdiZ@4PCj[Dkm93(VpaSGbh@N-4bf,iE)GL,Ukem3cdqAe+e#
F`SPYN6))1PS%UMBm`ejp,K&#,Yc(TH82hV-&V-Z66TF6ER+0aJ9UJ820"'ZlTd2
3S`(Aq5!,+jhV'-KP'iC6MGRZcUlL'C-"5dSL9P2aQ15CCqrkX%K6-kQkKb`cCJm
FJfZS$VI0AES-kqHfQTjGScD)fm*KYMG5f-b3!''aiKH55iG"YTqG`6`IEmA-6Q$
UXl*k$6[2-Y-pI$G5Gr3"f#DL!qacaHIEcRV%p4NBVKK3#jp92(eM2eE2[a[E(Qr
Nc+f`lCqIbhNU#1iFI@ca&jUK8pNEUIbN,SmFBYPK,aZHa9RXCq)bS86N5PX+eLT
5FBiJq1kbkJ,8fV52[fMaY23jL6L5T+q@6EIcVf5EcpCX4[r9YZmYrCi%$*6#IdZ
N42NYRF8*h'-6I6NmJ[4cT)[k"AFa,IpCm1J$9U*')-Yb6B&50(KQB(UKH-)!i4+
HX`d-,06pc+)2LcT31i1cfFLF&XIP8b"4*qm%4XY($%AQJ'GFll1b",N*ZIAd120
Y4Hj,(TBFmQZm6"+96S32SF"SRPh@*9`KafU+cJ+bl5Y-8LMiV59CihAlBK@)()"
kS584kMK2jThklKPr0C,XXl#62B3pIR[ADHH8Ec-cSE2A*$fil90m4p96%I3KFe6
G,6C`[hULJBj(SkR+1c+!4)&4RkAa8-(99KhqM-XQf5"AE6TF6'fG5SEqh9ReGq-
!&!Cad'pM$92d4J'ILI@Y6Y8-Mc,Yii,C4,(DMi04QRK4(AAi#PYNe("SbTCK%1B
QKrcK6S"Z$mcbjibmkCFR1)K4d`[m6G$j**DdSVHUD@HDjTa-#p6L8p2IL5l9*(,
(JLPE#rCcY&Em@id-95-LXc-2l(mH0&pN5r,HQdX6mR&lj%H)(+&d$f'SJfF*UH`
l%KVPe`)(#Z'[pS`)EH,`!hDHj@PSrS&E%0SDcLTQjcP"a#F@-G!Hbl9,TD4"&5,
M"mILFG'ZaX`rlPT+h4Y5F@)YkT4LjId-i(Z8D4NATFkPdXkfq-B,(IM($qCTlm$
+j31ddB,$QppJafCrhqR8C6elc*d1d*C(J#Zd"'aq3HViX9PeV6b2A"@$QUqZRl9
mNclh!&!V,caTISc1ahh82i2LID'SL$B#$S0[X$i1!dENRN+S9!a!%b4b)B#R-1"
Aai0U-h8Qh&"lhS#!kLF4r8M+KKTmSkZi#Rj-q8Al-(DYGpX"4!YJTIhNKA1d''P
B("8GMD-a[Zh+ZjT"Z30S'VBMI8@Z6R(K@ZQM(0c2EVlEG1USDr[(R2&UQKNDY5S
!4D5G`SAC0"F,#pJT5AHHqF9LEiA9,aBFejBFSA@rY6#ERqYJ!`@CSZZj5(Za$G#
UQUG+Bc1eamkUVXd$G"RQKG4H-1,APLDUr&c#Z&%%$Uf#YZ[qJi%`q[(14f8G36`
D#H#QhC8V9qTj6eGqEbp3E(3hRQKG6LPJd%*-UNeD&IPbeXp0UVq2!p&`[pRTbcA
r!D,`aXEDRj2MXE3hUB[Y!$)"1d6"JL8)+F[,B"Sc'*Y&KAm&UQPID#`&$hD4T"b
Q!C*h#R*C&(YJ9+Z)@GEmQXY4C'J#c+@ecBPKVQU,8qIB6blZ&#mP"RJS'ZMq*M@
Ri(UeLNq-N!"fYb-a-e2f`CIR81QD5BZl$E1AJ9-B+5M+AEUI%b)'G&B8N!!E1()
R1e,0CV`)Lk641q93(Q[J$pFjSQQ&&XR3c-EUETGUPfIih3m9*,Mf9&XCAbZlrKZ
D@RT"%#pL8%FhFKZiU"c[J"EiA4f'i-1k*YVe#F`CKZ-2U&K[[L%d8+L6@'!lpjr
Sh9KVMKZi1VK!`X[Z,dEZ@(,LLbT!a$)83)2G1b!J%1!kKbr#L)5F5rJrIRrd*5X
GV')mV%PAH+XIj5I0'K9qGb(H'%jm"YrdeH3pp8KFFreT*m$GZAZ+S!@#9M"hr@!
I[Pdc1`m2*UH&jEULdY'L!59N2p"mR2m1BBm$[Vd!5Mf3!*&kL%"8!5Akb*pPD3`
6iJK6PCjpjl8-)hemDa$FfV6!pF%@dj!!2Qe+,XaTFVS)bXJl*kCKaCeF(Ace2I4
CQZCpKrR2DjYEjh(QeXDrfIS@CUrLYHJSL9"Df&qBP*4pUB,GQM)#C+`Tpf@!IK-
IR0hj#kTRG-!,+V#+iI5LYJ,V3Vlrd40$'q#*T"Umi+ICmc@X()afl`"LrT2mYcP
Ua+HV0JZXd5chFiYShDXbV2M!F13Ua00E!!r2DV(RH#,c`)-4a`*VFX&j2Z8S#h3
-1Q0j+VcA'[pKEHD'Ke2JqLS@NU,b0JjQJAN,X)Ai(AAVbaC'jBc2LI(F6MDh*fA
QEY"mZQ5ZR!'aCjrZ2cpa[Y)qE&hSp2q9(P9(TbYa"YBVPF6m%3%bfm0cV&U5$DM
(S5BSr-&4f6aAU8Q&m@R3f4DN-i9QEhAa3V"h&@`,IMf!'PL%VlcH$PVQ'hb*[B)
MJke&$cCJp"NMDMV)l@X*03h*F)IjGP4EY*(9-%l8%1PqHhf@0XjPDj)H"*TPc&Q
AKP`rLAphZ!d'`h,ABRYh3(pb6kf9ac"3aUY4ei'*hXlU4U9,L-h50)[5K!J-p&0
i5iLk4GZ-Hr)S2)0-,C-+X##dA&E0,VGGViY!jBaV9QmkR6LR$a''V@'3!!30,U[
"FDLS4KAUJ,c[RI8+RCGU6GI[P11MHC9ZrXQH!!c4j5irM&*`G&AJArPXC*r!0Lk
hf-,K48fF!l`+!8B5eM2jG!"HmI&@H%K$mIiRe[EUR-f'a-+R4[FScmJX4iZQF$B
,'JiHmRe4(ImAe[F9L%2+bM#i"H5#NHNUNb$(#eJi#i$#)[9I+M!'GP&Aa-Y"PPP
Kj&k3!&")DVF9ESkMc9`rAIieE3U&Sbf&246m-h-%+Sq2eJb"(9'#E8,E9p3A!RF
L,UV'bdhfGXmiTfjEaP*6UjAJ"58h`,B-(fK3*)DYkZB`0lhdmEd!P[-3e"M2+FG
-K"Q-J(KIm02Pe3rN$U3pN!"A&BCl"%YDAqmb)rUDUI2TcBAfcG$C6"'GBq!GfV!
)fS$,pHHDpC1HeE&#3%Ya22bXdP"rGB4(8mLhd3p6reb-k@)G"4pE3rXPmImIES3
b+(D"'($&EQ%Vl"SA%c)5$ANAr*JlLVQbT0"mqhKa[ri5LC&kmBhPR#2mS9("jAT
0EE`,Mcmi#YMmSEE3E5K#I*Me4(-6afi%j)AQQ9TGqV%0f&#84#!rk3(1Y6p00Sb
LrNYl5,FieC5J,%Kh`@QI59@b,YhFH0HYV$`""IX(4ap@Tj!!lG@""G+P18YHE#i
p-AM3(Y60[`@rfF8DlhJEh@Eq4+LU,lQaFiXAad,0TqI08TEmZUjE%*ALq))(%9-
%i)hG868`p5lhIeG-C)FrFU)9[-YSjek+dCPF1!G)iMf)MZ`-R"Hq9Zp&KaeZUkM
h$hF-T*BV%dp2+1F"ar,kCV"#2*%Ere#QfDEDb63CciYVNRR"TA!baqEB9LT)f!K
pLP%cPMB$(#LU%iPBrCCYkLi(HP#9f"K0JAfiLRkM0VMGmZSbJCF%''k!H$!!YKJ
J+jKVALme3Bch"B34(+Ym,HqCKAU`TT5KKR5XIiBD2+CX3C%"bjdhIeji&RH(Xr`
ACICZ3@PfHK(K)6dMa[D#DkV&PQ%@fkIq9Sp6"m'ifBbiF+G()@9DZJTkH4b#MRA
p0HPBFY3e2(3pA9&R0(9+IcFiH[bl,91m[&5r"KJCZ$-9c[bEi4I$+d#)Vc1*I$e
mQN'Fdc!ppP6'5AdIFGNlMMZX@SldZY+(A(Nc1D9Hm9YdaBCD&jj&&rfN&HZ-'Eh
hjq[a!Y'i&3H!UN5LNp@@6Z)JB[pF0TEQ%KM$Ydda33'!bfSJ2ATj@iA*5Z1#Zf9
#8"dXR,'0l'%I+dAq8['19G!3pASImE8[0G9!jSKFrf(X!#RSYbHp[bl-N!#Pld-
,'5N44'Rc[f)#)"cp2'I8%J2dcaPRpVXBVfdKeYLK@KI[j$SNMANXVJ4eG'MbVX0
S4FM&lCi95j`-Q-$hB!S1RJmY3bZJ4KJPKhTY3erRAkJRkQKC#hPc5UcMeZ[VapU
`UH0cU3k[)l#T4##RVbcT3K+Rq$mH$CV,Ga`TCXQS`@EbP0lNDS3ih#Bp24,DJ![
jPDk**dkV$0DEL"d+4M8qqaX9B)V)BK[lhm"(ddE98RB5i6IVA(#m["*,JPVD36Y
%ehpM-25c$i&)'(rZYQ#88)&TB%Z&(`Ek5Ja"2H)-jQ*G!rF5c2mhPeiZNU(-Q@V
C0jAfZ1N"T"LdH*fXcI5YBk[4Xa$SMQ9eqS%"6PGdU,9$ZdmaV2hYAMi`-!9`chS
LbhJIAi1B"VU`ji"3qS9ec!-(lT4DR"K64+cMp-4*EC&(frT'U!8PCC0fB)dckq0
U+j(@YICcqM$k5!f)3iFIBQLrPe(khalBqQ85MX[fKK!DTNV,-+3'5*1JAa4S'2E
kD@S[cRb5XXVq*0#5V!0@qf`JIfUl4LN[hlJmDLjhPb@hYIiPMC*%hBfeh,0"fbm
+,B1,Ke[pbC(("*Afe0L0-Ee'KA+)N8NbZe"Yc5m[P@hB4rm2VHeJYe*FeG-'3!l
P'r,j1H`f!XD@kY0Um2Kaailer4kC@'*Vi[kd!CjT%Q#Dqpp200,X`Q0HN4)"MhA
dK8X9XY!SAVd5)#jlFFd2*rbID4'+Z$E1ql!qHNSFr!HU+J&L9CGk4fq#UIfGH4*
cf@`#riMAlaYbBEVM+H,)QV"023dpi6%4p*lceqQ8D*fK@LAJCJA'5iDe`J2C)h8
RNP,je'f6ipQq`+"ECZV6G#r9d6XXLD9HYIBX)KALQQ(1S1$E6Z$[eZT)Z3jY(`B
ZcXT0+Sp,aPf8(`l1TA"qT`[X5R"SaQfbef&[j`)U0l&FXQ"ISqMQXSpjrjTFfNZ
&fjK#D`pE%lTK[QX045+"h$8b%Ac-dDXLh(0N+'51`G@[2AH@`4h%(!+M"L)i(8K
'F6p+!Hp2,e+lElRERcqpYmZBE'R9I+M8,(bKGP`MTMSh9`f8PLNX"V$84cAak2p
ph3+JLZmqbJR!k,`6*I+iPLC8fj4JFDbNY*%GGKmS)-I%"`EDbMA4q6Fec"c[HEp
r[T+-Tk-M*$jr0p[ci@qA2Vh5p5MUk)$eSeCY[FP[!-8T!F#DIii&%he-i)&Z$eL
V(5C4-[XaM(((qifaId%I$d`#0XdF&NmX3lkV,RdDVKaLj6Fqp[9%-!pbCBaBI3q
kahkcd2(c"kfF)4ES2"T*2lGQlNdpS&XKkC2a`,M@RD"J3f1YE*)cSGQ*RQJC(j2
BDU8,*-d@Gea[9S4GJk"ab8'kr#%liLGVCpbZVYmb04N4H+1c1h8#1rHVEcaqG*k
6@Q*jXhlh0p9eb4dr*2LSeJR`F(Rf)amRM(GqUqE+`d#BGfiP5+")jdMb,hUK(fj
LSe1[S`,-+aq)48%TXF4QJMrB-U-844ElYNbFY)IDUr#[MkMcC@PF&!--$,pr3i'
GXf5)J*('NR$6CrcqIqGDSJ5Vei!Ib2klASrIV'$j*ji-%p6(Y`2p9',@YH[`RMA
Q1l93AE'*F-+f5RZ"`j(c"6R*GPVGK5qrPVC"BkLa%cK9p(Jdi5G1KXdd*d&,2JE
YN!#)'NB6VqRb`-ZYS&qB83bdbQQdb4Q4Z,#&4`HqFGlHZ`@[#cZPf(B%q*(k(9l
Pf82kKlCc3@(H(RK&i'bYHd@L#9(3eHfqbNX"YrC8[Trl9Q`GaFm2b8fi`6P"[H-
)*V2`,NTaYGNZfl+3!'"*&#[+4E$&!-ECU%i0NDiml0hiVB"CD89el6!3"A06r%J
Z)!4G6,PP50P@9!q%Y%m9BleZ,Z%XVVPD$c1N&D8V-&30Ud9UU"TKKIQK)cmhRZ#
F3TfDrbf+l'm2mdN@8MBAdk#(%i#m0a4Glq9(XrA9&El3[ANZ)D'NEeQI'a%!eYr
0pH`k*@m%A8Pi3lGE(!GZ[S30@,C$I%6*3M4r)EBSIZ"MP%RkP153!0LL(pkmaR"
%!0PPJG9NCiSpeEfaCIK[LqbCRCb&*&P"Blm*PPNS+qb4DBm2LeA'[r@IDArU'E(
ZVd4LKY%RdCqP!%lifaMMmG4CEb3UFmDjS@`+k[YKZfIKMhdcp8#j9Z0Dli$&2hL
3!)3[a&14&YqTdUSQ8$c#-rfQ&ah[Ta*([%!EQ2r#Q)LKFiYafqbM!%EhXD8rm%+
lLCh1VjLF!1kJai*KYlE%l6*+c3S2m&$#A*Ri[-#I+TjNI6jY8$"%LC!!$T`G%9[
d"*M,flN&0!HDfXl3J5J#VL6JN!"Y3pFdQ`K2Leh00TNdIIImEYUGk''rX"8E%l!
'6DYk36VGhLMi`JA(r8`Q"c#&b,[QQYmP5r5aB5b1*CL2QSYbK$[9dTp+qRirqP9
jM9j$Q-e9JRRM4DrepEff&add9,K`ab"ZC!Q"Gc'81aP(fmHiflMEF+G,+&9,c+N
(fc&@3YY&3I,p5fE-h50U%2HG*+Ji,0FX,-+ppQ2AmhLSeik&hZ"'AmaR@E)Np*@
8d`SRK'VA5C-%KGk63kmQKM%`j4&rjr,UkRZP1ZED6J,T-T3KpTb6-LcA3cL*m@j
J&B"Jb8%RPE(QI)MhCh"q+(-6d&FPUhlcGm`Ah$D[rARHjICaNqFMC$f[cdpM9DG
1V6+E5ZZ$9#YY9!J82IF!U'X')lHH4DSXkeP9!8QcMS%+CGUYp$BNIRQST")XU8m
X65Ka0I&Y%CX*M3XM@A0DYd08!*!!D8,ZT-qd[RV)MM%IIUJVleZD@0-8fi#ff4H
pVKDNh#cZ&+K*Z[TbD*M3L+iEC6ir6$"c4R4q0@q6%P'LNeSGG%k[JLkI(CjdhZY
GUpC`-f+`MPU!9e!@V*lj#%'H)qJEeY,8,d(!2'GCfUL$@6!"Xe3NiF'K2**U9aD
Q5ALEfilLlTPchDC[p+cm#D9GaH99Q9'`pMEbVZZY`GBA*N)%De'k!4ZIM')bhXX
rJ#f[LhRF3!Np#GZ`%Bdq`*!![#H2@RrIEd8N2m8rX9cj%I%RfThMrMiR0m`Zhap
V3Lq6E)I%Gp"a`%M94,0@"")"@H[4lACH3#fZSe'H"D!Na*Fae4`[HMlU1mpHAPK
p3U68L5IqekVcHAq[qT-1mepJ,hr`Pb%kM0`pGGlC-iS%D'3@$*!!Cf#[(fS)2+j
S1ZE*"hm[i3XKf3GYdXm)4SBIZ$l2IZQJVla$0N2%99TRCVlXUQiHrDVJ,2llBLi
jYMh9Y'DdqP1Pj"UVrhR2&i,N2)`PYBDX`e3)Ub+Vc"B+rTA8&PQc++[8%@,lG*&
*mcD$EapC5ZIKl`SmFVlNk[k(G@SN'k2%EqfRYEeL"bB'`iE"*'SRZp6h4jc1B,5
3!0h&i41m9bQZ%Gh+!+`K[`hSAi8QS4pqA,"bR0q+@BrZ-f6)hK[XQS1KjPe-a1k
YYN2&LPTRbf6d$9E#ja,%L9E#eB[3)1ERfG[@CQ+kFe56!Ti[N!$T-28%BrJC&k[
l[TT(,9XEbY!ldKDXAE9RXiPcErJR*0-0%(m!)PP6%YI9#el(KbI+f5er&9[(8FU
3!!qaFmD@%&pChUUfB1#QpZ%XIik#%V18D2!"Z,V"acBFddi'"82)PVPpbMdQMMl
I90V(+ck!j(M,2Re0pV*e1m`G&1F&Kd69$bfA-JEdeB2lY"S(#J3B+UA[q`p6LD@
G5BaRjXqJe9TIE$3#PET3Z),@"(S!rkERf481ETpHbiXQ%XGl[JMD[b`kJiAR&qp
A3F+MhNNm&($ab'P#U'Yh!90d4C+0j%BH+2CI63ai!PTJ1Ua,h-[,M,Bj-R!i[V"
&XQlGdqF#0ck,*N3(T!l,a-5-af+,DaKH4'e01F5!Ap5&T`"I"NK[P55'%CTjd`)
A%eaHR9L)Np-mX1MDbhF1PC`aXVPiZce*l@q)CI)K!h$Ddhk+"J,&9ZAd9mlX1XG
1KX59q4J%3TQhAY#ZhM!rCJS4RqE(k6T)#cN5)R%`0j)U&rQ11D9j0[3!X&GfKZD
'"U'aaX&2X&!bl,VS*,-kMiPAk(S*X4Z*!E)`b!TUAb5Flp9I4kQVNX5eMh$LBH'
J48T0U!)-PVbaLBf4B&ZL!6pK38pJ5X9GQC@SP!qR+i2I96GC[9RUR@5$kJ-h4KV
4+"1R-!8N'a"Aj1Hj,UlCLD0VX(C6N3-kk`CqN8QNKG0e[)4*)d1bT-!LAH1hGF"
5cF'k`p!ka*SmA64UfFP@,JJ3)@"@be@eVrb*G1Ia%Y&l)kaRZ9pRhEcQSH&f"j0
CfD,B!Gbbq8JM[1rld&"$hF+(AklLdr1hR2LaJRBR-Z@[`pmMG3V@#Xq8d6JJmSl
,1V'ip-XPCXZirrrdbfE"FL#MA$rMRLGJK1FkNDli#IYjIC+'MGXK,1T"8!%p)9J
KAN3L`MAN0'!ErJJ[J%XkY26abf[4F*BJ35#qGU4,#d4V#EKZ'bZE24FBY1U0Vc+
YSERT*afG'PjYf+!L2LDq(b[$iN(j'QM(2MliT22$[CPVlPhUBaFfEJ`#jr!`CNK
E0[ek6eYDI8BdNjq-$bk2`j,*Y+4YGX!G(mH3!"Ac,Q&AHSLF1A%KT2)!R2@@CJC
d!C0XS+q4qhjDPI+ql@1BVbU&5a)[BKJD$*ES9B-ePZPEhQTCleGQ&Mi&DA%0P"(
J-)CiEaHMq)bk0-3j6BjTLT1rNdZi!I`!aDe*5UB09)aS43QS%fD[d+3hqGTY@h8
R@h&LL1-dUfa*hKM(cMb$q!C8V00R8U@TmkFl"iR1PAlI-*1`3R1eQckL(%CQIC&
dDd`BLlXC$F@3!%f&Y%qNYLe!2"RG$9k`D%GAYF$cF-X86IX2l4-kiHf*+PAK0dQ
QKqY8"k3d&5UGPZrUaCN9C1#J81"C3!TXc[rl@$Z8rM"l1C-RJQ$A)UeM9+$3J82
IVP@ES8j)jfCZR9GhFUhRZI'[U"0QBUE%b+L8pK0,m!1!YU,&q#)QQ38Ze,NJpf&
)l2J,8223hK"Uh--TQp#@@rafTQlG)kiqrB*LhPY5f0-`#KE!kNeaqIfQr((fZ9B
PKpPY$`!%Ej*$)[ipr1`)-Pfki)%EfCE-K4NFcLK%aGPlA116h5'q&RV6r0NX`C,
B6ml'q)jR*,+IBU&41C1ZKbP)*V$r-I!#d8+cSX)RJT53!-TNQ"'Q4,k`#,D[pC*
3YJ[-N5,T4mM-ST91#i3$YD6dlI6eG84[jlZZTfJ8JbXi$-`R*"1-dkYdAjk491+
!Uk"N2Ldm!'0#3J`jaC8h,RPY+*5SHd"$RZ8M%6J,RK&@b$0JR[M&14'MSd&-I1a
[+[$k(j01-e4rbKl++D1ePG9N+Mq#,i&&,#`0caI-1%m!V%8p4,jc$l,Cla3&iVj
IllmD4H@T5RqSi14qA2`lc112D[I[`*(j6haP0eS@4Rr1&-"rCP!M,XI&q[Ji-8J
Kaa@TipLapfbk$`*'IIj[`5(EBkJ(T*1"JbI4QfcCpKKQQZ+hH"eaRF6ILbe3c`D
XGGclNeh0f4T@SPFj%iBbSLB#ai6MX9B'VlpZ(5VJ'hl-M`r#)0V`*V3aQFbLR[l
e4A+K9P1'J(82EE,$2"BIM&*ZE"55F6aad61j6aI!-0$X9ViF102Q-0aFT&*6`Ge
EAPJ&a,6HY-h,m%MVN!#fP6*ZM%6,U4b"45Hqmj&Sk4,lS+H,D2DeV,QhZQ2EMP4
UH!9B&k*Z3V%K1F(dBH4HV8S4%QFefc"8ZjbH[@lQ3pXb,3pD9lr*G@@Vk2cid"i
!pL`XP$pQQ85XiYYNF@4+D"[4BK!4E1ad+l#l0`DIYf!GHI3D4cbID@PkmFZeQGe
4KbV`2IG-Ni6&JU92SP'i5ZPq&,0SU-[m!e@T34@*X"RYE3EYM(SeGXM0P1'j5`k
0H6@B$JdL'i8,J#X'fCQ6h3ERQDeNFXi4URIQhZq)4%RU4`9hrjlfRC1e-Cd,irq
aYBPcDhCBp4@+[Z9Ip*Qf+l&hUP0%5IehKaPi%mFjE6fD'#h9"q2Grm5#8r)BP#B
Z3eDFU-jfC-ZQ3c2,BcC6MkRal-FS*I!`bla6C8%@LH$hqLNc3Xm@fNl"2,jrE*m
8(+IXF@bVArJ2I$3*`R!'!R$DYQYkaX[b8-*6p'A),k9-mS9'(!Z&2FRQV8`,X-)
A#bL+%'KYlN(H*[`#ZB!GM&M`*LArN6Pk+&VX*-)CS03GC(Zk-5(q866+$k6m%ec
#!Kmd)*cb6@Z3!2#jiZK[k2(aNLGC3*CQ@UUiI9be)AG`mRhYU*TCSP2SmMB$lX'
E"GVEGr'HPF8cMD`)N62lk3UF@qq%lMqA-$cA@XQ[f$mC[aB96m9rA+Jj`$UI@Lq
3!)q'5!QGR`J"HQirF*+R)M5L1P)kA6GMhY5,QRT5![-Ra',0qmVU!-NT1[aQ'Nj
p5D%L!IRBN!!BRXY()"mp[-)[rkX`T&MJ,4)aB,EF8`2INIDqC2#4)%IYUp2E1,#
iBPhbFi,0`bjrK%jh#C%crSd8I*!!$E0IK5U&QG+3!+P-f0PS-I5[Hl($hGFj-ec
GJY[%fQ@-2YI1B`i,'LbV!P$bEZ6%S"M*(`&`8SYf9@DLkA05'N[kmT4HI2RrEHX
!06a%%P-eq1M31R`k*3+*Dm9`"Vlb@9@8@1&+$4JQ%!AN'"ZRm2q6Fq[@&Xr2-[I
QZdGiGq("`f0BN!$&`8pS-LB&DmpTdMYpSeH84XA)1*rS%FLdRIXlaeJec`Gh*mK
!@93LLdrT3@2KL!a*-X'UTC43i1P1+AjNU4mpZbarC4RBp@GbZN1AZj&B[M&hlI*
lq)-l!9-XdKRh$YAdp26aR'CB4"&!&l+MA!mD`%8-)[T!$iLMcmderCQNd@(S#MT
E[dqMBXS+XjpbPNQqr&ICi[RU*6ELIh3$#pZ@qlX$r(ED`AC9Tb)LHKN#F2SNNlN
5-daVFIpB+)k([*`AFJZebF`lN5K35LhTFe$jT-dc-b6k-)b41"M!i$#BJ@Q'9QA
S6Qk0`L%Q3&BB0YZ%b!mX[*5kcX3Q+3S&%6hMpe`Si3-4q,dPSfNAJ&#6HSE1Zkc
9ESiX+%V0ilhmR*f6!&E!LVlR+MKr#2JDBrVjN9#3!#IFbXT,ZVkA6e3TkZT@3"M
aNF8Q`PDR%+Mdp!%3(-Ap(%6BIGF[N!#-4LchbX'4&[QfZ4Gbbl028AdPG8fC"FU
j@#(U31Smc6&B31TpZ`m$HXm!)2Zl3*3L*CNr1"LSGhP@p$JJEc*i[aA+,,k8f%8
VZ)Yj&X96LJRSh2XKATG`j(c@Rcm$6GMiU-U"1#j,fA15c`qE,5%QR(*&VD(pYNk
3!0aA[6D9DA(*EZ&+qC)mKMf0P-3X$p3Y`f6GXN4-5`lpmQ1PXC@rqjkXhfl[hM[
ha!5m@`*@5hb+PHaYpiBS,3Z0Xfl68$m"q*9UQ!Zf45a!p0*Kd)rDYE1@("[4ALT
LMG1+IJF[DT!!+CTLDfTM"B8CJM#IpXQicGBV-Q(14l-%X+m02E51liVk062(#A@
@((83*JLe3"`&0`Rka#dX##SJk"$YS0pV3"H$E3#ZHa!lPI4SU%L5leaEY4hZe4c
bSm+!cN&(VjCRE&IcIYr6QLK9L+1h4[Q&)k0QAQZ@L8,0NV6`TA[mpbpf689h,Fh
%MI%!c`k2E0dM49Y9%&!&C#(mQJ4Sq4GrcplLADV[m*2&k8LT0Rj,Xpl6VPGY!NQ
U4Q%8Cr%AIRb)$MjD5)FM)2jhK'IS+Q9`P961Qc-kKDp4[l%J2c9[6HFaT2+d@Na
ae(Pq#&![(L1c92fV&hZhPB#KrHX(6*!!hcH,M)XG&X3cD,c,j-U9Q5Y#jC-#!*R
LNjXlMK4p6FlFb-14"4i1(JR"`cfKY&jf6h`#4j[JB`2r2"[RR"q0Mk'"JE'*Brf
!-&XaVU"r,j`!QiPRlMXNmBNF-DJf)GkSc*5[4-cFr(XpKDcrmjaimRS'e(6V8I1
lI80&)0pbNHJ6M6$+H#dV24X!%PI`[(K@1LSerPX[[G`90B9ZV0@)1hJQEJabK)+
ST6m5Uffc9-[aYFrTL93kYe38`B$X9VPJIXV4e)0lc8i0'MQ%"clYS[+ZSc&-H,5
"YI8%Kq%3KLB+fXa@GF61XSfAaq"ZF8"bG0Nq9*cppBb,K(i&88Hf4NKa'V+YU9f
fIh[eEbIffFibIXC@[BAM#YMCp'"&N!#X5Tb&(A!fXe"A%U8%&QHcT3#bIVZP[!F
+`@Aj#,GV&9H$Ve,CEjaY4CZ%4'HmEEZ-FXNl+F!U2cj0"Pad@N'QjYT(1m4FS*q
,QSG2Q'&Y-)LD"'Q*9@Ib86+cAaS3eUF*T4dSB!ZMbLX8a*C#CH!9m(86lVX+J#k
DFBJB&ITXCZE#UX@%!`q-LUIjVJr,Xb&a4#U8hP[!fCL*,3l-Sj8I-j1+,6jb1Uh
cEq3Upq!pKHqj6dm&3ZV*(F+N6FShR'5"SUIL-V+BG*)@"lq6'I$I(lEdVdMQC%i
I`cHcj58@X@aK)-AEAL'dP6J4rPb122''XI8&4j!!C!9Jqi0$fA3+1DG4a`CljA%
+riZ&e+`F&@*aK6%m(KSBSYr69mik$h4!q2G"KF$-c&2JfiQkfY2QX%"5GER!crl
HL(4U5@`#&lk5P[k$'N&4r"Nel$B)f%k"rbKNhQG5AU9qpJ@p[Y[qX#hHc$#)qh3
hfr30"I$0YG5MrR-Y,Y&Mk"hc(,1*ha16KIP%#D[NjGJ2'&3rZH,2X%8TqR#3!+S
BU12aaL)qCMTQCRU3!,eGVS&Qqk2#)`HCA"2%P3PqMQ"dCMd3baAq)2C@8,P$J3N
N,5Y["+pC+@hTkDT9M%bY8R[X%HK)jE@fGh+pE*DL"a9dXB3d"j!!$ecPVX"qeH@
3!%2FLFifFEIh5ZM0a6[!Q1AU$p+Mqm$iYfEJ&6pVk9AY#LFcDRp2Nf82L'dG9hD
0*Q1RPdj+p4+Bd226&RY5JVP'T#l@1!-1Ym9Z4ar6aaHBQ(['2IZZ5RMpH$Mlflq
!+1Eb4UrF%)999VV9,)D'KI@*Cc(GjS-H1V#Rm"0B'a2pI#4N2j9m%q2!dYA5FhB
3'l!+FJp@'(Fe%"$$&ZAhHS"!h54pNZ"!qkR2"$&BrH2mUE1[Bb#9c,12mP5Z#Ck
C2pqa`cE[8(qJZp&G09B'rYd`0VGNbaUT0LAllH![aaF("HD,J`MIdDGf@Vh*Ta1
+SY'2NM#bfK$U#lTRX#NaP@CKd6AD1DBjaGYm6KLpTi0fJj`D"DJkQ[pbj"-I$Y'
j4d-,@ZCB5iU51'YArkU4RVp1Z2e,B8CUqN(NGmbeS-#IC*)+F5USG+V@'GZ"T5"
R4c$PP4TPTlc)hLB+5ji)A%3[+`5hDm-`dGpK-$ll('kqfa#2UcXF3mpB"m4bhRJ
HPN+X($MNXAYBrJee$'&HM0C-1rfQ-Z)ll*!!UPQ2EDi,d6$9N!$rmd&(UUp!bQJ
hqSHc33S[dhG8e++IT+M*8irY$kG!VMd%#@@P3[+R6K)5hFNp,Q,bC6UNE@kD*Id
d`&i0RqGX*6-l0m0f2(djjjjemcHY&&0-a189mG0PR%VCNG(&"eL4kJYp)YdiGIq
(4AcVqR2GChc@eUq+p0j21DYiXa@L"qM)j#%2YKHLJbKU5Fe9D''kc9pBR6BmYV[
5BH6qepE%q0*9e`0kTh)rINm'(QN0j*LQ&5YD,M3iD2S31k%S20m3EjhrepZbNBa
5LZC$$kl4Hid0D8BkqmI&3&V8BHCNkiGBK(il(m'kXK)RF*LbXDjNDM'eb,Am9fi
FI8`+M!Q1!rr#R0B5Z6kjh&p8p2*@i+IhMDa`4bG!FB5UJD9[cKS0re$LS@+`ACD
S8--(J(i)D'654,G[QqRqB$!fDTP-GfBU21i9YY-aL(d'Brb@rREKmlS0eL&*,6r
Pebhh"TQR'XE5I34F,Q0`,8fB@FTYVq3Z5%VdcB@*i`V0Ch&"!K&LQC[bN8hjB(6
16S`89&G$2HCNrhN50VG4p*!!"ml2bUG[qQ0lE(rGFUahkkekc%-3fmFrr4#I3HK
pC&rB1ic+R+5ZSV28'aaAR$jVAL#F,VNeEf$ANF$,Dbbi3Mb0PX',j%pNQpFX0Z%
mHfrL8hqLa)rj`kVB[&2VXVH2!T2'c0K-Z+lGhQ0FqCJqaJ8XN!$[[aA0UBe1)hH
D6"2*dSLqVrPMM0M*R1Be,%Z%Ke18"0)TdHV(JQSHjjkL%#5i$H("Z45-hZ&(l$!
XE9$2p`0NUmRAS05S[cKieNF#,IF*FTra!pE+#Lj!f(r#0RqGRA,+K"m2Bq,E`Z9
&qdUKN!!ekET3'KCML4)r!EV$iJp0M(f&+mEZDNj@,)DCm6J8cV0&iTi6'H3386C
[&#$CThB,JcUXA2(Cm[5)S`-cY'()rJN4SC)AdVVDeEjjAhA6Ced2)HbDhUbGZEP
@@mm"D!Z8'kpGZ8E-qX-Kk1l)IliV*BbA3ACEK!eI)rMmi#aDj[`QfHde'bVh,3c
jjCS6)-jkq1AA'NmG&m4++"955f6[!Z#&K$cK)PccTT!!K)NG"h(L@4+2#*)3b(i
HL8YM)RRj""G,3DKLr@(MkAf'*R3DFm"d!HA[[R5lRYq%2fKVVJEeLM#95GbMLS6
lU)S[2,de+J9XeA6DNe*@r25,-l(R23miEC!!mCf#RBpP4RqJTZ9mrCUKjaUlce1
"AcF[(hb+H#,'@E#jB&bMEXVT5c#`abJ,5(%H2B@[*dRV[$Z)MjVM+bU-Bq[%F,m
(q8d`T@I*NdCjHp2j[bEZ$JS+HdFH-!)0KFd"U'ppQ'mEbJ+p%$dYdRYMppQ!PB`
SB`c'IkUD@`Dd"+MK1XBf5PjblqQCED'a!1Q!LSe5!(h,*98LqZIC5I8h!m*6)!)
rqYaBq'IUpHF&Q"96QEP1'Y,'cBK9J4T3ZEf%!MPE+JVllr3!+&32D%DHCarEA-E
9cM!bRf#AeIrqG)U@jm%1SIGVP5$ESPirQNc%*B`6J`+$!1S`h&HTN!$eM)e!0Xc
1aL$qJL+RK3UcFV-VT@AD,f43$F$!KRaQmVhN3"2,G'`Xm&I"J,bbQjq#CPa!,0`
CPaR%[K9#Prprehd"a'91V9,V'bqcmr'8DcT3U"'Dcf#mDi`&d2GZ29KK'a0!lQr
BBja@!BS"H966NbrL0#"568)iYebqG(0HMU4Y-%1K-@[KIT1NGNE!1U6E,RLJ8am
EZ`Fi%M@@8$TSe"ML0(m"%DT+YS!G!"M5+'"jaZ!AlB4H#0rEm0FC1mLIXI3+%qi
D+"0LY+Y&GFNBr[f*F90ei2p"X+liZ3F%f+F*NT`IeNr%K@ST8cMQak1!HD3fGmJ
3N!!ZVp6L+"pH-6PIp9V8VKL1KbA`L%@S&r+rXp[Q*'d(rf9M6p"Y-E%mPJ$[QTe
J""N8hqEBM9#+CK-6)EdDSN9p5bfeYAqf%HpT9Mqp5[3e22&([c41#V-*`5NeBB@
HGA*ebSk#P*amjJjrk'q'hAI!8eq$)(Ej03$E+NXd-AG"&2m*GUerh8@(@"$,*5)
#ZiC064#dJC!!V'$9M`a,c1@Yhfj&#XfaSM[G'aN&GX2E'H"X3VJCEmib""GA*'+
K3r$p48D1!2rI"9f#5QSL!$[)8flNB"$A0aQ#FTY1iSP#fY38d`@TXBr2E`TaJD4
#NYIlc2[Bh2X4E&2!04j%SX+!N!!5'-YN-'ea-mZqP0XpfUDpj#hDMQ)K$H$dKmY
PbaRDJCqAfU'aVB2me8D2EjVT&QkI2H'52H5Y0BX(3r!p,ZAq@P#@CY,L*)rUT'S
-H59cfUCrT,*%j$V%kil(X%jmL@("m$9NG`f&i1*C3'Ck5S@@$pa!ULbB"rE`-pq
6B6'2Q4P*CbiA'%Q16kA[#r'&@HFqlJ$D!q*hX5LXfNrQrRH6Ymqk"11)2A2%+)$
NZLB8@RL0LUiX@HcPIArV%QVI0r0'(%bR)!LG)krM'HGFcP6l)*%Jp`'$X&,2XE[
`C25EHHqb`Mr&2Ki(cX4a+`h'BSM8U'qi06@f!5CS"S#Y#Y'Xf2'@INGiD"QX,,6
FQBhU+JEde)TK6[GKkQ`A'@1N"6VM8`#mcEmphei0iY[@b5r*IKR%f3hHVLJ[KSG
Uk#3[Hm2bNRP3D8J[icCfAqd`QZ9j9[8RU94T@NQSS6MaB#IP0IjX#1RS'*ip5hP
jF8XHT08KGMqPCBElk1GAG2U4R&e1hRkEqKjKL'4([@'SKKqaf!hYRKVB#!(hDfQ
Kk&*"4RQXCc!C5EeSa[2apN9Rbc8Z%SMY0cr,*JC43hBe"He'lh%@(GI21AF-$%D
ZrJKNIS,'k1ZC"4UK(eH"Zm&`kJV`9B+P00q+"QKjqZGf[,XR(FC%qG[rETSH*I'
`e3G9PPmU%1NC@hFq2Y6",C(6IU5G3$KbAXPmXH)#`@0@ET9YZ09TAb#-hMdl%M1
-6$+F5A@G,Vi'eScX"CJZ+#Ik[Ppp`QYBSM%,mHdb8Df$Yr5$4q6EI4Y8!i[V5)4
@$@8q,V6k6QART8lLHH6b&5*k9YfTE6JElaP8'H`P+B,MTCUQ*&1"Pb@A*R'CH"U
FG#Hi&%%rcaNUH3@C`25$-p&`EA5mRf5'0bcE)S6l9MBZ(!90C(aUJX#6-UEFN!#
LkfSdJ-P1ZfMd(HqLLcrDmkZZ2FMkK8l*6*hN1E!&+'5c&m[-Q1ZU+dETJBk$"MB
DQUVZE)cR,Y%i0Y@6elad-c20RR3)Yl(fK9Nj-RTpD(Kd@ESTFSSN4[MD#[jHbZF
ZKfk4+a90)G%8)b3!eMHJXY%AZfShe[TE,3h2MHppBbM%BQR*B4R'hj8X(0NMJ8C
e&L$c#,CHQ)dieF''4PIYU@QmBSZP5mhk"!@42"Lrc0L!"HbC@@h+G@GS!X#b%kr
BRde9Ak)Z"V06-D3d2eNjM1ha&B32GK$MiKK($c0qb4cKhRVl4Y5BK+lVZ@rIV1P
JGfA%pED-NK*`CIp%eNK-JDXB(CL9E[B6MH3+#4DBjTb3!,#Z69mDFHVLk"q(qk@
F,+j0jqFPV`Mkjph1BGhqAVBDQ#lA[1%&B``16Cc@P(R-p-A@JqdD@9#!i,P,I6!
6*FbE*[)5Z@$U+!4TmbX3B6$F'XSK`H3fETN5pMkBSQ1PkjKXBQ6F,*[+*$M-AV%
`a8`TU6PBM,$kMK!F%c6N0&p!Qd,$+L-MHX5*(R#Ad&,8E298!KNp2#RH*Y3@jhR
YmbHhE@'#@FBK6G'd6ZGL3TI@,Tk*SqTb6k%$Ab9MU*cUDSAa"LPGA55[X(Nl'jA
R*$&4M2Kh,*bME!9$r-l&EVd`Ne0IK64K@GlNh%3eaMH#Tm8)MkFql9UpJcrb5mP
*5pbX&$FY'9)[",9L,CGeQ'jc'[IjFIm*b$#p'C,hA&I@R')36cPefKB6K,&X#fI
DJ&eFAqAe+Z2STZSr5I+r8hS)L2Z$!*6dPhiSdEDT+C!!0`QCP-ZhD0K3"&rDJ5H
p@j3k0VpY'ZC#hYM%PITZblh0@Nj'H&,rR[e[@ZlTbTjI31C+9"@1j1S434cr$UD
AIU+CEaKM!B(KY2&GYRTbE$f%('dl4392-,+`9BpRDX(CI$3&&Yqd4'Dr-$9&i8!
(mbd2aQDY5@$T#23*bNHke-9#Q-4D#+9bXjP3Z#Jmpa)KJrMdL9H'S@r2N!#DTT!
!r[@55E&VX@%U2[5*Z%hG*bBYB,4fhRh'+(j99`kRe3UBqkPAkhk4`BQ6Hl,GSUN
DMPaX!"[Ac@%V9B01jk@PCM5a@j&D",k$b`)!,hI5,bpU*UR&Y,Z(Rkd6%ebACG)
,mV@XdfbQ%6p`AR'%PfV*h[9cjEYAIIiU#bc'#R!$'VPp@(Yf&1qqkNci"@PH5iA
'[EG5#ccp*L8`)EdlC6Z@!TP5m%p'b6df1BErNlLm2@XJ`P3K6J0m%-MDPeK!FiM
lGm,$mYfTFbl#GS'@!rFABE"&'fipCm-c-*fmr`-TUJGdaL2,%5q"8X[d3#0E'Z4
P2E)LVj8$N!#XpK-+rLdZcJN&"Xl%I656IMR915!FI9IY#a3@CUKcIpYe%))[mI*
L8YREHL&#miVJGf,k,!"*l24dmK9eUGV2@#RpHRPL+H0hACL++XC0RTGKC9!r#ea
AEUPi3-XJMTH"l9IZM,TVCJ@ZmP8d@-GRGp['0$H-j"L)3FF-Dm,Mh[N&#5+imL)
Lp!815pi9`TmmM-SdQ)BQp1[61Y)h$8Ce),HMmLaXRRl4dVUl0@'"mX1ip3ZLQc,
KEPHifJK*q"M6J)2MJ)9@LIN"!i5EKG$SKB#r0UI-(%rr6C90l4l+DQ"+mp9$*LB
ZM51*"c4cp&S(#1H9Z'Dmh&jX5qdlE#$*TdhChpV#5*b3!!DqA%`6![iY3b)rXVq
Adia'[Z@EkRkPLHDQ"`ib[hAd&V3XH,fN'ehi$-6fkQei4#)p&LaAG$SpeM"[H`P
'k$SBR2Q242US#6dXK3+8Q)hl!aqP8hCB5PaN@Sh!IFKl4"im6%b)#e,E,lTUi5r
,jkMLkl`Dr'pX'TEAN!")HJS!@SiKQlNb6XdP#d@CF8#rZG+b1iDKI5m0'"jpdN)
UZY0%I%qNIiMeV@X*e9lY$BK*J[['1"AJ-Ml`2#hl+L9cp3JL@K8bk%"BaN0,9aI
AJc2D33Ad$aL$k2PhQ,YVbh5HDaN83+VN646H&T69`fGEX[FU"idTP-S#Y99UT'4
B3T@!il"Z$,0lSraR@h5(Zb(S!613!*Ja@lTZBkcrYHFX4@"JDQPUDPUE8DdFc&2
C4&894JMX%llU5QdL*iF%('"!@1pR2Xl`k@,Dl%(qV!!`Q$ap&qiV9Lm!-aP9j&p
-0ZVb+AVFB""+hZU",3*&FePek15!Y3KHqdfLM()VL@&BqA-@TiHUc6b%4NJ&12M
X92(D-,["D$rM53PD!9MdqF%b1k%ETl6FdE8FC`i4qe')1f4b)DiY%6GeS9QCD`T
LU0pGB$Q9RJqde1ZRf-4iAB!dJ-#D5[&"3X2`FqTIUYqbS#e[0UrL+%a*3(ELE5B
fmIE2eiK,U3,Y2$E!9ST`KeadN6IQ%)5ITK$rX!NU#Y'L%ZG9ilhB@(D2"HKk[%k
BcHb,Z136$25@lYFEN!$a*"GJ`I&pS[Ia*R$5RbfSp2HCB653!#RKU#R!,m*D2,M
#@[TB8'Sa)9#T)j'YTr["2GX)RDF*GSUBFpIUD2Re+r@arR9@0DQThD`M&`h&Jk#
KVZRc8"ia!j,UhRMHEL-%A6hp([&q`MeN'Rd2q&ldB([SPk&dD&%SNT[iUe(-P)"
2MVZhJ9TIJ#c"qq2I,@GTk@p2(8"fciHYH6Lim0rdCBMV"IL8$#ST+MbFiCa#5G3
UEp@pK52h9@G*Q)fRBT5aM8f5C)D@"#cA`KICV2D@`SaA153!N6jV8Q$eJV1Z"0a
*HqKe$d)4m2%ERV!XBD%!85QMkAqUr&k$Ak"C-3eHGXI6al`81H#XII8fH,M`%kj
6k`589G32m(lCR9,bL33h6Q8IU9%FCakfh@!U"D1fqQ(UF"BXArECY@,h!!$q,ZM
EUbA`Kqka[f)Y(Ve,[[Zkh0qm")+&BMY65#$hbEYPcTKq[DSfZ&KSJYbNGV%Q8fa
DJS6TkQKYR#2U&P&@N@+h#rdUQr`Hlemk9rXX,2rMB"c@m4MEcbmT4hhL0rS,[IU
f,`9[4qf3!1cJRHbDc-Hcp4bE(Kpm)IdQ$99)$dBfV0FV8GhPX*R8S5Gr*(C%bmZ
(SmQVSYL(S%p1l"5i!DZPf$`Pqr*eBcZU)&62*fFSETeAPGccK*r*eHQ8%$HPATQ
%[UK(%V1irFVHaA@"DB)c4f3K`N#@Z(@XCT4@9'G(ZIYVk)@G),l2#MA@m1NDF*V
rPPjeTZ#j&04L+kCaN!#mYJC#m$+Q['P#G+,,'mZ[LBeT0LD)R+*0f[Y9(c+dG[&
M3Xm0palbZG3+#Z%QfINEVf`K(XfT)hPdcSBfR(@T6RAZkQCa4m6"#bSJ62Dh@2d
YiM02JR**&hZ(AEp*01H+4#[mjmUX2ZmK#q2*8Db)@lqVQlj&c,`,&Ahi-pN`q#U
BYMX58V+mY-j#QQ'$-8A#rrKQhDYBKKbB)#LY&$V(1SQ`Q3[r0XX,4DiQ&c%Ppc#
T$($M)'4Q+LGLHaU)r%95M`ff+(PU$10rqM6l(NSe"(YY"kJ!k24V0TP-[C[@8*F
3c1HTrMf"J)J3dJ&Q`Ypc&akVac`(RYfGMVkR+Gq(J4G683Gl8H5QBLKp-$'IK8!
AMap6!A0QIhZ*mK@VmD-&a3G5TlG-SUGAS+dj#A)IQS3Ycdpq,!Ka!K!b(-c5($d
`6UFU9Z1[1I8QrY`q+1+m'hT'X21S[)rbS1+Gfk$+k[bT%&$J*Xi@INC5I9Iqm(R
,e9&'C0!j,PR9)'X%TF(5a[rEcq[R)`QM%f"h+HEAYqm56fppj1UfTUGaVZDljfB
h(hA@-(&6CcGEf*Um2J%p,m,+T!!%TA&i*FKDL"K(feSDHF%e0QVHcLZX8X%*!q*
cPhcF+,jpcXQIP&5qkHNKmVaT+mX5+BeDiM36#IZd@L98[JASPQ,l4K(@RJ'NAp!
Rb#$lU"ANP`IYl2ZR!CJYh9*ICT6Um3a8DrPHL92Gcm'lM*1F@9LILRkG%BU-!LY
`PT2GH46pc[X1&"A`69k%PPlQ"[c)H9eh(a&11KX&ZYLEh-h$6G3Jd1!U8+8VTlK
b@)3A2Lp*+0kjZ!G6,HkaVEX%qFMAD@'PDhj1-J1Zf-B1XD%Ye#pV80aA%8NL,5!
6Y9h8&CI,mMMSDM1YcE[TZFkXHFARA@a2r[K&fQMU8-RQ)q%@pAm@-VS,Gr5@d#J
qZ4EVd"l[$'UifHXZS#mqFLHP9UFlp$p)4!m5lBFkLk$(DXN6-aj8iFGaBp@hAm%
951`N&P$XS8T%K)BKD&*,&S+(UbH"kXTjXqTAANF5c4,8jJS@91'eq"*BCUiar4D
d5HrPk"CA+0Eaab4jb%hZe2pV(KE8a8VELX(ICr(m8k3C(e@bk`U6iqcAZ+$2)3K
#kbe64'N9,aL6q#m!VK,MaG3)(4,@lTX4R(X&EM,ZFc4#)%6S$PU'4aBKc'V!R@(
U4jh0Q6[E'0Cl[HLQ$iPl!k3%C@&[#6LG@K4V9Pj*C'cErbCQ@#$rRDKfQp&dG4[
iV*RM+-+(Cmp$RGe&H3jUX-#JCA3Mrd&V)M`#"A5GXXmJ)T6+aC*GJZHa*V-QfTl
E%-%Lj"JH3(#2iSYLJL1#R,-"1e%e*Te1SAqF)p1ej!VN$5UQL*'5FT&mckdPX@(
JVKbmLP&GCqdkp)eYZ)ZEGCrUrk!KV@UM@VCA$r)D*[BrCXf%IJBb#&8C[D6i#If
3!089f@K&YR@TEGiT,kMA-,M,8%JMS8BAZcP6bZFXS92ac0`5GfDSli5T10cfVjD
52[0h04C4DUN@ZNj"kKjhL[+$96Uip80)i8355)m"#q[3e)IU,CJD(U&8%Fk4'DL
62%LK2'58NqXk16Nd$&,YJ'jclBX+kQcQ&IS1UaPf6ae(&HT,3b-[qbjfC4#0pf1
$YMF*dFVk+DA91UqGI!UMfQTA`Si[(MGTLp3,rVlEK,dIUe@A8@3p-kRUa1J69R%
6qD4A[#laj&c&mUE)9MQa,K*mN!$Fa'+SCbX@IP0VplB#PFD*e83P+)5lfMR82A`
I4GECe1VA!062#9THM-0Q-!Ap5dp10A(-*R[2QLVCf36RfGYlk6,!!iAf*(fc[qC
Hre84Bi5b%0BAB$$4EK64FMX3K$VDlF"S$0Sf[,lI@AjqUe&5+E3)iFc!0r'r9%X
-Trb*d`'DYaLR9#`6*4FTF)+5p[fh2%[34E%QpYU2!pFir5-0FN4SS@D#TaQ*#Cl
4m&U"leThH&q)8a1pk!3qfq-FlfZNJ#3NrB5FJKqiUe8qVY+TpB(PXTTZP)*6$!`
@VY!CS4JN+iCc6IEcQIbhN`@q+m36Sa,1QPHHj&E6L&flI*CIYD2JC"*9X-XJ&kS
GG",cJ)3D5,"1a"PB%D`8&Rhe$bd&%ciYQaGQ2r8R-E-fe4c![BbKBd)eaUiif83
HdSbPf"'![HKRjL0`1b,"f6rpf,f#ECMDLCA2lhT)-kCVEG*ZK5-!4l&45fV4NP'
m9$&"h5Zf15A!'4Lb0*91cLMX(EJApCPK%FE)m%*l&Tr[@"BQc$*4e'md+iKDi2f
!,'MqBDjT1`jd#5U%PB5&SN0TbX2jc,*qSm@)`[[#5!#TN[`)`j(j)qH)!qj#Q``
VRQIBFFbk$QUCjV6e3B`hfcJe%$F$q(rBPpD2k&0XE9D@aVh8EI&&b"q%15584d1
aU%hqaQR%6q[2YC%L$-N#33&bVaFKaakrU@d$rcdI$PCFKPYHZV`"fh1PLZ5ENf+
AHkP2f!X'JdcFY,XjRRBNCdapRccKm(@4iLTrYr22,)Vcpd&UJcSFaD+R[XG&[26
$@Z8Sf$bBF3kL1KkNmhhR%V$QE&rp0p[3Ujbb6FGXZh)1[l8CHpT&EfLh`mGr@D0
cmm'jLU2$V[0)$a'PE`C,@aB*F@&9JZkDq2d-&pE[@GDD+N5k#V8$GKpFU(lY3km
R[NCVKji@B,cUl#8M!q&e%9GmAr'($&NR6lc3P@&N,'ZSBpC#EX4X5E5@d[cUB6@
6%4F@RjfaX8QR[*5N-S#V[(DH5dAXl!Y2(i'GZk[A2da0JS+LNhL`$k$QQSEHb(5
3!&[C%k"(D+*XHI35iAfc'dMrq2U[MC%9N!"ZZh2%cf0m-RmUG(3HA5kSfMdpirQ
2%CFhIlqT[fDV[$pH6*iVj6()p(hqY&jm8CF1U(0XlShEkiGiA[m@2NImc-b)C6X
mhlC1qaRCAZR`a+!!U'i)Hi'a3,iaQ[$L"5leAIX%&DM10$RU,!14H`H@`iZkL&D
GelUFH654Qp2lJ`q)kd)L1YS5qB9$T$HJ34A9(pM4XQD)+((V#`G3HI0SQa'"!1l
4&3BrB$Kb,aLR9elD3i!0SQ`M$2&LPrGApN(jEXA2"E4fTPVXM"DK#J+A6%@[N[f
X3@%49cKM&JFT%G+Yq1i*XA!ZC*%PE"Mj!q'5+b$)8c@*Ff2ipG%'h`S"*l2b8Lb
Gmm-l%`5GY`-+*L"3QQ+`HHS)K$KJLJ2Ih*G63Vm3klPVBA9TdbYK(p*U,+8#k9Q
Um*LQqTC&ec++5EcHeFj`k*2p8,8Pr)*lk,UmAT-NdEQH*,Bi$jH(qHqBdq8`96Z
9D"pAFE2EkeY)I4RB!JijH+*eNE,r59bAa1#e(DIf&r!M@c83!LL+ZMm,1BN6UqR
*k2[45rSSbj2DL[@)UFJ0d-3,MqSD4HCERiKm59hrE"LE2Id@8TLT#d[X%mdBij%
M4BLUc(fGj0J4%i[`CTbE9*-6l%dUd0L`3%TABb"%L#!1GJK-mFVEjmHP!lXqP!K
b00UYrh@(QHfQ$lBYHKNIB&T"(GfDFrBZ-##m"jeVVGb'A[S2p9ff#VE#@f%L&@`
H`i-2jUEU+1`E)JYq-3)Ebd,GAc-#%[V#88EV&cQdL*!!Rb+2UeVb0N@+2)CafdX
LKTAAfHR+23LL%9b*BIm(*I)mUm5JG"(*3pU&E,23Z&D0GilFrMDHRrAQ$TqkUpQ
rp9(`G%**G"f1rlJe6Vb0A@j*qf0P,8NY9Xm,@1('"j3E%01qP'q+Am*a@,Pe+qm
+S)e,B*ijeL,`@h5*%c+FhS,(+l$8bH%Ub-V1&qA56$PJb,MjCLHF"cY#FJa@X5R
M!*eYfphGP3ZAX#L9T6+2@JJTRC3E)2&1!RGHQ5$6N[r)rHb@K#J*Z3rFrJ4S6e`
#[X2-dPDi!m'2`*L%Z(pHdlK$))&`ZZUa4fe#1I9j+edLkH4U&C14blLXHMk!)GN
m9CXBe6p6J,j[fTee1lNBBPpG''VD2MS&PhV*2epJXkJ+Kf9Q8MBJj4%jl1YJ-V`
bj$G$S+kCS-f8c0-bR!8DPHfAF46(lTD$Fb)b-b`Bq$@U8j4h34F%C&m5m!Ja#bC
,ahV4I*HBIFF,+$UGGdihDalI`%LE8iP9'GRba4pfR'*`iP5Q1RS"2iF"QK6I#TN
[53V"jiG'5"kP3#p$kfYPJpB0MV,C46CZX$%#LX$1K"r!jK0A'3JQk-K($0qbqpk
PeB*MFaDehf&r*Q9GK@hVA3r1l04U3l$*L!%Je9f0f(BV%rV"G'cTN6e'63h'+Q2
SUR6)SYSa&VPGSHic)jdbG15&hmT"S2UK4!A@R5-PMU1,URV`3J-3pBEkh![iXMA
,MQ@ehTfUSA@lIm`FMq1(dM&drEYiDeG*&Ff9Ua9dLEIpeNh#Z#`0GX2JLY1"-4N
829TG5BE%h#@2)cHE+(FU"3)[FGLYY8&1C'MNb)9'YYMaG,BB`G-#89R[`AkDp3d
bc&+mC"AA1'T6EY[P3P(A$6!0%TML$`2Cq@UD)YY'QMRMl[[$*b"&#4[HF'!5G"d
["B2S8lXa!#UeifH'JQ2QK"M&DcF!kijq(cie,q)bpfT(NI(JCDUraB+5E)F4`l#
5Y'*JYb&3*MbGqT+G'c9p+k`EVKmLJ+ldrA-m*ep'TUFCiLK&k33$ZQ30,BTil3@
$8#[lAiJqDEr'!VB-[C(V25CNI9#IJ553!#!8UqU)UNiJLNla2k*q-DU(L0SShhf
EAbUCkYRYDAlE*AdIG"PmI8K1QH6)"1qq#Sl3l)@H4X2)iRL9@ZZLFPN!eVdD6Lq
jX%KM*PY[b`5rljY0bDj!Ni)51XjHVjDSYarcq#*A6CHP#J,pD6C`e"qiBX+Hi"[
hV`r94QbVK%EJjb$)fj2eb9mrN!"44LLAN!#pDmD0*d#f%AhD@6)X1DY6-`I+j6J
lr#eZG,"XCV9PrKmR8a31kK&$@ED+%&"FZNj@f,k0XA-m!-5*90(G4#0Vj5m&d6k
&X2REEMNAI[Y%#fe3jUfj)cp-lK@TE#EdklBTrUm"jAEmmR@!QEcI"X!N[6!l4bV
+6faYQP@$jCV2"Y4YqG!9L5rR$)Jrl&fppJ*J0rc)ZUb9XaLTPVXq[IS41"2VQN2
jG4rR,ETbXe9hPhf(cL0,GKf**)k0e8[)CpHkNKq!CT%f33NfC2'INR0KPQrRhSi
8C'amd$YB)BhaP*rI&L@94@F(YQUM+%QiDqG-A6AA"jp0aRS$0SEE0Z*R#dDG)iK
NTDVFqJc58ZIUBr&&6&b*B,F`kXJ94I,D4pPR26PX"`[&i%Q0"$U$I[q`LU*B!a&
DCa)%rcpRqZUhdHGL$DNh)&`9V$jm&0N[H#PI+Ir5VD+05bRaBA-FY41a4Q2aCG#
Xl`p#J*+d(d-9SU0d6IrNID`R#T@e)8cJ[0)CGQ5#lXJX)lT&"-5P98M[f%a(F+-
J%AUY"Zb4@bfk&jh&m-P'MITAcLfSHV@1'ITcTH0l$2ANAc$BQD0A!RM@3l-6[Er
L*G2'`[XC&QrTBVrC0c9IV+UZXXi5P[!0T%8Nm@Y[`SSES`@N[e1M,+pIUSfV&3S
mbT3HGjlLHYi+e$XHb@"Z@5)+6NAiF!(h1LeJKE`,R!Ei"9A4C-"RP"YrV-bGG"m
E+83Bbh369MdHSXJS!&Vj[%"QNq-ZrPJcp$Yk2b*cSZB39pK!c'NZ(@R2558%bIh
ZMlM"-RR6`0(NBEYKa`b%jb*LGZ)HejeIJBhaZrTSDPI*2kG6CBK6bG+-!B[J,EI
1MVCj&d@AKXiSSU4Md!@"H,i48&KX,G00bF9)[C1XS[c2*0MSR)k"aaF!XUY")JZ
YhCrDqb(2rR2pIN6bCK!&6DSNfkHqGK`F3%(E5[[r%fqH1K5UpKB&r@!jE64iFeA
2,'0a%08NdNmX-@4V`,h&AZ5*ANRp1V8QLI(jB2GZ9[$[c-pFEf%K@'+,`ZG32kN
p9IEV",TLbZ3bXJ5,I44(#mK251J$+2(+FqrETD!c1+dEYSk3!1fi9b@&bl9&DY)
GMU'-3@-49*EbcD9+CFp0$QrkR1[b[C829"[FBTN5'mM4Z,G54'!c&$4VVLEBhlI
H3J-EYE*4Y8Xc``6IQ-0VH*hCk9VGf8614D(d3H+%[QU1D-q8*KPJFRV(bL)4)cG
aQKhYj9GfEe*i'VG2(ReI-%*6ZiBE-pH*!"kAGAap(Y63Nb[qVSKFi")erdp&)Ca
HZ-#*8mD%HhS`ip%qeIj#DGA5YU*Yb8'(FA$K0Ld&#qjQAjqL5I![e-eiTMG)fV@
[K(@Q2rbZUHj"iH[-QT!!bP0dcq6-[Gf$+JapSE)%Y'dSMb,[QNZA,[[b08IL1N5
6AcBLTe(N'MDKXEBhR2Ac4aFfjILhqGdfTHf4E3(pMcC+$iZ2&Nr(M2B1c$9+q#f
@rm@rLCE(d[26680C3)Jq'klq$qpEFFIKf)LKJLE3X(I[X[BlbB,`JLjK4$FG&Pp
#$*qLqj3Db8LPa',fAcCPXa'iD"YU-[L#`GB5,YrXbp$V+&9j+$iF'imDBR-G44Q
`RS-S"BNcCb+$fr$QH4IpA)VImeb"[c0ilB8UVT[3!pbF%F(I(4JC@QIcNRY3aC*
mbM*cZ1JDh-XI&h@,M0MAH!AJ++iqi%3FYF9c)pALrer8ePj1Q$6!,8'k("`0ljl
$R[J&5)Qilf(-eMX-aAiArLd&RbPe(mr*41)058E0QYEVDJ,4La+hQ)ZmpEPIE%Y
#-ke042AT,mk,[[e+E4`HMUR-)q2)fKNA0BZY$0CR(!D#XpFqS![,BCjI$Q4k59V
qPkVPkj2BrZjqA$*P0iqB(@QaC!qU385FNlDUIV93$C-cGY5,5$l''H)RC8@rqVT
6QP$(Sk"$2NA+"mA1cahXQa$%"8E'bR,*23H[MXm`cNL-QY+hG)JdDAAleGPpA*S
V2@rR"*HqqJb(JbF0%hXX&FlS#iSX-589TMAfP)[*df`L[9IlPEE['q)4,k0DA08
rRe5%M$Bb2rZP`58H,c$GNrIL&T)&9rDB)UAj8HmK(#C&ab3CiB4MdG#9T-4(8,J
MD4f+paafa8R+CK"J#NI9aiX&)3jFLHj`*DekdGc"I$(mCPhRe&Nm(h!a%GTh@IA
T!Grj%*`b!RLp-e%A$+ehpEdc,dHdEDj$U#j4L%DmRFdIABhVIIrU"F-)ELP#cV9
5FR#V[K-`["V*XQ%NYb99NBMDlqF"cUQf5%PZF!a5Hk1kXR&a2N4U+@%DGQC!X0E
J-,Zrer*D)*ENb(6ilmkb`%%dELRIR3j6GraR@eXh92'-jZK[%TJa1@`2KcB*lBL
Y9[&%ML5&J!E""3XEq)i,be`1Q$"XFCeANLNjLl9!ac4#da8GIc##NfGVLQ`-$Bq
9UqGdIBhel2JD#XiE5Lm2XlPi5$TVC2jpFeDmE1h,18ZbiId%F68kqG!mAlH$RTj
U!b2+p@JML&BmB6,'ZcA04dLeS4cqD!dE`5bI@%i&N!$K@8VYEY,Jl`f5ciR')Cf
mXriImjC$N!"aKeELK!@l3R'G1*Ipr@[))ma&RmbKC8k3!-$'1!$'j@q1BGL@UL#
`Qe*)QX,GiarZZ(Z`dja4l4ZBb$Q3!+eJAi$$Mc-l'+L66&aJG[)G6VR#!E$V13R
*'j4B1[lr[`8aPAbSUAhfYN-A'YXap"pXm'k8Hqe4bTbadrC8#,A0CDQ)8j2GmeD
H6%EJMLd!r(NZTmZSq*lj`JKaG!)fYJk8VFBkKrJ30cNpaqZUYX0`M0HAU*pemd+
,'*!!MlMA!N,2[EVYZIbDMe+c8[#6EY'i8$hhd`M-cc@+j+S3@rDeXI,5l"NC)$V
#Z$!cX"dC`F1!F,%5Rae*ldSlj-e%R$1QVQb2RcbY$8BQbE'1p)qQAL3m%+V+!(X
!9mkJ'5f0ElmGa9ClQfQ`F-"@N!"kh6jH&P,6,HTlbXZLG8b`bD1bNCL+(E'6!Pm
EQR-G0h9fSqq`$L6d08dAm'0NK4d2%@#L++KIC88q4Zl`kC@M#SM`)`kK+[(iaLa
"rqKR+K!@AD)3k&$dcmYS%%hfb@ha*MX%Tfa9``fKh'NZC`1H)3V*V)$-JUla26a
f#)Ua4V$dpYkBKaNS',iEYQC)!j*$MjT@#lEK0bTdML8QMpYJ'H$+NHkY&5RYN!#
r$P%Ta`%4Z`[3[#()p"XiQb@K54k"RidCkfUHdLVe(6rUiQGRVjp#Pa+55im*HDD
K0`i![&c415B0`+6QPB%8(G!S%6X@Z9lq[DSKY4$0pJ&VN!$dK*I0MJE#r"'(a81
Dq)((Rkqrq[SeRHT!&$LY`Kq@)[6!M&'UP)S4Dj['L#)E1N%Y`cN4BadSRTD9$8c
Y#F12Sj`D@BJ")J-QC2eeM(hK$"h5`i1X!P5+'C0P#%5S"q"R8e,0cREefrSLcL8
%kX'9TdM8r[cMcI2Jed-mZ8q`d@%"*X-JG8`p2$8L6R96@mBZ[GM8aZE1*EU*m4H
*DC@5!ld4h[V!8,d,Hk"NZeG$IAMDD)SkkmC)Y[5iqjRme@Y*Dk3*AX%(NA@S*Ik
8%RF&TDEYAj)*-0RXriehTT1Gi`ChpBm0+fmDcJZLHbUdF[)l`(Sm-)p1&9P4-fq
ErPdeM2[phI2pYJ#*$3*B3L'kkaB6USc32i!G#HaeZM0QHKk61ZYVH&8ZrlGKN!"
20*Q(,Nq0H!"bpApDPblZ@hYDcdP2C+2TrImdU9,!Nl!#F&qY@(f&EbCaBXNI%NB
&1T-%Yh08K$'barQlAUpS[@iS41G0aj(q0MDU`6JYTB1%`S,QM#Zkf6!+U,!a5%R
`JUVB24)IX#a8S6e1PmHlP5QY0EaF@&Q#LqrV0#29Y!K2+NlP*0NKk@lk)RpdH9e
ihNhMrb6(8UQX81jX@rhd1UbNH*HX'HZSF%S05KB3V3eXiDf@#i4C3C2dN3Q4l0K
DKhlKJGBV1MlSYfN3iM8*$!Q#c+iX,,R$bUK-QfAkX%@G+'bNHqjd4`Ur[HQapJP
)"c)mm*h@eB1KUb`UQIeeNf'MZCMh!Ndj@MK9'ZUMRh%*6`Y-FD$dUkYSBp!X+0H
L6hf(HhdfhHrLNNF,$2RQ@d54iah9PFrP'I91jNA*r!Fb8)9M1NP6r&aem3,,I6A
9iM"(X1Cefqji*#+ZrVGiB9f`)A+dRqmTA3RUDER2l)SNA)"*`B"FP*D[J[6$#)d
@`ZbAUVV$XECb+9"[IPhb*$YP&%6m!k'TX@a8Q35[r#q#S*U8'k36"K-60kb$%($
r`DIpDl5e6Rm`fQQMEkrm%qZNeH-FF6@k5d%-U!4l6!Jq3CEAQ9&,JCrCYG@+aZJ
S64LJ6UFHM$$J9Lhf4cUc$+1A-r!Kc%+pFq!JF19c3"aBreKV0hhPIUd(j3khS,C
a6e@6+$qLjV4UijPi,a8k@%f`E*rVpF+q)#B$)m@fVH#V9"5hTSS6!lJf)eer3j&
!8#mTc0!qCG5dI`kCreaM*kCY,Y&`6mee-X,Mp%#G3kR8k5JHUTU%dEGI!l+USZ1
f6p*,GSHFY5qQiBq`$c9`6ESU"IU4EQTQUb1aXU9BNAaaZi(,N!!JV$J-%eTk+m[
!b$'(YJfL`Z6@Z$p@I*,%ZFPp6*LRYpqGkeJYcaFF)aFc8(Mhqr4#jEEe!pUFJ,B
&qL9!J9r*T`+XcYF)60LaCY(Ch!UAEc(h-DT1V$L`Ei1VDS#bJ,Glf5pfa[mLkZG
!(-'!i`j"rNb3!%"Qj8F"+16MK!*N81FR6!R-CEBP+eeKmS-a(#PIJ23,cDe-05"
!0T!!"@[P4JZ1rZ%edL&&D80DQkkED1A59'%(lMm*mlfViDrFTLqeFq4MDG2!LTb
8dIG0*Gp68j1"9R1NEeXUNi0K1f)N9qCfq2f)kd!!SdU063K+&3ATCLi[qTD60p'
,N!#0U*Ec+T5%FMDMJ89d-N6i8N&eJ+9IlYU9KjqDS)mb1l15jak%G+,Ba96HP$#
GRi-SJ5L!p%N2$iP@BkpSXK5CHikhK,fS[$"P#$,CShSdhB`VZZb$NT)Iq$m5H3b
qm9J1V(53!&eZ1PrphZG5rRDVKCDj10qd@CMJB*KdfY'`Q+UfCAlkIYkLZFFm6lB
dQ)06jLjU1#T6-b-RjGjXKqZ*LE0+qaBde[UVC)3!E`Kk%[bI$f!VRR*RNZl2Fil
+-MIa@I%Z-HPUT,(m2E'UidNA25LC-A+"J,`dF)K&6haCE"hK(hk-FJpIIB[NZ'+
!1l[Y9L!baF`S(GD8V!'U"LeJ"!1KZF&09UAYQEdEN`maB0GKPFq0XG@cZl+)IPX
$16H6p(c$Y9HT3YfFQfmp5crqIE0S5DHXb55`UkQ,[C4,EXSardqKrQ+,B93Yh*J
+-kCpdq2U!l(CN!!!BkCl$kbRhLbadESd-2imd*`qkeLGY2k2j#U[SHEeibrjBqe
[%BPCN5-'KDJK,dLH[lHNA8#r2L9e&(&iMA`k1hq[*FA(5-9+pR0hkjN-BDX2Cbq
NcE0TGJH+V``&U`(l!82aC69k1)K,C"mGYEGVdj%,SJrm$%LP3(jJL13IeM!#LFp
5V+@i&LEM-d)eT*%6c@0$Jc$KhX-lrMU@mHl4,k8&CE2XFG%KA[CfqRVcPUDf+PL
9lNPQU`GMA5b*bBG!@3i)rf32VA2P(r#qViK'NDH0&cLT4+q9P$R5rDA+DSKX"R[
d*%6bM@EQ[C'N&"[Vk0',aE)I4[&(,&9EYmCJ!lq'c@a4-U6Zf[L*PhKP8+`dEA6
c@d)-ec*'VDJr"YDmH,CUSUMYLq+0SY!eQIm#jPKHk$I1MJb,d'jb)kk-JT2#3(e
Z`'1(#3rA@2$e5TbG@!8XZ+F1M)e$FI2Hq2Q)pR4AmXf*c-KKLQ`JhVV)kbcMl03
b*&#!3@@V8LIaaZc"UNqTP'm162,)cCYmNY**4jLl"MMh!B)1-5N`Z'Rb2[$CQ@9
`NPr"(h%EPI+1!8aNXQ*P"&I1(%SSBZ$m4b2Zm5+JC(bhEJ3b4INL),+Ejph@3b1
9+ND&T)PA1-PIkl21QX'%Np"#JFl2aR!Ij@09[H!JB'el$GCL1q-T5l#QeXYbVVD
+k)T!Il+G!iplPMMjGbH0&`hrrS5-b[&GbXC1JK'4VC(M6q@6bDhl+BIX2pJjj6V
X9HLUVHfc@I`3MMUF!ePTMj@9BmKLN[JlXq5'RGd4#'I4[Tm6m&e!*q'hD6!HDA&
"DbJlk3Ae+CD$3iSP+3+Ik$FIA#1mb',KV"STp5mmp@5G8GlY&6P%KT@L2(dhU9`
p5S8eFY((-LdZ-Dr#I,I-T0d*iL,lKakIA#G@3'#bP`GKb41XF'jAaUF9YDe+062
h4XrdeF$YTKiK%#1ZZ)")N`"Q!A"!Q0YM"AV,MpVrh`G55#%SNjNL-T8"B,(!J`q
GXDqV0q'1EdQrljhXjqP3X-N&mL*aMYNkR`&!FlNLH5mkV93LY39eMYRYB)B)0&4
[FhDSDl4*1a!K)RRr(UY8ha4`#r@ZmS0"bfJ3D($He5@,!99d8GHJDh2D%6NCk03
c$!1k8JcZ@#U((@qUe,NYde%H26@Hhr@Ip1'1@%EE0@S!V'fi`i+BLA"h6ijf8GK
DHl('[VSX58PBP$Y$$T9p'G%GHbRXKAPlQ1'GMFTC1T`$`l@!cqN(eKi%d)f8E9E
4&m[(G+3'p5GL+p(rUJ6*@ZCIS$Lah,dAMFiGiE2EYY#c&-8ka+a[1"M2(*p9'!p
hGYTQ1%j!Pr,H$h5qVE[Z4YDf-i(+NqpIQM#c[qckQr`4`SA,824X,6S0(G"ccGH
$AYlaHYbXM%S$BE-RVAeTp1GKkLHYd"[+kGD'9FeFN3F,9H"kTjJ$Pd&%)i@Rfq(
F,4VH9c)m@Vh-,,Uld863"%D$EdD+`@aD&9a[(&L0#r)CjDG0SU(Ah1*k$%M-SZ9
`Abd@)5a$Nd&CEP'0'#2-L`b3!!b`fb8FS$k0Q@L8'IPN#5[R8IDfVBpI*p"a@TY
M8P!9Gfd#D@(FN[JH"iSLe`qil(`b'j!!IdRJc4["Rc643FcZD9%fiaqT&9mfbHc
%'l,L%Fq[[T(1-B)ZGYjNE6B)#qB@XJ5I1p8P'I@*A[LZ+"&8SaN1-3d@0[m+4SL
02@LIZS5VeeKHj5TL"e4L5l+m%8*UJ0(Q*V*`pV85HTZihIDl6*DI9Q+#`8lkCY4
(63j#Fp`SrmIiV8%Y3F!FM35`h2Nf,rP@%YXX)TR(*Ec&CiTim14@YCUFZ4X*cci
Irkj)hIe+NBD!-lr9pphhEGNfPiBH5!qKBZ$$9!3'6Nf6bMlUJqj&hZL*[2d*8H%
[-pchRMdf-Dq$S,$h*hY85GBGdAL+R0SAC2Sh#*H5Srd%1NU#XflKcUD6d0Tiar+
Ab)S4VPLk+Be8XjFDDNlI2a`Z%1K-NJ,bPIHbhe$pf1"9*eNi68jGe(XrkiJUl1-
1`m)K-8$*ViJ(@p1hi)K[ISr!E['CqBFIh)kk+RHEFRCS8T@8apR&33iMYCe)[9+
"F$9k9,pe5-IL'A(3,lN)Mi-'Mj5m5HKdG,U3!!%()3Nl6[&U,)&36Xc[BMB0Jh0
SqdIGHf#2X$)JZN1V6a6&R&3H0d-Vp5EejrI-+Bk2m$21[lTI1,#+qXbNP@%LeD4
G%2B0iL2'C1BUr-&Gd)jNdaL#9AeP`-2'4"VXQCLU&8-pd0eEBUEiIbESmD!j'DJ
R9@d$SKe2[HB1Fk5iMN2%0@9SR53#ch,clHK2V'BZd4P4H%VVkYFEV[+V$QbIi9U
3!+%!j$k-XISDX,i"1GkCfL)+N!"j[Z`AT3Q0cD+9pcRERqK81fSX4ZVG1c8XBP@
f29i)r!k53c&IaqkG`KBL'N9-[PCFaNcR*[Xlp0D!dC)!*VlrFA3Gehdah)1(@ED
K5U3!'[CXKS2`9T%k4@YA`JHPV#Y2Rme"eU"l"%aC@l`B4*9$a09dTDC6#94AL0S
X*RpQca$DJ5qEG[DR93K[0-3`*,UEXhd)rT!!K6jUh49DD&&G)L'66k4&93%)R-S
SpUXBL4p59eUk0VIe0kdH"I#41PdRlk&40mdKE%5bC3RCQbHCUFVEVHfHj-S9Ti6
SH+M'8JFP`0(m[2jTIAP31`U'%*r2X%T2GU@+4SI%q'J5M`Zlej!!h6Ec%@8qff&
[al%HbS)R[+!%B&@pUa`)fUm&I`,'C$d(JY!&XBj+f4`Y1Y6B1H4P!M6-rReia'p
%fVPP2q!lX,Kqdf!"Ti8rcBAj-P%2Y6-HNc1DBd`FfGqmF45pTbkZh@`Mh-H&4cJ
EN!#j5cDjYlk0!6[T-B%[`RimfdTm0)lVJD[YBG)Y`61'pdSeAV$*4blKl*6*5@-
GVK%91#UM5pI`FG'kH*Ip(#ECJ%e6IjQ!#@$KI9DP'JJ(5R-4(8Um[[2lidHdSri
jmGB9qNCYYkaR@h!488llk!,eKLYiJhjlPp6Jc2b26B903R0MqdAQ$9d9K+6pRJj
f60Cb!J0p$qd3F85A$'Rd&qEYLFldHfpj+E(jpP'*6IEp,BpXLhBeTdYZ"UFmKqd
fCRi*Udicl%(&"&A!LkHPSV3Bh0TqZ#U0Z4TEdKQE!fdZb"ESDE98%b$bHiI46&e
S@3q"`,q5$90[L)6I*FDl9#*9UB`,XMh&1,aZ)Uf+DPV1KqNPGd&d!@*@5pc4Grj
dV(fl%(4d!`pQCR4d+Y"QCR4d(iX3m`*edNdejVecN5,RfDEPVICk@2e[1(%-0C&
2Z*QT@MEK14h'XjAdB1RU'G`1Y0Y,F(8IDlhpPRbHlp@'+%keH8RSd3(M5li"Ick
@dBZIi0fkJr9ANR0FLT'i`0b4hp4#0bXM&3c9S4iHRY0)C[44dK0#3K94-STTmB+
f%1`32lep0i(2ZHXb5qVJ!KP15FYNqQUHAj*iSfheB)fj54T&+%MN6"L%a66*5lN
G49Z*6L2*Se,PZ)qqrj!!4Ykk[3b&mDBN1P[*mcc2+MEjSZrhf*MmA%ZIFTjU*M8
hTH2GlJLMDQc#bLBj`JNc9'5X8fba!(*$Yql&i5@B5MYK,lU3!)JYPJFQY(9'11T
QD$JBKI*Gb5hhi-QEMmXeK&ZIRDXU9b,Jh'aIb13J'Pa0MNjX%6-Q%BSajHCS1[r
RS+I&jk08-NbHEX6ZD%KeN!#DIRhBl3Keh1EQm)eU['r(dJEfBLlH,VP&IF6))@P
ZqC!!'GKpGSk6kJ#F)TPT@ea9U9K*06#eqch"fQRVjBir(EFleIk[3Ij5*qqU22i
m+fIPHTlqHFXqdl4#[,UZV6rqQ4H9hU"3QNX5M3S6HR)LhLehBLJ5!K4#&im@8)8
JK"Jm[LHeA4h@)rGrF&Y3$BLL3pjR,[8FVb$pdk#r+ReJXHa`Ic5el'MaLIBEFl!
Q(j3VjN)L1qm(BAVXVr4`if[T#Gm*IX#*CCeQ[b14m*%X2@N2X4V&Y-,%@Z*j#KG
A(Er+['DJ%Qkc)ZV)ccjp(pQim"i843&b`$i&r"H6D*-K&4Z28eaHqUbq(rVjCei
`C++D#mh&4m!A!3dkA6rkJPeBA,jNhL!HTlr)-'-XY#"%eYpY)8NPq([VS8LqlkA
h'bhC%dS8)p4l&V!!Tll!)p0$Y`Nk%ZBm!D)'1$p%)FE*h)5ABcYb9pCQ-hI18fH
(XBQ218HJ'1#Q,rLmFKXU#PBAAi3B,6Ii0i'4ql'reJiqC8IlB#F-HKN)UXCb#VC
G9!!IkP,RV2&)#%(B4TS@$d(c*aefHlq-dE%Zc6q#3e4Y@BDK4r$1ZLB#4JA5jDa
$HpcPdL!K%i`D!mffqSGbhM6ilj!!j*Y)!QV"kj`6)Za'(8Mb#@9NfcCY3Mr(Y(G
V#E1j'IfZ@If"[l-d8$Per,DUF'8k+8R5f)GDY8a$$cFFSCrMq64"0C!!SHkbjim
[c+X@J"Q(Vc*HfRQqYl#r)IRQj[,HmCdMPSV6Ber3CH!*F2"@JS$BX9$%bCL1ApM
H0rhZe--f''!#L82UBA3&B*[Y3`-Vep$SQ5#R[!r1UH)N4[p+L-#b*BIjA)&-IC!
!'4Km3kaYYiK3),iR8cHmXcV0$YZA`$#8kX#%3hrLB2ESTkQSNh,ha3J04A@F$4B
ppli"!'V(5HfNllE+q`plHBNH$(e4HFcM"Sr&)%`U'Kp[`#lXP)&S#l&a%@T(L$J
&j`0f`B&f-+Xe+kad6UF9fJ&96ZYUb-af*&@Pm#GVPHj8(X8HRq#JC`-cQX'8PkH
R'(DH*hi%C%B&3Y0CDC!!C6-)5XN*6b[lrl%+D[,GTNUS*0ZR!pDSETDjh%H[A[3
kK2bRFe'Lp5TeI-p6DRIC6SJIPMcGPSlC%',5q,'e%f25a,-+1q4GIV*k-HeQNL3
Za1f['TDqr`'#5H804mKMG11ffXQC3qRh,d5pe!CU15rpBqNb[I"6iHS(43#'RU[
Aq64PGM(Cd`PB['l#*+j'NLlDMk6kl-VS1"JD$C5@86"M%mB"5$Sdh*6[TZBF)d0
KG0N1J5EAS1)dXlZ!mrpfmfZK0'XGmp1K&YcX!'#`2V3Y46kcEEfk#+1ZXM5Mh95
@%[HYZel@GRfibS((U[![BVeL&e!*`36ip%lC!XIlS"mMAYj[CId-"-#*Ud[*KST
9ER%*dA(TK63DDC6-qc9cfU9fMD(Z-qJiJVVMQX5e0B1h'qJP)6)V'afGS!U(D`-
Xf[X1Kah!CPjAQ6G"-0Gr#4hE-1`BjE-`83h%lAT`i2'#&AC$-ZAeU%bImGM,QKr
B%kLkLif)'8e5C$qKIJVDjX+,4C@M44D8iGjq,5@*K#bA5$*45[brV&&+TrU4mrY
YPd"%Q!mqC1hpP5pqQ#hml1kM,6UEh9@3!,V4("@X5ARkHDf9H*Ji6G"8m,[lM3@
M,q3Y)-)*2MS$BheR5c)S")!LD@Mfrb6'cU8Rbj!!)!lDfYl6e9dcrPc6JXG0hKF
X+HEZDm#5I!A*RVC,3[bmkNZN0cQLNA1UKipCHk#e)dPE*L(9rP![XXZ[A+a5Y99
T,P@)cUT'f*&Pc9KGp*`fI@5N)eVJCb49&pL`V6-F&DdhLRC'BR1Tia`HfEk$+HP
E5`PecMZUG!pARBf0I!$dphM46PTUmMP)FFbH)j`B8Q36lJ8Z30UC,VF-9bdTP,,
@99&BDF4VVK`3`KhbNB')Ka'@dc)`cDCLM!V&j-)DaM-2YdNLc&HZQE,0c)#JK4f
a`'Zq$'pi+$bFXKLA,E(H*Y8E"rB"!m#+cPZEBNNcNb(Iej'DQC3)Bdee!&0TV[H
lP39edHTEeSjAJ[0'@XbpFIZ"EQe8V[(DlQE-H0Vr,UbDrZMcSd"qN8j8URhQN!$
(+eD4Q!YQ%*&B!`@P14!U8j')-iNR%S#lcHTP(FHH0hG$`!pb0f2QL,j6p10lZ%#
XbDrZ48G)[2*Zhj5dQ46PrQ#ZYT!!H"q@K+VbPprAD3BkMkqfTZF@Y5*@"Cr0'A9
Qh`PJcMr*#e9$dk[ikkD)rdR)*FmK@jFm5@cX(&X2jND!Z5GY')$p-Z&QP4a,9XU
`E`84bY`b89A-)IP*JDHicb(3Pb61bVpcmG(GU`PI4!mQPL(KHQ#kTabdr3m1FFp
Y$4HRlK3V5R,9)c',9fNQVG0c)MUQ&$ABHQQaM@AJL"lCZr&f@iG`E)`6)DElFV`
E93jX"6AI,68i'HKf1jVS*XEQVRV0SaK&%HHL&r2,@eNbpkEcfdKGTrpj6J-SU%[
T12ZY$SqY%"(4!#0Md($Reab(,0M4N[9*&U@ld,DHJRDS0D6m%hbCkPhP*JSFP1P
VEh#)fV9X#F#6j%SX9UL`IJ9e-qMGAZ@PLmF2#ClRZCYRRrMcD4+'LqXAC,cqI&a
@Lr'qc)cT3T@Up$"MLL%F6B$BH0Y!IakMG8Y8(B,-S)I$eP-eQXFrMS+a,VVJTRV
JZ1aZ$Uh3TeE!EhXJDkMc1K'AKPAm`+-B-X!YjD*+0D9%8UI%L#V`45$bcc18a"i
'jRK'RXpKZZYpJLE&al4"bR)[#lRJJh`p-53+kdN`R%Fk,m%D00Vq3A2dm"N`hN,
C0hNX$h!X66AZmAUKmA*!"%p2$XcCJGBHMAi(,D82$*lVkF)kP(Qe@45#BlTArGZ
F,R'YBQHTMiNhVfCCTSF5-bmB,28br#V'`$+Q,6GrPaqGf0DC03EGPXTh2P3d)cd
bLqi)%)4-pqi-rJj(phL@A,Q[(Te)jJ18F8$JV'RKBEcmijb4,S)iY'SLI+TT4c&
aa2K9&&3bQYm)fSQlP$"Q!&A"XT+NIhLeANi@bFAN"IGL#f0@-Ef,REB0YlA[M8i
UUrabMq5UBUR*CBNE@I-6h$i#[04mC5TfAM(',fjA3IE"Q+!A!)`PUXAq,L@'H6R
fGhI[JNqpNUQr6mVm*YdZAc%M5d8EBk%(TaNX+)%-I0A$j0,&d5Qqm$*G&L9S454
d$"+KHENfYJ%bL"2MbqiXHm@ilXKI-&Q"`%rPeH*CE*H)LA-$9QF$FDBPKLhCeM)
kGRTL("0c-F%8TFKk5+YPAcSbbhT[#q%KicXLGVJ%#q48fqNafM&mL[0hCBYcR6[
E3Fbek*VEji54f9i5PqZZKKHKfj1q4#JR#pXZ5)3qFG4@CBB"Z9iPfJ!,ESbEM'j
4NNCAH-jc`6`@J$Te-Ecb(iS$iApFRP'i#3FNrR)08`8"A96pUc4jhYa+-PF$-%e
mNeA4@fPeY2+S-fHLE-BrHDZIX01a1Y*k40C!+aqST+0@!TUF0r,PjP53!"%4YQ-
%+03&b*b[5jZ1JQSl&j6HQjSKjI*1R#Nhq%b@+lY[DBCFMhDAZ"r'5'ff%#k,'YM
hBGihK#KaE&G+$M"$Z3M48,D8FVH2XLDXC`BHrq*05C!!S[kakkGNe-P%Chb@NI2
4ap,`f#bBYdklPNiT85$RHkX9'DD3!+3$6K-LEp,e#"VC"A`bE5rB2PYqNT'DAb@
mqGkDm0`dljKlB,0"F6p)aM`mT1&C68P0&E65F#JlNH[LeRG9*qKT@,&X48BbS,m
k"PE-!KfdC'dRVa#-JVE&9H!I1&hah2l*#4)GR[cC*`T!R'jG)(,bS)XYkb3iVJV
-q9!6edEZF!kSFch)*DPYSRm0!fc`4qfZ[D2B%VKhJm*E13iE4,0@9`H5'pil1h&
G6+m0pK*NJ)SJI$+[j!U06)Q#md*apU3TRKPHVTHQIH[PVFK6(qmBmMHGjcYMEN$
@X@4UZmprR&4*$L&5"rka*C0IAm!0VlD%$3C'-B03PN'DXm9-q3q`P2hp+QM39KK
Z(L`2Djc6'A[aR2rp$dCT+V+cQVfHS-hcK$q`N41`KSi(N!#)eNlB6CD-1Lm1jP(
)mi[Rp(,mC!*$h'E)6LbMpDVYBJ'q!D9p)`,`rff8UaUdFC6NNk%Q-rZXN!#RRfA
cV%2,K[N2e@cUS60rlLXpc!"'PP#9AXKFcpEM,jhC!RQGX4%5qUmEb0GKQ11iCpd
F5hKKCBS$Bd3E)-VdMQYf8$I06I1Z,q8Dp6&-JJiJceb,8#aa(e+I(SjZM#diV42
af3Af4#q-FHV,IdE`kVT!FJ@-,84ATE1-JB*)QD2SHq6bb"Dq0fC,,*I4@c+0lC9
(X-dZiQejA*dSGa0XGAplXVlj0TNKjMJQ9QLcfVTHDNENY0,[A&!+VbRk,%J-[NR
`m3lk59LKLBEp[c[HG[+qkef2N!#0+5(f2rJ+054ddTPUJ*SJ2aGiVaIT2FP,LQ`
lk@RI99rLph-RbQm6LBEI4ZpXBBP1e%#bU)QGRHKU(ijEG+VGVVL'qr(ABfmblFH
R#p#M$,j#*!PNJ+E6'LLhRf5!Vf&$r#CS`$Z569`-[F`#1rT%)rQL,SDjZ+bDBUM
depp*TpfNJVYi'4q*E!U-M6[q[DpjE#df@m1Prd1*EaRSNJIp5!D68(Jbb2&aCkP
Ca@P9S3S[#Gq5%1kj6FDLcYaF,-bTU,U0rLf#f@r'pljDEDc`#ZUJ9G,m0hL@ci-
6&Nd)Vkk@6b[QjjPAk&YUXB!BZMNSUk%M,P5*6'82C@d3SY,mDX8A2GNk4IG9226
bc$qa9`9I`C0(c$c)-R'ThL@lij8Y@`2pU)l"'GIFEB3SGA,QeD8ZmXe(Tk'48@C
,K"-YBfQJEN!*d8KI*'#ZU2AP8GhX$+FemHrFpj556N4"@MDPR!%Y&0M5(+PpNC!
!%iJf@lApA(VETrMRDhBf6@BF&)8T3#j!YK&!DmmcAFhDI8$fcIXfH$A*Sj-668#
IL4c&fBHhKl4,rDGHSiQk!h)mP$2e(lbfj)ABG5T'U&*r0&,MU()TmNF8VM+qa30
l8*[#X$J(8(XmRH)fDbSF8DQ91iU!A"VLrZ(BN6++0UP9@EE%p8DZUd#eRQ22)HY
))XflKJ269PYEFbq++-P*&BjG4%Ac05kpN8"8pa@MbPlA4[kEN4K%cV1J1j,fj1i
@jm&5mGdElD&c[IpLI[1V+1VD&5)MV2q@c@N@[e,Cafih'6"lI@Q`lrSD+B(Ze8J
[911BE98UGYqbLkPPJk!V0Z8F'6%#V+L`Z`m3HRK-eH'Ck&P"e9C+$&FS)@1SlXb
b"qJfY,rfRQN&r@QrKJ*$iG,G"JQ))!LNVbHMRFUjL#H1S-EBM&ST@DZEmq3Bk#'
qm)NXTpSI'[JBh6YQ"4@k-GSf,9KF9P%5Z#r3b`2aHNX4C'3aBJdK6S-F3mkMGIC
'6rGi@9mKr92i1B`KUjH4+@5&cD-0Pp[+5-IMj8R8IaY*"P)5kjD3!,SaCS(r0lZ
KcNk$8@@9AA3`$%HNG[5+lm1VrD5'f$9Q"6@bb5D*,CAD&,+a2UNlIF5S1jPrVr(
AVeJUX6N,P9fq6RMdcSh6#ck6hQGl&JPNJK'J$DJef2abV-&P)rJh9"Z-4a4%46@
GC%#J[l3Tqm1h%IfZjT1`R[a90lhHV,"DYQEmDpBY("Y`'"F+!"5[5!(+b`G5l'b
0@LFDd1d,XC+VYYJ(NTT21K"iUmPbJC'3!*NB$09bY8hf3l6`D(Q0QrdAjIJ6bMM
ZYbf5S-[rQ(e%4TDUaLhf++114!SbI8-S[aY[imL!Q&`-5)#FelQpXBM,fZ5I9)Q
C[#$4f@"H2HkH5I4mN@c#'*J2aZq+9HQ[FPPp4Gikq&22lBFB!dMmA1l&bYq!JqE
)SA3%$e9ZelkE2I)!9I6-N!!U"hC1mIP)T%hI8I%HY,ffIa(&,@$EK[kT+9rZP2p
lNR,[#4cc$G,cS1-cEDcBhi`dr!*AYR`0f4#+,3fiSqPrUSDN$X!Zl-ha)RZe(F@
)+ff%SLRhJ9pYBcK%8"e8XlApL!#4H"hc2!bJQKaPY4CI-Kq4%hJaH*!!,9fpC2!
4RH8H`C&VcZPVQlmel8H(929%1`Ub84HTN!$Km+crCk"cG+0H"NS((`famliI%c`
DN5G!Jk8A8H@j#CUK"#A2L*Q$h2[9FaF,X(5R!Bc6`+VCH1h',a)h%Fmr+LC$RZ#
-$[YLL@K-l[NrUTS-I5fBU"clS,jSHrCJ5YX(XBEZ)011D[X#VUprT5T%cXDGI*k
Y!2i$(XL@ICj&@dH&*-cLcmrYq4)hQMlSh@mqj2SqVcU`I)4@9Z2%*`@1aXH4!hL
)#,'q!G,Lp0+Ce,RDXbc4hYI&RNKcCZ%fYS#L,-%a5XPUk`*2+&m+0iKeYMh$CmS
EDaH1aXk+mGR-DML6R&h1j4cQD32BPYm&Y[IFU)&G&HR`E)HM21UIM8ES8HCS`dR
&@1'h8EdeYpp5LRf*b,BJBK@J#iKUU045'jaf,L0k40P8B2E4Z95K,q6#4q(DPX$
#`H"CP0D9AAdj#HD3!-QN`mFp&[NlT)q4IRRZ@F0I`&DBM2,qa#%i5dAKlT20#*S
HN!$X'Nq1Y9"93@9GQC!!8h6a$iR5m9IjSpRR%EXRYCCH'd6Y%BFp)dS[$f$TCeB
Cb"+2Q*!!K2rTI8d5[QR*NcTb@5Xl@p$Y'Dd3UD&![U15SMpjS%M`3L66RBf@"pJ
JKT3UMM,"a9l-jVf9"!M3BA,[LIIRXhq2[qaHHBe91l39@@VXJcQ*6&@@**2'E)B
1f*M"#eS1'&B#+'dP*MA81B9khZ,8cI'aS&jq%P$A8`"JH,C9#,dVi8C(!P1[T5r
dNak$$PlHN!"28c4)EdkYmBE,kb[%D0mS%AA9[0E("C[qdha`#l(q`ieB%F4T8lD
Bq,D3!(L[1S,F-+Y(SRN6-9EG$%'Q`+IT*4TTa#LVNb"$GZ(4Ke-Th[TCC"cD&@N
[r8p+k*[[SJicr%aTi&T9[@XNEq'-+ZU4@U-q95,,+1e6["'SU640i-5-FJe9FVc
jaqGeU,K3&c$YBY13!1qaBKFRId@PDHQ1i+aTeTMqVG,c4)'PNU@eN!$Q9"bQ%BM
63MIZQTL5jmf(iMk'"rG9Ab2LL,iH"5B"&@9`9J)N`F`lb!MiMX-md10e4hQj2D$
ahr&45V+2pmfGU*6'q3fK#i*PY4`5e9,*!h@1*,8"P3(-'+@`iBDZAdb%0E*Bk@G
ck2-1&YDGcm-Nfkc$d08FYJ*TpaD&[0,j&0ST9FbCVe-6B5cE"Yc)#1cfJ%YB9`[
IJ-C)bV60&Fi2r6l"9@ZNfFY'$2aJ*e44LX$rlQ2*EmN6rS-Z[E%VZ1p#q02UNKq
2"YU9h%+%(Gj+*,qcG"qGQbr3T'dKP5+4mLB911TH,mcJI[HJ9(3M`jd)`e(Y`Jr
4#JpZAmP'EN)0L#H&[DGFkF-U-p6prNZ[!(',)$'TB&D1jR"ZGijipq*h!eiSa3N
`jdQbU6F"AHa6T(%pecjd6#ebq&P#CYRYp*lpd+C#493hq")%KNKTVdV-5h8"'0`
Q!fL2lG[SI#ll8R2CiJ4Q&UM!qAL,&dU'!"r0PTTY2HTB6"$@Yd*1EEM1f"XJ&96
K,EfG%jrS'RLZU$@$a)bQkVa@V%+j[5T1'$&M8YZk"BUT*kNIZQ"4[cLcf4#(([&
5R$SV5Ue6R,,I3@j+i32cfm3ZP'KQ,56b!*rVlCleU5I$+(rL81-k4e")9LkEG-G
l(8'mplZjFiJhjcB26312ZcEA,pKdE$Skl+pFQFl+A-Q1Ha-0h2dTYa2*j,+(YJE
HR16$jREeA`SY0"4jL&mj5k[4ir)2jV!,h5Zl!S-fJ4XZl)hfciL0R+1'9l@be3U
F39pdpEV"e-&IP1SLH`!*e0h(D4HL'LTMaJeD@"Ya,D6pi0$'b[X!dF#3!#IbCpl
pP%$CFTE%)dcX8l+q3FXdldEl*2D4U*c)amUB)N5I28(HM6Vd482!!qcjP!VZ!9A
N`"IJMi&9A(!idAUSRab&)NDHB%Uq'ZYMk(*88D11''rMq,pE*`aVq'PZ2U9)CZc
'L5EARCM8ZM'TZ-!A)IN5KU%q8-",KZ#44r'3!##c)S[r6+HbRL1B2J`B`aNMSMj
bJKF#1jT"351`YGZr36EJET'LLNB%b8&m-2Cl$#eF25f0F@9[iHAmT*GZ5SK$`#9
Gad1Nfqkml(R,FDG(%cKe4&$6P`@3!$#!2MAb`Lf9%,2Kh!KYMeK")$F1NL($Ba9
"`6e45+!IIQCNc@!daqiAT`q6bQpYUR`9F$QlVYH,#B5m5V[M-31T-T(!XP94RcR
a'Am(YdT!dNCLadj#kCprJeI06X[l42h(lYhDH-`FZi006NY"[rBQ,&XIkTYl'5C
-rq`,!Tk$5M!B-Y8)ea6bNTVYiIXIaRAL0E$"Qh@Rh$SmbVe64UmHXTb*#VSAYmc
8ij*D'!f0Q`#"LP&mZ!krkT5Zj[hXVYqpPSTXKlCUSAMjA-fU'DD3!2@"18[3&HH
@kHF,U`b%Gar463LN%AKi`3-d(j(*'N8&EYc*d'8-"BETMiRC!@8'hJC'MB#4"c)
fU*D`rb'Vj0$0L5CZrG0S$5&%)ZrU2mhTrFRN8IcJ$+Mj3!!F'F1rN5RXAmhJ8CB
#T`8SqDlr-GQJ6'0TL9lQfdbG@YZJG5#Z2+Cpk'K0aLBb'EABi8G`'#Me*c20D5b
CAmP%'c"pb2%D'KLTaZQM!-"#c(f9bM6e6J%KdpFGAe2eTH8Gad3C3)RMqBE4J1D
jQ,[F&h-2jE1GE%9LpLVT0CA(m,4Td4'Kdd38K!'*@[)(ESDjiXp4-T!!1a[rfmX
f#FqrV5&Y*$#kR-e,cVA+,"M1-6L-p*'TNCD$SE1edFM#86Rr39DQPPLSCX!8VSU
#%l)ir8Pj(ei2LhadZ@YJ9,0Xl50bN!$C,Z!j&!@K,T8Q,+H1Kh5$f5%qJEciS#0
4FY$+ef!MQRHjd[lP69hYlaEQ*HCNqeqHq)"Kal!J[Xj1A*e$c09U"VTQEZHmYa-
Sq4U(GNcrHmpXE[`-`6#`,!*[a'*Sd9J88$Ec(0mFXPMR!CLq)'E4ef$Q9$[$f+L
aGGpiLUVjZ*Z-3)bfAH-aZML4lF%SbCQ9j*B'F`3+r3iH4mVN+TK3CdfLkULpASd
M!EbX1XaPC4cEYj0d$(f+RRIZ"HJUSI8`UQSh94[N-TpP*%TZECV[-b`0B+'%4!`
S8RZZpS*)c8If4J%Q5'3%i&$NpM'!+IR1CSVKBTmpq[,A9LXCh*+#)UMlE(RlLV!
)[2h!#5VmZ'"f&P*4+kd,Jl%l+m4+M4-45Y+(Pf)SM1pG!pijVY'(EVe('895cc'
hhQfLQ"2`i3hQ4P-2CFc&pc"8Nc)cM(HJ0811RU)'DDmRVQQ%9&+2"Fh,L(G1YAp
QYDJ$XjNl"C1MD(9'5!!35qQUPfJ,ER`C$0djDbB(0S3i+V*KfA2$9E)'#Q0*X&A
TVXpCi)IPD4,Y!d@)GHZYp8b0S(#d9$'V0cJfFm,'NC!!d!!HYY`YBValf)f6hZX
@'l*cqASUceG4KXdd+M-+-+%[89Q4[PM9`G3mj&fMM+r8GTqGN!!a*q@J#a@HqIK
*TFYd'qDq@aH5TA46+j)BL4(!N[jb5[aZIb#RH!f!G%MK@@AcI0lPP&S6A5Eh9(%
,8cUPb3*I5"pl[i'Q-P$Ti!mcCmq,A5THNH(d4HECriCC,kYI"2dCq2"[&r!cPDU
M!&bpMrj$RFkmR@1UX9dTZe*[Se,K(D,4Eq`RKRpN`DQeqA(')IXaYC%Q'MA8k!@
$R4bXVD98,H4J8I[bGRV,MDhlhK0@JhJ3,j4e%rpU#JZZCGEH!LDL[-"+Jd2L9UV
89"ehRhP6`qIR%cpdE8ll'B)hla!qMZZ-$`-SkKUfh$+Imm@1PIJNS2[CKp8mjbk
4p[k4MF4FRK`ZrZk-U-+[*29BPb'c-5S%Tl$IbTZ1PfJrAb1p"NMSJ`QBAD9,+EL
I"9HV%aSNC&(NV*dcpr,41%Tq,!122-kGSb5dPQ&il*8d--R0Sk+5N!#mHqYk'ed
96Kb-Uq"@CL+V'T9!BER@CP8q34lhZ1*5FkIr86%AeK$$hZ&#J`L8%H,kZ*E@iF#
D"1aAMqJdCYBc#B6T$p9Q8#U$,E8j,ccbFe!4Z2aF+G*V'*%XlCXiYl),N!"Vj-%
2[hajN8BF'i['H('F+hq12elaY-8ri'Xm"em!Fl4Jd#Vb0r$5jeqXqA$(XUQkKf`
&p#@89"%5NRljDRF!aSNCm0,Qk8c*h@#HIV$2'b6dmT8T)[13!+XFH3S4&DC0&1!
C0TD8J,DCq-HQ3'@RbkhX1GP!!PD(CFEqSMF(2NGm-8K5#FP%pdi)1Vd)+J@B8NX
QEAm+`H)8c)'c+ILf%S8(Z9P'Q4`Hhj`pCdbBBAh(QK&e!$IL[(lcDbEp9Nh2YX#
QM3c@DL5K032VJTeP"e+RqD1I3KK"X,[mQK4"IPLjJJpKPFbZSfZ!qX1h@L0fihq
!d3AaEIU[Jhd6PNICQrp!bATQTBYDV2eP"PAe9MH3!1&rU1G8`KI)&M+BXZfVTSb
8"4lHRZ9'bfb`bNC*rDK"pmCiXCBN%PdcN!!hNqlQIN#9J*&D9e*Qaf+*)hFpMRa
(Fj`BLBZM@q2`YI[+#f2RLG$3f2-%F(,`&1FY1mSRZSqA4*f#3l&IR*%)K,A`NT'
9eeM&-$AN04[B5r4"P`$3iL9c!YM6e)+98Kl(IBcm8RMNm%UL&!i0$I&V&@FK@8Z
TlkXd5,DET@!akDVR-im"I95C6#eG)iZZJMYCG-bR,9hBiP%fQqJ2BTK`m$(bIbS
k'i3D9l(3YI93IC!!HD89%`4e"UjfA-m$4fK%U',(*,pKQDa`X2GlZbF#am`JRXI
LMql[,+b,HkPqmY)@rT&(*AY[l5Aeh0V!1HjBe`V$Q-A@-Af53LP*pKch#D(FX"V
Upk$ZH5YE1MY([*UQJM@KG3E&(XmQ!#Sh+bcVK2"Z5jBZeCS8[XRh86efDFR)65Z
VSR!`qN&Di(rEYmPKk+VDlR&R*,[$53@'LIcIeb["8@FhPU+JLJaL@i95Mlr(`"J
$lf-ZS#%ihc0TIlL)+m9&ZI*iqdRDl4,)4[iRfQd[69f$pfJZrV($8YPG)(maqY[
4!peG8KCBNAc@)hI0@Z4i35&eiLc-2(-j*$fDYA1)GXYQGNpM"e8@X`'[MMG4Mej
hT3-m`hp"X5iV@f6$rD3d9BVEk(l+3S1ETDC*ZT2RX'HS6V0AV*j*i'D1YHjmUZF
lYZaeBEP(I3M1"A)68GaS*m1qNq9q`pQY&Ye0Zd$F@BJ`ja[B#"jl(EhD#C5l#j9
K!jDZ2kV'HJrIhiXN"FY3UYcaL,0+"@Uh,VL[ZAQqq,5dEIZ*Ge1f1"Ell@3A9B6
Amf$XrfXZke$mZI!)!"4DY2kNM,iLb#,pAAmbV3MMH#T+QTb`%VUce!+BrLIpS%%
&l8pB'deEl2-b9Y0i*EE@9i8qD0#Uif6V,fmG,*YUKZbTJ$2+-b-$drZ2J$"YaXf
*#I+NTYXPVNBHqFp6eNm8,Rk91G&K'0FE2N-A#H$+r0MeaQ,rK#*XS4`3!'-jUhj
9QM29-(LMI6,I,LjjMXm-#6BJr,*9rqrSbQ!H)S[QHP'R&1BM4d($Y29+I3IHZ@9
PY&Uhml!*'(XkQE[k!cmq2QPB3jZ[bm1DY9PV$MlVeiV9M1h[P$e923,-AGqNG*B
Y"X(!dJZ9%2R3#4SZM&@)11dhATG+EXd"@3R-l'YTk2!S458-)RlJUJ)2YCd6X1@
6+$CH0Yr&qGU$T$PPY$[-i!ejMm6[Zb5BBf4a'BBPT$&(mHdGj1ULrY$I'E91LIS
8'-DDpi!"l0*p,(U)D@!N4%%(eUmR9)0fN!"GV@#fBcPHcIapNcDmNB%ZQISG8%V
%!k+FElbM1Xae"m2pAEP#4N"pjU*L9562fL3PLAm"#21mBHTZZfJiH,V&L6+"(p&
fH`@1dY`#Y#SabHEZ1a(-+0-LZj-QN5SMNF09U8Z1$@T6qNR0TQ309f6-`)f5#F,
0KUCqPjj`UVirMDcA!L4(9,pjR+k!9G@SEMYP"E-`JRYXdl+XjkcCB"*&ekMh'rJ
e%#@J@YZI62r,#e8V14IZA'Z'FUi)%m&mdU6mppDQ1F)T,3Jf[0Q&8GfCDCd'a!1
`-eT#VAD9*F1VbkSPP"@Md8!bAj@UiCLJl'abqi-01C!!3(FDNGAqR"%GFl!5EpM
BMY[rd-j*B5beAkC4,$L0mE'([&HBV*('P`!**'jfqr65B6PZb*'@h,r"ZFm'9DC
r113U1B9q!iGC@Z-*&hqqEhcGXp(a1'+3!'3@d9`Xqc)*eG*cMNJ`*afR,VHrEYX
a#S2FJ"X0I,q!YU9Q,FebfqH1("HUcTf`!cD8P20A`a#m5hp`jkq(F`qH&f`S#Sb
UNYcMBh14!b8&Sfc80HHk(+Bqr3mS4UT&4#4ICSXaP(3V#Y1TM"&q2TJVS62J+Uf
i$9m#iKad6Jq00,HS)0PCpL,2JrC[IJTL%%E!SKN9jf@ZpcF0"Ai[)GkXVrrA5&e
3"D3'Rk'X0Dc+S&*TJDbf`8[4Kf94-Pmp1-10`9lkR2IX2U,-'PCb(eP8PK'[C+F
c3PXlUA6CK+ph5(-A"IQ&+dC3@!2T$fq2GS9a)+A`%853!-Sr&q3$BI24%JH99l"
mDVlNm30hN!$HEr**(IFRPk!RmeIC)ip%qpK)qHf-iN!i3&J@$h%iCL(fBI,G"lE
K((!E0jQS3C!!ReAdTm*!b3B1+ckf+-KlFE%9Sh`TT"%cUT0*'p(M9&@jFXf6Iq%
C!m(b"KqmMJDhGRE!3A%3*pY[`iCbT@l1VjT[HrC(bqA6'3H3!'f"hL5j@,HEK%f
"m#k,E2DiQk,T10N'FDI@mj)@T#VpUN+FQM2V%60-DY$(@Z[BAbTA&,A6H2("m)5
8&ciII$qRiF0eiV52AE[,fBM$G02j!GER%,$a%[D&0d,bj5"9iF`a4Br",F@$2G1
Ph%#bH3"K6RJ6eVGAY%PpjYJ8dUSZR&Z4MjQiAE28+iSNCH#B5UGFHZ[!UU8ljS(
@"i,)Yi*C'Rd#@hjF2U#Z6*dLrX`5"J8+mFS%3K1,b-2GTPkDS@`G[d)QG#DT'F6
%YMIchD(%9E3%@CI"Xm(a[ihj41HPr"RT2!EM'-$KLeLpjZqF4fX-ICl4,6lMAk*
H$,j-YXV@HDjr$F`YHcC,dB2UQUPQ,dI&Z13lJ-1ld4Y`2[[LKCI@SX,8m'XPkRQ
+,q`DIfpA%6X3%E&Pf6Flee"rZY5`bJ*rXb!LP8(I$,*fX,C3b0iRT4k[k"j(l0T
'@Br+SI6Q'jVEeE,Sqj2!V%plbXT*dNcC%B,N@8(IPdN9UKd"l@%*p9G`TMdHBe4
2&lh(#3,3b8#qEp!990UdYVE#TU'8AB[q"LM+E"IL-rMlJ9-rqJQXqYj&+jM"b+I
0Rf5D8h0Nl(&Ef!GLY0qGEA6bk2mMIq'C)&"hKScf[TfP&*M0$Fi-XFYr,1X2"CA
3PHMj24'M[FSJZ35bN!"6PRS"RGDTKdqCf!p$,QP-0#AN%J0%)(YY4kiD-#`"f(X
pI8G[(fF'eC11"Xl+heA@+&1q9J@h(IN9V"FqCCcB#I8Ze,e)$i9leP)PEm)fP`Y
0K16aM-cmS9Frh"6HGfiHMB*Mj-#q)mUF,4L#Z)[)IL#$8!meFFki43dPP!h3lPQ
h46AJ@4SUSK%0YChB%q8DkSikXI0'MPKN#*b6[48i'DaX5cGD[F,[mbV4G(R4Q!+
kVG(3EGRm-R5pk!ZQ2@XG,$S0#c%E+d6T0*qV0lQ1U3R@i9S'6XbLR,1kj'Z+-dB
@T3jb)EKl6KAkT@lHJIe8*hY,-pZDNeSS3SS*m6aqc2AQXpq+e3RkM4TPQ@eG4,J
rI8ep`RrbA$SG9U$qT4%8"LBNKkp0L[i*,l"2DG@,8$EAfV%A4P*UQ`T!)2e4ZPG
+a*&(FJ5K*640MJ'K*ce$MI4ER$r&eN*N4@Jk%5Lc%,REjq350YrISPE4Hf5PLpC
lI`A#jelUi'[9ckiF+#+fT-i5R`8A@4rp2i#(qJfei$q)jQEI0,ZQ-f'!MY52cK5
`ePC4Bc)Ue&@532I`J,EmBChPS'L$llIrJ8$%#jY+I-dVD"S8K@md#ZBF$`9BY'N
&HfLdfVP+!%beT&pjrFZi!AIX$c6YFVh@H,`N$MSkT6`B&6E&&F5LHN#iHcUJN82
r)c$A4'UZHk,5+MUR%jCfj4jfMj5MKIpj6c36"XCpUqE4-6jQVT6ST$j0MU!Ll-@
ZS'$V(LpM"9k4Kq2G!b+,*I)edahcCJHk4D60'FG@qrcJph3Zp!(GZMIIHDq)j(h
f4rhNK*+*Y`GGeL'fb8B#"LjqX#a&05[3ckGFDR4mjDBHeT!!fQTJ#"D6k[CiJ!F
NlTPUdT%A6+65c2PNR+a+&hU8Z$BRdmLP9AEIb[a4,k+`R'8p,-iKceK"@8d20b@
JNDMQrIB6I1HIMTDXPeLYG!AU,6ELF-rH)eIq'F!+AalJ5kGQV1@*r$HA#,%'#"L
N%'EEJ`BHap1[m"Pl@#pUBL!MFr28R-hD!b3$8j)XV&,M4ZqKbD&RL2a"JNZiP9A
S#-aZ@``!ppCKl!aKN!!a#9b2Pm'$@FfEq4m"II9A"D-Sr"l6BIlLYSL,Arl"iZ)
G6f(RCF`PeGIi4m`1NANAcZS&%$220rG5@TaYiCY[A4XF%b#,-3PhL$@3!(S(c9Z
Z2A%@LMH3!%A-Vl6A`iJ!U"1rQTk+2BjiARl14$fKdFBTZA$mL'AZHa0mV&*8R6J
e`%1dL)IbS'mT*cELp9Qr3ZdQUJZm$f1G@VLie1m5%&T0"S"aDVC&$-rHB@pAeCk
5eD,cYV%[jSIa+[UQE#SH5M!V@ZUFeL4!1dr+P%h!+q'iKire3eiYrC@A`r#iJB*
c*l!*&kF03@@clIb+piSXMG5$QQr4q4)d5b8MRG&UeLE1eBab1A40!b'%$"jJ(Qh
XK1GD2B3PLC53!$)8'+ED9iCC`"E[jD$rfH$X'42(Ad0$X-GekX5cLFZKN@N"%R(
9QTeN1pR`PJmjdmL4GLLY20Z6G"IlEMf'(Ia4'PX'9JU6q,HD#XRM@BD4QG&BHea
Nb!d%52MC[&X6f4JDdka-(RLaYr"4e830Mdl-U1r8RVJmCqEbA1pBZMF3lp@qRLJ
Pr3Ud3!XT@QJei6@[Zdd)MIAM!0Eh%8V4cEBdh)5m4k,TD@*VJXc5T)UMl"dRl@Q
2G&'jm3#9b00NEN`Qd2Z`(`i'+ame9I&G*15SYD!U1X4L%fdBM,b[q2)-ScMJXSi
QB0bTX!!Q'#0QVhr@2`RDG#%02b!Ym!'*Z,Biheik&i2EIrkH+DIS8)(X[-K4eFb
T3Sde'KmZlfqVm8r*2rCZE[el6de6aNN%c$2ceq#LACMP18c*KhAC,ei*Imb5X[@
YS-RP9ZkM,E(#SRRabNj3b1jpmSBE*a(BIKrf##r*`)lq4,d$Pbfa2A9J&SSAd(L
$Z'K8#P,QY4DmaaV)p61#2idpR@C*2V``1pmC0a@cQPbPRj2He%d!$CVX')I$Q,4
Qd3,G[E1c+&[Y"CV`**MAe2b&"2p'0aPEe$6-lH23md1RpG3ACVPYlST2qFC5C)c
B'D$Q4[NJX9Ap2P!DV[@ZbrVh68GZ-CH,J!J!0h@QmQVZ#m%X551UQq(HNP[i,+S
4I'bZ[BKSU)GqJ"'L-iBH-)#c2rce@0daP6faemNa&20a9@EEq%,c15$"SGkd0*l
4AJQCr29MkDHZqZ!aXDiGVZTJZ$!03L0eBAm%ED(iiFek6"pqfHiMXMce2'Fc)aP
+$T9ZF'A@TGDP,`48"IrETFYKp3q%$Tj$'mEJQE+SiF,kT%GL!rLaGc"UfMp,kZR
b"%f8RGjF+aAHK--d2CF2X+$GE#h8LfUrUKDTdkQ$5mCEGpC1MJ(m#QMDT-q68HS
30G*E*'C!UP8'm+56YQY!1clIl@mm)iUS9MrfXeBD9(B&F[-i!JQEGm-9LmIpdXA
"MB3VF8pUN!$1+KClq)e4Md``)SX953&!4-L"H4bqa,QR#EA$"G,`jj,mA"hCNDq
0T%-K-+h%5RaKi'*)RYa(c*%E`ll`SBp(b9XFF5h,G9R'4M%J*-E)Ya+VHHel"G#
M[$Te@l1UClmN2*rHA4H2C#2["-bT,dilF[[!YCSJDZiR8UMDYV'kS,P,R')Up&U
TAKGF+lEHIMq@*CBR&%Xjh!Jl1A&"58L%'J3IJbU(*EB9&h%&$4r9qLiqA2I2mA4
4$`1qpG4H)Kced2VhPB&S+K*"ck#QJUd9Fa0fVQ026kN6*KI"JNLJ+aB0aCb!f%D
4rI!H5dD4bGr1[,A3(k`AekBkC)8HeU2Mph)b8Dk(4h4+KfD,50pS2fKEp&rkp8X
[GYqUM)EZQf09XAeqI'S%CkQIlfb3!!Z1(imR&&hc[eLJL1G-HaBc44%laVUd`Ub
KflAE4!ce,,8)S4mpfc@LdXF-P-@8&J+HG"!['Q,)jSpM#AX'BiU5Ulqh[@$q[FX
!,)m%m*FbIQe6f[#F-c[8hiTZP1k()$dUVAYpp)d[b3Ka*l1qi'1CHd'68aVeThd
'eKU+r*,kbr&(J)dUHYU2P!5,h(Skpk6@lA@')`h#'#!GTf[aiSMfB+[&aZ(G6D(
DCaUE#i)f0HDC%MqD#'NqP"FG`3#'m99Fp$D*0+Fl3$R!HfZpBCIU&'TGS(YeSf+
DV55JjJY5,'53!&FfibkNi)8iUZ,Q$1'2iC3P3ckR!5&0iffj3-H3!,6'kmR9G1a
eTqmI+rpF0BSIaC2,NNH8#JC5A-lYmmSUeIhZ,T+'T@U@1J@0@9A15*5h0YXi8r%
aAD(dJHq"H+iXThJ#6A##lMKf9rr8F2`DI@kF$qV)S@0MqjKeT),D@Gp@8CGhGB8
34NK4N!""@Eq%j1J@INJFLRRTJGh,JmH(5,N&"QkL69la4Pk6Vh,kPj4c(F5YKC&
(kD`TMZ'"SR4HP3`IlE-*km$rS%JP9A$TkJe!1%+RpId04kcT46Vm"Q666PX5UN-
*j90apK#(jh*K+2&"L*A,EP1iF*U8l)4&FH2%fMadZ!PL@cpb+&ScZi6iX[#lm#,
CiD36RpS3e)kr(L6TV49Qa,R+iNB8j[fC*VT1E!%A[F46"39Z&L6klTZB!S"*)Hk
4bVX("eX(6Rdpj(b(h"1h-Um`e9e9r822*D)jbS6-ILiIaV+p42l2bahdXT%AY61
Rm@A)%B((hp+HZapa"SY3VFqcRVI6cq&GG@9bkMVU(PmXVH8+VJH$1-c&$jldT`I
+G-T,Qjbfc2rfq(92qH@hG#[-b@(T"+`UcXE!iBjjVYCEQj0ieLfNdSJJ&IE+eMk
G@K3i9$p#XR&#@,64Q20"$c8QETk[KQ8Hc1Df8m+fkUc"mP[G"i"XSmJ@Kc+L`3G
pQJGq`ZDN63H3!0c%[&CU#&)@+6#B#R@QYDqRj3S#h&$SK210RHqdlT3kb68iZr8
EhZRHT[5LN!$*ZN'mCX#L!j5!j11rSNIA#f*93AVUH-XTaT,4N3KZA%XeCHDFZJP
ajDGd&[53!0J[EJ+++NJI-Jq'35m'%lIK"1ElYMDDV(f2lVPLEemEij48FFp`h2!
N0!41PFB66h1fp'$$h9(2(1F8`LSeM*VQ9J5(Ci686ejYQB9SDE9F%KN(k%I1aP2
4AefU0Nk%EBVqcmS&)@A"EV0Z%-$4Qk1@mI&9M@NqX9A+DU0+Ab"T&m[B%f$-ecc
iMrAHmk`[j2NE!ClX5bE#83amYbE1ZGZ5fp1iDYH6j#,BGDGafiH3!!YZYV%0SIV
!q!i(lSGX*+SX-8Z"k,*jr%jp5U$S*a1`V0&Ic$Lq6e1%P!HdY)*mU1HYeM03qj8
Fi&QqGSjcX@@dC,Fr*9qHKEZUp#qIdYeVH!-%M*EhcVX6%P$TrZKpIY'8XQQemrR
6rDmkXfaQr-$@L-6-h#V@Lh(RDVPH0PF*3`5A*8h,q#lFX1MeY[3H8LeGeN4UN!"
PEl&,`8PiR+f[IjYS0FfZ6fiGf5QBM[,Pj!IP6UfbVGl`84Y3eA"j-%ZE%[cYd[+
Ze#1$%S%5I%CV1NM`C`bT%Vj!+kqLSk9)2rrVdX-0S,(d`hkd$Sq9X(2CAqk+UEI
2VjI*pRdUdLi'UN#X[9-,`X4a-r'`U!i)`fN'!aS2rj0%PRp60pqVfK&#bhKApB4
#4KQT)3V4Ah9S!rcpBQbVIZVM#6(6Xr(,)@dE)"jReG$B*q"jIH+5KVmrAYMA#Xp
V*@924VfR5A4cGa%B6Hi49(HpP-L0jTh)9XdHd"-A#pjd24rGUiJTka(AeS6CZZ"
h&AHJ`ppUqV2"Ra&!IY!X*E12H)ZP+$DDUD*q0+JL%hUhLT*[PQ"rf`5Rp3Y[AQ+
RUk[Bff*F,R"%T!(XDJj9kMlNH%NPJbR%-A$PA%@B4%iQc1LlPS1A1*42EI-!YX3
*4cmmkRRhF8GpNV*E9G"*r`JGYF*bZA-8-e*ANFckNfN0299A"iD+JlkKr0Nc5,c
THJE!)I"r2#aY"+cBdl2D(Z"-TAHFf&P`&32pm-)FF`)@&N1j)3Rlp110bQ36i5m
k!3I-9%4aQ[lR"TmYPEFF-hk3!,,lDM!kNUhAj[m1J9ampqD@N!"['UCJH1$MANk
C&RGfk*GQlM+0C9aUaAG8l)kLmPfrmV!f3M901#`T'L4EbT'$j-KB%M)@d8@%YUf
k%m!N4"Ffi+9$L%k'r@X8C85(#`UF2!jfqhadRjHE0bJ#KKK@X"ZL9&%f3K0EGj+
)e[jd`r(@(bHV66Nq&DH2`aPTVJD[d#Zr'4-NQiF3!aXUGb,pL)IL@LFR*9`IGD`
cIkZVKHBVb$h$,EJ"3piKLSNbd&'CJZrkd*KKV!6AM5P4Im'SUUB,MB62N4LF+&c
$Hckbfq-X3-I-Q0LH-J3MTNGjiFD(ad2cJ8Cm3VI-"24A!$CB4EAL(j+aLVmM4N'
B0rmcIZD'X%DD`,C&A[@1iq#d549LFBXQ9-a'ki)+apFjB+BU%JDT$F!"K2dI0,R
!qEJrLjFjS0[QC0G8HU4mpAX&Z,9Y%KUEdjLANYA44S)2KY54acP$@8ZHBB@5+[E
jabiif*aPhl@-#jc"P2+#AQ*ERe'@ar9pUSZf9Lf45+L$Q'd8ajPA2plqpIqFQM3
)N9%3EX#,Za8q4rrGMEliCfK`TTQX#K8!IfIeca1f)I6S!6",#XfP%ScDehajaN&
+BdMM&cp'M5&`%YcBQfb*6TcfN!#4`D+B'U+K`EQ,YXHiQiUbhCjlE@HiM+fGfJb
ArTG46#D-8CIjpZTS'(ak0`$9-HqY5*'SHGl"CNEUTCrVIkG"cla8(K2P(DfE-Tf
cCRZ-R'VCm@C#GIZ&Z&GZGP39Lc3V3$R24,$A22N`0N&TXK$I4P+ScLbiT[&G6e6
+e1N,dM!!`Jc*UYC#d8$#$kBB1AGVd4FQ-`"1mRdaVJrXTqCDNpeV,c*#%+LpD0L
Jb3[ZfX2KDiVT"+@MlE`GmN*V+%fcddblNH9C5R9I'1KVXk)mq'EdIi5m3DB!fr%
P9)Y$#0HbVAU(i)kEP2VKMRSRMLeSUjpkhXB&'k-rpBMNj&B438jijU(",'QmSe&
!mGQA$[qq"IP#"dF,rrq[Mk,rMRQBG)pM*%m9$b3'T!rCSbCjbS*D[dl1)"`KBC(
YTfKj6YSSH,8q$cLecTci4CrQf(!l9hJE69F-UDPRSZ9B!6l(jl4VEi(FHa0Il1#
LUikeAUY3TVUq4VMc)TNY`pT4KC%S!rr"[Md!eq[,eNSPjJ3p,*J$0Q`Xhap`Vp#
-l9CV2+k[KYZ%kX'4MGJBlbmY`5a2MLQ`Hl9Xj8RL"4D*AETBkfV*9B#C*@IbPr[
3FkAmZ-QSBjEmZ2VJaY@Z99k&0SH&eVVfP,V2ljKrLrM6MI'8cCI8CAEUXbUVj31
#9E@P6U`Hd"0Ua99(CZTp-IJcCeh9+iSbSP%QFd2'E"!&0%A)LN!I5kp0j@UNkeT
@mA'5L1PUE0flldb!HSQb')VjBqA'@J$X`QaIrTjL(+pr3#-DPdcKHJLc2Lj03$P
,C0ceLaq$3B!EcFAA6@!2j(XbD%`[qba5![Ep!H`EFI0QX6p*ULR`cTK&T1raJ5!
J5-pmG0e-+CDJ*-636RDqU,D%ep"LDXm1m*0EU,TiM2R'"NjJ@La'4k@*Kd,Afc%
'PjQcKBEiHcXFjj0$'KA0UF,a)8-`m3rIjKA%+4qHb531QTGG$FJ4pB"'3eNmC2i
R+QVq*[$"k9INC"-$1IJkaFm4$FK`,[e0DT[!0+hCTAGH)YNHPUFMNbd,1AccURa
R00kT9!L-)RMEF'LmDP4V-8kGX(PK51'rP@dR,fbLPHBj93SlI58J4,Yl2DG8%kL
U+dKEFM(ecL+f@HCc%`mVC5GjX5+PEm!@M92aDHmUBXLi1Aj5UFB&'K(H0280q2P
*!'-ETkdG*lhb4r11`i6D,Dq6m+L*&hS#QESi`#%-C4h6T,@c!5"e*QDiG4,299@
$+k5ZE3'%8Tk`rEX*IGBV[a'M#qGpQL#8Qe$YJ(3+iRZL**@m*0kL02d2%@LpC$Y
RBRSb(HBD&*,Cr0f`9)ZiX0a1U#KiL0QC1X!E-U)#B!5@jlcHRef956i6%3'[TAI
53UUB'-k6*KRJ$KGIhiDk"e*r)m8UpIA0A'G+E[mdRLTpSi3C8),$[)6LrUcLL9T
ULK"5#D8,h2L!Ep0bNriQSXCC(hQ-E#R4LZSAZiSAX-RQ2mZTi6X*ZVcQSB1k)HH
Iq2"N3[aRC2G(lFm1@a5&Hjq%emSHJa)5ff!@hKUh,N(-"B[""%[*&fhe`ApCUb1
C8,62#BIhir!ZKLR(-3%5XS#JGFZJjZ"McfC-#PRLYh9clAdPQ#5*@MJ&GNGFpJf
@m+594TSYUYc5fGDV'rXk#*!!,EVC[lrXYP)XF4$'j0MLG5jG!eb$FE@$,G1"c,8
M8kEXf4c%iNYB"bGdaI%*Sb9Za&2liNpp'FqTKpACe[K&G3'jH`CH*3EXlN%cRbJ
Pad!Q*0Scpjq5b!p4IY1Zm$2b)TAYY3hMFZ%8EeeTE)KA3j`Hdp#!F$-)32@GF""
T#PS30R4fpPpq019I#)aA,M@@8)r"cQBEHR581$Q#1"JK(%#FdAFialE#Jl41fJ8
i&PqQlm$8JRGb2KX9"d8Km&Y)5$@406TmV&KA%$'4+Ld@FTHrT-%a'*cB3%%)!M9
l(hkN,q26[jh+*@'&PhNR6DaD+h5$1r9a"Kq,XjNmq%LlmD4pQ8r3TbZZlkLb$A,
9+3P8#BV`JA!!92b(P$GTUGj$@P%iH(URcEY*0aBMNmlGap)Af63chZjeL%HSP0"
[PfQ(B$8fSTCCb[McS+9Mfl[HVcR'bR6`eeme$qbEFli&&iD[l#"%$Pc)PS42'@j
N#GrLT,48k%BlFf(hLFBkSBCjD4&rHZk!@P!q%029h)kZ0@6+$!l(ESEQ!Rr0Kmj
)Bfa&1iYl2rh`+PR&NVIAZf9HqT+B'!FcX`f`%#F)JU2'q`pMcZq8jC*@*))rjDI
5SkVa9#IdF1a4SafG6d`k6!)b2edRDlHfcXI"5GkU%6kTmXkQbKa2d`F3X)IrNG1
`N!#U4U1(bUReKfdRGfMp$l2#DNS-+m"q4#)QT!"C[ILZ&YPkrAmH5L%F#lUI(5H
bpR[LJfSrH'Cf9U$rXY6Uhk)R"Ar9f$Y+-k,e+R15l&E4-rT)q5ZRa&qp'rC$pFY
mL(pHK$PRY0kH`bP"b'$-0F#ijE`4Se"rHS*e`)3dc@qeJik-86q`P8XJke&lCK,
)&A-NcKSceML$q1GrREF9p+F,BIBmQ'IUdS0L+)aM,GTJS,DfY%l!XYBdIf8%3aj
b3e%d-`qU[P#Jj48Yadqkjc0)G)6(6PGR#-IP)Jd`e&BMUHN4"%(%)&+I4P5'a+Q
ekq4ZMFUeP,fc#"8!cGBa+ISchX9ZGc&Nq+DP+r`qTAN,h+588`f5bLrCq$H6ZRK
4,4Q'"XGaD$2U@kQ"86EqB4AUb[mR*GTX6,8GeGTZbl`9MH+"adie5ME'10SIZUL
r"-NF1qKiCe5M'ArG9+H`ac!Qq'*!)''jMSZ8*f18f'1f#Xf2D09TQ)5j!GaFGN$
,M&#Md3M$B46J&Z5E[F'*&J3pZj2UZi$c0mA$X9C4Q033NVUrBkY4EH,aU601hfr
,pjNrVTXZ&GD1`1Ci#S@ZH$E$p[$j86V60TpCcKljV2b&dN3p[i-kJj8DG1"UYmC
lHZ8)CYNIC)ja'EfjXelCG$(k``rk,paJ-6m'"'&jY&ZpMjB!0L$GBJ@0YG%YFH&
"((AUXqd"9TM'k5d9Mh[d#R)Hi$#%DC!!eGSfY1@V0T@Ak6dXdRT'SdlF`XUG)Ub
Ih85'Akc&"hLS@B3T6"")AL39ZZ@SF@ETb66Ze4De"J$P5SYG3#M1BLrHQGL9*ka
D(3)cecY1iR+8kLdBFrGEFNVT+Nja,kLpqK,FqBGJN!#14qBIUl-*5E)5TNqXKJ*
X2D4f'Ap5"E$c61&SMG+P%iEKJZA`2G4UXL"4UTTrCHqY9RUNP+4lKIU9(&L4)r'
$6M-(-PH49-NQ6f3eN@B'P)S8#QAf4#DKp-$0##V&BlK+Kf9-9,Ad)lN1(HilY,a
f)Ca1KrIj$3!)`f&`,M50G&9ERENKUh&Q+Ki`D2LpP*dikljA)&P'Z!RCBA0d8"q
qMfB"@Vj!dZCj99HacPp6eZEh5-3SI%qIBpEjRX#a,q$D`e!mqMkCF)I5Q$H+i&f
heBGhZ46ea'MfGpi@B8Lip-&e9ND1(!),Y"K*$mh+DN,h0Fp"$!EQBd3Q@Z-)E@p
+@i4J#bcE0mYMeqY5E'IJ4Lq@+Mj4dFH[X)hb!%8XRcr`cFHrSc9rN5rpNa!+VKp
!X4fCMQD(1(Ar"la&NC3PLdK5ra(M'e+[VI*#AcAK%k5X-R$pk[b(3kRP&,M$%c3
e[(D5G#I`kA@ijE,H#SVVrGYSe!%I!fm,-L[CTFLKS5d`I9AR%dTDkAm5GH*rA+F
fj4I%N!$*@KqETcP$,LF""f8K5c0Kb2X'U,$RXh-Dq(S%4hr@kB`NdAb!-K6`J*d
A5V$`4$eP*6eq9f$m"TZU&VF6-S$&Y9bZGa+ph,BZ%cPrDp+bVRLhdT1YP0DHjE9
l%1*#,ImL&h1'jHJ'FKXXka`Fk9!00RcIr[KTN!"L@0h!k)lkNcDpMNXH"dZ$$#M
@A["D$DL2eD!1`fe8qiAJJiU91BCdkm8MQ%m$F$*93VCH2kE5'dR%Za!ERI(l!`[
l0&4B(&BfHFK,Fb)L`P3FGI[)I&"VY3HHdGJA%I8ZK1UX[#[UKCRJ,Yrl3cQYeAl
,aU43RRm8HBhR)pBKcS#V2+d40Z1BrPA"F9fF)TAb)1G&Ap4N+dB"rcE"dE"JG+U
6$3XMSYS9'lHq(FAFKV4!(4Y2D58h53dhkCfAkAKr$)*&hiakSep,0#JUA)8`AZ-
I1j!!!+b'5",[Re)KECRLT9)55U3G+dKFFfr6-DfY%14+I@ZXfJ!-*[X$#jecdCD
(DF%*V&ip`6i9$b[PN!#VqLp04*9'$Z5#d5GqYHAU*2F)e&qM0X[@'T5C$$#YEYF
C(#`V`H8pr+M"cYrcAFKMFj*,jT8GIiEKk&"(f"bApC2G3ce1"iJY)PSVB"2If4+
1fHVkDYC@'hP8lT@NE4MY!9ic-9`ldBpMN!#'H#k&9PU8KfMp6bk"KZ4``%ahfXU
)jH`%4RL-K)$&'IMXkrp[j(HYN9R@(JqMMKmRqkGh"IZ&BcA6FCFX44Pl50X9$T[
fY%2,[Vk(&[8aRGM)NL%c1dH'k4p[R10EQNbfNM!m,5AX1E!Vea9Q)i1BI$R+14Z
h2,`QGD``5&)NZHAiDEd,@2DIicA)U(!0q3hkf!Cf!M!Cr4mRp*[012SMH(QDmeA
NH,T#dqXb+ee@5V,C(I2ml#+bj-f4P)kAdb'iF@V$GC`e(f$%LGNf0R[*iU,YS5I
bqJJq2+hPQZ,'fA(H+PLj@aRef"d3P[aNNmATa-UZbrDdKefGqQU13rIEDd$hf`1
X01Q9pLPG,QJ+V&Ab-FUrlZVZV,k0)rJ(r3phlY&%3F5NFi3Tb*Zi-QC2CGNXp@c
0Y!3!R)dB'CSNj&Pd1I&+Ke`60-)Z0'*dp&m(8[R08'5T"i4`)5,*I"PS3XcVqeB
HkY(0a'#q@jTJ-8p9LXXE)q"fCNk#X!aT[qPJ9[8@6UmPT[!9IR(&cA,@*e3pMYG
6LF-,hHr$T)kf$R5*#eLc&EbH6br$qA)%cmBi3Dm&$d&@%b@"(S#mNd","3%m"NB
qqFdGEGFlfJ(T,d4c!GYer-BclA0*jR2kmG)56Ak),UmlYlKQG"+[d&'@ld-bPib
iCElTiq[I*US[N!"2'ld[ICQ&D6P0dhlU2%ZURB!!8id'd5aD3M(FU#S6MG0M#$h
iF`%KiNBqpel@FGD)%T0jl8LlHE(XFL6U&mAXk3GQkmPe3B'k!VC9QqAT'N($XQ3
Xh*p1e,2jd$N3[KL69,[`SVlYj8F"`H6PN!"f1X3Ypq('@f0h5VEI0`21FAb&UYi
A5&PqkhACJmSFmPma5Qib`bVFKieUKFKV0"V5Tq4(N!!3Dq9'%BIq$@9ITF1(,#&
4'Fa)SZlU6H3pb9-SIbIirI8Sb%LU&1fr,jhAZ`'Q[l0TCClD$5efZ+d0C4(GrNB
lCMeRh'A6QPFCU!haJ$ccc4rHN!!Cc1kSrX&`AqdC[GR2lkaPK1a!C0id`9jeP&,
e'"piKP[8,NIX#Km8E&[[[ii+-qF&c4e,G0M#9-QU+UbTChR`)pVlTDNjTJIK+2%
,B3G-G'%G6SSRiqD2Z9r+1C!!J4i-G!TM6ZAU%*0mJ$f5T#Ci4k@rq`+9#5`6T(M
F`$8jaUBkFJPRHLkG+-+dcj-6*j)XQbcBaP2@kaFhKEqLfi5lGr!c@-*NNY1,V`@
q3L5kI2bKqi+K'3#()&UBfjQ25HlSR4+!@m"U5+X1H$m2#fcf1)05Ka0MKbAJ`LD
2'Q5IK`FAE$I(66iLAG*5!QFb5"qaC&f[QA(hNMU,AYHFFTk*"TDe`CqP$A6Hm5k
ALKQI0dBZU)H"Aj+piFqIL2#Th-Sa3Y5h)JPE[3XV*S@MKKhFY(dNpLN)mC!!A+8
DD$!B,IX6GBDVeiLEq,Fh$5cph")ZmFUQP)q0MbY030YBFC`$SCZJ4,Z4DD!rp46
6q+L2Tr(J0Xm4A+@rLfBYd4%TRb6,mZ4"2q4m!@Zdh%#E3A"2kA)cD$#BIC*9!jL
d,m`j)dklH&i"EddM*,JmjrJJA$BV)'ll+6B-I)05bS4G1CP!``lNk5ZYU8US3(c
pPUb"j'!mD(Gdfp'D)E"M4rCGCM)`(fLIiPfGK#mH)&Mq42id)MaV"*6V)1bcL'%
4k*Xi`A4ma*B(p*UBeB&+9RJS4**P(2#`GErC#PjXX-5S0H#)9apJ*%`4k&RY$,C
MlVR&+MeE**ea6p0XR-'UrpeeF,YrKhi!QB-+RXb$jKd2j'6c!KMr#82*2SR8QT6
V,4SJ3"%35@I9C-QrA&bDZ+kpeF&1E&FcS&XMZNa$#HD8FrYV&Y%'UCRppCV%GJ&
9NLXTqUldIqY(9I&U2r@EP*fpp%&C$)FP&$2UH9fp+[4BH,D9dZ5QR48T$CIXHb6
lKIblf%B'DA8GrqUFB#@eA$c-#`UPchepY-3q,qG3YE*#5Z`3C(&i[dabFA1jbeB
3`DdXKG`M2GjAFT`eH,q'0`Q4#ehH"0+Ndq6YDDeQrAifI#KiBfQVkjQ3!0LeQK`
+AGF4kKQY8a-F8i!i4l+K#XDeS)8TBmS0*P*'Tl0`"N2kRAH1HbXII(5I5rq0G!K
T2l&$b-RiKr`aC!ESa[G[GmLGIBUlDIBC`rJ3I%NY&e5&ll`83k#-aGaJT*Mp`If
"XBii3)qVh`0G)e,EQ,KBZik*Ba3i38"k9%#@*R8")*i,PcKhrrm`9)0i4rFl[F9
PT!9bGULL#r4J4`P@&FC[@&U9R#9mc8RB2Tj!5M%$HrTdM,dE1-U9FNlIq$6p"l$
d9hZDBb&UH2U3!*2HIP&VPhK4'c#Ieb%k`13*J9MZ!$[)(Lj,m5+CH0VBmTQ5,Pc
*'Q`CLL$hA82&2lamj`D9K0c[YRBmpc13!1jqq"HKrC0YX1ULLTU`d)[GXkLE*1f
+cq%l!8K590%6G%)9e")iki@rD[IKES@*[DTCNMZN)6LFa#5!ih-r@N1R0UF`d2C
30SNaLK'4qraTBYk%3XM!2[0`C$E[8Tci$ES'[YK(K%#SYZQllSTU"fq$jCF6ShH
9!Q5%lm[aD*Kb+@UTKM)*2!AQc1XcSji$'YK!Ubpf$8l6ldH@*MhA&lH&qC[cX(H
1hp8Gj!0&D%EQ4hE!%UD)UD-VUkjq(S[I))hbQm4YGGp+Y)T-H)h8Q@Fr'6f$HaX
KL6`V&U[bYGEI6MlCM9G$6%e8K&QK[YNYVk9qi51L"FX'%'iAAEcNZ+k6UGj#rA!
9m&[&Y+emN!$8-Z0Eh%q(hJBA3r&"cXKYMrk%K+FIEV!IUYG4AAeG''!eADXf[*'
1e4L[HkA+H`U,5AQ[bdTJe-p0MVI-f##fbF!#C)(VEVGdBeVm9cYV"IpNhcSb#R)
ZMiQj@ma`df9JFf'd-jVAdFJr%NK8SJp-9XX#+bSQZY46'dM@IX31Xj4hr3VpiXr
hkT!!,G%0GaY+h[pVpaYRSjYdBqh'1hD1`R0+q0RrUjk4#JreG,PZ)AqQ,LVXY(9
*cKi'rd"NBH@"5pecr0'P5BGfeBYrGFrpLVRq[Z&6qb&fREh08l1,[B9jh'981h&
!+8m9FbCSP%YkT2kCEH*2@VRLp`eZ)-3LEZ"R`+@2k#1V"9E9P![&44Yr)iUf$i5
R48"khSDc&1$+Q'iZQ)8QBIp6&(0(f2kj!Lm"@T8cCM(SDUTT#%V&0)ip6)bKLai
b,B`#liU0h8iR+dfaT6jf"Q$Gm6RpTT)hl+'-`FZ+#mM+%-f*5#["e@ZJ9Q)S-,C
+eEB[iBhk-#XU,BDSqQ"UIU$9U%2NVVcK(m*pimPFr5X0kR1%C-U85#A99(H(FXa
0!@aRPTY`A#&+4+j5BXZ#J(FZ@F(eCHSC@LC*K"Pc4jkDPL`4j*pF%m5$!Sa%le5
Sq0"!92159SH(%@q'V"-rrPi9)d#LX+j""mFTb'`e6TVlce$-LXlZf[c`r4326#V
$5qb$EI#B%Z3`h4+SNUTkMFqfN8k)M&P-pU&GI5JH6piq8KiaXGS!fJE4,j*1h5P
I"F9i6(JjaK$EAiCKhe8%#34Ud+QZcYVSN46eG42DBdYb)mebP5(3+-,IDYC',c3
aN@BX"$CTDDkf0EBSrV-Aj!lqaKmp@J``d'I9EP*+B41pkG80-E8N`S'3!+4%[%4
dXrXP$pBacM(["f+DjqaR'(L&bpGZB"2*K(JD3X3NF16-G(H2,PE+`KfC"B6GS@@
8)mXBAJNcK136eSS`"41klb`,`I`XDZ4'L@8Y)Za*Ie+T1HPFdEV[RP&k&lXRrYK
GHQA%X+c!TJ[(#qS`kP(KJUcTILfCkD&50kc-`q*H@SmHed"BD'2RX",US60Pi1N
l@AG8Ie2G`1Rd8`kljEmQ)J9c3K[FV22[FlTKKAim!2X[1pE#&qT"VFKJRYIaSV3
"h@D)`fT68-[QJlPl@`iXR45MN4R@MM2e'"G9jT!!(A0*F'Y`C5`p)0P)UkF()+6
(Y+f3!(1riR3*G$acm(ehaUj&[K9(#M,6[5f8%%+"*A-"Dc2KD'V4d5S#`PJQ[3X
jN!!,86VS8r'R*9-cTaaVrRl6p14IX9r,&#-IDde+J'jA*Y%J@0Bp44J64)b#UP[
VAjkICTk[)J2ZRGY`U(`qY&9Ii9!HjdT9jahb!DYf6NI-dVU+D6pG5"'FIURaZiM
`6-')GI[)q'Me5&H)m'!jd1*Gr[$5A!)db6pM0E$ETD1B*M*J%*94*Z8RDE1T*E1
LB)1kEKj,2YEmZH-6GVkVUb8&1$!!fl'TlCaIASka5c,EXLfCb9@fGVe)aJLAFKp
d"5[5MXU8YEB*rr8Q9#5+I5+(&eU1F+aKHVXKqq5IR4#d4'qVKNp1L&0a"!aZZFp
HV@$N1UdFY0e9JH4*(#%FD3F$l)!*E!EkY9Bp"ETT'L0VqGH,RAb3!*5K@H9aG&L
6'kAlJB-"rRVHrrUH@F58Lj)cGKP%(hGN3QV*!ZM8Zi1Qm[YpHId(Zd["%m0Y)Bd
pFHq+&hj1mV,UI!hLZG'6"ITLVG[kjQJe`,%"Uf+kp2q'C1*m$fPk#V#rh5pqb`2
e!)$(SIdA&4T"#CDGL"N3Ye236#'fbhXiB%SYIj-pdbbVEDIR[18p#VS,BIQZm$V
h,*A(TCk#$eCM44EH&aG@S,(&B+ZFB$0XF+k)6pK`F83mb1$j8-A'@KS%LH@[b`D
E[(j5iVB4Gb4*9e"aB1DR"`[cK"f#plRA[+-@d3hKYGIcb(jcFAc@LD*q@h3q90(
hi'3Y6U2Kk,*rL9Ii654B*@%Y09"l105$1lpF#Ve6Dc%M2Em0,-Q-X2Ir2F*3Yf&
BF5[q"jBpI8V)I9"!rM&e['@m$@LCR%cGLIf5+I53!!FMjUd#6r'q*i[k5m&GPjA
TUKT)UjcIYKaGf9*kcj)('dl+0!IEIURDQD&A#XpcBB#L&%X+Z'd650[d6fekGH,
)(J4m@52-)ST*$ShBB&1J,[(-mDGE2Ulh(UT26JmT&Q,3kj2Y6,)iAj@`+8+pQci
X(Q0(3JGHKN[L`*!!Fj)2*14+CP9b#@H@+3DAmE)2Eq@4$&+8FL'0c!ZJ9I&6!C%
lYX3X5hJ@'&Vp9GD)MZFpY(XXcC2ZGL*HhMDcUFl4ECdaN5PSP4@`0%0!cS,(Z'2
HQ9q5Z5CK%S*'J3*m*[S2Ek@-iS#S&k%kB"'56Bji"6bmpVKGrIY*C2BQ1LS9-`!
U8FB*bhe3FiSU*d&!&iYG'Xe9[Rh9#pqH'p(JjLQ4EM,0j-aZPZIZ#UVH[AHZ4LD
FT$SmQKMFHk2@9eR'b-*p,HK*j",F1k`3N``32EH!iSNF%h0-)FZ)`L*l&QD+PHa
Mm,$LPA++EJk`-'kHD%GS88ZTXHIdiaqpH,!JEHN)MRlGHa0YkXT!C8iYa`jZjA"
id#UEFf*2Nj4l4qr#BMK(K9lhUdV5$dl3Vr)jZh`#XI#A8a"i1*%bm&Ir-Sm6q3&
#R&dQBG2'CZR(9Z1fqk*XdT("Dm(XMe65!HJeZ(0!#A+'54RJ55H+hJ+T2`rAqN,
BE[``b-fa!HKH4qlD$340qG%$Y*@Bm%U[KjKklcdI0rE1"EJRNR19eN&@CeQX!DP
Y8!Nj(jRF&NJJ#IUf5-fp[9S41%iiXFi1Ce&Pd!!$ffQ9#AQilFjfCl1M1+XflQj
[$@IqUm[6pj+Zp#I6mB"'"p#2PP5PUc0E!h5,9GEFH@Z5TCMpV8DS(K9bK"Srk1a
"9#mV@YPPPrE1ATf9l0)5P%)LY-rY@2&J69rSf!"02YPK)'Cf')+!IZ!j$PCS#RJ
-H1kp5A4mL2hUrN0Gq`jpjM'qf,L"lGJcX%"FSe,8H-'qrA)J+%4'@lN`9c+aCi)
6f`CE#iqB`Hi26IJb3mm02hD@i3hK%mlKHlf'5VY)@FTCX0GVh8KY+XY9)rr$qHJ
ILmd1qdD[TM"&Xe8EkH"D@rpJGiB['CXd6r[Aajd)mb6Df"qf$2HQYR%433G(4!$
&-caQ!-@YJjGVS,R"'AJYUf!Yq`m1$S@&T#8[$,c"5q0Kr`Y)pQ,,Zb*`L+F&b)M
c`CE)1RG*XNeCfZ0a%V4A9P$,edI['J+jI"ZhZGRET90k!pXj+IHTTmY(JT&'TU3
aehH[)$r)C+$Z)S,&CAcUfjcK5HKMP#92edPXELPZFlm1XpaM!-hh54HS"YpYCaP
&9IirNhjDIMRkUiL%a5cYZe2,5Y$DVU9fN!$c`H*m[%K"p%(K+d5[A`Rfe(-5`Lf
S#PjDAcT8fpZ%TAG,Sb8*Mr%q4#`Kd2cp@2Mp(9I%%J"BSdi@aKMq'CVABVheG&!
h`E!RQP@E2C!!MmdXhbKD*8B`"ibSAA)2&[ZNF`cASpc([D@UZ%hNJM43m6PBXHB
0ErXBh`@(a[lK!d%2KG,bcZ`8%H$-Z-+drhe-VG##`6ZTLDGBpE@IpcTFI6-9p4&
IH9bJf!3N*N,TFHbkTU82#YML*2d!m0US(!HISel9Se%qS+XGN!#-l084NbP$*Mc
AdeVJI4TcSiG$Z)@@MXr8BeN[IPXE'QfDIqcpTBb5%U*FSFI0Kba55ma*9C38q05
hpj3IG91C%QqLJ$!V5ZQD!m"&`pjCKYJQ@9il8%Eb**9*[Vh`DEj8er[48FZ0S&)
#*6UBKq'R)+$Q8QU@+2@H&)@$0a5&VZD[j1Pf8rR%BTDV1JfT8UR'+"jD%CX#'cM
dMqh,8N*8SL`hI(A-J*Z1mQdT-LL+mp((R9T%*QkQ'Pp&3NYMKcVUbECeT8,5+@4
X`I&#PDQfVMlU,,*D,bc+(`kkZP'M`3flc#Nm9GBcF6aLU&h!,MYScCXCCf%3NC8
qA**QQi'F&*qEbX8Vld6%FBqlV1ArF8kN*GU-YA%#rVDFaZ(YN!!peIR,HEm,69B
0(!bZbrJHGXPhXQeMZl5Y12kI@4"8#XVal)A#a)SFrL+#Q(@EJ1eR"d)d!P%i$a@
6)%-!D@ZK*KZQ(i6Le20((YGld`K,J$@3!&+m0NBb2U%l965'I`+5APY'H!NUJMX
A5XY#j(HG(6DZVa8*$L8f8SD0"V1$q)6*&cG1U2+jCPXU9`A)kB04m4GTECT2V&B
G"0YbS!0Ql+dT(DGI659*[qBTHh!`(`d`#L2-J94hd3[fkrmU0NNm4,bSq0)haM9
C5@-q`U#l)$%E-X44@%)MimPVVE2Sd!-5dIc-8-1T%E&A@K(T9p5cE-`Ye-6BbGk
V3XhA[fLTNXZQ!l6kkCHS@B0QJm'[c9Yq(L4l1M)!dfbQPT*+!%62"qBD[BqlmkK
pM`INQL-jj"UQSXU1c#k+8PUk%&`jl3BZN!#fX9LV2B$jFrIHVYp2j4*FYTc8EF4
`kmMC5IPSBK`TM-(Q3$VC*RaJfB(L48[,'#(jHC[GX8RGTZe6Ci`4eL"+AG83$L*
il'G6JlVU&V`h8qm2l3J8PMR+cKG(a0FUd$A5KjX18)8*6baaIU(%cU`5D!%cH%f
IKjjE3''lBbcYC'&DDUG+2E!Sm*l(a-6PXN!8FM%AQq,6!U@%#D1dDKZf!+,G!Gd
NP*c1RrV,p45P#R"iF`JrQKSBb[$Zfk!!&,d'cD4(MdeTcl`4[UBBmGl2krF0[[&
8"0,11Sl5qQL9$[$40fJCe`L5f,$q0@9hr+hJ-db%ANm)*$JBfMVkLBkKQ'!`3hB
jH"A%2LKmiNjlHZ-PGAMB#B8I0%Y5#1V8YpTCPK-(cYQCTlEka8fm*'aajBj[5aA
Mb0'(eU'YlDNJ!@beJ"(G*Dp%EYJU*GRip5NbpS3LD"aNm*ZdF`r%(GaU,RK09j%
91@Vp`TBUfe*&%8"CCLRP1@ArFTrpN!#E#prI`(hBQ(1qJl38G4h!fhY9ZF'p&h4
A,$qBVN&CKQ&)lRVY8R`6DQ)!0APT#8p#KhkLIQ*qIZLi4+[Yfb5CGRGPC@9Pb`Z
1fkIaZ8G&h!,0i-`AEac&IT&HL&R5D"r+5JAKK$PDi"kq!eE4YLRN-5id!l82'-S
X0"mS9T3f$PJ`*dmpM&"%("qpL5Dq0A(d"0&Ym%CHp,V4iJD#cJNBJq!'(F01ACC
13)V,"4r4VRj1'4D-Vaf65M`"lKapkhc[HmSGrRa8i%`(M,TT23DN+-9jTLUKL)Q
(XQ(dKIN#Nk,"kH!PXb*r`dQ*,G50,SF"Ll0(GV38c(0PPRrCH%ZfQE8eeBIkmG`
P5JaIf$LT%#&0h[9KM#ei6IK++G90TDqKahGT-[L(!iLIiRJ2#"rrj'Urj*4N!Pb
CB,SkmDTAL`qqpQRPX--4N!"rB@iqK"HMIq4hL0%#iEhh!Y&qh2hbFIYG+YAe9fm
d,c4i)M%a`c'4+)HNXe"%d,i6%h9T25R&E8F!TT04h8el'X5)F,$GRJF,lFTTbkT
%!X!`dkGiX6G5dJCVD,-$,Nm@FC6X9!$AhKGD2kCqf0E%1CK'JiM)AB30QPZXaVk
dBY9YM@+*E4BUR6iE$,Z-0VErIfl"R$Uf1Q1JlQ6pQJ+(lj`ja*ZL#UI,G4&h00%
kb`1kFjEU1rA@PC%1#VPeiP"Zlp5H+GbFQHj*GbhZ&0)M)ZN`%c9SS+ad2HL)8b#
(6i*G!b@%*@LTrSKLe*!!S!5cfm3%c""T9-F,KpbPIa@Pk)3CI%0Q2+A8#DGk[Ia
01BilGFB(k(+TCKR,(QZ$2lS*Dd!bVUI'Pc-CVJRL#Ecpdb$pT%,q,p2qrG-JrAr
!BbBi&!Cj3Rr%%l4r-1UJGK1!IrZp-KRL3IApZEqeCEH@a6c6DCqfECr$IhD((6c
N55hNF(#YI5%e0b%"&16NN[bYEF1D$PV[rQ(Ur%QA%HhXfJc%4UFG9#Q(l08h!&9
a$KTL1-HMJdlUU-@djHRkLF6[q$E+cjP@9EFBLm6mRVpiRLJ2hj9#&PB,$q2fKF&
0ZU'A0lre1VMNq9%pMJ+rY2$laVI5E+ej`Nff$YKE,JcCS,#rc6F*UKPV`aKp@h"
1`MK*5F2d!eZ5mS0Ff&Epdba`4rriUTV$",pBRFVSYl@ehTGlfhJ,Q,49+('qXAi
r[,4NXU*+I'FrMCEcKp@(YN89PrQe2*'N,Sa++qT$[Z8T(p[`'18')9fTT")U&rC
3%YGa0#k&S((4l(529UHqa%a1J2@eGT*3FqKqS9-eq64F-#Gcr!ia8[k&*&dmq%h
id,*JIV,bK)ATX%M2d%,$QlfG'!5SU'(HC1N5SHVZIa[*@f`,V8[RC*%GiU'@Vka
(jYA!FRj#,LAT@9Dr(D3@8G!ScUB$"%DZph[hEm'%TSbSqYlFF[@9jGL$T1LjA&X
q[B(Ueh)1f$jRp(K-M"Pl`cbp3h,KEZG`i6jPJQl*1mjK[ZVRBR8!6K"VM#S8QVF
l#[i-a4((c@[M[4b[$CbKJPRVIIqN@HNNjlI!8l'Q&[YErXUa82"Y#mBaBb[M)B`
GlJNSFK3$Kqj-5#a"KJN1QM2QY*b5bK)8V(8IYhC)aY10$1Q+d@B%-[ICAT*jpC8
q0Q[F0G-Ta+U%ip&rdZ0'Fl-MG&(kb&MpIKC)bYq8@fJGB4hfQ@e[-LcBd$p#m-U
#N!#kFP(Gd0dTi3lda54X!d6I&G`A"TD**pcR9--E!K3+5jb84l5@qJdHdl0VC[r
meQf486X,6+G'+0ckK$i&%lYiF%"j"h6M'#j"-ZhmN@3!CUKal$m[5-RRc`S1#S+
,pQjFLm3KfDP6i29D5IlPi+ShBBm3EV-S9$Vh!M-B4PrHH'V289ba+&MlA$CPV1K
NN!!LiAl"Gf1-K8$i*NadRHq@f$PX(Md"PfPrqN`9-[CH%0*G[G[Z#L9&(C+a&'`
"$#+rC(BJcZG6U[!MEr))$Hj)V,BqABYi'4Xh(L#Kf$kJBHq)-SZT$XrZq3#8'(#
5hP%F[-jZQQj,,CaXqJ9+1mDKV5NjTXN"0YSTHKEJ50d(H@LrVi&JpPk236f)j%&
$cqAl#VLC&k&ZKaU1PG&-Q*QR+U+4[R%B-"[0PbR%"T5IP9dS4Ef8H"KHd`I45PH
6ILrZVNI@*TRpa3hFPA3-j)SE!#[c25`a0#FES,HCGJEI+&SI!i#LG8aZk2d@'0h
[8Ck&bY1qa+*'Q&`%HMRZRdED$'!5&6ke#q[@N838'2YFH)+S(IK%`IAP9J-pQTP
&45Q6S3p)dkMK@3jdKT(V9b#hj3*ZdcqaHqhjPrBM&!T3Zp`+l#&H&c)J"V,k(EL
,TKqUZPelkDa1d8NDhEF0RS5%GE(8*E54N9(adiFG-L$3,+kiqEG4F6V**d596Ub
[Ncam"$`ipNb3!(QXIX8ACfMqbDHl'PkmNi5HFKNp!0#TrRd%[iA&6hk@l9q(Jd5
fdpCXK@pfHqZmZ!@SPUqJRV&hIh9549!-N!"h08iZH-Q!%V50VeQ-M3$[UepbM%m
dQT%[aYqr-c)F"kDKpNLpm14%bdIq99&QYFC$'5f[r6YqZSLdEqZXe8JL9$`VBC5
lBX0,'Ri&!4B35D4%8Y&)!q#1Zb"DPP#FH1cL9hXAJcPbVE%UQP!RiBcS-BeP!IA
L,j8+fUHK8C2IEYEZH#1HScB0p#6ASBlaMeiNkNjd)*9d8M-lN!#SbXbCfkk#0Mq
GKKk1jdQ#J4d0AeQR$9i*81c0S*lP*QJ%3GP'2G5!NCJF&V"ABKH,d#[V-)4ipki
hj4cKM"I@MpckI&Xrl2,*5[lkPfUcVf4UeqRiqMX*`iPcdK*+G'@Jj4e35ecB(#h
@"GY@G%cS'Z1G9([MB`#`qfLk)iD+@$M6dq9d1!c2[PXP!MDQfjhDUCl2@'L&DM2
"R%`KANlmU%9,`khb(JQLZU@!FNeXrHH@)D(j$'0(I8lk"l0CR2e&iRP+ELUUQ)B
hDU6Hk9b%ihfPH45fbpPBbb(2Hb*(@31U3$4U5jT3@eUV*c*bLQ(FNEA)`9#m%9"
Uk[8U#LqJc+m(X*a-[4dqdNp'5fcdlN)Vf8U5qa'4'SD((G#@bJIiRPJhIjqU9re
pBhV,%!c,LRppTe5p%(4&eVHGDRVRfSJ@dD9eUZVPheUf[%FhCQi*[dMkNjD5SU[
mY*cUZNYCq-FRPJHcm*PC)E,@C'Y0hQGj*1&3p2MUdflVe&d2,r2pm!$@&iIPl03
!K"H82G'THA,kjXCk!aT[#U"@K+D1@TIE+Epqal+K)Am4K&drM%U5KSJcPLVHRmJ
QPj13!0T`8cmb*Q`D(D[A08LlrMdlLJ#U#iCC"SUH2kjUKc(NQlQrE4TpDXQmX$(
"S1THm#K,6fMTBM)q,"@H)j!!&"9YA'+9k+N[BI!SA6@L5aJ0IP(e,+Z!+T'iRl9
PM[Q*K*k%k0FD`4#!6@Y'3VRa,(YC@-d0@2#Q$bf!$Chck&DhY[N[&)fqkJiq0iG
DcP5)jh%feNjlib(JpcEYU#Sql(+QQFi-i`*kNkS%X6peeQc2Bp@BQkaXT!#Mj$a
M@DYM+)Q#22%j1krL#-kmVMi"H&PRINCDB8&H2N'a[%FAL-C3R'Lkd+ZA-`iH%EM
9D&L2SY6MeJ15Lde3ClBLa'$[[$LrVl0*%lTqIS[#NNq!kLU-TEDI[j!!&fTI2BT
U)Yl3Gar,q`,-!U-6h-Xkfh-a(b!C@0(N+3)H(mTm3FJF&&3kKF[ZT"Ar-%eD['B
(k"BICME!rP3&RZhRl8,AEiJ`[p[Zd$DRmZ-1Pq[GVH0pf+a(+KJ"F,2LDS+5FVJ
c-B(eS$XrMNT@b6NSqTh)`BfChqlC[#HHh4Q5i#CclEAP&%HaTIZCj#"1,I%H'TB
A&CdbEj`@V2G,B)@3!+,H5q&3-8)p+#N2"fURYIGh!,MjfIHbVEU+%Yc!`18Q598
QVPK)LcPpMLMeD`9*J&p@k+-GhXXVQmFKd`)Mj9+bmGZa"0[Nil6(h*H1rSc+R'b
*,j-VkBF83pGGISU(Ti31cFbf)3qek5-d[UFq*IdQi`%-m#Y4Rbd+E6A6T()[(!m
R`cR!a'mN"!#h5T!!fAXC85)KFR0R-JUPqK&5ZI*q#0a0Zm!ImRF&5q8)T*ZIlSi
6[*[j0`5Y,2f*V)Gi5T23DU`N(N3Yk&TJUCp`@RVHKBrY#'i4Q%m,!"1HU1KP+RN
j$IKU2&CG&SaIc$N)3-Eb"CI'kBD+0V"[rb)BGd*RB-IY0l'iXTjFf2dE,2C0UNl
BPDHXkFQJ62"TZaZU1M5@HPr1ej!!*V1@e$cN@l30lP9Rq,-h%pAbi!14p3R9mZ)
UBUCL$V09'T1q$eM$l$Z!ckJq9!ieL`AELa1rKfm0b,4NcZH$L+3'kCMAK*E!hKS
mZcV@rVT%S)E8)SH6plbhS[3`d!F@#IL#k[Db,bQ60)MHiYiaqAmbffHUZam9Hmr
E43L)3Z8$$$*$hHRVATmqdcXL)lblYUr+B##G+Hi(A*C)D5V0Ic%'NhSHdD2kaE8
M,qQ[[aTMU(AP(rDS3m5"FGA[-2Mh""cMMek-lNSVmed`aNae2R2V)iiM0+pLq*K
YB$C$X[E!ZE*a-6Aj1Ri4ZfB16GYFF)L[qT52'L*(48,8,UYr(CGe$e#*C%8a6X#
f%LTYDSE@kqE5M4J8)ir`V,A8K-X`+(`DC-MVPTbUFmM)j'NYRL*jkZIP1I!c2b-
S2m$+dQ[)5&G0KR88hpNjTc%F9"Y[QEM&2#eCpFL02X+G6V2FXki"Bd8pcDa!a+H
%&SLAdNmkbX'UZrkB&*51e&bc#($L*fldbjCm8"fNCZ[)NSpHlE+dD(eLmAX8%[C
fUa8Q6M1TEj4%YY4-j[e`5pEBG52&@4C$U$8V,VH-QNFD((EUc[6%,qh5q#J-f+`
hd(L&Q`5j+ZD0'ekC[%[(mrYN$UR+J'V,$#2XYda"6IME-Aa`Ghd@G%Fd*r8-c6f
YUUNmfB-+C[PKk4HIp$NpDkRR)$5lPd'HjHVPTc4UN!")4A"B8[$(Ka[86PUIcrX
Q$F&1kqf4d6J,JXfhZYLE(HN86[d[)k*UCK&MmMkUVX$XH4T0RB``&p$hX,9ijM,
c&S9mj8d5"3QrH#C#59rI%46HRHh*b)PY9E`iNNlNl86@dbaifH+j-B9YG%aZlZm
L,E8$b5emTI%&F!Y135[A0BQl-BMV*9rJLperep[)XQC11'6&Z8If@9@SD,jq4iQ
RVDKT8QCXB6-TMU!km-LF@*XmY-qV6JM([ImF!*[""I+6A8M+ChjPVLf"dXeam#e
ifdGIfJ#RR$aNUq1[)&N9CmNd#"RM95dlqUB$MACPIrELPKNVM&Z*d5qaVGC2kBm
J6aHJNi32qIVBa0b!R-k$DS[M)FcJ[p6Ym%M4eZ@MfkjlI@pP+qB6*)HT#GlL,,4
raK8'qT!!+r)KIZ(4L"4C&EA&F3@kF(*6rENqF8&iXADV1eh2VppQiiH4%5*QH8&
Z5-4&X0@ST2N-NFF,VQ4'qK`Ubi"-KFfkGH[2JS@hUlHeFL-hTaZ3!2l((baXmf'
FIU0R4!MmbNB!#1-,X*Ifj8)0pV)S,[hZ'0V2KX4(A+`M$+%D4hFLBl`lYaIDX#L
!)X[m%dSpN!$SHLV0Bmqkk$6Y3'9NHhNY`q@EbS&`+9FbU6i9)c4B3qCbF239MK'
Zd`T1hP1eUebXr"6A9fNX-l1[hKIfYjac)MTiGeB4f`BKmlA-rrKV$1-XpApIa2N
N"C&TN!"f0EeFJUY@(Na2'fB4%f8P&ThAY3aZh!5m`HQElX5+5&-dm)BH[@Cm4`Q
-rrC0RfXbCN8GdfQ`IUeHdX2UImMcUG-YpjmGdUXVIc"qlYR)VY4@@(B#bd#I!FC
AX0d"(6#l40N`D3K5GMUcdRGJI`&d9l"Vr4d`j-[M-'rN!JXA"Ye2(6!qIFmD0r8
!KQMrI,SfVhX6RN(2'[`RFP1r0ILZ0B!VlEqal39p%ijQD&1kj'[MQ@2[mRANY@K
D*2"9(3XkP+acC-,I0q5Tiq`)1UJhHR,CSLM##r`hJI8c%a`,QH6QUCrEj-,erHQ
G`X,MrGr6Dh4p[Db5#q(N9&AeRB,##0H2-[1!Q'I9aTY[cT54'IqTr0C9"eXKe$G
1[95D[569F&IBMYQNFYM*0bIpq8A#mcH1rBpbIHVmMDRIYq55r15Tr-lS('Xhj1q
T5DVN`[ACBSl#0Tp3[alPX9rmX@6b+RR&-lEKqJ-0"`&,DVX8X9M(&$"Dre@jHaa
4,dfNHr,6+jl4J))qY1A)dYjQ-`!@3JlS#!Bh1Eh+8'4%eh90hZ6Yb0r[-*VK2bD
&'RM,Ke4P[`JrrVh[mQ1f)*2IB45*$G`H'-5+Ke5ajb`G8)KZmrVUqI$pZ0pXCUJ
CG$ecTD`!#[*'A@23428R2b8-,pdkIrR$EC*Z$1)HQF6ARZUc9pc'`e[J+cY36&k
S&92(-9h,G9IR*[5MV#',2[h`jI1)"U2`(JQmh65LBlZ["iUa@)q'm8d@hbq&lJ!
e1DN,l%NBH[J6BqlG*Qq*r%6j6K!NLjD&,cN3$)qj1S,*@fi&kEUCDT(#,VGkZ+e
EEZE1(YBBJ@D&"$l04Q@jiH(6KjdR-lM9!!`jC33)T&JQl$[1B)BIMc$Rh1q&cGj
1VBqaDr3Rf![i1YY1V6q9b0+N++([Gdl[YIlcG4A&G,-i#kUlLZe`lSCflQbf`XT
5F*Tc5#FB*U!``0G%j(Z-VcZIjYYpCjI85keXTS-Err$+9bhk9e81!JVdD1#9L4M
bCAFV33qG+khi$B`U3"q-0"$lLcZeKD!i(4Z1aTBC1(0XRQ!mJ&J#Vj2lrX6m#p!
Td*Gib"5Qp`@Hj4IYUjebUY-N15p*UI`5ITVZe6bmmGi3!h@Zed`"B0H3!$1klUY
6H2`B*'R$(9Sd[I$*IZNVhh6@I@2CbkffE!lNe`'L+-"SR,-3`$6q&88c*"&15Qm
mXrP*eJUR!6mIa[l0UY8!l&kp!rYS`C('5#Qc,`%VKVTfk%9S!6B8G%BlMb$*XF(
fLQ'$Ka-&#e"l2X%EVLdf,0pmCS-L%K1+a5I+#kH[5k02fTXcB6'Vi2#P*0&i)!q
#LJ1aG3amjR-""XpqrD-i6H*",6GkR@,pLmp('0j[Ir*V+Z1YTFhRT05l*KXKmba
9f*U*N8UU6r##9B&Bq#V"TK`Spi2dNV4T%mK2*IHdf4b&i[1PZmGkTM1UaKJrJB)
F"JF5L+)(8j`!XIGAKY+N)RHK3iZSmTlKYcr`hC&VkX,rrKTK2GF6)HV#ek[hGfE
9CBN6AQ[9%G$e'UV-5*rceQC0X2p''-+'Cr5hZ$8cJ1!Bi+R5MRP(#UhEM9a6HeB
2jZU$Ad*XdL1FPZEY8[PMke'XUEl0qcfV+S6kB"Nl[*qQL2FaSZ[8HLRU+j3id#(
A%bC-C!BhDe%cA4Yh20@F$*kJlpU%2ZVE(FMV%ebSj*!!#39F1M)aSZ%K'D,Daj,
iUJBDc+@V$")CKA,4`Q'U6#'1bCUF)NH#pfS"pNL14lV'33eJB)FPSM1+l[2[#PR
kVG@-Sr"#m6cN,ej,MF+P(djR5Ge@A-GLZB5a3(CreNd&+(NKL$m,U*Dq-!"HX-%
Jmr,+X`c6JSAFeUCMEPC(41b0MI"$VRQ5BJM9M[#%&2q5''&'49LYbbCBEMK0!X!
ad1dJ'&+M1Y)e-`6`iX`Hjp@Kij(iX9fc5e@T`0G3bLCCJ#Q!P4PbCfHMZXR(T09
m'c0B58p%c@c61'`JN4+GKH0DLdPDUkYDk4C%q@8c-h1V0Z1I&R"q[V$JU,E%Qm5
L[CZY'DA`@(1#PXFPX5BU(UHBf%D+2LL9!i5EiC8VqDfQLPEI62Aq"MLG+a5XKch
c"CYSeM9@fH@&(HSpH9Pr`M4+PJp)-Mceh2-lad$ekQ6B9Xh)jF2pqSl"e0dl)BX
dq*&dYYdqDIAKbZZhb1ZT4)H,8U`ebrr&1!m@SZ@`Y&$5e)8QBh+6TA,r5VLX$H$
59HmD(CrGhcQ2@bB'cmaaEQ&lTXX6Dm30kE1PP"SBAKL5U*bjZ*IZFUV4`@lajGh
80V26)d!P#fUHJ69m2beb!CVc0`"Pei04FQSPQ@+A2U9K3pZ&Z)@0$GI@$$35YZE
)BpV,fMLHiE$XL!*$I)HRde[Yk3A8ZiP8CS'K'STi*-Y@C6"BJ4Nij-AFA,XJ)`+
q4RIQ$C!!Q(2hfc#V-G4h5D2p)aSj24LEZiaCfbb'rG5)T)-bBc1q6R56aYJEY9@
r@ip$V9`)MqPfbSqSb#JJHe1NCULk6j!!k"-$U6bZTH"Q")hA-"&NXbHX3&q@(9V
h#MXL0VJFbh5"'IV35Vm3V'6d8cr'E*3il)CVPAcd`TeGNQY))UXadKAeMpJGaFP
e@Uc)F(!J(XL2I"Y[*N,XXPpkp1NSaqCT9"X!SXb0%9*Ya1Ih+kRb62Xf#(a#c,9
i"0C'&p(@3c$0MJS`JIaKmlNqQB0hheMI`C!!l5`,9A-N3!m,4Rl8h4X"G5`a%j!
!9821BM'YGM*X5qh"A4'+F$KaMQ+c--`Ud9C3A(UYfq6a6TB!IFTK5U5e53!iVX#
8EKp%#aR$Rb"`"XF!H(eSZQIXALQ-AA&,ZGI-,kp+KddCHTNfaq3M`j2Fi$HCrI6
A+$LKCN-kBQBR3(*f3&KQ+J4"PX*"Fi8J660VfTV#m5@mIF4cql5I'2eV('hrUl8
Cr4[m9q@k9Cpi"iFDP+X&))J8T6F-M[P*+hB``)GVJ#!$dGm"(eXM)d)ZS2IAbbN
8`mrCp06[1EJ@@)jc9ea4QAIcVlN-rN#@*1Ph,9"5V(08ZV$K,Nj'Cj0ImGVJ$4p
AUTGCGRi4q2RFK`E#3NYEE3cjDpfP6aFaIbL"Q-`QbS0J85YhhmN`mT@SpD$#12K
8kR53!2ASM'KK-lf"6b@+(hLN*C-Q6TYPrBmEIIlC&6[6[Xm"-K-b6lHD1TpTL(G
CJq-8-b$f,&,KlAABJdRBK3A5JPI*mS')L645idm1hNlGeVC*8@,GNe`@(Ul!JXE
520I$V1N+d##P3[4L-p%mmK,GiMSTcb`Y,@YmK5AAPFeBUVbA$5BKlY2'%Kf"I%T
12,Dmpa`C,Ib([l9GL0#,FKVVd5eNDC,ErN`r20ISL+mPSL#bk`lR,qj(4IN(qX0
6fL-"&CIdhek4bAVB2)LcR80Xd!6EZ'-cAK94!4dB6(F@HRRcpUXB[%i8mE(rq!M
m%FMTZCQECdkU[Mh@3R)3%J!fJqhmr90YMh8d1+P2`fB%6lLF&e+3!)'2QL1kNHi
(Qj4riHVm@2bUNX2c2ISYH84"bXFAfYcbh`3V8eQ5D5V25J"G`(1cKdUD1K$$'IS
jV@N(S+3e0D9RfMbfrETjlCG)fIS33&lN[U'acp-"&f,+!DG8GjbY(3k*3T3*kB%
0Ja6cSj,HC8(N+*(TXbhG4DHeE!(bA'BI"mD'@)H2UCN[Th48Sp9B-2!pVR3Hi98
PJ05`c`$rGlbcL`1[D,C4'R%8q6D!(QLBdEBD[lJbKl,VYea[)4eFXISZ-VR5XAq
D[2%DcKDkeQdDDqkk4T,m36)ShaNF$f"q(e[#BFfYipdcm5-@%-(pjk"!X$qq+#*
!r%M8S)81De0k!B[R2E`XXFr0X!b@r+#km@`$)`+rLmU861jaVCCh4bbql06@@T!
!5)B![Q+k'0QH@AaR[E1643-AVk4k(F6#lKPT3l`-q4RZ-0pIYrTUpp4K&6I-q-S
#(8B0iIJZA4m9H#@iBTJlNEf,%CB!)h3l`)SDNBEK3N"'C*6R$6iKqbYNV[,%,NK
2Y',6hBkFCQ&f8,Z)e@%@+Aq-1mY`(DBLF!5JKLfCL5RMd["1#C(VZalr!P*lNj1
&85PkA13Jl'Mm6b13!24B@``C25ifA&A3kF#eZZVC-ff$H5Q8Z)HP&e#9i%-0E"e
Y-hYajD0'20l`ic9i'[cQ&N(8d+kRaN3r$eDeYhBHKfc8hTX6SD"eGpRYT2!q&Z$
$*ZbRbDPMm"QQ[Sa,BSjaXf%jaSe5$#BJkjM[pB&NGFp%M[6+-6m[GX$ZaB(dFea
&4NEh`"ll5RZcLkXm9CER1BRXNDrZBKJ,T#rmIYr#(E+Q!M,QDRSV9b)&!JFjNJe
+BY$`1E'EbX0X89dEMl'68M5I35rX&B,80daTCIYYR'#180r+lp9IAhY6"Vi`A"a
RDmLlGhfNrUqKN!#F&T-!MQL6F#96,i%RI%44bC0VGj*2DPUR"$mB)jCe4-(3i@0
Y2)Ia13%T"1pJ0#Nk8$CmP3"3EeYiQMlYap"cF&5-4Sk["aY%!FIp3!BK[fB8BB`
!CK%iBSRcY6NkEF48%`YZPK39CULIfa9qm,F6VJQ25,9i6Q[Hm)cmaXkY!4XFHc$
&3C!!@`i3RSJADMLfGLP`NL[*bYbU!0&r'Ui5F)jBDd*QhfeGNqcFNF9VZ*PKp4S
&k%21iSJHNh-&kVNJi-Q(bLPRqi,0+kpbG[cY6Z9-Khr0me1*-0jCeF0,qEJfJiI
IPYB`5f#lL%#C[52aN9m3X%`EZ#)+UcDC[ZQM-1qY%"%4f3'JfI&qaS0h5[k9b+j
i%(iCGe+Q1!USKS$Q)`GLJEBV4K3'ZYFC!bYm5aD9Q9%d2L0(Uc1mm6C5P!0lcdZ
8lMM1cRkDEV"Cf(,L`m8k0,fPRfQr2*),PbbCB*Z@K"CeMT8LaXLi4HX8PMaE3bd
1PHRd)Bj"F,1k6d"blQd[DBb+E40)J,ck,hrh`8%D46,0b&Ur!"$i)fhD*iYB9lL
6SNq&bjf&p@)R1*TdaG#JZPbrrGKpk4(a1"KqBmj@kl85ER%,p3(LS,[C-hbXAbr
0C%ZQH6LJ&!a1-(Ui(eBL6Nhlc#(3MXH+5#`(!XIQbG$e13A$LA&*1I"Lq"jJZDF
B`J9@#d$4,G)F3@TI"3V-l,`pbTRABk+Tp(aEhq''mLMT`8EDVcqZ`a`qj5pe&%[
F"eZ,"0P5(cA6+[K59ifm"XV8@5`HBR*mX48HBdHiBDPFb)ceTX60CdQ5K5Di,(!
jHIVKk58Ga9eRZ5JJ&HA)'`r#,cFL$5l)1qJDkc#&31IMQhfVN!!+Bd!9MhCiFm(
pMK[E1QP40FXK1JCYe6)$)d0'[mqP`meLEYT#HC!!p383JRL!T5C1j!!I!Nm2#C(
ePDJFqpP*MkVVL8jU-q&l`@i6N!#*N!$#"KMrSeb+EYRTQ"I01!CHNCi,Y%4E@[K
P!3&0FX0hpDNYi$LK#d(QpG6*Te3%,$EHe'Ek(&%'58peClG5JIKiVCV(8%ZXU+P
iZNbHT58Akj8Y`+ZeIL1Y`fI5cE2A+r19)F!qS(A46+QMTV&&Z)$$mBqQY*Q9QHf
ZT5+"b5ePcb[!SBcQ`AJp'12Ue,[HBidmQ$c)PbAjAE'KKP$@HZ-mS&*FeBXm2&l
qQ5j@S)Tl[LjbR'G"&Q(T`HHjc!!&aEF$ScECc%@hd)q+FB92NqAX$3c5RJpN"[i
X+3&$*3@ANXIrJKS[P19EYlVTPir#6c5H"cj1hi96Pif2@(9b(93fSJ3J'8Q6*I`
Rb[*50USBLVM2ZBl+Bp#U(&0jCE[[6)D6Ka%qMC404qD3!#iQ'MRp!)B51@,Tji`
d1F0LIUNH&&"I&k+i-*hVlS*)8$KCHkkT6[RhD@aSI@%cZYS96E49iFC1`VM(ZcG
Da1Ip1#`Hpp6U6AY,-6Y1JBTrlpND[U#,[GRVZrZ0'SqGVq!-1miD289"q'Cc5-f
828a,J92X3KJi2Q'@j@)ik9QiXLY@XA`9"kF6'0eikJ9'f!3X%hiB!HKlFjlIm'H
dp[DK0H&RI"Xj)irJfi""`rLa0V0E9TM2NBaU1VZbM*JkNE*UqlZflH[lQN#TcIE
P%$!S-@RVCRZ!B)L3!*5#`-#rPkG4CJ+h2Q'X&#KG+I!bCK-3G+T4CK0km4VH*NZ
HGH[+h+jbLI03!k9I$A'2,krpjEJBjpLpaeGr,Sdd$P`q`*5SAM4PM*1hHFBT&qj
Xa%PTE-!PklZPZ)93cdaMh9Hc$Q'e2aaR60JL4"#JF5DMfTQD@b"EM-C24PN[VNc
LEmp$J)[G'2i3Fke6#a1L&NL%*Y,T&ihZINj5'0PeG3KBr@,#[@E$H63*[hjZ1pS
YGbk4D0YP4AekI@5(`a%"aC!!qHGP[-"`&E['&EFY[IFpRA6,1pe6KMQ[US"h(N'
F9GAK2#[(m[!Y2K`l,@*JBKQGIKP80NPb'8R0Y,)XZEMeYU+9bZ*D121+L(k"BKS
Dd%fFJr6$iP3'5IGBk4&"@TB%1lQ8Bm5"DhhfU0AfjpLXZ15[S15$rjUfpd#Xfi*
Uh9ApdH#Jf5R(*ZXfG+adfaT9VCrE!Y&(l9qIBPha$`Mdcl0@Ecf[6T9#e3(1E05
a+PPMJSi2Fd9Nmb9eNMIhLEX)*%K[r-djkT5R@G"MUDb3!"2(TI6I4ZbHTa'@T0)
TQE3"Yfpae,K2&J*qBl*LV$J`Uac'I9#pkQp[6dYl5l9S"fUPhQHN``*S#pTPb6L
QeD&c'Z",U@A$SAEG4B1Z#3(%fX-91,JlS2prc+B8P%pdZaZ6+iT!Q6qR6h9&Be2
QESR*Y!bJZDFM40a&NKURje+mU@I1-8mH&%HbMC+IMfpr*rNLT0+3!!4#KfH`$hd
Le(9p"k(&d,PZ$iET@@)%66*,0[E!a59LjmfNAd5Jl)ji'900hcpFjr8F-6bq(`m
iS-*bG-@Ff*qGL86(2H`H)3IckRM&GA[j'&#Y6DHKF+V8(h#UIZUN0`"HiLS*I&E
d`L-F+Mp"4B2CVP,0CI#-TU3HHrfVK5rDLb3AUmIZ$"TNUfZ)0j)U1eb19ija-K5
9`,-mrC4*!(mGQMbA4"6jRI'E0D6Pki%E"[)ZKCV(A&3(8Vq053"ibqDEP69,8'8
,me[HfH#kP,8NZc4G"*+DL60&3S(EVebS!kGTHLGZk%X"1XEY`c9rQ"LULN%6c1m
mH#r4I%b%1+cafadj[q9cF[#VjDNAiS[10jT9TCq*rY58mKMVIpCb#3Yh)1)k'-R
&8JcpDCA3lTCF38RqC'@rZRHIrbhE@G*df3lhM$NZfmCLJ[N@M%FBk3IBU*'G'3c
P'HEdTU4GMHAb%,Ea8aSlD`THaK`aT3&$dpSrjlV3IDc!22"mC*2c,`f%6L*cl,f
Q5ZUcMB%5Z4p`T)&9AX(!0GK(NXQHed&CG)jjZYDAkU&iY"BEZFlLrbj!ESDJI#T
e)H8[3JpSMi$QY3Fr5G,ZYD'(Y4h*eBY$Ck2CD&294BZ03DRRmq08k"q1J"'cf!*
UpfKh1)*jN!!5C$e&"bh!Hp*pSIpYEpq)*fCeqrAkE$4mBd'Tk4BY)4h`PKNrTL5
llX(2r9hE*NKEQ5H0kpU-&phP#-XfNSJ"5mD18Q`q#YapR(QBa+pSaN0bUbei,mU
ZGf(rkJBT#T&c0B'l[#[[YGR2E+`Ch&'[dI8-63l6C[QF*q!)[S,qiia8"mh&16(
5jS*p0aKqAdF!XFH)bCEbral35CkXUTp,I-m%PUHP2qT`(0MD[UAqKp1Gh$3K30J
4&DF!hMF3aAZdR"bR0"Bf,ea%kfB[lZf,SD+lC+CRr,6,2#YS"PJ&NMhMhe3j*Kk
dr$lQ-ZqbSEY"@"QZDe`2AXFG8SGhD%6S!fNYF!3FVp5@Y6!,TNidf)Y6LX8`A+c
#0Im"5pfG5jS,HCAb18D25MfPD9DrFM8,%bNmUmkZcLINq"G%JLjGM0jeH2VpZm#
D@"**-UZ58a!eXENUb6hV2BV'd1Cm($,-I['2rNQ$%6r(GQi46rGQ*ifA142kfSG
E(-l"q41e9[lHD5ZKVB"m+@UD%aGCr[rC-N'k+"@9($pJb'$rVAIQS)%CVi6c)kY
h&hJSaf(+GB%XD8$#iYHP-TDAbJ6KQYHKAi1)$HHrqINdSh+B[(h(eBM2LDV$VX"
['lQ08db&GlYhV36"&f"(8Jh$k9*G*Q91FV`CiNe-XMLUX-0cB$RX1mkCC1'%J6K
P8j`*,4V@j`CA@bbYAAr+dLd91'*PMaTEUGRr``!AB1ipY95A5dFjC@MEGmA,#r&
Pap@GkYq&HLMiC1kH4jEkr8T4Mm5-V3UFUEMTDMhETjICaX+p0@VhlEKZ3ej2BXY
$Jr4&IQ[N[i9$9%eKa`j#fDEN,92fSf%P'1MqY)-3%4$LrmX6&eMY05#Q-4!J%,S
dZ0el3RSjaFJ8VB1U8FB"-MTf!FNaHZmLTN"phb6%f$UV2fA"dC6aqcEFr1hJ81J
X@Gbl086*YDbNFSIVTkT,05!fh2jV+Qi4dL+"ljK`R@TE*bRGp+M1Rkfq5lcNIA2
)Q"mH))p*A6QrdUAkjdNjbDNGQBY@&"'[T+QlhHq)3I#2hC9[(QDaEk2bYrJDq"3
A5%@qKaJR,Jdf+fD+ND8(mp)k,"T`[M(hKlN&@GZiEi,QhfADbH[R'P+8EHpa@e(
8fZpZCi&KCFb'@h$(d`@eH"6DLcT0$f+'+djRUY#2*(&ERHR$br[H&VG[6K"4XH5
$UcU4[mS*U4EGDj-2e*md@K#j85(T&G0C%`Ye)ESm!8Pd@lf3!!3ZAELjGKQU[Sl
JmHNS(#AEK+F6Kp4dXLYm"8TqpAI6A`),peBic(PJXV)U+[!9LplC5ECTR#r'"k9
d5j!!+N'4kJU2b@p-r[HP$XU5rf)"f!*i`a9V9c#`Gc62pp(3QkF$!XiPYI2(N3,
q30+Mb[M&XKQ9ZD)hkaimYAah%),E&a6*3aHrfl9+pm9-4CSK*lC$4Dp*&f6iaJl
m9e4$aNM+ZTGQ!Yq4[N3$YG(32(biCYQlr4rG@Gfh!45rE&!bVUpGR9@r`D0ph6r
qkDke!H3B6NV!0hC5MS1k2q[DRY&-piJ#kHJd-Mmb&"PLlC+00aEZcL,0jNbqr(P
60J4,GC2FX#Dfjk(fAqQ(rM,fIBFJ50rGc1cQrG$m%)2EQ6F&IICqFQNQ4CpVXIf
EY%HX65&mBHTi2K,NaEdN+1,A,-N(U()RQl4!Y[D@+3XA!mF'SBY6mHBBY$Ap,N1
-l#3-`lmIE2(bZCV[V#pa+hY$UESf(`k9jZl!33i-dK&F[dqkj,6j0PZJ@klPAiA
1A8ipZIESI8hT-@6%e,1Vfq52i&[pFbG199D,QLHQCj+m[U&JfT0"R2J%m)a05*T
deVBSjdUAEf'Ui"q([Y8IiYaa@MB%2cHrQU01HF08pJcm'FdR`$f(8l5Z+eQi3@a
JG6$+cDXHeEZF0FqbFfH&8Ml%YLl4pMjl'NL3!(f6HjUKiBeEPR"+BPU1Zr"CK+k
N2"UPT@ClFQ$r@H4XibM)TLlkS0E[!K#Aki81j+PCP"@mLR@*RD[3laK+!p&@,qL
pJM$GmhcA@X4(!NVmp%,dNNJh)jaj&)'&f[M1SFJL#d@H(XTHR(+G0dErXT0Z,CH
m3dUF9f09D2&NL&"@,hY)'KMjY$Gqik`h&431[ZU14%)B3b',p6&V6!i""3`!4V'
TFX!UhQQDl)0ZCqa'XZEIMBM9&Z')"dH05HaLlXjSD3,CF0$b,2a`dDiTDFVA[pi
j#ili-#-9I32DREqhhk$M#iTXQ3lC3(ECG-D+'+IJahCLYpT'DClUFb9Ii,!K0FK
(0[k*%JGXT+p5Amk+*2Gah)VpGLXBh3&UE%!k&fjk-4a@`b+T5'k82BP941$@f4$
TD8e6VE!d21DG9K3!%"*NA@NJI+mNL*B)B2DpC%SISc%#9jqi)GY"2+[0RHT1V9,
NNrR+E`,*LD%D909+%XaUd0P[Dkr6m,L@FD#@dbrjJF194K98"#m6FE"Bla03fR8
QUGjFf2[4rlJI&2,$,Zlh(rB)d%2p+ZlY$GFlp6A$aBrVFR4BZIKd&NhADBAjG%p
q!Z'CB@-!'GA9B-Z&$5hlDL9frE&UlpI-c4+kELcDd%16I1GMeFjCe)*FN!"R-jS
`9k+FQpAdqIRRhQpNMe-Q*@0)+bc8$l+FGK4$$&NXYjc9CcLp#h6C5D6p[,Ec-3*
GQVD5e+-kI+(,RfU%TIb1RC,`03ALTXb2#GYm"4[[4YTf5MQ%Xp@#G2M+PEF9(Qf
@+BZhLlE(GJR'23"hdSYm*dJ+F,kA1b19eSe`E%LK`m1VeYk[a@h"-K3q$B!`MqN
C&),+DLJ86XqdaCH!QVhRRrGACaj)3Ab805f6lX*,"-Bk*fm5+lECj@PUp,GGFGE
6k0[-iYQAfQcZ`@!lE(FkT*f5U3i++C9Z81(ZmeI+C+i0FGfrL+LVPY$5V"Y'LZH
d@C[jJfbif8NLJD'2$1SDS*j'S*ie1jC2kGEEqf%riBh9!eRZ@2[HdrI%1SerZ8U
BQ-'i)M`lHd&Jrf-01JH'@ElUF#BRZP9%%"#8@PCjQk,!T6qaXYFm')`De9Z2XJ!
jkCQZhEAC,me"2*E4bHm(D,hkcrY'd*iR0`apr(Z)`2#k@ha2E$S`&@G[JcK,Q-j
3c1R-*bGTqjac'h'bX+J8hIje*belZ84eeGj#4qZ4UJ`@G&e-iaQNr8LpP4r@m%V
'5pm+1a$(6QE0%Fp0aiK#8(YH2+bBU`F360HdpJ`h&UrAac3k#DRj3h[A`KEMc&h
5'RJ[(+YHi#`YF[`K%l2p+MG"ir0H'd`kE4pL@!mN&Yfji,b2-c8i,[GGBIXAN[r
)4TZ$M0al,L`MZJ0aZTQR%bC5elV&,UZUKLdX,NBHhSMT"3$$4D%PkP!Ki2D6C0`
@9[VT[S%4BLebc@kfRJb'FL!qINfEZa5GL,qb'J`(I3brf+f@ZBX%UhMB8"8ShV@
8@H+Fp5T`'il0hkj+jl$NSbr8"KG@8NY2UpKUR[Gb-2U+0qMMFD"L*I3T-q1[@6a
pfC*hI@@S&+$$S3bEjpQpTTVLTG2hr9fSJC!!CDYmpMUXHi#HcZ5ACA&*XqcYJMi
*%8FIA*RT'VDH4Tj2mPNM6CY2T[ERP5Ee3NYVI'TS5CDr1V#pV4KE*$CY+FKG+$"
BTbd'qJA5c)Ip5-@9`kXBZXrIQc*K$,+Mj1(mSmIR"D5U*k8NSF3TEX#%0D8Ib38
X2J!6d'8*fDRlPr[h[4*d12#k`1#D&ZT-bPaf6$TGDTHlAIQ`5)Qirq-S!(MSR6L
H19'XG1P9Z)"j4i82NAeG,EE&AIS!3G5BKFFH1)ea$*rqKId&RRLQ41[!J'8T`f(
&ceQIF(BG+FVrACBCjACqTK`SFm02PH%T[YS*@q')lR1%&e52eaMpU@Y&iJ648TV
jcJY`i3E*hRZaSX#'G#KmAB1-Uk[V@!pZNH*,40,fp9Y6QiDq+@2mSUL)VcII"L4
!BAUU#(+RAbSY2r3R-U%q++ETd$f&(YVlE(Dk%YmLcbLYY[8q1b%032Be'-q03)K
iq%#,(qTc[Y441XB4X-4+YB6c0KjQTp5$i(eeTaDFUdFh2Np5D0T,p@IhL3fjHmm
31rlXIU#3!+m06qAG++A!l,58f,eHlZM*Vm1T%jM615rX6#c2dR6)4k@+R5@eQ+8
&GQC63REM'ZRJmX&0GZ05@mN%C3B0LMNaPe"r2+e%aUEP)G1f02RVr3)`3JDZh3m
2AVUZFCPBRrc9Z1I9Km-eXHi"Z1acHL&-,L'c$N,h!(3CA$pQ5pERcJ3`A82*ji4
(IPcSfp(eP)NFPQC&aiZZb(mXhM`,9T6$alD,CDQ$&[JPb&cUk$&UXX93rN'SEX"
'Ejc5BJN9dZAXH04S9PqNjK%HG2%"h-Q"MT!!r@@1'kPajJD2Y-R$GQ3@qQMXE2V
5HHKA"*!!Ecm#``1THaSTFN85Rf6eB'c$mAk@YhGLpjmIdE0$bZ5L,TRY*YhdQ4R
'4Q#rBD2UNESMaN$-e4bc"q8%p"33)LT3`&kE5ddLNCDSdI9R@-+XLi"mQY#d6pm
IVFPB!A`%ZGhD!6jTq4cbV,(bQXrGDQUP4XNbmXb*,VkLUbE$`'3KfmJ4!Tp#Zp5
'E5KacB4$P2JRf'p"$S2h0PP4U-"`NfHAb*!!ARTLmC%He'M+YkMML`+9SX4FC*k
"'q'cNr-8[Kc['[,SAfjkEcG+"$S84!)Z3N3%5X63-VF`9Vp4Mi0Q"b6fTND`B1N
bJQB(R*c,DI#I81)ZcG89"@"cN!$lH0ARciZ2fdD'NZ21G"06$4BQ1$6S8,hIjeI
E8-p8eb8[$RC3Y3l+B+Yia,+[N@'Faj!!S[T3l&-18(ZJ&9P(kP48S-9J(BU!4*K
@-l$I-f*ZrEUJ'0!S"da(ELelH*A6KQU`&GUVbD`+XhfKPDE*[XIkAmHJjKeKQ56
4f,[,6`85-K+-YYXDS)&H0*CYC0f-4iMSdbE%e(AVL1&rFJcd!meVeP,0DMhrj4d
I1be(2cKc-GRGk[3HY''j@$!qY`QH2HIdHG%fRTURlB#,KV&*IX(a1M)*22Ca,NA
A0U*f,)f01jUrpXN[r1p[3R')pP0Al9QcYkSZk#cE$'!m3X$d'hXhMVU`HL$"`M,
bAr9'("AI8Z5--N#h3Lfe`9#Pj6ceR([plZR)%jilcHQQ5AfVL-e%T#0Tel$E8%Z
6Me0c`kGFfLVEq,[eS$eQfbUJbD3Qm3#8,Rf5'lN)VSd+H9fA*%N3,ce[$Ql,2fp
YpClAUBF1-LIq%L)&CH"A$J#YHhdHVcd(GGq!BM*dX%dl62-HeVNaiV"6r24hrP1
T('AU)`E+[pM4C5r1CBI+IAMpm`"R5B[EiU35q#3@T`&'+a`3VQIpMpi(3Y!l*B$
8M[TCf2eGT@MEJHhREmY#dTN)%UA64b88r8*d*&dk5VH@!0Kb-c"(0G+)1J,Ji*h
J9K5-DTK)lTar,FP$THf145X@CdY1Z0hC$SB54XK"GD#f4F`j&2A33+EmK+VIrri
AcYUc'IBNU$!IklFQ64df6a0K(q6LEI5(1%m'qD8&-pLM96F[m8,PN3Pr$-qA-L3
+3*f&3h!FX0+9Q'HcB-N,d0[KL[[B-PQ*f!CD&8qId0K2QeX#8rH`328&-#`bh+B
Tq32Qe-S!()"F%FKIS%d[B95i(Qa,B[%3"$!Uh4,aUZl[@Jq8q%#UZ3a1CH2DCD3
Y23V"QFBJ11`lRbX("1,bJdhEVpD03(q3!(Y8Qq`0lp(PKCQJEq6-1rmPI4i4&#'
Hl%CT`rXlb#j'QZ4b`#RiER'13!PNM-'[G"2pYD)MShZ1D6&2qm4JZj'F$e#0,KI
AI9KbDj%IBVCEVL#Jc3qlZB@Uh(DMfkV(NCmdAE*a$U'2-'M`)BDeLk$GL6FAX'C
rlS6G0hd2CJbXjHXDM1YNLDiAL9NP(fQC3S63*#bKrSamc(cN2@q85VX`+0lNpb,
6-Te8eZ8[Q!@6*kA$ZfJR(a%`CJ095[D[ad(I([3RQmS,Y2$i(JGjQK)%)rcf*lV
'&E%*N4D$LPAhEFAPZF#-(89B&iT&aheQdYH$'J,i'2j@+$0%JFNaJ4U#GMrNedR
VaL&0l3h-#-(IUl+dk[6T)5db%DT0dA3%ZSE6$IUIUQ[2*$bVch6j38c1@XQ6dK5
bKkp@kG&U*TPpNp4*8ZF'lB%KJa6,[k[+qc@pNQA@SflU5eqAfjGcZUX*K'cpMTj
M83!P,LL2qYJljihIQ3`[Fp561!ceI4YD5U,CSJqaFj!!P0Ak$rCGV8eF8&24@8h
M)$0m8DL!R+`[i"b3!'d"iEL2"MY9!ARXF%@bp2mj`L*XUhY4P@i@'R"%#,T+0[2
j63#3!0KZcA%F6e6!3qZ(5fYTMUpTfd%FrIBUB&5G-d-0(8R$,4ePeFd65L8ddih
mS*))Fa"q8bF*ql-[b#PV13Z%B(rc$UaJ&RV2%6))BVm)TIa9[e8%89dV%$q[6d)
Z"`h,Z9IX*ZkB(%EPr@RGj5T%!Y00#'TZBihjEd#'4feeI2ZB#bh,DX)KCpBYmqd
,)X4[HYhbH8PQ4ljh`L%YE3rbMm#IMSkN!Vm%*-#SjFLhHek@#,pXZlSQVMT$,R9
6H0jD9k"Aj[!``bFh8NMC(1qH9U,dcZ`EP#b[M,[VI#kXD%f3!",1rjUhXpmceNQ
eZIQVX)H%-QlmKmJ[D+4MQ,(efXZDKi8E,rU6-@I0J`%QX2IpefK)Kb0iTK96X(*
qfSE#BESqS!Xk(H41&2M0@MV%+RJa"j2MVZVLm20UFf"d#j`Yii91ZqTLGrY1jFh
bi*E*ReKfDA,N%1&S-&kTNVp%1eHH-d&ci6-bjj`i2*I`+EIf6@Q!5J%k,aV@NMk
3!19p+eIfII"Rj[lcIr)k#fm914S11K,@N`$KA"#Y[8kB!A30*fPX0,2TYP#aqBH
1YLqN9#TAmB8Qbki+AZ&TQ'K-ZV8KHU,d&Y$TeK0[`iVUF6qcY#)(Ie!4khiLEM#
e`9APe"+Lq5F$Di&FIfh6P+HfDHjA6STKEX"SN!"[[ZVBG4JbdZ%U)3V!@%9P3qr
CN!"RQ[XGK5P)hLECemc+KU`++FT-hYCPTY6)mF&0Uh&6c6R*SEUc,l0jQESKI3Y
KZQCb8'1#qcAaE#U3!(Q4TN'QS$Vd!L[)T)R-pFl[a`5+CZ&STE48MN0hK%S+p"i
H$S9MP2,r9Z$D1SbPCHZfU3iVcXr+kkS4qXS8b)r02rUipG)DNN8e1-FCrL"qMQ*
fE01lRAa(k,M-5jaN60DTQFa4A$51ISL9%QpZAi#J#-*BEIFS+h1Pm`lLKjMdKjl
'3@r-diI"h"e3XM6ZIdY(IA-+*"&l'md+8f2iQ3RR3E,)3MIXXef`CZ*L89$(d$(
pG,&C1eJ9#m,K4,9(Dm['@N6B5aAjh&mpE,-06SL%chGDD,k6%DG5cY"6BK@pKIU
Rq-kriY6LF9%AVPUfT"m'l@%c`pF(U"c'ZI$p4VqS)9I1p'Ip#Uc@+m,i[$'I*fl
q,JaI,%d(b4!)@#XA')l3C)ef5Rqck@N*d2QVYk[VA$QXBX8JG0TLI%N4JA90qdS
lJl8D#!!2K@"2*maS`2[#q'FZd%S4ZTRQl')0XEaqT#NHB2G5A)TijG8NKh8`R31
!+[H5V4D[TTSd4fjJ-U,e13*j4KB$4!66b'c$5$1dISHJKCPp)-CH*d![*$6Vi4B
Ji34+2-@#IBkH2)!SM!Q@e8FLB)d%i68MbrcT4)#*BTDGCU-2N!#ZG!V0laT(&2(
Ji(El&G(K#dZ@Ji&Tqi&KAe0GddX!A,aQkI9EFi2T5"XB5)p29qcTM5f#D&m[f"X
0B6G1TT+0q5Tq+X`bXN5(l!)C*#ECA%Y&RjT'!8HqqbABpiq&TJ'Up9jc9cP%I@!
YFl*LB*Ke+hHG@#ad25LK&1fjYPb3!(ET`*Vr)LVjZ![lKMh%@!SU##D'kX,Jlq%
-+QT(ibp6MYC8S-E+lU'YEp3'0!KSq'pID0K1FZD9!5aB9XA%@`DDRqTLmDP1#rq
TE8I&!Pd+p'4LLG`#"4QpA8QH-kL4+H,rcmZ6"FQZ!kqpp!G$1DLB0Xfp&XEeflR
J#D-XXd)XBB4I,e5eULM#h"%10*0,+G*L!8%[IS0`3(02T1f$UdmBfXP!hEbaPZ`
%3%$AScBLk[($03kK"S9hIQ(qN6"`jKfb8#4F+2-*0$fGDi2jSNPL[k+qZGf+QQ9
&--JL'YbVh6VA,LCdDheY+fbqX-dT%!`jk"9EfG`mD%6l&F0e'([RHXd6lZ,V*9H
UV8LkJ)S#Cc%JPREr0db+8Ea&!&%q[`@$l5Vr##k[qUX"+4epclPC5hZ(i*[h+@,
h8Z"1'Z8P12R2+,TB(6IU0&dL(BS[Q)dIY#iAPrMC`G&[8&62hc9KjSGci5cmU%M
B[df)Z5'B&F'(`JjQZ"6-)kI@VJDI(9)(iTmYKRm("[l(@HKQ`[BMRLlHB4)6qSF
hQ+!U@J$9d[6Hk8acBrEm2SKDS3Kp+hGpX##k&rG,'XQ494PD1B,K%@e-F3Dh`3a
$l$`C[@#9K@8aA9r'330AVA[hGe#BkbLfN9Lb-TYNd3Bc9'8X"'r`"IFRr1bP`KB
N$m'-RIH)[B*XmICK1K!eBTrS%pQ!'GZD(NL5djP6+FBB,if)3(BHa0QM!RT(FVD
pei&dSki#,XVFQ,B("'b6$)MFNG[FR,HVpJdb&,N0*Hphfb'6+!dY5mD6C,Ib@IN
5`%q5,hU-&[EfD9U2+U$0crQ3!0*(f+5b[1irbRGkNDZ#l5Ne`5[2MMcUIL9MfZa
(8P$JY5qGPC6deEe2ZEIAB9Vhr-j(5iRF*T!!bpc!8fQ'T%#m-`Z4kNe1LHr%hkb
mFrRCTPKB9V@2+(NrI$QFrb'MRr)J3d"'C6$dAi20+H+M-+Vb89q69F62NAL`$G`
fbAq"fM*96GQaA5hXlcPK0PAd#M2q1I2S!&XEmfr*"3UdKCicXC3Yf5G9pakX"bI
)`8Yfi'8*%[kTcNUd(%N@Yp3DVd6d(6!pBkJljTdQRYR4iEbG(RYY6Y6BphfiV'M
33ENG6k5Dmb-2+Q!LYc'[#fNYfeZqVh9l'[DdIPYSH3'ZYZS*FB9mYRY-83b-8HE
j$&D`IlDblR)@lpfAUF1$!E#SlAZlZPP+lDSV(cFmV2p4N8$d!AH[PYN6A"3k3Ym
ld@3(#NpY*E1RdYEE&NcK3Di$fGIKjNN#U)ZE&6#Uepqp(%M'K1h2pXXDA`4Y`[D
X@`k!q9YTBi@PMKe,(qThb'1#k0SBZi0GZcHI02B"plqe'HXHGpSQbqecDa&plhH
U%"N0**Crf6IdrFSfFA)I')I0CQcAY64jj63'G6lA6rDEPA(60QKb9*YDHeqYJ(I
G$fiMXkS9Am&ki6%ACBl3GYE*IQmD'Y+5X1EaLHHMfQpc0@E#JG+X`8B3,DYBF`4
mFaAiS6`a@UTc(5a01dH[Ue"`MQ+2d*3p)PqQ-pHEE)p1cTm304TV%mM@B-Q5VE5
NL,p#CG!5+4d8ib#r4Bf*h6hLqV'Aml'I'S!I1S4*k0+J5&k"d3dh[(pP4qSmH62
I,l"DZ'+!XM'f!kfh[qd-%$9F1%YIA')p0#X-krY1#NCKm"a`G0Q&N!$@N!#Pk*!
!Lp!3ZE+,J+D5mTM[RABB6)BNm#3mqTeihcFJZ5AM1Q0K1@YMCE&$MbC6828'f-m
SHT4dlJS'qeCSlhbp&6UaST9@!VH6YZHV9G0@E2%XX#0UGP#NdHi2#4T0d`2&*EY
5p2E-H!G,Kd3AlBV9lRTf!m%j"!Xhpc(R"6HA)Y,#1&UR4REGQA230KUl+dE")I$
c#k9(`IV,KmNP@kd$%G**+pUQJf+NMF*,G[1NZ$Xmf&TN10Hcqe$3ZBSX*jD&-@%
A-hSd+Q"i-(fl+Z3"AaE10rRAa!rNFiR"e)A5NfpPma"bGf)N"+MMU-PB#@J!PMf
AIQG"HL#lHJ5Z3l6GA+(j-#lN1$"hH4Qk-%ZTZ[TA[XKIJc(0bhGf(')hi36l88P
#JH[!r+m"ZA##4l'j,$fB#R93'ZY6U,5[-,4`aL3GMQ2j4YYMKjQA#+J#T#0H'dP
S'aqVMhY*-CKIJdS9SG5NAN&1pDadIlbXZSGcNElRpT!!5@K9[fHd'qSd4%85pPT
Ve-IG9iR1THZT!B8cA93DL-L[%S4KYTAYV2!DMZI2SbrKQTMlA'M5iD0P+RM9@"p
G$A!"r'+IFkI&#&LSHCC4cJa[Q)F5bdBF8Z%AkPpDda%fb[!p$URMh9CqD0Q&,X[
[N9%a,3-[cYGNkK,$rRJKU25XdpB#V[4'YNiUND-jFKP"+M42"j!!hrGFeY6-Xcl
'RHP)[NMi4HrEaGGHP)!3PR)1),)XirSrA(EESRMHFf3Z3G@k2FY($Uhha1Llp,m
DbX1$[G9+q!@Xa,Sa91$fNFp-4'qh[FpEACKYmT@H3X!jL#B`&XR3FaB[a-rNKV6
e((+-G@0(k,e)qXrfVp(XCQrLJH0`&LLJl$13!#M!6DZ5&%(J4EZ4l6m#pG@Z''b
8G'@(k0[)%J!SHQ!2RVrZmdXaZM,aBXYTU5qP9SD$IRmamDCrTE6*6[Z!I6%'58Q
03,L#"1ek[ebCPV3JE3b#BDlH$AMXaLqED'hNQ,#%f5!`VL&C#82c-'mDfp$MEhp
BZZ`"8$4-%9iB$H4raE!iX#+#$rjY5c(j6F2(FFkdBmT))D3QP%hQTdf4[)9h9`r
M*PR6IX4XXD58VV%!i14Y,Kf@'&$,&`f3!2a(#1[mE![XI5GApF4bR1pZ4-PBHcT
ZBQL$IFGr(iZTX$KVP)$KpId5ikXC1)B$J%r"16PPV4ha59DCKYJ235IDbLE)h'k
J[r@6#i-f&r3@bJTa)Gdj'[TT4)Mlc33C@3eel`b@VA2e%!AD`GdHT*B1(b`,"'`
Z34kAClF[k!Bq[!kKmDbHk1FK31!Be%098*JIq,c$!SB`43h3Dqa$3aN%PA&#UQQ
m52[*,1JhlN'`-'h0*%rZ15c)33a5XUSV-(l"I*V4TT)ZlHmiPpKQSUIi$$I+#,-
8,SF[rTJepK"p&i2rF50D+HA1YpL,YDl2pFC)9GPhImVLeZ55Y,eATLh@V3`L-3A
`14!U`926Z3[*$MHN&f5e$cGUq1eR'EV%2EhUZ%-*h+['8j(-a*(G[lm%N8Ke-3!
ad&YUcK#8""HE8`BE`Z[GP5!93"h4QI'6$"rrc!MHPZ%jEDZJ5Z'qB9B$HXA+*B-
6!Gr3+,)-TAAdA`baqp2mD"8i&r!YXKDQM(6[A2hYdIf)Z$G#A3)qcM(,R)dh2kX
am4%(Zr)0P%pmF9NJ1DfJ0pPmX0j[!1FN%$ji(PXP3jlX`FLS4f![BCXEHrJhDSY
0B$9TB9jKR3M'6R32+@9R"9*SJYlk6RAlQ2j3G9(cV6F+c,-A'DCl-1R6kEUqJYQ
N"B@`3,4-F!+#aZmM#dd)CCZ8QiiIbK")fUR'#!RrDCIVq1FA5)HrmQbJV)jaLa&
K9CCG2%6kSXA02,(%bAi@!eIEEbKmQ`$"%q#(BlIMhc9e90Pp946ff!Hmq$Rpe6)
lpkKK)#C5JRm(Sq[&+r"4b'[@"CJ0I'GqXXhj#0Slqh*F#iVQ&ar3QQ"R@"qlN6[
4YPH9cQ%&3YEc5m9bIQX,HX+BfcQ@&!++$H5FfDIAVQ4UVXJS&Tr-B-6"MS&[RMA
f@BNQ(b&-bF-iR8"(010D,0EHRKY["0Q+@HXcdk1NK55FD&4qimT-)IZ+B@5bU[5
XV8"hX$*)`@rj1aX'd-1RVr&UTR92UbTASP+D1J'4SmbGF9`STTGmAaf#fUGT69m
$`&XS@aR4eNdIQjHPU0dKm"')D82N(rCjbk*3R)[Z1SIdmQ0hG)K84TQPUeRTfh5
J@qM-qI3[0#@!I),L`H+[Cplbr@9Z1V08UkV3+,3j3Xf86&kPkjGHT&GiXm#C34D
9L,SbKmIiiDGdP&+*m$-P[(0)G)(Y4fV[Ej`Sm2M9dRLQ50RfJ2PDA)N9jcBEADB
T#jeV2X+6@$&h,p4G"4X"*jEM)NXdR[Smf"E[4pIm0SGj[NdfbV%VS-831`Sr3QA
S5rXB1@1jEiVmG0F(KS,eDKi&C+X)l+-**lli)@8rKE[r'UCdEJ%YD!r)$0-8RE1
a!ShDJAr*@dN@5XV%R(MB#[&JT65(f0U`-lZc'B44XpG31"c)24Y4JCKZihM0$m[
,!@q""aX$QDBJRKmr5LA!UD,,4AG1fP6E6eKXjk,h`CpH,!pHS6$jLAI'qlSTc$9
jMXL2XMVaFhCaRa%HMEYVe*D%$qE'6eZh5*,bCRqp"e!9+c@RG$fDG2arl'9R"TA
frYDTm)Y2i+1$'QlL,VJ5[8m3S%-dS3!,VB1%@e9i60&1EGMiClE)`qpb#HCU6q2
EEdTLhk5VBb#k1@(h$S+lRSX`dX0EKhm3jH5Z32TUACbjh`KYI!V,kmFQ4NiV-HR
Zl4kKUcXTihlY2!I-*3aq)FLC,4r!k#I1k#p3DMq(Zrbq!Z6$d0V'"VZf!6Kd53-
9U)mUPqTlAMcGb`6LAX9$Mqp"kiY-3NKP1$J(2&P%@+NJ!381MZZT#afhTU,I%hh
ZDhq-!BiC5rQ[f#iQEI()kAiU&lR#GQ'JjlFMa(kHXeRFjZ5%j8LkriI@dCIXpRL
SZ,+rLd13!"AJ5"N1bKp#Lh&&&*0aP%2Dr$h#hM[p+kCrHJ,a&CZ3!!%#MclDSH#
eE4C3*`B2UEH8Ld&ZE*'5RY9#6Pm!VIYp$XGK*mDeGECISl![`'QUl'dj"UA3MCV
0,!4*eKC)Nq&*dX5AAHD*AGM5aN,#JHqJqlh0cCB2qDm,8PF1p@k5&Cbdb&je5AL
EkkYE3LL,#[`qI9C%8e%4(F`@1H9U1JHfhIA@M%a4c0bkiac#HQX!CDXqj+KcXi2
q&B&e[kleP2!6-lYq!1Q(ceSdFT[RUN@UqGIj60elXl1UJkP6b@3QmQp9aN%PmE2
GiTbJ0TQ06@4*J#(4H6j,X`T$M'apqdd`Pb!mG'*ZMTaP(5a4I4SAfY1eB&i29&i
0JZk$H8G1#jlVSp1%f)-LTj)reUpTQL95+kT["6#Ple9B8eLmch@Vq1MLApmdQ[m
))-L%CV#8emKq*d16b"0$4"Sh,YZQPZ4!X`GR0Vj&53kc*eLmEFCkJl3rGFfeBI6
#!,pc3rhmQXIkE([CQ3`l'))b2!T8LP1bri!%,k-3Se6hE8%0JcYDJ6SQ(RfU[I#
J(ccTrjcYf%b8"%!T-6-8M#peChCR,qRF'P(pJea$BJ@3!+[)L&Q&URSG6S2Z(a2
YF8bfVh8PSZ8"kf,)"B6d1bj#[Q,bYJ93Mq,%rHfY86F%PGaG)Ll@Z2Y53jCBaU&
"(,(Q)m@(!bE[*+ieN!"d44j$3GCe4c62J,42aC[Bj04kGU8Fm*c3Xc49$Pm83Q%
ILFHK%l@qSCY5F9IDA9+GD8NlK2F+c'bfKCm(hZ%1bPm1IcB$GL"BmZ6NCVYh53Q
mF%TGNUAIHL!FXE9B5*GI(lk3!'@[*)DFcim6TRFbq(f[UPm$)URUrKjE0%XSbkA
e(0Zhq%r)DfACYGQJiJ1Lc2JUGmd`H&rm"UpbYbiQmD2F@cDGaL5NkQPbG2!hF35
B58&EU$GZN!#4B8YE,FQfC*N*`XHq9DI`BD(QH$5%i26rTXUD,[i6VG$0'aLRQb&
@5XF"+$0",SKraaY,T'%YjMeXR!F-J%mB5(2j8mG%4Efd4p,ZMDb(8,0dm6d)U#9
lXa*6UMhke-Xai85S+aVE+$R*b1BiUB#4Q[*%Y%$GC4IbGkLC'-KkGRec%$qb-Np
4C[*B-cENmY'%PP8kd&P,P!K0#L+6IjDb`2,AeDlr'&lr9c*CG$`-PPl1"#-r0rD
4"+mF-'hG!UpcM13JX2RVIHq&NM(9EFc)9-hAmdAjH9'kM!5p5Z,9&KDmkl&CqAr
NB@,d["#Pp0fQdLd-"q458'1Qp+lkmFa*[`6G&Xf0TMb5"+CE8)cZ)d")L+*JlRd
A(1!kDQ"VPd"N*MJh3*%#10A6YGhKL1H4F%,AM4&5qhF[YiJV0dbQL9`&6Ym`!m0
Q&eh!m'&Gc3,5Uhdd"e2PGDp,0'mbM(5#k1,PZH6)8hXG(2#1bhjcLh@%q)mY%9!
cqADIMK99`f3&EfMEAS#43PGBTL`1R2ciH`C[6Fb`8P#V4f8#XN,Fb@#BV0)5Ic!
LP5-Q'J-Q2$R'`[B!G9p!!QhMaHNZa`KGRHTXIhJ3"M(eN[H)S$p1')'N")@!qNE
GahA,BH9fZ"j(c*el'VJ-lTer6*A,8rbpIG#F'CE[Xa#1m$)d0m'Z-Q`b2b%m19J
NpYBjAZjN@NLrh$lj0Iei8@Ah[**N!B!64q5ITCNGA,FE+#64+1-bA4K1ed48FaR
Hd,ASL0A*8M-[d*a89V%Ae"VN&H,cB&+iJUIRMk!QSb@1J#j`a"D@UZ`ehh%T,Hl
[@LZT0b%cM%9Q8Llc8N#Ue#qNGN(9GBI@Ep3,+%%c6[*58'pQJSj80P)f)dRdahL
K4(8[0$RA[ZYMfpl4l3XQ$UCFQji2f[TCIBI"bKQM1Llkh(iiEDUD"CGaNM*@bAi
,JbC[+Ip@JS5NZ`%!Ff2D2XdRIEc25CM[)EZ,ZfB8N!#FVcB-eF3r-pL"2!`Q+Nd
cVHAXYMJ@6[5@f8p%0D,kV`'Lr5a"F(5Z+3C@Hh`IK5)Cr9ZhG[AF)aTU*RM9i-j
T`#@X3++CY0M!TP%V4-TipCY$bbmEfH"+SXkTA(#e8&KYIFkD36KpDbK%Q%lEM*E
1kVTB@*hTCa8aP3ZDF5BGdf[rfk`#&9Eh2a&AY*RJlrM"3S`blH,+K+CR61f8aFk
4!1bYf#`kl+!i6jCJ!94Z3&8e9S[MFSD4KR`4h63*1+88Fj5qB"6D6@`4--Ej'!-
f186f8aZVPfZ05F3UK5'JE3'!lA@8++B`d63'p)YCr$*ccqpRb10c[HA"SS2BAB`
Rh#C4EFeVic6)c@""qPfeQDl0HFX$UE!,6B-a!XLFcb8H'q09%2p8e"$HM#K+#5a
TK$5,`&ImfUHp-Nj!`LQ$VI'1l(pTaE2BAUf86f!$AX)Mk!q#T86r,Y2[JQBm6@V
3q(Bl'PR(fZQSH5R5+6NTS*2(3KRE*Rh$0mF4m6C*fN-@`(Je!Fjd8,-Qm'Z$Gqe
5KSKCLK+9%&4`VYRmj"$*d85'PYYL[FaBQ4pH'Cd4c(!BPfM0-48le'he"f8,*ad
F!)QDUQQ[m@q1bH6bFVBa8bHe"d!&ek#FHXC1P5!PGG$EKlHj849FN5'iZaiAI$d
j'%)mXXJe[3Rle5KI#Bp9)(c(0edYqRfbZcCMkTAKDYVHFp+)d!c9A'mTmL$p2G2
`B@3mdRD@l),`QrGME1bd4K9pLF1b12Q`"XMZKFLG3H[*80-jSU)0BVQF83E#56"
XU)ZD@D9!Xri$TfBk,'55+6Yp*k$3ME+PFPP)0S!i1-%lB*hVqaB)ZjJ@Vem1lh0
CDM*3lFP(VRf8+iJD8J5cb&`pHqaf@SfIkAJE&'eHmhXl9jSbjTXl6NjH$,P-[hM
NSmN)fI*%3%)TYGrHSQ6#KpLSdN3Zr,PLV88GQ0mrYfFra1)M*T`FZhEbdKD+fU5
j5i)U4j&rI*hHaV&YqQP@c6bd5ha!qm``2D(LY@(dEm,i$j!!AAeI,,"$(9mf-`B
'aJURL,%8+U6S6E1HpNjN9rm3KN146fP@cN*FBDc5kL@hJhpAZk*@YHKp1k3m1CJ
6i1[rp1mTJS,l(*!!*bh@5d12X8#Xj)4EM$C30a5ikIM#@(MaaadG,ZIj*[PYeU+
KS#UZl9aF,jlbp8qmkPEUq4Z4,m$GiG6$`DEXlH65Jfh+EG-cJrX)#,ZL"1QZA[p
Xd0*,$DJ!GXde!9!PP6K"Lce$Lj@*Tb1Q9FHrp!Je*[1Q6hFpA)IC+6(Ve,qhM8-
%VHc,j[)RVThX#6Jc6'T,lKmLpedHRE(IQ3JqA)S5!hR0d9KD*(Lil!AVYb#`55m
T4(+dU6Xc3&iASYkNL&mH[Zh8e0(ha"*l69mA`%%@)2-1MNejF)c0J%+"BBA4A8C
a%ZkVMZr`#'VRe9U5rVjL#&C[J'j1alPM`Z1!adi@*`Gkm!1)mmBXa3fhi3rF,-S
8@@-T6DIANNhrhU+&f%Vr"X&@aS`LhI2U,VXj))$N-9*9$+H5)AAI5(CR6#3UJD4
!hZ3FJ##S"3YprZ"-P5)cUlA%0&6h284"j`"UMT3391kFATYZCd)fAih@pLB1d`h
5TrpPb)0I4),p`6iq`-ViH6*,e+1UZ*@Haah%"FaA,Ya"fpr-#%lc1RE@T[kXYQp
VLGAVUU@(G(Z1!Gbb9p9e'EkMeBlc+((c4HA+Bf[dD*Z@4B2mrd!UX`K8!lF01UX
%p2M)ArbYAar5aY-EE8kd%hZA[p`ae%pY$*Pc!5j!+TVY"IL*J9i0L[[S*ppQ$'K
)&1ApTBc"eTf"jDiVqiY9H'3#GR$'q"YllAEch-"E4prp8-PkX2j5'XJU[D,NS6a
ilcrG1`P[cJ4&TVl`35S(0Uc'b39ZiL,NTPY0J29$Rkj+Dia&UqE!`*`"QBEYDR5
!LjPIG662CT9N#Ur9Z3cm4qDj,dfrD$RKY6qr5iXdE5iUqL&m,+Z-@6XHI$),&%B
arD(Cij!!-XR@8cEBq8XNkIH0j)!fDFXSNTbE@`#GVj94PcAp8V2CllZ92f`qiT%
DlT!!"&#$+e5D(ppb)L9cJFrY!6AEfhr["hihdE0dVZaeP"TNGIEH83-Q@kZ$SBe
5dBL#r4RXC6Ba)i(LZ)eNIp9N3V[[DK[PkG5-TPPMJXlRJY8D@5i0SNDd1IMXSip
GmHE0HmhU%dCC-,REZ5,6k![XdVG@U+j1@3&*U+&!pTBlP-0P$H53!"V8aJXF1P+
h'J(M3q,ai'J*RKN@dM#b@(K3ZMleQq8jd8[i%Ej5L19mQK6D8dQ9TSejPE4Ucde
9FA*([IG4BGZ&*N2AI,I6%8"hG2((S``-QPm5DNPBRREG@kk2k1N)P%H20(J*p9Z
'm#9S`9"+jJjF"l3,A[2AZFZecki&IXC!CcG3#RML*6jcDAihN!#e9'[%K6L,1Ui
abZ*PJXd#'hNAKZF9@`F[mA%2+a+55&(Ce#@,%1JhEUpTcDj5r!b(Kh$RcHB*dNZ
@MS%TN5J`(Y#"Z*Z%!)NrchMCGb"h3GfJq+PRB-fR0+lpB8YN$N(S&!m6EYD3!*N
GjcIl0T(+i*@pc5lG-QNR&@HQ'eHCc(,dDm(h$%$QR,*lKQDd8)"p(@q5fDS*c(A
`"f3)`j43Gd(pml##!S#jIFU8pGR"BQi56JIII9+G@Dbddh,%3lRijmZS[)1T")E
E)H6eICEP2br5P8$,SCAfdhr,6NV5qd@Pb+MIiVULPhNDm8)@PU3l5QH3!&CcIb4
6f`3JBAfqd1H!8CImXDVdMaG`R!(P0(24iNJiCYb&",ca6V"SQPaD(d8+!NF$'9m
k!AFcR2'JS%h@@X-jC,bFaU1U#DHU6q`b`9*4GQCB$h8J3TG-VCUl3lj@BAYD9c[
CV3abIcGe(cMC[$B)"Q&'bFVQf&'eriSBh0dABFGcBiQ*2)92NaPp0&f'Rl6cTb[
MG(5rTk%`%X*`5`M-`I@2'-ZB2GM$4jmiRpQ#D,CYG5"0f1C'UN2K0LE8$-ATd6H
`&`2hMdUbqadp[5f`!kKjqQjS+0'CNZQXfIf3!#49'!659)&NeG*SC)iSqLI4%2N
cG0i@m5*h8[KX$5r"dUkA1'MfUFP@Kmq4FRHrP8TlmV&328hd%QAkd'bNBQiXhSV
B"EU(dBe"KL[H'bMC5Q##4'M"&,qL4e#88!FTVqD2HK*CJHfGi$DYDbbNI0LM')G
05`[+12UB)HMG3NZbdJ(S%,#9ccSF,'9ch3H3!-G9Z63Y5ZE%lqDXQ6Kpr456'R,
cf(`b,9@qc$Dl@*E*6I4RdJ@IaDAbaBbT)!&F$"MFJh+8pkR6DHG1S*,#(lk2cD&
derjMrj11eS&lT3I9i,&E4CEX&EiQp&cC*J*3#ZjHVpG-2mK5lX+,N!"'563Ek[6
af-`1Z+ZD3V#&kS@md3J[c&qUpB9ZKVl9V0hQiVN6q6FY4Ui%q3*l*5D(P"hKePh
b%FCdiGG'[2pSQR0JUr!EATdULa2dY,dihJhXBV2ER`1H+d"&+%JPDjhU3S-Tq!"
,ILmm10BBQ%Tpl##e[d9Z!ZU239m9eG&pN!$MBRbi,1LPRVYkI(([d2pp!+&I*QT
K2iFiHblTHC`M(NN&%3&+X'06G#$Y@lhjc4PCmILZ#+)HSFj9a)+Va+Y9%,lq)q-
KJ!CIeIGIUiEUh*b'pKkF4Z61[8Zqd4pPip@rXP(8c9e4PH4r24r-E!4UcVQh1DI
U&*V,d$%05dq5KZDX38H`E,XNd[f$eU38Y(jE0c+5SK(`L*4G,@$6)kb(b$bZ8hK
"BDmrC(MA-hmI&Rd&2GmqQ1Xk8iA$L,9dC)pi[F!)[Q,`YeYTL@hKDR9"h6RCDeb
D2)0RlCR)TcTZQbr@+9qAiVH(EFhXUf@80TGSk*VV&d&aY9XT9bRXR#+cLM9'hL3
8Ur9&16pbHe0VHl[9`cB!UTkC%[K@ZL(a[eHeNEiYf!Z'9mR-`M0daEL50RJLpC2
&ZraG6IfM5G!i234,q[PC@lbTe%ba9RUYqDHlXp)1i"#1$)F*YSh*mjrhL#$X`Ec
TT!kUbq6Q08jfL01LF[,3NeN@MSZm*+CqFV+JjHUll'ZMf,-CI9,mca&$a,KIKN9
NQjZUT['U1+LbJ3"@#kXm(Z)kCBeU+M#3!"le2Jl2RfTM"c8[HH2D"djf4*U8`fj
klYFmp+HFS!%"Ek9EJZZ,5GP+'K#9@j1QS*YFbQJHXbQf"ik9ZBXDF)h1%CV%ccc
[M'P@("JbmC,+kdm0ie8D6`r8p0pIC)8TEB-Y[+*h0Zb3!%`U#EN3GhadJ'Ybd4S
Ve)ai2qp(M)5`JY0*K*2@LHU!B6"C[6LKcZGEFZ3`jeK$i6j@#qQHpZdqT#*hP4c
hkVBGGREJKJQQqe(FEF"&q3NkaL`@AE-bN8Rr)CfFZ"QX6c5L(I-FflMe(E#!QmU
E$V)GRL"c0-1FKh3mj,IPP4`RB)Nc[6X#PHHIKK84qbRRbfEP!pR4P2D2lNYM+Q[
D*l#6S*!!6G[+5PDJ8)R1(L5!D&a"dZ2Cj4,ANT%3,#l"kJT(1[2hC01D911UiR`
`dEGSh4h9!C-[2&!jp9p65+G)2Yf5`Xdh9cDd9cUZIBFHA3Ki"F"UTlYm'XKPX`"
Z+PA#Z0-'2PXY!UMM%,Aace()XI'G%b%5r282b-hQifXKheiQBFeaIEqh-0P&I-6
m4),)%bNFS5!"'F(TId,(LjiX[p`'N@q&YNra1*-[!-MhGi-V8ZpM!mdX1*M2`rN
#9C!!Q31JNkC9DBj+JkQA8*dIb"IHV*9Kc[H!$DFD0H13!"#"M6(Ahhr8IBje*Te
a(lJY-"J[IT!!X6e$mkk`CN+PUjUJVl'F3V)hd9!j+dFUV[Rk#DKJAGj5SR8eb&"
GXCXrVqR91e&!8KQDrlBfeef4CfmZcPkrd3U0a$'V2I&'*FKQ*NCFiQX2D&`HrHi
h)))XH3-3BXbIjYQJTK('QXpV,4A%V@L,[R9H)l3MDJA5EV5XFhXd*mLlN!$1+Q(
Ka-%#EY3,C%$#!,&N+22eCQ3N`kkIrrrA*DQI9JL%d$K**UJ18K)qclNZmQMG3qT
fTr$[8hV8V!Q"0c5Dk#`5NX"DfilUiY6hZj!!+*k*J,c`'+%`eZ'A#D2h[%BMR21
2aGGr"#F0)XI0TPP"2@T4+ef*'-QKM),jY,UQ%JXhfX"ZGAV(2['h6"PNH28pX#,
Hb@5Ej)%MMG9A5iMD`cpHaEHT@DR*caGN$B6BecI8p#YE+K,Z%Qle!Sq+p4#-@2e
h[c`P8!!*#J!0U!#6Q#pAIN30b'+B"j+8J83VNjLL@T5"TGcTFI4DU$b"2+QFBA0
%k6PIN6blrT-V+DX!k[8I[&&3B'JA@NK43'M49$VarCYAEdm3*mah5$b8j0#j2B4
2fG*84rkp3'EK3eEfCUSPdQSqRr&TecKjY(FjiH9@58P$*IEj&%mP0%b2b8eJ%-U
2-69J%-VK6MLVpj)fe&CVJ2`Fj()MlMF99(RAPCbDNVY!me`G$1pNHQ[MmU6bV[&
BTlMmI3)##c#&0LFhprpCC@![M@S9f5VU)#B(K4&9Bbcd2[&l%k9BM36,p9,B%0e
RYILEXVHe`Y6$XDHYlX**%eSbDJ2h4ZLj&$ArHJ[T["bUfJGM`%Hk"ldFqL@J6qH
&U@4MB)rKam8kmN-PS2R"ebA,GU&B('0$a@"B3%Id&eLYcR2l%#H6Y[B-B0jL+(S
"LUdR43(KHQXSNq"6HVLPp+T(%ae8Z,N2Hq!rB5"mcpa$&m,'rXVbjTrlKXZ,`$0
l-50V3%A#CVVHM3kP&+hJ--D93",T8pV22IV6U'-jYGAdjIjM*IF*8)2aGC(q6ia
ZGV(NZ+b[D8qReJZV'c0qDd-dQ%L3!*bmHIfp'USa%aN+B9*!Q19N+eiVB11cpG[
05*r9!M!0X4PNX%eNR$Y'&I"M'LY(5!aF![F0X4N`X2TNR(&0&CaMiS[`5"TFpfm
-XJ)`$E%'8,"0C'-+NI"0C'-+NI"0C'-+NI"0C'-+S[#`DqD`3h(+"p-pJdGCRZ9
55#,j4j4)@6*&!["MXBM!X!aFR)69&GB`'N0Rdc`931Zm8K@FBrR!A81pC4`UEF#
,#eNG"ak!1YGJr08JVm&!1Sq)U#[U"pMjI&$hG[3Pf2cYVL*4G3C*l@,G2+f2#H8
9bH@b80Br!6@$$+Se[BmCV%&TH4!GR-0`J@[r@pXkRqZ-EVV$90Q)p$R42"$)0HZ
d5I(M3Y1f4hIXk699IMF3BK!jJhI8Y*,3PV%4E(d)H!!-YPXJU"Q[9r%"rhm1%cB
edqKU`aiL"Hmk#"kK,"(6(2HT6&Te`AXHXmV"%YSpf'Q'-dlZ+q#9l'NiMb8TcD1
KAXFbIlJ@IiCGce6)F*8DZ9YYmPcM-Ul#5`qa)+kUR'i-59'15,LK[S"hjPDFUi,
&4FQ`Y#26%l8Q#lX`Nm0l*ICIaSRRQ5H!!-CcpTpY,e[fBIcDJHD!T)[Ib350+&8
Pi4%0bEqVCSCP+Ff6cEI+br)b-$#PrT8ph(eTmS*8CMGLCb5)-FET@l1Vm"DEGVB
j6RSkMkQ!-B2%SEi[542fJrdh@$CB+pL&96JqK*-jDF#fFB0el!YISd*qB3IV3F+
3!#q3!*EE[$QGCGAZC+BL$59$q666pdadS&a"Re*kFY#fPjBHR3KpPr%h#q)-0fB
j0(4!*UBEC1qdJMU)&!cZp!9%B,#haiGcd*l,`ZkDAPm5j%HjZ%LISaIC,J1FJl,
8AE$R0&QV5Rhi@'Z$5!T8l54P0KHhhMY8(k2LXM(!jK-%D*!!Yq%YpIr09fYb22S
(UMaXP$L65j'"4"5f6TSa2B0`Ypp#l#BpLAh)HTP8eqk+Y*)R[Ub*$U@GrBhi9-I
6FK"N0+!1jYqC(f8lF5IaG@Rj1%c*B%+a0"LFmXDhH1fVUb6))k2r+A!hbDZIHmG
&b5QRihH2c)3pabf-B(ITI[94hUA[C!#!km@Jra#V&jPDMFA5[*f(TmGLrBGSG"e
9A'bPV28)#+J,R(m#q0E9iC1'%NER@T3U9H4Dkr+C)[j*@',&[AB96jC+3@GJSGp
XM8,&5"kD*9h-S53pPd6jIF5R9ri,!kLZh`C$j$,#4I+m35QTK1faF`$N"a`kRqQ
G6AAMh9`[dV"2GAYl'5Sa-lf#pUk0RBD"M$bL23M&I5c83Ic0q(qr[qV`d&5PSDH
$9%JeCmi#6aJI`ZY2r`AeBL0J&*2#f*pGUD0IMD*$2BUFfD1XBH(@iMi)&5bQBVD
KEQ)9h`T1'rX@HG8MAE6Z!kZCpL"jCN0qX(hT"QcYUe('PcdY6"Da2"k#)iHIPdD
(fVdhm+P[+8qL*Maq*jDPj&2aV)4``6a,0@E!NSmNfSdklZ%Ec4L)mF%E5E4-Ef2
8aJ#VkhpkV'"%(6G2'2%A6'`D3Pp134XYmQAIP3$#j)6+8Aie#J8Y3-ZRi`4#D`E
Cb!@-TmEAqm*(6rbHSM"QTjBMq,FDN3Z)e-q[D+[,C5d3ea-'K(l)**!!`L+L*(A
II5'j'$Df$X5m!hh2*$Nlkc+)dG#Yjif1$1)#IU+c4ED`0ePq[$"piACVF$fkhYK
liEN8")6`4[I#09rNddP4S2"IPmU"+8fH"PUD$0X3DGH9'HMq4q,dREiMDZ4epaP
YrP6Lk*AcLbN0f12iI0Zi,mC`4-DR09-r`mI&M'CTbE6(!D)dYkRmS`(bF,62ccB
&R!k,fE4m)'i+aP0E!*0ab2"rR+#H@jQb@5m!TdR)6'FQ8L[5#+QT%cT&DZ4pCQe
KUEaYMUC%%rfN@Cl2)jC`+L$YMHF`Dj)A)EF8lB'YIGbr$#,9qP,YY,mVLi8mZpq
aC8p`Y8%hfTGUC5#++B%I*b-IGX03BMRk(V4m2J*%XG@N+8'8rFaU*XK3jEJTcc!
Q#LDBFTFM@QH&6@*SQKj2ARGFRj!!Q+i(#RqT4lIa'D@$Rr@f-NZ`'JK39lrqP3-
,cB@)CRffT1MK`8rrkY"5kRN%J'r%!CATHN6T6GJd,T[hZd3HPQlZp@jZadTrqHm
CD[q!f!#I`kJ*adEfk-pb(9JJaJF@@rAJe,[M2M%AaF[XZ&#)%K'L-@T$l4ABN!#
NZGk(ZHZ3!)Z#6[KRNBNG!3mf#cdM,rR,Ah$XbeZkUX9eN!$D-k`dId3-JE2k6#5
EK6p*&4rj5B(aJN+Ifrf1fLaPl$'qarciVf0R-R#Sf(23GYi40jqNL)c1GA[RA(Q
%lM-($H9MAAHYFNCS#l%)Kk#&jQPbrDCh9PPP0dX"FqLc)FIUL@(M''eZYFIFjMj
&d(3paE4EV"`38fB&0$bA+*pf[bmDfA$*LbheREXT(AZY!l2EkjkmZK+5L2'CKVq
2D)YGVl2%0bkr$p%-#!fp6c`63%VB3,KR$D*p-0J@R5"f)c3rh%-bAKdrp8al$&K
V4"YPlaSK%!"6j!YcUr)F@%E5`D[LCFcBaQ!bAH&Be#(@JFa1BTreS-HJA)CE*,B
JBSCPamrX,P3p'ifr5p@IfIc[Zd@k'(0j,6I3T@-KN!$(MT8*9cG%l`GF9cLdbCi
pG9EZ+lea+$GDCQTH%JcZEjDC(M9@!FM1($KpcG4fYN#EIb1PIpcqekNbNeH8&li
A&m952$i5R*`XLY,'H95jKkVG[(,SQjr(q3r9K'BF8[MpI(95##HJj*ADc,maFaR
46iQM&Ce%qd5'%YIQSBk-58MF3Y("J#ZG+D#rb05p%*[BCT3F)`[dl!bi4aXRm*a
jU&+@cNkI)*&pZjm2lPQ9Jm$dIeq)GECDR8(L#mhf'jT(krCT5JDSApMVX0(N9*S
(PdE8Fb#lk@r`mc46Mr%42!DRMB`mF11jLLeP9%$c(-0+1f9#U-2kP-0#,Q+#9b$
m4l)5kd&CYi0aa&Q6NDM6KEC3X8Kp+"V60MIXPV8ka2a%ZS*HJPjeVPS8@3'q1M[
NS,`AMrBFi9kFbNCjKZJ5'Q5)A(3`&E`i5b(bd,l-#f#S!`mC[m10GZGkLd%1c8Q
'NfDf'IfP4lT8c[ER08Bc)US)qpmPU2QCEi1J+eV`#6$6Vcba+9d`#2,B++YYCP5
ABRe+,Vad4V&cXTLk#NYbiMNH%EH&PZDSadDhT,$Vf'ca"6drEBE6h,6H`(2R(f$
de1[F)jDMI%db3'fJK'je(f[Te!EEPX'2Yl)-1i6+8G&*R$1!ikkIQTd(E5+!JpB
jFZr-lQk3!+`m64+-2IfC*I&lfV$hkQU4cUL@3@dqTPS1BHM4dJIAiF9MAeA8ddl
%)VfCRJCbSK@VDdE@BUD5Rk#(j(lGPh4Lp!Qq*m[D9S6d-Y9Nd0"`#$PQDZ-&L95
e8*B1&U`9rBV"U"emcq+eA`",h$dCL,2'#Bi5e&EAJllXKR*Z*85bB2%04BVa#3K
SPalE+Rd2#J5`Y*EC$%G)r*81pF2k8YAKYd4pPZ+65!Gl+Y1LdrTLNlC'kRHj&Nr
i%b[$904KNk5cYEZh3hd2)p(CZ4`ebc[MMABGVA$I(Mq21T!!$C)'3hYMlNkFNZ&
iJ!GJCR`liD+"pdS["Qq,qlIR)i)a0!`LUHVi)qZB$+-49iFch&6'cVMZ,LkY9$q
FN[+-`&rrBS!e314mq((9aSd@K%i@ZSJD#*&L&XD$"'BNhrjr5JD2rbfpdPG0EaA
jEFZ8AhS4rA9bTrS,CM'i02IRDRf8#0%dQdbi*cVV-q8EH20A6SV[9*+643JF,5N
L'[Brd4G,krY2KQ4NhqG@)(BX1Z,F4+4&0A14TA2"k5(ih!GqXNjS-Jbk0H5JB@`
X"mmU`bpajHRUjF%*QKD9V&UIA9,UJ&l"QfUqhSci%Ap$r1IJQr@6,3N43RCk'Jk
)i+ZF0IbHAZ%c0QHMUp-#Q,BB`bR68h6(CJbHIcQ,4&B'He,c)+ZFA)"m"jT3N``
q3rcFTB"C6`AhNQ`rE%e1@SYPBcZV$MJpafj2iQ%,#YmUrCUG$cMCa0E4Cc6e8$d
'P"VJEhp&&QH!A$N8*ZSZ)hA@T2)[m,F$b4F$i$kj+B('QAa,Z+(Cpe)#N!#eFX8
6F5hR*-Fdj%F-9i@+6JePQMeRS[B9f*p[%PV%4"#Q'51SpR-&'i",lfY9,(l),Bl
,a8Jm*c@e[)BESmhF[D#%'la!BP[8Rr058iM[!E`+1!'D*Y!6@qLc(bd$m2YZ9XK
JqI5lCl1ipX*88(5c9q*-NZBTeDr@RB#`6P!cKPaj4N%VMH+bZ!rim!DXZ%2TEaE
&m)I&qMbbVdE$f%f9U'rC8rfZ!-CfqY%)TJ+dE9[A9+DX94MeRDSYf*AKrS$Epch
HZhj!%@01ikmBJh6lEarVA!lQMG2TcLP',j!!XYZ'$h!4JAF6D,%pAdk9iEK0(lf
VbVmhH)YbDRh`KP9`25jdcV#(DPDZ)Bi*`@m@di%%lZHljZN3Bi*-8F#40@Ab,Sp
4med*+5%&fdha`IdARr*j@9(D'[5UkcUkUZeYMNG9@'Pp9Dr!FAl+[A3T@G'`jLG
iADER%DG(YE#8!jkG'BGK%D*Ff,'5k1J9)D6FpMd6SH('VhbB6ifYk!UH-RT2Y&R
4q2LJf0LNR5)M8h0VKh1F@PM5kS#h8Dh+LDirHDpC-**d!)m3%'1D@2SjZ3E2ZDG
f9jP3G,DCHFhEIBI,$,r%0&ClX(mdI"*Vk12-&@3VfX1NfJpY5'GIbj,d1YZNFqq
4A`p82+SRm3C-Kd5Q8K8N(A+j%NDmRQ@YD$*Z3b(4XB,r$kM,qcf"6%UJK-6'M,U
AQ5,1`82Yr$VcC()p9F$[Y'S8,ShEKFN1'VLbTFfqNle-cP1rD,C"bA6lL,HL4BP
PU536eU-*CYqRMmpl!LrU'e"Vp"q654i[r1@$85ja+0K+1FRr0)0r+90#!bh!DXD
6cS,68!VE%d(*F#r4X1mV#df%TXA-GY9,Q*FD,"j+@-`P3pJmV)d2SXEAY)6%`iV
IEYXHT)ISS$(%D9p'*U@1bHN1JBDN,ZYED3EEHrmd8(9L6*eDmR0[YB&ak$&#K,M
UpYT%VSI),(k2I&#r8NT(p8kVY,&!m3%Np"kBKe+R"DbaVdSAN9Z[bJD645H`*V+
3!(fiCc254[[L[X(J4#a1E4Kdqklfd+-iprfBU)(ZZdTqY*'mf)lQQ*AFLbY)E`S
!Lh,Fdq(Q!D'(L,0GaJlKUS`ip2YiaMf"VrR+1bK$Q)aKNj[AZ2LNVU5Q*'4If$+
mN!"4FY6,Q@aGq1Crd503MdBreicQ9IiTG@%l@G3Fjq+M#[PMNMl"8KcSGVA$rKh
GdX)V2$$D`Vh`c(Zp#NIcmMTUCk*S[BXIJIXM5d'qlC1&p&+1d#VM2`+DrB!rX3d
5e&D4%4&abjPK('EIZ(+&p@P(cPQ@pe22(iUVXM((PDd8f0GQkQGblF+F,p'ij9F
XcL6Z#V[J28)HSiqqUH2AZe#@k@3i'DX4'))iUiGNc"@8TX@Ja!Ej!qj6!fTSL28
b!hfAp-q(fi0JHJ+K6$YKbbE$V51I9MUY#'heGJiCG9mYR9F6RBFdjAJA3,k1TdB
bl%-#ek5@@l(jCbL1pP[E$UG3Z"meI#YcH$M`c$*#LPRdkR)2L)m1Kp8CRG81'`B
Ph1Q,9*6LCBA#5f3cVlHEE'XZ#LJj-k(Mm'-MD5dP3QPLbTZbq6$SDT-4i'DATXe
-a4aK4QFSNZEjh4RDM`4qKA5&r,l,L%9'e%Irl'JhaN2)@kc9!FjXe,%U@@1#MJp
JIH(Z@Mk*NUL4$V')V+`1$SL)V+`1$SLQV+`1$UDQV+`1GDE5YkFVdVZDmX-[CpJ
5C*qZl[9ipk#HX%4TBf66Fi"YeH1a-ePTRMmMD(Yrk(YMhPQ4T-eNJ3B5IkrpQ0b
Pf4JVE'JB69$'JT50$,GbHDPJh4VecY9R,"T,+Jb&fMC$3cBlZj!!RKm+(a$CaVM
IFEH+YkK5$96LP))Dp@Tb"hT)leG4&8Y$fK-XJh",jGX&EQI*N@fV)bqBS%LY9iN
(*1Ll4p4$),[V3'j$IEkMrCpp9aCH`r$SJL'QNJQMl#1@Uc8V%AC(H@kc&rHG%0B
'5Rr"A!c1LA#,h&P'eh%rV+PD24CSMGUHHrfE',j$K#"&"1aG2R'rZSGK,8cA,M5
5UiQfrmcApE(R58Z'Eq@-d5HbI!GQ!"rH6MQ98(@`dE-5'A*HB[Ba`NGKMi)*4*J
VSPr)YrZ9IJJbBA6raYpei!@Q'&I$5q3-4U9*2+Yr8rVd0jmGFr0U%d&+H4[$R0[
#H%2Fb!U%FKV00h51)BUf&'CM)&G%eBXcj&q*EqTh1-ERkpaJ8DK4rdhJ4&RVfC4
[mI65E$d4-+49ZQap4(N8$FP%XN,85+`lK'2e6F[4klh%$-B2V5cEjXkfp)5"#kd
j'fq3!!A,h!Zk[q)KpPP8qSJ'M8!-3VQdl4)QJ'V1ED$Qm4-MIb$KjG[4#CARQ3j
i1GKhD)&6eTqDD!MS$p1mVmIP9EkNLHlSJ1BNU"p2ZVU8dX,TfVj+jV&'bZM806-
N!-&U8T!!&[e59)qZLTB!QfSH$ahFfLi#6L'-Nh&,`@h0FlG0X$lJli-DeJb&UhS
ZraQdRRjaS8P,12pL2GiN(jmN["llc%P-B2d!D6IJ-',X3Zp0KN"%3-(l0a!3G3%
f-ACpFb5l&4KT,TKSUcdR)[TG(l5QfC8TJ+!KcJMG(5FaHR83k%XjR5fm,&I+UTU
D1A!QQ4Jb0fE-e&[SVN$-I*ap!r$B@eFJ5kL-'VYRSKe%QHR*`cPCQG+p4q%'H(8
CTBFB"Ai'5&k',pHH1RIbBkRRH1lINHcSN@l2jV8l0iVqK9f'!,UUP'iDa%q2iBC
-rjI8kEBbHP4PQ!h@JE(Z(Ep5V$rfFN@'9GMZ3GbP[H`(*hkS'"bTGA"%[&lXH[H
#Xemp'lL(KIeECPjB-D8S,Eaq[+3C!&U4q[c,[5!jBk-8m+MC%XVf)#@3!*B9UbF
FY(V23[rHSdec"A5V(kpXX$*T`He3jBDZN[GV&+ELbdNHh86m%#I)6"&+5h0+q`C
3"'FIh+-1+9V2rre1R2ADca5(iKaf3-m,"N`"b$c'I3blVaI!@hPh(MLC$3Rd%G%
"RpbQ2C!!Lc39IfM%A'1-VcP$$1CpQ8F1a`J8QE0KJ+Y#h+@Jb!!B*@*FmDB@C"6
[,DVGQDI-IX')!h+IVR)aKd(#kUeEq%M$r4E[pr5VbU9"8Pk`@kSlB!$$4IkQcb%
QNS8fhl!VDklSiK+4"NN9m!'Jj`iM)bP)I+K'B80f0"U3!$I(0eFU'D#Q"APUe6&
Q%GAE`cePG*!!+IY#JrlY@B`N[X6`k&@+`Hb3!'9q*a4cCQp`I'(k6qj*UeEN(!+
"@R0BlS3i00PDZD,*ecr$0%Y(2I-MVp*'HQ20`a)')qCa6Pi&$8bNP$)6$dV0VFM
+$a`h"iHHYj'4R"+VicIa8p(b$kl1lQ&4Ff'c89S4m6YdG''lr3[H&5q-Zi`49D9
SqNh)*)e-K+kTCXeGBmb5e@e2Q8C$#IC+r6I"fdhFb#S1R2mNYC)UN!#AA%9kiC,
0&5AVfC3KD3p3&m+b`B`q+hdP9$4@-I*SqmikqA-`44Cm0L#UZ5qN$2['kJZd@A(
dbFAq%f*ce"R(1%N0GKqk0MpEHEh2p(F%0,+Qi51"G*fKUdU04#FF(Gk6)-1-E,r
Hq94H1jB`cdCf[I)LH!6M%Ue'"2+`Vm@[jET,YpZ[iDE`Ybi'%FE'9#X40#Gci&m
I@0NjGU*r#UR3VDT3E*2MNb'eckd`BL`BUlP,F@mh#U"K(ATrVKRka5A&"CE`DaL
AfYl'6*`1&#DjL-qpRNRh`C!!RNqlQQ#P`#c!d,,2SfdfYaF01[JQmh%B$"6Ue+9
6kE(GqHE23SJJP%4#eI,*Z((pJjqr,bi)G*-k!cMZQFcT2DF+dASpc2Y@6akUNK(
CAl&[a[F9hl2jM`)'+k$%2CJeZDZ)Rp#A3ZSRAQjLQM!JA'B3fdrTd#,Uk#Y8)F%
Kj6U`""d9Ha2,aHRELl+eTDh-NFf%d-NM!k4@-cL9ZFA(%01#GD09pX2[M@0iB`-
2a@Y9U,`H-e3jFd0A91U9'AJJ[dr&h#XDmN)R9#NL3q*854Jr5!2iX%CkBGSaMSV
UrB[R2Fh2e3(K"(d)5PEp8m9V$j4B%MfkIKI`M!kp@TbbS3RSeDT`q@X*IqfD)VF
+QG,!Cj6,&9TINDBm48M@2S#)5GXjKpH+19JF-aS*IVp"m865S1Ml4mDN`S6d$Mi
qqEfjZlZ#Mj25!0k*dq5JYNiE`GJe"396+FQX5j%(jQ(l+Sh&8+UdEG2KL"@2i8e
#8%Mji'3)c*G-JH*8$aFQF5jC2%!aFN44Z%'ba8N9UcbRl!ieZ6B#+534EI5AJQr
reY')eb-2HAKNb8-&BALkE8%1k+p6R1AYX`jicZXa&4I'YJ19jA)c#6*Ndp-Jq*@
,I1+d64+Mc9Pl""(QbE#mEfrTJ&Tk4Nk&i"8UADR"jNmRi8BTHFEk,3Y#F0`%aSA
GAhM1h4ICXrGR6D&1pMU(N5['HGa[jHi3)hVP,P4E$BH6A$F#F+6M@2LIMcak4aK
+%B3C[lhf2"F!+3,EEq%Y2V1`+K*Serpa,PD9a8qS,E@[jU8dE4+`P8NSQTK@V)J
Y'Cl&[T!!QFN%X@VPA%cB,lpH"*!!4TMFk5j'Dh`!XD`@@Gc[r,eT@dR-JLAf-Jj
FNFRL-ph4cSeTFJ#ZTUIerXS(b-c9'RG4IBHB3h)C-VZJm@PUG3rqD4X!IkC@em`
#hA`E9R9,hVSFhbE&Z%0[Z&0lDT6%CXje(l%UE95qeDp[c4T5,KAl#[qq3(DNhYi
&lj@Z[!m6j@AicCDe*Q`a+04RS0e0@P+rh-(*q0H!G@cE4VmZj!RNF!+ID$`r91S
MC#MXBNMF3`M*ZXLiXh&icrCI&Yc@RRHQlcKS('E%TpqLmSUrUm9@!S!I&9Yi`-(
0Nm&GcA,(Q(YBp33BFeKC+Z-R-dGDl!3bbFkZj)4l#Fe%2AD0YR)j%GIkVfQZM,Y
dkEjd@EbfhrEM!'@i''iNF)8Mf8f`eLl+I!FFJXf3!!CIB!EV@jp&jXI1e9b%IVk
c)$QiN[UA%'Jemd3kk5)im9P@BLSAr@lS`Cq-K#0!V,(Z-EhNF'BJX@*"h@#GV0F
@,h*TcmLUJfJR[6-e8kGUil&#Ba0*V0VrCD4"1*b(4D$+PYKISIC&j5e1EMR(*'A
bS`,$5A4f0Q'GqhcMTaS-P"j-l`j4rKHqIK)X#EcAc'*k%+c(l$`(0Fmi+lq5I$4
fcNkE3)$#FZEGQbHkDCeUYKD(1GDk(p(V)$B6iB0i&"DrN!$ep)5,qEF51,(F%k-
!4'5KZq1-KGLhUTA(+$D*M+DeR0IRKK*AC@dm9(5JA(aESmdH-['PdE9AF4RYmHl
UARU26Q,F16q!UUXD'"ZI!S-h$[34HZVPMEr5aa"8VQ%5H%DdP(p1%5dZrTDXUq9
BYR2H4*cIdecEF$e!(%%i8'h#[kDX#NmbHD$(lm[CmA2MkYB'CZa"1AiIp`b4+L(
Y(&Qmbm(GYd969f5DM*ZdEr5kSeJU(20HkPLDTk8YLG)eR)NRl6i2L`39AFMSG2p
HEA31j9($Kj,-k(G))d5@TrBhJ'9FTb3fqBmpJU6`36jLP+5jq`8`abAC`ZCB&F,
-m&M!J`mjAD5996B"5AQ0ZhCbFei-Lj2*!J-5T,"9hADS5'!,iJf@P[p%LNJp3dK
93Di0a-DP@NkJ%85p[*5Z4h'akL+K(KFP1%4IU'hY0N4Q"kDll4TPb-XF'&KVqqK
DYQBBL"c,mA-3Z#ChDAUGGpX89VZ9cj4RSpdkrpfYI4028bCqFhaU6*aA(D6R$K2
LjjqEAK$"ef@8HBY(iM9[,e$JfMfdBDXJ45&jQCESYCaGEUKKNl,qEBd``AU3!*%
pa1Kj$HV*U2M)jHKR(GU"HT[-D!@`!amRb-XMY"V95U@SP'rff2SRia'9"drd2T0
-$1)C-3C41U@8PLId!c@)N5q`-pPF*L"+qEl0pGBdl$V(`423ekF8#VmCJLa5TpL
bE@LfFEi'M!@*)Y9bT1j9H&RK@r"Blcr'NB0'F0ITYYHq#3F'5Z-,YS2VZAi3C)m
bD@eU6)MH8*IC`lL[%TfIF$l5MQ-i%c8lI-UQ[(RX+8qLY,G`SQf!&Jl91MhR+!4
(KEJ'KGHT1bm@2TeeV#EY3Q`N"DiIRk3V"XCHN!"NB66(V*pZpK)9$Y[RPd5YR[*
!P$*"*8X*AD!Em$p'LGE0eY"rB1C0#cmqcKBQX#EQ4cc%5VcJN!!@2T+#*NLGlmC
`LB9a#EIHBhYS%j9BU6SeX%&C(BKV*A'Q1rX+IB`#FQC9B$&L4,X`hAIhk5"m'!0
6EK4lL3Tl'8b%),5-mK3(N9Q-RkfH3NpB-@`8bAHC"RRXki1KF(MXeB@m81F$9h'
RdT@M%2"PlNN)RGJ)I0ZfJN85QBDJ6Jq-hi%HRAl`hIEPMKEIXlJUIjK9MU'(G"L
pZGmNIQU'BYd-6[[k5A3MS!JTGJ3++dB*ULBU$&ap'S'HR5Zj,6$T8"0&J+f02MM
c69A[d&$mpIXl8m+c6YZEQQXdj0C'R9GNcc6Aq3Le(bJJMN,C8'QX0VpI'fqJ+!J
r'`VMl++ZY4a#R(JY4'P%6DCGc&3jmE5lY$qH)S%d36(r&c+!$IBH)A+@Ga'Hf&P
#d&"e@1UbX!i`,Caj*qlf!XGHdAHpJhC8#hbRlQY!(eJY1RpVkDK!mE3!mKU*dVc
"F-"`h%`9B$i1'-Q3!1K$reVSN6@TUZD8PI#*b@PZM-5L@N22i`R!F(&P!IT"l2X
N!E"4G"H"95ikLL'lR!mFB$Cb4r'Ld5'!`L$!ildhkZR-CjA[,C,q&Z(98'c!AEh
@c[['qMma#q0rY)'N&cDIP9MR@F$5B8@3!2)1iBG&rm)9QA+$kZAJJqN6aiQp4S!
Gc(rcpH)'Krq)D9dL0iM[%CFY'J4dU-1k!hhJSLZr`ejLm0GQ5J5T`F@H5P69%2Z
m!EP'[b1F%ID`cmUZ&9LGXq+f+r8@6[Q)TMcPY%$4#59jr(qSUldr+["*,Id+M8#
TC0(4SRDm'YKm$8G0F3IrYHqpN!#iAH54&!)!TQm-LIS!3kc[LeCq!H*@0FjA"(M
1q@Rl%,+@bD4mV05BlFQ"fCi"J-Z$4hh26fU4CD!lV''ULC!!)lM,U)aQbZdIZrY
e9a-+02YQCC2ldc65ai21%8a%rCBK"`@d(&J2L"ICjCI[b2-JrN-(2idPE-NR,`6
%MJAr!a(*SXZ-peX$EqYhTDD9arPj"(64I*P+6"8BmVI0&@kb"PL-#CR%26%U4hk
'[H$``mG#TY1Db[h+&9[(d8mXi*9&eFdNVLq'NZGa&["KPlBpTDJU&M8R()r'Z2q
eH,88r"k3!%"kZr&meYVU1GQ3!1HB$bA43Z@T8V2J#Qh)CL#NfmBQG+,B!M4EFHP
L2%l@dH0cjehrAi!m%ZlB[l*jIQ-("lYBK8*@mMP@$p-'pmHC%@N%@#cBP#Jh#Ep
i6A053S"('M($lZ*m!$a@6a66-l$GL+IP*l"fYdRHL[K2iEh$MhYKSD-1c$2-%hN
h!PZ@X(Ar4Z3&CJ-PB0UbXJ@C&R0*!kXF4)eV8q`Da,#[5$-8mYbr-9p&lQi1K"f
()8p,hKSb2q,PN!#A%hZb5&Um$QHX"P[C&'D&6r)8Xr-aDFJ`1jjkUFh+c-,FTrb
k0DR6jc!0lEP"QQ@rTe#,h%qFP%'$U-F'8ST0Y6TFJHfL4ZaaQhpf"j-2iIIcRjD
[NEJPPlF`mFD%2BVGN!$T4D`6ZrJQEUYh9N#RS+T+h#rJ$85l`9i&1hB2HRKZ)2H
ic0S0(r1rHSq@-2!T8DM'95c#6ciBNM+SKiVNYFNP"hBkAC4p8amPG`k+miRb&$*
NN!"KQ3*P+XN6R(P-Ij,KaM2[`pi&@8[B+K@Hak5Q$GbaB91P(%Yrp,DQB*U)c4!
B"GY#9GY9KMq*Z0kh42dLL$C9c56edrcHeIUXpYXC6KT4GEd9r'UM)'bG29PKmQ$
#3TpKVJ"XEVMEU0[Y20'M*DJ,NccG`mYCFICNV[5L2TJ$rD46PFBiF+G#Zb`P%ir
+'T(adY[d3m*fRC-(L8f+%1"0Hqb+3T&+)VkF"(%C)&(dc1pr*QXr%Mqq8!ZJA4S
m2-p1%r01AP&VHL@G0-m$ZI)e8N'YD3LNEhh+@%%6$R%bUQ(YH9Lr6+VDb1ciUrN
*FGJ&PVBlS`qhEX(G9JUEG4X#%(`5Q8Z%NiDd(J[`d"HL8HpNDD#'D5&pjkRXhGA
fkH*kYYhb,'UhNDTeAP4cAp6V"h0-PH+XfBV5b$mI",3JmEqe$V$GPprGD@UpDpj
C)P,4R0(+jA6rLli&95f1Hp%1Dij*IB29B64KL#YBUEBK6J-eI5Z'XEm+DTP6HhR
lqIm`"EPr21BjUN['KbIir8Q&TS44G0XYriFKP'UM[JALCTRjCF)KbbXe)@ED'X6
lUaU2dq-TGcDJ["1#hche`hTjG2EpL5!B&HQ6"(8R"J"ScpQX!M5pd@fQ*0a%3i4
TfNmiPrQLK*5P)-cJ4@4JNQ!!'('2DN`THFAZaic6B`*NAR26eBISdic3S&YE#9q
krQIerFbQ1I5,IY4A!k(GDiaJ`%UTC5VZhP&(YDbrZh`S,8(ZfXdQN!!+$Sb6)[d
dSMM4+GLFa"UjIeRfJA,bU`!`jp,P*CHr(9ZdRA8kc6Vr%,XU(d5!PRCbHf)LTE(
+JPe61j3fKLGb[S%9lbBUL`1Y&B[amGc2ldNL9aC)`6MKmVpmEp"@3SqCe&cM'B1
e'@rDP$e`@0!He8X'!6@3!+YqZ1F5r@+,lmENpJ#2N!"P`4L3!%D1!'8iYeEA['*
CSE3`,bZQlB*M,BT2+ma&"aSSAbTkV$J!iJ8VV,($M#63N!!T-4"-Ab8DGM$j*&"
&'e["kh(lE#D+Z[%D6ij)li1$-j+L8U*9U5D"PjrSD)4l+YT[RGH"mIbH@fSK-$L
QANU%8'TZQMI5Vp(MZE&+pAGG035r#Yi-&TkdI$3iSV[jRSLIFED@r(eaGJ"k)+q
acmSafNJG8Gc[k)E0Fe3cB-`[ZJ#3!2*P!-VcF*qcjr!2&%a#aP&cV*f[0U4%@E'
lbj&!qkMR,8DN&X@"`Hm"BR%4,QM3JqR5RfNPTCBRlaQhk,V20'hG-B"f@TMF$cq
KLjFTH*1&p$$aX1FQ-BqqFl-3iq51+rbh0YBK5f08p0$mV(8B!@N0VR'V'EV`Lm`
,e"Z8KNkTp48640L&X5#9[I,!Ih4iUTD%CX*hE3`&6m)eS-@$-p3(QmZV,(Nm[3Z
*LKGU$Mr%C@9CQi`HNU-hAYSb98DrR)Tb`Rl+HjFhrNhED-(q&@m`4#ciJ-34mQH
)X($T"@(Q)d[!2b30eL!bpL5[rk+U69E3ij6F+d(AXeca-Q*B0!j5NSC!jPD$@M3
piqC@RLVEr0F#I$4A3jAaicTik+M@mKfG+'6bUrC9mUf'akJ8[bpKbq&-r!LT5Mq
c[@dYYV4(kNdI*$[k`Q[iLY*!*')lBK*53"ZA2-f@pqUh+F$TBlC,ep4M$0p8TFc
Jm,aqPAU%X12dAE1L6b4!dmIKFMV9SKj`d"ZIh*kH2'flqTITcNQH&#cGBUcBNbU
1e@aBRHdM,BC@LllS-0R6,feJI#XF9Y9k-#V!JLmJqb`%X8Va3qRKJjQZ6Rj!5M(
0RZ-#TPT$9HeYLEAbY`aU+2h9*p$j$3$89'M"UhmTqk&ZcGRf-DTDMS[[h`djqA[
pZKZmMT29#"9m,CA$#hE"k*0-@pXV!e3B1SE-Ze@*I,cbXF-K[DMU@GGfLbqhkRl
XIhi(Z*50Cp5qlrN9552Sb'NA0eAr(m!(G1A-$aBVEhhZhhNVHcbi(r`4Tf6%(eR
I2D69&r#+P,Q)@62-9Fm'aq#2Qm+e0jG,3+DkEJQAU)afd@6(Y0UG8Srrj,TTV+B
eNKE1fVIMpC!!TR'X826$B*S!Z"jJLddA#meFeNU@%[1Iq"EI4JEUd%DY,,lE)4q
-ZCI2dpE@N@NU'Pkdfij'85IMmXAQr5rfj-CIRXJ&4BbPYq-BYYBd-GB+L(XqS+&
R`b8G@+&R-d[8I0M@*MD8fAVSmRI@MB8*HJp&4#@ZR[E$ePKA44k844#!$0YHCqh
ce'E$eKK'EZ-JI6'!-`Jd6fcKl0k+NSZUrP4lZ+Dj$*+(jha16pik[kU6-T(%C28
EiC0[4)P9qSQTR9!TTSSQ%kj*3kckZYQJC'J0eh@#ePlGbVSV309rFYT5iJGcm+[
kUS"Db,+c8[E++Z-0D,qIaX$pm#dCGBBm`'cA2Z+-Hr[iTQpC-+P'rmPQ8YF")R4
R*2"#DT-aek509M$-G+JN@hB%(C4*9Xp`4%`-BTlC`4+3!'A"+%jjQV'e6QfpJ8,
idF#immNPr(Q244hR9,MfG"U"'Jfp(%`T`lEdMPYUTc@,$UZ5+q1(KmrETf-!%eH
TU-,YajFeA(CB*a%3@4$)0'bCkLHF6U0,XJR[[,dY+V@8"D"N'`8ELTPcad4)PXd
Ca&r`PJ#mQAFFBYhDJ@"H0P%h-l2i'8I*3XR*IUZV6a0,T$T1TjpDEDcr30f(%ip
T"EQTJF,P#&%BC[4i*hbS,+H&'%*h1q#NU-mF5F`d6L[D3TeBV'C9LX8lcm9i6Rc
G(+9UDmMa3QN2`65iH4f[V%6Fd&J`M"1qi!+a1bCM'1TLaD9,!@ZI!bDRB"3iFZa
H3$4!8@!bErjb4b+-TJrhBaXfB@'aIYID$,3kdN$-PqfaMEq')TS`UeIre4h2-q`
NUC1SLD9drYbX)6(FLbQG'S)5BmTTXIGf2aV9KbCq+NpDUX8TVliFX5icDBBeE$e
ZTGr+9jLC3B[b`$!UJDJ!H-qIU5JcQL![JjMT3kZRe!J[4PcJLZ3fD[d`lT1rC%#
)V'H5Q!d#Q)%c`l&mJ#!AhMI2"5,AXZKCT-S!*GF5REQ$F5YFb+d#`QE3VB'%md!
L4&mSpilMG-XcRRCJ)$$KBDL3!*P#0F,HHZ9"YJ+UD`YDXJXQbr"fB##FGPdj&"2
N9"p!j$US2(N(cDaqSV(l*XC!Zab0BRSl(%)GAi-6VURNA+$"1NFZ0bq8%U&*9j!
!XQ*Al3"kB8)Rd6,2q&L4PiQPY%,%3(THV9E6aS,cJlm8(Ace`MeViF@p%$d`#j6
,ZlArB'[Drp$-9e3IjJ)XN!!Qbb$qlAM4-0VSF3G@#-K+H6kIZ$q)8EYk!RaaUqH
m-j*J'ND4B-S'@%#M[86Y0-KBSMLi!mX08''-9JaCGU'XHYkfm3ZkcFTGI+ek1C!
!fT,bJ5K@aCIS2%RZA+kL@6dAN6SS&cN81SR'rbh)0*B,,"febf8d*"T1#(0h&20
cRk5bAGd9ZK$[IkjB0&RUCLA"hF*JDi(T30TmPEk24jSL!AVrmKcLJrT'i9mIf)%
j+J8`D+9N#aa&iKYBSE9QP4-BjZM2lBi6RZ6B$0Y8YN5!#r,`Jjee9HfNE-4HJ4X
3j"@8J@E5rC&+,ca*@i2eNMB$3FLli(jK1E'53bVhZ$8YGUJ8-')E-XC*p)E*IB2
Tc!q"ea8Um-mf-$#F2&MSI5)kC)PpJld,STC6*Q`#'[([i1U1Q2&5,[F$PI6"NkK
6Fb@VmiBBAmaLZ%MF8a490JF6*6h5e,9YmB`+ZaKVfR!k+2'&SAZC[Z5VK"jGb'Q
3!+BMMj`6K1(h*VMTcDJEk'k-'RbR3r!UH&-GYb*ERY3r(-jV%dZ5N!#,6RFr&@,
'!(k22ZKrYieqpJZLG,b`APPqCG4USM%!0-QF52E)NrV*k8(GKJ,+-k@GKN6["YP
,NjL+NI"TDKhN#lfkQe1AiiH"G*R&f%R"ENpqH(L2I+HN(ab[DlkS[N)Si!(-k9p
J0XU&YKm852kSSNUVf1JV8q(FR(!Eb)9YRUm0fGH@5H1$eQ+ZRb@D'd))J8"PZHV
VAX-6D9`i$'6$TrC8ic,TpSC3MKA1E$Q)"T2A3j'j4(l(@&NB'cJlqT!!,&p+Zpl
bdF'i3Lqj5%BE%UVZ-d0a4L``SN16i5UEpqIf`Y1FPK$@GTjVZC!!kCMXk+#85KL
41mmf@3!mDZJl4pbfh+LV[CD&epHSAkLj[hq599rJpC,PYi)rN!$h9(TkFhd&I4J
VM`N0+DS'XEB`BUHA3iL$AV&HkU$-TPm4MV9r@[!"$p$A!Q4bC6pjlT@qf`XV%kK
6edmdd&c2-l(f2*EE(A8Ne,03Zh'&j*kT2dL6i3-6I%&lR6h1M5AYiU%MSB&-#G*
0(l@qra2Ck&(!bJa%(TU+0LNQ'6@1CF2$EbLaIN06Pc'c-V*FFP9A9@-NPh#069R
f&558XG$+,,#(BMLGkU98cVF,IE,`r#$H3Z+4kPD1Ga,I*,9e50NHCbaqq!p,ABa
3(2N2r44Ej8[Jb2Y)r&'ZVGaM*([FC9$D,bk44T5LDq9#B,G8Sq2FHcSIcXJLCBj
L[#)h8#mF,5L`ke8YPdlC"ljfJQ[6IC)E([lqJVXAbP4ZE1TCUTKrJJLb&Mea0dL
4&J'd5dX+lYb3!)J8B,6(0HR@kHVd+5,8B,mLSpPfAjkbfPMJFcE*!UM4FLU@pA+
lVaUMJX0C#YThQ@'%(Pc@dl+,M,"pi*f@i#*!e)Mc+)fbpFlV6j5I+freXepHd,-
-E*Y*@YNICU-9eMCm(l@KDcVbD6#8#906RhE%m3*EfCm@F[UI)Ke6%4DZRD3MCKD
HNLNhd`IqZP80rAR6VYd4,`IHmL!Yi#YRlqA4(b"2e3PMC5K-B$pNZS'2(Hi"QLe
FEa%SL(2Yed8#[Z)-Qq0%FM9bhV*DZ54PNlTJR&qHLELEd+Zl)fN`+D+Jm1Hd`8c
T#"NJ,XVaA"NVlGF4+q@lrY9bkj!!('A+pR8rfE&E$cKf"c6a,cTNR9M#!62$[(!
GYe$C&Rh9H1&4-ae-DDhQJll2($Ha6%r"qSBM$%B"1)!J2c#HeTIR'-cD8@RRM$m
aHGXNmL2YN5Rf'&'&N!"5`b4ba!0GLcIm-Q[&2E$--p60kfaCNkk+SfX$3$JhS%N
(Y6)+`+,Z8!hm[3f5['UVrp@d9GZ@Uh$Qb&$Mj,c&2&KDhTEhZqc0BJq3!0V4,#5
$r$B&@q@*AH"X5V1US)f@YqEl!+bk5#Np,3fiVMFL3,Pf[G5*2JYmC%)"Nrc`&@2
&dGaUcBX`2L8I&4IP26l8mc!YdU!rAP5kBNV1qZid&ik[9VbK,'!LF*Ek,k*`r#4
V"%UA)+"##2Y&,r@h[%4C*dpY!f@*+S)#Y$9XKr#!TN@j9NB81#bdXd9iGD"qfGf
HIQcLKLYlF,r'"k-VLD#CC6Q)k2R9Ya+G0I3S4+)e)0,Aq2NP')HbeGSqa16+H!*
3[ElP9E4LR20%GLS%*+MP&+ZY5c2LQ$GY0A2'0@LiqMelPheF,SrBPdMA)b,,qYr
!3MLLLbHbDj+!Q4a&h*%l&LS8XmGcf,[NKDV%TH*&AE3dC`BU"P0LFa9+([b!*)1
G4P9T#`JXc6#kG,R''GGI3i5Dd[j61qIV1U-eY,&ZTeRGcRZj5@5ZSh1-QMR4UpD
6(SGr*m#91B6IJNRMj*4f,(DpfIJ4T%,h+`@mmE+8LRH(`B%hkBX&LL[!X,a4k*G
`ca#!0Ha&5)Sc2Z#+6ldEei!F%LKU!NJi)RD-4JE(ZE%"`![eZS&&2KG,MiJp@Ph
29cc5D[C'3kN$Y5b'Y3F!D0--!c5D$"X@eM`ArRV$fTca%eF+Ge+8i-PA![Bc@kA
pY*p-88-%K*(IRrdbRFr*29f0I8!h!iISrF8ald6NT9,BHR0pf6*%Pk4,hMK4X5-
)5r[86jPpUbC0N89E5U`[X5KR11IATA023bjU'"m+c'k(B"6&lVF1"S1dl!IQF+%
LH@&a"9IU50qc6[5+12d3"LM8eNRlechMK)feBR'ZXA#-X-!M`#JXY,!lIC!![(5
PdI$pAF#@'8ZJ)ZFMiV%bGh+)`)UejjPLYHb&[)FhQbk6("fp4XMeHDl9e3"&,NE
35N!LKXr[rJ'[h9F"qRPE!D0H$r2JI4#@VT94kL8VQ1AJF["Ja4Ed59V2hJfB2[r
3eiF(qCYULB-[k+YGGImACU!""Ih!aFfLKpSeUZJC5T!!3IZa(rDm(*-4VhJi2&'
(RRdHS'`4)9BRJ$(#q)#&&YhkU4M'49K%$*d$%5b`MQkh1c@8RVeZh)E(2N&KiEG
8m)aI$pYc0@$e[L`e6QDh80c2EN$RD2@K-cX4X#eJBMjpETR[F6)ZKm5[Aalb8Pp
SVV4-efGBQ3hGr!R+4H&RX[9MDdMRpY`mmaKGLEVXch2bRjZk@l8@[#MDX`GZ+N3
*d)U1G$@Bd*M2KF,MiE%9'SSj2Z1C8X#6`$IJ)M[Mq%2cA`NIS@*5+6["*qh1iTC
FR4qj#Mehp&RalQdrBUKJ)+ZN@fQa8**j5b5CDYDA)T[$)-,HU)c2iXE[h#rAaeq
mc`mf%@$e3DYI1hRL$+66IfAPTq*'S[BFSB(*4lQZ-KQ3!+'UmhZ0IR*SHpXhcVL
c'+eP*iS5i1,C8rF6&8Bb&K)(EBC'8mEX(YhF&k3m-U3%8h+FIUpK5+kG)PE-YBL
+L2MZNTbLe-!m!Y50-irFC9erh8MA"[BbrFMI1f-`M,!+f#VLIc)qB!"SbjrXTl1
a$TI`a$d61P`jm1Mc9Y[c)T0G"hSG&Y4`)ZXUV+1Xa@fp8A$G[11@82`G!DI1k)3
cS`+824QNNi%K6D3eFmCB`DL$p!KVNK0QULbNHU6UUkLQ1Kc,,a'VMZ8,#dNk9$T
ZZENq0%q-&P)hYHGc5(Z)LPN*#B'd$MEJbCJF6i(K43,$)U3Vp"9$iEE,&AISVK4
pAT@R4rU[ZMp"@[0!hQ'2)+TpNC-%MHG6$ZLTV%dQB(p$dC,A*H'*hbmGI8q2hCl
rF,j%"++@3'ZVFD8)dD#C%c23aAD%P)M4DQIMMK2DaJm3N!$aR$0Q4h$,ccdN'JT
$eH*F(TP*0f(X+b0a$"fVSK)Y"bY8'5e@k3(5*PRj"SF3GUjN5*crQSBV&RZ#2U4
LR[c46VdXN!"@e(RXQ"%%-&BQd(QSc!TmMSJDA!6*6#hA[2(q4+e@0%`4P-kl@86
$)A2j*944%f"*SaNN`2TY2!V3"jD$FBe,cd8"2D[iiFPa,XUSr#9f-PTc6QBm8N0
cjXiiBKjSkdb(M%J-`c$k6Fr0f29VRYC5"8K"$G-#hjeLYXYFRLa@p[SrRp8p(VM
5%h1HiamYG!%YkfIKrBpAjAba%)BS3IdSpJXXVcm[ZJPMHH8,PU90LGJpaCYBj+c
@)Dp55%IL0#XeZfIb9ZpNd8MV!HBGaN3+%D9(J&9H%HpA5l9lPX8#P$"CAMcJr(H
dG$aja#QE5[59#b'B+aRTHGQU1dq5VU@Z-K&T[EMVQ8ajUa1-!Q0T@ZJN*#PkDJr
5Eje9eCd)N!!cKqX0ILHrXC4%l*di2l!L(jd3h"6,'HRU8j-PM6frTlR!q!hY'SS
`$C8&(`'JHf"6TbC#M`"eL#KQQQU@edI'r5F1S-(IU)6LQmBVAbhdA4XBMeRN`%H
p1iHHa6RM,M%*Q6`0P@FC(YikjcTU5HJV"l$8Hh-&F`fEKI8$,TG8[FEF4c!6F)#
*jifaV#5a0"EV@C(%HTK(UKkqc*90abR&'dLfrD-$EJ@[QF@!hj!!Z8A8#jRLI"`
GPVD#PCVcQXB%!2#$E@A2'f+&F,UKhlN0XPEc'lmiJb(!8QKkaZINDX-KZDRLZ'f
h)e,Ap`"3h`8V5ZpLj`&`$aR')rY5Ne+Qah'-!9#R#JcY2k`da8CL@mV2X(CaLId
d!elh#%lF9@a9hrE&[2--`HMBUm"U0&G`a"63(a[cZjP9)M'TXA3-RQm%2Ba`9d#
5G%XF(BBF%CDSk4IUSJ'[9pZS'KZ92idpUi#Xq9,Sh'm8U*fN5GjJ'm,*Ph8E$d'
[[[d'`Mm+-'Vj(NR5Eje9,hX+%8D4dPi6r,&HPFh`*!b3!*(*'Add2)&Q8bPbK9l
MIY3VcY#Vf+$4rZjpSA%3PD-Dq'`ik5%TTVbZHIlHhf+kKlrDI"15,(*d@9N$YGS
Y+3QZQV`k'6R9d3NEjdjm4I"Iq#TrmKUNaA-1M,cM9X$FB(Y-@#1ldD2+qQ,IM-+
Xl13iE`Z#'i4dip3+KT2k(4+aY1E1XQ42eYQq3BLLC@'2EZVN')[TGBdZf)EBJca
H5S-"F#8'kAV%Paj%Dk!fmNI`1ak&H0[MhA)eqj'q&,,L5MCN0a`4T%H!qMaJ9!m
S"4$P$!6pkGcD!hrXcT'XX41j"JrR6VlabJ#ZRU"r3ViRK-()5BlS68Z6)YZ!1eM
Tk"eQhB&Ppai-Ec)"ST(RQ1BXLa'd56$b&P'Km@%MjpC,eJS5Y8"DcjM2[C[DIC3
G'a3F+JkSClh%JN+KHq1k*BhQ+YmGlIE!"T'5(3)4R1@F0c6QIl'2L&NBULZS0bH
,c"1E5eahD1D,Pqjqc#+f,Ch5CmZMa[kL#X!SqSPLBqGk+D#1emHaP$eiQ(kK[b)
A3d`eAJ,9c#&@Ch3)(i`r*M&cCMXaJDSdfQc1kSEUdATJ[+lFf&'j!$hAp8(qUT*
0bE$0--G$-ar@l'B,PC'q00meMI#h0HmaRjhlqSNRT(H&-db1+1GfG`YI#V5RJ4A
'aKldrZ,AI4cQV"aBZlhc-i`XJ9JQXdJiS0U+$BKf@KQpkD4h6$3@B(PKD-S8c41
IBX%,Hi[p%C0CQLlji5fjb*!!P%(KEhC%&F&HQb(N8GReRlZ)KCh,,Q0&C6!kB#$
$S-GXA,dKRpJDi#GXXr9XaHlBN4NMhDUULeFk*%1Z%86CK3XGq&6JKlN`2MhA$&p
%C)`MmHG3pG"Zb#P(P6[*CZ`R#E`QliHIZ6IE5d,&$$Jk'NFUN9-iG'm&I9YjcbY
CXjm(`,8H8QCH(j)I[Y%T5cXIXlQ,hb6MD4L600[K"5F8+C0Z#-'!e'1NLl")[B1
8e'qJ%,p[BB9$IRP%eL%VRQiqAd3%@)L)L%15bUq"06!cm'hBpLYDJpJp@'R"f9(
L[l5'rEXP&M8'@"*V$9KX!`r%SI24'p,KRN'TY3a"PY3c4YCTiT+U,M(3UE@,Br$
0JM60qE8NefH@QF3E8r6Fe[3RdGGPkMKdCp2H*),91MlhAq"*2+&GPR"EZa!Q(B6
Bh"H@lj652,cVc&APTeEG+h@@#UdlUEUriN*Zerkr+Q%X$l-PK)c!SIG4kHQZeU3
1128ZPZ2V*01b4mca2X0KmZf[3SFh&cb"c6b2RGFZ#5cr*b3XG,RU2j4+5jF[)I'
4)a(&P`+j0HelkGUBp'$ZkGK`@,FH$64Yh,1,)BdL$X!0J&F%iXdCQI($1hN5Qjd
'P-m`"[V[p)pA0mEe)k$8ZcH'16qpMf5ZS"iMmI,U55@S*0`KjGa[Z(A'h(G+Qk2
!iHdr@0BJ2irr[bN`j2kFL[I#hGM,lAhR04*3V,Lj"pEp#2TPKR'HMhP9kSSaH"i
3K9Y9bQid#rDS$PkMZNecFkHPHC1B'"X6UPZ4QHX%,AX%(4YXAE0V624"H6UbcQ,
f68@J2"5VCM,XQFKSF!mICNkK#EH(0h[aD`iim[cM8Y)Z`+N8J&QYjrBTk16Mk(`
K`@H[#p'j,GM'YUaUe$&k'm49J5'q-XCf+0EXkHS,e9a4N!#'ij)(lXPZNHDSLeA
d%-NkmRbN`N,Z$r!B8cD"F5Aa"3A1S+J*G-+ke,j!!358Hc$%*0,e9&rk%1KUJ0R
p8FLjd!-`MUJ[V&MB[E,FN!!XK6'kj&N1p)j3CDTEh(-'P0Sl@RFmEa5l3I1AIqj
+,K5p8NpCBHXjN!"DGb'-JT9fPGY@AQ[5R3,Y+Z9ie3j3`,*LK&2LT4kJ3XEC$`+
5d&e%1*C@*ZSXcZ63jFVKB#)%LTlTNkTibl2%%)i#aL@X%fRiCDhL+QfEdp,U"59
6NhSl!`5h-icl(i)q*R5fYS+8LTll3"Y%"l"P9SSF)S%3P"C1BKG2DPJ'6#IJHq%
)hbM(J6JA"*!!ZlUPS!4BF``k*GM@kIZA%PT0aIZipFQ*F-fl1!p2m5)*mCEEQDc
6"a8AYZAQXrUBMN2@@JD@64*4E(CXaXe$JUUrd,qA6pr,Y3'#98#'SZ38q`BL"""
cAfIE2U2jqQ@&'P*rNCqRG(B"Gj18pab(B-ph&PpKFI6ke9ar)5"3A[3664%5[IL
LhPH+"PSkIe5XRTPrCmKed-+`rjLS#`L9Z#QRG4Xf@''D*MEcS[[AYNdj'`[Sc#"
p10aP8&L12Km5F,NpmS$G,86Jmrp2PrD*LpKV`&1[CVS@R#'*`@dL"80fr![(&)q
pj0[ib#Q[Sp2$U)G2)8&6F+k-Z`Y*EmR0`HfA)YXhAZBMI1A$@N+$I!(@IiJ,(kr
4mHe4#0l6eGFJk$QEB%$0CL8cC3G66dd3AQY`*riq22h(4F0#C1Uq-VbJ9l8eBY8
!'CYTITYbYY8b(FUr&@4Eja()GkF(15@MGici6@3QkA)+)2f(14af1U3G,#8KrjY
j4"I5G23Mp5#fkY%DSpmUZiYf5-f`*(jpQd&%f2"Z81i'bTG!d62&cVQPZpk2j"Y
cCipNUrM*4""3FcXklRCIjf(p$-Aaq,b*&a4cNU$3AGrS*8Q29c3,$2,,K$d!eI1
FF8BkL'iF'P*3!EZT)UihUa-fdPLl5B#!d-rL*+e!P*NX%,-[Z8R,Sf$+T--qhV1
h%hl"SQImPKpfM-I)'D&$$2I8UYJ`Q[9(jNA"V2IEY5Rh'%G8$mAEL0p5,&bd-r2
X+i%GAM6"T"(*Ph[6,[8Xia-V"E)V#%!ajM990`lq(bZYm"E,SaAVrQ*d19("`C5
A86UjX$!JVGEA#CrTJ)km!9Y!j%%if$$(&[aMCI['%UBHqQqhGJ0(aY3PPS*GRaE
M26VCCj)G-f6L('ZVkUAF$c3P8iGf$6dXXfA8@fk0J!GHYXX5i[Gf9e*4FM[kA&-
hN!"ef6m[$`LdpRZqMApMS%f&[%BIH+jcU3QmD`Pd"aX(LbpFGd[#fD1GI5Ic"lT
+[Xr2BP-'H"fRhbc2VY#9'-@#(LpQZ528'R2kZQ!#RZDY"r#Mc)#'2qXj5MDlRVE
'P0#DbZ[P@bR3Cec[mP2XjFS)1&bkFG0aV&ZGd6T$@am+AM8`R$*h8QLT3"`miRJ
5LD+QmMRKk@(HmPAR-0c63V`SZRKp5k&86'aF'Ikfa4CCk56r(i%V#6GH-54LDR8
Xib$@N3k6TrP8QmmhDf3phE'!iA$mmR"6%J0Pqq9X,1Q0+,(aSKa"TT[%2iJ`SaL
frUF$5X!`l$Rf,01McZcLT0`0GEdZF)m'GR['(R5#GZ9H,(@k(YZBdf8*Y'F[XR5
(k`G+(A&GZfh!2-HM+RHITIPkqapD&K@-eRp,&J198@U55rkP%B$-8q%8f'*2#(K
NRFX3m"*JGbAG@BfJEZm1VGY8LZl`La#8*[hZT[0GVS("[&8*j6c)HL31F9[(d-a
4)[E"LhRH2+-dAD$Ui!C*p8&2$2FcH,@Xj*!!cAHRQ+Mc*kqjiq`KCQTk0"JiJcP
3jdi`jlkH-UA36ZYT8%$HPK)4#',i2hmkG+AKREU-r6*aH&GL#8,d'6a,TDj'ZFi
kN!#BkKI`N31)dRBl$A2aFQTL`f)[+pB4fD88-F8iVTi"qQ0[QYCF%iEZDqPhPG2
p9cl0#(EGeA5hDZ9fYk,@TL#f(VLP#`XrI$-H%U'BTR,STDj(p(HP[G$!0Be["-A
BaV3ec`445&B2mm2FGA*V(bQ#HkrEKqA*,ZEkPAh-8c)9TDc9N!#9b'mPjZJ(0#+
`TBkB[-rP0I#6NG5`IDha%!i$I%2R8RCq$0K2JT`d3`qS$3`(6dSYEHK6AJ"&ZC)
fKkkMjlEmqd&cLSH#9HB3jk"kA89A!"4TG&ZdfF+XP)5p[L,rCMfic!0h5qNM'(S
X+*DImY9JNmNrh9Km[Z4'Yb'"F)MNi%kXdeI3D2G)Sm5iFEZa$i1"qC69'a-dKje
$'r#ATY)kMIY-TkIpZJU*Z'MNP-mK9eA-M5rc6Y,Eb2,8,l[G56'PZ)KM8B#!@1L
Sj`iUIEfVliD6%a$1V"+AlrdiJ*D'rUfAId`l`rNSHr@TE$,$6k!Da"@LEprA8jm
!2f00qDC@C5Dfa)ql,l1N0(E"qaA,2arEU*hlU9ia$l960f84m4p!mJDUNGL,$V(
10b*HLUad%8@"cUkmlH,K-@4pUdU4K#qCQVA2-`-SLa'&,YLfe4C@TL'aQQdNX0D
NRZ-Eh0bPB3Pf#+@[caSJT&Zi"B$`4bb(m@pHTkMY[FZlZG2bRH'Vd2#MqaYIhRb
MG3"Q%"S'N[IXTHED059Z340Jl$H!'0V-,-Di3D&#*RR($mTNdA!CG,rGFj2k5!S
Fq20UrfF5@r$GlV$J)0fQS$VmfdJfXbINU+pFV(Gj4$$p6)-[R9N`HjPX(H+bSec
8A9eeSM*iq6!-GF6b*VK6(fbE1r6V-HNbLKLk*9jDSLr&lBNShQD*3'M9NKANL'R
b@HS0Kkl@$Gi1JGY4lH[FRP1)kU0%r!r8h5*$I6%hRqCC*ZLl$TJU@dk[1T6h+K(
42P3bED)MJR8+FP8!$Pal)G9*LfiLJJ%UL`#0(kpi0e3@m2SM9a#m'+A&UQ"dlX,
RMr#,bSZ*kahc[kRk2RDkNV#NIMN'`f@LLp'+cl'rGd!GCNI-CjMNaX(YFhh6eT0
8,RLi`@jQJ(,mFc[4HI#%V-R,mA(b+XrJkUUMT(,qLV1E+FKl9D'!IXMACZ6!$)l
pA4E(@08l$)L,9,KML"PF#-39XJYJ3XqN0CpVX"fTX8IfTkNdlX2p'$!VffN9rCD
Y(dEQ@FSQ%R2Eh[l0#cU&kZB,U`emNEe!m-$[bmc2YbFALiA'ai&p%VlPK53%#Va
,p)rJbKHV#8VHZ4MDfQEHa(T'b`6"$D02V![&+R8&M#cN[XmP&lD03(M3LSH2+6H
*L*Z4&24J5DpMrP'#[-eFkm2Ed5XfSXN%i5MeFMD['lMU0F%5h+%'%E91K8VAbeD
1GkM6&pJ#XH&Z()he2aY,0(YhJ6*+I[JhC-q5j6#H"DDJ5h+KqQ,$[6$KMYLZ'cr
"c5j5DH08,@#ml(pkJ4K*$&50V4cXB9q$3!RCX+3qk&edS5C*8cV(Mp"PV'YlQi`
Yl!X0C(e*X"4rmM98Th-2`CNX0pI(j50UH1E+@Q@%(Uc!(3Tea-k3!%eJ28#Qq3I
i`k)FAI$eJDj$`9PIII0!"bBR0-,qkNkde3&$6ebCYpPNYKU-mRCdIIEk)S$$BMX
1M-[KX'3XH[MC"f)XkGHK6#IU,be-rJ9"Il(reVX9F'+,F*fL"+-AB0*4VlRKC@2
$#P3L)iVM'FJ+JSd(a"(3Np!pF`#QjL6c@h`U51&(S*rKjl$K)$FPp6pZ+Y'3!$9
&[4S[*XP+j`X6k*I,kEMBQ"'@&0b-[kD"-h@8k$QA%#Ym9"C2mM0pbD&X!BF#FaH
,4YV4'F9e[8hhM2E3mh6eaj10JY5c5j[8JT8Y(S5[)QGj`Ua`bl2M"mj,!YYPq8!
kPJ-$T%PH3-HMQ85BLY+JrSf[$BpqJMNFLFPPP6C,rl'&abhP$#IU"I,ZjE+XpI!
l+h([%L1`@E#4Cbb%d$dA55HCTKjdiRSeMUH8[RX!,91YZ()eqhe"VfU13$TNci#
p`)IiGY#9N9HijXHi'1)J14-iG,)E)H*l92%kkpp5Nff8T!mFfS0L+[",$0A&ECa
UYb[+D*L2hqZLJVLG#BbkLSjGSI$DXD+L8+qE88he9X')%NLE``q8"9[1qDVc8[V
ai*cU&3DI`*rFdhEUrPD2PrKrSA+A$M&j4!c8`cKK,T!!*lh6)qHAr49[i+'5aSI
P#e!,(FL2GP)iLhbLpq-&23HKJ"6(EEdQL"#[q"$XTpY8!@%lmrZ3!0j@i,fSY26
V#4p&-rcbcBrlM*qGD#q[f9F&!U$1(&"0EL5icRb-50qJ6h[*)hA-l!cF'GbkCY0
[&QIX2T2[Mar$NfLjKX,!k6Q8Hj8NNpIPJ$f#,hMeG&a!#+$B''Y5&XZeI$-*qY[
RlX,GKA4hU&LX@!F2MTCD025$L*KQe&EbrVmEiQ2Z9$#IEd%1QYVAKFA,9D)E&&-
XV1eBmEqGZI)F`C!!Q43"MYYULR9Y@'4J`SD!5aT9M+FJc2)F5AG@3-k$TY&BK8q
q[p0@kBrKbfUrmY3DJ%CUK2HATH+K!rX[qm9IbH[j$0&0Qj(rD6--4U5AE+!0rZ'
Dd#3CFPSU+,fUXrHMHN[Sj*hY9%5RU#(#5HTVLX%,`PJ602"0YF@0-"V`bk6$'PX
fVJS#)kaC3#Z2Xme(hQfQe(Dh#Dpc$D4rLPPUj-UE2d-jNKfr-m3YAJD1V4c`a5(
EMHNT-V("Xr3q'12l[$P(@&"erL(,fiB$&cPe,*mjp+1G29r"E!a%%dA`XZRS(--
YGZD4qp$`SSEe2TU0*TdMhQ+-)&`@!&a!fBqNDMU1HcSlRh&p(ZaXM%8%bfllbVB
994R22ai`d(pRiqiG@iBdZU@e#$-D9"X,D'bdj9dP@rEkR`P$%2aB)[B[D!#mEC5
&EL6MqrhPPb#[CeJ+mX`L0L*6KqL%0,Z&lHG5qi*K,EkT0JRQ2Rj!eJ%Y261-*Xf
[X,*@-!J)Y9&LdEGmX!,S'A4*Z%brrYa*Cp0pI"J8EkBB6Z#YA@h`e)$`UmfdHi,
[RHV0F1rRT8c'adCQp[[0`r[m6L+D,i32eNHkkQKNdqKL'j!!eFU*HB5)A-DK5pi
%iV,Y,%AYa3TKJkJU4@K+TT6PVd5ah*aX4M'LK1F"2Z2+h0GkkDMRXM!)mk!XX8c
HUGki!!+Rp6'VKfGC5IkUbFIr"CQc1SMakl`QXBR)C)--j[&Q31(!`N!JTZ[YYSI
m0S8ZTM1!i3cZ2#"+T5ebDKbiZ&NhM&KQk%iBlc&D`[l#135)NP9+A-V02#P"q(1
cNf`P[B1Q4Xmj45rX,rdUq$%RTXp895,G3qI$bh1*eUIlVMF5LpA0Yaa$"dRUVKY
5+k4mA([qm[02d`HZI2c`"-M5[R,JND[N#k!A3fhajZaB19+"0,%qB+AKliC(B#%
h#eM9BEr(9h3QZSKI$H@%T,'Jb!'&kf%rr*JUJAr!kHIL)Kh-hmm!*3A2pri[8jA
'VV1$GAB(@ef&Yl++@dKL&YTp0UZUif6B3frdM6B(Y$XQS0BTGL!I8aVm3+cIHkX
C1Xr(1jTI(["L,m,6'iT51D""S2pCDD6eG3H1qHTK'%FERZjd"1FjkM2%N!"JeA)
qc9P,"l,9MHN)+'+1hL'KVEQD['mCAT!!V026`5Q-e20LRVXBLYcp5kP2CjX[5GD
eAbIC%9bG@,Ckp%$aa`!E'BB3*0YMk"HNkQCQ*i%DPC,EKb[Ll8S(DNCA6lB`LL8
T@c6NH'$34kABVL+AI+CP"[5@H%aUBNUT9Pk@$Ni)j5+h&1Y5KRURL3E*a[f"!aT
pIb!1`-Um!kJd@p394N9d[qE!+J2P56,A,l-LL@[9BBT-$Y@f,b4@Hm[E13(JGcm
(r8b91aH1@a9"8Kc3dcfhTHk,6F4,[*Sp4(('TTj6r2!(3cpPUGDJX('LDdTce@9
,-fc8UFF8iDTl(K[l1NbkR4G2%-HD&*`djQJHc`cePhhUmI[R+MNA+(4bUN3h%,R
)Kmmkb"SFlFpQJ5%*1$)E,"#5CKNMPDD4BM3`RV*J)J@m65PP(JF&Q(BMHZLIRj)
kXCD9LE"ClILfF8ACe,b%UlI&bDhkhC8dT)DXVa'ZFT!!G)8kY"J"'*)dL0Nb)3h
rfh$aqUj5&"h(X[aQY-R)-rV!M6e@cf6UqQp(,SdLfP`qG$a%$IJaAKL+R"4ei14
G&-rY$&lE+I)3-EE58GQFl6NQhF4NCX&V3Z'Gf5eijY0R0pXS$+'6akc&*1Dc(4N
VFfUQqVS[BkNp@lmL,SK&fHPi%IDBXX5K-fMr4`S@'%"[+#+-J3&8mH*VYIpTmKH
Y-S(B9qF@Xlr1NJF0AqF5lZY5QkflQ[PBddm8PL9F`UIqY-qBpB!c)CbKI2kAmi'
0*GImiE!bhFQ'h6N8pdZ4J+aiNiD2*2N'j9),GQaEZQKVj)q&9m,-cf-m(@&8%F3
,Y'Hi`C9Be3kl$[F"!fE)ED%Sfqb$Z4mLfMM(IY)Eb"Yq6%'$ke1cjhd-S5ZbeiY
P6'%6%IpJY44p*-)f'rjYTNCX90mT[YFjRf[JN9(0'VdR,l*q6lSFJCIE0V2IY$B
ij&pUhd,GI2!N-(H[`U+S1D6EQQS+Zb)F#G+,(#k5dqL(J8A0!5,a6LT4hpGh$aZ
ie!#F@&3dmJ4F-a'PlAJ`02K5KSlAhM"fU""fk1M"fYpd0HHTLphJRQ2A%`Ed)F*
dGAcC%#Al`UIGP%UN4cIYQi$J&R0iNY`&b#AE9(d"Z)@`iZjZd2CehabGBcb9h*k
)!8lY@%'IJVmLY29R6#MV2b!6ekA[2d)#[[*U!cIq3Lh2lE[$%DTUdK#am'2**-8
K$Qbb8$VE6#%qAGM!88@lm4$bGR3eNX*5aF&dq)PqP@2G2lYCRhA9"fHdGeaPiY@
k3V#C9GY`8JahTFa+BaZ6J40#3*+i9JINLfABN!$@14iYl1b)["%jhm@Q%!,-0jh
5U&ES2K`3$C[50aY*j"UM4X%FRT%)XZL8@rC-#k2i2j99baZfDGADk,BB9R*6F&h
`"b2RF8&1%1rirGk@fh!*j6Q-r@Y2J(PP+TkZ*KiSF4p$V($BfSc--pqYC[9PkcI
IY,Tr%2[ZKV-lJRjc@*l%M['(`HN8ZAe3GjeDcbGJlTALlH4UJql4Rj,iY3VDU@#
4mrB(d@5"G#JBAJ4@+I4l"+e5*4#pm-!0D("cCf"D6XX'U$pj&!B[1"jZ-qCc9Cq
AA'#"q+*XFGfXA@![piiKL9#@H&20ejR(!UqCqL664aJBj#+KZpCB1ImBpblS'6R
!RdFfLN&9DG6'C*i"MP9*)6$ERih32a-"NX$SPQ69A0Dmj(Z"*MC1#)'iEF*HJ2B
K!ZSe3r!LF*IUj1JTe"%qP4FX6F)Shd[NH5h["9@KUScd"MA@"TYY$2qq)%P)ckE
r#@jLrB#I2lqLDH$4H2qR(@$9`N#dCM$4DH$NFfDSrrbb-ZU,Dr19A#P#flXJ@1h
iPdP(!fBG9q1R5aAaqP&,Nj6"l9Lb!aX+$DFL9&K#1T))Y+5A([6Jm[NYiN%bY#@
EQAG-iCk#ScheC,H9V+,`B4MA#b&)XGGL-@5$9fmmr-a6kK,m2)C%Mj!!VXm+p6m
M$`&TEjE!D2J-NPlpU"RlaD-*JcYb!B%Nca*5[*%%$ERbAFRA&er'YeI1fE1jMqC
&ce,lkXc)BLla-*Fi'&89Y[UFhVFmAS`U&1S!C#&4YX[jDcVUX#3d%*dpi1*@Vm(
KG0!6N!"Bj'*fq"H$F#J,BFq8EdL9JEiFKa1"2p$X,qA!rJ9l`hNB*"1rb&(Qmq6
9dkV%cQ(!VML'!`$2eIrcVQq![[B(#0V[ejT[a)Tjbe1aQM#8U[`%3A)Y1bf#b'l
kFD`FN!!Xf3V5GA#dhpM"`a)D)8L$EPK!ZYfKe%mh2""DJ(0LSh-h&r,MN5*!9!&
8*RBbU,-BC(K51,YH*BSq[`[N2&H8-YP&qNp3(%1Mp!UGea4'qkiLG$[ScF3X"i&
EAjL6BlUh4@Qec%1"pi!28"iV[PNr1SV35MfNR@Y-ElA&FmPG%(bl`Yd49YX43Zm
(ikm(Z[cVq85HI5RJHeb`C13@C`q!VAP[BI-K,6m@#H%6GqS'h,@MZ,@Lpl0rX9E
`H!aX%[H++qSZ!S2"G)N&C+kpc9Tm$e5N3rbQ3d1Ue)mXm!@"9BC3jmC55-0&k,,
H(`E)'cULeeGE2fG&ll#5AE1mi*RBc[31r#)c%bqVl-B'HTYJ(,G%,JY()q5A"hJ
DXEHkE(8IjrTjLM0YX4JQl&MpC#kS+f`Z62DqXEh&2Uf091X1!cj(,d!rkAS8I(X
K6#N9FFehC$I*JDBMD+0V#AhQHf)1Hfc(e04Bf%)dq6[XlRAHkRQS`'r@EPr&K+C
I$Y5)[D-VQChmmHYFT9Z"&MNcd0@l%A9RH8"Cp,4p`*eq@5'ANkVr4'#d$B0![2j
!GSAADm%&QA'SU5$18BP5SMhR$(+AMI*2I01ZY0XIE%)ZXN[p+,Bkb@l9Z,+-*2R
HIbL-TAcG'q@C[q[)qh$2B[aUEN,DImr#5Uq6X0jiJBhGFMf)GA'AJTZJ&i"(&hG
cUqa@Tpd!bf,iSUX*P%+'FA,)GLj)RjS&-,38)M5$UQj!SR"',*Z+T"D$bYkeHY*
)V-mQpK9NC9@j1a@lDJJdRcRL9QH@+e(rN4XVHeh%BE1Eaq!1#Sr0B@V6(QIK+jd
),"!4L`1[De1YP[9AM5Ad%6e(#Br1cbMlZK'AkXTGJ0SJiRb6B-r0k(&K%c-*#N[
Q+m#`qYNV&BP)40!fH6eDCqpb-KT&L56VfELJ"K+QPbD6r%RI"VlMV2p1JE9,*Tf
`c,*rHABKe0A4@3U@KhT+JGIcl[1`CTqM@*@AkSD8-KHCp9CjZh0jrL`AI%"8b*F
p!b8Gh3mPU8)X$X%j,!kL(ke5h31Y(I!2V`)jTi)S(kI[X3-L(Gd2)J*(Tcr"1DF
r9rCbcAGFFQJ2A%@[Z(rcI)Gr![FDj8Sa'Z8(cMQ)qANJd1&H0aErhQCM56@IH6D
Alk$)0d28,G*hI1DkFl@Am4e",66(-(1q%9"L'MjBAFSFi$pG0c0G,E-G*(,'QHq
2A@[0GU%U!(1EAp2%TD#"RL8&X,BP`+mEZVH'GAi,fjKH%68GkrF#eiMZ[NqS4RU
ArBb5Ghj9A0+a8HeZ5-q19V[@!qk@[%D%M#Zp+bF[V8A8CIFS1f@c"`EjrUb5&T@
B2ULeI-&kZmrhR[+%UL2A*2IQ*#Pq*"Pr""*`Nh5[#lGKTURN5l,&jj-aC%%#*B-
`YLl00DF0DAkd6,BY%45,II46q)FIRe$Y`U8pGr2MRSbl-VBSJ8qY5[1A$II9BF@
AP0@S#DjUkXYaalCj[dZdNdeKFf,#AJcp"9mi+Gakf(cl19*&0J*`0R8)T-j0l,N
!F6*3@hX8H0"@b#m-j(hKilf,V"X!fFAMAl&UTBHC6kV0*c%SlXhH!Jd1L1eX(""
QS!4I5+EDcX1&T1kY"ThDqq"T2+j$T)+d5'9"*1%AmcUV*iHESBdeYGJmQLLE*eQ
E9V#reDDpSd2e&[JQ$E'Q$fSSJbpRlbGJ2a(KSB-*+ZV0@A0Y#@ZU$`SHXNG--i@
pXm"hMG!hEJ1`L#Sf[r%3B)!,,3aRek%%9E*iEd%NMECm4AcC,#C,6f9TMASATlU
%'8S`CJq1l+a&C1!%A@UV'Seq,86MkVV*$Ya*F$H)qil"m'U0T0iX!"`c'2,e$3Y
6AbZ)KL*,$@&0X[ES-%hcHeLb*9U!%ME6(Iq`+'3+2!dY0lCaAIL!1BHX"fA[JRk
2k4"H#ZMm@H&l"a@)JQS(3Xd'i689'$eC+HF%UNMea4@-DC3LD9i4%U#eM$AD[j*
@X6i"D)5NT`[kV@4fR&T31aepkNGmR-cQR6Y#k8cXQ82LJ#Sicf`Vdqf895RKZHL
mPjNQa4c@(845'$Z-''G41jE)aacmH2,fDQr1Q&P3GZemNAS4@r1jI[PB4)*()V+
Re#IC$26T'SCUP4FF0hMbbDr8VMIHJ)8h,p"CkjG1%MPNY)PTNYADN[(B8#Xc`15
'6&e"6`Jk@CG[S-5Md@j"jEUP&8IK(1`Ciq[DYk[ibXSfG*Z%3DDhMMcibZRGS4c
P2VkrAH+PiMjAMjijb,A0LTTY3q('$i-"*'&LGf*T3%U@E`U5fVp6U8+PkmYIY#l
B8h`kKJ@L)MN#N!#I@LL'8i!j,#i#fZRlkSd4alF9kc!cMqi`Y`,8G-j%Mjc-2U,
0TNf($Y6+kNpl0Y$9dl04eB%Y4iJ5iAidY(U42,e1aelkUSEBEH-N1@kSaM`1a6V
eCYQ+LX-NAYiRArN`*ViSDd8U!j!!JMG3E0364SVK4h'kj6PLJVh@hY5LEXFE9d`
T4&N581EJTD5"9T!!jNXR"6&3Q1l59eDJQ!#0S&[CA@!-$A$H3S-*)MQ$e5Bc&be
GY@J(KJSX"dDmjS"Aj3`%3mf9m!fLCMIN@HFRll+JYr9)*Efq1lcHa5FE5"N!&+e
3K%*bclCa$d@ciiH9k(c2rX+2HSS0`+Db"'45e`6LMN1eT2JDqCM81X5UAb,f6-,
3&eXZqU9UM-BUC8@f2$`YET5%1ITh96qi,`3Z-GA9Pdc+DI9-K-D#M"9rQ[@Y`KQ
$E)R13Sk8kqabPl!JCZPVL5DKT-P0D6aD8JKTjchAidKbQR48(rJE9G&-PB(jiJ$
'9N$RN!#J)mAd9TfZAfALljmHiEeDiV5"%BMeEQ$IQD+fGm)QVkG3RlFRa``@bqT
$pjp9mpZ"CPD-rJYG*&SA+j+FTN%)D@$l1"3GV$M"!%p@[4JiU(r3N!$!E%&[mpp
C$N8B2BPEXpmG$p5VU')m[Lh+R8Fppf4#4ST#"Nq&'#4HJd**V1qQ-AcCBA&8Fp$
3A%[!@31kq@&N%ARX52kRi!q,ll6H8BK&'qq%8Iam1H%,J$eCqBNhMUBm)4DIAC+
pkJH%U6d5$KR+D'6d'b1aaEV(aQLlN!"P-+K[IUS([8J$2Nq$,#1)94pcIQp'RVQ
+`HclF[R)*0XDFkU2R*J#GN0P!Ml4RiJDVEpfD+X49d2Aj53A*3bcU2"pBN1Y4G$
r9&`i1%*%8#X4%3lUeXMH)`Z-+qfh(4NjA9Qp'(Q(Ch(8FEH%%V3+R2LX2-4+PA,
a1&TI@qAJ6"0[K+9[XNSEe+bHMbd[6IL#06YCAVq'$,R2L4MEq,NPNjrJFC!!P`k
M-aN*h8Sfkp'aSi`R!I"Hm20Cl+60MiD'9S9%$Lp"-I9Z5J9RV-!YddR4R5lT`(2
+e@kGq4b2`5E0(-M-Dm5C'&j4'%VjQQBRQYL1#"RjQ5*3DR#L08Yk*)FerC0EjJR
P2eJQRTT[+d9S"mpP2P!X2AS#AV`3a2f'P4Q&15i2R9a%b9K4a"T--86ZN`M[54Q
Lkf+-&L3FZ%1b9@RX`h5l@SB!%VNJ-bSqG$rMXMRI'VI"YI!I$18Abede`f6p[$0
NqA6HCQFd1`Q%mcf8JE(8CERLj)EQ9kJGqV*FU6mZ3,$VKmR0I#dS#MRLlSA1BPk
-1-qUeeBI'#@YNLE--X8!MUR+4E)'U5qpCDPqIGi)$&ZYGMd#(l6ThKVkG%DRm4G
@eR8H$QR84r#q(%'YI(1pMD3Z,(af$'V1e*q)r@iJ+dbZADUafN@5eN$6M&[cEeU
b%Qr8Fh&"iQ&iq6Xc[DLD#9I(R(&cJ*SB--C8%%b5P[pcf@d0XPGJm'B"eGpJiFU
B3HTC)JS#'LNM0lfearSH+l'DieM3RTF@5(@#j49p'kXRa&*@VKET*TI1+TUprL@
X4U-i8+Q#@(,[Nqj3RjF'4T`miqKlG(29!)H"4SR0j3T6jMGNh(i!+XS[TXaeSJq
'C@4i[qTEY25N!-LB1Tq")Fbj1qUaS**qp,,8Y1r*dc)Qqel#L35Mcm+FCkNU%J'
ZQf+(Ai"TJ1hi[PQD@9HZN3`r$6,bQUre[1AC5l48CBF3Ei5m'DZF)4[MKdjfLKp
4@BiPQ3#e+a&-6%3ajh-Cq1YjbSIU#G8@2D)mmADP#h!MJ3)*NALaj%#5j&%Hqfb
J@EU@%J`Cr'cA,NI+SY@T`Krc@A&I'Yea6-#3!+4aG9U"#%BP-KDqJ+'20`h*CM)
dcmpGPGGq6T3cVpfP6b'HDjSc5Ni#,kc@CJc+i1i%e`[eL2GbAiT)Eihb)HI3*6@
5YAkZl$XJI6aL*a*)!G8+FpDDE#eNP!K'SQrj,a"6k453!)YaNr33-JTUBBDSY"e
%,YHG3ck$r4Jh(P9j*crY"J8NMDHRHmS+[bQN[KQe-Q&,`Af5EB#(FilURZi&MEC
h$+fci8DR6TX!2-P&!abN%'5SBTdl`E"l!'*[MNbTVpJISK5)hR%`!bRTIfXDJdJ
`N!#CI3GHZL%U$Fj5THiLfille1d,VBbpH4cIkmC1V$SJ4U@kMB10@2pjJ+9jDMq
d1!di@0D-L6YNQh#*20aLklA9%(SL9*CrYC)LQ5!*R2mV+[,4XhM%r&PE2N[$Y,D
CPLJaiH4a!JpSd!M5U$*Nl%9bJ+l-!TlM*KrSPbA3!bdZcM$H4LHrIcb[Ce%ELkU
FiPLVpe,&0#9*E+J'plN(i!!RUBV18*63338c4iH*&CA#e[P0,Xeff@Rc2Fr-l8b
lQ-RMD(,B%+M9%jLJNr4R-eeSJJ-TlP4[$6R+2B5Hi3*K8LPj,5'%(prFi&MhZIN
NB1*q4kjkcp*6!LJma@`JeCQ$$(j*$q"Ma044bCeIB"U`2e*[9klCR!Gq1@p6Ufq
m28)C%f*M@5"P@8Iq$3QFUhNFJkR2cZN"8CmV2YfZ,VEZ05khR&m0("R9Q3RMVci
ef1QFeCI#CC1D$kAB4GHGl)JaC5@RkarBI1V5JC)Eh&6Ge3kbjjQQU0m$X13m(qf
r8bIVE8e*2&6j'Z#4F(*bp$Cb"3RCqjeZGakfJ`j!aV%B[Sqc)$a)@J&CZ-6Z3QT
UIJ+!8e4T[18'%j!!2+"[6`1if+jUpmJSi`JeLM0%!iTP-h61F6CUm%RG6YVDb"q
aZ+L)bfTZe0*@eD-R0`2!A[ldC5f5D)"QqBFm#4c+q#1apIBjRHLfA5,H!kYR4pA
cH'j@[dI+BP,&q6pMA`m%'H*NXfG526bULfD`S0e[R@E6M9bMLfMTX%%99+%+idR
Ve-!%SUj5UjpKl#I'T&Fr34CcLpZ!bcQaFPrR*G%#2Ke"JDN04f!Mlh*$i#DYQPc
2P%iSU+0NF13e*MpBPZhGa9CeP(QC,8KkDhNL3(2EGTQI9Ip48r6"aLGj$0LA@3b
$L`kZ!GIAlDdF2PKF5EC,Am)qNEiJ6`V$2`lTKT+iqIXSV[U6$MZlCe`d1k'HI@d
Ca6mCPBbdCp9'iZBSKq6k&Y+#5lVhh,BJaZ'D$8Y-ATi5&YJ0ea$-Fi84#QG591"
8am1-rMi1*jCVFDVT#aqH9HaJD(JN,1SD8R9l95!Ka5mY`kD-S+%8'H-R+Vb41P2
9KhZ)'GaKSErMYeJGBM!5Z*Qq&rE!"bbhBjb,'B1Qq)pE`)k#piL8"3J*jNCNh*9
IbB2["EX`KLS5(fS-NKN1+0bdpp#0fAYdQlDZiKjS!T+iGM,G'3hVD1N8QAPq0QX
0c(mC6"9!L1RfhilU5M#h`CTjj(*+cH,ZLXNQVUIm[d%Rh$$mY,%V-9@dk-(C8ja
%`@dK23S3meZH2K8L''P#'M6P9$rF&[!r[!DB&hCI2U5hm@Ia`1"YSE,JiHQ8*l1
%Q#%q*9rEYec'9l1LVDeFEJVJhGGJdDD+LY$M)(`Ab"P)*C+hYF38jdjki2N3IV6
K3LbT!*mNXCNZkcm4p`DkP8'l`Pm&S"BJC(96)+F%BFLKEcjj0&M)JSXPAZ)jrYc
k8Xk[PM-4mD+Lji,bBGjeaF@FVqAa-&iVC3M9qZ%HcPq,[3J)M((iV*A,E'9P@U[
2IiGFLd96cUV60JqkZP,Bdl1RhZ$@"#2pi55PBM@i4(ieIN4Zp2GaQK0+5UK%N!#
D&N3D$DJkllj+fmU[c(#*KQC['p!"X3GZd$6[8HYC%3%92qQIPphF&EYh+13hQ2Y
'kN3BhlmKmB2G!6LCf-)B"cm4#lm"$TRG4QC#9$rb[aU#'AABa6%K@2IND@A0'a)
Q+Y92YVNFYZpRp0p4@-d'a'dVel1CZ6%ePBkTi&elCeHkMA,N!ERq0fi9E&Arcqd
3f(AcE4cBkL-r0Gke&Vp#(KfPeeP"m[Xp)i)qfq)T$5S0i64k2C@RMY!*F[)D&af
69f!TCc!Jh8lDdDam*pi)qkiQ+KQ4BEJF"j,#aXNT@jm*[m`110a'#V-&HKp&*3r
2rYe$N!!UI-ZA8DR[6I2qIcpjEeEFe5dVTlC1T+ZR4QSqKK,)8bqkQ&(Ke)0Z`(X
(-1Pe8p6JpQ,5G-&LHI$pSXH#6bjC9AGme+E#%C!!,Apqp-23$T%X)rj&4)UkCC+
rQ6a)pj)#K26pZ[I)%Q'$*D1KXE%+8J5FM4%"#6jMGT()Z#ZHTC6aDqQNL(!c'aa
%&TkEG9r&5FBVqM0aVH5`5La1`rC'4j@Ji`*DFSQRDJ@L"H(02QDNCa`VXIDEd60
FMqbKEm*PAL%FTP8&m@U1biTD15191FU,ir4AZEd&2!U,f66R*&iBFAhN,rT-rTA
f*`ABMX#8h5!,Vf9a8J9[iBG3'DNjG"`*U)Y#KT4bRHMCKCScq8pBq3jc*KZ)N!"
jSTJ"U-dcQZ,b+q"fPS+ClN6'3K#mM*AII3iJcTc#8$LN2bh`%2BM,(Ibml5dPi0
P!l1G1QVQFRjFc3JH6,[&(",4*d@+jS345f[@m)T4RBNU,R)**VPkQVqJE@pLL)D
e%YS)%-F--Y0NJ0jUGpaIM!Bqr03mP$d)D4DISJcG2B(cS9AXSGTEb2141R)S$6a
fIbH&IK0QablD2$U4TGmX#Kc&R$()*[rP9G#+G"0F@FjG[FF+DFP[#kU@Uj`YG8J
d`ULCS34@P%0Tr82B0E0XSJj`L4Ad%J"T6B0L@#i"l)'iPd+AV3PfhMpK)Q&fEMp
`1k8Vmq,NZ'j`J@e5-)#H80,X1r%pJL&FUR%T[FKQ$42)k3"TC%('EXY["US&i6H
"lldQ$c@Ypa"$aDi-4,)"!mQ--i%QZ($LbCJI3p&6Ne1VGf55X'UcQa*T+8(!@Xr
feqQSp&baP!f%Yf,aLrdRI9ieb8@-+EF-,%844Mj"$HiP`65%'FdH4&e@Sr6fD)r
Tqm5T6@lm4BiiFlc2r5mqDJRJq,JMHeFiHKEG"d3Q+R&qjB`CeKr)dcM8EF2(EmZ
3!1l6LQJ5,eV3R3)(EVfmeV@,Qed*#5+fBSUEJILqfJ"BSU3DSNk#,&!i)`'qRV`
%L)"Ui[6*d-b8K"f4AVDX8Sj+PjrlbHNMUZq4QfJVa#I&%H0'++-#8HXebi*-BCA
'E5ea3IUIE*8VB40#k$em&ZDUk,eZ(,@@-0LciJ4-ITT6Y!U'"fQfJ%AIj@iCE%*
b'`)A(M#jUaUj)!e3))`Irk$H+SbQ(hP&fU4Zma+#Ai8i@CC4laZ8c[llpPH(3`[
Qd6Z3!1dpMFaZcf&Hbpd(4LeYiGi2e!E'[-1UI'd[Flam'K!d)[p'i,i0(T2jjSP
Z+Y2ZT%BlKaDbCT6S3fGm(JCSmG5@Rh[deSTKjBEB%l,cje2CLb#SPqf4ik$ZN!!
e@!UbVCZjRZ$ZPe!!"hc(62Q&C$XM4b[I*LI`HdfPQaUKPK"(aXl5C45q19"qiGq
QA$Z#,1BYeGK1UafAfJl[G[&R'KCIa6&2pF4T,EAbT@h3jhKkB&r)Y6fC@#Yh3P@
0$%0d,3c0bV"LmBN'4iUk8NG8!,IZK#'[#I2pCA@FU!F0H%h$6UP"+'J$Me*MU+*
4$52+M"Ie#h`@8$3cj4p%,BSR,aVD(8b&$Ydj930Q%D4eQ34jQ$EE!j3HAh2ih+e
jC`pFCXJDrK0$E&5Q8Af*$)#E#m9[Yp'fjAQP6T)@LGrF(92[bqYT)3&VZG'P0&j
B1U#LXDR$c[i94qi3%63J1MUlPLDdZBMGbf8$#R"*F-'-9#6N[[1%CSN$VRR)B$Q
peNJE5@`!QBp[PJPLaV@+lCT)PRRq*!6,C!MlBCJA'!-1X$QrTG6JR$EcX,2UcZF
IHc,"9rY0G9FUU"S4&BQDDcI$)[1@mMLFb)*U`GhQ#'"26Va6E&"I0LaS,C*$(N2
M#@0ZfL@)SE6eKR[IdR$EdflA!0&AQciSjXRa#cZY`fNUXp(%eXii(D(Jp49@A-N
K)Q`ZPK)KA("!))S*&9,1Q1kUAIYKjBXSJf4ZMeRYSN)Q-m'5D4pm'3-)Da)1$km
MdLj3MRf$2XePk%'UN!!hj5mkD!1ahIcR8['Zd!2EBUIIXRN#k@5!8qE(1dI1,PH
M@`0'iTY'pVhp'`()N9KcL80$#d(a[GCVY(1j(AVic3*X`P!`*5-0r*6Rki1p6IG
J)R(acqN5khAhPbd&0mh"f`ID-p-)K12UVdLqCNTYGj@kD&8b(L8QZ%Q63'"#)FD
q[V&mST,#LFIdkL1NKVPRT9eKR*Kb"%P135Gb5rEqF8K1H,*V@A0DeYlD+HiF0r0
2qpB+N8@$$U%(,)#GJ4-`c5c6-jlcq[E126IPce0@l8"%5Ml6T(lAC-Ncm[p(%`M
diSG!r-C-kd`Kf*[GER+h@89ZmK0hJIZBF'BKFp[iJ1e(Y$`BG1ch2i8Zb$0$jre
V)4!5!rkb#NeFXBacce"CE%LEYTc*S&U[CGDj*F0Q4@E`FDQb38)XXArL-h'+fkD
)leY'Sr3k0(%$0N@B62ECG#U#4)f4hTMipchV"9jiaa"%!'8+TBrC3MfF@C!!Fam
BB0qXHeedA8p,X2TQX#aXKci$-01jC,rrShDU,ff@,hpqP1Xd`+(B9A(#R3S09FB
(jM*-VEhELicDhm8EhC4b8ZZV,(h*CIA8BM@mE34'NqIcHXh,5Jc!(fa-qpd"iBK
Vq-F-K#`,A%FG3IdUHcb8X4Rj`&9SNc4K)Y6iEDbI3hNffe$*Cbf+XM8"1BQS-iR
N$FlDdY5jT3m%EMZYL$Hf4JmlcQ(hRF`20V!6*bUPqjcV9FN10&p@*cGH2XKDb3U
(-pp`QbG5@3@LlbZ(C0mV"9BpGXFKF5IF2548l)j(F3ErA#b64hbV[4*%qHdIZ,B
3rqBfEN&X6%#*E!b9i12-K+&)TNTiiU%C`'h8MH59pbPrR,kU03d662(488,TVY4
DL%AF353lR'HeLjPkE-[CIAeA49*Q0#-raH4U@(&BG2+EGZ`qhf80NJk0%-+!h5F
S"&)pA'A@`+640$DlFL#f'F4kqaiQmE5Pd05CA)R0`0f[k5pjlXF`@SphlhCbDAd
8MI+A`N0@3e3!!%35!!!!!3!!!!!#A!!!8%&$5d*#FQ4$6d4&3N4*8P"56dT*6N4
14'C*6!!!!!!!!!!!!!!!!!!F&S!!("ql!"`Jq`!F)5B!(#%X!"`YjJ!F,M8!!!!
!!!!!!!!!!!$GY(J(443!'lRJN!!P4d,!@J(!4+%)8U%N"#T3NN"$4d,+iHjH0FM
hGN*#3&"%3),!)L3JL#rSK#,dMY)!P344hS#aSLJ)#)45GhpQGY$R,aM-lUcjQbB
jh-l[0m`hGB0TCES`!XJ4N!#[!"!!$)+pSm'*VmrUAq6P!9IK!Ypa3`f$P$-%!fI
*2r"[b["bbLfV[lHKidF0h`BUU#!m!JGAmT3"fRp+(KNZqFaCMMBlYABXEb0)GF%
HH5JqM-q4Fq48T86jbkS4C0J(2Mh9TmIBjC-ZDDdDcEacj%C+i+r`XCp@im#DG`l
j+jA4'ciVD0C-c*)GQTNcdYScl*JkpIPjSVdP`i&r%0jdE54lbk21j0l6if@56BR
mdD+6l,b-c%RD-`IJ1@GZh""HNcY[chmYDRjbHJ'h4Y(1bG-ERJ310pM`XD3j*QP
"RajUfab5Gaj4FiGl-pFAPMjX6LIbVRc*PkiN&h1ac!T(bpYIh3j@5[N1--Y204J
UE06j,239PTkJGj+LKZ&ri0hm$iFq(hKi"!(br-aCq8l(kXBNTLDNN95'5B1j+[h
BTbdT)9aZ4(&`lm)!!Nqbd)!3-C(jbZ(FaZfN`Fm(#TPLLqM`q'lF2B`B8+Ua@[1
V3&,ZaISSiXk*F4DaPMf)iTGH3j5%Y@,Ne8[Mkb)U5mZLa19BkL`YK93KELdMQpB
V-klHCclHi,+UXMi*0B`MSlIVQNC%k9#6DJ9VHSh&*S(KeJ2@rYU4q[)QU4'DJQ"
Nkp#[JiG2IXP3`N"%[afJJKJqQ96S!X6@3%FNSKD(Rp(+"+T1(&14N8!2kl[F!-8
-hqIkh!6j4j49-j65,A#N+&*MG5JFN[8SZ4A,9J185S#FJJr3L!#N[*qFFA8NA-c
L19)UfjaUQ,k*8j&k1C2,1PbFRSR$9b+EGM+LaSci-`lSN!!4-Q)ThrPLlc"4%88
),q%Hq0(+"NQ-bE*kQ$3!5j1Efr',S[NA$L2Z6mcQ+ZI6l,6-@9BL1I1R*XYZj4`
J!!*61iE0@T4*VHk@3P@I0FYQMf&*e&',&#62rcGHX@G4Qe(QUB$1!EGbk"J&RfV
18,aI+G1*%d+Z5&&hbLLD4C@c8C`jcVa8TJ+1+Cq+KfY*-Br[h9lRQ%)*AmC'Q#U
-0&fTCLUC4eN`h,`cc@-j2Vc6XiPK$j%YhScUFA+4lqU-LjRCEAZM4apVYME%%Lf
kfJc6QYVTcCXaSTaqhUY#bZ0+8Ie@1%EIKjb'Q"k18eCQRAP#qTa#jU6c5`&RUeL
qp@BlhqD3!%)UkqjNV34e!T!!`jS`)[QmQ!$bGdL+(9HEB0a8iibjRFNT-aJ8rIU
FUZQrV#jkTiF+RUX[iR[aAFS4B"fZKflET%kbQmkUqZUPE(4RHDrBN8FCjC&L1'$
h,iX0YDiY`i,aGeZlG"bQ"UTBL'964F-CV$4&Cj203bbh(aT$Tm8HBPQa,D$b6TU
!%2HL+,&S0"0@-L64%I+8p&#,(B,"mLB%kUI&"bQY!U$#Gqr8KL"%(l-CD(d%Fdr
`X*!!0qh2eFL(@C+fP$S--[+6EAH&f9C)QN)-1Lk5k,)i)+)G2k6YZ*JL1Ilc')(
amFQ6#$"&VTqBJeJI0`3@CIG%HdLa2qiNPX%cZ,lQBXJXerU'3%pPb`d@BSqDXC-
N[1kZ18Ck!AL95*iE!CcrkR9PmM!-I+%p9b''Y)Nd"d@14h*UGV51k5R@jc+9FAe
6jM+*c$mZF4i50LT1HfcDJZ5blHLPVdi4hFecQ0YYE*cCa$K%CS013KBlac9bC@c
SP8LFk3EL'TZ@U8k`NYMVr(@*5QKcjmPL"qlY,A4CA!YXTKPHk2HCbMfMj6Ne8$Z
K4V#aZ"Nic1@L9URadcP&JBSM1M8rCb1+Kp+(+RS+!ZUp"QGa22AXQ"ZS#1G#D!J
I51Tl-r6`!T6cXUp1X-j$PNiU0ZAM@(Um0hZHbN6Y2E0U'V%kd`LM@+il+DhSMP5
c129KM[[21(`mKm6&F(2d*%Nm2l1Ii()l4cHQ*mN[j*`B4Qh6&qm4'iGQ-BDf**L
'f+Fe4+l*BcZT"Rk@12+2ZHkF)SLmjI#l2ecCC&UPiIMl@KRCbPZddlV`cYXjT18
b5SjE#5Q#Cm-hG-SK3Qi$kI[(A8%%@(6S&&jC6FkmYLNl*)64`#lSQY1eN!"5$fB
-d8#f-Nd!Lc@00V%R3G#Sp!m'*QlGbYT!KJPlT-LdPNbZSN%BcQVGU3KJ1JB0A09
q(i%@%IESd1%hiR)@5'XMKlFXeUY14'&k&)X8(HCe[)NC%rCf85K2a4UN@,KhK62
DL-AAVD+dJSNA%!k[N43q@*NhK(Q2lV3Cc&-P9#,d5TKh+R*dmU)q*"bLP*!!0QC
LT$'DpPi%V2HF9'#CcVUBaDEQjScc#-%jUj`a$8B@N4Lpec1q183`!!#h'SE`jb[
jfJ0#Ed1BCLS5r62m'XkXf"Pd6M(1PfBLFe1QT6rFFQk!((!1[DQ,pp"e3@TKi3N
)FkZ$8%c`4A+iF%peiZ0H"9-&!lYFaSa-L4a(-%B*bX&Y*r@"bY*@YR6`FQTk5Vk
UeK*RkJ$PlD"J69VJmq%c@qlcbb$9-Dd5QkA#bb#@'BUC)d5b%TeDZd,%!Vkm)$i
,,cr!pb4mVMQX5V,DCc[4CrjhC2YrcH5`PUMhjTJ"'pq[Rj@D&,a1@4DTMqGPQSX
dfN'(@%flL@[RJZbD)'P[[`!ArBr2J$-l%[,RN!$UY(1Cme%cC0Me,R@YXQiTCE!
!(f3YUY2iGDMm%aXKpaR2-p8$rq20%@6'cYN+lU*d%8*ma('RL)J"Qj+QMPKbJ#X
LQd--e*XB3Rjel#-pNmBDSX@FqkY,'E1NRcD@9!89laS-SR8&X*d#S#G`TS29Xh2
T"@[XGmDJ)J-8e3B6QJ!h[S'J)ZdZb#"L`hEZ4*`UC9ikLTQSEUTb-$Y(TbZR%1Y
VjjR#(Y+mFMNX%[DTpdNHSET!((EGl+S08qdTJk2$PPI2AV[Ii+Rh[Yi#!2PqS83
Na0dH9p1813'Q@fK,DD**+lSG5!5#a*!!ABP2!QLL1jFPlrI[HLdqA+XD&S(i9%6
AKij3&f$Y5P#H*(1MEEKp(X&c0p2(b-#[99$j(Vje$!4VM6$#q0`#8JAd1Frh!iH
HM9dmdZ(2@k+dY4ZLEr'rMR)Z[(QXBSRLMiNDc3p(mG@-Dp#U'iK3LJPR-kVkh23
ABcaV9+LUYS6e'-Y9'lhU%8%F`q8YPJ*S9'1U'bDS-3['kYkG)'pje&U#(hNQSNB
bd#9G39&6lLh8BX@#EllU%)*,0MUL(c%Q*8C&8Sq9U-1&&LUle#%%9lpeSJ!!AZb
"q,`Sck6G[hl#N!$XCdQ(&9(('p)MM6)`C)EXbD60!CAKK*(Dl[f)0'YP"k62mM8
2)6YqmNL2Gr2MebG-GD*"S)rLU&6pQLh"6bUL4)ca-8dk9@YL8`!KT*rci61(2rT
-Jk(,8UNQdM60ZC8eUG-&!&A,@UapCqhKYF,@e8PTN!"UK@CbTQLC&pUE-G#q*F!
'&pVjm&A3)dQTN!!e5(1p-dpM68TZDG!2@J3MI`L!!!#VEjqBR62jV6*09'I(TQL
BPa+ElNZhhDfY5K`+D1ZSJVbGG1N$lpfm#!cRMma3E[-SEf@r-(+VAmMh+R9Kjm9
9HrfGj"1Y$5"D@DIX[NbrIGm!fF+lfd&!3*2,bM[c1#Z9GbRU!83V"L-(+jVJ!U`
@&F+2"qIQ&3@p(02RpD3LKMP@Ie,Z-f#"N["T3@""+I,kbfA+6lJ"GXKNXMiTGCq
Ub%YX!`bV3i50UT)Q0IPV-l)qS"P!1#9LAj,d(ECKHR+r9bJS"dSEkp(Qr,0Hi*5
H"53`8N'Np9SYQFe*Ld[905-E+1(**4E6Nd8*,M%9MeRY#*U+JYZ9+iEEr-0YPH6
FS,`fUf18FYYk8V"$kc6rhq+5$3b(e8(2iCBEl*CB`$AilG!eb$bk[$Q4m9-m(Zl
q9U6E-C'16R%@[D*PFSjAcM%+*r[`IdFl@AbYQ9FBA0P$6#lP-qc#bJ,B%9'&0hq
[D'&f+F)BAqmVTH4F[rmD)N[qZ*,KrP3QKkR!5K`,C3QS+LJ6@hY`i&'!6@(6Krk
q*"bJmdT3'&F5ECDNlNP-Vj4*BpaTRZ*M-0lE!be9dGIjFM4-!MUF&jND3*N$`bC
"88rCE`E5h$mhVYQkVXrKKb(bVS&0Ib'--fhR9Nl)JcRJ`lm14fp8A0Z*3mJi5KR
d+aGeUC8G2B&&6$&8CFG-cia@CdY49%QEJ@3`)UDdN!$@D4P5bKG)a02ZC'INhp6
d1J'e1Dj*kB!cQ2TT#TTA+"&Z08jb!GTm#jTFaCZ4MaehPb[6KQ)BKV'cXZi)pGY
c!`m!4ijF4,BC36BcPiYH4*HLh$X-H"@DbIS%GB2kDS#$e,'J9"JQMQh)Q+8@-mN
-rcXGNHj"5"$i632i&bl+3i66[AJmcM@+(1ENTVaI"IIFST3PGeSP)%Q2#*k+&[f
3!0)BmheASH34J4j@e&`h`i`+N!!KG)Q5c@E'$pq@fkdK6Rh,U@*[!q8dQI)[P#(
",&&FAkB#fl3j0e%E*2kkP)G`0a)0RM"&V0%$+X8aF(B3rAP%+%"1pFT"E(1B5[&
-Y&,"E(Z@K5I)rT!!mZTB(F2FrNcc&YSLaC4jj4Z"k#d-U$&jVD*d+JTq!,JJK,[
!QjbN&SQ$KpjL`'b,P0&'+)G#"UL*+3'C%c18lY&4X"E-(V$#@flULCLF,'@IY$r
VD%%f,456CTXP6&k["SPKr#[U!4@0)j3'NV(`R#"BYNB6NPNS*GP2@+)'BFpM+Gf
ZYK2)2%3V$3p$U9RXSCd4@A+Yif-83CUL`Tmep1@L386bY'643KB8Ije[-`Mcc6c
p!-BPYEcqi`JVJ9-DB)DGE4L'LBQM8E'8c0L9GA'CaFM46"'0(-2A[p5Lb'PrLEE
VM!Kr4)'PUKTV$*1LbE"Bf$cRmIFXN!$re#0ackB6*IkY&YQ,Q5('D0!`@aHH6MI
I@3+)`LQP5lbELFM1pZ*Xd*dT)YL[M42@+PPCqN0@bmXk,'B`#H88MANTFTM@H$4
Q+a4%U-dS)#)'C@bMTFNTDJ1Tf91Lcr81-QIfU46CCaeMXH$4F+LSj"a#iFebEKC
ZKa0LNaiB(B5rXrpjj#P+U#dF#G4Abj5BRbhJi%jT25-YMcdpRZq@3(jUI*CjD%Q
9"BHm@M%8-GebjJQ2`J)R9#LB)R8ek6dQRhe(N!#)XF,ebC+[ji$r055NL"GPH5K
4RH5fR*RV00D,cLP[ca[f2-+(jKPjCQ*-Bf8)ficLj2FCDiTTqN!H'mddE-f58#'
cRDNSA'pSLq'LICfFh"E!rPp'QpaNe-5F*V9B&DLTX*)hRMcdP'4YFq`2f"YcaQ2
areha'BMNFS*lJiRphE@JfQa*'EMb@LR"IKZ@&K-LC0I,dX3q#L&T(@L-Sbf4fa6
3'@-0hmT9RC841V)6"0k[AL9Nb*P!dmH%Jf#PiNLeSK$MVU3%(`-qHiG&NeLZSNa
NaBLPebPM!@CL(`m`M!6KmG2%-'A-qY%Bba++BrNNNE[8CqUT*#4(`jhNS"BYB[2
%LZ@4#2Cl919QB`kbdCPl)6pp8G%r+(R(QQ4L-@N@5F8l*LC6(`[QcMq83JR(fk9
)FXqCQ+40fFFd"C@b@-ajZYi55#4"F#N*$cEh6*2bF9Hkr5[6+D8`e@*6'U83(i%
VC5bNX@#NPJ43)Y%mm&"0$&Hb@Q&r!L3N095JerLi'PKhbr4))+6CN8B#F`Tcda`
43qM(QFFj#YN,044)MrqcaZr)P'''%--4TD5K"m&bHeL,rr5&)GMUX-aV#R'm0VG
0)cpMZShf1)XZ'6Q(Lba&2cYKDA)-)63HMM#jLrAdQ6aNXbj0`rfaUJqYSpH-iZZ
B3B*)UHQ,VQ%Ya0*SH&,ZC`)NX#a$"2kD58N5I$SkqKlhbT0aiVa,%PYA'@D@QRk
K2hhQ'PEEKr1RQ!%(k66mX'YpCL(i9Ma1EKNdS#YrjUTX0ic+cea6!q-a[GVQqr%
35`@Qp-'2Kq4AB$iN-ALccLJBB$&#p56P5K"[bL5L$a3q+@+@Nq255h-l&0Vpa4E
1e6h3mSLK",dm8KCN2Pe5M`5k+&j-AFD@c$0%I8MAB#Bb*5e&cDeNJpV*#U%hDL1
bCf1I6!&(rA*-G%91LXQ2Z-SFRc40iB1AEA,FZ5Cc3[BHl$%@12"dj!2aL,ac8`k
#[ec&aCq)*pHkr5YB5MD0*YSHaAppPNGL@!)CE2pA(Q,%BZaEPCF9VNN8rGM$fP1
-@Rkha$FMLG'FRZU9bl)XeNEY8)*CX1phC6Qp)XmV5h&LJYG9PLSXDVqkS@VEeMk
1G2eXdL2la2jTQS!XeAdD2bYLKMX8)B$LdfdkN!"("0CpiN)$X0D+k"$*lamiSjC
!M(q$-%f(4NXfQ$-%'HE4L#f@lQLd8Q`kAMEGi*i@1(%J5d%HV295BbRr-XFHlU5
fYLp"Ad5@Q@)DmUbd-@FXXr*E[-`Rahej1a3'Q4BcI,@Ed+*$)L3'QZI[0ZH*-"j
Sh+YfBCc3-Bl0B@Z+HVe0)D*EkAR8+Xam-dLZeNrh2#`*'Q('NFh["Bbml66QL,l
PXe"*N40BCKa0-eF-B`pf%NB2+AHd&CJRkKRC6#BQ3'%Pj$ZU6f*KDkFJPm[5b&L
"I@BY#jQEd23,C%hYfJc-[)Hk+p'R%1%M#Vc'If&YDe+1C1*$&&fdBhl@a'BURCT
%4%lkmkKSLYP90@XT2N5Pbj[-aMQFdG65cADj&2#bi!)%NiEefSTLaNDF[h2S("f
"ZJI&V[pl)TkjMQ(GYqUBXq'H9+hqTma,cT+8IL&AQ+8Xa9rca4qcSQM'ZD'RmB(
ZdNK)K6J@C+',"krkE%KEq[p0PL*YVAd[ED(51Nhi,0!4I(CU',,`eBT@N!#hE3*
*Gl1VGcY))$pAEmLb%%f,F`'Fdl-cb@2ZM!I4T*!!N4Y+,*+%f%qm52FdTQ,*BDA
8H-@6-#ILCe&friQcAPr0*qP-+BPZPAr%+)4qUIJ8Q'FpZ6+-C%@NXH2Fj03N%#0
*Gj)leIGKk,,b@UmZp84HVRYY*BbfE&N,qlVQ@FY"*MlLZG'a6G`+rML@e+SJY`p
*@5,1V1f9-@IKHU+p3GGqFjbjB`Xm(YLAB4F5HK,-([92q"5C-E'62ZD6brEBLrp
LiqA)EB[52PJ'U!FYp*JT*C21bB2af*4$02hdFR2f$[ar8dQ3!"BXEZJ[m8XT%2T
5b[YeCm8SM2G8D2H)6pkT`E9%)#G*$j6TeFqqM&NKM8E&$R9%TPp1cMr)'B,jEdQ
`8La4bf,N-IAqKjXN%8#$$CD3!)4X3c3JaEYLclE)&@D-m6pPq3+q#$ZIT-`8KAD
SLiZpY%-+6KH53RlqG4,&dcB4UK*Lh8XHEND@f55"%dpbbFGe8GAa0Qk,f,FTLMC
2d"a4(2J'e&'2jf-G+C3P0,$cEQ5*e%JakC)j*b8*QFGCp-%%S@4-Z9-aFC[eV4a
,$,+@*&i91@LQ`3Q!Ee4Z4bQ(6YE`4bic%3B45VKmGcp*NXiJ1D8K9#*jarEjfa-
'bXJ)"-8j(k+MD3pjKbp0(B*b)YX3amFrQ!l6qXSXMCCD`RqV,*D8`*@F2EmSJ3P
$e@9),X-j)S5lpijSEP*+B2P51aPP%D%B9Uc('bbcX1+K6$MBZjBPLjRKiKp"KbF
00C*$6cR*F4D@@$4)A-Hdj9a(cMLme5b+L#-$C52mh1NfH8+jiI9D55qYpPi-l(N
N5)CY0MrmGfd[(YPc!$EQI$R-14&$p[Bm@bfbPRfAN!$R@b+FbGqCCcPR-XaQ&R)
THf3KXDQ*&+N)P)6+,Db@T6f$L+@bLS@%5ZCRPlTqkmqIhhN2ppAAr4p2NI-Ih2e
l[qkr!ZXq59G2[D(6[h%$l)8(bQ8N8KL*0V[l2*-B(`["-f5[+Cc1CIC0MfP1#RP
E,HkJ`N@1+6(C-Th2LUAaA),6+d9D$PE)4f)R2jTac4AmC%qmj8IMjR[mB-+k'#c
1pSNi)R(ACX!Kahc*K3LfB"I,#FpeC@qj8p*YXa!(fqqBaPPr-)X`"AP#jPl*ibK
`NkQ'FPP"R&$+Lq6c#Kr53j(M%M!fqr$1%M5bD3Y96)k#p+X1A*@9#a+I*3&21FQ
&PZ8a(AYKRHhd6hmN@qNG11KH)1NI(4+4P1Q)Va%U&`FkfjJ$*3FpJ8m#jiHANH6
TUrR4TZc,$#krQ6hjk"4LIRJaX0[F2FG["-eF8`R,$qmlUkh(@TU$a+rpUab,*Vh
&`f*abrcAk%T@dmIik'S'*+[)r"UaX-ZKI-Sm+PJLAFQK+DK,A`M,(,3h&6qV@,(
q[#Fd'HAAjC,+iG1+K[0bjD*qfrPJBjR*ISI`S`PYN!$TV`2%beY,C"C*MNV%Llm
$E(!bA8%#J(rDSpR$%lREpr&%B`Sl#!1qPbLP&#8BYL@15)jYVNP09ik5VGVR0%"
3MVD28B6M)YMQAj8BL5@M8ZpI223Z%68Z3hiEXlmd,()c-DFYipXJbf+F#ZcaFrQ
6*I@!*[bB`%6'r!3a#m63f(d9SLNKAjqH5Y`BA852kFQ3!#4Zr(KMd)K,[8I[p6V
6l8ZrrTpeP,CI85X9U@FE88P&%(irSJJF+l1,Md`+fi*(dQ&MLa6pEk'ImU@eK#H
IRX"bPA0EjC2cl'DS+m*P4)Daj)2qB@0*PX#jT+c1()ijdK0"%Fr(i22req(*%2$
NhRAEVU*h[eEF+5r4XPPaiq5,rP&M5HDmYkQNGVV,+42T*Jp,5eS1[Ak@$"aVIFI
dRQCd,NKq3JpE[j!!jMNBb8R%+YX81q6Qp`5*BN2*lmb!HFkj+Y0QB5M)A)3)H6F
JZRJi5V%BcMLrB&ZU48H2k5`f`EF2mJ@,fM*1%ISTI($LIkIhCD9D$#kZb`+@6B`
24c*#"cRHe(`K)a&Mar+!5',F&'QfA`4rSf96,#1@p`fN1"aPrPS-l0Z@+aa2&[+
)Z$f(ACf)NMPLTXCiNK[`LpP4*&MqGmfBUlbVU1XN,5iY[4-PFP$H$6P,(1`4NKj
@IHA1[Vk8`DJQk[*55Ja$VSm%J523iq[#Xdb%['8GMTEId6Qr8NNeRTFSiS"Si$Z
8N8eIr2'5mNUDl@e*C+4+)SaZ53H,)NV%N@GBV2fH2*Jb5&cZ3'ja@K*(pXGVd8+
&Tq3M5*2eLDP9YjUYd1F2mkV8h(,5a@*G5KimbL@G`(N9&I9I3EcG%4#P4mYD4Xk
K6pDq5AT2JDp-P-P#H%hS@X`S+0**-51!iq(9K@8h`29H9bJ`PC!!FFH0Yq-KR'[
f%TG6E(C!VXIP#eKS*B)b`@j@)a&(hBkA[9,b[drFPCGfT+Y-G"`a`%Z88EHPHG`
aEXCc+Spb58pa+5@UQABPA$Xjk'(Za2N5BYqImK-*H)UVCQ#1RYCRl+N[,b!DMIK
LMLFFFI["%$D63r-Rdf2lV)XR2G-eNe!d)#c*QB0&hl9kX[GE,[945TBf-5NG*iP
5JFEFj[!S#%jCMG+1Q$m3fKT1TfBY*b#H#6JJm%T-Y*0'K-Ep&'p'mQ0C8[`[Pj8
+$11NP(4Tj"bCk#Yp)QEF5lm'FIRAUZ,-j-j%$9e6J@@+[R!Bmj5PhS*e(RmkC9+
D5T+&$d+NJ-FdKF'kPfe#Zd(CQ1@'X$YKP2UC(bPXZBj8U@294@B51Ji2#NF(MPN
6#D85Z9NR!ITT91S#[GUSA8LrK5#-#E'NFha`!'4mSPl1@9Q(YULfZ'!-9cT,bPK
dFB*paHPF6-1M1[UDVj2S+*++5JFqmT+(((H[8Tk%f1MNT1K,kdZEA-L8K+GS2Rr
R`h!9cT1k,0[)!B$9$H@4Y$cCP*B!(!T(pfjC[HSFf,Q&Z6TDTXjD6%Fp5P6!D@3
h'!RY&LbH$ATf5U5b,V$!"@brbeBi@6$C4-c461r*$aSPT[fMXSUpFTc!UF5T00*
@9Q8D[b#+[3bblh-V(DmYTD(N2(&+CP3ckD&JaN`cUl8,9+S949UYQ)JhHkB#a`S
rSZ2,K)X11)VmrUe989K'P)4`#ZP6bUL0mYhjVa%1rqm,,'h!U1PMI6f!9Y"P,%&
R[$L[*KH@HkMmrPR)52J+(%24ZEQq0TDf9q[-UDL[""bV108a&Q8%c84Bj9ejCV"
h[C5f0La3*0YVR9&GSa,LJi,bj98&Id&LUV80I+me!rH9TS*("SrR+'[jlbU@rNS
Rj%MR%XT8T!FTQT38A0l#d1+VQD8G2[BT,`e,q)TDXa3XflmFS[@5H)f(NDJUP@3
LEcUP4L68GPMQa-8N+)6*MmffE$cLa219#@dPFKP!DR3T(8G1(NV3@Jr+)BLD+Tq
G6Rhm*#ZjCmR"cJFFI6)lRjmNmQ2Q+3Ab9lfhF6D,#dA[0Hb(AeqITjI#ACIN!l"
R&ElmIqYfb3YjY6QA)+19aal6!U%AB&JcQPPQKjeKIbUZY[(!`S4!Sk,(2KNTNqP
G%G%,T(YAdE(5(4,&YGPFaX$6F!r[2PJJCbrfGmS6Vb2daGjkdmp)p#U"e$KB3dH
9MYa-Y"-,+#8+Sp`8S`i2+QP[0HDMbVkjS+ZI)R@h!8`c,RM3ijLAHYHNr1+#SeD
HTmSia'LL-6h&36NP$b%R%k6f$D0HmKk$[iDFJGZBda"P-JKQ$k,[XD1qZ-*SaE%
ZT'("32[U@9r95&lH@NY$lT0TB$(+"-YHR%`VJIN1f@2SqibTQ`VN$'[8$(4i`$a
QX6J1P)2`8HfaT*BmI)Hc9VSIHNdT"cq$bT3m*3LZa5Yc'YaB2a*9LePQP2PLM0r
ESe`(AB5RT3ab'Le[8YHVSk'N"A1dCc43FBaHXZQeHqQqT25XG%G(UXYSi1,"h+$
TK`U-!Dje%I59iB%$5%Y(MBk!5j8bJ8*N(3'$`a%V9N@1$&MbiLPlafHl!SI*DDJ
HIDddCPRBP0MLijmSil)CIA8j8[Q*-3JDEDB$8`h%d`%aRZE4[d$3CkC$aaT-C)V
PchS,fZ6JI98LIFbKNbF4$f4p-ePS0hkQ*5k68S2FiK*$'E-2-349@dbQTMJ*AfQ
e*TT5RrP36SV"$&X`cE63f11"L,BQ*+cl661XV%8dV*!!FQcd2$84F'MMj-mFJD4
NCehbNjUF5GEj(BarKji5a31Jee-YSB928@8pPNHcKD9Qh,jJ6!@@4h+Pdhbi6aQ
"%k,8ANAmKH@1h,D8AD*a1T&F2!84VQZ%24V-eIArCXcj+C!!a(T!4bL@Ck&'(lf
RXmSSDU493pA`5+HhD5J&1&hlYSS"&jGICP$j@PNZGd4fGPUPS2`pMX9XVK#@ZdI
jR-ZQdV-6XKdYdb#MRBmEq)9f$V+GKeK@(hmG@KH+1SZl,1ibHqc+H9!U1XLQ-V5
adKdE)*f`h3HMYd[6pd@@fp'IbfaV*PPl+FS-S$jNp&lC+IS[&bJ[c8JGa$&U'IB
k3Z#,AY'6,0q+H8HXN9ccf6c$CLP!DpR%5&**RQqK*SBFUR9*p0X*PZr2N!$5%5e
Pr2bH9!NQ[,"aIPpIDUMX)dP$[YIT)02$DH&[LeG-a*3c`dU,IXS#JqNeI4`DQE+
&k*rDZVarNImfbJ"ih59ca%IhqRKP#Gb6epB2VA8m3N%D$V%3k9`$ajbKApq3!&*
GI6iq)5-3Krh5q!Z2qAcbB9Y[bLG,6q(D2P9H1(Q5M--HmN&2'-q(V5%fi9&*AF+
hQT5@$#pqb[5JS@G)")JIH"6dI+4[&25Zkb`"*4eC3'"1JVidI+Gr0pTTIPj!Ri%
ird,,XTM1d2dJ+TcVCHPP#[Lp(3I[3-I0PY"*pdS5j&aqGDIZi!kH5)m4bb,$$c*
L$2djHJSmXNpKD6ESP$S2YH!bilQ4VVk$NClI&LU$a$eCjL(c2RSep2V2!CB3,(&
l5+a`lapCA246T)D$I,k8J"G8-ST48e0@h*`JMHR4YiBG(r%rr[Fh[S1!Z%HS,1$
a,*B$rE2+1"T2SM'l+pJYFl"XLD1LkDLH*cmKeX%j4$FH%d%ArE"U()iq@l*i(84
3-`"l*2@3!-phi1jCN!")L(5UZjFmV3iKQ0mpjk*a86b3!0@-iK0S5+lEZ1V59Ka
cMcfa3FF4,&-@&lp"3M[mQF#LL`X'%`)QiCKV,!LF[1&MSrU8(*`1Vr2'a`e`CPN
i06C3NI-Qh[f854Id2$PBdL4DSjH145Zh9,f-1Q-(-J2K`&MLM!PBM-S42PKUIHI
j-[8NSc6P(P)+RcF8!XGNHKr%+,DpbchTL21ABj9rljBbd#5`,&J&MYa!XH+8I,4
E1JT"'EYU8Kdpm`CUl)RTF)Bfj+M6S!cY`VSI6SIKRkB9[reDQQkFj-j"F@#IYr(
"aD%Z118rf64C@cFQ9$aD4"V1FjE*B,*N2)6YK0pL6k)ZCeH8EGQKcdKPX"0iH$i
XRlFGmTrrXXTYCdqMjD9D2)U'LiXjTi!'-k!CahPbK$ac,@P#rSUi-Y5dqaJRQ8(
%#2RCMNJb,&LZb3(2E-k[RD"+J2pKMX$EjH%d1,S,c%*b$5%4hm1IJX@IHI+a@5`
a'G0ZC"q@Ne%40MidqCCU4FFSr@6PkNr3hZZFNT!!RalM(!(,2aBiN!$MVeD)l-9
2UiZN("XrX4B16Re`a'K9'6le9Za6eDPf"INC0C0LNMa6BpFC+!4qThllp,dh2fR
pZBPJC+(%d'D3!-BV[iQ1-df2A[+2@r%ZYMN!*HZX&4PmRN%!TR%+Dhhq1H8J#k-
ZPr!kcQa5'b[c['T!+qB6"4P@h1%k8Z%6dT,+i[,e%[aLY$F9C%X&bB4a%JC4ISm
XTUf[rGUdUSlmS*Baf20R!Ba2e(AjdXJ,q8T,c%M%&4U%*J&RKmcQHR+NI)fcQ1e
Xi["jHVahcZ$90iLjF0mmPPNdQcHb,+K+Bprd,5@JIl`P,"4-HAm@aEEN%G1A6c1
AKBRm5*D`@H+--qR%@HFhAcVQe(eZQp5rmF`-`!cQM'DC,J+%Irld$dalcI`UiUf
[HbDK0V['D(c`!@C*bmjjZI5C,R6f+VEb2f'h&RPM,&Tjr)C!#1CAQTdZ@QT&Ski
A*R-UaMTdmBSD)rF&+3#0heflAQ*F''l2Q$-!ijijR-RS$-K[-rjT5N%(ANbJ1@#
Jc!ZX3Y1,jlLk[8QpKSk*BY(medX-a*-a"Z1LZ[*imB[UfcD)",KCZYi+QEmL+#@
hLrqTmFI(,&+pV*!!&"Eb5-58*qJ0YkL*03APN5,M9TS4`)j95APj0KbG6rYKfNm
ARkdjBiXTk2M%'N&HE%(h0cI)8D-"Z`Djrcq@H58j)q)56*S"5Y&aNc[NVPQD)aU
!"FKcEf*-lePm4mfaa%ZQ'jaV,[K`5mG`G4mR)$TaAR$TB$NYcB44dMBj(faD1K)
k8G'+'$QrFbCIM'FKi6CQ"k(E654HIefkNNTb8"Gh6*!!Q1(L9#m5Sf&A6,f8+FN
P&blP&+3-+DQ824a12kZK!Tq6$65P6Q@[$$8J8)988mQ%D,k)B`R[JVR*&RIcSR1
Xh!FmhAY-A3Tkjk-a(NbY@12((4%m+jm3Nd9c-Nqr"aH@dH30ZmL-2GTMR3XFc&N
LMLMS"VBc(,TBjBaE#aFq@19%YQjT'4eB2STU*U+F@Ec!0+4)aH%eTc4%Dm8'q8)
Mri2GiU4iBXQH2$*)ai3CVC3bLZTb)ZpUU8rG'YS4&$[iCBZc3+l#0j!!pH3)ZjS
AP'fMjd&UI9PD*$d-hLA2")jX@D86h)B*NUK!qVcc1+hRP5bmXZ2*SbR)#RPc1$L
BfjEf%`N(YNF90mcRMHfjmV4-FML*5V,J@CGS9MK@@C-#8U8P1m9ANrUBTNedjAa
lij3a`*RPHcPLp5RTH'Q,a#LrajXJ'`FGafbRPIYQ-VBTLJTDC6d'hPc2KCC*$3l
p$A0Ch@TKDfb9iY+B+BJH+md#'Q1m"65HYY,i5A&$me,)'lFb-Y&*b2F4mdZqQ5b
e-'IM`a%,ccEP9Ipj4DqNh5bRlRVa&3Y-2*MT0!dm3NqI8+dkY&Tk9Y"5F90i(@9
HhPVP8)51i''QV%rd+clP+9+3!"DjAP#iiiQAU&-9dUrq8XdY(Zj9b`BE3U4$X)P
Q%2`Xbjr5k-p6d#J)[6DU3"UBL`Cf#G4JbdJS*&5,6r+'5BN#Y+U5!PIVdN0F53%
[MKTcTafG2!f+1e@+RDRS$9',22Uj93m@T-fdC3(QXFRNDq4rd4BCkj%0jeQQj*5
`GFR*Xp@5D'ArUFQFK+*DpIDQ%Ji9"Ph!H9@dqaLqNL9P-UCUBJ@I8XaqTK0$D"8
$M"2ai8"[m6FrHPbJUVlRi1U6H82*Y(k`PRP2G4Vclr5Z496p6m"hM,0*DDB3%Pa
6A(H8Emp@rDT5j5'4IR@-8cR%d`Bf1l3#RDDEHMU*'M1N+@mpcjl8-0bka4$!P5@
L9'092"G&)&!eY05)$I"@Ij`*KLqVd-"1eXCTA`h,*d8@SQZ&TN!)b9PXY!d$21Q
EDN#TIl1MD+H1)@[PU!#,a9U)G$K$fS8pp),Z[j1@0pU5D5L5*Elr0-hPUK(QTP,
++3ldac0+5)-G"4*UbNDQP#&1***4SqDh-XP*+(dYDFkQ@(FP'[,6#AT&'h"[2V+
jl9*')ZUYTB3iPhT4TIdb9i5fkdS*FY)1aQ6j@L-P$d6Yf39Bp`(f"*RBf9E0VkN
hShqmF+RkKq@'@!#`eJ!XPQ)NF2BBlP*kdFmSfZM98kdHiB'a%Hme'0Z%J[cZDH@
#qFrLlXiXE$II'd5N)JLpA!Nbb`C6RVbiX#GKQ@`&9,0klY353cpd1S)kL1Y5qPK
)rd$5JV5QQL'4!FPkbFFEHY@jL$I[4dEKarMJaB!B3C@bikL5k6B@,GT0(BF-JeK
8X3iSiiAD)FS45kq@lb9$*$C05046AA5D"PN2-Sl1`MKJ)")#2%pm)Q&lCl6*dEm
3"dh6,T5)qG1P,BH*3T!!E41qP#ac,NAT4"ph5IPaNEaCTd#X)X$CM%q`Q&4l"V5
EQ*1)CY(T-!*iQ`ak!Q!"(2q#@95JpM6868F46lk4jjRc)kj6mXB!GDG+ri&*5*3
,%[40@E#faUaT)R#Kip#Jb`cdRP#kj%ke6d[d5aldRJ)XVE'Vi3LcTEeY[)*TIPG
!D3P!CB2Hrjm(-H`N$#5`E9DA[*!!pI`amV4!3M9G8[2`FEH9p"@`R#,Y*dUC[E+
`H*5R3E5I5C!!E1GXj*(18Mrib5K!U+e!(X0*3T&Ii0#1%apHN!#Ap+b@cDPTY1-
1ALcp$chRSpf4qH$MP#,35C`*'PGd43NkHDEK(cSL0rX#!Yd1bNSHmT!!)Y4GqAP
&hQUb%eb+(E3'8J-P*f9Uaq`rR#G@8b2U`[kZK8G*G(Z,T$K+1,YL&RpK-ikQk*D
-SCQq-,Rf*+X$TM*L`#aQl,lj6S,3dXIQC4A#eqTEYJT5)kmbC3$($aLT+&$(ekE
kdIpfTL4CfMSY#4kHq@$PM!-Ei3XimJKHB&kGlPEqa+T'G02-V5*Hl-@1$(i,ieZ
PjN'bb@S,a,,fCmXj4M$cf-0Yij6+M4i2MT2SVKh`a`H@2Kp*A3iID562VqV@E+,
'TE-ETrak`+fIXcPP&jBFS0E)b5RR@%Z`dP)P(6%K(bBBi#,)Y,i`50#25p+D@Gd
0)U9lIb@J(P`(,!aY2Q&#`Jj@1!X8SjhR'e0,Mdp1)i-[GML(M6Vii&QFRj3TfMR
PYcTK4HRTH'A"mYKc%-BJVRimr&m$@8LK[prle+[5Q9C4[4%8XkYi,`mkNHepRl+
SIMcmSG,$LT,XPV!NQraaBr%@2B@1AMPQ`eQ6)d8b)2Y(*I8FbAqJX9'*9JMQQN!
1ATmkYNGA+N8ep#X`m`(,&4DJ@!LA3I+6[3%9lD'pCIP-J"rl"(fj1B!04(0+FA*
5PN)EdrU2KRAiV4E3#1,V,Icil4ZV*F'I"2TI@#acFJL8R*TML(eNNT9Qm9+2Q#5
L)fqq5"MKFJFp-YH8Z10Fhfp`6UhbNP)BPdE+"Sj41H%6ab8[1%qi$#@9cQ8e8[6
9bdFhQ(,!jBbl!lccTSbIT$0qIY2DX`mkb8!a@(c4mX[&JB3NrLH&p[++[X`bkPc
&FI6bJe!iXij+0%R3GhPGdEa*kbYFb0&C+)%R'CSf1#I0YR%-%BSD2@k25R)'DQD
K#,c0)qPRFIMP$GR$bVl9-P0kA0B1ML`f*5**`'q1ebaRjH54&'BMEN-Pb3b3!'h
LR153!#6&8ChrSZcCZ9[VCV5KdrK%[IIaTrilZBm"5+)!&*0F566K#"%'S%J%1CK
4)*bL#MK!%J@%5!ZJQG**k8b'KkDHRR#%%1LjB#%4`3D)F+,SJV#)#X3)Tm@L)P[
ZI!r@222R"8"%1H88ep"(ABYAQ$bVS5qqDr(Vi'*-AIh4ph&9Dil@rHrB*q$)BdJ
6a($VAkhM"elrecRkrS`TpST&@mrcD,H"(p!iq$S!U)LBcY24rlMKbqk(!B'[Md%
Zr!ppB(562*c(F"kekhK4k`iF!q[8lil*0H-SVH,E3*J2((1p%bPm1iF@1KY%6Q0
8heb(mA1%DSmHIa,2L58)QrMP+qGKaUP+JS@*fM2INST32c%Q@8`)rGHMYVSac8r
$$4Q3!,`bF4kLP&Bf$#cMc&D#+,RChRQ-&La4Y"MrPiLT[ZV!'aJ`X@@%D%6&qT2
e8D`)@!Nr0-e"(QQM849hNPdKQrJ'*JMa*mk(-aKLKFbDQ))4-hje$'r-imGJDBN
i4A1lE6SFa-,9Kd(mNP%3'!f(2F4P))a6N[GD,&T5#A0*5J(bcM2)RbjdBPRN!*D
)Xh!Q4Q6@*4CS,Nhme#A)+-q&TAIfYr&LB"%(pXarGm4,N!#BJ`@q$XFqN5@f+9X
h5,+A(15*4qKElU5`5SbQi##q*rD*,P9-`B,E8LaG)QY0fcXd&cl#ER+DDDT'MAi
MNHEFb)XbiV1BV!3&Ib0r0XBrY8c3B"5EHHH04(&E',+q-1DUNh4IljV"UJU$DI(
kF,q`d[BBDV)LlVkD(fYLG660"S[H,CApFdGf@5fcXjJP#GeAKaE6+D8T$#hXHK!
&5XQSa(iTN!#'"*ib8QGm3`KBCK-Jm'$b,j3S5(9(N!#XP-rmUTGNX8@Q(,)Z5T(
a@!5Z*N6HSE+4j9JMX2,b4C3*jPa2Nli#Mb$I,12PIChP-%S44NRGbq0q+45',%M
ZTHY)QTA#lKq5a%@`&$*q5T%(#EbY&P5N"A*ZR6#ja&3%$ZE-l&K9HaJjLc6DJ[A
$X+l-Z3Lqr9-J2$lEI9K$&#NUl%3K"#i16'QEYG2aDY0'8iNm[bA*%kr6fmiPLLf
cBT,q'"iB-5fUH6ma-D`F'-!V*CJ6"0jkJe9c-DBS2!0*6Z@)LP(dHFYf$$eB8TA
"X-d2$r'hbQ!,A"cP#+3S[(B"aa4#4CTC4PMlkP+r4dTZq&#,SLq)'5RSCQb))*+
PpPLY,B*ZmbfPU0`c46EML2'4AMh(*Q"FFBNU3#L5Uf[ibAc,Z5S#jAm-MccBXM#
MNS`$Q*)%prRkrd-98"Bh5'Ui5%p4i1Q#@4#bBP$$PF(M(9CAI03aJbN,HkD)$mq
TVb2*&'$qcB@R9jh5UTBXaGE#kjdhr9PXX@40`)@9(N6*2DPLEdb8`3c)aQ1el,I
F!1[&+9-@$dh"Z0#3!%H!H-cmLd*kD'0(QCFX1&iQ5jD4,&K0m#&MLiPIa6#QPih
%)cLbFckf+U8X*aC%A$3P8H4l)KcC3pIQ*-9X"c[rMNX,T4l8NKJi4[i'2(hi5iV
CmM$0eNDFTlp@6K!P0qD)#X9rhX,(RB&KBam2N8l$dS2ic@%KlrqFYTi(DTf1P'8
%-pTZ0#h4jY-CB[XLUJe2,%J!'j@19!6ThRdIk$%+-ASDJJE`QJ"S5T6E,'ZAC!Q
AeGS(b'!+FMiC3JrbQXdSL(6)-c5`0(-@*[MrBf0PX,8&J)ce1md+0(K+CT,G5US
-&E3,%VqQc"I8B`m96)c&JXcQQ#*FcFEcB+Ya%HAl-e[h&MBH@eLh9Z"#!ai,@D@
EU9l""ZTbKCm5R#BA"j%0Tb#2fbJl&'GTI'K(SmNfE3j5T3DC)T!!iIeI4$ApdhR
P10P@FNe58F'jU%H*60P10-U2C"$0PQrR)dRr[5JRX+L#!R&D"3@@'@$4!5CGYIL
k$'C&@Vj"%#BcG&D2JaSP0FP@jX2&l2[Va0l9NXN@-a,-r)jcm5'CHD$X0%5*mdI
QHDh@&NNmk$9e-*pMpL@!MC-!aNeN#,QmlLlDC!`+XDP@3%K!(PXX#AAJ-*A-P*)
KQbQ4PpN4&MAhbI``2-R0DSq!mR'R-Vk9eEi([pCELe*e(e1DM(J'BSN8,XQ%PYQ
bM*b6kBC+eTNS@5#E(D@FPl#L+F`%Q9GbcR`-$%pC5L'%(ZHd8j*r&+'3!#ANq5+
jkPfaj,#,+4i%)`KmL#5L)m!0E62Z!I2C$#&!hS(5%%q""*6Q@&k58N6TZ6eiH5`
LfK,j[iDI)fm-(RqUqGGP(maYhbQ2+4X+CES-LG#N8j5`5G`0*&@2Kcr2*54BBD-
lq*(c,'J,*D5*KreYm%-$V2+#4@%'i@i*)SX&$(NppYYp*jENX&4[YU,KJ-,[Sb0
BX'ErZ+AP#,p-1Sr+BJXQ2@9dT0(PQ@"5%TNdS18`'*-RE`,#,qH@*DJ2#"C2j@j
4BAGPaFKH-TSQr(hlX@*RmmZLe%XK2MG5PSKh$@@E+@,c,bq0kTXY&LeD#H0Z8@4
BbX['BRVUHI[KE"4LfF#adPhEK)ajUI'CFV+XX"a6")l-K2fH&jM#8lr)6$%$HGh
)P+FUPqR1MlVd*BKB,iFNq'(`Hj%SR&PZ0X8Y%4D25Yhd-&-VCC5PhF%%8SmR`Yb
mj1XhI[4L3h"ThHGXB8ECj5fJTj8PH-HM#ka0LDbG,'CS9FaM6i[08e34FG*U$(L
c)jEDbXFRbB1F,ah#YjHFCbLD'NemN3I,E%0caKalJe6QC9)Nq-GjCHSRLcd-2"N
!bZX@VIJ0P$+%2FmqIQbQP+IYk58J"j29K4AHdS43KajUN!!-d`TC-Kda6SELb-G
4HM#llFVJbEAQbbCFLUqdl&")lrC$bBeb[YFE0j'A3!D["!Ypi@J+,VJIDrl,hrA
!b,rIDd('pZKfRY(UP0Tk%5H9eap3(q"6`I#,`cqbYIld2eI&"H%R&CQkh*kHL*Y
f8@9Y29I*9f5+FYT+%5665CC`*B#Sbh@N'&24rQ84+1D&*G"5XZXXZ60%4#ijD9#
(E[Tf-09d"4%Glj5PH%bS0YN3"bP5dCT#HfBb""ce&id5iE6"p9k-UqAMLM%+'D*
haK')m*FA$Ie6D9![bNU%'k`bLZ@BCTbb4P+"VVb8fSM4M045J)UGh91#85rM5m3
GEc,1GQ`X39NP,D#6RbA'4hYh(Mf5HcLdm5T1h1dNIqmEV95@b9'@p2``mrF9L1+
hl0*q951kA'M5b$6Kp,'cH!KfqFj4(rr,#pkl,H4iYh`9SQlC`LP4L#B4,2&d`G0
Z,RqBMNh()i`90XCLL2+2'*DL0NVTCa,5TDNjbcPL3r8Rik@a@TV"'ShMFBA0%85
M#@ZbPQ&,KYh)%3Z&p&mTa92Xk3TbLD[,)Ma8TGS+dhiY)%D*`dV%[9fb4Gb`bY5
9F6+d)[!8@UM8p(GPHe%6@KP%&kA*YB#(Sk1EdBd#e%r$6V38TCVSf@EQE$Z22&M
L&+G*XiCJMZ4%8qLb`QbF"2l!*8Q(bIKJFhF8LGq[QZkdU64QBP)6PSA+3khK9PP
)+89SqGY"A!-K+1DI5E8T%E3P8*Al2Z&e6(T0@H-TfH$#XMb$IE,B`-8CYfDY2E8
MY#5@*CrH&FI,Bp56#()3p4,rF0'd9jm@i95mN3Yf,V%69*kljQK`VCL5SDQ2QUl
K`K8H"$mj8q$@l,H459)'A)b4IfPGqPNX*82ZRq'%b*ql)j3%fa,,0C4YB0+K)Ub
NI&j6%P,@CmT#hd2+)P`*4CACYh5@C#*iiqPUqjBiSkcMNQ'$*rL*FD#8pf,*D$5
dXeTGG#K,Epk9*XTM5RS,1CD2T"8'L+1'"+5I&G0A[I1Zc%bLNlLfF2pmL+l++bC
$dFF%qVcNSmBIV968+PP$r3P9Mk*qQp-)(k&,!#*qCrGBI5(c'il1Y0QSS,TqfH3
T#B0PZGfrKS4a-G!E!l[JcB[K@`I6`3a-@Jc8DrAX64H,M*j(P0(EFYN&P,fSdU%
GIq6R18aKQRRJ8K*VF%$SmfLhGTV"p8I8f*l"qf0XVkq)Z&-'k196"PlIq4qUB(r
HPEGU#4Q&DXHHfaPmj`!!'FiUqj18Yf2$%N["3E3&93'hXdcc5mpP%Bk#$G%EAAG
GBee(+f[rmZ58fRSeX58hEHQ)P0p[h1VdP&$Me$qVQ%%(Rqq5H-@D)fUh*c9jZU#
HGkcphmNKYAHd")2hBKHVp@B4AF8"0f"jMlS"0!fe)iG!6eV&cDPYPYM@P0Tk"Gp
4rdH0MHVQ3P@F,HYE62,iGq)VYUY#k@J(l2l6C846HCjVir-pkq6q1@HrY1kULmP
0k[9MU$8)'QAp34fNBJafe'U+&c5+SL4"q&X`hk(U&R6*V1Xka'XXkYB6Srk6mfX
`C3IYS3@*Ic2M0%V%l'0l'VL@(!BjbPf!U6XMDchFQ&IEc$V&ZVk*HX#Va52ABp3
V%AADET3QG[#`CHPbkpP+jY3!`(%(NBK(*"UYRkl%b&h&pE0-m-afm6TPPqdpK9,
(DjGa&ek0lIIBcbVeUA@Jij5V+lH&La*VcA@)&%fVeh,XI%hDRef'0$mZ9fmrck+
j!HrFp&b0H[&kY86RIh,d`IYKkl$N0I#kQEX9$UlHYPkiAIVkEdDeJii$hqAlN!!
heAKeZ`9!pSYA@*J9decJCAeLX+YpA9H!NfXMZ5ZPh`RUX`%LpZG@*Ji+DeCR3bD
,9X#&E''%2SkqRNm)pHeQV%1cSCC-QFV&P4@3!!HRdk*Q'q`Lk(R-GN@U#Da-$C!
!9UXc+bGheY`!'lVf1#*GRrIPfNdJem2,%FLeD@4CR)V-iicd!!6D*Q)QprIh8#m
`FKrVYBL3!(J+b@Ca`GdeJ[8CXNi$YX,(FLU0rk-"Q%-IYIDa0*pP@9QF@EfJ09C
d2FIMHJ"`l`!&I1((E(S4qpkcV%"2mkbCcR)lV,4Cr$29P$$S[@&6r`2+pCL8(l"
PeRA#9-jU*BGU&@!X&)8h&X#EDQlLq`a#NhZ'`THM+Xl$1!SmQ"2#MdF5@"*c[rZ
Rf'-8@eZ@B3-idj6$P6))eII!0JJ@HAf"'2+62)$36Ed2B3Gmdf($1F8d)-9QaNk
r4Q%JA*IBZiR$6ULa(0[JaaNB[B3C14E#0%6C%b`f!dCf-r+LX9`iKKEk9RcX2JX
KUJHp3#HPrFMRLQkq03j9mH&Sbhd60S,-)A!ddDDkeQD1$6RiEJ-pMqC6ZQF,kCX
3'pYQ*#%G0rIXaSLGD%epp5rV-(k,6DQ)0H'96@`h1E,5eFp,#e%"6Zr`%'4(HlN
KC(rEe@0h@K+IJ%Q5l*H1,T!!D-S`Cd4T)96b9HrhKk+ep2YLA"@d4qUm0)5rl`i
$eipXJXJd1m[E[Hk0NS!,EZi'!"RU*IRdq+A,$hr!JDViiAG[Ni6AklC'PLmd,Y6
aZUGpVIeQfM&h4#jXmC3K(I`6Xq8K4cDP2P3BmTf)+$eNY%J4P$NjHENXpVXC#id
5@4"kqXZI8F,2mY'e,!mm*Yq@%&4&4`TaDFX9%Uk[TfE)[[Diee!!!Vl9M[hQbr+
%M`D`pEfZh(2[)QBXHe+L@MK5MIAUF'Y!9fbRE(2bU1-Y)!)*,qSij!ZZrY1ZimE
@e*NH,,C0-52,XLUCE2CFAC)"j3,M55#+ElJP6[4fl2lMYCKbibSaS49IIU*PJ&D
@5%3MFSQ0k`C2'i9&bFF')SKja1CVNM,HLjbKp!4N3N49II2+0lG*fHPFBa2)%+Z
RcpHpBm9"cdRURN+jac*k*GMM0d)pqH6bpUAjZ6K3C@022rLU&b9jRcGlBSh$IBb
&aM%i#He!jdH$`ppcdA+BG*UFJ6b9XMJ6fl[bGT`RAjAZA'56L%b8b6L@,F"hcjb
R+@`C#"jiUha`TV,fbU3j0X#*1)4j,E0$C8ifR@bR+0SGB%Z20@2-l(*Q,5$iCq-
#ieeJ%$YM8q%'f,)-qjk1S#ppTdp5V,-5IV*%)c)2@YU6Pa5,"24VeJ$h)i[2iU[
NF89dcCLCG!e*pSqM$[4Uif&J!TT)%ri"@`Ji0YGIq#&SU1!+qF4U6MZDQc`e9c4
$kkp(6-NZ-*QNPYKfD#iNKPKI08e6R$`4G[,@9fJCMcr8j(Xf)+Je5@&)h,%XCkI
"l'1@)Y5%(h@@bM`Y0#QNqQS0&4[Vr1"FCM1)IrkR#%ac!Xhjc(+'IJ*Cb#)2-0P
'p&iieldAE-T%!`'f"0!4hG'A`jMSHSh31B+,SJk`p8B[F$3K(I5)[DbJr[NQX(c
G@95MKb(#Z#E[@#4HJSV[%emcrQBVqqq'EdZ0TJrm`rM2$'5qqKN4Ar!bEC!!@JV
2!-m+-"UGF*TJVFC(Ab,T"B2TIVfSYphre[3qJDZ[e%44&!B+4EeZrLL%ic`$q2i
a41Vi'S$(lf2V2aQ9hTHqc"%q9Rm@H*-IGk,Bm[%4YGiSiP$&h1CH0iN*a@j9hi-
6A,*`DS10M#'*lj)iYf9KXec$,*pP"CEMDUa@SZXX9jH,G58M6PGBRMj!D5[&AJi
[&Xcp*H)Tm(Y*GddH'eDGkS#a[elpHr"&h&G`2`M!!6hKrCf(rERH"aS($55#NZ)
9p$!B$G(`jhhAcJNa,U$&IDVRN8U9+XPfPLr(p94M35C58G&PbbrCEMaY08iRj#G
3`4cJqYKLBJ(U#N18+KJ#ql1G9a98U'[f&LM'%DLMiU*jpl,pV&J'Ia`5%TFa`VB
J%BlQ"XL00lXb6jK5N`J!9Bh&8'j5PH#BkJB[k5HN-86Pcrf9r#imZ8+YNIp&3JN
TAN,6V)iGldA@$DqG2,LN*H5k"VY"LJri244*hG0#U+2d3X4k23UA1hj,TJhC2'r
)r&iJ1''YCE!!@'le@kk4Y%K``lPkr5,CIk*PkbLZ!BRNRi[e2*U$95KDkBJdh`p
FeF6)VFa*JPA3@RUPfJ-9Rh[dN94eQ"`NiJG@km3mCZC1$dUp9I!U6428+4(%(I$
"DZ@TL[5h1%3N(PcF5XImY#14q1kQNb[BNUXUkK#Z[-XjFT9dYA[pBZ8lSA+S@18
U6rUXS2,5F1kS!XGI`e3Hr'qP+L6M)bASN!$Hpe('Lj!!ca$#K0*&1IVKX5$4MZA
bhUPr%4QLMAGEm,e+BZk)+&EU+THD5k%-MHK0IfqrhfcATlKIlb`dF`LFe"VU,3'
!'kV,0cq-!@-+k2FhhImRA$!jHbG`%#LdA*@`5QN(Sf`%3N*rlhc[,kmCJVLMB8H
bQ)&XZ,"[6%4S"cFJA[CZJ+4-"MFC$`Z6rm!!!FYD!!!"!!!"ded!!G*G!!!32J!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!kbUrJF!!!!!!!!!!!!!$Vf!!!%!"`!!!#!!!!!!!!!!!%T[H5&`C@CQF(G`B`!
!!!'d)Q$2!!!!!!!!!!!!!!!!!!-!!J!!!!$rrrrr!!!!!!!!!L3!!!)N!!!#*!!
!!8!!"!3!rrrrr`!!!!!!!!!F!!!!(!!!!"`!!!0`!3%%!2rrrrm!!!!!!!!!!!!
!!!!!!!#d!!!!J!3%"!!!!!!!!!!!!3!!!"$rrrrr!!!!!2rrrrm!!!!!!!!!!3!
!!!3!!!!"!!!!E!!!!(!!!!#X!!!!!3!!!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!
!!!!#!!!0!J!!&J)!!#-#!!!`!!%!!!!!!!)!!!!!5J0'!%PZG'9bCQ&MC8aTBJ"
8CAKd6@pNC3"54d*#B@0V3fpXEh)!4f9d3Q&MDd0[E'pb!%9bBA0P8Q9MG!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!![`(ri(`)!UBl"!!!1b8!!$Y*!!#3!!%!#(aJ"c3
X!!!$P#(rF*!!`3#d3)!"F#`!!!&!J!!)5!!"C)#k!!"r3p0iU)%!Y)2&!%5![J!
!Jf8#S)1&!TL"K3+-IfAEH%J!!E'!33!8I'!(08##!6!mB!!"1!2rrl!"!$JlS3!
i1'%!2V!"!$U`!3!m5!!"*B""!"4rSqYi5!!"-B""!"4r)mYi5!!"2B""!"3iB3!
q5!!"'B""!"5!IJ!!1k!!!$[J!!#V``!%5!!![)!F!!"mJ2S8J'3!!)!%!!53!'%
!5*!!!3"-J'3!#)!%!!b3!'%!8*!!!3"8J'3!%)!%!"53!'%!@*!!!3"FJB%!8#J
-!!""JJ"`J"N!!)#C!!5!B3")N!!"!'#!!3"-N!"K!'L3!)%!C*!!!3"XU'%!ERa
J"c9"JJ!3U!%!BR`$!K5`!3"QU'%!DRaJ"c9"JJ!3U!%!BR`!'K5`!3"LU)%!Y$K
k!!!iZ`!!12J!!$M"!'")!!#GJ%%!&$[r!"Jl[3!"Ik!(0(`!m!""J2p!1'!!!%J
!!'@!33!8J!%!Q$JK!*!!Z`(ri(`)!kC1J!!JJB)!#*!!33!8J!`!!)"-!!4m#31
Q6S!%))'#!!53!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!-N!""!"5!$!!!J%`!"(`
*!kC1J!3JJB)!!*!!33!8J!`!!)"-!!4m#31Q6S!%))!-!!#3!%%!&(`*!kD!6!!
%6S!%)%k!!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!@KQ!1!!"%Bfe`!q`!!!!!!!""q[rZ6R&1F@!!!FC1qJ!H6[S!,Nlk!$j1qJ"
@6[S!L%lk!+41qJ$#6[S!hL"I-KJd',"B9mRrqNT#Crj1m#$m)&mb'$3BX*KAbIr
k5N*RrNl`)2SJAc)B0"L`3Qi+N!""E3E33%(`!!)`%'Iq6[!!!#![!!3[33!%)Lm
!##pI!!4)jc`!*!!Q!8K#a--S!#S"5%A)aG4%5%*#3X$"d)*-h`!m)Kp1G5![!!3
[33!%)Lm!##pI!!4)jc%!6VS!R%cI!)`L(dje)#m!"#p"!!3L,`!),em!"%MR-3"
1ZJ"m)!&-h`#-)Kp1G5![!!3[33!%)Lm!##pI!!4)jc%!6VS!,%cI!)`L(dje)#m
!"#p"!!3L,`!),em!"%MR-3"1ZJ!-)!&-h`#-)Kp1G8U!DKa+J@S-4)"%J8kk!#"
%J8je4)"1ZJ!@4)"%J8je5S&U#N5"6VS!"N5!6R8Z2!!!rrqbJ'-')J"`!%jeX)G
L$)$"5%!b!%*!5%"1GE+(BKSZ!%*!5%#!`8K!5%Fq!%K(MX%`"dK(-JG1G53!*J(
LL1+*XSGLq)$"`)Fb!m,!,J0)4ml!5%I5Kf8)NS*L"%5"6R963'$N!&!!!@%%!!!
!!#*I6R919[rq6VVrm#+),`a1Z[rS+&%TEJ!+&,T#E"883H`8k(!!3rS!"NM3h[K
+E"88CN)JEJ!+)""R3'Xq9i"R''S'8S"U0'!'9B"U,Q!86VS!1Me!rrjJ)Nkk!(3
p32rqB"K1ZJ$+28$rrQ!12AcrrrrqB!BpE"88rriSAceZrri!$NjH)&pFMdl33U`
8d%+X&0`JE"5kF!2!U!!FCb3J2!!"!!#K(LP)&0"+H!)JCKBJ2!!"!!#K(LP)&0a
+H!)JCJ4`!'!'6VS!CR$q6R8["dUX&0aQ"($pB&"#V"68+A`!!)!!&0K#V"6J+A`
!!3!!&13JE"5k+@J!$"6-3L`8`N+X&-K1ZJpq6VS1pMi!C`3`"f!@(c`!!8kk%8B
JE"5k)@`8b!!3F!"8MbiI6R9+V"63C`BJE"63S"p+V"6FC`BJE"6FS"p`!%je,`F
JE"5k5UJ!,'FB3LF[,"5k,b`8b#"X&,SJD!!X6T!!(KpJ"(!!B!)3"biI6R919J!
!,`Gq!'!-)'i!#&+Z!!K#%&+([Ui!$'hZ,Kp1ANje6PEkHNMR(c!NEJ!J5(J!4%K
Zrla1Z[r)*Qi!##JZ!!a3Mb!EjBK5YJLm8i4Qp#!Zrlb`VJ!-CJiJEJ!F3T!!3T*
`!'!!!f)U%RB"B!`J!q@)5VB)['B)8S0`%,#$C1iZ!lD&B`)U!hJ3B!`J"1@)5VB
)['B'8i4+K'E`,86kQVL&C!)U"#5&F!(RU#e!qTCJ*#!$jBJJ0JLmNDlkPNUZqTC
X"R$lB!!$!&+$)#lkPY#!,8$kPVL$BYJJ"1@)4rB)[#!6NDlkPNUZqTCX"R$lB!!
#eL!ZqTE4NhB!,82kYNIZrm"&l[UkB!6@Qb6$8i4Qq#CZ!!Ki!#BECaSJ6L!$jBM
4`#!SqV*5U2Ub)NlPL02!)d6kpP+%Z+i!$'ADH!!Y42Ub4qlkpR$r,8$kML`&4)C
#V[pf3UlkNN+ZqSSL"q@*3IBB[#e)qU*J!!*#)'lkSLe3qSCJ!!)L)#lkMZ@)*%"
"l[UbdFSY52UH3qlrGY2+,8RkTQ!!!445V[U1@+lkRPLZqUEFK5!ZqTU3!)BY32U
+ZS"N"#!&B!3J,[U+,8$kLR)"dUlkKLe"qS)Q"jD'G!(RULe#qRkbJQ3X)#lkJT'
ZqRiNE[ULB"BJ,[Tqd)!Y32Tq@)U`NQ-1)"+4V[Tq8S1fV[U+CH*`!HHS,8$kLNK
i!!C5J#m!6VVkZ+%H,8MkNL!)CKC+V[U1C`S[,[pf6VS"RPL2F2TJ!!'1F!E3V[U
5)'i!(##!F!,3V[U5,8!!(#"!3T!!A+lkNL"ZqUBJV[U55UlkMQG%)'lkRL#%(8A
rYh!3d!-G32qf,@lkN[qi%!D3!!8Q"1#V)#lkML*1jBM6`%Ki!!B[!dkkqMM3UIp
b)N!LV[qf-flrZJ!%)!E3KE#(E3$qjKB(PJBG3rqh)#i!$1@)3HlkpY#)X)YL#"e
m!'2rYQ"3,92kJL!ZqS+`VJ!3C"`-VJ!!!3$kJQ3%F""J!R!2(8$rYL!E28$rZ'!
Q)"13!+i!%0#!d+i!'#"!(@J!!Iqf)"Z3!+i!%0#!d+i!&#"!29$rZ(!"jkJY32T
q*J6XUf!H5(J!"Lm$6VVjPY#ZqT)J3##ZrlBaE[qk!!6@V[TqYUlkLQAFF2r3"hB
"iDYJ",H%iSXJ"-#$C[DhK#!ZqSlPL%(ZqV,3L#e!qTjJ#P1ZqSjCV[UHR)9`!Hf
S8i$!K#"ZqTk`N!"QjL!ZqSC6V[U'5S"Q!2h88SGBV[UL[UlkQQm!rET+V[U@C`T
+V[UDC`4`r'!#F!"-h`ci6Pj1G8j@!!")j`!`*Qi!#'!-ABXND`!#)%ZJ(bC+)!Y
Qm(!!60m-!%jH6R919[rd51FI%#JX&S!f,"D%+L`8i#"--#i!%Y$!d-"b!$)S&PB
Y3Iri)%`d,J!@d-,3`R!!-#J@9Le!rr5fEJ!5E#`J,"68X+`8f'`58U`8e0#!)'`
8d()!-M!)!'!)6VS+lR)!-J$RUBL""N-!%%Ki!!BJ"-#ZrrJ[!%kkq&l3VJ!)*N"
q!"i6$%F!%'pb$%F!BfB'F2KJ!!+D%#X!!H#XPJ"`m0"(2J#f4f`X)#`8e,#X&0K
X%P+X&063J#"X&0"b!$)`#!"J#%kk#S4b!$)!jkQ)J3C$!"")H!!')%c3ap$(F!!
`+"C@`)3[!%kkpqc3U`!#*N"q!"i6$%F!%'k1%#X!!H#XPJ!-4`!3CM)J"9+&d+`
8h#"!%+X!!b"X&14"k2lkXF9L!2m8+888i%)R6VS,[P52+M`!!)!!B!$qrJa(!!p
R!!(HYNGX,#!X&05`V"6BE"*5V"68d)!JE"63FJ!b-!J!B!K1ZJRNFJ!b!1HTL)%
'3`!3F!!`+`!#)%c3ap$(FJ!b+"C@`S63J5e!rrcZV*B(YQi!&Q`X)#`8e,#X&0K
X%P+X&063J#"X&0"b!$)`#!"J#%kk#C4b!$)!jkQ)J3C$!"")H!!')!6!V[rd,`"
1Z[F%d+i!$#C!IJ!H%`a(!""[FJa(!'0Q"R$iB!!"3"!V!!(JV*B!F2$34ci!YNG
X,#!X&05`V"6BE"*5V"68d)!JE"63FJ!b-!J!B!K1ZJNUFJ!b!1HTL)%'3`!35(J
!"L"-d-I3ah!!-#J@9X#%,`"1Z[D5d+X!!LC!IJ!H%`a(!""ZMK!V!!(JV*B!YNG
X,#!X&05`V"6BE"*5V"68d)!JE"63FJ!b-!J!B!K1ZJM+FJ!b!1HTL)%'3`!3)%c
3ap$(F!!`+"C@`)4b!$)V!!)X"Cb"R)$ZV*B(F2r3V"6Nc)#kKQ3%)!CJ!L!&2L`
8jTj!-%Hal[rmB`BJ,[rmB!3J"dM!2J")`*'Zrr`J"P+'d+`8h#"!)!95KG#X&0`
L3"+3!&0(CZBJE"6N3HMqqV(&BK)T446J3LG1ZJRJ9)mU2!!!J!"+V[rmCT!!B!$
p'LP&&1!T4"D!18-@K(!!60m)q%jH6R919[V`51FI!#iX&S!m,"D%B$BJ,"68X+`
8f'`@)#`8e&+X&063J0#X&0!J3(!!-""J#Nkk"q"b!$)!)!&b!$)!lDQ1J3C'!"!
-4J!&EF4k(mU("S8!!!%"kSp`qp"'2!"J0L!X&05`V"6BE"BJ,"688U`8e0#!d+`
8d#"!F!!`%'!+6VS(N!"b!$)!)!&b!$)!lDQ1J3C'!"!-4J!&EF4`(m#(8S!Y32V
mkSpbqp*'2!&J0L!X&05`V"6BE"BJ,"688U`8e0#!d+`8d#"!F!!`%'!+6VS(3()
!-J!J!A)!-J$YUBk""NB!%!a'!!4Ya(J2b)GBK1L2F2c34M`!$)8!!!%HBJK`(V#
Zq[aN"R$jB!!$d(B!B'!J,"68X+`8f'`@)#`8e&+X&063J0#X&0!J3(!!-""J#Nk
k"Yab!$)!)!&b!$)!lDQ1J3C'!"!-4J!$EF4`"m#()%`L!q@*dF%L+"8@)%lPLG(
")8$l!1D2F2h34M`!8S1iJf,5B"JJ6#!$jBM4`#!S&4BJ6Z@)dF"#U2X!8S0`%l#
$BZ*`"be!rr4)E[rd5'lrr%+R3UG)H!!65(J!%dKZq`"1Z[Ff5-!S!%r[!"aR&R$
mX)4Q#LmZrra1Z[V-@)m`"'!!!`BJ"G#Zq[`Y32Vi)%`L,[rddF(4`A3!0#J@9Le
#q[4#V[V`H!"J!!(m)#`8e,#X&0KX&L!X&045V"68d)$3V"63)%"`!$!3B!T1ZJA
ZFJ!b!#!"FJ!b!1fTMS%'4J!3-%Dal[rdCF*)H!!')!I!V[Vd,`"1Z[03d+lrr#e
!rrJJ3(B!&LJ!!HD[R%-J3(B!0LJ!!R)3XS0M&Le$q[!J"&+%)%lPL0(!)82l!'!
!!AC`%,#$CcKJGL!X&05`V"6BE"BJ,"688U`8e0#!d+`8d#"!F!!`%'!+6VS&B()
!-J!J!A)!-J$YUBk""NB!%!a'!!*Ya(B$aSG@Jq52F2l34M`!)!63Jl#Zq[KM&R$
jB!!"pL!%8S3J6Z@)dF!KE[V`q`!J!e1$5S"Qk'!!!2K`%E#$CcTJ!!#Z)#`8e,#
X&0KX&L!X&045V"68d)$3V"63)%"`!$!3B!T1ZJ6JFJ!b!#!"FJ!b!1fTMS%'4J!
3$%B!!fh%GJI'KeD$jSp`rG"'2!!J"0#$X+lkq'-8F2PJ!!&f)!45K#"1jBM4`%+
Sq`!J!e1$5S"QkN+Zq["JGL!X&05`V"6BE"BJ,"688U`8e0#!d+`8d#"!F!!`%'!
+6VS%DR)!-J!J!A)!-J$YUBk""NB!%!a'!!GYa(CraSG`#pD!lSp`qG"'2!!J"0#
$X+lkq'-8F2PJ!!$q)!45K#"1jBM4`%+Sq`!J!e1$5S"QkN+Zq[#iV[ViC3$q0Lm
Zrra1Z[L5+8F@J$P'&S3YE"Cirr4)E[rd5'lrr%KX&D")E"9L5(J"!5m&5'll!%k
kp,K)`#J!6qm!)'F@F2b`K'B+,blrr%kkq%jBMc!%B!!!L#eX&Rcrm%KZrr")E[r
i5'`@'NKX&Gj#TbmZq[`J6L!&jBM4`%KSq`"1Z[4X5-!S!%r[!"aR(($mX)4Q#Lm
ZrrK1Z[J#@)m[,[rm6VVhq$!%B$3[,[r`,blrp#mZrrJ[,[rm6VVi#%M!+!"2l`!
3C`3`"'!5,blrr%kkpmSZV[ri6VVh`R!!61i!q2VF6Pj1G8MR(`!Z,"D!2#`@K#S
X&1!S"NM%F!r)J1L[R%4J0L!X&05`V"6BE"BJ,"688U`8e0#!d+`8d#"!F!!`%'!
+6VS#kR)!-J!J!A)!-J$YUBk""NB!%!a'!""Ya#J(!S3!!2rrGJ('"(!3i+p`m0"
'2!"J0L!X&05`V"6BE"BJ,"688U`8e0#!d+`8d#"!F!!`%'!+6VS#PR)!-J!J!A)
!-J$YUBk""NB!%!a'!""Ya#!(4S!#J!!!rrq`K'F'F2CJ!!$8F"$JVh$`d%Bm!'"
Q)#`8e,#X&0KX&L!X&045V"68d)$3V"63)%"`!$!3B!T1ZJ)kFJ!b!#!"FJ!b!1f
TMS%'4J!3$%B!#'h%)!95KG#X&0`J3"#(ZU`8j'B3+888i"mm!!&1ZJ1QHJ"8Mq#
2F2M34M`!)!46K%U!CXK+!fBiB%3J,"68X+`8f'`@)#`8e&+X&063J0#X&0!J3(!
!-""J#Nkk!FCb!$)!)!&b!$)!lDQ1J3C'!"!-4J!)EF6JMh$id%Bm!#P&&1!T4aD
!18B@K(!!60m!q%je6PB!!%MR"`!Z,"D!2#`@K'!f)#`8e,#X&0KX&L!X&045V"6
8d)$3V"63)%"`!$!3B!T1ZJ&FFJ!b!#!"FJ!b!1fTMS%'4J!3$%B!!@h%F!(!"b"
Z!!J3J1+2F2r34M`!B$BJ,"68X+`8f'`@)#`8e&+X&063J0#X&0!J3(!!-""J#Nk
k!3ab!$)!)!&b!$)!lDQ1J3C'!"!-4J!#EF4k!mT(j)p`rY"'2!!T4aD!18B@K!a
&!!*Q"Nkkq-*J$%T&CJC1Z[fLB!*`pdcI!1"1ANje6PErrLm(3U`8i%*X&S4#V"D
!5'lrrdkkraBq!%M!@)pR"$!(B#4+,[rrCqCJ#J4X!"!@K&1X&03-E!!3&S4XlKm
m!!&1ZJ)DF!!Z,[rk6Pj1G8j@rr`YE"6Brra)E[rm,b`8d#"X&,Sr+!!86VS!c%+
X&03TE[rm&,iTE[rm&0K1ANje6PErr#!X&0M3J#e!rra)E[rm,b`8d#"X&,Sr+!!
86VS!PN+X&03TE[rm&,iJ,[rmiS!T3"6B6Pj1G8j@rra)j`-35L`8`QF%F!"JB#i
X&06HKb`()!I3V"63*N!Z,"6BRU`8e0k()!FLE"63)%ZL,Le'rra)E[rm)!I3V"6
3,`!JE"5k2bJ!&%kk!#a`!5P!&04b!Lk")JI5V[rm,`&1ZZdb+8!8f#"X&0!`%%c
Z#-$rm%jH6R919[r+,`FJEJ!1,9$rbL!ZrmU`V"6-E3`YE"6-rmSCI!!"&-)JE"5
k5UJ!"'FF3QFr,J!)5'lrbLmZ!!SJE"5k)'J!"%k3!$iIB#SpEJ!)rqBYEJ!+rqi
YE[r+rr)pI!!$rrT#V[rm3HlrcU!#2J!YE[rfrmT+4fF@18F9&%(X&1K`!%U!CJ*
`!8cBh[K1d5!ZrmU4V"6-)'i!$L#!,Kp1ANje6PErbLm(,@i!$[r+)#lrbY'X&-J
JE"5k5UJ!#'FF3QFr,J!)5'lrbLmZ!!SJE"5k)'J!#%k3!$iIB#SpEJ!)rqBYEJ!
+rqiYE[r+rr)pI!!$rrT#V[rm3HlrcU!$2J!YE[rfrmT+4fF@18F9&%(X&1K`!%U
!CJ*`!8cBh[K1d5iI6Pj1G8j@!!"1ZZlN5J"R'$Pmrr89&%(X&1K`!%U!CJ*`!8c
Bh[K1d8UX&1"R6NSZ!!KQ#!5X!!#!!"6J,b`8i#mX&0`JE"5k2bJ!&Nkkrc*+,J!
)6qm!#QBH)'`8i0(X&0`J2!!!J!!LE"6FSLiTI!!!J!!8i'!%3U`8i%jH6R8!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!
4!!!!%J!!!!!!!!!)!!!!"`!!!!N!!!!'!!!!#J!!!!8!!!!,!!!!"!!!!!`!!!!
$!!!!$3!!!!)!!!!1!!!!!3!!!!m!!`!%!!8!"J!(!!J!#3!+!!X!$3!2!"%!%`!
A!"X!(`!M!#X!-`!l!%-!8`"M!(-!J`#M!--!i`%#!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!3!"!!%!!3!#!!)!!J!#!!-!!`!$!!-!"!!%!!3!"!!&!!8!"3!&!!!!B`"
M!!%!!J!$!!3!"3!(!!N!$3!4!"N!)3!a!%%!B3#"!-%"!3'"!J%$!33""J%)!3`
"%!%B!5!"-!&!!@!"!!!!!!!!!!!!!3!"!!)!!J!$!!-!"!!%!!8!"3!'!!B!"`!
(!!J!#!!*!!N!#J!+!!X!#`!-!!`!$3!0!!!!!3!$!!F!$`!I!$m!I`$r!Im$r`I
r$rmIrcrrIrrrr`!!!!N!!!!'!!!!!!!!!!!P5+Vq"`!!!!!!!!!!!!!!!Z!!!3!
(!!!!)!!!!!!!!!!!5Qpj)A"PCQC`Gh"M!!!!!DeN[#8!!!!!!!!!!!!!!!!!!`!
#!!!!!2rrrrm!!!!!!!!J&!!!)"3!!#!8!!!"S!!%"!$rrrrr!!!!!!!!!fJ!!!0
S!!!$D!!!)F!"!33!rrrrr`!!!!!!!!!!!!!!!!!!!4`!!!#!"!3%!!!!$XS!!!!
"!!!!N!$rrrrr!!!!!2rrrrm!!!!!!!!!!3!!!!N!!!!"!!!!J!!!!)J!!!%8!!!
!!3!!!!!!!!!!!!!!!!!!!!!!!!!*!!!!!!!!!!!#!!!0!J!!&`)!!#)#!!!d!J!
!2`)!!&J#!!"Y!J!!H3)!!))!!BB-!!!!!`!!!!"+#%)D4J!!!%PZG'9bCQ&MC8a
TBJ"#E'pMDde[GQ8!8%*5C@&N8hPZB`"$B@aX9@jTGQ9bFf&X8(*[B`"%DA0`Eh0
P8(4b!%4TFh"[Ff95Eh9dD@jP4'9cBh*TF(4[FJ"1CAG5Eh9dD@jP4'9cBh*TF(4
[FJ"33PGbDA4P8hPZB`"0C@e&FR*[FJ"1CAG3G()!!!!!!!!!!!!!!!"TBP"3I!J
#TT2Krrb6`IriNk(rp*!!!3!)P#(rX(ap'hJiBJ0B1!!!!$[L!JL6S`!!1')#$,!
I!!")!"dpU"m!!#`!!!"!JJ"SIk2VH%J!!)9J!!!!J"d!!#`!!!0"JJ!`3)!!%#`
!!!&"JJ!85!!!4#`!!!9!J!!m5!!!*%J!!4PJ!!!!I(iEH%J!!#K)!!'aB!!!!(a
q'hK)!!!B5!!#[@!!!!"mIKYi5!!!#(`H!hKr`r0iJ!%!@$JK!&"m#!1QJq(rr)2
"rrL$SIrd6S!!)(`)!UD6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Iq`I(`EH$[L!e#
!I!!XJ"m!!$ZL!dKm!`"!1m)$6%'#!'b)(J!!+!!!!%'#!"L!I3!!5!!G6B""!"3
i!!!!Q"i!!)"m!#`mJ!!"1)5UrUJ$!!"m!#!!3B)!+$L#!*JiS!!!J)3!!%J!(6'
!33!8N!"p!!!i!!!"Q"i!!%J!!!L3!(d!!)!F!#b3!"m!!)!"!&Ji)3"3I!J$TS2
Krrb$`IriJk(rp)1"rr"1J!!JI!J#TT2Krrb6`IriN!!"!!L8)Ir!1q)$1$J!!!!
l`J-XN!!I!!!iBJ0BN!!H!!#!B`!!J!-!(&3!"lp"JJ"%2'!!!8J!(-@!33!8N!"
r!!")!"c4J%%!&(aJ"c9!JJ!X2'!!!8J!(+@!33!8N!"q!!")!"baJ%%!&(aJ"c9
!JJ!-1'!!!%J!!"")!!&"B!!!!$KJrrk!!3")1#%!3(`)!kD$iIrmJm(rq%k!!#"
m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`1q)$@$[#!d#!I`!!1+)$,)#$!#!S"!!
!3B)!1)"M!#3m!!!#I!-!!%#!!!`iB2rq5!!!Z$KL!cL3!)-!!)"r!!#!B`!J2!-
!!C!!"3!!5!!!')!&!!!S!!!!3))!$$KJrre)!!#)1))$0$ZJ!!!mS!!"1')$-*1
N!!!iTB!!1))$+*!!S`!!2!!!!6KL!b56T!!!1))$2*!!!`!!1')$4)#r!!#!"3!
-N!!%!!#ES`!!Nli!!%J!&HeJ!!!!5!!93@!!!!"mB!Fe3B)!#%J!!#!iB!!"5!!
CF@!!!!#!(J!!Ik2VH)#I!!#3!!3!%)!"!&Ji)3"3I!J$TS2Krrb$`IriJk(rp%k
!!#"m#!+QNq(rr*!!!3!)P#(r`$KL!cJliJ-XJ'-!!#J$!!""JJ!-5!!E6B""!"5
!I`!!+!-!!%'#!!a)!"XjJ%%!&$KJ!!#!!3")1#%!3(`)!kD$iIrm6S!!)(`)!UD
6iIrmNm(rq*1Krr56JIr`N!!"!!L8)Iq`1q)$@$Z!!!#!I`!!J'-!,#J$!!""JJ"
d2)!!!DJ$!!!iK+VqI!!J!%'#!#3lS!23Ik6VH(q&ihK)!"TpJ%%!&(aq'hJlJ!!
"5!!!#(aq'hJi`J0!Im2cH)#r!!"rT1YiJ-B!!%J!'V'!33!89i!'2har'hK"JJ!
FIm2cH%J!'L'!33!85!!!$(q$ihK)!!!)Iq2lH)!"!&Ji)3"3I!J$TS2Krrb$`Ir
iJk(rp)1"rr"1J!!J1!!!!#`%!!"mL31Q6)%!)*J$!!!iB`!"3J$rq%k!!#"m#!+
Q[D(rY*!!!3!)P#(k%*!!S3B3I(!EH(bB)hL3!-%'&(d23hKp,8YiN!$K"KJiB39
%1)!!4%[rrkeq$S0iIaA$H$L""85!$J!!1Fi!"$Derrp8"4!kI'3S,MJ$!!&m"#N
Z3),rj)!""84m!-"!3))!'$J!!!#3!!m!!(`$!hL3!!d!!%J!"$b#63!!1S!!!6K
J!!3i!!!3I!N$TML""84m""JZ+!!!!%##!"!kP!!"1'-!"%)!rqam%U"!IT1MH%#
!!!KqNU0i1U!!%$KJ!%"qU31Q1)%&4(`%'#iS!!!!3))!%$UerrmiBrrm3J$rl(`
5U%"qYkYi3)%!#(kbUhJi!!!"NNd!!(`&S$#3!+%&L$L""84@Ja!k5!!!0(`%'#k
!S3@)I+!S8C!!S3@)3)!!$$KJrrY)!!1-J+%&L$U8!!%iB`!%9+8)2*!!S3@)I"5
S3%'!rma@T"!kJ+%&L$KK"84m!b!ZI+!S8C!!S3@)3)!!$$KJrrY)!!0-J+%&L$U
!!!!j`39)I!!U&(`$)5iiB3"!NS%!2%J!!"L!$J!!1Fi!"(k8!K55J`!!1'-!"$D
errp!J[rSIJk$H$UJ!!!iS3!i1'%!I)+1!!!jcJ!%+"3!!%'#!"a@KK!kI)8`,MJ
%!!&m"6%Z9)!31RkM!5ikY3!"I"A!3%'!rp!kS!!!NU%!1(kJUhKqX+YiNU%%r$R
"!(aq-J$31X$rreF$%$TmEKS8N!"K"C!!1'%&4$ZK!$L3!'%&M$Z""2a@Ia!k1'!
!Bj!!B3@8IVUVH(klUhJl!!!"5!!#6)"K"BapSrJZ1(2rrj!!B3@B5!!#)$XY!!&
@hK!k5!!!q(iaNK4q%EK3I"#3!%!keJ!"1pi!"%#"!!Kq8*0iIT'B8(m'S$"m"XK
!3)%!0$KK"84mf6"3I'2k&%J!!"L%!`!%9-B)2(`'!%"!J3!8I-!`8$U8!!&m&)"
!3B$rj(m3S$!i%!!"9!-B1%J!&b@!33!8I!233%##!#!X&J!!3B)!%)"K"2a)!!(
KB!!!!$KJrrT)!!(!1!-!#*!!$`!!1H-!"(`!!hL6E`!!,"B!!(`Fm5j"JJ"%IVh
a,MKfrrmiY!!3QN%&2Ab5L&"qY#3`Q+%&2&4M%$T@K4JiN!!""8"mh"JZJ)%&2)"
K"8"mTLS8N!#&!!#3!'8!"(aaNK4m%aJ!3B(r")"K"C!!I*'B8*L""6em$KK!3B!
!%)"K"C5BB38m5!!!G)"Z!!#!J3B3I!-J3%#!!#`S!`%!3)!!$$KJ!"")!!!)1'!
!$jKK"6b!EJ!!1Fi!","K"8")!!!mJ)%'%(aN'&#!J3BB9'-)2(aN'Lk!J3B3Q'%
&2)"Z!!!jcJ!%I'3B8)#""K48B`JmI'3D,V"K"8"mFCK3I`BB-(kdM$")!!!J9S8
B1)#""6b!B39!I+!U&(k8-K53!)8!!*!!C3!%I"5!3%'!rq#!B3@BIa3B-%J!!!a
qYD*i9T6iIRkMS$P!J[rdIV@LH&E$%$T)!!!31YErrcKMrraq-SK3I`@)-(bG'#i
iTIrrIU8S1(`&)%"!J[rJID0VH#J$!!!jVIrr3),pf$Tc!!%lr`!%I"1i!%#"rE5
!S3@),!8!!%'#!"3X&`!!3B)!$$KJrra)!!!)1'!!!)!""IJi)3A`I!J$TVQKrl4
1J!!JI!J#TT2Krrb6`IriN!!"!!L8)Ir!1q!!!%J!!"JiBrriJm-!"%J!&6@!33!
8Im2cH(`$q%"!J[rS1'!!!)!"!%Ji)3"!I!J$TS2Krrb$`Iri6S!!)(`)!UDpSIq
dN!!"!!L8)Ip`N!"K!+KmMb0i1))$B(bp"c3lJJ-SI0!(0))N!!!iJJ0F9k-)2$Y
L!Ga@!!Jm1X)$*$VL!b`l!J-i1b)$-$Y#!c5Vj!!!JP`!!(hE'LjpZ`)Z5!!!5)#
k!!#!'3!!I!8!!%#!!"b!Q!!!1'8!!95J#$b3!(S!!(aN!Lj)!!!-5!!2'@!!!!"
ri!Fd9'-%2RaJ!$"q-30i1rm!%(rJ"c4m!1J!3B$rY(iJF$L!B3#S9!!B1(jM!K5
+X`!!IU!(0#`!!""!J3#SIU!(0#`!!'0!JJ!-1'$rq%J!!lL)%`!"1VArm(ia"$"
ri2K3IV3(0%J!!%L!ZJ!!J"N!!(`&!!"!J!!FJ*J!!$KP!!&8S!JmN!"k!!"mC!)
Z5!!!$%J!$ReJ!!!!Iq!(0&4M"$jmB!!`IM%$H$[r!""ri!FdI!#J!%'!rl4@J!J
mJ(-!"(`E!Ljq)!!i9!!B1(jM!K5+X`!!IU!(0#`!!"""JIpJL"-!!Akq"c3X(J!
3IM%%-(rJq&"!JJ"%IN#6H+#6!!5!G`!!1P)!!Ab$!Dk!GJ!!1!2qqR`5!%""J2l
iNP`!!$KJ!!")!"%9B!!!!$j!!!%k8S!!5rrqh#`H!!p"JJ+`5!!!5)#k!!#!'3!
!I!8!!%#!!"b!Q!!!1'8!!95J#$b3!(S!!(aN!Lj)!!!-5!!0S@!!!!"ri!Fd9'-
%2RaJ!$"q-30i1rm!%(rJ"c4m!2!!3B$rY&I!#$bJF`!%I"X#,Rreq&"q)!!iIS-
#&(iap$")!!")J,S!!)!C!!"m"3!!3)!!()#B!!!iC3!"9+!)2*!!HJ!!I'3#,NJ
!!!a)!!daB!!!!(rJ"c48B`3qI'!!-(ia!hJlr`!3Iq!(0(`!J!""J2qdIL"S1&3
!'$KqE`)8LV-!!(kJ"c3X!!!33)%!U(kJ"c3X!!"M3))!$$KJrrK)!!(8L"-!!6U
err"q-33`Iq$i8(ke"c4)!!")J,S!!)!C!!"m"3!!3)!!()#B!!!iC3!"9+!)2*!
!HJ!!I'3#,NJ!!!a)!!bCB!!!!(rJ"c48B`3qI'!!-(ia!hJlr`!3Iq!(0(`!U!"
"J2qd9U!)2)"c!!4m'`)ZIL!!1&3!'$KqB`)8LV-!!(kJ"c3X!!!33B(rB)J6!!&
q-33`Iq$i8(kq"c4)!!")J,S!!)!C!!"m"3!!3)!!()#B!!!iC3!"9+!)2*!!HJ!
!I'3#,NJ!!!a)!!`0B!!!!(rJ"c48B`3qI'!!-(ia!hJlr`!3Iq!(0(`!m!""J2q
d9m-)2+!6!!4mHaSZIrAi8(`!N!"3IL-B1(jM!&"q-I3`J(B!!$J$rrpqF`!iI"1
3!%"!J3!-IQ1EH%J!!!Kq3j0iJ"B!!(kM!&"qS!FdI!#J3%#"!!aqPD0i5!!!#(k
e"c4qS!FdIS#J8(jJQhL!Y`!!1VArrhj$NhKmK3#ZIU!(0Ab&'DikF`!"1P)!!8#
#rpb!GJ!!1!2qqR`5!%""J!!FNP`!!$KJ!!")!!jTB!!!!$j!!!%k8S!!+"3!!%#
#rf4,rr`SNP`!!$KJ!!!iJJ0JNL3!!$L#!ebcj!!!J!%!Q$JK!*!!I!J$TVQKrl4
1J!!JI!J#TVhKrlb3!!%!#*3KqS!jiJ0F1J)$B$T#!*`lJJ-i1k)$-$[#!c5$%!!
!Uqm!!%J!!%L![J!!J"d!!(`&!!"!J!!FJ*`!!$KP!!&8S!JmN!"q!!"mC!)Z5!!
!$%J!#TPJ!!!!Iq!(0&4M"$jmB!!`IaJ$H$[r!""ri!Fd,!!!"8'!rl4A!`Eq1b-
"!9FBfAilrrrl5!!!5)#q!!#!(3!!I!8!!%#!!"b!R!!!1'8!!95J#$b3!(i!!(a
N!Lj)!!!-5!!+0@!!!!"ri!Fd9'-%2RaJ!$"r'!0i1rm!%(rJ"c3X!!!&3B$rY&F
$"[ik)`!"9aMCIM[rrrY)!!")J,i!!)!G!!"m"3!!3)!!()#F!!!iC3!"9+!)2*!
!IJ!!I'3#,NJ!!!a)!!R4B!!!!(rJ"c48B`3qI'!!-(mB!hJlr`!3Iq!(0#`!!!4
"J2qd9`-(2LJC!4ikJ`!%9aMK2M[rrra"J3!-+"%!(N#"!!`iB2rj5!!%[$TJ!!"
qGCYi1X%!1%J!!(K)!!")J,i!!)!G!!"m"3!!3)!!()#F!!!iC3!"9+!)2*!!IJ!
!I'3#,NJ!!!a)!!P&B!!!!(rJ"c48B`3qI'!!-(mB!hJlr`!3Iq!(0#`!!!0"J2q
dI"+S,PF$"hjA'1Mq9!!31Raf!5ilrrrp1R-!!6Ue!!4m%k"!3B$rd#!6!"-S%`!
6I!N$TML"!$K@Ba!k1+!!!%#!!"Km%KJZ1'-!"&3!%$TmT!%Z3J$rm$J!!!FiJ!!
6N!!""5`i`!!!I)8MH(c(-hJiB3!i13%&0$NK"5a,rr2CI(3(08'#!"`X&2rm3))
!$)"K"64,rrL4IS1MH%J!!lL!!38X1N!!!$KL!Gaq9*0i9!!)2(pM!Ljr@BS81Z%
!1(j@NhKq9C0i5!!#P%J!!%L![J!!J"d!!(`&!!"!J!!FJ*`!!$KP!!&8S!JmN!"
q!!"mC!)Z5!!!$%J!##9J!!!!Iq!(0&4M"$jmB!!`IaJ$H$[r!"#!!38XIq-(0(`
$!%""J2q`I`$B1)"K"648!"JiI'-#&*!!B38`LQ-!!B"K"6"r'*``Ir2i8+*M!!3
S%`!33)!!((k!ShKqFTYi9!!31RjA!5ikP!!"5!!"p%##!+4)!!")J,i!!)!G!!"
m"3!!3)!!()#F!!!iC3!"9+!)2*!!IJ!!I'3#,NJ!!!a)!!H"B!!!!(rJ"c48B`3
qI'!!-(mB!hJlr`!3Iq!(0#`!!!*"J2qd9`-([MTM!!0m&*S8I!$33&FBm,ilrrr
q3)%!)$KJrrP)!!*`5!!!&(k!ShK8!"!kIPF",MU8!!&qB*Yi+!!!!$Tcrrp!J[r
N5!!"8#J6!"&!JJ$`5!!!5)#q!!#!(3!!I!8!!%#!!"b!R!!!1'8!!95J#$b3!(i
!!(aN!Lj)!!!-5!!'f@!!!!"ri!Fd9'-%2RaJ!$"r'!0i1rm!%(rJ"c3X!!!$3B$
rY&F$"hikB`!$I"5D&(`!d%"A'1Mq1rrrr8#"!#!iB2rj5!!"b%J!!"4qJ+0i9!!
31Rkh!5ikP!!"IQ#EH#J!!!!kFrrr3),rj$T!!!")!!#N5!!!5)#q!!#!(3!!I!8
!!%#!!"b!R!!!1'8!!95J#$b3!(i!!(aN!Lj)!!!-5!!'0@!!!!"ri!Fd9'-%2Ra
J!$"r'!0i1rm!%(rJ"c3X!!!(3B$rY&F$"RikB`!,I"5D&(`!d%"A'-Rq1rrrq8#
"!#!iB2rj5!!"*%J!!"4qJ+0i9!!31RlA!5ikP!!"IQ#EH#J!!!!kFrrr3),rj$T
!!!"m&0"!3B$pY)"K"64,rr@pNa!!!(mNbhJiSJ)!1'%!1,2[!!!i`J$S13%&0)!
&!!!j)38X11)"*T!!!38X1+!"!8[rm,PmG!Fe3B)!(#`8rra!JJ!-J'%&0%[rpA&
qJk0i5!!!Q$L#!J4A)"!k1'%!1$M#!@5!T!!!11)"S(iNLhL3!+%&+(aM!K3j!38
`15%&+$LJ!!",rr"PI(3(08'#!#3X&2rm3))!$)"K"6",rr8GJ'%&0%[rp49qJk0
i5!!!2)"K"65!J38`J+%&,)$""5K,rr90I(3(08'#!!aqJk0i5!!!')"K"64,rr6
KJ'%&-%[rp0NiB!!!J!%&L$JK"B"m#!1QZH(r[%k!!#"m#!+Q[Q(rc*!!!3!)P#(
rN!!l`J0F1q)$B+UH!!!lSJ-S9TF(2S+r!!!l!J-NITHJ8$XL!baqYE``1d)$1$Y
L!c!lJJ-dJYd!!%J!!%b!I!!!J"X!!(`$!!"!J!!JI'-EH)#D!!!i!`!"N!!F!!"
8B!JmI'3#,NJ!!!a)!!3pB!!!!(k!"c48B`3qI'!!-(ke!hJkP!!3IS!(0#`!!""
"J2q`9VF%2PEc"rj@YB3q1T6rm%J!!%b!I!!!J"X!!(`$!!"!J!!JI'-EH)#D!!!
i!`!"N!!F!!"8B!JmI'3#,NJ!!!a)!!29B!!!!(k!"c48B`3qI'!!-(ke!hJkP!!
3IS!(0#`!!"""J2q`IU#Sq&3!"$jm&`"!3B)!$$KJrrC)!!%S9V@%2MU8rr")!!#
85!!!6)"m!!#!'`!!I!-!!%#!!#"mBaYiJ*S!!$J$!!'3!"`!!&4J#$amC!)Z5!!
!$%J!!ePJ!!!!IS!(0&4M"$jmB!!`IV8$H$U8!""qJ!Fd,!!!#%'!rl"q`,0iJ(N
!!$V@!!&qS`'ZJ"J!!(`@!%"!JJ!BNYd!!$KJ!!&)!!BjB!!!!$V!!!"@YF)q1T6
rq(lJZhJS!!!!1[Irrd##rl"@B!Br3B)!C%J!!%b!I!!!J"X!!(`$!!"!J!!JI'-
EH)#D!!!i!`!"N!!F!!"8B!JmI'3#,NJ!!!a)!!+aB!!!!(k!"c48B`3qI'!!-(k
e!hJkP!!3IS!(0#`!!!K"J2q`9VA#2MU8rrL5h3!!1'!!!*+r!!#bRJ!!J!%!H$J
K!("m#!1QZQ(rc%k!!#"m#!+Q[`(ri*!!!3!)P#(rS(ai'hJl`J0F1q)$B$YL!cJ
lJJ-`1k)$0)0I!!#V2J!!5!!!6)"p!!#!(!!!I!-!!%#!!#"mBaYiJ*X!!$J$!!'
3!"d!!&4J#$amC!)Z5!!!$%J!!IeJ!!!!Ib!(0&4M"$jmB!!`IeS$H$Xj!""r)!F
d,!!!!8'!rl"A3!IqQ"J!!&GDq(il1Irr5!!!6)"p!!#!(!!!I!-!!%#!!#"mBaY
iJ*X!!$J$!!'3!"d!!&4J#$amC!)Z5!!!$%J!!C9J!!!!Ib!(0&4M"$jmB!!`IeS
$H$Xj!""r)!Fd,!!!!N'!rl"A3`Hq9eV`[RaJ"c56A`!!1cRrrL`!!!+c2J!!3))
!$%[rpPP)!!!BI'!(08##!!a,rrb*5!!!#$KJrrH!!3"S1#%!B(`)!kDl!IrJ6S!
!)(`)!UD6iIrmNm(rq*!!!3!)P#(rX$KL!bJi!!!!1q)$A*!!!`!!1')$B,!I!!!
l`J-dN!!$!!!iB3!i5rrqLAaJ"c9"JJ!)5!!!5)J"!$JS!!!!3B,rj%J!!"bSI`!
!1!2rm,!I!!#!IJ!!1!2rrj!!(J!!U"m!!#`!!""!J2rJ1'!!!8J!!mPJ!!!!1'!
!!)!"!&Ji)3"3I!J$TS2Krrb$`Iri6S!!)(`)!UD6iIrmN!!"!!L8)Iq`1q)$-$L
K!$JiJJ0BJ"m!!$KL!cK8!!JmN!!"!$L!a!!!J)-!!+KQ!"4)!!$jB!!!!$L#!c3
i!!!!1')$9*!!"!!!J!%!1*!!!`!!J!%!1(`!$R#3!"m!!)!"!&Ji)3"3I!J$TS2
Krra1J!!JI!J#TVpKrqb3!!%!#*3Krk!iBJ0%1k)$0)J$!!!l`J-i+!!!!$[L!c"
"JJ!-1'!!!%J!!(5!I3!!J"m!!)#H!!"8I!JmI!-!8&3E#$amC1)8IfAEH%J!"9@
!33!8Ni%!1$LK!$JiBJ0BJ"i!!)"M!!"mJ0S8U'-!&%J!!%&J!!!!1!!!!C!!(3!
!J!%!1(`!fK4m!!j`I!!"P*!!(`!!J(i!!+"M!!#!!3"S1#%!B(`)!kDlBIrX6S!
!)(`)!UDr)IrNN!!"!!L8)Ip`I(SEH(bE)hKm[#YiJ"`!!$ZJ!!!liJ-mN!!"!'`
iJJ0BJ'%!E)!I!!"m!`!!3B!!&*!!!3"X1!!!!6KL!d5B!`!!J'3!!)"M!!3S!`!
!3B)!G$b!!!'S!`!!1)5UrR`!)!""JJ!N1m!2S(r%mhJiS!!!5!!$iB""!"4mH4Y
i1k!!!8J!!!KmH4YiIb2,H(r%mhKrCpYiId8(0$M"!'a)!!39J%%!&&HJ"MpmHKY
i3B)!6(mMbhK)!!1&J%%!&%J!!$bc33"31)!!!i#K!'`i!!!!Nf%!@$KK!$L3!+%
!A,#"!'53!!%!CNJ!!q@!33!8J!%!B(ak'hL3!!%!E(p!"c9"JJ!F1+)##$L!!!!
iBJ)-Xd8!!%J!!UPJ!!!!J'%!E)!I!!"m!`"3N!!I!!#!!3"XN!!F!!#!!3#B1#%
!N!"m#!1QZb(rj%k!!#"m#!+Q[f(rl*!!!3!)P#(rF(al'hKmR#0iN!#K!'`lS!!
!1')$3)#"!'b!!`!!1+)$@(`!)K53!!-!!)"P!!#!B`!)+!-!!%'#!(3mJ!!"U!-
!!$L%U[jm!#!!3B)!*$[J$k"rj2YiIkAVH%J!!U@!33!8I(iEH$ZJ!!&)!!!)I(i
EH(r$mhKrj2YiIiIMH(pP"c3i`3"X5!!#fB""!"4AS!BrI(mEH%'#!%Kr`r0i5!!
#5B""!"4)!!!iXf%!8$J!!!1!J3"X1'%!1*1"!&L3!)%!A,!"!'56S3"Q5!!#hB"
"!"5!!3"JI(mEH*!!!3"XIq!(08'#!"`iSJ))1)!!!$KL!Jbcj3!!5!!"F@!!!!#
!!3#B1#%!N!"m#!1QZf(rl%k!!#"m#!+QNq(rr*2"rrL6SIrdN!!"!!L8)Iq`I(d
EH$[#!b`liJ-S5rrQq@!!!!"8B!Br3B)!)$LL!JJi!2re1')#$$L!!!#`"3!!5!!
"$@!!!!#!I`!!,!-!!%'#!'aAS!Br3))!$$J$J!#3!"m!!$KL!eL!RJ!!J'-!!)#
r!!#SB`!@5rrqB9HJ"Mp!JJ!dJ(i!!$bJ!!'!(`!!1+@!!(aN'hKmB`)85!!"fB"
"!"3mB!!"1'1!!*!!I`!!5!!!$$J!!!#3!"m!!)!"!&Ji)3"3I!J$TS2Krrb$`Ir
iJk(rp%k!!#"mU!+QI-!!*T!!S`!!N!$$!!53!#-!#*!!3`!-[D-!&2`!")lC``"
JfH-!D0S$!($D)`"ifN-!J0TM!)MDJ`#3!0UM!*MD``#JfZ-!U0X$!,$E)`#ifd-
!`0YM!-MEJ`$3fk-!f0[$!1$Ei`$Sf!-!m$KJ!!"1J!!JJ+-!!)$$!!4mU!1QI-r
a))!M!!L!3`!-ZD-!&-R$!'$*i`"SbJ-!F-SM!(M+3`#!bQ-!L-U$!*!!bU-!Q-V
$!+$+i`#Sb`-!X-XM!,M,3`$!bf-!b-Z$!0$,S`$Bbm-!i-J$!2$,i`$S,!3!!(b
$)hMprJ@16))!)$KJ!!&1J!!JJB)!%*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!"5
3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!JN!""!"5!$!!!J%`!"(`*!kC1J!3JJB)
!(*!!33!8J!`!!)"-!!4m#31Q6S!%))'#!!b3!%%!&)!-!!#!6!!%I!N$TNk!"##
"JJ!)N!""!"5!$!!!J%`!"(`*!kC1J!3JJB)!"*!!33!8J!`!!)"-!!4m#31Q6S!
%))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"##"JJ!BN!""!"5!$!!!J%`!"(`*!kC
1J!3J!!!!!)!!!-`B!!!!!!!!c)!!!-3J!!!!!!!"N!#!!!#S%!!!!!!!!ML!!!%
F'!!!!!!!!e5!!!"B#!!!!!!!!kb!!!$3)!!!!!!!"*b!!!63Q!!!!!!!#@b!!!"
8%!!!!!!!#F#!!!5`Q!!!!!!!$R#!!!C!L!!!!!!!&,#!!!*BD!!!!!!!&`L!!!&
!3!!!!!!!'%L!!!#N%!!!!!!!'1b!!!"i#!!!!!!!'@5!!!#i+!!!!!!!'Kb!!!&
81!!!!!!!'h#!!!%J+!!!!!!!(*!!J!!!i"J!!!"M6e-J8h9`F'pbG$S!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!0!!!!$4!!!!c`!!!-N!!!
$+!!!!c!!!!-d!!!$,!!!!cJ!!!#B!!!$5!!!!d`!!!03!!!#$!!!!JJ!!!0B!!!
"S!!!!@3!!!)%!!!"*J!!!1J!!!)!!!!!R!!!!G`!!!0F!!!$B!!!!e3!!!!!!!!
!!!!!!p!!!!!3!!!!%3!!!")!!!!!!!!!#!!!!!F!!!!*!!!!"J!!!!S!!!!&!!!
!#`!!!!3!!!!-!!!!!`!!!!d!!!!#!!!!$J!!!!%!!!!2!!-!"!!&!!B!"`!)!!N
!#J!,!!d!$`!4!"-!&`!E!"m!)`!V!$-!1`"$!&-!B`"c!)-!S`$$!1-"!J!!!!!
!!!!!!!!!!!!!!!!!!!!!!!%!!3!"!!%!!J!#!!)!!J!$!!-!!`!$!!3!"!!%!!3
!"3!&!!8!"3!!!'-!B`!"!!)!!`!%!!8!"`!*!!d!%3!C!#%!-3""!'%!J3$"!3%
"J3)"!`%%!3B"#!%-!4!"'!%J!6!"3!&J!3!!!!!!!!!!!!%!!3!#!!)!!`!$!!3
!"!!&!!8!"J!'!!F!"`!)!!J!#3!*!!S!#J!,!!X!$!!-!!d!$3!!!!%!!`!(!!m
!(`!r!(m!r`(r!rm(r`rr(rmrrhrrrrm!!!!!!!N!!!!'!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!%!!!!#!+UUUUUUUUUUUUUUUUrqckk[rrrrrkh3rrrrrrlG!-rrVrrrlF`
!!2rrVY`!!-$1rUrrc!!!!!$Zh!!!$-c0hYL[r3!!$-c-!!!-c-hGh-$)Vrd-c-`
!c-`-hGh-`-c(b+rm$!!-c-c0hF$!c-c-c(H[d!$-c-hGh!!!$-c-c-I(Vp!-c0h
!!!!!c-c-c-c(ekr3!1`!!!!!!-$-c-c-amH[d!c3!!!!!-`-c-c-I-GhVp!0`!!
!!!`!$-c-c-amGkr3$3!!!!!!$-c-c-c0ahq[d-d!!!!!!!`-c-c-c0akVp$0!!!
!!!$!c-c-I(c(Ikr3c3!!!!!-!-c-c-I-GhU[d-d!!!!!!-c-c-c0I-GkVp$0$!!
!!-!-$-c-I-ehHUr3h3!!!!!!c-c-c0IFGmq[d0d!`!!-$-$-cAc-IGGkVpcF!!`
-!-$-c-c(epI(Ikr3h!c!`!`-$-cAI(GpGhU[h0`!$!`!c-amI(IAI(I2VpcFc-$
!c-c(c(Gmc-cGQUrFh!c-c!c-I(c-c(hHlkU[h0c-$!amc!c-aplrrrrkVpcFc(c
-!!c-hHlrrrrrqUrFehc!`-cGlUrrrrrkrrU[h0!-$(hHVrrrrrq[rrrkrpcFcGk
[rrrkrrVrrrrrq[rYhUrrrrrrrrVrrrrkrrVUrrqUUUUUUUUUUUUUUUUZ!!!%!2h
prIhprIhprIhprIhprIhprIhprIhprIhrrkcir[fXrIlqr[lqr[lrr[f"qIAqr[l
qr[lrrrlmqPEe!2Eqr[lpr[lqrrlmq[JV!!!!pIlqrrrpqrNVp3!!!2Ee+rcdT[h
qr[ripJ!!!!!!pIAeqrY@pJ!!!!$epLXVq2RkUhPprIlqJ3!!!2AepLXVp[Ee!!!
!pIBV,2MkqB"k9%j)6REpr[p@!2BV+b[fpI8Vp[EfpIIjqIQ!98j15#T16hK1IIh
qrrB!p[AepIBVpL[hpeEkq99)+L41+LT29%p86hKbrIlk!!$ep[EfprIk9PC@+L3
!*!C)+Np16e429%pb6RMpr[S!!2Efq2T@953!!!!!!#3U6LT1+Np86e429(*jP[h
qqJ!!pDAi!!!!!!!!*#3N*#SN6Nj29%j16e42H%jirIlk!!$i9J!!!#3!*#3!*#S
U5#T2+Nj29%pi6e4bFTcpr[S!p9BV!#3N!#3!!#3U*#3N6LT198j19%p8FNpiF[h
qqJ$eqL3!!!!N!#3N!#3N+NiU6Nj16e4c9(P1H(,IrH$k!2Ek*28N*!!N!28N*#3
U*#T16dj86e426RP1H2hpr[S!+i%!*!!!*!!N*28N+NK16Nj16dji6hK96RKbr[h
UqJ!VA#3N*#3!*28N*#SN*#SU6Np89%pb9%piFR,prIlk!2Gk!#6e*#3N*28N*#T
16Nj16Njc9(Pi9%piR+hpr[VeprNN+L3N!28N*#SN5#SN6Np8Fe4b9%jjH(*brIh
qq[9@9L3N*#3N*#3N*#3U6Nj16Nj8FhPiH8jbH%lqrIlk!&Ck*#3Up53N*#T)+Ni
N6Nj1HAK86NpiHAPiF[hpr[Vfq98N*#3U*#SN*#T)6Nj16P41FhKjH(Pi6R+Fr[h
Jq[Aj6b41+NJU*%JU5%iN6Nj1HA*i9A*iH(PiH*cprIlkpRT9*#4)+NJU*%JU6Nj
1FP4b9A+FHAKb6R+F6[lpk[S(J%p16LT)+NK16Nj16R*8FhKbH%j16Nj1HB$3rIh
qq[Ij6NK16Nj1+NK16Nji6R*16Nj16R*kJ+bXrrhprIlkpS"c6Nj)6NK1H%j16NK
16Nj1H(UPXZ$rrZVqr[hpr[SXq8j16RK16Nj)*%K16R0jJ+@Xmrrqr[lqr[lqrIh
qq[MkH(K16L415%j8HAQVUrhrrrlqr[lqr[hqr[lprIlk,2T)5%j)6RKjJD[prrr
Jr[lqr[lqrIlqr[lqr[hrri%aJ8j1HB#VrH$dkIlqr[hqr[lpr[lqr[lqr[lqrIl
rr(Z!Urhqrq$qr[lqr[lqr[lpr[lqr[lqr[hqr[lpV2hrrq$rrIhprIhprIhprIh
prIhprIhprIhprIhprD`!!!%!rrrrprrcriIr!r!(m!-!$I!!!8$J!!3"i!#!!1!
3!!$JJ!!!iJ!!!1!!!!$J!!!!j!!!!H3!!!(N!!!"j!!!!H!!!!(J!!!"i!!!!H!
!!!(J!!!"i!!!!H!!!!(S!!!(i!!!2qJ!!IrJ!"rrk!$rrqJ2rrrSrrrrlrrrrrr
rrrm!!!!3!$J$q!2m2rJ2rrrq(rrrrKrrrriIrrrq2rrrrMrrrrirrrrq2rrrrMr
rrrirrrrq2rrrr$rrrr`rrrrm2rrrr$rrrr`rrrrm2rrrr$rrrr`rrrrm2rrrr$r
rrr`rrrr`2rrr!$rrq!!rrm!!2r`!!$r!!!!m!!!!!!!!!!!!!%$Mri'$!!!!!)!
!J!!!!)!!!!'!!B!"!!1!$i$rMrrrra`)IRlrr[rqrrlrr[rqrrlrr[rqrrlrr[r
irm$m!'!!!!!!J2rphHrrrprrV-!!h[!!$1l!!!!!$-cFc0!-c0c-c-c(d-h!!!c
-c(h3d!!!c-c-apc!!!!-c(ahh-!!!-c-ahIF`!!!c-I-Ipc!!!c-I(erh-$!`-c
AehrFc!`-amI-Aph-c-c!hDqIhA`!$&q[rrqXc0rrrrrrrrlrrrrrrrrr!!!"!2r
rreC@9[[rrrrqri(rrrrpq#X!p3"@V2re!!!!pkbQq!!!pIAe!28!+rG9H8p16[R
epIEhq&C3pdiU6Np19*Mk!2G@pr8!p53U6Np89A*lqJ"@!!!!*#3U6Nj198j1R2R
f93!N!#3N*%j29(*9FRMkp[JN!#3N*#T19%j9FRKbq5Y2!#6e*#416Npi6e4brrV
hpb3N*#41+Nji6hKjF[rkq%mN+L3U5%j1HAKjH(,rqIK1+NJU5%j1H%jb6NkNrrT
@6Nj16Nj16NKjH[hcd2rk9R*15%K)9D6qrIrdrq$rr5a16i$bi1Vqrrrrrrrrrq#
Xr[6ri2rrrrrrrrrrrrm!!!!5!!4038064P086&p-EQ0",e9B!!!!4$m!2`!r!$m
!3)#%3)4!K'#FB)"!J%"!J$m!2`!r!$m!2`!r!$m!2`"rJ2r!rm$r`2r!rm$r`(q
!2`!r!$m!2`!!#!!)!!!!4$m!2`!r!$m!3)#!3)&!JQ#FB)"!J%"!J$m!2`!r!$m
!2`!r!$m!2`"rJ2r!rm$r`2r!rm$r`(q!2`!r!$m!2`!!#!!)!!!!4$m!2`!r!$m
!3)#!3)"!J'#IB)"!J%"!J$m!2`!r!$m!2`!r!$m!2`"rJ2r!rm$r`2r!rm$r`(q
!2`!r!$m!2`!!#!!)!!!!4$m!2`!r!$m!3)#!3)"!J'#FB)*!J%"!J$m!2`!r!$m
!2`!r!$m!2`"rJ2r!rm$r`2r!rm$r`(q!2`!r!$m!2`!!#!!)!!!!4$m!2`!r!$m
!3)#!3)"!J'#FB)4!K%"!J$m!2`!r!$m!2`!r!$m!2`"rJ2r!rm$r`2r!rm$r`(q
!2`!r!$m!2`!!#!!)!!!!4$m!2`!r!$m!3)#!3)"!J'#FB)K!N!"!3)!r!$m!2`!
r!$m!2`!r!$m!Ii$r`2r!rm$r`2r!rm"rJ$m!2`!r!$m!!!J!#!!!!%3r!$m!2`!
r!%#!J%#!3)"J['#!3)"!3)!r!$m!2`!r!$m!2`!r!$m!Ii$r`2r!rm$r`2r!rm"
rJ$m!2`!r!$m!!!J!#!!!!%3r!$m!2`!r!%#!J%#3!%#)B*aJJ%#!3%#!2`!r!$m
!2`!r!$m!2`!r!(q!rm$r`2r!rm$r`2r!Ii!r!$m!2`!r!!!)!!J!!!!N9NP6-`!
!!!&'8N9'!!%!!!#!!!%!J8P$6L-!!3!!!)!!!3#"!!!!"d&38%`!!!!!!!!(9NP
60!!"!!!!!3!!!!!!!!!!!!!!!!!!!!!!rrrrq-!!!!5J!!!#Rrrrrj!!!!!"P9!
!)C+J!('98!$jN!!!!Df3!!!!LC!!!!"4N!!!!#'3!!!!!C!!#US"N!!&9!'3!!!
!!C!!#U!"N!!&8!'3!!!!!C!!#UJ"N!!&9!'3!!!!!C!!!!!"8!!!!6!!!!%Irrr
r!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrrrq2rrrrcrrrrqrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrprrrrr2rrrrarrrrm!!!!!!!!!!!!!!3!i!!!
!*J!!!1'!!!#BB!!!KKR!!)''-!#!B!`!J"J%!)!'!J#!!B)!J!"KJ)!!')#!!!5
!J!!#J)!!!i#!!!+!J!!$J)!!!S#!!!1!J!!#J-!!!i"`!!+!(!!$J!F!!S!"`!2
!!(!#m!!F!rJ!"`,m!!($r!!!F[J!!"r`!!!(`$J!!!!q!!!!ri!!!2rJ!!$rqF!
!rrr`!2rrr!$rrr`!rrrq!2rrrJ$rrrq!rrrrJ2rrri$rrrq!rrrrJ2rrri$rrrq
!rrrrJ2rrri$rrrq!rrrrJ(rrri!Irrq!"rrrJ!(rrm!!Irr`!"rrq!!(rr`!!Ir
m!!"rq!!!(r!!!!I!!!!"!!!"J!!!!m!!!!IJ!!!2m!!!(rJ!!$rm!!Irrq!%N`3
J"*)%)!55I1!%NJ`J$*-%-"icj2Jq-J3mIh)-2[rrrrrrrrrrIrrrrMrQCr`IiNI
i$r!2m!I`$q!$q"r!!!!!!!$m2`!!I$i!!$jm!!!HH!!!$r!!!!IJ!!!$`!!!!B!
!!!'!!!!$`!!!"q!!!!r`!!!Iq!!!2r`!"rrri!Irrq!(rrrJ"rrri!Irrq!2rrr
`(rrrq$rrrrarrrrqrrrrrrrrrrprrrrq2rrrr"rrrrJ2rrr`"rrri!2rrm!!"q!
!!2rr!!"rrJ!!2r`!!"ri!!!2m!!!"q!!!!2!!!!"J!!!!!%!rrrrrrrrrrrrrrr
rIrrrrRrrrrimN`3m2*)%2"b5I2JFNJ`i$*-%-!icj2!'-J3J"h)-)!2rrm!$rrr
!!IrrJ!(rri!!rrm!!1CR!!"L4J!!F!i!!$!-!!!i(!!!!!!!!"`i!!!--!!!$R!
!!!CJ!!!(i!!!!m!!!!2!!!!"J!$rrrrrrrrrrrrrrrprrrrqIrrrrMrrrr`rrrr
m(rrrq"rrrrJ2rrr`$rrrm!Irrq!(rrrJ!rrr`!2rrm!"rrq!!IrrJ!$rr`!!rrm
!!(rq!!"rrJ!!2r`!!$rm!!!(i!!!(rJ!!!r`!!!2m!!!"q!!!!IJ!!!$`!!!!m!
!!!'!!!!!!%!!!!!!2rJ`'#JS*%JLL#%))SJN5#JS-"Jrq!!!!!!!!!!!!!!rq$r
i1$Jd@$+B-4JbQ$4B1$Jrq$ri!!!!!!!!!!!!3!!!!!!rq#!))!JJ##!))!JJ##!
))!JJ#$ri!!!!!!!!!!!!!$ri2rJ`'$!B-"J`'$!B-"J`'$ri2rJ!!!!!!!!!!!"
!!!!rq%!%3!C$KN%'33C""N%'3iC!"N!'2riIr!!!!!!!!$riIrarrRaqI[jqrRl
qI[jmIRrqIrirrKrm!!!!!!!!!+!!!!!!!!!#!!-!!S!#3!)J!K!#)!*!!S!$!!)
!!!!!!!!!!!!!!!)!!`!$J!2!!q!$m!2J!m!$J!-!!J!!!!!!!!!!!!!J!'!!i!(
J!q!(i!rJ(q!ri!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rq"r`$q!(`!1!!3!!!!!
!!!!!!!!!!!!!!!!!!!!!!$ri%"!))!4!!S!"!!!!!!!!!!!!!!!!3!!!!!!rq#!
))!JJ##!),qJJ##!))!JJ#$ri!!!!!!!!!!!!!$ri2rJ`'$!B-"Jrq$!B-"J`'$r
i2rJ!!!!!!!!!!!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!I`!!!)#!!
!%!3!!#!#!!"rrrrmJ!!!!S!!!!+!!!!#J!!!!S!!!!+!!!!#J!!!!S!!!!+!!!!
#J!!!!S!!!!+!!!!#J!!!!S!!!!+!!!!#J!!!!S!!!!+!!!!#J!!!![rrrri!!!#
!!2rr!!%!!)!"!!#!!3!!J!%!!q!"!!(!!!!!J!!!!!"rq$rmMf4(XSpL4l'2iNI
aMq*(mB!#3!'!!N!"Rr*2qD!+8!@J#P!&S!T3"D!+8!@J#P!&i!T`"Arm2ri!!!!
!!3!!!!1!!)!(`!#!!3!!J!%!!)!"!!#!!2rr!!!!!!!!!!3!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!$mr2cmr2cmr2cmr2cmr2cmr2cmr2cmr2cmr2c
mr!!!!2cm!#S!+J!U!#S!+J!U!#S!+J!U!#S!+J!U!#S!r`!!r$2m!#S!+J!U!#S
!+J!U!#S!+J!U!#S!+J!U!#S!r!$m+M2mr2cmr2cmr2cmr2cmr2cmr2cmr2cmr2c
mr2cmr2`c+[`U!5S"+J%U!5S"+J%U!5S"+J%U!5S"+J%U!5Vmr#Scr!(r!Im"r`(
r!5S"+J%U!5S"+J%U!5U`+J%U!Icm-bVm+J(r!2m!r`%U!5S"+J%U!5S"+J%UX,#
`+J%Ur2`U-r`"r`(r!Im"r`%U!5S"+J%U!5S"+V#`X,#`+J(mr$-Ur#S"+J%U!5S
"+J%U!5S"+J%U!5U`X!#`!,#`+[cm+M2m!5S"+J%U!5S"+J%U!5S"+J%U!5U`!!!
!X#S"r2`c+[`U!5S"+J%U!5S"+J%U!5S"+J%U!5U`!,!U!5Vmr#Scr!%U!5S"+J%
U!5S"+J%U!5S"+J%U!5U`+J%U!Icm-bVm+J%U!5S"+J%U!5S"+J%U!5S"+J%U!5S
"+J%Ur2`U-r`"+J%U!5S"+[mUrbVr+[mUrbVr+J%U!5S"+J(mr$-Ur#S"+J%U!5S
"+[mUrbVr+[mUrbS"+J%U!5S"+[cm+M2m!5S"+J%U!5S"+J%U!5S"+J%U!5S"+J%
U!5S"r2`c+[`U!5S"+J%U!Im"r`(r!Im"+J%U!5S"+J%U!5Vmr#Scr!%U!5S"+J%
U!Im"r`(r!Im"+J%U!5S"+J%U!Icm-bVm+J%U!5S"+J%U!5S"+J%U!5S"+J%U!5S
"+J%Ur2`U-r`"+J%U!5S"+[mUrbVr+[mUrbS"+J%U!5S"+J(mr$-Ur#S"+J%U!5S
"+[mUrbVr+[mUrbS"+J%U!5S"+[cm+M2m!5S"+J%U!5S"+J%U!5S"+J%U!5S"+J%
U!5S"r2`c+[`U!5S"+J%U!5S"+J%U!5S"+J%U!5S"+J%U!5Vm!2mcr!%U!5S"+J%
U!5S"+J%U!5S"+J%U!5S"+J%U!I`!!2cm+J%U!5S"+J%U!5S"+J%U!5S"+J%U!5S
"+J%Ur!!!!2cmr2cmr2cmr2cmr2cmr2cmr2cmr2cmr2cmr2cm!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!"!!!!2rrr!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rbT8rrX
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrrm9&3U92rl!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!$r!&6mr&48+P6rq`!!!!!!!!!!!!!!!!!!!!!!!!!!!2mU+J"8r2a
89#T8rrX!!2rrq`!!!!!!!!!!!!!!!!!!rbSU+LS!92cm9&3U92rl9#T8rrX!!!!
!!!!!!!!!!!$r+LSU+LSU!&6mr&48+P489&3U92rl!!!!!!!!!!!!!2mU+LSU+LS
U+J"8r2a89&489&48+[m!!!!!!!!!!!!!rbSU+LSU+LSU+LS!92cm9&489&4892m
!!!!!!!!!!!$r+LSU+LSU+LSU+LSU!&6mr&489&48q`!!!!!!!!!!!2mU+LSU+LS
U+LSU+LSU+J"8r2a89&48rrX!!!!!!!!!rbSU+LSU+LSU+LSU+LSU+LS!92cm9&3
Ur`!!!!!!!!$r+LSU+LSU+LSU+LSU+LSU+LSU!&6m9&6r!!!!!!!!!2mU+LSU+LS
U+LSU+LSU+LSU+LSU+J$r92m!!!!!!!!!rbSU+LSU+LSU+LSU+LSU+LSU+LSUIrp
rr`!!!!!!!!$r+LSU+LSU+LSU+LSU+LSU+LSU+LTrrhrr!!!!!!!!!2mU+LSU+LS
U+LSU+LSU+LSU+LSU+RrrIrm!!!!!!!!!rbSU+LSU+LSU+LSU+LSU+LSU+LSUIrp
rr`!!!!!!!!$r+LSU+LSU+LSU+LSU+LSU+LSU+LTrrhrr!!!!!!!!!2mU+LSU+LS
U+LSU+LSU+LSU+LSU+RrrIrm!!!!!!!!!rhp8+LSU+LSU+LSU+LSU+LSU+LSUIrp
rr`!!!!!!!!!!rrar9#SU+LSU+LSU+LSU+LSU+LTrrhrr!!!!!!!!!!!!!2rmIe3
U+LSU+LSU+LSU+LSU+RrrIrm!!!!!!!!!!!!!!!$rr(p8+LSU+LSU+LSU+LSUIrp
rr`!!!!!!!!!!!!!!!!!!rrar9#SU+LSU+LSU+LTrrhrrq`!!!!!!!!!!!!!!!!!
!!2rmIe3U+LSU+LSU+RrrIrrlqrX!!!!!!!!!!!!!!!!!!!$rr(p8+LSU+LSUIrp
rrrhmqrX!!!!!!!!!!!!!!!!!!!!!rrar9#SU+LTrrhrrrIhmqrX!!!!!!!!!!!!
!!!!!!!!!!2rmIe3U+RrrIrrprIcmq`!!!!!!!!!!!!!!!!!!!!!!!!$rr(prIrp
rrrhpr2`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrarrhrrrIcl!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!2rrrrhp!!!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!#UV!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U@V$p!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!9&TDXE$3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(k'KE'`eE'
b!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"rXE#aX,'aeG@X!!!!!!!!!!!!!!!!!!!
!!!!!!!!!J,'amV(bm[,@XG@b!!!!!!!!!!!!!!!!!!!!UkZVUk[aV0#bd,,qrIh
qUmqXUkZVU`!!!!!!!!!!!!#V+J#V!2Ab+J$pmbS!+J!UUbS!+J#V!!!!!!!!!!!
!!+X!+UXU!+X!+[,e!#S!+J#X!#S!+UX!!!!!!!!!!!!!UbS!U`!UUbS!U`!UUkZ
VUkXU!+ZVU`!!!!!!!!!!!!$p!#UV+J#V!#UV+J!U!#UVU`!U!#UV!!!!!!!!!!!
!+UXU!+X!+UXU!+ZV+J!U!#UV+J!U!+[p!!!!!!!!!#TDXG!U!#UVr3!UUkZVUkX
U!+X!+V,2Ul$p!!!!!!"89'(`X3!U!+ZV+J#V!#S!+J!Ur5S!+J#VKE$p!!!!Il"
DUV'aU`#!X2d!+[dU!#S!+S#V!#S!+S#&XE$3!)#aX,'`X,(9Ul#aUrfVUrfVUk@
'USHVUe8U9DUamV(aUV'aeE#aX,'aXG5`X,#`X,#`X,#`X(pDK9U'X0@bm[d!Ur'
aXV#`ll(aXE,bXI+amE'amV(`XB@'XE$aX[,q!!!!Ur,aXE'`eE,b+J$@XLS!e[)
'!,'am,#`mV,@rJ!!!!!!Ur'beE(bXI)!+J$b!#Ua+J!UXI#aXI+beZ!!!!!!!!!
!Ur+bmE,bX[%!+J!U!#S!+[#aXI(bX[2q!!!!!!!!!!!!Ur'bmV,bX5S!+J!U!#S
!XI'amV,@kJ!!!!!!!!!!!!!!UpEbmV(aX5S!+J!U!,'`XGDbe[i!!!!!!!!!!!!
!!!!!!!!!!!!!e5S!+J#`!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ul'`X,'a!#S!+SD
TXE$ar3!!!!!!!!!!!!!!!!!!!!!!U[#aX08U!#S!X,'`mV)!!!!!!!!!!!!!!!!
!!!!!!!!!Ul'`XG8U!,#`X2,p!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ur'`X3!UX,$
br3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ul'`X,'`XIi!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!Up@`X,,c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Ur,ad!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Urd!!!!!!!!!!!!!!!!!!!!!!!3
!IbSU9(prIhprIhprIhprIhprIhprIhprIhprIi#TJ0D!XB9DKBD`UV#'X+U-UV#
'X,#UX+U-UV#UM+UaX,(arDUaXE'`X,#`XE#`X,'`X,#aX,'`X,'`X,#`X,#amV,
3!,(9XI#be[1aeYDbm[,@X[,@XYDbmYE@XYDam,,brJ!!Ul(aX[+be[1beYDbeV,
@eV,@eYDbeV,@X[+am[hq!!!!UV,amJ!UmLS!mJ!'mYB!+J!U!2)!+J!UXI'bm`!
!!!#VXE(@+J#a!#Ua+J#a!#S!+J!UX5S!+J$aXI,p!!!!!!#VmE%!+V!U!,!!+V!
U!,#`X,#`!#UaeE'aeJ!!!!!!!+UaX5S!X!!UX#S!X!!U!#S!X,!U!#S!XGAp!!!
!!!!!!+5`!#U`+J#`!#U`X!!U!#S!X!!U!#U`r3!!!!!!!!!!UV#a!#S!X2!U!,#
`X,#`!#U`+J#`XG5b!!!!!!!!!!!!J,!U!#U`X3!UX5S!+J!U!,%!+J!UU`!!!!!
!!!!!!!#UX,!U@SD`+J#`!#S!+J#&X#S!+J$p!!!!!!!!!!!!!!#NX9Y8KE#aX+U
`X,#&Ii@`X,'ad!!!!!!!!!!!!!!!!+UaX,#aX,#aX+U-USD&XE(`XG@b!!!!!!!
!!!!!!!!!!+V9XE#`X,#`X,#`X,#`X,(ar3!!!!!!!!!!!!!!!!!!Ul(aX[,bX['
bmV,amV(bX[,q!!!!!!!!!!!!!!!!!!!!Ul,aeV,bXYDbmYDbeV,arJ!!!!!!!!!
!!!!!!!!!!!#UXGB!+YE@!#V@XJ!UmE,@!!!!!!!!!!!!!!!!!!!!!!#VX5S!"[)
U!,)!+J#aeJ!!!!!!!!!!!!!!!!!!!!!!!+U`X5S!+J!U!#S!X,$p!!!!!!!!!!!
!!!!!!!!!!!!!!+5`!#S!+J!U!#U`V!!!!!!!!!!!!!!!!!!!!!!!!!!!KV$[!#S
!+J!UX,$3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!U!#S!+J!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!#!X,!U!#S!X,$3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"rX3!
U!#UaU`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+U`X!!UX,$@!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!)#`+J$`U`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!UV'
`X,(@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!UV'`eJ!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!#VeE,3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#
VeJ!!!!!!!!!!!!!!!!!!!!!!!%!"J!r`#C!!#"!F1$`mIRlqIrrrI$ip["di$$!
%)!IJ!B!"J!r`$r!2m"ri2rarr[rrrrprrMrm(rJ2m!IJ"q!"J!!!!%$rrrrrrrp
rrMrq2r`FR"ii$MJ2F!I`"q!$i!2!!F!"J2rrrrprrhrq2rirr"rm(rJ2q!r`"r!
(i!2J!m!"`!'!!!!"!!!!!!!!!!#am!!!!!!!!!!!!!!!KV'am,'am,%!!!!!!!!
!!)B!9,'a!$(`!!!!!!!!!!#a93"9!&3!X3!!!!!!!!#&m,&8!#S!eE'a!!!!!!#
&@i@`!&8!-E(`XG8!!!#`KUQaXE%!90@`XE'ae3#`XHqaX,#`93#aX,#amE(aXE'
aeE#amE'aeE'amE(@XJ$9mE'ae3"8!$#aeE,ceJ!!!,(@XE&9rrm!eE,bXJ!!!!!
!mE,9!2m!9,(@m`!!!!!!!!$aX93!+J#aeJ!!!!!!!!!!!,%!93"9X3!!!!!!!!!
!!!$`XE'aeDX!!!!!!!!!!!!!!!$`X3!!!!!!!!!!!!%!IhmU@UUTUUU`UDUUX+U
aU[QaX&SfKBD,KUU-X,$9XIi!UV'all#`XE#aX,'bXI,m!)#am,'aX,#`X,'amGE
c!!!!Ul(9XE#`X,$[X[+bV!!!!)$bXI#aX,#`XI,@m`!!!!!!Ul'a!!#`!!$@XU`
!!!!!!)$bXI%!!!$@X[-!!!!!!!!!XI'a!!!!e[1X!!!!!!!!!)#aXI%!mV,c!!!
!!!!!!!!!Ur+amV,@V!!!!!!!!!!!!)'amV(@eJ!!!!!!!!!!!!!!XE(@XU`!!!!
!!!!!!!!!!)$bXYB!!!!!!!!!!!!!!!!!XGEm!!!!!!!!!!!!!!!!!)(@!!!!!!!
!!!!!!J!!rq!!!!!!!!!!!!!!!!!!!2c2i!!!!!!!!!!!!!!!!2rXc-rJ!!!!!!!
!!!!!!!$`cZc-cq!!!!!!!!!!!!!!r-$1l-c2i!rq!!!!!!!!!2c-`-lXc-rXc2i
!!!!!!!$mc-c!cZc-c-c-rJ!!!!!!r-c-c-$1l-c-c-m!!!!!!2c-c-c-`-lXc-c
-m!!!!!$mc-c-c-c!cZc-c1!!!!!!r-c-c-c-c-$1l-c2i!!!!2c-c-c-c-c-`-l
Xc2!!!!$mc-c-c-c-c-c!cXc`!!!!r-c-c-c-c-c-c-$mm!!!!2c-c-c-c-c-c-c
0rI!!!!$mc-c-c-c-c-c-cIh`!!!!r-c-c-c-c-c-c-hpm!!!!2c-c-c-c-c-c-c
0rI!!!!$mc-c-c-c-c-c-cIh`!!!!r-c-c-c-c-c-c-hpm!!!!2h-c-c-c-c-c-c
0rI!!!!!2lFc-c-c-c-c-cIh`!!!!!!rYc-c-c-c-c-hpm!!!!!!!$qh-c-c-c-c
0rI!!!!!!!!!2lFc-c-c-cIhq!!!!!!!!!!rYc-c-c-hprZi!!!!!!!!!$qh-c-c
0rIlZi!!!!!!!!!!2lFc-cIhqlZi!!!!!!!!!!!rYc-hprZlZ!!!!!!!!!!!!$qh
GrIlZi!!!!!!!!!!!!!!2lIhqlJ!!!!!!!!!!!!!!!!rrlJ!!!!!!!J!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!lZlZlZlZlZlZlZlZlZlJ!1i-$!`-$!`-$!`-$!`-$`$Yi-$!`-$
!`-$!`-$!`-$Jl0lZlZlZlZlZlZlZlZlZlZh1`-$!`-$!`-$!`-$!`-lXhJm2$`m
-$!`-$!`-A!`1lFl!m2$``-$!`-$!a9A!cZcH$`m2$``-$!`-$&99A!lYcX$!`-$
!`-$!`-938&A1l0i-$!`-$!`-$!`-8!"F$Zh1`-$!`-$!`-$!`-8&`-lXhJ`-$!`
-$!`-$!`-A!`1lFl!`-$!`-$!`-$!`-$!cZcH$!`-$2cmr2cmr!`-$!lYcX$!`-$
2cmr2cm$!`-$1l0i-$!`-$!`-$!`-$!`-$Zh1`-$!`2$`m2$!`-$!`-lXhJ`-$!`
2$`m2$!`-$!`1lFl!`-$!`-$!`-$!`-$!cZcH$!`-$2cmr2cm$!`-$!lYcX$!`-$
2cmr2cm$!`-$1l0i-$!`-$!`-$!`-$!`-$Zh1`-$!`-$!`-$!`-$!`-i2hJ`-$!`
-$!`-$!`-$!`1!1l!`-$!`-$!`-$!`-$!cJ!1lZlZlZlZlZlZlZlZlZi!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J!!!!!!!!!!$1!!!!!!!!!!!!!
!!!!!!-eD!!!!!!!!!!!!!!!!!!cG9C!!!!!!!!!!!!!!!!!!G99IA`!!!!!!!!!
!!!!!$9999IrJ!!!!!!!!!!!!!09IArrer`!!!!!!!!!1lZlqRjrkVqlZlZ!!!!!
!$X$J$m#[`-$1`-$J!!!!!!i-l!i-m!`-$J`-i!!!!!!1`1$1`1$1lZl!lZ!!!!!
!#JcX$JcX$!cZ$!cJ!!!!!-l!i-l!lX$!cX$!kJ!!!!c9R!cU$1lZl!i-rZ@J!!$
-9P$!lX$J`-$+`-$P@J!0A99H$9S-V!`-hJ`-e9@3!09999rPAUlUlZ9HlXc&Aep
9Ae999@9999999GeG9Irk$[Ae9PpIpIAeAeC999rrm!$[p9Arr!rm$r!&9PArr`!
!$[repI$!m-A!a@9Irr!!!!$[rrrr$!`-$'9Irrm!!!!!$[rrpF$!`-"IArr`!!!
!!!$[repF$!`&9Irr!!!!!!!!!!!!$m$!8!!!!!!!!!!!!!$P998-$&99qJ!!!!!
!!!!!"@9I`-"9Ar!!!!!!!!!!!!$P9I`&9IS!!!!!!!!!!!!!$[93a9qJ!!!!!!!
!!!!!!!$P999I!!!!!!!!!!!!!!!!$[9Im!!!!!!!!!!!!!!!!!$[q3!!!!!!!!!
!!!!!!!!!$U!!!!!!!!!!!!!#!0c-hGhGhGhGhGhGhGhGeGr9A99999999999999
999Ak9999999999999999999Iq3AeErpIrrrrrrrrrrp@rr!1Arrrrrrrrrrrrrr
rpIV`!&rr$2`2!2m-$!m-$&rr!!$PAm"3aF"3`-$&`-$eqJ!!$[8-A!8-A!9993a
I9I!!!!99`&$&`&$!`&A!`&qJ!!!!93aF"3a9$!`&$!aD!!!!!&93`&E!9993aF"
9E`!!!!!0A!a9$&`-$!8-$1!!!!!!"9A09F"3`-"9`-#J!!!!!!"9h&99999G999
C!!!!!!!!99999999999Pr`!!!!!!!!Ae99999999Ak!!!!!!!!!1ArrrrrrrArr
`!!!!!!!!!1rrrrrrrrrr!!!!!!!!!!"9m-r`cr$2r`!!!!!!!!!!$P`!r!m-"I!
!!!!!!!!!!!99`-$!`&@J!!!!!!!!!!!!93`-$!aH!!!!!!!!!!!!!&9J`-$&@3!
!!!!!!!!!!!!!$!`-!!!!!!!!!!!!!!!!$9A!`&@3!!!!!!!!!!!!!!!!e3`-AJ!
!!!!!!!!!!!!!!&93a9m!!!!!!!!!!!!!!!!0A!EJ!!!!!!!!!!!!!!!!"999m!!
!!!!!!!!!!!!!!!"9A`!!!!!!!!!!!!!!!!!!lrN!!!!!!!!!!!!!!!!!!!l`!!!
!!!!!!!!!!$!`!'f!@N"')%'J3+"!S%#JF,!FZ!Hi!I!`!(f!Im"ri(rJIq"ri(r
JIr!Iq!Ii!I!!!!!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!B!$r!!!!!!!!$qcr$r!!!!!2cZcmc`!!!!r-cZc-m!!
!$mc-c[c`!!!2c-c-r2!!!!r-c-cpm!!!$mc-c2h`!!!2rFc-rIS!!!!2rFcpqU!
!!!!2rIhkS!!!!!!2rkS!!!!!!'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$!!!$rr`!!!!!!!!!!!!!!!!$rr&6rr`$
rr`!!!!!!!!!!rbVmr&6r9#Vr!!!!!!!!!2mU+LVmr&48+[m!!!!!!!$r+LSU+LV
mre6r!!!!!!!!rbSU+LSU+[p8r`!!!!!!!2mU+LSU+LVrIrm!!!!!!!$r9#SU+LS
Urhrr!!!!!!!!rrpr9#SU+[prrrd!!!!!!!!!rrpr9#VrIrrpr3!!!!!!!!!!rrp
rrhrrrId!!!!!!!!!!!!!rrrrrId!!!!!!!!!`!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!r`!!!!!!!2l-r`$r!!!
!r1l-rm$r!!$mc1l-c!c`!2c-c1l-c2!!r-c-c1l-m!$mc-c-c2c`!2c-c-c0rI!
!r-c-c-hpm!$mc-c-cIh`!2lFc-c0rI!!$rlFc-hpm!!!$rlFcIhq!!!!$rlGrIl
J!!!!$rlprZ!!!!!!$rrZ!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!rrrrrr!!!!m!!!!!$`!!$`-!!!$2!!!2$-c-c-m!!!$rr
rrrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!)!!!!!&B!!!!!!!99C9C3!!!!"3a9$'!!!!!&`-$!8!!!!&CF$!p9!
!!&e9$!a@A`!&9993ce99m&9P99`&99pI99p9p9p9pIm2p9m-$&rrm!"I9Fr`rrm
!!!rr$`aIm!!!!2A!`&m!!!!!"3`-8!!!!!!'99rJ!!!!!!!'8!!!!!!!!)$Gc99
999999G9Ga99999pI"99P9999pIi09P9999Arm!$Pp999ErrJ!0p@999Ir`!!$P8
!8!rq!!!0pI!!rr!!!!"I8!$ri!!!!09I$rm!!!!!$[ArrJ!!!!!0Aer`!!!!!!"
9rq!!!!!!!0rr!!!!!!!!"Ii!!!!!!!!0m!!!!!!!!jS!!!!!J"!!!!!!!#!!)!!
!!!!!!!!!!%J!!!")!!!!!!!%!!%!"!!!!!!!!!!!!!!!!!!!!!!!"!!!!!!!)!!
J!!!!!!!%!!!!!!!J!#!!!!!!!2rr!!(rri!$rrr!"rrri!rrrr!Irrri2rrrr(r
rrrlrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrhrrrrirrrrm(rrrq!rrrr!(rrrJ!rrr`!(
rri!!rrm!!G99J!0rrm!(rrrJ$Icrm"rprrJhj*rmIqfrrYrNRrrr,Err[f5Irrm
Y[rqrC*rrrb5rrlmJ(Rrr!$ar[`!)Irm!%2qr!!$rr`!"rlm!!Irr!!2r[`!$rrq
!"rprJ!Iq2m!2r"rJ(rJ2rrr`"rrri!2rrm!"rrq!!2rr!!!!!!!!!!!(!!$rrrr
rrrm!!Irrrrr-c!!#rrr-c*QC!!2rrfCQc-`!"-c-QCPQCJ!&QCN!!'CQ!!Bc-c-
cCQB!"phG!!!!!!!!!!"hGhGhGhGhG`!!!!!!!!!(Fc-c-c-c-cG3!!!!!!!!GcG
hGhGhGhGhG3!!!!!!"h0hGhGhGhGhGhG3!!!!!(FhGhGh&(GhGhGhG3!!!!GcGhG
hGb4hGhGhGhG3!!"h0hGhF8FNF8GhGhGhG3!(FhGhGh*(*(*(GhGhGhG3GcGhGhG
b4b4b4hGhGhGh9R0hGhF8FNFNFNGhGhGhGeCcGhGh*(*(*(*(GhGhGhG@FhGhGb4
b4b4b4hGhGhGh9R0hGhFNFNFNFNGhGhGhGeCcGhGh*(*(*(*(GhGhGhG@FhGhGb4
b3K3K4hGd*hGh9R0hGhFN)5)L)NGh38GhGeCcGhGh)L)L)L*%G"4(GhG@FhGhGb)
L)L)L*%)NGhGh9R0hGhFL)L)L)L)L4(GhGeCcGhGh)L)L)L)L)NGhGhG@FhGhGb)
L)L)L)L4(GhGh9R0hGhG#)L)L)L)NGhGhGeCcGhGh3L)L)L)L4(GhGhG@FhGhGh)
L)L)L)NGhGhGh9JGhGhGd)L)L)L4(GhGhG@!!9hGhGd)L)L*%GhGhGeB!!!9hGhG
d4%4%4hGhGh9J!!!!9hGhGhGhGhGhGhG@!!!!!!9hGhGhGhGhGhGeB!!!!!!!9hG
hGhGhGhGh9J!!!!!!!!9e999999999@!!!!!!!!!!9QCQCQCQCQB!!!!!!!!$UJ!
!!!#!%!!!!!!!)!!J!!!!!!!!!!!!5!!!!%J!!!!!!!3!!3!%!!!!!!!!!!!!!!!
!!!!!!!!%!!!!!!!J!#!!!!!!!!3!!!!!!#!!)!!!!!$rrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrq!IrrrJ(rrri"rrrq!IrrrJ(q!riKq!$q)I!!
IL(J!$i"i!!H!F!!(J(!!!i"ahF1!F!!$J(!!!i"ah81!F!!$J(!!!i"ae`1!F!!
$Kr!!!i(alX1"m!!(JI!!"i(J!!q"`!!IMi!!ri(rrrq"rrrrJIrrri(rrrrrrrr
r!!!!!!!!!!N!!2rrrrrrr`!"rrr-c*QC!!,-c-c-rrm!!mc-QCPQCJ!%QCQCQIr
r!!9QCQCQc-`!"M-c-c0QCJ!(4%4%4%4%!!JL)L)L)L)!$`!!!!!!!)L)L)L)L)L
)L)L)L)L)L)L!!!!!&hGhGhGhGhGhGhGiJ"%4%6L)L)L)L)L)L)L)Mi!4%4%iL)L
)L)L)L)L)L)q!%4%41)L)L)L)L)L)L)L2J"-a%6L)L)L&)L)NCSL)Mi!6m"%iL)L
&)!!!!N4SL)q!%r!41)L)8J!L)L)N9SL2J"2`%6L)K5!#)L)L)N9SMi!4!"%iL))
!)L)L)L)N@)q!%4%41)K3!L)L)L)L)PD2J"%4%6L))!)L)L)L)L*&Mi!4%4%iL#!
[rbrr,rmL4Bq!%4%41)JJ)L)L)L)L)N@2J"%4%6L))#)L)L)L)L*&Mi!4%4%iL#!
[rbrr,bmL4Bq!%4%41)JJ)L)L)L)L)N@2J"%4%6L))#)L)L)L)L*&Mi!4%4%iL#!
[rbm[rb)L4Bq!%4-c1)JJ)L)L)L)L)N@2J"%BL)L))#)L)L)L)L*&Mi!4%6L)L#!
[rr,rm[mL4Bq!%4%iL)JJ)L)L)L)L*%D2J"%41)L))#)L)L)L)N4BMi!4%6L)K5!
L)L)L)L4&D)q!%6-iL&)N4%4%4%4&9SL2J"')L)9999999999CQL)Mi!4%6L)L)L
)L)L)L)L)L)q!%4%iL)L)L)L)L)L)L)L2J"%41)L)L)L)L)L)L)L)Mi%c-cL)L)L
)L)L)L)L)L)q2rrrrrrrrrrrrrrrrrrrr!!!$NJ!!!!#!%!!!!!!!)!!J!!!!!!!
!!!!!5!!!!%J!!!!!!!3!!3!%!!!!!!!!!!!!!!!!!!!!!!!%!!!!!!!J!#!!!!!
!!!3!!!!!!#!!)!!!!!!!!B!!!!2!!!!$`!!!"q!!!!IJ!!!2m!!!$r!!!"ri!!!
Iq!!!2r`!!$rm!!"rrJ!!Iri!!2rr!!$rr`!"rrq!!IrrJ!2rrm!$rrr!"rrri!I
rrq!2rrr`$rrrm"rrrrJIrrri2rrrr$rrrrarrrrqIrrrr[rrrrrrrrrrIrrrrJ!
"J!!!!m!!!!2!!!!'B!!!"Q!!!!``!!!--!!!'"J!!"JB!!!`$!!!-B`!!'2'!!"
MaJ!!`m-!!-2$!!'$`B!"Jm'!!`2!`!-$`-!'!m"J"J2!B!`"J$!-!B!`'!!!'"J
"J"J`!m!--!2!$'!"J!CJ!!!'`!!!!rrrrrprrrrq!!!!!!!!!!B!!2rrrrrrr`!
"rrrrr`!!!!,-c*QCCQB!!iL)L)L)L!!%99999999!!9%4%4%4%3!$`!!!!!!!!!
!!!!!!!!2m!!!!!!!!!!!!!!!!!!!rrm!!!!!!!!!!!!!!!!!!2-r!!!!!!!!!!!
!!!!!!!ra$r!!!!!!!!!!!!!!!!!2-32`!!!!!!!!!!!!!!!!ra!5r`!!!!!!!!!
!!!!!!2-3%6m!!!!!!!!!!!!!!!ra!4%[m!!!!!!!!!!!!!!2-3%4%r!!!!!!!!!
!!!!!ra!4%4,r!!!!!!!!!!!!!2-309-42`!!!!!!!!!!!!ra!9re%5r`!!!!!!!
!!!!2-3(rra%6m!!!!!!!!!!!ra!4rrm4%[m!!!!!!!!!!2-3%Irr%4%r!!!!!!!
!!!ra!4(rra%4,r!!!!!!!!!2-3%4rrm4%42`!!!!!!!!ra!4%Irr%4%5r`!!!!!
!!2-3%4(rra%4%6m!!!!!!!ra!4%4Ar84%4%[m!!!!!!2-3%4%6rc%4%4%r!!!!!
!ra!4%4%984%4%4,r!!!!!2-3%4%4%4%4%4%42`!!!!ra!4%4%4%4%4%4%5r`!!!
2-3%4%4%rma%4%4%6m!!!ra!4%4%4rrm4%4%4%[m!!2-3%4%4%Irr%4%4%4%r!!r
a!4%4%4%rma%4%4%4,r!2-3%4%4%4%4%4%4%4%42`rb)L)L)L)L)L)L)L)L)Lrrp
%4%4%4%4%4%4%4%4%42m2rrrrrrrrrrrrrrrrrrr`!!!$fJ!!!!#!%!!!!!!!)!!
J!!!!!!!!!!!!5!!!!%J!!!!!!!3!!3!%!!!!!!!!!e)!!!!!!!!!!!!%!!!!!!!
J!#!!!!!!!!3!!!!!!#!!)!!!!!!!$r!!!(rq!!(rri!$rrr!"rrri!rrrr!Irrr
i2rrrr$rrrrarrrrqIrrrrRrrrrlrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrhrrrrjrrrrqIrrrrMrrrr`rrrrm(rrrq!rrrr!(rrrJ!rrr`!(rri!!Iri
!!!r`!!!2m!!!F#i!!B!AJ!-!+X!%!"9J#!!UX"!!&8J`!#U-)!!9"%!!+J*!!p3
#3!`i!S!3#!'!%BJ"J#*%!B!N*!'!*#3"J#*%!B!4L!'!%!J"3"``!N!V`!*!9!!
#)+J!"$&8!!`5U!!)$93!%!DS!#!$9!$!!HJ$J!"d$J!!$r!!!!%Pl`!!!!m!!2r
rrrrrr`!"rrr-c*QC!!,-c-c-rrm!!mc-c-c-c!!%c-bCQIrr!!A-c*QCCQB!"TQ
CQCRrr`!(-c1CQCQC!!J!!-c-CQB!#HlZlZlZlJ!+hGhGhGhG!!ZlZlZlZlX!$+U
UUUUUUJ!0L)L)L)L)!!jhGhGhGhF!$e99999993!!!!!!!2rrrrm!!!!!!!!!!!!
!$rklUUT#lr!!!!!!!!!!$rZlZkUU*#3[m!!!!!!!!2ZlZlZUUN*#3Qm!!!!!!!q
VZlZlUUSN*#BRm!!!!!$jNlZlZcQU3N*LHRm!!!!2UCQVZlXjQL3Q*kLPm!!!qTQ
CNlZl1CP#BRU+@Pm!!2XjQCNlZcQC*LHSTD@[!!qlXjQCQlXjQ@*kLPTD'[!2ZlX
jQCQmhGh(U+@KSD(`$VZlXkN!hCQChBTD'KSDi2ZlZlXcREQ3!!QEdD'KSD'[qlZ
lZl[0N!$Gh3RFQCQCQCrlZlZlZpQGh-hCRCQCQCQIqlZlZl[C$FZCd*dc1UUUVrU
UUU-cf3h*QG#GZlZlZlrjQCQCQGQGfChCREZlZlZrqCQCQCR0N!$Gh3RFZlZlZlr
k'KSD'KfjN!!*Qp#DZlZl[`kKSD'PU0fCQGfC#CZlZq!2'KSD@STmhGh,1C!!QDZ
lm!qKTD@STbDCNlZcQ3QDZr!!qPTDLR*LQC1lXkN!QDm!!2@PU+FQ**Q6ZlXkQ3Q
I!!!2@STbBN+CNlZlXkQ3!2!!!!$iTbBN)TQ6ZlZl1Tm!!!!!$h*L3N+CQVZlZlV
`!!!!!!$f*#3LQCUlZlZr!!!!!!!!$r*#3TQDZlZrm!!!!!!!!!!2rL+CQV[[m!!
!!!!!!!!!!!$rrrrr!!!!!!!!!!!!!J!!!!!#JJ%!!!!!!!!#$P*PFA9TFQ9N)&0
eDA4P,89fC@jdFb"dD'&d)'9fCA*j)'&`F'aTBf&dD@pZ)(0SEh9XC#"cGA"`Eh*
d,J"bCA&N!!%!!3!!!!!!!!!!$dPZFh4KE'aPFL"6G@PdC3!!69CTF`!"!!%!"`T
6CA4*ER0dB@aX#d9KFhN[3h9cG'pY!%e@DA009Q9MER9XE!!!J!"849K8$N9KFhN
JEh)J3h9cG'pY!!!!!!!'8f9XC@0d$P0PE'9MG#"3B@0VB@GP69CTFde@Ff9ZG@a
X!!#!!&4&@&3@8'&MDf&RC5"ZB@eP)(4[)(0PE'9MG!!!!!!!#%4PFf9XC@0d%%4
PFf9XC@0d)&"KBfYKCf909QPc69CNFfjeE'`!!)!!9%9B9"K3B@0VB@GP)'jKE@8
JG'mJC'9cC@aPBh3!!!!!!!P%EdPZFh4KE'`14'mJG'KP)%PZFh4KE'`!69CTFde
@D@jZG@aX!!#!!&4&@&3+6Qpd)'jPC@4PC!#!!!!!$84[3A9dEdPZFh4KE'`R4'm
JG'KP)%PZFh4KE'`J+'j[)'4TB@a[Ch-JEQmJFQ9cG'&bG(-T69CTFde@B@PZG@a
X!!#!!&4&@&3+6Qpd)'jPC@4PC!#!!!!!#e0PE'9MG%4bDACP'&0PE'9MG#"K)%4
bDACP)'pb)%C[E'4PFJ"09QPc69CcC'jeE'`!!)!!9%9B9"G%FQPfC5"ZB@eP)'p
b)("KG'JJEQ&YC3!!!!!29A"NBA4P4(*TGQ9-DA0d&99`C'&dC5"-DA0d)'pQ)%4
bDACPFde@DA009R9NER9XE!!!J!"849K8#Nj[G#"ZC@9NC@3!J!!!!!!!!!!!!!!
!!!m19NP645"*ER0dB@aXCA)!!!'`U[i(!!!!!!!!!!!!!!!!)!!"!!F!!!!J!!!
!!!!!!!"+EhNKF'9QCR"hF'-!!!!"Xq)G*`!!!!!!!!!!!!!!!!!$!!)!!!!!rrr
rr`!!!!!!!!"J!!!!B!!!!'!!!!%J!!3%!2rrrrm!!!!!!!!!%!!!!"!!!!!3!!!
"J!%""!$rrrrr!!!!!!!!!!!!!!!!!!!!Q!!!!)!%"!3!!!!!!!!!!!%!!!!%rrr
rr`!!!!$rrrrr!!!!!!!!!!%!!!!"!!!!!3!!!'!!!!"N!!!!N!!!!!!"!!!!!!!
!!!!!!!!!!!!!!!!!!!%!!!!!3!!!!))!!!m!!3!!!!!!!J!!!!"+!%B!3fpZG'9
iG(9KE%ePER8!8Q9XEf&N3fpZG'9iG(9KE%ePER93E(9RD@jc!!!!!!!!!!!!!!!
!!!!!!!!!I!J#TT!!!3!)P#(r`)!#!!!S!!!!3B)!&%J!!#@!33!81'!!!%J!!!J
iB2rrJ!%!5$JK!%"m#!1Q6S!!))'#!!#3!%%!&)!-!!#!6!!%I!N$TNk!"#!!!!!
!J!!!2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!"rjd!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!%41)!!!!!!!!!!$rrrrr!AJ!!!!!!J!!!!!!%!!!!!!
!!!!8!"3!+!!m!!!!!!"J!!!!!!!!!!!!!!!"!!!!!!!!!!!!!!!!!!!!!!!!!!&
`Gh"M!!!!!!!!!!!!!!!!!!+3!!!!!!%"!!!!-!!(DHF!!!!!!!!!!!"!&%*KFf9
*ER0dB@aXCA)J3f&bBQpZ!!!!!!TB`!!R%!!!*a!!!!!"JJ!@!!!!!!$b!@J""J'
i"!G*ER0dB@aX!J!!!!!!$3'%!#%"e!3%5'9XF!!!!!!!$!!-!#%!Xi!!!!!!!!$
+!@J!hJ'i"!44G@Pd!!!!!!$d!)-"#!$S"!Y6GfPdBfJJ4'PcD`)!!!!!!1i"C!%
+!Eb!!!!!!!!!+`!-!+m"e)!!!!!!!!#p!"N!bJ#FJ!!!!!!!!2J!G`%,!5@!!!!
!!!!!p!#$!3J!l!308f9XC@0d)%C[E'4PFJ)!!!!!!--!$!%3!85!!!!!!!!!cJ!
9!1i!0B!!!!!!!!$1!$N!m`%rJ!!!!!!!!!d"'`!K!A8%#&*PB@3J6@A*!!!!!!#
`!33![!'EJ!!!!!!!!,!"RJ#m!G5!!!!!!!!!X!!-!,`!Ni!!!!!!!!#`!*B![!$
UJ!!!!!!!!#X!$!#[!G3!!!!!!!!!6J"K!*X"[S!!!!!!!!"@!$8!GJ"9S!)!!J!
!!!!!$3#l!#%"#`3+8f9XC@0d)%&XE!!!!!!!q`!8!3J!G)!!!!!!N!!!#3!!!!!
!`J#d!0B""33#6dX!!!!!!"3!1J!Y!3H)!!!!!!!!03!$!%)!@S!!!!!!!!!e!&d
!4!$qL!!!!!!!!%3!!`"4!&U!!!!!!!!!4!"G!&-!rSJ!!!!!!!"K!!F!X`%(J!!
!!!!!!!N!%3!T!$'!!!!!!!!![J#`!0S"#B!!!!!!!!"G!!-!Y`%,J!!!!!"X!!3
!!!!!!%B!K3"D!-X%!Np,!!!!!!"'!#J!@J"Z"!C$B@jMC@`!!!!!!%)!J3"H!-q
!!!!!!!!!)J!M!$)!ea!!!!!!!!!)!"i!'!$FL"Y3E'9KFf8JC@jdCA)JH@peFL"
`BA0cGfpbC#i)!!!"*!!3!!!!!!1%!i3$Q!2!"!C)D@4NC@i!!!!!!jJ$K!1X!m!
%"NKTC'4PEJ!!!!!!H`$m!)m"9J3'3f&ZBf9X!!!!!!!B!1F!,!&N!!!!!!!!!5X
"+`%p!AX%"89UC@0d!J!!!!!!03$m!%N"9J3&4(*TGQ8#!!!!!!!a!!`!X`$Q!!!
!!!!!!$!!j3#d!2B!!!!!!!!!F!$l!(%"AB!!!!!!!!1X!i3$`!1BL!!!!!!!!*S
!r!#Z!9B%"%p`C@i!!!!!!,N!r!$0!9B%"P0PE'9MG!!!!!!!'!&V!#`"hS!!!!!
!!!!#!!X!%J&PL!*H-!!!!!!!83$m!'8"9J3+6Q9h)%C[E'4PFJ!!!!!!PJ$i!,)
"@S!!!!!!!!#e!!`!c`$eJ!!!!!"q!!3!!!!!!%J!p3"F!6X%"N0bC@&dC3!!!!!
!5!#E!&`!i33'3f&ZBf9X!!!!!!!U!!m!1J%l%!!!!!!!!!d!$3!G!6X)+NjKE@8
JCQpb)'jPGb"QEfaNCA)J+(9`)(4[)$-a)'0SBA*KBh4PFR-T1J!!!!!!4!$a!'!
"2i!!!!!!K!!$!!!!!!!k!1X!6J%R"!*25`!!!!!!0J$R!&)"+i!!!!!!!!!0!%X
!,3%SL%CCEh8JC'mJEQpd)'KKGQ8JC@j[G@GS)'&MBf9cFb"`FQPfD@aPCf9c)'C
[FL"dD'Pc)'PZFh4KE'aKG'P[ELi0$9i`)&ia!!!!!!!0!"F!,3!hS!)!!J!!!)J
!!`!!!!!!1J$V!%i"*`3#6dX!!!!!!$B!j`"5!5Z!!!!!!!!!$3",!#d"+)K*3@i
JCA*bEh)JEf0MGA*bC@3JG'KKG#"`FQ9fC@jdC@3JG'KP)'PZFh4KE'aKG'P[EL"
QFQpY)'0[EA"XCA4TEQFZ$3eH-#"H-3)!!!!!!!d!&`!Y!$HJ!J!#!!!!kJ!'!!!
!!!#$!4m!P`&["!&i!J!!!!!!J`$#!*F"%J3"H3)!!!!!!)-!D3#A!,N%!AS#!!!
!!!"'!%S!GJ&[N!!!!!!!!!!0!%X!23&[L(j1Eb"TER0dB@aXBA4TEfiJGf&c)'j
PBf9cFf&bH5iJ)&4SC5"QD@aPFb"dEb"LC5"TER0dB@aXC@3JBA*P)'&XFQ9KC(N
JEfiJH@peFL"NDA0V,#"[FL"KFQ8JEQpd)'jPC@4PC#"QEh)JH@peFL"SBA*NGf&
bC5"cCA4eF#i!!!!!!!d!&`!Y!$HJ!J!"!!!!!!"r!4X!Q`&cJ!!!!!#b!!N!!!!
!!#F"&!!l!9J%"&0dEh!!!!!!!!8"G3!9!Eb)!!!!!!!!"3$K!"8"4B!!!!!!!!!
X!!8!2J"6J!!!!!!!!#`!9J!q!41!!!!!!!!!'!!*!#B""i!!!!!!!!!&!!S!&3$
KL#"*G'9YFb"bC@eKD@jTEQFJG'mJBQ8JD@jcG'&XE'9N1J!!!!!!83!"!&m"AS!
!!!!!!!#5!0`!R`$pJ!!!!!!!!$m!#3"0!3H!!!!!!'`!"J!!!!!!1J&N!%i"S!3
#6dX!!!!!!!d!&`!Y!$HJ!J!!!!!!!!!0!%X!,3'JN!!!!!!!!!!f!@!!8J'NJ!!
!!!!!!$`!&`"-!(L)!!!!!!!!2!"m!%`"9SJ!!!!!!!!!!!!!!!!!J33!!415!!!
!HJ!'!!!!!!!k!9!!6J'J"!C$B@jMC@`!!!!!!$S!mJ"1!8)%#%0[ER4TER9P!!!
!!!!0!%X!,3'JN!!#AM!!!!!!!$B"6!"5!D5!!!!!!!!!2!!A!%`!H)J!!!!!!!!
0!"F!,3!hS!)!!!!!!!!!!!!!!!!!!)%%!!%6NJ!!!9J!"3!!!!!!DJ%b!(i"S!3
04QpZG#"6G@PdBf&cC3)!!!!!!'S!`3"q!58%"P0jFh4PE3!!!!!!$3",!&d"SBM
S9'KTFb"TER0dB@aXBA4TEfiJFQ9aG@PbCA-JCQpZG(-JG'mJBQ8JD@jcG'&XE'9
N,L"*CL"jEh8JGf&ZG#"jEh9b)'C[ER4c)'PZFh4KE'aPC#"NDA*PBh4XH5"TER4
[)(P[GA)J8hPcG'9Y,#"ME'PMDb"dD'8J8hPcG'9Y)'*eG(4[ELiJ)%PQ)(P[G5"
hB@jd)(4SC@dJFf&fC@3JBA-JB5"'Efjd)&0eDA4MBA0P)(0[)(P[G5"MB@iJD@j
cG'&XE#"dD'9Y)(P[GA*cC@aQ,#"ME'PMDb"'Efjd)&0eDA4MBA0P,J!!!!!!CJ%
Z!))"T)!!!!!!!!!0!"F!,3!hS!)!!!!!!!!!!!!!!!!!!)%%!!%6NJ!!!&`!"3!
!!!!!+`%m!$m"S!3!!!!!!!!V!-X!2`%["!!!!!!!!!d!5`!G!D%)!!!!!!!!*`%
i!%-"T)!!!!!!!!!0!"F!,3!hS!)!!!!!!!!!!!!!!!!!!)%%!!%6NJ!!!(J!"3!
!!!!"9!)!!@J#B!3)3fpZG'PZG@8!!!!!!93"MJ&S!I)%#P0KGQ8J3A-Z,Li!!!!
!!9!"r!&X!Q5!!!!!!!!!!`!$!8J#E)!!!!!!!!&8!5S"D!'%"!K3FQPZG#iZ,J!
!!!!"9!'1!@J"mJ3(4'9ME'PZC3!!!!$D!!B!!!!!!)B!m!#D!8!%"&0VDA!!!!!
!!'8!m!"j!8!%"&0dEh!!!!!!!'8!EJ"j!0)%"e*PF'aKBf8#!!!!!!#'!'i!QJ$
5"!Y5CA"XB@0P)%&XE!)!!!!!!!d!5`"G!8@)@#*H-#)JB@abC@&NH5"PH'PcG(-
Z$3e%Eb"jEh8JGfPcD#"dEb"bCA"XB@0P)'Pd)(GTG'JJG'KP)'CTE'8[CQpXC'9
b)'CbEfdJG'KP)'PZFh4KE'aPFMm!!!!!!))!l!#H!85!!!!!!!!!$3!A!#d!0k!
#!!!!!!%X!!J!!!!!!(m"&`#6!@F%#%0[ER4TER9P!!!!!!"r!-3!N`%+"!C$B@j
MC@`!!!!!!(X"%`#A!@Z!!!!!!!!!3`"3!'-!F)!!!!!!!!!0!!d!23&5L*&8D'P
c)'PZFh4KE'aKG'P[EL"bCA&eDA*PFb"QD@aPFb"dEb"LC5"TER0dB@aXC@3JD@i
JB5"6HA0dC@dJ4QpXC'9b,L"3E'9KFf8JFf9XC@0d)(4SC5"fEfaeE@8JGfKTBfJ
JD'&c)(4SC5"6HA0dC@dJ4QpXC'9b)(P[G5"hDA0S)(4[)'PZFh4KE'`JG'mZ!J!
!!!!!CJ!+!(3!YS!!!!!!!!"e!!S!J`#fJ!!!!!!!!%N!iJ"G!8B%#e0hDA4MD#"
%DA0V!J!!!!!!D3$8!'m"8)!!!!!!@!!$!!!!!!!2!!m!,`![S!)!!`!!!!!!$`!
i!"m!d)JA8'aPBA0P)'PZFf9bG#"dD'8JC'PcDcS#!!!!!!!M!$J!-`$iL!!!!!!
!!$F!QJ",!28%"&0dEh!!!!"B!!3!!!!!!'X"&!"r!@3%#%0[ER4TER9P!!!!!!"
R!4!!J`&SJ!!!!!!!!!`!6!"K!@@3!!!!!!!!!!d!&`!Y!$HJ!J!!!!!!!!"V!,J
!I`%)"!C$B@jMC@`!!!"B!!3!!!!!!+m!j`$$!8)%"%4[EQ8!!!!!!+X!i`$(!8D
!!!!!!!!!V`##!--!dJ3)8(*PGQP[GA-!!!!!!+m!+!$$!(J%"%jPH(3!!!!!!!`
!@`!X!(Z!!!!!!1)!"!!!!!!!@J$l!'i"5`3'8Q9cG@eP!!!!!!"@!2F!FJ&2J!!
!!!!!!!d!5`"0!8Q)MP0dEh"`D@jR)'j[Gb"YBANJFQ9cG@ad)'PZ)'&Z)'PZBfp
YF'aPG'8JFf9d)'pQ)(0[CR4hBA*P,L!J3faTBfXJ8Q9cG@eP)(4[)'0[ER4TER9
P)(4SC5"TER0dB@aXBA4TEfiJEh)J8h4[F#"TCL"jEh8JBA*P)(0eFQ8JH@pe)(G
KER3JG'mJFh4[F#i!!!!!!!d!'3!Y!$QJ!J!#!!!!!!"D!*m!EJ$["!46G'p`!!!
!dJ!+!!!!!!#+!3!!R!&3"!42F'9Z!!!!!!5!!$X%d!"0"!!!!!!!!+-"!!#e!9!
%"N0KEQ0PE!!!!!!!*`$S!$X"@i!!!!!!!!"%!3!!9J&3"!9&DQ9MG!)!!!!!!&d
"!!"[!9!%"84bDACP!J!!!!!!*`!-!,N!jJ!!!!!!!!!R!18!Z3$f!!!!!!!!!(`
!r!"p!95!!!!!!!!%&!!8"(N!G)J!!!!!!2rr!!d!$`$dL"p3E'9KFf8JFf9XC@0
d)(4SC5"ZCAKd)(0PCfePER3k!J!!!+!!"3!!!!!!1J&D!%i"S!3$@@9c!J!!!!!
!1J%*!%i"6`3#6Qm!!!!!!!d!5`!Y!D#)2N4[)(P[G5"hB@jd)#*H-#)JG'mJBQ8
JB@*XC5"dEb"bG@iJEfiJB@aX)%eKBfPZG'pcD#"MEfe`GA4PFR-r!!!!!!!f!9B
!8J'NJ!!!!!!!!!d!&`!Y!$HJ!J!!!!!!!!!!!!!!!!!!J33!!415!!!!F!!'!!!
!!!!k!9!!6J'J"!&j!J!!!!!!1J$e!%i"433"H!)!!!!!!$S!R!"1!1`%!AS#!!!
!!!!0!%X!,3'JN!!!!!!!!!!f!8`!8J'NJ!!!!!!!!!d!&`!Y!$HJ!J!"!!!!!!!
!!!!!!!!!J33!!415!!!!%!!!!!!!!!!S!#J!5!")J!!!!!!m!!%!!!!!!!`!%J!
F!1#)(NPdC@ec)(*PE@&TEQPZCb"dEb"LC5"NC@aPG'9N1J!!!!!!#`$Q!"`")S!
!!!!!YJ!+!!!!!!"6!63!C`'B"!*25`!!!!!!F3%d!)8"Q!3'3f&ZBf9X!!!!!!#
d!63!b!'B"!T6C@aPBh3J3@aX!!!!!!"1!!d!cJ%DJ!!!!!!!!%m"-!"V!Cb!!!!
!!!!!!!!0!!m"-SJ!!!!!!!#A!63!U`'B"!4)C@a`!!!!!!#0!6%!M`'G`!)%!!!
!!!!!%`!(!"8"+X!#"!!!!!!!!"X!$3"-!CL)!!!!!!!!d3!0!3)"Q)J!!!!!E!!
'!!!!!!!k!@3!6J'J"!*25`!!!!!!$3!A!#d!0k!#!!%!!!!!!!d!5`!Y!D#3!!!
!!!!!!$B"B!"5!D5!!!!!!!!!2!!A!%`!H)J!!!!!!!!m!(`!6!&@L!!!!!!!!!!
!!!!!!!#""!!"%j)!!!!L!!!!!!!!!!`!-J!F!-L)%NpZC5"YEfePER3JF'aPBA0
Pb3!!!#J!!!!!!!!!$!!L!"`!f)JA4QPZDA0SD@jR)'PZFh4KE'aKG'P[EXN#!!!
!1!!!!!!!!!!-!#)!(3%bL#K"GA4SC@jdD@0KG'PZCb"*ER0dB@aXCA)X)&"XC@&
cC5"AB@Pd,LiZ!!!!2!!#!!!!!!!+!$d!'`$`L!e*ER0dB@aXD@jR,LiZ!!!!!!!
!$3!2!#d!,k!#!!%!!!!!!"i!23&r!8H!!!!!!1J!$!!!!!!!K!%'!*J"B!3%6h"
PEJ!!!!!!R`%'!,-"B!3'3f&ZBf9X!!!!!!!!!!!!!!!!J33!!HKQ!!!!!!!C!2m
!+3&P!!!!!!!!!#m""J"$!@!%"89UC@0d!!!!!!!!53%'!&d"B!3(4'9cDh4[F!!
!!!!!!#i!$!#`!2!!!!!!!!!!&`!-!#S!m!!!!!!!!!"L!3B!B`&K`!)!#`!!!!!
!!J!,!")"CBJ#AM!!!!!!!,N""J$0!@!%"P0PE'9MG!!!!!!!Y3!-!-m!pB!!!!!
!!!"T!3B!I3&J"!T1CAFJ4QpXC'9b!!!!D!!&!!!!!!!b!8F!4J'V"!4%C@e[!!!
!!!!0!"F!,3!hS!)!!3!!!!!!$!"(!#8"Ui!!!!!!!!#F!&F![!"hJ!!!!!!!!$)
!f!"'!6`%#&"eFQ0SBA0P!!!!!!!!!!!!!!!!J33!!415!!!!X!!(!!!!!!"J!3N
!G!&2"!*25`!!!!!!B!#X!(3!mJ3'3f&ZBf9X!!!!!!"F!38!H!&6J!!!!!!!!#)
!C`!b!9!3!!!!!!!!#!!m!"J"1SJQ9'KTFb"TER0dB@aXCA)JFQ9aG@PbCA-JBA9
dD'9ZG'PMBA4TEfi!!!!!!$i!C`"1!9!3!!!!!!!!)3!`!$%!B)J&6Q&YC6S#!!!
!!!!q!"J!6J"JL!P3BA0cGfpbC$TP!!!!-!!#!!!!!!#f!&m!bJ#E"!*25`!!!!!
!!!!#!+X!pd!#"mi!!!!!!,)!@`$1!*q!!!!!!$J!!J!!!!!!%`!H!#F!H33,3fp
ZG'PZG@8Z,LjT!!!!!!!2!"S!+`"pJ!!!!!!!!%)!&J"L!$D!!!!!!MS!$3!!!!!
!k`')!2m"f!3)3fpZG'PZG@8!!!!!!1X",!$r!A`%"N0KEQ0PE!!!!!!!j`'%!3-
"h)!!!!!!!!!0!!d!23'AL+K8D'Pc)'CPBA4eFQ8JFQ9aG@PbCA-JH@pe)(4[)'K
KGQ8JB@0MCA0c)(4[)(4SC5"*ER4PFQjPG#i05@BJH@pe)'KKGQ8JB5"ND@&XGA!
JBfpZEQ9MG'P[EL"dEb"dD'8J5@jdCA*ZCA3X)'eKDf8JFh9bC5"TG#"TFb"KBh4
TGQ8JB@jN)'0XD@0V)(4SC5!L3fpZG'PZG@8L)'*eG(4[EL"LC@a[Gbi!!!!!!%3
!$3"N!Gf)KNPQ)(P[G5"eFf8JB5"`FQpiH5"cCA*fCA)X)'0XD@0V)#*9Ff8J8(*
[H(NJ8f9bGQ9b)LiJ5@BJH@pe)'4[ELGd)'YZEhFJGfKKG#"dD'Pc)'ePB@jc,#"
dD'9Z)(P[G5GbC5"`FQpLB@*XH5"ZEh3JGA0TEQFJB5"`FQpiH5"cCA*fCA)Z!!!
!!!"e!!d!K3#c"4C9Ff8J5&488#"3FQpiH5"6CA*fCA)k!!!!!!#2!&`!R`&P%!!
!!!!!!)m"L!#I!DU)"9"[FR3k!J!!!!!!M`'a!*m"ea!!!!!!!!#2!#-!R`"8L!G
6CA*fCA)k!J!!!!!!V!!*!,`!9)J+9A0PFL"1B@eP1J!!!!!!V!"F!,`"C4!!!!!
!!!$*!!m!f3"8L!P3BA0cGfpbC$S!!!!!!!$*!&`!f3&P%!!!!!!B!$S!$J&5!Hi
!#!!!!!!!!!!!!qJ!!!!!!!!!'!!l!(`"'J'+!!%!!!!!!!!!!!2T!!!!!!!!!"J
!+!!8!)`"$J!"!!!!!!!!!!!$kJ!!-!S!!!!B!#8!+!$k!C%!!3!!!!!!!!!!!qX
!!!!!!!!!'!"N!%B!c3'1!!%!!!!!!!!!!!2X!!!!!!!!!"J!+!!S!)-"A!!"!!!
!!!!!!!!$l3!!!!!!!!!B!#J!+!#$!9`!!3!!!!!!!!!!!qi!!!!!!!!!'!!S!#J
!c!'N!!%!!!!!!!!!!!2[!!!!!!!!!"J!0J""!*B"S3!&!!!!!!!!!!!$m!!!!!!
!!!!B!#N!+!#&!G8!!3!!!!!!!!!!!rB!!!!!!!!!'!!T!#J!JJ(5!!%!!!!!!!!
!!!2h!!!!!!!!!"J!+3!S!,3"e3!"!!!!!!!!!!!$q!!!!!!!!!!B!#N!+!"d!G%
!!3!!!!!!!!!!!rS!!!!!!!!!'!!Y!!J"RJ*h!!8!!!!!!!!!!!2p!!!!!!!!!"J
!+!!S!-m"H3!"!!!!!!!!!!!%!3!!!!!!!!!B!#J!+!$)!CX!!3!!!!!!!!!!"!-
!!!!!!!!!)J!k!#J!NJ%X!!%!!!!!!!!!!!3'#NjPGb"%D@&XEfF!!!!!!!!B!#J
!+!#d!CS!!3!!!!!!!!!!"!F!!!!!!!!!'!!S!#J!p!&e!!%!!!!!!!!!!!3)!!!
!!!!!!"J!+3!L!+3"HJ!"!!!!!!!!!!!%#3!!!!!!!!!B!#J!+!$`!B3!!3!!!!!
!!!!!"!X!!!!!!!!!'!!T!#J!JJ(6!!%!!!!!!!!!!!30!!!!!!!!!"J!+3!S!))
"d`!"!!!!!!!!!!!%$J!!!!!!!!!B!#J!+!$`!4J!!`!!!!!!!!!!"!m!!!!!!!!
!'!!m!#J!C!&C!!8!!!!!!!!!!!35!!!!!!!!!"J!(`!*!58"U!!"!!!!!!!!!!!
%&3!!!!!!!!!B!#N!+!#&!G8!!3!!!!!!!!!!""B!!!!!!!!!'!!m!"3!C!%1!!8
!!!!!!!!!!!3J!!!!!!!!!"J!+!!S!&!")J!"!!!!!!!!!!!%+J!!!!!!!!!B!$F
!13"H!A`!!3!!!!!!!!!!"#X!!!!!!!!!'!!X!!J"X!&9!!8!!!!!!!!!!!3j!!!
!!!!!!"J!E`!c!8B"Q3!"!!!!!!!!!!!%23!!!!!!!!!B!#N!+!"j!GX!!3!!!!!
!!!!!"%)!!!!!!!!!'!!S!"3!U!&a!!%!!!!!!!!!!!4(!!!`#J!!!"J!+!!S!2`
")3!"!!!!!!!!!!!(cJ!!!!!!!!!B!#J!+!$`!4J!!3!!!!!!!!!!"p!!!!!!!!!
!'!!m!!S"5J(d!!!!!!!!!!!!!!qJ!!!!!!!!"-4(58Bi1@&5!4-!p3!arrrrc-c
rc-c-c*RrQFcrQCRrQCQCQ@ErCQErCQE-CQCQCM2rCM2--fEr-fE--c2r-c2--c1
C-c-c-`$r-`$-!$1C!!$-!!#C!!$Z!!$G!!#l!!#U!!#)!!"hlZlZhGhGZlZlUUU
UL)L)GhGh99994%4%)L)L%4%4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)IN%!3!
!!!!X!!!!!&)"%`!!"[p!J("),"U2b+4bb@`kRp#SG%UY@TZH`RA,lAUri,"i62C
Q#i'bHXeZZpr`FU'3!%#NirLmIXr[+cd)#!"S#"!*$`m)@JX)GAk2N!#4NT0,JK#
$(TF3$%)"$J!H!*H8T+@QD`)J(`!J)+&3(J*$!Up&(l*3JJPe(JN!'!!)'aF,!"d
3'UI+bj-S+#"1(ke**5JL!-l36b-S*d-R+"iL+#8!!Z!S%Uc1cYG)JJ!*S4#C&d)
9R+#Mc+BJ"NbeLSb3!$83b5YaMd#i'b*#Qj*X6USY0#)4fc-S!L#'3%%#`,Kb#ML
##,(1@N-PJN*TL#!U`S80!'"bf,#2(kQ65J5-3&)13%rr)b*)JPVP*fL4R`m[PLJ
a`S5*I`*-S$$K`3!i%q8m+*!!UL"84BJH5%`PDB!T#DT%T1i-5I)M!,%RL)*`eZ5
!"3!F1Q3`YYFBKb%eE8j5"b"%#"&G2CiN33+D1"%lh`VT+%3%C!mI*)aBC8$@"mZ
9&8BQ-X+!!Pb3!!Q#FRG0A0I2*%+&+&eC4)Q!Edh,kXc+S89ScL5)0I%@aBK3Q9%
Sd0CBl,@[5P&mf#LZ'cQ"k3#Bm1EaqJGdXZDbmefN!))+H5e!k-!K3Pi1&cV)Kf"
2f9Pfq22Vhmqr[hiPK#(Q%63r&43@!*NKU)##N`Q"JK!r+I$""af&m%m*&aEK39`
(&Y6rd8!LU*0B9`-C3*Q&"e,'h4!EIR#J#2r%4J4%fBMA(3Vrq'303pYG"jdUq4N
`cJQi)CL0FC9GCij8a)PR@C&$"!$""-K!m!!%@&C!`38342$!"RmPiGqBC*EjhbN
p54!+CDC"+)4KV2bM%#ZY4GE66q@)%0iea%P'"!JlTHKQ8#1FYQ!)*B#QTa!531D
LR88!#XU##KNJe"!d2Q-M!#&&ajSc(rLiBih1K%"#3fiG)3%j++#Q*#LN2XJ%!9B
Lm)!S3R!#JDdZ#9D+T$ie+-4TITj83P[3R$3RC1BXP'GEYqcd`@L9YC@K9Ub3!2$
CE3-1JHF3be,V89Y#P8$CM"I&bZ'+GMY@3eNeXiPk$845rG2@Ud@-Nef5H3S*UT-
`,K%!!Je!S-83#@!*3CLq8K)`Tk"dC"PP*2`6PQfV[$[%U49($)e1S)```M8@&MB
4Tb*(*Q4LFmk*B+)NR5Zb#'Z+d$%4#U3m"&T&C0S+AG9-*B3"l(L`%6[Ur'J11Y+
PDS3(l6"dR9K4LqF-8NcF38I$A2Z"04`J5b%!88*ii)S3Z$3ac4E5@'(H!aTi%%!
%b$$FpGe[I*dhhPm%X-#Z#A#`-0q%Xa&,iB36X)"lkb(Zq113!(X43-&f4fljjCJ
R-8$PJJ8"!$X!!!!%!!%!!3!!!#`$k3!!!!!!!!!!rrrrq`%8%%&LEh9d)%PZFh4
KE'aPFXN!!!!!!5d!!!!!!!!!!"d$kJ!!!!!!!!!!rrrrr`4'D@aP"&&eDA3!83!
!!!!!!%J$k`!!!!!!!!!!rrrrq`4&C'Pd"&9ZC'm!@J!!!5d!!!!!!d0eG!"B!!!
%3fp`H3"$!!!&8'&cG'8!9J!!"80XC@&b!%)!!!!!!!!U!r)!!!!!!!!!!2rrrrd
"H!%Y!!!!!!j6C@aPBh3J4QpXC'9bb3!!!!!!!!!!032c!!!!!!!!!!$rrrrr!AJ
-4@&cH5"*ER0dB@aX!!!!!!j$GA0dEfdJ5@jcG'&XE!!!!!!!!!!!XJ#b!!!!!!!
"!!%!%3,r$!$rrrrr!!!!!!!!!!!!!3!!!!%!!!!!!!!!!3!+!!!!!!!"!!%!%`!
"UP@U9DT9UP@!"!!!!!!!#!!)!!!!!!!!!!!!5!!!!%J!!!!!!!3!!3!%!!!!!!!
Iir`!!!!!!!!%(3!!!!%!!)$SJ1L!k!!"I3"p!(d!!3%"!4!3%"!"!3%"%"!3%!%
"!3%3%"!3!3%"!4!3%"!!-!!!!!!!!3!"!2m!!!C'"NB"1J#N!H8"Q3!4![m-!2r
rrrm!T!!!!6S!!!'C!!!"j3!!!!!!!!#J!))!S3"N!!T68%j8!qJ!!3!!!+%!C!!
18e"19!c3!6S!T!(P!CN!(J!"!!S"1J#N!H8"Q3!*UP@U9DT9UP8!)J!"rjhrr`!
(!!!!!!!L!6X!TIrr!+%!C!!+8e"19!cD!6S!T!!L!H3"Q!%"!+%!C!!+8e"19!c
E!H8"Q3!(!!%!!3!L!!(rRIrr!+%!C!!+8e"19!Zi!!%!!!#K!'3!'P036P3-*J&
e!1)"LJ&d!!8!![rrrrrrrrrr!+%!C!!+8e"19!b8!!!!!!#K!*B!$!8!!!!#!!!
!!!!!!!!"!!S"1J#N!BB"Q3!X!!N!!`C(C@jPGQ%!!!-!!`!0!!S!,J!%!!!!!!!
S!B-!jaBe16!a)%j[FR4S)$8iG'JJ8h4bC@9d!!#J!*F!!3!+!6S!T!(P!CN!"`!
!!!!!)J'6!1F!!!#K!'3!#P036P3,Z!!"!!!!S3"N!"T68%j8$#B"JJ$U!CF"C`!
%!!,rrrrrrrrrr`#K!'3!#P036P3-P!!!!!!!S3#@!!`&!!!!!J!!!!!!!!!!+`J
0%8aTEQ0[E'iX)%j&)$Bi06!h!+!!P`!L!D!!l`!!!+%!C!!+8e"19!Zi!!%!!!#
K!'3!'P036P3-*J'2!0`"T!&[!!8!![rrrrrrrrrr!+%!C!!+8e"19!b8!!!!!!#
K!*B!$!8!!!!#!!!!!!!!!!!"!!S"1J#N!D!"Q3!S!Cd!i49@EfPMC6SJ+$3`-LN
J-c)c,6Bf-$!!S!#A!!%!#J%k!+3"j3'C!#)"V3$K!!!!S3"N!!T68%j8#lJ!!3!
!!+%!C!!D8e"19!`Q!9%!T!&Q!CN!"3!#rrrrrrrrrrm!S3"N!!T68%j8$*3!!!!
!!+%!PJ!-"3!!!!)!!!!!!!!!!!%!#J%k!+3"BJ'C!#J"A`#T,e4SC5"*EQ4eFh4
bH5"6G'&ZC'&bC#"QEh)J8fpQG(GKFQ8J4'PcG(*TBR9dD@pZ!+!!P`!"!!S"1J#
N!H8"Q3!L!@m!U3!!!+%!C!!+8e"19!Zi!!%!!!#K!'3!'P036P3-*J&S!0i"I3&
N!!8!![rrrrrrrrrr!+%!C!!+8e"19!b8!!!!!!#K!*B!$!8!!!!#!!!!!!!!!!!
"!!S"1J#N!AN"Q3!%!3!!+cSA%deTEQ4@DA0TEfiJ8fpQG(GKFQ8!S!#A!!%!#J%
k!+3"j3'C!#)"KJ$M!!!!S3"N!!T68%j8#lJ!!3!!!+%!C!!D8e"19!`Q!C`!e!'
a!A)!"3!#rrrrrrrrrrm!S3"N!!T68%j8$*3!!!!!!+%!PJ!-"3!!!!)!!!!!!!!
!!!%!#J%k!+3"V3'C!!3!!!!S!DS!f4T&E@&TE$SJD@jQEd"YD@jNGQPcD@pZ,Q0
[E3!!S!#A!!%!#J%k!+3"j3'C!#)"ZJ$C!!!!S3"N!!T68%j8#lJ!!3!!!+%!C!!
D8e"19!`Q!DN!e!'q!AN!"3!#rrrrrrrrrrm!S3"N!!T68%j8$*3!!!!!!+%!PJ!
-"3!!!!)!!!!!!!!!!!%!#J%k!+3"ZJ'C!#S0'@KdG(!k,bphGhFZE@PZC(CTFfP
[ELjMEfd!!+!!P`!"!!S"1J#N!H8"Q3!L!FF!f3!!!+%!C!!+8e"19!Zi!!%!!!#
K!'3!'P036P3-*J(3!-d"j3'$!!8!![rrrrrrrrrr!+%!C!!+8e"19!b8!!!!!!#
K!*B!$!8!!!!#!!!!!!!!!!!"!!S"1J#N!H%"Q3!S!Gi!dKj"E'`J8QPRD(4c)&*
PFf9bGQ9N)&G[FQaNGfPNC5i!!+!!P`!"!!S"1J#N!H8"Q3!L!Hi!dJ!!!+%!C!!
+8e"19!Zi!!%!!!#K!'3!'P036P3-*J%k!0`"9!&R!!8!![rrrrrrrrrr!+%!C!!
+8e"19!b8!!!!!!#K!*B!$!8!!!!#!!!!!!!!!!!DQ3!!!!!!!!%!#J%k!+3"8!'
C!#`!$!!9#8KPE(CPG'PMB3!$!"8!"!%!!!d!%J!S!8`!i3j*ER0dB@aXCA)J9NP
643!!S!#A!"S!!!!!!!!!!3!+!6S!T!(P!CN!)J&L!1%!!!#K!'3!"P036P3$k3#
J!)-!r`!!!*i!RJ$6!)N!e3%3!"%#r``!rrrrr`#*!!!!d`!!!4!!!!$9!!!!!!!
!!+!!JJ#J!)i!(J!"!!S!!!!!"$J&S!#D!!!!ri%F!0-!L3$9!4F!!!!$!!!!!!"
)!!!!5!!!!"!!%!!$!!8!!!!!!!!cf!!!!!!!d`#*!08"%!$6!)N!e3%3!!!!"S&
'-I0'-3!'JArrmhrr!+!!M`#J!)-!r`!!!*B!PJ$I!*3!i!#@!"%#r``!rrrrr`#
8!!!!h`!!!*B!!!$J!!!!!!!!!+!!JJ#J!)i!(J!"!!S!!!!!"$J&S!#D!!!!ri!
5!0m!P!$J!*d!!!!$!!!!!!")!!!!5!!!!"!!%!!$!!8!!!!!!!!cf!!!!!!!h`#
8!1!!PJ$I!*3!i!#@!!!'!%BaqArr!!#J!)m!S!#$!2m!!!6D!$X-EfiJG'KP)'4
TFfXJ(N&`F(*[H'PYBA4P)'4TFfXJFh"KBf8JEQ9PC'9N1K9%DA0V)(0`B@0P)'&
fB@PXB@*XC6SM3faTBfXJG'KP)%PZFh4KE'`JBR9dG'pZ)(4[)'PZFh4KE'`(8Q9
KC#"0C496BACP)(*PB@3JE@8JCQPXC5"KFcS"5`-J68)35@jcG'&XE#"-Ef0KG'P
[EJ90Eh*Pb4!JEfBJG@jeFf9N)(0`B@0P$QPZ)(4SC5"QEfaNCA)J$h9ZG'PdE'9
N)'C[E'4PFLj$E'PMDb"dD'8J8f9XC@0d)'*eG(4[EL"dEb"cC@aPBh3JG'KP)&i
`1JdLAM%L#e4[G'&X)&0THQ8k#&CPFR0TEfik*P4SDA-JEh"dD@pZ)'PZFh4KE'a
c)(4SC5!LAM!L)("KBfYKCf8Z$8j[G#""GQ&TE'&LE'8%C'PcD`CQEfaNCA)")J%
L#%0[ER4TER9P"dPZFh4KE'`P3faTBfXJG'KP)%0[ER4TER9P)'*eG(4[EL"dEb"
MEfjdD@jeC4**ER0dB@aXCA)J6'pR)%CTE'8%8fYTF"p6C@aPBh3JG'KP)'PZFh4
KE'aKG'P[EL"QEfaNCA)k'e0PE'9MG#"hD'9bC5"dEb"TER0dB@aX1L"H-!8q)$4
(3JC"Bf0PF(3(6'PMC@jcC496BACP)'aTBf9ZFf8JCQPXC5"KFcS'9A"NBA4P$e9
`C'&dC5"-Ef0KG'P[EL*$E'PMDb"dD'8J9A"NBA4P)'*eG(4[EL"dEb"TER0dB@a
X&NGKG'KPFQPZCb"*EQC[FQeKG'P[EXN#T5!08f9XC@0d)%C[E'4PFJY6C@aPBh3
J4QPXC5K*G'9YFb"hD@aX)'*P)'PZFh4KE'aPC#"[EL"dD'8JC'PcDb!LAN3L-&4
SC5"QEfaNCA)J)Pj*)L"hD@aX)'*P)'0bC@&dC@3JEfiJG'KP)'4TFfXJ)Pj%)MY
*G'9YFb"hD@aX)'*P)'PZFh4KE'aPC#"TEL"dD'8JCQpXC'9b)#*H4L)JEfiJG'K
P)'4TFfXJ)Pj%)N08D'8JCQpXC'9b)#*H55)JGfPXE#"LC5"MFQ9KG'9N)'PZ)(4
SC5"QEfaNCA)J)Pj')L"[EL"dD'8JC'PcDb!LAN3L18PdC@ec)(GTE'`JBQ8JGA"
NBA4PC#"TEL"dD'8JCQpXC'9b)#*H4L)JEfiJG'KP)'4TFfXJ)Pj%)LK*G'9YFb"
hD@aX)'*P)("bEf0PFh0PC#"[EL"dD'8JC'PcDb!LAN3L#99ZD@jcG'&XE#G$E'P
MDb"dD'8J9@jTER0dB@aX)'*eG(4[EL"dEb"eEQPZFh4KE'`X5A4PEA-JGfPXE#"
LC5"eEQPZFh4KE'aPC#"QFQpY)(4SC5"NDA0V)#*H4#)38(*[Bf9cFb"-Ef0KG'P
[ELC*G'9YFb"hD@aX)'*P)(9`C'&dC@3JEfiJG'KP)'4TFfXJ)Pj%)MY*G'9YFb"
hD@aX)'*P)("bEf0PFh0PC#"TEL"dD'8JCQpXC'9b)#*H4L)JEfiJG'KP)'4TFfX
J)Pj%)J4&BA0j"N0eFh4[E3T'D@jTFfKTEQI*"%j[EQ8D4'9XCA4P)'9fCA*jG'K
TEQFJD@iJ)Pi`)Mm)AM!JB@aTBA-*06!i-$Fb-M3f!!!!+!!'"6Bi-$!`"6Bi-$%
`"6Bi-$)`"6Bi-$-`"6Bi-$3`"e"[Gf9b8%-!!!@e!"PU9'KTFb"TER0dB@aXBA4
TEfiJFQ9aG@PbCA-JB5"6HA0dC@dJ4QpXC'9b)'pZ)(4SC5"NCA0dD@jKG'P[EL"
NFQPfC5iJ)&4SC5"TER0dB@aXBA4TEfiJD'&c)'*PC@iJBf&ZBf9XE'9N,Kj&FR*
[FL"[F'9ZD@jR)'&bBfKTGQ8JFf9RE@9ZG#iG4A*bEh)JFQ9KC'PZCb"cC@GYC@j
d)'KPB@4PFLiH4A*bEh)JFQ9KC'PZCb"MEfe`FQ9cFf9N)'4KG'%Z&%9bFQpb)'0
bC@&dD@jR)'CTE'8Z&N9bFQpb)'p`C@jTEQFJCQPXC6SJAM!H4A*bEh)JFQ9KC'P
ZCb"MEfe`FQ9cFf9N)'4KG'%Z)%9bFQpb)(GbDA4TEQFJG@jMEfe`FQ9cFf9N)'4
KG'%Z&N9bFQpb)'0bC@&dD@jR)'C[E'4PFLi@4A*bEh)JEh"PEQPZCb"KFQ0SDAC
P,N"&FR*[FL"RCA4dD@jR)'9iG(*KBh4TEfiJCf9cG'&XG#"XDA0d,L"8D'8JC'9
QBA9XG#"hD@aX)'*P)(9cC@3Z(89bFQpb)'4PBfpYF(*PFh0TEQFJG'KP)'4KG'%
Z)89bFQpb)'p`C@jTEQFJBA*MD'PfC5"dEb"PH(4bB@0d,Ke&FR*[FL"bC@&ND@j
R)(0PCfePER3JD'9KC'9b,M""EL"PFR*[FL"[Bf0eFR*PC#"hD'PXC5"MFQ9KG'P
ZCb"dD'8JEQ9h)'C[E'4PFLia4A*bEh)JC'9MEfe`FQ9cFfPZCb!LAM!L,#"dD'8
JC'&dB5"NEf9cEY9d)'eKG'0S,M0"EL"eEQ9iF'9MG'9N)'9bFQpb)'pMBh9bFQ9
N)(GSD@aP)'PZFh4KE'aTEQFJ)Pi`)LiN9A0PFL"MB@jMC@aXC@3JD@jcG'&XE'&
dD@pZ)("bEf0PFh-ZINPZFh4KE'aKG'P[EL"MB@jZEh3JG'&VC5"`E'&MC5"hD'P
XC5"[G'KPFL"KF("XD@0KG'P[ER-JBA*P)'p`C@iZ)&"XC@&cC5"aG@Pd)'&XE#"
[G'KPFL"KF("XD@0KG'P[ER-JB@jN)(4bH5"TER0dB@aXD@jR)'&RB@PZ,R&8D'8
J4'9cDb""Bf0PFh0[FRNJ)Pi`)L"MEh9XC#"ZEh3JBQ8JB@4NC@3JG'mJH@peFL"
6HA0dC@dJBQ9MBA9cC5"dD'8JE@&iD@eeE5"ZG@eLCA)JEfBJ4%(9Fb"SBACP)'*
PC@iJD@jcG'&XE'9N,P&"EL"eEQ9iF'9MG'9N)'9bFQpb)'pMBh9bFQ9N)(GSD@a
P)'&NC'PZCb"bCA0[GA*MCA-JCR*[E5!LAM!L)(4[)(4SC5"6HA0dC@dJ4QPXC5j
G35"NDA0V)'9bFQpb)'pMBh9bFQ9N)(GSD@aP)(*PB@4TEQFJCR*[E5"dD'8JC'P
cDbiJ8'aPBA0P)'0[ER4KBh3JG'9MD'jTBf&X)(0eF("[FR3JCQpb)'KPE(!ZH9P
[GA)JD'&bC#"NDA0V)'*PBf&YC5"QG@aX)(GSD@aP)'PZFh4KE'aTEQFJG'KP)'C
TE'8J)Pi`)LiJ8'aPBA0P)'CbC@8JGA!JFfpYC5"YEh*P)'4TFfXJFh"KBf8JB@j
N)(4bH5"dD'8JD@jcG'&XE#"KCf&TELjT9'KP)%C,49NJ)Pi`)L"MEh9XC#"ZEh3
JBQ8JB@4NC@3JG'mJH@peFL"6HA0dC@dJBQ9MBA9cC5"dD'8JE@&iD@eeE5"ZG@e
LCA)JEfBJ4NY&@G9c)'KKGQ8JBQ9PEL"TER0dB@aXC@3ZF94SCA*P)'Pc)'j[G#"
PEQpeCfJJE@9YEh*j)(4[)(*PE@pfC5"dD'8J0MK,)("[FR4TEfiJEfBJ)Pi`)Li
J5A3JGfPXE#"bC@eKD@iJB5"QBA3JBA"`E'PMBA4TEfiJEfiJH@peFL"SBA*N)'4
TFfXZ!!!5#J!U)NePE@pbH5"PFR*[FL"TEQPdD@&XDATTEQFJBR9QCQ9bFbj'8'a
PBA0P)'PZBh*PBA0P)(4SC5"KF("XD@0KG'P[ELGc)'ePE@pbH5"`BA*dDA4TEfi
JFfPkC5"KG#"dD'8J4QPZC'9b,M*8D'Pc)%eKBfPZG'pcD#"TFb"dEfmJEfaN)(4
[)(*eEL"dD'Pc)'&`F'aTBf&dD@pZ,NC8D'Pc)'&`F'aTBf&dD@pZ)(*PFA9TFQ9
c)&0jFh4PE5!h)'pb)'GbC@&dCA)J+&0jFh4PE5!i)'Pc)("bC@CPFR*PC#NZ@8&
Z)'9bFQpb)'pMBh9bFQ9N)(GSD@aP)(*PB@4TEQFJG'KP)'PZFh4KE'aPFL"NBA4
K,L"8D'Pc)'PZFh4KE'aPFL"KF("PBA*c)(4[)'*P)'4KE@&RC@3Z0%&Z)'9bFQp
b)'pMBh9bFQ9N)(GSD@aP)(0KGQPZCb"dD'8JFQ9KC#"YC5"NEf0eE@9ZG#j&9'K
P)'4TFfXJ)Pi`)L"TFb"XEf0VC@3Z)&"XC@&cC5"cC@aPBh3JB@j[G'KPFL"NDA0
V)'C[FL"TER0dB@aXBA4TEfiZ4P"XC@&cC5"cC@aPBh3JB5"`B@0VB@GP)(4[)'P
ZFh4KE'`JBQ9QEh*P)'0XD@0VD@jR)(4SC5"*ER0dB@aX)'*eG(4[ELj&8'aPBA0
P)(0PE'9MG#"K)("KBfYKCf8JG'mJD@jcG'&XE#"LC@C[FQ8JBfaTBfYTEQFJG'K
P)&9`C'&dC5"LGA4dEfiZ#bdb-6!e-c)f0c8jBe4SC5"KF("XD@0KG'P[EL!LAM!
L)'0[G@aN)'j[G#"LC5"aG@Pd,L"3E'9KFf8JFA9TG#"dD'8JBA"`E'PMBA4TEfi
JB@jN)(4bH5"dD'8JD@jcG'&XE'&dD@pZ)'&RB@PZ,M*CEh8JBf&Z)'pZE(NJFf9
XC@0d)'pZC5"TG'9Y)'&d)'%JG'PYC5"dEb"TER0dB@aX,XC8D'Pc)'PZFh4KE'a
KG'P[EL"bCA&eDA*PFb"jEh9b)'0[EA"eG'9b)(4[)(*PFh4KFR3JB@CdCA)JD@j
cG'&XE'PZCb"dD'Pc)(0[CR4hBA*P,L!J3faTBfXJ3fpZG'PZG@8JG'mJBA9dEfe
KG'PMB@aXH5"aG@Pd)'&XE#"[G'KPFL"bG@jZD@jR)'&`F'aTBf&dD@pZFbiJ)%0
XD@0V)%0KEQ0PE#"dEb"XC@&fC5"jEh9b)'4TFfYc)(9ZG'peBfKPC#kF9'KTFb"
TER0dB@aXBA4TEfiJFQ9aG@PbCA-JH@peFL"MEfe`GA4PFL"dEb"bCA0dBA*d)'&
QG'9b)'PZFh4KE'aTEQFJG'KTFb"cEfCdGf&bC5iJ)%0XD@0V)%0[ER4TER9P)(4
[)("bEf0PC@3Z)#"$E'PMDb"$B@jMC@`JG'mJE'9KGQ8JH@peFL"NDA0VFb"eER4
[G@0SC@3Zd&0TEQ0P)'PdC@ec)'jPC@3JG'mJBQ8JB@4NC@3JG'mJG'KP)&0jFh4
PE5"'D@aP)'pb)%C[E'4PFL`JB@iJCAKdFQ%JAM!JEfBJC'PcDb"cF'&MC5"TFb"
bCA&eDA*PC#"dEb"TER0dB@aX)(4SDA-JFfpQG(GKFQ8Z)&"XC@&cC5"QFQ9P)(9
`)'e[FQ8JC'PcDb"cF'&MC5"[EL"dD'8JC'PcDb"ZB@ePC#!LAM%L)'&ZC#"dFRN
JG'KP)'PZFh4KE'aKG'P[EL"KCf&TELj$9'KP)(0PE'9MG'9N)'4TFfXJEQ&YC@3
J)Pi`)L"TFb"XEf0VC@3Z)&"XC@&cC5"cC@aPBh3JB@j[G'KPFL"NDA0V,PT8D'8
JFf9XC@0dC@3JC'PcDb"ZB@ePC#!LAM!L)'4[CA-JEQpd)'KKGQ8JC@j[G@GS)'C
bC@8JFh"KBf8Z)&"XC@&cC5"cC@aPBh3JB@j[G'KPFL"NDA0V,L$*9'KTFb"TER0
dB@aXBA4TEfiJFQ9MEfeYC@jNFb"jEh8JFQ9cG'&bG#"jEh9b)'0[EA"eG'9b)'&
QG'9b)'PZFh4KE'aTEQFJG'KTFb"cEfCdGf&bC5iJ)%0XD@0V)%0[ER4TER9P)(4
[)'&eG'pYBA4TBf&XE(NJFA9TG#"KE'`JEh4SCA)JFR9ZEQPZCb"KF("XD@0KG'P
[ER-Z)#"$E'PMDb"$B@jMC@`JG'mJE'9KGQ8JH@peFL"NDA0VFb"eER4[G@0SC@3
ZR&4SDA-JD@jcG'&XE'&dD@pZ)(*PBfpYE@9ZC(-JH@pe)(*PFh4KFR3JH@peFL"
MEfe`GA4PFL"KCR4PFL"TER0dB@aXD@jR)(4SDA-JFfpQG(GKFQ8Z)#"$E'PMDb"
$EfjdD@jeC5"`FQpMC@9N,L!J3faTBfXJ3f&ZBf9X)(4[)'aPBACP)(P[GA)JC'P
cDh-JG@jdEh9MD'9N,VC*ER0dB@aXBA4TEfiJFQ9aG@PbCA-JB5"6HA0dC@dJ4Qp
XC'9b)'pZ)(4SC5"NDA0V)(4SC5"cEfCdGf&bC5"TFb"dEb"LC5"TER0dB@aXC@3
Z)&4SC5"NDA0V)'0SEh0PEL"NEf9c)'j[G#"SBACP)'%J8hPcG'9Y)%C[E'4PFLi
J8'aPBA0P)(0PE'9MG#"K)'4TFfXJGfKTBfJJBfpZG'&TER-JB5"6HA0dC@dJ4Qp
XC'9b,Sa8D'8JFf9XC@0dC@3JC'PcDb"ZB@ePC#!LAM!L)'Pc)'%JEQ9dGfpbDb"
cCA*fCA)JGQpXG@eP,L"8D'8J5@jcG'&XE'9b)'0KEQj[G#"TER0dB@aX)'pZ)'j
PG(G[FQXJFf9bGQ9b)(C[E(9YCA-Z)&"XC@&cC5"cC@aPBh3JB@j[G'KPFL"NDA0
V,Ra"EL"KF("XD@0KG'P[EL"hEh9XC#"ZEh3JFA9TG#"KGA4[E@&dD@0KE'aj,L"
3E'9KFf8JFA9TG#"dD'8JBA"`E'PMBA4TEfjc)'eKER9KE'aj)'&ZC#"dD'9Z)(4
bH5"dEb"aG@Pd)(4SC5"TER0dB@aXCA)JB@GKD@iZbe4SC5"eEQPZFh4KE'`JGf&
c)(0eBf0PFh0QG@`Z)%K[Gf9fCA)X)(0[E@8JCQPXCA-[CQpXC'9bFb"MEh9XC#"
ZEh3JBQ8JC'9XCA4PC#"LC@0KGA0P)(4SCANJBA*P)(0SBA*PC#"LH5"[G'KPFL"
KF("XD@0KG'P[ER-X)'&bC5"MGA*bC@jdE(NJD@iJGA0P,#"[FL"MEfjdB@PZ)'C
TE'9c)'j[G#"TER0dB@aXC@3JBRNJG'KTFb"TER0dB@aX)("bEfGbB@dZ(94SC5"
eEQPZFh4KE'`JGf&c)(0eBf0PFh0QG@`ZBP4SC5"NC@CKG@ad)'a[Bf&dD@pZ)(*
PFA9TFQ9N)'C[FL"dD'Pc)'PZFh4KE'`JBfpeE'3JEQpd)'*P)'C[G@jN,L"8D'P
c)'PZFh4KE'`JGfPXE#"LC5"MB@jMC@aXC@3ZX8j[)'pdD'9b)'&`F'aTBf&dD@p
ZFb"MB@iJBQ8JFR9ZEQPZCb"NGA*TEQFJG'KTFb"TER0dB@aXBA4TEfiZ)#"$E'P
MDb"$EfjdD@jeC5"dEb"KGA4[E@&dD@0KE'aj)(&eDA3JB@aX)'pdD'9b)(*eEQj
TEQFJBA"`E'PMBA4TEfjc,L!J3faTBfXJ3f&ZBf9X)(4[)'aPBACP)(P[GA)JC'P
cDh-JG@jdEh9MD'9N,SG1Eb"[G'KPFL"KF("XD@0KG'P[ER-JBf&Z)'*P)(*eEQj
TEQFJC(9bD@jR)(4SDA-JD@jcG'&XE'&dD@pZ,L!J3faTBfXJ3fpZG'PZG@8JG'm
JF(*[Bf9PC#iJ)%0XD@0V)%0KEQ0PE#"dEb"XC@&fC5"jEh9b)'4TFfYc)(9ZG'p
eBfKPC#id8fpbFRNX)(P[GA)JF'&cFhG[FQ3JDA-JD@jMEh*bC@0d,Je3E'9KFf8
JG(*j)'&RB@PZ,NG3E'9KFf8JFf9XC@0d)'%JF'&MDf&RC5"dEb"`FQpMCA0c)'*
PCQpbC5"ME'PMDfPZCb"dD'8J3fpZG'PZG@8JBR9dG'pZ,N4"EL"PFR*[FL"[Bf0
eFR*PC#"dD'&d)("bCACPER4PC#"dD'8JF(*[Bf9cFb"QFQpY)'0[EA"XCA4TEQF
Z$3eH-#"H-E98D'Pc)'p`CA*KG'P[EL"bCA&eDA*PFb"jEh9b)'0[EA"eG'9b)(4
[)(*PFh4KFR3JB@CdCA)JF(*[Bf9cFfPZCbiJ)%0XD@0V)%0[ER4TER9P)(4[)'&
eG'pYBA4TBf&XE(NJFA9TG#"KE'`JEh4SCA)JFR9ZEQPZCb"KF("XD@0KG'P[ER-
Z)#"$E'PMDb"$B@jMC@`JG'mJE'9KGQ8JH@peFL"NDA0VFb"eER4[G@0SC@3ZLe4
SDA-JEh"PFQ&dD@pZ)(*PFA9TFQ9c)(P[GA)JBfpYF(9dCA)JG'mJFQ9cG'&bG#"
KCR4PFL"`FQpMCA0cD@jR,L!J3faTBfXJ3fpZG'PZG@8JG'mJF(*[Bf9PC#iJ)%0
XD@0V)%0KEQ0PE#"dEb"XC@&fC5"jEh9b)'4TFfYc)(9ZG'peBfKPC#ki9'KTFb"
[F'9bBA4TEfiJFQ9MEfeYC@jNFb"jEh8JFQ9cG'&bG#"jEh9b)'0[EA"eG'9b)'&
QG'9b)("bEf0PFh0TEQFZ)#"$E'PMDb"$EfjdD@jeC5"dEb"KGA4[E@&dD@0KE'a
j)(&eDA3JB@aX)'pdD'9b)(*eEQjTEQFJBA"`E'PMBA4TEfjc,L!J3faTBfXJ3f&
ZBf9X)(4[)'aPBACP)(P[GA)JC'PcDh-JG@jdEh9MD'9N,Sj8D'Pc)'p`CA*KG'P
[EL"bC@0[E@ePEQ4c)(P[G5"bCA0dBA*d)(P[GA)JBfpYF(9dCA)JB@CdCA)JF(*
[Bf9cFfPZCbiJ)%0XD@0V)%0[ER4TER9P)(4[)("bEf0PC@3Z)#"$E'PMDb"$B@j
MC@`JG'mJE'9KGQ8JH@peFL"NDA0VFb"eER4[G@0SC@3ZVNj[)'pdD'9b)'&`F'a
TBf&dD@pZFb"MB@iJBQ8JFR9ZEQPZCb"NGA*TEQFJG'KTFb"[F'9bBA4TEfiZ)#"
$E'PMDb"$EfjdD@jeC5"dEb"KGA4[E@&dD@0KE'aj)(&eDA3JB@aX)'pdD'9b)(*
eEQjTEQFJBA"`E'PMBA4TEfjc,L!J3faTBfXJ3f&ZBf9X)(4[)'aPBACP)(P[GA)
JC'PcDh-JG@jdEh9MD'9N,S41Eb"[G'KPFL"KF("XD@0KG'P[ER-JBf&Z)'*P)(*
eEQjTEQFJC(9bD@jR)(4SDA-JEh"PFQ&dD@pZ,L!J3faTBfXJ3fpZG'PZG@8JG'm
JF(*[Bf9PC#iJ)%0XD@0V)%0KEQ0PE#"dEb"XC@&fC5"jEh9b)'4TFfYc)(9ZG'p
eBfKPC#kY3@CdCA)JFf9XC@0dD@jR)(4SC5"KC'4TG'P[EQ&X)'CTE'9c)(4[)'P
ZFh4KE'`X)'&Z)'9iG(*K)&i`)'pQ)'4TFfXJFh"KBf8JDA-JFQ9aG@PbC@3Z)&"
XC@&cC5"QFQ9P)(9`)'e[FQ8JC'PcDb"cF'&MC5"[EL"dD'8JC'PcDb"ZB@ePC#!
LAM%L)'&ZC#"dFRNJG'KP)'PZFh4KE'aKG'P[EL"KCf&TELi*06)i-$Jh0M%a8d9
bFQpb)'p`C@jTEQFJF(*TER4PFL"NFQPfCA)Z)%eKDf8JFh9bC5"jEh8JD'&fC5"
cC@aPBh4PC#"K)("bD@jdCA)JD@iJG'KP)%0SEfpcCA)Z@N9bFQpb)'p`C@jTEQF
J5@jcG'&XE'9b)%4KG'%J4QPXC5iJ8'aPBA0P)'eKDf8JFh9bC5"jEh9b)%PZFh4
KE'aPFL"%BA4K)%CTE'8JDA-JBACKD@aKBQaP,RG8D'8JFf9XC@0dC@3JC'PcDb"
ZB@ePC#!LAM!L)'4[CA-JEQpd)'KKGQ8JC@j[G@GS)'CbC@8JFh"KBf8Z)&"XC@&
cC5"bCA4eFQiJG'mJG'KP)'4PFfYdEh!JB@jN)'CbC@8JGA!JE@pbC5"NDA0V)(0
`B@0P,Ma"EL"PFR*[FL"[Bf0eFR*PC#"hD'PXC5"dFRPTEQFJG'mJCAKPBh9dC5"
dD'Pc)%0%)%PZFh4KE'aPFLi!!!"5!!m!!!!!#P0PBA*MD'PZCcS!!!Y*ER0dB@a
XD@jR1J!!#99`C'&dD@jR1JY3FQpMCA0cD@jR1JP%C@aPG'PZCcS(6@pfD@jR1JK
$Eh"jD@jR1J!!!G8!"9K8D'8JFfpQG(GKFQ8JG'mJBQ8JD@jcG'&XE'9N)(*PFA9
TFQ9c)%eKBb"28b"H-#"[FL"ZCAGPFL`JGfKTBfJJDA-JEQpd)'pZ)(4SDA-JBfp
YF(9dCA)ZE94SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-JAM!
J68)JEfBJG'pdB@`JE@&MD'PZC5"YC@e[FRNJ+&*"65NX)(GSD@0S)(4SDA-JBfp
YF(9dCA)JC'pPFb"ZEh3JD'&fC5j59'KP)(0[CR4hBA*P)(4[)'*P)'PZFh4KE'a
PC#"bCA&eDA*PFb"K)&i`)%0395`JGfKTBfJJG'KTFb"MEfe`GA4PFL"NEf9c)'j
[G#"SBACP,Q&8D'8JFfpQG(GKFQ8JG'mJBQ8JD@jcG'&XE'9N)(*PFA9TFQ9c)%p
`C@iJ9(*KER0`Eh*d)$%Z-5"[FL"ZCAGPFL`JGfKTBfJJDA-JEQpd)'pZ)(4SDA-
JBfpYF(9dCA)Z9P4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-
J3@4YD@jTFh4bBA4[FL"[FL"SD@GSCA)JE'9fC@`JB@0MCA0c)("bDACTE'9RCA-
Z!!!&e!!4@e4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-JG'K
P)%&XD@&c)%eKEQ&RCA)X)(GSD@0S)(4SDA-JBfpYF(9dCA)JC'pPFb"ZEh3JD'&
fC5jG9'KP)(0[CR4hBA*P)(4[)'*P)'PZFh4KE'aPC#"bCA&eDA*PFb""F("XC5"
&GQ9ZG#"cGA"`Eh*d,#"hD'PMD#"dD'Pc)'0[EA"eG'9b)'4[CA-JEQpd)'KKGQ8
ZD&4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-JB5!f1%XJCQa
[BA4TEQFJF'pTER3JF(*[Bf9cFfpb,#"hD'PMD#"dD'Pc)'0[EA"eG'9b)'4[CA-
JEQpd)'KKGQ8Z9P4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-
J3Q&XE'p[EL")C@a`,#"hD'PMD#"dD'Pc)'0[EA"eG'9b)'4[CA-JEQpd)'KKGQ8
ZBP4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-JB5"YC@e[FRN
JE@&ZB@GPE@9ZG#"eEQPd,#"hD'PMD#"dD'Pc)'0[EA"eG'9b)'4[CA-JEQpd)'K
KGQ8ZBP4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-JG'KP)%j
[G'PQD@0KG'P[EL"0B@jKCf9b,#"hD'PMD#"dD'Pc)'0[EA"eG'9b)'4[CA-JEQp
d)'KKGQ8Z@e4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-JG'K
P)&"[Gf9b)%eKEQ&RCA)X)(GSD@0S)(4SDA-JBfpYF(9dCA)JC'pPFb"ZEh3JD'&
fC5j#9'KP)(0[CR4hBA*P)(4[)'*P)'PZFh4KE'aPC#"bCA&eDA*PFb"K)'0[E'p
b)'0[EA"KG'PLE'8JBfpYF(9dCA)ZA94SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@a
XC@3JFQ9aG@PbCA-J-c)Y3QPd)&&eD@0V4(*KGb`JGfKTBfJJG'KTFb"MEfe`GA4
PFL"NEf9c)'j[G#"cGA"`Eh*d,P08D'8JFfpQG(GKFQ8JG'mJBQ8JD@jcG'&XE'9
N)(*PFA9TFQ9c)&&eD@0V9'PYC5`JGfKTBfJJG'KTFb"MEfe`GA4PFL"NEf9c)'j
[G#"SBACP,Q"8D'8JFfpQG(GKFQ8JG'mJBQ8JD@jcG'&XE'9N)(*PFA9TFQ9c)(0
MFQP`G'PZCb"MBA"KBQPXDA4TCA-X)(GSD@0S)(4SDA-JBfpYF(9dCA)JC'pPFb"
ZEh3JD'&fC5jD9'KP)(0[CR4hBA*P)(4[)'*P)'PZFh4KE'aPC#"bCA&eDA*PFb"
dD'8J9'PYC5"0B@jKCf9b,#"hD'PMD#"dD'Pc)'0[EA"eG'9b)'4[CA-JEQpd)'K
KGQ8ZB&4SC5"cEfCdGf&bC5"dEb"LC5"TER0dB@aXC@3JFQ9aG@PbCA-J9QPbG(9
KE#"0C@e[FRNJFh9`F'pbG#`JGfKTBfJJG'KTFb"MEfe`GA4PFL"NEf9c)'j[G#"
SBACP,MP8D'8JFfpQG(GKFQ8JG'mJBQ8JD@jcG'&XE'9N)(*PFA9TFQ9c)'%J8'p
hCA*33b"MEfe`GA4PFLj99'KP)(0[CR4hBA*P)(4[)'*P)'PZFh4KE'aPC#"bCA&
eDA*PFb"K)$Bi-$!`)%0395`JGfKTBfJJG'KTFb"MEfe`GA4PFL"NEf9c)'j[G#"
SBACP,M08D'8JFfpQG(GKFQ8JG'mJBQ8JD@jcG'&XE'9N)'4[CA-JEQpd)(0eF("
[FR3J35p9@#jI9'KP)(0[CR4hBA*P)(4[)'*P)'PZFh4KE'aPC#"bCA&eDA*PFb"
$BA*LEfj-D@)J9Q9bFfP[EL!a,M%X)(GSD@0S)(4SDA-JBfpYF(9dCA)JC'pPFb"
ZEh3JD'&fC5i!!!+f!#FB)%*PCfPZEQPZCb"TER0dB@aXBA4TEfiZ(94SC5"TER0
dB@aXBA4TEfiJDA-JBfpYF'aPG'8Z)P4SC5"TER0dB@aXBA4TEfiJGf&c)(9ZFh9
MBf9cFfCeE#iK3h*PBA4TEQFJG'KP)'PZFh4KE'aKG'P[EL"QEfaNCA)k#8PZFh4
KE'aPC"Y*ER0dB@aXD@jR)'CTE'9c)'CbEfdJC'PcDcS#G'm9)#!J8Q9YEhCTEQF
JFQ9cEh9bBf8k%b!J)%&NC'PZCb"bCA0[GA*MC6SD5@jcG'&XE'PZCb"bCA0[GA*
MCA-JCR*[E6S39(P`C5"[CL"*ER0dB@aX1Ja&BA0j)%PZFh4KE'`13h9cG'pY)%P
ZFh4KE'`58f9XC@0dC@3J8'&MDf&RCA-k%d0bC@&dC@3JG'KP)%C[E'4PFMS*9@j
TER0dB@aX"d4PE'9dC@324A*bEh)J4'9XCA4TEQFk"e9`C'&dC@3F6h*TCfPZB@`
JCQPXC5"TFb"eEQe[C'PQD@9N,Kp2FQPRD@jKE#"QD@aP)'KKFb"LC@9Z)'4PE'9
dC@3Z(8pbD@GTEQ&X)'CTE'8JE@pfC@3JG'mJG(*KFfJZ&NpbD@GTEQ&X)'CTE'8
JFQ9ZB@ePC#i49A"NBA4P)'0KEQ0PE'aPC#i19A"NBA4P)%9bFQpb1L!+4'9XCA4
PC#"H-!j0EhCPC#"H-#"dEb"H-4"5C@jKE@9N)&i`)(4[)&ia&N0bC@&dC@3JB@a
TBA-JAM!JBA3JAM%08hPcG'9Y)%C[E'4PFK""F("XC5"0C@je)%PdC@ec$N0[ER4
bEf`J8'&ZC@ac#N9iG'9ZFfP[ER-&4QpZG(-,8(*PCQ9bC@jMCA-08h4KFR4eF#"
*G'9YF`G%CA0VG'p`"94bBA0S$e4PEA"[FQ&bH5"*G'9YF`!!!A3!%4"8D'8JC'P
cDb"TFb"QG@aX$d4bDACP)'j[G#"QEh9ZC"K8D'8JCQPXC5"ZB@eP)'Pc)'PZGQ&
XD@3S9@jPH("PBh4PC'aj)(*PB@0SC@3JG'KP)'9ZC#"[CL"dD'8JCQPXC3j'D@a
P)'j[G#"QEh9ZC"*8D'8JCQPXC5"TFb"XEf0VC@359'KP)'4TFfXJDA-JE'pMDf9
N+94SC5"QD@aP)'Pc)'PZ)(9cC5"LH5"KEQpdD'9b)'&`F'aTBf&dD@pZ%d4eF'a
TBf&dC5"QD@aP)'jKE@806h9d)'pQ)'ePE@pbH49&FR*[FL"KC'4TEQFJFQ9cEh9
bBf863@0MCA0c)'4PEQPPC#"PFR*[FK&6CA*fCA)JDA-JE@PcFfPZCa0*6b"&FR*
[FL!S3Q&N)%4TFfXT&8PZFh4KE'aPFL"SBA-J4AK`DA*PC"9$EfjZC@0dD@pZ)&4
PFQeTEQ&dC@343fpYE@&ZC#"8D@ePC#"2GA3!!!9R!"Z59'KP)'CTE'8J)Pi`)L"
KE(*PB@4j)'pZ)#*H-5)JDA-JEQ9hCA)JG'KKEL"hD'&d)(P[G5"KFQ8JB@*[GA3
JG'mJD@jcG'&XE#iJ3faTBfXJ6Q9hCA)JG'mJDf9PF#"dD'8JEQ9hCA)JCQPXC5"
[FL"ME'PMDb"2E'4PFL"dEb"bCA"XB@0P)(4SBA3JCQPXC5i&6Q9hCA)&6faNCA+
59'KP)'CTE'8J)Pi`)L"KE(*PB@4j)'pZ)#*H-5)JDA-JEfaNCA)JG'KKEL"hD'&
d)(P[G5"KFQ8JB@*[GA3JG'mJD@jcG'&XE#iJ3faTBfXJ6faNCA)JG'mJDf9PF#"
dD'8JEfaNCA)JCQPXC5"[FL"ME'PMDb"1CAGPFL"dEb"bCA"XB@0P)(4SBA3JCQP
XC5i&6faNCA)&6Q9hCA+19'KP)'CTE'8J)Pi`)L"KE(*PB@4j)'pZ)#*H-5)JDA-
JG'KP)(0KE@8JBA-JGfKKG#"jEh8JBA*P)'&LEh9d)(4[)'PZFh4KE'`Z)%0XD@0
V)&0VDA!JG'mJDf9PF#"dD'8JCQPXC5"[FL"ME'PMDb"5CA"XB@0P)(4[)(*PF'a
KBf8JG'KKG#"QD@aP,J46DfP`"e*PF'aKBf9N9'KP)'CTE'8J)Pi`)L"TFb"KE(*
PB@4j)'pZ)#*H-5)Z)%0XD@0V)&0VDA!JG'mJDf9PF#"dD'8JCQPXC5"[FL"ME'P
MDb"5CA"XB@0P)(4[)(*PF'aKBf8JG'KKG#"QD@aP,J46DfP`"e*PF'aKBf9K9'K
P)'CTE'8J)Pi`)L"TFb"ZEh3JEfiJ)Pia)LiJ3faTBfXJ8fYTF#"dEb"cDfP`)(4
SDA-JCQPXC5"[FL"ME'PMDb"*ER0dB@aX)(4[)'PZFh4KE'`JG'KTFb"QD@aP,J4
6DfP`"dPZFh4KE'bI35"QD@aP)'jKE@9N)#*H-#)JEfiJ)Pia)L"SBA-JG'KP)(0
KE@8JEQ&YC5"KFb"K)'C[E'4PFL"dD'&d)'jPC@4c)(4[)'*P)'PZFh4KE'aPC#i
J3faTBfXJ3f&ZBf9X)(4[)(0dEh!JG'KP)'PZFh4KE'aKG'P[EL"[FL"ME'PMDb"
%C@aPG'8JG'mJFQ9`E'&MC5"dD'&d)'CTE'8Z"N0KEQ0PE!C%C@aPG'@K35"QEfa
NCA)JEQ&YC@3J)Pi`)L"[EL!LAM%L)'KKFb"dD'8JFf&YC5"ZB@eP)'&c)'%JCQP
XC5"dD'&d)'jPC@4c)(4[)'*P)'PZFh4KE'aPC#iJ3faTBfXJ3f&ZBf9X)(4[)(0
dEh!JG'KP)'PZFh4KE'aKG'P[EL"[FL"ME'PMDb"%C@aPG'8JG'mJFQ9`E'&MC5"
dD'&d)'C[E'4PFLi'3f&ZBf9X"N4PE'9dCCK8D'8JCQPXC5!LAM!L)'&XFQ9KC(N
JEfiJ)Pia)L"TFb"ZCAGPFL"dD'&Z)'pb)(0KE@8JBA-JGfKKG#"jEh8JBA*P)'&
LEh9d)(4[)'PZFh4KE'`Z)%0XD@0V)&0VDA!JG'mJDf9PF#"dD'8JCQPXC5"[FL"
ME'PMDb"5CA"XB@0P)(4[)(*PF'aKBf8JG'KKG#"QD@aP,J46DfP`"e*PF'aKBf@
B9'KP)'CTE'8J)Pi`)L"KE(*PB@4j)'pZ)#*H-5)JDA-JEfaNCA)JG'KKEL"[FL"
cB@eP)'&c)(GSBA3JH@pe)'&bC5"KBQpeG#"dEb"TER0dB@aX,L"$E'PMDb"6DfP
`)(4[)'YPCA!JG'KP)'CTE'8JEh)JBfaTBfXJ8Q9`E'&MC5"dEb"bCA"XB@0P)(4
SBA3JCQPXC5i%8fYTF!G5CA"XB@0P!!!&0!!NP8PZFh4KE'aKG'P[EL"hBA-JFh9
MBf9cFfCeE#iJ5@BJH@pe)'&bC5"QD@jTFfKPC#`JBfaTBfXJ8A9TG#"dEb"XC@&
fC5"dD'8J5@jcG'&XE'9b,L"*CL"jEh8JGfPcD#"dEb"`CA*QEh*Y)'&NC'PdD@p
ZB@`JD@jcG'&XE'&dD@pZFb`JBfaTBfXJ3fpZG'PZG@8Z"&&eDA3)3fpZG'PZG@8
!l8PZFh4KE'aKG'P[EL"hBA-JFh9MBf9cFfCeE#iJ@@pe)'KKGQ8JD@jcG'&XE'9
N)(0[CR4hBA*P)(GSD@0S)(0eCfGPFh4c)(P[G5"bCA0dBA*d)(P[GA)JBfpYF(9
dCA)Z)%PQ)(P[G5"KFQ8JCQPZDA0SC@3X)'0XD@0V)&*PFh4KFR3X)'pb)'0XD@0
V)&&eDA3JG'mJE'9KGQ8JG'KP)%PZFh4KE'aPFLiJ5@BJH@pe)(GTFfJJG'mJF'9
bCQpbE5"KC'4TG'P[EQ&X)'PZFh4KE'aKG'P[ER-X)'0XD@0V)%0[ER4TER9P,JG
5CA0dBA*d"&&eDA3)3fpZG'PZG@A25@jcG'&XE'&dD@pZ)(GKFb"cG@0MCA0cCR9
X,L"CEh8JD'&fC5"TER0dB@aXC@3JFfpQG(GKFQ8JGfKTBfJJFQ9aG@PbCA-JH@p
e)(4[)(*PFh4KFR3JH@peFL"MEfe`GA4PFLiJ5@BJH@pe)'&bC5"QD@jTFfKPC#`
JBfaTBfXJ8Q9cG'&bG#`JEh)JD@BJH@pe)(GTFfJJG'mJF'9bCQpbE5"KC'4TG'P
[EQ&X)'PZFh4KE'aKG'P[ER-X)'0XD@0V)%0[ER4TER9P,Jd0"e*PFh4KFR3)3fp
ZG'PZG@8!H%PQ)(P[G5"KFQ8JCQPZDA0SC@3X)'0XD@0V)&&eDA3JG'mJE'9KGQ8
JG'KP)%PZFh4KE'aPFLiJ5@BJH@pe)(GTFfJJG'mJF'9bCQpbE5"KC'4TG'P[EQ&
X)'PZFh4KE'aKG'P[ER-X)'0XD@0V)%0[ER4TER9P,J44G@Pd#%0[ER4TER9P!+0
*CL"jEh8JBA*P)'CTEQPcD'9N,#"ME'PMDb"5CA0dBA*d)(4[)(*PFh4KFR3JH@p
eFL"MEfe`GA4PFL`JEh)JBfaTBfXJ8A9TG#"dEb"XC@&fC5"dD'8J5@jcG'&XE'9
b,L"*CL"jEh8JGfPcD#"dEb"`CA*QEh*Y)'&NC'PdD@pZB@`JD@jcG'&XE'&dD@p
ZFb`JBfaTBfXJ3fpZG'PZG@8Z"e*PFh4KFR3%8A9TG!K$EfjdD@jeCAe*CL"jEh8
JBA*P)'CTEQPcD'9N,#"ME'PMDb"5CA0dBA*d)(4[)(*PFh4KFR3JH@peFL"MEfe
`GA4PFLiJ5@BJH@pe)(GTFfJJG'mJF'9bCQpbE5"KC'4TG'P[EQ&X)'PZFh4KE'a
KG'P[ER-X)'0XD@0V)%0[ER4TER9P,JG5CA0dBA*d#%0[ER4TER9P!%4CEh8JD'&
fC5"TER0dB@aXC@3JFfpQG(GKFQ8JG'KKG#"cG@GRCA0dFb"jEh8JFQ9cG'&bG#"
jEh9b)'0[EA"eG'9b,JG5CA0dBA*d"&&eDA3!4eP[G5"SBACP)'PZFh4KE'aPC#"
cEfCdGf&bC5"dD'&d)(*PFA9TFQ9c)(P[G5"dEb"bCA0dBA*d)(P[GA)JBfpYF(9
dCA)Z"e*PFh4KFR3!!#K8D'8JFfpQG(GKFQ8JGf&c)(0eBf0PFh0QG@aXH5"TER0
dB@aXC@3Z"&&eDA3!!!!!"1!!*)98D'8JEh"PFQ&dD@pZ)(GKFb"cG@0MCA0cCR9
X,L"*CL"jEh8JBA*P)'CTEQPcD'9N,#"ME'PMDb"4G@Pd)(4[)'aPBACP,L"*CL"
jEh8JGfPcD#"dEb"`CA*QEh*Y)'&NC'PdD@pZB@`JEh"PFQ&dD@pZFb`JBfaTBfX
J3fpZG'PZG@8Z"&&eDA3)3fpZG'PZG@8!h94SC5"[F'9bBA4TEfiJGf&c)(0eBf0
PFh0QG@`Z)&P[G5"SBACP)'PZFh4KE'aPC#"cEfCdGf&bC5"hD'PMD#"cG@GRCA0
dFb"jEh8JFQ9cG'&bG#"jEh9b)'0[EA"eG'9b,L"*CL"jEh8JBA*P)'CTEQPcD'9
N,#"ME'PMDb"5CA0dBA*d,#"[FL"ME'PMDb"4G@Pd)(4[)'aPBACP,L"*CL"jEh8
JGfPcD#"dEb"`CA*QEh*Y)'&NC'PdD@pZB@`JEh"PFQ&dD@pZFb`JBfaTBfXJ3fp
ZG'PZG@8Z"e*PFh4KFR3%8A9TG!K$EfjdD@jeCFY8D'8JEh"PFQ&dD@pZ)(GKFb"
cG@0MCA0cCR9X,L"CEh8JD'&fC5"TER0dB@aXC@3JFfpQG(GKFQ8JGfKTBfJJFQ9
aG@PbCA-JH@pe)(4[)(*PFh4KFR3JH@peFL"MEfe`GA4PFLiJ5@BJH@pe)'&bC5"
QD@jTFfKPC#`JBfaTBfXJ8Q9cG'&bG#`JEh)JD@BJH@pe)(GTFfJJG'mJF'9bCQp
bE5"KC'4TG'P[EQ&X)'p`CA*KG'P[ER-X)'0XD@0V)%0[ER4TER9P,JG5CA0dBA*
d#%0[ER4TER9P!'G*CL"jEh8JBA*P)'CTEQPcD'9N,#"ME'PMDb"4G@Pd)(4[)'a
PBACP,L"*CL"jEh8JGfPcD#"dEb"`CA*QEh*Y)'&NC'PdD@pZB@`JEh"PFQ&dD@p
ZFb`JBfaTBfXJ3fpZG'PZG@8Z"&&eDA3)3fpZG'PZG@8!NNPQ)(P[G5"KFQ8JCQP
ZDA0SC@3X)'0XD@0V)&*PFh4KFR3JG'mJFQ9cG'&bG#"jEh9b)'0[EA"eG'9b,#"
[FL"ME'PMDb"4G@Pd)(4[)'aPBACP,L"*CL"jEh8JGfPcD#"dEb"`CA*QEh*Y)'&
NC'PdD@pZB@`JEh"PFQ&dD@pZFb`JBfaTBfXJ3fpZG'PZG@8Z"e*PFh4KFR3%8A9
TG!K$EfjdD@jeCAT*CL"jEh8JBA*P)'CTEQPcD'9N,#"ME'PMDb"5CA0dBA*d)(4
[)(*PFh4KFR3JH@peFL"MEfe`GA4PFLiJ5@BJH@pe)(GTFfJJG'mJF'9bCQpbE5"
KC'4TG'P[EQ&X)'p`CA*KG'P[ER-X)'0XD@0V)%0[ER4TER9P,JG5CA0dBA*d#%0
[ER4TER9P!%4CEh8JD'&fC5"TER0dB@aXC@3JFfpQG(GKFQ8JG'KKG#"cG@GRCA0
dFb"jEh8JFQ9cG'&bG#"jEh9b)'0[EA"eG'9b,JG5CA0dBA*d"&&eDA3!4eP[G5"
SBACP)'PZFh4KE'aPC#"cEfCdGf&bC5"dD'&d)(*PFA9TFQ9c)(P[G5"dEb"bCA0
dBA*d)(P[GA)JBfpYF(9dCA)Z"e*PFh4KFR3!!"e8D'8JEh"PFQ&dD@pZ)(GKFb"
cG@0MCA0cCR9X,J44G@Pd!!!!!!!-!!)#6dX'3f&ZBf9X!!!!I!!'(e0PE'9MG#"
dD'8JD@jcG'&XE'&dD@pZ)'C[E'4PFMSE8f9XC@0d)(GSCA*P)(4[)'PZFh4KE'`
k)&i`&e0PE'9MG#"cC@&bBfJJE'pMBA4TEfik#de[GQ8JAM!JG'mk#d0[F(NJAM!
JG'mk$80bC@&dC5"H-#"TEMS!!!!`!!!!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)
!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!
!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%
!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGh
Gh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$
rrrrrrrm!!3!!!!!!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!
!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!
!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!
!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrr
rr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6
rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!
!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!!!!!#!!!!!!!!!!-
!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!
!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)
!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!
!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%
!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGh
Gh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$
rrrrrrrm!!3!!!!!!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!
!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!
!!!!!!!3!!2rrrrrrr`!"!!!!!!!!!!)!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!
!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrr
rr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6
rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!
!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!!!!!#!!!!!!!!!!-
!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!!"!!!rrrrrrrr!!%!!!!!!!!!!J!!!!!
!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)
!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!
!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%
!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGh
Gh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$
GhGhGhGd!!3!!!!!!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!
!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!
!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!
!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrr
rr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6
rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!
!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$rrrrrrrm!!3!!!!!!!!!#!!!!!!!!!!-
!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%!!!!!!!!!!J!!!!!
!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGhGh3!"!!!!!!!!!!)
!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!-!!!!!!!!!!%!!$GhGhGhGd!!3!!!!!
!!!!#!!!!!!!!!!-!!!!!!!!!"2rrrrrrr`!!!$!!!!!!!!!!"!!!hGhGhGhG!!%
!!!!!!!!!!J!!!!!!!!!$!!!!!!!!!!6rrrrrrrm!!!!`!!!!!!!!!!3!!0hGhGh
Gh3!"!!!!!!!!!!)!!!!!!!!!!`!!!!!!!!!%rrrrrrrr!!!!"J!!!!!!!3!!!!B
!!!!!!!%!!!!'!!!!!!!"!!!!"J!!!!!!!!!!!!B!!!!!!!%!!!!'!!!!!!!"!!!
!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%
!!!!'!!!!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!!!!!"!!!!"J!!!!!
!!!!!!!B!!!!!!!%!!!!'!!!!!!!!!!!!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!
!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!!!!!!!!!!"J!!!!!!!3!!!!B
!!!!!!!%!!!!'!!!!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!!!!!"!!!
!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%
!!!!'!!!!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!!!!!!!!!!"J!!!!!
!!3!!!!B!!!!!!!%!!!!'!!!!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!
!!!!"!!!!"J!!!!!!!3!!!!B!!!!!!!%!!!!'!!!!!!!"!!!!"J!!!!!!!3!!!!B
!!!!!!!%!!!!m!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)!!!+!!!!!!!!!!!!!!
!!!!!!!!!$!!!!!!!!2rrrrrrr`!!!!!!+!!!!!!!!!!!!!!!!#!!!"3!!!!!!!!
!!!!-!!!!!!!!rrrrrrrr!!!!!!!S!!!!!!!!!!!J!!!8!!!!!!!!!!!!!!!!!!`
!!!!!!!$rrrrrrrm!!!!!!%J!!!!!!!!!!!!!!!!J!!!J!!!!!#!!!$3!!!!!!!!
!!!!!!!!!$!!!!!!!!2rrrrrrr`!!!!!!!!!-!!!!!!!!rrrrrrrr!!!!!!#F!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J!!"-!!!
!!#!!!'!!!!!!!!!!!#!)!(3!!!!!)!J!L!!!!!!!$!!!!!!!!2rrrrrrr`!!!!!
!!!!-!!!!!!!!rrrrrrrr!!!!!!!!!!`!!!!!!!$rrrrrrrm!!!!!!!!!$!!!!!!
!!2rrrrrrr`!!!!!!L!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#!)!$J!!!!!)!J
!6!!!!!!!!!!!)!J!B!!!!!!J#!"d!!!!!!!-!!!!!!!!rrrrrrrr!!!!!!!!!!`
!!!!!!!$rrrrrrrm!!!!!!!!!$!!!!!!!!2rrrrrrr`!!!!!!!!!-!!!!!!!!rrr
rrrrr!!!!!!,92$piE@`JGQ9bFfP[EMdL-5i`)L"PEQ0[C'PZCcdL994',6JL2ci
02#&%6d08@9"&)("XDA0d)&0C8e4&65!LCQPXC6S[,fa[Bf&XD'pcG#p6HA0dC@d
[6'PLFQ&bH5p%9%4c,e"bEh"PFR4j6'PcG#jNG'3L2JdmF'aTFh3JGQ9bFfP[EMd
L-#ij)Mi02'4TBh3q$5!J)#!J2'YPH6j$4N*eEQ4XC8PZCQp%D@0dD@pZBA*j9Q9
bFfP[EM`[Df9j2JdJ)#!J)$acG(*TEQFq0Li`2#pcG(*TEQFq$5!J)#!J2'YPH6j
$4N*eEQ4XC8PNC@jdD@CTCA)m,fYPH6i0)#!J)#!mFh4bD@jR2Q0[E5j0D@jN9QP
cD@pZ,NPZFh4KE'aPFPC*8d8m,h0dFQPZCci0)#!J)#!mDf9j2N0'3R9ZC'aP9Q9
bFfP[EM`[Df9j2JdJ)#!J)$acG(*TEQFq1#ic2#pcG(*TEQFq$5!J)#!J2'YPH6j
$4N*eEQ4XC84PGQ9XEh"YC@jd8Q9RD@pZ2#pVCANq$5!J)#!J2(0dFQPZCcj&EQG
XDA0S2#pcG(*TEQFq$5!J)#!J2'YPH6j$4N*eEQ4XC8jKE@8m,fYPH6i0)#!J)#!
mFh4bD@jR2QeKBfpcH#eeBf*XEfG[,68Z05e*ER0dB@aXCA)m,h0dFQPZCci0)#!
J)#!mDf9j2N0'3R9ZC'aP8'&MDf&RC94jF'8m,fYPH6i0)#!J)#!mFh4bD@jR2N&
38%`m,h0dFQPZCci0)#!J)#!mDf9j2N0'3R9ZC'aP8fPREQ&dGA*P2#pVCANq$5!
J)#!J2(0dFQPZCcj@59-c2#pcG(*TEQFq$5!J)#!J2'YPH6j$4N*eEQ4XC90SEh*
d9Q9bFfP[EP0dFQPZCc`[Df9j2JdJ)#!J)$acG(*TEQFq1#ic2#pcG(*TEQFq$6`
[C'PMG$i02#p`E'PcG$i!!!!@!!%!!!!!!"!!$!!!!!i!$!!!!!!!!!!!!$d)-)!
!!!!$1#ic-NPZFh4KE'aPFL"@590&)$JZ-`fT)%eTEQ4@DA0TEfiJ8fpQG(GKFQ8
J-6Nj-5db-$!c!!!SCLKQ!!!!!!$J!1!!%3,r$!$rrJ!!!%J!!!")!!!!!!!!!1!
!i!!!!!!!S3(b!"K(5dp1!!!!!!!!!!!!i!$J4h+*F'L[BQS!(J!"!!U!!B!"Irp
rr`#D!!!!ri1!!!!!!!$J!1!!!!!%!!!!!!")!!!!5!!!!"!!)!!%!!J!!!!J!(i
bh!"pIM3!!!!!!1!!i!!!!!!!i!$J!%!!$S%!J3#"!)%!J3#"!)%!!!k"!)%!J3#
"!)%!J3#"!!!1J3#"!)%!J3#"!)%!J3!!$S%!J3#"!)%!J3#"!)%!!!k"!)%!J3#
"!)%!J3#"!!!1J3#"!)%!J3#"!)%!J3!!$S%!J3#"!)%!J3#"!)%!!"5"!)%!Z!$
cri%!V`$cri%!J3#i!!!8J3#"!,J!mrq"!+m!mrq"!)%!Z!!!&)%!J3#i!22rJ3#
[!22rJ3#"!,J!!"5"!)%!Z!$cri%!V`$cri%!J3#i!!!8J3#"!,J!mrq"!+m!mrq
"!)%!Z!!!&)%!J3#i!22rJ3#[!22rJ3#"!,J!!"5"!)%!Z!$cri%!V`$cri%!J3#
i!!!8J3#"!,m!jIq"!,d!jIq"!)%![`!!&)%!J3#r!1ArJ3#p!1ArJ3#"!,m!!"5
"!)%![`$Pri%![3$Pri%!J3#r!!!8J3#"!,m!jIq"!,d!jIq"!)%![`!!&)%!J3#
r!1ArJ3#p!1ArJ3#"!,m!!"5"!)%![`$Pri%![3$Pri%!J3#r!!!8J3#"!,m!jIq
"!,d!jIq"!)%![`!!&)%!J3$'!0IrJ3$,!0IrJ3#"!-B!!"5"!)%!aJ$Ari%!b`$
Ari%!J3$'!!!8J3#"!-B!erq"!-X!erq"!)%!aJ!!&)%!J3$'!0IrJ3$,!0IrJ3#
"!-B!!"5"!)%!aJ$Ari%!b`$Ari%!J3$'!!!8J3#"!-B!erq"!-X!erq"!)%!aJ!
!&)%!J3$'!0IrJ3$,!0IrJ3#"!-B!!"5"!)%!c3$*ri%!f3$*ri%!J3$0!!!8J3#
"!-d!bIq"!0N!bIq"!)%!c3!!&)%!J3$0!-RrJ3$C!-RrJ3#"!-d!!"5"!)%!c3$
*ri%!f3$*ri%!J3$0!!!8J3#"!-d!bIq"!0N!bIq"!)%!c3!!&)%!J3$0!-RrJ3$
C!-RrJ3#"!-d!!"5"!)%!c3$*ri%!f3$*ri%!J3$0!!!8J3#"!03!Zrq"!1F!Zrq
"!)%!e!!!&)%!J3$8!,[rJ3$R!,[rJ3#"!03!!"5"!)%!e!#lri%!j`#lri%!J3$
8!!!8J3#"!03!Zrq"!1F!Zrq"!)%!e!!!&)%!J3$8!,[rJ3$R!,[rJ3#"!03!!"5
"!)%!e!#lri%!j`#lri%!J3$8!!!8J3#"!03!Zrq"!1F!Zrq"!)%!e!!!&)%!J3$
E!+hrJ3$e!+hrJ3#"!0X!!"5"!)%!f`#Yri%!p3#Yri%!J3$E!!!8J3#"!0X!VIq
"!28!VIq"!)%!f`!!&)%!J3$E!+hrJ3$e!+hrJ3#"!0X!!"5"!)%!f`#Yri%!p3#
Yri%!J3$E!!!8J3#"!0X!VIq"!28!VIq"!)%!f`!!&)%!J3$E!+hrJ3$e!+hrJ3#
"!0X!!"+"!)%!iJ#Iri-!Rrq"!)%!iJ!!%S%!J3$L!*rrJ`#Iri%!J3$L!!!5J3#
"!1)!Rrq$!*rrJ3#"!1)!!"+"!)%!iJ#Iri-!Rrq"!)%!iJ!!%S%!J3$L!*rrJ`#
Iri%!J3$L!!!5J3#"!1)!Rrq$!*rrJ3#"!1)!!"+"!)%!iJ#Iri-!Rrq"!)%!iJ!
!%S%!J3$T!*(rN3#4ri%!J3$T!!!5J3#"!1N!NIq4!*(rJ3#"!1N!!"+"!)%!k3#
4rj%!NIq"!)%!k3!!%S%!J3$T!*(rN3#4ri%!J3$T!!!5J3#"!1N!NIq4!*(rJ3#
"!1N!!"+"!)%!k3#4rj%!NIq"!)%!k3!!%S%!J3$T!*(rN3#4ri%!J3$T!!!kJ3#
"!2!!l2rk%2VrqK$krrSJqM$k%2VrqL$c-2SJl2qI!1crqJ$krrS!q[rX!2Vrj3$
Xri%!J3$`!!!kJ3#"!2!!l2rk%2VrqK$krrSJqM$k%2VrqL$c-2SJl2qI!1crqJ$
krrS!q[rX!2Vrj3$Xri%!J3$`!!!kJ3#"!2!!l2rk%2VrqK$krrSJqM$k%2VrqL$
c-2SJl2qI!1crqJ$krrS!q[rX!2Vrj3$Xri%!J3$`!!!kJ3#"!2!!l2rk%2VrqK$
krrSJqM$k%2VrqL$c-2SJl2qI!1crqJ$krrS!q[rX!2Vrj3$Xri%!J3$`!!!kJ3#
"!2!!l2rk%2VrqK$krrSJqM$k%2VrqL$c-2SJl2qI!1crqJ$krrS!q[rX!2Vrj3$
Xri%!J3$`!!!kJ3#"!2!!l2rk%2VrqK$krrSJqM$k%2VrqL$c-2SJl2qI!1crqJ$
krrS!q[rX!2Vrj3$Xri%!J3$`!!!kJ3#"!2!!l2rk%2VrqK$krrSJqM$k%2VrqL$
c-2SJl2qI!1crqJ$krrS!q[rX!2Vrj3$Xri%!J3$`!!!kJ3#"!2F!jIrk)2VrqL$
krrS`l2rk322rqM$Prkd!jIrk!2VrqJ$krrS!l2rk!22rqJ$Pri%!J3$h!!!kJ3#
"!2F!jIrk)2VrqL$krrS`l2rk322rqM$Prkd!jIrk!2VrqJ$krrS!l2rk!22rqJ$
Pri%!J3$h!!!kJ3#"!2F!jIrk)2VrqL$krrS`l2rk322rqM$Prkd!jIrk!2VrqJ$
krrS!l2rk!22rqJ$Pri%!J3$h!!!kJ3#"!2F!jIrk)2VrqL$krrS`l2rk322rqM$
Prkd!jIrk!2VrqJ$krrS!l2rk!22rqJ$Pri%!J3$h!!!rJ3#"!2F!jIrk)2VrqL$
krrS`l2rk326r!F!Nqc$Prkd!jIrk!2VrqJ$krrS!l2rk!26r!-$k!1ArJ3#"!2F
!!%'"!)%!p`$PrrSJq[rk)2VrqM$XrrT!pIm"`!$l-!!BjIqY!1ArqJ$krrS!q[r
k!1crqJ$er`$!q3$Pri%!J3$h!!"%J3#"!2F!jIrk)2VrqL$krrS`l2rk32Er!X!
!!2d`!L3B-1ArV3$PrrS!q[rk!2VrqJ$XrrS!p[m!`2J!jIq"!)%!p`!!2)%!J3$
q!0lrqL$krrSJq[rk)1crqM$k32S`q`!!`0lrZ`$HrrS!q[rk!2VrqJ$XrqB!!-$
Hri%!J3$q!!!qJ3#"!2i!h[rk)2VrqL$krrSJl2rk-2T!qM$q!!&!J0crZ`$HrrS
!q[rk!2VrqJ$XrqN!!8#!h2q"!)%!rJ!!2B%!J3$q!0lrqL$krrSJq[rk)1crqM$
k32S`!J"!`0VrZ`$HrrS!q[rk!2VrqJ$XrqX!!8$!f[q"!)%!rJ!!2)%!J3$q!0l
rqL$krrSJq[rk)1crqM$k32X`!L3!`0RrZ`$HrrS!q[rk!2VrqJ$XrqX!!-$Cri%
!J3$q!!!qJ3#"!2i!h[rk)2VrqL$krrSJl2rk-2T!qM!$!!"!`0[rZ`$HrrS!q[r
k!2VrqJ$XrqS!!8$!frq"!)%!rJ!!3)%!J3$q!0lrqL$krrSJq[rk)1crqM$k32S
`rJ!#3)$!hIql!0lrqJ$krrS!q[rk!1crk3!#3)$!hIq"!)%!rJ!!3)%!J3$q!0l
rqL$krrSJq[rk)1crqM$k32S`r3!#3)$!h[ql!0lrqJ$krrS!q[rk!1crk!!#3)$
!h[q"!)%!rJ!!2)%!K3$ArrS`q[rk-2VrqM$XrrT!pIm!32S!!"MArmN!errk!2V
rqJ$krrS!l2rk!2Ar!%$j!0IrJ3#&!!!kJ3#&!0IrqM$krrS`q[rk-1crqN$er`$
!q3$ArmN!errk!2VrqJ$krrS!l2rk!2Ar!-$j!0IrJ3#&!!!kJ3#&!0IrqM$krrS
`q[rk-1crqN$dr`#!qJ$ArmN!errk!2VrqJ$krrS!l2rk!26r!)$k!0IrJ3#&!!!
fJ3#&!0IrqM$krrS`q[rk-1crqN$crrS!err*!0IrqJ$krrS!q[rk!1crqJ$crrS
!erq"!)8!!$D"!)8!errk-2VrqM$krrS`l2rk322rqJ$ArmN!errk!2VrqJ$krrS
!l2rk!22rqJ$Ari%!K3!!0S%!K3$ArrS`q[rk-2VrqM$XrrT!mrrk!0Irb3$ArrS
!q[rk!2VrqJ$XrrS!mrrk!0IrJ3#&!!!fJ3#&!0IrqM$krrS`q[rk-1crqN$crrS
!err*!0IrqJ$krrS!q[rk!1crqJ$crrS!erq"!)8!!$+"!)`!d2rk)2T!qL$krrS
JqM$k%2VrqL$c-2SJd2rA!0$rl!$krq`!q[rP!0$rJ3#-!!!bJ3#-!0$rqL$k32S
Jq[rk)2S`qK$krrSJmc$k)0$re`$3rq`!q[rX!2Vrj3$3ri%!M!!!-S%!M!$3rrS
JqN$k)2VrqL$k-2S3q[rk)2-`qL$3rpF!d2rX!2Vrl!$krq8!d2q"!)`!!$+"!)`
!d2rk)2T!qL$krrSJqM$k%2VrqL$c-2SJd2rA!0$rl!$krq`!q[rP!0$rJ3#-!!!
bJ3#-!0$rqL$k32SJq[rk)2S`qK$krrSJmc$k)0$re`$3rq`!q[rX!2Vrj3$3ri%
!M!!!-S%!M!$3rrSJqN$k)2VrqL$k-2S3q[rk)2-`qL$3rpF!d2rX!2Vrl!$krq8
!d2q"!)`!!$+"!)`!d2rk)2T!qL$krrSJqM$k%2VrqL$c-2SJd2rA!0$rl!$krq`
!q[rP!0$rJ3#-!!!5J3#6!)(r[IrP!)(r[Iq"!*-!!"+"!*-!JIqprq8!JIqpri%
!N`!!%S%!N`#"rlhrj3#"rlhrJ3#6!!!5J3#6!)(r[IrP!)(r[Iq"!*-!!"+"!*-
!JIqprq8!JIqpri%!N`!!%S%!N`#"rlhrj3#"rlhrJ3#6!!!5J3#6!)(r[IrP!)(
r[Iq"!*-!!"+"!*S!JIq[rr-!JIq[ri%!QJ!!%S%!QJ#"rkrrm`#"rkrrJ3#D!!!
5J3#D!)(rVrrc!)(rVrq"!*S!!"+"!*S!JIq[rr-!JIq[ri%!QJ!!%S%!QJ#"rkr
rm`#"rkrrJ3#D!!!5J3#D!)(rVrrc!)(rVrq"!*S!!"+"!*S!JIq[rr-!JIq[ri%
!QJ!!1S%!QJ$3rrS3l2rk)2T!qL$krrSJqM$k%2VrqL$k32SJbIrc!0$rqJ$Xrq`
!q[rX!2Vrl!$*ri%!QJ!!1S%!QJ$3rrS3l2rk)2T!qL$krrSJqM$k%2VrqL$k32S
JbIrc!0$rqJ$Xrq`!q[rX!2Vrl!$*ri%!QJ!!1S%!QJ$3rrS3l2rk)2T!qL$krrS
JqM$k%2VrqL$k32SJbIrc!0$rqJ$Xrq`!q[rX!2Vrl!$*ri%!QJ!!1S%!QJ$3rrS
3l2rk)2T!qL$krrSJqM$k%2VrqL$k32SJbIrc!0$rqJ$Xrq`!q[rX!2Vrl!$*ri%
!QJ!!1S%!QJ$3rrS3l2rk)2T!qL$krrSJqM$k%2VrqL$k32SJbIrc!0$rqJ$Xrq`
!q[rX!2Vrl!$*ri%!QJ!!1S%!QJ$3rrS3l2rk)2T!qL$krrSJqM$k%2VrqL$k32S
JbIrc!0$rqJ$Xrq`!q[rX!2Vrl!$*ri%!QJ!!1S%!QJ$3rrS3l2rk)2T!qL$krrS
JqM$k%2VrqL$k32SJbIrc!0$rqJ$Xrq`!q[rX!2Vrl!$*ri%!QJ!!2S%!N`$ArrS
Jl2rk-2VrqM$krrS`l2rk-2VrqM$3rq8!errk!1crqJ$krrS!q[rk!1crqJ$krrS
!d2q"!*-!!$k"!*-!errk)1crqM$krrS`q[rk-1crqM$krrS`d2rP!0IrqJ$XrrS
!q[rk!2VrqJ$XrrS!q[rk!0$rJ3#6!!!qJ3#6!0IrqL$XrrS`q[rk-2VrqM$XrrS
`q[rk-0$rj3$ArrS!l2rk!2VrqJ$krrS!l2rk!2VrqJ$3ri%!N`!!2S%!N`$ArrS
Jl2rk-2VrqM$krrS`l2rk-2VrqM$3rq8!errk!1crqJ$krrS!q[rk!1crqJ$krrS
!d2q"!*-!!$k"!*-!errk)1crqM$krrS`q[rk-1crqM$krrS`d2rP!0IrqJ$XrrS
!q[rk!2VrqJ$XrrS!q[rk!0$rJ3#6!!!qJ3#6!0IrqL$XrrS`q[rk-2VrqM$XrrS
`q[rk-0$rj3$ArrS!l2rk!2VrqJ$krrS!l2rk!2VrqJ$3ri%!N`!!2S%!N`$ArrS
Jl2rk-2VrqM$krrS`l2rk-2VrqM$3rq8!errk!1crqJ$krrS!q[rk!1crqJ$krrS
!d2q"!*-!!%D"!)`!h[rk)1crqL$krrSJq[rk)2VrqK$krrSJq[rk)0Ire`$HrrS
!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS!erq"!)`!!%D"!)`!h[rk)1crqL$krrS
Jq[rk)2VrqK$krrSJq[rk)0Ire`$HrrS!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS
!erq"!)`!!%D"!)`!h[rk)1crqL$krrSJq[rk)2VrqK$krrSJq[rk)0Ire`$HrrS
!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS!erq"!)`!!%D"!)`!h[rk)1crqL$krrS
Jq[rk)2VrqK$krrSJq[rk)0Ire`$HrrS!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS
!erq"!)`!!%D"!)`!h[rk)1crqL$krrSJq[rk)2VrqK$krrSJq[rk)0Ire`$HrrS
!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS!erq"!)`!!%D"!)`!h[rk)1crqL$krrS
Jq[rk)2VrqK$krrSJq[rk)0Ire`$HrrS!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS
!erq"!)`!!%D"!)`!h[rk)1crqL$krrSJq[rk)2VrqK$krrSJq[rk)0Ire`$HrrS
!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS!erq"!)`!!%D"!)8!jIrk-1crqM$krrS
`q[rk-2VrqM$krrS`q[rk-0lrb3$PrrS!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS
!h[q"!)8!!%D"!)8!jIrk-1crqM$krrS`q[rk-2VrqM$krrS`q[rk-0lrb3$PrrS
!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS!h[q"!)8!!%D"!)8!jIrk-1crqM$krrS
`q[rk-2VrqM$krrS`q[rk-0lrb3$PrrS!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS
!h[q"!)8!!%D"!)8!jIrk-1crqM$krrS`q[rk-2VrqM$krrS`q[rk-0lrb3$PrrS
!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS!h[q"!)8!!%D"!)8!jIrk-1crqM$krrS
`q[rk-2VrqM$krrS`q[rk-0lrb3$PrrS!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS
!h[q"!)8!!%D"!)8!jIrk-1crqM$krrS`q[rk-2VrqM$krrS`q[rk-0lrb3$PrrS
!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS!h[q"!)8!!%D"!)8!jIrk-1crqM$krrS
`q[rk-2VrqM$krrS`q[rk-0lrb3$PrrS!l2rk!2VrqJ$krrS!q[rk!2VrqJ$krrS
!h[q"!)8!!%+"!)%!rJ$XrrSJqM$k%2VrqL$k32SJq[rk)2T!qL$krrSJqN$k)1A
rZ`$Xrq`!q[rX!2Vrl!$krq`!jIq"!)%!rJ!!3S%!J3$q!1crqL$k-2S3q[rk)2T
!qL$krrSJqN$k)2VrqL$k32SJjIql!1crl!$krq`!q[rX!2Vrl!$Pri%!J3$q!!"
#J3#"!2i!l2rk)2S`qK$krrSJqN$k)2VrqL$k32SJq[rk)2T!qL$PrlX!l2rX!2V
rl!$krq`!q[rX!1ArJ3#"!2i!!%+"!)%!rJ$XrrSJqM$k%2VrqL$k32SJq[rk)2T
!qL$krrSJqN$k)1ArZ`$Xrq`!q[rX!2Vrl!$krq`!jIq"!)%!rJ!!3S%!J3$q!1c
rqL$k-2S3q[rk)2T!qL$krrSJqN$k)2VrqL$k32SJjIql!1crl!$krq`!q[rX!2V
rl!$Pri%!J3$q!!"#J3#"!2i!l2rk)2S`qK$krrSJqN$k)2VrqL$k32SJq[rk)2T
!qL$PrlX!l2rX!2Vrl!$krq`!q[rX!1ArJ3#"!2i!!%+"!)%!rJ$XrrSJqM$k%2V
rqL$k32SJq[rk)2T!qL$krrSJqN$k)1ArZ`$Xrq`!q[rX!2Vrl!$krq`!jIq"!)%
!rJ!!&S%!J3$h!)(rpIqY!)(rpIq"!)%!p`!!&S%!J3$h!)(rpIqY!)(rpIq"!)%
!p`!!&S%!J3$h!)(rpIqY!)(rpIq"!)%!p`!!&S%!J3$h!)(rpIqY!)(rpIq"!)%
!p`!!&S%!J3$h!)(rpIqY!)(rpIq"!)%!p`!!&S%!J3$h!)(rpIqY!)(rpIq"!)%
!p`!!&S%!J3$h!)(rpIqY!)(rpIq"!)%!p`!!%S%!J3$`!)2rR`#$ri%!J3$`!!!
5J3#"!2!!JrqI!)2rJ3#"!2!!!"+"!)%!m!#$rjm!Jrq"!)%!m!!!%S%!J3$`!)2
rR`#$ri%!J3$`!!!5J3#"!2!!JrqI!)2rJ3#"!2!!!"+"!)%!m!#$rjm!Jrq"!)%
!m!!!%S%!J3$`!)2rR`#$ri%!J3$`!!!SJ3#"!1N!errk!2VrqJ$3rj%!errk!2V
rqJ$3ri%!j`$krrS!q[qB!!!SJ3#"!1N!errk!2VrqJ$3rj%!errk!2VrqJ$3ri%
!j`$krrS!q[qB!!!SJ3#"!1N!errk!2VrqJ$3rj%!errk!2VrqJ$3ri%!j`$krrS
!q[qB!!!SJ3#"!1N!errk!2VrqJ$3rj%!errk!2VrqJ$3ri%!j`$krrS!q[qB!!!
SJ3#"!1N!errk!2VrqJ$3rj%!errk!2VrqJ$3ri%!j`$krrS!q[qB!!!SJ3#"!1N
!errk!2VrqJ$3rj%!errk!2VrqJ$3ri%!j`$krrS!q[qB!!!SJ3#"!1N!errk!2V
rqJ$3rj%!errk!2VrqJ$3ri%!j`$krrS!q[qB!!!SJ3#"!1)!h[rk!2VrqJ$Ari-
!h[rk!2VrqJ$Ari%!i!$krrS!q[qB!!""J3#"!1)!h[rk!2VrqJ$Arr!!qrrf!!(
rrkF!h[rk!2VrqJ$Arr!!qmcf!!(-c)3!q[rk!2VraJ$lC[B!!@CQjJ!!3B%!J3$
L!0lrqJ$krrS!err`!2crpJ!"rrqQ!0lrqJ$krrS!err`!2c-pJ!"c-b$!2VrqJ$
krmB!r'Ef!!&QCZ8!!$k"!)%!iJ$HrrS!q[rk!0Irm3!!rr)!r[qQ!0lrqJ$krrS
!erra!!$-mJ$qc)-!q[rk!2Vra`!!C[)!rQEP!!"(J3#"!1)!h[rk!2VrqJ$Arr%
!!2rc!!2r!2rrTJ$HrrS!q[rk!0Irm3!!c2-!!m`!c-b$!2VrqJ$krmF!!'Ec!!0
Q!'CQj3!!4i%!J3$L!0lrqJ$krrS!erra!2hrp`!$r`$rrk8!h[rk!2VrqJ$Arr%
!rFch!!2-!-c-JJ$krrS!q[r(!2eQp`!$CJ"QCZ3!!&Q"!)%!iJ$HrrS!q[rk!0I
rmJ!&rrm!!2rrq3!%r`!!rrqP!0lrqJ$krrS!errb!!A-c!!!c-cj!!6-!!$-c))
!q[rk!2Vrb!!&CQB!!'CQq3!%CJ!!CQEN!!"@J3#"!0X!mrrk!0lrqJ$XrqF!!Ir
rqJ!!rri!!rrr!2qJ!22rqJ$HrrS!l2rR!!(-c2S!!-cq!!2-c!$-NJ$krpi!q[r
5!!&QC[S!!'Eq!!0QCJ"QjJ!!3B%!J3$E!22rqJ$HrrS!l2rR!!(rrrX!qIqI!22
rqJ$HrrS!l2rR!!(-c2X!qFb4!2VrhJ$krp)!!@CQq`$jCZ8!!%'"!)%!f`$crrS
!h[rk!1crk!$qrrF!!IrrR3$crrS!h[rk!1crk!$qc2F!!Fc-M`$krpi!q[r6!2j
Qp`!"CQEM!!"3J3#"!0X!mrrk!0lrqJ$Xrqd!!2rp!!(rrrB!!IrrR3$crrS!h[r
k!1crl3!!c2d!!Fc-pJ!"c-b2!2VrhJ$krpJ!!'Ep!!&QC[B!!@CQi`!!A)%!J3$
E!22rqJ$HrrS!l2rY!!Arr`!!rrrp!!(rrr`!r[qG!22rqJ$HrrS!l2rY!!A-c!!
!c-cp!!(-c2`!rXb2!2VrhJ$krpJ!"@CQ!!"QC[d!!@CQr!$qCZ-!!%f"!)%!f`$
crrS!h[rk!1crl!$prr`!!Irrr3$mrji!mrrk!0lrqJ$Xrq`!rFcm!!(-c2d!r-b
3!!$krpi!q[rA!2eQr!!"CQEp!2aQj!!!+S%!J3$E!22rqJ$HrrS!l2q"!28!mrr
k!0lrqJ$Xri%!j`$krpi!q[qQ!!!UJ3#"!03!q[rc!1crm`$cri%!j`$krr-!l2r
c!22rJ3$J!22rl!$crkB!!#U"!)%!e!$krr-!l2rc!22rJ3$R!2Vrm`$Xrr-!mrq
"!1!!mrrX!22rTJ!!+S%!J3$8!2Vrm`$Xrr-!mrq"!1F!q[rc!1crm`$cri%!i!$
crq`!mrqQ!!!UJ3#"!03!q[rc!1crm`$cri%!j`$krr-!l2rc!22rJ3$J!22rl!$
crkB!!#U"!)%!e!$krr-!l2rc!22rJ3$R!2Vrm`$Xrr-!mrq"!1!!mrrX!22rTJ!
!+S%!J3$8!2Vrm`$Xrr-!mrq"!1F!q[rc!1crm`$cri%!i!$crq`!mrqQ!!!UJ3#
"!03!q[rc!1crm`$cri%!j`$krr-!l2rc!22rJ3$J!22rl!$crkB!!$k"!)%!c3$
krpi!mrrc!2crh!$qrri!r[qD!2VrhJ$crr-!r-cF!2l-rJ$qc*-!h[rP!2aQh!$
qC[i!rQEZ!!"%J3#"!-d!q[rH!22rmJ$qrpS!!Irrr3!"rrqD!2VrhJ$crr)!rXc
D!!(-c2d!!Fc-N`$Hrq3!rQED!!&QC[d!!@CQlJ!!8i%!J3$0!2VrhJ$crr)!!Ir
rkJ$qrr3!!Irrr3!"rrqC!2VrhJ$crr)!!Fc-kJ$qc23!!Fc-r3!"c-b5!0lrj!!
"CQEU!2jQp!!"CQEp!!&QCZd!!&D"!)%!c3$krpi!mrrb!!(rrqS!!Irrm`!"rrr
p!!(rrjN!q[rH!22rmJ!"c-cU!!(-c2-!!Fc-r3!"c-b5!0lrj!!"CQEU!!&QC[-
!!@CQr3!"CQEY!!"6J3#"!-d!q[rH!22rm`$qrqS!!Irrm`!"rrrp!!(rrjN!q[r
H!22rm`$qc1S!!Fc-m`!"c-cp!!(-c*)!h[rP!2jQkJ!"CQEc!!&QC[d!!@CQl3!
![)%!J3$0!2VrhJ$crr-!!IrrrJ$qr`%!!2lrr!$mr`!!r2rp!!6rr`$rrrd!!Ir
rr3!"rrrp!2hr!3!!r[m$!!$rrkS!q[rH!22rm`!"c-cq!2l-!3!!rXcm!2c-!!$
mc2d!"-c-!-c-r3!"c-cp!!(-c2d!rF`"!!$qc!-!!-c-S`$Hrq8!!@CQrJ$qCJ%
!!2jQr!$mCJ!!r'Ep!!4QCJ"QC[d!!@CQr3!"CQEp!2eQ!3!!rQB$!!"QC[i!!0U
"!)%!c3$krpi!mrrc!!crr`!!r`$rr`$r!2rrr3!*rrm!!2rr!!$rrrd!"Irr!!$
rrrd!!Irrr3!"rrrp!!Err`!!rrm!r[m!!2lrUJ$krpi!mrrc!!c-c!!!c!$-c!$
-!-c-r3!*c-`!!-c-!!$-c2d!"Fc-!!$-c2d!!Fc-r3!"c-cp!!E-c!!!c-`!rX`
!!2l-S`$Hrq8!$'CQ!!"Q!'CQ!'B!CQEp!!PQCJ!!CQB!!'CQr3!&CQB!!'CQr3!
"CQEp!!&QC[d!"QCQ!!"QCJ$qCJ!!rQEq!!$4J3#"!-B!q[rX!22rl3$qrrd!r[m
$!!$rrrd!r[m'!!$r!!$rrrd!"Irr!!$rrrd!!Irrr3!"rrrq!!(rrri!r[m!!2l
r!J$rrk-!q[rX!22rl3$qc2d!rX`$!!$-c2d!rX`'!!$-!!$-c2d!"Fc-!!$-c2d
!!Fc-r3!"c-cq!!(-c2i!rX`!!2l-!J$-c*`!l2rI!2jQr3$qCJ-!!'CQr3$qCJB
!!'B!!'CQr3!&CQB!!'CQr3!"CQEp!!&QC[i!!@CQrJ$qCJ!!rQB#!'CQrJ!![)%
!J3$'!2Vrl!$crqd!r[rq!2lrrJ!"rrrm!2lrr3!"rrrq!!2rr`!!r[rp!!(rrrd
!#Irr!!$rr`!!rrrp!!(rrjm!q[rX!22rl3$qc2i!rXcq!!(-c2`!rXcp!!(-c2i
!!mc-!!$qc2d!!Fc-r3!*c-`!!-c-!!$-c2d!!Fc-Q!$Xrpm!rQEq!2jQrJ!"CQE
m!2jQr3!"CQEq!!0QCJ!!rQEp!!&QC[d!#@CQ!!"QCJ!!CQEp!!&QC[S!!-+"!)%
!aJ$krq`!mrrY!!(rrrd!r[m$!!$rrrd!![m!!2lr%`!!rrm!!2m!rrm!!2rr!2m
!!2rrr3!"rrrq!2hrr!$qrjm!q[rX!22rl3!"c-cp!2l-!`!!c-cp!!,-!!$qc"-
!!-c-!!$-!-c-!!$-c!$-!!$-c2d!!Fc-rJ$pc2`!rXbB!1crh`!"CQEp!2jQ!`!
!CQEp!!*Q!!$qCK-!!'CQ!!"Q!'CQ!!"QCJ"Q!!"QC[d!!@CQrJ$pC[`!rQEk!!$
,J3#"!-B!q[rX!22rlJ$qrrd!!IrrrJ!'rrm!r`$rrri!#Irr!!$rr`$r!!$jr`i
!!2rr!2m!!2rr!2m!rrrq!!Arr`!!rrqH!2Vrl!$crqi!rXcp!!(-c2i!"Xc-!-`
!c-cq!!R-c!!!c-`!c!!!qF`1!!$-c!$-!!$-c!$-!-c-rJ!&c-`!!-c-P`$Xrq!
!rQEp!!&QC[i!"QCQ!'B!CQEq!!PQCJ!!CQB!CJ!!q@B1!!"QCJ"Q!!"QCJ"Q!'C
QrJ!&CQB!!'CQq3!!SB%!J3$'!2Vrl!$crqm!r2m"!!$qrri!r[rq!2crrJ$qrri
!r[m!!2lrrJ$qrri!r[rq!2hrrJ$qrji!q[rX!22rl`$mc!%!!2l-rJ$qc2i!r-c
q!2l-rJ$qc!!!rXcq!2l-rJ$qc2i!rFcq!2l-P`$Xrq%!r'B"!!$qC[i!rQEq!2a
QrJ$qC[i!rQB!!2jQrJ$qC[i!rQEq!2eQrJ$qC[N!!"k"!)%!aJ$krq`!mrq"!-X
!q[rX!22rJ3$%!1crQ!!!(S%!J3$'!2Vrl!$cri%!b`$krq`!mrq"!-3!l2qB!!!
8J3#"!,m!jIq"!,d!jIq"!)%![`!!&)%!J3#r!1ArJ3#p!1ArJ3#"!,m!!"5"!)%
![`$Pri%![3$Pri%!J3#r!!!8J3#"!,m!jIq"!,d!jIq"!)%![`!!&)%!J3#r!1A
rJ3#p!1ArJ3#"!,m!!"5"!)%![`$Pri%![3$Pri%!J3#r!!!8J3#"!,m!jIq"!,d
!jIq"!)%![`!!&)%!J3#i!22rJ3#[!22rJ3#"!,J!!"5"!)%!Z!$cri%!V`$cri%
!J3#i!!!8J3#"!,J!mrq"!+m!mrq"!)%!Z!!!&)%!J3#i!22rJ3#[!22rJ3#"!,J
!!"5"!)%!Z!$cri%!V`$cri%!J3#i!!!8J3#"!,J!mrq"!+m!mrq"!)%!Z!!!&)%
!J3#i!22rJ3#[!22rJ3#"!,J!!!k"!)%!J3#"!)%!J3#"!!!1J3#"!)%!J3#"!)%
!J3!!$S%!J3#"!)%!J3#"!)%!!!k"!)%!J3#"!)%!J3#"!!!1J3#"!)%!J3#"!)%
!J3!!$S%!J3#"!)%!J3#"!)%!!!k"!)%!J3#"!)%!J3#"!!$r!!!!%3!"#NPZFh4
KE'a@BA)!!!!!!!!!#NP'E'3%!!!!!!!!!!!+3R45G!3!!!!!!!!!!F&+EhNKF'9
QCR"hF'-!!!!"YLbhjJ!!!!!!!!!!!!!!!!!$!!)!!!!!rrrrr`!!!!!!!!#S!!!
!U!!!!+J!!!%3!!3%!2rrrrm!!!!!!!!!%!!!!!`!!!!"!!!"`!)""!$rrrrr!!!
!!!!!!!!!!!!!!!!!K!!!!)!%"!3!!!!!!!!!!!%!!!!%rrrrr`!!!!$rrrrr!!!
!!!!!!!%!!!!"!!!!!3!!!'!!!!"N!!!!I!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!
!!3!!!!!!!!!!!J!!#J!"!!!!!!!#!!!!!%S!4J"$BA*LEfj-D@)!4QPZC%C[E'4
PFJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(`)!UD6iIrmN!!"!!L8)Iq`I(mEH$J
!rrq`!3!m1!$rrj!!!3!iU"m!!#`!!!4!JJ"3U(m!))#I!!+)[`!'1-%!2$MK!$K
)!!"0J%%!&(aJ"c9"JJ!B1!!!!T!!!3!iU"m!#,!"!$`iB!!!U!%!2,!I!##!!3!
iN!!I!#+`I`!HJ!%!@$JK!&"m#!1QJq(rr%k!!##"JJ!!N!""!"5!$!!!J%`!"(`
*!kC1J!3J!!!!!!!!!!!-!!!!#R9dDF3#!AIX!!!!!$[81p3!!!!!!8!"3!!4![m
-!2rq!!!!5!!!!%J!!!!!!!!"3!&!!!!!!!#K!I)!'%G,6di!!!!!!!!!!!&!!8"
(FSP`D+pLDJ!H!!%!#S!"J!&rrhrr!*S!!!$rK3!!!!!!!8!"3!!!!!3!!!!!!%J
!!!")!!!!%!!J!!3!#!!!!#!!IJV-!(iY$!!!!!!"3!&!!!!!!!&!!8!!3!!8J3#
"!)%!J3#"!)%!J3#"!)%!J3!!&)%!J3#"!)%!J3#"!)%!J3#"!)%!!"5"!)%!J3#
"!)%!J3#"!)%!J3#"!!!8J3#"!)%!J3#"!)%!J3#"!)%!J3!!&)%!J3#"!)%!J3#
"!)%!J3#"!)%!!"5"!)%!J3#"!)%!J3#"!)%!J3#"!!!8J3#"!)%!J3#"!)%!J3#
"!)%!J3!!&)%!J3#"!)%!J3#"!)%!J3#"!)%!!"5"!)%!J3#"!)%!J3#"!)%!J3#
"!!!8J3#"!)%!J3#"!)%!J3#"!)%!J3!!'S%!J3#"!+X!lIq"!)%!e3$Yri%!J3#
"!+X!!"U"!)%!J3#V!1hrJ3#"!08!lIq"!)%!J3#V!!!DJ3#"!)%!U`$Yri%!J3$
9!1hrJ3#"!)%!U`!!'S%!J3#"!+X!lIq"!)%!e3$Yri%!J3#"!+X!!"U"!)%!J3#
V!1hrJ3#"!08!lIq"!)%!J3#V!!!DJ3#"!)%!U`$Yri%!J3$9!1hrJ3#"!)%!U`!
!'S%!J3#"!+X!lIq"!)%!e3$Yri%!J3#"!+X!!"U"!)%!J3#V!1hrJ3#"!08!lIq
"!)%!J3#V!!!DJ3#"!)%!U`$Yri%!J3$9!1hrJ3#"!)%!U`!!'S%!J3#"!+X!lIq
"!)%!e3$Yri%!J3#"!+X!!"U"!)%!J3#e!0RrJ3#"!1N!fIq"!)%!J3#e!!!DJ3#
"!)%!Y3$Cri%!J3$T!0RrJ3#"!)%!Y3!!'S%!J3#"!,8!fIq"!)%!k3$Cri%!J3#
"!,8!!"U"!)%!J3#e!0RrJ3#"!1N!fIq"!)%!J3#e!!!DJ3#"!)%!Y3$Cri%!J3$
T!0RrJ3#"!)%!Y3!!'S%!J3#"!,8!fIq"!)%!k3$Cri%!J3#"!,8!!"U"!)%!J3#
e!0RrJ3#"!1N!fIq"!)%!J3#e!!!DJ3#"!)%!Y3$Cri%!J3$T!0RrJ3#"!)%!Y3!
!'S%!J3#"!,8!fIq"!)%!k3$Cri%!J3#"!,8!!"U"!)%!J3#e!0RrJ3#"!1N!fIq
"!)%!J3#e!!!DJ3#"!)%![`$&ri%!J3$p!-ArJ3#"!)%![`!!'S%!J3#"!,m!aIq
"!)%!r3$&ri%!J3#"!,m!!"U"!)%!J3#r!-ArJ3#"!2d!aIq"!)%!J3#r!!!DJ3#
"!)%![`$&ri%!J3$p!-ArJ3#"!)%![`!!'S%!J3#"!,m!aIq"!)%!r3$&ri%!J3#
"!,m!!"U"!)%!J3#r!-ArJ3#"!2d!aIq"!)%!J3#r!!!DJ3#"!)%![`$&ri%!J3$
p!-ArJ3#"!)%![`!!'S%!J3#"!,m!aIq"!)%!r3$&ri%!J3#"!,m!!"U"!)%!J3#
r!-ArJ3#"!2d!aIq"!)%!J3#r!!!DJ3#"!)%![`$&ri%!J3$p!-ArJ3#"!)%![`!
!')%!J3#"!-N!XIq"!*%!XIq"!)%!J3$*!!!BJ3#"!)%!b3#ari%!N3#ari%!J3#
"!-N!!"L"!)%!J3$*!,(rJ3#4!,(rJ3#"!)%!b3!!')%!J3#"!-N!XIq"!*%!XIq
"!)%!J3$*!!!BJ3#"!)%!b3#ari%!N3#ari%!J3#"!-N!!"L"!)%!J3$*!,(rJ3#
4!,(rJ3#"!)%!b3!!')%!J3#"!-N!XIq"!*%!XIq"!)%!J3$*!!!BJ3#"!)%!b3#
ari%!N3#ari%!J3#"!-N!!"L"!)%!J3$*!,(rJ3#4!,(rJ3#"!)%!b3!!')%!J3#
"!-N!XIq"!*%!XIq"!)%!J3$*!!!BJ3#"!)%!d`#Gri%!T3#Gri%!J3#"!0-!!"L
"!)%!J3$6!*hrJ3#P!*hrJ3#"!)%!d`!!')%!J3#"!0-!RIq"!+8!RIq"!)%!J3$
6!!!BJ3#"!)%!d`#Gri%!T3#Gri%!J3#"!0-!!"L"!)%!J3$6!*hrJ3#P!*hrJ3#
"!)%!d`!!')%!J3#"!0-!RIq"!+8!RIq"!)%!J3$6!!!BJ3#"!)%!d`#Gri%!T3#
Gri%!J3#"!0-!!"L"!)%!J3$6!*hrJ3#P!*hrJ3#"!)%!d`!!')%!J3#"!0-!RIq
"!+8!RIq"!)%!J3$6!!!BJ3#"!)%!d`#Gri%!T3#Gri%!J3#"!0-!!"L"!)%!J3$
G!)RrJ3#j!)RrJ3#"!)%!h3!!')%!J3#"!0d!LIq"!,N!LIq"!)%!J3$G!!!BJ3#
"!)%!h3#*ri%!Z3#*ri%!J3#"!0d!!"L"!)%!J3$G!)RrJ3#j!)RrJ3#"!)%!h3!
!')%!J3#"!0d!LIq"!,N!LIq"!)%!J3$G!!!BJ3#"!)%!h3#*ri%!Z3#*ri%!J3#
"!0d!!"L"!)%!J3$G!)RrJ3#j!)RrJ3#"!)%!h3!!')%!J3#"!0d!LIq"!,N!LIq
"!)%!J3$G!!!BJ3#"!)%!h3#*ri%!Z3#*ri%!J3#"!0d!!"L"!)%!J3$G!)RrJ3#
j!)RrJ3#"!)%!h3!!()%!J3#"!1F!JIreri%!c3#"rrArJ3#"!)%!j`!!()%!J3#
"!1F!JIreri%!c3#"rrArJ3#"!)%!j`!!()%!J3#"!1F!JIreri%!c3#"rrArJ3#
"!)%!j`!!()%!J3#"!1F!JIreri%!c3#"rrArJ3#"!)%!j`!!()%!J3#"!1F!JIr
eri%!c3#"rrArJ3#"!)%!j`!!()%!J3#"!1F!JIreri%!c3#"rrArJ3#"!)%!j`!
!()%!J3#"!1F!JIreri%!c3#"rrArJ3#"!)%!j`!!()%!J3#"!1F!JIreri%!c3#
"rrArJ3#"!)%!j`!!()%!J3#"!1F!JIreri%!c3#"rrArJ3#"!)%!j`!!()%!J3#
"!1F!JIreri%!c3#"rrArJ3#"!)%!j`!!()%!J3#"!2%!JIrKri%!i3#"rq(rJ3#
"!)%!m3!!()%!J3#"!2%!JIrKri%!i3#"rq(rJ3#"!)%!m3!!()%!J3#"!2%!JIr
Kri%!i3#"rq(rJ3#"!)%!m3!!()%!J3#"!2%!JIrKri%!i3#"rq(rJ3#"!)%!m3!
!()%!J3#"!2%!JIrKri%!i3#"rq(rJ3#"!)%!m3!!()%!J3#"!2%!JIrKri%!i3#
"rq(rJ3#"!)%!m3!!()%!J3#"!2%!JIrKri%!i3#"rq(rJ3#"!)%!m3!!()%!J3#
"!2%!JIrKri%!i3#"rq(rJ3#"!)%!m3!!()%!J3#"!2%!JIrKri%!i3#"rq(rJ3#
"!)%!m3!!()%!J3#"!2%!JIrKri%!i3#"rq(rJ3#"!)%!m3!!3)%!J3#"!2X!irr
h%2Irpa$hrrFJpc$h%2Irpb$Y-2FJirq"!28!irrh!2Irp`$hrq-!prrC!12rJ3#
"!)%!q`!!3)%!J3#"!2X!irrh%2Irpa$hrrFJpc$h%2Irpb$Y-2FJirq"!28!irr
h!2Irp`$hrq-!prrC!12rJ3#"!)%!q`!!3)%!J3#"!2X!irrh%2Irpa$hrrFJpc$
h%2Irpb$Y-2FJirq"!28!irrh!2Irp`$hrq-!prrC!12rJ3#"!)%!q`!!3)%!J3#
"!2X!irrh%2Irpa$hrrFJpc$h%2Irpb$Y-2FJirq"!28!irrh!2Irp`$hrq-!prr
C!12rJ3#"!)%!q`!!3S%!J3$3!2IrYJ$MrrF3prrh%2Irpb$h-2F3prrh)1d`pb$
Mri%!p3$MrrF!prrh!2Iri`$hrpN!irq"!)%!J3$l!!"'J3#"!0!!!2rj!!$rYJ$
MrrF3prrh%2Irpb$h-2F3prrh)1d`pb$Mri%!p3$MrrF!prrh!2Iri`$hrpN!irq
"!)%!J3$l!!"'J3#"!0!!!2rj!!$rYJ$MrrF3prrh%2Irpb$h-2F3prrh)1d`pb$
Mri%!p3$MrrF!prrh!2Iri`$hrpN!irq"!)%!J3$l!!"'J3#"!0!!!2rj!!$rYJ$
MrrF3prrh%2Irpb$h-2F3prrh)1d`pb$Mri%!p3$MrrF!prrh!2Iri`$hrpN!irq
"!)%!J3$l!!"'J3#"!0!!!2rj!!$rYJ$MrrF3prrh%2Irpb$h-2F3prrh)1d`pb$
Mri%!p3$MrrF!prrh!2Iri`$hrpN!irq"!)%!J3$l!!"'J3#"!0!!!2rj!!$rYJ$
MrrF3prrh%2Irpb$h-2F3prrh)1d`pb$Mri%!p3$MrrF!prrh!2Iri`$hrpN!irq
"!)%!J3$l!!"#J3#"!0!!!2rj!!$r`!$CrrFJprrh)2Irpc$MrrG!lIrh-0RrL3$
CrrF!prrh!2Irp`$MrrF!lIrh!0RrJ3#"!)8!!%+"!)%!d!!!rrN!!2r!!0Rrpb$
hrrFJprrh-12rpd$YrrF`fIq*!0Rrp`$hrrF!prrh!12rp`$YrrF!fIq"!)%!K3!
!3S%!J3$3!!$rq3!!rm!!fIrh)2Irpb$hrrF`irrh31hrpc$CriN!fIrh!2Irp`$
hrrF!irrh!1hrp`$Cri%!J3#&!!!qJ3#"!0!!prr!!0Rrpb$hrrFJprrh-12rpd$
YrrF`fIq*!0Rrp`$hrrF!prrh!12rp`$YrrF!fIq"!)%!K3!!1S%!J3#&!0Rrpb$
hrrFJprrh-12rpd$YrrF`fIq*!0Rrp`$hrrF!prrh!12rp`$YrrF!fIq"!)%!K3!
!1S%!J3#&!0Rrpb$hrrFJprrh-12rpd$YrrF`fIq*!0Rrp`$hrrF!prrh!12rp`$
YrrF!fIq"!)%!K3!!1S%!J3#&!0Rrpb$hrrFJprrh-12rpd$YrrF`fIq*!0Rrp`$
hrrF!prrh!12rp`$YrrF!fIq"!)%!K3!!1S%!J3#&!0Rrpb$hrrFJprrh-12rpd$
YrrF`fIq*!0Rrp`$hrrF!prrh!12rp`$YrrF!fIq"!)%!K3!!4B%!X!!$rrm!rri
!!2q"!0i!fIrh)2Irpb$hrrF`irrh31lrpM$CriN!fIrh!2Irp`$hrrF!irrh!1l
rpJ$Cri%!J3#&!!!qJ3#k!0hrJ3$`!0Rrpb$hrrFJprrh-12rpd$[rr8`fIq*!0R
rp`$hrrF!prrh!12rp`$[rr8!fIq"!)%!K3!!4B%!ZJ!!rrN!lrm"!!$crpS!prq
b!-rrpb$hrrFJprrh)12rpc$h31d`crqG!-rrp`$hrrF!prrh!12rf3$2ri%!J3#
2!!"@J3#k!!,r!!$Yr`B!!2rr!!$rrJ!%r`$r!!$hrpm!!2rj!!$rXJ$2rrFJprr
h)2Irpb$MrrF`pd$Y--rrR3$2rrF!prrh!2Irp`$MrpN!crq"!)%!M`!!BS%!ZJ!
(r`!!r`$r!!$br`B!!2rr!!$rrJ!&r`$r!!$rrJ!!rrd!!2rI!!$rq3!!rl)!crr
h)2Irpb$hrrFJirrh-2G!lM$1rjd!crrh!2Irp`$hrrF!irrD!-lrJ3#"!)m!!'+
"!,S!"rm!!2m!r`!!m[m'!!$rr`!!rri!"Im!r`!!rri!!2rp!!$rh`!!rrN!!2q
b!-rrpb$hrrFJprrh)12rpc$h31m`cIqG!-rrp`$hrrF!prrh!12rf`$0ri%!J3#
2!!"LJ3#k!!Ir!!$r!2m!!2,r"J!!rrm!!2rq!!Ar!2m!!2rq!!$rr3!!rpm!!2r
j!!$rXJ$2rrFJprrh)2Irpb$MrrF`pd$`--crR3$2rrF!prrh!2Irp`$Mrp`!c2q
"!)%!M`!!CB%!ZJ!+r`!!r`$r!!$rr`$er`B!!2rr!!$rrJ!&r`$r!!$rrJ!!rrd
!!2rI!!$rq3!!rl)!crrh)2Irpb$hrrFJirrh-2G!mM$+rjd!crrh!2Irp`$hrrF
!irrH!-VrJ3#"!)m!!'@"!,S!#[m!!2m!r`!!rrm!pIm'!!$rr`!!rri!"Im!r`!
!rri!!2rp!!$rh`!!rrN!!2qb!-rrpb$hrrFJprrh)12rpc$h32!`c2qG!-rrp`$
hrrF!prrh!12rh!$-ri%!J3#2!!"PJ3#k!!Vr!!$r!2m!!2rr!2Ar"J!!rrm!!2r
q!!Ar!2m!!2rq!!$rr3!!rpm!!2rj!!$rXJ$2rrFJprrh)2Irpb$MrrF`pd$Z--l
rR3$2rrF!prrh!2Irp`$MrpS!c[q"!)%!M`!!8)%!ZJ$hr`!!k2m#!!$rrJ!!rrd
!!2rI!!$rq3!!rl)!crrh)2Irpb$hrrFJirrh-2G!lM$1rjd!crrh!2Irp`$hrrF
!irrD!-lrJ3#"!)m!!%f"!,F!"rm!r`!!rrm!m[rq!22rr3!!rpm!prqb!-rrpb$
hrrFJprrh)12rpc$h31d`crqG!-rrp`$hrrF!prrh!12rf3$2ri%!J3#2!!"!J3#
h!2(rlJ$hrj!!!-Arpc$hrrF`prrh-12rpd$ZrrB`aIqa!-Arp`$hrrF!prrh!12
rp`$ZrrB!aIq"!)%!Q3!!2i%!U`!"rrq"!2%!aIrh-2Irpc$hrrF`irrh31hrpc$
&rl%!aIrh!2Irp`$hrrF!irrh!1hrp`$&ri%!J3#C!!!kJ3#"!*N!aIrh-2Irpc$
hrrF`irrh31hrpc$&rl%!aIrh!2Irp`$hrrF!irrh!1hrp`$&ri%!J3#C!!!kJ3#
"!*N!aIrh-2Irpc$hrrF`irrh31hrpc$&rl%!aIrh!2Irp`$hrrF!irrh!1hrp`$
&ri%!J3#C!!!kJ3#"!*N!aIrh-2Irpc$hrrF`irrh31hrpc$&rl%!aIrh!2Irp`$
hrrF!irrh!1hrp`$&ri%!J3#C!!!kJ3#"!*N!aIrh-2Irpc$hrrF`irrh31hrpc$
&rl%!aIrh!2Irp`$hrrF!irrh!1hrp`$&ri%!J3#C!!!kJ3#"!*N!aIrh-2Irpc$
hrrF`irrh31hrpc$&rl%!aIrh!2Irp`$hrrF!irrh!1hrp`$&ri%!J3#C!!!kJ3#
"!*N!aIrh-2Irpc$hrrF`irrh31hrpc$&rl%!aIrh!2Irp`$hrrF!irrh!1hrp`$
&ri%!J3#C!!!kJ3#"!*N!aIrh-2Irpc$hrrF`irrh31hrpc$&rl%!aIrh!2Irp`$
hrrF!irrh!1hrp`$&ri%!J3#C!!!kJ3#"!*N!aIrh-2Irpc$hrrF`irrh31hrpc$
&rl%!aIrh!2Irp`$hrrF!irrh!1hrp`$&ri%!J3#C!!!fJ3#"!+-!Zrrh)2G!pb$
hrrFJpc$h%2Irpb$Y-2FJZrr&!,[ri`$hrq-!prrC!,[rJ3#"!+-!!$D"!)%!S`#
lrrFJpd$h)2Irpb$h-2F3prrh)1d`pb#lrm8!ZrrM!2Iri`$hrpN!Zrq"!)%!S`!
!0S%!J3#M!,[rpb$h32FJprrh)2F`pa$hrrFJl6$h),[ra3#lrq-!prrM!2Irf3#
lri%!J3#M!!!fJ3#"!+-!Zrrh)2G!pb$hrrFJpc$h%2Irpb$Y-2FJZrr&!,[ri`$
hrq-!prrC!,[rJ3#"!+-!!$D"!)%!S`#lrrFJpd$h)2Irpb$h-2F3prrh)1d`pb#
lrm8!ZrrM!2Iri`$hrpN!Zrq"!)%!S`!!0S%!J3#M!,[rpb$h32FJprrh)2F`pa$
hrrFJl6$h),[ra3#lrq-!prrM!2Irf3#lri%!J3#M!!!fJ3#"!+-!Zrrh)2G!pb$
hrrFJpc$h%2Irpb$Y-2FJZrr&!,[ri`$hrq-!prrC!,[rJ3#"!+-!!$D"!)%!S`#
lrrFJpd$h)2Irpb$h-2F3prrh)1d`pb#lrm8!ZrrM!2Iri`$hrpN!Zrq"!)%!S`!
!0S%!J3#M!,[rpb$h32FJprrh)2F`pa$hrrFJl6$h),[ra3#lrq-!prrM!2Irf3#
lri%!J3#M!!!fJ3#"!+-!Zrrh)2G!pb$hrrFJpc$h%2Irpb$Y-2FJZrr&!,[ri`$
hrq-!prrC!,[rJ3#"!+-!!"U"!)%!V3#"ri(rkIrC!)(rJIrTri%!J3#Y!!!DJ3#
"!+d!JIq"rqRrf3#"ri(rkIq"!)%!V3!!'S%!J3#Y!)(rJIrTrpN!JIq"rqRrJ3#
"!+d!!"U"!)%!V3#"ri(rkIrC!)(rJIrTri%!J3#Y!!!DJ3#"!+d!JIq"rqRrf3#
"ri(rkIq"!)%!V3!!'S%!J3#Y!)(rJIrTrpN!JIq"rqRrJ3#"!+d!!"U"!)%!V3#
"ri(rkIrC!)(rJIrTri%!J3#Y!!!DJ3#"!+d!JIq"rqRrf3#"ri(rkIq"!)%!V3!
!'S%!J3#Y!)(rJIrTrpN!JIq"rqRrJ3#"!+d!!"U"!)%!V3#"ri(rkIrC!)(rJIr
Tri%!J3#Y!!!DJ3#"!,F!JIq"rpArl3#"ri(reIq"!)%!Y`!!'S%!J3#h!)(rJIr
9rqd!JIq"rpArJ3#"!,F!!"U"!)%!Y`#"ri(reIrY!)(rJIr9ri%!J3#h!!!DJ3#
"!,F!JIq"rpArl3#"ri(reIq"!)%!Y`!!'S%!J3#h!)(rJIr9rqd!JIq"rpArJ3#
"!,F!!"U"!)%!Y`#"ri(reIrY!)(rJIr9ri%!J3#h!!!DJ3#"!,F!JIq"rpArl3#
"ri(reIq"!)%!Y`!!'S%!J3#h!)(rJIr9rqd!JIq"rpArJ3#"!,F!!"U"!)%!Y`#
"ri(reIrY!)(rJIr9ri%!J3#h!!!DJ3#"!,F!JIq"rpArl3#"ri(reIq"!)%!Y`!
!2S%!J3#h!,[rpa$MrrFJpd$h)2Irpb$h-2F3prrh)2G!pb#arqd!Zrrh!12ri`$
hrq-!prrM!,(rJ3#"!,F!!$k"!)%!Y`#lrrF3irrh)2G!pb$hrrFJpc$h%2Irpb$
h32FJXIrY!,[rp`$Mrq-!prrM!2Iri`#ari%!J3#h!!!qJ3#"!,F!Zrrh%12rpb$
h32FJprrh)2F`pa$hrrFJpd$h),(rl3#lrrF!irrM!2Iri`$hrq-!XIq"!)%!Y`!
!2S%!J3#h!,[rpa$MrrFJpd$h)2Irpb$h-2F3prrh)2G!pb#arqd!Zrrh!12ri`$
hrq-!prrM!,(rJ3#"!,F!!$k"!)%!Y`#lrrF3irrh)2G!pb$hrrFJpc$h%2Irpb$
h32FJXIrY!,[rp`$Mrq-!prrM!2Iri`#ari%!J3#h!!!qJ3#"!,F!Zrrh%12rpb$
h32FJprrh)2F`pa$hrrFJpd$h),(rl3#lrrF!irrM!2Iri`$hrq-!XIq"!)%!Y`!
!2S%!J3#h!,[rpa$MrrFJpd$h)2Irpb$h-2F3prrh)2G!pb#arqd!Zrrh!12ri`$
hrq-!prrM!,(rJ3#"!,F!!$k"!)%!Y`#lrrF3irrh)2G!pb$hrrFJpc$h%2Irpb$
h32FJXIrY!,[rp`$Mrq-!prrM!2Iri`#ari%!J3#h!!!qJ3#"!,F!Zrrh%12rpb$
h32FJprrh)2F`pa$hrrFJpd$h),(rl3#lrrF!irrM!2Iri`$hrq-!XIq"!)%!Y`!
!2S%!J3#h!,[rpa$MrrFJpd$h)2Irpb$h-2F3prrh)2G!pb#arqd!Zrrh!12ri`$
hrq-!prrM!,(rJ3#"!,F!!%+"!)%!V3$&rrFJirrh-2Irpc$hrrF`irrh-2Irpc#
lrpN!aIrh!12rp`$hrrF!prrh!12rp`$hrrF!Zrq"!)%!V3!!3S%!J3#Y!-Arpb$
MrrF`prrh-2Irpc$MrrF`prrh-,[rf3$&rrF!irrh!2Irp`$hrrF!irrh!2Irp`#
lri%!J3#Y!!"#J3#"!+d!aIrh)12rpc$hrrF`prrh-12rpc$hrrF`ZrrC!-Arp`$
MrrF!prrh!2Irp`$MrrF!prrh!,[rJ3#"!+d!!%+"!)%!V3$&rrFJirrh-2Irpc$
hrrF`irrh-2Irpc#lrpN!aIrh!12rp`$hrrF!prrh!12rp`$hrrF!Zrq"!)%!V3!
!3S%!J3#Y!-Arpb$MrrF`prrh-2Irpc$MrrF`prrh-,[rf3$&rrF!irrh!2Irp`$
hrrF!irrh!2Irp`#lri%!J3#Y!!"#J3#"!+d!aIrh)12rpc$hrrF`prrh-12rpc$
hrrF`ZrrC!-Arp`$MrrF!prrh!2Irp`$MrrF!prrh!,[rJ3#"!+d!!%+"!)%!V3$
&rrFJirrh-2Irpc$hrrF`irrh-2Irpc#lrpN!aIrh!12rp`$hrrF!prrh!12rp`$
hrrF!Zrq"!)%!V3!!3S%!J3#Y!-Arpb$MrrF`prrh-2Irpc$MrrF`prrh-,[rf3$
&rrF!irrh!2Irp`$hrrF!irrh!2Irp`#lri%!J3#Y!!"#J3#"!+d!aIrh)12rpc$
hrrF`prrh-12rpc$hrrF`ZrrC!-Arp`$MrrF!prrh!2Irp`$MrrF!prrh!,[rJ3#
"!+d!!%+"!)%!V3$&rrFJirrh-2Irpc$hrrF`irrh-2Irpc#lrpN!aIrh!12rp`$
hrrF!prrh!12rp`$hrrF!Zrq"!)%!V3!!5S%!J3#M!-rrpb$MrrFJprrh)2Irpb$
hrrF3prrh)2Irpb$&rm8!crrh!12rp`$hrrF!prrh!2Irp`$hrrF!prrh!-ArJ3#
"!+-!!%U"!)%!S`$2rrFJirrh)2Irpb$hrrFJprrh%2Irpb$hrrFJaIr&!-rrp`$
MrrF!prrh!2Irp`$hrrF!prrh!2Irp`$&ri%!J3#M!!"+J3#"!+-!crrh)12rpb$
hrrFJprrh)2Irpa$hrrFJprrh)-Ara3$2rrF!irrh!2Irp`$hrrF!prrh!2Irp`$
hrrF!aIq"!)%!S`!!5S%!J3#M!-rrpb$MrrFJprrh)2Irpb$hrrF3prrh)2Irpb$
&rm8!crrh!12rp`$hrrF!prrh!2Irp`$hrrF!prrh!-ArJ3#"!+-!!%U"!)%!S`$
2rrFJirrh)2Irpb$hrrFJprrh%2Irpb$hrrFJaIr&!-rrp`$MrrF!prrh!2Irp`$
hrrF!prrh!2Irp`$&ri%!J3#M!!"+J3#"!+-!crrh)12rpb$hrrFJprrh)2Irpa$
hrrFJprrh)-Ara3$2rrF!irrh!2Irp`$hrrF!prrh!2Irp`$hrrF!aIq"!)%!S`!
!5S%!J3#M!-rrpb$MrrFJprrh)2Irpb$hrrF3prrh)2Irpb$&rm8!crrh!12rp`$
hrrF!prrh!2Irp`$hrrF!prrh!-ArJ3#"!+-!!%U"!)%!S`$2rrFJirrh)2Irpb$
hrrFJprrh%2Irpb$hrrFJaIr&!-rrp`$MrrF!prrh!2Irp`$hrrF!prrh!2Irp`$
&ri%!J3#M!!"+J3#"!+-!crrh)12rpb$hrrFJprrh)2Irpa$hrrFJprrh)-Ara3$
2rrF!irrh!2Irp`$hrrF!prrh!2Irp`$hrrF!aIq"!)%!S`!!5S%!J3#M!-rrpb$
MrrFJprrh)2Irpb$hrrF3prrh)2Irpb$&rm8!crrh!12rp`$hrrF!prrh!2Irp`$
hrrF!prrh!-ArJ3#"!+-!!%U"!)%!Q3$CrrF`irrh-2Irpc$hrrF`prrh-2Irpc$
hrrF`crqa!0Rrp`$MrrF!prrh!2Irp`$hrrF!prrh!2Irp`$2ri%!J3#C!!"+J3#
"!*N!fIrh-12rpc$hrrF`prrh-2Irpc$hrrF`prrh--rrX3$CrrF!irrh!2Irp`$
hrrF!prrh!2Irp`$hrrF!crq"!)%!Q3!!5S%!J3#C!0Rrpc$MrrF`prrh-2Irpc$
hrrF`prrh-2Irpc$2rl%!fIrh!12rp`$hrrF!prrh!2Irp`$hrrF!prrh!-rrJ3#
"!*N!!%U"!)%!Q3$CrrF`irrh-2Irpc$hrrF`prrh-2Irpc$hrrF`crqa!0Rrp`$
MrrF!prrh!2Irp`$hrrF!prrh!2Irp`$2ri%!J3#C!!"+J3#"!*N!fIrh-12rpc$
hrrF`prrh-2Irpc$hrrF`prrh--rrX3$CrrF!irrh!2Irp`$hrrF!prrh!2Irp`$
hrrF!crq"!)%!Q3!!5S%!J3#C!0Rrpc$MrrF`prrh-2Irpc$hrrF`prrh-2Irpc$
2rl%!fIrh!12rp`$hrrF!prrh!2Irp`$hrrF!prrh!-rrJ3#"!*N!!%U"!)%!Q3$
CrrF`irrh-2Irpc$hrrF`prrh-2Irpc$hrrF`crqa!0Rrp`$MrrF!prrh!2Irp`$
hrrF!prrh!2Irp`$2ri%!J3#C!!"+J3#"!*N!fIrh-12rpc$hrrF`prrh-2Irpc$
hrrF`prrh--rrX3$CrrF!irrh!2Irp`$hrrF!prrh!2Irp`$hrrF!crq"!)%!Q3!
!5S%!J3#C!0Rrpc$MrrF`prrh-2Irpc$hrrF`prrh-2Irpc$2rl%!fIrh!12rp`$
hrrF!prrh!2Irp`$hrrF!prrh!-rrJ3#"!*N!!%U"!)%!Q3$CrrF`irrh-2Irpc$
hrrF`prrh-2Irpc$hrrF`crqa!0Rrp`$MrrF!prrh!2Irp`$hrrF!prrh!2Irp`$
2ri%!J3#C!!"#J3#"!)m!irrh)2F`pa$hrrFJpd$h)2Irpb$h32FJprrh)2G!pb$
Crjd!irrM!2Iri`$hrq-!prrM!0RrJ3#"!)m!!%+"!)%!M`$MrrFJpc$h%2Irpb$
h32FJprrh)2G!pb$hrrFJpd$h)0RrR3$Mrq-!prrM!2Iri`$hrq-!fIq"!)%!M`!
!3S%!J3#2!12rpb$h-2F3prrh)2G!pb$hrrFJpd$h)2Irpb$h32FJfIqG!12ri`$
hrq-!prrM!2Iri`$Cri%!J3#2!!"#J3#"!)m!irrh)2F`pa$hrrFJpd$h)2Irpb$
h32FJprrh)2G!pb$Crjd!irrM!2Iri`$hrq-!prrM!0RrJ3#"!)m!!%+"!)%!M`$
MrrFJpc$h%2Irpb$h32FJprrh)2G!pb$hrrFJpd$h)0RrR3$Mrq-!prrM!2Iri`$
hrq-!fIq"!)%!M`!!3S%!J3#2!12rpb$h-2F3prrh)2G!pb$hrrFJpd$h)2Irpb$
h32FJfIqG!12ri`$hrq-!prrM!2Iri`$Cri%!J3#2!!"#J3#"!)m!irrh)2F`pa$
hrrFJpd$h)2Irpb$h32FJprrh)2G!pb$Crjd!irrM!2Iri`$hrq-!prrM!0RrJ3#
"!)m!!%+"!)%!M`$MrrFJpc$h%2Irpb$h32FJprrh)2G!pb$hrrFJpd$h)0RrR3$
Mrq-!prrM!2Iri`$hrq-!fIq"!)%!M`!!3S%!J3#2!12rpb$h-2F3prrh)2G!pb$
hrrFJpd$h)2Irpb$h32FJfIqG!12ri`$hrq-!prrM!2Iri`$Cri%!J3#2!!"#J3#
"!)m!irrh)2F`pa$hrrFJpd$h)2Irpb$h32FJprrh)2G!pb$Crjd!irrM!2Iri`$
hrq-!prrM!0RrJ3#"!)m!!"D"!)%!K3#"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#
"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#
"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#
"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#
"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#"rlRrL3#"rlRrJ3#"!)8!!"D"!)%!K3#
"rlRrL3#"rlRrJ3#"!)8!!"b"!)%!J3$l!)(rcIq"!28!JIr0ri%!J3#"!2X!!"b
"!)%!J3$l!)(rcIq"!28!JIr0ri%!J3#"!2X!!"b"!)%!J3$l!)(rcIq"!28!JIr
0ri%!J3#"!2X!!"b"!)%!J3$l!)(rcIq"!28!JIr0ri%!J3#"!2X!!"b"!)%!J3$
l!)(rcIq"!28!JIr0ri%!J3#"!2X!!"b"!)%!J3$l!)(rcIq"!28!JIr0ri%!J3#
"!2X!!"b"!)%!J3$l!)(rcIq"!28!JIr0ri%!J3#"!2X!!"b"!)%!J3$l!)(rcIq
"!28!JIr0ri%!J3#"!2X!!"b"!)%!J3$l!)(rcIq"!28!JIr0ri%!J3#"!2X!!"b
"!)%!J3$l!)(rcIq"!28!JIr0ri%!J3#"!2X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$a!-Arp`$hrrF!Zrq
"!1%!aIrh!2Irp`#lri%!T3$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#k"!)%!J3$R!-rrp`$hrrF!aIq
"!-d!crrh!2Irp`$&ri%!Q`$hrrF!prq"!1X!!#q"!)%!J3$G!1hrp`$2rrF!irq
"!,N!lIrh!-rrp`$Mri%!T3$hrmm!prq"!!%!!!![J3#"!)%!h3$YrrF!crrh!12
rJ3#j!1hrp`$2rrF!irq"!+8!prr2!2IrJ3!"!!!!,i%!J3#"!0d!lIrh!-rrp`$
Mri%!Z3$YrrF!crrh!12rJ3#P!2Irc`$hri%!!3!!!#q"!)%!J3$G!1hrp`$2rrF
!irq"!,N!lIrh!-rrp`$Mri%!T3$hrmm!prq"!!%!!!![J3#"!)%!h3$YrrF!crr
h!12rJ3#j!1hrp`$2rrF!irq"!+8!prr2!2IrJ3!"!!!!,i%!J3#"!0d!lIrh!-r
rp`$Mri%!Z3$YrrF!crrh!12rJ3#P!2Irc`$hri%!!3!!!#q"!)%!J3$G!1hrp`$
2rrF!irq"!,N!lIrh!-rrp`$Mri%!T3$hrmm!prq"!!%!!!![J3#"!)%!h3$YrrF
!crrh!12rJ3#j!1hrp`$2rrF!irq"!+8!prr2!2IrJ3!"!!!!,i%!J3#"!0d!lIr
h!-rrp`$Mri%!Z3$YrrF!crrh!12rJ3#P!2Irc`$hri%!!3!!!#q"!)%!J3$G!1h
rp`$2rrF!irq"!,N!lIrh!-rrp`$Mri%!T3$hrmm!prq"!!%!!!![J3#"!)%!d`$
hrqd!irrY!1hrJ3#P!2Irl3$Mrqd!lIq"!*X!lIrM!1hrJ3!"!!!!,i%!J3#"!0-
!prrY!12rl3$Yri%!T3$hrqd!irrY!1hrJ3#E!1hri`$Yri%!!3!!!#q"!)%!J3$
6!2Irl3$Mrqd!lIq"!+8!prrY!12rl3$Yri%!Q`$Yrq-!lIq"!!%!!!![J3#"!)%
!d`$hrqd!irrY!1hrJ3#P!2Irl3$Mrqd!lIq"!*X!lIrM!1hrJ3!"!!!!,i%!J3#
"!0-!prrY!12rl3$Yri%!T3$hrqd!irrY!1hrJ3#E!1hri`$Yri%!!3!!!#q"!)%
!J3$6!2Irl3$Mrqd!lIq"!+8!prrY!12rl3$Yri%!Q`$Yrq-!lIq"!!%!!!!rJ3#
"!)%!d`$hrqd!irrY!1hrc3$lrrN!qrq"!1d!prrY!12rl3$Yrmd!qrrj!2[rJ3$
M!1hri`$Yri%!!3!!!$q"!)%!J3$6!2Irl3$Mrqd!lIr0!2crq!$mri%!l!$hrqd
!irrY!1hrc3$mrrJ!r2q"!1)!lIrM!1hrJ3!"!!!!2i%!J3#"!0-!prrY!12rl3$
Yrmi!!2rd!!$rJ3$R!2Irl3$Mrqd!lIr1!!$rp!!!ri%!h3$Yrq-!lIq"!!%!!!!
rJ3#"!)%!d`$hrqd!irrY!1hrcJ!!rr3!!2q"!1F!prrY!12rl3$Yrmi!!2rd!!$
rJ3$G!1hri`$Yri%!!3!!!$+"!)%!J3$*!2Irc`$Yrm3!rIrh!2hrJ3$J!2Irc`$
Yrm3!rIrh!2hrJ3$@!-rrJ3$e!!"'J3#"!)%!b3$hrmm!lIr&!!Arr`!!rrrj!!A
rr`!!rrq"!1%!prr2!1hra3!&rrm!!2rrq3!&rrm!!2rrJ3$A!-rrJ3$e!!!fJ3#
"!)%!b3$hrmm!lIr"!!(rrr8!!IrrJ3$K!2Irc`$Yrm%!!Irrp3!"rrq"!0F!crq
"!28!!$D"!)%!J3$*!2Irc`$Yrm%!!Irrp3!"rrq"!1%!prr2!1hr`3!"rrre!!(
rri%!e`$2ri%!p3!!-S%!J3#"!-N!prr2!1hr`J$qrrB!r[q"!1%!prr2!1hr`J$
qrrB!r[q"!0F!crq"!28!!%D"!)%!J3$*!2Irc`$YrmF!!2rp!!(rrrS!!2rp!!(
rri%!i!$hrmm!lIr(!!$rr3!"rrrk!!$rr3!"rrq"!0B!crq"!28!!%k"!)%!J3$
*!2Irc`$YrmF!"Irr!!$rrrd!#Irr!!$rr`!!rrq"!0m!prr2!1hra`!&rrm!!2r
rr3!*rrm!!2rr!!$rri%!e3$2ri%!p3!!2)%!J3#"!-N!prr2!1hraJ$prr`!!Ir
rrJ$pri%!hJ$hrmm!lIr'!2hrr!!"rrrq!2hrJ3$8!-rrJ3$e!!!LJ3#"!)%!b3$
hrmm!lIq"!*%!prr2!1hrJ3#(!-rrJ3$e!!!LJ3#"!)%!b3$hrmm!lIq"!*%!prr
2!1hrJ3#(!-rrJ3$e!!!QJ3#"!)%![`$hrq-!lIq"!)%!r3$hrq-!lIq"!)%!m`$
Mri%!k`!!*S%!J3#"!,m!prrM!1hrJ3#"!2d!prrM!1hrJ3#"!2-!irq"!1X!!#D
"!)%!J3#r!2Iri`$Yri%!J3$p!2Iri`$Yri%!J3$c!12rJ3$V!!!QJ3#"!)%![`$
hrq-!lIq"!)%!r3$hrq-!lIq"!)%!m`$Mri%!k`!!*S%!J3#"!,m!prrM!1hrJ3#
"!2d!prrM!1hrJ3#"!2-!irq"!1X!!#D"!)%!J3#r!2Iri`$Yri%!J3$p!2Iri`$
Yri%!J3$c!12rJ3$V!!!kJ3#"!)%![`$hrq-!lIr8!2crh!$qrri!r[q"!0d!prr
M!1hre!$mrp`!r[rq!2lrJ3$6!12rJ3$V!!!qJ3#"!)%![`$hrq-!lIr6!2lrfJ!
"rrrp!!(rri%!h3$hrq-!lIr6!2lrfJ!"rrrp!!(rri%!d`$Mri%!k`!!5)%!J3#
"!,m!prrM!1hrd`!"rrrU!2lrp!!"rrrp!!(rri%!h!$hrq-!lIr6!!(rrqS!r[r
d!!(rrrd!!IrrJ3$5!12rJ3$V!!"+J3#"!)%![`$hrq-!lIr6!!(rrqS!!Irrm`!
"rrrp!!(rri%!h!$hrq-!lIr6!!(rrqS!!Irrm`!"rrrp!!(rri%!dJ$Mri%!k`!
!2)%!J3#"!,8!fIr+!2lrkJ!"rrrc!!(rrrd!!IrrJ3$5!0RrbJ$qrqS!!Irrm`!
"rrrp!!(rri%!J3#H!!##J3#"!)%!Y3$CrmS!!IrrrJ$qr`%!!2lrr!$mr`!!r2r
p!!6rr`$rrrd!!Irrr3!"rrrp!2hr!3!!r[m$!!$rri%!i`$CrmS!!IrrrJ$qr`%
!!2lrr!$mr`!!r2rp!!6rr`$rrrd!!Irrr3!"rrrp!2hr!3!!r[m$!!$rri%!J3#
[!!#@J3#"!)%!Y3$CrmS!$2rr!!$r!2rr!2m!rrrp!!Rrr`!!rrm!!2rrr3!&rrm
!!2rrr3!"rrrp!!(rrrd!"[rr!!$rr`$qr`!!r[q"!1-!fIr+!!crr`!!r`$rr`$
r!2rrr3!*rrm!!2rr!!$rrrd!"Irr!!$rrrd!!Irrr3!"rrrp!!Err`!!rrm!r[m
!!2lrJ3#"!+m!!*!!J3#"!)%!Y3$CrmX!r[rp!2lr!`!!rrrp!2lr"J!!r`!!rrr
p!!Arr`!!rrrp!!(rrrd!!IrrrJ!"rrrq!2lr!!$qr`)!rrq"!1-!fIr,!2lrr3$
qr`-!!2rrr3$qr`B!!2m!!2rrr3!&rrm!!2rrr3!"rrrp!!(rrri!!IrrrJ$qr`!
!r[m#!2rrJ3#"!+m!!)+"!)%!J3#e!0Rrb`$qrri!r[rq!!(rrr`!r[rp!!(rrri
!!rrr!!$qrrd!!Irrr3!*rrm!!2rr!!$rrrd!!IrrJ3$I!0Rrb`$qrri!r[rq!!(
rrr`!r[rp!!(rrri!!rrr!!$qrrd!!Irrr3!*rrm!!2rr!!$rrrd!!IrrJ3#"!+X
!!)D"!)%!J3#e!0Rrb`!"rrrp!2lr!`!!rrrp!!,r!!$qra-!!2rr!!$r!2rr!!$
rr`$r!!$rrrd!!IrrrJ$prr`!r[q"!0m!fIr,!!(rrrd!r[m$!!$rrrd!![m!!2l
r%`!!rrm!!2m!rrm!!2rr!2m!!2rrr3!"rrrq!2hrr!$qri%!J3#V!!#-J3#"!)%
!Y3$Crm`!r[rp!!(rrri!"[rr!2m!rrrq!!Rrr`!!rrm!r`!!qIm1!!$rr`$r!!$
rr`$r!2rrrJ!&rrm!!2rrJ3$H!0Rrc!$qrrd!!IrrrJ!'rrm!r`$rrri!#Irr!!$
rr`$r!!$jr`i!!2rr!2m!!2rr!2m!rrrq!!Arr`!!rrq"!)%!UJ!!F)%!J3#"!,8
!fIr0!2cr!3!!r[rq!2lrrJ$mrri!r[rq!2lr!!$qrri!r[rq!2lrrJ$prri!r[q
"!0i!fIr0!2cr!3!!r[rq!2lrrJ$mrri!r[rq!2lr!!$qrri!r[rq!2lrrJ$prri
!r[q"!)%!UJ!!'S%!J3#"!,8!fIq"!)%!k3$Cri%!J3#"!,8!!"U"!)%!J3#e!0R
rJ3#"!1N!fIq"!)%!J3#e!!!DJ3#"!)%!U`$Yri%!J3$9!1hrJ3#"!)%!U`!!'S%
!J3#"!+X!lIq"!)%!e3$Yri%!J3#"!+X!!"U"!)%!J3#V!1hrJ3#"!08!lIq"!)%
!J3#V!!!DJ3#"!)%!U`$Yri%!J3$9!1hrJ3#"!)%!U`!!'S%!J3#"!+X!lIq"!)%
!e3$Yri%!J3#"!+X!!"U"!)%!J3#V!1hrJ3#"!08!lIq"!)%!J3#V!!!DJ3#"!)%
!U`$Yri%!J3$9!1hrJ3#"!)%!U`!!'S%!J3#"!+X!lIq"!)%!e3$Yri%!J3#"!+X
!!"U"!)%!J3#V!1hrJ3#"!08!lIq"!)%!J3#V!!!DJ3#"!)%!U`$Yri%!J3$9!1h
rJ3#"!)%!U`!!&)%!J3#"!)%!J3#"!)%!J3#"!)%!!"5"!)%!J3#"!)%!J3#"!)%
!J3#"!!!8J3#"!)%!J3#"!)%!J3#"!)%!J3!!&)%!J3#"!)%!J3#"!)%!J3#"!)%
!!"5"!)%!J3#"!)%!J3#"!)%!J3#"!!!8J3#"!)%!J3#"!)%!J3#"!)%!J3!!&)%
!J3#"!)%!J3#"!)%!J3#"!)%!!"5"!)%!J3#"!)%!J3#"!)%!J3#"!!!8J3#"!)%
!J3#"!)%!J3#"!)%!J3!!&)%!J3#"!)%!J3#"!)%!J3#"!)%!!!$r!!!"!2rrrrr
rrRrrrr`rrrri(rrrmNrrrq!(rrr%!rrrJ)Rrrb!JrriV[(rm+L3rq+SmRr!U*!r
L1la(`!!"!iK%)!Q#MZiKi)U+!q#UUSIdLUS2q1lZ2ri!!$rq%4&rrd+!rrq#KIr
rb$2[rqaRrrrhclIrqjhYrr`rrrrqIrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrm!!!"!rrMrr2jkr$ri(rA2ibI!3mZMj0Ia$rLIrVrqGrrrrrr
rq2rmrrlrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr`!!!)$rrrrrrrr`!2rrrrU
[rrm!rrrrS4Vrr2$rrrS4%DrrrrrrS4%4'[rrrrSELaUaVrrrS4JVZV%DrrS4%4%
4%4'[q4'aZkLK%CrrSE'lXT%Drrrj%4%4%CrrrrqK(E%DVrrrrrR4fjrkrrrrrqA
BUZq[rrrrq+rrrrrrrrrrrrrrr`!!!3$rrrrrrrrrrrrrrrrr!!!!rrrrrrrrrkf
$rrrrrrm!!2rrrrrrrkd&"B2rrrmVr`$rrrrrri-&"38&VIrrrrrrrrrrri-["38
&,`@$rrrrrrrrrkd&@9Q*,iPI"Dhrrrrrri-&"9PIJbq*I38&Jrrrrkd&"38&"3X
&"3X&"3@Yrrq*"39C"B0CL9Q*+38&JrrrrkF&AbpI@B1$J`X&VIrrrrrJV38["3X
["3X&VIrrrrrrrrqY"39A9`8&VDhJrrrrrrrUi+f!,PFdTq$qr[rrrrrrrrrUVB$
kTl1XVDhprrrrrrrrrr5YJrrrrq$rrrrrrrrrrrrrrrrrrrrrrrrr!!!#!2rrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrm4rrrrrrrrrrrrrrrrrrra%4rrrrrrrrrrrrrrr
rrr%4%4rrrrrrrrrrrrrrrrm4%4%4rrrrrrrrrrrrrrra%4%4%4rrrrrrrrrrrrr
r%4%4%4%4rrrrrrrrrrrrm4%4%4%4%4rrrrrrrrrrra%4%4%4%4%4rrrrrrrrrr%
4mI(rmIq[%4rrrrrrrrm4%I(aS4'K(a%4rrrrrrra%4(amI%4q[X4%4rrrrrr%4%
4SD'K%D%I%4%4rrrrm4%4%IVarr(rVa%4%4rrra%4%4%4%4%4%4%4%4%4rr%4%4%
4%4%4%4%4%4%4%4ra%4%4m4(kmIVaq[%4%4%Ira%4%I%4mD(a%I'K%4%4rrra%4(
a%D(aSI(am4%4(rrrra%4S4(amI(aSI%4%Irrrrra%IVaqU(kmIVa%4rrrrrrra%
4%4%4%4%4%4(rrrrrrrra%4%4%4%4%4%Irrrrrrrrra%4%@&K%4%4rrrrrrrrrrr
a%4&KB4%4(rlkrrrrrrrrra&K%4&K%IrqUrrrrrrrrrraCK%@B4rrrrrrrrrrrrr
rraCQCK(r[klklUrrrrrrrrraCQ%IqZVU[UVUrrrrrrrrra%4rrrrrrrrrrrrrrr
rrrra(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!!!%!2rrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"3Arrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrr`8&"3Arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrm&"38
&"3Arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr"38&"38&"3Arrrrrrrrrrrrrrrr
rrrrrrrrrrrrrr`8&"38&"38&"3Arrrrrrrrrrrrrrrrrrrrrrrrrrrm&"38&"38
&"38&"3Arrrrrrrrrrrrrrrrrrrrrrrrr"38&"38&"38&"38&"3Arrrrrrrrrrrr
rrrrrrrrrr`8&"38&"38&"38&"38&"3Arrrrrrrrrrrrrrrrrrrm&"3Ar"H!&hl2
r"Gqchpm&"3Arrrrrrrrrrrrrrrrr"38&"Gm&h`AI"38&hJ8&h`8&"3Arrrrrrrr
rrrrrr`8&"38&h`AJ"Gm&"3@cXl1$"38&"3Arrrrrrrrrrrm&"38&"3@c"E-&X`8
&"Gi&"Im&"38&"3Arrrrrrrrr"38&"38&"H$Hh`AIhq!&i,2Ih`8&"38&"3Arrrr
rr`8&"38&"38&"38&"38&"38&"38&"38&"38&"3Arrrm&"38&"38&"38&"38&"38
&"38&"38&"38&"38&"3Arr`8&"38&"3AJ"38&i0lI"H#ci!AIXpm&"38&"38&"Ir
rr`8&"38&"Gm&"3@c"E-&X`8&"Gm&X`8&"38&"3Arrrrrr`8&"38&i!8&"Gm&i!A
I"H!&h`AI"38&"38&rrrrrrrrr`8&"3@c"38&X`@c"E-&h`@c"Gm&"38&"Irrrrr
rrrrrr`8&"Gqcr`AJhYm&i0lI"Gqch`8&"3Arrrrrrrrrrrrrr`8&"38&"38&"38
&"38&"38&"38&rrrrrrrrrrrrrrrrr`8&"38&"38&"38&"38&"38&"Irrrrrrrrr
rrrrrrrrrr`8&"38&"G)&dJ8&"38&"3Arrrrrrrrrrrrrrrrrrrrrr`8&"38&dJA
5"38&"38&rrq)kSRdrrrrrrrrrrrrrrrrr`8&dJ8&"38&dJ8&"Irrp)2qJ[rrrrr
rrrrrrrrrrrrrr`A5dJ8&"G,5"3Arrrrrrrrrrrrrrrrrrrrrrrrrrrrrr`A5dY,
5dJ8&rrq#rH#)rGq#V+hJrrrrrrrrrrrrrrrrr`A5dY)&"IrrVBL$L+H)JSQ)J[r
rrrrrrrrrrrrrrrrrr`8&"3Arrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr`8
&rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrm
!!"X`D@0ZF`!!'c"*3diM!!!"#2rrrrrrrRrrrr`rrrri(rrrmNrrrq!(rrr%!rr
rJ)Rrrb!JrriV[(rm+L3rq+SmRr!U*!rL1la(`!!"!iK%)!Q#MZiKi)U+!q#UUSI
dLUS2q1lZ2ri!!$rq%4&rrd+!rrq#KIrrb$2[rqaRrrrhclIrqjhYrr`rrrrqIrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrpTBf`d!!!##2rrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrm4rrrrrrrrrrrrrrrrrrra%4rrrrrrrrrrrrrrr
rrr%4%4rrrrrrrrrrrrrrrrm4%4%4rrrrrrrrrrrrrrra%4%4%4rrrrrrrrrrrrr
r%4%4%4%4rrrrrrrrrrrrm4%4%4%4%4rrrrrrrrrrra%4%4%4%4%4rrrrrrrrrr%
4mI(rmIq[%4rrrrrrrrm4%I(aS4'K(a%4rrrrrrra%4(amI%4q[X4%4rrrrrr%4%
4SD'K%D%I%4%4rrrrm4%4%IVarr(rVa%4%4rrra%4%4%4%4%4%4%4%4%4rr%4%4%
4%4%4%4%4%4%4%4ra%4%4m4(kmIVaq[%4%4%Ira%4%I%4mD(a%I'K%4%4rrra%4(
a%D(aSI(am4%4(rrrra%4S4(amI(aSI%4%Irrrrra%IVaqU(kmIVa%4rrrrrrra%
4%4%4%4%4%4(rrrrrrrra%4%4%4%4%4%Irrrrrrrrra%4%@&K%4%4rrrrrrrrrrr
a%4&KB4%4(rlkrrrrrrrrra&K%4&K%IrqUrrrrrrrrrraCK%@B4rrrrrrrrrrrrr
rraCQCK(r[klklUrrrrrrrrraCQ%IqZVU[UVUrrrrrrrrra%4rrrrrrrrrrrrrrr
rrrra(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrD@0X1!!!"!Mrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr`8&rrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrm&"38&rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
r"38&"38&rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr`8&"38&"38&rrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrm&"38&"38&"38&rrrrrrrrrrrrrrrrrrrrrrrrrrrr"38
&"38&"38&"38&rrrrrrrrrrrrrrrrrrrrrrrrr`8&"38&"38&"38&"38&rrrrrrr
rrrrrrrrrrrrrrrm&"38&"38&"38&"38&"38&rrrrrrrrrrrrrrrrrrrr"38&r`A
J"Gqcr`AIXprI"38&rrrrrrrrrrrrrrrrr`8&"3AI"Gm&h`8&"Gi&"Gm&"38&rrr
rrrrrrrrrrrm&"38&"Gm&i!AI"38&Xl1cJ`8&"38&rrrrrrrrrrrr"38&"38&X`@
c"E-&"3AH"3Ar"38&"38&rrrrrrrrr`8&"38&"3AJhYm&hprJ"H#chpm&"38&"38
&rrrrrrm&"38&"38&"38&"38&"38&"38&"38&"38&"38&rrrr"38&"38&"38&"38
&"38&"38&"38&"38&"38&"38&rrm&"38&"38&i!8&"H$Hh`AJXq!&hl2I"38&"38
&"3Arrrm&"38&"3AI"38&X`@c"E-&"3AI"E-&"38&"38&rrrrrrm&"38&"H!&"3A
I"H!&h`AJ"Gm&h`8&"38&"Irrrrrrrrm&"38&X`8&"E-&X`@c"Gm&X`AI"38&"3A
rrrrrrrrrrrm&"3AIXrm&i0lI"H$Hh`AIXpm&"38&rrrrrrrrrrrrrrm&"38&"38
&"38&"38&"38&"38&"Irrrrrrrrrrrrrrrrm&"38&"38&"38&"38&"38&"3Arrrr
rrrrrrrrrrrrrrrm&"38&"3A5"G)&"38&"38&rrrrrrrrrrrrrrrrrrrrrrm&"38
&"G)&dJ8&"38&"IrrL1U*p2rrrrrrrrrrrrrrrrm&"G)&"38&"G)&"3Arrr5$rS,
rrrrrrrrrrrrrrrrrrrm&dY)&"3A5dJ8&rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrm
&dY,5dY)&"IrrJ[hJL2hIJUbYi2rrrrrrrrrrrrrrrrm&dY,5"3Arrkf)JiLRL)+
*L),rrrrrrrrrrrrrrrrrrrm&"38&rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrm&"Irrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrD@`c-J!!%!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!
!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2rr!!$rr`!
!rrm!!"!!!!$rr`!!%!!!!2rr!!!J!!!!-!!!!"!!!!$rr`!!)!!!!$!!!!!`!!!
!)!!!!2rr!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!$rr`!!rrm!!2rr!!$rr`!!)!!!!2rr!!!J!!!
!rrm!!$!!!!$rr`!!rrm!!2rr!!"!!!!!rrm!!1cX!!![!!!!rrm!!2rr!!$rr`!
!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!rrm!!2rr!!$rr`!!rrm!!2rr!!!J!!!!rrm!!#!!!!$rr`!!)!!!!2rr!!$rr`!
!rrm!!$!!!!"!!!!!-!!!!(4d!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!$!!!!$rr`!!-!!!!2rr!!!`!!!!rrm!!2rr!!$rr`!!3!!!!2rr!!$Yl3!
!!!!!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!)!!!!%!!!!!J!!!
!rrm!!#!!!!!`!!!!%!!!!2rr!!!J!!!!-!!!!$!!!!!J!!!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!!!!!!!!!!!!!!!!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!"!!!!$rr`!!rrm!!2rr!!!J!!!
!3!!!!#!!!!$rr`!!)!!!!$!!!!!3!!!!rrm!!#!!!!"!!!!!)!!!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!)!!!!2rr!!$rr`!!rrm!!$!!!!$rr`!!-!!!!2rr!!!`!!!
!rrm!!2rr!!$rr`!!-!!!!2rr!!!`!!!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!!rrm!!2rr!!!J!!!
!rrm!!2rr!!$rr`!!)!!!!2rr!!!J!!!!rrm!!#!!!!$rr`!!%!!!!2rr!!!J!!!
!rrm!!#!!!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!!rrm!!$!!!!$rr`!!rrm!!2rr!!!`!!!
!rrm!!$!!!!$rr`!!-!!!!2rr!!!`!!!!rrm!!$!!!!$rr`!!-!!!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!rrm!!2rr!!$rr`!!)!!!!$!!!!!3!!!!rrm!!#!!!!"!!!!!)!!!!2rr!!!J!!!
!3!!!!#!!!!$rr`!!)!!!!%!!!!!J!!!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!!!$r!2rr!!!!!2m
!rrm!!2rr!!$rr`!!rrm!!2rr!!$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!rrm!!2rr!!$rr`!!rrm!!2rr!!!!!2m!rrm!!!!!r`$rr`!!rrm!!2rr!!$rr`!
!rrm!!2rr!!!!!!!!!!!!!&j,*J!3$!B!6MiI!!8%!J!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!!!!2m
!rrm!!2rr!!$rr`!!rrm!!2rr!!!!!2m!rrm!!2rr!!$rr`!!!!!!!!!!!!!+#!3
!8d)K!"S9#J"b@bi!"33#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!!!!r`!!!2m!rrm!!2rr!!$rr`!
!!!$r!!!!r`$rr`!!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!rrm!!!!!r`!!!2m!!!$r!!!!r`!!!2m!rrm!!2rr!!!!!!!
!!!!!!(KJ-!!U)4%!'K8,!&0$)3!I'3d!'K8,!'eA,!!q-KN!0#N9!"S9#J!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!rrm!!!!!r`!!!2m!!!$r!2rr!!$rr`!!!!!!!!!!!!!U)4%!ANXQ!&0#)J"B4b-
!6MiI!&j,*J"M6bJ!6MiI!&0#)3"H5bB!$``'!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!$rr`!
!rrm!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!rrm!!2rr!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!E$KYD`!!"!Mrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrr!!!%4J!DBA"`FK!"!!!!!"C)BA-J3A"`C@&bB@jMC5"0B@jKCf9b!!!!!!!
!!!!!CACZG"!"!!!!!"")BA-J3A"`E'8J4ACPER4c!!!!!!!!!!!!!!!!!!!!B@G
IGK!"!!!!!!j)BA-J3A"`E'9(G@PNC3!!!!!!!!!!!!!!!!!!!!!!BA0MFK!"!!!
!!!p)BA-J3A"`E'96Bh*TF(3!!!!!!!!!!!!!!!!!!!!!BfeZG4!"!!!!!"4)BA-
J3fpZG'9iG(9KE#"0C@jeF`!!!!!!!!!!!!!!F'phFS!"!!!!!"&)BA-J8'phCA)
J6@&ZB@GPFJ!!!!!!!!!!!!!!!!!!FA4TEB!""Im!!"a)BA-J8A9TBfY8D@eP)$B
Z-#"[FL"(FQ9KG'9b!!!!FA4TE8!$"J!!!"j%Ef9cEY9d)'KKGQ8J893J0Li`)'p
b)%GbC@&dCA)!Eh4fFS!"!5m!!"p)BA-J6h"PEP4bB@jcF'pbG$%Z-b"[FL"(FQ9
KG'9bEh4KEN!$!6!!!"j%Ef9cELGd)'KKGQ8J6e3J-5ic)'pb)%GbC@&dCA)!FhP
cB8!"!!!!!K!f1%XJ3A*MD'PdC@0dGA*P!!!!!!!!!!!!!!!!!!!!FhPcB5!"!!!
!!K43EhGPFP"$)%&bBfKTG'9MG(9bC3!!!!!!!!!!!!!!Bh"eG#!"!!!"#"")BA-
J4c-J8(*[Bf9cFfpb!!!!!!!!!!!!!!!!!!!!Bh"eG)!"!!!"#a")BA-J4c3J8(*
[Bf9cFfpb!!!!!!!!!!!!!!!!!!!!FhPcGS!"!!!)$a40B@028b!i,M%JEh)J4h*
PBA4PFJ!!!!!!!!!!!!!!FhPcGS!"!!!)6a40B@028b!i,M8JEh)J4h*PBA4PFJ!
!!!!!!!!!!!!!FhPcGS!"!!!)Aa40B@028b!i,MBJEh)J4h*PBA4PFJ!!!!!!!!!
!!!!!FhPcGS!"!!!)ra*0B@028b!j)'pb)%GbC@&dCA)!!!!!!!!!!!!!!!!!FhP
cGS!"!!!*ra*0B@028b"B)'pb)%GbC@&dCA)!!!!!!!!!!!!!!!!!FhPcGN!"!!!
3!"&-CA0c)&4SB@iJ6@&M6e-J@!!!!!!!!!!!!!!!!!!!FhPcGS!"!!!3$aG0B@0
28b"B)$%`,M%JEh)J4h*PBA4PFJ!!!!!!!!!!FhPcGS!"!!!3(aG0B@028b"B)$%
`,M)JEh)J4h*PBA4PFJ!!!!!!!!!!38406L!"!!!!!3T28b"B)%&NE@PZ!!!!!!!
!!!!!!!!!!!!!!!!!!!!!38406L!"!!!!!!j1Eh3J6e-J@#""C'eTEJ!!!!!!!!!
!!!!!!!!!!!!!Bf*[ES!"!!!"$aa)BA-J3f&bBQpZ6'PL)$%Z-5"[FL"(FQ9KG'9
b!!!!3da63b!"!!!!!44*Fb"$E'&cFfPM)%&fB@PXB@*XC3!!!!!!!!!!!!!!!!!
#c!!4B@aTFa!"!!!!!"&)BA-J3@aTBA-J6@&ZB@GPFJ!!!!!!!!!!!!!!!!!!CAC
ZG"!"!!!!!"")BA-J3A"`E'8J4ACPER4c!!!!!!!!!!!!!!!!!!!!CR"e))!"!!!
!!!e)BA-JB5!f1%XJ4P"9!!!!!!!!!!!!!!!!!!!!!!!!D'9XF"!"!!!!!"")BA-
J5'9XF#"0B@jKCf9b!!!!!!!!!!!!!!!!!!!!E@ee))!"!!!!!!P)BA-JB5"0698
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!EQeRFK!"!!!!!"K)BA-J6QpdD@CTBf&dD@p
Z)%eKEQ&RCA)!!!!!!!!!F'phFS!"!!!!!"&)BA-J8'phCA)J6@&ZB@GPFJ!!!!!
!!!!!!!!!!!!!F@4bGi!"!!!!!"0)BA-J3fpXEh)J8A9TBfY%FQ&h!!!!!!!!!!!
!!!!!F@3J))!"!!!"ra4)BA-J-c)Y3QPd)&&eD@0V4(*KG`!!!!!!!!!!!!!!FA4
TE4!"!!!!!!e)BA-J8A9TBfY8D@eP!!!!!!!!!!!!!!!!!!!!!!!!Ff0bDB!"!!!
!!"*)BA-J8f0bDA"d)%eKEQ&RCA)!!!!!!!!!!!!!!!!!G'eRFS!"!!!!!"")BA-
J9'PYC5"0B@jKCf9b!!!!!!!!!!!!!!!!!!!!GQdJ)"!"!!!!!"*)BA-J9QPbG(9
KE#"0C@e[FRN!!!!!!!!!!!!!!!!!FhPcB5!"!!!!!K43EhGPFP"$)%&bBfKTG'9
MG(9bC3!!!!!!!!!!!!!!FhPcB8!"!!!!!K!f1%XJ3A*MD'PdC@0dGA*P!!!!!!!
!!!!!!!!!!!!!B5peH!!#!!!!!!j1Eb""99JJ8h9`F'pbG!!!!!!!!!!!!!!!!!!
!!!!!Bf*[ES!"!!!"$aa)BA-J3f&bBQpZ6'PL)$%Z-5"[FL"(FQ9KG'9b!!!!!!!
!me4SDA-JDA-J3Q9bDf9XCANJ6'pREb!S980#6'pREbNJGQ9bFfP[EL!e,M8JCQp
b)%eKBdp6)&JZ#JT8D'Pc)(CPFR0TEfiJFQ9aG@PbCA-JG'KP)&Ja-5"hD@jNEhF
JE@&ZB@GPFL!SEfiJG'KP)(4SDA*N)%eKBdp6)&J+D@jcG'&XE'&dD@pZ)%0%)'C
bEfdJ3A"`E'8T,L!J9'mJFh4KFR3J6'pREb"KCR4PFL"dD'8JD@jcG'&XE'&dD@p
Z,!TcG'&bG#"B-6%X)(4SC@iJG(P`C5!LE'pREb)JD@jdEb"KEL"iG'9bE5"hD@j
NEhFZ#J!!4N)*#3N*)#!J)%G195"(48j&8N&-)&"93Na*3b"-580&6P0&#JN*#3N
J)#!J)#!J)#!J)&CPFR0TEfiJ-L`J5R9ZC5!a16Na#JSJ3fp`HA*TCfKd)#K$+5!
a16Jj,#!a16Na)%CbC@8J8fpQG(GKFQ8J4QpeEQ4KG'P[EL`J5@jM,JSJ)#!J)#!
J)#!J)#!J)#!J)#!J)#!J)#!J)$Bh05"0BA0c)%&fC5`J3f&YBR*TC'GP,#"035!
`-M%c15`J990"#L"&GQ9bH@pZC5"TFb"`CA*YDA4dC@3JG'mJBfp`H5"KEQ3JC'P
cG(*TBR9dC5"fCA*LBA4TE5"MEh"TCA-+)'pQ)(4SDA-JE'PMC@jcC5"NEf0eE@9
ZG#`JBR9d)'0SB@jRD@jR)'Pd)'Pc)'j[G#"KE'a[Gf9N,JS+#3N*)#!J)&"bC@&
YBQaP#JSJ)&4SC5"XD@0PER0PFb"QEh)JE@pcG#"cEfCdGf&bC5"KFQ8JC'9cD@G
ZC@3JG'mJG'&VC5"KGf&j)(P[GA)JCR*PC@4[E5"dEb"cD'&bC5"KEQ3JBfKKEQG
P)'Pd,L!J3RNJBfpZG(*KFh3X)(4SC5"(6P8J4f9ZCA*KE#"3G@*XD@-J6'PMC@j
cC5"TFb"TER4PEQ4PC#"dEb"RG@&bB@jdC@8JH@peFL"QFQ9PC'pY)(4[)(0SBA*
P)'&ZC#"MD'&ZCf8JCR*PC5"cEfCdGf&bC5dYG'mJE@&VC5"cGA*P)(4SC5"cEfC
dGf&bC5"TFb"QFQ9P)'C[FL"KE'`JDA4c)(9cCA*c,L!J9'KTFb"(C@jPFQ&X)&"
eBQaTBb"-D@0PER0P)'&`F'aTCA-JG'mJE@pcG#"[CL"dD'8J4R*PC5"6EfCdGf&
bC5"'Eh9ZC'&dD@pZ*h-JFfpQG(GKFQ8JB@jN)(4[)'&ZH5"[G'KPFL"`FQpRFQ&
Y)(GSEh0P)'&eG'K[FR-JBfpYE@Pd)(4[)(9cD@jR)'Pd,L!J+&0[E@8JEh4SCA)
J4R*PC5"6EfCdGf&bC5"'Eh9ZC'&dD@pZ)(0[CR4hBA*P)'Pc)'0[GQ9bC@3JBRN
JG'KP)%G195"-D@*bBA*j)%GPEQ9bB@`J8(9LE'PM)%aTBf9ZFf8JD@jcG'9KC#i
T)#"CEh8JBf&Z)'&`F'aj)'Pd)(4[)(P[GA)JF(*[Ch*KEA-X)(4[Ebi+#L!J9fK
PEL"hC5"cF'9KDb"[CL"QFQ9P)(0[CR4hBA*P,#"hC5"KFQ8JFQ9QCA*bD@jR)(4
[)'CbC@9NEfdX)'j[G#"`FQPMC5iJ)%peFL"(C@jPFQ&X)&"eBQaTBb"-D@0PER0
PFb"KFQ8JC'9cD@GZC@3JG'mJE@&VC5"cGA*P)(4SBA3JH@pe)'KKGQ8JG'KP)'C
bC@9NEfdJG'mJC'PcG(*TBR9dC5"MEh"TCA-JEfBJCR*PC5"cEfCdGf&bC5!SB@j
N)'0SBA*RC5"QEh)JG'KTFb"cCA*fD@0P)'PQ)(P[G5"hDA0S+5`JG'KKG#"jEh8
JFQ9MC@PfC5"cEh9bBf8JBfpNC5"[FL"MB@iJCf9d)'Pd)'PQ)(P[G5"hB@jd)'P
d,#"dD'&d)(P[G5"MB@iJBfKKEQGP)(4SC5"cEfCdGf&bC5"[FL"eFf8JF'PPBf9
c)'pQ)'Pd)'PZ)'jPGb"QFQ9P)("bEfGbB@ec1b"KEQ3JG'KKG#"jEh8JDfj[Gb"
jEh8JBf&Z)'4[)(4SCA0P)(4SD@jRFbi+#L!J9'mJF(*[G'9MG#"jEh9b)(*TCfK
dFb`JGf8JEQ9PC#"dEb"YB@YP)(*PFh4bD@0dD@pZFb"dD'&d)'C[FQ*TC#"KERP
[EQ8JG'mJC'9ZH5"jEh8JG'KPFf8JFQPRD(4c)'pb)(4[)'&cDb"jEh8JG'mJFh9
bFQ9ZC'9b)(4SC5"bD@GSG(-Z)&4SCA0P)(*PFh4bD@0dD@pZFb"dFQ&ZFfaKG'8
JG'mJBf9bG'&TEL"bCA0`EfjcD@*TE'PdD@9c)'C[FL"jEh8JD@BJH@pe)'4TFh4
bD@*eG'8JBfp`D@9c)'pQ)(4SC5"cEfCdGf&bC5`JEh)JD@BJH@pe)'e[C'PQH5"
TG#i+#L!J4Qpb)'9iB@e`E'8X)'PQ)(P[G5"NDA0dFQPLGA4P)'0[F'PPFb"[CL"
cG@0S)'%JF(*[Ch*KE5`JGfKPG'KPFL"RFQ&dDA-JEh)JCQpb)'%JCQ9P,#"jEh8
JEA9cG#"RDACP)(4SC5"bC@0TF'PPER4c)'&XE#"dD'8JFQPRD(4c)(4SBA3JH@p
e)'KKGQ8Z)#"CEh8JEA9cG#"YB@YP)(0eFQ8JG'KKG#"dD'9j,#"dEfmX)(*PBf9
TGQ8JEh)JBf&Z)'GPG#"dD'8JFfpeFQ0P)'0[C'8Z)#""EQ3JH@pe)'eeFh3JFfK
[Gb"dD'9Y)(4SCA0P)(4PFQec)(0[)(4SCANJDfj[Gb"dD'9TFL"bD@GSG(-Z#JS
J)&GP)("bEh4PBh3JH@peFL"bD@GSG(-JGfPdD#"dGfmJFh4PF(-k)#Ja+5"MEh"
jFQPRD(3JG'KP)(0[CR4hBA*P,#"KEQ3J+$)T)'pQCQ9b)(P[G5"dD'Pc)'aTBf9
ZFf8JGfKTBfJJCfPfCA-JH@pe)'aPCf&X)("PFQeTFh0TEfiJG'mJBfp`H5`JC'P
cG(*TBR9dC5"KEQ3[Eh)JE@pND@Cj)(4SC5"cEfCdGf&bC5i+#L!J3@acEb`JCQp
b)'9KBfJJBA9dD'pb*h-JF(*[G'9MG'P[EL"KEQ3JEh9bFb`JGf8JGf&ZG#"dEb"
YB@YP)'0PFR4KD@iJG'KKG#"PGQ9bH@pZC5"eEQ4PFR0dB@jNFb"dD'&d)(4SCA*
P)'Pc)'j[)(GKFR*KER4j)'C[FL"dD'Pc)'CbC@8JFfpQG(GKFQ8Z)#"*CL"dD'8
JFfpQG(GKFQ8JDA-JE@pND@CTC@3JBRNJFfpYC@pZC5"PE(0P)'&ZC#"`BA0cC@3
JEfiX)(GP)(GKER3JDA4c)(*PBfP`D@9ZG(-JG'mJDfj[Gb"dD'&d)(GSBA3JG'K
PH5"SBACP)'Pc)'j[G#"dD'8JEh*TCfPZB@`X)(0[)(4SBA3JB@jj)("bEf*XC@e
c)'PZG(*[C(9MC@3JBRNJEh4SCA*c)(GTE'`JEQpd)(*PCQaPBh3JEfiJG'KP)'p
bD@GTEQ&X)'&eG'K[FR-R)(*PF(9dBA4TEfjc,JS+)#"'D@jKE'aj,#"KERNJCR*
PC5"`FQpRFQ&Y)'Pc)(4SFQ9KG'9ZC@3JBfpZFh4KER4XH5"LH5"cEfCdGf&bC5"
`BA4PER4c,L!J9f8JGfPcD#"dEb"KGQpTC#"dD'8JC'&ZCf9b)(4SBA3JFQ9NDA0
dFQPLGA4[FR-JEfBJB5"QFQ9P)("bEfGbB@dJGfPXE#"TEQ4TGQPNG@&XE(NJEf*
dB@PZ)("KG'9ZG#"XD@0PER0PFb`JD@iJC@CQC@0d)'eKDfPZCb"dD'8JF(*[Ch*
KE5"`FQp`FQPPG'&bH5iJ)&4[)("bCACPER3JG'KTFb`JGf8JD'&fC5"YB@4P)'P
d)'0XC@&b)(4SBA3JB@jj)("KG'9ZG#"YGA0d)'*P)'aTBf9ZFf9N)'C[FL"PGQ9
bH@pZC5Gc)'CbC@8JGA0P)'pb)'j[G#"XD@0PER0PC#"KG#"KE'`Z#JSJ)&4SC5"
`FQ9MDA0P)(4PFQec)'&ZC#"MEfjNDA4TEfjc)'C[FL"MEh"jD@jR,#"NDA0dFQP
LGA4TEfiJB@jN)'e[C'PQD@0KG'P[EL"QEfaXEhFZ#J`+#3NJ)#!J4dj9)%G&6N9
538`J8&9#6%P$)%a*3d918d8+)#!J9%9569-J38j%)%026N4*9%P26P-J4Np5)%0
28&P*6NFX)%4*8e4558*99%P26L""6N3J68p%58C*3d&858p1#JSJ)$!Z)&4SDA-
J6'PMC@jcC5"KF("XD@9c)(4[)'&ZH5"`FQpRFQ&Y)'pb)'pdD'9b)(G[FQXJGfK
TBfJJBfpZG'&TER-JB5"ZEh4TBf8JF'aKBf9N)'*j)(4SC5"MEh"jFQPRD(3JD'p
XC'9b)(0KH@PZCb"TG#"YBANJBQ8JC'PcG(*TBR9dC@3JG@jNCA)JG'KP)(4PFQe
c)'pQ)(4SDA-J4f9ZCA*KE#"3G@*XD@-J6'PMC@jcC5iJ)&4SC5!L8(*[Ch*KE5)
X)'*PE'ph,#"bC@CPFR-JG'mJB@jj)(0eBfJJF(*[Ch*KE5"[FL"hEh*V,#"KEQ3
JB5!LGfpbDb"LBA0PC#"[EL"dD'8J8(*[Ch*KE5)JE@9KER-JC@PdD'9b)(4SC5"
3FQpRFQ&Y)'pb)'&ZH5"NCA*TGQ&dDACP)(G[FQXJG@jNCA)JBfp`HA*TCfKd)'a
KGcSJG'KKG#"TFb"dEb"cBANX)'%JGfpbDb"MEfjdB@PZD@jR)(4SC5"3FQpRFQ&
Y)'pb)'%JF'pbG'P[EL"[CL"TG#`JC@PdD'9b)(CPFQ*KG'PY)'pb)(GTG'JJE@p
ND@CTBf&dD@pZFb"KEQ3[Eh)JG(*KER0XBA4PC#"TER4[)'&ZEh4SCA)JE'&ZCh9
KCf8Z)#!S5'9bC@PZB@CdCA)X)(4bB@jcE'&dD@pZ)'Pc)'PZBfaeC'9N)(GTG'K
[GA3JE'PYDA4KG'P[EL"TEL"dD'8JG'9bE5!LE@pND@CTBf&dD@pZ)LiT)#"&B@0
S)'aTBf9ZFf9P)'Pc)'&NC(*PFh0PC#"KFb!LH@pe)Li+#N&MG'PfDA4TCA-JEh4
SCA)JG'KKEL"MEh"jD@jR,#"NDA0dFQPLGA4TEfiJB@jN)'e[C'PQD@0KG'P[EL"
KFQ8JEQpd)'0[GQ9bC@3JBRNJG'KTFb"-D@0PER0P1b"dD'9j)'&bC5"[GA4cD@4
P)'PdFb"cBfp`C5iJ)&4SC5"KBh3JEfBJFR9ZEQPZCb"dD'8J8(*[Ch*KE5"TFb"
ZEh3JFQ9cG(*TBh4PC#`JB@jN)(4SC5"[GA4`GA3JCR*[E5"dD'8J8(*[Ch*KE5"
TFb"MEhCPFQ9N)'pZE(NJD@BJDA4c)'0[ER4PER4c)'0[ER0dDA4eG'8JB5"hEh*
V)'*KFf9N)'pZ)(4SC5"3FQpRFQ&Y)#KTEQ4PF'9ZC'9ZG#"[CL"SBACTEQFJBQ9
PEL"YB@4P)'*j)(*eEQjTEQFJG'KP)&"bEfGbB@dT,L"AD'9dD'9b)(4SBA3JDA-
JG(*eC5"NCA"PEQ4c)'pZ)(GSBA3JG'KP)&"bEfGbB@dJC'pPFbi+#L!J-5iJ@@p
e)'eKH5"MEh"j)'&ZC#"NDA0dFQPLGA4P)(CPFQ*KG'PY)'0[F'PPFb"[CL"dD'8
J8(*[Ch*KE5Gc)(0[GA*MC5"MEf4P)'&c)(P[G5"bC@0PDACP)'Pd,#"TEL"KERN
JE@9NDA9Y,#"`FQpfD@4PC#"dD'&d)(P[G5"MEfjcF'PMG@peFfaj)'&ZC#"KF("
bEh"bD@&dC@aj)("eBQaTFfJJEfiJC@&MD#"MEh"j)'&Z)'&`F(*[F(*TBA4P)'0
[F(PbD@GSG#"ZEh4TBf8JB@jN)'4TFf0XB@PYCA)JEfBJGf&bFQ&ZG(Nl)'YPCA!
JD@jdB@0d)'&XE#"dD'8JEQpdD@0PFb"dD'&d)(*PCQ9b)(4[)(4SDA-J6'PMC@j
cC5"KEQ3JG'mJG'KP)'&LFf9ZBf8JEfBJB@jj)(GKFR*KER4j1b"KEQ3JCfPfC5"
KERNJEh4SCA)JFQ9MDA"TC@jdFb"[CL"dD'8J8(*[Ch*KE5"K)'0[F(NJEfBJG'K
TFb"-D@0PER0P)'&XEfjR)(GTG'JJG'KP)&"bEfGbB@dZ#JSJ)&P[G5"YBANJBfK
KFQGP)'%JCQ9P)'C[FL"dD'8JF'KjFfPMB@`JB@0d)'pQ)(4bB@jcCQ9bFQPZCb"
K)'0[F(NX)'&ZC#"jEh8JE@&j)'&d)(P[GA)JEh"dD@pZ)'pQCQ9b)(GKFR*KER4
j)("bEh4PBh4TEfiJD@iJCAKMD'&ZCf8JCQpb)'%JCQ9P,JS+)#!b,L"CEh8JE@&
j)'e[C'PQH5"jEh9b)'0[F(NJEh)JBfp`D@9c)'pQ)(4SC5"3FQpRFQ&Y)'pb)'&
ZH5"`Eh*dD@pZ)'pQ)'Pd,#"dD(9c)'C[FQeTEQFJB5"hEh*V)'*KFf9N)'pZ)(4
SC5"3FQpRFQ&Y,#"KEQ3JBfp`H5"KEQ3JC'PcG(*TBR9dC5"cG@0S)'e[C'PQD@0
KG'P[ER-JEh)JGfpbDb"eEQ4PFL"dD'8JG'9bEA-JEfBJ8f9MG'P[EL!a)'&LEhC
P,#"`FQpfD@4PC#"dD'&d)(P[G5"KE(0[)'ePCA3JB@aX)'pQ)(4SCA0P)'0[EQ4
TG'P[ER-k#JSJ)#!JB5NJ@@pe)'eeFh3JBf&eFf8JG'KP)'e[C'PQD@9N)'CTE'9
c)(4[)'0KFR*j)("bEfeTEQ9ZG#"ZEh4TBf9c#L!J)#"cG'&dD@jR)(4SBA3JH@p
e)'0SB@jRC@3JG'KP)'CTE'9c)'&ZC#"dD'8JC'&dC5"[CL"KERNJBfKKEQGP,JS
+)#!J)')T)&P[G5"YGA0d)'0KGA0P)'&ZH5"hEh*V)(4SBA3JH@pe)'4TFh4bD@*
eG'8JEh)JF(9LE'PcD#`JG'KKG#"TEJSJ)#!JGfK[E'8JEh)JD@iJF'&bG#"MEfj
dB@PZFb"[FL"TFb"NCA*TGQ9N)'CbEfdJG'KP)&"bEfGbB@dJEh)JB@jj#L!J)#"
`BA*d)(4SCA*PEfBX)(4[)'*P)'aTBf9ZFf9N)'&c)'%JGfK[E'8JBA3JEQmJBfK
KFQGP)(4[)'&XE#"dD'PbC!SJ)#!JF'&bG'PPFb"eEQ4PFL"dD'8JG'9bEA-JEfB
JG'KTFb"-D@0PER0P,JS+)#!J)'-T)%PQ)(4SC5"YEf4TCQPPC#"`FQpRFQ&Y)'j
[FQeKE'aj)(*PB@4c)'0[E@eKEQ4c)'PZG'9bB@0dDACPE(N+)#!J)(GSC@iJFR9
Z,#"jEh8JEA9cG#"MBA9cC5"TG#`JGfKPEL"cG'&bG'9N)(*eEQjTEQFJCQpb)(0
eBfJ+)#!J)'PZG'9bB@0dDACP)(9cC5"TEL"dD'8JE@pcG#"[FQ4TEQ&bH5"hBAN
X)(4[)("bD@jd)'pb)'4TFh"XBANJB@i+)#!J)'&ZEQpeEQ0PE@9ZG#"TEQ0XG@4
TEQFJB@iJBA"`FQp`FQPKG'8JBfp`HA*TCfKd)'j[G'PMC5"KEQ3JB3SJ)#!JEQp
dD@0P)(4SBA3JG'KPFQ8JDA-JEQmJGf&bFQ&ZG(NJ+'pb)'9XFf8X)(0KH@PZCb"
dD'&d)(P[G5"`FQpfD@4P#L!J)#"K)(GKFR*KER4j+5"KEQ3JG'KKG#"eFf9bFb"
YBANJFQ9NDA0dFQPLGA4P)(4SC5"`FQpRFQ&Y)(9ZC'9b#L!J)#"dD'9cC5"MEfj
NDA4TEfjc,#"KEQ3JG'9XE'PZCb"dD'8JGA0PFL"SEhFJG'mJGQPPGb"K)'0[F(N
JEfBJG'KTF`SJ)#!J6'PMC@jcC5iJ)#K&H'0PF(4TEfik)'PQ)(4SC5"3FQpRFQ&
Y)'PdFf9XCL"TFb"TER4PFQ&MG'PfC5"LGA3+)#!J)'4[CA-JEQpd)'j[FQeKE'a
j)("bD@jd)(0eBfJJB@iJB@jZEh9ZBf9YC@jd,#"jEh9b)(G[FQXJBQ&cC@3JEfi
+)#!J)(4SC5"3FQpRFQ&Y)'Pc)'j[G#"bCA&eDA*PC#"dEb"`FQPZG#"KEL"KEQj
[G@jMC@ePER3Z+3S-#P4SCA0P)(*PFA9TFQ9YC@jdFb"KF("XH5"dEb"dD'8JE@p
ND@CTC@3JGfpbDb"KFb"K)(GSEfaP,L!J5@BJD@4PER4TCQPKBQaP)(0PBh4TEfj
c)'pQ)(4SBA3JGfpbDb"KFQ8JEQpd)'4PFQPfC@3JCR*[E5"dD'8J8(*[Ch*KE5`
JB@jN)'0KEL"LC5"bC@&cEfjKBQaj)'0[ER0TC'9bC@3JD@jNCA"PEQ4PER3JB@j
N)(0PF'&bBA4P)(G[FQYc)'PZ)(4SC@ecC@afCA-X)(4SC@iJG'KTFb"-D@0PER0
P,#"KEQ3JDA4c)(4PFQec,#"NEb"ZEh3JBA"`E(NJG'mJG'K[Ff8JFf9MG'P[ER-
JGfKPEL"jEh8JC'PcG(*TBR9dC5"dD'9Y)'&c)(0PF'&bBA4P)(G[FQYc,L!J3R9
d)(GSC@iJH@pe)'4TFh4bD@*eG'8JG'KP)(0KE@8JFf9MG'P[ER-JBA-JF'&bG#"
[CL"K)(GSEfaP)(GSD@0S)'Pc)'%JGfpbDb"LBA0PC#"[EL"dD'8J8(*[Ch*KE5`
JG'KP)'4TFh4bD@*eG'P[EL"[CL"dD'8JGfK[E'8JEA9cG#"LC5"[EL"dD'8JG'9
bEA-JEfBJG'KTFb"-D@0PER0P,#"hD'pcC5"`CA*YDA0cD@pZFb"QEh)JEh4SCA)
JE'PMC@jcC@9c)'9iG'9ZC#"dEb"dD'8JC@jdDA*P)(GSEfaP,#"KEQ3JG'KeFb"
dEb"PB@0S)'&ZC#"PGQ9bH5"`BA*d)(*PCf&bC'aPFh-JEfBJGfK[)(GbEh4P)'P
d,JS+9'KeFb`JDA3JDA-JEQpd)(4SC5"TER4PER3JEfBJG'KTFb"cC@0dD@pZ)(4
[)'0XB@PY)(*TCfKdFb"[FL"MEfjdCA0d)(P[GA)JFQPRD(4c)(4[)(G[FQXJGh*
TG(4PEL"PER4TFQ9XH5"LH5"jEh8l)(*KG'KPFL`JG'KP)'PZG'9ZG#"TFb"dEb"
PH'9bBfPcC5"dD'8JFQPRD(3JG'mJBfpZG(*[E#"dD'8JC'PcG(*TBR9dD@pZ)'p
Q)'4PFQPfBA4TGQ8JEh)JBfpXE'9MG'PfC5"hEh*VFb"LBA0PC#"[EL"dD'8J8(*
[Ch*KE5i+#NPZ)'&NC'PdD@pZ,#"YCA*P)'&RCh*PCf&dD@pZ)'pQ)'&ZEh4SCA)
JGfpbDb"ZEh3JBQ&cC@3JEfiJG'KP)&"bEfGbB@dJGfPdD#"dD'8J8(*[Ch*KE5!
SEh)JGfPdD#"K)(G[FQXJBQ&cC@3JEfiJG'KP)&"bEfGbB@dT)'pZ)'%JGQpXG@e
P)'pQ)'%JFh4[FQ&RC5"[FL"NDA0dFQPLGA4TEfiJE@9NDA9Y)'4[CA-JEQpd)'*
bD@jR)(4SC5"[G'KPFL"hEh*V)(9ZC'9b)(4SC5"cBfp`C5"[CL"dD'Pc)%aTBf9
ZFf8Z#JSJ)$-Z)&P[G5"YBANJBfp`H5"KEQ3JC'PcG(*TBR9dC5"dD'8J8(*[Ch*
KE5!SEh)JB5"hEh*V)'*KFf9N)'pZ)'Pd,#"eEQ4PFL"6C@0dD@pZ)$)T)'PZ)'p
LDQ9MG#"MEf4P)'pb)'9iC@0eG'&LE'8JCQpbE5"eEQ4PFL"dD'8JG'9bEA-JEfB
J8f9MG'P[ER-J-5"KEQ3J-L"KBQpfC5"`FQpfD@4PC#"dD'&d)(P[G5"KE(0[)'4
[)'pZC5"[CL"dD'8JCQpXE'phD@jR1JS+)#!J)'%T)%&MBfpYF'&ZH5"TG#"hDA4
S)(4SC5"MEfe`E'9dC5"MEh*bCA0`EfjND@jR)'eKBfKTEQ8YFQ9KC'&LE'8+)#!
J)(0[GA*MC5"MEf4P,#"hD'PMD#"YGA0d)'*P)'4TFh4bD@*eG'9N)(9ZC'9b)(4
SC5"dCA*YFb"[CL"6C@0dD@pZF`SJ)#!J-5"KEQ3J-L"KBQpfC5"[EL"K)'ePC'P
eE5"MGA0dEfeKFQPXH5"eFf9N)'C[FL"cEfCdGf&bC5"TER4PFQ0SB@jRC6XJEh)
X#JSJ)#!JBLNJ3@0MEfe`B@jj)'Pd)(GTG'JJB5"hFQPdG'9Z)'pQCQ9b,#"fB@a
TC#"QEh)JBA3JE'9KFh3JG'KbC@8+)#!J)(PPBA*c,#"dEb"RDACP)'&ZH5"dD'P
bC#"`BA*dH5`JCQpb)'%JBfKKFQGP)'j[)'e[FQ8JG'KKEL"jEh9b#L!J)#"MEh0
d)'pQ)("SHA0TBf&XE(NJF'9bCQpbE@PZCb"cEh9bBf8JC'PcG(*TBR9dD@pZ,#"
K)'0[EA"XCA4P#L!J)#"YB@0SD@jP,A*PB@4KBQaP)'0[F(NJEfBJG'KP)'0[FR*
PFh"[EQ4TEQFJFfpeFQ0P)'0[C'8X)(4[)'*P#L!J)#"NDA0dFQPLGA4PC#"eEQ4
PFL"dD'8JG'9bEA-JEfBJ8f9MG'P[ER-J-5"KEQ3J-L"KBQpfC5"[EL"K)'ePC'P
eE3SJ)#!JBh9cG'pYBA*TE(NJGA0PC#"QEh)JFfpQG(GKFQ8JD@jdCA*MD'&ZCf8
l)'pb,!S+)#!J)'-T)%&MBfpYF'&ZH5"TG#"hDA4S)(4SC5"TEQC[FQeKG'P[EL"
jEh8JFQ9MC@PfC@3JBA-JG'mJG'KP)'pQCQ9b#L!J)#"dEb"NDA0dFQPLGA4P)'0
[FR*PFh"[EQ4TEQFJFfpeFQ0P)'0[C'8Z)#!S9'KTFb"KE(4PFQjKG'PfC5"TF`S
J)#!JB@aXEhGPC#"[EQaj)'C[FL"ZEfjMEfeYCA*MD@&X)'4TFh4bD@*eG'P[EL"
KEQ3JEfjXH5"TCL"jEh8+)#!J)(*PBf9TGQ9N)(4SC5"`FQpRFQ&Y)'PZ)'pLDQ9
MG#"MEf4P)'pb)'9iC@0eG'&LE'8JCQpbE5"hDA4S)(0eBfJ+)#!J)'&Z)'pQCQ9
b,#"TEL"KBf0[FQ3JGfPdD#"6G@*cC@0dD@pZ)')JB@*[GQ8Z+3S+9'KP)(0[GA*
MC5"MEf4P)'C[FL"K)(G[FQXJE@9KER-JG'KP)("bC@CPFR*PC#"QEh*Y)'pQ)(4
SC5"hEh*V)'C[FL"YB@YTEQFJE@pND@CTBf&dD@pZFb"dEb"TG#iJ)%C[FL"KEL"
PH'9MGA4KBQaP)(G[FQXX)'0[EA"XCA4P)(0[GA*MC5"MEf4P)'ePB@jc)'&XE#"
dD'8JFfpeFQ0P)'0[C'8JCQpb)'&XE#"YEf4eE'9c)'Pd)'0[ER4KD@jc,#"`E(9
c)'&ZH5"KFh0[BfPKG'9N)'PZG'9bCQ&MC5"NC@CTEQPdD@pZ)'CTE'9c,#"`E(9
c)(4SC5"cBh*TF(4c)(9cC@3JG'mJBfpZG(*[E#"MEfe`D@aKG'P[EL"KEQ3JD@j
cG'&XE'&dD@pZ)'pQ)(4SC5"PH'9MGA4KBQaP,L!J5'phCACPFL`JBA-JB5"cF'9
MD@&X)'9iBf9`G'P[EL`JG'KP)(0[GA*MC5"MEf4P)'4TFh4bD@*eG'9N)'jPC@3
JEQpd)'PZBfaeC'8JB@jjG'KTEQFJG'KKG#"TFb"ZEh*YB@aXH5"NDA0dFQPLGA4
PC#!SD@iJC@PdD'9b)(0[GA*MC5"[FL"LD@jKFRNJCQpbE5NJGfPdD#"dD'8JE@&
UEh)JBfpYF'pZC@jdFb!SBfpYF'PXCA)X)'YPFQjPE#`JB@jN)(0[)'pZ+5"[CL"
dD'8JEh"PFQ&dD@jR)(0jFh4PE5"[EL"hD'PMD#"dD'8JCAKPBh9dB@*XC5"bG@j
c,#"eEQaPFh-JG'KKG#"MEfe`EfjPER3JDA4cC@aQ)'&MBfpYF'&ZD@9c)(4SC5"
PH'9MGA4KBQaP,JS+5@BJC'PcG(*TBR9dD@pZ)'pQ)'9iC@0eG'&LE'8JEh)JEf*
UC@0d)'0[C'8JDA-JE@&NC5"LH5"[CQCPFQPZCb"KBf0PFh-JG'mJBfp`H5"QFQp
Y)'%JC'9cD@GZBA4PC#"`E'&MC5`JG'KPEL"[CQCPFQPZCb"PFA9TGQ&XC@jd)'&
MBf9cFb"dEb"MEh"j)(4SC5"cEh9bBf8JBfpNC5"QFQpY)(4SC5"cB@eP)("XB@0
P)'0[G@jdFb"KFb"NDA0dFQPLGA4TEfiJEfBJG'KP)(0[GA*MC5"MEf4P,#"PGQ9
Z)(4SEh9RD#"dD'PbC#"`BA*dD@9c)'&bC5"ZEh3JBfpYF'9XE'9N)(4[)'0[F(N
JG'KP)(0[GA*MC5"KE'pZCb"hDA4S)(4SC5"[BQTPBh3JBfpNC5i+$!SJ)$3Z)&P
[G5"YBANJEQpd)'0[F(NX)'e[C'PQH5`JFh9LE'PMC@jcC5`JEh)JC'PcG(*TBR9
dC5"dD'8J8(*[Ch*KE5"PH'0PF(3JBA-JCAK`FQ9cFfaj)("bEhCTC'9N)(9ZC'9
b)(4SDA-J6'PMC@jcC5iJ)%&ZH5"KG(4PEA"d)'pdD'9bGfPcC5"dEb"MEh"j,#"
YEf4TCRNX)(0eBQaTBf9ZFf8JEh)JC'PcG(*TBR9dC5"dD'8J8(*[Ch*KE5"TFb"
fEfPN,#"KEQ3JGfPXE#"KGA4[E@&dD@0KE'aj)(4PFQeTEQ&dC5"jEh9b)(*TCfK
dFb"eEQ4PFL"dD'Pc)%aTBf9ZFf8Z)%K[Gf9fCA)X)("KFR4TCA-JGfK[)'KKGQ8
JFQ9MC@PfC@3JBfp`D@9c,#"[FL"bD@GSG(-X)'CbEfdJH@pe)(9ZC'9b)(4SDA-
J6'PMC@jcC5"hD@aX)'j[G#"SBACP)(4SC@Pb)'aTBf9ZFf9c)(4PFQeTEQ&dC@3
JFfmJE'pZCb"KFb"cG@0S)("KFR4TCA-JFQ9YB@PZ)'PZ)'CeE'`JBfpYF'aTB@j
MC5i+#L!J05iJ@@pe)'&bC5"ZEh3JFQ9aG@PbC@3JG'mJB@0MCA"d)(4SDA-J6'P
MC@jcC5`JFfPZBf8JH@pe)'KKGQ8JEQpd)(0TCfjPC#"TG#iJ)%K[Gf9fCA)X)'j
[G'KTEQFJC@acC5"RFQ&ZG(-JH@pe)("PFQeTFh0TEfiJG'mJE@pND@Cj)'pb)'4
TFh4bD@*eG'8JG'KP)&"bEfGbB@dJEh)JDA4c)'4PFQPfBA4TGQ8JGfpbDh-Z)#"
8D'9cC5"KBh4TEfjc)'&bC5"`FQpSD@*TG'9N)'*j)'aKGb"TCL"jEh8JC'mJEQp
d)'&MBf9`G#"dD'Pc)%aTBf9ZFf8Z)#"8D'9bC@C[FQ8X)'*j)'e[C'PQH@PZCb"
[FL"NDA0dFQPLGA4TEQFJG'KP)&"bEfGbB@dJ+'pb)'&ZH5"hEh*V)'*KFf9N)'p
Z)(4SC5"3FQpRFQ&Y+5`JH@pe)'PZC'PMBA4P)(P[GA)JB@0MCA"dB@jMC5"[CL"
dD'Pc)%aTBf9ZFf8JG'mJC'mJFfmX)'&ZC#"KE'`JDA4c)(4PFQec)'&ZC#"MEfj
NDA4TEfjc)'C[FL"MEh"jD@jR,#"NDA0dFQPLGA4TEQFJEh)JE@pND@CjD@jR)(4
SC5"3FQpRFQ&Y)'pb)(G[FQYc)'*KFf9N)'pZ)'Pd,JS+)#!f,L"&B@0S)(4TE@8
JH@pe)(*PC'PcG(*TBR9dC5"dD'8J8(*[Ch*KE5!SEh)JB@jj)(G[FQXJBQ&cC@3
JEfiJG'KP)&"bEfGbB@dT,#"dD'8JFQ9MDA"TC@jd)'&eG'pYBA4TBf&XE(NJFQ9
MC@PfCA-JB5"XD@0PER0P)'CbEfdJG'KP)'pbD@GTEQ&X)'aTBf9ZFfpb)(4[)'0
[F(NX)'4TFh4bD@*eG'8JEh)JE@pND@Cj)(4SC5"3FQpRFQ&Y)(0eBQTPBh3JG'm
JG'KPFf8JG'9bEA-JB@jN)'0[EQ4TG'P[ER-Z)#"CEh8JE@&j)'j[G#"TEA"[Ff8
JB@jj)'CeFR4SCA)JFQ9cG(*TBh4TEfjc)'pZ)(4SC5"bC@0TF'PPER4c*b"PH'9
bBfPcC5"[CL"dD'8JFQPRD(4c)'GbB@jdC@3JD'9bC@PZ,L"CEh8JBA*P)'j[G#"
bCA0`EfjcD@*XC5"QEh)JC@jQEh*MD@jR)'0[EA"XD@&ZBf8JBRNJG'KTFQ3JF'&
bG'PPFb"dEb"dD'Pc)%aTBf9ZFf8Z#JSJ)$FZ)%PQ,#"KFb"K)'0[ER0PFA9PEQ0
P)'pQ)'%JBfpeFR3JDR9NCfePER3JEh)JB@aXC@GKG'P[EL"[CL"`BA4PER3JD@j
QFQPZCf9YC@jd)'pb)'C[FL"KERNJEh4SCA)JFQ9KFfpZ)#KZEh3JE'PYDA4PC#"
dEb"`BA4PER3JDA0cG@9c+5`JBfpZC'PdD@pZFb"KFQ8JD@e`Eh0PC#"[EL"jEh8
J+(GSCA4SCA)JBRNJBfpeFR3JEh*NCA)X)'&RFQ9PE@9ZG#"[FL"[G'KPFRGTFf8
T)(4SBA3JBfpZG(*KC'PMG#"dD'8JBfpZC'PdD@pZFb"[CL"dD'Pc)%aTBf9ZFf8
X)(4SCANJC'mJEQpd)'9iBh9cC5"jEh8JCR*[E5"dD'8JBfpZC'PdD@pZFb"[CL"
dD'Pc)%aTBf9ZFf8Z)#"*CL"jEh8JBf&ZEQpd)'4TFh4bD@*eG'8JFfmJBA-JG'm
JFf&dDA0QH5"cD@eeE(4KEQ9[GA0XH5"jEh9b)'pLE'PRBA4TEfjc)(9ZC'9b)(4
SDA-J6'PMC@jcC5"KEQ3JB@jj)'pdD'9b)("PFR4TEQ9ZG#"[BQaTCf&dD@pZFb`
JG'KPEL"KFb"K)'0[ER0PFA9PEQ0P)(P[G5"YBANJEQpd)'4TFh4bD@*eG'8JG'K
P)&"bEfGbB@dJBA3JB@aX,L!J4Qpb)'9iB@e`E'8X)'PQ)'%JF'&dC@jd)'aTBf9
ZFf8JGfpeE'3JEQpd)("PFQeTG#"bEhPKE(4j,@CbC@8JFQ9NDA0dFQPLGA4TEfi
JEfBJG'KP)&"bEfGbB@dJBRNJB@aX)(4SEh0P)(GSEb"bC@0PDACP)'0[F'PPFb"
NDA*PBh4XH5"[FL"TEQ4TFQ9MG'aj)(4SFQpeCfJJH@pe,#"dD'9Z)(4SC5"[EQa
j)(GKH5"jEh8JBfpeE'3JFf&dDA0QH5"LEh4S)'Pd)'&ZC#"dD'Pc)%aTBf9ZFf8
JGfpeE'3JBQ8JG'mJFQ9QFQ&TEL"PER4TFQ9XH5"QFQpY)'4TFh4bD@*eG'P[EL"
[CL"dD'8J8(*[Ch*KE5i+#NPQ)'&ZH5"`Eh*dD@pZ)'pQ)(4SDA-JFf9MG'P[EL"
TFb"SC@aN)'PZGQ&XD@3JEh)JG@jPEQC[FQ0PB@*XC5"eEQ4PFL"KERNJF'&bG'P
MG@aKFL"MDA*MG@ecG'&ZBf8X)(4SC5"LB@aKEQ0P)'pQ)(4SC5"cC@0dD@pZ)'P
c)'PZG'9ZC'9N)(4[)'&`F'aj)'&ZC#"dD'8JFf9MG'P[EL"KFb"K)(GSEfaP)'P
c)'PZG'9ZC'9N)(4[)'&`F'aj)'PZ)'pdD'9b)'0TFQ0eEA0dB@jMCA-Z#JT*G#"
TFb"ZEh3JG'KP)("eFR"[Ff8JEfBJG'KTFb"cC@0dD@pZ)(4[)'PZC(9MC5"jEh8
JG'mJD@jQFQPZCf8JB@jj)("KG'9ZG(-JEh)JEh4SCA)JF(*[F'9bG(NJFQPRD(3
JBfaKD@ec)'pb)(4[)'0[ER4PFh3JGQ&XD@4TG(NJEfBJB@jj)(0eBfJJBfaKD@e
c1b"dD'Pc)(0PBh4TEfiJD'&c)(4SC5"cEfaP)("eFR"[Ff8JEfBJF(*[G'9MG'P
ZCb"dD'8JD@jdC@GbDA4j)'pQ)(4SC5"QFQ9P)(0[CR4hBA*P)'4TFh4bD@*eG'P
[EL"cHA0dC@dX)(GSD@0S)'Pc)'PYF'aPE@9ZG'9N)'*j)("eBQaTBb"XD@0PER0
P)("bB@0dD@0PFbiJ)%eKERNJF'9[F'aP)'KKGQ8JE@&NC5"RC@jPFQpeFb"MEfj
dFQPLGA4TEfjc)(4[)(4SC5"hD@4P)(*KEQGP)'pQ)(0[CR4hBA*P)'4TFh4bD@*
eG'9N)(4SFQpeCfJJG'KKG#"cHA0dC@dJD@iJFQ9XD@&ZBf8JEfiJBfpZFfPcG'9
ZG#"KF("XD@0KG'P[EL"[CL"dD'&d)(0jFh4PE6XJDA3JDA-JGA!JG'mJG'KP)'&
eG'K[FLpNEfj[FL"dEb"NC@0TC'8JD@BJD'8JEh)JFfKP)'Pc)(GTE'aTEQFJG'm
JC'PcG(*TBR9dC5"cEfCdGf&bC5"dD(*[G@GS)'&ZH5"[G'KPFL"cHA0dC@dJB@j
N)'%JE'PMC@jcC@8JBf&ZEQpd)'PYF'pcC5"dD'&d)'0SEfPMC5i+#P4SDA-JFf9
MG'P[EL"TFb"TER4PEQ4PC#"dEb"YB@YP)(4SEh*[G@GSE(NJBfaPBA)JGfKKG#"
TFb"LC@aTCACPC#"dEb"LC5"K)'0[ER0PFA9PEQ0P)'pQ)(4SC5"bCA0d)'pQ)(4
SDA-J6'PMC@jcC5i+$!SJ)$JZ)%PQ)(4SC5"NDA0dFQPLGA4TEfiJB@jN,fpb)(9
cC5"[CL"dD'8J8(*[Ch*KE5"TFb"bCA0dFQPMG'9N)'PZ)'0PFR4KD@iJBfpeER4
bD@9c)'9TG'KPFL"LH5"`BA4PER4c)'pb)'*j)'0[F(PbD@GSG'9N)'PZG'9bCQ&
MCA-X)(4SC5"[FQPRD@jKE#"MEh"jFQPRD(3JD'pXC'9b)(GSEb"`E'&MCA-JG'K
P)&"bEfGbB@dJG@jNCA)JG'KTFb"-D@0PER0P)'eKH5"KC'3JB@iJCAK`E'PMDA3
JCf9[Ch*KF'KTBf&X)'4TFh4bD@*eG'P[EL"XD@eTG'&dD@pZ)'9iBfaeC'PZCb"
dD'pcC5"MEh9ZG(*TCA-X)(0[)(4SBA3JC'PcG(*TBR9dD@pZ)'Pc)("PFQeTG(4
PC#"[EQaj)'PZ)'pb)'&YEfjR)'0[G@jdFQPPFb"ZEh3JG'KeFb"PH'0XG@4PC#i
J)%PZ)(0eBfJJBf&cC5`JG'KTFb"-D@0PER0P)'PZBfpbF'pbBA4PFb"dD'8JE'P
YDA4KG'P[EL"KFb"TCL"hFQPdG'9Z)'PZ)(4SC5"LEf4j)'pQ)(4SDA-J6'PMC@j
cC5i+#L!J15iJ9'KP)%CbC@8J8fpQG(GKFQ8J4QpeEQ4KG'P[EL"YBANJF(9LE'P
cD#"bCACTFf9N)'&ZC#p[FL"ZCAFJGQ9bFfP[ER-JEfBJG'KP)%GPEQ9bB@`J8(9
LE'PM)%aTBf9ZFf8JCR*[E5"dD@eP)(4[)(4TE@8Z)#"6G@0S)'jPGb"fCA*cD@p
ZFb"hD@aX)'*P)(0TE@PXBA)JD@iJFh"TFQPd)(4[)(4SC5"`FQ9cC@jd)(CPFR0
TEfiX)'*eG#"YBANJC'PQCQ9b)'PZ)'4PG'&TE#"dEb"KC'4bCA0c)'jPGb"`FQp
LE'9YFb"[FL"MEfjMCA*ZFbi+#N9KBfJJGQ9bFfP[EL"TFb"RDACPEL"K)'4TFh4
TEQGeDA0SD@jR)(CPFR0TEfiJER9YBQ9b,L!J5@BJG'KP)&"bEfGbB@dJFh"PBfP
QD@9c)'%JGQ9bFfP[EL"ZG@eLCA)JEfBJG'KTFb"-D@0PER0P)(GSD@0S)'&`F'a
TCA-JG'mJDA3JB@jN)#*KERNJE'&dCA)JGQ9bFfP[EL)X)(P[G5"SBACP)(4SC5"
[F(4TEfiJEfBJCQpXE'phD@jR)(4SC5"dCA*YFb"KEQ3JBfpZC'PdD@pZFb"PDA4
SCA)JEfBJG'KKG#"fCA*cD@pZ)'pb)'pQ)'&ZH5"XBA4PFL"fCA*cD@pZ)("eBQa
TFfKPC#"LH5"dD'8J4R*PC5"6EfCdGf&bC5"'Eh9ZC'&dD@pZ,L!J5@BJG'KP)&"
bEfGbB@dJC'pPFb"ZEh3JFh"PBfPQH5"K)(CPFR0TEfiJER9YBQ9b)'pQ)(4SDA-
J6'PMC@jcC5`JH@pe)'eKH5"MD'p[Ff8JB@jj)(CPFR0TEfiJCACPFL"`G@*XDA0
SC@3JBRNJG'KP)%CbC@8J8fpQG(GKFQ8J4QpeEQ4KG'P[ELi+#L!J-6!Z)%PQ)(P
[G5"hDA0S)(4[)'PZBfpbF'pbBA4P)("KFR4c)'pQ)(4SC5"3FQpRFQ&Y)'PZG'm
JEh4SCA)JCR*PC5"`FQpRFQ&YFb"hD'pcC5"NDA0dFQPLGA4TEfiJBfpZC'PdD@p
ZFb"KFQ8JC'PQCQ9bC@jd,#"hFQPdC5"dEb"dD'8JBA9dD'pb)(4[)'&cDb"QEh)
JF'9bE@PcFfP[ELiJ)%C[FL"cEfCdGf&bC5"hD'PMD#"TFb"MEh"jFQPRD(4PC#"
LH5"dD'8J4R*PC5"6EfCdGf&bC5"'Eh9ZC'&dD@pZ,#"hFQPdC5"dEb"dD'8J4R*
PC5"6EfCdGf&bC5"'Eh9ZC'&dD@pZ1b"hC5"cEfePG'PYCA-JE@&VC5"PH'0PF(4
TEfjc)'C[FL"dD'Pc,L!J6h9b)'4PBfPcD@pZ)(GTE'`JBQ8JCh9TC'9N)'*j)(4
SC5"dGfmJCfpKE(-JEfBJF(*PFf9bGQPZCb"dD'8JCR*PC5"cG'&dGA-JEfBJB@a
X)'4PFQPfBA4TGQ9c)'pQ)'peFL"QFQ9P)(0[CR4hBA*P)'&ZC#"[CL"`FQpYEh4
TEQFJG'KP)(0SBA*TEQFJB@jN)(*PGA0P)'pQ)(0[CR4hBA*P)'GPEQ9bB@aXH5i
+#JN*#5!J)#"16b"A39*538j8@3S+)#!a-5iJ3N9$399645"85%8J8&*24e*"65"
*8b"-580&6P0&4#"'8N9&)%p')%0)39*(45`J9%K&8N8J59-J6NmJ9d&58N&19&N
J4Np5)&4)45"38Np(8N&0,#"86b"85%8J49K848j8)&"&8Ne*9&4&4#"#@5""8&"
-580"3Na&)%a"9biJ)%9B3d939#"A5%91)%p85%959dP645"69%&8483J58iJ9e*
*9%P14b"85%8J3dp3@9**4dK8)%K26%4&8P-J38j%,dp5)%p85%95)&""8P4*49-
J8&*29NP%45"85%8J8&*24e*"65!L39-J59-L)&G*9%K2993J9d&58N&19&NJ6dB
J38jC)%Y*6N3X)%9*9%K&8L"&@&"54906483J6e)J58e36%P&4#`J58j$6&9%58j
(,#"#993J6Np8)%a*68P8483J9%mX)&4)45"*69"-589%)&G"8P*"6P4*49-J6dB
J68953dK"6P4"3NP-594C)%&14#"'59414906)%C28L"")&""8P4*3e9-39)J8&9
58%p645iJ)&4)45"&6P4*8N8J8NP65b""8b"86b"85%8J899"6%P8@5""6N3J8%9
54Np568&13d8J6dBJ9%K&)&"56dG538dJ59-J9dP85#"C6e8Z)#"65%p96%3J9%K
&)&"56dG538dJ8&*29N8J4%9'480859C&,#"C6e8J390698e&)&4)45"$6e08)%p
')%&-6#"1480&8e0"8PNJ8d959NP$58j(,#"549""59)J6e)J3dp58N9$9%P26Li
+#L!J-6)Z)%P1)%j2)%9@48j8)&916%968b"549&959*&4#"#@5""8&"-580"3Na
&)%a"9b"28L""4e*&483J9%mJ58iJ9e**9%P14b"A58a-)%&1@5"$6e"C8NP(5&3
J5%p-4%95,#"28L""6PNJ6e4)49)J8%&59&NJ9dK2)%e"@5"06d4*4PNJ38j%,dp
5)&*&4%P69&**3P9845"85%8J8&*24e*"65""8b"349*05948483J38*29N8X)%*
&)%a*38*-45"86b"C6e8J4Np5)%4"68&(49-X)%P13da94%P14b""6PNJ4d9149*
"6#`J8e"&3dP"6#`J58j$584&6P4"6#"28L"$6dj649&948j858&-)%4"68&(49-
J39**8dP14b"2993J6dBJ9%K&)&9645"28L"*6N&#58a*9&NJ9%mJ990&)&4)45"
38Np(8N&0)#K*6N0-984*6NFJ3P98)%j29#"-58e*9%9%)&42)%a28e-J6dBJ4%&
835"28L"%394")%*&58j()&*&6N4&8N9%)%P1380$99*"9%8J6e)J6%p68d96)&0
98e4"58j&4#"#@5"C6e8J6e)J9%K*8N3J8%&59%P&8b"28L"")%C"58a98N8J6dB
J9%K&)&"56dG538dJ9%mJ6e"&8N&845"A594))%&1@5"29%K&8L"38Np(8N&08bN
X)%9@48iJ58BJ8e9$5#")6da%49)J6e)J6e4)49)J8%&59&NJ5%&6)%*&48iJ384
@590&4#"24L"85%8J8%p68dP#58a*9&NJ6dBJ8e9$5#"%38e"4d96,JS+#3NJ)#!
J)%914#"24L"849*08b""6N3J3dp14%P858p18`S-#JNJ)#!J5'ph)(4[)%&`F'a
j)&4SCA0P)&4PFQec)(4[)&P[GA)J6Q9h)&"bEfGbB@ec#JSJ)%PQ)(P[G5"NCAC
PE'p`)'%JEQ9h)("bEfGbB@dX)'&ZC#"jEh8JGf&ZG#"TG#"dEb"LC5"[CL"dD'8
JCh*PBA4PFh3JF'pcFfPLE'8JGA0P)(4[)(4SC5"`G@*XD@-X)(4SC5"LCA0d)(G
KH5"dEb"KBfKTCACP)(4SDA-JDA-JG'mJE@&VC5"TG#"QFQ9P)(0[CR4hBA*P)(G
SD@0S)'9fCA*jEfjP)'0KEL"bC@4TFh4bD@*eG'8JB@jN)'0SB@jRC5"eEQ4PFL"
dD'9cC5"dCA*YFbi+#L!J9'mJC'mJFfmX)'&dG'&MD#"dD'8JCQpXE'phD@jR)'j
[G'PMCA-JG'mJG'KP)("bEfGbB@dZ)#"*G#"TFb"cB@CPFh3JG'mJBA4dB@0S)(4
SC@dJG'mJG'KP)(0dBA*d)'pQ)'9KBfJJFfpeFQ0P)'CTE'8JG'mJE@pcG#"PCQC
PBh4TGQ9XH5"MEfjfCANJG'KP)'9iBfaeFfP[EL"[CL"hBA*bB@jdH6XJB@jN)'9
KBfJJCQPXC5"cD'peE'3JD'&fC5"KG#"XC@&cG#"dD'8J)Q0[F(PbD@GSG#)JE'P
ZC5"KEQ3JB5"`EfPZG'9b)(4[)(GSCA*P)(4SC5"QG@aX)'j[G'PMC5"TFb"QEh9
ZC#i+#L!J)#!mEfjP)'aTEQ8JG'mJCfPfC5"dD'8JF(*[Ch*KE5Gc)'jKE@8JB@j
N)'%JBR*TC@BJD@4PB5"[CL"hD'&d)'Pd)'4[CA-Z2JSJ)#!J3fp`HA*TCfKd)#K
$+5!a1APj)#!mEQ&YC5"[CL"KGA4SEh)q#JSJ)#!J9'KTFb"`FQpRFQ&Y)'Pc)'C
bC@8JFfpQG(GKFQ8l)(P[G5"MB@iJFQ9NDA0dFQPLGA4P)'Pd)'&ZC#p[FL"YEf4
TCRN+)#!J)'Pd)(9ZC'9b)(4SC5"dCA*YFb"[CL"dD'8J4dj9)%GPEQ9bB@`J8(9
LE'PM)%aTBf9ZFf8JBA-JF(9LE'PcD'9N)'*j#L!J)#"dD'8J4R*PC5"6EfCdGf&
bC5"'Eh9ZC'&dD@pZ1b"PDA4SCA)JGQ9bFfP[EL!b)'pQ)(4SC5"-D@0PER0P,#"
[FJSJ)#!J+'&d)(P[GA)JEh"dD@pZ+5"KERNJE'&dCA)JGQ9bFfP[ELi+#L!J)#"
8D'Pc)("bEfGbB@dJDA-JC'PcG(*TBR9dC@3JD@iJG'KP)'K[F'8JG'KKG#"TG#"
hD@aX)'*P)(9cC@CeE#`+)#!J)'*eG#"A594)6e98)%&1@5"A39*538j8@6XJGfP
dD'peG#"PGQ9Z)(4SC5"TEA"XD@9N)(GKFR*KER4j)'pQ#L!J)#"049*$5%&19%&
#58a*9&NJEh)J4NP86N968b"'6e)J35"339*858096%&5)&"98P"28d8Z)#"6C@8
JG'KP#L!J)#"(6P8J4f9ZCA*KE#"3G@*XD@-J6'PMC@jcC5"QEh)JE@pbC5"NCA4
KD@ac,JS+)#!J)&P[G5"cD'peE'3JD'&fC5"bC@0PDACPC#"K)'0[F(NJEfBJG'K
P)%G195"(C@jPFQ&X)&"eBQaTBb"-D@0PER0P#L!J)#"KE'pZCb"hDA4S)(4SDA-
JF(*[Ch*KE6XJD@BJEQpd,#"hFQPdC5"dEb"dD'8J4R*PC5"6EfCdGf&bC3SJ)#!
J4QpeEQ4KG'P[EL`J5@jM,L`J0MFe)%eKFh-J3ACP,#"$B@eLFQPNCf8X)%e")$!
b-6-j,#"98d%Z#JT"E(0[)'&NC#"TEQC[FQeKG'P[EL"[EL"SEhFJG'mJBfpZG'&
MG#"jEh8JBRNJC@aPBh4bEfjTBb"KEQ3JF'&`CA)JE@&TE#i+#NPQ)(4SC5"`FQp
RFQ&Y)'Pc)'PZG'9bB@0dDACP,#"YB@YP)'Pd)'peG("eG#"K)(0SEh*d)'j[G'P
MC5"XD@YP)(4SDA-JGfKPEL"TG#"cG'&bG(-JD@iJB@iJD@jdCA*KBh4TGQ8JE@p
NC6S+#L!J)#"(EQpYEhCTFfP[EL"fCA*cD@pZ)$Bj,#"$Eh"jFQPRD(3J+%-T)$%
jHANJEQ&YC5"[CL"KGA4SEh)+)#!J)%GZEfe[GQPcD@pZ)'0[E@9c)(GTG'JJ38*
66da99%9-@5"16b"A39*538j8@6XJCQpb)'4PG'&TE(-JG(P`C5"JFfK[Gb"h*bi
+)#!J)&4SDA-JDA-JCR*PC5"cEfCdGf&bC5`JB@jN)(P[G5"KFQ8JGf9XBfpYC5"
dEb"bC@4TFh4bD@*eG'8JDA3+)#!J)(9ZC'9b)'0PFR4KD@iJBfpZC'PdD@pZFcX
JG(P`C5"JFfK[Gb"M*b"QEh)JC'9dB@PXFbi+#P4SC5"SHA"[G'KPG'PMB@`JBfp
YE@&ZC(-JB(0SEhFJGbFJB@jN)'"cD'ph)'-R)(0SEh9XC#"cD'ph)(4SC5"KF("
bEh"bD@&dC5"`BA*dFb"[CL"dD'8J4f9ZCA*KE#"3G@*XD@-J6'PMC@jcC5iJ)%p
Q)'0[GA*cC5`JG'KP)'0[E@eKEQ4c)(P[G5"eFf8JE@&j)'*P)'0KE'aPC#"cEfe
PG'KTEQFJEh4SCA)JG'KKEL"JFfK[Gb"h*b"KEQ3JB(0SEhFJBbFl)(4SCANJBfp
eE'3JCACPEL"LC5"YEh9cC5eME'PMDh-JEh)JE@9ZG5"TG'9YFbdYGfKKG'9fCA)
JFh9TG(-JH@peFL"`FQpRFQ&Y,JS+@@pe)(0SEh9XC#"KE(0[)'GPG#"jEh9b)'9
YF'a[H@9b)#KTCL"jEh8JGfpbDb"KFb"K)("bEfGbB@eYCA)T)'pb)(P[GA)JFf0
SEfpX,#"TCL"KERNX)(4[)(0TCfiJB5!LBfp`HA*TCfKd)'4TFf0XB@PYCA)L)'C
[FL"dD'8JF(*[Ch*KE5`JD@BJEQ9MCA0cBA*j,L!J5'9bC5"TFb"K)(0KEA"XC6X
JB@adCA)JG'KP)'jKE@9c1JS+)#"CEhP[C(PZC5`J5@jM,L`JD'9bC@*j)'4TFf0
XB@PYFb"KE'`JBfp`HA*TCfKd)'PZG'9bCA0d)'PZ)(4SC5"`FQpRFQ&Y#L!JB%G
ZEfe[GQPcD@pZ*b!SGfKTBfJJE@&VCA-JF'&cFf9c)'&d)'0[EA"TE'9bFbNJGh*
TG(4PEL"LH5"+B@ePFb")B@0VCA)Z#JSJ)$acD@GZBA4eFQ8JEfBJ9(NJ3fp[EMi
X)$%J3A"bD@`J-6Ni13SJ)&4j)%0[EfiX)&"bCA0TC'9ZG#"[CL"@D@0P#JT8D'P
c)%GPEQ9bB@`J8(9LE'PM)%aTBf9ZFf8JC'pPFb"ZEh3JF'9bE@Pd)'PZBfpbF'p
bBA4TEQFJH@peFL"`FQpRFQ&Y)'PZG'mJF(*[F(*TCA4KFRNJF(*[Ch*KEA-Z)#"
*CL"jEh9b)("bEfGbB@dJDA-JB5"cG@*bEh9dD@jP)'aTBR*KFRNX)(P[G5"YBAN
JBfpZFfPNCA)JDA3JE@pbC5"eFf9QG@`JG'mJF'9bE@Pd)'aTEQYTEQFJF(*[F(*
TCA4KFRNJBA"`E'PMBA4TEfjc)(GTG'JJG'KP)'aTBR*KFRNZ)#"*CL"dD'Pc)'P
c)(GSBA3JH@pe)(GKER3JG'mJC'mX)(9cC5"dD'8J4dj9)%aTBR*KFRNJ4f9ZCA*
KE#"3G@*XD@-J6'PMC@jcC5"TER0dC@&N)'pQ)(4SDA-J6'PMC@jcC5i+!!!"PJ!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1!!B!!!!%"!!!!!"!!!3B")!1J!3%!!!!
!%NPZFh4KE'aPFL"-EfFJ4QPXC3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!j*ER0dB@aXCA)J4'&dB3!!!!!
!!!!!!!!!!!!!!!!!!!!"i!%"!!!!!!$Z)N9KFhNJ5@jcG'&XE#)JGfPXE#"TER0
dB@aX)'&XE#"QD@aPFb"QEh)J3Q9bDf9XCANJ6'pREb!e,M8X)'PZBfaeC'PZCb"
KE'`JC'pMG@ePER4KG'P[EL"KEQ3JFfpeFQ0P)'CTE'9c,Jd08f9XC@0d)#*$GA0
dEfdJ5@jcG'&XE#)JCR*[E5"dD'8JE@9ZG5"KBQpfC5"dEb"PE'PYD@jKG'8JFfp
YC5"QD@aPFbi0$90PE'9MG#!L9@jTER0dB@aX)L"dEb"bC@e[GQ8J3Q9bDf9XCAN
J6'pREb"QFQpY)(P[GA)JFhPcG'9Y,J!!!!3!SS)!!!!!A,3P'Ycc0bpVY*3jrGb
"2I4#`23%ZdRF`%)['Yblp#hdrcF[NcG*0ch(amI(amI(amI(al5brT+DdY,bdY,
5,I$em2)YNJ[5&5e[pT,l,Il4#`-YJ)[5dXFi1$Ji!!!"!!!"ded!!G*G!!!32J!
)%)!(r3#!!"`21J!a3Nj%6!!!!C*$99*6!!F"RN0[C'8!!!(q4%P86!!P!JT%Bfe
`!!%$dNC548B!!32U5801)`!&"!**3dp1!!%%5Na%48B!!!4L689193!&"'j0Bfe
N!!!%YP"*3e3!"36#8dP$6J!%"3T658FM!!!&4P0*@N8!!!959NP6-`!!"9jKCA4
P!!!&DQ0KFQ)!!!9fBfCbC`!!"B*MD@0Z!!-&MQP66P!!!!@qD@0X0!!&"FTTBf`
i!!8'%QPME5-!!3CDD@0Y0!!""R*TBfdi!!%'LQPMFb-!!`DLD@0c0!!&"Y*TBh-
i!!-('QeMG')!!!G+4%a24`!N"eC(58C'!!!*%NPZFdX!!!NH8e45)`!0#5TKBh4
L!!!*dQ4MG')!*JRHC'aRH!!a#l*TBh4L!!81#R"XFh3!!!j5Fh4jE!!!$PjfCA*
c!!!1DNG-8e3!!3jf9Q&bF`!!$Sj*6Na$!!)1QNP-3d-!!!kqD@0ZF`!!$XT849K
8!!)1eN0"6%`!!!lkF%*dF`!!$`CfFQ9R!!!2%J#!rrm!!%Uj!!!!!!%!rrm8!%K
j!!!!!!%"rrm8!%M"!!!!!!%#rrm8!%N*!!!!!!%$rrm8!%P4!!!!!!%%rrm8!%Q
C!!!!!!%&rrm8!%RK!!!!!!%'rrm8!%ST!!!!!!%(rrm8!%Ta!!!!!!2V!+-8!)+
D!!!!!!2Rrrm8!)50!!!!!!2Srrm%!)86!!!!!!2Trrm%!)DC!!!!!!2Urrm%!)F
Y!!!!!!2Vrrm%!)HG!!!!!!2Xrrm%!)M&!!!!!!2Yrrm%!)P(!!!!!!2Zrrm%!)R
2!!!!!!2[rrm%!)TE!!!!!!2`rrm%!)Y*!!!!!!2frrm%!)[r!!!!!!2hrrm%!)a
[!!!!!!2irrm%!)cY!!!!!!2krrm%!)j*!!!!!!2prrm%!)kT!!!!!!3"rrm%!)m
P!!!!!!3$rrm%!*!!!`!!!!!%"[rr"!#4-`!!!!!%"rrr"!#4M`!!!!!%#2rr"!#
4k`!!!!!%#Irr"!#54`!!!!!%#rrr"!#6,3!!!!!%$Irr"!#8!`!!!!!%$[rr"!#
8T`!!!!!%$rrr"!#9'`!!!!!%%[rr"!#9,`!!!!!%&Irr"!#9E`!!!!!%&[rr"!#
@+3!!!!!%)2rr"!#@Q3!!!!!%+[rr"!#@[`!!!!!%+rrr"!#@k`!!!!!%1Irr"!#
A*`!!!!!%2Irr"!#AC`!!!!!%3[rr"!#B8`!!!!!%4rrr"!#B[`!!!!!(c[rr"!#
CF`!!!!!(d2rr"!#CT`!!!!!2S2rr"!#Ci`!!!!!$l!!8"!!$X!!!!!!$l3!Y"!!
D1J!!!!!!J2rr!!"+i3!!!!!!JIrr!!"+l!!!!!!!J2rr"!"-r`!!!!!!J3"Z"!"
1!`!!!!!$k2rr"!"+p`!!!!!$k[rr"!",q`!!!!!(dJ"3!!"&N`!!!!#rZIrr!!&
G"J!!!!!$k[rr"!"3Z`!!!!!%"[rr"!"42`!!!!!%%!!!&!!!!!!!!!!6L2rr"!#
%FJ!!!!!$kIrr"!#P"`!!!!!$k[rr"!#P0`!!!!!$krrr"!#P@!!!!!!$m[rr"!#
PT!!!!!!$mrrr"!#PdJ!!!!!6L2rr!!#%K`!!!!!%!2rr"!#Q#`!!!!!(c[rr"!#
Q`3!!!!!,`2rr"!#Y#`!!!!!,`Irr"!#YV3!!!!!R%2rr!!$f`!!!!!!(dIrr!!%
K,J!!!!!$lIrr"!"25`!!!!!$l[rr"!"2"`!!!!!$lrrr"!"2M`!!!!!$m2rr"!"
3G`!!!!!$mIrr"!"2d`!!!!!$kIrr"!")B`!!!!$rrrrr!!#&"3!!!!!!!!#8!!#
#K`!!!!!!!2rr"!#!!3!!!!!!!2rr&!!rKJ!!!!!!!!#Z!!#%S3!!!!!!!2rr"!"
a1`!!!!!!!Irr"!"df3!!!!!!![rr"!"iK`!!!!!!!rrr"!"m(3!!!!!$k2rr!!"
rq`!!!!!!J2rr"!"SD`!!!!!!JIrr"!"UE`!!!!!$k2rr"!"QC`!!!!!$k[rr"!"
NB`!!!!!(d[rr!!!rL`!!!!#rZIrr!!&IeJ!!!!!!J2rr"!"Cb`!!!!!!JIrr"!"
Gc`!!!!!$k2rr"!"4``!!!!!$kJ#&"!"9a`!!!!!(dJ"'!!""M`!!!!#rZIrr!!&
KfJ!!!!!$k2rr!!"XT`!!!!!$k[rr"!"XF`!!!!!$k2rr!!"Y2`!!!!!$k[rr"!"
Xf`!!!!!$k2rr!!"ZC`!!!!!$k[rr"!"YS`!!!!!!J2rr"!"Kd`!!!!!!JIrr"!"
L&`!!!!!(dJ"D!!"'P`!!!!#rZIrr!!&H#J!!!!!!J2rr"!"`-`!!!!!!JIrr"!"
`Y`!!!!!$k2rr"!"[V`!!!!!$k[rr"!"[+`!!!!!(d[rr!!"'f`!!!!#rZIrr!!&
H6J!!!!!!J2rr"!"L@`!!!!!!JIrr"!"MA`!!!!!(dJ"N!!"(A`!!!!#rZIrr!!&
HdJ!!!!!6L2rr!!#%6J!!!!!$k2rr"!#F)3!!!!!$kIrr"!#F23!!!!!$k[rr"!#
F@3!!!!!$krrr"!#FG3!!!!!$l2rr"!#FN3!!!!!$lIrr"!#FV3!!!!!$l[rr"!#
Fb3!!!!!$lrrr"!#Fj3!!!!!$m2rr"!#G!3!!!!!$p[rr"!#G(3!!!!!$prrr"!#
G13!!!!!$q2rr"!#G93!!!!!$q[rr"!#GF3!!!!!$rIrr"!#GM3!!!!!%!Irr"!#
GU3!!!!!%!rrr"!#Ga3!!!!!%"[rr"!#Gi3!!!!!%"rrr"!#H"`!!!!!%#2rr"!#
H)`!!!!!%#Irr"!#H2`!!!!!%#rrr"!#H@`!!!!!%$Irr"!#HG`!!!!!%$[rr"!#
HN`!!!!!%$rrr"!#HV`!!!!!%%[rr"!#Hb`!!!!!%&Irr"!#Hj`!!!!!%&[rr"!#
I!`!!!!!%)2rr"!#I(`!!!!!%+[rr"!#I1`!!!!!%+rrr"!#I9`!!!!!%1Irr"!#
IF`!!!!!%2Irr"!#IM`!!!!!%3[rr"!#IU`!!!!!%4rrr"!#Ia`!!!!!(c[rr"!#
Ii`!!!!!(d2rr"!#Ir`!!!!!2S2rr"!#J'`!!!!!!J2rr"!#J0`!!!!!$k2rr"!#
Nr`!!!!!$k2rr"!#Z4`!!!!!$kIrr"!#c*3!!!!!$m2rr"!#c83!!!!!$mIrr"!#
j#J!!!!!$m[rr"!$,'!!!!!!$mrrr"!$,EJ!!!!!$p2rr"!$04`!!!!!$pIrr"!$
6(`!!!!!$p[rr"!$9f3!!!!!$prrr"!$A83!!!!!$q2rr"!$F[!!!!!!$qIrr"!$
Kp!!!!!!$q[rr"!$Qf!!!!!!%12rr"!$Qk!!!!!"UVIrr"!$RD!!!!!!$k2rr"!$
RR!!!!!!$kIrr"!$Rd!!!!!!$k[rr"!$S"!!!!!!$krrr"!$S1!!!!!!$l2rr"!$
SE!!!!!!$lIrr"!$SS!!!!!!$l[rr"!$Se!!!!!!$lrrr"!$T#!!!!!!$m2rr"!$
T2!!!!!!$p[rr"!$TF!!!!!!$prrr"!$TT!!!!!!$q2rr"!$Tf!!!!!!$q[rr"!$
U$!!!!!!$rIrr"!$U3!!!!!!%!Irr"!$UG!!!!!!%![rr"!$UU!!!!!!%!rrr"!$
Uh!!!!!!%"2rr"!$V%!!!!!!%"[rr"!$V4!!!!!!%"rrr"!$VH!!!!!!%#2rr"!$
VV!!!!!!%#Irr"!$Vi!!!!!!%#rrr"!$X&!!!!!!%$Irr"!$X5!!!!!!%$[rr"!$
XI!!!!!!%$rrr"!$XX!!!!!!%%[rr"!$Xj!!!!!!%&Irr"!$Y'!!!!!!%&[rr"!$
Y6!!!!!!%)2rr"!$YJ!!!!!!%+[rr"!$YY!!!!!!%+rrr"!$Yk!!!!!!%1Irr"!$
Z(!!!!!!%2Irr"!$Z8!!!!!!%3[rr"!$ZK!!!!!!%4rrr"!$ZZ!!!!!!(c[rr"!$
Zl!!!!!!(d2rr"!$[)!!!!!!2S2rr"!$[9!!!!!!$k2rr"!$[L!!!!!!$kIrr"!$
[NJ!!!!!$k[rr"!$[R!!!!!!$krrr"!$[TJ!!!!!$l2rr"!$[X!!!!!!$lIrr"!$
[ZJ!!!!!$l[rr"!$[a!!!!!!$lrrr"!$[cJ!!!!!$m2rr"!$[f!!!!!!$p[rr"!$
[iJ!!!!!$prrr"!$[l!!!!!!$q2rr"!$[pJ!!!!!$q[rr"!$`!!!!!!!$rIrr"!$
`#J!!!!!%!Irr"!$`&!!!!!!%![rr"!$`(J!!!!!%!rrr"!$`+!!!!!!%"2rr"!$
`-J!!!!!%"[rr"!$`2!!!!!!%"rrr"!$`4J!!!!!%#2rr"!$`8!!!!!!%#Irr"!$
`@J!!!!!%#[rr"!$`C!!!!!!%#rrr"!$`EJ!!!!!%$Irr"!$`H!!!!!!%$[rr"!$
`JJ!!!!!%$rrr"!$`M!!!!!!%%[rr"!$`PJ!!!!!%&Irr"!$`S!!!!!!%&[rr"!$
`UJ!!!!!%)2rr"!$`Y!!!!!!%+[rr"!$`[J!!!!!%+rrr"!$`b!!!!!!%0Irr"!$
`dJ!!!!!%0[rr"!$`h!!!!!!%0rrr"!$`jJ!!!!!%12rr"!$`m!!!!!!%1Irr"!$
`qJ!!!!!%2Irr"!$a"!!!!!!%3[rr"!$a$J!!!!!%4rrr"!$a'!!!!!!(c[rr"!$
a)J!!!!!(d2rr"!$a,!!!!!!(dIrr"!$a0J!!!!!,Z2rr"!$a3!!!!!!,ZIrr"!$
a5J!!!!!,Z[rr"!$a9!!!!!!,c2rr"!$aAJ!!!!!,e[rr"!$aD!!!!!!2S2rr"!$
aFJ!!!!!$kIrr"!$aI!!!!!!$k[rr"!$a[!!!!!!$l2rr"!$ak!!!!!!%4rrr"!$
b&!!!!!!,Z2rr"!$bB!!!!!!2S2rr"!$c!!!!!!!!!2rr&!$cM!!!!!!!!2rr!!$
fC3!!!!!!!Irr"!$fI`!!!!!$k2rr!!'"%J!!!!!$kIrr!!'&A!!!!!!6L2rr!!%
I+J8[Jh4e-!#p"!%I2`!!!!"eGJ$#"!%I63!!!!"hl!$J"!%K)!!!!!"hl!$("!%
I@`!!!!#rZIrr!!&PhJ!!!!!"p!$P!!'),!!!!!!#@!$d!!'*)`!!!!!$kIrr!!(
4!`!!!!!$k2rr!!(2D3!!!!!$k2rr!!(4p3!!!!!$k2rr!!(4r3!!!!!68&"$)&C
*8d8J3h9cG'pY6%4&4KK@CA*cD@pZ)$)f)#Jf1%XX)'4PBfpYF#NB9Q9bFfP[EL!
b0b!S8&"$,#"NC@0[EA!T#8PdC@dJ5@0[EJP*G'9Y)%PMEfi*5A4PE5"*BfpZ#8P
dC@dJ5@0[EKC*ER0dB@aXCA)J3R9TE'4PFL"KF(!Z$NGPEQ9bD@-J4QpXC'9b$Np
hEQ9b)(*PFfpeFQ0P#N008Q9XEf&NCA)14f9ZCA*KG'9N)'0QFQF%58CXC!4#G&*
d'&0jFh4PE5!i)%CTEQ4'EfaNCA)[8Qp[G!4eG'R%$N4PCQ&eE(3J8Q9KC%eP$d4
PCQ&eE(3J6'PMC@jcC8`k:
\ No newline at end of file
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/database.scm b/js/games/nluqo.github.io/~bh/downloads/simply/database.scm
new file mode 100644
index 0000000..5f9c17f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/database.scm
@@ -0,0 +1,84 @@
+;;; Database.scm:  This file contains the code we show in the database
+;;; chapter of _Simply_Scheme_.  You should add your new work to this file.
+
+;;; The database ADT: a filename, list of fields and list of records
+
+(define (make-db filename fields records)
+  (vector filename fields records))
+
+(define (db-filename db)
+  (vector-ref db 0))
+
+(define (db-set-filename! db filename)
+  (vector-set! db 0 filename))
+
+(define (db-fields db)
+  (vector-ref db 1))
+
+(define (db-set-fields! db fields)
+  (vector-set! db 1 fields))
+
+(define (db-records db)
+  (vector-ref db 2))
+
+(define (db-set-records! db records)
+  (vector-set! db 2 records))
+
+
+;;; Stuff about the current state
+
+(define current-state (vector #f))
+
+(define (no-db?)
+  (not (vector-ref current-state 0)))
+
+(define (current-db)
+  (if (no-db?)
+      (error "No current database!")
+      (vector-ref current-state 0)))
+
+(define (set-current-db! db)
+  (vector-set! current-state 0 db))
+
+(define (current-fields)
+  (db-fields (current-db)))
+
+;; User commands
+
+(define (new-db filename fields)
+  (set-current-db! (make-db filename fields '()))
+  'created)
+
+(define (insert)
+  (let ((new-record (get-record)))
+    (db-insert new-record (current-db)))
+  (if (ask "Insert another? ")
+      (insert)
+      'inserted))
+
+(define (db-insert record db)
+  (db-set-records! db (cons record (db-records db))))
+
+(define (get-record)
+  (get-record-loop 0
+		   (make-vector (length (current-fields)))
+		   (current-fields)))
+
+(define (get-record-loop which-field record fields)
+  (if (null? fields)
+      record
+      (begin (display "Value for ")
+	     (display (car fields))
+	     (display "--> ")
+	     (vector-set! record which-field (read))
+	     (get-record-loop (+ which-field 1) record (cdr fields)))))
+
+;;; Utilities
+
+(define (ask question)
+  (display question)
+  (let ((answer (read)))
+    (cond ((equal? (first answer) 'y) #t)
+	  ((equal? (first answer) 'n) #f)
+	  (else (show "Please type Y or N.")
+		(ask question)))))
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/functions.scm b/js/games/nluqo.github.io/~bh/downloads/simply/functions.scm
new file mode 100644
index 0000000..e421ee3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/functions.scm
@@ -0,0 +1,244 @@
+;;; The functions program
+
+(define (functions)
+  (read-line)
+  (show "Welcome to the FUNCTIONS program.")
+  (functions-loop))
+
+(define (functions-loop)
+  (let ((fn-name (get-fn)))
+    (if (equal? fn-name 'exit)
+	"Thanks for using FUNCTIONS!"
+	(let ((args (get-args (arg-count fn-name))))
+	  (if (not (in-domain? args fn-name))
+	     (show "Argument(s) not in domain.")
+	     (show-answer (apply (scheme-function fn-name) args)))
+	  (functions-loop)))))
+
+(define (get-fn)
+  (display "Function: ")
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show "Please type a function!")
+	   (get-fn))
+	  ((not (= (count line) 1))
+	   (show "You typed more than one thing!  Try again.")
+	   (get-fn))
+	  ((not (valid-fn-name? (first line)))
+	   (show "Sorry, that's not a function.")
+	   (get-fn))
+	  (else (first line)))))
+
+(define (get-args n)
+  (if (= n 0)
+      '()
+      (let ((first (get-arg)))
+	(cons first (get-args (- n 1))))))
+
+(define (get-arg)
+  (display "Argument: ")
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show "Please type an argument!")
+	   (get-arg))
+	  ((and (equal? "(" (first (first line)))
+		(equal? ")" (last (last line))))
+	   (let ((sent (remove-first-paren (remove-last-paren line))))
+	     (if (any-parens? sent)
+		 (begin
+		  (show "Sentences can't have parentheses inside.")
+		  (get-arg))
+		 (map booleanize sent))))
+	  ((any-parens? line)
+	   (show "Bad parentheses")
+	   (get-arg))
+	  ((empty? (bf line)) (booleanize (first line)))
+	  ((member? (first (first line)) "\"'")
+	   (show "No quoting arguments in this program.  Try again.")
+	   (get-arg))
+	  (else (show "You typed more than one argument!  Try again.")
+		(get-arg)))))
+
+(define (any-parens? line)
+  (let ((letters (accumulate word line)))
+    (or (member? "(" letters)
+	(member? ")" letters))))
+
+(define (remove-first-paren line)
+  (if (equal? (first line) "(")
+      (bf line)
+      (se (bf (first line)) (bf line))))
+
+(define (remove-last-paren line)
+  (if (equal? (last line) ")")
+      (bl line)
+      (se (bl line) (bl (last line)))))
+
+(define (booleanize x)
+  (cond ((equal? x "#t") #t)
+	((equal? x "#f") #f)
+	(else x)))
+
+(define (show-answer answer)
+  (newline)
+  (display "The result is: ")
+  (if (not answer)
+      (show "#F")
+      (show answer))
+  (newline))
+
+(define (scheme-function fn-name)
+  (cadr (assoc fn-name *the-functions*)))
+
+(define (arg-count fn-name)
+  (caddr (assoc fn-name *the-functions*)))
+
+(define (type-predicate fn-name)
+  (cadddr (assoc fn-name *the-functions*)))
+
+(define (in-domain? args fn-name)
+  (apply (type-predicate fn-name) args))
+
+
+;; Type predicates
+
+(define (word-or-sent? x)
+  (or (word? x) (sentence? x)))
+
+(define (not-empty? x)
+  (and (word-or-sent? x) (not (empty? x))))
+
+(define (two-numbers? x y)
+  (and (number? x) (number? y)))
+
+(define (two-reals? x y)
+  (and (real? x) (real? y)))
+
+(define (two-integers? x y)
+  (and (integer? x) (integer? y)))
+
+(define (can-divide? x y)
+  (and (number? x) (number? y) (not (= y 0))))
+
+(define (dividable-integers? x y)
+  (and (two-integers? x y) (not (= y 0))))
+
+(define (trig-range? x)
+  (and (number? x) (<= (abs x) 1)))
+
+(define (hof-types-ok? fn-name stuff range-predicate)
+  (and (valid-fn-name? fn-name)
+       (= 1 (arg-count fn-name))
+       (word-or-sent? stuff)
+       (empty? (keep (lambda (element)
+		       (not ((type-predicate fn-name) element)))
+		     stuff))
+       (null? (filter (lambda (element)
+			(not (range-predicate element)))
+		      (map (scheme-function fn-name)
+			   (every (lambda (x) x) stuff))))))
+
+(define (member-types-ok? small big)
+  (and (word? small)
+       (or (sentence? big) (= (count small) 1))))
+
+
+;; Names of functions as functions
+
+(define (named-every fn-name list)
+  (every (scheme-function fn-name) list))
+
+(define (named-keep fn-name list)
+  (keep (scheme-function fn-name) list))
+
+(define (valid-fn-name? name)
+  (assoc name *the-functions*))
+
+
+;; The list itself
+          
+(define *the-functions*
+  (list (list '* * 2 two-numbers?)
+	(list '+ + 2 two-numbers?)
+	(list '- - 2 two-numbers?)
+	(list '/ / 2 can-divide?)
+	(list '< < 2 two-reals?)
+	(list '<= <= 2 two-reals?)
+	(list '= = 2 two-numbers?)
+	(list '> > 2 two-reals?)
+	(list '>= >= 2 two-reals?)
+	(list 'abs abs 1 real?)
+
+	(list 'acos acos 1 trig-range?)
+	(list 'and (lambda (x y) (and x y)) 2 
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'appearances appearances 2 member-types-ok?)
+	(list 'asin asin 1 trig-range?)
+	(list 'atan atan 1 number?)
+	(list 'bf bf 1 not-empty?)
+	(list 'bl bl 1 not-empty?)
+	(list 'butfirst butfirst 1 not-empty?)
+	(list 'butlast butlast 1 not-empty?)
+	(list 'ceiling ceiling 1 real?)
+	(list 'cos cos 1 number?)
+	(list 'count count 1 word-or-sent?)
+	(list 'equal? equal? 2 (lambda (x y) #t))
+	(list 'even? even? 1 integer?)
+	(list 'every named-every 2
+	      (lambda (fn stuff)
+		(hof-types-ok? fn stuff word-or-sent?)))
+	(list 'exit '() 0 '())
+	   ; in case user applies number-of-arguments to exit
+	(list 'exp exp 1 number?)
+	(list 'expt expt 2
+	      (lambda (x y)
+		(and (number? x) (number? y)
+		     (or (not (real? x)) (>= x 0) (integer? y)))))
+	(list 'first first 1 not-empty?)
+	(list 'floor floor 1 real?)
+	(list 'gcd gcd 2 two-integers?)
+	(list 'if (lambda (pred yes no) (if pred yes no)) 3
+	      (lambda (pred yes no) (boolean? pred)))
+	(list 'item item 2
+	      (lambda (n stuff)
+		(and (integer? n) (> n 0)
+		     (word-or-sent? stuff) (<= n (count stuff)))))
+	(list 'keep named-keep 2
+	      (lambda (fn stuff)
+		(hof-types-ok? fn stuff boolean?)))
+	(list 'last last 1 not-empty?)
+	(list 'lcm lcm 2 two-integers?)
+	(list 'log log 1 (lambda (x) (and (number? x) (not (= x 0)))))
+	(list 'max max 2 two-reals?)
+	(list 'member? member? 2 member-types-ok?)
+	(list 'min min 2 two-reals?)
+	(list 'modulo modulo 2 dividable-integers?)
+	(list 'not not 1 boolean?)
+
+	(list 'number-of-arguments arg-count 1 valid-fn-name?)
+	(list 'odd? odd? 1 integer?)
+	(list 'or (lambda (x y) (or x y)) 2
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'quotient quotient 2 dividable-integers?)
+	(list 'random random 1 (lambda (x) (and (integer? x) (> x 0))))
+	(list 'remainder remainder 2 dividable-integers?)
+	(list 'round round 1 real?)
+	(list 'se se 2
+	      (lambda (x y) (and (word-or-sent? x) (word-or-sent? y))))
+	(list 'sentence sentence 2
+	      (lambda (x y) (and (word-or-sent? x) (word-or-sent? y))))
+	(list 'sentence? sentence? 1 (lambda (x) #t))
+	(list 'sin sin 1 number?)
+	(list 'sqrt sqrt 1 (lambda (x) (and (real? x) (>= x 0))))
+	(list 'tan tan 1 number?)
+	(list 'truncate truncate 1 real?)
+	(list 'vowel?
+	      (lambda (x)
+		(and (word? x)
+		     (= (count x) 1)
+		     (member? x '(a e i o u))))
+	      1
+	      (lambda (x) #t))
+	(list 'word word 2 (lambda (x y) (and (word? x) (word? y))))
+	(list 'word? word? 1 (lambda (x) #t))))
+
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=A b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=A
new file mode 100644
index 0000000..c03dd0f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=A
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/simply</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/simply</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=D">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="database.scm">database.scm</a>           </td><td align="right">2006-07-05 04:59  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="functions.scm">functions.scm</a>          </td><td align="right">2006-07-05 04:59  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match.scm">match.scm</a>              </td><td align="right">2006-07-05 04:59  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="newttt.scm">newttt.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="simply.scm">simply.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="spread.scm">spread.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ttt.scm">ttt.scm</a>                </td><td align="right">2006-07-05 04:59  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=D b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=D
new file mode 100644
index 0000000..26054d4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=D;O=D
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/simply</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/simply</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ttt.scm">ttt.scm</a>                </td><td align="right">2006-07-05 04:59  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="spread.scm">spread.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="simply.scm">simply.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="newttt.scm">newttt.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match.scm">match.scm</a>              </td><td align="right">2006-07-05 04:59  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="functions.scm">functions.scm</a>          </td><td align="right">2006-07-05 04:59  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="database.scm">database.scm</a>           </td><td align="right">2006-07-05 04:59  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=M;O=A b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=M;O=A
new file mode 100644
index 0000000..0fc3d16
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=M;O=A
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/simply</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/simply</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="https://people.eecs.berkeley.edu/~bh/downloads/simply/?C=M;O=D">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="database.scm">database.scm</a>           </td><td align="right">2006-07-05 04:59  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="functions.scm">functions.scm</a>          </td><td align="right">2006-07-05 04:59  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match.scm">match.scm</a>              </td><td align="right">2006-07-05 04:59  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="newttt.scm">newttt.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="simply.scm">simply.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="spread.scm">spread.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ttt.scm">ttt.scm</a>                </td><td align="right">2006-07-05 04:59  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=A b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=A
new file mode 100644
index 0000000..761d1dd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=A
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/simply</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/simply</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=D">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="database.scm">database.scm</a>           </td><td align="right">2006-07-05 04:59  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="functions.scm">functions.scm</a>          </td><td align="right">2006-07-05 04:59  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match.scm">match.scm</a>              </td><td align="right">2006-07-05 04:59  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="newttt.scm">newttt.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="simply.scm">simply.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="spread.scm">spread.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ttt.scm">ttt.scm</a>                </td><td align="right">2006-07-05 04:59  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=D b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=D
new file mode 100644
index 0000000..26054d4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=N;O=D
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/simply</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/simply</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ttt.scm">ttt.scm</a>                </td><td align="right">2006-07-05 04:59  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="spread.scm">spread.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="simply.scm">simply.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="newttt.scm">newttt.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match.scm">match.scm</a>              </td><td align="right">2006-07-05 04:59  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="functions.scm">functions.scm</a>          </td><td align="right">2006-07-05 04:59  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="database.scm">database.scm</a>           </td><td align="right">2006-07-05 04:59  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=A b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=A
new file mode 100644
index 0000000..51fc0ca
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=A
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/simply</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/simply</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=D">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="newttt.scm">newttt.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="database.scm">database.scm</a>           </td><td align="right">2006-07-05 04:59  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ttt.scm">ttt.scm</a>                </td><td align="right">2006-07-05 04:59  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match.scm">match.scm</a>              </td><td align="right">2006-07-05 04:59  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="functions.scm">functions.scm</a>          </td><td align="right">2006-07-05 04:59  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="spread.scm">spread.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="simply.scm">simply.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=D b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=D
new file mode 100644
index 0000000..2b4516e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/index.html?C=S;O=D
@@ -0,0 +1,21 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+ <head>
+  <title>Index of /~bh/downloads/simply</title>
+ </head>
+ <body>
+<h1>Index of /~bh/downloads/simply</h1>
+  <table>
+   <tr><th valign="top"><img src="../../../icons/blank.gif" alt="[ICO]"></th><th><a href="index.html?C=N%3BO=A">Name</a></th><th><a href="index.html?C=M%3BO=A">Last modified</a></th><th><a href="index.html?C=S%3BO=A">Size</a></th><th><a href="index.html?C=D%3BO=A">Description</a></th></tr>
+   <tr><th colspan="5"><hr></th></tr>
+<tr><td valign="top"><img src="../../../icons/back.gif" alt="[PARENTDIR]"></td><td><a href="../index.html">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="simply.scm">simply.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 32K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="spread.scm">spread.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right"> 14K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="functions.scm">functions.scm</a>          </td><td align="right">2006-07-05 04:59  </td><td align="right">6.7K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="match.scm">match.scm</a>              </td><td align="right">2006-07-05 04:59  </td><td align="right">3.3K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="ttt.scm">ttt.scm</a>                </td><td align="right">2006-07-05 04:59  </td><td align="right">2.8K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="database.scm">database.scm</a>           </td><td align="right">2006-07-05 04:59  </td><td align="right">1.9K</td><td>&nbsp;</td></tr>
+<tr><td valign="top"><img src="../../../icons/unknown.gif" alt="[   ]"></td><td><a href="newttt.scm">newttt.scm</a>             </td><td align="right">2006-07-05 04:59  </td><td align="right">1.6K</td><td>&nbsp;</td></tr>
+   <tr><th colspan="5"><hr></th></tr>
+</table>
+</body></html>
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/match.scm b/js/games/nluqo.github.io/~bh/downloads/simply/match.scm
new file mode 100644
index 0000000..f454f68
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/match.scm
@@ -0,0 +1,107 @@
+(define (match pattern sent)
+  (match-using-known-values pattern sent '()))
+
+(define (match-using-known-values pattern sent known-values)
+  (cond ((empty? pattern)
+	 (if (empty? sent) known-values 'failed))
+	((special? (first pattern))
+	 (let ((placeholder (first pattern)))
+	   (match-special (first placeholder)
+			  (bf placeholder)
+			  (bf pattern)
+			  sent
+			  known-values)))
+	((empty? sent) 'failed)
+	((equal? (first pattern) (first sent))
+	 (match-using-known-values (bf pattern) (bf sent) known-values))
+	(else 'failed)))
+
+(define (special? wd)
+  (member? (first wd) '(* & ? !)))
+
+(define (match-special howmany name pattern-rest sent known-values)
+  (let ((old-value (lookup name known-values)))
+    (cond ((not (equal? old-value 'no-value))
+	   (if (length-ok? old-value howmany)
+	       (already-known-match
+		  old-value pattern-rest sent known-values)
+	       'failed))
+	  ((equal? howmany '?)
+	   (longest-match name pattern-rest sent 0 #t known-values))
+	  ((equal? howmany '!)
+	   (longest-match name pattern-rest sent 1 #t known-values))
+	  ((equal? howmany '*)
+	   (longest-match name pattern-rest sent 0 #f known-values))
+	  ((equal? howmany '&)
+	   (longest-match name pattern-rest sent 1 #f known-values)))))
+
+(define (length-ok? value howmany)
+  (cond ((empty? value) (member? howmany '(? *)))
+	((not (empty? (bf value))) (member? howmany '(* &)))
+	(else #t)))
+
+(define (already-known-match value pattern-rest sent known-values)
+  (let ((unmatched (chop-leading-substring value sent)))
+    (if (not (equal? unmatched 'failed))
+	(match-using-known-values pattern-rest unmatched known-values)
+	'failed)))
+
+(define (chop-leading-substring value sent)
+  (cond ((empty? value) sent)
+	((empty? sent) 'failed)
+	((equal? (first value) (first sent))
+	 (chop-leading-substring (bf value) (bf sent)))
+	(else 'failed)))
+
+(define (longest-match name pattern-rest sent min max-one? known-values)
+  (cond ((empty? sent)
+	 (if (= min 0)
+	     (match-using-known-values pattern-rest
+				       sent
+				       (add name '() known-values))
+	     'failed))
+	(max-one?
+	 (lm-helper name pattern-rest (se (first sent))
+		    (bf sent) min known-values))
+	(else (lm-helper name pattern-rest
+			 sent '() min known-values))))
+
+(define (lm-helper name pattern-rest
+		   sent-matched sent-unmatched min known-values)
+  (if (< (length sent-matched) min)
+      'failed
+      (let ((tentative-result (match-using-known-values
+			       pattern-rest
+			       sent-unmatched
+			       (add name sent-matched known-values))))
+	(cond ((not (equal? tentative-result 'failed)) tentative-result)
+	      ((empty? sent-matched) 'failed)
+	      (else (lm-helper name
+			       pattern-rest
+			       (bl sent-matched)
+			       (se (last sent-matched) sent-unmatched)
+			       min
+			       known-values))))))
+
+;;; Known values database abstract data type
+
+(define (lookup name known-values)
+  (cond ((empty? known-values) 'no-value)
+	((equal? (first known-values) name)
+	 (get-value (bf known-values)))
+	(else (lookup name (skip-value known-values)))))
+
+(define (get-value stuff)
+  (if (equal? (first stuff) '!)
+      '()
+      (se (first stuff) (get-value (bf stuff)))))
+
+(define (skip-value stuff)
+  (if (equal? (first stuff) '!)
+      (bf stuff)
+      (skip-value (bf stuff))))
+
+(define (add name value known-values)
+  (if (empty? name)
+      known-values
+      (se known-values name value '!)))
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/newttt.scm b/js/games/nluqo.github.io/~bh/downloads/simply/newttt.scm
new file mode 100644
index 0000000..368472e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/newttt.scm
@@ -0,0 +1,59 @@
+;;; ttt.scm
+;;; Tic-Tac-Toe program
+
+(define (ttt position me)
+  (one-okay-move (number-squares position) me))
+
+(define (one-okay-move position me)
+  (find-one (lambda (sq) (no-lose? (plug-in me sq position) me))
+	    (free-squares position)))
+
+(define (no-lose? position me)
+  (cond ((already-lost? position me) #f)
+	((already-won? position me) #t)
+	(else (not (find-one (lambda (pos) (not (one-okay-move pos me)))
+			     (extend position (opponent me)) )))))
+
+(define (free-squares pos)
+  (keep number? pos))
+
+(define (number-squares pos)
+  (ns-help pos 1))
+
+(define (ns-help pos num)
+  (cond ((empty? pos) "")
+	((equal? (first pos) '_) (word num (ns-help (bf pos) (+ num 1))))
+	(else (word (first pos) (ns-help (bf pos) (+ num 1)))) ))
+
+(define (plug-in letter sq pos)
+  (cond ((empty? pos) "")
+	((= sq 1) (word letter (bf pos)))
+	(else (word (first pos) (plug-in letter (- sq 1) (bf pos)))) ))
+
+(define (find-one pred stuff)
+  (cond ((empty? stuff) #f)
+	((pred (first stuff)) (first stuff))
+	(else (find-one pred (bf stuff))) ))
+
+(define (extend pos who)
+  (every (lambda (sq) (plug-in who sq pos))
+	 (free-squares pos)))
+
+(define (opponent letter)
+  (if (equal? letter 'x) 'o 'x))
+
+(define (already-won? pos me)
+  (find-one (lambda (win) (match-win? pos me win))
+	    '(yyynnnnnn nnnyyynnn nnnnnnyyy ynnynnynn nynnynnyn nnynnynny
+			ynnnynnny nnynynynn)))
+
+(define (already-lost? pos me)
+  (already-won? pos (opponent me)))
+
+(define (match-win? pos me win)
+  (cond ((empty? win) #t)
+	((equal? (first win) 'y)
+	 (if (equal? (first pos) me)
+	     (match-win? (bf pos) me (bf win))
+	     #f))
+	(else (match-win? (bf pos) me (bf win))) ))
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/simply.scm b/js/games/nluqo.github.io/~bh/downloads/simply/simply.scm
new file mode 100644
index 0000000..501a7da
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/simply.scm
@@ -0,0 +1,1149 @@
+;;; simply.scm version 3.13 (8/11/98)
+;;; (Numbered to agree with berkeley.scm version.)
+
+
+;;; This file uses Scheme features we don't talk about in _Simply_Scheme_.
+;;; Read at your own risk.
+
+(if (equal? 'foo (symbol->string 'foo))
+    (error "Simply.scm already loaded!!")
+    #f)
+
+;; Make number->string remove leading "+" if necessary
+
+(if (char=? #\+ (string-ref (number->string 1.0) 0))
+    (let ((old-ns number->string)
+	  (char=? char=?)
+	  (string-ref string-ref)
+	  (substring substring)
+	  (string-length string-length))
+      (set! number->string
+	    (lambda args
+	      (let ((result (apply old-ns args)))
+		(if (char=? #\+ (string-ref result 0))
+		    (substring result 1 (string-length result))
+		    result)))))
+    'no-problem)
+
+(define number->string
+  (let ((old-ns number->string)
+	(string? string?))
+    (lambda args
+      (if (string? (car args))
+	  (car args)
+	  (apply old-ns args)))))
+
+;; Get strings in error messages to print nicely (especially "")
+
+(define whoops
+  (let ((string? string?)
+	(string-append string-append)
+	(error error)
+	(cons cons)
+	(map map)
+	(apply apply))
+    (define (error-printform x)
+      (if (string? x)
+	  (string-append "\"" x "\"")
+	  x))
+    (lambda (string . args)
+      (apply error (cons string (map error-printform args))))))
+
+
+;; ROUND returns an inexact integer if its argument is inexact,
+;; but we think it should always return an exact integer.
+;; (It matters because some Schemes print inexact integers as "+1.0".)
+;; The (exact 1) test is for PC Scheme, in which nothing is exact.
+(if (and (inexact? (round (sqrt 2))) (exact? 1))
+    (let ((old-round round)
+	  (inexact->exact inexact->exact))
+      (set! round
+	    (lambda (number)
+	      (inexact->exact (old-round number)))))
+    'no-problem)
+
+;; Remainder and quotient blow up if their argument isn't an integer.
+;; Unfortunately, in SCM, (* 365.25 24 60 60) *isn't* an integer.
+
+(if (inexact? (* .25 4))
+    (let ((rem remainder)
+	  (quo quotient)
+	  (inexact->exact inexact->exact)
+	  (integer? integer?))
+      (set! remainder
+	    (lambda (x y)
+	      (rem (if (integer? x) (inexact->exact x) x)
+		   (if (integer? y) (inexact->exact y) y))))
+      (set! quotient
+	    (lambda (x y)
+	      (quo (if (integer? x) (inexact->exact x) x)
+		   (if (integer? y) (inexact->exact y) y)))))
+    'done)
+
+
+;; Random
+;; If your version of Scheme has RANDOM, you should take this out.
+;; (It gives the same sequence of random numbers every time.) 
+
+(define random
+  (let ((*seed* 1) (quotient quotient) (modulo modulo) (+ +) (- -) (* *) (> >))
+    (lambda (x)
+      (let* ((hi (quotient *seed* 127773))
+	     (low (modulo *seed* 127773))
+	     (test (- (* 16807 low) (* 2836 hi))))
+	(if (> test 0)
+	    (set! *seed* test)
+	    (set! *seed* (+ test 2147483647))))
+      (modulo *seed* x))))
+
+
+;;; Logo-style word/sentence implementation
+
+(define word?
+  (let ((number? number?)
+	(symbol? symbol?)
+	(string? string?))
+    (lambda (x)
+      (or (symbol? x) (number? x) (string? x)))))
+
+(define sentence?
+  (let ((null? null?)
+	(pair? pair?)
+	(word? word?)
+	(car car)
+	(cdr cdr))    
+    (define (list-of-words? l)
+      (cond ((null? l) #t)
+	    ((pair? l)
+	     (and (word? (car l)) (list-of-words? (cdr l))))
+	    (else #f)))
+    list-of-words?))
+
+(define empty?
+  (let ((null? null?)
+	(string? string?)
+	(string=? string=?))
+    (lambda (x)
+      (or (null? x)
+	  (and (string? x) (string=? x ""))))))
+
+
+(define char-rank
+  ;; 0 Letter in good case or special initial
+  ;; 1 ., + or -
+  ;; 2 Digit
+  ;; 3 Letter in bad case or weird character
+  (let ((*the-char-ranks* (make-vector 256 3))
+	(= =)
+	(+ +)
+	(string-ref string-ref)
+	(string-length string-length)
+	(vector-set! vector-set!)
+	(char->integer char->integer)
+	(symbol->string symbol->string)
+	(vector-ref vector-ref))
+    (define (rank-string str rank)
+      (define (helper i len)
+	(if (= i len)
+	    'done
+	    (begin (vector-set! *the-char-ranks*
+				(char->integer (string-ref str i))
+				rank)
+		   (helper (+ i 1) len))))
+      (helper 0 (string-length str)))
+    (rank-string (symbol->string 'abcdefghijklmnopqrstuvwxyz) 0)
+    (rank-string "!$%&*/:<=>?~_^" 0)
+    (rank-string "+-." 1)
+    (rank-string "0123456789" 2)
+    (lambda (char)		    ;; value of char-rank
+      (vector-ref *the-char-ranks* (char->integer char)))))
+
+(define string->word
+  (let ((= =) (<= <=) (+ +) (- -)
+	(char-rank char-rank)
+	(string-ref string-ref)
+	(string-length string-length)
+	(string=? string=?)
+	(not not)
+	(char=? char=?)
+	(string->number string->number)
+	(string->symbol string->symbol))
+    (lambda (string)
+      (define (subsequents? string i length)
+	(cond ((= i length) #t)
+	      ((<= (char-rank (string-ref string i)) 2)
+	       (subsequents? string (+ i 1) length))
+	      (else #f)))
+      (define (special-id? string)
+	(or (string=? string "+")
+	    (string=? string "-")
+	    (string=? string "...")))
+      (define (ok-symbol? string)
+	(if (string=? string "")
+	    #f
+	    (let ((rank1 (char-rank (string-ref string 0))))
+	      (cond ((= rank1 0) (subsequents? string 1 (string-length string)))
+		    ((= rank1 1) (special-id? string))
+		    (else #f)))))
+      (define (nn-helper string i len seen-point?)
+	(cond ((= i len)
+	       (if seen-point?
+		   (not (char=? (string-ref string (- len 1)) #\0))
+		   #t))
+	      ((char=? #\. (string-ref string i))
+	       (cond (seen-point? #f)
+		     ((= (+ i 2) len) #t)  ; Accepts "23.0"
+		     (else (nn-helper string (+ i 1) len #t))))
+	      ((= 2 (char-rank (string-ref string i)))
+	       (nn-helper string (+ i 1) len seen-point?))
+	      (else #f)))
+      (define (narrow-number? string)
+	(if (string=? string "")
+	    #f
+	    (let* ((c0 (string-ref string 0))
+		   (start 0)
+		   (len (string-length string))
+		   (cn (string-ref string (- len 1))))
+	      (if (and (char=? c0 #\-) (not (= len 1)))
+		  (begin
+		   (set! start 1)
+		   (set! c0 (string-ref string 1)))
+		  #f)
+	      (cond ((not (= (char-rank cn) 2)) #f)  ; Rejects "-" among others
+		    ((char=? c0 #\.) #f)
+		    ((char=? c0 #\0)
+		     (cond ((= len 1) #t)  ; Accepts "0" but not "-0"
+			   ((= len 2) #f)  ; Rejects "-0" and "03"
+			   ((char=? (string-ref string (+ start 1)) #\.)
+			    (nn-helper string (+ start 2) len #t))
+			   (else #f)))
+		    (else (nn-helper string start len #f)))))) 
+
+      ;; The body of string->word:
+      (cond ((narrow-number? string) (string->number string))
+	    ((ok-symbol? string) (string->symbol string))
+	    (else string)))))
+
+(define char->word
+  (let ((= =)
+	(char-rank char-rank)
+	(make-string make-string)
+	(string->symbol string->symbol)
+	(string->number string->number)
+	(char=? char=?))
+    (lambda (char)
+      (let ((rank (char-rank char))
+	    (string (make-string 1 char)))
+	(cond ((= rank 0) (string->symbol string))
+	      ((= rank 2) (string->number string))
+	      ((char=? char #\+) '+)
+	      ((char=? char #\-) '-)
+	      (else string))))))
+
+(define word->string
+  (let ((number? number?)
+	(string? string?)
+	(number->string number->string)
+	(symbol->string symbol->string))
+    (lambda (wd)
+      (cond ((string? wd) wd)
+	    ((number? wd) (number->string wd))
+	    (else (symbol->string wd))))))
+
+(define count
+  (let ((word? word?)
+	(string-length string-length)
+	(word->string word->string)
+	(length length))
+    (lambda (stuff)
+      (if (word? stuff)
+	  (string-length (word->string stuff))
+	  (length stuff)))))
+
+(define word
+  (let ((string->word string->word)
+	(apply apply)
+	(string-append string-append)
+	(map map)
+	(word? word?)
+	(word->string word->string)
+	(whoops whoops))
+    (lambda x
+      (string->word
+       (apply string-append
+	      (map (lambda (arg)
+		     (if (word? arg)
+			 (word->string arg)
+			 (whoops "Invalid argument to WORD: " arg)))
+		   x))))))
+
+(define se
+  (let ((pair? pair?)
+	(null? null?)
+	(word? word?)
+	(car car)
+	(cons cons)
+	(cdr cdr)
+	(whoops whoops))
+    (define (paranoid-append a original-a b)
+      (cond ((null? a) b)
+	    ((word? (car a))
+	     (cons (car a) (paranoid-append (cdr a) original-a b)))
+	    (else (whoops "Argument to SENTENCE not a word or sentence"
+			 original-a ))))
+    (define (combine-two a b)                ;; Note: b is always a list
+      (cond ((pair? a) (paranoid-append a a b))
+	    ((null? a) b)
+	    ((word? a) (cons a b))
+	    (else (whoops "Argument to SENTENCE not a word or sentence:" a))))
+    ;; Helper function so recursive calls don't show up in TRACE
+    (define (real-se args)
+      (if (null? args)
+	  '()
+	  (combine-two (car args) (real-se (cdr args)))))
+    (lambda args
+      (real-se args))))
+
+(define sentence se)
+
+(define first
+  (let ((pair? pair?)
+	(char->word char->word)
+	(string-ref string-ref)
+	(word->string word->string)
+	(car car)
+	(empty? empty?)
+	(whoops whoops)
+	(word? word?))
+    (define (word-first wd)
+      (char->word (string-ref (word->string wd) 0)))
+    (lambda (x)
+      (cond ((pair? x) (car x))
+	    ((empty? x) (whoops "Invalid argument to FIRST: " x))
+	    ((word? x) (word-first x))
+	    (else (whoops "Invalid argument to FIRST: " x))))))
+
+(define last
+  (let ((pair? pair?)
+	(- -)
+	(word->string word->string)
+	(char->word char->word)
+	(string-ref string-ref)
+	(string-length string-length)
+	(empty? empty?)
+	(cdr cdr)
+	(car car)
+	(whoops whoops)
+	(word? word?))
+    (define (word-last wd)
+      (let ((s (word->string wd)))
+	(char->word (string-ref s (- (string-length s) 1)))))
+    (define (list-last lst)      
+      (if (empty? (cdr lst))
+	  (car lst)
+	  (list-last (cdr lst))))
+    (lambda (x)
+      (cond ((pair? x) (list-last x))
+	    ((empty? x) (whoops "Invalid argument to LAST: " x))
+	    ((word? x) (word-last x))
+	    (else (whoops "Invalid argument to LAST: " x))))))
+
+(define bf
+  (let ((pair? pair?)
+	(substring substring)
+	(string-length string-length)
+	(string->word string->word)
+	(word->string word->string)
+	(cdr cdr)
+	(empty? empty?)
+	(whoops whoops)
+	(word? word?))
+    (define string-bf
+      (lambda (s)
+      (substring s 1 (string-length s))))
+    (define (word-bf wd)
+      (string->word (string-bf (word->string wd))))
+    (lambda (x)
+      (cond ((pair? x) (cdr x))
+	    ((empty? x) (whoops "Invalid argument to BUTFIRST: " x))
+	    ((word? x) (word-bf x))
+	    (else (whoops "Invalid argument to BUTFIRST: " x))))))
+
+(define butfirst bf)
+
+(define bl
+  (let ((pair? pair?) (- -)
+	(cdr cdr)
+	(cons cons)
+	(car car)
+	(substring substring)
+	(string-length string-length)
+	(string->word string->word)
+	(word->string word->string)
+	(empty? empty?)
+	(whoops whoops)
+	(word? word?))
+    (define (list-bl list)
+      (if (null? (cdr list))
+	  '()
+	  (cons (car list) (list-bl (cdr list)))))
+    (define (string-bl s)
+      (substring s 0 (- (string-length s) 1)))  
+    (define (word-bl wd)
+      (string->word (string-bl (word->string wd))))
+    (lambda (x)
+      (cond ((pair? x) (list-bl x))
+	    ((empty? x) (whoops "Invalid argument to BUTLAST: " x))
+	    ((word? x) (word-bl x))
+	    (else (whoops "Invalid argument to BUTLAST: " x))))))
+
+(define butlast bl)
+
+(define item
+  (let ((> >) (- -) (< <) (integer? integer?) (list-ref list-ref)
+	(char->word char->word)
+	(string-ref string-ref)
+	(word->string word->string)
+	(not not)
+	(whoops whoops)
+	(count count)
+	(word? word?)
+	(list? list?))
+    (define (word-item n wd)
+      (char->word (string-ref (word->string wd) (- n 1))))
+    (lambda (n stuff)
+      (cond ((not (integer? n))
+	     (whoops "Invalid first argument to ITEM (must be an integer): "
+		     n))
+	    ((< n 1)
+	     (whoops "Invalid first argument to ITEM (must be positive): "
+		     n))
+	    ((> n (count stuff))
+	     (whoops "No such item: " n stuff))
+	    ((word? stuff) (word-item n stuff))
+	    ((list? stuff) (list-ref stuff (- n 1)))
+	    (else (whoops "Invalid second argument to ITEM: " stuff))))))
+
+(define equal?
+  ;; Note that EQUAL? assumes strings are numbers.
+  ;; (strings-are-numbers #f) doesn't change this behavior.
+  (let ((vector-length vector-length)
+	(= =)
+	(vector-ref vector-ref)
+	(+ +)
+	(string? string?)
+	(symbol? symbol?)
+	(null? null?)
+	(pair? pair?)
+	(car car)
+	(cdr cdr)
+	(eq? eq?)
+	(string=? string=?)
+	(symbol->string symbol->string)
+	(number? number?)
+	(string->word string->word)
+	(vector? vector?)
+	(eqv? eqv?))
+    (define (vector-equal? v1 v2)
+      (let ((len1 (vector-length v1))
+	    (len2 (vector-length v2)))
+	(define (helper i)
+	  (if (= i len1)
+	      #t
+	      (and (equal? (vector-ref v1 i) (vector-ref v2 i))
+		   (helper (+ i 1)))))
+	(if (= len1 len2)
+	    (helper 0)
+	    #f)))
+    (lambda (x y)
+      (cond ((null? x) (null? y))
+	    ((null? y) #f)
+	    ((pair? x)
+	     (and (pair? y)
+		  (equal? (car x) (car y))
+		  (equal? (cdr x) (cdr y))))
+	    ((pair? y) #f)
+	    ((symbol? x)
+	     (or (and (symbol? y) (eq? x y))
+		 (and (string? y) (string=? (symbol->string x) y))))
+	    ((symbol? y)
+	     (and (string? x) (string=? x (symbol->string y))))
+	    ((number? x)
+	     (or (and (number? y) (= x y))
+		 (and (string? y)
+		      (let ((possible-num (string->word y)))
+			(and (number? possible-num)
+			     (= x possible-num))))))
+	    ((number? y)
+	     (and (string? x)
+		  (let ((possible-num (string->word x)))
+		    (and (number? possible-num)
+			 (= possible-num y)))))
+	    ((string? x) (and (string? y) (string=? x y)))
+	    ((string? y) #f)
+	    ((vector? x) (and (vector? y) (vector-equal? x y)))
+	    ((vector? y) #f)
+	    (else (eqv? x y))))))
+
+(define member?
+  (let ((> >) (- -) (< <)
+	(null? null?)
+	(symbol? symbol?)
+	(eq? eq?)
+	(car car)
+	(not not)
+	(symbol->string symbol->string)
+	(string=? string=?)
+	(cdr cdr)
+	(equal? equal?)
+	(word->string word->string)
+	(string-length string-length)
+	(whoops whoops)
+	(string-ref string-ref)
+	(char=? char=?)
+	(list? list?)
+	(number? number?)
+	(empty? empty?)
+	(word? word?)
+	(string? string?))
+    (define (symbol-in-list? symbol string lst)
+      (cond ((null? lst) #f)
+	    ((and (symbol? (car lst))
+		  (eq? symbol (car lst))))
+	    ((string? (car lst))
+	     (cond ((not string)
+		    (symbol-in-list? symbol (symbol->string symbol) lst))
+		   ((string=? string (car lst)) #t)
+		   (else (symbol-in-list? symbol string (cdr lst)))))
+	    (else (symbol-in-list? symbol string (cdr lst)))))
+    (define (word-in-list? wd lst)
+      (cond ((null? lst) #f)
+	    ((equal? wd (car lst)) #t)
+	    (else (word-in-list? wd (cdr lst)))))
+    (define (word-in-word? small big)
+      (let ((one-letter-str (word->string small)))
+	(if (> (string-length one-letter-str) 1)
+	    (whoops "Invalid arguments to MEMBER?: " small big)
+	    (let ((big-str (word->string big)))
+	      (char-in-string? (string-ref one-letter-str 0)
+			       big-str
+			       (- (string-length big-str) 1))))))
+    (define (char-in-string? char string i)
+      (cond ((< i 0) #f)
+	    ((char=? char (string-ref string i)) #t)
+	    (else (char-in-string? char string (- i 1)))))
+    (lambda (x stuff)
+      (cond ((empty? stuff) #f)
+	    ((word? stuff) (word-in-word? x stuff))
+	    ((not (list? stuff))
+	     (whoops "Invalid second argument to MEMBER?: " stuff))
+	    ((symbol? x) (symbol-in-list? x #f stuff))
+	    ((or (number? x) (string? x))
+	     (word-in-list? x stuff))
+	    (else (whoops "Invalid first argument to MEMBER?: " x))))))
+
+(define before?
+  (let ((not not)
+	(word? word?)
+	(whoops whoops)
+	(string<? string<?)
+	(word->string word->string))
+    (lambda (wd1 wd2)
+      (cond ((not (word? wd1))
+	     (whoops "Invalid first argument to BEFORE? (not a word): " wd1))
+	    ((not (word? wd2))
+	     (whoops "Invalid second argument to BEFORE? (not a word): " wd2))
+	    (else (string<? (word->string wd1) (word->string wd2)))))))
+
+
+;;; Higher Order Functions
+
+(define filter
+  (let ((null? null?)
+	(car car)
+	(cons cons)
+	(cdr cdr)
+	(not not)
+	(procedure? procedure?)
+	(whoops whoops)
+	(list? list?))
+    (lambda (pred l)
+      ;; Helper function so recursive calls don't show up in TRACE
+      (define (real-filter l)
+	(cond ((null? l) '())
+	      ((pred (car l))
+	       (cons (car l) (real-filter (cdr l))))
+	      (else (real-filter (cdr l)))))
+      (cond ((not (procedure? pred))
+	     (whoops "Invalid first argument to FILTER (not a procedure): "
+		     pred))
+	    ((not (list? l))
+	     (whoops "Invalid second argument to FILTER (not a list): " l))
+	    (else (real-filter l))))))
+
+(define keep
+  (let ((+ +) (= =) (pair? pair?)
+	(substring substring)
+	(char->word char->word)
+	(string-ref string-ref)
+	(string-set! string-set!)
+	(word->string word->string)
+	(string-length string-length)
+	(string->word string->word)
+	(make-string make-string)
+	(procedure? procedure?)
+	(whoops whoops)
+	(word? word?)
+	(null? null?))
+    (lambda (pred w-or-s)
+      (define (keep-string in i out out-len len)
+	(cond ((= i len) (substring out 0 out-len))
+	      ((pred (char->word (string-ref in i)))
+	       (string-set! out out-len (string-ref in i))
+	       (keep-string in (+ i 1) out (+ out-len 1) len))
+	      (else (keep-string in (+ i 1) out out-len len))))
+      (define (keep-word wd)
+	(let* ((string (word->string wd))
+	       (len (string-length string)))
+	  (string->word
+	   (keep-string string 0 (make-string len) 0 len))))
+      (cond ((not (procedure? pred))
+	     (whoops "Invalid first argument to KEEP (not a procedure): "
+		    pred))
+	    ((pair? w-or-s) (filter pred w-or-s))
+	    ((word? w-or-s) (keep-word w-or-s))
+	    ((null? w-or-s) '())
+	    (else
+	     (whoops "Bad second argument to KEEP (not a word or sentence): "
+		     w-or-s))))))
+
+(define appearances
+  (let ((count count)
+	(keep keep)
+	(equal? equal?))
+    (lambda (item aggregate)
+      (count (keep (lambda (element) (equal? item element)) aggregate)))))
+
+(define every
+  (let ((= =) (+ +)
+	(se se)
+	(char->word char->word)
+	(string-ref string-ref)
+	(empty? empty?)
+	(first first)
+	(bf bf)
+	(not not)
+	(procedure? procedure?)
+	(whoops whoops)
+	(word? word?)
+	(word->string word->string)
+	(string-length string-length))
+    (lambda (fn stuff)
+      (define (string-every string i length)
+	(if (= i length)
+	    '()
+	    (se (fn (char->word (string-ref string i)))
+		(string-every string (+ i 1) length))))
+      (define (sent-every sent)
+	;; This proc. can't be optimized or else it will break the
+	;; exercise where we ask them to reimplement sentences as
+	;; vectors and then see if every still works.
+	(if (empty? sent)
+	    sent		; Can't be '() or exercise breaks.
+	    (se (fn (first sent))    
+		(sent-every (bf sent)))))
+      (cond ((not (procedure? fn))
+	     (whoops "Invalid first argument to EVERY (not a procedure):"
+		     fn))
+	    ((word? stuff)
+	     (let ((string (word->string stuff)))
+	       (string-every string 0 (string-length string))))
+	    (else (sent-every stuff))))))
+
+(define accumulate
+  (let ((not not)
+	(empty? empty?)
+	(bf bf)
+	(first first)
+	(procedure? procedure?)
+	(whoops whoops)
+	(member member)
+	(list list))
+    (lambda (combiner stuff)
+      (define (real-accumulate stuff)
+	(if (empty? (bf stuff))
+	    (first stuff)
+	    (combiner (first stuff) (real-accumulate (bf stuff)))))
+      (cond ((not (procedure? combiner))
+	     (whoops "Invalid first argument to ACCUMULATE (not a procedure):"
+		     combiner))
+	    ((not (empty? stuff)) (real-accumulate stuff))
+	    ((member combiner (list + * word se)) (combiner))
+	    (else
+	     (whoops "Can't accumulate empty input with that combiner"))))))
+
+(define reduce
+  (let ((null? null?)
+	(cdr cdr)
+	(car car)
+	(not not)
+	(procedure? procedure?)
+	(whoops whoops)
+	(member member)
+	(list list))
+    (lambda (combiner stuff)
+      (define (real-reduce stuff)
+	(if (null? (cdr stuff))
+	    (car stuff)
+	    (combiner (car stuff) (real-reduce (cdr stuff)))))
+      (cond ((not (procedure? combiner))
+	     (whoops "Invalid first argument to REDUCE (not a procedure):"
+		     combiner))
+	    ((not (null? stuff)) (real-reduce stuff))
+	    ((member combiner (list + * word se append)) (combiner))
+	    (else (whoops "Can't reduce empty input with that combiner"))))))
+
+(define repeated
+  (let ((= =) (- -))
+    (lambda (fn number)
+      (if (= number 0)
+	  (lambda (x) x)
+	  (lambda (x)
+	    ((repeated fn (- number 1)) (fn x)))))))
+
+
+;; Tree stuff
+(define make-node cons)
+(define datum car)
+(define children cdr)
+
+
+;; I/O
+        
+(define show
+  (let ((= =)
+	(length length)
+	(display display)
+	(car car)
+	(newline newline)
+	(not not)
+	(output-port? output-port?)
+	(apply apply)
+	(whoops whoops))
+    (lambda args
+      (cond
+       ((= (length args) 1)
+	(display (car args))
+	(newline))
+       ((= (length args) 2)
+	(if (not (output-port? (car (cdr args))))
+	    (whoops "Invalid second argument to SHOW (not an output port): "
+		    (car (cdr args))))
+	(apply display args)
+	(newline (car (cdr args))))
+       (else (whoops "Incorrect number of arguments to procedure SHOW"))))))
+
+(define show-line
+  (let ((>= >=)
+	(length length)
+	(whoops whoops)
+	(null? null?)
+	(current-output-port current-output-port)
+	(car car)
+	(not not)
+	(list? list?)
+	(display display)
+	(for-each for-each)
+	(cdr cdr)
+	(newline newline))
+    (lambda (line . args)
+      (if (>= (length args) 2)
+	  (whoops "Too many arguments to show-line")
+	  (let ((port (if (null? args) (current-output-port) (car args))))
+	    (cond ((not (list? line))
+		   (whoops "Invalid argument to SHOW-LINE (not a list):" line))
+		  ((null? line) #f)
+		  (else
+		   (display (car line) port)
+		   (for-each (lambda (wd) (display " " port) (display wd port))
+			     (cdr line))))
+	    (newline port))))))
+
+(define read-string
+  (let ((read-char read-char)
+	(eqv? eqv?)
+	(apply apply)
+	(string-append string-append)
+	(substring substring)
+	(reverse reverse)
+	(cons cons)
+	(>= >=) (+ +)
+	(string-set! string-set!)
+	(length length)
+	(whoops whoops)
+	(null? null?)
+	(current-input-port current-input-port)
+	(car car)
+	(cdr cdr)
+	(eof-object? eof-object?)
+	(list list)
+	(make-string make-string)
+	(peek-char peek-char))
+    (define (read-string-helper chars all-length chunk-length port)
+      (let ((char (read-char port))
+	    (string (car chars)))
+	(cond ((or (eof-object? char) (eqv? char #\newline))
+	       (apply string-append
+		      (reverse
+		       (cons
+			(substring (car chars) 0 chunk-length)
+			(cdr chars)))))
+	      ((>= chunk-length 80)
+	       (let ((newstring (make-string 80)))
+		 (string-set! newstring 0 char)
+		 (read-string-helper (cons newstring chars)
+				     (+ all-length 1)
+				     1
+				     port)))
+	      (else
+	       (string-set! string chunk-length char)
+	       (read-string-helper chars
+				   (+ all-length 1)
+				   (+ chunk-length 1)
+				   port)))))
+    (lambda args
+      (if (>= (length args) 2)
+	  (whoops "Too many arguments to read-string")
+	  (let ((port (if (null? args) (current-input-port) (car args))))
+	    (if (eof-object? (peek-char port))
+		(read-char port)
+		(read-string-helper (list (make-string 80)) 0 0 port)))))))
+
+(define read-line
+  (let ((= =)
+	(list list)
+	(string->word string->word)
+	(substring substring)
+	(char-whitespace? char-whitespace?)
+	(string-ref string-ref)
+	(+ +)
+	(string-length string-length)
+	(apply apply)
+	(read-string read-string))
+    (lambda args
+      (define (tokenize string)
+	(define (helper i start len)
+	  (cond ((= i len)
+		 (if (= i start)
+		     '()
+		     (list (string->word (substring string start i)))))
+		((char-whitespace? (string-ref string i))
+		 (if (= i start)
+		     (helper (+ i 1) (+ i 1) len)
+		     (cons (string->word (substring string start i))
+			   (helper (+ i 1) (+ i 1) len))))
+		(else (helper (+ i 1) start len))))
+        (if (eof-object? string)
+            string
+            (helper 0 0 (string-length string))))
+      (tokenize (apply read-string args)))))
+
+(define *the-open-inports* '())
+(define *the-open-outports* '())
+
+(define align
+  (let ((< <) (abs abs) (* *) (expt expt) (>= >=) (- -) (+ +) (= =)
+	(null? null?)
+	(car car)
+	(round round)
+	(number->string number->string)
+	(string-length string-length)
+	(string-append string-append)
+	(make-string make-string)
+	(substring substring)
+	(string-set! string-set!)
+	(number? number?)
+	(word->string word->string))
+    (lambda (obj width . rest)
+      (define (align-number obj width rest)
+	(let* ((sign (< obj 0))
+	       (num (abs obj))
+	       (prec (if (null? rest) 0 (car rest)))
+	       (big (round (* num (expt 10 prec))))
+	       (cvt0 (number->string big))
+	       (cvt (if (< num 1) (string-append "0" cvt0) cvt0))
+	       (pos-str (if (>= (string-length cvt0) prec)
+			    cvt
+			    (string-append
+			     (make-string (- prec (string-length cvt0)) #\0)
+			     cvt)))
+	       (string (if sign (string-append "-" pos-str) pos-str))
+	       (length (+ (string-length string)
+			  (if (= prec 0) 0 1)))
+	       (left (- length (+ 1 prec)))
+	       (result (if (= prec 0)
+			   string
+			   (string-append
+			    (substring string 0 left)
+			    "."
+			    (substring string left (- length 1))))))
+	  (cond ((= length width) result)
+		((< length width)
+		 (string-append (make-string (- width length) #\space) result))
+		(else (let ((new (substring result 0 width)))
+			(string-set! new (- width 1) #\+)
+			new)))))
+      (define (align-word string)
+	(let ((length (string-length string)))
+	  (cond ((= length width) string)
+		((< length width)
+		 (string-append string (make-string (- width length) #\space)))
+		(else (let ((new (substring string 0 width)))
+			(string-set! new (- width 1) #\+)
+			new)))))
+      (if (number? obj)
+	  (align-number obj width rest)
+	  (align-word (word->string obj))))))
+
+(define open-output-file
+  (let ((oof open-output-file)
+	(cons cons))
+    (lambda (filename)
+      (let ((port (oof filename)))
+	(set! *the-open-outports* (cons port *the-open-outports*))
+	port))))
+
+(define open-input-file
+  (let ((oif open-input-file)
+	(cons cons))
+    (lambda (filename)
+      (let ((port (oif filename)))
+	(set! *the-open-inports* (cons port *the-open-inports*))
+	port))))
+
+(define remove!
+  (let ((null? null?)
+	(cdr cdr)
+	(eq? eq?)
+	(set-cdr! set-cdr!)
+	(car car))
+    (lambda (thing lst)
+      (define (r! prev)
+	(cond ((null? (cdr prev)) lst)
+	      ((eq? thing (car (cdr prev)))
+	       (set-cdr! prev (cdr (cdr prev)))
+	       lst)
+	      (else (r! (cdr prev)))))
+      (cond ((null? lst) lst)
+	    ((eq? thing (car lst)) (cdr lst))
+	    (else (r! lst))))))
+
+(define close-input-port
+  (let ((cip close-input-port)
+	(remove! remove!))
+    (lambda (port)
+      (set! *the-open-inports* (remove! port *the-open-inports*))
+      (cip port))))
+
+(define close-output-port
+  (let ((cop close-output-port)
+	(remove! remove!))
+    (lambda (port)
+      (set! *the-open-outports* (remove! port *the-open-outports*))
+      (cop port))))
+
+(define close-all-ports
+  (let ((for-each for-each)
+	(close-input-port close-input-port)
+	(close-output-port close-output-port))
+    (lambda ()
+      (for-each close-input-port *the-open-inports*)
+      (for-each close-output-port *the-open-outports*)
+      'closed)))
+
+;; Make arithmetic work on numbers in string form:
+(define maybe-num
+  (let ((string? string?)
+    	(string->number string->number))
+    (lambda (arg)
+      (if (string? arg)
+	  (let ((num (string->number arg)))
+	    (if num num arg))
+	  arg))))
+
+(define logoize
+  (let ((apply apply)
+	(map map)
+	(maybe-num maybe-num))
+    (lambda (fn)
+      (lambda args
+	(apply fn (map maybe-num args))))))
+
+;; special case versions of logoize, since (lambda args ...) is expensive
+(define logoize-1
+  (let ((maybe-num maybe-num))
+    (lambda (fn)
+      (lambda (x) (fn (maybe-num x))))))
+
+(define logoize-2
+  (let ((maybe-num maybe-num))
+    (lambda (fn)
+      (lambda (x y) (fn (maybe-num x) (maybe-num y))))))
+
+(define strings-are-numbers
+  (let ((are-they? #f)
+        (real-* *)
+        (real-+ +)
+        (real-- -)
+        (real-/ /)
+        (real-< <)
+        (real-<= <=)
+        (real-= =)
+        (real-> >)
+        (real->= >=)
+        (real-abs abs)
+        (real-acos acos)
+        (real-asin asin)
+        (real-atan atan)
+        (real-ceiling ceiling)
+        (real-cos cos)
+        (real-even? even?)
+        (real-exp exp)
+        (real-expt expt)
+        (real-floor floor)
+	(real-align align)
+        (real-gcd gcd)
+        (real-integer? integer?)
+        (real-item item)
+        (real-lcm lcm)
+        (real-list-ref list-ref)
+        (real-log log)
+        (real-make-vector make-vector)
+        (real-max max)
+        (real-min min)
+        (real-modulo modulo)
+        (real-negative? negative?)
+        (real-number? number?)
+        (real-odd? odd?)
+        (real-positive? positive?)
+        (real-quotient quotient)
+        (real-random random)
+        (real-remainder remainder)
+        (real-repeated repeated)
+        (real-round round)
+        (real-sin sin)
+        (real-sqrt sqrt)
+        (real-tan tan)
+        (real-truncate truncate)
+        (real-vector-ref vector-ref)
+        (real-vector-set! vector-set!)
+        (real-zero? zero?)
+	(maybe-num maybe-num)
+	(number->string number->string)
+	(cons cons)
+	(car car)
+	(cdr cdr)
+	(eq? eq?)
+	(show show)
+	(logoize logoize)
+	(logoize-1 logoize-1)
+	(logoize-2 logoize-2)
+	(not not)
+	(whoops whoops))
+
+    (lambda (yesno)
+      (cond ((and are-they? (eq? yesno #t))
+	     (show "Strings are already numbers"))
+	    ((eq? yesno #t)
+	     (set! are-they? #t)
+	     (set! * (logoize real-*))
+	     (set! + (logoize real-+))
+	     (set! - (logoize real--))
+	     (set! / (logoize real-/))
+	     (set! < (logoize real-<))
+	     (set! <= (logoize real-<=))
+	     (set! = (logoize real-=))
+	     (set! > (logoize real->))
+	     (set! >= (logoize real->=))
+	     (set! abs (logoize-1 real-abs))
+	     (set! acos (logoize-1 real-acos))
+	     (set! asin (logoize-1 real-asin))
+	     (set! atan (logoize real-atan))
+	     (set! ceiling (logoize-1 real-ceiling))
+	     (set! cos (logoize-1 real-cos))
+	     (set! even? (logoize-1 real-even?))
+	     (set! exp (logoize-1 real-exp))
+	     (set! expt (logoize-2 real-expt))
+	     (set! floor (logoize-1 real-floor))
+	     (set! align (logoize align))
+	     (set! gcd (logoize real-gcd))
+	     (set! integer? (logoize-1 real-integer?))
+	     (set! item (lambda (n stuff)
+			  (real-item (maybe-num n) stuff)))
+	     (set! lcm (logoize real-lcm))
+	     (set! list-ref (lambda (lst k) 
+			      (real-list-ref lst (maybe-num k))))
+	     (set! log (logoize-1 real-log))
+	     (set! max (logoize real-max))
+	     (set! min (logoize real-min))
+	     (set! modulo (logoize-2 real-modulo))
+	     (set! negative? (logoize-1 real-negative?))
+	     (set! number? (logoize-1 real-number?))
+	     (set! odd? (logoize-1 real-odd?))
+	     (set! positive? (logoize-1 real-positive?))
+	     (set! quotient (logoize-2 real-quotient))
+	     (set! random (logoize real-random))
+	     (set! remainder (logoize-2 real-remainder))
+	     (set! round (logoize-1 real-round))
+	     (set! sin (logoize-1 real-sin))
+	     (set! sqrt (logoize-1 real-sqrt))
+
+	     (set! tan (logoize-1 real-tan))
+	     (set! truncate (logoize-1 real-truncate))
+	     (set! zero? (logoize-1 real-zero?))
+	     (set! vector-ref
+		   (lambda (vec i) (real-vector-ref vec (maybe-num i))))
+	     (set! vector-set!
+		   (lambda (vec i val)
+		     (real-vector-set! vec (maybe-num i) val)))
+	     (set! make-vector
+		   (lambda (num . args)
+		     (apply real-make-vector (cons (maybe-num num)
+						   args))))
+	     (set! list-ref
+		   (lambda (lst i) (real-list-ref lst (maybe-num i))))
+	     (set! repeated
+		   (lambda (fn n) (real-repeated fn (maybe-num n)))))
+	    ((and (not are-they?) (not yesno))
+	     (show "Strings are already not numbers"))
+	    ((not yesno)
+	     (set! are-they? #f) (set! * real-*) (set! + real-+)
+	     (set! - real--) (set! / real-/) (set! < real-<)
+	     (set! <= real-<=) (set! = real-=) (set! > real->)
+	     (set! >= real->=) (set! abs real-abs) (set! acos real-acos)
+	     (set! asin real-asin) (set! atan real-atan)
+	     (set! ceiling real-ceiling) (set! cos real-cos)
+	     (set! even? real-even?)
+	     (set! exp real-exp) (set! expt real-expt)
+	     (set! floor real-floor) (set! align real-align)
+	     (set! gcd real-gcd) (set! integer? real-integer?)
+	     (set! item real-item)
+	     (set! lcm real-lcm) (set! list-ref real-list-ref)
+	     (set! log real-log) (set! max real-max) (set! min real-min)
+	     (set! modulo real-modulo) (set! odd? real-odd?)
+	     (set! quotient real-quotient) (set! random real-random)
+	     (set! remainder real-remainder) (set! round real-round)
+	     (set! sin real-sin) (set! sqrt real-sqrt) (set! tan real-tan)
+	     (set! truncate real-truncate) (set! zero? real-zero?)
+	     (set! positive? real-positive?) (set! negative? real-negative?)
+	     (set! number? real-number?) (set! vector-ref real-vector-ref)
+	     (set! vector-set! real-vector-set!)
+	     (set! make-vector real-make-vector)
+	     (set! list-ref real-list-ref) (set! item real-item)
+	     (set! repeated real-repeated))
+	    (else (whoops "Strings-are-numbers: give a #t or a #f")))
+	    are-they?)))
+
+
+;; By default, strings are numbers:
+(strings-are-numbers #t)
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/spread.scm b/js/games/nluqo.github.io/~bh/downloads/simply/spread.scm
new file mode 100644
index 0000000..d52ebab
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/spread.scm
@@ -0,0 +1,550 @@
+(define (spreadsheet)
+  (init-array)
+  (set-selection-cell-id! (make-id 1 1))
+  (set-screen-corner-cell-id! (make-id 1 1))
+  (command-loop))
+
+(define (command-loop)
+  (print-screen)
+  (let ((command-or-formula (read)))
+    (if (equal? command-or-formula 'exit)
+	"Bye!"
+	(begin (process-command command-or-formula)
+	       (command-loop)))))
+
+(define (process-command command-or-formula)
+  (cond ((and (list? command-or-formula)
+	      (command? (car command-or-formula)))
+	 (execute-command command-or-formula))
+	((command? command-or-formula)
+	 (execute-command (list command-or-formula 1)))
+	(else (exhibit (ss-eval (pin-down command-or-formula
+					  (selection-cell-id)))))))
+
+(define (execute-command command)
+  (apply (get-command (car command))
+	 (cdr command)))
+
+(define (exhibit val)
+  (show val)
+  (show "Type RETURN to redraw screen")
+  (read-line)
+  (read-line))
+
+
+;;; Commands
+
+;; Cell selection commands: F, B, N, P, and SELECT
+
+(define (prev-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (< (- row delta) 1)
+	(error "Already at top.")
+	(set-selected-row! (- row delta)))))
+
+(define (next-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (> (+ row delta) 30)
+	(error "Already at bottom.")
+	(set-selected-row! (+ row delta)))))
+
+(define (prev-col delta)
+  (let ((col (id-column (selection-cell-id))))
+    (if (< (- col delta) 1)
+	(error "Already at left.")
+	(set-selected-column! (- col delta)))))
+
+(define (next-col delta)
+  (let ((col (id-column (selection-cell-id))))
+    (if (> (+ col delta) 26)
+	(error "Already at right.")
+	(set-selected-column! (+ col delta)))))
+
+(define (set-selected-row! new-row)
+  (select-id! (make-id (id-column (selection-cell-id)) new-row)))
+
+(define (set-selected-column! new-column)
+  (select-id! (make-id new-column (id-row (selection-cell-id)))))
+
+(define (select-id! id)
+  (set-selection-cell-id! id)
+  (adjust-screen-boundaries))
+
+(define (select cell-name)
+  (select-id! (cell-name->id cell-name)))
+
+(define (adjust-screen-boundaries)
+  (let ((row (id-row (selection-cell-id)))
+	(col (id-column (selection-cell-id))))
+    (if (< row (id-row (screen-corner-cell-id)))
+	(set-corner-row! row)
+	'do-nothing)
+    (if (>= row (+ (id-row (screen-corner-cell-id)) 20))
+	(set-corner-row! (- row 19))
+	'do-nothing)
+    (if (< col (id-column (screen-corner-cell-id)))
+	(set-corner-column! col)
+	'do-nothing)
+    (if (>= col (+ (id-column (screen-corner-cell-id)) 6))
+	(set-corner-column! (- col 5))
+	'do-nothing)))
+
+(define (set-corner-row! new-row)
+  (set-screen-corner-cell-id!
+   (make-id (id-column (screen-corner-cell-id)) new-row)))
+
+(define (set-corner-column! new-column)
+  (set-screen-corner-cell-id!
+   (make-id new-column (id-row (screen-corner-cell-id)))))
+
+
+;; LOAD
+
+(define (spreadsheet-load filename)
+  (let ((port (open-input-file filename)))
+    (sl-helper port)
+    (close-input-port port)))
+
+(define (sl-helper port)
+  (let ((command (read port)))
+    (if (eof-object? command)
+	'done
+	(begin (show command)
+	       (process-command command)
+	       (sl-helper port)))))
+
+
+;; PUT
+
+(define (put formula . where)
+  (cond ((null? where)
+	 (put-formula-in-cell formula (selection-cell-id)))
+	((cell-name? (car where))
+	 (put-formula-in-cell formula (cell-name->id (car where))))
+	((number? (car where))
+	 (put-all-cells-in-row formula (car where)))
+	((letter? (car where))
+	 (put-all-cells-in-col formula (letter->number (car where))))
+	(else (error "Put it where?"))))
+
+(define (put-all-cells-in-row formula row)
+  (put-all-helper formula (lambda (col) (make-id col row)) 1 26))
+
+(define (put-all-cells-in-col formula col)
+  (put-all-helper formula (lambda (row) (make-id col row)) 1 30))
+
+(define (put-all-helper formula id-maker this max)
+  (if (> this max)
+      'done
+      (begin (try-putting formula (id-maker this))
+	     (put-all-helper formula id-maker (+ 1 this) max))))
+
+(define (try-putting formula id)
+  (if (or (null? (cell-value id)) (null? formula))
+      (put-formula-in-cell formula id)
+      'do-nothing))
+
+(define (put-formula-in-cell formula id)
+  (put-expr (pin-down formula id) id))
+
+
+;;; The Association List of Commands
+
+(define (command? name)
+  (assoc name *the-commands*))
+
+(define (get-command name)
+  (let ((result (assoc name *the-commands*)))
+    (if (not result)
+	#f
+	(cadr result))))
+
+(define *the-commands*
+  (list (list 'p prev-row)
+	(list 'n next-row)
+	(list 'b prev-col)
+	(list 'f next-col)
+	(list 'select select)
+	(list 'put put)
+	(list 'load spreadsheet-load)))
+
+
+;;; Pinning Down Formulas Into Expressions
+
+(define (pin-down formula id)
+  (cond ((cell-name? formula) (cell-name->id formula))
+	((word? formula) formula)
+	((null? formula) '())
+	((equal? (car formula) 'cell)
+	 (pin-down-cell (cdr formula) id))
+	(else (bound-check
+	       (map (lambda (subformula) (pin-down subformula id))
+		    formula)))))
+
+(define (bound-check form)
+  (if (member 'out-of-bounds form)
+      'out-of-bounds
+      form))
+
+(define (pin-down-cell args reference-id)
+  (cond ((null? args)
+	 (error "Bad cell specification: (cell)"))
+	((null? (cdr args))
+	 (cond ((number? (car args))         ; they chose a row
+		(make-id (id-column reference-id) (car args)))
+	       ((letter? (car args))         ; they chose a column
+		(make-id (letter->number (car args))
+			 (id-row reference-id)))
+	       (else (error "Bad cell specification:"
+			    (cons 'cell args)))))
+	(else
+	 (let ((col (pin-down-col (car args) (id-column reference-id)))
+	       (row (pin-down-row (cadr args) (id-row reference-id))))
+	   (if (and (>= col 1) (<= col 26) (>= row 1) (<= row 30))
+	       (make-id col row)
+	       'out-of-bounds)))))
+
+(define (pin-down-col new old)
+  (cond ((equal? new '*) old)
+	((equal? (first new) '>) (+ old (bf new)))
+	((equal? (first new) '<) (- old (bf new)))
+	((letter? new) (letter->number new))
+	(else (error "What column?"))))
+
+(define (pin-down-row new old)
+  (cond ((number? new) new)
+	((equal? new '*) old)
+	((equal? (first new) '>) (+ old (bf new)))
+	((equal? (first new) '<) (- old (bf new)))
+	(else (error "What row?"))))
+
+
+;;; Dependency Management
+
+(define (put-expr expr-or-out-of-bounds id)
+  (let ((expr (if (equal? expr-or-out-of-bounds 'out-of-bounds)
+		  '()
+		  expr-or-out-of-bounds)))
+    (for-each (lambda (old-parent)
+		(set-cell-children!
+		 old-parent
+		 (remove id (cell-children old-parent))))
+	      (cell-parents id))
+    (set-cell-expr! id expr)
+    (set-cell-parents! id (remdup (extract-ids expr)))
+    (for-each (lambda (new-parent)
+		(set-cell-children!
+		 new-parent
+		 (cons id (cell-children new-parent))))
+	      (cell-parents id))
+    (figure id)))
+
+(define (extract-ids expr)
+  (cond ((id? expr) (list expr))
+	((word? expr) '())
+	((null? expr) '())
+	(else (append (extract-ids (car expr))
+		      (extract-ids (cdr expr))))))
+
+(define (figure id)
+  (cond ((null? (cell-expr id)) (setvalue id '()))
+	((all-evaluated? (cell-parents id))
+	 (setvalue id (ss-eval (cell-expr id))))
+	(else (setvalue id '()))))
+
+(define (all-evaluated? ids)
+  (cond ((null? ids) #t)
+	((not (number? (cell-value (car ids)))) #f)
+	(else (all-evaluated? (cdr ids)))))
+
+(define (setvalue id value)
+  (let ((old (cell-value id)))
+    (set-cell-value! id value)
+    (if (not (equal? old value))
+	(for-each figure (cell-children id))
+	'do-nothing)))
+
+
+;;; Evaluating Expressions
+
+(define (ss-eval expr)
+  (cond ((number? expr) expr)
+	((quoted? expr) (quoted-value expr))
+	((id? expr) (cell-value expr))
+	((invocation? expr)
+	 (apply (get-function (car expr))
+		(map ss-eval (cdr expr))))
+	(else (error "Invalid expression:" expr))))
+
+(define (quoted? expr)
+  (or (string? expr)
+      (and (list? expr) (equal? (car expr) 'quote))))
+
+(define (quoted-value expr)
+  (if (string? expr)
+      expr
+      (cadr expr)))
+
+(define (invocation? expr)
+  (list? expr))
+
+(define (get-function name)
+  (let ((result (assoc name *the-functions*)))
+    (if (not result)
+	(error "No such function: " name)
+	(cadr result))))
+
+(define *the-functions*
+  (list (list '* *)
+	(list '+ +)
+	(list '- -)
+	(list '/ /)
+	(list 'abs abs)
+	(list 'acos acos)
+	(list 'asin asin)
+	(list 'atan atan)
+	(list 'ceiling ceiling)
+	(list 'cos cos)
+	(list 'count count)
+	(list 'exp exp)
+	(list 'expt expt)
+	(list 'floor floor)
+	(list 'gcd gcd)
+	(list 'lcm lcm)
+	(list 'log log)
+	(list 'max max)
+	(list 'min min)
+	(list 'modulo modulo)
+	(list 'quotient quotient)
+	(list 'remainder remainder)
+	(list 'round round)
+	(list 'sin sin)
+	(list 'sqrt sqrt)
+	(list 'tan tan)
+	(list 'truncate truncate)))
+
+;;; Printing the Screen
+
+(define (print-screen)
+  (newline)
+  (newline)
+  (newline)
+  (show-column-labels (id-column (screen-corner-cell-id)))
+  (show-rows 20
+	     (id-column (screen-corner-cell-id))
+	     (id-row (screen-corner-cell-id)))
+  (display-cell-name (selection-cell-id))
+  (display ":  ")
+  (show (cell-value (selection-cell-id)))
+  (display-expression (cell-expr (selection-cell-id)))
+  (newline)
+  (display "?? "))
+
+(define (display-cell-name id)
+  (display (number->letter (id-column id)))
+  (display (id-row id)))
+
+(define (show-column-labels col-number)
+  (display "  ")
+  (show-label 6 col-number)
+  (newline))
+
+(define (show-label to-go this-col-number)
+  (cond ((= to-go 0) '())
+	(else
+	 (display "  -----")
+	 (display (number->letter this-col-number))
+	 (display "----")
+	 (show-label (- to-go 1) (+ 1 this-col-number)))))
+
+(define (show-rows to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	 (display (align row 2 0))
+	 (display " ")
+	 (show-row 6 col row)
+	 (newline)
+	 (show-rows (- to-go 1) col (+ row 1)))))
+
+(define (show-row to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	   (display (if (selected-indices? col row) ">" " "))
+	   (display-value (cell-value-from-indices col row))
+	   (display (if (selected-indices? col row) "<" " "))
+	   (show-row (- to-go 1) (+ 1 col) row))))
+
+(define (selected-indices? col row)
+  (and (= col (id-column (selection-cell-id)))
+       (= row (id-row (selection-cell-id)))))
+
+(define (display-value val)
+  (display (align (if (null? val) "" val) 10 2)))
+
+(define (display-expression expr)
+  (cond ((null? expr) (display '()))
+	((quoted? expr) (display (quoted-value expr)))
+	((word? expr) (display expr))
+	((id? expr)
+	 (display-cell-name expr))
+	(else (display-invocation expr))))
+
+(define (display-invocation expr)
+  (display "(")
+  (display-expression (car expr))
+  (for-each (lambda (subexpr)
+	      (display " ")
+	      (display-expression subexpr))
+	    (cdr expr))
+  (display ")"))
+      
+
+;;; Abstract Data Types
+
+;; Special cells: the selected cell and the screen corner
+
+(define *special-cells* (make-vector 2))
+
+(define (selection-cell-id)
+  (vector-ref *special-cells* 0))
+
+(define (set-selection-cell-id! new-id)
+  (vector-set! *special-cells* 0 new-id))
+
+(define (screen-corner-cell-id)
+  (vector-ref *special-cells* 1))
+
+(define (set-screen-corner-cell-id! new-id)
+  (vector-set! *special-cells* 1 new-id))
+
+
+;; Cell names
+
+(define (cell-name? expr)
+  (and (word? expr)
+       (letter? (first expr))
+       (number? (bf expr))))
+
+(define (cell-name-column cell-name)
+  (letter->number (first cell-name)))
+
+(define (cell-name-row cell-name)
+  (bf cell-name))
+
+(define (cell-name->id cell-name)
+  (make-id (cell-name-column cell-name)
+	   (cell-name-row cell-name)))
+	
+;; Cell IDs
+
+(define (make-id col row)
+  (list 'id col row))
+
+(define (id-column id)
+  (cadr id))
+
+(define (id-row id)
+  (caddr id))
+
+(define (id? x)
+  (and (list? x)
+       (not (null? x))
+       (equal? 'id (car x))))
+
+;; Cells
+
+(define (make-cell)
+  (vector '() '() '() '()))
+
+(define (cell-value id)
+  (vector-ref (cell-structure id) 0))
+
+(define (cell-value-from-indices col row)
+  (vector-ref (cell-structure-from-indices col row) 0))
+
+(define (cell-expr id)
+  (vector-ref (cell-structure id) 1))
+
+(define (cell-parents id)
+  (vector-ref (cell-structure id) 2))
+
+(define (cell-children id)
+  (vector-ref (cell-structure id) 3))
+
+(define (set-cell-value! id val)
+  (vector-set! (cell-structure id) 0 val))
+
+(define (set-cell-expr! id val)
+  (vector-set! (cell-structure id) 1 val))
+
+(define (set-cell-parents! id val)
+  (vector-set! (cell-structure id) 2 val))
+
+(define (set-cell-children! id val)
+  (vector-set! (cell-structure id) 3 val))
+
+(define (cell-structure id)
+  (global-array-lookup (id-column id)
+		       (id-row id)))
+
+(define (cell-structure-from-indices col row)
+  (global-array-lookup col row))
+
+(define *the-spreadsheet-array* (make-vector 30))
+
+(define (global-array-lookup col row)
+  (if (and (<= row 30) (<= col 26))
+      (vector-ref (vector-ref *the-spreadsheet-array* (- row 1))
+		  (- col 1))
+      (error "Out of bounds")))
+
+(define (init-array)
+  (fill-array-with-rows 29))
+
+(define (fill-array-with-rows n)
+  (if (< n 0)
+      'done
+      (begin (vector-set! *the-spreadsheet-array* n (make-vector 26))
+	     (fill-row-with-cells
+	      (vector-ref *the-spreadsheet-array* n) 25)
+	     (fill-array-with-rows (- n 1)))))
+
+(define (fill-row-with-cells vec n)
+  (if (< n 0)
+      'done
+      (begin (vector-set! vec n (make-cell))
+	     (fill-row-with-cells vec (- n 1)))))
+
+;;; Utility Functions
+
+(define alphabet
+  '#(a b c d e f g h i j k l m n o p q r s t u v w x y z))
+
+(define (letter? something)
+  (and (word? something)
+       (= 1 (count something))
+       (vector-member something alphabet)))
+
+(define (number->letter num)
+  (vector-ref alphabet (- num 1)))
+
+(define (letter->number letter)
+  (+ (vector-member letter alphabet) 1))
+
+(define (vector-member thing vector)
+  (vector-member-helper thing vector 0))
+
+(define (vector-member-helper thing vector index)
+  (cond ((= index (vector-length vector)) #f)
+	((equal? thing (vector-ref vector index)) index)
+	(else (vector-member-helper thing vector (+ 1 index)))))
+
+(define (remdup lst)
+  (cond ((null? lst) '())
+	((member (car lst) (cdr lst))
+	 (remdup (cdr lst)))
+	(else (cons (car lst) (remdup (cdr lst))))))
+
+(define (remove bad-item lst)
+  (filter (lambda (item) (not (equal? item bad-item)))
+	  lst))
diff --git a/js/games/nluqo.github.io/~bh/downloads/simply/ttt.scm b/js/games/nluqo.github.io/~bh/downloads/simply/ttt.scm
new file mode 100644
index 0000000..71adb0b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/simply/ttt.scm
@@ -0,0 +1,102 @@
+;;; ttt.scm
+;;; Tic-Tac-Toe program
+
+(define (ttt position me)
+  (ttt-choose (find-triples position) me))
+
+(define (find-triples position)
+  (every (lambda (comb) (substitute-triple comb position))
+         '(123 456 789 147 258 369 159 357)))
+
+(define (substitute-triple combination position)
+  (accumulate word
+	      (every (lambda (square)
+		       (substitute-letter square position))
+		     combination) ))
+
+(define (substitute-letter square position)
+  (if (equal? '_ (item square position))
+      square
+      (item square position) ))
+
+(define (ttt-choose triples me)
+  (cond ((i-can-win? triples me))
+        ((opponent-can-win? triples me))
+        ((i-can-fork? triples me))
+        ((i-can-advance? triples me))
+        (else (best-free-square triples)) ))
+
+(define (i-can-win? triples me)
+  (choose-win
+   (keep (lambda (triple) (my-pair? triple me))
+         triples)))
+
+(define (my-pair? triple me)
+  (and (= (appearances me triple) 2)
+       (= (appearances (opponent me) triple) 0)))
+
+(define (opponent letter)
+  (if (equal? letter 'x) 'o 'x))
+
+(define (choose-win winning-triples)
+  (if (empty? winning-triples)
+      #f
+      (keep number? (first winning-triples)) ))
+
+(define (opponent-can-win? triples me)
+  (i-can-win? triples (opponent me)) )
+
+(define (i-can-fork? triples me)
+  (first-if-any (pivots triples me)) )
+
+(define (first-if-any sent)
+  (if (empty? sent)
+      #f
+      (first sent) ))
+
+(define (pivots triples me)
+  (repeated-numbers (keep (lambda (triple) (my-single? triple me))
+                          triples)))
+
+(define (my-single? triple me)
+  (and (= (appearances me triple) 1)
+       (= (appearances (opponent me) triple) 0)))
+
+(define (repeated-numbers sent)
+  (every first
+         (keep (lambda (wd) (>= (count wd) 2))
+               (sort-digits (accumulate word sent)) )))
+
+(define (sort-digits number-word)
+  (every (lambda (digit) (extract-digit digit number-word))
+         '(1 2 3 4 5 6 7 8 9) ))
+
+(define (extract-digit desired-digit wd)
+  (keep (lambda (wd-digit) (equal? wd-digit desired-digit)) wd))
+
+(define (i-can-advance? triples me)
+  (best-move (keep (lambda (triple) (my-single? triple me)) triples)
+             triples
+             me))
+
+(define (best-move my-triples all-triples me)
+  (if (empty? my-triples)
+      #f
+      (best-square (first my-triples) all-triples me) ))
+
+(define (best-square my-triple triples me)
+  (best-square-helper (pivots triples (opponent me))
+		      (keep number? my-triple)))
+
+(define (best-square-helper opponent-pivots pair)
+  (if (member? (first pair) opponent-pivots)
+      (first pair)
+      (last pair)))
+
+(define (best-free-square triples)
+  (first-choice (accumulate word triples)
+                '(5 1 3 7 9 2 4 6 8)))
+
+(define (first-choice possibilities preferences)
+  (first (keep (lambda (square) (member? square possibilities))
+               preferences)))
diff --git a/js/games/nluqo.github.io/~bh/downloads/ucblogo-4.xo b/js/games/nluqo.github.io/~bh/downloads/ucblogo-4.xo
new file mode 100644
index 0000000..3af5b86
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/ucblogo-4.xo
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/downloads/ucblogo.pdf b/js/games/nluqo.github.io/~bh/downloads/ucblogo.pdf
new file mode 100644
index 0000000..d45d0dd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/ucblogo.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/downloads/ucblogo.sea.hqx b/js/games/nluqo.github.io/~bh/downloads/ucblogo.sea.hqx
new file mode 100644
index 0000000..242d5d8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/ucblogo.sea.hqx
@@ -0,0 +1,65836 @@
+(This file must be converted with BinHex 4.0)
+
+:$A9MBQa[Cfme-bjcC@%!39"36'&eFh3J!!!B"pi!!%DF$2*6593K!!%!'!IHFNa
+
+KG3)!N!3@DJ3J)!a93d)J6'pREb!e,M-!N"2*T`#3!pm!#`(0!C%!N!-,!*!2KJ!
+
+!!B$rN!3(!+6#c(bkBHJm!*!&562r!*!&'!GB!*!+pM)J)!4$8da6!*!ER%S!N!-
+
+Z!!J"&3(G!*!$&3#3!aB!!-%A!*!$&J#3!rB!!!)(rrJ!C!2JSlBMS+fiTC-!N!8
+
+#MAJ!N!E!)3#3#T1'!!d%B@aRF`#3'`YE!*!4KJ!!#CX!N!1'!*!%9%9B9%T@-$%
+
+!!+f0VI#YMDh`!*!''4%!N!B)03!!QBi!N!C,U3bLB#A)!#D860EEM0"Zr5kIi&N
+
+44QJHf8pZ-lQhEfdVf@3P+hQ!eA0p!%la!9`F)+-$6Ri6p+-9U+j4ekM0NQc*Em)
+
+lFS`m1i+3!%dfl9B!RH&I[AT&aqR5@19@kjb%6ZK81%%6Ci[B&9EQ[4iJhTTBT'3
+
+bTpEUCq'8d@3@p&-K%S[AQ"E'VSY8p(V1Y&H4S'K18Ga,'AiY,L6Y@'-Fj6pC4hh
+
+FrJi!Zr[m8r#2H0""ABqS[a[0Rd@-1AM4(hZF,F6B3qcH3@4@D6$-TAC5aj+QjbY
+
+*Z8N,PJib@cQM#2af@2$SHMcS5CeiTFrNfV35Rp1Ld$'rHQdG4CULLifJ-Lp54m[
+
+-QUbm9J[58&QZ-hH$Qa*KDJUA&@!3hQHp$Ek9!Vm#IYC`UG"k@r!J&`6TB%&E`R`
+
+TS#pS@2-GcET,h9i1Ca@YIXPKGc5JCq&eGi6haKH66-UNb0J6%lA18RQpG8CH(NA
+
+c`MPiV','MP`SQi0M,2*B*,+"S-prdi9A*5r@X%+5%a!$LGGMHJf0ASpQ0)@`rfB
+
+`)Lf[R69A!'C%Q+'8P#@Vf2QFUJ5cN!!CLE'$DqU[48Bl$))`$$!0I-8XLXekRRZ
+
+2"F2ABSA,a[MqZICF,A(TMa)Y20jb'04XE`mEIaVVP&l5lLlP-TAHQ%Jmki,8r%*
+
+4UR,A#ZAIDhQQXeSD$iId,CNbc)$k$I9`-*de9JU!d9SK4IKr%1Q)iU5Lk@Ah3+8
+
+SZ2-*PFSmGbZK!FIA&AQP"r320RT&S12DDX)iI8qZ2[$F"VqSkJ'Im)1+$2hNVNc
+
+JDHZZl)ZlRL*L!q*ICeflb,08)5@f6N4#Tk*q(Y!,'Qm0e(',!S@0KEaJX&$*lXl
+
+BI3pmkrAD4JrJV4JPGRI4aX3@fMXdj34GUHAU8ec8&DjIZFaFJ@Ajb-!`q*2i61k
+
+Ep"rc`j2e,2mPId[!bhR2`U[dP#@a+9"6%H3)&C9c*@+AY%(SLdPC*l9B5l54&Sf
+
+Q)55k%h5kKb2Z#YAMXe(G*39par`UGkl-e9VSQl)mGjJpDI@'85hQm6ah9U!FqGA
+
+Jr#D6[!A3ZC8bMqJ%8(j)-$E8Cja4P!L(dK2&+j8Q9ZT0(lSrVSJb)cSq2BpSiZZ
+
+0XF%X*CifLDb*"1IjNdVELXm@U6&[!lEKHPBi8BNRNX5cS#M)k"plch2TjS[bTZ`
+
+2!DBKalH0raYfaUfN*G6,'*h66bhHr3*d[+b96*eYfM3&dU@%ZF2[#S`Vkp56H)f
+
+0SlaY)4Fm!V3H+$2heL#e@0K02KJ,19N%cq'+RreV#"Vr(N+@JP6E%rmADN%rR2r
+
+"#Nld8VrTH`i91P8rSP-GAkUP0KSYrDl3PpJR+k9&$Ie'UKmj5bH)bq9++2TMJBH
+
+I9kDJ5F%r2a1CrNdV*a--AF**P2*rVJLGE02[j4AphGL,AfH(kUm5U!(&c$C(ZY*
+
+I6Eb5ZC2f2bbU[f1l0KS8(X4mG-LCb(-4V`S%NrYeBlQ6kSh*XFV3L9M2V8U@%Jj
+
++jS@pqDV6QEM4`LCIK$S4U8*Cd%Tm-p4%D2)"S[,Bc1L0Y"FS"0p83Z#N"RCdJ(m
+
+[FNa5@Rb4l)2)N6p,q15VC"-TR%XP[8Y[eTPLU[c[Fm!*,C*I(,'*dAID)6R09bA
+
+1M68D%Il11A%Pk)25#GVX&qhr8XLjM,qb230AhLFT)00ET*,5@&kra"J#fXbEV)G
+
+D@Q9b1I2f!BQke'!ZF9c)P,ZT@Nfi38hR)iT#)GPCL$4[1Z%Y4Pl-3p'k%YVjIS2
+
+LlIIKkS$keBVU%F[U@H*Lk+KkGAP4lK+qF9AN`KDK&K*#e*[X)j[1)4@[B(k2KXh
+
+M%3!Mc@Bm`KL"IKPNIUldFi3YQNI*Ypmd[PV"MI6eM19C2+k%TBU02DB"#d0Vf$E
+
+[$&+HhaV`ATQSHRe5SlcYj'J9$melDqbbK$q4kPEk!0eXYIaF5re*UDELhl1VK`G
+
+XK9c5HEfTf)3E[d6UT"S`F&rQ9*0X&9#G#Jq"XJf(@mI9qQ%8`&""diS3TS&lqpH
+
+X@eA+Rrlm,PQ$BL'X-I)dQm%a3KqM9L*IH*0N!KEK`51X+$MQ@iVilRDbm5HYq-L
+
+#$U@a@`28mD88p8*BE)E#aUYH2B3P-UbXdr&`6%f&3dk0K`IBNh`pipI4Q*UqMZF
+
+pI2J#kI35$I0a)`$#5hS2(k&#TYQ+UpedElK(Te*IqKMF'lkN-bA@LYr!jP4L`eG
+
+BH1qCl)hf-88m"pp#j8$E(ilS[6@A#Z8dCQhfKrYdM+89RFqr(U'HDhec+D$F!je
+
+pd$P6kC8S,Y"$q2dPh4ERk8X`BVAI@85+IT,h!#c24-+,(r!1i!k@k,dS8[qm4hq
+
+'NAJdm-rlQ2[5BMd[2P+"!0r$HCFUp9Bl'"e5'"c`H!KE[K8jr5#AJX8rK$)R+f&
+
+6ipb6ZSHXK$,&0CdJ)aJ3j)qe@%QepUm(cFVLh`pT%N0jC[[!jJK@Qr"A0'mj,NT
+
+'4m%F'Dr-q-fU(-(-2f#0,Ucib1+)rQ3d(*!!&ZJN[YiJG%+)F35eiFqG",eb@[F
+
+rcUik'(QfUc,V-H2Qf,rX64MDUU!$fEP!0Q"8qjm!Ab(imE!pV&Y%b4(&aApG&GC
+
+V$c&i-HCkjeNdrDl'JjiHU[XbT0DH,iIENEiF8pYKhP1V0,B5mFV0NlRmYNG8X*Z
+
+TrP(8S!9r![AIcdTUP9QX6cD[6Vd$Z22`VdhAZNHiklZENMFGSV*kDY[D'fTD9pE
+
+!)"$kIGZi!N"GFIfcci-!pGeRU$Z9d12Rh#4@J@hYT6XFr[#K!fUEriC!ffZhHMG
+
+M3h"I8eShG1jjrXE(Ik(b51Ir!*!$$39LBA0TB`#3'SVH!*!4pJ!!%%J!N!1'!*!
+
+%9%9B9%T@-$%!!+cR2QkXjcj[!*!''J`!N!B'23!!QJ3!N!E1A!a11ANm33B!`C0
+
+Mj&Ej88ijSCb-q-SQK'8H18U1%pB4@Q6!#Ck[j2(8!eJ6J$$mS2!$1L$(##IS4b[
+
+`jI9p(XGh6111j)3r18Dij$KKK%ZHNa',8-*A3Jp!CrJb%iG4SDCH%Mf4`Sp9+Y-
+
+U1C4j)F)*(q8bQZ%KAXbcA*l)A)3DGCPRbE+FH$+GHCkK3NIH-PGTLC!!p1!I2,M
+
+hcBrZb[%P9#6TUEQ3!)"p[K4M)Pb8fA)#Cc)ZT#"KPQ+ZmU)d#&-JUf)TLQ@Xq'J
+
+L3T8NFUDL8[+&9FM!MH%KLG*C`8)30d0YG6cQBdh&L-%k(9CPKbPqpJ6p3TP(KG3
+
+b-B9*IBc8CR)Z4UGC2K1q0X%0!a5XL6N4$I3iMC*"5VK8U5T9PSS`R*!!CD2TSPB
+
+Sc+Y8a!V)-APfa5lVIcF3GbIHF5@V&Cf4a[46H9BfUJDHaX"hVBG$A+H+5JZCJkU
+
+0TrM@kPYM)%"4VS)"0!LcUPa@S*pq4D!!Bi)JElZ%U+(dU`1jp3aNVT%XliRAh$@
+
+!SdBMje@m$Db1+rq[cC!!bb3lSHZY%eBjTRe`A%@a$8LYNJLYapX!Tl!Y&bSp!N-
+
+,%kBG"3J$B)#43'jD"9)GYX`V##kCb$1&BT5,2$X92Q$%d"9Ld`!+QCBbR3,1IRS
+
+5a@U'BBb"0*k`ZPVeQcI&I4e(U*S@pHYlMrI['l!QaAF"d-ED1Uqi2R6C[hZ8`H-
+
+,f)d0iUL1iN$ib-`Ch6%VUX12e!C5Z5bV22fJ-pR1iP,mm1[3,lc6"4DM--e+Ql9
+
+m#TkH%TZp65hJR-'ZB59J1#BYcjB#rZDb+,!9Q!T&i8%bX"L)j2YG63+lR5IL5+E
+
+`VcR8*8L3!*&Z3'p#"+XT2'KA19)@GT!!MdS0k'hSM*P2dpB'@&d*#"B*8KbZI'1
+
+-DATCV"*93ZPCCL#bX9fGSJl"hpP3$MAEk5,+a9IV1+rKIlTTZ)miM@@HCe$E)9U
+
+65-",)4-ec@*JP8SSNc-SA8*lGRFb4*!!5R8[HTXN6T2@f`E3q2[#fh4%)m,++@p
+
+G2qB&iVhGVa*3Z`!5d)8FAE!I6X#@V9kr&QL0abA!"r+!$*8#&a$S4C8-VL')NKG
+
+4i0b[aGbi2jE[[,re`T9ZfR1$GVG&f+Rf#25#KJpkJ5bJPV&%9c(@hV2pmm*r'1,
+
+Vj)1ji'rT1b(q&EjF5-MlMIEk-TSMLTTV!lc5'J9%55Kk),,QHdh(a(F[cUC4h"$
+
+B,NP[CL0AMqXQS*[HD*T9@%8GS3!mr'AGVhKRSIaf-2eJKZ26U9kCZ!2dVG!Z83c
+
+6M&'IG+-43B#"HY2$QR)04H#4id'C1[1+-S)*kPU!X-Qf8C-pSifVbmHSeF)&lj!
+
+!)HYG6N2#Q0Af)JcqiS96TL('fm`U(#!V,fZFaELD2qQ-dEE4fNF3#R-03!Epida
+
+q(j[hm$1a"ih`*C'3!(2P#2SVC!Ad6*2&Qep2d,`lJlq'VchUkmQ5m4XMdcKR@Sl
+
+G%k@)dMUh-06%Y`pqf"(l$hI%p`IlMq!*6KjqGd$ME4qVH1#qA#Lc*p$$m'C[Xa[
+
+SFeJ0f$NDQijHk[X,06Y!BiI,hE#XD@p@!SE$5'R)p%8JNI3T"8Q#0[pFI#UqJ*j
+
+a5p`4)a'!G)Bj5EP"h4'`-ifTNCBC3#kVBZ&bLQ&%V3PQ"Ar&B8J-00[YL'&J-qU
+
+4q0N&#YR,Q"lR&*b3!2@XiEj1`6-$E3rf0*TQ%Nk%[rUHK3$'[)'e)M3@T(Z6KQd
+
+1''0d!JlqC`$pL3h8CLDl0J@4pCq+Trma(XMAQSpFdp#%SA`aL2pF%c$Up31+S"T
+
+&#H2N8Gep9RiN38a!Y4"$Z!N+,KiAhX[eKdp'c3FMV9*36fadr@NeDMLX5J[KBUS
+
+f5*p6G,B1UUl`2bCiR!-,!F6`mEM+5UQ,rh1cNi9q&h4VGA++kD&',hLb$VK%VRe
+
+8krqEN4MR`NRe9f3ARrj!cGFBVF"i"PdC#T!!+r+-dYZaQ@TI&3IEk0SFXXf!ckm
+
+(+"(M5qk[`rQ$-Ve%Jj-kbf*PI)ZeL9`c50T5H!!cT))e*PD(HC5IDkHfRl1CeKc
+
+P4l"k8jpBIjr99`D#iiQ5Aje5G%$YGihkjY-VJJRURG*q+@#@"m2)I+N*5G4pZQQ
+
+6f4T+6`,QAP2l(`#3"!d&Bf&bC(-!N"UNE`#3%!QE!!!5Y3#3!iB!N!4849K85PB
+
+`-3!!VC[r0DfErcB!N!B%r!#3"J(p!!#Z53#3"K'*#U)!6j!!!8a'kj@5P9!m`a0
+
++"RK''*QXM$$#MS`S14SCV342(S$LG6fYdk-%S#X**5ZK"2f)"Ej'9'BV)j3m*60
+
+'d-A`j&B!)$Z"edGVYPB-d!SVabm&R1kl`fDc4a!JXGf"fIMS5e%m#3Y@k0eB#f[
+
+&-ka[PX[EXQ'%dK0Zd4+I[['JTRG'fiN!8(AL&G5r4AQ`#'0RMPbC4lLc4)#T3cq
+
+#km)6!$cJ9QNi4GL,+l3a&K68Aq%'*J1h*8MMFJ%AhUJi,3@$N9"@i'!GDMKD0H&
+
+HqfRiFi'j@hUYQVTDZ%(Tk5Sb8%[rp*XG(ZQ0mqH0APH1#kmXLJRca$5UX4+Y'jP
+
+08iXqDq*Vm`jD$$M@Mk,GSI4H1-HU9m@b*GQ3!)4Q5fBrlVqYCVl9QcVPjk`1*rZ
+
+8V(,`BKAiUl!ZUdrpY@SBUDl,l&1i#1GmQQ2G0iPcX@Sqqd9f++dQ*IE1NRS@&)a
+
+U*GIqHMEk-hDqD-NeQNZDBIqFA12p&Kr#e4HT3V-rPmFGRD0QKqJ"6YmTL+,Yh29
+
+NZf0lcldij%6cZma*RLZDp%laj3XKAq-"U5mT-F85AVh!GZH+`$pT4%ZVk5hkf"Z
+
+0+CRB0eR8Q)MTR'34SVI[,9dXYib86$bhM)QBrVLTh[iJQrbRIh+b#*)1JRk&rcB
+
+m6$LlX8p"f'Aa(`#3"!d'Bh*jF(4[!*!C)E%!N"!35!!!(Ii!N!1'!*!%9%9B9%T
+
+@-$%!!+dj%e+Y1406!*!'(DB!N!B+f3!!N[%!N!CZe3a10rQ9)!1BV'5`k4&k5HL
+
+9QqfR2-pYK&rRS#0EFY[)*YZ982,iJBeF!DiFj)!`XJRkd3T8hk$,"[ff)jY`XXP
+
+[-YKN%l6XPG!$d"QqeK58IB&rEf[4eDZYP`YDma0Y[B,@69')-[!UFEb2'LN0aZ&
+
+SUdYKMMCh#ifUpS+F6`*Gp+')D#e&ABX5h*5h&F8UdU@pU'Mp'DfrTh@UdRV[PGA
+
+)bqX#hDLDVPGmDGr@9DTL+3iAGCN@Z!LNm%SM5j*@YBj,EqYN+N@B9SAdHJMSb3V
+
+J%HQ5iNC8eCAPiaiY&GT8L@i0(m[JEP9!&L'e,PC#KD[9aar69a!Jp@3kH(@Ue@S
+
+&*mfDh0Cp)9D9U#@NZ,,2l!9F')$aj0V5FGLX2GeD8aJSCQ+IJ@4--6k[hp*EKQL
+
+8$clKK$UUmq9S!82Z`4#`R[##a,l54ZV!NpCcV5j$LP+B("a(`ljCdIe[`MG`DkB
+
+(V!H8SK5`MEJbeV*BGj2H$R-5EY'!CEqj@-3hAQM+#TjP2p&CUN,4MGIRG+Dd8L+
+
+QPkpHh!,fI'@mpAFM-3)(`1d8,lmb0l3jT3iI1EeJU0qaL)J+FTPP4(a@Q+Q*AH2
+
+*JK`0ij%EfY5HP%JJPcI1$Kr32TV3A##Gc'12EB4BeJIl-"&%#4NU"a#3!&8Dq5k
+
+f2Y[DFMdNe0rB`TY6E%9&-qTb1#2d"!kNLHlehD-+G&BRl*N*j2cLaZAB"'YIM#-
+
+YjUGdGXM)meQ9Bh3k0#)F`V26fEe6$KP[c,BY!%0R9NPRaR2Dk+CQQ@drX,Dd5(j
+
+64fR*SA1#Y+VXI'34![-G!PS0MEcUXJ%YLhCQj&TJaVXd%Q!r"X)(8[IJTmMG51m
+
+*mZi"j$fa1kFSIZZ[9JIC6PjbEH[*5rE`[CF1@A[fNBPfUj39db'Irq5GUBi3Y2l
+
+1L(4!Q"ekJ[TbJAUQ5qX[$-#p4BrL6HRrMHKpl5%"!lhGHLTdm6q93Lj%Hj5,M6R
+
+*48pcIdC9#S2%+qG3QN"ZqFj'(alS%eVr'[C%alEG%k@YX2iCcbr38XDfrA6p!J%
+
+!LpjIFq+24FiLEA`K#JGJc'(2RK4Ej"F&jhKGFUIANBd#B9eJ+85PjRDT4mSZa("
+
+KZLTY(U6!i8')8hHFIS!e$IF4dBJlXR%e`iL`#Edb2ebi9@+@+%Sl-,!("aD'S8c
+
+MK!Zm4PZrA`%QrpT)18VqAJLVl,r)6f3RUrh"5e@0[mCZL5#hA"MHmija'dN[AKB
+
+29JUX9V"Fi[QSiNBk(BlV$DF%3ci['b2alb"+*3)H-pMK)p-c9jY0I&H%l"[0Ifi
+
+d'CR2&Aecc9@3!1p+hCTTji[jpEHdrRTqrBE@IjaI[q9dRelr61ZrcUpBKlkIr$G
+
+H,DDDYk6Tb&6'3PH+hT!!N`CKV`5ll`d@R4*'ideQC191h`d5TVSF"SQjVAj#ebM
+
+Vh$aYhClh'I0lkq*YB@2LqH`Hl3A9V3kd(&RaJ8d5Lh!1aUBEhUm@r(#"X5"9HeY
+
+qMD@G(XlIjXh-4G0ki+LUKRF!Sk9p3[Aqj96Ih-h8L)aJea2U5'D-XmHPaMK[2$Y
+
+jD`Ul0!baEVb,(4Xb+&aMaSh$LifG1HMQh(P0VqqH9N88$q-Feb,Hc'jj-cVP$FV
+
+%U+G,j!r$dqZ,KqRT0BC)jldCmRQ5!c065rj(l)(9$e2IEh4G)r(HQBJE3%MXRMQ
+
+XPeE`00q1!$Id#rEkXIA-YlFQI%f'M1h#E3&Z8(`NYT49a[k8AViFka&ZZ&5-IC(
+
+2Eej2cd`5!AXLj+)0d'H-F'%6dDi!j[BF&$rkZ@XlNfBA,dG4R4jmDS0i8R3KXEM
+
+"h&ZZ@#DIf%iEa,ePR[RC*HjNIhX*M$P0$-ar,$lQiq,`TE*1liZMkH@pTqhjbG4
+
+d'`TCHdrHIR3bqXGdJe'M@*jrG+IEpHiPZ,#m*khFXr-VircEX)ZFrhAXU2CNh'H
+
+L2cSA`qEp+MlfMQP%GfA$pVURlJ'Er`8G3,GmITbCTN(S92LGdUME+,hMKaNhFl%
+
+GXm35p942CZFj$!N!L49NQbHIj9Z*irJhCZmK%1D!AiDFSUQ5`aFJMjqA6,$ri$U
+
+1@!rKB`NGb#kd#[6,QIB(E[cC"XaS[YL!$cJpf-M,S[pq5,Me61kb`APKih26SMC
+
+H&D5T"B+Ih5Z@ScZhT@kmSZ#KhZ,ETG5Dd*8iTS'"GK6RF`p4jrN9lf`@-G!+Vde
+
+3DbM#23Q$)eS!APhH2l40i`Ml@FEam'5ajclj6q4P#`Ad1-H0eGl1!cE@RZ%2P)r
+
+IB4K%bpUZ)HE$MkN!ZrXTNHIEHmV2f!I+KaRL(HI$r52Tq`hMQI84rDLdqe6"IB2
+
+a*29brk6eF[a"l!2kJEEl31-(eX[j)qRPpMhR!rD"X[hfiJI'mr8MiIRd2Gm&HGQ
+
+,UN")k5QKQiS5)E&Bfp`qVLFMRc1Ab-kI,pclqV0C31i5q&m*H[AUQQjqYRb2Y8a
+
+UGSY"X8!rifRX@2,GadIM-1DiMhZG[F*DKaAM'L9KQY9'6IrNEIN,(rXa(RqM"8(
+
+Gl-L[q($Smk&A6E6V-h5mp*+bBTIX51I8Pj6SVXKST`E4C,VXD4H)ACY4Pj5elM[
+
+Z)%0,ZXq`lQ1m6l)#H5Khr#69&3l9EUFZU4`5JjcR1Yk4+(Za5hVdSkaJ"Qe5lZ8
+
+ZbJQZR*Nf'3jh195KA%HY6#RD0Ad1GA!*LHJYLp#r'0Vm,DQ5LI4P4N8$K[Q!!QF
+
+%B48D8M["2"Cb'R5El*)TYJeS8PJQPp3`LkL%qSZ@iC!!$FRZdXM&A(3B`KqJ)mS
+
+S'RUGTC5h1Y&J-pdbMe+)S69dFc$VP5@@l"T*3kBPid*,&MTVG!mh8Cief3"GJ*8
+
+hXNR5UlZM96&TrAk[D4rP"FPSb'JENLkm,T,T9P%kN!$F8Tc@1SmNLUBUD*!!Z9D
+
+qh+2S45a*X[ANrUF$I`XS8k!fqY,J4*)!3N28Fdcc2eXDY2Nhj92Fica6fhB`KZ8
+
+$d&@kdm-3j3N$GGY!8j[+[D'b9Iif96j&(9L#V"i-dFk,TCIM2$64XHe5,H'lBHY
+
+)JY5X$A84PfMB2pC0T139L`'%U"imGX#@1FKpUM+,MLGBJ(hKJ+1ZfrC"R!jl92F
+
+kBCUpeqeT5*&c%#H&,DK'(S*('(9m%ZCE*5qTMe3DH$&N`-f3!26e0JC[kj)Lc69
+
+8KH0J[b)G*+3aZ9(dd!k@Lq3f(kkX(2L$pch#0+)f-NE*Y3q,+8`$-%5G4kPUSf&
+
+rXMSfVfr4h58PIKKdY1[#-T3*p@Q#Ur+5cj!!URkD)[VMMMqFJlaT[`X6`"LVTj5
+
+%mH"6h!*,*X&!)NM#,KkL5qV#@!9B2f1!8ar'XU68`hf$qb5!bf+TE,B,m$8R9ha
+
+$!DN8H3Rk-BY4*ScEPT6j+G+l#p+fa)Hi6-r!C4dS'c8J9iJb&C3qL9J@E9cJ3)F
+
+GL6$ZC!KQ#6@4`HR50JQCelTVBF9bPb)Km,4fXTD"J'ip`hBRelbLcGFYqE@L6P9
+
+aK9P(C$L1)q(l3Aa*BGeR2Nc["d'99cJSqfCkCAUUDS-U+UU'#P&48m@CUP!59&8
+
+e[QIKfVUS989qDb"fIXhaMLIF$$kQ1a0+&I8qjDTX-Vl'@e(&"GkSfNG99e!C%cj
+
+JU-T)m*&A&F*[,,hH0`5#%Yr)qU9U@,-mU1)VbRSi,5U3!*B9P@#E9i@K&2K4'KG
+
+9ac*A64h`$CJ`$DF!&4!!BR9qaKmF3MPIXBK`crm"!*!%$34ND@CQG'm!N"PG-3#
+
+3%"+e!!!MS`#3!iB!N!4849K85PB`-3!!V)QMCUb*SfB!N!B2Y3#3"J8e!!$5YJ#
+
+3"L50#k)!6j!!!8a@-PNPG%$B+PFb@2XLR1EcSq6i5Cip'DeN*Br[G%d*aDGa[,G
+
+fA(+-F)*qY!*IAYrh%GT(1"QaMK`R+1*iFRL"CPN04EPD`A499QV#[aP-pGBf@jY
+
+8HTPA-&VQ4TAhY@j9d55Er%(Y)$"DjC94L@j8hDUm%$(lpb`T9e"V#fV6f%q0e`J
+
+cSRPU5kXmC*iBC3G%dV4PM96AGlHhd#UcVDbCcJ9P9'e9[93`Zi"E&!S6Z*al$`i
+
+8EjJL#a4C3[kIQRbMB%cH%JJP-(rDB6!@MM!98D2,m*&KcZPCjafq,5YYd%5fSR[
+
+m1`[#iA1JkL**cXrK`d2CJ(j8,C3&@PP5+UZb9JE+'ZaDJAh53-,-DC*)T0P5P,Y
+
+`CLib5I1-L#H12TXRK6jp@T1l-mieJqq9T3GQ6b"mN5-E1,+1!jh0k`,e'B['HV(
+
+K-B1CXEUC%p8jA'QlCZ-![9E&D6+(QITpQeH"QeRR59i8d4-2r[kG`c9'3E8Zr#Z
+
+pV9&K,`3clH4a#G!2CUc2M%rJHl94Q`@#QD1Xlb@!R*j+k`I#V(3,QQ"fR9Z-Lef
+
+ZZd5qk*1'*5h5V-iE+T-ZJ5rHBi-S,&eJ@b3YiJNlqkF2jFb*GqlhfZF(KXiHeh@
+
+,L653!2I[@8*[RqRm-f*,"Z-U0aB@@q[qSchBV%(pm$(KId64kp5R`IFTBrreYk0
+
+S9D0EflX,BqrE&rpfTSaAC@YX[A-&aNY-6%qET5H#BB[50%E-4fES2H'K[5$HSKG
+
+1UcGjjVI$I%iXe,fl!KhBHQJQd)-LP`N[Lc(c4*krQE4A%#b98%b0hG,'V,G%6Ll
+
+*%ec#Um&!H9V4$dG+b$&,)LCU(95GB#*M@H-8@l9kikB&B#Hl4j-r+KSQk"#AFMp
+
+KNPVpi9j4$J2%Lk'+Jl-l&$VUa''`m$NifZL'042+,8-h%XQ8fSqcAZD6ESYJiQm
+
+d(Z,1F0elM+2a#DPF8p(ZidUMG51@[V3BCe+bDX)-4*d6'PdC&,PC8m5TBlJHaVK
+
+UPQ[I[cMC1PP5R9j1N!$R9Yh,01C9i05kF[6jQU4(3a91dT0**+2Pd*&PHc,X88r
+
+'l[NEK1b!UG0lF9!--pIDE0)iA!9'Gqmqh,crb+a(k"-&m@!!M%iF3CDQ0&)lSGP
+
+"+*,p*I6kjYHEMcGI"+)j)K"IR+SME$38qNh)fepqH[Ic2d+q$UF`@Ekl("HrcjK
+
+YYbV"QQjDMBdM5`K'RbrJFk`C8ZikAPKRdJNRp1fi-q4q%lLa5dKjGj!!H9lLf(!
+
+p2dca&@H4Abl%Rq!'9cQePq`M(%fS4)MBLaqaM,'Bibk,Ub)m,0Fk$-PZeD98iad
+
+aAhck%$NAMU*K,-5e&ke2YeUk24H3!'&a1BD`K4ap($fHE6q$`QaiUfZ$-9eDh4l
+
+MhDY5p'+1h5lFE'e1Vqj-iHjJGc8qiCQLe$9Fi6"iJ2(Yh99+3Ql,4pc6&GipDMb
+
+fmC,LUA8XMjM3BlG12)jSprF4&YiY,kHp95HdGj!!K9G,Z,(jA6JPFIkk3%JTHdH
+
+5Yfhq#FkH6ceh9Qd-[(D+cq#TV#TBb%R!AD"`)Q&8m65hmIHp-%Np6QjmSYqMIK$
+
+8+jp*pa`#(XH5adH0F6&qAAe4G#6k-N+M$C(RHE!1GLeJh$fQ4j2!qeaAMhQ&YEj
+
+R&j3Rl5p3FS$bK+p&EKA1"@`Aif594pfqZAHU4F4HGH3EJX"N8GLZb[I+cX5HX*d
+
+BcdSBh(N89laAh*eT1mSi4rU0laZ,6p65@I`SYjCH`X'K81Q$0Ejb4"2TrKm!N!-
+
+0"Q4[Bh4[FJ#3'9bG!*!3(Ii!!$lS!*!$KJ#3"&4&@&4+9M!a!!#YZ+@6VELPN`#
+
+3"QBr!*!''Y8!!1)k!*!'U@m1SS!5C1#CN@2AN@1%%Nk[mlT01EQ&9AcKj,MNPL2
+
+mb-)MamPbkd)j1Aa[,kIi[$Mqil59Ndd@JRkd!M9Sd+!,hqIeAE3029d)*`XCmS8
+
+X4aDbN!$R"+lN9S(Ibkmb#iECS-cbJb3EK%R3+k1hC9"%D4QPJbJSb[PS&)4"2aJ
+
+%q6b*LZ!b@PaPqE!)TY%dbaFA"p2`-JS1j@[3ZcLBjA&D"Vd[Sb6*RJ9[JR!DP*0
+
+)Tc`+[Tf%C6!)8e31Xf#8jF%LQlqfEEp1SV#)JLJG8PdHj0%dc#q,i#SZ*`'k4Y0
+
+CZ3L51)f1E-m,B*I0$Y$ci1$66i22Xl6-X`3paMcj)%YrM2)L,1-X26J!i0a0B'1
+
+dbq`b5Z1ISQ!FP3)i4T*k5`3U0Gr1UHY"Q)E*!Nh2AChKaJd`raL&3`)P",Lc2*U
+
+&k#)3aHPXAM)f&S*crLZX&#`)G2!K(#Ca84l%)q(#,$MR`Pif,c'%pVdid-pf(SH
+
+5cNGG"4U-E5NJf'VcD6Jl!KPlA%h)"Uq$``[Y8EIQiR2jKqB91PaNdF(r#kV'[ZK
+
+(q5`BaAQ"-QRb,$J-,Q`[0eKrAPCphJpa"*!!(J9rr[62EK+(23U#3fb1Ka(YR09
+
+X&[,VC5!-YEX4c2ImdeE(`6!DK,1i$"2,01V86A@Xe8XZ5FXPPk)IjQ&L@F!p$Sq
+
+#Icd)JU!AMk+%pUN1B"(LD[-c%pf#jHLKU$Pb-3`A"i0*0,M%hX[b'![D0pX`SCf
+
+R)@LCKfQ4K'98Mf&SFNfL28-!NjPq4(q5l#V+"k3[UZ%E,1bF$D#b!2`fYTAM@Ck
+
+C0@HV+NKXTej4CM0Kl*+1[AD"I!5*BjI4aj!!BG+BZH`'qK[dNI%930[I`I1aSrT
+
+b51D%VP46G((E,PQhFc,!NRC&P65kDPKLHT%J8hkfHiTDpVJE&Jepe8&*hNfbV$$
+
+#L63TkbR)U@5"+XELATUTc+h&l!dRddbk#2YU0L`*TpA56l%fVD5+4U62PU[55lE
+
+dCMCTm'%`AEh5`GC+pfDCE9X!Pc3MV9F1*XhSMMk#dRS)ZccG&Ue)-f3+k9KY#lI
+
+4T3PAY5X@+PTDYY",VePAT'Y+HYZ*0qfGG0*fY+R3)ZKG,a#(RGd2GTX,VA@'QL9
+
+5SX2VM"8p9Z*0Hm!G8-iC*2))0NC4j[1"BB4$T-9k@5LMbMF[RDU*T01"QML1*JC
+
+q5p@kUDhffp-5TY*JZQ)8kX0c49"4DVG-*GL@(DVa(FbQh)SphkpDU,q-iF&fYNC
+
+P0b4KicBmFf)i(!jRma4MD@p-jlZj6mk"Q*!!P'RF"`Z!RFCi0S0*Q2Z0)e9QGU@
+
+Xke6,QUDAeLrjBZ'5EKkd#J!V+[jEKhr%JmeRXeU0Ec5j,rTiTp4[eeBYpPJGT1%
+
+8Hq*H9'%DjTK"8VSilIj",'NVeEkB9bNNSZGZp(0UjK[8!kl%MNc'C1CQ5h99ql*
+
+-Zmhb$XkPK@@6UPlV0U"mP)6MS$F[)QQ&G8H)jP'4jA#Jl+$FKZKKHYUCA$[9)BU
+
+8Vj-TA)&!ZqVMBIE0cC`@SSV!aTVf3pa))Ke-4kJ*j-DZk!)liZXm'XB$q"l`8f"
+
+Qcm+bM2+dB$Mk84*()l8pc!CN*563e+D)0,03MX*TR"Mrp+'h021BC)0S1!IBM!P
+
+N"2XP-'PJQ45$2*k*fBa#8Gkb843l,*!!U*JRTASP4SYR-piiibJY&P1cME`2%Ac
+
+Nc2,VBV'cl)4QR)rV3@bCJm",)9V-[`-!&3paJa6ArKp3i0i`,--$h4d#`&%k*pd
+
+B[2V%e2P0e1Ya3S+)AB#`5%A-db(5#L@C@NK!"+0jNLb1X()e'6(1JLb&JqhY@rh
+
+e1&Sac-#fNVi8mr%i!TKJMd3XZTCralA"+)S5,-8m5mI*)JMlj-)1if)`,pKT+qC
+
+31ka8LpH3!(,YaXIfJ9!i8))FBTA@rZMa*ffP#UTK$1hJ5Ur#4@9E(LmVY@[[m88
+
+`2[X$PRG6MKS8Iik%#1&*@&d''59ALPNdL%Ia))MHKY0C%Vd'PEkG41Q'$iC%F6U
+
+)KpJ433K+fS')#YPSeaMT$M$e@5#)b*JdbSLD&d%D)B356%+)hM3D-Sd-K&12Zb-
+
+,UVa2LS,F'&jFDrPJ-ASXbBpJI2`UB*SFHjUJ)pFCaV2Dq&%Dd`!Lm"QeE*l)kVN
+
++`3#@-ECm"Ah[RkK4A%b`ZDkiFiRJ$lG[4ZY@PK"%ZXB3e4(B#lV`k&'&b55$reX
+
+M5@6rGV+J#"'e+m)&94i5IT3V5Tq@e4kPGAK8-3l$V5P(CCCA)DNP9&$9ili`E!"
+
+@RA`#G[RD*iCf*mIVaD!%IH2SHA)#@iq'SQr2630ArX*K6B$``$eb"([R&5ERr3[
+
+k$eLEEXG-$4#,YR6Kek&[[@1c&36c!PBGT!!C"YL%d&dI@[)5N!!CDrBZm3(k6&f
+
+cYU$"dDiS)bb"0,LD4$5$j-CNK!!5&[TS-lYE9L$)#(fa2l#)-"#YJ$[3[Sjbl1+
+
+LRK2MFqCXK,dA&R&8V'@@JE[)TP%C6ePX%E[m)-Z0*EL$k9h9#eV*X8"SDES)T[&
+
+i)R,rI[P@q,1f`KCP[B%*Q)-d`(eh+e$@$8'5$2U[McA!$DTGlRGTFERCT96Q0!T
+
+V!C63cR[jNRBH96bL'P*9A%DUKIBNIF0qTrq[2R&mSB'iGmdLU8,VVJT$B-UfkK@
+
+fUGMm$X-q)N@`MYBifY*DIlS9EHY44'*HY6GR8b!)k8q4lF3Q,42D8f'k#$*HHp+
+
+Z`0k&Yd$@CTa#+qkE'kN[EH(M4JKECT!!ZV-Na$E$A1)[Nj1h(i1h3$1qV"pCj[h
+
+EcY"q6h9T3#J-J,I%'hAU8Cj0SHSJL@A99k,Ak%rj-#+Y1hFH3Mp##'*EQ3Y5DRQ
+
+eeC3Vl8M-C@iC5IV8#Uj6AMa89+[S8pe"Cfi(m4cFMf@[`I!00jI9q%c9*m00-U"
+
+EZbbC59X,al(K`cjF1(cD5f8R@&KUmGERMErZcbUQL",Hd`edSTY&BSQXiS%FISM
+
+A`D#JH'm'dQ+RL$""2Ej0+A4l+`#GAG$Jm8k!8@HKM1P[5&#,+-([$-XE96"6QJ@
+
+1DLb-fLj"b91iR+C"P*IBL,3`Z[AJLR9*,#K@CFXRF6+%S0cYR'`+DjC@NThXe)e
+
+QLb[pF2c5i@SES%VX'91#d(1@`hVHQAHk[+d*-S9K4G$Er[GGf5RdUR-D!ZB8#%e
+
+#E$31C8RQQK8aX!+MTlF$LBjaicJ-LEL6#,'I@C5arIB1%l%H,4K%!1M`"`SX`@b
+
+QU'5(`q@HVFjZ0"9ZJQ(B""KT+p!kVHXhL`+93kkjlddGYYfMH9R!KZhfPbfYGmb
+
+Th6'f(N@N8Cp1i9jJXe!k(rCS#+H8PYmA-(rKi96L(KjY-pA,%cF9eD+!*L,IKUb
+
+mF'&p6eJkL%XP)ERXaU@,0[4IqGBai%Ff(K$raF+Ze#XdD"S0L&M&,b0,$`54-NK
+
+i9G)10M)N0dY8fX28eI-#1M9T[fUL6H[2a54PD8d1!BJ(`84ZNTr%1%L@DcKTd'i
+
+1eNbZ!8DTE16RE@(&BHF+Dr&B9'&03LPGmXpU25R24NK4E)-&2!lbA@`RN!$T(F+
+
+E8hq0Qfr9L4F54Pel1#BKJT2NZl'p`#*P,3VqUPX-P1c,XhR*5TMT18SLT)()[L#
+
++JP#!IUNj'4+BPSjd,eDPM3&QbUc&3%BBrVjU#%Q0U936"AFLQP$mN[5DaG&BPcB
+
+)H!Aa+[AXli9A-)8rM'*Jd"Rk%9*%k+SX0%4BB3CIT1P3Yi#SDKBB&5dlh#``*mM
+
+iFc[CDM8+)XXH0cae#NIlZZQLBKDQ@E,@A,E8p"D0jAZ$MSYq4RV1GMrTLV8r9f3
+
+TXSPe$e6Xqh1Yfc#2`R-X@$X)l`1C-Fhd,mh(rZUC@cPZ&&6CTI-X1!pThAq$6"*
+
+@%0[#i5Ce*+*QPEY*H5B!JLXRC6bB3p$G+hKFLU'NQXhSl$U4G8CZSXrM)10$%%V
+
+3"ikVL)jEV(MB+3)MF1b,5`BCNS,3mK13!$9e1`+K`$j*k1(9`3PcFQeV)r!1LmD
+
+j`"Gb9*&(C(6Cb,KY$rNq*p"i5ZS,rN#`jGL$e"`1B9NQm1cF8K'riFCLi"6BeRB
+
+GBEm13LMHEK@kfYdZK2q6C1[@@PMl&QGf0@Ne5P$l*@`rTFS`1`Sd$BGm$bj19&U
+
+[3TZX`[A89&ElqFrGc&5,JLCIT)[#'Hirc#',5@bBp-TlI`,NJ&Y#NkMN0elRCCT
+
+GEGVq%@cQf*fC&)iXI4C(0Ym(!p4'5`[)2I@*X9#*+Q`4CJA@5@HChBj#535!cVe
+
+NE-VSb,UR4!A4BG2GUNPdJ6aX`65DmLq098T)K-&cHeld+GZeA@AaQ[FSUR8LC[5
+
+PM9Cra'++DCT'd)41Y$mrk6#6TTcM#Kja*qjI`!bFTa6k`bU*%&%U#U*#2,J8(IE
+
+mqDqcb"34`--)i`56)59"eU4-mQ)rb49F%fi"mmq!Dj,*GH,KqGPq"L"KHci1BTR
+
+(jRMUr0Vc9rXTK&6Xc*-[$&9CmHS2qlkLT'bR&jc!XlP99pF&m!aqQ["Li&l!Xh4
+
+0hHl(%J#lM4I@j"*P!CTii[JZ9m@kSBT%Z$c90qSd0L2!dPVV9C[1SQk5([ejE!X
+
+D6Lfa!Y6j2)#%!URA5SEX3LH0[$3YI9E$KF%U!T&dXKBcM6dKlqmK$'VF1"XI)2`
+
+N6"JM6mS*!LB#+2!qNLV$8jBk,TmLGiZ'V)#@BGB1!f0MQ2`8QpV6F#L-pEQi1SV
+
+G`%mT-0+Ul!qmBH#`VaRDpl"pL6A0'J[4m,#N--Iek&[5Zk#R%[ll136T4PPf%(2
+
+!K,PCc)F)2GmjMUa+aH"Q2l$@NEaPqUjj3`YS$qL3!+D'C,h5ATH,X,r)D,Dr4B6
+
+$)'2Mm3lNfa9L&p@m,a0X%B&kUG+"A%-''#*m@2SQepIX,4(rNTM5J&kRBCRr#E,
+
+dXJ6%c)CNhY1Uc@4MI"cKQ-+*DPD'E45PhfF8'h!lIJNZ1IVH-5'E`35pI#l@Dqd
+
+51C[18+KM@Z+0+a-`d3F+hLA#DVK)d(RRAlXlP-5*-H820*)JmQEUbX,"YB-jP@X
+
+`XB+$)Y4rSKJl1-ij1!N8XB9"NT-1)G"*"KfBBa#L44q`%HEU$,IG[L,MhZ3aQQj
+
+J"jX`(@`NA3eIQb`cTAY0r`La+!R-h2,A8-J+5+-E6F+82*'k`HdXfU+eF5VF5$(
+
+bF$"PEIM2+C8%l)1Pb@R%VGYN4R8$X*[-S4TMkZk#Z,drB56Sa"rQ-8BdGKli9KQ
+
+*-56PfP#LXU@P""qfVUpp*44laq2BmB!kSF!Nr4[CF4'mUF#!1AZGNk!UIlX!Rh'
+
+dB!+AL)m@X29$0@Cfjl*5BkUh*`C3F0lA#$!,Q(0-%)mmDDQM&fqLfPKY8bD9G4b
+
+@edUfk)8!AlV9Xef@cmN'#m,'LrBZG1m*S#b#*cL6-$i$XGMSGI%ekX4eeT8"p#i
+
+$hqH6+lT-8DQD"&fTp2U845FA+$$4MSX0[Fc'm1dK4%NfD0VDRE1q[l95ReUKG!K
+
+EEmMQ!!KD,#6'iH4a'`lfNDG'rpe1NK'iNQqeY'@JcK*,69aZXT@fGTqXY+R2ZrE
+
+hb8aN1L$j1KTTS6E@G)I[LpU9,fb,N3&VUUHXRHVkM3@0bZNblVRU64eZZYm&0DM
+
+VG5KS05d*`+Ui9L)jHEVKZ6NcpCM@j+PaL(0heH38Lji@`kR,,0-Xh'Zpp94edP5
+
+d3LRK`RI%R#"P3-rl0mGNF'U%NdHX",Lc65!di31E0H+aU'N,%#N8'DJe%Ua@P-l
+
+ldcE1+c!jb2UJ!U#))DAKfX$U-4'*p4cL+-A6'3iqU5-L!)UAj#"S!B4$e@EYU)k
+
+[9&N5@jiH1fR$hBr*$IJLc'%TLIYDK(*Qa)a,l&52cCAFNd!56iB"biJi*h(BYG`
+
+TYZQ#EK*d1iV+E"HqUZ89c@P6@%H&h"N1+8C&G9#VZ5a$,EDC,MM'R(RA5bS56H(
+
+lj"*8X,Z04rLA6dfL"RPG'!Ac1Q#e&A*H`Z'U,'e6Z[Y$rcf%k-&eEpmZ&Mrp"+&
+
+#H[`YN!"%pM4cZd(k%0$@M3hTmLe9(SVe+qCA'Se"XKrA)4ZESa-2%IIGbA28IV+
+
+f1I4RGLD0eN9J09MBD4&6Z8mhFKKaflR+09ih9[QfCTNYVCH%bhIBHK5Tj538CeG
+
+,$##p"@%i3!&[A1#8)[!U[6f'!Vr+*TG&%-&9L)@!PR!m,BcXAEE3Zk!5$I2!5lk
+
+Y8XHV8Qm!2HUciKHjIb%lqY'!Dd`lr8p'!#Rr,SY8C@M3AK+QeqhE@GPaHYN&NX`
+
+i91l1%eMd!!'`JpN#qdP8bB"i@)81b)TaeAXZHZ-'hI6+#CqhJ8@,S@l[fEJFTZJ
+
+G!r,G%4l[!GH@9D9)2FDdZ9AR%ML%BSZa#PT6r62'(PQ,YK$R(CaVD%M5DlE&D*Y
+
+RFVf1mV*BDl8pHS1,LqrCUdCQkYTEe[Z#riE[8pchPZ!UlXqQBiVr8PUPrcfb5Hr
+
+)c)YGe-dm"DjN5E55fX*[G,8QaC4BTTahPM002@R)CUKdYTjKXI(j28"r(j&M5P&
+
+I((R-'Gj+1ZrlVUh'pae0ATQNa4)HZ4!UG`)U)@XjHkXhR0,5!YFG)38qPVcZlQU
+
+Eb+@YFkI`5(V!CAM6eDU!G[VCM89pehXCAY'l@`V@l($CFR-"J9rUd,Jr$pHjR)'
+
+PMT-"k+kMGDFXQ"m5AG@d*&'a'5PR5NB-e1GFE"E*M-Mqp5aBFiFN@(13!-iFGX5
+
+L3,$`J8)H401qQ("rR"q'Kqlc3qr"E'`NbF2`*VYHX'XF)E1@GNA4@N[@1*!!`[9
+
+GdJ,AB2FfV#3F1b0##fXE`Q+Na@1+(UMB%KFLR'9*0XBGBKDpmK(p6Ii0Tf%3(`j
+
+cD*Mp`4866M)-C-hRiYTQ`1dpP-B&BmY21hS8FKaaMh(bZ*)+"C4&F4PZQ'"+G`%
+
+'f4(ES`-8A1iF)LjcdS%qec(Q%h+XAI,CPVfm1Fp*ADVcR(SppF6GbH'*HDikP0X
+
+F+@h5-+[kGEkHkTYNk5mA8GmG86Sd+rE`qRj2G9*08D9,-aB*LEQd9MPIG-@'E'(
+
+BVI$UYQD#JH!$AY*l(YVfIQdV%T5qE!pDQL2DR+@P0Jm-8-69XQjkrXIG!iHIkbk
+
+'S(!IU9j1hrY)ja*+j#qAkJ-*[2hj!DUpATj8TA[Z66A(pRUYe086!SbQ@UIK*+k
+
+Y*&6Amh#GfE0k$i(A%m@ba6-mjL5qqS*e-F9*MThSN@'iAlf#Y+`+A"Vh6$0Br+%
+
++NER$LIE5X2CBLaSjCd1$3)G'*+e@[#6%YJ5S1&2Iik,8p+CMRE+Kcb,Y[,`iii`
+
+0P8S@YjBZCaUf1A0K'jk*ZbjM`LDJm1pAEMP&lqlFMV--q8fFVpdFG2a'",Y2EjU
+
+BKV'b23Xh0fm9Y99)N!#qU"h`ec14[pf@E)R#$QCc4Z"prpV#a2PMXXFN*YrQTc[
+
+)@8lK%r`@C'4YJ!,9I*hD"5[@Gbb[m1L#'l1"EG-ERAap(3iPrMUF*NUkM@8U+k[
+
+Le"dm0H@S%GHDmUZ5'D&`,Dp[d"Phl$N)Y&dRaS(d@3Xqf%61*`G1`-CKZ,8eGMi
+
+`p6DTE(X3MXbfh46'B*rc3IYTPQE&)N'bQ'#h@@'6%9la%[G!eqcK-N-GI#6bD0,
+
+de-@aZ!XAYXNHlNKrPUh)[l6fYH456*E%q2TbVi'#*&ECG)ZXHNe!*hf)%'YBUDa
+
+H*frU8UG`f*M90$SCLqc)`RQM5MPJ`r+'UNj[h"G)SqCqc!ZfEiaLSJ'SD'IH[(%
+
+*Z"GUh,a`aJh$aBK8#9DYJU4UX`"DD(fHj3AeqXEh4RHJ(A`EIh'T0M$HGhphiII
+
+Z-[$U),NpCVLp`kiS'k(5QV91m'e!SYeMB,PZqI24XafVUTRG3`SqB,'kpf"ipR0
+
+I%rL'J)E4lCSGk496[G"*8-'!Zf8k-FlF0,LCINNkYVMd3,jrB!06Kam@`J[pUiP
+
+$Ic-qRaQ(U0981Qld46qkC+QrHePC!#$kh4Ba!SN[5qPP-Jp#HmlKl[5B#6"C,eT
+
+cE!d41S0-cb0X"3PA0TVNUEdHDHUp--%p"4F9FB,@G%+0ZAJJ5X8F@L#j880549J
+
+U3&"A`c&G0-81#m4aRERXBQr5"KAYH`MiNRT1mBD-EMkKqehLSST+m%$CeHfGQBV
+
+QFPNCep@XKMDE$*QNq`(-G[Di0(cT3Vk5r+ARF5!lUbrVi#Hd)![2$hLKErcS$Rk
+
+ALRQfLjlZ12S4pk2-0e!@"p6dBarMJb+)Dp+V2IKe,T!!mZBj2Vc+q40QXQq4NGG
+
+Ue%qMS8kQh,pMKh[3B1je2Vk4BL![DcPmG1lJkjkQ9I9r6F(li%R`@I#GIk'@6Y-
+
+-iF(Bi0Fm(3LGh8YfE$rKPRm6%0V8Epka6l14bG`M8X+FY3Q'40jQK(LE2'TP"G9
+
+"%C9(TJVh-'(#Q+r,Cpa3bd-cEcl(q5PjH)Pr6ShVC0pqdXbN,c$"8YLr-NcHF%*
+
+V3pm(dY&&*Mr[HMD2mE(dZ%'fHLmBG9qrikFL#0jGKYHEkH[5r),6[PdeVcaj3Xl
+
+bj@I9!2U)U+V%IT4&@5mQfj[(kmPV%6*SP"kK&FX#mZq0DIY9EpbT+eG[8!+4T3d
+
+[+2qSQhS603dViX5TpYFerlX#%f,,II%f(*53!0#NIRJ018(bk2qYB#*)L8L@N!#
+
+LV@G3DSkkVHZHf2EcHVC)rA18ipiF&0ie8Uql8I'`Y"[ieL0EbE%"p,EM1iKTfcc
+
+!kdK$P[Ck)2H@YKd-+iT`-PB%TQJ@r[EihA#2mB)Ir--*"2+Ah9MSAKIGN!$U2B&
+
+fC+RH1%66L)pGYE$`+!EGEL#%',aldUfjjU#mRRZec#UDR1KcfNL6G+f[S6Q4QQX
+
+#Q!G(h3([S$8dr`SEF-rb*kEa%fkXc$GS50&j1IS0I1Tl[fZ#Mj!!rKSKkSDrF"M
+
+Tl54i1*!!KHDlG`[SZaCSG28P[p(kG`08bkpE5J$EkTGrB2MNk@5N0S-a$[$0($X
+
+qkbD[P0*R2*Yr,jm8'(CmjJ$pP5[rY30jm2rFJGV`IhDJ4pU`kBmcHHqF#AcV'k6
+
+d+AE#"1GIYH+peP00EHF,N8mMlNMGkBGj4TGe1M@LPHF-U!G"!,DDL$rE+F@23AC
+
+9ZMVUr#qBeiak!,AMS'(F0mEKDXLQ$e!kIfYY0-jQ'Ib`kHSAA&Rl44`Mp64X1rC
+
+JkVA(&AJ2)Lf[E6Y6M"h(VlRcYLB-k1[YAcpHM*ZX983hIVe1jF96ram!N!-0"QC
+
+[FQeKG!#3'GQZ!*!3)k-!!%-"!*!$KJ#3"&4&@&4+9M!a!!#XF)QfV(#*YJ#3"JV
+
+b!*!'!kN!!%8Q!*!'B28,SJ"2N!!"6#LCV-I@VPXMalc)i@Q%N@0N`)kJ!dp@mJ"
+
+8A91bQXB!2LTEb9(##2V4#TajH'r0khYbl-L)%844`RbmDJ1m0l!bGUXmP#YVYP"
+
+k8jKHGeDV1Tl3mmifAY1adclIiQXkEEV'[leAeK@Y-IfS9#f5$,iY@q03Mq6j$E9
+
+e9aF&QT%BYQUMiDaAGhUYQlZeKqYV[['QhbS,mY`fRAC`p9kHpFU(m`rm[QYU[iE
+
+V+hjH0@hVe5h)HfINBMiL@lGTHVMNGpHVCG2GTAH[V0FeSUM@kB`94-km(H5QYdd
+
+AK!5XkB*9)32L0Z8%mkI[YB@U@8&[c9)l"jhqlRI'BRJFZVeJaCXEq&cAS)"18Gq
+
+[0CM"pi-(0%#I!hN6I&#)X!2L4Da1"bTPpd3YN!"P`#M`['fFlq-c9-a$4Ll#G@H
+
+`(-4dp!-Ik'j5"VbP'6SrZjc4Gf5B`LGmS0K9L"*8&S@UDq+,d!)C)b4a1'S`ZYl
+
+fISrZa1bNb$0`pQ#4#`(D`"FY*BemqkbF[4ZpB1-+UhXGfT&VC9BfADe4V8*6N!$
+
+R!4i@"@S&E8`8S8mQQA"kF6R&U&!F,K,cY-"m%L"e6FNPFm!r)0%pYP`CHNCE,0L
+
+PDV&KY*@S('0#V9'3!%@VaMVf3RSTUQ)aD%cIb2B*jYK"k0YN`TJc2N8,hr(6G!(
+
+9R1,2'P&@8L*S14eX3hK,3CRF$MiE%a)bSZ*E4,X3R1PBIeqeTp),rBKE)@3m#*a
+
+$@"VrHNp+pDPCT*HjP&$&UU9r'k45!8V"9lH)ZT'UBHP!IbT6J5)j+HN+dj!!XrT
+
+E3eb+5Ym'eID5BGBlHhMc!$m+!-cGd%'+8V`2Kr"ScpR*VP!j8LLXHB)IHqJ3"QN
+
+GUph3HND+Mp'Kf,C-p%am0)Q"5iB4hXcae'c(HI)c(L33HZDJ`Lpd1mP#@$1*088
+
+Se`fkN@el&F#03qaL`[0K9$dDmHM$3INe!511`+-M'4pEp`[p)D"GZGBYPV+,VS3
+
+Tq$5+DIr+(1#PAY%5T[E$GSi$D[3fAFJLNZDJR58MCHaIHX'pMN1N(-IlBIVaq(V
+
+"2-h!--3I8@@R*iMj+%m9r@GR2E26fJYVKj!!Nm-bQmM)12ciEd0Dq$PX5l2GUJl
+
+R8M!!"dehEcDBXGXpED$"i4#8GS"bEABSYLqL8j*![MT%m2KcSZ5(f3J36*,VMp&
+
+S*dk21frm,B-MMEAq)UB8aEbb4DFI*r&A`%Xrl,A,SXpcl*5LAhpMMNcr!3#3!`d
+
+$CR0YE@&d!*!C8[J!N"!qk!!!6Hi!N!1'!*!%9%9B9%T@-$%!!+eZ3VZYEN+l!*!
+
+'*[3!N!B+I3!!fk!!N!Ebe`fLB#A)!##860EE4rK+f0ThqeHfM4,+kDEY-h*XNdh
+
+BEc*C#5@2c`$@P)[2Dq-rCQl#b#ES4bY3hk4[e"APY1YS9rCNY-PiNp[N0pQ88,c
+
+kqDe2Rcj9cj)XUE4k@8AiHKl&Xb66kZZXdX@Ld2K5h@F[RrFkR5TAPp&FUq(9,)P
+
+RR@Nj9a@`,Y99ANc8`4c)GPCR%mBMM#%0JP)R6R9892TYe5Pe&5q,-Lr8k*%kZZL
+
+NH4bPmqLe9JGP"3c&A`YkFHJ"BjkrdD@LVcZ)+)leSP,bfD*!Ni%D-X0D*mc-G+%
+
+lb95RT9Cc24pM!@4)$3fINAaIU&'K[p&aG5&XZ[M+)+a"+h3dL@G4dD[jKIPKNLf
+
+@9@HF4YPVm29FH8jedk5X&"&3Jb2crDLRrYC45Sd@4C*9kRZ4$YkTdl1cmcqpHJH
+
+Km2MLr!rRChJN!LTI9N45&Z#L8ed[R#"a9''&$h44d'BDS$5#'0-NQkJ49+`dAQX
+
+9eFN&9SX@mU*M%,mBe,T[%4R1JN8JeY9r@8DTP6%#rDXU5P)"kURZDMm%J0H*!B3
+
+YM1bh5EP)SfYP0TeFT0+XJfa'Cf)!M$diQ@5CrEKjYq1bU'lk(Df48ZrF[*dFXVN
+
+&&mV6b5)[PAKGlAU$afTJGfrPL%-"pD*'9D5LF9N989`PHDDQ!$%+PdarCjCQZDC
+
+*3FYRTkaH@qGXm-E6,H6H5'Z$f(,%![6Y)SVC'*q`2QAaaHjZ)-*UllH!M8"f)*J
+
+'2kdf3'DFQ0j!GQ$MCI8GkJc@[N)9r9XX9Tp(X0qXLY!Pq*AZkh'[ZBeL%eh'4E)
+
+Jf8[@[CTTGER8C8RKLb*CTf1#%4!(F"Fe`[r6Vq!a#!$i#11(I[a-(@,mN!"IGNK
+
+($XRJI)@STNC(M(G%H2J)H-FYhX$J$G5C1KDHB%RiT)XD(@0ZarVa9TmE(CqXeB(
+
+FmN$LL%`mF-3$'l9qdDb*b'6aGh4rZ4'AB,bU8)R`0lLrZU0jbM+*ZLcAR[EJd6h
+
+[HLY&0Jjic4m6Nc@`4'8GMmhF-HBHZhAF%AJ-S#F!H'bT2q(9I!+G9NJd3XEe9,h
+
+3PmX8XIAm,4S%f"6m'UD)&N'p+U+X6#1fm1lcdl2IIrh(FkN@A&BSp+9qZkKM&%9
+
+RcR,UN6A2((Bi6rj+jSL'BNl!@ClKdH&E&hh'APj@HM&N@eD43V`UNh&kE5!C(ek
+
+Fa&B%&Q6&"cQGXbU9(BLL-S9`DV*VR#q4bmfB'[4FIXiQUDkS46'c&m5N)4'JB1k
+
+&RLaM+N)d'TJ-,c@Z)@[bLB%r#'QG+IJ%m`RkC`&j(QAA*XeBA$FEjaRDJFebRDD
+
+,@66'PK6,e'b0NeZqkcfH&[PFCIT+FRNB*&`lCLLhqC'4*6"ekfc&FiBT3P6H`d+
+
+D@*Al)(A'iZP-E#G)C9@&T%9TQEX&V&#eA"*Il)Ne!dEb[Bl"X1NA(C*j1A3TVa'
+
+bZmhUJpl@G1Q[k`bJZmRVhf,@k)Xd!IBZY`H42Y2B8$rXhHR&Za#TlTlc!p2GBRa
+
+5Cdm8mUbh-l*YJQhp$Zh!B91qV@DG-ASMGM3-K20(amIl)Jb*r)E+M'!ie1q)f66
+
+aKU`2)ZkYd6BpYckdD6a4LdD,2UT"mpiXKl1ieT5'9S!()l,80UC32[L)4Fk,[M%
+
+Q"reqbdh$QH@9d[-&QM,63GTe$BCamXR'2[[(5@qAIHrrrU(mD-VZi"EFq!5UdSq
+
+S$XCEfACaI&"#J!4$lT&120N,k-[p@*p#8Yr@D`,ZXp%,[G"9XJj'(!9h5GaDaLS
+
+Erb[V[&r8qk6c16I)9Zbc31q""@rRAUCE1RjTIUFcA9!I)@dPTp!)X6Y$ICj2e59
+
+X2j2f'EjYYlQR*NX5#kNJZb3@91-&![6XVKr!$86+(1F@ETqF%(e#rh1T*p`'5SL
+
+Ydbf9,@B[ULZ8m(Nae`AUMT*fLf8cj[@8L#`YND+e!Q*a)$31S+k9!90*9HTdfTH
+
+-C9c*aSqG2C(cMq*mFGf[mVl&`GR!ChqbVHX0KQpY+@bTN5NiYZXFbQ'`hTEIPZT
+
+DSZC1SE&CRL3b9RE(`5'%mVHT0-+F@B"34*2aV&VQZJlQmJS-M8&N5iT#PVBNah9
+
+KKMKJRRiqF'R9c6KZ,c9FC'*DXPI,)YY@Bp6HiI3%'qNk0aR-X8)FHFYFk45Y(*`
+
+)RSDXKfiS1e$GCBD$'*baM&-iUlLLH)I[l[jlj92HA#Hd0d@Nb+Jj02SQ6c*bP%V
+
+hZ6&UTl&3`MqEp(&cm%BA-,'E4,2[Ufib"Gr[E)1NBhSlEph0jPiN2*&cEcj"+d&
+
+C&acN#(BEM(!M9cLE3FQX$GM0CR6MQBjIpf%E+`F1GQX)f"-KYbfq8h&dE%A3,"a
+
+h(X%5,CV2"di%CNLEc'@R9!CZTP%lL'QD3qr$pQ,'FJPBT%#*5)DPAXPbZlRYrYS
+
+6T`eMHcqeNXjhZ-+E19S9H8AA8UfCEpD6Zj5rbp#XL0!3%F4+V#6$PB@5HU'['GE
+
+)@rRU0'6-aSLb2X2Cm2MI"$*l,GGKDKd8a"p&$RN,f*ZGU,1-Gld2MLp4Xek2`#m
+
+S'3k5S1Up"kdM4122V+2ejp8'YidE`'`[eCT5QmA@G@RM%kiarF%#DXPECIqclVi
+
+@*JXIVU2#*LDBTb3V0I#-&c%+%r$qe*!!-h$$0e'kT2`%+$fTHFU%BfV1&4J1(55
+
+!$25AP[)+d,cA8,pq$bAZe#M4,Q!,fdVRp68DfUlJe5c"ZDp8"@IjI%b"PfiQXNQ
+
+%#aLElfdM%!X#-MSA1HSUU@DUT$0LGLikU5%V'Y*YNcmF`rFA[q%4HT1f`*hmh%E
+
+mj4J-FB3TAk(M3,9&pF1qA133&ehh5q60A@(!HrjG5IJKpSQ,KiciXFHi1hUffK@
+
+k6[88hXdb')mm85FiY%+LZ5hilpYpfmp0NlGLaDMQ82$TZB4hXe@`8G-%r*3`3NQ
+
+a,e,VFXpXRbREF!E,h%dc&Sk![4CKlfLQ(de`PF9i@)EPf!*f2a'T$d8-$ak@Vh8
+
+qX$0VjkBj-@kB"'K)8F&6-1B`Bph8m,!(hBeAYr6IXrVbhkcB#jLCj+-qK5[$3FT
+
+(j[A2qiH!ZqCqcf!PiJBTT!dRrMkTf#88&Ic+E[(pGYHU$r',"8LNe5`[Z4bcfmd
+
+$2Q-4#QrI@*-&-`"`$F8@M(rpS1EPP12*EJe+jfNE0EafJZ'22PU6YaNjak9!Hd%
+
+8)dBP%fR[a)Ulkem)-2A"VLMpDHY(`GYh*$E(S(Fd++lr318K@HdhB(iYP3UE[Lm
+
+[MG2A5089&NqD$9-E5&+Si`jGMJJK""qrA)eK%)e4@H@iNQa#Bk%*H&fJqJ0-HqJ
+
+ZmkBm-60%#MmTB8+I$AYq'dBf(p9LUHfbG11SM+-*k"Qj6R#VGVq92NHKTXmZYA0
+
+UPY"X$$R8b@&2RHc2K$G4-03bh[Yp(la4mB-mcL#rPh&c#2)ME53hhb3(kH@`&&-
+
+59f`[CJaM%mN%ceFd'()T)159N!#fL*bM(X*hl9dF3H[l%pR6ZM#MJXY"IIba"+j
+
+)F-M$k0dXjpT&6UrVm0cmY-'h2iAJ%qAZG`h-rDfIDe+fAi(96c6`5!-9iQ,c8`Y
+
+ET1DA&KTZNZEm(-(q(`#3"!d&E@&dBfKd!*!C@3d!N""$!3!!8D-!N!1'!*!%9%9
+
+B9%T@-$%!!+dj34HY18%B!*!'$Ed!N!B$43!!%aB!N!C"p!ZL!%q3!!&-2A+8X#-
+
+$5Sj*CRK+RXV)-c*MK"dj4NCX*I6)!D`A323!#-1R8B#2H4,d)aMJE0"jkl(e22S
+
+CSGFCB@4%#50$'MP''*P3`Rb!dl2V&)F&8I-cb'ZL)*HdbNSq*b9-C8hRM*4lRiN
+
+!reF,HK)qCde48!'XfLZC9%FC+i!,Z1$LT,CZh*If"&2HU,T4-#T)+5PUd8@YPNl
+
+*MrXC,BNDaPJ0"405XiP#MJ%8D'SREr'KlS)ZCP4ijDKr#'2BJ9fB`2(4aXh+4!I
+
+MLYpj3mS%ahe&2CZY@D-kQIBAR5CR'De1XZcJ!0i6)9Pe#YTNT9M"U*!!@DE$ZN'
+
+95DVfr&5Y9@Ri$8Blmb2[9c39"K4'PY%A*8Y#1ejjbP%cek83)i*$RVN*,5V!L*3
+
+AC#RlZ&MRHDrCTX0SK(MFN!#e4J+6D#m!M!(*MG&X36j4'-@#FlVp0&CH5F*d,)E
+
+1`(6V+AcDSNc&&,64hT493+SP,h3P'9V-&P$&ZdC-HP,aqQJ!C6QQ[R%b@&!Q58-
+
+6V34MF&MPp&h02b[J8,IFQdXb9q85H%9Y9D*[r0Rj9F%Q)%SXA5M@m`JPCE4YAGm
+
+U2qXjN!$k5!8hkde2kV#h1VhG)!E,BH@i![T0m4kaDCX(['eSP'LZ-U0"rX#`LFL
+
+##jF4DRF@r"[IQaXVUMf06iNkdbYPDdZVTk'E8(d2d0H`P&eC'6IUc'aF85,JF3c
+
+kEM#%%0jGk)DXY5Lh[MGP&Q1bEeX@Gj*HHSYQhmjX!k!KhEKBj6,&r*eZ`0Z8lhV
+
+KA44fbIFdl&#ZLLIi4[HZDq!&N9$3#p$2QN[*CL9pfD)j[LqJic9SVGU02-AkfB#
+
+YjE'P,,$VrH8YiM0lXG3A'b"`+RK6YqQBp-lMTM4"EcS[2Kef`+GMdJ*pc-UI$N6
+
+M[c[3#IlY`)kd6p2VZLkA4Np["@#`XcR4+QMA*k'pAkfApl42V@ElZj!!ZG2BkdK
+
+51Qqi5S)"Yj[-%@J(`3)11a&q"jIf(M2bUQedrX(F*ZS"DTp"RlJ2rX+e#TXp-%&
+
+q'FjSTPN#2pedpKEN-IRcLldBZCY'N!$$'dbU2CaiCF[V@Xi2kik6kl1Q(0SrAYZ
+
+Xb,"&p2C6R8U%m"m!N!-0"'eKG'KSG!#3'A8G!*!36Hi!!&XF!*!$KJ#3"&4&@&4
+
++9M!a!!#YJYjDVB,H@`#3"Kc-!*!'#3N!!*KN!*!'ZI%-SQ!Pb!!J+b1EE(bFELD
+
+R0YJH@4RC4mNq1lV2cPkbRf`b`*192-$k!&%"q'VD"XLeDbA(b5ES4bY3M4V8V#L
+
+2(%q#JNdf18j3`-QQK#U`-i"hlpka,p5eA,*DUd8TYNa@KG#L@JV@l"XMYU-4)(l
+
+E',iSCE0Q5fl%YG*50+148H(cRXh#Pq1+E`@EEF9f)A3cUV@X$-Z!EGMiHl6*5"D
+
+X8SE494ha3*EP@li4`m9m2VSr+ZZGZ@IADQB"[p'U8&V`j6SHX,b'+fTfqDVFI#5
+
+UPAA)2i5@aClaDX8+AMEdEF[0FZepFZ21Cjc0&U0''+0h"N6T-a[MSh"%J"63Ak$
+
+S1Q%GVQIfir%0,m%(6K,rh2'bCYQe94%B8FC*2!+RG*3h4YAc8DQ@[(6@8ZA+dQ(
+
+A!VkbNL4LXhMG-3mXRR!b-RF(0Q(r'M('mXbXYETPBk'edLaV4'9X"Z@b@UUU3AV
+
+JmalK&$@I%qlVhi-K*T0j(dEH8'pr1D#-)*k'S!q'#X5RrcR'*Hi29L6GaEBfqmi
+
+06[U3!$TC)8XM0-ZpD`UT)G0P6f@Hd#HprMQ[kh,2aM%4&M[M#5!Qlr,L@8,(),Y
+
+9HS@FN3Lb"l1feTR%Z'ccKC+-BL5S!28'PMB@KV4iT'&6$Ma#&K+04lqlG!EJFjJ
+
+4C%6S+@H&E3N,&KN2%4#M'#D`8[MNZhHUGE9c+q@M9GYkB-jU339LaRh!1C-1HRB
+
+d#I3qAl1PfL'[%T9XHQ6eS+pN3CmJ[Pa!&TMf443,fkV5QDRASU8h8MY$4R%U(0,
+
+*-BS-%l9)*4ji'QBYUqYNZHM8@+%q8pZYUKJb%JUSJLeK4YHH9V*!+@8c5TqK8AD
+
+A+C(XCjDlibN%ZY5L-8RPF'LG[dE(MF$d0IN8pjF*pDYGBaD#S!K(3PZcjXL48PC
+
+L9imLD,Sph*5F`[-"$L4F9SIEa"3D29*p815!dj6+@,03Q,MD%3Y"2!j&$Bk@0ai
+
+I'G*M)%BY)hrh3',b+PEf""DmrPIK1ME#T9T*)eA&5`Ce0rcDHejZkj)DrHafV8$
+
+X&T5)Rkm[1$Te4rKTMdj((Y&Gr`!CVpZ@HJS$G'cDdfNU#Mm`(cVfe2AV&[e3Ra1
+
+E9+kHH$(f9,i2ZV80hEN39F-9ZbI&HMI!$TD2+akp&#mHD39jj@VeXj4r,)#VVr!
+
+G6LKKY[Rp@qcNHU)H$HiMXRGh#aYbC%#`6A#JCdpkY1(dN8$8i$f'N4m&8-!Y5#p
+
+`[Z`q+"CLqh2--VVJ''DSi+(*#@hfb'hBD5Z@Del*"S-KEY0Fj0YIUYU,0%Gd8`Z
+
+kGe[AK`-hUG""%1*,@`,4ePLMbKhe"mFSI!b&cT91Ad1km4")0bJXPffP5HIYBZ*
+
+Jb"+)",d5HN6pe"kNeQJ2@@i[aeqcVa%dpTXARF$4)eeacG0Qq$ZB4-X9G9fN69a
+
+J9pa`0kk@JPHSHpq1SVl!kDSI1HPl#i2[GBPIR[@[+QNiqchA&9q*c8qE`0Y4hLf
+
+1YDL9KXp(JAmF2c%,N92b2r"+X#qiaXPIDK5h,c(ElHFYMQfkqHIkKYch4rVa*p!
+
+["IXc4cHX1LJ82TDIRE+c6pRj"EZik'kr8JZdH-d,@KjUL4D*#8YI3aA$9PTLpjL
+
+2r!,J0,&8R6#"DF2h$4[Ekl%Aj2c#AeQiX9828i)Pj#mG"maTRQf%G,3)cDPbpQP
+
+8`%YXU9TE$",iml(6d6(XeA'(NDQPF(&a%-EcKe[#ABb9'(ia[!M449GX$039qJA
+
+P!mKN&2T'9cF#Jj!!*Eq4T0b[HEQkPG8K5JUPM$JZq&D@qmFSZ9f,LZ965(#+eHS
+
+-Sq-jbYd&$EX*a1lcqC8SjAYfTF8+2hLeXEq@Q%,B9DNkZ-CSJ8c0Vk4!RPk9r*T
+
+G5IaAQM#a0(4J%SmED(e8@1aPZ@8&3QYGbZXeeKJiV*!!+pLe!ka9BjF+U-D3!&I
+
+XR#'X[2XqSeea1Qr(%$Dfr-HNlLa!prGd1EDUT[Z1cLQpEd"Lj&BH%Y+kSi-i'aL
+
+h%SkYk#r%lHQBV*IZ#q'iiQUJH$k28p8Br%Na'1P`!m2dS$"'6cMieAjjPH81K5+
+
+LTr9cD1&eSX!JJ`eLIA,`Jr@`Pmcc'4bU)NM2pM&-,HeCBhC&%4)r[P*`CmLG2TF
+
+#XTIXHqa$b-@DD)I4KD`ifV*F0QMHUYa)iqSD,T(HEXpBUpXYVrEGpZ02f!R,I3r
+
+2m@bQRiF#K&Yj(C8!jSF5qSAA%riS+TGYHBe`STXiApS("bm[-ja@l5TSDE%X+2"
+
+fLX8Rl$5B[Tr4!PJld[-PVUXi9[0QL9k,#jDrB4p"$CCQ(-`9@pJ&E9Ph&Y#Y2j!
+
+!iIi,B$k+L'r4Ir6Ea'5j9SUQ%NXPZ+@P0rNiFm,SY(RqhDi9bme3Npb&QlEE8G!
+
+SJrVRA5$Her5`b(ZJ(`rY)b1hF6br(V&0(#DB@8+KqUAh0CK3N!#%A10aJ%m!aca
+
+(4$F5+V'DJ`TY&&DTirRNJ351`D-42iXNSL`jU,QA8269FNN8%J0b"&r)8Q*1!KX
+
+,b(iaMhPJAk9Ndj-6H0)rLiJFiE911U6)q#GTZ@ZYdklK3ml48c,F9MXh8(CTjXE
+
+(3lL%PGaYfSpCekAL%'%IiM&B2))GJLqQdRhFhJ%lTG0qYG`B[(hS)X2Ke(+jBIN
+
+#VkiUpYf[EajD,DKa$6rkYf10S('rIIq#&cY%1T1&S*daa+r6Bqc)GQL$TEl6kY[
+
+AB%mbT@$j(mrrXTdMkVaa"l9RcKap0rJEME,L2B1&0Re&X!Fc10cJ+GapdI&h,,p
+
+N4aD+hU$jQcGGqr'h,YmMRGD`VVri&R1!Z8Y!FkY!+3[hYVa&"E!H1aC[d*ZQFhE
+
+5Da#[k6N,G4pU5UT[C1i`Y6)('$U9`d-Q*X4-Sf6MqC0l#d6Jf2"2K[6ZZ"qSH0#
+
+26p[qedZ913$)$!b2HT5XjGb!@H-@JpbG3Hd9bdr[fQMMrAlR-3,#)lP`&BXZYGc
+
+@)p9cDqhk,pNabe*9c@"(f*6BZ8qG-dQ0YNGV0#Sd,YqZ8E'FLPPCNE1b@A8%r$k
+
+qYV[5b%TY*@,$PT+'YV)ZafbRRQdk%6H$L"rN2BRbCTi$e$ZbhkLBEj`3r`F!N!3
+
+0"@eeE(4TG!#3'3R+!*!38D-!!&c4!*!$KJ#3"&4&@&4+9M!a!!#YQrr3VC[rd!#
+
+3"J+5!*!'!88!!14d!*!'-(P4,)+Cb*d&XVJJpMF4JJ&@rK$#,,ml#(cp@(FSl)F
+
+K3$#pS#pVN!"3'(%MN!$Pbi*Di%E)R3fkT53R0j!!!I+fh32!$1!2B9qQ$a%9!(j
+
+C(bejba)XJ`Yj-+q6L%1bJ$B@,!,Y%JD!"#AfZB1E5HMh11V($14`6L&qIcG2aBS
+
+`#HQq6(m)$-K4Q1BNX!J2"%!cN!!#-1-,a6+3!'X*fQBJ04CaJf&I)Sh-F$9c6Pe
+
+,K#kjFi+SX*3UU8m1T94C3*)$F82H*SPq-*%@PTD&fY6THi6m6G"dZIiXL(,j4SS
+
+jLi!Fijb!%HP*MURK`%hHdYQ6l'0rb)r*f[2pi!)M"2`jj3+'S!(``K`hLVfIL'h
+
+(BfNM1(E45#NeCm@2fm!Sb(+(XJ(fSD``f5f)hIA6kh[UHb8p'lIJ05I)Mhh"N!!
+
+BLa[)'NY)JGL9,Y`2!!d'F'&cBf&X!*!CXN)!N""E(!!!HMB!N!1'!*!%9%9B9%T
+
+@-$%!!+fXk(5YV1Kh!*!'GDm!N!BFp3!!-`m!N!EE-JkLJ"*Ni!NPYa"1El11ERT
+
+G#er)A[QC#eR1K'3KYb&CMZb1,'5`,LZjCFfc$XpGhq2iRXQ[f#*"2eU"QM6T'c6
+
+**RQGbdRiiN9f4cDj,EPpN@0NSGdUX0IlY5bc86QVLQQHp5EiY9G-X[P`PPICITA
+
+RMdIR`cVVjrAFIakd%-[bF6i2'2aG3-UP!4AMDE&BC[fb@Z6,9HA+meQer,S5kP5
+
+GcqYm1*E[JceJqFplaGQmV2-XVqZbhKX0Pk2cE*mrC[fU,XrUi@b`0be(`qPXq$L
+
+h8N&Vf6V8BVl-*N@0cTbZP[*"LMhhrR@[4Y0bS6-cf-[Rilfp6cr0rYqd2"e1-ql
+
+ahKjQ5rZp*bfCVfCeIVE)(YcAJPNq@a5rc,-(aj!$Ha@kL&&jq["TYRpDc)IeejL
+
+U,kICrDar@TE6I)JT'`bbNi&$qZcc!$A2[h`1&C!!T[PLF3F95CdYkqHNBUZQ,rK
+
+r(U(1AN$G#dM$mCL3!2S$"VR[36i+))[9k58)CYah"am$CIfG+2dS8*UYH1k8dJ-
+
+2mZ-!mZ@U*"#XL@N,-bkHH"Mk#"MXQ[`XVc2p(H&QjGM$eIRX&Ga`(Z#Qp(AAfG!
+
+dQUL9`&A6e5)lFChpZ*NS"CN9mfX8fS1'-U@2!&Nc"jbX0phkrp,[,q[9I*40m'0
+
+CP(0UDYBrb6lX6l#eFeU"4kLpGc)B$2DbjUpIPbYdf%(,jeq$BcV+@8#AlpI`VQr
+
+8(KY!'QmV92+ATFUXQeZR$Ii+fZ4aYX!NM*DV1QGjS,TPElCD,%p"`Vi('8-P*+)
+
+bePA3)S6cp1!TQ)SHJRbE$89G&H0"PKQATiG2d4[lq1R65'UDIeAJip%iVjERfA%
+
+X*Dk,e5*Rj42VmRa-Fl%r'8iAH9FTJh&G+j1a+GEed*2IXC*(-qXICmHT"m8i1a"
+
+)0a8f-YR"2,qBFSNV2S3m)b+(Hp9U!E(Sq8C5Sh+FSl&PGP(@D1'IHAbCl*i$D!E
+
+#VBr-,a)JMrDd)bGZq)lfL!,%h&I&FV!h`G!1S9eT8qJfN`NCS*R6iV6'FZfBerQ
+
+6[)EFA*iAmc0I*l[&lj'6f"p5QMc("m1k(RkGp8ap(Kp5$m!IY-k1@291kKad&H#
+
+M%fapb0CL#5A5+l+HBb)M6)+Bf[U%V!(mU)BefRS%a%j+baM,6jS28Y+pC[Fmc)k
+
+KT@NmC,,h5I&4AmjB5PI3Rr6ePhP08b!I$VXeEhml(Ncq6c4N6KE,iHKaiZ(lHTJ
+
+@`fNjrRSj2-[1m[RLkjR-[V,jBM@VXJ0C02YC6j%1$rH@pGHd1fL8"0"Uh4)jcFq
+
++qGiTL3JUKEq"fAIcVhX$2B(5-F0#YSA5T8dXjBHBlQ8*$dD)-Q*X8MdYiAXdZq%
+
+!6J9'S3kl$VKT`0$&`%*C,i`b)GAjmJQNFQ+@30h3TQ&E6h#$'GTP3%fhX*Ac*l+
+
++)VHQArYI#$rdL*!!$jeXqkGKA3a2iIL-mp&d@!p*4Ljik(6ebHKRII("5$F`)9K
+
+&f*5b%D48"*bU1QHFp8cAJIiLVjrNBeK-8UTM#TjRd!Q98`ip4a+Qc`@Yi8H!&,j
+
+"lePrE%Ni(PlS-BP'3$S+29hc&FC&e+!f%d5G'-fK"l,mba8fYE3!-maUSar!Z),
+
+lJbR"cp&j$L@X(E2ZQ#M6DGP1$NCNQLqAH9eP`m@S+05jXf%T9mYUCCqY@HXj8a4
+
+ddiLllYJJ3ifGj3XEB"ZSrP-[p+Nm6!eA"+J"S24E1GP-66X#eK,4TSc6%ikZ4Ic
+
+CfL0GR`iA%&fU4,Q#3B,S20*U3V*LdPq#pMQ%'"Aq+XY)"[82PZGeH@'ZkF%LKhd
+
+a(d'dbMLINNjGX+SSjL1XS3@N4@rYYk3rCBT1#0G$b+68DkNr1-RZD6-qdKVG[YC
+
+jPE@NV0!&E5YrmjY"Gj!!VJ3Th[r!EB@i-,`qC4MfGff&+6#CBEV"T%)F-@pY0hL
+
+Nj2@6@d2+VCQVbl(LUB*DJU%hl3d8fBp!Ybl!([,QP0DJE!Xa)-ehBXIH@A%U)@k
+
+k!+,jT*KM[FYkCN+HZUU,AL@qLY%23N8UfqhKq&Qj!E,&-X!D5(k-@6UHT*8d9N(
+
+3fqT%(0S#Y-+!JD@LmS5iZ&RKZ4-S954`RT-8m-@fVHTm[%)hb@V#Kf8f'eENZk*
+
+$M`DmL"A1*12I3mN$%YiFHE21He`,b#Mk5@YaYiLPS[r+VeG+1'K93"dN#*&VMQl
+
+IIBQ)[YQ1%4P@Sj0)[$@d$0%)'D!MQ%b"42#%hE54U"S(drUESq"[hTU8c6+iPk`
+
+Z%IHA5`0Qeq@b-GDq2Bf"b0AH3(cQ@R*4LbZK%@I83RF69")1MVDI)TjP*!p-IY0
+
+3"pj"39*P*`ZSjV)A%e(&M-k'8![3Q!CXLE3)b5H"S-#'#&C*jlCB@HX01B[bfb'
+
+imRI82pV`GDk5Sk[QeSl#pcelEi8e&HI95aIH-AGQ&2NrNqR`c&`$r@bqI2"dfhS
+
+N&V!NAVP3U$BA+ZXjTPl9S&Gq%ISYab'&)$H*4P+#aZ9p!ESckSk5&$-'mTA8r%D
+
+VpSb*YHUG+MdJE4LP+EN!MN)8GRGr9h,fbe@qfZJ!j@d8S@"jZE$!9qaSb8((rX0
+
+bL!J!KLTML8SMk[hR(P"SV2D`Y!5PQrB0PKpm9q''hp0)+d`k)XZ*,A!5"l1+I42
+
+a0P6fFU#2IX8U,)eqK4qajZ+FmhZ9r)k9G9lP3k`c,'AqN!"3Dm3K#*9rVbZRk)[
+
+8iSY8rkIek`dG,Zc6r'!`XY9m@8bGLa0di"Q-8&iqMS+P%lRXGM%U[p&`rJ'--*i
+
+R0hLd))-i%f(Q6B%q4F"''%hN'lAp,CDh(LTm3Kj%JDVKBS'`NYXVIqd(f'DH0S$
+
+0p@A)JGH44UF#X"JT02Hf0QLI&I1#Z#0i#R-,4G1bV#L4!5EdFjNMKC9()@3$DUU
+
+Npp$FAUC5QEP@j9p9Y9Bb2j+cY[6'j3@RK%)j4fQ-eE,dKLeeT@1P-1058DaVQL1
+
+4)QeKc*Ed&+K05Q&&i"HYHiB4hGlMIKi8ib1R@SVa)4F!#*0-AipYdmLFN!!Z`dq
+
+SK9bS@-6$&!@eqM2%H1$B,"CSq$j5S`0i*iB[T'(YSZZYXN8H"T8'j*-adQESB*4
+
+*1%NaJYaBah58TrbLTQc)"SSk0DDePE)R6$6m9fjHX,CB)GM1'C@NjB52cAJl[Ff
+
+NKJh(+eiaQ8GPH8TC#ed(iH!cc+k4VPZ%i*Y96&+MD'Mp0V4qlEMVbP'mZchN9Y`
+
+jYZLEMLQMGFHZCVZG@lFDG'b&LiSaANL3!%XQDCVCGK2"fQmh[He3r'i&rh'10cZ
+
+2Kb,SJZrQihU[1499c#V@[DDJHTPS@[)M9-(UN!$34kq*$TlZ5FP*Q#2j,Vr[QqG
+
+j#2([&E+)S`p0(j-LDY3TiXE3Kc!Q19*$+V6KGlp*05j@8bJbVRbJM(YChmF2$hb
+
+q3m!1,EFKmb"&,Y5IFL2+EKq@+G3''8JbL@,b5hAARJHa2@eHU@%Ra8LPL-QTk3+
+
+GBU9mSYr44#EYQmRSj'aHf`ME)H(&Xfk$09PZ1kbl!'[[*+Zif!BSD[f@K-[`VhN
+
+X*m6$kYp5-6QmSB,+l16B#fC2CJh&@CMl`1)2"Y51,$CFX1GY,fP+Pf)!L-3%'fb
+
+c-EdV3Rk)-$0h**Q-9mN'VmiC)*D+D`Fj,KrDV$)d1PNY5#**%*K"1*[2e%pZNKX
+
+"S9G1*YL9ejiqQMq"Q'K-kXA`5Dk9Gbke'H3ES'Yhr#TDkciHm2l$*'L+'-j%Jqq
+
+lpXjGjmD!3iURAiMK+kXSNV9`BmpK8'3ZZF61SdejK8eEGPCZfbRXXEaHYbVNHh$
+
+!`SX-H(fG,l2,,N[m!-k*`,fN(')2aN9Yd)1fl8MTf8bX)p6Ej)EMrpc4IYBEJbI
+
+PXfZbqPV[QQ`V`(IBZ8X-[lleiKDZ6ba!-[$q4e3"k@B(S(Z9mrd[Xr8bdiKVCHZ
+
+%[@[-GU-!CjeD1D29I!q9EIUPLEpF4Z(pQRkH@rP@$e`(CVl38)k,h(L(JV09Ekm
+
+3r'j5G12mCP*LA%eQ1Jedjkh(93#M3bhZT#QqJ[3@-NljGic#MJN+[k(h)CackdN
+
+(SP6ZB40rj42HaPU$+8TA`l2HpfKG#F+5i)qUDD+"lm6%TaYj0DBSC8$M')TMlNk
+
+LL,$RP0U4aKASemB3d`fRJ'jiYB0TGEZ9VIh8,J46bRH[0iQjEK(M80hFK!,4ekq
+
+FQ4*dqT9%$pN,U%4TTKH*Y0S`&d`hD$EdMQPUKLT8+NNZaSf6aSc5m3eXAJHGU0N
+
+AG3P,J1H[56SY8BdKSPY6G)[UYIX2iaYG535fHR0M[MX&TMZ$@B1FV4Rj[T2`'r(
+
+fI2!M[4J2B!TAkk"C6rpMd1cQNkE'pS$QY@j6p(S8`FE9MfT''JLG'C!![!d0i%K
+
+A&dF1pI9r$A8kmF-iE`ED`AJKU(1C2*5TYN+`McdZMAU&X8-6E5ale-hRaTSNKHL
+
+M,d-Vjk2T#[Pik#Q,'#(bZ8)iMbGF3'h0ElDmJ'8f(Y)[@rfEcFq3!$l"fhHR!+3
+
+b((jJ)62`&jF'mH*5b"#jE4+NK(@MQGXERD%p$QY0%PE[*@KkfR4YK[#&'1P,Mm"
+
+,YBJ0+qi+X1+r()iA1FbBm,9BTDa0&K8TcaaQbpq*fZ8dlAE!CUDX!%0!D3MQS1X
+
+H#p9F!*i9(0&"+**NK63G3fTHJ&Gp605Pc'JFll5`DL("HDI4R2TK80I(H9R-CVM
+
+@KIeTT9leJqm4lXdjT[XH5kDl15'e0KNh1X%N!Kp&)RT#62L*ejCXHS+`E#ph`2J
+
+a&@rUYeeGMdj)FM3j4$R)jqb*%!6BKKDle%%A-YK#TZ"%5NTX`EU!4*H)L!B8GiS
+
+@!U+i&BADdb5cf'JR@6FEB69Y$h0)e@kSI(ZTc(0hCDrSfidHdU0K(cHpf0iS-Al
+
+@ICSD*)&ZZR8Y-GU@piX&j9MeGXSJa$aN+(mBT66KIfJ1k5JL-Kc4EQ-'X89Z$rc
+
+3T@ker,&4C&"KN!!bZI!@fY5+R'4#&'IR3,i+1dQa#cY9#$G"V"N4F9!f)5G'2Gb
+
+kUV8AdBc4#YA'M2&I!I[1Qi'P+[F%5IKTmh!HKqQaUPkmXQLL@Yqk)lmhDPkk20a
+
+EMmkIMi2RiNCi1hU)ae,093SZUKc"S9ZhA6E#$DhhL+rJG%)CTN0%!dI)I(0HPj!
+
+!q6DGTr#R38Tp2iP#eTQ55JVBdK,hhHDM-4fer'Ub%+db(p2X5jE'BG6-3C!!#Km
+
+[G-#kpjkCUdjRT`YS1MZrX9CCDm-%HGR#HbKKH,qLMD`rh'$cHU-hC,1bc0$1Lad
+
++$$'+D)'DjS![q2mKL`Yb"J8'ANFaSXaELIc"21Gm[aTa8$em6dNDBEj,$k*PNH[
+
+9N!$e#5K[`Y-e0!m98dcKkTYHeENerk,lPrQ)8J4&erLRhj2Uhc4J`GM5JabhH3'
+
+E2@8Q*m-JBB5@1l*'Aa%SeBPh'Mq+61AEp+2p%iai-ffa29$5RP@,Q49Kec30Lf9
+
+46NLP0md,De),h8NeaJXhj,5p&)(41@#%ZjaCd#$+lJlXKhPj(m()K"DA8cVM#8m
+
+"fj0bH*H"6Tb[KQKJU)$A44pTXCXDZ'&#fE&!4&"$#NF+R'8(%0FdSmD0Bdda,5q
+
+idCh,E(AG,9JFpZDV$SDrB4,F3L[f-L+IP6L*bJS4!j!!pa$b4cU-",k)Sf)ZejM
+
+G36ELcKJLh,V$2VYS6#Y+Ec'h+6AL+2KbeZNbi1,F6qm3[qHJ0i(MVh[MJ@`B6@b
+
+fiCmf'q3)V,9TdM%5(,6DrAmqd(TmJS!0(&ke1Ba'$2dDAUaAVY+Y9'q,XlYp+Sb
+
+1ej*0efbkD"b&h5@0*J@acYLZQ9QHFA2r2%(YmX*hZ@&Yp1p6ZpH*iMI*B[j`L#m
+
+R0m4hJFmhVAV6-Y-fb)5bGqA@KpL()3j1Xr6`0Z(pEZCZQhJ9JSZAlEkEKDhKirV
+
+VE`ADSYY%%09Uf0lMBd@SBP4rQLT-NHS`NfNL",3p"G[d++JH-c1M%pJFC@NYf6H
+
+j0N2aKlcPd0[Y-DAAqFHER,fT(l9aRIbalrmHKRaY9QlZ-#$rh$"GIcpjKRRVLED
+
+B)XjYQ0b(&S8H%1&0a@ldVUp"k3!m[h#N6$B"d#[(YUR5-A"1`Gr!bF2T+ZF$5#K
+
+,Sh9i`J@GT-M'`bA!k3Xm`h`qa8PqprJ$`qMh+hV$"JkI(,[(*(KFGd,E%i"0EF%
+
+FiKbbD2)jhF+lZLURpqaFkSK,k8`"iMA5$I-A2DM[@eCK%14"$rk@A,b!!!JAAD+
+
+Hi$YUl)4['!VkC"aZZm5a1M*GVIqIid)VSR9Yma#X$mF[qT8mYZ1E2ZUE+(lEb1Y
+
+c1X*j3d*(Z6eKY#cK3!cRm,5V(#GqbaTaNG[!4#qXK"FmB!N5$HXD[bc$S*Y0)Ff
+
+d+6XS+lTp-U+D`q`c1E&Y0GS$l56'$)Ip5[bcNEB@%jrVh84ET88,Lfqcj1,!hi[
+
+CE*QaVQYYKfK(K#lTXbGi'K6L*@2b%KcMEYYTKmpNK(6r-%,#E$E,*DK!H&4ZPaF
+
+42VV-"afQq36+AJ*8j2Z(Hi5dc$E0GI#B%MBZH8"$h0!"i"84Z&@HENBbC3#M3rK
+
+!`$("e5i@Zlk-"YQ*2q2)m(KX5)1)iG5AJL$%%E)-&35cAU+)i69QjMql10FkS-T
+
+!cr1T"2!ZSfT)Zj`UeBTh%6[I4P@P&ckTUS4ibFF4kEVR%$YMN!#kd6EKQ5rS@@Q
+
+XlXE(Zb,(S$IQB$Y!BRjYPSTF`*F4[*Z6YMrYBb[D98BH3UL6lG)P(P2IZfA3%K+
+
+Rf2-VZ['d$ACjZXN$XrrG6ZGkS0*jTZpS+'cRYHh)ZQaBYb-)R'm(QfLqh3hHGMf
+
+iBbXpXC!!j*De,Sp1lfZ[,A%G%paH!d8"!#p'0N5ibE,1%81Mf)%E%6HUZ`AE&Nm
+
+JdSRX'%C%#KL4FIi@bP)I'$j1NeCcQ$SB%`cQ`Z*)+9T!di(G-R'B(4QKQ(VUQD4
+
+i6'MBaM'J)M`XB(&Zph[AJf!'0T0bZ@bPdlaPaYCC5h*H3MN@br-C)RBMZc%6fFE
+
+NU-YVkB6Tj`!4FpSfSEf,)F9!HIPG4R`M`'fBec3Mjm)CNIcZ5b+DmEePBSUMSE+
+
+a$(&20CiLMMCB2!BJ*J((V'e!h-Yj[+V"+h5fU"c+IJj,EZ1cFj2T9%(SM`c'UMN
+
+pR8ieS$LFQBlb5bUD4,52D+q[8U2SpQb)Ii3%l2c6%[HZGq5fTjGZcdpE[kQ#lP9
+
+EZe9d5"bS1Fl8[TaQlIAlb0DldaaTM&kTT(BXfh@Pq@LC`!H[lN(T%"-mR95&VHB
+
+Z%!3R8Dd4+SdcII9)$TP&ebfh%Q4aa&-2qhMSKe5j%I5#aS%ik!l%[USL5DGZC)c
+
+Aec*rHdM6[9XV2BQ'kdf(l5Ve!36IR1&-'`4hbZFad'Z3!2lQZ$$`FqB3,XpjBJC
+
+HVkJ8d$'c+lb13@bBCM'&4PfZ*hV0"K,5e'@+L%2kBmfi3#+&`9H6540Y4i'CMq`
+
+Cq&F-+CS2peL@QSpli`5'"),K)lURZ-K"Z16eD`dH&#@iNEh@GSPKZH5%%m6@r)l
+
+k`93%Um!,E(bZbUCDZRJd'ijJ*M)rPSLd0V"Y+C,qc99JAGD'kjSQq2raJTR3!JQ
+
+S0@f3!!2ClcpSKT!!G&&-IH1"F2P[lVXhUi4l(I#QFJJDY&J"pmrSk3ak(cQq*X+
+
+Yaqm[6I)6CpB[AlTq$a2,HEYZe#Z`Z0E'#A6F[&bGR40jEXBL'ciC&P0k8e#iXa,
+
+1'Z,'[C(Pd&6lr+B!kCj$`3pam0PE%I3XC6KaSiq0iHFHM)CB%MJXMUe($a-EPrL
+
+2hbdJ0LR3ETiH`HpHSdR#rhLS4AMC#ZD20K!#eE#G6K'jS!H0cB[T,48DLh+#)"8
+
+r,FKI8lE(A#%&3XfcGcJJ'AM$K#l1df8)PM"m5jrHZC&*T13#PT@hE(iZ@91BG--
+
+TEVES'ecmk6q,@GdpFLjZXCkVZfT0mb!kI`5VHD!3Dh"S@2SG9k*SmkIr5UI8(aF
+
+9#4BkKDFF0Jr4B6cqm3$jM,F`*`rH`5#5ra)Q'%akh@2rJk6i"DCr$d'F(f8r4R,
+
+f)2X`1mcSYJEGc-"E*r`K+-EDFU6hblNqA*5Kk'(fHH1CD5eH-EF"T++(1lLM$4K
+
++MRC31$EI3D&%@6Nh,9f3!*+Ud0cQ(8X0')rC#@i9A13e,fZ&I@DIdEBmQm-P'(Z
+
+hKai54"r$R4Dr4N*6GI9J0[l0AHf25-f9&hI-4TddhPTALb`DVYGl3Y)DaNbkr1e
+
+@r*k)Hm-J9jP%5RMl(lJQfd$V`B[(kCPSE8ZDl3B`ea4Kaa6HY#*Gc,!pJGp[*kc
+
+EB$%4%l&81l9"Q)6D4S+mDU((1eQRd*Adi+!%jcYVH0T-Q3Cm"*IG1[@qpKV3l9G
+
+J3$fmhE!Hqp[4Sc&cSbpE0lkPi-A`B3A[PRM6RI61!f8S,C,T@Zri&qf5ePM$M$h
+
+EDbjl`Pm4Q2cNBrM5m['cl#FRX$H9KCUCqM9KrZ56J(Pbri'A$YEh1"DlGd+'8@&
+
+ec&qm%*E2'k9AiV+Xp8G%TfY32I,C6IV@h,*Z$%'meT%lNij$'P[pE&l!6mPZ(jj
+
+#!SM"eF[qpUICcqN"2@SGU@[-aNVFpVTKr#2jP+!F)`LfJAY0(RrSB#40j@NN"bG
+
+"qi%2(ENE!rA$VA%a[0bkSf`a2I"h+,m6Q-8BGF@NS"FT-XQd*66*mlk"&Yercd#
+
+,M$RXj[L1TaKQNN,V!GR43E8`GMV[P0"#MBpE40VHm#F-hjSBE@QlMiU!%Um&Yj2
+
+F!2RJ``XBLkiNP)ml&2mZKQZBbkAk-dCG6%Y04kAA0KQ6BmHcHel!jTThGlA&%1k
+
+h#1lP$`E`S!A3&`&BqFG0ZAp"KGAMdVkia@XHP+pi$H-L()Vcjbh1jI$mRCd5d*H
+
+%KYKhXfa3B'a6aMZKR1+L632NJjEYIQKJl*!!J+&)X0!`,M[AhG2`m@"mDCY(&FE
+
+@4eRA1(jYGS!D8`f)dL'(FpQLAjJEEqilaf-f+bQmB''cMH*l06DE+0emfZbKG$p
+
+S[BEFcA@h-VU@K,Ac582+%Jj@rKGZ$Rj"$MNpP3bK%85AX*S,R)VM%iTk5jeM0Hi
+
+"P1dl0$A[Y(NSCI[Xb0f6)d82)N2!*lMe`34%`$mSLbP5"N1U(kQKm#KlK'e#6eF
+
+,0#()kELE%E@(Y)+SK5G`L9kiQmCd-30k3LNb8Rhd@PmM5ffATkU&4q*S$6qRdC4
+
+K0I*2Qp'VNRC&$*8d21kcXI+E#e6FR)BcFmh4Xdhf!`&$+T!!AhCbL3S2lcPX'BG
+
+iP01ILV[LpjD1BEK1H(if1Qjiqra8e`9CK2`Heh%aQH"!$p3j[i!*Vef5ap2K+cf
+
+E&Im[#hkJMcF6+Bl#Mq*da3#Mel$Lrb(eL3j'mh0AM8X!TrHp)Vp"d9KBBiY&KIQ
+
+REJ#5hP"VTD,Lid04qGfd9Zj0D`)Q(JfT"%bRMDck$&0!GTc!0S4mE34[3C4H0&M
+
+l%S[9MI*SR6,"XeVT*Q#fJ$&'2h!jBAXYcHd6aT+&mZ&IZZIVkBJc"jhaYeI8fMp
+
+2JVdDN!#)[GBf"Z2N%C+E,p[*SG6h125c*r644,rHq,@cf&'feLLUM@l3[X,rp%R
+
+IFNUrq,-mHe9qrQ'`rhF%hJF`M$r-S4mKll$cXZXY*mj[d*0kH#N3RUf'jljk-(l
+
+6%Ki&L6#CQH+i#d5J8Z55Yi`38HhUXP65XBa1a$c%Qh8$[iBdA*,Am%K%AF&,FYE
+
+hUdAf32)J!FGb+rP)+mBCF++8hfI8ZbM'G#D5f#i3SL-E4dT1a2eQ&rfCHY1h*KN
+
+0cI3d623ZGh[d14d2$h3``XD'T[bU+cV[fKIC"QkNpRq'$E$rMhkFp0e(XGIaI#d
+
+b(TX'0l5PJaccF*(e5%rH@a$iE5Nl3CfB)58"DR`P8JV`0L"K#m(+Q8@Y`d9,VH-
+
+1l&2N,6eiMbjD`bJJfZ&0S[45A,p(p1'i92ar!!!0#("XBAPQB@Pb!*!AL38!N""
+
+Fd3!!IAX!N!1'!*!%9%9B9%T@-$%!!+[LU[LViUVi!*!'#"X!N!B#e3!!#Ti!N!B
+
+JI`ZL!%q3!!&%9M*C*C3-1$j'D16aP&"#bB54CdFQM)aAJLF2X*kZ$l#HCJ&N$5,
+
+2#2V4#YcPeb#l*!0Q%Ni3a[$Nm!+GIF3S0"8l,TM3b$ImZ&Hk4#jjfl)P6bSeCa@
+
+QNKNY$Q#BBBi5(!XXXB,!'KY8N!#S34MB3U1&3BFGpMMJL1FLDEN*@'ZM"#UejhV
+
+1@Kja%p@CTM2Jp9b9('20bfl1-ET%N5Dm,T2Ni3%r0@qBjM!V$QI)Y'E(*+%N6kb
+
+j)j0X3b!q2Xe*`M8'[@@9DNG4Z0F4Qme,[PLZa+D5Y@UfZMAGERmi2UHHC)eFp%%
+
+3EI#ZZ$&FYmKE`UbAL9L!bmBFQk$!e#Fm+UaBFMRMZX&#%&rdL"M"l)Bh@`5[)M6
+
+'TAE&q(!pjGEh)1JLVj0P%@8X5eFY61paAk6)N!$G'!Dc[,I+YGSMRkZUNlA0fVi
+
+rISfCpLkZ"GlN*2jNZL2i)T%P09`B,M'ZK!hp4*X'ZdXIqYjH+r,Eql8$iePR,Ui
+
+4lqalj`Y"Ur5Y(bml5Q%mE8rmTX9"2@f$Plb-JeF2q$HEKTED-EhS4p[HIpZaUX(
+
+BEHh9)VfSAJP6r%U!b0R[i`FYdIK`hdLZ!r8(i[mJi[I+qHBBGbQLjUUQ(l0AiBD
+
+KfQCd,pMDCU$(LAqFd+biEAF'2CGCZINK"+m0[K9l9cZDLl2P2MY2,Xj@lEFa`k2
+
+lRec,&pClQ#UEQ@''cL1r2GPGPYkD%JVci6UaVZIpG3'%N!$qCK!j,"9"42m8Rb'
+
+FE5hlB"XhiMhVN!!)M8a863E[i3cTmA*4Pr`3J-5#9rDmG#++Pbk-V-#dIbqLGcc
+
+EiP+F4kYApq,`CMfZlLiB5L@L'l@',0f*iU8d8ZlmM*I#Gl#ka!qDRhT(r%,9$XK
+
+0FhqeHKM*'NapQ(l@Rq`*1Kd*L[1T+,aGL-6"qm220GaRp)L4X#"dl4+jN[L5NZD
+
+riI"B&l'-`Gibr3-!$34`E'pdCQ&TFJ#3&j1G!*!3HMB!!(q`!*!$KJ#3"&4&@&4
+
++9M!a!!#Y,pC-V5r@6!#3"J1J!*!'!F8!!(cX!*!'$6e4'!)f#$(3qN-XKm2#J#m
+
+l#T%hISGZ@HjqM"YPJBE!k`YLGcqJ"0PKMc[S!idE!Nqf*qJ,Je63$lP$Q6kJ9+@
+
+!F-$2!Q82B4!5bX!Gm!&4[ecJELjZ09@GSY$Q%PQB$ITaf)0m[K!JB3[&ERfreiF
+
+jK!Pfk!YaV$$X`b`-Jk!rM)&B(X-A3BU3!-3G'!d*-b!#hIS"EDbQpj65'15EmF`
+
+h`@!K)-plbe`qp%"82dBS!V%feZiU#2Z3!*q8ZaYE3,'(N!#B-Q'6*N!2XmJiA)!
+
+C(c""MQ$L1'hX$R+qX&")GTAa#4k&r"kK2f2a%CU5eE`(18a%)+@(-(C4XBpX,DF
+
+8kiYA@T5dr-#+Z9fJj48`pq$q%0$'GVHk4"Y[f(*j#6%VpG!GmK*BpJ&)[`FX1F[
+
+Y36!4bli,1"M2c38*!9[&jDPmHKL2iij#,L[GKeL3!1&(C'9j6L`32bVd@8K9Z#q
+
+%I5'2$iKMV%bY'-IQmrKfYjb[#XLkCIL$T(RS&L,IVNceVCbP5rBhFjBZ(PclL%h
+
+1(5D5rbSLe8iA,lBm"qcb(`lUhFeLF6BTAAa)hJYMb2B3jP5E&LPbmYEMm*)3IFe
+
+Q2RRf'N,b5`#3!`d&F'pVCA*KDA)!N"IXXJ#3%(el!!##D3#3!iB!N!4849K85PB
+
+`-3!!Uml)fD[1b0N!N!B'-J#3"J**!!!p@J#3"KUS#U)!6j!!!Fa@-PQ2V)4+9ZP
+
+("RM#6))H2-'6"eJpShMCUKm&'"$D5KKK4p#29Q!mF(PGc!%j+U'%N3NMBdB3`m5
+
+6!pB$!$Umdc$S)cFG8`d80610cATGXaj+`p64J[A#@4K[c"KfUM,#lB35,[*%#kh
+
+fCS"b-%)j+-FVk"BB()9U+V"1$a9KI0r[1ZdYAf#B!FSX)0FC[M$SI$%DQ*M&4FY
+
+lbbP6Diq"1mLK,,8+QDV#Sh[#&mHMa@ZbB$AIGH+KHc9THfr(8'Rd#5Y"Cl+`cM$
+
+NZE0%c2b4L)#r(T%Aqd'`+6jPP(DG8!qIUSbV*XYLLAqh8V)MKe8SX@6S-jk8Ph$
+
+`VQI@`AheM*UDcQAM"b+Z#21Q3cX!2rE`mIh-@QdiUcXSJReTZ4115lJ2L5#`ISY
+
+XY[RmS2'e+$l@JJlBk"@$8RXhH!H)1`HrcF'Aj11F[(j1(ZIN6C90Tq!FAi+f,8B
+
+PP`H1Lh1l[&XLKG9k4GfmSfLhANRAlk4P-b0[h1TT)B2(fBU@,j,#$)k$lMMUjBN
+
+d43UX'+T$JD[+[e-ck!*IX3qT'Q9&T3Q0R3",EE&(dH0A"T!!X#ee+H$@&q&Y[NQ
+
+Pq`$-2D"CM$3Z"hFDaLeVFFY4NpBV`G)@4jl5$lKSDm-EAq115D'QGGV!jd5P&)2
+
+L%+R6JQ2Q#kDJ,"L1GR'B9bTS&9Db[ZIM-h6k56*eSLC0YlYpDX6+'FqT5lMJ`"m
+
+pkr&43UeQKk9Cq2X5d5h$TdKYH4(IjNRhDUj-qUfj'#2bRfQqKp[Jp4m!$34`Eh9
+
+bFQ&TFJ#3&jB4!*!3Il!!!)CU!*!$KJ#3"&4&@&4+9M!a!!#V[$laUl`qm3#3"JY
+
+H!*!'!j%!!,T$!*!'CFN,SJ"2N!!"c'RN'Ii))e5b2TRKDH3BH8D1(@(N'(P+RT%
+
+4RZ$*!e"m!'X#%)C2S`!CPChN18%r@S'c5APG%RS4QNH124NbJKUfNX1V0PJ[,Z"
+
+6)l4JYEKM@XJQ5E5%9[B+mNlFm3lbDmRUT*B9Uk'3!2@UddcM@5YdYH'UJjeXbQ6
+
+,[R)iLpGT,6S0V+jRI0[UliiPFcT"Hphf'ZD3!'jC#m@VmL#$C(#fCRA(NjeSi%T
+
+aYY+Ef9SSC$-5XjET$46P2@M#Qa8C14`D4a,CDi0-[(2NT5-5`b"m8Ca$ajQU0L3
+
+q!HG+5J4S`pQ+Ga9+1krT2![J4j(mTZFp6m3Db)l@(@#LV#0&@CVMh(MZEfTQZ%L
+
+RI!$[H+0j8h&)VhVY6#+e$2j2i1@A9KY4Va4[B&303IM)'ki`aq"eb0)JQT[B$9'
+
+DGHLM[elBFhL(kI)j$kNiLZ4V*EH2*(Z"&jC4*YI5pa69%$4m4`qRD,QimCZHeCK
+
+&,crHfa+b*)CbCTqXqbMH5!e+h(,P!5Kd4F4+GkL(2@U1-kbj!BlSp`$)rL5[C3D
+
+TU6Al0&*BMlc2N!#'PpapHQFc!lcPfbZLM6+aXNr@ae[Uk3I9NFS-K8'P'&TF+qS
+
+`5fJ,-aCi5RLf48-5+A&EH@X@L(R,)PPXfCpf'eq'D(P[&@pVKS8jbXdTM'15Rr3
+
+3*5D4C+H-[i88Ci!0R-[c4,,d+$m+fKRbG'h`4q!h3dHJ(hpC,HI%FKkYHpJ2NrG
+
+K+P`Ud@M4A)2HF!6[qPT6-XeJ#dhT*iqGDkf4K1)pDejV@%N3qVm51LhE-PP,R$J
+
+90S,LQ%BF!kF@1%1b4@)C`J!U2SJ'Z`Gl%mh3!Y@BiL@NapU1c@%S)$GNML@0-*G
+
+QrCT-'!*cM,CXr93bNYPp1JSY4c%lh8JV-XGc[fEfaH013Q1Fd@%)YBfHe`ha-iP
+
+D-Ff!AA9DX5T-q&L[C!2QKh,JF@bMMjI"TN2QJU30!*f-@[YGj,6L))ebaLlRmD0
+
+MKb"i&,r4I$lQ!Ak+K*-6QXGm(Im1F(hh@h*-Jbh&Jk)V3RH&e6Q"aAVmE%C0Uf6
+
+&ZmkdC+p&639PfIbmX0Y(0#[q$I*E9VYr#TccpQi4QX&QPf5'S"Q'd"BN-4bD4V@
+
+XNk#$1mFZ**jB9R&%$$TH"VrT(DrTIAP[e`,p'JI3B0SL'2pSaM+iX4a(ZL0qjPV
+
+qiPS%VX9c6UEK%d,`"qKN(3AT(`!0"A"cEh*dB@Pb!*!AjB3!N"##D3!!LBX!N!1
+
+'!*!%9%9B9%T@-$%!!+fF!$ZYR!!l!*!'#!F!N!B#X3!!V$F!N!CAb3ZL!%q3!!&
+
+-4K3ISAJQ`G1,6&ECH@6##&)S@FN$V1'"mHR+m'm%B!9BNe0##5AS4bc`pkY(mI3
+
+XbFV)bJJMM!`i18T3`!JD'*iFAU#cMr6@V+aUSGmBkliNm0JVkl66TJ0@3)QYH8U
+
+5Hf@K9%i9S+a9$h#EAeaFj[N#6!@kFlK#5qEdk@*i6`MZ$XZY4GM8CXIq3QM*!9b
+
+0RSAS!*K[XJCBiNThm"LGR`5[-Z3$a6ANi!c-je!Dd3@lm%Ba8#c3QK+ZFK#c'M[
+
+B@Hf`kAa3r)NJCETE[5Jqci)3Zp*l6)EKNGjBraa-8Qfl1kP-Lk9@AGUB(GTXfrG
+
+SLa$T,$i`c'1PZe)Di!fj4DkfL05$CSXEU+aT4Fq!X5Dq*DdZhhXL#C'8Uq(ac`9
+
+r"U@qKk[3c3Tmf'+`J+rA`RG,[SXC+)V%brPp,aB-NR1$3Mp#D)4+6U,"CS0[H$F
+
+([(h[q"Y4Sp&Ie#NUche#I3hp$kaiRA"MA"qi(pQqiJj#F3f,-mdT6I0aCAKICEG
+
+ja[fX('Ef1cjN1PX2Hd5kJ3crZkY6YP(CmTQ+4SZPUPXKZ*f*#l34,!rQX1dRU[f
+
+'Xl2IEa!AMTC2!IN8[blMkj*IfF2A3CE@fimR!3AXFDLBNMrFq!ipeq[P)'#'UCQ
+
+C,r6EB-m@2QljU#ZFafJlD18-%G'J@Hp,HhijU#cfU0bi%@+YcbrhNQhRG1-aY@`
+
+'JIrf&mceTk2r@LCZmYr9ZN&)03[AG"(%NqP(5f*6iNf84DDa%mG%MURqRq`[PVH
+
+%6bQ2"[Zcl5A&82Ih*-F9*G5$8)Fp')l#iI56!8V#(,@+rX)GcE-NS()F8iCAHFj
+
+FTlXe&S18PZi)dkCN,%Q%Fc-pqmBRi"+*`1qqlPE&Q9J-4c8rFQCj0TqrZk[+d6E
+
+q0%mSdS[N(`#3"!d*FfpXDA4KDA*P!*!@m`N!N"#'DJ!!PL3!N!1'!*!%9%9B9%T
+
+@-$%!!+c(VcfXakmp!*!'*ji!N!B-+3!!L4F!N!D1dJfLB#A)!1BVAcbb(UGjK(V
+
+-fqcfbJNME$1bf6i(EXRaY`MEj&DbER*iLJpJ63R&jfrmJ&011D&N%r5M&DKVNPh
+
+AS21f-EHCC,,*G*2T3Qk6fl6$kcPUVA1UmM5TSk48Jk*-XTVQEe3DjaY&BABa5,+
+
+U,TZi(U4j(+@Ek%c4-%V6-XV1+TUrS#NpTL-kTPr4%hT+[kE*)Ae1Ap'V49LB04Z
+
+pF"-9013R60$-iJLVULDT!Ha6HNd[kEFGLP)YCI*P0l98m9P8PY%&MG+NUZ[F2-C
+
+PAP@#pc`[PaiXc36LQ!l(!8C6&%Pf5X09P&CU%%Ge[+DKqLk"-&CjUEj9*Fhc6*e
+
+'8%LFUULXeAIeBM&`E`19,3F$&Xr!5m[1Q-e@DUrAc@U9!ZmM+V#r8R3H*IA"`B&
+
+KPZCa"-liSk*PFJS@LL6&PV9L6EDdj4R3cHeDTRXZG!rV[+$R#d1f'BqM+Sk@#LU
+
+GMbU9e5U,&Bhd[QUGRfIdiGLqVj2P8XR!mr(#)64#e$UkP5pdAG94M2%Rejb`k*N
+
+6D`F$9PB%SEN*QJZ-GKdGGG$A8EDN5Z5Mk(K+-bIr3D9UY5RU#aUb9Q"F)&kSm$#
+
+0Z@#6b)1'L`&-*DQ+&2ZYjV1PL0c,hJbHU"6#,++b8[&QZB$f4GdIIdbI!@S5TFR
+
+h8ChNQ3MHfLCCb5r)2(`+#91%rqXeR#6IE-"S44Gj!hPQ9&m8DVBBm#F0,`PrPc*
+
+$AV!J09[Q68h$[IEYfGJ[[E4BAbS)X&kA#NM&5m3Z@"lHf#Fdr*,QAd)"F2j#pY#
+
+Uc$IADlkQqGG@,F,H#EaffDeicLZ%"mc$eZ`SC&&eL`5Q3Ef1DS(G,IL#jPrNhi*
+
+Y-9cH&Te'5GEYH'-30!9&b"B09)V[!VkIR-!H4Qq5E0`Yr)6QRb3!KB8M5+HX+D*
+
+-R4-,[Yrd*jVrMXdIF[P$ITS[V)aID#jLm)Q`!8'Y!)'YUa1Y&H#0D"mL%q[prQq
+
+BPkhF[a&r`ZV&f&+cbY-d2eG,1VN!*faeEcRa6,L-Y50V$Q3YQN@,qq#+ScNl#UX
+
+3FF"V6cYY8hKkR!&qYK+h%cq2D!-CiH84VD'fT8TKiJ6i*fcF443V4+)GJ'pbfV!
+
+e`#l"'')@ma1I2ETPHmk`f+ZUGE+U3DHX)N5,%eAf4[ZJfJrS0r3Kr4rpJ[j-[d3
+
+HB[(TG!''Ed(-*d(RRN3A#EhCc-l8"Fdf+XU3!!JlkpH2MJ9HK-"5+"MQmAkF0d!
+
+NbqGfkD8&kZ#i9'Sbdba&UT[Ta*5Xj2RC)46Ie!83bPb0q&S"JMafk5YHj`PN!Ep
+
+E)L$`lM$0mBX5I0(-,$)iNEGZaQLNKi"L(b+3!*QahaA'D-EB"SDN3+9EdHSUj$k
+
+DFiUF3)%djdN6DcP`lTbXEXS-`B"(JdVlR5(UFM)*Xbk!cRM8#T9(%4ZELQ-ZVe`
+
+LP2RXq,@+PP`mF+k&F&9CP&!!"TS+fG2Q3q(#4Nr@V3!&@ESFi%3E0fA&I-0hTJZ
+
+G'BdP`C0fmlB`J++MFQ$&(C9`l%+9k!NJFK!Mdicf,df8!UfXi1`K9'MX%mh,pkU
+
+%b5"")NDYD+2BAqh'hJXPml``NDH$SVFj%$eUQ0423'h!jcabF(*a)(Tl3(9!Fq3
+
+@b2jZ(K(c('TN((FE%&3PQIk0r$ek"TUjZ(KmM`(*f[83pcX3VGFUK6V[&b$&mhi
+
+TLY`+YT9qcHASNV+mhMP)['DcHVphr(B[iV1192IdGmQ*2U)4S8rk+jZ[d+@A[pp
+
+e"dcD2XNm*1p2pHGNqQ3-068R(*MZP))D!+9)IZl+RTXG+!$X$[3!L`'h2bi9l$b
+
+,eppSJhFZM,Z'E@,1HNN25Ec0J6&m@*ZpJ6-je&J1(3a$2'H4c[$l@(NelEZcRK9
+
+KhI!a-a@T$TZL%Z6Dh@BM'LmAC*bV'NVk*8lPl)S#90[MJikX+jPChZJHaI6-(SP
+
+DdJ&+e,)jE)S!f+-6"$UCqA@)4Qc%mTa8`Sm9!im,46f!YTL8`K$C5I24&j,DBlV
+
+0*Xr1JGNm&@MJ")V6cQY8)UJ4TA@b63X+(K3Yk"ccM%B#eEB4Bhl"Z!43X4@E#!,
+
+kS*Cr1CGZ"*15+`(HE-DNLqEFXY(XmKSS"KD(K`(MPJIREplVcpF*Pl(Xh`r`A@d
+
+V6XrUYCDS%5!41936j!CaHarGfeQ*jpKr#N!FXA8Sj`p69RXab)#K3hIL1X"I+5+
+
+03!Uk!6LLhp0T`p9)Z&cBY$Yq9NSIAQm#[q2V+L@%I$#-M2&V'(aNJ+c3NUK2)d)
+
+ffIRj+XQ@3Xp@U8EqPMd[1lY3()FIYG[S+"EN`E1LLN#[JDAT$C!!lNc-q+BqfqK
+
+Mh0DfV$+f[N8@!FSi!1M`G!4SUYT+bGZ(bE0L86kNLQ0[rF%4GZF02JRBTK!4i2I
+
+*D32+10Ge(5Zd&k[+T3)'r)K69BEU(Mk,Qa2R*k*J,fdq!l##MP'PSRc!N3BUJ2J
+
+X&!!Kp@Q'm3F"M+`''3FZ4RK28e645KA5K@[babEP#bcHe#8JIELLG9ifB&pd+8p
+
+'Y%+59D"M+8Km*q@G'jMR%+CE9`MD&$-h&&M)PY%C8pVe$m)a&rNYj-iq$0T$Jp'
+
+IXia'l[L*(mEldl'Rf-K2+(ClJTkH`AAfr#M[iX+VPj[1Xb)[8j'`!I!Z6F-`l23
+
+Hke6U,Dl04j2@iK5dG4H6ZNT9#pmfSPbUANq['KLD'121+GXJYmA41S!A"`fKb(I
+
+8bcX[hV(Y`Fq%cKEB5,c'k%Sr'PFb-G[N'9CU,p9qc9DaVCMr)GFVcK!$j04&Qha
+
+9`jFQ-r30FJJKG8UH,PdVS+XJEB[8jVh+B"a*cm$6il'Y1hb&e)99(aS%!0S82Dh
+
+c$mlXj!TKTplaqbMG&ZhFXCK@S+[GYbLjk6qYei0PIJ#d#CpKL@`-TmaQLpekPID
+
+Cfc`SHk9JJ+&aD$Dh&(V1HCf[bE4UMMm50[ET#+C`['GBfCmPilC[a`Q'CE%PfZZ
+
+SeGC@)qdYJI8ASAR8FU[*EMHCr($M$p-CF4C"-mdR6Ui`FTQ3!#1"&1EKU1&EY(S
+
+qVPcl&[2S&SFj#0N$%L`caM,5cX"[irf*q'8l`CFRiD6`T+Q03Z@plh+F*`DqZ'`
+
+mfRYR3Q&2R+HNjEYrp*2Z`ejf$A&,EArL+GHUe"U3!1'YDF`Bq3`dlFd5[D#VIlb
+
+prl&BSTZL+NC0QV%[bP'L0N2c5Zfek9d4-GmDk[Ed%D81bp4j[Udired)Gr$DYGS
+
+JpamMl4bMZ0HU10,PddeNl+a1lTE`ZIp3`&eK2HU`(VmrRJYhBGTB`m@am'PX+85
+
+B(qh$QSIXAl34qDd$*(Y([Ic&926ZS#j[SViXmBEVBkH006)fr&5%MpN*VQcZGVc
+
+f1bD6qb8[fb92c4)l-$hH%JAV!EFl&a#qTklPP$3aFK6#+iAG&SP1UDd&2Cl5p$'
+
+6)ll4&hiKD1NcD3ECpRbGQU4R$p#Q6`5DS$$k&31dX#jp4G#eY)B,@`(j#JAH,QI
+
+Tq$*0+lXkQLf8FfIYa!e#Yj)PSZIeNeh3B[!Vr$@JhmAjiBZNLY'Q4CR+'eaHAPf
+
+2bC(52`mXEYZj8*[UKX)e"&+ELC(C4[%@3+qNRmXqIHIN``iD-IXV",XE9T&%P&d
+
+3Rd&+6iKq)1-U,MR0N!"pU)cE%fm,8%kqrVp9[rRP!'i!MFS2j*iI9EZ0Ari)hN$
+
+#'Ebl[fhVL[l@[)fJcqrLMD[Rhihr@0UMC,X2HZEUc4$kTJY$fN[eTdqBjS$I3,E
+
+Y+BidG)VB84-8p6`d0ZC2Rq9Gcfd*HlI"8$66hd(5)rP*#)iM6RpSmek4r,1(D6L
+
+i-IHkI+N-+Ab`d)UH6,R6l8r(V',X*Gcfja$DH,ihZ3VD)CUq1rc#Mc9S@h,%[ld
+
+j[ET"mH9Y[fLVFhhhpapHR[lh,ZZQJlKQL+r(SMULk!3")*)I%Y"eDMA@'FSh8+C
+
+l4iHNfrcZU+DVhB2c#`$EiKrUHbJj$Yr0bU[-klPR0(cKKLIpi1GqF$[jPCp%ba)
+
+QArP*"03Ib0HrAL+NqK4UbEpPhMACGSN0X3,&PY`5Brm1'ijT82Z'`Z!*4`jqf1,
+
+[#N1dILP5NML8qD'4d!cSk4p)N!!ST&h0+-#lRL%Mr*U*c,P3fETQYbX-rJ#Gh@[
+
+*S$ViE9HPMli0-M0MUNkCE29JEKPd@Y"GUEcCSjrr!3!0"h0dG@4PER4bC3#3&MB
+
+D!*!3LBX!!,M*!*!$KJ#3"&4&@&4+9M!a!!#YVDjcVDfZG!#3"She!*!')M8!!2T
+
+M!*!'&DX1SS!5C1$C'Ppip"E#S`[Y'T6V2R+X@mJQQbbFh'*2&TmXC#%VSC&EHca
+
+pr'EVK+eRR1C#0PN)qY%+e+4*JdCeIVNpYaHVbd&NmFJY2KP3XP"#9D"*Nh+FcFV
+
+jD6iUXqjN1MlHQI@[XYj2,[+-[JlbB3D%icbEM3HIjDGC-6Y5R'(rDCjek&-fl%m
+
+1CRR@1mdRmp&*Q6dfM-(iT$m3S2(dR,'8T&"q+*qcrpV*l+rAkj9%2Tm@`lc-TpR
+
+i,(Z3!%hcNl)r1KrN4ai*@19PFC*RK$HE$`Q*2JhbdAPjNI9(TpPPFBS[qXjcL#4
+
+!ph+FMHE$ih`+EA[M8@k!qSLCd2FaINcee5mib0FYpY&12MVGfI(H-b0dLp0L2*b
+
+*FE,HV"M1mP%fZmJ(CePr2LV+@5Dr,[ZM%REXMfECCreT0ZM2b[cCb$5CjQGCrJb
+
+XM[2c$&3cTS9RNm(98A5Zd&96&QG`FRPbNI@HC%(3E&IY,$EY#E``1LY!$Lm)G3p
+
+5PIN)KZ`m)GjRaA5',-JkZe"J2qYU!S#-XKEAPp-Vi6)Vaj1MRFZ,BS!S-5')#2Q
+
+(rK-2P3)Q#bTkjPh#ka"BPdJI5CVpHi%8'-++rA)m[8*@(-r+STbAa4MfiE64U22
+
+T9TcP!d5DbV#EIG`Y4["jIjD0"l!GZEarRZ2A9Gk(4I$Sk+Jf#LF$3**HkZMMDIr
+
+NDDk4Hl3cF+',pa2SEi)LI+CJf4ABRE2a01q6)*S&Qa4Jqc1!dAkFpC!!1DS!KmP
+
+C-D"`lBh'CCB2*qA9K&,EJKaF3AA)3Dl8[86jXhPIV4-V!a@+f#P6d@LD$drRNkc
+
+,AbPMB(L'9,#XUbS+3YC9EAZ6DB'L**8La8cC(KaTA!K6cMSPHSkUi4R%kF)44$F
+
+Sh'@FRNMjdeNaNQ`j'`m'id[kqR3d[L6l$%6JLf*#J8#S5"**kNIb[3P`HbCkN!!
+
+C93iA6AYQ,Mb'pC!!Iq3Z!N8fNPC"5TpRr*N4ND8[**9JMYi+NDJZ8kCVXlQiHZ-
+
+j-pep!"9!Sk8`kY89JGMe"q2XDMaRKb,[VV)KSV"bDYBIMXA4F"QF8[5Khia-jYh
+
+&&4"JqkH$BPB5IdUc!EM,5m3jKDEC)"m-XQ%1i9IS4d[idGLM(m&#r1(6l+3rqPB
+
+T0S)qF*5DUiia)E'UT[NPm6dG$$RQ(H1)I$`[`e[@Kq`9DbP`ec*+mCe'Tf25D$i
+
+k4FQ(1TR+eRjC#b44XSi@RiplC!lpK6L$2l,aK-X*VXlX'dA#[X6SplkAr@K6RA(
+
+%QK'kPq2T+CY1mi+qSpUHPj-jq5dD8U*(%$V[1"!I81mi@R"03)XNa%c#i@m@(!+
+
+"L)6@a3NJQ-J`Ta)k-HNG)"&rrVfICqp4Tq#AP2`R88INVh4cA0BUSM`4FEk&`ZS
+
+ek9V2fG&1T1BURm$,!"K`Ed&LAar*4mI!ZJqNK,Bm1Y*d-%)R&qMBS!TQ##fVY8-
+
+N(4piU)-[+,jl[4Rd4P'JMrJM[j-())B2fVETp5j34e$9MTHA#$S'3MK+AT88iae
+
+d!abFP2QS3#$(P+*a4)#S,kL"J)q-lhS"(U)c'F`$$Fd'p+J-Q#$b+AeR#ZNKI44
+
+fKXr&$6h&"mEM-QM$9F+KkNbaFq4KhD#Dj5GMI2)G+XGiQVY@Q,jkbm1p3Y'$C'M
+
+*8D2XSMmJIaiHI-L#FNZ22Mc+5R3!SDG$HbGlS!bi3k%eL$,YR+++KrfB"#5!$LJ
+
+KU0iL,rFHCQ)14`CB`FPU(A&Sa[%YaZ42p)lb!LfN+hU(EdJFBi,8'-i(C6%C&#L
+
+XMaQKQ1%*2QQUR"DI&DIK-El6Bf23`U[bH&SK+kj[(eEjf1@L0M4GRqCAP,J35'Y
+
++UYEab#TcP)%-@D8YQT'H6YBe%SkdNHK1qL8k'D0&fD82Xmi$ETXT2ARXbaC&@CC
+
+Y$[paa2HYP+*%B`+eKq+J[1!AlrXAVQDT'$A'ZCBk&*Rm[LibVDa6FN,"QFh!P#0
+
+d@R(d#J@C'-KTikebjmGA2(Id1F`K$k2Ml`rJ$R,(aEPJS%2MQL[U)Af#f1CQ!Pi
+
++,Z@rXR335dEf3G!A!&iViel*3c5lmXR+6!*)l4(IZe)UJSIH,k#1d,a+1G!jkk-
+
+pl0SLp(3k(`85r)Dr51'VE$VFpM$hGFVT2(FYN!!I)1TRD(TND-LJVeJhJPR1e$B
+
+f&XG2d3'N6$l0"`8D+r`fCV@qibVETD)qX`"%YkVRbiVi(!(F"5ShJU&)bNDmYGB
+
+MYm[Y(H'jIS6LqQl(J(k%"L@KG3l)BSV%#8'G,V@LSlP3Efm%2mGH5)&U!%U'+C(
+
+`YlHL(S"0J9JqH+S9b5pB1$Z*4Ycm52DTbJ@Y,9"dcXDMe-(b'2,CUH-V)M5`8Dc
+
+fiF')ZemhLE`N("SF&EjQT2+3!+!)#9e1kh#U@)E9k-84U[93jceAEaPDCGaBN4N
+
+#5a'U3RdRKCDd,[(PL6ar,hY!mR5IX8LlV0)VcK+2YHm&%D'c#BS'MXQLBcSVSk0
+
+@5MQCU22a4TiAbL"[R(*-IFNmj05[RH8UMNp3N@JR@ZS,R9Da1,$TSGR9-,Zmi$i
+
+5Y@Gr4MJ)SH@SMTZ2H6QX8mhU8$fdCZ*kDIF!-,NXd-A(R-VP"3C[%KNEde&5*20
+
+j2X*25i@E'5-UL`K3Qhi(U0V!Lejdj)81)+d%J6hZ'4!M#Y%r(fISfYG2m1#&(!p
+
+JlDj9(@B@b%[00VAKV9"V35JYHX5FQ!#CU+J[L-Y,AlbGm8*AlFCKUZ*p!@b53B"
+
+%)bKrG36`lrcSIAFfa46-rp,PH!UQ8lB"%%)8Cp6$@dbl2DN8Im)P!#Zh(($6Y++
+
+U)04,%*[c1,h[c-C$kX8d1Z!he!T$T83iIUGbJiVkfLbe6&arN!")iKAqjD`bQFm
+
+ZP%KSdP#4*Q+aDI$FQB5KA1ddc8rRUDYM8fd%XjeC,0$q*K+r#L(Q8MP9T`A4[H9
+
+*3[U'RQh9"E++hJc0ECl2qjG8XpGpKJ66YJ@9A0884#Z1&HrNdqNBXi40'lG#JjU
+
+,B[YhK&fjfhEV4$j1UD-0Z"mlFC(ceLT!`q6(@kX`ZmBVe0SCcfCiZqB4"rBN,,G
+
+-I-hI3!Ej9lK4IdU51(E6ihU8Z`bS'Laqq"&b0c4LUV*3qKYK1%IMMB&pc0*`"C+
+
+0J%2$P*XDN9aJ4PAXVpJ0Lp%02I8+0'GB%6di)Eck-JQU-3@*0DSjEY1!'5l6i0C
+
+5GA5QMT'h2G8%20G#8kV%`HP*,"!8VlheDjVLXTFme4NGUPEAmCr)K4)-h&U60'j
+
+T*@&B9'i!h6M-6aEqC)VaD"N6PAVDceCcSpf0-mXiVdiq5b*)R0KBYEl9PVQ*dYA
+
+RIL+iJY'!T4N%QXAk,*mHBk)A[al4l2$C'DCpkHHMl+arJJ()e(0GcjjBp8YMDc4
+
+eR6dKEP6+2L'#$lVSR&HaQ9U0cfC81J*5@YLXG[#kX3)$BY0j[*pb4'R,A!pk)Bb
+
+d5`+mj#fMS*jhaBH'UE)(a!"dGVF+D[NZ3m[#4b4F8J5&&89fbHPB6(,4af6B,a8
+
+,e[!l)AM'N!!%8*-3RFBRN65bjVi#fV1'0BpMZd!J1rdZ#Rc%-T@PQrMG`[)[h4k
+
++XVKf!%2Ya3Rk*VaN31X[)bPa`$0d5a%P$@M,JC!!TAB+qM1PQbdQH2Y'!PT-e"%
+
+U,(QSlJh,Cr0a@G$l2p*%YA'#dI%C$r1pSFX$VRpNqX,f0k2C$F2+p1af,Pfkp![
+
+6'&bX8+1IKL+c*eV+p'124mS4,R8895XGcBf`p59U&HXI`E-QSRb99pM)3-![K3h
+
+Xr*mUI*1Z+U5N,#Zqrc@9VRTL3`QkN4fBdU2pcqhe3+MSE1XNfe99ATF1pc3B3+S
+
+a8Bb&e8dKY$M#GHN)L9[Re%Xp'Cq2L[r-6lZ@r"Jb4YY!qSLZMTB5`YI3ZNG)@1[
+
+2er8%[4ZMddQV"9cE4V(&2mrQqCak5VS@3prU+eUXSX@Qd8EM9rdA)MMS)c-E0VT
+
+4XkYHHAB+'YLjPNGdY-F4jpfUElX9B+3P,HiSfp#HG'k`TS0(j$&Qc!2cMc&rA(A
+
+,h1D'jj1TY68'q4NFACaIN!$28UEab`IM#Dcc#2dQJJ!K`RDK0Cl)@T-aSTlKZJ+
+
+cTI(`[J!DKhqQX5Xd0)8&A8F@k"[$ZQl9D-KmVNh+,[,@@R-h+MaE+JN[1aR+@AP
+
+!D"Jf$($Hm[4Hh*cS8#*U55&MUIbiUL(DBTSal+2`G"S[LL"'3i+X*C&5HkA`GBQ
+
+p**mBPE4BDd,$MlHdi,@[+$%3YcLl)%9qSGrCpc1X$9*++$ce#q2mEBfCI6[cbi&
+
+))9SSm%Ea@'-PUCB2pc5kcFaDf%J1pc5h--l*HPQ1KBU!G,(P%QYaaT26iZbXFNP
+
+5*53A)pdS6(d-HDi2Z*9XeUY%dDGeCPNl)+99j**d#Z'84&ciIN'pjUj%YXT%G#q
+
+b2UlE[Va'SkhjAG0@QR@-B@jEP[IA,D%iGNik%#1CE@*+bfC$D!lqJDff",R+*iJ
+
+jYE3Z-A"b6[@mU,mZk0NR[*B&bLaYTUaeLmXUE+5'1$[,Tk(B@"XZ+RkFPjFj*J3
+
+fb[[b,k9&,EMUrHRSC$bP4B+N1Zd*p'Tm+6k0DVa1bPm92MT6XdfV"92$9RYeRlX
+
+UjMPU'(aHZ23ENblbd"EGY18RUZ"P#5VaXl'B8L&r-9DdemY#e1dINXT$p`r4arh
+
+Xll+(N!-SR9HfNPdmpbMS9YIFXGEE8deI5!S48@e'C8hDUQ0h@cl6STR2kkf0ZSc
+
+X-ZqAiVk*0QfD5(I%4rLlD,UiCUKV[E!bf1-c(e,8-(G5K"pAJS!*"IpH0Er&3'K
+
+[lMe%KAq##6ppSrD*V4dI,,a*D)T5!qfhDPC*S2fDL2UP9'%X3efh+r"@"4N-L+-
+
+['q*LqBhe9#YMUZCE#l68TYlJ`fr5(KbXSq)*kSMPRl4V)J5)e[+CZ[4*XD`X5Id
+
+a6kEC'8J$%dCjJ[BC69!i`Ll)G)*VZiP)%e4!PZZ)@#l41'C#CCqMR9V+TC)B4rX
+
+aPJ$DiXPUp1bV[CLf`!C3[#,2TQ[dXbiCG0K#aIT&jJGEX5R8d#R5&dGZ0Ff%TZE
+
+3952HY%c6dA9eC-86+`"4*p0D5f2!!!Fk1-dIi3Z$Bb4C1N1ckM1-("3Re!DVq"N
+
+mdCFe8cBBJZr0B"ae4TZRr(@c0'q&SpkDS%pV-qVi9'P4-8Ml0l4&+mm$#)eAcBr
+
+G*VmS!"C66DPZipq9q+eGZRh`SdN,6*Z6jDDZ#dr0#SaLBSdBr5`*0Xd4+JqR0U"
+
+Y,)ZJQ5i@h+J`JVDHqNMeGB,cZV"BDh39N!#bS[@p0c!T8Jf,LK[#rKe6+"PM,`l
+
+I9U)!+H`G-)Y8XcXXANXaZXMK1Kp9T-KqjPb(C4+4UL[4+6+%'m%lC[,G,rUj0m!
+
+#9F+J0Ibm$KGCREZ-'+TqmQHd9a9,%TqA8daq24GNAQe0Hhj&X@!B*V-+(5@MSHL
+
++8m""*K,#lp(PcFBUNF#fe53dC+"&D#`%$Ji5ZXNb8AdS%446V4R-FG+hDJH-+fQ
+
+6Q0AS#U4IkdXl)mDdQVH5'brEREj#+$BKe'3@,iUJ(&AE0PiSFlAbXfaP'QQ(ZYH
+
+R681@+-AiEmee[BAVaR)L8,APA455I&S)U$2r[iJ8YlFi*[8cdG$PbLD0H@ZB24)
+
+b`GCEfp`VN!"$`Vc+ELJRR3C-RVHc@#B2[fLl48$89"LIR$!*rK%DQQS8SU,0%B#
+
+kj5Ab6[!#6`q8Y(m'm80r-5kpFeV@%0eMf*ckJ$b!Bapj-M3T9MA`K3UK*6CT,E!
+
+q*23d4a,ia&j#'MK"#iiSdPCTebQJf8)VT2(*r%ZiX6q'55dmjQN*kmK*U@$62hi
+
+jRKredZflV#S2Hq962hJ9a+Lpe"TJXlY#c8L59!C#(`!K5PQ9@1aRKflVBF)lQ)C
+
+K!jmbkXe`kF!#cH`qbLrEh[2+faB6HpL,3r@d6,XBqVl6Tmk*T-LL5$40DYNMDYc
+
+k9Q[f'cHNM+pjq"Di%S'fUlk9jj6#b3bb"SR*fqJ&QR&(A-4EQ*I"@ZpDfUh(Y$c
+
+bSfYMKX,MV6E45I*1KALMVhHkN[&[8@fCSJ[Y(kdELBUhYD*lATN`6!cVf,Mqp(L
+
+kl,q+E89"r-ZY!Z[LT0PJVU#('l50E)UjKj(0D*9)#)'lV19N8UjKe3j,L0Rf')b
+
+@PD8)EbKTd94E@ep9LE5&VN(q*eLh!PDZYSRc0Z0UFUZ`Fd**PH"'0lB#A6GAq+p
+
+alCT!#L&Hr@4PeHI8QaLAlC4[XZ8k"@UjG02Q*JZXC0i8%emBlD8+N!"IjU'N*4!
+
+$6a"@"459bkpaYi5Vp-6a"&K1e$h$FMFJp,&eGS4pVGVlNUqb&*M+5hXH()`(PXj
+
+%B92e'j&kl0JjT"M#LU*M,,*[XiEcKPUEQ,fKHPc!6r&V@Kb,,h4&K**(D1,hAAk
+
+YraS6XFbB(pl#%FR8q[%'-4HXY#ICf@0aPU-K[AKRfUlN%#@#9E'X9hU"d@m,I9c
+
+3e+l8EN9+RE91&N*+pjAP2LGNQ[c&X%k(l8+4ca9`VNNQmAf6&$RGNT!!ZQkc[T[
+
+'-[r`"Ja(@",UF36FT`eB)0(`3b-h,X$JcKjQ%0%5MT-2F4*1am-@EF)icqDhP'L
+
+cF!912%8j*`EYJdacD%6)ePA5X#($f9!Id,T-)V8Er6+B2EaRqSUbIj5fZmREUQR
+
+S5K,RJB3PI8j$Xh,I3Q@$DI9Ri+LZhJ+kDUB1Fm@,-eT"hZ"X,6rPfJ)DR+F[-ia
+
+[arV"([XqbU%["P15Yc5-U69jb+KkSSTfNMPUG*5"SSYY+h$SA9#"DdY$H)@iQlb
+
+d4T!!"&lDlqAI-Uc6bRHmRAP6d#A@)Ha%R9&q6ZpFikCU8hR-Z$!M[&Ii#Z,ELV&
+
++6e2aa9aQNaBLhk0f2(0G%!Z&0Mmmk9KKQkeAmlHY"aaD[9A"FAeS%a0!ep(E9Kj
+
+(SP9jVC!!MUJX('!mUT09''c95P4Q@q%-1FKAC`FYZk*%L5-3E)S88NflLEX)0&6
+
+US(4aK9'`l%JX,)KHX)QSDB##9AE+$IYAalMX"D(0UebS"C9b#ipmm&I,4D@`m,#
+
+*%LV+'dTqVmcAP#afAHDX-Y2bG"PeXAD6+S&HF,9Kh0U5mJ@CUVMcHE!kNN)%-RI
+
+k`CFA"`+``T[C-GFfhNc#AdrJTrRfbM%kZCG'd01fQQTG8qaqhMNaM+6S6&&khPC
+
+0M04Z,%ZBB9*3MZq*DLbpHdh9UBQJG--(&$JS&0bP5Ci-2HdjU)GJHPdIZ-jKfdF
+
+Q%Y*ShEkRaU![*J,Ef(1K%M69"E*1!0KTI)d%XaT!%1L&6U`4@2@BAU4MGm"b%EG
+
+Tm*33'&I[fVMKV@m*c$L&qN3m&f5R2@$5U*!!LYq[EH-c6UV0EACQN5$fR*Z3!!8
+
+pE@cYdc)hS@)XV885lhmJk8JLr)B#q&+TDSdi3QbDcXdp4CBNG4[!T@pm@VIKpN+
+
+*c)NJZ4'8J$Jq8,`8rKRCU4)$Epmd[CZk`39@D%b+i#C`e5!6&EjZV`G16%H)XH+
+
+Y%)iTpI4UA5e(Da'DPX%bjemcFP&(GT85`*2Kp,+(9H8DQJAT(K00IXdfka&BjC6
+
+UqLVMQXlJ3cSC4dFlQi'X4#1m@6F#8qI,pF-N+[fZ$cjMbbBFp29LK+[R1LHk'0r
+
+iZ$-%V+c5@H#f$DkPLr,CUpU&MeGpmhAEU*d5dfdiUJGGN!$c&@lbY*P2V@#I&68
+
+eSK!)Xq``[4L2q"''#X1VCr2Lj#QpU3e$RARkS)@Ip(cML,`#@qq%2cHL8La""GX
+
+aB`V`XpLi$D1N!Y(NJDR392QN%aGqLS-GhVl`RYQV1(lBPQ!#Lm@"EV%,&EI,!T3
+
+3B[f%lk(3a5L*l"p8HE@3!+fECid3FCZ0**bV4q@*Be(&"0&X5TcSjcfGC5)FR$d
+
+@qQTK*DbCV4(&6BI8QDAVGCb,b4$"5$SJ%++CbePD15Z!'K("-RDY@BLQ&kNNp&a
+
+q0a&SDD"!e"hj*V+DZ2,$"DXm3mI`6CijDCDCTKUeI@[k6J,%$!mfC0K9$bhJ*8F
+
+d@A6GMe`N5$8q9VIaAXdJYGfPe)9G"G"M(MHX-mH,I6F`d%SAa,'*XVVH6eZ#rP[
+
+DPb,rITLZmX6[dEh#@bqpR-V6EA8XpYCbGEUP9U@Zpp"dS8dDELMB683*KXDEJ93
+
+%kXHKV1-(cI#94DZ3!+ITFBSdeG*'Q3MBp@fU4fP"@r"#Q+jMS+J5-d5c&KEpSXY
+
+FhEi@ekZCN!!JiXH6lpV,PHC03elRjPTp&Q0S38XCVU*5PSHLk-@dMjXGdML+2IF
+
+&N!#VI6eJNRP*D$1C*316dQFcd#8jlcqrFZL0l6B6"G9@X[48TI!c#DmFZ6SFF0[
+
+NMmcFbVPrT42[E1HF,A+6RA-[eVcC$A[4ErBiMRMEMN+"qqQ)hlMeF,`bMpDiBf'
+
+N@hD(kh3@`a%,MR'68F@b1N)4kY'413&-$jM+qNlX"H@iXAeFpR%ZMNaMZ`BGfB%
+
+@cV"$U,RZP0&Ucf#&N!!,ekkqDkm!r0SEIJ'L%('C*%,80Ph1I[&)5$dCB&A'L!l
+
+iF1$9DV1im%J(h88j2aj+9dcTm#e8S+0jH'XJbLk%LedH5%6fIAiNhcNa!kiIV9M
+
+(k"3,-8r(Y'(kEK)T,9"G()`@q(j6Gf1#V,lkjQk`D)pAHqS'UCS9cY6bqf-ha"P
+
+LA3KB4faaQ3N[(aLGch(-A,e,G,(DFleAdlZ,"LPBa'185[39UfAj06q&"0r2$Jm
+
+1$`rp`*TrR6DL1fl%K"p8$AdK"cDidq[EM)leNdc#kK@jc(*jLbA6L[GGYS-aG&r
+
+NK-ShZNm1&`d3NK`!k4YJqMS1hpTKLETYeTh$)-GQmFEC9%h,LBA9K!(4-38rQD'
+
+Y45*b9"AP&A&")9U3!&(GDC+qe&6me'#QlkQBe+BQ#D'(@9Qr-Zc5LDE`1@(l2p1
+
+C5A3q%*qeS`F+NB![1Me5I-jSM`UaEFj0HPIZ&JUj5%*FRf&'I+$S-RAhVQPfGZ9
+
+&ClFKHF1L3DS,I+CCdKf!FL"H'bQXZTlHS$JS[HfJ!c%6!qZ4Q5PM+PafPbZ+p)1
+
+,#6UeFP&ZD6%[$*!!PZNm4Ad-@T!!GAdX4'$ZH`(r-U%daI2&QC9fGQHmcURfZG4
+
+iM#+'VdjIfYcrUAKf"1ME'kCDXZkb$(qFk#9GpSSE"KJ&KF**dMAFmeVI@HZ'Jj8
+
+Hrl4G%P5#P!A(0X"18!5LUQ@,b09TkH4*0er"6rR!3MQ4KZpr`3qr4)XZQV[&eX-
+
+`2D#G#h%,fLIjk4T)Rced3FJY*&mKJpYKU*5Lrp4$`FiDqBA3GKd([4$UPXZ2qMM
+
+Cmj24+2X(1VRV*r$5Mp'dZ-TqL'l&8db$mpQlZ#k6PJ(j6SE8(AFDS91&r`9mK0[
+
+eL!5BA0%2I%83dJYD@1a*k@e0Gk4@`(33aLfS,0VAka$XI)&`GJ40NG%33lK,3%l
+
+0$!`41cF-C5a!EU-3JK'l2V&cUBk)`cGPmN%2YR[IlXS-C0b1N4Y+*+B`DSDejG3
+
+*N8K+NH!r@BSZa%*E5Yp*B@iAN[+ECMj'N9b4,GqE-CT%K"X&GiH21U4YmHi$(4K
+
+K4NDE+UfFc,M9S*'bdS@qhXRB+2q9N!$T`Y,YMDCq*beZCD4Cc,,%`NMAZ2#AL9J
+
+'S0%T)#LF!1Q*S2,U)M[l1-J1`i[2bkDBeFIYX`V,k2"0YlrP%dBRRq1"[+11j'2
+
+VX-Dl12(ZLk1ZfMBK@f`qS3$eTa6')kCF3b%m@NeP9XG)q9ZNU(69fcDjC-CH)PN
+
+8i9S*"%LLdFdZe5[IH+XIAMGC&a5L'qK0hHpe#h$pdC`1`T&*phXUrhEE3b6`)2X
+
+ifmfHC1rb32VAG)*Rfed+cGSkS4ijQpE9S3"KX1HDIYV"8GZTXCdldRU5Ra6p`3%
+
+[e0&[i)HEkI6M-8B6U1SF(EKV%6&NUi-Ka%BrVE6H'MEBij9Y931Gi(h3IH[Dar$
+
+X!hMfiqb*GkfaqFDVUp013hJfQ9EC-DASY5eE6AC3p"cB+kc9RqAZDa2I"0Q*4pC
+
+)M59D0%Jq9a-R23l5eL#Y6K2f#jH`aIUbIl@D+a6Qh59QFjq`4GK'@5(L0)RdBPA
+
+Sj3[E('+5,ABpT'bVPcjB!J3#GV46H1)q5L*@mmQ*(Ph&KVZLq"!K8JY(*,BeGX*
+
+,9bV(PmZMBpeT"rACP$&a+X"SR-*1EY!m[fq!)8I2Jbp6PDb!MUh+[cT,0ER4jkL
+
+,ZemNELA+ib8VR3pE+V9QjbU'YAJhN!"hHS,2&eSfTHjDbpG#9)EB[51ab`-)ZqI
+
+5!8hSkG(@2kqXFZd+AP3I4-H-'8eB"3JRMfU`-Eb)GqHZPDQmPJ[LE8C&Rf"aJPX
+
+JYB4HD#1hlLiGB%fa'q@pYXR1laV!Z`bJ&MF)HG3YcriS-Z%QXNrZXZ2*3U,`j%q
+
+1[$HJM[JQB85aQi,Lib@p@+"mc!4#de!HQ!FqpUVpfK&r#LPQrTZ3!&,!r`ZT),9
+
+4-VR$Q3T9#9ah"jG9F'UM8,Y$QJ`*LAVp#G!*S#rT@JETH+X+SU)V6IKce9r[G!c
+
+9qq1[DLjmmeV9TG0-#ZR)K)1)UVA-0#,qFPJ#Ca"b%m#cSDC&LM&q)FFJEZ(X-5)
+
+V63$5pe9NUbGmd-Rpedhf,rQRH04a"lT*TXqh*V1LrKjFA6Q,f4kCmX(`$"rR(Bk
+
+mTF%IGmdXJp$AkVdFc(U!&[QRCi+"&imqm!IH[NG68Sb)Kd$%BMQKISiaFaRhmJ1
+
+C'&iqaA*H5)&RriD4R)*'NAQL#9H$i%!0[5LFX0*PFaQci5%L3MZJAVambVk$X9C
+
+q6L,pSpljlCRLCN3(kl6j'8DR@"TD1p(R%qISYXKrcLqcraK2Rp+BpcpKqmdR12S
+
+C-cLNl2[%%K1J1G1%&dJH8*V5+C-)*U3891TRa'`bk-XPIamC*SmCABcRdrF!cN0
+
+Q"%q63c3M98)6L%Y&!KLKfhZV"DD-`2%JVF,TI@*1DDiCccl#EEYmc*e0!c@R$(l
+
+`38D+-SE1NC0bI`rF(jT33XjaR[BaEfH6I"3TV,bm![Bl(hhhi$Z(cLE-R9$`iH'
+
+(EVc*RFV1$)Fde8[a"5#k3PQ*afH1rSa(e*LqA"%[3fZiMAjf)4I%`re`&UeBZH,
+
+eD$c1jYk64"mFI-J+9FJZ)a93,@$`4#8"HNN`hbb+R%mab5DcH,`E!&X-k#f&*K)
+
+%qhKS6B"BJfli'5%Z&)cYB4$[b43L#3*5RJjp*8)cc-K-cmFZd'B6'+N(8VK(Nci
+
+"q,[NFa`F,mFXic)%Y)b3!#YNlZ`XcdZ+)MZ,R8%jj`c(-jX2k5#aD,G`P$`6rBL
+
+S%%Q+Eap%$cp#YHh1G'ITq2i6La1I,i'3!,08#De)d+S-1*QM96`NiM5Xb012A$L
+
+)EGNGGNBq$-HabfR6eK2p8f4hLF04k2JSQLZNfR0Q3Vl")SNrq*!!%+09Ek9bRZ+
+
+*bUa(3jH)%KQca!GjYLc8%K#Pak2Q`Z#%i!iSIPrZ[+UC50al0rYEGmR-MbciP4)
+
+H`T08Chk+,3`dFh$D,r[C-HU(RCd*cm&KYE*@86bac`0929PL)D[1k5e'!Gck2kk
+
+Am)$8dD2ZEq(1)4cGK)mN`PJ`ASDb%('-Pr)*$N*4!d+B3K0K+1G@SKJeV%-J#,V
+
+9hMh"`C)5R,8b!I1U6fGm"p$hM8G$R8F*1fIM-5ENp"fqZCP"4V'ATZAA*[Uc+qM
+
+023JNb80HCh&8I)Zi%3hqB%T(FC+2UI'K*T0jCrq@[RS""-YH5m&HmrmbU4ae,Yh
+
+rJXm*FQ1!Zi6jI`!!$39dEhGPFQjdFQ8!N"CpH3#3%*BN!!#l,J#3!iB!N!4849K
+
+85PB`-3!!VC[q2DfErMd!N!B%%J#3"J(e!!!'p3#3"[`2#U)!6j!!!8a'H#SjI"+
+
+fNPr*J&k%N6%McmJa`JJP#!"H$AMe*#[!B#8!9NG@3XP+d)pBi1Z5VFGq*Bc-'%%
+
+G@`NqJ-1k"##R'-D)$P+i8(aVi10p-Jce&JGl*SBd%@cAHm2(`S&`J!Pp-!VD@A,
+
+pV@RND+$p(+PFII'cfe&m06l4+'U('&`AI!TG%*hi1N`B9bVmJiBjXMQ6bL`'DF*
+
+8j4&ihLfH+UjMK'K'ip&@rki"&ml'M`*e"%9GBESCGq"$!Nm$-@-dpJVE(Z!p+&0
+
+J&@+5@-bFB+58,9-iZ5$RIVf"-+FUIm&V9p"kkY-NS-,$+1J'11&`l25+Ih"%iMH
+
+RB,3FH#b[20hMAcir`i&lU`mf3r!%,#PBbX2+dPm6)22XFXN5PQk3!(FaV"U@4V3
+
+bIdpp(LeMj5iX+-P!TcH*bf5!I[ph4a@CN!#P0'#(eNTq15Y!'`Rh9jRKqjm(3Jd
+
+Mm5Pi0Y)`(%*8#BI(h(&p"PT9X*!!iNbP&B!G5Ic`891jj8X!PfJ5@Ir5IY0YmiK
+
+YYf5dk9V3K14',UR9&YXFe#VMbHrIILR*T88cMe8FcD%q,Cqr`+FFq1*HB2938lJ
+
+rJHY0FFl[AP(1qCEI-rJ&pB3mGHiQ'9F@,#2+8CPbQDfTXD$m@jje(E-BEEX@fkl
+
+GbAGS9if3!2[Q2`!!$30dN!0PFQjdFQ8!N"DR+`#3%,M*!!$!T`#3!iB!N!4849K
+
+85PB`-3!!V$eCJD`p@B%!N!B1(J#3"J8*!!$&&`#3"TKA#k)!6j!!!EaA-Z$VNH1
+
+VC2d16mpR'5A2*I`P%dS'M$b,i!QH2-$U56d!3[(RFi"FmrN4(N%r@S%Ee9PbAhk
+
+5-5-$6QEm#5)iRKaHS&Q[AX(p%e@NVN'SFN0EVBKQJLH*&U#e6QT4NKVbKX*"E%'
+
++PKPiN95+l0+9)+T+''FkB3p!Ipk5@X)5Z3Cl3bPVFS#X5"k%SLJ5mJ3!H8LY++N
+
+1k8j`ajC,aEL'r#hX'2pI!Dd@XR"FQY&+4S*hM-+D026)JDjBQ@ZU'r&%iI1(4T2
+
+f%549VH#!MS#Kqf5)m6N)rJRIr[A%1bpCq@JpDFJM6E9LXUEYXbHPD14@8j!!5U`
+
+9DEjUR5e&3RPP-hML6X4@)aYL*!cDlDV96#1jKd-qR9h"GAB$Yr-&6+p[BCE0iHS
+
+'hl)&A'@hRDJ2h%XdBX@ibrj4CXidEH!1PM(jCkUJk"`KBcp983GY9P4*'1k%UJ,
+
+imMq#iFRU894QdaDNF+&"d@TEBX@B#"1CY[M%YdiK8BSFY+KCUc[(ST*3&FX@LdT
+
+4@f%ZlJ(48N`&qZhI1`f@TXZNbrGC"rEB&aN0G5S`qQqa0KQTf5pGi4j,YC8edff
+
+T+193eT3SrlCK&G9ET@ZRZfBFJcqH6@#F63UB`(3f13)rimBh#*`LF2%*HG8"Jq@
+
+4`(J*b`f'(CBejBQNI#Z0iaD(2qE0`"PI1aj$8BNG0c0JKpBkhL$-MJH6I"M%P2`
+
+kK4PJP8%'@'B`Km9[L@rE0cE'X#2iL1`fK`p-BGk(ldG&SJm52F4QD'NTH!A$qp%
+
+G[$1JplK[i(jC*19'L*B'2GmMLT*bBf[hDl$m"#UfCKUQidADGDERGAYSd')-qeh
+
+M,$3`,#K5P4ZL%#@ahbb9(3jK)&N@-j'FT[eTA*`j41$!c[BFcZ)IYjZ,X4HVK)q
+
+9R@2qc@4R)*k*!YJ3"9*,Y)pGp329)+38R(,Y0dTV&IMC&@2K#[!8$1FA$LQhZ0#
+
+S'"EAMReF6#K$MGSmK'S2AITrK1'AQpPQ!Kj`hm)%*d4ir3DQNj&M#Q`2@*qGM0`
+
+2#[pH&-B@h`PQC""i`QUZV'9B!PffHKPaPRL6rQMpQ+,[AXDH#e)FLmX`pRbNY$V
+
+i61),GKf[8PbNGNQBH+"AY*%B-N0mk(c&aq+&e`bC[iNacirrN!#5kSR`mSY,rY'
+
+3!*UVJBY52cRc$+Bi#'jKJF2J'NI"r"M)k1aZ)cSYYFEqLF23DKXJ5mV&cTVJ-KC
+
+%A*!!3BG[ik(ABkXKD,V$+HcBX(MFY%8(l%qhAV[ia1(!edCjf![f&F+r6hA)5S#
+
+&[14B8rj*88Q*TPAUl)LVf"N49-E"(r4pb%MZX$CaL)kQAXKM0RS4I`A%FJC"&qp
+
+mBmElaU8*lK#VLpp$(@RlX)ADm9T@5*hDBRhTK*2l$IeSIXHrE!kTB`YCaLT9(Y+
+
+HBKZ*qZ$'B48jZeMk8Ji#HT+J`FhF6Pb"M,6'mmH`&&[F,5'#Gr$k)pI,8HaF'LI
+
+9)aa88l[I!2l8Rf![Rr!eHBE(hI-'M`H)F@X(F1#l@dBm,2MLp*[+KFdrHSXY`@Z
+
+lQ3hK(U@EIh'mNjeBqk1%hKMYeZ,"5Z`MbHQd)H+4JUJ5EfCir*Mh"2[6@H-kLh5
+
+ZbR#6j1'k-F[5$&DNI(3[LUdh'UmThLPA!QJ$KQYm23%mcR5B'H62L#[),b3Se4$
+
+MmDE$C)Di4paBiKjbkiM(H0hT3(2$I)BX,,A&r!F!!#%K$&9$3L"-EfG[)$8Z-`#
+
+3'0m!#`(0!C%!N!Dl,J#3"iB!N!B"J2q3"!F!T-,-I,TKk$`!N!8#MAJ!N!DrX3#
+
+3#VHU)#!%C'pMF`#3'rk)!*!$,J!)!1S"R!#3!a`!N!1'!!Uk8`#3!aB!!-'(!!!
+
+#!!!a!83$!,H%Y!5hK,C-!*!&),EX!*!&#IM-!*!+KUX!$3aeBf*XEfG[,QPZCQm
+
+!N"05jJ#3%-%A!!$1F!!!`4Hai,(J2j!)!!#hK,5JYi5dS3#3"Ki@!*!'$(N!!)j
+
+S!*!'X%J-SS!591b9c2D4fq`fIXc)#%ra!D`GRM"m2X0rE1di'E(hq-8)Iq@a[%h
+
+fN3QHS"qT@-!9J%@l#)mJFUq%(Ki,1"ddrr2Mlc[qI2h`rTHRRjjHI[cdip2IGlp
+
+pIRViqZ(aBIIq[lYIhrhm+06ZhiqIIrrip'QA[!af2hjqq[AUkqq2RhpppqRVZep
+
+HIRRmcmHA9eGrZ@Sq2Acmr2MKbkZVjaHp#&rYmZ)l%VhD*@9CaYqTq081*[Q$5Pl
+
+Y`U5-bT)AcZpqfXh[h[rbq1VUVqkeIl[URKiHAqhQTpm@hVPqE,Tjl2HRHQlkENN
+
++Kr9[cILf-HFP$r-,FQ2QfBcrQ1brZlI9f&bhCMIGGh0eYd4&jZDB$VlTERC9Ypq
+
+eTRSVhpVqTPr#)%P+Yi6qYHQD(bVllM!UF`IZUlRD6I2)5NkMf3eMFfcQjUfCPV#
+
+)JqJbTHklG8Br#TJQk38mpq-HS%MF1YTQQTH`$&)hBC)&GE8"LX2J!Kf'Ndc*mX5
+
+0AB'L$#p!0Bl9r4)&!ITDLH2H-8ASTXKVjrl#XGEXHIVFff9%BCUlCG6pmEVT$%a
+
+4Z)f0"[&0-&'BHr&edrd4*!QF4#I6QRAr8C4&ZXKQP#G'T8V&%Jb*Sdbh9-Q-Z)c
+
+GM1[6I"QFK,SE"c%l5IAC81[i0!cFGTVCX*XdLCekM[X,8ULJKUCq[E!#pC24((%
+
+C%+pUN!$pD3"*3lH%0kGq0RZ3!#*ffcZHjQVGHakNEZrBd[VN2#jdd0j6HH#Nq!"
+
+d@ACHCZlT3PdIm,%dH8E@k@9BZ(F1TqN@))m9k)FP$N*eJ$FRFc)3FHNf[cH1b9A
+
+2`fMf69h0f"SQP-@EHr'F-%kGh-3aK%M9d+b9#*+VI-eaQ#e54Zl4[,PU3D)`FCZ
+
+j0SGq0$"aQ,RY2CJhI2HfGc6(Dc-b!ap`$jj1ehJY,LjBUSEBRGbS8P9iAG@[*qc
+
+KeXJD8E&E)`SB'ePfQUQ6e2fTQb%+h9!ee8fca&QS(MY@C`HPT+$,i0YU"#KMG@+
+
+lY58QV+KrpfFceK8f'ZGCj#DIKN'T)Y0%-"09H[`Hk`MFQiC+2$JZm6#hLe2RS&3
+
+AK)%I6je)@B*-A")KA-)CUfiLZj!!KUBP#6B,38[cJX!dE5&HXb44(,VY6EIpH8R
+
+L0($+'%eY#%(b%[ET&MHDDQmM44+AZI-hJ@`+5T)XF`m5##feNM@502[f!LZR*22
+
+a`%%m0LYbCc+)ZQfA*2G4i0!3!+Zk0K16#NCj,mEI$XhGNT4Ki*kU5+i@dJqQNmF
+
+#5FEed(R%H*FdL1*RUN+ph4iX96-Al$53!"PP@T%iLG9YMdlaRe5YT@eP&NcZ$8L
+
+Q!!+9UAVTL$h)CTFdLM6Kl%Qla&fB4*r8pCiL%2MPfj@QFDK""1Dbd6MAT#C6-#h
+
+bKUlH$K%N$IpicY"2B(Qm5F`1XacVm`RU-L[0%VIQE9$K)d0r'"E-@"mU+aH#@1K
+
+FbBc(TUYD*h&jNK[rfT!!0r!4PA*0dKpRFcF[+3R-Cp5j2Se6cdlc9!1&3iT!pF@
+
+JBcAH0"h2,!LQ(T-heAdVmdV5QBDJCVipNXrU4AES0%8Q)@I8BJZMGH3*(-eTNMR
+
+b28qeDfJ1"c2D-L!,5Kh$eNm-$Q-ImYD1"#EA&8JbEHJ5&X+hlT%%@c@Gk$U,-$A
+
+h)+Dh28LZi9SL!-PA"6d5K[B3FH+XEAScbSJdd!3YN3BL+c6Nh3em,c4TdV+%`C)
+
+P2KDh(CqpM8f0I#H%DEcDVdJDU6JaLLca*XQ)&5NfmG8NTL9,Je`M3d8CFU'mr*Z
+
+*H*QPHD&acJ*)F!Z49V"E(LDdD1aTm4e@R+AkJKXF$Q-5U0#kJD5eliqA4-S,#2Z
+
+U+iZ#4#UX%@qi3)PQ(K[+GJ6NBcA2C0dP+`)Y)33$S)"b1EHCcbchQmm8T%+2mm)
+
+&Gp3!"S+&C5@aca0h&XNdHi"d2D)[5e8!@ESjc%XHq#$91S63ji@2HYVRID#"60X
+
+RPS'LICJDkI@Lb-P8hTc6#EJeh)c9F0[8[)%mVA(f0-l%[51Q4p$0m@LYR2VaA*%
+
+hmb3Xh)ZP#!$JTdU@P5@jqXcBh0`+8@l&h#`T*8qr"DHlHiK%LcSK!$"+$mL%,DH
+
+DqCB8*"V1UCXFGYXI$B$2&[J9hl0)imlcJV@`b,-bFNZefd%Sl[YG,8,D#UIl&5"
+
+%Z8Hl4H5EN!"k8BZmK'l"lDbQA+K[U@8M,C)Zqj!!&[9-T1M28RT5eVC-569&5P1
+
+`6J)MEEZ(0h[MX0+A8j,5%'p*Ar#FfhLq)4[RCDk6cRJ!!(f'!q`1PL)J`cVKfq4
+
+%Ck)Z5SKX!4+YBp[UfJL4Pik3!$ahH@m4qIac1,@YBSPDdc5dMBk,)r8F41id8m5
+
+CMU0L'!d&A8(eSCQ3!0,,8D8De2r8j452Z'M@[EUk!54*YENcRCdU$RGM8j[UXL$
+
+NDPLMU@$f8V#)MD(GT#M4PJjL)#r15i("Zb8#f4)#+!V9Hk3T@AYK1YAif604SFh
+
+("9DN"4*Fe8TkAJVDkHrMTZB(`A*Y#&CX)2QBNC@9`A1E!3Q5"*[dr1iKUGFfDDL
+
++F!j0ckX@KS95@R-P%,(B`2LiTkXX!e+UJbjl,!2IDEXPBQhD3-LHbT!!RR#,)*F
+
+PNF1meDi(#IBiSEIZ,0@dh"T-c-Ne@c2(#!K8DZdK%eFS5Y9dc$"G'*q*+1"H6d0
+
+9NbHUVVSa4bN+bUh3Se'ScCjA8`mIQSi6"e*9'H2r'K-@4+I1DUH`m*a(E%kkP1M
+
+BHEPik!VCia#AjiGlKR0m%9"pA5#jhUMNI'0lI%M%e1FHUpFF5!4F-,KhG"Aj#B,
+
+D9F9!j"6%kp)LPpN4cB[Ee+f%)"#IDpNr@A@qY`8h*a`"VE3UAQ#3!-6(jaZ(q2X
+
+(UKB(C4VhL3YblK%NT2%rTEL9$+4TIhDJ@T6(T+N@"ATlBVPFdrqU44TZ%Bb@eb)
+
+3Lb5U%,X0bf6DLIKe1+[NMS+KrV#&ka5VL*`LA)mZQ-4G#aF%ZMAkCEBQ$&kV6ED
+
+K)a@S#&3!ZPjj9#(h3AjK&XPm#q,8@*3DX'A-499PT$BkY)l*)VF4#P&j%$VA-1k
+
+h6E8hF+pLRBCITMdlGd&KQ1Keap",)`Z5Dq,Ja%+H&CED*Jc5F*!!lIRj'De&8,i
+
+I)J#*ICX"%IYlLi(Q!b$@$J*!AK%6k[rFS)Yji0`&2GI&)%QL0JaL0jL3!%)9X4[
+
+NC-EYP+"PL9JIbJbl3DTE2eBf5%rUbfQl3@S0p`kFi9i)5Vk0@"H3!'f('8#VJiH
+
+jMdbRlM+H)Na2*#bc2S$D`JPMaG`6++Lq14-H&aDFdcaENb$d'6VI3@36[AZ`&LE
+
+$bp4(9cb-Ll#!4+#c(B-8[MZGT@KeR$ki1i)))l8A)@bEMeP`3U+8A6$R"4V1H3[
+
+ULiKS+VDp5$6LUX369U*8j"XLjfX*BYYQ#"&Vr*8N+86Q)c5%$+(EGBJN5b(`)Zf
+
+1Z0pKNr4f,J69mTh#F-X+'*+rPT2GN!!3r'h+aE"3TVqa1XR#8+Cl"3#66kd)Kpc
+
+YKT1'D&U&SIIh6Cpd%!,PZPi'VCFm'+ZrXQY)R06EQYDDJfR&+'0F3H9[*%&`fk5
+
+"L9jcj&)+T[3ALSG$YBk1)V@MDCEN&dIF"&`)lRIXb9l-EP8!e8a"K,p(fRM2Yb-
+
+Y9NJqhPafT(+J13MdrQDS6[E&90ak8S+BZ!X3LU*6`f8PKK0c5+D'H#mMYTMeF+c
+
+ZVifZKe$Jl2HQ*q36*RbQR5YL-V@ZPX60MG4A`T6D6,arpq(R&rrkq[6PF3Q6J,,
+
+-Ue1!-R1[fIF2je[VI3R'iTkN5+N(1`a#`!e1`3QI&U++&1VLA--0,3(ka6@TCbp
+
+hIf[Gc*6%DjdlRCC8`F@!ZNl6[HAJ%mEHThShU85I5FNPK"B2k&S1#r3LV4Sia)1
+
+K,03q[U(RB0PTc"+9SHMK6#l4FSfdIj,%NDDaYmbaRkEeM45lqGAiq+1(AKbHRVj
+
+m3PF[3RMD81e3Z%(M@!H)Na9pbJSp4![91EA-mpNA9b934%$ITmJMBFJ`HRYR)@%
+
+LM682G!X1bcN)Hal2dV)m6Ye$,F-&L*6lJ2jZdIVCQ[SRVMY`&'iCp&4JTHXeUR-
+
+8S*f3!-6cKKX#e`d*,X&K1k!kF`0-r3G)E(82NR1keDBNM4'F0FRae)THM(3CD5k
+
+3!)l+hPV),&T9Im&3lEZqQ4Ta$Ni!p%l!$YZEBEjYTBd4H#YM"6ihq`fQh2Ek0a`
+
+jK9`"q'Z"Q5XP5PJJVK@qCGZH5XFq!H%jhFNTcad)%6$KUYTmHZ#UqR*CII9r!*!
+
+$$3jeBf*XEfG[,QPZCQmY-3#3%G-F!*!3`BF!!3`P!!$"&l(JXL!rN!J!!,H%Y+'
+
+hK,5Q!*!'`dN!N!Bp43!!crJ!N!BZ8!C10hNm3F8')*3-f&V4NhR*h@a,fmmfRKU
+
+HRK+f[M(maq`f1`NlI*lVZaNqA6Pq30p0f*DJ(ke!A9I@erH%Gj,*2V)PQp`qFTZ
+
+JJj0cZXRM#6*@5-Q!di+d+eCNm3KN%8JiSEhYNac,hm`Zpa%1b@eU%kk%1GRVG3Y
+
+Ef)EN)%%r@S'q3GFhk,,[c2-UYL&I)T!!h#C3X[6N&J)***!!%XJ)8r8F&5l58Z#
+
+rihLDUERUT[P-lBP9SC)kPSQBVX8bqLMTUm'9,-T8jH,,lS'B&@TTeD8XPP&H4eQ
+
+hNMGTel*qDCfPQ6cq2-eJT"*mp%LYk,HYQqTBZ+23pdiR[G$e4[MS35'[MN8R5BY
+
+Gr2TiCAjVV'Bp3a(+ehGE1*L*%ePmP*PFL`&Q(8b`MF'3!0I4@&k4cY-mbX4eN9D
+
+9c,()'q+N5+0Fp+2L5UiYkk%BbV`qTKrDEG`iaJHhlG!@3HMMNmHq)mDq1h4$pj8
+
+6m0Hh[1&`-R*lpZDpCGm0qd-RG([mmeh[(&rI&GlBmIN4HrHh[MhZZchpia22Ia'
+
+-lCiMK[E)2RH'cLJddh%EGp[alEf[lCl[kCp@I0rcXC6l25F)h0%jIl3kGRSZC[i
+
+'ZeJq'CKA[aUG1UrabcYN6Y"S%(f$JF5V!CTSa5q0jHB9dmB4i0Nmh2lVX(ErPH1
+
+rFTd,MBL9-(6m4`(rUG9KFi2Jc5LdD@YBp6emL"82l0'T'$Mf+rS0m,V2AcrbAMJ
+
+Mp`m0$YmY13E2"EmG2RFmJ3DAhAi#TJ%Kr@-UVkhIQRq0e91V0IMRD58k[9eaq09
+
+A4m5M4`XTI$QAH985HI(RahR+G(DdTLpZ49Nk8d@H4SEh`-,I&G'5q'qlN!"5P'T
+
+@A8H&I#E@UKBaZ'`NNl5XLR4D9e+NPBMbj*%Ua&)Pk@b0$jSk6m#+R28)A*f$rhB
+
+d%HFbP`8BmN%pcG*B$0*BjU88%HEQ&q1&TRmmejc4p+YQqX'C`P4$3[NA3UEiIV3
+
+KjFqE!AfD*B&Y,%B9,@aNU48pHJ9EHL'b#!Z*Gk%FTJX[Hpd8DFic298VV2%TTX'
+
+QRkGC*UC53)0XepQH`%[0"8MirL3%9ra4A0LqEir#0mr`dY&#eC@3!&H3!!'FBfH
+
+jbP+-K@@1STbae``G[pI(HmXRlX!0h`M`kadh()&I"fIiE9Q-E4rXrRKJJhJIqf-
+
+[F,SL!#SF6Fd2D!+HJ8D!CP0@8CU9f23IJGda0V+EL%9d*B(K$3NDf)6'f3"ar"@
+
+LZbUI@l4A[&4Jmi9)Cb*Ae4k,(UcQJ!Gj$GiPiHCaGmrkeG-RN!"0ie,B9m$VV@J
+
+j,G*NMTqqYXA"im1MVrE%*,!EL%U,"8i0M'049KU01rQm%9cA"'NadJFq`TXBI5m
+
+Y5rbiC+9jR08*26C-j0FeQ'#3!+LiAS)DY4QmV9P0@i+4a[KfV+FPm`fc3NE*f[U
+
+BUfZ``R2DG&,(2U["*D,#`9)@-P[Mfkf5DCG`F#!Dc$$N2ULEM,$9MYpB2ZBEp04
+
+b"IiC[3rL91DaI%q$r5QSeKR!mBh+X*3r(4kr&qq$pA+U!0!rk4Haf$q"1CYEZ6R
+
+S3$a48Sc,29)%[pPPDKL+UUi8hYN9B%r*@&rN(Q-*%'rNFV@)5Q`+,ic0T'!+6KV
+
+VqKhf,)Ka`H19M'QJE4P903E16@rLUkfiSYmj+I45)qMI+VKj!e3&kD5j-08kIKS
+
+Z`6+8+2qd*dipU,iRDCkSDqb2d2SkLX8+*)iYlS(90)Mpp4#I(bchScM'XV'98E5
+
+qIq#E#![RK2[eFJS4J(hXj0JQm(P!I$lD6q3XcF')`!*-##ka'q"Vf[a"!98%#%'
+
+T()'!4Y#GH!Lq`6#Ibd,9jHlGQ`mL6%B)E4@&+[31$eLl!2`MGFA`e`Ed!+Kj2mQ
+
+!`@i)i0ZHiHXE+JI8`9i82RKUUha'#pQ,+Q)!dU*i"qL(e(JUFce#VK4%K#A[d1Y
+
+'Mf1)!HaN*+$TS(Uk`4pK+F09QZqAa$lBdM1CThr5Sbr+lVbl*piqrZ,S8Y1c)#&
+
+jF*!!JhDh#'9Ap##3!%Q$35p`c5$M06M[Rd3R9beY%0!$H42,93@"IBA*H![NMTN
+
+JP'`+)'G`VBSXZ3IQRE3SUrdi)c@aNfY3FN@%bpB0`8%Um3L84[dh&Td5fQ4j2"k
+
+mZ8FVf'@N5#cGD8MX8`LE6l%FU"GbI'rpQ+#!P$V!CRCL804HADEaRMLIZ1@H&H8
+
+T8#R*FaK"6qe+)'625)6MV%UAJ0`3Lli$p%%X8VHZefX@C!$mL($4Y&,e4jIK[DP
+
+JcX-E9b0YKfT@c#f(hdSSV0'MJ2mXG,V+B%iIiZ@raQ,!8&f$T)j*jBqeNh5ER#E
+
+jHX9#!L5@Yi`PFKP,jS%+El(Q"SJHfKAd-PC,V50FRhb"4rqafC&'f)m!Z)EiF`M
+
+D*13Jl*iUX!NqKMMPHlXef1NiAT!!(i%AT43JE!q+C)rjMFj#`q)#L2`+R$++3*X
+
+B&a5Q&4Ze!H53!-6lqaKJUi"ZiJ#$DVdL6RCIi,$1)4fdUUD3!"ZY1)3`rh00V)I
+
+YlZ4AS&c*U`)(VG%X%Zb2N`N[r+&T4j4FKX5Ah[ecV63SS'e((c&K*dfeR*fUP0P
+
+-Ne%MEb+5TNZ0"9*4Cd6j#pKbpd*i&3q$81c!8laYh5d*qPCE@Z-A2Q(+@q-hm4X
+
+KVF8#8a3'hFZ0ITJM%E@JhhMXLhCC6rDpIAqI(l$e!26%LkB&-*m3-SC6JPP3`2J
+
+j#iS3V-r*T*!!48#Y3NpV8c@iL5G[@(-B*2+hM"Q-ZL'IS*F`'L"Mhe'V(!KqV(*
+
+12'V84l'hNl#G`'h[,-%DH+r!HQeS[h!HJ'ZHTU!INX!1i3LE!ZP4TYlJT`Q2m'V
+
++U0L)2Ykk0K`'--#PJL$DQ824QTKUCU56$#e,raJ'S"q,2pCiD'KiMp2"iPN%*Hk
+
+89T3Y&AfmH`f"VCFhSP,Z0LL@L3"bI3k,5`aY1`Jdk)Z'4GmfH$%hq*cNMqd$ip0
+
+Kf5Ib'5CA%5`3ESZ@Mh#1lmPRB)p'ViQkq)9j-bF66caRZfXG5$E@)X3'1m-hA8L
+
+0MVb)A9YQEX4ib0qb,lQr*k*$2aU8GV88!S)i"E4N!ai32j3(mA%KKD@0fI)M'63
+
+I`Mkd@E,"%E)3P!EGFVKi8T!!ieR1`R'P$BfB[M(J0PG%rNU"R"Pj`"@R%88FPhI
+
+dVL8%AQ$m`@c$X[BV!X'iAUd8q@UDcmL,P)Xe`MB#jZ"kES*E+H4A)C3*QAd5)a)
+
++&4U"f#@$i(l(G2NNak5*QEmiK$8T8@fm1Xc+,Cl!im2T&&*f"cTrNp5$b4kY'41
+
+XNemb-1JbRdYF%J4KHlpK0Ni$BN2"p4ad0!ie-36M9G,Z-))`pckX!5ah)9&9ZE0
+
+,dQSh!YCb4X#bqE$cS&&5@e%"%lJieil2+V"!)[IN0AE&!F'@0[-fK8QSERHKA9h
+
+D'10McE,d!%lDEFe@9`*kN!#Sm"jJ6KaR%B4XCr9a32!Z@'aBN!$YC90aNE!Z0MA
+
+*iJAAU`+DRT+$UVF55!IXpcpI`,cB[pASSD8lrVhRA$#Th[!'Ti`c@'351[!(YQH
+
+3!'KJQ,T&D9C"!4#(pi@%JB)&H#r&h6@VdiqZD$'dD)e@BEPJcBF,X!*TDBNpA*'
+
+BdJRM5UXQ+N@1ZTZY,6DB1J)bMmceaPbY*J*S8CY-aD)JY+B5`&Hp*%#CS)ZGkS%
+
+aPPeB8ZIk'rL5Nbq"+2'p-bYa,Jb3!#5*DbTrL*[p"a8RTH#2d++AhRV'K1#ES3*
+
+``-A`ciQLN8V!dp3pqmhhUG&Hb+U,%04b4XMr6Y-HYY*LFP3$GHhN"c5C!qY!!5Y
+
+Br`Z3!%P$aKiQ@iGT3Z+MdiR!cJ[HN5)ET+4eLGJ82"PXpXPLcBr$0GX`'cDQKji
+
+&a8[2`Zaaj1jMjYJ,[UZU,dd1k-hU*BP[`e3Uhi@G)Z64$@h0)hqci6IcXrC*-aI
+
+f#9TD'Pc9&hH5`K8&+8I,M"dKHr-ANbjaUHQH4NMc9MZ5*2K*fDHlT+d,KCR'!#M
+
+I-PrEA(MBAS#kX+X*K`C9i$fBkaTj6#1E8h9J&'C&#&IAZKYL`SEIT"U+m!6qNcp
+
+JLJ8Qpd%"SMeLZ(-fTcf04mp0PKA0I4+SeV#YD#ANmK`qj0NM6i`(%apaXaXXfqd
+
+VC'mH)(l$,qbl`8jJ2PdCRHU83N)UM#ADJE"i!CL0K8,!*INScD3e25T%Z'LcJ3m
+
+%rYP!1XL&qc-fJMa&B'Z00fNl)r-`*Mk$IV,0&YK#ebY#02K!krL%TLed&@aliK%
+
+*YLPMUB"XGJF@[!FM@rK!X#Z4Sk!S`lG))rQm`JF(,TjMEhZi24V#hXf&jaJF35E
+
+3SU55@iCMpNh!HU3q"fB43ZkXrq)jCIK!JIl!!Q+-J1Z+Eck2ReH4*cQiTL(K3*(
+
+hh')[@Y,YGURmieaV-ZFV$`6*VCI"81LcJNi6'6r[+U9P8U8dDA(R*SPB5-QJ0H0
+
+VN5@HA0K+)HLJmBi*rhckN!"-l@rF8qF8jXPbD%d#,(C`dIF3$+1KJVq4[a`dLE&
+
+EhJ!K68@pd[`Hp2SHBPlj361bKrL+ib$[Z5*'([kq'i!*`ciIm![A-(hRI*Va*V&
+
+H[EGF0b6,,9iUU-'p6cF9C)P8ZaKrQ`S&+e8,%3-X)h*"@8)$1X4LZQ0Q@iT*6F-
+
+5S-FP+qe2fG!"a#!0AKSr)&di)"3@Bb,HR4)bX)J%61)@G98'Aiek2XGC"mFNYDV
+
+M`0m((HeQmEFVAacqiKQ#%r"p6)P6,#h3)j4jrfkV(@Sf"$aQpX8Ia*20&fAQKGH
+
+IkHj'mm'[f8HUPN%q#Kkq-2CN)'dJ&[6GaU"d5m(Y!h[BV*i@'DjchHeZQSH3!"E
+
+Uq,ihAZ8581RCCcDV+e)&$2k!@%9k'bp(q-0hlmIf&2,i"p)H[bC68!DLh!Kl`+C
+
+DPr!QGN$-f,$c4SKpm!#XK@IY-SE3Q$!kl"@!jSdrcU#)CT33#PFB)S*I0rMDNSX
+
+9Q4pjTG++X8TPMPBeK!2HfI1#QU[d2c5C"B,"XJJ%RDYckTe2S`blKQ5&i2Udj96
+
+Q6"B3MF'h#eZA`i40-IjDQL!CT5rUFGDN,Z5(lRLHH2UCbr#0Ir%Eki0q3h5H`aG
+
+k@p"B0@*MYX*BE,(KEBB&*$,X1`35C5`))NClLC!!%cXHJ`-UI3V,(3`Qq#`5p&3
+
+4VhK%Q%1dpNLXRYQ@4VZkX4)c3%3J"+'PI%%80!8G8CdESQq5@18DFBV[G%c+JG(
+
+1kfjqlT43Sm'p9HP8E8,,JQY$K$%McB22L[hBl3NZRQq+9YYN4BPl$fYL@J9AK86
+
+c23KM)QJV390""bbcC3YfQRDAfNP0qeL`#b&2FAbaC3IL9Y1(mpCm&MbE%,4h[3Y
+
+Nf!#!UI4!%m"+ilr(!)$##`Y"aL&5G$3RB$pBq1S)P!FU1%5G!pk#CI$55"K*Z-c
+
+'V`dXJhf85%$Xlb2S9p#cf+J1ZIE+CN+,MU-j[2k[+0N!h08JF02YGRFfVYiBHm%
+
++0$MLj+lFLV&&j`B6(jB)`aU[ALF"CkSPK"4QKpd1YBhdiBMdb`MQ#rG'BmG8'RR
+
+8hMGGIV5Jd(9p+X+j&P3C%lm21K"H$+dJ``TXMX`!#[&NeUIGJkfYj1&E*!''p[`
+
+3h+"%[YRC!TmCR93BRQ0cT5Eb)01E6@!$Q"b`,(G1Add*VXlAJjI(%Zi"0i*(IB$
+
+bG-'CYY%P2(ra@!10k"XF3[TcMTU'T5#$le#ieP(JVhI@%L6G2&EcD[IqITXmU8D
+
+SI!e,CAAj)4X*@r*&0Z4C5&9"1Y[FB&k&T)k)Q9chRLQ3!"XkE,0,mH*'-jSM1ME
+
++`Ab%G"qCXUH1"*T%(NVp5J6qcV&2DCPAp*k*(!L4M3JQN!#(XL,d6#`j&Q5U$@+
+
+Be&MNd0++1$A+I5`!kiG-1e6)'Gh3DR8YK#4Lr%ISGf`aC13C0'@02%J%P8)Q-j-
+
+$4#c$A!`),99@+Ia"fh[#F)[`T3!"SLT`&V!#*"3dCmN2Lb$QN4S1Tj!!N!!NU,a
+
+cZQET3LS)Ai,QIA`%3Trc!c3dCjdFP0f$2MBA94K!VJD[HDr!ALk4K%,'ECJQN!"
+
+#)`QGU*KRaLQSKFdXaLId@132LppL)ke'@l5,HBdI&E`3*-bC'm*MDIdB!'DBD+1
+
+j5ff-#Cll-f5I'EU@q@L)Z,E,b8J&&L)BL&H`+Re2kl3S3DNb&KjJTa98cP'22)X
+
+Kc#8HBfJ5,d&UI3Z)@Zr2D4aXXaHaNS`3aN!2,3R"dLHcAT!!BEEeHUM)ElLM3rV
+
+MFdTVp*rb5hf)F@3,Z()q6fHr$9jE0,ZYP-Ndp[Y3pcbK[C+$m1Ai-QHbT404K-(
+
+hk@cfDcJM!Ba!YMM5X,-T9c)(hS&U&UP%pJicMGFJmMfSec8UDVMa`03&)-T43VU
+
+%36!HmYkl'6%0KdA&%V)4"`"[@L)Blj-V)j)S%KL@pk3-)[85&RK,5d"2a&0+*kf
+
+K(#)'[mAQAJiQ`@f$+peE)JfDD"(EALHkmmG[[*[d6JL0AMS!`Z%LrD--KS$Y-50
+
+U$EJjcqmT$UiTEJif$rhkbi-AfiUC0E3+a+*Z+e5UE+'UB#GQAef-c5&hX#5T%UH
+
+l"8b[E5f3!*a&USU$H"2'ff(`l*0f)"qQE0)R!5I$@N#da'),X$lF+3Z9YEiQ1ID
+
+B8he%10d#PA(!'f#-,TS2T"LpDSC&(Li[E'`IaRKE*NhU,jYER3GkPc&$+pEC95K
+
+RS6XVcMDM%0Z"#111h1"Kb-p8K#CdDeRdJ&FJKe!0*TR2AA%L5"#1DC*lkdE'+&L
+
+"XQ9P3&mUNa'6`3GJ)'@RH6N@J4h9*NmD,jYEYe0KC*EXd$XXUX1FCB80Ve+"MP*
+
+!I&E+aJa-['p$E5fe-K9GIMD0+P!M%dH(R#3#DT@k(C'XScqm&5rb&'8"lM4Y+Lb
+
+1FY*#Z[4*&,H!Ulb,2BBZN!"iK3AJGKEfB$K4IPdS!G'T&5GC9&6Z8'$[J6dSPK6
+
+S"0&4MHD1p*kXBq0)*q@fS*+ZE$d44!32BEl+diHlX3QaElX"bSm,))(#iA!rJh1
+
+)ML@k)cEaCTSJ#223Za!lS6FH1+qF3IIlE5!jhbkLM(h)-VXIji'0M!jf+NDGrK2
+
+ePApJ`-m-"jH2`1kY`B5pD@hmcF-ZJlJUX[fHH8mrrYlmCT!!ZYU&*S&`1dK-ABV
+
+pCHZbIpdSrqPfP#IhSbb*$[m%KH6!80X6cCMpUa4jC3+laVeFD8%Hh(92rK,l8"q
+
+$*DP5Ymdm,NXC!XkYY$1VaqbA-'YK`k`AN!$YKChG'QbpG8e#ImFX*8cUa6`HqIE
+
+X2D)J9X8ce+cPBQHM,MK"A&CK&M2RZjDK[dSHmKVpV!c$[&b$NmJDY@5!HkIZ'bV
+
+2E'*#YM(-#Lf&+X1cMIbif,PH2pAhQDLj5LeTYPL+U$DDbQ)F6XT4I%""cTEZQhB
+
+X0HfQ+aV+dP@cXiE9`kQ6P-'J)-MBRLd1kS9mX@p5%el+*0fXGT3X$8U9@h0eb3B
+
+0T6J3&%r[McNIf[pdp%TD`++lf(6*1'+PM)e'hBdX+K0(")5TXR5J*f6#V&K3ZJJ
+
+HL)JFZ6qKErHL0GG5@,1+#9K*3)r2Ze2Sdd'ffY-BQZKiAc*jkYqmYAhQjXfMEEY
+
+5jpI!pJhAVS"SUAA`c"E(Tp!3U*9M6Bh-2MQK9`&J",5&-U,4%08@GTNjL-c5%QF
+
+YE*SlL"LLDJkpE'-ZNBJ!39F["@33h#qi559&f"*&)[JG3dhQD)c4YNE,$)VXQ56
+
+5+BEN*NU4`!'B"RlJ#`T9MeGFS-!Yf,Y0mblf-DfEUYi1[3K[`k&0RQ[`mK#U%+m
+
+r5'[E0Erl#p%dSF(8rc0,MUJE*`ZP&[d*`2l9'4b8SaKH*b+e`m*NL@)))pZR8%+
+
+TCJL563UBSXmJ-3'`,(1FEIKY@`rX9,dd!j(eXa!-"83)C0!*"i,iIIqNjpUa)c!
+
+MI1%G(YU'i()X6MHIRrVqG!2Gj!f3!&XRcj'lH@d$p+@fb915RBJ[r[hq`dHrrFh
+
+[ZMVHN!#e4K%p5ErB'+-NbBlN(+V(m@l[FRGE(,2ALjRTL$e"aqA1'8#e3LV6YkT
+
+GbV9Rl%@,pFii,chlmZMTlKiT54BKl$2S0a&aZbEaVHR,9Xp'N!$'-Z&E#@)fe*h
+
++3#$%'"`"`HR%c!)S*Xl0"PJ8cmA48`&"$`Flic'f$f(*8lEml-YfE,UYd45*N!$
+
+)4Udj#aeDfB1'C!DG'ERd4&3S!Ue'2N&D5X29#Zb-+3fBH%#EBi*IS4Alc!Z8[2Q
+
++#kUC*qbK3jL,AMRb2I5`LRA3aaMTBV5"#V$b%"GjhB@0p4'')20c)i6U3k45lVS
+
+SpX&hr%h&2*lR8rFAZ[-N0K`aC8'D4P"%a)UjUf)K5@p!XS-$&lp"c8m-PPV)E!4
+
+lSCBaFD3[fT8%QV$4ZjcJep)%'Vlad,iBZ#0(FjE5pVN[BZ"Xpj3VTqYIT0#0*)G
+
+pC$KJpJl0MkbPSr-$2bN4iAK!')kUHCpBA-b%"%#T&01'k5!3YCiZ2XiacJEAYUB
+
+d5FiAbH!crSeYBDQDR(8JU+V"E%"HPa+N(aMZ3564CT@(aCUJD"5$L0%KBTRmX4S
+
++YA0L+Y!B5(U)U0"C#b,'&aUTl'#Ple4hX'JA2iLZ&#a$$FKX%CVG[,%(eSN$d@0
+
+SkQ'6XJ5$3'YL*RI&RmRe9#&C`aAPQ&#3!$*H,!FDia,H,9VG#C,P"NS(L91Dq'U
+
+mcf4[KBD)*+i`DfB)%UQ1N4`bQD3N$bG3mb$0BlBRcJL(8*%NrLk(YceZ"h8(hY4
+
+,$1@-!T!!Yb%XPGAPcUM+*f4VVDk-0&(Kf9)Qfl0)QA4*F,Tpl(2k&VeD-G[XJ-V
+
+5Dj'EGCPPT[P#0)fI05$i,rT,F%9cfhk9G)1hm+dmVYLjfCDTT$bC4$LTl)6,FpU
+
+[["aDKF4YUddR`X[TV,BB#XBYKNd6Si)"JBCJY%@ik&"(P&Rh%DL!0hL!'SLrX)K
+
+!K##F,dbPb1Ec&)k&bf-TlH,JPm,F!QSi)!)[Y!4$GpB3Cdf$UXS6JD9k'h6H8DM
+
+'VG!Hk,59I-A59rQS'iT93p@PG)+bD3H0G62GN!"d`hQ&91GHec8Zd2KV5N*+LCH
+
+5d))ALCUkf`)!0PJ0hVeV0fdG,FC*qH$9CT[d!LJ0Q$FdBbT5+bh$`cH'#pm1A$Q
+
+q3i3i[LI#B0U`0BN`5(K24URXXR+4LY"1fBJM)ch#-Q4c6AXp31fd[%9dE(9#!KK
+
+qjHA%(S`hF6"Peh1$EIG)C3%5S3Iafq,3U!FIR0Lp&m(!$[V1kCJSb!3$Um"#6AB
+
+[*"&flJ+@D#U5(0(U'4#GCG082`)QmX6K$BUX3CHBdc86ZUCrCA#KH0`-,RjDeYT
+
+UB&#G+@Vj9[bc-dK%Z5b5K48D$+aQVLVkCrE"4)*`-R,C(Y*#%#0Mp(8cZPLTNq1
+
+e5d'CXIFF-BHPk!je[XS@)aaETCpj%l@ISYEZ&H*mTc@BD@LdKf6+(IlA,N94KQ+
+
+18Z9$)V(ZXGj*-+CVjHLkV+l*DqfH-H[EI$Gh0p45*ZFYBKjXG48rpZJ5-bU92CZ
+
+S-m6*B9B!S*baqG&R)jP2!lBYldP&$kReIG9"%,RS1fNP6Q0&Qrd52%8-JNFp(fe
+
+'Yc(3e3*8()*CS!aNpjaKVa9k-YmVP69h$'F*l0Dm(B-FE'kTH98!G6*Jf$*0DF2
+
+UpPIC84Q0U(9ARYU5h,*jkXENp8BbY,*j-BFKKZKNbDpZQBi*Nm*dQ'd2[EF`m-"
+
+L5*('I,("lfQ%i6jm&63,!iG0@'jRQZEdN[#q88YA"TLF6bd[R$M14eD$HDB[kXE
+
+P+)9&AeGD+BeK&UEU5[jP&h)&MAV+alH&@A8RG4KmhAUHcFEEYN$ff6ZND5YZ+BS
+
+$VAB)SUMB"59SjKAkkSaeY8ai5([%5Y'a&58LhP&AZZ-Nc`!YPI!6d-F36EDl58C
+
+I[Ec-b6!Q+Q-Dr!"!'H,%Add6!D*QVq3f-B[F&E,q'dk`#(3Z[1[JeS5&,m34IVS
+
+#)9CGSAr3ab$BXrQJ98BYI1Tm%SqEpk,pi(@$%UKeIrmfT3%RIb@#%[AG3#LaCQ3
+
+Ep`336"0ZBRShJ8VeVXJ%YZmY5p522dDChKjJB@(elK#0YbG,k$k,fk4m9MG0q3m
+
+fmC[Z@)[ZAhHj"3l6X'hFpr9a'D[1`'PrrAS5fTXI(rM1+Hh&cp$ir36j+rhfEZA
+
+YL,RP($-hr"BCA2HElhQEK9XR8%b6F&GG08@Q&NGTk,Y'KZaHcq%Ilk!Scck2(hK
+
+Ya"me$'kh[r(e4ellZhjjK)#R$`AmhS46S0mH)N3,XH&RFG`,hJcrK4CZ+9&LRU8
+
+$C))MBU,p"2c(fUkVq1Fm+9A0MklcAjrVVaDrr8arr8UJB`IN&5A((RpLjD&j3K!
+
+e0)"S3Y"bM3Be5VXIpqNV$03Ei(+R[Zhj,LRZfPe+cLX+Gehr'GZFIfKrcKGU&a4
+
+)$0Mj"*jibP9')E6EBZbpYZJhZLchV-jp6ldG`F"@kKrAAcGZ%#$0j2SG(22eXcT
+
+5+59#S-)JaMQ&!K64+8$1RZa!%JpG)S!MH6pm`$k)S*K3E9N9KAIpG9Di[(pF$jp
+
+McD(Pe0RLV+*`MV9Y60P5$FH`h@[XfHTjh3CLA($I*Pe*j6`(E'!8QIe+h[IYm&j
+
+mC3d[ZNIL2BHfLjAHb-hkcNm)G,*9cR"*`PD45$RICkc3&ZVLUT!!iZZ9LR'0%Af
+
+THKJ0XRmal5D,l3FJ'9k,dc)A!iZB31@(I1+6$3-Y0QiA%J$SAII30"+3!,La!ZB
+
+6l3&%qpbaCV**IKpYIi5T%"L`A$#08JdBBlQ3!)!(TQLL*3'q#TfK[MA$LaQ&,p6
+
+3m%1[%$4Ff4L4Yl$GB@ElV$%C`1Z)L+RU"l1ZkCfc$efeJ,P9KSeXQaa![E+R&Ah
+
+IMdhEfaUeE1SXdGb80mJ%S*[')fqrT!&9eH59NEB5GFAYkb`c%j(#54Lmh)h#YHB
+
+(%4[EU*P"pBKjSJkML(eaFdV-SS`!%eX!$RHbH+B*6m,FeG"#eRq'"cH)rrcl!l$
+
+5TjaP*G"Z(!XdbZTRKelp3R[!lqFm9TLVb(@h"T,0iYFjRHdP@d*,5[1Ca'%NP9r
+
+Jhf+6PXq)A@Lfk@XRV'IAF&a0d2B+f+LQ8A0h9'1%89M3CYQfELYSTXbSeK4PdST
+
+BN!"kmqTM(HaKmk#kJ!e5mE*h&*6)M),ZX#Kp44hh!)3V0lJG+9EplC&iFLN1GMI
+
+h'##Npeap[ppHSMDi#JF&3iS!I(XJ$LjTl'mILbm[Ic)`#ULV"M22*i&Hb1$-c6K
+
+#,V(#IH*Yq)5QcBUcdAlf6Y&NmNILamRAB'f@a8babdb['Varm+1'5`LNG8RVUl-
+
+h#R4H#ESMh$lMANm2LcUKVINR%q,05L[PZ@VYCBj0&T8PEi33#q'q3lk8LL[2Iq#
+
+(#0BD2-pa8c"LQ(',X0F,LDXjCVbJI+)DI+VH`(NY(4Tf@2L#C320f!TXH4DRcK(
+
+*Zr+L'#A4@!b6I$'NPRQZ+DcFBhf(N!##L$MTLFCTY8%$3(0`+$@#6SdH($k3!,C
+
+'6*b"iYqiaIJ9FYV(Cij,"4h[MiVTePUf2PmVlS[#N8#q99qU2DpeRZrcQ(ZXc0#
+
+9Pm(QE`Z$Gcf)Y6M%pd[lYcNra-deRqXDMJZhXlMkEZjiJ1#YLrf$Xfra"[NR8fp
+
+riZlVi"!cm[Q,4453!%kdEfj1`[D"q0(H`+rjM2N!(1[fjUF(EZq&-I1raJ8hmG2
+
+YbGLN)1k($Z8+hRZ6(,LB`"UrfT-&0J4%rJjc8LfZ,I$eY['X-hR`d!QC&c&6-N@
+
+1l8M2k9F[M#lNIM*",iIFm,,RF`&)8iC3DJG`2kDcP($TLHi+X2L6EKSEH'GE@r&
+
+%IPhBl3NX0f3!l'+91J42%6Dq*eFEim`SRGa`B($%NX5XrFjD0BfE-Y`[M2)&jJY
+
+H[mHhC#a'VD-q49NrlmK4MJqfLKkSeGITia8aUlY#E"$[)B'!p),fZ+)0VDc4VQC
+
+)(i[MeSE`@IDLPGM4Z+`I`k0V,%S5fm&D2"0&aKq$e,9m5RU)ib(%KJH3!$M9YYR
+
+Ii%R@JkbdK[DBlY0kd#89T*UNq`KbhZShrA&i(rlcIXR&pMI3fc"##PKIXNL$1ci
+
+d618I$pkUPAKlH@N@LDqjb9La[e&'@TpY[UVE0H'+Y93CLemh+G96G+eYkN)&1"m
+
+C1B8-k3RU4!-`DGpCqCK#p)eMRF43Ie8"Nak)Ia%"'Z"%!laIHGeb[rBLIa`9Nkf
+
+$9UVi+GZ2peX%f)GhrJm+qld,Dc)Bkmh80[S-,jTQ,RYQJ,(IiabQPm1GF[r2B#S
+
++ap9VBUR#l4@H3ZV-%H@#am(d0rQ6D,c%3!&jUj9l`88-q9&0reX-f3N*2fUK"-a
+
+V1432A-kJL#iCN!!PK85-91Kpc"MP4*KJckP01MUC+T3SmEe-J*mepk8&p(bLG$k
+
+bXm-Q8Ne6&*h*('$HR$e($eqeA-h%ieRMRrdbL,Qq@q-h2d(Jj8cNX89T0XCFjC8
+
+aAYNp5Jfd3l`dI&k2i5bqj[,Rd6J-(qMkpSBC-KhRp@XkXYIB81((!A!3hScM&bl
+
+j2@jp8XUbi"GaY)5U)CH'AmPGfjF6d1l40@m63pDQX#9C2b(AF'(2&PFj-++m6KY
+
+R@H0*J*E)NAP&LcJ-MeSQ#eFajHbIr(2P[Z1))0$BV%'@Xk8Mi[AXPUNi`cplkR"
+
+CF%!HblrSUk1#jBe-2!m(q+jbG6"LFh@qeXRLd1'2%j9kY0SF04$jd`lMNX-eKTL
+
+Pbbbjj0[-$'A`Sdeq38#j49ZU@FSe'H!VRkpeXejpYeC-mXqS20dSCN,$#B0d%AD
+
+),CUZ`R89RJK$bIA,T!h%1)&JaUjZT[5MK6cA'mpk"c)cC[+#-DGUjlb)eYCdMTd
+
+j@!a+%l"B2dF2&R[D11!$@ZSeB$TmJj!!q@)MH[,Vk,6VHcl45kkkIlCpk(A6C1p
+
+e5FP1Z$,*!SBhdB(c,%@F@GK(+ESN4HBKqG(YferK,N5-iU621clfKfkHrHd9HqM
+
+QQAR&CR[e#Mr'1`mQ!ANBq1&qNlPBQHJJaQe8ApP[jm%8$929HIR#98m"'h%82c1
+
++Il39Hb@)VqGGNjVLY+23Q0"5P6[B11i9Hbf*3pRja4TfBp`Dc`%*Yj+AED1cRec
+
+K98BTFAAJa%jKcU@`NP3I3-iB[XH9%CRSp0U#10R-Hajp$4pdmK4'53L9Mq+&(N9
+
+lb@FF9GhFBDP)Cm26DeTqKE)jYPa`3M0AICb)dj%FLEKhqfqhAICr%`h&UCaIVrm
+
+DYYqlfE&qH(XfP#&daL&fIF0C$XGPQaAaP#AL60*lG%&XEB1T*6KqFdMH-DKUI+Q
+
+ffrESh2'p5G#PXb9fk*S-(H,&aPR@kp+UFFTKh4ZV%#&S2$['Yl#5XNkNYK[F`D$
+
+Zdf#Sb@'AfELKjKiF9Q+0iC-LDGkS`+ScGBVbA)+$&CbKBh5T@Z0[RN#%9qa1&Y@
+
+"P5RY@)maE$'D53HiA#h[Xr-UDHX9eB@YF*,+&8DSAj+kpEXNU0bDc5jc3))#Yi2
+
+JR*J28MmCSa")*d0DMTP6b2VXAX%5EBJpI'#1Y+S[Xf!0l&&PR#`rrRq8`D!j,c[
+
+m[j5"5b'`i1BrP+%0E"5k&mSUXY&aGVaF08ei'F#`ZVR)1"!ARQ3)6q'b!rET[8j
+
+)kijla%eciZQ8@b@I$aUiCD'h%VLM)pEXi+bEh*EG1'-pPLK$hZ#QEKV'!3FdSPd
+
++3@&#`d[GSbAr(qlkJ42+P#dR`"j-6TMdA&bB`dB+cK$h@hZedNG2%BGeZELcKM%
+
+"dEEaN@[AdQ&lVq5AqIkCQLq)4P01NRHS6HldfYSF#69THP[E,1#6TJ3[Ae)cKGe
+
+Z%FF%-&aTFeRX`(YHI&3rlTFe*2Lfkhc"3BPGV3+ZZ-RZ@4C1X'2[[qAP$'pK"-2
+
+E+ZDf`A+#2*6!9GcG(lH`qf"TbM#K0FZ'BIBCDNBXVhIRAm%[qJmq`-q[$k',(1f
+
+50U!ZcXi42eLp"JF$KeYr"4i#6Sm1a0kaTplcaCYXJX84!*F$8*-Qq4GUbJ9FkN"
+
+0,$,mlm`d"9cmfN11aamRk"*frRB"hNGZXJZYNT`d`T5FAJ(`R*`+!$q3!*2HZZ$
+
+YeTY2qQC"iQZ,q3HV(Zpj3A[ek@GPKQD'XbR%IP&eL2fd-Kb(c8mUKpC20ae+"0T
+
+[Qml,[r[cq,IbNSCG'Cii[RjZGA+#98&Ffmrh*ZfRE3rdahV$)R#dZm,J,B5)N!$
+
+bJC8EHYLPeKZLp&SKZIcJ5r0"mSJZ((ZG0G3K(U8pqDp93'9j"VHZbM!85,Xi8QZ
+
+r1)h4,SiIr,`iLqcpIA'j+YZFX80Adh1k1CN@Ni#46G)Z6ermeqeP9[$[qmZ&qIj
+
+%DAePcZN#V45JAk#0dLj3AraYJ89J43Pa,lPmXFhr&KZEY-8k3HGQFqqcc6*J0Gf
+
+XYm$21b$eT@qirp)rqBr04pq[hhTK20JeK5md,'*KN81NdY4$f3%Z19Z1Ur1lMI1
+
+mAlipZHIiG!V2Ujb8h'GQ6*pCr8kNJ'HRKGVa0VIX`((24i!E4-6*9A4q*`%Sbbj
+
+kBjiF[Tk12V-+E(E3XFBkjrE5,4LrF*!!$qRd0@B,TlIZ+-2Z4e6iIErd'[d`'Y9
+
+d!!pjCib(#Jd$X#CE1Dp2D8j%$jJ1#SG5EXXFi5c$0F")BfV%KUE%pak-Y9G4fT)
+
+hFGM$hVBpRpLqam5,1XaI@U6YV,+i"e'hfh%!M0hHH0EcJ1h-8)-j6EH[5hf[QDe
+
+'3qmKXiE"H!Vl%VZqjHD)pNcCIMT6,j2Tp#-Z60XU-)CZGJVAPU9cHD!E$iAL@3E
+
+S#r$V)$@@q)jGU1DRYJab@LGi(VT2V[FSb-V,P[G$&Najhbkh#Z,2a,f0-ZrkY3q
+
+r[2Y`4[(f-@rLCE1rh9A&PmLTbd(2GI(Y,LUql93*[jjPXBeVP`0f9,m!AI)d3V@
+
+l@V0&a6a5JUIZA'eZj@&r14aUA1fZbaa+SMQpXaCEh3Nb-dRL2CKH)f3*Z8LqK5F
+
+@l#cR(eH!VSljU[054ai!qT8ij)DcE8#IrDa'4Emb!'#`3chVecHHqLX1d)`A$'#
+
+)pd#LH5fP,b$CB8S"eq6A@mIhQ[2bXkkEiC[QB9kc@UV-"!T9'q[%SkaNI-(j`SC
+
+)PqIM-#($fhr8V6lK`MKJ!JLpEiDH+--PDkXPCN*5TbEimAfA1f3hI0FUE*eR0bE
+
+4),XrSQ3c9'IFTRmZBT3*G5r&6QZY"#h%$&2NQa#ENVq2FkVZlG1Tm'HKK,RBRfp
+
+V)0UDPG,P%"aLlehRpr,D$"a$9(-m2Y'T13!KhJrFe9FdIaeb5+acGA[&KLk3!)R
+
+*mAREFY(m1(`3GELJ&jfZ(4S0S'jf&Kmh!6a&k,LHJLL`LJ4T63cRB+G3cDqr4bZ
+
+!!BcqM0bi-3U0(6pJlah!m9TZp0)"Q"9-ZI096H35*Qka1-@DkEiT'rTFVEpRRrc
+
+XVmC9mRph+&rZVbajTZ2,Y3mY944&AmF4eFdqqe*rpX-k+hP#TeN&RcUDiri+j@V
+
+pp$V*UZkbQ2!#F+%*TIl*D4Q$cLFFc*'(!#QPBMI4aE%5ZYFH0dGX0,IDR+U$a8B
+
+lFS9SJp!j%ZD0p6FL9G$%,93`KR$RUehq)L&Q*Nl6fAelD3kI@MKqpZkEjjrSa+I
+
+cG&'AeTLP%Al)DrbqKL!YBBh*K3f2U8`D[mK-d5qi*UAmH+Y[qrb$k3VpK)009h`
+
+b&r6Vir&iqqYUL)[(F1#`IY3a'cD6AlEadcd1@%K*-A!2EDE(3F#0qkr-34d$hhh
+
+K,)DB8QUpR@Tf8NUpGrNXMI(&$f0N@mKd"MXGCUk"B,$beS`LLA5c##dKI$9aKV*
+
+5D0,lY!4cbJpSL[0f*M@rjh35Z2+H'JGmV8%e%(B`'jCaQYl"c2fhMZPYEeDN[GM
+
+F82*,MM&prZ3*RE#L,K9[iDj&d,8[bm%8pYkQ2Vh66c@c!dp'LJfIJ$"5D$N68G'
+
+5F6hBfAV+l0*!0lKcD-kTdfrQ,RQGi14dRIE'PF8H,[5KlaH3!,T!BX@HJC'%@m)
+
+MrQN(a"%1QLTBV28k2XSP&BLXjlESUL+GZKS([TDjXN"V28Ah*Bl0`Fe8N!$iU!&
+
+HBMmXGrb`pkmZD`05kf#@)Tk#ZPj+%$QYN!$!$!42MkD#LeaaZ9#[lY*picbN'qP
+
+U1*I6U`IbdTM%C"S@,X-q92h(GMfi&[UX%,TKSGZeAfT`BYGG@(,GN60q0fiiI9&
+
+%8%kNd-dU$L"2Vl4SBNM$Dr9cbM`T+`i!i"@9Z&JiE4ji3HA',$2aFJ%FebFd3Gr
+
+2Ud#8%RYPK4XJI,ZMeBE54C&e)ACfI9X35D@3!1ZbHS!LmD)!-5++&`"Z%@XB6P8
+
+p-IDQ+&D#4r'I@A&rc#5iRKCV&CeVYPX8'DK[8-'LpJV'1!Q#r4H[NN4GN!$ShFE
+
+ErEV6l-j"5Ij98(3lcpA-GTj6rDqG6jIiIZG6L&biYfA$YR*C)VR[&K,G[NPqQeM
+
+Pl0i5RfIUG$K"8pMjLFaqaJ4q9A6)VMCLLdA&!j!!J1Z"G&UDUCNBQcdLZ(jZ(5H
+
+NEV1[&8hbl!r&GQR!aC(`[-)c6pUbUqHBCBP4r-c@VMb6eicDHeG0A5)-ZH%mM@q
+
+[2TSH*@+APqkMfJ5,#J'9*eeUfAB4r5)&e,HEQpRbHM)%&eG`T%0Ic-R0Y)@X1M%
+
+il[bD48Ai"JD`-b,Yi'bG`+Kq98[jj+Q4HGHLK5qeQQ(eq4JRMa,a@'06*lB+U-J
+
+%1M3N-Qab46%pMM6bmaIP,#EXr$3KZh4@KP+'ch$H&8l'"(4`*4*ZYXCP4B%@$"'
+
+A2)IkLB&dRV'Ham@MH1h!('S'kpE,ZT)UX$KHUBRrpK&R`F'fZP3jqk`mdP+"E5Q
+
+D+TVapRFF!03K&[[)22e'3p1ZDPdLLQP-!i(IXDflLjm"1%*`HpqELIKPC(IXb)*
+
+I%X0C(Lp@CS"&fPjIqFQ%j!SZUZ`&k&e(#*rVX&Z5TUI%68Hp6VGJ)EF63rRKQSL
+
+BZC18CF!*(Kf(aMdJ213RAYY9+cJDpK"2YEK"'-LG3JI`43@!D`fhr0b2,@Q'SNd
+
+klD%VS$VA6qp1p&8@$rN&Mq8@lTiba@Zk5kRBr-3*&"8,NCRT+&FFfXR"1(Z-Z2B
+
+fIKXqVr+bbdmm8fRj2(b4)m30I0-m,[LP0-r%Dc8K&r0pZ!CL#U2iY6IXr*LUQ@(
+
+RVhI0`rm68Q&N%&TjLTXGBMdph1f,@b$BXAPNkqk`,a&F2C!!5PQf51K1cib`KA8
+
+j514b,#+-*iDEp9Y[EYjP@4c"FNRP6rGTG1G(4GI"9f&rL'6VVIrHkk6cT'$@lZ(
+
+m#&4CN!$![cp$kT&[M`+mMj01l5U(Kdl2`6$qkadATcN[phU)9HTh221e1l)(l6I
+
+[PYU19lYMIF6fY)aZphD*4Id'0rlaA!$N%iRYldq0mJ0LZ#QSB2f`f[FZD%qQ2c1
+
+EEQlI**ZZjfmlil!r)&$9bbrhFAd)Xj'kfjM1CRX51ZAJ,Z)-k4PD",UfQZ8GIbC
+
+S,'cMaSYI@mflT(%$G"8%PBc+6cJ+UAjJThI4S2-K0"K5TGX4"I'T'I0TJBGe04D
+
+Z9E)r,U!$)iU1+HD`"@`5VrPGSPD)BKH$`L,%TH@(10r,FV`kd)F*))`mK*1%Ff#
+
+fF)+kAc'Mp'[-Aim+!bYr5h[%rl`#jJ-NRlLR2d)bc'B653j*!eLkV&J2qS6+J8#
+
+biVPqiM39KQ%TE!0G!HMhdq6@iBTEjb8pY6L#9d(9FZBd6#d(IPK#1dQ,+AEKe`Y
+
+XANGhdVbS"bPZhF4!TbH'CmMS[IEr`1YN"@Pr'PkFC(Vp30YRYJS&EcQNhCD$4IZ
+
+fE&'mNGmKj5Cbh,'FMT3#cGENM[d#@aCJ,!4)G##TPYTd`VA6+i$+BNRH2e,%RFP
+
+J`'qqlC23FZ&X8("bN!"SBM$2V!6`*ZGmiPU1[2C[GUUGfr&j!f$NQ`VJiQl(Z(+
+
+2qCP!60BDYSHY6FD(M-@pY`MhY(IlKiK`bCbh&)cNIR1$TGe@c)6J39+6M441394
+
+r)*eDBH03+4G+eUk94A0`VTJ$+hAJA0&V3)I&@(cka'R#a!&HXSm*!4T[FMA*IEY
+
+YLd-CrkF3J4iUCk9$fk9fR%K-+H$k#@`HVU+hH6K0Qe4pB()KpZ[Lp[ZmbD[Hka@
+
+[pGr@cM)NkEZdN4fEfpj+(qFmaahG`"31(5XA6SPMhD+NXFb,*bG"rYEF$*QL0#D
+
++Nmh0%"2%kB1HU3[jC-P05jINZEAea*cT8EcKE-683pb[b(#-HicG1m&2rNBi*KM
+
+f*Tm-T8IFJTl-Bq8MjfcJq2GX"I4pcBiD6maCJ-C['hrL$"hSb`IrLQX&$Rck9UE
+
+KC%R(@KXjUh[2flhXjR[@6-0,Q0a[PJB9)GeS5+HPVP(DJ%pij4M6$j[F!D8Xk%0
+
+HMrQ'`XfGCeS,a4N`9GV`(N(6k592B0UBQm!MGV1h*bhJ,NPF3"C!1b#YL[2pr0c
+
+UT*Nq6abV9j0*0XVN&9ViL*!!4S,"faf3!))hU5aaNr'T[$KfX4PA8))UdVQC9&e
+
+f@EhIXijar&M$hMLdbd-Y[B(Y'%")#lUX2il#eJKlI,`fR*)`m#Q*3Rha&KED)ER
+
+V4L1%%KlP&jXT0`$&XC&@rmL!MBdBS38Vc1"P`cMlMN+3!%HU)92)'0FH`LSB)YE
+
+K)K4R8S+dUFpa!*BZaB)K!ch21b($lKH3!"Y0Qq888q!2dM$TJhD!K"k+G'j0r-"
+
+$2,!r9!M9-@2&VUDfPe"4)'-APLGH@38"S+L+ZBd0V*F)LbZePB[FUG$ml8H(%Y5
+
+f"+Y+0QTUZFM5Cm%Bp3C-Za8qlLKP4-6)LS-mXH''&0E@ch!ljLYAr*lTK#5eja'
+
+INGP@YaS8UMh"H6ldhVHUa2A+A*43h,HLK+pfSU4mF,Q!+0%&+((C6LDj,GCGE+I
+
+6ikKlpqBRiGjk[A'#89V+EcAma2jp#-k!epGk[jha@j)1rQ-HR9L25-hI-rNI2rS
+
+*MVpc"S0rRdN90qfQRfhMePXBbY+jbrbGYd--NlZcZr*q#"[+IlfVAc*XJYa5p8J
+
+$Q9r!!dGIqJ@5'0(a)X"V"Kh$i[fNG#AMD0ZL,G9,NDeMHIJS+0ZZZ2Bli1BAFdr
+
+2+LkAS,6liT9+I[YlY#Vl&F9fkEc#+cbjH@QEP*QQ@bfGJq2IA6KR"5!9A$kVBY-
+
+aLDXh*mSUk+5$MHGp#A9VIUQTeP"YBXl[)6rUAjKHG3UrC`@liP-+G2&8FZY$Xk)
+
+1dhYeC8ec4R9li6QYYRUPX"!FCacR["mS11QTm*8cBU@X*,86aXS$*bH-aE(mebF
+
+r-9BP*P-LKCMm)#)38m5TT8cFf,)6ZQT-XEqAHREIUph-pC+$r*6m[h'3!"Bmjb$
+
+a`)5$C2!kS2f+EZHJp[VI'3IjdG!rFT!!'JQX[)'*A2R*pU`1rU12NRL)@iR0eR%
+
+S#6kh235f)VEjjV$[ZSRHGFDSDDEJ"RXXL4F8`lrCS)TJTQ6,-al6`YkqZ61cmm4
+
+rSTkeb!a$6!r0,DQVQaYA[Sh,TK0CRK8fl&Rc)rXUJrjFmq,e-f*hrI'[K@jRC[N
+
+l8*kp"a(3Hp$B,9`kNc0G4a!,beL-li%mhAQP$SR&cIEm(12Zb(b&+IJN64jfDpD
+
+XE&VNIF([6eUljIA#p9hY4P8$*d52rJejPI0LT$VFj50-VaZKIEFRJ[1Fl!-9hFZ
+
+N4@l#cl$[fN-mHQAqDD9%4YKaTq6*SGdNL[0EQp@mJc#6$Lir#f'hX9!r%1q[R0+
+
+eMF3(aEcTDHH%9,*jC%)R(-0r[G9bL[0!CHq2r&*YedSbrmS,h%44J&c5hdR"KYC
+
+#Zk(,1G`i@[U!X)R2f0G$2E#02P#QEh*Q,-+pekMfX50Yq*,Cl+G(i9I,9SaJJAU
+
+rVV[BHkfiqLK+D@+F-Y2N-ZA6j2(2&&0[e+82er&,,ANj)CIjC9dj%l0e`6(fSa2
+
+0'RlMM5Vc8pqrTaPQbmU,Pa)3cHV2-c$0kXq*8-hr#,QI-Ff*E`X9Mc4Pee$#Tb0
+
+QN!"fIIe'+0h1SMRdr'28RBh%*%p[lJYl2-)(6SM#LcAc1XiMN!!DiY`aN9pK&[2
+
+*Zl8+k,9(Z%hbXh+"KNJba9U-Rp6+CmQBFX8ihB9bcAZ-35@2*`!f5`*%ieXIVrI
+
+XLR)eGQpdfeaB6phhTA!'l8r&&RCIJjd8ckpjKNGrl2c4!L%`q-hN%I5pNGA8cm8
+
+Q`hQ&bI3U0Tfc&"FN4$CCjJ'ZH-4Zkre@2DM3SCXTUBCI9A9!f10Y$aEHplNlU`V
+
+!5,1F+pA6XXc&c(l8[Y18Cqlk8fr,FE$c-cIEZbDLF+XXph4$mP"X3f'aY'jqA8e
+
+h#$SfXk,M@+$01-CY-eUV'A,&cql1F,08YIePD2U@SNPqmCpZFBZZG6pH8(mYd%6
+
+UrB!l8Y,CfTF[f,jBC1%&Mqb+"T0rE+2QI9,'UVFpm,8aVhM"F@e-#-XZbcC3U%-
+
+h(HI0eUZKX*!!SB84NJlGYUAMJXr$P9F6040D2@YA(X8qb&#e4JEI)jZ,lJHd*YS
+
+3ETrZ8AMj`d@0E8l'JkpprF+E`-NN2--T"hC-DffV%kE(4k&imillZVNi1hkk2hC
+
+'a"$jia088PL8KVmZSpRTA[[aic(U+HcV@`220'3Z$`EdEIN+(qM(&4q98&bdIVh
+
+YZbFRjVGlhZf[@%kZ!,q9$I!VEql84rD62rI!DblVYKIMprEElX-9ldaI9X'9I+J
+
+46mLdGf,Cch&ABJYK!V0qS31R30`mUAp@@4b6ZBABjVe@1@C,+aN[H`kpAKDI&mL
+
+#ajQ9Ule5D*LMmf#ehT!!"i(XT4E@pT0KfRic3#-fH*mH)N'ZfUqFCKp-r*9!SIJ
+
+8Xm2D(#R)IiB929e%TcX&iU,@HqbC-dPF0##9'pMiX`YN"3qZBHpDmS@IJ9R["p5
+
+1Dc8(&X`8#++c+,CE$Tdh[FG-JJ[)*2d#XA)XVl8Xq&R(&SHERKQK0J#rGcLL%5b
+
+3!-P682E*!Z&@dTmS"*Vq4+A4lTXJdrLSZDA8I)P3V$m6MamMp"e9&I#A!l,bL4P
+
+9G6b9+AUq0UQ2p&bl(#jl9-ldYjI'cVF+"lJl%j!!92R"6Ijr!*!$$3jeBf*XEfG
+
+[,QPZCQmY-J#3%CIX!*!3cR!!!83#!!$"&l(JXU!rN!J!!,H%Y+HhK,5U!*!'`43
+
+!N!BhE3!!PqN!N!EA,`j1&r*iJJU)*i`F*-b+jQDM,(E`j'4PYV+,NNdRQ`ki9ia
+
+`!KQHHY,(3lEQYGF"-cGC#2T4#h4pRc9SNNfLhbrm'PNTY)&N)C!!(#13!"'QUTr
+
+IfRE45r(IS,(4kQaeCSVfCQFkhHefQS0'hN`hpY1Gl(R1Vp)AHEGAG0VTVCPVk@D
+
+hXj--HRPh*fX2XYC-2hpCc#6*IdSH&UhmlQLDG,(6a%G,brA&PAVY!6r)ArEeJmF
+
+VFfYeI,(Fc9rF6CGAkJrRRZ$RpGflkF1jqATDQjfYVkiQ5@FhEhIcV*PFYAp*N[+
+
+I'bVGa1$YE#G2NNCR"kJdCr!a(ZfPrHdmjCG0H52Gl(466P+dYr$%'MlQVqPZTeI
+
+d#@r45iSfIXTDVIddkm[c'rP@d@lMaE5c+4p`NNpi1hJ$i,9Pr%%1+1)P+BiahqX
+
+@rGb$(P'AdAk'RF-Sl(-"aM4VN3$l#5MFkqI0DIQbdfTk`N-HQRNValFT"NbcY*h
+
+[6DIjcQjrAbGSB!"mrBN3([l!L2AP"l95!b*YMLQ4lH+2)!39+A5mc`U`)K9@p+B
+
+6ILKNM%U4"UASjC!!LSkm$h5F6T!!4KaR1ZhafkbIJ$YiMC2dmhEDc2TCZPHd@T!
+
+!Q&5""65BSqKrBT1RMV*TGRjTG8JN6lGM*Jef-AqT,T&*1YUrbDUS4'#9PeKmP[`
+
+(KBT0M,!rNbafqX!rcaVE+9(8qEHcAYTTBiT11m`h,E"XG2VE%4X"`6-qdrFj#E(
+
+%HdS,BL-[8jlV+`+Uk"*qNUdJk3(pY&rX!"Vmh%jAkfYmDhPT95QGY8$kE(-cEr6
+
+eCAl*-9i8M9c80CY*DRK%S0h[$2"L2qqf1I`KPB30-V25J3rZ$(VpT*al)qr[jB!
+
+#SL*%8lhQ-02b'jlb5)5hC,(5Tq4C5-mA**P"IrGZ1ThU"dU!mS-`HrL)J,JTlpi
+
+pNc'R@DTJYIPjLNqPB9lN*KV@D(9k*PqQA$,0X@M0mUfaDTeVE)#M&&Kmj2&ak%f
+
+JJD"48Cbf'M`f$p4hd0mGp(XJA![V4EUh$A$5RAaR!k+3!'CGb)VK"&'$4%&-#&F
+
+[E3bkhEcGTmaKZTP%eRFCSGR"jqe1(hVDD!fD1N'c@faX8*`VrIa)5-9B3Dq[e&D
+
+aPXq(c5,3iS55`'ZmTlZTrS(rTPV&4MIVlY0RJ-X`k1CA$UP+e,fqpr"GE@-$iaH
+
+3!-GHqR!*XM2lMB-LIDV-rrTl*ehf3#P9mX+&(N@d&Im(+h2hljISP`5C`*phXej
+
+1[#BVZjmVU*0ppr"BVqUFT*G1kHEGQiC)lh4Hj,dV)`QEKRJ8f)4kfjd"0L8S3"*
+
+%!NZPkX32Q!H%&I(&T6(QN486d%eP4PTR)jb)X4J'P$qX`lTrU36b)5jHa,KS3b+
+
+RS@l2mp)8N!!p4IbB(LM4k(4P65VDXPhV+$P@UrhqYUj-q!Mcb2j*ddS@YqIjrNB
+
+Rkf,&e1fIQlJYRYLrGSSf(#hZVI)fPcY-i*B`f9L6V0R8"GDHp5YDaeBNfhZ,0QB
+
+6"2#PfL3![Gr0fVe'YpMY*e6hG"k-a2EESpX#Q4B"9r6`&r8G$)"8`R"*'pYC0fX
+
+!*C!!"jXXjq2[H,MRYcC2PX2&l8`*)[09#fc"mdS3[TrS3,Xc8J+["AkX+!+VrFi
+
+Z0TV1lVib'+[h6UDZ30YS0GaIb(cC,hVLaRaDi!*k(XfKiaJ"R`!+3b*kMJDQcA3
+
+XE!X`5bI@#(m@!HTaR*hT&-DT1JfFBhjZG3eZ@Vr"EFl-*klehS%b%BHR!$2#qje
+
+i25c(`EX5d8a-3G@LihTS$X8)#B`'k!``ThcJ'HcJ(PhGC(BlDd0TeAU)$rYY8rJ
+
+BA$24fcd-X-Y0V62SB3QKiPE``a8T4"0Kdr3+mKYd$pD(mb9dlBY@"+P5DTVM`ZJ
+
+6TF5&e*95S0UJCSGAKL!G4lS`p'@$-VaaC9p,JcSe%feBATPEr*X`'*l4q"[+4"*
+
+9`ZeCabS43BNbN4c+"2DjU"29dkq%!J*q,"3M-[bJ&-Q*8JKa4TVJeU&lj6G+NI"
+
+4mQIam&UKdU(E9C51e`ifUCYh66P-0h5Di!SjNA!@U#hdP3,V5J4k$bN-NdH@SrL
+
+8mGb[YQIBHM#V"4"HRXIAScp"9qJl3PIRqB"ZT4YRm&C[r3hI#Y$K@KK"pM3iA3Z
+
+K53I@H4K19R@q%9IHh2!A-GrYb2VZH$"QYiX-+''!8c*F&q(mD(!!bK[mBRhZQ3e
+
+r'CZ"Y`c8*FN6j9DM-fL,Cb'fb$@J-q8GMa,&DcTPVjpe9B$FNm,$Nf$-&@`lHFE
+
+2S-[`5`l`9FVkCH*SbrY)ij+cBB@,(+kSrRU0'a*j[-cp6bT2T#ab'4'3!*IpZ0j
+
+94(C1dQF%L1a"V*MXa[`h*KqUl`'9h4TfcZ1a&Nq%H%Mdii@UC(#j8Z("iGCK9,A
+
+XbGPbpFpV8J5Z[[4`Z9U4AJ%fdCbi*rf-f84RcN%cM"3`SK)3HmHa[,1j+h!j-aY
+
+Mq&qq6K)XmFfLJC8F+jYKYlDbAMHp3*b"NBCf*phTi1r5`X3f$a0$Q!G6p@J*QNi
+
+IeZCKl#1)NhIhLYi&`N03$Hm*S"a0%A@3!-Ul)fqHhhcY[hN6AAJ,[dXA+@plZhQ
+
+Mf#cJm-J#V0Nbp6@c0Z`-5qVm$A+XU3YcLl9j3pH$Ab*Z(*KG@PKBAjbEVDh0,5'
+
+&XQDDRGBD$FKlmPq(rk$N82rf!'E)&qQ[kpmY`aEj!['(HQePVIi%fSjI)FkckbZ
+
+V5l5@m@hi#4mZe&BHc5db!L3rmmhCTARjrJG!1@ZCZE&j2Di(H"2Ed9F*AIj+Y$L
+
+9rq82SP@+e9lQ2AiR@Rjl+Q8VH,'MK9HP`1)%q#rrhD"iN8&EQ(T,&TI@4+eH2cr
+
+dD-@Sba[Ef$XPNp!IG"&I3jb!'4mN#-[(q,P&kfE[BbrjG6S90NRXLFJM)--'!8E
+
+k%a0h0T0@J3bGrr)+C,ZC%aFZ56XC(Y)&&(2abj6V*rC+@)6`D0Vj9AiNDjPKd`A
+
+51BCVTP2jc"E@AEIPAl'8a(UlH%NVX`[l(drfp[(B6J)6G)Y,GVB"HM+jP$)Hb3F
+
+L+FN$H)3pQ+#0EAL0("k,VqcEh*!!Zc#0b(a!pU)$YR1,XR6HAVD2H*93AbAAlki
+
+NBZNJ"PIL)MX9Y-Sl5bU+AVe-h)iPUp(+XCcMi8Q#`NpQ2km0!e0ieLN%[!9N5fL
+
+,fY,aCer-3fA51d3ZSRX-(e3'QfQ[i`c!bNc4B4"lE26a3)QHjQ6-N!#f3"bKfqZ
+
+NlB%NiM55r&+8E4pqKi4q*%!%XFSFh(j*RZTd#eSTkT)JcJPP59[j*NcS$P5bLhb
+
+l228#!C-#'5)qbXK%$eU`R@Hp[Y-P'd`a*6T-B%Nm9rACbCUEh2*i"UhQ2k&Lf+h
+
+N`@)([MrMDeJHB4HCed*KfaJJ*BTe*!R+GK(6'e)eV&[40r'2R+K0j+V6'APa%P"
+
+XG0Tp#,qcq*hrF%**AA@&1cBMq#3CTjeX2i@QFja0#6USYXH4M'`K)E`jRHM@`,a
+
+VIhqABN&B1X"#&K@0%R3cK)Qb,V``LAAK-3c4l@aeX6d*hAT*hQYNH,l"$8&IYA"
+
+ZY5eKid+B)@pG"#8VbRN@qLdhb1Cl%N)cGl)Zifc(CV*0q&if*46#r2L*GL*N`6b
+
+*P`10Nq3+[5A6Z%#8Y(8l*(lS#KYN!SQK$VTFMV%mQi,T0YcE,MDTK-h1RMeZ'PP
+
+XEB0Q$CI6Xmm+l((F[*Z*B8p$9Ef4"UEFKbr+$*mZTK)5&+DA"LL$)l4FQmP8rR+
+
+h963+#FALbahhkaA9(&Rf4$GHrMHG&MC-"Nh@3"NN4QC&P-l[Kf"3@&L)Pk%8N[T
+
+0LqQ(-)e*)3MUTC!!6U`0)3phiIV"HM@eUe5ZQlF`1KB5RFR4`YF'k,BY,2-J!,$
+
+#Kf)%DY1l(QeEF$cC(G!k0[HTA%b8p'6P$YCP,L6%T&RdGPX3D,jQBTLS(-Lqhi*
+
+F`1j#d,l9)K0J511**TBJ$V$f,CBM*2NlXSF#X*d#IV%)DfGA-TZbJ1A0VI'+i*I
+
+ZdNVkC2iI#'dPb+GLb`@jd@R&(E85A$m@*5rIdS9L)fXmejr#1l1[(NKQM@96Mb&
+
+cR6hepal!J-INfZr!RJ+hBiTkD1CEB2'kRCKZJh4pF"c%hNA3Pk,bF#"%M",X9rm
+
+pQ9Ne!KZ@pK4iee%Qe,&+m+C%NB+RBXTk4B!VNC9h4$YKq5$%K1'S,Z&PBVVH)b5
+
+VDlA&"d[VDdliS,#Zfb&TjT[CS)@I5l`8'$`rTcYl4CFT*`(j5jK4eNSb$D89-,R
+
+PibPEA-53!#+C@X81[(%4D@08HZhU(G9m`CZ[!kS%V4ZYJU,%mJK#4&L-!Zbri@-
+
+QV015C(-9&@DqL9c#XH'+i4pN03l3A-`KNc3I#)EZ&QlF5&UZ"EThJ+ZY)Q,TiYf
+
+d4U#rdT24l'EFXRTH%b4QM%JF2JjUDJcm++Be12rI,06AjQEp)MZrp!JZm6acFLY
+
+L&JGESI+3!*h33Z16'X))fcYj[fJNArKrPBHmZ,j3AjQE,DF5EpKpK[DI"jbVVTq
+
+Y%-!&IRfr[U+I5+D%dIk&fT!$h1)MqHMqh0VM1IMPe94R-HF*%#(l2J($)eraK,#
+
+($j*NFE#6GiX'be&SBb+22EE6ailkk[U#i2GJlZ($qNTpFCDa3h`rYlMZd&jkX$k
+
+V2[Y[eTI@jZS-e*!!'I@&fYbL0(2`3E`b[b3r5H+'$bbY-pR))AqcSTmX,cffpqT
+
+2e-J(akpIdem@pDdjrAZPpX$p0#X0([+*qkQf-JYTF9q9[i+$[p(2p)Hc$@jp)63
+
+XH!D%A2B43mQjJ`qaeJefZ-fj*@jpJC*rRArFd%qQUQriamedCQEQLRiY(rj#RkZ
+
+b0jL,mJj"YMAYSNJK!URB#Th$LLUSRq,B,-3'E$F11hR#D'0`jHHVKr#&F8BS)Y4
+
+9Y!I`%iSYE"R)Gr(,6AM`*3!dfABfLUd"XVPLrh((5UI%EdGb!YNAhABbI!c,"4d
+
+9@0M`SC3BA%'1ZFh%@',ahHT"A5'jL'ef8*1bjljV3c6jk6R,(+@8B+D5SD!JF[#
+
+8DA!h"QDi'EpN+**)IaBqM6+VqCCk0*&-4e`DY"N3NK%C*LNNMqr0Aba`N3k-6@K
+
+A"IhNJLXTU1(+,qJ4KFISGCpc4e`&l,rLTCF+!$j[d(E$aXY-5AX,rSh,6mXL#XZ
+
+3!!d-23Kh5BLE%-CEmVYL#fC-hIc&,921UqAhmBfTUcH[r1,@'Bd$FCA)EXAa6(B
+
+m2b@aYY6jV)6KCQ009S$*GmGV`"H(1QTcrV`+P'LkE+SYE@AER52!+F+r'h6k"9c
+
+aF963$6F"1AiBBIhP)DaZZ-Pb3&XUINaTS-1`441&ZS+dK2kXP8*UD,P`D,0i866
+
+Chb8+Y!1RTm"ki$`rIUf"J+QjGL)4Yh32MLQX6SrGlI3'(lmaFeX0Pa[6#%Md`rH
+
+hl([lHZBDk-%-N!"d$36A@9599ZKMHT@3!%j*X6TPpG18P%"SU9%`f)FBJ1'P)Rm
+
+4B3h8YUe2GR,2p&)-6UQZbDT3$4#MV$CGbID+b2jTQYP#2bi4crMDC@i(r1A'jA[
+
+DCQCK!FGJG5GeLKjG1H'hSl[D[,jh6(BFq%kFl'**F`a33NMBf@GM!eeH,fL3!0a
+
+@CjK0dC%q,m'#'qFX80KY!D!T%jBEaip6"Q$idY6!)-10e#ZfSV0T,8"3VPe0kNY
+
+@#@e#-cQb-b-`*E0BJ9N@,QN68lE4kl3'f1S484ci6UB@FJR)2,PK%NQ&`qq(GpP
+
+PS"(MQl%jH[q[FQT%X8`0(#c2'ZA6D`d9QlV56SjbY-V$)Ji`9NQ1LqL"iQ(Q!ef
+
+e)'`'h'ZIkRGGAH@F8i94$X$TJ8CBi,XG,$H40Xi+GR%IV2c1NMM(c-'NS-%!$)D
+
+8S[PkaBE$B"Z*@kmjbT%'Qp)DP94Yi@cMIBfdbT13!"'(Q@9BC3LIB2)bGBkSBZM
+
+0kZ[A`PCY@*p##THUe&A--@4JRNlGQ,PcrDXEAr(rAk"Z,DCm&-mcE"`HKNjS-e6
+
+36S(")0HjbJC`C*!!!i'3!0J1!MQGV8`Xplq+Um"KbMSAS('B[3D(9BB1PX9$4Ff
+
+3!%Q"q[m[8"3*@j2%I3l!Z)c"XD#L0D#8dlP&&09Z)6Z"TSj+84NHLbj(QDVSSjC
+
+*SU,fmX9biZ"4Y1#+"bf9lei[*eR6i#VA%aNQaDF&M,1rJfB[Ai4&BdH+@2PKCh&
+
+iRZ,@d+B+3`a2Rh!-chaZJ'84-ddCP"'8GlBJ1''B983MFXG%q`QjRkMQSI*X'i(
+
+RS6h&,qXfqV$B+[adKQ"26pN(,p0pp%p%02Ae,9KhE"*dI)162$5Ya406Bip26lq
+
+DJFrZrr+PG)HqP1fYdrjphJAFf2GrGBerAF@IcGbLq3NV%8@mB#[`lI!bRre)qa&
+
+r'#ST!cMfl9[U9qbT"'$#SI$0"Bf-r*mTS0&ZmFXE3L6qJ(5FDcQiS*,%H(hQ)Vh
+
+a4BRSYI6k&CD+F+Z@T$A@@#D[1C&hC(B[1YZ0IUCPNBZ4UUmYV&lqZqKhF"TViHb
+
+mD9-C4Frp(QP1REcrF!A*-%#k"JG0qM*lkS,)Q&qc$(824-PrKhc#(IhSk8hiaVI
+
+6,p-lhaqmFLHpDDrF`3ZhmG*0&-Rq)&@4$%D6el)diJ(IGMc3qUBrNf%@*Y1DHQh
+
+Xc'ESS`Pp-[22C4eGY%1)`UE3Gd`K2Q$+lI4ARLXhCflFaKrmr`ljF)Zrhm,[YrM
+
+ll5'(r2ZhbrIe9ARVac"HPEKcfe1-!(i)Kad&m[#NKXd[!RRcb!KV01i4'Mm3(ZD
+
+2Cfi+Rr4`Z@FR3&A34T8)(m*LJBi21iPNZR('JappIC`"qbmM4mkefA"Kd5)8Al1
+
+"#&$4B')q',KmTBHL4j3,R)%qJGQai"4CV+$JApI!$ILk3FCSfRFR+2rMhe%f!2i
+
+&k)RmZ-6C-)AkJHj4PeDJaP"qb"1&HU4*P4lTq*Eip$pqJU`-(IN2h0SfJT6`$$r
+
+L'Nf)aJk+[&%CIfL19c",+pTlkN0P1A+`83[`"l[h&BkRq#'#@b*B*QRd*EIrfmp
+
+3!k6G6lTD03mLP3Af'&SF*!r'jJ8mY54Y$ph#LQka#3eFiY+4`eBbRY&JH6`8)I"
+
+k!DQhN!$Q"Rc,,9fGFR5AS#13!$Zl6fQ88qhfmN'cFh8d(&#4'abN1`0e+Db8DZB
+
+E!i3*3hUpKhB($rT'cJS!kjK6fB`&'2U+!*)!%0Mf!%6kfc6Z!FG-Cml!!`q3!,D
+
+dd(IBSKEiB@0NM%T`6`RJDee9XR[S1Qq)VJcD"3DUF$HN,k)1"q+X8RJ3%rp"&+0
+
+Q,l-1)(dS"G@XA*KXNT9ZFrJ,SHBMC4*`!KSK'(q'hMT!%*d%INYQ)0A6K"2&V#J
+
+k39"R9'Sdih@a`)H#!$L&Ya5c[!G"mVaRF11b0#54QIYX53YC9HP05DFX,099"@%
+
+)$`&8SDG85eMYL,3c)3e2c'4Zh`rJZVk3!&P&8PMb5fJ-33F091LC)(QjE*@BKR5
+
+i4[6m*Ek"e$lc5&q'U'ja`mK33+-G0NemZX-J&%Xj*@QiQF3()EEAI0-a!(5&+LJ
+
+SV*jf"9*+*F4%NjU%DLQVdRDm#IQ$661G6RNHAVdZ+GUXIdA(%UUTb,Bk8Qq'6!d
+
+r%CiG012-kS[JSBi"+NVP-D+q4RRm[*fr61pk(l1c+b2,&jcrdMrpjfYI28Rjacr
+
+T#cbA)h&M31h0Al6Q*H'8#lj"!4a34S,!9Bf'LL,!061FC6(JDS$G!KcDJDbc!dj
+
+Y6!M,Z9krPH9AUKL&qAl4Cd2LReXA-#r8hK9(@&NKIRN5IN)9Rra8@reQlU(q01p
+
+qZJ!6`m@9SkbR18DDJ"jmQ#3Ek![a4iiBmh@k5HChr&QCDklXD)`NA1&M9H4h(#a
+
+c9U[[%K(#A05)1,3ppU"8"&qCm4C`emN6i%B,cb(DmDYcX2(@ceMrFrf3!!IAB`h
+
+0L&Ml[UpA8,mFpklT4%GS9jqG`eer-MZr[MVh,3EqI!(`LV6PFN3@)r"+LlI)md#
+
+*-I)Bk5"4jL$PadICR12-S%)T!Rk"T3I2FRS6,"AT8b`cDH-DaA4NKVITb,!$Ah@
+
+9DEEi56f@MbN6IDP$%YrM"JXNUYbN9B&TN9H)[-XU,B%4+8rLZP[962QJCFRq(rc
+
+Y)5NmC8j*d6SNKFl`PK3BQl9[If8%S)G(pK-MQ*GKqDTHGH()-!Q"Imae(T3L1HH
+
+rY[c0h1cEVL#T5),A4k6MZKUUNSiVNpbZDYZTVUCRZKE[k`NEf$&k41EJ3iLElTj
+
+1eV!apMH[ihqhPj4Ii2ra4Z,,Mf'!P2eQr!b**eGVE*fV'#mm3dUb"eNQJ*ANRTK
+
+#U4TblDL1N!#EF4UiMH3Uq[%SF@)kSmX-phb)jDajSF5(R'CaZFMFSd@FJr+!jEU
+
+q'[eC[c[),h2)Cf[K&ma0PHEp2iLbfj%ha0CZ5#Q(qEKLP$YLA"$$*Rc%29N0MAR
+
+X(kb)&cjiacY8L[S3a%qXSa"q"S"e'LhM852rMhALH[pIeN@UqAAdL'QfLrSM4GE
+
+!U3-f93G6#$@d45jHmA-HQ2(EJAAF,khmHR@jKLkRKGTLl9&p)GEH["CU@5%H@HH
+
+EAaaJJZAGjh$1phd**!YBX!FaY'La-2Pbe#5SZa'0I2e`*PP`C5hk!HMDh%G413a
+
+Er`'"4h8H`QJB$&CSAqYcVH#pMbUZAEEC5C6"hCC&!Zed)$'`G*YlH#QiJeT@!Ed
+
+J32HN$#Na9a@b"%Y4+Y)"NRcUh%A%fm"'qXiLDe`,&k9LF"Xdk'PGF,,9!Hkm#QP
+
+$+SjB2SXc@UUH6"CI%#fa`Z8hM52Jf*U-Jr&+$AQD)@"8RlB`(EcZjSX-KMP+89d
+
+EIlDEE46SlC-D`8f00KK88QQB%1@L-8"laV3LJ"J"MjU3!'89VE4f#BMer[R16b&
+
+GE"40RekpIZdD60jVeliA+MlPcr,V*JT`,$&D%TcPLN,D*"i6NE%4%TB[9e!5p2V
+
+GkhLNK6V(`4Em!c*YHGE3k)&$,h#c!RC91T*JF28mPfDZe!f3!$RF[c"#J,9KBYQ
+
+`AE3VIj+mf22deUFq@TLYDK55-`l!'T-N)(2&ZXkTBbfA9RPk,Ehfr8bbl%UGRia
+
+GJ(ZKm2NlIM[B"5frdB*bL62`ZJA8A3)&0&Me)$km4m"PThQk511jl%lZJT`i6`D
+
+&dTXEI-#RPrL(V+X"4[NfqQNJ!K!PC$&H%(30A1M%@[Y&(-"h"%,clVZTRqM8@[2
+
+Uq#"0kaER3#mZp)c@@!pC8Nb&E3!"CXah6a9!ZL6Gbr%F+j1)R3*(0E##aKLpJGe
+
+2Ld+4q)4Npl"LA!(hCl@%%p54E$5`3aKdqP$Tb6L8Cd#P63,GRU,L+&UYEi*klP8
+
+X@$#!T0d5`%SSS5T*P4`(@PqJ@RF5C)BB5C!!%l"NN@3a(4TSZVl5l&UDEV63CqV
+
+UbUlcGlJ%lYq0P%P"+,$pZjQQMAe%Pq4(Y*a4&rbrfkJl`a+!68"rrc*0ph-*@1L
+
+r1r3TF99+mPK#*Q'h''jTlT)J%)#PS9GC85[lL!$GZjFbB)YB'XVIZ"qrb)U@I+i
+
+8B@fTm0164qUi4PAkN!$B&d@hdpk42!C[hR*TQqYIfTbkIE[T$#4SKMD9'PU-C8N
+
+#b@lfiPN"(01+DPfVDLrpkZVefijdk9GJ@CHpd2E[9mL`3*Nm#F&+2-r05Rm(+c1
+
+NQrAekq"N,fY43r9hF*,j)M"!I`FY1eT4VEq$PZ$`[RKYV+DfhQCT!&2bKdCE)BZ
+
+`P+F&d$i1aY[DqXSDcQGB3((AN[CE9PqJdJY46fXUY5pTLMe'XGA5Bi5d&pG@PZC
+
+II4hIj[&5r24qEIEAMl5Z+$l1cq0cUl9[NB54&qHADJrifr,F,%D8lmrZK)J!HLr
+
+L'&C[4T6@"5d)pc1@2PdG&P!6KlMCqc$FipU+"@k!XI``AlGFcFVFSfrm)4&k,TM
+
+mp13lri[l`Ara$DiaF0f[hb`YD'XUZJJq4Hi)4BKY!!i2p*JFBVM%Eb4m"iNGRi0
+
+N8l%qZfpIf)mS-F2"9YUZU'ba#D453Y[`l2`!1e5UIaP5QM8JUDLmXd#T,frQ6"P
+
+ASUQiT0TNN!$jAI3[RmFh&(%,2)#%([l!M82JUCJaGFJa5Vc[fim(H20K!eaUb&a
+
+mV`16##ZRUcXIm3#PS4-HP+Gc1"lSdSh9abk0F1FZk1JX!k6"ab!KYJ1DL@G*rM)
+
+,)V)8SL$+QN0L-+)3LF%KI$f1IK&q6i#-h8eR'%dfr3R@XV*2QdFJK%HU9ef*UHZ
+
+r[2NP'PKiBdLM`"#bMrq3!+)f@2fa![(-&L2!)FVLS3aVe6M)%'JdQEd&qLm)qcR
+
+qMV$(e%2mj,X3mcAi$b(')KXZFJPPm*L&LrZKXM&0#CI"PGb06T!!1,PU3Vb8m98
+
+6X(+`K(iA6fMi#,+J'M#1&IMKK*F$M&rZ9c5@3G+AL+#QqrMMrm!FqQr%3[Xm!,`
+
+4h8"J"r`VF+YU26`Pb"k##J1Vq$hcd#a3%A10i6,H'HL0-1)ZYkNjk*2`D)RPQ1I
+
+D,EJ(e-Xh2X"GNGR@f`VdejJVR`2Qhjd5QHkihYE`4m6GNaraM[cqL(H!@&(R&Kr
+
+aIX0afr@16k@`UBCV#EplZjK-8(IEj)'#UkaTYX#YR$qEa'I%-"EiaV2)L-#B3ej
+
+X-c94FS'$R'JjIadkpAD$!iS3UfYNE2F4CcebkeUmeU%kqV"bCMkH("$J0G`2J8@
+
+"9NbKVFcUYLKYA+M[aZ&jQCcA`+DYZ#CDTd#*[ERDLRhi[(4AG#CdC2!mT[)!*ad
+
+!IS6M22FC28f"3K4SlicS`rA@l8R"QC!!r!-CHNk88hHZmZi1M-IhYYBV%brpc3#
+
+&5FFe5@06ccPe6fBYPrLGqb'DFfY,Y*6dTGACPI9&RQ0id93Dd19d*d#@4*M)K[Z
+
+@jD@aZA"b@C0RYMXp*9b0bHc%Qd0NRXJp'hrGD3e+aC9N+HY+ce#8*EC8GiiLj@R
+
+RK@(P`K+`rXYQDMMCMMCD5`h4Ym$**PS#ah(q(ELrV*MMrG+%b'0R`,l&EV4RZX9
+
++jlV!kQ!p[*!!HBq3!2N!+TGK4hUcr`A3qKekVH0,Z'`dpE&1J21V$5r4C&#Vh*c
+
+XVNKNYG53!%8m6)qh3pjX6cl9QK$[+Sc9e1fGrRFf!l&c@NUSIkb((E%KX18Y'l$
+
+C$YU0l4%EE*6h"qkF@R3f%BR!1eHi*[!'AUR'`ICVSp'@[Ura4,Y0*h`V38*X(f&
+
+#cZ!+'L63L+#E@ccXLC!!J`f$I&bahqf'Tp[M12haEZQDE*%NLCkmNXk#6Ge1kf5
+
+62$L%ijZPacUTVT!!F`rUjFqm1XQ1dF![+b"![Dkr2`B#qS1J*cmpp(Gdi2SYMG$
+
+-eqlAp4IHpP+qrh"pIVlmHA9jILjq(YNQ&@`2%E,4haK&GVqH5CI(0Qa5(Ymacik
+
+j@NVF`IH3!$RN`b`SHQ#+qH(YGe`0a46Xd"R8)h)ZGUU)@VM-+r6D9NLIJED0-0N
+
+TD'&3qrd)0(rlMTbPKC8V5lFk(D3(QMQ1eN+2%hF1AZfj$86C5ACCFS@bFL$DL-b
+
+kq8@mA802%C+c@M4aNMFbhNi$P0c"5fiCfNAC%I1M-SJpL$0"0TK)d5Yf2jcAUU3
+
+*&$**#lYHC0SCNALiNCAGPSGL`6U63e6eKPDH6Q4(q836("k((K*cNKUfXLHrd`*
+
+KE#"6`51aT4&9BIj8'4kc*`RGN!#lZHKB($,!RB"A#q@5MM!IQG#eSk-1$[XTTl3
+
+2h,'Z+L[M`$*h'H4S`I@KJDSY0"TqG&330bMBa[1meT5HTJ`Kk1&PG1mL"ZVG8mf
+
+YAHa`4J4MK5"Hm5)3ji`G2)mUHM%F$)B"mUTMK08GjRY#kVZ)Xh'cEi-8C,he)IM
+
+)-@,'cl@bK@iQi[aBAIN!lVTL@&b[56V+T0-qB%(D*B&'$lHk**4"9bFZpX)p8LC
+
+B2Lc'ij(F2&'N-2fZI#``qqJh$RhS!cPq+*e"&V,hGbMCc9K9A3brQdQQ9[8E%`0
+
+*NqmLf5VP,8K39*Hlm8Uf6RGJD@cIH"#8dqQ&AG'QR4Uib&8T5X4PDIADB#[X"h&
+
+`HU$b)-q@erb*FTc,JJ!m1YG5hRJ[$NU,cb6)!jrP9A-qTd#qZlZRaUSY*dkKR!4
+
+(B'"S,$MrRF8QVQ*#1LK4INFTm5rMiUQfCH*G9Ne,Xj'iaUdci+QY4r+3!*8*XZ2
+
+5Rc1UcdkVj!YQ'j,Q"i+-2al(,SaiP!`["b$XS4MmY#Jim[[$$N-#`-[%Q4CXKVY
+
+cA,+93ld6!RRbF`Sk3+pXNhX"Vpm3R[ScaATF!@aI8'fAa(Fl[F5@3``RJrBZTAQ
+
+h#eFDakcfN!$GMfVXk+Hdm2a6MqN$rj4a&UbPi455YH8T1ZrS"j5VCNp-T&r*L9-
+
+mdRUV[!"b,(fM!peFl!A&(i+mQT5P%m"5$fe'84-!qaE1NZ+T&Qk(i3l[bP(ZJA!
+
+*Fb[Ybh4pZmrp2@LZN8@EB9bcKccK`Vkqa4EhpN%Fr*9$#-$BiaI&@dBSXbfpLaF
+
+[AIaSPD(D)&H1qE`Z"p2cV4+eCUdZ&HL+#dZTdG)j`UYha*@&3#2Va'6pEBJSA)T
+
+hIY*MLE'*ZRFV3f6AH(''HcL2km"Y#i2DlhT4TelpjJk4q,fDZr%+689DYZFGK0Y
+
+fq)Br$b`*048@G)qhINQ,L2hQVpdY$eR@#e9Bhq"Z*)0CL(PFZ`VZ8Z,YGeimJSL
+
+A$Uj)Ak"-L+e&NrH$V%I1@6)M$&!H*&Qbp9cRd5*d5XB`V[hqZ3)b(MYpCb6M9@Y
+
+((#Za"jR+kmhFQ@CfQD1r6cAJ6lMLZ@2q3(0TK(',cLiDh(RY'VF@4QYJhZ)YLj'
+
+AXL+0CMbP(FGFB#Q9CYp`9dSP3,i*eer30K9[VKkHCdJmA'-,'T[39bbrCJ0i5pV
+
+R`bX-h2@42d#Fm(SU9Z$3AG#MRm)KH`$`UAB)jG,Jb#TL-XJ1IE,C#!F+SlUiF%q
+
+@CYb-hZQLmc[@1`(U,Li[NLq*!'l"NF[5Y5V6c"02-K3D1amlcp'*eHpJ[Ar*%qp
+
+j+-,jm3C$1I3KjR&LTa,5md4$5CM$%qh#`2E"[iUNXPpkVR"P$3M,pKSZJG8@)Sk
+
+Kh2$i2-ph54!T-AZeJ)Fm!Qhc2f`X36h9qcPB@'*QjG0CI)&jlJ)!#DU%Q%C&f(-
+
+Ui[l1BBbU5PcEV1P,V6$EPcm4ffh5Ge-U9P9MiUVMME+Y`p2)VJqNM,2)'`',iF'
+
+#h"4C8ZC28(3Haik'9m0TKKaHcq@bik2N[R!1@fEi1C82Z%ZFec2E"R)VaPl(04V
+
+ij&SiP3U9m(Jpi`&N!-FhN!$cPY)Z6XE#(-QcNLJh8Y5GfRabAfRCAA,VYXq5"mF
+
+,&EJmpdYpVkUh!#L%6,qr'k"Ve`1"6fJkCk`0'NF,6$qE6[TF#8!Y[$K9Xd1UJ5V
+
+2"R$0rEJi[J$FHUSBcMK84T9XaRd)C$0M0YJFZ&A!)5a`P`#6DQ5%h(2UZrT)Y39
+
+Q"rZG(RBNj'YiJC0+KNATT(h+I()-MH1L1!EAb1![D9VpcD23UQ'GqKkVC+TZV%B
+
+V+lMK(&6JkB9Ce@0bQ"N101MK(&E4E('Hf@qTjl4@S6r"`ZeCfQ*LPpp1ND#SBl1
+
+(CR"HYKj@b"H(@k48$B!PlMC,ZE9YH"dmZP(PA-U,FaQFk,[bdFND%$H&Xbd!2Ip
+
+3P('5dLCbrV#J&*I0b[G5c30a`TU+Ud(&DFGi01e&,j8jl"NphV'`"N!8ZeJ6V&m
+
+b6j3Ue'AI3PVZ$I3MY5MYU%c`3irSQ$AKpc2+Y&&S9T'QE"Np)SlGPILH2-kEeHf
+
+!MC5fZ'-j`-D$,#meM2H8BjR4irMPL%jhY2-KKrj(K(4F32#Q[Hb2fFCh1G,hM36
+
+(1G,&$cHEk$0[m6NZ&cMiAV1AEAI95*QjA,3lJq8hA"Tme#JE5KYPLR6+$!3B6(V
+
+qmIJGKLCKIFRTfE$KI0T5q")bJm(T,&1e[U3MCQX[h)6hj!lmIa8DINfS32KPZc6
+
+eIQMNZdJ1Jr*PP`DF-1NSa%d6FXi$9JYCBEQAQR0)hDcTrF"bEiFBI,a-9R-qkmY
+
+drbch,TX(&Zp4M#)F-5qC4YNXSFZk8Z#k&GY5e,1k`[!!8&mFce81K+`LbePJ5m*
+
+Y3UZ9A0PK`&!5S(d-d5LBfZBSlLh6iE,MB&#pG"J8a#eYDqQ8fk`Be*!!@K30HmJ
+
+1@8iZV6$3'&3,3f2+9j'-dF3SH#*2DmTr4f*ail3)(68Z+Dla"!rYSZ(8T8J`(cj
+
+IUAq,DcVU54`5pL0-#h2TN!!SaB@%VM"AD`3bZHYfQ*R!C#cqL[dM10`H$(-0LHX
+
+D!mF[3JEhSf$XIM3dI0FJ8MPfLl6qAT[RlDIPjkYc[idr,q-'LIU+6iEM#rG6N!$
+
+($qdQLPZ8cr@`LEcA@lN(j28$+$["NJ[9'"p$U!2EM`r8dA-5@1C4Z(`U-JaId$!
+
+5UG-FQal9r(&E%#`pXX,&#+j"ra&*"+a(++lE5V@mrKj$)[!I#$V-2)LL)4&%`IJ
+
+MK,Y)BdhZ0R36fUr,L,DI%9*M9B#((mME(e&dS(N86I`LMJlTMe$+CR!)TBcTI[d
+
+C5ANkR&ZY3[eT)3e)KK*$Nr+)VQ2!4h6P10N5hiL`@f(dpbFrBfb2qfjSQP%ZB-$
+
+c1JrEd18LEBNZXRp!qT64TaX+32`5mbN*82)LF%AAR%L9`+KcXJ"m!$8jRVHX5l5
+
+*&6CecF2(Xp9R&CAd5aH99C[G&G5-VVf)Y`DjbadN8-%"VNP9Qalf,@@rpfbb1q@
+
+(8[L,*jHNiYdDL`qUb59*$&m0Y(6(92dKVeJ4,HS8GmUUUc&3p"2jB(kM0riiLQ(
+
+c4SUPhDd0UCd-9,2DEq8%V(+i)lZiJmN-Fh4S9-c6#alFMD(5HrHZCGUad+BrZ-r
+
+$RH'NYIVaB-5[+*,$bQPQEXVMK,jbeG,L&D0X!k)S*hV,)8r(pi1,5A*iQ4+X%Aq
+
+DdTHhITe-IARlpXd[VeKTQ`q,),1$GPC1!N0r@S["03BURH'Z`4GK,6RF@i4D3`)
+
+9bd!a&JY+#)PZ&i)+'Jf6j&GR!m'mmJUV")#SMkZZ2r-1FUD!APRcSqUEbN6K-IH
+
+LdKk[8$rU2N09*p+M%d[U+RjN-p1rBFj%jMJq!B(klklp!AReb'83LEFPUj'[@3r
+
+HPl#&'![B$cE`@i`Q43"1S(Rm05ad1fG)(,Tr64Z2'40j0"*[BpU2"()mL(G(I`D
+
+&4T%rJ4SM'J@ZrFLNJjjH2%RGIp-ZpfTa4r'`00G)KFX"TdCm5Ji2'GFVL14i!Yd
+
+)G"8K'Qjh$49UFNbJ(SI!e*5kTD2$Ui#P0dE%CIbdklqQeSqF+SqmIU91jF0U!2J
+
+2(pN(SN[P&40K*RhJ8pTJ(#pjfhEr*pGdQ$FiM*3F@F[H8FDGTYj$$SjaY)ZM9qa
+
+XiAreK#[VP%0A!!m6&18Ah[LG(0IQjUTqI49'U@)(2RiL0HbiPH)$J)DAafrLacQ
+
+%Mp#M!KrBeK`TJ1@$$`KIm&TFY8)YaK$6"T1,URL"[[B4@Nh9a(9dfCJrQ@X6Cqh
+
+39M0+(!%qG0!#j$+6rBVETN*$BEaj!V[+mEPYQV$!DceFI-%lNh(CJR5JP-H(f##
+
+@E2h"c$QR`-MI'TYEKmj@S-$3ah)%1(#`6Qj"T+hMV"adMM%lBUZAhJ&al5S0RG[
+
+6#"ED04`r@cT+NX!MY(TBQA#dacjU41A$422J`(U*mK#0PL!1(+B-%FM#l2J49PF
+
+V(QkSSSIPp#0De9N-Sehb`1U)J-@5hIVL2eHm6MShhfhQhRB-m)i@mfQ*m0-cee4
+
+Zh+&G@1I$E92(Z"pKIV`ZPlFak"6fHeNA@f9Drf8rrX-ZI"Ufkf85Dk2DiF!cfC!
+
+!A%,ZEGTZP,#XI9[Rd(BrHZf"rl'q['UrAD!S%j6(fqS8`EGiMc-aIIZ#`)bbKR!
+
+9Y[F`E("*CH1S(I38K([r(Z-X+mRMmH2bh'0Iimd(ahUPMBLiFHkNZ-ShLY$cMHI
+
+6k(jK5j!!2k'%9mk*k5Z0FAV1[ChBjS+rVJV&NSXJ,Q,`i9iUUmc!JCFBfY(+,'N
+
+GC&cVj!dr0#rdqB58d-+3!!)%52QMQd"I364#'KIFh6`BbPCSahTLJ0)3c+A'YDF
+
+$TV)VVrhM&eG@H8&3KE!KSd!i#EP3!bVGN4Ui)Br9B!A!@d64#`$IUE)S)4+j"r&
+
+!6)3db4)[-cD1VTG'e6GGNj8Qd%N66A$-GUd$5RGE8iN)`+T"A9b"#l2I"HjePa0
+
+S4*C#eN$k-59"B'Z4Pr+,a@K-`*+K&`6%95+4IdBrQqMIYALk1QL`RG6E1-))"qb
+
+*li&$J&KE8ZcfdbP-HZA`bX'Shm-3EpQ*"0B)"UDhF-APXLAYD"L+QYiY`U)eK&9
+
+)D-`Ge(X&p1FPQM66)C9PG5a'Sb"cFj@6#+6),!N"0SK#L'MGdrM)3!`2Ac"LK3!
+
+%D)Ze!diJ82@"LfA"#-ZRPD`J-&i)j()@Ei*TDl,r1D4SibGrFXTH(6VPELF@QaD
+
+ea#XiJleDC%GRamMP8ip4+UIRcbpNEE6h-D"`H$lCk)!b(0Nq@hq!iG)(pBGcLh2
+
+qR*Y[FD*Cl6k#kU2[m#!1Vm)P&I0cUfYk[%"!-9cf1IS`hQJ6[TTEA&fZcrV4`SI
+
+Ka*Z,'qNRk(Rq(#,S#I5+H#66dDFmFG*mQ[4",L@CNl0ZMJb"Y58"9J"3"jap4Ej
+
+GfrmiZl6m(4kj`*YAbKUk1P-mP[k)#ASQjF'RE--2Cj5Y,BN2*9[mA3PSA,HrEr#
+
+%-[T9XPrBbPhG!SVa@G88'NlJ-1F38EQVdbM6p*5aIGYr#[23MS[%l%hH,DN`i0`
+
+aGd5PlT0b4@@,1lIFd4LR3j14Z,YmGhM"R"Y11fE5C`VYC5PLeYA3`RK`+FT$h#c
+
+9&dd+'"5FE4%M5L6I6krp2H&ap#B-Vd$$#V$HEV(dQ%&DCa@ibM3GBTS-Y),&mR6
+
+e'%T-e0I[N!1'&EIFFU563!jcd-M#IST$[!9*19@IB&BhH`e20mfj3DZp(3iQVLj
+
+EmXNGq"1)kdUr!fXHdNY4'#la6KNdX8!JC$fdNMYh`*J5#jrKCMCa6Paa&,jhJ11
+
+4`)ZC4-UZV(61mGh-*[bab8DRjpK)AE80MD,d#k%(aJGMmZiAlY#QIq!Ied&La'!
+
+CCH9YRL[ehkc2B@Gaiq2IhBG,5rKMCHRqdQpr@ljmBrMbdM*P&'HSKCHIhVeIqfh
+
+keCh[mF[D0pMcPp,E[rL9R3)X-pcd-ec(k+YVqRLiQBSc2+UY,-pr&eqp9Ei+"Dq
+
+YifJHdbhlGcY*kL)ZJ56X,mr5"FMp`MS1+E9he@jCU$hK9d(m)V9ja$b6G(kYYdj
+
+J*6@@5aeTmVLrGm9ref82Y#lFjB@0@MUSp'9dP8)mHSUMJ06@1frC@L@%ELAUL@!
+
+PF1DpbS5lMQidZ%05cKadr1hXfP9C$K`'*AL"MVpXZc`@c$#`UN(G"h4f*bj2!c$
+
+FGM)SkicB8M0"80%9L&ZhV#lC%e@`IY&"rDmQLM8F@fiMh(ai0KbbF0)&5Z1+kIF
+
+aJ"UhPG(YK1QSjCc%C&iX8BQMQA%@VY1+L@HP)K&el9iP+)*I$b94QYD6dR!@0,%
+
+14GS@H3IU#4D1MMbCM,e65FMj@@YFA4[M(,Gd$@Q3!2Z5LhKk9rTMG5k02pZRB"K
+
+khNlj44EMa&YJDi2*9%papeED`-[ZiY@`RQ"Ij&5AGBm84c2FKrfdPYj2CrA-Z2K
+
+UmLbJFr*b6H[ShX)%Plk%D5VLP&jk#5%@V2i)c`NL(-)HHr*'3MAm&+9'q#[kRE&
+
+-P!I(2+1"HePAD#bDreXi`8&AVX`kChqTXLkZ'NLA[Tm+$AH0JRS&iZ#MA[*%HP6
+
+(3N5!"6l5@5RAqVU"m3Te@[KaSY29PH#bDLS@[Q44leQ+(L`q0&peU2#fB&0$J)B
+
+XlHCiUYKl)N+M4j,rALQ[#l0ZT*Ff1adZT%AlCRTT)rZprRE,+D@Ql(q5bNX[Jr,
+
+!4H'+@@S)MPI%`122X%h,KcIpKhCk*(EPD4%RS$&qp1RhfS,-'`"CYp6VD`H84Li
+
+0Sf5-NHVNT3`iTjI`3c1pa&69Dm4U*iMG(q'PRb9`Rer$p5#Yim!qABpIlGED#$i
+
+QQpAYFqmV"BMRM%U@lPki5e,UVXjAE!49d"J9RZ!q1aB0K@RN)lb'+9jk(bGhGTN
+
+rGBA+CmkI(CYGaVBY9i0S*dZ-L4C6PpJ3Z-PLG9@[aYd*l@X[p"U0GV'$`heeFPr
+
+NL5SBYQ'9CHP1m`dLepETI!4&#T)"f(cJdE96M0ifFVHdKEmmY4!Z(AdfS'#PTMm
+
++lrFiReeAQl%rip!P6l'$Z#je$fBCk06lkD8C8k+,UKc5CceJ@N%-0P[II6)'J,Q
+
+Z4d![9`PS%1E!QEA`VlQc%0i3)V4H0kYBI[EeCBlhl"r9Sk8,+*h0-A-K*b$3Uq4
+
+kaP8a9PDA-b0Z@V5%Ur)BpbE3)1a0Z*II'[+PGKj"kI0%KEI&3aPqH4I0HdGFF((
+
+48L1fMK2FFHh#$qkhK!'dB-pc5M)jmYVBcXEMZ2!6IehfPADk#6KRHc+'2`j!8ch
+
+ZS+a!)DCidH4Mf5QHV+91YC3!FPlG6%-rN!"B+([E2-p"bc69YZCRcZG46d@r(TE
+
+'U!cah!'%*$[2fD)(BcYc`TL`QFAeLhR@NREaSk'6UfY9qEedaF#aXJ1mKcB8'Y6
+
+931GNCRSj'0dZ,[$KdNjTpa'h5Klc0TI-FV3p%3MKJAXUm8rj,8SVDia@MM$S*E8
+
+phkEf"jpDEEC3N!#9T!-YlGRSJ1cf40beh-@K$McL)-ENf1ThMh-31r61Z4p85Ad
+
+M(KHJcXD9C%j6m'MAi+82@UUU`LILJh*mLFd(MJlDeVj6@Pa`c1X2PdGE-!X6I'T
+
++ArKdKSm+G,MKS&*XVqC[FbaNf1KL!krASiZQ5)3ak`k5*bj!b+1afI61hPfD$3V
+
+'h9)1KHSU3UUChMr'CSNXfBE*XJmhM$`Pjaf+S[LhU9LbImTQBEFG'p'GV-Ze%E*
+
+8SdLA9k&EQNj@fpLk)ND5ElNXY`Z8CL[[i@G*CJjNjZ*9Y*N%-CP46G6#I,eZ((c
+
+qr`#3"!d1G@0LE'pREbjTEQC[,6-!N"&V[3#3$`%-*3!"HY-!!-%AXH#c)$q3#!!
+
+!Yi5dUVH%Y+i!N!E$FJ#3"MCK!!$ic`#3"[A0$NiAmRL##SL(P!bBE8L6E0Ce$@M
+
+`f8)jr6T+&TUrDGBYR$$)#+GikNQ[GE-eVld1Q,R*3i*qY!*GJkj*ehGQ)kpQ2Gc
+
+3)r`k51#44I+-3%DBUZHSl8HGBBVraUhGERqr2prTlIARdX0"[ceZjHedpcJpb"l
+
+Rr#TpNJq'RAi[rGAm,p1p3ImJ'3rc`8(@'fIGq9(qY$1I*2mTZG2TjJ[001Pk[if
+
+2lYaI@pYHqGGYIT!!2adYT%XEQemZVpc"ljZ$r-P#DKrI2ea)0lFfPPD@lfqYT(K
+
+JGAeeHh9M28RfaYdZ*KdP0qaINU6mjj0aEkeHGT!!*dPr2$SFMiCTPJlb`d%qc(Z
+
+ME-6YpII5dD0FAXVEid'Hl[LMep*1,ceke'Np5[Ik@1aSe1RY*e`KIq6E`)R--RL
+
+5YqI6G(8bbP%f60[jAUF(j"ae4Sr5lBfjG'9jGAXZk3r5YBh&j6Qqf*0RG81F+8Z
+
+lRH')QcRU$pT$6,D5B3Rm-@j[Q2ClHB)I1KLdLa&pNc*`4rHMNh&K2Ki![,@bZ2c
+
+&aKCQlr4DhA'E@`@)"PNk2-aD1HE[YG0@(j-"bM)(aq-DYM&-0m0U$[+$hAcJ%qY
+
+S5E%DIV@b[L`2I`X-3I@+SL&jJ3Eqc6AS1%1Z(4qN'3Bk((4kSl`p4e#NKrNJiH3
+
+b$K!c((G(',2E6E[prQ1mqMM(9!91aN0J!1$%E1[p%DLTf#UC,4)+pY(VMp,KZ$2
+
++GVX#,Eb1F8#D25jXe,GGrZFNq3@(`9J,#qPFUMm5r-A2T)$LChdC(ea5ji3T#bT
+
+pbCDYrZ%aPZjND9aTSk5pr)LNPrDlE@A-9[m!C%jHZ`['(kBlpX)eB#FLZG-Q"E@
+
+b,MHrBipI8kj)ZZ"-d-4"GTcZ%R*!k3%3pm3i)8j%2XLkJcaV(cX[J*e'``5-mU6
+
+6(aYE'+X0JH2Kk28-aDK#!Z#QHJ##'$5"*m!DkEMAcBI+@Nqb38H3!,fe!P4XTSm
+
+`PAlA(HI*pYEp&Fbp('BCTLe-c"P!V!iP%T+`4!CG`!r[,AkqFLZZC*M)#cN%P,i
+
+a*j4,qA6$@6%Jl-@%bHjid"(C-IYPIb`cNpLka`3Ld!B#hm0%lE5cPalMJFf0&&b
+
+eZE&G`MHT50LRfmeE'8N0!%a(R4(!)2T#'*5k)$0G!E5Ra0jmiUVak0%aAVdf6'd
+
+jej0%#EAGbETjLk*P,ed$RH'$[6fXRqMUkc#$YLS+i9(jc2CKipN)K-N`REQlq#m
+
+VqZEFM)"YCRhaVRda2q2FUb!Z'*C),(lH,,NCf2LDHMpIh&TGr'5YT0BJB-'lQbY
+
+EfeqQDk[hYZm&GMkMBf0Uk,"rZEHjZ,55hPeFAradjHl+qRD5I1iN&)NQq@mRrl$
+
+Pp'lH'br)$`$%`J*q)!lNKl@0TF@eq%YiB2ZceI92mF[E2I1jX&M1&0Ej(!(FjZQ
+
+A58+r3$5(#3j",QK@e)E5DU%e&SI$cMjS0A"ZZL0rAR1H#!60pp[m@LDj0THS9$m
+
+B3bb+fU"HaN3"6(a'e@)V'qBh1MeSe@%K4l)Nc#Cdb'Q(A**XbU8&M!f)6T@@ZL"
+
+4`GNSE#B"@E8HCEep0`9!6f"i+Uad[p[IK9B+Jr)TTIG,hM%)+Ki&d!'3!!E9#`5
+
++RLX3+%bTZc2dr"hqcABlZi0XF"c9!GJl![1HJ'#Sm0f&dJdB-F+'+-!fi!NCPem
+
+Ze(GBE03@U9ZeK9pXYGZ(kP3aDhZ9'AbPTjr3,Y$2CU[[E[S2(kAcmp3X"4fe@[N
+
+K23E6pq+k8%JGp'PMd*k"j`!G-l9X&L1E4*!!Leq3!02-8HX%@,%C$%fJ%AiJmf*
+
+B9eH4pT6!C2I1L+haB!!4$Z8h'2GkG$)#JV%(UUf`LL%@d1hfMp,f-8EVY0)K6!&
+
+B*'0mHJY,$#Z66BM3YN%c52'JqE'%*eQRUbrKfpia(*(GiS(HNrjM9D`b50a(XmY
+
+#fLSL(d%1Jbma!BKCL")XGBYVK['Sc*jN)K(`+[G&%T[0jrIR$8+NN!$VH!9!iaC
+
+,diPQa!("M*@4bqNcG3Bk!mK+4D#UT#X9@0+9%TLSUN"H6Qj[f5Y)SbQ,RBLNVbP
+
+DI4SZAE943,--1kI'Pfd',i*N9'YeB&[")pQ(%ZVTX2B@Ya#3!'&b-XMPlj&bLSY
+
+,[6*k4%Zba)3-862l`Zr'f%*lhMm+$QmMc!V&H25S$m)95)(#JR3*MU*3@b,-$YU
+
+#03bU(ij"eMk"UVj1V`IR#!k8X@1Bci@Jl%0%)1EYQ@rDkRGK28%+"ZXB%fDlZc5
+
+ip"0m+rT!Pdf*K9r&$!A%GcXpHF8!)4"*iA--U3%`mm+GM3hBXKRJV1r2i)0,E%l
+
+p#U@bD%TX`N"CA9VFASPQaN[erpc,f"a!B3a')(MUjXE'F(YSAD3jm!0LdpHLYCY
+
+eMl*MJ1P%XrZVm16ER5HG0S)(2N#R92VK65Ueb4a`&Jpc[!r'!3BVmPKD[,HbqZR
+
+k"N#`#ANKpJ*`5a13!)S&hPN'CcN3C2QF%Z0U6icT9ZH3!0a"F3cUlS0ehBj`(T,
+
+I-,&BFa%!0M5ja!344"iec$%&H9qG02845GldbQFJRS5cUN&QNR``k!p!qm,f4rd
+
+aV$[aVRY6`j%JU8`@UYP2D'e$)`32Xc3SKB$D1G!R%Q`'DjUC)(PfD@0p'i4`Ebl
+
+C0,E*4khjkkN*jaiff`2KFVNNAJkph8pRmJ(`1M-"KL&ZC3Z3!!28P2FJkbLSZ'!
+
+CB`iUlk$rK%5*MC6-)*jq4j!!'`fd6E+K''5IKPqf9Zk'hf4Y9lDC6"'B9#BTIF#
+
+DEXfV,cj+NN2ZU4)r-P*kb,d,6r#"Fr1Xh5B("+LB3E!6hVj@`dMa+R+&U4HC#[B
+
+qT'&P[9h+#0qblY``%lGZ[jiYHhqkE*RPG0Q[p&faZV"GFkM20SpS#*N9,-FAP(!
+
+%$$$+A365JUKBp")#FHRQ"(2"!3)1N!!c#)#M)JJ#$'bHCd#)H0mL[jRN$kXhAc5
+
+#3YLZHN)Se0m*#,P5Lp91imDIXCL-@,%B[icl,"0C5N8Lc[[YpShHQ1%Ll%C64LV
+
+NA#A"+L-rb@X*P%r[jA0#%RJ[*VbFridG+NB)Z)Pi81&H*T%BSI&jXYDS%*`ka#d
+
+eIXf$mh%4Ji&#NrJ%0Ij"YXr!$!522)C*6!2*S%QH$ESG[!H&+CLjK1@j@Tp)qGr
+
+FApPD,A6m-c(bA-*rd4mmPQJBRfjMGb0%@%lc#(8J)D3H6$jYVGk&@r#jrDa4*`T
+
+PLb`8)SXrA4NA0PZ4[I$j`SV2N9%[1Ri+eR*0'qLii+m`XJUQqU2EqP%J0I%)9&"
+
+B-1a-kEXTHVRXBV1kE%I25F6%#IR&JNfq2eZ`MeNYf$lkbi+RAN%kbp$LlVL$3"i
+
+#HqTJA,IBRIS)`lkqAhQhc(m0@i21,[0-*'riG1eqDh`!hpZL6ida#YkAM*I[B(L
+
+*XJ*5-I05!U`!i8Z!QCX5i@AJmZN+D0NR2`(VH9"X$MDBa6P&865!B&$XXri4cD)
+
+jLf$eJ5Z#j(%2LB"X&aZ!c6pp'"l4U)--3'AN5bjZ0iGIE&irBa0AqC9'(dGd&H"
+
+lL5d#S$B,C+B#8[cp*cbjfr@Y!)j,mifqSP[U1ZH#8JGA&-X2IYVD,p`Zqd8Yl1H
+
+6fG*h00Y48L9[hFCE(K9N#+0hEC4`E'BlDZAFJAQLBVldZdfpLUXG2C@jC*!!d90
+
+42adHTC!!%ekJ'`R"2KaQqrN9GCb*f)QmA9frYlQbC'ld(qAIFjhlQh'1r1+Tb+d
+
+8VPZDSP`rZBr0)-b,RlDh-*RqG'plCA26IJXD64mNIHJ[DSL'MmaRj(IKTr@0CAR
+
+X-KCX(U[M3jGbLSJ)T"S1pKe0*Z5T%H@H#"NIXI4[C[`aaIa-fTR2NFH*QDM4Sd(
+
+ZD@d,N!#5#-625I$p5HKe,SD%e2"Tl'3mFBJ`+)4GPeii!k,UiUJ'SK81YfAFdab
+
+UH6XGj(q#q30#9,"IXRl!N!$PI!6F!9)&j-k4T#ZS4B$19'+SJP!-jXXD,jDBr,M
+
+%X$9GSY&5f',BmIN183i!B0Ble*&qf+&1m,FGaU@&Y+haDGKM@22j(SHMr2!`,0)
+
+hDB2pX%SEiQqlV(BArBDibEMXme9'VRcP998d(GRBXl$8J#90[NLJGl56)@kh0'a
+
+SaY3p$HE6dPTSN!!%E4SmL%Q!C*!!rfl-,SX*q%+eJKLSQ33bX3j-,"0picY%N!"
+
+jpQ4LQlhLEe8T%pZK3PDp-2`ka0qN#`+Xe-2T,+0+-&"&r[5,6+9-HGhLQCU)M)#
+
+U3&TRFdk`qBf*8E01jHXlAPl3MZL[8d[M4d#-M[S&)T!!$$U("1JT"T'qJiBl)Kb
+
+L9)[r*[N+8$KY9"J*'(T&'6%!84-(Rlk-A6pl6!Ek#qQF))HL1cT"!k-5$B!khjU
+
+XPM+JBBkU(F))Brjfh)2`4PD1iD'SH'3IJli%)[iAVlmRV!U+iS48E'@IAa"@JF4
+
+!@"C'F4#q4'(ee*mJ1+'j$f#!8*1BkD*'jIaeMH8%#p+i'Q[%bcXq#dG"!3[d@D,
+
+k$(1b8SHC@rU1Xb2NmQ5TCA8-phfpY)Ri&[5!2)D8Ga5TF4piVdVEPmk5G!Tj5S$
+
+"4NPi*Hl3-%A,h"5GEX4(3fScQ(KA8HDDHJ)[[4!"H,24MAcrQ5)(9fL-b9Z@pMS
+
+$I0Sd+ZN6SV"P0[b!c&-IV"8V!%!2)!UEBTJ$SHedq+KrT"-FC%ml"q1$1)PZ56P
+
+#X[IQk@ZTNGUrS`li#A!'[A!'+B#Lkdr0*J9DL5`@-mmZbQE8$4JHL(H&M24MVJc
+
+S`pBaY+d-D*9k'NErLE4%1UjX-G,a`[Jear(q+kJlKVhJc,D89UTAB#Kdad2NSE%
+
+XHBQ,X&QCG1AUN!#hJJf&*C55N!""1TN['`a39%6f!E5UU658dN`PBGUMR*k%J8Z
+
+(0DVPCK0f116GR$'981-PS,G(i[VB4Z4265C,E$*b[HdY$)8!,F,VG1f2-Q4KQ2M
+
+%LKqA#b'844-Q@AHr2m!3"baA)NThFmdpmRd0FU5I,K(hI(ih4j!!6BaD[-l5#U`
+
+6F9b#IXliS)ph"NFG$&LbLaJeCX6#,HX2B2*lSd3blLRXS5GS%"hR&%jG0[Zmld!
+
+jYrXR@3"5qYC'l%GjEhXr6`'XpY4NIYkqdk6Gd#3NIbkZDHI1jXDQZIXEkrl$jPV
+
+i*(aK2jMM[b%jJ(H#'#9blNY`h0-p9r#S9adrK6EZ3jqi*Yi)dP"PESbCEV*F,43
+
+e(B&"#'Y8D'LX0$CV"8Ha-2*MpmJc)pp-9'8ePCQ0BhJ*"N@!if'c%'M%bH[PBe0
+
+e4*@cL"e`fE4KL+M-Ta)'8m-*ZYUV(U!ZJ$@AR6rV80ZbVhbpA,QLiIA@$e@8KTe
+
+[h[[6bXm"(e"3ZFD0*ek"J)36lGF!JlU4UdM-I)d+!8)JJV85&J+BekMS0DKBrm!
+
+!+Q,McAY3L!(l(!m@'IU')'6lJ5%+*!K)h["$YhBYC*Kr!d2Jm"F@ED-$N!"GI-f
+
+B3KCLZTi6K5@S[L'*LL0+LK$)[1%)iL)b41RL[M)3id-[G08*HCadq-`1VmmRTda
+
+41X6B`A#%Cej3KkE*[Q@2!L5&lAdP*`p98"A-mCh*'Krk'5-9PC`"T6*aAk2%%hG
+
+IBk3)"d#d9ccb$L4L4JH)E&r*EZ`jYM#HV0lP&X8eTF89PHK60IpLh$X`bDSb!bZ
+
+j#a@cY)TJKF&-C$@51&IF##30%P&C@kKHM$r*6Z,R4*Y,q2eJ,$k+&DPKl4&r@V"
+
+59c*q$Em5FLFZE)1i4YaYrlZHD3$iIbA[pM20qbHCqih0pFVqHHjd,@PXi&hHeHT
+
+fp"HcZ9Dfc1CDf6+E#eqBcB92`KHHNIdbr1!6m,I3@APr2EbK2rNVqQYi4`1,fKN
+
+KS6pl*2iQ[pJ,$02C!q%R#pMTMeV,DcrF@9fc,5q(,5rlPTGpbmYKbmZfCAbKNdR
+
+(U2hJ"CcXqF82RkfXkF5I,PhjI!+hS$)%FUGBMba3!pfq5p$mK!DP5Y(,B,AXX1m
+
+ZY-J+Kl$LT%UR0cd0NpcZ*)PeB[FTcjk85V%dQ!Ba#[pNJhpSkCA`I#$A8!&l5D`
+
+1-)GEi53k%PmLV(%5CCC6r*cVKRGTCqfJIQf2++,r`e1dII[b#dr4FA'ar0T3j#"
+
+rf2`TSp6UA6Gl+TUmqqX[AU%Y1%#pm!S0#"IEVSe#$R+jlD*mmaf1%pefl3"1&[f
+
+$#HKV$C!!,PCmDJ+@J'iF3*RNDdbA42mpVQY2EiVT(f`ph@k%FiRQ8eZ[K(0KaQ#
+
++lcbpiU%r#kA#c6Z63UF)HHIaRC($paD@i5384AaCmX0EHQMirMZ6VhMShp9PCHp
+
+9b)&aV#,bM&aHZRiR62-pDJ`S%6@P+MG)R5-(4(PF)SH[A`MZ6mLUSGRYqeB-"iB
+
+N`J-`[$q#63AHI@rTV-!rqRki%5'%*P(e8N6N[IX62h&kMd%cbbACd*1C,1b)NFb
+
+bi@U48Ma!MPccJhaHeL19TYVHCXe03)DNk#69`YaR9DKrTR+ILF(`N35a6X6&A(#
+
+#aHkCG-9r``LPFq!q99QZ3FTia3V"2ULiJ8[riGml*l-N4k'Grl!+LJAVaY@EUrE
+
+paM,JbN-RHE0dkbCr(iqI2$BKd1R+hbNTp4er&P*Kr58D5PP3!1BF%D+L94`%01J
+
+F&`,K[JV[[dJ%6p[%L,PN-pA[,fY0*-Q*-[e"2KS2@!U#$1#6$RVXS6'L4'#4kdm
+
+m8J+PK%j&RJ&FEj!!8a"SJap2p2f4)!eiTPF+IT!!IUI[eeS4T,iGQm2+cErCDm@
+
+5c@CrC-U6jejcT@hr(9Zk6rmcAdBd&)e+$6EHdU8UaNPRUXeeDQcVPlFE,MhV@Y2
+
+FI8"3C&2T(DM,FbZeh43'q388FqQGa69i%4J2SKC3ff$4FCa8Hlc0b[#R!8-SAfQ
+
+pajd"dLaaF#"RLYJ4&Q"NDHl9'aG#L3-UGe$UMb,VSQ9"eIQdd%M-1kQMm!*a4X"
+
+Ek!hCF4JpH2!`HH#+rq($D`4!qA(+raMH)HcarEF99!A9el#2T(#1H5Q3!+T,i6R
+
+!K6kkQm&$QJSDD3,!*%#*@#0@3DHA[)MKJ$-LFUh8cVbdUVTm`2S1jlc0VUL#eIL
+
+beFiQ@P2lFTClfaZEdR'cFAplmrkfh)c`EKqm)%,'%`$l'35m`-$(#m%)2@P&#[`
+
+a&aS%*R19Zq&FX6VC1dM+ZHUUA"e1NPY"%A#GK4l3TCkF#q!rHqcV[CUUHF0L2AA
+
+MefXC9I"')D$HFXFfa#jcAY!%bK@K3D,JNZmUek,-BH#S8$R[&UHiQdJFQqP8iZL
+
+A(eU3!$LkS`pb5"b(d61*8hcmEa,()1i+Td*mT)0ca!-3#[HLPHiRGF-a$PAHI"%
+
+ChS[[RNXCZ8LML'PkVV-jS'+hMrY(81%4V&QpXQ)Ajb$Yibk5[)9q&lYP4JTQMc,
+
+fRcKeXPa11L51FA&'PN"cb*4@0S*Q%H!DPb-p9d'P@[&G9N9SI'YRq#KV%r(A`JN
+
+ck0Jj[G'KZ1Y%lR5`+c4b%)lH*&0GZ#1U$NZ8DcEX$JS[%jTH4r&Hce3Ni5R%U[I
+
+[YC`*,&')Q6G-%E@--m22BUEBNk9XH-959$0[efD)REBLqe5RHXBqrG##S,%pIC!
+
+!3p%iNK*4,40*%h$fNkBaS%I8-ailUDPmKAd8aQ[lQZH&--*CpR6jp+0C2QBZ*Rk
+
+V(&Zd([QC+3SVePB*RQ4#DDPjd4YJY`piGDFD(DLP3&-4fk)!"K%aA*eeBr'E1I-
+
+p!,T"XTFpBC85i[&iK*9N,"p6%H1(VqLe6aYE50!rk3ck25NV$eh6h'"#r,Elk&V
+
+@mLhXd*k-&1C,U2HSQrLY&*Ne5*!!'ZmD$(%'d6fbi'kq"e9$45@a+plhBUFfbC0
+
+BUB1p9)DQ+S9iZMPhaUN8!eSVMS-@-V5ikH996e!096IM%&F(I9arj0'&Q29#G4b
+
+)%AY&T@qb+R`R&D*H&ehABA[2VjE%8G,SJ4l&#3pRed2a+SrLcSILj"PQY0Fh9Zq
+
+YVReTVAI"DU2Dd0ZdS'lhJ2+%ZhIhclHrc3BPSDG3!053!)U)fA5'k53Dh0i@2j2
+
+13YjL)IlKT+LlNH'LYqhYklF5i+,F(Gj@q9+Hpr&X1dTdZ!+UKHSc4V")(80ma#D
+
+j#9#!`P-DJrT!GeFETjVGK3BJ3P6k5c8E5!FLR4LbH(BE44)YB%9UkJbZX!Q%4dr
+
+K)N9K3,CS#&SD5E,bP2@#`$('4J1ENkb[9X33K*Dml'4)lV0E6C3me*UeV`m"J*k
+
+FiN1c!HH#--'QYHCS0e1j60A&GE,f3M1(Y995Z!!"Kmh4AeSUm$k8'3@@+kiUB+K
+
+Ll*A8)R!Q-MX316qHh*!!F@q8$8`F#(+GcH3!(*eAmRfaj-23#-R3i"8!L8T$[Q"
+
+r'UNq+#*2(08L3Y4i+5,N2TpD4+J#!j'3!1Uj&d`4&TYeKa3HIJ''cmpGSkV1a$+
+
+FSr(Z%-9l*,#+0I3-%PiG4(B3Y6l)Eh!KY@JL!394*-S4Pm0S&bD2ZF%YFXM+5*%
+
+"6eX!&iMFNE"LQ[*+,p!6lU(#ZrKIM3$62S)@#XYKhYfEmaT2F)Y+$$f1bdQcURM
+
+*i&KNJ)f2a5Hj9r%0#U*AA`jB%!hdMS5U*J4dAe3%C2ad38,6-J51mfhK5TAK*8$
+
+reQLJHr-PPSd'YYq,$6D0"KMNVqXlUbfS$i$lFfZ",M(!XQ`Yd'9IE,4T,F!JIpe
+
+S8de3,r2(CJ*EAB"QXFBhc36YD6-"*rNrf'bU"aTFrYJm)0Z,N!!X%IQQHD"G03m
+
+Xrp!m%"pk(H),@(eG(A!#hKqD!h62jQ"$hC6iI3[IKPHrE`k)$edYr8hSIi,alrG
+
+Y+illVP(qb[HQYLhpEVcpA)6MS6pe+jBTAh%ccQ[eA!#UhbN5&R"#p5aX'DVJ8Gm
+
+f!lh+CD8,B6[bQBBRCR$SRCJd!re+VLb+(kQ"BppLqTlm2KPPQ)qHIDFeR-d6cF!
+
+Yh2XhI4M5qf[FPKHQmGa'pkd9dUp`@fYB'D9bU!11[cQGl4cGIqj1UXb8TR[EZPR
+
+&4P#`lrKqVKaq!iDLK!99&8THd9ZhMb2+UX[&i(LFdGZ@Z$P9$ecSqSM8T*klaSJ
+
+%,JGf4U*m6'I21i@M&eS#+PaBD8eiM2rJ#@dN4ek)e`,44#l$2@C,[6Mc,YiZ+Ek
+
+D(daQcGhUE8TkS,P+lplfiYEfIAG%aAhb#!GZG--FkY!(2-M(iLa('-[eE4RXTIR
+
+b2,&LeZ4EarV#q"8c1JPQY"[+2j[4EQ4IPa05rTmC,AFaRT[4RM)9B$8R9%E,pC,
+
+VM0lX1UZPiLieiF"cSRZ8GkYS(UFS,RLCjHpRcB(PVD#"m!Bj$Pr-fCkYYj,Dj6A
+
+Reh8CS8cXdp+`T&FVrIFmXk1F!Tr)D1UdFiR9kAEeh@Z0`ar6G@XERfiSE)41k1m
+
+'QJQprKIZ2N3#6ZkNCb[c%q930i@EE,*)h(Pj)Scah1iAl(d!`Zjr3c)&VaMIR22
+
++IL[fEhqkC'6#![EHXHbLiT3YK2m%!I[CB*IT5+Y0TfF1a(3cS"lVXhjekIAhmrr
+
+NdKmjQB-a5X5pFHATN!"k&B2LZ$Ceq1R'Xh62Hq3aKVlTB!1BrEb%r#NLlmM%b6M
+
+aQ##F9!C1`I%jL"4d@Z-ZIHPiZ%$C,m5[j'S!'JED+4m2T!+Lj@BGRR@'PI,U"H[
+
+qmpAlp8&BL&I(``XLJU'J)1#'4+kZ%(!5!5-"J!BkR&VlrT'"lf0PZ6$H(Sm%X0Y
+
+J@@H+V9ZXGB+4BHX4@"V#*3jNJ9IF6-!958!@[kZfNc-#q1N0A+QJ9j0L`bS30"!
+
+fLE4PJhdpFQQ@Zm!a"N+pZ))"Di@5T"`%2,Uqf')2aA@[H'clLd8`Lfer54p*Yh(
+
+hiA'+&Y$4)d(AiUKr!$r*lUM8QpUN'BEh#ZLPBD*L#(MFq1PA#FM9$[+3!$#2R"p
+
+D")fRjm4TZ"%dM0JE9iSTFLM()V[Q@jp,X'CK&N!Aq9mP#U$Q"-GqRefa0Yi8Ke"
+
+)5`pMm*!!Vakm3+%*%T1d(T!!0kZAcFUeUR*U"A3ChYc[pf%Ep2VMr8GAGkBBU81
+
+KEYeIfUiZHlQlZ,5e%EhkXc*@d`ME1!3YX6*@*(-S1Z6#Pep-rdd2%F,XfRZ+*0B
+
+D6Kfkm3NDcTE6e@e8RE%*pY[MJE4)9,IfBT!!k[5GkFDjaC-2`e+pBGE2c3JAkP*
+
+cDDb0&eb)jK-A,0eTE**V,[VmL!j'`Zf-"dJ2[9"#J-a,re4rq2&,d#9N+%PmfQ8
+
+NZ)aA@4V(,CJp)kl6'00[h9m2ar+5a[ahFCK&V@#`ahka"8D"AiN4B-RY2b,P)(i
+
+)U5r%&dpUe3b[UJ40q1,-ALa&`[#c`[[rmcVd%ANhh$,NL4jli0CeNkB@52B-@Q3
+
+%V%VB!(m$I[IAY0d@ji'Y,1T2Gh#Qi1FV@rlCdJBD+H6(e6[fj`TX'f-81d*Tp3j
+
+Y*IY*E"eVdV8,qEccJibdZ,hdQElqfGE'&eB$[,@K!fmZhVHh54@VkcE8&i[@`[[
+
+*PrT"qqlLPjqXq&L6cV2LBlcek3B2lHA!LcaZ&5Z58`cPTeeF4(&$lSAdhF[Iba[
+
+Y,cl6A0lT[q@0HIQDLp&Ap%N!CC9*rqG2bYGD4FaA,Xr'Zar6)`'U%i+Y@48Aim&
+
+",#l&!bNe&"PF!j*@d0HPK5#5[I*MU`XF1-5YN!#eYpbYhlM#N!#CZN92HCf)R!#
+
+YHN[I+jThP6S,XmlCmfZRVS5$!86B+k"$X60"KPjl2#d$#p1FB%9NY1lq(!qhRKq
+
+hTF$J(AV9bhBV0HdjIEBm@F@Zh'1IJ0h3V1kUJ8heYCpa@UDGUk@arNf[JD'+J'I
+
+!MREBX!El'rh"M@LVZ'HM%e"1JTA+G)G"TSKfk"IFJrhbJ-k&@&)2p4fXAS"`Q#k
+
+%*dEp3r[DPbRLa"kiK,Z$@l&ZmU3%Hf#$'[+ihM*VcV[4@HJkA6"M5BBR#P1(bY[
+
+d((F`"[)9p(-Z+5XZ,4#@k+Ui49pbY8+U6rKG6G@2$I2Y"QHD4fDU$HVpEJ("R!L
+
+ZTh@%9ZqQXh,d)X`eDMV5PULhkd),iSJ5j#mURdcT[@If#![&b@Tab(5!d!6PV6l
+
+f1%NfqbMeGC!!A$i+qjAmm+VEc2&`8lZAaTN#LrE"d99#mj)q-+RiTPr`Hr+8H1C
+
+bJKJ)hUDrFI0bqE*VAcXPGNN1$SYUpaeHE'hlAVf6MYMf8&1#I$Vll0ZEN`mqQT4
+
+S4"G"TFC*PESCrjJ[5#Ae4%2hlY8BBKE%1Icb20)4cjAEmkZ(m%+(9Sh''[!5!-E
+
+f%iJ54dYejFpZ$Lp&EU!CdAQC9%@8#l%f#H[ii9i&be`---[M&`#,3dLQh8kh!i8
+
+R4S[IiQLRVSIcT@'ZbT&0f&!C$N!hNX`)h`BbMhXXm`CUXdpUC-c)Q@3-NTJ'8V$
+
+C'J[4E6Ghi4QS1,XZUcbm$5dh`pq0kA3LR0CkR)pi24%(iYEBhU@'+)YS`"[3TJb
+
+#1-bdJ1B)b9%+bk+3!%Q3!1UBj`SJBJHd`iP@bD+,H+j#9ZL0NXN6QbI-S8UiJ!4
+
+2$DS$4V'RLQ2*'6VLAJ"34-&l[M@5G91c110+Z,MKfVcVaa*%cZ8%hh,VKI(b4jj
+
+0E0k'DjY6GDqiP[+1r&628Y!V4p'[ice+1S#5CfPUr'$pq!KAeAL+3TG"Z[`!5J0
+
+X"8bf+j8*,%i!5$E(N!"Dr3-63#BKkTZ`+pDI#mHl)iqL*hVU+[L#qCZ9*f4'Eil
+
+$a4'HJ"+3!#884c+,T#k,`famGCBa+HUK'(K!c3h3JhY5**`a(6VaGCN(*H(%+Nm
+
+K64EPrCJU`)-THbA"!qBFJSD)F(Kr1'bUS%B!B8U0XVTRHK6IARNA!DJZf%5FDf6
+
+$d&A))T5lBI1F1!K2iP(H%FK8"dbG)bFCMX(,2plH'C(KI@h&CE-"43e3pP"(-UQ
+
+F2#@8%LZ9M[b!!&D86MiX!"CcHL34m$ihVf"4j+K4Af$(J9@"Krj5AB+iX9P#BB@
+
+*8I&ic#1G"P*,eM8p1KmL03ai&&A@S36Z+D98+*!!UJlGj&RjIZ1QA+r0&I(m[rK
+
+%1+66I-r[99"!K!*%)K0&X9UiV6D!3mHV+9L(d)(YLmf6`i$r#KXY"LqMA0-6I*[
+
+Mh+GJSUf3!2'k(`83)K,5GPEFTqmi)-'KqmE[V*A0"FHNf)%PBcM2-$`YSM3+lXZ
+
+NNb(0$rH'E4P`&d"C)3qR#X"h+(%R-b!m+(EU(m)AC2&'d'q8-3[!ED+l29C"k5q
+
+#&R'L1L&3[8Il4eCD$N+%H%'RYa"bGbK$LRHN&jC#-MXpNeVFX8%(b8TeN93d0(`
+
+b`B,d)NUa*`I[)-1%+rj(HV1PK,A`!#H9aa954HV%H&3&609,,!Xf5E1$49kER(h
+
+[j@@+d0!depB3NLf3!&TFr8)#8JeM$BTLcdMGJ@mFC'rh("bB`K[JKY)C'9H3!'K
+
+aCdRGRee"+[P5&5Fb0$#*FiS3$'!P+[DF+$`Q@N0p5*e%`)5XSPcpJ%DXZI4NJhj
+
+dhT3eUV0DX,E&*H&9VrMU`+G$%3RXG-P,)UTD"FGPIZ8QHjZ3!$!!FcLjMhq5'NF
+
+EeJ4*NKlPXL`b'r!Lm#S"3eJF(qSPaH+mK+1JG32QdF*j02c,I!mNHrD3!(&1[`4
+
+$8QQaV%dH,ck`X0VAKkkVM[!V4)4R2-PPLU2fY"i0qNI0QHXN$9#@rM`EIVIBEp8
+
+!E)3AXZmZiq@LHdNZ+f0iP0Li2S2MrN)16U@(ILCcU2@S'c%h#deT'%dXA"k$C*D
+
+EkX$5iAV1A%%P6mE5MI%Q2TR)cP)`e@5CI49m1SM9f5T"!U9'[4$3DmKTS,@P+!N
+
+JVESJNF+%kFRmR)c*"MbMk3jBq(MDVQP3JRE&j!aG@5qB"-NSH!8J*q1Yi6(iRf%
+
+N$$8Bicc#F)KH1YYM3`6$a[r9JPShP[klV24qVr0d,JPIr8Dr@QD3!"Kric[0HN&
+
+KG[TYrIKZeVSHY)Mi15T))LL%PLD)X'Lep)mfHLJDc[)K"4dKV$*$VXJ6JLE9Zii
+
+aeY*4VaZBTImCr#1RZSI$!GNIB-GDkpbi"E-4K4C!kVFNXQ1C&4K6C5E#H52$KIA
+
+lTEa9,D"kMkFPeimQqUJjil3YM1pUAGCd95!Ie'YR8*)Z3a+9@ZAQP,&S#k[i$NF
+
+cH[1bk5@Y"CC,58A"K"GY9T-8(KX*RdIB"0U5DJDVr`Y29qD9A4*TmH2c8dq6NJi
+
+U(1MT9V)AK'-iIh&EXpk$DR&Z)#[!pd`)+$0%HGB)!lmYN!#8AL(@GEp(HH6H5[3
+
+L%X41c'km'3IGqa)&aAG,id%,*iH@iURe0[CPKJedXR)f$"F[$LQ&U(#CePcJLe,
+
+"qh0YA'JSFiM*S"h"69dQ'kj3iF4Z&qQcE'V+hYp[S`V6MK#M5Sd'[QR45QmUJpH
+
+(rG#GQ"`NDI'U@R6rPR)cd,iJYqb2SFPAPIAU8j1c)Hd8a@M#P(&DSd0EKkFYC*S
+
+kJ,+(RNbrpRa"Qj4'q6i6r`!'L,#N(&GU,*h(j(B'ra['PmqP)[U964TIG@N5HUG
+
++0BKkF#KMSHcRVekLh(&Y(V(&jBZ,Fj3%+U#,B+f!,P0F1*-Ve+9@5GA)AN1KG2G
+
+,mcqeV3QC-KXMZ6a@qCXL9Y&L8NaIGAI61JeH9NS&M-R@'JfcaUa0[#Nah#!GRjI
+
+1,qmi+Kd`AkL#S8QhbmGLNdUMUaaTkQLV#mDMYcLabl3c6(RJ4%SVj0A0#1FeKrf
+
+&@EJqXEr11X)UcbZDG1D,"Jr-6+lBI(Z+l%#h@)0S+!XLXL90H0%hf!M(mT3$Y0r
+
+Je%bC@Di4V@mY8%+3!12C)Xae*!LdU6Z#9X*haXMrH'D-I(&ZM-MIK5mLqfC4-#$
+
+1!G&i,S43')&Ur&h&"b)*fq@Ck+f)emJCBGIj!D[j1,ZQ@KLQb'mXEC5rc[S6AS1
+
+rY&(CJ-(+mdMc&1LR+YGL'Zi&+mm@*jd+DH$m6r+'C3l$TJ,GK)jj,5X*lQlTUT5
+
+Y"Q&5Me5E9kM6d`33"@RUleRh9eM#preIPKcim%,rPr'"NJ1k6+T#$f11LKji+%@
+
+CHZ)!`TSPdTIcERB-m6Y'A42S5q-FA!NCESH[A8[rrTHM4pSEDQDA*3&Jb%JM1mf
+
+)h6%m34*qF3dV""RiU6#Sr"`,mq2p&T8k`5&VqZA%684#Y`-4S@kB$T[ZiBK@JNX
+
+FBbPjNSYCf##'e@ZeqaY)+BS88@8V6#a98Xa9X0Sp&X)e8''%LMLINLK#Rp8YBmP
+
+`jQK`JNbIA'kSfBUZLU8dB8@k`fT$mbJ6fmfVA&HP$qD,SC4KT5KAQN!"6RB133e
+
+)MELQj1fTA,M6ll0Qe9@Ge`dZHUJBXD,q!eBA+6G$KZm"TPjZ%--F3Cm(PmpL,h+
+
+$1CE!l&TaZ(#S5IHmVCi`A*H5P%fHFkc%N!$Tq,J0'dpPN!"cp@'"#JhL)DS'D9D
+
+,@kC4`4+@Q%JQi$0FRC9lq3PJEKI2,Zcj-F82&M4am$$pb2"Ai*1a1""@I-dHLff
+
+dmS2qGCY@YN`hBdFIi%cfA9c+EM)Z5hI6PMqP,i3(*DFdH@qh"FeXJ$VTQJre+04
+
+@)h5clG&YNcl9E)L![96K`CM3-&f,b9')"$dN3H,F*VAiNV@ljF50bN(8a)R(1l[
+
+"ma`N#d6V2m%TN!$M,NXBTX8,$GpJ(#4*$k86!4-Dq`3&5G-jeT03#FD,+!bq)Di
+
+c[5ZR+5%T#UqZK,baXm8!&cm060e`H8ACqhd%[3Z+jK!5,5[&a4T+,lhL#i29K`D
+
+%F)Chqi3[BXa4655h$D5@,&MliC'SUq[J!'`f$#e83,U`'N8pRY"+%ENdd"VpFj@
+
+,2bDL&5H@'jH+V3!E`e-GFN+BU3Ji!3[5`p@HRd"QZH`%8GG4m4'6IGje)33C+q1
+
+bK#2TrJp`&ddk1i1))P@"PX&)2C%X@@p3GYYc1l0cdq`1CBPJ#$,LF5p[`q'qIN9
+
+$E"Q,2Vb!TBk(lm2BQZ6SCC!!+2!Z#k8EV+!,5JqNDDSCk'BULj[iiPA@F-K0VT&
+
+KU)(YHU9Si+#5%MN&j&bZVZqY9KkDQf,)f`&5)@!RmEh[L,(rUVqr55D%Z'S-``H
+
+EZB@QE&l9`"XI82iMeSMe0fFmS0NZTkj,cUTSk-lFYA4@3(Bp"P`$cIJ-PHLCTKG
+
+0A*[f$"%e!5HV"D(K3Pf')3jY49fF!1&hdf,mXb#"ZEprfZBrqcUKqpKE(EF+IHh
+
+NqH0@'bKbSka1-kVfkJfhXqh)DGQXl%6@m@+[m2SUEBjY(+8l$rEk-*qbhkGc$hE
+
+hdJFLQ4mqC2FRGIMF2jGI2B3,3RpA5keeL[$q!clKlr+hpceHJFkm)c"`@N9jNak
+
+[3ZTJ#(+Z'ah0bYpcI,`#r%3'a6#-DN,H3!jkCbl'b!'jQ0QEebd0l68SISC1kG"
+
+k"'0b+0'YC2BMIjqc45,`+D+d`#M)5l#)%03FVU$KM8I5qf[j6Hr9#M(G-N*a+jh
+
+pq1@i569Z2D59#qZ3!&dQdLiQr09eT,&Jl&Q*l$HVV@E90H,qSQ(Rpl%p@f!(!4,
+
+lr!ikd&qpIGplIJMCpIYi"G"0$RhM*NV6F5Z"K*3ddLGqeQ5,''GILTVi+EH(IHN
+
+9T2K4)R)9VQMfkp(D#1'`3EXi!cf%*CrR5UVi1YQ,DJ+AQ+"YdMSADP939XaT-Ek
+
+)mH*)X5*Y`1VA%('Cj9Gbq(MCEDjN9fZEJN!jmhAYIk,AMBhGX4DY+EFdaj%91`K
+
+X)&8HC@4'HkkC$JK[&M$NY)S)2S*N(p$X@SU$FPqcPX#i)HpHGc%Q6Sp(FZfTLKF
+
+X6Sq+18KhA-8S,A[1'A)"PDB8P%iQ+*4J$MUma5+#d10P1[LXMpLG9'+I$8A$(Xr
+
+Bj@Lrc`Ip'b0dlUVZbHIhjqF5E[["+UMUPqR0KqRmN!2eqA6$Mcfrf!4@%,XKj1S
+
+Rf8pE-KB'4)ZT9"`p3DF)4D`![Aq9*aml+'5ES$Gc8'PZ21LN(kArJ-DqAq2!*E9
+
+8&cT@5'PflXIc[pBIl-qrppp[Kmj5pZCH'BH&+,3%8#8496p@fV$GRjGfK%N!b%Y
+
+Q6c6hAM4bVV6L9U$L)&eH9&Z#L53PVBb%QaKFkHb8%l-#N`I&k#%*Q(#P'U[8TI)
+
+EDK-9S5F$6`L+c"-*LX8@cH4"k*CH9P'HUX`Kp"ZhKqM"T0,[E85RJUqhqJB%&`#
+
+[JcS4`al9%I5@'cb4qKrd3+pFi5YhPhNVKa4BKqU9FZV3@rDrN6XYBlcNAXGUZ#5
+
+`31icf)*pT36eP(hPp3pBX+mLiK@!F4X(!Da*c`pTd1q8EIf$#VB&CZ2KIN$VKb[
+
+BpN-!D(e$YapS31S29`#mU[lI4XDIrBShGZ@-je@'1#3E2ldf1a`(3(%a1DZEcIT
+
+fX`0$'j)&XFa5[`X(8SEc0Y9fR[%!m3a3YHRRVm9%QPq6d1hm2X4QDP0-68&'*RT
+
+*36E@UfTqkXk`Lp2#`405KQ&CdT!!S-4@0'5'X,5Fdh%XkDCXP-QajDJ``"9NFJU
+
+)hL'JjVPYU`a9QSYA("A(,LDlMH[!JKhKBDahacfI'ec30AQ'fHKN"lG2)4aK14R
+
+pm#3CGe[ppi2X-(e`1re&HKYqbNITaqQ[dPqERI,J9qNrT6Ir2[h)2i"riR9H[+S
+
+"`kK(G(Ga8i&31+TfjjFXbqFV[%3Y&C+,"-dGUV)&#!S#3GEPj&Z*S3ql2KHQN@3
+
+)q9keFbra&&I1#",dlQM#RRKi4[8NMf8&B8MQ1BEL--FpZHC#b%Hbm6)!MjN`TaB
+
+'*hD&%R+pL+,C%B`X[*ThF6+,F"B)@a12BJk5@*6Q3RF-E0,E0m0@99A)I(2TlBm
+
+#lC6ADXLa9`fUC`A@Xq*phll*PfrI[!k!DiiLIB$%B,Vhd&+($l)f[X[aj4j#%`(
+
+TeUcQ))BPL29abjU[8U0F9eqDmm*@XlG6j"+J3T!!jBPA#'%*SSV`0GB4MVM`+96
+
+2k#`aJ)jqih*)kHUHBK,QSi4+iIF69%`k`i39#'YT"9("'M,c00ZikV20P&&jL%6
+
+YSmXH5kifThG(l1`E3EF%IPA!b,9NrTiP(D"Je24RT&0)66U9*THeK*!!4J`)qY@
+
+fi319JhVX6NK&m&&0U9C9IaE-i0G13dUVbMY"bjJc6ccTBB0P,A2#2+`FEJ`A'FN
+
+'SqHLHS-6!9Kb[&KjC5j#S[)Yk)`GD#L+5@prA2GfH%@,)8DZe*%m@mND#HmBA()
+
+DqrKKp)-Me@QDpS,HT)Pb,h"ENH"PmU-rBTBVAFM5KGfrZi8@F&lE`XmXifAeVIe
+
+$b`E2$-&'1VBpS'rE[(+a%SP%DjM2H-3i4(8ECYhTCJHll5a3L5KBrXBQVNSE&"*
+
+`%K#U0BR++@D#H,T#PEVJ60V#U@48aC!!iKZa[mpN-Y),@0[`eNN"#!Eh`dXXqbT
+
+-cYG%SS6QNZ5F0i`#1c`LK68MYT*)B$S,bBq5JK4AI9k295+)QqcP1AQ169CDF5L
+
+a0U+NYKH#ec*TfkXa*cD#(#'M9eRaKGX-DZSN4b&MGl$Ef4rc--'J1f"(K''HKG9
+
+a*F`"$RjB1,L*rcp#9(f%[h#"D3p94i!8[RN)LX)6S`kTL29jH(+!QfBXS@kK3p&
+
+r$p!mq0"q`JdY$b29iF0d36lKJ2MVi'C$AKChFJMY&0@Xm'2GEE!cPE4+4NNXb#%
+
+'LJb%$Fmh4H2Z9XSbe3A!C+)el%SC%J`I99j3GbGS6F[ebJFi!Rpe(BIL!CAE+rq
+
+kA4a*T&TjFA-6jbUTI0*,&k`lTkb+b[a)TU+2YQbr%%S-+2BE9q`mP)LDK[1PX38
+
+@%dNb@%+!X+Hl%f%8ZCT)9b,pppjq*X[5PJkaX$494S%dEAF,jX(KH%$5%%[&'L1
+
+)!HYYi#d%PBX6dk)!BRhXKPJ8R*DG40&Ud2L0LU)($jk#4TlqPimK[p`[qXH,Kai
+
+B6FQ$eBX*1Jq3!&+&@#aGeDVL&J#*qNQajM6X'6Kf%8G%h""N"fePLE6LH8Fh%)9
+
+jF3i1-!iKVjIj#3i"26Hh*Y8(h+&B2C+#p3)NB!93,0Tf5#`%J(E0eFe56kX#eNR
+
+2dkqeNITdRFm@Ti8AdaU"U$%BQ&ei@XN&lV!3!,)KMBlm1RCm9BdZa9h%45QA)#Y
+
+k)9B%Cq3MGB*#JqLNkHf(%p,a#+RIb!J-H*4IJfE-N34Rfd3iC1584dSDL5bb*"T
+
+Bl90r3XrK+#X3AT,6K*9idk'@NJaj&C,S"IS'LQ4`eQY1#9@RIQb(SH&N)DKB3N-
+
+'ZY@-3AKH4&9DDJC9*1U*1klh$PN25hR0K%8ab3h*)RUrB5Nm66ra,hGj[09A5fV
+
+V$EkkeqTJq2`V%YpApdE(%!KIIGl[iPDMVcjH5,jDE$r*m(Rl+j`ae'N0[j+VhbN
+
+#dmqb`4284Mkib`[Y5)pckFerqXGrH1Lj8fj'9L)AJ%8jVYD5@D[aLL3r*mV0VIV
+
+f(C&bHJ,1qZFE[$VClYeCY*0di%VlhffTpRhf$er2SbF16kqZ)I@J8kbZij`C1CP
+
+RqIk56XEEMZlj5%Z,pjB@Pqe$rDhpdE-*lH[jMr!5EJ0H[hG(CRbEaT!!eFEk$9P
+
+[FEA"494$ENXkrac#LJaAj@a8$8H45T4pGeR1M$mk0m1@5p&*8RSZcU),(%qT%m*
+
+)`GKd'Y%Sh4Yr"R)J2P-QAa*9l!8Ym&NG9RZaL[L(eU&J+@Jf%bY8UEfq[!ce(j@
+
+-Ye-il#+[P2GKF)Vqii`9@!S8kdD!*`%"%%D'JDIIH@'Qh6[L4a6JA#%Q6Imr!*!
+
+%$3jeBf*XEfG[,QPZCQmY0!#3%4i-!*!2!83#!!'V*!!!`4Hb&,(J2j!)!!#hK,5
+
+[Yi5dY!#3"VUh!*!',q%!!,4T!*!'pJJ16LRjPD!#iKHkbA2DM[jQAVFRE-0pM+c
+
+-Nre+0RhEkpIP3JNM@cceT#rNDaTI"maFb)C(d)p@S1Zl[X[k["BpIFq5l0SPZ3f
+
+I$##C-3)TBEF+e$X"U*qfqJ(q'6D1f[&*[0lU(-HV3EFA0iH0U"NFA34RiEF4[`V
+
+H4,eq+qi%$pI["mHpq+``l%HpXl!c$0[VJqKYDle3q#q&Tkefp1KbQQ![EZ+MmYk
+
+,bKp,r$Pk1hJ82+e85m@YjrKp[aHpH438prGhAZ(AJqkMS&lDhGmTeNYV6iUedRC
+
+3VTHUaAUjXPFSY$T[iQqM`TVm&3S"rh5`B"#GGG[K)!TDRHj`X)5rPAEVU"If,VK
+
+2E(2BLqiTiXVhN!!EqYr0B(epr9kKd)M2X0eQ%2H#Z"[e`J'@[ai%TEGKBp#q#0U
+
+YEb0G@K#pE86G36!i$INIQkBIK,fSJ-RIY*UiT,!Ip+0ZL$%Li(9l8Cr(e!r``@R
+
+8)hB(Z%')ZIU$fe0+ENG[DEHilqr)RpRe)4h([5KXR0SPZ91b`B*Q1!MpG9bI8JD
+
+j)Iq6!r,Sb5AaH0k%l5%qkXZGq22McS0He)h`Bl0pX4V%R8B8B%8"Ga5F4@G(8Dm
+
+3(`ZUl%DZ"+Gr(*aKNASqF5IpQ0FAR,6H4*e9(8,4c`TR3ham4-JSk)GR'$lUR!a
+
+1-Fa+h8eR"pc!8%!kMh[0rLU[mrbdK8NDB6mUM2B(!SeXXq#,dHiDTlMjaL$UiDE
+
+,['m(ZUSEZ$JlLY["ifUT9ZF&J"HL$NERYpfi4mkacD@E+3aLqD,A1MNGZ-re5),
+
+'X0I$"##S)p$f53#5&[)Ka11Jhii(DmHYGT[lU*1[@YcXC%!Zp,!B2!QfJZfJp$S
+
+J$8i@,Z-9NV@IY`DRQ"!lE)FQ(Cl)MMZfhI0if-CR@&X+FDJ6VKGibF2fS09YBr%
+
+i'DbS,HX5(T8efM3V1Xl'[H!N"T(Sh"ZimN(Mmihpl0epp9YbB,MXbrh(ah,JrlL
+
+T),JmUX,r1DU85h5jK3p(pE12"l9jUae8+hMGd+a4+kKd5'6&YABi#l[8$DBC-%5
+
+b3kll@LpF`D@L!9SK(Jj82!RY8Rb4c9H$*Y4"TmRV`-(+f9adShI8#1QJGjG5Zji
+
+UcM+")GYre!jkUSPi%"l3TI"!E@#C6MD!f@5*krHJEK+aiS!mXX`"pJ((m9XlFHl
+
+c5JQY"Q36pkPbS"!"ppU)`8ApEUbhS-1Zp1qpZ`4ma#dAfqf4TM(j)q[)j!r@"qV
+
+N9j3h(-GGS'a3Q96hjkkJi,IQYSR6G2,+4*14h)9F9!25#(#GK0TH9UVEAkJ44J8
+
+RM%6LrMpK92M5M$$kq9k-F8JkMai&Z9"5F@4q9AN(#XKV*C948jfd$UYJj,!!Glf
+
+@1NphJZN+m3I0*-i([)FchIP2+L2e@hKa%"D1R"fFBrYKRer85R[edYj@+6[PK!U
+
+m*M$"3fTkpr@PJ%Ke3er'FRUT)!Xk)i[,N!#pL(E9+NpDK%QcGAb-McS$Tr$S4kV
+
+'5c8"c-*%"i&'a`S-SLq9,D!B@FKCGd"VMb+X0H"0$(UYSb%0Udim1*A,8)Pah1U
+
+%E9XAaG2%1cS,5BSUJ`UQB[YIB*3kMV4cZH2eMC-lHpZCf&%TG1-TYpS`1XGk4mF
+
++"XGhLZF,!2D28(EBkK!T$2V$ShjdbBlpB)AQV'SPq#BiE@I4ZNm,R0eE+Xi`)X2
+
+2(9pR!28+IV"X8HU*Y#"[k*4BdJ,VU&F25Yc'dq)1e"jRLm6J&K+5RcNd8HciqGh
+
+B$9++`3Ad"kh"N!$b#)LY6U-p4!)"DLKeT-!'FTk2XB%@J24dJq8hmAR8lJE,86[
+
+U`KFE+%S8K3EhT4X6qdXilV2*#Y8BeG,f`9CU2cX&FUXbi&D-&-EHpMrdK8Vi(KJ
+
+iSmXVNJT@%U$%f!h&Ri$9c0b1Rb-MHj8[pd38D'JNBI%dA1@BjmUJ-EXAamce1$)
+
+(9f"e[(JR"Ea#J$c'*jdBNJI$TMY9%NTm$F*i#I#P2blhp+eX[P@Ye'TC%XfirTV
+
+0Hf$QaU9(US-Y20)4SkIZAVIE[VLL9G"8f'J-B6,*Vb0r8XjdP"!C#AkAD`!PR-G
+
+V`X((`dl$3S(eLfkV!ErUJUiKVJrQBYM[aid@Z2d0&))K"4e*A$!jZ&`lf08!fb9
+
+KR))1iNllSX")5LC19Sa$I%T`j&hSCk)kP+Zbj-P)4f$U#KA$HDY[Y*EaKSSCRNr
+
+,XmB'RCffqjQ)(9cmfL"HDiHQS%"rh"'Ck2&QJX2[DFQi*HT9)C+RR!E93Q02BMJ
+
+TLMR,k9S+P`Z4K-aN)D0V-8A5MSj(@mPL1'BD8j&&EeVad&XkGY1-aJV6p"%&K+h
+
+8kJcK03la3lZ!@apY$'H,1cq+3+ING'12p+cT"m0#*S@)'!1jdU&$AP-C)&hfUM)
+
+%#%,[3%K$4+AR2G@'Z)Y'f!f2B*Ibm`C6U'*mpBjD!a"P#hb%i#9)56aT@YSmF6Q
+
+hk2LieC!!Qah%62*DP,@&P8BK,+eMBf(E*&BM*01(i4Sh4GHQ"-HBUbl'NPE*0Cc
+
+h@N#',",UaB+3!(l9!#eie"Ecb(JI''IKfq"4'$`kdLmFL4e(ED`)(ri"R`D(Mm,
+
+Aq-r4D`@"-@J$U*HPNL*BjLb(5%Lm,K5+G,FBEAJ6-9jU!X2bR5,#-$YA&F(Vr*U
+
++E(*X"GdHU4f(2(4@J,XX)1*HJbEFk-YY(Mj5M0I"TRi(kK-'k!EfCI!rp%2m(F*
+
+[k-ARm0pk2CcB)4NMkX6$Ne1Ee+CkIFpfE`GL+cqd3`&"rS'-GrKi!iIbH22eDcG
+
+VHM(Q%"rX`KaH$I4A)B(F,%keRSQrBQfVZ*ei19iEAUZr4LrZpbe1Q#P!0pmiXX*
+
+r2dGPhX&1`c+TAc`*U,a,Yc'P`T!!RfTaMqmL)Z3iXfI-T,B4IUFmlPP$-`fJlqJ
+
+lT1HG9NQq6mE6UmAB4@kXhih!Z&!HL1L*KU*3a(r-(%J3KDJer#aml*bI!F,mP+C
+
+H3DDcpPF,&%SZ,%fVbDRME-PLBU@laQlmf@NZTem3CF82j!kS9"*CJ48Nb8AS65I
+
+#X["-Ue0`q3m4,9`EGJE0"DHPhk,J3DEm#"%FZ8U1P3D0dNP@#qUqG5*3[-Q[5I,
+
+41q(p8c$[LU1Ni&!5#+"5m'G`'!C(332rh`JfJ`I"`pG'1BGJ&e",q#!)(`C('m(
+
+4CR$d)$Kk'$3fJXCQd(J30"iD9F-lIdV&(TpeXEDM9VX&5mi,@0HZB-bK-MaUUUf
+
+%T@l9GQV"bXDpeF)9b@RBL"T1@#3HD+6T%IX-r0PKMcKC@+I`+3D)aj+"I%`%dbM
+
+T1aTH@`ZHa[%!Xf#kj+0#!4X)YV""8%%[U&&!3REX3"m%YF&&1lU9$9iPM&4$Fp2
+
+VKP4Bh#L(X0m)QmiimVT""k,!`HC!()l$qi1`0a$UqU`I*["RhBfJr`DRFpEGa!q
+
+Q)Ii1TMQaY![KaUj+(-GJ"@64Mm!,9!MZe+Nd#qL2D%1cd+D,f[(j[9&eJM"+U1a
+
+[M[-N6X`IB1Q3!'%'V6-S#@FJ*JX4&5#Q#qL#E()e!bd!Q50ZB`HbZ`41l92"DQ&
+
+c2!r9,1jSk(*"kNDZ,-0XKRi%UB&dM0-`)9d`GGZ5dJar$FiNrCM+kFIJH+qT#Y`
+
+d!MjSmMJ0ZrhJAk0Hc'"JCF5hAZQChfY@HqSfDI($D3[53,Ed1`D5*'IdRIK1U9M
+
+mYaRNET*EqmQ#bP4K1KUeBc-#"jmT$F"0m8Y-l%Y-E4C(K+Na4!Ked1P%*fVD`#Z
+
+*6U,HCE2&P51BA*4)16'8j*JN!"(#qi&-SDMiF++6iG5"5NCDmIFJNNbC44a`RIB
+
+F[hQ2aLJRbffk2,l`KJBqah6SU-fcGB+GH(SJShC-"K0H6MIUFeH5bT)F+@D@@l+
+
+!Zaf[iEQeBa2kK4)pPk0+ML[X$q*Z&i4*0q+GqjFH"cR+R9TUkBTNG[[8i#TBLBb
+
+dNXLFHji(,XhHT-[JA55PB%3LYZjlr`1dlZBHLdm,QBe$%Y#E2LFa0ML-M%HETb)
+
+3ap$[hh(B"`D&!ib!h8IQh[4%SE5J*0#2`G5ABYp%C2$,i,$0SrKCm"J5hr5kNrV
+
+",jf!(i-H@PC1&d$J)mMXem&bRcENL@,k(pj0r,2Jji6Ed1mh0ZplQk"QUXr!QYk
+
+9-MDRK3!"6J@5j'4aZPSfa*($T[*0+KhA%Qi!+(C'YNY-4EYV4K+SL-4D*QA3G%P
+
+ZI882h3R"LF`@6iT8I8r+Mb6-+qV0C1N(&qb6"DBV!P9iIBLpL#VYa81f-Shdd#V
+
+GcXY3MKGBNj59LFbdr'NX`@6!**XaJ+(5,N`XhmNT'!hC3CJ3BGDUk6,,D6Vq2B0
+
+ES&c[de505I4%lHT'N!#f`NDZ6'M9$QVjkEM+iiQB6S-`G,5[-UbiGX6S6'2*KDK
+
+Vf-IYp)m4[m"S-D+iTMYrf+JM@@!GYij!3Se'+hM8'4R@+ii)(hAS8JIr,#lEKMV
+
+@pmeLS8dY2rKjZUd6l!m(qiMbkq0%9lbFfZY%$8M6(lk@QDl3(JI,iB@cqm3iReY
+
+FBQQTb9@[&[GU6p2UL-3&Zl1ieMF6@fjXFke[MKJBlT042$`Sr!i6bRlIK($pRpN
+
+Tk9JMVcQ'mY`Y'ReNf%K5bG8a`!S8-V-DY'Cd((+N$d4ec&K8BNp#bF%,ZNdGr("
+
+*FQcAYi3i6+H2*8f#"QkNGijKUh-8pVq0%$MiqqNijq'p46%bV6+RB*BNe`(%X2r
+
+'V@ApUf4j+"U"Pi0r*AMf$9DM'&qjQ"#@#6NSqE4a'T6"!U&mcZYedVZPCI8rC!D
+
+9+8F38Nl(Gk*chS3YapYr(m1PjEf*@,0JT&Zj5`9!rHP%QU"`q*@$Uf`UIQJa4@C
+
+cT+X3rd00"-@(S$Q9`+-&!L5`jDdB&3BVaJGQSiKmJ[j-kd%q'%N&#BH*CRD,mm'
+
+%Ui!BjX8#p$"5jdk5KJ9*'YiiDj,@q'"Rb4B+j[NT(4[S9jEIF2PK&f(ffm*hBV8
+
+0Zl0k((VeAZ@8UY9+0GL[9VC+Y9TjleR#dC@pHV@b%p3`leEp!-PE4pCaYe$B$CQ
+
+h+2aFrK"(#(DMcK!*UTm(64N3XB6[rq4MSQbAR[i9b(h-ZIKrT"cF6k@[piYlU!'
+
+kfE*Z`@rCMjY@BpJCF+AkBk'`IXDeMN1Ykr+aD!J*p'NJDm2q,f%"CTYFa)FP2LB
+
+keph3#6Mk0JG)YF&l`jbUl4d`P*Zi)dPmlI`dCU1Aprd5Z3%(L0N0X'ard"Y+4*9
+
+D`AQ@R0+RZ6NTk)-T9iNRfcijM`Ek%)T(DV&HZDV$K$4)Yq&%3kJMr5jG,`04@EX
+
+Q2Lc[6H5R6UGQT,+(+iFj(XVC8,p5$8#QF(,*,N%dk)BPSLJ4R*lN*K&qV*Ef5mA
+
+kDP"qQKQ&39#c*2d91X1plE1B)J#4+**iiEXKSS256p3FDJK#AANB#,"e)"dP)T1
+
+N*$%HXd$B0Y-4Ui%&q"(!5L#6Nh(C)!PPFPPCa2"LA88RR*6K'GNN1@@I0q5R[lm
+
+I(0*j0M1c0i5*mJjX2-kDd0-%3d`3F@EGBQ#8I%Y0$dq)"mME#,V$(X*DY+kMpC2
+
+e9GYB-KmF8)eV,Tp'5*!!)+6jK25%PMjN+$YI`IV(8+i*B%43f$T0d,$ABb)B[1E
+
+Xj`*diIi"6VP@Vb""K%hX9,D+1j0MNlab8k545rMbc0+M-UJX9(Vi$-S+C[F&lF-
+
+HP",0)8cf+Ki'*rKC`b`R"-&jZb2696m)$U@ZC[N[Mam(IdNG*Q`A,Da0MK,m(XD
+
+a6SDl#*DVV&,i*mN+[,CTE"%eG,iJf-#c%1"cX,K",rp6&SP0!X`U!q4)!@D4A'8
+
+[V'$heEV5LPGrU6(Mf"'(H4llX`5*Kbj`aQ26R!DAP8f661%L$d(Tkb)XQK,Ad)c
+
+k81a8hT,mLGY$hm6&M#[i2aR&a)+i`'iSj)N(X)iK&NJ&6%r4J$$Y3S2FiJ#'V3P
+
+q(-Q`j`2dDIMc5JHC6b-bL#D$k#!ATD6L'-NSjDN,jY3MI+c@2+X8R(kLER)ZYp[
+
+PFl!q**9E8%,cGR@1N941rLI9Qp`lG14K[p-`%D0ZK*j5%X`Zl(Ij@JGNEQJ*Df2
+
+-h!P4l-qe*5-jk)Z1`[CjH1'U4b5E*A9UdJN-6`5*6ei'A!JYS&a0MpmRGTd"Nkl
+
+#Z9Ke0*m`Ai&r#`Qb8"lLp,$#02ZU9T'aqdb48$D)52$D)Cf0M'IV[*3SXK3EEfP
+
+T0&3klX2,F6'[U%4alk1h88-caDF`ZFEkCd)Y-@TA'"k3!(*XLq[K8lmUHQHL"$"
+
+X2rK'T[e+V8DTST*+ECkA"*YB%4+KeN!9YPU9MG01#r'fi,raNRPRT0Af!#iDJZR
+
+(5'U!K+1`$hFaK[N%D3AMQENE6INKR4`G4`fa%Q$$RAFST*b#d%L((eNKBqe@i-D
+
+aPSb@IF2K1#KAe0daJYL,19'U)[c&&4c4DV*-j*!!E&6-"Xh1GYE'A$cX),bS5hb
+
+[3EhGkr*2+N#T2+Q+rX(I1&lXEPP4eZAA3AL544)JX1cV*[Y"S1,0I$l8cd$89l0
+
+j#B"-FkS2amQ+[m*I53ZV+,MFdV@[J"1i1)Tm@d%bkemYKJrldDdrXKpep9HY#U1
+
+[j@68q%M13$@1EH1l)9,1#"H+"IYK0*%jjJk25+!CLiAXMPq%-%lIZ4"#j%V"'b)
+
+A3+h#6@"K,h45#JlUckZ9PblVVaYB69J$%NEU9-CXL(2)P-LP53d[+ddmMIapV58
+
+5BV*,N6PdTbE0a*&KmFKiY5"Tb&`,Z(C-V+j[9m5V5hFaJFdfPk8lF4GV*RK%1$Z
+
+p(29S1+S2D9T%&VB'2D'UhCVPc9fR03TcRk%AIQa*k+Dir+)f%*6`KL&G[1DE%#S
+
+)YircSN8#J8)*pMZF+#ChLSEf$VH#A"JY3p4fqIP(LX)C9aU2%SXHZiF,#)@NfHP
+
+-eea+#Z8NU"H)jcEEBACDr5lG'%3(NVL#&Eq)6NahZ9HTHrqAaV'D&eSI*AHHj2b
+
+5Uapl'"h!dNb4+K0TE2DP8&,fdN%KN8LXXC0*4iDh)N88NiaU-LZhpP@rJ%E"*L1
+
+F`mk`,pB0pZa-%&0`TV3[T9-EZVBYDZk4QZH5BKMR[j68"5N461+3!#d['fb3!%U
+
+TCFRF*eQ"p%Xdaf$5perUM0N+lQ9@L&b#YXP3F-2`5$h&3Hp#IdYfZA`5pVJ$03!
+
+bNqq4ITR1*NlQEK'29XL54f1M35Ec8qPqGCH(pSeh'XLP8#0pLb4c&UTa%+$e!'R
+
+$ajZie55h'RXe36%31ZHR-'qdiT,k*e8BQQ!"NQbUKf`R,$kU'BSX+`J2a6r%e%b
+
+$Dk5Dm@8DkaS39q+"Gb4$,$mV9VQ4jHHPRCd+2k0YbCR(-k'ddrMU[-FXYcR('RF
+
+jPkST0BZBZKE+3["*8M2`Rk`)bCGSI*08GNe)1e-adJ2i(e69$Eka+eh9G+'M*T5
+
+iCHHkHQKIi3I"Iqh8Uj!!JC8@+'159&Ha-E&iSJ'd(dd@D$rS8Yi6V5pkdcd),*J
+
+Dd%N!,,KH*JJE-VU[!UNc5H2UJ$5!mEiIb2dZ,SIrfIch[$mSbp'iT`MJek3lcZG
+
+Z4V%Dk+iX@52K'Pf%6`[GaCDb&a$i,&!bHlUFE(`Ch989q6T[ML2+-rhJXAlJ3i)
+
+5Y3)K8IRl20QifNZ'Ze[HjEEm3Up@KG!B,cfTEaNY6FH3!'6C[hAV@Hm1PZBA&kS
+
+!c!*T@["M*U)*2[4B@AXKfiRNak-),QAbNS(*lK%CCh!T&6ImPm1blm30#h'%SLl
+
+IU+R$+[0,a0-AqqQf%Q3A5[k5!NZRrT@&rp1V41&!)J1lVH$"qXE$M9rqeZ#GNX1
+
+(Si&6)'Lice6a2SqRM&IE,ff9Lc["Lf+eA(bb)h'mpe%f5HH9T)9XAc[`',$3R&l
+
+b0dVXkFKEPHe5MENk1'CdSf5%'+f,2C!!J4VF`LS5Hr6G-3KeG#8944FZV3I86&6
+
+i"Jk+j,AHS091IZ$K06PbF3Y@@cSAU8T&(fZZ4ZDa4MG`I$!TG3([!ap*HN(hU8A
+
+ZV-M6kJRcTc*N929!DYecb5',aY[UIIG(dZBm@BNMcrhL!9Zf%fcB@Ih`40+DiJY
+
+)i`q9Xic4&32G[$K-YaAeQ'C4E$@'B0)fBTC*i'5@IbG5R`DU"!F3cLSSP,ZhUm8
+
+NA@Pb89BQjK1NPK8UM0))%f8JaTYfX-Ld9XD[PqY@Aj!!eIZb&L#+*d'qep0JLV5
+
+m"a@PTKirY&G*L2M!EiM-*QRNc)8DMDB[#IMHUG+062K#l3+j3&FpTRjBXX(acE#
+
+P`*9kNhdNNS$V6HTN!)qLA[d09JTp4p`N*Q4,Q85$4`D`,mHjj"2m3YNMXTilB@Q
+
+)MeA)-@+N-f3h`NkVIbBCQB)D1[BBMSk@rk3[fTK-U,50TXB@R36'TZ$mDl[EA`q
+
+!&mSJPK`a5BX&TEj5b5LYX!aYJHmJa1,ZFNC`2&5AZY5dP[U@-9a"Y$GLMmX[G8*
+
+jJ%ifi6+QJ`Bd8TK`c*J)C$hZH6D5,B*G`MCel-56(GE#r8Je##1PY*VF3BRG+q&
+
+2#4DK6j23)`D$FDblJk`16d$0%+(E3qcCZJD((6'4M6JrRY1UriklN!#1@D6-MeK
+
+4)[DqPeLQ5pj0)BaieSrDEq5P"($FZ65P#9KLf+q@Ub!51fJe8)d,8["6`3K3Re[
+
+&KS0A9QIj%rqrTVTS,9a6P#3dShG!Sl(I1M(0TF4h+0IiQJ&F@jQ0kT@0j3qNd0V
+
+[`br!JRb!Gma!eekrld8X4-M8QSY)f4TPk5l6iDZc%j9T'c%H%('TeV9Z8&H"(-"
+
+*e"'ab!X4Ei)PSfh0F36,SKrP$5Ck"L#ENejiCJ&Lh+l"4j5i%qTY4M"Nj'Z@462
+
+cCU8F-T`mem3SAZ-i%-TfPkcJ"Q#)GS`khZ@MDh$dN!!Y`[A"#VH*(8p@),a9"eJ
+
+EP$Z`FF50[+Ma"NF1r-39,PVBl%V+VL1U*EY-FQU60B@HQZ9DM24!+ZKl40,$5Ak
+
+,YKM[ZYi4Q9k8%")ZGXENj2'3!0D"Ubk,8)C`1'JHeKIMN8S1BA$FM[@mZc&YH8T
+
+TI(,ZK*&M4b`0GZST-SfY4Q)J@$mDqk*G"c#C'0pbE'm``hR$l2Z9Pk@U0!DTA,'
+
+H+p)+JM!R52HPMCGCmkcBe5jk`P'qmVB"a#lM)jEkX)id@3r&!fed5jD`&G-eJe*
+
+#14j14rB'X4j9kJ%,)D@rbifP[m[T*EqVe-qq0fQIQlHT`q4GUrG'&rfVb@I1c0V
+
+#)2h#lj-r6D$i"iXJNKEeF-80iLLRD+EAeE42(J2JBaMQ*i!3GAC)Hab8PfI-0j!
+
+!A0-UV0(V(3TfYA4bDU`ZG,q,!bAj*MBQ*dmId3eP$k-!plTJKQLNK(daIHS%THk
+
+X[T'#,GE1RS!'N!#5-Ipb+HS,,#j6Pei%Xaj&bBAT)c4+*h'Ym3jjAZGKMm`bI[1
+
+81P"5lj,T5cKZHLi-#!Y%F&q)r!(+9M%,f2m)+I!N$B8(D0'M2S-V5+Y&SN8ZYh0
+
+rk5NUBDPI6+$T8D!aLT`TA3)FeD)mk'*EUNKc2kmmGV'G)0KFUJh#aVGH"EM[(Lc
+
+9Kld"cSUZ"e"&R&Z3!$%)(Lk4K(`i6)XYLR@84E[qY@"&"Dfr6lq)AaTfUdPS&cD
+
+1KGBFaUq@`+,[5U)cL&rR+rJ`rQq@kM&cmm`X5Q9#X()2+5llqVI"%XX2N!$)a%a
+
+pF05j&(k!SZ$)Nq*N4%2EZ,rdeEf[j,52H4lZXidPq0!5qR@@Q2YbFqN!THkJ&CT
+
+#`(EI29JUfmcIGM6`lGEpr4)h(LjYbCRcf4!@X'@QPLDH+*GkmCQ$XR0MLVh0ASB
+
+,9PLaB0-"r!S-J#+$j)0I,a8G%[U4MjMbFjrqCSP#"T9$X,E2P((FTlpG+[El3rM
+
+%*m%&,SL+#qdM*64-VXU&P*qL&e2*8S*eETHEpq9DqUGK%a9R8M#L%TD*F0rc)%d
+
+$(r%hPZUDh49+G9pY*QZREMq$!B&f82[iJCd2"6kkAB`(dRCd"r6`al[ma'qE[e`
+
+U2f8fjKIPTrVX%HFGe[%q"`IbUa%4[(C%X2RVdAIrhArhQk8YLPTZ`QU[@[q+CSj
+
+Hf)8hi0KVmlG,8KjM2K)QH&(FB8JRVCG3@@FFIrq'l!6HJ@h`D$36bEYj&i2pH%-
+
+20TFdI6GLkLI&lITc+&K2eJlY`9)*!4kE4VX@*3qF"G3-kZ&504)Aa55+#T[h#ZK
+
+DIhr)MQLU"%pp+(epUmNP8e+cR1S,5h+imUG4UL60FlKFUeUm%NG'!DeV523"NP%
+
+`K)80qYiH*$U3!,m9&%[i-qBDp"Zae*(dKPL!qUJM"U@rTED6["m'%5BG'%N"C)G
+
+)NDTk-BCilG5HkN5*PfTPDf4c[aME#F*-dSj84*MajE05[9D#Pi8HZe,jf4kHhl@
+
+0*"GPlX(HNi2U+b5UYm[iAMdeepQ&l`Y(F*kN1bA0hk3M5Fp90T9mi+`Er26dB'G
+
+R[eVHUqZA1jALpPkPA#XchBIIjG2YdRlpq8jjYkb3!2,0bc,)+2N'Sj@HkJLeHV&
+
+D2p$IXZe0+lC'Pj!!&)1R"f'XmS&p5#YAhaAi2)IiR2Cl0(LIIdXRrYJZ*RmVlR,
+
+"LQ!GIAP0eZY,D`J1$f+850blp1M9)adFPq[e[cIF-!-lX[%DK`%6!r+#&$Crbbr
+
+*-#[fKEd'a,T"TA8)r5EbHKdM43Qdd56"I[8*+Xc['$eQ$aJM8%%DQ&ea$Lq#$*Y
+
+N9Zj0Ri)`2PAI"LFQV9hZq-3rh5cM[`J*`*KY*Zp"'*GHqN&r20Yr[ed`"-l*Gc!
+
+-SH[YChG2rPMP#4ZXM'+cSr69dZAldd&a"bYr8Z+lfI$$EQRh5DQ+(rJ+T8"YUD4
+
+iN3Nq[X@$Y9RZ'(8[R&liR1'ea'H9m9+Ie1C-[l#"&mDThU1HCm,q@C9QGXDIEK3
+
+f"R6B1!*VRZ$GAhDANTLic%jPPGpX%M&h84)+lY&@&L,c6bj"Um$(B!Pl'*Q-F!%
+
+K1+M0k'KiJL6)L6mcjdEIAY$SC25+8Y'8+9mpY%m(K)kkYQ3M-SUc3dT'6%P,8R$
+
+50@lA3E-DA9p5fU![mcU#+BRJDar2GZLaZ%Ec"8GKVl!L6cl3GT,dP8XkL(#E4-K
+
+C$ZjIaf#MiDBB#*+MXrF`89+iP*EhX2h`B+r,mB9!@48N83hdlfM,XJjJR51DBC-
+
+UR68DD54@&Ip*M-lV&6P`H5TJFLTH&I[5BqdriFU#&F`[B4!QJl"4ZjYl#*G)2!@
+
+II21A[hc&M)j[55G@mVPlp4HeAV[0-1"RPKK6JY,%TCEf9$&LP%pdJIK*Xa1hqRM
+
+*bAXGQdll[jMANdZDdP(E*1Z0C,C!h%p0-R!9[!40rl'-(GTah)&0)4a,L*aI3r'
+
+!GLL8i!*34TUZ%8pJbVI[VLDpTX5&m0Fd[Va2jb6l4Q*LF#SHcNKP*QGe1ITrR0A
+
+SJ3@L21b""GPV!2"qNpBC@TCN%9++K9iC-3GFbH4B#2RSli@ZaMecc!3-2rRE3Bd
+
+1acr##4D1[k0hGrI6,CfhQ[NY*90r`H#@NSjTelI,*"P,Df#)[Y1@A`Si+AmkPUa
+
+A"fam5U1,qh4+X"@LimYL#ChYIkYUcqdLIL9@UiDqkbb$&QBHH`A9f,@5[(p-aKH
+
+LApQUl,r#h#PE%f88eK+!r$L5Dp$V'$ZDb60Kp))qABCd13fp9VEEX0(qlfeS%*A
+
+k9PR"XZa-(BTQSFT4AU#JQ!6HD8RJr4h[RBZN10pdNVmJcT'IbrIRNGc3TrY!+(,
+
+BZ`$()6Ak`62,T[S(JdM'9aqmNpL3!)iU,2SSJdR4DK'2m#,"k%lNX3#QqhdZ&qc
+
+64ij0cJ[h"a*(6ela"4qG`-Y`aJ5HRBC4Y'4,[6NZ141QdLL*j!8'Fbq-JGbA0jD
+
+14+CM,EY"pc0RcNpbR'Ri`Af@8)0!DC!!B@6*rra6IIAP(j)5H#j2I4f)rla!j1Z
+
+KJ,Df30Y'[UC8PGFE!Y6Ak&b$Dk@1!%EIcHGXP[iND2PXir(5EX!IB3(ikNP*-c3
+
+##d2mk(Jf*dcR*dmGS0MQ0hX(i00bYHD(4,AcfFfBa-4V!q3QIl'ib6mG91TP2-q
+
+2N!$rG3%*dURY%qrh#cbeN!!*q)F&i$1mra4[*K$)EaD3!26reU4#ND!8RFLMhN)
+
+c$l"IfR1)PY6i#690%"!9VaU0cjq*69q6rhh%"L$@q3Z!iVr#h#$ZS2CUVelm@SE
+
+[01GE4Nq5S,'+CiBR%5l"kcAZTUYZ'4T+8kH!3+XApA,JaFrA!8IDeJ'marQ!`"-
+
+'%%!SR2m%(-45LRB,@+rXP*9LmFU*9L[IBffVA&DmdpEa$BF,hR1%#`P)LXS2m8P
+
+akim1lN6H!2)CP($2UT8$jBE%"QrqG')%VHeJ08KCA-,qG'KAX0*L-leP5i`NL00
+
+McK"RdNS3$a+aG(6FRf-kb*TJRLc'(&pELrh#8q!RC9#P!i562`G%PDB"aTp%a58
+
+J+Mi8lfd1#,b[$A"155NTYIpfMD!*hD#B-,10(&6,*Ed4!Cb4LJ!U43MLM&4'L,P
+
+N)D*)&X*")1B$[S*!G)L--Ya!%R'[Z#Yf#(S`FPGJ6(3'H80hBk)E$PMI1pYPFX%
+
+AYfY8a&Hb4RXYbLfLIk1,4ecI[-EdMb`ac!KY*UL4jj2[h[``EKe2d0iVriXm[X6
+
+"ZQcIMp0Q)65&49arGJ25-#*ib$MP*l2e[#JFh'JMHCq2Ye05a8fmAKmKSQZ(JhM
+
+9fPDeT!k(S,)6iqE-L&S[I5fRhfLMR@fqQ3THTH6`CN`TH-D8MCP&*j!!eXkLN!#
+
+XJjP46'Ah#@T$$I'-VbHiJCc3KAYKf*rYK@&rCL6Xcr,#X'b5bSY5p8@jp&)ReAF
+
+Dh&i!eJR664MC2CJNKd`ZS(X"ph4f!C+5d&9f,q4CP0HBieAHbHLYLQd4cch*U3,
+
+D@DR&hVGfZh9lL*P!hZhML[IbV9ca(PU9FKQpG9#YUBc@N!$!&&#,E"2!UFa93&8
+
+K"RPl-@0)#88KKr3CG-*l66iLE%T)Q242"b8PT16T2Cp"a`'!CV`Z6i5jA@LP#Fi
+
+SLeS!*%S)a[6l%I,Pmr+16LQ0+,0P`T5&+d[%h+lJ(m-G#TGl!i3caF13!%`qB$*
+
+H#bTrZN$#iH@UYX!lfbLC-&HIK"0b!0UFKi%QZJ#%0IH-3&Kf(0ef2KlKh(L,EH`
+
+V(%1j-r-ClcHUUjFXJ$2c13@-MfIc!E$be-(0TN[KZRh%cDId8GU[lCFeb#-p!IR
+
+'I8C$!210*i"cV`1!M2!ThS)[Uii[Q45m`r2ci4%f8mB82-qB[6ZEq4*c3CY9T8d
+
+8L-i2[@UdLClm1cLM6F$0D40`EVc&0S`fT@pKaJR51Q#!FppDUbNGhQ`MDI'HS,k
+
+GFbFHqb)mGEb3!(9)(V`XmMR`3*`+@N9dJTDNNj-r#83h!VamJaRHR"5!*k5JMfQ
+
+H!ZTlKaA`,SM%"p8Uh-bZ&MLcUqGHYF16qdC@C(kbZ&K$ilXfEK'"9LUU6fYYaA0
+
+%q'+'H*["-d6*i!%1"@M6QmSSjcTmk"%YI,K)ZNM(3q+)*H8IRm'6BJJ(1[1Fhdm
+
+kXj`&e&P[*hGKYH#CK0A3A)ZhG%d"RjAfDUrN),AB+!Hm$ZbGa)1jEIfX8TGNk3P
+
+VM'Cicj!![j9E1j&qN!$HVC6)BT)'H6YP"RQ+RK0NTfrhmVa8h%ChQL,QaJ!4e4J
+
+i4984DL435INCp(PjZi3(HG999CqLVh-qBd96-lH'p[FcYKDCXV)ijrU@f5QJ&LF
+
+Ui0eieM9SL#KLRXii3VcEZpBD'Q"[jZKQJ"+6Q3&+6%B!jrBr!0AqehEKfAKl,q"
+
+0#b"HYTR29kjTqMX25`ZFKD@rMA*A-!Mq@&+6$h"c)R4`D211FZ'q8ha5%Z%q$fJ
+
+*RZTU"([NC56@([!$-YpJ$cRhM$PLC,L,,rME6Z@C5"3q8(NqFNQcV#a@c`r'*m@
+
+*Pep-JSHN`jS&Bk6hq52f*,K`'rPeBeVNPh$c,3,1YY+rdFc[m!Ea0#"0[(V&"k6
+
+EGlCLX+-E4mh(I10SRR"`9Z6dH50*Lj&$c@eRSMVE@ASVme14Kj%j2(E6A@2kjmF
+
+SjXR'rIQ-ccEZ'ekF5eJRAk@BMiR"fj@J-Cf*3F&Ff$FlCYqd&aRb(CmKEbrNVU0
+
+TUF#B-CbqhF3$kY0!IN*0AflL8@I%Q)fCDcm#kU(2BQ)'Cm0e8CH4Ef-IG4N#f,c
+
+V-0MGpK4pKS"0VLph%E"4IAR@[#[`f0e1#cbd3@SfT,3[*S$6FeG!249"R"jAKJK
+
+"PRZ1ZdJULS9lKZkmpX`VfdAac)i)d6`ec6qAQLCF,Z%)*rXMAUi5LHG8)L&crKQ
+
+0Q*m)mH4%1Lc3cr&FkJ&imdJEm**)'lfFBe3@hEMMp(+HiQQ-iSl2Q`S%8kp%QXq
+
+QTlKhi+P%%DHAP5,1696m*Gdm,)'4GkPFDf5@`+!Z"6A@$T3GN!!hXa)8EUU(((E
+
+ai1[VQb6N`6lkk18Q#5T[2EmHP+![Ua!&JVR)@QNJBPTP0$QAELL9XlH)qm8G'Z1
+
++f*YRXrB4b$8mG(R0mG#'+RL,0!"1C+ZbSe[[,Q)q[2E+5r&3ZRIp"N6d'E1mA-J
+
+J$Dd4YkHh1pSL1!ZPTG06c,BSL,F-E)M#T`CjbkUAN!$c20lPV8!&cPLPY!F9k"$
+
+alYkTR`c%rD,jb3,*E-Ieb3#b9[iA0k5NIfjf+5b2p)rIC4mer[NZdc'(Z@`4C5"
+
+iVEZ@)2KX8XL#`ZkjjER[a+cJc35ci1Nq&UER*H"-c`UJk0NZA[5Glh"raqp`84Q
+
+a,hj#0lj,QqjA,'f+Ch$F-EXDcN#E*l#!TUYH+0KpGFQ!0Srl!FdfGjF"*CaEaQ*
+
+hQJ(&Zi-@Zc1d1r0JAmd$S#e@BBa"ChDqD6LcJVI)Aqflr&@hZeKHTMm@`PcbG)U
+
+(L2,E'HR"MbP,j-`AU&k60`C%af[jK9T4([4kqeHJmbK2ZXT4Qr%2b*H0[KijkHl
+
+pM*`8f#UbPA$HAJ1HrV#0aplDBJhdpKUq"ldQ+!qU"#@9iG-M5[XfZm1rH4!Q%iH
+
+hATlL(DLAeje4MBfALYfl%K!f5&S*L,jJF3V)aNQYqL)JRcah!jP992C#Q2@cKX*
+
+U%@DpDbJ%jVc,"TM@C30!00V2!I'U$!@%N6,,!q#Gc0X9mICl)AVJChf$eH*,hcH
+
+iD(&%P6(@D-95[89MMS28hF2jc2ZV4Q-Dj-f`9f2Q'SkBUZ%)Q2X%"(3q!5&ce8T
+
+)8ke%a'NbIIB6+K&aQM[@jH2H6TZ[jQ9&BpjDYCf[Rlh8"SJh#-`"$l5,i-l[*k$
+
+hqr@j8Y1VV*Cf)AVp9ClKTF(j@RDh9EF!%-p[Q31LLXS!jqSGJ%kp3pr0bkLJlh`
+
+CPEjX-pq+[$"6!1mS[`S6e&0qEMB+T0GIH9qA)*DI2GHP,-SC4a3jl4G950GiL3A
+
+18lKBS+4`HiZi@V,"iChj9Me3e6@%jcXl+D$jr)&"hXEH*lP5rll9'fSmJ(bZ(Hc
+
+S,Xrrr4UG+Q!VH3iUAH8'PjmmiF3J*&iHib5HLh'Lm3([`jUU#$3q(1aTTiBKVL-
+
+-ma-UFQiCk#+"8@1%fET@h!Z#EjFjJX4Mc'HPZPM0Z1D9Z(Npl!IFHC%FF*-L1@$
+
+1I4eJTVd-"-h,(+j!jb('0*!!#%5mF*1[Cl`GFlGBI9C@baZJmeJ4300B%8&cZi1
+
+JD@D'U(NZ4e%6`'NdjrXaTfN64Gd[BUAD!+@idrL)iVVi#%&cliUJDQ%3-2H@#HL
+
+pC@$QJ6GLZX#E)GkZaK#6eFcea%3D$!B,+Q#$6(DNA`BSHT%ahJjZ+H,pp(QbMl!
+
+qfHFJEdl+35BR0AGfJHV@q6B[2LDFj*b"Pm-46q(iVYGm2$kK9I(LZ8LZ2FG,m`a
+
+ZQQp61!fV#H$-R4S$jSde"%cDC1C@-8(9+ZiM(d8D[#P5UL%I44Ud)UAqGhG@5Ze
+
+29CAYLeUSbC!!#lIQF[ZX3%I5p*EU@)'1T+P"kXZ)V`Y,2[H9f)XmTT*&AkkKL2-
+
+80a!epd%i[,"X0Q!*`@(94)Ti5e#'Q!ejZjFaj&f'M'rp%MJqUij2j,KH5qhJ5Dh
+
+1BaZ$ANmk!CdAlVJABq$YDh-d[)T0d'!#rldbPA"meXF0*'b0r4f%XGHH)+Qkc5k
+
+JURImm,#A14[bJ@J+0bdj8cJY150FAUC'Z)5Hj39!Xb(PN@D+KcHfcI(iN!"(iLe
+
+LP9TT0SKCE$H9'I8+Lqe%UZ*GY2-ba6SU*%9B#0l-QaBmi9m&R1T$"46+8X3TXi`
+
+41hdd(Gmb#fcr'TU1"A+Ka5j[(HrdRr2*Uhfj&Aerba43Rq'5!%k6X3TSb9M&R2C
+
+c++EVjmKH"[-ME2C!')@pNfX(HdkZcBZN"G#+T)%hjb2J16k5KhR0kS!1S04m(G"
+
+jH&Ier,+S@jpA@a2199[MaA()ldm"Ab+ZSa5ITj3%d2))K-Ye&q(N#-raZ,hjH&8
+
+YkTRlA3+Aq&d#1E2e"&,BpbdH0jQ[j1XY0HiZ&R#["+j3q2m!!!d2GA0PFQeKER9
+
+KE#jSG'eX!*!3Ql%!N!m"HY-!!Dr&!!$"&`#G!5G849K89@f"0J%!Yi5d9,H%Y&3
+
+!N!B0`J#3"J3a!!"4H!#3"VM3#k)!6j!!!FcaP"`R@h*lpE*[a2(*+6kr#mmT[M1
+
+qRXcV1X)*)`#V*r8N&*qZ"#"MYT)"*qK(+h!eN!"bqS56Bq3jH8C3`FQ!Nq0(TRM
+
+#9l)+R0TRhN6M`&,-Epc3L6j-29L*G3E6Gi2!Gd"YkITpep&e0h*",S+HeMBJiL3
+
+[8T'bR'5klNe8ZEr9!SG6)QJ#,)FIbfclIqMd!$TYh,MBJU#IddiPcY$1HY"UlCF
+
+Upc`9JZDii`S#e%3cF&KHJ,NEDR*i(91HDr(+J[maRLj6&!kN&#['[e2JqAG,H!B
+
+$b[N@`(c%iI8$Tr5"Tc42#ShaTI@b,Xc)!`a)[&U62!H6,ADMkc84+iSIkD0@jQR
+
+V-G-5qVUCj!RJTLd`h-3,64Q60"IiMrJPb,q8c4%2,-TP8HNUbZ@5&Y*H"3J'jY%
+
+jIh*4+M2GH,D,Rj%I"Ciem'DhAZ"pJ#!FK9I`-MEeh3j&-FGHC-2%(RYp0D&&c01
+
+0P+f#%diLEa,eeDmkT1fI"6c5l42M5I(2GNi,9[+BYX4f3jmP*#`Zec3AEqZ5Y"!
+
+mAC4[Z*BC1Lelfc@L1H9%-2kmk$@0F+&LkMX$+HBJG"'424Re948')bF-`PPI24P
+
+@2a8Llcd+1'PA2a8#Ih+l(m[AGr[j"Fi[m,QpR`q(e6UTlm"PlMNI)lC4,91hTA(
+
+Y3H#"i`A"e(CG(q8EeA3qYChGG"$1A'r@EmYP-m[%6,j$HD0*AahlVKYiP9Sj$Va
+
+KT&UrS0+EQ6IXUf9"1DC256*0-Mmj+XF2+IjAM)3U1rj@p&'`Z&D&BBeC,JV91N`
+
+D!23CRD1mlLPDeFm6qVN"3"9CL*UD[@!P*Jcm!,rVdUA*p-U@-Pk0ee$&[$$`qG3
+
+bTe9S"+&cqp1l-2,3Q*@6$fjp-A(EJU0jpj!!-[SJ-$IfdbLFBL"mXF%4Pk&DKJC
+
+q,MK,bPJQS+4@380CeVIjSYKm[rXk22UUY9SK@Im,TVERQ@Te0(#*)$!A(0'8R-+
+
+8Tf[XLTpSP330$T5k05A%e0@`BklA@+*LE&10$`EUeFjZAkK@6`-E+r&U688D0cb
+
+!1Dh"p-j9ke5$J#h4-4Q%'pQSC%0YH!"d9J-ka93mdf$%b@D9aNd2@-k2@$T'9lA
+
+10EKRr,(BN!#B`TMNC%PPSfei3(44)lVXU0D&c%0C+,)kZCXH2(4CPliZ"[DPKXk
+
+*1@YkJ'+dDbSp@F2D'RLF-iiYKm@d+0*mfI3!U'k*h4j'$mjK[U&aLTPp4hK+&PR
+
+MJkrrD2-6eh[I(%"NApC0rEQ0+lYqIM1$ZIqcecI``@"Q!GE`)4k$GSr8&TTCL9C
+
+T!BGl%cb4!TDlba&0&$aJQVie3!IPF%2i*lSeGGq5PdjmpRVXP!q98NB"(!f`%Q*
+
+cTHY2N!2DPaZHrY[K3+K(Km18JQKpkhLRNUUU1a&5PJFU5AYhZ[d2!!d1GA0PFQe
+
+KER9KE#j`C'CX!*!3##8!N!m"Ub3!"M$q!!$"&`!d!)"34%BJ3d&56`%!Yi5f6,H
+
+%YQF!N!8'R8N!N!8%J-N!!$he!*!'jY!'&2fc(#4bFTE)b%'1%SAjQ5K+K(LXAdk
+
+`+qJCQ1l(KEfi-f`Z)-(H)iqpC)bp"([*"(XK`9kSlj[I`QlKGATP(VXqA6`AK8b
+
+pE,!i-&D42B!lcq,,TCDq"`$2pX%GAdk,Pr$i`N[T!R)(mLj`2p[a2R[H5G[RGA3
+
+"Yb0`1GjTLfa6b-ipB*8'1H'C"VFpLflGCaGEf-,NERCT[qB"G9eACfVHqPk9Tp,
+
+1AB,N3)rmKLfmK`6FVZ4@GZ,Yp"a)U5)KaFM+a!C(1A`DP`r(4F*#iQKL!bFJ`+a
+
+JlQ$TDNA#$6aa,V18YCfVZ6-*Xj5GXDZjK,QTSjQjN!!3R)ZVXlQa2CaRCR+mV2)
+
+!#dVS'")5AD%GSccZMa54hDABV"9TX1542,5[C*p'UhT"D@@UYJ#Qr+09U6qZVjp
+
+L6Kr#M1!'[hMPT&L&@BLFk6FSbXXiB`L"KVl#FaB&mY)%83ibK(AHk[LpaeMpE%V
+
+apk42N9#I,Lrk8&@PR6#Grq-1F8aK1SUE%9DeBP8hM2cMMG)G@X@)c5i"'f'3!#E
+
+R#M8h8C'UPNf&"*T#i@KD)Bd#p58ri!9K-c#XaS[+F9,N`c-B)iI5KfB&DM,cMmE
+
+GV1-dIZjClUbEQbjC`40jXd*m[1GZkfSYhRi,2DdF-jKkb'XC(DX[JDZXhH$&kJL
+
+Came(0+%2+SpG`dBi*R*,,(3qI5pe")`+)c!(LQ*dJfb`l,I)9E0QqHB1CRq0#Cl
+
+3D0&!dGm1$qHr(FPar2[Bc@9@rqaN6X+XBQaT$XHXD'jQE5cQk%QLb`*m3ik9MB5
+
+EPddI$RMk%R-(9a+fhl-jPeR9h-A4cGR8h)9%3!$ijNXF6GA-A8PdQB'M[CKCeKl
+
+i*@H6-+ZEHlS#hraL4q"lk61ANIcqk(2KJ'1-rjD+!mrKNpj-mRX$m#RrEU+9N!$
+
+llje`UpDEVYS$jZCN#28q&34C`Ki9eGVpFZ*H0p8$NXbAI&N5eepD*eVYIE9`(&U
+
+4ibKZ-N(b(b6!6BTqZ0SY0+f@ZlPPH4rVR#adZ6N#TLHHr#i8)cB%P0G[5Z1-R(Z
+
+B$hdQJ2m98j&K'H,mlcC0e44R&@FV4EVCr@)8kcV#d[YK2aU&)h(MbJFr%XFJdpU
+
+TSiZamA2FG5km0@'(8@9!b!i9K@Frh0d2QK*&FfBSRjkZclGiarNlrN`FTmikaX$
+
+HHSBf'9@SF*Q+mcB64GY@@@T%&iBbCb@VG`iKZ#(M9GFiZUPj111[0Ab@mM`UFL6
+
+bHGTU#AX)laP(-'pi'H%5MDP(r6$J9Z2CJqi$fB1KNAEqbX3VVE+8qiABh-1-iL@
+
+),-k[LC,YAY#,[UBfRfa($E%R3UU8A+QiC1`663DbK3lrb0Id(e#Mk$ZeqFc4dr#
+
+HEd&qcX8i45dpFN3rm15ccaU*,C!!f+@T[RF3**TP-%6VaN&-MN,,RcI9$UhdDCf
+
+qLpF9MTfB&FFQh(f9HI-b--aC1Vph59YBa!hT'S+%'BlP,6E'[j+1qT94kLf9LD-
+
+V0-[RYMEDLq8[N!$iF*ab`dCr2EM"2H)9JbLRr1hED)H80mr5X4RI*3LafU13!!m
+
+hZaZ"N!"@C3Tk0B@H[i#lhAeK$ADqSl'5'cr1SG'@Dmrmm#2b$Teh9$!MNCQdI,'
+
+E!0&@!(HLd3Y%jCDULc"2F2-iGY4%Y6U"SPXR"2)KH+C`0PeH#6`%"LeF(S[iTi3
+
+C&LfDpJMEK1+!L`5CB(j1-A*X6!9ZMfc#Gq22,aQ@kbJ3cVLY9[LkGNK*hhG"p,V
+
+pLmm)AJN#KMqP$V0GQ1S0#(lDT@e6QF,Sip#lRiZp%Sm&Rr25jY4Rrp3G8U[0Q#@
+
+[Eh3DZR4YabeClpN0`I-GP(4LXF*bGNKYPF%G*&b[!ZE!-`$G+cdb!Tcd#1Y(,bX
+
+rdrKF+a5ZqBmQ[TidZ("4(5eY50dI&2e'(MM1iE1+ZKdqD2eYLkcfB`0SD+M-ACb
+
+PQejAF+cdqH@'XCl8a13E'CGCCYmT[@hB%KpQeG%,5meq)IZ"e,&mKP#Ue&icDk%
+
+CXiJ2%NI,h4!m'Gqcrjc"9Ud9"Nl3Dj+PJqM82#q(ad!l*,@jmQQq[ETEm*2p3A[
+
+MHd(-GFc11(%2Cm1($B*h@%8q!`a%#`F[lM9ZUS8alZJ515HQ'1[#p)%l,+5J(",
+
+-QJ,e4MAC$q6&$JGX6f*ed+2,F+fC8k-5)""IYDPXTKpQlhA(-eSfFEdl%,Kq9Jj
+
+cV`QIG$p[G"cf2Pq2'lkqrQ3HZ#$ZXM(8G%abG0ZNA8rckhP+Ej6Pe%UL[!aBDlV
+
+UdcFIk-)e#'qk3$$XH6JA[,`0lSJmNHEZmJL[#Ee`ABFc6019!fpcN8+L+jD+%d0
+
+VE`'8#m&1-XDU*ekkV`TQIBR`F[J&PM!0(p9R9,`QP4C"kBXJ0@aHa)'H2decq8A
+
+[dTLBj"[*+"eGmHF)Q09VfRS`YZpI`"p!he!l*f,$8$#E5k4mYpp"98AA31c5fdH
+
+jibm1'PT%EC8@ea##-Vcl&*8mA#V6A6,TVA%$5lja&m8k*C1SJ*mF96P8+G@E@I$
+
+XM3d0Xj@pB@$q++A#ki0B2lY*c96iUC1@JCKi'[46EP"JBJ+(NISJ6jGRmX0EZTE
+
+FSQB3EViKcBlZE8AqUGrNj0f$`DMQJTrJiiF,akK6T2Lj`V%hN!$jS,)T')PImYT
+
+c01DKdjpZ+4+92a'fmNd3H9jfE#)Cb&dd%KXMH@L8kZDAifSh[pfV2SX'X33"R-[
+
+9`[`0$&&4j4G3AJ3K4@dTN!"Eaa$ENbM!kZap%(%5`NF`+l6bP3)Kj)kBIa4@EbG
+
+B@i*iYm@+eJD6m1V3p&r*aRpiE9H2h,h`Uf!NhP*"fZl)M`XNU!ANdIHLAKAC&*5
+
+@SfkSMkDGYd#epJ[BFpQJYSN9`,I0`1$A45Qkj+'E3c!Cfm("kV+K$*2Vq`i5+PC
+
+M8pC&6FUUXLQ4&-M#"ACP&McUiG&iq+IBcIqmZIjj1YcEPdBY(qKIIdEJYmfJ`6-
+
+MVC,$#I19b*[PTp`cXQj&35)"5*J*aVeB!bB99!@CSm(V,`a)r!C[Xkjm5Ia#,9a
+
+fVrZipZHJHbi42KK5686pS([NVlRkPS,l-3HZ+*2"+cZX2jkc5Gf&Ekm5-++Q2ZS
+
+ML5D4Pq-%f6!2j+#iiNhpZT!!i`kG$6l&IqU[f%l9*Xd-mZqi2l-),ABPINNZ&M`
+
+ZIP0Q4`K`$mrYdS$i"QZ%T`A'C4`+5S5NKCG1HBe+@bJNhb!"k[pah'C9LQCkL86
+
+@D`&+pX1h9"XH0p&a4A$LEe%2LDb(*(X-9!VLi*3'Rlp$bA9L45dJK#aAeE'UL%p
+
+(P(!HA*N14Z"&#DMP8"!aVB'eNb-QQb"ZKhQY,2@8-V`+[`Z''S13!)bR`k6P+DV
+
+abp**LY1EbkU)[6BdUUBmiAQb0'C2%0Prrmb$h2jm9H+J'P+El$&e6@IEqH(Mair
+
+,i"h@YY51Y#4Q506%f0E$%-Rp1XY5"cYpFIF'$X@lTB[Fk2)Qd-S@DTd6lUJKpIV
+
+Bpdr$0Nl8+D)L0RNVL*&`KTT1M4'XRd%Ec8!G9p#-MrY"`CPG2[mDf3PcMi@LHSY
+
+[TjHJ+-JAb$Z)[a$iI'f0HmGV,6X9P6AVI3YPfM-'MKj1L*(8+Z"'8#l#6#CD"kG
+
+Tb4l)6Aa9+bNl0(Vqd8lD9#Y2AIp9VX-U+l!`!1(M*m%[+@B'm%&Db2jFd"PSJq0
+
+2fEbrTRK5+JQ-"*5IacpICfmVabh3A3NI#NdbdLE2',j(a8!eSPTDG+'-mG#fc5l
+
+p[$hd1MMk@G*M4Z1+*pJk%XAffI!Q(AYKJ!2C3dP!,dc`ikPc)1Eq,drRc@N0qr8
+
+BqjcEE9-c+HBk*`b[1%pMd(CkN!!1I&mTX5N+CpQPLTNbKS`(i&Y2&,T-!c2(r8l
+
+bSj!!`b"p"i`bUQ%GKV6VbhVJF#la),bQ9JlE51C&C2*G@@,hDMql$X03mM`'&h%
+
+4%YX49GfQQcBcGBaI)P&Rk611L5E5Na3@QS(PMAZAQh9iGmChIKXKhYjX0Q['#'+
+
+H5*!!J6ZPBR`%*JI"j%b+U1)X1&M`F+E!D8T"1ECDL550KS1#@5Y62E3BRQZSQP"
+
+`U`ECf@h(@aQ4HDpbL8"`)T*[lCh'd26ck5cdb4MH0PiThGph&IPY@h8G6iaBX#8
+
+JHlc*8KK6YM'Jkl)(2%cE"62T&8T0C9X6K2MED$-SYbPU#R4'GB2YS8!aZZRd848
+
+eQ3LRXA`QBBN+LCNk%V`B*dNPX`Hd#C5H1lVJqS8r-QPpScF%UAk+HTjNCVTlTrI
+
+GqpPcBHaaP$&PVBkr,e(@r64AA[V#+`rf59TEM,dbpBjRZe&DP13#[ppq,j21NU2
+
+V-lE9a)83&*Fh3XD(3aDRES$!mm82ZY[eV,J+P2jJjZPf4[!i1C!!QUE`JXSj%9Q
+
+ER@Si2V%FjL-&E-QUUeXM&8mF5c)@k4P$6DJK'J,EeJB,-j'h)cXM0Zm%&MJUeqT
+
+b4VNjNV22R,04Z#H4CjpE[lLJCY&mU,@DJ@VTM(FS%B!LRK9Xhm+V'5VqLNN6p8c
+
+2d'&VE)ijDL-Vi-3Fbm$93[MXP*HbRX3T!3BYFhe5r*@ZZqIBImNd5r3rE$JfXHL
+
+"`mh#m@q((,EI2P[h##FZY1)F0YErm1)FYMmqIGU-HkHfYjhZ2ZEQ#kSd&EF5AXZ
+
+BQphL[6hRfZ2cmmS$8f49Bk1lJEq+"ScN4P,T3P))KIh2I!S,1G08E4YVpKBH%VI
+
+FULrQ*"431J#4fAJSZbPV!-DpQCfTq4I-pUZP!J3Sdm2-L`lZjTXQKDSjJjH1cFp
+
+[%aF#"-Y&AZ52i3"[Tf,VDZZ*LKR,"@&Sbmi1C!kh"fq0Ld"QEQhTJ8GLpRVk!m9
+
+[[jM'[BdXKKFpL,lCc$4qJc)N(MNEQEJA@25*[MLFRH4dj,eIklX!')fGcVke+![
+
+(P23l-4c%T%%4#4JiYllkMVV@*Sfhm1JjEf1A'FDqPV1i9(K6P%+STNeXqaLamZX
+
+km63mhESP$-b[($Je-cXXrdTTPMfAIIb)kpTm%#aA[(ICLpV#mF&0I[6@b@q+PTr
+
+qakZBbYHVXTVm0D(RYZYXD(00mejQ50@"TbFb15)(PcL)Mr6JAE6qa%GEU6Sh*!2
+
+ckF36Bi`hK*MUZ+pjCD9-RD9!ZqcZ"5i-0N2A9VBI6K[#YHkARU1-jMIC&0fj8MZ
+
+I(,mC2)%*$C-EH$R&MHJMPH8V&!E*HCIiQcZ0#,*Ym[B%(63Km'f6P69jbH4,Yi@
+
+@08XTU@R-ApT)%6Jqj9r)krGm9bk3!2Vbp-*0`9(qHB$9j`[qj-QNjUlTFPC$ced
+
+AbcLaimMjkm)&8E["f2RDmp2PhFS&0@!+cIm+8YR%@22TkGGGU("#jVGbli,ff"B
+
+RDZEF3'IXG(b9CP'Y,GJiURc8Vj%iJaFa@9P#l'q%Zqm(dG'ERVGf6qrp!i6X,5D
+
+H8JH!fjPH`If'lJlLcZ%ErE0!diF(JFl1&1p6RjSJ3f3%T$aaA$`INY*PB53L&bT
+
+i"fX,HMU3!#MA[Y5qZ5f8Z#baP4$d-,J28IP`Sd`2bY"C1"-FVrBpX,AUFN`MqL4
+
+G4dF816@h6!1@aiJJDe`(Qrj(B0hSB65hLS8J%#kj[DhqhL*AmKK(PPIc)NJ'L5,
+
+*D&,@#Ie9NJA6I)DP2l'G"#'TX$#$mcKc2SMd[hm*LJS!miAT-4VYZkD!fYl[6C`
+
+90BpI0erB-+GUTC!![AqL"Xr,C4-@qL!j$R)J2aiaiQ64P)q5fC%3M`UKHTk"e91
+
+KEr)Bp4eY`bVNI+@"fiQCMrFdPH6@2L9$P$0'I)H+Gjf)6&V28ki'ij8C@Xl*C#X
+
+bX4!N$lH6Tl9HAF5D-5dMNAT9[%[$DEY,hVceUc'f#Y8Y(&3&0KU%+Vi*JF+bD$Y
+
+ZNMX2,'e!29-i[%BmpGY2%26iX5j*D$mF-1RqZMf-VHe*P0SedP&'d2"1K@Y&4Y+
+
+3!)Yl44N&rRYdL)pE`CT8cQH'jU)DimmBF5ZX&ifR"[VHHhAB965G#3*VfH68!Ye
+
+lZdSUR1`I[52,G9S%SQe!b0Ni84a@F@M35QN(H(8Lc#cjV3!qe*,hl@6G(D0UH+P
+
+PX0Y(hjVRcRYcak`T9Y-'E%f(BGQ&KUI8+'r&Q)[$e%("%&fG22(&kPd8SY&63ZQ
+
+V+d"ikRHCmq5I+l!09MfHAJdVDV)l#PrYpklaDj!!ZpTH2fi@6@dZ@`pFPP0p`Sm
+
+-i50(if'+b*+rAi*9q"4Hqq'icV`1JD[6H+$B%kbd[#iieq"ZRVaQ(`mj[i43+qM
+
+qNe%EQbjpKFKC%88&Q*4HjF(d"NBj,KQRQX*i35"'q*+ialThm@(PaBi`cf639E&
+
+q!"L1Nb(L0rfdqG88@4d")R3jh4D3!-H'$S2ZQRf&"pq55DrcPm-KlLd[T!LB*#a
+
+3EpjR92FZ+fAN3T@Vap2XVKE2Fj,cF(D-pTViV2L4fdD,8#k66k2X#2-V'NZI%,i
+
+ebq%kFL68b#-"SRG#"mfLj8"HV$2X"mplmqSLA+Q4JiIHc0)G+#35D,1NpS*"[LF
+
+8i-Z&BY"Bb*flm6-V6R@RQ$2'5!IQeFRA0L@jikp+KDhQQT(AV'rP3,(MK-SRab0
+
+5NT4%k'GPkhdR#[V#T*DIr-3I&IbT$V4U1QcS8b,rS[jH!YBVIBc0PeRTP#fkNQ1
+
+bJH8fFI#"*`4Ril5K9B@)6lb+QH$kLY5Q[[(cbX5I5ZP%bC,Zk0YDa!&)A3ekfme
+
+TaC!!Nj3c`Q6h[2-e%S6(iR+,+1j-hr!F6(PeCE)KZ(6U3,qPC(8JaRj8A22iFXh
+
+"E&V4Qepc,+ERMEIHS[3e26m9EFF%F9'mcj!!cl(M-iBUQ2`C6C)"bGKfXcd-9@i
+
+!Te,pFrK!LT[H"jM`d"J-,VrM[@rfV3heFH6DP4r6G0F42fSZMjE5#Kb[KUc$EBN
+
+*hCmEf(dPa9`mUjFNV%qJ4@SCAh2kaB'MPIX4!5'(f33H2VaSSEQ)b)SBDXrLi`6
+
+qN!$1"*1TPbMXVil%)@AfS6#YlJJG,4-p**jL*E2ZNHHSZL+`Sl$jbJ"3NX1@q*Z
+
+5ecGhXZ6Y$NM!"ple#R&B0b6!Ska[EFHdhb6DLEJkUD0UaIPfk#EiIC`q0mLTYd-
+
+C3@qH'9ak!9S3D!H'%kAP,iQI$Q+3!'if`BrarCK`Y9#D,jk8&f*m06)AlT!!GAB
+
+f4RUi%+HfKR[j[S&f(mrlLB,XG)J)QPTpNGlCd44%aAQK[b@jSd29qCT*hXJGR4'
+
+B-5cEc[FXbST@T1[$[T8FGL9HK'pB#,%ZTFR(hG$4LNUk,h`d3frhRkG3F0'T2j*
+
+8drK%D'2fk0I"C0Q`fIf8X3i3[&)p)TTFP[C-4F-Hm&bIk$ffa&Plq[Rj&m5Bi5I
+
+GPYJb6+QD(BLdN!"LL1N32@1"QkRCJTBNraPrba@E8$IdAkP8Z9Yq*"IUa51RAb)
+
+lL1+U5$EH5`&("jhdpVa5%))E-P13!"EHC&4-qd64ZG&FSYi3`HJ&XMJB0''T,X6
+
+UH4hpb"dH$D*q`p,#BR%qeA%Qk(+@p'f8"cl'iNBI2,1F!d#pHVN`AP$E-Zjfdkf
+
+rI@6Lm$+DNk-Am@5Ilb95mS4$-BJG+8QN-m1f"&JBY('`d[a`AlkcUr9AepXA1FT
+
+&AaqbbU"YP"f)`G+2`42cVNRE&&`6%p+hYU"!QPJ+82F9R8+m0iNIVkHl8pEaYIA
+
+K[3hF`2NH0ar+LM4J*2&Y1I3"bI'(h3cm6S'103,@SHj0931"D@qGN!"FE@[6(+m
+
+EA['8DXd-2'('cfC35B--K%rm%rLK5%lPjd*J9N8ek196eJQRID1B&XP[Z!68Q$5
+
+iadh(r(+0HlM1Ap4f"kAbb)J&A$r4eaS0'"0X6ChQN!$0%(J&$BNYjQ1am-EFDmK
+
+aY8ebcXaa)1r6S,KaHj)-(6MTebJ(mh#E*Yc$5c)N"G+f3%$#P'bR+bDDZ&Q@jQH
+
+kep3L#$R6$-U#H"*l%KA5SmmjmRiPfJTL%ZS,dE#VYB815SH0lf-MV4c5mT!!kEL
+
++a'"Nd@0cbIJiJ#&G$FND!Lmq,q9hj(C(i#fDVZJL'NU(9b&Tc!PP2FGc-5rl2$K
+
+X5cP%PP*)ceZU%,ij'APT5p9lC[%km-b`mY5Blcq4`bH+8#*GcBB$Jk-8Fh5U5p4
+
+keYL+5m)aG-XMMl3#95qB[6C*aKHNqp8SUPIHYqk$lQI8pYZN2"K9LRc8J[Z3!+%
+
+I(Xp,1q!rq*d@8C!!-j!!L%b-d9R%"IYXdpZYff-@S[UcIfiP6MGd3N@H@+%q0)%
+
+F,E`kiHZ-(5XfJ&VE-q-50@KA"RELBlGR&L[dT34F#,V0EXMl9L%JHJB@B5GZ"h0
+
+0VN#+9ipRpK,!fPP+Iq[BF[j"b@9HM`5jaZ$`!DYf1*cKj"Y[hi*C+i,&#M9CIa+
+
+B%JfmKdD&lEVh246IdNIHFDbCTCcYJM'm6(9[QMdTK[T2dHNE@$CHE89i&@1S'Th
+
+X'If"DA3iib5VpX'#Z+&6'X@pMTY(l1D68P#'4HZjm&+44EhMq'JiN!$-+faDbA0
+
+0&39ef4,pG6$UBQXIbH-`iRqa0bUF'CM3DKaDCcRbV',hK5#aIZ3l[D0aJ"mmqI"
+
+GM-2`fl1'YmQLlFr*6pR)&dkB4pZ+&6f&e"Q*kM*cL%Ve-HpQK$PR4ei9jk[+rZA
+
+RUljc'VDIlPC5`@252e3BlFB(['(&r-K5`6f"m,PRG`-VYj-1LZje)$AL[ca%@50
+
+%'QNm-ak#S@Em"UEFf,$08dij@*([TTUrY#69CRDiFP3f+dch-QRm'Ac*03',4@"
+
+FhpYMbI'0b'8EYL,VLbl'3(e"65U(c4,Me9YCCr,@Ck3PQI,E*RQ3!$QhM5d85[E
+
+HTUe*[%G6&BXNC%,%&6Z-#G14cLf@d$H4Z@kP([CTdJ)QDX6Z'5[AS@p0@iQDbpN
+
+fP3j((5,H!h6-CDLX`M&er62$HQM44ecq(-f!G#b!rq`(091ZTc(SNir4m#!3b%h
+
+kEcjjY%JIipBGYbmi'LbpL$a[GbL)$i[Td@ba4#9Mf'1V)XRjG5[J(R-HdUmC5T)
+
+V1*HNaVYY3p*c(9#m[`cZ)#ZiQD6M$jCqP*H[V(d)H2KHM*ra$MdHCThc(lDZp%2
+
+TLF['br,[Tr*r5c&f8I"ecbCKiq,pmrfaa5XGhCV(QrmhAhVFimhcr(IJmMAf[ch
+
+HEiJ%*1RbYRe5AH0i(kRbcCSTkYiNTUMlK)p'VELdBPidePQPMd$4Cae*ZPHJHX+
+
+M#U%MQV*`DCVraBCQaLq),iCB!Hm8HSa,8AhPhJ224+Adqa'&6Rk-rD(JKEHM6jB
+
+YRf)kLTcpjN2Ri3h[*+mQ(md`a6Aa#cr[+XFL"hEL&IrKj*lGkC5R'KeqSZPZ("G
+
+[h(fmrp+-U+$&bV8S)jI3U[h$4Sqr6l(X4mCVUccGSiZa`J)p%X-I3P2q9PZA`9G
+
+pVKb'H(#)K`Q4Hb0IEkHXG+dBP#DXkNf#9(KZFCk@#QM$F'IYSRh3PH&HAq''04m
+
++4ah,DBHp9)3f,%BQc)ph&+mqEV0r1Y%5')9X0@,#hC!!N4CrmVPakN6Mke(Aba&
+
+kPH$VD+6R5*&T6R('lH4eLeLCcf,H9pl&rMPe[PNFI8-[jXmq@485hQSNJ"[V2%Z
+
+MXM8`I6#q$%mUC%JQM3(I++PI%`eB%2Bj*)rEB[B[qeKC[P4(j--e1&R1A0@9i,X
+
+pf-28bIqkXl*[KfQ[L3K*8*U[XCdhV8UJ0a5i3X!(jeI4C'#m!$ejQEYcKL$RpL@
+
+QH6[aa5#U8p9RQpZTiG&NlhT-l1NR2pLQMTakDial0R`Kq)QpF1lAfU*[C0Z80G)
+
+kUb`3pG@INq*,dEB@jD$I(H5DHPBCL0f&mAIi(q1P4`-dTBILVI&#1TiR+"-qr8b
+
+3!%!,NRHKc*P-e5(aXYGMb8br'$`b)fALi02f"-Z59$T)S,M4kIm!NiD$jM+T59r
+
+DQ6rDEJMf+I"q5)q03r#&!YCf61"*%9Vm!k'a&ahjVIMjJEaJJEf%%pcJM&0D-G5
+
+fUSS8Ld%[KZ2Nc'RYTGaiip[V8&R(3kid96'6-bJ-BJLI!@Prm%R*TY4N'C(d#CA
+
+JdS6QX"B*KQ&Ihf2fVk84e*5MdG@$d#'-C4"*,aG-*kE@$P1%*0J$V2lT+BL1mAV
+
+mT)h#hQ(XhT2NEJ8b0A61#)9B,pNQ61Ube*6TJ6EV4qKj*e#plj!!c`PlbLM4pLb
+
+#*(DhjM!k%5M64Nb*TI''mp20bblUq,1AN!"J1cfN6*`kF-J`k$4X(&r3%L6%i&X
+
+%+*YcmY%SaVR445j!)E,B!LC)TZm+@8$[TT@$$0'H5pMLrI9c)j5'4TTri81UKf"
+
+pYC09LJd`S69q9K"'AGb*'P2#A-(qN!"*DBfBp#[+8UAX*XG%9GX#!9*)8RR)5le
+
+(3JYL5mY0M63('4P@Fq8$VICA9aVlT+Y!cjLYK5dh#5e&Fa3hYGIKDq'F4le1b3m
+
+6q53HL('VE%P09AN1!NQV9'0j[0cP'6K+B23&pMe))1jXMVMG-!Xj"QpANF4&1'4
+
+G8!ljfTETa68H*GU'@T!!"2TB&PBqTH+6JH*2[aS#RRfm`2`f+(mq8S$ea(k8YDN
+
+LPLekI[c+56NlEUbkc`L@)arEc'S9Y03S0-D!K%ck-3r-&J3M#cD%qKI)Z2"*laB
+
+6@SNR++KAI13ka@E$S*@kVbf#YQ9%MHjUlU*E(AZaIm2H4e,%L"ZZA(`6aS-E#F@
+
+$Q8S4fipI'DKYI9me[pFDBKlmF[N-THjXTd'jZH@fmfCHMI!a4FCP@!XRCB1RU'9
+
+G2363F%1IapTl6aEb!"DBpUK"9USXl6*$3LLJ98L5k3C#MFZNfX3`EVFPKf8Pk3B
+
+fVXIfG5bHLN+K*-F@qi8*6!kb(1A+#6[J[SZK$Y'IC5-JPZeJ%*+SaYAer2)!CCJ
+
+iAk1SRI1cS-[Z'l,!L1r`qJ1(Gl`hM[b(i%2VVSebAld@klD0GHH5`bQAR-b1DAr
+
+&9hl1j&X-5HV*pFZeSF9e9rhEAkSPX[[2Nm+MDeYT@JpP(bIRLkQQhA8+!X'F!MC
+
+pIGjV-&)S2195&+rAXG`&,BDPJpA00GK"2+FNHl3+5(5,IkU`qB#V@,#Zq@c2)(X
+
+cHl`p+91%3p!Slf&qqkR#NdM1B-VSlm#Z%q480I8PhlV3qRfd5`b2Pk0IcL[S+i5
+
+qmH[8bF$@ZVfE`D!RAD&90dPfNc3#G(Q&Yeje+pJhp8'Q$6ER%!b,93cC*86e&5k
+
+IXaX5JZIQcpmLaKM&!V2F%Am9PC,4'US)&6Up#hpIQ5KBqfU)P%K')8"1S%AXqD*
+
+CN!#8KPHr(9Gea9ZHX6djb#8MfFa5$MS!qp(-$FI,%M8h`rh6$QmR)AUA5-2L9*S
+
+FbR%pFV6X'hEK)KKTdLfI+)ZY-AD!@hGL-qi43V63%Z[!NB,q,iG`mh51P#Fe09`
+
+`iGa9X@IHhX(G2I33cM5$GDN45*D3!"JZaKYPq)b3!(JQc!TUA9RfFYI,`Uf2QG9
+
+eKkI94HB15"fk9D%UJc+HGXlqJXpfhXV*2qd['&8[c%XImQ@+b$P+fi@0$DXF"Fa
+
+AK''I%lp)9TTr5P8!0"SkqD+8rT,AQRFR9i8T1-9Yl!''KSH[Ue*fq@C+&pHHIMf
+
+L5D)[%bFFP8,PTCK6cdeQVVhpfQJDAM3`A2@0[2943IJQ%K%15rh0fkpVS5Z+N9m
+
+aIhehl8'Ib-23pqV*(@R'k5eUmTUfqha4k$kLdk1P*Ge4*IB)TM1beI+*Y#pf3I5
+
+iFhD`f8ECi+BiQ@jeUMVHeDY'H50A81XPTdC6F*'pXcZP8(%8j)L8JpKEk3L13P!
+
+qe1L1!`'XUjr!Y'GBCZGV'[UKZXI`*m`mAK"`Gl4!A$BD[f5&-XF)@$'ddFa'fBT
+
+bkKEC3r@aqb%fX@S5BE+Hb9IMdcL-@Ia#"PXIF`G3PNj0Sj&T!09CIRXPApQKmC!
+
+!4V6SJ[IjR"0XP'')JS$5*f-mVd1N#HPQA(A(86YeN9Q&(+9Kf4$kKV9QKJ*@a-d
+
+$[iVcj`2Q,kF'fUVae6VTBUEhV'k`m04PpNjGXcBSPTYQ3jE@6&NeqQa6Gf,`qA9
+
+-ZTbUpY!ehk,T0*3YcQ$2cQ!mT-MekdT40UQT%Pl1IhKXTQib%ch+GEmBaAf$SdM
+
+)-T&,5AVeimbAp8D1D2pf`E9&qQJQ9DNdh@hi#r2jH[eY,p*+Q@06m8DCbKGA--(
+
+p06K+QJ(NTibkTPSAXTPSEpl50MKieSHmLplHi,G,0E+dI"'+1YiaEi%HImh"++h
+
+F*51lS`!YEjD5D1M"E938Sha8k3M8JXX[hhK++lkb[S)J&i1KrPKe(FMk0!drYpq
+
+qfE5&@aFZicA54A%jRkGLVhpI+J+k[(0XVl0U%p`B"8`62A1Xj"B#Yf[T(-aEIrM
+
+,&'bC(,GZ4H&Blf'll0IB@DGNF4ZlZAQR9"f+e9K36+d4$E%XN@hDHCEp-(Q@KCB
+
+NU&HRl4J`V,IiM%mAAc@`-#a[b&E$ld[,EAJfc'`9PFYpUkBhl*kUA&a2LZSR2XS
+
+qq+42pK"C-`Dk'&N&jMA@#p9fMDNaY(dPl"i6++$+6AH8DBeTB@[Lba6IJANpXYK
+
+1J3N6H3SAr%l!crGqjdK!+1bhXqdSp&S&Lmc($0GB"JjV+UkIQfi'[mldLfjCDLE
+
+Ui%+VSRA-Y"Fr9m5FUCGU`NJV9%3X&4&jh9d3Uc6EY)$)&,ej)F!L6#dN2B(qCH6
+
+1VM44d8ShUV#ql(`IHG+EHp$$dh[CD&fpKA+$`@jDa@U#aR@GI)X*H9J9)cMVYG-
+
+T1LAfI(hYfd6!IU+1@95pqb@A''1Cc0G)$KmmeiHhTmlKT&+!f&T&M9)+4XbGfk6
+
+[i@T65368lGc&Vjf(G69U`I2DEq8'M%'E(CEAAm8H*lVLXVpPHYPC21F0%`Fk#U`
+
+!BS+kAd22A5(6Kk6K5Lb$3k[CL3M8A!-%mqf#2bp3F[FkBij[L2ibdhCZqH431c,
+
+AZCkLKpP+,HI5f#++XUaeB4l"I!%6a[d!Cj9B,V[D4Vf`Ea#)5T8aIZD'ap*Gb#G
+
+3K5Tq4f$EG52VTH)H+lM[4RE0A)!Ul"6[eQrjTB$*%V@LCD2P'Q2)q+YZ+1'#fT!
+
+!qIJSE0"15(ki@VqBi$2'FRp+Ba&'fPErDQlPcVhG9bC#KPAr`l(G3FMkBcra1hd
+
+3Cp5@!AX3H'r-R2PNU6'alliB$d@5A3Z[c`IE1B2-dp0MPrT*S&0CB,N9+#FS4hc
+
+(4Ff!FL`2MZLPl9C*!X'(H8-m"1M*E$2[4LMqJE4Rc0FGY+ijMaHPjZ#e(DjY"'*
+
+[MmHKNAd60c4#jBc+r&CiT56cT`f%r$#HH9r4CLN$4KC[r-l&6aCLbY@#JKHM6@U
+
+@d"r3fl'i06B4HQd&l5JPBlM`11aC['*`UaCDPLr&UX$#KZ#qf35DI2*C,B1-FL1
+
+)hfZASKQi*eB@`6Xil6f&C(2i-UkQUCY`cR'FBak)`2#UVVGjplBY8Fqml)(+,01
+
+RMSQEal(U(f5d(er`JM32B+4Bj(6lDUUrS[NMQCdXRLP#Q9Ppl!C"I8`%qH0aZVl
+
+elEXjVT`RlLE9pEMj4r0hqXf)"T)de1G2JSLBY3MFN6QBcF@J##P[f&ah(6`Hh,e
+
+D#K!B&SiBEJ#jXB85HG4EIG%5[1)@*B`iYDF'A#F!P*)QlPE(3a!kpmMHS%e-Tb`
+
+cXpXf&kYLUQ#p-HelkDp9Y4'P0hG"b8mV50I&d-1QdKQaA'r3H0qJ*[r63@DhPCk
+
+il$crRJaffIrQbhDCF*!!f5qHF*!!AIEIVjadN!"GMYphdh'3!&GVVcZ5Df+'NaQ
+
+`IF8I([d1bhmP6DKFZ[IpCKmhFG#KH@cPbHX),@S2VhdD+UR32D99BVR9IJ(SLUb
+
+ZpI4)6#fAfDG8,424U4-V9GEiLN@R8FT3j!mL9R5'9FLS1LD8khcHpU"NFAT5P6q
+
+rNXh[-5&ik1&hk$&"3IaK32Ckq&hBm(cjG"QKiK%IF1($kf06CVQMVSA)r*BEcU`
+
+BMhbm4kkc*&GaqDP-`1rU42j%%*hG0DXDhi)R,c6eirGSr-3@ljcBebEAMSI"rG9
+
+$rjIRb"KGGZBNKkrlX),@1XEXD@6`&fBAhGIE4A&1q2HY9p"+V4k%`MHJ6cB868l
+
+p9#eVdIlYcR'[K6T512j24cm**k%-hk+m`4APkrJ",GHi'bATYd*V2&mr9YA#!EE
+
+#PAGcUPkjr5k-Qq-&EMcc'R`0kijB@9`Ypfq#Bm9p4VZqKdK[$%-G9Pri,[UQPMZ
+
+2!8ke05S&pJe59$3'N!!UdQ-h5$9rFRMmT*lEPD+V,*lH&LB6eMTf!Y2d$rD4,c2
+
+,5Ei+M4+SQmAA)e"lTRmbBIf9kZ,XB'aNaXU&86@%-GS5R%+Y"K8!ZQ$S5IhVSZB
+
+,V5SY1Tc3eF0bDNC2TV@jD8bZF-%!-e'L4l-JNkk3!%5(1U0e@"1&d&[F(+-A6jk
+
+l&PE@4**lZDV["2EGm(Z#)m4N809HfH#2GcQ!b#9DNk*DQRhYa)h2A@6HK5I$N[q
+
+NLfmjRH"*Qa#Jq["j"MflBRDMSqGY,A%5@9f3!*iTb%dmTpS(#eVJV*P*ZZac'3E
+
+Lcaj8!fXXI9lU*lBm"CPV62Up))ZdDR0VT&ID)Ue45-[$Jb)4!ecEAQcVMNlL@fa
+
+klqRa-M[AGUhMX6dX1KFK00(Vj+)-b-LU!R*QKGebb0Efp$2Lq&FFk)'jJA4`*2j
+
+M81Q%-"'qrYi$%Sb!b#f65UdeDbEehLI0MmJ8,GaEJA33Q#diYiplbJ!ajN+ll0%
+
+)MHMX1k9Adhf(eqVKQX316c"&GY!0UF1`#`$lHq$60Rmm!0Nrdli$ekL`hpGTXTT
+
+DQf-9kZ5be5V@fLq3!&-RDKK@C(&3a!CNGKFN6CCSH1S6!Ab3!*AaVqAcT4@"2RD
+
+FF)FYCT3HiD08-'G3JFhi&'bkZZrUlT9IPlZp%)@`Sh(6"G-C9d"2QH,R3&p52Z8
+
+jH#pHi6Mb[a#pRIqmNjA*YhYRZ"BK[JiJ8j1`,Kj(E@+*(ae&$k!AJd3X$2)+%a+
+
+JpIQ11J9Pa,*Yj%49,2'QkqBdHk$XX%DhEV)@$cE(CN2MS"iTlc))lK6X@1Zhic`
+
+P[)0mARIDdcDE9''UM5Zi5Cd$6Cjb1%81&CrF'f8Nd!T63Di+FLSGpihfkq')ApG
+
+F5eR5*FpA"4JLh,Y$c"hBR`Jm5Mh,+BbD1JeEUhLQY2dpe9dF4&50bpGDQ4EBV(k
+
+mRJ5KK6aq"Fj)HYVLZC4I+()c*52EF$kJG-$!HR-8pck"Ihj%F&FeS*jI[60+G*!
+
+!`l8JDfF%F39e9l['cU)mblYV`A#@,%'Z496m%S(DN`T`06$1pKp@M#Q`&b*d-1m
+
+VUHbPc)Xiq6E2RcNS%5NLH#TB+XUXZN[,I4jd9@6id+hZGB`T3d5)lZe-hGqEhja
+
+FeSLT4(`6ZEf0VYY,l32TjDLI$KKJN!!iT"J9G$TV[m&CV493P[h!2edT4YrG$[r
+
+CLdNmTba+-0Uc9,kJMQ%Rk(Z2SM`'Yd$QXh[BjcNCjcJ`!cN#CSB&3U1M4$N-"%+
+
+FAPFU6&$aCbPd0HfJ&G,C3A3aA09R6VLl`ZR3QBNk"'Ai#m-3V8RjJYVU4G*)1Kc
+
+[rERMFeFaC0SFp-0E"fQPi5`YkqB$8)rdCGjN5VqSJTak$QZ`,a,f8d)rqbjcS`M
+
+)Q[K6XM)Q1FCHpUU(UJ#0r1`N,dKa'a%"DmI*2YL[HcMFZJ2`i2Zc'0p5'+(!fRd
+
+bjJ+YZ[6"+hPIG4Qk6rZNMP62%M3jhRkiq1Dq1`eXh24XDGmdE(SZq25mY5[a6Ye
+
+6NFE4ceaRUbNeimUKYCYrKH!@3-2bIEMG@j4bl(&hm`r(DQDb3YdAl+#Kkf,UZC0
+
+&CHPIe0',3DlHadqSk55qL`[FCHYH5#18Qql()iFdX5A3SQK9b"Npr)kRTPPpU'2
+
+*aP%4qKLDBBZb%'ae2-ML)#SRP)[qPEFB4)B'bTDLY[ZDIA!'!NZSr*ZG93h1Jc6
+
+mK3AJ`$'a3H0i#$VEqeShHb4NKE,ZX2aLIIQ"EeD)QY'`LbSmL"h$[phHl5Z,"T6
+
++*pMF3T&l+1FdL'+iq!eb2X4N82"8Z3ihpX@iZ+`*qUeJjTd'&q3*XB103DdL9c8
+
+Cl03!"l'qZ`'i9p*i%%+QY1q8MdV*6G+FkD-SF#$p!K+*q4c*cXlT3e@aU,SNCIb
+
+LE5XBi[E&V`T1AqrB8&AKTAkP%B[aZkYq[qC16[BY14+Iiq"`+E8McK)Lm$UG[dD
+
+N-dj)9qPAmG9)M&AT9V)N#j'1`2QT!*,'R%!M4C0F,T9k4)S2G[#Y'qq-HXVf#iH
+
+1pYiVDC4CR@dCcV4#2'HPT#ql20HSH5R$&%1HNS5H2#@(`Q`#@GHF0IB6*64HNT4
+
+1j9HjN!$VYX+Ma$Jr2Zq---VpAi'jAmeZRHr`#L[Bh%3qRN"NSAk8qrC4YY4kG5m
+
+,#Rej0J!kd3[+f6-iREcD*IDC8F59M!RQ9La-%)*Pb@cRCreJ#5PP35*@e0"mXUK
+
+0YMhI3D!XB[%p4j0YRK@IVq!)YebX1hF3[JQ%*RNmj&KiAfBbr(XZXFd*3NEaA*k
+
+b@EYX5fIl+",a!dSL""BX$pa30&39+RX'*k9F-C`B48"CRC4[HD3N[l42(qeN-C8
+
+%PkKr@(&4F64Kjr"P(LLCRQ"phpDdUQIQ0JaU2Y("3D4HJ)iF$,ih,4Ed@0Td)k(
+
+iaI84QUcbaZE@FlSD6PQjh&%[H(TNrkr$6hY"L$)-BYJpRR2LdBV-p1R0FTM0"+,
+
+H$3jPj-T6!L[LM4+pAi9+h4$R-K)jiU95S3CM,2#NThi)a$l30l,Vj8'plGpXcC!
+
+!MYJ5dl+l3S@+Q5Y2'G4Z++"c@`k$9,%('%!*CaZ$&(fU1q8S1H@rQKcPk0YYCIB
+
+qm15$L0F!+m&PkHTRRYIA)0!FS$SdfiU1!-G`BX2)Dq,f)#A#2Mj)Te6ULQ9DSIr
+
+C1Ff95cGVTG`),Y0JPp@bc-a&ZNCUR@BNXT,""m)SPDAFRQFq9bU"`3dM22L4V9(
+
+!8Ebhp9%KbRlpr24L4XRr%#rYY1RN4'hm5*)ABJdrB%5$"AaKA3a8"FXl!Rk6DG)
+
+LeQ*Cc$Rq1pl2lU#'T!q2($qYP(j'+ZClL6!lcP[(kT%%Ik0,GH901[XaJNF1KfP
+
+b8%e42N3r+X6cG[EeZc(N8&#+5A$ZLe+H8)Rh*HYd9r2a&6@Kjpe%&QI@KEI[0h1
+
+3!#b&fqVd'4TD6G-Be()R!49)F*US#K!90QLqihY[N!"djI!P9rCMK'!p$C!!D,4
+
+Th+HmYXmBmLLD)*U08%)29pD-!i'H$'N"N!#d5"1kN!#YMXLU`DiQh$!mXP5@T96
+
+e'JmJ$IEYC`ZNA)l$b4dF(TrTPE5F6[Bq%LjRcUfhI2-Eb-4kb0e+"m0KVfA(485
+
+Bq#%YFL+8QaR1BhASid6Lhc1Z(JKB0TE#f5&YD94)M`&j4,bZ95K4#U1NiR+0bp1
+
+Q#fGA4,D'@YS-PCZ+9lTUkJ5[E-4FL"[$eH4[-D"Q#lN@i[L@a)$aK@!%PHFl4+3
+
+rmAB3$P+Q5r"*T[%S!IJ,1-@CN!!MiaAa4f*[6Lk*NMRHLb5qUC8L0aAj52LmPdD
+
+kZ)r#kcfTL&60JEcb+-*""G$Dh!N+849c%"HHj[J#pRb['BRF)dbR&SS#2A0I%EA
+
+NDljX"pljN!"VLG9NIFmNSjS@8-a3S[,[SbGEPh8f!6H5p8JZ&r(lK[QDP(Cq&!a
+
+Tp)$B,8PS'1jLmN"m4)cMBeZKC+'JklE$"p2R2YHM-NSrY@iJG3Sk%-M-d[jMK#q
+
+MjjY*ii*@81DqLbC9"k+aSI,'9LeY,YdDNK2cI'jArQ@#r"``$20Tm'Y8L5J[NB'
+
+kBUSG4$BLh(D[X`I&9JqcVb#TV`*(MZY',Kf&P``"RkrG69(a6`QB(3EMr@Xpm-m
+
++j2h+-l"h!PaU2iHP@9+Xf`pq-[M3l@+JY*rXmj&T#jlKi,YL2a&jb"b'@,`%R(F
+
+[@906NkC+#qH2Pbdr(5CV3HAYc*!!*jml%%b([Q6QlS(!N`Km`6-fMU%5fVjaUb`
+
+`JLrppcE4T+@`TFA*$QqHr,Hm("r1E-a@190!p)B`NTbl&d#(NU`MG)Fi8r1NP6j
+
+acqkX+*@e9A3%XVTfC"'c9TUP4cSJXB3Z$jFL'(SLS(Cqj3X)eamN2qKec()4Kb'
+
+bp9p5&eTfLj,S$%bFcH4SF%[SqTQ(@$X[f6R4QSN+qeb#X8KcM8F-+F,mdm"LIA6
+
+$YqF'F5AS8124-eq4k4[ABS2bTj!!RCDA68kLalSA,c*&U52VV+C[FYPkV`HUMeI
+
+C`pl[b*'9Xprr`aq@ALSrF6Rr2@(XFV,r,bVmBHN'eraKlfpYXi%rl((qrrM$0fM
+
+EfZPkB&T+jU0)1a$`ak`H8-8H2VVE1IJB0J-[k@lcTTZ%jP)aYEfBJfNkf84h9JP
+
+CmMSU*MCiq`B1aIBkE(-l!qk`3D1)m(YcI2b+V3')R-IB!&BFH"QC4"%R)X$*Bmi
+
+'aMF9iF+($F#ZJ0pKjLC[,2'-f+GAk[GBTF@IFcp$1,`1Ah'cN!!)H6r1EQ$1L!d
+
+V,I$)Qci5mrZ0`&(DRmAMmR(j6TdrVK%18pPbN!#(bJmMK5&l@-``%MPf6pdp$8L
+
+hAh461h1X*c#E"3[b0LQHRFPE[S$h"F+FXh)+`SEh&a0[QrkX9EZ+ae6HbRKJcqK
+
+j5@c(AHqmhfJ6hPQm*fH)+Y,0di*,pIPU!!r,UBJm[IU`NCa#I1YIjDApFf%mhJ+
+
+IJ6CL2`h2%2PjT[8l5ic+&eH5Q0-3P4&0`e*NL-QXUVY(&hTmLM*V+e*fmje$D"h
+
+LT(0G2`ML1r9-cTGf#M-"c+MTD['Lc8VUpKZ2dij%"bjA!emC[PmlSEr'fjQ`eZH
+
+CQ(AE'TqYl[U$f5221k6'YrP09q-kASq5QbB0V,36'8f'a0Z6"a0l[K!RZ00BU&I
+
+'4c4J#Za2)(LaVU`HAY'l4AeeJ'@LC6aQd'E9AqPJ2PUpJ'IDMb*b2'`I*[lJJPX
+
+%6L!iZ`@2e)Kj%hUILb`%`[5V2a`8)P6QNhrLc!b+4Md)0X"ZpkZ0X@QkFHKY8Ua
+
+Q6D*S6(`-X[GV#C(!Cm$h,HTMbXH)ZRKKaV3IE',2+@)J1&if11#J+k1,lGBIApV
+
+ccBrYl+G5Q3HG%rDVp5KEJak1kVrfQP*,&ElXI#+&eYSAd-qPG&Z%6mGmML*aIrS
+
+&A9TPhfK!KHV@S31l6*p1lUKdKNcbj3e&Qj('5hq!E-RpLX'HcCadX2TGV-BdPDl
+
+ej2AV'U8eS09Z,EK(B2H'Bi#3!-k6D@`Dp#YVQdFDLXK9(M9T#NF`8QD@V4SS$H(
+
+Z56EY8P0Sq%3i+)aV%f8d,CJMZC0N@)JjZ+Tp3e!NS`Fleh[kXX#cTHcYTl$)E54
+
+dF4H`pf++JqM5&prXPBa+r"0Sr@60VE`db8@ekYK+b$eX3IJZhdX2K+U3!(ZbRmL
+
+4-QQY2R9U3a(A-F'%hpR[!X1+$bQhSEZ[pY!6YKm%PkpmIN(ZHJfMcl4EIG#C[aY
+
+mSPp'c21`XB64B-(HhXX!SEH'BP3fY)N3+eAI$!)9TeTc-ENi,qR-5DKQF*!!!cY
+
+l$lR9++ST0SDR9[#(C9cqm3PQrrZiRriGT"c$9NMe-U8-FR3Vp@SYa0)!4Vi6TVD
+
+faTA[h9NkUR*pSI)6*5fR"#km%bThdkC1!2'2F$Ma#FdF+pl)IHTZ3i"jKK%qQL[
+
+LV!+)+b,hdBb[IbU#jiieJ$e%@KH$-iLeQ%%6`eB2Hm2QHkmBaHGRJjkjNbTQNGc
+
+&-qY"#SAfiXD3!)jUEc9(C9qhArEG&(dPI3B3MN,qc8h#[AHX6H*FN6pGIXLh$S1
+
+&mp"IJkj[Nfb$b1kEQ@5)T1rT2meH4)MN96"@fIM6eHf2"$k$T@6kp2@-lm#!,jS
+
+C1pFrUJ$lHYpdR9(5ZIK+(ZMSTPKUjk!q2,5KXLaTmI))*Ga,5ACHrG3rZERXR5j
+
+`24Z&cH,Lr*ee[FVRIF(5(BEBrm)LBmKeP5e[55GCi@XYC'f`r,I9!6q3!)G-*qP
+
+2'U&*V0maiS+A`Qce!VD2aCBY8bdb@,*qB0kY6Tjla8+%r*!!j5+Ui2V86e[#N!#
+
+6)KI![%Xa(@M"%aAL$`PB"64`Mq(m,'[jiHLKArYamJkkf,Zd(m(dZf41ilEAa2#
+
+`GGN)CIBj0j(8'CR0%RF(M,B[FHAa6Q&mI8+eP%%m"eh"`*8@A62YJ'qFm-cqC5&
+
+IRcI2GM((V+MU820B8'6l$K92EU0RQ,D01Fa128M6!mIF21a@#EJamG(aj(U!*A2
+
+*8U9P,2KXilTN"SKe#(@$qKF"!lrdr"QPRd`9#"mJ3hEE!XEM%G-Y8NHJbPA6Zb2
+
+-lBcZ(CA-,8Z@B4Y8PBqQfTHTEQ&C`TTLjYD4&@YQRbP*Am`m)cMSkdE#,0U0iA$
+
+%@dSZaSP+4cDDbG#NLm5Y!mH`"D(3e@[*948f6aqH50C6GL9V#04e3e&k'jd&'%3
+
+E,l5&aHI+I0!Ne'4"2icLd9H!ch1-e-D2i53TKhB`S&3VaLJ8CjQG9*Y"YaFib11
+
+qfP&+Y%KS+ZEMNV"lFlIl6b'kCalIpEpmlT1cdr6h(Kh5Hkr2[Pjfjb')YET+JXh
+
+cY,ZkNpr+"3Q9edE"N!#1S)*8j#,Rd+Z8F&1)SdBBAUcF6$"D2KqD&ajVq`($@l`
+
+09c!UJ9,2,8McNpMGl'IMI&Q3!#%[GhBI9$"0Y81D!f0@`YNCq6br4Qq,4h#&,UI
+
+QbSm!&lRQUU8bpqV%kCPeLP*)ia1`m[FJeHK[Haf+iq0Y-Z#'dFfBJYhcqH+3!#j
+
+$4KJJ@[LJA)R9NKA$[925Xr"'UCAe8bQJZ#`15dZ`9M%KGC0-ZD!mY"qFb"$Bfp)
+
+Q[X!BH,9&)-L0dU&-pjDmb[&6M'*!'JVeq1F+Jbah+G3Y$QADjM)'`k*'dYppMXj
+
+-f[Nd2JqT"S+YEUT+)CdLk[T$LJ"MFEIaqKbla2CiCE1B1"pBSI8KNA8QeG3'#$!
+
+BK1cXArX54L[RV',I*!aL1bbBDN3GEVf`@1dr5"U%#"b9G(Ij$"dV4Iid`R!(h`L
+
+Fp2!,C'XKiUiLh('5)fP)`"4Bj908Zhf5`qEj"-,qiph(MjlY5f(b8K6#caVYRr&
+
+e)b4V`Z*XT6A!KSJ0@a$qEbZrk)ec9+%!"*ELqfa[S36KBBcYN`m&J+KhdA@"9e*
+
+dmX3,31q,RmAXJlIXJMiDB$i4kHcCkM4R1Sl#+`1$9QR&L2H%ZlhACCeL#R%D$i%
+
+r1m2,[K)a[G!eVDZSk"hI-5Xe`8be!J0Z1a[6#Y&hLG1VZ*G!emPq%#eTl*!!Z-l
+
+2MS$'m1K*Sd,LQ823J8GVYH%%`kRpKEX`-`Z&GqG!DKV319IIkBh1EbH`hh0!5![
+
++Rq3&CdCT9hL'X2(bCHZMl!Jp&L1Z)+XURFZ"5rQ`KY*TIZqThrBJMMph4BpQQ1c
+
+LD$&8$C8SRH#ifa&ZpAQlMYHjC2[LPqJ*BpG&$[l[R`lQ9`efX%hk$!lDNADp`QC
+
+A*c)mI--r@Z8VEYd&VFHY!DlYQIR,XM`%&$FK1h[$p"+c9Jd5+S@HN8FcD2ZHETl
+
+fVb2VCQFIXK'qC(DlAi"r`82NcC09lfC`VQfYFmd+aE,I'R5S,m2d5(S8e[k%lEE
+
+p8E@'Dj!!%B&k@`Up8E-r$9GCaZ"akH1iAkU"(@jmNZ`lFcKeb!'bHM4LRBhYa#1
+
+'XeJM'd1qE+Em@JqFY6hSc2CR"QV,I!j&8)IYZ94IbifK1C!!H5@c-dJc9T0mMJG
+
+LD%,#a94LlkY33bHdBC,95!jLB4HFZ0$b$K$1G0RQC1HF2XD)-*!!p&"V6JBS1cG
+
+GmPblB-GN8UZM+lL",Nc*b$@81mZ0lG1NeE!fDB96#GG`Kh3KFh`Skr1&)!T`RKY
+
+%P+q`NFdaI"T-13-@ePk)XpDq*))3K2*'HN@i$0Eed`J5QEEMCdX)Q9H3!,lH2YP
+
+$6ZJZ283%$`IUPGVDb03F$*q$CYZYZbL&8adAdd$0lKCN8%GL!pIKY+bJ"NqpGlG
+
+Kh&RS4Ekd#LPdIZhl+LHr%L"'"$QD,dII`R@f$@[#S*Cm(1a!iCj,[83Em,JRBB4
+
+laN58pF@X&IER1,mAmFC@26bT3[X#G+XpZp[46DDc**,VBDZ-H5%XA[-"KUSjS0%
+
+M4(bL'QN8VMBm3VTHpCb[bF8E"A-MEk&+IkXCJUU[q*F'56K*5#!UT"8pkDK-La0
+
+S,1Ma@4L)J@C!*E[Z[#YY%1RhCE@ej#DaPJm3G6Vac$Ah-!,)d4Z+Q$Xf+l&'@-f
+
+cp(2*XAIf59pe)Ui5AQV0`-UUJS)jb9SeK-Ahf,k-m6jZ9++XKQlKKGk,BcUT`LV
+
+KZV+am(i#aY'Ier)CXNNDh4-(jHSTbTUK,EM4hQ!#V[)FA@XrGQ*'riB%j-)GG*X
+
+S0$'mLMVVR"J$[h-r$QS!ScP0ESQVAH%0RjFPV&qHBXN*FMSQGSL+Z8EdCaFjjR*
+
+`eNq@fa#Me$J0mMT9Y4VAL(Yh`LSBeaU+EH1LS'$5Ac+XCDi&9eRG6+JH$e@D#2!
+
+NT6YS,'(@TfjcDCRdiYY8`d9,k00Ih1)j(E$BBeZp#E)pC-fk0C+j+0(145kPS3K
+
+VGJ3m!#"i$Gfj5Ee``4$S[k)r"AaXRa*Ibr*E[*jRlZLGR54Dj$aL#4efc1*"I$G
+
+hMJMUl'&C(D3ccB$krLe6[cmpa5#HHU*m"R4qUc(LTk432N-FMh0LDdi`5GX!34d
+
+$jTIB-dK6$Bhk2Pk42ME-'0abXk"M-AJQ(a`$L"!jRTHI*88B,40pB35j'ZhjeAQ
+
+4CHpfDNZE,*qa4JHdfJP9K'J4EiZYIMAXiBTa*d@`9`Dmdl,fc+lhX9$5,VBc9Kj
+
+XKdQ"X6Ld(fSGGDHrf,`MTV,i-2bR4maqU[+)UaRL`[qUSS9+1X)eMlM`Rbe8,Xp
+
+rYe#p6GYH3AF40q@k"%dUPKR+MUfkMKR+FMh#pq+ZU3Ckb6PaiAY!Bck0f%K9Ilm
+
+1'&A@1UQ3!%l4G`6E*a1U52rLFUTae@BEh@I1PDDC'3EL5[f5@X-Aj4ZAPhQ!pqC
+
+$*P#J["b6dZR-CI,cT%[f`qHF"`TRZA[T5f6!Cq1mSLA9fl(EY+[GrL"!D!2MGU2
+
+KIBj[e4!1Ad!2"9P*rVZRQ&$4mb46jZYMZ1@KMMTRHIqLTDA5!62LHI-%p,[qN[e
+
+CClhhpX!N(l1J(+$m%NBDXE3FldCk&jEJ8@j,ijAK&8ahHbrR25)ZLURKmrXACGK
+
+eBC5KNJc""bX@j%-c%[IhZCNiKJYSiGS[VCHlm`!l)Ta2XfcjAP&$KF0[8F8lG2K
+
+#XPS-r'XQbr3-(''U6kVI9h2`h9SEbVVK"(Uj*eDfm!GQR,Vhm1KP"aV+QYfI@4K
+
+Jqe6ZPe9J$&($(2Jc,q@[X3N6lB[U%Vl*@J`kq0$Z,Shb8SUHI[UbdF2k%5j-iKX
+
+kJ0"@ZAq6'b*FKCURkGZ%85[AMZq2M92&(HlTL"hLq+Z-R#e6KTd5D'NKj[[HqS)
+
+(DqAT#$M$8MLrC"Ha3V(9d'50'K"M5h%6daDhJQHRpM"a0ifEf9V$(I6-Rb##imM
+
+[[5hie@l6cII9XAB[I-ckq-Z)+Uk4T6p0CDEN2f'"Rjf3!*&``q6b*!U1%NRd84D
+
+$"S+4JUY-@q)ZPI*h3)0NZ["XHlb@QSEG8`qlVYH,KLSLQG*64a%'HA4H%'caJAY
+
+MfTbqQ["pqB"XZZ0V@66rE8-a%(R3V!FYMjPB'(6%@P5rSC)kiq6ci-r$0er5-$p
+
+6,#i@%YLfRjqqS8c-DX1INH-C"F-Y4`h%8(Hh3M8mp")*EP`CP9Ce&AJhpa6SrN3
+
+S-S,D3Zm-k-@5A$aNYi2%eZfEE`cU!,E"EZR"IEIBZr0iGd0Q3C!!Ei5Q,-H9PYr
+
+l*4[Q8P$l8i'0((D%0ZJAQBrU*`9F8SH&56[e,V$"3C9%cZ88DDbI0V45[&X*L')
+
+c6UVQ-0m,QT2XA0drKk)(2C!!CEq"3)I@V6&@ce4%MRa3#cI'C[mLL[ZGd&)9Npd
+
+hMq#$8R,'T[cJSlFm!@Sf4(XNKP-$b@Hq'K@4*i%L)K5-R5"FD9DkAP[N1MPq+H)
+
+[1(CZNDFCPVVFT16Pq#G0eE2-"[T9EYZJqf%RCbhCUPC1e8jKi#2q1VUb4r@-9,B
+
+#[@!3M8),hE8rY('LIc5,`#ah'8&19,(!*i#TpZ%3adNCQaBLMq)6[XA$ph*38CX
+
+@fBh%bVQUL2L*QADdAe)0F$&L"ZkfLN'*@'Cd0E4+Z3SKlCh"pkhb@!ppF&!+Tc5
+
+&6%e$HLJd$lBr0)T$M"K)KqH2"qp54AApa@BHU0)"TUbB1(0J4TjD4FpM5jZj5Xh
+
+)@[Q"1mf%)[q6EZNk6XZ4@55c0"NVq9d,,$aP(i4l8I,3kaFR*[N"+!kAQ6Ea+3&
+
+G-cDr9pVZ4UMi%KiqV$SD)SaShSK#(aQ#MHbXifp*pb$a'0!5jV4-&a82SKJFeQF
+
+N)1d%,d)J0UQX#h3`5Xb$r0IQ4hhe(r,dDZZ)JZl`jI0HRblLI'9)bZ*&qC6Z1`k
+
+&R2em6K-2RXYb'DC5lrTL3+c(1)B+INf6*l6E"'5K$F![GZhD&c@lAdM6JkT@mUV
+
+AF8R`8LKaSSV*PUEh`H*SlCQ6'GHXQ)$!RE*NNe#d"lK*PPB)G))&MhAhpXU$BTM
+
+LT9&p[[q'UPMV162iY4I83ZdVZbI9#5Vl'-kN5DDP!$H9E#@YQLJdflFQDUmmUip
+
+&"SAi+6*+cE,"GYl`MXk9+PRVbl)bK58c5LL2c6b#&FBJBlU,IA`q[[QUc2032Gk
+
+(GeI+"Zh*C9RDaKCNqF[S&*l3C,rJ)F@rU$+KDPYMc*H+pP9PQ(+I'!lF&ZP%+CB
+
+Z4@FNfZ4+H&hXI+HGNeCGJ3NEdH'XMIhD(f34H,N6e%)kJj&0m)Ye+Mef-Q[m8*5
+
+m)[GV+XMqj3qkR1cMLZSPjjmIHKQh@21VJN$5V4%9SM,#%bF2qCS"cUIAkjVT[)+
+
+j8ZSpQ56X%A5H2L'BDKqK-EhcY*%RTN49j-Tk#C*fIUM!0DU&hY+aprq3!-CT1Ek
+
+irQb",meMK1N+,LCB+jNmF6Q`q*`(FVPHF3r*R5@*`mjV56`9VFQ%V(+#YY-'dcl
+
+pd@3Trh1JdrTJ+CJkDiV9*mK*!CY2`HAfX9mAA9dXfpVm(A"G*dRNjqe'q-&23S+
+
+r+@YBHm,33(&C)9eUVEBS'YpRpdlbiII6&U*H%S,S*RD!K4UCUmEm50P6a&PS3)#
+
+2JCBqh`aSN!"KV'jSf&*B-*'U%bMNAHHS`+SEER!L)Ehj6%lHT#-m5P9lNrfTmj1
+
+Z@$%ZlML[3'9VHkb(+G92Jf)b9M+,,5Z)VpM&)El03C'Qr&%85&CIIYVL4U'eGVG
+
+9CHLGf5XS#8e+9qdLJCQK,mDiA!E8Bab#Ge5YcSHVCHQAX#rLE)SJh'G!i*iJ#US
+
+DE`m-a!%ZV@b%,ThH2Z,SCZC#6j!!f11SFEM!J+0M8aCrZi[T[VKbGeR&U*[m+Jl
+
+GmT1l$S,D#FUq5)X5JPh@-(DXfMk3!15dESPYRDQAp,'3!"1K&V(Lm6UP#-RJD@k
+
+'*AEcajb[6`HGA3[SkY[QpRHTb[Ta'QR2AMFAAJFe@-6cKeTkSaTED4U#dj8fY+d
+
+Al!fjF8f25FHAp&Kk8(fA'f[**fYcqJfr(l)-*P*GBKpfZdY[i0LJT%UK#+-XGSC
+
+FadCli@j"M+C@EJ,2[10kMMUGRmr$("rJ'l6`XN,L2#r4VJ*8Iq3k#e4R+0a$8Rm
+
+,PIcHRSl6-I$!0ik`PAPP*E%-cr9Mi-1P+),JPdB5bh%@'LJ%h8A,$qN9%-()'eP
+
+E(5U4I4T'YA#0ha*#ZZ&BA!KFL-LHq%mU-6%c%0ee4Pc-c)FPd#HAhpfhaXdGP11
+
+f1%3%Rh1&HFdccHc4(rP$IEk[K&U`mK[[-01h$qf0SJC23Ad@Ca((lKkR8+bVi9)
+
+A6fd0(ri4j`a4K6$DC8*-1rLT0'HVbN12(IdTPek$A(VCQ8(NA+GLqkYd'G&AeXk
+
+4Sjeq4Y6@E@d(K4rLH$mcIp3I0+[Q[1VfVT5A%p#`Ha!qb@1eP)rLSF[@iGHIdSX
+
+&-GPH&l(e(Zab,0S(hfZ&rMb&pJ`00!K5#b+f@&lj'ShSKpKllS4@,MJP,c@kZLV
+
+BXqh0mlC!K4LRDfZJ4LM&23p5M2Njr-X[m!UZEaAbXZI*SU2VdpiM"Vh,i$e52Cd
+
+%#(8T"2hbJD(k&jh5faf59%KAVCmlpjC9@`9,Rbq4l,kld&6F22RfrrJ)PClmR&r
+
+QGj,`JYM(Mh3f#`%Zl1#0#q+YhMDSbKJ-Jf#q48G'h4K"DP*b`94B*1Z(i'hP(-(
+
+UmCMePIr&$'!5L!RQ4`k+ld98l01IVeak,l(8"h(d,DhVM*!!fX3L*r`b"6QjEA`
+
+&Jq(R9a8hlaG%e&2ibS6DJjC+jmjZcU[m%pM[22U*$r*KNX9ba65`R$'E(NPe9[f
+
+@qYq%2'%KLfE@2b5Pr#`V%IAUrpPUD96HP+ILc$*F(ZmqL"K6&2ZF+b,ZC&`Xf#l
+
+B9H9!BNie(C)AX,BK8TiZZ9hM+3VRqh(8EUKEc0($*(2'4RCPB"*l%@Xai*'C-R9
+
+VYSDPikaUF[9!E21kSUc%p)ckHae+lVjl0,E,QKR4G+r1[3"*#RBeHkH9HT!!BF!
+
+02lXZM&DIjNlpeimdBG(VLUXhZH)(adiKS,RA+K#'03e&(0iphiVAaE4,Daak&T0
+
+F`6Kd+T'E@kLYf93&ef6+bUXHTp`dCjmD2Q,aK)'KL@9IFDdK[THrq[iUXi+pB4Y
+
+M#-eE(ZZe19$[KplBT&B5FJ`LXDhhlFH+)&R[C2kd-+PA0)X8N!#Y88Xqe!b"T6!
+
+YU&0HYTTS@Zi,UcKET6`TQZUF1bXa6*!!Ge#fVIGiE*[pC)UG2[Der&2cDmZ6S1)
+
+f0je(HBpL6`B[X8mUC`GI4mK6fZ'Ek882ReU@akcHKfmjL)#N8D13!2K#b8fA#B'
+
+(Y+)'MGZ3!1PPCpkT8Q9UAV1@1Lfb-hF"Fle9"[Q"KJaHkUQ40UH@$6M'-NlZ0,A
+
+TbPEF"rUJ9MM&&E5M1)[Qf"E@6p1hD*IIZPfdq3bYdaX@'C(`K"aa1h@i(f`d$Vk
+
+EkA2,-hXi%KZ9US@aFLUb0Qik*a,1)A+2P''ae+38e&1kjH'DER[Jfk1lFI0h*N1
+
+G+`H5B#+YJCR5KP#Y$D8V[%iQaIbUFA4m1I"GP(,2L4qE2'`E&mj21r6SqL#j!FM
+
+*Y+JDL`LQeq!E9S6*&5AT!`'p4BKk&XiX([@lUJ6XTk6U[L-hZ1b'rUG"bfBQ2h(
+
+Bf2rY9*EPImQ!Ih(%S'8lGX+JcE,m*`T'PZ@r86#Zdajea$r%P2DfN3`mS)T1%F6
+
+J*C9m),(pk&bF0$+$AhD')Xk#%!M+)%26b)HT+bSIP95)XPaY,pTF*"pJ!!R"#m%
+
+8*@9P6f+pa@F631Eq$YQKU0EBjXCrerAJbliM3kb,+ENP`hl$k2M@YHQY1P(f#4+
+
+`+db0[B+eLV9,eqALTm!d1"RAG)HjDq0cqQ)r-@2`1[4a)ZfUXLUEIFF8h[*XcD1
+
+(R@Zeq"F@8aBI2I)Yp[@kN!"rNFlV4Zp60$B6*I0K"rfmUQYYTP*4H0K0d9FC9ij
+
+)E`50KLf9T9YjRe21aLqBh*KH0q3qLA@lAAK#NT0Ie"125Ie,dq95ClXrmhilr3*
+
+eddT9BE(EjFSqq[A$0a`D%@Xhdd)kYjH&-84$(RA#-UBXh-MHYhQcJJUKN!!+4Yd
+
+EZiq%K(6c!333aV*Idek3!00V5YiXYpBZ9Ad,q6J)#"(cT$6cqq3i!iI$bjffH`F
+
+)'#V9pp,Q19r4D"`G-*pR5C)G(de90FGAh2AQMlrR'4[LF-f,G(q1ja-V6bZICXJ
+
+UGlSUKLI424l-9BI6f-m0fA3GZfE3i'bq&4+kbl)d%(MTklJGbI*U2M5fYRcUpiC
+
+I[$Q&8E-D`G1Ib6+NMMi1Fd1)VT)1KVHp*PX45)1U+TrTl#4$dH98RhI45b&XFH1
+
+IR&-**3Y0I$RYU)U@$*0rUi"YlpiQ0chjL#8a6jXZJcTJZ[U&DUkJf`Ql8aF5m'l
+
+#'GMZ+MMCd$S+`fa!33K1l98B8&'`h944ILR4"ljpY(EEl&M8%i#GHXeZe),6)FS
+
+D`ZhUl$LA@GS1PIH!ZjNIT4HX1i,89q8qNZ(k02cjAYZZBm+L!MI+Z[9MX)LbdSG
+
+RK5+5[%)#33rT9'dLLm(Z+-EAq)a,DV0qUF8[j*0)C`heRa6MVp!GIQ#5X*TFYpZ
+
+Z"&r@Z5QIVd*eS,YAMja8R&RP'XKdC+Z$eXmR`JTHq-eQ`!Ic*mE$CM"8BZLIERa
+
+Ul*XCG!8e6a3'I*01-3Q+J@RLDHfLJVRl3UG3%hF45)PNiJDP5JPejCXfC!LLXPd
+
+N%,rT0#1DQBrZFiI@9dL!)!MXG2T$1Va61#P0cfrV!F(bUV!%,3b,*CY#kC&(d+K
+
+,[3rkE4Z')M$%qZ9h*6F+*`a,lri6*8SMe%ir'1*%*(&UAK5r,L6+"6p$8j,EQQN
+
+2A3l'3ah,1$kBj0SJ**51N!!`CQ#ZJa4V"E)PRr[M+d@+805)B"M5Bep52@&#-hT
+
+'Da'Q"1p6'iQ(MC3I5a*J*N4N(k!a9em-C6YFaYHb&`HI6Qi!cKlA[UZK$4rd&b#
+
+k'mZrE(bI[8TXBAEG01BDic!2+YF4`1`&VjYhVc3LKIH(0YC8N4!"TDN-,-j[Rka
+
+#5qRRhr9fPB1L#jcj)@YbZ4(kQ'(5%r5qlk[T[3U2Up@ejVbRU,"HRk%TCXi0HZH
+
+kA[F1VmaQm04%M6QX2(a[3Zfif4jTB$a5(&eRBdJhfPH8IX&C[*DRBA*'KkP*V0B
+
+L-5`PV4BM!2pKI#i%1aTYl6*P5b%XYAl*&A35raVm85L0brGPK+6AJl+FZS$@CkH
+
+1BS&0cmrIUcaiYmkB6c[9NLpk[f*0Dp88MNI'JVh@(,jEUiIGmrTqicbV,mk%Z9U
+
+BX1H1dj6+1!Q4!ZMNh6)(&[8Gr1Jp1)iV&k(kkG84DMTqZbVQ4m`D%IeUmb'@`9$
+
+20ajAH0mjGAHLGHJbSP-ma@*TXTiEmD8*Z&1ELRi++'eSl@CFQimHp6&"246MiQb
+
+&iPpMI4qI-S2)6FeM!j9"V3PrB*SG[Y,0bXXJpdNJ4(F'@&rAI29"eG14q"#r)!X
+
+DS9Tj6RM`fEf5mN#P&T@RD'iplNJ!BImCY3!5Y"cDYB#f@MkAlIA'86#GLF90MVT
+
+AmJQY-cf%"[p9F4Xp6*j2+c"FQ@1T4j'ZS#&5V[GAd-Kl&0@A%c$iB$3S0LL2)kk
+
+NC0![d@(b3F'kSF1#C9!UG`k((R2a!r2*4Abi"b&Ymdl@Y`F,Ui1UG-RN#0iZe0I
+
+aYl@"e$D9bNBd*5[Cj5S8"D$1(ZeYf9FffdEB`fGAEB-E"CE+)&'EhY45@fED*Lb
+
+`FT&QI$V3c2E"hQrN'ZUC*b0mdGSJKCFSBi5+"+kja#Ql44-YH,1VRA'XQ-bTGE(
+
+MGjMl@dYXNc!$GcFIQ$qS9'hkUa6ViH*"*A#JJ4V"TI*I!3ERh)QE%fepI!(Y5A,
+
+b4Dpij'V@C$JBir5&"FAiM,UP'`H$eqLCYcC32'*U("qVkS6K`XKm&"-@[9"`F36
+
+`jUVH0%QN,$25Dm-FXeB9abf'#L2`HL&@RS5j!Rl9'4PMhl[b*I%c'KZQLA`PiIa
+
+!JB+DlkCY3@I"f&*c!SIQ+-IjE'JLcd&"Ke(&`)AXF8lX[NNKcpCSqA9TJJ+HNhb
+
+fr[%cFUMl3%j21%ZXrGcfENh$%Bc-lXmhpVN1F5CM5CM8'M*mJNJ'&N(-rR@!cTG
+
+A`KG2`Q`eC-QYqr2JEc`Zfeel0fa2qJDZM`Xhi0h*9rFF[6rA1b@[jk42k842kH$
+
+hY+`TSp8iE-)aZiq@A,*TpFL,SdNN6i`qYlkb1`h+6`!B@-&F8X$[J["$#&AP--@
+
+8HUXkA%#X1*NS09XAd'-A'K3Ce"kXl$1)LSD9XpY9fRFP90P0AG0,AJEVhD6$1&*
+
+*ecRVR&+[2+2H%+392cqPY'&R4+pEGlD'iEZiY-h@HA!jf-q1p@&AZTG'(8K`KMJ
+
+V'4JMBKhGe-D4IU2-([cCf2MNd)CkTN$Q1S&1[2PG4"b-lhA8b"m8(3X&bbaFcU%
+
+EFJdEf+1CddKNX88jdLrF,FrBZN19eJa6ELr1'$B+"Be%peMIemc18`l8Di@[0Fc
+
+Gq6,[IQ[9P,86)a!jr035EkSD-%dDX"*kMD"aI%XYq8($Vc@5[FN[%IH3!+``GqL
+
+V-RTjQ02X%*BR(X1Bqc#eiYRq05MK3Qbm1rE`hVH)+kp*Mc"ZIZjXhapaF`Tj)EP
+
+RJpZj9UfpcC`Nk4KPB5e#cZ*-@9m(##A,"QQNVH#f'+%KiIYXEKJrNM+`EM`[j&D
+
+,H,PMD1Gq'ki`683`d)RTZdk8(r2dhl#'d*F!'A@(M%VcS[I5,3[)`Y)QVl!BG%p
+
+#Qf-S%#De[-CRH)iL!kG,Ui`!4EA9XZY$HrCmQ3pbCjV'i!L"j$r&m05I4U5jV-6
+
+RBF-AXP0`V'JlT9@5GL)r#iNBQT[$e86Q)4ae3kEhVZ@8)qiIa90R5&cqB-h+qT0
+
+h0Yrmp40U(S52jeFJmX5[r[6I@,0YAR9J-E,-UkCPr(,,QCN-,Sc!)ZP#dji$+XN
+
+-DA-'mU4a-E+BCJ@+iIJc"KbM4qaU!@REa54mS!HpVhRLc+%&T12qY5Z@U&(MkBY
+
+!V90Uem,qCe(k'Mb[%i2X*q0&HE4UQA8HfZXRlBC%HeDAN3I3M%(0Fi+YeFemD8Z
+
+Nf[%"--)!c+hA)8YASqK4+jjPfXR@GDR@cU1j95A,E!N$XpfAGMhdr4&Miq4L-c1
+
+"-D`*,@6FEiIGjN5$N4c""HPLpAhHI-k[C9@blp`)RlkLa2a%V*K2fN,q%NmrR"E
+
+ddrN(ANUTNGa'Q*5r3()rU`PQpe[Z,QCbkD59LfajRCAQc`9rpciCTk"b**0&JZq
+
+PPXRJhimNYP`S31,KTK$U65DJN!"6&J5`[i-'-rAhN!#P@&LQlb$e'faM'i&cQX&
+
+$N!$Q$UK[i-,V33Bk%iV5*0A`R'3`&F,00G4I"M6[`4(RIU3EP&VbK2$ql)%PDem
+
+kUlMlXa6CFaV4-XN`S4Ee2(B"pH&`JF4B1d%RCEDF,`#P1,BP!&4HpAkE#8rlJLJ
+
+2[Cf451B6AphXZaUE"CLC`jB9JTBk"*rMpm@k`8pQlkD6U3Fj3S"IecR#Ec1*3Ga
+
++RUUe9mQ(*c*&1dpV,pKSB#F9S5A[L@jGATRClbZGf"AdA89er#M3AUAU5TZhQBm
+
+Z+b%#k9A[[MHiG1ULALpjPT-e!YKPfT1++(5hPpqj0k`fjLTdTPTf0Z1qVr8-fT(
+
+G)3F!Q!r4LHqh'#"mj(C)aMpD(3-F'3NYDkXUcCGH9cHphSAZiSKdmN$I,1Q,"D+
+
+b&B@l2jCK%!ZhmEV,F%,DGNJhU5hY3r1)eBb015+K%)R8Jbm'`4Lld'TSK1L&a1G
+
+(q'YTPEpm*fdLQISDHaePKH[cl-HMibEj"A8UXCId25[Q"GQJ%E`brU#ij!I2,[*
+
+2`Fk8(8rXU&XD9rAjkjeqIBLE+A+C2HR+4fLpp0kJGDQC2(jfM+!eL%q%U+8k96,
+
+INTad&XRHek-APENqh+,0&'mV&F"h5&RUZ&Nc[(ZYRYJ$S+JX[q,pKamV[8[TarC
+
+`rHf8(k2Y0Z((5[GedSq0!V0CP[m1c,T6l1SX)+)d@CPM'L-DT8B`@-%I4Y[JP%M
+
+eRTAJ`Z")VI9BLYT*`SS#Xb1$fLK9b$40FbaNX&+lb5@5kqSLki+Ukm4NSU38XZm
+
+SXqf'aRK623IjQ#NG0bK62(l@84lLb,6C4SL4D**JJp5bN!$qr2[Jq8CiKTAeEiH
+
+U&F,G*ZC1qq#C[cRf`GaPrTM1MJrqDPd&$%fF@)'N%1YQ*2"fY%q@LqE3a&J(c5k
+
+dY4"9jeMES*3fRjSqIL3lQUQP&I9PUD9DNT!!daaD55eqVVqJ8[`PRYKXS(-f,cp
+
+[FMB84EZ3!'"PU+"'l$8KE1Pqb!!qmmeh+FhPII@T"`#B%$E*'SaqP(l[8$-(0`I
+
+[K,#p0r5)-PcArVMC,qpMUCc'L2FGZ9J,HpY0V9cYD8+pD[RbZRbLQdf@YGDURQY
+
+UESRJMM9E`ZYfIHSA)AB(Q1+d9Zk&$-d[qF)"6V'6CkY+UN5Ci@pVUc@jbFfh@c+
+
+kNK`,(kqSaTcQPe,S4[QF`llFE5dqchp%-GCBN!!`Q1mG,pQDBf&SQjc`48UJ@&[
+
+jLP4LFXDfT)%iP##N2&TpDV9dY0Qjhk3AA[rd,L9AF`cQapNB8H3aA8C01lJL"IJ
+
+S9hB,Ar,0,U(!c[kALTASrCJmpRFQrY#"K$,Fc[*bVHf2LrHAA#9"GLKUKRh,P'R
+
+)`9ZX[hMSIp&3QaUUGI6[HCTJ8PkqFjYZUT*C8T@p5D3hAc![3%-EDhbjM)+kmU(
+
+f0I3YZU&,KX4SCj!![$`[#)l,+"Eh9q2#8lTB@FkKi`h&*SGjU3fN0!`hMB*$GLc
+
+KpdJK3ceRDCfP#%deBrNQSh*9j6[hqLe,D3E*04m4UC%-QZj6J+Q@k`qA4lc)X*F
+
+PDbeXc[alMPZ1TcPV!c&+@2j9+aC%M30+YHrm'rIT#R1,5hVN%UEcGi%EEp#GGQ4
+
+G2%,aH-(KIFCKd3pR5"VRY[SApXKF,9iUUimi6$4EppEbd1`DBjp5eH0f,-fSJl2
+
+Ed#GS-!biFJ@UZGqR2!YZU6B5%@0505,1)1RN[d)VXTmKPa&NRCe[CXJm-+bV1D2
+
+0K,32-5UQc)9lYbCf`'#dk`AXB*dGE)'lKa@YFlJbVh33IYlZMDDU1$GJb%2Efa[
+
+ZCiH-)"hM)T'&'!8$q5UT(Z33m!MZZhrFl0V%r'XcM[-fBM3md#*J0CjcG+EXRM8
+
+F5KV(iA,U()MDp#F9b5,SckC)S$ck5NleB%X*kT,1l!XT$Nek[0b+XbX5P`epL#2
+
+5m-q'QQh'Sfc-ZN0H$d0j"$BKIGl5`kGSH*0+m9Z#bc!'B1SS[iiUSq`qX1AV8Z!
+
+pPYBrHAkK`dY,G4ZCLhNIj@ajijDR-Qha&@j5Q"Qhc59MUjY$8*F+fAXMVP#U9!H
+
+Nq9K0*mLGTCZPPJFQ8')NcY"p4U%X+XA+c9Gm1'I%U0&)q6bPD+DI--qEcmb6SE&
+
+4[3&(LNSE0`ra0B),QMM8%UE@39Zlj6+688GVSR!(j&!aI6d+#-AfSAAcQeQLpJl
+
+e+rmp)rH$V-l,,a'X2c`)iV&$'FB9%I,jeADrZj!!KQ%'qKDf1'1aER8-6)rP"q1
+
+%XB3MGaZM"a1haaj$QSb!XK*!Q&bD$Dr5UI,R1e9(@%dBXha()+8-V*A&VX2kkEP
+
+X&6X)dH`dI-KJ+LIKb[lpGLB*dSS@URd54YKc@Cdl4&[j84jN&JcZ"N&Vi8UI"CU
+
+iQFF9Jrj(LTJ2aR)))UDqDRZXQrrlAHU8Bd"MUHk#JbT1&0Iq+qCc-&'0!E#Xa,f
+
+J,+CecqL8"JY2cClCQ(C)Tjb#T94,d`!C!bH1(f#`E&8@ia3,B(b3!2EGH)Q[%A,
+
+e3f+b)r@Mc3RII[0VK,G-*-2SNXqhYQ5LBF(rGRGS1+4fYG2VDhRQT+e+N!"r'QY
+
+*pUND&r`iqRkIQ8!CLe*i"EX*kZ1!aL6HR*Q2)AeYd*Y'dbiE2"b,U9N804`K5b[
+
+5EJ-K!UM5M"Qd8jJ0Z*3bb1LKQ2*RSGZTA-QTLXN#lX!Tr$ST@QJ[H@#TiUY%P0A
+
+,AM0dL$S4%ZN$Z%rYQ*R``Fc9029BMrUR3Mp*)"fa`E4l`I-*Q%qFFq`Ka34GI@V
+
+28[mJ+Yi#)pX'ldYh&4p#RddIJ&*0V0@D)3-iriR$&m83Z%mp`Hr$afZr,Re2q%6
+
+aa#bCBk86H'HJ2*RLR9di4"&eU[45lZZL*H5k3kjq5Ukq*diZe%U%pF36$I@3!**
+
+G4-ekjPKLVFZZSEN`NCGRR@KkT"d*-h(Fcr&6HhJ%QIqT"MbG)cb@#*qJ("A&5Gq
+
+UM*YPLLG3PJq`crGP5bqmalY#L`BB5rKGi3()TBm9#5Ua0%3U-V4eCH![M-8Sf!)
+
+8C!De(Kp@Gd"Q5UYRpc'6-e5Ud0f(FhE0RNf$eBiSb'2%EV0qM0fAHTSmRY,)SQM
+
+b5ZDi3Al*86Yb`fQ4q3cTJ2l+LGDMBi@N-DmIV!1Z4hUepF)B3D6rkG,G(TUCG%$
+
+-"dkTk0HYZ4`#555#("RfCT*(m5r*Br)Xclejfi@K%Tjeh-&eRkqG)iDK"MUVSaj
+
+*ENP[d#rKTQAr+HpC#l1mcrqYV$,,mEqU++Z8DVkQll2r@9DCjIM[XXU[D1NV%#a
+
+LTYbS8'$&D,QcKY4E,$%Kq'TGV$hPJ-(EmK[d4LGTP8C0IBHm5&N*d`qhrf"(Tif
+
+MJmFGSiJABEJc'%8f4k2mN@lqA$GK`EjF+Sr#AA)PPHZYlp-kRDm-KNDbehQE4eM
+
+DRCe%3EGk5ZI2Y4bAFirZQb`Ak3ePLE6hhCj3e6HlYdUCbk`E0CT)k1qre(#r4TL
+
+Uh8h-8E`0T$bXjPXR[TAcI2b&Lq(JmrP8[DZm(%X"KrjqEk`V!h%fkf,#MZZdUeE
+
+Emkc%HibEI61Y6GD58N0M9N,rHq4Q[U1#VN,jl6(pl@Km@CH*XY9f6+"2%H[#eiQ
+
+I@FL5"e6+4k5NKYU1L+PHXklj99BQ#@XpjqUG`SDMr612F4Npk4@$E#l`V6l*6$Q
+
+bVKkb%`E``@IkUQ)f8@&NGACfY%4+8c'Ud%Z"N98dqC)Y!JC-JJ*h4rZQDXa+Za#
+
+a%6Di*QM8Hh543pf"e81hCCCq20c,R#"+0F&G0cl$KH9P%K4dfbl4al(a8eM&6$#
+
+6%m(40UY@6&jm"&%84(Ui!E#@%c2Q%Kma0f%M4ca`4*GF,h,YkrY35BPLh8)X8-L
+
+'e-&)mIah#B)rhTR-JNbPI-SbV`JmBF0BNB+c,m3PGdJJJHi$ah`Jp50H[hThM4S
+
+'4DbS*8Q1,Qkip+FN4@3-LqeXDrmHV`BMUC3hPLfDf&jkbJ,G2&abB%+m*6@jS@i
+
+GaGAMYSZ4fai(4BD"b`Hh'XIZEcD1j%c61)FATVDIMa)ZYe1PemJ"QNI2jE&,P`L
+
+4(369CIq*mGP1b0mhMCeT4S!!ArSpP1U&STdbQS[R8hi(Eijr[6'IffAH46jc@2R
+
+R@,')S8Q`P+)mjZ6ZY"S+Pei&chL6IMMaJ6NhD-6-"E'i6#Y3[TS5BQL8MhfUm%Y
+
+Q(!NQbhU3!&1CZ+MYTH`"#Lq`kHTAPb1S@jfApV"A+5MYITFZD1iCGbCI*h213NC
+
+)dZa@SE-6U39lAY'*4!i41UpI8UN-D3#I*`f*(LZiGEh#2NY%)KeD(!282@4JQRT
+
+L1ZK$V)G&R`Y4(C2XBhpD"#pG)bQPf(0pKTaKfN!ZQa2#DH2SF!CYQ8&-La(Ll)c
+
+-IJVJ)Xa-)eeQ0aZ0cB0PcDNa2RiefX1hr&M0+ZpN3A!hU-%D3f*l8HY6YQ*h2A1
+
+j0FV*R#iV#Ie0!a,E[Z!Pe`AQe0((j!PD5K'9Q#X%N8[$AHSQ@GKV@KQ0"dB3iB[
+
+[PfTGKGAh5'3Ul(VP6[&95BZFQC`BGm!BGAbmhq0l)3[Q1iRUi'`&@miVJ5D5ccH
+
+k($fQYG($6e&&%%ULXa1r8M[&+3RURkB`X8`[iS&m#kjrQed0I0()*bVaL4AX6YY
+
+S0mePRhjTrm'cfUc3R5A6%5f60"&lbH%I+3rjj8!DK3m8(!A1AB[q#'rZi#f-(Fl
+
+"X"9l2S)'#eD[mr9%aCja%Z8ed2`KB[e$S8Q"f,Z5EkYCaLjQ`Ti`G'81&&-1,#B
+
+V`[)JqbLS2(AL`1rqH9Bm&k-4,PG(3PFD(C`N2pS"-BBMI2'ERVD04MR%R&hbr+Q
+
+G9cpMC(JTUkF,6+-3jL5(KNJDrdcMJKk%DA5H%KhhM3[m,6@qh&e9FkbUG#q[$ZT
+
+$Rp"!c3d,$9d%-G@8%UMp&eME5LBFMB6Y6j0IRclV)%[&6SNM+DSHLb1(*V23G%[
+
+FmFRcJrEZX(355!lccbcfAS8pmXbVSVaq1-,bfUiCi'G5B2NmYlGPXT6$02MbdSY
+
+"N!$PMVI[+RhL+F-6BpX`,UrZCafq#`@LA,(85m*d&j!!R(`J#P-jaTkG%Kj+AdC
+
+$YFH[eY#I83(GbD!QmU%5K!ZG1+0U[D%Y615@`hH%)e$YRRV4FX`M$B,RG4M0q$,
+
+N$KARk(Yakjiqa2Appp3CjC`Xac2S(6QQ6rLSh,!4(Ep)ccm[51*k'D&$F*c!a(L
+
+rj(cA!V8e&3YUC8Ve!m&[LTfS3aFM)Vh5UP*G(SJ*aFF[2C'0X@UIh4,eM1Yq1j%
+
+AkR8c#*c`9#kY8,,hA$-%8mFYAVAD@HpqH(DBApp``6m6Zp28D%RrpXYI!bi"VP)
+
+M3RE6YdmclBlrl8(U!ZX#b5FNVI!iKhl*hc[@Z1$c,HaCHRNGH8l2ABD3!!He$l0
+
+2bbUV[@qef*a,9XE(YQ1q8UlNb53T&&IG,Q8mMC9h6j`jT$523(fZ8l`dE2"qN!$
+
+)8J%*IdS4UM$68bmaCF,@)2U#T1a$(CT+"M)e42%Df6Nhi3r8YDMKaFK05c$G-"T
+
+9[([0$m9fd%a'kKm9,[4$feDLUbeQJq*+f@jTVmpKCEBf8XfHI6-dGCJcYLp28AQ
+
+*Zmk3!(%j%+1Nh%842kSF`rXFr(3Z3d2-lrB)SkVSPJUq822+(E`(X[TFGflH%bj
+
+"V@4i3Ml[m`T,G'5!d&#@*ZS'0Y!jk6f[@-pL+EiVm01-fjK*j&[0&8Y'(rcDLS#
+
+ri6U,ACXlVKZAPV[$3CI",(Uem4JFeqQPr#Ii953P@Lr%lr0mAi2ALcmQ'R&Uq&S
+
+h24Be5I9rCUVD6RE"8-Qcac"%i[8!+#ekN!$KffaKXZlfr4JZ$EmaCdC9$dk0dLT
+
+j)(1VdpR*1e&R1"hf$hG[r'8QdV"DXbCZ(5bAEIDYDr("$i"&"MZRcV'hBd"F8K5
+
+(S`CNHrc2$2c1ljf1SlqbBT!!Y8Y1'ClR&P2i'0f-*a@kfHjfA2IB[-cj4bmjSE)
+
+1*[LJb[(E'(`F)jT`d[21k`mp9Kf&,[cREfiiQ&*Uq'k#[GpVAZ4$mh',CbA&%ap
+
+*GL2`(M%$ZC,X`jR0!dDlVNBE%$PH4r1Lk59cfrEF@4"l21m1(Pd2*f[UUii`kaH
+
+')DfGd[brPlf"lP`@R6H*3a[5kJqQTC[iI2mTHj!!TZXHpPBere"&6Gdp8VKkkCr
+
+ZG$ld-daB'#0RS"0IG3d0VE&`a9p2`S`ZK`IP9KY%44Gk,Q9CF1@!F!RB+rUHE,l
+
+GYAIcV*LfiEk2RY+c2h[af`DjGG+[pfQRY`*HZEUh94)SIhhX[RiSd'AJcj*VlL2
+
+G9R1BYhpDJS#-YccPBMB4@)i#R,mReDAFH1Uf$qGb"eerIG!Cj"$XqMM4CJ$)+FD
+
+VbrZ!h&jE[!1I@8rl8H4ZaAIQ5`p12GK`6jL1P*1f6[Q[UV8SNi5YlcEIZrL+er6
+
+b0eGeDTXc$aj8RF*SHmPmBpApp`1K*$@FH[aVhDG4(kZ#,h4EF+S3[ME*,`PT[fE
+
+JU"lQX9jpICEq"3$(p%,`r8qhLCdCHZ*`r!fU-m[j[kUS[C2H8XeYm[kHi[(q1mA
+
+c6Ne(+pe&c*a%eQ$-13(jXL`8fFPbaL)9bBZZPqb0MLE'B9NGhPL%imY`XNBMlIS
+
+k%hRV4PcUpbe+1FYV5rPj6SHA2-*MQ[a32pK#dQqq1-&B2fM@9CrMa)k&3MKMp*q
+
+KdIUK9Y[m0qkmlp5i`$jZ#$jNZjccpVLFAp"iDfL6!KiGkfBqjHq'9-j`[T4SIAf
+
+)mk!)0pFJbMQ[ED%DmDqYAiaAV$bIhlrk3E3'H#cB(HC60rYD953ih4HBjcTi1,Q
+
+BNK0pPZ0*M8fSB*Nrc24pjUX2ic3fX@$Qa1hm6G1AQXrR**9QYMH@pAfZ92J#6%p
+
+JT2RbQJVSA`,VI@H%kZ2A*YGN5#U0Pe98*Hl4kED4m)ScDdGqqGEED,'p2ECh+rQ
+
+UZ6'pDCj@UqABT0QC#LQIiIQX4Zr4&l%YFmbA1Nd6(f0Ej-1Y@dBE&*%0N!#L'A4
+
+0V%epUm3YID3qMSTm#J1L2EkrA(2*,ePqFm[pQi@rp5rXL3lUZD3JFdabXM1LNiS
+
+5FR"ahbYAUU3[fHI4$pmEQS5(RRpeVj801G!DVJSjpf0(b"A-KD5)13FGa&LJQUC
+
+)b%ME[cFk)U(YIPNN-ZcqeIJ&)AQIYM'ckNlSXpk[&+)JLYK6[Ec&D3aYmKR$Vmc
+
+1'K3)IHDPT)DclR4%[b+49,9Fj6'MdcRGCSrA[UIpB"j0'a63PScRr$A3!2m#KCq
+
+DNqA0Y"$amRVmmiMNMJa85BH0l5KEf9QD2)I(X9!l)ZYpi61c4R$TNGP6hG!NNk#
+
+84,TeA8c1C"&9YdbKRR(Djmh2AT2cNhSc"6dHXUNhFHf$c)$NpV4q1%pV0260Vj!
+
+!6JJIX0qP,UT&EkdHKH$m6TdeT1Z,6FQd1haH9M5[h)jMjAhpkqc2Me`AlEBSX5d
+
+i!S6#&ELdPY-X1,pdl5+19L%cJ0CL065Tq$FD(CkUlXEhkK*H0Sr-dk58C&mDKT(
+
+BjXPiI3e#aNfhcE$K4P&"I"6if5k$YZ@8rBXcrU#-bm-'hmAb81kUPrf9+DcDQrC
+
+KIi[TdkpcVPEi+#EAK5hZK2[S#SET#TDMdRJhc,U%A%+`cej1+ATfr&D`iY-3"r$
+
+XUID6b$1Q@PG3p5cGD&$$e0pJCldG4AQ3!*U`i+5,0KkXZZ+0p&G*14'FK*RB8#h
+
+5TM!(G(%4YEKDE4%DKFKH145'9T@0D@Yh&fjkc2h%C!3ET)YJpB2a9&'Vr#mA0b2
+
+BiaJQ-er5S6GH&4qceK5aAF9[P%CqT8c3ADk[KHUUTbf!S5ML@mTDmM9(GTYX*af
+
+fmF)*ZSmABE249jG)$eR)5CdH2aP#mYe0(k"akP2L'AV3P9JlG`TdcLTVMSe*DXk
+
+R3d&JRQ6Jq5VI)S5U8R8*H,9k9lC!+&G,J)M6H5bbBRQ0@`9Z`-q$+rm-Bjj*$m'
+
+UR@l3`!56&#CeelLbX5UQ2br[EcMk`K@%,JP&0pD"RiQT6dRl!i63-l'r!hVVc58
+
+I5L599!Y42*%2*PVj22FSb-&ZqFKCTkRh&eTi2IG8`K`GE3*C#aqS2h*3e#cie5d
+
+lIb(QV8"(d[QAN!!Lcfi$*2Z3!)%3XQi4beTRDcpZNP)@ddH8)d&`,hpS5*fJVRd
+
+eGBrSJk5UkF[dk[3K2CjIFA+j`U2a1GG5,-iFS!YpY9&R5&!2#P*&5UdZ$`l$[X(
+
+-+J@pQcT##rdp+'5A[r"r9FDiLJkkP#3daK556e@!Gcd*Y"l4iB&h,Q+8Yr"`@PF
+
+6TDA3UB(m)Yrr@UA12L0)UmN2,G3CPBl35aQG@&R&6rYer#E+AT&ldRYJG#D+Hp2
+
+%$,iY)ReLp0[,pU(J!EiQq5qd@)!V2AR8b1bCMED*3`AG*H+j"bd2IZZ1RlHX%Q[
+
+-$i44M-Cl&@-5T9brXmFm1rY#*)*I@)21T1Q6L@lFXN+`)Xrme)S3Yk'ZK5pG+QB
+
+JG!'C*aA)R6p%6)`''U"L[hljQVJ+bcd*P@FXJ-KRXQi+%YZr2L-Ba6qir%[i@*Z
+
+r2ZEAqT,J`UJD%ZqY&"@!1`CCZ2eFEYQhi%-)@QaF,E4BS#`i%Fd+9RJhrZZ2V)+
+
+ARr"pFaS1CmEBUA4[i@jF'8'!8R0ET9YIR68afED`p4"#eU''!I-bAXjMjTC8SXe
+
+R3FN[H5E-0XKHB58j&RYS&@56Xc1rG-T1UXS1X+*!3a#TRlJI#kFlkrKqeXfeh8&
+
+E5%%i0U3af8$4ZL2d&'r[HfES@G45)lU,4r'FAM5Z'fXTL*+L'#@LpafXf2!,5Rk
+
+VdD5elZqjZVBRLX!3bbD#ST-Q3AN6U'frV0F`@QCDT$([FDY3-qFr6@q05q9F!($
+
+##qGfMqcfYTi0i@!-1FK0FLUD0M%+1j2l9$q#$S!4'q'*918(Ge"XpYreY5Kc9AG
+
+2-TKq-RPDDrjD&"hZ81r52J3p"p9TG+ZhhHlkCVBV)$aX'3U[Z@NrFEq@f5TkBl)
+
+mL$3EYAecRC0)[+6-10Xk+%JE3-d%,)6mh@@%2A%XZ8F+3i!4)B&AFcpZK,j#ZT,
+
+T!lZPck#kef4D`&dGm6KLMD,L4hVGDSJYCRUSNd""C3PLF19G!NLLXaXZe,Y6#CH
+
+GYp15QPQaLY(m('8XZQZ,Zba1Up3d9f4mK[M$'lNPI426fU02#&JE$@+cJPTkqm'
+
+5dARUHT!!dhhj$&$4lBG'T%YA`9$4aLm'5JQcb,(XKT9B$IhDSU9VEbU"'`(aY$V
+
+XCP'*#maCmDrIZ#'+dlrU9d%ZfjGNS$XP+HI90!VZf8b(R`mZI&RYf4$iPPi6Spc
+
+-$f*4p"1,iTY`Z4El@EVrN!#pb6KiQlhQ+jGchL@a""Z%Fa9'mkDjL%-bqD,hpfm
+
+Z4DZKDqffD1,iq8c)$RjK,286mZ`3"'q[bebGSrS6f@bSa$Qkq@ZX3Z'3!&S)FbD
+
+r8)1,r)I![V%(k%c*[4-(4!d`)*4!rJVAZm[B!jH$N!"cG8&aRb8j,65$ZCUZ(TU
+
+,[mNm)k!-l+,HD#!cV+6*aNR0qH9C[YXc"DYcr*qH$IXE#Lqim1qRFRrVPqSbiGQ
+
+`3e2cE(,rPK`Ipfab[r00-i6b&eMT$@0+-8RNBZT@ZC[6@P2S9e&@AGFZ[!%L#c8
+
+`@ZCeK*&4Ai`'Qcflk)dP9f+kbZ)cSBB6SY'(jc5XZAcVG#L6+-1%1$KB5AeTl9Q
+
+rU5E3e&R6*''TQTM5amr3F6Bf@Nlme&[rB-RBSI+&BCfIrI#"Ij2AC6ii26r"rp5
+
+MHmQTIVX`Ij[rRGj32IXRafdF6AT#Q[f@EZ)HXV,J%@eX#5&(NN,G4H64!p'B`,S
+
+46KJm2PYSYjfe8F1RlT1"d2([EiIF0m,q([l([dBmX+S6p0q896r,$V!S$XdS1"Y
+
+&9lB@Jc'2lZD-&1`Qa)4fiqre15G6#2R'mVX0pETF*&,V(Kj@,fjqDe-bS0bZG@M
+
+I@bpUCbl31C!!fYaHlI+Se'9H8l#6G+"Z$X,5MLfJZ2TC3I04lG+iQ30lY%!&rhA
+
+@9Ge(0ZQcT8CmBE!EQqbGbq&eAl!X[-#d3'1AIEdPjc`[ceUL6%bcjQl9q(kNXlH
+
+PME&GThep4caHM$69MhAB4fhI3Nl*%+[fmH"V(TX2eTeLPL5[KU51V[)DVYHrG('
+
+8P@9hCXH+a&-25jLR#,f-`SXVl14e#areD2$L[Qa6SD85#UEEI*!!M,B8QajDZp)
+
+8flCl)Z!0Y0$1TQb*qKClVPKJ@e$QC(iq&6N(pYU&%ZGU5'k5AVmrh5c6r'@E5af
+
+I!pGU5U+5"b5MHm2C[Q8"G1kAYC4L&Ha8HhVjG8!r3!1PMZfEM'r,2XJd&eL#F#4
+
+bS%-YbIY(q8+f1prEZ3maqU!FllT$"(cZkDAI)N62qF5R$l5QYI3LTA@4!V,NFdm
+
+4D2LRdE6jNEfRZGIRl5i4+62&C#U#h[!`K6jm4q!"fKCp6,'KZkK6lPb5L@Cbi#T
+
+hRjV5Id%[GZamYB!4AidL$T+K[!HrrHJ5l%3+KBX@[))B0*)YiF+l$VHKQ2-V2$G
+
+`0i[@UG-E6J'YA+mK8Kf6FYmbGVV@TT,2S-Blf+EC1R$[SBZI$Cpf3L60l'$'8)c
+
+(1PY&lYGj[UYp-$DPA)[RF9HICl"FGB@UiNljm%GZIcP%pU9II)NKb20'SfJD)jp
+
+b)0FKbTGR#kKZKaZE[&A&d8#3!$0cGIIX5EQ)ee&Ja"miP(#'CH9FiZ2AM)+5aR8
+
+R#E*T5M6&Tfm05@$PVqa51T@9NV!eBCLS65BPa-B#HT!!BIBbCQ"94GV8,9HElLG
+
+%5kQFUbhGR,,bV6d`'fl$XkR5[X[&)+1Qp5T+LdJjVP,NdVAS2i+"`R&''rK'@Ai
+
+H@C4El@UYER-h@UpEIKCQ&6Sp5SNIkeM3)BVLq2SG*Bh1P@CmN!"M$IIGjkMi@fI
+
+((&`f[M$f#q3%dqYULB"H&3X3eHIRI,ZQi%8rhhVJ)-R!fUJKGFjHUEi,qKaDhkl
+
+MAFVl((f9X6Vq-E8kCZZi!`ZI1k5Fk9h'k[[F[khS0H&+k)iN!ckjAbe4c9#6CAQ
+
+S"Hrl0&iare3pAR"KC1R'#qlG0r%ip[l!Xe3k12XcJ8#,6$h[[,6Fj1JqZm[p3&c
+
+Z+YdNGd4iPdiL4FJJcTKE+H'lDN8A&1D$*$&Fp5mSD!#fk+@MBP5i(d$R3+Y-U`9
+
+9k+0K)3'*idqrmGEB(r*!&*P6$TY`h6XPiX6[cb[`1jUKKmcVrACRQ'ari)p&6$j
+
+$eIpD+cZddYIANdIa-N[LApRSDCLM1piI#iR,B#DLMTNfDV,NGdiH0aGl,)YPjE0
+
+[U`H5XP`2LrI!`cL,G"3rKcS@V`c2(aY#rb41(G9iemj(%R4!S,a*$YIBP8"c1ca
+
+C5i9[J)pd5iJ@JYNm3aRC9i!6(2je5JX"3G2K$#a1e!R"kME,PI$cd86pGM!2,9*
+
+HX5eYHrM8dp%brR3Fkf%m#*rl'NBCF6-Ba[CE&EE$,0pfThq,Kqi@3EKEbM,aC$K
+
+hIkL@1BPKbqAimX+6Vr!D*`LDd#(ja!FSAYdIAD+3!%3R`8mcBXd)F[P"@Z+(lPq
+
+0UEXlJmHM'4K,@"PRAGhVp`Z#FbFhpZ08&TLBE@%r`U41IB*Fr2N#FUBpBNN1@A8
+
+X)rle4V"m$dQIb5rC`IffkfhV8k,j`&5AdC,5Xe%ajcEZ1`mG`SRmR+fmd!0FVFU
+
+G#%j"k$-dE-&im6NQ4(IS'6lBI(,qVle[fiX46ZD%1a)21ZQG,I#If0ji4LmK[ek
+
+#Fd,(2(hQ%U3f2SLT*-5%L3q$GN#mpadF0VUb$ZfMIL@jNNhRqa456#f$p)C#(SD
+
+Xc'FDlLbk5qm+BrbjRI+@%[FHd6mJJ#D1,,l[%1PEE%Vf#'B1*FhCPT&LSr)ZLNX
+
+!TAQMi1YC0!GI5TPX3F0J8@arBqKE8#f9`ZIGRQb`iGLJ6PTe16LDPD#[8i)M4$h
+
+FS25l2YL%m-U["jS$,2Y01li$9&UT0&rFQG@Ler!8DA,2+,i+F5&plp2r&2%6F"`
+
+ZkA@h4@Ch&+YFC1BPa8Y-SQ[V!l-FlC8h-+!9jY`FE2TQb$Ja''X3(DN2kh*FVE(
+
+l893D6"rE%Hc,@j5E**r6e@HcVRGU$LfXpIKa9EVi#Ic@3Gb$Zp`0-QqBmNB`HDa
+
+&k5EV8be12B3'I%cXPi,FYY"Ra(C$H!-[Rk*TX30mXAJhH,l-8jG"4qZqq9B6"`M
+
+DBjMFDc`($lZRRjF03hU66ZaYAj0QT`#b9Hl8+aQA6&m$C%9SfRUUf+qG[Nfrl1&
+
+H(NjL(lrKA`V&"V`1A@fNB"rEU43-FLdG4KcfA5Zh``[#6K!SlLJZX-Lk(P8&Ab8
+
+5+$3GM'9jefK4B!8SPR`!N!"RM%rAad%"80il4!,fA#!)1i4p*3Z,b9mN&3Qk!5M
+
+ZqRl*q81)[@qISV6A1GqaTh5b'jA-FZIIKA-K(6Q%QZ"c3r[`5q"bjEq0B'ZQQc,
+
+5Qf)SYMGUY#LLRETD0SJ+)*rq6!QM)jCp!fhIG'`@mq1F[0+qp$8i6RU)[pPD3-d
+
+9L0%$M+*[R)e3#lAI0C6&3ICX``cd+hk2H,h[80`GTP*j0E+jfRZ[H+JHLG9aLYd
+
+$rfUmd1h%H4D$,Bqi%qT[pPNP`C5a&DmU%0Zp@D@GfU!r&(G`E*(YKaUL-ZFV0$l
+
++)2YrHMhXLdL[*rqhI%lZIeR4XX21cU6A8dd59EdHGS5Q[CiG@SCfZTUif*mM-63
+
+0(+S(1YQ'BqYfNFE["!rAHLMDLXrSU-YZ@$")-G,++!fXdIKT`QMNkF`M1h6@kH3
+
+d10H*MMlQMH,rQLd8ZJh%KJ2A8!M5i+""cZdL#@ZAqa,H4d(d1*(Ml9,MHjD8hj9
+
+AlREaG*0eiA2im1+hbI[$1%RPL2L+Ar0-peaAL@6Ki2@R"VUdjE1c0"S0Ud[l*'j
+
+k%D!ZD8#R[hE+Q*096G!XaZmYN!085%+"Vp'(KPFST@8hckPXiI&UC$VaBT*Uq%c
+
+-HAXRJT!!HElqq1FFE%GmGDT0U-T0[mZ8DQ@9(5DjHal18cG'JZPF5MN1&!28pfj
+
+5rcJZ-id[2d0XdKSCqE+U9krUI2K-X8hDpJlQ)NZ"3hBE5R+jUpdjMFI69*VYl5b
+
+C6T!!)[mkrqBh8r$"l&U`&f0pfi%YN!$9N!!`G1eQq'CUH6YD$+K&)r(3[[hNmIK
+
+1jemr0CirNe!!I#LbC1A!8dmpjcUia*Df+LBB0H5DCKdCIp4iTe,K4"I*0rQaY1*
+
+f5A),Amde,mTKCB43`,!Gp@l1%K%+K&%pVTRRI!`bHVjMG5'U@&Y(2Nk00#U9%aC
+
+qAXRTXVA8)!r8'-XU6ZY2RKc,B@@AJ6JPlVDk&pVQG#jpeh4NTTV`UiEPrMb55V,
+
+h9S4Q2e$m#cpS%-9p)qASZFc$IAkCpD9p`QGH3$qGY(hM`#(DHYb*me9r`B6(BY0
+
+X`'h$m,bVEjKmqUADm81E`!fKB@ZmY6@X@CRp&,jF0d@Z*Pf6L@1QUI)UI-KFN!#
+
+J,r%T+H69E1C)iBRT8k"1(4FQ&0f3!2L0!F,pF"KY-Nf)J39+Hk-qlhh$,jIlZ)@
+
+&JV%2CHUfBUN5`jA2KrZpKq"F`RLKRUPK@Nj,m,p`Yf#0'BGdbLIFKG-*5NDU3-"
+
+r(!Z`E2hB4fL3!%6&0i26QM,m3Q!f4VU*`L0eEicG1hfXe8HeYB6'ALb'GiQ(MKV
+
+ii@S+&H#`%0fN&D[)aL!i&@cKbTF-Ul'%%c41-S#b34"h-#X,HjmHLIVSNCDK85R
+
+5)+fR-(G@Qp-p+-,NLpZ%-*Yh)Fh`85k)rGDM%TdrLeq`)h25)SLE4F`bm%c,q,Y
+
+$IDYa,+-`-lG3-T(6*ErVLekm3-"XJ3#rB0[5MGIA"R9a#j+[fMNljQ8@EKCPjqC
+
+PjjDdlYTdd2AU,*fGVJ1i&mCP(9DYVbE`mS`4d28b(5)UpT')l(X18qcYHXa5j4E
+
+1f@a`8eK#'3mae0PAMD'Y%%2I[Xm9))'eMLUU"(UTJbAMPl""mG!RJiMfa[HMkjT
+
+qMLUpA*U2crbK-%FV6SLmJ+4LBK&BIqV$1XdjF[McJ0M5m$*VVJ+Ej`0XkP#2pd-
+
+XbfANpY(bhEVmj2-"iQ[L&3`mleY[H$)jLjI[)[Gl+(dhDX`-HrFjYpqB!'FNdSJ
+
+CQV1rGB[k+LaJ'jUIV8&#2BHUl4!FBi#%BHTGKD!"1dZ-J9M[EC8ad'$R0XlR!2f
+
+M1!,N9*MMb2k'IEG9VGbY1QmB39lVaTKS+6a1&rN)XjGh0HI'IJ9mI-SEbUcEHL!
+
+1aIYa-Q-keCB+XhdFdm&@"+NXG9%CZXSJ`Y@Ak[LYc1eee+9GI+qa"P*0+S9KhQa
+
+N@4@h(F@3!%+0L,#DQf30e!6QTM#+kqD,3@bp9R3GSUBDV+f)MKUA-LqDcJ2p(**
+
+VR$chBIZi$AjBlGEiLGT'!R+Z5Cq2iDH-1`lIp2F4d#$$DEKeC!kKVGjJ[`LhMQV
+
+""b9dFMkLlB9,4D(aFf-b5H9qSXZFk-8GL0G0[4QLAb81+6aE-5F@Z[1YN`6MXZ0
+
+pe&m1#X9@a@fRb6bbFiiZ+Q[0+LM,le02pD*'CVUX3Z[jjQA#UX#D6LIqF8Ie)(J
+
+)*Kbb[Tep+$6d3*-,%j3(CUCM2YZ-@E!6jML[a0DV9f'03C0@[kYFf09QCX[RkYV
+
+[53aj"(YT$Xcf3iRFJ"ELA!25RQMl9B5PhlF+"VDThERqp(PYFedEipZKZAk*3!A
+
+m6,$a&)`P*e85*+D-MmeD#c0@#cU1(HfI201pi!A'PE4YSqjd!fhVR$p!+3UT%Ge
+
+@jp-Y$BAjN!$VaES15CfFS@SV5I"[%0e0i+,cQRrbrUlq%d"Vq[bj[*4(P+1i!f$
+
+b'QccddKqmf,Geh3i&-Vf1HP6DN4qNL(2H[kYReQ*iT3'epPQjq#@`5Fhj%T"iL4
+
+Kd'ir2AqHYejrK%*bA-HHh56"Z#5TKSK[@CHMEf)Q&ICa@'J8rXq[,(BGN!#5)$D
+
+@&h[(jJ9'KjhjUdL'ILrL8Y#RTed#5eG(9$KA%pqTr"!J2p%lIC!!af1"SrpjXVR
+
+@YDjPPdNXj2lkHNTI)Gd%6hfXra2`DdCV9j[!PK$AP5jC9XjeY3lUk%-JE*(JAY!
+
+Q@6[JZCaRrJUR*er8@)$h!ehGjcbeLd-(lJPZ`l3Z$k1[Vqe2bF[4HXBSJ@0FXq(
+
+%-mT`LM-6H'RPRmLc3'XQB&8Y)f&CX0Z4mJ@cdPmK"j!!a$T[%E-HpbNH#N(ZZQ$
+
+cEGMXrH1kHQ&UHmp92aX8mTp[[DeV3b[$NG)F9&c8DCIRAh%b+fhXIT5*4Vfr@jQ
+
+Tfid@adj,6II!KEKj3QQpNLpl#T548C*$V`"*XG#PC+1'#q&pa!mRZZUPJLZq0!H
+
+&PXNLicNY9+5N)F5dCBM$dpQ5lIq`#'8$6R9*BFGYqLPLbF,UI8aCXLKBe69Y`dA
+
+R!bGmU$4ZTaqD(r@&A5(E&$Cb&C*%rRiT4c-UI)i[CeBJ`NJF&"+SehjNKeVq+d+
+
+e(8(aapj,-!)5FUjTX&Rk6(GcXJ%L%PiC"R'A$EC-crd()SVp*5VZNTFFP&TGGFE
+
+"eLQD[VFjQ6)*aPRR+Q&HT1`00eU64K8)fTI8Z8f-aEN58[Q45SQhX4p8+,4UVr0
+
+C!N2(b`6b6Yb5[+A3QccGF+`jXCJQZL!cF)N'lc3FMrDY84mPR'S2JJS4,F4",mX
+
+$,%1'BXL6IYL0S4IAe6a25D1FdS8IraV2m6&j-E50B5CQIK[8C&6`faPVdGpJ@Vf
+
+9lUCbQbG'q-@i!GF$mfDGR6HT-(aKTi)CY9TJhb,B$8RBJY(Sh4p-T1fCe#ASJ8Q
+
+dKdf%1#eRm04c#3'[M-kMCY`rHdSR8(i2dpq3!$i46&d4%!5&6D4KMdV%+H-T*ep
+
+3XfifFjdARq)i6E(qrFP&6)G1[h$r8@(RUI[`j4eFHLiZpZqQNKqDGYLjHIrp92j
+
+r@4%JBJZTCLVPraiJb[phJ'L(YVkGVLAZJVXDEBRcbC*e&jG5V#+D*4MhiH*K*QA
+
+cS809eU!SAK59@4SGk8D%'MmPdBHCMcDf*8dIh5UmkKc@A#Y3f*,$Z%JGb*BJ-@J
+
+NCL%3l8V4bVdqF%`e`VGq1m)*H[$ZZFM-624a`)G#`lCD@GQpZ(ME!',22-4V131
+
+UR63LI$UCCM-X0Ka%XqYi6mbZFE9P0U`LP63dHXKr@[ET'PZHcbJbM**BC@MdeeC
+
+LR2+%'`*Ki3f(Z2VJk-`@frX)9N88CI5RebiHiFlZ'kZpPZ5l,1q*QXRA5fR[!dH
+
+cLBm1mFHI01CG2c3SX&ha2!f&J*YIhd*mPKXK%pUc0GfERPS2VUHBRYlpkP29X'"
+
+pIJ2IV8krKTqZ*8#Hp##!GAea%iiP061dFZjMAjH0A&crY-ADJ`+$IGh8V9V1hBM
+
+p6Y$P9mi-CGV9VfV*SJlh*+d8kNXpq6$mM0Ir1#NPEB!+CVV,JMG5CBa56P(@L92
+
+`h[eGU2ic*&Ffr*1DQBUQfiCHRfDPKR1G&9Ybc)b!PK1hpP#INf-jYYLjmN$GmVY
+
+8A8USS[H4HhZI)"rXi[HNbePXa36&(fDlm6eDdG+*+&Di-eL$qSM,Y`I*M!1Lipl
+
+D+FiM'Sb'`BLk$I(%)bDQQfXQJKcamSIqIS+)EHfHerRk!A@I@KARP-(RJ-(M*fa
+
+M8E"!m4*4NrBRZp5p,jRi8K!k(!4V3''YKe$3)NICIqCDhj3KE2H$Q`K&B5IeEk*
+
+Zr`l'01!rjSYBUT`'3SB3HSE3rYfA1T`e[QB(0SUKK4HmPJee)Laej!#NTAF(&qh
+
+K[0U5G-A#eIjR+R,rlVFDi39YmLGKm6'mLcMl*$GFTF%-fUL[YBjKU4F)F+!bZ+,
+
+VTURVkaC4jF9IVIh&'DJ'@`0"ZhTf&eU%,pr13j("@Ta%'L6Deh2@l('jdI2*M&Y
+
+m`f$9*A`HFIU+)MrjY)FV8a%qb`"ZMZ0UAF0XiP+&2S96i%0P2EpZ&!4@G+ZLJ(r
+
+8L&EX#9UP2-Vm4DiPVmee1Nfi185-CTGi`DT91peEm@jlIr`S2qT#[+bLrU'CK6`
+
+J-h,SfB3lj@,(I-@2Ujiaf33rrpVp",PfSPGcMFeEYBCRm9BI-FPGcedkrj[l#)&
+
+C1Y3kdLFf4%,`-q6a$fiA3Yrb2YFV@kI5[26f%9NGJ*hZEjYBVCpCSMV)(qV,LD&
+
+$H$b&jX%AR(c$'LMFHfIFJdhmm+cQ+ENXD&DAGjHe-bjI8JFk5Hc)&M50k)!H5Q@
+
+%Y@1BL"kPk#p6(r#*5Ik,Z8F-fHTF"I0A[fLli`DHc#IR91*Sp&6+)!qpPl'QqB2
+
+TJlB4YI!*c!NQB%,eB@Xk)&,aDl5NB"-`pAI$iGpD&l#MRf8*"mDQTV5GGmlR-Ph
+
+8aLj4'KRS%4cm#IV+,bDJa3[D$$q)GEp%jmdIY#dXJad9H"8dp6L*$YHD+fVUY9&
+
+Q9MZ%@J6SqH3*3iQb`YDjCSKE3,FlJ!dVhXDm*k9mJ#5PMLi&mNbm*VHE-Ka1Ni5
+
+0c'9*a+QYfl9D9#Bc&"c98hiFeK+A((5p`X)TZ9Mh9J'+8RYq49af"DL'VU2pUPS
+
+Vbieh)cVE,Cq'HY6'lHT"2fTL%YN2f5ied#h2`BU'bJ&AIHD&B)69-M3eEB)3hQ$
+
+&#UH`rB1mVNS,$qSE84M*f%q6`QQ6f`!lK)!KQH!K+j)2iaqbTVYk2mfXQ2#a)d3
+
++pQLeZ&'Y3[l5b)T6QX8Bj&B9Z4ZF)4$FASU%`c"`1e&BS18#8HihaiD#b*Pk)hS
+
+[YUT-LS&16CL%8c1THl4GNcHTEHAJ5j!!)Tjj-p[#"bH+LFBRJBS+T(G%AXZlcTd
+
+0k33F#A+lMF*"9**qpMdbRRh5*kTAm"Hi8Tjm,$%())4Q1b3@AVJ"0SqeX5K(#`c
+
+3*+P-AjrIb)ZB*`98HF8S,TUSSb4r1&0P202TbZb$aG80AI*AYLIYIX)eT$k1YBZ
+
+3!#[mk@lh90jGSmEAXYKpEU#lmQNq@eQkjM-5BK*9c`(U"mPJE*!!lJLXk!V"0Ld
+
+Q,)1m@bTCj#6C*HM*Y,3D$0[i('R$QdiF%*SdTIZ`l[MmBSe$KrB!L"2S(ceLR"U
+
+bMD`pJl1+DS5TVA1-VX6b8QpC6Hp3E(-S'N83!$DAB6ra8)KRDbj%3M&cdCD9#*b
+
+T$6De8&k,)`++LM#PeQ%bpV&aA"fX1p!)0B'!H),"ci'1ZeLk`kh)i[b[@&bNm,+
+
+&G1i0)cYS8qiThC!!&*eB)aqV3DDdfG10lchKPRDX15E8iUR593'MS$SbSeZ@VM!
+
+m,'&V@X'8eXdX9",p(1i0-I`JFQ1-J8-IY0r-cmp4aD,)kqDi1liK"6fCV&Pk2iq
+
+T(DB(A6aU8%`GDfI4'!RiJ#@5USXSQC4kH)2+Bq!lLae%KDL8GB2BLQJMPkL,*-K
+
+qTEKC0ahLh35(N`c-Ti0+1H+#5d#UcKBJP84VN!!JG[5QG`#G*dd38J"3(KGe+11
+
+fUSm[J@Lkm'raLFJUI,Mc$amNJ*GYQEm30rQjf3b'&*QQKjDa548T+f05EXVJ,6h
+
+caYTV(4dNI5MHJ14BKEiRL,A[C%I3U8bEI)EJ,[Lb-rHq%$UG!p,ZV,Rf[3[%A,J
+
+[3RlI$aEP&j,,HP(if1Z#A$&E3"bF'`M@*XKF&PF&2r3*(f#025-YQLZNM0mLi0#
+
+I+`)K%j5mrJF9fDcL[GG"r,H$6PdH([E9hCmTiep5"edci%3GCYSJ+d&a-QH2FUd
+
+@UEp`jA#SSRT`)fXD"XhRkYm'r64EZk$[Le+Mm&AceQ'l*HrNlDe8YJX[)+XpVlh
+
+G4RV-2iXr)2cHL5pqk8a(Pr5m18M"XZHG'9R`rL"`V#4`1pFh2hP3-cf4V(rK2M(
+
+fb[N4N@p13+kLT-8i80LZe$fl$8rY'L9SM`a#haNpb+'*'L+Z3[B5YNm6d8NrTMX
+
+5"H0K2&2FYqL3!+X$cqQVMbClb`V%Gf9f'jDRrR016JDC5jriE1lHfmq+-Bh'0Yh
+
+pVANaU*mY3A4i49E5VY!H[(&k[5&e@!C+!i'dc*qI3l("XCMVj9CEcbM,8e+-XEk
+
++P9C6NfBUKAH,,DZc%c2H)XqKA3QDr'iH(mKmjHprmr3@mfTicGeJ[6GS,M)R)*Q
+
+8Y"@@E'hTS0kI$CAQ-[X4rdFfPl(UhQATr%#18Rd,8PXh3,DCpTPqL$f92-FlN8c
+
+jc3IK0$lGim&B#,aLe@J,dGI9jp[#3VLJ`*R$C2KkM[Z6N!!Gr4RDk1i6#jb!iZl
+
+0E12E%2qmf@CqEb5K&2A"k0e5h(S*)YBppk*(JVr,%&Q3!(pS1XI1Z+8GfF(Xbbd
+
+rTG@(rN&-,&b!r`Q&'Q6[ja!feKbQd#m$JlL(@c'1NaNqd[L*8P50!*Nl&LTlPY%
+
+!+aN!+-Rl"3iR$FEARppkZhm&LDT*D(bIhX51p95p[0GY9$S02K3@D#(*$2I,IA`
+
+F#V&F2KdMdQ,dR@ERHmLfR(ZGLG5Ym9b8hU#-#kFDXZ6,2Rl%IUPPBIa2`ic0*AV
+
+LF2,qEiCCeiV1EEE(DSCCiHqGfiArlYbq8m[4#[m3Yq5Y0R#b0%A*34*Ifc*2q"K
+
+DXYhl`Y@M`E8F[HD3!1Fk(%NY$#9$N!$I2NP,PY%#VB@b+@Rm*-9-V5@phkS&8NH
+
+FjP3C9YISa1J,dRfHr)&$`9YY(FD#Z@ZS'r&(-H06S$[fbZj%CHYq+9c5NBH0&k'
+
+,QpIXc4[[R!Hi&l1bAJ"[6r4iAR)HTZaheJI,1YUc(2`IbR,e(!mMmIbF``!@q"F
+
+1@Hjphh+1a69E*CpIlfd&iQcXMh0&AD21C5D8)5TG69Fa2pqI&Qe'kmfTil,(Y5+
+
+pk&-R*JMU6ee,0ZT$UdT+M!TAG1`e#e,dBl*Ki%db9eAKfj%b!ZZJ"h-Z!erpR-P
+
+,k1T*VHZrElj*GD2em$hS[QH2&LHCdK'rS8piV%f`5UUU*mB"GQpIpNr5r*RHjQd
+
+G,`Ch#-Gb[2Hb6AGF0Xa"J[+pX*j5#)M@NI55e"$d%a5r,`jCc",5IbJ[E%JjNi#
+
+)[H3fh&2Qmia@(UBkAehbDm1cam1D5-#N$5FK+a`#)k9Md03Y3p)kdAUbS4I+YUY
+
+%(1i(@EpGl&LZ)HcXr06bkAlV2V'Z9M*b5LXAFf53!i8(4`CQ@j'i()iHf%Mq-bA
+
+FFMhdEqq*rL,baHFiBLU)Xd2Ak"ZY$cEqp$hF,qH+JIX"0X%I0qMDUA)Vr"#1UU9
+
+e##MSjkT!@NdpL+'G0MreD830L@kYJ2GUZ)UE42@9k)X$c'"PR6PGNaA%Y,GlQla
+
+1l!NqF1*mp@M3hXIY[8*qE,@3!,'kHjjadi-brcS3L*`Lj!Tpf5E-1Cak`LMb11%
+
+ANKHd[m1BiB(i3m@("kN-[VN50c51eQ0l6R#8V4#X0,Z6!qmmHd1IL'jie96Zr3L
+
+Kr%XUp2G(V'T@dM`B4%S8(e1l%L@#`pS`$Jf68M2(MQe)bSmTEY`0h'b!kd1QQfV
+
+L0q5ZYVDXRlpD($DDY06IPGNbKY[`e$pXkBRUkBHV(EjDHCppU[j#2N[rDJQZL5[
+
+*k$6rdA'HeR$Si8U5kDKP&&YP&Y4(p&38LD$pG6N2rN23)'KM"X`0P2'4aKEK8Pp
+
+h&*EM)`c,!e[E6aTlMmrBSQY+6ekTV4,Am$G-V!rQKSbrBXXQGpdKNqfQ+Lq#R)R
+
+ISbEe`Eq4c1Dp#Gmm1!P61ml6AiI&NKq@NS*(,9[fdRk96r@HIGkK5qFfl4'+If[
+
+&0m1l38KQ1D9**"UCG5Y"DpeRVABJl`mLH@G)R+!Dq1VShV2#AhKd'ci"HFEhbKN
+
+FFfl#c"jPi)miE&KDNMbRbYI4lV5RI8Sb!UPVGDZR&3*cN!!eqi&`bZX,fI98&f[
+
+!aTU'`UMme![R9&Kr%+&"4"c&3-9*[qaYF8bhZLll'2@2,6(kp8rpm8r@'!6$CHV
+
+8A"PmMp%hY*Ii$,aB91X@G2Je(kbS54XT%FB$TSTT1!MhH&@JT%lZdX50(N@2R!I
+
+Lbm0Pbfqh@2!qi3q)#(b$hIXULfF4ce(Zq(A(IHk9"ejm0c-ABmiS`b[VRM8Ud#'
+
+VchHPRfh81*`CJjXD5Fq1+B'Q[%reafG5KLhYpX0"ME@f&EQ8Z-aBL9$f-SB9M",
+
+!GF,9km)$1l15i#'pCGkZ'ZTpe[F@DUB[26`qpUI3`RS$Hcp)3N(2[eX%K[1A86J
+
+KU,RhJIUA8Sb$FR)fCefiXl!XT&*cXl!fJDf,GQ@I*p96&V*P`&)1e&j3K'$9Sde
+
+N36DEI*Z8@kYZKZ("&c-JaF0KJardAKip`ITQPS6,Y@8%IL*!EF@965-)lfeHdY!
+
+jFQ%[N9pAXK$fP'dDka%L+6S,!XqaGIGacHF4&f'&i4jd`,d0*P#a(f"HcUD2k&S
+
+Gdl%LpL*MFEXiUddk*j!!LP$5m,88Fq@,(rbG",kki9flbjH9+dLk`VYX+@"9d#Y
+
+3JL#aIJV8i9@e6$Kj"5jB#E4RdRZF%EDYVVPmCYJh8Th5mr2dkUEZ#h9$XUEJHel
+
+HD1p-MZMUG8`,+-@*j#,f0[R*Kbc8!e)A*SGCAPXIbLbpQFBE-TSAH+`TZ-"q*BL
+
+aBUN+JK5"eGUfUdm82MKAJ@)rIZcJJ-8BQBq3!"@8U%X5heV3L-m[ej&8EA3VRF2
+
+VXC82H8HmZI0J3B+X-RV`!raC,CK%Z@m(DXi@dXSC,9[cr%I!U@$629c8V@QZ'he
+
+rRL%4JhQNRlY2)GkqPE'[k'iqC"drVGFHVjEM`SYV$'5K"@LTT%djNJUaK(Pj#6K
+
+#%#S[qDcfL1j'D[KR-1SH,c3NJp9)RYI"B*6$SA1l'`*SLkM`(j39)F`GaMpj&p1
+
+bUkq`EkF$4h@fKN##5pl92S"YSej[E-dE'A#j"efX$Q1rXN3`36*r2eEC0q32JU`
+
+5jE03Ub@[X*q+2qdDXq4IJX@4-mSM)Y'"1Mkklla9f`+VbBjP)B,RjR39B5i0r""
+
+G8A1*4$B6jA6HXZ0Zja`@bdL1-Xc#Jihe(9D@AB[JaQ'a#RS@J6-Z"!BZ[+82dXj
+
+p`L)N[[E365lKT2SB)KBjeAD+G*aBaXIkC+c*F$l@hQkbjk1hea8F'H41e-IfV*P
+
+M-pc-ff`E"#DPdQ,K"b+(p!1VdlJiGrpE2N*%+1eM0j0IClZ'03A5F!5ZeG+BYk9
+
+[!BqP&`Pj0#"ij-ZHFIRacS0ml5kYEm2%N5jS[N3GD#9a5&rD8P%!GTf@[ElUlMe
+
+h!KI4+kjmHrKcZbV"V`mrAXcEB@p@S`ppYbM[aZ&G$(Nf1RHpY9c5GacEXU*l3`G
+
+i+"XVM!(-RFYZ*@mYLkK--X6l)b@(KH&K4(M2b#2[@V2rkBU`Jd"2!)"4E5S[r#f
+
+FdiA!&IQ"'m,Hak3E8Ze5VlSKr2E8$H''mMHq6XNKV,$m&-2+d%jKVD@B58pVBqG
+
+RKh6[#[28pU1M&229bPZ!19dk',iUKa&Rp0!fJKp5XVEC5fdpQjAlN!#YNJK&qD'
+
+S%5kC1*mUSee9Tmb'k0F-emGj18A6-PA[mdN'le6Y$NBjMD[DRf[HNfrR[*Y2%fd
+
+&f90LG1qQ2HMXR+Qf61%Fea0[DGpJXr#UMZ9#'UH1f[!mE#!!ZkA8QI(l9Y3U9Ul
+
+&0i@h+iN&f,BSBP`+1&QR""PR6!Y+`%Mh"CAfHXa+VjFahjIA"hrF-Q9MLSk`L)H
+
+ClNB'IVhAUbbLhL#+T63h'IJJcNIdK1GARkN5)U$S4Mb'(BImBXQ(C31qSeAXB24
+
+Q"YK5-6*MSTHjI[kXGMQZ0``ZDfaLr(8L`Vr$QfHfZ60aSlHBBl94("84hbA#QPk
+
+#k$R"Gl%fleR"9qSiKY*BpYa+a`'eX)9[a59S$SZ)!1ekXdeT[+EMqi#cQNLQl2`
+
+,T'%Pj3,CihFfe18@@D45I$SikiK[d#iAp#CG2G"a4mdr5(a3KD8ii852"Ih4IrB
+
+Z"!Yp@eAf'$(1Q2&)e28XVp)af-*%$8$UmK9A-XPeGPj#r[LDURVTAE"plb4Pm0f
+
+#TV1pcF+(5a5[eF@[IP[T#`pPq5m#XZ39c"5Q,QJCYUd!#aiU)ME1@AK36fl0d`[
+
+jkN,0fBl3XS@G0)mCf`CGMLQS3@9aLS#+T`!BRRSch8,V$Em)5T,"D0CIp'2SfPM
+
+%3DM&ZEFl%CDV9+Zl,Q0,N8i+fLXFapXFCTrYbFfZb'59QX02hZU1fb`NEAJf8X"
+
+p)&Nq"9CVI0hYkXT8Pb"CKh6b0FR$*&!-+eJ,j,LNq`aflH%B`UeUUfrB)`XV3@J
+
++L[V00#3[jk"f+*[(5CB#iKHI*2X%5`&T!LAceaB'C%83U3dK%Z1kSk5iAAr8Kj%
+
+0V*h[pRc[,mi$@F3p5RTIhX5PHZ6)&8Vm'RbiT8h9!K6dfCP09%(fLrXqS&(CHZ0
+
+NSdfDMl("X%NMdA@a,p+HT5MIUh*CiG@+DNB+fER##18pkB1*FI-B,&-D&%9C2ZY
+
+mK1ZYZ&A2[V6C1D6!9NJXrfP4ICJqikf1m@-bM)-qj2)SMVF%p22S+V(qfTTIkLr
+
+4*"hV05DQ"*`lp*14P4BLkSA8R0e6DAXk&8fYkJbD%,ZJ*l9kSPM6Vm2)X1bC+$%
+
+he2Y1(04`e54qEm-hb+e6QEkKRT!!&0m3P!@ihT*GP"9N@dCd`q'r&H1Y&C+h6$M
+
+A4I2JHFkbPX08D8KD"3pYLQ*a'60qY6AP&VNkd*lB[m42GkRL8,`YrC9'*CT#e4I
+
+)JM9rIlQfY(4Jh8BC6h*L0lbAFN`*#R)MD*`*MdLE2lJVCq*!j2JP,46G#Y82,4!
+
+9TCkNN!"BT6VlHapE(`cC9ra"4i3"&fK8ZbJ`5G'eBp"Z%&84fKeDY@rcRfAm'fY
+
+TC'S"dEVV(GDAY[!h+-mIEDJhVF$pDpV$%%,+YH9fe%63)M1-qcaN)3MpX6Tl&"H
+
+d`hEE'$jJ)BIXIU"@%1m#``ajY3[U'd[e5[1*9SM5)%QU6N!"R%iSqG(eV+`mh0T
+
+iQEmRYEP$)5"B(U4ShB%J12X&KQPbG`PJi)$flYSESjPmBfMCHZc90ZP,S1#Mq5&
+
+2TPYKjPfUK2`#AKCBabTAFZA4lRjG%CV-dBKSeH,%d'@-YS8(9Rc*)3Rp4SVi3NS
+
+K%Cf5ecb0ETTQK!Hr)c56iT9"P5)eLqr+,IQ9SLpkLRBNBLl!3C9!aVD1Sb9Nl"G
+
+)G4Uc#NqBKAUifJkb+&T)IpZi#cFCXmQdA3H#+M2Y6LqQCaEKVI(Y9e(LT!+%HbR
+
+XF9acSV89X&LEF#5)%T3URFVKUFV5$`ZQKAl19Ba)fG$@e3r391!QbJ5rM(!F9eC
+
+JXRjmB(Akj!6c"G64fSaaEp4A0UAjaae02ZN5"1lH0qm['%ifElRpCedq1CiikF3
+
+1",II+[hLl#&m3IeH%DNeq+BNZ8Y9h3@q[4B5"&XF'lK0hCHlH"2k&$@)i!qc(AC
+
+2BXa&#+Q,&ZN+'BMDPcDVY#)K4i0cVP`@$I60F*!!`re3@S1dqH#`*QThA0N"DSJ
+
+4EhkUHHYAT*,6Gie1VQM*k-3ZMiE'[Mm2pHRQ0V"Gp&'P5Va((a4+&%QSrN[E#&m
+
+(b+M%ejZj"NGRpTRK)*+U99[$lj)LY&Z[QIM$i`!YLj5lXU)M(*eEe'b@pBf`iU3
+
+mF3f,U!m*PbAI3[!aQd6@05rj02YD$Pkb$eQqPAp%fMB+PCS+53VkS&,GfK+0cCA
+
+aEEF'p5Ye8(P"Z4p!Y'L6m8AiNMr*JcH2)eJUl-Sm+%PjpV*5Uh#*KJ`'cIVmZhj
+
+[CC8'S@BL%GlhrVTATGT2[QG%)CpN4j&Qi%0rVD-ji4r3jpXP(Cf[Jj%H`@Pp881
+
+C0GTP',`PLLiE65fprMC6RZNk9P)Y,Pp5X4+iS9%b&#*XRmKYEId3aG[hN!!U6ef
+
+dQ,-PZ4LN44icq-#8L!Thfm*`VriKFQ-PM,l&ikf(!VHF91P6R9lLX1(Yk`p-TrD
+
+Yb8%mjq(2NP+jZh`F*1G#4E[la-,pY!D@Vpf2*E&G'Ik2hiRE2NX,$BrcqDTmXak
+
+ND80d"+e-i%&Y04&eV-!2$c`NCr2"3E(UkDXH%8&8lD-%GY'q@Vk2rRap5Vq'r"$
+
+ePiBIqaLGalGB`pk`qYaG69j#iB(4dG#%6MIlC9rQQpiXk5+-RUXVhr&I`VRD+Vr
+
+FI'Bjbr8icM9qIC`VFhdDk%b"JUJ#I$cA,j)MAf`kR"M@0S5d9hXmmM4ICT%hhfA
+
+A`#LX5$QdIfc3a#!$`bUKDCl!f(85*+"!8%-3QZqqp(`5X$,i"YhQrZ-YiG-MP50
+
+a[(fJe$F!Z!Lbii9FJ!*mLhh%4KiG(MfiJqAmVaIkH'UZ-h'1#f6hf5*kd[0m(Fc
+
+cM'm5T6UIUHrHF8EAC6mM(EHZe&IdqNVK`ef6Jq&LiiN0'ZDmVDTj%,m%X-!ZNcj
+
+I&kM@NFCja!NF[F8lMe-Z[TchMBeJXZBAbp0G6"Vj(jTm"jXC8A5Ehe8lB(XaQ[r
+
+f*M!*Sql3e@LfPp2BqmZ!iT&qmXFEmUG0mSBPFq0dhJbNG5TaK8m4+*)%ijpNA`"
+
+q@h!,L@@!pE)F)N4"Y4Z&m4k3!+JJ55$(S6D*I"`-"`JfAMh9eD$!k(qC4*`HVjP
+
+%TVK)3YfPa88Af"&SBKC[jb8-VjakGPhaHCkZMhYa3pS,p2#c,k@GIEHfI(ZB'N%
+
+HdC&Mi2q+lUeBAeY2%'pH8e5NL,G)@UHU)C*6Qp5YMN@U5$%SMNS5R309%C!!La`
+
+!S6S$"b&QNecL$16Bq,c,f6*9N!!Q"Zd*rm22YX0$B%hPIpicPG1M!LaGU,IYQi`
+
+0Y3C0iJQVl6p'AU9dLqP&aZAB@dGBM")hqrb-b'Kf9SL,5ieEH62dXAMeLFlAPR"
+
+pYVTq&0Ni4K8VNRZE[ifF&Fk5)I*BfhZLYbiT84qpY`L6*QKTq9MHfRmJ6ldpDPA
+
+8cVCbhPT`CSJC'L(KHPa[h@qFHlUmkM%5A&P0pe'[KI'DJ@Y"em8,kVS,GpKm4dk
+
+2NYq3!*Tq0YEb%qFUS1ejJPYkG8`A+EPq4lX4j@amG%l2f+%aS6b[@Ak!TQ3T-h2
+
+'U8)GPPUbPXKARZ'H@P)f1[,5YI(Y%SGQP(US@8lAZe%qSV#i,)PH)SU`&R*Xk8I
+
+Ha$G2V5pCZTA"(4*0G,T4!"Vqi9LGEk$k!qGpT+2f&EfX9PJKJp39)hbBh9)IIDQ
+
+YdQ1llrLBY"GLNI4,TY8B9+VbARmLNUUrikd`B[6'3c`eG(mciNUcB4Va[X`$R`&
+
+R#L995pj'H@cRE!J4r3UALBJeL(ac5pj$bqFCT9c6NU#&X#IV*%Da@hDBjC!!i&q
+
+fNC'kYS&JGClN"H8!mh9lbLSdNra1BKC&$,Y!@5QRNJRqDq'h(r&cK099c2T+QfG
+
+#(2j&cF(RG,cV%"kS%+bSkrAM[@Z*'+*mG+Ta*!jf"IMY+396,mY8`GT9S1cM9Q!
+
+0jeR%`pp92iqmFI9@%5[r6*2EqUSrd+McNaTN'8cVSi`l4'iI9h!I!HdlSSRdRM6
+
+%*emL%hHIBTGeZIQ3!#Q6r#Ua(FM*&TN*9[9dZem'TGq0A*LS8Yk@jec6,"V8[AE
+
+(V(KTNAfZ3E9Y'*D*Ra2Y[bRX,4,`6(CqhS)ZlImjRGS0Z$fE3NCHfbETZ%8qceS
+
+8LLl"L4&A"KcIX6qSb-ELBLNkLDMGIYr'H)QbS2qN1(6jkVFMUI685pe+8!K%,lV
+
+f"VFR(Q``FAjdep$CAHP!+5Alq&@-DpJkm`Q5N@F,$ihAmm6hCac4)NHp&hDHk@!
+
+$A[NVZlB1RH)'-AU2Z,B)lL-)-Y)RD)[hSDcESZ$AFqK*rj'c"f9"cSHGjGMP%F8
+
+H[Bp0TkdQ*bqHMA(1K3i3r6CXR-#!j#[4cQNd!Qjr8)HAP3PSP`E5)-QMK`KGJJc
+
+B1)13!'qRSqXB"Z%"+EaIA(Y,*mFFk!T'4r&96pZ1-Q)#Dl(lUk8"Sr'bDJh)TVY
+
+Dbr@maLqX+ZJaGBqb!TrfGM)*2$"Mf'pNEL%cCNcI9#+)F3q'%5m,-,mKGUCb*HS
+
+A2KF5@3CTYF2Z05RflbA)V-G'iHX[G[Zf568Ih$Y8e8aEj)NZJ+9TTjG@8j!!6kY
+
+'GJTp11[[8F-ekRCJb@`[3SZhKT&*Yf+FHJ@c0Ke+ClP1[0Pk%e!-bSC2N@4ccS)
+
+JhBAL)MX4[r5+U2@J8bYml33CG2j+*FBGK&lhLjFJdTQ'+HRJlA)qPfF+YJ`CIB,
+
+[BNAUa3eJUceI1ppDE)6j"RN$qDlki2mbpe,d`a[miQQq2)SSr$(K,%lElU[Sqm6
+
+b0BGKh2H"ir"hAc(L*-rZF'1eXPMHiRJ(Aq`@R,INYKq0CZ5eE1L9E-%0Y5)Pm+5
+
+Z1"dh2jSd,4")pr5dl$$&iS0l0[L9Rmdq[@KFf9qG(CrJM3IRiI5G$CFPYT&`a2F
+
+Y3kk3!1'Dkj9P0(1mI0VA+N&A[d5S#mFkk$5a#DZGlmM3T,R9D(DFA5Pi#Gi@jF+
+
+h-HJJ*ST%"BR#e`fHr#b1FdF&iIGci"d(JB!P-Xc8e(kf%6[aq1MU2S`5rP)SVKc
+
+[kY-RRdqS"hF"A&8ij@L&H-qZS$-CbY2@21*5Hp2Z,2EfqS-qQ0q'c&53!%VBCXD
+
+qM$"`XUJb),%iej+9I*l+#FL#Cc#$GkA*l!eQ%(c-K%6"UP0&*36RlYe6B)elp`!
+
+&BhXK@#'b#!9302rmE&UD"b@'#%Hq1b85MPaF9)YYCDS-KbX4m0&kEBm%C1Kl18X
+
+%f4e,HU-,8B)&ZNH,AlH[a`jFPV1V8Z!SbK'5aB0U(*,X&-CH`X[2fmU$+a5FiXr
+
+"U'RE[Yj#XAbe139'jD&Y)*ph3HqqIIJal#Ih4-eN"rKSUV3cD[IqbFcL6GP-kQ!
+
+@N!#il+pX`5CYS4EF`X-'6jjQh@&f!*C@05fRYNme[54Zi9DDq9jXeVc&BYkAqNf
+
+Q+6UN)FCJ@4`IKiDQErhN3r8R`5M'cJB)hK-aR0X'&%MEGE2jBUpG2')bMdX1H0L
+
++MfaMAJdV'%B&i0'IUC!!'F5%Z,ES9Ya3TM!)JjEKb5Rl9I@i[GLh32HTX[,i5kX
+
+9r28rk5Vc8"35[aq!8U0Z8lKUQmYa2m*+KHN'`C&5DNCF5Fm"2CaYqZdU0-PVPQY
+
+jBVLR(4`+rQ,mQ41mjNq[GkIT!LrIlFbL+NbbFUPcSaLja+%QHhd4)R6B#5`m2Lh
+
+*SAjld+4j0G5$`Q"$S&0N@9UNSG&`$%T*aG9T6(0e65CPRU,*Qr4i3m'HjP@$Yp%
+
+U`(5Gf'Y2'jp6aiBT*B#A-NEXEIhCJ$[%N!!R&+E0aXU[LFe-fT)Xpj!!XThP8kF
+
+ZjLj26N"5`@Ea+SGAf1iRqDCaM2$c9E16Ip9!V1fC#6&AFAmaA+B"h24MGTI[)4N
+
+b0lRd`Ekq1Sf66%Vk%r6(#GHl,D`Gr@41[ddcl,8ARdN`@hAFHEmN2ikhV`#&)62
+
+c"d)![8'-S%hXh([C8jXUj(Ncp+9$"6fEpb&p6(8824eNE[IR!pe1$6D$S'Q[eS)
+
+R0pe6&kJ1!H+PQh),VR,-DRhGdHFGbYIiM`caa0(VP`amIB%(4BpP@3Z2C6-qJ)R
+
+Mj@GjkFiV+9E'mjHBS33X9qiE+5QD12Q0ZjPN[QdRR2!9ZL'0'KlE5M-M*DYl8Bi
+
+k[i`1-M@Y!hIS(181BUEH3HN$BDie`Z@E1KVU`pC,5BH`adYY4#+kRL$&LQG(!FA
+
+%M0XGMqY#MEYiHYHST"4j-Ai"XXa9PeVcmc(Hr$QZYj&,V8rcaj&C*5frp)`mX+R
+
+b+'k'QQ,'qq$h2`T&jccXa1DTf3qm02mL(idF%hq8GBB"kciBLk0AV&dSKr)$aCJ
+
+3GG%R'Z("cLr"1eUK%SB-UqBPQ83K('Ji$9S(2AGPd4X0*+i*GCQBYr,UAF,Q@8m
+
+5*V`-@mb'#fiK`('KZ!i-#[TH[`GPjF64Gkj66R'N'-3[0GYPUZ9h6eE!UKl%20E
+
+laF@!fp'(P(4R-QEBd1TchVi`8Jqmd0qYUk!Q+F[c0qZUq,pNU%Pk%G"l8KE@86G
+
+,0bB9rpkB92c[aU3lY3ardf'rqU9@5@pXY!Ra'm0hE&1@M,h(pkB,3U2``ZLR3b"
+
+$q`)BHjE+(k!+BG`B4TL)&Ne4k@JYjLYUKHHKU8)DjZJV!i81L+XFpU1P(kdce+Y
+
+85ebVb$JrPefc@'mqGE[%-22D,iea5-)*(@B,Ecljp9`mq"k@(R*)QJ-H0jHGae6
+
+(%[+0FeiXQb[e[PR*)Y+QXehT4I0cM2Var1+9(Z9Ci492ShR)!M`2kXRr!SYK*i6
+
+NLrEYk9F5@TkbPjBe!FbC!2)FZdqk3X809aHf6eGll(3&F*k[qN(aXcN3e$39KLh
+
+!$Fq6AfH@KH[pp"H0,Br8fT&,NKfD"fppcSU@9dp0G4U16!9Cik-4Xlm@04`'#aX
+
+qbcCmN!"G(D%*Xkic[UK$,Ll(XCSiLrBhX@Fd$I"GZY(8iaMSfHa,1IGljHG5(1S
+
+P&$CMc)`Fla%)G8P-0k9TM`arP'[!INClZ2#4kZJ,HR`MYGA"KF3RjXjB`lDccDk
+
+`YKEDGq%3,D*pF1UHldc[##LqBKA1H0``HBVN6YH8AdNTB'(IGQQG8KZAJRB@M,3
+
+6QN'9MiN0h3rF@*LSe6XIVjGeaeYBA*Tb[+kU)e@-dpcCF[l@eI!,IN`YHHr5hEG
+
+Q%'[&i!`2HGYXQ#ZGHK9,-ABd8!k%LfJ%85Z"Z$MffG5CJNk3!""'pYf1!pmmUi4
+
+FYq#)5@0H!-[UR1b+VTH3!)$SKp3!lGS%a&C)FlfDSXCeE5R'&`PSprj36a-H81V
+
+5E0)$EDj+Qb-l9a+-$9epFIK@EFf-F6L[dL,`'J@Z%q,04j*R)!hSVmj@$e+ml#R
+
+-i#[S8&!GYqqb(5H&bmjh$(8-8T`!NQ4ekj6-91[FX,qT8e,9SF00DC[bN!!N0NI
+
+)PS6crr+3!$ZCQ[id5#&pac,UB$*$'A!DUV'*D[DCGYmm)8E"Q@dL&FdD2@*19Z+
+
+(PCLD,c9*`Lmdf-FXR#AVCT[kjI)Zk3LcVemkikCX`V3XhX1'&hQVhJ8Lk%UeUAb
+
+SbADF`K(m0X&6UMQ6MJffe9BN(5h!!b*MP*N%4pBIiQAZdCcfe#BAhjHTXET[p&j
+
+H%iA[6Lh"0LAhPVi)RXKp9c3*fhCVQ3M%rIPmdP#"Sj&##N'"dm-E$`)0$LETC)[
+
+#BBA&S`EkXA))DKV3Yl5PENkPJSZFP9#%ZDE-cXRD6Bp)jj!!XJ4J4p$YjF8Z(Ec
+
+A`C9q"b&hN!$+AaDSTH,@'h,j8&[-EShpY'qlrA@lr2C&XbDedSP8"9FTU@CiEjT
+
+9Y[SP3$!"%+A3q8@1AP2U1ch,!R(e3Sk&8&ZRh&GlLa!p3V1p[108AI-P)LArY&Q
+
+Icm(@E#'$H$J,m""CY)!!aXpRhlT-D`krHVI$VB4#!H)6`a)D&kPG+Q`aNL5FKUe
+
+T+#(%3GH3!13EI-RacD6UMEphA(6fQdM!a6i2EllG24r0c9e$&4leHd,k*65A+)V
+
+l+#c&Irk*Z-A,mbL9%[BY(hGQ6Kh@*)D45(Q3!*DX*mE5MdJQ!@IMr32LFlDPDAd
+
+0bqI`$@j3A4he"X3kVZdd4F)NHIEDiE&QAQFRjl3p[5,9[IP&NT@B+jA29kM2$(F
+
+8C%pKHPEP$KcJ)2'Q*fIVUFA)DM@V*&QkHR'$Yj[fPr0a%HQjjh'3!)d0Y$J[IGe
+
+q!A50+m6`cE%5UR9T"AC#33V`3#bV6f4r#J`[S"aa$&YL!MmcJA[(XUZ&14b4c0r
+
+Z[`k$L%l-aKIcBfr%EYKdC!5chr2+Nj!!$kP[k-hX@L#&1Lm99MN'R8lfqGQ!ml&
+
+[K%'XDa4lNH$6D%"&DJej9ZTN[GB20*bXNHmF5GR8T16*)#K`H!@3!',[*SM0XA,
+
+AN!#'TrAic2*VNkF)8Q9,+qpX+m8$SaNXUV`(,dhBr)k-"!Tq-8jf"k(IDH)8jk"
+
+d-E9Kdl%6`PDDqkpaH4&3FB!JSmq2P',j+9)C*(P9cZ'Uaq6qdEEdfqUAYDGD[5#
+
+apNBLQ+CV,kab"#5IcTA,@PVe8a)8#e$TSc!Y%fl4db!8F&+U%"3894HU1[9JXD1
+
++E0F"#M-'A928r4KKpech!+(Yp++9BLG0(NIX%NakQ9-,E*!!F,!De-,fJk1SkKe
+
+YC+TGlTjE#[SI$Ee``VMS6")X`Emf!VDDM0DP$kbERBSDF(`"Jka5cr!bhlTqQ!X
+
+%XQ@21+"0AjG)NE%(2'JJa,*LQCp53Ia%5REZM@b63LaDhQ!S,eX6Q-(j4&-6B#*
+
+Ca![N8Ab@l0Gi2`DCK#dNXR"&QZk"II4SfjA)m#N%YQ@9d(,ilTrb,LmG1-a5iM3
+
+%Al!GVSGHKb"j'13Ek%m[,Fhfd2HP8p"Nc3DEIeaYCL&[d,cQbq6$&JYqj%LE6mM
+
+C%d+HiBJC6Ih)fFf#X@+kIS6U,SY#K+'krDd4i[BTSNL+4Q82hJS#CEq1UUfYl'X
+
+F+lbi@f3J-LJi3X$MTAUD#VH,PlF$T*1,&41i[3'8$X"V'leFDShYDV-,1A)%UmH
+
+'iVc0[Qmq6lRRT)Za&-XZEX(8iQIL4!"4BHbR980P)e#,fVee((18'%C&Rh(mI%R
+
+@G5KGA(2,"qU[%VMVer%dXb4Iia*K&!,XhIZp!eB)[KCdad)ec4DhdffiESqFP(J
+
+lLp8-C%dqEcll(R3-[fDlY`c6'"qBa!EP&#S8dbTpirbBRT+AI5`,)EEX9lbkl+-
+
+FY!FC1`ThJ&LZT5(Yf3%@9M!Q#!Ub$)irV2)!kL-8bj2)4&0lH4)'(eLVPG4H@,I
+
+jK35NMV3BA,EdG6TRQ#P6'ZYVNR@+@ll2C%0A'6HFS6!lI++ajQL#1l4c8K+6XHU
+
+[5le6pBG3%%2ST5&%lUGiD[rTAC!!(N$(TIP5&H1!d0SqJr@"`J&&L0'$`!-532e
+
+*pS*3#*&Zp2TTX-j@*iCGA+qd$KpcVRPCpSI1UEESYbBU8RR3CLIBAe6RqerP%Z0
+
+rPXJ@FT,+c5J8K&@fB@T`GihY&5Q5b(lG-TBFP'C*UTQif)XA@E,hSqALhR6MkGV
+
+mA#(9"U0U9""PIp,kV55"iFbcR$&,8pFicA!6hh96bST4ZGpSraXThfHiepdD8mL
+
+[fmSd!-k!8pbY)m85eK[M+jFi!J%D[j31CRmpR`#Y@Va"9,-Z'H'K$e*kj)`"4'-
+
+Uq4i'Z'D6G))DeU!(K3Hf4lfMj"l(,**lc$pLEc&++X3iYc,d%Md9!LdZiG+Mi$p
+
+TI"BJX8dkf6IZ*bmV+kj`c2IBP9Bb@SNp@JP9TP9aQ2*f6ZkKGYb)Gf5BhqbRC)c
+
+@j1UPfr3l5lPDj8Cf2qa`Q(G3iqP`@B4H`(GC6R98T*PX&*Lp*KkBD%2k6kqUq1m
+
+049P1cRmr9I`ELeZAL*K9m6qDLBTr#i)&aP6a$rYUfTKkLpUN,IS(&#MQd(A9MR8
+
+#CkG4&pRfUpValVITGIYCE$8kr&rh+M"%FNK0X%@dkc,BB-e"FjM"*%H5AE"Ham6
+
+jRTF(3m&%%U)U%*-lip`hD1PLFM!G0`FC&bm@"e90)T(!F[qrcT)*Rb(0mq6bDN5
+
+[AdQLFa16GG(%%eAdK+f#M(XNeAH5CDF0(j0I6(p"F`-,F2ra,0Id(HjDJCj3)-0
+
+`hDqRU+C@CY1IE4+ZDSi"pi4E@rf(MM9&MT!!`5leTa9rP%-YM-0cQ[Tbd&6E*b(
+
+XAE2&HAfHdNSir'*EY4c2ZH!ek4''P8&A2CJH8CbPrN&XQ0IiEcLqK-8%AlT0Bp%
+
+1"@$$FSU&#MCUl41pNTBF3-S-Gk9qG)hYYMVIGpbJ)pQ&6m*Xqj2HJT(Ca!McN!!
+
+lk*N"BK)rf-![C4a-U$XI0lA2bT0F1(d#pBpNBJaF1A0,[[qFbZ8'LeJAr#T&DaT
+
+U8f9@+l0U`U2N`4&44)S-G6fUKeHL%dK)mU2ZQ"H$X#Ta2UkBYi)eP8ZSF8DlZb!
+
+#QYFGj6$"P!(4hVCH*"1,hB(59&Gkq(-S0VGIEd&X2bUrB(UB0pUS[MDMqf"4T&R
+
+6PCaQ)lJqlFE1(45hTrZR(6fr!KJm+N3ITYdP%JMA)B@2jq-eZfL[3k0C6Z$YrGB
+
+U)h2&RmNj+bm&r$[*#$4S9["BHMJh"(r5caqUF)e"UrBD00Sl6&Zj9R!DaGC#AP&
+
+kEJ"4d(mV%0!#fGiIM2XK+ZNkejqXiQh9@dcbC$pjVh[,j@cdaF@)[[ANbhKREaQ
+
+2+%TXmE99[#D2SllGBVX4e@NjPqk2HjZ"$K6V-Eh@+SqfF&A%jR#N[XqljbMX+)4
+
+cdEMB6L($!Ii8k0lRKS%V[&HI0*fq@PE@RTBF[8SPfXPPc2Jc(@#hr1H5,[jETM$
+
+(rEFGAI`E`95AL"eGr)29Ef*(&rq00fCm4aIrq)`INj+qkcp)5Dr,b`D#NGiSeA1
+
+Q0"l2`'4ULQkD'a52%I00i%3H#0,eCbj-9a&Z"R)ERI)-&pp-j5GBiqN@88*&UN@
+
+B3,KY5)RqFpb+rpE2PQ(pphS5lhpY!!`HMPXbBmAI%c8aBplIkF#priX1r(hD[RC
+
+ULjLDbe5+RmafH%M$RTrJUC8kdKjpHeTih-9"-Z*PKU*`j0GMDA$P58"h'*d6C$P
+
+L3e2YiU%LX-[,-SU98+h5q4TYE+KeNKA2`XV,-436PiJ6fj[bc`VIHTVm6pGF,Vc
+
+p*JA!e5K'[#q!I532AEa1+*SJ%m[&%pm$(K9Ql@EY)SBp[[[[XZGeN5X+[T%+F6K
+
+hMU,%*"VH$K,a&[jk*D,PB*ZYH[$EMIb+VYKCLMSGH5jMb*B&ellf*,EISHmp5Ld
+
+E%2US5"eA,JET1q$bhPBhiFV"TBlM+[fXQTE(YHQ8&"(""N-C-382R82'l!995[4
+
+T54j4&XlK%LHlBNcG'Im(UqrRVeA%I5hHalVk"FbEID&44TrCX(r3qEk-&bJ6qeS
+
+mkLlXVlmik%Kfb)F2@BC*Acq99)PpdTJ46f")&2aSYk-l1C66*!H(0r[+rC&eLTA
+
+TDmX6p8,h4X1`qrY+adG$9rmRqHBh`&266rfRml"kCN#)rAbb4jA*T`pUiN&IT$-
+
+V(J93k#BhI-%Y,4C8FHLeMHVk5i-+VJ*$f(IK%$"E0f5HEXpN$,Y4L1NNRUPQUqb
+
+VUk`BGY*dR6mh['['[Z9EZJ!QLkZYL'2IVjIS!qPhQ6p@9cY!'Ci[Z4SqcBZCPb)
+
+USdSSYK!94$0iI-mIL`HV1kSIkl,p9MaS(@IV9BU54F,E0#D1JDVm)#P3&6TKRQU
+
+C94N,,,!V8ZjJcF&0@dJ%i@l(R"-*3&Lh*&(B%$qE#QhUJ#5bP8e(8+G2(0`-9LY
+
+d6k&pEK,-13`U)hRG5#-552VKbS31lGRf3mbcG%V(5MpVc5NjNI9a`[@QhcRIbaD
+
+I34(5emqQP1NUYK`M%V,+[PX6'm[i@&UEK3GhJ$,+`6"["P2M1TG5$1ccSp!#DUY
+
++*l2U9Z1(fP&&3A*+$NrQ(6+d[$E@+AbpTIj3hq`dLaIkNE!dpRQ`ek3V8eLKP2'
+
+iRjGUPbCID!'[BZ`d!&"frQ&cR`Ef`dMNVY)UQK%j8ep%CBAPj#25@K"V0)QFI06
+
+mL1fK,*'Im%EEaemqLDEQ&&@H(TPi[+"q+E&plK%PbkDMRN9&IL*1YAC,Ff#i-@@
+
+BS5'R`UK!b)N[4C(0D%1ciT95[K4(+`6b4[h-N!"`GQE!VZ"dUTk"NiCa+@2D!4Y
+
++k[A2"jpX(q1Iqc'H8,4qXV![Z&3#8V*"F5kLQe8`Gm(&N4ETd,lkhGdCf"(eZ3j
+
+)k,cIb$i)*[-e6*hHV+khMr5hI"aE*R+5!RLRPU0IUP86"ILcQP++&YEH#RN&p"N
+
+RBk9$1+#KPIEeF[,!FUB-IBrr!08%pT@bG%P))&98DMVNLmr'i*GHCHH-&f'pp[`
+
+ZR0Cf&rDEkp2LKaq*R$rM2INYMKLfhf+rIB$!4jjM-Cd,`QA6k(!3KTHEQN(eh,M
+
+N'VXNVbcq,1dYlbm$6LH'mL`lFL#(iMX#kSh66#*Nr(S*1T!!lMQikKG5+2%eY(D
+
+%E&k!YZ29285liX"J)2F5$KjH@SMT!JmUG@,4I!AR%b![Jm2&V$CC!mA)%06j!L9
+
+!'hRKLXk-,B"%'b2QM-jLGM!F04r+6B#C"TBk@03R'iiQ[B#mK$ES1lmT*m5G%GR
+
+S9#-aP&Ne5%Kh[,k&8!YQI[AF2+N1Q)-Kf@Q`&XmFe(fN#U@mqK"%$Fq[9XbcAep
+
+`Vl4$MP6mbqTK-l5+%Xad'A'dj,dJ(a1Z#8&Uc0+rRi"mYbAbbi"8CNTiE$CEA%!
+
+@Qp@'@N5[a%EF,&1D#-@jPBK5`GXHYpA#kq#ZQ8rqRK-j8lJ!#YSj[EaB3P*MXKb
+
+lDjiLJRp*@,A0+5+$cPdEajUdJSJ#BTb0#idGPSGZ2*U5lGaMS*2l9CR(JpQaFH$
+
+AN4hdTdCMLbm&Pj28)H%Yp#1G8C44[U0De`c4"MLr9K,,DeFbDSC8Np5PUjj&"a1
+
+rV(H#c'p"`9`fXbeKF,!rfGr0IBhjURHK-*NA",CVQRJmXDr1I,bY9AC$X(GZYN+
+
+DeUAR@#8R)IRT"bT2*EM%'S,)jc33QPrAZd``Q3"""FI!6p2*"iQ#i#q6frcc+`*
+
+j0m0AafHp@3HB2r)Hq5jfCR8$#IQKlm1G`4["6clL*SmZaI[kmRlQQS'QXDD-)DX
+
+*Bp&bE1kb,KK13"fk1bPYHfFCdSJKI#lKKVV[8F4-c8,`VUJhGGY+,fXpD*6ZfV'
+
+'(X+8(JU8%1'kE[m"C%5q50pVGf'IqSa[jX0Qqm(iJY[HBS'`S*[EhDml["2Id#E
+
+A!ma+X['k-*m"%D18Rp83+RdIc#T,&"jGkaqZHV1blc4qb&&B9R90NcIKC8Tp5%[
+
+0#U5IGdcLVd,9rkV3bfm@'K%A`$G0TCB1mFba90m9E8Y+''*U&pV5J$dJS&,JM+I
+
+V#-A(4LU9rG(qQZ(+r'VR-`d6@'bG+,F@-6LD'K#NkPQlj+"R0+Cq1Z#R##$JH1F
+
+3RQ59Dq,kd`%AAppJ6-4iSM!q)DaKB-T-I'p0Nc"P+b-k`YY&4ArRBZ)ZD+rfier
+
+kZC!!+lCSrr'ARE2Ie0%-F[80JN8cm4jEm3hPI0UM&fcL*(ErhAN2%ZLT102NG0j
+
+B(59B"E,diJ,SK3pPmGHChV%[e,!@[`4'J[,A#6YS!bci30I8#X`BJMIKPYI0UXN
+
+f#Rk'BTYrPbTl%9c@&DPdiAGr&ZJ3%*T"YaKYaYhXXrY#dP$aNbEk9q8JcQ,3%$m
+
+81d0"m,`IMPrFQibh3+fTfr"GXLP9l0@1lbk@8"9,3aimDi2ffAAR9+il[FG'E[)
+
+B0jk##`0ljSZpX0-)QP-Br0Q09$TK9d4i4'`9bV!FG`b!irlHB#6YJlHjSpjj95M
+
+&J)E@4ebC(f2T+$-M$Ya%(FDKUL3ERh`-chTNXXE&ET8#H([k"$l50l)GUGF46Ia
+
+L0'Cc8$@DaU(A&rAS6"*4"rZH#NFHek9Zhf&AUfmUmqPA(9*H#UEdR$kZIdj3qRY
+
+[V'QMA%ALL%+8Slp([NebV,L8q%IV9X"QR5!-+DUMU32lB2"(55*!`U[ZBmhp"Rf
+
+Bc%aILlGqcNM1a[YTEdqPVXG$V$$AfpT9E1+'iJQE8`p*Jb6AeH*hCF9$q'(rLEf
+
+m6fap2K[YhIbHMMZ*-FSj!,[mG`kpM8r1q%bD[8MT@*[&3SP@eh0)6a2)9DXlYk&
+
+SKUjpFB`h*,f2qpTbKV!00T8k@BSIX8GmqV@Tk4UV$#Ml8!!Q1i&dDB9J4bK',4-
+
+VaBkHe4b(dPMG(pGePX-pc&MJc,3kC[!a[Q2)lZeTNf4&V1iedkG3%'"%*C!!%'3
+
+BiDe4+#+fIidaX4CRM@'kM@qh#FE,bFr%$(3jTmGQrKUc$Ai,lK8ikaFp6Z)6,%q
+
+hi(!imJC9Qle`NmUH00`IB*DrD3Zk&,fK$iYBA&Nl91Klqi2#cK&DAZ3QPFbF31a
+
+B!*r+&03JN!!!BY#*ZXjM#0HG8G'p#EX0S@fU6hDKD`2bqr!)*J,$*TYZ&FdPea%
+
+,-el*U&XIQ#!jP+)43AS[9%JXU-cC!S*Ti[QA)L1Fr@Db'cXjMjU,26CZ)rI#K5q
+
++hfR%VCH4FZ%r+XdqU)h3J,P9)AH`@([QAM'b%96@E2rm`1Sq@U[rI-ad9cAERNe
+
+M9iq4U6l"KXQHfG(1l'rcp32eT@V!HVJSa5S@&RP0XmHRj2C)'%SBYk!U5mE&22h
+
+-$U4KN!""P"+8!M0D#M+*p`%3PA)85Cid[VIU*RGe%9&BH6MM8"CHRfH#((8Gq`H
+
+lR(I6#TN0+"BSK#()C%F),-rij5iK5fpG*08XC$6l8Y%mbDPj!,,1)pk+SJ"D)ie
+
+60AZMJ(8SPKGd1Ih%9!)lI)e%V[R'c`-%66*6VVeP4[cpk5Va)USkU9DrRmkI2JA
+
+9#fMBp-)TLfckMAidi+9i+,qQ@HX1rNU,XiSjrGPZ8e&(D2Gf3Y26&!EU5F$Jj2!
+
+J5SD0IFm')F$m#brS9I*(#G`bUAfrc&(3#9FR8A6,c[R,0TDAJNM)2KUEC*!!bM)
+
+A#@d2+Um[I19LpY@ej(EXh``TmU,)8iD@6Q'e&'F96*1[(,m%IKe$S$X%PE3lQhV
+
+6d)8FFGdT@2`&F@ZV+`Sk@q8hTH!0YQR9Q0lI`d43i"ie`HhIi*UH5-!XGi&r8,`
+
+L'-!MEHYKUAE`8rD*JTPI(qV9hEASDH*Lf4aE(YH9`8pbLh$)e1Lld4Y6H-Y(YVc
+
+H*c%3(D5#G4pp0Yh[N!!rdNB4GC&%VN"Jh8lF8P2[X$8mP%4UEHPh`ZHiSib@0D4
+
+bD15#MAmF*&Sl-eSS2mFaCqI`+U1CBXKGNGcHS&'a[m%[[AqGfLiH8!5!VqUTF[b
+
+(iqVpM3Nm`r[[61!Hbrq5J5Eb4F!8p$mRTVhr`!2hrSi(l[eIH1$[dlDhdph(A+#
+
+c6pmCf9Z40@eI'q55eH0UZhqll[,Ji5)0b1*i%XA380ZVdaT9%6T056Gr!M'2&Db
+
+ASM8#BMerc*mmladA6"&6KBZeL9*XLZZ,iJY[T)-N6&N[FSKkC*E,aJ2I3r%L16V
+
+D401&pmC0pSh!SF#KrHXhM#qlrUmZp8ZZlFHZ+[NAPA'M*TGIkiUer&AJBJARcEV
+
+`KS4r2V*bPQE-X&,bI"4i6VLF#6CY8)c+Tl[XAjUEAKX0Gmmi&#2'GXp!VVP3kVj
+
+Df%l8I2%hE)ebP0cQC#a0KqVQ@9pe[rNjU'HeeA4iaDh"'X6Q"m$h56$Ma5ND$SL
+
+RGl06IfIcih3r@lrCIH4aHA`2F*+!15eXGbj+fIiBCkJRi`ETlPcdCCJBUliPbR*
+
+lXRG%3*YYPqf'BDJC9SV5jjPAL,+3!%63dq)#A@#MHH0i[&HQ&IQ,KIrcYADFIf[
+
+b`T(0@Kh0"2CRPb,R9ZENNP3-l8qqePml[5c,UF%Fh)[+3I0'a2)U,&48MiUi5&P
+
+Qe!+$+FPVZE-4KIVlAaf['QXPVqc+i6ed%H(AL4&5fmQ0B1)f%SRiXRmJY%"*YIX
+
+(bPrph$IMFh[eXB$RrSUT@!HT`4hmB6ql!6Pem0@e(ESR5V$rfRIZaG4VleLiI2Z
+
+!XIAUDpC6V"-a",ail!@3!)Pace**QV"V%Jf4Z4$b4J*fP+QNH[)dHLJ"I6Bm[#I
+
+AfJ8([#hCH3S,c1",I0C3N8@%hU$Q$i2XMGY6K"BXq!L3!"AT+0X%hc)+Dc['0cJ
+
+H9rC9kF$`dJ6i0Ve@jM3P'b0drm[("Za`q4[#'r0(HMDpS$@2ckrG#eaj#l")N[8
+
+AiK&-Nc938PX)K1)'22#&"QE3AcP("98&B0S441020VA+90bJ$#c&Z!6p,MqKUR+
+
+[kX2#P%Qk5[p%))5QN!!)Le9V"m%T1[ra&Bi8G+GL16j!e[5d(D6NESG2i+-4#hk
+
+HH!c9l0dT+BVQN!"c90S(MBI@)SX'9"EhX8@iFeH3!"&ifDd%Q+dp%-K(5`"LF4c
+
+!,9j"dP`m1)6'PFqjKljYKcldcAlb6Q)3)6#QQB8!CD&Yep%Z*fdTCMlP-feV%`B
+
+Hdj0FYpB9Jh-aT!Q,R"NB[jS!'RIU%8aN+hfq`2Yje,#hA1m5S`2#1CS-JVFL'i8
+
+5FD+hf)RI$1pL'fTEZq!$&i%aCJXr*35%QFbp*0Cc+aeK5!J"G,RaYXJTh*G((@A
+
+844*ZP*rUaX)IhPiqp8AUm-j-U2&NhBX'KL!mYka`3l&LS"5l0#A'*m!(LSi)pL@
+
+TZNErQS)dDZfa2qc#",P9P$(%h!'c!QGQ-i'r*TPe"bZhCfV"rUAp8FGFpYNJC*B
+
+EQKH5KGSlk)1'B`![Y+EZS)$R2**jlKIUB4+"f0ZIf5!MGe5ch601eL246X!ZS[m
+
+Up1-bFmU9Hc8qPJkUq)9UCH`M6%m&3@SbH4Z",L'hf5*iDXfC(KbLbP-#aQ,eGp`
+
+@1I2JEBTb("4#@8UaY6j(MJ#iTKq1)qeiKH'6IJpYJTkUr9Z1Em1SJfP&R(*h&PH
+
+ip)T[,lJIS"CUXDKPklIG-5UVbh!NH@I4BH'0DT[1EQHFY8K-b'@e!b2PbT%`UC4
+
++9SrZ2!8*L9@A%c8qpR,4GA3'%Aa42DlBGIRK&NE[N!$2p8dKr#8@*[ZAr$d-MFV
+
+ib%M(2FJh@)IfCUABEjmXpPE!8aHJ[PNLkH!*X$F@p9Fi-)jlr!5824LrC(q!65`
+
+DG2-j546IV#mi&PhiAShXBqBK'54&)8rhIMddi['9qH@FCiTC1CYK6dkjDC,3+c3
+
+09UjH5TAZF-6U&RklicD91c1D@I%ppj+LmQjf"5)N+R"EXr1@jHGP+P,ApBR`NL+
+
+BkG1*KrH&dVTE[jb*[,qe)8TS6CqJ@TQT*fBjj-"P*$XkeKPE#Xr8Q[`C'4KefRP
+
+CiA@K%mUA@aMi`*)U&8'A0[CaPlV!iHc$VmPRT4mq9pY!1A8%[6(KbSlANL8j8A*
+
+`P1+U31rULG5YB`8FX'm69L*-eBi&(09VK*ZMA`j8c"2CeQBf*Vi((GS0UD'`Apb
+
+#-GE5H$@AN!"ANM6PTS38H%EL40(6YP)dCAeB30p%(TE,!JP'RV6M"8N,f+Q`qPN
+
+1cV@Ul2i@h)eMC$J#96+,6)JM5B-LJBlNSqKra'*"3H@AmS%I(Ed0QV#QkaQ8r[T
+
+6,TRi-++"92iA0%#K0!Q-r4Xc&35Z[D1UN[R*H&bL[lcIc,2(5l1+PVV*LMeGp-H
+
+q&rGIq2*,dcHD5+P)Eb0PaX,Sh5K#PN9b0@URc3h)[#N"BS%'GUSUPG0NC%TK,DJ
+
+X8mK*1qcHTQ'NK%Br9"MBf49kC`GH9jPc`,fY2kTmMKbr+6pP8K1%ZrKm3m06bj!
+
+!)pL$0+9N@D&Hfm'6KZ!`P)6RC"*%[%mk"B*qDV5&#ek0G&D5ClHmZ8)T2rUe,kS
+
+%(B%cHX[-1I611Z((-T*835qBh0(6+mFX2BVD8MDhfAb6fCD2K,2+$'&2"T[M8PA
+
+CIT&&r3&XNB(9L@+3!-5%LD[&'8%-UE3a!Hi2TeLk5bLZlH@Z-VS9p$*PM8jfH5S
+
+1`qSI8!EdpfbD'SZPAP59&*TRXZrN%(Yh6UGGQ#UQBQG3P"@pTb2Y"q9NkD)*8[@
+
+3!&-c`Bf9Z!U9,Yi8Aa#'I20"pVA4$m3kaP-AUVm3'a!IVH6QL2jD+T4CSm[(@H%
+
+c@H$e@EGFP[iJ)eEQQfI[BjfQ,TP#QaVb)FI!3%JDI432hm[93rc06Eb%pm$*,'D
+
+mkNa*leIRM2D$GJ+#plCd-A[*XL[[L$QYL$b#BJPY6E!*9$&-i)r@Vdl&%5I4+h#
+
+*6lJ8"$m%0NpUF8"fDUcRIUkN+8a)#Fb6RSFe9)`J8Kcap%EBmQCbD31F+Q$FLQ4
+
+-+32f`BL2B4R1*YN1ISAaXrd3X+5r"2J4pG,P"&$4['VJ3HDK"k[3ZfhZ"(#ZMcq
+
+4"M5)9l+Qa45kcrP0[&Z[T@pcjh'h%PU[EM0pJ*G[MIB8,Jc+C%Gmi"8HNdH3!''
+
+-V39J+J1FE+XaIXP'+e6C6'L[X+b(@FH%@9mX1'Ha25#EFAdMFFZIc%G!J1K#i3`
+
+91kYLAGr'Dq[0N!!I@e!rVT'Xp*T+KGZH"dPa9%K#YPAN$q$#bUkcq%3#8*Fc[Q6
+
+r!TAr(E5(1bY)K0@iqq-5cj8rafjhA1(*6NaGaMe+hleHMjmbZ0rVa)r8rV1bQR2
+
+V"M@2EjA1*k9CfpSER1AhdIcLLAJHFekNGBrX0N!5fYm`F1(&9f3cLGJdXSVL6eE
+
+,@SX@S$!4k,64i&N!"c*c[A#hHVefXjP8`G"+dQb@Tr$ERCb-6*HQ$[mYZYMVHUR
+
++l"He+(kee-mp"P4HbTqmJQP3m`,)d8#5hp10D$p8M$hCNMrbcV@B)`MSIkN9`8Q
+
+Rha8BrfKaIIpqKd9`D1BCmm!Fq)-#QlEqUj0(bV1Qre[rE+'h%"aCfM&d)UQhX*U
+
+E4eaY6K%[VqNL8lm46VZB0JM(d)@e-Gb!2$MX4j!!KH5m'i&eU9adpM+k#kdkM)C
+
+MJr(RNa1qbNClXE(qp%"'HG+@K@UR*((C2HUZPJp9(`TXfQS@TdXc0kJm#eE@0NX
+
+4+MlBUd**I5i!QlU@-LID-fL3!&b$@K+)0c&cadE9J)ILGmICFpE0#aaZAehfA0c
+
+ki4eiRY3Z!"rr(&NlMhcR*GcS`l3E#QIQNE41JFN$q)(9qS(K[[Fc)qY(dem5-`U
+
+,(A",MR&qZr,M$2)j"V4kK*Zq9UBBN@alGmPHC,9h3I1Sq*P'Np*40dLQjRVZ3h0
+
+J,$-G'$[R0cFQ9kBS4NXIN5P)1T[F@0'2M&C(Bk5@2aedR@Hh3F,3TjfXH8!$12@
+
+YckD+h%Bpd#`Yh4[!`BGTHJL5mFlD[Mqi[UdRPUM[C-qeY&ILGf+hI!F)()GF&L$
+
+d-blNGMe-NU"d4hGbP996iqq6qJ@82AdJ5#(4`lB5SmB0jMGQ($F)`mlCPIfi4LY
+
+S3ip[YcHYA[BHTr83)FYjhJYA$QV0h!9GX%lQiK-1T`4G0(am,bN[mL2-QNMLFZm
+
+X[04kpR&8Y@MXA0!X8!0ZU%RSr-B6raY[%$MYd6G1'l2S5MQZ!!-hVrf0eZ1lqd[
+
+DD!)-IUEc`GF"[f(pE)4!elBaYFmGNPdJK5%*S1*lC%Sr6DLr6mQRVQ2)#6F0#3f
+
+$2#aTA8B@8kHr`pF4SfVmKhrUr@%`dK1APIAI%m,H(icYh4Im8rLRrqbIHRqiT42
+
+qUII['209rp3$AY#-IlVKfamPqhq-@GL1D9Z&Lh9T`MTflQPX6IRcCeC1&ZfBJcd
+
+"-m0PI!4d5(%bDfPNRM`BSdN-`iqiGN5b)IaK$QAeFhJE61("$r4j8XQ98Kc0jBe
+
+ekh++UkPbl[XIkp@EN!#6$9Hb[FqcM#d%E@I$e91d0Y0F,J3IARdI[[M)4BlG%J1
+
+b'"D!1,qIaI3jH&A!fV@81[&@'Njq2&Sm)CafH#D@&bSDRNeaPSZ1`qUSh'$frq6
+
+DE[""NBj[R[,1h(RjAQ8TQlPRjR0Bp`b-`U!(&Q%a)K81SED9lVHM%8UeJC[3fVR
+
+8F@4Z5HN%GBPj8CPL-Fd3cD0JKaJDLQTY+YrllpVHhD4dQ5KEdQKB(iF-[M&4a(N
+
+8$[TBV@@IVBZ(QQNmf'GBV'lN,"(B,5qYVK0dBRCiq2QraKLDVaE33p+CT)G-pT,
+
+M`Q@J4Q&F$mX018SCLh0'2fZh+mHcp'errX#))-N2[5$@lhjD9A&rQN#"J4IV&S8
+
+BFj0!XN1NXm+YiAk2)d1j+)CD*kV3bpD9PL5B%fkFMFF'5!HjQ%DLibc1G`DR8SY
+
+4(*p9D0!bKM&[q#b,Nkfm`X@IB!*"+2Y,I"8cl&X*hZ#)qqaUDf$D`Sk%90liK!V
+
+2h$fVV`+-mEY6988*X[RDk1D@E9T(3hh+U+`[GFM8V5DC-+2pV)HJT9D%'he8hT!
+
+!aN#ZFil6UQX&(D&Ie)#VhT!!j2XAqI*22Qi2mM399ZT,[[!9@eZ,MdUIX0YcRZ`
+
+2N!"p@c249pC$Y$lPDprHN6q,FHqZieJU&lm2&Cpm)J#Br[V+EJ(fL)F3'0cMM6b
+
+,bEZcAL!21'N"K,P$6&i0T68K,UiF1FVLb%5b@VGr)Y*VaG*KlSD0)rd`PGcHrb@
+
+#Y,3Xd0J9,c0bV*1KfA,eb@Jl*jkS$A3e0YDedRb9IHb5QjQURX(4MC-QKC6B9#m
+
+D&QEpNrAG$"TL3eJJSfZ'p9HH[+$0rUqQEh6f![JTT*A'Q(@"eCp0#ZYS"m(aBLI
+
+"9jDh(@J8b)9iZGE86d8C%GN*[kA&jK@6RNNP((UH(Jj'Qr"$i!eb&kUdXMh4QDP
+
+a)p`-KkMJa"*9CaEeK(DImEm*-p9RIQ53!)IR1#ihR3Nhb8l(@!mKNU@RZi%KX0H
+
+[2c0N'#J,qD&GkfjM&%lV!&R#cfaMAGXXT`8D`0Y5)2D*82-cL2c%9CF@@FNGRTY
+
+T46erBUZ(DdfRX&$L8XI6p&R+`MYfMeVh!bLh(e+A[NRih*f4,e%)'Aa&Q[UpplK
+
+`#9ASe[,R%aYR4MUc3kGm5&Ld24!q4mL$VSeAl'([aBd*4rE&AqTI##IRDcYEYQe
+
+iS2#+p4$MVMh9IiSJMZAP)5r@QT8*0,,',r5CiIm8+mFP'0%S8JTe-[K4Vi#XP1p
+
+d!kI#N!$F"V83[Ya91deh8b`+4[d&5(ai4R!UfS!LJbKL$Kq+(K!)pC,0XAEd"j6
+
++@Je5!B4i+cYpV5+P%[@3!&epKQlCUT8E'k3"$j@I(43Ie-F09cmM9KH5I-D"4DN
+
+8feAmKRJBSEj`92$pmim5ZDKUhE#B#Fl8h[(-lBqeSL)*(iU0ma$Ta2ReS4Y0Pa3
+
+d@BY6YJF%'"#F-,l+-Jlq6,V)fS`qUb$ZHT'(5Af$S*C*4jFiK0$Z)G0,Zd%I"(0
+
+j[`$T@b+0h51@cQ(*4XQTr4NLI*8)RN3Q%RbB1$!FeSj&M&rm(PbIU`bL394Rp(@
+
+q93b*LkpA)GU3!"5Gb4MVDTH#9"rMaQ&DF&a2kPCF$al0i"9RX$5'Z)6JP'q9b*,
+
+hKmdqY"E+iCTA8T!!hF8qDJR8!QC%R84J'U9[a&)3#pEBc%j4359BNi2bIBp"TMR
+
+r##IGKKVQdJII)Gf$cA!G(YSK6h2KF!*p-hKd0$e"GBEpD*A8P%mkb!c'ch*Y4*l
+
+8!kT#3`A%pRCPhIaB28DEG"G$&N`[+Ji@f[&3PM94R(c36Ek%YYj#'9Y0@DR@LZj
+
+fPj89NXZ-GpL%iSkLC6Q3!%%1V&)dII0eTeV0ilE,&d&8dN@cR6`-P@)KaENIpDY
+
+Fa@MhD%XKPfRjJ[S%4!mYE`KY@IM6`(DV*(c,2V`(-BrC[D$0XMk5SFT@1d[8V5J
+
+'1E5dQ"KpcSj[M2k3!+8V6$RBYKK5k[6&B%kA2KL(ZX*6RHEEV9)#@Tb3!&T2+Vr
+
+U+#h$*'pi-L2qfeQ'&Tljr+9H-`BNdeHH`GL3!1KC,eMX`,F(N4c+*DFImb853ej
+
+&GbQ)+ab5e'bm+I0cDCjiq5*UrH3J&X`c"m%cER#Ci+*YEbbPAq[+f4)ph*+,E*j
+
+[@CjI#jf*aRUrMHAZrKbA8%1DcmmePENdj`6,@1%D[!8RPYFJPVrSh@3pR-(r&Z6
+
+NDB!e4I+)i*JbKbC1l'k"fcp#HXQ*j*%Ti+8-ANV%%kH$+"h"bDNrM`fT-Nja$)#
+
+H4p"mp2!VaQN8j!ZBYJ4YQ`0LMI91XN6Mk6e+draXDGZHR@"T'SL[XjhU'FKC3LV
+
+fKfCdJKC,+hp+qkAr43XVJhZAAIQ-%R1S$S`U`"d(JcZ#N[R,E2hVUm&8-f'SShH
+
+'+'6dV$Pac2,GaqQNhZ4mFK-K9l4NbViYIlP9hP)d5Z[$J*%[3dUGi0PGNIGV"3S
+
+me*qhZM4c)j,G[@XrPF8%Hm(,MmZk@b[MppQ5P5L$P9"r@L$6laZcPNFkPl!+l6R
+
+BEQ5U#'c-cBberqLfcKTQ)`qVjc9YcL$H8'5MC(aJRfE[iXkHDQhK0+[MM,ebG@q
+
+1h(GT$R@#KmHMH0KVcP`T$1eG)q0"S0A59LYddDZ$l,$+8hQK@JP55DYeC&NG@'I
+
+CImPPkYBHpTBSi)la-"BB[Nlh`DDH[eN@-qebqY2BmH*EirYhGNbI&R,T(Lk3!*%
+
+824hqZfbVpTDY!F&TmC1KmR1SX8E40C6Xbh8+,C4[kGl54I+RFN8T(bQH#2`S3a*
+
+%q$fHPjdbKBk+jCfF,eBDZT5jBbdd4MrK$5rBZ#Vc(A9r&bCT1cAB2Nd"lrN'eG!
+
+KP5'ch!9'URqGPd'i2K@jZa1++I%jPM2l-YAh'mZH$XA&9EahI',(+X[Y*-j'FJB
+
+aZekDMbcJVP*[IS,*-Q@p6HJ8I4P-`)9X8I$iT4(JGp$0$@2G-0chkKQbR@c3Lpc
+
+0a#GrR+NXEF$66e,jUB`i0ar+fh[l-DBGhdrQBXXlHCE4*dYEj91Nl@ThiC%I!`Z
+
+Re6"QEYMSI1QZcC%3*mm'mjGjPH"%9bVRY`GKJUl,*j2eZrDFZSjfmSFhE2I-%pE
+
+BcDF9cH2(SHP(q6[QH3"fYi@SjApi8YiITSeXPR*Crqf8arShKT,Z%+dehKpfdi3
+
+"jE(qVI[+0k!meMqkEDB0U!pU1`,*3hm1qkQAT&R"))(+!CpkXKSp20#f"q"(8EG
+
+I2#HE,V1188jEVl,@UM($Xl'$ZSq-JKDZ6@ZFpN)YRUl1JG)JFLZI0jX["c-hNe4
+
+H,KFX3NG-4CU-e4`)B6Le"AqBlEdClAJ[4XpPIqIpX1%bQE2jP19L8""1b5VhEZi
+
+IUcL[Y+J8MGEGm)k6J4D(X#L9N!"2JC46eY3F0SV-lU@&LDM'9aNaS*EPk12hD'H
+
+r"l0H-TV2J'6*IhK*b9mj8N`4GZA,YpPdPRd,B'SjFq"V%Ebr19&mUYTVFG%empE
+
+kS+kK2Skcl&R,LI1,[PhJ1-Lj&N-"iIfjq#169rK+p&AcZH5Mrip&61V``P+(#10
+
+)JLHdc`X&C%+Y8M1K549pU6E)mpcI1cVleBAd5ff4)F9*+P%BL%SAfPhHArDQ1G4
+
+4QBARIBS1i15i-9Lre$!P5L[QR54QYe5F*6E5V'+Lq(cYVBaMq0&q8+STlT[Rjl[
+
+9kQ&9E'l"5a+3!(b#rq0cr9#mfkr1QZe%fV"NCD)D*qP**#bI16Hq9P&9TlLDmAQ
+
+8RppGVVJFQlj''I2q3[YP'8Aef6-F9`VaNG5Jq!2l*)GbYQH*KGM)p[Zh[[[#QrR
+
+[(PJrAS**De!1ck2NjMeS&Ea[kbe8MK@U+BiRR"Hla0VMcB+55hH1&(ZPf8K%3PC
+
+(*YZ0D+E3P4'jZKP%M[#jm*MIfakSe4b5M,kE+3808M$NLDG1jd9fLfp0Q4QeGl0
+
+B48)F&eaUA6B0DB,`a0(m8QIr9BS-*Ck-'&pYa,!Y!a2EA!5rI6r9qbNrdi1'4jS
+
+#+TST6fq3!+FCJ8XTDj8DT2[`!(Y,NDXECH3,09Lrb2SKRirE(53)&K4TZC-I#kI
+
+A"FMRJ,e2,#a6`9+pmeE+X01I',T"MVj*kL,SHbL4G(j)b0+%rF+Fp&)f`Cjf$i&
+
+cl)$mT-V%9"IEVA'$K6e2)@kZp99MhAN'Y'mI0'C+60ZjFr*L#e'$QpHbe*Aja`I
+
+#+l"-%4k)4--86ddk9rPC[aSRN5ffNYN"FE8&@-`%"9f4"&LBT,*fNZ,K(9VACX[
+
+JCklRfk6lB$R5h#D)U48D%([5H,1!%l)P#*B!Q5$b[5U%6YTf(FX8I86fY%maDp(
+
+[54Ub82lj"QUEP'eUC1QNE"L4Zc+dG,-9Z(#D[3$%2T43Eq5Y`Vb,#8rh6BlaM&,
+
+b5MeF1'4*Cch+bpEfk(djhGj40pr",bMjcV8UQkf1+`ZUUJMV(a6&GX!CcPVMdc*
+
+a'lBDd'!M5[JP4R2351X18CB'E"6Q*XC&f'pFS#Cb#QZRXcjET#86SC%Vmb+$r0c
+
+f@hF+U8"N'ifiTK)N,+JfYe!H!d+HI91RAZ8HC)BKP-BUqpDaJeZq45TpiUkj+Xm
+
++%D8cZ1REGlVclqmEQXAYB-FFK4EJ1l4c$`%M[@cT$I!4B'ijQ2(JiNQL`5Il+'f
+
+E,NB`Zr2348P*kMPJqlGdTKVcdf%raJ4&-N2[mbY-,ZE[Hhr!J%,Ff2A%3#P'[mG
+
+TSAGKmLqi-5`-Xbbil"+qk)!eh-"6`2jk,Yi'#Dd[[*UZjE5UqL(b#e&YaLj*4,&
+
+Nq,1R6XP$9*2eP&XTaGFR5,64T!S65EDXl)F"X2UJBPiJ&-bleYk2&dB+!4mY6$q
+
+p()fr"l!dV'8&X-")Pq25)GM(diUjN9!2+q@`e3Trl30Ck"*i)0Hae6BA6Zl*"[3
+
+GfbQQI(52XAp"aUX4Yqfe%`lpUV*m(AG&+bAjaEGF62+kJNTh[G0[j`X,T`"TEme
+
+H@ZVPBNrH(V*PfGH2l&F@iaR"a#SlPZeGi`(UkajehADRVP`!dPmdaa3ajXQGiea
+
++A%j[@PTK[aM5RJd'am#J8DlC(mIBE1AHBcpEdhUBSS*![0BkNB[kEj9AIMaVmS9
+
+fXapeHl83TVeVh(LQrI9jBN@dLe+Y,P!ZA4d1GVlYk10)'NZQE(C23#'IiJbZM1Y
+
+9IJBPP'`,6QJ&!rm$$Hr(TA&"q*IfFAI5Mb2pFJaii!'b2Sj#A[3YbEUc2pjXhhV
+
+S[UCd(dYH(PQ4$+[jIiEKPq!@823-2CIr@*3h2[@m'"d29a#5Bq3biS'4V5V%lB`
+
+a1P+`YC)XJPD6[JqK4U29'&TjF8E-%dX`,j8*T`m1%h',f89ibBE'%)5&5JEfaBl
+
+#&FI4r#I+qS"QBrcF0NEH8[Fmaf%HqA$k+0E(DbYcUN&5kIQ51e$H+j5Ylq$ZiZ2
+
+A5-C*(*'(QPRRM03LbDc1fYkSU+"CCK&EZ)cUlHL$k&2I56!qj'4r-SY"M19%f!*
+
+RF`NFe+L@Vr"*2['IQ*ih@(J(1660Z$Vqa9kS%rjK$V[r)[cZ&hK@cZGBp*,0Pah
+
+"mrC[%e8[&pQYBb,Bk*L)0im26q((rF3X(eRTe5p-`AiBJAeqVKV#KhZq*lh"ARp
+
+'9XTaI@mJ-*4"mG8@chLA'KK,H$Ee-9Ql0"j12$@NQDCIic-GM'[XFEES[2dKM9j
+
+8&eD'cL)pla2AS3*05)PqjbVb"BNFPDjK!GRhd`m2hNX"U6Qh9kQM!lI[+1NZ$F6
+
+q,)C"hH8U`UaqShFiH-kUU2j3R+GXq+R*hmLGLC'aDZY"SN%Jm(H4YhMQI&A6PhY
+
+I"83FcVq6MH)IE8,-"$`VpF-0Y9)093UXi@Ql1FCe,m"KfVNfh(dXIXACq1,3BAL
+
+cq6jZ9TMk0DkqJ[9lbCR-%rl#eIK-1AjXA`dGDP&`989"#eP'jFC(j*m3@-haaDm
+
+Ta1F'Y*Y0N@3@9LQDh$A[cQEiGam,S[52fQ4#I,*MH,RJe`*e&2AiSP`Pm)9P2a"
+
+fJ#iZLbKl!(&r(U%+KM`YQa5M%&L(jB[YJaG64JIr8[SNTH+HZCBqDAKCG,SXcHl
+
+"QI)&YpL!-SMpRM[aQb$h@@E-93cFciTdrD[M)jBJXic(JaB(3""*,[0H&pI&`qF
+
+I,erjBDec#V%r6,4$C@!cdd'`A5h+eS#MY+&E-NDF4V4SVa5J5a#,K42R[c8Hk#@
+
+cDI6U1TYV'FB*BK*q0#Mm%1LIEFmdr$2JCT&Pe`bRm#&cYR+%D4@c$'cEZh'K4j&
+
+@bJ9XqaH0p9ChiX8qcICmQJfHLTY8)AZ$4*BR*%%VKPAcFq#GmaHIQ[lXMSR8N!"
+
+#"E#KQPTNP2+E`b*+(2M8$['Va3G"Ni'B%J*`Yc`QD(5cHla,%J,DRJ4QcCqN5ZL
+
+M5"9DK,AN*e-m&0V8qeSbH5UJ,5+fe@h18r!+Ta)!0-B%[LqPcNN(PY!J9[ICP)`
+
+rH#"RrHY$-RGkP28GTqDG8bL`&1UUeSCPKY+lffUqpJT`5%`eUDp$L0Cd@iGAF,K
+
+aFp'-%A3TS`jc-##c%Y)j`P`SaXI#Q&QU01I*0*qZchd8Sf8e8UEEadPN!e293Z3
+
+iff1`,EeLQqIjAVPCVU+Y-9Fk0X0qR'R8BVl9c+[8RNIVUUaQ4ep[I9aQeD&Fh8R
+
+Ib6qZe&bEb$IFB(TEL$RUr1P`ch[F4cKrK&9@r3MMaKrE!eYcYFpGH`Jj5jR2kLU
+
+PdC)HL,AjQl!,LX[T$eU1#)NXL[McRq%Q%$ePr&2kB6',eIE$S*EebX$mff5FIIH
+
+*jK@-F6Vph@UraS"G%i9)UF8fqH3S8)q'Z$LV0pq8KHkMQfBflA"9Q#MaD,XPVR4
+
+PG(EhIp@N(KHGMq)DG2[kh8d6+9f*edV,N!#kp9%HVPAl3qefKc)l0&ReH@qJllR
+
+2YfGb5P'e3NqRN!"`dTNDBhq6"+GM81b2Z(b-em5JAbp$0&#3!)MXXYqfF-$M1-r
+
+meUkBi48IAj8R0-`1c2FRdedUq%IYV"2#bE+F+GZp+02f1p4JF5)#(69EH*VRi@B
+
+aNL3h2ccc5MQr&mlpJ,-8hd6$8K9Q[,NrP(qfVQX9E@,c#1l2`j'U,'"FarY*jfC
+
+Q-@!GqjSm#1CA4H%)YdH2JP!kTL+1TE8Ia6HT"161HIh)1hekV3Q1HhJcqqU[#Ie
+
+6'"hTNNaQj'MQZ@k9&d2KSAkfrc!M2GCrUiYeH$Rr25$RXIi['8$mAJ3-b2ec3-j
+
+MrIGckY)mY[pNm[2BrT[*$a6m""Mc&&qD%90'SKT#4r)D`BeU`@hMhDIeY,,&MK@
+
++`C1HF+PLj)8J1j-JlJfhAFD8-b%5Ej52dAhVd"NYC#(a'K3')Sd5bA6*C+VA)"M
+
+3G*!!K6!8&0KJD!H3!&GJQGi6A5GTikfX-%R3PJFE[!q[2TXH%rTRqG9@Tm3!lkk
+
+&jTRQr+0(TGFf!c@Qm8C%E%cpY,CTUQD,*Aq"Xr`URQbrD98,'qc1VjC#V#i0LYc
+
+kc@lEBMBFQL-2mRA1[LmhiUP,#HDpiDd(GG,8m[MSXa9G&6I"SBem'MN449)hTQV
+
+kNFFFUbBVYE+Q'3CIr8F-%!c*K0P5m[#MUPEYcV#YaYACLSH)L'ZP&kPf(iEpJJf
+
+dQdh56iFQ!8p%h50HYF5EVlp#(hBITRQ3!0N+1YT0Y*Kd"9,LR$UUkA&pVT!!lkf
+
+miB4HVCpVGSP2hkkJNCIP"pb#[%-Uq(LL($FC0NM8L$E[h6L5LqC$UbPeQTjq9E5
+
+@crlb%'j!ZCqDFT9mQ!*%bSjX,GJibLP9&+frrFVUAX['8+iB232#DUbX9&QS%p+
+
+1352AQ,'4-eK2fLPbIXTLGRHAY@h#4R0Z%qTJeDZf,'l24EKVp0rB&'leUH"+2@b
+
+D*l-I,`L8NcXrT9XF,[58BhTDhkrRH$,e,mmqKFBCP1q)d@I,Yj8DL@$k3P(-Ie,
+
+8-6Q'`*j'NEH&I#QiQXaU2rR"GGC)9liE)rc'a1S"lrYkiSV#LkTG`9*!draiCRV
+
+2I&HSJ3BeeGJGdU9edYS5-TBdZ,U9jIIiNUQ$c9d,NC!!b"2N0@J)f[#,(S@A2-q
+
+3!&V$-"Y,kfB6&'ILB+CBC*eRIU'f4PF19``TqFH"#RpiU-r')H)A%(N3JZ(LMLr
+
+LHCTfS83%"GiI)@kV1I+iaDCQef9D-@BKNES-k$kF95"m(N$i6%M`QBlNJSr%-Bd
+
+F1B(Bh!B,%32fpk(Y)*fI)$Ddf$C84S-X*%`I4$*AQ$&Gh%hiC)PB,ZmiqLcV9P5
+
+EdKchb!Pd,NjrRFX'rGL([Rk,9"3Bj4fD"dp*Qj%6UfjVRD`[D(!*%$MUkpf6)Ph
+
+1+GekYi[@&cqbm`2*%`ETAV1$'ZM0l[kSQTCG6)F2VZEQj1li5ENmL+9#RHTl`3`
+
+Ic`DmiD$Bi!J1(NbE,'P1*!(CYmdBCbicc*AB)mYqifbRF%(5j!er-SDZ8iN"j`Q
+
+C@+Vq$L'L4ZFqB6`a+*``l+(XF)+hVcEfcD90,rj&#N@bD8,jAc"MCXD,G3c*UbK
+
+rU)HZBDP8HNrp@[p)P&G4RDbK)YL$8Llpq)h6q+)0A4jh6kSS&(m5eJ%R1`1cra@
+
+'qf-m[S@"d9+J%)'XDFJZRj0TQXYZNZp)M0X%SRpja8&3J@E(rYXp-c+&fD9DYfX
+
+S*%XJDd-Rp%p2[9adYS0AU[5qA3AZFXUL[6fBN!"b0T-q3m2dm604Y1rTXN[fMqV
+
+3UV"C-4`5D81#Pf'H+,rFflq,SdCqV(1LhhD0AY$YHXh5mBk5F)la(ZGji@Mkp5X
+
+hCe8bkN(H9L9ZqD"-DU'fIrJk2J8+kG$KiFhXhXRKq-A*)XreBEdP"BV*e,hH!S3
+
+%b3`T"fNeG5-%R89-(PcX5NFYkkG9)p8`5*@ZDUJN@'Nb[[,AN!$2Acq(P4UXi`T
+
+M-0*p858rZTGRhLJl6aV6QcM!q5&#2,D[,S1i&aFk"e,2aCT@``8qIbCG+[*e)["
+
+TCf*@2IS`h)JJ+kRCLZJi)1,l3i[$`hDJhkihL'"3$lc+[1c2p[h"@b2N%dQ14hH
+
+4(01QXV$SVXK)3q6k1@($EDY2-50I2LB5MJ#%3(hjE0hX98+jZ(mfP*`SQ5'5qTk
+
+eY,$k$Q8T@S(9[9E&Z00qej'`15X%G4BEd"Z0CV#J4qee%"r5A(6h%CJ#r`BjiI,
+
+dqH,Ge4T(cIlEp,GdEfX)Z,E3E"rlAFPEL()Ye-0H`2(HMdL`d9*6A**[H6Ki+mZ
+
+i3F`YIP+U0E1+aYEiH623VCaeRjE6THN4KD([H*MPKc6h&MAa1Kkcl$-DRl9b3JA
+
+ACiRUZ0qqMhmI@mX@Va!3CfQ6q"ML(IPCLd5B-'19F-Hp"m,G1m2pUCbQk@R6r2d
+
+j,Q)8UP'M@L-#lVU[YS'aMT@i2cJ3%GTlkG"2YhU6h'hd@MD9#P*AVmS2#-CeVrh
+
+dh+6JP9QV'M(c+q9DQHj+R9ZaqqYfDNQ+qbR[GpTeR*lkfbR'j)F[5P2H9KCAHb#
+
+`P4iV9KAjed2bFrTlPqVlSZ%XL)GQ+'a$*+l-i@83cp$XRhrmP-6qBL%#0C*@a$e
+
+-m#NG*cRl9BERm0I9d3H*#I&%$5VEPCdJ@,(G`aHA8&(-Jq1c15p,3XZ6EN4A9[a
+
+P-"CY@cXMl5a,"NXi[N`mFrCR!DSTYhcG[NiC)l4RAJjK,ZR1eeM%XLr8,e3Q`A3
+
+b%185AU6#hiXG0l$+20X,@QBB@IB[)h%l0`pB#C*H"e'dXK9I1PdXIPCQ)dimSpG
+
+021IUU"D"rr)X@EH@%bSr-M'Z!jQ!bf+#N!"+3N&M%1RhPb-I30!AdDe,[%SAeXd
+
+-Y"!RV43jY!VD6h01`j!!3(C'*"X+abmXmcR@&GfEHq`QJ@i),$V3[emeU4dZ#IC
+
+N[0FZclimakIiR,NqYSRaBRhAP#[FY04r+%4)e%)i`,-rr,8"a3HIp8(G5ZB,YHQ
+
+,5dX,pVaNXLM2pc$`Ce&5@I638E9,bcZYp`!69U,%BjFm12dhl$[!91LqIprH39X
+
+a$8)h&P+1pq#H+85DpqEEG(KHB8D++Ec'822Df'Up+1)qrCL(a5H%[J&plR))4f5
+
+ei(P*G,T,UXElldFR*rQS&J2lZm,FfETK8RaqRT!!M0pB8KUEke+)8B`rHJ3'd!b
+
+0-,9ZSkpZS0-JV@PQU0ZUI[KL28aMJFAlk8+YpAN8GhqjfA,e(I(iXjhUIpJahKp
+
+q"6ea@,Rr9V(Yr+mQ#!#p2jb@5HmP)J$df2kE!2!',9dVJNAFiXp(`9*f!ZeDYZD
+
+Dr"hDCkf3!*m2IjTE8ZQFIIb+9f9HKP+!4Cj#PNFjdXlC84@4(%"fYK!9M'kE)HI
+
+VR+XF*')SCNd1jQ[9Tf5S)bf(,l-*"X[$,C-)RGMbILKXD@&C@2#MU-rSl'IE@qS
+
+&S"[`a6f3!!E[E4J``GLLX9S1eqHaNG0Q[MpDeRaD+jC8CVR5@3Cq'ekKci+j5SQ
+
+0B'lcp0Vm'RkKb0L)'fEG'e,fiqRkajEaLmPe9p(!I3-cmF6EqeN$[8HiIjYVkJ3
+
+H#mIB4iA&225H2%F'kEl`PdFMH[$(f`#KI4MmCl"`"5%-REZR#HTEeKF+pT[Aj)X
+
+GmTEd*5QRVpc4+&P9IYk2Z-rC++R+,iMR@DB&bG@5A$CAdiZIN[$[1S"Xq#p"E"e
+
+8KkQ,Hp&i%M$,Qd#HefGd,Ae6#8F+4hEE`YMjj@VeUZVUl1E#QC)`Dh1m81h#Se1
+
+G*6Yka9V'[[%iEe[82VFm65N*"qXCbl%iaSQMY4l4rFL1Dk$hI+F!'ZF')r&PkLf
+
+l&m%+6NJQTM%p3C1lF'+Qhh$"Q,K0fl!!h8j3)+If#EhT%`&RF($e106ZE4q(j+%
+
+%pFYmV%iCYAlFMp"6cd*$52lT1GFLPSATq5k@(R*&kIeAT-kf*Rb%di"c[(5624C
+
+`k%erl(9@0r0HPU--rkdm&Y$J1dN`9NPR&22lJbjLIj3S1b909h66Gif$EN`SlFQ
+
+cLlABN!!!LfqmV&0I()QY*&a)iUY*CIM!%`E)6dcJR"RUF3ER8)U&8jjPfjNN&`c
+
+ke92'[XNZeJlL4P)A%[em,jjMra"Y+*Ql4c*,PTNdKYl8Q-jm[`MreF*EfMlrj)2
+
+fmp(jE8cD`2h*U-GlqcI#l8!@c#m[c&-b-2"#K&3C"8GMQ#-ZK4i*$PL@R9r""e&
+
+5k'mKp9*"Yi[)ITBp123#&VqC&j1,8E3kj(CiUd+3!"!(&UeM0SZ3!*[!P-`E(&4
+
+@Ce$ETB8%)042r5MkG8erLBjfM9CG6kL2NbmB)92)cpk$RU@!q!'jI1lVU3kDRl)
+
+V*KU(j,%0+DTj12Tkip",Vm5[lcCIdY-6q!e@cEmkFq$4NQ2SLjZp-@J4@eGMi2L
+
+Hl0!-KJZ1I@HCi4MiT*8Q"*+U!50-H"5P9)cFZcHF0KV'@1PJcGkTJDar0C'$P4J
+
+"1q`+(Zr%JBc'(LhI`3!rJ6U#%i4ZY!XRG9R@lf*N"4lE+Z"A&[TZ%`8T1rRN4%F
+
+46`YUEAQN8-YFJr@PY&-JYGhVANrp2,N!rT-1N!""rG[(93GmL%qHK38,05RUYk(
+
+8Bjm'I%TIM-SIP,ihG*+%h8L'*5(b@+18cB#bS6")K"6ZAFN,,&m*-F34R9X-iTZ
+
+(P9h"$!5F,kARfajYM(r"q'VLIa2`"FhA!aR1qH!ja6!H#q9E+G(KHCjZqYJ#jmQ
+
+6L8fTCST&bhj,0HIQS$lM&"2"RFFXU'rqZJ9@Jjf`jZj,Q8r2prXpiJ'lkX!82)3
+
+K`%k!NI)$&@r(5EXl@!Gr59d(NX62icHeZdeaXLMr2AI,L*ha6+c#4e$mP1#[B&K
+
+%A@QJFk02*J,bXR3japd46b9Z1SCqN!$@m&6)9i8DfhGUY56I@k9FKKVVe-[*Z3l
+
+R2mZCcZU&DB4"pjTJUlTCqN623XA%'K&hXe4Q6A9-AkDlIKI@&+*Ch,#dZMGjCpS
+
+-#XF26R2"!%pm*,@&`#$JJq'@c-dIY,YcqPJD[XXiDCRfB[cd3R86d,Aer+K"`aP
+
+X!#k*Hk+,TUD@*,9r06G9d-J[Cb+a6JkkMd#,#+e$$Lr@-DLq,b2iBRdlPkmA5de
+
+cXc9VSqc5C9KdA%!RKTUJTd$8I1'iRLEdFLfc3aAF3&4*0lbM-3p"br`P"TNe)53
+
+T5bD"!L*`Hrl`k#XN%ellrK@TM'bUTIRk45[$ePaS%d8m0a6j@SqSX$*Bjma`$)$
+
+aVK"jVLHVfmIZ41SPke6)mDI5&'$pHD4Kc,&He@P)m$Y4&ENG+e6J0Q+QlE(*8&U
+
+aSN1hPQF62p5DER5FU+kU*@cpd0edf[H!Ehb"6VL25)FCe"cI$3UC"MEmq(Ub@fV
+
+&339!rHSVb5)Clbh[[m9c,qCpbJNlrA+(l@Y-REjGj3'GBm3h0S!88@AD!%%a-,H
+
+'bH8b8cQPNlPc[DSV'r1apd$)VUr%ef"EmCZNcr`VXqMbJ0L5DE%90DIbFT1S%hY
+
+'LD!3KcNf,EjUMRA'T%KaeY46BbG-NNVE'J520$G)AL2Mf%&H(aJ33IFe%VCSdiT
+
+`pN6f%4aRd(L0d`bGlIF#%450qPUi@GPId0"ppLQ)%cjN$GPm1R'bk%'fZ9dE`9N
+
+S2BE`aPNpU*@DCMmPaeYC5QQTb!ilD#@lr[JjfV(,,FjYGB+e#m%jrq[ZX!&m3XB
+
+*iDCH(cX)HKijd8N(km!*DiPYrmC*k5[fc8RfX5-K+JS*0G-L+'MJ+V6h``0a(Ac
+
+DHX*T6Jp!4LYTQkP#(0Nc5NZpqqIDjY2Hd#61+Zq1EHVR[C9pQ*S9AF#B"MjANe+
+
+VVImH2H3*Q2iBjNlc,rSKd*d[KPS%RkS-G-HZm329cAQ%"iT-NZ5(KKASZ"aqLX#
+
+rIAH6UR3SMHEbKB'3!1JR16r1FN93V!b6&1-AT5KANC4re8&kN!!eT+a%%8D*#6(
+
+EZEeRAfd8N!"GKQjN@pY)Xkp@kbQ4l$I4EIFXdEIGLpR(C',Jc8[JEUdYP5&C-kI
+
+T#Sm2e*l$EEUdmm"dS`,PDaLBT6mrY-U&-f"RD!`lm!HjfB5jAPY%X5eQa!pd8%B
+
+AVpkf(LZZBH6[ELi9YCm'10TEEbH(6N#bl9R"VLM,h9P"-@a+K%Bq`EQN9445cX'
+
+Ar4$qb),[UZQM5fGA+BMm2L54lacU`@4b`pcb-hc"MQ%T(CH%(TUP(L4bIDXHV)[
+
+rI[X@+IVm&kpBd0$9*CXiTG30j3&G)Nir,EI+DRX@[liHNh2JdQVhBl$8$8&2EY0
+
+J%H(*4)H,,XUAm1dhK%dh@%rr'mLVDYmAPE"1X63lhN&H%dapBZpY,%0PXG4TSDQ
+
+#0Z'EF[,hXc9kZfq-j5FI,'LRI8*Yp&ALD*)!ELUH'AAL,EMN6KQIBLIYp+0dL"&
+
+%489PLcZCPl[C0)Jmk@EEIcjZYXAjJ`'fNkjG9fIY!D#A*-q0IlH*UJb!fEp9#$M
+
+rU`N'3'N+6GT%%31JarEI$)#Ir5C[TbZ*%8E*PFY6[d0K[iibc&eQ#Nfak((3,HZ
+
+XU008I50#&k8PBF""!6BcL-UUPDF"q4RQ"UD4PQ2-G4Na`chi"e5C*!0+N!#3!!5
+
+pQbJUr&bZkR4r[XP`'VY,P[Ik+(K8#0TS0RmF[mZl5lI,pem'qD@RbMkaQ#F@[b`
+
+`JLBliqVbkaeEQ@C,8-`INrNFVG*p2meeKCR`QY98)f"hC*iICZ-+k8KcC#!5A[`
+
+k1KYY[e*T95R[6&mEERH&3kqE0&BFf`-[%0pIZ,Dbj2U+ah!AcZqe[QENiNV6&fB
+
+&KD#kR+XQRY-!ECf&TMK0Q+&mUZHd+lJmNC342Gra#*F9SEPPSG"[L'SMAmK(Y[q
+
+NiXfKfKP!MMJ1md@pkq[EpS4kAP)`3%A0C+eUQ*R`UlMMd)j$TiU083aEYMURDhI
+
+EQ#-h9cMCf*09S3TIE)9Y#Z1QG'QC`'DLXr!'kk)@(X13!,2$Jj(,&ALQUA@kUc3
+
+j*hq[e*2JYr@B'lYI-SH`hYVUT(K#fcBF5EV3mMm*BR)UDdR6I-9d*-QKm1rIi$@
+
+[2,&+)A@$U)8l2pe%kMlqj-"iK`Rh02LkB"pk2IT`BrZpjQ,0[!YM)edUledXH"@
+
+1Dm(*8%&VabTZ4!Z968IeCTbUhZQfEBTQa$0Nc'V%2"-%&eY&#SAKdj3pIdTJ6I#
+
+i86"X$bkJdblAR6V0rG"*eJ4&Srf!)B)EHUHVZd"&j'lRR&FPcR'3!'f2lQFpGXR
+
+98!1*apf3!(#I6f1)"8SaLQ6SjD8cplHGkk+a'p@R'3N06*YG0ZjL4d`jlLZ'jPr
+
+B2b[PSTc6Qr2c`!&IU(2Kh2A&5dc)h4BkBa5R#(8e(l@lc"dJeN5#e93)0EU(Kf"
+
+j!SB)Yac3p!2LE4b[5If0VN(p[fb1#[&i6[VcfI#EA'VV49er9H[RpebNFiq8M&,
+
+1a[IM&8"G)[j!Z20C(`$LC0QpYS)U@iL8TEHpN!!RN!#GQT!!ar+i%dd$l4DK(TF
+
+kj9*pPaQ*&%J#hFERhFY+lDQqiScVIjAre,Q*Q#-@8[PpChUb&4PYr+XNb03RC1+
+
+YEc2lQZM`HB%eeqIFL@H,FATf,ejQKqG[EC4V+&p%,cc4GGX6[Lr8piDBIPBDQGM
+
+Bl&$9Q5#`*@EJ6-&E0H4(KfZT9FZqj-Sa%9UUKeY01ebGCZ$eI#0$dpLppd9!T,d
+
+M%%@MPm"X+b&q3@L$$!3Rr2S1bV5%`)p*(8REBT9(FTPYc$5E&T3C(b`,clJB44c
+
+)faXY`BB5rN,@ddmHGhP[R6hLdpbb"C1ZS%-+15m+P`Rr"DC!"1*kTARhakhA-,&
+
+AB$14jLlR*r2)2SrAMqGiJKp&Ma&&2XDQ-4cDq*eKkeL!Pe$(pLPhi2C0D,c4*'p
+
+&Xm4'll@!AY&R6Y+2jc$4KB*jqj0&Ui9[I9*M`"i$#I`X&Akd34ESr&*ZT,[pkae
+
+PMidhbY*cA"i+%2,G'[bER-D[$a4cci4X)A$e#KpYmP@KDjm%"Y!qI!l&4[@CZ4C
+
+6ELjSS866%F$Nj83[l&C%K,dMEA-@FN`IFr[%TZ6TSKX#A@iII,RlN!"SDpR*eYY
+
+XEYkET9j&(d6K0iJZ6'3&JYbI%cdE%&k-0iLq42LT&1*U9[lcB2[i%`,CD)KJl,3
+
+"Fkh3K$N4Z2#iXh$6h[Y89rC"h![md%eV*T34-DT5ZAd!CHT&p,H8@dLm)-(Mf#j
+
+$iE4Prbep$SK#+YbCQSqS3K3Sf5&6q+f$*iLcC3[i1&qL$D`(kaDJG&&CbhlXMYE
+
+S,$CBmJ)!bASBBTr%dmA(Yi2EL*EJN[Yp%*!!TSD0PIEQPe$lVQ83aeB&dheK(bF
+
+b$a3+lVp296[dGUQ%FYaG,rJ6iFfPI-"6KCcE&C-ME35GS!jB2e[NR+mr)VcbU1Q
+
+2Vp#pqT!!AY#-h1RINXZa(M6M5e6d1A6VJ`kih!8@U0&BdCA'%AN60U&I@EhL8qa
+
+Ukr19I0"&mIkkCrc%-Ph@XBA9r4!QT0pc8NY,J22l8b4*NZ*)+jjSZYbB!lf+Zff
+
+FVMYkX1Lb-D&YIe`c!mJ-(hUF#jX6k1`JT%*ULHUA(&UTB5dNr@MpHBr!B!@A5"[
+
+9RN-5YIN6R"i0bmkNcM&rkTehBbL(HG%aeDaeeGcqCES@h-#eCNCfe9)LBpq&ZM[
+
+'CLpa9'lY0`$ERYHFJU#*R$[PfP*5Q)hSX3LB3eQ9VZb0`0A`S(e2&XbhL&q00UK
+
+UFeI)A[lbC0Nc#,'$#BJ`CV(EK(dcr5U#iDHbfka)jN2)BTp)h"1Zm')k3,kEXa0
+
+U9'fc0e0ej&6V!E!mA4,JFhqTLSFYdkq`")C)SC8GQAb1IB1B3LNhkUk,V)X*Q3@
+
+K'biS%2PjrbZ13b5c)'1a`(jMD8&R51(LN!$TDl&R)9U%[HJ6mJdf2IpCdHXGqM5
+
+-F,DjJkG!#TV*TlbA310pTrAYpKl32+ehlVrE!Rl&ISD(PIe[TkUd1GdLE)%3TXj
+
+Mqe[F1,!&h$mb*Y1f`!HeJ'J!VmG-%FP(NDELMP9MMYkeRDaMCeem@(e)'2biS&S
+
+5H@0+)c2#9UUr4QZSK"jA+ZZA0#MjXF'KE*(b"9S-"T)#a9#m&!mGEIaM'Gbmh!q
+
+k(e1$dY0`kb(2i+*$a"2H%plMAC&9Q1T0aedA,pNZ'blC0jQ(8RaNd@J[!rj+56T
+
+B1PJ5Z*[,`P4b1l1lM+1N(l#'FfcV@UL@r"Q1)kL+'CiLk'*6RjN%HBA@%hc5lir
+
+6BCLMIAYk8epVblqPI1Yp#'elleT)ZkaDlPUBZ1Z+A$5ib1cJZQeDYPA#Kp@BGrh
+
+!EZkq"DV,kSC+l1#lMH5G9*6dV4IlJRGG+kc8#X[lVHr!-![UTIX4pP#)YbJ+0[(
+
+-Hm6JK"D9H-1$X1hkHFVP0$5IcZHQBQ*m+"EhLm6#dkr&6aV&maI)Q&P)k&!G!IP
+
+[NhR,(3J1L`"[IVUKejjm2#D-)p@`QeE5D5L1+RPJ21Y,4@K-fN`0B5kMA)rfF!%
+
+GDrFT2T-l'8QqprLYqSHJNlk*pkZbld`2iLPG3l1'cT5UAa(%NaK$CN3k95DmI!E
+
+5p$i2iZ-UK!Z)9A'b,1M+KN00p28XNr$EP0@AeTiC'LXc`2QN(rYh@L+V'E-C$@6
+
+S5G-5IpljeAD20#NQ3V-rLa0*qkR30m85R&JJ2$J[8"'Sp2r5qmB'bQ3TjMYjrdk
+
+kj3TlZpTSFM$Tj3BKD[l9YRk%BX5jNS-A&XYD"%[R"ph2T1j&*5lR*T!!iM)M$$,
+
+D3leJB(c0USK[ARhIRC0j,f&dUl1rZNQUlf1XZ[@PeAHI-AGFhJm36e@jYGr&k5&
+
+#j)V&ie($+qrdIr!V[pYPb["r4r"@a`cp3X"lThiYZ2JZpK3r9[&TY`bI#Eji@bG
+
+RMA"P5,f3!%*HAD2b3TLUE*P6@hek21F8VKcDHe0'p',ha(q)#!ZJ'+p''*0P&-G
+
+'@GSpG-pFiJRqT'meLf#P+fm0eEa,B*Hf`31GB@fYf2Yar38H4'&ia8E99+9Zak[
+
+rUqJp1@m3EV2CSP+DHcfM2DUa'8CrJ,Kphm,qHd6mLBbPblj9N5d0)Ga2X#eeI+H
+
++SX2YRX#kSCaFIfhZm6"3LK2SS'AA#'%'SSedIViia@`90aT%D$Tp5AXVUe@ZaLf
+
+1@jIH+McH8%DU16B-q)D&V5JlqTH6Ubl8NjK$[SQe,c"12l%CLa1G""@Dqf#2(+q
+
+JJar@+b01V@NDhd8HFaq&5-9f6h5(Yq5%P@C*c`V188`mV#SfmiJRdmSh(JQBIjK
+
+`Bi"VjEdjacKEbMdAl%eJCd'CP$AFpXe"I+rpBBXb+XHhUJYU1!dRiX+hC92fLeS
+
+IdB0`f5SpJ8RlSrMQCrjl6U)AUJV3q"MZpFN'"eSZGiC"ckMBIVdFf)XQJl)09B2
+
+Z,p-R8EF`5fH""VrL-Ne')*pr"UmLb(06CFp3f6,BZlVNQ6@R,Tm*LMXa%D6Y(%)
+
+CmVDei['`kS&qj)LE+"R3kKMLY)*VK4CA[@9CAe-S5ZpP('@dHrJ1DQE8iNZ1%j5
+
+YIIFcIl,9mMD9q8V`-clqP4GYUFF'cIeh3D(f[YVaX`6pqe6$N!"([hQ0CET&0[E
+
+jVN40VieIahV#H1d4DA-Dd"lIk!jM0HYeeGN1F8c9C!@eZV1([I1[eM,iE8&"Lp(
+
+T+F`L2iPeRYLaR-4pd)ZHmdL4f02hBL841G8(`q#&Iq2PDB[XK2U#*RKq363&qKA
+
+AErT'5lXejPfQ-8P2+[1#[!i!4SKH5&Y[Kie$`d#!d"F!6NF10SI(RXbXY9pd#GR
+
+9")GKJhPL@iM(VI(qLaG,K5B,B[rcDG0Vk%@IEf`1+KKer(K$@fb[9U1+88&6epS
+
+lcQlkI[+)-UQj"[3SpBNTIj[N8,+'[$V&l5I@JbZ[GNH8SXZqeN9r4N$3Cq-GqhE
+
+i5FmUY[K)",(q531mPf9AqcFS@V,%Mf8a'cm@!r0!GIR$SNB$4ER8eX`b-`6mCCf
+
+12q&i`fe&0GjfK0CAjC)UFkJ$)U6-9FqilC1Pd4qE,f*GbXIZk[er()14pDHfX&,
+
+#0AEPNikkqrfXXMI2m#AqrQipTZl6MGfK2#P&IQ8E[ISC1fIkkc-RTf`GTRZ*VH'
+
+98#LNl&ll*c1-GLrlVh[,8&LULhY5KGqKN!##q(#+2aKc5ZdbJ2Lj(N)BFI1crI$
+
+XKGqb)*XTP#APa()4IeQq[aD5Y466kR5pq,P1Qq6S[6R%mN[a#PS*U[aM$4'#S%'
+
+A4bY658P,-,Iq#T4%31Q)jlPip3Lq$hTE`YVKbHPM)heEX[F9XLPbL(HeIXrEa$(
+
+C-SYq3SlbEZ6X*"&GQrMA!#*cHGZ2"!ZQ6"rQ!jiYF)Ac6LhV5A(66$,(R`R,@9,
+
+pV$p6eQ*"NYCjfUKDmLU$f'+diDaSULmAImQL4$!ClB%3(F+4E5C&r2lKr5Q)lPY
+
+fK-+(mGA5!r$HV$i'1YE[0"##mlbJ8dV9"G')9j52UiUEZ)SNUQH3!08i[I'kS$%
+
+E-cI(IK&5Z@R)MVj0hfB2FIX5`dRiRA"!8G9`j"8DDifKMN9"C&1Q[hdN"pZc5jS
+
+Nd'!6pMT3chUi),TL%d`!-86CJ91M%CNe$#heZHF)IaiG&&!S8S99MEPcHYb5b9T
+
+*h8)8)X!pjJL18#@q3LI3ci8h+P38(3D9!'[J!&f9NZSECkf@DrS19[CM$dS'l"9
+
+&K+!5`8a,e$Mp8TBI[RDU6h6DhjeYpZ5FZ)9LP@*S8UhJ+-9m!-)bjf#K5#k4p'4
+
+G'LrKBiQhJ+8!RqD43l94F$"1rNemai8bcl03RerE3-ILR@JMSID@)XrJpB3%jM&
+
+V%TTH(+f8UC`q*%@G-T-##X(iK8$JZZHk2q%A61dqY'U(YE$'QRM&JNJV,EHCQaV
+
+BFRX)MFf&jBPK-,&8P%H"h)&$kPSjNYl2NLT%di*d4@0G9b6LZhIY@[QE@&U+h5Z
+
+DEFcY2kpZQbX8Qaq-RjPmD#B@&dj82kdc"m4e((rf4e9IaeKlBM*,13YKF1B9N!$
+
+dc@,,J'Qi[AI'fGm5SC,aD&MU,C3DC&Cb3Jd[eM*"$CdQPrKQYM94hdPbe1V-dDC
+
+U[$N)+bEdSJ,Ic-S)DHD@I88Ted#K(,e!8Hid1%rFrrjZK#&9S-Q1alh(d#5D,b6
+
+1I@6,#'T9*M,YFdEilYY$qd'ePlZk6Xi3+NUQU&Zk9leeJSmQ(L'MqPfTR6!GaZ2
+
+GBXZ$LQ[Qm2Z3!+91Y[86XTk-BXTrqNVXaFLi5I&[U@6hIfR!lDR,B9!1mrq8`l#
+
+K9,1Bh2rNpI6Brj[AmheDKJUkKjJAel81h9r$kf#CVN+M6AG2qalIkfSZ#!qmU'c
+
+IS11a3MK#AQXKCP"0CVF@`!SM!cqNXDR!)jBUPj8,eQTi@aH@VK66UU9bkXiTb[-
+
+ckM4TXYPA20HQ+XiDZ%mmGGZH5kB@UN9X2EqF2ddmCERi(6jS%kP6i!+Z0YRG0[-
+
+G2kJHXEmX+ZMMTGd@`5@3!#Pf(c@d8&dKUa(pP0&@`e@3!%qmZcQB@ZcQile3i`"
+
+[QFL13cUmrTLc9F2&eF21%L4[M@P3b)P1h-#hLN2N+*@HZ[1NC9,ji8Sk['T(LdD
+
+!D)"4"iTVY2AiVMIk8959A82Ma`LIhcfZAm+SM#aicVZiXRBNN9!4G$$cQqhpjPj
+
+kJR'&rd$*(!cmXFmPVYFHDVEK'p!+Hkq`bpRMSl5Q"5f)rMl@*YN,(M[hENqRLXH
+
++$&dp,%JkA[9(+G,H1`X+[!K+ZCUcf@J[(G92CjMpI8N*MBQAXqCK85LiYS-kE6k
+
+GjTMTmPFK@Sdf,YjL&$T9lPcIm5jE8C(Q1%qHIaaI'YZ4C&XCT)q4V-K1plL3!11
+
+K--mE)N'Aae6SlXG09jHRi3lRKIe!0LmEU4HIG$$)f*!!@m[TrVM8XZYERQ-EK%k
+
+[)%aj+XqNmK"LC$lA$ZGh`j!!lT3["9ACIHNmY)Q,&M5pE91`Q"mm#eH$iCl52lQ
+
+#%TdmE90!maKUG%T!UP-eJqredDA,f"[lLf,Z-Y*Mi&P9GS"+U5-jdqbdL'A"MG4
+
+EM#Fm3J+LT*+PB!a)q9XEa,H!T*pLRm9-["Ek,Ml,b!55XGAM-SF2LphC(`@5H'V
+
+EK2Ddc%aQRAp229C3NrFQNQ8TQUq%BrN!GhQVJYa@KMHKb5EJXD$$SA)P$X`a2Vd
+
+)J[Fcc#'"$X0!'(AqHLhcKhTqC2dhTL3kNSqRZ-18dcd!ciV--C(h9p1HG`fSCP+
+
+([1VH#HXqJ#T)(DflS*4+ZQfrb5h,!YSVIBC@rZ@L5DJFXkeRF5)DZ&)F@rSh4mh
+
+`["0h0i+qf1ih0`pGR#l0LIeT)4k-qULY(q!)E3&)HareiCmb-L`G3X!&!jdHj!"
+
+Di+pFP5Ik$@f#aXG%fEH[KDkS0-Uc8'lIEBj&a@IQ+RQrF9%)CR""Zi&VIbSmP8m
+
+H,Y,%'kF[Fj59+iF!5(Gr&PAefAH8QAc-CRjKHKIZ,,1')bJ9K`HcjjX@`RKarJ`
+
+K!51'cUa5*J"#*b!JpSa5jdQ,3X6c28Q@XkV`6!I8"'I&TUjj89qraY2Gpk*TSdV
+
+!p8er`DIGSibK$Gid8E`G4,%@&6%*V3M,l)LJQIf%LV(#-q9H3mN1YJ+`!6(iM9R
+
+499&NID,qahL"fmGS&Cq[q[A*$Lf3!iHC'KcMB3(m,G*QAeI&CbAP'l3'[Q9IcG2
+
+jl38Ke5&lf&l1Y'S0bT(&BaY,`VKciIb+M`@6D2p1cQNq+@-lV'0G!YQmU#hm)cX
+
+%G#%Y8BlV6*B'N995-Gp-IE&pK5ScPA%FLBK0VF!,0q!K31MJ@U3"HSXl@$jaeMd
+
+Mkh2X#NA3fFG"i6,f$034N5-UMGKlAUN&8BINTD6F%r6L2#6%la2YlQ)FEaa%j10
+
+ZG2IQAj!!Ak1Gk!EkfV#B8V8%jh$BF"fj81&N6*G%i`[jpFHF(ZfP'!M(BHE9Fa1
+
+(Up,FdhJ1C3dJN!!LI8-5B@M+F+4T)+61`l!A*%)3kk#X`KQ+2qV&dYBlK%H'QhU
+
+rJKe`K2DV"cJMU(SplcpNR+Ji`V,)K5k4%V%JD-c14KZIS(fRaRVU[S9&0dFFhbq
+
+'1G4&+55Q-`IR`l)d8@%!d8-Je*KI+8KE[Z(341'2c6@YKc+,BbKMUh*%l"AEHj!
+
+!%,9*P`96NSfU5-S@NedKrZDm4q8Hm&)`X(Aer84T2Zqi@%,UR%mM[-aPpQ@L5jB
+
+5XDZ%lG0p5DKbHBbdS5I'DdLchYD"'Air-rrQ6fIcPk-IKNX%%b$*Zp"lj(3Jpir
+
+5cYV0f%2K62DPaSqj%MPN4Y"#6C39T[2h%%Q-[TlVP29,p2EcAVqqf(*H+5rD(%8
+
+2I`4hd(Jpc(PK&YCpQ!cE3&Ki5k99XaGm-kfZ2Yl@ZE5raP$YrHM2mjRqFH(!2qe
+
+)IDQi'C@b3UK[j'X!ejBLa+0,hKl-jiL1Yp1-NXI)GLV[l#2rK&8kMaIe9IYp@+R
+
+BY3Nk&I,LAll$fSG"EKi[h$f8bj)*+R0(Zdr)0JqfZLFNMP"1YhNd`3GI30$hC%F
+
+a(V5CDG-52bpCp"ZNerB1II`JS%JRIb6*GBC!QPIiD'mFeiTD2!2[T)YM8Zi*iaP
+
+hbc*#(AJ#9b9)ZD5&-r'91ZU!0d$%Yfp+ka(831mESr&4UrXj*&fkK9Ne66Ye&`)
+
+S$-`3`J4E2%c9C9BbVG"LVqmh*['e!*mJd'm3hRT0"k#M4H3JI","N[`$e6+paKM
+
+DRJ,C[D50(H23-8pQpNbVDSApj``EYkFcVB3l#%&I3liCN!")GRMFm-S"CYES6ZR
+
+mc%%%DCf9XHb9A3FZEbNJ4DX6M"5Qi4N&6!2K%5Bl%"!YBNDGpd-#RArZILMYFX`
+
+j`p3qKp2p!ZpULI[$arfYm@&HXA6hZ!%#4ReNQJL%!C'k&i9IeE)&eT[*[ZUifIA
+
+RMieY*Z1!Zc-V%L4"Bh[9b+3UDcV8"F8,[JD#0H(@5b@l)2(5XJdZBCj@`k9I92+
+
+9&bVIr9TIT!3qi'ET5ZU5I0&jk4P`aJKc,2l@39KDNXYVZ,UYRf"Y#eF#Rl'ec-D
+
+m6iD16mM"5QddJYclBCB#*44[3pIS5hJT$4CST0Y$e[[Y*&%hB-+lJ4qh1*''DRk
+
+Umk+#-a`qL5-qV`eL29eN,3,["ca*mQI9@J3*V&"M2(H-mqK&j31,$L%c0SRlleH
+
+CiRa8SRcZ&i8Q98kp8EfNFFXDLjG*R@*0F2Cb['b#SIUHQ5EI`%*9Ge@BEQ`cCeQ
+
+0d"`RL9$d3D)mlLqk9jJKfR4Q-5pX3Hcd(#`,F(`IK4)PSHkK8b92T9Mf`Gc!Gmb
+
++8MJl%D9jj[$[h8,5fL!r&Afc'`,2UVH*'R58KcPG-mK$3Gb()&4mE+Y"3(ULG9!
+
+4aYlpl2Hj4k-r@ZPf3XlrP2beI%6f0+VmXhpUi-m*2Qh@eD%*HJMq)!`ZAmjH+8`
+
+Cd5F*fK&fed(NpLGA*&#hNI[iVD!Gbh3@8)+)G+Hh%bC&',N"FA5,c26iET!!eU-
+
+AiLP0r)5r1dS"ADI,rEHNN[Zr0+$Vl"T31mJqdU5c&!&hHZcr$G`j"I2iV[q!HE`
+
+Z,aX)mhLM92ZCdRJm!j1T+ETTEP!m4X`hJ40JXFBl8PfBVL,F$13f1Z8C,VkCbNq
+
+`aY-YSS5+9)X`J6$,NGcrI36p,(D'pArcp,SUX&1fCb`%T[6Bra1BdQ2rEf$+'l3
+
+8lG3e-*4F5Ger,KdV(+Zm($8U(5BI6APX!KV1[N#D`@94F5b%XT!!+%SALC!!CLf
+
+"k"[a+rk!bV24ENqL`8-RJf9BSrNq@"S!%3PCB)G!dKS3#JX,2bRid,hS%EiS6"R
+
+5q,$K-VRj0X'l@9'I3S(a(!FJ)+M'+m1649Pcm8G!SPkidfabSj6*"e64DA)SqRp
+
++DT,UGal4%C`@A[[9f00Bl1q"1@e(Tf0RIhikBS%R[Ld@kG"5C3URVUYFH[Y)FZl
+
+F4'8eZ1l'2kQ)+6IrT"9'9)%P@rJ"Yj`,GPD!M`M1d[PTaU+pc$S@&UR[IMA$3#V
+
+V*'fLX9S-TMe5XrmS[B"pe2+Y@9HcFkAa6$8(B'0EZ(,4i'"cZZ&41N4KGeH9@e4
+
+4BkplFI*ZDjh"!lXZmQ))8jr)2l2kGUqqDN*RqrS3D8-p`lIqrX'*kER3-+hFqI"
+
+R9LKRKF%P[CALqelUA%5+L*XMc#mEdb!qXGB2,Z,'ihAB`aCa'NH[)M$Q0P91AUI
+
+3l3VSk45+l+ACKNHaaMIKRD+DA)+&&ETqqK)HD(5XaqqE361dfed`(p#Y-q6Hb-h
+
+Jm`I@"DX&pAb$k,-)IC@`-G5D8k(bMk)09cp"&,#4FNX-l@(!L@(0j!qJ6KX2k!3
+
+0T"JYDr8DZrQ&Vp[U5rX0Q'US"B2cdI-FiHMp-[jPI*@h4G&*RQeRH9&HPT)4Y,q
+
+r,$qIJahL,R)kP0JlFf%MX`V(33hY'r(3R-3H3lL-aCZBb('+fei0,bKZ,%MHU2Q
+
+MDD6!4S#Y%lPGALRp4fU#HDYff1B!G8Jl*dB[YHMPqaHR8!Uf6J08ZK+(SXYINcr
+
+VU3UFR3ahlTr@Pqm@6i(@f0Nd'&IYNXSANfY#,YaZUB,TrE1A!59,pcC$Bbe1YkP
+
+E`qMd3ml6EjS(8p*%iQd-Y`E@)ZAJ4U`TP[[AY$rlr,q(hX-`+E(VLA$$ID2-DhE
+
+JC5km1-B%-d$NkbXARblXE+1H3lVNrA+j(($*qh2EKHp+S&+0XCk$C[qklRPM$`@
+
+Kc-U&)LhjrX1Sipj0BM41HPkBmeSm9'TB1RN"H%HpZVim,PN#TEH,FLHhGNMCLSX
+
+3C"MVH$XLZ1D!dBD`&`aa*%5U#-Ib&'N"BLh+@FUfrd#eqTR%$FJm2pr'ekV)2M0
+
+l"([)Yic@dU4%)i,Jj64NPpPp,&lDB*4e`Q#",r[bUYl5lNU@Z'jBC8U`ejX%JHZ
+
+*m9"Y(FD29TdYaHVSd6Qm(&#Uj#4$4Q#c)-p`UQ&A&""`[#ie8L(p)IeNlCT`MBK
+
+&behdK)Y,XDUXjK(F!3Gb5S%*DTd1GXiXkhkD$2NP%V(aQ2L[qi*I[("Z`2LUm12
+
+GZFD9kRjm5[RSP&d#K4"")X"p*@3**A3GD-D,8AeKI`i4KV&+$)X)DXC0BYCb(8Y
+
+Yf8pGM&)Vf6YRJl4d)GM,05hYF!iaYlJ3Sq5Nale[@RT!dIRibmID05M+`r+'NQ8
+
+1*fTKd%BDamLVqrXPiT!!Nq%mq(F(N!$9eMQC2#L@JIV`6fJU58CUe4GLkVk3!0p
+
+[@19JqjkH3CeU!l00GT'8(Ep)`a@jfl5Z32I#fJa$peE"p%E#J4"*P)f+$"Ba-Y$
+
+pI1-r+JAAmZCBAX+l&j0E54p19G[34a%R61+5!&Zd-K0A05hqbTRZl!Z4+-k!2'N
+
+eArGYAMqAlSCS%!9UQ`m+5JhCcS'k6#p6#ZPc19&@I2m*Ld$bK,+3!$K!'VF4RN2
+
+-C8h@443RX@,RAEiGqVkDM&iR0GpRMcP88$I-#@N*5AL)V"l$ABIQPC304a+@3jr
+
+j'e@jM)9#4$U+EE@%[K69Vl$eS3%fHhYFBfXi3*L43%,+Y9jmf'MAd@BhKR!fqQZ
+
+!1ab%4029QrrKUH4!H$G'pe+dMe44UiNhGbY%P1'QXiD9#!M2K**$XF2S!pN$IHj
+
+9X3L(6V4(b)fKGJ(jppI"MkKP3fJ`!L9Bc3HXdA"8'ji0R[6H0@UZESC&&IL5QS`
+
+@p8%@$)0"+5,VKlYE'jmKS4G6I[3KUY6jk0cYlaCV`-qH*I)JlQ5dlf0CHH)L&XI
+
+(U*@1fQlHA$U-fmUPR$PE3UQ&JMq4i41HEmpI*LpDZ#bQSh5'lFBq6$U0#UF-FVN
+
+r'Zc&IY,ebB4qj5+I#`6jS(&c"4CLR(E[*Tc5jG",4L++L[2!Gr(c%SD$&1`K-6F
+
+IMaGVrUPLZP&EhS5Q!F(qL36GFf,i#i9SUMlIMcPTPBA[(b`JmL[KMd4jLI,8S5f
+
+-@GNK@I!P[PAGqfj)+YHH1fLI+LZ,SQGjiJ9LI-EMCS[KND5pb*hMeb2ZDe0q5TU
+
+$Q!YL+iYaJGDP942lcJVf%fc*fCl`Y(DQbCM1#HJ2raZ`!6`39C69R"qT00,3NQj
+
+@CFDh)[#P"G@NDT[4eFC@k9L99M-D&2Xdi"(C5br[dhFj92#K2!8i+ELCQM#QF',
+
+&KAQk+IQcB%RZPcqFJ`*j0AAN`3l@[lU!SA'XCX%P@4-Tel@i!,jlF(%+*KBb#lN
+
+*F0UIjPr)6aSH+ppUh'Qm`HrCi@2qh9%)m'!,2"crILVl[c5`&,S(Q$UD(MElGm-
+
+Kqpq'``kYG9X#$3arp$AD95AhUYQPpDc+M+c(f['eTk8deP'(PVTe&)p315)+KT8
+
+Cb9Q,a*8K&6A5jV+2F',jpZqKZBh-3f52JA(cd0C#j8&NNU*(f2QdUPIM,T0G$@N
+
+C5JRP8p6(iZi(Q5qIJ$QKV8q+GrS5mmI#l`p6@RYDHprN,V-!Ke2IfLeTC[49)rP
+
+ZR3FpaUH*Xl[(9!RM6YRQmqUU0II55X*L*44QfIU-5cFdm#qd0pK@2PA9GCUr,1q
+
+,%rZfqll+(9Gpar`eha9qPJVZNDq6,BqYPiZeUR*P60pqCGT4r('2rjlaq3F,)QF
+
+iNApHar#Did9(-2cc-PM#3fXUQN!X5RKE$rVDHN1EBe'De8mcbdN,$NQQRj0QKdZ
+
+KRJ)j%-K(FUF)$XCDA#lPJr!hi,0b(k-S`q$R"QCZE'*9CQG[@@XU(NN)DcKE0(E
+
+1F0$@k,C-q(m@a3mL4KM$iq2me,'f+&iY1G`jY'PLlJP5Zf*JJG+,G'$E[$f*C([
+
+@A0fC-AkZD&RLeBqBJ(,CrFB([me1HM1Jr00d#%&A%p(',dD)YcTpS15pD`akirZ
+
+!!,A4T$C8E`!188SZA(M4PNb9LY+hdq)8c26N*jd'KL'SJQ62'LKBeIVJkFBepip
+
+IKjQfqBDja"Dc$""YP(Ua@51VdL%FQdG53Bk1GKmHMmUSm"cVpI!&UR1Z10"p@+N
+
+hEppl6iYrB$&25hZ-'b"a-d'a`r#,@'aK[C-fRi#hqM'r8$ZF1'&XkR6Upd3lARm
+
+'h@GUf%6i[R#h5q0bpr!#SQpri)8+2Y9f6"N'(EdX&@TEDllQHL@CaqNF)+4*QHe
+
+Q5-MEcZJSk#T15+e8C%lcK5YAGPU([8bG[3F"JrkUB&R14D3Jc,f19p$hlD@+q#0
+
+m1E4dI4`NGb(+QQY2!JSc&clHaK+V-j%@5*kMTiNZ+YEqB0q%#CN'$lXc88DjJBc
+
+XY(YD@$[M"lNaP)I%bQ#h5D6a'H0,L(`D$aYl%IaHS5@qBPY3m'q9,[XrGhF@,+N
+
+Q,adQ$d1*VUmcZ@UC,)i#Lb4i'C8c%`i#NAI1jK@U8P,3ep2X5VLZAXq&kPc@"!+
+
+rNiSjEXf+Z89ZaqB6"ekKFi&c'jT@$ZXDLdUJAkQ$Vi!L22#N'GGV2Tr$M4"Yi[P
+
++d&3eNbhP$%5P-qiJ"F)XJca0J*13!%UlB[rB5J13!!1-b6Fp@dH%qk'l!R`'VRJ
+
+Z2(bS%E`Q94$(U'fCq(bdlShDMfGB,$#RNVRA9*`i53DGmd0flH!f*TAG,h0*Rpb
+
+2A)QpX4258U"c'%@X!MJ3U3i#0dcDNH1eV)cbUCAS8Z0qU0SC$Cm@rAKa-C5reR0
+
+C#-9JMU39@ZFEcfh#8QVJ8VkQcGj,&"L9Mpp&beKeD)AEd3&Y6dl0Q[b%1#MVQm$
+
+C4Pqj"k0H(TQ8T2!3Sd#T+YG8*DY'3aR(*(CkUCXIcpFhDa%QlY4D&8NE0')DB+l
+
+f8i+EKV,A-Rpi-b4N(BbY9HfVl6LkkUP,!"U"!lEUMdpBpFFK1I#T6'&k1SN**#j
+
+Da#UI*EjG,k(-*FQ+DF3jJ(L`-k**`P&a`*2DaG4rTa693$Fk5A'JMATp#5UGD&T
+
+pNAKhPeT'QH*fK"KQ%lXEqXjApc8Ya84,5+G)$*V#C02Q+N%P*,&e3cFiHr`Z(p%
+
+3)b`BqbdPN9UF#SNKA!f46Z"bleSj&bCAB!+P"kUPfIGM+iTV-qq(cCpKUT&elc4
+
+D4@K(9IjIqb4`5D0j#aRbjJ*[&30bGBe!B(-FBl!i*5e,kX5V1,X8Aj'64(pqQr)
+
+P!M5Rm@b8LFlHpB)%UUV1"!9*V9BF#mQCL'M8Df%&Ul$`P4*8lpk*c*Z1`,pTSQk
+
+@cR-[lP3M(q-2*3pYkY+$Ukl#*UiJ6!eU%drK`m9#*kl`&3T8a[GP6'@[U)qZqHI
+
+-6lCpY-9ap``-,QQl&dj@K-Jh0HJk6"j,T,ELrhk3!(d-F,)M#,H[D[E'D@hM,iM
+
+FcmibNE"YheE($Sl-+YYY&"UCPjk-B13-#,6PV(XaYFe0,%%FrFiV0J!)QAbTp9@
+
+RFGYd-pl!$q#AGq`VQ"prM6l9)1fi`dHH'X3r#SbR5R([IS$'T[RF$dMFhMee%"8
+
++bTHUp#GPJFF!fjb!H@MZea-mTl1$"h[S1E0aAU`BFPPRA%UMm''SPX[10Y$pl1)
+
+-clLrclPR*eTcV4VQBm%Mj1S(Rp*'RhbUFKcG*IlVIH4pC(-J*,Ar2`8j+eB@j$Q
+
+Z[hRmh[r5J$5RDi!JCrPG%q6Hhq&c[2q'clP68pi1Aa)RM)M(Ne*Y-H`E61,3Tb@
+
+R*612HpD11@6+#"k+f,Pm!K9cGC@UT2M@%D`2+h+)ae*`e,eLC6bNG`&d5(Td2"L
+
+IIS,q#,e8Kk4@XKIP6B,AI(qbA,MLb"K%`LchU6em!Y`)[Z2LNaIEe-Bp#UR&FCS
+
+JcJpfAjiSk"2Qa*!$PKAcm@2$Pr`k$AIm`N0h0ikUQe@&r$*Xk1PhArA0qV1GM6f
+
+2lNKU&,KFjiVCHX'Z$rM1-Tha`''GTYe*Iq`5rrYcc*h0M4@PKYP!5(TjE-Ef3[@
+
+SKi'1aXk3!(-4la!IijJ(+HQ48!E2+UjXLip*4HafIGd`A`'Ll3-I09)*8GqJ)-a
+
+"h@L*B9F-B6aQ-lE@f0AJNH95rG28BGE,VcQUmQ0G1a*"GJ`-k1XLdLUY#5e2[0A
+
+QSPQF9iiI1h1ZAKE(ec2lY`V9RaL5P@iRcH$j56`(ib#f6eccr@)(p[JrX#I9bE&
+
+MLm#*X[T*LRd[j0+)M)X!*!%3(bleNTFf(#UcAp6kSmK`3P4J%DRK%+'Af(dl0$Q
+
+FGCT9'*!!)HH,Xa8*['fi5C+NL&VJ4E!H)!BK&b")HJLHdX64L%)mL86%PjIFMmm
+
+lf)LiUlrEPX8PhRQH6H[i'2!*Ab'l[5ZNQCGpUC[YM4a,ZmZUe1f$j&Tq-$0%kIl
+
+)%b5(rm*"%0+lElGp&C,`%l%ra6Fa%1e#'D4D6Nr@`PefX,"FNU$C9CkLY+!Hd)Z
+
+6%K9$V*)A(f-ZD3*p%h(@N!$(Ra$jhSHeArqNZlT`lM$D5P46d'D[bI!)JGhUdcG
+
+IamY4+P[dBAXd&*d0@FJY%2UkpRS+"+SqFP5e+%eaVa''+&-PVFF84AGIbcq10C2
+
+V0J,QKR2iCI5&EQ1`qA6AerAN+Ec+"+bKbCH&(C&j*K-kN!"V"HS-%k2Qqj!!ELa
+
+'MI5AM5&mb"Vk[Y@`N5,MZMAP"E3YfE6i,30&UVf&B#bIbG"$ImVD`(eIe9AaZdb
+
+4H['d8GT90#&i@[iVqQ)*Sk@M2Fe$a6+XifE35PaqJFqrN!"#lBPL4`6QhrY"NQ3
+
+3ARb+p1SG'#meJeX1jdYA,cqb`V+T9EPrVj00#MSr,FQ&rCSf,fQKq9Kd&P'@3aC
+
+&eV"SGYCE5(0@#Amf04,YPVBqq6c(SC)j![RfC3m@j5F[bE1&jcK-5E-3L,fqK,h
+
+q5@ZXXZq0rH-4qajdR(9%[Bi2S(r)eG"EN6I4VLU#3,2f6H($6`pb5+'i1"MD8Ec
+
+U+FBI5[CAp'3I(V*KQ(cEfUET0&6[6M)146Y1fN#),2Xm2YeR-TB%Ii`23mp+TrI
+
+KR23M#@+'Ui9ZZ(k"T4)FCaPa&"'*S58+BQjS)4+Z4[a8-+-2cPcmE)aRNA3dFV$
+
+X6P4[QhXGM0cDL86R2CFDKP5,IIcGB,#Z[5TU@[cP4pG#ejSrKY6D5dajajCUSL&
+
++2@Si0![mCQUrCeEEE'QHZ0Em5pa(6X52qX5&QY"2DSAk5EVib&@D-84GlGR-'Lc
+
+jN!#iZc[bSFLTb'`A%Rk3!*V,4Z91dlpm,4DH&dN-QRi!+YZQ,3``,-j0X@eAIrU
+
+HXY*ND&-cVH81LRcFr*T*Gq'TQ,EK`eY6ejlqNm"m94`V5p9C-EVL3(!EJkQ8f3P
+
+l1b1lDE2$XD1R@)'p%m+aje-kFcjUqi-B3(&)&0rANHr(MJSYHbi&0Ij3i#fG&D8
+
+"J55Ech$X1rlM2GCVJaf5p3qbU8q%21m`GIl@(`9aqA&IX(&$Z82r8b@bM'+9k2"
+
+brqe80`cEPMAKT%SdYUhhhlEYRCVk9RU5'&bSM+FT44Q+UrCMpGc',4P@h0k@"qG
+
+GhSVV#4m9-kM%c#&K&fd5&1d5chp8-ljpeU+`XBPQP#arc#q93GAaZD)ZHXj(rMa
+
+YSKL$*YT(2CY$mMb&TR,j-keYPIp6)XG3d*iaZi[I`Fr-#rj$[DiB+cj!BJmiT1'
+
+SjJc-HCX`1+5pl86UVkQ)&2cVYR,CplLU&Yadmd5ZiRdiaXQQJc$IXLSaCNA1m[e
+
+VaR!R06af'h6'b"HP1PrRICRCIGp%qN@#$),(arld(BRKX4HU6U'%,lMUl'a@Pfm
+
+(C6XFU@Lc-cJ1kjI29"a9(dbZhqMlY0ARf(AB"VJ21JedR5drf,!LKQ,rJJYm,jR
+
+3*mBjlGRKd8ZLUYl1m,(q*IB*aV`GSbZ1AMF#6P8jBN2Ukc&UReL%8'm",'BpHk"
+
+BU5'%UAbSKiSJipl66NGeGlaI+3(H#,,3Q@m34GhfFZ4i+mFD1['i&,GM*(9pePI
+
+eQfM%rA0RLR6&d1"3Na4GFi34b1ebj0'M6pXA4dc$emZP`V9#4mJmqaTILr[KPGV
+
+BeebfERD([Xj*e&#C",8XY)PbiAe(Y)MiFL&pU(l`1Ip#(Bb!UKd-FGq6E'CjrG&
+
+RLYK(A*DpMK5M[1$GTTfleE'fjdV3a@TS`i6S`KEeme[2i1LeqI#NjL1IG9!Q5V5
+
+MrMlqPX,)9E`p'Y'J'pTpYL,*I+XZ@MAL%mA,%"[M4U&UCaKed428PYhR6amRiVa
+
+h1!#BPZCe"I*MEB1YApJ,-["+N!$Xp2[Aa,K`m[[h8I6bXF*G#AP#(M+!p"5rca!
+
+RlXQH5118JKaBck&@bd"1A%DX46NL$5TYF)f+r)5`+Lq8QJST'`8jDPQf0jY+NY-
+
+iAK1r4`iIceb5%+H+lfb"(ah[L$!5IJT5'@ffkJ0lZ'Zbmc1X6[-5%@&XJ$)%LZN
+
+YMjRV1rTiAjLcq1k[*P5HA0kPTPRLPA-HNEQ$m!D4'LIP,lB%dB%(JGf#*C!!iA'
+
+Ar[A85-4Ad+pjhhB**YA6&0+!&HGjD02)XeE*EkPM$Z2C2%IEel(-U$Br&a"MB"M
+
+QcELCRflDI,YB@LPD-,GD"NhPKV3Lj(D$E$3%,"PU2"EAi[FIV24PjdZN[&MICZS
+
+l0AqTRkGAZr-3hEGE@f[qj(eI2m+U04c8UE+%RiqKY+1r+lUKe*D,J%a19M&pHLS
+
+S'UUiU5Gbb6YKZ%UU&dKH@6pC8JGfdRlN5DE1apVM9[S#&f0(9*@$4PR#Q+fhj9%
+
+Ud2,)!&)U#9Eh4V[%E6eBE[Z,rTjmm5THqj2ZCh!DaIk1@DmCpCrhQ5VjJU9mK0f
+
+P-Z`CX3Sj(mmbZV'@jr,D@H'$1elhET[,RQRhq0e1TTQeY2)5m4qG(VcI2TiFCEB
+
+m6cKN)ViACjV(j%jqi@Z88FmC#$SmZ-"P,C&GMML&DIVT6M`%Va9flVke'UdB@HP
+
+hYq["bI@,cCce6#GmT2MkQ!)2E9DGBIB(lhaBBU#$IX8QbCMVVl+YcVjYQd,IJD@
+
+pjI2[r5)Hj&E0rNfKh0$Ii$jV3pp--`4,c82`IbM*2'Ab12[T,PE"1cGeK#cj89*
+
+9HjTC86b0)0,+F%TS)Aqe6QD1q0I++2rdIH+[8ZNdT-4`N!$&#a`mp1qTCKYlQ8&
+
+UF-5hU18pq96B1pIKm33Q)'-+R&cP*%TSl1!Xc8rI"H%%VpRRUqP)'Uk+qApY2DF
+
+RG2*HI'0,V)&eXePh,dl$9[SicZ%"`l0F#&F#B2+MI"C04I+Jp4XSqN8iXpd!S#8
+
+-@i3@R531#U6r-9c"+JU2hkZ9J48Er*iKd+R&(BF0K4+BGU`6)cZkA+GTkelfNL3
+
+N&RP+RU&U(h8hLPl69Fh"*-a9cF%bfMTV!Dd'(RCj8rX8-9Y1m*!!FXU()58MRM0
+
+mScYS`96R[b-rK9RjIKlSH+92ZVfME6RRSrEJl5m9Z+M)[&9c!&"i*Be+dEef,'9
+
+(eXHEDS&X8,ma%!Uq3H8$hI`"E,cp%QMGKqbE*4VJ5kqN*Ibq*`5bE0V5hH"Gppf
+
+pR62P@VXAR)U[jMYAi0h4!4`%#Nr6EQeT(1FfG+PNQ@Vpf4F8SU0S4e"ApNHq)mK
+
+&j9*5hb!FAik5XqZckcI`Xj'3!1@rDqI!BI@iriE2NrYI'M3MG3r3cYTKcIfp)5R
+
+hh`e*0fMCrXERHBS%f9B-9Tb()VIm!T'MKmGTXHhNckcP00+AH(6ZNa+*Vk(a644
+
+eA@jRASXah&T$SR+l-8lQR&T+TS!#QMI6Zk+2SUL)(d,QmUA%))ZU8-K+Ad9)[SU
+
+*`!Q,b)JkREGj,,KNeD'M4#AGGENF#[6FC,P)RbfB*Er[pL61&cm9IpBH%(b`V+F
+
+M*V,rGCc-qGQeI&3`[GLIakD&9MGf`AkNB&lTF%UcA5V(HLC#-5k&IlI0MR56##E
+
+&aVAMN!!&2AFeV(*fH21l2K-A10URKm[)LV%LR4XR(QALNa5UNJmi840@#YIpbb)
+
+XKJ69L$1+BTN)1"#Vb[)ARTa&L2UcjQVXa`h)9lj6BM$k're&P!hc#q,Yci6kfK!
+
+IDHkiADe2ASqNfc+1#UfG"Kbmef91bXP2G)U[HK[h'a8e!B2*P+X2`Xr3KYXlb[X
+
+pQ1Ij82+(N`!Q(NNlq3@BlqAUelr1lD6VBXQY'V[`'%8,CUG+6iXrJ(XiH9K8[bj
+
+IEmKhE@))0,1(9I,LC26PMBcdcr3(YLDT2'YbIpb6hQeMPJY8qIRGM-p'5UEi4`,
+
+ZNQBjjVB+DePMb-h3dRk%1Z02Gchl&iI9P`aZ,R-1aI&,JYQ'[NS`iDq"IT4P#&$
+
+K!l1@1[fJeJ2Gde!Mam`)LfKb!Y+LkVD`,E&j$SV8k6AAiRAh)NGH['83BV$Q6M4
+
+1B)h"Yac2+Y$q4pBJ-8TVTG5UXZE'2LZ&[8V$(m0Ykj,pc*I`kbDBI3aNI[)*`M&
+
+4rAKk#e64`c0M%Td5`&VZY+'T"Yhd0G5*P2P!1`0ec8b0D8-CFR[p0A&H[3)$9cD
+
+@qPFJbDR'0fmSb4T$1p1K9SQK[)`bXkb10Z3eJK'X)iH%jc6[9%PBSr'"6N'`@'X
+
+aL-BAmUPKeAUNl2hV138CdiV'Mq&IAJ9d0Sr'@U3RlZN$Yea*YH1%X)96'DIf!Kh
+
+M5@[2[MD"ePl*R33ZamBp'+qNEYDXi3`dSXp[hbZ))e58N!#KcFq(-59q16[jY1T
+
+0dX2lm@F1&%&56M*C@4m*cNF#*'NTY*qB,[4T+''bF61Th($5"K8V10ZUNH'2Y[#
+
+@D6Z+@,CU#RT5Kkl8P%5JQ(FLN!#hiL)+#$+XfH+HfDXT)0D+SSaa3@kA*UjQ2+q
+
+9'$J2X')kBb)I@lYZ'HkLVfh8mf'Y#T`QaHaZqLlQm)qFl8#4ND!eh3ACd1LrNq$
+
+-3V+8JedX0&KZV42C%*f'3)AR3[$[b-Y5jL%X6Qhpi*VPYTj#fcFchPlM%1[Ja9T
+
+"iC&6Bmcp#"lj`*L(-8')$VG[le-1AQ5F!YJAV"!&b1,$I+pqJfDpaM-qE%rpfZ-
+
+GHjRBqpRcdX9J@dAPp#i9!Tj26Rr$JrrK$*8)m(iefc+aC[+Xd$qpb)LMD'"Q$DS
+
+D(aP*jbI[J3$Z8eb4-8YF,rAYkJ39KD"&FSefEAcGBNlqY5b9j9F@jY',KPlDkA4
+
+'NkCF8jQMh[222Ehp+BYD2$TbQXK9+,rH#R"X0@r,),8ap'hY`2im8h&lILYqNIT
+
+X4fJ"fS"J14qr+iiK2aI!)QdEq(Q!%Xd@M90qNDT2pNGf&2XG+r"MbaDDp(Uq!+L
+
+F+lKAQ&lb,q"B6P($dUZ,dXEU6J1ec6N$E@PpE8hUq6SCY"&jGU$9ErlIP*VH'6l
+
+qa-TP-')1Lj`P6'j9GpqQ,'cla'@rp#i)YXb[*6LT&8$a#jA@FAJi&i)'d35fXVD
+
+%Le'#*b4-G(l`SaAl@$e8Eb`(-m-dL"5r9[515kca8AI`""UaDbiM+qeiM!aGhGE
+
+3cXU)#A4UAYNJ'Pl8EUcaNkc1mLIDK@aXDGMK)(BS-4piL3dYp&jDH+jk12A'Z+p
+
+(-)JXq2F"L!ZaUYM3`BbF9Na`,Y`XYl0m4(4La4$a*lMC"e"HR#IEdr,ULa*6'-8
+
+#F,eCA`l,5llafYfcP%Rdh#XEJl&,a#Ja-NTEEm3E"12[pAqfJM33*a4cEjR0+Ld
+
+qH#hrU8)kNal,JD6BG6M-,R$AR4CHRfCThI6f3K"8Apq+)+j8CBkT`T1L3LD2k*(
+
+5Qh8AaLpi+BaY'89M29)KXNq[p63Pbp@2V9eQ&FCi3VILdm5iJ*i$#PQC+$q0UR$
+
+UH5GJk`VMFf6VJVe%NhGYYIEKA+l&)iYjG!!9*)E3qrljk02Db1Aa[Bk6LD-E,[,
+
+aS2P-kSH!2L8&KaklVI-K)@ir'3+FFR%%jYKcI-Sm0aVD2$F--R+Yc#3m5lbmKhD
+
+E0TQ0Q-NZ0X)('(8P&"`YCqJeVk3B0UkI3ciFZ5jBmRAl`TBZUNCa"!XU6kIeqhi
+
+G)*rc%`#-r@&Mdq"'@%0NAhDqdNH$[5f4C*VDATG&+Y-T*cmi0*iD#`a!"d',NYQ
+
+,F8qjRZUKEirc,iUKZfJFMm0lEabJIJc94!496)mZVL(#IQiBqR#RQAH#A32IaZb
+
+@c!H*`Edb3acUBZLR-0JqBCD$J85i4PA"LKK46l3TZQ#kZ#aL-P@4&kZQb5Z!hdi
+
+a&AGZG5k)U$ScTREpZS0rN3BV0A0hK1-1%(,AAHADEqqF!jF3#T!!B&TE9@VeAHI
+
+NBX3DaPAqG-X9CBUfJYFKjEQ+Kj6BAXjl+YlAFT6!aYK'2![KL2lP*RIlRX1,BH4
+
+%RSDRCeBd3#1kfYTK0acGk4"NT9,PJ0M-D[6aXi)L%N,ALk"AH*kiEli)CEm+1NE
+
+i"X)AEf6f'`[!Q@mjphIe-&"&GYaEC#c()UTU3J`$44q5la`$88-@XaHI50qVM%8
+
+425IQc*lPp#YBpUSGd"Q94XGf4MUH3F@r`Be3F1@I-mY3UaaqmIAlr%Xc!ZrEbr6
+
+VZR"qlBU'-G*h6er$UDlRif4KGL*fpdFaXL8,il)6,`[TP0Se18YpF8iLKIiZjYc
+
+)&-@e+,VNMa,XLm+q41-K4'd$PTKp2`f&Pa3d1&a5Qir3PZZ`KBa0)XrTljIi`4T
+
+iUB6GDRbBhC3,Q6I5"Z2iHd1,ar$ka`0)T((#YPHYZ8VJ@F+b3UD6X-bC$5cpB5"
+
+B``H@f6EiMM-rI)&FK+UPY3UcIYB[Iq)@'V[X''F55&8rNXcj##bIHq-""4Mi&h!
+
+DYD[(D0VFB2!H)qXTlH4Yc@+Ned,T%[meAITHAe,SS1mj4%r6l#CI-mTKFEJmQ%%
+
+3&XGa1L$kiIRcelVHl3IUmfciQk[dkcV4CA"53)Fl0Cj0PJPRQr&0V3#ErFrIb"F
+
+fK`P4-m"q4NA-[k*@V(Cl,!1JkRDj[e[iLr8iNaM`maKJ-KY%`Sa@@G6K'``R3VB
+
+'Sr*9[ZcH4Aji'LfQcRJ($rXiarZI4K8l14)kdf2lfkQZ"YA`A31-+VDP*SdUdaD
+
+Irqqfq+pm9!4'!ArfSlG)[kkfrU,%ap,GQ2dF*kGkpSBHLVTN+45`Ul`%jDr@S@M
+
+65B0&Rb*@R'K')-Y,9FL5eRKdeAr&J+&K$mBaK)4%c65+B4+dSZD'CkX8b9`HM#q
+
+Y@br3"ZR&)prrI&Qqk,V`GE4(3K[B)hi59)YQN!$#3Jcb1+Y*5rp8LBD,aalai62
+
+[M$[M*A%hVa9ZY6*8fSFba-`CiFrPeh)KV0'"iZEZZ9i@RMG62S$ad(&a`BS-GQ,
+
+r$CGLc[X&X@K[c0iB[*5,6m0M[)cPK'rCQfSfN9XIAE,AYlJ((iE'G8`,NiM1jTZ
+
+L5hlN-$NiV8ka"TBEI9Je3S&cm'MVDrJ#9[$DfZ5+,cJF@R+"!pPr3Bcm[D1lMq9
+
+4kKTDBKX[LHGe4p`eF3KCElRlhC[&B@Y,HbLlT`43[V6qfDr4ET,'U)MiUX!Hhl2
+
+e1c)39H!UV8TV@2c[b`j@5dZ8TlNRV-%4k4Ac'TK(crIiG&2JG&-c!b,q'#*jLrU
+
+"kA3U@"$P#p5fVHil-mT@a5+5@L[S1C!!SULE+3Em$IaY@53#1pr)pSD-4!*EXqe
+
+4L(AMD5caKqCND$1BP5Ld85[U''6[CepKH#pc13rPe+jfPT2IblcBLQ,Xk@+qk5)
+
+*pE2UTr82%l@558lq5K`IDlZU-,bepeY0rikAG6p(IEZ#8*JM)rDX3!6#ZHAKDZm
+
+-LDk5,d*'YURqpVPa4E5!QEMCKbP$Z6KU`19N"Dc3TrRE6(jZN!"9Ni'-e!FSb&p
+
+HFlR&E6NQc[e$'&h"ReY0F1LNNL#*2#AU-"NfFe2`Uh0'0r%HA0eiL+X5N!$fL6#
+
+HFR$p1jE4eU'rVEhMT8L3!+5i'pH1jqak!9+%S9ijClf+G8)V'j!!C36)D#P5%$%
+
+5p$&84Em0+K"`"q!HI"#4`[UfZRd[&Vjk3pI520SQ@HlAKi$`ED"8&rVF@pIH34*
+
+Af&3jM@Dhq3FibKGMrap#**SHGcd,,6@!Vr!&U9Ic(C[bPhed,),FVLa"-MJU-fl
+
+@`'$b"kr1j1-qRS3EFm6MkLDc*G[eP%P'ScZ6d!L!GpcZHm--`Q[kGpicr4ciHML
+
+"V4ETBK)IQ$mP'M[8C'82'dEl)&(,&Td1-#1N2eP`B$E(J$iYM8QlUQLD9f$+-"4
+
+kITH-rq&8$+UQSa3R*RUPkDCS5%r+*dBSA)P5a8cldeh,-PF""-RD-*aYb"mNKeN
+
+pE#%rXkQf(0YSAR()Zkj!iN2V'8cUcY32IRZ$ac',&VK%&6&(hSE5VXXl#NGhUNP
+
+(Y2fIQ"J4YT!!(U#D)2"pS$rX'l%RVZ@A%j,Z'XZ2"T`C255NlA#8ITPqcb"[3GT
+
+3YSHe4jHdqLKLCC5!ImYU$S([,IZc([#!PK%lK1lPL(Z,VRK5jeMS`"$ZKMU""PH
+
+LJdJc[+('1r#54p#Fk[cGD(#CDAp[pFG9rlEXIQZFqS5e0KAX1,P"$iE"L%4Rr5I
+
+MZkLp(`Af,H4Cll'Z5BAG')XH(c*r$4lA-!hqUN2Q#P'epZL+$lqG%HNUp6F9Zle
+
+@'1)KiL9k`LHISA$i6ch'JN@fVfAr&VV,rkmX+TA9#mCe@2l[JB(mI`F'GR`FGm6
+
+A3%Pe[L9,9&4`%ZIbDcEK*q$DH,M(pjG3K+XZBd6GKUp'M65jqMSBDB*+bS6j+6S
+
+Bl`2N"`!mTUSMJ8i&G+'-5KRdh!ji13Uf3fPQ2b5TC-6R"YZ'Nk8Nm[!I-qIGDCq
+
+"pXAP0cGU@$3I(LGpDaE"1`,ea6iXH&FYMUVba[-Tdp$fi"qPrAJGq)MPDV,L+NU
+
+qrpbCjEHrIbd98)l&A68qA*mfT#F"ma'rUL1bD,l-aIK6ZlTG*p'A525&Yq@ILY9
+
+iFHBZ6bBdHZRbFMiYaGm3eJEZ(q3m@NQD6L&51)Z2*0LRlX#JkKQ'f8,G(B+5IX8
+
+fRUi,+Q2@62XdHEAGBXQPk)f'QZCdrA!Gjr$"LZZjDp2bRLdC*hTTI+(rYDrDTZ-
+
+lB(Ql#0kGT%&6CE%L-'EBfUXH@@Nb)ha9*"PCIMf2h"dFq)8@+aA3YpqZk(5eel6
+
+TbmThN[M3'V#-ph9kKl!55aeC-aH*b!J[r6Z-18kCcPdB@0XTV&PES%e`i2FeNHG
+
+5N84SiCY$r4bA@DGaCI55*V8DHEKebI(9$85fH3ij'J*SMQh9cV4S-kcG8Ed08)6
+
+3HUIaF#hCM*(@&B@HZ9pqqJMcp!(0hd0dl(jbVZ[EeM&X+6Nj0af2V%mAR09qFa'
+
+"TCEB)ZdRPGGcHMd3MXA#9jA`[2,+BqG[mY8kNPVpD1P1XJIYEAXP5C[3mIbZ5&e
+
+GPNkq-q&q%6TN-p!A@98@8Pi+"ULLKAmY@H(ZlLed2D!b,d!HN!#PdeYCR@6B3Ie
+
+X`U+&IkPd8aE-`8cSMf40Z@f,PVdlK%,F6IKK+5J4TZmBlEcM@bB-E1*-Da*5p*f
+
+,&ZJh`9P0X#&'8I0$9'BR!GV'ATbEHJ9$Jf,6j6)#VJlXP*Y&ZTb2jjXVAp`eHbT
+
+mQYHP1M1H49MRf*ZJdTeBaVj"8BVLCY*llJh%f6cNKTFj-6RPhLHI`'0c-VIE$A%
+
+HDf40iJ,ET0IjrV`VI4+S*b9LI2NL2AlhlA(qd1APmfD!#jj)Kc#h*r&erqI"Fd6
+
+Si$$"4P$0)Kq&Y4F*P08mjMUaZDdP94A[EbK"r6mIPN4,-eSB2rB`KTlrFYjEBE5
+
+50fm)YGIfMl#IeUF5Y,'S(UbIcGp50#LLkZ2bh48%YrZ8lQ&CF0D88SBNU*E@jiC
+
+F*,dKq'@5a"ABEIIK(K'!#J+q%UZT)*-D)f'V!R'rHCK,4#*3Vcp$F@DDiqNE0)i
+
+4Fm@`!HG@$D$Ii&Yk9D`4XbN&XT&lbLUi%C[)J0jCk+U[6KVS+hqLiaYmZ1$L,X[
+
+Mj'HiF-&,*iAf@E!M$CBP6"Nqj[&6A`aPZDFe[j`"N!#h!QIK5bHF(Q3Hm*F[!jd
+
+%hl-r,DRaI(REj2Qb(+,f!C!!Apb+cIN&%PYc@I[pU+I&1X6DFpNl3@$dQAr'0%p
+
+)Pk98`%dXNa,HI+khUEdPN!#%`@0UHBV-X@e`qQF4L1[d#@aR$8G(@3%&L[cecVN
+
+5+00KDJJM$U8IDqTh8dJ"3)9j2CS@l#XLZJ*klGp9Pqq#CB"Cjq"8iAq&%GGLV99
+
+6Ai@rUkr#IkZ[rkpfp(8b@+RGk"*CCC&J+Lb5TX4D+1A,5b2pUU,B$%5*PVk4e,T
+
+AcK184(86mU-C(T(lK#jfSla3UZGiq5JMQ#13!##1QP3ArcQ2I'%bHPjYJ5hm,`e
+
+DB(r!Um+60MPlT[+em0q9Vqr8eV8Mf-ImH$1c%*a#@+1im(@iJm[@dDVT5Xr$mY*
+
+J*liHhj!!`ZT0C*damLV"UqpN4,k+4aCb`mdf!S2XF'H[+$FJ(K)016FXRk4T4l9
+
+--JL0k)0MZ34NFZRFar,51D&E[AIFb@rDUU4*Tcr6!)"*hXfR#Brh8ZM'`LK!T2!
+
+K[[kBrTKX6(DErdrZK(#,GURK4"hR!mp8fr5q(TjIS24T,ShJ&Xl&GCZi(5r9DG,
+
+Y(!05Xb[[H@,GkJSbAfeFGTZqLTIi#kMB5fhMVTJeH,'*5ph+IYaP,Nj(4i8NaJN
+
+llU@k2)+qrZ6$iSAXQ-2UaTR+d@$Q-1XH1j5#Y"aTDP-mVY`MVSam0IX@f[)DIGE
+
+$cipejpm%#,a3p1Hq$,bU"[Kq$c"((1J,VC!!,jPZZMkVacJjrdV@4E`jMChk-(U
+
+eli0(%'-Sr-QXA0YDRY@mij[)j,kF9hQ*9[D[51851A(RKdjE3`EN&Z-m%pb8XS[
+
+%L[%[%3N13BjCr4cH0LJT"8E@BCYbDU'iTl-T[fUp9[6e0h580hJcciY0pq4EL4f
+
+*LKCC+HXMkFeFUD'2Z9heLQE1"42NN!"(k4QAh1Glm0,aaChTp*qQ"memfMZ@ec0
+
+Yk%khQ(Y[B#L%Z9KTpGl(98#&NXVReIQBX(AK6M18$jQ(cI@3!"$SIAAh'N`VC&F
+
+H`arC$bRBT@4!NMJIHb626pbj8#L5lBe+NTXH'e82F2C2Df9fd[+6lmYBKGBSqXK
+
+0HFSKcfe2Zc&'$90-YLMhf$6SNIENcI3bBmCL9Xpjj(RYFMjVb!k@D1V-k1eQBZ$
+
+64@5Dh'XqKjYdH4H0HU`il8Pm`MHjUV0&Z0L$jFXTpj!!FD0$M2l*P"5f1V5XMLm
+
+'rC)JckZ2I)F[JUY"TZXLM*Y%4Qh66mjrdJT,1BI9TMSqK@Q5T+GPjY*08mik9`f
+
+CV3bHX%c9Q"pZCZklABm411@VT6#iU@q0L*PV3S5kj)pY@r6&Ah)1r([5TpIq8-R
+
+2TE8"02UKiEZA+29P%L9H4fQGeZJj,&#CqYXhN!#QXEk5&+&Cc*+JB$UMlE6K,Xe
+
+1YMb(SpmPD9+TKXJr%!6J1H5d`Ql1AEi*H5,Me%SbR&fL9bT,a-2d*3kAe)U9hV-
+
+8A4i,L)6HA%!-(-kc$%BMFNLI"-4a*GdY#6)AP@YJTjP6`!K`[hGf@m2'#i(eb4Q
+
+9969H(jYSEkY1iKU8"Hp@b1&1d!F28)mbcR+)GD@VjD-R!YP@rU%PfENcjbFM0ED
+
+"a4#Sm&J@4$G1(iCd)$VSYLF,M1bEVc#rEAN4DcJb*-rc9I"Ar1XBN!!iHQ-XEQ%
+
+HUEhEhKI"faHPUcQr$[@e!,,+MlbI2R)eAKHk345YeL)dL6p+$SL"P$%&"+6ePFR
+
+aqEh0l9J3%qkB`NbcR9RL5i@Mf0pm$J$dNh9$FFD,8)&*V9[XNGGpV*!!#B''$iH
+
+4,$m+KBE2U$("DZ04i,FEHVaemLC1$F-Ec"k&NP#e9AfMK3[BG`DjdeC%9pb)#qC
+
+i10IMQZXlS6BVJd6J3R5(,5AQe5J[6!Y)+f"BhkA*U5RJleDLCrf&1N@LAU!@lE6
+
+E*-JUkk-)CSB5C4q*QJjr@+rYhqa'23Ijiljda)(rIC!!9SH&AX9VHidfpX[bYLk
+
+Ih9D4UEF'dFRCF""15)r"a4Pe2RF!Mf@d(IE'6[1S1!bLK4'Uh++mj+E&bQ*El3M
+
+2)Uji8pG'@&B%DVjlEqCLMQY(X&(`[DYcDk%4H)m2,"QicA!*c8+lp`kj6%!eM'G
+
+1f``EM`9h5Ki*lKeBQkkY-L2T*,XbQ0QVmdq`"+U+C*%ZBGP9UKh[Y(TAaVNd[XC
+
+[C8443G@3!1Q"bHD**RXrd6a`(4qH*kd3j3ppM3XNTaJC00L+i54*89i1S*cE)Qi
+
+Ekcfhb8!)hU@U6+pR@-(D1H!9LApLD"+U2rIjiE+(AKE-dAkAJ-Kh0m[hHB%43a6
+
+MAq8*ehG1lea`i8@PZqI+c,'m`AT%[AYG-K*@6rhJf!hq#q1(p59B3mBG`+UDeBN
+
+j0lER[8Q%L+RK(J92VQ9YUAAB2f&H!VU@-6p#clUU%B5kSK4GDlp8U98+e!UVG4C
+
+d1Q[B8HdKU##I*'+cMKFmd,Lh)%4@6QNppGZ(9iI@T2C8Dl,Rd+NDEL*aeXNmER@
+
+e,VFM5Ik4BiHdXb"eNL"b83V$i-&FK5pfGhVj&RN[k-&CT#((A+rj2[Jh%LTNeU(
+
+YNP0'P8&XF*!!,fcY8!j+F%@@8`&XmlGJj$Qbl-bjG(!R-3dLm#5RiCpLfdi[6K[
+
+m,%PK[d!5JT(@JZM'LHe`GDZh-qr8IV$HeBQ[erRdXq!L%kYmYqJX&1dHS3c3ccX
+
+4Jm88ZiK*PDX#8hp%%,V,6@pGjP6fdlak2jk0F0M@Vkeb9458FBNV565EH'qFSj`
+
+2$(-(%BPL9Q,r00hM$QPhH0B3KjY-0hb6)15M#hl%Cec@pS,$"5d"i8mQ%JMT"8+
+
+J0'CY$Q9j[k$1f'T[V!q+*"fX0d#5eR'aI8TN`8dXX+@m3)8GKT*Z+-(`(@#hV+G
+
+*C%4aCHE$CZPGi)-`[M[-59D-KKeNPL[!S!NZLC&HhqiHZJ`FBrbFLR("Z%eq2mm
+
+fS)MZfV*Yk)Jl*Sm,4X0Z312IUfRk%TX+jUN2BZXVaM)5*4pdD&RYXjqfe)!2b$[
+
+9#6+-Uir*rAPid9&r46C@T$IcRCTc!AhR,G'1XCUaqMYHh8Vfb[H#YGXKSCUEKbe
+
+#aX[+erk"b8Y,Ne(TYhSXVbC6#Nj'HDfEM[apK1C`aC6U+bcH$C1d4IDRaE'eVN'
+
+r4Qa2DH&U+4["Z21d%Xm#L[8k&T'82B%Cd95ffaY)8*+FQqE(marCp0AhHC[)G`,
+
+5&jbS2iEp!@[C3p"a`L`!Tr&*$e`6pA&5e4I1'K5PFKK1kpJ-[*PS(0$*D&lRH8-
+
+i(TEGdSrAqUf&S16h,$$+HV4A#l0`*PcEL0rZ#0IkPlc$fNCK#)pbX6ClbaJd6YE
+
+(c2QKCl$#a$,2RAi%lqYdUkU#Q[@TbY&EENZFr&4c2p+LJde[Fp[2,Vib%@3kE*Y
+
+UT4@MGD#2h##(Qr5ZkHeqb1B4id-0$U5$S11TEh+GP%I-l,Bl"5q9Mc+&0Ue"I#a
+
+J[6MIp8JS8%Db1+XmbC'4LPk&[G08-EH930h`A3*@VKdIpFM+C#,AEZhe$,F*qmi
+
+A[Ga2!D[)1E+*8%qa-+!lh!SiI8pR0H+Jc(bEL42"B@dVkXB8a2(fh92*IAH9Ep&
+
+hp50AmGIqB$mCh5A*#REk!#((Ba[p3aPb6(-Ni[0A,Ir2H%*8YAB2kaqHd"e'q(V
+
+mb1qRd$$m#l[lE(NFBSMAAC)33r[p,)jlj*RCaVDDL$L)eUp(aY%U@$hf"kRGmL+
+
+(bL5X+lK@Zeqha(rDi"$885rbpIJ,pPDZJUD6[$F5S&BAf9GlaNPm8rCp05N[pSG
+
+hh*L%AP*Ce&piXJR@E"3Maq[iF@Tkr(&VL`aQ,$!B2&$DaN&Vk6Q8a#dY$0'Pp!$
+
+k23K5M)K5ATDemf3j%e1%VMIqT"9*(C3&ZUiYDJG5NKS4G!SU6iaZRNlMRJijZGd
+
+m&"CQLBb8%DdQFa214$0Bb2E)6!2'kZFC02XQFXJNBCF"kMLAk8l0!aMaZ-C&[G#
+
+[&e-1I*8DrlG-X+12&d1pe0qPI6F4Y!#dMhjE)VRmr,QM#-&Hkm3d$aBcZF%qY8l
+
+XplS1DV`I+[dYD%IZI&`1"N4-FYIc!J+iFj,I2c`fhRZmIm68IY8M5I$ciEZHl%8
+
+GVSiK0L`IZ`Q%G+-aqF#CFeDr@,11EB&-khi%3@mlP@K%mq(CmlDZr`)QlSRbeRL
+
+"fraMk252Th&UN!!2d6qp,-)KDqHrVMfFV`irY3r!pG`cB%c#HATebma6pZ!6"32
+
+MB3q"C+1DE0pEJ%+3!&4i9)KIm&'G1j!!UI9iG8#B$T-T$FQP9IZSL$RSY4lPr("
+
+#`,U&'#FZiZ81-JG)p[1ieFYd3c4`M$NrV!AJIC3"dUaFUTKh)3,KGqA9ireSb2"
+
+k9qL3!*!!!,$14H6aFr9F4!5Mp)"3F1Qrh359@`bT*"0KS39()F$QfHl`(8AVB$%
+
+h+5F8$#MM[@,'hikTh8Ff&'C9Z,eI35T&8YCIme*1D%R2Z(Pd4"HB#Xar4bQ8'1d
+
+3$)L%dhR-BPMr!"pZ2fp)HbDeD6MSjN4p1li1jeXFhGhfAC,i'3RmqA'#cMD81)`
+
+-HEH&qp1jf+i"MjfDRJJChRj9$,bHcJ6MKBM9&G,$+hq,X#erDJaKmC3NB&$)`(T
+
+B@S9qZQL64VpPZ@e+AJ*[bTb(E42*ajEUXrrLQci!r2%8II$[6Ua2Jq#bXIc0'5r
+
+q$DQjHi8ccPjXcCdYrXh1$pcCiKmhdLNb33NBZT[Iq*,EL[rGcRfeQY58kX5#'kZ
+
+Chq2mjd5P,&Ha+[8imP*pN!#-SCe8e5GZVSUqmH"2$9p&4#P-SKb,N!!T*dd`9J3
+
+HFe@RX'IRX1KSD)+UQL+kCDlbXVh2edGr@P`Ab-"d2$aN[[KZ2QRIXAa3[kF@'Kl
+
+,+jY+%R1U[Q)eq"L,)Ej-$[FKLMN86jIp90j!X*,@)VYhdD5Yj0Rc%eN5iGi,J[L
+
+SPGcdFGY2Ll)8bh!M6qGkMklpq@VESVX8F-[&BFf2b!S'Z$iPVT!!Nh$iZ(*ZLY1
+
+-![jRbaPf-DA&#D4f1pjFFfk3!0$F6M&i8F@kGUm"Np!m33d25`aIR#jeIm8ZDX@
+
+jNri5H$4Z*(#ljjh@A&)03fNeQ1A@ApU&)&cA6&NVL-R#(Ip"6k'mM!RCdH&A2j0
+
+1%*m+$`-e(PNLd"I'Qba-UBH1$qqZbl$'+S"'I+*%R59QU48dDPc'L#A-C5HFQAk
+
+-9c@5Y4dj1r&HFbQ8Id*afFqlI-lH2feXI6XfD6N`R9F4+91r)369)SdeA'+lE89
+
+'eX+@b-A`,U!MDd!S&ejd$j-4hrrKmmjEJE,Ip8I!f&IP&qDF#1NIba$5`cm1-F5
+
+q%VEb8hA#2rJEjGcd&p"K4!3UfKiP&i28f$dbSX&8H!jFf*N&k6aH'L`L-XG#5*3
+
+HIfjfYMeZ4Rip[(mXDpZ8Q#L#6d!(0k#dV#&r'J(eiEMGqjL,dE`e#bEN*Tc6"8P
+
+k,[)Sle-3ij2#KFU$$2'40l#mEJK4%B,S&S@(Ac!FBJ84V%*N5e3im)B)M$qJpdV
+
+#RVqIE9!&-E4FC["Z0)1DAU#63F2c!4aIKcH8$'Qcp5ITYd9I6pa'e!32eXF[Z5U
+
+GLFq8Eq%ZLm0pcpI4*DqZjUkA-NE#qY%pEcS3f3Y$HC2D3PX4)!j6m'mqHHa#S#1
+
+#+8I#JL3HhiGAk0DYB5Sq,a-4SDT3+Ymb$JfEHA0m$!!mDPd,5S6Yc@F'1A8'aN'
+
+Q@`9`LR4[F%rT-c1!0-"(aME$QEE@pT)`CkCC4fSQPThIhX+A)'+0i@VV9,VXZ&$
+
+`B$kL@+IG&iJLX#Km)ZqN%e6Ae`ieqaS&IPBPERe*QA88ILKT2MTFhCbfI+T'pZ0
+
+Rf$[4G6B,BfM'dqJ*L)+eQE5&,r15ahILf4KbIfm29,%Rl9XqkD(XQhiB*#A&&&k
+
+(ch9H9lKke&[a(X(`@"p))6PY`q(1)%al6K8(aR+cm()&pUH9#(X*Nh5j'p@!h4I
+
+r!CIIp[$$R(4i"BRZZH*Y3l5m'*[mYhG40PSQh"p6Ul*Xj%+MYciKI'PDIEH+M2E
+
+N[S#HGQZ8bJ-2p&G&Y,D3!)qF)i`'1bjpR3IA'@T")prEM(bb(iSKeU`J(54iT%`
+
+0j88+e@V4[cE,kGVj0lhb+3`2&r-#B4pIKl2Vc)`qT0)!4DA#idKeBQapS++fJjT
+
+A!eh%9208-[fU66+k6B(B5L%jmBQ*0T3VZ'5A*,NY0)43`[I$L))fa)qTbUhma"!
+
+mYYfDD$rH+SHcVlTb#SbP#Gp8q1F8F804l&YSKfU$9+8RLk+(E[3%9pbpTYmPm5k
+
+2cA'4C,kK5p%2*%`0BXb'-(+)DX'YS%KL5E,18d644CJS4334Jk9HUL5+bDePRke
+
+i8p#SmZk&(,58IGLiMCrQ6133-c6,G-h$aZLV++ZHCF3)T$0imV5PeYY!6(lmR(T
+
+1f,jmP-$c)*bIS5l+A'-LAcH0IqmElMJ6d5,SDPdi#&(dMEmCmi'hrGcQ&l-3DIe
+
+Sc[Hc*N0IX*@1BB`cXKIFU6PrPGj3UqrRP3ih(Ifc8e0KH!!eGYi)[R*5aTa!9`[
+
+"j-J"br*!Ae51,c,kA9eqXBFLYSGS'Xl4DLQ8FB0k-mZP#Y0$T[RKmq1-*`R*Uhd
+
+CH2I9EKXGc5BA2fl`%a0Ie!V+!SNBHMT3rDQ1S1H(NKA!%CNHF&(LUJ5)5!IPk#X
+
+LQjKMqq`lp`JCkBE&Km8")0DV$Ap2I,(`SbH)f9B,ZSVr5i-+j*rS@9D[NhV@9"m
+
+Arl[kq#ZDYRCU'J682Jf868A`HPK-A4Akr"6k&ad22pcT*f-Gf%fH)p8(#NL90*e
+
+LSVmJef2DFG"SMd`TijRmh*%QqjE,q[e4lJXbe0AAXVkMe#ZBk5Y4-Biq`&115iE
+
+,!H%@Y3N@ecN[i1(N3GLQTEKd,raYA3dq*N3+!h(b9GMEjXGhCjS@dHQNkieijA4
+
++`+Gj"rR4$Tf@XL4ErI2Rm)@8($MV-('C#[h4MHbJ9"KTZVZ$MZ-Bk,M+XVN#*bN
+
+V1eh0HTN3KQBTAUKI44%+5-liC9`$,$G45Y9)@kcXB%F0RXmXbTQFEUXD#Y#1$JR
+
+idKS)`6jCj)DISiml3baqN3b+V'JE0&FF&BXV1@)HI&8#ja*iC)m4DbJZTfq25T!
+
+!'Li5Ic(GEXfm'8Nf2S4X8IredA1&hYf#lLjI8fm$LqJHEBBR3EFC9mD[GBiiYU5
+
+jINQfEN9),RX5'T*4J!&ErSe%N!!!Y0U8fYe!kekdUB&PUYQI#KIFpdTpILa3kGF
+
+ABpUMRja*4aeKXGT)AHdk@I3r(EZSpN6[D'Xk16cFBr@19BL5-Z--&X0(5[DEM%C
+
+E"Z-h+MFZN5pIRZIfa68pKr6P8h2CU#Gj$L$Xq3(&Z00kUmUMdab$aRH,)d8C+Q9
+
+lPCm#2aE,4KpV-d#RBNj(R`J6#qN-S8dcCMJV1*c38RL[QKU6`U@MURbKL2"mhKM
+
+C`l$*%6N,flAGr0k)RqP1SrMMlX00Ihh$q15#hFTeIbcjZ%XM%iH&*1P89'l+9L8
+
+2+8HS3eZB5B#Kd`2pFaAY%MUlPX48H+1Nhdk40CE%$kI4*d5K`06"YFVF0LjY"`0
+
+TeF3%SDjEcK8,ZJlIj!@@VUTh[B,1mPlEfGA%Z(2cq4m1Qe+kL&lmJlVTS5[6Q11
+
+FSiU'`9qqXCX5eRrp8[54bRZlS4%FEd3@+CN-h(k2(B`40F2(Vp)dGlc!HTUaZdS
+
+[ZKR6)2elrYZDeCe,rH+*d4Z"JY$2KjZd83AjP[ebJ-CGEHC4'Ya`AiDb-&2)VLm
+
+dhCdGfd)UEUQ(aGk)QC55Tq6Y+Mh5R&V-rDGD*'m*Ml`l6Vj,Kj)YhJeZdRAlC&q
+
+I2F6`1cJPZf'%6-920[JiE'#iSlH#+1F!#X6!L"+iGpl4L#3QbBZD@%lSAmjN!K)
+
+h*QeHmB&'k4a,beBPl$+ASQVcr0"19U)J25!GH'I"KA5eRc*IqdQ0Ah9(Q)4Na(d
+
+4D4&a!SbjVY0KMDAUeF@M2K-@S-rJpX,3#EC%3NfUIa&SeUaKQ5c1NARY(GEcB-$
+
+E9G-L0N*BH0)%QkhqS@2V2Mp8bQKf`QD[TeB#&J[2m2fdh!hXMRRR,GfK6qXE6kN
+
+(l'5"Y9)Ylrh"Ma@0%ka[XeH8BG,Xp["kNqM0d6J1Mab3!"(&ZdImaJ6(RiQ6GDH
+
+5jJQAf28SU##h+EhJXR"VD2!jALaBQT8fI6mhN!!bF-ZMQT'Lb2I1(D8P31f6hE+
+
+m*N+T$92"MhjE8iKPVNPm[R11@+Vj3TMdX@3Q+feDAeRTkrFi-HpL3ChQMjIC*%X
+
+0Rj1iT69adih`#ARHr-S-bq9BMra1#a!DH9f6#9$,%8c+9Z"`RASpLCRAM4'Me)J
+
+A8*UT4Q(Jm"U4PQ58XL0V8"*@[m9&iU"8UD1FN[#[I3Yr(dBQf%d4hYdXC)mcQ2p
+
+fq2VBdNSr*[hD3S2"%MPlT@2'(BTNZ)X[i+VqN!"eHrcjb+K$MY'!8CLT2aaf#P9
+
+GUQf2CbaEFYJGdq9`*9"09Zr+`9#6MjY,9le,V,P$aQZ@SZX$8aFVkM)RZNd3kB[
+
+MNVaCJ3DfSQe&KSbAKPeIMfHJRm8jdflllRX0Hr9Qm"ImNXffMXlqU'*6!dFK(RP
+
+qYTUTRc1B%lRdDdmI&kjZ9V1*Mhm8d@-FqQ-6KSHR94Y[10B91AaPA'XA3'm-ED&
+
+)JpLmN!#&Q$EQ9-(6jS4V99AS[8MfMA%Uc)*)&iKqE9Z#Ui1ml"9l&DciF&jNaDq
+
+qcZeD`E+-4&)pZAr$`@j"BKB)&p%FLH2Ia#*m!eePj*rAe3HAl6"rI)+lh6Cr0q,
+
+kf80LcB9aA*[L!&hJab"e5pdhh@Ja"!D(D%L8k(VIS-T'dmE43D16UR#qlf+p@Tl
+
+"kjpHq(i1A%#PU8,T`#PCT#bq529@(DpFQ5&JF5@XcMZ,TBXJ)Qhjprk!,HB'6AF
+
+"k9%A+jSaP3hZ9BKQYG@kG$D2GMScek1@GJ-lF)B'mC8#m6*++Q$-*EEZ@Z1X*i5
+
+S2S4h$diq#lj%L3YX(6D5CJ&ElGY-jND"*Ue!""D5[,qqAV"4m"DC&N,jj1qb2HL
+
+NcV0`rHe8&4qh#i9Xeeh8aEm9D&GP1lGZ6X[fkl6d&6!d-C4mMX"Y2hlA(j($GGG
+
++)96SU,eTi9FcSNeSKaG$4e6%Dl$1YF-6kDfR4C8*jP&AP5qbSMb@0ram954&M)H
+
+1Rm(arH-*FM19PFPU+HhmdNSh6Xj4fq('mXqK-MamdkhhR*ZX#jp$K%J[5EPire2
+
+,6DG4Up(5`Uh-Q`*(VC8&rCPD4GA#m`Hjc+T2ep(*TCT&58@p0HX$EVZk(G$bH$V
+
+(3Z5d3aTPr)B2Z'RckV0"iL`rBcLB(0I8I1fY2TXqjHeh*jD-58mdqA'i)Nh@Fqq
+
+N&eFN11`mjA#[8GK'PFZP5e&9aaZV*ZqN+iAe*159a5FqYH-IM*m21l#V+kUk*6)
+
+)1[@SF+ZHEfLdq#BEVJp@V6bdcL1q,VrLiAlAJ,HVRHTAdDc+3Z*ZQ[Yar%8,pl1
+
+h5ei$5GMX,L'rQ2ldfE'#a"'$K1j@MriR8Pp2%cCAd[5Dj''[PlLRecDaXL0$+i9
+
+%r[N3%lP2VUHFVRbLAEHI$M+*Ghqf!3Nbcea'9Yl!NZGhll9[FPBr&rP5QI6#*QR
+
+FJNJF!d2)2l-G,l*C(3@cBeA&%1BEH(VelV1FaZZG4K5!BL3M4$+J(JAjU1YUU#Q
+
+,`*'C*Qk+HCmqj,jVT,`lTJ%pc4e4kleHH'+TLme0a!Y(!3VKAH!Z)a2Z#ihb*5R
+
+I@D[d9U53!,I,XCS389e00YAA51NeY-Via")3C-6TL1B$@SF0VS%Hd`EH"+(5*%C
+
+J(Y'%@(I2r#9h[!V&FT9lC'F$$bf-9K*04$)-Y@1%"(Y)%Q"bkG)SVSVqMFU&0@G
+
+6miPmSSa2NC!!'URhjG!e-E$GmKVAJ8Z['&4T*KaV*81(E"`6E*KGNI@SB9H8D4T
+
+cS-i)Y@49#iQH6kpQ1XRq!+Ip&QPi8jbi`,TBP"J3pB8"'1(k6iCl5[F(cAMdZJl
+
+*9"r8#'3r0q9PGcLpekl'YkFd[L#Y+dbTeF4VChhZI!FlShP`Q1`iGmYY$rRqeMX
+
+6Y2`M*kdU4cpYdRkID3*ciDaYD$6Ej&G8BD!LMAHFGDfD`Me6Lhir,-RRc!Npbh3
+
+4FMNh&Y)2'K*I15Th2J+D@MkZ+3r$9UL[LjQIkL3#(2a`1J$UL(VM0bH"U6aYd1k
+
+$(bbR6hP`fBZ&MpSR)GLfBID@3&-d%((`'C-[NpVbA)XA*M$CMRmHj0Di15,8dml
+
+LRZB%IDdG)C8@bpH"kRCmPcJ*R3MSL&*R&UY,S0FV`9GP$L13!"JYSl8GIZHj3ik
+
+*1R$IP*(PH451+#pZ3jV1GkmF`XQhq!8V!8fE(kpS%,(3LYS&rL0C@PdHG"j,iXj
+
+epF9kJXE3)@6X2Q6L@TdJEUd+4Da1KF'lZb'qb6G`4*q'$,[HrBM*))p#SGZV$Jr
+
+a!P&TkVVBZbDBNY-F6(hDEA3J3p8$P8#8HQ,,@hDf3f[KLdD3!+rcac"EMd#-53N
+
+8!8EV8U6F3TBi4@j&e,lc5h&CdLEQe$%`pD+[DZMc@Z9RN!#iVX)J*f$U``K4"IQ
+
+*`,K*Aq@AF#JV(Scef8C+Q(!pLPBFKk"f-1Dar)qfh2[1RJYJ4&j8d)lVM6"Ich+
+
+#R-(2)+hCq1"4MGP&Y*ZC0!+!!EhRl$f2k`A@CD"S$E5qKaf$1FjX)bD0KJ`mAL-
+
+5b',Zi&"DRhj9%hIbLIZk!"DfSk[&QQF!eVM$N!$H(0U,k-C'mR%@cV$5J#!&"BN
+
+1AHj(aTbi!dE@MbfhVb3I,Fe0*)hbqIL3!$M646-j'#iZeH06D'E@3Zcf9kP,!#3
+
+KU2JX-#*e8f@4HC*d*,3H04*lHl$H,+r0UjGNLm%#mjaUaV*!8U#AbS0"%!TF@mr
+
+@U@$6l(JdJS0McJG-HA+'#-1mMc2RlSGY3d*692CU`Fe"rB,-,c#GcA1A-6I1@cp
+
+8YZ4,cf-m$[A*'USZ"Pf9+Ah)&J%jXE2#"9[qR1dBC5d)[CPlIYA9GCqd)IaKlTV
+
+jiiT$lB+FfirP"PSEPDMU(j0ALVPJZDHHleH*#-cYeL,k(p8EShUqqr8fVV#M@j3
+
++8DKP3f453AaK"l1"R@3K!lA%!6fEmN[k5$lU44i4PGN&Ci0*FSZ41Z-khl(aXIf
+
+*"p(%B"BhT0SGUZGMN!##UKI15G!A8m-Gp!J&YZ1UhK#V@jGK!`)'i@RF03PGH6(
+
+YXHQY"[P$GrQ1P$MX'RD'bHbZed(Rb880k"j5BSCHEZ'l%A9"@L3Ck2MB6j,"*Ch
+
+TYXPJSC1,$!rkaBL4Xl"MLQT%@5`[%e[2@i@c8$e#[G3"N!$f2$k!K#*j4i-mN63
+
+&C),VBHZ9M4eq$9R1UDM`X`UN'aT-iJmjY-MqdJ$ARBC3U2KIN!$A1NE6(p8f2La
+
+,&qK(6Cp$mNJ(8RcQ3FK&9143fI%9GJH"kca&EpE`&bX&GEY1T6&HYNj+CFcUfbC
+
+kMV+acLBpFUZi!BQ!IE+#5c5Jp!iAJ%YSm+rC`Jp34[UQI&'XkPLkJ9(8A9jQFR`
+
+1cC@J[&C*B!ePqF-VVhq5AH1"JETEff!H`&p'T5r,f4J2rCdl!6F!#emUqVJh4iX
+
+dbm)q2ph!32BRD+Z0,Nj@BY6"LL0IHC!!D`e&PJ+)8Kj#BT!$lY9Y(%Ma3FbJR3c
+
+*UMC6Q+m'51RiYfHTPXB'-m[4(Ra#"ikrfa4qIf+'Pq2IEBSFbrm+)cA(jX5%AC&
+
+MqFr8A)lP[e0clp3#TZDfB%)*Ij-bAG#jq+&63A3@TkR$@E[`H[TcBQl'EP'e2U(
+
+65`C9+X)h2Rj&,RDKQJ[c'ACTTKheNjeH@edZ-ZHH0HPM%45fA'NHa9bjI!D2((k
+
+Y1#fN--FR[B6ZT0Zb6F'(FaZTl+CSSSrm,KH#KpNh[TZmPXQl0JV'rMXZl@[e8r8
+
+SDXIDEkEY"2bm#c-CF@9eGF60FkR&bm,0cQX4j[ChRP4F(mrVP(dHq%dYGG6A6H3
+
+Y[G$HI(QTk5$PNQ--2A,dhU`YbfDL,1eLV'hU1"Mc'BYrH'$3Ni1Q#4i*MPBGHe(
+
+Kcbj9Q(XaC,,me%V2ISm39,6NB-FI@m,b4S00S5Cd*Upi6SXrq,Jc*-I'U4kMTj@
+
+fD9,cjFZ%r@Z)lpK+A@0hKb,UDNUQ&FA5J``FSJCrd#Q+AeVQ@L3fr&Tq`Y9'HEH
+
+(`ldAaC&%RC2Vekk4hM!aadIV[R&bqY-f"`Z"PbB[GD63)PU(rSmqc%eKQ)(AYNT
+
+R[1qdhHq4*"E'bLA85lS)(P0%imk1V28qdHaD(VldIM(9K@C2b8`HdYGVkFPhR![
+
+d1cP4D`CYfT8M`4KDj'aH0!5`lPrBB#L#`ThfQ`Y8MeVBpGY-(YGm"@$PmrDqX%I
+
+1UdALVB*6GkJk'p'rF[%EcQ)fIFE#rjS%28Ta0V,8MI3p5dbc5Cf@"h,*0EL1@Sr
+
+[4#S['p-M4A-j*XUi4+@b9`fZa#'$UPq@L,&D-Lbm2!+68VY'HSj+@Y%"DdVVBSc
+
+bf9JVIDQEph)'2kZRC[eXhF,@ERd[$%d8S[U0dID`&arMpXX[AMN+5fUPX*Pb5'`
+
+1bAhVVf!cdm+cAC`a13XmdV0fQbj3`[N5#8KE,aC4["'&hMMPH*-84rdThQik'ZU
+
+-a4@ipqF$cmI@@DThUGhK"-jHAi3I(iILS)4Z#6)LV@[$03hehellXGN"5VlV!-a
+
+e$I!9pBcBd,f3!)#F+*qJNXpa5(1c!YY+0a!J64)Jj&dcqRLI,$m*cScAHcJr-eB
+
+kBK*mC*3-B4f0Ic8airMXeU#$N!!Dak1RKQ"BNH93`@Rd34PLrkL2j-J95ULbEqR
+
+-4E3-rHYhPh"$dA%cpNP+TLH`20`c19Ch9SUQjQ5j+I%X*0D'pJYF@d)M9CfMqQS
+
+F4EHRI&dHENI3meZ)['`-JaTT!GIPaa4q$d(0rIi4@UJ,%$"IXfKEMV80bUUL4lQ
+
+,P6CML()9K-N$P%DhPTi$)U51Ybc$CC6h$5Sh6S@mGKi&#+3K54AA23bdEd&IIkK
+
+%NHB'K1K*`%d!Z1'q4[+e3("RbF-FIEjdJV28h"4@ESb65h3S8GHGcr!+$8B5T8J
+
+!Q6XT)+#,%PC(DXec$LScFECCL2pipH5Xbkdr1U(9V3X-Sl`"MAY(3jclp@6Q9c@
+
+cVPMM&bR%9RIcVI9V'ef8J(C3Dk,NJKNqk)5$D041YbImY8Brc3jqe*Ih#Akhq*r
+
+&@YULFh`VZ1i@JCGIqrZm4Ac,+1M#p['jMip'b[3G$#6!H"J49R[k+p[3FV$hM6h
+
+XeHDVaTSeKJI[L3eL!-8hiaQ&lI#)6BdF0pVPY[3"MIQFk2T42qUbV"-q#YTb&Gj
+
+eaM@Q#me%P6TC[feNDZVBHqER!5R!YRUkEF8+dJKmm8[aha)50b98$N[aNjd'r9,
+
+Ur5cP8m"Xk,R8H9(l!S'*GVk5`+9HB@#$pkb,rR`50df*P2SaD!a$TEBcBrIT'Y0
+
+(P[6-j@lP-p[%A%Y!b&X@a)-JfKSjbKTiE+Ra1iH1mi!cdPS0*dDUF3dK&*0)4dV
+
+)MT)6$9kj[mZPHN@MjLGX%1AcVpCFE6bc83YK@ebT8HN9DZQ@QQj8%+R&S9[9IIZ
+
+4ej0Tq`,!QZ8l"'#(V2Y2@9&ae`fIa%HPRC2DDr!MrF)Yaka8V9-NHSB[DNMiJLJ
+
+ZD4M%$P"aGDI!BUGd-b@FRV"&'f+j"kYr$D,@kmE`(1aj0DhS1eUE#-Ub"i1+YGD
+
+e8SAZ"HQ4l$K"MR&9YkFHf'BH9+Q@j0i4+TfFmB0Ij-qRpe3i!U,3F9LDIA!VRDZ
+
+MhS,k2NUam"bZ%MbaYNi6[0Pp4Jlq!!)Ch&0XLlrfT[`XG&@VDAaDj1RcqFd&@AE
+
+ii@,e`L#U'bDY[UbdfcpE#aD1BKMpS45PB$fXRRViD`#L(*QYcYY-cqP3j6a'Jhc
+
+)-S&eMC5NfhGDLU!jB[CMrm'kI,ch05hhk(ifYL4m[*`KZkPN8bmNK1cX-iH16kA
+
+p%q,AU4$A#*XIN!"cX9`PT@Q2IZQ,%+4h+4'1(T0Dm(cbTXcZT!k&SDp&YiL![l+
+
+3!*4Nb1#LMb%CUDc)82l)HMArA-fH+`E8J[Gd3"Lfp+B)j-q1jfEFlP@VAm9L#rS
+
+lfp"AZ2EfQHi[,JPM@l2KkHP*(e-SP,XRqL&b#P*!Fc&rJ#%f&Lq0@H4fD6NN*IB
+
+qSCU3!#N4`[RH9U*eZ[SiD'AZbmki,pT1FU5TbaXBR2Tercj2EpSP!lYc2)FdRDk
+
+AY0Y6[EAQPa6k(IQ$Z)'l&Gp-TIBJe`jiXIE'hAY`+p2h(ZSJAQZr8@M`4LbA"KT
+
+2)MqMl2hqDq)@@T3NS[HCKMPhl-l[UKrS(ba,r&R30eDicib*+mL#I"(!+ip'd#0
+
+jLDiAmYc[TdHR%!Jh!J)DZSY@8S1TS,M8#T@,9(1X-RV*YE'&`6K`UdV`9Yd+*9`
+
+eaM&m0a5YaqqTG&`qY#qUK6QcpD@T+(i4JNZhKrR)MGZ86CF1Z!LT@Vk$j8HLLkR
+
+("IQBCUDr(Sc)--FJpeK#Z[%,)8+UD,UUHf[M+fE2"eqmaj2Z5FqEXXLbQqj,IB8
+
+LC,mVSkdmkJSkP3%Tk%kI9pH(14'T&2,GB5)L9q&USDZeamU5UPpT6p4&!cB%bfq
+
+)b&A([dCjUMR`3SK,XLr,3aR"E#3ij&!cC+Ff2&M@aMpaD,ehpB*&Ra'$Ur,R1IJ
+
+S0fS((VRfN3"TYAG`Q1fr3mqEQ(r+ZQF5lPMALLq`FLCPB8(M@jb-!LY'C[T5K&B
+
+KYk0*Ydkm$Rq%52T"E"Dc+qqBDEM49T0J`qKaXBjhFH9Kb@Li[IFDml[iL2ZeqBC
+
+IXc0ZBB9rjqV@Yh6SMA)b,HG('BSPe#m)2ITE`TII$QlmP6,&1H%[Id5NCa,,#4S
+
++(T+fR9b@VY5YdB#80eZ@,`V!i@d4+NTTr25U6Bm9IKSEF&3LkZB3'4EKedp@3Rr
+
+lB8ik)c3l@A'9"FkIb%&mR+D`ZeK1m0,dDa8rh*&35$i$FICb[DZ12I+B6[QmQ`2
+
+,ZfJr138!UN-HE2XIaT4dEQ6GYrZr'90G,'+[dRkD0+5Lf'Z1jImLIRU0[ThD)Hl
+
+(YU0Q(ZIGer6iB-*GiV#pJpI(adH'L9&91#k+VbXdBM$D1Q6eM)AZhmB&#04&Glk
+
+``%PZ8mmlm0fCr&"dA%#dY[*2rbj5@ddAmL(bBjBA+2k*5)F&pqV,cI)9kh$HkK!
+
+(DC,2SFrKbmD&Eml$jjb(k0ImRG5VR-I2,)Y*MMpH-,dq2ReL1I5hlLblS1cC)3C
+
+m9$1h`I"RhFI@k$'QZccaG2!ZklUG[dSVlLE0,V0QA5I@H0Y9@f9[H,-GVlRE'+h
+
+Qp-Jfi(pX-(5G-#"qpV[R8iVV&jJRCNIRZ9*BfRHrm`QBe1#%@YeUZ%DQiZ1q+,4
+
+N5F4kCBT&Lp*k4iMGB9&e-YXCNAQd[Y5j@"R8Z4RY4ViLaC13!'F+6``1$(5)Lcl
+
+&T*l&U20FjmA34hqTR&1+Sl0U+$jk2*K0Qlc-bSqb[k!!rR[MFiKGbUkIiN"ibiL
+
+#%b(baG[PaN5F,AF8AIffTLP9Yipkarcp-[EDT+0AYr[j[@$F'6ZI[@-*d3i,9I$
+
+qhL,e0V9C$YV$l+2,G@Ie0cp*5P-L5DZZd[3!p'qXF$UNqcE`#,ea#U4iPa"M3&E
+
+KlrT'+hqiZPmFc,2DfP%-55fDNhNKAVY9Q"pNel*NmD8VmjBZ5[RU$QrK+3hdVcq
+
+dYU4h)31kNGb9HZK9p*Bbq6*VSVbe-#p)(QU#A18bB1*KFifpY!)0HRp+@&b56KF
+
+pcNcFMARj"8-(2M$`Z'r"I9(CD%c0Ki4m`fRH5S&6[5FI&DTG-%e-hSK%YTNQrB`
+
+m@4L2pY40hY4&[YBcC)*GSMH5fS4cLe1KYfrfj8`j9Gq"IZLMh-2X9e6GEchAjVV
+
+IQ0[@d[Ul!dTiN!!0'$`fDCKkmdC4GAikT+Zb-QU&NE4V,M'(-CV[#!cckqMeh[B
+
+qAY6)GVF5[9`NA(LMh-UNZkchHR`"P10ETA'ZmTC%hb0miGl3EMUc8rF!3J`AfPV
+
+lV`BZc,hUA$5GL#(eC(&L3A2DQVemMhkq$4#jfJ2EVXlhGRM+h3-2!$0DlUT(miJ
+
+9N!!`C[$!dS-f+-5BJb4cX46rq[',pGL'm@hPkMa@*b*06k5+2H2@6&20KN1S,k@
+
+-L2AAm4K+M*+!GVUmHLc55)ld#[Vbh@QXK'(3p)'2G1VIlAP)B'AF3HfIPh#j!d(
+
+(X)Je,4D`5$LCVQ1$TNMSCq)4R4S,CVGM56FU4'HX8bBjIGcLlYJqL9%3"K,mU+D
+
+SCJKm8Gfi[XCJJ4F)[cd!TdmRiqFEMMQFLdV-%afeT#af5mALfDUpId%*YqX&hlB
+
+1RqiBKC%J-P$5TS@M35r!NjDHEMpNRVSrAa#M55!Uj08rrEb1UalZ0%UMX-DBmY1
+
+-4'IiffHd6iHplN!EpAE"MHSpNJ&V)Gbk-1ELP%edjZpJf5S3$1'ZSCH&m@k2#)3
+
+[GNBDqprBL8"dfmJj9C,h[kYJ'V%Zp1hF-)'iaX%I&5q8("`#X4#'VV6X483F*UU
+
+&YN,A#Bh[#C+kS(cQepP9ijmAJhGFQSSQUaKmHcZXBRLEfX-+LmLGG'LieJ[kQ##
+
+f$EJ&pRGQNrPh#)ZQFJ,kCc9P$CMJSkTj0$-B-TGL)V&$LeDUZ2RTN!"8k8J#34b
+
+C*MT@SZ!0D($,N!#3!2XAaRUj'k@d[hp636L-Z%0cpG8+T,*G0!La8P$YBQ,U"3a
+
+Cdb'JEfhLZLj[Xq5i2r2-G9*5IF'b"@0%8#JHDpA$6kj`IXMI'b$"mLj-04k[6Bd
+
+Y'SRI*$Zh%P80Cd(DL8+43IjNad!kYa,1&405@35Uf4rGJA%!Y`"38+M@Q*[*LI@
+
+j(HqBV$1)XN@m4E1%Ge4McT,"VAIe%RM@a0HFKk9qFd`&%#fV#*aCA"95dqeBrrJ
+
+JB-a8kqP&J,8cUXk&TCb"Hr,*8S%6[Sp$p-kCmc-X[BJ'"D*SDl'0a&##+a*C)iA
+
+9bH!DH'4TVa[+&AkBS3G),5KK5H4Pr`,$G&cF$c`jmVT6-[1+iX!9pjr#)JVXjk!
+
+9,Sc*jPe"SGJN-IVR&1a'b&%SZFYqY5iT%fNU@FY1mm9j#Y,C*)McKLjVK1%2-#J
+
+&6UC6DHR2GT,*6E6P3PXR-4M*XHr(N!#565*4[kEDmeA[,1RTQT4LH'MS$Q$C(9k
+
+4cDFFCG`10lqYecIGZ&S'#E'Bcej&8mEED@`A$R)dj'ID9D99)5B5fUGfYjlpJ%U
+
+jMCT3K2Qb,aLEP9%+eYb0f"D@$Damh0*UA3aADBC#2liaKL(N('fJQ'M+G3jDBT-
+
+dNF1D[9`Ijj[6H6hiA3JZ9c%'P9I!JP!P$`N2pbIqAH-0C8Pf9I&K3aHM[`0e%pq
+
+2jp5cUVVV(k4m!4pCpk3E("fpSZ@MqaF8@%Y'6IVMKJ+Y4BJeRfVk@TT+`S9Q+!b
+
+K"Bi$rCr&8%Q#NKTrd#PV%#Ehq[5#JqfJBH`DdmZ(L#3PMD+mV4H$`3m1A-2*&"R
+
+#',Y@JeIm*+q3!)#XX+VIL0HSRe)(6FcpKG6Sj[N4UjTKIi+0eGQ0+cRNCPM9rB*
+
+PcaNj!HbE*hT1EU1%D2h2b"MI9#0TN`1A0[M#CNB,lF0UA&VT8QGkb&1Z%$Ip5aF
+
+L0cSQ#%j"h9hp03jNZID3!&r0b9%3QD9Gj&qq,2Y'H*YA+88YZMI"5Tr&B"C!9U$
+
+B#BC@,RZPM`C6kTDAXfm@j)0pl1Aim'Uh3NhIcQ"*kS)H*ENIFY&2Df"*DrHG`0+
+
+aB516rf#G'#'FE%KfJBYaaZH"jMLZH3X44"A@1)%!3M36M-R[-)D0L!+C+k@1AbR
+
+rmSVK!3V+@CTRKY*G45$&U4Qj+m)!5LD8E0jNP*8V!#AjfkYriPQ2N!$NL`PT89D
+
+2FBC2arIjT0KL-JGaU-Sk%1mqh"4lN!!@Q+*03j,F*YeIcMlNr@p2*eSZV-4Pj2(
+
+YYE(JB3e'2f"KPS8L,*QEmkZK8GUVeb!CBL"5@lHYIXb@$R**bcK3GQGr8LdM+Z'
+
+CEVL1bpSF0HFAf*K'D85P,0[A9-Z$+61UGB$b%R&AR#p)#qVU@AqATPFZ%ljBJE*
+
+0UNTES364JNP+%UQc@9KAdF!h%MPJRM3-i'V1%X9"P2TfLr,Gk[#DEVN9R"%jUT*
+
+YAZkMm@l3@FS)b11FG-jq0(bY1rcA!5BE0dL0I&f#M&5mJc0Gb`fLdq0@`PD"m(6
+
+5Z*IY@&N+hNQj&mQ2N!!MGq8+6)F5r,AQY$`mebm945CamI+HfR0DM)bSrZj2,Ae
+
+fh#HU8l%rj4"VDGT5lk`*ia8NE*KTLeXGd5M"B6")3Y%@TAZrH[%U4AqE+bb"6jC
+
+k1J'R(hk%dDdaVl'Fh&ZmblEQLL!l%6aiq4C89(0e*h[hXFa'KpDMHD'aS"*1AMN
+
+0kJlCl)5#$bBqh'9)F3$(TpeHDB4&qJaK'b09+[,lV5-IPSbcHV[!iU6&h4BK0*h
+
+P%A3E&jACBA0h#C4UiNRm$NE-5DRl[K`DJh4aR$M5eAT-Ff"-*+,GPjq%T[MBC4G
+
+TdM()lQ)[p0B`bq98QKMNlcrj`4ET0K"DX-4#P%i$Ui4Sj*rBpcQPLUjb$(b*9Z[
+
+[+#"T$dTrqVmJQ6SRGlLIlNZD"a[MEC2FKZ5V,pXIH'KpEjm`,%A"rqR6brAYNc6
+
+XHSqjY6Jj9QLiHMA-iR2eP*DQME,ZdmQ`j-6+LphMG&L,mN-H3QS9Z)rQl[KU8RY
+
+3TiMhI)Yq)9JEYND@)q4Ud!-ijDH(j0(FA`NkK5[Y"1`ri66bk8@*M9!p9JGlGKC
+
+G2qY[,HScUGHqd4E9ReYH'3Ul(DiIfPd6rqT"!5$EYbp6341&%YIAf*Z3!$*"h1e
+
+qS$[Zq2j@`p@eFZYi`pqppAGhd%rA1ccXrpklR@2jAbUNkipDJQ'N2XIbRj(k(-Y
+
+r4qShD$NUk#jLEYiABFB5I#(P#E(-*Jb'VETkZAJ)!d5)f))IL&1V5ik8TrF9aaZ
+
+a9HC"F$$@D9GD&(iT[2aNb+LBh-aDC020-#E81,S!X-T+NSRQXPBVYTTYpMX*,q0
+
+r@([jfE'AN!#[Q)i5p1"c`G[M$B6c2-$r%8T$Qe6ip%+KcEc1r-2(Uk`Abf+'R%`
+
+E@D5aFS'l-b`2kk$AACVJiNcR19(aE,S(IR&JGH"EQLARlHYGQiA6C3rV"BAmbe6
+
+p+blfIL$h&mR4Gj,E-XJRSVI#Y'M4VAqSr2*#H8hf1F&VeSfFdRD[)2Sa2C!!KC%
+
+hd('6bK%pc+,)E+"Z&0m*akkL8D0`JPa62,"Dj-Kl1A[+ZdKZ!eZ[(D'RC0)16F+
+
+b!8D$h3dTA1c6SerLq-1#N4VAjX,j$GJ[4fC'ckp(@aUNZS8646BdmH2BUq+*GDf
+
+00(FK5RPa5EmLB[('cE"TSD64a5ipe[!IT-(V3%&H%5-bQAQ%!SZpk`8[Pr#*FdJ
+
+X'GHB2TU!QaA0"FZJkrbB-YH3!+BrkN2*q940AjZ"SXpkVbKMbJXQY"2UHA4`c4b
+
+&@BEDlLSN%V5dmM%5LKm-a-3h1NbYbEUj1jSk22K%qEQV&e*pRK'[el,,q'b6!XL
+
+mrL6P2Ueal+6V'4XD&5%*8cJ08JPka%354Sh8FT3f[He(9@i3!B25TeIV@KK,(L6
+
+59rDBMMTP25hCSYl5f($5lpqYbpAVG%&i0[&6VmGP@N[NVBV*E*@L',a&K'SaYBH
+
+rq9$i+Sb#N4aP[&M0#Li4XlL%9H,[(CZ'6HQR!fiVFVahN`2BjK"FEhMHDhiD6V[
+
+#`F(c"XU2*he"pMmTb#P2H9#VM8(fchN&Qh6N$D[NJaSZ651Ar[SK4JZ4cKI8%p-
+
+[5&1ki94pCkQDi*XQEGE9$i2fY6d0T@Y66dA&KlQd+LHhCPd%cG365C!!$5jimhK
+
+HJXXUM&i2-Va"VfUhqE(&!-l2+rP"q)(XE4Xkl[b%e1(ATZ[M&MGSqdPjp!km@fP
+
+j2h&JV`QcKZk[h91qDf&M4MKQXjCLY6FLq#6I[Z%N%4Jr0A*!``e4G,!6X1,91"Q
+
+r,#Z2&PKNF1J)8bXMA5+a2`Leh,JHKh`'(!emK(pbi(FG[KN9"8D%YaX3[,99,SB
+
+CdlXZZQKPI@Rc4McLjZQTmCZeRCkb`qhc$6d"Qq)*q9Be240C-2RKTb,fe`F@fR*
+
+%c*U-L1hC'PmPH1EpDpXpF6Q`BFTam"CUBb8LjpX2Q+d@#1'X)$LhNhA$$A%MD$)
+
+G&NiA[$5E[lC1VDC)eD(A3kRbdVeQfMCik-R!G4Jf#Dk1ekEU,LF%DI*`9bTKQ5&
+
+rDN-H$1SI9)SK+KCmQ(@5'-ZE)+XM0Zaapd2i#1BaX@HNH4$cq[dCHGJK0)kK-ZD
+
+cRYMUae!KCHpP,e#'21P3k0)f9hS4Ah$,KCCIYVj#2Bi1pUG+ZrT[jaNphmf1S8l
+
+9V,Ph`CdBI*!!2RaVTa'3!+iqli6Y%M!ikP3MIKVPRq9A&q,aIP4QR%qM9,5bpUC
+
+ZNi5A$[keL$%BSp8K,))PQPrhEF('ShK6F8-bqqLlrlle!EQ1V`+KhH"XQe8aIHq
+
+G!+(U'iEp68%d[LCUUJelrRVNPmjHXYbLqie'k1MpSd#R01@KqG%@ZLPmZ[L*jaQ
+
+$j2HJHcUXIAr[aI+S8E`!0jJAf+pSr9"ZCfi6``e&li'(EC!!DFKbb@I6R!iDADj
+
+"ZQVPDdIEr113!"r`*5a)bMGRq09-5Ck3!,#*+MFhI@E!H`j)'3A$-C+XrG*NdS[
+
+RE#9r)3ChMS%JElFY)DR5i(B&1"q3!"A9*+$CF+YmNe@2,d*VHp$ChZM)QJM-cc"
+
+UK**rVjV@&9rQBr#UffA3UmGX(F1IXj&$GFFb$'kA'SYf1TiNKZpaIhP'E0h%5U8
+
+Pk%I,5aUm5Gp!&V9-LkfFJ4UAX!0RHT8rI"N*AHEmSX8`J#8'krfL"Zk`+-3cNkG
+
+&F0X2apF`C!T&8L-kVXbX&JB[55J40eB5YdKGrTf(YLU!+@mfa1)-I*DqNA0i6G1
+
+U4ZET#PDG''9lR0Y#V0Ea+1Zc9Ij$p5ZiZ%p+Q*E,H`Z+KeUR0pVq6T@AE3eF6jp
+
+9r!LT091lM%8Fa-JfV(1'(@1X6dPR2dC1'KVqJ20RA+Bi$CQTmAd[1er6MU9X`4M
+
+)@fHDH+PeQ'e3`J9%k9H)(HfE2JB0)T1EVi`)p,L4Vped''-iE4i8!&Q[bD8TfDA
+
+EQj8$aU0[QQYVTqi5Q,INpKD,MVfjhr[ci)E`35V!0f4)PAJa[[kbadak&C&3#,H
+
+2ML2k8JHVl!251C1aciq`Zk[ij4T#ErCJSZ+3!+`&cdP4V4@ZJL[%1ke[[FCK!))
+
+*d5EJ*i8U"*RJk[4bL#*id8NX[E@Nk8je9eZ469dAI&[rC(hmp6UYQPk#&QqKBR`
+
+#d1kk5h'+bMq3!#'(l%j3@V``DJ`kApa92C9%Q'iD(4SNjefSS,lDkY9[GKcGZKS
+
+f3SNI0Tfihcq#T-1RZT[pZF*kC,!a!rSEVZ$RA*I#iNK[K0B`!4@SFT)h,88a1)[
+
+P,C!!GKECVl`lB$UKfX,)B5*2I5-S0+XJb8Vj(k2N)@MmI'3F`kMkqU+Ac6LQ`J`
+
+PA+G0kY3r`8jiPdhFGA6GI$ZE-*A0acNDG52LLUDqKDbKa!NFGIUPT6K[ha$k)%f
+
+N8TI20[iq#U*"$GAaA"DNLDR8Gf&cTMmH+lIHf2CTX4MmE(Gj-X+Z4V"iN9Q'UIL
+
+3!2M10kb'`iJjmA3+pbdq#8B`LaCVjrCpe@AaTQpQE9YZ4PBU!X35R1&f8J@6cq[
+
+kR,QQdQ%[jD45)Q#lH!3I#AAd%jkp8'Mk)92'i1IQM0D[[bV*SHl03*PZ5bcbRT*
+
+r%%1h,X-drJ$0rcQdQcD3!(Q,kldAfEAF1+IAlI4YmJ3J5*TVK-@e`e)`DmDcilK
+
+(JReP&h,3Mm,0rde0LkRm@c3-aefhQ)mMNrU`$amjJS0F%fIDIDc`pKR5PU[!ciX
+
+CC,)HkKU$E`Q'0Tr,pSA0LMqZrph*m3X)($B1RVqGUK)5GD()HHRLJFcIfK)#8bI
+
+c4aUXNr-kcp"+Ga'hj(1TTQ("JBjc*BlKLFj)JUk+lf5Errb5FaE(epdPC%3$'M(
+
+Nid*cGc[ETSpIq4LVUMJX+"Yj+YD&LT!!I9QmPq5e1iZ,p*H0V19`j*1+iK'K#S)
+
+,1A%4S)U3!)0p$rN2Icb8,lUhPaME(I2lp`MhA$ci$UqJ5m`[a3'MC,G1Y%a83!b
+
+[aHeNHMR9ZfhPbXf0UP@Gch#m*%aRjjCRN9kk19F$KSDTP&Z3!,jFZK8A&CIaDIr
+
+D0#VJFf1VK4d8Ha,TXLpq@,$VXYmmZGZT%9l4l1DlAMR9D+DVXLfZ5NmI`YS`*bm
+
+Z+#DNmU@R`1KQfUBJ$I[f&KDC-QVCdhjepe94)0C#)9N&A9PqJc&5G2LM,*5'QSN
+
+U6BDD9i0G%&X-,,iIQ[+X1NEKACm'EDE)E!Mm-hbbf,+Yl3#2*,&HM"*0fj8-PPm
+
+"HZ56(82lEIKb"AL1Vr0l3@XQ$Y&C*C08A1a#S8$'dp1[j!ham-N#9YbXdY*jH!9
+
+AK1eZcSYaDjX2LN9)kEIFHTE1R"F%cf1l(P2!IVIE*m)FB0KRD0kbC*Z4d'bm1Rb
+
+'E8A6FCVPBRika%Vhh5XZqrc+GX4'KYP@HrMdir*F$Mqp'UhDXYIAHTe&Sr`V)*T
+
+NARQ#`A$8X(3HQJA,'PiGZeeI4Skdl#@Z&,ISe62XR2i%1hBKfYpN0mcLjLTjCB[
+
+q+Sp*Qkq&pADl8lJ5+pVA54d9(qAE`EGmca+9Tm0241lM25(YmJiYMq#+pY"JCkI
+
+TaJq[Z2Ifem+bHU)JiJ*EC5mqNFI4QE)%KNEi9dXhRBE)#Z)$k0Z*C2dk4L(34"6
+
+pB4&1GE6pmLM$,LM'E`ffKm6K-#95f"AbdhY@FM2,2a8FhrC+"&&DL@"d,eBZ*BP
+
+8CQmT#V03)fm,!lM+13dqC&Hl$`m3cZiQ5p$#Kf(3HHpH,pACi50FUU3,H3pqId4
+
+K)+KL*$!bG*kTfrbdC-N4d4P,$q*(fXJ,ZGR[p"JBfR!e4LKVrMN2'm(dK$hXA*!
+
+!hr5Qi5@XVq$N`qGU!AF'[QQLb"qK2rDE4R3p)DGG,DNI*aJ@FpijN!#r6A+6f1N
+
+dJQiEKcJpU19C`+aZq@#T66#'rX#'34T'T!T[QJp`1kh*V%3)e1NFDGDEfpJTfe@
+
+LirCCQZCN#IbQZfB#a6TMFHd!)M,q*Ia(FfrET,HSrjPKph*+H)E&[[I'Ch'AKMh
+
+p2%3iBE6&Ul+@0ZSKGH#&V2bKIIl+h+AV[er-+hF4q88U6chl"Tdle*NfDZem`SV
+
+Y@j!!IeHkVX%iBFk"ZrK0LXJiBXd"KFT0#Y9iT'`'h49-#FKh!e#-fSKM*a2i1I,
+
+icZ%'!Pk[bj6Ub+X4CI-PGpS2[q3eFM*dc'Ra$$klJ),#dZkZ5keA%Jf))ej3"0)
+
+8U![1TUSk,a2af,"ZT-Q!pK5La9IUSeq4IZGf@Sq1IjA'`4HTVMeKdBL`EKZL*jq
+
++$E)GGb&f"mZ#)FTe5SZYMK`l3mf0G"VqB2lj9r)pA+hmqBHESMGGKfp[if4fH[F
+
+-TpTEf#XF%Gi"JLB*3#)),kjlpXjS-h"R6$Ie910Da[9'B83cG@P4JT'ZJ&KUU4h
+
+#%r*fT'rEZ$Bl*VcHN5%6-RCl-+XBVdQ[B3[LmaGZ)3U98EK(MXU3!24RBVA9,22
+
+5(lL0CIYYGq,0aT2BhUq3!+Mia#m[cU2F"Nek5PI6%NiCM@PV##4&8MSI0qlQPl,
+
+3kXcaiCC*8@@$a8lEV[Qrf5LC$P%3+CHf2UYreQ&k[TPReHVqPHdM1(icMm5dR'0
+
++q[1Z##408&IQ9dM0j9G60qE+3Dfb-,c8S)#5GL84+F1i66ZcXbB*Y)B&-k[16QF
+
+M!6CZq"+0V8*0l*A#bk1Q-V2K-B,[C[K)@k-9JL+Bl`5ki0Q"A+ckT9,lI4S'5pT
+
+qi%`G+8N%'$XiiPj0+PShDV*'cKHBB9ZLi$+NGC9)C0m5Me`cS*@`ar6CRU'U"m,
+
+bUFGZ3R3#Z8BLa3,e@8P#KCRZ%)1pli1aZfVVY9e'&YiAS&@NA6PXRk*lPPU%k6a
+
+'TfHAFBliL!*lBEK99ZePYUD1T89&VH322T!!"bH)K$qmqRflNQ3kQ3qF2lhiYG@
+
+URjaUj@U'EQ95cmYb,X0&iB80h9pR,llJ#3[#-C!!'5YeL&X-&IjL8iQ[G[[SkJd
+
+*qi[K9ZV#T84e$+%qm%QBSJUmMp9Cq@R%Ge$jh(UE0U84M1AXTcq[HCBP0-FU+#F
+
+83dIEYKY+k#(AqEe`JH)98ZIGrT!![q-)FHqNmPl-M1i*`kIH+45c`8Qq@$+kcqS
+
+4"a#TNqHY#*2TNGdB4Sc)4&ELm6(RKTqcGQ1QEc2S,db4ANeY@VYQ0"0cDbQ8,Nd
+
+*dBjSVEmfP93Z(Jb[Vd94-(YEViIJ-@G$m%XkE)KM2br3bJG4Ld$&5)MlCld&&4I
+
+&@LD[,E&U[TfJE,!(dk)8A'0d0[G'b3`VSXCDLhk-E9-8-(#)#Qmc&5M@M&*$d,'
+
+8q*8*)LP@#69J[Q86#(G[K&PU*!M'8rVGjlc#*X"Qf'[Vqp0pY[$ZJALqf4H"r3U
+
+5d+LD6P&GjZ`lJ(H*ANI1m`q2rEcJGhSfdDB[+*qHABrQ'Jc$j,Te6!,PL9UYej9
+
+UHJ&JEFa,ikSUH@k@&j4[ErkqK(@LkkVHSkXaf-4dlkelpedEheF[QfSkR@d$Yfc
+
+mcVUZeKIAFf&c3X%Z)Q@S[Tf%Vae5BS9ap!TqPj[4NZ'3!%Z4G5q4ND'b6U(8DXT
+
+`-kjmT"0VF&QD1GE[4GYK-[J'dM$mD4M0'p3#qHD3!+l)+9MN`61%-S-M@Rrc4L9
+
+$@iL)Z%BG'hVCXl8p40miGTE'24VmXJ8GVSFC,Hkepf6IVc+9Gkepc3UAeVX+k[i
+
+X1r[UX["CiB5p#J"CN!$2TrDIRJZE%r6%BH9NrGZTVJE81Yd#5TqNdc,T[83J1cR
+
+@r`EC38IPlkTVS'!45h5-&kdbZTETHhNXhf10Zem!0TT@Uc#1QPI2`"@*)pV`l$4
+
+RHKMG6FRh3BmriT&C2D[iS*PqX9E`B8-&CmBMLM(*NdS3-q'3!#UMK*!!ccm+MR3
+
+jb1cS+Y&$%CHaQNaMGcRiqC0lFqd(Ba40S[rTS9'H5Ek*Q,V6j"1V&JVr-re1Kk6
+
+NUE$k0N(-9m-%jfK5UJ5jD+Cll26%UXQcAm4P+Kc4"12FdLZUCmG318EBPT1FEJ5
+
+q,Z(kP8'#cYmj0&M$`P@'e%ZPUVpKLTQ4EiJkcR))NTC,Z%+dT+&,LAhC2Mmm(f$
+
+9jd6md+*brICBVpmCpDl&eR%#AGqSi,9iR@e,-mqS9"k&9qe(9J&KCF1QEE$ZbPQ
+
+V8'@GArbeDZb)Yc1BUDD0m!YZ19@j%4j%5d3[bb"1pIYh$E("SI&LI#Zel5*C1Rh
+
+'p33rm3V[d[N$3F*cHAA1iimZrENd2jpVRBjk*m@bEmEQe$pmZ*1qSCmXj%[FN!!
+
+X'h+piHjb6A-YXTirXlfC!G-Z,ap#bM&AfMCaQYfLIlVU2rK`$KY&Gj+I-*JERYX
+
+jikN[GJ!RjbD(BP0G`6%[jcIkk-A8[Dja$9[ffC!!K+l2-G"+D$fGED[%hV*X8AD
+
+fJQ9DD6$R,1q1B!a6(2%B)DA##3SC$kjUGV(@JB4eT4de$Hm+XRHpcNkjeU2HcjP
+
+["aUl%1A'MNS(lRP@4pqaB2!FE(',b6#h!TQc@1hXDr0YGr5JNB,'0T6N!,`,TrM
+
+C2'GhAGjRQ+%+Y@3*kT98HL8LjDp[[AXFPIbcZ&-6HcC"A4pS-F)"YKf&"+Q4*GQ
+
+ZdQfIXc[CJmXE"TFCaK2,[8*j0Eq)X@M6r(!+U86M5!0!ajid[4eGESXDel0Ie#G
+
+Yl8`pATiD*G[[lM*NmHIANT[PmFZm6&AT'm((c6#b#*FGNIqL8Y0&JHX(BG3C2Rh
+
+aA#ZmIMe!2[SF+LYm`)5ipf+i"fT-#8YbbdE#PSF+%GS1LU&%k"F+XPA[L(hfUH@
+
+$)THNR8rHFa,U+D,'[Sh@8bFlGVB!d5R8lH0K[dVaQIkFpXbAcN"dF"#LSI*l##0
+
+"b@`'lj3&U$f0Y[K&k&@`J!&P&UD[H*Amm3j!aq%%86A-b@(b!&G18+5C"58-q**
+
+T1)cfB,69X$GBMQ5@,XBBe(&eli+N@%hXD@CMTI6m@i[em)fTl'dX+R6eL-i5@`0
+
+Z5'rmeBTSIHN`K%d`d'XXi8$2E3i3$,jJ10P[Pj!!,#TEdSL`XdK196He`NYCQ$q
+
+B9h"[XEmVIf3L&'!0jJPY*k@J0-AQRBI`,AK(!qG9&-a'C0l*([eKV%6Q@cTaXDZ
+
+&"p+U0!-PISYplN9QMmP2YNQ@%)#GlkXFRYYeKP9J*RHIP-!CRP!$lmqc#bASQc&
+
+kG6r@6jDF%)f+*jc2QK*PLl4FS+ETH3ke9YjS,eMkj25iI*Zp1ZJPhAiLY1pDE)p
+
+[LE[f&Xhrir'DYCVf8,13!20F"i#Pa&6P[[&Tc%el&`r"9JQm8V'p2@[@'qSl["j
+
+$!ZbEm8%SBKe-lQTjmHHQ&P!Zj&C(CFp0"e&XChEIc'E1)4I2fjK3YQ8L-Cd380[
+
+`@&([%6[VmKYb"6a++jkQ%,N+@jJ&BIlGl%U6mM3-6[60jHqKVYZ8$Q#VU`GqG(N
+
+)P82qVDGM+"3FjKqE@jYJkfr[+P2+4Nf'HlBGr*EAE#p@hZf54b'jAcP0Z%(VjRm
+
+1mXAJ[DV$lm,3ReR5)!8S6-mk%Y)j!r%%6NmGU0%"JFJ93PRE5[JHieVaa$qMXhT
+
+40$q"heJ&iSSalkR&H1l@rh%#9*m*(GqX0XQKeb%MV`S0$e[idlC0iphaFT'b-bF
+
+N[+hNTJUpdS@"#&ak3$AK14hNjMFim"TC4lHFR(@,V&m'cmP(i,ZIZTmm`b$ZM8D
+
+43r',jZjM'T!!NcU+Mj!!&9$i1S2NNkIA65i`kCSc)4K[D%(6cB1RJi2'&)RpfiI
+
+61!'%haFG*"qCTJMTYXJ%%3FrA0q"ZM%8@J0ZL@MY[(r4N!$[6)f-2YeX#liSE38
+
+@E[p!5kYeiY4X8qI&%qS"UBZGe%!EqMUpA04Pf&hVkZ3kA$BcBmrGe%,HP!0T!`K
+
+9p9EP&XaD5X2%N`p`jfXpQ*hGjk8Z6S0+3RYVG2Q1r4-(if[P@KcSQ")5ddb#2!X
+
+@3e%X+Ia%TQd(#q[$-H8+(ZjJDkU+iS$k@(U5F%N10Y2F0@F"KF`(cm8[EPRZ3X&
+
+pAY1i&%IAr,qbb4(d$k!P(MY03Zi0*G@UliGj%fbBVMSERQ#c24C@2JV8'Ak%F6V
+
+)EG!#1I8H8ia'U'NjFZ,BA",LC3r*)3YX1apKmD(SHj!!9lq'GHYbVHBpI6LMDN"
+
++3b)Yhh0%6#*APlr2PTlp"1)VX)0X,TCQT2Ca"01i"V5l)6GN!1&'0M6M-F%Z2l*
+
+6+3&kAK*k5UUXA5EPbLh9-[aDelV,'N6e2M5P'f!@ETTN,M4BFS,Mad`%qkb'%d[
+
+R)p3hj%V6d!4VSHcCAfK[+RPfJ[fJH9VcL-fXlS2iGlr"cq9QH(MqPYE0r#m0q+`
+
+IpaP#**-Fkhpb@HGBrj[,qJBY4f$'!m&G!5PFm+aGAr$Y4`UQYV-e4YI$qH`,qpK
+
+-CQX+f@SY9-fAA-3+9IEKZNcY$0P6j$4'4kUq'0B"SVHTC0D`Sh!rf,1&5Q+ZK#C
+
+DFrV46+iYc(C--'[dpZRqSf[M@TI*,QDr49mE)`6IUBk,61rch`f6"l*HNX4YY2+
+
+%h`fVQhmfr3c9m$Pm6DlB(N"R("d`jK6iP$rd3A%+@THh-&440h3idJD`2%aGV+X
+
++09pa#mK'5K#h3jYQi-mNZIApj'l8FDGq-CjfYM!"[lU[DA#4fF9eQjKQ@cUa+)1
+
+5If+m,LC1V"*C&!SE+e4)VJCZ#NHimASrFG25l6A@XfZJ5%P4HBb9[0R(U,d0%5[
+
+N`3cQH,@rZ+kQ4UAC&BHZ@1c-l"k(T$([*%mSrYD%rF%'VIJ03DQTlGINCj9[9Xh
+
+2)l6UA!42mM6+V%pMVNBdHVId"0B+kTm,IfeBLFdMd&HZi-aZH4S+cLC1h!qaYkN
+
+iQT9eFAf%[c2l'1`mrm2Sm9DG*r$U"FS3&(T)4qPD9YbdbBTbP[bTh@a8Xl)Te!H
+
+IGT6i+cb1cDq4Fk$-rhAML@i%&pdV0NE%`+))JUVJkH60pGEVi-f4QVk,Pf[EZKK
+
+&2HkX)[phPELpm(dASpU0TN'&Am@(lN@U%YQ'B*Dl,)%UKe0LIVl"0T3bFJd$G01
+
+P0UNrI@kN&lNRqVKfRYV+l,bVDTM'"CEDULUb+hjL5!A[RJ@5I$Z+(FPV9P&QqAJ
+
+C-dm@M%,KrliNGU%9F+Bf(E%D0+j'(0T1`UEZd$R0+B6&`cM`29E5e2IUD@D1#V(
+
+GAhl%Aa&m6)+dibR(j-BMpRAHkm,f)[mD0GY2I"1M[Ni,28T8MB-'kLCkb#NRcXQ
+
+Tj9hfeE6[epH")-cmeK,+#+4ZY'Z@LQ6q5JGA$e#q'@L0j1[dP`qR609Q[ja+QlZ
+
+TamXL)XU13hMBB0*5DjJ4TX)c1Ecf68UTZfLIYQ%f@lfUR6+&T!qYfM9b#LcAZ(S
+
+3U$2`i5''#ek'6+Fdm*9%ErK#QF1@`"d(M@"+1$ibe2q5EIX%jS`#6Hf8(`'ZTii
+
+jYBrYi&Tf$BVqPJkTD9iI9[2,2kcUk+I[G)a!mV)KQkpL,f@'lVe'pPXeM$!IUm!
+
+%*6DG**,6)krX585+Zd5BeA"GVf0$rc6$"CK`G(J$G9Cd!eJb6C+[#'pMJK,NX,L
+
+pbTI6b`AZ-&$#f)16K-i2hp-YL@LcNarM1G+B@0BD3pV5ECP!pQJN&6dP2%$li)4
+
+kP6i5&m[9`64TTprG$i(q`P1VLfeVHZE5!BrSAAY'"@-NJ)qGD(&3IRFeMkB8eTV
+
+'D+c(!ZIa2L9meTPea3*cN!#Kp&)6leVm&'CFLiYrjmV&"[2Y0*Ee`p0VJhFCbZD
+
+lZdiPR!CV$!XT$'f1Nl0&Z[I)djXPB+JC@L2NfMmrXjCNie,I8P8'-ZMcVBF$`T!
+
+!P[%8+%[m%haF1HB##02@%(crac0QmNFPj5"!5qS[cEAbYq5iqKbiYXFXDFM2VqF
+
+MPQ4f`4RPBGfG@qKfP"aMYfDfr50J+i3eAPBU4,E4#-9A+2Dcp,LXC`PUfL2$cG,
+
+d-MkeBPJcrTY-AcrjE@pPerBD`ffcq+SiP9d*"N*)CEZqK'Y%Elc*INX5e&U3!&H
+
+Q3)+Ymh)BVbTBTC2[$CEpB2q@Vl*'Cfa$$#2Rrj*@Zr&,9*52jYZ4m+`Cp9S*"J5
+
+f,dbVj6,F`bQXmDpErU"MHAl[h12*S&Ce(jpe&)jL&KABqC!!Mm'&Y5BEZb6MFK$
+
+d8&'*QMq&[6bd`!Z[%LdD#aS5rEMIhPXFB,8KZkekij4)L`RBRMU[FjCm`qilIB%
+
++qCCDGZh5U2H[hN'hebIL-U,YC&1*XmLD(j8MIijE4DL0MiPMIU962a,5`%F0X0K
+
+l[AieKCNmdAhCE0H[T!6TbkZ$5bBIV6KF!CrCF3JZ5J0cerei!c9'Q`D+rF8b6jp
+
+HFVI40JRVDib8RKh'KBdC$pKRc8d6'ZKIM5Hk)4EXBaqE1*AA2qTi`TDS-Nj130#
+
+lBA8'0phFEF9K@a$8ef+8I#UU$d,QQrF8L[l5"TGAlSSJH9,l`Z-3%FBdF@4VhY)
+
+r"R,+*M'CHKb)L,k&pcbimZY6EK'U*jhE1I)2I@F9(YZFNCTdBjGUQ15XD&!'bB)
+
+PJdmH#N)K'0(&ZEf#J`-A8d8FRZ!qD5F9DXf%0)qpL!HGS,AIXm)0H%DC)G1)p'#
+
+4R(#*j('r%fc8'5)fB8TPqIRMHMBMGKNF0eC6-R[dI(jp[86GJ1F&X5RJC9FJ1L@
+
+`qI*T#DYQ-TbAmUipQ"9@L+NIGc6Yij(FN@dkVp-qM)cXbVBP%a2$cRhaV"0L(Ur
+
+''kQ'r%pQIXEJBPcD%[2FP#K1'eFdZE`[V*%MYh0YSeV5X!YL04K`a%3I!YA`PBC
+
+Tm8FBZ-hE&l"%CGJ9N!!D9a-2S4GLVf&3akh`5'DYSH1E!YqdK9Q2jT9&KRHQPA(
+
+@HL1K-SqqF$`2DhNPYUH0)AJBp(CQITSPA+Y@9AbUrYR224UF5rqa!FI)cXhq`HB
+
+)&GhiCU,VK)Vp*hlm5DHEFGSP+I(C2C9+AfHdFEcL[BKl2`Q51M`a`I0Z6[hDE5H
+
+ClmFRiNqV8qq1VBS#6KfZG+0SE)-NF`X)Nk[R-d3X3J%Jc)jk@NC9"ZcI"LprlB4
+
+$qlhH@&U4ae6B&"q@IpAFpZZ5U%$kGAB[PX"e"#SKkAplA#Bh($K5ee53!-VmPZI
+
+G-5mDPT62VHLMiBCRJp!r5Xp3J+(lU4`6456@iQBL03`FSGmCSIr)P,Y'IHK&E46
+
+ABfAfaB,pr1KJ$4@jZlhA+-T$Sr9mYF0X#QA%b"SCPb!m+f[I8#H#fc0*D4-%[&H
+
+XpL8Xq2ZYlYLU8I!fej[!X2b[XFI@6jb5F6kfMpGdPdYkh8VkGmb91`C+*UabhE2
+
+5aiK)5&b,4%IIS)Sc6&IC%5lDLCc*hi8#4JffIS)8lT(XIR&M1+DQlPGZ%TLr0M`
+
+@*c[lZi2Mjh%GYVpK*qEBrKFBf)R5YkNj1FjrBLIQf2iE1r&Y'ZZfj"SBrT0*8pB
+
+QAiS5PISEeBKRIMk%MiH[aQACT3GdK2M5L*)KRT`ADipBeHRR&IFKVXI)c#e`'m)
+
+(-F-cB4"MB)ZQ5!lQ"X%)d8D2[)1q(,3G6J"*r&mPChh"qj!!ZFREFp0K@5LCPMS
+
+5pq$4J'N6[Y,jK3X`D4&Y@"h'KZfC9Q-!rk3jZdHXUc2hH6B&Ql0l4DFfeF#lbBZ
+
+GSJ+VE89,CVmqp*8"[EUY#rTQV%9BB@j0Y[BVIeMHTA9R#'QB![N2"pUIU1)@DIP
+
+Pj4EAF*r1FTITaEJI1A4U8'eee""L&ZfLYCj[&,kP288ZB8S'Ld9@H6XrG-3B[q9
+
+fLjfQ8hK[FI'Q8p8N$(4ieREq&%j-Y*Q"#(ik0D$M(QFcE4Vp*@1YJPEmkYkSK2p
+
+VF%fk)0"DZil$S)le%IPdmaEZ16Uc0c*mNk@'D1qCmq83[bH1$24,IYi*VT5f32e
+
+9i8[MY36!!m-h-#B'LSRM(Iq'bGF&9(BHma[V`H1D,6*bM"@k*F0*pJ2mlBqjPrQ
+
+-Q,TmXe'fcmY5F()R9crZhqm9SM!(GiDPiraHmIG8BS0%b25ShIDh0p56PTF9Jd+
+
+MB+6imP'dfD`2MqER51jBq$-6jp0NJ-b$`pY%k,6[j"LUTqlKaY!9%2T@HeNBZZk
+
+3!+Kq(E1DH3R$!qdU0+'4UVb@5TR1DVbU+PGAI9@HS4RMr*PU1M9YamiFp'611JZ
+
+)m5e4!6NqF1Nk[bjm8mVDN!$3*k+Q8&h"B81L3C,(q2GTHYr4,(A4'qNPQm(T,e!
+
+B"XplpeFpY6A[kMS52"kqFhJrak[6aX2jb1Mf8R(SRRiAAPVRbhH)PX0UFT!!cHD
+
+E$(''*C!!J[Bd$UeB4%l$0rIS5"6m!PiGI#X3e"RcDNH!qi%5YV('C)-RZQM9`QL
+
+r&TB,4PBTNe+`d*MR43qC(%(&6S4B40DN@X5,T#pa")dH)kS*Mfh6`9FL+Ke#Brp
+
+kZd##AICSFK,0[+h),Flr+cbc'SBN(rLZjVe"R6a2c1Qp#Kll8MY0a06NGce3UZF
+
+&f5!i3p+,(GI2@R$M,*GBAkYHe0FkQUl06rhXh%L)&""120!'[0Jr1kreF#JJY4F
+
+HlBRkmR`U@6a&e"aeX+&kAMFqH'2D-[!T3c4K5$T#DKMQ+V*r9JYU*MKe95)i9UF
+
+N9'K6#epdXkJJb+U1*iVJ)ap+*5e@0#mG'!bbiU'#R5edFcMcjY26AI4Yfch*&G%
+
+dHRcCG64$fj5T[d2+NUN+Le,cP%c)ZGJR@Kpl0!E0Q#aMlBjcdaPrK(VR-`+REmD
+
+kr%5b22AXCD%LZS3BSX%CI0$Zi@r1k-jp$`G'`b)DK6++"BBbGb-Nl%MX$3-EPHX
+
+GNjAf5%H'HkN[J#c,L`bXhIcM-d-[T@hDQ@Lb&3Q1fIZAkf6V4aF%XFAJE`+5MVX
+
+XLq@[qe2l8`#m8G5erj44V$2S5BD&Qq2I6cRrU`PFc0`I#UQQQCbrTqbFrdlCr3$
+
+9mh2ZUeRTT0Tkhlp6I4H"*+A&BrfmN!$U@Br*I+LhJhV5QG6j199VJh8i*G184+1
+
+D&#j3,e!24$L+91Srjih[L1FY`r,[KjcrT8,Z)*NaRUMDM$Pr6aJirjd`Z%iE#-R
+
+d%#k6-CdU39SQ$bQ8FkETVVb@*C!!frcGCfS%hNLJKbD1m9!rf&,h6I,Al,!m2M"
+
+PL+'T1kD4b(@%'-TVhNR$dFf%K#c!h#RV,T620MYmjA*$Qr&$L*4I#LfIDBc4hlK
+
+`4MU%T`iT%b-6HYqimEeik'`jp#AN)B%$[Bel2aY2MNf+K5&l9hUCc8$(ijFl33q
+
+LFEe0YXRhZa9&*&!*UD8MJS%ME11lflTjiBH5Pq30NQK`U`kc%[KS@fF"&jYMMTm
+
+Ke'jqb"Dk0i(9cBARmDR+2X8KEhfScEFk6$"cL)[2Y+iYER!+U8p%+iMF+0T$TcZ
+
+UZe4B!ZN"ZLL!$#+C48GqCi#-P'cjbhjTJJN&!m4d#q%m-mjQcDl1T5Rjjk4qZXp
+
+2TP+PR'BBj5q6hYqV6U"kqLT6ePQk+b,8XlJ+iR'qMVB!Hj*HJQX1"PS3Aka!ed[
+
+`m"6cK-`U)IT9CY1Sq94SaHm,U),k2!P)Q#3bHhj@b5Xckk'Yh(Z'+&TQEecHce0
+
+,M&%-!rSAc!EMN!$3mFrEVmcDkf`[KlKI9AK%+Qqj$b4NLkR$F%Lk8bcF-i4Bl[@
+
+ZN@mQ@5hE$8h0SU#r92Kp8+F866&[I,LBMXU(fcY'hl90+)4,L1$8LK-fZMI8VGZ
+
+[&$bLjbf&HiG*q%ai33(lD!`M'%,4h[JP&FcXq%HCR8e("p$K[4rZkSSNZ9e#S`q
+
+jbc-B4ImCbrd6#)5`2I(TbkJ+V*qZQ!AVjjIEKf@@#*@bm)h`jI$+TZ#pC!8S@h5
+
+UCQ+HYTQ[3q&KP,Y[BVGS[SmFLMIl#G&DA"LN&BY9J[c13r4DSQP3rI*5SDm*G1)
+
+'(eKEUqc[Eipq@L(+JBlIb'F*@`@G'Y9*PHJK(JA('#ihV8kFECrZeZPiFe)Jd"F
+
+Lf-jKilXM5[Q5Q$J'-YZ0#dhD&DXim#i+f&TlqrmJ90EiRP!QjldLf"2#q3(8'TE
+
+`NI!@K[4LQ-XrH`1qK%kqC63f%YDbA19$kFJ$XdllHRbp9)Raedqd[#MU%+`4MZd
+
+QimYH-1k9MK%C,e$kl3NME1kc45aFBcbdFU6![[cI(kq#U8bICSf,8rk1GUl0Mih
+
+[mJNc'8FFHe&!e`hX0ZG6Nl$l3+&jXE#Z@r3T8EbNKIH(XHdkeT%T!M0,KmM@KPE
+
+1p1#b)'mZ[)HIha-k`db`V3*$AZ[c43,Mkm`U-08CeG8GHM@`D&RD"k**3cmp4V$
+
+UpAphQLlBY+llRP#&++pB)HR4E22pl1j4UZ-&%d+V*QY-Rr0)5dU[@LDT,LH,"Mc
+
+d!0Z("-fak51'3,I&l@GhCHkY$2G*-+bZ'Ja@1UjZH+k-Z1qSV3B)$TN"YVYAEZ)
+
+JhfMNfcNVM-Q*"6@T$UP3%(aQCZih)"Y(&X8S)@c4T)8'2Zb""f(djTkjYITLKUV
+
+[+df`fGIemcN(PXIeA5j4U2KaAb819[-5U+3KA)FkPeG2"K--p$15I0,iLRJ3%k#
+
+m9B)-`*0[apX5`Gp%,%FLRhq%N!"bJYXX4-pKK#)V2pkH,GdB6L#k,)bUMQ56J2L
+
+4XAZj%%VRU!j+k3I[MDSFiSV0XJjHJ*[8RhmJ!&'KC9qmpI!iGFrc#pM#r!5fkAi
+
+'+lkdmTrM(pC90YM!Lffm6"*#[S,cpqjd'#$$&HLF3M$QdNQ!,S0pcZ0YKME9SH1
+
+)*T[3&er3Z1RJM4J!%F'%@CCe+PXh@S%U4!jB!2%32qHfX(l*K4aQ46XBZ`Ve(C`
+
+%`G&`iC!!q6Bl1,Jid9J)&imEIRAeJqSC'Cr"@Yqj@`lX$GEkjS1ldDm#bN4,H9j
+
+'X%kAS&cd*BVKVAN54MCre[1b4Hf8%FVZ#3)IQ`4Y`HmX&A`2$pfIGrDL[`c#RbP
+
+82ljkr)3IZQ$V(qErdKq&ah%8+3BKR+FA!%B!8[Q+@LH$ST))eXFSSS$jb)BfZ#r
+
+`D9Z8"8!3-`qDRPLYb2-8[)85cr*$$9*6h*qJrL#+YHcTFp,#JCA165"Y4brbGch
+
+Ba$@)*p[j0(lP*Gj2qYULRqGqFL[#3F[Z'AX'IbHV3XdU,080FcNmXkDJZlM0TeJ
+
+jh69AB9)Q*cK+L#3f`PDq@B#%HX9@CNPTKe+G,j5(U6MS!&*S$cj1lArV8UVh,X,
+
+ApU144ih*V#dbF`$hb&pliHU1N9R2Sml4l8J)!0JVX0Ci[b$4hV'j*IQc9#pFF5f
+
+(1(GQrDcSZ$$S%-F*0I(4V[$,BHAAAfLMc,qf1+de"F(RNmLS12ZTMAdq61bThHk
+
+GQ[ailhY"5%criC@9A25i(ZTKihZ0RBJ@)L3NLc"IPR'jFBaU[8Md03$8959[I3h
+
+m[0P$[bh$VhHGA&hI9-fIfk%klpUZ,b$M9Q+03rhLUjkFpT-b,X)FL`Y1U0MZC%a
+
+kAH6290c38Sd5pdT6fUc1a0hq@ji&Uj-0!01'S(FFUp`SqjHI$,EebY)i8kkqr[C
+
+cQKhY'CmjHj4f$%+b`h5ZXTK0*(G@80R[SBT5)YEc8VPEr5-5"S4,&R([hQ($+1`
+
+qT-`VCP3id9MCI0qGY(13!%*mjGpBCCLCC1-,jqai(rXj[4!$)[iT!%X*JcA#rEX
+
+"Y2EYA#qfb%A$m26XfUQ3!#m,2')S9F(XclGIXE@HrR`5395$4SUBR@+-NLNE(#Z
+
+-mUkDrA2-11%34LSDT0UH9C&Bhm[GdEp(M9e!eG0BKd3EIN+%1`Y(kYN4F0@bfMa
+
+"5F%qm0YS@lJE50(il2J*Zd`FeC3CR*!!PE3$AT2e3`pPB`hE3a@KqC3636[$kDS
+
+ZKS3TUVY)-Vr9%81PI("0JP8B4VIjCXK!Y+SHJajSXY"(q4qZe,q!9"Gh5C'f,i"
+
+9950EH6,11IGcUrMAlX0Q"BcZDdCTZB9I8TFrNkhd4(0*kVL``5DVQcC&m9Cji'`
+
+bLjq#Umek0"!Gp9m0(h`Lai%hk!F2aLm0-fMAVIZ&)+Z"@FqcFKB*[TT6L$$`p)j
+
+"TY$%HS)Q+`FR`5CTIaFc2&HkB)fU&FkFEjZIJN4LhbXJR"Mid60qib2(450h2'3
+
+VZ1XiMiHGi,GP,SPqlQZ-XajKJK#kXTfU6m)jJiLp"9r$0Q#VX9bBd3p(601r83h
+
+#a,2-pTbbUSFKQRhLGUmaVM@ICDjX*Dc(4SeVjq-,2Qc'-NVp3$`2I[G*qhZp*HV
+
+,d%%LPkGm5'a`Rk"1a*2'8eN9mULNU9[(Y-,hFMIK8ZN*NeR8Qr"qViICLkUCGXD
+
+E@1D[`*V4MfCeScG-i,A%$D9Y-mUTb-[BdITaM+rq22fXeL#F$V2K-j!!-Qj)c5"
+
+*Vcf@R"UEd+E$Be5Ukr89-3061mhLVZ9EBiGGaiJqQHi([e'HG)1DEe9"VLPTkh9
+
+*dZa9P@kjCVd,QXX$L0U,Z-+K[m$lbNbQK'I5BQ#hZ"jN&!ij,0j+C+2C[N3)i&"
+
+lKc@i@&f$G$f5ZGjm(U$TiaRiP+$pJb8@KpUQU#"qG#S6`S!`d!mLXcAlCl[kG#H
+
+mY%(bdYDq5pJA'6jdi9Ti3G(%!2DH*["R"p[ccZJEN4UXNrceemSKkidKMfP5M0Z
+
+hRVk%6qNC0VNa*e$cP@'#GMki2+akeJPkY!4XFCqT#qAR%+Cc)jRb#ijB6M*M$9+
+
+je[HXZC,9jq"'-jUVRjIQM%#JTcGjC%0Amq"2al+N$BXq[@'JaReh)mE6#U!q#$K
+
+"&(Y*,em6VmIH*BG6"'%pk4F`Y#AfQ-rY4LU)XU"%)N6P`,mb53QBT-4D#dr8iFI
+
+EZKr!V1-kZa4X-a1CHp%F-5KYq(iHp)0(V6pM)9h)5[60(S0cR5!4Rm,*@JI+5rN
+
+"f%Pi(0J@hM0+6cS&C*Dh2NG#36FKZ#6"K3L+iZGIa-IYTE2YjVYH6*ZkeeL`RkX
+
+XpCMDY!Ue4H$2QNkNAeVeKN%@AbMe1Q%m6$"RT0irmp5')2TBE@P8L4'fChE)"AQ
+
+,DpBmMIa3Jq6'-(+FjmPaA5lAUIA!%j9DLc5bic*6AZI[pVNC*kp"[rJDBkHVTLA
+
+C`1Sf&Y(8"Qf9c8DSS[@,P!dr[X)'()I+8FTUB4'"38kCSeCT3D1+0)eQ4jDhfDp
+
+A(6`9%HE6ej!!6M1KkV*&mKf#GeqP"6p5I8UjDDSdK9mUi'*F(kc2KT!!Fa5-S33
+
+8SF6cfr42Z*8+Y&LX[XjeDPameRCFAqL`Gh(NV0$fLPEbrdKLP!C`ri6B5jDN-jK
+
+BcRJQA'R+hHRP-&V5i@k91+h9EmE4I1eDlGXUc[24Ur,@hkbrXZ)rA90f(HQ*brU
+
+rS9GNraFB6%#j2bc8QUQDr6X682DrQB!)`H+ePVJIKb(M6GYikfCjp*9f-[NqT3%
+
+K,!jN8MBP[bmrG@KK+KUP-9CRPFRZZR*U+I,48M""Q014LY4h)-h"$``kd0&KD6M
+
+ePDGS`0M$Fb1F1H`(BC(f%ATdENlb#ZAFm0TlK*Cce%dHARMlCrrQVrKVCl%BZL2
+
+L0hf'&RhV$M50+qrc'K0H,jYfHbZ1FUQ565ZA9+STiPMRrJJU`VX3SL`QBS$)ka9
+
+hmH'UkrU8FCrVXDII*dpQTc)!-lah)$Qqpp$QQQ$pSp(Y#ccb9(QHQPP25$@1cC`
+
+k`f[JUj5J1T+"#$c(I#59hHej"l2`4Z[6SZlKKU3MIM(Ud)93AiG+KESLZI6l@-r
+
+$*q2$*XHA9%VeS8rjj38&4E5G@85+T8IcBdI*44*Am+3B0aF&kALm0c(9mNHq'[0
+
+PeKG6bPp,SPe-T[dcLdYGejd"CN8&-i&[B*T[dZ9l-Nm6jKp`KVLXq6C,3mHScHX
+
++f&63&pkrJ*p44-jf$0)-ar"p2LEDc8f96E5l[JTMq,kMhH14ESrf8RD(H1'3!*p
+
++jDXMT1kcRIV)HbUC%lk"kLqj-61DRl$Tbcpk)c6k@2cK3PcSJY2!*q4jAlRd35%
+
++A!2`GEMQ)MF9YMFA9h*EHPUEfCpkRKVL*YQ[8A3B5YCRCKZU,E[','6U!JTk*p(
+
+ieI)H,PC,8i)JXS3YFAY%R3(Ta9AjSdR6eq4!(4XV!4MkpZr8C'Vc'XDL"SPX4m[
+
+6CE%XTZA&&4K5qdDd(#d6BN21`A!j-A'&aTYE#cKX*$aS`qibPqMmd,%Kp8q[3kU
+
+(!ZlJ)2E1Elh',)d8%$KJ88KGU'PJ&`0Iq@N)M6Cp+V&3eA#I+1jXET)fGI6VmP3
+
+3ENH(FD"N69id693J`Rm9LQ(DX%-&(XGM$NRU8(#"NqY3A24me$'6icB@6eHr"#2
+
+b`aE(4#Zi'!1B5FjXPaKfbq92Tq,eimSJ$kS&qK34VSQ-%3iFj%2A#dZ!TDLhlN2
+
+MKZ43'UE-'U4mi!TMGS!R66S1E*fMRKXe#"YD4mK+3IePG)ibk-QTLakdRj1[l"k
+
+LeUijk'DmXl%PNplUFSr-Bj`H(#5+4MAGD#4KUk+J8i&#qflUc8*J#1QL58Ue@'(
+
+lP4EQ)k&l1@`&KQcCKmQD,D9*iMVQjY%(5Ja[L8a)PXZ!jM$p#)4BC4!fBfRA3B,
+
+@f&JDI5cb(@08)MZ(C60Xa3qYUj9F)iaN+E+SUmAK"N6Dh2&ejfhXMCfaEFAiVm6
+
+*Q[adPih-bH*$Z25J5j,U"MM[mYm3fVGVbHTq0MppBD',hN8[q`R52f"ImiYp"SA
+
+Zjre)eTKT)UE-*jT95F'p$0K4,81NA))Qq-92ahI)KC6U%rSUk5EGBT(`F)VcX&m
+
+[6-ND+hXS8Fd,YbE5ZRDkdKNqDNTr$2#6+#lNA)95'QbPR6"iA$YTE0pfdpN*8*6
+
+hh6Mc5&P&0H!Q5Y3U%q,kpNBUhZHa6,6QaZfj23@THT0bcLA46j[L-6A*V1M[e-[
+
+8IM#c@l@F%D*23qclk3LfEX6BrEi"Fq1SFI8(BM[6cZCQ)fmq@Cjfl(jjk1a&XQ2
+
+LDrVDHdJ8)EZE'B+Q@+Bk'&QJAc(D",J(Xb`Zlaa[f+FMER,V9YKbk,%mq*!!QQp
+
+lRN(549MFm%6I3@HjHYp6)1INcNS9EBE2GQ[BepIhENSj&$kR+'2ceNcJ$N"RV$a
+
+L*4)ZDYGDTB2LIp4#QS36h,G1"Ur5mRbj$`k&eNblUD5B&hJaLPb1pYlS-eM%2`b
+
+NfEJM[rBmereb%UdVJI0"Y-1`ZQh%8DVCK(fNq)@clVi"Ve0Cb'QfQ(lZal"%h(9
+
+5fdj85-jD,c99SNm+TTL)cY9F4TCJ8L1eAmSbE+CIJjebQ"V$5'6rAF$4dQ"%X4K
+
+i-XG5r3aDJ-diBc1@+E5ZSka5&bQGP8cQGjCmj`8m"bq(1P[%MHjRPcQI4HC[NV,
+
+R&,IM-kkc&)@fpkPT)GNaq0d%4mlU1m1KD`lXi"`L`UZ$)(D50T1IXDT(0SS(m(B
+
+h6J2h!DrKfhaehkCr,Sb@9l'@hR(SRK#KFLkf$e5j19Kk+FNT(5(9b`a2AQD@6Ap
+
+kIer[fKPq4)b*66GEQK&jXSfkiR",MbCD0@Gj3KYlkLVCM#EbVZ0qPN5J8'i#!80
+
+U9!@jAFi[1@HEiFa2$YX(qf!Bh,LmJeZ@LJ"EYa*16h,Gcd+r6c@`[qVF4iMVkQM
+
+@#L8I(UHN''CmMM$%Y5RQpFAT@d&c`Uf[4!&qDB(U4iN#$#ZH6lD3!,(LrSR0TMD
+
+-KB@E6FC1CrG#-DQ6,jf%4,,L"M-1l`cLr%kkXqX,$M-4q0f#`4c@,$BL#pPmDJM
+
+VNfH3!"Y%Dr1'Ti*"qQU)Qb6jj5L-Vc-AfUJ+5lH%fK5b'9p2-V9&ep*eU$Ci6iq
+
++frTY#$+'M4D[L16BA6&f@j,pH[5MXr8PQ0#h,l6@[J3Ej!3@3[QNBU[J64&Dr6+
+
+QJ`NLCXNZ`3)aYl+A+Tp&iS!5rmD[f3-RY9#h03NkYl-VqUf[T2E5(k)L,UC`2j(
+
+RML8RhND083LpB&)QVmTqL6Pm*fdNAjBU9QJ$L5Z-[`-QL@3lZUal"!hfbdE3dQ'
+
+jV4P@Z8%S$1T$JZa`PBp`iIQTUcLa`6%'X'hNc@-$)QU(UTClI!56FcH,2GrREVM
+
+5T,mD@Rj$EF@Kjh3f5G5rQQU23K"6fMkkJbhmjPS8ZFM",#Sj031*80q0dHBkZKf
+
+RKE4T56KZVGUKDmY4)MFc6QY+"8lST)1Acih`#ZVH@!"QqkaUPPb0lm-5(1-#!XG
+
+'riYaMpB"[VKQ`LiQC4PFe5h*rkYU8*h"'Lqj`P3GFjIMUAaTmhRb-f"rUqA4,0@
+
+k!4E(5`'&qL1pXme22F%ALfTh!X%a+mlXRf2F&B++)mVpkK(JF""e!BjbXCa--Xe
+
+KHchX[8H"'VGJ-SH')0[Hr*h5DqEVM)6d6jX$J"i,(3c3[2`bKhf0a6hPmrP50re
+
+[9CJ26$Fb(K)#G&+adf&Fp6%`3KNTcLSAKl!#'RiRIC1Z`SAU8+VTNQ3"0DcH[9"
+
+QCq3U8mM(6H3BSQ!$h$Q(M4ZF%9-3MdP5("(@&l1rE-`BSRXMYFF$8&r+aLf5Em0
+
+T"@$MHjGNaa!4cX'K@UTCS(HmmHb12YFRq5FLC-r(LLfQ9LFjaXrLA"fUA#f1+V&
+
+L$6&$T'-1hKkmY*`kDjlZX[Je+RKqmHD-6'1#BB-ir6iZM%Ja!hf1-$MGK(km2B0
+
+@2"TR*%!AB`FIGfP1dHENMLpM!fZN6F)SdB#Fr8ZGH,Y1q`3[SX#EcBSkih'3!,k
+
+-f!dTeY2$@J8A2V1MNFL-R#1AFU823qKY)E8QVhXH5",lPdqL&frp51*Uk8LNV"b
+
+GYfTI9%SC#3[ff$YM9V%!-F4iCV-pAEGT`YG8YF@"Q-rq,01YRaqCr56$)r`G!,[
+
+H)4-*lB#f9(82N!$,ErA(@0qcJTJq)&aIY!Nc3mNEVRm1E$Y8,Sdkm!82C@rpH0C
+
+(XVbQhESCh4$STDj[X'09""EaP@8q#)RFddJA$ER`!36c*mDfbTIQGR@q%F,RSlF
+
+2"a@%mfBJlbJN!TmF[q$1)JDl*qlBdDjK3-T`[Me1d0"%J`3U`ZHKZ6SQBBXXa8m
+
+`4LrV()URXB4BHmq0@N1a'i``h!HYZSqm3b2f$+$PGVC6k3emd!H[mNVi"5mdqLZ
+
+qBqXkadTMU+ZF,TlCH8D'M'5hN!$pYPbVUHd&BNU6FlQLY*c'(dqQLVY9Gh['-U!
+
+iliL6'Cm6G3XGMhC)V8D%"2,cD"H4)9AC`BDZDC81b+&i0B'#c*Y%rF6dC)GiD&3
+
+eH,EFpD)`K&&,J5PS#DQQ84@jaSQf1M46aT@KAFmmBPpPX$16j1#!U5VK3LKbG$q
+
+3!&hm*3fklPaEr1[ZS'+m$"kSN!#(kG#)XhX(a)r)9*)rV28%5@rENm*`LFT$,D@
+
+-EDIij9aDDIe6#RK#iJ[fQAE'JMhGZd94dSH'D!M8j4&GN!#[VI#Z9+'2qBpXDdK
+
+`0pR8bl9LF%I`5aDY!d0!B%p+*Vp2c(jDX@BG%qPh'30&Dq1)+,$RilSjA+@k23C
+
+"8K@4VCVAIq8$eDCUBM+(XX(@T+RfUP0"UHl3MTE['Q`ci*1NHeh#&J!m(lHS@CB
+
+8e$4fcG`,Rp#mQIqR5jVpYai"PiAREj8)fIm94SPQpMp!PE*rMrGQrc[HHkZf2C!
+
+!FrDT@#q"@RCYEA@cV9Ne2AM$@9cF$f1,$`Q$9)VFr2E2TKp+iqZ+c4"eChaFVb)
+
+5`QcN#$KY@MjdaPdk4XLU&CD*Xm6-`08T)R#5LeP98#05,6dZ`3Q(S9`LAi8rG&k
+
+d,6j3,6D5j*8VRVP-H'p-([TZS"p(%+3Z%ErIh1UYLUf+kAfrU#3Z1Gb4(PlaJYj
+
+epMQGjV+e$AXE6SSefq99%mSI'Mj!b[!el23i9FLSa,-lfG[H%r%R*Ek"T*XrLU1
+
++)r)qR+e9+F0k3)bZHaG6jI(VjdBP9S4E2plV&Hh$eY1lJH`JrXN1QjkNYJ@(mNR
+
+4mi[[efN-l4MEiVjZF0cZ,@8[eH1[+1mYVKD&+rSRc)8f6rP(PQ$bPRcPj"UX8$Q
+
+D"pP',G9lXZaUNCBUh(2UU6)I0U@iD4TEIm&([GHbH2!bh*EF$(e9HD5JSABe5i2
+
+`,eT"1UPlK9Y,1@L"j2T3@Cha+46fQHrP'rXZVYX&)DbkqbG'@KE3diXqYlT[jBU
+
+#e[6m5+N&EHApX@@Hm3,jALH)ji*A$84cN3)Xh6Lb5+IS2[KP1J!mA-EMpX2Y`6R
+
+il@h9+THXY#qk$I8(+l5kr#qcZ6kH1',!"VYIjcb!br1leM1K#$PdpPVi2+&q60"
+
+DFl!+JMqV"ZQ`@pGQqBepf&G8"U4jFFUjZJ#2%0)EVPB3LVYSCPMjdXK)5j6U55C
+
+eL`Mc$3P,Mmad2Ad*5k+YUYpL4r[Dm[iH&Ck&[b$A`p'$6f$kdR#T0E#ML)#5HY%
+
+#rPhrqqTmTSGA-U[#`*-"[d,Jq040JhM0RNCmYGJ2TSDaU*qM@i5Fa2$-(f`@IDJ
+
+hr1VjcqLTUE83f-MRKcLGq&Th+d8FiKAR'pHf8)ZGbkHbcQ&%$l!N-C-jG'MDh0a
+
+*H%'NTFT(35-d4lL[9(I-!F6jc#mpPMl%TUCHcebd%E$A[Nb,BTIH+K,ckRLB(qr
+
+@Q#Ch5p+k[ER`B"P+[Z5I51PpR4T@IRJ%kajKARk)kKFeYLKJp5YB`r(rdHTjU[q
+
+&bSbJHLk2"99aUD9,'VC1R4Glq+JEe`Zpje#'b[EM%RI@+RZpRG8R$E&pB4Lr#&[
+
+ae`L6YLf(`km%d*h)Q6Z))bb)S#IXPBcNfAh+!0IXR`FlMrZl%iRKhN)ZjlaV,CL
+
+Cm!*"%f0bHMmm5Jf1Ea'HGEIPQAF5*14VK!51-E*Bc3@4D-AhB50K9$,"+Y'KB5h
+
+U0pT3YhRB38-Aj&9)V6Ii(rD-TV'0DAj-0HeaM-feR6@l18miDCHmYLb-hM240',
+
+I0#X`#jBa0c,lpG-e#*r!JrdB&"R5942-+Q(T1!JhD%1a[bAL6%K+jT@"0l!L''r
+
+Z*D6RmS,q"AfYMP0mQ#c[+!b,hEp!3h#63ikqVSX*riD#lm+%2BCQ#+N5B#2N&p3
+
+RDJA(J9e!d'8qkDe*L%J20eAIfj68fA3,XiA'08mBK0`ea!["8"HKK%YpBVB1cm*
+
+`SQF&4LKNUm-BYkdbcCe98[j`Im!K[CQV&3ErJN-6C5lbP+f+Td*d"BGfe)c6-jM
+
+hZ9NGAMQSPM(!Lj6BI1UBiAA!m2b6KKASMAPd!JfiSLm*-Qd["PpVlhX4ef)Xr&b
+
+(ZkVe9p*RT(DTdB21F6Khi[a1qciJ[pUr'Y!epE[9)`EI9mA,J'iYG@dc-,A(H@1
+
+L2iFb1NMRmAZ&X1+,$!2TUAFMPM3Xk41%r4N#kBTV1c'U86FbUKIIN!"(&9X1XN[
+
+ApbKYkDIXi9,Sd`0iShBhVL!lp[K5K3Xe#+F#VI8B$8prq!!Tj,piU&rRK6+YcYS
+
+*ZR3*YLA,$A,B$1BL#QBdhUS'FL"IJp31UTA#'GDl3J345q&BAiPX*))l'k)AS,)
+
+NkJNqij2L,'ll!Ef!U1Q%3b+eVFNS$V,0`RBN@I"X'E&0#Yfj4X@"rTS`YBXKVI%
+
+A!`i3@I820@I`!eS'3BUSb(30k-QqJMP$b2DdmGhqb-c"+GmEKpF8&1#+f@FrSXN
+
+Kc$MqBH116@-CU8[b(BI0NRd9r3kmpd1qq&aM&Jm%h@cfXlR&dV1IDFH$eqhhN!"
+
+j!A9(0-c6lY&2I4NrDrLFVE%)1,lY8D5afSKTE*4q*)h,2r`i99(%JA(f&,C*YR[
+
+!Y1YjTYhK,`UVid4CbK-Md"-Y0+h`XFc*eF!Sp8UUdSXp6#l8Qdpa%+X`+lc"-+q
+
+eEAESdmL[c8&DYahrV4!1[V`8kKY&(0c2B5+'`S2Ib(PdI3prZ(qQ!PA+X@ae&qK
+
+GXUC9[&`IE'D#EKiRZmbb!BhR2V2!N!"!J2K4YYlp)!)I,"'p$leme-%$@T8Cmk-
+
+bid-*CeI&fM,BRMj,[B@i$(rF9$!++4k%iRK(dCFGXaYBlN#[%L5k!ZQmS"mqpGG
+
++RA+3!)l`$jGSrAbRr@K4@im*3fKm&c5N!eRQE-a5e-IPXlhCmcSD!jKNd!N2HTd
+
+PmRak($!DYGN%qr-"AjTPYlQ`HihQkG`ZeNcpBVDqNK&S8pF(G@*E8-[%iR#YIDk
+
+-NJ(!-j3'G`E#hAdf3)MDLj5f*4K5C3RBKqkcR)qe#HmKamK'J(p4#Na#qAN2hpP
+
+XMM25kZZM`V"%16Gd"%A&3C9l%TJ2UbDI-B$0&A!ak0-rr5NG4%&jiQ#eAP"VV-*
+
+PNQ9+),+T*%0!,C[YI(N*X1,hUbPKmFZL%kI'TqPjkIVfh3J'bbIFc'lEA*1DT@b
+
+aN!#Yf@-'cM#$@[D$i&mBh[ETUp!8U@VZQ&j9G,ce*i(`q)MBGG'qmf93*%dK$qI
+
+Tr)36DJb(pThbjAJqpj9Abbj[+jHTa5FhRP`CqaAZh%BJjjFaI89j$*`YYPrdHqJ
+
+%QZfLGf)hK(Zb@VXr"9GVFVSXTN9@p-q(2P-qi)EIqCJeIr`&U@ZrV3[[!&9#CqG
+
++"I@!Mm#&m,fmbJ%T5PQ5l)E9f#hcmLK1B06T82%9C&N*@TM#GC[h(M8-eK6CR@9
+
+9Mi2Kl5&3q-CjQf,Ad!U6Q!!35+cA1*([iU$kH**@0cSPRj0"'Rl-5$8UC#B4C92
+
+PRb%JFl+CPC0RGAJHX@IGbm8lDXTSqXQH03KalrUJk*(8*aFq5JN68ArrTkfGmfj
+
+4Ki9-iQR@cmjQ`G%3D,3AkA)lJm*X0i&i$,k`cfjDQQ2e2pkH)XCb!"e2Mh*"m(2
+
+bAaDUTS+`[q9rIGbf[@*eqPMVi[i,-NFBGrhP9*)3ELR(!TXlS(Q9`Q(kjq*T+rd
+
+A[c8$Yia"8qJ-+2pTFKG9QRNq4ckmPIeRkdaHkSM28"0)l'Z3!"`kp84RGJa3424
+
+-S'%j)86S5fZiAQY&PIQfpB3[aFdH'0iMH09RF&BGHh0FkdrjNU!0jBQ8iSNkAcL
+
+bY%Z'1qbLkpl9c0#m&Cjj[mf&YRBU%&B6QRq[IG+A,HU!IahrP0E`F6j$m$660qj
+
+ZmX[ENDI0BN%"Jh@fiic4qE8r3C,("0*@4F'GMKdClY5pHe&DYhH!NafBd%9p(8P
+
+eR66@`34S[De02AV0R*fY!K1FX*fM[X$Emd+-e3"J,Li58jhZU#"#5`(U%j8afB5
+
+`S-pE8dYqc#"hl&Q-Y)TH88%ib4MB*H4M5V"CiQK`+r&-K*Vbl!9r,Acr`T*bcr(
+
+)Y!Db#%c8VN0&5L#1@NE$CTb1YPZ81VdbjP*K%LlXGY,m`bPk$A(`R'([SDPK8N1
+
+5NA3T1jJ@1kLE`VS@+b8pkPITaB0XmDlJSY#[8jR6Y!(aeG'qUm*'-B+I2TRMCe9
+
+C*86M!Y%2,PNaG9peeZTC+m`N'C4,q*!!b"G90pbZHmSB)fT@hNX$qE(P4hm#XjK
+
+*Y3XFpjJXEPUKT4XpcB*93-pQQAU%)LeMpZ!!0ApjdBGhTKqd,46meQ&lSBQR,C!
+
+!Ae#R-qhE3bbIq*8X3h6Y@i30c6G#m86`86Q()#$V#F%r'l(I#TMV-&PUFBaBK)F
+
+[H3jH3K*h4jP!H0iX[)-EEqHLG%2D9X0I[!G9a1cUZ8$4Z@21p2QPh%'&-+9cf*k
+
+1i+epF"F`8,UCS*52fNiV-rp#@F"(Rm%KG&5P'rHf3&IGEKGYp"Mm'LNDlT2-kET
+
+Sb)Z'[[0GZNCk-mFqFaKDC)CE5lT2*!("ZmIBc4)#,&dEBlLGmD,rqjf96q-9GIJ
+
+EKrb[pVdPj1Q[Z%fAC'@!(-0BTfGV5X5!aD+@(c'cJd,lJJcAj8lfbaBjQDpLLLl
+
+eGV,@E'Zf62E1QCcYVXENX'AAH'ApLNdSC,BEf4qi4pXZD5cEa,('c)ebEEiK)VH
+
+LYE`kR@Tb6)+`QC`mRL@rc2rSJMiI@k[aDlcp*19"9b1H[PAFdcBDrhhb9h9EJ5V
+
+[FE[YfFL-EadbmYSKAH'Qi1%+ZQ#rN!!3#jCrk9PHXcmiXr2UcrqdEE2r9JRNXV(
+
+rVB)TqlIbRHi9YQhf2aU$XRq$C!PX@qrh0Fe`Tc$`kLX*)N6*Lr'Ur,M%b'1S+[3
+
+IM+ZkEPVBQaUM6HETj9I#)356DK@VV1ch2#Ne9Z&NB9YAePh&C8bDUrD&QN*8cF,
+
+[maS$Sd5Xj8P49RC)8P-D2p-1jXR+b4'PFaM*6!Sq6&KGf#biR`KKQ$CkR'rb([S
+
+GmQpfPHe+b%rl[elX1!rV$+G,A@B!,$pTHjYeQpUTNUqmYL(j@b@mAkS1-c+HIGd
+
+YjZVa16h-bI%[0ce&jCVJiK$2B#CD(BccUEIfP*!!hhRSra(j0J&2cLhhNZ8lHF(
+
+mIYV8REa)RF2BYG%T0F2"+0i3+8Rp'R12-V"e!j!!bl#Z(9#B2K#@hV$C''(R(1L
+
+2MG[0`3"J!KSrD`mSfM+GGFMem09#0AG,kcB2Y+GS-Qhj86$HSLfml)lZ##Pa+Ba
+
+G#$XAq5'@&#*bP5lCU56Ja"DKeX*l@9J820hpH-kY(N5E6A9IkfTI+6Sim)+kVJY
+
+C5FZl%IL&PaIFdaXc'+CZQ$@9I(jYT@&c2q)Udb#pGflR6#M%a%k`2P,lkH04YAL
+
+&ibrd8'IRkNTP"[-1lm)mVBqD#be&)ki0Z0@IX3-&[F*lZA4P%$,LE2CDR0+YiD(
+
+3,,Ed2N0YNlKkFChS'H+-P`qNXFZR&V8EV(VaP@2md%Gajk1bAR(A)DF5qj@U0MG
+
+Dh6YDBJ*l80JH6DKU,V@!kDD9rRBRlf,18fj-LcBf%cc@#p#3!&4eje,fFhX+kBB
+
++TkKXl1)%#dCKD5E(N9@PDN$cCQ6RH-ANK!j6,l4hQ2SF)++FPjP)eXkQIqBVR[k
+
+Qk&D0)(5JhPEAVc46,h1NFp4N$N,5ZJLD+rI"2%faQB'CiFHcK%API!2H+Ap3RdH
+
+Rka%&j8G#&4!Dj$-&8DFe,FjbXcfTMc@$j3NrN6L6R6N8&J*p2*69YF(Xh!aYeUe
+
+"hI%bdX`GP-e)lPm4`*YC[R"-djMfb[NA#cV)QClfMJ5aci"qV3ATT#4$LJ"(I4$
+
+DQC%qTKk+dj8C["5V)i*9RGLMIEMA@+!#fcVVf%QMMKU'Kj6Lm+Xhf*iHqXiV`"6
+
+Rm4D3!0(rmAYSja3"KYi,+AZ!mQTb+VNb@r"EfkCMYUl!-a[q4BG,c-A!aj6S'd-
+
+X6q5GZGL(BJ1H'#FQ8GAjTZ(lX&bFcSiN`LU,Rb5'%EZ`[0ZmCl1Kj%TdSXiIKir
+
+jH0d3r"l8ISl%jl"Y`5Bd5q#5m1SAR8A!N!$ZH'')@CdKVS'4K&5G`*!!`X$D[N0
+
+k0%,iT2QapUGG*T)Ipad%%-Mlc(AZeQ8,JIU"U#,aj(eVCqK%,UjjAQSR60(,imB
+
+dJRACC#8*kDd!1)DK$L")2[liE)k+U+`QCKQ'$HH2CPm6e8b-DFFGJ@R6X@M5F@8
+
+)#fV4FE'XLC1RrF$%%LY!r@Md8V&'Ya'eDA-Ir)M,6%8NXK`kb#k'jZMKD#@9RCD
+
+mG`94#+2BSjr0eLL)0Jl1k6K&39ZPHC56LC%d(S*RVCF[6,bif$iQ-YVf%f8ZCU*
+
+++88G9Q-MEFhl6!8dj'Y(8QF(f29hGNSr6"frVa2#i[3V#'0%H4#I1qAk2kEb-Z2
+
+Nl61#2HPEIRG9Y-`Mb)BV(I`N3F9k2N*KG*adi3QC2bG,hl8bfK4A2a#Y'6@IA!1
+
+0m'QT8Yb029p)8AL[%,A8Xk5XqQJL#+'#p4"&QA3MjZG)JBB@9,64U6V9i[VXQ0N
+
+Aq&G&"3,)Yi*),Dk8A%Zq@YlXJ1RD)BC"!9(,`plV[Zl`r"m"D)`B52JIJaY'2&,
+
+lUM9EXX%rSdVldqI@FFd4N!$)i[B`f1p5m3KFIkPiB2FGqGJ'Nd0r&(lF'(0#!C)
+
+2T6XiIFHqaAG$VRL(%KcbMX6C"4r'-PY'V#VmXq+STYr[KelE+[FciMGrp&lImSF
+
+@'iI'pL6%6ek)r4rd02*r(*ELIIDJhALK,"jCDjcq2L)A!ASk0j[lXNV8EKLqS&1
+
+!pZ(*Z!KXR"BZAE(@TRCb5$jqpePXHN"`aQkqLh52DbG+bSAP"*A'KA*+#emp0jq
+
+&8Gb('CT-qI1"DpJ!Pd$JhNEIAFb(UHBd*C5IiJ(2Q5ZKQSPdR#SeN!$bp[iRNK(
+
+I,k$+qIHPGR+05SEi3fVkQm)IIR&62BaIe+*i&TrXBMCr6Hd*dkBkBeXV('Lb2Ck
+
+UFjH0QjfDhUV5M"pA#1MRfX8epiUahHBkN6`3NB`M'!c6Kif!6Zk6fElU4%NeXlj
+
+mL%"Aq8*l$UY"&lfB9UEAcS@fLhd(Up,1ZBf(%)$8"Ue@pX93GdiDMJPDVhHMi$P
+
+!mUG&Nhb),6YXpEKmU9mLP$S$Z1XHi#-'4acLRX94k"TF9cIF(G[VKQFZkFB"YR0
+
+(&eU1KFjclbRpH0!6J@'YV$adr6fA@bBh"+2pQULmLlkkhZGPBZ,USXPQ+qY95[[
+
+'fr6l@L(40%9cbX%'YEb9Eq[@p2(#&ieX!!Z4i8d("9(lLm$pKHH2m9mLl02cl03
+
+[q'FpLHaE)p@hHd`B3!JC,P1rZ$i@ZC2%T4l)R"k)3R(Km21ipb+YaH00YV2qa0P
+
+eIaTp5T`5KpfIP&r%$9i4F"&p0$TJLNJlm@`C@`Z,mGCFfRMAbGcAD50G$F-I@AF
+
+*0JBa[FiB*CldihX0rp5j-k0*QA)%30NM+f6rG(5)[*1cI0(ee"drp,!j6&'6A(q
+
+q6I3eL*hYd[SFG%*$,jHSkm#5VMRR9&YJl#X3Ur8DPU!%cS'D18!GJI"8,fd!Sr)
+
+h+b+QN!#"lZrl&`4+0"cBB#),)Nj-1eSGqi*$bU8kYRMf@aPKCf(GQj)hG"(@fF(
+
+Ui)LXeMCK`Um-8h5ah0UI,8rhk,YT(4kYdZ4JD9jYeP22%ZhF2XK$kiK'BX)TR!4
+
+EbIfX&FFb+%P)%G@dP#bCre$d+8Kb'KkliQhZ%@HM2[&NGH[*kF#(a"dCGXF[iKD
+
+&HE&k95RqDL3`4DePZ3)G0JEb1bqD+E)%e4V$4HR8#feHd1HRTEM,5$VS9G!dd4G
+
+X9hBBV!+U!6)KcX$p5-Tb&-V2R%U%fqK%!j!!hjH5S@K4*1+Y3*Vp0)5IIR"lj,c
+
+"HPmE$3bc9Ai,ch&#e1jTG[dDaV@N2)H#m6Q6%2Z#@I"60D$rk`8AGDLe5rCVI"%
+
+V"H%95ib'LT,H!'pH30S)Kk2NDk@hL!S#mj[Jb`F#M@$M*eNjiJqN3GTc2F@M*eI
+
+33j0-23q)Ap0MekJClQH4pieiqFpZ8,0rB4mf5I-6R6eb,mGL8rqRhH6p@fZ+`ml
+
+l0l[*qemD&#IrS2'6RD5DYq6p[5ACqqq@j!eD[Vpj&jBr$m2j59de&+U2-V`m5Fl
+
+)0p-Y[2Jj,N$(*XXiRiS'iiT(Q%cQ2j)lBlPpEp)-SQ3QqkjBl2B*cT33JFpYDSC
+
+YDH9,(iRT#8j4ijf3!"91#1,h"0EQk6I@)f*mrSIGd3Zj5BHa&03JYmfZKc@AbDH
+
+X6Gj$+U94-E#h![p$1X&8,bCBY[H$el3+Q*)5EkR[%0VIr2+(YI'NK8m(DI9Cl*q
+
+5U"3dPCB+FJ4jZjE)+l"dG)4)La25EP%1k6@J$HPc*YjhiNLleFF*Q8,#%h#rj[!
+
+-Mm-G5JU44CDC#K`DPRek(eRQ5-LP9)#-"8'YZDNT3#EIhEYX,DC3%'@hjr#!QP4
+
+T8X)J(KkBG@ee`d6%P+GdIYmhS"mBfX&leZ-EYD26b((,SE*e`Y,"FVTSeQKI(NP
+
+4qZ8"9k`E8Tkqee[$qN2`'[FJFiJl6IYB+4cVTqXDPj[SY!E&R4cjB,$Ndq`3I6"
+
+C6hhIdm!3LZ'aSTc4%NT1Cq#A,(Pr@XrZ(MjY413LPqf8Ed(+Df%M$p!,8T,qY5M
+
+G,0[S6jFS(ZIh6D-f&1!pVkLdQ4N)KGX!bHaG$bbY+bX0Jk#f*621R%Jj%YZfACN
+
+Pf)U['`(i'U6RdY$)ji3,ELV`S#C*de$&r0Ml*jR)XB%eZH+FUX*F@1P4Fb`U')L
+
+RK-0'!e2XD"#IpAChq(2011Nq$6J&hPhSE0TdSAQ6[K#B@P92Y)UqhIGc5rH`[iT
+
+G%%I9a(*-9KXcR%6p*#"*"+HU3,HbXMQAeA@KUL-&U33Kd4ibHQ)cF)$rC*GH0+f
+
+-H#iN5!`[P*c+BlL2qc91lLf`d4(kJPe490C)GT9eBKLa-l5QR-Gb@3XMTNjhk+c
+
+rr1IMP+DZCT3M4LTH"lX`Xd'@0cjMR@Z@8CffXX&heZmN'Pb3!&r+FPTM3(4h(Np
+
+XSb@`YD%Y9Hfr6dVBM*apfLZ"h63M56Y'G[+jB6J%&`C&H!jUfSZC8ZF*Aq11Si)
+
+QE8H0ac0+a$eP@eC(9%l&[*V"i`C$@NAMjVpdBf`9)6fcaBU`R3XCKe%95VGG3%e
+
+RE5q()AX,*0Rb-5HR&9fkj1pDV82TELd2fU9*L#0!["TqR!U0f&[Mm,D$#jiPRSK
+
+D@QJQeE)khTb5JIEV+j!!%Cb$1ma(@j!!UF0XN8Y49*Hci'2L#f01(eLB#E5rh`Z
+
+DMG6Va$L0f4RHc!ak(1f2U@cDQ&,RQ$8FVrQB,D'fA!S4U(XimAEVA$MaG$0A#TP
+
+Vi'm3YI$"TlSJe!9EM8ERKFVI2F0c[4R8N!$1r02ha2GDaf%kaMLT%qXG&IR&6V)
+
+3I+R`1m@2QP!VH3)cERl%)aRNV5$qAU1SDXF'-'M#Mh)kq&!I"R[E[DX3(KYA2ml
+
+Bf9#H'JM8d$$4kl"P$F-&lEYpdFFHG0lH@DcV3XG#GjNcGF5S-5U$ZR6fX,ZBL0G
+
+HGaV2ClqbdR98G3#aqZ#TRm9EcbR8U!LMZ'UT'A96j)*HPYA,c9@@STdVHURJa%R
+
+@9q1&2jM"NP#E%d&8V+XiN!"2*Xl"81R3BHaLT%4&Gfc`(9eA[pIYjf*[L(Njam2
+
+j242LTJfS)UT1d*k5p6&$%QK%#Tk``TX93T'r1J,+,h@h"X6H@jA5CMD5BU5E0FK
+
+,`)K")aGUTXSqbR2I%*J5)[l5iD*JiUc-[ZbYQmhqF#,52*mC$Aa8c'5ll6TPY3C
+
+NrqV&i`D9'EKfMNrE'*@Pc2JMei2*`im(pSZ5FeEDlhCIk8rQE,KTplIld-IJBpV
+
+f+I[2UI5["#K4"$bIVUiGaJb[I&QRq%)@VF2U0YZak`LQ[Nkm1&j[&S6)BbAM$TR
+
+V3S1XI$ZPRJM8L)rTHhmki9qSNL+kpQh9c$a$3VhmET0H,$@I1,)19@Zee83MhP&
+
+&dP,91dQBrp()NEV&F6M*d6lAh9Uc!)E!RMh8QQhjqd*N!XGLUiB'Jp`fSq%3-T5
+
+r9CRL#K&G6"hGm9QY#"8"#*rN[(3@,dQecTDJpT!!`KdC*fMbfp3iP&[+cREP24p
+
+8ibI)cK)kR#4rDP4S()e9(-K9iSMY%2"eC4CcP5F5!PYNJQ%''EGa*a'iXUVXX!P
+
+51P"KETQFh,6X-XYQHi!'$98pKER95RM"r$-cLY%Tp!p9f0*Mch5*hQ%9X"U9"pC
+
+(Jj&65kH2r1%"l6)Gk[RlB6@I#C2"'"2Q1&I9TZHjRY$5Qcpp$6Qd1K,GdNLT3h$
+
+,'FX2EP28%J$Eri$iS`#"+Fjec)4X2RIr3`R[CbkB2BK#$X`)F0#XE2%#N!!@M6$
+
+'H!E[c6+)EcKIq8dPEJiqiejhj#rELlDV4IQU[&26'PUP$%i20%cI%0dAPDGP[cl
+
+8dRYe2MP@[VE&(Nd,UGlLm+Nc0"q)ANQRKRfP*RA-ah1R9kbJF5bal2#CLM#6BIe
+
+Q'AqL$XIKKq5Eq6LGQGjfM6!kNd0&Q'hZ(HECA,&[V`,Lm2NA91SXXBJHE6XeZfd
+
+8SQ"QeY)!lTQ`Ar+Vfc9hi'Dl13dXCVaNl8$ZGi"X@#Sc)!e!$dJ&I(,Vfk%%TH3
+
+CJKpSjVc5Pd-$YbeFQ1r+"-[D40'N#iAl6'[BkXZ)&Le(hh!c+,S9bda5`N2mh!q
+
+rjaZ!8Q"Re8jp2c'VJ,K[ji)4r+!X!6R@%$e)*a$8`H%r+!lGVk26lk392@m0lL'
+
+U6Uh'*C!!jp'GT4q[@UUr6V&AlFhG2#aB-5dT!mH-@TfXFH(5hRpZ$AFP(rY"+f)
+
+XkVQAP'R-3RUf`+Z%23+dBAflGBS$RPX,-`kFq'V8qI*cl3D-1I(3USpbANQr+e)
+
+2Aj9(&jc2aUL"SAC1VX#T0MU)kkqTKJ+LlG6XpfpR0@)9NBEdf,PHP@,iV("2NFS
+
+eeA1jmS&94eP`2GKE*l4dJiaG'a#d8Td'j*GY!LfdI1266UYBGie`M-KJ"!U3!*I
+
+Xaci-VCj0$b269fYFNA$,kafJNI%E-I%a0e4dZT%3Hkh)rZLqGjJ23T!!6Fim#l-
+
+)8CQD"CDi(f+U5fBZ(VT()i*$eYqdSTcjhTpT'[M[X-MAf0BDi(,K,TBITZrj'Yi
+
+(AcQP9Qb'6@f(YH1U0p[kcSQrBdH149@+FMUTJ0Vc$JeFI$rRf3GlZQ5USV+kZ[3
+
+@81"jkIU&"PeXPj8Ap'5GpBRChG!Vjm2Y0VR#MNT@dK0SPFcP&[(2P2f"RfI`KA"
+
+X'KBPY*k&13mT5dA3a8KU`6cJaBrqj@F-lR"P@cf4hm0m!ljE&SF1Ha'G2#'rTT1
+
+Dr+I2a0k-a+AZq9YRRrHr9'L@rapa*Zmr5ZDp[lG3H2rG3[&C,88JbYA2ZZrRXq0
+
+kCU@acA92R*J9UmhPA3$'%imcNZ!F9j4N@C)KF@%,Jkhc)2QAB,iPZ8ppPb+"A#P
+
+DGA!9(ra@UiT0!I9&&3j9i3X9T`S+!K-,`bX[N!#+p(1Icr#VM)eP9MBmJ)'QVlR
+
+dA2!INMQN3(ap0Hf"P[SPG5)&#G[$f`-P&9,ejRD@&84aff0`q+eiK,Li94X63@f
+
+P%ZD0h$l(1FIZPl"+#8dj'06E8(0r(L2mHc$MBMMf+q)X2$LaS3f2DpY0e[EB)"f
+
+N4ATZZV8*cV&m8T899BD-$THbKFB(,$1f'bTFh1,irZNqaNP&4Tp[b$'&M)d*CU5
+
+8Ab064e5`)3NH`fk+2(%lNk[ZI5)GTA89PEaAh,mRXMVBc5`5E%Y"Q6LD*i612-[
+
+B+YF`Ij1R-M*kDH@Ycr@P&r5AQe(rS#)4A2QHrE23A26$k"'q+`)T,4`ZNdN%5f6
+
+H*L@jl%FMV1&SDBGc3i(VfRfX*kB55L`#,eIR,&8*bAJ0KHQXKBi9YQH@AQJrVbm
+
+[C@")+FTV188hl4-(rSkq3F38-HPVC8,5Ubh3kaY#[3b4FlF&JT+D*'&dX!Q9J[S
+
+N%`X*CUUcPm3F81YkmJJ*0"P"CR3E!9rRdJ2bF&0SU8!&1P"4%SSrJjQ!Jb[2T)0
+
+F+UKF(QddKiS*`"qPAFD!H4fBbNGNqeKAdK,ARrSFX4cL8qDFbR#$UkH"r&TC9[[
+
+Dl6R6BScL2TVk5hb"iP5l-IqV,H)XD[AAD0HF&P4A@YP`&eQimrYcpC!!K[aZf5m
+
+bfU#qN9)B*l9mRrPRS%N44@9dV@k,Z4@T"(U*pJjGc"qY(fi6#N+J,)dGX%0DSUN
+
+8[f,8q*+UCE@a%E$(bi#P"9fG,IK8"[0N9M)(TM,`$(akP)m,JAMDqZRDL6!m)$j
+
+@$N1UQPijB4@2h!T6"[,#%QBV)c@G4i`@,B*#6EaG+&I3p5DJ*&G1Ul,DNeTH)8Z
+
+$@blHEmLDC4hf%D,*3UAaAD$$CbFl!d[j'kHqMZ[XT-M4Q&16E8!h%cl5@cB9K#E
+
+)b`$rZc`-9@Q%@6RR5-NFa5Dc5#YYq8,mQNk)I,i1-ZLA-*aY$%IGiJ9Td,AaZL+
+
+*K"EI3$(DjbGV%IX,l0e2[3lRe-bS19H*pPjJGd85A+N8")jk8BbN2)QB6Q`6N4D
+
+FVhT'qXMl@h[,,MP0%NS%0bpJ!G*,lcXrA3HN+-irN!#)dSZi`Nf[G9EMqaN+Z0-
+
+ZX2*%DfG%%6VCY`QG8U*N46+JM%"CYiU-9Y[D)$CcHc18l-q,l+0S-Zpi3QS4JL3
+
+Nr-4'GN&e)*bLml"JFYh311E)$Bm`DKer&&erLfMj#FG4B9Z[YNKcKM$T$"9&$hk
+
+ip5)BTJ[AZ4N9Ted'9N08p-1S5%iIAN9$%E5k&&!VAi5%beFKcVm%YE0LNkIAJI"
+
+Qk$ZfM45LeJfK-VB3rYjPEDcU+GM`V3fe2A+B@p"4%GY-8FqAZXqb)QEPHfSEp0V
+
+EaaT[0EH@ATN0khN5fN*KR98PTQJrpd$E09V&(r+-Y1LfXYVX"PX"qkli"UR1-fk
+
+"k[FF3bre@I!%hq%(36U@2KZXl[0G5D+JcM"$$1HDk$U'k$GlVc9RT6&-Jc1abiH
+
+-0LZ&5iXkbIR-`Ie%c"'FEf,X$NbHmfbQMNFfKp%+)b4e`9!*GKl'Z&bkJS'qEa2
+
+,FbE6@1K5RN`RpFU2A2RDk4ZQ3[T6p0kD@JU[PbkF6DfFK2EKdk)'YPbSH$@i)53
+
+X"DaMj+HVr),LC-8mFa)EK*,34r'24KEhA9f)XrV6$l5EGcE0FJN6$[Jl*4,*Ykk
+
+)kd-#C@aEb@k@Q(chS#Rj1!RM,H)US@,l1qQC%$qr&,`h#+Pc#Fl#3ZHL"E6[S8*
+
+LEdiY33YqS2rB3)86Ye2'#KkU#Qmpk*R4BNSB3`!$T[E!*)dfSc+0LDK[le,NqN#
+
+NqB2Grf203!QFml#c0Dd9IrNJEfT&@AmajU*(Rrr3rX3Fj#e@Z8'U8S1JJ@[9qH1
+
+2IB'U$R#edK*,[8qbX489e8d[YkR`'9cGm62kq!J'HBqTHAidI-8(r!TY2r#'DMj
+
+JFT3-GkilXhY@`2ZGpiMLb`h31L&@VbI%YAT,cM&SFqPAiAV$pYNpJCjAi8lp5VZ
+
+Qqf361jdqk08@ALRf`9#`L`4PGIX65SKPb$LbTT28PBPk&5YKj-qFM!ki8TTaKH&
+
+BYTGeN!$A,Ubc$%(*k&YKd%dK#iHEQeC@1paG'Bp3(Kr)0"C4+qMcek98kk986$K
+
+e0#[6&$F[Icac1ECCc'PYlI')$paEr'Qk9A6Lb9D[FiBB"d'#A4-ZH8)Ba8-S[c+
+
+ka9D60G,"UqrC`SIT%8h4FL6HF630biQ9+AD(4"'%*!FTZIFbZEP"iF!e@4B'%`d
+
+5ZfI0TQrpq0K!!m2#B@%`GEcek4dY4D4*TFraQ2ViSA([!qBG`rU)Pi`l!FJl'Xm
+
+cU2V-@IC[r42Y@@lqS)`23Ferp`qUL&EC[b&DHImV#d3VGJXQr3-$81(p0d$&RCV
+
+bG[JD'"VD++20aELV4F8r"RHrRX(#,pim)0a*daDjShP2deAmb%hk9LjldXbUcU'
+
+I0)MkPHl$(,)j*!`TKPDYU*Mj!0J5b8F-8A,-3ML+`QCer9i`pBpV(T[iPYm*Z9A
+
+F!XRSr5l@(rL"@&Bh*QH9PmB,hrXh%qV!-%E3hEF",&ChcSp9r268Kil&5ENjT,Y
+
+jILLT-I$m8K,2G)MMlFMfXr%5+[c&"@XI)eYN8T5*i$)qFC5mF#jS#%MIbXMkY3"
+
+,UPdTmlURrTMEDVJc@kqqdKGZ5Tdk8(Hl`DEGT`+(C`FUll23+XChhA&m`,Xqc6#
+
+YcX"fIjp5aI-GLB[VdmRiDU(iV!DVC@+%Gk(e#KRA1dP-TRDYa2bdV(6qeq18E4V
+
+F0Mh-kjQC2IAmV`jpJD1XjIe@M@SA-+21j4ZbBiPkMBPPFfD2'qYe&&I65VFa!b`
+
+0blM9``0e+f"V3F*Y%YhcZfD4LH4L4%(BPd,TpVBQ5+bL)3bKB"J'ZJ,VFE$qbal
+
+'ik`F(e`id,TM&cp*%-Ej*eFP$5``&d+@lVX1RT9FR56""8[k(iE5P@",+(,+!V*
+
+1'4&#X)C1Q5rZDh(GKEDcl(8bqQ`&i$c(C%'`552Rlah"Q%qIDbr"""!fE-92iMl
+
+-fB8bHJad"a*q$+b1'%K"MbJVAfBUpF$hS#R939(PeZ9qLiIHXJ,p&%HPQ"2#1Q9
+
+8TmV"UNc[+m)%AiC)3NL1-e+3!!&@4Km&+k)k0`*MeKRlf5RjCF%YP'#)NBIAAS8
+
+akiUG#p2$MhQ5pIkCIG'R0VKCBY`*CHQ8mFRMSZalQ%pN45!A&1P'KR2PT[TP+H3
+
+k2lT5F%c(5()96h#VbGSHZXqU9)Jpq4*-E(XR$0rJK1S"Qh-l*0@X[E[cR"PEIB"
+
+lqZZeAK9qp[-2"Bqm&h98Zp,dEb*&)a5GFJZJ(e[82L+#R39VMF20%e9mAIb),Q!
+
+'CD$)MD#[lSC3-P(jmP&9[i$jJPBYMkIl8d`X1)chL$6I$j!!Y%$jp&*V&Yp!rNd
+
+C$q0CA1[aa$A'!*EqREDa-RMX(Le&RhC2[Tq%Kl"3G6IS$q[H1&J0fP6J(H"+8Bm
+
+qfH-MGca2k3pRFK550G8CHlq1%+S(+3bd+'I!JMVfpD0*#(+2'8#'qh"Emr@82Q#
+
+S$b1X%'$*hM&Kp1c0aT@RKGP+#,FreAKQ%BCEFGN-(MD"F!CXXc#qKZ%D1#Pfh9R
+
+H%bQDc@Dd&d0*&f3mUh+69C&3HAXV(*eZSCl@`'MBD8aE)B&P")Kj3CbD`DV`e*e
+
+KIUP13GCVPE%VqeMQ3FAEQce8XMrS#I+CGR%ImRaQq9iq%LSAAlQc(5F3a9P[D(r
+
+AbAe9!&d6FmJYaqLS3X#rNb*CTS!m'8NcrqVb4pK2,S8i$(cN*bm8DjDCdQ0Fer1
+
+()H+SaCd6jZH4D3a2'i4RL%F'k[[@5HH*YB1,D`qc(bKe,54K5[)Z[MUM(4E"Efa
+
+XkZB4NkKK2kLab#0j6CjkTp[Xaa"kbPNQY"*m'4K"jHP$LVBP8ZSSe'a&Y@jh0EP
+
+V"F'A[SH8b3ZPV05`3dADQ$CCS&[VhR[ZJ+`S"H,h)RSYFiJTp`h!3r86KcA%h8k
+
+FqhDk8XB2IfUpYp!)3)4%EES%8!MYIECk%i*G3Bl2lD$rV1Bd10NGHITbEESBAPL
+
+'ll"qKm6d-f40b$h%5kQ2ZhaQ1Ll(%AHFULTUhAQAm3,G(DCJhH2+pd)P)cPM`jc
+
+a)Yil'hR0"&VA9Srr(Z`1cq1mBk1Y+Zr"UP1hb(r`2SrHTHVim08Y'I'iaZBl!%B
+
+e(ESG@CR,bmV+`DfjKLRN&EBFq@249k&%IG-9RUf[YEEe0lQTZ#c,Ei,DGTE6"Ei
+
+IRa#2l$Vfj#JJEijf%H)q1lPja$qG`hdGYCSN1fDAmE0M&Ef`QYZpI2`q-hD*)Z@
+
+&6"TZ3RH%T$%kYZ5mG*(`$Zf%*F6H''YYq(0NQSP"A(jPCP1@"Hbc-a`63IMpfJj
+
+G8QQM#X0MdPPYX*SqX[K6!N1fU(k*RNLN)8HqXe(S*DcqA'eMVJjPVPLZb"*&8)T
+
+BF,36#08mp*F-Pam"U8&GQ)$VSU@CR"A+Hp-#E$@Y!E(aQFjMDcCM!Q20Zi1QQE'
+
+6G&[-MdBfZqd6)K@e55+X6a5VPTKeA-19r8L08DDL(kGA1EjAlLaEIc+d-M`L2Vi
+
+RZ[bld[CE1c*FraY+8qjrDG#Zri0%+)[TQVc1rEe+2rGr9HN6jHj$Q#AH-VeXp6@
+
+8P-kA6HD+pfl,'*Xp-aTfXMbbM%r%PAe*T1IYV3Y"TeT+M"BQ,k4,cV[M()J11KG
+
+9"8QNA%[b9R,LZ-(Z$-a&CQj,iJqeV#-TA+6)af0,fHi66pd9DmVGammmBRDE,lk
+
+E6a-jQdpC,Y9HUY&PMh'!l*VQUXDU33k[`rIdQZp+Nmf)F8105kHKA"kfD)#48ZT
+
+a,Ek#,!k6K[Nmj*`FI6YmSI&lE3X%Jj4`2fAQ*f2a&[BkLLk2&'QN&HEl69dq+q&
+
+QEaE!Zr4`bX@AVQCAk"CUa(QjB3E18(aLcb+Nd&J"Md(k6b22G#qH"epVUGGlTGQ
+
+,KK1ij"iKKA5N[K!alBLl("2UU#l21"Sbl4B8ifm%dmC8'@JCa"pdD9*cFLC'@Z1
+
+b8I1aUdcHa4a!*qQ*1X40+LT*@U,YYR@,d(`)ijE5Y'qRHYLA1ZSL`ck#pD0+3RI
+
+j81BPq2$,br[@QD5aRE0mEb2#l[S0mR1"&b2IV-B*R,4MP51%f&#6(1m-1V(,rV6
+
+fh!m@YGcQX2C-XUCj(%%)19K+TLS(+2Im",99QEeM8JTfB9fM#SZTlqMXXp[bD%F
+
+GQ+PllP195!Yc,RfqDfPFE+b%(Qp*f@XNf6Y)C+#j8`+[`X+j)lk"4RII!fBdS&N
+
+cc*c[KAh"jF65-X%+"LilDl[C#DQ'1-QV[$!RRBEkL(1G,)GcelLp+*N8P5#Ip8[
+
+kE5mMfFTjQX4F`6k+5CVR)MRf9@FSd%KZlL*Q`FCBZPKZUj!!h(EdJCVcII&RNej
+
+U(5""heABCB0d*"#E'XYD4iipG[cd"@p@)m%(ma@HZR#fD,@fCqaHSpSr+fN@SFp
+
+N-A!DefP0l#B)6@p&*!3MqAM&$%8G1M6U343@p'c4Ee3Nii$'crc3a1UGf[b9Yd-
+
+N-MHpfe1S[CCm5eY6IkdQ10N+h&-3"JS#0%(q#K2#2Yr2T*LHS,@c@l52PZh3fQ[
+
+fXk2"'1E1-Y,J0,,SE&hV,X'e"'QYl,Fe1,00ZP2'iFP2J&M3Ep*kSe'G4er[N!$
+
+M1BH43rHJ('j4m40+9%MJPV!+%p+E+mK*"fr(XC,3%1bi'aaaa!h84Cb0RH(QdT%
+
+d0m*H2U+-$AQ4(-dK'+*dN!"5ZLjc'Ikih-X,jbqUF'8cEc,$%L6-Y+ciq+2"aYE
+
+RlSiSj1MAJSfb(TMNajhP(k[6Z[&GD)&XCEBN-TSD+r``@(FqB4GZklFf*K@-kGm
+
+f1ZBF5f5IQ#LVF!['lUQNEUj1B@PVhr*ZqeDkX8YPm9f"B1K[I)([k52"DZ1riHd
+
+!I4hFm2Pd-'PJPZkZ`(fm*Ei[HfqlNZP1qlSTi(GlqHeRLqYiDQVUVJ2G+NL8`#F
+
+(FP#&@MjSie!Mpam-&CbcF`$U6FJ*r`32'pRiC[PDh(&fK2E-b@mM8!Hhi0mM(ME
+
+deDRc*+""e85-,edK!l[E)e@B*2!548e3%Z+5jM"MDhNb8'!Q0Z-cSb@k%-#K-$S
+
+YGEB@`Jc88j),GmLQSp,Zaq&TK2L[YGPNZ'IIh5cFk0p,K%&fD`bJ"S6NNU#[+eC
+
+rGMBBUAM-GVT26&RmQ'39FINbkE11K3`ki[f"MLFI@Z'F00&MD`kQ8)bh2N!5%il
+
+!N9`%6YR,K,P81"#+2VAm$$p&9404Y6XH2fap0j9L#j[#i'-$!I5T9VG1qqbMk8A
+
+Ib-Q#hd-'Yd22f"PBF8V-Bj!!AQmQa292c@U4FD,-dp1M3$@Zr41Ul9TNIEDGQ!Z
+
+UHJ4FY*d[F(Ep!cUiAc,j&`L6P@5QRprl4IQGf'MYY!hH1,Fm[Dlcbce)iXMfdBi
+
+-S#HUT+P&2PMlGp"+XRpTT2QqCB,"`hjeKBmaT#L(@#Uk@NP&(If3!&CIPI"3(AI
+
+3BH0N+hiZlJ+HqB90m9GSPJ+6L`jb-pP2q#c8iF#2d'8CS,QBS%`6@'d(h9I4PU+
+
+#GPMI8[Rhae#'8f9bNqYmpqmZT3U@ZRVZjlT8jL"l#R0q-2FH2&D0q,E`M,VXK@B
+
+ABkH-`NGe-RU5)K+baPP(Baq-`1XL`-pN3eSG$4R%*4ZelEPc[$p2I[lDZ$#c&K+
+
+e#3R#Lh5V!pN'36E3QSUZlY6cb@P$8Nc+846XiKZ2FBS1j&LA'DFMHCkq2jlaEIm
+
+"MDK6T''EC#IQQVMhpeClTkE1Xa@,jjAQrDBcJNE+5R1&)VHH,I&5BF[VQAH-*NU
+
+VB#5BRV[MY%he9A+dZ8L2KDpLhee@flT,Ge95B5H16cdMaqCH3a1J&35VfSJZT9`
+
+5d5"INXhMI3QqN5*%-RbJlM0fH%&E,pmp$Dci'Vk(HXT,!M8`Zrf,UFb,3)%4R&m
+
+fS+GYdC-+[NPrpLG9cM8@jGR&,P3#*!HJ0aBfP+pc,2IFJ@6`Ul'ZQ'5[(T9Pq1F
+
+ScZ-kllL@'Di*M(+4pUN3eK9IU9a4&G!1*DF&R08P0"12h339Fbd$r-U(,AeEERh
+
+F3B53!1rfX+m,dNJPc5'`LqUXAB+cS,pB%0EA58TfNhpJ@T%JL$3PiFI+""V&&U-
+
+3M03kUmVlCGha@RVQ&1MfBX@Md9a"'RpNl$TGjh(PNVr$m+CY@%jY2dZ!!KZTa!q
+
++)$cmR2ILBF1p+R`R0mpHKL-,lceT$#rRf-1F1H&("G1L&Z4hk-p358FGfV!BDM[
+
+qjF#&X6(dG#A*UC(-`2XQq[`#pX3IhIiFNdR*TKJUbc3UmdBcE1UED-XDjM#Ze6C
+
+(9(r`+hTIN`cb(02-%85X4E$Diik(N90rM[$MpllMUI#!,iLM+D5B)Gf[cpe[0`h
+
+UI*'1h##4m!3"BF*TYpA)l!iJ-b*lD22pFcIXI#R0Vr)Li$!H[p$T!d2kR$pm0Ij
+
+5[P'S0(K0+"RX[5q[c@#C5rJ&qI0J!m'+QXb9T,X%AT@r!Qq9H@05aQa54CXQZDd
+
+k,Tb4CJrr0dc0hKP-9FkE,kq%"9FTcZAlk+0)UGJB*9"1b3HaL%,6hpf6m9ClZ(0
+
+NaV`,(MT*qlH('J@eTN"`'CS"e`D@jPTIiJ3mpT*f9Eckl`a3,N9h`8LPpq8[2UH
+
+@IdN1B9DJ[9#0BRk,HZ#eUd+Y$$-`PXK#h4UG6)RV(V[[H(j0habJJ"jV%%B6JBA
+
+)pm0A[dHAF3qmqIle"-B24kjr,PN#U2ZI'%YJ+4j`)%`0J@IRaqbU--,L0Qf*Eqf
+
+rkqi[@6EPLG(*%H%j8$T@1HPajTd,)mZA*%492jQB&ViETk@$Yc'0l"a%4*4#6"Z
+
+A"PLEUMGH'N6f!RJ-e-D80[I!cKr-5KU-$H8Y1BHE",MHJcCd(AI9i(JKJR34Ka*
+
++1D,,#'3Dh1SBh"C,hMT(aUK`MNcE[Z4l,#0hM5I"%SV9`*S6TUX5hdk3!(XPmZ5
+
+3!(VKVPU9#kmq"Z)-ee%GM#@rU[fXQBC"&XGR-ppi+cEMN!"9e&4lEa6mEK%a8$U
+
+TL4(f$!Yk*k+k**e'Kl`T6*c8Jf%lTk)9d&2fbqmE3)I(Z9&mj0Yc+J246MMDq%e
+
+H)Djmr`&m3ahfUS(G#r-ia)VeIaTQE$,4%`I)APipe3fMD*dGXdN2c84FFrmGFIh
+
+k0d8lG'Q-i5+L+$2be"M`9NBPVZV4BZMGpE6P1&"r'T&2BJRJbI2JcPm9X6"JN!"
+
+LjNX$`Aq%fk4*94e*Ha@8PdGp$*+RP($qPDGDaU1HA,SLMLbB4bE#HcX6TE[TXh5
+
+eFL+L$QU$16SamE1EqqB!i(hcrCP)I(ijjj@)'ESBI,DmEr@AiDkjQlp32)%k)UF
+
+rQ`TaZK&!a6HZE'9Z5Ac1jh2!qHU,cEYVEbm5rLqN`CNbZf*Z($Te,iI@&q4h*qT
+
+m$,Sfl,##VM)l"9i"0)DbQZ'N9LcjRN+)!IDE2UGAP6"YN[DBAXK[@Kq8kX-J4&P
+
+`a3JAQZH)%5!phNC@8"0fE9iF2[V[6*64kM!a"U"EH(i+ED*qL$ifeG9N23'NY2b
+
+3!2bJUhLj))rGTQmMdc!dZUGi$V13!,39RAmkh6`%jqMipRid0Mrkkqa'RXP$ZC4
+
+ThEB-IZCY+@CfE&a0"UFj@(e2bflYSR+B980K#Eh&1)-&9bKM-p-`hG+D4&FbT$k
+
+lBeNiq3AHGY`#qK`6lK3Ar4XGmPc*k65EqR[[VY@[qK2iG`P*cE5i#Jrp!hd,Y96
+
+VX@VQcb')ePGbV34m%lURlF16MdlbYaeU1B[$d4Xe4F6'[+F(QhB'q[dN'"93qr6
+
+#!QLi'@Njbd0lV,Gp`+6(HD9fq&8"3Xl6SY@S8BTYj0j&fZmSDjb&N!$5h4dSLe)
+
+Gl'h6jb0DHY%'N66Q"'VYG2Uk(VCAiZMBlX`X,ZYpPe09$FGDkDZa4G6eqP-BM)%
+
+jh+h)KIM00BPY,SHk6C8-NpAhLQE8(&C)B40)l-%Nldj**pJRA*@)L`rR[hcc$1M
+
+)Ec`!KZILU(+iRCaYS[RqfL)JhT'ZYdQiRLhY+`AGpG91m4BGrCDk'%SJLiJBXAf
+
+BfKF8C*A#*3,1e"D*+l-HJMV)`TX#cNC,m[ha*)&(aH%3AH5`L"qmm[hDY-I0RlC
+
+)3@A4a2CV+3+I%fU(iN+Jr2+id"5qCBY1&mM`N!$,NR56C9R@I0HR%K2bUK-94D9
+
+aSUir`9L,Y'9a"8fie*-EkfcU8T%*M'f46%SDRAPSr[QbkZLQ)88rE@"KQB8mjXT
+
+e8##FERY*+P*,DJ9e)+pET@6ehUR9rSAJp*9i)mYrSZ2Q30"FmA-ZV&lmpMENrE!
+
+291pF&$m6dC(q6MA-alDAPVD*VqNSLDJd(mLkN!$NDbKc'X$86UiQSQ+8i*3K(Rb
+
+(5U6Hd0rR#Z2,Giq6II6i$q5D8CVjXYP#h-eXd8ZqE"M40hjZjZ)aCb"%FJc*NE$
+
+cC2jf$rpcMYCmM4hea``4TG!ArUEJS%rB9[*`hpfBVF)JcRj1LDeDTd*-P,$P+q5
+
+p1iU1&rhm#IVB8$@mQBFX("AVNjN)`XZh6P!T"+d,'$L!`HG#$GCP9DU*%EaFKP0
+
+3f,66fi4ERD82pV@IQJp43"bq&!4EFL#iJ3%RR8d8L&I+PCQpXh4C`I,Sp#4TSGJ
+
+cjba#S4'3!)6EVUjM&,6%cej&Mi#YMYqeZkCai)mi8i+Zmj8m65cja9%(`l&*#Ir
+
+@ia,j"#&f3ka!D8mj8-Q!@rfbKl&VL!&L6bQLHii5f+*P2%Gl'HDi`h0`3*6-8li
+
+Ec"JjF2f4%!N%Q6Zma0$0CeB'$bHU8TSU*V5iF2TMciP++ipl5@(J,ihKQZabm)&
+
+q@Gr9Q@a'dCJZB$A4TrK`LB5hkbGID5FkP(`iHb"hcXhMpLhpTl&210R3IA03ZJ*
+
+piHG&UHi8N!#!b+T2TUF2,2!PHIj%kTAblA9M*cm(HPUCIIU3!'a!C5XXR-0!*6L
+
+8)QGNiN[!YfrGH`ab'r@+RGYZLdVKX--0#Ga-A!Sa8)TRh-Y%3XJd"`ef#A+rd+8
+
+XN!"'-Kd`E[,fplca+ZDpZI"F4c(ZK-kGMJd`0,p-1hahPZhf`"#Uq)!U[B-G0(,
+
+RiRXP"[Ua1h&6D11VELm6MMB,b#K*mBJERNV#U&c)%%fa52aKrZY`%84(rkAkrPc
+
+8+hC'391&NCJT&3P*4d1ip!)lAZFbG&DSf0RV1*UQi%Em3YA-MZLR&dNTH-%L6(2
+
+cMr9@kHl5hjZqHc,[MX4p8Q2E%#Xbr6TFF!h4)p16SKN(%3[a$RScK#lkGldF4$N
+
+pVVp&1A2r5i8Sje&aV21EZErR0q9R6)[M@c80lG6--H+%4'Di6$hSH8*61YUEKTE
+
+Zr"if0S3Gl0P$l%-C[aBUbh-QIP5P1G2E"6X0&+&'j1'-0Zk@RBZ(*2k#*PQ#h$N
+
+D(#E6rKL!6#A!+ZhC#`hVQ(hKmq$q81"K'[r0r+6Eqpd(Q0jmESm,h4hUKhcK"F[
+
+Zdl4VK8L)R'ALTrT@lT0)j#L*Rd4A5q@Xch'dGfAj$JP#NMp6#KB6K-p'L@jSSXS
+
+$a*T4aM@HmEY9(kk[`Kb(3kAH1h)me"d3Z[eISHDMD&A&X0%6T$![LSNT,L62C`q
+
+[ZNkcMcEE#,c8%&NY9)U8Mcq3!*-4a8k*Lp9,'1k-QZ@cr9V1Re4*FSVBdU&U9e!
+
+1d5,#jKqc$lq+G0MdK*hRT'*@&fUj5lZ0FN1q@G-HkBkmd[dFK6U[,J(@3b,S9'Y
+
+Vphak@adrKBllj%RUk@GB[5+NFdCE'!EHKm(*EUlp"EAm*AdI#hPMHHkb9*KcEIX
+
+KqlJd5(*`&EI8!pEF81DSe&hGDeC3I-M9-D6paTYIfVNYd,@DE`e6b!P&kAJ$Mk#
+
+A$#DPMF#!3Pk&X#9$+62p'%h%9jHUeTZ%%+dhZ,DfG8jI!CYm6Rl9c+)46klB29L
+
+i)L#-#Qh)$ZXbZ@-lH35m1N,AJmFPRk[LHS31JZKp@i&Z0C0UqLGF4H41Bq-(Tjb
+
++3l!`FaRB$bPQcdC-TrBhjqf40BK2NJVC$mNl-#+iC*DI@Bir,'S6iD(hI,P!5'R
+
+(Ih-*h5`6iD5di$8-EU3`41YX%)jpFd*JMZja`0C03-r20m9jDAXFhR5QN`TASF-
+
+()8ZQ+mQm8!)TmCbRcScfFN"1cG1l+lrJ,Y&FRT1i2I"B`3ec'kl)G,ZQ1PbEbP4
+
+G9[P@BSLlB$i'5Da5@q2hBL+[%RImZSma(-%JlalNB!VVpU&[Sp@mK6llh)JaG`Q
+
+1DLIZKrejXZZ(Md@F),J)823%#%60C"*Z35@iejUT1)hUa9kY"VpqpUMPqMG)eed
+
+Rr*)6e)eEZ0'V`%qR4F[['*jRB',PeDQM1DlYZ49BN`0defeA*4H!q9GBPrBbPm2
+
+hr15Jk3N*!6QEphS5r`&M1ZXF06r(XTjfN!!8GqrrdXab#l!q"BJf6U'GKl$bLhc
+
+1S`p@4kmV+lBA%[a-Rb6K"dmCA4,BGM3!%C*#p$N`$3BFZm[q8[RAqTPDdMaB4b$
+
+dLD!)hkaP,hBc+bXRlK*N01+TfaG)j0*2m1B%(,RmhVCPcD%#P)Y,9Ql2$*36(`#
+
+&@iMY8RcX[PbhErIXJNe-T21'#TiR(&6dYZ68hZ5#U&qk"&Rk)Y45efLpI0MDlVZ
+
+YDh%"q5re&dUAp4HfZrKllLZ451,p#0[&DHU*DhS%TN6UfL@I4B5#S`2Z['d0[T0
+
+'45K[$U3%jZq8cI@`,d@`dkNE86L)K"Ea8ACm(i6qrZ5,0DmGl#eNmL%,[4H1K-$
+
+lYKh3MKl"FP4jS,qPQbd5!RHj-p[dHYelhG$8k9[A"@hhf3&qNCP1XG1f4mp+SI*
+
+1RSMD&['A)Fd15-bfQH"'8*ilK2X-iTRid5-%Tc9d)c@+GPPF-c,AY-15rK1MQ-J
+
+dacJQq0Zp1K*d@)CD'UCQk['MC&14&qX-Ap'Zh8HEAe6DE0[I%d*S&-)cpUC(JZ[
+
+QmlcYBUr&eqQQE2TdML+U2pfNPE*SQ%8fjUUkaCS1b2A'A,P8AQP!,iQ1p'jm-e*
+
+GQLC30C'Y!N@LY-bGi$KXF6UML0-!rj)0SJ'"K-6jSi-R-a-hX-9eb(UE54kF4kB
+
+5A(LJf2D(h$T-$cCaq+DX*Ya*biG"0LZm8d98eC2+cp%1YN43-0Z*!&39el4HG,Y
+
+)Dcrj@jHP"-cV19f6-qX@LB5!mdrLH8-aYpjM-cYka9mYIp)FMe0HFS#MqUbQTIG
+
+i*AD96ZXa*5XbTV+lE,ZPM,8XTSa4I8fRBNLYEbEL-fDSfmf"JTB&-ficBH[8F6'
+
+C1D2r8Fbb,1IlL5JHlE18b,-G5$-ib)!L#"f#E05i,2f#,5mUMAf!L1fKMQ5DSMc
+
+b!##-H&PK[jD6TlH83aNIBGB5r'IEPUUqcfG%T+MR*C!!E,I!B#VK6pA0#I2A[96
+
+(8EB05JiK8ZcIdYkdVq)2i`q&YdHBh2kZNi-JTXIpYfV1r2p5)BMj2reNRFR-rcf
+
+6QIr[61EAYH5"I[,*@!3L8H3$hf9KN!$$BeJrHE&XT+hIRA0&VPmk)p5TUb"pf-Z
+
+(F2cD4c(R3!i'$5'U*@(pi9P'QE'mR1jf5Tj#E%fH9e5$G-j%D9qP5D0#M!bT+m#
+
++qHh3f(*a133PY,bF*f3jl@N6`,hTD)f04RNG"e"%9$H[U#I,hj6c9`AI16m[9`Q
+
+2'$`he5JU%,dQ&PmTLNS2G+FeH4#*RRlq4Ep1A4jIQ9KJ%9h6aBLhI1j-l4,$rA2
+
+GZqHY5P6Q`!4rCq2-rN11deCZKD(!+ISVU1%,9YmqE[[@pH1$G!5%j!a,+3MUl0A
+
+L5(KZ%#S@TMMe*K+"R3b#2Xk+9,@l3GT8Y(GL@ia3(ll,jdj&S6`UcBE2PVf1a3A
+
+mdJPY4TT9Bl1mDeJJiiKLUp+$k9TlAHhSR'h9Q4lH&!H)L*hbpfML%UJIirXif-A
+
+0@'Admf*$8@r'h+i91$qCliCC11d6Z%Pqbh8h`4`M5cLZ%a-LP%([BRSSmp5F@%5
+
+UZr38Rb`YV596Y54+5#k2&'hhqM%r0@6DAR60k)8SLR(d#lNHlXb#e[UUXN!q1`r
+
+VlX2,lZ!D6"Gc435m%43CJZJJ'UG6jI+qZhf(r0YhJDfKA`TUaXi-"JUqNqaphA&
+
+a!388bYJPUcd6XFVVjYq2l4kFhGi1"1YBX83P"rG@qFf+JYhEmGM,"-5hGhC8`06
+
+A&(DqAiE-Cj!!`-QhdmM2(4&ELh"m5"Rp"GhHEa,25+c9*@8%EeC$3+G9$m)pZ@)
+
+bla@M3fY+P+,m1HRBa)KPS,pbeCfbq@8HYB%pc@aai,9hH1%,B3%Tqq2#S@[d*Z%
+
+@2(94-pTM%'j[M@)lp*Vd-AB9a6fG)*(&bm(cj0+6DNT2)qhGYh9(V@!*NiT)Q&"
+
+$jfp(6+j"DPqJiZ"T-a6$UL0Ji%b0E4qdG&mHHeGVYhbMi[-B0dV3,QC2qiA@-B`
+
+aphf-Cm[F$IRe50E6BaIQfZpl!)%2@q&[!4rkTck$*2$VmrSVKqL5m2lJ3C!!PPS
+
+"m5%lMm`@8q0V4`'hS[lalC'4ArhdKN5d6Ka-1N(lKI0'pSEG9ZVVpmRPZTdemZd
+
+kPX0i,qd2QNR21#FSKH6$TcA#fFTZ5cCSTN1a+XDdRFm`EQ9emGJH'#qrT"rXL%f
+
+TE,%bCcKLeG5,"CLGLBVU-@Q+a11B!P99#0LUMR0SN!$S+[R1G38AqbFLc$rQGh$
+
+*NK[*,-5AXr&Rd`EZ!("V'e2aLc#hNNm$0)-T1mN8$Hch-5qGQ)-e1E*iafK8'lL
+
+rdkUL$p!2iGTHBhBH9,AIC#lUPI3Qdi%[IKBTXNGShC1FUTm'dhY@lD88pkq%FKU
+
+Gd,03T-c3$P"KQ*9E5Q("C+DH$6`FQ2d+j`QhZLhl951!Z[-AK%fM3TkCdHI*d'+
+
+d3$l%+GIm""&5M56--J*2'LfP0,pL0-5[SZL5G*M25HG[2qJ8"b2DAdE6%CX&"SR
+
+VQjNSVaaejGlEG9D+-U4YfE169L[(+a@lr$+(4*XJpA3U1q,0F++R!UIhM'c6CVf
+
+PV6Ra83a,6+SYXP$$XDjGS8BBqdN&GKIT$6hM&J@cFq(iX$M8Q1f,F4"JJppT(!X
+
+6TbLabf`U33,iIi@4Jfl)U)9Qhr,Qqj%65QL"Pk(KSPRjYG[)QYBYLqqh3@D9[*%
+
+MLK853dJLYpSkmi0RN6ZpH'KYQMU!MlQV#ZS4f6lMSaQ"+1M`Jhq0GA8KV!+RiAB
+
+Ifh)6`@laCTlH#p@`AFEY2)hbYF0'@BYFV0K95heKbeZYj2QUf2ep$l[#NG2"rLF
+
+(TZlflC&Lep3hf,0Pc4&a[K2TBfNXV"$BDT8k$Y)-"Y23qY*Rcr6@*6L(3pNeaQd
+
+jUQhaP-$X4TLJl$e3H0&@-!ipFP6FINk%lrC&lPJ[$RI+%SR"PLIeqQej0rBIR(F
+
+$m&&B&c4@ibmGLC!!DcmNQRYq@`bcJpEqHBXDXCjJa&11BLMrhT`)GRB*6A,#9LC
+
+1Sp)M+eI!RX&e8TqUkaJ1&a1!qM!#2VdAmb43BQ4a,S"3E$'m%eU@d6@%)JPUYkX
+
+NL*!!Z6Frk6dNN!#kih5lrSA&er*e6cqXR!"p$&,9'JD3!!FLYYE"Q61+2HPF&c9
+
+K1(CP`q3"hE[@UCFm*JM2T($0lib,pm)cFri00ACmmm0([[*k-q-#[Fb&k@4`hLI
+
+VI$0909*$B3hrd!(rdDmLX1q@PDfdYPU&@bmaQ"#)bH*XU3CXSG6TA3aX+A4D[ik
+
+YMBZG8aCFl5Q9qlB0VFiaCE!(bPlXNpUKYS8qTM`)I91Z+Sl25a`RYPe-RNk-XQ#
+
+Z4h2h)AkmkF)4e8"Fj5GZGJJpJm"-KLdIrTVVl'b,j"`893@"HFXbkR#Mb#qDM0K
+
+kr'V!+*Tr8*!!IiPp%jUY'p,DG0I-6qj2C6(1+b@03,p)PbEFiFpdq@edrUa5+[c
+
+kHd*M`$c0JYpm%Ga@l9eF)pR@0`#Tc,GU'J0#TP%l%Dm2H1*cGIfq[IDQp$S,,+q
+
+lE)D5h`L+E2Qq3pB&TZM[U0HGmrKc#l2Dhh"rIehM91**aD[QA'@LDp!XiKMR65b
+
+EYm9kcE63GNj[i)$21*!!qGch-b3CB+DLMFQ$l'p'90[%li4a@p2Nh6CZDFmEa-*
+
+`dN*iceplCa6phAre!`'pm9[#eerIL,-TKSe3Q3aj"A!rIPYHC#3Uje1r3cEedBc
+
+k6eH$j6mpbI$brXhpcrpE2@6A#2HIMBY*+k1DjkYD'C`4Q,Bb[[)RB2r(RUB#c*-
+
+%j*8iKK0b-,5GSD-fIIe[0bVXfmk&PkX4E99H4%Z(BTZfHUj2a`I[HjGqN!"PTVF
+
+rScbSkFMKDX1r69@1QF#GKIFM&#89Aq-d"YI&a&#a2YAkDY'DrXEV2mG2f8YfCDG
+
+A5Z6+&pJ$qBqm$jQE6q[d@@6j%S!V`,!&hJ(HJ863CLAJZmAJ-$YLPLmC+VXP2X-
+
+da0Y!NY,[--#[4he,1fkPkVb@XDJArD!1#F(f&+ZA9c($JlQ49Fe"e+'&khhaCKU
+
+De@fSF+&5"K%aQQq$Tqj%IR$PT50FY'QZAFdNK!UmV`Z2fGA,UCB2Vq8m(!Y,*#m
+
+cHlJZPb5Hk*KQ%Y!bZP"@N!!L5rV@N!#cC4bh[K4'Xf8pi4)HYhrV4CdYFdQ@P0q
+
+rfpjNFTJZQaK1Di(0VbLQ`DGjX13c(A'PfVbLr#8I"IHV)eJY#XEJ6&iZ2hpQ'R%
+
+Y!ME4p9EcGL2%(M8a0LjAN!"S2IE4[Z-TGL#9f(N#H@f3!#60#35RcCprF0-[#bQ
+
+b1S,RmhIKIIbEJcHem1pq(++@kV+l*`C&iK&i5"0B9#'X(@N3Ab2*d0"pmAfS@$T
+
+VQkI`821[hXHVqL091B3h9JeqMK-6AR[lp(h&`%XQbB4&'#r3idB5b&Vr&)m`#*9
+
+cpILmHmBL-d$Qq"RBNhHhZ0Y2DDr[hKQ[Mjp!BK4F(i,84BkkpklkLFY5-kM6$m)
+
+2JZh,A*eimH*Ji#YbE8fXK0V$QXeM5UZEj8R3,X+kLMXp+qNmcFHJ6Q5@b2Ua*,e
+
+8,-@5c68S6MhlQPX),2h%`*B8Vc5bMhpe(i5pPR(&1HCaPM+%KKpN('4`$60rVPE
+
+Tk5VML0%Pdi&S'e,A0A*c"c%jdRp'iBV+PLNIR-r`LHCCDR-'MD&Z5RrE,CdCX@J
+
+UY%mj4jI'eq&9CN5q0d*!U`F0TCCheYmZFaq$LYY@5Y(pH0C11ABGN@&ZSMeKQT9
+
+'9p-3D*-&ZfMckqF8F[[2I[qqV$)S(j'ZM[@1RrkB3D9%%QG$hFh-*"5M2ikhaC%
+
+I$TeT+Q4L[FJl0eL`&BAZLVX`,"QSR@la`,PINLC+r#)h8+Z[SMbqHiI0GcIGZlf
+
+X['jc-hcQHNNC+'A1qGbR$H!6p&pmjQiHf1hDeITZ-'*3DT!!ILCU5D%H+`)0ia!
+
+bSR#i(q5LFA93T-Z`P1+bQAX#K3kJpLUrT2d)0XM#ZBMQG*Xp3CeGrZ8epSjBJeS
+
+JFPFJ8TSdmM"60T-M'AU+hSUh$Z%p39-3hpM[K'#+a4RL2XG)UYX)ThJ81ZQAMbj
+
+2kcKlY+)[iB[Q1hi(PrC#fPU0jm5ULrBZVZBhNkG5IS[2A$dh*Zp*'L+Md(SLUNd
+
+"2TYG!C842cdrJe+DbB+0T$3""Z)E%&6eGRdpmpA&86$%AiK"B96F8dQ'#%6"k)D
+
+[P[281ZCG,$dRM9[J"dT,dffae[PMICpij290iMZFUl!*V6Sf+5ZK&-mMPDM&X-A
+
+DqZYM#'hMACY1Y6c0kr5f6VqC,SDU%[)VqAQlqb!YACNKmR14hX0pZ$G@G1[&'bV
+
+heC,rXE"hN52Z3eCVIlrY%Uh"FLA-QT5#q'("#IdZdXRaCjc[[X$RmDVL54@6eed
+
+I@*PkbEKjE`[rrN*CjST05qPBL$%1pP,HErE,@Ke)K-1$Ej!!BB&hcD!2-H$@hfm
+
+i&,QKZ#%rUcqCM3LlX!lC8HSIfcq5jql"'Qh&I-PJjiYV#@L8TKQfF$a0I-)NZ4&
+
+V`d&a"KU5[qU(Q1E$0ipjYZrc'Dh9NIl`#Q0@[p+5GP$L"N0kLj[`G'm4&0,[bJJ
+
+$-9mD)mR#)a'L+q2@-8A6!'m*LC!!hJj"h3p'53Jhe,l2h-L,'Mq'qbR$K9IUPdC
+
+DU`(*Xj!!$QK0VbV12JD28JI1aF@@5&d4TTqbFePK4Ef,ck,f)b-T9I'a)q"JN[Y
+
+6&Y,bIVZ$-5F,`SNBJC8aKZ!k%A,cCkNRb1#KJ+QhfRYNl&L@RdrD@SV$i`LPb"e
+
+(QBBfKCC*4cPIB2UBINNm`(A4*CYkFYNH,9J96Zk$85IGl+ShXl*&5GmdRNbl5N)
+
+XC3TICK5CDhN*,'(KQ)1UZZi!#ckHRC)"1E,@*XV-J3ip4`2&SC(r$6S!5VCLB0-
+
+24MGX&0iaEVYp(Y4ae9l,kT(iqa2XYRkbE[&D6JYK"fe&)E-hSD#PiFTdEU9&MiI
+
+9*'Q96PCBGXS!HUM(0$3qLJPbK)PIKG(fF)d*pbi!KD#CcfIL[-0C[T@FTk1QjVY
+
+rc)EC`kST*lNC1"r$V4cI$E45LKCh@ppBq&HVliRQd4+!ZJ[i$[GRP!'FDi26BVG
+
+'"qR40k'$TI36hSmjaMbE21*jQD"H"raJI&eDk'UIM,9GGQ5M@Sr*kdMSk4UJq"P
+
+[Y3E$)cPTHJqI"JCe,Ppr+PXca45[j0D6pqGLbhHehPde+e!'(a[Kk3SCk9`+T!M
+
+$N!#mh[Fd$mEV1!rc'$E#9#VR@JQMmLVG8BX)5b,&cRTKPT4YZ"S&$-$j+PeR3RL
+
+lc-e9SU$%`X"X,DGXN`,X[R6[0IVd6kmi5CrdI&!VFqAR@H1)mC4D06ba3al+ZbI
+
+VCM&Rp50QB*AmiG[&3r68J8Nj"Kpmq6$1Kca$G&!%5MRfe62BXRMXCQ3LqHkV%E8
+
+JM*8dYBS5TF-&r`NjciQ2HGN%9*GZdCRKl%Hi3rHN1Z%)dj(2$Qd%,QRGIQ[$qhD
+
+&b8JT'`(&5Z$B$eq#K'!)aU0*rFHF1',Ke1`$KdCdeR("Xc3B,Q`h(bG%9q9-ka@
+
+M5PV%1fD6*aKM(0pTP2P5ah--GL!HZiH6BbUh0cE0,G8SLB5YKC!!E!DqbFGV6XG
+
+pZUQibdL05BGS+[ZfYdDTGfILe[A*ekcFKEV$3-3TD,99iTFR[cpJC5[$A6ldp"Q
+
+RhX'Vb&NS*DZ$+P1I`G"-`@"A)1G`6(m$I2eQ+'YpZ%1c%Klm@pX[$[,X0DDcHih
+
+[M`PQkqJ4K2FB@4h0@X%e2aN@lCpDK1Sh)J*0IfKSPlFjI$(!VPlXV+&*,pH*Z2!
+
+aJM8&chfl2#F8+6X'86BI"#CdIqq4@5*&AqR[2SpI*H#`FI2mlC5IrH`HiI-%ji)
+
+EUZC3Uci2"eZQICj[r3NYY-6,+ZTlTD#1V%'(cTP9rBS'm8)k)1I8*Y90pH)AFMU
+
+*(+TFAEjEHA+6Fe0CE9&!KAj`VL+Ca0F9eCN%N@Rj($#(%mY`RP$9p'rIil(N`+%
+
+!%5S*UI(K)T1m$a0H8N4PcP@U9UKIh!qbH4pHebmb(C28bJZhL!(#DVD'GSC*kPi
+
+(EaPPXLA8+p$4#F"mf$hRN4DAi4@CE*5V'XUi-a,f[H0#EhH4EHiD(LU0E#6)qh"
+
+2)5KTj3r[cFl2b`m1`i0PAXG(6J*Ik8Gf4NTC'!@CSdFE"9a9-I,P%8R6"4+P%F0
+
+-E'XK5apM([9p@$c6lE1RpFG6&)EkQ`SDqmIaC$D&'a,ESq-ip"2CN!$NI-lp&ed
+
+T[CE1r-FEfik`rDB$RjP(8A8YDcUA2RIE(qLCRrQi(Q4S@16fEEl!EZM3*ASIMrj
+
+Dq@,S+c9[Tk'U6kJT,@@k+ap6416DeYNGkPam,SGAlCXcekSDG[imUhCR1ZSUJ!q
+
+[eA3r(c$FFJ1,%L`LpIhAk-(Sr)SYcUC39+iY[fTB`L8(Gla$b1H)jYC'1SQaD01
+
+Xq)`M9@@"HNbB1K[Ff-*PU"qEC16kXY63'p3Dm9lY,cJA*-Ui@@ahLc[5$%p3UHm
+
+"#hf8@HT[M$MBm`NF!d13!0QF'Tc)fCaM1CbcaQ3j4HH2QqVfbU58k"ZIIqUeaj+
+
+@TApZjB*'%jJHqR%HMaK10YG*pLAQJI['kIejpNQ9S-Ked6!SYPrqm[A(STIMZh&
+
+P`lfi(eR9P0H[$S0[jCBlNDpI#9jTKP5GbJ[faIc4(5!qNEYYqhk'LA+YC%)H0cJ
+
+r#T&@C*M"T')mi%)PP(YDl-!M[+[ckNbDT),[&$R-,IHfFKN2NB0Gp8@,8km2FN0
+
+B92@*6k+ijY2l`&+3!)%LU%&YIG'B'hL#6qh(i929iVdp[jh4!ddp56A,bNUmR0j
+
+6PkAJiHV1100GRJI9pI'aHrESMRA*+QE293!G181kj"T0,mG%Y4LpqSZh%1bLJ5[
+
+NEAq6cdkbQpHNqcf,54NU2[5bE#ap"8V8iF[X93K,eaVhaiY5MeU88UXi*GQXGBa
+
+RSkT%bIQQ0brpa1$lj(hbErN+Rj@`GV9Gb6a`EDMU[qE2FBa8@EGp%irIJ98Q0c(
+
+ZTfqJmCE),[kC#6ZZm"'VVh9LDAiIdr218`!e``*d"T4HI)F'H9qcAB*QEHJVM"(
+
+ecBrT,CCI!'d38B(Ld"IPY4+8Um6@JHEC,SdHLh@,Q*1aZF2X$a5Z(MG%(5eL-A[
+
+TQa%q3c@RJEIBaNaRM@F3KBJeDFE[!LcZlaQNUQqN-q[JSA&%'l,VL[jd82Gi%9!
+
+Ql%j2fBq4VHK*5jM!i0D53+2S@B+1q4dKRqZ2q#GkX4j4i&9b'L*cKCPqE"1+Lre
+
+Lk!KIIN'aV0NCHlT5UBT52,#X)4LepV2kj0'GpcY"1[(ja'X&d0T%)(k8eVV46&B
+
+Ce#Si3$Epf$CYmcjCAfBF+N+G3,m(jpUGS6[KM3"@G5P+PQi(pa@HV,q&#IYTeEV
+
+A459f4#8+dF8Xpb-,c+%I*%G1'mRh`3+brP8S3M1BUKh54K4)6iX1U$aC4e!E2!q
+
+`Y@2Q,em1j%fc30Jd3V"USCTP$-cHkEFMdK"ClFcGf92S5MULM(,&ik&X5JZ5Q-(
+
+dT'bBCkISc,DTj2,5-+3fFE(bb9(Y#ZINkH)Ma0T@I-QSXM&-9mG!R&!-&`cbRZK
+
+5`RXB&Qi3r"k1'"%$,Y(#h2Kc)JM$*li&jA,Y5AjjF#CqD)*Qq9S'LS$J5+r"pCP
+
+BpeGI,HMHZkIYhBS`bmZ9DUF%1EI)CaqKSjXcFkl!8[G59F1&QT&KF1h$YimDAAB
+
+'1&j6cr"6cc@A%`Clim[mG,'r1"m8a@!PbG4Vr,b&)Y"l,SN,ZFQChE[GUZX[U8l
+
+-XRr1LB'3!+9ril$$`jM0A`ZSC[rb3%MYVXY0L'iELrf"IHk*(S9,3%M5lmY"hpI
+
+ZVamUBfRf`!FH-1CJ6UV,,8)2)F@iB@15qmeTUJrQ`r33V8YAjrb--hpB@MIR+,U
+
+0IlVc6P+Zmpk''KUFHQbA&`mCAkLTF[2[h5i3e4McP*(L*!e,&d[T6%FM%jXNPSh
+
+qrPQV49a(BaCZIQ@ekjdk,)mUF41NSZalXIrKC*2$PI&0JV!b6i39FN&MHIpShc6
+
+QahHPJE,[c5rbqC!!+qP&6k,mi)q$eN-1lM`rTep!qGH3!,Zba+8F%ApSZF@Jh"B
+
+M%S9$q9@i)D#fce*A)04$D@I4K+&'E3k"SiML)pd)kFrNa9GJ-3I&YCi*hBIA'jm
+
+UmcXT9kh"6M$f'4FkNr5hI'r!bNU$f9G%VQr1i+CpT"5I*9kG%(QH1*1rI[FeG4Z
+
+rNcX&a1kP%89"kF`m5c8-AIXK'M"4C!aHeh064HjcmSc"PcMf&`jIefIfK0DMhjp
+
+"9Jq,&`RSC4pq"'H22KQmPV2cmU3FemSQ&'SBGdRK2XVM'M5TlJ&KF13IZEDEYHd
+
+%U$%JIi`4KiBE#hjiXIr5Y!4UN4r+QKLif&2*)QIjUi0'RkGXKfmc3JLYb0X%ZkL
+
+"+0q9J&ERDJUFU19aY[[+%b'rJMpZF!FZ"qP0(SZEb1b62E6j*bCepJYPih&SBF@
+
+CXac$EN`BZK!9dabNS!qX&fmN4T(&q1(m8$`U1R4I&Pki)VV+b2hHEbl`hTmQ9cP
+
+0HFXIZTaYIML'ji8Qrl6-H+L'3Vr+`TC"4TZ89J('m(m14,`2qD[1#%lMjFm('dG
+
+SQ*fGkh4Zq9ek2j3'(V-)f90LDlaiF[ca$-[0-pm`%f2YERIT(0)MpcEN9B`BrNp
+
+)[e*3i6T@piYC[0kFf@)NBUdX5*%#Y,dcJZq)(*[#bZ@VmQa#2e8XPImN85a"eM4
+
+$NUdmi,Ub)bl!@R'liZ1D-X!EpkiG4I[kdiZpT`[EfH$3&cX5+GLKAr9SDRR&pPS
+
+$SIc`QBZ-pcfI&RA+%0U3!2`,S`A1CE$%T&hSJr3iblU6SlrErHj'MT6I`X20U@l
+
+VC3cXFG[pi3S!&JBh2[V[0SjIHZ'`FA$ql959l+aEK)e$TNh0aLRm,5BGf$L&2d)
+
+pDI,iY3S%KjJI$3NL*@h$)$Y*IfjdRVCq[Ca`mk$UVBjJKXFK8Td@UQa'#p'!ZfG
+
++8[`Dq*%V0AfZVlkCEZlVI#%hr,,0205bNSUAfRSkMfV"`NQckV2+U'VjS,[DU'r
+
+C@NNfi"@!`2iiA$EAXP*[I!Jie1YakAEj+&3UBADGqNE!Z+JiVbL*i@-"`''8cLB
+
+ZPlqA5"UCNRHlRdHkMUBNRL1hPZFYP3cl!9hYlhlNUArpf@Y5KGc'V066#)Ui2T9
+
+cAT@-m,'6C9Ul3KLe5kem[L@c+XE!Ym6FT1,`T)M4Z8YmeT8mAjHUl3Kq-$Sa-V"
+
+BM"+Ei)YPbH&SX),e0A,G1E$&T4rYK'L-LqXTT+PCA21(blLB8qfEq`@CRTZZ5ki
+
++V8)V)qpP"m*6DH'mDk%iU9FfHBkD()6`)&KLd)@R3X4Q0iF2Yb[TTFkebH($++3
+
+DHprR9Y%llYah03PrYhlXSh%N$R0R%eMc%X3aFThLI&riVS5,T4Le6j&VK&CJmT4
+
+eFpQB,Z$*MbEdGiEKPl4i'i#(VeZF,&*Dq&#!LIkXR8)8M(ZiA2Y01`bcH'k'qEd
+
+fd$UYReCEhc'qVLH(+VrE'0Sr@KbKm)&MQE"e"p@TF+6JSm4mMmbLd8[8U#Br-@'
+
+L%K%5ijB"@GM1kI&K+XKVHaHMe"B+jmh`Sh5[P`mbp(dI&GTal+"`jq1L58PhaTh
+
+1Uq$l4'K+J!'AA+3Mf&%QHY6#A-aSF9U"(Ki,%V3"J8c*QJNVVVV5m$DXC69Cdp3
+
+9E@1QFFL('V&Cr!hd"TcMl-MeapkQSfNI,2SZQ%E$rR(Z&"d%21382&L)3@54iGF
+
+B$Q%!"dCNB03hF'13!)mKiJZ3!0!I)5KLm2KJDC1m(T3RS9p%RK`GcAa"2k@PM8)
+
+[MpJ*XV+dY#JMH*LELJ&B0hPH,bk%TBLi394JPk$`-p*$Qql%$5IfqY*pI&KTc"C
+
+%&rd5HJK'LI3QN!!jNT%,f$6Q&DUE%j%kVbN3hpkrbh9!q%%1UZL"I@(SGCbqjL@
+
+,DDFk+FlDdjE)raPm)9+8JjA`-L8h,GiSXpKkMh,L+lqPLUD(Y`RE[@F+kHNABk,
+
+-5PEq"64F*b2AQS-MfeTG%VNdiMZ@qheqpTJ,GRJ2HMZqPqRVcPVSQR)8GVAHaZ-
+
+jr9&C!PXE&c6d8'd00!8X5SIN*S`-eE!8hcMi@q5%T9L6Q8EqA9Q&(MVieFfmA5@
+
+q$C[#6d65rKV8,G&IY$m8Xj!!Fp"1c"(f1DbaNZ,cMf-jLpI(@MBJY"#9@K5C5C3
+
+SkiM8IkT!GL5YmbeKI-Zqd*(N-D'h*aS@5U!qYL(aM8hqm#1+"289("hTIUI%F5j
+
+R+Tj"IGbpVaqPU#b-I5`MEq4pC9(,$46,qdT,3fp'3AH&Hh*kMmE(PR@C8TUbEa4
+
+G[Al1cFU#cpcMLMV2,A0H4PQ&"RPAFQ#U$CKJqd*#[S))TlMI#MCUX'P&0dLaDpJ
+
+6AGrfVaCR3emm1)p[m%-jJC%R0IIfB6T8(jpY@Q53!"C@+42iU,81+c"dfNrl0pf
+
+rDpFX+(5)Ni*K&DrLJ2(ejG2+"9mcS3cBTFVmkS[d%hiA+iG4@H%2rBP*Q5QM!Um
+
+eBP`KeR6-X83a9UR!VC9fcIY$HF8CGJa$bmNlaBV%0f8FEFAd$Rj"""GY[-[Ifrj
+
+fCJdC2M4RCEki[,`62K%$lJXL9ZkBL#0fiNMqk+M$arQLEb48C9hPaNjUHQ5RBQ*
+
+S)%J$ef1Fl"bMe[a,&+d`@KT+R`Y,0lkAZH"Em[!)ie0b3YfG&CJ9iCG4*af,TBS
+
+L(2GLF%kDlU6d5[+FC1AC#pT-)N3-5UE6`"[pI,Df[q@1$Y$a6c9,*)KaDP!jbf1
+
+4[8(hA%h$i0$qT%bI,PMP'Hm4ABJNhF-4!XF+GRF&DA&DY@c1aB*,Y@JFXLld8bF
+
+2C"i%A&("+K8[Jbh(KFB"$P2`*%,90AJXLLEk5NkZ!4mdRT9-U2FjJqUQ*!5%9HX
+
+,Q3HNFQ+aiQ1M"c&L5[rCBpfj!JB[3Cla@ArCTc+hcPGRTrJ3B8m[,VS%8MCB@PS
+
+-(1V,9A9VlrjI9UQCX"8U9TAa5ipDEQ,#B3+MMa0brBF269f62m++#iE@j"c#(!i
+
+QpeUZ`r[TBEpY4'QQqLXI-bTHU$G3+&3&63S1f%EK6SmF-km(#p#5qc`[A*AAc8!
+
+rBkN3*m%RlkGcV!G6TI%F[EB'hZ`D0iT`,RXD*Rq$P-qZNT,AcQb#`X+NXahhE4(
+
+R0#I2&hd*6N4Q5ISS)DlVU'B$-ADe5fcicNk[J[F3lXT6mURRjJPjVCh2L&h9VI%
+
++&C*Y[m%Ild&*Q1EGpblEmJcehR1"f62eHThmJE(Ikr%f+cZ9"MlpG+AP'%C-1AU
+
+-qUL-FFp0`0cRH6FlIeJ""3j*Dm88dm[2hTAbkkJaTNKDM1T2E5KXPl(+[*3eYBF
+
+Q'c#543KkP6PY*!cFp#ck$ViaQEXMR,,P$rJG22R-)02CcT`-C8h8hr&PD#5rAZ1
+
+iIb5,qS6'YK#G-hK+rD'hmpX*@fl1Ll%cYBd`!6hA4BPY4Rp1b@(GFLECbFV+6)F
+
+Vf9E,X-LVZ*kKJFG#+PFcpZ9&R2GL+Lc@TZp5!JP`4hap``#M'm3lTGT)f[F#5YF
+
+[F*P'%EHGr9E&"NBd)F8D@VRS-kq1VTZ0ZQ*CakQRTJkA63p**ZP"d2#R4E*638'
+
+`p5bRcY)2$G[)LkG%MH`"L3X#5aedBF'Z%%Uf2jLk1)KYd9h1CV452*p[)#ip52`
+
+id*fr0#R-0JL9V)HB)3pmkBJNa@#HQ1Jf0DYE`X"0$ET"@V4bkJ#,m8Vfp$PG6+*
+
+"A-RASLV!jAGD+fENbKhqR%kpNSmj!f0RXZ%3YkBB(2SZ12)!KE4[M#DjPimkmJ6
+
+&!bZ-Rh%81`d#HNie##*b#K'rVd[9R*maaZdI8SHMVEdQm&,K`pMQI[E,'13-,H&
+
+1&Sd@)fXJKlaZlj4!h`"GKGIeFj&jURZcP#Yej"6e#GLSLURDNabRD*!!FZ9J$4'
+
+*miKL&6N#iH[k@'UKI*f%(NR('!q5TT6Fdd8i[I[)Nd1*d-)kT9YI[&+kA+i1K5q
+
+++i(jZ9`MD"e4@`$1@'6ipM(BH+A*0HQie'@M"APd-KN%3rCC&PM!*(p&eIS[M5e
+
+b&fkK"0c%M5*cd"b@1BrfmeCqlkM,Z'XH!%YjlY`PFiYU-+16Ye$$BCXBU#mCCmX
+
+ibaDDRmJpUjRl,IM$"p`i"Z5E`M9T@RIA5#UG)XZ6GqFY5Cq%jNhIJ6H(Ul+,ZZB
+
+q*@Cf3IAk(TjE5HB+A#1LR2QIidGDlMqIbN(GB9AT6+j4#4r-aiGQL@)rkUl4)6%
+
+)%A3DqSL%1imT,MCV2-3*a3[P#5d,M2pBSD"8'&YKrhamEMp[pVMm)dH8P$D,'h-
+
+ql,MXkdk92leNCJT$&U+mlhhYEE16lhGqL,6,Q4)MT*i2Mr4qFkAfrLZXfjqJXhH
+
+N14#85#jBRE6VSI9q9'mjArq-2i"+hBE5A)&RS[SNU(,IFk3BJUf(,Z$%'i%N!-9
+
+%'&#Np3b!UEB8T[2,p$f+r+P'&(%fQ0`4e'+iI#+j2cchBIbYq1`(0F1%!dXr9+j
+
+chmK#`0RSq"Jr9b4C,iFhFB!a$#LAXrlMM-,Gk3Z(T0e(3'008-$1p@5)NS5Y#cd
+
+X4SAZp33Yi+b[*GBl%(lH6"#fEH,f2E8@ZMSUC@HAmj2r&3#X4MU-M"PBM,fAQ#-
+
+i!qdr26hf`HL*`mh0mVG69D+f,K'H(MYiNjjHY55JkZRafcZHhUX9VI3d-)Sa#El
+
+4QKTZ0'E*cACq596!+2Cpk!DiXiQRrk)BKp$"*Bh'X6[JY0#a0)%'lj0XSS@59fQ
+
+hGNFXNpR*A`9@R*k(STRrXEddJJ3QiE[VYKJUUX$&fJZ95q*Lr%Gm#6$Cmik(61m
+
+*MqiEPhP`L3pGa1mYkV!jL$ND-(ihJ#5k(ep0(Se5aC*fC*D%dqrI2mf"KjR`lJ9
+
+8Bp!66Qb,6f)VKdGDH%Z[adTB8UAD4dT!fliiYNV(qPfTkH&9lZFFfcZ-lU(0e(@
+
+2b1l[Kb3T82,P**0G2cj&C2V3RPK2D86hBqEZY,[1[X3[d1C&R5pYY*MkAVeIhHb
+
+q#%aR)c1[YZK)Za636K&%aYjKf83UYDSj#$e#ViKT+)U@'FB8HD4d+DZVTCfrE2a
+
+J5HBi"fbmkr+MebP3eHe8+I3r-"F3$ZDhLfQi1VB,SX@F[U#jU6TFC"(QA&a)-FB
+
+@U9b-k@lmU%rLU1kqrTJqK'5BrM06I&2C)08JTp8993-hE0apFpAI9ZlcqF6Ul"P
+
+0S5eIUKbS&ieE!q!l4,VE*8bdBMV1R#S($qcKHGi6%N2A22I'Ml$DZR&LTl)k(Yq
+
+-YQJGca"%m6`qJe$2!%%%NBI$laemHbAiSAaHQL(VfAfLVKSY2(lX9V%rA'0b6C)
+
+GIHGD0ISB`aheYePYPUl"leRl%4TljhdDbC!!'bkIkKYLkKfXBV-HGTpJHm+YBpZ
+
+(02(A35Rk"(DQr'9DX59q0NGr`j@IL@V-e$&QUE$pCS&ZK,F19Yc9BrU`FIl+8Ej
+
+i"f9Z"+V'GCE2*ee6S9ZdGGb%%4*[pF99&+034&62Ea%'FPU"K&"EZIdH#"r8Kkd
+
+&TaC)$"9RFSF3AFGikQbLMqr-5eYQ!9G)J9JiPa@H-+-1cM`85TQJ@TA)pRa8@'P
+
+)9d0H9+B$4hU!(KCjT38r@+U6)KHN'&XPRRfNUr,0pb+LL(fdDA5ZEDD(SGH)X4D
+
+[%2TM)NTi(jTl@m&LqaU'+A`CpB%A49M)SmS['&S&aH&!M)mYeGUGc5mQ(Q-Fm)G
+
+8kXpCHf)Le(845*pY"8bSY9HP15c4I3I6TE8)3#f$Cm'$c@B!(P+kbPK&`c*@CjX
+
+12LFkQmpf@CB#j-JHm4$&[q)c(Y3diUZ8mHH[eF[N&6386j[RFZqaaYfQl*NAAUU
+
+JaTeRIc&"Z+mqphUNSRm3,b0'"C@"ErDCmP)qDLPHG'6PeH4jq0cN"N#VU!V(1'F
+
+J)NCGrBi`L5le5QZJ')2)drU$P3G,3)m`keaaa255`#Ul[b3!FGB6Em!j)K`$qbZ
+
+h&a@jEdZ-@6R+f!&mRDFrfhcP8&&89RbkMD,hUUUX"mFL&kr@URD%j&jfT!+5&Ej
+
+MZ(6i@[$QMC2NVHU&PQAq,$q%'G%ijp!PZB"53PZfi+MX&0qaS!*Ef5Pdalfj`-&
+
+`dFmp5aPFk"eaMYXqljfp"XIcG+Yb6*[a*l[ZYLB9qHcaqN*eF-*@N!!,)ZYAICE
+
+$fc-ATcVATb2J,VcG[Nh-lY6@#8a"YRej`8jH$kB9U[5UV0E9jM(e'XVAMr6AZFq
+
+[j+&Ue!8)BNUl#N88r5E%G@*q#1[+N!!lEGpQ,r1A,pr-I(Mm5IED1%j6jk5#@kG
+
+GjLZFLfc0P)q6G)I%-VPS2X!-5ENLSPCQi,h-YQ3pN@&mNlbD#66f(i4Tjh$Pe1%
+
+9BJ0*$D2E,!!&,bTe$%"+'d2%L4h2F6DeE1llC,'V5QJNcde-E$3-`I6KjilcI%a
+
+bml`p65mN`j@#lTIFc8mQVf!Z`B2")Hbqa!I4")"RI2RXj6#kf4!VSD,&Y+qLY#l
+
+J),KNT&$TeN"kTVmdAa(Frm)jl9cDakaI&+H[-S1&J%2!!b+@E6T%%$p6fTD@[X5
+
+S!1cV[e(SRGJ!-l+)mfGZ"AXK#`+#FYCA803,MlUIH[2JhNi`ciRle18(GMJ(4N5
+
+)EHh#X,L"M2("$cRH6MeDkNSKbL%!U2[AdGQr#eLrLbA$`FhkYe29m[*Z%3+@F44
+
+V!VDDIUi+@)kZ6![BGfVV!a&&RZVJA3Fr9[TF4c"rpp9--U8qb$E,KB)`Dc6&D9F
+
+VeYm)d3+M)0Q6UmrIQFVbZh$Sh%G94ZfCh-E4"(2l&P&@@PV'[$1@d"4'rGP3HlY
+
+2c0pa%1#1h9[UeVmBf&p-HX5kV5NA3CJ3Ca9FH2Fmq'iFIYlBh8ZdSBJ%$%iH1mX
+
+A&D&p1'Br'AEP[Ck6N!#r%*')8FLdUL-kkc2mZCGB&Q&FV[cVDq4ehN2RKDq,5EI
+
+NSKUI!!ZV5fPMdUUprY'ckkH@TVIAme[qLaEQG8+H$NrXR&q"`kTINp+'S+@PJRI
+
+TGHQc2MJbX2SFrlS0,IJ!N!#Y'D[CZhkd@e!K&k36HQ6Xr%P"lVS0KkLTAq#K0)a
+
+QD[qdSkAV*2"4"5TiipVdPT%m-GQ[BL'9KK%l@&TD5[pp@m)$NmQ)fYrhb-brXDI
+
+a&&FhpRi5bmIq-Ur$,dRXeek0jdYekpUPr2Y3EkEMCcYYf-0S15ABJH&he)FPah-
+
+-Sk'Uj653!22&&`cU5QR1QH1)mYQ$QZdX9bUaNRF$qclKXfcVB!$e`D88A9V8l93
+
+9FA6%mFlJM*jpHJS'TiULQN!U-M6hF@hjekp%lLm6eMbM*T8SGp9fBUiaAmh9XlJ
+
+prEFJU[)Xm&Z8mAdmLTYl2@ChcLYF0IFl(*&qmSM09TC8mbAN8YiT5,#lGGl3jR$
+
+Qcmi6Phhd+Jb[&N,AG2f8Fkp)4CkHhRILb((Z5R2PL$6fBpQIYT)Kr#lRqcUbpB9
+
+rKP*TAiSK))6Xc9(SK-Fi$MDZV*LUcpipEh%rcLXF28US'8%,iA!JS14mF+3d`&*
+
+X0*QC,1'lTKr0Mj5&IEGS5L!1eU[UP-UhZ1aC,r$HD'+e6US2"J)QQ3`Nf09Q*&r
+
+TS8[Km$"5GYj!c4FafJl#05SBc`Z0FdC4Z8r9qbkPelVhcb%DF9TXGFC!SUc6Q$R
+
+MKqITG1U-@Nc%Y(8ZJZJR+VrDI@'aG3kNc@EJi'EdpLKr&`$'1emJEMM6B$eF9LR
+
+b*VG8C&U#TBrri5)#[prT!C1&H-#&LAY'bXkKXNS[)S`LCJ0ZREHAeC`90D(5RSE
+
+)*S8Jf8L0B(0+GH'U`-!3rbY88MZH9R#k1L4fD`d5N9p"jf"KXU*FDNkK&j*%Ppb
+
+(Ubp0ENE&AJ8C3FUZ*+6-HefrG%)fcVp-C,fL%c808a@"iZ-NYc$T-hHL2BIkqEk
+
+8Y'bHPf0EkBk$@-ReSHJf6$$+fcB+'k+c6J8'4LGJfID9U%(X,9@Jh'2-(EQ!b!4
+
+GVFp'10Eefc6fq-$4JCQerFL`8,@f9[pbc[QiJ%YF'6!1,YhKHSHcpk'N*PeaK$M
+
+b@hFV(Q2b[GV$bRJ-rV!KV#q@Prhjpqp01lVXLaZYRemXA9R'Ta!V%Nl8DDbcJRE
+
+PTM(V+qS3m9Np-Pjd)UZaR12#hEe2T(&ED6r[[l(+3CU**3B!$T(BC'R`ihFq5b9
+
+3(8DJl$ZJI8#LMKZI'V!@('Um8qicrQPe'-YmZf%1ekJqABKZpVN1fiBrEk4Z[5H
+
+DUaUZM+A4E-"'@pkGb9#["EC"faT(dQC"DRS4%C4Y[$jRB8r'!#-'&ka-Q"NT+eP
+
+9XV3Q!!'&'SU'"6c%BTC*Z,r&&,2@J[$qapM3BAN[AS[MJ3-#Q"19S@lAe`iXU#d
+
+#e0jTMR8cAA$3Am*4&b%VU8cU([lBYbNTN!#54ecLBK88H"ple!p[F'CqZ0!0lB3
+
+%653c"JB451JBmbGb&&PL`%f'm)$FaX3%4&L*am,%"UZlJNic&14&)Zj(GcF(T+V
+
+R55ZQJ3a4-,U3!*ilGr!"HU%92p&J5b`mQ%aSH@l#eTN%HFQfEeqYY)NQZ-fVIbl
+
+cDUT"1EZiE-FcepC%6!P%AK9bpB54B&`[cA(i!RmEJ!@1[Gb%rXacfhqr2V@p%rU
+
+i6AiQIK'b*2dYE)Q&G*f&RXYZ$@N0pq*ql-NhQa,mA0dcK6RlF@aE18fSLZfekK-
+
+UqTVLMm%i!,8GM-F2l"KkRB2"Be1,pqe,ZME)Fe50Ame,dEG(fSa"(q%9h8IVG,l
+
+GYb$QZrLV032LA3#@25G1r,33kA0R2Ri18f6CqI@``KAld8X)4##128!8X1Gd$&K
+
+!jaIr3XP9FrjBNC[PP+V-'[hB&rkPABl5*X+6Qk1E'CV!2p5*X9&bF8r-!29Rkma
+
+S-85PU+3*,%pHZ[&*4e9YdBbG31pkUY+BKKA5j$VdA)+(BCA[GH!P2bieDlPX$(%
+
+FC9$@$RaNCdGfFhL%I4)Z-6id1khPI"NcmA$0h+PCb%,E*5kZr"I'1"A[*IV0hGj
+
+lKH5DUJX5#(CFAfb#F1bMrJ4985`[2PXY"D59Rjd9A+0`b8L8DZ(P9D+SPNVIKh[
+
+C2dq4Ea'!I4ZYDc!HTi)$(hFRB69`fh,G#RY2A$QTiTlXXBHY+NkA3LqU-ST0@X[
+
+1)01JPASKP[6h4,"681+CE44BM4k)C(Ar[1A3(h&LBN4N-c`kBRCAFidbAUq%qH0
+
+58FX9RN&Ci-MAYFVRKqVA4LBh5r8F1&C"T5*)fdi5C#m39a@4NY%4IT!!qR1Q(S`
+
+lGfUI,e2UlC(b)EkaXV&-+VP&!AZ0&)3q(Xm&G*m[3[EIB3C*Q1pN@32'AUllDX3
+
+kKPFGFfB*3TbMUH)f*``qVCp!fF+H2I4Y["UC&D)MJ3Kr05a3e44a@0q2hSR!r&8
+
+r1i9e`r&K6DG'@hiEGNpH)r4'Jee,Mi`1!l@Be&h6Uajf#`0[q*Yq0R3Y-h,"1I'
+
+@3+N1q[!kCJ98&i*j!fa3EmP28)([V!epKiXG'$pPQFdke%eFPN+NX2H4ZY6&*N$
+
+9GYC,h2L1-UZR[lda`cFLA2Bi9`61P#"dqKepG6pr%i4m[K&(EVP4``fhJD9[hiS
+
+IA"c#e&F3lR`mM35(Mp0ETHE(MGI'r,l#2$D"$Uqr$XQ$er2!SX(l(FRpLpUqa6+
+
+N3+qNceiJJm,,#HPhRLpY-TldJcm*Di,FSZ&"0S+Z#BE%qSdHM&qHFPX'm(dXH&!
+
+c!jAjUZTPXkKV&DP4Je158X-Y!l16LXZE6p9CHE6`$X5L"'YKT)RJ"KGG2JKcc$m
+
+bP(m[#J$b04ilXieX0d$S5HD2Vi34p#fk@M5@MMERLU5FmZXiSdfdl+-*SM#SClK
+
+XUDmicd5rPU#FdLFMr5QIKNL,1U$kqEXp*dkFm+93G+J#5MkBU9rGI,k2-RE4hU2
+
+J)RT%Rm46QAD,HSJXF8Vf,fV%Y,iNPfPlA4em+#j6(*KE$LDCf0RAC#1IG%CNf0N
+
+E6Zc!aqDU5[8J@Xhi#Gi9m2-*4'%UT+T@NPQ'6Nic&jd6lNSUrM,&--JT$C!!`!,
+
+"iHQcBaURDYVifH*"S)58fKNP@eB!SI!m'cf4ielT,-416Q9HAFeYA5S4!TA1Q'G
+
+%X(3(01Md3*YSPU'2pA0@TIkl,1QUDL*)fR,X"$qqj5`U"E85$Y9kpLQ$[SEB0#m
+
+FX6b#6,1"GLlX,8Xa"'bHL53hCJ+11Y+hH,5j6F`JlLG"Ib1$V3jX`e#D)93,)m9
+
+B$),,@U,SK!KdZ3M+Mm068kZ`Z930pb0K'Y[K!Y@dVk$N'NpN2B-i[3)$Laq26c+
+
+UT`elH0MNf,%+F%-F8I$K&TZ[)1F&AYrBBUr%UEYbVq0cYeqD#kfe5rK@L&!A2SY
+
+J(S&m'P!K"Fe)lG01TF80$'iZ1IC[dl*8ccq2eQ%"b`5CFMA!fp`QFDZ@ZNKQ0S&
+
+qGPED)SVI1eIY`Lk5k%4N8*&H%alM--@*HF'4'Y!9r2EV-mlVhJB5-SF*@iH#"JD
+
+fC3YqRp6h`44,!hE6d3C#V),F6jFrYEbR331Ecrf[!qcJGE-UkF3lV24*RkaAhbl
+
+fVYAY)%ZYXkT8IeAmc0UPFLA5KhQRS4RQe40hR((Lkb@9jQZXar4*CAL6HX,JhFF
+
+NJQ)c16*rqS4MjQ&GpS'MkFZhCNc#Kh$)dIEaUTBGCX%"@&4&pac`Q9-Vjh9)Y1l
+
+2-Rfi9M$,q1S1"+iEC-DYM`[[f%l33rai2I@FdE26aIX&"0#Yj`+pHCZ((rBY`5B
+
+MPP"h*Yf@0a"IZqFU%fPbmpGAE!Q)f0EZUKX%X)Sb#8Q0c#-rhr)6mQ#VCm&p#*!
+
+!fYhp&IC'68!Y(&C)k+,qdd4eDl3%c*lBU4k-4e8A"K9TjQ5KZEHFjCHVAY+TSKQ
+
+9$qqkFRSpj#mXDQ5A62QT-E#HHNNZ&%RT(SD%#Li!I@"9+FhU%mXXfH&h$MYCL0"
+
+M50*V9pf#AM`4GbJ"GFM%D20I+(U(VST30Aj0CqDG!QbSRp[hMe-!i-)@Kk"rYeV
+
+p1L5APIY[F#Z&rk8"M[VrXPUC8D9QY4Vfp1*rXkIIS'9STkZ*L`h+5L[P8(h'U45
+
+4D-XFf`"0r3!J6PLbqE($S9KBI0GZR&BHf9@DYLZLPmqP!&G'cP$q-Df&DefY"4X
+
+$F6T9&L&'5+'f,KC*-8Z%a"i'BJE+I*fU@6!h-2ja`Q1LkH,+SGiQRBkcqb(cjZh
+
+0&dKYq@Um"-R)9e0rq2hlj([-$pmp*R,%Y!NQQj'*8FaC1kE1l436L*Xj#U1,'C'
+
+Y6CS&V1*mGYp2#mlUEEj@$I8Y,9Rac4rH(0,[h9hbB1CUKC8Ql'0I-D*Ak*UJEFB
+
+QYK568Rd)'Fqq*"@B095ifkG2Ze6BDS-(hl0Nbrl'PrPMX1*b!IY,r(SjdJYP2H!
+
+T,DFJ+PKG8P@03Qd1)BNc2'@&EhhjJ%[bir+6RC!!rpl4k8LGe3+MKFV(YA1%LDj
+
+6)3(2c8S[KZHTJFdIidM#Ya1X$SG,0F`EH`LU'N#i`G9(kBFKTjNbIKPaDC++ASM
+
+M+CLXC9q(UG[8ZX5EZ*N2,`jG$qJC[Gr&L",6#b1MBYRmY1$KibQ0I9cDCr`&*&-
+
+iG8f[KN2%"Lrl@V5%%20U)-5fL5XPM6fDASl-`2UcdrJbDe`9`UA3bhkk`X`N48#
+
+F6!k&q,A3SRc8ESc)$*fB#C6-3f&)0"m#BpJqX83@81aL2flZ$`bGmUN+b9#2X@r
+
+[4mJ21YHZa&`lTdeSF2b"r#XZTred0F)0LQif@FE3KTCKMckM,VQTjL[ak'M9@8`
+
+`mQe29[kh*[X*mmJfKB+LEbKJQ1LBTB2I9Ada&Z3Pj#&-0#rNTY95,0Hi&VZ9eGd
+
+90L$%[D4RkeJp!eck4Pp)SY$,ZLrK'PJeZb2i0B@KCYp3(!*"ARkkdL3(hq'"GI[
+
+ECRbAQ*(N12E@SZ#L*e'[bP"h%b#m@T`@95YLl4M[-re-("ilf0(6TTKS8XrMahE
+
+TQ)k4433SIDbj3ajf32B*+5V'XF1[5r`qh8V2b9&C$k@3!#FAmaB#8ETJ%[e45@G
+
+9NpIk@6Md)C4rMJKD(L)E4$d,5UK"H6MqZ,lCGK!2pk,S`i@@S,4UTGM5[!c8$2U
+
+[lrE0fdTe%k@dbE!KjlkZ(+,eqmb'&06m*UBP-i(ac0"T#'LjJqMaei3b4AMSY4&
+
+qc4qM5p9AR8jrcKR[Y5#3!16MK*HR5kcGDp*#Q)qP%-!)I8*GJ`Gk)&IcaZJNUYX
+
+X-VI++1VaT6RhEJ@UJEJMFP!9[`E+#E"UKriJLXdLGkr+ePfrK1aVTfaad0K*'NX
+
+3faI!DRG&maNpr*44,fqqEb#A5$G5'*D@dpqm'PUB[e4F5XHhr!U9$E'JpVAqABk
+
+)XIL--ED$8d1pF9,+k%lI`3f-jKM'#ED)3Tp,KcBbVpfTAe+@6eS@VD"`(dY1lJG
+
+FVP,cY"2@'0&@mH#H4X,M8#e,1ASV"HPcNN",Fdf+MFT"j!K"6%0e@MEUkGSQ*PC
+
+lk18R'%1m%I"RBqLcm#mKf-EE@4Jh)YFTSQK#kE'DDTBiN!"2a2L`NldZa0hM!I%
+
+UEGp$PZT,8-+lY'aCm6A1M2LS8$LriMfZ(r1rAS23*L(0m*!!cFeK8[8-69-a&@6
+
++[Y[VS-1"U(bYT@*#H(cYcPjNCBm5bc![Zqp)C,lYcZpqRX9[8ce,2Q+Xp2S'kY4
+
+8M8jfMZ@6%3FI9c-hfD0dSQeK@H$*eG*cBR3!GLpKeFGd$L*q"@YH(MXbH13P[VH
+
+-a5-2!USaI3ih)D*B[V)'@eB3jdMd#JiPpfPRN!$`lHeBf(P%65CikV5$*Qc(IZ%
+
+$`EZEar*$@d16VeqfAl4(kef1dlSqGb9cG3HeZAj,AK),4S4EJ'r-ebqRbjqj86a
+
+bk'*Fc@#a((BqM,%)L#V'IJ4eJLf0Z%&ml!Y"A`E&k6Q$VhESlEaCpii$lV#cXeL
+
+m1&dRJa!R4F#2PXIc#GcM,[0')6kIkCl@K+(ZpqE`cD%R6V%-'#l#qM--6I!9$1"
+
+jl4,#U(I*hSVNm-Q0q,M&+Z!m`E(i88L2Te"-AT-IUTca[HE3jh`(pENc0I&[*lD
+
+#JqiM#VG`R65Di,5LDSN'),e-cB5*6@Hk2p`Ce"+Qf`J3YLTd8+B*4QqLeT+EPhU
+
+C,@62Zia8K[Z&IVHLSVI)"$hL$m$cRTIVb*,jL'k&Sp#QRaPc"G&Pp$MFPKr@b0(
+
+k"TI48IQG"pQSU0E2kmPQ&G0"#A,5D4qmfTe[V#rIrk[cYp-jaAZic5!@)5L-3!A
+
+[A8k%aYN[e@([Bd"qYKXreY`mCp1qT!PTf#TX5q[FaL64&K0DCVZpD&pc+hjmi0#
+
+'JLSB@r,La!SBfRqDX+@1HX")5Ee1$V@8kbX*mU"TUk$kK#VH3D,RAl2dqHaV&KG
+
+'d8TXLl$lD[e0-V-`$"*NQ[L[`lVLMjjQhFflPP3bCJIj(iTKjeYaY"5f8Yfe(RB
+
+qfMFrppq4`i[a`LI*R,VN!pY+,qT9p!MUmrhQefX44a83Te5fiiX8-MT1+9qirZ$
+
+SDK6UmMM#$@dPI#jDaZ[9)IiF*eMLR2diRS#YY,4J+flAEb21BCh3r4+LNB(Xqcf
+
+%XV%4%TcK1VffZEP+&D-Mj%HT`ITG`Z'M-6GcQD+h)&0CcUE"XMZ6TUFZ6ZJ*D*Y
+
+Urf!1L$2@,`GE9qS!bK5XQUAfd0@*)lN)e'S@85i'cN-8m&Da1P48rqpk[9T"H4e
+
+Z[i"GHdm[h+FRPN"9JeZcddHA*EpP@D9R`aVaYQl&f[QXCVqel`qH`e-MB(%0F#S
+
+!fqMYDIdJ1YYCFPjejPKrl"9L,,D+LHl816V6$KjS!5lIAQ+rL'#(dhb5DhkDjN$
+
+i*BeN'5iclMB`$ep)f(Ci`p!iiYQ"El'AY,ASE-YGrqllrF('@iUll[T8*ZTZ*$A
+
+je&Ra&&JdHkr&*SD*@#'fY!PZl`*"*'0Dc##hXr"ceBeJ`0UQRLj&mhjUdmaPc,D
+
+QB5F('+'hABk)3lT6aCGqqeTN2KGX3M!l)cE*"'(1M3BX[m#RBhZaE5c1VqZ3!,r
+
+#PaVp$ciEEp[jVP01cHd,fVhbCedbhL[@GTq[i883G$HDcA)miTpNCilh2e(Vc@K
+
+pRZD2kM0%e$VBM,V'8",+@D--jlCKDXh"KbNRGUi31r&)KpelK+lIXAZaH`'!)KA
+
+%5IbR$F6@LF4%lrNE&'$aIfR3fYieJ(&+[@[F'5Vq[FLpq0p&lVIqGSCHMjRk,2,
+
+"BHpT`@%RE'e[aARRHQ[P)HG-RJ#DfIUX-,)a,b+F4S628U1HKkNZ3U`rDBMTHU&
+
+4BZ2McAI2k#065"Q08#j@))2R`STKUMY3f%*-9MG[UFj23%M!YjjPq"(4@@88RaV
+
+i2rJF[Nl`pYbmG1p"+LVZp,`k@MFi9MM+capPhC3dPJRe,+@19+5hHcC0DZ-0!qS
+
+5X48il@fa%G`qhEc@p(3rbKRZI'kHB02`E20kerFD&HDkr9,erIM0f6ar[3Ie[AE
+
+YR,KeQZRYqPeNAr4pH"qk9F!"TlJSh4d+1`cVqkqfkG-j,3C0&AIRa`jVE4Zp!H+
+
+H`,Lb3MRNQ3AR*T+RqKC+`fS@iN'!'2bdjL&6F+5@+kF(5J+hp%K!#X3U'Ac`cE`
+
+9JdkUcjJ'`*fa-II,JIZ"MkNEbjGQF#YcmV9cIp1L,ZFi"PaFYIQV9H+T!U6XD9-
+
+CJfSNiJhI@SJac3hm3+faF9`@c3L&)2[,+V`Uj$UMTLr90P#mYCrKQf%ClAD4[Ak
+
+!C@l[Fe2VXXpkF0&2Dm&`'hiZb((-9X*GplDe@0`JEr3S%,cC828fheer+Tq*'(&
+
+*48fbVDIJIN$&k'p#DP90+0C1Q*L8E(Gapb1q[jL`djY&d19%q$&K5%-XLh4Jf#%
+
+makJrViLrkIqmBVQ10E&*RpAZIraVkc[m5BbU85*E,Vj0*X-l'3!TQUTSaZ@i3c1
+
+BQC-,"R9J*pV[4i-8XLDp89MZA%+!m!%)[0dbZZ6@V'(@,5Q)d+X216*aMSP3SGY
+
+`1(EfGGk9D[b,NCI2P"kafE@S2,q3!&qFKNikXp&dIGDY3Ve(BeD@Pb4pUS'IlaA
+
+rq[D3!(&GP3eA%aE@UlZp0`qCY1P3`F,Pl3-h)Ye,Bc9X4IIp1mBF"FDK@k8F(@`
+
++qQb$RZNBHEecPYZ(laMTq0hhSK*#DS39mSmV)klBeLX(R1fX9de5r'ZGSLN)01K
+
+ILd4ZYfqca(@qrUbe!*(15c2p`HTE+Mi)KPeNE+i14i)8d![NQAR1S@dAQ#q(U1%
+
++,5Zi#Q'DeiU66S+afSJL#@IVNTC11c6Acmi8,&-A(rX%dd6Kc#jZ0T8fARLD,l2
+
+FZ)cN#&3Skf!B40JRHCpSFbRblq*rAT[#h`6l)FhVER-lLZl3Lm22A3BHA6Z(e&&
+
+I0PdfE$Pc'U`jdrFZCQCeHcjqqaSf`k1@K5a%cHk*X+i%,T!!*+fP"JTRq8Q[rc(
+
+DlE+Ha32A+!1jHMd&E'JPR4*b!N+mjLa&YkpPE0E$qDeAfPXPKp0-*rHMX1V#KSr
+
+66834jMYU2lBlAG2QR3ZN)LU9YbU)9SkE2K[P+j'lLe@lTU+3!*3Q&G)`,HqGHrk
+
+3!&JcJq*mBZ0TVC*mk6K5[GTA@3TJJqNq1T1NPp(PZh@RB@4PhjAf409dX&BLr9r
+
+K%(djVIe8(aA5!QAG1*c)+C!!4r1mA!JqJGBLJC`SXh5J!'JBL+0CKF+9ECKJf10
+
+r,@8L6aQS'"PKKQm(hjd+RBIIf0khC0+F*DPYf4ALl8!0#UQ#MBGbKV6hTa32MEF
+
+IlS8aXL-BKdqYkB+PDV2LP48#)HGq(iY&b9mcm`3%&bIqbmMH3G8D66lA3(ca-6A
+
+Eh"$%L6V(#mUSr[(eK88$Dlr%PFZD"mLJUPP)[8calP3j4'Sf'd,*eM3iM22MH-[
+
+"TXhEK`6GH3ZUqU(0!q2`F,PYlJT60B5V,%iJ[GXVe!-13,Ac(cHB11JcbC3'cfp
+
+Iq&aI,[V@@+8-Hh9!2F#'FN4Gp[-`U(UlGYIpCQKQ3#[(@pmXUibGpNH3!$dHR&i
+
+m14DqiZDb'B%(blLq")35TK%N&,(Bc9r-$(kSJ'MmP2(*$,Nii1kVl*(G4SG+HJ@
+
+[#NeiMJ49JjTfY)D(AZ$%P`8bmb"H$Ri2A*1)VdN*D,BYiJe$cpTYEEh2qV0$R*J
+
+@JBm&DKJb'lXfL)PH9*iT,JPPr,62q9&#I[ij'XF30L`J3BJ*kUS#H$GJ&h&pd4#
+
+2$9k+5+2a#b*AZTFF--CM,JVSaB,Hi2!XYZ#(T3@fFqT+mi5IKj*M`3TD@YN8,Aj
+
+pf"iiP5iKrRb,p8@QCQ0Q#e%0"A![ij*"'eRM#6&cHPJGiI1-(ZqMPm1bR3+0f"q
+
+5B@fZ*)GEl5Rha,40KD9BdZC8B,h-Q0iD6[4jJ6,pRI[crI@*`DLCD*09mhZ5'4e
+
+j9kUBF`VGfZ3M)CYEY3ES%iVTH)APS#@+54p2IDiQFf'AA@Q(ecC63kSFE*[4j$c
+
+mB!T25)L,E@'@PC,c"LDk-BPA866pHd!R(b6'')6@Ga6hGSj!pT!!"QTEGPd2DIr
+
+8DV'*VGNmD#Ejf&Jj6di,e9E@,E3$LV6c[)*[hlpmME9"-#-TPQLBF&0RjZ59JDQ
+
+FqU9T(33'TP"VANQ%Iq8D(BjVAG`AD`&'`Y61cp+VN!$,*@3Y+,dXBEBqESpV*6K
+
+!SiRHmH(mTqp)"Mm3qq)I3fLP+jcDNkbhB6#ZXAkfATeLC(b#R1$5C5"BPB%Eqm5
+
+@kT3ek'+-NqNDN!#LM*+FjD`F5!a0T1L2mESd))9V4[jm"mXC%"k91I$c%&jCLH#
+
+(d[S$4ePD#$MKd9T*('Gb6!K'VfLcEfJ-@BpURhJ2ffcC@((R@%E&-!PjplfF@iC
+
+iGaGl'&JKf(GFa)H8,mKI@6kfrd)CK1e1"i8[5+MMmVYr6U06r)6Kr5T48!65B6$
+
+q8iP8YRH+PT!!*E9ha6Rd@(K3MUAi8DI54$!9I#3V,*HH%RN-ApCpj,RFNNe,"V3
+
+0bNUeH#P%T*(DSAij&Fe!GQX%3T'2rc$BKLm9(l'+ABFMarT8UX9pZELje'[S@)'
+
+r+ZTR!FAhBUGRV$Lr`AEfi'%,+8XDdiPcN@631Em&cS,P93PI"5P#m(HIl"+!2+-
+
+RfefmR$@(CT!!UYLpDCjY-Dh$(G34'blFUJM#DpkR@0$)HGM'$@*DqY#k*4d&%$4
+
+Ee@rfA%5D)e[MRdDT%3'4@48F+8EANf@,-cPP[IE[ZJfaPRJSBIcCm),N9I!1YhE
+
+4Lr1Mp2Qhf2USJ9`&d#B)m*SlXp!#DEeTMirF"Ld+&kk1[pMJMc,RUAF"YbSMaiH
+
+G()@`GeqbApN``X,E4BC%M(m9Rj31Mp0RRc$$Bd`#I0rQPlA$Zp%E,1`,qUU9)qK
+
+U@K2KU9&kfPJBkjb*0S4biDICX[R"Y&bRj9q*qV(BqSNX)FCF4-Xl[NcK@K%qNl%
+
+`k&E#4Qd@CmLZXbQci0[f##TPmPQ&QD@+p,ApR*XGcD!"*@FlQ*rer-L@NhEJ@F,
+
+1(&,5)3-b`E6ib@5l#bNE(bFXrC'[A-&-*6%@XUXla!`PGLi!iCG#"9DfcVi`Ec-
+
+RZ0j`3pYXfRR6a9C!LcK$-L%@3!P%4,&@QXG$A@!GaQeK2MDRc5E&i+eLPFS+T+q
+
+[B!+C+19ablMMS54,2(cVrABCQ6$,IEUbd-Af01c5R1[AN!$Nh9!hpXXlZ)q28pV
+
+IME+JpYlMq9Zh8[&rU9"lrcm--VE$*Jdbdi"Ir1m'r1ZdGB%0q%m0kfke'T)L(le
+
+DQ6iGTir4eETBBdjZ(&XTekbRY!SL#PS+QP[(1kPhEe3I3C1ddUaY66EPLZ3q%pG
+
+P+A31-XbFJX$m&Gmm9jARS#IkKLDMkb66HlY6-N2p)!cJC8rr1[Q$UFr)fQ)LmiP
+
+j%r#fk8p"V,R$pM6XPd*('%dBr3RbSNeB,[NaFM4@3DKkN!"kdVe9IRB2@eV)BC!
+
+!8CUhHTLDIMLccp((hVPDI0UZ[Y'(J9FJDHblf,C*mYT%CLjqD62ZiXJZmKA6kN,
+
+YVR@RGp"Dddp2["DR*8`$#5V9IEY+,8B*U[E0G3+5RZ+ASPR,qY"h[MA%Z`Lc*SY
+
+HVl4+Id-HHBG#0id2ZqfQLGiPNa*8+6Eb[V+NP$%'e[Z(q'qUFQJPhldE)$mCGkD
+
+A)eIG,6ESlRBP6c"i&Cc!X80eXC[E+&LjPf'PSCJZdllH(V2RCFr4qJbi0VE+TIJ
+
+JahMX@(HZD+mA6V2k+'-1q5,NT!b#AC9&2h0X`,mRF%*&aNb#K%TUi[M'kleZ,lR
+
+I2YeNQ2)6jjraeJUZNBd4`,K-`Ch*%QYj-LbTc[*3)E-PMJH-mRPh0UiaLi+-+-i
+
+RY((Gkk')i4p@Kr@MC%R@AU,%a*ZiL,H6B#AdUc)fFP*mCBMlQKXVap'QKTURT8K
+
+K5dEKI83(UV%GUD&2#ZUV(-aY92qP``'TGr(P2$qjr*I,B-V$f"IcZK*LmP)'Z,+
+
+$*48QAKm*Q2(1Lq&'U(2K51YK-e((Tm9L61fkRI3[,frl[EjiDSa+k!''$4bH(kK
+
+6FjiIe-aB$+9a!+BlHEFbM`4C'S34138Z8eP,ab%j#Gpk5eHTK(rKDdR42NU6Z"C
+
+LSG+4FbJ@$rNDKb9Q#h4kZiD'F6kQb'hLe@4,,ES#a#8Y[-@H*!1C+%EXP*eaf'M
+
+[MDB3*JqD&BcL0)GS@%N92ZI5Dd!h4!hC-34Y6h2SJhZD-NdcYZjp6UEZ)em0QhK
+
+eCm#(p)q5G"eTj#4UEN2LaI)GHBRA44pBKS!edM3,J)bAB'pXUNr(')6bZCq$*#8
+
+6S1iY'-!"Pd4%J3YN,%Qk8BQXLa!4jfRR55+IcM-%dKVrAX`#1EK)3U5k)*NCqpG
+
+)2eTmmHqj,'`)K$XKY3S6"MK+F1[clh`900LG)#l#5SMB*IkQRB(0*)@#-mqZ)-4
+
+da3IH[m6il%p!V+2Ar2F!%kcE[)"k8e0ND#&N!@%8(`0r(%mq6m*G4a#d1MfrP4Z
+
+,AIY'-$RiLb6`MpqfQ[2aV-*3AUIZhAi3h*prl1r@jEA*X"(SBBqCje'XQ0jU5CD
+
+SaEY4LG'di[ceDV-A5!YkF8rUbEMUjAljbi!9#5VkDc-'Z),$UUVlp2TS(M6Le%I
+
+SaUmE1LMDqZA&d5e[[pKf49Pl@q0e[lbl06qQeC[Lfa%Qb@8hHe3SiS(CXF"F9Aj
+
+JBaPrfl''f#RcZL,3aJhjG4jLrm2!cG"D%F$d`kX6ZX@Nb9-Si&6BJMr2ApAP9r+
+
+Ll$$P46C1Qq!G'*r4L6HqS)&qHR&FM-K&LQ#Ek#h5kGbk,T!!&R,*JSe#9%6D(Pp
+
+qLf0Cf*(J'J'2Y$2hYb)'kTXAlK*bD9T2cUa&$"MXCecP041$Y+eKG[iLR1``X)(
+
+31G*Fd@#D%)j6CEHjC#2iMicJ021I4Z4cTRDLe#MH#AZNDE#B,m+&RaEmMkQl0Pj
+
+m4&VD-@k)+e'JIT!!i0p"E2#irrS8Ab%R`p+m+iE$2A-X*Cc1kfdP*%bIj-@Lb#H
+
+$erlVl(@bp1)dZZKeHH1#iq!62CTYja09-)e"TL$,+JeNU4cTMi4KM4c8+NLqJ&q
+
+96)BBMMqT9CJRbIbHBB*3dQD1(L)$c*p[[Tr4'MB0V-L"I`$*(hB!$mElYBNchm1
+
+V$*!!@pH3!,&Kk#$D3TD6MLI$U'iG'[@JUq'3!+HIm`pP&QRh&ZG-@L`M-0@NNTE
+
+9F0VU(&RFUeEF2T!!3DXJ,FAAVr6$b*TF@r#,m`1I-92H'ljhH'5ciaEhK!V#TA)
+
+3Zq[X6!K!DEL[JH*%4aH9RH+"4#R`%"2X`6Y+$D#`9QH`eE`B**-qTQVZFkZlcq$
+
+X[kJl$8[YlPid%#D%UJFlH,QVF1+@6P$B%9%9fS!2kYBUY#*9aGQJkL2CmLbB%P!
+
+1"j8m9!+[(FmTii`GEE*JqTBPHH5,QdkUHpMYp)NleeST,'AE(`pGRp[$0#MAi"I
+
+j"GLe6#1!a3$bXJDpLX1Jk+(G'aQZkN'T1l&pk,Z)r$jkMqGAB)*SKdR8a&e@X4*
+
+mU6BAYH1ZT"(("bh(ST0[TDm`$b"[P'U)TmFY3CkS0REN6fQ,G-5HXb3K-TRmE-#
+
+5hTIjVQX-d9NI-*!!kDeYf(e`[,pfbU#G+@,230@-j,dij!MqP*i63T!!@V(%`JX
+
+clN$+fe%[4e0UQh6Y[J)UVU&Y(XV8&Xb,M9kKKD'feCcP&KfA'UrdJ$r'2hX6mrR
+
+XIZ&9l)CShJ+[4mG,GD`hVJ5*L54)TL)B8Hi,#+81mH8,@e-F"TdKB09JA@5-rX2
+
+d3QKm5@,k[K0eZ!Te3N%*)VX+X@eP9lPHX,9YbFhE1DhiUPHI"b'6(qJfZ3,,PEF
+
+r13Jij#eErQe&i)*P[2[Ad&C6lPQ%DQG3%*X@pLmm'P&TrQ3"HXR3X2)J-L8(MQh
+
+[!5UB8Lm4(iP-kKL#(@Pb58dj"CL-RR3ShCL`"X%QVMlBHH*3$hhUG0r*S*jP@'P
+
+3i6[K-GR2r4SLbq[@Xf(ba8l!9f4!qQ2ZHa@JiGd4LUS9iL5bm!Hl#S#5c2Ge"-+
+
+DNJU'pdjHfZTAd-km83`%hrf@Hd%((4ECh3%HTS2e!IXiJL&jap&eL'PmpkJSQ+!
+
+iZjf3!%$Uda[,)HI5`1P@N!"K,$[fq9Fa1I3I3Y)*pHm,YdhIQ`D9Vi8RAlp45@Q
+
+XIkHAJTA,YFDPi,$q'0Kl285fT#INNAa*1f(G8+-[p#4RR[j9)D1!$UadUR,9d(@
+
+C3rp)"-X#Gk-pRPJPkFJEVhB((CMfHpe&eUd2jEI-&F+I'EHYdbclA1Nf%$[L#h*
+
+j#$JkC*db%ZlPBIbLfUI%lkJJ,f"69b5+*ml1VFkI(hLiUjBJ8MQZ[+0MGk5i(q[
+
+'AXCBkp4[NXN&l@Z639KEVpq02PXK3P@aI)*$ijB@cRG4PKD(clk"$aLiFA3cN!$
+
+AXc@+d-a!UdK4J`kP1U@ai9J-@rYZJ"@2ka9a&08Qrlhj[RrKB'N#4T!!c"A"UfI
+
+q"3Sb&!adKeKXTce,kEX*VSqK"ljh`m3%6UT`km2Bd!(bqFb"pG1'$BQj994EZ*+
+
+2CH[VVRbNrGQK$5,*"'mm0`kN,mZLc`26I2bThYZ-KT12681h'KcIaNr%UZQ"$bD
+
+2fC&MM3SH1qd!I6l9BcEqfdlXpmHpR&GL6C+bmU"$9Q4SSY5H%F(fKi[HU8Epr0h
+
+i#F*dUdHhHF&C@La`ICVlfPI2,IMMD4B2jI@Y+#`[T%+YMGND6fQj5ZPNkTicJ!,
+
+HJDSc5i83Ui'qpIUARMPPUQJKQKTqZm+HZST(YiEab!*kUGA5*hi68#'*lmfT)$I
+
+X2&RI`Ykq#%V[hfIfH&Q8LD)U696UphG!NXZd#80$,SVFD6Kf$FGQ[j6fe3m4efA
+
+2L#hdaD#CmdBECSbpd+HAYJ61KRfj6,XZ@VQ@SSFZaa!h+eI@i)KDr&UXG4!YbI`
+
+p$%e!e,RcaJ%@j`+&&e`XGGR3+ehpIIR(l(j1[a'0bLr+62JUP#@rT$!ma*3F62T
+
+AN9Ii@pQdc*e#LLRU$jXKpFQCTMi+5NRFZ6fUZF%I[A3kACN0G"N-T(fhi5Jd[QS
+
+AQ4P#IM*Nm2+IS)rB2Y#JFp4iRlX-8EdRY#I)(pETD@AK-L#X#[C($(M09rDe6Kk
+
+MU-CYL@P-P@qqSI`UaG6$LqYIYcX8#`$P1K6Yr,["'!!C&&Rq0i1ak`53!!&lL"1
+
+ZBTlP2i%-mLcr$@4`UikZJYiLjTQQ"UY92iX49(pSfP8[ceHMmjF24P,0NCDpa6B
+
+-U4q6N!"4d-1(!m"KYkIR#-0`jZ9X&G(Lbm[IDj2)*0q1b@0QbU25#crC5'U`D!K
+
+IUc8Ph-4A&SiV9c5@ch3p!0&D0ZcbIb-f@rjj"ka`IF(*DGIpbJ[*[G`(9-"PMYU
+
+0@l4Ep)I)pmPh9NjL3EFm*MFf1NPQ[FU'm2XYD2R6qI``bMZkDIJEDS2ePh&aE)X
+
+6$-PNipl3emLVd1khjlDP(2LAZq(UFq@hAbh$@!lC2Xe1k0*h[5b-jC&m5*fVEj,
+
+[ZcmY[3'[`bAE(D16BX6E%A1dc6Z4PkR(Ar&ck98EK`GEK#lH$GpG(Q4'93TZB`i
+
+KaiL%#Ek%SqhZcZSBYG$6QS&[VjQdXkXUH%!&lFSMMTdGTU#02S))B1hNI5rkr[&
+
+aXPU",%fQ(lZSHI4ple'9Lih$"mY!`6ejLa3&#q-E@k*Y)+VPNS$JeG6PXZZphQb
+
+4LP'$-$UbQhQ)%Ji1`fbeSRbdA#di#r5'`J&4Q#4BRb[@SDh-+qVTCkSBF%6ak2Z
+
+TfTUG!LDTBe)RI+Q3!'If'-9!%JB8"i&)+IKP9fUm$$0kD5Ndj))ka+pIpdhmf3M
+
+AqQJTaYAcfC5Z-4K"EQE9A,U&Ja-EZq6KkG[hHQURPJ8SA2ZT"XBH3q%DTNN(1Mi
+
+hhc'XU2bD,030qa4#KCqG4X'PjJ-5KLTcLhB$1FB#LP9rq)509L36J435QeH@KR6
+
+$i4(fLL%Nj%ck600DR[qVLmT&'P0)TMcriBI&A,`k[(m3I`jHZ6aLM%51N!-I`pe
+
+iDG+2[Nde`r$4Af&3"BEPhQDPjp-k52iV`p['S3DCKLI*dl[%hUmlDFI,DIeVVd2
+
+Xm&DTPGB)bI,4bJ6p5Kmd[BI)kfDGY0[fBX23I@q%46bjL8p"KYm(G&I0N6Z9[EE
+
+Q#`fk6*SVMjaVr*)Zqq&ND*!!1RH48B%P`FG!'mjrIbJ6ar%bHr`4"N'e)1+C4Il
+
+U[QfahAEQ6#rN+@,J(P`j4V5+UB%DKf@Q"IUi!RmpDqMp2*VFGqaB@Dhr22(XNB2
+
+VEeAYp150(9d4ARXc`[*4mScN5ik%&RA"BD$F[3&&p`F'`fjB@%J6VY%Nhl3UrC(
+
+[iQ0$)*CNmXeT0&X6M19p""Id41c0i-BNE&+eJL`5@12P2P*kY(bdd3LF@LR2VIM
+
+I%A`8r1b2cLRZqQlGM9)SB`RBhUZiYTiP)[HaIkS`XKca&6(qP!8Cr(QTRIYQa[5
+
+j1V)N`*EI3kP()#Hr5Pb%TYXlClpcr)#RKD+5j+RBFLUU@K8rYSN#fFj)3,!`H"p
+
+@+pTH,m%0Rd01)!Qp2Tj!%f5a0Ki6E`Hm0M6Qm&0VQIGer0$0e%A,J5UhfS8+8K#
+
+&V"'+9rT)hR,1Y`&@8jF1CU@USFHGpP2CT'm'S`,pkrkchpj)YFAFPi&8P4pJl21
+
+$jR')rMVefSr(qm9+UaZGa#)3+Dbbm+A'Q&S#iRl[KVPAV1)fU(M-c`"ZLTh'r*)
+
+-LC))V&AN+b2%Pr-EJ`$#DG#!l[HGMiAH2$`%&*'LjC3HpTEAYqJh*eH5YbcR[!@
+
+PcXr-(XNc(8B)*L%E(Y!UBZTbpSbfZJ61Z+@ppY%8G!*c(fHeHBk`4'U4NHLP`Yh
+
+U1a8GYH[p2C'FL"2-Kcj+-9@XM*BMD'NJIe4dUZ!#q3D,0CG`i$r#'J&X)RP,b@)
+
+IMN9!qBYmH4)re))J8SINVbJ*CB'NeB#bkMS0mc&$bL%MTa3+i`4A*3I6cm%(Bc-
+
+qH9PPLhaiU5%6-T'MST)FM#qYaP@lGZlLCGYN(@Z8B[XIQbQA&p2!%TdXa*PbZKA
+
+pXVIpBQ%f6&jj[iXf)QbH9EEQi3Crd`86E3EC!rT3Tq8EAHLQ#0Hc'dQeM(hj!"*
+
+2Q'&!AQr&0EfB`GqENH6K0r'T!@2f2XAk0PEf))dcdlMT4l`P66IR5F"PYMRkMf*
+
+!L0"3,d2E+Dk!I`#rZ13!)EjKdlelddXpUE+JVDr6)lZ@M4kFT"LbL0a)NqV"G&p
+
+NT`Z0hdC$rkhVAR)6Bf!"$@hc``HclBR04q0U$*kA!h-ClQfp$XGT0@4Dkk+%",b
+
+4NZpVhIQHDpNr+2)Zp'Cpk!rC4S8aS60@&hraGPe,J*PVSc1Aj%DXi(E@3cT!ScV
+
+CJ!8BK918*AM"+'(UCkj-R,*)qNZ#811Dh#*'ZpmlhXa&8IpDJ+$DFrZK-,b@$m*
+
+'-DB*F+GqkGK)@,Mj([Q+hI1DK&[S(4)d'LV@6BD"N4a(``b5VH9hN!!KEXkHqQ@
+
+[Ed%akSHB'B4B2VS9HP62G9#mT(m)Z9ND"&`IhZVhp'mhjfGbA!%$&K[jH%H-0Z0
+
+,&*D3!*TljRNSmK4phc!b8'0'NTH@`eafGkp`ArI8ZbY5SDEi1q4k[jj1Z9jDbeD
+
+UURRRS*b"XL#%!+j[LX19TFlVV4+cS2TkZ+D$ifH[(R%H4#9K"b'q%&(Pr1*hjd5
+
+cJ3FP2l52RVVaR)rVf$5E))YkeiX2#[*CM3eQ1-%8U9Z,dH$&''2F4j@ZP%NiNPp
+
+b03M'2,iG`8IiK!j0XjCQ[('M0ck28KpEMAXkUI+mIC!!q5"KbVpIXSTC`#&HBce
+
+(PDQ0di()S9&raX1l4V1p(0)&-lA91%iQ)4["!S+4%GIc'GI!aP"q1pD)!%P@,fG
+
+#MA'62!pV#mLdqV$lX$8EZ&@eQ%Ra$prScm%)h964CJXZki&'Z@r+Al)q&eMhE(L
+
+J$@`PGNTAMeSh)[JTLLLmmpdqrSVPCr,QN!!-EJrHq*bcAeBUTYH1[3EI6AhD9[!
+
+aKI4$hEY'P9AS0e"MZc+N6!DU"M&IRiC2X'+&l&hCmM[,#$Q8KFAD+dYlG1,A$kh
+
+IG*m-hj5TR6fmeSZ@+pUPQFD&3LKqbTKD`[d#,lENZ!P3`#RSR*AqUBTF-p&HC0p
+
+P1fq$Zme3J3*1'4LSC4@Gh1J5Vk6-b85UAE*)bhfApjb2*Y,@aUp*%iiMCB,)*Kq
+
+Sl(",25YXPldRJqcmPT!!Z@$%jSiRip3T@$aLFdCK-eRHQUMA*9M(I3@2VJ+))kP
+
+#*,YL8&CLGdF*+QPPMMiRfXTI&`'2#c(@C9P'J9L[6JbZeq#PJ6fIaNdcAPe-aZ0
+
+8HSim%*LD`IR)lP!`X%qkB&5CCq3KbieFK1Pj4FHIK9FeSYq#A5c3cUYqVY4!Nq*
+
+cCdhke69eV9M0H5$rT"Y[bD$4-il%'UB5K+DJm%KKY'8ITMfeqI3$V0+mFccm4'X
+
+HI@kaK4Y')P5ElAl&h&#6HID4B3(Q'9[rDQ&Ac$Xi@MP-cX9P9)0Fa"LdJiM3(Y5
+
+Tq)k6ER&9Q!#q5@KH"P)GY2MXDh*[FX&2Di"5X`L55CcrVZ(-J#(@aS-9DDQ#KXP
+
+3()pNHq(AVLrI+pkJ"G+2VUN4e!DU)V`iB$-B+JA#5R8hHTPB-hX4-"dh&(kfNk#
+
+rh,NlGSYU5EqAFjcJkidrkir!NCVJ&BZB+9Bc5IM!')mYM2YUCEGhR+ZAe00962U
+
+qiakq*YiA"96DIJa&l4d*G2A9b!'%1P[MMGV8*M4,1[E!eb0Nj'ieQd4GGHc4maX
+
+4XYRc`2bJPifd#MS%"hM9"JrErb`,i5b5)[hjjHMJ8hUK"*KY8f)1rX(flYb1mI2
+
+Ef@)5p(!frXUK`4GjeTRF9rA+mQJKJ38j5UI5$k$@[#)rk)4BBL,#3XQ@0[YJeHG
+
+Y4041*ih@DKR0Y-iDC+kTTX"@2S%XGdpRhr"3NmYYY[#%cKmK-VB,R+fAfjFa-ER
+
+#Kf(XR4Qb$'TXRS[NLU3UmYL#kU(1%%Y!TMK&ckk20h`kB%drBmAbX2CUjA82&Gd
+
+ZNe#XcP,Um5RDlBYpmb!F9R1lH-*acq(mY''pF"PE@KRi$VVpmb"YdE2Y`2Xa81Z
+
+1elj,hCrFhI5%QYSrrANkr&X5cDT&U&0EKJN4HFm4*[QmiY3ph)$Sqlkf,*Hj2bK
+
+K`F-0a8I5,2L6f)b6GZB'deb$&I%+Ei++0ZI86(M'!cC*R0PNK5p"&GQ$"rD)FPX
+
+*3ECS'V2VdLDf1`IRIJYMaJqQ"Fb+Dd[YU15C@S0(5SJIVI#0Qeafq2J&aJfC-,1
+
+H6`4NEC1IEpbAcS,mPES@U9fP[JrM%QRm8(Hrl"hrP&ab8Ve$kFqmbm4(e0&AY!`
+
+K3cQ&1K&+eRS"(I$$VF2r`Ym1r`[jGT8L6bdMLp&F9V1KX9D8UP["8)YXr6'(V!Q
+
+B,9dCCp*-TH+E#SMN4!1pmUJK5%Ki!c+,#XAk&6cd95d)j9lRU,Gkh[H+H5C-,*-
+
+!"YYpqDJGHDe!X)p@[H-GTBmiDK([P[T1``UHiDPQmD(QdaTVQbl#Vqaq`UHE2ji
+
+rhVh9$K%HH6a9)`cZ-S,*02[`FfTip"1[H23+MZ(lHI6LEr!E,E[48kETe-#Li1G
+
+lFV5SeS*YE2h#HMh4qj!!iP-6X)jh10MLlf1BiACFDVH`Ce"Jd["!&@1Ea2rqd*G
+
+"9)UBZPaHL2[66Tir29S1*Q8!e(Grq3ArXrT5H8$9Cf'lBbSYHJre6BJ('XrNIYN
+
+C&pV+b#iEFr`8ZahpLX*MQaS[M)jDM0FL8%82il0ZY1qE,VQ(,aQPH!HSEh,JQB@
+
+LA(J2)2C,%X-1'kE6ZkldHT1cF[3*%I%a',3ek%1ZJjDHpk-VK0,J33QT@1q#a@e
+
+,D`ZfJi'aYDCm2b,S-$FUjeeqU*LI(N"NKKRiV+Za@3Z`Gl@hl[Dq@Dd$3#(b(`A
+
+q`lf@MLmpF6PCZIlpP2-h60LZ&6dbdVkZ'GV1hhJT!N2EqD2bIGV3rU#@[Kh')ZC
+
+('8SkC"f"$Fk0PFSZJi@1@q1VRfYT@EKD0EBb9bY,UQKY-0SC-*h`r9bf`aNkGIS
+
+3pf60kP,*'5CciHQ&0$T"2m6,C#68QT!!*5A&'K9Y*089#qJL9G4%UY*6Lb-%EYG
+
+F,LS2dl@IbFe1fhS1r3icJE$3Cr$2eBS"VMEEa0E9ep@eKVJ10DY40J69&jI42`k
+
+)5rr+c)0p$UmkCHN[VMUI'K!22EZ[cM)Na+Y3Lj3-2fL4EPGG2qBD6@@F1CKBY`-
+
+GP`Z$2AZRE,if4k62l&eBEjaA#%0[$4R[Z56R`4N[@DdIfYJb'TJI`RPMRdDpf%`
+
+p2k-4VGK$RTiHC&'X4IlH3rL5lVdE8PeQSpA#XI*![C)i0`$"lB[G`YS,mIUDqcD
+
+arD"'2#8elU6`"$1mp$0*H#BZa%EE@,(&DJ$V`EKj@$MaiT!!'1GKSq1#bqMPqrM
+
+jKrEm8(5HTcc[T2)%PQB$-A30)3[cJDIV$*LDXVThJ4@Mr[IbBZpPNY-h8UD5Vlq
+
+mhQrB$10D&mQa#$k`@iPc[8"r'Tfa$(ji%1*THGF#[G*UhhCMk-A$0qc94aKbVla
+
+INY4kZi3rhi$i)+29p-N#d,feGGYrZa""%'2ChD%3MSYPh'fi$Q&r0H@$*ak8MII
+
+@R'JD46c6l%FFNqQ&N!"pY('l*),k2KbK+'''T`8H++[GR[%VGS6`5L@$JKQ9E`%
+
+D&6[mmc52!JeR6H&U%(dV-+RbMYV%ISpf5IZLDIUc$P6j5BMpIYE-q%EAbD[9LF`
+
+1*Cd`l*H2E@S)[G&'a(CT18R"GAk'KG&i-#G+fcT5E,594EcDhcCFEc2hE)NJ-Lf
+
+J`+`hR4dQj5'r@1!&fRkfZ&Th4-VjhJZ5DPcYNbMY"pCcVbHd[U*U)-LLJM$1L8`
+
+QmRk%8DNi69r8cLpR[DQ+`+J+LXbme9IB0[T!jLaH9d#KF53@85h-M[99h)9RRQU
+
+M0bNiQ2$+&GpK),G1!ceAG"E1mLY"XID1$J1DdcFP!8hq-"C0N!#$LAedN!!I%Sd
+
+B5Af[2%Ve$'-Z(jAG&TMCLSb)2%X)$e&VU`EYEaMC`dJ#!SUh1ZIABP3"3U1T85i
+
+Y3l4JL)&5RfRMAY)i+efh2&McZbE8`PE98PE9ULT@@C5EPCL0XM1$@Vm@K-IL*B!
+
+rPbfl4m$T$DX)IKKfd@BTj8iD5k)`h0C)4dB%YA,4%`U-I[LCNP88mG'E0N4+-h%
+
+`dPUQPLNP"!%freZfc'0CApkpHZEcdjkCA5l-`51l)S+3!%B&UYe234c-jKe1U&K
+
+84b,'6S435!)d!Gj9S[a[VN'*pGTBm%eN%8U)6@dfU1eF'IBdURB8Rl9T42&!Ij'
+
+ebakq)he5G69i&2V1hXX%-A$rPRV4qPNje+6bQ1[X#CUUBecfhX9Jj(*hBa3Dc-0
+
+JmSkJce3FGNLMT[-EpK+(0@j[F6TdaNHrGESRr#K8Ie2$8P926(U'QdS65X%mN!!
+
+&!LL[Nm6AT)qm+"l`PX(e0#!+'GLCDp&@QA"qTYr[B,kAeE,alqVU#jqBH*mdB`q
+
+&KJ@UF%YD@,Q56-q!ClBE10#%V33TFQcaYl-kdcQeGX9-%TqGSaKGqf[6L"`HI5$
+
+"BFFT5Dqf4ZUl*8mpfZ#!K`50KPU)Hjl#395-q',`"GcrJ"R&)'"3!(UD(k@)5XM
+
+A#l4BG0QD4%A[(YbIHcUhTQ3[TeM@fbFAKPB3f9m8-3JPR1X("BjpZD*#'!XmTM`
+
+-CR$i$dj5GA8GJGTG0G"Sc-,Sh6Q3!&aiZ"rf,"'X03kSd$Jm22A0qj!!ib)Lek,
+
+*2%0X,-IDdAN`VZrF$RdTJThQZJSi6Q!-CY"FYP42HA6LU2Rc&+AZ(pri#F+bdpF
+
+a[p)#M,ZB)hQVm&")*+4(ElN96",4,kNeY-[8*3[J3Q0X[a2$J5h*(NNrK4-BN!#
+
+i$G&c-ZV)aXI`Cd@9f$mTU6LN""FjZ['$3D*aJFie`Um0Q8lF#p@j-Y#8S+ajU@0
+
+J&$qTk*Sbc-N2f,4EVhqbhd*!SA$peB-L%d%3p20@mq1YKYpVR2mPV2`+4B856+c
+
+NpP5j%mAi-%AVqlH9lYd39VmhhRY8HUr"H9ec$R#kU',b$F21fmRA`cTTKa21h'P
+
+U)d"m1+0I"0YY!)Pc5bV4RM$Q-rA#JhHTicU,6F@6pc+$l43ZIZb2j)(2dVN0fYJ
+
+m0l[3cL9j0D1ISH!QAcemb2(KpqQp*DiUGAV[8+"G"dm*LJSfaZY8N!$RbRXYY2%
+
+kH0Ik*FV1+&mR#1b-b8L2Id&'$RF%2K0q(QKNT'R!Zf[YhkN,qdK8*!NK,h"Tk4Z
+
+aL%U9'YM9Q5U3!*)I50c*Y6c-)4TapP@pLh*0)-BCJfP!,q*l%H6@QJKlp!I5$`L
+
+*ih+DV3*Qcj*jh-aB2fTAiZ!Y[h,ib*ZR)K"%RqDFlSKT'YL8l&TS+k(XM(pi8i"
+
+YjlF1('6q-D3bl-"+9T@RP*-+BE$iH4qlE5ihP%d3XT*r)-[IikX'G)X,)h8L8,[
+
+mZ3M@&)HY[PAmm(%hcJUFm)6j$q+cLGVRF$NM+!eU8jkB$4iFl[kYe3P#)#[drC!
+
+!'N-1MfUe-pf'@4(Zj0J&B8K2+8MebBHm!RlY[VHp$!dH@5DHC"0`KaP5Z(UH")e
+
+[4ZSM1hDXr+5pMaQh4`G#-%"Nkl1'caK@q3Yp6j8+&QB8#qEH3kd)mZ'rB6rkC*1
+
+E,B@KQjjA(ZeV6`mQ14P5+Ad)3N,$eBpZf3qZQ&`lLKkCK5ml$`ZJZ-$k&YqY6h2
+
+8YEEpG8cD!2r"m$U'4&jMNj,Sd`L1k*R2-rk&Nm*R3)B!rk9T*[`(EJeVM6aX(0T
+
+GN!"m(VlGEZrVf@Pba9eP$DI2'UJTKkkTq(L)!NYhpPmRA(1P0#3jhd*IR%+L-qQ
+
+$&1Ra0lqe(V(3mFq'SDBBP4qQS'-Z9(MIe`Z&CfMb%1j+Ka*#MU,L6k4Z'L@PlKf
+
+DUkb-!T!!4jP*$I#Gd![#2SXAi)L9)b,NfK`Gq4LY!IK@8"F3&$Uq+h#pT)mp$$B
+
+,q$*,[#Qr-jQ&UPpKCKFGl)@NPkpmm3cT#cX)UbLrjHb1BrRSSG"'%cX[q"e2,&+
+
+"lVb&DNYR0M)K'CQCU,dACFYk[P@(XbIE"04IMdqJIk52(aR#9N#jl!CkK"Ja4J%
+
+MfdXIj++NAdC9F)p2")0Cj#F!&'9GRYe*4-'Vi%0LUrh@6J0f5''qTTRLY1hAeh5
+
+$Lm!F8a,C"r"0L-FQ5Mc,1&@5Kf%46iZ'h3iG(HA8iE%+PfKIaLVG9LR8U#m6d6q
+
+[0HreP++r8Xi`BL*%d1[*j#d&#Cb*5[TSAU[Y1(D'mZpS+"ZdbdQ#qNGGqZ(%(eM
+
+h"G,0JVF-mlCZ2hjBjqj,rq,M"[)TaQHS*31mGT',U4db`cGr[(PRk491,qMEh&'
+
+ed0Ske-L41"a,Lq06ld-mQYflJeX$*Yra'908(,R6h8"*[QAZ,@'rE@cCCb(C+HM
+
+k-"1,r9,5Q,i2`!$q1Jd`ZCp(30[h2-Ek,ZBVhDj"l1#"3QX*Qqkb+ZXkkQH9A5m
+
++G564$mT$DSHPb#,%2kHLSdThV&`jYp&RBDG8EkNk!qBr"@+VcbrBU(YFlJV-AH"
+
+8*32U`Nc$+!3[GVrDhZlJI4l58!IIP1EKL0DDH,0MTASUV1TaLb*h-3`Y-lqbVLi
+
+[i[jXGIaVJ(!M&)EkDa'D,k%Y&2Y'3Ya2"[dKHi6JQ`QbKq`@Ul'Z-H0b*VGq8eS
+
+L*k)bQkAL9D(Cf@l2qHkq&NX95MpIQPHpG4Fh!"5SGkMZIhU!E***r+$L[hG*jYR
+
+q9X[BGD)L4cTpNpjI&6@Pk[ea"hRD)AQ"&IibTX0e`JkV6N`446hjd(@PA4Yb,)F
+
+(4hVDpj4m#RaDi6#(5h&BQcSlhLD#dE*e2'TG,E[2&5CDRCrX5j30Z%KEY90#`jM
+
+NB9rQL[+XLEPNjB'rCpZ,C55PK)DU(SP2#MjXA#NiCc(#brIqb(Va12ISGTR`F(b
+
+1*e+HpArek*cQQZ9#Alc+H-4e()b,E5b#qb3Sj0bYL%#B#rJd%rkcGImSr-ZM6!(
+
+J,BqlQi0YhJ)(&`aFU[aYrhJ!HBAjpVAm2GGhmcViLRKcJpZhj&,R$BN`QHr(!Rl
+
+!GPTVQH94L2mdd9LZi2alA+hS$NX3Plpi4M'k*H0T)rZRr)c'*dLpK)bPR&I2)pP
+
+hd`ZQ0q4Ua5q+h1ipqi6F)REmeIbY'f@cAlIEKYT+LkN5LT*MdRbc[RC(22H2,UR
+
+ZhNASC'FY(LRS6kCr%K[faim"akQp5maHY-SS*(4hkPiKUdaKIVYcRNacLVfh(,I
+
+c!CQm0pGMY+p20,(mIRP[2PXTRaB&bHRQ)"UCRDC)!Ah60Di(qYi5U@DR*R5S@KR
+
+KJJ9eXlpX8RJaCdfT(P3fT6*([qXTa@IF5b)4G`+&bN9GhNC@DA"Q6jHR955!IcT
+
+1R4"*i@2MVYr25(KCC6GfC*6Ji)E@)PGIC41cH0bbcGXi2i2,96r`bb3jPS8"G5U
+
+Xp`[,Y`EF$rK3`42Z2Z``'D$NU+-+AY!YkP`1K0iCBPJ9)#5NAUj`CSY1dMLa@Pr
+
+QAGDrBRXReMP!JT,'IX8-F-VrTEhDd+ciZ1,KKi%,CBPK#U*99QBA@,5VS`Me'"C
+
+h$Z&MJ5*FJ*SUl$)EL3m69-,hKE4GXNHiMpEGTlHibYpE-kbQ'4q1Ea!GrfEc11-
+
+dH+Kpq2k,X[V$idk!'32V8NGZRk8HIZ$)mRiFJA6*9h%"2Hb[TS"6Sd+i+5)P$R+
+
+k!S4@c4dl9h(d2P++A6GLcaA2&'0'ET!!PF1$2Y1KYDY4Yk)L$6i,dXlfC*!!+3d
+
+erTpMCa`'`8@d-'[EXGT'FpiS!Di0RkZZ43fC15Z1f1bJJPaKeQllhc8D"aGJqHq
+
+%8Dd$Gh5Zi+l*a4@iM5i$D!A)@1Y9K4`rJ)'-Hb85EQF'BQJEH@k,0SpVL4+iJYd
+
+QA'VKrm+,E5V0%Lf+080-YU"kZCI5aTVDle2IKU#+Ga1!@0!(+k$mm&0e9293MD-
+
+T8"QUVr,9pXZ5kpT5FE&j8&cYNlFH"q1-mbN4%B51J$eJBKLr0p)-CEVRCDEKPr,
+
+@r("m2q!lBErq*I%&"1(%&d2r%GlqlhCKeFdiki`EKSc*BkIJfkE9elK,2(%'@,-
+
+e0`'$8J-pE1lQJ[SFUDBR80(-%aP9)Z3FhpeG(`1i2l@1)UElbAqal1,fcB!U4cH
+
+m)5hQ6rUN*2@ad,0dh$%mhA5XRZ,JiN#Uc@H,a2R`hGbpZC)M14cY`6KBFImfh2I
+
+E")Xb@lT3L)#1#KKf1-Q8KAHLL'(lQUCfC+@9j@Hf,h3'KPpG9bc+!0&#e"Pb4h2
+
+(HSM)0bKLV6LQR+0XE#JQ2+*UaK!5b(BY2PG%$L[U+Ed4kX`TP"(Nk!@%BV++Q51
+
+3!$L4FA@%E,eDkY#-5C6@)e9KiUZE0jmZHM95$YV!*br+QVi(Iq%Fj2+TR"C'Ye9
+
+JYQAJY4@,k38-iDf2iI@C`0V@NdMbf0BUZBRhbi)0CZR!A31,XTlV)3rVUb*T&Ci
+
+(GCm,lY$'kqkEm+lrU3KqbIccXSRZ&dD9Bj)V,0ThPKB8q(XZkTYDVkr9dQS%ee6
+
+%m(B-a0iGdh1UMA#6'L3Z!ieZ)a'q2Tr([P,9IILKheL+IXCdN!#bc8`00aUKpbS
+
+!QGcq#PF"dlf6J[Ue2PEYFf&R0+,mL#DaSD(q@hF'kmY#LXY2i64#%k[!V,'0[Z+
+
+5+,@'LKh)!mm[NJhUYS(#LB304Cpa9X!V$3Z&`!Flb[6NCcb0iefiipMi)cTKa#(
+
+LR2HKbKPPhD*"X-[M('T&EADU`b9d8h'hX`L9hXR`qZ9eU1`[p&CDBRJ1Y3%NbXb
+
++49)0bNDAml(Dk6#pMAc##Ym6cVZfRLhK'RlS%cMJY[[FFMQ"%fdP%,6f5Zd[FH1
+
+(Fd+&LcEalDB[IYMYhA,l$U'$4YPK0jEbSIZ5r[+""lh*'CUHXGJBk[8,TaZY+H#
+
+@jT)JIk&X-!*b-U3M$2h%YN8VHDP[6SAXKbcpa80#mj!!E%H%eMH$'6RbS-585"T
+
+pMci)(,8YHUq18@(j(BUice#Tf95UDC+b#S[5lbUb3Z@B%#pI+p`r-Nf+4DDR9N"
+
+Ca5LRjKNm3*[1LS!NmXqZE)I06-4B@lT1Z2!pX,MrNV$*@,acPrVeY#Q8IZP0&1r
+
+QUMa(*FqZN!!YP&`d5(4h@",E+r85[%ZF(9*"-D,4bP`QrBBf(C()XD1KGS*ZZQf
+
+lX5*2m'(iGBMVmY[A%-cUeF!kIG06+*+jZEZ[LKq2(mpfQ4@8Sk+Hcb&d!dU16ME
+
+B2&H6XjGm1MZI`NqSDlqSNNC[CTrk16p#+p5GU*TcG`fjBfY@9QcMLi+d3hY`)Vb
+
+`1hDF4"V#P#$UBPMTJ**8ILaGJ3Z59pVcqC6M$Xe'$Z'H9lG1`*p(@kdX8qI#1(!
+
+-aQZ46jr%bp5Hr08'1c$kmYIm!U*mTUT@#$8"5"&L#qJp`ihd([d4#`HJB06E!!&
+
+Qc[EGjbC1)2@&54P'a93j@!0PV#5LYH5l$VEBENHE$9RclVcelIeBb-Sl[#%S*lC
+
+0V@L3!!3hr1NTRk(YkmRK3#h4ELKY&lA#!"XP+GcGj"0GRVp3IMb28eI5jNSDj[H
+
+5NTkK(08%-@FDZalTE6H#EK(F#"[,cpHP@picX%`)0eT-@S),K(MMNbN`2f0rN!!
+
+C8&S9j8e5bfXCT8Jd)a*QkIJHMh3e-GVhS,M4RjSSeFH5fX#029Nr&3c3#Q6@p2+
+
+qiXB1Er1G0P-k,+IMQ5+VT&!Z%Ya*%'fZ6)L5IPZ`H3@92p-#a@32ZDT%9$5jIjf
+
+irNAYU,kid[6Cq!AK6IB+ElLCp&PYk(2(pb+"qkaJHC`1j2dRbLpM'+Z5S!b11CA
+
+R9ISm2VPhkcR"Jc@pi`bpa()(9RhfBXH-&-pHLIQCSG@PHM(icXXViXQ#42#EX"R
+
+kmY8IjIZH0,peNUL@P4AfQRcMfa)YG,P,"(ld4j[D45#k,KEN,EiBkr+6p-p"p0N
+
+',!BAp!j+BT0q8[59bARZa-PerSM9j,b-,%Ep)+&6M9p5qTQ&0j1qY55Z(6QCkqY
+
+Q1AE1[[KN1IGq'TFr4-FHSSi-k@NE&%m0eERdA&rRP&3YTi[AJQc(h#(2Hm+l"'m
+
+$9TV3k$N%%0,ac5!CS#!r"F"Aq8&@,@L2`k[+IX)8babA*ifTD`DXI!k2QM5%`($
+
+E4G8$3DlAFYj$@0jma*VrG#Xd#KHYM(Gm+rI5#&,6eL+U1`Q(Ti*ZfSG6B(8MPl#
+
+1e1#XT0QDjh'-$ifMXd@K%`C%Q[jl$*QDfQ00cTiPSAU*2P`18F8$qG1b6UKchQK
+
+Y')J%MNA3G"`kjl#q0Kd#JbG)BeKD(%LiiT!!PN[Y`[QLR@$%GU52[--ITa9eIhP
+
+apT(6R!PjcHlHAlCmSP*"Y#dCC5I,'V2(D-XIF4N+`QImP8cKq`0KU"ekm3S9*Vk
+
+RP#i[pY,JAZGp4ZCe[cPep4dDP$P4rZp1R9pEkA#crM[m4jlYIfR30G-e)+h(rPc
+
+0XA2rAMrMrRIpc)irXBirja!C,DA!ZD*44'0JhDK[2Gr[CAN`i8Kj9ZpJmPBP$fi
+
+$)fC2F5(94&'MaiKDPd,bdEBFC4@(prkq5MLN0ZQJ#)UE-``UABcS1I8l)b@Mlj'
+
+DrkN3KDq0')RJ`aTr!h[&FUREL9JIJdc(3lEh40[K)IrQ&fH&C-cRE3"m8@a-,+,
+
+f%1H$B4i&FFk*c+'C4VEZZC1NfQed!3'lfGL(Z10V2HXjh*Febi12r1SQDY-l9Mi
+
+Q!KQi')1KE2T+a*C`(+Y*X1YqL*TY1J-TDUeHQG8kaCPLQ%L!81&R*DUSY,l3Dl2
+
+0dI-6E1QMa6NRC`XZGPkpB!e5Y)+C`9U'5q3p`ka(1RfCih3j-r'q*NZ9[)'B[*l
+
+LrMRi,YBT9RCiL`3eraqTk%eACpXkaHR-`qilUMZB@V,ISFVQQ5`iL5'Rl6a`)D$
+
+B63J[(0!e&J6%Qp%FC#kK*HEG$LkSAd&aZk4m4dp[CBZqKjiirUc*JiU1$KUeXDL
+
+pB,bP['T!@1IJk#riAPRQJ-8Q,EcLKS$'5L*$edI1m@f(K`I%%MTd4,fHIiAm,#Y
+
+#[UiDKq!X('6kmTCl"c`bRF4"m21pjUHb$J%pp1qpCCr95hAD-Cf'ZejaT"iKq-!
+
+M-m-Dd#mj$@19-cI1Bq&Lk&09!JYSM4G4k6L%qlA)m&1j+VE@dQE*"GX3j#X`[8b
+
+ZlKM8iI4FI9fN)qbBXVM@dK93eF*hb,ka4Yc#rh5EKCPR9fQIS`kXm!5Y3@1qSCN
+
+`m-8!SaV2[@MIAGbk"!YV6Hfc,(XrJZ3RKP4dX[Zb2`',r"'FJST9k*BKa#FdR)r
+
+fCl$'MV`XSXNRT2kHr[2F9C[@llN2LeU2DMM[$#''j3fp4e5ZV02)[p*N6*+A'mC
+
+9A'iXU6fY1AS0IljCZ!R)fiXe+&Ca%AjdSp3$MlNi8"*+aleaPEf62)U%ZJm46aI
+
+F2Jk2MP"T[p%&SPXp4q&'Y*[Edfa5e&bpZT1(R1aRlLj+ll$I+G523*%mk1b5"Nd
+
+A)-E@hcV`jUf!fZF'HB3BM"JRB`CLCYFER!qlE!f$*+Sh!EY%Ve0%URU"%la53pf
+
+jID02&3)dcIMN,cb%X,`N(RmkIF*&p9REVKIHUBH(hlVqiCQb-"66-2YdM9&91ZD
+
+0f9Jkl3AM%N[1d$Ua@KV*58Zm32%j9AhVJXb-YCd6+qj@B4L,PX)FA8-NA8N'M`-
+
+&aQd'R,fKmB-$%N8jBkb(ml"Qffi(1eR[$4frS+6a*pU0!,H['fCJ$4*f9Li+U2e
+
++3Raq5+bF,F219Z!I2jf#&`KIe-b2Y4DJNUfkhMQ1HK6e3"6MR$QYYHp+fkm$`fi
+
+RJ(6D1#qAG&mH&T@Se*Qcph@mch)%+9`'SciU''49AR6hX9A6ZeYp2kCX#E1bJV4
+
+fc)K1Q&,)'[kTd+`%bXf1S6ccVA&`[i[K3PBHZ3P2p[Ck!VEQM$)lAcPi!P4'$Xh
+
+@fKM8HGF4Va,l`+9eM2HSVE$Q-),EbRN+IR%j8f99ViAANQC+F)h2FN*mQU+%#dA
+
+DB#!5@J$XLjYSr"&146Xh!R6iM4m0H"8V5i,6bm9fZc#!GKc-EKBMC$+la6'b*$B
+
+*4`ef,PkAIma4f0m&rm%iG&%a!,Ic8M5h(5-mDe@Vjf5rX#cjQed,DBVcf+C"0)E
+
+3HpeJI8J#V8DGQrBmbPj1#Ah8bdQiAh!MN!$cFrrC,cVZ-I8bU%c16NMP@IDUp%T
+
+`cXp#Giq6a4bYhhiCS6$(`Z3lh@)[bDCrjr1f2rdD@&1bDECZAY[8a6#Zh%2"m,D
+
+e9e(49hM%iK`CkVlaI*TKGdl2*UVm([JeZ0e%f$qb!biV`1TGm)9lYqGpjJ*XSba
+
+&J4A8(C!!lCXk[5@b"12ik#%Pe)NP%[lKQ,5($0%SJY#E1GlF5,b5cfZaZl9HPqF
+
+,CZ'(S-LacA(ID$F'CBpYqV'1NRaEK-%eYQHS'U0L+ep*ZYFmTmF8V5m,b++I*D*
+
+fIZ4KIZ,eX[&Jl+RY2Dmm$Q`38"[M#G&EC@D&'QL@@i0DIDCb`1eQ(0M4C@EhErX
+
+Z98L4EG)jI3$Q54Um@G,k6ULCEEMNMhhTHci@k)TL!TlPKQ*FUqE"&@FbB&KG8e2
+
+d8,GD6Z,Xr0@XSJkZ*-KqDLJ(Ir9D06(iQp4+89JdTM1158Vkj594)!)d92$ZMck
+
+I5PHeTHSlm)!K2Pa#NQdPT+B0QamAcFDre[*'UQ5ZC(`*E83BT$kL4#Zd@(323`[
+
+!U)9"dDZ3!$PBIjDdEC89,p`)1D6%i9V'`CHf'%0(IGHT%'"ciYH[@6G`a@9%&L!
+
+Ij)+e"'+qAqbbm3AC5YY6j+6`0TXTdRZfVUrENVh6'9NTdmA3LqiE6mXD,ErNKPV
+
+NjK&ZAQ++8&ZGY49YZV``#B`i%I,+R5F+(LMC-S)C2,(Q`+qCF8I211L!jC1EFFY
+
+`@PrbNKTBbeaMVRJIbZ9G6L'E4aTaVfK3IFr5&b8`@Q[2c$F%1(al+Pq+6`k'GDV
+
+h[@"Q1`h@PmB5,U+!HjIE-VZ(rY[a318U`maZ3Bc"cc,8G6,Shc@'JUrkI&QUGBL
+
+qp,#rjAeL&UP+%0%Nc"q"dRIleM,q!TUNJKN(C"Rp93*6Q5TY*5[4Gfm4qqI!&35
+
+`TS1V#"KS'fU3!$NTH"9E[pcl,e&$*ES"1Z!bKkC[S#U!e)"dRV1!&9Ha!,l4J(6
+
+9Eeb-+G@'$`&mBq#6!3YFAkESceT&XQif#V-qE3j%H%1#f(J5'$%DKIDm`#6ShIQ
+
+*0a@hXL2N1aFF`MjER&61qDLCfDDrM)!Y,4NpGSPHT8X9[3`&Xr)e8Q58QH-S6JF
+
+CZpUH-i`[a8dM(L8E#%XTIfr[Cq9ccAEqiVj*ZmmMeH*Yk-`LPHMGEa@YqQQA[*6
+
+(k'[SMrF)cZ%Z`0Z8B`i8c!2d+04MmdU$db,C0Z1l,'"jHL9VCah,qAe2r!*DEQ)
+
+YEK%CTbARNc$)03"ePdZ!j1)Dp20K++TG(Cl)ID6[@RViYdEVbmDa3Z`b*SV&8#S
+
+,E0#'5CF4Kmm!R(4bpS!PHjFjZab,f*8QCGYB[ED8e+KNNVCQS[L6&mPU@UF'222
+
+HbXqp$-j'#dE1YPi`5e3AQ8[)c3Xphp-McGmXUplpIk36Cb35AhKflZC86mK"rkG
+
+Ea(D+C!4arTEVF[pA%eLCdJLDY)BLV-`mqhpMC9kR$33#q3UZjTK+Fb[E93k(`d,
+
+'8M8k0L,h3pa&ehh#%SiF%!MN0mSVbq-$jpcP&ACFVl!b3fMpUF@"r%'RGlV"c5H
+
+jk4+(LB"VR%*5&-D5@Yfca#pPPpX(@Fq%A(-3h@IGC,RieVKNUDFracp[Z%`q[Ep
+
+hEci3ASAXBBm+hh-EfQ6EC&r,hq)#%TQIL('Ycf@I+!%M44EG(',[k0M+TAk#6&N
+
+UVq4&Zchq6R[,"pR56PPd6qB!QHe("0m4SBplVAYa8iI,SaYRiVZ"`XTfa(`qj[b
+
+!KDU"41*L2liV8QfL$dP@Fm3a`b2pIE2GfmG&a`@LQM5CfZ[I##iqmE`X%'BEqHI
+
+2ESq'V'mX5)EI12Y2l60jK&k9XD55[-LN&ck5Sbh[[qbe8$dI)iGV6hdl,cR8Xm&
+
+AaY6rV"cCQ@5D5qVV3hi(hjimQ,+[PYVCpSY([e"L1Araq"aYYE4-DcbM+@A(4hq
+
++mQGE9rIfP2-,h#X!*9P9ic38BFifZ@j*-jSY8+"&),3iCT64FP6l%Q-d[E5i(Ya
+
+II"`hfELZF(!d-Ip'PI13!*!!HicD&NmhQl'%N!$)j&HH-`f$A4I(TF1GdqPqi&P
+
+f$2PU3DT`86p&@U5DPBQNTRe46DG`$Q-,6&BNl**Y'r-bTT,k%rRK#QEHE1Vi$P+
+
+q48q`YLi-j(NKZp&kF%aQ)@Z'J$N0,AhjN!!XfDS9QSmpDp")&X5cYijMH%VI+e-
+
+iZqlhL#qMJb%FVX-,K,Uj-TSm(*!!c6!S&Dde$P2VGca5Eh'Mc)qS(qk"C!T2cS+
+
+mq"l)L-`cV5eJY%ZTIa#PS0RHEb3C1J+U2Ah!mpBRB[MY@8N'RP'FSVIrr&S&&q[
+
+ZChkUfE+*+Dcj&5*m9LcM`9)YZ54f4EbhqrYPL)@lj"iV$m5CZ+TL8!J,[E)LkmE
+
+,HZaCcU2HXM2Q6YRZ*F@J@S"1aH'(13B`dN+D19AHKZr$,GQrAU1AGC`9)2F#cA[
+
+BQB1A)UCF1'q+Kk%[#XkaGrfHCfbI*-abAKQ[TpB16aD3!'XkV9"hjJcTNG0#H6B
+
+!ArII1LdqmpqcMeN`#pTVVldpPEZc[@c4CEBr#ijjj&@NK-kMceAU+0b-PAFEbJL
+
++VQhZR"!*++,843m&JD9aLlX`8+fd%fFZJS0Zi3TNbFb@mZ+I8ZFS)AcZkd"jCYb
+
+bZ+HD2UCr$&Xh*f9*J6JLQmJ*2&3$GJ$qf`Cq%(Fkba63#RSK6@XfUclQY#,A$@d
+
+HrpNf$HK5k'TM-AD&F8-',C4jV8I%TLLl(haJF&&CjA"amc5"BLPMI5BGm'6HD9E
+
+iT(Q#Hfm&*F@F%9RK'2cb9lAXdl+c'bbDA'-0Am+i'AjDN!$LGV`N#1"qdXIA6e'
+
+#--UJ66H0ST'l*m)YK00'qCUK!-C-&ME,-6rH@Xbf0mDj2iP4eIUp,qXT"Hl3qq8
+
+DT*f+AF-V9#C1Zl*mN!$YeZVA8UQ[GAU!e9'BP9CSMhbZZQVZGS)563$bhVF&"j1
+
+kqb)%d#KA*b26fb,c64EBRcC8!QD`VaFqUfL2*klN6V+NdfV2U&mCf,SSIJD5Qd"
+
+m+XCq56KRNmbCbdh-hIcfkpZ4h%b!AP%Y'UPlJU4j6q&aQJ(CBqS)HeLGK2(XDM[
+
+B%4bB@G5VTi5+KY4TAdP"Ab6I*c#'6J3Vl,DcK6UY[!ZD(l1%EN-TJLb11r3k#lh
+
+8MlpmL",&Z$3phYd[FRZ466XRP(AXZRXjlA9GVV5fE#3iar2$`KCH,+l$3V&%Tm[
+
+CE'lA&,m3q#ea0Y"34LF""%f6)Ej&SHf$4RaDCPY[rVSji9p,i"TBGlKZ%(k#+Um
+
+BJ6rKN!!FA4dCcAZ"Rj-(mCf9"T5q5IGReZPkUQ[CP`ZG$p4)6)lEbXPGYhkK@L@
+
+k3ZCqhY[V(MplQI(R9baPM52c0ZEf0(%U2S!`pqXqqNRYHiEjdC5GhXDEifZEG-a
+
+HJqPeI#5,H*ccBbEB#dH4Pb&"@CaLi@BP-Lkjh*NH4Q$!aTq$Jka&A)qRF0#5Th)
+
++Y)T'T3A8H93`[kI-aj!!La!+0DQ%0hLQ&bljaaihQ48Z6XHa1Q2ml#H-VM)3XS`
+
+mr"&lN`JLq[9CUUq*5aJrB#HX%eeeaY9CEeH!qLLI"+'kVM11I8)L2U*ld36a-ce
+
+%2G195,B"K#,6P`pQYUKm4Z#3!)cBbIEF@MmSD'h`pXd2GS@ldXH&6'0"p"2YRqP
+
+PpmlQqH&cIX)H9qrAIAiN+PF"HeFHGd)+H%*kJU`216H*r86([),HBlP*$m*lZb8
+
+&NZ!43)SHljqVHkNb'$2filhaS65HULlii--1aA8Y",YFfkP@jKQN"D[S##2-$l1
+
+-,3k"GDqA,JFYFh*SfNQ2)2Dc!I'0XF,dR)C,GEh1GYDEDj!!VGIm!K190%bjpDl
+
+ZPMUUBFT4K#[kfHJpjA4j"Y6`U"JjFRRd8KN2@F*2$#E(*h#cehRbP9kpbrBSX*+
+
+r-LLFJV`femlPdBTd9$M#Khh[RJ3%ZXI%P06Y2f2K$0A*r#*Pc@)*p#fbSXmcr5!
+
+62&%Y!BcTR+j&J8R``aQAUeH2PhYKhF[MF'kJY!eR[V9QLPV3eEp0G-Ha#aQ"A!`
+
+2B`$#hRBd+e56rU#'mN1GFJi'QbU,#9Y$HdUK23#M-ET3S%BRPaLZUrS-$2$5S#h
+
+KMmUSC"XiMA+K#kF1Z@RHS,R4qLf$JA!Y5CH9,ppL*&RLSlXZFQF![-hHRE9,RrH
+
+e3!AHkeQUCVA[TcF-aY1SRlf%U6Mi+U)B(fQj!"T6MS5[G(F8EQ%-iVaN'YJH*Vf
+
+Km'QiDIQ'HY)TIEr8!QPM(G0!%LBB2N9,4U5j55M@6dY**#4hbBr8b&02YlLY"l#
+
+LPaBS*'XVTGrbmGRGCST"Mq,mQ0VL6kI'4T2jHMC3BMAD3F2LL`HCjq$Ccl)d3+H
+
+ThM,F!@G*00N9PVfS0ElXmcLENmLd!aX1R8Z$B#@Z!TA!i8TAPdb#MML5pXlj%dp
+
+@cA0"j$EE'l%JS+phJYJpc,L"5"@2T$p4$)3qU2UL60djABfq(6kdkP[9[T@P)5b
+
+QMBjQj"D8a!DPLZRTFp1b!$hbJk1HN9DDL832Jjef,CSRI10kC6HNIKT,EhJU+@0
+
+Kj3[-!)l45b%bhR8c1"@H&J&@TZe0J!BSD!%PASZ'X6%A5MSCSeT34pm%&hhK,-R
+
+`E#a8ZL'2Al)VPjMA*3I)G(`,Xair0T!!ZrL,QHGjNYrBM+Fr9m)a4KbbC8L)X&k
+
+84YZJD*FDIE&jL51Qr0"iH8,6$1Yk@c#+0@G58*'KM%R&cCT1)8rH'arp-pljfrS
+
+RH6(ffQe$qGF6I!8HLL1P+)`%KT8(1'P2Cl-'I!rL0q1bU#DTKK)fGVGQDr"9$##
+
+%b80(4,Jr-5#Mm-B`#(K*AZTVQ&"bKd,bZU`$l6#fiS+'Y3E1p2JKM,8,N@5KAiK
+
+*[J)mB!4FibM'lN[C)HYqT4Xi%e"Z)'i80h"ZJZ"A-b3Q(+rd)P+BEik#(kR9,4Z
+
+(+9i&"#2`EBFf))[#rQ!-!*QXA)h['ch'92J*6k,8qkfi1"3cK$6LJ9G'l6Y+IR[
+
+A1V$`kH-F3k0+-KaN800'qhbHUe[3NNRHfmlFS`caEhLA3IaDVqDMIMXh$1*I+LB
+
+Ib%Di5*)c+I%jR&*MG!J)#ipKlKp#mblSN31rT"A8[T!!*AX5URXQPUf4U$F(%B&
+
+0LCZMqCJ@@XUbBY+EXB@4iK4M"VDK(qQ,%qQk@$*(l1Z"$p*fMAlc3RAU!9IE)#U
+
++X"R3(cXEb@!S49Rm0$V4cikjCfU&pq&$$%[TiN"6XFN+*mc@m`(X#5mj"U$BBA[
+
+UFLI[+K[jDim64Lbj!%haGdH2VSSJkTmmlUm0c1-mU,["JIkZ!2BRiM'aLfdf0VS
+
+Qd)*d##Qh,F*6rCL-!KT,Dh`X1*VK4KU5YPIr$b)&[Q#hQ)MSZ1JSK-6GV!QfB(`
+
+bNYJaZ,h)!9E@cAC+GE9YVAd(AS(M@D*Fe&pTMiMXUVPqY8f`9(rI(jRUrA+1m'E
+
+XmS8i`0YPNKL8AA+CJE2%dFYCmE1AHC,Y5QH1dSqQ9M-Z&'Zh)qCReHeR!m!#$45
+
+mpdY&G+@H9P["cq&QSrS04FZ*M![cm1Q#,kJrBYMGX,Nl"H6e(M06&FFUQq)Afi0
+
+e&fcZfKp5XH*qYG-HfC*U$8DSM@2',`jR1#!3bfk5qb4j)a(hNPU1*JlNdjrid$@
+
+I'06Y#q%,`S*mkd4TN!!!6d`09@9`i1RF)Rb`5kF%6d'D3Y&mf1@Rpd%aiJHp4Z[
+
+mD6%Z3&-Z!iAmSd&(H&,N8'aG4(dcqPM,4$NCSAM@E-c9*%BkqfFQbLHV$5MbbIe
+
+RhK)pDX+-qmYSQ+q%Ra1AadkKTj2Uk)EREE&2P"!@$p,QR+q*0%2V3EY!hqFA,`[
+
+NbKaQjNSY'e5q0Lb6X%'c-Hc0HPF`Hbe4@#FP,)-P-AJ0bBp)H0Yi`4i5`0'AZ'9
+
+Tf0Gr)19HM!9K)8Hf4(1XB66#cPrqMQ![lM8U%V$fFR#FqQ9m6c3hXG#DK'$eM,%
+
++Q[TE[-`-j8cfQ@D-VAG$IKQHBZVRAe,TA%0'!8E-4i*"d8eM'DTIf)3Ha5i&L+(
+
+ZCa8YD-me1XHYF(IF&XR9PaRKV"PR[YYG9E*UU&1FR0(Qd*erbJ$M#N*%"-AJZl*
+
+Ljq2mrV9JfV[YffF6E)e[4NR3pD`5E`5M8f0-2&)ijXI9A&EGXYmIm(CjN8qbeE8
+
+h0TNef0F&),#%6'KiKVpGb!ChPp[C6!@-ZhjEAIU`"+qBAr&GbbCe!A0h*r)($ZE
+
+&F9$mBES#'M2%6a3pqCU4SlYI+VL(-CI%,5eZNIU9`fImlXT@896b8BC&8Pr1Z62
+
+--CiLMXPbP!8Y,5TmK!KY33E-mG$LBKk*(IdkRrbRV-UVrQk6qd8R,KIE[m2VjYR
+
+rP`D%-&d$3TAXNdmkja%T6*lp[dPK0ZMi+ZJZBKV+m(-4Y1&Nl+J5%%#cR%&dAKa
+
+UpQ*4d"lBbY2BXYZBJr)MS*eLP$!%qQ#J*aIEbfR$,iFR8AkPUTJQDcSZ,PSTP,9
+
+[IPHceQP`mpG)EUDX`LK@A!Qr(bkh2XcfhVcTQ#$Rd2K'"RE4p6)KH,MQiRISFHi
+
+VeS#$-5*mcjr'P-'3!)%3j6RjQU`!c3mpTX-AC1,Ne2L6B%ALR5A%JV-8hk3"M8#
+
+"'kmU6S#MY8FKLGc-UTaeEJ-VHU&p,C+KEAe'&P)'PC%QFEKRX%1K%Jq@DhYGb9P
+
+c-8L4TYp)dh2lSNCHdKCpQFRIIfJI'hmN4r&Z1h[$5[10B-hY-lKCBq8[[L2SAIm
+
+&[p!e+e@+$l"d8L&Vd3Rm86m(#lV64BBkZ),V0mU@Ql8NZHD3!2b40FaHkJ0AMVj
+
+X*[U4l*9Ph(KIZRe3`C!!"M8UmrL%*"@fbqP+4VV$il4MQ%K6"Ap`r1XQd&Lkf2,
+
+el@ilbUl6`Qk8NrKD!6&Zk0PRrZh1CFr2U*KC9pSmbN[#k50af1#[J`JXlqQ%620
+
+)5ea#dSSYQ!rIYaF60%A9DZmP3LIhMrFdCC!!jB)NT#JIBPiId$j6MDV@`JTkTZL
+
+9fk!`*p`mUN1dh4lEmNpZ)BVRJR1pCb'KF("YCAM5dTjH#61GIBlpJEd8N!""BfJ
+
+kL8cTQmUArF*bV,Ll)U@Z"%qehc[a5GR2DC!!2e[f,Qp`"[-,IYqF$A-Eaj+9ZJa
+
+k0!E@mTG4`B,$klP*2RcRl`rNRAPT8SkY4Qe$+!6VUJRR12ZKVe-1(hm)+Q&,N!#
+
+fNCAYEF!d4*5&DU+kp2Ym6EdUkmXf+'"D-+IHR1)fRhANPTrUJ9+M1#0+kpNbH++
+
+6LmH8[YLJbd1-39@dPIT@r92AAEUb-IXK0LRShH"EfHeV&hj2pRhX)j1VJ`3P4D"
+
+,V!ffTG210cVk"c'4R`0JPKprD*Z9SIB4D5[@Kl$'DL9F%ejQYa3SS'Xc6i[i#mH
+
+3!*U`,'fV@IXrFjJ4JQ)Um'UcRH*+"q(@c)5r%[AQPMQ#+bbKbh!Tq'MeNh`)JZ*
+
+,i!NXUM990jZB0FFk'kZX8j!!meD$Pr8SGrdXRP!FK)X3q@9pm$[#I,N2h9HY0D)
+
+9VmZ@22I@Af0J$%AjZb$Q0b"`%!CB1pY6!GCLmpGhp[br*U5dVmX*qQAQp'U[Da8
+
+p%m3b$a#+%6klM8)33&96ie$Xil5khpk59AZ%#J3BE[Hb#*b"b&b(#HaChjBG+lj
+
+AU69FRV1!N!!EkAlZl@T&Z9BhSfm1CQ@I26,@f%A9jZ!mlp2iq,5[p[0CSP`+8Df
+
+3!(j,+NRGU0%-%LD5D9R8J34C'2d)e+3J%GUjZ%C,)em5YTD!!,AN("85I#fi)BC
+
+6IB,YJMpk$1"eY,+"cEE+*06aY-*Db6V(-9V-#'[Cf@k"22bpMYBl*,k6XC-X#Xf
+
+lK"%KF#SekmIGNm`([U2!S&m@qkFMZKR+Ci*0$qpcbNIm*'"9X*qpeJ5lQ$adF9i
+
+A`CKr"1S!M"[&b9'm6a*kVjZP'$ZGDeeJJJSHE-3E-6pbSq2&KZYhA@3'e(rhSD*
+
+2ae59f'AbjkECLJQAE8rT#20Dbh8L!keMkp-6K2hD5-QKUljQ,BZ40j9ADRQB4l"
+
+B,dBM$R@Yj0BE%@RbCDZmhTJPJNI49!6-YKPEBcm448`FjCC@,U&pLL!eidZ8Bdc
+
+i5b[Rkh9U+m1`1XJ2FED5INhYC#')KXHA%Mp4FG@2QF&(KE,'C"9X1!Q'mVRc)*c
+
+4'#c$'QXqJ"XrjDCKCFdK&A2f"0DmJF$UESC+3VM+`0iPiUUl64`eII"D!@'U0#@
+
+LjM)M83DND0d(UdBS[`cjYbY'qGApm[cZ0@A',c36Fh4IVD,R%e0A8elIc0l!'lD
+
+H%bq3!!3MML[jLmI+&*(6-FG6F%-5C$KqD$H,IUHVar9PVZFc"iIrfRATm$kh[hm
+
+*EjarJ49KmD24*-5DF5,[2Fb)Th`60(FDHHRJ4TLp#h+03c0,(+C5e+Q5-V-PdpQ
+
+J-+C1"&kb$ZRbRJ!4'N4`*$"+NdGT%52`-3RLbqi2fmmHASG@mi&SP444jI`TEfJ
+
+kMe9NL"bP1`GK'A-[D)50H[A1Nd"#K8HQNXJX2Vh%k)-Q9ZQ09Nk"I&PkbZk2@U2
+
+`ADQ2X@DN3j@Kf,+i2$AZi*QZ[2*Ba)(V*5Y*YbUKc!R2@@qiFYX36pMH)ffB-U6
+
+9ciZ5`5,ZU)UM!2h"H8M1[fVm#!@kAC!!aQbY&#LG@jRHcaCZ#N`CIUhk8lS2093
+
+4H,l,!P%4+leF(1M8rYCdA6Z1,)6-mAQ,)4b)!bMH*`ddKDrMr@#d$d5+EZ-I6%G
+
+Z38")*$-HKeNJdpCKHE`fLm2'b**M))[jIk$Ke@H#TNE1Di`e`Z$BBJGHYE0S*Hd
+
+br-K`CTNFJXR#1*Pj!3RB[6-1%C!!N!"b5ZlTfd6T3H+d#3)4,[6$Q[8,k,2&r&,
+
+Uh)EFM2j$MEKi,6+`F`YKChG33%HK-r!D4"mF#F&-R``fT,+4aKIaVEPZ&*(6Qdr
+
+PN3q0(lNeUrHXQ%B4HD$-2F!2iPb8XG$`mVS!@V$@a+%#YeXd3VqdLe%KI9CZFJF
+
+F**6"5k-SBNc@0YbbZMG`G9LQ`r[aemH284TQ2DHd2cP9eTA6P0GI$R`QaTZc0Nb
+
+5DL(6AE)kCd3q&jC@%3NAdepAK&ABA%l6C5MSp`2T+Ti8R[,"Qi+3!03Z2"lZXZb
+
+`fq'MQ*9cC$YlJedd+L@H5L514K!mpQJmCi-Ra82-NI"$E0+A*(EeB#mBa!N!*XR
+
+d8hRe0hEqZmpEaZ$%+bE51q,5A+-qqMJm!hU0Zh)$1cHQe&XeRAF*j`T*-(T5e$+
+
+GdKfr6*GL(ZPU6#mjTQk,0$C8XYMR!YZ)N!!Sd5+S'RS9Ke[dc@3K+-GiSjeP('A
+
+&@d+riQ1kZT&aHa11)!ibXH%Le"hMrU$LKc0V*-#Re[M#8bm-FQJMNq"*"ZUS2Jf
+
+X6hfAMCISU-pYd6'ZIbbjf%D!abF(,h4XUaLKlY435K0IU*m3k1d&M+8d9i5L5`'
+
+TKc`Q%YJrXbSkaZ$IJrSBC9'((mGjT$`'Sml&26$@U84RXV4Jk0q0k"SM'9i[,1[
+
+-@j3Yq%faTAfJYD49DQ[[1,fL4`QB&C[BAJSR[hB0E1ePlCj2VaqZdp*E`C@M3)R
+
+kkLqpXl5H)GqafrZVE2HkbeKp'&M-HJRX(FPD(*NFf95S41-8KAi[6V3%E%-ire4
+
+VpKjDU4Di)%S6CVQX1NaFrX3AhJ5VpB1,FCR-B)P&e*!!)p-Rb5GkL`rQjE)r'dK
+
+`p-@3!#cMAe(@MUKG'#%`K4Re@,)rq1-TPT85b+BBX@9Q+*+D"8l@ic!#Y+BpEbe
+
+Q("G$%E0@&+Q@Aaf)8&9BSeDI9cRm+CBSJ4`jprfFD,[1'd#k@fPB3QcLaMi+!JM
+
+DBb"+DRqUER,Ik!@TCeVEKFUj6C3&dE6-+UlPSYpVb[30YT-h!Rp5@a!43L!Ur1D
+
+!@XNY1Sq"Lp@UY$U-2m*U%mP@'21P"j3!aKU5N!!Bb5k86fhJU(9RV4h)fra6Lbh
+
+pP4M35qAGR-J+$V$Qi5pqETJjXPr@+GMmS8BEl1$0ckSNfM@E)9DmcmNI2"#J2*)
+
+98dDG'k6LLMKQi($(T`cNbLZja4qTCmfceXdCeprk5KV8AR5bBD)B2cdHVm&Zkbp
+
+d#6k'eK1ZQhGmj,rrjFTc$dCM[4#F309E''cp3h#mX[CHAULf4'Ah@26*9Ur-jD+
+
+qCalR"IbKdIklQb[R$BFiZ899`HIf0BD#chbX0D(XHheCQIPZ`pQCf`LI!0RihH(
+
+i6+,6rHBjfN-mXP-a&ZD#-BN5CGTd10Ll5F*pc#[pmQZclmJICh8q*PYBkcHP)&i
+
+,pe!8'p!+Z4X3ra$S`aU+kNl9R08$rhT5`8Y4m(&+B-3kqc9JeZFpd[&djpD!B#m
+
+Ei0*8qa95XG[EZ''m$d'E*6dQ#(G6fp1F8b1AdG!`lNH#aF14*NmF*9[00BZ,cm0
+
+ZjPK1QllIMh+l-@AEU5Y06ID2iI6'qM(cGaC&4REjApN2!XRL'B1@60GQBBQL1!,
+
+6RjISQQNKSXjeF$p&d8UUTmm(fFYRAP1+*b@a-(Tm)5bL5*NI0eAQBkTSibp[d#m
+
+C&1q+Za$b1Qpe,,D*F2P12RCr&G8VjmEGCPYITi,[jT&)"VCVlJ2*$FY*pAl8PPB
+
+q[%+d5c(ClA2dmrMLSlrMpXZ`IfrCiabE2GeH8m[m055I#@XmBe+C!SUAqNCU9MR
+
+YkFTH`-6F&"@"eL5qDdRK[T'hm@+iDbEeLHVGGMmYf9-jZ5`-f[fl2LMci9FU3VP
+
+NKEBciJpU4XPci-6cIK*T6A*0Ei61f13bhXI#brCBH6-42%HEpf'r%ZHSeh5mHdD
+
+k#M2dF4B4)mK1MK0H9$95lrHYi5hGF5cC,-F2)T'F5qURF+BR%*@$#ILiEpZ@,c1
+
+006eCGIL%F[Bk-%)*V(%AB#I9N6i'f-fmar#m#"TedehC*JkaBY0B8JT*$"0mSel
+
+9#-42qP8f!5bXqjbfmVfQh%UDhp#K4h6MrUbGD@6ddCD(NKCqQ@2#lXpHlmU,J*l
+
+L3fejimZFUrJ,PS8eHCp[`P&qa%%4m2MDi'H5N!#-cDr+BN0P09,!9[0G29D%$rj
+
+4dc49IP,k9Kef9dVjEf`e,`Llak%Jl&V83PlR)U0CG"2TUp-+AhHQ+1SrU3hFeBR
+
+B0lSTZ#&q*94i@@CGrAB'NQbU4Pd@YJIbk*bEbBJ2pM9N@*3$d4TmY#$Eba+hRhG
+
+TKH5TdAaeL)BhJa$+#96Q8e[&#kLH"BJC9+ALmFN(,+H*N[JfAH6CkF$dmb8Jm03
+
+j@dkPj8ISX*-Q8"lNr#-Pq-QdcB3iR`3q$Lq`IL@"KTRL)6BQ,Z3B44hL5`f0,42
+
+FUlTPF1`IH&8mC6&Njq9pQQ$3'CY5qAj"Pj3r5R&bQhV6SHGdI#l[F1"Kff-YrRA
+
+ciFU["BhJ3AhdG8mAl-'NG6*9+@JrlL0A,@+!KY"9!%'1ER28Bh8p%(Mcr1@rPj5
+
+kriECi`,lMS*6h[m+!e6!r3rb(Zr[S!,HIi-+l0$4"`*[2R@Kp@HC!L'r)Yjmj#l
+
+[*e%j&crI#G,)f8TKphH+Mj)DQ*pA&0ES&-q5Y#6HfQ63SFdcZ-*DZ0CkY8,M)8f
+
+ijk%N%PX$V%2,bh8J(4k6@d'K`-[3F0ATJKkm0briKDMI"(i8'S"S-'AZhVaeAYa
+
+dAG`)AY"A3$HfrRKr2,4V-kmcCkhHpYJaE5E`YfNh0q+S(LT4ESV)HcXPeK3d'V,
+
+Aj$FD,"PlkH&qA9G@R'c"#5XE#$MHHArYheUSCKF8CV3r@lRC@6M9[6M9EK9k(TT
+
+aibSR$NqV(S$URLX*5I*Y@ATSVajfZer(ANSX'(kj1RjqYVq[Y%CLe+p!LU%)iar
+
+iXI)`M*5pBA3"P8d'rk+Se6meDlFd'HBhIB1GHG6[!I8#YeJhlLNXk$$j4N$YmQ#
+
+8lT!!VhLaq85ZT*lP+HahKAcrE@(hd5P98![+rqkKfpX2RN1hi%0$hNiNYr,#022
+
+!AR$2pH$*AK51Dld@lphh018YPJ%-@cpi$kI(Ek-q406,+9U3!&8IMZpS#5UZ06G
+
+lU9-0NTpi[%,jGDdhk6ec06FT#PVple4iVhPAT[I"Zf-(',d-p9VT[Vq-BfD%49(
+
+Rp+NY0$AL,VUL$j!!ANKlqHqpbBI8QN1M,,c#C)bMI"5m91V%hB(aAQ)3#+Me+hr
+
+lL8jJV'KacA$1f1[*aE+C89(%H(bFkE0aNAB34AMqX-kmJEc%f1RpA6M2F(&lL4-
+
+Eh0NRhp6'fXhDN!!X8f&IMR$ECqJB"PRrJpM6Mr0"*bTqh,0[FYhefhEMhEU+)F2
+
+8E-X,9UXkYZCXck1eE,A,GrdZc+FVDMiR(Mm'1dahdH@XV#JDiN9pY1V[E1hL*Lp
+
+9[N0VhHTm[jPi!'*qI@(,M",fH#(MKjRT)YV!Npc(0TkNS,KBHFXA+[Uf*,446,6
+
+YEqJRB@FTbc!@eLeLU%Emakd@4PMX'8l&D*(QTRXrC(lQARe,,DIR"-dN*X(IhM)
+
+A#NNm-c,h0S%-+!95'DiMSE3U,`HMeV)lV9R'Rrf#Mj28FRLqe4if$$-#EFh[3$,
+
+pLM8H9&JiE+Ld#CqCQ3GUf(Sk$NhZ%3i3SBV#k0CmeGfkj-cfp!ElV2*DiMrehPH
+
+"mE-[UHRe!jjRNA@-ZT@M%PIlX!c[$r(e+3"pf@#mLZ`$G&Q(-B6KBXMK`l0lJ10
+
+BVc!HK,mDA2FaY1(Hr8N1CB+-#eSVRDLdd,3bSHM19"E8Te[)#2(&9dfjSde$@QS
+
+2PLmrHPh'SA(#@%Hh'`BLR@b,Z%1em5-49F[,6P15+%bam4XEf6KQG2TJhE*GJKR
+
+Ua%8d8(@S8m%Xi"DrNibUp8U`lkILCL$fRecb1'`G"5,UCA"TkB6Z,al%Ab0jK)`
+
+ajr1Q-*D%HF@QC5PQhV$jhdmGMP'`cQbaP'3AB6Br144"Bl0Ve6jKc3VJ,8-[I%c
+
+'l6l#BdSI4b!VSch*8NZFEM#Q62!TiPUi(&!r#b$'US)U[YJIT)0QUlppR@RE`-$
+
+aaHQN(*YTCfa31)ib4cF@XHMLK&[9j"q!L%)R'%GG1rUF[00hE8dEPR19LjTGdCY
+
+$Dr4%9pXTJNc!kM6R'F(+J-2VXNffmdeq5+`*9DS0@k@NVIVRVp%IV5Uk3TkCV5e
+
+8DcL8lCPfqR!IB%hYjk1Ed!L'!p$JS"KBm1,U2N69"AjIAV,CkJIKYhEaJad*!SP
+
+Y*hCFF-!+r)SS"Vi9F8)Abq0+S5hMHPE,S*H46irJJ*T',9ACB@pAaQ,TTY!8Dbm
+
+p8HQSl`-l$)3Fq'PCY9Qp+e@fQ#Pc@&h+k02R)M9Z3ZX[HJ6YrCf6cPp9!N$dLR0
+
+RdTF'*lXR("rTD!,2BrQH[UBFiTXpRBpD841Pik%JB-9er`aUB@8V-d-0QCX6TIB
+
+qKMA#SMQ%rLlHTH%8E+j(m4N$FZ+c*kEa4rGUXAi3LMEhL'bLE)0dZU'#@PpbU%6
+
+qrM4biGH6Z"4GqRMqf[G9chaV&@[&a!(i8!9N#,e5#d@T-53(#j[BZB)252Y#b$p
+
+![hdq6`P!QamiQ(m&kb1E'#J5i,41IYKB6Zp5A#Ted+%J[ViPflD@&8mTN3e1@04
+
++pic25U(i'ASh5T0Rb4ZS"P%Q%He`H#-!CIa""[UEZeheNVY3cj3'IPqC8L*+*%A
+
+1,@3Vl-B6@+Eqe#1-!YYmKNh9(PEI&*ppdkQpT+aP[q!SZ9PecGPhaRDZRb5HBG!
+
+EfkYN4bMR-32KhIS'4KLVH1DmS0N5bHdUTFCI`Q91$)M)Pl@`)eI4#XaBM"fVIR#
+
+@8&+Ab,$PXS3d6aiHVS+4"Cq)e3!Vmdl5mmpq9M2#A,eI*"'MJ(4`N8Bi4[#i"H9
+
+(d$[D$VGZEIpbeKa(4&"GP+4#a5rdmrKRN!"hXDLPX%bQCm"%qp'A$*VVA4P,*hR
+
+`V$clm0B'GX1lM(5ZQ8lXJ%2k4Z&pYe1"RZAp8eI`)lXS$GM-55(%[PId(5Tp*IT
+
+K&r*[)GaG&*R3G(L8dJbIGiLNfd!lIjB'eRj#N!#Ab!U*`ZVU6$m-6*J%akj5Uf5
+
+*S9`pZ,hr4)bY(440PKPpHU!h4c1l)-L86XPN!bBH1&$l#p2Kba$FS#5Aii5GXiY
+
+N44M4l28Fh*G3$Pd4*6kTMkA%ieIY[3NZFfaaY4pU4cePBYQ#RrZM6b6G@Ic#E+$
+
+6[eNL*1mJQ-Xq*9K@4bcA3*Tma%BCa5Q[da"#YQYph1mf+LTE9IQ1Me9-AG6&j+@
+
+P,JHQ*A(5Fh8"QqL+c[d@r`ZVH0hTkqC,kQE2FF8e`Ucp`L8-T[mGX6UE@6(M%M`
+
+bjj,PM0$(6eC2dH+k"J452r,#kC!!`"Aaql*LGP4FY#G8!iNCN!!82hcddhUe-X,
+
+[iKY`6FIqk'bdIrGde+!Al&H*0Tf5%Z&3)1&6ZT&``+B[e88*FfK6R0(Lr"'0QqR
+
+8a+Y1f#24Yc)+V*cV@i8U)64[G[pT*qLYGk,UY,NdU@cCd-r8PHF`"XK'ceB&-b[
+
+FDqq'V*[C6h(&iNhk'`c$+BlaNkD`MIN-8(+jM9JdJ8XI2XeMl#)8HNZ5A#@6DVk
+
+P%6NXb!d`d"3D3#'bbXqEINcETVMJS#HZ3bZMSkb'dZc-Y`Q`KDm*@KZ66,,J%Lf
+
+E8,C0Xad&&BRJqpa-eC-Sr6P'DlLJ0Im,(!)#&*TQiPVpVllYQ+2pj+T$ccbc)N6
+
+FJ@IQB9'@hQec5adENFJV5LJYc"U#QF-8qTl2mRS)Yd%-Bb`A"+hJjjiH)LR'Lfe
+
+a$f3%E9)ikk3qm!BS*5UAQNjI-IhXbJQX2kPpRSmSJ8'mJ&[j0-EUYX'3!#m!q%l
+
+0BY1D)BjeiRiG`RI'l-R8pDaMYm0@N9iGH9)0fidXFE6+`ZR+#rrTHH@!ll%M0Bl
+
+R,!D%fM241(lq3PfU0-8(A"J0Mc33P61B0K90(jV6-jF!2U+%FbU"iTHVjSB#8f4
+
+p6TE(6UB90F0c+5f&DdXeYr964+qSIPaN(lcTBSVb%UR$#@LGk+pVR2bNF6f)*"5
+
+SpEUZlddp*er&cQBRZ1eQDK`b5Q+RD@bE+G@f1)#SC3ZjPEd5##95'+-VLId2[Gi
+
+8*VdKCdl5`AqmIhVC4QdNMMJJDL%ZTMb$cYUd!@bH3H[GIAVC4QdNGP@bM&Y&MPY
+
+&RSfVI3ZiH8pG4Cjchi,&I15-NE,pa#RDNmpUa2!@C4%#L#TfqL93l@,'pqik0XX
+
+)!'ZYAf,l6b12R5lCBCVpGekf21II#[bl9aKjE0[9M$c[EaRK`-McrV$l1NEHEcP
+
+D%9MM(MlhfGcMe#r(M!i"i9@A,([9MVqZ,lG40"5IV6ZmBh5LLG'iC,DG*TYP5+!
+
+M+NB2QJ@MfPqXVHaeCml6eG0j'0,Ydi6#B8')mjicjAZ5"8h0r[SFCD)FkRIj1HF
+
+KE6PY[+-TbHq$R,#CjBErj1EQMIG'QBp+j0JTm9Y@ZUf@P9B%rH2%'cXRYM$(`K3
+
+rMZD1+6AH@KRYr8!#-YkR@9@NAeGeEH!I0p9b#1LjD(6#&"N*C""Z,FpLirFBkKH
+
+l`KqKE+J)&jFZikiBl@h0GQKp[#1k1'H[-"b-Tp'&'SR1k*B)*dbUlkaQpaX%6bh
+
+,qAN&6!lEj5qj-#,VPY10ddQ)IrU6[iB"YT+UkH6@9&bjh2%T0HBpjFcMHJCF41J
+
+4PCmC[ApU!HQR+U'V36*851mQ&aeqSfVTH*TZ!TF$fIilc9'SNl@(`P[9&J+KbKl
+
+,LG@AHFK,`FC68ce[cR44h`m9C%-M&`dVDeNeCUerdFITleP15DNaBrQj45TrX2S
+
+KZC)4ea$ZDL6c`IVR*jA#aJj1aD&`G"kck5Q26c)(iLkY2CJmM'I%cTc["L)c84c
+
+8A3'1#KjR,Dqfm0l-E6G24mKJi9*`TT0ef,3DAmGEmhpT)1TT(Y&9[GD51%[`EF(
+
+F#4(NHA&PHqU65EHU'DCYlNF31SF3X-3`Z3jZhDaK&'j3"LU#%b'FTff,'elCeT5
+
+HAhH%GJKkJ+Hh'[JbSE64kHCVi5PARbHX6qHF+DfdDE&H'FcZ(*P8$KKNmbrLZ@2
+
+KThi8rrTU1aYkX"PH10QG"F20k%k0$ZlZi&T([hbI(G0ZKK!kFdmlJdNXpJ)+35C
+
+[qlCF,+NeJlVLrQ!K5hrR'%Efb*HJc#@CB5JIdT(`G$*!(RmfDK`CjkSaqCb[b*8
+
+#EMRULL8985ff3iG(a3`GTZI46!XA9H9'EHU6%fdClLjdBrl6"3BKmaRb#eSd5D!
+
+8CTL#%!2ENbKrPUk2qPA9q!L%#HLEk#hRP#EG3pj4HM8XT8GQ%5I,l&jM(`SlTUi
+
+MiL6K-+C&M2ik*[a@!m9cT9N0*G5hiYJ"c4'T,[D29em8hD9-lDjlXVGE5ZTAXaY
+
+Uqh$AHP88Yk%U8*M"ZcdMfAUq8c4Q`clL0hBfH`IMjU3dB2!QbYX@6(0aY1(&Vj)
+
+m,+Nq93M3D#["$LD`h(Xk(BTYA`Ym-i0+1TER84,LrD@F$8lm8LTXLj6VMdG+Ne-
+
+(RC(2`,2DrmU`$J044'ElfYMQSY@BdXTU6Vm,4Fe8%4PZ-eF,-qAjNmE%rhbXi!2
+
+k-%QK[&8Hr@%2DL,6AR2cC!lrUlJ1SR1%Z!2L(BLPf-lbcq5ZH*q,13SHPb8),Gr
+
+eiThXkPh,P"hCPk)$h6f+-J&1[+C&9L"-3Mj@UJ5hfe@P5-QkhU5pq)LZ+3%68Fd
+
+-@@%&Yk2!EEkBMKQM`0QdL"jqaY(,mf0p8G84C(E(Jma(Mf"YYQ1kG&I)P%16P4Q
+
+G(ENE)CL[2ilCBF+Ic"4-KINq,",mh%E08N9Bre,"GZlfH&`p+Z'0q"Jk*[fjIri
+
+U%Z[%LXL%"S6#mNKTEqrl4&S$$r'5PSDRT"+k`LH%mHY'-a9Y%'1QQk3jGM%"SGQ
+
+H5'2P#A15@T-EA$FcXJce6TB1K0K5*m'C(BJ6FAr6f(*4MQYRe`eq(2N$`5RT6`@
+
+$b)CG!fMA3Ybi,LU#+FBdrB9fiSAKk6-*--0mRif+-,@YiNEj9eQe%+iHETAI2jN
+
+@@D2@iphh""%TkXVjILNrX+%Qkf6&baUl,2c)*KB$0CVd)U"fhrp$cE'p@),Smed
+
+#qq4irT0Y(0JFCSkIPlhP,dCXK3!#feBiq%1`&ZTiT+r&$6KI+JaBUJH@Zl*(,F"
+
+8aZ(UGc-h!JL+qD`JqQ,8fhGj-)*VV6dp)9))`E0V6hqfT$DdFUK45j!!kEriJPB
+
+(ZhH$K&-6EF9r8J&*alU"C`!mIU$Iq%!Jl6S32(HFIA$'c8Xi(Iap9Q#Am2-B)Kr
+
+(fJ*U`)qR)M@Bi(MdA&N1p@0$BmUQVm["H6kck"MNE9Vm08d0+-BrCC56j0I%L[-
+
+@TY9'KJK+PJKS'-"E"&mV%MkN![bFEYpkQ3adVcTck+%HpEpRc@!jR)'k(JQZbdl
+
+-93B8TNK@qabSJHqEbG5l$)!66("mA0$3TZ6Tb2kf"'PjYMCF[c5m#f0j-KX`V%L
+
+cDUakreMKpf&fbQ"8JdFHE@cV-k(ZJC0&e,3erYBT6@dlN!!1l5U8Rm+l5i94aZB
+
+#18-8RFH8aULj9[(d*K(S(QZ6%khfE&2`+24S)Y0"UCU5F"M$S!`V@hAj@ZfAhp,
+
+iGi8Bf23BSP#`dZlUC1jUV3B'mQPM*GeqXXKDD*'c8k!18I&LJHlZDNRX*(JI2*R
+
+UC1S%YX9Eh%6)$VGL2)`Y`4CmT1Q(%U8k%f+9Df%`eQ0Q'Aj%,BFdbKp"SC1&-BH
+
+j5Q"EM&PfK$,jk+C))9Ekkd-XZ&AVj4e4YNSjl"R@9A#$)#PY)r*iP4KrY(F@iiI
+
+02$VNQH6,qYb4[D"V&H(@9NB#2VIme[h`1(@UV&KE[,$*6FqP'd+rpbI$mmqTQ[+
+
+#%m1Epr49fTm`4fJkhfm1L-%C2Zq3!)1bd(GHB0l6I@[c26RVrG&G*VK)&(cI&XV
+
+%IpZSilfFjm90eV-Yf1`9pl(YS(i!3FmG"pPjqF1X,rj$kfNmm5pck5B0E[A,q0"
+
+8SX#2q[)r-rdbTp[8rGTqb1#q6"c)GhD%BI`dZDi%jfY@UDQ1kQX%JqL'aY)!3H'
+
+0RQ2mG-%UIe6h+l"8R3PeHC+brdZ0#eR+YdK1pp6LKS$!"-6+c`lC2iTS`d5%Ma0
+
+YC3e0+apHH6HDXf3V%k[*XGNH6Ejp#ijr9H%N*YV@6)LTNh-V%(ASrrikKXd8(*!
+
+!%6*GM&2(pFeK6[[8JXPYC@NM[Ap8j2P+hqMMS'iFUJ2ir!mY*KTRf99ae#N3HXp
+
+i3cUf2[m!NJE+C'1Q-*e*UV*b45eica#GF,lpb+-6P5IcN!"lHj'0AIR%p5fpMX6
+
+NXqm,f6ler2"dPG3m&*BK21le&qMir-Vj!BEil5[[9dm0i[b,ScK&+Yq@S#@kE%&
+
+bV9)M)k+d2`lTMY0"23rpR"0X6j6*+)kq%#66KdqL-H(VA9PKqHKcfS%$#HT#85F
+
+[Z$mNcGcc(@bA42"BLBcIbV)bBa`hjGX*UD*fFJ#fa%D6+b'LEb3cj,DHD9FfRHN
+
+Dj`A)Smqca0LSS0U[TMjdJN*Ai92FG!rc0JqQJ"AKChQ3!,5H0prMd#12lh#Y-XQ
+
+5hZTJ*`!m2H%2@h$@JFP-%&,dhKDmD&Ejm'Vaa!8LV-Z-J9(YQ2FBRMCiljLdTem
+
+mQq"8E'4)jbA(TGFI"dkrH`52&cLXRAhrd#ZpcT2a6V,1ip$rST5'p["KXkhM3Z*
+
+&k"FrD`5B#h(Za4l-SrqDKjF%k,2bTpd(@aq9dN2[BAq5&i@*P@P@ZqIZfj,q6A$
+
+*Ga[&Pqr1[dLE(3&MQq89!K,KDIR-933QYihI3Kdf4qU9LJB-X0"'X86LC(rB5[l
+
+%(5lVAlrP1Dkk1BbJLlMTjhF"r@UCPHS"TCiBQA(E*NlRb$)aXq0h,`GIX,3D'8A
+
+qXU5`D&lULK)T3!$ED(fDS@GTdV1kif#`Y*8e96DVGrD&NXr,&98CKZYEP%)Hdr1
+
+[!aY$ealId#LChGbXdAU!+4JX*e+EppJ,6dS4mda4XqkJTGN9GTQ*BM+c9dZY4Dh
+
+lZPShA3[T'TM3k3))%Gjl,iM!@9"XN!"[hKQ&eN9K-3aB8BVB8hYqeFcfj!GrJaY
+
+@pXGpM$)jc6+h'&pB+9hm2UP4-TeM11P2ZQ*AK@bXH[Sq%U(i2rh+2UIaq9"e588
+
+fl("Z+-F0jGKl0Qm,Gh+"3[fRUFLZ'ceaH2j'qCcRr,I-B$F+K"Qf$QYQS[FhLS2
+
+!6-cp[Ti8Aq`e[RDkQTLDr)9bRrD(2XeikQHfCTY#&c*FV$mB#bFXb@F-bDER9X0
+
+p82qFAlf19P,(MCpI#)P*(@KAqM)L"Hi[8K+NSPlicQk2P`G@L'L[`kQS(dc&KAK
+
+&@[`"PBY$)M`HC@I0qpcAEl*V&1iAmERhK9pQc5C[Md[q@NdBaR-Fi#!+F6r-@FE
+
+mBP#j'SH2ChU+(899(,d%Eh$'iCPB[Qd6CSMacSq4im1Teh%$1MZL)25RV,c3,I2
+
+ZNp46bXe+)(M'heYFX"GYM(H9),pkZEYFG$Xk(KLdYYIFV[4b@aS@M(9`+R+,Y5I
+
+R`L-,iSb'V5B5%J(@6!c,bp$1``%[(iF6AFheCXA@kI6[2cpEdC(HEdd(%6+5Zba
+
+ENl0XF$L2qAZChjaqELCb*A-GdMa1,2q@jh$rVDa3F+-Eiqd+HVYF4LJ05@LbQZ8
+
+fj!3ZfI"6mi9B,c4q`R(G3DmR"IiPjL6PTb%Z0X4KNAYA6pp+01eImQj-P$R+lK!
+
+,(j!!Ca21MmI9mBE6(fBp*&JcjEr`--QQR%C(&XXJ'e20ba*3,#jPY0(KX22lpZf
+
+1UhY*G@A*jd,T3GJJ8miUMM2#AiiU&khe,1(#"mQ'k3jdEi'k4pU84md4,HXZ"YA
+
+bEXN,29i,'r!ZUP[E&"rfY(lrU&dqF2i*&D)D[CF(qMZGk%8jki+H3ZfB+bIT[&9
+
+!4[diPcRbDDDrfMI9[!SZ*R-j+kaYj'MDh&qH2bSdZ9d@TlQLc)2X[`8B'e*`k8P
+
+jil@VcfTMIG(JadRG2LGD0B1-HrMkAPY60S0VD[JfN!$f-bfjcU)aqk[6j`mDVA)
+
+YE,K%`8kPMVFXG[am@BlD)dNVQQTfYLBC+&I5jbi3V8JV['!%f5bpNjQ)AcbqTp-
+
+0Q+1i%YE`@4U'jXl'K06fZcEZic88TdqYIjqefd8d`"BGrMRqZQBIlaP"!`GpcYb
+
+[eJ,D3YMdB@p&J@f,5GN3C+[qjbFBGZR&ZJYqp-Lb0%pk'c6aV@,@S'"iQ,9@J["
+
+&N!$@A9%44ZRc`ell'R+i5!+4a!&D,!I(T@dZm&am%8Q%ca&+%iaXmEJB%&DE)4B
+
+`,h)LQXhN9P!LiCr!5hAl@Mm`kRXTELm8JVZ&L@6P&$"e#rk+L'R(a(IMP9MRXKK
+
+aCQG`CKr%-@L)D1IC,YhGFAj)ZTa1J[jUb`LK(TPh351AGjSj(P&,+Eh,5f3-6T,
+
+S(QieakL*dBmH9+G!Z$YS3JpL%QE#qVh15SBp@(JRDTQie53&"Rfd9UZ$,K&d,68
+
+RYTUh`TSl8PG+*KJ$j'9cjck!6CCi8e)cr2)B+M'Z9cT,k$e3d2PT!ppcN9DP"CA
+
+-+p1[GI35,2!RhAQ2TkmaXVp(e,4'qfV(j1F31GD2Ua3,(j!!'eTi(Ieqr4Ke8m$
+
+J-haHemHH[U)cG'8$6&$Uj9p6fJ8DAekXIBp9TY[HC-2&SLrQ5@Ff4bjCSSlfIdC
+
+Y`I1QUEpKA,3[[P(,p(qZNjpaFjcf$ZU+M1kDj(diH0"$1lNk-9mXHRmG('##4L(
+
+m@)lP3M!iU&SIh%G(H#S+Fa5'!GE!i!JaLb)a2NSN)aQmrGk03j,E4KPPcMmD(8f
+
+lDBL-Zd9UMq*R)#0IeQCRqF-[VVNjSK11Adh2SaBEJYDB5%149L$&NAl9S")2C3P
+
+%m)Z@GM8D0p1F4U+#K8-fe4J&*A[9YZdS0DMZ'l2`U*U*lYAbK"B&PpFhbfI[KAJ
+
+C85,h3XRJe*%8+d1E5VCI4FYJ$%p3&*&dH`PdHi8eiQ4+d2aJj!8EV&lX"!m4b!i
+
+er)"J'BC6F1FK9c+*&SKYQr)[R*YRTKH`+RKBL-4e[D3#+K0aDaeSlDdIq@kY[Vi
+
+)-E9X)l4X[aJ0i$53!,lBYGTQbCahEl'0*)1j1I4H*&JDhl+mUNEA25qf$CBk80h
+
+mE&"5JJQKBX2XKP,900SA+'S,r8!Pm*@kfdNB!Q6FF!Yp54NHJ[PcZb*Yrd2@XVc
+
+b,k,ZbkcEAb4deU24Kd(J#$G*bhN*JdPdbcQCPMC&38T&RECU0CqUMEmAY338aPK
+
+D`4BdKX!ArKLcmpe+YYlfKR`1PE)K#H['F'2EZk$P88h#(Y!`80H)lmU$pX483bH
+
+6i$'p4qja6+9HVkSTGl,GPHCYdiDJ*RkIKkN&IGC"ji!&3DV0jB6DdhIALIk"J%!
+
+a4RF4Sl[TkC9(e@2a#p!!SV&)HIFec,1&`pcE3(@hkD&b!cc6c"'0mfX$k#ra5E+
+
+B(SjqT3B'MC!!0EeN+,d#kC!!F0d8MRJLZbX'YBdGc&m43S0Z6VhlT`qfhmY2*Ud
+
+F)bH)r%Q!0+Th'cLf(RH@ar2A-RUFffACQri-(G[DqjMpb2Kj%2lF6$HLIQJ(IG6
+
+mi#fDk@+4mT2'p)@)b0jf6#A,1&C1`($[ipV&9DFpMMrQUX-&qBGdFAke2QeXmi'
+
+Ich0iB"'R+$aVYPX&ELXS(&$j5FUL'pp9)&)3V@RPXSKrLUe-c"i@LkDFX4VV3U&
+
+D*H(a%!jkUe[$hBT,iZ3fS5aBX'Af&kap'Rp@Va0X%+M6Y(GIjer%ZQpKN!")b8f
+
+DIVr'JIqZG6f04CbL1-q5@r9akGfaUTG1aJ`D'ZQYd$-c&H8c@m8#C32G,S$5S"!
+
+V&k-Th+&5D'KJK8,96[ec&Eh)r!9LUMBme0eAYL@F-hXm3Hf0YVQlUUC+aE4RKVR
+
+9Gk%MqZ)mQFpBfl80Ab))L[8*El6XK(GdC1INB%0IA1(dCN92P)3*%kB5"-'KEL6
+
+$G'aHJdamB"HQV`+i@NDJZ)bNXH8"1j,8e#Ff`AKa[&FJ)18r#0UkkkiI0iEM,XC
+
+kR*,P)$k"BL'mK)dPA@F+eAjqR6GpU'F`,aI6AMJHI)UhD)$HeI3)Fa6lHY$PGJ[
+
+h869lCUFB4U&mf-q3!!3[3Ua!j491`dT56LQ&%!FNlK+T,AA5D5HPmmY0CieX6cI
+
+-m)4U'-J#EFkaF3%Y&3fLCqemrS#,B(aT#JjjETHplI8(Q[GS,R23&J,A*ZlbXYQ
+
+f`,#chNL!ATpl`-K+B&0a4hc35A@Xb#j$KZmFQY,#TQ)DH"bKe#ELqZJNiX5)FmF
+
+#UmQk)H1lfp(FR)CM0U`&lB5Iq#PcdV@TakId266&rB5HZBL%$+CMpGb#5KP!U!F
+
+4*kHVaN+HhE+5h&acfUS0mdSFidrF6cpiFhhccq4ZV!'8PE$jm)&)Kb0P#l-G,[L
+
+5c"F@#"T@,TqhH1I#-bJZ)',AKrhhEZddpq"UC&3emkRDeG$a)m3"XIh#KmB5YmD
+
+k%k(a8,5cc9S2YG0)bH'L*DaS$AeEi6Lh98bJUJrG+a2a0XXrCa(RC(m!b$9'GVX
+
+%3LGR5Fr5`!9@"!Ac#[#C)2N2p&4lN!#X#""D0P13!'H*"SNq4",S[if+@Kl!%eQ
+
+@f3NPK+IBiAlQY3!A8i1%BLr-b54II0+8hVShC3J%@([5SN!1GJ4+N85LKDkKrU6
+
+SVLZ`Jc+"Q"CEkkU1+5)22DMD'2iff2KD&Y*fQ(6abr#Q5P1TqX*#XFX#Gd*)Gr$
+
+pfC)!fkUpH4cb'k4%*H$,H[+8)ZSk64h9!B4[f`b$rDDQhp(eiZEDpUqa#pTcTQI
+
+PT+K[qBSPchLDJ0["5-%f16p)2e`j6$*jR-e96Rk*[-'Qq1T44BaZ)rjmppK9e2F
+
+UFZ3AP#k*F),4ZaF!ql,8G!lcpL!P+B(68`6%+NFChqfLQj!!eTAqhHj$+crUG9H
+
+Si&--PSH9Vk`CU%*)BG'JLAL$aRGi'$r,$-Aa0Xd@[9(PlUTE,@[Ea44f,i6N8a6
+
+"pF%j$Y3-Gkl+'%ZDrGj16k#(GY1CiXpc2UVf'rQT"NXf(ULi'b9E6URPRhid[BC
+
+%Rh2ERemcMZ5ZZ'(lb&GU#SC22-`0I`'1Jla[5hj0ZGVLiFpe$5-8h'K[kQkFj!G
+
+FDQqYGQaLB8+c$bT5I!UCj(NI55!N`9SH[*L#JG!UR$MG`6YhfhIm,M6Kr`f!3Ll
+
+jC9!SmRe@Brlp&%c&mC`#R!HUDmNdlM9#%([`F6VcLTaZ[Nc9Q*)kNYQlYJ@k1fl
+
+l+)iL`K@@[@1R-TL-,rU9$RE12I2Yk@`j4iEhI0R`10E#(m3B*9UF*r%TCR9(R&Z
+
+0'0NAaaaVdHl50f&cG1FLB+LNfV0Yk%c@kVLCp-44f(I%4YFF"06@180r"qVe0NB
+
+T5I"J"lUC6fAqTVUp'UjQAP%kXPUqT#$dNL*(881l!+T+EdPkP",I6qPFS)Q"2lc
+
+%#@YZkVjGU)IK@-48&,!#RD'5Y%bLS$KidZllAJ+q-6JrYYKh0-#"59`0Cd*D-SZ
+
+VG"*S5S")['mUcqIA%BKHBep-G%HBH@(E4VMB)VU*MclEj6DPYDXTkU*JL8F%Q!b
+
+d#2JH6!,Mp,NiJFN465"D58i-q@4EMRKIMTRrXj!!HrQJ+U1S$YG+m2*PNj(d*Q4
+
+F6K0$Gl("MrBPR206,CHkm(4mR&8+I1f8Tf-6!QfMN!"$JXcX)[(@Ypf45c,PUTh
+
+#L-(j4bk)#K9qXQqKj#mAaILE!4A`fbp,,Di*li6qSBDb,F)mU&kPfhPK!$!L([+
+
+Jrr51f@5P*bil0qII6R8e`+6S'K")CFHijL(RrNj1NIY[FSSG1[C@ZSZi"Q"&'HD
+
+0H[*bkVZfBq9fRiA0eKhAqFG8XjKP)`9AM*U0"2!dR@X*amVQmILe@CX4*P3YXfB
+
+(Pq1qFL!1f'X$NYcX4i4b#HR2IQLTiDaU!4"@%&GmHifqa,`[[A3IVTeiljqdKli
+
+68$DjRVFGGZC-hQ3rb2a+0N9l(`DN9#Jf+$D`TRdr&Gkh1Geb8[-LS4S18qCH9P0
+
+ll%[`ZY2kRZ$GY16802cVjCGQ@%QkfIaJ@A+fTcpAcJN-K,3Y6kE3#*D+!RRacQl
+
+1,)hK4fj6@Mc"L!*FmT4m5SEhQ'k*F,4N[@'V+K4#Qmr@9IM#aHd*`l'(F2TZ1)J
+
+K%TP9[p)34U"[$)q&Bm"T&Er1Il0)ieP3aDq-*'`,`Y&Eh"8Mdmj%$0N"!PqqIZ5
+
+qZM"XU#N#E[lD#'IM+&-A+H6J1jAV(!ePYV$l'TE9TT%Rf@BbK,kibH(bHqZ8kNR
+
+j`+&V06NITL%D210fD6bm`eCp&%*rDr*BVIe%iHBh!rRUC*1(63I!I8ldU'M,Z&I
+
+hV@4,R9Ge2Xb,4*0AC#AV!lTAG*)'Jfcd+&d9VjCmjXq[mJUM9HQNUdJr'!Fb"A!
+
++`FG9I2#6cRjLlV`C-[9jGYe9Dqk$HJ[VX"IJrjaS$#hfFSpI3JS%(k)i9BhS36k
+
+KE(LUjX0a4Y[rFE$lPJZq8Nj*!0-Nd&8GP%aYl3*UYbLPr&c[j5Uc4SdeeFm59dB
+
+MApYC[J9e")(#%MHf+a9Xl#5RHJSKDG(Cccd32eUNl5b,VPH63ciX%cB-#%2EP5S
+
+m'V(+hYSbN!#I!qm6+HAK5bm0$Tp&e`3R0d-8Er)CCbA"fJ%EiBcK#`k%6+r5EEI
+
+NLRY!p)!T9*pR-Bf5d*&1NMAfH[ekfI$`*6EKbQdTGZF&UUTNk%LHme('b[R#E%Y
+
+bCM,K-I2NR$H$`4ccr93F#!Ere[[64h,fq5jZ@p386EbF'jBZ-Qdl9E2*8'rKI%5
+
+1GB1pREX("d,+$qU5PV0#*Lp,YMim3arVKPUGAM4QlP'JB5N(U+A@T8#5M+)4I4)
+
+P`3iU'5`ILj'&AMPR&%GPI$4@a"F%SPcf$Hiq@cKZhL4CVQChkcC@rJ$2aKHah(5
+
+i5R+qX-TiaSUMH)M0YTb)jHi%FX*qlR(JiLXNTq`$3pD9jmSPJheV$Uqmm+kf6ST
+
+jUV3UbMe+jKDPDa'q'BJX#"9$9!XeDEZdl9L5hGLh0PkjN6kmAQZH"kZpjcDPal(
+
++I#mdb462iXG!L2#mhP2Y3&!mqFd@`M@fAQdrkmC,,b+eG[)@X0&8D9F,CV'SA3'
+
+e'l(+)32GLSXFl4ZYJq8-KaM-C26KGZVYPJ&A)U0R#*!!Fm)343iCH85&Q6jBQL)
+
+kh+([*@hlMf0IbjJ#PRUTf!1hDfC!5'AkqQSl*%,i*!3LEhXja&,!j`S+C13"I-q
+
+p9#S)aM`X8QGDmB0Dfb&U+1)3T,6DE"ViI![YS(8VISTAP64fRdcLVKeaj%E@S'4
+
+[A5T3[[NA!BEK$@KQ![ZGb"4Hb'RcKY5pMTA0k&L%ATjA"@qe2Zk&(3lHHSaUa#2
+
+5qEk"Sf15ICLQ%AV`rJA1I`SBVj)bI$mB6F1Ga+q[E$@Xbp[0HBAh[L9fY,K8U!L
+
+CK(#F5"UQcaZGGcENeH*pfZ(C,Y`f1QS5A06qF@8@00T#(FU@0X8Kk$Q!AA91Hq%
+
+ELelb*Z#Uk*Q0@1CcD!"ej2apH55'5Ah5+J9DVj@fr$9kFi,JIUQ!Q+@0PmSHb!G
+
+jAf`aFDfkKF1+9hh*T$FASNBB,jVZL!k#P*5drq&9L2PR(qUATr-0jBZ1,cdA#--
+
+HH4RH[CDLPqXABp[B`6pGbVH0QG0X@GTqq*!!k4SilaBA2)3c[f)@3c*llN`EemG
+
+e#&IlR+)1,F6V5N&Y[2HB`aLGfE@a1cfRXDmkpk&rLeH"pPbJ,4FmAP%3Ai$mr-T
+
+E@23$j5kc+9pFCF[0V)k015+F&r4TdEcLp&AP5+ija#8F92GLB!!Ha*YR*UChP3m
+
+Pa`(NT@iX04jM%V`HQYGIG,4GTL&&,`P&MhN)XSlAk49lRB0ZbdY%9ek&)3bNa&#
+
+SjE-j9!ZbK6')!GmehP!-9&qI,)4&X"kUFGIbYVEL9apVV[H2*e0'1(Z`P"Y#,dK
+
+C%JQ"cBYh@)8f$-HE1aa9eYeKhrEA@00-1A21q@hKRMb)DkGaDMAX(@K"mUHYSkD
+
+E)f'1T&FGk1-#NeGEN!!-4DL*I"N1%G*q-Z@I5MKm`FFGXmLe1B$bmTfHGNb$VAk
+
+5CaQIPpFFr@cpd8mq!@$fM50N'2ebQSjaii"q3Zf,1D14Zf5q*M+K,![i$earpK,
+
+*4R`Sp%c`hPKc,D8!'65YiqdN`Hb9hAXB$HEkiKFKrEIpNBiNTV"plbAd3EE%dFY
+
+a8,JqN49I0V)ZekAB,kmm089,[&dIL'(Fq&!1SceEbfI4c(PXZBHPM4U*H0jA2&V
+
+2P%ATNZTPXH$GaiGc9F09!cU5$UI**XN$4i0#`mRKjj&@ldiRBcJS5'8S(-45kK-
+
+r*e"DA,8[JHkIUKS*I6Mq-9QP-*AR"C&rM3(*58!dY$q@@Upj"K@@,rmH"PQ)XZU
+
+21IJje1TBcYMd+HBVa&L$JMLSV@ERM6YBRASU"`01QF4ea1LZE9F'-IVEj&,@@Zf
+
+Kk$KE%4L%aUIP[UJ[qepA%pbV4`Mpkf8#`DB[*!LJPJQjU9hk(!NKD90CDUKVTa$
+
+I'[&AL5-,fZVMZ'4C"i&iEaF2$pA&9Nh4UKc9&U"-HSh@LTZG619jlc8fVQ-5e1A
+
+"X,'%9`@QISYdmkI"-El#%p!9)fa2f2Rmq+S8E2&Jch,%PVb1EN%a[ClFQ)(H#T!
+
+!0&36jB[b(I)L'AQf+Z1Y[1YV(QU1P#Z-NIK)SA'9R"DDN["*0@T)Mj4E2&Xh"')
+
+I&dRZ)N@$*$`5*rPEL)!e8NMV[YXkmDE)`X$9Z!4DFLq4l!Q+'Pa%'ETl65jIP84
+
+khPd"#iXb)iif*hXhk1&Ud,EhTche0&B%rrjIYL51M4A(V5b6U)'5hm4'@eIc-!e
+
+iNF2j56p%IZ(e40@lN!$5XBkYFI*abIVaX3`XB0XAai2JIJ8[ANjVq2XUQUd-EY6
+
+GF9AHjmTTT(G4(TiQa,Z0(KpVHXGQVkpfU'i2Jh8&FXd&84k0(qe4GTlJUXp-Mda
+
+Tq*GUN!!K3&FFY%2LEF)caE`Cf8dXDR6+Ha!UK0VBSRN(Z@m2hphA!RMSY2@FH(i
+
+pBXlUqlMa0(h-JNZR4@,KceaTid3B#h0NTR6d)c0Z!6F@hLli!EZK(9BUKj)39E%
+
+e0i(P%mBC39*1))bjMLeFdL+p#B*mjf8%fCpr-cTc0[pfS(1mI[YpD#`e9`rdjQT
+
+(K02pap'mbrK4KMSVE1#%ma!(ChLY-+P9FF169#$Hf$%SJi$HT,J*0AFA`d[0U(k
+
+DkiT`3F(mX%U[ZefL"'6TA#RMQXiQM#(T*h2`K,!(8D3Z&AdcI+YhZ!T%-(Hb$JI
+
+j%[1-Kj,2P!4JA[Me*j@%(pd*&Al-$cIVr!Sl*UET@23eP#if)iSAKLmBFj!!%RC
+
+kXMB+"l[IKfp$1VbGQ[a5JTGJ*rf%GHI)d6-pmD,clL#fDj3YILfU9&FfJd6NYJ`
+
+*UR0R(m[IN!!9RD))pf"9pQe`PF6T4lq%KpN2"qRc+BH"4*a"fIDqX9Qr1qb+Ld"
+
+Cc)jH3+AeHjap9MrN,`5K3&![KSK9d,'F,9$VCeZI(Ud)9r&a*d`PbXGHDe1SEQA
+
+$Xp8mEj*RBC&Xf"80,MXBcrjBU5da`2kQFbV&'%L*,ZRkpjLf!G(4!`Mcm*fXSI!
+
+$HI!JRV"NETM(2LiKLl#@b`h6%LqE#S'd3`J1j*cKc2`VTXberPH9Ai+XBjP+a0p
+
+-NKVkN@,V(B0k8EfqBTk#Gd0kEASJefSFI%iIIAIlQL&S2FM,64Rp8(@i(%14+Cq
+
+5k6acR08,fRCe(dkCZ)l5rSRC-IB5DCc#2'lj-DP&b5'-cVHKX+j`aB0YfEBcDDN
+
+GehR$2hZIl+,$XlrQ*%9h+PZ(iK99R+c$CC!!+CRKS5RBcLKjb0("b[fl5d[rL`j
+
+f8TJYDBIQ[&04AmRN41fm@ffJEmN9,fidDV8QHIH*LkL@hcF,'U@ED)@bQqEcBZI
+
+$[PNa0arR*M[Gi5Q&54hF"h-dalle1QTqEJb9[1R'(Qm'SQb"0Ya+%fA'@d%SM5@
+
+f4-`ILE23%kIQ"Em1l42Y3IIZNmmZG'1b69cm"l&fkl#-051FUABGZ)V0%#p$i"A
+
+*fhIDi9fHXrb0%mdV*@81`k)CR2!GBAI1KMmf1)58li1ppd3`YR'[[j8&YBT!Ch1
+
+$CLXYF4Z1+,0F@B+X#[pNmR+XAGf@ZBI!j*Y1hFl8'M#"qY@8f0TD)5IE$hq'k1U
+
+8fI4+m$TS5,2%BGH`TS@e&4LKB`GG*Td*e`b5V#UG*0TKrD3kG3k4[+%PF!ZQV[)
+
+P&rrC3jHNi`F$P,TImQhfmRGEdp5FlbFd%pBr)6+&A'GlRYV"YR+B%m`r5qq01*h
+
+Q&@ZMD*N+LmTDGmAETXc$"ifQ9pk*A5G9+%,,+al2U*aHVDaj2Z1cmZU(q%-6Kcc
+
+DdK('qZBGbj3GjfAjMIF(clhBBR9KmdG*e36f@&cT)Ij!ZZ&m*4Z#KB-TQfLDUGX
+
+L-6Jea@@V"CLS@f(Q`pZZYdQ6Vlm1`aFZLbX#`+AJ`P2rlP8(V"*ClVqeS1EqK[h
+
+3[F+VCQGkdUZZKV1VAM9raV4Ar9NJjG1[,q*LjdBbaMTFjF421D-2ejPbdBkrAAL
+
+I$(j-Cmd`SSM+Kj-m*kP,("TF4($m3#11+lZ3!&ZG9"4F5iec4ZFKNdM9L"e@,'Z
+
+1MmD-2MBA@E8k8*L[8EJq3$@RF6,3lG,YiRM15FebCVj$QZNpm66aF2M`eR4E5C!
+
+!2#*mhf,@NQR&LjTmc(fS2"SV*,`b!r"4Mie9DZ+4IKRaCcM@CNb[0aVBZ"PMML@
+
+b25EZ9f[(1e-V+0JA&+Bfe"JLdc65VLaDe,&XpcI8YeerqU9cE-RYXH#!l&[LPC(
+
+j5de$-FiQ44E*SKeXHjNGr#E2b`lPR9M2QP(LY%j#0H6L+4Ul[+l24"#EKj8r95D
+
+-,%e[Hr'LQqP!l'ZXNC3@ljfc"fN#+F9q8T(dLjRB*@plLLS3`rT[dhqYXe1X`68
+
+1Hk12,PmG4i2QD4RqJPR*qZ+X9!R4ha-`VX@501(UjK2J@&VmVXA(PmH1j0S1I@$
+
+D*eDSY8QDhjQ1C+RKKGFm,bEBc41[b0![[Mhril,T-8Z%"iZ!e&+a64B*N4L8dT9
+
+!aQahp*8`0ai*C[J#c-A0k"0+%YSa$mTN9,rFmAC,M`H3!'[rj*%%BH2m)8rF$@X
+
+@6P`Xc4"f6bpS$@G-!jlj@c("E*pf,3QbqX(&J5!B$UPlF1C4J4rfSh3M98kR!Y!
+
+B&bV1BEpDBRq@aK6!p&mCN!!CN!$4aqBK*BLm[GUB2UElBLarGFe5"Q'!ESBJMId
+
+qKKpf$R'XN`DCN!#EeXEGM9aa'L&L0Nip1M&,RGE-aIVi@-93Cmmd#lXbIS!GD@H
+
+L#@A1j6VqGGRA("$UQXF8khBk"Rj"MhdmQP6m+6*m9r#a[FMTi9!%qT+XD08kTd!
+
+ZV3M#2&LrpLMKFfr-GpZNc')A$hjrpZClbRk#Qk4aLZ`iG-G5hP`BP-b@I"+XcDj
+
+[+HeX@H0#h6U%lqhM!Z+NfD5#SaV$HVVC$hbkp#bIXQ`qChZK,fP3G+0#-*lVD%X
+
+)iY@h4HE(EB21ETelJ(@)XMMhR&5A"(6LkHE[-##BTI'8mQUcUJVJp+0HHNaI+&-
+
+d0k%,ibiMSmB0$5+Z$8+GZ6K"3C`@0fV)lMJ[JH!Q2,P$p6Ki&ZZZ"Cl6RAFPKdT
+
+2e&#)ZR6F4)1#`TjrdbIT*MJbJeP8U,j3eipRY&!R(U'BKbC2l,2k%UL`Hmi%2[+
+
+XDEeKY&bNc0VAKK&j%$Zc*r(VS)qf[JE&G'V`%XXdJSQ+M"h(+h0pE*YHYkBf2Nb
+
+kZ0&HZ#Mm'@%qiJGFNB#S8)$*e8cFmBr"Qb*'4)VMcDBPKc`YL@Zqe@l9MY0DN89
+
+-,i(jcM'FEVSNq095NDK!A&4)&8*RC*S96)(eX-"iHm)VULA""rq6q3``jqhNPH8
+
+92Pm40`LH"2q!!1iZG8aQM4&aelVBRh`rAmFV6P*,d6$c4E@R4e1GcDKm-$rJDEK
+
+'TJ'pZCZ8#0p"KkK&8EZmVH(9`0%V16MQKG$&*,rKdHf-6dHHhAmX6*da1r`++#P
+
+MfC!!-jJYT9hcYA3QZci``q8m%h#+4$0Mih*B)dMRXi[l'&4NDlqk1*f%T'5Y28G
+
+G3Q,1*N2QpMe0'MXUlCSd4rZA4GFCdD289(BP3mHY@[YH#A-&KDI+mbV1`hMl4iC
+
+e$fN0rINEVI+@cap+4pR3AMZ`[l3(9iepEIP3K*!!H3+0+P&-)4a&H[P+!`VZij-
+
+M9bl*#[UD(#8&*pIZicMfJU1eAqa,Gh"Ke34K)e)'L+$P6-m(264-'M-q%$9mqFT
+
+m2C+#Q8`+k'[,kPCGQ!C3'lcjRhCeP"adL"UGYqhdhK(E"HVQC$rrP"G,@5jVH"#
+
+Kl*rAXDiRJ*SYPKGlZP5Q`UG*fAE6d6D4#6H068rE1*ErkH4HeAK(f%1ZYq&e[)A
+
+k4Bc2"HXkDJT(X!*%caS'V-9IJ(8FX5h9am!0+l'N(ml[9h$kT(KQ"0Z3!&JFp%E
+
+XcBV#SJ'@kf5+E9+,lkFLe1C3@,0*jl89laDpMPq2VG3Q2&a0SGGlmJELppEeB,Q
+
+e0$5#GaT+Vf`9FSrQ0f`Til`kA)NQCYJ8Lc8%b1i315[5m,,1+kT2EXY,TLGX#@`
+
+A(@maaBp4SM5)18[V$0%U610-%1f#6G8L,Nj`UQK9l0fbQPJR@kq,,l+IdD)DXdB
+
+YiB@`(rX2IBmM&iaj9D(&'4X33U'a3P1DY6NP6%&'#RJ*ThG$F(j3J`Ij-Q%9iTd
+
+rF0PCUl6)fZ!Zb(kPSrHPKfrD4(Z#Jrb!I9bH1`'h`[NF4SDraKI9M+Z5r(b#MYR
+
+IC2*Kr$@3!"4,I&`IZ[kAP)TUCZiGpBhJcaXPr6YX1X+6(DZN),jTmC(3A)4TpDr
+
+@PASAEe-j1F*Al6q$IBQ*(f(U,N*bP0-UTSE#K9am*F![X#kp3IZ("51icKb52Q8
+
+edC,hEr2Yf92EXVF3$SP(l5L@)d%$lTqpH9@pN!"f!r1rG3H3!,`TJrCG3N%%%k0
+
+!m,mD3N)-iD1X542$`Y$0#D1Jc%Q$JAhF5rpqJC[5#4VSQNjjqTdC$+2Zp1)6IQ$
+
+PDMYa8("P'LH#(rM#QLZ*MKX-"(kfRCbH-T&01p`jU6XBGR#hHf&i%rQhI-B"ql8
+
+c&m)qNlGfrMb9Yr@HSH`d3I!iPX8eb'X+GL['lZbC2$kR3-B'h48qN!$XCp+&(kV
+
+PZ&lef&lPb&i)f[YRP)CK(`QprF2FY0@f#LV5p[((DMJ-9KrdAFk1IQi[VpH441i
+
+8VKB'$Rk"h(e(F+KMXq`I$ZqKZD1XDD(k$(ET@k)0!Rh4bG+'UL'I1i&Rh#)5CZC
+
+QSJ1c-II0*QU[QATi"8T5PZh'DjA9JY#ikHjlr4[L3P3l$-M!Sa3feTLfN!##2FN
+
+,AqaRKV49DkiPTej),YY9a,60'k62JJc5LADKJKdi9L$[4a"4Z4m8'Vll*+C@I$U
+
++-[cZ5L%+2A!CZb'84GN&8"-pbQ#ePTZUR(RElVUDY4-C@0c0NkC3rC!!VhLl3Hl
+
+HG*DKRpkpp)PNlSe&`1FXfGpCfK0H)42$2h1DRB`#Da[+BYIC!Y6CreXmjIF+(X(
+
+A3ac8j)aXm(#42(-kEq`IlibC$MK`QhJ-DH,cif%mkLPAeS4Q[-qAjfGePP1d$('
+
+ESb%T1e3EJ@CehF'4X%V85(@pI6Qa@D,QmGXf6,Ai%NTH%Y9HGX12KSaBMJhDi5R
+
+eV@b*fmciVl(J,ed88D![ER@L*5h&2rG$[P#)hle'AdQfFN2S@(4$#8d'$&SXGG$
+
+i"!5468F2,0V0ibTF$CHf((abF$q0FHPqfRQ(er$!i%4#DSF)21iqD@6Q8qT3hH(
+
+CXHC,C95,1iC8KSefLD5BpXJMiT-XN!"-KqJkrUcTKSNh6ApK)UCL*Xd!JD(8M+Q
+
+imlf!4GdBdaRP%3"b'dpH8$T2&l%KGdGCQ@PCX&I-0Xh0I`TZM9FpD,T($F+QQ,N
+
+!lP+A#-%9BYHX3SaDQU-"pZ)rIj*,5jfrjN(dj,ZY-B@AS6c@[YFZ+'djP#pY[5q
+
+"0Z)H2(2%9`MG2q')E"1e54L3!2kmr#fQTVM[bdT5KQq4EU(@66(BZPP29F3E2LL
+
+bJT*iZr%RGYhRY)QQ@3VrLNUllI"FQm69"r$PGiQ8R3F*NdmJV*dH(-pLBr#-!&!
+
+R$L[P[eYcIRm2c,$X[jr+rkm`!!ABL+YCFrQr!`VNraY3i&CYI6X#6Fc[5KmSDML
+
+[["BRU-a1Vbc11*(a*`()"KFlKDlf`k,@9q+ec80A$T9fTfkA@'0eSKmk8H86a-a
+
+8eS5+'P@e1$985#Ak*I*fT'0Ue50h0*q$-%6R-9!%-&!`GpCF,Rj1+!l,KN3a,'H
+
+hq4rk!,P-(iVe%IPUGMh`M[@$%Ci42L(SBNdiY0l9+GrF5%Ze-$)0bm-QkR9h""T
+
+Ke$N*[*hM`lN(P2$$FU3DBj4&BYR3qk-+AmBa%Zb6R(haa9C5Sc!4%ApQcCk*Y!5
+
+EiaE*qSG84SfCN5$Z+dlq%DG#M1ihJ@j"LFeLehN1b[9"m1VY6dLS-0P),p`DGM(
+
+GEdAqNqpUKN6[-ldKr[N@@Uil9*mckY@Pf9cAhR,f3Lf#-*!!2[XJ)kYKdKBP$![
+
+(5mX(Ip"lmlkfqT834YC$rTUL*UPU(Yd*1+SJaJ,d49VM*#K+mI'bjRJa[h!$'Yq
+
+C&mM0MG-lCmc&jEB68NF,mUEZ'MblIi49lm3VK$X)D"*XI[ff,,LU9i*rC,GJbc1
+
+@e`$A'MJDeLf@V('m&+['[QPCSH%8P6Y2hEf[+9*(b(95)24i9C'r`UHI-&R!JI!
+
+f8rFXJBT-qHhjeK6kjeB`rG2m!IDRDZ[TkGAqf`RR-bJi'+`"`T`lq#49Hr&NM&!
+
+G8-3aVRGq"lZk'%#S-KIKF`$qFfeF5kD*B1bqZNE*cKbNKFL3!$-2T%B2+1C%3*4
+
+PEe9rj-l%A6&B5@,qMkK#RU02q-+'HQi$&8)'U2$!S03(Zp'L[X$Z*RZfGVAEZRB
+
+Qb-35a)@1@FjUXe8jRMV4X#@F9I@,@cQPI8p!B!VCL-Zcqm'43'V5)4jF4pieVq$
+
+ac2$+&%mZeRrXBA3LjmJP"2'*#"F8GP$X-&[,dj((2CZ!fYfbr5DjH@0[D9["33#
+
+22f%NUTEM`irF-[9e@$l'N!#[T49B9LAE'A8$YBd`PJ6[ESE&5(3#NIJiYIdp"XB
+
+RU9J2E9T1(bMf$Yp!IX'0%CJXIK2"X)j,--28&Qk*VECQ88kiGb6KDIC1$kjcR*k
+
+eJ$l2Cf16j`P330bV4)0PDlZh'VE`0KGSTrqLNaE,C2cmL2HjAL0&iAb$LVkA5)`
+
+[,Df`I93ThL'!Je#D'klAJIB$)Ub9JU,aG8NL413($Sq%G(c8"6XCe+J`Y%b+DM!
+
+DjQaibF&!cl*!SlX6Ea3NDH2Xei@pK6R+M-$mXAZZh$8)%LL4UJr)%HX)%EZ1E[C
+
+0"ZR#VQmCqVVqHY8adQ9LlDB[R-i+lCK)[h4bkee-Q)J-p"$R4hN4K(jCUP[)6#$
+
+*GX0aQJElbef4JJf)-EGDbG$ieh![EqMi#@&0D-TYC3r0EUY3A'(BDFLU2fcFS%$
+
+q4)`+2)P[eHdiH2kFBL@('KXKMc(TQT+C()@Fp62)rfc-GIKmI+'jQ%R"[XP"C4J
+
+8aPFSMce(#cb!UDS5FmFB4YH#HGAjM0*pH#)!*R9aXSF&ERM'Y8mbQ)`p993l4`a
+
+8G!%-1e&LJ5XH%jcN8aa%h`jGj2fA@[GpLVf`RfEjH2#@[cbLZV4Ce$eS1YfI#P&
+
+eb'+6K1#KURVPm0ibU+-*1f"$bVj5`2U&Y*,RA(4'`)*UX'$1cfqC'XMZS5c!TjD
+
+E)@1*J@aULc"f5Mh",*'0)%+!24)mkL,6"*)e2NNZBD1!Z,'`-XK(cZNEI9M12PZ
+
+fJ@a3q0"3#S9G$X8q*ZS[*@Z0&ap+9j%%AJ)3Tj9aBhrPM-@(iL96*a(iT+T0)h9
+
+#(CA8b4%,JU1"*G5e'k2GhM"Dada2j1#$rH6ELX%Nm31(bB$bFS@PrX[`ap$YY#0
+
+Aa1*mAJc#@c#YVmB$,6P,SXM'eTp5[ZB"*+LQB`TD5LAe2J-ihS9L8+3XLh4%[m8
+
+ZN!!rP#ecVJX@+k"cYp!QfYq6B1%0e$DRP@eMiNZRi5%dp,Z`0adIRAiSKaSYMl,
+
+*0G)M(0cYU8Gm4qhe$pUHe&4"f"4EjAVXX(*UQMe"Er5U4c5mQe14Xcfp8LR#)'b
+
+0XpEi-L&PX(f##jfj15d)D&bc56-&UUbr+QKKP6E8-L#pqVV+5@I6``HICPrrD[q
+
+&'qXqf&S(TE#'j&"FSMSQV2r%mD+U@R1"jj'%%RhLTFHiZbkJS&hA[f[bakF-$6A
+
+T[Peb2G%jraYQJ[A`Jb2BX&mT`-6Ql4q-`c+bHbBeeDQd[QUS2cf*b[KhN!!Hlpq
+
+3!-pV%4YpPAGk1D6h%C`'Z(m2IZ$HRElqr-2f&cKRXQl4ki3KUANA(#dY%iLd$cM
+
+-%j&X95hZPcKT8VHZ5-JPKhSlKB"kHPj942dZA3"#eCLpF$5+4fm*I"92TFJJ*%9
+
+$8b#f%dD8m@ETkXjD9LG,6c'U,mdE6q`1eFA%8mGj-qKTciH66"hP'BQ0'a%bC6*
+
+#bMj#HK)Kc`-359Jff[#%PFXYN!"LQ"YVVHNTr(@1cJpIb0i55@"Y)T6QF,0D(IU
+
+FdB4ba`SM*QZr$2P8YBN3UKbqIR9$c6'T2T&(SKS,NFbE8eHPB9e+&jETCGHUAj2
+
+9*3je2(0PrZL19DQTV$#CQY&+ND[V3288J4HmIqEr8XHUMFikhR`V+c-a8*)+`@0
+
+F`#)-,5KA9rCi,UrZ&kiQI9A'MYccPQ"PS$`DfM&a@d#4bpHF1V@9Z8+q!`M1QAP
+
+XiHfd0fcje@5aq-V3ApSi(I8$!e1)Qq*#B(0kl@U3!0"'3R-fCrSR[6J$E@0L$Uq
+
+l0hK)dF)ZT2Rlp3m"p[%YaJQHBP4AKlQQTQ-lfj2`3d%$hQ4#XXjK`TZeRh@T"iG
+
+NSB)PAk842lDcIm3kjfC04(&K546i1Bj2L)kj1lPQV*JVY-qPFDF`Fb1ZJeb,ZD@
+
+(2Z5"@RDJ@DPCeUFJR&f-Mk!RpiD+E)LS&lI5[l-eLeH%S3cVrAJAVY3MbUR*%'e
+
+9,IK&Iebk`GC@a!&2bf%)c98cTa8-mHV(03M9T3*h@3*kkZ*cEE8"D&!VcGRl+*S
+
+&(FqA0PTk-@[(A1hhaLSD"iZ`41JkYmJ[QFlD&"L4iG,hSS6HAffC-63d`&HMb5)
+
+D`9cGpVi@5MAd+%BaT,rT*p!E,m*NJIqB#8CRA)Bakf$k`E%PfUIJiYCQf3R'q+L
+
+G,mq3!#P%ZAq$3+$,,Q"Ac04B$kB2$[jFpd(3MUMA&(Q90@dLSDjV3$HcIiHXj(a
+
+25R(&hlMmCPKhZ0HcU[F$+QTP112kL2Q+4[R8ahCAp$eL"d0RS[C'FT%j$DQcM*!
+
+!FC%8pZL++p)C'1l6QPp8PJ!M3[YL8jrjaC`DC+,fl"%[ZX1E2Em3V[8ZEDmU82e
+
+[Q[*lI&*e9D&H0GaTH9*UjQJAS&RcRdk0j6dMdfI-5ar@cQ-HRC!!q)3A('TL[Np
+
+b1q6'-M1KTSiSI29%dFT)diSKTNBN,f269SCEjap*N!$m,(HkBfAG%8d1qR8'3ck
+
+9+0)RGI9@E"#6RIF6#N[EPr,dq+p"&aT3D8i+Q[SHMMP(qRek-Mb#)B[kXJZAjp$
+
+3ai%XcCmL#eElaUf(daj4H)K$i0CTf-6N@Rf%XZaV8(V&A!UIIV,!3hZd$T`'r5,
+
+cR+6V3Q9YD81lmTBkBECTj$hJMBKcNQpHjY4#INbf(%KBj@NNIHH!2BV"Kd&Tlq@
+
+Y)+9IjIT*LiP3a20p@!jLr,*&CH1YZTH2R,PQYN)Y%A)8dD*pq,LHdA$id`jVKd"
+
+er)hEFQ1LVH[bLRX@`A%pIPCQd9'18bUMSqjF@bU3!02eYrES9MI[k6IX`69eeaf
+
+l,e*%Lh8*ALqJpF1$S"qEJ#cDIaGmApm6CC*$il2&TH5pK"Pf-#pEkFl1-5QqM!f
+
+eq)hjH@`T,8X&rT2IM@DhUNaZR(AkRCE5rDMqIQjmp8J0XENQV"d!QQ8',lDG8+U
+
+rJH29E0PccKbXH,U+@R[*3f#h1+Kj#AFNqXk6T`k@`3Y5ZQX`lUA@dH90H'NBXb4
+
+Xp)G5+3I99e6R0#BCdqRp2Xp#8rA-'eq98[4b23&S-e("fB@JHSjV$cGIR+)[&1G
+
+p0e6M[qkj@VDT!d'(p)i)4R0-Z$YN&%"VG"cFUGfqIeTKDYm%E`Al&BL(i-@9[[M
+
+Y8TYN1R0*FJT@%NYcG[5R"emfE('YY`a,'`)P@bJ!bkLGd0Y1Y"!&`JDMSqPdB4l
+
+dXIGS2%`SIC93)%A)iF-LYG6#I6`c+5i6N4Lb$rqRTA$qVc0&0Tq0TAq!d6L%@CX
+
+E3rTp"q%DBJB(`@R$T"Bhr"DIlI#jIEr(+,X#pcmp96BGkBR,b[khDTlmr`U$&B%
+
+Ge%P2eE!Lj2qE&H&1R6rMMNq#TH9fGM'&lZ$!jXm1AJiHH`0B`YiMk0YI5qI6L02
+
+8mmPN4X3[d9LJqNHKI*X2DUUeScZ&PD2HQmBX@ef"MPSSVp6jf#K8Z6bfFDr+8D@
+
+qrV)3lJXd8#rFa)qG6HT@5!ECp$lhk"EZZH$II1"2cY&!BhZ+Ha2810BldT1KZ8e
+
+l@95RV22ZG$Nm$dR!b6Pf6E8B%5CidKBdjVh-Vpm0[SJP2PY,'pB)bakaLVbkMXh
+
+j@T*Z`hm*qmUJ!DhCI[!-i1UCDGUIq6((rp#XRRSMR'CB[&P2b*CZ4`FVcM8+l6'
+
+#VkCSCRGpNZ)I4eM5FqeI6'-4a&3H-[Ee`$1Y8ihcBHaNVm4i+kUX!rkfbU'Z*8H
+
+0FIPKA-9m8m'953"ckI6"m*PlPI6R,P*B13[Z)TF"16+'T$4ViVbd(bMZ%-Gib)j
+
++c@XM%ETmNa5@@b-kEUM!'e'6KZ`8F3'R,,U88$Red*!!LhKEGJ3*dcjDd3`rGA@
+
+#4XS3!GpLMr14bH+2[)ijX$'CdVhMZ!rSl&rcK*A[iKDmE!4VKVj$r9Tq9%&kRc[
+
+D+,Dl[-Hk,QK5eiQbh#h5H4"am+63aBNCr+ikRBeALMN*P9r%8ilSIX`SV2-cEP[
+
+1lq"1`fm1!4%6Z48G6*5BVB51XF4"Derp'6kAY+8hckQ2G3Q+J"4NQ!-m(!X%HK9
+
+XIRhAla#-"JZP",HdEaG+qT!!UhV!U"HC,ZqE1lpD44`A"'VKVq)c-UZa@GC2&6M
+
+mXUCjY$SNApMJ6AQDL%ND0@'3!-0PYN*V13+00HhI[@LC-VI#K4J9Hk09BA1ej+-
+
+'b2XM[fPpMT8$Yq64`p!R)ENJLV%M$&CfNDdVJI02MBX%kYCeHda8Mk!M[%N4E(V
+
+df4dJ5rVBb&@ZV%BC3NDVI!0hmRZD8TU%j(P@Yl!D-SXVP(-UX66UmS)jM$+JVk"
+
+ETE2VTDAA1L#Zj'!D-B'Q$*!!e@MAXUc*6&*Tb6YUC*k0SYP$%VG*GTIJQ(6ccr*
+
+035KiASS`U--XKhTj5S%B`FRPPCq*!Nk(Vr%`f190""6UUY)&L!YR#TU%lBK,i@m
+
+!NFMa0*0Uh$K8f-Ke(XTh*GN'ci356%%m,ZVRI$6dZQ@q+DIqb!Fl36qB%hDX)23
+
+fdBpp58)5mc%ZhKM`ij,P`+fGY0+A0K&A-%S"e3c'-(C-j9ZlRef,ac@NMZJA3PA
+
+fHAK-+1"K+Ue8mkM&&'A&H9M1F48EA,(CT3h)B4-`)X9$)2-h@2JNiI&fYk!kHDE
+
+[+K*8lQj$D`H&#)RbY#A3kGRMSIBR!TXXGCE$N!!rE1"qY*V8-+$NG9@#)9b&r&#
+
++@0M9fHCmppB4Sjj&+YqNRT`4[,9m-kS[I[IbMDkHUX-#ZDJ2L#lmeamj`9#F'*L
+
+YS84IA+**),E@p!6@k!hH"Ye%F4UAdc*$8e9358,Ui(&`e`mX5#SAP,+SS$#c9qL
+
+A%B+#M@`Kc%c9lCI5X1FrXlJa0$fml`m*V9@Lm2XS5'c9$X$@5Nc)SZf+YV#Nk4P
+
+AfQRPTP)9T(A5&&,',#%p@MdcKK(3Re-E)S6,5)!iB+G3Ci[+T,rc5GBR[EF[KGB
+
+JXMX*f*jbAXRFB$iM9$l-miBbDQ@h,[9Nd&AeBcP"i1aCE`A-DYN'5qHI%pRPiCp
+
+r2,dG!*rc#3+IZhE6R,9eee`RG*`d4Q9EHPPpIr$`frL%m4cd@XQ$@6hPCGm1IAA
+
+Qbldf!5QjEdQ@q,A0Yd%,LY&6#513!*ZlI2&6d5PrNb![0`ZTYL,bYlZ,,9k#1lI
+
+SGMZRXbYrC'K8*PK2bf&K29m`I3PmheTbQbc@`2[G9+Z89Fc1m"6kU3SDQiVKQE6
+
+Pa+m(f+$`MkK2A["kJGcLL6&Y9pG`L&q+a`*"9PSYQ"$de6fa5,HUPM`BFIKqLR"
+
+1'DpZPX+bVpqr5Kma3qdJ,EJBCr4Ll'jrQ3I4JrN@$4D2TiBrc6([0R$f5[HcLfF
+
+@j1Hq*AiFPe"rS3Z*qXqA,DHIVZ'@1,SeBRIUeV%Tj#lE'Cil&1VVHGFPe)b'D&@
+
+3!(bcHr`JXf2@UIUdYA-jqVpXj"N0h6Q0D%d8b1p3jV04,qarp@*mA(P*'rSedHf
+
+KIhGj*L`Y2%bhHpjJ6)6#[ZaTfK9TCI--%#8,Bdf23J`QMID$a!m1`2lfeD9$@m-
+
+&Y6M$ZD-m$'DJr-$YJHU6-&E,RIVpH%Yj6hpfG&jq*kTY4cl%R-Y5YXCJ9El,jMZ
+
+KDReICmfaMVG%YC`XCi4-BR3F5*)rHfc1LX)TAFh6Y60MMEPk2fTYU8m(KDkP2X,
+
+!aZkq[p[V9,MDJ*GUCVY*PaLFCBEY!dp*[!@'fVhP)IEq8GBaP9*kZLD-`a2SmKT
+
+%Hh0qqGM*e2c1F6R[QGXqYZq3!#'qVc4QLI-["&'3!)$M85Rf33X$RK2LQVD8D2R
+
+fXY'p#I@mZ5S0EBPdl+QVQiRk-N6E!mR,GFd-4fLiSlf$-T8f,jI,M@lF1MC%+VY
+
+I21ImU`4$1jJTEUeV`G+Y"#C-rUI!bSJ4&EHR+f"Kd#r`4)e0RAkHc9TC[IdHq03
+
+c$hpBD$rN@KQ(4+"SH*1"T@4d@+l,eH*QEq!6IG[bHB%-[llc('NjibCeS[iUVFD
+
+CjbkJ$P)Q',Fm"kT"(q[djI2hB!eClS[BcqhfN!$$!UP-!FY+k6`*j!0d5!MaPZj
+
+"!IJE#Cp4XrhKb2@UCBCD3`L-XCFZPBfK2a`Z[@`hmpTr2Xcapfi#1)M6*5Iijp(
+
+*KJCbI&R*Sjc)a!aS9#Pr"Ur%fI*Tlm#J[%8)F43@rN)FhmHQJBh%SUR!)RI*m)S
+
+,DBVc$FE!53kM2m6[Tm(jfjHB`Ma+hDMKI(9LHHj@8&ik9+)JT-iKm-cP1p)[qhB
+
+5i20YC"-Y"jfP*rMIcZY[&+i1Sqk@r"aI0G36aca3G&X@DV+"bReM,hc"ekL80H8
+
+V'q[h9K5k[Uc'8RMA)BkelIKH$qVJ'Mb#+62Xl["@m'`d)qY1@NmDEM-3+aG9+qX
+
+[U"r2!RcC4)$Mm89jC$QdXXV*YpRAkm'aQ16`RmU@JK2F@@Gb%phpec,fl"B'e0p
+
+YaXBY@6Lr1,+-Yc2Y6Fjm%fhZ*#U1VB8V`90rSfIaF35(J5Grq"3Dqa'1R0MHF6T
+
+pk++h'2l,bPk$',E-pk"HQ$`%X,CE,jC8$RQ,XMPP9,d`4+-'ZiJ2Re+1+G5eN9Y
+
+$aBF)VEBp&Yr'KYTCVSFEbJL'GR(*2,k#CFBESU8SDabdNrNSB"!9cqaKJ6JELG+
+
+C`BrUNf#ZbCQ,IL0R5!`L)B1'L1*4Sl#Z4mPYUql)9#6PST+-((63qFN#X1HaeXk
+
+6MaVL'c@NH56I1SUMVjQa8FFT6DbNf$X,C8bP`G6h2fC4+l*2Qh(M8T5KaS9rp1-
+
+LiQr9`"$6lNrh8e"4)iN3&2Z@#5hGr0!YU@q*XS2f8r#Ecp,eLDLlEhm*RqJS*)X
+
+2IaP"@F$()Kf9+X)F-e`qM@&abda9q@KIL2'N'p68Q8D8!#AIT-P+BpVe&@LUc)F
+
+'EjQ-AFKS%eiNl,M2IZQYh!cmX'Vk%C%KPK)EkQD2$GXSUZDrKKK6MHb0MrC%P-6
+
+FLQCP$[X$"NUXC`@EGMlSF1k#'8$Lq'c%UlLG4QhVMHfDUQ+,QHrX(l$4Ii*,R8R
+
+B%FG`+($#Zm0*hKed5aZk3E2iHPc*a0$*PNB)F5-Qllf-'IlcM[aBmYHY9!@*QbL
+
+&8Ui'&b!)h*BIc9mp%-XYVF5DdLjipeI0aLG*Ql&4p5cV1-K#66dkF2F1PZlLlcA
+
+FH4[,DL9T`bqa1',#ceXFCM-hA3e9,b$[ap"p"'ER`Pm%cJc5rD`6h0H$2*[D$mH
+
+Ee"3AY)A*h&$0JPBDMSDjZ&'U,G8AfEYGa#X)5UB0eHX'mAaN*PYXi-k,%R@0N!$
+
+)hcR([r`BN4d9c24-"CPb,i*GeYA$N5PT&PF-AKL034l$%!p68bSq%EC$5F8+kHh
+
+qZY9G[Se9iSGbJAU#T!RUCBVHQ@d1`@Jm86IrM[9DbDdjBl$*iZZK6&6K91#9YFk
+
+6`CG$qXMm`m*`i26A6,f&%B1ah8J@pKK3jeE`BZj$l$SAHY1'#h#RfSVYfQqJ0-D
+
+QFScDm4L6H3l5j6,kBZ0MiJb,m&EiI*UH["jA1*c,8N6VFl!bZBZT+j)4!l9PhA#
+
+HZpH)-XRF&VfEqqm-L)i9iX!q6c*clY*XZ+QTI!lP*Z9+@p9TL8IP@mNi"dK0'hM
+
+bPVV"bDV%qAj'`&#[(*j4E42'8HkFHK)l")$%E1UprpefpIYNA&EZ[p%dj2pA&M3
+
+0E+j1fUf'TU(`hc301l6dJ6306pG8,BaB'idfT@DecPaVGbFJ@PYck6RYS,V2M$S
+
+S''h8q2b0!EYq%"%a8Qe(PI*BA&C2"TbHdR4XUkK!2((4*YHDINU!*#5Np%JmQG-
+
+Eee"F*LRQBcS%XNq%i+8``#A@4GP,6BZ5#+98pCIh*1$'ice(Nep%2HCp&k#-FA,
+
+ike!pk',3(efbbE'aQlm#cFfehL#HkJKCQYqS6$DFJ'9qfL69jE*11GD[1KZ(9Nl
+
+R+1VfhQb'-)VC8#IYp"4Il8(k99ckZZKp5ZEEM0X$Df4abTa'-0XVMU',C%SCeH@
+
+CjISJ,2KF@BV&E+*20P&D5VV-p$$fFD+LZXqhbJbG0+ZeQfF1AqY[H#9Y%X5-5MI
+
+VGXDHNf@Dar6Vdj!!NPY$bI4(dM0'CU(6TTc$4aN3T"DUP1fKMX'cJ@-1`HKm@P)
+
+L5!4%lHRZZZY&HjEVK5%i)+46S3p$1pY)P#be!EG5D+F5TbLbZTBL5+RphhI54Ki
+
+b*ZjPYBiqUXjcU[0mmRR0LP`KDdq3!(2@0"!YZ%XLYC-+#B"9(VlUffjN(MFS(c)
+
+eb5!Jj"!0m+Cp4"DJa))H1P0Hh%HQm1Kj8q53!&#@+h@Cf,%,PC@,p)E[*JY-E-6
+
+0Sd!2N!!HY*!!qX!q(EP9E@b"2V[r-3M(DriNUZCacfc-p@a`q$j6E%""0a@KJGK
+
+1UjpVL`c"Y%9hFE#+Hh*$"*3NIMeIR$K4eMdDRhlFX95DHf8cHrPCh)VLSj,(VGQ
+
+@SrmMb8DAD8PKab*1UR0e(F6$CL!(l(#c++kA'ccT`DFj(!4%T#HbGbNIk`j3ML(
+
+%PPJ*,p)A,lDB[Q,)NA'HGc(pi[dKThE'QCG53fdT4DLYLM1-B1L`P[A!lfKDmah
+
+D+fBI5R'4)1L$(L&$KVDI'"['JqdS8Dl#ma3N(,'83eqICK65YBpPSL+f)Xa*3Jr
+
+%hhI5BZlRkqDPdj%0qC(M0@B)me*NYJU&1GMdm)b5VDAp2U'+F2$S4DAS(Y+-L@M
+
+$)M`&8&BV-+V@Bmc"-b2lRQkimrj-GCklYfXNZ#jaXIlSd@QGfVpe2BAUa"2V6S8
+
+!$3I"kRNY2BC#Fh@,KZ-KZpj6GqhZ$Mr1aZP1(V%8afGkY8hbMY!Lk6"!2Vp+I+c
+
+iJ!`YHMfTc,cE*HKe1!JI&EHpNVYh-p$Ak2JfIXK%d)lRLaJcacQ-ELRLQKD'Xq5
+
+&m5d&He)%C4JIYhiph20!Ff9YG,ZAXL#5UD'[M5+#SmQQ9jX-[bGT95[03*[3PNP
+
+[i#(G8ZZpd0HfmJNafeCML&@fc[c+qG-13q'h2J*f4HAEKJIMj-RCU4)MHqqdbCc
+
+DT$86lP`SM2f&SQdMeQ3,Aa0S)c'Rr6hGq+p&@RTTfMiK8","#6%-9klh9G!jPNi
+
+iBC6PMchVA1fN+m`LMSJ5ZL`15$Qh!aFrR9$HLC4Da!XC6%h,@1$Gk2I6q0##DV*
+
+6jCl6GVK0VUamMQ#JLd,Kc%AK$M`#Z1X3#0aG%"X,[BaB`,I(MY(Vl)fI1J2biM5
+
+J%lNq$KF+%,H6XM"iX,0*,Yph$G*aANa*E[*d`-i+`N@d#dd`HMN992bShSf*GF&
+
+q(`Q(d@m4$)p3aXDllj`)MbL2AhN*JeP)XIZQ&a(V&`Y0lr!U+aFKc$`8F1'!c)j
+
+plX6Y!GAYmFT8-G6CdL2!Ck"CQBbRXCK"M,((C1mmA&Qi9Y*8EZVfS*9B9qL#T&X
+
+8eL5[[eS94bhil,RSL1U3!-q,M-F334UbJHLm#D-3q@L"R*'N4D9``cZkqUjYd81
+
+,eiiLf@VZmdLHlJlSqQ428R"[-#kB8YlBF,ekJ`1K5S[DcqdmcI[4aA@GrBT1a9&
+
+&d@Ea[+rfMQ%)eCq$hHQ6iSm0HZGlST!!dj9&B#hVIdNpPr'[XQCD3cjlM)jQYde
+
+c%UDJh+Y1#19llr8bGF!Q51mMN4meLFDp([UK!LULLN)hbFY#)e3E-)3Ui@jNc!F
+
+RTj-ZM(VGmLbqljDb,e'$9$RT(P6lQ@Z`YlG)ma!X#NCSA@XCBaGRTCCV*M(bY[N
+
+jHHfZEpKbJ@R$T'mNBf[5@GI8-%[3p@lX6"Gpa&)RU+EhDDAQTDHlm4lXN!$m0#N
+
+1)G4@)32fLGCPhfr*fcFMH[H+3BMASF(0f0dK'9FNA)cU"l2%@kr`jaa3EQG[EFj
+
+k[CNMTa$P#P2[)CPM2XAV@8821L-"#SAe3"c15d40Ek5jLDS1CViL2&N#-N!B@1i
+
+P$XjT5d8`VT*&6fmZHY8ZGd4F9Ah$JlB2A)erH1EP)!FJ+P9GkLA&8Hd("RVmG13
+
+(a1"QA6,0q-mNi+CXmRSlR$,+(Y&66L%RZ1IPFh`N6J),FUcZ3N+8SQ!GK(Rh1XM
+
+("+a(h9(,J1SpKQQ5Jq9'S)Njf+la89HK)DNpp'(ArlU(HYmm`E&ZJ3P44Y8+GHP
+
+MEVm[4@K#qdSaY9"8Ie*aC,rQZZe1l@+YcdaA[pIceNCbeD*45(U!ec6aqB'i!bp
+
+L6rqk$r'+Z9ldGr,hf6%jrLmLk&pT[mdpDSCHalidLM6e1HcPRE26&JA50$B[R3N
+
+aL5km--QEj0HACC@aK%3CA[ri$V'am484)QT(I!hll-1Ter[j!CT,rk&jmB0%UMP
+
+$U8cm"Z1VpV88-m5L,9hJMZNTI,5NhB1Hq3d8rfJ()rpcl%[Tb%R"BXSiX9i1$Fc
+
+f1"EA(8M1A[NQj9TRD2[B&`-'J'BVN4!NPP6F+'2D[5C4ZQYhZ$dA5RB3S3A4J%-
+
+hR[[bL0p'Z31GY"rI#*iPb4Ua3qqR1bl("AiZQ1PBleNeNM+3!)cL(&ZHGX)8Mqb
+
+1hPE1XCYG*+GJ`ZhH&3E#UZ6Q4LZ1MI6X["2G%jMBq81XKbXN"rbCA"$pJ)2S`1P
+
+B#2kp5,2dhG&'K0&'CQGdGiR'GP+14aqNM'I#l'R,+rNKpTrSr2YCk6rG6CDbf5I
+
+&EM6,B6a83r"4M*Y4""#4#--3GaqL'64'QIL28!k5#l1R[MiEmVD6k*dJRk9b,BB
+
+BLjr$PKlTL,mKFA1NJ*`L8Bk&R0G[MaZ"E%G&+TP,,,'8-&hA3@1Y!E,@SI#2!"i
+
+CJ*PeUIF4f*K4-EAd@eV!ckZVVE',h2$Lj$AF+J+H8Q""er1dISlNV(pZ9AMjG[Q
+
+,0JjXq#R1rpY(ZUHC[CUD$PN&-V!AmE4EpR1BFbmqLL`rH'@h2&HPr(AmC+YP49m
+
+EGGrbpl*RIl"FHA2"rl5Af)HK*`il$pII6R8eD%Tjh&l54IZ&[cHN&2kl)F@GBPG
+
+R!4'PbFSFdaM4+$@#`3Vq-0S'Td5Upk`%&`C(DUh(8Y41%PB8Q"dCe%DT3UCTQQ-
+
+KJj9DpM@)+6ier`2ScM'rf#d12QMb%9lJS1Pe*I19'Eh"40XJqF*RfXmh6(@GTV'
+
+-[-1p2r)q(Z(Kif63Ip25#H$SV%q$5J"hlPfM3"P'X",maKhR@hh*BCEaj8X-bDm
+
+08R`V%b4A&K8REB82H$*V8fX)0VekY3@+*&iTV%cJBhKpAh)@QL'@RF4Ge"M#E%X
+
+V38rBDN254Yra'BbXS$jNJ4hJiSX9'3DfIPIKMBmqYj1q#S6pQ5P-dq`d(0`fS9)
+
+G!a&PTi#UY6+#mUYI$'0SKSiQkXD![3X+YM@-"X)CdKN8T"3jb2l[Db)!K5Z`rHf
+
+3!&q!fBeL5r"1Q0`5eD"UG8Z`96Qp*6kSIHDSZiqjH'mp&Y1jaN2U8)UqqQQ(CI5
+
+aqf@$XSi9N8Ffd6UTh#3Y,B(5a(SMDMbrd2J(QV3@a-U)lqKJ1'RI))1EhF`h[Sp
+
+FE[Qp4VMT+rZ'@U)b-UBqkF@q4SHCKff,$m@,M1NS%+X23T1I*jkb0TqbEQ53!(q
+
+J`J+fr5e6dU-8Kb)80TIp,9,)N!"cl16fbCchpY38l`YNAiRP[96L#KQI4"QGRFX
+
+fm4iA`+N2-i!X"LqaI$%9$ej@D%'K5A*'KYc!mrAmCG5UBN1EG%eDTa)P&%FXjQX
+
+k('V%3qb!bc`dP[ASpFZiq5Y98A*%e-PVC2I"biN1KHcQ1e'2SNf8J`4(m2d,Pk$
+
+(&d&J!2-BBETLX1rpF6fZc'6d@#rh9h1lCBQ%F4d2'P8F,fH6fGcUmhklHf8Al6N
+
+AMRiADqq4[Jm$EbHE'Bqa`pm@+4mZC18ebA65&rMGc@NadAHC#c,X0Zh#TBE"6!-
+
+hf(``N6k'Ar#MSI%2U5K6%H-rKm'mmf@45TqNSmR16)pHK3fq-YNaCX%V0UESV)T
+
+T6RiFU5[TAmH*l,2MU9fm#H,G#+2hX!5EhljU,X,39H6Nf*bIBM(fkm3`J13AMS+
+
+F4"JD[&+eTHAL5,@h4iqbG"J+Jb[DDhf$(**-aK!NUi#V4P%H(%aQ*194pE(r0Ap
+
+8NCbclrI9blSV[G8a2,ETQ)#HEb0P0,bJ0RG*jaFMI$3VUekJ)[m@!U`!U0eX"Jj
+
+rpQKF5bM96Z3#d#VmB'3rqI*A6TB'EY"*a+P2kKS02R%0-0(QbbD-jd2pIB)q6&@
+
+PU2A2dVHM1eBheAejd#$*'Xp8&%J'90*$BBpHSIfL0f+ZT(I[Hrhdp,Te4Lq[DqE
+
+'GGLaJE%"YBfX05@80@PXUf"I'1UK[h`IPJQjm5!bIHlRIBArc1PU66G,Z))@fk2
+
+l(@3,ALb'Q5kMZf,K%Z8cdN"eh@lVM)c*DaFq3kN8RcedmN9,4`X8M%1a"ZIiTEj
+
+V0e&hbXBTiICU@)lPC!6T9jEDjpGpfep[LF$Le&qTi&r6+J$pZIlGJE`r3!C%2LX
+
+I*"ca%!UpPT3T@c3R"``!6F+kYGaC1kUT90&0liMN-#J4KFRI%YT61N2i!5a-AQ3
+
+V'-Q,BdZK19IbNP@2&i)P[$0bp@0,,LAMYS9#0YE+F0*Y4'3F)$%PU(@@ZT%E*Ur
+
+95fS2*@0eblUi`RS4AbEQpRLCMGq5h8Xl)Qb`5*q[aZ'CMid$&2V-QCmG&dRG-K"
+
+hb6DXqXA,q[VF'VEM)B8pcZQSY0e-h*)&I[0``(%`AiBbkGK%`dbA%+jTpr"RrFd
+
+TAfAh6h6BZN6m04!f00$,%kFCYZM+"+ih,,4d8R`T9*c2"Zj61`5VZ[0iTrDaN!!
+
+m"%E5"l+M`[lTk`B)jfAB%i6HAV4A1JhLhQZi84Em!q$[F)%p8&[q@6`aDJ%3&,Y
+
+MS'ESTcMQ558[DT,a-)hGm)3LXYi"0R@@Qc@#`fML(SNNQFP#K0jlEG8[p0$%16(
+
+1pc-)bYr&pmfB6*2dLGB#4+$,'5MD+lQG(1FqI``PN!!X9DkdFqC2&0P0bI+f8`B
+
+Nk8-d8V+YKc#k(41%'CQ%9UDDI@`M0'P$ZUGXG868[aq#$8-pfX'98cAqqV4S)j)
+
+1iEV'"kSV20$mm5MC&Gc@43@@[ND+8!DRqDY(bBpHJeA+@"+B+,+k8Ve4)lP+C)-
+
+`#5J`!XF#0MhMla915jb,$S[i5F)VT$R@B9&eFNqSH)5b@q"J(id+,aRU#0mSGSM
+
+,(d@U-+RC1j`'!Mh*NPbka@bc"SA(Y+VVIR`$Nrr4$k*PdVm*8UL,qlkqVY[p%6D
+
+M$QjbC82#&VrA*S)bh1+a`a0%,K#'jlU`m$LTNF[[F[B4X9),EpP#3VlHGTN*!e5
+
+UR4e#)31b1-#b[V%MRlkl%*4k#dp8IK82P&93LLVM23fNG"#R%J01A9iG*H+1JZ1
+
+8!J&60#Jb,r*UCS3f'd8eH,!m*Z!Dl%jD'ZCM(%J"-[YFL5mMbXF"aVd'kjC*V)[
+
+,j@lG((IcE#JK'P!9,P#+&Y1Eaa80Z#Db$+MJ*Rl5a(3cAMD`8rVfU5G&l[H6Sjr
+
+1Va9)0b2YDlNTaZrL5GHH)D!'Ef9f8421(I1)5T@)-`e5Vq$lJB-3j$jMqYD8"YD
+
+IT3H`0%@G*X8FTY![CGiq)l51IQ,G5UCNb&)FU$F@fj-S(D3HXDmb$c+"LNHZ#3T
+
+1)C@h[DcKL8L,a8&X0PMEpE[#4#A@Db'dI!C,HH@b@d`dpZp"(Dl)$KlemAA&5DQ
+
+ma2p#KmLX3BG%9EFp98CL-PM!,!LU+rL,9P&@Sm`@8QPP2cKZP0N@S6ZQd0FaCEQ
+
+',Iej0%eS"#dhRUAH+#pJ#f`i#Q&9bjUYA$k)`NjbJkD)YGGhkaB*M[6'qrA$H5B
+
+54Lj$$bAj1NPI3p,@(QN%HY&h'GijD+cLRAf8@4%5EY%XIVB-Vi,-,3GHc%6Z!X-
+
+EebaeIRE-91HTbP["%("RF+XkM!$Va+N&!iLIb['Ukj35P)Vc3DS$1MZb2clEd-*
+
+$0NX'+jP%dfN*"'C#+AZ!Q*FcH"EA$+)hkh&F,UmR8cC@-8'`UTI-ZS-L+SYrNrT
+
+D@3IT!1$R#'e`i3-KU-4GVMS2k4!Ah#,I+%jS9mP-Rq49KJ52GADrFa5LdZmk0F5
+
+l-aRAqe,qcXRF@JmTJ'PR,di5#Kd[eEH(5*0VBT'PQG(*JTYad-TIcqeb+[GkC)6
+
+P(5C`UJU'0Q&#(AZ,T'M`@ZVp4B3kD6Dq)&-R0cHec%&F4'R3biL`H8"!#GESd'h
+
+PmmVbjaMKB'fh9kLEKL*@iBj[5pcCYD0(-6GeZYaDT&YZ[FF988[Pi"kNBdVXHPV
+
+[5R3VCN)a[0!8!aa+e-mHb4XFq(GC4*KJeT*[I%22MQE*[e$$pS26-JELS3QC50i
+
+$flk3!2TP`b-"Q15dh&jTcrIKaX"&5MNak%frd!KDN`(V!Sjr1IqQk)cb%i93BD8
+
+cMQ[3ZlHeDD!58$Qk'kr1)Hq@K+9VRUVAA#pjh(N3`P$&!DFGVKL)'-*8ER`V#%E
+
+Ndc%3YmE)`)GLATTS0Nm9BkUC8XbMqVSFdAK2jAlUG,4$#&jF%1kLVqCChG(U(6i
+
+j8RU[Bd2ZbpR2`MdDT3j1kl9#',qbCZHY6)hQfbDd&6J,$ZJ,!K+6h#+@4K&A+e2
+
+i#D,mDdc1[5rVLqcpM5lJq3ZQf@Me0`#TfQI!Zbba!2XYV(K4Aml5DSr6&Ck[q59
+
+TF4CFY&kB4j4kVZCl)#fq2fiAkN3i('40ehVmL-PVNQAr#+Iq`V3VXfN@K*pp4SH
+
+H2h*TfGZpRZ',r3m,[S`LI+iXPANL0kL@FJZLp-cTNTB1V,N(0H*A+*e8@UZ`CBA
+
+KH&p1qKrN5*LE8bSI,'G8k`Qk,B[8+&G-LSmfl'Br'm+plGZpq2c8Pp0)1fPr@5Y
+
+5Ea'rG24D0i[cqH9A"kM)jRkfl$(Ufjdbkq-5V12+dU)@`YDZ4"a($E[L&%UdQ6*
+
+ESFaS9*3A[#HFr`"MmZ1F4hdqrKGQ$-B2"MKT!d6(MXkN"3%akF1"FJ9&'1Gm&3U
+
+!%'R[p3j%6Z1c-[9(j!rcYIiIHXBeES6'QV[[dHXqKmYUfZZ8RGIA9S3(j#heiTT
+
+5AbF`F"G9Ypjd-ST[1p)cI0arFd[JYk6,KLeS,6'S'&4fZSYb(XKq[3qBqd3ZqIe
+
+T'4"HPiYY'[GXr01QPpVY5jVE&lI"CMZNb(BH#PLHj`*T6N`iLSakR)D[%PU3!%M
+
+Rclc-l-AXp`H9R8Vj8I0)JQI-&eb#F&JA%6iBP8T`lRLe2`rQdSAIHqGA%C!!j-$
+
+aVN6&#6XVLbEcb!3j`PJC)p-NQrV*fmaRQF1XP4&Q$FR#'JaI8hD+[i8amrjFJ!I
+
+eQMR(Fk(ApA'1`48e6Yq4c#lUXU!0p`lVBlK`AL))2BH3!#LI4*Zc5&XmB0J9IbQ
+
+@1lVjPS'SH"QPHCij#)Z1+6",*19YN!!Pr2TV[S'iR4U5R8HPIJLMQED#ik@j6@V
+
+DV'FZE)*040AME8)qCEdm`J!h9S2YF,)k2-`KXq3$f34)Z'EXpc!lUE[&F*S[BDH
+
+JR#T"eJ0iET`mMb-cNZTP5'TCl8kSm"5YlXp2EM6@LmMTf$DTkD4mQ"lSr+Sd2(,
+
+bAc'3!,1mU3Zr@BZ"G&3YQ+Gl+6@%Z%aS3RbCi*QGpZ&4)HakHB["rabEhIh6LX4
+
+N1e`662MaKpe@Bb[+frB%`Z*3lS5jj)#Kr`rf8+-($0"C)VIAaEGCKXhN648'El#
+
+F5a6c'%A9b3plrA3E-Y1i$1XpGRY12bIfCI08iYTNePH2#+#i*6QBaXS[BLKc$UX
+
+#%mU@2D+[d$e64dS`B0'FCPpAe+lh88J2)dFBr@+-jC!!RRLjMG3KcUa2Shh&4'J
+
+`Y)+0i6ADiEiNT+KPXI,JGfDFaQCB&h-X+R!Iblilhm&`qIJJl4pK$9eh%#`qZHe
+
+R[-aEX)Q'[6IAdAKRfCZYm*pGCX@q+rRmiM)8jIiml-(5T",BBJ2r5r%M@l,iI9A
+
+Ajj1UCpd08qFe3p1cm$'+6*)b"imT&mF5KhSBr!NLr&Mc&`eqV&pGclamf828M2-
+
+-KQCi#)`I2ElPKCfbcRA$T(815mVX[c0jqfUl,8aHhld3mBhMNi,lcC[*99-,fMf
+
+G'(j1X(KjB96f!V1l9,d0HQ(9"SZB-JQ&GSG(pS46c(1GEM#CHq'('B$THY,-j[I
+
+*Lair&+a4a-r@1"4b"D3h"P"MC)(GZiHk1Daba+!X$AfcH0l%20MalB)YG%iArM*
+
+2d[CXaDDjcGKj`BQ!BTcU1ac9)8%D@H!6G,Dk#aYpBIE9iMS0ii#[N!#j,Ka1S2d
+
+R9le2c@US[C!!6MQ2"fm['iP800)[h)2FTeHf&Ybqaqlej9A0VZK5'leIUpI0)V(
+
+251SH[rB(H$JiY`if&"ZbhC9j"YDe'XUQ#f$$`Y1#YhXhMV&IMTVYNkNf'#HBSeA
+
+`DjSE+K2H5Y*S3,R+cUrCmNrZ4'GES58-K39++ED-,0PJ&f,48'`Z0d%k&!iA(,B
+
+e`$pV,c!-')l9UHiBbKSPbPi,h)9MENEVHZGCYm`-UlKaYVS,IpV@#k0@+E$&pK&
+
+8%866K6rd(R2"$bJAD&k1S"H+R%'`r(AdNb9UEN#BY36HYR+J`mXL5E&'@QL(rhR
+
+6G4S6&$UCV-+J&qF"5Z(U8Vq`2h,GcEMSLCEpX,rFX``+e26MVh4!I%Q%bL"ripA
+
+$aM+1EJ&BA',LlN@X"CLhm!(,S#B4,qlRbZ1kBJ!S`i,&hGqc"AiENm[,pVH%Fr(
+
+IJLRG,)UP1&*3#aN8rjDE#8)'a6pZT-24F*km-ViQKN'U+0)Zp+F!9P0XpXB%dmN
+
+aGVAHX2JjU*pNU"8Mm#SS@jFbRq6"bq5q**+!@G0q2Zf)5M,(P#(4Q,e&T@Y+eQQ
+
+,IJpbApE`&jN8p2LHR5FHi2U"e(JclH9aJRIcDD*0+42V#H+*ACKjI'jmI[b+6+K
+
+"L'RmdM,XC-I5mbXa88e$mIF4E2*21YZFi!BrA3AmE4qGp6Y6*e3aKDKZ"N`*9rI
+
++')kK'!+0rCSE9)8ahqhE96Fp1jb2VaUq,hGYC-akQhe85-%-e86)8XKNCK@U$Kb
+
+6D-r3HX5+G6f-aLhfZ-*lQTP+QF"FrD%SRSN3,1-4aB"0+APJ5UEpLS4,M5k!K+2
+
+FM92-cM(0+PU)6QDh+XY'#qi0UIdir&Q)EKG-ik1qaqfR+K$+6(U[k!deqhf5M#M
+
+P$FYLD!&8,Kd(-MA%fX&QeIQM(dQ(SVlQ%(%rTJVfeXej$%F1EY"2T@"M6,hD&NM
+
+F)QMN1fPfCdCG3mBR5"PNhIS6&2MEeEDrUiNf4b+QI1Zlq-(V6cF!1[+%YI1c-Tk
+
+qrm[(liGhd%[3CRRjer9@m88GSCbJ"KCNP4jB![a3X`+$if!#Mh2R'IJC(T(*pML
+
+fLDL%6bCq#d5[X6PUaTI$iKR#%SS*HS4XRXL-Q*b+"j+bP*0HAJp-8U&*"'D@Ydr
+
+QhlN0bDJY`AJqK'V$T69pd('N$S$'8rS*f9*G#d%CG-3ZfVPkhYZ)XDC$JBbf!)9
+
+Z"Y'C0,)&cMB9--m6PE,GUIlpa,)i@*`UDARdCFpEPirHbIh%P'clDq&A0rKlG&,
+
+k)iH+1c8f0,d%a&PSU'H*T$,dqRdMILFkPe,0h3f6#AmJIp@R%#j)M(,$%,Z0LCB
+
+kqreaM0X`%mMeMkei1EXqBf[M8I(ZiH-d[N+@XEG"I(62%)eARiEVRkh3@)V[1Um
+
+0r+#pV6,&ePk,'3JN0h[!fFf805rU2XXdhd3'+q#XSZ8MM0Phk#PMk-+[jI`c2eL
+
+de6Nj"YckB4NVb0@Z"2%qc(m1U%3(Saa0T#lJJQm#d,0i9-EVeB45k#2+aTKaF)b
+
+`K8rp`LUk,#ad8h9L@')6aP0%c[hm3p3![48U`MK0Hm0RmT2"m)851UB-lTaME$X
+
+VU8D$fpUF`I2lPAE%216PkY5f%2LR66J')e@Ep1hbRqY*V,@EE#0919(1-di0"qB
+
+%JXcPjpR)9aKYX3MLS%GATh`Xleh)qB"NTQ1YrU3%b`hSk0RFVC4@&846lq+H"3m
+
+aYG)'f2@ZFkFV,P+YeQ[k8MY@(3Z82,!$E4"Ir+)$&9hF`FkH%b&Mf+mAPH$c[A8
+
+LLjG29(#q@G*4L6lja!aG5VZ&(9J5m3Z6V!e9R@S2Y&PQkAS&,k"`K96PB*ZQd-9
+
+@(19+S4VM9!1j5qAlVbb*I$hk33(MSVj"kH'd#8RS5+TThN8bJ!rTEH*`+"CSkJE
+
+BlPd`JH[Ab+jKHamrZ2Gc+lj6*ZNJC+H)"*81QpNEfXGA8S4ZK0mp6cY1JF)%KPE
+
+f)J5"QLI#X3kKf1SkY&3qL0-X-3@b&-[*r3*@(Dl18V'[B6Z&6+iQ2Fa4#$l#U#Y
+
+aVRBDl0hDpcp',R0qG&8-Gap"lT+RQTTS3XZIm,Gf4m)Gmb@jj)++6A8Ad`XENjL
+
+p'I1mY3S)eIYa+$XG6X0d+kJc5dmHmqcP6`Qdk2m+c"G,`0[l"QLVrKiiT&i,!J0
+
+@ESAXCN8cM1HJe)-$E1)PVr4U9U%hRJ8Nb5ARjF,Sk(f[HBh`NM)IpSApNNme[H*
+
+P#c*#r`R(2@4M6H#%SjP`,0U@c+T6K%k6pV'dFP48PT!!9lpV&RRUb+G'YDq$&(&
+
+GPiEI9&R`TC-ER2,AbqK5S,b3!'lM1H8dSS[JLq!'@9$mR33E)hQ&#`YNLmhQI8m
+
+K)-pSBSGP'Mc9!k4`pCPA0,4Eq!Uk,,@#fE5#LfQ,I5HN92#m%S,UL@hfdp8`+9`
+
+H&UGD#K0H(CqPALSIkD2j5M1rPI)q@HGGV1(CRb3kl,$0,hHU(VmqmSf'0EeRUH`
+
+bl!hNc$YEbB64lqA4G!e%I2HEf#jeYLIFr((I-J@FRJp*40QpY-j,ck)e)Mi1#FN
+
+[9(ENq$SS+-m&mGd@1S88E$`1H)M`ZY5,ICUPEF@Rid5ce@#'h5$RV!XTr8BVQI$
+
+##iJMXQL-(*TbRcCBd"CPF"[&K"D`Q+@)jM3h'CCrcA$kM%X4`[a92SFkQI5,SiL
+
+q)FLbM[8V'"J!d`,Q&bh-[+`cG43$HPQBCBTk342kHJINDIIe%rQdN!#GE3r#iIl
+
+2SMFkKQVe9HEeUVGbX1*Q+XceHVIqQHjJ-l1qT![HT'MmNdBLr1UJ+kFlkRc[[+l
+
+Sm9*kP)qT5GU%eX9GZB*j%Nl#[[Df2T&(-"43Ec4mB'%"V#kL0FXJlHhS1S6D9Bi
+
+%hPm-3)jP1aF`M6Q%9pXDVY('%r5mjl(TIH-F"$ZIIRj5BaNVSCXR88bLZfXj8SS
+
+bSmTHEhbU%(%3@llSH3V"mLK1r@9IMPRj"5lH)[H95Y2%$0RfBN$bBr-FV8)%l2`
+
+8XCE)H14Z8jHCrLSq'(EX9@*IibieZ)ErN!!be'(BdihEiFNlD-p4%Ijr@K1XhHP
+
+*KTIYEqRBiYr)cVT2j"lCJ*Ld*+SKcDSP`FC&bJp`N9hL)Zl'e'!a$pZR6"6JNVi
+
+Q"Ye51+LRiXhh*NBq5T%*dace&jZbA&+P(!RXN!"qdKKbHQXk*#3TG!,@G%SC*[[
+
+E2&,Cb6HSM)"U[&rYS8jIVCTXXZ6DA1Hr[k[2[Tm+A[$Ql*TfXja*$m8pmUFqG"j
+
+f#9cF%"@1ep0mp6qpf0+D$b`(crpLZT!!dmIk5GG4`kU#*VTV8PeEIR88@@fP-KT
+
+9ED-bXX[8hZ,@Hr0XACHb!NUEEqiJEMJKdL+F2A'pIDL*XY[q3-E@VQrlh0AGmUe
+
+kaE6Rj(+BI4R[-3+CZ,,+T4@bRVma*VY!&P952I,EjJi,[m(LN!!lJ@rUPfEE+#,
+
+8*KDL"l1"a(d`$()`Qrj(6)*e*HR9LE!al#E*$IV8$Dl,B'brNI&&r4hh#VNhhEA
+
+A&UC2,`pqQ`p,EqZ1dTKqlefQQQ18MI3@%ZUFS66GIX($mdIAH[+&VeGZ6,@6Q90
+
+k&L,c&lp1j3VE6`3%!bFl6VjhqQND5Em4aYRqc"!4PN"`3Nq(HN0,+G8P8$1Gr1a
+
+Pdp$NPReBiVZq,&,pDI,p-BSjB5YDJ5VqYS2+BRX+9(Sa1@YGQc4C"RC#NJk($*c
+
+c&IETblHIP+qd%mqfTY,,["F+LE5)(r1P9339Qc4LfcM*SZZM,#'FLE",ZHT3Udr
+
+49E2dL6425@cH1""D)&LG-b&VTNlEGR[3iIYc5jSDaVD9S(@hb2HAjSiKaPj"jjC
+
+Nr9"$Ic($dBDcef%cB,[DJ89h"G#9*9#YdZeRak12Cb2E0+`[4lDGY`pL-#'(Rje
+
+j*eZh"H4ILCARaF0[RaRlbq&mFUUMBahc#BqQfMQT$R'jZMP6KJJb`hr11VUJ+c9
+
++RD4E2i"UdpGdhUSk''4iJR4hqKi8fDECj8MNaqj9rSL'lH-FbkmN11Y4[eZe`,k
+
+41"hdF2Lp3[*arBUYCH"$hHlY(ZfGffEDZr,,aMhQFpr22Si0c6!DLhG[meIApp-
+
+4qYfD3hmX2Nc"Xp#KMG4eDNXi833il4R-L5Li*K12C[4JHISF#YAM3T'(G202-[Q
+
+%2IIM(*p6QI2Ce!C'8`MU8*DSZScVATR1kLe#*$@3!")CFhDd8El155kD,RiJ)d'
+
+4ZXrj`"lmI+4mDa9-Hamhme(JpAj8Gb*MYi8Gf're@f21%ZSFD`#00Uaf@M`cTc2
+
+Z4HF84#'pCfV,ciIF2`jK@jYf[rXR'S1)[Mk529,58CqX9ICCM%(q-%lE0U9bH@6
+
+S5ZKhl`VVk(GGA+Uf,&8i'9bmGMceLY`*N!",4AKlP-E%+4D"CF(%1rX'@[`a%'G
+
+1EEViYEjQ#[bB3!'kEer*Ri!Z62HS&b)DTecIUKF2cDE"M&&EN!!9hXd#"Fh99Pl
+
+&bMhNeCH,"UAS'ml(amaNH6,q'9jPHS)X1#Ih562fh8c,pfmi$2YD25)e"F[E!58
+
+PP0SCLXT)*dMc3CFJZGp%8%8A0HJPYpJ3)E40C)0B3#lFB*ZQ)8(Q&FBXXdQ-L+S
+
+riPdYVcQj[hXq*3KSq4%`9m@RQd#VqkBQNN$'kaGGPUb+XAdpFrd#eTPNYJJM*-*
+
+&*dJ!ZkSpaiS(B`**LaBKa`X9ZjIbD80pc1@Mq9HRS1hZ[-!2+L!Bb+e0Nm+UX-i
+
+&6SeIFc[F9VeMi'Kj[+S,qdpI2p#iZVR'&5q9`8rmS"5Edb[[DUV%TiP5G3IAAPM
+
+#l0f!8XNQqD3)YdAmhSKHe'GfK8j,j)h4@PD+`lIm`*UG(iRK44GrG0!#M$6F06)
+
+[LFH)iH3+lb4NJMX8Eq-CkF`b&4@l9[c4mQC4$P1A2#G(T3%FJTi[Zb@EA2IM$rm
+
+KK%"L'&DqF*CF3Eqe3pAK)G'2ZLI"Dq+,JSfjT+[EXcdk&mi`jQ'8m(NQ!'+aqDl
+
+T&mm3eDp'hfa`a9!P@X*T,Ta,RC!!51K'4HG!%+Qep5'9SH)004*GF8Nl`CeGi'a
+
+RXP)))%E"VNeXJj5VCAA@%HBp%DT2F3fFl##b36'N![CN$NFf-(VlL-*Ia'cK*Ic
+
+Xlbj9"2Qd@2-QDMYe$R`DAlJcik)8RfiflX+4Bl$cdkl5pRpK6hCYYM$hV#'$Xqm
+
+8lrYp8V-3D&rVBIBrdL1&Sb[Kfm9CLLTXX1QA1B''Q1(piIc**(Ck+3E@`R&p`K@
+
+NdL@C0QjMJHJ`j`MZ33@a5B,)qXQ4HYp34C43cJJdN!!L8fJ'EU6j5TbqSNMkV#'
+
+`4GN`mF((lke02(J%aP@ff"ZZ6@Z''(SNHhARA80mqc+F3a,(@#3aQ@&CY%A(,Mq
+
+HBG8VebR@SBR-F+e,Mr'F#Ucmi@QTc&JN8lVjr4S%QD@mm!LV9`8LJJ9#beNeK#4
+
+8T8Nd-mlMddp*d)hmp,LpAeejhJ+c@pU)ZN0jXUXSdL)B'M-p"lF,@Tqbb%IKppY
+
+amF08Cc%SjV(+$BA(c3DD@85S0"1CB%eiS('aa9!$8H0jKQhL6A3CIC!!$[e8,m2
+
+4hP4UZ&!B@86VZ-cU(9a6bjaCUaUq9416%5U9DC1kT*[9C%9rS13efBaq['G'T39
+
+f36a6+X@QYT@rdFR!rKGr[8[DGp-1Qk!Al3@3!16d!N[`S$H`DVl"q0&I20X@L4"
+
+1-PkFlAMH3-,$pcR,kc#fA%k4%FL4Dh2H4FN3HASF,b,k8)5ENca"Y9mcH`2Na&-
+
+&@5URA,hZP"PQBLY5F5c0h#kP6XNh'@hSZRcHi'cRj63Z,`LJ[Y5i91X2c0i3HZK
+
+H-+lj[rG0BBYld2D$N4kH4*C9VQ5%`(f5De9r)9SLa2Q@h9I06BK"-cCcfSH@2rX
+
+Y1fqNaYhG'$6hMPB3hSa(8U@994LKbmF5L0'cVTKVl,'N8PE[%f[9$PJ*hTB"fGF
+
+!ELKM*!J3S[#$1$'c,fKT@8S4C43K[3V8Gc*QbAYe3@%DA&Jfk6BDj"dP!FNGC8C
+
+K4&CA$FIJ4*T"(`0VUdBMA"1+945N4k0&b5"'9k6Cr)E)1VE2E4"U`**5Df8!Hkk
+
+FECqm[EBPK2I,*-d@'!l@Mm[32URhqa6BK!d"h-#P84PcG&V8C*)CDL4233F8HGb
+
+Sj'(6c'`qXRhN)jI0qN#1N!$I@ZYJLh,GL-lcm3JeA9#b2)qXCNBHXAjL*-@1*lp
+
+68'SU9bbUXi-##[C0j1'R@#+lH(%ldl3R5p9+q,e(Ae$HXqaha#J85FQ&AT'EK"!
+
+ULl"IZ8XHPV%SD-rDpc`8XXEd2J%d+UiZM&)Y`[aFMrR630#f13Thh92he(jb&9&
+
+QUpj%l5-'U*j#KPG4)MIU"Sc+q+8EBGDEB-D1H!S#ZX+5Zj98[TEC(h9IBUm)%mE
+
+QYL9Kq$FjT[")PDrELc''i+NY6'4r*4"'*X9E'MI0k-4E#UF*FHTTZH340#XNDJ"
+
+VUckPSITTrH9d5+81%[H,F)UHVUbMMPmhmX5$mIF2TUXYQK(LKFB2a[Umh9SH3@S
+
+k#jMMqI5,ePhdrPkLlUS6'KqpF!XJ,M&MiM8q-0lfY"e!-@+cZ4)RrAU0k8IpR2l
+
+ekijkGjm+ZI8qKQ@4pQF8(ja1BJ$E+,HJXJXEKkaj"N#Y'diAIpGfAfJrMVNHir2
+
+2Nc(MKE*mrZK6mpPDa*!!Q#@959!3$&!KMCAMFl-i&&iia#(AU@Qh*b-5k1#FD@U
+
+KpGT`DBmY2*8[4!(K*'`4kkD6U#T(DEQ4)d'c`QjTV`qpmdql46q#ib442L"@&VA
+
+i3q9DLFUT45iDL6%CdC&&,%cQRhkiENHBVi5Ki@aD!hKIZ-rTcP1ZYX#Yr"5HTKI
+
+5Z&1Ip`G&FC@1rl[PjrH%1-!)8[989i1qaDi"D53fqLDY[kKhXF$bhlf,GfVUfkQ
+
+Cim4b*pabZ&JbUNJVHqXXZ+FRC@rH%l3daqDiiHZ$Q@fEP)fQB",JKeEb2E9pdjd
+
+fCf'24UMC#i[f8M3bpJU%YHJ3PqUM6)L`8M"530XA%qqFHRMKAEGHT"X-qDE[ZVR
+
+jdVhj)MKjdbfp4(80pPc3!iil&Q%HJRf9HF8H[phbS#@fq[RV"Dm9Dc28Y("lVH)
+
+f14q$@AV0FNhA!VXCE00AhrV+%4q9!qqCm6*b4XQ6fX2llAbhfH1GhReQEN*YZjH
+
+Y5l)9SK"IY*SM["@H-mYI1)H)(-bbD$b"EIPZI8hJia&H)DP62cZX-#)[43AD)k@
+
+F3q`Q$R@'1kHP8Sjc6$H&r)L'aAH4bZYrb02-ZGi!eIV,1LYcTp(`3LPKX+5p5qk
+
+U,A(j)BM0IQ&Y-12`G`p!Ni!NXRiG$Yj[,eNj@q$IJc)fq%iU0,K!NB3Nd!fX4bk
+
+UpGA5A#IN&a4"[iIrqM&6F+m"32GKT[`*rFNQ1cm2EjZchTEc,IA*HE`jG4`VBak
+
+6),"iHVCR0d,$f@[r4rP6*Fid4%+AH[QG#d%jbE3,GZdL#frUXJY+645UkEaIhD&
+
+D!QfDR5baCm@T46e'i1!4MkfXGr&@ehb5Lb[h8)DcJVjT#cHH2-@CY2E"S9PcQH"
+
+"''p+QEbjrC2X0aKAL)6PDVkP23Zl6(BT!P%@LM2(,ATBLV1Ih4p+2)j2*XcFElm
+
+aXc`E3#mjaZb5i`R8(iI3(1e&")pMY)B`Fq-iMP!ek*%Gl+faHY$TAN4lR-AfLG&
+
+P'(%0@`N9XYAFeT&b(-)UXkh'fm-J6V""61$e'L4GHGQ#r1a6R$Q#)L32ISm49e[
+
+BRSV9*dB65,ZU,-1Br!`MQ()8CA)*aDPi5#PD,SQ8b%Z,aM8VAL%Dae-mA"E([bQ
+
+JVK4AqlKfLd)Vf-f+CQXRDQV8&#R`G@ER1V$NA!IKJ`fEa&3!U3kZq%c24+AHjfX
+
+l"CL"SAGX"48DG*h1$&Cd-%`&TipXSVV$)9`r)$aVE"5qdCL#DHG2EZk&Tlf,BQU
+
+lJll[6hrk$SAHB*@Il4*Bm@E3A1Dlqc'#B9K"a35M9*`L3%-fi'Zjc+82f@FKZ5M
+
+FfV@1E!Kb09r+Z5J6,Di'NE)IB#*KB"`S"LL)@e8,!BCjcmm055%ArUf@IMi-&cU
+
+`Kq8I&@GcJ('Pc`*k#3SSi,Ha)G4-p&JXe8Y`#4f@fE4[phB0X!a@cPZGq`F8CeU
+
+)h+M1-#DjP',E#(G"3X#JdP,h84#B-Ym+PlK2djJ92,$%$phjPY3AJQmAS2UlAYV
+
+KYKVF6SAPEEp*0C5V!6aVPrLEET`[a"cV,VlFk3Ae5Q#a+JbZ9%'im3CXjm)Nk`q
+
+8Y4eKNcr*FmZJKCEl!B'mrJ`H[MVrlLHPR55QQ3fP8Hk[AqdEi$U`[5"P`CX1*0H
+
+d2cUr),p(R!9r5a%TU5kM,-+,h20V40!8CE@l4BcVd)cm!!lMVm+$ZP3djPVp0%*
+
+[MTG@%D#Tj5GkkB@j&Em&3KZ6'h+jTq3S[%$J8APKK3%kPQVU*FT2e@Qr1)ahqT-
+
+#T'Tec$fh#cfABRG+aZZ!'[[jaSp",+&5bXCUEV4!ISjNK'!ap3H8,fMYQ$1ek&A
+
+mVqmaem3Lqm,@dMX+N!"6[f)XK-6b-hqBC-T'PH*c%Ve)CMPJdMS8E(r[mkPQP@j
+
+#Q#lMNZ+fMXll[0K2JFUJ86Ui3-$IdTCI%b-$`[Kcp+A4bI6%Ja8B*cR`l9B-U[T
+
+FlBNYf41"Mq-CPPJGPXKa"P63im'YdM9IY6VBGKf8GNf88T9ZD9m,AS"1I#GXdS$
+
+1m')3MIBBE'JZTr'P0hKc54VLNiN'C*Eqjjlkl"1S"'9KiJ4Uj[-RE!ViU5eeZ#)
+
+6*[-JdL6UPYDS[&F%$+F&l#f4[9D`k[UAH$dUJLcp$Y!*d"NRSJ%`RM")*rSd"*0
+
+EK16ZB!VBZa"+iAbV1Cl#r("@FMeiR'5qI9DD5aJDPPY`aE0Jda%,haNN*)[VKXc
+
+96`6L@XJ9R0r83&LT(D1ZQG$'mc%0)"ZBUMGXa9AMSMYQ[5Y*SrNajm`82#B-RmY
+
+EF2Kbq-&M%&K`jX&A&+diAjXb4C)8KTffFipK@*Lq`EXL)(lhTE('(elFVbDbdrd
+
+`#5lJF$c#Lb5ka&BB'kqNjPV!@rCpLI1#0'Q)j0N[i(c-U2*4@I$4re&N2-ii@*`
+
+EC[6)jF1(!V4F&CM$h5+bS3R#bBV(23M"XJ6"fEDRfAJ(e3dcDd8"1HUDK2l'L["
+
+0ffAE*rclE5l5ra$V8Xh5N``A$mrI6R99D+mlUXc$bVS#bhp@eK9BrLqSTr2'P2'
+
+PFASNbXdqEFqT*8X5b#&6m6F`e`b'$Qlh"[kJ+m@U,jFV#c)ErCTI#Sf%49qS(M-
+
+)k1Am9DBmDb*6QhTC5aV@f(KV,8GXRA$[Ir56QlfMiD6TDN8+DiRpaYU[jb,MJV-
+
+JPPbbL2MGYb+q0D1eJZ3EZQ%,h)qljF%Q@8MDKKCd-3jCrk9I2"mCm'0XIpJCRhi
+
+IIb%@621rAl!6qR6'PdMN[5[10mFkJd&fdlG%VVA[MGZH%,+mkXT9CUUQkBSqRGB
+
+LHJkeDAkJpPRYLjYB!)`pC)M3bplET$(a&c[*"Z0GCU0qG4DPkHh8YMA0XF[4a$M
+
+b0dZA[Ti*eHYI!kVZL2%4+F@bAiA#5&9VB3@kLmACLbMFJT&@`I3JjUc[&*A%Y,L
+
+YYD)X![-f%K'6jc$Y3#XFMcLNIRil5EXq!E)Ip"%c1aE41b3c@6IR6HR6l2,mA*'
+
+0FA"K2aj49rRKX+fL**`RA[LMpBbeJcrcmPH(V4VrUDX64h3!BUfeYjiAEl*9'Di
+
+aV&dL6m-m$G,aqZQ'(+qqrKVc`TVA*f'e!V!`DpRQic$jaVP,8%ZM3Y@[(hPFail
+
+61lMV3"20Z,+TADRGh1c,"dpcGfAi3D,lCj1M[)q#hR9'Z,d%3E9Y$'UR9M`K6+G
+
+jbVpH+"U*AUFCE523T&p8+4*"lfM1GVTHUr%%X&jkZBmqI5Nda83lE''``k`-qY4
+
+G-)$"#k0i-l0X4%#'8N`GN!!Z0JJAcp@$cF##i!m50FFD1$JA!&YVU)Q8U3C93BI
+
+R%N2mZAaBjQ(L1pPh%Dj$9'jkI3C14VJ[NYS"drlh@J(ilf!-%CTXUUQ$C2i%*PF
+
+9`f#[HpaaS@l($"%lKEPiaBL)!lEj@m9'MjlPEA-#jAaZ#D+6)L[h0`F5&(+C)+J
+
+9SfU()BHIS[HBFIN!,e02*TrV$m5Z363jkk4*9p&c'G`F9hQ0BQAEU3V"EiNlaeP
+
+B#$rKNIX,jDCP(P6rk$I8[Z!H@A&f1k(--GJR%L962qVaqDJAcZD!TjT`fQ2e3j@
+
+FXPS3c#J'G$(kcZl'#RY#Ge(XqrRNbH#[fd#H6f"EeRUImV!P'`Z5Se`kUrKeM4j
+
+E4e4")+miU(S6Qb"0R+GicDAQ[VGH-QD*M@jcTYXa@qYTNc$+,Ffp,4*T[kaPp9$
+
+UfS,ZlEJ81hY8Q3MS6ND[L,G)Fb'"@*iBkr+$Il+1S#*HXS1XET[hF5Rl0+K,kQ`
+
+)eqVC3l'KRI%XV6ISFbRZBCYA0`IbN!$LE-9e%1MZ$TI2M@`j8N"d'feRDVeV([-
+
+jcAmQZJjaeFqYIHm8BS@TmU5`(64d65[hBNE#E9QANMXN9&0%RT05Tf[@5X1mH-r
+
+T3V1VGEGhq8E5@C!!&"XmfaS4-j5*YXYEr(cLDSfV!cGHrr-Fl0U!f)e3TRaGTS&
+
+K)!c(VEV%a-Qqa-(3d"F(A&8HN!$--RDM6G+S0kmFN!$l+0JfVkmR6XP,ECRq%da
+
+%1K+F*bf9R[T-k`C(Tq)PSQU+DVS+DaR&U,5a$NbZ%rhQb+3B8kiUS4)Jr*faT"4
+
+L@5!p!K"@GSC'Hhi%Ah"HNMCIlC(E25F#0'L$GY+ZGqDKb3TT[T5`YbNcHBkMqF,
+
+J+1#-UKC3eJJMJR9BTT82A*G[$erS95DH+P#2hYJNJ%(N4PSf["-f8Gcf(3RZ@60
+
+fi)5qFp2h)Y*$E,5K(kGmac5d(I1Sdr`jT")G235IT36Kc2Z"L5Dfa$84XK%2lUK
+
+[$kAj1JGEBq5KEXH[@0@+i+[CH(V4R$P(-AAr`LeXG!N,X@GbN6hMqGMmd!Vba58
+
+hD(ZEc)U3!&-GTEAbVEA*e8NHFL88KlXfHE91S%%K`'rZSCV`bUK-"c4jICfhpE+
+
+H`%*LV@khj8fdM"4jK8Y-cR*5aVZ@9mGLR5AP@J[3C#291a0$'@-E@P,aEPYB$(8
+
+qfD@Vj4$X'BK!@!pp+PBf9hK[@BdX5!jI@)`[QLAlN!"mb$I'61ZLRfRS)F4#PVX
+
+X$hFKlBipGNT*ZV4jVaUh+UYi%hkCd5"(p9Af&ARUCDI[lf,AMjeQ1&Rr(F#Qm1r
+
+%e&dXR'QTGQ[k0rHI24Q&2b#[1rThJmki)liNaL(+*bIRd9!C[58Dk"pp%a0q06$
+
+K'1M6FZTD&&'K2[3USh0IjEDhJZFe)-,cSrccIM&kc%&Fj`eqqS5rDTfC,p-f9#@
+
+4Tk(4r52Vmde6Jfh(8JHqqP#'Pm%"pmAibq0iKJDlc)GYBQm$KU,U`QUD#*pKBQc
+
+j(mY2FlH938P2NkTk()JpV6EI9Hb`c9h0Zed2'McmI'blJIhq,aS'ZmR*T'ASHM-
+
+k[4R0B4E'm6jl$SlHV1PT9XpjHhBQ,#bHR(QDDDrZL$,ZZ)4'C,YQ`Ur$'*rD1XR
+
+DFIr8%bDFZNL2Mb'Q191-D0U5kSJY,RbThANQQc-'rNA)mA1FXB0@I*!!A3GmUd,
+
+6,!'5Vdqd!SNb*d+Z-*rcm%Z-f1iSq*5%VKNTC8`%T4q*[!MFfkCS4q)!fl+5HBr
+
+VP%-5d[YMPm*l2iZHF3l2ac3bhH4QK#p@ZM2e9%JVF6qbIMLd4@d[dLZLX#2UJL@
+
+6KM9*'ar(,T+0X*5Ba8[C@ql!)PL&d4VIjIKVK3kIr)3&#3!hp()flG#LV#dR#SK
+
+TAZr#iQlRNZB%9NTZMdbmKeTS&qIm+-j%2$iqS&S3$MqXB+TKp61JJ[2d9A[*j04
+
+dX+BAICRX@P`mY'M#aHTE-halS((1[Uc8P,er#lD***jr0B'hKpAJFV(GZAlF8'E
+
+a-qVH8"#F[#+4Yl4GLEkf,CMq@MCrQlXBeYEcY(UNh8ke!RQ[[R"YI3I&')QDFqf
+
+M,12MSPV9+aiS&%j)M&*J9pA0`hAmGbXGEPIVR&fmG,N[9H0eDcC(#Gmh&ZB@-1j
+
+rq43d+`[S0K5qa4V)qj49F(MJT3FfF%ir+$rfXf%Q8PbXAbqS0p4VJJT6MqjhIDB
+
+-(kXj-#23-8CmKCr4i#lJLl)Q5qUE"p8mDMK8R6d88ZPqhDP3,X('j(J6HZGp)@9
+
++,h24hNqHmcj8EI2MI&dRiL3iPT)+IQ,R`VJb[1ERD40AA"jeZ$9-+5ViiP)q9Xr
+
+359*Af@1`H8H8l2(#2&*hqq961EccfKI+CH[L6dm1Z06dD*8MA`NHH[T[k+)K%$8
+
+rCA[A5JFaba'9bHr2iIGL3emYhAl9Y1`M#4F@-3@E(VfSifPX'QNUEP%hMK`@rXP
+
+)bRhMFA25&K-jcP)9MHEF99JFfkNKG4,!KGX&KSVeB3M+Fdr3'(+iXC!!Mp[R`eQ
+
++MVET-NPmb)J81DcG9#9A+IqADVBc8!Q`M6'hdZ,d2I2p[*K9rpZf,IE"f@q*QVB
+
+UqrHfZVZVBb(X[f)Tqk40@86,KV"U6Q-,@6Nja",b%YRChJi3*ba!T%#if`-,[*c
+
+pQhq1)NKD0'p8J2J1)'6C04cI,aq8PXp1F`4MPI!L"PY9)iRi3b#ji!Rrh%kF'hc
+
+$*r5+Re8361)TS'bq2&Vk1Ua943ZQ"'+jk2MZTH0U1MKC'c3XhhYEk)VhT,(er)6
+
+TT&a0f0JbX6Y!@SXJj4C2I0d@q2"ZVNVrj4H*EY$%1m5q@8SU"VJX%Nj*f&0"SQe
+
+$q-q&rS[&'qM&phH(B!)GL&$@H%`HT'(%TriCZJS,PJD9cpc5I"!bXeB[`46,-k#
+
+l0c1"*P4I0EE!eH@VlGp5VLi,U*GS-XZXG(S2#d)dYHJB8iaaZLI&4EY51e)2HkY
+
+aTi6EDmC8SiF0DM-JfX,hFa`lVT'Im+4*adIGXEIMm&rIMjliDMVm&%3fVZ)mbRq
+
+bl"!FpaYlG4N)Q"h+b`Gp,f(3L@EJ9[p8d(HEi%ADf+cR0f)k9I6#Z`e6[JIcJFk
+
+HZ3aHc&B6dITXX4G3cIQ"EKGR8DHF-riArpbD&()3ZNIFFB0+DF1X3'jY,rP)Qqm
+
+[8bP0C(+$YSIe$"emmJ"mAEUi5MQAX,B@1[1ealdIUAJedIH`'eE5L3'V,k-F2lc
+
+NZfJ$mMiF21)pX,NlRdj`Zq14a!I6X(!Jia9eB2i`Dr4lfbJe,rCmb@PU)ep)F[F
+
+9Cem5f'GYac*0pCD2JG-5D'1jFIMNNQ)9TDFp5k%2Em8K@!m5TS*$,Qc[6MkXSCD
+
+#K`M'RTb4r+EMFT!!fm@q#[-!MNd'jKBA5m!NF2m5U'IjFbeAe9HFSCTA#6PkH,k
+
+cG[!"p`#C[#8$BrPM8-NP"CM0'R5cVkfQGpCXJZbXN!"d6B-YNE25EU"H9f1@HD'
+
+)HpdVL&9`ME@Fb"K6@0i6B5+9QhpAGGQZHJ`U%L++53(ZE8JZC$[4l39&UA9HlqS
+
+k5dHFrNSKa$)FMc[EFVU`C!DaN8rd)Jdp5eBJqQ&Yl%2R"2pC-BB@6UYB"NNeZp&
+
+RJSmHSchV)-lXrQ`#0`4)Ek%U+`P[q,Qip$K(3Y4b6CNBliJ2['6PYZ1!e3dak`M
+
+'KFmc2ifdU!r@Ai1`3!UV`U#)+9GPZ[2Lm(Ul#V&dbB$dARFe$T!!XVqeqULPY!-
+
+adPjSp,bf08Q$+jC#j(4K61frI"5UX6!4T!RU'S2bTQN0,KC)f!YBprN4#f`6qNk
+
+`92m4A3H4Y!b1d8hCR2Ad9#f&p46N"TqH83N$aG,b'j`HeX0@k)IAmXfMM2b1Ae#
+
+"$8Q&TCpi,XFb662"`5(BZD!Xe%RRKQ@CZVGZb"hX!VkkBRNNT`mQGF*i2D5fEqb
+
+NKFC6P0q0+m9kYF3mTm5AeJhP4"2JL,41F1H&+le30H11d-SqFK$VkpeSh3@eS&V
+
+"'Nmaj*'5*qNQP"XP%Z#45%Jd8-5k0Y'ASP8Z-fE2ZAj+S*kka"ZmRU#mcSmMi[P
+
+)MEP-cVM"U"QXB`TilrVTUeHq*Z[*G9MSGViP**qrT1YDd83DUcY!BdK6HAdGfNK
+
+b29"hYQpM,rKc)&'1RVjLCjj[PGZMS6l9GP!jMcQ9MN%`aCP',@d`bI@'KcYh'!R
+
+pN!!mR1KXTCH6![&i[-6lFfEhkVKHmPScYmhijCN%38*[$V',Ja36G@X6VHZ4,p2
+
+k*h(UdpD`eU(jX,,32YV@9kR8Z9SjX*5MFBIRd4I5YVQHr49lK[qdE3*iIBH0pGm
+
+$KBArMELhDi9Y8q$k(edLKAr(UKbhEI,r(5Lm9A[F&PmDSqHfm(((!)'4%Yr9bPQ
+
+PhR"PAJc*,4rQ9l$S("PCa(em3N"[Q)VA8R!%5L%+c+hbjA`U!@26aa#'89QlC6&
+
+9dIJ-$@)6DZY%%F9Cj51IbG2U3TN1h4!+EdZ1RXq1'bpGF9qCk4)3$2GH$QcfP2C
+
+L#h-YEdm1bPh0+CfY2kJ@*ZZLmR&#!@VhSX[0G(j)+ZTS#rVIVA4G%'dq([I,#6N
+
+I`fAl[LFk6[IX$EHA@ffed"[Qp0`p@6U4&&I8daiA3qB)LU[9l*5aLUZkB3S*eEG
+
+X"q32&QQYK5Kcb@F-M3YiELXrki29#(a1$6P-P,lbZ*@pJPe"#IQJJ!kZL4eqV(4
+
+Lh3`9cU')bV8&rD0MI8f(dLh)DIXAQ%2([)0')L*2)CK#l!Ra'2m*`B`R!KK0F@"
+
+HaT!!Hd@NN6P6Y5"j*Fq[,%a"'M3MlIM2290@R'Hq$(8`JYCPbihaBiK4i'6e!@Y
+
+@'QThD$-2CkDZ-qeFhqGHShfl-LpfJk'LfHhKTkTm%FD41hK3,Cl("f%ilX4U3eX
+
+,UH)R4j&be!)R58qa3ffk$9CqZ(X2h+*bq5@IR9c,)+IV5lETpDL3!(k[QGN&'B%
+
+2&l5$UMqG'R+e9@DhcIEL$e(jb3-'eHp39$(UESZXCH*p9kXCUZBkK!,a3&hD@KA
+
+qKX$PemU5f'DpQ!qM0-qlCUH5D'Q[SL%1!TGKha%j$c"1)G"&$BcXK-[e-h%e0)C
+
+8-6hCm)8J$L!KQE(eG)JE6XR"m%"KkL9pK`i`&,-pDD`pam`k)pQ9ArV%ceHdK"*
+
+NeH2pd2*K"APXm1S)&iiKK"2NpC2JD0%#Ber[@mMAkB)f!R3G$kY-((fabl1Y)$j
+
+TlYBP@#DZ!!I1!!rd1XPm4(!-IkQf1BCbGfrTHj4(cf#VYAK#GbiQkM50%eBX6F3
+
+dfA8JM[+Veq%HU$HY#,05B$P#8(-h!hafNQ1+P,5#mPjZ#P#Kr%65")`r8&f)c5S
+
+*5DPQe"mQPFKq+&k'LMj##4P&-2f-+-dmN!"hH@RhkNBTH81GV2VViK'd5$hhCUJ
+
+Ne,36qFerCAL'hHBAQbNR4#EPpUSV4AaISQ[f-+UCMN8!BHmA+Y#kEJmc$SB4JSf
+
++92G&d0AGUNqk2m0XX%VH&0+1"[2j!UHbX1l&"Tb1+'6`cV,[&)XLa!8JmUB%iiF
+
+T0jGkXH'P,6HV!"qHAGjU6MI[K80lYY8(YTUrGQca0kC`p3aDFqV&14'*'16U-9p
+
+Q#4UM#P29c8eQSZ5CLakCPFbhqCifp6XY)F8aU`(#8C5X-XFUIKba8E9#CjY14BP
+
+TAe`b#CK*0%9"rG39(ET"j[QFHZQr1PU-Z00(9hM3"CelUAA@E@m4jU5NYmhdiGX
+
+9bQ-PVm,hX+%Ip+f-0UqIE-9!#5RJHMdFcRLjJ,$TQiV$FVefP(P!,k8S1Bem&-D
+
+*aG(&8H516j0BCXIjj(0"`FAAmHUTJS,PK(3RZA9L9Zrfe04r@Pe(a2ad(pbTC,C
+
+k!'1UT)MB4Ii892*-Xe'mhlkQdkC&K8Xdp6Q)KaM$Bmalb8r4CSiKcp89[%3d9K-
+
+XhI$XhIX4kf4ek[ZHJ*q%F)1D31m+e"LE[HQ4VdUA!rAUdQS@V#p1RPpecM*TFMZ
+
+PA"GLrPKHKS9d4UZKrpJq&0QNFafUH`fA)A-AAB+UIQ(Y9Q@p41"f[jl9#mcKl-p
+
+qZUI%*a4I2!+1b@)0D+FkDrJh9-A&d'!NmF@RFH65c`0$EI8h`MRp@*JURl16BY+
+
+,H&jArEQN,FFe9!Hr'phQUPjJhmrBFdH'bHCG,TG-IKC'XraD+q$heAbr[,be)5)
+
+hUVM"a2`(GC641Ja(AMX(J9)VQXrci&H*i0bbBjPRMeJ#R84eG-kc`*VpPN"FMSC
+
+@46TEFJ@5)qY"GjL'JIe)-4iRcLGjGrmZ!c`XP-RKhAEUV`r$P`qd$(S*@X6"3rE
+
+@LK(Clr2RfkjNM('j+#PBimpf(eaY`S`cbb[b'l0GKeDIN!!6QU5eQbB%%I[mEXP
+
+he-Ik@m4$6#Y$j$hp4bDd(j!!C6!d'!qFQSk`DQP*2m`SD-KS")ID#ec6GabaYRd
+
+[U"fBi)-bLG-r&Aj@00Sk&$M$c-AL$fEX4B+Y"-GTVEDZrX(aE@k4[Sa0&V%0AaT
+
+dD@!GHXp%IMC,$LNpTTpk,(N100)`U"-KCHf#iVXq*93!T6%k`ePbbYSC$#%,UpR
+
+cj)F$(SBa&4[jdRCked[&P4IG&6qp*bpHq@TdL1B[A!fkS9eM*2UY@qe-L18'+6k
+
+cJc*UM,,4"5D(iLY2E#Ui!K#a!JG-P"(%N3d',YFFTCF3A2kRpQjK'[kG4"&95RD
+
+Q%1kLTI@@4G82UdB1pL)dDPY-3CQ$U!-*JXGI!GpNT&1rpDDFKJdYR&hZDJG2Y`C
+
+m(p*SB`qHBB*hK1BrTdIRlieXYf4%(X4(*f-"F`!Thf!m05$k4(ZmQ*T**NaH,Y@
+
+5S'$QD9ThH86jU!GaA*["GaB*-hZqfjL$#c-R'pSXb&KJ3X0h8)"[l[bce&3L!26
+
+63JU)*I1-LM'99+Yc2-%4`kjG,BF'CcKPRPJ!SDmN4`@j)mU5,EdUAd,X+r4TT2r
+
+TIpS6V0pPaCRl0hYL(0QSLi8pS919!F[)Z$h"*#-GHf*$HSrMUK6'-(pKG0@3!(`
+
+phH@8Ua-CNAq"GQBpN3!%L8Q"''QZH"51LLPi)$@b"!`T,J,183k+f8e#@5f#$1G
+
+YF"QSl!I+)TDYmHXC$[YdXmZ9r!G2Mch#Zc'bHE+)rILI[SpqDpkE(@S(a8N6[F6
+
+2RreGcUIA#KVh$%f*(lKR24B1("K,LQjAJRR[Mp"H65`Fk+cANaaq($H0ib0Mq6h
+
+k-!T6Md9p)GCk1CGb1)PH,,ZS!6aIZ[hkGAlb)Ta5l8$),2cC%d'CFE6HVKKc235
+
+k*j5qTCXLK*)a"J-LpB5IXC@8p)ZD@k[c&K%'d[@MFKq!!D*RrbVVmV#dBb#lhI[
+
+drD!(aBK#[f6,dVbL4h1da3l!h3%49iV,kBPU59FE%Hkp@R)H'4FU+PQTIr1$2MN
+
+S,JQ49m3#'QA@ZeG3*Z[!Q`,%ddTfNFHT1E#+dEJL`b"Y#EprQ*bU4mD"RN-V&LG
+
+68(QHLapBU[j-pYacKHhe[SipPja!ibd3[4YfH98`pGXHaBYPU`MXU(2k"'dFG-r
+
+fEBkZP0RD$#Ii0$E,%l26IB2BSYXUIPFT8M8jF$M6GkaL[(kemCieVirD[#FT9FA
+
+5"3%r@4BAd3G&A-Hk0TlP0bPC"')JTE"Y$$*--)AfUFEAahUqFiI6Be51#,4Z3aL
+
+CPRD0eRTQpcMlPaL""fX3GfT5,P[#0AqA2Cp@hRIZFN[a%peSZCFVc,qf6Lhd3[,
+
+HM0jiKUdUcDYjq$'UQ(f,Ch60DPN[0ITadp+fh-JeNilVPd282UH)@'*9YeV6VkF
+
+'TLVZHU(+$3VC4NJX-a`GN!$86+pYJAPUVF5aXl'NDYNMI5`6R(32MJ%Klpe8jj!
+
+!N!$cj,NGI3Y'")'I1L@5Y6U&eNVmhN-PUU3IdH[-+jSrM-kLNHhbqlJQVRC-AZ1
+
+'BDhj0'T0TK!%F9)`YBmb)*Cc+0)*0"Sa0dBUYH6B5c8mZ9GDSpYEVaVVd)*["@e
+
+Q9+BI(MEQdiTpfE9`eZ)GJ3Ml"+PXbQVKka3S2e"C#N8Y6Hhb[@GF!*i9JIlEf[H
+
+%)q,S%"jbI4-`j9AbE2B-BdqL,2[icb(UGG4893QR4GN0,15FTj(,5LeHCmSp+KP
+
+K*2c-UeG8e-q'iI3PK3SCH3d0PR(mkmf,&&BZ-KmT)jPIfMc&0'K)mSpLZ#@#,ZH
+
+GZEUqjFH93BL+1V!h5T09@DfTCmFdE&qi4ba!9Gk[l')DkZd$`ihAU0b0d`Yp1FL
+
+2SC!!VI9bIk3(e8[SGeDPAT'2XUTCPN&aCNcPre5'*VT@@&eMqKR`q!8RDl[H6QH
+
+PYB3*"`q&G+AS9h40HS0B`SPK6LePTiA6K[X,efMY&bD'qZ)6f9d$Yp4!d$lYYHF
+
+DaQkreV9G"U5q&YN[l'QiA0)Ej#pj3lJEmcKV4E2DK#LLSra3"JV34T+B$1r%*Ur
+
+1@Pp@+EiRj%)Qb$aCq5kImiCcI&GYGDlX'$IHiQ&cR)1[$*Z0C#CPSPpDUjkUe-&
+
+SZaG5B(,BeTV--64kNS5)C+)*YNBaKCHC&L`+STKE9KUVrZc+4+k"PD4bMD[J9ea
+
++ejX2`M$,aLBq5d-qXH&jc2%V914D96)r0*Sfr$bk6%`jZkLQMSKhI'B`44hT0,R
+
+QVIiKGJl&jG3X9PIf[,j+'85QAE42bj+ibVeGmIA*Z#56@+YY"B`M'q#4KV+M@If
+
+KNE2@b`dYR"Gjr@XH*p#5q(dCXD#1418p%G4D'A#bU(XjVZBPDbp(843K3DrTclp
+
+kBUQ'@i3l1pi58ZaaP#)iT4bc$9hE+62bKAG3I!UY0%5'ajlQ84Mh2!4eQhjm(,A
+
+ZK4*@C'GXlmU4m+kZji4#i)G65&5BKA5UPd)X6rak0lhR2VHhjrXXL,ibD%B1NAS
+
+DTYBd)J@CqZ&%MIVU-Y+T48C00k90Hji%MKLfRhPdMp$RPd&VairaXV$eqif%Fc[
+
+R5l-%jGI0938A-$)YPDlSl#R%%l920e&kUiJHEXNFE,irUFf#LN34GrcI-qejc#Z
+
+-%kYm-"&E56C#d#l#N!"8`#I"@l["Ae3TR@hb*GMXXEVp2l@U&TC3`FNl`hfr3q#
+
+bNdQR&r$"HKq'AbBCa`ca[D![8"lYB0PFj+),6I!28p0hf0NF[5G)4@e`kRr*ebe
+
+8C"M3f`Sf$XkbqQ5'drq$[&YNqi+*K39"19LTYeCi-DjmjP6dp69U3apZURbLi'h
+
+p2)YFGAP+4GrV#Bc2dk0R"#R#I0#ikNDpD1Uq($pVQ$"S!G*ec4`*J+(NfRl&F#+
+
+D*1LPPB++*G"3ZVfYjX5RAmK*YG64DcC66f%QJD8Vfa$9iddT8X!b8#Y5ZLI[lVC
+
+lCN"TL#qJ(i'[PqI"aX+VM`0&45mN1F2MU[VKff%R)VRm(Mr*PjmTAQ&d$(F@f*E
+
+YT0DPU"Q1,[c"pCQ48b@1Fp-G0b@ZAf'$TGF)l@K'kPZR&,)0Y,#bfqdqMRkS&Dj
+
+MlVd@XXk1QXLTS"Lr,5+CDNG6XJS5kLRYi)cc'`[Gl*,pC99rE66"pEMfAEA4jka
+
+%H#4p!mFA"lr(cqrlS$!#F`#qZeXEJEek`GeS)fh2)ah)M6Q%EV3r%l[Eb(&LDi,
+
+4CCPHpH&p2KMN&b'G8UeiEFV`#4[)8I$Pj%,Y!fHl3bP4(`GGkHLPl6f-%cC"Cje
+
+8CKE*l`mba,U6rNl3%kG`l,3NP`pmr(dl%kF`5iChmF`r4rR5kAiNEVFa0[F'elA
+
+"Y0bAMeeQ&@r*H$VKFkAeD-CTAk'PBd!0H1b0[)Hb9V*6UC'&"Rq'NM+"$!6h(l%
+
+Ulm@3!-eT9ilaYZQ@)ALEeeR*EMKmKp6UGQ6j6`FPJ#A#f,Pr1pA9S#5fDi#$)KR
+
+FDJj+9"CEq,2P[K2`q+dZ@ha,(%1fC4f"ch4I4lGF9C`0CpC&XDQaNBRJb,!%Jii
+
+5d))M%20FTj`NB&4T3YlKLh96a&*(jQaUK3JS8hDqdq&!%*Tjbq`X8-M,#D[+E4k
+
+qY6mSP4`THC!!(K8H'A6e2$`p#a*E(LGNTQ`4qrDd#EPB(LMTI0qXDmNi1DD[B%p
+
+0RA(fZPY!d%d24#jfPC8p+ID49DbT0Zcd1YYBM(0m[3C5%hll'V2qH8IDF"X`3f`
+
+E9CQr@Hhhk@TK$Drl8r,Db"ErFLEF3rTCqefaDN[kfCXli8IDiZ`*-lI@KpVVfZI
+
+D%!-RYdhkrLBj6BAfPq1&DrSP3I$9-Ek0lVEheke#(aX29JE9!(Km)T2VmTBhX&!
+
+T&!)['%2F"1@jia$m&MV18J5@HY"HU!mH&Cf(",bV@JH92klJ5Cd'XTNd#PT"HLQ
+
+JAR6LYQfeDjhUaCJAj(`4'1!r1TLqi2Rp[13alVcJYc!6pp#)`BMC(kFP*a+-iBD
+
+ZHUjAqba&)8@LC`+4H@&rV[jCTDbG5SZ[fV$[lRAK'Ki"34FDY'#,ceR*+$,&T5m
+
+aiZ#'%!&K0DTm!McjY1AKG"ZdZG9QK'""5H)-AQ'jPM2e#@G9Da51M8UD#1-E&&[
+
+"`KH'$1ZK3BMRLR!G&fY*pZf6YbE#%m8dPR++clI#9@5G+F',GLA1-Q$k1h05JBI
+
+KIKmC*G!qSi%Am66q()d4da9mH4)G)&2+aFXM&$kG9RhVCrS%hXLEf,jH'i(0YD!
+
+%@h[k93$f+0R2@#4`A`6)l[DCU5MCkh1Z+)P+51eCm%Lr6(hU6rUKYCA&Ke1X%4f
+
+Sf9r0h3ERGkJG(jTNH+#0@PrG6NE1qqHYY8*195"UaC232h'e@Y#Xjie$(MQmd+S
+
+kQjjj["4qFEBeCeCfX9hiH5AZJaEXK[8-fFpE5hVM!UD`T$'YVQ`K6pIbNp8)j&*
+
+QVIDHB)5KbRPfXQ%rJSM3Td@,30hp68+q9PN@e2K43SNXZIp13(iAC"[5r9G4eUr
+
+Q-iZQ5PUcZb-'0LLFCXca,c-d2!rND%YH*'DYA`KpFS@E8f`PjU21NaqRej6+PSA
+
++JJCI+1)UXJQ`,f"FIRk[VB,'`83C'`"rR+1Xc+HGN3&&(6j(ISE8%D0*i#lfHX#
+
+R+%i+L+,NXi63DK-hPEXDpHRT$SQ@('+"h,`29KM,4rCN`EF!FHSfET)E!-HEdTQ
+
+ia9$k),[5mBY4dhhLPKir0dp[-%A+qM5#T@6[jVS80SSqJl8%Ji*G[45J2GH()EV
+
+cQ',J4'Jh1&(e3kLZi5#4,I+(9FT$HKK9S3@)9**q$Z$ccFp0*)8,pChbCG#ccK$
+
+h!"$bT4NPf%-*M@YZ-9Q)q6E48"VmCZ3J+DB&1R5S-Ec!DNb$jChb)9"lD#0GC"E
+
+Q(jRI"5DddZN14SjY5+j!FQl3%$5$a&6bEKAJ()%VlSqd"EY'i(8mAjcCBihC0&A
+
+)pJm[`jqcac'62KbaUd0bTHKS6*KUbm+2D-k#BR0r@kUY+,eD(9l-S*!!IAQ*Z@)
+
+L'XG53A+6`NG#[NFM`rUefpkc(kAQaHa%[1K,iFAe4N2pXebl"@ffLmM23[LTeqf
+
+LSVIpJ5XXf@dq-5Faj%#F!Q4lU[3kNhL$mUb4)TDMRpl&q8X0!KeR8%"'5@BKfqA
+
+(ZfmSFZi+PYb)N4%9'r@dP#+p*(f3!%U%pYfhf0fbI@63r+l`KV1h[Ab#rXM%*Gq
+
+a,JbfDUeFFKVAZ6JqVVZT[cihD*!!A51Yf8RZKj)5iKSHCa-aG@IZP,Y`lZMK"Qb
+
+c!9I["9Y-#3`R@,qfC"N22ZC-3"ba3,Z@B&UC1K`1FfA"Ml@INTmHkA%fXaQl1)&
+
+X1jZQF$PRLe&Sqm+,N4-JV5'#a%V2"'*`i8!DV*B4mDiL#AL4U2(UZlC3P0lF,E"
+
+Pi4beBq1!`A'IBEq[[9Bm2a`)hhGFpdc`Df@bkf[U4M["A*4$SNh@iRS``hhCDH-
+
+Qp1mbe(PXE"fcS#$c&b@Gmplm3U(%+Q)`&)-%EaQbr3X[RR"14lY`3E0V-Q9R0jr
+
+#EH6J`ZU'a#LGdF4VdBURLLA5f,DQ'TD&Xi%da@!@ClkRA'Y[a-T4G1pMfb(aQI+
+
+&R#MFYj0D0N1dJ)I-NXm"MJRapBCShaGQ#pCGe(IE+l#D8l3I+Z0#UDl$jE'fN@r
+
+5i1fMTZ+%*'6D+U,`1EhKKBIEqSNZ[bdh&TZm%JXJHmE[CZ$j)!+jr0jc[F4Q[*)
+
+rpAChBXN3E2kjG2I6(Z51ArUYU-`"e)dA51k9P2(CYZ!hl2N"5#rebf4,RbpjdGF
+
+cHl6`LA@Mej+cBZAL6`3L%%IXe`q`*LA*HZhI)rILCpZBk2#IVA8b'+p@IZT5IIr
+
+%f'T`J@dM--0l5iZ`I%2p,QUAm-VP,A1'!++hA&,kE('Qp"&HheZDYCFlmb-U#,6
+
+$9dY,dGfS4eD&DTI`%'-fN!"GX04B0C8bZd6BR[*Ij12f!Q+Kaj+EbrRDZK&P92N
+
+ehp%q#c%H#P36-R,h)!2d`PY5H"GlD$M+e$$)6`TU+3+Lm5[9!prHa(4A(`cVSCX
+
+5[ApC%@epY#`hJ5)jY,BmLDZ`I[ZTIjF1AM!Zq%2)qAl4rcN'#9U$mr#$*aT"Hlh
+
+ZCmNm5(jS6Te2ZpbjQf92ceRRcqJG,E+!Dl'lTXq*E)CD3m)im8lGcHN6NhZ@lp$
+
+'[#8HIlFhr%,-$1rI@2S,r`lYdB@L!eqD'*1fKXp31@&V-'Pr*aMbEq@MCe8`2MT
+
+K0RaL2k&hq#kjQT&4D1f%`[GGqbG6["MfN!#LH3J2idmPl#'90CJEm6AjNLNbAl-
+
+M(YqTF*Kea3j8L,6jeS@ANB,)STJU1HZC$CIcT`Q2ETI*d%qJ)YHI0Tl!22Uc3!+
+
+VffTm3%rapFJ3)B`)2PAEIRP9-GB$Lk)EP$6#F)mM`U0+AE,dB`1$`CRd-*b@Y'b
+
+)8!FG22+UIV6UlqN%2(RfAh4Ql!R2Z8GPhDlZ)VRjpkqCjY0%LULDe@p6efeebFJ
+
+Pp+3@DGmRqQRE,'-2NSKP*P5Lb&1UXG+E2e-U0jJ`#Sc&QLI22l62eK9MT)4JBe"
+
+#C0TED6T@4`468!Jq+JB-',6P4bZ3!$',CQGarBa$rM8SL@@'l1d)Q8EcHEfePU)
+
+d0i6qVGeqr,EpiaL5Y$jFM)ClRMaU'H2$Mrf*+TH`,kE2)AH"kddR1R(Ii[(Q22(
+
+0hj)(BYfqkmJM@Uda)U3e`ccIMEqMVPdXX"ah4b1#ljq[9'((1+X92%IPEfdlbV'
+
+GZNhDfK'XNDr2!QXhrf$-)6hQZVGi#bd)p(VeidZl9kmC9H!(1NN`B5Vi+F%PPqi
+
+mhV23h-PA4jNcErf("Sf55b)!,m!H@9i)#&Al$!'rk89jh#E#FliSFKK-&(5cVjq
+
+kF@-Y[+VQZ!i92V%@2YjAqI&-C2*'4Arl&0AAA*@LAr$%J'[d)AbHEq*9mk-0hbK
+
+@S*YlTGT-qR,ED0V,"m((IU02RN!3hmqA2cJq#H&E&JYYBVJ'`,H@M*,`fqZ#PpI
+
+9IlNVYTPG50Ia,DkY(eN#GIL`i%`h0eqa6@D)Mq3UjX,N3%%0UUS"jNV[9,$lSSX
+
+eF[eJTcDJL(,hcG'pS)FiYEb[Nb8TFI&XU$-hBf%)S("5"ZUUG1J(qRR#,HA[fpV
+
+2PHHirqC&GMF!9SLpb&mKiIN$i3A[rjrlQdQX*rChd-Nl[Vq,rmhZGPhbLHUX#-D
+
+`CB"1)Nm40ifBeD*"BB4X3iBm1Vb-EY5)*+h%,dU$fSJI#$plE4mjK),pVRJ*0JH
+
+k1$ND)D-6MaXY*iqc0jmZPY%93dA)N3%114'@1lJ"VP8hmd+J32$e'm"JeXMVd-[
+
+MLDPF4CD"Z!TI5p`CkI4Q5,&K8'#0V`)GS!0rU(d-p[Ve8qd9UmJL1F-I5#Kb(@l
+
+%Sa"Da11CemD%3i2hbmlpT-K)RcPJKYR'f3S5M*!!0)K0,Z@V+&h[`P,9e&QY"je
+
+R5B+(Rk8!@[6h!BVH@VIF+8qjI2`!2&8bMUqC#X9(PZ@(XNrG"[iY&dbK+Mq`)+D
+
+F4ll2I[PKTXlHi-bAqI8LN!$"H%cbqKXGGL4X@[qDE`e0["BdqDGHk)eAX++3!*3
+
+K&QhBBZ,,q(G`9NY4$ER&bl[RA+P)dZP3F[)`2BZ4GY)2%!`-Be&jRCrEpiiB2P&
+
+Jj6GAhb9bfHbNPfebJ2[0TQim)iqUM9ihHNbiHPaQ6p@29R24pjY)mJc@Mc(NS@$
+
+8CA"QHN[)EN[@c5e`-(d+rELMj3Z[Vm#%'#K)i``DFm2%eM6aP3'krHJU5Ve#P@N
+
+9Yp$6epbYkUS3"CY0chFf!"a2Z+E5%06G$9GjqJ$+PQ5FKDp40a"Ua3!pHr4BkJY
+
+G"AQA)E+%KVQ$8EGrDUc!j)HBTXDL*a&m""P,%Aj&fX$$ISH2SjcAcQ6P@(,HeCP
+
+)AI'cmcU"f68ep2cq`p[$a-2LjYm@6L[2Q6ed-(laJG8LM,TAM@%cENp@5[M#68B
+
+3[%GD5N!blj!!EQIYi,pIKk95*'FZl8K,XMNE0i+!IL4&VB,",5[Zr08akVEbF02
+
+PF18Z"I@VN!$`VT1EJGdXEA0RHaJHHq1Vl,H[pBpkkT3Pm6aMX1k)1Iaj2RHq-r4
+
+)brAVhAF,"f`C"#NeSeBa2E)STZ$D2R(UcaELA[("bZBqUdK#2NQVVV9(+LIiXd*
+
+IjS8aGhj3%+%0%+f(0QhZK&[T[RF5[IJdmV"(8ljHhi@a)Ici['EL8EBG9,b%!3!
+
+6E$13!2T2LF#E8i+j"Lar4BlrT8&RCMF#L5!"0XBP3T(M2aXeLacrrd%JrZ[r,`M
+
+%p`5e&H9P&iR*9%-PBLAq*N'mj@XEVSUS6*389i5YFD%4a-iJeIlJIYM3`A,dF03
+
+qpP*d"mBc9RX!aVr6&Ak@MDMX2bC5AK3pbE$qHl&ENH0rbG!38Th)F16NJ%f1A03
+
+'8Z6mlcD3!!eTqXVN'MM$k&ffXS[@m"Me43hVB[*,Y&R(RBh`4HD3!'0LXS1h8US
+
+&V@DTm81)kbDJ$j!!8dlL)@ESk$fKV0UQ#JTIUY-VUb1[[U-`[i(jJD*2mVTBm%d
+
+HZr*RBFf#Z&J8ZrJG!MSR5*-aRM$HThTDQJ9@Xqd0+!kr#,Fd2q+E6qia-&r[Va,
+
+YIJ3PTM(K!j,FrDC#mG2eahaebCbVkf*,Ck8HlAK+fAecbGfaNdLk0QIa(V)SA)2
+
+[PMh8PSD,Ne69rUb8fSlb%2i8iRaYQ6pbbkCEILaSSfQH"iGh2N6Gm8IfM#Arb(#
+
+X#KKQ#KkQ@PJkD6YF1!NLLqaN-,rmHD&9NM!$aaa[hJQIMDe-P*2cmAXI1IdmY@p
+
+1GMI2'q,Ddrl6-83Vicf%RV#5MQDkC(QNYS"KE3)-%K6dP$+-ckd,Z(feGNRm62P
+
+hq(`6*L@CD*YdE(BcrG!ebdF#2*4eH%q5FPVIfjX4`BQ6#RA$$Zk2F&kqhVddr*a
+
+&+C92dh([(BRN4@H#)SAL3C3bp6qMV8H$UXcGTYJ*GDHPFljiqV*r6B14-[3DbIV
+
+#'9Da15lTBL9DC-24m[8"ZZXZ-H20Y1iZcH6f`G,SFreB%HKP'6Zmj`qSeeLNl!9
+
+TrpZKM5PH9#-')4qFIC1Vd,0!8NH5CiaPN!#F$J%@M*f`0T3!3JllE39p6iMi`ql
+
+L%E5#TZfqp1q*Xad,0@NVLH&PfJBN$b'YmTRF+0'T36d3q@eT*V3i1V'Jedj9UYC
+
+"cKGD-G3"NM%qNPK&0Q6-eL'RbLF*K4b+r)!!6PNfa(IEPm15a8Y+f3,ZGmiC$%!
+
+1GlK3)V&"EkBkVV"'B+fUR()D!!cZ3b&'mP8HE$`dXJ(N*bDejNLb(lb5Rb%%"1U
+
+Z+M3mH*-jd46lZ"UdT1q3!%AV-6J4Lj!!Nmh''PJ&IFh5ENNM2,p49PGIQ`8`j#!
+
+AX%K-#1)CkU9(K[#iiN"Ye1TQQ(`TFpf'q)kkLj!!f(,&B[rmB%"-UJe#NDK)mIe
+
+$2If`A58FbcUP!TNBQFl6Kca*(G"m,8hMl53mP5*BM4mSG!5LG9r3e8P5$2@Z`GT
+
+"dpe@UPCLG&L5B"10j*VFr2Q%m5b,VMZ8`T5''P$P1%+ZS9&R8FhSd-*r0A(BVkp
+
+a%$&j5qiG6)X)EkfiR1*9X9A*Tj)YV2,U4DLa"9)Q-RjXp'lh(J2,R`qk`-r&3"5
+
+kK@A-+"F-YCZ9@[j9K3ZUY3k@BU,!%lCp@LpalJp&(XA)&*VL)E6K'B+A42i0Lbi
+
+bZe9&Yd@R3#B)0eL'VLDZZBEQ%fMj@lDNhJeQJ0Yb2XE9Jr%-8LMj'lF(b,5d[Fq
+
+kBKKE,-JdTRJTKjGeJ5UZT"l81-HCV,r18)bZkmeH-AI!mlj)p!p'ILPh1S&H)JB
+
+R,mI!&bcp(m6AJr96EajPXHZVder6'c$'[N#!Pm2-ipSCEm!I8rl#N!#cS@LN'BD
+
+lmjXmhD-a2e8YPPVIk-9d0PLXJ&PZA3P'LYPK%iM6[K%Y*9[0&(,Lq9aLBHj$j`6
+
+P$"9)Yi,,ZMHMciI8!rl$c'*4&D8PN!!PA2$dq08Hl9dM@Skf),'f`'XZ&,qRN`8
+
+d'eMLmQX"a6G&[dbZd")TXaEj2-4BUa6&+4TSS0b4a1)q'%-B%EZbb'UZ`VXYG,K
+
+4Q(912h+)H+d12@IPeB9eJ1ZpV0j0&k#%%m*fSbUe1T'8M!D-*[1KdNhMLP-@5`c
+
+BNq[N)cp9m(c)0Hd!kcUJbq-lTlG!a*@F[Qir'Y!9'QGpHK56Z19@@bp5Y`!aNVB
+
+Gej!!aZeqm-fV8SSbeME4M$c24Qhm[$T"GC!!-#)V`b,jY6fR%+HFNef+DdFAK(R
+
+jqUTVkDFTbJ1S#6bZ2D229&q5[PRE1YL5`9apqAKf'BNja6L0S5FkHD9dNjc(C,A
+
+Z+"#FrXj6d5p2hLFe2eIKY8,ckH`emd*i[JdKkjiAh0(GTNP"NTKbH*Y4P,`$L$,
+
+2Z`+RH5V$[C&![1G'lHT(UR`N1G804(TKq'0VdaE2b![[KcUAZ[A-kDppdJb[+Mh
+
+I`GR'AF6q8qkb5'5jkl(brZe8eH6VKZ&!52&ENm2Hha)496R-9ZD-(,ji94eRQ*R
+
++BBHZBVFb'X9k,Aj"P0,DlR!S6hX&bDUG!e`4MTXQ0rQMlI&+V%kC&9P)XfYZS&&
+
+bm4Rp,E`+6P"N0+NL@%b'Fq!M9kD,6qBMlbHd9GN25A00bV(qlm)eKa6*58-BIY-
+
+p*ahG[T[G0)NZ"cPhqPFfmp`Y&$p-lP)Q#G*lSCr896&G2Z2kI[6B6Gl+iLjI&G*
+
+3,*N1q#A9fFcYcqAZrHXLUk%ZdR&L`Ir4h14LD1BY#pY6A@c8e[V$Ka[2VDZIk$i
+
+1jq@IN!!986&pRZ-c#lP6'R"C4C@%@l9Rj60Vb64Zki@pLR#f3eK`Rf*CfB3q6-i
+
+PhS&iiHFSa5E%5ZN'lMaJ98h*'B`['e&M+)j'eXY"@(m*I8`AkLE$"((-%lT)arD
+
+h))L"qXNIhDrQ)mEe&Fa,%PNk#PAQ9MEZLBd*ePX0[*bU5%bS"!ff3$-qmU[UKqf
+
+C,i4TkkGTHD9Ib%8iPF[3Y"K`66repkd(UEqHcN#&b"A8H2Gmp[m!1N0!Md%YX2S
+
+Y*Gq("#BbGL+b@,j3@#Zr#Z&`m`hTjA2NMAMT5l2I1F-eP#KiD3fYqJ,(@Q+U$%h
+
+[6122E5(G@ZPlGT!!iL,*EHNG49beXZ#1%5#Ikc0Fr!SaeHRdr'X1#F1Ri9'U2Z3
+
+RPDQfFUb[k23ZjaC6dhP9hY%Kek@F',Df&Xd'0#DAR5QclQd+UUHITFpS5a'BbB1
+
+S9k5&*DibGD2XMa9&,rBA"4$Ybjjpi&483%(G*)Y04E2Z0h*jbikj3$TmXjYJ-fT
+
+5rmj"Ae@09r9$Z8S$AP2$q9k6C6am&Qh"Za20c*EqJKC0`1YSEqGBZ9#Rk,ViIRp
+
+qkXkDYPR2M'f-jG1[U'1h(dPXp$6A!DV,KY2d!63cZ`D((d84bf-6%hiYIfXTHE(
+
+TpHeF9"9aXeUCG"eLHdGZ#Pp3q4UMdNG*c'*`@aVYBP$FQ!jAE-I1B93a*"Y%&$-
+
+QhTH'eE"V&d+$JT!!aC91`IAKBLbFR'"-Sq,c3N&12XJ*M(YhHRiNAI&,c*N2j`F
+
+T4eIcGSeiZ$K[Cf`TSr(!6bG"DC9b+U3-NNrI'QI%D%XJdC9Z#-5'qCdhNYTU!`D
+
+X-T-p2PR4[JMMc[U`cMd*cAe1,eH4Fm5pK-85#Q[r2KeK5q$f61f1k$`'Pcdb@Pk
+
+k*q2J&F"-Bce2NqbIN!!89NdemlJT[DIV1'[G#Qp@QFRqhD"@#GGrRp+Z0b&R-ZK
+
+Ne6r`C#9Mh*qi(l91@Z@N8)-1-98fhqU5c8Y4Di2d-QMajmP#@V)k&$F(VX#b-$A
+
+aem(5BK9i8YZp2'jVjDrF4)RIp+3-5@@MB$,'CrIjQ#4SS[U,JKITqXKXQ'5a![3
+
+PbiLFV'@TCE&P10emBP5+9c(V5ED4T12X-G+-2Te)RlmLUf5TP,X(-I[&IHc%a3&
+
+p)HTDYcB'NhK*+Zd5&f%)pGNXlT*XJJRS&Yi+)lGh8ijp-Ye*2ECE,FbSRDGFh'H
+
+)@9e9be3af!q4Zd4bh!e1rA3X`1c9qMe[Vhl0`1XVB490$pRd'`i9Z,[c*X[6T!2
+
+80h"DVI*C#6bY+URCT6D6ejR4lZ5Aqj'&RqX+2(@CA-@e*R9BAll"aRQF!cX6Gl,
+
+f`#j-f)-RB'Q1MT!!'#4P#eEcdahb3NpY&$E#BQS`5Rd2l&AijX-#"Vik$T*D4fK
+
+8e-8rcBrm58`%'H6(!'UE53dZb&Qcl#SrZRf3!-*YeFGTF0(cSm24HQ,,3LGBQe0
+
+AhK-Z6GDjA1@6,YqX-il"c"kF2[1'`5UK9$rSRpq*MU`@aCTTSikC'S+jeVd[PE+
+
+LqjZh2H,-L4l&451N"303%Rq531kjZ0Nfl$8K([YKY3kkp0P9#Y,F5*R'fK&JNKG
+
+BQ8"K#KDlE@mEF%L+RF$92dX%L9&DKYI@[U&QB+m)e)GD3P@&%9I,l*A3&d1Q24J
+
+0[,0#4kM,c5QTQIZ6i,42-,AKk8m+YGYA-#8[D&9)INiD$eDRlfd5)&(cj'AE$@H
+
+mQ(+fci)3Jbk&-*dFDT0G`m%d8P5YR'!L2MBGpI[akiEjJbbS%6&bkf+%qj03%`m
+
+QDR5M4I*@5Q06,eR6,m!XXhRT-"AqpXA()IaZr'i!b)mMK[DrkfFrcTEKj2ThkS8
+
+Ljrp5!3Rq4lUC9I+NEMBf-THDcqMQAe0HrBJa6(aIbeQQS&#r3aEk,@*,A82-EML
+
+5(#c8BB#8!MPj*T8ZmBF)SUNiZMBCD(Tl3XbAe168FrVE6iiCA,"RaSRhcFK6MJh
+
+H0@H$KbY)cDCd',AS`qrVJ+G0Pr-fM'Xb`elKljYG"51IpVjKMhSIj(54[hqLVkm
+
+IMIBjN4cXj!K(aUK,!VV*lrL@qV6`i6i$ZQT!4ZPM&"[c+'Ch8iiqRY-BCpjk$#F
+
+DG(pI`E)%KQ(pGCPIcDRH4BG"0hHd`E2M3d&RZ1ehk6e5++H2h5Eq!ikjS+0SBA,
+
+&q6qpbYIRmkmiG-&&C(HTSSDK&IP85ee!QS`#kElNqJRT@hZia!ak`Ie5[i[FdQF
+
+%FA-3fCG3Se-V&%fbpJ#G'4V8T5FL[Z!2)#[ZTaZ+N!$MQ&q,mFLKUJriGDCair%
+
+DGQ4A)AU(Z+LJQY!Q,!,,J"fJ`j'EZmMBE&)1&m2Cb-YT9R1"Tc,iND`f@Er3*1)
+
+Ub$AJ1"lVa`iY2dDd`b943RmDC034KMR2rG%URG(6p%eA--'bRCm&)Y'(AaHT0$(
+
+X+,q5B$#81M-[3(,2$El1$MqA&HCMd*NfpP4UlTYpB,c+Pi$lB2Q%ID+T(NPYbP[
+
+R*mT!+c!kY'GF"*H6H%Y#BRNlLEpH*'hYIRp(2-#RYKRj24([GN4KdM!Q+(f6T5C
+
+($Cb*(dP,GGT)8RBSjfIYKi0GAj`LRB#)ap%pN!!RH6MF2&lb#SX[[a$B2JTdKG@
+
+$TiIa!aKU`*qV4',EdiK9L'IRIN(mZUBCX('MBKIKNLhQ5D'6"8q&9ZEA,IYa"Vk
+
++XSVS@G$LCBZ89a[Z9cYIYr,QXT2`4*@GG-ZKGdH6Pj2!crUbaY$FcF'L8$A[dAT
+
+Jeerm)RP"V4Q8@aCU)0e9Qh$i`b3Yp3I&k*ZFd1-J$TT1lf(8iaQbU&m5KD"`-r'
+
+DrcF[k+dF!ah(q"KrSlGm[E)M3iDc,ZqhUDKi`GG*,r`fP6h*I#d6EYE89X[1lp+
+
+23i(%*C-LRR[1AbFMiEU2+H0h6bB$FCa&06`rD0LCjkQc`)'@NG5A)TX(9ljKD!K
+
+hD)h!['QfUZlKV6q[qZGSB$SR'1JZiX&@Ye')T&D(F[6d"Q5l0E[4IHUNQNI"pVb
+
+q$dQKcea"r2B4XALDVi++)`$dh!HLQVTq+2q+%R4H+lbS#a[$2a&5#4@H56[`DhY
+
+2CPlrm1Gch@!9d(c&B+[1pr*m2jhGCPXa+'X)q6eXYE$*,VSq'e1mFI9M,f(f,5d
+
+l0i`fha&A%rE,a['m89Mj5%AU'E0FZEjm'$M1[J9k*%&KTNHmdJ'$3+)kJ"`bJ4`
+
+JB*q)9EheCNSJ['Q-"1q-Rq46md,CfPi*'a3me@NK)K8+Ah8DUXS5b$+[+Zd)aS-
+
+8dMHr@JQP1IEM1k`I#LVPqSe,V6(96Mi3h$&fBRN1lbqc(9bf,3dYB,[I%,JBBfG
+
+H+"Y(mPjLDiXlUI0Gq0`pkcLCl9Mm99fUeqrYBNQNe8N,cG,2Q%!cf5FIN!$YiHA
+
+2D`P9cK*dJ[2l&6@rTI0!IVhh$&H#UZ234FpFHZ@NHmqAem$1XM'Ml3`VHBMS9-V
+
+CXS9XCGmY6XUbTd)*Ar`k"@P4L"(BRk@$`+MHb!%rS1PD*mkMhBFD*D04+l-2GlM
+
+3T*c"[&@09+94%-dhp-LjIle+qNRa80e&ehQ*GQ$FIYR1BC3*6&%rXhmIY"6EqPG
+
+pk-S560,CEN!9)4lG9CL"J&bpQQf,de0Q*Id(r0NUGU""F&Ui5p9keVIFYd,S(`a
+
+'%CKYTfMI%SirG@DNc#A3DRh",XPf6U4(#GLi1b[qr"&`f*[q[NPB*DFBpP$I)i!
+
+`Ud4S9&)64M-2d`5kH#SrU0-"l5Jc#Dr[#SBAG'`cA*MAYMV#eb-p%R"P$L,NH"q
+
+Z@jmBG+8Gl3mXrYK(6'4'm1Xra@V!Tj!!i@$lQpNEP#*hb6"l@D,@4'[ZEiRDUQM
+
+PYhI3LPkMkiJ[LH%RkCid0m'eMP@dSD9d'X9cIqSVHmT99$Blk%G6leN24eC+5iS
+
+8P6M&)bD#S0iP6EI2I!QG5b,5L8)V3',3$ppjU@RNlQlCBFNmDQ!(UqhJEQNTZ-P
+
+lb,r*bmii59*GkIqcKrjXd-)N8GcXblZfYBYQ4Z5-3(MV`4P%PXiFFq-e`L3YAMT
+
+UUdA(jAE-Fp'"MKL+"+bb9EHQPIe2)Q4IPU[$jkZTTH$GC%Gr[&@HG)$*Qdb1aTk
+
+j`EDR+$NkIp1H8i8,9FD2I@a[1e2TR!rY&T9DRV9[9rF)liAM04,[[Tq*pq8!mC)
+
++$A$H&@A%)ldDTVNd-RMK%"r#@facD%eA2r[HfVki'Zaj,UT6b"qX[9`BRIc+@VZ
+
+c16E19Yc1b(Uc+dS[@lJdZJ"MHG#h-qT4F-@Kr5C&4U"$%Br6e),!!p,rK")YLjS
+
+,UR)KI52!M%r"MT!!!"RYl&EmA1KGXi%l5A&"T*rTlF"5%D3rAKZcY[r*L,C$m#4
+
+D(FiFZpDDL!I[H14FlhZ[6FKfV0-NP!%j!9PULDD#1Kr94Rr50#`)5BbNK3%,QfF
+
+lA*!!$NqQFepjTX`Y6eQq0eC!HfZkPkMSFRlU59dCA@mM2VmBp4#18EZPLGMFKf@
+
+-lITL*mQJ+lFh*5Q#YM,fXf%8Qd@AjF#)ih6BTJL+C#q@G9)V6&+FPA@KpZQ6(l0
+
+0+4"PC0@+F&IA24*f%-RdD**mMlqd$e"pRMKI+N+EK([9h0T[ii4)C0QNrEEXVam
+
+4'm4)jUFB[lmR8(f,(Ph85Fe@ZRMc*@,kkJd&qM1J40QrK9qeAcK-jUZjPX8AANY
+
+Il8[H3bm,J'*KP*Eh9`Qj0%,KK99)rK3bpr6"l@-Si5`GcIlBF'eXEXHX"(##QbH
+
+EAHrJX+33*NAC1e&HT4a`&F5ddNS"piSI9B'NHCSJdm@4%9*0T54V%c5$TTJ[#JB
+
+FBkH'Jb"VYcJ#mpT`9Sa48-Zi(GVP&NSpb"pl6RlQ@)XBJFj1804Q&2T"h'I$iR(
+
+*5MZ@F%K'lST*#B-0BX8c1-Ym[+0Q,TD"$MSMR@J9b`a-MT9)E2fB9rA$$2QKH9i
+
+RAEEDaA'("9m4"XEGX@-qLX3S$bHe[3SjiQ--ChZhMJHAEYmiUX*-1#N@R+BAB5'
+
+lb,+F(9H61MkS&K9C8fUI2Lc+@8C%jH$J"h`(alij(dU5I*jYF!%0*eaR4dD+pSE
+
+(k5@&XNkj$bImL!G"Ah2,ZjCfi#3FFN@Va!aK,,&0NHPdY--6U5+!DFaMcRI#+p,
+
+D$Zh!ZFi0`lkM(Y#T3Q$JJ3EKHY4D%Ri@+Z@DIT6krXAZ'qK1P`SPT4cq"V5`F+"
+
+"0bEpI@$dCi'I&,b3!%Z`U6&l#V%@DY'IDp3#4Df3!(iU8RSkT1Mh,RqIX*3&D@[
+
+13N+JL+*P34QK4r(d0`lS-3ND9LVTS1kkCN6dC$rmQ!pbqLN!+ckXG0MkN!!8,fX
+
+B92!&C[(ce-H6q4c4YaH,HZN*Z9m+cKK4pT5&9`DU)!LDAe&SG-KL&M,h'%$@)ik
+
+p9j,hX-Z0)LLM(Lqrcp6EGV#LJ5Y450laTGbkXm[Z0+J"S+Ik""K9TJ*['c"BK!F
+
+-*40)ahER%9i)l3GZiVHpIIIBI0#@0k9J+aJC69X6Rr5bMdT8T1lPT+jfEF5JUY!
+
+AMPi[+e"kN84[')EUVBF$DB[,&FkF)SjY@&JT5r!1r9iJe4Kk[Jhhc9,EQ)qk"NT
+
+YU&NTrY5[XELXX#0(&1[BBD-YGHdcaIfCTkE)p3!PP5VG(*JG!peXPUrME8h61aB
+
+'Sh`TK"+LR#,BJHb[Z`9UBSQ+c@ciQZ'V51be2r)DAkH&pjfQ6UG[0N#D0A'Ai`,
+
+kf%#3!2@'kfHl$LkGLM`5YA3H*$k5iYQN!6@D3mbpiMVDNh!Z,mJY)l,j,f9C&Mr
+
+5J"pHiP6Nkl$j,),hXd`LA8I"I!jXlE#qE$XDf$[h@-9LIYDiaGPZh5`4@12"di%
+
+Lm!YPXc8jKI`U'G*+fMh%@""(-fZacI8Xkk-Icf9'2e!le(4'jR`@mK0L"3IPr5P
+
+%hHE$Se'90KkXbh92')Xi$+a8rkcClHkS3,'djHZAZ)AaSC!!`iG"D#la!'D1YSc
+
+)M%J!b&jF1rcIGE4IcCEKj2jh&-NLerr5)$6968!rXeUHe-mQ,*Alll$8CrmY,(@
+
+E++cF#BGYJ8fH3p,hY1C#AVp)`K3UPQBq4G9#@9408,kQ&5LGMjb&q996FaBUL&`
+
+FX$%e[B6B-VBZJ5#`)5)N3L#,2M!8$PZCT[aAZdZ4CcKjT8flLjY2[q05eiMECI[
+
+FRVRc0f+[Q+)+@YJeVjif@9MGF@,9MDq5lXi`,(p9%D+ZGdEGKfKHRMKei1#,N4p
+
+r%0-@9BG)`BkbFk&1e+,6b-q5UUbNQY2TQ[m`m295,dU[f8[Ifm+L#rrXi*+k("#
+
+cQDKRS'Mi5G%ENRP-B!`p-hJ*9$![MPTqNS5d*Lq-(1VJ&#keI'kN+*qNAPYLSXH
+
+NQ1P!ffZ+XQNffm`EU[BQIfH%U6C#Fi5AcZl&&i%S@ckqiP&X!kZMe"3kNPr+%c8
+
+b-96jEZF,9`#e@3'L52bC'cCdqmX(r@X`jMfJV,KGhDMKeXV3aEd3ie+%CNll'Ii
+
+'('2M`&dpAS[2jTQ*YdEBVLJmh1"M3GeP&dAL6MQmX2rUd4BMYVqIPCr&`BAM6q8
+
+aRlBCH1RDCAa@r4C4,F)[-R[dVKJ8#PL"QVAiC)&%XPBI6,N-4*'a"&*Qe@XJ@*!
+
+!h44k@*0Fq12&mSj@dMY(dk0+Pk-0!Z##lXqQI61rkc$D9FLjeEJ"D%ER,#cGXHU
+
+)*lpcIlVH+VqplL3j&X-SDc2AMaLImrS-Ub[3M3YTmi8iVJ%k3cV+$,H06A[kFM8
+
+K"&UYl,l@0mAB`H$qL-q"dAadiPb[dNSVl,TBNb%lkFM[L(DKbaaqFe!mY%f9FR5
+
+Ve)!Cr,`!j#Ee-c0)$'qkEJ)#8`b)pTP"&KY(eRfR5!k[b+a1rCL+1rhR0FRf6fV
+
+lB,NI%3jcBiC9Mh'0DqBrb89mpB+TeF8P9Nrm[Mp&TPKmS$Lh924TZYpl(jABZUQ
+
+ihi@ffIZd8q-dC#AL$5p`+8k3!+A$ie+NN!$UTb$$)ajQKLHh`S+MmU9pMH`DBQ1
+
+PH%jFS3!k4qlTp"TUTE`RqNV+-X@YrZNXTaZ9BRQEA-AR)VJ`TfA+*2kq,[*G*NR
+
+h)p8*U3k-+D(hR@CIRdp'a8Df`RC-Q+[UeT`SXASG5U("G`#)4B"4jNMR)9A6kM8
+
+5[+SjJ+Il`eQIJ-ZFlki`,1KQ*j8[BC6+MqhN'I9Ue)#4@-iM*khJlmD2*aM$)VY
+
+k5[Z[5"1IVBZhSmAccZ#QAT2bZ#E)r,iQJl+*q&UDi22B)`XPIbriR"RmZC1MD-U
+
+plMK0+m2jZTihl83HiP#(lE$*%CEcbBGEm5-NPR)M*aK"3BCXmBpTdq%LZ3+eLP5
+
+0pL3Ma80Tp2$GZCpIC*GLU933d)d1H'FL6qa!MT-J,+H19aEX2C9rYTF,mKpmeZd
+
+NX8MhLiI1Ni@JSUmUk,d+@&Z4V1&dAh$*)2*G[r`X+m%3Gp&Vk4$2hKR!M$'kb+E
+
+eSrG"E40!i-Si9L@I@fEYeShPapi6`#c(i+[cdbG(G@lc%q4DecfrCkXUL#@qIpT
+
+N&0K-3(APJ82IX*e3f"G)GT@$#ZcHC@&ihECCiCmTULJ1ak@!)5b66jID%H-Clb2
+
+qZ9mM4[!5*4cHS,Nm(+hA6BLJ'99,P`ljGB)q0(lSP%2r8ZM[h5KjEGEq%AP5Jei
+
+(UqeKGQcl'4PCP8#lch'V0`"bDeBNA4bNDh&cUR3UPjD@HBK4P+IbdfcA-ZdKBZG
+
+UVYGS,TXAdYS%UMk$BYE5AFI"Vc!d&-&6GZ@bcp-Ua8j[`a`)rQlPVVqSDN4,,YJ
+
+p4J*&E4Imk[XPqDGac&Gac$1iE,hbm@K#Ah5,'ed#ErHqFKNPJ,RN`$Td9l&[Ur0
+
+mqi(E9kDmN4hd#r"fYiHA9ZU@B1Y"[1A`X2diSNF8[IXCGlVh[6FHl3VUlPh@f6i
+
+Xm*16l8pdm)S,U0Pj)EX2Md'+T$pQGVhD&$l*@J#@f[Af!4i`NjrUpd'eGC[l&@A
+
+EXITZ#%$HkT!!MCLI`BmmZSld)+DbhU),P+k,UCeDkS#3!20I)aX,Qq#3!06fka,
+
+6H3RY10dJ`a'P[a&qE[ZjbUPRaNH+%ea(NF6[C"radE[ipJX$50Rq*"2"6rqC)iU
+
+8(h5C[!432'6@("K-pfRG44ZTV@JPGGS@'Gm[q$HZUrP[Y+*YLHIU*,pM(GHA,$l
+
+Vq"0+ED*%PNY3IhiC$V&Gq('(Q[d0@RDRPq*)J6[pG(aUI+T(dRHcrqpU1iKBjGM
+
+q9T,5h3$DSkZ!fYB4+m2Y8IbrZ$hZ6&0d4*I''DiCL3A,+2b+$-'F-ZZ'l#l3B@#
+
+TbHSZ6YYX#JdlkL5#48D4h`PTCLX+QJHM*f&)FeEd"[I9UrV,20QR,C!!Kd[-Cp&
+
+[DHYZ"fQ%r"ZTM64bR4fi&qrCJ"XZpSa*8PjP[mc*m6-YkS@[U&d(IRB1BjDkG88
+
+DZ+09q+`H9LN%hjibkCJcD%T'Umjq[RNe42Yhfkc(@ZZ)$JIVk+EGGb@rPI'A#'q
+
+Xjk3$V2e[D[`2,VS-IIdH"('60D*re9ID81&UPIrFFQ5Q'0X6PMmm,6'2e@Er'2Y
+
+qd2Ye)JZDGqEBm*PRZ28,Dca8NX*X00Z-1YLpe`Nbhd'Pi(F4YUl1!6p86(MR&)2
+
+h5dFa'iq+i42i899+bLV1(AcKl!(XRBBQZBB1VL`q0DA[PYJ"Ac9aDr9%JJ0`#BF
+
+43P#DJjlc#SdL*!K[ILiN$4'4TM1"4Xd+CCG#jlA[UqcVQm214PSmp$8Fk,@YC(B
+
+`AmR!GFF3ilS#9,c"bj5,qP8L41DpVVjhV,XLRm`&Fc"ABHE%`P)N(U!JQX[4dal
+
+hU4PN'&*CA"'V"PJ1EirQjffZU5Z+&@TfIlQRa`rJ1aCEMSck*X(*dA'pK+ZLIXE
+
+ZD&![QrAj%@VYrBF*Xj!!BT!!5qcNr*1+HEJET1G@1AkBM*Z'J5h&`ZbKE*1-Bh*
+
+&[-Q`63X!2Xf`YVZ%E,-bINFdY!bd8(S"R4V3Va,6$TkE[X0HQ$NS-eG'-(F6'55
+
+FN!"HJEKJf"%D)[EeY9Hf)XR[X-cJb99fDl!T%LQ6fJT-cl1N-SdF"Gj)IcI8q4H
+
+qY$1XjZUd"q)U),4kM-K9[UArdqI8@)DA)@Q3!*-VQM`*p#,jm,A2p3Y(bR4lFT4
+
+J+a&(9`9li&SP!UThD)B,'%,&eG"Hli9e8"(CL%[[qAMPT,B3TicmG"@NiUPIEH"
+
+@0!(aphG[h2l&p)m)QUP08'P#f`kJApiiNjDDPpFUdEkCB9f6*GD@8A'0jYEP8B2
+
+-Q'r5[-16FHr[G4V&LR)4lYdPKBLRkiC*j*b3!1Fp[)Tdm-NAkH1FR2hm1S*I0X8
+
+6!0#d1)E5Le2"Y@a(qI@i*)A4lAUTPN'+MJIN#(`rME*Vk'fm@$1I'+9b(E)BZPA
+
+JR((%041UR9!FGDYYDmSJmpG1[#ZAF2@pmLphUjcKXVA*aKLRa5BY2mR`@X4Qh"3
+
+RCQ3i4SqG2a46mp#dM&4fT'XpI2aK93qj-2LHeP2'bFHf0TG,hjM8'2r&1cTL%qb
+
+8fRIlj`!SI[Y'hJkrc$9+6GJ`T&B'`S*+T8dC@EUT0+TA!4Um5"9-Naap$L*'"FB
+
+QP!&#ADa&-R`Zek!FD'lfC$F'4Eq4j2&Lcld)DK()4r)!F6')Cb,`)6X9pCiY,V3
+
+"hQ(X'8B$DQaCPMU&d+M#UeRiTHqiT3,`'KiINr8!!P%NiI!8d&DYCVVU-iH1jh#
+
+C$c0HD(N9@kKVGbIb2D$$G6*JKfpECHV6Hd4kRpK9)X,4q#lDh8JE+ljEC#+keK,
+
+r2)GepMi3KVj8#0"r4@+HkBXP%HC'194iI)2Y@be83m+%q55@FTG`TMAp`2X!8md
+
+LF'lUSFclJ!Rf55%P4FraDlG,NGM2FpVF0Vi$KqP1Ybd,+#jdA53-e-956GB2RB8
+
+K*`MK4kXT2UcZV2H`!LMSXrqTp+Vm%`ll[pGE&VRrP`S)HH0+lkLmdf'Nr0qlVr,
+
+rhAheP64&)*E0bF-e94KVe45VdC(PGf5kE1EQiph@b6,e'B0I2a@+Lib6(L8X&9D
+
+AU9E58("48Y""b)Q'jSX)LqB1LeA0b1FaPh#&'LMQj45a0c4Nq%SP0(8NJ)Z1V+4
+
+HrA3%h2bmBFZB*+99&MVeD-(Nr8)J&f(JiZHZ1j-XCIC'$LXEiieD8LD'K&#iMe#
+
+Q)X'VD00Bhb6XCfK,))%a,Y*HD#0C9THU@%aAGU4(UrC,HRGe(DfYafrmR+jM,G,
+
+0q6BM`bRTC[VJ$T8`j-T#@""9+%pG4LaG,Tj&TMLP&#4*FM0V99SUGd&FK4NA!dY
+
+lc2YEXjmhQV`%k2+L8DH4D6qjk4'5NCHlQ(,08NPj%4B&hD+T)hfS`B2)Q&JP)AM
+
+[K@))Cl%A!XJE$8LMMYR8qS`8'XN*HrVZ*d'3!,eJ&Ei5GNGmYSqm#f&6'QY0rTP
+
+EA-LjUFSK1CQFBAUiiRbjfQeNU6*hT4$I6+UP'M)82+&Cp)d84Ml3DLI[jX"23GZ
+
+h+rX+q8A-(RpEM'3GbP-GGbpCcT6,NEf",HhH+c1"V@1#Aa8IZakIf)#0!&*YrhP
+
+DkVHqB65@(D+Z6l[jRP((8*Y&cdJND$jTFid@d+AZZ222'JHYF$+*Ff$*Tda1VZe
+
+8(c3!KI33,DUZcXq-4qHIcjqXDpS1hU6Yd[8b!!j[hLq0Ndh2jaSAMP1Ri@VR3Kb
+
+p"cU6%)JTJ'ZE5"MQI&%Q8LqKk%M)FhVRKbiE%[RKC8)f'HlpJcI'Li#SP*C,P"4
+
+CKrHG8(B'fHQ4HHbpmM#lGDib"kVMZ%bX8HZqaKLebT)(ZM+,$VU&cp#HcIC3,Vh
+
+SqSUq)T%D`b)CC`qDV5aAf`MBGdHRd#ckCJS1@r9Ifl8UV!3LN8heVPGqZRIMc&k
+
+jEU!BV9mCX4D9mc3-Iql5UhDbAEP`#IrJX2IDTY0%&!%'1A"P8Vd-TDG[D"Tk`kQ
+
+A5dbViAJBTMA-rTR`Ka["M"89)@MK--+Sff#6K#h0Gf9Z86qXi@A-F%TVm@c*[%A
+
+8pj8TC#Ge@fSe&Y%fBG(FY1paUAjed8VMJI*E2%`KS0IpFr!Q#4YkprfLf'p@LJ3
+
+FlM`UTlF5c4p`$@6U2)+AB$!lS-6f1Li#cTm,$IDV$VeSp(Ui-$IfeK%a2Qc0YPl
+
+qHSE2mF(cQ&`A'ehYmbl5P8hQZM3%FHH1CqY6L*LGPR*HAjiJL"A650FP'c1"(DC
+
+NcLaDL3b2jRlaj$AJ66#SKj(%(%K,Kjk@AC,PZYe&9EQY%-&6a#3MDT[0A&b$`ab
+
+HSZY$Dp@LHbDLcI`jp4Rar3PhF(BQM+(5l0%0SH9([h*Ph)q$!05f"MNaIU66H4h
+
+qV[DC8,hS3-XI&m#bNMep[kM@MJAi8L$p5Y!eaidA,@RL2!)rY1'Z['m)Y(3j!@'
+
+6rf0K&M%EfHcAb!@'FZ0&"Z5FdDZRq6Fr9iI-4(5qe**[pG[N)"l,D4,MR&@8SKK
+
+1#&[eR1ehU"15SE99YX(Ah%D3!"r,R6pEMj!!CeV+i"PVFb95&qQAPh5i[drZkc4
+
+m3K#+DN('58,IFD11IHL5#*X`Q@k8(cH%J3aT`Fdc`5$F2Xf2[0(Z#rZfdLpdmj0
+
+UhU+$hYf`-hpD4F-0KHPVP8(9H!q$0JmhkC0XmbCY@FU*"%eTmX2`jm-[9aDL#&D
+
+Fi9M(jpG&1kTYEJF26[VYd[fDGM"cQlQLGEbTTf4i%kqcBTpKMRC4[#"%`E@8F4G
+
+1hTM"$rI6@BeIj$RYCHfpZ6KIc'(29KMNi&DIr4q61NRkY'hT[(Bedp(*QZfE!4*
+
+B6JlSQd+Gci+I[D0X@4,@&Y"iKN"-EX(N3!NCeiKa![SPZ,phlE!5KP1PbZ1q3N4
+
+q$QJm3kI1C$q)#A-BFH3Xc2LDm48!qT6-FrbI@T4&Qmc+pR$rqkRmhk!-ZPUiMLa
+
+#Dl)drjqYV8AZrfjY[8&V,'j9!ZF`Xe)X5p&MY[a$*SeerBSLelhRDklX8[H#04I
+
+p"pSe2C(eFS`P"Te%5%BaHNjeQ8Ci'CPAH,d!G"4e*!+GXP6-e(fBfiNBI'S)GQ$
+
+%jr@(f`)B[(@#L9H1h4F2,d4-Q*!!h4,#paG+p)h%+iH3!1k66m[@9jVTHAGMREh
+
+F&f'CCC!!A[R6c*,S84'1cGI+QZQ1i5J*CQaVRBRFpdaC6*f*crB2VXE(Xl0C&ri
+
+'+plZ6hhRl(`9*$rbIdE,&+$M@eMFk$00G)f%(LmpFjl)2X8d'cF@R*(a4h@c#lK
+
+5,1&kTh49#2ckk'I@#f%J3LBjlm8mJ9Y-C+$JiXC(4NHR,$8k)Zq3!&6q[5&$I(Z
+
+,GKX4p,N*('18,I!(Jkq6X$iYq1bkJb(FBm"18Lp)U5eADB+T30M4QZC2"jQkahJ
+
+CX3Fr(K$bl&'90d*39f,AYQT*[RjZ8&B23GkSlq@M6S-XS-A+"`l8$lK%AbSXQkL
+
+Pdr33YjBGr6QQADJ@)83DEFPr43E!jUD-(Ic5RITF!kAPifAT06,%9+19QNpR)j!
+
+![q6hDC)ZrS@116libe`,c2QMZjMb%64fjmc)R4@hB42B6f*[eJTbPJB5VEM#YK#
+
+P(PY#+aYI-R'Plb!JARQkE5HA(bk0GlkPIl@TH))2U"-AEmSjEi$lEK&N+[AXe)2
+
+,ZJ0rHQiU[rHc&-Zh3RC!)2'!V8fLhZd8r@AlT`!K&K')M@5Ik3IqEh!`mQ$-j@b
+
+%RiNCb,pQdV18[qiD52IQlmGc2Tckl'YZkFaVJ3k%2CPI$liC&D)9e-fEbYHCEk*
+
+#jebCfKeAF$RMfN,`&8G[KQdIT1bc5P)NU9(bpFRKI[1iaV1dALlB@ZEKP0ZGFNR
+
+J'(&*2fY$*0i%mFT2NcRj"T%VkUf&p#fAHYm#j68K"U")r0lGai[$3B`3`MqFZB3
+
+Ylc4#&+Z(i#MBT5@8la`Zbb'CF#6!+-KV&2,e4c4FKmYB9FbVafDlTRL3!$kr-!3
+
+D-ke2B0Q!eY-DXaP*'3D"0%9mJrml2"C&FPG$VNF6T2*@I&r)h#JpY4&"$9D8dIF
+
+VmTBcFeaqib&L(LPSV*BdL#U+!C3G!D8hC$0eG6+0pP`f0NF*SNfM))b)+hR"2VL
+
+PEMlIi0U`6qXri21T9L'lTCJaPqP1GlNMiV(4Xefj!Di)`B*%kRZh@RH*14UdhqN
+
+Tq,,IeZf&-A8C)YSdCq-&-GXIL5Kk*fb-lGqHVSNh+dP0ppGqTA(H(ZT1`QIh"+L
+
+,(G&pGT&P+3&2V@$leEDfe)%%6ad+S5eUcUrXmS%G,aVJe1UA$5pGcQI06UDa9E8
+
+SdTV@4GAA,F$+!f@dUUY2E@@G@bXAKSeIGl1D&VYZZF$(FL#%"fqLHMNE)09e(V+
+
+Jc&G4mNYhUPIHKIe%baL"YMLX`)(3dL@*C$m9e[@j1#mpa'+$B"RjCd8#$&6(*%V
+
+rNEfUqb%-Ic1qKCKM2'2Qh5"*cI5KJD1b`PIR#EEVV(+PLKcRf#Z*")b($(6Y@M$
+
+E1EY[d0KiGH@@ZMHQ!NYID2M(aAr1KRiiA-Sbp3I2)5c'XkJbG33*4)bS4PalF0K
+
+b!J[BY8&U"5hLF!EAk6'f6+BZr-alLCpRA5N8FZUAQ`$1mEAbec&FS1jm!b(cR"@
+
+*jfa5M[LM)%kTf("pfmq$VJ+lF"("X5(CeQ*QL8kPc3a9T`%+IV`$MC+9Va`c$$m
+
+UYAfb@"[-pTpSC#EphaJ&)EU)bJ)UI`,!k#-L"-jFpA'AYK4RiB+J9$3`Y,Ti,j4
+
+N+AUlP"km%RY`fh'ILE(TfSAr8e'bhQ*&kE,rV5SSrlFqr+i@LT,eif32q$MJ%9d
+
+EIq95*@0lFfB*CM8h%eIJ'6lS-NXk!%AP'a`X5Il0"lh%a9AFbYLCK)9C`GM&9Gc
+
++f*N%f%La90c+f2Rh$EiCq%Q#PCd,'*D4a%L#PC8(@%l%Gl28Q*@9#rK3IS[ihG*
+
+Ej2aM'*BDXl*b!"r+G`T@N!0J,kl-X3T@&PlJ3bPi"5X,$r!KhqK5BeB@EZ"$q@Q
+
+#PB8$q&#QF33V#aXF,rXINl(8Q*@&"BkAr8p1!F(,"FI,rZHA#5"Q5T(pc`m6[+a
+
+`[1arITIJiBEMCIrcX`321a`[qjmA*RMBi(MCrl`[`F-#am[qjh8*EQii)2362a2
+
+!8('4lFm2&p`FF,aXIhkhi1+&ifAlmlX&X'fUb2ERG`XZEMKHYMqr@h"a`['brIR
+
+GJSXGMTIYcqm@A'a`['arIVIJj)(MCI[cZ`8R0a`[fjrI,6Lji(KCrraZ`FN+am[
+
+kjhF,6KBiAYBr[eY`m-$aX[ljhB+$%ikApFr[&K`FF,bXIhkhi'#&ifApmlX&1`m
+
+F,h"hd62"cJh(brVRG`Yf0MKHeMqr@l$a`2'br2RGJSdEMTIPcqm@E&a`[#arIVG
+
+JBi(MCIRcZ`8V&a`[bjrI,9Jji(KCr[aZ`FS'arXAZUeJCBAMr40fFkNa,ac[(ab
+
+kjc)EFm2arS9G,6L"5daqY1!!2T,I,0L"Mq3R#cEJ)rPPJKAi5(k-B!%qNKmM10L
+
+!#A$j0B+9K4Ai8&k3!1!#!Prc%m(+`Jlh&rH8B1H%ircc)`53!$l2CI[c-`8l+pa
+
+IA#q#Q`H1lFqA#9Bf$MLf2cp(F2)#J4rNG`T@(MK@pMrI,$Lii0KBrl`h`FN1pdG
+
+3iPaQBeif1,Brldf`!VpCG[J[0HEP"A+,mL-"T-[+X2lj6!"V2l0rIVlJiS,l!jA
+
+QA'CMENkJm5AI)(MJ12km#-(1!IGAQ%'`XX1aX[pj6!"hX'S*%kcF`#Q3!&FLf,Q
+
+!cq5&#aj112Br(`P@GREJYmP,%GbXF+arAC!!B!A1H)EYc`m4[0a`IdE9PaTcFF#
+
+aX[`j6i+,&Bllcmm6E1a`V#arhS"Ji`"1#$m5E'a`V1arIUVJB)(l8pSX0@CPji$
+
+lkf)%+h$m[$mR42$b`((mqFQ#&6J@'Birc`P10MMf2qp&X,+a`V(qY68%+aXE(1Y
+
+IeTPJC@F$$T,m+J%NXT!!-QQT-5Xl,r",j$J+,KBi9TBr2d9`Xm#aX[ej)`*B`32
+
+e`Xm%$aFF+rZIhb&B@GRK@0RrI)PJji9Mrr-GJS-Eq$ljiB)9q2)-qjpA)RJji9M
+
+CrT`9`Fi1arlR-F("$XIke`B8`(CjYEm%+`FVh*m&iNZ0HAMKf&Mr[#E"bX%#arE
+
+AR3P@GKkJqZ*R!LM0jV+arRNIJT@G&CM$P,FTH$MJf2lk&!&N2Xk`rcNlJTXAMZf
+
+[`RI"``V(qYF#&+bXh-!aP9mL@0RBiB!8K[a3F2$#rGRLZY5BPCdEMShhcbm83(!
+
+'jkr*%d!%p-aI58R"bXB0arS(pmDjc-DX,&a`((q0RQ!&lV2-AeFR1$RJ@2q#ba#
+
+FR($XIhf+B'-&MUGmS@$MK2ZV'PD`X[(!XE2mH3q#PC80b*dZEeH`XR(#XE(rq9@
+
+#&DK,R,p@U@"PiB4Mre1R[N$S$a&m0P#d3l1I#9aI'6C@%PCf&[drcVh#f0ACfP2
+
+hpkYk52lik`*Q6@Xc9bXAAEMI4rar2)2m4GRI(iaR0%Sj$MMJ(ai**b[*(fXX`mC
+
+*!Pa$H3i5i-eRf(lI)2f$6-"YCVRK@%KiZ8Q!e8jC6T)r3UJp*%$b#$BEA!k52m4
+
+1$`NR'l!mGbi,#5[Vlm(Y)H&K)q&N*f&PBb9KCIYpmI32qJB6a&Zr"qk2FH!'*[S
+
+(!`(E&I1FBIhpK5`"HS#q`Q*@i(lY)@&PrI1U-baF*-#0`D)T`m*,`JV8BKR@hcI
+
+KrIjX6('4#ik&"+KH-&1XS0cISmN,*-2"3F,+qQmI6+*U,LXl+mNIZicqCIk3!*B
+
+C0KB5i'D!GJ&[5)D9R35i5c,XE#5Xl1`NV+`mF+aX[-$LU-A!0C4Ki53"LLf%Kk%
+
+LZ18B+hJa+e!d3S4NJ0Xb!e`4'4B1rEmj(G)R88i('4Smc%Z9M1h0QF@CeGa-A)&
+
+Rq+$,,1N!G$VHi'"*mQp1ab8ZVZ*@aXiN,-`+aLkZiPE'cL4XR*c-iPE'cVqGMMF
+
+$2dQ`FA)#@6(NeK&XR"c!Kh,V#$C10U"kNmY*X('b!Kr+&56B1&Q!$q8'%f`F[-#
+
+(F[F+0JiHi%2jrB+0Ja[i8(k0B12J!Mk8UeL`FE!$'5,PT`Nf$MEJ3rPTJSf$&IK
+
+3ITTJBqF&2T4I)pMBZH"irZcI@QV-"P5@KEm%P@"MCiIMq@Z,#MCf0MLH[j5`B'0
+
+RKH2jBp$1C6CQ!`UX!ZHI&bABJ"+Q`2RRT`Nf0Kii(Xir,dU`XA($mA$qH9'#$EK
+
+X#hq*E-('aJR(mjG3%'aX((!mIj!!'Cc,E-c'aJl(`r(R$3JfN!-i(SirEd!!85r
+
+RmR$mH31#$5Ja#aarhS"J!dU&`Pmk4E#amX$ar#9Q""XV0ac2AeT)X,&b`I&`r(N
+
+$JJfSG3[XIpk!B'2PJ10Krr-'""XV1a`2qjmh)0KBfH"if2qm!F('bJV(`rlR$BM
+
+Ii*N&pMp[3!!TTHEbX2pj!i+0K4Z1Krh2'a"X,&a`21arhS"JBq'%if(rm`B%'`X
+
+((!rERcFJf&MBiAMBrV`"`FE#"XI$pZF0#$B@9MJHYMp[3,#aX-$aX2ej!`+S`1E
+
+bX2ej!i+9P`H1Kqh2'a#X[0a`2'arhS"JjH@#if(lm`B%+e!R&0Mq[!%"T01Ebm2
+
+kj`d)9Pif1"l@2fp!X2+b`['`rRN$JT@(&ik(pFmE%+a!I9KJrI-'"#X20a`2kjm
+
+h)&L"fVI!qZF0#&BH6MLH[q`L`FV$!FI$qZF0#&BHGMJHeMp[3,!#AE3#bjmh)&K
+
+j@)%2j3d)9Ki@i%0j!i)9+%3,,(rHJ'$PjJ%qP$FJ@)%@@i(PcaX3V%#c)mrljcX
+
+&+cF(m+&mTf!&kZEmAkYC!-8R(XV[&+aF[-#(mTf#PBX$#(!K[dD`FV%$(mU,%Ua
+
+FE($FIfe@`FV&!R`SEd!!Ui2`8&kZB1ANK12Qr2-$"#XR"achAaY2X(+b`h(rYI%
+
+%+bFE(2GI'dm!#p[RFR2mH31#PC-&MT[Mcqm8V"bmF0`FIhkRB1AJJH2Qq226"#X
+
+(0achAaY2X(*``A(rYI%%+`FR(2GI'dq`FV$$FA2mH31#PB-9MT[pcaX3V1aFF0c
+
+XIhkDq'dZjGRq[!l"bXi"amhfjh8)9RBf1'kf2cp!X!)hH*lec`m3V'`FF0bXIlj
+
+6X,+a`A'cr[P1`3TFcAR@2kp3X!*AFjlecqm8V+`mF0bXIekKB'APJZ0QrI-+"5X
+
+V"achAqY#X,+b`A'cr[R4JT@9&BkEjFq2&Uc!RCYRqI1M"5X,0a`hbjmI,9KC11'
+
+i@IlmD-(+`J((cI,R4`Y@&MBiETBr2eU`XV$#FIrP,!THAMMZ[h`9`FX$ar@AX5*
+
+iZH'irR)'"5mR(0GIXNR`XX*aFIcj[B+(&ilVVrN6`,fABrrcKJ32"a`AqjmA*)#
+
+l,FIqjr[J%-rPB[rcHJ4`QHABrl`G`Fd0amAqjq8)i2E+XIrj63,SPq6Brl`2!Ga
+
+G1IBrld0`Xm*aXImj'S+,&ik,lFpRJSX,MS[echF,,JkihbN$HLDif1!irc*U""F
+
+V(1GI1e"`FX0arV8#"5FA(1GI'e"`FX"arQ9j#Nif1-kr2$V"b3,(qCH!&4`mF-#
+
+k,(iQ1,MK12q5Vi+$#ik6qmql&"aXF*arU9,"`3,(qGHf&1`mF*arG6S+GLiicVr
+
+X4X(1!FIjPp38l'a`R*arhTm!#Nf2mmql&f`mF*arV92"aJ((bI(Rq`3E'a`Rajr
+
+I*i#laq2imrX%+`mFjemc+PLji$Mr@T%#U2bm[cDNB1@!iq6imjX%,a`RkjrA,EM
+
+K1&Rr[$h""FI*qZH(#Nii6TBrCd1``h'br2R*JJf1NqA2,aDXF*ar,4I"!XIaPp-
+
+V@0QiiGKBrhb&B10N"iThqCQ#MB8(M[d[L5(B1&L!%Pfq4V#bX`-0-rRGJT@0(HK
+
+Jm62"#R62-Qar[N@`XA2!XE2qH3q#PC8GMT[echX9V#`mF+aXIji8V#bm3!0AIUC
+
+JjH@%BrY,iJX19MM1[e50B'9K"lj&[Pq`XF1aX[dj,i+,%ileVjdJJ'N&p8J!9C6
+
+ljcd+9KBZZ,qm3F%+(&RRcb%3V'`mF*arIS9JC@1&BfIlmlX&$bIFAeDj!1T*jmp
+
+A#bi@S&21M`3V'bI3rC0A*RKBi9MCrhbcB1ANK@0MrI1l"5X(#paI4SMJiSCMqh-
+
+X"0$Sp-eb!G3XbZ%6E0a!he8q%a`FF"arAS"JjH5"qmXY&k`F(%"$8Ej$X(+a`R(
+
+mH4m#+*Z9&b-i11&BfImm*MMJrPTJJSf$!cJpmPi%$cI`QEah`FS'arlR)m($$[`
+
+iH5q#R4f1pDml%UcXh(#XE(pqL1"PJrY,F!KZ(MK@PMqR6Ic1akLe)9L"kL$$mZF
+
+9#'i1i+$`)`%%pTr,b[lRa`UJTP1@Z@"Mji(lkfS%+cFFjjpM)YKCi6Mqr'M"bJU
+
+m'AP-!$@@qqI&#(CH10DrV&B"h$ZC[lDqB'2R"Sk5r#,"aX%*pjF%%%#ePf(lmkX
+
+&+bXhm#AbS'"PCi9MCIrcM3*S''ABrhb,i15"Brrc(3)Sj61XIhkKi'5&BfArmmX
+
+&d+A)X2dj%S+9(Blpcf1#JaH1p5rj*S#"MEPrb6I"bX8*amEkjeB3V&cFF'ar,A[
+
+"bXllEfDiB'9KJ@0MrI-5"#Xh+acEAr*!F2,#XE(qqEQ#PBX,MTApcm%3E*a`301
+
+(R`N1GVLra,aJjiCMirecB!3E+pbr@GZ#&AM0QEmq9h#b`l(r08Q#"hK-[Nr`FX'
+
+aXrcj(B+6%ilcVe8PZ0MKrP*$JT@G"ilp,hp"X(*c`h'`rM%[,a$k`lmm'fK5`k3
+
+q%fMR`FjCc-V*T[r(Z9FBZcTEHqVqkGcbAaF`DeUEZ9Ujk-,pQd(0BS2qCGKq6bE
+
+F5LaaU,EL(bEdA*BrI&TbKhY)@&PrRh&r2mU`XT-!,iFP"-pFJ381q#edP"8LCKj
+
+rm8CeIcr2X(+3!!#h$bqe(MJ@NMmmDiE0bE$pIRf'imp,`1eP@(K)rKLV(K,J$Tr
+
+,3X,aqj((3I,("21!dMrH0TcS)8Yd,JX*jqrMA#59rIh&8$4XVM#d&[3"KT!!ZT(
+
+RXV,pQ`'GBIRckYdrrA0@L5il#IXITqDbN!#`rrj8A[LX3HKIp[Fm1VmrJ*@8``(
+
+(`8R#bXC#`X&"mSGEi2cj,6dN`!@3!1(J)'%&5N([pbH3!'Xkpbp62IV(kKc6kl(
+
+"rC8@S(mCS,HHBH%PB39Z10kk255X,,rrc[pa4A0C5&Mr'K6lc`Aq-II24qkI,cI
+
+rS,@5$q"rFrrVP2[R$8'pN4U",29hLIFl!$$j,ZIhR2ESrmf#PrP%CF'6dmkVDUQ
+
+5XEdjXaLcQTZ*+r!-(h5C*4f!&[`E(#a*rXf#[m6&9Gc+f*Q%K9R"f-99h-VBQB5
+
+0Nj0Ch-VBqEF&rfEJ*`Nf6NiiMVpm$F('b3l(mCGQ%QbFE(!FIcNBJSf6&BlM,c%
+
+Mf$Kii6LirpcaJSf$"ilMV`dZf$Lii6Mq%P'#MB-,MZ12(A-ZXc%E"bFFaepDAE"
+
+aX-*ar+8$"4X(#ac(ApkkB'2RKH2ibc3A3"8fPi2cchF+0RCZ1!l12kp@X!'e@TE
+
+c6rNKf0Jji$JirpchJSfG$BlM,q8Zf0KCi6Mq8Kf#$5LcXhpCL))0+$@b((pHVQ"
+
+Mii(Mi2McFJ8E'cFFaer+4V!"aA$f,c%Nf0Jii6Jir[`d`FE'!FI"rZHR#6D3!cJ
+
+1pMmr63"GplNFl(pqQQ!$kVXXqjqI*YKBHH!if2qmA-('bJh(`IlRj3Sf9Jii$[B
+
+r,eH`XE,$FE$rH31#MC80MS2pcaX3E+bXF"cXIpk!!$VSFi&Pj[a3X,(``('`rAN
+
+$JSf&'ik$lFmE%'`XA(!FE(rHJ'"MiB6MB2[c"J3E#`FF"pZI0b$B@0MK10Mq[!(
+
+"aX)'am(fj`d)0KC@1!kf2fp!!"hdZ4aXIpk!B1APJH0JrI-'"#X[0a`(kjmh)&K
+
+jZH!i@2qm!F(+b`R(`IVR$BMI$RU@pFq2&N!(I5i(kjmI,9Kj@H%irR,K"#Y32'G
+
+CrRbRB!8k(PQ@2pmT@(Qii6MqmS`%+p"*G2pbk`3V$bI`SE`"`FV$$R`SEd#`!Se
+
+&pbpK+9Kj@)%2j3`)9Ki@i%2jDB)9k$1kIe#+RFYXc-V0!h`SVd1`FR-$(mSC%+a
+
+!fHhqjE3)9Qi112Dr2%,"#V3Ch,pX'X%+G#(G2bRJPKUcFV2#XIrPQBMIGVVl9p*
+
+&r,BJh,qX)-(+a3h(rTHN&DaFA($XIhP(JT@,%ilpVp8X@,Nii0Mr@Xf#PBX0M[f
+
+[e5aBZ9MKf2rb&J3V&`XF1rHI0b"B1ARJf2pbC!63JTr,rPFk4J#YJ,RXIjP#JT@
+
+6!ilpV`dZ@$RCiGMrfZ!#k(60CIr,S45XR#a`l(rjB)+9JaH1r5qr8V"bm-#arlA
+
+S"5X(&aclAqD-B19JKf2rDqX,9Jj@12DrYVjJCHH&Brr,Ea'Xl$a`l(rCEB+9R3Z
+
+1r5pK,hkllLlRRlFQ@0RCiGJjrl`e`FV1"XIqepBAV1bXF1arEAh"#YcklPpEAl!
+
+#Yll,mHHR#9BfEZ"$q@Q#&EMSABirVe#`XR%#(mSV&+aX(-#(mJS&+aXlm+'m!F(
+
++aJCm+'p!X!*p9*Ipcqm8V-#Yll,rq@Q#PC8Eq&"qQQ"Pj3)qP*mQ@&RCJ3rPT`P
+
+@9MEJ3rPTJT@9&IK3ITTJCH%&2T5A+eKCH1$BfIkmA-(+`Jh(c[ER4`Y@&NiiGVB
+
+r2eU`XV$$XE2pqG'#PB80MThYcim@V#`XF1aXIhkdi1@&BfIlmjX&,`mF1pZIRba
+
+iZH$BfIlmBX(,#A4-j3F,i2*f@IrmAX(,"R`QCdN!YlA,qZHR#ajZi$2jX3+iRPh
+
+@2lp9m,!$RmP[&6bX`'Ib@`9`kEUXIhkV!1j2PqA2la0F[($X,(pqNq$LJ'0RqI1
+
+E""Fl(2YIqep`XF'arq9S#8jZ12DrXXk#Naf1l5pC)$Kii0Mqf[f#JaZ1lDr9,cJ
+
+iiGMqf[b#Jaf1lDr&,cKBiGMqf[Z#J`@1lDqe,pLjiGMqf[S#Z)LF[jDqB1F!2T0
+
+h*YMCJ-rN6!MJiR(qbQN+0KlJ-rRG!VKTR,pNJ@$M!$k6hbhBf)$2j(F,0PEJ-rR
+
+G!QKM1RqT!!&d'TfrYV[J!6k5Rb'iJ)rN9`Kfi#2jBX%#I#6[5l"bFX+arr93m!*
+
+pFRN[JT@0"ik9lFq[%$bm`%&8(eGNK@0PqqZC`m%10'F$YHlm,HbG!3B`)![83ea
+
+8KZhI"Kc2JNYcZIrG!Xqa`,(rQdV&qr`lGYMBJ4DiI1Cb`A(qfaVXiB*MCrZhICf
+
+"BrZh6r9iJFk)HM8Z*l#p#h$!MrA["Um,*%8@lYrMIce`E(pGH2lI2Hm-F,!#f8@
+
+HYhVAA)jr@k&&Z(pAEeQJmaYXi``FalrY2AbM[qTkJ2IJVbi2lYmd$bcac0p8$Ti
+
+&!X`"AV0kA4k1pGpZ*Ipl#2f08i6l0af9"Aj'clrTrZ,I21kHhqI89lZrTd*G"JE
+
+@rcS(H"RU@*iElYrZ)XF+arP[La"AlRma[Mllec%21)IqT@#bI9r@"FkEVcc*53r
+
+QcB(lYbhPrIk+DXiDlrC(MKD*mqr10ldpN!"IH+Hr*6*Fl($XrhB3'bV$rZm#%T2
+
+Ll``(1"2q3BH&"HlIr4YD!Vl1b!)(Ach,![H(2am1*`IF[lN'H4lJZF#'S5N1)TZ
+
+d0S+61H#3!2T5!r2J5`eD5rlZb!$hJ5p#2H$,LrqH%Fhp,GLGqEe-USNjA'qJ'2$
+
+1l,m0%@ARI3P6r,dJr)`4hETk1hD)mfrAQ!AHMlqjb)A`Cmi"VJ9I@A[!LI2[K!`
+
+0Ik2JETerfqmH8%(i5QJm")iK#@ahHR1Jr$dipMq3!$Vi)HiQ-1'aqE*rM[F,K2j
+
+`--m'Q[!`iFm%VNCDJaNf([drcVh#f0ACfP2h,a1HrVU!@G2Dc0A+44H1K34iGc)
+
+"MRf@BIppR+e#jrFCD(c-$L`*fVDm*ZLlA(B5S-R!f`d(k!rTZ,03j(9GB!9q'!m
+
+D[S(qK$CMVB!Rr$iCXmC*[!FlG[([2B80RIP$4C!!i-N!95d,0p`L(VSN`1h$HSI
+
+H##H%PJLf,ZXrfZINGV0kb3#P+e3&E8%Xm3c,EhZBPcc[9%`5Vf,F@iENMm['CG*
+
+MFPVS,PJ0m3(j)2rl3PL0m%[a!'r"Hc,F*1ar1Yr+QQG&'rb6Lp2rjrhjME`S-3%
+
+F#Z$X1D5!e&DmL05(5bqE,j2I@[cMLr%1q49q8YhhqHNI0%2SN!"M#`E2@*fVLk[
+
+jp9*dK'Dl&%,Ukc&+[1cP0kP$fIriA"SGHA%CeVpZMYm"QB&*jCeB[CPUrJ(R,[L
+
+E-6q1+%cZ1bq[T8V'pZE-SXaUELDZ[mr33CGCdJ&Sblr"`C,Nhfcj5eaFaDf-R8P
+
+BQ"@-rhVNF()brhj!Y[bEJCq%pBrG'hMRf221[bI@2D"8$K,VY2@$a$UdP[2[&MY
+
+TML#q6RV(hm`1"h"rqj[C!DSSjfp121hq`,h($33TGiJeA)Rr%0rT#dB(U1P`*9A
+
+$(VIJ2m5R9CeiI&V9LFHR"8imY$PZS5T3F![q3hbd,f-FS"b&b[29',k'GaSra0F
+
+%TS,c@kMiAq-!2m!AMf6,ie[(j4b[8jCcQ)j!)C1ki@h,$h'&JDiNCH3,9M)[R$p
+
+d"cr%4rXf"I3M(JD12fiJm&()`I#p"e+AF$emb8SkeIm!Q"li9[mK[Y-AaJi,m'Z
+
+U$MPZ,4"Y4H#YNAl`RAKmNIm3(a!S01J`"bKK!LIHqAFM[3MmY#!E"[I(q6FV$@)
+
+63Y(r02*eUYija'[JR4Gq1`lqej!!ja"ije"Bq++Ua3iC2fiI9HebI%h9,XIA91e
+
+bI%eJPj-@VMVNC%!%6J'8FG88*`2+rl6FEj8p(P,(jrN2m@Q"$`iI*2-h(a`A9IA
+
+"mCe9(acU1V#q5IjAJqhicX$kaTl'YeBG(RaVe8M(YeD0p-cI6(&mG'#+Nm%4q1$
+
+Ba[M@UVE'YrS2b8Rb[a-fNC40r"#h&PMI@-#CIpZXN!$&H"Lm%hG6pE6aRB(I3Yk
+
+D[b@P+c04Ce-ej["TrXD$!X2$UR-0@fIFV#BY@M@V@2Ea3hbRElY!&10KB!$LDh`
+
+$"cZ106)r)aI+pbVa+Ij5Sq4MN!"@al[p,3ERb$GT#Ya`rqClB*[jb`blc&pPf'6
+
+q)X2UmMFA2$hICU4Z"I8a-)am-`BQLQrHB*AjQ`blbepGf%rqHS*Y%[KQX!h9Zl#
+
+-r&d%Rp5hKE"lr0AMFF2pfkl"h[(h#ED1[df`C[ce!CARl`[)1Rp"B(2iqJal`eG
+
+R%(6qRS#Fmm8Bp*X[Z,!mr(8"ZHDlD&JFJ3L$Gqa,PM``&D%H`4d+*#M-jDV4(FJ
+
+S@%P99bRBSj!!4S&0kMZJY&MmGf&RqXN$E%rIcIAh#GD4IphB(ZUZX!Ym8pGI5(2
+
+rqT`HZ2mY%38a&f5BUNBjkF9JhH'VI"NR6HpJ,q0HJK3+QA""&`cQc[RE,XG09Pe
+
+cXN%$"B,V$+ab@,[U%E5[,h$K#9I$3S&R$RAJQmR39)'NSYX-r1YJ3j-l2C'd$ba
+
+c+-LUC`ia&'JKk%PrR98pF`LaDK-82XQI,kL1`(YdrqDDFm0BeFcfT3M8@#$'X#i
+
+#facUUDU+X2J$hjcc"e8lfpIY&$+!B[)[E0a&*fmrX0'KhB*b#XbDVjqK)hdCLDN
+
+2A(5DcD#pBpa'KcEdT5'dR(med'Zq+)1q#L)#@*L"MdjK*(paN4FqR[3+M(4SR+U
+
+6$KPEE9BEYp,*"3iNILe$$X0Jh%R(T`41qN5)(!F$P3Hr34TKr",TR3EjT+V&$Kp
+
+HRB0A30DPRbl`K6jFRF"hKfi,M(Ii*&AR(BNJhmQQ!'2J`P-L$3VHIb01MYHVqIB
+
+$l)UU2imG21l28pSQ8,38R!Lf*)8'I1e(fB"U)KeCKm!r`ERU0*+mm"p5aMkS@m2
+
+Y"8BmM)HU%`mh#JXqf%@B3Am(3Ym(Lar5-r$F+986'1dbrc+H3)@Y0Tk-m$85DBd
+
+J`1#rQjDMFGDK*'QHi"-FFGEpIh*"i1r!4qEe3qU3!-3JlcF-$@mEQ,9dPmS%CXN
+
+-UBZT8XkjlpKL2bU(fMGkH6DJSZNlbIc2ra'0*UqF[eLqM,8bkeESBRb5["#)"D`
+
+5h$d21iYGh[UXGD@2bm-Z,i$H)IFNka"9rJCYRIh6fXD3!2"`"Jebl!'`IU)&32)
+
+@iikpTkah@UD3!2jX'[#qPJS#NJ)k!%i"9L&8#bX2r*Rj-cH`q!rjMQr)!Xe[5LJ
+
+%GV2dmZ[rT+p"JQV#L@Br!AFYabJ`m&NT3)Y)bi@eCr!Gd$abFj!!RF)E2KKd2LB
+
+r"DBjQb4NVE$+SkqLk!4E+[%r-Shm*piI33B56ElT2RN0lVqr#CIH5Y#21qY9M!M
+
+8q!DY`'mQBCDh0R-KdBAldf#$3b$lI*drG41-"PkXN!!e%[2)rA0T3iI*pf6rY)[
+
+`YfcmcIkT&U"9eAZNKi+reAZNqXAIkRh5aX(IkV`dK[#h[)rXRiXGRSVmAZp2%3Q
+
+l46fAZJ9rbqrarK6pq&YqMrIRNSG6)lr,qe2Di'reA9,F`Y44hb&9"@5!HTmdL5!
+
+fe(-TJ2#hqJl9Iqcpk@hKEhNrZErZ+rHREBDrrA2bRR*rqL(i@hj[lNp,!AqVFp)
+
+A`9LUlj!!@KGrbr[)rHPdi'pe6YeElNpjMlr915Rq3)bYcNPE!(qVqe"cQ2YV$R0
+
+rc@(Z6`N'3DlHjpqVe(a`e16hjrqkVrbI5KQZJrb1r*qb#c*E[8HkC[KEIPIq6jX
+
+0Im[lbImeArQrLU(cIaS(m!r8169[qErQ,IrA[H6r&,(`614l#RrGIq'[Z5hmGEq
+
+&2ad6aED1[pAl*4Xcr5hI*dP9k@reA0f6K,'L[p8jG9r&2ee'r#h[m3)5B-Re@i$
+
+ef13B9,G[P6M%hli[-RBeYR1dr,Fe(!%@9(&dm$,dI[q"YD1$"*!!U'!aM33I8&4
+
+$Id(pBrePZ@L"(GkA1*UjQ3+T#jiPVD4")QhPk1,UBZTXlH4+`XR%b8,l[hhB10X
+
+FA853!+0C+Q&YB@%1E!*(pIGV@H#!pKe8-P3c$!MSBSKNZ#D`RL#-i96J+"h(q3c
+
+`"4RJ'c,!9m#d)jP2'Tj81Il(LacJLjcI(i)A1F!A1F!A1F#2FB$[FB$[FB$[FB$
+
+[FB([J4@$2qL6m5)Aq#)Aq#)Aq#)Aq#)Aq#)Aq+)Xm%9Ci!GPJHr*rViE[#F,I%m
+
+@q"ji4IJ$,mS#Aq3"Aq3"Aq3"Aq3"Aq6p[N@mb!1qb!0qN!!(I)m(I%m1q*iFm$d
+
+ji([JQq%2[#MhqllaSKc`46RJLh,!&q@",mS$Aj3([LJ2r+!mm$eji([b[`F$lmN
+
+$h`2j6DBfrXH,#X!A&B![+J"I9!#qU!"m8H(h#1&&"H!(&B([+3,I8`5qT`Km6a(
+
+i(PM`q!-[+J*I92`pE$aY0'ip[qHYjrI!pIbHZ*lI)pF$r#aS42U$KUlRpp6er(k
+
+M(&!D+1K8qS0Hb91DqIe+(P1H8aj8QP3S@rU$KjVH50-+0iMqS$I5`*+[5Ar4+fP
+
+SS6hT$hSPM5e5$I3([C)Q&kiMr8%I5F-,%i60A2U$hNJ$6$%,qSYH58--Ji6qS&I
+
+5'#0d`9N1qS0H5D1-9!Ep`IZ'hNMM$*Z,rU!h`N4NViRqS&I59#-`3Rr3+fQZi3[
+
+5(r4+'QhB`ab!S6rSM66HL,,3(r4'1,rd&kmeHL901GaNGRcT$hSP$6U#0I3([C*
+
+Q(DB@rF'EN!$H52-12dc'J1J[HL802E)qp!HpNXBH6KEp`GZ6ebIY6jTmj)MS$eU
+
+K02P)(p%IY%@4!+'rD*(5k-1*ScrSP66jF2ES$hSP66ib823(E9kDI$L&R0ZL2hK
+
+,da[K,G"Ip%THeEbVH9RcYUE*Kc0)Ip!VDI+4qU)rk)ddq6$Gk!pk)ddqfALFDD-
+
+rk*8dqR$Uk!pk*8dqmQRd"lf5*KqT0NlEd4rd4TTm"1,S$aB3(P"T9890"+2K![f
+
+!+R9'i*T3h"++llIr,B404k6VmqrYiF4NiCKP&8PFRGh-Q69r[fZTc1rM5m98a%P
+
+BQD@BaF@PQ#98J0riFK*'i!brb0(1cGl"jIH,`$c`ZmDQYV)ZV(qmRH6@bb4)q"N
+
+3pFj8f&fDFMpNT8(j##Q+LRj%#&&"IaH*P`F%Ad1#qb-2!,EILF-"!kr#J%X!!$!
+
+!r&rp4RS!rDr-!%!r2#!8q'm6*#"%)dai$aE0Ic!%-HGT#FImh6dAlkB"010TD3R
+
+R4qhmDh6BK+J@r2B6*%A1Sc&J1a`34[b1irrSrii-!$ck%IrYdqB!2k[b5Q))!)4
+
+J[k-B2N'5eS6ZBBCdBdM$Ce@#I[PpC6IRfNi-LDU"S)$#5FVqRV)kCVUH0`HSdqf
+
+mb3(MHI12*22@mrrR[%'HfRPc!S8"b)NU+UVJe!!5P86!Dk#4mQ[JGZ[NUr!lmID
+
+MrbY`"QM+qJ#!hc04'AK#j22rDbD'(S&2-(0V2h)#TfAj+r1lU+Mriap(pmR!#6m
+
+KV2YI!RkrSr,+#jAfed[,f)r!)5S,!ajr6a5pGR%2!2"lB$FcT!*'#1J")fb)rUM
+
+!-Ai!$)6NIjqN#0l+"CULCT,)G-E+SNP5eV#r`D**JV5K5FVqRj1%l&4MNTENHV)
+
+R'mIGY)19BF0I)aEea-qV[C*aS3KI4U"B3VqQ"`A&)i%K!lD0!B"Yk1hI8i(41DA
+
+5pYmf$)e&m'JeF%l`$QbD8C+HDlaFrbHS@Z((d0G6)dBrpe`iBAj`51D"I4+EGdP
+
+4YAKeX%FrdDr8!pF38B",i(DN29B"VV-+!2T[#k`#qIZlbYM!VmGDP$Y-!(HB*rQ
+
+1)Ff["D9`TJ,,ATY,-r&$0)HI"6Ud&`*%j(qI2MB4kq1(C)BG2pLaDT%TFlQpb+!
+
+aCaFCBLK0iG"[mA[[H*!!N!!Na2%XNlmh#UfNHCHGc,p(DF6`8G3Iq1F9J'eri!"
+
+!(-`$MYJ9`"IillQ0T3F`!-2mk05cT`F$rijMq#3EKX)-31!aI-FaKJ4F!AGK6mm
+
+e%M8J'"k!$!M$"VjKe0KrMedF-)!-3""qCINpHpqZeGR$&hrd3lldqldpqhiVPAf
+
+9Q'eJ!Ep2MlpS-j%SB'X!X28U2("j4@GF,6EjHdC,)#)3riqKUjTKJAU!HfL'$Kk
+
+M2h3UPGmH1UMAfD&$1+ijG,r"$2KMXrfm1'$%*K!!L,HR"XU"T8#j3(Z)K--DS)!
+
+BrN1F+G%J&3%'`2hE`Q[r6T5$b`'mJj!!J2draL)#IFT`rfdSr!L*r)H4L$iJ`KD
+
+PKTYB5kKPjQZ*C*P*,6'cc")YXGPMDr6hrHq#MU(q2dCMf"q#q")!rbJ+3,lXM+R
+
+')Jjq*BB4`Ylfe2)K!3"9-LhjaEqA$K6@50!IL`G,Eajb#(!cr4&crbA`0D0DIX6
+
+[f+(KrFM['#br0q16%)3[mi+"kh%9LM%J&%%Bm2YV&RV'efV5"3*P@PZ6X68ILV*
+
+SN!$1"+BcL%e!U6)fN!$pL!r1'S&Eq'18F[mIJ9[iRk2d0kUJPUp"mBClQ!JpT&A
+
+YIZ,bEZqSD'$J!0)8,Y&#feFb+,aY3'MiD)$QY[&Pm"rrVhJ%MJD0"bCT"$J1IHm
+
+SSN"0"Hff#5L#5F,0)3CFD[fab$BK[cVpE5LAG!-9&UfjHHr)m(qX[C&@Saj!H#M
+
+JPDA9da$`KjDSE)HK'2lar`-p!`JN2303+)EA4TL2RRV!Gj`I%ka--THJ#UiN%4!
+
+VVJ)R-U"-*0V`q3P5R(Q%&[*Ge*VkRp)XmR4Ukc")8LAV-++3!(5"#5NlaG4CUUC
+
+BX5K-66%XipNT*LHb1F9r*"+Bmbk5*a2md6rHM)h%)'F2NcX%'rNeV2Q1E2&GA+B
+
+bf"NSlkk-Yiel$G0DK[SJI0P$BU6FrdVbD*J)-[R(heGFpX!$M4aB#r3Rfd5N`I(
+
+I4KRmdcpAkU)p0Y5D2dIj+X0A0ZL`G'(JSihp3'e'GY0U32Jfm1d,"S"DN!"%cRc
+
+Q4q03!!+1iH8!*!#"T@FlRS8D-2+0l4*!YPdc`JQV9$1UJ[2S+IS)[+FKj(G405I
+
+Lef!b&IpV5-Jm`!Ja2I)r&9m955C3*P!VN6+"'N(q!h1SC)NUN!$43mLL"0Eli4'
+
+-*FNC)U)8d0$10U3N'1!$)ZqE`Ijq!16093!!mBpKf3rS"aclAhBa'mVh'd*Z-j(
+
+d219D)BpJ5iHpX[MliGm$(Pi!5m"p13JFVT%ZrpZHjpY1bQfREk)5BQ9U8+"1S#!
+
+SrimaL'`cDR!)a`#*BS5SN!!R`4a`QSUVD[LF(J4iU#m&RTiH"(,C'kYSA@BZqPE
+
+JeTFK6be"#0%ENB`M)64(3bd[dIIEZdFH`fdII`"PB,F5j'Yk$@$lmZiGN!$EmA$
+
+IVrZfJ*3+eB&!@3F2KB@3!-Rb$dNEZ9XCVVpGYjVZpJVR,&US!AVqFf$3a&2iDh&
+
+`,&FQ+qQF(KMBd5m&RTiH'+5Y'`2cE,"h45N920,3rlYk(3+m`j55lPi'!Yj+i$B
+
+hDf+#EF1hS`EJ&+844IkR[Q&$ScdE5Ne1c8CN&e!(LCBh5(@L0iPRJi1d+Q'*FhS
+
+fi,&MUhD%$GS3QP[e1%$LKh3SCrb`Em`emJ$ja@eI6d0$qC16a5NpiLAjTX1&V[E
+
+laGh,aGUZ'XHqm)Hc&lrh[NI(Lb9rD%$Z+bSU8*EiELcfkZh$!+TmSrmTd6Nq268
+
+p%b(,a[4%%RrLrDVCDZVp4TdLVQUQ$fq5dmH[R*Sq*#f16"r#qBhTff9$bh2fYrP
+
+Tr,D(aVdV5[a$FR19`G4364Y3(&PX[eqPQkIHEf)&L*IUG9ri[G+3!2XEAfRUA'Z
+
+PpIcrXp+@&&VJ6392H8V(h#)21$#qV,lYcG0i@JP[#!&DhYi"QdI#J0NhiF2&9iV
+
+0jmhZ*1&Rj2H@f42rbjaAaY[Rc6IKji%MSCD,aIH@rNj'3'iIH'3T#[%r9$,24kK
+
+fF[qPNPNBNdSHcj*EP8b"LKQ9h)T6324Gk3V'Bic#%SF-G1%(HhVHr`T29$D"$cE
+
+qIF'85$l4J[3mJJ6!r1mhc%d(l394k`Lc#i)c[+'!MM32#@Kd[dN",CG1@d#6Qc-
+
+MS'-["`,DI3f$-SU"3YEYKf'j$!4(,TPaP1fjkk)#MX0cK&$m!E&rH'NI"cV%mjQ
+
+)X&m@hkV[QP2Z`UCdVCf-J"Tk$DP4Re(I2h3LjfRE-k1-NUQC-Dk`-61aZa&c4lL
+
+APUTD+r6P9N-MPB@pi[bI5l@e9jENpXh"a2qk$1j$!`ZHcVAd)AQ'3$cQVYSf[Rd
+
+6m!$Da,p6XHkehE3+JIAH&k5,q@J,J`fI&0"&M'Li%26Hmh!DQh0ZmdV1MKalf3I
+
+Z+4X1h,IEIB9DrYJr1`h[1aEhG$FkZB*J9d9HF8Km)l0jM+(U%95#*rkR5F'"m&"
+
+e@0XF59qj8cMbUjS8c0T&DK$MNIprM`IDM&VMFDm+)M&T1MX%%BS!'8kFa&E(0[J
+
+4b3DDSjDAFUPMbFZ-rfA,"3"qrVH(2IflbbmEK58i%JB#%l3(%!!$%[$r'!'VCXI
+
+hmN6YB'2('1')-JHcPr%Q181UX5$Cb`J3(YR,D&"U$&%24UE`b%PB,!c5`Jj-d"0
+
+XZpFpmI`G`!$Y8TU3!%(855m-IBp%U$B&E9(8#TX6(%-&MU@!0*ZNrEeRF@m4F&D
+
+pFYr"MPl(dmVaD*6pMlea51ebR[l4S6&Zi)6DlV`rNS[8#aMY,E4R5,QS))GLZBK
+
+%kK'jL*UDT[fcdF9S'*!!HfdM`E*-8U#!SfA8M1Dh#(J'HK+VV)'lDX`4q'Khm1r
+
+Jh@[IF`"[3(e8Z@aj"5C#A[ElY!#)!J!cMRqG,T&N!*rF#bJ"!'4BJ%rfp"`$rpS
+
+02$62[ari4I6fHiP[IiFDAaB(J((kT"#-#)$pKr$Nl1(8V%k8CYKCih4-UK'`b$#
+
+"FX%T%C8X1"C4kB*,405k8C!!`qK(NRlS)!l-NY"JC9&`&rl#Bqk5N!#h(T4[[a0
+
++CH*%`jHqcFh9PrYA&Vph('%SF@%Lj(MQDY%+!)"b)qFpCjXCF0[FA@'8X,@)J)[
+
+aJP,E2f+-mMr0Dpj(8hQ-@SpSBiD-C@IL554%)4+NB5P&3Q,Q)[Tpa-a&1e9cBhd
+
+HD&LqE-#Bj`bBqBaqHi%#rQFq!0k++[`l'@L-VfTRYS012q+SfM$Jd2aMd4KI%Bd
+
+6V8Z@Ld)T)A@ZHFRB&[pbb8[bFR2&@IhM$GT+Z3[k`EGDTN3fFpFb1aC5$A$ZJ(G
+
+-9SlqIF@r[p+-94-`@TU!H2`r3m"F0c6PS8ilf"baQA)f*ZTd'qmhU4+X#T0h3cH
+
+)Y!YP*dr3@"5&Ha#dIbR`G#IEJb+ZjV30R'iRCrh#Ckm$kGPkH3dk(Z'XH,RdKb,
+
+Hl!Prp(X(r)jMqdRXHB"A5N"0rr-G-,bcCDX6EAHVE6A-[rpG,8a&12JDNI)9apq
+
+2H"@Bh,lr%KM5,,rpqGBa2k"D3Z*RGbGc%2a*(d09b,D6BCq6iF3PhMmm*&kJi9D
+
++JLI8kTcr0f09QKZFGF@jD#Y4!JG"eqQYe%VJR%i#h,f[#UZeqKqECb[J#BSI!)%
+
+FP[11iJeirC@MjAm9pLUd(6VNYi"!b`N462-[P@F0e('*-Yk(h0`S[)2$1FRrTk[
+
+[r[Baj*`S(d-Z&KaX'KQd9rl&b9J#9'ZEGIi2VfHN*dNCq1ILE@!'[I)Z#TbENH$
+
+C2h*pPFYq`-S!2"6m2e+1V%a$Bp$jck8!pi$+V(KL*,@CE0l#`FMkSMJ51M@QVDm
+
+iMJ4Rm'PqSKJSHK)4(&JS4MdK%R$%m-C1%YM[JDbdJi!`1&UJ0l!!i$pDm`,B"'E
+
+$"ihHNIYHF9&Jpf![r8NcDklK)+m443cM0B"$FmT,(cLJhbmBF*N+!"`a!jCN23h
+
+bM'[PiiaUJIm'5GB&rUF4ck'#+@GQ1VE%99,epk-qbDaE'!pbM5J()PQhU"SjXQl
+
+43GQ5*Hq)qfh2Vbi0drpA8KPli`!`eVB'1qYM9`mm-Z$(aaAi[8!KiNZ6RR[i[U!
+
+4AJMXaApXAml-6)@pTY-IA,`8HL`frN!0ENV1U5kh4-kKjZ5SR%-9Cp-Kq$rL!1q
+
++SXiXQ#-"`rrI4LZ0eciFZ(qqi1dB#*JL3,(GhXG'$YF#Vp1')%ZfU3p3lHa6(h$
+
+)NH4'UNIIEr5AhAY)4+(XMbGBE38Z$m@j5&"32!2Y2G1#)SPRr&qHR+6#Ep#!%-!
+
+Y-9!l$%1rcV9[[N(h$`"+&Kj&,eX!2@pHBF6!cS6HBf"S($'#CCHe3&IN*TA04e&
+
+ai$XU2c")a(kVVb3ea5'F+4YM@R5bca''Bb2c((),Rk*dQ2US4)HKkZL)$N0*FQY
+
+X2Q#,!#"Cq`j$"#2FKlBY[[#NK2XS%KKHGCN$#dA8!r[FITPhf5fU[Y!$@"`'h$5
+
+SE&jRiVfQ!b2&0rkfcAikD2XGff[ed6BmY"PYZjS)kmHRDJ(1-#`%l$ffmRqN%,K
+
+T,45N8DC1VJrDCYAp`FjfXMpJE2p`IlbXc`+'H#[`5,LIKVT[B#jDf@r!(hPci!e
+
+`FARIbC*M!aJ84RkiZ2ac[c`C-1820,PA%GqSR[MI%X-M[qISEN2hEli$lRlKq&m
+
+#-f$A!UX-%!bMrE2e[8XF@0p"lkM3U!6q)4eLUihhip4QRVE+@&H'P4Z4X5%$f,b
+
+Br3"f5eR*!(DkB**1L([%SB#G"3Z!#qCjj+A5)6+)S-#UJLFJ#**XG#Gk`BC[A`B
+
+jbLrFjPb8,*ldEhSp'Ti!ASQDrT*5p`0E"hUVLId[haI[&ar1URS3'2L@E2e@9UA
+
+H%E$$F'5hXm6!2,ff"UR$B!%NFd6r-m!a$RaIGAYXm)HXfYcrCY8U$UDQ8cZ6Rrf
+
+K(6d'Z%reCpFb`2'[RANdkKlb02CN-ILGkCHr'l'%RcM4rl&$$SHaTp9K`&*q1!-
+
+"Dp[lA@&,mk)LViQecC(Ae0TZ49l2k#ZiYQ%,Q!rlXkDL![L+#JK"lZHK%BC(RK,
+
+Y%FPi4KjLHADmZ!J"[2Mr8AQJmV%h!FX5jLfH[1-ChUGDZjc!`ke,p3ATiHLaDKN
+
+9cXR#HIj2Lf-F(,hKH%rRT!c,Z8ei&RjE3#SQT3`hQPd6EdAV'R4HmIrd&K1rEGQ
+
+hGa42FLkLPYc!jajI2q`Ui*DKhd6CdMI&Q+PU`T33$*&IhJ%p`23Rc-8i*4*!6VI
+
+%m,5(`G'km2h'3Z!JQ3cmUjh-#V"P[kCCaGKph@@$FB5&m%Hl9qYh$C(-eE@0ALJ
+
+jp+[3icmX4B0,A3XJ6CHC"+LriqmhB5mL*F(Ui-(J1L"9ifbMdDJ&4(LQ%e0%@AP
+
+cGebr@a*#B$KDVQ9XErV(*(cVm(JE'RY[RRN!hZCrDUja11(U(%5Q-lFkUrP@BFY
+
+@D!f9JdG#DfL,Emhh`Pm8,2r[mUC95*3LM[m`lXDE@K[#UU-+$JNceFc8IMplae1
+
+UC(UhF-2Ze2G2hamR(8-$bk3Qd%3"kkBQ$'Pb'Nd8,!c6B&G,'%,A["#BHES#QK2
+
+U8XUNZpBA@'ebl9TQEI"#)QC)Pkribpd*S'B4F2A(F1qb"CVH@`(q2Ij0DdciqJI
+
+BaN@R(0fif+mi03M-T,QrNa9"IF*Q$NeJ,pLpKIpccA2*m03S6R[JA()F@K*4T)N
+
+#lSKPb)#lP&6YJ$ZP1QF#lR%$!NET&r[!qh#MIZIE9al%1iBm!Y2YIBA%&mU'`69
+
+h`"Q#leGq$IZj,[`!)`5iIh[P-EE[(N"dacEq5PfRaD,&S[)ra5*A68mYRQP(JP9
+
+6q2kS$J"ciBX*eF3HL`NdRKi4%b!NL#XiLMVr)4kfA,EG!9iM"B$H3bNbh9-8k%+
+
+A&h"d$Ir4VANS9ka@jp48f*DK4YN5A&58cZ%Ef&k3!)Af6EH2+kp3*MYYpm8f+Jc
+
+dXMM$rdpJAIkqK3$B"IkjfBVe#D(q#DUm"rSeV%[i(ll-"&"YX$DM+cm65$'%4N&
+
+ejcil!@X3XcM4(NbARRUFV5JJmQeI%S2kIc@b4,q(+BelrP%4-X()(8JYNpN#E`p
+
+K!r"&+l!JePSi'-@qf5(TA$-!,PV4S[G(rh&aDd9$m,lr[kkEqfh4S$J%f1Fc"[C
+
+4`ULVr!!h$X%'K)R$2Vi#rlk2Q66)I`pl,LcNRiN,4J3)Tm$%'H@dFkpE-1hdYl'
+
+*e,"hC&)ml%YbCf`KRK#+2%Q!EAV$U'"h`"T#9"(f)Vm$#cq#a#FY`5hr-45I5GP
+
+m9j4q$B9p&0kq"23!hbDECMR`f5k12445#fJGBTR!T3kK6'LX%[MNrXk8DB"NP5"
+
+aFM39d#VA1N@d!5JQqmM!eIkq1P!Jqb*,`"l1iMZ1mT3rF*&mL`mjY1F4f!MCXk6
+
+RkpFr)JDJbZh%44$qjm5BSJq8-*LJ$B5TfKXX84R!SKQd3G2h5i'R1lQma+Li9`V
+
+FF-3FeS`,kedd9(QD#8-JA"0k*-#aIf"E+"$&4KR`q$Y"JY4)j33CF&N,,-M%MaY
+
+PU#"fcqmrU@Tam!*SD3reEpFm'SIdE'$KX%'K!m,`i1-$2Eefqq*c*dPb5bl0C0L
+
+k45XYrlP@68J%-4#YST!![J[QJprT3e2KC+3ZD%"`[#-[NJQjb`B+8D6R'Jj"CXN
+
+43K*B'RP*ckem+&mP`fFFI*CZ'&`@,"64QM[N8'$`CK1--1$NGl#DHK"V2ba9r)G
+
+`)j@*$Vrh!fSA`l#4YqX4HhX'5-%H,mfU!I%1p&ZM!6RAL"Vq[lARq'rB'Fld$f'
+
+c9VMkIaUEV,)1eL0-ZfKFIK4'G#+(ejGfF[UNY'-$-*&fL)iq*ZhkTb5J%%AMpK"
+
+!4kBF)BLI`1!!r54pi+r#Y!25P6k",J3dKY[LJ)[ISq9AiVCrC3cQ*h%*,X3r*H)
+
+fl0+`)X0rlL*MBY6'DGSEB[d6,[[)'k*d-l'(m6LTATpNfA1a6lVXfm8qpdL"aF@
+
+2JBp`Blm'J[5%L)&hBK&$L(Dae$iai@B#+m6Q!#1)@2BP#Z!iA8Q,"j5+mi"PRHU
+
+(!-[mX&6!(KiR`"9Bj)T'jXSP-&Q''ZDHIJ"Te'E#eV$AlJ!mb9V00Dk*BE`0mcp
+
+#'V+VBbU0-,fVC0Sp&)q4P$U6pdpk-"D2bNG@8U(iIh4CcNL&T-`5SHm+5I$Ir0V
+
+S0qp*r,IA[`rbeap9Jl[JFhiRjY&"drrlp#2BJ1fDrqr-[15cQ9,Gda&CU32#a@C
+
+,+kL*JEH5DQ*Jp@T$CaaalP5pad8-C-fYGFMjrrK5hfjip3I@BeG'Z*AMIma#[a)
+
+MrfZr'"XE&6cK*51cJaj(HFYFk!LRPZB,jb*VPTB$i"5QVGPi0h`i"`Z'#-@r"!A
+
+SpkpZHM3fk[2j4eXY)kf%4GUQ1CJ)AA"r(!hd"CiUJM"49,aKYJN#,iV6U(mM!Hi
+
+iBKfjKbGhM5ZA%i)-)k31[4A"XS5XZa9i'36efh9DPE&!&)4iqbM+!J"f$ki1R`9
+
+8!3XKbPJ!B)%5P6c[Kq(q[iNbFK$3l`bpA"*dllN`[1cIh[CI!IDSRB3-EecdIPQ
+
+lSXI5!3A$)'KI0-+bh,G9DpEUT1F*G2@AamqLMpM$r#20+fQ2TQ)adlPSUI'Q9%U
+
+kDdfIT+Qq)p)Dq)*qTB"d#T0%1Pj`0*,1l"dY'IK((((J'L`jJ-Y&i%5Z![CCI49
+
+3+A`CV!aiJEmT2kN&2*Aj`b25!jk4`epJQ$@"9F2cAKNiDJ$(P`"Mb*1(lBGYrdV
+
+1m$GI)H)Gl0#,J4l$'Z56EAl!QkI+GXmE5HdlG[rQ`RYR(KPV2FbIpFpae%"LpNc
+
+0k(4F6j,TY$pJR!)SrJ$Mj6C+kmRe`)kYZKlqaQfk(V4YIfKlh'F$0BV)jKp[M3j
+
+-[McaS2D9$!FE'5BA,lKrB%Ud'iBBKQ4Ji4E&XD4I3G!aK"MBpiLNpd*IUVZHCam
+
+5B-(CIPr(2kV+i%LpLhMlMbMP52qlSJmc!&M3HYPIrmpR#6VchfLHf3i&)-2E-`(
+
+YU-X'V*J@M80D+PRkiBhkQ($d""MBF,$K%4B)Q!4`'(!B`Y+%4lJdrM(,KKq!U,-
+
+L9a`G95SkT0)`p+Iaa*Pr!jl(Y"a2l)j9f`elFVI)bM!r0A-P@&r4ElCD[H`Ir$E
+
+IL5qX`prRGbpqTkkfB3Z()2Ia&l!DKK$RC[c#1HRAT`CihGd"ZS"LKIh0Hi'@hQ[
+
+pAaCVr)iBZ(8A"Q$YL`EJJe'DX4$q8F-PXGGQh,4Z#X1`RJ6lNH3cUN&f$)5Rp!!
+
+`lIiG$%'5jdd14'4&`-XCd*VFiGic!$Rmr1CIhA3#hpq[E``Cl`@S$(ECHM3qHpM
+
+Bh!jrHjIfH%Ih&IlGq20Gj[ZZEiM4fmE"9@&S"d'AJm$pd'iPNme(D@kNbd*%E`@
+
+`12AYS1#Rj%("Pl8[SP![)S%p*EIII$6HARbB0bq!4E0p3'Z4Ih[q)-MBFc*3mb,
+
+If(BAHPCdLL1reIpSdXPL)*EcYf+@`kA4%Z"VbVfCVV#62&p6(p$4Y,B*(mA3TQ`
+
+843bbi8)9-F4PSec%N!#@M5C&$1GC-AqYC8''X&,@R8%F,3eA'H['SAX6"aD1RA6
+
+h'jL%k[$TYrS%X2LH@R5bP4S#Ia+jC61`pF5$JMa#)aeqraEmF[Qq#I$lYhMpK6f
+
+'cirb*e-'UD(p#-&i%ZSB'-PKrqM4P!QX+Cdr(AL6+(`cm5rR2fVLHDSXj3(Aa+G
+
+M&GI%,bNYK!9FNplrCq+Y6#(5!b`q%`ArGZ#hQ4fI[8YklKmpQKIkQSE$X%3P5Ik
+
+a`'`KrS4Hlb``fcU2q%#cBPX*!@N#F,PD8V'0'ZA(+VElpCD`JIlVEZ#rDr3BE`(
+
+!jK68CTm&E%Pj38XrX1UfSP`&2,6J2IM%&hLS40qrqBb!`T-H#2V2J*JN[f[25BV
+
+5FEKIIKc@-rk!3feB06M3jJFFdLUU'1,J"aLYJRbaN4VFm%C53rA$YR`9Y#KJ*kC
+
+G6-QJVkG$m(m0FqM3qRG1Q)RI!jG!Dhk8r$Z`V3dr`X[BFf(iIVIN"4m-'pr2%rF
+
+[AJp62%rBPUDD"1&D+3!86&T5,3T`Sb29SN#2Decf'Gr9NB&CYRFSiF2q,R6*rQI
+
+UVrT$jAAP8P)5!&LaYPNEKhlT4pC5'9MG05iF%(8#0S2r*pUS!CJr@NFArl-PA"+
+
+T(D4(kELPYRjq3SDPq#Q(fpdl1Xl8Za-fSK%RB49h)NiiXT1+NhCNjfZpf#b)J"@
+
+JrYJ#lhrIFq,$iHYfNFlSkreLl1X(U+R3I(L$R!)bP&bdEGMGlJpB0C32f36kZ[F
+
+)'KS!L-qm(KDH,ppU3X-"r3phYhR!'V)6@$)9,H3ME)'N'@hVr($RZqSI1MK*9Vk
+
+B'PUZ#j&G2DSZK+2J59e)@M@6e)AF3U!Jp2$@rA$Krdj%$(!%[(BH14@F*'S-`0[
+
+q'BpG+U`-`p0$9HD(SrZ2aJ!**RJ`&jCZ+9XcD+b`r1q+"H8iUii&kAEEP#1A,1$
+
+i$eX@eJI-P`!f!-"HXF(0RJ'!ImX,!2RKr3%BlaTl"i)Qi0`'`,qIfrR(ZCerR$X
+
+!I1-3`"Y)*,,!ripc@h[ZFrmKP'a4qd3p6dG8(LipjaD+3ap`b1bT-I3f2q#3!%a
+
+4(HG6(h#i#lc'aprmJ%0p+8TC([`!ip3M(@IF@%KaTA2NC#CZ,"H[TQjXZhMe(R'
+
+%bIJa*R(8)#S`*d9A0jK&Q(MFcAlNE6!S($f+iCVF6STAjMFJ%8ZPaK"BRh962l$
+
+AiTTi+r$hpYHJkEmJBqiR+3,'E#Xeb*X!j2ZHXjUA&f0hJ!(HGY2QNQeB2dmRML%
+
+`p,!Jc"8Qap-!3@fV6rJ*+[FIGD)5T2@S9HUhHrKF"Uef$mPPd'RhL,AJ'3-+[BE
+
+9pF"kqbeErIGSCd!8Tbf!0epIB1ci@BD'J#R$)Q!hmjm"3DGHrQKBFrImRJUiHj5
+
+rHr-2I6CF2(Rc`llY!3!I)F9c14VJ[8F8@10m(E$,H98232i@'h$h,#2%m8Ub%f&
+
+1BrL[q+'Y&jpB2ChYD6ZlDafK(C&Z@lX0k`&hfFUa9,a8m9Jb,98kPM%Ve@P'Ldq
+
+F+,m3Dr[q[lSRGM%Jq#%RKJAi!m&Y6KY!lRX$mQ[dpVcpeF93BMDXHI2VlQ+'`+j
+
+'-@-r4PA*,86Kq'Gb`(50ed4$aeeT9($ER"2DX06B(+)e!0IFdE&T+Fj6!e0rMmh
+
+26rhlf1a$""+iX0frr@5V"pMVmi[3Mm)p2Ep$m`m!IH`(!8A!`pZ"UkZblF--(*U
+
+IY8EpP`0VZVL*30PSR"$9)p%iM1U4DT`%e@1JPd8'%V$(%pX2[D6F6`'"A"X$'Ri
+
+6B$M%mUMm-(qCmek6#qcFJ1pidX2Z3[[LT6a%2DiB'clQ(MEBYP%+V'e4VKiMTT%
+
+%'3VqiYI!9'N9QrjYYc+SdT-rZU6'r$F"YGdG,fr9q2",qQ'SGdYXD)%209#dPd!
+
+2q`k3!1jrT"pXjrL%cpZ*P*JHlpS(G&E6iETVCM)qp!&'UF%iDBDYH,IjBDY@DCm
+
+-@hA#[NRBDS!CX,VT#d"BXR$Ip(Hmf&j[#AZjIc'k[,rF2$XPpT!$p,X(rYAE-[$
+
++[3&S!D4k2#-Ah`),9pi#d'J!632B-lrSekB-b2p1`2leVTih-"&q,0`r"pKS-P2
+
+0"fm&AUEbfZ6emfcMR#(&`[fMfDl$LC9iE8Z)[Fr1!0j!rVY[!,X[8Feh6JMVbGi
+
+m!d[c2mfK4J&h9+X$r`XUNC,`9DJGkEYCCibTGR$m-DbG*EQEK[,bm%@jl@q-6UP
+
+h0I$kAQp!kURPc`!GB-N(%J0MreXjipK[N!!-a-BJp#UHrQmp&lk2hJq2MVip&mC
+
+RfrIhErq#c6TNM,&TH'J('S')BEI$3fhkFRMmb(Jb2$)aRJj2bpEjerM%cMBjb)k
+
+)&bqqTm+ERF+q&m!Le1F$AYjHJ"9-%(jB$@Tb-%9P)&(@[6f,lje!RfG,G@fAl60
+
+m&I-LV,96INAT2ebD`jhK04$AjZ!B2mqd2Y2kV$GEFZ#eX6jPN84hJ'E,GZ$#e(i
+
+6*EUPMr#MI(jV5CcP`rQMU61m*k(4ZFm'(e,jlF%ID!dI&`*iIhN(!NGm+1Ib56J
+
+4@0dkk!YNd(Pqcj4"bm$$`'A2r6e`mZrcpJqpE"Qi[#@ZHHX#D[Zp&cf!qpSlC-$
+
+XlDBr%2RZFX$l1ci`TMk5!m3d13(S0[F#fkiI$#reH(j8`JG55@`&[0cjem!k[63
+
+5"4E$%,r+1Zh"%*3LRJ2qkHbCaR-#")p'"iD"dSZU`kcPK3$'l)JA!R6SPPjm1h6
+
+2ZpJa%)D[mZJ0R)Qp[h0lP`*hBjN)q)#Aj*VI@j)`"-ZEaqrLN32ra,Jc0HD@mN[
+
+QVU4[HFMTNEQVe,H-X`8IS63UH#FQ@41X!FiU0E#0r#ljhIRlHUQdjm"[@SJcf(!
+
+r0@m#hYl1ITmImPmJ"P`m!&PE0YDqE6Z,-28j2XEpkmDYrVIYiQ(k+Vja$PqP0ak
+
+(VjD8aN#5Lf6d!%B8B5bXJf&`IRHqM'bIrk&d[[lARm0rXPEq0"%`2Ra(AmAlkKp
+
+5U)cr*`,D!83Jja*q1eVHdrhh8"$#`B([DmY(lZ02Um@k,$MkjarKqC2Q8SQkSL*
+
+A!PZ',M1''1JAfDMe&3T#h+BLhULk*Ij)[)'LHE%G$Q5@UTbp#Yqp#J-A"-CJE2d
+
+h&%S[-R!&pPkmElkR%'m$cKEHmGmmhAUDJbj@BBe2%$L`m1@$iF0rGaA-ca9T[8B
+
+8CF2,qpH!''r"G-6b5P$cS9cM12I-VR'DHijYKA@jBIL'*'dq**I"HpYm-%'!A*'
+
+"K@IN8-3MURHLQLQJDc6[j98B#)j*Sc#f3IM(0ZK$rT11$jZ5IQZ!a($i2B,rHi0
+
+@HZi"bJTN1)!N+*&3!KlrImQIb'YSK2&ClLU&-"('0iTA6N1k,1*T'!K"K,piffX
+
+NQ5m@8m!a222dGqTjd!9F[R)$fKrH(#q"Qk%mA0YcEiIKImT%r,`+f(i"h,IkRcJ
+
+#jH!@"$kJm9*qk`H%%6#r2!$120jVK`%p&fq1J2$0d(q@"$&K`-%S9mFk-!AqS%r
+
+YlU!l"K$&YJaY6pkP#,Ik)!(qL-c[A31EPch2J'ZhZjF,6q9YIk"9[2q01Ab$f"r
+
+)m,,P'@LmI*VS&r'frc[flfFA1bi#d6Q4#DR)$b$rfl2P*kY,IMhp[fPKpQmZYVb
+
+++IH6aMe"-)Nc5Jqmerjc[S`$EeSbHDZS,D0#mE%1j8amUN2M62bkN5RVG`"T!h$
+
+"3'#4p0clZppK`3Cfq1C4RYqGm5h!%eKfZ2Fi[06aiShkrRIEB4RBTA+I(l(Fqf9
+
+0[cq#-"#UDqm#X5+J%2mbF"XU0[ca+fL5'06PpVr)!ifpAQ1#kD5e61QrEC+6Fb5
+
+PbhLj3$*(UA5*jkKI5iRj"ak*3A8I"SjIbbebI$Tc-$b`-")1GQ9JB21h'0N%k2P
+
+$UBajE2q'(EMZXSX*KfR)55mUd#FTl%XQ$V#hi@1ehNDE!`rhld#Uc`-$rTZr,3q
+
+b!K#,'9b&BBDeMMHT#4SK5i9m6IiAdD!P'M$NYBM2)"d-TjbU&p5db'04m`,$KA@
+
++&eUJ+ff6`T!!#6KrC`NN[mlhC@6E@hXKi[c4MBMh0'rVQ303i""@JRk![6QcJ'@
+
+5A!%@PEl3E4rK-m-(`(e`H1GNcapfGQAec6pFj3+jpAIM(abiB@CJQ'R$'l!q&ea
+
+8`m*!5fVV`'BB)2`h&08"S+dlK%#"BrcE#LGBJkfhf'HRA)!Hi,ipi&rc*Jl`Gec
+
+bhraG(RL92r$V"Z[#+&`I$5X0Zm96i`0lr%rqd5pNd!c!%Yc0)BqhT$3GiP9i4!c
+
+'iL3ihPCk-rc5hlmEaaGSBP&cc0qZ!qZMmp(!$Yd$V8i[$b5jLm#3!1+`Tc&d(6!
+
+DpLE$V4GlB,N-4QZc#3[3q4Pj")+-2!+-KShj[pMf@3-,lRE"Q2qc0X[3(""Q[,9
+
+lr"B0hq0,l"jH*DQ#MdfqG8RL8$ha$SB3b"$)mIfA8H!mAK#)3++f46,FZF'H@Vj
+
+3J"QJNJ)'k2+,c4T$S(%aG[Hl![%!d-R![3q2X!hl!bZ)KS")Q'2[Lchqb$iX(Al
+
+[+`rEB4d[L$`XaJ52,&hE!VK6G*kX%-6AH*)EiRVKrab23f%+aGaq8(,CPTb'j1U
+
+HX'Vq#Y3R!HS,m4iT")CeF,!rp0ElCLf3!(adleX2F0[!!@*$D(X2mQrDhHX!`(k
+
+UpBMT[Tmi)!'8HGG1bjH1GMM#2Ik1!mJAQaH)`,`feZmM3&K9r"[8YGeQj(c8KU$
+
+BkSPAkIf(D@3K%``C!!)4[QHZFPY*IR$@-mrp`c1r!@L3!+dL#IY4k``&!m3RcPm
+
+!%)5!dB#pPi#hKh1JXYJ*H"X)4`C5!VC-p'83rf+KR@CLk)5d,45$DF&(INN6Qc(
+
+fRQRqNm4Q2m,H@aFN3[-%4bjP#KddF0Mh,$,3$p[PZ*Nl-0r6ZReKk"pq$YJ-"q`
+
+Y[J!T1dCH!+rFm2k028Zfi98pGL5YR(dR8!JS$+b'm8`4rpJ4&Z5KjR9diX%'jB(
+
+%MZ92U%IjC!1(j8qBEH"SCrQZJK*qPj6#!bi0LLd-rlD-[N%-$,--RiX1!i,S3-&
+
+IP([H+i@N9BalJPqkqU*'6)b$rVPB,+'$B46UTT!!cKL)$+X""K9kM)%,FJ(`Ipc
+
+b+IQr&qDRJ%@fqi'5G313!0jeM4$a`&RYEcUZbQXB15*`MclY!R$h@hT8$0qA$,$
+
+5`%(I4G&krKNF0f!431pZ&-$jD5A9hGJZJ*Y&`)Q,ChX38(Tl4NJLM!+AJ0bTqcJ
+
+9b,GcK8LKhKp*hRicZj4BFRlcA9&1T3`-)m2$@YhRM#M'0f)1-@,('RS#!Dp(f@G
+
+9JBL,!N8r,M+G!#k(`Rcb6,)!!$EZBdZ8mI`"25Z!CQcN8rlQ9KDYcr[e6T(E%55
+
+!B'A5p(mU9d-NBFY"ZLS)chF'1rlrfJiB#E,i0YGDeD[#[b[KJ6m+NqM&3GmMfrF
+
+!H@iI!H+jN!$#a+[`acaJ*F%RCLk$CNPc$#Z$k*akiNAdrQ'9@Tb+QRcS*)N2SdX
+
+Sc)L$(h#ia8K43"rm!Z0k0bLbS$$9"-YE55DB8qIT"#H`[qI("-8"iQeQSIl[CA$
+
+R`'m%li9H2X2G26YqI,kXQ6qj(CJ6KTpa[$!X[Za4,Y`F@!3Ll1chTAUrl%ldpAZ
+
+')piS&8#a1M)4!`e#iIiRJ!d3i`meY(58Fi1Z`E6QGP1ScY`S`JbdqjrBlm@"$i6
+
+A@hD,lMA`dUrmX&MaGJ*iH2j0B)l4fRm"@$cT16PTa+j"DK2U0lJlC8Nj&IAIkVm
+
+#lXbY,fYK%lF[bXJAPm!qR8qZ9r)LSYE1!('9Ef2T`!c@B[PR+0TL0TKZ3IDbe63
+
+F#RQ#Z1D)qjrp4f(MqLh@fpp@2a-K34'1r,CD"LmIhS$d`M[HAr`h"JEH0cqV!2c
+
+H0m1)rB#8YC99(d0NJ'22Z`qRNrir@km0%)4YhqUQ-2IVJJ,)Yr(kYS$mV5m1JJl
+
+aBAP'cKAYcMZjh3$Qe6iLSJ*--5-FXh0P&cMrZhZZkB[Z5Zk$,VEkpIUKd#i[1eR
+
+K4m)"rpB0qN9LG#fK4b&!pm[HpX"KX+94i$qeXZ@%-+",U)h8+M#ZNr`*%ZJCi0,
+
+[LJT(L0)Ic'5EDVrT[RFX!Xh(2h[[!V*PR163!q`42SRiIC%(mG%,m,lSGGPcYJJ
+
+mZJR3Y0%$")+i$0KR8$PPZJ1m930KPHq[H33JqTm"rrd$mlmDb#`,"+J"c$))eek
+
+m$(MYTFXJ@A[,4&![45k"jYN0fa!iASUA`EH2@PkEIh4$pJ)VcVrmHmTriGqkrd[
+
+TIa$)lp3(Q[iEr,[FHmk+`UB-JBVJDD*1rDFI%E!3-2kj"`r,B1lJ2+5JTN(F1N,
+
+Di#rB4'eA"GDU*ER6J"&EiRpVEP`X*R`TmSUDZeNT,)SLIi[Zhj1EFCP)e*hhr(E
+
+E!faY[['255`V!PY48)P5H6(fAj8#"JAhEYScfe'mXKK#d3p!lR%3r)1A+I0hISG
+
+*-f+kji[@eD%[Q1ieSI+,lbISI*C,eFbA*,rBFdpP3)*b1@$(+A`Nr!DN$JDc`Rk
+
+Iq(BiBL$Eh'XI6S!-TG58@Ukkl$)'3UMYFDajFb`"`2pZ6"f%Ab!@"5bm232T5NZ
+
+-`%AjFImM'L#GfNk9lZ!qF"J#'4%QdE"r@[(NIhdrcpiY`4-lc9MifSCdMQdLI`!
+
+#jhq5@EdEm-6$q9m`-L85Br")'*5BrqmE0aka$E89rZM*j5YA+je$EDBmdINMmMG
+
+pimlrNILEZLNV9BfYkraKkr*0qECZ,&@PVGZjUi3RBU##'I#%#F&&M2!E,D,ef`+
+
+!4`93j5%(aIhQ*X4[,A0f$J)*d+Ljrq8&ZEQrEd!A+J@(MIV6eS)ikcq3!&3*$[V
+
+)DT*6UUjI,U@%LSYP8NV&&FZN8m'"@Ek0i"6`80qdK,ZmcSTUqq'4le2@J8mqNIU
+
+#K)96Xl*CaHM8G63Ye%9ejfKB6)3Lf[hlb4L0)$d!BNSJrkJ%52(H[[&$dDU1XL3
+
+91G[93%8&FTZVSS*iQh023EV0@cd&TiJQ)FQ+mbGq3!V-&'#*`*%1)`j'[PLp*qi
+
+*[`FfAk,MNP$Ep`+CJ4Jm6@d22$`4q2p*0BXelkR!@[,9YpK&GmHH3!MhPD3j@K%
+
+UZEQYrc-P3mA!ra6Hkk,3eA#h$&4Fr!rSH)FJdX[D@bAi6K542Q$KbJB)r)@lm*!
+
+!B"rU'8IGK@GIB%*kQ!4)QJhapeUJi`R-"28lX!L%f0S#l*fp$)#X(`U`KqcbEdk
+
+el6)15lPXlYHeGZq!3ZX,Jm'k#e-Kd8E)"B)YR2T25@%-G%-f6MPCAr9+e)Z$[6D
+
+cZKI[53CN"HFAF19(fkVI9Eb9&he()-)0RT@bR,UZ3cF(%)&CqTfK0N#DMId'1(i
+
+VJ2FZ`iqBEi$RfkkH*J#`-[c6AHpild4GISmIDi"cFP-BmFFH3-Am@kKIcd10)I$
+
+4UrXlJEJ9Hbq(["i!rCXVGpYhiAGh&8"RkAMQKh*M!C*C#,H3!&3NN@!3S)"-m,d
+
+Y#dA0F*KZ9b9ciG%[825b"lr!"VK-%hD"""LK8`'Z`,pZ+U,XlpKEUSLbrdIXE6P
+
+9k46-GKMbeS[Ia@Bc`'1l"r&KXf9cdr'9T@relIlPJN-ir*jiFl2(rZAYR,M9Ep2
+
+MB[ADbIM+rarQT20hZ)I*-HQS)-2$8*04(Iah5j+!m*bTqd*U4V8)Ura-Zd8BV&P
+
+(@i3crl-Ci11!Tplr$mP,rEH[N[YIASJPAS#'$LmD03T)PU$5Bca(UFkeFT5T%jR
+
+JJrGIfJ'jS2hVfp3)E%lIc2dhK*NGrf,ZY`%PijGJE2'I'PZTDUE'PKb6)f2EXNc
+
+fFIl4(c2p+rRrcpJDBAimQ[RTH+@@S+'f86X,d3!6@#H+Q8992[P3fiKNb8VcbI%
+
+Zl0X'`NbmN!"e!#Ei!a%b-#!$C(,%*A[r`#JZKBd!'mL*FR(jQkrr*4#KFYYfA2$
+
+,laa0*GlNYh9GqPh2JR"P"3JLXUAr8BpN"'H'r*pj#8URc`*fGNdS@cR0U!G)q[r
+
+,BGC+2%EIQ"&p23hIQ%02lNk12B%&cXZm!-HqAQqHK[,KVd`c@e'K,fq0A@&SPi!
+
+@JaAi-pqHT4T%laI$&`2%PaHrcFhD9qk,XaGr[i(,cCk@XlFAj!%r!2,&eQ9J%$3
+
+D#JG+kMq,hULZ1GT,$6@+'N(PcmQaD2Yc0"FcrPaV,KC,!r(LRch&)[j[b*L62eV
+
+%`d5NrS$[1)",5j(KI`fm6BQBI$Q%YRqeA!&m8'M2AQhf(ld`kbYCVc'ThqA&8)3
+
+"@m'!S0q%rX1rirEU0r3E*QVM9Xp@2q"GV"!``[a2rLTDAY(p'S3M4YANkr940HQ
+
+@EDr,,"Tb'e9c'pX65Jq!K[J9kbqjY!hPrdE9m#e3Im"H)k$[0iM@k"rTNkR,Y4D
+
+JMIR#q**i5USC2iC`!Jl3%3LRh2qmh)%UB00,'G"0r$$`2M"`qK1[kjhBZ-H2H!P
+
+)J(dIIpJ!%2PR%,N0S8%A16amGAXlq+fEL0Ja'&MLZ0AadG-2i%Im6Ya$jBIL+r`
+
+(%IZ`rdRSHFqP5UXSXriV9p"@RdFPLe(3lK)$CaMm036p#(I&2m*[cYmT)*br8f-
+
+3qa)%X@*IBQRm+2X5e2%Xqe,Q(kVr4JQSc4(Eb2J2Z)KNYASS,)EAZ2)NV3V-*+*
+
+a)HT3@TH'mFC&8m"qNip0-F-I3fpl'@"[H`(ZIM1ZSfHM8J1i)bd(ZJCiq-*,PVm
+
+"D&b1#li'r2-#B((1d$[f@rMc`fmkY-%`[2Z1&`4Qfr"l('#"r8ViRQ!kF)DFD`J
+
+%(d(S!C5Fef!C'KmFDJ"T03Fa5BhZ2cH0CD)`S&a`6`JfJE@e8ZXFal6Z#I80&2p
+
+2#Sm%Yf4GLMMb0H,B9REJHi`iX##'H+!qMIhSpCZ0MAqSbTN84Gm#iYD@T66$*-$
+
+LJVF"2X,[`&NK2alaQVEdXb`ATYEe61$Ui'VAL5dVDqlTD(24i[`20qhk,HSDC#"
+
+N3pm,!0J-["IB&,#S"pL'e2F1A+)JDN!A&Xk"C-Br"kD'44G!eZc"63!3i,aq$JM
+
+D"pl#J3fV`EP"rh"J4FA@m2Gh[(pU4i0hdGLaA"qNYS*US9!V0Li3QYQ`l5++qm`
+
+aYJTHf4"!hF@LRB$Xh$H,2(D,p2Q6JJ`mqRb"US(!"i3!kk2k0q'"*&QVJ64Uqi&
+
+"M'&rSYVZS$jRI#PKdQ,Uq((Def!R"Ha,HFKYB`DQ9(JBV#jR1(c5cicJZ0K3kGG
+
+FH-Y8F'P-#%hE6K*F,m!L2&#Hl!&q`pDlbjk(ji[,rR[i-,b,l9S$Y5#2bm%6rbA
+
+U[K$Lec$AZ(KQYArY@'-pJG("JQ-63a52Njrqml(eM@+4&&'TUjIj4fMK69C3rdD
+
+&6(c)J(DV[!R[Q5m3[cr+!5-YP`d!FKpe!CZkfhl%0Aq`)S-F'8#-[EFe3*SS!CM
+
+GGJ6b`PpB#fbP((a8VJ*XApB#8AaHeJ2%PJDLp,h2Ei$IRh!m&!"!Ja%@riFMQML
+
+%KT[$PYM4bL'r@UiFj9Hh9`lle6-V*fN%[0%9R*K8)"#8(eM'rd,!GVj6`!Zm2cZ
+
+B!!FkFZ`cmLb3!+VUmKTJe54BQ3NX)[L0!@%35G,Ya[C(B&jdkM#X4N$4`f(QV2,
+
+'"!4$E[9pKTi&r$Yc)hlh!JfqHri"4NbGN8H`I$%#`0p3f1m+bSfEZmeSZ(p3ZD9
+
+J[R'+lL$dHr5Ep`F&r#iNJRpN8bci4`d2TQ-4'r)2#Q*dGi$l([J'9+BBP1I$@'L
+
+Hp)6e`iGe,#b*1VebTEiJ3Qilh3'lDSF@"Z#(`eTe$@Yl$"UaX+Y[LE"[e8U!C*D
+
+ACb`3KrI$hAARL%)rHXVf)"F1p'r#ASG%m2k45*`5EmBlDMECGNdS'"N)!MG3(f#
+
+(IS)448`hfN0!IGKqaI(El,XFm1lT!9C!$'kqYI4XK`1!$Bp[Hr6iVGbKFSNjKlZ
+
+HdAJ-U)IP3%c0"CIGU3#$EK4$A@Y2NXB4bm86NT!!61aV1$b3!(mU,eXaDV0LA44
+
+STXjIBJ2Hm(H"ZQRC`fZ@,a"8GZFL-$cib&di!2Ep93MV$A!-R)5qaCGM)!V'-i#
+
+&1ARJA)bU$!"U9Pq!"B$,`i%&YVm*q%AF!r!+!fb,EiGFTL2r@6)kr+qGB*&5DYY
+
+eZXU@p1UMAk#D+!pqJ8eq6Aa"*qjZJ%YUAk"F[S0IB2&eE5&[Q"95Y1(0U""B`aq
+
+,#UeR`R8P"T`bM`!c3ZTA9S85*KIek(YiR@)KINGmp!F@IJm1r!%DYKq3!0X$k!H
+
+5Dfed56PLDQ8q-C0Kq8F`bT!!P&MS#GbepaZUTaSp9Le)cH4a#YM6,QMiUSmr6fr
+
+JFFLErbh4h#6!QIHLrhF*4SN6m2MAh@mrBSB(K,6@E,[e2@bb)er$&`!Frf"Cjm%
+
+B"0Sai(XjC@##Z@J4mXhZ'cM)2faL5i%#NS2SpV%DjD5VQ'%mkC`b6#Fp6KNZ+C1
+
+mYNRG`riRb'*CTG-`8IdI46r1h`P2+&rHe@&h[4,*JK%)#EMrc(r2rjN(f1@+LQL
+
+b2Qlk(B$Hr`V-*c%!aIBr)1NBJf)6%'!!!(%Sm89)QKY3U%Uk6$q4'DTFlYm2H&(
+
+mCc61!UTJ9CRl"iMq""KBF[pN5-lFIi+,YHfEI`Ja%)p[lBIr(HQbp"E[0rY(l3Y
+
+qRr(rImEq$)`+04HEZmhmfpdU#X6iETN"-EhE'!&a[3S8rHCGcjl1[e98V"hf"lU
+
+U6#6p2C(IKflpcD#kMHhPc`[qS&`2i"p-hFlI%9)F)!'CC@h*rk9&r,BHGDj9ej2
+
+b,#8Y%!qSPCTHQ38HXU,iMJ3%[[k#--V)ICYpB`(D9,m6Y02GDKK5fa2rFj&Nc8)
+
+d&"I*Y"*&CbYSAiY93S6QQ42+3JDU9+6p[B!d13R&(eKk[XZQBR0*6hJ!IJ"b#CL
+
+3!(RU"kIqDac5d(mBHKD*aB4@bG$,rLBpV@+'XjIF-23BbD6M9F@Fi8Z+lA#iYRq
+
+ReL[2Ii)RM2k43GRr4h(Xf)P4i,pZml#b9aJK8lVF!VUBDUqZ#PUeVfmb'#$kQlU
+
+8X[brEiN04*r%`liD32r[J1E3(d6QD,2kP2$+-c"U8(N!+KSLmEl`'B%DH2+4RYr
+
+fl[&rN@aH,r`ELhI1(1j!,,(YE+,K2eKGR2pLGE'aE@a+F!r,6DR+E**0b@dfkDC
+
+-@Xif"`$)[[8$B6f@hH3D[QDb!mZ8+$$`,X"[6cIiIIADpZ6hM"a!C-*K*MjP(Y!
+
+bULH3!2L(hfYBAUJCX+Z$i[Pj-"SKj*I9l6dANZe(EL"Za)+,-f$"jaL`#aN'2ea
+
+)rlIkYjlG$U`Uf`m%*aMcJZm(aN41cb`4G9Zme2hAC%mEh"hcbK+m6#$!G2`cLm+
+
+#`+!Ti`Ql&j)b(RC&CXS#Np$FqLfbl'bJ+E,$rMHNr6DB2mcYmQr`JJd[Qq&!UXK
+
+22hTl)rXpE"pF+(!$H68V*dek[6J2Cb&B!jGhYIfk3L4kRNEer`S@'(`Afj%PH3*
+
+P`RIF0SKa!RpX'kbIBkrL!1l,Lej6imIqY`@k#aX)6XQpLA1%$e-"3$S*r+#jlrf
+
+YaFi"jR!UJ#0JTSR%'5Pa,YDRhfHK"1i8j9U!R9Z#mam5cF$!f(A,-Er*+@LPCH8
+
+8T1@kb45FM1RH[RQK,ra%--*GJZJ4qPXc$Cm!R8!`+Ijjm$hHEl9e+`$j0iN$3,a
+
+*MRi+q'G*d"pBRS)&r2"[90(KIfT5Jr"LDeBapNJ8b3XIeaGfl"rA&pGMk`#PBEN
+
+IdIrVSdAiYKI3"`-R`6%!B1rrKGLYHTb!aTj6jN@N$S0h8TH6-f"HE`2JrP@ijI,
+
+plHf9q`(B#cS)c,Rr!a"iDX&&GUe8NbJ`6r8)qMp!j*crSR`a45[G&2EHlE1!cC&
+
+'dY3rYpBM[`'Z+L42Ip#R8JRQRH$!2dSX[irY`YAqiaKq9c-E!Ylq0H8Q%G$`ma'
+
+SPT%I98#P1)LE2@M&rh1Ya89S5r,6)B1J5d*m(%1H%9YEI5mf4mZ9QrcrkK#Eq#h
+
+AKMGm&aHNB2q0'ld2iDfN"#KZ,V+er@I`f5#mf"AH6@'Jqd@9i2Z"c0qEAS-LrqC
+
+L$`i!bjmqFJ`XmDZ%KLpHj2BJRJ$QY`fhlhkpdLrqN5Im6@,$EUm42PmSS1blleq
+
+'Vd&bS4KZH1'3!$BSZj%hcUdhr*c24D&*KRe+H5KL@qMkPj)3iU&h498J&1$8T&S
+
+#YHML)S40GV155Ida`HEATVKm5)$CmXV6(E#BUj`$V&Q%1Ar0(lM&bi!1I!Q)Y9P
+
+j"`)MB$Q$Z`C'r9DJRJ46iT-"lbe!hqGHdGNMS'BYprr6il@d,+DbS,X#*Y-YKdV
+
+-fhY!,-D[rM-CC4"GQ[A*h405"4$'EbJ"[-mD!RfSEraR@S4X44HBU*hmIHm,U46
+
+`VCAlp(rHY!&0X4iV0Hc$FT-QUj6%LEA)QRLQXMA@a1YUJAYT*5ED+FNX8%M-mD,
+
+!0Ja"l[HK)$DX#3'5"IcLEpD6PF$X`CI)hm5!5H`KB!m1IXJ$EEE`H-m'JR5-1R8
+
+",LiAQeEK`apYrr,HMfdebL'YMrQRVM#m,*D($$@kd"&bjT@ZN!$0+,'Z5*Y4MZS
+
++dX@9-F"X2a)c-$%d(0Vd$r9Vf9CUPQ+RMFd`Ta!X8cH(6"'E"&H4Q2`C1pRa2d$
+
+RjHq$8X#PF0mrV3m,JQ,M*YMSBGG6l(2+XUI1[5CP6`-9E2(!A-#TZ@'ZaL&ri$l
+
+&[mr)p!Rr,KjGZGh`[jdDJQp(#*emZbAfmZlHA(8-4lVXDl"ZUZfM3J`G*K)9FeT
+
+!)%1@q8IAKF&"X4X2+ak#!!Q61J'FAIeG!JMJhZVp[RN*E(@UV!2H$9`"r6Kh[jR
+
+',TrlKjPVU6Z-XQBiG59Kj+*+FL)8)jT4eZdmleh`Vf&4PpNS`[eH&#MqPi'hk*i
+
+bh1q*[kAc$EpM%SGqAi!5#ij@"Sb@rmX(XD3JY6AILGGBlSk'68DKNSRQr#3-5G-
+
+r%iC--L9A,pN&330+!#q'MbaD3!2X#F+`[mF"c5BS,AQVphE`kYE$J+Ia`FQP,hF
+
+diJY!LjEcEX3S@l!U0!al1fK%m"r!2mlI#8&XIbc*A&i,98h6PVNFF[Ka(q$AiZ&
+
+I!m%iN!!K!-S`B5ahh6$""E+G*#*!GrYMfrUqd+q8lcffH8!mFU8,51"k(QmPrS#
+
+`GfcIX*k@Zll3m,23[U#PlG0#`ll3*@@5GF4rl3Y,%')`qF")JRVmc2q'[Xrk&ZH
+
+Dj2Xcc9m*&rc9@jD2*-"Pq+GIBJ'ASY[3@hhq9p""d*HHKUp5LM)a1518rS!RdTl
+
+(*%Yb&8G!d-"VHQqY8FmVLM!8&P!YM3*Pi%V)IjB1'hJ3#id-@m-hqcNHS'!!c-6
+
+RrM!fdK+IPV&a+V#QjLp#1D(q*!9@[fd+f)"4VClJJecPGjcI4SB%1+-I4@8Vm*H
+
+'Jk)q3@$rV,TX`(p%PMlZf1r5pYX-@YFXf``keabh'Cbk2F,qK)2paeA2k3d!TRd
+
+VlkKJ[`eYr,MjS[,kZmEZLPIQal4JcEe+H-""VKJ,$!")I9MC![`*Emdr-&jH!GM
+
+f`lj#`m'qKN%dq1F)'$3adq,)"TDDG&9Z%8mkPeZNNpkQjrJc-!"TTL1!*$Nqf6m
+
+dq(HYhC1!h%ZEB(l2H!Q,',MZF-%2!Kd,rZfb0IUM0D@%`a,dHpA24f%'p'hlMr4
+
+Q#Q!r)Hck2i(Yrj-MfIN[IK(6eX9EEK,-,0i!$&f3!'k!K&,YSjiFh6#rYpQQhiQ
+
+08D$*2#)#H+S#2KZTp3(@r1(h3#$ild+mBi)"lm#`E1@9J4MLph1mE0R[&EJk'2#
+
+Da`CIq[pGDQ+j5dbF(hRC%+#lGI'5RlYcm3NrpmF"eeKr8FA'[e+HirpcP+f9%9P
+
+[NY#TaRN6Mc*chU5Mh$+H6c%bT#F"NRpr0,GAq*diISRiYdJ""T,Dde6912'6khf
+
+8j$IFb%*$i)chE[A!2dB`apFbrr21,IU*3A2YSU$6ISRkA9%X2CMi(AR%6KVBi+3
+
+8bFJ!J2b2aSP5f1qF,b#BX-Hq$33Ll`0F`rj*9SHXEaQB8$X'H,K#'L2m6[k[56H
+
+m+LeefM9"Xkb6d9)'CSjZrprVQhk*$CrpVdGPC1$p,J)Qme$*@4)!DP6`YlEEaEm
+
+2SS,*$M%FiS8fLfF5BcLF#Tc@hm'B`dF8rGrE'6K+m6d9ZlmI2$&hj"Z3!2qjIG2
+
+@B'RFG0F%&6C3LJ!X($[l#LUp"fLX9+#")`[(Z#m)5"Q"PYL9)(m-qKVii0reUXM
+
+B#E!repbrqjfa(2P0lP2qJe0LBqJrqpN-FdTcGAG0N!!V5r,5E4"kiTH!a0S[JN!
+
+'9UkZ%TIf"bT[$(8CLrK[eXUM[fqU)K6q2cQhRIqG-XAHHYLK'pmk9qLQYajAk$i
+
+2j3[%T58B)(+V9hMl"kMd0MLJ$fJ[P0,$D[Vm3kradIa*JViaMq4[KQll`@!$b)f
+
+bH@A`fE8i(TP*Nq1"+Qh`fKDSk$EkEieieIUrXJS#%jM[!mV[pUBcGJYkR+,lCpB
+
+#a55R@!YD%k"B#p,N3*Zei"j22'9`C@$()%a"@PXVJ-Z0I#Cb'1ErIM"RrU"5',!
+
+Gp)lmHm2K$8m)K[Zp'8Bprm6aH"+'%6"'2I,EL5Na3rF"'iK,[c-CC6Kik0mI`pT
+
+f@06i%MJMkqU(B#4rbm+T)6P-dk,#3e2q[+&TUAe"@[G[D&3)pk#,JrKk0QMKTA)
+
+3B,48VDm+#2X(G`r6Yac`Qk#HaJYM#IL4Bi!5QNi!,K%Z'*Q!H%q*T1H2!D5cbi$
+
+8LAJ[cPi*r,p-LN+5XpAcMjj0prm0e-,3r3I(b2d[S"D6'ZqQS'&h!RXKRef+J4F
+
++#!@16q8G"[XG(QLcBNUU6am!#TPjJ25H2hGI'3FBU8$"p('!,5!FjJ,!`+Ar+m[
+
+[T3pBbV1ZD-%`JFXX%6cZhePDQ[3G42%Q+h((ehe#mCCk&3P4c2[P!iP*Di(qkJB
+
+*E1P("L&AK*T(%H#LRd0Lp-GL@BRmHh'8fH!1IU[F8YL#Rb+`1@'8a4"ipeF-!)$
+
+(dBjFqJ*jkAq0$c8k#IL$)IcJ"0L5Z5JpJIL)(f2PmTVf#[$qB1rS6)$hIf3Rj[f
+
+fU+l`"h)!)Ja+mdbDR5hfcHC!jM6pHcXBa$q,aGfrmlJd[5M8PDME256R[2pV[Vh
+
+rBlj2*qPjiS5c3IM,9D[X!3&`qEIkGjY1fHB2#a*ArFVICm!$L+3%@+mhqJ0P`jA
+
+r,(GfriZlT4DCQKC8lRpaV*J3$8bl%'F[0ZhqrdAic)!d1H,IlZcLhdXG4UAL"+I
+
+I5-qPB4!!b21j##LFlK30m(rp[If$if489[U!iBU&KR5"FIr6iA(r$YibUCkQqfA
+
+Fr`*A39el0$2`JHA-X#(FRTRL(m'VcX`8rirJeE2"F%1!f6)2cT0$aQi@!'b-PVr
+
+5lb35rkj!ITVkYc%Ce4)'KMI8li%JU,ma6f`%!`Bkr0mF&+#DmMrNE#MJ`G%p'1j
+
+A&2pr,Gh$m"*FDIrSC&Pb%`15LV!M3#Q8$b-rLXNVF#lbBFK%"Y$(Y!d6QmMA@[K
+
+$),q6!UKUJATcq6qfLL9'3DU`U`0K!cU("J$ajF)!'KJ+9[mJi"j9A52kpb!jd(9
+
+Shqar*eR"T+T-bQ'f(rIrLT'lrr#"Kp0$!5MqVlNm`Zp%--5rMC04"Rp5GAq+a%X
+
+$q%IQrQXpG!!0*(%3L64`K`d$hE-5%#2LG6Arm,EFrb*C-8h`h48S)YBT"3SR--%
+
+$qJLKN!"8r#rV(Rm,)[S0!lIhXF3!)V'BGh'qZ0GJ%Iq%('"#K83MBQMNGKqV$[8
+
+2S#[h[j!!@dc%#!&4l'Yje@Ta-e59$BikI`3eF[r[UhEqMaflMa-$f2Kdk2I`2eQ
+
+-h2pLJ*NS$*ZZ"h$rLkd&-3ql[#(UDLeY0"Q0jFde5QRJ1Uk-Z&B&ca#B-"Z*K32
+
+Zl@(!(M[3m(VK`'pVJ!8[*FXiF&G'4IJMXP5'KriMQECT!'JCBCM+(pK-KIpTjVV
+
+r"H"L-$E2j2h0#iYeAq@&j@`HcM@"B8(Zqbr%X)JB2JI&VbQdIfD+J9P("ajq)98
+
+(!'rBV`p%lKhcVhN%GUj@A[D!MDY["A*6Pi(iH%0[,aFqh!1VQiK!P2MKF(r2Ip,
+
+MZIm&jQ+c`X8rPKjIYeTkbAAcdNZ[1ejkD1Cm&XUMKl00Ur&fpq8,XQ1Rd-"Qcm$
+
+$#l)r%'N"!#3-JSX#*63alJ(8'0B!4f(j3[YPE8Ul(J0P5'dR6IQfE2NrH[MFrb+
+
+*JA9MZ%(U5F+%'i6dc!`h5+aR8(RaeGF`f[pDlZm$5T[K9rpZD5!1l$$!Ir2Kp9q
+
+Mc0K[iF8D0%lJ%`!5J'2ILKb(@l6XXQC`R,6r2ZE'@G*@fdL-r1MIdSd)32CpZEb
+
+@U@5Z!C`mr&[*b4hqap[3`0DDVllqLrVHr31T-Gc)dF$LqUNmGJ,e,UPViI,B'3N
+
+DhfYr(`*1#&"JJrc[-TpiDKJ84aN@),cDUMIShle*$`rmlZHlSpb+'A$QG,GNH)p
+
+!q3jXr4G13rCf$$L'`C!!BIpJZh2rL#LN9#Z)lYI[QS150VR2)p`KB'KIpIRa@#J
+
+#+-+c&c"#+X`Kcbf[`)J[)2iS%UPqqhld+!2Zkh(q,#[Dm3q!3rI[#$k%3pRGBC*
+
+"fEd!#0Q0pSlM3Ljcq%+Z!`a$8&K1TT4$MeKUHq)-L99K`fp%aK29hcYH'B4A,[[
+
+2&PqJd,D$YL0dGE9BHU#`a(Rr3ArQrTfjahTI91EUPjabcEl5'Sdb9jE2(E'4rCr
+
+b@ED3!*rm0cSPq5ZVpX3pFBS#'cMAQV)%!i"P6"8%jS&rLLM,cB-1Dd1d!IG,)VK
+
+)%D9+5TYN8HlrkC3NB&(VDfq*(cD4IB'+m4m%J9cNk!rG*I%4L'#arE,rRqeIlRp
+
+"mL"+C6H5qfm61Pk9dGK)2kR+@0qRP*[d%ce#H2X5N!!Hp%J'3CcVhq@T$$MfYrE
+
+8LTmZd8D%[)C4*J1pV"9TK)FIB5',c8Y1$&D8X6U(&HS"&ZArhQF5p1&ZB[qqDpJ
+
+2r2qkq80PXSTRImSE-SJk$IY6GMC2%#!QSr-6Y$Q8PLq6"1+Br-845mp)%QRfIhE
+
+[J00Y"#KGYJI$CpD8TUFDqb(+9U1BJfEq8l%BX`$'4l1AHZ+1NhiXZZ+CIUbZ!&I
+
+mq8813f2rVF8`&Gbrm!SH+KGqiZcrjdk`,$M@UirU`0SM2FYQeQB-q$PN!f#2dZ+
+
+EIlpJi'(dEPkqN!!mV##ribK$6j!!&'Ep)Qi#"-0E"If$'Flp1qa0"KKXXJ9BrTj
+
+AjB5*%Z0b`P5**H@%eqm#jrK&`(E##J)$d+,HqMG*pM"3IHfb$IfA5f$jE"S8Z&d
+
+95JY9Qqp63YJRQ`B@3bmfZMcpFeYHDZ$$!&@,iI#,rLF)rJZ,lrf[R)r+!&(!m6[
+
+kZr8G%"[QHU%Fq,HlAm3ASRj[iMpC8*9FIa-&I28I4C2ZhfPUQS$%)8Y!h!%Q,C)
+
+8!,N0[,UBr68F&8L!ZQJEZL#h4RFIT#F%ae2fI5GMB"@![*QShQSEpj[Vk*a8T8j
+
+QU"lp'NlB(@apImLIqhYQR[mfpEXBJ'fF"riTZ5dJ630P",F0akL18""Iqim*#XJ
+
+%'a@j&,N&`!LL3ATY`JLKN!!BhfldK$dDe&cH2I`'HeJ%U1P[qY8rB*!!&`3R!4p
+
+9UTHMDT2EpaNPMJL!r2EqbSCi8aZm,L#m13#N+9b$Ie2kJYQ0BaK@DdZLrdp6aE$
+
+3%-Y4NhP64R32F@C,jXd8Eb81jJd"d9GI1SGEA'G'1`"[JiASef(YkhJ@dL(r&YC
+
+U$hRAd`c8QCpBp0V1V3ABYKLN[#r*pbbDe2Dr96(h(lXpHef(!"&IMKIHU(hfKF"
+
+rQ1R1dHe[@E`Sa2'#!mah86frAbB*FK!&3pM#dPLK![(CTl+G"U'QbB'2!)qF$!8
+
+k(Np'iIrLi#cmJ`hjiiJ3#)D!GmQj-(YYC##TdFUA"8,[qaQ!FImT%r&'mf,i@Fd
+
+#rMf1r"X3!Z[q&rf6m1h'RPAi6JE@pm9M2qc3Cq5H[CIjGf,BblaZ)!h09Z95rdk
+
+5M)FMPVZHlKc04dq96ILA"H"h29hbAE3h%-fijf(c(fNY3dA6K!5&MB9@6&UI+Y`
+
+MG@#d2MREdr('XrmSMRS*J24Ec&m93Qp(`Ema6V,!5!H5(fjphqcCE!(8[Vm+pl3
+
+m!&SZJ,PY2+GR)&hM[cpjFI8l$[!f))Ch1mR5)(CTNKEk5HDDYf@M@craYJ#!pSX
+
+MkMQ2%L`"J$lME466(JKiB"(04i"-k[!Jrmd!X!0Z!"fBF%E#r6K!Ac$`m-JJpVZ
+
+SecmUdGcrJSU"&Gl9iC*2-rBI,5d4@Ikr0d'YbJ&F!Z1RZq*q4lFIK#,TZHclTde
+
+Z-@G-3Z9-M[m-SY'I10F+SR8Nl[mE4(XB@1r`1Z$IQd[rL0CZqQh0S&-M+8*briZ
+
+qTN9E9brPEfG"b3qImCGL2larl5FAd%5Mqd1%&jHj5[c2H1m9ICH"Ij5Bi4(&#pq
+
+Vm'hbAf&3!eY$L2$G(3K(eJ8(TJ+"V[J(l2N+X'De!Vc035"mm`J!L15'T0J"C'#
+
+`#N'aA`SHj0qqD-&'lNp8pm6r"dk4qep30BBT$lG*i6JCRJV%H21@14bA4L56F0a
+
+!UI$QRKT`me5!'1U94frJ(hYrYrrX"%iaikH2rZCSH16h%23p[iX[!TkJE[ija4B
+
+KUU%QU2p$mL*0d-@E"F8&)#PGI-*A[LlBD+fA`rqLe3rlRA$El`,`%Rk5Hh'3!*2
+
+fD,MT"k6khr[a(@!B2MX&"%4Ej(Ma"VKcK0X%$*cN!LX@bj[$,jXAZGm-,i(JeIY
+
+l(UU$!GZjr8K8TF%S#d#DMIB8Q"Kr%m8pR))fIbSl#5PrDM)&laG(C)jIUJb1#m(
+
+43l'G#25,!KHa%N!KF9`33MmLHC5pHqlaKGcfIli$[&cq"ZkZK"#BX8[e)'r'kh!
+
+qr1Dma3Di"1l6!&"FlKJ!p2JMAblfq(ZI-Z(i[DmmR1*Y[h*Pil$%qZ%B)X0H6Z5
+
+Klq(*KJ-3U%GXVIkCVVA-0MBFkrd(MhB#m-qeZLR!rk0!fJp%1AP+$b($)`H4ITQ
+
+"!VB4RqG(,0[MD!K!aRNc"&aV4GCFF)!$6BC&,m")i@[pJE5-pkkFp@q($LcJ'$2
+
+JK$j"B[`c)'!iELbG#M)r2YL!`[D+`3EFr`YX`2e(#GJA"ekMLq-5J@4FBq'PMZr
+
+!HbjIr%E(3Mh'EImh+6#D$0UYD)#3!%Ym%Ic`F['E03X8,ffPD[PXM*`MT9V[5@N
+
+V9E)CCj4UbfBm!rPh%p!(5"'B(i@4!F&"3'YN#!,qAIJ9KaRBAAA&l`*'9+%YHSF
+
+jmRp($N*q"c)SISm'*K@iqGU'SH'f)D6SPQLYT3f6I"Tlk@Nq,F(bH9EiD2QM1BL
+
+KBc$d4611ELb1lbR4)cF3'Ah(U4!4FNX,m-(1$4a[)0NH`2Cf(PaFCJ2*DUr&(Le
+
+I02E@%h3bkX6&kSV3e6,U366U-m2qCb,%i,J3BC)T1J+r0LIB'%H#L4+E48H8l#R
+
+qRd)fp`rLR+mYi"U5Y',"4%14",qLH%'2Llb5jpTj$Hb$*NmCGa-$l(M#(hk6r#e
+
+T036B"N-#!jM,(q8"S8@Klr$`rAeJ)eEifdk'J(JVjEipMPp!"XF$3%@r$q85d)m
+
+JP!AF$0))f(4j"i!m43%#GUj"C(*$lSYJ$!f'[c5UKd2rTj&SZ'-)'p(i8DJ!N!!
+
+dNPb*TLJlV"p9r,dQ8Xb1i[qa*TiVBlKpE32r0@!4L2cpI`),VXi+"kaH![RVi!0
+
+XrGf-Fq$TciT$`VEC!VK'"#V!6Fq!2Hc&hb3Hqh#!PHfVr#q!,kXiir2rmCi4B%(
+
+C`d$82ccjG)rKSq'E$hDIrc@LdBj3ccpEKJa2$9%fK)0"!*UJRS"(9b8ejLf#Jde
+
+5ih50Y%Q09`3Me-3EkC)%j!3"#lBh"j!!&kLBKeGY%iSVhK+,XJ#1"$`ZJ8(Gmhc
+
+5!8#B`3h'`546b(%q1)C0cj!!S5G"LmNNj*5j"GFLk#H2qN!hpXRk!$BP%J!#d86
+
+HEmbr9HKHQk+r5GA!Kq'lJ(deMcE5QbrpX2HBd&j!j[HE)rMp`mJ[cHa$`f!iicq
+
+8)8,rdlfeE$C`2kh682ahk$r9Dp1'rZ0LQaRS[m5CAh%%i`S"l""jZ`aq(cL`BR&
+
+1#3cI)aN#R"J%3JKDMk+aq-PPcTYI$V#,#Xe+Y$1#(i$hqi$r+QmpEf%pfdhE32,
+
+M&Cd4X*YpN58!U%jF''E5&1,r,6N0QTfe+l+r9p)6I%Rq)8BEl$BflB8iKi4F8EQ
+
+1'(+&FahTpSec(FmY!hBU(625Z`3%G6PEJ"L![2dlFiMPfrF(!L&hEm+*3TEi2h$
+
+qSlENe+hTIr9h'AUE@Q15-P+QiUN0r*Ra,e"mK!HrB*C*LU`1kVq8bfNm[Sf$d@k
+
+DM@rRr`(-mB(ITDG[0#ATE3C'eTrG,i#&R0iE'f5ml3LN+6M2&hS"d!rE!eJJrNh
+
+Qp23r#p@fr)EP20"rjMq`#$MPk&Q&B3Cb%kd)fUiQDPB,JBq$JSI#3X$HBkIlTqY
+
+M`@2J!jL`0q!K@2j0`%2BX2G2f#%qqJQ)#h,1e5pMb+Bi!)5kr`13!"j`l',MaGX
+
+rr&qhD)'M$!pY&*TXKe[*[CUaG*,8j%+b8kD@Pd94`)KX[)Qh-H1fdf*MlIXfdeY
+
+Bd20!MGq3!,e6,D#T'Rhl2I[,)Vb[)HbGm3N3Vr[#)-IY!a5B,rlcd!1!EHrDIeC
+
+R@"!CU)R)Vi1aVm)adYf)NA'b[dfX'Hk(Z-haYJr)LAV-)jErSU"lbbI!D2@rVY5
+
+D%G%b3Yd!8,UJNQL-*bSkV6-hfp(TrFpee#pDb6l#eaQ#pNSGJJal8bSX%H"!&!3
+
+&Q#*a,2RG"(,!m+&k-3aqJ'46rm3%#qmYD%Q(A+6R`,K'[JC`EA8THJApJKcq3S1
+
+G'q`&4&dp*c6m6k5fXCT(H`KjiAXF@5%FGF))iFYKj+ea"3BFd8V4QRqY1C0c-md
+
+-e!,MppZSDSE%ZH4ZKKQiPELEiCCYfU&Ai83p4S$YRbl8jUk59d(KLlI+IlACX'1
+
+F*ZmP#"R!'+VZ1L-L*#"NKIr6@QQlkcIf`#iqRm#rfEibH[8$#iK'QPiTrrhKRTS
+
+MjMr1,PfXC,i$RP824e*r2ralSHl#aAmkXBE0TSElh@PM-%`c$P#5GR9)K2mXJPN
+
+Z6I$HSSr30F-)DNQ`(r,P'j!!)*MCiMB"&Yq$lJ$p"QLlfdkY6)rq2rXm([Bib$G
+
+AJ6NPKVkXe#bqBbqHp%&Q0MaqJ%r8BrTR-0T5d-"rY&jp(BbTlGAr40MeKiY8N!#
+
+"`rBM-'mMTA6'SmaKSC!!)D"1#IJ+!ZXCYP+9%VrMcV%Zi`"l1KB%[iY$A10$Q1%
+
+G!Ti)Q'#%480k,P1$VLkE@jRl3X28!J2qN6qal$DYDMkrIj!!8fS(Siqc"4cCIp"
+
+!A(e%*!jbqGZq[P3j#q)S&qHB"3"$[CME[hLelGIe1eM(iE200,(pd'%ibQmp@@,
+
+h!N),b)p'pELcreU2*[[Hh'jqHi2Uj%ff'jFhT!1HZ+`E4I+-JN@"XF&cmS!P,,p
+
+Y#bX5I)6L`cclFZar5r`'T"99FRE"*U"Tm`+B-lVSIHA5U)1)f$FqqKf"Q84-i-r
+
+UMP+B[Xlr%`MGr5pd'j0ElUj3Xl)ZH&XjM*3$k!12!9Ykrp!bGEZQ"QJ(!qprV!C
+
+`fAACi`Id4+(dKN12MB&Qi!ir)%P8lapJD`qKL%8!QQ+*UEUaPIm42q1SB,V2ZbP
+
+`EUe6JP0"%%0!9B,Y"aDHlYhNM1X$4bi'h$q+2J-aLbZDIcAaPTKVAJcI)$F(i1m
+
+'B)&"P,02UUe$!E@G-84r'VllIX@p+cVp8r%bUdRD25je$%U+UKI2iLr4-I!F(l[
+
+j$qFJDNQ`f$k+(Km$f&RHZT%[0lYRA`9`Q&%!Qd!@j3S3Mr!F!!b3!22h1X!CN!$
+
+bFMMmGdRjCFT!D-4cJ'h[Uh#!H0-(I[prU5&2%%RFl88S!0RQA`0J8Db-j#rq4k"
+
+15Rl64ILij&qr0AHeZCEq"h[c0rlLCelc(`ma#dJMi6'6EQ-`R[ER`c&!jcq)l0b
+
+rS`cCm*Ad)f9GAfhFBmhqih&IVi)V"M5-Ai2fErCF@CB)TJ3#b1+fm18LIAJV-(c
+
+@rm@(j%eii!&3m3H+1PjadZ*EcA[3aAESmhC)+i[HITDNR!rcNUTYL-3ri!rGrje
+
+SU&'le8A"Lqh2IH3'-PL9Ffj1J-4MjlaM!9R)`0VA$cMa"C)NA!cXN5l(!cN4pLX
+
+#Xi6,Z0mr3BJ5RhM$[a20re1k@HSL3fe-#pdAk$ATCKIkip,YkRL@HKb8i""K(IL
+
+Rh,$Fq+r3j#9!6iCT4qUrIEp)EGijJ9'20[5CqhIB)S*9d"N*H"$ChbEcq-U@aeS
+
+EqiF,qrES*mjri%1jrcXC8E4hmVp[5kjFrlES6p2p+@mVaEP),-@2BU%$CS$J4kY
+
+2ERY)4brVDEq3!(JUha,c)Cq-pVYL6![$qVr4q0HmFhECHX-$1fkV[eYr"cXH`3E
+
+FiqNGB3qr`&mZi$#%Srj$E9K#SQEk!IN!ZA%jGM5eFA2r9l9AlKr9AYG2&(GTLUi
+
+$DXZl0J(NPjCpb2phAU,UVr`lbM)fm0)$D1br[*JSH3fNc-F,"Tc2kS0$)2bc*F[
+
+J%PNV(2H-6PK9L#V$C9`AeZ$(SfbCqrq"K)qMCHYVjD$l!,kR!X5)la[%rKHMd&U
+
+'KZmppl8,rqS$-D3i&[Z)KD'-AkSB8Jb$cbQN&!Br55(e!e&S0Y[qHf(Cfr%4JF5
+
+1VbNP5,rBIRPd"1*`%ccR$L$p0j!!dpHm%`1lDiBZhcF(,J&[`10%M&m*[rMpLSI
+
+I(hf"-K*3q9X"b$hE$rr-JaP`(!IBUUqY!F3XSD(P%-L%)+D!LiSYAKibJTL$00M
+
+3mimieYAT8,ra$BqGrQHJTI+N(crcjj2,!$erm)MdrDklf@Ri6J4d#9If2i6ZYD+
+
+5L2S)kdN$MlAl"Ja'MJ2F9cBXk81!+rbR"!+FqCp5#2#%r`QKf9df+,mJIcKPq9q
+
+Q!Z"RJ1(CH5H,fd"-ijZ!"#Uhf5l*Klmbd30Kh1p0VHejZ,3&9P12'Vm5p`6l)fm
+
+1q2[e2IT$%@rfa%mNrSAh-2i$&GK9+JVr@)U'0XGD`QJ,`akAdk!%68,lcB)QE6Z
+
+1"Fda`0c5Ld%*kr%j!8#dl3@E(DFX3)EfX6#J&e6HhJc$[qKj3Gj%%QfV#JH%[@`
+
+L#+crRS8a)09rhm9f6rM&jN-BMZ0QlF!f%%TRi@2i[bV+'rJj"NU'46FLB&8Cbmd
+
+H0J,&1KE&r$r8XIeEPVre`$l(H0(,`+e!`%1Pk0Bh6eV10kHl!96)4jCQ,!6Q[U"
+
+AB*2`CFK!rUmR(ZS"6C@&YAET@l@fJ+V,2U-qdpr4l+RbB!ZJ!`0"+eMQ1X0&9mX
+
+TZHS8jjVPP-lr[q@80c02HIQr'!)[lQTkCB$Yr6qPU1()X4h@U(A'a(*ScDm+)@I
+
+6eMTc8mMrcM,GV,`!$ePG+p,8a`3[DZ`8"16KAkaP8"YSc-!-'C)2AlfeYqMT`q+
+
+l(6b`h3RmFf4J!$Qm'i&S%cVB)rK4F1YIB5B$M@0ph'i+PlfqGJ(&YfmJR+S(3BJ
+
+)ap-(adF`22K8!(rVSDmVq!*k53$ri5jSCUY@AJq&U4%HSQRE+'K+LaNHKS'NYJi
+
+1J`QZF2'Il'RZhqP[@PL0A45DRrVETR#HN!!-)C!!BBLh"3R"")f[!mK$d(d&2-)
+
+h(rhfjTN[&iNAJHVX`UDC%3[EH(e$(F-q[deN%P1p-"X@appqp[#elr%cd0qG"bM
+
+U"j+iIK$-mljfF6ZS,fL%ZI#I1fifHBKb'-!%m0JcR6[(KT[P-"cN6a'pfL!"+ai
+
+0Ki+JVIYbrDP+mA`-F*Q#'j'KJYrlND(3rjNR-bJp64CVT+P8+FUKcPp19Ff%CT2
+
+1hkF!bemH`GllUf#pqLXljm`#hLU$dAmr2)9kFd"dFq"UJ`KBXES5mRmkJGQrmmd
+
+iIkm&*"X"c5Gm[kSI8VCja2K5DCp!JLr9AfZ"pPXAILMR'("mr3Q`$Eh0FMGr"`L
+
+2YbEVZFD9Hi,DrTT*`##)RK[BL5++',`YGS[e49PqG9&h*P`d2!6&cI(jpTY4STH
+
+#Q+2"+dXAU6&JbSF4U#U[!8,bJT@A!(Vphqm"N6M3I6*iBEKGQ`SibffTA[3kFmI
+
+6mYV!@T+hCm,4$dY"B"&TU@3,""Xa"hm0P[e(%@Rf[e"UN!"5-(%9Y26a(#P`KML
+
+X`Y`-(C86El[EJF#QMrlD)E2Xhf&RQXfK&,aKFmf(MQijM*)jqNHq12*e5kpKFL#
+
+3!%@2-U8,YJDfSIY&``[a&kF8lrb"%6XB49YHG%-"m[Bq6!1`lYKH!lE0X1kY4[h
+
+`*VA'pNjDHT3K!+PLC0NH)'6K0a*pQ)Z*BHqkXHG[LArRmRBqb[Z(2f[CHi3fT`a
+
+!Y(h,LY"Ld@,j"deQpZqF*`6cE1aAMi39q,,U`U5R631@&LC12lBaRlX,'(MLI!6
+
+fB&I#JA9q`qP32H'22L`$$hmiVL"h+hMk$QaI[V)!"Xc`aPe8,$BlKA$m`iL"3I1
+
+4JHhY4m&(rl"(6b!A8LAmj3%!C'km#KQ)VV$J%GJ@K36AKI@flcC3b3!)&!0Xj(Y
+
+X6bdcPLRX4k-q*J'fBQ6EDrLNGh%MiMffN!"rlK0$M8+`SSC!N4"KeG$3)cNeV$1
+
+-$i!hm0c-P'khBMl2CB)lY!"Yi%G$&$M0C4Hph*YMM`mXZmBh!f+3!*@%53V4,cC
+
+(d&-"!m"+NmT[kaVd3HKc!Iie8@$c&T9Xj-'2LFS3#ES31$TEJ-NJ31mL!NGFam2
+
+qPch`30ljPir38c`DL$EQ[)[,1*!!Cb@&@F#j8q"pAJk`QaJ,k[kI+M6lGaS9BZB
+
+fl51`9M,!Ye(YLa5J(-Ual51!mS$#k'bG`MmD*@mZJ9+1eqY$"+8JU@8q5NkpYKN
+
+4iaZ!$b+4j0'keS12CmP+0J*%L,i$L`DaCrGa!XhpN[!!B-NIH[XGZHmeZ!,3plA
+
+KDJq$pPfF"CfdN[B*2"#SDGF#iCCH!Bc0PY&IQAr2%jcNiG`J3%M3GV`HeGe`Q(S
+
+`RDKc6ppA%GXRK2are"CQriYfTGBC-dhCNrdllJVK31QePIpG11$2R&Ve6+Q"Np(
+
+3mDjhrXr-51(rf2A23k4S0Amdii$6KQCi0003$S-K%2pU0,Np'Q!p)V+)["AX$b1
+
+-K#hkML%F!ZbZUTbmpc`D+)S!i,GpQ8FB+%CSBGr&V8UZmBbe%BUbXH#I%)lpJq"
+
+*liAK$E$3AXR-%-3Zfl6"!*,Ul2iNJ@A`Sb*dCRBB!,Sq-kGkK"a)B&hBc6f2`$3
+
+cm&,f2aSqqMmkp9cfArCjA#iCAJj!lV@b$Vak8k3LK-)$5%4Pr+rKS))"m6paL2k
+
+je@al4c4KXMj36CJ+-54EM8--k9D,3`a,FKINJq,LIk$eSFAladpJ2T,P%JJ`#-N
+
+(qQ%pN[L3!!3M[d(JH"U@2(VUdIK2'6k""fX"phX[N!"BqVN)h+qT8*2!d4MfhhB
+
+#!*X,4[9rrcd-#HcH[+M,1!c&F$X-45m%1laD-$4q53e)5E6@'[8I4Q,flbJZM6)
+
+XL#BX+PmdmFjk9$4PIRHf("&0QIrCf[*#CF#lSMJ[$"!"h[a+j`2F0ihJrRd!IL@
+
+F[QX8MKlN%GZ+DhaMiF[0JBG,S!)JKFR981U(P2JJX$`,R@Yh'@#I!&p@'E('L6M
+
+*LJ)(D9YQq6%a#2laRa[%K+&-i62F#c*Mr#RaNl1F1M4pG(M"dB*5[#Ff'pmI)5r
+
+f9i"P'iSa)LN%4mMr'rieq)hmVU,$*$hhd3RiCeQY11,REcV-qB,KfmDK6B$AA#k
+
+NB"SSB+AGr$!-NVi3l'(Lq+#Y48"Y-2b)85qE%B,r#(-C)Zb)MHBreC'KJh'!`k(
+
+R*[Fl2DA'4ZA(1*!!Mi14BF8Z6qTB*5l2J!mA-&`-(J53!2RFjIqENApBq&f##B[
+
+iP35B[9d&f2l6b4X'E(X"df-MR3c#MmUK2Fr!GN[jKUh[f+(K`01AkJ,"XXrc(``
+
+-GSEkc@QIe10Nr`i6irbpb`Sk!mN%*8#i5Qa+J14qlij8J16qX6T'Q06#*Zr&3+m
+
+MJ%33C6%Sm%HI,f!!)&ERmF$k",4T22mh"Ye)6cq`hI&Z9#,i2E`[C[M4lk,1'eM
+
+`Mr+3!0['RPSL23Qe"ThBC+,*Pe'eFkpI%+[&ZAb`J@+kM,d0K)[ij8[!24!,6RL
+
+biD#'2eiq#Zqa'#8"4Ua`L2m4ZF[qR85'b*Qe()&*$)H68dEXR!I9I#CKKDMCd@U
+
+qiMqUq@k8!MFFXBddiiJ#3L#GNY33mJ5'i"39m"-kD*0N3#eAC+"r8cPA0$bdLhT
+
+E+"jBL`D-k0h%X1+!69&rTalN'U$df!8Gc[Rm*aBJrbl("9rl69-r"JKr0&cbelp
+
+mlhprC9Qdp4Z!E`SrC@Qe4F$4[63A-8pm$33R)JSH3-Qj4L6*fqS6hZ2m(Ma#[r#
+
+2%YRXhh&R('!@bH`D8LUb3'k#ZYlZQXHak`H@H1GJ!!K40F%3b0([8Y$)&d'NZDr
+
+Sb"I!+SG0IRR!eSEp!&(rak!qRc!YK8$`cp#B*j!!3"2Jj3CBJAiSHYK8S&fI84"
+
+j5cQH`0lkI2d"3!#PLP1Rm#YA*d[2+4ZX*Y'M%%+Tm"2NLHFrpiVYFM('PNX#E!P
+
+38m&p!5TJB8Xc#rmAGA6K(i40+qCJa)'0MrqZM3Ur6`L'q*Nc&2PK'r`bGl!%qj9
+
+'"eJA$!13!#V8ipqS5Xmq1NRI(`lmCKic22"rG&jQrij1dkS9*!8LlemTN!"N+l!
+
+#5EG#SN$@TGJJ!%M@$85!qBUcTR%`YfU"h$(R!,''c[-93P%%62ND,rEl(i909c)
+
+$hRq6(2*[+b"-R"hi[T%M),[a*`'rTAl[#`,RCR!h$JFfd3)#PQKEh)MjiMm9U3N
+
+GS22!e!T#6k"UG6c5U`M4@SPHm+(p+0(l&d#fb'2YJDcVDpU"9&P,d!&0`2M)-Z"
+
+f[$NfZXDrKipjfjlq5!L!k,rYeBermQE()(abr2!Lhrrfk2YSH)))k3p3-(l[dJm
+
+(K(3m2bS"i"GlN!#)DqBSN3&9Er3r`#QJa2ld8*,dA2E[B$DYU$1LRBLd9XRc10K
+
+UJmk-RMF6E%dB$0rV"Nj-@QFJ'XJ!A!m$dN&m`5"!D!hXKl(Ii%[$3PJ!J#c3!"m
+
+$&Q6)hmlI!ZXb)2d5QLH(Di`p+JAYF15EPT9)Y,`'8!b$iD(J5C0VrM8$PLfRbI$
+
+XrV8D91%60mSf'*kTmFRlrh#(aBe2!e'r&pmZp2m[G'qB@TZCFi!qB4D)a66i!K#
+
+p$L)'q*YJ,ri'NPNF!@@&mMrMFYQrSq8iIqHP2r0hHc#dJ+`AP6U!!m"dX!P9@[`
+
+r*cf"+ZeI#b-))hk#![e4Zi%#T',DEB2L&)LLjp#0BSE6L!i24faB!T!!"BBHL26
+
+BMaYYQrF('X0J9pRlm'+!Yre@ff(m'BFD`G2-F@[a(5'9Q%3[lQqSJT@l%9ZDhb,
+
+TfIpb3KXF1MCaJa'3!,d0#S'E)r*'&lKrP#ThE!IhraMqXU)%Aq6rMiqh*`jBdRl
+
+@2ad"Lk'$V*!!j@I`1hp8+)EMlJeq"TliM[N8"f,SD[rNIlr,mhjl[S6TYGQr$ra
+
+082Jh%e6P%SLYFP0Id$rp08ZQBcK%-H&`hE$(aL[P1CDIi0QNS#8YIlp!F!6r3Ji
+
+,KF,6V4EU*!%Ml+3Xf[0XA(2CSk9aEB1Sa4$Sp%dEXVHH`"(bM3&&jpK*$aL![S0
+
+PLT,(`P,&iA23#C!!-@h6D2RESlfRl3$ThHB5!,S[iA$%921I%Vp"U"0CCmMRefH
+
+!`b3fRXm4K`k)bd')Vj2f1"$k288!dUV(h+(KrFJA03meIr(rPX@0rqmNbk9m)1R
+
+'(I$E5G[eb#rE$`"JbJ`*++S)5V5mKG-aSKAM$B%QVjb9fY6B3kXG'A[[(j!!`qq
+
+eJ4)50qN%9JldKNJ"Xp$h)JJ#@j,[0Yk'`&mmlR,c0)6I`eHd"5bH!#rf#dZ1325
+
+8RaGqHmGqUAN!h!dX)Up$E[D%c5`C-bfDmd+'9d@piQJCQm'Ir%Zec'Em+G[LbaC
+
+9"XqMd)Lfc)V@Z!cq9('J1VY(["6R(qU&FJHST2aH2J**0m"IGpHH5B8C`G-@!AX
+
+lP#T[Mr8IBHrXIl(Q'!j['RJN#Z6!MlX8MB'IG5PL3!BXZEp(m!N,5)2XV48"52*
+
+)!f'!-I!,#MI3M!'j`Ik&J2F)@laq),-PVEaAD$kD)AL%),rbqD(i!JYVU+[Q%cM
+
+kMbaqGh9!3VHe8c8N"[pXfFhqd4jqP%-ISbj,L*9#E59#fCj)C9aL6kc("")J9dD
+
+!RIhfpkcIVX8TERmpA6cS53)-@`b(!`-AM`"@!3JXMckXm)M'P@&DF51Fd2pFmKE
+
+[XiNl30N*'4eAf3R5"iPKN4CS*BE&3#38%'ZP&2+lj*bebfTN!$Ndd,TG"MLD%[%
+
+4"IIhS6i1Rh*m4rIe!dBh&`!,qJrmqicXqGhGMkcQjGMqL%b!+TDJ(rL`6[hAHA$
+
+hf-&!,+ZRL-+3!!6qdk6LpS+83dV5(kKH*Y9+5MC!!Rq3!-,DYH%2[[D,)*iBL#T
+
+`ELjh%*!!!Q--,`Ji#fmchBihfIk))Icq@mHedCKI94H[$k`J+U@(aimKr82FC[m
+
+H*%,5`B"6S1k#&lrU4H$&Eh[%C[9plPmF8TkI+(amrfH8ALh4S(G8(*C(N3MK+Y-
+
+q0K3$("ePB%8Pl[`!F0&Yh3CfmDaiaI'R"2C4c5re#B3NMRHJMEH5M9m"lSp6[)'
+
+JN!#VhS6lJG'd2Fm!DfEiED$ZZr*h$Hmmd[TrL3%$@Y6BLl3@J4)j[K9*-5C,-5@
+
+55Zcm%d!fYi!Y20ppMabp(1QTHVRIV!9FEVi$[!eQc``I`hih9ZlhIdDqc(R2!A,
+
+pE2+IU+MkEI,[IYjmTHlII(rc#L0qeJ3fN41HeeQh`Ii[GpZ1Qk(!%YG&@Tr&cE"
+
+KIbFHNS#(46)b*KFQ")PF9D!K[B!f8aej!61pa,%AF*X1-Z!Y#FTJ%d(BYrZ9jHe
+
+q!2l6!(*A&l$8jQhEpmL1`!IhAh#c[!S&1eiXq4'[[Z`!%6+5KT!!l(pKm*J#*Uj
+
+,J!03lbQ0ka*qA&2D2pG$QUD1KGf[`aIj*%)*q9FUAIkf3*k3!,T0S2'Sj!dNkZm
+
+aY5'3!(F5rppNi[$l`1%(0P4$a)&(J@$9If")C2m1af2,%lXV0,+[*m%68"403L+
+
+QD[d-Al2(mJ8)a$2qka[Bc*+S4h3J)X,#5Z@,6!,6$2fr6FDB2d3pYYi[[JL99PV
+
+18C!!UAr1qbcA,[YjUQKE5CiBSi!Pcirj)lm@4J36J38Mh!Fq1r8C3BmX`&"8d)H
+
+-H%RI0#33ZT6%K`*B+RRF$%d1%&qM0cI4(`MXmD#@2paI-%M$5iD*'[k!X)kQl8I
+
+r8ab5MVK0aiIY&k-&!Pc!8Jd#di#m2d)BMClh(i#,0a[pSl!hqhF#(ZI[HAR8D@)
+
+Z*["KZ2R)eQNqMVadp46lRaeMZbqMB%q3!%13!(-cMS$TP1rHSL1r13*$2+ZlId-
+
+d&kcrp$eIm4(E&MJ1fjX!El@TVj`Ef'r9q,$qY62E3DGL!lU'YEA'4Rhr,,N`-$a
+
+0)8`!i,$i1+dYf`+8pfQbfP3@N!!DIRK2br%lqb[Tlpeqe3FNB'KRIN(T[hS*k6I
+
+kQj9R,r)jF"Mq3,5Jh"MbBH$YiDkfZDl@k4[IGLAR!-D3!('Z,3)9pU-a1*bLq)L
+
+T'+lA[bE#8[BC8"M%'c*r+36&)*XS"(4Y(P%)l[r-Fphqf&dFm(mA"IcE"GAb,mL
+
+)l0r"H#a9'%(!eN'(NR)IcQR-A'5Xk@mcc!8ma(ri$IE4qRd*qJ6`6aD-l"m'C#T
+
+Lc[apSmJE5AqkPMHb"[92mNEV5X8KL8PjJVCHB)L0JJ&K-4$35b)4c$@frV#2Z32
+
+(2Bq+Giqr3f@p,lr4@J,GKKJ[''d!er,bRT0'E#KBTll2mhqCGLI&LrcIHL62,`*
+
+QMrC"N!$r-j2$G"LKV)eG6@AEbl(J&'*LDUBTa(B+kej2['2!NA#rrl-r8,3F$q#
+
+VEJ%!Z@ZqI1*rQ3-2G'2q(XIrf2!0+'b'K@S"-iL!LmA3(MrX2cbFEb('ke%$,hl
+
+U`Nd!e8#"X(T&Sdc9`&2e-Nd$,`@qE4Yir4&Je`L`IU*`Y5+ASYHC1%Hr)$FL3HD
+
+)X*k"qZfl3-i!![SY-IZG[#q4e2E&Mk%1Gb-D9rQ,e+CHkT!!"(6,L9[ZJa49Bpm
+
+"hL@3!2h(2J`+)5-hj%VRI[282Ei0p[UM5)!J`1J(r+%6C#fhS6ZCl5JbZ9,$)Z*
+
+-q2[LUAVk3R#dSEEM5IiClfL`kKK031d*A,h,HNmH5ML)m)+Me@Pi6k[3D'54(`&
+
+[iJ4Kl43('hUdP%N+A2a4Q,38ZDmRI1Yhjql&Qm"qK,'HRYmp2&X[!'pr`JS3R8h
+
+`N`3lmaB"lcf!+H"H[HR0Vj1N#eMSHP2rE5IfL$Ap)c0TZK*j80"@LA'`JFGfp6q
+
+-%N1UBbYUZ5T,aL,mDVQ$49PT,#*TPPZ2pK[iIaHf+Z6r(G2(rRBe!lf!5RalI2q
+
+IFF96NS@"--R3@c[AU!%)R1%[,rIij`X),(i5N!#RBRh!V-3h4)X-pcKYrqN,'fi
+
+D@lNKHjZPX&#0aDdBSqaY6Z-"X4JHL2RGX9S+Q3VlmHB,#5LkfrEekmBZq[1[q`a
+
+Ij-2KifT1RZBKcl`"@i[!rUZai)I,2`UEllp([ZKl#pq$qI#(F6,H0,GrrimijbR
+
+%riL0'#)9"aJ1-@-!Hec'*-C$)hB-IT)C@9F&M%Aph,mYK&+`%q!D!I`b'&JSXGX
+
+'p9%Q1(Ka+dIfXUB''*+l&V$Y"dc*MIiZE+EI%$$X5LQ5r3mAjjdXAG9%[Zic[Q%
+
+p#0J$'-3)k,rcVNrHJirrCrq4S9TarRH8S`a3@XM@BRTb%1B)jfFP4-+%1a!Gk'*
+
+Nf)rmQe@Q3Y)6JSX)M,qAJFi4ZPN`i,M`9EC!#k8Fp*Z#IH`hJf6PP3)(H'`rN!!
+
+e#)qi%QdhbQq*G6c,[cp#l5)DJHH3!2`qIIHrRkfm3I`ZD0QNm2Y6q"%KpZ&&bk"
+
+q[rN[rcS!A+da4q#AIr2EGHKH)6I`"KB"C[qjD5dq#a*Ud9LKrJAj!N`9pm"`f+!
+
+a9+MV3M0`aiKdrZG)I85)Km6,[`3&50-`cpEfmPmHkRp('`P$JiP)Q-dkG`()$)l
+
+d`rGNDEkm0ADV-!m3Kh@b!2YPrK"k&PL-p8pTD)Xf-P(BTXViT`VE'UJJ84#MQ`)
+
+Ub(SBcZ)F`)ZLIhbfZ!"34LmYZZcb2k@m@i%2k`,SKl6@[2Y#RJ(*``D"aGqA[q-
+
+rqJ%cTQALVf,q[r%Dlc2i#a4N$c#0*2jTXcC!34UJel"k&#L)P0PY8"$5f62N'%Q
+
+$kefe1B!"EF3rMAAmYX&)ahr+KJ8F%HGYIdE`"B1H3Aj(%Ahfkr,,H42rYpC%&!1
+
+Z[VME[$Kc'S"rA`(LRck$f*aXUam`!$pL+Il23Nl$#H)!MI@Z$MaUC`48!9IG5H5
+
+JIqLAfQpA)q5e"5i`-eiK"qFJ(J!LTC@)9i&pD2"LbX6Kr`jH!8pc0E"(E[[G0Z6
+
+*9ZTLr$JXkK`f*$m*Pk82VY%r0LM5C*%RCB0)b0iTL,Par$4VjFh5TqAqC`"aAHd
+
+[A(q5pNj80#K5m&H5@f,5d'd-U2"+)GM,4(rN%',$q!(D)fj!Ucp`!Q$SMZS$9VE
+
+kr)'Za2*(!bc*#d$e1piV%`*PA`dj'16G)2E0pD8CL58J2[d[J1%+a3!hLC(T03d
+
+HLrmQp0XP%"fKGb*AqYd(llAArPqYA`BIJIL96CG9"VK)-hqf8p-M@Hh)!!QQcJT
+
+[i'l('B+%C(&HbU5%mdJ#$1B[1plfli)'CK4l!D+[FqK"*)1!NK#8ciKja#IaXh4
+
+lH++m#%95f,'S(dQ!lB4cJRCBY!3GNai0825H[8k3!'Ym52+!q&$$aXFX4SNq61M
+
+E*%0!%[jEMk(323f)Jb%[3i4D!,rpBSLb[YpPDp[r[h,#CD!C-Y)2H!I@HT5i8J%
+
+AHL`pfp[q+aH'ppM)m-C&+aI`##bTYVApm-Lk#'KEI8kH$,K-"0K%#,r*`E+$erK
+
+LrdL0HIp90fhXG@BAp3XI9BfBSJKV!EkPaH!*i0Zk*0&Jj4%VM"%Qh8F5rkpB6S(
+
+A*$JRb1N"`c"KL++!%'!JZ[H9rf%@f2Q+AK2mY`0BP6[BP`49!Zc$Q!H!B3DFL2T
+
+K2q&JLDT6Dj(TB6q"Jq@-60'm*L,mM!',LjpRrP&V)QiPKIm',1FG!HBAYY%i!81
+
+@IIe)a,p,eIQh'Y$*r-MF[jd%C@@!rFU'B`HIY"f,$"P'kLFZUV`e%NrcK0$r$br
+
+Dqh[eY20h4"l8N9)[T"SV@4&jX+S8EjMY+X@,iRhf+M'SRK(kk$em6+"pZJZ4r`[
+
+kRJVlCEdHDb*S84qDF61J(`)"Z-!@qKTILPi')3*#d,H0,i02N!"cJ6@Mp'J3U"1
+
+AEjjF2J1Vb1"'A@UHrSlajl,DCIYSKJ`'j+3(L$RiiXUrLij23Jkrl(mRIQXDJ%I
+
+H"PB"VX'qAk3&e88HJ-+q01[P6'#5",F-chemC!NHXDN8hZU$IJeUVI8I`F$q4ll
+
+Cqf2VTi"Kb(eNJ!e@bU06J&E-Q'B6)AJ"'3ZG5#rHNr32[82b6aGb&eBqER,mciV
+
+rhhddIEmRjdf!p`[!GR(RV`E9aCB`iY!`,1#Q2lFCk4Z2)D,4iN!rXJ'#LNR2@fl
+
+rT9&Jd!J["2CFX&62[hD2,H!d[8@8Jm"m52Kc[k88cPBFK+!"`INIYC6fHf,6pRp
+
+@KiVhT!D#1#mdpGU%3!DL%*b-9`EXTB+p5`99[D4*[eeqr+Me!lmY`1l@bhYZX@X
+
+@Jq$lr1#MhZ'$$dh$XSR*`HRhm1$I(S@$NB&KDH3NahVqV3%D544%*VB$i#qlQ1'
+
+h8[Z""IAIj+&KJ[-3@CdB&iRrRj8ChYrEK@de$UB$`#I5YQ$bNbRES["E#Ff!r,@
+
+%d$2c5[k`,Il9lYp@aYUr`(@4"B&)f6*#eI1l!fJA#cSJhTMSMa(BHShlaa[')!(
+
+!pp*1`M4Xk3HFE2YJ!dM6NFL"cGI*pQJ8!$FDN!!b32"@Y9haj&'-%EcJ+-F)hT0
+
+Xef-YIcY[ma8#HbF@hdk!(P4P`)VjS3BH@''p!,i*i(ACk4r@!q5Yb8*P%lAD[Pp
+
+fH3-f@Shp"rV[!$h!p1LSTd(2*H#KZKr)`hJKmIYP"a!0#!$F"rThJ8a83r!!i0B
+
+j`3pSH`dC[X$r`a(erUX#f,DUS)8I@63CS*R)STN9mAJ@ED$LGl&)*Ii@L!IabfG
+
+&+kFX+860fqkGR"Zefdb,$PKhYBX)QTI0c6fh@#RB!'9pk((j%(4r,`9Kj#*2f5i
+
+rp0Z"1@jJkRBCbhA!#0NIK81*6H2plp85YK'3!1ZhqIVpqZfiD9qfEkG0qh(lpT+
+
+mY0qhrqVI-5,jHjKXZqFTerBV5#m3SE)2'+e#Lci+ib['`'i*BRp%Gcba31%42+l
+
+lIjq%crF)m@qcGa%!q+j(L$I$(`()`2,q"F"eZKAiS#4mmHJrm)qL%HqrqL9-B)r
+
+82UP5[deI1Rh54@qSI@j&`rQd66mTaAYIf"r)2Q@4+"4"L1fD4kp,i"BFZH`jCAi
+
+",NE-`'UJXrZ-(Z$b2!$-CLi&l)0@$5`#[C4K)#,-+(!lrJ2cSkIK-l"CFfJ4#,C
+
+kU3(f1q!"q-V+RqYdj!liGRc4"J$3MIVm)h#(iK2Z-`3m'[Y[e`"RD4"Jl2q[X6&
+
+9C+CV(+-"NDUQ4[QLlD'"0hTdCSVrd2([rl0ZEDeS#0lhreG"0!GV%,FB!Ta5!XL
+
+"X!D9&`55(U"EG-l`RUMr@p!eNM+!0%[ir`k8#92er,`rkV`f-k[r3iXDa'J('("
+
+XL(MI3kFRKm1-XbikhY2+RMa3km0kpmV8!j6Y$`Jp!c8fk,*)@2B#f3U@``0U3N4
+
+VDJ"hMiEEIURErM96KVmI,[2V@Gb'I!BBKQ#I!)"92VYl3Tm03prrH,J3L18h+Rq
+
+,I3)m"crTZVrH$%S$['(`hpqm'KM`fR2C1Q)6AH8IH[F[I@*X0cJr1RJ"hJZiEY*
+
+&jV##LP$MB+62b(+E59#h$,G6HeH"K&CcE#(rI3GX%mTj`U!1JJC#f(`RNd5)Ieq
+
+%GC[PrGN['2NGrFiI'FKk48RUiEqkhfKjRrMl,b!+c@&kah[cJ&GJRK-0`F$4PQR
+
+khB5e%T)U0`'jj*q+hT!!6cYrcej"Yf-'C)+*Kf'Uda$MF#6e@Ia('GD*C(4r0$b
+
+A3ZF#J5h&KhkPUYpH%)+I5rqh&VbeC)*Ld)#9)1K1iG[,Gq)([rH"lSZqC[`p%C8
+
+A9#f@HPa6#pPikipLi!$5#QdSMRrY$!Y$Bj'cG%5*&SG4))mh32IR9VJ5!dkC4cM
+
+r()b(90q%hpZqd3M"p[JE!al1J,4#i$5%5+fXhJ2j*bjH"@D4`&$0KiIIhYm&!3m
+
+$rd3*mIi,%GQdBQ"VC)!-8j,6Kjl)KL3qD()@Y#3l1a+[DGjjfh"TF"iE)ad4%)b
+
+P,2&3mbQE(R#`1D&Te8-bS9M0DkFerepEkdXPF8!qTXq6jPF'1JY$$fcrSih5qbr
+
++Bd3!l"h$ajA&$hlP28XpHmHbmrj(MG-SkjXV*-lh4c[M4dS$Me!FiAf"hBcIS3,
+
+drqkE[[Kh6U@b$I'lZH2K[p9hP0+VrPKDSej!rBq1BIKYe0jbfC)9%`i6$N[+A4h
+
+mTE%C"m3)pZ+rCYjXC"05ab*#CBB#5C+#*Gj2A0kA&KHfj%VlTQbFhK5,G9Q!5Vm
+
+$T'!VSRF5KJMp$A`Ir,I(2J3&C1(lj2BpqUYJ$IE&jHE&%q3)S!meM)$%%8EiPSm
+
+#'Ak+$0N!k!p93S)"5X)e[bhMkra(bihpDPF!IENYprek1(UXZ[#f[a(@9S,qdp#
+
+aHAS6P6d6Z+Mp(LC'9mBid*mi&ddZMd1Dpic(BD##'I#%#F&&M2"lDbHr+i'VZUr
+
+hrrD'iCHDPp"9B+G!LAL*jG(SAB!BbKAU(q$YhYrKC4eJGBiTT)(qNS8d#RiU+D4
+
+Kq+NCP4*hjRmB(a`DqT8+KUJ-D-XYIXMT!Q+kA6almEXYGJc`$X60hH$r32b#`0+
+
+cA[-#"6q-[(Ra+VcC+Ic`!Sc2lhai"b"r[GX'"a)%[1Pfmq,G2hb"q!d)6NReK!F
+
+!rQr!&XG2dHm#QGDr$&cd#m*J3rpRZi$h[b219ZHLJrRVr4G3V%(BkkC3BS8q`j1
+
+I)&"$N!!KJ#e@l`S5"!DP4N@HB6XCEiP,rULZ+XqP9c*IVZL(EV6De[C"pSAf4HM
+
+#3f%$YS+R2-Pc!bp&Ee&B(T@VESPI+Aj,*h$%ARE+M1K4MF--K3hNMrhU+`i$LcB
+
+8q$mp#jY*0jcqLRK(C[Cm(cl1l%NI2XhX*8(*mdZJJ+"Sa`@4E6IXm6!I%D(ic-(
+
+f$qbaI1LR39J%XKQ@K)$mR491F"Ar35&#`2C[ZZ[P9%"crMCfNERI$LP8akTkB$2
+
+15+[r+`Ff&2DfFbE-Qc-+MH%9j1X-I&mmL51!p!6`lr(epp61M04D[-[epQ`"`Rr
+
+NQMkm#Qm$rrm@$cGJ(0`3`!Ah$m)&lqqjpJB4&PaRm!ciIVe#'jJ#1@'iJ5-J*c(
+
+G`(2aK3&Vk@(1+!Jq`A*aVm3!dLV$Gf!Kc),I"CQS@H*Z'$DG4rl!05Q,92jEVfV
+
+cpjQJX",!2jd(%mphr`[e!BNRC"I3*PGPf*&0D6E3`K!l12iMLTfr8!9A(V&MI!h
+
+DDd-bIb6[J)d2f!b4!&F$`-cK'rp1)TlR3ld0rFlrQdHN!RpY'`i%$&R4kV8eBN1
+
+a18#meImDI(EC%`*[J(eY!Gp2+pT`ABkEN`8#Z1[r6CHd$bN(qBQej['VL28,p-!
+
+!E4q2PJr*XfMi1iSLN!"QK,1hIJB8UaR1pRaD,2p(6e%K[0cYNfB8B)R#+P8pDH5
+
+Y89%J-d`@d6rqTj+Sb,p5$UB-`0CA)FY!PT[F0BTAUjebB'+YQC4$JUa&iF6&`Im
+
+[)+RS0brT$f$XIC!![riP6U+-P2[hM"5PBH!lqYPAC[&i02[Ur*''QFQq1[pShle
+
+@$#aea"jMMe-G3$,cHl2-Ea@p0Q,Y-hUL`Y8M%4N!`)4!$9F+jF!$Nr"8M$+(kLl
+
+m0rE+51ePlHpP-`pBldA'&cfL*9&'mIah--XPhArB"fZ`A`@!@D5aEAGX)"C+"G%
+
+*''ZF$f5&+H2S!imXd2)%-ZGFX4fkJBA$)[r+dJqIB*cFYpA'JV1(Kb&A1ak-BKJ
+
+rVrBD0UfmKa(d6`rASSNDNM0XCf+&`6DTXX,)V*lGf``,Jq12dF+FRP[dQdMJ25$
+
+MrjYe[iB1-#*1*+-'J*!!kiYlP'$*IGbq0Z,b)eEZ4`4bci-@CZ6j&GJH3h%XL"S
+
+r`#RI[IL2J3+K%b#054+@H,4%3jmM@%4pB[*a523mMId3X-4!IG+$VZ&,rUPa'LL
+
+M%p4*9IZKC8#`iUP2'd!eZc`Nj2[RE+'!6%42l%-eQJ6f)LeZ6d(aLB!im5($2HQ
+
+($Ap(#lm%EUe2![1-V`*#FL`&'!*&Sd4UBEhB#ca5#3Iq-C,k+P`,C&jF25+""`p
+
+BjY'i!M,)V1KC`rf),lb(9[2UI`QdLRi"U#%IL!d'+UiKB,%`4RAi(DJr&k`*)`q
+
+%e3j!!k#3!,"*3B'JL+IiLHEUATSKB$p"$IicMQ)U-DcQj,"F3(J6S'HejB&%cjU
+
+4"dQ$Blq+1LMe#(e5r&KRX%NZmb1*'5Va(Ti(5#X9pPH4bFZkDb1m4c)&I2pY-16
+
+34p'l4fBBDQ$9!&,'U*'T`2pZT5C)IG"L9[VMeGPqHiMrrM9`qir@-X)m(aNKJP$
+
+l[G!)[DVL$dcCB6)A$2`1feAZ&m1`N5rlYi'+S0,F@3MT3!`-b*G`@4$0SNGbl4k
+
+pN!#(YrU4iqHer#q"*BaV0E'3!0p&FP[rDA"B)-eQl3MkCf6YL+TjLfY(Z1BYV4e
+
+*3TV[G32lcDmbK`KBLAYFbELST`b1ebEXCC*`0iS[M6q`[(V-rp&`%r#l"KpajU(
+
+hR[F6J+MiHlmK)L3j9Zd!"*!!9q9NjN3$S%2f"iJj9lq*(9r%rI"+iSF13!3@-2B
+
+L#2F!)c&p[VAp&fY##)61*%")JTjDSajJ4Ia0K[q8USBNcrdld5rf$P)A#[@&(P@
+
+MmQC@m),[*q9crq$hh1`$Lac8FcX,U1d"0L11fPB+!fD"a,i#L*YHD3,S!V845)G
+
+Ic2$&X1N1@40`Yrf1B`KrqAEm$0$9[33ZQ10Hi,IphNj10V9XNB&Tcj9[0Id!c3[
+
+!5FQMX3rc`%2SCGGG8`pJB-S[,a6Bjl$e89pi"I#HY`he$)!h0Ri"k!X2!hlKD!,
+
+kIp1V2j*6XaJ1k!mKAPcXUDN#,VR9)31!+ARr0mdN'0%q'1irf2DQ3X1j[q1jf3i
+
+S*$qT$8Pbp+S@hVLrNpZ3!0,-G0+'0-!-E"YrS+GM,F`A#(SkL,cU#qaHA%2FF3C
+
+iF(S,Z`Hmijr&6pQ'pfahha-pG3!c!'I9!VD"69"MiC[[K0d$[N#1Yp)[q'lQIjD
+
+Xjrj1f*B"CU&0"6Q5)41ZG3)Tq*0+kJ'Dm'ZEb!&Q4-$!aHCQ0a"$lQ6pPlMYVR"
+
+!5aMJRQMc)Ac*Iq2&Ii2B'1#phE0pNC%$ZlNCr[$Sl`I-Q&hT$i5&MLhqh(qK5rA
+
+m2D3&)KUI4)Plp[c'!$2KZ6q+%cVq9ZiIq[Mm+8iKp#R2IkrM*EYQ%!#m6Q$ap'j
+
+[!alHJG!F)"lIq5SJY+%T$Q6MHGYQphEi`m9fq-$Eqd[id$X`L!RN99#`!McMUF,
+
+XB&qBrlRM$"#,c5J`Sa3Cb15M6X$8f@$mpe(U#[pS8Ib!#VirM!$e[eIDS%JDri2
+
+fUi,mQi@-*Z'%hjBb@J14H,qFL"MJ'"kH&PEUk50mHIk`29U$[!dN)38Sma!J$-G
+
+(($J`*5(L5d!2N!!IY[+%!Sr,3qb(r3rI-rGhP"EhlaS8S4rLh&9$3BqNcPGR$H#
+
+YY!&6GC@N6d'c12r!U1i0+JF)l8KG0F1K[qfmN@#Jpm[U#QS+&BF9'"DJe[i68Q!
+
+`@IMkrAEeYJm!Zb+'aDH-JF*pT,BI5,`&U89[JrBDpQ(f"fMCqJ2#3iK2Q4FI9B"
+
+cYRV+2q`h&pD#JIj(!m!l&Sk@2k#6j*AH%$!Rl!r3K`E'j#Y`4#KrqaaN(mkj!Mc
+
+AeJ#!JUq-`B%$0'SfA3,KP9B#`p(c"S#&1r2m$3&DSMh[2A"Ba!#ieUp14JPKfR5
+
+)IqD%B`mXper3,jCF$8Rb!-P-0Ej1*HhPJNU6pUd&GESaF0bfcI%Ui4Df!Y2IFjM
+
+IZrb`3hrlI5#6hH!$*-dEpT4ral[("M+lV4i%6YmqP#"J"pC@!0PAS''b#$JZafd
+
+$85'!+hX@-,!d(0rAmaTQ$F3VA+X#0"6T0ekD`Vr9`"UcUe3-rb&M$"@-#ecX0KB
+
+#qH,(3T55QBU&X*Bj%JY*e-a!%*6ee[KP-1!2520Kk"'Vel"PS&G+#f[6(jiT6"!
+
+m[[)h3-#QJIIIQ[`l*(r'-SFKIMH"!VlXbrrqN!$HYr,23`b0XqVERiG@pra4+(U
+
+Ak'mcGPA`lk2cN!#"m'Idf`rcHkT@K`-aL[$LPrd*U6%U#L`aUlbhr(Q)(p*(,[P
+
+pk#Qr+d%Vlk43!VQbF-!&K3,&%[8rpE)&P,($"qSX0+[8&*5N'E28@EbK8TUa4%+
+
+YarUMRIJCpEJDrcrTL'rpEP(&fqB9rKP6fQ`"p,dAr*klRCI"!qmiHX+1!+$Em29
+
++("BrdI!,,9EiDd5`0%4bA+LjIj!!fq6qGfUC*MdrfTaNXP#9AG&QDT4*FYG9LYV
+
+8UXKB,*S+j"GiC@$4ApIqGm!HY[F%qPqc@13$ASp`!*G!Xk$bq,pP5iljSi4SQe'
+
+IrkX%FlcG!Z`r%V@j[f2,00JdN!"-Crj4mNfN(pGQjLFlESC0)c(MeNmaMfJ3!m-
+
+,I`cS-lS-"%$!!jl!$[iN45ECGEBb-J"BjV$a8IJGf#9cFK#`f'2j[h5ab3-KSf!
+
+c`fLdPcFX46'RY4UCBC,%+HCGp[m3a+FCqiq@PSMme5XerLY6Y!SrF@)F!90Tp0X
+
+(+``!CJhkqJ"!drmAF*KI`hlm!imbphF@'4Yl`X"#D-TV9SSc'@3@R1NJahTcXC3
+
+U8*!!d%f[1))Jr#edNPrI(kG(iJ*4IPlf!EA4jh$kiJ$A+'`3e[q!2Xlpll3aMFS
+
+r[!NlUiTAbr3D9Q%cAfd+ICc`eIEhpCS#J`C%RV$f%4RbCIiA-L49aj3@e`aNq,E
+
+43$pN'"Q3!#1S%N+%HQX-(A6T+@SF(L4EkqZ)SX@b!0!0kKXYC5AT!hCZP*rrCHr
+
+DTKU6ji#E'fDqTFRELRahiS2Yb2G5`,))cVPSELb1Epr,fq9Qarh,fd$Yqm0fMrp
+
+C1,$@Gp',$rHPamAp2I&&f-YEemYQq)ZRh`f3!(bkpq99D20L`2rPIJ1)@G'hkRp
+
+2(1j$h0Fbp#mFY0ar8CI!`l8qPlr2f4ZH#VeRrYMRDC!$E("G[eX53Q!i@UjPE'm
+
++e&h`3GJhU2`ZbkHp*M&$4RZZE9+h3j[qS6bjLMDm@3X,J*)1UFLjVD2GK1lpAdA
+
+Sh[qKa-U+SXiX`!6RphmRdZ$r8e8E9Qrhri&XhP@KpI3$mX(5)hBBI@LeNpG)4Bp
+
+Np86SHb5X`!ce#me[BF*5FVBK"Pk!S,8P%Q"$meE$2bM&dBbc'YJ-@plUfAD(hhB
+
+D-3rFIZ9KIQ8*fJB5rrrI+!@[3HS`6)+K6f#B6NBpSN!3a3[KBC+$i[)aF,I"AmN
+
+q3!2)JX*$J5#,!,LpL`4`VF!@$!J#&U'1NJ"Y5pL0##q1G!"$MEr!$-bp[ZRbGjq
+
+HJ"`h'SDZC18%!d$"Ad0"pC!!6,(p3`9D#2!QbN6AK#"5Ifi*-)MdAiKJL&$mJk"
+
+$L-P!q6M"`N2$qm#2Z5mIP3Z*,fSfJ)Qi-Ir3l4UU6ZbDHeKhq*j@CN4[L0ThB!V
+
+T@2MJ"Cc34amF4UpqH(h)2Q2`+5#leJ2[MlqC&[Ifqj!!L$kU!,Cb3[d[P4H"JEY
+
+bcq8*i-AYj"h('()&80Z[p`XC@!9`6$$mT9%p&0drc,!mbpmM-bBmN[f0kB`S$FD
+
+'B5"9jlc*GMTrB)"dM$$R(eQ#DlCpQ)#VY`b$$A4PNG)Dr4h1(!N%1Mh(!&IY3X0
+
+V@h$JhqM5Ub$mG[d)4)"UpdD-IZZ0SAILIqM(r0rlKkh+J*m3STb`I-Dj*XS*a20
+
+M+#IpBB&#U(0j3",Yj`L51-S)+rHhGc,A"&m"lhe*aHB6JMZqmYYEq0RELeXBUA(
+
+P2mQ%mrp&S)cZ"RZhIRH&kX0ShbfTijQl6FSV9S2N`!L3!!mJ3`C2LAC4!920GcZ
+
+q-JMP22i1-Zqb!C,@h%L%EG[PU)Y!qEY+mQ4J'qh*rlTJBdkDVPPb2(bAKe[r'&H
+
+8cd9Q&Jp[DQDeK[FdiQXELi#$F1[r1c%E9K+K9Id09Z#9,@Pr-dCkd[pcDQeM565
+
+e+*E$Ih*U9Ed`kemmLrB[1Dk3!,r6qcHTcReSFKXkj20PlI-GiXQINI10rhDcEeI
+
+U6+phZR`"A)6r,RD*Y9JHQ-M5efU"KF&-`qB-,D1!1E8jUql[LTTd9YhrSk,Q9,$
+
+2R1`L"[pHBB&idRr$&S4qZr@&MRddV5fFbrY(jLcr4b0C#RH0("%#,-TfN3+H`i8
+
+@BJT4&JaT@J(GdZrEjXD4rSmfMZh%SfArJ!6)rlf`fICGJB-'+Npb*LUj4h1*Bdf
+
+jeaR,@1dP(QIq$eU@P#F*`d9PH6+,)'q+26mlG0c&"X[[4fejDa&m8!43[i8CNcV
+
+#S%)HKU!iKL#(C-ci1SCkDKlI2BFEKKF"AJQprP3"'ad"$r!ppiX2fdh[H+ZkPdY
+
+DaJ@fBGKK#*(5BD414YN)+%lrd!AFR$$9C#4[ZPdNN!$rVb5X!G$$R+1)8FVkFC3
+
+-1qHc+"P*)FE!&LZ`b48'G`N(Q))MESb4hl,L!@"E!%Rj#Y6[B!11NmLriRIH!I)
+
+IT4FSH&hmf`0!6@ILLqEr#c(E`,A5VN"Z4FCqTBU5%"3aJ0i-"%@#bIN*6bH4@i$
+
+bbq,6pHe'0[BLbCVT5G#Pa+l4Y[&@)R5"SU(Hm-am&hhaA@e,#$S'MLr(1`*f)4"
+
+8(GaPPGrrbprpmJ$!4SIK3mhpc%$rQDHaqma'mdaI)h``j*)a!bX3RI2BIj!!LHA
+
+r6SeY9`$%&MaN+9Y8)$J4B8chNiU`Q1lR0)3[`Zq+#P-X9MJFr)Tre,Z%[km$hMC
+
+AE!%$1D),AqlcQQ,a"[3M&-5@&'JjDE&#@'AqB@0Ci'Y6R%(f4q(Il!p90*RB(e`
+
+dQGSI-Il!Kr%JH2a(I`8HrH`V#Bh,08G(5IF'#ZUGliTqb-JA`%,0[NZcLc$K%HC
+
+L8@R!Zi%AS[mcN!#"q@p$QZQ0c8Mr%9[+rldkRU+X&UR0&dE+"dQ%%IXJU6#+I4#
+
+B@#Z&$2ZK5F-Zia#%X"jP@0RjB'Z3!2YpQH&I!)Yr"2AfMTB$fG)UqZ%ACp9,"X#
+
++[d+Vm@F%YEmDYXDFiF#"#EBT-@L$6!dr!9FY&larjr4Ri[e!%6lQrIb8G+)D"m,
+
+B(`LSfii")@l`drA)XFp3a"#E2CUcrVpV)b4C@lNEQ1Upm+5aji`4+P##-rj+&dj
+
+4$J(MRhGYH9HEQkclJNRjY2kqEC)hF&m[f2DHE@DJ59Q+#A[ka[UDAY2caX"pmDb
+
+,K'hEh)&5D`YPmDrl04B%1M@YQi*0,Gd8ZDREEJTYkKNhTE@TiDBmrIpZiBfC2R%
+
+b#31HQ'D"(2eM9DAr8"ffMF#8e+0*"PT%cLSHm&h5&XHj+%M+Q*FGL9Ai4q,mr&k
+
+,Ef#!-lG`J#f3!'hS"+H@ph5IDF[&'Rq!,VcIhGd&i0H+#V"P[GcFFQ%)[`RS$m-
+
+$YRVXV+TkkAm'`QlH$$b&r2J04FJeb)!6@lmlB1&kLFDN"P"eGe&U#!K9&XfGiXN
+
+55pJ+!2bMGbIrGfcGc0mEa6%!fGp0C'3qb+#,+L1,c!IULd)4fE6j%,2KV811K5(
+
++1Gk'0J5bYFbVlXN1p(`!p$bm2,`+F2Fme&kq2G3qp0hrXf%Jrem3ZUB&LhF@e(0
+
+eCl'8MPG@UU36YSjVIBlI8Eb!QCa0*cR!TU6"65"R`0ZfHjDmI6H)hZIqXAaY`KF
+
+'RrEr)+5BFDbD#'@2"HHDL9$%b2iP%GVZ0FRr2HESr$di43&G4$YPjDfFZS4Y"`R
+
+()lC1pRq1AIpH+r9)X2p601m8+b!)'TKCTe`m@KX%S#r#m&&iUa2lQJXG))#A!hK
+
+NhTV8"'`0TN)!JQKJIPYFarc&h&ICXi41qKeFVN#4[i[q)[pRSAVqla3-PU)1bKk
+
+b5LDbPIA-EmDjT[@FrIrGD4&[RKA8lm6[3"12M,`bJI#lM2"@6p`6Ca#J,qLIXfb
+
+i&6,!l&lN4qSNFXZ2P%(NG*)61TeAL25-SJ2kF%-iFajjr*!!Ad8"`",-Ul5`JGG
+
+BH36Qb0'8X4(X03MmS&BCm)5BlJr-Q[pTTM!d-'9245C86P4jC"(TZGS1HJhk*fY
+
+lrVm)+'ei!*!!!2A`3"*1PK1FCMD6#AkG2`6b1bQ!UYB3b+'2TSSrcAQ(q8fErJU
+
+MRNZMIq5Xmhq2hfEq$Ua&*-i)Ur"9qMCV(#HA0QYD2*b%9EjGm#i"p`jcK&)#E$r
+
+j&4MNepqKc4Vb*"Ap23!FEB5V6j(XZE3S!!"[22LY(32@,NcYheNJ[1i+9rlKE#4
+
+A5-!!93(J-4Y'R"N`%4MhHaYA!2qQ,[!EqF1@fY`Ed!1)-(`p'MI+q3eZi[rHrFq
+
+)GIl["!FCRVqA5b13!%4%iU`398*%0[IE@K,1L1$i$c1"9#(kjd(rIb(dXmDk$GL
+
+3!$%ef$CiC@12C"I,J0+iY$4kK0hL9)mNE[((!GI)325aeZpEbN$3YP)%1i#NAjK
+
+NXqHIlR!$c$0D@&d9G0C,MA2fN[a[!X%"%%M)IB#YVGpjXP&2)#)B*0DLD`cK5r&
+
+hE"VL5aAJH-Y5&fL[*5e!!+Sb!P"I26J!q344mmqSQHAa0*d!h43Z[$qX9[QVU[m
+
+f"J6d1cb3!,Z@"12$`+K,'AlERkU@aI$DKZ65m!U`4kIFjmRF$`RS!fU[dbF"R"$
+
+!6Y)A!QHMprIb,L-"`C,3beJ@`'%Hi!cbrpI#0RBUY%GirkMim2lYrKAr&dNEfr$
+
+"q&qGD(P5pp[IpXd150)8b#mZp%"E53PBqP8"PPem#$%3!!hXp&N*KEa$N!#q#9`
+
+(8'MIkb[ljiKEM!K,'G4P3C1JhQQ+[e,p([cATGS5)P0GM1SChpP4V3#5ZF4-,VF
+
+#T*d(lD,AEi1f"F`$QG8UDm)23(rU'd"%a+d[i8"NT")rd"6IqJ)XY9[`YJN%"Eh
+
+'c"TJ5l)jBRPa#A`(hS0A2[rh`E,[ej+hbM$,q-NP$q"lmE)$i8$L*,bI(VrTGli
+
+((%Vr#2bcmPEm$a#kr"qpPc-PBS!%p+0,ULXm+EVJU[#dk#*T#KqS)+X%A[0l9-5
+
+04kb%F2iIkDA*hhjJ-p@T`RYcT*G-&[M#Ih-GYZ%IP[Z`I"1p!,bmVlpY,YN*V5+
+
+'"SFCLqY#S5&`e2B&+E"4IaS1KK#&-ZSRc8,jKiBe)!JCi&U*9JK!pe!&)ief15B
+
+XIqPJY"GT6V,rRd"R2#FIIie8r2q9K`C5pf$FT8qN!2($2h@-C6G!IkpT!1(HbLV
+
+83PaLb8`,-rKf-G2#1Q4S!AKJ%bVrbYX!B$I&[[j'B&Va0I"LD(r)'pjP&F!0',!
+
+%lB"Kr1IiT0m3VAL9qXfRqZH'-j5#0V*i*R!X8%dU13@jSp5RH-$"k-V*JjM"H)J
+
+pL)%%B0bPr,)0m!@@9Ilee[4fMamqFNrY+rHPdm@UYpqMh`#*dF,!pREArD23j3Y
+
+b9r$!3m[!jZ@QIirrbqAHF6rbQa"32)cjElXpAeaUp-0kA@`h0L1Jk,(S4`e!0Md
+
+#340qDQXLYq#I-3X,Qi#1pfi2pGIp*BL1mAU1%-LAN9EBMb+A`BFUTT9#-Q$[0T!
+
+!b+mN!mLYIX3A`-l2Qhm6%k`*4Ri,IGYM"RSEIGY!Q2BcHNMV$0pK#)4(H&UHbF(
+
+$JFf,jr6$"$X*ppm"Uh%q4IQlXC'BU56GMa,0)ch!q#GSSbiR!MCJ$([U[q0YEaZ
+
+('flA"Zfe'Pc@$[Q*Lr4Xp3%EX(rl(cN2fb2H51!JMU3'53@6NN(LB0,-),@65IG
+
+)J@Z1i+$eSF8[Ad0!qU'LB!JDhfKCEM[Q2SUb!2TK@!"(3)49p!,1!`,`8H[Ip8*
+
+r0[kL2,#TX"Em9B`fYZd%M--2!AeILBRdYlqTNFic$X&q01TMNJm&)XZGr4VXR!1
+
+XV#Q,P[jVDSbA"$[AYM)LKHQh-[SmBqe@4XNc0Y2+'21-24H#q*eiY055&0a`$c2
+
+)I`mMc(m,D*YJkD!GR5%FX8A`hpjVh(rMZ!G1j@TJ*riY0F"eXKq`alliTlPf#VM
+
+`#$BjX*@GE*NqdZ5r"QN9d$Cr0j!!X)LH,BF(`V1H")$IkRPNIKIATj!![ZcjTie
+
+Kklm44c5Y1f%GEpbk`bC''M&1QShHEi03%lpN#S%-3A`dKb,!#%6J@)N-ld-pmaX
+
+"B(82m'(P$MJN*C)rq!b"JaEpU(8')`5f,p3T,Vq!"cCME`rV!IjpQpF5LkL6XG1
+
+3!"d$MQ'm3`eTUZBra3cIF%V13GX%5DHJI9lT'GP+DlF*9l8GDD9YPl9GkU!#(3D
+
+i*IkpE&IpdG)e"Rb`#!!8XYXSJ9AF3bI)3!,&rB$qh`cJH&c*cI[M-I"T&rd'8d#
+
+6E8RiP9N,#!%q$iL5K$C2HSa(3,N$[ZG)#k!ELaMB5D3HBdZ0kQi$0H)Jm0%`p!)
+
+aB$!kf*VqGj9X1c(%Q)ic@&+-*+@Qa`G25+Vl*AK#fY`IJbFXbDffJFU*[b&C'cE
+
+$`3#%`53(%fq(L--KKf%4Mi2fe0Dq"em"fdZ2r`e@1(4bq6['6q-Mp9h`)p@bkAI
+
+KeDBh$m!!$21M8k[YA9rm&2Ql""N1L5&a'$D`$'"YJ1%6j1crD*BpA#aEq0pT!*[
+
+&XSKNq4*'p9T154KZYM`LBH*Zbm@jhZ`)`$Zr%IZbhJEhCqqPiFR[UNidm&D!@&H
+
+3!,jJZm+c6Fq[L8#k+m5V0X&IpLbH!%Z*jrfH&-"C9Ck"*i!q!-bVhYrJ!fJb(S6
+
+eI`rkrIHmhl4AS08Gk3(kjT[q4,lb[q%lIrj0I(Ik'`$cZJ8A8N5P'r[jm9p$C5"
+
+16+dmEr)!V)-H(4iUpdqdMR5Sh2r$E$p$p,H)!@RP@NLcEka)+)DR,+R!"QM!Pld
+
+T#'"(!R3QKN1I"h*EJ8k#m(JdCVlFKJ4f'9m8(VS0q6j3$5b*(B+rV$eL[JIfa6k
+
+2LIkbreAiP+N(1A6EYRrE$aYq!IYPm6,iA5-AZ2Lh!-[JYX)#HlBfU3"Rl#`Bl[G
+
++),RK5D(2`1*Z`(aZ!-)D3Ph0&lk-0ckjl(&m*FREVd4C`[acD5A"rX,IqimX44I
+
+N)rlM&FmF42b`+4rCpHZB&,PrZ(l[YF!eK2e02eYHN!#p4K!#8L3XHNI[rq5&[(@
+
+T-L"hf3-G&&l'DB#&H)50ZLI@'36l,KVk'HV16c682ej8)%,cbIa(QKL,!A,9$YE
+
+!)`1KF6pX6jr4hMaM+##XGZ%h)f@CjrI(lI$$qiF9@[L[pL6BIG&3B-0!,P)f5Di
+
+DT4fME",YQCRmIi,8X$,`$rIkI8m%J+h,fPIXGdP83,`i!2MR[S#f$"lr9a)YB2[
+
+DZm5KIVX256LTm&p&5SCFL0+Xk1qAD9EP5L9T9RDPCV4`kfT['3#'E[U![*!!5B+
+
+cm&qG5BED#ee@hPqATXD4r9TEC6@,P0!HacR'lr)`L3$)m*pJ`"4ZllE4(dhl$`)
+
+M4L1L3-keYC&2#-)M9T0EPd$GLDcZbrS!IF$+[#XJ!G#K!#JJa@H*PBAiRc[C0#r
+
+CJSELEi3eHGpiF2#qR6r+VY+N6FZZZ+28KIArS)FTq92P!A12L3G6q+mH*IKeM5B
+
+#GUG8%8(,R1)HJM3Ed6)2TNE1K)40'S$h)2jM4+$UAM3Aa5MC-fXaPN%h'k+mT[I
+
+p%c@Rm,mc4aLV&&&RC'MPRA'B&V0&Pdd(SqJCMeIDbC,82'afI-)HqFT1r)SPK#,
+
+m+!*-a-ll0b#qE3[!#0TC`!$D%"PdI"SJ[QmXjpp!BZQheV(QAjGY8X#0hPf82rL
+
+Ac5AcA-FL$dBUJ#iEUG&T&C!!A2DA#KkP`82I&B"@8`P&H0Z("-Lk[SX+rm#iBE3
+
++b)Dc#@J)hc'iGGNci[32qlE`Al9*U(f`Bdb%,2*Q95&F-XCF0j11F9)hXrkM2qP
+
+r,2a[ZQ)$)cPVrMVh(R*JIGJU)+[5JNG@b(qNI![reC9NdmbB6`4bj29b-ZIJi!,
+
+RkXMJj[q2hEVijaGKB$2iaZ#Y[[pE+([b4bPCi["rDU@Irmm0E-"h+9%NkArGXh%
+
+-6'k'VK1p%'SE6pmc1L+1h(2f(e"J9hh*"+5EH4(hp,r$X!6q6LT3iTGUheB#YY0
+
+5h`@#0*qJEJ#[L8"YHLb`k@h%F'[`Rq!EKImU4M*GQGdHY[$Pa"(!m!#d8b9q%JH
+
+BB&i-#"p4!##)rF2R,[c[I8J@AJ2AkXqZAjEC[YECfBhE-XqBT-V2qB2edrq9%B#
+
+0*DZ3!"rpr!(I%IjCP&2iHb15VGMPfd6S3GkQY!qQET--K*RE6$)KAmTlPlbQ!23
+
+C!j%+0N(m,L"m)S$J$bQaED%I%2Bl,E6dL5H6#2X*q9mbN!"6"5PcA&F&)qLRmi4
+
+3qd#"BDQr#r0rT'%ah$EklA-M9I%Q`qe3i$VGq"AQ$b+SGj1%q-%`Mi,[K31"KXq
+
+kP$,U!D)9m(L["&`D3`)3ITY#9a$r8bGbR$S88NBRNX"!Tb4I[T,lh0V9&"LdHp2
+
+DVN6ZpfqqKYRpYCp1'3#-G%[%!5$M3S!T&',%H2L[E0Jq6U!0X!$3"h4Jjm@RXIL
+
+rKL%4rh-EF`YQfTr36@('qd-#FXLfdA[k"i!l#eilE[8B)!J+*lA+m-"F2G)-Sq5
+
+p*$h[`P$`!1)"S--"P*6HhjAB)he!k&)b!"Ekrq[#E8YN5cSkrcECUPZ[2GPFVTG
+
+1GZ`!h-*Mm4M1lYm(,$+E$m5#1&BB-!"8M5K53#hS#hl6K$b,(I52')eNj5+`&P"
+
+49&kaN!!"1fkiFpcrY+#GrqSh-@UVbi*[pH&8'#ANGi4(LFPhAPlJQ'q%"J$e2pH
+
+LmJpF`Vf!B"MX9aBJRZJ,c!*qFb[j[p&rMEEY1%Q@GZfZTeb"@F&md+-EPBC!XK"
+
+qe!+@mJ4AA2XpPDMR(fkmlCDcU6UdA1"9mP*9k&hZ+`[Yb+(hG&mPSIGe`BIAD1E
+
+$MeUH[j9(YID#IJpc2R'b13(ESj!!!D1NjY4Z-JC(p`H4YEL[*r'$FYJI%2mSEAm
+
+p)!'#"ae!,8$L$q3f`!#$D0ZrF96d3N`q!5Lc4RSLEbLJrfPAF9iJY+XL@`kG"6k
+
+`NUUUjr#2TGHJq8Adjl'QqRA"S$Prm-M3MhPM0[kZ8`,QAarJk3-d-'Y,ec`FKY!
+
+'L!#@RLek#V$qjqdD3#0lZed@$*dH0T&Z*B+qGi*,e(IN5m23VD!R$+,IDC'6d[X
+
+pFa"aYdL`JDE9eRGFi%*qM`b6m$pG1-0DC"PK@%!4e#![+38*daC36!Q6#ULi%fZ
+
+p%[8eqJ$lRr9"j[G0)88aBS3r5j@h!8Q(&JS)rbkFAM$#'QqiR5Aq6`PPD)CXNb9
+
+G+RI26"5Q*lFY+p-lYadhcpa4q[2Ib46phi0lFm$!Gq9D!0!2A'0VrSN9AIJlHC!
+
+!TCk"`H'RHj3pPaJFXqQHYMPA&Zhmbf0F8VXT!*m@qDlSq!iF8K$!p,kbJrN$49-
+
+IS1rEErafX0k!q!DSB!GPP-(lX9A3(*p$MUYUi5M#lUD&!lcZabbFJ5f,[j@Fic)
+
+K--V)[jm`pK$c5e#"@rPh3G)SF$09Q5B)DU,[AcGYc)`'Ha[MeA)YXSpAUa+r,Ea
+
+DT(dIikYGdQS)"%3DJ[r6S[LHAF&[""6a$ll!`Rp4q$3,"0"L)d[+jG@aNf-6S*4
+
+8G[j2`CX!XD')ECl8li+!Dh[qRd['0P,EN!"F9iC3i,(q!'4JERS"3!JAk*S"qZl
+
+cJ&IXEAm+B-6k'K6QabFAb,mU%(Ha8!1"0LX6B0[rLZKDZKi6Zf!B#BPYU3JPZ*R
+
+-KZK)l'Arch@D!%UX8ii'GV'XR(dP13%fT`clkeh$!r&32Yrc"Qc%'!3b@Zd&XV3
+
+piqhbmX8rq*pX`SArBZM"8M5ldrepXp8SUVVGCK)9GrYB%[9Dl#dJPrbhJ5$E8(G
+
+%5M!-R-hf!V,0X&dH8UN$f0Y!`IB3Z$!J'*M+%S"J&RK!q%$`)pYfA"r3Z"i&+KN
+
+@2#Y[4(kMB+%,iME$lA$)Gi4@&ZaA(#BLl%F6DH4r*K"XJ@`6l`AJ%Kc!9pc#kXm
+
+QYA#U`K0UiAAIJ%RaL3UiApjm$`B!dFC25IRIJM-!ENh-"9X0LcV$k%Va)URHP2%
+
+HLcHfh92YeZlahrL0pGrb2UGV13+0prP!'#AjDrYG$5UM"VX28RDFi9G&9YcfC+k
+
+4Dkc5"X+NaZVk9M3ak#YSj(!N*%@r6HMJ8f*2)4`K)Q)%)X4,6k(I"ek!$$hJ3i4
+
+!p#MX%GcRbi"p#`rC$lN!JpA*J-,Se3I@jp82'B+&(G6(k2Rl`*9-'$4kk9ZeI6l
+
+r%%Qf*aE09-Cc!$`dMl*b0"A'80246#P1%NIcPJ"VB$*LP`JfX(Ca&bd!)3cjd90
+
+i$iBF+#`fij!!!r(HYR'J2KTJlk(%p8%q'LMK[KX"i2[mKA"lJ1MYlB9PHM#k2%a
+
+k[iaq(rJVHNe3Irm*$-1I!h[LBP!IC!Jmj,B9m-$GICi-P%(EB0Y1(qB`L+NkYJ!
+
+)3XK3PimX[KI"d!1E8-63iAhKYEjE,p!Eb-!$3pXpb0!p`9SXrq`#XF@aaYhP5FH
+
+lUT1Z60$QT+H&HmQNpdqrLr34`BFq5Z`q)8!r'X"Ida)$UHCqMEJI'2erD4`3Y32
+
+KVj1&YrFiL#p(r,IlAS2r&55epE'f!D[lJpmjmA[`Ab,CHKG0+lk,3J*QmH6[p+q
+
+p8S5j%$)S!B)!Ah$qYB!Xr&Fc"XXNQH1@@IY1f64,ll40NENaB-N)"iMNce9Y*4a
+
+Q`0DA9h+Jli6ZR5&i)'Km"FJ@L)-SY&[f$@MK([-lhic$'b&`J+i"R0f(qHUcJ[q
+
+T2%`&E"2hQQ1P5&28IHYfV24r1pGIbJ2X(3"lijp$c!-*'!4#h-,0A613!+Ml,JR
+
+fLX,mVK&j'4IQq!ld4IjVcDYiAbEk1`b+%A!HJ[+k-J,YCfM!jH!!5Xmr!aF@5pd
+
+N%V'!dCNLM3pT9#A'"aP9-mC(bkJk&9`BQ!KD+FX$j)pl93r`Mr-&J'&%P1DAIlI
+
+aSDkje'[jfh8m(pKH52[X!bLr`IBU!`Lr19j+rX(!Pm`(RQ`EMTC4(GkEe5$`)G@
+
+#QilSS4,Sk+8R@G-9#`5Y251SHcLpKUpBa"03QS!4f@"!+""FUa)#rlZbQVMcKQA
+
+-+3!N$RpLZ)lXFIe1R23"YPU&IcHdcrXGXkh%IiF`"9`lq3F$3hkEFHEq&89Pd24
+
+`jl8U0ZUKrUQN$IFMT8QE103rd"ZZ!YM1!DB`(qklf6)%`!%MB,f2[lZl+m2!CUe
+
+MRX!Kr%3aR(V)5PqC53CH8HI`hbe`Hi$@`T``Xpm[`CLJ'(2%UHGQqr(c*#$-$Ie
+
+ILm!'1ESl@*`I6J!RKQN9mGqUI3dHIL8!aKFh!Vi6!m-SSm+Ni!"JV(%"!)E%[mm
+
+(qjhica`f9AN$"'8q53q`mRa&UkIK(XUrM$31mDA4R'i,C4cpiD$[3-D*%Xl[[[C
+
+YV(p&V)Cq"q6+5Y[!p!SF"HVlR3HNeX392irjmPmfQF@Y0cCCGi9dpI#lC$qeIfJ
+
+i-$Ge6$MJ&3@iT1Ep*l$Ib"q6h!1-bL09$FlQcD6rbSB`Cdf+iY9P)@0ma(8B-IE
+
+rhpS'(rlASV*"eDC#kk*``DF5!e9T(`93ML`(pT-KJMV5mmS-4,MS(3C-E[[[I3+
+
+%%31!3Fk5m,X5-#cq$[prk`@Lhk*rQ#h)qKeTeqqbB#$pFZ6HA$m8m"CAp[Q(3f$
+
+rTSCG#@3j[T,j9IKh%H)9l,mE*eF(!h2NUq#)(i(4q,I2*rf6q+(`AqKpk-"T&3#
+
+S+eE!1HdVCZ+Fp)U6F%9rUp8I%!'MSMHrdlM,[L%$"jZJ3)NLP1$*U3cJJ9Tr!(V
+
+T40irdq,X#l3jUP3`[-e49IJ[f(jM2$(3MA4II#,1P[XLJ6JlDkj0[,(L&raV)*(
+
+Sc5Z@NX!@0L!qN@5@'0M@L2df+Y*cUH9$r(Y10[d*69Ujr0dT[H!hHFSDC+"%kp(
+
+b[mETrH,ra#2mfhpBE+Vb6l+%`[p1dpr-[X)f9SY"jE6E@jk6fZQ@6fVi6pUM''%
+
+#&PdpMIdh6!+80pF+6F"[q,pp)[md83hSI`C)%'2[&[-XlhCLX"YhqrKSVeFLa@(
+
+qR@0'hdAVpc1FdBNUiAdrrcf@3dbJR`1+RS)a1"!PFc0V`$CJJ1q,U2mrETka*m*
+
+Dh8CQ&+eR%VA4V`52@4YarLKi!Yl6[2Nc!JYqYpUHr`A54%mB(T!!fr0mLaekp`c
+
+-TfaI"0DEh'4B!hm%4,BpCY[rYZI4!'flaYJ2'`PBQ6X%[h,0DZaT[,MbdRmj$'M
+
+DkVr[ZAaII-Fa@0`-IN%Hm2F$jSL2fhVI((Lih0bXI481K[i0AEchiP5i"hQVl`h
+
+iLJ1Ib!*6*(l28AYL6%`VVY'S*pkR"",YLKQ"P-L!EGb[)CLAHMpT%Ib[i5IrFe1
+
+-MU6r#b@c!#5+qLI9Krb+mTS8(9ME8'FmX050DGF`$,b,dEq5h,$dp%-J2c+(L0-
+
+X!XX+k$UKEAX(5!D!63`VJ&f@ldCq3Y$mTcpK-!)Dh+[)-i@U[Gd4mRKEd6SN0Kc
+
+rV6aS!-S6J[)V+K3l)"cB!4fJp8'm$32E#P%3q`,,)-!!DIKI'Gh2rfXaICrr!EF
+
+CcR$lQQA`V(20b3`M2Rdb%!,"r-SU`[qXqblm`8[crGD-,JS,#H9,&E,J9j)RA[m
+
+q-'"i(j'k64#r`rRm+l%B!5(F+hf*mFb2`1lN+e$rYC&-Q6P!49SQ#dcGUXR#R5G
+
+YNb9Y2@QE,&p`!T!!*3,kd-1Khl')K4#"%4CD4f[%HF`@q[c$52d3X,FkQIZ&%)(
+
+9I!mK[e2bq!mF'2X$X@c*Ik'9GDRKT9&*cUXdp$8"fq3rIA`d%6jU`NL,GmU%BIV
+
+LY"#CGd2G'*rD$E-@9@b-cd[8!REmP)KIJBeL"5FJfFK`m1qiFq99J2K'j$H+CYp
+
+[V8*0&Cm4qNHSZ8&2d1KpK36hSH#9'Qp$`E-F2`)&(q[a*ENrj)0+4ZaKpcLMJ12
+
+qT-[!kecL%!NS&8rGV3M1VlQ+fhk"3)k#RA#[*-m$J*,qcIGAjQe!kIrII$k%r2X
+
+Uq)3!B%5QlD3EG&ERlp+EjJ-BJmUX8"b$L9R"))-cCN8Vrh5k#0"IZdV&+"GAKX8
+
+2f*XRLME$3jF-pF23"[TA(fh[`Q%p,Z#0Di!2jM$fK,9kA3CGE031'25r-XjX2pS
+
+ah3dbV`bmpjpF2SVD,QVTHqTF!Z",AL18iC%0J4J8qFYASH4Y[jb3!)'&1m5lE3J
+
+!mX!a0p$dh)pFp3)%UVlXcE!E,I`E6G$q(aUN[A)Y$+YTfUE"!4'K'KcT@E3(Kbb
+
+,)i16&$GFUali'r&hQ3``)$Dj#Nj5"SU*,fqr4h$fEpBq+KGY1iB3VbkH!*N`bQq
+
+hR43irRl2m![%SQp!1E,lQkIZj5ZcE#H$-(,rAAF1()lrh4(9AIM&)K$(m9N-`5T
+
+r8"3PSTN4%G)ZAr3mj%Q!9E(9pM!mE0CCN!$',2ar`"KE'R1A$DR)fGmhClR9m!F
+
+321YiKGpR6f%(fYhS'VMSAhK@KEm$-eK,Kf[L%EUT*L393NNc(`PqNXIbNB-!NZd
+
+cqrmr9%%Tpp,(*ceNMj!!1(aJqr+I!TUhdN`&XrXl1U4Z9lAkX&pVN!#pCDe2QSa
+
+UCBGffD$m3P[i2bJm*`Ej3cQ$&BMr0$kB5cpYI82Y#*`!HE1+JB!$JKB"P5%)[2m
+
+6b5f")&MkQKkKJJF(dIKrh#lJ5AX"$mpk3&VCCpScqh&Yfq&3$JI$+BU*8b-'r%m
+
+a9ra$VkCPc,RIrSlF[-VIBCr,A$1l1bQpFpYZ[(R+(i))0Dd6#dMM1h3b*`a`lIk
+
+2qMlkRCKrEI0SaN+'h!eiZIL6CVmY@SYr-++RHjMUF[b"9V(0C+!jYCN1G*cD2%h
+
+-6e'#!XTErrpV&rF#hTk3!(-HP4X"8K&#@1r%q)jfR-0092QL156rF`mAr`XAf+"
+
+R`p0"EPP1XDUiN!$%JmCaC&6RP(J`4RA''&r0i41d`a)$)m#iM3FH210B-U@i6E*
+
+4#m60,HIS!L(l2rB1j&H#D&m191i(&Qd",pD13+U6@`H-'F05lTT69Z#6X+&)M82
+
+MPccrjjBZrKdGf2Nl10qC(,mCqG5p5eQ&GP%q&pdlbD[#rlQq[(r%cfqH)Xe9hX-
+
+TPi+kP!T"$Ze'cH8rjUE"9YD"MHS2Acbql3('*IB!!0AreS#ra4p`!GMXfHaTIlK
+
+F4!aGe40B15X#GJ4AKVG$plL)rlGXi*MEDl$)*'#%5r9rUXhLIr%'`kjTbKBj%,j
+
+XSB&SbjE13#5bTAmY8e`NC`49r3[L0ZiABXMZ3("r"a@Ql#D6GZ3D)*8[-!NEFQC
+
+r0DErPh"F)*,`LD*G*2rFkmCZ"q1,@Ah)%XJEpd-&mHU6QB,1kQYR#[TcdIH`F81
+
+XJ"l4+KKm)%hrPhrKpm2HGAIT,QkN2JF$jRkh-Ic&"@#%TUXIHXAr!Y"b!Bc#r26
+
+#(TF"2U`G5p$@b(%`5QhrL*h!rl55L[q&+'`m5U*8!SqQ,!#6hL[hCH0FXa!NKA"
+
+*F1#ZcrAI3Gl$FAa0llNd4rjRbUAiGj)1@bA!V(e+L5R*fE*%1,k@@L,Yq0VlHPi
+
+&(cB"#&X@p`2H,ikelkrFCj[H[Z%Ac8MiQilK'`1V!kH#h5qVQ`K#!-HZHd$iLhr
+
+iqd'1mKXhN!"ICIrGqdq5LYUH#rdDj(A)&5f[*@[lN!#fh+i),4EJ$#q-q+Gk-@"
+
+$Q%lMRZ$Lj5#S#8MF%qCU5Yf6"+YT)$4B5KEN1c(d9`k5MDTmh)JelYq*V-[a(bi
+
+(AJ#Vpi#(&m!5X20a%!M6[2@2jDeq0`&,hi!L2T)+l!pCrXCFmmBXhrm-[hJbFiX
+
+Gp!Y&a`arrV)qKFG`4)X$j(p''iYr4rT`rSj"6#V@r6Fe0m(YD9AX,,HRp`mkTQe
+
+EEGI[%MJSRK*lXhh'!e-NGZ6bK86",i!2LN"R!ZBI6)GHrdI"&f"XlIl,pmd`iVj
+
+(GVAY10*-+T'Kce$YrS!ph8[4Cf6!iJRJc91M%882dlLa'8p[bJ#R%VF53r3II-[
+
+&rd)YaYU1`T!!2!dbj#URJ6'MF+ij$8!ZHf`D"RT4a-'iB#+J!I%K,c#C0(ke,a"
+
+@Z*Zj'Br81aP(h!!&S@ldYc[!fHm'3#"plSQ6[f`r+BUh9HiIXB!C`Ii32`%ChlZ
+
+"GJ)",fUEU`-j)X)-%i'``JQ91UA(K+dM`E%,K$2E!p`Lb`(VhQrqQkG-*b[E68Y
+
+@efqHaN(+YAh-FAe"2LbGBDlrP%@@,-68m(4C8)-hCk,[i96!r$5ke2+8#VL3!'&
+
+jpSA!lqrC5#hFI*N"U2Jr2`,HjF9pFZ'"AN"Pd`Z`f11eHHDr+Sr!SrYLc0MB!3r
+
+8JKZ0Jri4#5lqR91N%@0#%`dD`+4AUD$&BKf4qi0C,#eQ5CM&hJP9!KK*rdqIqA3
+
+3+AR3bbF4lNF@)#2,jIK!hYi$phq)#HN#,(pqmcqjZpZ'20PfJm$k4RQA*0rR6j*
+
+Aqmq*0aD3!"'6b"S"aeG12"j8I6dMK)YrL)D1VeImRfYbrMIJeVp(,'"*"4m@E-A
+
+Urm8N4p"e+"mkd$0G!X0%l*IMKdTZcCADr@V(m3e)(EF+K@9Q0`k"#QMM,NX-#[J
+
+(XhMaIqG+0TZ[q([6S4DL'ThQ3KHFDbDR[Ip2$eb5,(Qr%9Xh1Q$fMhpMH+*!)+P
+
+4jIG%ra2r@m#[c6H[J52K4ee!b21QmRX,3,N+X&JTh-Pi(%*m43lq0E$R(c'DiYr
+
+a5"bJ[@Z@2(*QbV1@qbjCmX`*Q5ljQ"1bKb!6IB!LZeq!a'XJJX4ieLNlTbGh"@!
+
+BZZe@*3UQMBKj&qrd'DB'2J3,EGY*"l+'%bU3!!BF9)`NRaj3FeN2Y$kAklme,GR
+
+f"CekXQ9[p8(rDpFE0+0'-5m+bD3S9)@[[1UYGc,V''6riAGHiF4-UJDNRRdHLD!
+
+M$"P1LH,,%FZQR4!K8"'2R9+r$"J!3l1I"2*5ld-i[-DTk)IqI19$%YL0jPKeQh'
+
+CFp(rB8lif2p#(R!#M#p!q)'BI`cS,[3@p9`f!f!pcPZ0LlVXLjU$pJ,[kD'!GXT
+
+rr*If-lD5B6IXUM!D9qHbMaKClY&eNRd#Ad#@lJX23IHKRP)m&JI)GPY!#4',EVk
+
+p!rf$mL)#Nr"l+N$,F'EEVDLS'YD-"6Pd)LpE9**()%clrQ%!fE(liDhR06Vq8KN
+
+J#Qc8hGd$U-hcR`#,F`Zrap1&5S@#Vi--eM)fBmrrKc&X-%fF[aIV`M9!X&j1"bI
+
+XTpb%r'qr-(86m[m)ZPlV#RD0#!)!KMd@m`KJ%D%LX(H5L24G"Qp6hD)i'XTf86h
+
+l8$c$%@r%qrVPA-J#XFIfc!0*XC!!!VRT$a)dr$kje31if+i"q&qZ!'cpM4dh9lE
+
+[&r"elaH@p$LEibTCqZ($FbrlJQ#h4N%eim*JYrVh1"VrJAGHr#rQ%j1Li(V3@SJ
+
+L$U&aKL)0SE8c&1[mhmAC&D[qb0UMqqId!6mR"$aSUTk,9F$QaHE&EbIZiJZ!)r$
+
+T-'#laa(`qkN!E,rep,ce!&ZAq`"KJJ$rcBF"`!8`)C-i6CDA'F[8T#J3ejFAM`H
+
+2TLJ+[d-$DBULm$p*9jj)$k!UGN-89kQR"0G9D3&XG$N",D8EllEp9f[H["p#!EC
+
+GrX12YNqe2`"GlYKH`"8+1VK2T,jh#L-E2TmY[S8#[!"0!%rpQTI&9mk"4F!CN!!
+
+!rUf'`"VJ4hS!L2lr,+!ZrTdQaHi!h(QBqf*52cX,(+!!TemAK0cAB,SpXrpUk#N
+
+1jG8M5bHEdr,rPKhCdrrU2eUUm!raC&"5E*+'2ANPRP3!-aC2(-$m8D9-IjZ)9BJ
+
+Yj2Y[X[YhDhN*i#$,F-pZ8cdl'SCk+3Jr)lr(J0-q2,bm!Gf6'i%diq8H),RDD3&
+
+GrHFpCdaiqM@XM9eTAjJp$A"#pdMr"ZD4ka5pp"'q#0rdb8@pk5hS!rpR5-%LTeJ
+
+N%CKUfApE"0**E*YUj#61Q'UaNcK3*!cibN'D*c30MZH!I!%)[`5m[!!H,[ldiG(
+
+&%5ENJYr(5Tl%F[iP!!bHR+8KKY9-JAF*e+XZ@af-Y!pIGLIYl[dMl,jXMXXRZ,3
+
+2$aSk0$`)!N%3$)SB4LM4#lE,m6&hFrChJ'D(rbR6J$`3rqpqdJBpR*S68DFf2!3
+
+ab0HIq,4ZLd#LpjFSm*!!Up!-#XQ3!(M$F-mH89ff[-FE!fC2rXf6h1$HdAr+['F
+
+`J%MIXkTS()Ekb$d-h4H#Xc81LN@"Fr52h)DP9E'T9p#!q(iV3i4-D36R$lqeSa'
+
+Frm0rSVMb*riI-DVDlhcQiGIdN!"r,6hM,KQJER)*I!r&6k3N,J'E++P,N!"3%Gl
+
+V#P@'-%3FBS8L3,iP![3*&SU'&`jX"9iQHXU'9ahraT0FU(MLYDPFZ!N!2Yfd+3T
+
+B!1)0)TP6UIS0pDCQ[4F!Y0Qf!#iA[3$)qU&!DAMMhIX+m)meH,VpUl$f4F$3(6d
+
+D3N$4!YS'liABMQ"JU8IdqTG5Y#QQ4Y31U3h&2qXAEl-0'D1#cP!SalEl6aAmhJ3
+
+AkIcEVCp+$+$+QHi,hcDqJQ&j&"RB&PCm!m`L$rMk!IcIAS$qLAV2Q+mrB,%'D%&
+
+G%(U1EAYX&&KdKbBaaCK$14`'0*jI+[H[+6!*F%XIMFBZheIL*PPX$")3PJN@q2I
+
+B'+RYR2K+9bpCp%%$)cG+(+0h$kQPmQqbp$*acqE$K4r4frE$"6$'*ED[mprIHRa
+
+EAKlphX)!kpfEd4HrcFS[pM9!rNXYfAU3!%CmVAZ#cpLI#a-%r5LkMBFJ`!$85EX
+
+cMQmcTM3[,r1HHhcpDYi-,`!e`$J1ZDYl$3%RGjYh*j[EN!"h!dp#-bq'pXa'I@$
+
+V*hd4"VJmU$h$$i!,rlFHNS*1kM!mC1#6LbmHPPJHRIS((*Y6+C!!kl3i`qTaTIp
+
+T6a[+&YYM"U%!(dN1Kc,2%J%"rqb)J#Mm`d5leK@U$5SJ*`JKq$[3D26kl*d#8DE
+
+(3Q33LV&,,S1-Rf&B6ik&8QHhQ8Ap6ijprBq"@$rlJ3(GCF`PJ2KCY$GIRm#$2kZ
+
+$+`$(%3aTB&jeb"#B9cQKjUdDB1cam'*!h0aUlh'rD-H-k$jp"fa8rT3Jp!!8$(9
+
+I!PK0h!!%d)TCNa,hMfeLb&fFri)K)b*86)f#'e8P#[5RG4V`JU2q'pk66-d+I!@
+
+SP-8h4m"P1R#9!VPf0`i`l[CPj56Q4HVIR2TI"QV`Li"NAHF!8BmUZVVEJN$ViEY
+
+31,*!'AV[`YZfX#(JZEN&F$Il9J2BTXi&*Pc'l"e$ES([ZKE(Q1U29qi0!@iPd1a
+
+A&T8"frE'Yd$bcG%hlfd1B2Chlc`3k1C2i3!p'V0KJG[JSN()la3N4S(JN!!LM[r
+
+X9bRqR3['!BC0E4cF6jCb+qb8-2IqX,%k`YclRcE@2!"92JEBS@VMiZ*L6ImYX%0
+
+[JrpPD[rGmpeYahZ(I'fRF)6HV-(lBPM2j@E,aGN,mX@!hfC2VEqr2r,dR2mPN!"
+
+VTmDDH52flVZLQ0%rdY#')mEj,aScp2,iK4aim+KV9Ibr#MQ+rb$3'!"$$#B'22Z
+
+NY)(M'IhX(3TY4!IZda2qB$*k-C!!P2+ellqEb@K[P"J"3'Tq)+&L@9cm$&3Xp0H
+
+pJ0r9-CXf,hqrjD9!r"Cji1lIm%2dDSQ-HLmaF([`9qcTqDhkGrmqa#mGc4eqalS
+
+,Rpd(McIZ!C6mFa%E%``HChH(q-KD#"NMk@hS)'S8)UaEQ+$EIJMm)k&%AjDl,ZV
+
+l4m2RF+#IJEMY)cdp-p[9*dY-GmhGD+G-q$!-,-D-*hD8`FC-!Lck6V9"La$)SMI
+
+Dh6QL,,FC,rd3Qk+2"N'10G[!8"EH[rrL!Ijp%3RERVNU,'9!2JbB0[`%&SifiVm
+
+b5!C`TTAIlU)JJ+pQ(f(+ZI`b!P5r)eU#9%!&2+TF"86BKGSB!PC09)#04'4c+'#
+
+QkJqf8!@B'd!'C`q3!%rhI%(r*AeJq35mS+pZp39"eJ%c09QLIf4U$#50mhH-4FT
+
+[-bmfZ@9+l#EjE4DlDAil&VX$Tbk!$BQT-(e[#Eb40H&`!$#e[31S@-Zr+3ZTNh@
+
+Y)r%$d"-"k-&0`1VHjI$!L-!A32h$(i"R`BYG&SN!6XNIq32lS,!D)&*!IVVr&lC
+
+#Q,kKYLlR2hX#Lhm(Vh'!$VSC"9bpd[h+"SSe,+EJD)3NU8LrciMc'-K11bB-Q2)
+
+(j%T+'`"$KQA-lTilB#EaHU&J30A,(D"`%jK!r"MJ)f"+"A!Nr,cj*Y4bX4MDmqc
+
+VZ"N+U"4',J*'&EIl!GQCP`"Pal$`mm#[1qA'5p&Frm&5K"N%lRm@1"Ir$QMM!'@
+
+leD*q50%RL8kU5GJN6UY*BRG`h6FP2#%a8ELF4LH9&hMNIKJFhpa[rV#2a@mpc`M
+
+#`!ej-6#%#kY-rC!!-YX1-+ajlc$SKqqCfCTj2NJ8kFS"CNY@G)D8r'qdrYY$(i(
+
+0Darijfk`ITNaPE%QIEZFZ`N2VXRCH(,q(r(N!83A8#r!5H+m-m9E6Irc+I-L`2$
+
+0KaR`r%`$M**FpqErM[EQAl2iD&J%H(j(!c,*[[`@'h$bE,J)f'CH"%D89cmE!QU
+
+fQ8q!3d,)XSdARZMrDL9)KZKeY`p"QPjMH2I2A@'SF4aJ,,fj2H@%q0XcRK#j26X
+
+6%Qr2Ci--[b[+S,#aD--%p!r80PHm%RV$1ZUq@$XYEKXhEA6)qpGf@2XkESF&R6%
+
+$RDr6lhUD8a(pX2$e6aTE(ZplUL#IJ6EDmp'`YdqmB)59cii0X)qlY(b"ccjCGHc
+
+,I4&5)rY1P0F&k5[mV"NUFVZp$3kK&[*Za#**rUpfh1,IF9iFS1&SiG`K-RLPqKP
+
+'(K-,jcil*NQ'FD!FkNXPf+-3NF488&4cK!9UUa%`I(IX'q!Hk$4AI2j-iic+!pk
+
+lr'qaLqk12H8Aqm"fX#(lR!-QhQfKpq$$Yhkh)&2K5!9B!B3J&rmZl(NfI218Rc*
+
+S$fRXBkiXLS9rJSF%qBIVB`PJ6"P-P`AeGDQ$%J1+m!mm##[ZBqjYrq*VUMcIU[X
+
+%B'CT2p#cB*!!5S)5TlpZ@Ra2I8Hl!lS5ZcX$3DmJ&km$*Q330N4&hj%(r"#%r4f
+
+Ar0mHJH&'96G5l[,VZHa1lErYBYBAC@5$X,e,+Z[cTc5ZrSG30h3`lIRSNV"IU5$
+
+KhB!RG&9%8kj[M1A2J"QJRh0KkM[fc$0JbU!(q1p%`1,[-aF8$Ec!$mJR-ASkhNm
+
+CfTiYeLjZG,)D!&i-qS&e8EFq!"h$V8$(F'[,UE!riSZrApq,(r)Cm1qKqeIKcFf
+
+qii&CQ!A$(hJ`[hQLNq#ViBYT'4RB&fSq$VZ'@"e(jb2aRpmV0F!-f11i@f,m[aX
+
+fZiRIXk1%0i!brQhd8mUA`$V1!mIF)6eGZLF2`*kPkrarE3+l1#q@!mb(plm#df+
+
+[IXIXSJ+F6+RFK6m%3D(1!G"3m1!#0[m"Y&6m1pH*!malQBT1*%@TR*2XH!k0bYE
+
+1CNNR@T8)+6R&N!"brS(bdRm'!UaM4dhRHkRrhp@'Vpl$rlFUclj3!$+3!,mF[f&
+
+JV`T5q#Ip2P)"(14D"3&6Y2m0"R%22`5`meZRY-dGLhk#c,"H$d"63p**FMDVJK%
+
+j'MMCE"LCBEj1+NE@`b(m[Y&G51crcf(iTL33NRLA$C)8e0rUVaG[[+++!ND-KB%
+
+m9)J*h3`BH24r'1M%4HN()'KZpEq'T3Q%cIq$8U$iG`)8bdB'JJHBSQK*(1FPTN(
+
+#Z4B[F@GEYRQ*(`+Q-(TI0[[qe4*MZ%fF[h00R3NdUB$AS,VKj*CRCR)k'%daVIN
+
+C,[4Nc9rp#e'B*145j"Ej-[")5!Ck'`cUNIr5PiXBk3d)5[5d"f#Yimh"rYXe8%"
+
+SLNU2ra280K!9EqP@i1Df%)S[aSi`"(%)LQR0Sic`bj3K3!9Bc!llLR,5Hkk"'B2
+
+Gf#p)23"2!fcNXk+"bm[QIMdF29Ci@bMi5k0k+,Tr,M`'mjPKR8'%LCYjUi&iVJf
+
+e4J-(iS[rCd9C()KI8KVefh%VKCB#VGMfYN03"rFr')CpNTi)"0rINGXYJli0J+)
+
+('(AL-*2'q2rId'C,6"pqVrh022mS4,M8fG`#H09&B$DcjpprQ'82'!"i(FNICi$
+
+1c[c3I2+0rhBQrdFEcH3C92aLLdbHFAPrK`"VCr)X[jP&DQIS4i'RqKRh0a*ZrGh
+
+HErP@2e2i(6#E2*-"IVSqNrYYjpI2F09-H)C'II)-A#M-IIe-lRFjE[e-rMqrffA
+
+pEI[@cf4rbkEkQGa[a)Rk'AbP2K20@Ck$jAHC@2d-jB,#-ql[1'GiKPUVkfGb[eX
+
+A`c1%N!"I2j2rR8HURbRqj[QI211arFHq`"NbJHYR[0me"H%C!#k(CaM#B2*-M[9
+
+h`#Fm%meSMZ-h19RpM2HlXM!m3eQ1qKRQZ+LIiEM-j"NX%AdAqGmBpH'Cl(r1#Pi
+
+8[6[rprF`XG(N'B!Pkcd!NMapC`!Rdc09i2SIHaPRLVm&iZ3CG0(UHd4@1RU2qcX
+
+A8$rMr3kMeFrNI[GVe-pJ@+)c90YI1e-!LS6`26K$'Ueqa[f2A3J'GR,&3XeK[M(
+
+rZh1ZrKl[Yb-lHFCPriqG$SCa2EH!cUCJHAL'+[IVClcrQ'@!0HXp#MjM5KI8ch"
+
+2l13CKr9h$8ai4ZXcS0LD-pj[Kk"q*TTE8+,UhB8cd3`irlQl3,K*p6cK'Ef6`"N
+
+CcCR,mGZZV*r*rHFHF2p6Rf&kU'UeISEb+q%ClhI$G2e-rMmd'q$(Y'B$4aICCI8
+
+clZqbX[UCh'p!N!$kQIc[T0(NQ4c,IfKbR)RHR@2r(AqYRmRqKmB#Fic@0@"edAU
+
+j`2@IHJ#++,T(k"VpMAR1rl&[F5Ehfc'VRq'bkr!-NF0-RX&5eqr"d%GRFVm6f28
+
+cjK[4[+E[&L8aHXHK(L"k6k39)CfLq5Rbr)HRJ5*kV@(3C8i8128c4*+JcqLpM-T
+
+XFVIUCf!'k$1j[lq(Uk,#-eTrSlT8qc"SjL4h[(iQdTj`MV6fa1MT[Bbf0kdc8H#
+
+Pp`TZ61m9P$cT[B)c4!052q2mT[fSRh(r``[!'FSCeFrNrR0'(Glrr"kAj6qr"jq
+
+SlpYPr`rpJc0DLb'8UM8@%RKD%q&-0,IC[mpYpZpcQre2l`dC*,hMLX!eVqm4PND
+
+S64#kd,X3S31YTq#mDaf(eBURi4QZXjSmNrZ0aaQHLE31P%5Sjh%'&QKi"P*@[c[
+
+2rKqkUmM0q4pH$k`+VBR`KG&GJ0YEl`D)e1K-j$8@rql0&)(04ISE88#K[iF'5*p
+
+KaYc`6+J[X-dbrm0[`"NLC![2`'c8Cq!Fkc2&hp`iNfFLMi618+eVrBcl2la9R-R
+
+qMrf)-lRrS80`"SjQH!BV+6VMr!mI"QHmrq%EidcqIhKJlZp6qRYJ*HZjL$aLR-R
+
+qjeh!jiMHlIh',DbI+I`22pKP!Hjqr@kXaqK-pRrX(jb"S4QG#E@*bm)*r#*pa[d
+
+I1JjRF[r$Jm@Cr2r`f1P-0&2`2[4h`r[3p`dr1(Uhqcpm'*carR2rj2l$Dm3C"U1
+
+E1)06-+2d'Hprk"@X25ELURq2eYT3K33H&jl*rXiMeFrNrSFHa4QcU`ZXrf2hi``
+
+-,hdQrjqc!V0#haP%VjkI)YG[5)Ik'6JLp6-CB1iMr1i-F#Q&pi-cS6E''53K`M-
+
+JVG(IL0a(1,F!LY&h#`+E8([5QG"M`KR[Iq3EF!D1IhJ'EGck2DK(L-jNrf1[C)!
+
+*PZJ-0pe-RR(Cr[1qS4(d2EVrZEm"MU$hFSBGU&c$-l"@`af#-eTcC$L!(kR2D%f
+
+*-hTR3ZRdr1GZJ"HUhihFKljE(0(IMDK+Z*2!LDAe"Gb"d*I!QFMhp(KjriFAMrF
+
+`KF6N'HaU[Fq`T[5l%E$4GiC`5I3HEQN-G82SiF"-JRUURb%l6XmC3JAkcZ!Yk$X
+
+$5+bHHCLrHKi,Ih4r6CiKNdkIbIk((J#[4HM,iJch1GI1N!$m$Zr#!HE!SM1jrp"
+
+1$XXIj'b6Cc*!Fd'IJG'QchMrX3X4M3Jp04FBLY@l&@YHca4X46e6C#1%-`#A)r3
+
+pFBBjc5I23)hTli(f$'IH!8B+S[FJ1D22-(lHj*RXlpj2I8E[-r4@k0hP!)rSEma
+
+brmFH309N0&1`8[6m4$iJcZMX%-lS$!V1-$6+j"R%C[6XjIl$@m@Ch(rS3LMHk'k
+
+aJr@l%Il6pj2r6jm)0T(@K4b@#XmJf"1GS8"[H#E5Hac+d'I-0m+-er-$icKk6ql
+
+[lp%C)aGSUQQpJUfLGb%E5[SpqIrK)F,+brb(jL#6*,`I'!jk[NQmkrZ"%!lR'k)
+
+5@+IK'4Lci4RN$26hB$(VZhAqFiI3N!$UGq-L`lRP3p%-K0SBCb!6`M1`b[5GZF#
+
+PUFm`4q6N'FbCIJpL'[TlXX!3Mcj6r!pp!3Y-k`ZA%qKUk$-)XqScNBm!PcID)ER
+
+rb(hJ616eZ&brdmcK'5aKIBD4ZbI2)&bXl`cV@hphR[-rG,$,r4rC#)`Hh%Cp"PY
+
+*Ri%CUXrS($B#PR!qp4P%G[5C5*qj`0#$[V2LIqj41'A46UH3!+SqSprG!i`FkVd
+
+#Gd"Vf5``LaR14CEP2cdAZ&eDBf@"dNjr$pUDp6hL'X1pR!9L0)FcKHLIhMAi3Vh
+
+6BBZ&CqLq`fr%QHcrm"YkJ0TBqhCCB&BJh)AChaXbHVI@F9RJdJaR&&Sle-%`Ya#
+
+@efGJNZJc8+6KQ6cVIqMU,&"#kh[%31UC3UBJHJq@L$l$90Z6ClcIpIcKQHarH)1
+
+)*d@l)3GdY[8CU"0p"ZDJ2P2mMafF"@D#p(XJZr6Fj[r6)mlbX2cRZ`[rN5I#Q8J
+
+[`lR8q3XDErdHq20klb&ST@HU#$3JkfH3!&V3IL%F+rdp(Y"V$'F+kIRS29JAiAG
+
+$!ZS-!"`5V5NpS2kZh`@A1N4RG"D6JPCDfb&UTMdV0!hS[H+ar8G'&@H3!'!1ce#
+
+b3Tr"%YCRp&l''E3)K'HbrlNE2+$!d$XB)E,S[R81M-e'I@GBKRVf%%F)04[HVAF
+
+rQAlk62BrI8@dFi4lJ*CAZ,YS!HQl484"DdpXKQJRHF$#KI!-)LLKrX(hK*NER-R
+
+pMii)*&#dji,[S@l,m%cf2h*#(KG`F[8C0#Q%Cr,rNBZLl`lp%*b"Q4+HJ9%CkML
+
+F#AF0cQLIXSF$Z2V$,",1D$m*HLV-$m"F`5,9paMP(c&lfL[cZ)(Q623pdGh#i`c
+
+["eT#ke'Fd4SD8MEF!eMb#(a'Cd)[#QFLI3'0%(dh`JIkIK!-d(H"1JLY"r,!3'9
+
+iTJ$FT2U-pLVSHd)0Jc0B0Z'C`RrUC3mB!p0hKKL*[QrBYq(1c!'e@(Lh1+2[)JF
+
+-ZS6IJr@S-fj`mL)YKT!!Er3HlEI5pfMI+FIa(cd!L1S4P)%qShFQkJbdGN+U0Xa
+
+*dTN`Hi8c--EUCr+Xrp%lK$14jj)(KPA#ldDN6qpqR0'cKhiGR3P#YicfcR&'ld+
+
+Si&#[i!a#9G%CVIIJc1LpK`S'RCq#SY5H#k5Be[-jB0G!p*lLrp#8+#l3(6Ni%rN
+
+K1H$qe[GG""T8qJbM60E1S%0&DdUNLE4I64)`e$q)PHPCa[IS(KR)QV"RU3GSmiE
+
+k"pqMFiei$b'#K@Hbrb-le!2X&0'D)`HdI[AhN!"idQGJG)4R8#J8kMJdCi3G66L
+
+6r3mI2`H-9HLl3)`ph0p!%ShZ-G**8(B)@d4R3TqA&+$@P'5*Kci#dL[4V%3G"cJ
+
+$Fe#ILI+!1D#ZeYq)eDVh"B4A1)qi(lh6!BS@HYdp`)i025XiSrFHHMI#V"3fDrB
+
+r2+EFEq%9RXN"Nd,kM-jQdrH%Q3+FdGP*4)'T0P+IdCSFF5,Gp`BTT[8CC+(f0,!
+
+Y`V[!T##mTZq4HkR$pi4cLc-)LSGRN!$!0@I#M!,1)#N8RX%-k2GJ"ZVhL$0)1)4
+
+RN!$$VXm8R3RR&QFBj+4f"VpSam%IeGS*%Cj`"[!,03+1D"f()dK94@G#V8f[$R0
+
+4Z"fdBHQlJ1L)hU0R!"RIX-m&0iC6dCN`Ud`h'fD[F!DZER3Qe+-iSlY(%29QF,I
+
+*Hk5#-Ae'c`V1j2r$Dd5d@'G,X,V#Hm3Cl@2K$&02eXkJAe(le8KLkX`A)SbKGU+
+
+leIX4lSVHMpMS1T1,U*6HFAK2Q+r"'6L"i4QX!AeR#2MVliCqM0k0)DLI3Ei`['m
+
+k%qTER0&q)Dfi-&Y(Cr31`GB,Y3R@([&Sk60K"S!fDkLK+CQSC`pRp!j'rLc-k#1
+
+m&fA`k(2#2BVQKp#,aaN#+kqISD"iG#EdCT!![%+m+6a$bLXk%fTSR0'G'&3KS(F
+
+rcQMpNqAk!j!!C2*-i6rk'qK-Q$2!'CfpTdU#d!ZJ-f%f!J)VQNG%'2@13bSJe-%
+
+i%fN6$aJE$1m-Cl313545kbiF#E-@G#E-01--SNce-r"[YBG$UdCV#ILCi6hLhAT
+
+q8,1TGaF5ID&rLc-)C1NcD+d-cj!!84QG#I-)1"0TI0aMG,H`e26GNK$4Ce!)SFr
+
+SM!bYB*e04#T2jb$JNZYX)R@kk[Y"lD3q!iXNe(YSm3Mp"Tb"FDc24"P"E"AYGd%
+
+'kq`DC,$1)Z8jZIiM+irD+jeG3jfIeZQB4ld[B'(VI@%kCqQ-hSqS&Y3l#HY#Hh5
+
+)qTJc1XH*GdIq$cC0k2FMU+*cL$K$q*,K'Gej4`fGN9k'D@$HSl8%ZLLeAUBSX0j
+
+*b#[U'Beb%$L$mKCp4RHriScZ(N'N1FT`SemffLXSSp6hJlL%hKH)q1V[J368q`c
+
+GjZ'q`1H%Z`YR8*GC2`1h*YUYU,k*hX09p[8c#1@'Ca"*#h80cQJI#jkThRZ)lqN
+
+-(VCCQ#'MpfJ2JU)UBGFH&&"i&rJH42,e'DM8k0hKRH'-e[J3#(S(ihZdEdI[#A8
+
+VcL$J'Tl""BAcL+X0lj(HSrXTXI9d*apkQh62)@5kcUR"404GP$!e3Xe,Ch3A*F`
+
++h9m)%d*hk'@!-HIShAU23X4KJqXCL$T2N!!YdCdR5%VTlP*dmd4R)-r#Zd!IMMQ
+
+MY5c140hFk),4qF`#X+`QZKqGrD0hkfj'915%IMS#(QJ"LFlS(P#NNR9I-QiXQLQ
+
+m4Zp#DT,4Ck*m2pSJG2D&p*Pq0hDrhSqQ$`IZU1kqJ6fP-eA8&Dah1J,(S6iV!,[
+
+5pII!1p,hl3($hZ%C"*ld2F)+eI1$J%MdEKKYi4P%0[9p`i,3hi1XQEicL%Vp(Q6
+
+Pp6G5#E8q!r0)RiQb51Mle6SBbE"S$jMZ'iT64QHLMLBS1qh2Bb[V1d2X8Zp4C),
+
+dM'*pDrm#@PEVG'K8R9A'e@S0L,BY232SdpAh$H8CI3pU$k)c5"$S-ibU1RQ'@Zr
+
+d'4M#qNc8kB8BK1lX3&qYcZqKVeEl)FJRk@j,G00UEkX)c-G&Ck*p@`45-@KYBVU
+
+UdA#J04Dq4[Z+k,A9H9R8XQSpKI@MqbT3,Dhe#PS!G!F`[P[hfA24CRJ'G3(k,Q#
+
+ikQp%I%AI)qa-I6q`L+0h4af%m$Qd"`ZI)pS0%&RKR1(1G2FeP@Z&-iUZ!Df*m$e
+
+KhS6HSrZF8834hJme3@YQ#*c4Zi%-A$eR+2@2lK[P!2AhB02S,L*%@E82MHfYY6Z
+
+q-GTRaIr)*Z)p8FFce8KV(3)FL[Sh)NDLHfeaKSL'`M1kQ`aRG,iICh5h)'U(p$h
+
+LM2E8F%Eh3H!-%aG0RS'TSEq(EPbI33"5Rf&iX-NcL2,VlkDQ&Rd'Lb!mJa[A-iA
+
+DBReRb&hUqm&)kAI$-p$[MMSeF8ChJ1!-&(ei"MkqRQrdjHQjK6qJl`+fQ2kH20!
+
+YdfGd$cc1)%@Qcc#bcH3Ca,reGk0U0(S2A)M`$!5cIJm&C[8ClD9JS@[Z!Tc4[Am
+
+iSl1%1)2P(jiahKXf8U3PB$"V(BI#FhdAP2$5Cl6[L6-Sr`V24*dap)hD0iB3#Em
+
+4pTlf68LPKlSICr5lm@TX"he'jp2*IY5k#lDLpJZ4m08q0-k%hmMfSriHP#ATQ8,
+
+M6+MRm4l0L%+@AkK4NF,@ZK9R`Ve#9CQDb`3+0C`I1U2C#C!!F0-H1hUE0$-%cQK
+
+H#c4ADAi6e'eTaJbFdIihh!E0LJ$*SCNFF%E2-TSN*RE0(cJE@pZC1`0KE"BcUeP
+
+lQIm'NPR-V1VSk%S#R0V&UL6-XJi@MX"6Z02&UVq"DGlXDZcXqJHp$1B6JRFZ*D@
+
+NXK6Frrm!$3eeFf9bE@&ZG@&X,R"cCQ`!N"!,9!#3$`'[a3!)GAX!!-%A!'J!!&4
+
+&@&4fCh*N!3#hK,39Yi5d0`#3"3Im!J#3"3*%$3!!kcJ!N!D4%3DLB#A)`#q#C*-
+
+&hhlkMYNqb),VL0e+1%hEDmrpKAAN3$ceT)pIf*V'm6dlLfj"JRkd!ReGI9RCGd,
+
+jNJID`TH1,1"#0NJJ@FJ)0$,J""3&+d%'ah%-qB8(@rK&cq[YpQ%J$k40GTb!f`(
+
+Nhb$#hH3@GRi[2bHE$EB2,JN5p+-9D0$eIGqJ[-iZhHF[r22+kcbS,Qf$'dq1RqS
+
+$[`0rrPHRC`HG@ASC(e315i@IrlbAaG%kcCi%XhI*FK@q,3Ee`eBMk+A,$ePbIE-
+
+1bZef1jK%Xf3DcB2"KcJi5kr@lk-XaXYI6pEcq%Q`@FACEE6B420$I!@HHb@kMPG
+
+2JR+TlRjm1C[&q-EGe64Hc2$-QA5cQ#@,kfjkpb3SiIqYFL9SYLYip2aLeNY[Eq2
+
+&HPAiHIq,dHRCbrL5hr#p)(crr[eKCU-iq"!I6Y2ESRX(AhPT-6Y1&RL24[R8`6U
+
+BaqYeR!8(kAj%H(3j-(h#+e%@hFCi(bDh[dcq8k08qP@!6lbGaDY9M+RT,DqPQfb
+
++EhcU2(i9T*[eFV-1+U95qE$82+c8RT6VC3la6(bG,%kcG(S@Vjm%krKZHVM-dX,
+
+2rkT`K2HH5kEVS&SU"CMN[@!@Ar&Mp0"P[[Hl*rGijPr`lhHlpjI*BXCAr-[*dGN
+
+p[Z-DI[MCr9RKj0[Z8HGqYPRLlpFRpqXX@UcQd6V'iiHVq5UiLZDV1$JjHVG+[SQ
+
+$FMPS9S,Ec4a2A0-6fiGe2$+a4kjMG@l20kYfk9l[eEIrhpMr`m8p[qDIhj5#h6[
+
+@Ji2bYrF(jD$mEA)9mc[A#PMLRdr6a64DiaPql+[a+Te[eNQk`*Krb5Gqm[M)cIJ
+
+k@('9Rp)h6RCIf,d+EqEE2%M1Dbh3([cclKh2ZTGSYKVUQKr0ka-1T,fVqcCr9,j
+
+p2BKQ-hhLkj-hKGYSR59h`A56C6K'r[@I1d%Rb(LmRPTY,S2SFK@8$N[iEcfBVqr
+
+e),lfAkl5,*V2l886$L[HbCpq[SVGaf"9rfr1($Y`1lkhYEfAEE#ef1Rrfql6P6L
+
+Hh4G@kfLp@I&DI(IlQ0q&qm1hlDA,*&lG(re[pX06Vr$3K4I4qNeCja@lbJ@GR"`
+
+0ZedXXrlrqFR4BS%IAMSD$Hc[[A@Q[rH[$YC4-VrRmpYfT9i+m*[1dq4SQ#l@jaq
+
+@F9$&ZrJM2T5VFQ@acZlF)fG`fTr#aq,&Gr(`cHZMb`MEq,-JbV,S3q'SQq#Y1-8
+
+r1qTZN[QXGa0Ppra$[ajNf)hcLfP+MI!8Tr05!1(`91Iqk#T0!fc3&AcL[e3+qKJ
+
+FkG[iijIip+IQD66$#$%V,%E1m`dX`pdV0pPrjNrVq-R6iT)mG9*`%mH,pUp@pcJ
+
+'I-[2l"e[k0eV!IlNbG,Q2,9piIRlCEVN&qm@F$BK3$LE-U-c4lhhpcf-$Q,Nj[A
+
+k*UMVFPb0pHLeKdFhr+-62[[1IER5#[E2crccr*Z[H2IKpG2mmI9+8kqBi"hlG`m
+
+[@GprrU%pHJqlr&hE8[k%+Imc0`F[d3EKhiQGaTGih-iF*9baPikbprERR[kmZV3
+
+6iMprU,rD3[rc+RU(Ji%2ZC2L0,i@G1`JF&c6!#,Ri%kr[CCI"[fU)@")2`Z`C,R
+
+2@)Th)$M1hJ@p$d([4K2PMfpV5(J'blFA6@rL@I`ZQFCm%'rKZDcRm0R$-YijdD[
+
+I$I!MI[Nj*hXfXG(LTA0pchD3!&!FH$rHQrFr&r38&JGrke[iQTm&fIY[ljmj*I)
+
+[b5e8l)eSp6D!SS6Q2X!UrI$q(Yq-Eq'FVbi,q#9@$AZjhJTZdaQ@!$pS"VHj10b
+
+,JlYiqZdm6DRq,XhHh@-+H#Q(JF-r1CVHA0pMK2MC(lHaAE$$"46Z,b(PF4r,ElY
+
+m#6m!Iq*#llr$Cpf%lSMTBSciiN1HM1ZV'rGP8cZlR-BZ*GN[G!DK#hH$5VhZIjr
+
+@DprH&kLD1&3q#-($LHV[@eQq'aCV901F2`G`jr&6*jmqGGTkr&LF26hKCF&(iRi
+
+1RcRjrM[hjPRqR9k6@29Z3r`Uh"@rDR+9c1Gi$DEam@ljcINqE(*mh4S'X0iXh,X
+
+piKJj&Fb4mK'AjIEmc6eHMYGJRIpPqp06d*L3!1$F*cfSRbEq3Ei'5eTq+!pKRFS
+
+2l4-iRRqfBm@(iY"Md18EVfIfAJ`Ujk#Ip$j*Rre[[qUB8F(T6CckIHQSIhmdjBH
+
+G+SbI8jEIA'a9!&l&qmiPZ!Q41FJ!2[ND&GJkhmeldZXC,Eh@d2F4,p+p[!mTKFp
+
+-,FKr8mQF14VGij2pmcRmI$PGhY-BNXc'MmrHT1REi1dLIEqi,rMIm6AI24X&%M-
+
+["@D45&,F50r&kr6SLq!2YJ&[Z5qP[!Nj!Q[ZG2)"MZ!jf'c`%,llfbq`Mkpqi5q
+
+L"#dY)QiDeqZPSaL$QQ!)S5,NCQPSH,!E@[l-$EKlNljI3Rl3Fi#EF'GpAmKIUpq
+
+l&pF(Y$`3ATeRmV1MrBq6-Y`2,YYhBBp"i1"ak[9T[@&+(eX#A9T2(ZlF2r-&%)"
+
+294XPMAl@#'S&@pqpGpN+IdLqk`jbl&[eCUYmf'cS-fhCr1cM3rDdI[EY5H&SHFp
+
+CBmk[IQGr[(68lDH3!*[il+,QAVf6M([eJrlmb6d1`DYI(,f$pX%M'28lq05II0[
+
+&#p1##C-1IYlq"VqqI40RXHkJV,-h`Rkb@XkM$mA`*(jeALb%acK`GejQ#Ch)pFB
+
+4E-A[I)8,&[FV2b0q[XlMYRM8jm)q8UFb3[A)"T)mJcMR%bPfI)Ira9PkIQJ#'q@
+
+Ilkpe[ekI5!AM(r`#-4*Q(%D1dHZP6h'(rTP,8mAVj0UVehrjiiIipIi8IY6b3bC
+
+E'9br*)lG'9brq+DE-Hi9PN$'*LCjBfHKGFEDiIB&2X%F`&U3!-eKa1$(03k$VNd
+
+qJ+GYiX3$8R*e%T!!drpXhi'IpZ2j1Y*GN!!EYZXHq"RIAPlbi[eCX)6c`bGjc-)
+
+9ZXc(mXHpqi0Dm)*Ip-m(9Ie`F(p3d3pAk+2bKk[h*I`0aqBDK"FI1)3dj0p[hYX
+
+VhlUhEhJE,kUIIreq'H$MhXC20rM66$p"XH#hUAklaFI@p4-1"MD5[pc",hlm,Rl
+
+a5qrK&hr*1rM%e`VEMh`A)jLDF31I3&S*AZ0V%'653C`R(X$[CBeSedh-c3mEI2,
+
+JF6p9+eAUV9Ue(03VTADlA'XJ,3!KJHZSIjrjD0&rTf#U*8aiD--EdC)firH#B44
+
+-EpG*'H*LlE"G$mV`*bpKbKY05J4p$#bp0hj6VT3'Jdjef#V"*VK3VJb(R@SC*Ma
+
+q29qZ9(Y2fi8fI(,m#cN#r``614F-#TcJiTY2KR!C3lKmCf2B1+aT#TGY#YZ0QTR
+
+pRX+XK5mqLqmrfkRJ,rkkpV34B2j6Z'1cDP$$2epr1h6cM3cj#IbcdF*hlq&26A,
+
+rkMIPfR"B+THDjHUJe#lKfr("&eVm"3qX0AZPmV#(Mlj3Dp9DJbiHADZeX4AiIF)
+
+(q!BrZSEhl5,SX$BXeiIf%LcX1RrGjR-crR+f8ffAHUeKVpE#VqFlGIip'3kle8k
+
+YdE0(Y[VfkRaKrBLYAU2($le3kP6GEh--#DpDVrG+M6kfBfeS$h*3rJ9[`aI-"Z9
+
+UXrGa`'[0i4#[akGL*[0KVp+UeCSp6(Zpm"3,FJklJ8&XB$h`*rl&MQ!5-d`,Fm%
+
+AiAFmJp'HUH*rM(`qi,rBQJ[G"LFh,49UP@D,Ar6mk$HDh(NE`B9K$aq1+i2TB#-
+
+i,6b#AfCmlX+!+lA9dh$2imrG3T1,YchS9I(Lmhfm!Epbcc"lM'J02ma,A*+e8S1
+
+rBbaE[@k0#c3IiM-h5eS`,#eRYYAMZ,Q'k`hZ&4krJ&r`!CM[&YIiI0mqP*qpMJZ
+
+jfDrhDjekarqlf5pXIqE(V'0c0[(r4KY2P(r2FMdir[2e,VCSZe`VYqVGHVI@`Y-
+
+B-4D-Cq3XEKc@(,0HVcHjVGJIA$l-!9qkfm9(B#Dc5J2,G-BYddDl@m1%eM%i,MM
+
+q`'3[D-'a'pL2@3Gri9Xi`A-YlK92!Bm9piN,T(Yr$RZh0ZL8Y&#i3"[$9N%,-@m
+
+1kefH(%`*9`@[`#GJ8$SqhX"FNr9'5kZ#-H#!F5I1phLN*S-HMZGD[ie[j"lb[ZR
+
+'DX4Rm4*-Kjr!er00R!EQJNh%,aJFIX%leh$eYc!!6Q8G[e#@6-Z3!#Uq#CMQ"Tr
+
+AaChadXja-VJ-ZJQi"ES4ZJd6VL"2*#H"iiMjR-r2*#D&26Q22H'(DAqd5AMp$LH
+
+&rh!-Z($RNHCC,j8rA8fX*4F(@iYV`Er+,cJ-ff9mq4Eq2BprX@IVr"IR5#H@Fq,
+
+G`Llae'lJ1c&,[)KrEq&IA1qeAVd,)B)0a#YQH#2-)6`aa@Ka6bBFa@B(2fra,hc
+
+GY-bVSX[#*mkAZ[MY,*Eh,2DFEp[YeEUif&LMR6,[c6C[c'kK9QhfHa90%hZk4@@
+
+"[D!3`ZA8hQSrGNTmTbrMCVpFakTXYNT`MVBJ%2"p%akMXfem*JDH%ZZXNeJm6C*
+
+Bf%PS)@bZT--&qp#8@4!-@-U*VCPRF4iR#+F)Y`C(!,GEKhh+1l',A"P%$T4V13N
+
+316V!mhU(XQ$#TGGp#-A!Ud#&-B1Zi2QKh-"GJFDJGX)4`6Yi((",c[0[AQf+P3Q
+
+Hal0j&IK@kL,Ff4eH,4f&,4b&[08iG(L-hh@"UiC"FAeQl3+1*"l98Z$0%MXB1`r
+
+Z(0mL*3jGaDIeX"ki`&-`paU8-Q+cJiXG'T3M`dVarN,16MN+[Q#hDRpa2ABVGS+
+
+pa2L&DXbrc!Z3!'&3BC3%q&bXj,#+qKZMi1R"TQ"4HHBa#kL'1-ii8VMGD`AFDbP
+
+Gf3JE@-K0@JScI$e[0Bi60GNkT#j8$&B8-S$MTH66kIIHEH$3KXl&eeGK#q9ihS5
+
+YMJM&Sh3PGBCZ0(`,#eYZT3rda&pSh%B)&bJJh6$F"pj%l"a%$)B$XF#E-*-Q@m2
+
+9iC&BPj6Ba&ae4I$)&RiqAiG-a59CVh@aKQG-8[)!Bl,RH4*aJ$HV,Ik#fik[SM,
+
+#TZ)[UT)*eK-+G"26f+3@`*QF8H4J@5JQqBXF%(bYI*JChX5rjad+JJZG6U-2S39
+
+C1HQ9+TeD(HI'9lYc0(bC`Xr![NM4b-r!UF84M[h@mCMX9jc+d5T11T9$`0f3!+k
+
+5EPdVBDZac6BV+0RQcRQ!A11&Z)!IpA2F0blQQJiVCd&EKFIeI"Ghp(aM81rSYr0
+
+1&XJIQ!qTXU"$qBhiDZJ$UBIc2,VRfV#)G(3hfVc3f!%X'6HABmG[q'c*BXe[3Xf
+
+#%`b9bB-S98!"J'026i+Rb%2&BY2jNMhMBl8qK#-$[FK[`aA"BeK5,JGqiAQJC1H
+
+YJVlFkR-GIE[X"p89S,6%!,4ZCa[G'LD#,5h6lU3m[CDm@RQdhPYTV!J[YP3rEj4
+
+m%bUJiP9C&NJq54CJY5N&G'le#h85a3#8U"8Y9jI'3ecU6@ckTP3hr"1H)0jSh$4
+
+FF)Q0#h8YZR3UlYj@$aGlXmY(0VXB1QDrfAAA"bXNTD-M(4GEqYU@@#U)hCU*!IS
+
+3Z#Y9I0UJ#+-#*h#pB9i3$cI[&VI(@T)#Pk*[$4)'mUL*0bb3!$@rCCLIj1RQPPa
+
+ih$Tm(b8bj)(qQZara)I[816![m#,q43A!kF"AdKAJiF&[d+HdphJS28V4RkqAq$
+
+Hk'H)$YK,X!`f1[S&BRB$KefI@ImqV`q$K0mZ3cp5ZQ2HfhJ#fmpETQq$kYQZY-Z
+
+5)2jpUd8p`ir$br!,2fkR-H4(84MT&laRhQV49q9GhqUeUTJ9"5%%"f`mE$rf%kU
+
+4jdT#D9TV`KrBUV@I0ZU&rQqkA&a+3NYdA*!!@9[("PF0U`@ec12#aqd9cI'br(H
+
+laU(`,ackE4J4@kE!S#ijYke5$3U(rjl(UF%URY1HRZI&2Mr!pkh4Ym!&im2BjE0
+
+0R&@mi)+XT!YFjqjVqHpk'eZ'!lQ1'H&6FC6@fr#aYUPHp)5H[c#Xb8VP@G(Aie2
+
+1mKG+C4TG1N%3qeKQQKeVA4KpA!2qLldrSaXbUp9a3bCphK8SZLh)FDi66aPAL[B
+
+1*`LI5GHIrq*AU(kZ$c8-(X1#3M20q+QF,,lY,+3rI9!Fdr`&lqF[d#(a0maUrEf
+
+1[mqfH3jN&1c`dL"m[`De5lfVHq"I)1lL&bk"C$THK`f8B6$$9NXVl1+`mQDXYlQ
+
+T%lk)'P!'p6E2RYa[L$YEeI``EP6m"[H"LKm,$*%Gcf`eqP!-%JliBE1rr3[Ma)l
+
+PVa60f!+Z%Qi)R"EN&1J8Bff`GHHd3q[F%5i@6cY'`ER!8I-#8Q"J-EHKNMGV$5b
+
+Q$jFZdh#i)"3K'$EDhL@a8@h(%kF!Vm4Iq2TkaHB)515rZaAqY3hYMpG[8X,`SN"
+
+kE#2-J8h#QGrYPb&0)+5JQ2$A1PqP[qEkk`*-3ZKK(LIqSXZb$6r&Aqf$*088aiL
+
+@lPCIeY-&6TNfRdHl8k2rYP&fjqJ-cp%Ch!0BhR5E)66Kk1)L8,P$2e&aikl),9q
+
+R%B*,L8qIi9pD*KSIPKR@'TfL0ELB[!dlGAQ*m0[iN[8'AVI9l%("B69TGZ(C'ED
+
+2IK(m%hb3!0lJGkhKfBPZXB3[$"RF0hd-r9HF'CiMRKS*!bKrhHccQ!Zh`IBXTd9
+
+PL)X03q)-j0jZ&9kr4cl&b(prJ#GrIi&rIi"aeKjFi0mIi!Qf$)FhV,acY4kG9rT
+
+K2$GF'4S"m[SKfj8EQ91Fmd2iYr8JhiCca$rpB[d#KHPMLf06IU2M`Vr20c9fQL6
+
+V2IlQm`XY2q(pPIq(0I6eTAZ$%HMmiN@`M$",aQ%J@qhJaL(Q5F+`GBM2&Cifb`L
+
+D40aKeQ[J-r"1@P[m9m%5ER0%5r)pkcdXq,PHY9*pfX3`m(lZ06)4Z2bm*VjZ0)Z
+
+e'PK4A6JS8%MrFfEf`DL1imS,"cN-Vl%S6QK0k31iFYLZc@&p@)1llRmj35`Ul$r
+
+rErX2!m+r6**XG![qahPcd)G52BqlXSdMbS[0N@"PYR&IFD+R,HhJ1Xl%@U@,+`B
+
+TM3Rl'AMI0J%JKLNXm&Ijj3+P"hi*%I,SP`[3(CZe0K600TB1XpqP[q0pSAbLVQH
+
+iC+2U6ZECTmfkhmLL%l"*'$SYRBPI5k`-,%#FBYaYR'F)(Ri'cl+%0&5m[3ImKA[
+
+%Qd5aT31#[h!GYb!4l1#G`EIKD'rB"'CpUM0iEMX)1mKJaeABP1P'RFNV!cd!%BE
+
+lFllFTHD$685&F+i0p`iri[lc0cJDkie'YB2M$4F2+h[@IS2e4(QbMEI)fB$CK%X
+
+m+c4`'*R4J#Ec,p!SrQ8GLq"I-22i4E*%[r$Jm"HDIma33'$6,m&Ai48lL'$3S0C
+
+R3@G4RX6IdmIIfh0RD[apdY6G915'biX6!8pq&cG&&Xd',S0Z,4HCrZ&F`KHVY$&
+
+3qQ"@EfZ9X2bia%TYECGS2d+lb4VPQEH"KV@3!$r+MiP&SKq(Fi`e`ZlamN)Abkb
+
+LQ)!MC9IUJeri(PK-YTQ'AbElKhJ#m)9i)@`EAN[pLXr&VjJcmPRiZcJrqK82-`#
+
+chB#LN6Qd04MLf5hqLQIa+k@'MJpZS,3NhNG05m1,0`,h&8U584%[%b*'kfkEk%C
+
+)Yfr95ZiSFSr#20ieM8'P+-1$1KZr+CB!Rh@#Nm,i%53F""1H`Vf6VBlpa9UmrcG
+
+PSRbdmc$fF18Q,DP%([cmfaV4[r"Mi99585SJ#(9HRmB612am!XBIe#1&'ifBAH`
+
+lK"$08paZ+N9i%1G-L2)MG02d"TfKmJ[P-184AS@Aa'0i#(%)qJ@3!%4D333NF&8
+
+fT5,$X-&%R5*Scb!rSq59NQ%FlbkeeMNP-T4KDkY&rc3AMPHI+aLQ"K6N"",b,%m
+
+FpShh36UHZCE1cm%KN!$iSc8[ZiGLc2%A'bQd(jNmS(EBaX,+Cq%"J'Z!Uk&I,R5
+
+Dr$f%$FE&5m0[`'rb'ZN0V3m4aH!jST'4hVCZ'*d359HBVCJTEM"Q#''l)f%,L@T
+
+&$a&NraP@-kd,*rpS[Y0Al+B+fa&k3&09!Jq#3cl%d[#FQ""-Tl9BV''ZfZ#XJPH
+
+R&HDUmNSka4`FKm8)RMD6bkAG`9ca(Zb[l[*CrN,lBVZk9D'l6AlbHUG4iJ$S8Up
+
+h%!jKBN25#3%+DP)X1D1Nq&+j-p$Q1mK&bT'Ci4Ik$[)-chBC6qDUFJ))UQh!DF*
+
+ehRlDUN#b-K+*cm#(i(eR'0IJ1BQS",akIBCc,h!Re[N,ca0b,r-fI"UZdMP&*lE
+
+kc&BbPXQrYKR&2Bri(Rdp@#VF4!JTh)AY5JGC!r`Phdr*"rM[1)@-R'T8q%iN-C9
+
+hCHE!36*,EQ8Y&A+L8Fk8RDB&5`S(NN%CkQj&bM![Q$K-CqK`m@1S@2NM%j,F)X9
+
+@S04iRqR'DipJ4H$f+ek!-6'i`8!$ISIUiKhL9r1FFf[YXc*lG+iel2C+p4lqhQ'
+
+f#bFE*fl59,+9Lb4l$!-m"m&28FNB"@I&Y#[$Bh'HB'IBj*R*EGhLEL$XUV#,(4S
+
+X+KdDhK-+%QB+&2b!6YJDdQc('L'k52%[A5(G5@q5[X&%2e08+(L&CH33jV58ic9
+
+i+CB%(U2(3`F"-cr([l%dL&a5r#0mMH1d$Q&pJ8&0EK0H"YZXr$UMG(C8Lqr"*p)
+
+Lm,2`DT65P&'Jh!Zq%3&LCVV1$h"H-'4m)l46%IY`24R-idf!!Z8ahKVb)a&YXUp
+
+dS9Y3!Si,Lbf)[r"krJBr!j)8C`pK3SK5e"$+qj,dTb!X)6KT3"J4A$'I%)Aa+-4
+
+`!ZLIbl06*)1*V,1)9e(JBKPKTq,-3FK`Zh5Q0`XdD[8cpd+rB%Ga-U!NY'lB!la
+
+15iAM#k-21mR8'jpPfP*K[(Qr@k#VcGA56LSc3a@M-FG(mAGYG(Z#i5*iS&#!%RG
+
+BS3PLK[b*`KAhMpZ)N@',GfJ1bE@5EB2--2dL5RjR$E#L-QXSZlQ3!,L3!0h2rNS
+
+H)B4#ch&$ea63TABj"iG6)A1H"&`8qC[D+piIKMNC)SIj!(d$!jqEbmrb,`cGmKI
+
+F#eJHrS8@)[l#dL2*Hm'fHUY@82"fjV-hf&QEk'FE&"HqPPaU*8m`#*ZVFMAa(SN
+
+I'1dif8j2a*@%p2E[&RVil4a5@K*K5!aMD2aPhFNb""EL#H`h$jZbaKE1&)@dI#&
+
+$N!!lPKM(ZBA0UL`#*1"CR48mK5R$#fLq$fa4LL@-R()&&jTh800$c)Tf0115I!B
+
+E"j'3!-p!-1UA$@4GpF3')bakK!NU'+484r`0Nq"Vq"H6pEJ('&pp!KqLAp*d3@!
+
+%(l,$eC4DjK'"%+49+Sm555ZZ'fqSE00Y(9NXR@e6bKJFBfJQkR9CED&b+0(Fh-!
+
+lJ83`43i%Qd++[1e5!&*4b)")pq&6&BACK'cJ$Q-"*@iB")(jJYqFME!cMlG#JA1
+
+*&5D(YCa'TFiBRS"hQ$iPR9NrTNZ(DkZ-&AjM@S`Z0jC)PKfpAHMdXjb1XL#i!iL
+
+TdX'N!,GX`D$S8Z(QmU,"G)%P)-9bSH&%M08+l)e06+TX+RE0V4!Ec%EM`0T9BfC
+
+CmAYNSaPMC$+3!#&"K5XC86b,TA)fQPEiZCCLUJU-+`DSX)+#FR&Q1"58&H#`m#i
+
+M3#1[&0%!jb39"X(qSM#"5A2Q*[JkKbZkIjQm3,kH6SN#JP"IM)4L&rR4A'0F&(c
+
+m$PX&1#%,A`V)QIS9S+2i-`H-k)SX'dK1kAF-N!#5&p%6Qd6)a8bl&EJe#18MHVM
+
+6C2N'JkNZBD(+a%Pbe3Bl&R5*&@c`ZF((EI-A'9Zi-K0fGQ"li#PPBPV11bmY`XH
+
+dGC4X`4bChXERB8EKV0,kS[aN2JGTChcP,VB!Xe"+"Ep)h2+,+5f8'[)pB$!G2eh
+
+!-cEh,X!,i+,4aF"%e+bJM-JF*4Ld%[#jr"#P3Q9IFD#kN9`,f3PVNN8E-K(i""+
+
+2QEZ,d,SLp*P[jJ#3!$k#P91bV`a[mrSLmTqj@&T3E**40%DK'Q9Z((IRkf5R3@X
+
+j3DrN-qiDhS-"1PL$Gfp"A6"8`c#iiqVB%'KKrqDmZTYF-'E'CNSFf-PNeS+i$J(
+
+I#ZQ1-k+i3`fZEe33`GR&D9!BP9%&2Xp$K01mhUTdP@"CES31C&X*QFV1cp,EF[1
+
+)3m+mF(+5BDI+$BaGF%[!42RdIZL1$GPqhX3dR22PIMN'V%NJkH&CBj!!q($%@"5
+
+j3NJ"8hH''a-+Y`*2-#"NBF5jdaM#dTrc5drIePPKG%VS3-6&dbmm++9")ZEU#FI
+
+K8am2$AJPKL(Gq#bbBTL(ZMTdb09,iP@A"i"ZLlVfZlK!X2J@DmqYTm8LRb2E#UM
+
+(bVQ"&(B1I,(i@!N[[[BdYJ#MGIq3!0h9I[9TYFS*M2)0[BJ'$TYmF2(XbX(-a'+
+
+J,30HTc)fDmM"U&P(UAq1hBI!iAkkAmU8)9BI*`!V3JF)Vec[S*a#+dkeSbZ#lQR
+
+V6kmlV8)[2jd(4kX4hF)kTJHP-K$)(EMp[#2BT9frAl`E[#RB-bC@h$ZMjTd)dZ2
+
+$H,r2B2-`3h[I&l!Ld88JSF8L%#9VP-(RAM1q`[!4hX(99QaIc8"`@2JHQJNFm!3
+
+[P1I*-,q'#,H6Sl2EUG5'5K#8AjG@j)fG-J*$'59T6!8(,hZ+-"XA&DS0KYC(XJe
+
+kc28%NQp&Y+dM0-)EKL)@fJcd+kJ`FE38C8(DRUG)a[*ZYGk&VPC5'qp$B!AQ,(a
+
+kZl")$'%[0h1p4,[2fTBl`9)8@j!!H%CA3er%EJA9TR3$`d$8k)5ACUCS[B&LQ2-
+
+p1)2qXY-K1qqN0@&f$2i+c#VX$Kj56N(G2Xl-Z3q)44Rq2qZ8@)eK!FN"-p0j[MI
+
+!jGGG8Bd3a3U%Ma1EX16SrZ#Bid'iIBLd`!EJ,`M5jLm)aXG[E$M4mQ$aN!$Ee[U
+
+SG`'hC$TdZc2$+Mp@i2ar`ZUZf!kmHleTlpCfF#VSTf")3U8#9,Ef*5R49%8""Fr
+
+VL(XGl3dUGq&3f$0""m6cY8d19``((hHD!N*q!Hef@S!U"Z*6L!VL%q&P5H!caSk
+
+1$0J3E+AJ4FNE3[m6CqlFpST`'I+5S(J+CZmDNY+kbhM919cpmmJm-BlLmKN19'd
+
+8TkG-"KQ'"S%YA5&9i6i4rI)IC`d@,CC2BbJf`)N,i%e53`CG2)lGIdRf3UMR$rQ
+
+hC8mNEk&RA,PQlAX@bafP-"[m'lS#Qk,IT`a#i5lTG3VXZU'0m9RS'(f@KC1drab
+
+rKFZpr&Zkf(Ch8F8KGAP"Qac%d3k98GD3!(G#BMTemFS*mLBUlbE(LZZBMS`0)Cp
+
+CALPE3Ub"X#1Nk+K#qlc6$2)VNJ!TLUrHl9T35,ml,1@hc6&eD1Rc!bDUj!JaM`)
+
+V4(8plQUa#F3C)B1LN!!ijUEb!0m5cP,qXS6@"'04L94hED%Xk2Aj(+Jq6KNcMNB
+
+A&iPPKQfp"pD)F"raiDiSJ(,63F*Dd%P%8!m[iM'KM-!SX"S@4rC(dDh$k`6rKIE
+
+#K+)8BL%ZdV6a&%N$L!AE,I6c04!UP@Ke@QHLM%H5UKZr-P6L)MTfBbL-KlpjJC6
+
+pCT85BUEZ%R!3&5T1QP1a"0km#"0*0P1S)j4#[iN@a&Q8"R#3!#k*iFI*!H9Ri$H
+
+Z[qk(*400F"ADF+6dq6F3-e#ARHSAq(hi5kqNVF#MJYA",j64f#YDH#i4C+@2C-%
+
+&fTKd,Ua!%GcBa&mXj),V`3)M04(5AT5kNUEL@ZMBAh$'#l*!X&5KM4MqKS!lff%
+
+FL1I%"39)+,Kk5-U)IBC-8jbPCqH,#+qaP&ZT3XbAP1Z(hX,cU%VLH"4f8pfASqe
+
+F,8H6Z"qk&*!!!rS"`T+L$dG15TPp1*LJLdrSJ9L1R,%lc*!!(#,2lZUK#8DI153
+
+,AMR$9@[&@l5qe$CiaQ)#8lVC[QeRkYJe4liF*jMc-2%Dm!+`e`KRMQr&Kq)VQ'(
+
+eY#LVU%Dd*pJEILh6C6`X%B24F`VQ3*1a'3#2KIq(V9Fmad%F[)KT,&R@62[`pAM
+
+,q4iX'l@Nm51j2'G8#X*Q2BGHq*GHcYpi5DF$(8dFm1G(rpEHLBEY'qYe1m$rk1l
+
+FapqSb9"YD5N0KD2"f,N#d24"1'k+RphQ8dMqpDEkrR(@8+V+pY"cU"P9TjjE-G-
+
+R`G'3!0R%FM$XKHVNN!#IT`f"hb!Jmr&i&FeQ[CkIX6Ci@NDh+SBc49-TkM2aUDK
+
+4jUG1i38baqNZ8p5G6GKHb2YC2JJIV!pLZjrm3Im0)bUIpA[d6Lij2`3#dYqe8H+
+
+h6e%QV'rIdEFM%XP[GiXUqMC`K[NjkhhF2!iBLiJ2BAJB%i3YBUXF!4NjPL&8[!Y
+
+mi6PiMlZPhV$e&-XhVH*6@A#"G9S,fZJ+e3jkAJb@lH+Mm"Fq"%r)pQ3p&iD&Fkj
+
+Ij[Jb2-d[3lC8kk!2a#TUMc"(c4*9Vf["5&mhld'!m"4b"k#$cLJSK&(a#c&Jf(%
+
+X0U)Y#0QRr#9I*2I35ATDAdl1+R@,VmCSm&(5,aJ0*+Nd'Mm%4JaRVk&!!q#1S*N
+
+llSL')VZ2Jq&!Z'-irj!!8JVI66($LCB%-r55V*ImPX5&dA$10V8IVU6$'-jMrr3
+
+lrN)["Gm`i5[m1VlkD$[@`DlK3H!'mcZ`aR0N0U#pVDGeV,!G1)Bi6h`hfQrch6#
+
+k[Mc&"cV&E0*PKHm-jjL)%eY9)'LiPGJ9[SV,bFK4PS)aCUj)&P#QMi*1%DPc+cf
+
+S"LITRUqKTTHlJj,JH4[J)hQbQG4%D3I&&d[ek+`SDSBk"fCKP#qeU(+Lf,%Y"Ui
+
+9bf'6,&l$p*Hk@%,mZ%21JPrHA&Jc85@(Pf'+cNrb'&$ZZL`,AUAp!qF"@*6#2CA
+
+1jj1UE0P5XaEG*ZB4B(aK91QGZGH1HSVK+r@j)Sr#HB3dScV'jcRh#cr0L8h1fqD
+
+rFb$HLEA@8qcc*M8!GQFE@lQ1MCa)!d#l35l`!kQGe8r'18,U-c1JEj'KB2&)Gjl
+
+QJN*C5S&#qVL*cbT3r55@bfTmm,E4jBQTF5RJaQY9i,KlA24K'599P4)Ia#HFXja
+
+!E*VfLHNk,UYVC2NmeK(5a*p)3BhB)GYe[+p8aX`%5+A$hH4[,,cPE*cIaQI`+,-
+
+V&8p'c&BbE,f%PCNmVJaNdjIhm)UDY5P0@@G0pJ+@DRI+&*r'j@-RNc63mh8dL1Z
+
+dSGPl@L[mTFMk+Vlh$MmApZThm5ZN(QFhD''B%(2i4'`i1G[!hh#pU($8)dYE3lT
+
+ZYf&q#dqQ`[@lZ!4BF#c+mrJLUJZUK%fS"-a+!N-h!A*dQ`%#Q&[i#iiIrX)"i2R
+
+%%Gp&ZE&HJNr+$cS2bE,cm%&6#MVU*D6cm"D*(8KfYa+MkaRcBJ9)r1a(r4TeUQ`
+
+mKH'@%JK3%$0Sl5N2(IHFq3rBpbKMeqHbU4cX"'Ldi4G6H,*,4BZi!D5#G8Sk,U*
+
+(J[h![`V!bUPLda$$fiTZ`ZcNm2dhjm"%!',*DQVK(qeIM!$bL,C$'9&S@1Ph&1C
+
+3UY+-JH$$4eRp33R[BXMj!"XEr*Tm*9r2,q2jd*HYZbrM-L&ak5l91BdU[*p(lhP
+
+S0Ed0Fbj[+ci#pPH0KIJ,lL!qPMh4jcZXHl+a-%'ZPSe5p$J`Nk`GjMTi'G`2Mik
+
+RAC`@5(XS0*a96Sh#A`d)kT+(3hdkZ$S+VMUG3-lISTMGaFL9irYa2[(Pr(kNpH2
+
+Mp9U&fc38p5,,kQ"p$(@QCmUR13jTB,`68jMmIRfikM&GhJI1&Vmjp%&PcmPbY64
+
+GRh4dQp[BBBa%0`r$ShUR)ISmcT1q%LHJc6VF#GUNc-0TN!$i$MCXiJIj!ZbKbTf
+
+N+m&EK(me@GY)(!q2HmkAEr*m94[aF-eBeiZ$cHA%+(PX@86&8@U&1@il02L1maV
+
+&HBf#A4-D!Jm#"i'GB,"I0N9m3(HKk&#FV"LQ9m5ch!j)%9fFGDfH&he$[q%C+&q
+
+Y1qS)GZ'r)h["6C6,441'AcEpmeAPrR!d[0`DN`dG,FTj6DPCEfMae'YTA5(ZS,@
+
+Le)$@C(SBch"-q#"p)Zi2AkmKRklCBK3fZRM4ic$&"ZQ1iDaLIILk6Gi2a'@j!l6
+
+Me&`JhB-cU*2,Mq!'XCI)rZ6TQN@2pp4bLrRVme`DQ$eme8BChdkP+m'NUNa-Par
+
+)J!$RcV2J)dSKcjZSda(AAKhM8d4BT2Gi',QD#NHZ)3X4dT%cQ4&E!pk3!0e@MTd
+
+*!-i9!Rq+k#8X$pTZF+EJ$,Q&qDbbPJ`Ci8P9G5YV#ZR+iKc+-qS3jM$iR&B&Aq&
+
+bdZF,q'ap2DrZ,+M$**E`8c-X)fMi5#PLM"%6PK*HCmU(AM"D2GKT4+Q"$LIZ,Ep
+
+3l!-ikbk6B3k(BYk(H8e0c@Z+S0,"`,ll%rQhdL56A%Tl(i$mX3@rlIp-*)*lQpY
+
+m!rV"43rJmN#m%*rQq)JR!iG)RlV9B-DB0Le13Zb+*i16`#)qDfKj+8VI`(ICU&$
+
+TUTeHepNGpE-#48m4p[i)Q0kJ$G&(i%45`'r$q1I3i)`aF%QaT#h#@HCS1&1S+"U
+
+aUK08ANd+5TI3YVV"%bM&V,eP%E(BJCq!!hd15@MSL$R#Q**GE4l6!+D1(6"T5BS
+
+3EJJrC,f#iGU4PiTj[Pk!cC'[KL'`idBT2!(FBIG'@U6b0%SQXJd8ILZIm,(RkB6
+
+PKp)MAM(F1p3HSEB)X40X#lkY1VHTLkMC)3TJmXQHYpX1r`61$&C@`3f@Q94VhS%
+
+J[J*rS@U&kTP+(lDmMKmlUX0NdB5i8Fa$i5LN-1HjX+Lb1ZBHfDZh0X5RiCbQc@,
+
+,HeBcUD`XqIP1@d3)01l2)JA'Yc-P8AD!hjBq2kN,C242k6E#aUGmbQNe5kK)-NX
+
+eL5E,*iT[l*@1%qE0fq%J`D2KPGPKLMQlNU@![Z*VZ!qB@TaiZdGm!Vq+,S'I-D1
+
+S51F+FLXm#`iHhBFi4aDFG#ZS&MZh"TZYFq(`!qmFabAaVi3%M9c1&QBXZbj#E')
+
+1c&(Q',G-im8+2MJCjh3$G*[d())45,"jbcbqEXX#$-'a%$GEX*V-Ri5*d*%&kNF
+
+hGL8`kQFlb`Fr@r8dmLIJVU+4"k0`YS(H%F8CccZ8'e@E8PX+"()kc$XYE`!c%P*
+
+(qD8-hEdr$h`'I%jmcNiC993586XmLT+5)3lK)TaKp6cD[h!(RkqJpD%H0&#(D*X
+
+[)06bm4DeepCE*FA#SL!H)E`F9c@%MNi8L[Vc9cqTLjk[M2AZ,fbB#$'3!+B%,!5
+
+SQ*h4J@*H+B%,QYrCA"qLC(k16&+%GI5&D*@,fFdScpD3!),6YH&XU$hElDEBc'G
+
+jZ(@Eq4HrQ0q26r3'PkmV54eF0ilP(,q'+dp[Kh%Xa%CeBf&+GJXeFkp&G&$(RLm
+
+(r)UX0IQB9STU9-[ci[39T!AYE4&45&Vb!a"Ja9mXNU(jZIT1ZRQbEL-Aa91)lr$
+
+Yej4`VU"jiFLK29jUJ9m#McJ'M6K26Sce`(ST,ML['li$1p@,R0AKi&94AK(Z22X
+
+6pAj80@U2ECh$i@#C'*0i5*!!FJ+lcT4dHQDc`c45pf8qL$Kd+-$LYk%Vb+iq$$4
+
+C&6L2'$8X*)`T3kM-#*b(C'1HAJP)I#ec`r-D1UA@DkKL`jF`Mdj($SkbJS9RQ1P
+
+"hSb18Kd!M)dB,C8"4mY08JSX0"DR4Kp,Jk@pTejL@ZNi0FaLi9HCNSk035qcX,X
+
+X%G960qT2PqKNKa"Nb5@LMq48')iHBUMRq6G8j4`40i5pZVXfdES,)B(fY)`%Z`&
+
+)r(XhZ8b-4IKAI(q#4Q#B9X@i8PD`P*9,CIeP"Z3D-b"cS(FaFN+m*a`NFXc)!UG
+
+cVJ)2TQL3!*@fMDpU"YEa18'Y@M4dUChTe#[PTiL5r$D"FXL[h`Eb&hEbZrL9Bm5
+
+fB!$4[8a(%1&iA"!%NYJNV"B#QGh--5Q1TKT,1@5SeQEa$CJ3e""1Vj20kY-QpJA
+
+LEX1iDaJSmprZm-(IT"V`,i4"3GiI[kbVNElbe6#M3AQYN!!q5%P`FZ![d"C6%MJ
+
+*0)!Y3JI6(5jNJQ#lH95k`$,chkb**FZ#!Pp)NUT6-UCQUJ@0-rZ,XLG%!9eBI6!
+
+$d1ed$X&A'S#S-"#q3)D!QIPh90`TBEI*ZNYP4kNXp%5BQ3AAPm0eB3(rMTiMjB#
+
+e"5lK*lU#RZ0R"(i1ZMG8kZ-'FU(2B$p8@SdN1[F%aj!!ML0ri3$-6B-lbPF(INj
+
+md-a`-HKhmfq6Y,$V#Rqa%jV(@A3Jq%de41kLJ58%cF4GdLbTNYC4#kI8rMCbq"'
+
+0m$i)9%F9DQHSaU#aRH2'lX`Y%mI2Cf%CHb-4meB9+AYJm4cq`LFK(BGGGedMqk,
+
+G-8cl($,YM&CbrK3Y(+K4"-k&Yc%#elL5+YS11J#-6IT6)"FU%HI-mDaGB$@2SEp
+
+0TC*ZK%3lSVZRcRAlUVD0d$Vd2)D'RDG"4Qi,admNLA$hQ#@I0YMG'+3PH"51*GY
+
+aQ(l6DeNP!XZ&6kVS%b[#*N)mLCm4@GD6DML#G3aAKBmb+DXD(NNHYSbcVjFTEc8
+
+b)0Q0ChJem9l@GXLMpTYB&)V4iNLi)QX(Jm4M1"aR@ReKf,MSK%qahj&933`L+If
+
+0HPHbMDLU%ISFj$ciNbF9969SYEJ!$"N8Z%EI5JP2UM#"V32Z&0(@-fbYU#eN!Hm
+
+Z%T%D*[arKQl`1&-$E$FJVSkY@FRkX($j8RRLkMq!Z8jMQdd512Gd0GhUKZTB02E
+
+T"UYacm!D0-fMD8)0%CMZZ6E8-lVDF$aF+ZEdU%C!,51B(,JhZ'6DbTVIaRHUU&p
+
+hckJP'D"6`Da5fqU$TP,MaBdQ-@8`+(YeHfH1'SBeSrVS'6mD)`5JM*[-i%,cfl!
+
+3c`1H$"Z'FL@RFlPrSMJ4q%E-MZUIiV(-6T9NqP*mXE51KZF5TZ#Y`Bb`5C`@jZC
+
+Z-"RhBR6KhUUl#3p`%rK9jl%MFQ*RL(Fk,)&[$ph$AM!FjbRd%UcpD9-0B&SH05j
+
+b)2J'C+-e'!fFYe8PZfk0dqmBMAFDei5D,CI+&B3B8E45N4URc)c4"Y`[leUS1dk
+
+(T41BBLb&E`b'prkZB@D4"*)fNQ0&HpHrmNRG,EQ!r'D@58#lXTq-k6ej6c+je2Z
+
+!SiNlL@eB4r*aMC+kHfpp,9i-2dA0+aP$Ad-E4hNcLCi-aU*kHK,X-$HM(P(q`Bi
+
+Kj0'TfI$("%HB4Kl,X&,1SC30meG9(ap"`jpd$G[96+2#8qE#(r%Vi&kI3BD3!-h
+
+e@!%I'LiprLar3%U#XJ#,F`i*#E5jD+p4rS0[ifMFQX%Z&H3lZ*2R1!eY%C2"EU1
+
+MhN&(LcVbkA,-0(iA,8,&3Ar`qq+B62*6lA2R)i)KBV0a6lR8q"PIbZ`-9E6UDhf
+
+Xm6Ek$P,Ki&1KZk!DCa3MBfci4Dj6[LJTB$"L(a0H,+N"GkIiid@PT"-BhB6V!cX
+
+N%"H,IH!l[!pkXGD"Ua9Uf69L!92%!JRpTEbeSM1Z4a-BL!2i6*-,XB+9PQ`[`X*
+
+#[A%JkYEbYp*HMLhNpjpVXcE)*@JNJZ,dADEJGFCrd*0DYiR0Mc+HcJm1"#8"Hm8
+
+cl6C(mJZ(KG32X%pCfSe$L9@1kM(hX&2TiB23VH@U(BPL1*RBV'cPBX-r8qL`JTa
+
+VaXljA+peS-HK[&'4`rTTElb3!*Y8NF5N"S5Z@5E`m'B&1K%lFJEIqR8dqddBBhF
+
+r-*XpK6(f*J2)DiKlp9R`5$Efq@%9iX@rqCX#bZ3rL'DHq&Hr44)2LZAj0K-$M[B
+
+LBXci",B$RbRIh*rJYq*5(Af#AFZ2jS$FK6ia8Xc`AVpFL,F%I%B,IRE)0$6AiLh
+
+mkF4k"jiQ-!`4-k$K$eeMjp!P4,A2T"I1m(3S"!"cb,#2(P**[6RZ8Y8PaARK[BF
+
+Li'KPC+JA(hiK'6e`AXcNiGS(`ARYSSb!bQ86"i+[jXI`,"+j`LiAmMSUbcCmafk
+
+h#q-DP`90Pr46$&l'jk1Tb'8A&%9ReID2,GamfN5`,T+AD(9&aLl+1P5*N!!`#4b
+
+c@TZQiKa6Zf1-PJIG`%5ZFF3Ir%ki0KbQZib4[6&h')5VQle3fUbX*J3[+p69eV@
+
+08!#2pEc@YCSFB9GSQ'T!`8FYCmMR*dpKlVF4EZ9*eeCM)Q0Fr43@!DSSiUpqNQq
+
+*mKc9Pq!IC(J3,D6ec3B%I*!!a*jVHMPPGiDV%&p@+ad#I!C%+YaL%Ae!6'biLM3
+
+6CE$8cDiJHq"9qDQ@0R`-PT@rbMD5$bS,3*BSik4iP1i"1r3CR"%Z!pL(++M,8fL
+
+6T2[*+3@5@h`'c3emAhE#qG[j+pC32@qF#AjK36GHl&pFTCp$"A$!*LZ@f#DUZE1
+
+!bT@64MhJrAQHe4)-$5!2YP04,BSECHa)d3L(qFXK%fQ!a`aC+qd`T4*&"cj-,J%
+
+jA%bB"LbVjkZS@0&#JX4&RiAeVY(5`&,#Vi*e`jVjY*',J'B#RK36&(j6ha8X1,3
+
+5UC-+dm@'RJ9Y'jeUqbLaS66)5$a!ejF,KQ1,)Ml98qDr[&9SEJ++!#V-L5ZJYRP
+
+8J5Zi)H35pSZc3S64$c4rB+@i*bU4K-r9iEU"Si6I3mq5iM`8J2l99T,[KAF($P#
+
+#Zj'l3cSD@32paG(cd,X9%0mHraXN4ld8$*9aPD"abLSj)-F'K9Sa$Bb5r#P$+(5
+
+X9$!Eh54cKM38e9"rL5`2JQi`e%@(QB*HT@hK$5TJ%phAH"N6,,LY(X8@Ih+F04H
+
+lB%5T`#cD%ERCF"9B`L5)1jEFZ%IAKI'Zh1EI3[GJ&cEqDKqZF,++@46J3SZNb5H
+
+i5iA'JH%2aN"ijU0Maq%MqTSH6Ha)0($$jQ*VTD[X%beU!fdZC)05I6#q`4&`&Qq
+
+V&9IXCY"`H!Uq#!qhUUf4jT!!*dQBQ5$*H*le6'cU`1,1N@6DNEa4[%hq!k35)!i
+
+BGS4a63%#L"a@hU#,NDGkfM1*!Vm3$9RfdI"EY(lL2FSj50MkpUAZe-rR)G%)M+&
+
+5%N6@-!&XPIJbN!#F8P!(V6[i4@JYr"kL,E"T"hZ!i`594l9,1!GejN#T"UB$XQR
+
+UP9DGN@QRX#iXNm2FH1@-%d!AP2S-mC,RkcA6H9J%()[3HE)(%kc'`XbiHILEMU%
+
+d6($pBHUBV+U(T9$9`k`$LhZ*2FkZEIiPIJD*"-b51&U`LD"d04*H2J6bGY924(Z
+
+#F$TLldQ`*%(G8GH4k-&%GhJ$$TAe&Ed[HBlil!P,eVN'iNX,SF8aDTaJUXMf65X
+
+YP8mK0+cb+Cb$6@f"QD08FJr0J@&4rJ&q!VhHJZ6),P,M&l$X6bPI0$5FC88R&N1
+
+!JjJrUJIaGJYALb6qCQ#8%R@5h("AG9+l!AK"JJ"EiE,Ha'Rc2Y$5pbmZDaE%$hi
+
+hJG&@$kDG0KqDbLAG`LI#@XN+`)p#'S!Mkk)PDQihFUXM(i2#G3"53+M2rMUS+P!
+
+hXFPfajMNXEV)0$8l5`YYfr)fa0mKh$PYHILL@Q,Y&Xe,!m&N'cm'4-B0@qENGj2
+
+@B2K9ESCfShCe#b614DmCpXTqGK!3k'E3P-"1k#I9B"Q,,H$L1%)6Jf&$iRE!53a
+
+--p`3liR+9$%+F$2#d'KU3VP)DP5HDD-$+L'NQP@(m4LTBE&aS*(4&6q[INM+,Sb
+
+DE(9dFHPBbl-0fL+mb44R[%ILqN$),E"pi1S)VU-cTJ*C3B+rh(QSa$P(G%l"A1Y
+
+"*SPN!-ZHB$dUm@JNd,"`kR$EJ2F[i5i`bR)pSh*I4KcqMiP'459L3r"N!6*&Cee
+
+JB#UcG"b$9DASJX&,,21%%Z!HhD2ZA2NRd+ZB"MB5Ii[1JeNUQhl1*2$e86S1BiE
+
+r'eQ3!+[#NqLY4$dN,`,m#iEFI#Y3&mfAEeG3,B'KRLA&%HiBAN`[!)0e-4XU"bM
+
+H@5F'NECEBbd`5ljPD)KK5CAi3Uq)[m@DSmT4(%D&PUbAh$'Dmq%jJXk-RR&G!*(
+
+54,54LP9'%'p-fJ`RLM9!3Jc`S1J!Y+Z0e,-iAPDY9-UK@K%VS$PJ,@[pLKJ`rUA
+
+V)4!P`qT"Lc1E2bH[#mES8Yl0Tp"+@q`M5iA!d#`6"6!@K02L%kmU,Hb0l(Y@Y)H
+
+UXd[QbNNQ*H)fS*bB-DpKXP#h0LHIamF@9B*ECV9fY!UJT%+aY5eCSGNSe5H+(G`
+
+'q5riRR59q+q"*&&6,M!j%Fr"ANA&,"B+P4*RFHpCANGp&93EX+Qa5NJ5mbpPE""
+
+@J`T6mEMq`MI#,j0TiYr!q'0X'R5RBTH#A!cRqhP@XR#A3S[M6eFM(-q@CH4d+U2
+
+X"c[4lk&hJQkjf%NB`9!Im"RdadcaiBP8`-CT`MAJ4"$iaGJp2"8BPH`lR)9cH)Y
+
+Y33Cj+1ci$(G*FCZd$*(91GHQeF![4#4FCK+&e3ib*Vc0ZZj6X-%J'dK4lTjZS4'
+
+b"ak)+Ib,*`CYblJa)X1*lH#P39S3d@*VG1BXCXkc91HkT)l+FEUMKb[28HE9ib$
+
+ckV%U3%P1jJJd0c-$i6@iIG$VQP%H2f3T(Pkr0T28aeb)jTk%G+5UFr'l*$+G!Dq
+
++@G0#'I0[`AV+MU0"SXLc#8BFp-A1JHr)qNNf0Rd4,!&i%'9LXdK2pSF0bT3KEL`
+
+RU*'0EqJXJr[jBEkQBZT)ETe"f%+1S$591"#UNb),S+PKL%@Rkj!!,Hr8F2'@-AA
+
+G$"fKpqddQ%QGRfC[8)AQJQN`B&jee6T6V65jd9a$8JZN([`8T"heJ$`fVKTl5P9
+
+m1IKUlZ#dUFDrBDRP4+6C-+D%M12JQ1"J[*f,SAC,JQ23McLRXR!F"iM$D1%Vam%
+
+)C@D"#$B!93PcTfcI+rmVVeH'RVB2Gbac$qkV2l+83)m9PK*15%dp#*'"[)IBGTK
+
+a8&9"K@QE$FI"q#5fNkK*r*[U3+&VH3QSC226i4lT0l+'S,(NXC@8)(9Kla'i+eQ
+
+ekQl%i3bj3N&#qB4B0T)'f[aTLjr$[j9))+Q3!!mikmMj!Q5Q%5E6j3CkTm*i[,G
+
+f62JL#4'm@*PpShhiQ'2V9Aa#Ff5L-qj0KG+1D8MC`,$3eE19*RS32BR2SYU3!+E
+
+%EH29*KG)C)dCYB+c+iB-IAP5I5&"+UT8,#rA5rP6FDQD$%P*&PC[F2mSMY0L8iN
+
+lRCmS6R9C16r$KU$f&r`,bD@NbiDRF*H&E")!!%j"QN&585-F)SqA9*S8JI6V#91
+
+T[C("pAbeAY"&Ycf+")S%0cp'2HqXDmGb#eY6$HRmC$Hq16p#d@TR"JeL5L(*`8Z
+
+r5Sh[6#VbJhB`4,5&Z6a#(i$1Am0Zm"4Q93+8P)aI(#$UNJKq)CZH[K5+GU##G@5
+
+BBB,Il`-X'@+3!&U3!0dJID2!`Ljk)h$GP%l"%L)bXpYL2D2r&5J6Y!)AL%%T`MR
+
+40P1h"G[GJ8#Jb9+#F&QCHq#DFVYXUG*Hj+f3!'5-3-mFM5p4i&Ii$c`*dEI&*,'
+
+(Y+Q)5FH1IV2k!Gp4PLYN1de!M*%GZ4a5X&$&EaJ-qj,a-N,,k2VT-&!$LV)((bC
+
+&L!B&f$pJhE46L5S&e"GJYScfRm'"BU$I[p#l&dq4kq36KDJ9[b1q2QmK3JCA00B
+
+2%6MIq)5[B-HpQ#$N6YS(%f59(%@eh3ZrP*b)k0h!,(($LD+%946E%rd@D"Y)9pE
+
+0@6*amN6"m"[i0*q(f50T"p3hq9c8d&4E&())*rN`-e)J23X8"(T&UN[Q)5Er$4C
+
+%TTPQJfjZE"#!F2"bG&(cCE*!'$`9X6&aka4AB5!*bi*&3RajJadkNTid9KKT)6d
+
+5GiV8H1@ah#Df+m-@1B2KLke0e-#JY%1Y,3YX[9,ELUf)6dJ!%GB9pS'MD%3j'jA
+
+mdd@0[ldEmSQ&#@!#3)@"cH$R[b!am4PNf@23$HG,6!qNP+01pU4iCNMfKRL5iGm
+
+-0%)h`QJ5&1#`2YQqJIhQXb&Ti-ZER&#Q"rRQ%'H'e'DK56`%Qp)[`i6`PB*"J-V
+
+K$@(JS"164iIQ6bH9E"EPT[lPT)S@)frUAdiU'3h+6H9I+2V!Td(T1*!!JYQi6hd
+
+6e@9b@0#[6Q'-$m1PXb9"e&M`VfMhX4,UFe*+JXXF,$Idj9RLa53Ch1B0*jf3!-E
+
+,PH,h4UXlX82JRFB%*#[jF5VT9K3*`)`QXN'00e0Z'aeN@4MBBlbH$r&5e1JHrbf
+
+riHPiJhi*K`1ZPUdCE%3,mHQ%U01##51B)(UTbP$b0hkQCS('9E%T49i"U36Vd1G
+
+VL&@Q8i0U*8clbm6cG5DH#fEh*[ZCVPXM1hd0f0-GVS,D)H4pX`,K,0SK3"M(%$d
+
+F52a&f#bQCa@5KqN6k!,ifBrk0AkPAjmI`dp6X4cDjK6F4MdfY%,J)"5iEJ@V6,E
+
+Jr(HT4&2bd"A(cl0-dZF8%8,mLGdiq3b95ck[8LUrLh9p$[C+ZkY*fE%Gq#cUKL%
+
+X6"CFU%bAliC(6kQ)Gk1YT*AX+8A-6!V&),k@*C3DRVpFd8-m*BBP[9-&f1CTm1Y
+
+8lib2,fhXR,8r3hfB%9BZlElSABaKHL"BikJ3YlKb$`e[$AX2S5+#R@+cff1a$,k
+
+01aY`aZikjp3"B"IeEH`bM&`p2mp&Y6&[aQ,9RXUK'!B"X3Kp#'H()Mib5I![Y5J
+
+%D&aC&+-di#PZ0hSkjjLBLT`9#@DE,+br,#A%"q%[Y*QiNV)e%`i,d(8H1[509JD
+
+Z$YiX@)PB+9K36''jqSaT#Ej1K3mm@klaLDKVH6ZiTc3P05RUfecaT`krid%mZ$r
+
+#eZ'D[AHF@#6(ci#rKcrGpfk8BQ3949UV[i#kU)1,(j!!d`QB$&CBi!9)X[L8L!i
+
+%,`m@TLJ2SSJ4kE!L2EKV%fbj&KeIchK-0K)l@d',-Y&PV1la&pF([b%AUZ`UeJM
+
+f,LdZ2)4"`(K#2508,)8F+c*)c-21IJbeAK6%Jm+hT"N@j6NB*#(9m%qdq["[&ih
+
+99Kr82N4a$KYXX8,KfG,q9hEDV"0`MpeZ`XIL-m3DJ-rLlra-&H5BH)G6`)Li$X1
+
+)R)aB,J)'TY!BKXp(@&%"-8dr8-d@QmLTK-H*[eRF3`12Lm#[l%mV`N(aPD%0P1)
+
+bL$N08@&H3U+Japqdh5"B%f5NIm&c[2,mLc)'lq*lq&DF,3c0$59BFj55eSpfKMK
+
+l52+Mb8((iK&r[,l)AmH4aRIca1H(`dK9jfm5C3$[SrY'aID8,1@rd6&M$*VG$T1
+
+4'Jf2"bkbQ+lc4FrlSa3V-Z8r@IfXZmd2FINUBVK&S08ljNb4[NRjerai9M'5GCc
+
+r-mj"fiKQ0IMB&2qRki1V`CJC4m2!0$eKp,l)fS("Sj2,eqEPNkM35H!aJ&*Rh3H
+
+rqp%X3dPjDca,9X!)jX#)05UcPUE'0p[caBH!'D'YPbDXK)'1*ddG'Iq``6PS6C`
+
+K1@SA5331&9F%2J*+FIJhlK)N!pd&IVV,Mr3hAU#rH5Ba*UF!F1-a")VX1S6YI-h
+
+X0e*6+P'T8Ld0&cD51("%'Hm1-i'0mE0K@'iJR8*iGh`d!"SfK[b9R`lh"Vq+9*)
+
+XI[QAkeNKZX"f-Qa9a1T82DD`K8KQq)fkr6cl9*E"i"@%e(*@m'dZB@5$YF5'bJ[
+
+-hB9*'A#(G6fmq!'9a6lRr,ciA(Dd83pL*Tf+X'QZ*!&eN!"8K2LYmR6J#T!!L-H
+
+h%%m+[*TC#DSL-F+B$d-hS$rMMLXaRY5qM1G,dd6a3P9Vr%apRP9EITeJi['8eSX
+
+caGiM1FK##$C"QBUHC'aU6d3pm8+k%'Z5CDIF"4I(X8XFdS2@$jqL,)2%0D'rk'k
+
+&(kNZ*YDc-1YNk%MA4+Ji#,MD$P3`MjcGkUDQMDjAGHiLdN*"KSF!()ca3N3%r%X
+
+lNj*AUK24#R+0h5#'CpMpc%0&e!&f29$`FZ(dkH)2TAa$0fP#+fS&BE`d`Db+jYb
+
+83@M33$,cKe0,1KVB05B&D'CLdAP46J@K[NM*(Ak43+YF(#1@,%j4aATNGKA20R&
+
+h%)0AR515[bTbe#IVi)-TJFpc3&3*UUN3d@*Jim&Q+"He'!'F!Zq1E"U'!GKG)Dj
+
+i!Y8'8lH`*)a9VhC30HJDYLHE+(9Am35r2MSfG5hi$*Y#m!`f"LmdMLbc2S`eNaZ
+
+G6d[VBZD1)CK1M6Bi'i,T-T[DMCY&KB'DI*6KYN(ZD%%6NJZ-qE-ZkVMikr1`(@P
+
+pXZk(2Gm!HBTZEle+KA@,9q'cp+URfSkXTV3,bIFc'!q1#Se%HMbd,)*j3fBTRk1
+
+MCk!X[K*XPA4!A,Z(rM&9HFIdB!2"c54U(ikm8GX*dZh+0%Qq[1"UFk0mfTD8F!q
+
+h+GH"UiZVS-J(-!6`0Y`Ek(6'EcP0'(Y*Vf2')"Yli+Z)mN5DAr6"T#PCZff3!()
+
+mR)hHIL@$#UT1+X0$$C*9'8q",+Qj1[R*p-5AFL1%0XC@01(%FbrdLHkCiI-XBfG
+
+D-hfrH6ipV[I$kHRG#%0lA,*eiEqS[6)QDGY0`L)QZ5$mS6dGlIaB`k![LFIjUMN
+
+SKI"#HYci2Nl4e#S)BBPA@(3SlZQh%6$K0l@p`jrULEBpC@iJ9B'HV5)c`5Gi8#K
+
+$p%`Ji9-HXPG()-Y4be1XGeS9&P'8'Y4Ir#"9fl,I(VqVC45DLCr,SS1S+C4S5JB
+
+PfEfZiDFpLm02`#3G(bAXQ*`Sa`MM&4JH(4JJAM$Tc[&#d@#"@!ACR5k'NR-pm,V
+
+*IK[i1V9&+8UVp&`!Dr%I+#"Q[fD+$P'(ip290Br0BS%+[JRb`J+-86VY,[l&-!(
+
+SibTdE+P[%IF)TY`CAN2G*942Xr!(9#&@H%KXerH[,NcF*@jPX0ZTqGi'[lV[ZiH
+
+8*CFCc9Gf&`DIe`lpPM9i8fj&8j!!5S*dh4880Q4$ARLG,L)#bT-5F4,m(%BPh@i
+
+N9dlE`(ZC4%9eQYJTq6'mPZIBUkifPh,&i$M3@01HaLAdqh(69A&SmB0Ha-JNS#@
+
+!-Mb)BHJdFqfTla'6FK&jKKGdb8A3`L%EL)@[j!FB"FR9p!$[V[YK3dmj%-B8iKc
+
+jH1HpeE@N1Y,0C%QPLde,X4Y)BbV0JEr)2HhPAU0IP(U%Be*0$Q+3!&VA'Bk#ap'
+
+Y%9m1Yb5m)9YH!JfPP#2U-EqE9KXrJB61dZQ@kd#i`bUe!a"b!-YVdFm,b!!%[Q'
+
+EGSJ()8h2LLR'G`@Z`1)+qQSJAX-,405%X)Km&&E8de2&N[%-H(i@02a*l&IrDiB
+
+"TZV+(bdZJHi30@I#`,*%bCd+i*&6R[cIFD8E"[18HDAY&[*+0r#R2UF[D$3RJ8)
+
+N'$eDMp5P$&F9"m*0Y[N'ChTNqX9,"&Q!UNV`ZK"8LN42@)qC&,l[0c%LP)T$F&V
+
+H)&UkC-2Se$0+L%&3r)ZfSVa5m#GR&Ab!)Z'kqp0S5+QdEZDJkQ"SBGm-3)EcVii
+
+$I&j8i#'!V(#!F*JC[eCIP#Y[U6FCC9IP!,D4!f&94rGDKH2$HH&lA6V2a+m,V2&
+
+DYG)Upc0V'Qi5df8`263XSLGb1%cVZCV@4D5-kbINU%(cA%$2`Je@idPHi)Maqe9
+
+2JRHb+JrC9lr#&NJ8ZH2c0[ZUa)#5mSIb[0"A0BBGI$6Qaj0idr%5qTUX[D!kLVm
+
+4Q0I(q&F%E1N!X1T%C%q'2(4ENB2TV$GbTlSBUAC)Pme(A5UBG0ZUFF86q"[#")p
+
+JU+Lm8ALDhk-f+(90L0,68T62f`VMJVP,QbZQ$MkU9&eL&"`&NSSY9"H#+bHXBkb
+
+D!)A69+4XJJ%1JdiEjk')25Yj(H6!UiC'FD`)+`GaU)8r!dm$ImCq3p$4p&,SJl2
+
+QKmQ"C`q"1Y0G(Te)(ISL(LNh(&'-m02e&m'R#UYSaG98J690B)`"b8PAFUXcc*8
+
+$K+d)ENrq5)`V6Y8-PLEA5XE*R)AR%M0L[-"cJk',39,!Xhk)K#AH-%P(E#TX),T
+
+2q9dZXFjIZkqPmdJD6AT(jSPa4%(K$+Y[rF*!%K$jBhA399j8ZS)-,&%*kiYLACD
+
+&)LAm,(kHNZ!#[r*'GIqkcGqr+[pFPMMQ+dQAmc9iK`*LV2[LCD1%808#Vj!!cM,
+
+L#NSAd+r&5U&A@ZE%'66J9-)pdDKabSb[%pD2MFULe3V592@KU-X#-c@C"HI*)RV
+
+BqIJ8"@E`F5b-SFPLi#fmP+%6emQV1m*6)XKB&Qq!PCFL4'!qBYk#'allLf3p[e(
+
+'rkR#JI%K)jRI)3!'A0V52ibSE1a*1E29Ne$K#JqYbBH`P1hDj[ee+c*fAiI@VeI
+
+lR#5RkqDPHmdpK0Rab1,l3r&TDV!K)j6-Q9%-S(6'Npj%Ed9FUZjqq`0CAT'rqNN
+
+$&V'Y&pHF&FEjSIJXj006SG'GYcBMN!!D54UU&+-3#d%'kB@K-6E1Hm'r8QLGb+a
+
+1C&@*jHIahRA$FX94-h5DY!(D,X5!&@T"'k@D&mA+V4G%-"X1ZA,NS0B5l3DhK*)
+
+*Dp)G2'b#D4TVPa,E6AbKe&l1VMVN@*JUC"C"T@qkr#Vb0UaT`9CR)i$UM*cXFq1
+
+q,$j9l`KBQJH9f4(Qk,'8,ZUVVm"D4c#3!19p!P46I6RI%`AQTZQG+$k*Qm&(!dm
+
+eaX8Z6&BD%0T`XkXH8*eH$jcp*R#[NMdZGKkVU01[2K0&A*dQaP*`KH5`Lp)CG9M
+
+1f1*@XG#I)4@j'`jmqUjbH,cYc+l*&HQX#ffF[&QRM'(Tq0f'RD"$3L@JPJP-MPd
+
+S!Yj8Cem@5VSd+T!!9k93b1T!Uj!!9+6D,GkaNJ!h#S'B5B8)(JAah@fcEm+Ea[a
+
+q+GC05MGA0CJR0TYem@3dUc1i4FlQE-#9@#H`4I`8U@,"eZ&a(h)KB+Y2JCBc&m9
+
+,'AGFLb+(*aHPlJNP)T96l)PUjeA1iiXN#$XN[21'Zm(@CDLm2-Z,,S*jACj'f)f
+
+"kXkLK3%0$cb,"Y,3klLDH-BVj#Sj&r+`+9UVPe@r`Vl,a@1IJ4T!p4d#Nc4YF[C
+
+aXD-X4aU(M%JLSYf1BNZ+39aNl%Edp6ceh6dcXl(a@LNYGFmN3m3`B(i"j5q9&dj
+
+TERAY9"9r9Dq8lRXD%p@`U,rl+MLl$Y9K9(ZfDhZlA8!VVihQFK5AX&E2!+VXfB#
+
+G$j'K#m"HMq,b"AikY6dP!A%fJ[SC&5A-0R!RP4eMFD@AHE[3XJ*L9EVU&hi(A#A
+
+KhiF4Bc"f9'MK5)QAK-BQbK60VqM&RH`hYbeZ)FTdCC**8LSQEeaZ2*2V5i@ZpM3
+
+$&)FB`@[kZjF#e)CA38I"A`Ec3q+%25Nq426(p)Z+dcL12(dfQVfSMV0bMIddb,2
+
+%3FLdHC'-D6&*(`@[-MqE(U0T![%9U&l#*82`,&BV+R80VD+(609XUK"4q)R9`*J
+
+UDV[0`bK0JXC1,#YE94`CC2dSYSXrCda2RF$bb`br`!m9KBZq[QkAJ)A9GHh$b#[
+
+rm$"5$I0!X5*8F!NBMdf2m!8)EdKV8X3Jk"$K&1'bK"#5jSHmYe)kNIMTS`TjAFB
+
+9P+U!E'&*kbq8D&(MkiS"Q'Gpm+F,,QVZeR(S0Lfhq&Ie`c[$-k5V8e4LV++N9lH
+
+-@%4S#E13!'#1,1I-'(j9febRb#$R`[%6)IZpF#ld9)'2&bd9'KFpN!!$bdZl$dR
+
+`kLa3Xdr!BB#K*VQ1Jcl'C36aP%QmHDmpSk4Y,Y9Q'M`r&4-CK"2YYm!-d(9iF"b
+
+Ui'bNiLiZ-(k09Jh2pL-9T!h0%(Ib8#LKh#6,i6a!6YKQ6,"CE0MGXBQEJl@a%A9
+
+mC&b4[208U35a"aLT1QfaqLJB`Ff-XR9FCXj$HH0dM$Ye$h)"09R!A3UDmJJF@1i
+
+RMl'p"Gi3lUN,XG`9*iCdkVZS$T+*Rh9rlphBariEihI&J01mX!Ur0H`QG$D&r96
+
++k9E'2er-EU`+RCC!JIjJrNBHd[C+X3-a,d$eerQABXmB!J+1#fBm!&i*pC-idj5
+
+4`P4NACB"f9(8+D$cJ!SSZb`QeP5"+$i"4j!!BhFeCHe1YJZLSi4VcVe8Z4&,NB0
+
+A8iA$dHc#Z3Y"LHhDc!EiNGBESj56Bil@Sa4qrML*eR1Le)5c$"2IACXZ-fBTPf`
+
+&p&Ga3ZE,j6L&IiQ$6CF4Q)kfRA2f'DIKf'JbKq9XCm$GcESP[5'YTb%YE@64KLC
+
+-K)#NY&jp(-'4!mF301H%hZ68`&i(dHaQEGG@"ck`'[XjAbb"q$FpC6IR&P42Gd#
+
+c!JLr#R8kBA[cG9V)i!eY#fX@8#dX2pbPZA4[f3q0i'J&eq3,6"T+S9%Xh0LQ-2'
+
+j6FShFP09N4U&Xdl-K'PSRF+*F%dp$E`Jl)SSN8Ii"PYVG@,bh4Pe%NmEJlNDVMd
+
+rRN9VK-leUliel@l8aM"a%%D#6$qM!UNE5@dl$Xcl53bed(Jf[k1MI6Db+Id1F2X
+
+8Zm10a1(aBVU%a-G38q3'9C2U2m%3Dp3(U$J#IE[&R0@Np'pYdI#Fdpc!1q9Ykl1
+
+Sb,!q%U#d6E!l4"KNhPNF8fEG`Da&YZ6b0EiYmrNX)!BE"GkZ$c+M$Vr3hiTh%qG
+
+D`@hcS-Ud6T,c!2fKLL2rKN-HLC@1kBKDh(4YR!#(%SfXVU16CR![Ur%bX"k&LML
+
+8'MH[FjTS@@K*i8bS84mPZUbMSYr%AmpLr[`U0XQL"8j41fUNk&k@KiJN"*[AcIc
+
+-$k(%$1ac0Ll4Z(-T!5D"D%KNje"jB"Ter5k%(`1mBkGd2QNSm(6J3c!P'iQFeAY
+
+'B4V`H)dS*rK+E!cXR3#h%QN!&dQ9k3CRNZA()@jCcli-FS8rq"U*3eA)ZlDGKV'
+
+-FTPDXYk-X3r&T@r54j!!V`Q4B"i*I!jF82!NXk"%[mK1j00qMq*dr!MV(h`)[m`
+
+*&eSc1SD3!%QBZCFA)G#b[1LdC+458T&a$()'-(l(`mQ!(6UhAEdMGk"FcM!#X@G
+
+D!eD%B1B*6-[#2(CCXYmNA&hA4FRb0S+!5U--MHmN@J,@Ff6fP9[6-$k*jdPU6Mq
+
+$RN6A6+QcDZTJ8I'KlZbJ+FjeYKQP1NDiUkS'4[QTiP!8KA)HQ%dDcJ#L"BB!`%M
+
+)p@hc4Ph+cEPA0L#YHkqmeapEUZZ![lA,b%*lQmQJaHRLH1RTH*rB8,c-6J(`Sd4
+
+-KGXKZ4L`(A46cU!kMMH%Ppfqb[-`8EAE['G$f+P6a-VM12Zec[l-XSdE4SG#Vam
+
+Pf0%+a9#VJ!-T-X*Vh'3(TSj4&GcZ4!bEATIed54NQr*PJ[[#*&`DKJr#MQ%1Qe`
+
+h6S&$%$YN6!%,T#NiGSU%+Ve#*'A`"[3Xi&"J!hcGf$qChjfkL3)Q+"1BK*9)!2e
+
+AX+SBieqeCQ6Z-X%"4)*L*miEmfq5i6Ld`l#85l@cjYba"4j`I+KRP!F1*H@LNH+
+
+RdkhKScEfG)a%B5lh1!)r6*TJ,[K)fhPL6SYdKbK1j,[KN5Lb3@5IFB!X0HCBk@+
+
+cDCY@T2c+!$(5P9LHZdiUR3'X[#(R(8AQY)bmle$('E%RF#NP#NeNFNCprimrS5L
+
+2EMG6EBA5mJ&K`4[c[()k"#'$H0l*Hi"6p6ak,[49q,HPT!@8)f`RIVk(iQ(i+Fi
+
+cibR`KhaR66QHPMaY09lBkQeLpq9IC18H,9QfZZ"IKE,2SVB#2@9HJM2`aANXP!j
+
+A+kf9M2p@k)eYME*Y"@C-a&8LK)XJ!F%6+NU2akQ4(+V3Gc48rTj$j90(pprpC[9
+
+1bN5"q4TR&lHFQ6-+N!!3*((2SGED1EG#1SULdakbeHGjX(`V5-X00S&Va,`+IP$
+
+[,LhM-e6j3#9!M`2VN!#JHc&SdeL!a!T'`6Eq`Zp-dl#56,B"bXP3#UI(i5V`!5@
+
+Mq6Y9+A``c0@"*'DR'Il9YYLRLqP3`(+J11KqV"kN0P@5m`I6'k``lPD%6K9@&bG
+
+ja'E$%4&*f+c2!H!!F!`k"3aYbFca(+-rMRPNrk)D3`f0,4#Uf9&0S0SZ@3LFi'A
+
+mDa19)+6BBp%i3S--1Q@P4e)8'69Iik)-1YjAh3Zj&bAp)Ab#M#Ai*('EX,18l+j
+
+SS%BTY@bd@K4GBXqj!9,mKZ6R)l*rUR8%Ak6D9)5[YJcpkp3*fH-c`%4r8SS%rjB
+
+%49jmk!eT4Yj'HFeZZ0)5DSmNNUXE)b8Ya8hLm(AeAdTL1dQAVj+q``ICMe&a-hp
+
+(-E9BJeLRa1ZS2!VU9e"N8BjRfDlZE[akZq#Qded4QHb[Y`Y[-PZ+!PPm'VZ'T,M
+
+8K(LGC)4bQ&SkeXYPH%3#"1ppZ(G1AZQ'F9pSa`pr-AV#[fDi*%,IM09Xc5K5HIJ
+
+5V5@T!iSe)NHlBH0$)fdV4m*9a&$%5HH8+*@2E@)(4)"laqh$#a@ldmI34aHm2Q0
+
+@2$4d(E#Y',,L4L#qKd&PlDPiQP`q"!kBYP@#9EAT3$S+f#'dKaA6VeN%4M0`*Nd
+
+YDb,"ZP#3!$2(N!!S[XF[BDq,eB#f1HbY#R#!RR2K+I'-mb84HP(*JX)T8BXV@5V
+
+B!Rd0EfrmVX!rUmcYRkEe+Xm*1dZ@!cPAeAA+`kD,)Z4&Gjc,4p2cQFm+HBE4L-X
+
+cBNmm+lSAA%+-%AAh"#DL4kZ)PPMAmeSITjk,Yk032DDm3DJJ6Trr+S-&"`cCB@b
+
+5JXiD+R5hQrcS'EY8lS%Sdh&0DTicQ'SJS9$m3NrM(Z*)U*a*0LUfKCr)83XJ39d
+
+RqPASZbKN0c--m6Qbhji*#[VZYX*0V5($82BhIdY#"$L'T0J-D'cSYjAT%)V6[@V
+
+&G+#*iXB-E%@KPT&IMEIJG`3Adp$f!aBjePDD"RpQpkqHjY,#L)#LGPbdqZSmklL
+
+A#[963XZ(9`!jp$2M)eE2h)Y`Vr!C,(aSRRM[TcMZSY5"8BTBXQi+3JI$F)I8TDc
+
+T%"l)6$CXX6Br!'ke#RJ*Nd&`+#jE&(mKLXBTJD`6FMRS3I%4C,bmJ&B&D!DHAH`
+
+mAS14dM23)R1BBQU3!0j@9B"S1(LQbArQFRJkL@bq`SG!dU3!k"a`Q"(Q0P3Sb[k
+
+$`rI*hakP24*F5$2&-R+c)(ABM-q`"MqDC3Y#lF$)9+J!rTIF46Pff,cF1EC`eK*
+
+)TecUAi3VT11Q[p9!GKD,k05aV!#RJMJ#H)+#pX&`q'+UT23Y346DTb3q5NAJ3dj
+
+2m+IA6F04$!AGl%%%BT@5GicMYaP[BK'h8RKYP"Q&(P5RR(Z#m!$TC9&L`$YQ-J2
+
+@rqB0iceMc-`V9'TZh(EY("#(VCe!4aDrrR5k'5e6`*KP%ZaV3CJSBRe`#dc!Tj!
+
+!ALEp"3N4N5G4FSU(*Hh#r#9XB-9M[1-12m'ZU6rjPbK@L2iC0f'iqi"4D29-49V
+
+HC4hj&YA-'8QJG5!X%cT&Y8HFKLFk5eTSXT)-Kip5IMT[6p0@q(8ZiqVkHeL+(p6
+
+3dDf2j+N0Df`Dh@VA"pR&CS&3`AKeICHUIC6%&[8(reC2#L5DrK,+-V!Dp+-UFD0
+
+d!#qK@FSE3AG-If%FCXE8hjfC+R*m)(Xk`qS1&XBV-Q5iUM*CEJQ[!#FF'a+2QcC
+
+`X51e4FSX3kUVbGKR-QBDZ"(ANG9$c(dUL4*`P,9lNf)TffaFfQHU+IFje4JUSLI
+
+ZNA*1G"ZPppZ1hL`brqkiL1)2NZR`[JR44qPZ[%*f!A26q#KAS1Nrq!m8(-lP#+j
+
+IN6'E5S'l,T2%YCQ+5(+dBRH*2NaP(l#h6LF,k&"mQ,Vj#L*cf0)H9#!EY!XK!D"
+
+Md&$!%)mb66)G`#mBq#-YVH[%BeCBFGG3PkKqC!f-'d$X-F'U-$'&+b$fNJ#-m3)
+
+JRKamU2JB(PUX,G3)$I&!*A2k#NI%hK0Q*B'EQ5rl$%jDb'FN&C-bd2idP3a%63@
+
+HBM'F#Tl8R+%-0'0iLTbFaV1k2+-ih!+`$Z&2aZ5GeK6r$fDXC+kl83chk*!!&L1
+
+qTG0(c)EHE&d93X13!)Y-9'5'KkNTmYDE))kMeTDJVJV2a#"km-66d0@fpYPU'Rd
+
+36Ga@G[CcZE'Yd4c'm6VUG`C("CDir6BReY@LJ[Hj,e`NJrbPj&,Gq*j4'hY1p+&
+
+C%J4[P21-DI'6!X''RpEGS2-p-JcCe0Bm%V*,S%U6I$-(6lhVZ6#3!*&`[E#@jYJ
+
+VHm23&5YMkCpNGjrj1c*hkV1T,LCM&86c$RY3"1DA"42Bib$'mIV+j&2k1,`P8p0
+
+bFK"9049AV"(MBqNDd6`6jSMk$Sf3!#9*iX!bPH64hH8Q`jI9cMS+#lm38L3m-N&
+
+5d8$d!LR%UZVT#%8*E-B#+e-QQk#,GZ)R--3LL4+4Rl$HR44B,D%bN!"*J4Y&2d+
+
+p39qYc39(ZrLaV)9J1fe3Lf'1!K-dNcX5+!B6a'8`"C[8*h1#"ZCPJ3ekdD)j#UG
+
+&SBQZ1)SlT2[,Y8"i5#@9"*aL[`XQ#`8Ne4[G-p'X&b&AHlqi'p'5*#r#BAFD9*U
+
+(dMp3r+iJMIi0*AbC(A)E&Nm2hA[l!Ek(q!L&BUbZ'4AJ"@)j"-*3GU1TTR`2SaY
+
+%)%%m$lJQBV&`J``P+DZpd48X'`8"J8m%'Cie64b@3IS2(daGKUf`+12R-5Y0jKH
+
+e&ZRH%4CFa+ESX+Yj2p(,31HlhXY3LpK6QAY,rD3D@4hB)8M1@ETe4,X)6H$Z%IJ
+
+J*Z!8"L2K3qSaXPb`2`)*q(c9QBQ`''VKLR$3PfYJVKRPLKJ!,(9&&TpblQ3B,3U
+
+cUSYN!Bf+A,S1$![J+`Zk!d5"4*A2[-a!0CJ%0ThqXLr#Ji"I`K"4hNNhbcY&"pE
+
+M0FNX4Xcbm-%a#lk`)9F@kb+I*!*l5YDi)iGI"+9"4E&KAp2PpMN&J4m(aM,1R`U
+
+df#E03"h9Q"a)k4Hd`r16FD`aCTiZCr#a%IJ'MTUVabYL@DTQCJc!!m9!CXS63,i
+
+J2kLdP`Xl)-Xi6JFblAFUpicRMD4%41NCJ8,4`9E%8)*CNVC"`G,M+qI'&FZZHZK
+
+BXIDIPdk(6[8P2(49Q%AVM(`I5G&DT0-hcjK6@*H#L(fURV(AaR&MfPM8E2TTp6N
+
+3i&QUXbMENkd(e8j",GQ`X!q5a6&88NaKX")i,8-Vbp$d-%m&k(,RdZUT6SqR)+2
+
+&+rG(`kIk2F,bq5r$TrSpZ$Lm,Y(,j64ebc(AL"P1EU$FEi(%[HDBq9l'LphYKQE
+
+X0"h1%MN6hhYHaFM4pL-HH'mkA3DBqa+a*FXF*$d+RFQ!a#LVKC+NL1*H,Se#5UV
+
+Sqq6*(,8+NI8,RfZSa@KVT6i2R+p![B3)`NQM+5m"+q%@,$ePcc1U309+YUm``F4
+
+'Q$++km,Q$6c,ZkDQ!qa'JG)eDK9i)Pb53pS3BqR&pVR$9#H5!d6`GK-QUIT+!jZ
+
+[M#2DUCL&+[KeYQ[8m5ml(AqV9!8lUriZSMdBa&[haY`S"-4`PXNj5FFTM2#9dFJ
+
+3f`brk"BUN!!3H6rX+imU*D&EF`,G5ceR"R2b+95KP45ZN!!,426-,#jpFf`IlQK
+
+3f$d2e0U9BfG-)RbEH!+c-99phEB&6,2S+L3bEp+%LZDl6C@H+2J54F(%%%l`-pe
+
+%TfKFfDb,D23Z8@j4DTCVldLZ$1D!0PE9"r-$[+a-L#L"cMU&V&Pe@&l'UPa,dcm
+
+Di0`hM,#9#T,L52)b2&r!#9T*+ZYM1HP5BN`H-lK)AK)D2l49R'A59LPS4i43i@@
+
+kH65kb)'R5PLRb,c)e+IFFqV&85(RRad@iQqXd@h*V5kh9G-Zp$+B)#i@146UF%&
+
+G@S5b*F[*X(@`JF+RLL5mq!dfmmJFffJ45-Zm&ZJ@q3,eG0+E8Yb+S5[a6-'aC`,
+
+H%Sa3GSabLaX&636mCG,X@KD,fDeXA+L*,B*0f85PMd8Ti$eXJh4!5eHc"V4`a"J
+
+Sh)BDG8MFKH`C2#5GXZiaCCHrdUJVlZANNlK5@C!!1!I*Yr1fCEP8#+MPS[FLE**
+
+X&q,,r&TqJ$*+6%XB4jf$&,5PSrj5"&Kr`h+B&9De%MK3lEa`plX`&Jp-AHSQ""r
+
+I*,D8f,ceA9,q``J#10!"VN[f)IU$5Z,JG8`4'V3SI@$(e$K@kL(pJ[PK@j4%iCD
+
+J9"V))#*+8-dfDSXPFi3N&L`MN@Ch@DJZKY3AI#,1#-04kcc$E'F+fNBf(LQ5Q8@
+
+YLSK$TM9Z@%bJb12Ze#hV`ES-9bDqZcD9M'raFf(0+M&akV[T0ZSe,M[[5QZcU&C
+
+",ADRd%da*X5b3jcreT!!&SF)hXBL-E0`QNbBl!K@,4U,,%@aV!)E5RGL#pB#BZ,
+
+STEQTMRV'daLP%qUQ4X2%MiL8i5JT9'I,!NFHR"8qqh"hc+c$$mK'0YMRDPG@d[L
+
+pV&6#86NE*DVclDF00HU[%DJKhe1Vq!)`jY1C`'-i'XUrli0S@1Xq5'YU(UFMG5*
+
+REU9#e'PL4qHaGDmSlK,hQ`H%*K6q9Tm@ISkF01dC,S`C$[!kR9r3fNc)cY"D5Vj
+
+%ElK*@1cV1AV$M+KJ0r'RX#&kp)C#YJBC(hL4q&5m#FDPF&T-%F)cbZ-UJ#5h-!8
+
+K")Qdq99!Kb%SJaX4FGB+FJI1Tq[#650KLj93&aLqA)"N`5JIZIT'j04dpYK3KH3
+
+DNSTL$B%HT5D&kBEhJbi%Eb5E$%k%@2UJ3F!lGaj5i4cBSCcMBm)(b5B#!K$cGG-
+
+!D-6!Mh(`+AD["Eif%M*%X-4")mB9P+YpS'dV6a4[2Ml%EMSZM%X58*UMCV`S@VH
+
+'P@QaK9MY1UBP2fH0bKl',EAl((*-8!SdSCA#8EV"U(H-VSI%`PM4HR+H`04!J",
+
+0f,C3D3epjG5+D(hB%Ldaa#2%SH!Af4E8@F%pJrZ$&j!!XKmT##KC2#mDFM`!#b%
+
+kC'Ii$B2'8e!cDY)&%KV1)9q16j!!6!,c#%keNTR)T`DZ+jm%P)ZF*0&U8`5+Y0*
+
+8[QIa,&D0lh-$Rcm$6Ir!%@B9QIJTVHciaEYeI6p%'Pr"L6#PJj(5`P2jYcB'GjH
+
+mP@B[a5I5VjI8B[)Si'*hi!#S)RUEK)3iKSjK!N218%ibNI%0'`"ET@[-05+X)2d
+
+l8SqXFc[&JQ*1HriD[I$SL%*ihD3,%2PU8&)D9%@TmUb`DaL*GmN-`ri0c9%5(%K
+
+U3D@JI#6bH&YB4RakMIHZ0hLZ40d3E9*Nlr3,d+'%[a5@fKc8@5d$@L'H9[`He9$
+
+XDM#2Ti)q@*P*`bUNK8,,SqH'@kXN15pST5"$!Zm3`9NG5h0%Uh4"8ZhB(h@41ER
+
+ZH+A%5C)iAX1*QT2,'ZmPkke*MAfF8+Q!!d1RMN9k#'rc4IbAUq`S4"3F%qa3-$(
+
+S"r)c@hB`5)Q'C(Ti'h,re['9['Uk)U5%jUr1d1-[2LF#l(QMT0ra,qm,,`X81R3
+
+rmUCb[ReBQ%"NN!$%5,T5`fGD8SX+M8)VEU)9SGd@FFaSrQkl%,*5PZVMUeA++F3
+
+IRQ5`)I,'36qKda"IMjm!Lb5d@2a%'D2,+8!b2T!!q*!!'LpDR5Q%SZ6F89bKBmT
+
+KCJhE1Ud@U+FeXSB"#)L[K5@$Tr&Tq%c&1!LNTQf45')h!@$QHAH93eGYq6TP!fm
+
+%C!(1XN@!0i+Q'!R324eI@Z4JBKY%j&1f!GrFEi-Z3AbHS!Dj%@6S`B4JKZ4'F)J
+
+XIS%MklRMe[&V19V9)@#PceM[R&5)!YJC-+4X*h)eVA'3!+AaUl3G*!idb,S9%(C
+
+$2E%iV@,'0hMl$1HY@fmMQ8Nkd25ElU6$&LRFKA#(MC4Z%2`*i"raUrSED5P"T)C
+
+`@'0E!5DZ["iq4m*"GeQ#JJ+kU!Ac#+CbB,j6iJ'Sdb%HK,(8L`FYFffL@fS(b"l
+
+B(mTV3`N5DpFP9KKSG(P5U"Q"!NDPr(4rN!"#DiSQmVBEam-TBB8GaBdLJ&Tk0aL
+
+hQTk0TeV8&0EENN)31[a0k6j3CTc6+i`R(2)ARJ1%"G!`mT5!TY&)TdE&)N'(JkV
+
+meeTB30ZmYHBa%&D[QKQijeJ3YM#Fr%*pcrF*&j5h#6,Z`aIbE$"HVHj$9hAc@4k
+
+3!+M#%ihZml5q1TN3PK*m5FNU@J5k@&Sp("1"984&"&'#0$KqVkSKmXI9Aba$M!*
+
+djdCf+a`#NR@qBU3%!N1r3(Hp5e,X1XZC2-ADU+qrqqVkeb6r8R%1@0J,5'F'k3N
+
+C'YTV!`l)A#5)FfL21BicmND@%lM%Z!rX$!FbS!iG2"TG,D3AL-%146XPmfehH!'
+
+&U1i#hKCN0K`Z`S4KU@c4Eb%+%%8&fkM2Pp%@F*k4Gj(J8XS"BCL4"#`8Np2XB"-
+
+J&`(1mGIj!GdjBJB`P+4b%5Na5M-HBcD@LNe"292`F[JNjEPb)J5pKiaff40CF99
+
+13D[*Z!2i81`&cM4D%cKDp%r4%k,R!ERZ+MrmMHLPPD[!JP91"&G$MHiN#1!dF-h
+
+i!XN$,"0["*2J`*S*H!I'GhP#0Xb3!%EXLrNQY8Slb14`*p)$Fc59"B!VeQYE&m'
+
+lC3H%YaAT!IMJ&H'ETF&"D+fZiV8qq-YY0LQrFB(l*Gf#B6%4)2U(Xq4CdjiK,i$
+
+P`SC"@ET)M$c,fLmf,cQV92kLP3ErB[%8TLlV$aq'l+HF5JTd!GHITa1N9$G64*!
+
+!UZ4MTQJN-+N*22%-XBE&`ij0N`*dVb#f(r2'$piJ!,YUGq+3!%(GiCITddpRA(h
+
+C@&'Nf!6dcYeeePaj[f"#Bl1Rk[V9SF)K-R0TPHIZ,6PUcP*DM,[`1a!Vj%r,ZT0
+
+,EX"a'*bf(0RL`G&#b-R#51&RG((6R'"K*%r8K!GYE9Y3MTr01,b"QYrfA%D9P)R
+
+J43Zbl!Y%QNj[5Em&#6*2l"*5QhrM(*pAC$-,YCa1e"(*aP89X$+BJQiYM,P5J-0
+
+-Q1bXTDB!j60bqPcRDLfTClhQ1Q4HLYAIEPaiRf3fPQdJ6)EQH'SE`[2Nd2N4AX*
+
+d2L%XF@,`(!m0UeNp#6Z0@'Hm80TTSCS'Bi%MH,l`D%P@S`62ki"TDBTCSUJ$*fY
+
+T,YY9VKQCP+Bdc9"aXq'RDUF,+bL2+jdZ&k`lMk)4dUJNZ"IcU&[#JD&EkX3p%c,
+
+K-PdJA$Er4BU)h*Ub-h%dEGA+-FH[-&BJQ$F4rUGG*a2,'"98LDiP*E!a5a8K0bA
+
+JC#j$UJJ1(m3%LJdmAmF0#aiFEXEFiH["'9#Cmp6G9@@!V2G3Nqj`Z,YmDIVaff@
+
+jc-RQSZ)JA#p1#1D&X16F"8kMfd%R'E9Zp)4J-2ijdrNX+*VM3dKXDi(R`+YarN`
+
+bS&jU"5Y*1XZ+&0N3,&,LhbMh9b6DV515#rKq2%l`5'NC5C)TEU#`5E(Z,QR![UP
+
+0QIr5PZ'(!L+BZcQaN!!5VLVr&P33ZG$R00k4'04"`KSVUB+#%58G9HM!l'@8XUM
+
+(!kcaD-i)d'qFf@6a`qDBEj5V*,)5@4-8Q*',-jk)l#Fm1''2Jc8`[JfDL54AqMF
+
+R#MY!cEBUND+cabH&e!Taj(TR$T-1Jkf9j9mSL62BV8+fmTHTGQ4"%jH*1J%A`d5
+
+Ba+f&k,8$3q[(L@q@2BU`MhdI5VeK,P*8XLY`TCRhJV!9!-0lIfXDQcAR,9'3!2)
+
+8L556[jdefefB5rl*(CZTLU*hQ3F3GiEPH'(!+el(cM+AVAK*'AU(U*!!(dES"hX
+
+i5Dc)EdMJ&IP)qP,1@6&X'T1DY'K@%6Y%qJB#6TR8#%M)XpPNM"[#MVp!'j0M'hL
+
+6#U6JCI!U)2!5JIJXJ%a81mmANc"Adk,&$&p@AL6F4ciRKS1!$Bj@$@J($T-PRj4
+
+Uq""UE&iLE!frRQPk2L'b#2dU5Pj*+!8'ABHV[h!q8Lf!K,AE#[C68P$5&XSq'mD
+
+%T&c99ZRmc9QB8SVIB"Z*D!$c+iX-)'l1E&-5!LP(jKCAIjGMKqQ)@#-MYXbFkl1
+
+!F3qI(6X%C`Yf%rB$jp[9CKX0R%-e!U,U"N2&pB5($)9Kj(bm$YBF9Cj)&R'jb*c
+
+-NM-@"kT94P%!M-prL@D&ZlK$Se$jKAL@Y9a8'p4$X'd)#8Rl"`L`f$VU4X#I68%
+
+9akB@MT%8Y@LT``Zhc#)p4pTN4LF3Sb@(`aDm*5`k"#4r*fB+cLR'KRhNjALqKA"
+
+qh6m3&dV(XY0!D549SNPRT9XQr(-iC"4EG*!!T$qPq@9FNSQ$DJVAJ@H6bP@T4iL
+
+c,3Ni)9-`BVe&(iej(3b3!$mTN!!)-NrqaRpYU!(r(8NpDeYX0bY4K8K!CdRGJ1%
+
+X58Fc4iE$""CM1!'B!aa,3E`a1ZCI,!aTpVNk#KqYd#*rJ5@)Al!LcSeKY`)pQCY
+
+[bmI*Q4S5ierVi,TRlYI`jT%GaP&#2#EX1k13!)YAkAN%ijU6fe5!d,(&5-XQ!mA
+
+I"51YGRRK@MJa'i%pL'"$D9#8l,K@8pRhZ&@mb9)cf"KqM*qF0#%%q"-Q614pAR1
+
+)!4j0jLpiU2!X6(fpMN5,S30FZ)[QANb)i@0'TAf3!0MrJqjIj)A9p5[dKH#F)MQ
+
+-3DIm0k-q$Z!S9+4pQ0KR8!EB,4DZAkk&%U'P)#f5hB%a,CKm5%qKVD1m,m[3mQp
+
+9&*TcRIB&rZjKb36B*9S(0dICpF&p6'C4c!re`mJYSVq2L5XA,EX@MB,DT*KBHFc
+
+$DMf+I082!+QQSM5UFM+H))1+61HDN8q+V#MSii1ldlaMF+H0@-5r+3Ea0p*M1"[
+
+i3BK6*XhG)S+FXb"-M54%,Y@MiU%"I!`[J"k-H3qAZ%!4F-FrQFlR)-(I+qSiPe)
+
++c+Pb1N9(*4r&ZqaKkYM,"DLE&HXM&$9@Qq'l0Z(IF4@0`-$B9BmqSijCeK&`Uj%
+
+[,EZ@R6*1rH-AYD`)V-b)(!i)-pqP@SqfEeJ!0&YLmJPr"mj(r'4d#*J%I!b`MUV
+
+Vf5B!*E)E%-XXcc+UUfLeYGq4EA(&QH1@d6##"HE&D!XTLp$%Yc1GJ,Me+0)5NSb
+
+jQA&@"FKZKQ!"l#Qa+eT%08qDiiX,ji)CYP0a`A30X5ha[I'A*`b0L9r3[)aABLH
+
+jKF3I$e)L))2b4QMY)B&m9N8qL0ek[S+!LFUZP')Qfb0m#K%+Sb,,F2,iBaIe4A,
+
+(3r%jaX#@!4m)eD23BDA+8KqN8,N9kS'`bjiC@"5EIIa&-8C-!#N31Z)UD4!I)D@
+
+KT$6d'8YI'H-3kc*3!j3AKmdj0G*JYBjce$V(N!$&PZa%0(F@%J@B*SKA8`6G,&*
+
+kU&jhR4q(1!9q`FRC9'CA+mYH8B6)ZE*!YrXbdAf,LHjhmd3h!pfh!L`98kXYcUf
+
+B&Pe6lSKm)k62@!&2U3c$aTQcB(6CCZ5-B8[&eLMC(,V!k92e3H33e"+1hdbUSC)
+
++U&a&,Y#!jNCHmZK[)*bLIhRA)h@$VB2TbiJ,9C1HLpi6,ULHBaNkHcrP"X)I4*m
+
+`0a`rX!"#2)C3Fc)j3Fi5EH8lb%GL-A&diIJ+MJVc`F(#1rLlhc'aPp3AjkI8Mq2
+
+hZSB%m`MU9NTJfED)5#K$XB-GL3F*aF)(h8i-)m22Q3pIi@6Y!Rq6KPBX`RqE@DQ
+
+Z8lGQiP`6Jkcb`lQ5jl5V&RAFi1MCBbL&M5a`[JhlSP`F`dLUf51N-(ebPK6-!f#
+
+a)MlrfdYc'jIQmKdCKqD(D#X(fZChmBadcdl3JYiSamB81J$FCdC39Pr!,J&LJ%k
+
+l'lIFVDL52*dC5d5ZR,*G0,%FJ4@X&4`K9I3)f)Ur5RAJ9dB[T+5)D8!V2MR'm)$
+
+k)GNacKE1)%,K8iM1-p(-+I'TqKRq2*!!p-IAkYY9f#8,ha4%q)@1&elXAaa5bD'
+
+bPLMm@)cG[K9#Y,Dbq-9U0Gh!EBiUXTe+!%m-j3T5c9(+KRFD0N[LPpBH4"P("a9
+
+h(ZH,Hk+Q$"L*58f#XJB)8[933!lSXjJf5JfZc%bVI1@DC9%eM([V,&AKb!H8Df)
+
+fA+83Z+''S4FES-`JE5Ke[%aNmk%aZfeS!GHXm&qjD6L4X$UCT%*kMEF5$TP#LrL
+
+,rb+0K3i-6)-NUJh-RB*rdD5#ci'2*ekL`(j[11j)NaTmfK%(@i#UVe9k3hpap'i
+
+V)idE[MhqCjL3!*-KN!"l9(VJhRP$e9CUSNLYLEP)C+a5rZ'%ie-K1B0%*BTS66Y
+
+#RfqE36(XL0FQDj6P6B"R`DY#)a8$i3m!1NqSq,)Jq8[@ZMJ6UrQUMLXCF1M@XZk
+
+F($G-d9!X)*2&J"jYBYAdi-2iQbJR@-A"@ZRJMSVH6DJRrS8`#er#PDAFdCkT,SA
+
+X(mlFQ`44UAGehQR3eLHNhK*dKH+*lK+SEV56A[L066aS&Y&0K$iT'mIk$TGh+!(
+
+$iRHB9qbCK@`P$BM+1Y6K)8J3H$N8f1FTp9'RK,p3k8IA4r!EVU!5&BT0*BB"C56
+
+BIJS%6R%m8V'`9LXa"l[ZRI5IC0EaE$"L$GX-H65YJ8Z,'#dh&Z)Q`kRCkeeQ+j*
+
+cT"TFQm@S!ZdQ(M8A'-Ydc[mEki4`bA`&HBCP*5)6C6JZe"+U$Jl#!q1AkFP28G!
+
+384k9UXDCF[dJrrD"3MJ!If(H10$m1*m+e1VT@T!!p&jd@3*``QA!8L-$`UGj#Y"
+
+2#dabRLih$M2DBhT'Hf`U)dek!pi(hfd9EkS6`(faI)FrJfrbH9"2Y@kG#j`830+
+
+Pk'icr!aZN!"`CdX2*lk"Df4Z,HELJZP*K'VUiK8$CBL&J,04iXhd"Kb4!&l#dZ8
+
+95A'+Fi(@+f`%qT2Y4&@)83FSf45MRT0NPj1HPrK5K%kYIa,"-U8`%IdSL#G9lK(
+
+b9D+4+lR"eG$Cj@+DC%VP9)ae3Lk3!"&-A0J`RL@c@*8KQPm*@fB-G269ld(ePQT
+
+@b6@-108XEAm@6fSL+@F*!LRKSpX0'dhCYTDpl+mhUJmVDl!f%Up+R!X'8*4CC+a
+
+E8S3R4'B0-bdm(J5b9i+8C)kXhNHNcG`A@1N83@4,SKl8AmK833XS@Lmj42JDFa1
+
+BKe)99(j!9#aFj2M09&%d'hR'q"F#"'GJMl'k6EeALN$Y3V42%"6`f8%%1L5K)9r
+
+F4'RCEa69E+df)jiUe-`D4jS9(a%9N!!E&NYG0e!lqM9l8#PZM1r$IlNXKMGapb#
+
+LkZ`Y`'2-D@Z"c3[Vq*6A@%9hd)!m9B*hdU%0e#1G+l2ZZCC8BX4K4!d`ZJl&)51
+
+f8GN%%&9m*Aj6hBYj39dCM`U1a*VK#b1Q,il*U*+$eb"2K[`QBKcNJ&Q[T,r!C-(
+
+KBTkX81*Mr$N3%dALPq#Y(#ChaPSc63jm0K8&pdcD8ff9-#!JY%bi'[FVH#k5m[9
+
+8HhUeNr`"5mXVD-%N[eIE,8Kd+HB)hUT81kU5!pR&Uaid)ALE%"+LGd1-+TEM&&5
+
+mL%KG8*!!Ed$XFI1*RKXS0$aUMS63U(H0"LXk"Ii&kZaJphFr)DFFaFZ4hD5,(Q!
+
+3q'"emDPYLe%f#K2+bN#rY6EJLfc6U-f9q9k'K&P5KlrjF4C+ZJ3#5F0%,1*F4@%
+
+#)p[`-MIC6i`*R+U&S(#C)Q9)mi&rcGa[1%,iMAqehpBEN!"0d1UmQrL,",H'*F5
+
+R`U*PNcplc2NJSCl`5YVG4(V!,F"6H!i1#hP'eC2(YJ%Qir!E@"M`)"rMGrP-XYf
+
+,,jhKXjK5jfqXUBQ5,aXQV''))K"m+%XH&Ar'qKM!CCZ!T@U,J(MK"kQY%pZ%lLL
+
++&hb!k%+fdF,"135ijqE6!XSX8"9N`p$5eq9Hjh64'@06N!#"AL(*fk"H9#fccXR
+
+#9m1CaZKJ4a%2HdlYbBL[,LB&,j3f&4GP+&B(hk&i&ClNMY2KN!1)'J)RdpC93-!
+
+`-Sp"#"Im$Cd)Kik(@b8lf(JKi6(pK`0*h)`J*m4bXNGSKmfNiRX!GEDjCYE4m@)
+
+i#8HRqDTe$*1*5Ri%G5S9)b+R%!`LQ$UR5LpEXc`MG0ea*KdXJrR"[p9NKIm9UQA
+
+h-SFX8LH$PlKERU*2j0NQ0q+ZLhk((mr`(QbRB,$$%D(4EZCEXm(!h19a3mX$!'H
+
+Y%fQ2`qXel6N6*8J!+5[)LLVXQl5@JQ)1cH$M9(LqJb`KZ3-i!8lj3T1l%ImLQh#
+
+KL32(Il%Mm9GFE%J"j--hbm!*J"Q!BT2GIVQ,T!*ra0+J`3hA#Rq[S`J#!'M6'X0
+
+fq#$rJSr&'GpJ5*HlM,q5M@%(q9NKib!D4&Q0q`'9Sh)UMK4el,a4%F4R&!@hLPP
+
+$83M50UZMjR@FX-1*!5K-R5*5292U$1+@-*L"L)MDVZENJDIcKM4KGMqc@!#*)E`
+
+A[Ch`AB,X#fii,98qTXIa14H`h&4Xr!Mma[TfA#lG("`RI"jLb[aSh!rqkG)`@5k
+
+m)[`1ZZ,Ba3di)4Jpf,'a3aY2XG)H0ZS,Q(UEFpLr[mEG-BDmr+pVh"eM*SQqZFC
+
+DD"lMFk8k5`aGbUDlE#9k6XdaSR(#hKMfQ-I4Ip(YjYrk9m8'2,[`"!b#!4X&&cS
+
++D1,ZfY"3Cd$#BN*iqHLUI-%l`a`,DQR)0Bi[pq@P!m*UVVLq`TRJ&HUZ,kTr836
+
+#kiZc`bYBce#T'iA@ml-XM@jE[98+8"dGlfEAB(Nh0JK[TY$33G'0B)mFIk%RU[)
+
+jCRGJ-Q)cF&9ChF1!N!$#eqMDa3HSHJ1"p1jUBQ6c4S'I[!A19e%2)!fVa$(rmJ$
+
+@X+6KM@+Tf)PdK[Y()`!kL,U*[r%dXJ4H2c%"lepi#2f,U(6i!8UGk#RqaSRQEr!
+
+Gm3j5II!'DCDUC1GKjLrb*I`hAP0q0d43rBA2kKIF@16b')#eF"E!#8[28*XKlpM
+
+2$hqckeTrq6GUBe3Fd-'%Ja)@1da3Q2[SN!"i(Q6pfLFUCH`8q*,8lN",`[[%DMM
+
+b[ALAF*[S"A'4*I-9X"CT&!3QZ`H(IlHjN!$m$BF2rr*[&VYLQA!Ym`(qUrk6M4C
+
+'TYr+[q8CG4G5Xr%[E*T#%*5%#0rc4`EUU3IePhS2S5CfN3VCD!SK62f9q"qMh+"
+
+qSfUKIP(LMB)'$4HiUP`@8H!LTL9+1a!2m4J`L0qV03NBj36PRe&6dDrPq48%*VZ
+
+aR,9R%P)X2)*k8,**!!&*Ld$4%RdQ!XlKVD8J!!DV%P)UJDYK3ImYYFf-)#SRC*h
+
+KEb[Dr-dH-6l'Q%jb`*(QBk!"CSaUA*cRiLkS,C2!L2"&UECK2#XUa5GT(p$ZY4I
+
+RI"mU,KJ50-3@A6EU@lRPjfJ4U9kIX6ipkfI#-BmShf5IkBZF2#aNYEkUH0fkaqh
+
+XUAeS6pU$TGTKX)F6JFbedm#9BlYda2K-b`%edqXEH@GZ9'3,'HScQF5PS"bm"HK
+
+C(!%H(UiIAq*r`cC!J5P[#Bd@e#rM9fbAZT)CYi(D3U%"XLlk9jFF(i0"iNU)bF*
+
+e&rKkr-[E!3!@NTI-Ff'ejEccZ$D)5P-Z#kQ8DH43Z[KJ-HS%A5@$-9`-LQHPY3"
+
+RRP&URCcJI`JQ"CD'"j!!!RRTp$F&YGQHQ3p5Ye9B!h#BUI+Cpj4kKFr-M)hDjY-
+
+D9qHkCU3UG41P*c`DRK+Q!K[Pi(e6q#)kThrjN!#F2HijNB*J"6,1UAJ4'8Z`c#V
+
+fi95JdM&lE0SfR&#k`2M"$6q+Ac(Q,ifY@J$aiK!B3Z4C(#cp3eAk-(HNL$@NURM
+
+!DF[EMf@C0'f5D2QKjK#C*d&NAB,[3"Pb5TeeYBeJC`,6Ak#4`eAQ[6HcLK&m$'r
+
+RILBjiELl39iK3prjI&SH$S*$ILM+JGIT121%Fe@4Yf@!LSkc4,QB5KM)Qr"m)$m
+
+9lA1)AT!!Y*9(EilcScbRS9+Sb`A'bF0p$U+E'lr1Al#"1"Ud)A$R+Bh+iicMkKI
+
+a5H"j"ke3%8LI$HNc2N[MQ!P6@1`QdB--B!N(R@Im`Zh&5ZB[k'b0Tk%Br3ab!da
+
+`BCK8X'*B3KB0qmiZ35PUa[#9ZB*"M1A`hi#m3pbFk998j$-T-lIRF(r`0e@eM@1
+
+FD(bAY6,%G[XYrRUqKAT[fXF3$"*lb$JiEXq!E($0d)K#MSe"dUKG3AkB%6rFP4d
+
+LhE0Q%NU,L&`be"J9Q5-BZ&h$@X#FUVr1LHc1+i@q!$bf3CfNY)eH4#q!NNIR#'+
+
+F3TUY-HIkbYCM&pPcJ[h$SM#"Y)QD@PMRP0AdeQ#rNXk!AAec5%Ie1h(2P@e&pJ9
+
+H,ITeH06`1X4jiI-,qTUf*Pk&!!Llc,L`9&RNJa69&6q#PTa+Gr-MA$D0hi@[(2Q
+
+c03`)`d'bJGZPKa8hBldZKCT569aPL#6@K'&DC$k!e'$ihJ@cb-kK1)Th#bNEjMd
+
+`5*EcN!$Sk`),f-6rd(lKYc2jSGmf93H0BmR55-,HXYfDL#&S&&*[,EV4)E'kPFI
+
+j,'3$+[95)4Dq6FH684%S4Y8FBG$4lJ+43F'([HDC$1GFeAd'B@E!aS9%`X6!+F1
+
+&B"B&2Kfl0l"5$#2KYA-&k2J`U`lj,)0++T[$Upf()[q)RiB238`HkK,+LR&(H5b
+
+)6D5Yi[CCT#@J2c!KUK"X0[`&iAe49f(&8*M%%m%p9A-r!b'+pq&eE(T8*3m'+qh
+
+%0!e@'PZ[*iM6`,piK6KQeYb5Pi`C6I5S4GNNZ`[`QV"J96A-#3N89U&XET9%M$N
+
+M0jpLjA[,45SQSdX&b8RR@1%`jE2&LaD`RP&D$Tm&49LZMU2%ippU*L,2SIK+#Z+
+
+#qUc-j*Di*#c[8j'jX,*B-'q`&9AYUTSKUaJ`'%8AmA1LJJP+$Ii`26Rh@CR'"G%
+
+IHL)-0*L8D#EPM)[(VJ+@S*MV&QdPr*PqSSi!I$R*5"DV8R$J$NbHSP)1!ARY#Ia
+
+AP"E!df-kRQQE3!N9#4J@3HPQA#(4kdq0Ma&rUfX![H1cYTaM0qF,5PXpbeK(ieP
+
+JQ4A(CN5(S9Uc"32'#&ZN&!Uc$A-"`P+Hl5VXi$C3r!,EN9@AE$6Pke9G*#`@4B3
+
+#!%B81@kbh-A@-J0S(K`Lbe$YRf-&(`DRZRUS-!1KZifI9A888cSC%Z5"iXd2+!h
+
+V5KP%C%qY#N%j%KP5icSC*3@$S*r'8"iKQ`cHPFcN[,fZiFFSb3DYbU1X-93X3*i
+
+)F6ji'+YEl#*RCeK%G#F),+CaC*,c&bI9j2e$h9YIBL,-)0I'K00`kIC6)!IV)""
+
+#$3GKUKC9S9#TRj406aRp!#Q)!9#bbFQT6%@Kc4'$hPR["@[&m"F2+Vql42KN)MQ
+
+RNMB5`qSFD@&P%if4JIHj&8)b92@MBNXC9maI&)L%SHFQ5&H1EaN@P1$C)UY*1eS
+
+8FZbI8lq!11aNU3VYY$6V5NI&GH"H`-EXV`-G(4alkC65[q(S-e8%he"ZJ`+HQ9K
+
+Nj9p%&q-b4Zm5ZedC2YCG3E&!BU3a,qj'CQd#HkkN0KKRF6BG`h5!eD%Z[SkIU&X
+
+KIkB'2"hZFKJrIR'Xb`#6A+-BS9T9h4ZRfd&$bc&(h"$[53EaRkr9#RXjS8#!%AV
+
+0Id2&%,"GZUN-j%'89'`[V+!MT[+[QIKLVbjf3*a6"QBdJk23-I%K2%FB'UD`flA
+
+q!eAM34%lGM*4#kqZN[*p+1l3)[2-c`1d"B3l+M085ab8@IaJ2!,0J()CSSaLf-C
+
+Af'Lae*Ccj0'UbHa8M0D1-9(eB-NGKZ(2q4,8Na(G)(0dT`Vm"9R)KAP4qXNC9#G
+
+"bprbK2Pjk)MA$r)&6'1U[e@fbpFl23180kVj52P`9341TUedd35m8)98I#TQY2K
+
+K&L)"3bh$FQ3U6EbBR4iBE1'LCMF$hA#Crc`ZT*cNAN#G+(qdU"f1XJTG6B!r1Mb
+
+FZ(2LNq9mq,D*19BKZ,"Zr#al3T5X#V6baT3!m31pLJcGHDjG),3VCb(45[B9YZQ
+
+bpb!ekcD3!!d03`-PDr@kAZ[MAjDM`"XcR4Vq4E*8KMY1MYKIA!L$eZ!@'l9!S0F
+
+)Di&I)"9)4VB)9bK9JABFrfkUIri9Y9d"@8V8YY9N%Gm5IaFq'PpV9H*MTRV9icF
+
+Lr40PpTYbMfANUbJ3cB(U21,fCpbIraT3F`-CQ)ci%`)(E@QN+i#X1pr$r4$8#I1
+
+ji[#3!0bB%Mf!B6(&MbP[iH$J[2![ZdZb6I)hYABL3mGG5MJMQY#)%QQC3SXlpII
+
+!Ph#ZV&KXcb03e[E3+`'9JKZP&VmJh$iMFpfD0IRPI5&BcFYq8S3@H#S`+GA`i#c
+
+3IRHpMj2S2#"L4p'TL1i"cT(ND#jR4fi#(m'm%M1Sm0piQhAGTefkRKJhfb(X+T&
+
+'J2mL(SLrbSQ"Kj6,JA1'#D05#U&Z5h5N"a#N#mkS($'(Hh6d#",QSlI0RTQmHUT
+
+MP@A"6q$JR1I(Hl$TN!$VQY($iaFZ0UpIQdR+Bbj%-dp#18V9TAP#5F!)!hI&"6q
+
+KN!$jYb$a$IB"Im4p)$#@E4!S"Fc63rQN0LUk)YJe213S%L0eXMpF0*3ba(d2cRG
+
+SmX(Li@Ij#jdbD"PTCFUY-c$hj3NQ0(*RT*MiU4I$TQ3Jl889`aBURVT1KQl3LCP
+
+fj+@T2d9V3,413hEKT2"`R&KUFK[9NmkCX9'HR`*qD5ER9%kTDRPk#%3e16(9r$G
+
+M#$,8BL*5E*L5pji$NjR'HfmMLE)"0ZK8EX3j)H$K0U#`6*!!@+"Ybp[JQfY@#0`
+
+J6hGU!*ri@`%$b-ki85$TMI'[9l[B9DJSP!9L9GbZ'FkN',l8*Smc#eI+&6%q@!T
+
+i1RH+VBaq)%a$0B"UEJ`H3!cC4+hk@LB'B&`%Cb`DLFecjbi4H2L*m@q8ArLAM)I
+
+,i2HG%0#4k5-CE&+Jdf$D*T%MJ5hlZ5hqe-D64T)kNQK`*(kqJ2(i'EDp"0D$()@
+
+c5biD%Hb&icAQ&13N'M#Xq(Kb[-3kSYKK55',*E3lYR%Q*,UU,L$U%XfTKUq"lQ+
+
+V+5XZ'HQ'P1&Ir'B"P0+ABk4EB3Pi(GR`E+HUmf9Jk'T0F9c8i%Lc4AJVR#SlK"J
+
+0CbfXI+L`JqJV*#keqk`UiDY"Y(4T'-5!5c#MH8Pb"[Up91&Siihk',,1SBe+C@U
+
+-N!"K(ZJ$6iB6*F#%pXXcL6"Pm+UUfNR*Dm5D*'Z)HLA-if#1aAC&SSI')6k2T!5
+
+#iqU8%3NdSZ[%Ne"b2JDT1Q!'5c!"4R!`!5K`5&"-!@dM3FZJG#1(K'hN$1)hc!8
+
+N$qS[,l%I94!*6eP"1K#emZFC,5#KRA"Pj`c+F,5%!$U$!`9Y+P!&*[#BP@(SLSN
+
+B$0M&*[LG'@2MF("![2-EE[Z3!*b%D2mY,Y%[mXV$M82+"63HrX)c$-p*6&3D$hR
+
+V%5B)88PAND)53p5K8$K2G`lU5$kL9P`h9F4K#Sm)4P*X+ZK,TNm[qi@[eK*"3MR
+
+D*D+%EBZ666V0'T!!P(6-j,8L3*!!)0hd)13bdL`mUp!(G3rMm5lXK6Ncjc$G%Q`
+
+m,d&9EKTe$&j1eR5hEJ)[`"P+I)qLQF`%`hid&*pd1XmfUeF`(3&TBQV"8kc5C"0
+
+"m$eRQ*U)hRNE!4-K2'FR6q)K+KKYf2ZZYc$Er$PPYLb!McZ3!+S&R%%BVBl!6c[
+
+%%L,eGlVL@4JK1&&Q3T@()Uc%+!E'X!PmTqN$&VDbhmCQF&[)&UE,XKl!D')mFD0
+
+L`AhC[6X!G4)#%a5,Ej!!bCN)VF#D2E%@X@a2I!(*AXe[j+rJB2+MIJeIqAbCDAD
+
+A1b)2JGCBKb$B`J2RKdG8iJF4#,DMb*'IBd(jL)&H"-)K'LE3EDT1Mm*#U9MrMI*
+
+p&rh`9jS4PE)C4jAPFmD9T4p-IKI9ELX'9%Zir5YP!$@KEH$NU1@6F)Y%`!3")+A
+
+'4Kc@r[YAaKZKfr`VAUpi)m%!p()SQDcMBbSCFXi*$,bHMd8H)e%f`QK'4l5"SB6
+
+dk9q4+%'%"GHE'DcBhK+Gq,+ie,fP3HrpPq*5pjB+f[L[aDAq@"5UrUfie,fPLKG
+
+m8&bDDr1`Y64,5aRArlbee0rdS,88hr&9EHRlVD9+ThaC@rTqDqRN,l@PllH@6[j
+
+5@rUSY96-C0'-Q1[jIQ[Tqk@Pl$EqE@[Tqk@P+NEiXVAdrG*5'(9IYCDqAeUUQV!
+
+[@d[I,bh&MLbDilaa$eT,hbmY"3,#9kfPljH@dT,pE@[Tqk@Pe)h,eY*-%"qePVj
+
+I@UTbVbpE5pm[,59Ce'pE5pm[,B@$rP9VkIZPTF5rq'eVU8Y,)9Uldrc[TDAC@BU
+
+Xa&p,5l1c0%*0re9DQTfPD[(q5fPTGTCL4rjD@TT+PL4N[bdYcH1p+LeP`1AVeY+
+
+(TDA%"IZkYI4KDDRkbEpS,AA2$ek+kSb8K(pX,FdQ5pcL[lD@CQNTa[MAeY)X,@9
+
+'p0[@dL`YK66mDfYTPTDLaHH[VD9C@LTrrG2@dQkeDfYTPTEL1rlD@TUPTB4&qlD
+
+e0%Y,d9(cepE5,#h&42lD@TSD$Yd1AlD@&Md-*`Z6K3%2CFdb1&m4*'GCQL9hIr%
+
+#I"HHIKlH1kR[a8Q+Vd,UF8Y&GH-k2DLdEQ@V4`%@Zc9,!9B0J916$IeA%eq!"Bh
+
+L#U`CrmCkcRhYeD,eL[q5-T8f1IkL)'B!Fp*e%%1efC1!X131C1'!k"fQM2Ri-p(
+
+9KQiYrXEMbErPCB'AD))Y82-TFM4X1m@AFalq'em+QBGYJS[2Lq9@6C4iNU,#1&d
+
+3[kK*FX')Zqq`)0pd8L,'rEH'@(G5)YchYiCBQeB`E[l@%'X,(-!JIfZ)G9HP'MY
+
+(!4TLNF04KG[[ff(jmC1I"QL(j@q6R`CSKa9j`'IYX'[@brKH1bc,BDQL4J$DBI&
+
+*8f(VrDdGPRr"82Tp1bb(2A(j1XbDhmIGk+HYF!lP%$mN4Sk2`TaiER8'0AbMVZ!
+
+I9UAK-r"5$&26CY8D4XZLSMTXHa(aY0qchQN3JBFjI5-@STILHFM1YTR!iIP#04#
+
+'pVM+pYp9!b6m5CAY[kX'0+UG90RqHj-Y,+@6+YYrEl,&'6ZTX[fdbEE[N9ic6Le
+
+8G0'E6V5)FNPfM$-lFUbXaK0M)'22+Y2(3i#'(9kq,!(06hbr+4GbGeQ9UeHE!Z`
+
+-cS@c3rD*Zr')LaI6TBlB313"IrM1`RrV0(Em#fNKdk9L9qDrDc$KSZ%$2@%60NB
+
+Ne5IEhA"1iPr%,e$TTD!IkHfJDjJ%hd&2'%3hM8Pj)q*d`Y-!kcNR"(FqU1ZN"qP
+
+kk'U3!$0c8iaiU'I&Am0[G%*3c)VIX,6m-hldElNAdIM#d"-3ciI0Qc60b2LQDML
+
+EKY'CpQR9-$S"RITpVfHBFE4r,4VqU'HBr#$r@M6m8Fm`NZ5I&`ere$-Xk,h2LSB
+
+rk"RZ[*ESchfrCrKac6#V1,lS'AjF-i`2qE*Rq((0m16IHiBIe`a2rL3a([3-2ki
+
+C4XVbbjlKacA$l06rSQIiFFd`PZh,RZ((0F--V(r4-rbiCTM88erd$$qZ'8BqIGN
+
+c$*LXphU'(pF-&j[eNjlKacA$dTfIpJahaJYFqMmGQq@Y)FB2MNhdaC4M)aCVCDr
+
+8(VNi0HA[GQXQIcSfXX[JII-P[Jk#2c3q9'Qd9RL+YiE(ChPX&%'*hVqm8+*ABZQ
+
+9ZcM`N@VHC+-+63(aSm(R8**'15VRJbPp9F$#29#Q5N$p+JIN-c0B*Sb2#@e,h4*
+
+#G*XTci,#@SA#e'1%2PI,-CeN%kF*$P*YMmS9a-(#[90##lSpULd4bL$BRXe9Z3R
+
+F@JAGDCrJBR&rq)4@%SC(N!#a3Y#SX`Up-LS"S9RU5TqG"X8`P)k)!N'RU(biC)k
+
+mGdXHU&`P!ILA+c`a%G)cEA[iNhS156`)0MC&&e[kS$Z*EM+KEFm@8YQhp5J+`h&
+
+,iQS,*2`S$YTJPi9%UkTANGKTTe$*!hi3JpQShUi'+lB#Ih-(i$'`@BGRQ2T3TeK
+
+4V2VA(&qc"BFAaJ@K&q!Ed4p'Q`K$CJM!dUaJ@3[Ka1F)Ql*pQhm(3b2h"pYKG84
+
+8-8N'@,cC-Ta5ldmPhq`r$eVN[jCm%aJ9KYmB3-Nh$a)8qaK!bEFSBk(X4`"+[NQ
+
+HLS-i%P$bM4K5&J2r@m-h6[9B3--hdJH,KQrmdpQ*TZU(EGEELDV*dTF`[`FKX%@
+
+8P10kEfi4)SNf(2dV&TQlcZ`KF,S`9G88maN6ep2CKYa3@-jR#0STb`$&FiB%(32
+
+#464Mae"!l"TbZEF3HpdaG0lKhbV,h9K1N!#$re0ClNjbZH0rV5ahBlR)BrjD@Hj
+
+QFKHArkDb(%N[8eVfIH@eVT`PB[qlVlc@PD1(k#ppjE@Z(&Vr,hhPYDiFXBqrp*A
+
+AZR)YfhrePGHkFVEfrZqqmPTA2[PcAcP+3CldPGHkm[!-rYaAAZ[+8HhrPllb@PF
+
+1LSZrp*AAZR)'8IjhAhQY+mIfrk'[R-5k9F)%GB%DM*Z)%3Jb,LjPM2B1eU4Ura9
+
+"cppj9rX(q,Z%#be40AC5HfLrQ0IPI,R-Uprj)H8"9cj)M9$hX"X!fJJlcCS)r)k
+
+H!cJ)%'piKRZJUiXc468#XHM,a,1S`NmbbL)NSi*!kJmD2Vhq`0%d+MGV'U*AJpA
+
+Raa8E#LML&dJL&!la9cV!BTPR%'SAU`H(#`**m8"))0CUdeq`c9BDh2'bji'3!$0
+
+MeC391kUIm&Hd!ckSMXG%hZq1rkSkAJ8H$l[M[kU19d2f`qliVkVMaD,bX$Yq84e
+
+[F[F(2EcXrRk[12jh[I%`bam@arqZ0elfd)2Lq0reaX-H+YAJ,UZebI2liRK-0T[
+
+MreSFcqaZ0-IrY6JHD%EC(2pPF6a16e4'+[(dAmAaNfecr&q,im%LNFhaIbf1ac(
+
+-j[Kr+ikh"HJBIEX1IbL1ViAarkFiRUfFeKVrTcJH1k'I&2Iq5h%m3123fYI842'
+
+c2kjP(eVCUH$rXjCpD'@(@IrR@[DKPAhbrpDb$khX+'RrFbhld-V1TIh2@[DKPCd
+
+pDJpVf@N``iGp(b@#$8E4c1k%a6I9l,@F'J"p[kPQp`NqUQD[cHa#Z2U[D[CSCUp
+
+R(jD#U'GrembHaH``h2lDc*l&l2"YrpV-cP9#kedYCNG`lFr&l0k)NC0LGN"rMNm
+
+8XkIm(*FTCLmYQ+-[aHbq$H-4aHbi@f-iaH`QlKVK+'D(L"bK+'Ehp4Y(+@BhV,r
+
+d0'`[eXM3ZM-GL3dIq1,U8N2[NVMfm5ZE'c"dU$`4&$Q4`aXTEi(SkH61ChU(lLd
+
+R6iJN[i&2QiPq!ldedM!bFbJ9X5#m--,Ke[h"diSR-qT&4i6eiBaN)8+-UR"85XN
+
+DdR!Jf$F4J-2VcU)4Qbq6dQH89T&laT)8HQ"$-*B&Lh31HDicTY+d)R43e@I$R8+
+
+d5mP92CAET#!Bb`&8UXeRZD%XM'NV&E95C[d1di,Va,-D$B&+DkK&J(CKr-hGb#B
+
+mCR8$ccYDErJDrD@-$F38FhlmpB)+YjMCjLjj8N5rJ`,28JZD&UUBCjZF#NE9pAX
+
+@+4dXh*`U(V[KY*+56B`Sk5NN@M"mI+%"bI83[$Lr$"2#4iUa'(+'0i5fYG`K0Gi
+
+$rf9eD-C*6LVr3U3ERmE5BX8D-"Y$fS+j"`H!0j-bQ8NhAMT,EjDcNfLFZiq9!!N
+
+lEa&fJ-[-H%i`d--I9Ki*YQTSG26CPTALpdC*#MaV'$6bDj8,LETVj(a8aFLE'U$
+
+Ik*jK9STdX'M2jTI1H)-`jkj,Qrq@hr"d[%'r425#AE1b)-5!A'UeG8+LN4V'M,q
+
+B[lL"JEra-c@,ED&C'e0D#@$CKbc9MU*rHJ!)+5*%mL9#`KdJ*0c*mDbhUd")Z)-
+
+rp6Al9`J6#$BGB38D'UBMN!"a3PYRP`r"bpJZ)r%KjJ-U$U6aSB8K-R(bI0Ej3Xi
+
+jmr3Xf(,T!Zd4pP1jMPSANQF0ES3$4J+DJQAX*QLF#ZTmPKD`#PQb@b%aHK'd42%
+
+I@mS`X9hS'XMB#peKYBlSjU5[+Q2D29ajm@5,U8"0$j`J6#6mJLFTN!"9G!jKNHh
+
+&G)1JKr!%H9C9)-R*F&E10ZmLd)q2jGNV3i)U3hiH)i*ARV@U+,E5N!#i[DaCQP@
+
+'ENUcTk2I51E**[#B,NMiF8ad36NQMdJ(8#i!$UbG+Xk'km-J!ii(kB$D+*K1b9e
+
+C$L,R-0N0)VBH"53HKI)m-V-`%2N[bJ[MU*@p4pjGLBZce%&Z*B9Fb'8+LPdB+`D
+
+*i!AM"h"ilV+Pc85bq0`[a#MYPP*&8jUi@@@hDehl,,,VlS%+JY3Yk2+IA$[U0I5
+
+ii['e#X%9bXLTiIN*q(V0ID1(ZEYD'EB(&5!MN!"iVBNAD,f+H3'A'Ld%k'R#Ae!
+
+FDUf"jh2bBT4lqeHqP@r!)p!TCmMd4a4fh#6%#h(SN!"8i0qLrPC5(jH('ihai(H
+
+QC(9Q&00%SkSm@Va0dBe!5SGG-e2h&#2H8R`3E2jGD"'JX0#[6,[)E-E-@GbPhPG
+
+NQr$pL+@J4!-*"YNB#UlL@cd&!@0J#ZiDJ`F,MjC6`&$p@6%%qYAGGpA2-Zm!HYA
+
+j@9JE[&3f-cZd)h'[+3)Y!iGf(9FI)M&fJCIAMhX+1"Ua#cM$q$"4Ur2jQ!+F0rq
+
+q$NZ#4@k`4HEG,TD+PYUj2kej0*lbL("M)D$e&Z`l,%)mMh`,Y#@(LVmK6[JU8-X
+
+M--[r%Ae&e3-'X`2B#f`h'0Q*V+'#3TVK20qb3-Pf32R+h"Sq(FGDp"#mJ,+jABa
+
+INiZm8'(mqZlJXc1lbfi8Z",+SE(SCE[,hr',Rm(1P*IjaE$p-&[R(2@AfSm4a&#
+
+U3"2J*+Jj('cc`-V`8(EKJA+`#+'M5@&+[3!$%IrM1jKriIpiYpUYm&@BT[lb&a,
+
+$AR&#SZ*M(#S*9lH5$9K#qf2IB#&cDc"22+"(0r2Ak*AF2bi1EkELZK$-P5V!j"9
+
+F(!+0JCJqec5@&EXdllMCFF6U(#@rL#,Q2T!!JZMJhm)1`BDSB4*P,r6!fCE03"a
+
+D4CLh)K3lBl6mC3faHEa@S!U-0XJkj5Ik0iN42XMAp#mZ(e-r8(BGhaT6D&040lQ
+
+cCP`'mMCJhGPeV-QHqhXeXcTcE,2[lpaRC`lkIiIJ@ZGJi$NdJe3+BU!lF#!II[Z
+
+a))+mmUG-X)R`*2%dq,3d*p)SU0*E6!TU3b@SJ5iC6%hmbrZ'iQMmUf)$Nhh!!r-
+
+2(IL(rUlide(FCh)&IBEi&H4339#BlS-I)LRPRbX##25(Q8&mIr!-GBFq3q*,R`(
+
+C&H`IB-6c$`XB%0H`'2JMlhSHl5k6,rF-,M`+mX(SImBYYr`!&l5Ae*GD223,0Cb
+
+$Qb+d`0pdB+)8r`b5j3)!J@XS!"$-eUhi[!`UK")"3E5r3S"`Zp!m`,rKZ6#F`Gp
+
+C)UpAj`[V4cKc41@I[cNiLV-1-c0cpC`0*6`J#Kd#lNESXFTIN!$AJhMEZ@DrflA
+
+6CPN!$8&EJPi*cjRSEbRVQ6,#c@&E,Hm9%h@`6*KL#2L9@EN23EhY[NCfSR,+%6)
+
+M**M+#IMe"[r-@!E22J0XQ%S38JGP!2r'ic,bA-6XB,R+)i5kcA3,PNGK8%+m-2%
+
+b,50FTC--cmb[CajC$Lkk1*5J8ik1-MDF4[l-Mq$jiLPMi4'H-T20MJ9SehMB#"#
+
+"rkQ5`IFDV"864dk$mRjA)3L*JTqQfRaCLV-+VZ)F+[kpp@"U"%G%#m*i,TDABXX
+
+'N!$Dh)%hS`JK4"[,lahJFEGmmS[BX$P,Z#p$`%KXL0iPTicF*Z322K"+3RNXP82
+
+BPr*#FJKi"`C`RVcNq"aN)0Jba#Q`AiJ4BDK@G4%C4S@qMI2[A&lcaJ6i!b-rH#2
+
+F%#rTA-`er%cb`+MeJUZ$VF2JiHMbZkAKa#$"hJ2PJT9"!N-"29!lJGLRFrNqi8X
+
+--#11'fNB8F[3&VG``85CaGV!NQjJ@-"6S@*KKL,d0p`*Ad!i+0,R,+eK&H1@4!R
+
+0*,B35p&cpG063)#*ia"e"8@IIN(1BBTESA)YqiCXDD#h#`m0pTGa,h!8d!'$K1T
+
+C$"&U$AZJ@39RKqPe@#SIL5`H,qSeCMEjc8b`1*h[0*d&M0PNUS)4+)i8M',EqA'
+
+ZR%"6M4,F'"abiLb5i*hdcG3jBS8d9Kc-&T455!T!Ej,iMZ3QdC1TL#6@4b`3CTA
+
+aXI9ZVd1+N!"i!aqr@(+q9a&+4b99MD@6K1NKVpRffpGI6,)@0DUJFHX$[dI4$QG
+
+8m4hm!V@%bVH$5Z14BbkIfJf("1B-qq)J'p2iPdDfp!rJ"JY,%@TJkLNXQd48f(-
+
+L3k&X'$rDD#RX`Z#1B6[BRiVE5FRJ[G*DDB@%ZiEPSL12R$IYEfXFilC)6iSPJLH
+
+*mr,4ji0dFpL4`Db'rp++JrQ"-BjckP%843f2*NA@dFh%KBT,*I#4U!$L[Q-V@-N
+
+R#F(&RBYr3K+(dX"H"N`&V!Z`82)`1If60"X@91,@d-hPlHA*G8LBpJ#VFDcrfAE
+
+1c#"qPc2&Ai%DSp3J%UbQfN!!'2EpQ@lI+bL9GQBTINMd@%4G'jikY4dJAj*5#SY
+
+)bL1#,%"AmC45,pSJN92!XK)bGH,VA&&XhH9dT93fr(6d"Z$#3SK5'(MlN!"laqT
+
+6PK1ca*@#TN2aSNITNX3m6`+1%bql*SJB1E-"9RiF*q%e+1,G"d"&CHBQr+AU"QS
+
+AI!*Hjm2S3N4HE(kB!LfKI+#`F,XTeqKLXUSAGb@$T1l3i*M9ZL+r()2&$M'6`9[
+
+0XmR@&GA2""M4qaI&1qRk9%X2$-3UK)V!m"hC'+)EkEq9XI5NHCr*h8(rJdXGdQS
+
+,Y66@'UBHJM8@Kc-UmH5jQV''4T!!TmPXS,DHf@XkJr6i@*SCa`+eD5iTTC54*%q
+
+D!,%`53IK(&Vh4J9*`@9AE-9H'FqHicFLcR!*LXNcF'Vi0aGDM#e@E46p#Y#chaR
+
+h5&Q+i6Cri[8jVj2[JTRqN6%)(h-(4hARRli[-KP((qM(eDjTh"U'3r"FG6[$jk6
+
+IU9J@AT&'Tddj[JAapKb$be!SEQ8#-@pMieEd&Y)jc0QV#K1lliS-VL"qSaUP*FI
+
+b$AV`T)UKMU&lJm&4RR-cKDJ%EieA$RI@jJH[*VHD6Urp5X&+i9Gfqh0K'3Uh*)P
+
+')f%,m'rH#45&Q0c,rl,Fa"U&ri,(&AeUCiD9lP2`UL'c!0G9e"lB+re&MSri$5T
+
+VLr`e4#qJ9`5rASNPNL&!LqJh"[Va1[dQ4#KP3BAL!39$haqr`mlJ!fSU8qE5C#$
+
+jLhK`9&##lfDB%Vqie`X0ep!*cRpJrLLZBE@TZ8p3IUhZP[K&(kCDB`C"%-6&,b+
+
+SC#J)`h4p#hpK!*AG'0RL#AG`eXG@`*rI!#J$!b2U[%HP[&YQXZ%&c405[8Ba8EN
+
+[F%(9KBK2Bam)QRIGBX0X&Y%CA(qSVLd8YE-hcaAjI)l2mce-","6-6k!lVmDS94
+
+TMpZ!8)9!Gp`dcC!!(ID"hkihi-CdRik1"'SZp+EM1pcjKDmfMa2Z"Al"SBcIXFp
+
+kccD#`-E'a#I`hF+(SSB)l"CE'DS`1%1#(mj!6")cG-pMEl!p$*%ak%"M#09I+52
+
+%E*)a`$AQc`A'a+JJMMk106GEQ6a1Nc%)*!PjA(%+eC4"Ee98@rK&#,md2(d-H#(
+
+9hSXNBD3hfGc)Ddmk+6!!U"--[p$kdVRKm(#R!Sj8MdSbZ29+L"p3"0Pma@XSB3@
+
+(3C%@1"ci,(iqfjeB1S0K+r',alIBkdT94YA'+dkeSD5bQc`$*-#MTY@!Aj3aQ5-
+
+2!D['Hi&r-E5#lBE$UJ)a,T66h(2Glr1e#MCZ1&28NP!M[&15iA'Re&$-IV%i8mV
+
+aUB0rq&G9c+cZ4kNqG*E`,r!KP&XbYcI9!`l5#I`'Ec+H4Ymq"B&b2CLRlX[8Jc(
+
+`aS!TZ#0Pi-EVEL@qMaAjYYd9eAQUIB5A3*GPNh-Q-!6G2ZHL%5T666*R5`G+N!!
+
+!2,3mXDKlj4MQP)!!IH'Sm$qfPVr3F5D02*-@k$kPQ84$`M9Q8)D8+8SXq'Qr"kp
+
+Q%5ej0E$3NIr%ada`9Y!cbBIT'q&Vp4GHl,2,5A!LKM"6CT@$C("#6(#B,U$GA[K
+
+0`DGG3f@`@a4M+,[,9F'"CZaE!S*R(&mR3D(jEKP5Qb3Y4`aA!11Aqaf`9`,K+"-
+
+Qp"@IiT6MeD,`S)*%9iL)"1!-'h&QK[mmUc2l'qq6&$IH-@&G)6i(*FjE!df$Z'b
+
+f&F,rp1QcMcq(aC'A(Sa9q#eX,-&%UDmD4ebRRV3fJDf&JGG,cmb-,ceE,AhTi6e
+
+ePcl+l"$+eYDkpqp-5D(m5Yq"6J5eC(0UZ#8mcdd"m00mrI@AFR3`@23Sp'eFH2C
+
+eiIdH+AlRF#eT2'LRb4LRC5T9!JJf"@D&j-Pj3!IJU2(DFid8UP!E[Lkq64qiK,l
+
+lFpj$&G$'%&@XMa9a0BNb'j31D[%J&"q&)2)`E#G@e!2e0%&jJUGf$#Z!eJ2Ib`q
+
+$Q9@rE)B6T61mSFrf48!0J4K&(2&3Jj@lf-[0@-IeaSE!$9hAHc&3@p"iL@B3r3B
+
+'iH%PbARCB1!%+C)aR'hD'DTPTDJR5BEr0f@(kVdJ[#VL9f!@)Im+9BKrkBkGlk1
+
+G#3TE4JC1))id[a2b30i@S$KBpS@jmbQ+I,aYfL9R)'a&PGl+R8MI3UP(0'd3G#C
+
+ri@f'H+)MNB++[q*dj#r)TfrJ)h,K'(,&UZ9Z1(("+)M@EIk8m"f*lPIh"6krVLF
+
+6d5LK`l@LTF9Q)M(*3!jX%X!+amYE3X!26%FG!X*FLX`k+hPde'PdRB'lcei3Kp6
+
+CSf6K#i0#HA#'*AJLd'G,SqjF'r[#(!Dq&,qTkBMEULGCl`5r'ZN-28`($#Bm65!
+
+&S[$TDYH&DXPI)$k-jB'3!%Xq%a`HYYF%iU%IR8r8+b#mPAd@BTq,Mi2$`r3GrHq
+
+Xd#-G'9DE$jf4Gm(Am1%dL4J*C2b%IJTc+qSTSDR-[((S"@cS@446F(-fQ5A9jLL
+
+bMrr3qV"EB3FX2!#9(Q&Y@0HQFJ%8NN*5DR8J1@Hi,E"AB&CJ`eQq*&C#HJ'X*8(
+
+6R))9mBZUPId,h'Am)N`hpp,4#@DYGe688Fck9j5#Lk[-j)@8rp*A@PaD4M`KiJI
+
+$F4#r)aTVX2hE+YeL3)@#QK@A1!,dV#Jj3hbD9)rj)PVeU[Y6DCZLY*Y%i)!YXPY
+
+jN!!1c,LjK-%3@*5&[,hm9a*43BiXCmMZ!e9+L+r!(%HZ@T%[a#j[&dJ%UcpQVL0
+
+RVJRp(C4Tq)@T#N*f#*L$[PX36m"Fi`5#D!*ZR&*KXLDPf,!&d'Ea,0dGJ9FV!!#
+
+jS,*,hX,b5BSq`Sl4QD*q&jTIrL*f1q-2LVb-CA%9QN-e0fKrC6"Bj'h""L$,H0J
+
+,QAkU4!RR+"G*A'%XFX#4YfI%Y4ZdSh"H1Xr)PT%)-"HH%H3C8"4FV#AIL&1R&k%
+
+F8'GZd[-)5j0'MCa%'Q#d*ENJ2M%k1eJ3b9SBQZSMGI51SK6LKYem@5%pX4G!V#!
+
+e9pb5IlmNk)B2T`'A4+[%dC!!e@&a6A3H-+EZKSMdQ%iK$KikV-Y$Z#Cj393@i4J
+
+YeX1-3%N-4G2+&k@l*`3edE(KrI$,iU,)pDQIa1e5X%G$aHfJUk"5-EGE6dL+)+K
+
+e%e[[B'(j,9TL'i(i!&dS-ABTL-@N%Km63ajX&aDIUc"FQl&Zd5KY$0!Vh,JQd8U
+
+"M%rcqFPD2AQ5-Ka`BT!!')DU@9F$S)i'@`63qi1["6U5"$Gb5R3m#IG#35(!3ST
+
+1["9"#D(!d)L80[B2jS54Dl9,[B[01qIU(I+HZ4E@0bh[Q5J`H%A+2F0AfPGAD3(
+
+r,FiR"EU)*ZC8mNc*mfqFCaN21PjJ-5Y-2rj5HQUU)f'b609UCY2MI523(Yp82P8
+
+d&A)+eP$%MrJq,!A-DB[R83*%&"eV5$fR(m-VDhI!86QXPC'Qm&(ka6EGf5i6-E6
+
+LN!!rSpa5R`Zh9ddMkEUiQj+q$E`C)p4aNa4XB4L#)X%`'qICq+TI9+IXk!AHcSK
+
+FF!Jk@Q5X21IA+534T465Ne`c-@l4'-0AZ(R!G"MZL1@"+Vm5Q#lD"+0M%)"583+
+
+H[CYbeY3S)B0F(G+8eX,C-*iM$K@2Y,*r3YA%fkBSZI&j`*9eJ8q8$A)q(+*rj6c
+
+FDLKV!B3m"!Jde#*q`m&PKiFcUkSTj4J)&Z9Z'H%J4+qe44F&M8@AqR@8B*6,LaA
+
+"1dJXjFBffAXbXNNe4EQ&VpAY8N*$f"SN5X&20Rd9CX9cb'6LTI4q5E#"1d%QSc5
+
+p#M3"&Jrf((2dCbda8+`i@aCS1HQp1,N@c6ZN)*!!Scfc9$h@#@eJDSZdA"A`"IF
+
+F1!8ZET0m8,1,Q&R`U%QPX"+-1,-FMr1fI)LZ#rDdU@F4Zbfb4Ta8Gh(#4I"CX`&
+
+CGCp--D`UY6+2"3BSq#fQkU'3!2#J*L[N,2Rd,%3daadYI6IZDAimCVkaL("iRSb
+
+*'Z4(5*ekLHVkS#hN*+XBAXD@QZDKVHMH-!c!kG+6)[U#Z9(j"R`JNc$dZ2LJZb9
+
+%AX9Ie6MKY3L`2(@XbH5#23q0bBS!R0Lcf!S5c')Lc#lB`0*IX(h+Ac#[X64`Ald
+
+dkY[M*V#)MJ%(4`'N(`-K*`k!8&m9p`%Fa)kPd5#-9AA!c#GI4TBC6"qN%PSZ5"K
+
+++,6UFIHdAAJlM8iq`AdMm`h8lJ8kAhb'bJ@lYS1YJCQT5Mq'[hRQi4H#[i,IaAe
+
+6eQX'LK"XRTr`U4+!$1i+`b))liB(EkQ'*r!HM!Qe),)lceNXN!##$T%EeG3b%B*
+
+M5qQ-'RLdpm$r8a6l(!,Q%00mBPY2c0',4AB"RSN0!bdiLdI`4A`#H6%BLJjGUd"
+
+,@$ZU[@8jMcS5i91M-#p5F$MfBJ!$F)@i-b5IS%LCI@8K##UGq!XK0fL`RDh$bqF
+
+DEc*dU3BR,$#j*P@Q6'Z"EL-PQXijTUlDV@LMB2-[9pJKT#Mq3m&"('9bar%U3qi
+
+LF'FM9Nf+D-(R29E0(PX6)264UFKDD,(I"X+(11Aa'R,DFI[9(iQl'V'3!22iU(J
+
+'UkF)DaiV1hEqaBP$h$6a$mbTD*%j&2DDf2rS%N!$m13,0`-RLMTLV@&f22pLNSV
+
+4`Zi*J-e3a*4(1#Vi'ThA)a5P,8HLSBQS$jq)F1'L-F*&X"PXR3PU[(D59+M&V[H
+
+91kL5k-c`L"F!Gml0E[BI%$j`UJ%Vl@`ppNClKdARSI4[R#2rCPTIqaK0VPaRXH'
+
+TJSARM'T"1XQVbR"%'10`FUPfq"3R$YG)cq%&f!0Y)kkJU$ASCq"$SCQB-''fjc`
+
+51p6bH#rP&i$Lm#X*Al#mP(pk5YXIECDc'Ka)q&@a$"+k"JCM8Sma4C1RKD%KNNC
+
+Lq$+cVl3iLhfF&NF`LlD*#r9R+1@Kq'9Y*!5)q'@*!f`IPA8BL32XChab!`eii09
+
+dXBKH',mJ0B"Ij0ZJ*Be*@YDE3EEJeTRjelr!lF88e,DjMP2TI@2R#Qd2%fDbS8!
+
+K*(35q3RiD@akCA&V4-8CJX22TVJdLDj6'&08PE)cB0DLX8P)0`6,m(G3j%5266b
+
+(&K)JS5(ilR"bH4YAjm(EZ04i'D"ANI1Pl#,MQm,2q!A&#%`pPhp4NF81-66MlqU
+
+Q"e4#GNHa(JVAd+$)I&b&&'b'`MIc)m(r`BLpE"j5,@59$Y4!D6%Y96UXTR!RNFV
+
+CX4L"E`0IKY+j!pl&M-9SPpA(@A50Bi82K918J5&&BL-IjRrGqT)@RY,KQ+,dQ"h
+
+r$9$L#@a`"T!!#mk$A3"iP+!IUS1"@5J56YiYq$8G1$9q-mN)aSQ%b5l%)UJ6e'[
+
+&YeJ#-Q1Z6LAZ(RNZq1D+XXTI',fhSHe[-FUUQL"8EAp'[6RL!U*RLdGF,FV,*,4
+
+QqHhLKcE%+S`9rKEJcD,j5[jQ%ir5S03DS[P#UAEi$qI3PXp59PZRUYc`G!4E3!H
+
+BL4AH&MAFQ'YUbYJd`AVSFEQLfPkPHbliPBkJX)P#[92JfE&(V&[S)YHX8e)[&KR
+
+"e'l"Pe-@Fdq6SX1YJ6K8M,@6@N-"IeEqi-9#V0#5Zf'Ka)AXk5QA3pKH@@Y3fM%
+
+KE4`JV9Ie8e1hdVV0*-,LGH*')f16!FScC"))U!h1(0r"LaHGA0aREM"V!5`ABJ(
+
+8edJV"4)KIYF)M3QY'UN%KY"YjVLM[iq[#AaRk3Yp4'350A0NY2`,8T@Bc-5DG%V
+
+C9TB+C`-26jA$QQ[DCK$RDCZAG@-+F5rlaR6KhC!!JIHi6mRGBaS36JfhQJkYqNZ
+
+8bd6,TqZ[&-ablJerDl9&i"1e$I!0[08U2USll3h(a)RGSK@2"9FBb%8cG3G&h+b
+
+`K'18dbUfqVcIDM'XZ,FR)8[`Ppp,%Y3-@c"Y`e'l)Mk``V3eNRfUqGe&NP-C[PS
+
+(k`E@1E`3QDf8(QarKI%0@MZCp1VUC-X4)XK+3BJP!4NBNQHTI$PiRfK9X50%)'e
+
+iMjaTV5"G@a%A"D0A9-!a2B*l,5aEDLlq)Z[ElL3h&VhEXLE%*)5rU02di8U`dm9
+
+5f"$Z-pQMZ'HL%h1pSP+ad2e%JiJX,4UYm%&XeaDQPSi#iUlZ&c9AL#THR4GaRS#
+
+#QCX89TKJ6bdEB*%468c@@$i[T#5qHE-!'aNrZLiUIAUZVfeklD!mcm4[B9,CYM4
+
+Y"r"Nb1fFpJ[5dKrU088lH!@Yer$kd'XUdG-[018`-f`fdk25E!kPU@F3Cmf9PBc
+
+KPLLi5#e8AQ`RJ$BhEQm1a(M)qHm4"cC`''*X%LAGf&5&brKYZ)3m@ILiFeDZ3Z!
+
+%jFLb%)I#&L)lIr@6VX9%@JQH0FBB"Cl'Rq8TNGZ!K!%p()%KSCZESc69JMj$fSk
+
+h(MZ$hB4hJ(X!R5V&lTS,"9(@Ql#p0M!H(X9(ZkJ3*qmS5D"Rr0'XSfkX%[)`0)$
+
+TRPP$KKBdZ6hfHCK#B)Z+QH)*rk&D9UbVSqXClQ$k@TP$-A5*cTdAMDZJSMRDCHY
+
+jeK*-&r`&c#NZ-R!1NVN3"q1aer$8T*!!@C!!m@Lfp'iJ"'0PTH2KNI%HD'A4dDZ
+
+m#H%r%S#Cq!'q5FCVB%qc,a-FDhiQ(r#"NQZ[5%Nb#p$MQ,2(58#Ma'M!Hh!4R81
+
+4+0k#F8k+BH)rdIr5@3XAf6fm[!%qCqcaF"GL(M9Jad#[C1(b&*2&jfc3aSlf2"N
+
+RlQ&krl*kC1j$`-Ki3cL[R*BZ,#`-AeMIdBpZ,!!Y-!IS@jJdJh#ACSa#FqN4ITY
+
+L!Z(C4318J@lL&laC`9)QKiUeKqXA"CP5Br)PF9lP$,)[M$NMUAQV@5Fa%1*e#-Q
+
+D9M5'rNf)-pQY@CXeC@-3$4bcXVc"p&cAaAd53%j+A[#%52,'q[(e8Q"H[pk)LQ3
+
+Pl4mLPP#UUI2'E@@pV'&D-U`SkfLC8%k'T[dN&-f*q9("TKaZP9pS$'9q"N11JHi
+
+04cBYX+`DKb,a4+SMT6##Zd6Sc1(FZ@@3!')TMqLd6b@YKBFcV@BS)N%b9BadP`[
+
+k"VX''Ae@+,&YSE0VF'+DED2G$Kq,HE0iY"LP3CSJfbC4JD)%M*!!3#lp#Y['eT3
+
+bLKU1kReTF5L28&ClBGT`&lAi%S,!ES#&)(A%r$kFG`fHPikU)bkZ[TV0rJ,i4aF
+
+Uq!j!,D9U+mC4ZG9+S2#iZNCQ'cP)[%$eZcVrQV*[,-*RX@KXTEZ!bdSjc3K!)J"
+
+!A3JmJij`1#S)Fc%NK'&iQI3AJcka2634'-&bJ0!1V9[P92[&9!QrKbH4*ceK@-Q
+
+6Tl5@UVmbJZFk,DS)KYDiZA3+T)hi9FS`BPIdYhkPm[04PZ"!0Pq@%)a4RL8H"hk
+
+2+q4B3RI1'B3F1Z1CV!4%B`aNF"B#Z`iiC*idMBYpE(VTT0)5N91%*F2Sf81LUNq
+
+9Cr1fZ503PK2HKSq`c,6@J(6%N6R64,%e*)drL(VGG521UYYQG#HM[#,T@+PhH)A
+
+mESe)2Fc#d93c-KP9-8pcCV"I0)TE"!'`G0E%K)iISE"fR-*LVBfB1I`Hh#3XQD%
+
+*M4-@i)4q!T[),TTSfY)0N!#EKbhK3*6I)C54dhN*88V3#'qpJRKiNTiL0,*5*Y6
+
+&V1kTck%EA%%cGD6b!9M2[$YUAH!VB+)TPd'h!0hDCh69d)kM&"f3!&fXkTP5FMG
+
++mUmlc5REL@4R$&kjraJb'jqS5mE"+LZS)6)YblDQi&((qGdXBG%`FZ5JeZ&11!V
+
+%Ar%02"B-DL['M6C(i2BaaqSNZd5I%pdS1-%dp+$@%BSkbU0SlSXKK2faKMf"rFF
+
+R,qK%i%Ni%'FC#S+2Jm3&kdN8H+5[Kbh5lf6+Fj!!-dif!Q,-kE#V%mR'@Gm@"NP
+
+6A#-6*dKRkJ!NSNmQAmp#@eRXFUU*m#&aSfYZXRhXV1m12L5U6I9Zl'XiYJi8SJ6
+
+HLqkY$K"dR-"XdL#))Ak#i%3''Sr6jMT,(@Vb(Ak%[JfV)BJ&%I-S)bDQHeHe"VF
+
+i%h0m&4%mE1USADii3+AU4PU-S",eLT56L#6`*cI4-@UT)P'qq`LU"4!AM$F'!mP
+
+H@)V2@"CF41SlfZ)d1AafbS@-TD('C2+DHijddDp[SM1Zc0bT`LA,8X2VTG(-F)8
+
+#jD6kj-e3EJVDA)3X9)QBL@!hm33Y2%C*N!#ICI0$(PXT*CL,Y2Si84)Fke#iSGb
+
+&SpBjc*@`iV9f@R)3$(haq[)*EVd5B4'"K-[!Mh#&35Dpm-+#QZ+3!)&j*D`rj5k
+
+TBij",JPAIUQ+Y05cl5J,iljm-S(,h&XLF"[Y*[d"cKMK!pa(ShVL+C9IS(U#rJ`
+
+F2rc1d)FIfN6TeTGX(hI"pR(jVP`*+UA$CV84Y!$hF6GS"B$*i9N$+FJD'$rZrP3
+
+0R$KH5c3[%Jpr`)$p!!%EcZh['E!I)'"$%IkH!IX"!MEkqcjL`-EIQ$H`*6j#UhC
+
+4jLQ4qHr3UR%j(a+Cr`kY'Xdjad6Qri&@$GFYfDVrLPC0q0&JUai23+[H"'U4f1Z
+
+r"*K1IQR!K[`9B$VjT3Rhr5h!G2*,NkMX@i$Tj*I'Kh`*--d9HJpJ'UE#l`LQ(`*
+
+-6ai*TR("alTJNS(8KI2"Br&EJ&i8-8JQM`!!p")XRU*e"!#JPk!Ak(JH!`$SaDj
+
+a)NZ!AUc*GX9ZkQI-RDH-RApNlZ`C1jF3RPmaGdiq3AGqaY`*9FAjc`1Jdjrl1dI
+
+QB$%Vr*`2[T+Pmr3D[jf*Vj2&@EcH,2(MK6KDEl,i5I#,5Ea+jjYeNLjSbH`[Nm*
+
+jr+UI60I"*9qB,hiP@XEC@I)0A[QMH,f1Xm,Fr[4(jY-6qcdrmjAS'Lm%FYkN(*5
+
+#bh3*+B4,KfMi8a%XSQHkJmRRJq2"kb+iN5k(aq0Rik*r"6#3!1MK6B$fqFZJ!Rm
+
+@%mF'i,9h`QkF[5hHK[%mrP#X9[MQ@pGTm6Um@-9C-3jI4!XmI6qD&r%T%c6ME!F
+
+IJZ(AB6G,m#6ZaZA`HC5p+mj$[0rI#m+AGAd[+*E`[3ITIRUSkF9I1EeR+D`dKV-
+
+hd4)Vm*dUKlIqT)K2Z"b1q1hhXV5i#QHE+IIU1a9`aNr`"SlMU8Ulc@RFaXmBTpj
+
+hAHqlPlq2Vi(Ip05(!SDfIPJZBS#A`l%'GZGG%VrA'aLMi*GJ$VH@q1ChXq6kKYq
+
+1C3)[*!#hhJfRaAU6@)Gqdkh`5eLJ'KGIZiiQfZmNi5AIrCfVF(d6ikpAiqYB%la
+
+E6!TKHS9eiS2A`SY&mSilGfH9V2A'DrEdf@LHA+AC)SPX+NJr6Mk%jcI*UJJ6kh+
+
+ic0,V,,V&GZ+*Dq&9&XIil@jkaDpi'rpHbZ*I&`(cFKRIG#0-0m9T1-@DAJQcH*D
+
+XePPbZ9Pc-[MXDf'dQ"fP'6lJKKEXm1S$4S!Rh``hLaP@FEqJF4f'f-XE+jX)%J*
+
+B"3`,Tq5bQqB26bl`56q-&h''-h%Y20eFcT-T([P4-SdAUlKB`,IHaHqhqH$GQhL
+
+'hl`Ter3*9m0KmB$cj6`"pR-j2(XB+9l$&f#UYc#C5pcVlaGKJei1i`6[[f1M36S
+
+*SmQp`ZV2H%+Qq$U-bbYjVH"Rm[Gml!iHZaK'DicBkm+$Gf[*llYBe)*S5&I$HF6
+
+6G*8I0h&Ipjapp#C!l@*$pr2ea(jKil&4ZA%Fq1%#(q#&ZBBE-eQ&A-4l0rMmDpb
+
+kUq(lC$l(RjHaM(cdrLUqfXarKDIa#Gqj#SD,m1ASr2RiiK`[f6ejM3Gr@L`F!2R
+
+UFYLC(0JmYP"crfiikCbF[bi#`&#h#E[#Glb0AEQ&,lN@aPU5R-H93TMF,ZH*TZ5
+
+0Zk2*qc5pUG2%Vhpa--%6CjrMilb0Zph4m3JIUXr60PdBRCm-cXl`dJYieFX6'mS
+
+FG(([KKdXeb[ZaDrLfemIp5k1mB[@p*@,bHRiE!!&JB%pKbpj$DFJV`-2$2k+!h1
+
+em2X,JeZSllq4iPTF#@Ia1NVQ+lHM1f!cI6Gml5r)GbVmi,[BKHXcM14DK%PT)6#
+
+e1r%dYY1mMbqqK%rC-chJ+e)@KK2"i9ZH[)2G3#l0dm@eY[VHM9k-Qi!6k"2aIDQ
+
+T+B#*-CP$A&-+Vj[TQQITl5c"MFBEUF+1cZ--3ebFar+#FKlr(Zq4(YSlr"@qHUY
+
+Cad4HM&BF`DlQqrHmbQGaV'k%PeNbZmB$%(ZlH!f-V&Rl9kD[i0PL3$mqkpJUS@9
+
+Ka`X5(6RZb,AmlP(Hk*VUbE[Vh6dla#lJZQ#dpf,F6NN85mY3RGL2QpIm+Yrl'mP
+
+UK3Fi[-2&G,kCm32`YI[aeaXFBkm2bK)aRAfUPlh0V8NYM4mIb*1N13'Arh*iQkY
+
+B5T'lH0PG2kdh#eiViGZ[Ch%dSbajDj&U`DlJ@1X(l@-hDYccDp,+Iiq"3dTp"dP
+
+IE!MbNjM*M6L,jc`DYl0ij69JR[qi6P@B5-cGK"508hc`FCEk,Z3eH0JaRZr8Z0T
+
+RdpXPP-8GA%ciB4-p$q1I!Km(pHh`E*V%LfP-53lAfZrr5B#Vm,B*I$`hUpAY[AK
+
+ZJkr8`Eq15r"@q)8l+0Ha+RcA$T4qqBE*HbVdfdLMB0Ma&$)`'rkhGHKYI-kl1Lj
+
+BcPZmMEF,&86IbNG-m3E2N!#EM@rCJ9dA$d-Z[1d%iJE&[Vf'DfBdi(DpDbX"3$+
+
+Xa-A`aHMF*-JV@,Dl2+&3ih-T1+Z#5p3-pcEV&0r"#`"Y#1R!,5J,IB06f,0Mr@B
+
+Bhbj[SKA@%R,`*YElVKmP9,b&aaj(Cmf&cJR1SG[@'H&2h`fIi`V`11K%fa+iZq4
+
+((%aY%&I-19UHJRdmI6#P8T-V`%PpViL!hD4DTIf#mhmr`fTIT3@a-HG*i6M`rCI
+
+a)mCp`j3(A)Ch+"r2MFpi4hqD,(!U)@$IaSj)rF[HfF1mEd2JBP9Z3$(K-jqUeTX
+
+k0RM&VGZ$D$V&@ZNbhk&@HYIH-N%DPN115h%*ZmA2Yj,KXFhYaihDib!K#fjLhA8
+
+(XAN6#Y`l"l1B3l`*[AA!AH3T2jKa*f)8B2[&4lki`AVGbULU[G,`%E!I%iL-1c"
+
+km$j*qIeSF4eRk@EeCG&H6q3&[2i9#L9mEZlq3CDP'3m&P`#hiCCF"-M`'aa"b-%
+
+i`K)+Yr$KHLN&!9jk(HI#@l#"UN*m)8jCH4mfKCq&TG3$%!U8(R+MhX,JEXDVAm-
+
+Xi,jG@Z[kBBiK$L%@I1,irVG[m%@DiLC%rVX2kb'4Umdjj)IKDNbFFVUEkePqJr`
+
+GH$r`)')MB#[6XI$@BUDAPXRL!-ZNd`maMRYl,j8MH$2jaUCfL08k1,b'P,`D[UP
+
+3Spm)IfP5IIB9TC!!K@"ZTDrSj!Ul*LPhX,d%1-SD!JV1-36j'XmFpmj'f`&!0lj
+
+ViZFGc[3L9$'I`GQ-UhP9Qm1Y2,LEaN[+cGI(h(G)98UqJb)dkQAlANf$CK@rH8G
+
+b3AT%LTcUq9BfRlP,!fLZ+E6YK54EV3qQFfTPAL`I''l"J9[VJc[ZU4`QA$*)"ET
+
+$20XA`aApZ%RB16dpY[hk4hq)0S%!`$YfDCUPq1$E$klS0+J@N!$Y1hC&Tj!!Vh!
+
+[))(5h*A3NENV#8`$009rLJPlNYIT*p#iZB1&J5pJ#qVDJpplD#U)XP-LQfIP6QS
+
+VFML&6$J-ZE[h9mQ8pX!2,dC11KcLG-PQ`,4[4r"!VXIBr4[Q'Qc3EY@bB2RjqZ[
+
+Vj"Bhk"*A!A0+,`pQVjAr,ITaX!6[di#mK)q'R)'#eVTIf6Pk%PH6*V!eC8'[(eE
+
+-cIfKh22[`LLR)!C"i@@U%Q#H9eN#U3[E"*F&rM!Z#mHdJf()mY813$YIPQ1(Jhb
+
+I*L81-Nf[9qKj[BakeKp2"QGbAl44Gp,E)MJImH00IDY0Z"Fkh@1m*8`X13ql-J(
+
+k`df0Kf[0@he!hdr5VefDX&U4h+'X['A@lal8Pe`Sh%aD[T!!j9KEb9!Vcqp$A&b
+
+#V[KPmB!1DY&Mh$LT#kMJCaB4&K&,&Y,N%X6)(6SJFN,SGH!FkP83SCI@I'0qc[@
+
+06"Hi#8K'[4ZZ0P0m`$AF'Z`9c&dF"EahSIZie,kbqc`E9!Im@jSNaD4[36Ke-kc
+
+8Zh6a0I*l@36KJY(L$-5PDZT!YJY'H60G(1!4b%QF$'McIIr*H&kL3Y*"hQBa3'p
+
+[&K#0&MGABDZP5i0&X*640$DNkqr!FD+3!(M,$$QT1CiNDb4q*#6(S&fr8m"BY'P
+
+d[cKN[J8EPU)$@Ja4!Ki(H6Nj-"J!E@#i%4*5ANH-#"p(Y@MI'Al-Zq(AQp5@hjI
+
+d4S66[VqE*mH*cl$Y9,rbF,f+jeF`bAJKdcV%0HE2"hF4(5K+2BcDYMQ1I#H%U'I
+
+BBFhVH3-(mJAi`EM*q*3A*QIRq0+RAiiRIGeU"*B`*jj$ISFmb9lNmfCi8IJTI[r
+
+9!PiRU98r$crK'ENTL`A8CD'3!(5f)SiY,Q0Hfr*pX-rP5Cr66H3(i5cD)0kQ2df
+
+j*2Qlr-,[1b2k)&mKImfcii2*3ErieRh+RYXcZ4`m!A)0002`m"KGI$Gmb8Y!lI"
+
+-*+@Pf3eAqqjR-$!a#DKCc"$''Tr8V3RAepC`1+D8fA!EB*&GT4PD,'HIlmRq`fJ
+
+MiGHVjR&ES5"l309eEArUrak2mV"M#c@jDB16Npq`cd3!CSC0e,&XE`eI0l`&#"F
+
+HTIa@+i5P1Z%E8QE`JrAYZK0@TPTRE12K6#kC6E6E@A),BC!!hp@IhS-#MXD,RFp
+
+GP#"mE'42-EqhEk!2U&S1G082cAQV1j81&EH%0JLp"%k5*k3,!049L6&1Z94FPVL
+
+A-R2lSIS98K#Cli$$F(J0ikZBe4CBM'h#Kq#Z`BR`SG"BH*,ppCS(pRkB"lr8mm$
+
+fFQa5I@pZm"%@Id@+fDq'Em-23!#'mJd[`jQr0,p0lAhAq6EEID&aB(TH@X@b9IQ
+
+ch@iiB$+Qj+%b-k5[G(cN,Lk&*Zj*KdI8#8S8L-95F$jTmR$dp&LA5mDC[Nfc)+k
+
+kBe"AjG92X-2m3U9X,XhmUq'!a`9!8T*UQVGA1XGA@Yl9SA38P33f32Z#HmM(5[i
+
+RdJ$83m13!-T5j5r-P1!VY12bE'&6mhC5bZJU)@Pi1IcCLpH(Ab$kFZ!Ncq&1-L&
+
+@(Vj%A%iB1VC*U%#@pj1M$&%rB83(heAF#,dhY9Gp04G2lrfTYYm(+mr035'd,+*
+
+c2h#0VCRSBpRC9KDZR(JYCHL#b&J0Cdq[iChT&%Bj8cb+)Hbl3epNChrT&dB+V+d
+
+EiIRcdFNcIqS2YaFHAh"*kJe(L&k,CSH3!,!5BNGR*5iUYKiRK+)j6fjiZE#)lkq
+
+pHDf&'FjB$YPhdSkjh2M$ap2XN8ZJ4Il%jcbf#p"NLT2*G,2,MVUBPG$fe#'diil
+
+ShH',hE%FfBa+$1[M)0F"pTJZlYh0N[IV&V-eQ8BXT`Pq&d5f0'Q04%hJGp0Xe8@
+
+$T`$I'AU6j`$f&#`e')Fi*e5S[J,mX(epf*X2Kd#D$MYL'HJVk[`%QSBip$LTIiq
+
+hPh0E*96H1eif,@YFl[5KE*,30j46Lp!@$DJ`+F-mBJcaqZV6VD'YbkPF[XcLG`Q
+
+XA%[H@9Y*1TJ#kB(E)j2RKTGITSr2PFNE*+FemL25%clr"!4Mq,6IhqrYpRDMJJ#
+
+bpTB+8+R'2D5-lEShaHS4(L+!XRp!2a9K#,P10f(Z-Jc#56aYPh!raD'55am23,6
+
+*jVSHi6!KLeU'YUq9Te2VYmPRD8R&JbK$-&!"5bBGD*-X!jBeA0QC4,jR'fKlJ$j
+
+m#@Vi"[H'3i0kC1iQVMk#E!SLiQ&-"eq1G8aAa$U6b5M*'b8rZ-*-cQ5FVKTj1%M
+
+F(CU((!YFD9MBpqF4A%K0E`X"phIYXa&i+BU9[Je%*EEY1SE0(!UN5Tf!9UQ)!1d
+
+e4jK@)YlPLk+A4dBYhpk1JbD!DT8id&5+LYM#8Z+YTmD8IG2CE"$%FGbSS"dff3(
+
+bpP*,[M4ikF6NpmE(rIbZS*iL2KI"&lbHIP*RGHcchXlJ,eNKp,Z%AqNP5SMaA6L
+
+8HJXM`Sa55H9d(l1`Vl#,P+`ANGM5RF9H)&c"!#2LDaQ#CQl!#Q!62@2B6@cNl4X
+
+%pRMM"aR#4&S'QZQ+kJ3ST(ahE9C'"!m[FB,ANEb$*aK"$`[I6S'PCYEYPkf@qKm
+
+"EZbYMEa$(JR0Cq,#'k%l$ap[2Jl4QppjKTRI$'NF8@T,SL)E3a,*6G6U9ZNHLKB
+
+BrBLU5Q04Q2kG5@1TaX'Yidq4pfMIiULY[J@[(N)RX`!Sc[KV"##+2pY'mE9@m1p
+
+iL'eiPeZP9H%P$`9`k&AHFd@3!)MMqq$,m,ATSYcmDpkN'bEL&C9JV&EhL"(1Yb`
+
+("$e@PP(bP6NcVS#1iQUGDMV&1b@lPer-pDT"B(ll9@qr3"`HIa$I,1fdX!+d-ca
+
+9"qY$U#jG0iATGZG8$#J9X26"1X+B(dlZR3e1jr(3SC*m!1,LF3HeKl!RG&GilQ$
+
+mAP%b+Ub@b`KB8,PTBcL'V4E(i$Z1*)NZLl0d2XFKb+6cd9'"B!ML1M3fIQS+4BB
+
+2,Xf@1D13!09-3FDQKMaP!3*HMjqKV'9Z+UXL[DEi!lX)N!$8J,IL`BIBRP-#Ypa
+
+'XG*BA&$$$$)2`ZmY$VpX6%P&a5`MLlB+hG5q!3h#K`SVQ!(4P5dNhc@d,Ej!LD%
+
+eMJPIk06,N3mXjHN[TB)ZArS$XpdKm(%eD5hljM$S*-23S6dNS9ASKMU[TH&6r3+
+
+L%B4I3196VI,&eU"*i[qe"$fRF1`0`V)*pC+@9V@9Z@G,lbA1ZN4'1RV$PZ'50b-
+
+E*ET)BX&bE5NH63ZcZ5Z6KTmL,B$,jYY18Cqjb6Lqc16BIe%F0m42K(FKpD3KLQ1
+
+)4C)hP+I%CX-NprFLf!1Um%@F%YNTjG@1,m&-53LZFN4iE6h6Jm(%H49Gd-&h+Vi
+
+V#leD'`L9+MKm"e*99mc+T9M(4G-jf!0k3qXSA`V&X,SNN`,10LT,2JFI&*Y!U5h
+
+P@NEl[5+C,!KjVl-"YI5b'3H[(&p-1XIiK1r*HpC,3-Z1VdI&a#YUQG#$ep`,F,L
+
+I4J+1V`&8'&jcrN510A)Y@CkL`(1S[q,53k,9k!feC*`G,3b2k%hQ&KAeNpea#a8
+
++NI00Uk#2e1JdHRBKkl#6NR2Ud@!`pZi8[4YDPYKDC58a*dcY,F5JlF,Ud2R68P@
+
+hEj0J4GD6Rl'hTU9"XIK6'$rB1mQmPMH+AF[!'dI"NbEjUq@"1`mIRYC6,fJF3iF
+
+BM(B&ahbEjkdJbN,+a!hXI-JZaC)c,9I3'6#H@HP$@k9)U0$[B%Q&9'+mkrZBN!!
+
+RZ+F*ZQI"LB3ErP*NV)#LSapRRXLPDmY0Vj&$ff31*B60$NF03h8[LG+"mR(i'*-
+
+G[154-LkLR&irrR3+K8R1h&ZYTZj`lmNJG"m*D%4"C)cG#*'bdL&da+`Ha+GliaF
+
+iJ+Jl`IXQk1ZNA-KRAR0faebT$Y`mpd0J+*iHG*,#0eGJC&00@+S-#ESXYG$Qb[L
+
+l[c!2UQjL+NJ*(pa3jhPPd$k3!'YT9cd&#$9DRAQ5hR,5RXke+dmJ&H!J[1Ak%6)
+
+S0SLHL$6%Y6QdVi@0a6(#a82FQJkIP3qAU+CILLT63&-Q+'aShMqUrKJ4kLfT$He
+
+p`2BSIMA1Za1jZ%i--Imh(#*RF,R$2aQ"H"m6IIeja``*0$r`caqIF6&4L2-2Bf9
+
+@3ZCLVG'KM,Hm6$%M#I,rm2QSdBP3##GaGR`m2MQcl("8eebeB+mmY!Mf5SZII6j
+
+Q8mh"Tpb[RhkTm`)[3VZ0*X4[GmCcGc,!2V`d2XH,Gir2&0pQhS-Ihf@-l8RT+jl
+
+$32qE[5G#)(FX2-Ld3RM-'Di+khN41T2H,[QUBF9ar,JjCl@d5KLPFU'9j1aTGH'
+
+[lV+Q8,J1QNDp&NST)U,Lh"eA(C,Q)!m98DVLc11,Y5l)eZ0)bS@pjF*[a4fc65h
+
+4Pfm2N@"(9HU['SUmml`5peGQqcSl+R'%1f@p6EeF%L91bLM$Y2*Zm1@fKD!RN9@
+
+J`&I0M@m`E+kPmTBLLF"X&(6Xe*e85TAp`NP[-RJa`#@#2dm24k%3%"4M!TVMS6h
+
+'qJVlQ$M8I1*LmCGPI0lhH6@8*X%Hd!#'G+-1H1CRpPDD8rmr#`HJF$98ZEi4J5$
+
+mr!1m80q*0ri-Ik#bM!m$edS2Apd0#-,RCfB@E05P)2MZ&%IIHf8[YSfiC9EUYX8
+
+4(&f4A6&)95j#qcjTPa,,1[DBqRb2)RJ-Be%Yq3!iBLQAJ%dIr)LDE5Y(Mpp3TBX
+
+'"CV"eFC$`[$D-c"#KbHk9f+GLqq(@kZrZZ6Ym"eSme",$5HapmIiI4pDG(#Tp!B
+
+dLaj(-A1NmShAQKbDAbk$[`m2d)FYjPfR'Rr'[()A4PdjQhLc[bT%C"d*PMam3Ak
+
+!2MVIe+IkP&+UD`KRJB8)MThSG'c5Xq+ZE2(#ilf[qH4C[,diS2N9&VbfDQ'jf)d
+
+r915(beaL[9,!bYadh@NfaCN+m-aVf2d5E$Km4(QrG)0Z5kCB0i%JNTkE2YD2(Kd
+
+R5KB0Y3b0UqC*KYY#-HAX#4qj[p#,EErJ6@lf'UkL9TpY5PdiBb1S&fVikbLFXI%
+
+2M5"b+eb*q%5!02h"KjJ%M4J&9(DS$li*MBr0kYZLT[$"P`fq%2iejd[2PB9@4kP
+
+6,Y$3QP'ZRa3Ba)e6(Vj(dDA"Mpp@MjX8F)Q+,*,[6M&EmDB,S4irD)rVH!5R!'j
+
+M*XI$a**-UG*9+Lm$FITme(5iD8Z25-B-596j+(3lA)F5`60R"P6aYP3HfQ#,*R[
+
+U9YE`hTKY`JVkJXKX4CPrEeHp0MJIMQPSc1ejY*+(P%ZYaXGj#p#R`BqI1pFE$DI
+
+SM[,EZBSTS"p-HpQN%02AqA4a@Y9b6+J80dqh*$+%qMc'aVp6m*Fj$9FAG&QRq("
+
+%'m1Q+TXXr(TG9mj[04RILd,E`RRCqQ,@QfKrIrHKpbED[r$K*8!J`aCT3'4AD@[
+
+DL3l"JUf1SXRmpU'D*2Fh5M-BkS[B*Sq6DUFLckcXJ+DXBJaV$RbY,TKhAQ%)0iG
+
+N8e'kG%I4&iF@k[2,J,86QX9)Ri6A9T861pk06[9!8BHK0%l1d*8b#j(1iq`Pqml
+
+Ij[dAVV0aD3Q[4G`DD,F)Q8TG`l$QH28D(IRiMP!"'(aTmd#qebDRiriBr#@QM@6
+
+!!J8JkTci(Zf-!P$,3SKd$BBK4L1(Hbd8@h!A"Sp1EIb,2%T,*H!"*&',YQ$8$`%
+
+jkTMZ[LJ3(LG'kF[KBP!FPEf,ZUa&qeR@9R!mEL9#(jbk(k@dPpH2m33UL@-cQQq
+
+"'Df&+JNTM2$Bmk8GiJZ+A2"0Q(+H-ZU98+d%cHA)Q`f"@M48M-DS8d'""DIf1Nh
+
+0(`pJ)Q"S,FRF4E@dl4'AfSq[)M4&13X!ChrIChAKipfK'%"Zl2DA4GH#)3mpD`8
+
+L$658GGf*VhM2C3dSaE!TbaPK'RGMhBc[X&F4A&#(5hmfC&)J-&r#DllKQ)*li0#
+
+D#pFDBVe2AVmJ)HVmB&C))PRB9dJqGiMq,pS4%EFZ!TScZiX9i*!!Sl1#%p0d,Ak
+
+3!1JVF5hQS9[STh1Si&rHLjHU-9(r",AqZLY)H`&YD09MlD,dLMJKabc$&T9K6)A
+
+Bk,L$1!ChbA'4,%9`pY$IZ#1*9IhHHcG@6Eam2lfdE%Gfci5UN5%8X1mAXH$1lEZ
+
+i$Se4jC`KMBV[4)'$JVMU)4Pk6,,PU*YS@4"(FT8)bCUJlPM3X)Rih34efV40,q&
+
+!@r$e19Z[SFp2A*eSl9f'69U[JN,f1[,TCqDLD+DZ9%jCA0T55fp66$6pq#aM`Fk
+
+8"X1SiVNE`rEfR2Na'LHS19)QZB29(pAIMN@*Mpkl+EGJZVmDq*Yh"@pIK`qYR*i
+
+P6DeYY680lec492Il@FM9[G63JD@X1TEfU)`hP99hr4Q62fRDEJF4"C*VXZVQdL"
+
+PpTr80*5lh[[0@IZK8ahTE5LqNpSI,)&Qd5p2G%I`KY#fG`m(h4%%l'8RH+k3!!Q
+
+(Uee2MD*4%"25B&eIp5$BY@%5MP#G&+bAl)hZdlM1@XUXYmbq[a!,'V,cccT`q%B
+
+TARFdY[+5,RlQ'PmD@Mj)[01)G83C*%5602ir!"kKY,$!eE&Yc*9mdpPjk@cX4Fa
+
+i)0'P$%Z%RdSGThZm0#0!%Y+#m$G%j)Kb"0P4l*4b48Z$XG2eD'lMeAXCXj8be4k
+
+V1e)lk&)8ET!!1lEdN["-jHka4b31DlEmiNm@SDbDN93+bf)8GfMe4CA8+Fa[1+-
+
+!FFGG8&iV-iNE048XXa38!ULZ@RS#')LUQH#!B*(339S0-B@RhCr&jf&f(biL",[
+
+,8D`pP9&d!)q!"J)$$lcPA80'0F04f5'*a3S5G$&3"FYE8IBbNMqKr(`jpI%P54P
+
+YUFjPZ,fVUbcP*dJMd-ST#FPfQIAZY-qAT3Vfma""iB5`Ye"XARhAM+Tb'I(jQc&
+
++B065HbQC`@0JjK+Z8kZQB3qmPi5QAid9iePP(9Sb0h40(A48HA!%+`m'Z@+D"V[
+
+Cp3C2P-bm!R)bNrCT2$LBK"fkT)6b)Zi3IC!!LUaGQQ%'cMfPRG6bqAIrfZTSEPk
+
+KS$1b@$"jUGYU"dPX-XX)F"0GcNC&BYh!,Tl@hSA%JTU"'%c(@jA,@jCl@0()A@(
+
+"Y$`F5qUi'5fBI)eMG*CPMFAKFHIX!Yc($+RcH,45apk)d5ekmjSI(XQ`(Nq"jdY
+
+l%'i@l$jqH"3QC!UFkDqBK-[m,mdYR3@kh%KqCMM#4[Vh4LH-@Z(2U8d,UVP'l'm
+
+ApXQ-cD"4U11[%B$D$!Ha9R%06m3$bAPX@#1!'a#9NUMP*Vd9'6N*4V4FN!!kXi,
+
+8mqSp46dQGPY0U*`V6XT"K1G8ca)j94H2JTLM&K**+X3CacR)mQCTPA`Yh6X*RjZ
+
+i9qV-[TB6&A!*Xia*dZEZ"mLj'dpF4m!kAGarXR3"#kZCK-'Rred45$!k9jPlYaB
+
+CUL`4plX"NiJ(SBL(#1PIJaU1%i*N#jk4fYe(jpmHLU4jFA5PE%ZLj+T-l1pmV5"
+
+P*lC,CV@Q$)BKT#M3aSKqGa9d86*BUr"Y&$9ek+MM[ZBE3)Kl9+H-1ZibC2*V)i1
+
+T,0&h`#a5*d5R,mS42&%,p@@+1U1p&lQMPb8k9&Yl9Tpi)rcb5rjp-lcSG484`Z'
+
+b5NFp,3q*+LNd@1#AdC'TqqD)#,BbALdEbd%AEb'8)qh2#4ZHZ9+dK,-ELUU,BSB
+
+IF!DCkRahDS@Y@ZPc5B[DlH[qr$@e0-HUS#kj@a@XalN8T!8(k'H@Qrb@53,X41J
+
+kjk$JI("2V++,jkISD2LdQ'N+jE"L&3D#+iD'PF`'U$-b*U(bp,GKUFBdX$)66)3
+
+VXa`*+VVU22#K2rdiNbU1*[PU-EM3[KbX2eh(RN`Q',1PP-eLN!#0c&'3!&'5+5V
+
+5NR@"E88j`,[+l@5!#NiMMpH296fPpHI&6E090I%iLe5I8EE%DENAfJQIk"-hC31
+
+1MZVRLcCf59Sr"#Xqa*TXea@$3iEmYMa!Mc*+)jJXF'kB96J,*!UidlF!J*!!fCK
+
+3IrBL`S$&*X$dm$j%ES$&CiKHk&V'A+K4&+1iQKpX(4mLcr!'!RF$AJVNJr+Bm$i
+
+P2@)R2)ASX5X&r&N1Gh!A6i&PS'SkGM4A+)`DjmrS[hTRFNf9A)ljd(mXFQ`'IS2
+
+d`Yj#4j!!ciIXLXUE%IeNL$6FFl@qa*d3%B3MCNiB9G'FB86Yj-hC!@NPG*,LQfK
+
+9B+2#GR"15p-!2LHQ`6'S*ZZ'pkU`Ej4Fhlf-eNj3B303`h&Ee4Q@FPeRC$B43N6
+
+b2-Z[[aFV,h!c3H1bbRP5A&*pUUl,P6'PeP"9aSTZ"D!+i[aUFCFF[SjeiYiMDD`
+
+%N!!-,pf"L'l)Uk"e99BlbfUTU,cDE+UqkZ%LSK!YSL"@RQiVaaIDR5+e%KB%4q2
+
+0l@Fe99@&FIM9Z$Ch0ULa9eJ#Ha0T#GFe)N5",jEY%NI2DPq&IV%GF524#h9EJPC
+
+p2jN9hiICbBQArGdUF6biNIFcU431%'pqGQk*)I#'`&h9pLY888DiRf#&E0Dp1Rl
+
+TUZGH(jmH$liB("G[6@5JhpKC!DUbSL(Dp1["CD'!NVYG4#6[M4B*k%Cjpk,4cbe
+
+"6Z#hYB@[L1%JrKK`)AJ+I4"B4l4NSef5)LhG"8b)YKHNcRHGSX-NcD+aji+al$,
+
+J4Q!K$R"6%)1J!qTk!68ml+fcq8%2-kD,Sarr"dkD+djd#*l&`H22d15`A'l0223
+
+!8M,i0)m4G`T[2rSZk(9m@2lkdmF2qhYcEblD!q%Z`%11&$k9#MFPpZ*`ccD59VX
+
+%ibm6p%E'66XZfU9P[ZHX$jS(e+Jr'R94"PVLAcASVM`i*rDS5BT!%fQlD%1ML'e
+
+6qABP1@U0934UP*ZV*9V0YbN9*"%-Mdq1q"MPfH&P4Np4DJ1Vb$mA0qQNaTeGmVe
+
+GEHGYQh*#8pKA!!$$9FDPpD%Q`369FpM+YEXLZPB8Fh+P%HZF3Pa)!K66mRlQbaM
+
+lJ8FN,mad',l2cDd%(LkdP+(LG0,lH!0XlmKMCP"SiF%ljXiYNT5Y!5['8(9J)jJ
+
+93M,PEbZME13CdTahem*##)HDmYLRS,3[V2RfF!BdF0YM)BZI&l3Rb`ed+h@!T-#
+
+VKfp49Je90,+L@N9E58VJPpS,kmmZ*E"k'CH1LiP[`'EDS&B65e[(2#08&lQ,&5M
+
+%f5$+-NGV'Vi'Rp83Z*(FeFc&5+Cc863c)IL8j8(YXYD'cl@E*CL1"VRM8XqU6DX
+
+G'!J'N`FXM*)GIP"9T8dSm4C'X0&QUM%aVUe86NLCeebH0$[FMV+Ul2$-5lRRN!"
+
+(&Zh0@UiS4k['(`HRq&%@*6NG%#l*JT`RVcc@Yl[bm)pi9"$@9#Udq9I4BCAm&Eb
+
+pLq,6+KMd@MBp+e)3XG4DCjl0Y@Q*(6J+"pmKeY)1M$JjUqk8D*6Fm+(ZB5YS&KV
+
+ikbK8X28[!"MfqMI-kiI0)[)*#"XJ,K@'$arLD)4p5CDG#XfNdITejUPF*&ZS1k1
+
+CC)m[Xk&[2L!F3))pk2lS#&0&2)Z$K1l+A2l!AAJY08N4,!0+4@86Y!`i!'ZT#CT
+
+RTT5"-SGc`!B+$LC5a5@$5R`&PkMmL**IHD#cP$'aLaNb$@h3%jC%3)kRMDRHG`9
+
+88#b+hVL`BTe,)d5DYf5XlIX!Za22G[9`Gd'USc1)jEFcM,GC+5hb49LKII"ci&D
+
+DfH5Qd('5*HVZdPUE)q`DRiAN3IpCl*6!'KcKQEMYhQiMKlJMJi-VfqX(Mej"4A3
+
+r*D@%M$[Q'#0fZCbp`cpLal$Bc#-qT!JV'&!cD6RDAP0U*NU&!*!!N!$(ZR8%KYF
+
+eP+M*YQii*Za3dRei5BVUK5((Fl#H+[c%Hi+bZNXCh4Gq9XSmm`lS4"4GGNdpaFV
+
+F44G(G-f4pl1255#$aah"B&#5[&VfD+#BUHaK9ddd-G)(K9S)d2%cB*ekbj(h+Yq
+
+$'mAV`GkN4L,KeHl14cDG'UN!Yd2)*Y`fIj-Z,I'N-C*q@UaH$hNVXp3##C'i3cr
+
+(,3&-J&UM&,pS"(C%SQKR-9Y++F`@S5!m+qr'Hr,HGFbHck1"kNBJGq5*NR9%F`5
+
+*fp%FT9'2TTM39p#B6Q*3+EqcViZRP02jI2BA4rrT0dq,#r-eeH$Q1#pGT,KilBS
+
+[S[L42l-LLVS23MhJr$%BiPB*"$L[QL9QRiV'T,r4!@FCAebNdQ("X"mq,,iVpbj
+
+AKBk0)c5U3pbeCV`DP9)RQJ&AdMVMC4AG51hmlSCTQ95TaPcVXf$lB@lIH@$Te"p
+
+88HbL(NbD#hY-#ZMQbRkHJ&U1Xd%rc(-ahZMD1CNhMXmZDR8UjB2LV%BR`P&`$B3
+
+04d@#h6k8k4@GF,YDMEb)(#FUI@C,%P)9GS8[KZCPXqYXeU5%X+Xk98-DearT3Uj
+
+-ejU`@J(FNmL1CmZ$(4G8pP"N$bfjP#R%fmSJZm2JHaX[BT`36V!FGf4`mPl+$*9
+
+0ka*b`@,9FXGi0hFLl9heq6NqSGS4#XRE5bM-!"4T'P[el"(-CZmXK32Hd5iGVNK
+
+M8JRdPRiA0*SY&H`YqbQSppQK(rI'USFTTYl)1ce*ZJ#AHH-RiGX9#J3"N4EAEPZ
+
+F"X5X8GD)jYZU5TpfNCk9[)QNLkDGaG"A``P5l$mDN6r&)5IqMNF,r`5%&d-dqpX
+
+`1l8cfiQe!Y&NM9j3MX1b@YQ+ShlHQ&3j9PSVc&5PVPdD3UD&$b-X80(ji&a*hrp
+
+rhP@%F'#+ICL@`lh0l,!%Gfda2m5J'C+!fCmIf#)F$9[0bMT!LmAp8(3l8Lj6+F%
+
+IZI*CV9,K6Z'VAdAlTHUpIRSm1Q'TCGJqr-CXHC8LUB4-ZG'cQQT`GdfLG5dGX6E
+
+&J[A[XFR9-'QEI&'9!PC+fI*a[0TD0!!VA3)M&XQ'SU38aA"U'c&3`'*B(D%C61H
+
+$1m9Z1",TE9QjG+#3!)NYp$QKMV@$G,2kATj`JZi[-!'G!EefD4ija#1&eiPEHA6
+
+8TRbI432@K#N0lKTbrK!'#0C$LG'SGP4A$&-Jc$ZT$C)D9BC)iUCe5Q4p3FmhKE&
+
+9Qa(&NlDB@,m`92qk+NcfeV+f%!EIpiPS%@32DJl6JZ'-C4Hil&SS5TUcTB9Ka38
+
+bH1#-j3YV8,FUJ$-i(`K+4$B2ejL'%cH,rBi1e,Je[TXd)5)hJXK4$-[9$Q!2+Z!
+
+6NaUS,jd#Nh93MPANKB1qSjP)0Eq)dfrE$(1C[0eQ59%Sa+IHj3IFBR0!@$q,X@&
+
+efF-CQ3'Ym@U+dN(Zf4$L8*ipAlU)k04)$VYRj'j$T8+6&MF'FNfISm"BdHmhN!"
+
+Pfhr-XVhed1Cpc-APpBMG!BHYr3Y'VqkLZL&GMq`qm0F'*P3#MXM,TI)EUTEcba#
+
+KMh(+JNE@!6&)IXLbSNM"d1"eF,b+rAYY$YP$PbP!A0+ZeX2U,VSf-%3eKGFpbEc
+
+5LGkVc(4XUk""&&9GLbe[M[kQiTK@(@j1Fe@)Ll&1,R4,6I'cFS2#khfI"JRA#R&
+
+!`),9%U%P&",58UU(C"$TF,'f@0[6dHAderDG(-lrjaTQJ9L-`5%M%FN%-U!8H"9
+
+&9P[+F`Q`a(S,U%Hm2FEf@VkGHV@E@K`%kJTCSPiLJaMUeSINi2Sd'G[Tb!$8@*2
+
+*805e3ZG83bNeMDr&Y8Y,fdS[&#Z0!haQ8#4'[3PeDeKMl2bc5@,lQNP'9@1LCpS
+
+9,eRRUV9RN3AR8EHAKdbEN`314%$B5p%,rIp59JpT%l"Z6TViD`5J`X,&NLDr'+#
+
+2DNC'NeHAeYZ*QK$$V[3D$M+"hNfPrD0P9fqreNehe(TG29%Ge"!55e#+hPFcAN!
+
+2%Zc!EU$lG'3KKB1NK+hMrfj*X*fL$KGQVbVJj)0E(3jU,VNBhKaNk,ibZR9U)d"
+
+i,&Q@#eHirbkYh)Pc0XaZ53[ThY'ZbDP)M$bEdFY408SY8)Z1U$)AN!!XkladbK*
+
+P3))Q#'FV"I``+Rr$DH#l0JNX9k4J'hQG'Ha6PP*aAjGBj),'Pc'6k%kGJ0mc#)&
+
+a8LC0p1dJSL&93K(EIHZcI[dL%16c#30'aQGU$CB+4!P!#6E'aY'CZ)[)kqNB#`K
+
+Ck'"&,3#ibfAUPjbZb,p+BY"!X4rpZQRj@'rRH@$MYTU3!!!fkm9-f%kBCa8cNPU
+
+$8pKVQ8c$1%0[BNERhKI51VieULFKGC8E(Jc-YPrK$d,hp&[MbKRe"f+UXN[1rrD
+
+LFhbkGp+$ZQ)T'0LAkeDmG$#(dkXF*A@CXP&@B@RIGUa[e3I@0"!ULA+kUf'AFI+
+
+cRjmGGmkH$rURG!NK-kc1%@Ycc[[B2q0j@VjE8bLkM$[@MHYJC[X*IQG9`l*Y4rD
+
+C$$14#bik![J&[L+YA91KHNQ48Urd293rUI-E+C()caJRG@%JRN69-L6M(*-k9eY
+
+D*S[mKlA,H+GY4aVhf!MS(pZH%!P+YI!paHPh6)KK!!NqaC`FGdX0',N(R&3PINL
+
+U'BHm[h5RlM2hVRJ#28dJ``CJhBY@L1Me"XRHpahb%NZ@BNdcHG$D-&$X`ePddqB
+
+*iNB#4V&LD*6+%NSPf)UZ2TEV'laCTEjYN!#CL6#kM3leX-3A*GC[EGZM&HJSb9N
+
+Ue#+lDm+`k1jf4B5[8lMT&+-TR%D)c&bh!RJ&VS$,U`6299!fXJP5HQ6iQK$RUa0
+
+!)cDeM'hKa@Ze)GPLkNUpBr[Di@+!-2A*(aR66Mq4`-"80!khf&d[SIC0aLABJFF
+
+45$2&"FRQiQ@@)R2dh5a``m*,GaCc3HjBBZ3"8HV+$ADlF[e%26C%,$%2!`LfHI3
+
+A,B6C4@9Pk"cPad6e2PNchP3$4[T'qKiR@BURa1hMXp&[P#LhQ8L-QDKF*"[`PdY
+
+-Dl6@q&'$FQYamU#PLk%1iPL4$'$6N4I@'3f!*$R-''#l4M+,fb(3F&$EiCaBXB1
+
+-3U3XV%#09NTPU@EFMXelD!8$MpB*-LXAhq!b[XL2"BB%BaY,i@S8%L@EPY)rQS)
+
+LrD[qM+2,aBN-3U,%c0R#BkLP"Rm,&T-m29+!UcEHJQfBE@61ALQJkZq3!)mhD-c
+
+D3&9BDpM(bIK+e[-Z6BfScejF!N[Z'b!*e+1iV#l`QXZDK*1BFe)GD&ZRk$$X$Mf
+
+E9H[RiEDh5bm5Q%U'8V8EGck6)C'e'6)PF!4eri*+XkC3JYYd@rNRpaebP*Nc#jq
+
+fqE0Zhm8hp!G@pDR$JBeR8Di@[@kj"!2DB4H@AHaEK2Sj'8iIIABKFf"PSfj!p6k
+
+XT1Jk$+j$iCY14PdUA2S-iITmPC!!cC!!plC([EJ26*Pf(NlM@D8r`imVQFlXIKa
+
+QU'(YmD`d)iJL-ZRDqVJLj`4BS5J65#!!%0Ii`'('hT9Dr+1*!&*hNF2HJb3"8QQ
+
+*X24`2N`LC)qkh6@RM-MQdk2jK0Q5,4+UJl"@Tm-2"b0*5iSYf!,SQXbX8S9@TbP
+
+9qFKScVSTXd)blEZlN4HR3VPQj`6Q2`!5$4,R9`#2DMp@c(X"Nr3U[TP@1fiBS%$
+
+JV6k$[kGij1PIiKYRlU([1,pPTY"hjBVM0lCSaUE[l9@Y-mM[rERm4J86mc00'2I
+
+-chlfZbr$hq'98rXmG#@c,Ali[+MjjAPDdA[T"8Id'R!LR'TlpP0`ABIaBMM3J3*
+
+J5YZ4e!UQPlJ#+0r-j(9ba(NZPFG,PZ50kNmH6C3d'fUa9iAES(Xe&)PZ"qe##hm
+
+GT6#frk(cBdKbJ1"mVG$'Rlq+FNaGP1-Fl38&0&l,Z@QKjepj+'Z!Jd*2H1FMBII
+
+8#,[e"@#HlVk!3-lj"DJFXB,I`NHSQ'6UQE[2X[Q@lb6(,CGUKe@D6`hIj[SNF#F
+
+LQ5h@)2QSEq2KG5iVrTiDf34B+Z82k#931(S$2'Zp`@rL)82AIRC`cYMNa-e)NVr
+
+359fZL(a%NRXfJj(i"ANA6K(Y0ZNPU4Hki2b#m1B8PZ!BT6-e`fe1Kc18ED-CUPb
+
+%3p32-F8G9CaGY0F%d5@,Aq-GbKIH[+lLV@@3!)#'GVeV'k6#YC34lV,)kpL"ebV
+
+(+6h*%DU)JHqQ*p'miij$3M9!CKI0'Mj`1Y&T!Xa"#GfmkDK1*EAYGURP,2&1NaY
+
+aLKLGYb4BN@S82rD(9H)[R3p1HJkNClN-4MI#m5,$4Ui'&SSLXEjJ'dU2'e@q*4D
+
+1ab(H%emd-a3$Pl0"FUXI+06+FPR,+lZ,!P%mIl`S0H[Tj%hd@3k,D-r3LkK%K4G
+
+4dPB'P*EAMbf+pIPGmVS+YePXHC58K(X'F8`2#-S60Ai9S'EjNDfb@dC,&2PN#Y[
+
+BNSKZ"NX!BXHdIVQT&iL(9FpDN[p+,QlcflZYJ)e664ML@c0%ibBPH`%$Y3$b)H&
+
+l-UI2hJHJ8bbZ@C4A0@l*@"K&QP6%QHlVV+dNEUR09ZMCf9F621&Zai#42%ekRap
+
+a`#"qA8bAHF[&G!-&lId"&bb$f-)D"AHMUZH,Lc`-f('afL4A"Sb,8#%3N!!pMG$
+
+Xh%qcJ08DHMJRZMZCG&lECEe,-M61'l&'QLJS,0I$Q*5CdG!qM&9*I$R"qI8MTa0
+
+VD-Em9SG+qChk"&A3,DrHaGbR6!G%f9E3LTP)-K-046i$6)Y&(fr"Rdd5%CNT&I+
+
+5ea2[PHH$JaT0C&(eaI`!5M65@1*qNM@2&PeC%D,`$(-b-(efd(0jL@)Y5b[L!5q
+
+F$elX@B5Baa'r$MN8p!B`%I!Pbp`P%LRVJ2I(AaAI[`Vfp4*kpZ!ZriVeZ%"#eX2
+
+3$6!j'K`V+rXC@A'q#ECFHG@b[!2Nh++r9r'l"+$kDAd2c((L'dEl+,Fjm3k8[Ul
+
+Tbfk*X9A+bDYH&3kmX%F'8TE!K-Qi9dlA-aZQkij[0FA&H!PPA5S(B3XYaYTBNK5
+
+Y2VLcSdNHFCirPia(r&eTL$A2'aCF+B8AL+96@SC38VETA"fQQLQZE0kA9)4CKZH
+
+0k#U0l-Ujb``$[B,DEp36ZqA")8cA+!q!--[L!'q6LTAShYl2V$p-64$IhkA*c9I
+
+"X*&'Q"H0+rl2NGPePlQ)rr+I5m9d@aYY1Vr5@2-'Ep[2+84ZNeJ#0"Kd+Z!N6-)
+
+hl[,KD3`mRUCUjZp[D0MeaBGKK4)lUUA@m+(5,cGQ$`S'Z(Zb1e!'IZj4`i6GF6(
+
+[eh0pX@XJSR39%(V@pIPfLjaiG5GdQ&k)aTm81SEdE466cml!K)9&%m8,9I2!X&`
+
+iE[ALKA*V1BdDmbLZMH[Ui$EAKK1eE!Ha4&9(h24NrCI+eiN9`hE!6#Kq%TUcU-C
+
+`Y#ZV@f@lCPe$AKE-!a9E)M$SG9M"(bfKde#i%F`3`%[ZKVGT6U@XH&(@(&@#p1b
+
+mFVC0jq8mQ[mj3RFbpE[q"UfDcDr`L@YB9Ab@+Zac5D05a@N5,&#rSdd#[Hq,h9(
+
+lrTX@T$S)hj438F#CVAhP%QALIj-0MhUpUf(YUq,AERK6*1'VqAF2[4ceG#%X4%M
+
+RY!&I(lZ48Pm8Ua#mq08#c&H%i3$fePk*Sj!!IQ%q"(H`bQ1+dQYB`+BKj%C$P,I
+
+kLBU)CrH1-(9'e$Va$1Q$5&NX(mDAqYR!X9H'0fkGjAEd$)AePd1k"iMk3Vp#S[P
+
+L8,b1RQ%kTREmld3@b*f*a,SI21p(FGU)bRib2N`q-M69+@Y#[i`[,r6a45p-kFQ
+
+jqe"bqb-eEl0CHe6CB6XJV5e8EGZN[*&XhXjU8rVeGq*VG,k%,Qr)V6N`!ERi@X6
+
+@cFfjIf[(#HL0fc(r'-RNPepd'BmpY9[&P*!!`NS01d9Af6fc[`p$!&Pm$LVIQc8
+
+)mY8Mbiq4aH)@S'!TLYjPEAh$`@2'lc(qAR(BC(k@Ej%2@4aHq@"6@9Vj44V9"Uk
+
+jpHYEi4[hqC!!S8`-iZjI3G+"![9+q)DI``GCTS!RVlS-"'T0G(l3[KpbKa@5`TL
+
+hkBDi#eV3Q3RES+%80qRaqQb@+%Z2IF4IAE6Z)$miD%RRQQ9dZ63+rEAjdH8Va!N
+
+SZYUJPId@F'0ZVMlFIM+ZeL($*r`,#rTedJ3cE8Q69G!%JKXp)`B0+b3F2abFR,e
+
+qBD[di3P++Sj9S11q#!)FT0)&%XQZI5DF(HM$#P0ha*K5f,bdNLd8E4qR&2d%EZQ
+
+9m&QCFI8I9RK$f$EU%JU6NM(r%T6b@SPS8kDR'$'B![cjeKi,#!NA(pLN)SriJYq
+
+i`GDIiIK@8DF8BejJdc-URe'ZjP+,,"Vi-H#XT5JKC35JiM3[[cEKNFUTU9pU8dA
+
+(PfqXmhhIe%ZEGS2bUqX)VbD+KpZlcbQ8K0V6McNe85H,Hl&-rQRAP+2GP"%988P
+
+jrV"kAqS2AZ&,Aajq[cE(%Lk2lc,pJU"2Z&[aHP-3J@%,8S`&00Vai%XXB323DBA
+
+'@L4pLNM)#X+5jr6Rqf)%)(JpI2h!T"CLk5+%%RC!9(i6b$CUrH8%ii4f&A!4$T)
+
+aEG,!r[15E6F,%$YE)$9G-HG$E#Y$(E!QR%$CH1(+Fi$Tj+4G0A`"i@6efLiMd"1
+
+BT3j06Ld'0C0M6L$(L*[86m*$Y(6$!m"l6&+KZ'!KR89D"5!9M,I,Ap&DEhRI"jk
+
+48M*A%Zdm8%[6q*JJiNIM*qE"*$MV&*l@QlSA`9FKC+&DaJ)22*5M3TF",HEQ9#0
+
+0KeqG8*LV#RBT)Q9bC@NjLUZhSY%KR3Vfb@B2MGRkf!a[L,jA2+TC)%kpFJMP@qM
+
+0#QR%ZZ9'F0aH4S2"fHG'9fF'cjQ3!2Zk&8%)jZCUDAQTlk'-lJjJ(I3Q`$4a5lR
+
+rh%hihK"HfK+!UFD,B0SKrRNB[[N+IGGm+5!Xm&)mJeLRpkZZB,`6NbkIM)YbK5U
+
+QI6KbVmSmapkKe0$X1(Gf4MK'AjeZm0KYHDFE$qkI$I#XHTPNJmqECT,$CC!!!h&
+
+Hh6$rJ(FJ!'-I!ZphI!)qU$e&&MJC(B,HQTc%A4mSC-6a&ZLX-jNd-`P[6FK$pCj
+
+++pQpDXVdK9%`J)q+VPD#X1M"r0)mmGArFCaX)3L4S,+E@SZe&QkDP&3%@2`*BH1
+
+8K"-1A`I39601Cbl16IV)1fJ,%L#$h1Fc3aF6EEY6)dlBRG,cfdY1Ap1b1jfFlL+
+
+Naj,-B!#9DHk4mKC`HqRLdVGA!T8@E1),PJMcaUaBlKZ,VKGLF6%BYpBGKHN'I3l
+
+&8$0&-CL&3c4&dJ+H"AmiMMC0rbAD0+bfTG5'pbTcYD'41rpmBTKLCiCR2NM",jr
+
+A2cP$CPdU#GR&+U4X,rFMh)+8cS5,HNmkjih)5k9m'D9cd!"hK&ZDcEBJ26X*hED
+
+0j55$'pcVj[#5@kM0i(rm`U9cVEjlLfP0[ecRpm6d8Si(NNd`!HkS%DZ)DQf[G(9
+
+L("3GkjP,5f1DrbDQ9eSDTU04R+T3a)N),3HK@#2AJ06Y6(I*D3!,jpZ'Pb(FfU6
+
+GHYd)'e05'kcc+dPpT+JaqmmNG8MS)UP$BTp+DN60!`@b51U5dN,J4K8&Ak[6T6K
+
+&JZYMG6SY@3KBYcS&+YL+-k@&'fU0+Rk(3B*06F#!"fNT`8$RPq%V5V"DM2kqI$f
+
+@B2CkPqFG6@*31XMd&kAcZ0'aiJ4*jU61$5iM"DiqePmB3cqC,r5ApAH4!a0cdP3
+
+cXiLUC2Fjcc*h%EIPKL2Nfi+Ta8986&8A8iR(M%P%3,`6[+ASNVI(,bP`YCfk2A+
+
+4P3lejmRF8IVe504Qffaa$q"S95DA`ZCdmZPH+Fh-ab-(%1[!NF8!$+Dj0'EPJKC
+
+L+@Nd99lckiYh8Emqi9QNcSiXCMAij3LLdE2Y3)c!Q5AjHrdXC#ddlEL-`q'0bVq
+
+pS+p*c1EJ@&)p*31kc)Qkp#qM#BR4bI%Lm*P3Y)@f+8+[+@X0B9iqAY2D9'ZD3VV
+
+Cc8-Kl[SJ!l-iMlk)&--XFMp4Y!CX-e,V''Hj54X+d$R#kDXNGPQ1*1NV&29L(f[
+
+'2866XNJFc4m,2+5e2C@(qVa'0lY8i$k[KVpCf&FPiee4&hSi$'h0)P6XH--'8Qm
+
+HE4eR!ki#D(MirNJAQeH,031+4[+PViakRpZ0AQ9C9hQA#G$H&LQi%RL"NEQIhL,
+
+e'eeUm$5CB6rbe4!T2)S(43B)8Be-1Gh)bIYYRH(d@P5!*2EP,rD*X9Tm8%HRqY-
+
+bZU(e"NTl[BBL5Ii`5K!PkPMd9mQU2IM"*5)TiHfYDhL1,FikR"6SH48l3(D)AlC
+
+A+ph#a#&8V(0Lbl32%i"V02FD'9YdlJ*eS#AYd@h2k[*0fRBqMhY'qSPU+SZ*)T9
+
+lRk9m$(qMk(U9I"d'*d#mNVST1*Q)"&&Z1)qm6)%1i8H%QG6,jI2LH+Skh,3p"48
+
+2e@U(D0R$%JN(Tl5RRq4c94f3!(DB)GL#DClM%e0!P,rlCRY*)RF6#CUhI"HD,+8
+
+0c&Plq$mZaZI!bHk[fH-,M-6e)L&ZpK1TX`KDLdC6J)VD4AEi9Eh)0m%@khY!R03
+
+k"LC"9MY!$9bdCXq`14fC,5*GNC0QJAYANfB[E["9'64$+`cUTYh"FbpACh"Z3Te
+
+&H&qcY&`-MI6-1e%qfDGK!dpMC(`1#rTU$#`!-XU8Z"E1iP)8,fe1(`kqaemjJ&P
+
+'8lD2QMmriL0Z#,kj%RP3F,LE4MH$b&Zb!QY&*N16TDH%S!rQJB"6FCJjrN8m*b!
+
+4LAPrVR$R`L4erdlP1PC-2R2lXQ"VbVc3Z6FbScVP'+,G'fGJU*@lK36ND13CAZc
+
+lP93JZNT-'a-m8Cl94fGV"TD4aFkUrVHZ,A0H2V"(3[UYV9M@LPD"@G6bS(rV)QI
+
+i5i[-ciK&VJ)C3Ch)2Mk(&HLa5-85`*I##XeB4l(q35L8*iNi$mZ6e+Mk)M3hY)U
+
+FGUC8q45XpU9,[pfJTZhA90j9@00I23(%*$S-D'N0iV3f$b3URH%*5eq-A'@0iP!
+
+YqlCRH!,C3lYlmJ`NmR"PI``LG"!3ABX6URNf!LE5K[d4!(LM0KT-*N'Y6pG)16b
+
+h3DY"LZh6K!D!TX#D82Li-N)`BLAH@PI1e50SqA*$VZQRifb@@!*T%%1C4hI*4N@
+
+%'M8``$%%S!#)4S1`[%%r,AQ"A$h"(A4p+fTqH(K0dh9E*YGp-(F%R6q*G9X9MmT
+
+D@)@F$+qUeG9F8)L)ZG4aZ4i`k)6Z`VDdFABVSqRYH[(5h"qRYl'd3Me$c+L-%eB
+
+CKq+kPV"c!AZDRPXJ%KCeD2K2F@L8GG+K+U2*U#ZS0X&NQll#4V2N0"`2jQ@DQ)+
+
+qM-!K&aF*TmjCU0V0#DJM(A"m+&[%bJDU3"[,GApb(*fSmR&8kA!H4hcKrcU1e)a
+
+j(Ip`(#FZ1V8iMXUKCVGDIaQ0bURXc0&Pa)*"1aVT`F3d1MCPMm-5)me&[BS,'f`
+
+$cKHF#2j`R*F#j2G[UU$+G3eXl026q[jPT3raj@PpF&Par-TT9HY6Zka&#[ZXFKe
+
+m9NZ69Y5+K+*VC#5mUqfXPUV9[Fbk0N[l&LbTrFhYdNSC)b@R8LH6#6XZ9'(FM*K
+
+E&l3*SmK&X9@U@$GS,"(a9Y,qiCa(irRbR$G4K*eBh2"DjM6FmQhfJZFT6rR2*U5
+
+`#APV`Lm[+BldC&,jfq9#0rELV[10HGG&CrGH9'%S*e3iq-L9kD"F&qHHeXRea"M
+
+UVRS(UF$rZMQE9ELD%k$hNS4"9I[Q+Z*d('M)(BSbi%LbkGAJFj1H1-LeK-b!"eV
+
+#N!"c"9kA5pdB@!DPr9",!&e9@S*)V*C2F2q-8XcC5$JYj%68jYYEkZ8%-MNK*rM
+
+DKCc3LQ2iBNJkeGRT,k%8*[3eXK$8-d8"U*C")Z#D4!!QEcDei0%E4-"NU`)5m%!
+
+L`&"d&J%G3VlDQd2+bL,5lG2&0F9rQC4QXbhY9ipJa"EliiIZ8c&q-DjfEGmE"Yr
+
+6dRZpkLZ@D#8S3h%IrGJZ9XSip#XACmmY3)&0hh[VqS$YjADQqT%TKZ+QF0A,d46
+
+TmLk4D`2B0LjQ5`B9)!QS'R``9p,-qFVQU09JB1lRSG65YrU*CD-aC8ThZ+TU!!&
+
+f"2lUH-0"[1T5P!a[V3$rm@0fHahX)4#jV@(DX([4Z(Qm@@eFhppfI"!"8r@+M3L
+
+1!jdb[h-AGeh3fYRqjl8SN8pER%S$4+X%RCDAB!A+CcMTYB'5fMHqcm,E,Eb"l*V
+
+QbF`!5`fZc%S)![P!k(K&`3"0B*f)Pj'dB+DcZa#Y-fi90)*9%2bcaHARZNDFb(N
+
+&A2HXAXI8H)@8pM`1h-38kl9)9Y#1Pl'r&YcHpkq&*V4TD*5k'A)'+LLA$2-fkQ4
+
+[2h`)Hj5ba%@dHGp+d,al--3dY@IHZQlr@4-R-Z)8"ab9kU4X,M00F4kijp+UHMa
+
+Q%X'+MqZNh*MFVM%bh(Q0Frf@+F%'@1@"&-ZKA'+IYS+3!"pCbZlCGMMeH(q*Y9)
+
+1HT&,PYpICaYq&jALSdZ-,hpbL6mia$(ip`maPFq[$c'DEC(bV)FBErh$)5lB*UN
+
+$ZdKPm&a''R@IU'@q$`LlfA3%pbk`6Si[4&rJH"4kfm'3!)ikF1,E"DY1A)TkMDr
+
+C(D*VGC)h16NA88GcI)U9pKa1FG[Z@Z6ehLQQD9S(VC2elkIBJZI32L6F99%61r)
+
+6e)H[H#D9ZjqD'6B4'mIejJqM")'lcAe,I'PbP`C$B$&81N[D)qlQkke3SCSEq1J
+
+2FT@JiUa9H30RNc6j%B-D3SaGieadQd`-$*%5!Q#)rSD#3a+HNJ)FfGhSN3([,fE
+
+'(X,9c)#Vc'hRXm23eR0DZ2qB@YCfA#J@rRPNFjmRcF"4M'h(*dV9SVLD'j!!m$J
+
+h26`-$RAYrcQi[R9bXZmUI,*jdeV$M6&&LXH)j&D-mIb,dr2[acJAeVNHASa46IV
+
+r-FC1+l&cXC)9UQ3phlRSNDEVZCJbPF)`j4N`!',+$$q',i&F8icBN!!lbN+IG0h
+
+2DZ*2eQ[+X)GhS'T5X"hPdIrZ@aA0MBeHVJKmp%8Sr9B8F2kq#cjkc&Rr--bClfp
+
+chT5akCLSRPfPT,2YAYq6c(1LFh&E[$MLQM"1fL99PfEU'RBYFFjld(TKT1DR-eG
+
+5DI6LG9dq[XkdRd&PN!"$8+p821[E!q5HiaQi5aUd+h`G5GLSe!U)``3h6E#h+,!
+
+m!LQRa!Ui9c&Elji04Xp1d,i"Y83[3N%k+mX&Chj!5BJq*`[-#KURVKT(T)L+1BX
+
+PJ0AB`LbA@2)e',Li`N,%p04ahNh9P5I*qJBi@68$%2VITIJG1b`qJamAm2BmA2j
+
++l'QfZR&1dBT6[XV9E"%M,-LN+Y+Q&j2VRA'QA'8Fj,V+'MHFqK8+3CCPkPeT+%9
+
+&134$Se4`Vi2f01MNr(f4l(%fj2Z'Ne4cdAVTA6+L3(FE%5pB6@SG6b-i5)D9(&k
+
+P9f(G8j`Nc&(c3@I#SMdLfrrkNA)#&p8hT)iIC4"@5#-+%j5'Cl-NbmKq#c4%(+E
+
+$-k9%'D2YX$Sj`Y@"MKZK-l3T89af5Gep8FIZ[H`Y+rkLB33!IXXfP)j0@@E#AQB
+
+3iI#+0mhNY313!&UCeQ#54R0h6cqmZ1bJ@qL(CZT&DD(Pb1*ViUEkQ')B3SXZAIr
+
+#94$kYkbb0)eB$aUa$(8L*5X4#kG,*5&e3Y*G`%GJadaYmHP%39ICXphdG6ie1j%
+
+26h`4!YbT,1Y*B'l,816cXUrR2,Z%3SFDSm-i(9DK%Ccc@bK$KeFX8QeEF#L3!*2
+
+K$mHT0V$-rLE99LUH1`%IpH@Kk!Kc!CpBePNCV"qA%P-,-EA2lPP[K1GI-+`S8,C
+
+`CaPr$a4-"J%-b0YB2Tdb#&kNL,-QdB#8#,6m03(f)l8P'#5V2m'M-@K!rYKR2Ij
+
+XC*N8mX"phSI'-9TBi`a*%rZ"9Gh,`PDFlU#EL8&Y)ML%8TQBP``C#ffH&"Ad)jQ
+
+99m9haYLl`([kRe8@4MVc)$`HR*fGNM'!Dm3PGY#YR1QpMcF'`j[Kj5b%8pG0J#T
+
+I`A%-`Qd5IJES0@[I[EE'Ra8'cJ&)GaG8!VL"bbYCDKIVQG5NZJXkUrRkhDLXH5l
+
+qfPI[CTcfr'rr4'm5,E`,Gd9fIhqbc,XcD*@&dG*@+a",0$q)K5bk-+pRFZF8G84
+
+Be4"hVX@3!0#)dYeU@e"UZ$i$$VK5Q`&d&RaR8AMmXTmK-3)qF2!kkU*fE)jB3ST
+
+#0`a@FflXC%VJMNLNjq&CN!#`Dj(S8rI)D8"BjeR4HHk,lj85IA8j1DU@%Jl0hF,
+
+c"RBl#Xm(&N`,jZ%6)TKAi%mLf"H*f)4[JK%FP4,01E$N3dY[eNUFI`%&pS(eb'C
+
+F$-$[1I%HTGDfM0M"KD2BlK,1QHBGALeX'f-EE11XlCA@+5dT``8YRiAc'jm&@%b
+
+ETm%S*ZlTiqa9QdL%94fUSr[FJb-IqCS0!V"p4@X(kp)'N!#,1Ef$4mPk2$fA`q"
+
+N2r[BP*CYhFQebL-3JhE2L@Hp3'CA)KNaVq@S!ihjX3m2d%S3c'3'djrDJeeXiSp
+
+iPC)2kSkjIiQ$K5qeCjm0(UL2qA(hl"b)&cr%CA%cem"GieB2RIhbUKrNr$EY44%
+
+eDhf!dB[@,C*`JSmZ6XY9eB[6plMTiNMbe)[6E8VYA+fR"pmRpT(m[V,jYGa(3c-
+
+%G&i!K3)B2'Lc8kZ-[L-f1cJUZ0CPXja9kXElj8j[P0!9mpP1JiXJP1r#'BMicQE
+
+*bH#A,VaJk1-B5((`42RT)Bq"XYlr5[(N00,**3c0NlNhUkY(dETY[*R0m0VG%rR
+
+acZrKP[CQ9hd$TkV(&dEA())4MC[mBC3J909a99E8LqBY90ql06b[e!3br2+ce)!
+
+[YK9KV3Rhc&aV038HE1`Y*VqJ3$Y#T@c1@$AKa"mBPjFISqVpRS8Yb1RfFT6GrjP
+
+rN!#k*Bk!AffKL*8rd-&S%TRHlqi([39$4q5$#6S"IM*'hPq-#P[CL6`ZfmAFqHL
+
+c-A4bY6"Pd4EXK4Nb25BS`e35ZaSH0XfRJ)j8jhCRNp'h+C!!B#BIZ9Kmmj@MMhl
+
+kbDqrr2,rq1ah00&bi5CY0#a(p'r6SRrrB`2R)kLVeN&6NY3Apferj'J*30[-&cr
+
+f''#0*f(cZja3$9NfEH"#dXJe(d2rCF&e)49UX,JG[S&VU80%d6aFXLQF3#8$2PY
+
+FC6*C&K9d*EY6H&G#BH!BPIVZfPCdkN6)9eA[bm8p8TQDSim+PK&e#ih,lbqdm,,
+
+NbUqGKqU+AX@*-Y(V9YD'Dh*FKdlYXqpli++XZQ"m2X$r5&S8Q%H4&E`l64*Add[
+
+jVC`JR2%Al!j)hqL0N8eVCk!dKh3X-"J"Z)UA$(HJFbP3lM"3IFkGG%IUS($(C1J
+
+Z+EU@GSBBdE-`Y[Mh5@50!l!RN`rR@l8+KP-e8(SdR85Jkdj+I6"F+82q#HbZ$-3
+
+aMX8*K`Lj$e)iShJQ*bRl%U(E"$(-qGKbfe4JSjpK3!pV6XE%+*Em+NH&DE422GU
+
+'#VJj!!F+TI%LS-TZ%(LY`kkZm*2iQYbJFK9fJ&EKPXm#8CcRJFJ')40HlEcmrN*
+
+-UN,crFf&q1K!J+(cN`[aj%$J1rS,-8-('RFa,d5L0ABAJM,kJ`XKEja!am1"d%3
+
+keN%8SME!95PpZE@m%PcAP#0P2L`VmN(3)TRE9d)Ue-AP"$`++NF`jc'X)#1*m2c
+
+)B+EmVS[*'r0Ulk&-Epjd$Dia8aYd1aDfCCrhlN6V%m3)!!eGj"FUmZb`FX2&9(+
+
+P,1%LCH-CCc9J5ZG3C@KHE'!@5i#S`2TSGb5Uj(Mf9qI%L$kP#JS(*A&ID&ZP!CD
+
+cBE0-K%)32f(GHEaYbq,QJf-HV@T`Kp4!D#2m!5H0[5FcbpN+ad9XcYfTC@`IS$M
+
+MT[j6P94km`NIV38D@-d+XPjfRH)P,I[CdCGXJT-Zbl#ifj%-V*MT5mpHP30,@Th
+
+!IVh%a*6a8*CQE#[L%*'B++LbhcY('Y2Rj&T&A"PKjpG3ADpB6PUP489De#+9L[9
+
+,8qJVbq6JPE@3!+M!9+dUYl0@Ja&Ei!C1JZSB0HS'%acSd#XaYN`&G*9iJ5'p0"F
+
+@a3cE#(T-q0F*!q!k)!"r%jD,+aFVeYAp)ffA0dkHZhS1DQ*Ab9[+!q801F`IM9m
+
+1*Xa4@9S`haHiZ)[fiHQIqT3AEQ5ab0%FjJHLl&CK5)@5@FZK1F#CFGUZ#!raP$A
+
+!mQ2KE'SXGYFHcC9am-`IZhQ-r-jFJ8a$PrQ[ekdp&1IcPG-r,X"kme1h`*6Df`$
+
+DhS$QiP5RDl%"i'X0!R3"B33*E"eDjV)VNlD@)2)"L@YpXJ6E`P6[*k[Qj@i$J%Z
+
+Cq3dFmRh45CU$2p-EVhG1qQ0Lh3hH),*!brCTCK`(k!fUH&0%#A5jSSjaq)UP)4E
+
+@5&(9')Ie,iRlh"QAaMA1F!'e5[+Vcpk6UreGd46S"PcafPkIAFPl9F+Mm3lY#q6
+
+KPL)E*ZC&V2#A0--9KHHAhYV`P`3raM35I0lT4P9qD3"-HQj4*j4+Yeb&+1hLC,S
+
+#B16[iUZHhEIVSk5!LFZVXUjA6T@LflSS(EaHB+d5c"E@D66T1f*`M&9DLQeD'eI
+
+G6KF-"F83X2R9L-P$YPc!j01q%U+9ilc)@H[*(eK&#La9acm&4A3pjhA2"&5M5Z#
+
+DiKaBF!%0KQ1LP-ikk4jM*5SBSq8b+ej6iZ%cmZ)L[5HFKSbd*KJ[-`6U2EDY9fY
+
+LZ3QAeQEi$"3X#8@iTQ!P-lH)GI$#)02"e@Yb029X'#!6A0B!3r9pPBb$#i)BIZQ
+
+eG$rHI9Y`'%LC*-IGcfX%VbZ#j+K)ZSb8Hi!E))@UBP0qmLV`MNd'"+HJ@l%A3NE
+
+GidU)FE-(NT2eH!QIiB"S%mbPGLdQdHA"RKR$KkNJeLp'8rZN@k4!GZKdE`GURm5
+
+blC5RNRr,e5G52L&QH4YZU)X+UJX5&+5CVLrV'E$q'`T0a[(-b1LarDD$K(PH99H
+
+$6JHN&Pk`AQRbV2Z'h9'F"6+#ffeaJ-9X#mBEa[)-6Z&@)QG%A4%h)TPf3'l1FQ9
+
+0"i49LR6f`1aJc'%0KEbjA34JJb(,!(U99*rL#aICc3B+PHAk*(XT34$pH(ShlB*
+
+(-(AKdV&X3kk89&-E+pBJQ8-5URSj0Y$YTk@i'*XJ[0J!%Q-M',mikdZ9'9595ck
+
+ST`khY[H5fUKG#*d&$aLR#Vk+`1E#EM)p)lEjdT)[Ad,b4YQ(JJ1A&Mb6dB8J5S8
+
+mJ&PJPM9@ST[eU1I'rS8H38(I&Ub4a*CIqZ%9@#V-29dm'TpTIY(Y9Ycq0!9A4A9
+
+P9kEYUJ0FmAf,$D!cPbRB!9QH+NSiE9Uq3Qf0I5YJDaL0%3E)KVQB-Vp&H+9m2@G
+
+-aX,5IZNUJ,iYM4qLhSm#V(`Ji4c@)),1fEi"I[QMAKh@%&abUaLQ'qdYF*RPpr6
+
+*rLPE(T6X(hLG+l2+!Gqa-0efN!#,39d@IaJP#1lec+b)@!3Rlp#'"M6Da5eT+%)
+
+)14h$9[Epie%+81i*d`Uk*p%iF1T#4HbT0"m2akAF&J8'PBcUEVjUfA41Q'*$,b%
+
+Php+[52"p`6Ebr4eeFd)h%d,#jhY!f5h0,eQRX`Tj05bN!YJ50FT-2832KY-SLT3
+
+J6H[+S&ElR!Z*P%E86L0qSHpfD@mImX!)b[Z@jLhd$da!rR@#FMRp!H9b5*,#Rjp
+
+@d-,'(hjeN!"QlL!KmU2Na%hfrA%pTc8JGH"J@A`9BYZC%G[UGGGhVp1CF5RM,m+
+
+Uk'bGC5(G'e&#lZ+b&I'dE@h8GlcT84$Y5X&9e2ZUbQ$CIdP(b!eA#$lI00c*Fi2
+
+6mqI(SaFMH#%)*6"B,C'[6e,qppCL!Gbp41b4qjH*N!"HFLM22fR6fh8pMrDIpX&
+
+e9@9(XELc@m@0CkeT+bQhUa*Ciei9bKC4Ve2cSH(H&VHC&a2K[(Z)BmQ)XjibF8&
+
+81DbTS1d8QH2S)E$&IUHJ)!*HS-$'mKh4mejb"[d``&V$FF&G%9,"PBMY@lA)rVM
+
+VmjBf2@cZp4D$ikfD+CdGB6PA@(AHE[fC$K-@3*iZ2LEkZ5"hNcQ61j*3,4)@U"`
+
+jA),-1&c9MV)*PKFG$B`2ll+hMEbDf4ZKGCqGaD`[iN3E-fAV9MP#Hp5q)(,FJ*@
+
+P6YiS8RX"djV,aJTAE$#RACi!k1eh`,ah1Ic+*3L%3kY-5d4MqmZhURCMm'9jq(i
+
+kkZH(,p[GH2KdYIJ4Lm-RUDqd0LpIhdQ&J%`B$ElRkh@9"@VrC8J23&G%J'3q"Ff
+
+kXBUR&kN!5A8dN3Ac!HkGeUN53h8'#YB$&UG[4J"NJ[SNGjf'KA`*Y%1T(5l*-dc
+
+H4P[c4S+f-IRE!F%HmI%-PT5MRH%lPDqSpRaI&Q%j3#lD5P$0F%GFJ,--&X09aH5
+
+GmP!Mh"+-[UN"4RDAc4qd9GqCiJ+fXKkAqDdf(JH('lmbkC9)A-[leJQM'%C[#3k
+
+6m86NAe%[&b5Ad5q84#K'M`C',(lRA9$N!LX3J!UeikSJ$V+4Me%@EdjPqdcFNF"
+
+1,qU(hh(lB'kK#PF0)@A-bE3edIjLac,-)AL!Z#b3!#EUZ1M8PjBFYX#KKeS#T8T
+
+00Ld8Bpq!YQd'%+#P&XZfH)ZqDLBS5pl[+(2,qqff!b4"KJ1ZI[pk`#pF("rV+p%
+
+C!3(3QKNTr&CYldU&Pe#HVSrmc3U6'*@rkF0SPcEB1e9+"&P5j)2B9c&%ZF++,ej
+
+JcMaec'-ik("%jKrH52-L5ap#k6RbfBP`Xr*9HAG#2"&Q2#02l4SL&T*0BqdFJ$@
+
+JKhTC8(1(`$MQc-HYZ#CaLr`e[8-I)E-D)ZSXj%"q8RqMQlGUY,!FTd,IciUV[qV
+
+4)+53!$iJl"Ib!IIKj#I[4h4bY9Df"5*21`SDbYb!iRP6DP1(9Vp`lj3)Bh2QX,H
+
+H0*I!Qb"Dh54"9bc1+iJG`dIN`(@mS[,pIlSDMD!h4+e&@@aM(%UiPaIVhQbhkCa
+
+*5c$jiB52cK)N@F'FAQ2THaDYeC%IeD`YQi++k!iN[f3f#",e,*rULS&HQH5JNhV
+
++8DU,15I[-D9SBEK'@N*P*(aEim-ZVfS-hE1fp@'dZ[NhDHR'FK3LVQUM+[p9)VM
+
+80*NY"@j[1*Q8@'#AF0drpY@TUSj3f5)dNc5-NHR-SN5&KhmAULppYF*XIA*6&GG
+
+aT@bbfY,1T(Z#*m*"VI@#')Ib6R`k@L4U','fNi5ZTVNR-400UH[UfI-H*""NahZ
+
+*1iQQ0h'cN!!i@!ha9+2L+h&CUmh9IS#A-[56m)G$"3FGN!#XlpIVX@*qIhrJimf
+
+Dc8cR)ChH#2bI%IH`,A[2C4%qkm9UI%jVE!fJkNf23p@b8)U&4`Ih$@AK1JTZZr`
+
+-ME2[PJmI(DaN$KpLiq8+c@RNeN-NR6l3&FSb+kFKd6[!S-!,+3*4qa&3e%R$6$X
+
+YG[bi6#'JUCd8Ek[Kr8QI6hR$NMe-U#ibe,q(+Pl2N!#m98XHhb'kTCLV$H8U5JS
+
+-52&V&'&h6,cNi&*HUh366pa*@02$GAcD"&#-qI*'F6I''Y4E&%qEMJaMKCZ$JqL
+
+6R)!V95G(iUZH(LU0,J2CkKBcV-+jQmb+E4imq$L[*I3+LdfKm*!!PY"cFJ4FdJ2
+
+`I#`B,V*m[RD6MqK-hGRFhe*hQ1)$XR4cN9@B`[e!p3Yr1-iUI-TQf&'2T"C6XZH
+
+ejf-mq90TIjfQe05U*(+#Qp)EZKY&+!BXYQThbiA5Cb$EP95+$4$T@YTqGpM9+LL
+
+MG1TF1C@"A5PhT,pB@k!"Z#C8r'l88$A&)Z'-E)$MZqj[T!2'QHDeF(9!C2KUQLi
+
+r%8dre$D4G+NPV&GJL11Me5B@DF,djG*RbBS,QADb[0%Pa3MjJ+"A$SB04r40lLI
+
+@,Td%FNTI#dY'h9S"T-(80rh+c2T'$@Y'2P@#"2Z6YKk"KHi5E*q'#fRB8GA@ZN`
+
+FDd@4`Jh,9MZ-%aYJk$QX*l3CdY("YkH$,cZS`%V$bPGf(INmc@-1BrMGI5Sa)m9
+
+`B(P2U52MG)6*M*X',fD3!!GQNDY&fUJq2RXa14Y29#Id!1I@dq@QF`lE*!b!QC3
+
+C(j&#DBF)#&L2!,rl&Sc!'e!VDM"r$8FDIIM+111Bi*aMe(YB1`-G!S%J&%0TIiS
+
+q'*,QBXp[JP(LlXSJ*a38pAbVd0PKd+D6,8Y9JZ@qP90Hp$cKFU'*HAB)!JU%`Te
+
+3i'e6HipD94*GDppba9kqc(!86U-`UUXJMBEF"(RJ#k4iek35('&3Rd'-XdU6f0H
+
+S,m+P5&@%QJ#UF4b*4,%(icF!GM,Y9jDkdX!!&GaQ,ai[PE(bHD95Ne$4!5Mm'mS
+
+p$%5M1faC-aUD$[jKr0,1D!0lQ-X+ZfJ2IbMEN4id"8P($K-X1ZNI,D&)"rr)XTh
+
+0!h5GV0Z"+YrR##TPE5e(+"LL#B2TDTC!K9PV2KVa$RBD#aekh#D0XG#Vb@+c!i`
+
+e5mqpmp#4,%Yh$e6#ZJ9-MT&V'&[d+LiE%L[A243IHJD58S+kVk*HVhPUQj)293C
+
+Dc4626)iGQ@,b52$G88PN5!V*qLBKR4G99l,G0LVKkVCPY84efdUUZD+$"rq(2Jj
+
+1G@'m009)+63),"K+"le+,Tfb2pAQF*XL"$iec"*K$Kp'EACV!qSjD8-I38Ff1Ta
+
+hEVZ!ZVbZd)d,6ic2)mcQSU3LEVh'i),KL1MJeIkqd0jP4mS9S6kK@j!!r804jN#
+
+I*b,MIN0H(VcIk%EU25dlV,kV$L1fQG`ecU`0fK)5qN9c5UUee6aalKhPZAMAkTR
+
+J0'h38d5jplhP#$L2,N(!Tp'FaajS$4256F(rimT#c89JIQ&,4%6!k`*k1cXf1H4
+
+kI%2f"%MFJL&#R6E$eb)59e![Y4M1q24J"GI`k4V)Y[K%c5+J`(q@AkDJM`K2f4!
+
+&S@TG#DE#RHK6"3`)#CZ!53*GVKX*fYAY*'H-c3hANC6V"KLQD'$Dq,,REXX9R4(
+
+3+BqlBZ0k$'9F8(D[[[5%-*&ZpR&RQHl*CBqM9@adhfeX8(GTP&-)MkcFlFURQqd
+
+,CRKTG+S1bSG[(RMIM2EP0"8!c!*59@9%GjmYpKlNNeq6hMSNGRqUqB4SX!9QcjY
+
+FU`''QeaL5!#JM*ZFV@DP8k[c[qBXqFlMV0XBI%he2MZ$Ad2aVDKiiZ-YLl1V()U
+
+pfp9C,JNIhTfic1hM0"9K#!jA@MIqq&$c&#8kJ5keIH82$h9@3[SqTqD,f#BkrNT
+
+M+5`e8f@SSFCXBREDir28TJI"Bic1Z#%&f%rbZIBq,SjrE@Fi0akF@BQPXeECFjS
+
+Ml2BhcG`dfPP'd8fB(iTm8eKVf3L"+G(MU[DQ#E&J"N*id2("bf8bXmUSG(ASV9f
+
+UheLKchaK[D@jH(*jP,0UA@bBI8XFa,@cDk"3TG`GL*Xl"JcCNC!!91j'*'[J*AH
+
+*Y3f''TB-*9hXrZLMdPE(T[$VC+[l!hRE1T,A44Ik&I!L5298H`Y,ZJM3XFJ#(!R
+
+`P"*d5*%HCUiF9DeGKe'AX3MYce#,KHiXr[#hd(j(V2Q+0eP9S14e0eV!'I(BeYl
+
+UK!Q3!)YXPM)0RcN$1Ap8+GQ#k8lEEL82CJYFD)FrC3ch'eK0pSLrqdl5,kE#AD3
+
++DBXTa56mSmb*,3C@h538c'cK0qY*`4#RR(3KUDk1,,Ne$m"1YB(Hbaq49GqKm-4
+
+IYia-8YM2C'6$XadCN!#4S&ZMaLLLQ,SNC@6Ac"%bXM-0'%Tk)L1hH#kB2-b%@-M
+
+)p#Skl[H8NGPpN!!HmhT0L1[8NmSUr-VPHFZYAVM$hN$&#ame-aE#Ff[*SQ$,mqk
+
+m#c&TZeC32r9,mARqdPBMeVk8XLF%B+h+2fPa$DY&XHB)iFLMLe"(*ZD#4SrK#-p
+
+M5hJ)fG-QjY1S&BmZhc#I!2-9STEai89qPEh0NS)&f#%Ld2JedIPDhGM#,BV0f&D
+
+))ecCKbdhX#e9KC2TkB4DiR&S2E$3+SQfa#p4&kaCfK6J4T1XAVrTHrYp@Ye[(PG
+
+Za8[FELhLCX1aGG0[bX*#!hJ8H2(0U[!QPENii$kch&JpbrT)j42I[hTBlHCS(KZ
+
+DJH66REShYeY4r@&N8ckb5M5BZ9UAE6dF1Cm+H5C43NPhaZeZdU3d5D4IVF-Ip@)
+
+ZT023@%!YPAb,9Q"f,KjXafFjb9eh8V02a-!f`,$6m8eq9KKVqKM%3M+1jLSTHB[
+
++99hEH6i6Q6lK@Ld$0cjh4#3YJ4kRVS*H(LTCJp&+p!85bU$eCT&36l[6bTlZDZa
+
+L`8rpSVi)MhR%"M8XcbR214(fh+8H)BSCd%pUG51b5a&TRLSG8U&XhLqNLKGZ@QP
+
+QIi900'k1H&8jamB'd[K0G#ES"GZUM(Qe4k4a2K48$jJ!Uh*mPfR6m*6cHB3IJmU
+
+d9@RT0+I6Yp#*DBYh-3K@'EbRSRT"2'GX1hLS0mU#GbS'cI#CMB[ke09ddL"bBpe
+
+K(M5SR8c[bC*BRQQ&$MF2@)!FL%kd4)5[G*CrP(HebS*M'ZJM*9-L%r8fip6Afk`
+
+hi*M%EDlR9,GCNjQTRk@1N[(6ilJD2XcE+6CI(HGkkFYalK[@&-0F',,XJ#LXPpe
+
+aeL`fe-##pb+AXVV53Pl*6J@-Y"L)`fQ@IhLFZE#6QjGCP!L9Q@&&NV3mcG(#Cr3
+
+PhfLeVLJh'kl@F*ShQQ)SE4Sjlr+b*`ie)4m@a3d3'I$)B,1+-,k3!'2!bIV4X@[
+
+%Gr+VSmCJGSc21d6KNM1@ZefC4pHdb"DKh!eSEBK[rR!Fb[d-!26(3%LJe[Va)VR
+
+EXiLNke+k-#4q5lmSa8HC%6pAk56C@CUki)SD(kSTiU-jhkr9F@r8Rj%CFEF+QcV
+
+qbGJZ[RZC,)lJZ3TDmHqiP8iBa10lI*36q$ZIhXdUeNYch)ZE[JT**Z1Q2p5*I9d
+
+hVI'KAaGQ1efB3+SZ&V8,d3eb9&2"-TR5#5T&l#8"EUN3+&@+ZblFj&9!1hG"PR*
+
+kq9SXIQ&m&RYr5rZp@(5i$KIaAfN6VbPH!PhQK`a10XmLqJX3+J1*%Fii-##FLP0
+
+b`0SDFbPeMj&F#aqc#TXS`qZSKHfI#fGUU-D[D9jkB8$4L[SZ%4(,f,b+L'j%rb-
+
+hRPD-ld[CfmKj[E`0mLXa8VkSG3T'5#0mQjj&3"p*GVHDllh%0Zd)59C@X``3&(G
+
+3Qj0a&hpK9R+AU%QY2Nja`ES`R+(Sh`!8N!!dE3YTeM6[96YI5*,Xi@ZZ)ZH1MYC
+
+JM&Sb+,T#X`-1M)p53A*CLGLa52cdLm#3!(RdGp'2Ujh%KBkke"2A@+pERlYSBLd
+
+P`T8+64pF+)1!)Nr4HHXF!,Q4)2ajV`3r%,$qqp'(p1Tp(!YmR"CjJr5(Q5SbIrL
+
+)qM[2!llk$DE1Ifl[h##64'Aehr)%%Jl[Zlbd&%"3CP4`hIa&@Z0TBchA89CV,'h
+
+NF!BU&h+Kb-pbZCk%3#hCGLf3!)a3$hEXB`"XPeYIQB#5GdN'J"@Er-Ycic1H)S[
+
+'jM(%E8bY*$q!-Vr9Yj*-&SZk6kdKNlB4D'GV2T8p2Y'!EeC*pT44#YR&Y"*U)*V
+
+AZ`LKKR'GD1cCGP1U4[Z"pf(aD8Q%aG3D9am,S6&+h6dd-k&6N`0Z[+`4FlV"pUh
+
+i%X4C-fT-X'eb5E%e@flClT6$DlcAJE@0JqMH89RHD-BhYcSbjDp-"X24+l0e5VR
+
+pMX%,Y5JhU"$aHDmaDbZk0XVLmP'eYUXV`P2S+YUa5U%pVL,cq%lH`kHUpHeU)lA
+
+KCD)Tq65f(fAE[R`k11'PrIYLJjUE2rpd!X3cEJarh!@S`%YiqTTqrI'T-+GFhm#
+
+Ac#NLIX4D$Rj#)TQmjV-9`(HhTbNR0ZE1PJ-ZQ,`J!kQkYGq(1Y$[Ef0*B3ba%3*
+
+RcXPR4i0k6jpi+)Q0idL5$3V@P$AeULR-C,Mb,DT-a-AklNY84bV#T9bF)kU*riD
+
+$m[+CNYc(H#&K+jCYpHLl'qk08eef+lhY8$9N8PYb-%NAN!!i5J!C`MF@JQQaHP6
+
+3qV"Nf5$MM%2H4S5#HbIYTcU)m$RIBdYdd31pD9GSKU@X!M[GReC"LA1fa2q%U5D
+
+'(Le")6F9'3PYX[h`M6m`(5m%,#IA+8H!UebGjR'MKQ%6!eZmaHHSraC4B3,Z8*!
+
+!)m`44EA$mEe5K`0qL3i([,U1!@r%(804JNB9CYf9X0(i1+Tff[Jer#@m[kdFGJQ
+
+GjHiNCbeCN`JEB)V-@M+YXKe5+iVD`KcT5QLTf[E9NP2j54b+E+`h[[,)FRh6)&H
+
+c(UJN%&%!Ti,`HK#pKFRGM$&ZHmK5#m+E%ZLb)B2Z'Y)meYY@j49S*PfpfUBdS#*
+
+6TlpX(e04phK(6+DB8hB---Tm90dKLefQ%PmD6N&VJ+N4NHaN8,02`0-XX"CDN9,
+
+K0-e[Al8[Ed,dJ3##2r`YIlN!')fYSUj3PCYZ4$ChPjYShkVEV&VFh4VPbPD9XJ-
+
+N1V49YKb`9G$%9MEmA'e9C5FTQeM5%CIQh$*a2,d$UH!X6f4F36j48*Y85T2XXNp
+
+CGIFqm)YG+fP"U+EPJrHU$#X+"0)Y[c8D"l-#"MjeYb#4UE-&MN5QQmbm)KB%eZR
+
+pMJ"$+8Jk"P,hHRdbJj&lJNj,cq206fZ5AA8P*&C#*'`[l0H%hICa6lc8`j9#bLX
+
+@CEe'MG"hL-"5k"T3U4c$'bU1'[D14%3Pik,ki[!*Q2a@J"lII8p"8%1r,3d%VC-
+
+5-BRm`6"b@NF'EHZ1dhhqSQSQVGq1MbL%`0V9L9UZhl6-ZVaqr@4ae$19*qIS6%A
+
+`-@jr5I+8GCb)Q+d86BFBU#pC,PdH*e62%&1TlGcHrpLjXR,'Pq6AGV3YTYb0MVR
+
+d6`eE&@Y8TX[!Q,L3!#,[60IET)ma,TlC!"b%,58m$4@A`44eBiKl`b*HA%pjPS@
+
+ka+E&R')%@RDRUqY'faCc)6Qrd,BVq(2L!jq4"%(P&F@8*J+khj*!M0,5HmQY*5'
+
+MH4DkNPra#Kh"D-8Z4FPC%KCIjRIi8hmTXJRfZNY@A-*-UI9fm@BSEEAJ1!Z'AL"
+
+UrBJh4+fc)aabeA0*dSk+(9N5KpC1Q[L55JN%3k30mGJ!#M3h(4[lJSURHC!!9$Z
+
+F33N2#PDmcI[dFdT64rd)I9qd*Qf,)E0"+TaRCe@e3BKJ`dM8'lDaH"C(-*iPJT!
+
+!KN(*(e2Ym,Ia!MXYI&l[0pF$k%L)qHqhaDI#)6!bfJcSJ%'!"',[!(4'iM"J,Ai
+
+d&RA#8VVD@MVQ`ZFh0"B`%aLU150eZ9krEF&LJ'DKHb&ZUljmKl&*I[RZm6'95A6
+
+)C(e@QL[FY",A5A+2%baP%i9JCj)%8C,!pH'H#"qU&Sd!cQ)LE!T4DcK6!j6MN90
+
+2apYZZe1%DY,+BSm-8HjRb5@ESF[dk8M*iKPdKcj"!)jP$cNK`f3BZ#j@%9YKLkB
+
+#--X((mLSYeZ06h$[bqAd"Z6UT@CQcbB,(RB[,m&"3pI@Vq2hNmGbY`GdFPhcf%i
+
+F-Cq)Dq&RAjPG&"d-GhECe`X+IjaA[m-rl'r3R,d1UQM69l4(*pjQ5A"PT)E!V5J
+
+A$"Ze-(Hf%+N'A5*r1%l'2BB)9ClG6JliHPm&bXq&dI%R*5a(Kb%5[1%#K@h[Mh(
+
+eMjEY2+F9bhE415PUCZK"RP@#'6lKS*rjUSjYa*CY#9Pd"kXfp@'I#GcQELr!iXG
+
+&b6[NMJb',6MYFj04YmYCVb`rH$0"m&"Q#V*%("$j1iJ5ki+iTDB6r!-(Y`+P2A(
+
+H3(lI3JTCjT2fRRAqHTAYEi+S0+&6e029BS$LTNDrilZ1(,`aIH2fKV23pm!YUN6
+
+$Jdh2TF0)@Q,-4,V)i!iZGE1P*Z-b4@S%96JXL-IpQAFh@m#[[NVHM3AIFjL3!)-
+
+`%A2AAp66qMb0a6DE`SZ"BLHERaJ@HeN#AdjlBU&6X#r4IQ%f@i9S*&6LilNbA04
+
+D$&ab[81iqbfISBr4m$Pm8&C2c)8+&+CdR`8SNM1FHLMB)QqVp!f%`69cR%#BU$D
+
+DHVS)(Kf@i8YMIl`Lp4-&J--*IJhS!8%r%p40R$MV$9bM`Be89PMKXkcDcLqZEAH
+
+P"%E+,!-lHIFLH44SQdS8&B0pfN,AIkD*([MVk$KF@@`b+PrdME,&#ICKl5ffifi
+
+`"8F8,V*2A*2I5J@b&dBP#6,H%N*0(QMD*JTLV-YM5eZd!MbNC!c`3`H+00SSIHJ
+
+#'fDmITf!P'&4pjba[T+CIcS'TNjBL8N9GC2&VeVfB'JdKV[0h&&0hEZLKdh-`Kq
+
+@X)2GIa-U)lZMMcX2+mK6JLhB(A%b"[r&--SU&[Xfk[H0T(LBEPE'`p$+Gl+)M,1
+
+4QkE)Pl55rF1liKK+bXYULI@'%jaIE@%4lVCP@+QA)CGI4GXrM23mbYh8lY33k$$
+
+SDjDZ$d'J-Mrl8m121RD5N!#T@'P0HTrPr#NbdTqrNMM)qcG8k*F$D*5FDlZHFj8
+
+LfG-*kSD6i`Fl4e(F2(lZT&[F2jUfp3#q&lC6rQ$B*(imlb&2-1jKclpBXX!SIdK
+
+#PDiKKTPQTEh#SmfAHrkYX,0Ga-`UGadaGUlc)P+4R&c%DSYZS$)"diM2Nd1d5Rh
+
+U2!l+D)#(8&0@Ga5cf(bB(V0X+VE,UjLZZUqLP,R,pJ9!8-pMhG,1NKd1*1`d'E`
+
+4DX[@fV"BFG+)P&V1h`2p#[M)1*kR+6Dp)-qRr9H%JIM4r38ibV#jk5m*!L+4AmX
+
+LX[i&,[l#r*T$CNliea1`d#I*TP1+d-U'%NR)3Y@c)&Q`,ZZkGBZ69A!@@c'5VeR
+
+APjNUV(a#diHe1@+`B`U-Rmk)0QE5-MC0T-iGH`Kdqi@(E'[BSE8ZR9cF0A+dY#a
+
++Q8ReFKZPie(I8qP[)mR6%[)Kid19YUp#2[K8!8!ZLdAX+2J-fX6E0-5HiLX`N!!
+
+JD8[ZaYYiLljJlQQ6Ll4#SA8NP30#SB@J3RkQZ40apVc55heF6RbPl%KMkbBEh0h
+
+qC0Y"`pL@D+B%SpqR2-PHE[K&G8*NBNUKU'T(BU)UrB$J'MV1'@Z[3LJh%b8b`6,
+
+UpT,drYCFeb6V55)*Xpj@#S8QRZ[*&cXPdKEH`&*FcNY!R"([4(5mGCJ##rDfB#&
+
+VUmCU%KhL&kfa4LPIQj[9)G(#QCG&QU9VILeX,IdT4-GKKNX@k[qNF!T%rC&ZEEU
+
+ph4Ji@ZMKlG6lbC&KB$k#Vp9mSmMAN5PdN!$Pb)5D+dFQb0`k(9peE"(khCA*PqR
+
++A2dSlKXlRTE3r$LSiZ)#mFcJm)6VfY(5FFM,-l1%SeA[9qjQ93$GRB(I8-k-![&
+
+aCN$VC*Iim,YYiRi%YpQD$a"VJ&*GH@H+8e`1QBf"rY!d"C1(8(G'AQ+l-`T-YMY
+
+c)Ne+-qe"CLZ%%!CebN$cPM5*ErjMrcXUaV[+cRCK3"MEkMUj$rU`(8SLYR)XZiR
+
++-HK5J81Y4"HeeJ&&8R-K4b0Z!jVXTK[E9'$[KfGEeP3[h,3iDae,(U)2aR)-I(,
+
+Xe[4cQ6FV"PYkN!"H'B8eL0%bRr,b%&c2*EM0hhq3!*Ia1[%$Jm80!0c&ZN!p"A"
+
+0Q#Gp"bNPL1,,RPDSh[F!%V**Z6CL(Y95jf9d[D[$f4q#'#r-M'fi$dM*mBIM*-q
+
+RK*0F(SmKpLHcf%cf"*&b&qfCe)PjS+I*EP`Ha@+q(l+D0-ehk$HZeN"@)Zh!YaL
+
+LR19L`HPSF)I+GXDh1iBFGD`3)ih)`9Y(pG%$D6[bJkNX1CGKj@Y@E%AC-!"JSAZ
+
+TfpQ)*%S%Y)+8GI$BHC-FP2%QS8NR*1(r-hKYP`KRP-Z$hhf*ePhC3,mA#'I99YB
+
+PlRCrM*B9q"hiJl`)"UAlDa59SK9,[YfM",j9hK54Cai#[8GAile'p9B+QUbq8N5
+
+!#N%e8h$pC(QCFSkBL8-T!6UK-hh,NI8Nr"KV@8kFP!EF@29m8)H[YD&%dZTYjB%
+
+J1K"9al)lX&BPeNq*RP$'IdV4cpNZ"0IrS`1hD#*6+lKU#a%'$U5hiN2!L($93LP
+
+!$hST[djCYS#V6#*ZVJJ'Rm@%LJl&@T&$*(&h'p*+-$Vb!jr0Ae$$`+*CiHS,m56
+
+U#B'NbFQ!"Z@jDhJ!eATL@501X@0FE*3Ti8kf)XPXZJYU@Z4'P49!DjSZVQ*K*Y$
+
+)"Yl-fP[R,bNl5QRMY%D9D1rk,[)"HT&XmTJPA!#dliUXUpC9Z%G+0c9bAbTJa![
+
+$Rm8CG2LrB1QJ[%a!-ql&'Y#P%lY#RImeKFQce*9U-bimXI4PmiTUh0MpKSJ`*4i
+
+dQ16[L-j%$"B&cH,XmD!c14qm%TX&qe!T#-kHqaV8C9Z5kK[1mP[kR,!q$#j%8Xi
+
+d1hE`44%pMS!B,KU%YHUSj#DiTd315b#Hb+hk*B,UJ9!pDhP8M#%T9V*3$lNjA,k
+
+@b4[QFKCBB0KVThi23aiCAf)H$R@UQcZ(dFN3Im+2MeRh##cKF`H9N['F1h4H&%F
+
+&Y#QHZKjIJGU(CLH%J%JGbTFNdZ8q8#k$C5ES-h!bVX@!Ma'C3D%L%i0CcL1f+Yj
+
+BikT4"VTH*J+mT&LD!(Q0q`U%8[H#cj!!%eKE,Y8Mi#)6JKF9!X'%PfQXQElk@X"
+
+bM4[bLP)G8e&L(2GK)lN5ak*GLJh9GG0EMM1K0kNjHm!S,"`KTd@()H$l#%4YN!"
+
+kZ2XjkP`fI3!QJjS%DR#hDG'L##JBc@C(V#8XG95Gk4A&Qa"`6k%54K1qZ!j$VT2
+
+AH0'LF89GY#'9SM3"PU*%43*mbZ,4m'pTf&'9Rb#*3+F-$)3eC134`c%5Nla&YFX
+
+QDdq&8DKJ4&,6GkH4ID[Aa'bC*89A#LE5f@Z)V4$1j*`9h`l1PaFGX*a9&Gb)-S@
+
+)&pl5$Na@@%6mi@p"Q4fcb$-i$XAaBQIbE(6L$2)U1A"XPJ*S8eMZ3ceBlDa)qV"
+
+(mJ2U!edVA0DPr&#AR0[6LJ3LPTlca!AX4qk"Nq[b3h"[H(NNldTr5Y%#a90)*Rk
+
+XAZ(`8iX!V[Mp6"fX&H2@4eX"aXbQhle*J&R%dqLU0Rf22dj5S'!)bD@"m,QQ-bB
+
+*85'0Hm$I#Jb)-aT,Mi!IeqUe261Y5Q)5KSLccVLi'[H9rP&,kf1#*SjQ,UkYMTH
+
+'EK"XKd,5Ne'Rl2+,aXGJGJd4hk-P[i-'5T!!pXldFC!!)"["1hMV6lehmb`%9)`
+
+fZ19C1I)b`9S)69eD(!11DmIl0HdHK%S&5Q,Fb!8J)X+9aTYS8I@DeNeT5hN6Z""
+
+&hP5qm#UU%,VL#25&iEN&6h6Ci4!T[A!d'X$e(FjM%CZ%*G,J)MeEF-$$8p+9b9A
+
+$95J-69U5`imK3XD[D0Fi)9q!P8TXSYJ#YcHCMDI&hk*EfST@hG`bbdd8h8#BN!$
+
+qmU4lNL9Ip"3e565%@IM`NX2)Q,l3!$MD*!J&R!X1Q6G@`91mHKr+Qaq*)rm6Z@r
+
+S4#)cC`JTT&E)5&J+54#),eGAjJ%1bIkePkDD!TS-Nk#$#XMM51`')C&NKGiMjU,
+
+)Vmehq5+k1kaPY!!((eSdk1%Mk"bG(4r6VD'd)N2Y9916)VplbrdS[EA'*)4HHYE
+
+UPI*9DMR19jP$6jk!P&hXU#T8,iEEVNKNafbZXr48$DmZdiT@*aXN(Cr`JPV-!he
+
+J"E%I1h[DX,hh(2(&Y#TZR%#2aFf8r46Xq2HejX!%UC3$T4qLHQ(+eS&9a%2-qfh
+
+3hG)RDlZbT!V8bXUl%)emhHSJV9Z*'6B3d(j-Y'KJ2bQ!+1BX#qL[##S0jBY9A-[
+
+6ifK`re9D,KkB(kXU@ID3!+L(Q@B`pE"06&k+%"!'"SJ'q3kaX`,LjS)`R&dha-2
+
+2RVaJr[4&j1S,#EHXrN@`HPfH3a%m&pr4ddj1)(GRD#KE#QI(5JQULq(0GpC1022
+
+UKR10ZRaGEZ%b*TrfdFA!HpB1`0"VJ,E#ha%R*P+43GS)!F,+XIL5T19#!&JCl5C
+
+1aHA5&C8@*#rk2iaYib[6L(Dq!,hl#KL%haE(TS00US"irL)hRJVai#A(BLD&VB&
+
+IF[e6fi)F0!X`$edGjI+bBIq@`1P%d80$Hq`@J[TH,EUGT4mRL5i+,aEX*,1KL(b
+
+*[NLHh%`iZd(1+84)X-&0QUP`URRR!j!!-m2EI#bjb5ek"Z!Ak%C%(rMA#HlVl0p
+
+`Ar'P1![mk`RZkiDcVAD4-,Yf'i1b!&mT*0(C)qMVKS'qYKFCm981qLr#QNGmI@P
+
+c#lLa2GYTP2lGmhh5hU-GCRSPmB*%!S*D363SZaqrJ,i#E!5$J2KckZZq!jS,MqX
+
+jiKEUF9c&qlI9R,N3!"a8Sc*fib[q,rmP6LM4M1RpfPVVb(&N!Um9ACHQ'ZI$8Ba
+
+%J83IQCcb9UC-,p!D2MFD$JH6`8R2P8&T"U+Vm#5R*H@CBc62lNE$S-`LDPiiMP!
+
+HeReb(,KK4))PIp'JJX)i[jYF#p`0-8khSfDhG2me%Fb$eiT$IMQjhU"SS8,$8*p
+
+N@XE`#8UYU0`@bEDqePMprSDL9I3G"KGD[+Q!,KCjH,YLBX04ekp)K4#8!*D$b8P
+
+3@(X52pE[LZJ-aa)dYhTYG1CYH5-"CSQA`YdkD5+m1$UjJ2&+fbq*1+CYG&1rLlA
+
+898P3MdLQPB04CH!!MiZPC2q%HQ-#9&c"VV+8HV1@dQ3JA)Ali"(Je-Z3!),($#[
+
+LpLCX5f1c8d&-F'J,&`,9kP`ICZ+$I""*U1LcB[i*mE2!M![BiZMjP`94YUmVp!r
+
+3U$4aD8IdfdI2cd8-Uk@$"DP5+@&Yf`$9&a%%VefFB,!'X82Ni"PUZhN0GbVma+1
+
+fEGQI3A4MZrV'bP!!8&i6VB0YS3QamArKTD#E%"59Y`ha4$cll*GKpCFe6h+j*A2
+
+U@GY8TZ(m@P"Q,9jl-6bSIPRmCFhMFLI!GG*m'Md0q#54GAaP-ZjI)-q8"kBA0-J
+
+$i2d#b24E3Y6%+fJU8p@!AUJ`Ck*GTLL(Dq%[pU)'*G),jD$T@G5d!8@5j%MD)0S
+
+5Yr)AQh5Gq*LL+#2cA2k2Lr(jD##HcT1"+Qf-JCEA5*pjGQMh8r!ia0"hpl1V2G&
+
+PGMAGe8h$RIl8$YhdDLF9hpUp,bX#'V0[JSB!FPII`1-DI'X&qcL$YmChSf@LTK%
+
+&(ja,6PZ@P2G*K'(kP!j@XJqBmf8+kmLV[*K6C#8%Hp+k`Tdq@M8fLf2*i**c5r5
+
+adm-k3cJdBd!8NPLE3fi&BJ0&prcV"-CapL1-ip%`0Q`Bf,SkM25&-)VR5PL0rfR
+
+P9%TXX&H`"V9+2#0`p`6E`8AiUHL%45G4@CHU@TPXTp#3!+(LAZcjMi0a'E3*S[,
+
+3Y@Je59&3[fAY!D`9B,Sdkh+fbD[N8S%A1k-6&ZDX",cmk68QPeH"Vaa"IK,Y0X'
+
+aidTBLjQK"Vk&fAbPG31XKZcJ)XDdr'%9lrlhbClqI(A!6F`["ba$+BJ4IJL1Qhc
+
+'2'i-K1,M#""6Z@14XD%N$G4IHicVc[+BNFT@'YSL!MT30G!LDC,QJRa"Fhl9"&,
+
+1iE9%#HNaB[L(Ua*E-Da+l-p[9q9d8bL*&kYLpU@(Uh+b+3Lle&@CHKU*M!`f&0N
+
+TI$6[L8"NkG#NV`$IBVNF2$FGAdATbV[L+K1*&-41&N(aGS@JDQFr2)`9c42%4CY
+
+NBHVSqSrKX0L(81PF-I)hP4L-Xk[`3VENAVS%bZ4pC8BDTQl8JY5bMHZ)f4#LFk'
+
+Tj2X%rlj!FK5-ac`*MeVpq-9(*Ub)2M+5*Q#`8)a8CbrZZTi6BUlZHJPqc%T%d0"
+
+4IrQ#2I(dQiZa-l9'de-Rm#Dj1*GM$*c+k'CUh`lLh$3dIi(GY+q3!*rqfQmR,Z!
+
+IAiiim3GI(ML'5$)T*V8!i+L#U*@m,SNJPPcMSI(AfSMSb,))$Rr$Pi5jN!$MHQA
+
+mNY,Rq*j2!+Y`2,IK@TGN3&la+G3'RKZqZ4BFD2+K13UQ4aeGF,25MPHa&VqR)P#
+
+dd'1!rFHUTUY"Zhk#LF1)p*M&*-,*R(q&5SqfP%bNVSE,TJX4@%d2)@@Q,IjVa*2
+
+rbf3)j#[U`'lP%Y4h'l'Q1Qd5k#fcTSL*!*jk)GGR1#-6r[@%p1d$[hlf-@!+0Bm
+
+2,4CR(b`pYSS83+-cK`'"NJBICaHPcr0jQ1J)mc'jEJhF1iCLM%pqkH0HJ8[pC+q
+
+b'3lC*B&5e5mqZRHT44'Ep*(&SV[1c,BAEZ`,lU[h%8mkJ1'J&`D(jqQAiaX+Z9r
+
+6A)`(YX[UcLaA5JV4%1U&N@0pC)aPaiSSS6Z!5a@686,6`Q1hVq&3HH!&Kr)6jDD
+
+63[QK"RJdR2lZRd`R2c,,(&Jh``ZijqZjjPD$J"!lLk5@1c0YNplMdAR3B-*CqAC
+
+VN!#8#F-4mmVCB-($Dm6@D$c,VCR",Abd0Br(mfpl-fY5*h"[,QA60F5&aV0MTa0
+
+eM+rfcMYFkKBG!,1Ria(a-#1kL-NRXYk'Z%Ilb9AU#RmNB)DSAbKj-*%p[c!U$-3
+
+PF#5P(''48PAEE,!jqB&GVe#"f1Ur0#T$49'Ml-+l4q)+8Ed1Bb)"6A2cQcJ$K%'
+
+JTHk8a%G*hqDIm4ZL+3VR&YaRpeAE0+(&%2FmJP)4J4SqNGqANLeVR,'2GIG3`*N
+
+GcMJ0ZAiGbpK'5b(VLl[RZB&S&)MLTB3@qHd#aNP3%@AkjPAiM`FX)%K+K5Vdq3,
+
+#!$SmBKqI9e!r,TC`MdZBB#2KmdK-R#jK9!R9*3bI1r,r*F0M$h2kLrf1442G@f'
+
+C6Rp`fV*dUY#3!,Y60f+(UU,)8X-H4dPZ11Ga1rP8lJ9r&FU2Ijd!E-eq"0L5,hF
+
+hr[TMXpF,Ci2IQJE+-LJ1UG9hLH1iKb3Sm#@p!#Pe(jR3$YHjqE@&BHm#DkaHIQ(
+
+TG!5`AmkEeHpkZdCPT1BAZ"&qCK0#NrrEZJJBiP8%9Dk'65HmQEYiJ`r3QbFe$@%
+
+JjQ*DJPZYi0`2H!Ik$b"&ZFd#C1mBPRZ$6r$0r!*qbFc!$0D4D)Q,R2Zc,Qib(@-
+
+Z804Ba[D`fC!!He#h5"$4`aB"016%!@ZY+G*`Cq(D)4S$#i9HS5P*Q$85IE[bK2)
+
+1MQ1a4i`9NhcaXSZJECi$9HXYLP)Fc,D'b1[&V)Fpe$*i$jR2L')2bAiZia9#kl,
+
+9GhD)[bEiFfjlGBL3!#3H2-#II1m'Rm-RD&YK&iYfLh9bTjmj`4pkcda`MI'Gr!!
+
+Z,,rSJ*m5BH0!@X,h(SFbAr%eDkRlVBlJjq$BfbbE)D2N+012"QGRTa!8R5'S0cL
+
+5a-GjB4D2`mbLqj!!8D(rrhhU"d,q*)ECYpma!`GKiMC2GehepHqNDa+Ak'![Tf9
+
+LAUiSIpSQ-LV(#dQ0SD1@`BVHT$ih`QHSXN,PEp6m,F*0)2T4*eDmK1YjP1FLFha
+
+Z`22l@#FkZ4F0N!#24[hHT%dJ'D11!ESN@dlrFYV%M*A[bGdRcK5qpP@F20aS5@E
+
+F!5!8AeBS0fV$GeL+EG@YpbLc*9eUbBhimSZl6+3&iZRjMJp!GqlJ3EY`Ga%)80e
+
+%hGJ`De"0N!"H$5lHdZY9R91`*SEAZj!!LjX`he(ha4rqbdKG`2VF3Aij0k2UaeG
+
+"IU(9U(@3!"$(qC!!PZeZV2B$INbTIK`DEdYMI@Qp6IDY8[X9(f3-XdMcXC%N3Vq
+
+0DUh3'*-R"qeD*5eF0M2U(K'K1*C0ZUXeUKP4VBU%TYDEI5Xq84m3Y"heIE!GXE#
+
+3!(X9j9"%d6CN6JIH8ZD5YYEY9EbCT3HlqHbSB@JeRi!r-Q)RUJSbI"mN6UbQmMk
+
+cQiK2l-HA'rEZm6#9$J0-`'dUf+YFe@amBEp&NHm9aHbN@mpC-*81L5,*Ae+)h3T
+
+8M&D!E@MaCFSE'RC1Si5i"DF2kf9ia,dD(&+K`U1E!Y+j1+0YD*U!GFFbmK2*Q1r
+
+MU9cHl*P05S3SN!"L`51EBV+i$Te9Q%'hTR'$PYXBE5dEGL%T0D)M9($DeeR"a([
+
+'JN&j1`9!9+qGQcArPS+m%D&h!kL)8A!m-d2!6TjpaCFB9NB66q`HB(k@XXVa`3j
+
+(EZKHmi5ckN)lTiMdJX%fBV)*2DQJ4bh*iri`qcc%h`Q&Pi$'8DSYD@b)Ymcahl%
+
+$Nb"UR&@h9Sb+i,VL(@`9+Ye"6+RUa,M!MaYMTp@"#FN@h&,INUKCB0kHRGD+aaN
+
+mPZ9p%6e)I#Y[P[)j#dTJUV9NrGM,!B$Ij%[V'U+c3AlI2YS'9Ba[)2UmprYic`d
+
+eLEEZlS"84J3@@L(3-[[&4M$1ZP2T8Tha0Bpd88YIeHb5B&FQDU8(kJrZbm*l%YH
+
+i&FPAML`CMFjGcjiT[5#H"AKD1-X`V1LqA``Yp"1(+6*ND'qJ"@!QN!$[,&`F5!1
+
+,[[Hm0&h2r'CU$D,C@**$bQZM%&AY,G0#L-UT*DZHkH@YH,!AS6EimTK$Z9Ck(6&
+
+j#TGkCMZ#Q3pM["E6C2jHcJ2UfLeF%SmeRlh#54q'2r[GP`LhVl9HLG4"[ra2kpX
+
+!p3HeEj,cc5S%D)ddQ%4EQB2C@iT,$385-`h+C2AF9ZilP4rRbS5#+6[9FHSa#9j
+
+++DN$I&1#*Bb,3Ei!h@Y0#&N1$#bk%K9a5E[kKZNPpXJ@6phL)+)K@e[&XfR'fKQ
+
+%RDpMkI'jla@HJ%mSDX-[SpiQ8,E3*4jjNM-MH1RR[MIB%-ZMd3HNBVmK2,C&5d"
+
+fR`43f[[C3R`mYp"l`HqaccU8RI3'c1%@LZNN@aYd&&X#[!Z%&haAaqSc)ee5q&,
+
+Ea0q1,A#R&f-CBF&Ka#cc@JB2Z3B4NG!Di"f$ddK))fj"!kGrD&!GEi%qTcDqG0Q
+
+0kN)GQe$p%LbDGlD3!"qDm+m6V+$C$eK"&EJcPNNeDD8G(lX8N!"a6cQ5"kh51fk
+
+ASTp'Ur5c[pmPBdYUPIL1Aem8Pr&pXN[RAe'3!*`p[MJE!Id2"#1[H[2J0kY9`kY
+
+GE#+Eb(NiRZ`%(!'e#'NT42kZm[%X(-E%eEAGT5&"ibqVp0I$jD[$5@[6r!qh8Tq
+
+p)l52U-6$Tl@*)La34`TQX6"+`$()LN)*Z3h29`cNk4H'(+NeDCqq"f$a`L!aMN4
+
+,kc+1P"E#XljS-h)T%HGffem8[T4)la9Z$0C$XLZ-2hSrNBM2M&dIj$8h"jM,0%H
+
+(MY6-(Xc&b8B$c,(D%K(*p5Jb8YmDMB,JM4VkPkRLFrqb2h4aU(eIhI5!U%0G+E6
+
+mK"ElN9qTi`!dDUNATl"I+4'Z)XK+5YQb6S&#d0C*CU2+GZSqmFdIl&-N([TpLZl
+
+6D%MebJ868XEjSB)Sk-XqP5B!CVd+5KaKAK,Dp-%fRIBUV'62(+di%rle"#KPdrR
+
+Zm*'0L&lCi&)e6d%IKMIJ&2B&C*Y@3*B[6ULiKGcHmZ)S`@N,f3P&Vkb2HeF82IH
+
+Z6"3T`m[X*KlR8rNXpZR+Jl+%i8V!S9i0-3Hi5(1`i$Ee$[eRP5(&1j4',DJ&H0R
+
+3`Dl2fC9rY0V$UT(i,DLQj`G(B6!UdM#BaFISL+"D&C9FZ24hPHdfmK[*jCp&(bV
+
+[D8Bd#"KAb&(P1Ck3!+1#'LBSSFi#HqZ&CbG!p!)RHM#*kBXV*BQ4K`LamDCJ6Hr
+
+J!b!MX$e)X(!KAqF61Rpi3U!EVdm`9Vh$Dq0G#T1)'B)L6(YUS@iBR6lFCUiYUd@
+
+G1J2HAKD+'NH0Q'&"YY+I"4#'NS$YSLRCqLcr'N3bG0SL9Lpkr4jC33eF$KjN6i$
+
+bRH8Z"*1ZcX,9"dL(k$RUc`,B+aER'C'fmVh4A!q%2&kfckl#Jk0!Krb6Uj!!l&L
+
+,Uk"ba1%UJ#,2D0Di#V)MhlX+NZ@r[JVp8CJL3)b9rH)SS$I%36Q#Bb@L3++1&63
+
+(Q+a"-[UEe&S8['G$Yj4`Yi!49fRBHdPe6ZUpKDMDKRH)q"Tr12D5(S0Y,$jN"`P
+
+edS&6AhbNcVDF1[ZKVlk%1+GR2fYre'*ETXA+Dfa,44(CQ6K6V1NkZ0J9Fe*Q5,A
+
+ZDP4QE6[fPa(Vb(&HpAAAdA[,U&Ym@46KU'#Afq)hN!!T%GrrSQrFFJaEMq+bZ*L
+
+5!Q(r!pJiQ(Y8Nd%qEh%)9M'8fcPm`!$"28FpB+`-jJUi`RF0RJ$eSS`kLAT9G!,
+
+5kSelj8BUNBBFaEji'l+TEkjUJ)@GE!a9PIP%[TccrliiPT5bLJ3#pb5-DY$+%1q
+
+$D3meI2-pZ$69XZBSf!4Qa,`!J'H$,4IPTILGM3-P+$L4+--&2Lk11XV0dr2D$kp
+
+6G@H48M%Fhq4DJeART&TM3m[UDlHPKN%2GRr(Q955e&*(c&*!TQ-N-N5JKX3[V0`
+
+F2Y#pL['0U2Ll$b"F'FqACPjT1+5$%kiL+8AQSr$fdM+k60$hbRlBD)#SbDHk)0(
+
+!P[eVh,l$k3DP4Ca0h"rNP%KP&#8LDl*MCBQ"25$ST&bJP-`4k"-2C+Pf[&B3"fr
+
+FScS-,q+IC$C9+4@3!+$ie''SKmakSQa$MDcd$E6S5@9%ZE38*hJrH@@k+HJFAA+
+
+3!#Km3[C)4[hARj6eiZX1aTKN'6iPVr4baS3&h6SVhN$eJBr&G3YalikamT9QpZ#
+
+(TQqVT+5-*E3T*`PYU3P@28%CEpG1MA'bCl5Da(Rre%"4I[@45kF['HcjPF#AN!"
+
+GS%P5@IIp#(B29"L"4@Z8er93'*DDd8d6MVI04T5P%ADm8F*Xell#MH9R[),A0j!
+
+!#X8cQCIa&e5)Zl6NH1iAm"8(i@YI6(arkBd,qAMrB$!M`H,$D"R4I$LLJ'""AH9
+
+G+!EebV-!)TYGa0R&H"LRqjEc&hSNS"8!aMrbIN"X4+k'5%)BLA4mjN1c2NfK)Af
+
+0$`rTKY3M")H#eajrb+b$AR!H6prS0G8+k9TlGJPZbF&'QB#2KJCSaR-2X!H2YkF
+
+Z!f`ab@YB2h`3*bPkTX`)FC!!XG'"aV4#R*DLFE%8ELXqRQU*j`"KE%hSqcR9XaZ
+
+NLc*GB!QBaNNerDk+c036TRjSC%-4DZSKZ5l$M9%G4ATIe`K!3$0m(cd+Q3q3!!G
+
+feMV&XE*-V)@FV2$,)8KTpaqRQU6qrL%[jl)9!C1LF'8`l&K9ZkLJ)*XdlbCejEA
+
+[1m@,XQ$1TAbTBXKf[Cf'%"iK&LkJQYb*Mm6!-[1lMr3IQdc-(Rj&[4A)U$,8C4J
+
+dLr9N5BIPJVHk'"C"`R"peiUipBKiA8IC2kV%H36@r5-`QYM%"cJ,2m',bEjabX1
+
+C2E,h`EA3)&,"m!aKjhKP!9fNHNkpj!CNk8d!Ydk4[BH(iSIH"CmeHKcJJZ+6jqB
+
+P3GBN0QKd-Gd*AbV@U)hVpA*"J0!#!Sl8'eM)%,@$l&*rPV!%6V4kPqkb)I'D,68
+
++%X0j0))!1[HXkbbU$qGkXE!bb[jZXb8cpaH(RcZMBffKe1ep`PldK$6)RbFKMHl
+
+-,j-XAG`k1V)+f--)U1qKmkPS45GbX8ISHmDKaE3`JjK@01V[X&V"1q,@f$[8r`&
+
+l8Bp@[4P8h!%!#`H)5b0"C66@P*!!jHZh$mU-+M$@X'jp&6I#PMXFGe+8a+0A!Vr
+
+Y&*%QT(9adjd5G+lT*IJS1KKB*PkF1$QAd'85l4P#RPQRRh`hQP-ai8emIG`G4S#
+
+aQ,JSI2f'2A6,8$VL6A&mF,6FKSeJBrM3X45CE"5d4ITS5Klc'P)1VTJ-X[c@KdV
+
+DN!!-1aPrG)2H,m+'bYi6#JPr@rSSpIdLDRK$q-`FY)1LhMiCcQ5J!MNURC!!Ure
+
+TCp*Ap3$@4GR)UAUN,c#LU)HFE53U*)IE8$KVj8'6k2j8kKdhBeE8X`jX*Xb5`c9
+
+Jj[&1%S4I&6ZfEU8lrBKGZ%4YiN!Z@A2kaDhQ$YSV8D(K-P5c8H4R"dZa+b5V9@6
+
+hBJ0VJ6*$%QFk[FpG-eZX3i*ER5&m89Q(fTcFVB-iHD)a1cmr[M1f6c5TkJTPSXV
+
+*EPl[P+c"N!!B28dFGkj-mCFqA*P@PEaB(CFba2C%kXM)rhS5I$Q"mZCL#'pX@HU
+
+"RjA-@BbXiaK5f3mG)2Ki5(hqG8*4X2%$48&I'D@m9PrjmD-"`f&GEClf%`BjG!K
+
+V[,Xf[G,iJ4Q5c510TM,8PF24@63$dMjj&[TPiTQ'#F(Y+cG)YLLZ$keXMi%RD[f
+
+SfU$cD"LH"RbePq#VddY!Y#P4BNYJc$!&ML#LlZ5&CmpG-Ui0(ad31RTS1F9jEG2
+
+2QUJFId0Z,ME*XDf62IB95H0Nk!JQjp"9fdYdKpA)`eS5kh`hDTK@+8S)mPiJcZ$
+
+5Q+E0'1pU)+315fBjB#dI(e`'I4Ek``L@p)CESqd*Ya'1),9K+6"[SC((*$HRm#!
+
+qQ)F`[-+"SEUdP+1EYm4Zd8XfS5ec$pj"8N-0NH6(Mahif@YEJAG35)#[ITGr@RN
+
+MPR+d#M8lfkf#JNpY&H!0H"98P!S,Tqa#aK"p+KUi6Q5H$1FVMTh&p%ZPpFpb8T9
+
+rp)"dh)16kB0&VNdrB3)U$G62l0"VpYDqcUS[p'FLHV@K`kNlr-CeMlLh6'BP,T9
+
+)X3c32A#rB8mQ4(0P6m(Eqff"bGCpMHc90XXSZ*UcC9@lNp8Z253T[qQUGZ2ij@K
+
+ibrTLGDEj$U#aXUi#cJ"ASHcr"Rb'$rDrDFrJ,U%$r0iL4"0'Y`PF")4[0,4f0YU
+
+h,!mDbYh,pE!5*a9#V%+@9!rEm)prY`e&RQ-E8T)13(9BL(m!qYB,*mqXj+P63b(
+
+9qBSQ``DprP!2jEAN6LbZ!-bm!X0q&0E0Q0P*S``Mk[l+('CJ1[@cX9i[FQaKXZG
+
+aACMVKpJKb#[&""B#I"hhJa[*BIf[Z0R'!h[)@lL#L95F@[`IaLm-Akk8-[E(L0l
+
+AiKLeC(Z0Sc5qUJ4BLRcjHFIZTT!!ii,G66R&6L8L#()034"m56X2N!!PS$U8iNj
+
+%KdD(SVGh($a`*KU6[SQYie-UBaQDrYEb6SheFSj%I@IU#0N0eUUD@TpYD@Ce*Zi
+
+R)-c3Hp'dkRN%m8S)'G96m90L+kTfTZD13U'&-G-B,V99m[BjVU&"IfQMH4TmMi!
+
+9#efM[!MK-H[0k!h3KmTabK1@RV-*E'`D,BqAk,DF'hJd!fe'j10d8QR8Ph14MT-
+
+@CSY8XX%r8qp-P[m$LbpF8EBYIZL+AJYrZd%4Slq,#GfSKZNJ+J[64R)N6KZIfKa
+
+D-A0CN!!&bGH#+ee9rm98b+V5$U[M5&IEdR[68M3bKprc%Q#D*4+("(-d5-DTrPR
+
+2*kaE,qJ+MK##r''lkQ)b&CZYcIjREM*`&$T&"e&[I,Hh6,pU-R0V2,`4[[l$C)i
+
+D5f&MViUaIc8DR*mkQpA@K"HXaNr*QkSd8E4[D%K)R0!4PV6Z31i)*lrirRSiK9l
+
+5Ph&[12K#9GREFi&0h-PCMZ,e-8hkK59f61rKY4KZLA9SVQ`liZUNb*aIkY6L$JD
+
+pGS(A"iU+('HmSd2I4df,@A'$GEY,9$8c1J*[GKiHhXNZTVH`D#DqK#pB+4C`'3X
+
+"2)9(JKJ$IcKfS2q9[J-Ha&kf@GKkp0VhYGlNiJ4BjDHGa1SHD+6V3`dH&U`iD`N
+
+adChmP-*`Lj,FQPC*Q`6L-SJ0)#1$k,$d*CfjB#G1LKXS9c1!cXd21DZ3!$a'aYT
+
+,AGXc**!!Sk"UK("iDhd60bc,-FNZh"UfMlXVK@Z8&82k,NSF&5e@[D-ZpQhQ`PD
+
+I82Z1G#ekQ9jR3V8H@+a[KVAD9SHVkF)+-$TAP`S`'*hHG#KCD!c$fmpL09'@H#G
+
+e0&qUdY,L1l`9Ye$#ITXXk9VqIaLr2,qBR!0Nfc8@mVS!Qp5"D-!0bH8T8V'*pS!
+
+D#rdDdi--39bUII1dEZS85Z5&rQ$hcG1'LU@4"p$lSjkpI61Zhm)@6H5dr("PTej
+
+JNN6P&T3bL#`4R!%&Tc5TpQ1KimLd`F)8@$-)"Sh3&CPrTd,!4MU)6#A++M*,UE`
+
+$lUPbNQ)6#[Bh,AHB(dUa*2rb*5*a)63C0#)&jlb%H@3L(%!JJGk(B'6ql2STDJb
+
+ic*5,-Uj(P&!TP-P1&f`"-kq8LF8SI(h)9Y[6G`aK[K(BQkX['SpVhV[S*UEhLC%
+
+I+&-i@#@kpb"`hBM&l1&@iBJabS5q#$%%Q"HSSD!2mJ'`Yi"2YUE,RNbCq`fjLT5
+
+ec0mDDGD6G!PQ5I&%HI%X,iRMGYaa53'h-*YXf$[b+QlbHD$N1dUQIVLc$VQeP,r
+
+PhUM`jrfdZ6(L-@T&(3X,H'k6p+!k[fTfF+"fp3F8G`Tq%ZrrMa`BZp%je1%Sal+
+
+eIhMC+6R4M)m-D2BhXd`Qkmli6KEUKHT!ehGKT'h+R@L&,5TQ$YRG8p1reAK'(M8
+
+*PSXY'SUhqD(kQ,+rm'GCi"'dD464#UULFT2,`c*ECH`U'Qlj,R[5Gl8')KJA2dN
+
+ecq4S5U&QL$ZNZJ%9@6@!5Q0qI'28,5Z-1G8D"(C)&pj06[pT&+"JiM(+!%e8MHI
+
+69Y6PR8HEYX%S"6(BNYR+`cQE`UmQlpa5iXq3!%K%[6Grq,2(2GZ68i1'*#ZJqpX
+
+X3KlGCMfZINl0!aYPT%B)jGS1UZ@jYjEC`GHS#9D5+4d,ej!!q4Z)NV,mKXVB8j*
+
+JU[(N#d-U!-@,hCj&ip9V@SV)G#'M$Jd+#"3QabLX)XL-e!0IHQFM)Hj5,981L)U
+
+QX38AD9+[X6%D1+q")p804a%RqLQJIPl'0rr8%4'#a)#BANN&T+D+1,PkX!2daTl
+
+Qb5hXBRAL%ZGSjSLcbqrmU@[VF,pm(Yj-mJeaMhTi"rbiFRiebhCqY60aIPN&8j!
+
+!)CC+GELrNDaTjjHj!mA,-VDjV[K`IhjeFe3rr,k#dJ!kI-,fMB%CQlN+50p'-CP
+
+NKHfU-k1Xck)VV9X5A9mF$)`XYKm`pHIN1-I`TP@MU8NR18P&b'RH-Gb)IQjBkZ[
+
+4!Z80@8KBXjL0@m,8S+Ke"ZfB-Zi&Db2H(lD2Udp9Ckb*PYj[JDh('h-PUC-N!B1
+
+q$`P209i)L!c*aiJ$phac,DFL!+V#hecd!4QDH"VbfQNZFr9q53)U#00I2,eK@ba
+
+c[(JS-8Q4HD3a@E3G"9PAFYieK"DL)NYI&+eHl04pT$,*XpKI1c6c4Lp%djR$S9-
+
+Di`mk-pZ+kJe5CB8X`!)k"#6KaD',NZd2Vaa,BR@KY,cpP92Cd4@Sb1Jp%Z+D,iT
+
+h,eJile)BXB%Kai%3#h@BEE6JRN4X"SBQhKe+0XcG$),+8HIFa*h00kJCl5$,9"d
+
+1I[Zl@10)LJdLL!I"P8&BLL+*XJT0*C`KJ[LUrL38"R#d)GK3#'"Q&$M+`R)&RS#
+
+CIq6k*`QL`0(i2B`81+$-j!+TTDlZH2fme#Ibh[LUAC0lCY0V"XP`LE(2UX#a%rh
+
+Q4kp-ip[8k@[P4RbCUki3M8ME$)Yj+30`)"PE+A3P4b@(!XZ%'p`DVpMPJkdrm,'
+
+KQhqGja,3K4EXSh$8I6YUCaGhc#HLXE[1QX6ZL,K4IJ-Q%RRp+2mNbi#J#J,[9mk
+
+l0QS"FG"rF#caMR@e)H8Z)0J$@f0d,-4Tre'R1cLfQea`%B(&PNHqQ-XfEb&TSRC
+
+IPC3PZHaMQ*3i-PfBVNQNeh6EXK'abD`(4Jq*`b-YePh4k)IJq5`1`B)U0d$AJPZ
+
+SJ6Fk@-'BX()Z!-[X[-8G&IQr,Qm48"3Cii0aC+V9U)',G6cmaP2V,@-P%UC9faE
+
+$j3EbNcIifX,*N!$SHdFG,8SPYMD,h-[)iA5H",Fbf5Sl9d%a$DbJ#dm5CG&m@BN
+
+-F+$f%)EP"CGEV#G%!c!*@5pjAlM6D#jKU(4jBG,-5`'b&jkG(SrmEN&qF%X!Srh
+
+Mif0lCT@Kf8$Q#GBTIcM1d(`+rT*UTRdk4!f)BdZ#Sc4UddSPmJq,jpTP8(j&XUB
+
+-5XpY!aJ@$5@q#qZUGeVF"6@#a8jc`61dq+Zl%2*rF4FDPGr4AGLN`ieGEQeB`Q1
+
+S0a59PZ35+*kLDQ1if"X-*T6&VRZ0lccCDbLR+LR9T0XYY5GXkmYRXac6E)6Mr96
+
+rARU(#G2CiA)Lhj88e!f8(j@)G6@0LFYfPNTj5A!T'[kC4Uf@8+V,fm!S)5fT-kD
+
+))6"MHSNC&2Q-b(b`&U[5%,BcfeZbDPRC"Bdb+F8&G8JV3fIC6@bVDPE'@iiS6'@
+
+*UlmUABi1iG31NilSa4f3!%0CRFT'A'T6FY#e0`T9KUC[e#1-G0f(0qa10K'P$-$
+
+C4jX@eER"S,$rZ('NJBc1X),DE2a%i4p@)'F'2*c4Im1-AIS4U,-bRK$C(3`C9(%
+
+6ZFLYj)fe%8JQXj5GZ"A4ia(116+ji''$M41m[Yj+aleE2KN,#(P2qNDpE#+88IB
+
+Hii%5"F2(e0EfDP%'Ge[%SNZq4NU8["`(k-(8l@D%+9VH14h#Kq'ci&`k-4b!0P-
+
+bXbVTeIE*[@8*Mp@G9MfjUH,Fedac6'84,$4(Dd0kT$R#4HSdaj)A!QpRh"iN+KS
+
+R'5!S'11%P8,le)hQ890D4SM@'[!fQl)0!Rq`e0hLE054+UpYTI0*DG8XRa)8'`S
+
+28UY8LXfP9J'1UX@+K(PRLb)D2kJ5Ab'E4jd3P8'baP"E1U6eRAeJ[`B$J'J,ii3
+
+#%Vd4LpJQ`,BUZ@j'0e8GmBi[&AhAIY#(ceQSSic+2XhYeKc8PAS5k3AE9eDF(e"
+
+e3&)f0@1pN34(@cGkdL&M41dKpeS"1qC&MEj,-JLQ+ZNCZ(&YeQ*(N!!mV,fFhlN
+
+9,0b`L(Za5-0-*adb*bPh0V99T@9mGaZd@lDG*!'S3*@cqq00brdAK+UC+[djGL8
+
+*Xi`h4T'*9$m'm[(h@h4BJ0YRI,2%(Dfre,VK6H-5+Y!20ikXSqT5e4*CU*KrrJk
+
+)+l-%$6hmY9-RpcpD"p(pUP2JrSS`"8bch4FH-,d+&jDd4lAA-b"qHbIDd!UfN!$
+
+5P%C!,pF+Kd(#cdcQDNM@DiDLPMJ3b1+TTdpTcS6c6NJphH"EY$R9[DM)TET)r,L
+
+3!!mJXPJK`)B3Y!l6NYUG#jdf1N3UBE8SHrf*hLkDjeSH#"h9*b1H(`f$I+h9a1(
+
++,NZaa)lZSl(p#YUY95U##1Kp"RT1"HF3qQ$GF084#rkHaQb9&FAHHj&CG0kJ@bY
+
+)ClHJ*C'LMcRU8jb66[EM%PQ5m!CNSf"l&pp-1b3q13eLVF'Q3-diCF(f22K%hTl
+
+kKBEhEaMFNDCpfm02kq$f(CjlmbL"N!!pkK$1GG)XYN6fa!ChVD%lTiqU)FhP6fS
+
+J1J'%pqA)1h+(eL%IX9$2,&[!KN#i#b%&$`QpMN2ZJk$J1AE4lAUU0N2&)Vp,Z31
+
+1p5,1#IUND6M@lhQZMapfL`@Y(kMr,B)X12bKJeH#VPi-1M%K+CJ,(6QMH!aiZ'd
+
+Xb,$K44@X'8FeDaQM0HBQ6+JN6,U#LfUjQ2JL*%bk-"QF2IpNM'l#b-C"i!pr6Ki
+
+f`+8)l%L2fL4b8(2PLL`E0aMd-R@$kUFlViAATmY6N@Q*k5h*)UfK8L!N$JK!1Z8
+
+0GGhFD(NF!`P-J5*flMJeLjpS,Z%Q0E-k9c2d(&B4qaY-S$f%GmPGd)@+XN[eQ@C
+
+QZX8,DcqdYX[X5kji9amD+3+k6GiKmV04!R+9lFlDiXQXP1#Y`l*c,&TRqR3"%9'
+
+UI6LaIf&)fPHMKXL%8V5TpqPd+N*)F44b3,(JRK'rh3kHe@%fME-86&YEeJfLLaq
+
+(#&DUVF9Z3U8Q92TL1I9*SXYd4d,!)RhDNG$UFNMVQF$f,NLiUGJcQ[[`(D8Fi5@
+
+NhX4M*JY+6rc!Z@j1PhFd[ih6)H"IqkU%1$VjZ3,I$Q[+P%8GU%0CN!$&4d3Se[i
+
+b5rr`&M9-m1Xa(hcD6hecXPM$8,9J9DM#KCSBMaS'p`RJfF*jQ&Q(k+c`*h9I)IT
+
+S%3I81"FM1@pX2kQpU'*+id84NCKiGQ)Z-0Ph9(KqRAG$+5%RUXrJ4PlIPFN1$4H
+
+NDiK5c&Vdjae"+3YX6!0H#p6*23+PjX9b3SI-fG!`mp2SfphfFj@kB`&V&I-rL`R
+
+i*H*(aCR#FcmqP8#%)'PP00(8S03T48VQeThA(&Smi5e%8j5*%6#VE$A3*bPJ)%'
+
+a5VPPiaL*`GPE*+adVZj,!Nq55"TQJLDSR)PmJ+(lBF)Lj9U#KUJcC30m@R9IS[2
+
+,e*hT*lVjA8ZK+qGMMJ3'XP9+p*SqUe3lPkS0JcK%(K8$Y!R&'#IDYphP*,dEB#!
+
+JURhG9[2L!kL!iT5PJDcf@NK,4`9XUf*Sr@km[8$1H4@%&pVH6RpUFP(qS*a4b$Y
+
+rA53614fp6r(U'e[QQ*B,$!16qp(3`#--V*4EE5EAYf#I8(N[q!4&"cNPH@Gif4l
+
+8r%m'31D6K-#m'$D9$i0j48m9mfZ&0JaZA+Za8r$YRJ#KCCi[`,i+&Y1P1Dh`99a
+
+Hr4(hER`$+J#@ScNL1Vj$h36$FJ33AKN`bkl`!D)E)JGkTHp+0T+$K@jhLE,kBb4
+
+0MdZ9H0Q3!$TpbAI$d5h%0BjE'CN4%kpNMPrIZYPdj*paV'$D"XrTR"`p-5QFmDK
+
+)dZ(jXF0q6+ApfcRK5cT1aKa9V4b1*Lep8$mU-TjfSlU0`+VfFQ(JE'&dF0(i`h'
+
+bl6%LNX4ZmTeLkUrBDGAD8V#rFQU92#V3+h-[LDKZlUjc@5iST8HklM(EV!k)YH!
+
+ACkPKG,AiZh4b0BZN*0D)I+6GNX##0cb6p3J4TY5-#[IcVpCcmXpMd[F@*#6k0S'
+
+$SJI*J4*G+YG#P!4RIJ13!!fYL1pJiC(aFk,E,6@HDU*jb2AJMQ)LVlMDh5MhLCQ
+
+U0U06Ra5#3q'Tc,DkHL8,($10C%jmmA25$[*j@,13!,j9Lq1N3&Y"L)"&Q+Z`T""
+
+"X9B*$e-[4J#8(8L4R&-GIZ&V-EY,T#TM+[e+SI`q9`TI(-9l8E1-`$mr*N$-IGA
+
+GSSNDJCH2fF3Ri!+q"'"%PafGlV5YlN@qjkc[jir((8GhH9,HNHA1+G(#cij9LiK
+
+r"Mh8*JD1[Dj#ViRZLLK9%EJ#I(c!2frF8Y%!*#`(ci0,%9d@S'EN#PfDlrB1!I5
+
+Si`Hh!6NTq1)$)#-NSRlh-VN8E"#8kr+b-ML5L3%Z`%aajH9Sp#Md*S+`R,U,C4S
+
+`!Rd(#RPja'-LqFGBNe(*&Z&HJ*1hh8B8!G3NaUICYPLDphVhH("qlPMSZlf&ZAR
+
+e8K&aIFa1Xf*99pVJl%N*V)V%Jq$QSl92L36!,KU#6[NpGXGSRqRG(YA$4@m%YI%
+
+*b(TfMAHB&+%Y`TN@S'Q(Yq#NJJJA5Xd#KlZNZC1rYB55+LMZMGF[X4i,a#6Mf3'
+
+qkDcVPE$PmL)A(Gb"XNl&'3@#T1+XM'K'k+j@`P5@`@d951Y1U"J`DmTFcpAeEaX
+
+TXP)04aLX3(U@fJEE2kIh-1P(ScZ!!a*(%-Y"Y!4EYFp9,VC94lD4*PMTD,fL9&L
+
+@c5,Jjk,mla4FH"#T$`D[a'Z4e3))Ha(SSL(I-5ae&`!$R+1&M'Ha)CKpcKV0Z8R
+
+[N43DZ$&XABjmYYSUdN)UZ9FV-14V,b1"c4ZLZ6)`S2A&A(Pek+ml6HriUV&'N!#
+
+hdK"8VKGFFNXfK++B&1-F#"%XQ&iErFd!db[2eqCTf3)iZkmLCNrAKi'V44-B2Xp
+
+(V01*5feSN!"PeCBira5!J0KqH*F9[Td5Q3C&*#S5H3SmFmSbA%8Dc%F'NlDm356
+
+cRXR5+!N)+X9Mq[Y$4Za)MT&mKQQPGP$j*b8A#mYP$QF)jGlmiFqCQ4j'UkeSVYM
+
+3d&QA9"hrG8m&[22"QPCZ"'mTA[lPPKi[UI0@[e[5ENFR4S[`(b[DEbJE2)pk50K
+
+880[RBj,Q6Z#YUZI1DMGD46jS%BERXp2k6NcD*CAriRdT[FM*YUkH3M-K2HCP+5j
+
+JYf85%4Qb8kp(D5@CP"ZZLGiJJK398GaH*%TfZ(1imNE6HkJ9Z!'SLBFEZ(+%ipA
+
+C(BCcDGNFD$9&`S!DGqa4ZPecHXhKiq#a[ZTRHf[K),PD'!N'6T!!)*D0YKJX+F%
+
+eIZK)bjRND9l2M&`0HXF2[IldjfekQ[TbkVSHpXUZ%GmF6Nl-4Z6ZMU0X'BTK&dI
+
+TBN2J0iQMhG[GcJkKZ5KZG[MG0T)a-bU6H-EjS9RG0lVe0G`R"&M9I$*9D5BVVM`
+
+'KR3,M*HX`Xf!rS&$RqcerT!!0!4GKCPjBN`(#2Ef8p'YX3$HPU"h"flVKSLL(X%
+
+XYh`'NJTmR8a5(J0*iA3k)B(,J@Z%H,K,V8Qj''j1#(!l&dkq1X)LTi30U)jXEmM
+
+bkcY[mFKDE*3'5eqaBKS88c(9-4JpB#!qk+df*HTl($T-r+1`DJ8eZk#FccL(kmJ
+
+-$A5SXYR5KDp'fiSG9Dc*p++D*$k+dkE*d9Jr'fV05[&ZBaFQr1Z%(3`hrPmVU*Z
+
+j9p9Y-ICiDCH'l"%NXd*C5jb0-)kD6d4$*h-Y3LJVU@*6c`#`i&Nk4CYm83GXp-!
+
+UXP0%J,@S,h!AG9K'fCY`C"RP5JilM'[CJ!D3!1'U63',Fa%55qM),)4B'$RSN!#
+
+UHN-'JI9ZbSdd"3cB1JJ1I(hR"A4!!f3fU*UMbXeSZ%5&5kmRNS#Z#SPI&r3$J'5
+
+*e%led$Cl5Gbkb(--a"pL9dRaRFIYmAL2A5J[0Y"-+$B`ma,-E8d60K!L``KGe@U
+
+Kp'5R-@$be2K#KV0A`KG4b)aS0pAVV)*bXp#jeTf1TADGr@(*YSV"$c3Z5*p,j(*
+
+Z'KIiZYFYKpK5PpG6kiR!JN8U-Q[N!J"Hd,Xk@(b""DiU)#AHGlmBR)jk*(LjJKS
+
+Am,*&EI'D`G(ec-,ijTqkMNDN%)*EQ!jmK1hM6"Bk1`@01ZJ'IGkbdXr0Lb!4Lll
+
+T9R9C0N8AZ$6"fI3QV%VV4QT@EFFVaV3$EcV5,LPRe)iJr#-"m4$iR$iYMP5YYb&
+
+JNjT[F%N$YVKQV,0,bXP8#h$KQYUTBDX3bKjT2AHjNmD0"Z"[hFJI-IUcfqF#2SI
+
+(D%ShE08(CB1X(&SjF8JIASr@I(1F4@#Db'('j)%%TMS6IJHb"[[k#'LMM%!)&Fk
+
+088*k#dDR0`DRCa`-6U6f2(Y[G[,f@VBE-ER+@89l3%ZhU[3`2Lki6$L4qT8@mmb
+
+BU)S3CkcF*eI[UBV`C9X2Alcq409'[R+L4(2a+QEF&qHXf#pmVNLQ@!dhe%L9jUi
+
+HIUhf3lk0UmI361fSB*APDkb4%1*IA&+P-c#5F,RGcmIjP"V%[!q0$[kS"6Ik5[L
+
+k$-(N!@0KHH'AkKbCS91$@aYh5(er#iH",,IFJ`!pflAVZ5M(0hha,j0dXe+[5-1
+
+6k`)4Q+"+fjPQ@(J41c"J*[J,rrcCI@riJ9h5IGHK&AV[H+I`LH91EHIKp8,-#K5
+
+RFQ)+-QZFZH-$Xq-9A,N[m18@%NMjm`mP%2fDK35Ll"Jd8)$bR&m!C`m3[()GD0'
+
+4+Bk98SG,a&pX,FJVZ-La3CS$9Am&XG`VU#04e@j0eb@FKBrCG"VcY-6*r"+biMI
+
+mdFqVSMk8U,EJD*CbSXEi@Fq++**6MTJISqDTX045q#V1)R((Q52iRTZAVQPrMc!
+
+3apP-Dl!lBA$YV-NHG&G`"ZbKCGGM4P#,U9N6R0rI#NEBD2I0Ap"%5i&6UeR+q"B
+
+Ukh42Hp-))IZE+mY,V&I&()3&Y[HZp0D`aLBXcPk-d[F[cV)h-%c-XK+r4"mcIqG
+
+,d0R!dIDZ"A[)b[-!KmQCpbmK@PQqj%$[U#DVS`TUMGEVG&heaZ8Y9aX+JYAmiHL
+
+@Eri!9c8`5F,$"X!TrhS#L60hSL#Z,XT`hBDTrS`AS`@q*r)RS*)fPPZ2Mh-E88V
+
+a4Z!$%%&ZAl$*E%lp!S*VQkNM+)rR(R2X&96Kh8-G0qd`0eqHBm8-qm@cifF(5j-
+
+F*8EVcdVNemGf#rFN+kk%6a6j`&*2h%pN6391U(Xjd3j`'fS"jS2P##j&CP[)I5C
+
+HhD*'%-['p9FGPdjf8P5U9h*['Z[B8*XB(6d'b$k$0Vi1-S$VdEmVfY`b1@VeSQ`
+
+N#q1Mi+B-&lLHKLY3HBjDP#UrUNrfT6NG#!V*%"4)fZ#aB8#YYdfkJ4m(l9A'j-V
+
+6m06k!89K2+YIS[3T-@eMkd5m655*+!ka!'M%YE9c"j!!dPG%`pe3AV1[dmPTHXX
+
+SILi1e$k0Tb33H!P$Ji,P39)!SaZa3i"SB11Jh(T6jQR-U@-Hd`4#9#6eaiZjBib
+
+3!#XAJA8*p#MQLq4KppR--Z!FX9bM`*8BCk@MJ+jpDJj(SN3i8b2`fEN[XP08*9a
+
+%826+fj'V$AKD,(C[")31j&@%86JUl4$'$A22eGLrf!!*"8XPD%Q2-8+9RNJ24`m
+
+$UL!Ph,FmK23rE#QmKqeE`HkeT[#TX[3p'*i0kQcj)c1DQG68fH,k"k8k5K2lpGa
+
+*8QC89(P!MH$662ZVaJpB(i8R"@BraD!dG3%p,3SpDeRV5H&Jdm%"D#*Y1Nhd'(P
+
+&KIAPC[ML4bUeV(XF)TFmDK-M'YmG@aRM8b&NkBC(Ram5CZcl1`MI`L$Jp#*%C02
+
+d@[J,&p#`pB2MF*!!rH)*SZrVU!P)Ha`PG`ci-3'[H)%6kF4JClMSIeb-`1DUpMC
+
+0F3+@&EcNHm2af,62piD6FAIm0hpMAl@T8Z2TIrQN56Jq24q06cV(ffrb*lhaT0[
+
+j'rZQl5Ej1ppiF[iFD$d[id@E[fara3mN%$ThB2D($b3*-JUmA[FIKY*PqSa[2(R
+
+@QC`H[hBI-'F`#fMJlhh!ZF'`F`&11)L%U$F3M@+@X@9qkhcHYf@@m9iAQHk%QBX
+
+A4bHM&aF[a)+-,d['@,clamGBAL5k@U(GLjeAI0P4kb@'`8-5a,)iJT+#jV)c3CN
+
+i"H&Q5)jck(5$XJf"*NKb0[$QbD!#I&SPri`a(H9N&LG-(85"UB+SeH*G8AYcKa3
+
+CDEiBpNC%-2C[UpC8[jY84@6IXk@9"IEB%HD(KLr*T"jZA5$#&)[A4831"5D[Z(9
+
+lfS6S3f!a"TFA'MGb0bUR%,90hYmNH-PkRM+$FUeFZ95V!K,9@AAY1R,-I`AmB`A
+
+HJ3iUI8!UZ@XViDMkJQp6-pY4(BZ(A1$0U'QL*m(jK"cSpicfID2%k#KAi)hG$J3
+
+)fC8)fZbjGr5HRmXef(I5F+(@Bh)G4[mDN!!R)`MVEeii$JiVP#5Vd4iNY*9M,DU
+
+d&qBZci-R$9jEK'&T66TrJ%m8M89C(+P@Eijc%U4ldL5Ne@116BQ*FCL@3bFXSpA
+
+6%Y4[dGf`c+,Tjc,,UP$6$#KM8GTR8@T4!m(FV-a)E!JCA0D(1ZEbA(J%Z6jh@Hp
+
+Ii%i&HZ+Qp%!j`5863`'(Bq6pNdQl3,&-1LV6bP&#DJ614(3N4N-6C8pQN!#VRTD
+
+F2QmeZD,b40BMfke&S@pj`f`AENR85Vca4)J(1L,ip#X*QbX1r3[LN!!)k)H(K(9
+
+QP6Z[2b0"KV%m)b9X#Gp*X5Je63c`0"U+a[-'eq3bll+qA&%1amY&G+(Hq)'(19@
+
+lh!#D6TUV6+I`UIU+-9q"rY#)*fhAl)FcH2MX9q,"8!lm`fpYLl22%HPlhparE`1
+
+LNUEK*rDV,`Rj($i4Lj@@bd+"@Zqr[eCYUaE@m464%l43m)GMkrJa&9AIH`8B)Hf
+
+RpS6@i@AH8E+h2AhRqhcC@9#fP#RYYSX#cSk1c$lQFl5,I$0h%F@'q$`XBR#3!$h
+
+D0M!d,EHEpG9&!AMPIQCbG%Y8X"D(q$!G"lqa+-1-ra6Y`QUqd+ZZ4*63G5Fp%fA
+
+-Rh!kBJm9'%MJ9h5-Xb`U@MEJF#"#8Kd%)-Pr8`"b#hFmIAb6Ick0kb8MEQ@h)fk
+
+%)QGf+M5,eL36cPl8T86ZC5PVdf)`NC0@+E8K4DND3"l)&ei0baI(V`#3!%qKDh4
+
+i`6*!4q&EC)mXX&mS0E+NAL@(hHcLl4D[V85aZimDHp)$$1,9M-hp-3KVf1EqMN(
+
+3*b&6bX#K6,h'E3Y4E`X3i8f0T`3[@bRPDRq+PBAZ*Nj+fV"C3#Y1$%1,D$BE*FV
+
+2GT8Fl&X*kQ20Kc2[+S-6c3F5I4d5Y)a1`TpGT5N[,"mJGr[6Pp%hr[F0Gf2Q4UR
+
+C#6qT21dJ&U)j#%G,f+!kHq8(Z+l-`PEPpr5GXiic"'[""c[98S,a$6a&2bj$3+X
+
+Vp$1FAEpYDVHBEqYd4MN%I0X&M16PFIl+fID95EqdNLC`0IpHbY#["*YZ[V,4cMJ
+
+PflmEYU0Z10D,,c3U#+`-i%,%J[$%X#j5V4#jE&&5NAX&AqUMa5TSB8fdB@T28l3
+
+p6GAf01r!dc`e6rX#&j5#2&`i-D(AI9Mi-c+kB8b[&Ujl@lp`Ca#2bPh6(Mcm0Zd
+
+DiQ@48PmYfmNljDT[U@MU$B6$HG(2!a4D)kkmP[Zj-h[NMmUCaC8[(Vpp)bUp)lq
+
+-@pQ!K`bLAl4AI%5q+XX,b,#XX%Kbrl*Z!)+$i-K4T'UF*ef(C9&H$1M)P-8EEmr
+
+49CT%d+["LQ8)IGbT(bTSJ5eR&JeV2H5[K,R0I'SaY`1$kA4M(Le-kS1&D@`mDbh
+
+`k3Ge+3ZPN33#a&)2b#hlh5ckcVb9P+%+jc*5Fp6)Ba4[0ST`ae"J3R54L"5+A-4
+
+1,Be,C5dd)X-$hNP811CZ1%00*Zh$$HK!1H!hE#a!6$j#R@0QM1c&l1J*i!,V2rF
+
+r"56LSPbV@S8VCMaQdFYhf#K-$ldLUQ8A!pC)+Cf-TQBpQcZ$b3Y82Y58D+Yp,!)
+
++V3G*GH3[iPSP')m5G``G46pIX$TBN!$1kKkhl953!#)rD88k#&,k5`EfQM9pqkf
+
+-MVe2eeL+J+%fp&h9M95J2L%Pk#d8-"if'))EU*JCV4qP1G9CGaVYJHA@Db,E)YX
+
+30)bq0L&rP-C5aSJTiE5C161-hSa1bS292[a+6&&J,Td$@!bjb`pf2ELU[M6L&H[
+
+'4D!5C3h+rRIe@G%INfhCZYLbVKQSqJ'9(%3JlKYApINYYjN*&K)lKHHQaAA,-3V
+
+B#bI9dMq4@8CqMq5Z,r4El%mbD%5EUh5Ikf31H@cMd`aM@ll-MS`fHXPDH'YKR0U
+
+q5T@4#+e5f@lX3[5hr)G(dmiF-,mk84!r,jbiTTf5XX4XNrd(9RJi)L86qTE2TLS
+
+8+KM%PBQVK,TMPGDcjGXNK#2"bBqmaQA8,`+4LS!3(B(!98ZVR5Qf6(DDZ`p+R[H
+
+Rrr3!&-$AT`mLL#@R(AMP3SJ4J(9)UGV"4&'U)1ppZSJ3LcdZL8YT4V%(DR4&p@B
+
+Zb$!(SY#aRaEm5P&UbFY#FLqmN!$S"9'lKV4GYZAa,CQ4+R(CV0I%&Hb!$5,3T-k
+
+RfRb884m5HU[rA0bLYpjDrlRcR$`TdM#eYG%(4Kk(F5ZbPMSA*Qm,hbYp1c`ra!*
+
+,"d'L8bfrKQd6bVjVPL6ClU)$hLTd"cUJSY`qSAl80bCVeiS5mj!!F2'HPq9JH4A
+
+pi5$ZNVDY&D@!*iaYFDJR2b3CUR+HqRLlRBZB`5bSec!UrM"'%#c[Q1f+m5%cSXC
+
+hhFR$8a(e"NA[HQL4A@f1YrTqCG9N"*F(,A(PHIY"!e&UP@*&iN-'ISU3!!BPeFD
+
+Hk,`Uk%e2bNlZY54ES)mP2Yk3!"AfQ9%!669bZC[TV'6UM*C,6IcLT[&BZCq&FfR
+
+Ielil)&0+jTC#3YNTR8dir#L)3+d5$,!39ehG3M[[kUie6@4KrBf5A614ZDY'4@#
+
+TX@ab!%lS4SkcUd#'5ZX@+D,l#j@lPN1k#0r`kMdeA#!G#URf5[&[[5GSGYD&c5[
+
+Gi,V!)-G3kAmdP2X6ZLl'lEb,%C!!83N1UH'l5Lb0$2,T9#ZMa")"lbEJVGEBeD!
+
+4[%-Y,A!X%8KS[&+(BXcf4bJ!6E+L!%ATBbA@VYq6RR&c#F5-Y!aZL1ir6`81'FY
+
+32),8!A'8DKFQY5$E-b4)&Z4J2ElJDS`qal'mF@2ek6eC`hV$f(D8Tr0h*)k#E!+
+
+6#F6j`M!U4Fr!CqLP@Y++Sd0YV9`hN!!@ejfBBDb[DX[F"5Y!!hdLeRLZ!XeqVR[
+
+QfH&8&TA-P!N-H2DB+!NUBcSF#CQ3!)c)bhcdC,0c,E#B5&0&FCh9RiN@6"LSFR*
+
+3-KR-"33QmYN*SkHHR5R`ZiIH-q6AqJ"5he06USZ'a6eb*A4h@MeUfb3CCA@65Yh
+
+kY#Cm((hh(4ek9N448!Q%SP"S,5X[[&YBj&bYp%cJ280ISkERh!J*DeA+i0ZMa#[
+
+`@DY1mIc6GMGpqE5Z2RXG35'Gq4L&c!9VN!!50+'X*'bUEp4YN!"1Nc*+iG4"LPB
+
+RUZa9Q@%59TGH43EmFEeaL$dP*aE86q`,[Jp4XdY+QTrLhjFR'#m2EPCG!(2#Kb2
+
+Z4QEM5LcTq1E%lT9c+3ZAc(UVdJelCS'A+K(T)5Q2-Ua"jK1S&[fG@#)H*Dbij2h
+
+R+ei)q5eFP+cA1YG6$*680J`Pb%jTcF-SfU+"b%X6XN[&K+RGl@p83LjD*GEC,T[
+
+(rVNh)jC"$S%YiUJN#ZqS@8H"[)S-a6TUN!#AEUDk%Hf@[ciqa'YI3YN'2"$Z&,p
+
+3EiMCCSaiSNXII#LmphU*0,DecGe0BU9dYMT-Ma#mbHQrN@mmQRKCGZ6pq[qjP%+
+
+4`!5YHRRI@B3DRqL$jERY18LhV2-)MmEYl@6c9J-[TaKk`li8cj,0!mpHBFi8Aj&
+
+Xb,#VMCZ+9P@F2*M`3BL-4,YT8emqIBf2X-U"+aRq+ic('[jAN!$qU#Ia4Gq`-SA
+
+1i,INkrIiVPARMCKRI6L0159`*E`f[cAm9hfEM8jG8"8cX&Sl9(F0#[)$`q'!%ji
+
+Y['X#YSqMe)h&Z9LI4@35`X`Y9Vm1&+-[b[G%)C`b()1mi$P%R!9T59@Pm804A0P
+
+pU**C+9r,KkBqJQGKY9[0'C)'Ke6M%Hbr1'a@jaCp12&H'K'i4,CZdUa)+bDF'h0
+
+A&HIQ,HrFL$rU3D$,$3E9`T'mk*UJ91%JQS-DLN1#1ij)h2c-rG4@cLj"ecVY[Qm
+
+If+e#k3I#4f3%)NS-k'Uh6d,r4j,ML-ri$XV-Up,T!e(Ge!Jb08`Y2KM'-aUeHGc
+
+B3hS4@-Jf6HmlM$+GX0!K5$d%EhNYC8+(!FV%+3k[Z(JT3P+(fdc&+ibKZ+(YjI2
+
+mITff9ZRY%@'SZpAL`SPRFLmaYT`3aC*0"NibBRM0Dj5`YL-&lTX+,PlabTPGPrj
+
+$l+R#N!"P+c*i2KG)PR891UI4*S'Q)"Jr@FG0F4LP2ae&B8#iTI@N0TdS2@N"3*P
+
+F-A#AK5UH&jrS1VcJJGJ'li!%6!"N[YMjh0@0kp[qrS''9X8CMC[fT3i`4@-+,)$
+
+6Nr`X*$UNL`bb,JD3!&2,8NUYDfGFB!9Y%@4-r%'[82#9TVY0ph)q4leA`8)ffeY
+
+@3j!!q@3p@r#@rm54*0A6[QaS@f3%0J*8[r'[%lM%c4rK%LNEde[[fl'eDM*MIaQ
+
+K4&D*)rF%p2AB95abJV[SfVK+,[`dD)Hd,qm2[khe$BKpBkJXL1QlbdcZV34NMN'
+
+(S-FEJI95fYNk9X&`R1`mZcFE+mE2bQq8Sq%i!d*jlaH@EI*`*R332feTRe20kT3
+
+AdN@Aj%9AAUT$k*d$S1CAVlLbA!r*jMbb84bhd(aZ6k&Kh+%R5f9Pb"R(8'Ql6#%
+
+pFcd(jS9#lXI@Ihb-a9-b,@3l[@DSJ$R3!A`FG&VM1("J@0lB6S4J5[Qfp&PI[Jh
+
+V2"U'KV[aQMj43Sr#@lF(Zac0!E@'Y+L)U+eXJ$1%'G+K$m3U(9Hfm5U[+M"3%PD
+
+&lrZMF3rp@XUMjH5#YJVcLDFKR2fS,$'pIqSk5aF[S-%62d8*BXE!CdCFdqIDGT@
+
+`M@,IbKE+$D4aTKa0P)&94a8i5a'`D9$NXNHVjbS6(j8VG&5@5mlcB6#q8-M"1dX
+
+MLiDAiBLlrL9G-Le@RB(`IZ2++4*E69dlCFS+@hCUXChm`EF2m`L&%'Sl9c4D4U0
+
+5U$!C'231TUjUV`!PU!#4R0HK*8kZV,P5G*VkSaQTN9),3XrRA8`+'S+XFdCM`3M
+
+ZE2!ZFV#51QTjGbeV+L&"'CemJZ#IjC3ZBFm(AdcS+3q)5)h%l&5X63Y%P*Cp0DZ
+
+fJQTaK%JBPN(0EP`rbIrP,J4l"%H9"m'a[)Jiqm#aU+hd`*!!XN-%,8'XI,LA,0q
+
+hedFIiM&YMS5K(!r,TmPMjm&&b+bVKj4&1M"X&2Kr"[k+lZ"84YC4+El)6Lqb&YJ
+
+I1'C)kLVQT,iSL#iIP%1DLfeH#B'VBV2Da-b2lQ`!D1M#aUMfN!"18U4X9U-BT&%
+
+8qfKeV*ljY5N[m2QDGLH3!0bRQJ,*hR)"*kPGi0b2BX2UV0BF(QfajCAL'h*)h+L
+
+deH(CF$EX%hDFb&XCRHTfE4$Q+9!)rFBN2+03H[+,T"djDqm6m*d5b"LQL$kf0m+
+
+j6GbZH%&X@c@e[@ffYJV1Zj2amLB+bEYU$eIb$6455QCpcqSh8H(Q4feT*GjlT@E
+
+V2BU5EP1b[IC',B88MlAcY3!PXlS[PAqT6`0VL&Sm2Y+!lmE#8Q!L5S-FIFQd8fd
+
+&@h`fV11dFiRZ"dSTeIXdlI6QGll`dN-)$dFU4*q,'D*+D-l`6Y%*LXbf[Ma26FS
+
+NR$-+i%ZAPh61r3C4F0J+GNM8b`NRdrQ,%RG9)bFqr$,k(raQV#akSd15Hmqe1'(
+
+6&3Kf9,d&@49&*eqQGNh9NDQSe!qeUr!dRlpP8B1&DEBC!)@BIcd"$rb2B'e$%V5
+
+e&b$pD&kqMHTPi*!!SCljAA2fIU3%MH2[FC[XZ,lP1RH6@eXb`D%!&pZ8p%hK21V
+
+BQPLrH1*Km@[b`acBSSZbRk"'bBK+p5Z61@9,YiMI+,fZlqUqkMX&p*m`iR2ma34
+
+'5HiBP`Sh-1,ZiQDe-,cEQf%2KGm[2#0Ui,R6lkfqM-40QJVP*l4+DQ(QS&cI'-j
+
+D)qIU[U`hCEHhZ"6V*@C4'30R(`C5BL$l02apYTQD0Zi@K"12,14`e3$CEa5(0Y$
+
+p9m[V9U)J@[G8cDA%*($PRL`Y4Ph#'-$UpZD%Ab@VJl'F'U)S5"q+C[A`e9$[0"C
+
+bMaC6`6V)9!UEA!hB#KiVAKm5-H`SdYcNB@F9IJNA,J5jq1)k"490CS$5N!#)S-P
+
+E$0K)C*b"D#MZm5,F2)4L5j-0licZPkdTpaKVj&LP(+KU1*BcMc0+&Tqcij2c`FR
+
+jQ@Z4K`c(L-!ZqaSIf9I60K2DP!2D%rPP+XB30P6C9Q(PPGal#)I5E4Kc-@4D6h,
+
+rm-JVJT!!0IJe'VBQ!&`U(bHN96UM0T4d*3,IZ`c'K*J4B%!1[j!!!,Uc6rC4Zrj
+
+4BX+[b,lZC#LrV6FC[53CbPmjRBa2AEm(aaCH-0m8"p,ZKl6pY13abaITJAd8*0J
+
+BG'TQ1*Z9$epKl[+C#U)YhZD5Lf5@54mq3Z!aNNV3[`K)!F@%D18eUD!i555+e@(
+
++0ELDV`%UPm2lqH%rVB(([ff9qXf+516AB45Trm++k+HRm-4Lk1U+#kh0DE39i3"
+
+29i6f5kYf+1FL8(2"pjY"pk4@VeB'&%Ae,R5FZqm6CeeiCqSZ0#,SMAaYJ&GB%%&
+
+Ir-2L1%cYHHXc!VkbZaYFPPIG0BZFBU80A*f3!#J$L&"fZ`-kGKC`HAR%DYX8'al
+
+dka(mkhBV!Sdfl`SkAfB'N!#V0#%HEL69a(,'cJS#FUFr#0)CTG#&8ASAZUKdB[r
+
+JX9!+-pRle2ALiT%%Q*I#b[BPbQPr6L"cpYr$X8FmB+2#[%HIDmlJARjBaqN"NiT
+
+1Ir#*KPcV*88*U"h*cf(&pMpHq&Jad$MDUV*"+"Dmc$"(jBBV-5)(UmU25T!!84M
+
+*6J8j8SV#(@PiK1V%bN[!#H*0)PbM5DhSX[1D0k*V4pHU`@c)GDMiP,+,@)k9dHU
+
+-dfIAF#fGeBP)M$+3!0+%L45NS34rN!#VPdD8EJR3'9a8CLd)D)6!11h%XLmZLLZ
+
+5fZI9F@r3[jJ-b)eCr00SaLN2rm#Cc%X,E3YSKK2qGB*qZ2N$qQ'&'Xp6Gr92j&(
+
+C'eTUlCDqbU*T)8*ej"6`l+Y[i0R22Elb+j24Lp(j#+`PYZ&+q-FJeZAa-[bJ&9P
+
+S0U'Qj1M%CYH$''5E9(AUXrepeGN#bhe4eR,4qF+A0iQ#mJNRBY+#i*m%L5+h@Ck
+
+KHPS85a(cG(cT84N16eKV)1R3&j+G%kqklee0&dBa30$b#[9MD%M`!QSBDR%C3Vi
+
+&$53k1)T6&1l"[#4L[U`(Jq'RJeB@FVfPa%mmhHdM'![B#YKVD$9R(HeMhi`rl+2
+
+8J4GbN5af`fbY%#)p4B@MX$$c5ZLJVFPq'Fk44RNaI*l$qYQK#ji"@AIlfiB9KkQ
+
+[K@qKU4e1%Y!qKUX-FIhH96&-+AC6cB0#@8XZ"[DG-"I"@$JS$3-$jkK82&*V%ka
+
+bb(AZ5ASFq)k5r9YZ+TJ45+E&4rZc#3GKQET3'2Q$LbmVp,f6[dK&T,Q`ir$1*"L
+
+,Yj!!cK3PeA*HB#F9m#5IlHr+c&Nj#qkV$`E@iKq*KD5liU$6IpYjJrrYpak*26i
+
+F#i(+U(j-I,0T2AI1Fk5$U&&UkZj8BqM6lCfX*$D6ECMKrVEYXNDmM%(YeZT%81S
+
+qSiKiQX%dMZaSD$qM*$-b3QcYb0f02D,hF&615aXmLV4T'LJ6!`IE$@(i&GSSkkr
+
+JB0b&r#`CGH#rCFJL3'k2p6'@U@0SJcB2pbibmpQqSRK4!,1`,X0QX!-jLXQYl$U
+
+X@(0d&jpMi`EaG*[4l[ej,PDqV6J""@L0(CR9Lekd,fC(R!TPD(8rd#K*JE!M6EL
+
+)q`%S5+PR9@qqPb945AMdAc@ZEAPi3Dr1"S%'X'G*j#i(YEj,LVK*!11bNi2A)*1
+
+(#VQJC5i`bQ[X*SP,jR8GF[%Je[+A,)"VjS!2*#BcrKNML1r-(Ip@h)%c&j-4d$k
+
+LLhr43@CHSV+[`qVV6MDJ+jHIHk#JI``I-RD$Ul3JQqXfBXj3'rQha-"VD,dGjV#
+
+8HAUe!kmQUqXAB(I@)'e!3Q2qB%,aK4NYC$h%bB#)FY&0#*b$XE1!H,[YU&VFQQk
+
+k9Z"j[6ii2E9"J4I'@FN2"[A4R&$b9ErcJfh+k(+E&C`$emd0rTJ9`03a66Gr,$M
+
+eaAdj-*!!YEl0eMlAZK%&a++)M)aC,lq+K6UVB@R35*CRP'JBRl$$CIFiLD!XRQ4
+
+A-,V+P3mAY"Y1-B#$,S1e[UAQ0GI0UI*5CAKNA+JpC"L@H,SLK"-pNP(Z[rJi,C&
+
+C-Hf-bq#Zj8VX*C1'L2TT,S##KjT*qK*cNhcf*@*PGh`[2md(E5XF!8--e@fPCa-
+
+cB4P`2r'+N9V*m`ecd%)pb5T!R'@jV8B98+EUZ(!3D-G+52@XT[)AX,@PQ3c%MBX
+
+E8Jp'hSZMG#m6T9PCd3ce)pd!JLFjb''-H&rJQUF2UR"6NK3[N!#bA603PaM05cV
+
+6-Dbf-0Rd((0Q*'5KmGAZGl3i#rdD,A6,SS"Br9PEk##,MG)ZT(IqQed5r'#CcLT
+
+LP"Um5G86"C'-LMj$*HJ"A*``ehQ*DYBM8mJNI%iAclC+5AlVpF+)V1mHfLG#JLi
+
+e+1GrI'e,3F4b6hhBN!"Rb"dSI@q,cDT&6J-VDhTI6M0&dj'[N8-,fbb8+!PbkC*
+
+kjR['FdS(f9F34'KRc%S2M1c0cF)k@%[j4lH%)44jN3MN2I3HZ,%8HS6SFYBMQXZ
+
+f@'j!9'r'h!FkXhCaK"94b1C[!l3r1N!Uf2`VarY!ckVpC!Mh,eb-l3#9-[cVK'X
+
+4r8'I`c1[4Y"GLq'N#rhPXFaHUL!BFZ@SJfQa((8R4IRLpii'&@!*p*3i82CdkfD
+
+NUk8e%f9hZ4R4)e814V'H'&Vqh`FMlm@3!"Yjlf"XLE#3!2G#SIL6KB%eZ6`Bfl`
+
+A@8FSNJGSN!!9ra#&Qa0BLF93i4FUYJqAJ#Z1MmHAhe[TQcXJPU+8aFX8e#5eRTh
+
+cf&(R%EJSNVF8LM-a-CHPC0a(`m#Aj3eTelUVfkF3,E,i(8NTfBqCAe-kDcTY9MP
+
+,`[c89IC4d9)aaYe#+Uc!Bj0BNMJ8HaDjmbMmaaBSZeCbJ'&-QD)YDKRc[8M5XMe
+
+IG(9)+j9ZiNh$T#-![c(3l@&YXER6!2cRR-1`VKU-rVUb*@hScm5ib[eF36N`)P`
+
+V%2(ZfKdqp)+@92N$5SJb+XNcZ+a)kpf#qX"U,!TdN!$@9DJC4e-C@ec4VQqHkU$
+
+J%JFTIQdSVP!',QaF6N0hhY03ah'&CMK&8BrqeZMBe"(VFHFM9F0aiE$KK'G(Q+T
+
+@(r2"HNRC#RS498Ji5E%JR6&fpjEH!-TTh*k"chM,hLk!"+bcdJLa5$T)))Y5feq
+
+%DCMf53Z(5CiS9mLk@bhfFN2fp!R8jXjfa9`#pE#mQQ)"*N9%-T&Ff+-h&MFGip3
+
+hC'p)I)1#i869L2LATJ4)I@%ciP0L!mTY`,9RH0ml0E$JKRfDLUddU+Q$TJb*)Kk
+
+FqpR9@5$-h2bUB,$R!TR"ZD$21HD#E*&iREUj+,[+Z@4#AI%+6PQk8XCdB8&K&Aa
+
+-X6EACi!b#kJ1FT4I&[[hSk1)$#85VpITG0-l@Se9)*16HG0hf-),,*mNLB4!Ji8
+
+4aa-&#383`01K%LdGim0-i!IdMA+4a6'J@L(B-!mMpP)(UM!qS!L,,R9qD0jb6%9
+
+U65QE5r2V&&L(efjj'LS"L@[(G8#K&4VaaL)*KLGqf$13!*adrI9UT')95SQ8NHV
+
+##"Y)#!5K[*+(9([NVQrIlN"j)j!!5Gf5ULFJKP9SQ4Nl2NlB4qZcfVB98EGSh63
+
+rJPRX1%C#5JNkR"f5f@%("K-C1-`)NDlh88ESK3@L,kKRXBZJ9b-L9P&6cF+(r(P
+
+kTbqEU9#9Z8c+1HZNMRS0AR(Pb&#*39@9j!m%X93"d$e89E&YJBq"YU$VKLfdr$B
+
+d&k'IC5B1MiMhSQCpA,S"5$0Zj"$q9rea*MeUkU!J$Lf-$lmd#hJcdUrpi'cNBNk
+
+E)S[LLZbLF$P5N!!22$&pamE[-rfL)#ilikM!bXaPN!"eD+`YaeDAZFZSU,4dejF
+
+@8GI$6SXp&[G$F44ZE*XH0KSXJ@MPB,qb$cCDp,(+4Y`fpk$L@,db"LMN%ccC5[9
+
+Epi%#CV%2#Ckb1K2f[@%X$5'#hf9-ZPATQTLm-"aKbmIFF#e,Jm'jJqkJ#IkLF"`
+
+KL'Np`1K8#@XY'b-f*cD9)*&-EqDmqU,@f[bcD3Q)@&jX%hh@19B[a[l5Ip[GTpS
+
+'+YY9Yr%bYp90V2[PK3mHG)H`qVb3!2-IAA1L5JJE9[#`[`M((Hh[HLQRpBhpG9J
+
+Q#V)F*PH'qH0YHZD0hVaBSZ36"6"H"(4m!Upl"`eQIpl!(f'4IL8+d$@6K9L20UN
+
+LLkhF@FYJ5NV[8PfP,[faUU")f!fP2jS"XJUlZD#YPa2BQ2ik1PTcFeFEXbD#`Pq
+
+[PepGRhf6q`@T(TmaXcaGRLP(S!*!@fGUU1cY-LFZ61Jc*b!lSLMNDp(QZ)LEJ+9
+
+3l-I[UpQL4!D3!*S5IkY4%B3HPd)9J*K4C)"#(#(H2YSSTYib&P1DCMPB`MepCll
+
+VAePMH@*MXhjma2Jj$m3!DEUckmKh,%,ME%[0-qC&Lpc(VrB-*"'+Qr1e"0cYpfc
+
+@j'NB&GLcdl[@eJfGY#`SkGC0h8,eHX@QH9"Pd8,S@IfVlH(ALqC[UG99H,DZfFD
+
+@cjTVPM'U`QH0!R80C'@d)+NGl3pPC53KfmTNZ5-0jGUHAT4@!KTUCjDpBZD*5Ae
+
+mV05kZ$p@,ZTDZKER)YBi"p2*2!LEBA*-pi%0bZ+hX)XH0G3d`*!!)#`)9!SlHV)
+
+N`lJALPVf5jELH1+YX"(9L5MP,kb9-Xk+C#U6mXaem6Q8HP%i[b+rS)H*98C$'[3
+
+9%$K%RTZpq!RM(QqZ4`&@b5CqHpL@lS1`#I,SlL$FI5bH!C!!"pVhqGF*YLY+d6k
+
+26Ed-GIC%cLY"YH*8,4FQ1lZ'I[ki%!N#ZXMq(YX`'@TCf$#dKeFfM!dQAdD8"Dd
+
+m'1k3!1RRQY"FQ"re5(HeKr1klaSLSI@MVU'c1#V!Lf@15Zm&l*36TQkdFq5ES'D
+
+FNPVV(0#UjeZ[f1,Ri[PM%aA4'[--GlGG#3Pq)3mU&L23%)m@TpM9TbjThiMJP-&
+
+(M3J0%RC(G)e#V'kY-Y@FUh8qmRLA4BA"0B(,DXXk+B5e0p3D!IQ3!(QE94FqLr-
+
+,j!1,iC,cSI#3!)E0`$%Y+GN'@KX!lfFSkQ0FQfRG),'di'(a`Z'Y#`k,e`VHa8X
+
+p2!Dq1jE@H0hP)0D1L-@D,NYXmBJ6T#GV@KXcPZGJkGK-fpm*h[3AI+0mfp)$EVE
+
+0V,c6ZEraJ'FeFfqj,f%!caSHS2Im"!D`&Emcf%[21drF3m0lU4idppCdX*bliFJ
+
+(SEmBHUFKQ[AY-e,(rJ(MrNTI4+mUpQ+1pm8(c6`J&S$%[4FEGGqe!%liD&U*bl*
+
+d3MlHLeA41er8MX+4alf+!jK,)4DM'U3hGjD(6Yc(1c'aT8L6Y"D*0kHjT)Ta)qb
+
+3!,C3-Bi%(0+&l&d(dp'%Iid53#C[l5#6(qiGPq["26V465#bqG9"0ZK6Yi'+ZRC
+
+hb3lUVHe0FNViXj18(QUHk-PqrlCpr`G1NHASfZi5IHfISS'0IL0IHq5I!L*lbEN
+
+XC4eETCU0piAXXLLjQDEHm*EE53XK*+QqFZ%G`*UhNZZhl+KXi0K9KEdP8Z029km
+
+CUjh4`)#!fCQLDF,(chTbcDFXH2ZqXP@R"06PqThBUP0jZ)1YbNp,5FVISZ,f5#0
+
+d2N*I"HSEjc9-Id!e(%RRdXA@PcX)l*CbjGZPL`emj,C#KBYSm&p[AkaIh$lP"bM
+
+$SRSf8A&`a-&,5hfU)UCS1rV([c0FCfM'1B($18-T%#cjTmE,mS"4dFZDJ+,2HXe
+
+M!A'd@+9CAdZmDjmF5X4j23(KX!,)VfM-qC%V&(TUk`BUp'(CajNGiV8,QLCENlG
+
+d,3PT)SV$9dHGlM'IdHG['(J9aLSGPXh4#E%4**Fj"idKJ3HAYD!j"VG2-FTm4Y&
+
+@X2qT3)8K5`BJVF,i&3+SeaJfPEYdDf2!j"3bSd)`H)e@2fL$B0i%!bH!Dp#R%4!
+
+hYBkdSDpN`De+5RL**++2r4"%d'@)d+aHQ32aMY$$IJ@L9If6a2)AY&,9F4&Jj+G
+
+AX22i"&'fH*Upi(i%m-*I`U%!`%Ya+0DXNbSZ)f+iYVX38NMAPIG4KYH1`NK9QSM
+
+cBCPKfX"rTbAAabj8[Ec&K'U9db$1BAVNYd&%kV8FCHNm4")aHJciZ5Biq@drM8%
+
+0kVZ2qQPSBLaJ4hicmD*"FFQ@)M4kIaGZb"6)X42qG3*JZr8$J'eYRifF!XCJSq3
+
+IH4Pid3*&!Ul)4iS@6Qli%ZPXT6GL@3Ad35rEMdpXePbePDiU"-#$4[eaEV0%ipi
+
+AfLTVrT6i2%Qh(B[@C2-TC5[4iiM8)1r1)EkV*C!!-M+6C@X9l"8U@Hd9pcDCd4N
+
+Tk2c,42Ja#Ta@BH9'r8JHLL5-'rRQ2pmf00flKlGE0ppU8ALB4,fZR5,)`l&@mmN
+
+LEHL'lNrZ9YPQV&fd!lEqEc4$$"kKAp(V%N*GKDa()FGLPV9394LCpBYpVRZH%(C
+
+U25#Yd3G!"@!8lHfVJidL!AFLrhl`(pK'E4Q!Pe,K5[$@0r3*ljeEi'`p2,HGN6b
+
+TPLaGNZf3!0(fUU,bfYJBGDr,i!PbII+er4,f[Ul5*iMi,k$I',eid2pDL4Q(XZ$
+
+PA3l0U5+F"i`(HC6l&2kbVDl@)BE@hk*[&R[!l%5"*rm4[+8C1f98f3mE)1J@AbD
+
+Z3XXYeFSCXhHd@(L&6h!E,eSM$QDNIA4[3G#(m'`Nm9f@SVX)3AI3)4FjEB%jaB+
+
+F*6*1JKeM"D,LmB4deAd2ar99THY-&4&'N!$23UT$NS2))9'643pi'VehLlZ"G"T
+
+`FQ&,r-6j1crrLQAd1!GhL0C9Al5[&d&#kJr5#qKUrAah!5FSD!bV@EfD8C!!`#V
+
+QdYcjRLiNCGB$#KJBP#F)-&CMBU'6XB6[a6,"#qDf!`Q)Ei`#h@c#kBdKX[T9&P'
+
+eUdFAD12-kLZMe*BIV99,5Q5Pek,'0`N5"iMMPQX2G)"8VKXmA-YaZ!G&3DP9Z69
+
+SeMQFeml(TbkVS"l"Pbr16br1QDrNKJ898Em#r*Db!S3LU0q-&H+T)6Q6ib8P649
+
+6jr%+STe+VGp@"PN@CCUAp$"mIF,,QC[Q+QC$PS[M`4K`HM'CJ[4d$)bK`C3LYF!
+
+TJV@(%E9PhTB$FKSa9EQDTe2#RihM!4C5c9G6hh,T1UpjUqdcRPkrP[1Fm1%3HDH
+
+B2AVb+$J+Yf8cPmbe(0LejcUV#hYS&M4U"Iie5J$1#9kl[L$iabIrH-@cJQq3!0G
+
+""3+AK%4Qr(!5P(&GIE9lD*S@8YD0pb,1'D!T`L*8m$B4p'SR-%@`b`k(p1@1eYr
+
+[10A!@*C&ck4XTA%+$3`32kD#[!Ai4YlD33CcP68[bf#ZQf9`4KB1Gl5@PX&pfl&
+
+R)aQ-+hSLJdfG+iDlK3a'2*E6'F'3!-(!ceKFMLFb1&rdL3`'lREiA0LH!Si5pKC
+
+lSGm,R3!6C3Q&+hI8)VK"`Jb@T+pRGN4,"5ZN5q$a9&(f598d9AUN9d@qc'`F)F*
+
+(`493`N5,Rr!M(6SUYC6kf@T,biTFYL'N4S[r)UL4V&2aQh3"kG%1TZLRNppMRcF
+
+`l03Fa[DcQRh5(M3k6"C2&ib@L[j,43QAk1#p'eSTrH+p!i8Jf&jC[b*`D4hBe+T
+
+"JI,)4iLb[ETK030ebU"@5AUZK[qldG(F[BPQkAZ9`1--r*hEQd,6cZmV"%b9Fl#
+
+)lBj'C)RNTTe,pLh8Qq)b*m5H-eF+5A-e9L4HaV[!FJhXmGGbDUjbVabk8S&NPP!
+
+qS+,+S$)Y29DphfG93jLEi19*YHPVH5Sf35"jQMGjT$Ec2"B1fXJ#p0A[54KTET!
+
+!VYmpKK2Pp+AJr6hVPA$2bQrk,5HkNk$2#kD,rp#G5lbjrb8m9p9R5q%*D`qcDZY
+
+!F9B![k8mqGQLd,$bT0%JjCQJC2LQT3(E+Fq#@p`VcjcrVj3R+UVT[9YjXQ"[R%*
+
+f)M)A9QLj(Bpe*jKdfj[3,H-hN@MlSIqk5G!NK8hh8B*S*'N#4[*,b1*j,$`9qGS
+
+@ZMQb(FIP&G$+p%mZkJ-b'i@50a4Dm*RS$MQTFH-a)l-irej"h3Ih'Z`H9Fr(AJ)
+
+(P@1#"FLL`-TkFGS2f)YK)QjD$5Fm5N+9"Z3,RPE*L[)MqcT&SKpe@3dA4[cIXEa
+
+qR+FJr8'[-hA$&Gr`bXT*RL'qA%a"2$'XJl@1e)h0"'*!#Yh8J&qHI$,a0S*'[F#
+
+r6XJ@YhiN@h4*cLq6,&ei&dqCe59$L&LrNk1f(+RpP$3FLrTDVQDEQE!Z9MiAcl[
+
+ACrr[YY8VT!ZP)2bEZpEL*09rF#A!M"@-ddBSMq4@SYaL42lbG+q#5MZ@'i,Ri%T
+
+4draH1Ge+3C13!!"eT`P%#QTPISrl#MJM@JRF(MjfBA3X19BY$bKGV4%p&VqRm)Y
+
+IMlFE91U,G#"ihZ4H-$4f#Ih5J4JZV%18KI)1$DY6kCDG(cD[13%d0ecPX)2Fb,+
+
+f)$f+XJ8GIe9!'mBG$Y,QDZFE[mAB"`)1i3@Y9l8`h96QM54pS(L@*kXZJ-VdPDa
+
+-i4fL8jCLp43ie5Tl4hf6f(epG!+*,i$jdYY3,1ZQ4rCpD6`k'cQm@B5dK)5+SR#
+
+9M#X5d@FB![J4T'k@eJRmblm[A4Q)DkbY9DRF6TK2XEB4$Z5dJ2GGl)i!8R#Y-&l
+
+D#Bb$A'$3#E-NkHR%)LNF5E@+4a'3!&a#IEY)HdN%iphEUKQ-YZrJaaBj93F2Ff,
+
+#"CfJ4ebqq'*4811`M8lf#k[Nh#TRKZr@Kbk#9lBEHM3bEPD3!*!!VeI%b&Gf*Jp
+
+ppJ6(RKLcL@,jMR,Hd(JL'lqEc"h)4leQpR"P5#Eqj8#dVUZf8N-dc)kZ#Vfdk`C
+
+*G41S[#rQ&'kq%4Am9%h80&fP%rX$8d!ZSl314@9lZ"a43kkDG6XGMHZ0)4V348T
+
+#9[qaR4#E2LVD8JI`J5k[eDCFAQhAPX+NjqrBM5mZm9b6[cFm5RkB(+S3eV'(['*
+
+B%h,%d6*"BNEIf"'UDp!0F$r"0G`9Pqq*3+N)[,("fM4L9%BV$3m3ep!Y!%RQKhl
+
+N01,#3G&1UEKC0@i*R&-pjN4%GZa81("4k(4bXKEJUL+HDb#'+HUk@MD)l0)#0I@
+
+K@qjDE+&$TUk&X*XL@DMGZX)MP8Jpb'DHKTaI@i0I(rH[0RRUX0KlS-bSi)V3(NN
+
+U65H+6TfEl06DEMdCb$J++ji)$i(+)l9YJ4bq,!q4p!+(8&4bB0"B9pEDK)&"&#+
+
+5Ppk+Yj9i&qN8RS'6)R@Q9VaNq*ENA5RHG&V%9k!aECISemM-CjU&Qr#FFiDdF[6
+
+Gi,54`'4!pA,dcJ%A,b6h'kp5pB4m(Hi,B$2[SJSp9%%i#IB@HGYX6)Xe44B9H&[
+
+d"5Q*!iAV6R`JPbfc-EheN!$eR(1#!CA"UF0$%MF5"""-aCN8#Y!P-(XMB&b*!T9
+
+Sii@Ei-4&8H1LTd*IeE"qq60[1q'5rChmdj3UJe83U'U8mA%,h[)fepeiIX@GV#!
+
+41,p-DS8d0ZUZ"YPS"CIPNCLAlH*,-MrD2(6qk6VIm#Aa(5jC%%EA`F3jpr5eqf%
+
+L6+Te#jha9QGM'kL4X[[Rh,q8FX1*GmhX*m(`kU1HGPHX+3EjCAG&3*GcI&'JYZ%
+
+D&[LTRc4SEc3phHpA`fY&D0hiYYPbhXBA"0FPQSj!B*CD,NZQ#q6eJqk[IGH$eUU
+
+rcUPN@PM+$mDl-%NhJdB$*,lmBB`JkGK)*MpFT'K1+i[NiV6@!k!8j+pA#**lf5f
+
+YSSdXD*RljL)FKZL9hN&eDKk'hp4+`b!brZfbGqpAPm&9C'fLkj!!C0&eqZ3UC)A
+
+05IpY9QAU'J35@3E5F3`qU#,V4q[QLfe9'r#eaeA1DpqR%Ci-[MDc(08mY'CVY9K
+
+mZJc(VFYp-aXk+k+$KcXH$G9NeXJGrlSFE'j1%&pl9!kf3deae,Rmm59i8)`mfGd
+
+'*1q'rYA(Yf(4MG`[!f4"CUkUR@!+K@`3H+hc"GX+@BMD$"F@5TpQ6el,[b0U9#h
+
+8MbZPZrEDpqSR6qYRLLLPhGda8ABF#US5U-L+K@5d-IGN)#[0!hAPR3HY4A%C-p#
+
+K-CV1!I#a5C*kbrEeE[51qZYlqAES0D"B*Y6L,@B'Vi3r!bQh6%FS*6ip9DN')#S
+
+jKrC`X$VS,9#T+TklYB`AhV"FI#4!`r##Zr(D%cldcb1C*-lafeYZ"M9DeaILJaD
+
+$J6,!f2E!T(lmZ6lqm%m@+V1H$ReQkjRNl5$"FTp[JJ'CRp@4l!b9132S!6KBN!!
+
+@jemR,)"!Q2mNUE-`"YZG+Q'jjCe5jLRb*![ZQ$a0244&D8CDpD-AkL-NKJIM,p0
+
++TE*ba@-MUP"KGiBe@0clL'(aM@@RQNcB-RiB`J6$aZ4ULKh(r-"`YR5rqUX1!X&
+
+6$IHUI%6YbD+NZfmhM(N-15pX6J5+#AH"&phB%m(`Kq+*dN%VmCI%$eb9JXKX'aB
+
+e%$bCIk$U+FhU$2!DAaB2#@A(1Ga#!D6bQL05R6j"&JNReLUA26(b64*h5j+BZAY
+
+"b&dlF"a,54ML4[E9mdhk8`4P3ZY`L@991cN"kA-6389E,EX6M[l(HBSLKGG0TF-
+
+%cY8D3e@E`eJ*A`h5DFB,4*F[DUHfhj%0G9SRdejP@4AZi@8K#)Rih318[q2hV'2
+
+X%L$im%Hj&qG-$%QAk5*GLB(a2%hG4EU)ja%CQ"+jk"h1NRZT[63P(N5CrR%mL!2
+
+*H*!!3bCLd1YHL`$!#9MJ#5CMjXb9+@LmpX`'+BDXF-b$l"8ZB'5$a%[@Ci1F[hC
+
+F$%N9KN6kN!!3%PN[bf51"9%N@9b(AbD$)KK81P[3Tci8jbi[dk)6%HhIpLIi4Ja
+
+rP5I*qUjPRL6YS$9%BDPXVX9cKiiia4q50[m`1(CP$khS6"h9i%h$XmPjY[PGqa%
+
+ma!l[3)E!i3+CL"X're0`CC9iB,VL#Ni"k@0SXr1Y,"r#08fUaM`%2BRPiJT%HTm
+
+QACcf"Kbf+0h99(p+T52%(2'0P4"[9Zqj4$RC51Z(5h6NC%Klb[`!`@U3!$rP&N9
+
+E`4%lH1bF5#f8'ZA*'F+$P'd2XPr$i9F&0SrD$mGDdm*Hl0ZYq&0pDiPj1CeHS+!
+
+SSdVK3XepkG)he)Z@N!"3HC*+(""b$B4SM*jM6d8MFY@-r#4[QVm`dPKAr![V*lF
+
+6L#*QRYSK&-B!P1TJq#ALEp6BDql&L6"-e*'`5)5C-+XQ`LK'KN5B0@jpMd($CB+
+
+2+#6#CN"h$8VG2@Zq8iHS%(A2ZNb)mTXAqEYZekA&"hecH18c*"m@CCiJlS6GJ'B
+
++kfLI[kY4GQR'GV$h-19%cYZpHB3$KaQ+++DLqa3k*1Ka!EdU%+8&6"T1&I&`YGJ
+
+QNY83iM)kQ,*l"0XYSm(-8)9m1R0qDXaN6Qc+-SE#9K3)"Uj!k##,&'A-MqBF[Ir
+
+3jlIJLQ3&N9R6$Zl3BiEV`510fHcCp0l-4aIG%+iLTR%TZ##Ae@$llbA6cGc#2j(
+
+@Ae"KiDZM"cKKbSV(CISXV,r0Um6c9[c+*%6"9kA+XU59*L3bYT!!['44$-(C"'f
+
+#XUUj`BI#53MP+`HQd43"la1+N@H*IL5A&IE+AEY%GB0`5m*DD2'bFL%+RP%b&U%
+
+!3J'ma)GL"ThT-Qc*J83*Qq5aEaCi4YAJCaK6+pfNdL`"4-cM&CI#J%mN[3&G4`A
+
+G6B,1&d8(`R)JciS0hL"!B#[KdF39kXemY)#Q@+b'Pci,9$(-61eff$C,dXJ(dRM
+
+Kbam@2LM($rrU8RDGBlF+!&Bm1)ELkQ8AUFSdSdfflIUFfbbbGB@GZ5qCQAY(4C2
+
+$KZ5KD9@"'[AZ(rE1LAXKQb,a$hqBhr@cpRDD"4C9)14RafdA*lThSh[LZ!rq3,N
+
+r*hRVPXiVhe3%(`'TL#h0eE(p*8f630+TKN20mlVq(3f`5P99BG6dIY40Kkc3Q[X
+
+!(L1`JXq%Bm%15l`XBGNV9+%EZf@bX!&#hTYYBN`!f`G1B#BZ8YhTDja9V"[-GLB
+
+XCZ9lGBMr+VU4I,Ga+Yc8,+D%h&3cPVGPaBh)[GPhHb0+8Sl&l0Pd1[CbfkF@'P@
+
+99I`L5"H9F)4[I0&-A[&mNT[IVK33Cm+#4!I4AAJQqLT)R'LV8T!!r0EQqSB-@iX
+
+N`"c8G"2qpB6-Fp[&dBJ6%PKfDLPi6@,@C*%cL#M%d1ClS2EEBDX)Uk2R%0QN['`
+
+[,[4fa"RC2L`E$X%#A!3%0"DhCV86JKNZG1%cDVUE9j,BTH54NhZJI)%-@DMTT5A
+
+Vd""%-ekJVdRcS#1J8c9+4EDJ[1+V52qDB@J1D8FTmPK1U$&`#b3"$#Tp1J4B0KY
+
+F3NBeQZ@MlL8qPbCCGKe)c0#iL2G50V!F9P#'8ZJ')a'8pBpG!Zh93DIrFMcTjm2
+
+&!-'(lMFS#E#Q#"MISi!8leJ"e5YF#a(MdGAK5R)ZcXc+fN#JiLT(i$Z'SJ`BH,V
+
+0IHGAd)aPdC!!)35p6m,rd[#e![I9&UT1-mF##1G%MeKT")l[rc125b3(eUZdf#[
+
+6DRJ"KB8ihRdYr,9Hf@bBfNCP#mDS#i@LPdDqfkQ6SEIXe[*qD*fffEM5V"GEpbS
+
+lk-4rZ+*bC(65lFK%LVi2J`4[AA-X+r@d@2!lL1+'6PbM#6ZX!'KXXK%K`jP$Z2d
+
+GV#[5%l%4FV$LLj*qL3@$P6J&!CFE%)q`jPpP16BdR)cNJl"L2G!)aq8ak5S*p(4
+
+mdDcZS(qaA2Ki'R"QB6*1Q&B-3G`I(b1lak0kXQJJ@3Q+2kRRdSc-&HQ60#fDTZ9
+
+K3dLZ$+!b"l$G3Vl)$K'm9D#(`aGPPQjr)p3)5$@0BeZ@R$q-)X1'3kAZ,"6JP(l
+
+XM1ea!(&'JDRRJe3mT!$-`(`9-8rAZpECp&X4G3ml0!qIZ6$+aRhA$PF-M'!2NLb
+
++!r9XQKdmf&+9(FffQEq5qZal$MU#+AZZUA0iLZiq[GeM'+EUCXJFAMbT3FC[U*Z
+
+N"b22mZIf88Ke`K&4D`qh%If'9m)RlR@i1i#+ZqhH"#McXQQ85)Gf[I0PZYmc"jP
+
+%-e1ca9h6blF0K"iRj[cTS-1UK*Z`m1a3GbG'Al&4-MLVC4M69l[NN!$i1F[h#pU
+
+pI2["E0YN`KJ#hmM[&K+NV+Z)@k29hCH4BLpDRTa*0(V(MA!iRJbq!(f2YZlN-)*
+
+aITNeNhE6d%SN6aS`kRZ@Aa(J`f,EIc6#bLjYF-(d[2%aX--6N!$LD,(Xjf!1e(1
+
+92ek0-f`NCV#((YhVcaArBFI$6b(CD!'(dmKf3jfP@dXIp#mTCPb+pfU0i9N&0d*
+
+q'6kX#K68f,2KH*RdprMh8K[f)SD*%h*fM"EKCE4r1fLd#rcVK!pdk`Fqd#2#FSN
+
+kEe+X)S#9,0E+9)+DV"5F`+K5a5"#%!8M%JZNLqF9IYfq5iYf39+10d80M(ICl")
+
+9Cm(k)KfLbl(q'-06,eCq&hf)8YMBI9H*`#5FXY!bBm"li6fqLS-2!$qJ"1,V9)N
+
+FHrE#d26f2@VEP@Q$P96h*-i*AJ54G2b@GAcQiT'T"dJ!i0UbVCdIfd*hIGYqjN6
+
+SYbFh5UPL8V+'Eeh'jkj`0PKKhZ"%KLR!PPP*Ne5*D@4&56+e9(jr4%@YI$L#&)A
+
+TLCDXBjGG#apANlM'5D$@+Fc0%PH*[!1@+(Dl9*'V8Ki[2i4M9FS0VpT!XG,Zeh6
+
+A6a3RFf)[$!Ifj8%4QcCF`3,9$hD#k%IUkp(U*KqeTCm#),[j'XYGM++XJ#-ZAE#
+
+eHP3Id1e$XUdVXAR"1%I&d)N6F"XLq()bKm5)0)+D(3[Z26H0USb'5D(fSf[$QdE
+
+63)k#YU1r3Yf8m$9`UQ!(L,#D*Sbb4FVBS`4,H5HRM#K2k'LlM2#NFl3B@BZ[C3-
+
+Th,1DHE#h-0`F6U+cIb+S4Xm#,i@dYaF'Q2f#IZbDMSV$[Em&bZERr@*MS@"Ncdd
+
+q#C2dB#fDe+*NpYabk(L&j4f3!*L+$FXN9!fT'rMbNZ"Nb"E**P68@U413Hm2&@#
+
+@'drCRDjKjK%,$Fb8AD&Y$NahA*J5+0*J5Xe20K[BaePJhVF1k#kk9,(qBMaTNCC
+
+cbJaBJ6T9Aa(IqGDqbC`8T4QYAD+qRP)E*2GH9PTR8aAfAEZG9@$*PR*i&FmGmKG
+
+iiD-2hhYQB`%LDLAGefQA,998P('jBVLDRXJ'53D#Dl-h2@G1iiK$GAR61QQ9iqr
+
+6bA3l6j59jLBr[%*iaD@c9DJ8EBBpia!XFZ3fNBl8AD82HdpDjAIikKq0JT1NG+V
+
+GBjk!Aa9J2p8lE($LrBG()h(PPer'b6Yl9qQMhYY&5QN`Gm-NErZ9(5MfZG'+30T
+
+3NhHi!al0mHF*,"aDA'rEC1rP86rFUipYCP09q3Y$X`M),PDNq!)A-#-AUGkNcBC
+
+fCPaDKV,XE,T,2*ZmNEF3cq`,3rpqFq'VeJA[H`Y2$S@2cL*AHlI`XM--M`pQ[R[
+
+'"*8)63pX!m,2+1hPUME,i1bUF9c9L,8VXHBhQ(hk[QYp8IYPT*AfX%c`E94SJ4X
+
+@p@*eTJ&E[4LPZ[L@Lp3Sj6#&+&&IT1@96BJZZHl4k#6ECT&rLk!2Rlf%mQ%!23%
+
+kE"06E@#pSZaN4R)pUihA*jMPUBfTPT8056UmjU'*Z'AX5jea3peRFeDa[AT[Z)L
+
+e,L!+Z%[k#JpUVbQ[qP!Z'ZcM6ZEZKIdHU4qH#FekVJZZMj!!e9,hX(834d'PkL-
+
+DlkM,pPD3!!(DFAlkhBe*U09ZNYY[aqaLYTl-d#6S,81"GE61BePe("kY@44+FkQ
+
+2eQcKDqi!A@+#[r$2Q%"'V--"VB[-PhZ4KF)5C*G"fea9d'U4$fd(Z9peMaQ1&9`
+
+MYfNirdjhHU%jMPMS-$jMRc'"IprRih8'dZD[pVPJNX((jXGh4AXiV8R5X@h3A@c
+
+dKl`f"TNcibaCKiIZ`M4A6A8j!'(GXCbL-!'KH$,L*9hClV')DA&'pC2c1"@M*#S
+
+8ZR823[$'&#4k"6Z%G(VM5l16rKfPEUKDQbk-Z14L'R*AN!"#2I*"-!Gq0lGB%qC
+
+q2#5%5!F8*3%QcBT%LH0I5PTh(5Y&)"1!d*`(mF*SF)YFLGP*NXj*dTh2ll$0RN3
+
+QN!$FHXS33BCA@f'1F8@,R56EZ+,lpTdRfI1IG5b$cKa@0-U"X&(b1KG,PED!!5P
+
+%SRAX`1$&(,*(U1+@!X4EQI5abT4G)Z8HC'pXVU#99T[,K6fRjRCj`1N%i+ZZ8#N
+
+MI-5)3HbAe#jd!DSp-e2'NE&q*qf6f+Nd$V2cJh1Il!DI5HCK)06hmDNiIm@1(Yb
+
+Xk"K*c%,`IARDmY@f2@RKfFjjllQce5iC*m*aeJJXr%2@b&'MB`m0JB!84j3Q&NG
+
+KGa@LF45eB9F@bF#)5Kj0!1Uccrbal&@P*)ccBBQ4j0cIA5%Z%MHmr`LeCV)$S19
+
+VKNp02ScNi-Kk+51'DcIJ&X0#GXiAEDjb`ZPM2NaKA&5bpPPmj!&b4eN&!jV0m2,
+
+[*1JjS2XXGkDL`HBX"H+G,0A(@j'i4P0PcJ+TJk-c33m#T[XX(+aehY[mG)5"pAc
+
+Bc"a41C*RI35(0d(0"-@2diCfp93mXRT(!deI-Z*%h5#pNVCiZ2BF")@3!'V-Z&c
+
++Fk@3!)eJEPJ-"4AE,E4#$HpF@Ya1Akk+5Pdcc1FRqQc'Kp)(TC%e8A`LmaZm6Ji
+
+Za4&LXKfYbDVP4NQK"1L`Qa+NNBTdTNp-iFXYIG09ArMPaDm,#[Ub%a0HSaCkbkN
+
+eY0)!2mm1Ud#UD#N8iQXR2NQf+mqD#KpCjI+9Z#BXeB$b['i*2K#BU,K"UP3"q(B
+
+#p%!IaZQJjR`4kJ5S[2NDj+QGYmDRF8Ghd5%GXEaqQ65JR4+6PEP9!AYqkL+cqX!
+
+*p@9"QU!%`-l`kS6G%'HKE`AKl"TpABRDfhfSJKlA6`VV(69C!6(PG&&FPH`bXpm
+
+LjJf-@X)ZTKh5!i#chDGRNTeVVlFYC$VmB3HhG'@k@fV4U"Z@T8F+RX5@(hRUVCB
+
+#hL#Mi(L9!M8D'R!!9+*Ald8*&H!5a3cMC&$J+L&(GKIfME#(Sp*!VlVU'1NE9Nj
+
+GDMbbH49DEBjHk6URJXFRYJlRm[J&2iCCbk#9*SG1m!@8S+pK9hBk,rQb8mpJJL&
+
+dLHj54+q[92q)[h,!!m0RP),S6CqV"$UqB80FMjQ*5PcVPepZTE)HhNE)RH%q2jY
+
++4!j%6(06V'Y$h4%[`)X81N+55M1mF3%d@Ukl8a2BLH6,Z*YZ02H9-Sd(+iS3IBb
+
+P859CSIM8EdV(4N8NFABRpE,kFI,XjNjA61q&eZbDXGV(3mJ&9!BUA!CKR4'#`&9
+
+A'%cCFR,M&MU8i,+SA#0(iB,ii&3NACZ6f5U+2E$S(C3R*YmdQh*@)qTC$'MC9Dc
+
+qF(34FUYL*HcSF$2-Q1U#V@4KD+0Sj$2G"*I-HE"#jQ@N5rR$N@q0mr5E21lL1$d
+
+0Nr9(L,Eq5'dBf4Q5!!SLHP&6TV!BLQX3C029FPd`Y)DU$&X6Vbf"@FVJfqc3`,*
+
+8HjS[8cq#a@G#fi9JVrV6IPZ(1)624XBHYdXlDdQ#HHKM[%ph2d!6XhdJCh&RJiS
+
+%l'm(R0m33blL8+$2MkTQ%kb"5&"cDD$0)9XfX9j)TE-rlUPDm!jBiA1p&I[R8[k
+
+EmSbIl@&ap5`8iNm+,4a@IJEH!UrT1fdXRMk9fmE09a6aai[N$LXa`q6db42lC,4
+
+a`Nh60m-%jcIVJC12rKmBN!!IjPHcjS2$+Cm0F%*1XhhheE!r"J5I3MLJXGh%TDq
+
+cKR@+LNeq10r*$pF$lF2GZA#lQ%%J(UEiNha%ISN'J1VVfAi!daCm`-8!ASbQDM'
+
+TaJH$feQLDXL50%+LJ,e!3V8M"PN(rf-Q6pFA,%[)LP,53BRUSi"S)IIZ`Y0"Q3N
+
+e0N9!T9[,Yc4#Nf*E+#bE&)8dG9*$4d-"48De@U6pLUcSQN96YQ)E3Q&N'&Ep4e*
+
+"qikl-ZdGpia'#*Y`S*ET#,8k+C9!)QBNNAIAUSAD*&`N)`pH1AXeV68YC#MR4Gk
+
+fUMB@iGb5)92JFBUkP4DX[PS%)4SR5AbAJkie"9hfYX8A)eT4@*VUCTB0XcbJ"GB
+
+5"Z5V`UQk*)q[Q"LbNQdh05!5V%ki1Q&2G@e(%C26$Y)eeN)@"T!!d+I9,kP-LL`
+
++#!%DNqXqC@JpD(XCM#ZZqDEc(`A2rGXCCkPhB%&0*#b@MZl"YYM5fSid3kYABAB
+
+!*i@GTik(C4e`l6b+(Pl1"VYkjf"EKlY+CFLSkJp`m3&c)D8C`c[@NJMr-X26Lk,
+
+55*kk0NXU-rL6II)33e!6Z8pHl6jBq3A)IG48!fB@3N+m[I"qq%fUcePB9,`Fk5X
+
+3jldkR5)'"9F2#R9b(iFmJj9)T'miSfi48Hf3!"*$jB!U)-%jMZ+f%-Fp#PjTeeh
+
+i6KcQDkr"UI5L-UBb1*[(MeUZLJI##q[J2`0SkIkUH$*DIh&-5h"$0SY&Y6)9d8"
+
+AhHC)raY#NUpV'jKL4L@8bT6Rk6C%4qdV&E(4GA5%k(Y,"@'"1RS!jB*6KK*%FN%
+
+P,SNM+@ZLC6+cL"i35mV(I!6*2@[i!m,LmQ3Ckb"68ViBqUBGGX&di&KlfpSNp6H
+
+V0D)'6kTqHG-5HB1Ul!q2@Q4,mVpfD0FN8K3bZ!9+hmAUf2JJh(eI*Dd$8QYF"eF
+
+BA)p8%mAiX6)NKipb6BSQ@k@#c`pR)AK,dLIbb,[HpZTqPqDS,YL06lK#F#Ff#VC
+
+mpIFmm,4YSD`*i@X2VT@)hV0'3CFl,F2&[@p8iG*#$'SFGDV5Nh3%Ueqj%#84"-Q
+
+QEJGSe'U"GcDQYH1NG!q9dbqlAQ@GlD54e-&amdAbZbP[p0lRQ"0IYElYZa+60M%
+
+&jELj0QU(VE!mA+pdi(!(rK0K'2V5!bl[FG1ENQhRRBp'q$PhVa9bPXlRmdGhGAX
+
+8NU*r#m[AhTdaX34,eqIA`amdPUPCA"aN+'iJVb49mCjcMHdlq+Xb$NHCAVVd+TV
+
+@F3#aj!m9k@[l#`M&2K83Z30#BZ6a9HA,84"3qEBIq@apDIcXb1`9TBJ$T2NZ6SP
+
+,-imUYpeR("'C,&@*M@1UqA4Qk#p'!+&[CbKY02(fNQ`,#*TX'DIq*$6,#bH)MZ2
+
+d*XXC0b@#H[V%64)PY(D5,RHC&1QbkISFM,SHi5-+N!#J86)B,qXdHPAX+PA,f04
+
+B8D(9a9SeM3FC)kI&(C-a&V'B-1L2HqP%Pc8%AeE$E0AlqUM@2R6F`X%h,&-R&X`
+
+%j#N"-rG2EiMBr2MBjSAR*C3[Am$Hie8U9U'15,DY"&`SV9X+K)3MLK2LkSLFB69
+
+p5Jqd$VPF(HbP5SeGNa-eCTa6KpCCSd#YE'**54G[+HKrq)X&-Y&0e"4DB&L#Gid
+
+15RApUfFEV[q9%,JHP,HpfFpQif,b!r!3Aie[N3B+lhX0,3LE*B5ld@KLmpY2i)1
+
+AYVY,jLjqZAdY%UG`[k(+r&9TIa0pfb0,rrZ+FrfRX'mic@i#fiKCB`*cD'%X&#I
+
+J*iiRm&2klRjDRciV3mpeRci$dXVLdc[[hb%IKhBMG)#5GI"4BB#iCJSGk!%B9Vh
+
+hVlramAiD'GHI)*q#AH+ha+I2SB(di[,PNKhfr3-9,mL4b*8BjbU,LUaR@T`Q'JA
+
++YHd)"T(LBUh!8!H-cjpA#[cV#E6kPe82mafXZZ,5IH&V`0Y&Ed846BXFrDEdipP
+
+a(U2R@lI8,hmaIfP!a-b0Z3L248j-'I`K*NC*iHa@,84STARCb(XXd4Hf(a5#8Tr
+
+,6S2Q8TmSBY6[iJU%1*%+VKCeC!Paek-XlDV*Ue*0(jC@fC8Sm1U+fbK1#XP#Nh3
+
+P%4R!&a&C%Vj66V(V3i"9QN@!Q@!ESS8eTbCV0phrUjpQ,UQ5,V#EldZk,&aC*rP
+
+2+F!+0qEHGZS9!``0(k)qq!MkS!02H!"pN!!0`+*mqBEk!'UI(rX&"pLFR5fXP3J
+
+Dc'6YM,kFRhBmbBl8A66c,TXq$m0q2)I[JI!eKN@4H'@$JRFad$Kflr!$*B9XI(f
+
+-NZ&ETI80"fC9Ud5422KSBf(Q`eqN-ZF)cGVQZ,a4f)Kkf6eMJYlUa'1%)f%SiGj
+
+VEDcNdP)dUQBUBqm[+UYkaY[MY$d8N[SS["b8#Q[bKM,292ZNiK4%LJ#-RCb3!0[
+
+5$Nh9ZfT'BBMpI+,fb$Fh+mGBR#F#K8P#iM90JKHfF+c"kia'#2Y!#Iq$D&IBhfG
+
+HZqB[-@-HFF'F[q1PdV'*%Q!Q$Ei2l@(*`4%eclD2'F"PX)`21a1Jp4l'FdCBS)e
+
+Se5@3!)KLVEm4(VlS[1i1I)%*)dc@@'qbUI8fd'T%iB(&[H%j)`4U`[%PIld[40C
+
+"PJS0pJcbR0I`IrJT*`9PAHDc1V`qe(e-Q[Yq`a@2Qcd"0DqDLr&-F$YdGDjJ9`&
+
+2S"jZcef2V@,MbRrJTI#$UQhFbKY`3V0G3$`U,)[fS!(MaYUG$"bi5FK`C%H%C,@
+
+ic(Ec0S"YACI5DTH42%J"M3Gl+KZQp2N0H*pSq&fEdcV'VQfK'T+%m5ddY6*hUrK
+
+E&'6+1hB-4d!-dIC&dGcfdZeHTI%k14Ak-)hXf20!&)$*l)lS$89(1TkM`m@l&(h
+
+3+(@qXPPiUrk0*aB"rMQHQjS$X#jh#VIUh8YrTI$&YjHiY'rZhRd3ZPIlV9-CU0J
+
+`Icd5jIMj"jJ6Bhhai8p66A$D6h1!6erb%ISTqS"0A3bHK-X-X2NcYYLAL-m`*k[
+
+C(ZVR['he&rJDP&aITQ$+cd'LACEMTFZT!c0`l[f1-`G,$F%**aXE,pJQTm)aek"
+
+(Y$Qir9pBJkS"!SS*P%!"3X22A@(e8$h*R+#YRhH@#PPT&@8!+j&X'+6KFF@*jR)
+
+K-#I-Z5"iJ(eBephHK1)*B)PJU)`SleL-PiRTk2B(h8(F8li%3KD8Da"0ecQRM*F
+
+fJaS5Z59*kZ'a[kDd&i8"jZ"+TrZU0&*lD[$39X&3Qa`FLA3!ZkZR$ZYKaBI*"V`
+
+K)KEp`-e#drGA11CLS98fjZLHAMd*%TZMG9j`f)#@J6d*Lqck&'L5%rje`NXrrj'
+
+AAL3TYcaS96TX2a`$9dHA@AH-(lEPVe6MeXBL+iTabk0V*l%"+['UXr0$HlE5PbM
+
+S8!MPShH`C'!V1*!!RKcSY*+1Pr1Ekc!04U%ka8U!hP9%LrL(0(2f2F',BGh6)M3
+
+U*kbEB$+HULU3!$F[i%[%aQ&-E0RhJ5$"Z@L&Y(!3+Qipc`+*)4f6V23N296l4A4
+
+E1+1U!1,Z-e['Afb3!-lF2r3l#6P,Tq+SJ[kFXp!8qQJ9cTNDBXBSVq#$cTrXq#h
+
+Y2dY`LN!*jd4bH@k!hKMEI6(dl%B"i4#4@cA25e,+!VEf+"hqC68`53`Q`e%DQ4I
+
+adV8R8p!DKfI6)IYFXk9VP,lkm"h2,33)+#'Id'd*G``PL$mm34&jCb9hJ&`$DTb
+
+$Mi%N[b3ickA6"TDPfq+X!9`3U!pLLmP%iD*G@3Q5UU6i5PjBZA&DMEJLc@G`S+I
+
+#)5Zd&McQfT99FiaE0i#biU3R3YaZ#Y,lYmJZ4TIaRfa*YRfekcrCrBR-i80F1@2
+
+FCqGV3Ih0bV@ScA%r5P#Gf(00F(491*FJe"ii[XK4D)j&00[,Rf4AA95`UdIBE3!
+
+p,d0YKUVH8%AZ$CBh5R#q3U'UHZ5!TdbhkqrYH2fG#JDdjjK[+4AfX9RF`f%)d$@
+
+@YHNb'[9U9He#'53YhVNS@L6dl$Q[D85Cj(l3"4%Z3fQPa2ZlG``Q[[`%d!&F"a9
+
+J"IGdc#340dpEC`)04rbdfM-YcNb4rRl@+Y`Y[9'jcGh+P4Kr[fFm,(rrRrfLmDa
+
+i+N`P%YJVm$d82)k%e),GT"r$RYmic3QFEJ@6@&%(!9m2ZeIXqDleZ,!MGiXQhl8
+
+%,SIfiY)5Tdq*%aN,9icp2#YPh(C)PI6R$QB,`@S(P8RXhE1-S*+KqYCl1mcrp1B
+
+UC42HjHJEc1$[hec5TRr$$#Y)+X!6`f8!M!b0-Y3frGpm!@!AfJYqRV-K"3-B8d3
+
+5DSADbpDGHh9[K2TLI6`r'PrV$c'HMVp6CTNq$&ael"d*GJPr565M#&V#aLF"h'K
+
+[QJ+dhe6`Yld(,4HJq#Y-!lNSf#QQ#BqT!)kkN!$Tqm9C'2SGH0IZ`1'C#$k#Nd,
+
+'QRRQ2Q1Y@h`a,02N5`Ea1(GZ``!h2ZfUBX5DRUIe@G3J3X[CG-PDj5j+e'mC![f
+
+qZ3dA3m)VZ+HUe[$*PmR8I*bU#)VPYbr&Tle*!5pK([)-XNREGP9DLS8#@6,em"2
+
+j8MBiLGXm1JTkLpK(Y9@,,1HUNYf,B49cY4#Z-U*'i5-m8#ZriS4jEJp'l%)D(Xi
+
+k3pYAUaN@#A1GR4R,6MDP"bU%`R+!!Fq`B3-8mP+NPc`[Yi(P9&(T+8lI0Y8S2X(
+
+k2abPkm@@kaJq'S($D4rm[c#E%0f6U#ZC0KmdF5cdHNT19fX'Zj(!UlKj69qbK26
+
+EPe9He$bSkrlZr(0CJ!r+SEK8!*T*LUcQ$EVP@L3j#N[U9I%JQ&FKiVYK`#V`)$-
+
+ZRXd2+KGRNHE3$+2SJ%a'6VqAk0$#Cjd&c9U"Ib&825)3H*cYZUdT914e4E0*&G'
+
+*q5Y!J)8fj$MmDRlb8'jja5&f&-a`RJD'X422kEhHG(@(RA+GU%l)+(hZN!!-Z2M
+
+&,C3ES+rYHhqj#ElkV6P5llVSFdSUTJ[3[T!!'Ul@k6"mbSPL190(-8e%YRE4+#B
+
+VT8cJA-)l#`B'ak!M+hP"N!!`lIAPDL`+MJX!RpFJ3f159)YC,p9C`#'UI3XVbhD
+
+GFN92[P%@$I1&mBdC-[+&l2%2SN-LpRhi!,5pb(ITI#Z1,LS&+DYVSY8FPkDGeRH
+
++[-1I8fUIh&pH'C!!fFf6he0H3PR!$jAJi($8lDP[3GC)eZIeC#SGC3R"Vj!!KJM
+
+`r*+Kc0C4'HY#VebH,E[CKP3[a'JF6e!@#X33%4K(,IGmIFBZ9T!!&kf-)Y3-TXG
+
+*''CGN!$E8A9Q5IhraPPkX!B`9)&BL9LC5Bd2$Ur"[N%h,Td0@54[M*`H@X0VeaP
+
+SHZk3!,&UqH22B8S[8`DpMFVEU-Gmd$QX@bj,+JSD5[Y!N@)q6rXZI4Ue5'X+32Q
+
+EqJ$cLPkLpEDdBhE%P'G#*"lU1$YN&(Ei-()hmE@PCcR1!ZYXf!aQ1qJ'mP0D%-I
+
+HhNM`h91mL@QApF1k#1#GVN)dl&#)2qMM`iDmDiN`"(&K6ViE9JrVp[1Q@RMLabf
+
+9I'hCXdc8mhcm`)8#((bmXm[Zf0ASL&k4ZLQ04F*VSi'eRajDmfa!$ND8lGcim1A
+
+cR*0jZEQ-J&rC'Il-RVf2-`Y-`J'CJjkhL$!lADCdaq!$414$9rJ4H""Z0qNd(I+
+
+U41P,4m(PPEJ!-6Gh8!'DN!#h4%-8*6[icS)U)bJB4,#mR%V3#ji#ZX36h$ZNL-2
+
+iHM3p`M!0Pek9QBP,U'5GM&LGI$Epk14Ri699HMG9$9+N4HN)CP&RjY$+Dp)q5eL
+
+R9EBL(119ba3'KYE(04ka+SNcG)3I!dUQ1$IPeU#6L,dp(&il02dFMq)&C0[+1m1
+
+Dd-@KQ6N#ib0#Mq(38#IplY$`QjD(TK@Pr2V5N!$5U9bD'C6DHmF'&H1,b45@Q1S
+
+E4-m"YlGF'p6L&bk24b--lV`hBA3%F*1b'A-*+Ym*q6j4Fk0-cR9fHUFemq$Hm*!
+
+!,Hq08N(!*"hZ6@A$kV8D6iV1cIi2jiC-YUIRC[,ThU!6+XUA)@m+[*1K2$+X#i8
+
+$RL@3!'*'&(UKF(iVF*!!U$9hq-Ghje6JC(MXLl[6R4e[d!GR"faR!V`YZU$HR)i
+
+c"66D2,mVSC0AdBLl(6G-%cU+RDC$GM*'IIJ(5JGK!P(,U)eVUA6qF(RH8cS2,Xp
+
+R3JG48Ph[AeqHLP29Rjd+8Y9ZcPGLj`1bAH5rdHh#[q$6(19Q0rk$E(FFiR$*ZV9
+
+FLRV+2&d$)Je'aVQXC&2@TabGVL+Nh-@CTqY8T'F"IbLRYciU*jZeBaM#+BcD*pF
+
+VF-V*)cJe(N'N9C%q`IV$I-9R2AZ*'JE%-fMI[-"-E@'N",0f*#8,Nqqbhl@@$U[
+
+c9+mQ*iU42XVA#28"D8l!Fc-#j["l`$6)4Ya(-@RL2a1BJ(d6(XpcGRM82+$D#Nd
+
+'%9Ie(@5jl2AN'rqPDJPBj4&UfXpNFi1FU%m[)0SjLE[c&-NldB*`VPeJ2jYJ0"-
+
+($k-5aZ114KK0JXc(,6RdEPkV[aqYSp`K$h4iK$AS"qd,M)BdX8(iK)qpX3hdaBS
+
+%)R'Y*f")+c'r&BmUhC`LMR'idK#2fI8HT)BF*VX%--(bFB*f+(R)G+1Ij9TN9P#
+
+JGQL'96$SUXm5JZXHS9J9-LKjhB+&kf*#e9ZM2V4,%-)*6FkHF&m9*#4N*ahN0cl
+
+$(rm0-rS"IHSh51Bh`lmEH!+'V0j[S+ShDRKq"iqY0r$$e"iQYK5rh6BVkQ@L`SB
+
+)M"3J3Ee"C%R-Sq+5[YJKS@YGl+2MA$,ME6%a+fhfIl0Gam6dmc+rSX)*RhiMK93
+
+8UQ*iefMh)YqTGcLILH`-cdP$D2"fA2(EdD,+1X)Z-h$p[ZXi)`PAPKHK+b`[3Xh
+
+L5T2`SDp3qYU4kHC)9J@(dC*C)S-fd%0UmI+8,iaJIJa$'F*@!VBXliK"[-E1&i@
+
++Ll53!%"c8B`1'[13!!6Rp*J-C+6X98CjX#U)d#N181%(Z[f`(K$K*$lYB)i%Be6
+
+6UVT"8*!!EV%T`4+*KD+!5PXi%j4J`@-fm3HZ5'j6p&bP(@r!b3*c0SG$brN(&GG
+
+i&EQ(#U(UqZ4#iHrd,A#a`JiEEZG&Ich"%UPSiS56`"(PKIJ"8U(+-Y6!,4jp3pd
+
+Xh0fIHl*eS'+MlZH0D+BA(HK99r!b2Hb%L3rV6%h[1UaNjLK4SRBEN5E"$Q9rVfX
+
+9DLB`Pl-,1M*5PI@mfJQqi#+q@"eI5VB'Z)mS*ikBcGAHbcMP$mT@qM#c"RJj"[S
+
+3VL+h`9p5`8Ij`6'500KA)8`R%YrF`j**6rUpb+)Y4SP(!)qRfIQF484bGFid+E4
+
+YB2@3!*a4Ma+5QIZk0Pb9!bDFG"e4Vk3b8pcjDhUh+r6UAHG*JR4e`d'(&KUf2KS
+
+J3c$Ue"8#J&LfD#l)*BlL@#ZN8)J+b$fEQeZ$4QbX"6A09MiRSS"GJYC'qa6%PFr
+
+!6'!8NjrVjU&)eP*h)KiP$-R'4S,pbGA0P,*URpdI-K5FS&SaH`U@0NIMqdTDm+M
+
+TQLYeHK`S6VVVU(KUa"fC(Y%Y3#(,UK@L5!eI3!Dk8P*dYN0"%Fr%3P`0-R8fr$l
+
+`3KjaNU[JAKS&Y95LZ&CPNmj0"r,""9Xe%"I(`QF&VlZ$Y[U)+@U"i[ZLc6cd+"@
+
+'&[F1!9jjIfImB'Xc)"DV0[lSFdf%'TjI26T(F0kPRq38e$ibe(cY'kF6[%eQPbC
+
+Lp62lUTJD),Xal40BQ8E$3Mkj0`Zf!im)0*d+"2!cEk3k0e)U!AHB(K@N%Kkr,+9
+
+iaA35#(pCbI`$qh%60Vd`J9KhGJqVb[GpMerh2DUVlq1(AiTYQCT3jjl[J+[PjUm
+
+Y(5&8k)Rm6TE1dbZT$8m-j9lj2T51A@),f@AI'MDApNPdHdITdqk,N!#IU3Per$0
+
+!14cVbFHchlP#-L82rI2ASpY,U-CieYq%Zb%S1Y@+mB2eSC%TVZ)j5h4iZ6-qM`8
+
+UNj!!YEALL![8!"S!5K3Ve3lGheSjV#F*qQ45dKVpkS2Q'JL4,m6Vj&jX"jc9Ie2
+
+FYAapLmchh`'C`ZpBdG[`M(FB,9bPZm3pIe5PN!#PbCTYJ[HUS&rZNFP2VAVdK8T
+
+X&eRD-[-qVAPjDH$NS4IC6cRd,$,!SFq4iE@(4T0BA*rNFp!fL,0m)BUL)m)ck@U
+
+GV)kL%'F3r1@pV3li4*A3A`JIYE3ADS,eS%#P(F4Qf4)V`P9[p(UeL$`-JYbZG00
+
+TpAAkl`'*c5+mX4Nd'`AqK4'0#)6a0hGKI1k*Fcc96'RhJh3"SU8@ik)F)PXU9"b
+
+ZI[+-AI#KXN@ddN5h(ZmE"SiLKm2V6EVCZIbZcS(GhX4BK,18l1JYh%h$#kJ0LN#
+
+6[J'Q9fLE'l5G[RG,jIA'NcAqaMd"a1,GT4dY2%NV#U#c!&C#ppBK93h#@fp6Sq)
+
+VlJ$4@Vf*S$d@'&r@,&VZ[2%Q5pp6NZPR90Hp!DaPrTlU#Pq)0h!%m5"R`#rQB2K
+
+CFa)D&eP%FTHULY`KTcD+m%5LYMJmlfTla)+L4$NN6lbE2MNYpVj&a%T9)YTek9a
+
+"l5-N8fSPQ45dU3[fKRhlp+KGb#b8Zh)BJ2T`K1'!)mjpb9K@CGU*pS)Sm@$,2VL
+
+ii3S%2@#Vk+6bm0'TcM"[,Z@F48l@(0!edVPdT%3JDCCc*BTf,H`2KU-69N#V$a)
+
+m*1GI%@kfjrrJQ2Ai-jh6daakhm!YXQ@LVjK!VijbGThbA-55-1N`rJ06P*GN`8K
+
+j`Z!HE#VmK1%%VYF%R@Bk%@A"#XCEh)X5XKM#'dAYZUNENC5JBaM#(kVUM6CGlia
+
+1I2$*ekBSN9-kqU%LkJ3+L3TMe3KdA&"*Fe$D6c*kM`'8(9RKBpDS!"kpRlP+bb!
+
++,Efj@-,Nc&T[U)mkHQC9B5)&P)NA"Pl`GdPG$"9QF-kM`kcHUMjG9e'c-@ZRp##
+
+E)dbbl8ZS`a$20P6l*I"ZhVLMfrfpZer#"m,2'5)aGr+fUq-6P[N2$0[rj29[j$T
+
+%(b)h(9m#F`Y[4e@L2X@"LI4C8*f+3M$iBDhUTNZIpd#NH59X$i668Qj+9j0@U@f
+
+#[RR""r1XMU&$%3,&Xl`!FR!F,Ij`p*&46ji(%9FGa`+MUS$HfETa-%Fa1$Z8!Z0
+
+6pfE)#(CK[U%e&F%)1LIF9bk5-r`HSJV,9"kMMKJP$lhXA[hM&RTPBb"LY+ZCXe%
+
+ma@#XTl!55KqqidjmM`8Q#dA)!N9b%4q8Tf%9YYpmL,SZi'LmJb'3!&E&lm[&`Rk
+
+E"C)IV`QrjFkK&UJrcXk!'*k`UQpfS8(K[U2,KSbrf%'kJa9Xc+Sq6qNl+c2Dil)
+
+eE)[5%aN9h[3J(XDh-Je-D49(,JmTJd,p["L4B)(Jaq$%i1a)e8D(RpI45"UGNR"
+
+83lSmkA#dBkQDA0CqmeTD*Hd+I88(E"AU!TS*b5"papr*&c[Jl&6RQic3'clEqk&
+
+N+$"AFI2Mj1X,0PAYF9EUUNEY1MlU3%h@-V6'1,pqbe@"Z%6q4'k%bUKkCGCN1HB
+
+cVp'FMHb!QV2CKU1+pj!!`MDC%`XA$'4K[kql$&c*HCj)M%G`!Pb%bVjmZ'e0M`R
+
+E-"e+FL2d)`,)%Qm$P)VKRm5Ak`YhK"Qj!4V&E+5bTG+eA*jkH#N2@H4HLX`l%Yk
+
+q(!KH)2!FiilX'S)L[1Kh-0mcCSA830j'P4cI"DF@&#LhZBKq$X2F*$$@2(JI$1G
+
+`qC4`ZJ0$D"[P,RS&`5fHHKqH64--(9NCe1`LmT!!MflK8@NS)@'"bU*lT9"RU*A
+
+adUdb',ALi4NHrSQ6eGH"KFqAXm%lRer$ml-RH#XUCXXR`Del1qc-hUQp'0Z'Pdi
+
+C"FUABS3)$L1M!JD5Zhch0T4#2)ckKEHpT80TG8D'eN(i2-UdBla!El`!iS"@I%1
+
+aL&HSq#,H3BlFRjY,&[A!K692kjSV+S(2LT!!G'qMb'H4qUXpf#RRD+NZA185SR9
+
+'*bi,kEQ8p2Ha0G-&HcST"HJkrD2V0+QqUpjIfXPFl-GJ5TC*UhAaQ+S'HjiFM-+
+
+ZFMbVYK,R*kVRYI"XLhK)iYSd%$8Ge25X32qk8FYbUU%%Kq*ME+L*#'4k,Yd3C9*
+
+',F!kPeq%ibJ)lcTr*D66+Up#!DF!N!$YGZLdMNHa1DdLI!Z0-X-*N!"kbNCU1Pd
+
+HA086+,T@QJ),L,68e5h&E)CJBK%k"a($32Qb6!SEX(A(,'AK%h!dlhSkC9%'8e(
+
+%9+,+lbehAR6apMda3@G+kZ,8cPE,Vfk+ATCi3d5P%RJTHTNASB)Yf0)S&1F2aid
+
+3@cmf3L4"q-[lN[G0aU#Lk5,"(aC81cU%KIlKKC-[aTrlFTr&)IbJQTVIX#fE&99
+
+VrS5@r)Zb*5B$p--82k#",#QhefLZRK!D,mqUj!1##(Xd6%9FA'NHHYZB0rF"e81
+
+NpY*391`1VSYbGp&kF6GQ6!pMXkFYSl@k@"%p@FB9+5HYp3[[20["3R(JeQAQfp9
+
+JMXqDQ(hAXfT&Q+kYh3IV"LJ29-pahr)E&(Qqa)ARhd,D4mYEcA4&kG)k1U!-4M'
+
+dYKq9CT8HSjB+U`A$8K#,MNDqNMd`B5+6r5#6lN0R-mfQ3VFCB8JR$LS6P6&#K1#
+
+QR*HDpPV%ZhpY5@9R$SV@HDeE6&P21qi'(HHKFli9rM-jFI0kIH2Q!,khc12%emB
+
+&-51Vi)d([Vl)Y[V`,cLI"'b4eRVC+[LGmRpAT3-kJebRe,ijd!&eVb1SCS4%jkq
+
+VH8ML&B6*hr9EU+,M(i$jJ!c$@'HF0pUY5&C8F2-SDAG43+0VLKD#l%eA`Mi+p40
+
+j!`j,DD5e,klkiH%+m&c83N!jLid!3LB8GU2a`X'`ifbT*CmeYFcT!kaAi9iAc#X
+
+c8@1ZRPA`66[$I4LqkFMZ!3!6hR-1I`24b1idH8-D[e8IDFHV-GBbSH0#hp,aS&&
+
+&&`50l@L3!,#2JNq2MD54iKf-6(4Af9jU[)0FaDdD54c`"Q1a(Yd#I&iUAFNUIN1
+
+0(+0DS28A1,G6Z8LT4T!!NGF`T2i8NiHc6D8!NbSJ3(1k50MMB0fEZZTqT+TmHl5
+
+Ip(rVlBRX(`,Y`r(jrhXi22AZB'Cm"C&Cc5D3!!%ea('l'ja"E1pTIeNdNfdKZ[E
+
+h*CC`1$(""q92apTbSpql-(`p,daMILp*lVib&`IQ#Jl-9AGJd",hFaIALe&'hXr
+
+NVPeB+%5*jh0D3a)a8%a+3V3F'0k!V-M'JFQ'6ZcCmA(")5Y[VScD8mrPiKjf9VZ
+
+BiAJQ%R-k@'a+-HT0F6Zm!9hPfJ"Q)2pk8eJ5&rAqGPApFM8d5l5UQM6V!HIS6Ha
+
+K$M6aVN!J!1Uc++"[HGlEP4$K"&9fY)l1VpFbA*V#)PJ!-+`(h6MJES"YHI(b&@T
+
+N[V$bKflN1HE$dUlm*$RX&+j-Ah8++Xf)6VTDVK@N!Kf9eSjUUEUB+ZDMmH`31mT
+
+la995DF"jEcr`JLc!"4TQE[I"HBdl5)T&dNFe4mFKI[X%[*29dqb#!)b2KKTCX$%
+
+H!m"ed`,XM9V-1mD'ETIdI&R"A8%%j),'LHBRprAlX$'D8!dmY5JD$Lq!@b5%T)M
+
+9HJP$c@XY9@c6VP+`!`il&&'%'PXXdR,B+RDSmA0c61bMjSS[-0AX-MJh'B#&p+"
+
+d5a!5BlcH3-#"mEJ2)%'fjCjcKMM!BY)`i+Ir,m0Jm!Y!-r+IKX(J&k#L84fAIr!
+
+,&RB"b!rqj"IdGJ&LaZrj"BQEpXJ[k1`#h*Q[rB)LjhUr!-8qRaN'#AVcRQ%325f
+
+2$B-2r3)KNKhj"8iEr-S[Q"KdcN1ri!Zl)"A!Hhl"&hD"9&f3!1BXr)+%[AlX&f#
+
+9([S&F@%qp3XQ2aJ'$RLB11GAIN'VDZa+ahl[&c$rpZ#iV2b#aU'$8BE)))i[bl8
+
+%fN[@R"AA`$a!jSpr`8iB%DK5Q(m%1B1"mC`$*44H6PJBchRZq(DZieJmMMJBm8`
+
+Q"VqJMcJmmM(3&K&YXfPM))T5E@X'm,V5Rb1&A9TrqZq0e`pPFe%D*Y6-d(rm![I
+
+(F6'faHL5FP4,G9pK[#[KfH$NI($53l8NSM3mAf3@%G'6lr&lh#&pl0(0!Cj9Am6
+
+5[j!!JpL4FXT"+,AE86XZp$"l#**$8PR5BP3%aNUb9S9!Z4-cFX'M&J)r8NKU"eM
+
+f,SE"Jm`#%rLZV0pZX)-Qq%bUC1m%4AJ03[f`h91T1--c+Ce8[+XV8#A6L#C)&Pk
+
+3!%b@II19PePRla!j*[1jN!#JR[Z6C'FZQDZ8EmVfU`A-Lm*6"(kT,RhA#9eQ[U)
+
+aY@,@TXA3Q@cB3a1Sc55@rKJf!+[dHqE"ll`$*!2H-`m3[*(Cq)PjJ0[`[R[`SAN
+
+39[$(jX&$l`"VT,c'Cpl""dl`PpE"!qF!PXh+1J$Z(fIcUk`"RF34"ZX!02[8QL-
+
+6eJ&ZX6UCabbXJfP*VZBBKA8!c+$%GX8S8i,#1i$XNAI`*Vb$!aGKR0BKQ56VY5q
+
+b"e5)`-*JaHPH1$iI!(V#EGd,FGiR&&4D-&![E,F&kY63NBal$2FdI0dSBJkLr"1
+
+QP11d3@rj$QQ$*FU[Jk[X+'9TJE4MA@(80b`69"L4%8DB$N1f1d5DiBmC[i2R2pP
+
+alT%Q+4QjLVi6Q%L6hT&LU19R[8d5S+FR$!@1UUPc!#6)fAkU+'D*V5f6"aaE$h,
+
+CB*!!#9L,GFNQ9&C1pmeL&9NT5JLb,cZ'hj@1qjbY+(Y"ZF4"T4&Dm@Rk[RP02$i
+
+ZbQZU6MJL%+k`"kcRBGYX1!eUZ1EM`PIYbLa+BX"m'M081jif9&a*G23!q2E,p(d
+
+m9f8KN!"kEb0EiXE!@8fpX`GSh(C4K9MDSl4eELJ&DN0qAlB6dHpVcrp8YLmL,Tp
+
+irXM9%0P["-$c&eAlrl(mTGUTUPD@rkaY0(DrPHfRUZVICA[N5ailrQZ+[*h+GYR
+
+Z8r@(M8aSj`f!9SaGD1FJpKZMd-iEiX")1@bq`)K@@!bre(G4[5U&)ka(*IJq(d8
+
+f593TR*'ifQ#pd$DY159GdTUj0@22S`E1+%hV'Rp&9"4#SLrH$%cm6M+UpM"#@)A
+
+a5bNa&jNjI`dG['U%-U4Tcj!!@1&r6Sci&)NYkKBY13f$R'N)b"JZ50f2,$5LLK9
+
+2!GYh3Lm8Q*!!+mE5E`jS+@fBR#,@ZE[aj-,$hP@cG@%HP`,Ae*@,l-8f%&3Rr![
+
+#rDKaB[[(aSR4LULjqbVrA88L1MHQN!!d0iR%"bSbQYK''B,QKSpi+#+0DrmE$BQ
+
+5KIq+HUH'V0[d11TY6[Y4Lk4h!0Z2855pekXmPT53!%"pST0QUU'G'Th3'q&Nd,r
+
+SrFqNP'ck,I+kGa*58cY+&,ZTA-!8H8LVfDMZFME2lDP4k,llITrSiaUNC-!E!YP
+
+H`ER"Z@IhIIP)C)F@-GYS!-eZ16HP)@kFJ*r"Bpe63qX'Ujqd`A2H49FTkXh!"4X
+
+G483NVj5JK8!FS-@dk3UaDH0AI1hL"3'G8KIQmU&d+5A40GddYG#jkALT%H9l,ia
+
+A&M`0eG4K&hG1,&lLG)0-a%Ed4UM'iKBZ)q-USq[&,rD&@V*"4LPqZK,5qS$U%@5
+
+$I54"e$,[eKAe'-E0h[H`i,iH,)*qChf`6Jp%`DiJ019&#AXC'`V0m&LK8ULYa(T
+
+pApdGa,X-bmp8[YP)1iA1G%Y313VD0V,q`cG!46Kr"rQkC#')%G2E+c21d(bYi-[
+
+9jfKMZIVe&[4#VC@B#AAbHRcP'8`K)9Lje(p,ZF'YGKER#4VYPiN93aqc@ELq,6&
+
+4Xle2h'X0K"2S!`V`&+)D$"T*I-eQJd6eb`A"#MIF8HNLj,)ND8`l8VV(9mQe,VK
+
+'Z-Z-Vk8K!YMJV+69pfqU(00&[QT[SrHIqFSUCAA(HH6b*N0&i43R6&iJ*e5SP5A
+
+PTmjJJ0MZ48YAMHCZ8lHP8I"S)R-3BH1khVP-d*1YjMZ(XS0J11)%0KZUVD0,BaM
+
+,,GB,GTI!9C4pC4QrL*@ca!R,(R',1cC%FE0B5`h-rZa1J48%eM&ZX3*CELTe$4&
+
+90)80mJe9f3bFSpcS@)'ff+&)YGF*pGmN(TE#D#DUpm)X5lPRlN!`F-#"YcbYlH2
+
+XF`Ar!2kil,T1&DiV$Ck(9kTlddZZK8q0[`!lm-D65-@HhlYdcCk)Pc9B@f"CF$Q
+
+6!5`d-N)Ar'*SIf4m83)FD"@"8l2lJ%bl+-F+3DhZ-YC'eA-9U#l+F()j6+Ab-ep
+
++4[@eU'R@JT((*[UaT6TYfL`lq)+cJKi%GYrCaEJUDTmpj('V",**qXJXbG'H96"
+
+HU$pcN!!"cCH5!pS)2DbiZiJqNCJX#5Rq2l3JcT!!R0LKM`j%%C*#%,[KDBF"Mch
+
+dl6jB1)+)mQVY!liEi!hHd)f55R2+CZG1iK[+NJYpK%X1fB-+e4m)HHf0cbTS9-A
+
+L9cCIP'QX9ACYm-JL4%+QBTPK-5U6'@KEU-riqa[Z[Q+9r['4PKCerPQkYp%`4(-
+
+3KGp*9bYITi2H58"#F,A16XCRCqV8k6d@al[$b(hFUa00#L!*c`rTL6Z'4VLZGHr
+
+)ijFYmJK$-[Y6KbD64JYb*"J4&KCpAAE25-9e"$2aMIL),YUFm!UhA%iqVI*%b+X
+
+$rRiZV"m!Gk##0Q+S%Q)0e#-pT"AEKd*h+"*UcA*CqGCh(HcbUcM)B$JNIl6lh94
+
+iK8[)qL%PmSqkkLVBNX%55qm2aiQM$TK%[5EJI!DNL)T'NVNpIGV#hpm*@LJHf1%
+
+2B`,G#MXl6!81J"f[I0!H`i*UKcQ(99PTjBL1KArVHkEm3V[(l5@6%kCa9LJJ[R!
+
+f!5,&ci8)TPiq@`-!Z"I+-+B8$r@VG)&fkJMLP,+eFD5lbk'Bd0'hAQ21m,%%*!0
+
+mUYa4A39aEGVB[TY3q9Id+&3ZmQX"SqaLqdUpGqTQpKPp8@#f-N%56r$2h[A`h"C
+
+0KJ+4hrjBHPh)4iS`13MI#(rNd-16V*KaS,(@4800kU"VBFh6N!$-4H$q"T3'[!%
+
+qIBR)4TGUI$@Pf'A+X-YmjM+HJ@r!lpZM(YNM[G"HcD5G#pZ#N!"2U!Xm9K8L3!3
+
+03[UlPe`QB!31YEYSHmrLjecA4A)*cT)KDr*3R6dl2N1j*0VeeN['8`@Q*$b!0DP
+
+6S16VEP"62PR)S"aEQ&%k8I4Km[-,PJ8X#%krQ$%5(1)'#Q'5C#3CSNqM(JVD1@P
+
+)@8bJ%k9SL-9ha)[885,&H@NeMG$3lE*3eQe)F1kHp6TpjqP$q'*qDJp[CC6LMcb
+
+#%4l!9r99fc`U&*ra8DcXpaHaQqc'NRdSGppah[L4Kq(ZZfde5Z!kZ66fq![m!E"
+
+T(h`"h5MF8EJYIEdT`&bLT,R%Z+@XYB9Cbl%+(Ja39*J(I5kb'2QFZ)%ipef*C!P
+
++i&*"(LYCSJ2XUQVPVdX[bl2H)4BM3eHAUNSa(DmpSpfUC%&p"TQk[2DSTB%ErHd
+
+$D4k@"Q#CL5PY1D!!5*dl(*T5LbVr1@!+E"fc"lKpE'0PVRha$a'%fpFNE$ccqXU
+
+*CImrjJEiBp6d5re,,Vq9,lr$$"``J@H,lQUpiIU1LX"39E5Mmj!!fNjVG$aQXAp
+
+Ek*1[%Ca#a*!!p-+R#IFZdmNV)KCeZ3fpDj!!"I0B2BIXh9S-P3dP0a'dTCTLq*d
+
+[1k,L3CAB#9BIfl,k"XjKTEU,*C3YX%`*P##CZ@jLHd"D`QB#Sdr"!5P"L*9E3iX
+
+bYMhJNeSN3apUDeJ03Ke%pq+XaXdT5B+MjTX#mK,0ZUH%4@rbYC12)`SMQrUiF-E
+
+kq&*dH4c1*iS(+lG,+FAX05JC"Mh9F3r!`X"8c8&$XAXc"3r,eGcL,KJI9ie6#Vm
+
+fDT+qh,HV6!i6ji4[&bkeb6K*9Q5$e3kZclJ##)&Il@K'+%-TM`T[AI0h'P'2FK*
+
+$+FQNSa)kE5#`XHS*#3*)MLCU%11QCNc1f*p(&,mPCYF4K"c9(J8)5dBTKR1Z1SS
+
+(",#m6M8aU5R0P2a,rB#V[rTBjZL@N!$QNQmSpL6UAJ1*SX$0&AYB!c'`8JEb-!3
+
+1*%#FMYV-U#S-%a&%f,&pAPqZlUFb&5PE0$`+#bkX,@%DEV-l[V"6XU09(0T9@bh
+
+c45Yd2iSBbK'qbaFQ2lR%Z'5!`48TJKaI%L45U5fBk,C*8,fl()ZEJdS9+MkqJdZ
+
+Y,'3eQP&$`(dZZd*e1*HG9cj6S-TVI9LL'4dI,J`U[SI3PiTe`h""R0cSjDKP`mG
+
+0#%*5k*+XjA5FBJq`Se5LX*fX(C@I0SBEDpk-aUb8*p*c9UU-AI%59QPQr5KTCP!
+
+22%%Ib@AKNHLUNIhPF3`(BNVA8`eI08'0F$L1Ij!!U*P'UB04#j3U%+DFH)TT2&d
+
+"#5Xp`qYf@*K1"5)G2-8NT5,-05h&UjM"Y6h)R*)0'q,'qJ'H@RhA'hRpb4A"mqV
+
+$N!$(%ALf[[(T&8-l9ih3CF0SDILlIMEDCq1rkLIfc"YZqRr$MrS5B3-"TdTAC,e
+
+5mPf#p+hX9@i+(mDaNH)A`HRf4e(CC'J#ZQP)r33A@h6"3)$8"Ue-kKBb-*Nr#+P
+
+A4V6U@CR"FE2-K9bGCK-dhBk`+KQ",Ue[1QKa'e9!i*5&MS[YQ8!(kra1hRpIbfT
+
+)-EaMimjTJddH"k`,9JH8(14*hD`LkBEmJGh9cCba%RQ%C1H3!"C0A)ihMBlMQQ!
+
+iN!$MJj%qK"aJ2QkA#r`,XQ)9FYJZr9KL8-@c%AUS5kPLS@IFbab93bJjNl9%[bS
+
+mZbJT1Vhm0AVLe%R`Q84iF2P'QF"J6p5+eJL$k'E5!c0+5lK(DH'p'B+j6)P@IX"
+
+#h0[8N@C!%!VJ[Rd#2qfL,Sbp8)`kQ&PUL$0XS9lV#eUV5'XbUK&592ea1TKG)"d
+
+8ji[VF%qZkR)A9%FGk@BGc1l8G2@'[[YjG#SeCES)NFpA8(&rfckABardlN'Z$k@
+
+FPc@+#cFJL10ci-emVHjLY15Tre0)ThbAbk-eq52&'%AFj66,eE5JB#@i*$MG(Aq
+
+dj'p0JBF&fZ[Kb'+I1J%kK5cX-LQIfCB[S5FQM4ZmdKd'h#jlSM!KF"2ZFYa4jhF
+
+#r!epQ0*qX"+#[ALYj!J'#lh1i5A8c0id`3GmMk%G`@Qfq+BJq%1K)6kKd#K#IIM
+
+YrmTc+T5p#[SGK#@I,CJUa*TCcRA)9ACk8P(F6Uka)dU8I8qC&leJ8rHM()EZSe0
+
+`iKjCF5)N`mpfXR(G))%FRi'8P`SGa'Qm#[#6)NEf9jIhEiXE1Gr29cmGII$TQ[@
+
+ff!!cT$L&TZS$(N$r0!YbaM9chhMcmclbI1!bF'NbhX(Iq)a5&I(-Y!Lf)&TD'IT
+
+3PGi4)(,'BYl2@%3f1Q&$S(##DLJ2E45r$ihfeI(2YPG48NHl3@eZ93Uh&JlBi*F
+
+NjpF!)rIJ+M*,1UpXBQqPZGbG@IXSeHAYFY)1)d5H)AK,%G-MdYJ9ecmi3efX0qr
+
+e5HINE+J'`TDZ@EM"0m&)qKB+rJKapcj82S#)!NfXj$163E2N1D*l[VQPadL99[r
+
+(YI1`j`VdC@H+TEHdNJbm$0Ra"qY9hM@0)ba&9D3,dJq,QQ`-Fk$9C$(HJL4!cFA
+
+"kj'Sk@$'b'L*&f),BQp%ek+e"mZ+#r9JL+L&3i0"*$EZJ$c%8ScN6'd#[8MU'%1
+
+RY"-qF)qE99h0JM3p[)N1%DhX5qd!,*jL!%,dJ9MG2UQFkjJU,iqK8F!AT1jDpZY
+
+NB8VAV[4H5pX24Z6KAh3VTBVYQEXAc9Yph&',9qB"h-6-JpK(9D5qrh$932`!5%M
+
+fl*Zl80ar$m--9rdJKY'Vh9P1F54Y((3TA`[p!0!Mc"d`8LLhFGP$"MIXUmTi,R5
+
+X!$RBT)PCQP0Uf)D(0ficMQeUD#N"CHKa#-V0F%%+pfje("4RANB,#-i9V4Ii&KK
+
+R6Se!IH5XhB`Gd,a`U"*)&mk2,Q`V6)MjYL)-a%LENi)G5&D)$P)qBe%pjB,CliB
+
+FbB+5YZ[`5V3c)-a`3NGm#Tc$8DkL$,pPD@a$92r`lhJG6U$MDi0Rp0&N)@Qj5M#
+
+i5LSTSLEh`A5qX!AAJeDP`,m`SiqbccXZqraLa"3XA8PH['h(F1S1qGXSS+A"Q#r
+
+KSeXH9rUj@cjNr"dDa*3fclhS))a[#8K9&e8KlKeJ40Dr4"cr1k#aSH#qZl33Z8U
+
+Tf!NIkRp(U[Bj-06jXebeT'qL,M$V'F'LSQjTel(JDLlC4M6Ne+q&N!$Lk4N1p'M
+
+#P6'Thm#HX8S0FET+cXLNC99m"qc@X%50B#GM1Zi&KqB5pmVDSARK-S$GLi9+V1,
+
+5UF-biC91hKEq8qDIXL8N#eU%Ii5VBqSIc+-4iX%&J1aDF-jT,UMYb2YVRHE+!8d
+
+$F*B)e@VakJL#JIlSqe'5CXbphYH!Xm*044c1JbQT&+48D6E&6A(eJXaQR,8V)LP
+
+d*+2!'U@3!*+(`R(f[2q%l5TaIFF+N!!NB2Bm+M4H(C`11PCAmEVcK&mBHRJ-$F6
+
+Z+3)HYMFa*lQfVlRQ3EN)(hbaG01P14Q%UBj*h)5eNiJ$YUI$D9&)K[$HI8Z+pT9
+
+N-,q3!1G9QeKblL'hV!4Thbd6hF30,Nrq3m,P(B3UCiUlC6$-r,*&K`VfZmA&`dh
+
+*6D%eiL+8pEBjEQ&CiYY[I$L%h)AM)XX5pY)KMhUlIkE+@k159f%8Ar,I5rLk0jM
+
+MFX!&P9&L-B"Q8L[*m[@J#m,Mbdpp&NlRj!q[QbPS9Pc#$DVe!YFXYG0QR9@MB2m
+
+0B5creS6)h'(mf0$rZ0%(KpH(Z"`Fh*DRjUV$N@cCK%`1B2k$m'Fh)-@ljEKkYX[
+
+S@H%dcPMQLfFKbQD-XZE8h&XIqrB@$)!mC"93Ebr+-RCRb@rZieY'9'06Fa!*#Ja
+
+2%`UFCaYjL)+Fl4crRkb##9RSiPYGPHk+4&R1QL(69&Xl[N!EJeUKVNISM@G3bm,
+
+NT)*!V!*BL%a`i8j"$r,mN[00PmEiFJj%!fk*lm8&M,+LUBVCBJ2CbB#q5A6[F$Z
+
+HrYeRa"RmRr+B*kVIQFNAdhU"4QVISDlqGlcPD6F#61Bf&I[6%h4Vh[XVr+jVjA-
+
+&Aie13&C4[h''iZYhYdCBH0G[+m`@(r6dAlPAEkQk2'm6,+i)rML(kiEV(XSfcS%
+
+ZZ1+(d4G9TB@BZPjmIEJreri8E@Li!lfALmrShSC%U9kR'#ZrPjFSR#l-TjbN5,I
+
+Z4HTcX*8CTiA*DhNmh"2mqQ!Hh3aDNK-IFIj9jm8T@2UMf)@S[c"R%VY6Q3cDXfp
+
+"PPhIZ-i+kXpJZVeKT52iN!$PKlZ@*C8X59`9([)JdY9X5(m-Hf'G24AMrL@269T
+
+9khALCX%5L1`JP6,,eqJce&TfhTBJMLj93KfICQ$F"6YLGq#AK+RacM385c'mBXI
+
+k,[G(`rGAIaS$BkFpUDTU5&9"$BLH![RP@$@A$"6ma,kVRcj%eaB8`kD"M2hj"iK
+
+-q"A14ZDLb33Z)L[m-ij(`IK1JeXeE$LJ!CK'IVp-SkUUi"@pTbl"KLXNcB@k,+E
+
+0'hDed4%Y8[[b(!aDV*3,XiD21R"K&(C6UC*$1rBQZXjqV8#6LYGP9(RRDm88f-)
+
+-KLf%d,`CY5Qc`cb6DPQ9rIFJqXJ6a%#C5,d41kJf'8Eqe)M*Y93D`G4,TP'&2+k
+
+C@Ph15KI#R9MB`Gh&b[C-I,LSi80!qXX$d"NIARjSAmS,i#p0S80KFceHik+dNUN
+
+S&BSUE,PHNT3$24b%rRDe`,p`lBjLN!$6IiK"5XhEj[a5c!0kaeTq)CQPMFZ3!1M
+
+hV(D,E5,4'&!ZdNVU*pX+,iT-+FBrBK+kMak'j(-pP"[IMd[c3JY@"'NN1M+#b#6
+
+G`9dm93Z9QL28QYLIa#JGXcC!%8fV1,q&qQQfcla(TKRCSFA+Ipqe&E[d)@dC$Le
+
++NEQ'(Ul!1"@fX4I2bHJc8DYXEMY1,9"`D`B)TCV9BPa6NX3#mPiX'qpQJJB3ZU0
+
+[mUcLH[Sk3FlKBa*B&-%e"&(&)`Q)@#AZ95YTF%e-JmG+UI@#i(4`"BVPG0#3!0h
+
+34p(Md##3!'mV,UY8p&Zld!dR4`B4Mbkqc'D2Hd+jMNB0G'e5RSQ1S-B*ak%Y"1e
+
+c5[V%MTJGklDTfI8+'6VT1X3FP0GafjSE"e0C8i*NK@J*@RPaUq`VKCr99E[U9b`
+
+0iZ`Y4k[)XrkY65`HBVp3Lj0*)AF@!jP5LGCfNk)L-J%-KqaAHQ"AFNa,6J2I4VF
+
+Lc-a0"JVq)$Q9SdHTXdV-,UfR0,LIYPFqTpr[485IL$bMZjEIJ+a$30N[!E1QkS*
+
+KGjD%i"[fV)L"qG%+5G52$JN,l`c!HY5)L(M')cZ@5SPSjp6X05Rer+5Bi`1[e-E
+
+C3MZA9XV&@-1Y"FIfBlGf3l@8f+Ph,f1REIEcB@#E,*aAUP[[V[DBIYjQ3YCV[PL
+
+HllRIBi2dYKf`4UkU0iIhS0Q0UiM8E2Aci&J#+c2JXX1QH6T2l[jLJiCFND%l`RV
+
+kkD#!jaS9@dpN@J8+2T2HLf5)'%@G$'$bb[IU`0YTkSfTrUedfX+f3am$[bf-Ym*
+
+9Q'!&d[N+dXfdN5V!dBhVC95KAd6KqcpBY10'q*)0#'Kf$'TVMjVCVe-4!+dZS4c
+
+&d8X&DqESTGU&LR&lL`,qa9K3jXe*-aM#&K50pKDPE!rSJ9Sf-9f9FPhek9Shl'#
+
+!!N@(-eei"IZ&,d!GSrh6C%JELV1!@#Ipji6pK5S,9P*"b'Xa$arfmVRq'1NA[64
+
+fXe`6jSmU3fSP#1jhaZ&(8IP'Z$-'Q)BrZ'T$X1mE,QdZL30$@-F`'KNeHmFa1++
+
+CPUkhH&*,,ZTC"crXpSV!B+6Edl*hEf&R",10c#($d@k,M!TYEJaacAYV1%*-&5l
+
+5Z`lFY68UKd[J,r8'#m&8MZ`9R"'AqFThT%(aIA16$R9Hk*Ce%TaTJ#4#4V@#mce
+
+*DY#'kT@,Le#L8#e`B8GAp)T1lb[fjcC+LZRm*KJ"T[f9iac0mL()(aNhbNIBd8X
+
+Zhl#dN32"&rmS34K094pB'h@54+T6CCDUiIE!S[mMeJSY'GbV`r"N62lB2Y$'`&c
+
+YLHY!j61)QRR[X-iViUZNS&F&PVBqm+JL#b1mL8q89jje9,bI89G(mVBMmS,-F%@
+
+T&iPb!aSc"M[JcbS%pJ,hATm@lE%9L%eSLR&6hr6G#Ldp&f&i[*qYfcGRV!ADYd6
+
+QrCACr0dZ@X[h0RBi*5VK,V$I-)6*DlTd$+kR1,Z`56MQlbQ1#*(VdNLpG!G@EkY
+
+T$MXC'P-[YNq!iKc130%4T%k!`4UIJUi'$#THJKraNUH0r43p22MiH(+U!U'RdFD
+
+0-6$SXM"'CqLeQ2![A03r"8&RqXlLN!$'%"A[mD!`HmhmBY(h-5[c94c`$,TSVE9
+
+N#UC3Z5LQ8NaYV4UD3K6DUL'LHr6-X8lE%)MSh#dl"i[cDT4a)E!hGJcjrKhCaKR
+
+4qCjl"6m!N!#P(3iqP(YBmmT![GJ"X+Plf3VAUL2KaBPGVmT0I'0,,Gp!rH0$#k"
+
+V!eK)*`eZ6jPBjmkZea80T8#M9h4T*@H[&XLjcMiD&P[RGJQ$4N)MPGZYK,I%3Lk
+
+J)Ya5XQHd`N##ej&Mdc1G-4S4TB1L&YbJcC@Vj#LeNrLmf&S8ZQl)0$,i'-bRY%X
+
+b[!"mhEFm5J6'k2BpH*%Q0@+Zhcd1`3D3!29m[AjJ!%+IUP'SHUTYf`mlNcf0V"&
+
+UBphqBA"mc"cXrk39d[ce1L'-6#-+8P&qF#e!I$YM*jk`4R,p"[4TU[YJG+j&e0P
+
+*KjBRpAhbf(&M'Gl*Q+TM'8NU`%B)ZKa'&G#)1-4r-Yql-&*%H,@U6Sp6hCBYKk%
+
+K""c!'[li4+c!dDTUC9U@(5`[l*p`iRMIVS5rmS8X8#Cd+2&H&XRlaZ(ZkS0JcEc
+
+aUcIj`rK*Rr9cjl,"DP5TCiPPXL@B-fB2+!pZa!NL+drGKJLVG`%V!6KZj`d2eVl
+
+Y10aeH[!!Gh154fi"GN1eUEK1+&UikeSVJ`LZ!"F%P#S9D*5DE1A0`[Yra-HPKRl
+
+$`Xhe@6"LXcG'cqSU6q`Hi3h1ml8UI,f%rJmHhVFR$m0''draFpi`0`M2DKTcU6f
+
+pj#fq**[dJ6m9T#,2)@hJhGCcV"JVRIe3'IZlZ(CANSa8IrN@L&r'5SL(Kqm)a-d
+
+YPX4ama5dMdCq(3Xp2PGTR*jP38r#Hm!B0maY+fT4MUe8'HL@QZFi-ATEjk'q`lA
+
+clV#0N!#C(CVXF[DmFD2I@A+GACmh"k0FQGIj9kFGm[l`9Z-Y2#D2q8`fkTEK4C0
+
++0TFlK+iaUGmrDc'Bi`[$SY9&d%M*C[AH88eDK3c%%II!le()bB3LBI!Bp!*"QX+
+
+"'D61[%L"mk(p5(UlX$TFcUCqUP`k41bMSd9VTB%YqLdFXk(l8`T5PqETfmVA8"-
+
+&B*%'`E)I0H1i*dGC`&cPqSAZYpTSHaLa,pf55EdN,)irkSp1IN#,,2A(TSSK5VB
+
+JJQ8rS-[XkN-0+Fi+GYSI(iE+dmX%,jSGSPC`Xdf)kpjGf3KDp3,rJV)pLTeYr)r
+
+B@BcEb5jmF24b-eqL-8!li#QNQf--Q-2JmQ`#DR$#[h$k2R*jeN[1jMN[lJMTVeG
+
+bL"'k"G1U8RREpBm0)1XPU`$aHcFTi2RHHrPlqEBYNqQ12mJF9(C3Vd3#J&p*AFB
+
+mJDi6,fMHAKZ5qamEYGq%mhb`K+d*P"S%e*R%3)aG3D@`rE2R3"iM69mHBX[e`lR
+
+U(j4kb[+@31EQX"6"eR'&[BR$rp4`%3iQ%dQReme+S'b,ZerQ*+h*lafkML`FSQf
+
+K5I-N-jB#4A5Qb*iK&0+L[jc0YX)pI5C8eKRQ)l4)L3ZViD`$L$SB0f'he1FL1S9
+
+HGbKQ93c,@+$2UHDk$,*j@q8il#F@&GX4mf-!X-LLE6Mc3qp*JAYB#+*V)9X)m%U
+
+Zeir2!*%f-jCPK6Veb5`&ZVXbTDU&cP5JTPV0T"cXE881M%qYR%[0Ca"Lk'bF-@e
+
+Y,Di[6-Ebp1CS*-%S8,HS1dYj'J*(A2[rIEV-!V'LCL[4D,E$a&NcNX+$`SB![)!
+
+mbm5G%LpZLk104&RCVJKm!bq9FXCp2C!!mK"8L#A8A`,E$Q9Q%'4S-h*5A0Q-l)b
+
+1"@G33+8lE%r'E4f1RkD&aJBImp8b+cdrl(0Yb-h2a$G(S@jJ,3hIJ,0aGRab2MU
+
+"34$0[C'%$M+mk,@VK,LYSNC,[q'#-Rf9FP4CIMJFNe&Q6IY4ll1ZfV!3$#Gj&IV
+
+Y,[cHQdB%98)A"H[*p"0C"mlj,Mi-qCEM$r0hZ+La-Yk*hjaZ!`iG2"YSQ990Ypk
+
+VB`TSVX'jY*'UcM8i`&L!U8S3K1DKLC'QJY8,8Ql)J!AC9ZDTDXp@&"8@G*ADeAf
+
+)hfJG-+S%T@FE1aU"df0e9+MJ6"Nq(9#,LZ,FX*!!lU9&XVU&*M*N8TFU(dcZ!"[
+
+IMaCUT+HS@X!,jjK#d'3d1D8SeeeL8c&MqB,#h9$M-"Z'+K#R6#jZ)1VkqKA'KTf
+
+XX,3e$j[,@A32di'"eY#,+KG4d6k0N4jD'kqK`maj33efU24,L56VF%e'*LqGX!M
+
+lXL+h8M$0jIM2,F4EY*RA$BDfkCkIZUP*Mj`1,NGa5"&e)iBla1m+P`YUD,%L36D
+
+j8J%D'L$4-E6PbCDLER"J-BE5"@fA6GP)H-"%%05Up(UUK[*CGHmGNT@FG9)5Y9+
+
+HHl5pI(I`XXL*46M#RD0fj#,,JB58LMMec48d!TFMG!pbDL@B`3J,hR)9FM3BM%"
+
+GJimjYe&"pdbXMKSb$)*)Va@1"-3"ZPA#VTaF'pM+NiIh[1PZK)jj*PCNQLN1TIC
+
+#a0PC&S@`C8RUBFUFM'qQa8`T$(jbpTJDmLK[V1+jGS`V&!&3EK)V44`8T$mD+aN
+
+Pq@5NX'q1U1%H3,G`d*R[,bGFQl1PRPMBZ0SFILj9Y,f!%[KdSU9qDTJ&cjSemQa
+
+di0qAJI-XpimM`a$1hH6DXZDV#)MQ-#HqcM0[6R(fiQ6"EC4mamB[9MDZA`k00@,
+
+qA)dK@MX85&9[4Y50K4a1pdbMME!1JlP4-@2LeAV,#B5$,)eQY%hD4EpBPr"1V'C
+
+4bfhm%%`$VFSK0kQFbd`HS1a14C+5+iPQ&b)6,&iVdieRCpL#YlJ#`hAQh3ZAfQQ
+
+pLU'3!&02i)'Vm8*'Q#Nl1-28)abEqC0!j"SGY2m`'EpdGLS'!,[X&MqqJ-VZfPA
+
+8XSZ#mfS@)AV[CRUf31!LmS,VNb2'LUU-F+Nk-SAp'2Q#-1N)ZU3S+S'VU*IXqX`
+
+XSQI98d"PZm5eB%Q`@a43dEaY*RqDdhUJh,2J[DZ0FFJ$Z1riG5(deiRc%SIN#L6
+
+29#BaE`C2F#M8TU3jc86'f+54!j1SVK)N4RilVV&V,@Y%0Z[-ba%+f*a-*qQDN!#
+
+,QX&mDI&mFcR09H65CQMKK&S0BTB))FB%lppJ'dE&dkkc5Nmk5GaI3S9pY$"0Sh)
+
+Z++-SJP2R)H5+9G5E9&(%Zd1,**!!HAcTBYmhaFUim*'$RD3X5e'2KZ1Sl4NaqI4
+
+-*!5AHJ*q(@@hBM"5BDIca$+%"Q5IR6V&5R)a4*R[jTB!C&,C+Z!"LBbX$&Z5-N-
+
+ZI!5DK3R+M3&ZTRD4`qcbSXTG58G9,iRbRqUj%)h6@LMDK@$,hlY"L4&Q$bq[ZGi
+
+m"N&V'NB0&rTCX`4K)Gk)+$C*'"2BjbUei)3eaT+LfeF5+&Y)AY(G26ra&IN)cLb
+
+FL8D8BNm5mIUVq#UJQ[Ei3J&9R*JZ#8GfL1LD$*,pG"FfAa0C$-BJNrP1q0IU)Nl
+
+E"qS-EGS&q'S""T*,BFA1@#2m,8I'%ch%'38F*8AFP'+L-H-eme6Um,,46$9[&9F
+
+'3"+dU*NMHbYmNjmFJNbA%0RFieme$90IF)@*05b8hT!!FB@He'I0[rqXlddiqa`
+
+[N!!DM(FSp1CDIL#DFb)3fTdpa2IT6[Q6ijY)-jDQFMHbq6EhYY%U+p$b#`4DRLX
+
+A%3$25)YS1Xmbd8*Vb9!6Q4"Q40`IA1QHXeIp)-29BX56,Uf0lBKfPC+e*!`E@!P
+
+3TYB983HC6Q4$%QiUIHd86#8!8Y[&k1CUif[@*[NCLfUMNp*3lpk$M0FT)QF$MH(
+
+A#(UMRT&m8(9l3H6@DL,3kP-`e9UVf))aQSfXX5'-)MGXA$M"(&qQNUd39GG4@DM
+
+V9'R1,#-EErU%RC(P&,j$b5"SEdKB"`AI#X9@i*[8r,8HZYU,iXHK%RFIe,%$aU#
+
+KmYh0XfB'RX'+KYf8,3hFqleY%k$k1A4rY'Q,40F@)N$S8qB2amQbV4qj,XVH*T5
+
+fS[ChU!Ld4p41MQM8dh(helCd0-kLZX9f@Qed+%FPHZ4e2J-9H#h[kTT9q"09*cE
+
+41986A9`@J9CN1dT'-I+@0a$'BUUK&M9X`"cENU)'GNKV+38@&N5HUADU%C5Q!$1
+
+A@'`S,jaM$iid)M%i,#NrDbk-@9B[[DciKbaAh14EK$lB"&D(fYl*f[6D@K8lEp&
+
+!10Dfr*JGNFE2-!(Q&6#kqpQD2TMk4(6#pARTZl)iKl495PCYi1PAG0G*QYNk5R$
+
+#8l8HJUcb"Z52&403j9UaBf&-GD932C!!a!lRKBb"JjLE([EQammpR1P6@adGp@H
+
+qJ)Z!UM"'EEE`AQ!$iJX$8LkKp'a$(ZlIbH+ZG4LNmcq2p[&ND6%-NedGr4cTTTT
+
+PYM'af$ZcqQR[e*eBZT&8B5ZSLBY&&4IKl9Xk56[&"Z0BrfJM31qXhSl'+IAbh[9
+
+`K@qEa0"kB*,&)FMai4-i2RVlkdh4@b!dU6Ap1haa11#-!Q(rr4B`"Q*(eYQ1p40
+
+2e@-R+T!!D1#[$N&$[ADR61pj(G!6r,JIJiR4%S-aN!!$qeLq"f4hA2GePZ+qS&#
+
+$&qmYI*8X'3$"qTI)+H5LmRUH,K`rDKh1)MjU!ape9KF@kfRf@NU$Hal+K'9SMMf
+
+KPV`D"E'N9&!rY1p"Dc1(Y'R$c"%NcXGep[5fDKp-''p&&CNB-YBEBQ0"Q5cRlk@
+
+DeY5SXNkEBYHp(V-(EGYPpIMSpCZ+f+qhm)NA%J@dlRj!dT3ZR`@%[Q4,aD(VEEa
+
+PGlAD)#Gj&632lkScJ[d0Y&I`E5m-"d!KSYrJXZmAKYUJUVB#6Y-EK(brHM@!8A2
+
+YZkfrHa2KXPK0pmhJcEQMJdq%JEiY@%fYT0aXAmfNHAie``"%k*K5lV`ZIaQ[fYp
+
+PIX)&iDYf4'%eVG!U@q`MM`BXf4X``+hqqF*C5ElEP%4XH42XkD+3!&i*9&rH3JP
+
+CZ[EeGQ1M63QqFhUQ(PiTJV&iiaiHUjR"*8b*Y22#d284I(Fdr-K&cFA,R"D@3dc
+
+QI$QUZ2KbhTM9MIfj6LcmD(AE6T[BMG8lE!(qLcIlp%fEB0,$qhKicY+pikLa@mD
+
+h12b'YK[FjYY`JD&3q%+EXp-fke"F*j!!i3ppC$NJ2d+1-Rc[4RRRm)XVHcJZm5`
+
+q8qATD@U((q#YBfJZNH)'Y42P"$aCNpdRDdEE+T!!!KHL6MJZJ!+cBJ0`ZiQDcm,
+
+kcqBcaBBAGk%r#c[+9-*(++8h!A+*aAe25*lTp-qIMdkH'H02pMI`Dm$-5-ddiiN
+
+kMj))5YIiqX+fim+k2VR!TF'rP&%chUGABpRr@4#Gf(Td$+K5E6QmY5YSVil$j,%
+
+lB!lBZ`RrJSrcUmcqZX[X[lEYqe)0$CCI9SK$l3aX+V!(KhD)lUpEG"q[[qGH[mP
+
+D0Gi146ccrAcVTV%c4e@X2VY'hl['-GbKL!+U+dG1[R9b+C!!T[jVBAk(R9X+Aeq
+
+A&A2`J!6AEl"BpSR*RLYId0M'4"3CE@3m@AZTbX6KI0c('0NZ!-H*3(',Xd+CT0*
+
+85a#Y-X[RjFjd!@m)`H"#ZNkT8mE*,`f[(@rL+&cc5IGU,mpd41[U#cQ65F,1'9J
+
+$EaVf!*HHkkN&8)6E(+!d'hGCC36C6,Pmr[aXJ$`*Nar`12Nd1',1MjkGM)(8qBS
+
+2QML0U!i"i`rF$#p1ZKF6eaQ&JX*cSfdUK3YB`MD"5P%CdTeV[)bS4M5b%l)LX#m
+
+`@+dPFijB)2GM-G9)cF1arG30E"fiE%UDrp+01jZ5a'R11H"kk'i9[[51"bcK18c
+
+"!YZ2$"h&TE+m8)TS@26`&hZG%!X'2p,"#Bbf"5FUAU5QBdT@I$6LG#L#1jcU$'$
+
+DJHJ1GQmN*rhcLRd9,"[jSNE(A2&%#YdGqUi$5liGcDK9Fa%I9LJACUl@j+5A0d"
+
+)ZkB*dPL1PD%liQZ-YdECNMN%,LGNN!$L+be36N`lIDjFJ)$X18!B%K'LIHX*3Q)
+
+ASY3aURD"3!rNKUr&TX2K#4!(I+`LQapYHYaljCq#+5ljjqqEdk2Z-MhiCVj#)YN
+
+DeMUa&94qB!JTCY#T8Z55EbJqFIkh&jeM&br"NDBL1M-B+Q9arZ0M,`jH`(#[1!f
+
+FpX&kLR[2PeJ`ZA-p,cr,C8)m4H&GMHZR#1)E'eTpRQmNF6NGAGp`eeQLTX&YbGp
+
+R5JHi#jjIeeN&-ih&8ZLmVB2%m`ah+Lk$jaQA38VR$6I5,U!M8bebbM[i3cF!VKL
+
+Mk#Cjb*`PSa"XL`$Da-RH!ddZ#TC`4J8aG05,%LZrB+KMaE!5RSRAee+*"ADl*S1
+
+6PDLM89D81(Ud9dclHRJC+I,-0U`40"cN9$Q&B5B#m!P+Y"pIEUi4R8@VE"$*F@H
+
+jQ&LqSmJ54AZ03H@@c9V@HIJ@mQVAjcl`'*LXDr4kZ@`A,Sk26bHMNh0(q+R#jj4
+
+2r3dTQ&I*B9F+80ffk-iFd%P%CICppIIJE$VNJ*kRZd)BC@l*PKU#H3br%H''C5K
+
+)fe!EeqVLMTSjk,fQJZI69lX)S9ElUHQ00(4(k*iaNiL[-3QHSPc1Bb9EMbDAVJ#
+
+K1&4*1e#R+AAK"$QJfL5MZX(ZFDk"eK0Gm(!9XNfd#+VfVD8D@FN[irLdNPkkcN9
+
+U40GTX'+e1Sq51TG5dpB)SEFcr*0EJXLkq,XGJ8E12M'jhZ#q)(BV$(YXMD)2BD9
+
+LpU@83f#%DQfACaCh3D(N'Vj9JNdM%N-[$p,rr*hC#"(I[lLPh!XMNYp9[d$%JE,
+
+)fF*-SD0HT1YcAk)#2b"BlUqRd@b4*LZ4),1bDmd3FQmJiE6E2aQ2cNE(Vr(11B-
+
+L+pRKr&R+6E&,jf8F*KVY46DJ!MGe3$MHhm81Q2q3!%2!kGM8Ml)C0@Ac05*FlQ$
+
+0+[0HiLaJ,BAjcNSkd4b@ppi`c+i5p)003bQqF!fhJeBE`56qF*`,q`aDR[)%P@,
+
+m`USD88G)qV`J['A4(cFae`@"[AXhjS@TT*@0(Ga(hD*cJp2cjmHM&r#9eUYb'PF
+
+lZ90''#K@8UiIrBX&A'68k!9F*(p0Cm#FF@VYI#H4AAX$cfJQTZk(pNF6Y"9PBE+
+
+T,P$ISKddkLVJD"GGLj,,Tl'+q)AUhXDAb&aMGI4mTlJ4UmL%+E`4(FLk2)Vb(mj
+
+f#d4FXQKDe+ImG!6IqX-03Mq1#@ame532MPBSFXc(+e6U5IS91UAi40AL!JJA(d@
+
+DdPJ11U9!3iafU`)IKP359dUl"N%9BUM66+A-)GB,qLIh#eNPi@VqCVmBrH%Y%Dr
+
+l`C9cT$D0Xd1mlZH(N!$)$c`*@#ICd-meDLf9!J%+YHqqd4Tb#8V!JTbJ@*h,eLl
+
+#")%(*N@UH!1(NT+"4Z$CmHPV6#4FY3PL1$PR@MGmGcIRV@difZrYM*P0iZ2k-fB
+
+U,ZF5U*Rp[Qd"$*IBJYI11j2c#kc"A15-Uc9!Md*GJkMaCZ'*CYVJP2X5XXLeZJi
+
+cG!Z658&i@03Z(H[G[Y9&56k[V"FT9jSm`@+i"*Z)p,0Kl$5[6@8e6EB@!Lc-%p1
+
+G420TI(Zh09ZjRF8DqR#[hB&c(b+-d$1NiEAE!XiK,j!!220dbdQHHk)d0q$he'1
+
+bm'$82Y-MD5maSqUK`'rZ3d!iK4mFYb5QQ@ChhP31$eD-E(PqUITlBY@LqQ8$K#*
+
+jM'8GCRKAm4iG04X8U!Y`M3KaqZaP[iBXS`)q2`'[RPl1L&caCfdVDDJbm&5[Rk0
+
+8$%6(J,XeZ2)U*!LD&6Rc8ITXaRV8X8S"4!m'r!S#8'Q@Fa@Sa)DIUPEq,ZQ!!S"
+
+k!QSM!H#!G9@$(EK0H1(+E4QhpN*dl`"BC)+rm-q4k(lKT$piKH36L#83[@Pmd)c
+
+Hq'&P9TM&C1r!Ih2PNhV$9IkXUKa+lchmblpjVrJh4p(r4X,Kd`IEEiqIcGpJSIl
+
+k*Bpr)j!!0+H(c*Ia4UMp10eX1Q5l-&r`V&VN20je(Y(IIHITXpb#[`f3!,qKqZr
+
+pPl"kVTZ`mL#FF2J"Fk$XDX+YLeQ[e+5T2Amc#%lbpj2lpdQU#%EYcjUNZ6fILlm
+
+ZUL+ScHZ2Lr6&AIVN0pJ+(lf%!821%KN&H`jU"SLDiA9e+I)eqHp)`@AiiZ!ZYpX
+
+pB'84d3C+AB2KI@F4IVJXCU'R*L%ErHm1bHFMq1S$b,h)FD%p4H0#))MM3V)*G)r
+
+S"[eb4'-&kr5T6Y%Qi9l-R(FNljmc,'$%ZLJI(m%r5iir(,M9!#%1*lX"EJMSNJ-
+
+%8"U++BZibUppp%%R)a`TZ0(j'dNdY(XE[YBq&04hR8Cf1ZJUIam$NF#c#KX*10l
+
+rEVq,US-[q1r&I,VYa)a"R*BR4lD),9H")`i[crSA+,I5lp[dj2L#IbV#'[5%hm5
+
+rKrqI!K`(%2CIl"6lBb4aTQC"dF6"4!p!9@TrckJ+qrbp,V'Jr0kImSL!'"i(@!@
+
+59V3V"GYAaXa"q04q4bZ%*icIfi4Pe2aPMcpG`j%!bF%1)NeB-S0BYT)9"q&[V)d
+
+U%([hqIXA1c`LSIrk(3C3`"V59m9+"1JLIaGl2Pr!r-*YqJJh+6NQ0QRmmMXMB3a
+
+"@"5&'+Z,IJi0FPZC3D8`EZE*mR9%"lbdI#AeiFL$Uq1QC0AJD@D'Z8A6M)If3k@
+
+4Ap0I5V9rBheqkqHNHqQ,JI55NXk+&JZ@*+AD`Em2iII#CJ4!HVY%&SI2ZiBH+S3
+
+X-%E"-F!)DGB(lm+hGf!Ni+#YeM!1("K!I#b3!,Y"#mQPE2TlhfQ%`F$SKFd6$4+
+
+VZ!&`DDhLKVU&-8R3N!$pUiNfFU!YIZeQaLfCZ9AFE,+I$-KrXPm9SIjLK#-![Z3
+
+I&[VNZ1qi9A4&8%lb"r[%a@qhF@4JM*qI%eK,hXCjQkeL1F2E1hmj(F'4J--m*K!
+
+2L9"&'H#1C'!1m&kU#"X#[V')M#(r6U@-'CLhEJE'l)!(cYRK$jEB!+Aj-0NY(VA
+
+K3lRpYC6qJk$mj!1+XamkI!TYT5&H5kjJ'K4ab#Nq2"pM#pQ9j@qZFBBL3CZR*VK
+
+KIZS[`Ujl3&hh($+l$'kLIK+KckCjLhJIF4MKSeZ98CHCD468jCXbeR1mDX6Qa!Y
+
+)R5*lC+6!prhm!q!9@Z%L4+q415F9)h10a$l%eBQC2eEJrcijJ5QLmS$X%)GR-E&
+
+15[(PD[`D9cJ&TkST*JCN9--I`l-N+-B2GVjPRG-BK')k-5e6q5(jUG1@-`6AQC)
+
+Ki`6aVC%!+E[8hV1U+Qm3kS**@2c+dbXaPT!!c[Kk0FXdE8bK`%GB+*H[9X9F!rl
+
+UPUbQ1M)JCVrkMFfh'LD)06A-6G&1A!CG6e&qqFi4!%GXK-!b(l+1JjSb@K5Uj`P
+
+2q9ZrF)6"A#YA%JXRGCjANNd+'L!VLkS)C$h#FbL+'5d)BAklM*3URF1!a*CZiq'
+
+DA8L5k(`GH,*kLf6-)A4pm[9Xm1NAd64#'1)lQ'+e%2jM%8F+R-(64B3!k4Ca!rd
+
+cR#%FR5m$R"mVmj'#K0aU'f9T9Q-(&ASkLkLCU!EkEbb'[pheN3!MFN1aa5Uh0N#
+
+FRj9l*UJCI4!TRi3DH&Ffr9e"Z9NC),bUj34(#U4H2l#[9L%M'9ZfIQJ!X8E8p1"
+
+E&C(&&hiHC4K4L$NEa+C-Mc5*C$49m8QpkR`EIGS4KG6qeb[0fN60--b6M@D6-3c
+
+0m+EBlDY+()+%)`B#BcRh6ie)icQe1@kMX-9c$*M'j6k1$-5m2VNhUee-LcaRYPN
+
+b6AKr@de3IF6260Za"B'bG0ifbbS[V!2X($Mf2re+RBm`A-ELj-B&hk`iqAG22+[
+
+Yp&9[iC(P0f*J6Mhq$8eS``6G-RKCLEDE+(bU1CKF[E'$b2TIGM0McZJE'IUAd-Q
+
+e8bl`,fcNURpT"bQQAjFH-PCceSAkSjF"rF&ll&amBND12X5%F(bSmHG@,H9@i*M
+
+GFj@G!FEqXBr%jPL#QlSX9pJZDA"Ek0R5i!k!E`-'llYSer[1eqJLijeU5HRI4#C
+
+'$,a)%je!NfPLFh'Xp1hAM#a&2Z@M1BdJk12dVU,X(i#UJD@-IEVfN`%'q`K#8L!
+
+VKX"l`b(Zf"!j3I3-Yc6+F@h+H)#%'JP)TT!!(5I#L0%Z5SYkEdiq$*!!8idUq+,
+
+rC5A##U,-f&!9#KVGbJM[V&!*M%U*Sf6SYaTR"'!C-db@%`0RD%k-F$8`V0)qiE`
+
+kdfG%3CqI+XJd$J'"SEN"'PTc)e8J,jeRPY8NBa)AS[Z0,Il4h+%C!QXiCdMAX)T
+
+5QiDCi4iC5!"rZk'Cb-J"EYS!85*ACqGcrG!d'@0)aMcU!iJSG"5eV6GNBj(ek5C
+
+CR`kq#mNm-N$rBR*mXilT%b#1lQE&(0m0L)kE4[l9KGmql5`C)9M+8mdNKCTf`AT
+
+,JcZEhU,$$qd[Y`&##X3F2S8JaNE`$J(GTpk(Ce-3i+,prAC!U&dprK-`X1"*eF6
+
+I,V44b452qBAhD1F4@V1N#LJ16Vc8VhF`cIqi'MY#I#1F%RBZ0kmf4&ChD33J(6N
+
+LS&V5`%AmaB@+h3K4+hXcC1'`-M+rGG'r6AKq281`GJd0Lc'rfeaie)V#e"e[+"$
+
+kp#kQ!NFaYHB(4N)G3-d25(RAZ)IYH[2&ID2%f%1Y9M3jaI+4RBA,"pD+DTkpIc(
+
+''-bR4r)[Y$LDEB)YdB0%6E6@lp-UM(i#B``HG`49`cp$QcY$KH63[RXE)3R@4e8
+
+rM&10,(48'Ei1ppY1cV5"iPD-cH5FhjBlM6'i2+P&l+DKVG-Vb"65IhBl2C(2)`B
+
+CV*bP(6CdlSZ$LZKj5!aA1pD5pZ&&(%X)b6cmV96MqE6-`(40k)&I!$C,[d0V1F9
+
+5QYGVX4Z2j+1Ne3K$$@ch'aR[*"KYfFi`4LaQMK#*eE%-TmTq!b!+e+TAaSGib0G
+
+Hrr*'IUZ#2lk4H42$+jN*Q%(mNX"F%,9*kA$p+Qlle@jqSeh5CiM4EER4r@)6NmC
+
+c'G0EhBb4K"V5*a%pej1L4(H!ii-6q1Y+SEpi*Gm8-16&F(AXT0UbbGdk0'2K%1(
+
+JFZli[Np1aJL#KKS#K5(2EBb!8TbKB!`3a%Z`8jFG(Pr&JXF'%L'RGf-B(MP`Z(h
+
+#@124+mEX(rTGaa3#'1Q2!+&--d5PPT1BTVVI!--145d`5p",qPP5p5q(C@4JXI1
+
+iJ$r#p"+NCFBJ&CS["Q*+m@p5iL-(4R8fY'pC3rY'`md3@"B9CH(AXG+aJJ[rYFK
+
++J4M,1-G9p#!$8k3@!,$epPr&lGJ#YN$T!iKPh-jRb,+HcmbGVljpK##D9%SB3V(
+
+X))$(!5)jq'%GaKK$PZIaejG+$!I$`!$+6Me-%3l*)bGpE-,5,G)NqX*0r30r#L8
+
+p)`R9G0rfBZ4[T4dQHTmf4'((+F*IPimiRT!!kINQ,j!!4Edj`Nh44Q+%beY56Z,
+
+)Je9eZZ2,Bl)PX%R44EPXq%R(d)K$UN5h-2UUXZa`,Rk+("mFffA)I'a#f'BK3Ba
+
+[dT,eH3"+)aB+Br[q9,`pXP$eA&4*KM+Lc(e(-5@-%N[iZ!YpT#!cpFeYbG+ER1*
+
+kbALjEkm!R[C*Cmc$I4a45"#R+EIK'Yb!p-I8N[$SMXrj5%+%lHYe6'&BUVHR![l
+
+8!0NDeN(!226H4J3LB(pBL8crPqR04,p1@S3@Y&,BFi3K0r9`-plAk'NJ4T-if,G
+
+N@Yf4#eS#*BqEa-FJ8Q3PAC*$G!fG%+rq%)!HBh"rZND$ISaEK$Mc'0-&,Hj2"XK
+
+(#+E`p@jdNMTpYf6"!,Q@3H6"QP-d1Yrq*2NdFU#H2XeK*EG%QH@f#&H"+0`PZMq
+
+5ZQ-*(5SIrjE&0PP5Ypi@8#XQfBGFrdqac3M#PQCC8Yj'd+CCG-%5r6VT-!*"R`1
+
+YhLrNY#``-Ni5TZ+[ff-H(iBaK4KS*0E,1L+Kkb'1I9`9p#YVM%+PV+VP)@A-Q%1
+
+dViLZS%Y+Q*8T'dXd`EiJQJ-FJ`J%2$Dd1%339AU)Q`+9dK"a%rZ#jC%#MhN%3(9
+
+P$Q[EZEc6*PRr`+X+1qX"mF2R5R6N`(&iQ'!#XUr(Z0-@Q-i[`1bYc33jU"#JVSC
+
+AU&Iq'$CJ,#%6ppA(P+D0X%jRk0V!RPj4LRFCiKfEm+f(D+R(Z1&3@'DJNX%BE4,
+
+"!UiKpYp')NB5,Xa4`-D64%Z#*lNKY'T2NL!1)`cKMQp15c3MP%PZeLPL0-NZ8*V
+
+32L-%MXr)3)+)#26pKGN5,BkQ+D6$hUKil,L-+3$L2*lMh1RMJ%!)h['[R+1aKiS
+
+Jc6+X[$,,EF$RHjBXQeif9ca5bb-4!'B&P#+T,hE%i9b+Tdp@mdmE0B)3Z#[p%$(
+
+*$32K*19a'5+2rT0KM%KBNi!Tmb6"i1P*(SK)jGUZh@@m!XL$R*HDB3)9U,*!-e4
+
+4-D6,Chl5L)--Bik#EYL@1r-Ej0V8"$YD[*%!Y6&LF"YcKSPmX9'MNF3C[SdP[!5
+
+8h50J[$'&T-V((j!!#Dp`L9!0SIce&C%GIZ&)M%3FP!9Te%C6'@bJY94[Q+rk'K4
+
+Za)(m)RhL$CGNhQL9T,55Z4QG0V#-UR,m`*8F@DLai@q`Y6VU0$D,bRR%l++GZGU
+
+2&69U"#%Hp'P!,jYXFZpBU4#c8drcp+F"-$6($'jNVKj+,KGB!ZY"Ze,JAh#b2m*
+
+#hA%GNdNLm%1Vq%J5JD[6rkJG(P'i43qr2JPT30GD`35ZSYMrhGYrVG!F3dJU20)
+
+e'5&fj6$3"$3k3GY9Eh)NSD$JQb1@S4(h0CT9i'S+(0X"R@cNJ2$Z@lFcFlH'Eb6
+
+"!',S9mNKrfp0af-0ERi'9MHY+-EX!PF&chhRXee"9jTh)`GhqHZVNJd!3F`BY!)
+
+aZYXl*3P$lrFAj'31)`-U-p9N$NqFkG48rl"VSZF,VS("R%M&P4q4Yq3[f!iM"@F
+
+P1m3"eYH+k+r&U$,i+!SjXJ$BmZ5@*mK$9+'lJ[iDi2Y"iRf2dI-HjZB22!!M"FC
+
++'R8*N!#!iRNSN!"V+B"K6YNM4K*L'PqIrUb(bH2K"RVAEU2XF26"9[R$T5RMp%,
+
+#1i(G1-&YIm(hL`G9-R#V2`2L'S1)f!i"bEL5d4IYb[($UhL1TSPU22iINUQ[,2S
+
+rC5Y,"Mh'k-*a0CVq@hr-#!04jZR9b64kM(0c1mj,A-`[Z`2((N,eNBA--D+-A-H
+
+&)"bG)I6%LaL"k00)XYkFT+[)-FNlV2[p&!abM-%Cl3HBcQJ-d2hMKSJj48FESdM
+
+B*MTDQ(26YSh35!&IT1ZqNLVIM[$cE"ULkDj6Vq0NVZ[@frp1S62Ld'@h&#X)U'Q
+
+3!+"Hi5$[JZElID#h-BScRkR(F2&FC`mFH#*02fK'(+(3A)9C)8l+4X[4@rirZjC
+
+bcPLh"8f*(`afj%(1(`ff40'MXCcT#%qaXqEjcT%"&SF4J*68B-m28paK0`[AmdI
+
+kID2-2Qfqi(SNG%H%l+[R"cFcP0Q)3QV`k`A)UPhNkc9-X*PM48fYpIjqMM682Rj
+
+i(3SLH0"*cfb1"f4Sr5A0Hj*FNGhjr[4b6MU@d[[+6rP,pqYILS-bI1lJ"e[-063
+
+k,8qL0f--d[Mpq*DRZ'&i9P&JIMeHV5"9HZ#DMkANf!+*F2GE'USK)k2!R$1%81N
+
+l-ckZc"jcU&[,-UbFSE[,Vi2EjpN(NKQ`FPd5-GFYr)Y1EG'V5+hJk&6,BQcK%QE
+
+X`k0cCER)Gc[dkFm#J#-*l[cM3@HCM&Qd@&mH`d3PcY)BqR!j4KiFVc5)!YSp`VB
+
+FBdF#qc("e4q@D@4J'3VEEq6rA@$1'Gj,Ff$RDN*q`&Bm`T!!QPq`&8p3jm(4SIM
+
+aDcc+[cN*)`&5V3"JZ-9R8KIIhr8d3RRA#%12`6HaYG)MldU2LHMC0F@EDE+LS,U
+
+1I`'!h@L%4b-+[,*X1Z[jjXSTFh3ZQki5m+q3!1mM"S)PLe#6!RCE1,-JCEm$9$N
+
+iEZ@+8++A!cj'8B*IXVj4BE#MQZ1Fiih)iJ-$$NQAF4`EQ-CA,mckrTJFqXV9+`B
+
+cM3VP'ddbXY#lQ@F`HJA4@,j949#6KU"bXM94ma&YfSL"BrjKZ@$TCBj+SI9+dki
+
+iEJEVE!ib%JCq*br,(KFJlIV,LTCMRJ0FGdFF*BkkiZUcHG)91",44jHr*H0e9Ym
+
+VXr(-h*M"2f(k(B[)NkB"R6Ljkh@'i*qCrk&dGJ4"M$qDiZFIN!!'+)aS6e2G0Sa
+
+U[1MEQVFJfIQ+'a'BX!5*[D)LqpC2'#%3`0P5X1d+%&(6c+1[q6&YmXk5'-c[FF+
+
+--05KP2lC-(V!3FS,VfPpeD)j$R$ErU"iLdQ5UqB@jK6P8ph+2rYZ$iA9#)'YQe0
+
+-K`&0c06TSKpl%#SCF8!RI+3N5U&,mUK[P4MFa3bIHd"E(%&)X2eT0jCGRj!!kF`
+
+NhTMPM[0RGXR)Je@EYM-LakbMZ3&k(%BULf$LpILL6QFN3H-@(SS`Gj!!0+BQ[c&
+
+Ea@X0li6!iGZ!d8K!8V5`ifE$l4SbH4JE"JES4NUm$YVR9)b20##-,88hL1Xm2k"
+
+E,1D('&Jr`02LJ*''e[HdP3-MIi)H$ChU0VcEI`5M(BY)ia9$,E(-C`e@Apf`R&G
+
+AV[K*&FKbK#-+1DT5)eA)klH!FrA-,3f1r3hmcDraXmFB3YdC$%PEHGCX3A,6GhV
+
+*RC8GhR5q3K$4Ar2)MMPBE&QLNilr4NQAR50%N!$YQekM%B9UZ$+r`XUq@F&CiIb
+
+F,2`MBpeB3XUq-0CPpbiFN!"B2GJi*E[mK-2aEb[dTaYENL+jGc2eJh0iS,*STlb
+
+`bB`8@$6If#5VjGYS8T(IP"c"#!H5KYAqM868U@@HHG0&,6EU,GeZc6$3heT$l@q
+
+UL%B!c[A[(5L`[PPfE,@Tb9PjFb@,9cFl-b%C"NB'21a[MNhT8XLbk@h"9pa-p`6
+
+"RaBRIEj')`)Rqm4(QrRcYb2B,&N+RDFchBB'2k$G(PP3K'@%QCd0"4,CjF8)SD4
+
+8j*b[r`['cYK!MLfV($'r492`&2@J!*lL$mF!ir!I2J-Bemm9B*a&UDGi)'-@@Cr
+
+5J0I"M'11@1bEdG,q4LkQa1eEipVB`Hej2-6Fkf"&0XKi$!fPUCKADiljY(al,#(
+
+Yd+QEUE9,Z#BiCXHlbPrfdI[DYA$r05Fc%Z#M*PT0V*cTaZ[BhXi3$9M%'NkT1%B
+
+BUKJ+h,8'0l&@B,!mI-LC0NCK)QU8kBm+bKE*BG8%hpUX'IbX`S1['k-!%L`dK4B
+
+DVJPQPHJVMcA"Yk-jHlqrUSXCDHMhb)`HS[6D4[F%h`DG1@lhj`Qp-330rq&1CQ`
+
+M`-Hh+X`,h)if6)F9bCHDrZ[c-**30CBk%+""f4I-&@3*3'ZC6K%qFV"+)`#+)@H
+
+jiBMPh4`X0GKk*EjbkNB)[))[lQecm)*N1fI*Zc+bX*FM!*QkXTFpdRB)AhV[Rf(
+
+6M$h8(QJTDr9(Bp[f)2I5159aKAMmG4CPG-'*c1(j1VTi1SDhVq)','1[J([hBH3
+
+"a58YYVL'86,Gc`l*[M)mAT*6ZfU%SASf*EZAEZ*UTI["`I$m[G8fPJ!39+jG!GL
+
+ZXc0)AXZKrfG,ciL"'94Ued0cZ$RD`h1DEfQ2r1(DM4KN*!TT8LbHZk)pZpZ4kbX
+
+qj43HLdLHCqV+ejUjl@jq"0+!dPJ"Y)mpq-T&SiDdFcGdqZ(Qj1(&'bQ!02e@LL6
+
+26&bkU)(fj1iQhrah*Z34"i)CrPEJ[Eam+)#Z)l5Krh("q*L#"r"iq'@1PUR4!)e
+
+H-`caVAqYMaaMF$"2"TP4KHb"0Y2iE@99acF+&i0P"'$MCBE`#[SKIPL+21,3h*D
+
+0q`2GZ!ES[0L+!'5X)5IeH"NSUlSC'R0F-d3!pdNerCpR1$D`K`%8L""Zk`kr2GF
+
+eV)d-I9hKb)$l05,J$5B*9Nl5K5V8@5#X@A9XMc(%YEpDL1a#4k`i3FKcPJ3eA6D
+
+T2MVa)`d)[0e[LA%3Jp`SE3F*Qk6R(aJaD+BI!6K4'Q6`$fbkXQ'edFFJ1fE&I1m
+
+BaDAA&%2kjK4G3kmT3R@0FUaM30T($ld(LCV5iUKN&(cN)2[ip55(l1'`MLkQMbN
+
+1(3iI44$((UBBRH)j4II5HiUM(+FaP)UEk6A&4r$A)a5V+%@I2PdJ'VLHAS2XM28
+
+Fj!L!,68#B+Xmr#d(QAI&CI8H*)lM&m8i)`r)UBjV$)0d8EfGLDb8EHU,HBh4#M8
+
+IJ``SNkKlZ'd%@&m$cimed"YNlK#ZDI+1DRkiLm@Yqd2UF)3"dU+N1@++-jXL6XM
+
+RZ)BM"(l90qSV'd5Q9NQ'[)GR+3$QGrkj!ZMK0-B@3Y+4JN0KJhREepJ0"d#p'mN
+
+k8EB'MRbPDrZ3!2eKM%&*CNSp5k3--YY0lhC4CZ5[KcFLF#Qr%'*CD*I$Fa&3XJ'
+
+ZU(H@pf-X)HcmP8dDCr#TpX-Jpq2PqQC1m)%Er+06mFj(M$%8I+8'fEEH+h40V#N
+
+hN!#V"ePl1(XF@M(P@UC[E%&*CAB[TSCHqTLDZ!!1CTZ-YlUNi2MD%3J+mZ+#&(M
+
+feF`kaTZHbf$%34-ee$S2E9CL"8mh0$JiAb-(ILj6[jeMU6+-6Uje""E+XZe[L2#
+
+J5jeAl)XDPA%"1qR4c5`iamRq[@R6ZrpBjAaLEi`!C&l'"Sj-+8r*!l,P4XPHZNI
+
+3h'-'MYNIC@XkbXJSH)CcQb(%8HGXG1l'KaG[K#%`H9T5N!!%!q+hCFICrr#&q@Z
+
+ZHr8AQjMBA`qfG-3"1[Ya&MdhG!T`!@cS,cET1NDVbLR6iTK%"$&&9M4D6bT9SDY
+
+`HSH+&Km4-M`%84iC8!*Ib,5X98kp-Udh'`AGP&Ic4RIi)(c&R3LYlR[V#&JZ96A
+
+q'pMEb-&#TR*-p*CT#iEiZjcE([)MUk&pqrdM"4C9+3p,+S-GY!TTJ(IKkG3+h`r
+
+BE8BJ9&K"M5`Glc&$e*&m8UVrH+*M"c3ST3`dP-LXl-j("%3ZVDC*)RU+3C'--+5
+
+,(Lef852C6im#)8j`lrrbH8BLL12kUCCbh,`NU'h301rZ@6Bq#PQ-3151PXRS-X`
+
+0'bDD-)AjI!R96KqVUM%'1fATbFAd*YAkTqRp+Q`rjL!39eGN#cI$Sd2LDjTELH-
+
++[*GIlq@L)aVe!'@!"4V,aElrDZ'1*D5Sb[j&bG28!`0Xjq0E"6[jEe&8)`pFN!$
+
+,r128+kUGI(V@K831@f%NRh3"M!RSSNr$,+(#mf"[)-S9Fk18[38Dl%pi&%F'GZQ
+
+,1j-i@(Nb%26hm2EM+j!!YC4b`[ppXXF1T&3f*QA'"4Rr'1$pkCpK,%FNF!DcefE
+
+ZT`I-$8d[+ZRlQ1EB4#a6*cZMQBRb!"B'MHm'QXfSqBk#1TqXfpK"m9-k0iP9J3"
+
+r$'dIj95e8[rhVYNBJS0@8&4#Ab1d(j0MX&VTa5SeNV&b6%,J1F*BbUJm`VNIS9,
+
+9A`*IM6#8*a4mKiJK)jr2m!6MD-KihGTmD[,V"IDITcJLX*FC"5c8p6[)rHAd`09
+
+m90%m8T!!Sr`fL*(f4Xk3!(Pmc6!-lpqKhIjqK0mBXMNf`1)[U!YQi$4$!cYrq*M
+
+2h"b9!9U!I%KY-DbGZ`qcEYp1E`6!R#XX0#kPGRVr6R*Y%-J$G%@A$aY,k%Apr,G
+
+*hZ(X-6UiIfF2jIN)3@I%3+Er@FdP&50-(mi5#Al1%K+Q)dAiT0CLV+&)1&I4Y4`
+
+6Lr$M&2lL*`YiiFB+@Lh5K9#Mdm5Lr(If%EEI-Yb--%LaNb35DrAL1ZiSXhd(QRJ
+
+!pIbdURf%)+V`PC[&)8*I'MXpTfL)JHSPmLaqD-L0,(5,&#U4)%P!b*qUf'-MSbV
+
+Dj[q6U'6N)+K8j,c("NR[EB2cHCqNF%AA8SQ-"235M!3Nce22jT9!4brRp[BZ!Cc
+
+[(S1i$4r+U##X#K@iA[F*jpIXplN210m9lDaKe5#V)J$c(r*N2%#Up'[`5'$PRJC
+
+d`6E(f@C*kGjGQ!m$cam2BH6!UdLpQj2F8Hkj6Y+XPH9FV[V2a`-fkKXED)PDX'B
+
+$h-1a9k4Y)Dekeh3%)N"I-(4p*T(l(iEh(1K82N8c(&X!SXY8%U)C'YZd4*B0YTj
+
+r$VdeeU!+(hipCPMKCjRpCehKAF[p!pLK#iCpb5Fj4K!dHIbLc2r(#$IF#1pG4ZS
+
+8[qSFZ',%8j9mR*mI-C!!8CQ5+F!)m+%p,4J+,5X`@J&Ee5R!(1'@(q(H*PZ"lq+
+
+)6@L-`$EqimXAC0M6TTrEYIhQr5Zem!K$*Ub'JAYmjfNVRb+#N3YEkU-+r6%&-0A
+
+-q16-GXVXYN[3[pmK)imJU1U(MM,5B@C(B*N)KhFMbUi6Y$D2"!5`a`C84lC`a+P
+
+$$86-,+Ph2QX5'@1J+1U*0-$hTrS+cNf`0ImVL66#B(@8FaG6a2V9+8*DYmlChmE
+
+GaaED+(-4S`8Iq@9Il!lNCF9NmLNiqmJ"*f@*%b82JNSHbYb5V1064)d4K)",NA+
+
+aC&XIKb8`M50JPa'"L0Pr*I0lQSi*fKcDh&K6p&$3M58iejm+M4aKT1I3k"$h,6Y
+
+M[dNpML%%l%SIK6h)+(6!m!3P9S'#[Aa2XR0r2'hIQM9Tf+%1a$3(hIcbKS`83+4
+
+mUcIbCU"))pJ0BQc0FAr5P$E@82%@#fI6HZ+k($#jH`#BkZ-e)`4qqBL!V-f``p4
+
+XhQKdi!cCKe$LiCp+d"'%#rGaA0`*5p3kP"QqXrC`6,qA(5-([BkPZDG!'E"@!"1
+
+V-'l&rFThMbLN)hmGN!$*Lae#`ld1EATChp1(I%BJ%NXP34C#`ed1'&Z[5NF,M1S
+
+4!EXpXIScfHeH"di44,eIYb+-1)!Q*G9+MK$P$Z9q[,XV-rb0d"k"S$!Xh$fHC8!
+
+Ah!9)14*lCC4mBbHKaK,52CrISP*P9FSPPAfiC[`,TD+&4hbN)!Sp%R$Y5dPlUBC
+
+5AXP$"+,APm3hB`h%bHQF49r,*S4j(4qUCMkTiajM-2r+59p3Ifl9l3aUI2FffCU
+
+NT8Y!Y6')QSbbGA%djNdj"kK82F%GIK+f(MN)G(amFV*(-ZY9Yp(6JPN#H)K1fJ%
+
+#%P9CI34f2lD!Ip'LR`%VB0rl&`re%PqDVQ--UBkP(aK9A4-iQ8USh2e1dr+R,jC
+
+TC-("AfkQG(T@T#0@bARHqq-mrc6$N39cY'MeZ2EVeBD%,SUVpm&KqGXfV,'&YTq
+
+d0`(kk,YLcRl-lFjDd85*PIe`-lfFTpIJD5S")PlimB*Dh`ppL`+Z83!"*'Fj-E6
+
+@VBSD4`jLNTrFQAk)bj*'N!"*bLQNXGP&@JXXrlGAEF5J3#C0jLdR#0GE)TIQ'*@
+
+%3RLl+2)mH#-,bH(9f[6YJA(d#Zc$6N0kYNb2,"KIe-11)'4"KRXG9,ETTkfeT'M
+
+,k$SNM%52("&`mlk96@RYaqJQ+'+3!)5palE$hqFV4ad#)GP"XZ2'L')kM[(qj@S
+
+0#*+VZ"d9#[hARIPM#Y'FC'C*CZ0T$4[C"RHlZ$A42M*aRZcEb-#C,2cf1EI0ZL3
+
+U3*-r,3%BLl$3-MPDN!!AGVKp,"Pk25rqKi6L+qj&d0heKVKBBJ6JaSdF4$)bI$c
+
+hIGY6'&E[SSrNKM@C2UN+(d&)lRkib2`hDe95@Fe!TKFM[%lUiL0"1l+3!-ejY-m
+
+TCZFH)!(K)mf08)0&9[(9)`!@`FK"M#UV',HF-c+VYkQVQ,2l0ccpN3GXNXa3EIS
+
+c-PHj$FFB9[R!4r+SR'GN)Aj8U&YbDS$-4EVkhSdm`'qk*"rVMK%#pC8Ckk$T4mJ
+
+DI'UF)4KZ'$EkVpMXQ),*N!"l'1B#JYCEGFl`eRqM(KYM-!1I50k%lNV%+lL%2)A
+
+*2RBTQb()Z5Tfrj0k'bN)Xj95pp$X'p851`IZC4&DYNU+Kq98)`+I2d*`&6-iXZ@
+
+cD`$'c"RZrkqLk)FACB4!D*@fmHcVhX4DjJ#4[9Y@qAb6%"`TZ)p,ShbMdC!!UYA
+
+d"YqcYra(!X,8)`""bE4eb[6Q6BPCe)cI[ITML(p-`PqJ,m+%dAE*c@iEi2DBhB2
+
+%e+K'`LKf-H,!#MB(3(@*Y'8YleL&ij2`Lf!H@p6!E`6YHS&r3CBF`IG$ehm'hrr
+
+MMr$p!K+i[-Nql*+A$hKVab!b(TQdK&bVe2eeJ"$0#(r[r53$"Y%6pb@&MJBh!AP
+
+r0lLEdHd1b1%cU&6GQ('!'6jDKN6qL'8cFAqhE,F@m5cCShqe)XSrRG#r1GKCL)M
+
+i@)AY[lp3I1`SXM4bi0Iq)5eG`"[8bKHmrGUfH`N+$6i%@4Z6+*V)&02FTKLSr4k
+
+MI+%r`DepN`Il`h8TmDASZJCZ2qbJqjBHZc-PrrE3,I&&hrM)3A9*bkPUE,-fBT2
+
+8HMqehcIT9r-&-KCaXeZ!CK3"J1#[LE)-ciMEF`,BIKS9EpmN,$CB9N[m+I!iJT!
+
+!HNV[(9FaDcj`9Gi'qSV0hLl1p$ZAEKa!b2lDB``KQ0l+KKJ8NPN(eDFYX2'YbKJ
+
+jN!#cr#hE&#-r!*1S$[*r8qb-*HLZ,L#plYXq""A`GKBYrm&a(fQS9ARIF4qU!1B
+
+PTKkkmUSRV[[B`BTpFXJ$23Nd&SbRDhKhINp8-dS4GdL+SiafVl93A%bKq$2h`*5
+
+f+9racT6PE9r)a"%)F*b%LFddbMV+VDb"rp%p)1()9lclDE52kJ5q[T!!)`E1D1Q
+
+ZA6V#cjD$GU2![r!'1-+Je*lPP["H#$#fbJ*c1cbl59(XXSPA2G-$CI4epZ(c,kD
+
+-eJTe8$,L0AXKC6D$f5mXLVF`E@i99b*m2-3VRErLXR"lBMURPb`I@[lGMIAaXq8
+
+-I2cLZGEB8i1[ZNe"4qq'%c`AVD-LR0E,iGNk``K"9`Rll"A2F(SM*'bP,-2&5$q
+
+I8[rhF[e2AS`L"8h,jB2EbKV4+H1dcUDhYjM*r88bM@cEY2DbJSPfmrkARHU(2fk
+
+H,XrbB65eD'E))h"S,S0JlbD(YJ[TFqd@[HISh95%Zp0VIal&D[PrIch+2MUe[-G
+
+BH5#28'`5Mi,$qe&kM9flEMQ*PjFiG#!%iZVG,IjYiHr2h#Hc1$A,2[m!4"SpXq!
+
+'QH,m[b[i%FlXKj!!qYF5i0DjHZD$kr$Kaim!A)A(,dD'#pNL6$"!8fBY4R%i6Nl
+
+`Tm8$M!k1beZV*4eKDY*RAN3,+*SE%#63(&&IqC[,pf4m$rA)mX8QTYTM'&-QibE
+
+@kpf3!'kU6h0S)G`+@K*&6Yae)8MILL)M4`$ZeZF["SQ*aQE'&(LMUPALfR&X,dE
+
+6$(l+)aham1[kKIp'8haqqlENbHf&,EGkfkVf*`85QSXZKi-XJeVAfVdL-ESAVd3
+
+V`f&kV#G"m6%"$I(iaC[DIX`ZL8[`!'D(5DkKm[5C-fQ+[B3DJc,d*hEk,Q9*G$R
+
+(mA#U3jYTJZ"%![f6&2j'RGVIa45$If+Y69-aZ++N4RkPK8B'lX((cckk6PXbjc$
+
+'R8mfb64S0`[m#kGQ%Cb$5h+)i"`2D3[18C)S1(Hlm2!K3,$D,[![I#VpPLfd&YB
+
+)hL%qTAGFALmHb$IMYRqRMTM8-qN94REN[Mc9B'UACK91"qmeh4FmM)0h,hGIeVH
+
+Vb'2b2SVmb)$%1"*hR!)(Y3%c@SPAcRlpX&c%fB#1PV&bjed5qec$*Eae@F&Dl2i
+
+4J(ql1S[P[d[,l['rMkEK'im*Dq$E+S"E2kcBY(qSZZl[RZP2HGZ,)aq#m9d*b%[
+
+JQj9LidV3*Il69,rkYdc9![F1[$&1F8GKhrA$UNha[+Cc`*SM#aA8mZ'kr#L1m0`
+
+[qG6NEqQ@h$+2Qp1,N!$LbABphVU4J*dhFqdGq$LF*8`G$h2$KSQM+hrK,GkKQmN
+
+hCUCaAK00MZ0*YILR`c&#X*Z2Tq$%`4d2[c4$JBTd!Ma1k34jR$5)QmGjGHYaATI
+
+(+9kTV+akQ0,j9*0apP[b%hi"Qd(VYd&h4kFP*3$d$6Uc-)aE30"NPYL,PardcE8
+
+H@eJm64QjkZmd%GjGVm0SCe6SKM*29GK%92VaA&HIrj8X'6PBKL+RlC1@BFm9Da(
+
+*TLf+e#YM$6Ia$r[bm64XH*4aElXkHUXJ-J+jc5V9`PpfpE51C34Kf9-eD-#6FKZ
+
+4URI$Ub@E9XXqT`iBSp!pAiZ"BCHR*AJh1&dDY5liamVM`fPmXEJM#,Ya*%R!2-&
+
+4AmS!2AS$lIf'i(ebUFF$&[6*b[aP*Fa595BpV60cFJ1SbfA@MkrBk-9kjm@#aDh
+
+TcT5SSGUkPfiRV(K((UqPAc'@)*2qh@55293RZd&5Y(+KlU@Q+"p0pX2Mpm9N4`T
+
+1mA+bQqU9h30-j)h`NVLaETIK9%F#E-l9a%F1")EE5HTdYa3!)$XNV9bbJ#Q3!#1
+
+r`jfYhbMD%B)jIMi*e&A#KkSchPEfqbUSG0i&!V8mhY416mbF%B0Pr00DF4U1)@Q
+
+k018)UFdJC0V86N,bPpILH@c'R+%3fNk2$,J6IjcNKjH5Z990H&hl#jSqaS5)YR1
+
+(SU)--qh+%36a1f,JPD#AXCmdb!(VT''S&JmqDf!qAFbrH&"M!dQ0R%649$&RJ+j
+
+4"er#1VX#`,HTJ+0pkdL-,*KAUpX9GNC1'Liq*RejXml29dQ&d-pB1[4M#Ll60cI
+
+1"64e`K[eMa01SQL1Q*)r'8K(!Ul,'-+#ZaB)ijhDH$FE6!&K[,j@bU2N44j"@-`
+
+4JTa%Z[qH,JK@9@0SP,9LDraH*)iJj,,qS$h3Lpi[mEc&h0!09*Kp-HJaLjJ$lQd
+
+rA0FjJ[J4&XjErj6L'-8i`2da6[r8SdBE%8FYZ'@NeI![h$Le1Q6`F'aL8crjYdK
+
+MAf53!&NC)9RNd5CUqSqEr-fHVjUcrV*4QpT0c(CQkc[&20m0[pkNklaapepR1eC
+
+J5i`!A)T0IjpQmZ)f8*8[,bl#PY@,Hh'cML`M0cB30aSjF+q+&)leh9!p4D)21U1
+
+FNa`jN!!"Rkl+(`j[ZSbDlU4@Kqe)M9MQflXBLD)mYZ#IrAiCLTmB'l[9B'lS1Bc
+
+db(iD@`JPIh[Y6ZfR',&TJMMLbeG@M2C38R`mdmp(0(D`iMN&&c$91@qh'"hLR'e
+
+Lb'FF*l$drlbTAkp&%8iEGRaha&&dH`2!HGH'DV+Q3ZS-a*%$ZIVYJTr'H*K%U@0
+
+qUPiZDFbS#L(UbDI*iT'&*25h)UYiLc(XU4#6IV'*0pqRLXBN02cACd["bcVL'Bl
+
+9Zq%XGN0H,R6Am6,@X04IH`"YJ4HY+LJLhbR`,iL594djZJHQ6GhUicTbf#)6+CH
+
+T,fei*8190(V2SUfJZZNIEr2SK(GCbN*m#pDPB+)e!"h8RbD54bedGQq4E2SJ9U4
+
+ASi,d2e)lMqBcmR!5CbUd+i2HN!"bb6"V2qb2a-Y)3McZQh9fBhHC-J3DTJbUPhX
+
+fCG2k@,i8dTS4!a[VU`2aa6SJ9YBQ(0hl8'HAjT!!flA3CP3Jhr,9@(Z%J$r*cr6
+
+6[F"cm9pFC[(BP64MmAfa6K)MEfa",halXcQ*BZjj`0Y#)AX1&2I9M(em-mB3c0H
+
+[,YH(dbMHqTBQ[5-BMKX`pK!b9cXPYPNSMDQ1ZG&rRXEB`Pk8L,P'#c!!!k"9ZUE
+
+hmi%M!M[jm+apX`R&@IHqVTHE(#TVC%$I9(I@(%k24FDB49#A4C,GL+FY"6Y"SSe
+
+Ff9h%(km4e!6,lBkRhkLS-BL1Q5*jYkc"DJB(Lel8*V`SD0crX8%6'YXC2dY&M'$
+
+XXi&#-1kjUl)5FY%H)-*9YZSLf6mE'5-,prE$DC4iCiaj#j8Fm'[Z6Y(+@%I-@Xi
+
+[ph(d`TL+5Fp&a#"ILPDM4fidKPqYp9K$h[M6C5KKN!!BmMEB$A#e-0pV%G"UULd
+
+e"P!3m'5))`Kjj@`dc''$c@QKr*XY(PAm5qdr"P&cX&UAEKV&'IH)Tb9aDPjRCTG
+
+(+q%k2UaT()2S!ASiK5aF!i#(TVXZ-#PbJh"j0GSra(E()KCkdiZ0Q1bdD85'3Hl
+
+iC8(!')80AK4MM(BQ!+[E%4Z2aKXLN5-%3UbiTc(N$G!$35cH"cSijebGQ`HjZV'
+
+*"VcP*%SHdJc0dbC&)VY*!9@JHP4"&9cI349iVeXCH[GT)`$Pb+ZHkRc*TXiNDP[
+
+G)MaY04%-iZ4Q[M3eDQ[*$SAU9T6aXMSe[GlmM"'$mc)L%+E1G"!'VA1cdb)6f'e
+
+i['lf,dl-aa@mBa-#I6AQ#&h%Q'FP"EdL-`2*pf@`C)c!$"XK-"bc@b5($Cb13-b
+
+PGMIh`jp@HM'd%B!Sc,G#T+bd+l)"ZFmTchb&fU[a0$CS$&lQXYdFfDIYM(mi@b-
+
+(JLT6R4LfqjS8qb+ZZMXD5c)heHp)3J$mb8jr2S88[4l[T'UJ@"a[0MMrYNAYmi8
+
+F5DJ+D&G+LbY`!%h@rZpeP9'ZJP&M#hf5[pq3!-c4!)0D3jdViX@KR[LpB`Ie6'-
+
+&3L3cL$RKE8@lfS36"L*cHU-@YYPb#J8Y)'DlBp%ZJAKhpZ!A2[fB42Yq0`9D1#`
+
+3aCK9kl1QX0I-erTF))q8DRefTd68))EDH%)qiDY42TQlV5V-f4&fB#Q+*r9J[Fa
+
+L&XD3!'%Ke@%Q5XFLe1%RTl%S`qJBJ8&&ccG(qhAre0M"6IUfBMIE8R1*0j6j3Vm
+
+)[+QEP"eGRZ5pST'P%6U5)"%IRE#1F5Hc*$RG68@pBVT8`3,jT`Ah45Ta4'#r4`$
+
+S*iVE&V8$`&D#JaV$[@5*%Z"Cr2ZP'RP3NT[+,GHTbUP[+iYH1h!QL55f$$D9aHM
+
+&VFdq`KcYYX*EHr08aGQr!HBBHkL[1Ch'b55bYbMR[+-%&iJ,FiYVMGhIE,+aK'c
+
+kFK)C[rH!*hA3THBLBmUYi[eMK*!!XBJ#UY9iKa--dF6a!RRTVX3[FHSqe45I$(5
+
+XBFNc-jS6RLV3YCmPPb4akCUB4MZU6)TY[r@*6)FXCfX&r!Rf(+1!)D44kjKqUB9
+
+3jp*0%Ah&6P"X96U66eXA2Pq'N302U'LZU#ABBFS)(T@XM3FX"L-&IC&r'Z)6MbS
+
+2YBIVKL8-YcSERdG*4bZDIBXlj3'l@BQV5fM@"cEiAh6G')2+A*`RPbS&*Yjl%EJ
+
+4"Lhal4h-JQ+!j((!lP5+qkXQ3q3C5KRP(fA&@%0668N[HUcS8V+Xb-XESrh-e4P
+
+Cd"8Ihla0HICPXLj4DY[kKD6SMGL4"6rM3fe58JZHVkZ6ZTdpUX%D[DJ*lHp5@Qq
+
+HEV3R(D4AqhU[99"p,+2EYT[%FXiS9-)"YMZ&86qLp"L,3%Ik1LZIa"l6PT83Z9K
+
+TpNJaGC!!h5B,MkJA`5)$GhkP2XB&YZ*Vc9PLEbiIL+BPN9NK*ceQ8&Imj`hpVjD
+
+-),c)38I(d[8ibS6S6UUZXB+5T3p(14)!RP3#+6&E&bY"&HpYXK9*+TqiaKrA@Sm
+
+S5-E90)S6&E0eP9)-YXCS6k&54J3fGH5!"kZ%'Q,#lP(#pYk)XZX%U)[VjAh@Hf5
+
+JCH)ER*Q2Ap,%8rBPfDMKXGe,jecH@VVRSSp255"'(SVENRTTDYb-8b8[f4S#fNU
+
+eQ66D5JV#k$&a`$4GMC%%lX6mEDk'%Y5Y4+h*$+eMUMACm,8Q,feZdDDhTc$HJV&
+
+b,+!iiY'fI30TN9@9'+SEFm6[F"H9M[@Qm1-HfTUM&KK,[GF5XHdFmkC!([B6Z#f
+
+c1$--XQmYh,%'DH"$fSef8QNJ')3k0AA3h)IA@B0![iB*'!PBb,%#0c[63,R"Fi%
+
+ph-k4AIqh-KmTd$YrF1P5RHH!eCSN9*!!3dm+LVR@[VM((cFf3CGA@E2VP8*9NL&
+
+2,J%-QSer0@8`5T!!44p"X-*QVU(%e8L!Fq&43YpIGA%T@8p1lqK&Fh1D$cPJeb'
+
+Y#UlilT'#pY24"GUDF2pbfUj&ZS2f@(B)&!2h5%L04DMG6bDaU6(@%EX-kHlAS#@
+
+Z8F*XT4kEd""I,e@@91DFhBUNI%aTi4aIJ&Pk-YJrVK5U!2Y"Zb6Ti)k4Jkq5@f-
+
+BQ"e&)FHNhCad2EdQ2fh9Mh$DiS50-1cL5-"PS&I&lTdFXqZ6VU0bi0GTd4%+JIa
+
+N'X@q'JU9S$!(1G*jp@-0R*'2GZ2c544*%V`p,P@k%mddlBrb&q-'3a`4D!(,DV2
+
+Bj@K6fRX)*(E"[E'+a[(2cPD%ph,8VPE#,Q[DBP!Gi5MM@FdiVB+BXAZ9,Q96p#%
+
+hCqXhP)4M#ZE@(lSiLX%93hDp%KBjjcbL8,iq3K!3bd"LMPC-m-mN+p"NM#BB(b-
+
+*KFV&!)Q#,,FYSHmCd"c&!4N*5$f-2@5)-kq21DZ6cp9,'lkcYBD2F+BDBNilB2q
+
+@S"e*b)H9)aAEkk)P!'2IKB%e3X"-0++Jp9G(+LS*BXa4Yh39T35SbHL!3-BjdYf
+
+ClI"KLUkP$9m@q5VEmm&Va9!FMP5K21K3d,l!)"N2Z,LI)LHf`ED+*E5@DjjrE2X
+
+FNj!!(aPdaQ`AU%YEU&aB,qK2h1B9l0)[J9[a#(D*[PBNHf*0MQJI2ahY#%54f)B
+
+rf!&HV@$2aKEK+5)`'[d&6hPr)eU[KHYHXS6Te)j0d'MUZ+AafU%YJD)(PkePXFB
+
++,YZ)3S8U5p,NTAZ,AEkd)IJ9(V"$PGh!%A'Cl4$CV4l*Ih"2pe-H+f!'5H(FX5a
+
+G6XJUdFM&MbFhCP%F[I`hf@9La#jH`SMC`c$QN!$F'4QJ&5hQ93qdG,Lq`icIaqc
+
+pF)kM%d",'AT`1jLlQ$$JQkN&@Rr9S6NLdF[l+)KB6)+1B`QS3)GA(i&"4MFD`EY
+
+*C0q84j`m5pGYaVpCiT'%3Bi!R,ffb-D2TeKNiF1QDk3!&$imeHY')!qYH'pAlk!
+
+@`ij8j[F8(EfUH[M`PT3j+LLL-SUD9K88&(dYS2U4AKfM5)HI+U0-Rm5X0d'`JK*
+
+Pb+)[kS9'#Mb82lYb6kC4NLJam#eaee)RdG)IBr$"4``#23PaKN(Vd1iJSU"$Lm1
+
+V3r[$,&VH*&0B-")H$@"PK!"H4F2mr-9cE5M1likSrUBPL&ZGhke(X*AlfCU!"23
+
+'Ad4r!e&FDJVMbhcUf)-5,2FS%G`K!q83LVX*@"R6[00Q[1!XM4adCK8(A21G!-f
+
+9bC1JrHU3!+*q'jXCJDLq2*e'#8l(*XqDPV'"HQq`@,qZE2qE5cD@%!0-eh$$JlP
+
+[+`pfH(eM#'"9*JpAD``#+IlhNdL*R*2HE$XmfG*+qhRmEGb#4Mk19`jjAR*$IJI
+
+Jq"q#+ie&Y,GqQJ,)1(%1H4ZVkb%[XL3M"F3%)`T,[U%+Y6VQ(948C1F`YRN8)J3
+
+h)P$9P@jLM(T@UVT4Ad-2mC!!%4S*k"XE5DK$b-a3$R8GZ(A[KMIT,HV62Q9j(6I
+
+Bjc'"'S2)C'ai"+40CVq3!!Ir9e#ZXB2FccFLr('0!8CY$L3ic1r#cST--HdXZ&9
+
+(GYEK&Kc`-mLT[kh#&c9C@@LBbl[4j%4,mIHr19CM&`d9b4Q5XpjXFGE[6'Q5ImS
+
+30-+`RImPTb,YPU2HDM-SpHkR8Bq+i2(PT,G,R(5UaLr"kNBF-TFI6L1M4$PGHIr
+
+2V(dR&fcPG2e(1RL#01*8rKla4JPC45Mr2@$)LAqTHDkI+H8a#MfC8)iEKJqf8BB
+
+fT'b-a2p4#S,jT+[K5h3pHY1[!9B1!HT*Z-j5`+B8Vrf,94J2f1lL5!9Ir46ZFF%
+
+pZfF6r'`mBa(!m@8Da6D0`FiB&A[Q*TR&EUUI3EZ08F6d-VD4Jpe3,ScYmdMCP%h
+
+pX,e`V#+P-CbPBFLEbS*ab(FJ*!j3#&Zc0ar&8mBQqN55B6$RZY8Nlp(Eb(Yp82F
+
+fKU'0qPk&0'9La2-@Be0[jp,R`fcqL)0SrIT+PB40NVR[+"RQ'Zf2iX"M&Ta9Ua1
+
+F-Yj$hLb9'#-5RJ93cmB$QSR'*!K$NZ`mjmh#&i6%,UQX"a2r'ZTKl#+bRdKG1HS
+
+TQrbI)8j"L+ZfhZ-BkLSRNG"51GGCP@#Q9cEcZC[VIfEe4`C%a"p23aC,ERaA9M4
+
+(5p'dS$qae'4"fX)@G'e&KeXDT,[,HH*Ar$0qUl%(&q#4*#R!l3D"D0lLlcT$aL*
+
+XRU+B29Bh%Gf*Vl*iGI1[D,pM"&GU"-#UkUC4(1'Nc11!E`*B2%Em)ChFb%0Eq*0
+
+$8D58#jEF3V6e#2D54M$-r#-MZ!5*[LM!(523c1@`GN9$B3,Ir)(&CSa"irfT16Z
+
+Mr,'PEKRDmM9BVf$-8%3cT)QeR`GKed,`9khjrY$-q[$Ukl&k6aU2'(4-Y#R@+U&
+
+!a21UJMjma#2FR5&p6hGL28)G-YjRd1KM&6KZC4U,5aY93KlcEE"!1+)rJK!!'M%
+
+)3b9QFFlAP1bHVqMM1U+Kre8VGcV8%39qPa,%LbiSSa`PDf-``hDCQCc1YpGf,!%
+
+h0E0!`GPQJ+1S8i#j,G5D+YCC2$F'N3hpR2FKKfTB)`ledT`)1AdcMHl4`ac[+!A
+
+,aA#-'Uf40rCZmJeb6Xe!'Y83%d81aQJ0De4'HaY0S`FCE-c5)R!+%2REc4`lU(-
+
+Xc3%piASCjfL"+[V,P[ie[0ZcV@2-85X8MXUB!D[-)j!!NcrqQh3VQ+D)Kiba[RA
+
+BH250m&ZkH#hEZX*1($R!i2PkR4rMGFIUNQTpD5qKNI`a"-VA-QeN355@B%M-&Pc
+
+V"0A@E!dV!je8'D)H-0GrXjiM#(b8*ES8i`ffpDEDrj0`I5`L-jr`5MPH8kfRIUp
+
+Yc63N6X6lf%2$lC0TS&h&i`eSpkh5GRZPi#[hd)L"2"dj%-[&mp5!!Hk1!eZXhEU
+
+qrbCma`Vb(#-!@lhFjQhSLY+U&r,hJd$p@!@M8iPMQep[fNCG1)A`h)6`AG*Srj,
+
+e(0,#c&"F!CH-'cZ3!&DjR8`4ZSFk,TM-rjiCrCXd+9dahXYC#G8rF#Bd1HTicZJ
+
+h@Q+d3L)GAjjC'DUAH$M!IY4XhcGZabb3!1eb#L9Q&E1G0J6jFhYPSi80DS(dYc,
+
+dX3BpReAf'f+"!m%k&5#,9P%3Ud,BRaD4k"4K`9ZVCB5815A9-bqL"8+J0b#LVL-
+
+dBPU9eKAEMHVV5YK-U5)cUVVA69H1*E)LcQRZkejI%AlBAMc$GAHqlCc`FQmQDXN
+
+kq#N!lSi4!Jf8p4NBDS-S3J&29kYFI2*29RdXBBjrRN4#c15m691dEfX+pq3*'AB
+
+hc6',jS)8#*X1'XNB4F*ar+!8C3`MZEKDje$LQkjk!Ja&%A(rH0BM$&Ih6d(hL#$
+
+PH*1Jk$B,-[IMUeelb+J"@Z9B3RX)CUcb++-6cAhRi%mX-h`T5b*#'mp3a6#SUQC
+
+8rfp8Z$'$"'$B%,R#TLDk%3N%Y1(%IfK%Mc3XjYH(+Lchc3FUpC[4rf`#(D0!(1r
+
+((-j%MYN)43#lJqS(#F)B3VEXcjE80k3N1@P6&1@Nmhb0*C5'M4(85@BX0kGVGU*
+
+l0bVLr9rCN!!rhjT4Jil-9"i"L'58SVP[jB0CCEi9Ybh,V[T4XPVrB%Z24A"NGe2
+
+),Se0Kld#N!!L4TN!!XPdeJHXNf-Ce"2fFN*EpHcU9fh%Ai[INBJ8iHNdNPipCaa
+
+S43HhQ[*(l+&M"P4R)`(VRP&AM(C49X5qJeP"Iq)J(j-9SD`)&!SIXa@KaHMZRYc
+
+JGfQ5X34dQcr)[)aIBQXUEp(F&mNJ!'$#S[$rj3Seb+hpIeb&-3BdYH+bGh"&KK9
+
+e@Q!F!@jVK%#C,SkfHiaZCmNYM$Q(L*!![HLiI%B'!([r00T22H9FeJ+`$N@C#3%
+
+`JeH-"VlYUlEq-BMNC@,faQcGE%5E$JISLbVT2`lKiBD1$Y4*TfV`H&eX*(f%qCi
+
+dKieHe11FAYed2,DNM&al02IP694'd%*0'E8dIS@rr63B0V,Ja@ES+eBAI8HiZRY
+
+@0'AJfDi6M&IhFk6,-31(lHY@ZqJXM2P'dp(P$4B6#GLH#rC$X)XaLia1pR(PK0e
+
+eG#r$'F+%Li9$9h8N301--5#P&#XRkMaFGR3AR29b8P(NmAZJK%Ic('R3)N8qDEi
+
+6ehM8q44hrkf[q*0*ML$3%j60M5+@h&cA(P(i3P@8dd49mI%m4bYbpX[6j1SM5Gq
+
+(Z*eM#RGc4'$9NdmMTq`@*+ka20$e[1l[#b,@pbBeaZ#)$JXmFBe)YqFff#FeVQ-
+
+,(4erdSfF4Z+Ij3+l%1QQGFl!S(K5K$45F+Y'#0VbXUeVda9%Z#PTlTZ56NfD&aC
+
+!R)5+h&1Um5-(HdaK`h-eLS-G24ke$ZR@IfRC(#NiQ#-)p8&Di24*BpaS5-TaAd,
+
+I1bX&22%RC29M&b`PaHZ11GHUT&Y,R12a!I,$-BGkqj*RM%&(D4)(6EE$Vh($4b5
+
+Ze1Nd5LSMk+jUIp+YjGaJG)r,LdFjS[pT0mDF8D-8*@B-KBp!i!Iebc!'3,Q4lRJ
+
+-fc9+XG3J,aYTB2IiGV+2iJfT5',5lPE5T0N%2$kJ0%F%5YhrT$+$Qb9Q(59-RRA
+
+RY)i500f2-IK&*6X[@VVXBjVldUa66k3V'LrV`0c('%0bpr'K5"@p*3kULDpMFVr
+
+cbVSEHm!'r[2aRRMVcN-''a6`pc4Nq#'IBX0pXTTM%EZ4P53jkSd@-eB!mf9BS-2
+
+dqK",i&HM()1!S-l5MKccCY['6)$*,c)4B`Y%rTq1H@9b44&#cRQVcGJ1eKPf50H
+
+h1&V482[j&0MU5SXValaGXM(hY)QM!+'GVdl0'!)"ePC1$T9,rC!!3@`-JfVV3ff
+
+T1B-5(QD2FS2[rMqZj4mrINa"`k4V'HX-K+JbCQ"J%E(QepR9X3Z1Sl6`FX*6dQ*
+
+U`UT*DXX-NqZ2`Q0mB"dq[AHCG-QTcN5&HCqfMCEA*+bCP2JU,$qQ)#8q2,m4LGa
+
+5NGkN"N5PIViq6V85i02DrC%)l&*00f)ZRLjUZd5#@DEVrUlU3hj3"$i#394HpG)
+
+`dLhKAMTRM4+!KT)aQT!!V"S(+)NXddKh2+Fl&q+P-YE0DH5E[N#4q10maJiLH-9
+
+TM#([#2&59bNQ[@6f(#&))B`JQ$9-VmLXmB`h5h"Q-Lb2LT'4"9brXB*693bD")J
+
+bh#A#mXeGI*66(BP)MApk0iZl'(1HLZcbrN+6rUB3B%b#J*fP!,T8Xdrp9DKP@UX
+
+9p#Gf3,"0mqDZ`1V`EXID9%S5aJqUMNB1p%baUE6X%kZP3Zd8)YTI4N*(,1b!-Se
+
+L1[UQZDq+BaE[f!"4-MV4TI2&m5c198IKG$#6ecJZi-@0233N@$qVkqdT'mJ*4jM
+
+`QlphMmFX5-i5)c+Ql&UVJaQ6[8qQ2*EKL4a2fHe@f'@QHP88r39Icar(1**!KCZ
+
+&eeYlTLFXmVqh2)p5i1QF#NN2fRK2h182k,*'03#'1jZVMCQY9f48+jJ4VCVQ1$S
+
+i4S%qrf[A+aTUFZ!Z`DS$lmMjD"3X5mc''&)1hcJ+b4L3!+0f'aB"+ii-fK%')I&
+
+NNPp0)D%4YKj)S+l&mapBd-BL'RQq2U(P@[G`8&HRrcAI1iD4&AciEmRj#[&rJQ,
+
+P))rIGU!Cc*m$*S2jFe(q[lE10SlGa#($E*AZJ$&k'rdK9FD6Gq3FYaaeaTC"&i%
+
+!)5$MYcee4NrMpUqJLNpfF`4#DQl)*-CZCP18S$)"0[K45G5BK'rqaIh23XqBp"3
+
+LfC2'QENr*iA,-@65f!8m8aPYUQ'0&NceJXKNh6'5!*GJQRr@YErifM')ZZTZjT0
+
+FmXIq!K$EB2b"[rCCUpPS4D2ZbUq+)52S@6Cj$a3r!@ShiP(2NY@AHDNfSIIH$C1
+
+V[`"(ML(XiSK!99f*2b4Q%cDF!cqBXl5N#(jqkcFPUf-3rPd*XX58jfM6*`F,1K8
+
+VZpFMFV[aK#dI!E#D%a%KalcGC#lTm!TfaF&Ib!$',JTDLQ%6Fpj4YZ`3UD4Ca,[
+
+9T6h'&&#aa`J!L2VE2+Q@&$1lZbB+`aIFY5-'phCX)#@DPQ08B%d90EZe@5mh10%
+
+R`RQm)fB@!jiTC`C-K3"dIHcBM88ijCp2SVMN-HN0CFhZhD!qQQLRAlD9M&fJP56
+
+36Bjjdm*QGc*baEdI!KhED*r*XT+jVd`b5F'P$89@bCSp[-SM$LIVUbPXZN,q(,(
+
+*Ti)i315Kd-kef104+IpBKDl533l2E[l!1L@ZHJD@DmI!+%2Kc!K"MMNEhR2B*Tk
+
+k,,BCSHTmBB1-8C3MRCk[-#aMhL5I`VbIZfA5l&e"@SH)VJVcP&EhYi-G1aKSfZJ
+
+j8,01A8h")UB'JYmJLIlTfdFBXVicee!cpicj5T2GLi!He%lbVq-lBa3YY3rZFUa
+
+e60[m8iIAj&dqTUiHNq$(qh`5#AD4!cEke$rp"hVef-%LrQQM6LD4p6`jF%03)Hq
+
+#mjcVr-f&(TPBKHb5bNNEJQSr2AarNk!&idYmmM%*V2F508J+bEQ(YKH*33afI!5
+
+"+SGX"#SXX!0,Kkc1([(SSZPG!!ei3[bT8TA&kAkD2"XA1*YM"NKUQ8$$U)8@EJb
+
+UEFm*&fcK))Dk$J5NCbr4[Ea[8&X[J)chNU!DV[b8!'rP0pj@PRM-I5',L!XZ,CG
+
+c&(U1',66M5k%"I-UVC!!Tq"`V*IU"IXE#lf#RRS(5m#8ciI%8h*R'Dkmj5RUrT9
+
+CH@c##&T0SmL9b0mVpX-JUA"*1jTl[ZhVFS'aL-kdE01-!EYAkNDdr%G1i"%&*fG
+
+%B"H+`qFaZeS+Bhk1kBQ[!9r(+LJM-pBpYc#`5k98$3DTpCZJcaM'SFT*,#EYBLP
+
+1QYLbK@hVhq#2rk$QaK*`ar0SHG4ZP`*5fAd8ESi-4%JrRqLB!@VNh1+METIDbp,
+
+9LKUNKVG1@-A'"QU#r[C[2id5e[*Bh5@e&kfQ%6LHaa*L2L-(fVP%#*5iQcKdUKJ
+
+`r*mULcQ'MlAr@%10qqPF!rpLfa*S&CMUjZU+1ZTKGGeS4XG*1PdB,cfHGH9"@@8
+
+$V&Zekl`BmIC''b`(2+9Gpe&IcYI%YRpiFI[0E"kS!R)FDEd18dZp1iKBB@brlB8
+
+BXkLPcfabcRLV`@c1F`",pB`EkpABJ#XcJP$VN8T[ficrp@E6U%Xa93Lp8UM$81H
+
+B45,Zi53b+HIK!K@+P9!H,R0rlba*(0d+%cpc*mBF"'lbQQ1H&!V6-LaI#B9e+!F
+
+TKI0+9c22+XELHk!4ZlX5V'HK2#BI`Qp1r#-CX(6D6PlXH`P0B#M&+H!F*p)%kb9
+
+IaZ9*bE-qQe002C%+Ba5*LbbP`ULeNjZ%bG"1VVZGI'f*26bB*Z"H96FD3'fjM8P
+
+UHlGBPIjEl1C)JAlEeN(%ANCjcaDc6*`HbRa92R!eAJ1krpHiUQ-8h4+C8[GS8@#
+
+$'b6[im!LP$f2iSFRILb#`bf!%h+FfmSVS6cKdRp&mKjKd04IEdD[UD23*#HmSjJ
+
+5LC4"4UPF&MDf#),ma0',SCEe6F2!`jf9&&jLjHI00&NPL$"9EIfE#21B4,pV*Qp
+
+bX!"6)da8E1aq[&cIc-Qeq4peB#--5C6LZd9ld!cYr(@@P%1(XhbF)`Jm&#-!,Cr
+
+*(q"aSPC'Z2a32JGAIlkN)`JhC@bJ!bQ[DN`B#!QUHlU8V6Ir-Z)aJr+LNB!lY4c
+
+[PSLZ1S55@q!Uj6%D@H#)qpEIbc!UCNTlC0DLbU-&mF**Ir!+SBX#(qp!BQ+KI19
+
+!If&,II*XZ9MjGr'bG[+-jZYCK26hR8+mQ"93p(-(0,AhJL2mqZa0QVi0hLl5piY
+
+lrr1r*&GijIRaX2$r!`#3"!d2GA0PFQeKER9KE#jdCAKT!*!3Sjd!N!m'-2i!#6b
+
+m!!$"&`"S!)"849K86e4&@!%!Yi5d"EH%Y"3!N!8#fV%!N!E'd3!!0'3!N!B#2`C
+
+19r*iJJb!C5@h%,j@VXHTA6D`aCKiDRMkH-,@0)l[QFmTTi3Yq0lHcI"8irK,qR+
+
+DQk!IV8"GehF0QU5MILGCRYabC,,*3KEbbj2EC1&NFEV*V`3C+f3,!3QN,FGqkj@
+
+,(3Y8(X[[BJ5bkebi9hD%,C`X4cZ[MN+ZebhdZXfkTH-J36pDJEj"hcITFp!hm,Z
+
+FG0RCGakiSC3F)dc9Gr5c0ac&Bc&fMleK,a!V(9&m8&5riTF42[Kr(Mb)aNii&N&
+
+2$&bRkiED5Z51Hjl[$Td$9m5GYKrdJa)pU5r[Hf2I&DZ'rG+S'VZLDQeBr0fYJ6-
+
+DZq(324SjI9F%hDiDEhABR3ih@[&kf-"Sj6$bIRA&(m66dM2K$E@9N40'El`4[[L
+
+T')hjpl9Keaf1mF9,r-@(Np%!5lR["F-6$(`bkS6aX$-3p0[$d"Zla9%3R@SV0,!
+
+0b@&YFCKQZ4mkSi'DkDAN'Adq@X(Ibhi3Mr'6&X`GqNr6A6pSUqp@`cHZldj%&3F
+
+bEN9Z+,DFBHcifSS6M`G"+&C$caQ+65FmG#Gbi$,F@-1XY`6rHb[SZJrTlpAMm80
+
+4$pe$,iLMKk)edPD'q"DIAJp'$i9CDpV@@U[50+hD3e(SHZ'FqV1XHY3FH*(!ImZ
+
+LkHl`hIrD$5-F$Dp`IfFM+r6kG!9MZUAllP#d*m[R'qa[CV4bi!jMlF(C9XiZbif
+
+@IhMJJYl84D0TiiPhE828EA2,E*U[M!DrKJI1@j!$VCTCd6q0J!I1f@CcFmYSQTA
+
+h!qS"R#DH[bbXZQ(c&$CEHH"0@kp[QT@cclS(hV2XPifkAM(%PPl60i`YSpE-(Y1
+
+5Z1I,f5)R)el4+lEeH8!pF0'f,4[VIlYL0"TQEH2m+6a`V@j86'ca&pMhZGAUqB4
+
+mi&*YcGLjQR!Xle0Aq4ffp+LbGk`R*!EK$maQB$mfKq-`k-BG`Z3##'qr-ZaATV&
+
+pI@Y['XfQBIr3i$qeE5alh0LY0AAH,QrP,Ab+'aRVY6940I4Ap"X"1$$MZ[A5U*N
+
+rr3BCrhB+ZES6pcZD)((lP@4)pc#fJ,ZrpY`M@J"TamHL%S`Q30N23@EbLh8`Y0A
+
+`GD2MZF11qjT`q@mEiiR[DPVk(*KEr23r6dAjfE0&J20i2(#&lIC"ClB)f[RcZd1
+
+2`IlqK,iilrKH,`L(RU0B`Ed`!!PD*hC`1h4G%3@pmC%6ZXr&*)K&"dLrkADpD"a
+
+kE5aPl)f&-qcq!#+c(R5phN6$"`q`YNfH&9YE6`GrXpB5'ql3$F%IVXCYhqZ)UYG
+
+aKj%V(-c0,lB'EKGV'p&cEp$dep6dir8!8iRA[5TF$pp[TT6P6$+J6h0#"+&@F-D
+
+dX%d4M1M4ipM5*m*h#*!!r0e6laGHpJS+Xm%cI4L-X-B2-3d@qp$cIG%'iGebHl(
+
+r8-0,ij9$*ccC"[9iZp8%%2e+E1ZfVGHDZkI2m4iS(YjB2349iM4V"b2I`h"BkDB
+
+cj!X%bm8!9`blXSPAckfD9E1jL`f1emeQ$4aJ[!iqF%l8G4[-jYfU$R,`VPfh'XC
+
+T564`)4KVG(YCZ'eF*JjSa4dlRKpKklr#(@pK,hHkBZ!FZVMR@biJB39XN!!3mX@
+
+jMN#$0rUmAEa86ZK9m,la-!"ZLQU2a`%2dKhb+$YNB1*'Tr432(kb")+j&3Rp%,G
+
+lhMPSKekhMjqZk'*qSEci$1Kl68r19D`eEYB1FdY%BhQCDl3@SkDR",&@)L!q`TX
+
+iJA8[L[$M#FdEG[bi5ip"ErMl'+J`lJDG'&6J2Qm'Ef[@GDDp3+FYI,XPTb8+,[X
+
+KP)T2a*YKF+30JL2DG-,)"[2Q%`5,)"HEVMr"YkX43c$2`3r4cJa$3JdC%5kXcXB
+
+ID6BQ2)6q%q*9i'-YIeYHIUfpEN`1fJ&1p'rPLeMYha,m0fSq,S#NNG&XJFk!(ra
+
+dMX&K@BcMFB"hlQM!8P&qAq8kAa12I29J0(!Ll!S[E+P*J4@Fe"BfdMDaD4dC9l`
+
+eFMXBD0acRA'-JA2A+rJ+c)HrFp+cS$h!h(Zq!q(J'Y$k&J!,UT*Q`f3hmG2b!@%
+
+05-[(i*e[Jf'q"eCdp`Jlj)&GF6S#cpr(*YF*fpl"4hF2LNkRJc9M(j[1K$ll"B5
+
+LCCTQ)cjSJ`*JIXPHZ-LlK1DEaDi,b3)BL0hIFVZd0$alKICl0`36`U'!RG`(d'b
+
+#bH*c5#V,`liEJK`HadYA(8c"meJ0`b#8ZlR,,!@R[4NFmR&V@Md!i0hSqVJ[2)f
+
+,YBrjjUeJL1-&)T(Bi)(9k$N0[qj!8m-C#'Z"*EKRN!!)+&fMG&r!&@a`M4ifY0X
+
+#YQ-*Q`*d$B5'q)RCPdIHX"J4J'!C(lP$leFjkj*EkJ1,Ebam[lJ[-9Ele[RI(3)
+
+l9qP`MM2PZ9aTQ'U'V3N`kf04'!ECdI-8aqjaaaf0`F#2-jLZ!T`a$ZM16Cc&q#J
+
+)r5jGf"YH')f,(CrJIfdSVi[Vi#fX(Y1Z4I(Z!i&)hVC%)3+C1&H[9hITl($qQ`(
+
+Q%*02*(NMJCfIB5#Jarm%*rN8H`(a)$chqTCa!E#JZpM-@JHiXKj(AJINrPf63@B
+
+0adHf-L*pm)l[iLl@&ESrm-IH!FjV'6Yq!jF'YNIkH61H-*I#A@rb546'k5,#%q&
+
+J6pFi-G8HHMe"`d+c"2eDFBZNbN,%f'!0JiMK)XBiKSS4dX1Ed'PA`amDr1Fi4FK
+
+VI0%T2Rc!RqI2&(IamiK2Kh3CU25!D$Z1M6a@`Y8&%Vj`F*["JI`UY5T`9R$Ca+`
+
+4!`eQ-N$1maG3hJ*kJi`#ElB#L-b9EVb+4c'@lBXMM'MK"Tl,`%`H)TMDK`%`"Nq
+
+"EI+p1c(JkJ'dB)J0biS)J+RH$EX2'HXN'iJai%i[!A-f(3!RaX8"Dpf'G6Kp(0P
+
+'%31XKU""('!mRS`)N!#GlYq$j(aIB[JSG&2bY`bQrIFa`5#fZcBm"2b+,48)Yc9
+
++YX(q1*RZK6q-XK(&Im(C4@$r2JlN8B#XEVl"K"hAe(,@aT(Vpb4%MGaMKlMQL86
+
+IU&F(&,@24cNSHQmeS8#mdfL+2&62#a*KirYZDf#`@KX`D-8pi6FrCALd$c3+2X"
+
+kEHFi0j))kKD6cCZ@JR%rTE-'DXH6VfEEY$G1@N@l+*rK)1jKZ#YAK[YpM`jSZ8h
+
+A'%LapB+*50$8Kb415"SJ[D'ZY4)Nja92RYAk%%DNF4Q!'1k$Ci&BB64FPRe(MR0
+
+Am'-9QZ*43d[5`,8Zb`LmRV8$J![H+cGJph*&IfQF!TFqp!"9")`e1M'XbjDmYFc
+
+[bhIK3NfCPqB"IVakT2!1&`'j#Z4UV3pbDdaXe#21CIcha28`!)JYmFFB$bdVM14
+
+dd(H@!*pV%55JpB!q[R-%KUfAEcQ41jF!Q[3$!2&$U&a#FpY"R)5q'$&M[!d-c3d
+
+q*!*Pqm$iP&Ff#+L@ZiF1e!pZLhU2MKhI%rX!*b1j*K*SNf3J8X4NJSb(V(AGa$N
+
+AK11CMI0EZb9`NhfJidAEGR0&&DRXp8r9pecVHk*!2pU&hC(-#TbAJj'Z!L1%(H9
+
+"A&d"M"1Tr2)B+-Mf!"6A0d%,%bRZ1fr`BJ8I(4&[&IIRYbj4iX&BkKkaJT%kI*0
+
+-*,Q8Fc5&$cI(D33I$k*h0%',L&[UldH#+9B)CSV6f)T(F0q3!,9`i!Th4'TX'"S
+
+6VK45k3SJQEV"0C!!Fel6"P%GXBjk0A(M*p60pjZR+#Lb*aj1BmXp+*P'j(9Pbhi
+
+d26A!rh+l683C+X-+83mM99Sq*VK*8Sb[c!l2MN-3e($&6Z,Xaf1J#R)VJ(3k,XL
+
+Ee4j!8Nq5LJ#9#G[BJ%L"P4rV"Z-S2dGdlSk$Zq`Q(fANkKJBN!$aZ&8RK,*F4('
+
+rkNV[J$p[Z8IB*8F&rYVdm%"Y-,Hq!qEXM-Ni"-j!qL!Zf%6H`QT2%6q'(!+pj)(
+
+[J%9hXL(R!j!!!rq@BI@#V+bKZ&%KN!"1"LmB@3D4`"hU+HQaHUZrXlYX*hJiJ+K
+
+#0P"%)QIc8e4rbpKQ@$pV9GIHRb'%1[%Tb"HhHk#$`+Dk@Y&Sh3G`!9VFEHQKi(Y
+
+**%pTK8hRN!$@44RBB$UmBpJaXH`%km5#2lNKi*m6lT19FY3lrN3UB4eUQA$RY#C
+
+BmT3KqPf!K$NljVCQ[%)8a5m!0!'i#f"C'hqRG'cRXd!kFb$%5rMHj#1pdN#DN!#
+
+Jbb$H!Td[N83"CVAah4KAmj'V3AF!Ha2CqiLaSpYAV-5[-eIbN!#!(`B*6%'k"4Q
+
+L[C+-m40hA)+&lCa2X2'""%rXUThZCScMe#UJ+A%9GfNq[lql!8i+"r+*"Tj2M4+
+
+6hB6F3p#N,!ZAdLHm0$P*L'FhAAMGS#CKeHm0*[`i2!Zhe-U04B"GJck)A81QmJ2
+
+I`-ba&haA1@M+-f#rjDc"UM%EIh"[JhmA3T!!hD1dqL*lh5Bq&'rQCqe*dcXfk-#
+
+d0#M#G"Mf6'9"9!K9fQiX$4iKq$!0%"Va0I8PpB2'C)NVqL6Ak6T`Np8`f4EZ&Qq
+
+j$Qp-!cSHF)"[8#$8f%lClN$iemKE0,**EhF9eDf(``@@CBc`IVj*UKAf$[`R%F0
+
+)%)6kZb&JqMkM!'Icf6RHL%9%DR$8K-QS0G,YJ&C#*T!!`cFbH0d5p@V,KP[[,'X
+
+,2i*(k#TX3[c42KRR'eV1U&h)$M*6j'AeUKM84kVEZ*jEJ`"qR-5Xe-"FGp2JJE+
+
+dC3'SEX(Gj-,#4baLZ3qLJEdr62NG5[%@S4qSQLmmeha#!kc`BZe4@`q',`JA!$e
+
+AZRT@RGT@(&hL-i3XD,03m-Rrm#dF9@eSAG!`0GA!4%-AK%0aF"RN)DD()`Y`+LE
+
+Q)ZQ@C"rQU[#V*8BBaD,&)+lk06)m!MVpN@0`TZ+S,pTD,[RPf[NjMcD$)aSBQKS
+
+4d@d(KFHk"8%Ua)1KT(m1EZC[JQKIM3`pj*D,Y-%-kZm%JD4JP4Y!L%Smdr`JV`'
+
+&K[3#@$ajE-UU3+QfmXV5&'[i8c+SrX*F-pBJrTaV`Tk&RBqh0bfBhbJ)i@miCFH
+
+*+qkm9BAC9NDfG!+-+jX@6'cj`ELQEq%VMA-1RY+h,2apZ3%!$8H"[A"+2$JpNhG
+
+0@*4f8,A&h$T)d(RH,C!!``9HPcK'&p)jrUjX&mK9G9*-F3iH&G)D+[,"36P&ID@
+
+!Va&Qh&9Fc)1)16rT,%#*DJ#!5,T935ZMH63lN!#N8,R$"'#DKA"J)-H8J@9FUP9
+
+XGL12PiR0Q3l#RmB&UFlaYq2IPh22BA#&B'8k!(RA-AU%42+r5"j#H02VahE%%[e
+
+B4MZfNf(I@IcfjqrPVBP8NBm$Y6iA+%RE4R!0!qkV2QP+PJ3,HjM+3hm-cTjGeXq
+
+$JR@U8fjlF6Q-+@")T)[fX8hXTJ)Km#pK0NPPCAq3!&p+bd1E`MFjBK[-+i30Idk
+
+5TM43U4lfJ-efdi8'XJDmTNT5)53dKE@a"JAMSm`'X3c1'J+,2B96fR-'B(LEpP@
+
+LED'(Jfc%efEBR"cY-j5T)'-B-qHcM@+%$k!c+G4MG$(!VbUX($`AXfM`1&d+)&m
+
++J&hf+9J#F2jVPaPKCkCBe[,5Z(4XLP$'MSU+f3#'@*BDX,Yq1`B)jpBEPL@HC)L
+
+)RdHj*qGlYbAB@dlHI4&P$mINJ4XmdSTL@,L8!$jY&C+ql6Zi0U9Zk)`-221+jMi
+
+&$)i6kKe[,U23pQK'U`m$3L4h9A1)TY(%'G!a0*+k09G5&"8"$Sr6M0%!&ZUDIPf
+
+G*+0[%TkPD(%+XjMp@"e'QpHp$EP6JB,I%Y4'YbIf9fE1`@@B9m-ZPDm@568A0m,
+
+L)$c'kVLKIQF*#Qjaa8A+m+[60!''Gmf6@ZdL#k1l0*1Dbc'0XZ9U-p9$C9ik@'0
+
+&&iV82"Bcm5!N[p%&Mh*$bMPD!hapm24"0qmC$G)D,LVM35U(1)K2b$Hk$#-MG4(
+
+)(qCdBpS,%1)HSN2`&K5+K@i"Ea[dFi2MDV@%ka#lK"EckI58PK)L)kq#,,#JZ&X
+
+8FR,-*,m(MT!!G0L1kkiSP8Vj9(lF`RU`#Fd2Ilkc`k+pNI4KiRX4q)Vl&1XP9)r
+
+aMmT%(SdE"Ah$6Z!q!)@(2h56@0)QC#'ZPEU6F815`4p*RRpr3'EfqNTBRXhXXdA
+
+%B&`!ak2a"jjKh1kQPQ0V9$USf[5fa")hd'3Kj#$mb!&L+1[!e(SGSdQc*#9Z)Q`
+
+X8,K#9U"pMA+50CJc2JH[+JJAjT["Sr#'`QeK9'18beiYYkC&!!arY#"2LAFh,N0
+
+-i-29I8`D"b'M3+j[I*3lNkr!"'HqSpdpMh,[r6G&d**'BTDfcJeK)f&"[VRH+N`
+
+e4+`,T0b@J%pP0l[2#89fV6X-jD`d)GdK(rG)BTTIFDbAJrN)+B-bV)#F%lFNV*!
+
+!llS`aCmEqKUYplMF2-m)j15@!lR*2@jK-HGKqA9)bKYe)+GMQd'YNlHmM5dSZ`K
+
+,KK-,15LNYhj,B%`d5!N!r14S`h*IRpaBEV8#I5'1QDJ#8*CT9p!(UP@@UV1%@1!
+
+'cP8k1pNJB05"F)%p`'HK1BZr@j!!BET1Fa9a1"QQ4&BTpBpBUBX68kj!mI(hAKP
+
+)"C`IPj0kX31(6*(KR6'b$fX4R[5dK[@K#m-Bc)2,AKF8DG-&Pj6A0TdKT-kQTH)
+
+6LMR5V39lXCE'i*EdX"rM4hP)G"HQ!#l$eYZ%(ec0FPF+i*d"CHXl3YIEX+A6'5r
+
+9dmi#KKKB#M-1!r[$DVJTI8lPYY"%N69Q5'#PpE"!k[NV4YFCFiF2-$-aQBGU)4B
+
+``@rdD4`XXfHiBT*JcDZi6!SBG6),APRf,d3NbLCRc9UCrMMccRFbHiY2c9kL1iB
+
+bJa2[iU`IhlRR@al3GqNpa64rF3J'),%CflMX5KFB,k%%q#35rQamST,4%$MQ(i0
+
+UkXRfE9&1FDqiI3eJjlALMV"fj@jiQ)e-M"KJD`,3AkF!MIY5'S'N!A-r9,ae$XX
+
+iUc9K9UQfkIXR2'd!*5clGhc#*Jk2G$$XpblZ268AM2YI$`NPX3f%(VJK#0%)iL0
+
+i4[Y!5-H(j-UbZ4(2F9DVX-kB)iQYfmMb@4G(KJCD`Yj[%M5Dkq[mmXqYbLSGkkF
+
+U0`+%LR[%qZ,$0,b!)f"3"&0JF52PHj5SK-GHKi%Ph[Rc4r-[Ta%-YLXN4jc9eJ,
+
+NfU`LIQ+Y`rUr!"icMMhX58c'#Gda$+q&(5-U$$rC+55df#!H4l)c$*jp,a[)Kr&
+
+&aL3HqLDR%Z'F%'%mi`5jdPb5#j+'hGkFZ+5,[XZf50ikGkjS&)J,Y"e'T)ASTmI
+
+r4&LIX+3040L(VSG$5q#bf49QSAGTeV6JScX"!R-S(42bAE$!KX$MZ#F0X!9C#)+
+
+A5)JQC)i8*#hK"9i"Q9SQi)&f`&ea)M!BMQPNI[ABl5$b"M3C4JLDj'V36rTNR0$
+
+a%Q*-eiHd+@6qfB[a[)Q#Dq-5Kap4V%cLiY+h$*SR+GJSrHXbA@JS2QmciH!*#b1
+
+'caqh(83DMXP9GBq08VKHHC`"hb*kpph1B1JKmm'AXa*JH@5PCSQ'iJ)hULa)Ucl
+
+@',a#("LrZ8+'2GLY+&p!P`,N8eT4BLZaID3ZJI%9pU#J8iHR-pf-NFL5fT9&U4K
+
+lZ1Q#4KfIAK$mN[IB+'91N48)"lBEA2U$%*H!XHq1LMk8b6[5Rf)6VhL!U)FR3+R
+
+VQlDe,I*0UeieAKR98iVqQ+i&k3CY)fAqHdcEqlQZk[!C%F#$"8i#hB5&j4mJmFF
+
++RFY(`2d4V"4i(T[M"ql-'AI'S9qXU&IdieqVhqbU6TC!9X$plRE"Gf`ppUmEi'p
+
+Q!lah2J"L'2A6m3YhQ&q&XVJSlf`FHT!!8KAR8TaX4X*%NNJH,TZVla6HhKH@R'k
+
+UTTR2%UIGD*mNT&"dA")Hq9ilK!T3,YF&abEXDa*+4LC9B9+28R,--af5IM5,8A+
+
+XGbjd+`lCJ9e@BA)fjc[P3df58QeScfmbmD12$Z%idPV0Qq"LV#Z8&J1JU5903`$
+
+4CNJpYU5-`iq,01`jBAA*'6&'-l&[Ph*I0HjZ3)2QT"c&"p6GfHCphAj3GGhe*-V
+
+Q4j5RC%[(%8!,&,r"Y%$,@+'fK`pXE4[+[H(T@5,C$-BTS9"*KkYKX!!$h54`iUH
+
+mL+QZNHX!SPme+CLp'IXZTNiX9KjDjpI5[S`cm5b-X)@kc@d39q)-D(B,J"IF9dY
+
+qA!UrAAFQ(#4LZ6NDDF5C3"j2d+0@2SfKbIL+-Y6,2q2lS+8GqHIk0$+V+$l%R*1
+
+i0hM1G46ji3V#SR!R1)hm"$55+ED8M1-6-[#6Xq#[-TK(Jd'R$PfaA11*6'-d!4q
+
+IJU!J9*!!D8BQ4dif`l1qbqTCLfNcq4+Z,5KNF)RB0'r!IAN4ljdR3-AJBA"S%@5
+
+3!)HBEEJji55Gj(BRb-A"lqMH-K&P#bPle1a!p$jb#Ek+C"T(![Da!4S&4mV@L$-
+
+[Z!9lGj5mLhe-%XUUSN6ZlU&*e29c$CjP3!6bS)V8iPeAF!dMZ))'8dc8e+ZV#+A
+
+-*9Zb@a6Yq3D8Q[ZG%ZGei,MG%H*$''ar#(D9$)P(`Z2C3XC%hJ51j4bEqTB[3jd
+
+Jq1UPk4&C0!q2S4`4A#-8l(&"r,jrdN-%X#1J#T6V04lDKZ"bc&3iQjrk`@)$hH3
+
+MA'kG2%IZjV808!Ul6EU9j%bFP%N'IeCmm--IrZ%I@5U3!$%MBl$#+*2DYN&(mFM
+
+GGrYJ8kHNRd22FSGQiG+$D8STQ&af6dZZCCNCGeC+9kir26TDX#F)HPlHDiY2jQ#
+
+&*ipbC-Fl5el*aEI'A4YA$YH2@HYAZr!%NFl+Yl'LT9J"(ZX!cE``Z[H,jV%NASM
+
+&*q*53i$kRJiI@j!!MXa0bIcXYE-NKL89(8UlbkeBJKRpiC'c"hX**5&!Q[R$JbT
+
+S9j)Q8XYD(Sd!fjM5$K82D*8-6*!!&mFqmf3Y6dlMJUTr#h[S6Xl*YC`*r5eL&6H
+
+"+eX`Bb-U9KFXhm,5465-2X)3T!6F#'rh(9KV,TX)HX*hr%fT61jFK(BQrL8@iKG
+
+6&U4TG*Z`KG%V9L3V%4&)!`$(T6mKibN'5j*NZSbp8!1k10+Vf8VLQV$4bab+S+A
+
+TD2M'1rTfeD`C%X58AC!!qq)0l1bH2'DarL9b$SQ,f%Hk!dAa)3L8BBF8Qk"Rj8A
+
+i26"18#1&i!F%+T&dfM#L98-5-5F*aVR&QEl*@C)-#'6`'Ir'YV"86Fj3PLf0E!q
+
+i[-lq5#%bp)R`d8hc-P2m3*STB5Rm$f#hG#jCkSIL@M%9B!bS[3bV8c-1P4c08qS
+
+BJGG3p4(,hUkLlAhX(!C3+$8IV9%)"[6)*@JcISIZTP1-RaJR!!3F&$1j)[q41fN
+
+(m!4a3cNQQ+@8(84TeA&jhHeBQrMYhVDb'Jq9@8FqIX'Y8)1Q"b4-hB,Rb@L62%L
+
+F)")QQ4)e`aXFUP(P$iE3e,Hb39hp0cB63cQJH1TrH-L8GCJl)eXIX0BN1*Ua52K
+
+X+F2fc"BR@Y*p(#PR[NA2km``4&aP#3NT"YG#Zdb`2qDd1mq63rMr5-iDD&M01bY
+
+1rCXG2#4",IC[FQQ5+MGBmE6)QL#l*J1S%"fdK4KZDdke`J--,GiD0JfA)9EJ,Z"
+
+F%#N3(if`$HFI#[`bqd!B1b"(hN@+aMr)R0L5LSUTC%"pk%(9F1SX%PjF"#9-Z4`
+
+i`B@($&T"rk!&#&TSTH)8"@C*j-D&RmRYiqVVF23Lj$+TL'VPSkjH9MT9(qfjC4R
+
+8emdSef*Ij,bk9-GKTcM1eC*8%)lTRTQ`3jfVQ6rbDZV)p3#SFIl0cpQQ,3((m#N
+
+I2*PXNcS"D3+YN`BRiCjTD!qT'ZTr'aJqbm$llL)Hi6hc6&a$jB@"cEYRDi*&b8B
+
+RD%5iKS1&3GNQdIEFJ+VGZ5ReL+d1))$K,rlBdU[ee++QB)&mYN@h9"3J%(Vk3-Z
+
+Mp4K90(!i9hRCU1U06@1Y6K"Nj)%4EN%XZaF5#$ZK!8[Nk4YADp`'fTAjj46@!L4
+
+biq4CXY'"SjJD0Z@m4S9l%@`,HI*PVBd1!qT%VNh6iTqG9L,)0F"+"&C8@ZAr8b9
+
+KS##Fc#a(f1i'%SjICApPfBM'DdY"!,ER5G%2*[X3+Eqb102R@dl&C)UDdP%c&JY
+
+`2Z%DXP&)6P)Z'%2EE[PNJ9N@I34ahb-3karV4!9(Z[V#6AGm"$f@jX(bM0ESQT`
+
+,(GJ+(!K80DUca-MD("SYU()k8JRZGM1)"4Y``bjD6dH5QQ5D$H#f[#G+[8bG!%$
+
+U#-4"m%5@1)d&XIDDLMZLJI")@kbD"K*Zb&S",D!'NRjfMUm`255hQQkc+qZBQl`
+
+$0k#$c5eUVr3Nj`'KE#68P-5aERqB0X')MT!!b2bA0paFk86S*Me)#!l2DSAc)Kb
+
+$$9(9NULp$A9!3"'RG@3S3maMARZC,jL-imMmk1N`a&H"Xe"cQ$&QN!"L!814,0p
+
+RPDQ1J[(j)2-'-Y1E2c9EL+P,)H2AM9C)Sh0'cVidfp`"A8(%)4Dcc+&BN6j@9e+
+
+(`GHGr*QkYrR+kcZ9ma'Q,DfQ-!kN#X+XSM3Ej-bCE1LV-p69-U%RV4-SRC)T3T'
+
+6SY`d2*1KI@*RELE516m!Cl,9$@N$p&03$k))3$1m8Kaa6RC[(JIPGL05pJTYJfj
+
+8"5),!H)85lM2BcmA8%[Lf2GL%6mG[a6VUdVd#K2B1NG1B#&Fapi@hSU&6`0Nh-0
+
+Z,K@JGk-iXhT!pErSJ+Vk'"D[-ZUKM!,[CX!ZM&XZQI4HGJ[FKkG@N@!@Cp9")C!
+
+!VVI*T"4(9a6N!R'IDfR"JUZT5kHd"N'r%T[bEIY$L4)mF!dPA(DrYJHZY*VkpIG
+
+mi+TYV0'fKQ)PjB'rEX%cY[2eY&5)R8IEfSPX4BplP1ap@XaSjbP'JYF#HP91K!a
+
+dVrd*pdFqqIL"Df5,HkYLA*r)'`JjI$,LC`q`)XH[VPrJQ9kiHm+hH0fkHL4'[!k
+
+Ml2DfK59A9U'%l)ri$Rc,)&Ml$laTe"Ul@eGVA#!"Ma2UR46F(KADVk-94($)*)2
+
+!h3GYh,Y9!!KES(iXP)&$kC[6r0FCVA$jKIjkQ8+9*N`LiX$G5FEF6C21`2fSNe'
+
+VS6)G'AdN`,j,ff+!"ATCD,G2pdLU@if2q,(X88+(R)5RjCrBj1`Eqr2T-UflK1L
+
+3!"@AF,pBVM&LdedjC(+m1I54VEUZ&FjE)9L2$!Diaql,eSQ&LiZHljljT(*cP6)
+
+0d`rU1F5-`dQ!'`ihX[03GbGNP%F8A*'8$$jJ(i6,$V+a6-SZ1XIVM1YjqVJH,L$
+
+Mjk@rbY%p2E6EQ#C[5Mq@Uq*!YRc(SX2GXaX+2'r3*iGXV0+,!qV4TU-@,!'NVeI
+
+JbVdPq9MIMm42,98d*@$N-r"XHp@2&6b2D0JVKLbhkUYdkKCAqh5RJYCFU[eDYUT
+
+*B%lr"aJIbfq!&GC3fJ-ZQMda4mR5j+1ITLLdP#L#X%QJMS$Ef1%J4Em4#(585'#
+
+&G&QI6M"TS[4'`(`'9i8CV+NQDmSBbkN%G%*j1dh![G3dYU3*eF-qG@#)(1+((M4
+
+TKf9MK#R&&SLClE14mNbHKU91X8kBe9CVTm!D!%U0c0A5SQ8Vc@MM4B,MrZ`d#&L
+
+kQSfH5Dfi8lJRN!!Zj$l"PfK!jA0j!UQY4*Q"'p)C6KZTML@8F1j'9Q@6cAJJYa%
+
+9K,!BNprmPX)Xamh*Iibi#%aXVN'dcA%R'*j%Y*L'eRQCQrKR*a!Yajf9dj@9H9L
+
++#E`I)r,PIp,PI5S3ZFBIr4,cGfqV88#YS&N4("+eRf,EH[FFhH,hJQmqR9#0S2)
+
+Mr&Y+mJ[5NJMq0RRS-`LdELSRZ`J5aZ8Sb&1cGj!!BjK4d0!'Z`hRC-N0QL#NBQj
+
+NjLZX38c1!lK9RmAQ'C(j6&%IHYR6)iUr5-N"%(4p44hmU!,2aH0PGFZjraZ,BQP
+
+Ic-qGSNp!lKVjMl00$m39GBX3&Q@99"kHl-f,qAfC%iXIciK(qa)JLV,4RlVT5*A
+
+EI#Pch)HAXeerqkBA2Aa@)fk520SAhl+GG%f**6NFfj@EPM%Pmr+U9(VH2eK[SMX
+
+$Pmi'8(c'p1kM1P"9J0Sh!qZc@B-IrU"3l#feBU$cfClkf'34TV0(MKJ+q!'FZU4
+
+LfCq$(m+KE0GD,bH2aIA%!9+HASfRj,G)%2eHVXARkr@G4d5L2b3*-(c1E1bQHX9
+
+e586XKJVRBRP4U*,h@,59I$&)PbAe1mRL1iLpmr[)Xc!jYD,,dp13!,-'NPQF4[a
+
+Hc43fQYE%LrMb*2i2YKM#JQ,l(ZL#8`5+lcR@LpbCA2R6$D1h&qSfe5iqqVRXedE
+
+5CVpIl3-1*62*9hS(!qI0B0r&BYD8&Pme"H,44KR(HNCQRP4*0'd0iE'BD0aIHKV
+
+-!b)*TA-eU+(,S@&!$a`@Di2"miNRiI9@mhE+qX#HY`32(%b*"bJe20l"PE@l*r$
+
+!9E2bmRi#",5M)p,""(MJ3UYqqm"IYkbQF@dKDDi'ZhcG""4-R8CREmQI&KUYBX&
+
+5T0@[9DAP--BK&T3P)(I1@JT[kbcNiFC2ml8hMLJXCMj"craFp,2RF`%),3e1f!C
+
+`1DT6e&!04fdHc#HRQRCMDhfUVFkC*Nd(pFa`9%3B[lB[,k`%6rR2`ieGqiYD2,5
+
+SX0[%NX3FqTdek3$e8&`cMF!1ZL`H[FHh*+j'*UNq4@d0GPH5ha15NKkS`I!TBaE
+
+HVMSa0SKReb$DaHX14'P"116,'5JYQUFaAZC6m&(@RC()bl1dlh!K`jR3H@lPepJ
+
+K4r)RMIFe'8d-8*'ZpkK1$4c+@MUc2pcjI0I(KGj(G[G9T02E$kG3lFe882b1cK3
+
+ApFSQU90YBp$Q0b,ZNA!@'5#EhM(KSVCq6f'AIcIH3ilMMIep$Ar5#C'lpXr,)$G
+
+lk9IcA4Z,jjU#a11h&@`U1Ed[+Z$+B#SSdj`H,&3c*$%8ZB`r9Td-m`M"d4aXKPM
+
+2@-%X9q+hT%!$c$P"V,`X1jPL`2AKeJ%M24QDIA"lHJJa@cZ'epIrjc6XpmlV5eZ
+
+eTlEE)UCASfPQC'Kk0[Dl`T8H$EGJ"016`L%jZ@kBmZbU#J'DIh&l4J4b9Y[Ckq[
+
+rbBhb1)m`S%HHRqBpa3T6mTCIrmU8c&[p19(+%jTcTIMf#!Qkp$['NJ"$#DE$m+F
+
+idp'@kHpScGNJCX*MAUrqIJ&dD`e(&L$hR!Ve`'dhC(*@aHl$5f+DGTk0ILb(`c(
+
+-HR3S#TNM5JpifiiC#l3h0-URX!VYm%'QGZd-0'1&`d#lQT&m&Y0aYU@Ma`-jlYX
+
+EPrL0D'X"EHRdY,U3!'9l!kXY'L2$[Hf+[(X$Tf'@LRITmP+"[320FJD+cbq1QP*
+
+NJ1AKADp6rF"bfIjcmd#9klE-6%lqJk4G42Ni&2QIQLR)6NDci@6#T1FK3FCQ%+1
+
+Ve8AGVPb*q)5@EdXhNEAJfq(kBC2l+&fqILbVjc6rBNk!E)1HLmbMSd%"58"l20-
+
+A&bXcq6HZph"ak,f!)P[9AD'IQlQ#%eA2kHpf''8clGKdCeih8XB`AfPk96[dY'd
+
+88)UeQRKG,[6TJPHS%'&C-(rZ&SbCrZ8qphD,%4'l3p0L1Y0mPFE*d$2-VAHMc`i
+
+QN!"lRS5Tb1TlkL@Qh%`GchT30Xem%TiaTd+K2Ah)GT8(&)FMGiVGdZ(Y@%a-hSl
+
+rA'l(aM&`q1hae-*bUTh#ihNeC8MjGH3[pPQe#1T6C3DQdHKeih2&M9@m+5ASid8
+
+Qaf"5L@kBaD2LAY*pqmH9YEXRm!$NL3-25RbF6lfqrRP@2[AkZRTPIbIq-GkjfQT
+
+XhYY+VPVAPT&`M9aXAGY1q-!&K,[Y2c%2br$YN!"PPCrbHZ1AlC`&0#LZM$0qEp%
+
++QXHjX$&G+m2A3e)8+S"*,BVB2@ES(FIdILT@ap#qe)`JNaH(8CDRhNH"*He@HC'
+
+e8&8KX86K0S@82Mb#"L&ThI@NLZMAj5R`E5Z9aHG4*HS3"iG$fqEcN`-VAc4@hae
+
+C)ICfD-mC`HljlGkE-f%`qJPlce-F[6p&2iGk!iDXfl!c[iC6A)5kUIAPLh)0%#N
+
+GZh8)6l$''R6X'*%DRl6JUQ'GD*rl&Y9'V[&*04I+bmGNM8ce@4#R[+$A0JcEDM8
+
+SCf[9Sb)TDK2(`'E'990KFP4L4#,M3d'bh#E)Yl#FXQAipdISXD(Si!#aS8"V4V!
+
+Sc!S0DkcQja$3$NH'iJ%9bFZD%hG(%,3H))VB%V5MC48(YDBm5Y!V8`S,8GH#1dD
+
+T#E6dbeU,(Y&ZZEaU,``"V05p3Q5CZ,F9$"'E(+@lc!&j&'J0J`C"9Bd)#!Rke@(
+
+X8c#"fD-K5HIpi)("kr&E$%PPrN[mq0([3!!)pUXX@mD)rbGk-(U!hH,qL"lSbS)
+
+&Sf(5-r63"Qk&-MA0dZGah`m14NQ3!#4p%(Q16Ycm,Yc#%C,(N3&!j'SY'(lP0Nm
+
+`U'0hq8'23lmPd!f3!&l`jaNm-C%*0C!!FUI@J-K5BC%bISXMm+Q!ah8JAe""%NF
+
+rB*TZCCX6DGIr!@B()&'QE#!"HhS"#APNI%&9j"C@32*T$1B!-Zl&d5#6Z2PMPEJ
+
+a#qrVeKXkY5))IXIqch%TSSQ")P+#19X@J4jU`p8ZJ%0T0df5Hf(M"&QJmMQPQ&J
+
+PNfMb3$1U$@H@#Xm'mRQp8696Dr"YPa1%fTeGjJC+(T93Cd55-,eblLI8!8Sd#rJ
+
+q[%%P+IS*iVGkJ@rAX`2mV4BVZBAU-U1l'45U4@"j[GpJp`BM'Z1V'r4q-96$)lV
+
+9TX5*V,1"4Qp9b9URiF+L!pE"L5$bJ!3P*@[qfK4V$'&I(9Q!9*VYAj%Uph+N!e)
+
+a$h3EU2)#B4l`A`l1N!#0ZpXKaZr8J2fLI+"bMEp(,HYdPV#PH5D`YAZ3!-pKUac
+
+N&l#PYfSL6(-HH*TSNlDrG##JaEHA)1L$2rG&HSr-I2b!FQN1Sb%ZEY@EAaj3J2[
+
+"!kmEC,Ymp!)H@$&q[$8DA2`46e`aYPB0qhD'Dke9R!m)rrBEH1#YeYF*@L6mNq,
+
+i0GJ6l%-RePY,bQqlXCk&YpQ[IE!Rd["PH14[Vhdb2`EUUH$G)mZSfVb8H28qa4-
+
+EXp1h%-pZJE[K9Q9TXepIZiLhLKAbYcqXd%bAHbZ-h4NkcBr`84K9@G[LjlC''p&
+
+hTarrHC&TppaECDc3F,5FjH0G@Zj$,QraFpZPcHMVdirrY-[#(#2%[1H5[Z24aah
+
+lETd+P,YpXQ4khZT@jcqrP[lmhfEVpNi*A@DU2[+ejdIqkhp,I[rU(#`Ib6ejNmX
+
+'@BHM,fbPT04k+%X&L,HA4SVH+6`lCI2YS@[iBJUhqXaE-k6G6jpC)P@B[k0rqD*
+
+*iRQpBCJE04cS"4MSje85[Ai&--h+$UUQT$HHYQ"p"MELIX[dRNF(34c+qMfU#dM
+
+Mk+5eNd)0[+D*YmUZ,489kS+V+"@(fL9!S@hUK6kP+K-4H@U`$c@JjCp#FBG)JT'
+
+f+'FIP"VIZqACANA%6lCZXBGVKRmrXAf2LCGNZN0*TlI1HG'f8ddA13$'ELhiHM5
+
+`RGR9B%l6*QkkXY'HV8C$Vm1*L-'3!)Gjqb(,hkA@5'ZYh%pR6GH(kI3M1[LYKKK
+
+$GF4#['BmBjBCC!FbYVe!J)6h0G9B3MfeJC1Xh%2)N!#hQ@`J@3#)Iq%pMkQ!Y8m
+
+Vi,rcHk-m2Q3ANQhI[(Efc42%YjGBS*V0)D`l'TmPa*jV9%`6hpj"K`#V3Z,0ICB
+
+b4hiTdD4J$[#A$add4e$S[T!!Q59)@,ITC0,ALId)S0L[8,Xf+l6TI[88$YZ4GDf
+
+*TJc&)f3pIFS-Kq%K$#d`B&T1#*5d[9CrIJBShY-ScZPP89j!%#H!lMD`J#R(KNd
+
+[Ud1J!dCp$NkRAS0Y80#NRe+M1X-%3B'V2*8R2JD&8qi[Q@-&[e@cbX8I,iMHNc1
+
+RGNVJV13ZEd2ai+UYP@'QRl"VFd3J$)13!*a%V#'PKJB$0NC2%KcUffVSJ5qHd+E
+
+FBNS[e@M$UH&4$kB@hlC#MfHQPX&%C89(LQP&XH$0*eA6GZ2SLi6Rc1$am4X&+`a
+
+JjrI'#(c3!4MXUiNZ--dDUH,qQ@NZ5)[Q+C%H!5[edG2mD*CG39fAL3A+Ce[S#H$
+
+ZmrQlS*24pFc,"%iRTjeD9)dS&S(2@ak+TicXl5)`hGj[SFRYHPeVVB$qq*6j*c,
+
+)0[VCp4jqdQkk6$dFF(lih@AMB,,"q&HR(TA*%2IbfBPq#3Yi-YImrepMAQ"6YAZ
+
+)IAb5pR-j[ThIfbAka#iVfUpr8(jYY!2"Y&mTr#Hjl#F53LNT8R@$TapeLN+G@k$
+
+C[RK0I[(eTLXFJb"DFU55eD0HLMc3+TNjUFV#jN5K4D#"$U@'HA1@FH%YqX"NjbQ
+
+jJkahBT3afCT!3)5eK&4+AC3@c'-T)DeFSG@VmMd1GEMUc83I0#K8U(CXcBE%rda
+
+0FN&KD@j[Aj8r1lEmr1Fr[AJ,@B%&3rc+db5$!frHLLqG-RmGJrRf&8,HVGdRb8V
+
++1A`!&AS1hZ#)2pIY,c'[SN+(BE9[EaXfD5@2NN,HVGHr2(#YL8jl+0qpYb59KhQ
+
+mCLmBXc["GXm4R"C-#cb1kQcb(lE$V4m!MNUd0ApY`GBBjc&VU(AATY9rDZ(c(92
+
+-Ujr(b2bFb3a@m@K'!+&BXa4-iB1UPN0T$9m0#PZQE`dTDLFJmRRRXDJK035+8eG
+
+e[i[G9m!38jCeGrYhYKae2#pcYqMADQialA+IXN626iEi,b9GGejLhpZCT5@U'U4
+
+i)@m!8&2RDrbFAe2ST#ZblUhhlV-L2T["@6NMf"Kc*Tj&Ba@eRlTPreNY6EF-j0#
+
+F8afGCVk$1X'mBe6V)V483C8U#UKaF288k`d#mbI3YmLF3YQdlKMcJjSlj8-GKA'
+
+5Y4H4qQqTGR%85bjcCGVF63pjXbMVLUCVV![p%DLJf[Q+"1EDhkP`ABFJ&6SXBd`
+
+0p!jBKFiQ5!9rV*`#dr"`$XkU(%MZZR4fUNYe+6j,jE0BpDaq4AC$bZ0-T8DcG&d
+
+MI-R*rJ*@pRIYp6"kSA1UFrk6S0Pe8r,LdL'D4J*'D@jL9B,XLY`He%k+,KK[q0#
+
+2QYhJST!!"'ZiSP*h,hG"'#Z0i8`#c99`F*r9*)YqFMR5qU*0+"bYIPU!,aY+G93
+
+RUq'BI8)VH85r28ZS+$3`-NGY0qfbkd8RFbqJYRrHFNI*@T8'brbLQLaM1Uq*mc5
+
+6VR"KNb3M4N-*Rh*cY4+Pd9a%XG-lpUh1[48VVhX1,D*$Y[fPj`TbkH@,X[5FldL
+
+!T8qfq(6TNaZT`RGZ@Y**Gqhl#bISV@"PV8+bI9$&ECrXX4lLX%hbjhA1[@S*IT9
+
+MbbTi-8@P(J41BD4+!aV4LI%CDi0DLcI48rJfUhM4E)%"[QJ)6,N4Sr)MeEP&I8J
+
+V+'Ge&ZNFLP'mcA%A@-Yq[2EH5C8r#Mkch2FkX`TIN`)e9Z9h!dNl@&4`+rF+qV)
+
+jq$SD35)'iAE5KK"I@4Fq1%d[cPf'iA)c,4KChEGGXCmjF[J'"V!'UYDCAU9(&A"
+
+XRUVSXeDDM*S69UYC(Pmd+h2M&[Z%'e1a9B"JjY@$AX)k+!hB+RGji9(TU(PfALc
+
+,'M9,GNV2(mUkSA-X6JHG[p!b(Z8UieS`4,4-$bB8!kNmZ*j(E9kmGPI9lS03l5&
+
+c#49B('[1iVm0H)E3#eTPbM0icAe$pE$0UP6j00lqJ(fADSUb!@rC6q9T@NrM%`3
+
+a)j9ciFhVJFkXRHf0aP[[[-Vicm%PC68`AP+UCA`+E$"RC'c4EKLa$[V+kh%52VL
+
+lXLSFp%fN2A"$8TqmRRp1[chmkB[K@4-5Dr8a[ESXA(qZ5@9bGekBqJ"b-l"aH5P
+
+j+qQ$VXVhm&3l,YLbA(6d+bm8aBP*U,Z0RHdc&"8m+rNbqV9X@B-FdV"-br*#TkA
+
+@I3qX3Mp9$5[@"ai+L"IMbfQ*+58qV3ShUZlaqVeBJbP*YSqSB`FVJAACFH1VH5I
+
+a4Bi5h3JReQQJ88P*LYI5YCMc&68`EiSq"I[P3!VdhQb6DVMYXQ+LrBc`2jaB5#%
+
+m055efkPCZIK*HF0AC`GKK51*m9fh1f&JEFNQQf(BU5GP5@aKR9F9"f&qEMbaV'8
+
+p@MdddRUl&Uda$k8,GTd8681GmqZE@l!ERlr[@GBe8)25ZijZ*!K@XIDAEKQjEZZ
+
+e"Pj%@H#GeQR['"8$iqbh6R[$4,2dFj8+M+ilCF3`fK@cTPGrHf4KYQK,B@D[Ef"
+
+DZ+hlZ6BCC[%(f%CjefA6UMpdD!SKIAj5(ZhRe[EY!h@44RNcLm"Nad8@JCCb`DJ
+
+h0kYdYalRU5ka'kKKSmE&SEB+h$fEJ$cdMXSNXCTjXVcAG,pS[qNNb5ZMQZ6McH*
+
+C`4dGeb[(U(K@IN+2V[U"&E6$B$'%"S0Vq,C$m3XNUrQdET!!D8cb6T0+@KPp&@Q
+
+m4`i4)iMB!MD*elcjVZAr@#PG5*4hI'q%NRGQedEc"1`5Gi#48BrS,ZS4VEUMT0q
+
+4h-daIqfL"f#rXG)0aY(*U9"r[bmEV$ild2I-YGX$$6RFf*FID$Cd0I8Abd+-9LP
+
+8*GF!Mi&A#r(9+%YrXZU-kMf6mJDJfeYD,,@p+(1Y0TZedR[#3#K6DphX`PL0S6C
+
+9kJa#6Cd+$D@@r&`plZ"@h4qqHaqp*q![8lMS@dG'%q$6me,,XiA)DXe4VBN6eUf
+
+GMC*eN5Xe(-ZDjVNXQGLYbJ'fM!XcQkQ$BYb)UP-EpCd#F#Y,9IIk$#[HD&@Vr1j
+
+KV)J%H`r6dJP%))GTH-Aq126'4F@@dK"ldJ25V3,C-$0F@HAQSK9U9+LNk5H1*P-
+
+r@b[#BA`3C$51KL-TmJ'U+%NCJf3m1eCXZX@NiDZ9"DFrmfih*PNVY)J`qm03A1i
+
+Q6UAdAke"2%ZUmV6!!b[e`cNZei!SNbhapLel1I-1m**pc"1J%#L9P5"i*`[cD'G
+
+EY54q!3i08SLr1N,DIPd)5Tbi#%V$Vp0HM5CkAe9'PP&KqP8fQV1LFr&'rpQM[$j
+
+%*h6Z++XkEB+++rpH8$eDiZ1Hd!q[e%*V[9`TFV0Kk*!!hG#%eZ!UmX'1%Se%+"#
+
+G1Yd&'"c+2,2QHXP1cl9mdk55GHJP-I8bQT(5[Z2LC[G1B*1r%6S-KRfG+jET%CI
+
+$KhNXIkC!J@%!f6mYZJB,6b#!BR2H[(iX9mpTiYE,EdF!h,5-$lkGaY03K0A[V0R
+
+MkXkclC`)QlT&B1UKp&j+AMaRVdLDdVj'DDDMd1`aTYGPA31F(*09N4p`-mq9r(0
+
+C6cik!e9+`jUE4YZ,Vm()-6H"4kb8[MXqS'D*9)!1J$2!CS[1PpiB2L'QGh((kT9
+
+INi&#fGJ0(r(@iD6`+!r%&"KA&UP*AeGf@Pj+aY8TJ3fTa#cC&TdMT$k3!,(AD4b
+
+[!0T,NGCRee`Nf)iG#1'"qRqi2fb%G@jK$q%NM!5N3X'k@*1([9abeq60Z""bH#5
+
+GV(JF!"809LhlP%iI'c(-%mDb@CdE,4P*!&RX$rj(@X[@BCV"%,%1*jrShJV!*M9
+
+(8cC9DS-q!bV2mURK-G!K#rTD`9rF(bKK`JH9!"%m*#QGEpN0#hE'[V89!S1f!YC
+
+*YEdm&4P$lN"%a5[A!!")+k0rj"E@b`Z,S[AbF%*2b#Ul2'TEJS@*'c3e,$)IA#"
+
+',4E,5,8XaVG#9K8$+`lbRQiL*cj4fj4lIB5fGS[95jLJ%5,"lD($(@9EN!#aR83
+
+U&*bRk22'6U$0c`MV`T8&+PdF@IbaZV%`5I#6mYX4"[a%jA#L%90Dd-f2AL5S482
+
+hAX-4Gbqpbe)bV[,dK-I[bXI[!"dJkcAY1!`5HiN$BCKir)$h%pj4bIR!IVK#I@"
+
+2L%FmaqAUMF!pepP,jHVBAkHfjdrE"81@ZfGejfBIY(Bi-HR)VPk!"pqeX`H%*VF
+
+5dc*&JYemYa8*%CQ)"4+@D!Celr(-AiUI86Lk-&KPMQ5dAAEf"6'`G[,Hc($@#(p
+
+5$ladc@RlBR%Z8!ebbNJ`pcEJr-Lbl-(6k&`XMTq*VpFX4d[+(9,6*mN6meR&"@m
+
+4KGZVeb`2PiU(cc)NkYDmC,$@i!DD)0aZD56,KU4@Tr$'20J9Rj*pl8--C+&l&X*
+
+LV,+Z$%f06FJp)C5F"rT2)Dmfl0B&4aAaR,IS-3fX%PA,-Ad"A&hMe0N(M3h&V#0
+
+lqkr!9I(*Z%l"*kpQ"A`+ClQiMbYS9PkZHM1lpZqTTT@'bQSVY`e&'1SE+0+LCe!
+
+N1"LJ5#Ubhl9h`RFSfQpkV49m!8@+DV"B#rU3!#9Dfl0UBNR4TK8Apk5-#PmkR`X
+
+@R'RK9GfVU9mhd8[E'$@9Qa'aI'JRJ,12m4ECHIH-Zmb`YeqF+HDq@VYk*Sl6HM'
+
+Y5TfQXGG6kEpjK&2b,-rU0ZaC%cllD)G("G(T&$bpm&6)i(2f,F#9C`j%q!f[*YS
+
+1PdjVDaF(a5JmYP&`Ak%DU#PFBbRGRMF+&hf2RFQd`5HT+$(0Y4U%8iG[JcBf2`9
+
+j#ikB8eCQ'"KV`-fXZ%AbCN!8BEPrr)Per0S,BK`kA1klc!#4*C*+'cQ)EhT5i"X
+
+j#S88a+*rc`[mj8CZBH[&fA-6P[c@*l!BQh4GYk)R,Ij`$*41jqJ2C,AbL5QI08Y
+
+AIK&F9S0*[CTS1L1XeARXf@C"(2iLDD6$T#GdX`YYQAe`k`*C11,)VRa'&NH$#[I
+
+28DD+`K9UrKNGZ)Q#$Pc@A,diK!BE@J[YKLi9m&(8r5jG0cjMp"%*a'eNe0)6P$0
+
+M%Di-4dU598$L5fB#+1++eENA65f#XR$"BJHm8Aj4("XEHmjL+Ak--Rb+U,P*'I1
+
+jihS'0)!A5ANpfIN#BNVjYrNAYfCeeh*51[m!0IEh!QmX&!CIXi01E[Y,b+(lVEa
+
+i*!(SA2Yp"Y5jpMXLX,0Rp(IS89HU5RIfi3H-riir042`eqBQ`$MKKD#KS2kXflc
+
+Y1re,3m'l''96Y)EHmARLNIX-!3Z4%Q,ij21JVS3B%PF3-hU2[*KB1V"PP[m-0X4
+
+l*cqJFHU2S`&#4`NEpXdYr+iF4h2eP&lr%#X5[ZT%T2Yi!rGRhS8)eq[6"YaiBbh
+
+HeF&p1C2++Tq,rA!'V9,T)&D&JhV-hra-Al0*LaVAj!6h"h#[3FBQY#"DMd#R)$5
+
+'AmjbB#B9rp5P+mTGZ-rD&!Bd-m9ZDk'drVk3!2HF&Um4[kSNK9$G@miBh[Hj1qN
+
+,Kj%D2&HUTkA%#kc09K2)j@E"[YPcDB%mkblEHSK%S&PClQ*$%PTX3k($0*0!ABe
+
+8LB"3E1DL",#cjmd#9ja*d)-RqU0N'V1%fepf6$I)9[AqKf+"84I!keVUVf0driT
+
+(JC*5,1CDQqrC[PKL5JETlELm+IrB4Xk1C!Df&kb%GKSmq(NE,%)*c%J5K"04UdH
+
+GjGTA$!YCeM"#SU+V`94Rm(PSrXT1TmZX"r-+TpJ(JDT'mZ"lq)U4L)'F5K[#9GP
+
+eXPpAcdp[p1Nc*rC$*)VYj`eLQZFkY,DZpaK#@Gm`Gkj-0`GIf`0[eidD3F5HViF
+
+2[)G!Mlfi8cj`$PPEEhfD`4piYiiJN!$Y%I$!qDVe*3reA,9+3qbA"Y%%H'9[LaG
+
+Y")(a""pYmB*YVUjqrP`2['AG2@'hZ(p)rX$q)B@&kR%fVCirI-"hF0@kDY!I1pK
+
+j`AH`qhcG`Gi,2,@hefm,UhNLbri,1hA8$-F83Dbr1c5Y2rj4BNIG*Mb"J*e@B-f
+
+rk#UXf4TF*pkc'ejMXcHRaJ#HK1"a%kfd0kT+b,9CNpB3G8&PbGS%J1X&5Tr)i0K
+
+q-Z#eh`aMQI6(KdKcVZQ[M'3Ip*i@DkYB%@D(Q,dC30kKEGBGD,4"*0YINZ5G!Bb
+
+QGa4#6aS16[AME9c+h52FP,QMq"RidGX05XHfV!fc#1X))V)VYTYT8dlHD9Ka05#
+
+T@lQhdQrE!MqmNEQj-5FY5*4(i5h&`cI$F+5Xi,0"%KHhN[T6R"Rd*q"3IU*lNbD
+
+9RpMGpGrBrC9[H)IP9pjLP9-$b-TP9j3l3J$3"M5E3TN0I*M)kKN-dMRYH6N@EZ`
+
+VQiF&MN$M'diTYpNCAlGaE([Vde@#i@q3!+U4bm`2bMTM[)5A2@Kq'irEKLdJ4IX
+
+PG(%L'TX0JrKVQXC0A!f[jc3G-E80dIkkm&fiYM[iBZQ+[qLfEPrdDpH3!2qqGmj
+
+NHhF"89mZqh3"%-iq"U458qDAb+5Nq#[V1Qjr"D@fP05!LC9S!!&,-+`**K8fpeK
+
+,[C3[ES)H()T4p5MmNriUE0#M#mi#Nq!XYKibSl'8NSS9YF!q@'50dFdi0Yb4Q3V
+
+FfFH1I(JY+X#UbdA'@@Qp&N&Nq8$PR1+%T),d322&+6dBNEMARC*rdTq5$AN8!,)
+
++*mTC*FU5'Il($9Q,fe-Ufd`5+RGTmp0E+*-ICH5BcaUlh)5-hRDM*H6*Qqe$NlL
+
+hdik$Zp(,TYPSUDE14-b'8S4BlYX6YiSd8bUm)("$U4DKU@L-Ae1m*[&eZD6TH%5
+
+VTF3H5VmGc("+*ER)cL%dHDS9-AI`FD#+$Xd3Qm1iA&$%SIU@1*BpT@FlYmE&DH#
+
+$eYrUa[MFlC1BVaJk(,4FiZXj`42dZSALE3@il0HDrmQj[S#Vmr6X"+pU`D9B5bL
+
+-LE*2GX2d1@"'ELGq,r[abIkj!l[*3M3H-kN$qi+6aRJk%3jMXPk+dXN`3SVEc@b
+
+m%RTY5JIVSE-l5HdkCG0kS&mH*IE5hb8r'%i6mhc9L'ekV&alBMYeVA2Y0JNKUMe
+
+MD5EH-$Lf0Yk6F2$DrLNKMq9Uf41*6RUKi&*G[3Zr$35H(!'m#&Y33l#mZ),&&ke
+
+HBNjE%1ZL[Il2m(@4jN,,$#2Kd)'m$4PV#$4%LjTlVRi"$dBCC)"H'QV%lR2K+AT
+
+h82"NqBiYZHMi[5cECrS5R#8HU)d)fV'*LI@&d+TT4J%Z4833Bj%i3`Y0a-l,0J1
+
+#TP(8GGBbek+)@THJa+i%PU$N3J"*qC!!)GA5+@9T#cSQlXS5EdCPrGNNDhF9@db
+
+Y%l1CLXPU0Y`k[Am-#Vd9HL-Zb'ZZ22"J09CLXa[LZ@d2IhQ%MC[fQQmCR*EcmAF
+
+mA0c%[E4C+9cL3$erTh-9$*qJ!!BBF+"m8C!!)!IFep!4SNLMi$dZqi2d@aQN,DE
+
+CMkSR-lalF3k'VNcNZ0aL80%1iTjX&!*%Tcr'ljdai)AkH#90cUSDb@!k96m(Naa
+
++FSJmm`3-[5Jj2,3S"h%cID83LYF,S4kk4c22D#UD4l"Kh34'XqC0$IMNLP1)bLQ
+
+0#dD'"Y%H,XBU(Q64cm`+J3&#[lEXR1CqP5MQ-8[SekK)FpUi8J-*JF)ii*k$Y%V
+
+kj30AkKXX1"UBTP(KlR0-k1ACr+"$KDr%f6eBD!Q)&4FLVZTE8*KVd6e%4#,$['l
+
+DJ""Y+3dLXST!K3J[S4NBd6fp#a)@Q63$LH%BRU!%1RXY8-)6Z5SL1!pk0IXL("l
+
+eN`PX"&JBE@UNiJPUQ2HeXm0hc6&XVX2L,@U8jXj%GfJdh$8Q0'd'aqS"FfYlafG
+
+cZA@TVZ-9G(bbAKeS@DrrA0CVNref[4eN20e[ppEHJYYLUc*Cc[Nj(36X6"JK2jQ
+
+53N`Q8Ulh$[eL5C,Z`HeIfj&2lVZ,!k)G+%2-M"&il`K*)%8`YZIFPQlVk,ZBZl(
+
+B,NbeF2LZ**'AX#+ieEZmrlVGc!kdpPXaFPCah((+`,&q4DB#Q*9V1hbKXBV('4A
+
+G(EIVcYpHm,RKU[1E'DXl!Z#ZTm$@$KZ1%+489TlAAA@S58F6A(8ZGcMVQ2N2Ccd
+
+(jYPGPlM%5V-+--r`qJZbeFjjKY!qh`%KmEYe@mT6iM93++f)RYJ+5&rbTlDb1Ic
+
+%D2qfY#RUP+hCVVJLr2RePDd'[@NPa1((VJ)MTZ-ID)cBE3iNhlbDXjjHjM+dT$(
+
+9-jm&S1S'2APX4S6h+QcjNZ(f,%[Ihc'(+AZGrGV@V-Q+iX1IAdYrrXVhF(!5B8[
+
+ba)5XN!"[PPUjdN`)48Fi2ir&'F3G61-)F"'G`rT4Ni9)8TlN%[ahikDVU"[f,qT
+
+fdpMj,E,8M1S@+2[SJB1[Fi)VZVeKeQkpm0c!HD[kFBj&)#RA5KH)lfkHic"m-%F
+
+4Q!S+E%aqE"$#BIR((j!!XV8pXDMHKT4*hSCB`mI*4l)hi$r%4kmKYF4LB,a&f&Y
+
+@Nb%8lC%HMG',ae)4TiP'X$R3LQ3*5bfQfmerjeG"SIkl+'6%9Nd2k,*6RJdRKRA
+
+H)Z[Lbq2FTFC+"A9&l$%A[r4F*(@+iFXRk50*dEiE$maQ)[GUU3m+(XT$0+ZK-ci
+
+552$N&KSfSE-c&&UNi+L`#L0D%2%@,E2DFI)1Q&J#K4B"8VD4b(SNB@G3#T&!q8c
+
+@ML2mJmU'Erf,5K%jRQ,,8**18[eG#@!*XbF8Z(d"B,G31R#6BTZUa@[k49FQ,-B
+
+G9CUheLl-%#J"cF2cdThKE+YhXEMmH`qAGj3HF'%N`$5GalrS9"kE$SE-@dK'f&Y
+
+I#5bS2F@XlN9ArP%*#'1U$@V*mh3h!E%3''6l6Vkq*,Z(44540IfmirBST!C3LF3
+
+YH`UKYLYSPf2PCiL8!)32UB"[J*-2CU[PGZJ2NihB3$U`,5Chlk#[eQbU5J12X!U
+
+2DLqjk&i@)q,*Kq"#Kabrd8,+1Zcj%RAkBjeHUNhba%eCiU3k,@6R*SeCkhKSPF1
+
+d%D$"U(EQ@f'Ffc,(3`MI4[*V+dlQfbJc*1j!AkkkrULh"J)c815*G-AF$UL6Jfe
+
+Cc31mhqAcHif)eDMMi(NV`k0Ah86FF5E`,VCSZM0eG3kRPp5h!1Kce&ah3M,90GL
+
+-6cVFp&Qr!Fi-ppK"6aK"k(P*d$$,5kN&31-F185pfk#5eK),jk!*C*Tp%"*AYSS
+
+CK4a[$6`d)%"0$e6*X-FG*GIkJ`rYYE)*#US3k!+SpAUG*Nb*,J1b'"SrI9,fB&6
+
+)X[Z95ZqC-!M(UUNY!Sk2AmYT-e,9BV4X9UAr18h%"4Aq`RhjPNUQJ#IY9X12Bb%
+
+10,&32GaX#$f-3$*d#JZikf!1rFDYFSV0&'I4SSY*8AKPZ33XE#delRM[FS[i9H&
+
+B6(%[*N(EeDj+6HcS@r'$S6C5S1&)`S&S2r1pf-Em3abSYbh&%ba#c3'Z[`)p3Z3
+
+!Qr9SBDb`%Pe1C#N9"9[Y8TrfML-XQK"8KDd(A-KV$BfIibjC-40f1X+kme&,E'f
+
+$%rj@qj*G--I(IY)6jcprfm-f5rV`#*C8jSr!JVPU@)1P8bM1VF'kZGDeSm4baQd
+
+US"NSM,[h%Nd%QMGL2XjCB`XS!SL-aXb''``D9-K#+TqDd-DUQebkU'lKD'[Cr(A
+
+0HNGi#M@)HA16K&$Zp&e1qLZpX!`-'B-CH"GGSYUqE$%+$GFZZh0CLMYY(jKhbMf
+
+'6Z@K+LH![PSQZ6qHFM)MVBV(T0)a"Yaq8H2jSUa$j9PeH"fVbPibf8Q'Dr%6L-!
+
+P"eX,dSYm$GIP"+&3GDaa3*r3p*BUPD&P'0mB@Y[BY&Nr$VH+'-Ukbl#N8c#*@K%
+
+-XeE!IQ##R0'`mZ(MJV"qJ3D`TB95UjedfGU!@RfCR)h[X'JpDfI8e8mk"cr%K`I
+
+8#,H)f1LcL3*4jkFc0*@i2P"k83i2S-l$"@Y,&H1FbY"4qQL-*))VHV0*M@+l*r$
+
+!kbCDhN#ehpe"dkKVjp"KEDVQ1@bUEqP8IL[LrPZUq6)#A5aDXH81[VYe@a8F$e`
+
+`epF0fkK9VM,r3(MH[8UCmp0iH`fPSID$k2kkC690ikScNk,XVZKQl5T4Mc[!K*H
+
+Y@`["B5-R'a(e(amPrZQ"DcrDYb0`cDaPGcM"aCeE*i89eRbc2(mh`H@Vi-4FdU@
+
+l&i4M&flI8,22r9Z1#3lH8!(fmi$eJ`F``F%E20CVGrh91F'6"qCq$m!F!Jm5bJU
+
+1,V#eI,2GV4B"eYQJY[cfCfFPDUm3S6Y0Ija"&R(lQAqm,-Z0k*XrNirXZlm`*2P
+
+ECU"@,EBY9$$-3V*Bp20&VRLXmV*IFqa`rXR*k9V,Z(@lqZANYb@@bBCG`Pf)DJf
+
+3!*,@qL#6-"T'-E+k#`UXkff[(m-k(NR65%VaERiS88)#VN4GDkX&qDF8`MkHK!Z
+
+LKB*h4DJ2QP*![QeP&Z)lY+l5TqA@r,kFc(`'*[0lJi$e)"0ElGGb@aU29c6L@cV
+
+d9%FEV(C)LcYkJ+aN&-(5CfT#49G",@M6R3*0-jDJ3L2"'VFQL,SX-QMAafKbq1a
+
+Z[(5HQ5MUpH1@%B40lA9%MU+02Q5lPLj*TCM*)&ZcE'-lMTH"P6pKK,IpMN@aX2M
+
+pScPF62QdIEj8A*clrY(&+@AV*VrM)*q*S-q2f9T'YET0rHprHKE0U&%E)jKq-Q%
+
+&IrS08(hJ4mbJE$@jFm@Zjb[qqcJBHp4d0hBkrH$(dbA(`'h,l4[Ikiqrl6@'R0)
+
+%kT!!l@0VPkdqC$+c`4rT2eX+PRI"F,rb#RU!Vp$3`U2XRZ6#,lmf@mJ5#S&B'V[
+
+DFi@01MIjLP"P[Fq8PU65GNBfiaMHq8RkMVpbDPi8Ld8bL#NPShJ4",S8b0q6AD@
+
+mGS-$E`l8Tp2ImXKVbXVMVB0Mp9RRcCXbdQ$ZqI'E[Dl2YSJ[QYrDjkaA[hrD13%
+
+p$MV)%Uc2pe(Tl*2Xjc1Rcf8ZRlY*iVT0UUkjhVVpJ)*5-8`*HQ*$E15&m5U9mjZ
+
+3!"HrhXS,'JIF[31hC2!iqlPb&3eh*-C"R-N1`Jk"#PJ"M1I(d"U(mEGb"KMTJ-H
+
+@3(HYjlC+Y!+JU6kD4Cr"k,a@FZ'd+YZdlXl6EAB9BLRh,lI4hZN"G)$XaDDmIjK
+
+Bf*FU6N1""QSha4i#8@HI``c[3r0HS+`G$)9"aj)Ad'TfM)"9r9SKP80pVJ$!2&$
+
+hf(`rC6ff&kQ5HG`[&+kr$l1VeSp9fF*36lIMCBBf!eR8DP,[0YeKYGKH@CU[#e*
+
+T(0B,1XlZUB@-kpG+`$R8jiMFF0F[UQ+[$@@HD%h#V'4IRrHY%iqIPGFYbp9@*I,
+
+QA6lI,X5Xh#er+j[&4!IAL0UTCdT2bNmARY,rImEeYBY"c"CDfp9U,jIKTp#HRQm
+
+'MTI6mp0DYIbe9DV&5%r43TB[Q,RZSNi$M4ZlM*CVJA#Gjr0L1b@e%cr9[Ece$@"
+
+4lNmY+jjZ44Xa5GdZj`@q)YiLi4@r9A5p9%-)-`UF)[,Z!'#pBN15U1UrZBrJ-9Q
+
+0IBc+9Ra0%1rpP&k`&C3cUI[bRe[2CSl&lpBJZ[hReRb-XM9Ybb`(jG+H,ql@0(D
+
+&[l9+h0IqFQ9imprZ6-XbLi2IfpHReTEQ2hHRaY9pF@TIV@jkE,'b0'L8dhZq`1@
+
+`JjkYZ8$rZ5c3KK,f,URI2KESM,'r54X"a8#``(*XkQV4T'p*CbB)mZN6RfIJXjr
+
+mJ0KlL),3+jK9Yr'V'mS5[Rmj6hqG,1,[E"'1VL+1AG!Cq(KjQZpf4amA3r0+ZIk
+
+[$hmiRI*&GrlYJ-V22pb3!&rp%38hG-rlB8&H%AqCY6(I[b-j`01ci@VUQ3I6,Em
+
+NbR13!&5p"jhFqU@G5LPIFXqEbPSk4CU&1NalS@aYZEpNdKCrV0S@*[*XfE[rPJ!
+
+dj"FNRA3&6m1mBF0KL*eHKrUQ50JY*Bh%&+paJcTY!ik(RfTlLp#CAa'2aC2pXfp
+
+r+KDe[5IilK9mrr,qE`B)1`[iPqe+AJ"91`Vp@1'T(S8&NrhEC9KPHHPa6)ZRR36
+
+eGf4F"#F2SfbB4R3e6-Epl'bi,jc0+q+CS-YjZE5`K$rirdrT6Rj#[rm%[rq%IRp
+
+PAlalpaAjV$h'*iC06QbEcD,CqdGhl'F,kfCk0kmQ@8&E)M0[ASE(r+"rajq+$86
+
+'`*1qqmE#++H46U32laK1CpmXe"GJHG'YCVmL$FPrrApRfJcRVeSGIhrYdQlfrpl
+
+TH"'K4()6MFJpcS8Y2e5VV#LrI-8UhK6H8*B2H25$H,jbVpjFp[cSJl,l[jVZ2ZD
+
+ZkrC2TKI`9rph!9e,k1i)#UIY)@[LF2l-Lea"l"eUhla1@+CLYiPI0Z+K946SZ2r
+
+%!VrX2GSkmTGKMrh[fh5FfkTFA$mh)Ui"pL9%0#f`KFqlf`l3Xe$'N8iadil,2PQ
+
+BDAZefcDHb6,MJfELX6%J+IJ[`!)N+h`CEQb'%q9Rq-[X1%4M'Q0!ZXC'&[,!M#,
+
+hJ-D*1*eMr3ah#5+9JjdIP,@L'"&m5lj[iMX,E'pJ2p8&8UHk&lPa0bKH$)HYU,Z
+
+'JP`3hX1iXa@h(F2L@')6YK!eNKG`NqYbGkhU@aU,[D+&M,!31!'`%!8DQTd%kT[
+
+0V1DfX5$,$++#`4**CGKQA5-H[#S2)(13!!fpdGXCH%Td3EYQ$06Yh6GGiAX'el-
+
+%JKNi,Z"EA5[(keQIYF4[6[H$$jX[#X*QkjPmXFKYa!j+8#0rV$Q0H*KRi"f%D9G
+
+&'SekK"qdI+p"8S3#,&SAfjI9+lhf-4m+A2PKIN)"IX9!Dbh99B9*kAd#%*9DmZ[
+
+NaP$A4K%ibJT$(!1AU1%cYD)8B0U#GGN+c++l(B2!I!PDF+Y*GN,9$q3J84c3RXS
+
+Vq"6SqJ%4$LZ'DQfBEhN(j,KLLUfXMlG90Irk+U$hT63S(2Z-V"rNGhE[$ad$8EA
+
+[("Yr#E)+#lm0-)6kFd)8dPS2GUiRbkSUhDHRFl-LcB,H1`%(mBhNM18'C`P1jq@
+
+cFDJqNVVMU$pdhj6U3q$(@5*`GdFm[AlN+SkprI[jTcZ#r[KI(eT5a63UH#TKdq2
+
+#G(DeD94XcUqMh,6AlV-68i`9pL6q3!B"#S,M@JIk-ll3p&1J8)Ae"BK[`qN#b9r
+
+haYa@H"%%JX(!"3ki1"lB6qRd"hjjRq1*"a![HI!!+KPH@Vpli2+A"qD%`pBUmX1
+
+mTXAjc,kC8iqEb-DTYMhlQ9*FB)-0fZc2NbqUahYIVFGJ1P'qh&QJ*rDjd)ic6!F
+
+[YUcPXR!FTIk11hLql"T%CEpfQdB#9ErSpX(hHmE$2kcCilM+PQ1pJ*D$-prCmXI
+
+RDqE2hCiafl$SlS[[0heaTe*Y09!0l%L!R@[AKTEGL6pI1LZ$e+AcjflT'1kT2bj
+
+@bTF@,U-G%k4@L5IE,Q1("ZcG(Aqa5h5A3[jFm4[Ccp9[T+'q0hi@(RibL4"dJUQ
+
+iZ0k2c6Y3(TMdPc-8Vp&C3MdIcp,YLZ0IR&j@'+@(N@Kh1@ZMMcMJkVbI#4KI[Ii
+
+[,ZA1qDAice9errfP`"[*E-6IR`RZ!3,H9fG#Ha"6LkfH59c)e!,IGGKI*)DpDH[
+
+e6E0b%CE9"BG"DZ4#YmRa!6-fBRV!M1f"!q+lbea&eiMVLhh1[PRJBb@Xr+dL)pM
+
+Pr4kU&Ym'UkNri[r(I#C6bb(6e&"!+jeH@U&EKV(eq+iAb`"c63!G,*jB3K)K22q
+
+)he",*"Ca2BQJ5F+LC225Xmp08eCqRMqH4ifC5aXeP,qj8*qeGc(S35A#95jAD$p
+
+I[rJCDb$DUeeqYM`U&9(EE)f[m"k0I2%kRepKTCJG[@58CjaJqHdh&iLFhR4eI(9
+
+r4-`M!1l2V(DX-A2%`2e*b[rLrR4lB$mlZ,MGAUE3RTlTNVcHKq6jq-bk!L@k'8Y
+
+RE0@H+[8S0!0&$IplSkiM+ZZ+AY-hM#h1APP!H8G#hP4TL50Ye3hI32(hB[0`+6$
+
+!"K5*rNfh`ZR,)AV6D"-0#2EK+@dV#EZa$h#J+a1d#i$5R"p`Sfa-+0%ASZepT4G
+
+Q*h1%9L2qNH@rSLFL$d29Z+&#VacKSD*@CJ9mlZG9'FIZmLp`#"+RDJh3@kY2AHf
+
+dPXHF9MLQdZH+j%5*4+#2-F82!UbG&E"ZFPi8%j`r!RYY@E2US)pP5FIAEqDL3+'
+
+LC4V-("TNQRJDmF(SLBJY,RF28C4bZFr!CSf!lcPY$cQALYhd`Z1q+SX!jCEA1M&
+
+#4EaT10`4E$!L'SYSCa9Ib3$Mc-feFfd*e6H+aI)ma32KVrIj&Qr3lrVe0J+$c$`
+
+lQPiiidMYDPYeN!"PbP#&#%hbbK-p[9c')hG8RdMGfY@+fXH@aLfD'GG&)4-hh$e
+
+23UdfQbTe&mJrE)!*E&*lQ0'lbArbI%(bV0VAID5CHf![-'IL"ICENV2RZ#S1`-Z
+
+iNpKXEXb,qAfFfP@9MMlDZC3)AXf5dhp&hciBiEQIblKr16&B@3-*X8!a4)*Y!Ap
+
+8,F*Gj'`TFqX0mk@XQ9VR@3C)@D'1Y#E92US@@i&BC2b)2b3F`%Z#DTKK','*,8D
+
+0Hc"2l'ViIQUi'hcUAmUT,5dj$Q*SMJP)Skbf"6XYTi+I6r1T9[9)aUr'bkeqQ@2
+
+%ZSI+(()Nf%RIT1,,PTRl)@9"XrliF4crHCPELp2TLP(1`*iA&r@UHkBLI%4NFlb
+
+*diYA`CdJ%5N3&SZ96k,,&CERa%U'rT6F6R4*`'j$4Q+&3%()m%b,L(Y*L,D2'1"
+
+39%l6lp!*iYmC3CC(!,(rHeQ)cJ6'+k6'%4EbhbZ)M`-0!"H`hrpFL!PDE!,Yl0p
+
+25H*N6D#10Vl(jTK#0IT,L1j3Z%aQlTkNC'I4%bepkcN9e-E8'`M@)b(qYH2jr,Q
+
+G#e0rGDYj5!Sh'dSU!'prlBA"N!!+"UVk6jU'6Mp@FaVGMZPm59NjhlF9jaEpq"4
+
+$,6be)XkaY2(6BRPTGS$MTlLi6BTEphpr+8#amPI3Q6'03,*P[q0#Pq(a(T9aQPZ
+
+16bN`pL&1NbiT()$pMK1p+d2IlAHF+%ljNiX6e$Dp*TDjTK`35MLd$NIRb`)2&"9
+
+FhV[HXT[Sb(%&%@P[[dmPR6b!,$ABAQY%F(Q!8YTl5"0$QIRc9UeT@l,(j[B$E3S
+
+m`'jMr*VPT0q8+9"e"(pJ-RQh*245K20(3l#`)RqlDPB`Z$fi(6(F,4CDa',266f
+
+0AfTc%1-D9j!!c!G#e+b"lqPA0H9P"X+H(iHmAMCZR$jki"ecBr2Q"Hp8qMLU&Jr
+
+mF[IV"(Z95q1"r3(mJCqMYX8d%6SIq,QeGG1Be20dIkXFqqh"'i!E'ijkq(R(C!Q
+
+@8C6MkHp052C4QG9rAeYAIrI!V"CVPZeT81%$+Bh%dKHppB5A0lZ28VQhUCIV"iK
+
+@G10`TX0c`'8LN!",8dSINi%)h82!Hh(+D2m%%V4JLD2iE2rN#m8IdrhidF`SJpP
+
+XhDqV[jqZRD2ihT9U&dl0Zp$@`01MDX&`$NLYRCj$V3N6jf"+"6LLPaf*YKdf1L-
+
+RdGjBCG,!Sb5c4Y`$Ed0)ZJdAflN1c8R5rGKC5M"CaLaGcRiD$*9SLp*Gb93PQDj
+
+FFXH*6iV18[Q(aFI)m@'YQPXHKT!!PZ'VpL8E+3K8q'cCdTPb`F1[EGfD,TH-N!#
+
+mVrIphD*cU-H,MJf,hH4aIlCTpQ2YZc*0Dc*K+QSFR`%G6E*3DL*#FHK$XP1a4,,
+
+VT')*j$!-qUZC@0TYQG[PRq@S[ecbaa!1bSlaDlILAqk+BcL,aa2mF86!RNZLNTV
+
+Crl"I,GDAM$qIEEGElV"EVIDcV8)'A2Z9A2%-hj&%5AXIfeQQR-M&UmGIl(k829U
+
+A1EPdEm12YGFhfVjYddkAil5rA(ThdF0"rqTI6MNDF(qlmRMbbi@h#qm@RUZQ#"$
+
+(rZA#RH@eY5mqk5r"Kdd1`8qqCLR6p3I4R+'jEFZDP!BE,FcPQHLH&f*A!IfMaiA
+
+2$Z4$1"hb$[4MZ311p#@ZmpIHqq$G3"$Lf8S63Ak*QPdN4l)Xe&fKNPGT+@P[e"U
+
+jq8aRL1@fBA#bhAqfDZ5bYELp2Q[2#+3#haJmhbfGp5aN*-#VM8CkiN5p"MF1f$@
+
+8ckXNB`-L3)@e`QU,-4X!kNA!!0Q1&HBJ8K8N#+er6Rq$448G3ai6hQaV2E8M@qk
+
+*XP00l+QX1Iia4JJAB$,Pc30Gd95lAeEZ,+&ii&II(ML3!!hYJHX@#9S("Cq[9Ha
+
+@VE*jpF"F145*jZVfT1$YclB6HBZ@d!X*6lU1*@K%!Cr5m9@GfrIk'2f55lhXNQP
+
+E+8q1bE[IVY%BXqp42jC&FLM&rhfIFZImU&rf$L@fI5A[1EM,qHD-p[VQp'2C(!F
+
+l-Q"c1pbfF$A$U,LpVjFhBE2aHb9b0Z%2bjVadE+bh*5MCMfmVlGf2b"pYq"Hr&k
+
+fjN219E5Gc59cBS&BHZdU-5[eTddGKX22QMDb1E`q0DGA#KS64!fLQlqVfMaJGK&
+
+fRPF"ETURm[9KJ$`r'(B'Q6MK[eGp`XElT[A6)kh34q00X2Z20jHdL#B`ETq6F[R
+
+VdQlUKCh+Yc+'JSb8#6P$*(A)S!VEB[!3Ik)iPmXJhQUQjkJ(C(6Q$IVFN!!cjDX
+
+m!U[d-klJ@MB$DQXE99pqEQh,H4jC85kY'IF2X*IAIX%8Iq!GV2rLTiV[kTaqlNZ
+
+G1$Z!!mr1'eG9C2+"5eIYiIf"brUUFI-#L69U&ZdY851q@khH2h#YAM9[4M"Ed!%
+
+l9r,K'r"YlA&h"NSF2V(GJ5A[(p`Q6rfC6$,lG!(bF$%D05Ni2rqNDa13!"XC05i
+
+,TG(Ch@Zd9LkUNXbk3b%6Z&YGmAHlqa$1af&4LdrDlXVdSmdrlbkV8DQm(*MS-Uc
+
+XGf(T@(&4E3jCDQ4Ll*cl)C8"4%VJIf@rV)JB,,[)Ah#4M[e@V+Q@'KDC+@Leie#
+
+0*Q`X#T%&4Eb(A$(kSM@)2`Jhrddb$9NEkpB9@5G8)I`VQ0KY&PI5V1hA[NEFT#k
+
+cDK9E)@4@kr,59XfA!"*QTC,F$MZid6eB,ENq9JaZYj6*4mkP%GqAYCAB`e,Hmq+
+
+0UM'`h5@3!,JNc2cZ&$C9ql4f%00[ZSMk-[U)@0lL9"D1I%8#b$2FkpQ@d'5'hVJ
+
+)k@9&aVp-RB1T1QX),4S[)emEeZC-Eq,h6DffUl!E'+$MZaYK@lEDN4)rYRk8jqU
+
+ApJ3BXLFE0V'HEqZf`BRH)0eM!dI"irFSMl68SlM@4c+dL&)b[1TJmh`!rGqBKQ#
+
+P`fB(KN'mlpJaAT-9I$['*i0!A95l3fdeakhdpE&M@-c6X!V6hq12895FEH&FMN(
+
+(Mr[B($p8RTBhamfkBYiYVXY+iRHR8$6)[R%`8&V#2ELeP@X%Dd[Apj!!R3V[KV&
+
++'mK3M`+JJ4IHZG"bBPD6BqE'4F86'r4V"`i1#rS`%24l@0!H#c$Bca8D0-!hi'"
+
+RF83#22"CGQ"-f`M[2HUa69"E6GJ3Z)-Q+"E`m$mSV#G59*31Lla*3NQqM'*X'c,
+
+c)CEQ`IK)%8![)YbTXb3pj1QH6*r0CVlfV"P0E'Fh1Dd#'k46GGX&JrSPJLp!4X)
+
+"VRS1"K1Li"K!EDE`KHq`i2CC+bAlYGU3!$RHEi"!VaqPJ!089'm6,f$[&GeTYYR
+
+E)JVJI-'`AFN&'b*2`D)B6S0ZjG%aI"-+2RSCEb'FSU&aR*mG80iI[q[Z6iFRj5X
+
+"qI[c`c*E4G*@!Tfc$EI(&p4kMDAM2jLf9Te!he$N-$a(##[6jNfhVB+!8QX8rQ0
+
+D!2J@QUUaPdP`'&,jb2pj&3Fh)Y23aRHNL@qq5@X$4ZL3!+AS4(50RJKIGZC,Sjd
+
+P`''8a92(iq@mr,#+F"K3ppf0)CCM06XbqlAkU6QLYAJEF%jLNqFCBle5TN1aY[e
+
+DiF3DCM9)+)lV"aDZdLQb0%fYZdip0$(QZm@ADR6&1M(rT$05j25MjU8q!L*Z*4'
+
+MH-Jr5&fm0DLeKBY&Vm0dZ%j[C(1m84E"iK%&V3DHdR,mYba`A@ZC#m-94a,eq5!
+
+NBTj)%8+A,AD&6"!TB&j9Bd&J1D[5Q+imdF&l2F$k4)p)hq-pFV''qeYmdNkbl'#
+
+drVX)*lNYrcdp0GBHA&aD242F9+hh&chq[09T9LdZYm"eY6jmeQYIU8l1hmA#8EU
+
+!G3M*BHK$JU5,YpcaAm&&QAeE+01"!LHJU-VFcMK3#$B9KM++1LX@,Xeka2HY2VQ
+
+2b#4#4"Q#aIAVFJbPbG+Vf,3LQUXq@I')HTFam)PDJe8'+qdRXF!E-M&VP401'4,
+
+1#r+DB#9"#m&JX*kZSHqeXV+3!*f2E2k@CSC9Ek+TPElN"Y!*DC96e"8Uke*+(KQ
+
+LaN2GAR84!RFr!0Rr'%U[bQ#mRhNJ'MJ@%dC2BEjh2G6$5)r$iTXZ5k&XB83Y)Im
+
+$+`d%P1k'bN@i@mBdN59fP%3bSKUJIZ5k)lS6KIIYX[*L9U#NrM9p+5"UJY#-[C3
+
+AKUVAHBEZDCQ`Q1m1%NeY*hDcq5IfqbQ8cHaGmVk*m6%Rq)dRr1G`SFYG%ZMX2,[
+
+32FR[H,!QX14THCY0)M`Mq1()k!Y`NNSbVLmVMBBBXLiYb+AU*iHh(QlHBdb&qMP
+
+XM@(J9"P4)00eAVX2&1cMBC!!T&+N!E#d,N2VJpJlPT2G!9M4Ga2edp5[!!jiCAV
+
+@kcNMbZMUiS1U[fm0T[R*8TS'8$3b"%U6j6(UC[-mJ`,IP(L'l!#aUAT'iE$ZNVU
+
+$5e,lJ*(m$+C!dJEF'&jFdP@,H+bA&5#LKF1+#rFVBp6`&IZ"fQPCN!"H1fXDG-!
+
+Zb$bJ+DkKB`6YIM`0p3A1!%[Hh"AbBYi2)[!S1(0BemZ!a2f)bQ"cC4e$Sj3Bab$
+
+9,)U8a3hX2`SikrX22+5FS#iKlTE[H-5#CUQ3!0C@VAY-eHp3YQ),GBX&k0+UQI*
+
+UGBdljk4f%9c-3QQm`[35(5MkVrT$Tp#`hYTjmX@HD5SX!PF5T9r9j'pCFP,3Cp9
+
+fX#Lh9S$$Q8%DhhS#pae(!"F"FK3f%,qh8K`DF9Y5eTSD)qf8-J-pA%lKXLLN+h%
+
+He)ik[j!!ddk(FE[E$!b%!+Li#F)J6NdDCVG#K-i`hXSJ+'&DAZ!LB,-&k1EeX%K
+
+)r2EGp@`JaDqrRr*&LpIpr)DmU1MM1`TPejJ#)eZGk%05"`f#6jTiKK4*h!8S'5p
+
+-6@fMTrVmR"kEFY0LZjr(ppJaqFbC1df6S'haV@YIl#-[jeZbS-`AlZ(CTl[fcBh
+
+-KEAiZAADYJABRj0HfiX3j4*QUP('"D8a3)Ub0Z16GdC5*&2THJKfDHc8)49IBP&
+
+'miAX5eeHk4VF(Pjf$9PmI&Qc-lqU@JUrRX90TJ1l4TK!p9,L*YU'U&3(')+S+2Q
+
+PUi6%[(1bClBkX%M-BhGPFrLm@bHPcr-!4#"!S!F$43DPQ+P4$"'B1NN50ShU1,N
+
+'X0fh,ZHU!m'`b*3F5*!!N!#8'$EQeF#j4+Tp1'QCAVJMLbD98%ZR[*J+jV4#h'G
+
+&(AAlVSY#`SrSd&!BMENm4!AVi%VR!8JJ,aXJ89q&*FBFScJ62@hK"q[XKj[B4+L
+
+DN9p%cJ`HZSIShV#2B$jmrSla#KeB,QUc)D%d3RY`*3k18P5TM$"S5eGBjZ,2[9F
+
+#Nq&#DPM-43+24mCjHq$Gqaj(H%"RXpH3!"82k%)1(r$plRGSaaZl&GVMJA09+L(
+
+mH)*VjNpI(VL+KL)Al8maUrE!Nm$1JYUc#4D*0RCl3[Ch3CJq!rqGEaF"0jJ9U&G
+
+#ELDrYjK-hm+S[RC"P5K0"T!!9TX0DE'YM@B5HX%%j1E2XfVTY60IEPBBS9pbjpm
+
+[&%EaZXlf+bkU,I2GZPC[rIXUZCiALb`E&*apHEBlQl`(8ePYjcRpi0j-pSfj4rA
+
+kTC2rkAfDHic,``HDSGYQfD&Mlh#Phkp8I+HYG2*"[e(0MKrqID%DS954jkp0Yfp
+
+VVHaKZ0l[Gk`5c[f@Tjqd9-1bJP&pjhmhl80NhM[9Y2"2X(lX[15!1Y[,VXRX"@@
+
+N)aHlj-$i5)24S4a*S906J2MQC,"Ml'2D'h[lQk&,GQc#pQCckE[cCerXhj3p%cj
+
+KX`j%GY&3!k89SBV1(M+1F)#A1$I31[!VXIY90GP2TamUY4Y2[XePccf#I&Bm3$C
+
+Ub)+icqL(0M0VYXXVR(@'B6qF)I4kp$rS,XiqD59abZMYb-CK[mdKU,[(jURqGKA
+
+3r5%4h80A,eIr%5A5hCl9miK+YRLr*2![JZ2M$Rd9XqSZ84@-qNVIP2-[##rl&(Q
+
+kLfTVUVp)dZ+PHb0c"2LS+[XU'lEGXep5dE`i&`5LD-ieH[cST5JmAPTDI$bR!J2
+
+6!J0h%J+%13R1mi6-r$F6V1S!413dh'NUZ#r-0XG$Gf8i-HCFbQj&A3qZ#r2#bHT
+
+fY`dRBQf4aS@B%'d@"TShP"TP[BiQ$+$"MDXK8cl`1`j!QpK!!I6*"2-jZcaPrV[
+
+26p'+(TNC"'dA[#$k4rdS(+j92XF4X@Qj'4,-Y-,'(4r!Mi2,abA`@mbT$)5!CpD
+
+MKrl[6DXN84iDVHG(idkq[+Yr1TjFIRFrmG84*5HNQbNR-S@MIlULiAbQGb1-rbT
+
+eF*Hm)`eE`6f+VTNGeA"3U%-alIP[KDY8LX+SJ(%3VLCSD`R@8eA+%9Y@kIdbXAL
+
+SJSE&TN5#h`Dqhbl-ZZ,VpRjhADh(I6QbhDpD6'+h!Z-fqZC0pGX-UfTRN6+I[6C
+
+i+0)-F9!miBRJZZ1LQ)@YQTljU-@J(N"Yh8HTF2E!)fAE(pKAYR1#4mTf2[!N%IC
+
+!Z(kLAC[mb382rT6kilj!h8Qkfamd@dq-($mmXrCd(T!!021SY`!DQE4YjJk,b&)
+
+@r'59a2ff12hHlBh$l@iVE5K``V$@XdQeELTThSpTVl44'TVTS@%61G5Y4R1eVkk
+
+jm[VT'HqXZjI[CKmd-5m'(G94p@`h2l29+`&pfQiQD*iA[,D&FLQX#)kb()UMNF[
+
+HUXli)1iGIL)XP8ZSqdq1AR@fJdXB9,Ai[5jr*UGp@Ef6'P2S5SL"Sjh(kD!9$AQ
+
+T51V5+`rKf26Q,6rS5hBPjC!!5QrPTY9e@*'(dH2&%jMS9*rjlc-*`bFeci1ir[D
+
+j&(EYJG`DYr(RERR@(5+)ELI&20jIfe@rT0r(%dmMBJr9Jp4%bhi(mH!%*bP3fcI
+
+rFq2jpR2AbDcRq8RbplFr*qq,6aUC,d119Uq5McXcmCc!fliH-hEEhm,V5''+C!M
+
+dBF8YSN35MJNDjmH3!%jN`9e$3A[m4103%2SYKlf*"%K8iK1c#TYMpEqHHfA3r([
+
+dR%Ykr-$&HZ2QqijFj`&SBPCbXY'HbKJ((hpr&c0e"eC&AN54F1+$UZ,iYQ5djhK
+
+lh5cI3hmeq66j8ZhqRDRkI(f#NKD9k5@hCe&QQ5T$'E`e4M+@%cD(+)V$0SV5`C8
+
+KU1!&C&U)0S5C1q*`h0%+,%$-3HQ3!1E4+5MbLU(M2PfPYd%Q39qTK5*LicipSD4
+
+Q5(9B`Ae+9&Q4Vm![SQL0+!Z&S86I(6j8r"Ua-CM+P2`m"XcN[H$ckG4T#S,i'%)
+
+,KjFM$(#$D0VK4Rl3#PMECVl!MAG`)Zjb6DMJSjf9TlKU(`*Qi,,K35eRk16M'"h
+
+fSpl2+Hh3Jp+Md#-`)2)R$"LF9R-M@0Bji&$%rF5CX%L,jH8@SiCL9XeqBE60&pA
+
+Fi(QbV2VkM!Vmm@V46kBlf[Lph+`[j-J!U$paeR"c3c1'+,D&NT*5Gp#XLX%iDk1
+
+a+'$XiapUEcCkX'LK&BLZ(6LF`iqJXQ!@mG'MTR@DBE)Il%&%!FaGb-%l`!cfNmA
+
+`-)Uhc'+-4V`R(9G$#UAVTFe4%PiadEdU$6X2@0A*S"V2N!$JJMkJ`)T!P4%Xl4X
+
+4,X,0JI8UZ*K%$maGbPY`r[*Vl+(lSNQ#@4"YTaDD#q,M"Q69)*bPFe&A%1dp4"3
+
+U%3e*-a[)JL359DAm(DYLV''!mCUaEYE-mcj,H1!AU,phEK@K"S[[q3!Q3$Fee#D
+
+jE$DDllT&i)'b`9,lYKZa2,"SUp3pF+R@U"Z9GdXU$l356Bq9m[RH6haFpU0LESZ
+
+[@J0@9jr'DbiRXAC9PkjEAl[rDIbpc(S2R(mF@FmXVIe(m-"jUlk,-AqMIl!XXkf
+
+&h8%Aal2iDV[c3Ufld$9GN!"Q*lRK,(YX6UZrce#p2@TlBLUZ$Hbhc8AaCDD,PGJ
+
+G525V`'BeYr@VA%Q[dP@#r"6#UaG@a5*@dPDXYKJ8d)ZbVNC`eGEe$XN&kQ(D4N6
+
+DP[4a[YYh8B`*,Il)4l50ImS*idCBh9m*PD8@*h5MCK0C),"``,F`Tl)QFJ@@,e8
+
+H4aj)hp82212GS8mahV4-Kp34XAmf"-XlH-%&aG&'e&IeQBkN4H,qC*34ldUM&,D
+
+K@JeQrrK%S%Dq0MRq*8DG"Lc6LYDCAh5S#Ea+[0jF!UAZGpFr,$eC8&KJaPCZ#H0
+
+,aL[YNr`--SiKB!bjmUVH)!lUBBh42-q1#jqKhD$8RdJj`rHaG$a5EZ18aXPX(Ti
+
+BKqq#'Iki6DPM(`(V)Rf*BYIi!Cm)aXI9V)B2CTA)IN6BHaV($)mcIFSXK2Z1m@2
+
+,"('+&H$IfAA,`Kr[@+[@6cr*4mqF2rTfRG!A[3(,ScH@9r@Ia0-RqrMPqLB%LVI
+
+&d[I2pZAc,kI2RmE!ejVbhFB)ELa[k(DpZUXHr-Rd3F$pZ4B+1cPJqEpA,J$k)N0
+
+-142'mbq,,4#&+bddr28K6!UkSZr39`8#fi%M@dBQK93221[DcKSdedDD2Ti&Hr+
+
+l6FSh0ejI@j9DI+BG-$h*K12K+Bk#XrCH"@kD,QGXY'@ZaB!ZK"A#N!!MZL`1QiM
+
+9UXaQh26GNDS%jpXDX3X&DmbLpUheR4YZ,%A6D),0h[$Q4VBT8U*PJ1iTeY&1C9J
+
+l+5f1jR)H&*kRV'[iGB$JDc16QbqkXTDSK!JhT0*[+EXa!f(BU$ZYY3F[k0i`Rj-
+
+i(C!!p#[hSFYqT@YF-l[EXA+pN9*APk,pE5(Vc2bDLXYRZ"McJ*3XbME#1lZ)qf3
+
+C2XDRi46$kHNaL"IPZE4M-mTbLdLYR#FhPMNmf@BcplYr1MQjL%kD(ac[($fNqkS
+
+V'[-'kXb01jHM4$2M3R+#IR,`6b8hP@aE5Y)MVr'',PC&C6rP[j2RbbCh4MJRBaL
+
+rhq,5E)hMr2%PipFUIlqp&`[lj3e%Qh@Y)CIJ3)4KQA*ifD()TU5NrDQNlb#jril
+
+1Nc11l(+QT@GEmeCA8UPDhBkLp)@T&l*$)+Ke"pm-,)[IJM&C5Rp96HdB'+q3!!a
+
+)3pmK!eh4IR&Hfd9'NeU9VkBiid0ANAXDi@bIk)0Y5%&`IGFB4CiRL-$!+ck(ip2
+
+!iVAKJXMhJS$SmGT`8H6EcUrbYjpmJQ1,GIJ@MiqKDGFqIN(j)5'Z!"5e5,'BbEH
+
+JrqAVPbqr"XdrN3%GpMGj!2@MEJ!-&8[1rTQ-3pXD8rBi0LXAlKH`I-c"KBccq'&
+
+&j0pjl*kXpYcYDPqrA5a8r#Gl"G*I%-EqUHULq8K&X%crbIPkB3EbeiTaV1JV"qD
+
+V@9Y@jGCp*LE!@)6SYr)%qkT0F-R@0-JRHfX+CmeNmT!!"l2+$m(908r[G&m$#0`
+
+("Am`JmHj,CTe`8V)b%("6CH+$ZkCh'+p8MDm!l6HYXNc@"I"4SbeUh8(JPEiLL)
+
+p0a36fa5`"@Y,Qf`%V!a[qi(IN6dDDKY3U*,8&E%&4je[X2epXIL46NfNU9Jh$aH
+
+m*pS4j(DV,pMd'%AAb[*U8+*3qJIN"j'kk,T%'TD``FKLa5fSD)6jNfBLY4[*ADJ
+
+'C"I[U3FfHNkkBH0VE%Zchrj+XPi+SSTJlr`Y[%c+YL5(T+mYJEj1$rrbQTmp4YD
+
+'JbLX$6dl[Ik#+LA!SjqqdE!-d)Z![m"E[V)*D2aL6IDIbiREB-8b-1qj8#`"-Q&
+
+BKQCHPra2HRTEimFirL&rqT64MVc'k%*SrY1"XJ1%HDQLd&Xj*KV%N9RP0MG@KM2
+
+jASQI(0SBFNR#NPEdF%!Y2#ceeV4mIKDLPSP(pR8IMQ63a&B6F2[GI81CQ9$lPa2
+
+d(&%#8H6XjIhb5YY([E4Y*+aqVd`NJ)Nhi1me0e3M-&F"*h1&,pBBQS$@0m,GDfZ
+
+8j[4BDRUDC8'aZ!MG36`e5Tp+UQA46(j@F6!)%(Dp`DI1VX)HK+m6C(E`!aP1G62
+
+!XIX6MC!!4AAH@"lh3&N@)r6qKhLFJhMeaP"KL*If4ZX1B3V,FFf8#3X)Nf'K$dX
+
+r0M!8q+$eJL)CbSdq'+U8U5,5M9E`#a)RJ*RSq0'6CZCbT'-YRNMi0YJ1-p%6"p"
+
+Z6iZZSF93b#,Kql$I'DpKFRUllTa`IE+J2FXF-$9l"(,PIUS+M$TkJb0$cp64386
+
+KjEZT!$Tp(i2+&6USX#AI*RD*VSTYH0&a2rN!H08,%3I(aGh"LYc0+#EFiSBNE@@
+
+kEH8CD)GL#!#&6Cj&($6*f0U3!)`b$ML'MYD*3IDr%ZK8cYP0B%(2[VTU&RhS,MX
+
+rk,YG2,Y`DLd,#fPCprc'lGM+fE$Z6*k0Q$`'fMcN)25TkSccF6ETD5@N1r!PARq
+
+S!9pThK8Xf0ACQRT1*A+#b5k5r8+%+9HSi*L4,$,F`AiPd`fMI$`Je$ZSMJC,)@C
+
+2BpGSGVaZJ*iFZH1+j"(RIckaM9EL5!c1JQSm2i`!Hek$i'pa$F&$E4b3!&5M8fD
+
+`8--,H'ea#-Kk!@HP%D`B[%bU)M%0AYT%"jRjVeZBl5fia-cGkeZ9eT%3ij,@9Sb
+
++rE3N4!a(e&*3J+Gfq9r5AK&[Td%m22hmNHHI2pUEP3dPA-,kA8$d+p5m&B`Q@'q
+
+Tlq5re`j20Ki&!qN5%!FHqlQ[X#[2m0(IK(M4G%eQR+R23mT"2K2e$&B%F#F9!c(
+
+G[ZL%dLjkQ)d)%FT(-K"3(!MFCQ,[F!jL!c`$R`p5KaBf!,,k+46EX"VL#6SRj[4
+
+fI%0[e9im"#"0"+UNG%U*ER&ak9'##83Id[L2XY#a'!6$m38*D(V$4""e-`l)V,E
+
+,R3NKYL#PM)HlY!XTM4-4pDLFXBF`dIdfFck)YY6DVPTX8NITm(V6`I`-S@1km(D
+
+3!'lHpcKqRH4$m1SbAFT0mU1QJH6K!,QeP2ap1I$3'GUZ`$8*FLS@+rNbbRbNILR
+
+lBZq0p(hiH$i#cf4,j,IdPp3M(@qHb21a(D[T+*+N,dlP,a8)Kf$HBIji030YA%9
+
+RNpmfE[I1p%Hfj5G'lPmN',2`FA1PMehBh2$M"bjE+(GqQ11Z"rEQa!1bFZj2-29
+
+aFaC8SX"LGZhZmirQE%BebS2+m-F@@UY6"bD,a4J12q)`jq!hqN"9"h8AKkL#@l-
+
+bfb-FZ9Afm3%rIBKq-Aei-%NjCX[E099306FQ$QLaNf98a2HRCL*Z%K@98(I0U*U
+
+DB'@)efN@L9*S'J``Tq`d+-!Iq-L![C0YNNmC68KkD8HTLcqKl[6&-4T,p'28Mq8
+
+@"E+f,MqB&c&Cj85[m4&Xm8B8@CXh%VlD$I"jC@ilQTHF'kdb-H`!GlEcDX"FDeJ
+
+0Ife*04JU9YVr+NrCdYNRTj-IP#@`[qYcE*ZTr3dY#G!GZ+jKbjBc8B21C4K56M[
+
+eB&GPF#%qJpm3V@ci)+ce`Fd+iKPXDIPCX-X#"X%Ed8K')RBaT+0B&,KDVS,#Z0V
+
+H4)(l,DJ18&mHi&0NRK3dLL5r("34IXdH9FS8m9YPTGbF2P$XBKUNl'2BC5A'GTl
+
+H+6kVS`QSe&)-r9S-cp'XK43"Vh*Ia,%PYp4((@DG%'(PH')p'#6DfUkH#%i*Dbf
+
+8-k6LcIHV`P1K5X3UiAJEX[kBaS4,keK8q@*!Z4QGqKf%Qe)8AJVd[)Qlem`RT2V
+
+QQjD,b9NCE#1+m&%%S5EhYlL5[#%pA**XmU6#3f#(T,LN[+iA&%#1Vf)Jd+r93F$
+
+"NJ+FP@%5m+rElrZ1JNVH+V8dLieZc"efBA)eD90!L1kh`KRDDfAl!,6("-B-ea#
+
+6ZFPQ@F25R#r)STBMSSKj)hj%&TSd!E[MBlRG*K#a6r#Yf)3YR66-II4iHle0E8T
+
+0QNJ,R-ababl1))TU@!PGjNL`G3p$-I`6'qmBIpM5H`FTCC(Tmfem6KH8!fd2&Y6
+
+,4+j$I'TC*[Cj8C8phhr1j109f!&@2*L&D9hd!95J*2Kr[NNQ0jR$1p'BUkf(#mQ
+
+-jj(DG'Q$ZXTFU*p1,CR+Y`@[L4L&!-IZ2D)L(&%8aQqKKK%J`i*ASJGq"crk68f
+
+PZL[`Q3NKTH'2E,cNkRG984V1*H-UYITMB&L#UQi3l`J(hk+!hKUJ5MX(fJkD*Lq
+
+P%f&)HGQ(e(YMQ8aD1+1l89&@mSlNDFH`TQ1Ajla%D8f!!fTc$L`Uf#Kc'`!@Lf@
+
+i$AG,Z1A-e`2BM9PM!K8+qh%mPdqT@ZJp4dK6-6#`&@aA3p#$lp9AX)k'$9jjYHY
+
+J3X`lP1EHr2E!1mE@l4-FN8[r9VZcR5$TbrkFkj[epd9q+MGH+fhJebEED6ViPR&
+
+-`Kjqrdc#@k(JqA+-,P1iEbHQqI6L@Y0q54TY"Km0DrE,Q44BNP0pqhjG@2[L'ZE
+
+Erq"XqrUeE9pMcEIr0C'FV$(AlGVlhMd)lD3UpBCmMdY+Qf#(i+hQ8Y`"&lm,$YZ
+
+9PYE2$X*rEbIKShea&#d@XV5McJXBc(Tq)+A1G3-'@6McXEb@XQpIXlSSaHBr"cj
+
+0PX#RkqU3!)m2Pc8r53`fSH"ZYeY-TQc'h1*BGD-XAaY4fD6pjbc$"K#3!*DXi#@
+
+1(4e8p1G8,X58K1E4SX9S502S*N&[MZM@8QGQe#1l6i)KU6ReFY)'dkX"KIDT362
+
+j"Y4A9e4&Jaf4B*Vf0b-b6b5$%QL)T$G,&'M4rf(bf1CGHZ$5&U3*"([Z2Q#fV`X
+
+hj3%SBMmThm-p2QrRC*G5GXCEL28m8PN@Abd`,lKiCA`(Rh5CrVN2BfMjqfZ+XAf
+
+Hm0mh@Qp#4JM$ZIUblMLmkY6C2B,YGEX)dADlrdQrlYK"V0Yr2`TJh60lpK)j4'r
+
+'(Yb25MZ0fSF8[N`d861lL3e@rIMN5rD)2@L4+d%RC[hCV'5$'Zc9Nh-(aIpElNa
+
+)pJAQl-8cV'5ApHL$GQJaZ*f9rrUI4lCM`Q1QG+C3cik$*VbI)dJ4+TNh'daApNG
+
+8lA-CC6+CD6*pf,-`HTZ$2)H+1ABRK%VGT+FRZ(N(F9rG'IGFEQVfDcX[c@VAa*r
+
+qml"#lbYBl8X%pIDelLca2f`4iV-9VqFrGp#YP6KXmlIrA2UI*S,MRjl,%NJHE-+
+
+YklEblMb4Dj'pBAC1@Ph31fp%Bp0"dl2m04b(U4$0*q!Nfr)I8KK#bB5Dp!@4ek+
+
+D25%L+Tm#JQC%2#Rh)P,h#m,jK)j2DhL%[,[(T&p[B4[El6EmJHXfaMjmi&V6U0H
+
+[AfKk`2B@R-h[9l-20VrhJNq`Vq4UJN1KPa1JimA"$UD#3G(0lB+f9CAT*pZQG$M
+
+d%3j3AHRq3E1Pfl"lUYLaj&&$Tf2#+lR`CdhU8jMQAl2HT*)a&fYQS6k4QFDLN!"
+
+Ujac!%dch8$e$6a3hEFaBRrH#IM#8VQCAc*!!bB3mFCI8f0a9X*Ad*Nl*--FbYZh
+
+)RPf56CThj$qA+l,T$ZTfe"0U$3U`aVdP-RKh@')Xch(a!#$qb028kUfXfhqZhLc
+
+Yi3rVYPPHV$[AA'#q(2#4!bY(44(8G5ilMpr,dRdEIpLk6r2CfLH+)GBY!P-[rKP
+
+D&D5G+B%0qmZFAhBNU8P0(ISqLNR`ZZ*P[8d&Xl6)0U#,kSVFlNm*j$c&R)N&b61
+
+MTYHAi5!e,XmUGQUL6X#TrU4fH-m1c6K18fcDH@QiVq$#QfTj*Fj1%'!02`RKPL4
+
+DVEXDq,Kb!C[aYKa8Gk5pZfYfQjd)j+KM6JbrN!$RX#2feXXj(GbiJH1I$S,YqmY
+
+&`&ZfHa+-0bcNm[PTT!HY-dmF--Pb'mEm#ham$4QGAb8rk)&$DY&66rrNRAPTX(r
+
+'QpR4N!$'&a8-aA'%)Rdpe0Uj'C3!S9'm))cj2e#XYI3JcR252Y#'m4mK[@+9)a6
+
+PP3CC,l"U-!d0*fM$iEZi[qd$l&ljhpFh!EFM-1l2E,bS*YbpEXkTHB)kAMBl8`a
+
+8iTaCbFVD'hLbXM6A*5jDaAGEhK'AMQD13cL$2dDEDr,6XK4VmVLM95N3+e`AUU!
+
+K2Kl#8-Ch`LfJ-JAZq2A2Dkb!!a"ldMJN25F#H,Tb4rhDkT*LTLpB1C!!`mEU`b+
+
+(A,#52@YMCXALQMB"X!"Xq"6Haih92'd#$cXYNb$X(T0-5RME%'Ti'fdeXlQbaCK
+
+eCEPXbfTNUmfB)V"e`,)B$2BIb4jpkpJkK[D9i@b9Sm58#9Jl6QQFe1D,84J4[IX
+
+F*e,F`2$ScS0mM3laa*IZ&BJ+b2+&Gal,dNYFK-qDZI14apTS)3f4QSrpM,&YTM$
+
+!9GkQ-VI2-*A+-Ma%lG@)[r9K-rm5h5)B&l)U@jaP'*f1hKmTkf0i9M`eQ3a'D8e
+
+'j2Hpj9$Sl0i#IQRVaBV4mldXa)X-SLE+XYp("GrlJi-N("N"LR+`mRecaB`h+NP
+
+,F&@eP3EXh6La6R@"8R0Ui8'Q,AIS)V('09j9IB(6)F*,8",&cTlaSa#*2N%l!13
+
+U-)+U0DVlc2Q3!&h$(N[U6j`3PiC5RQjK89HrPIkiDZR9qbbSUeEpaL4J$lcelB'
+
+Ve5pHKklGbHi%6dFm+#EL$a`ZDGE9j#U&"[-f[R#YP+m@K,i8$m&2PFJcKlR3cS0
+
+H)GD*hHcY,,4$#%+bM,QB5fKG+U$9ce!LHEEp$+lkYS*aJm+Cak"$)"6`VfqAMiA
+
+8rI2AGJ+BkZX#9G1,k-5bGJC6J3b+3'5DN!$C+R%%jjH-@6E[4b3kG[i@rl@("p[
+
+,[cF9(IPM@rh9aRp[I[IZmaJkXA[3mVYEm239h%)4Q1XeY15lmRdl$6X+S(YJ`fp
+
+1Bf0f'[LaRFCE[fG`'L88kZ[,N!$1[(-8pQN(&AB*6!(8EAb$&(I1S!+rGPKaq@m
+
+AND$qZFEXa1!hX#'"H4Fbl0X1,J`Y%M1q3BX'&Me@0#ek4`XYEc`R@M-%Q59B,89
+
+NRKkY20#Z-D2TheJ,QLlXJ`MI'R#%0d)&rhZQH@r'YI"MMb'ILmEPM5-!$UA$%el
+
+,hUed8[AKSGK$hCRS3152dFAmjNkU[SlIfT@`(0DhT"cl,X'RXa0SKAL)TjrMLMh
+
+9Jl'h@qpG)*EkPC(2&,fLXE5UJ0T'9,X!'A6#I8QBXXVLCdrGk@SC5%M(+CAMiaY
+
+G$QUl29H@HB6I(&jM1Ed("`2praaRZ-2r5iL[IfE%23fHLAXTiq%d2T10RSKj@FS
+
+kP,b$hX`QFH'"*dVH4IZVNSH@ICmpm&6*@a4QRNl`H%3i4hrej`If&qd2l%IJiS&
+
+hDhG$jJ12KX`((JfC&[1$%#kj43m[k9d!bIi6-F(KL,4Q2VkNGfYh6a5EqhiQ$92
+
+-R`!'(N!(XIeE[,Mf$E3ZI!1Y#pp!km)hd,V`$E3``H-4'4Mpq302%jI2A3F1k)'
+
+I'p8[eraQj9lTRbRFANP0Y1'T&@'rp'PIlRRbDqX,afPlGRf45KerbEB[bJEPQGa
+
+9['*p@-h%[Nrlj41jfbMN*#h('KYE9H-4Vr4h!I"2qdhibC'2CER2VikYbZRfDhG
+
+KPr(UNb2DjF92N`qXqX#"UZl%fBlmKE!HfkG1qJL$YQqJUZVkX9h!e8Y[fYF(-%H
+
+AAFh+GV`Y$r4G5lFempLhp%mlJ4GEVi)jIf`jFTcTqlAAS1DRGqeZ#G[j4!V[ece
+
+4`h2(%$eXkeqGGjA#lGIZ`#rrpF)E"IMGP8rdlH(#*a+h,jYLT+rrUq0ZYpeIpZI
+
+kGRhMheP89EBA2'R[3MkAZQFJ-FLiGLl88a`X[SD*$L8'N!$i61ZZErb4HRBUGhF
+
+jeZIPJ#Bp8EiR5$0FMGf,be5"1FmZ"lMib5`[jT2cY*KIr5XPIjh30I-f[iV2LHY
+
+3aN0H4`60-(`NLPHiec*"b0l2hL,TKHk6-5))'MpaqNJrS$06[ZrC60%L&TjG8qb
+
+i@RL1X@kP10!BkZZa(RACfF*EKR!CFSA4cYheZ*K6hcN[M%rJ&TUbL[`@i`h9*$S
+
+B%!#%(KP)qM880%%KIZm"JF[pqYphfRd(LrG2'([b9Jk&Jl*UNf%V$(kppDkk3Rl
+
+3lpdV,$`1ZTLmmaJc&`[IT8qjIMjb5*lL!P+aENM`l"T%P!XKm*r,*GKJ,dM"Zj*
+
+dri%@X)aVS`9X9!M8pLj,0CdS5TaYZUMQbQJI1'0rlD(U"(K&S38-p$k!N!"k,NA
+
++,hMbcH%dq#aI6-iRE+lr$SpqKmC51RcJlj20*K2!a`K-V1[qCV8G4YC2*XYpKT1
+
+cPlj$5YrpCeKTcabLC4k%["2plFm2icpLZi`ePJc*RGpEU+3[TiGDqqLe1raGa%a
+
+DfNDY$&AD)P3VQ4R(1PBqC)9&3CIDPa[N&aIkGP+pbbDefJHZHm66Z&i`C0@UX"j
+
+h[#GVQ*3SEX@Y5aX0DcZ'P@#Hd9N,0E,iDCDCa$j&dN6&K'KpCX%ZF9-hp[De[83
+
+HH"mYj(!&daI'p"mYEd302%+$9mZh)eli$`NNcq"8bA*pCYdNXZi&[lVL3(bD%L*
+
+PJ@!SA)cN&%rLY%C+%LR39'999M0B6Q,ZGSVcHDMRT!CI*)@VDYVK,0HD9Tf6VYj
+
+Z0HZY*KF8HES2PP64H0lSfcThU2#QMjGf#kYQT!iBQ!XC)T1jfQii9mR#MdbL0PH
+
+IEQl$bI&BH[KLR8NRE+AjXpA0m"rG+&P*Q11%Hl55F,aJAceJa1q0Ghd,'YI"NZQ
+
+)"$%`N!$S#SijL!a"MPJBV9m9m)iFB%GfJS80lIcHf*%[TYqjIA5N!cZb24hG`Bl
+
+LT[EC8AeK`Bj+'LDK`[j1"(Q'G6L"F[6kXBqer%pHa*(Z5@,%cT!!cJdL3R1("(R
+
+,pU&)@kP%i%qUQa[LIe))YM)`0ehC'ADeJf`S,qbNT1q($Q8R"IBbR&+C,QUf0`*
+
+EdC3H9)48)TciX[qC2c@H%l[XJK6jeXp3*HMH564`d(jjYAZDPR9#50Hm)8TV(P5
+
+,j+`#J+ap8eI`5U5`e+Zh8M9aMd-rPdU+$#$#9"SFi`8RkT!!`RpZM1JEY#L%+0"
+
+KPa(eBDrBP1UDj4k2(+"%IXJp(#iqD+`SGY0[hVmkdS%AqDU1lL"'H9Elc+JpF5!
+
+F'@5%#lU"hh1Ad`TDSDI,#6qLHdhTYEHH3F2`8$0$BI6"GA[Kr2FPHZ)irEN[4V1
+
+KTlFYXY0MT*jZ6[-TPHT4)SKAkiKXBC0JX$bNU$(*MS@me4N2+r6F2LYdESS-$R0
+
+6kcQ(&21'`![GJ#8N'NNUV9EPaZ8khVE4ChRMd!Z$)D0aD46J`A)V!4,a,4f3!#I
+
+IhLf)&r[S9kUPM2j)`B[6Ue"hJri`bK#L9eUf'YpL!+b9VM+LPGGBdj0BEm"&Bk(
+
+1B,8re%@heV!MH3rH*B&YNfaB$N66FYXFE`ap,PQjh"j*+aZc,P@qm`010EIUKmS
+
+lMR$r[Va!C*eEV#@jNeA$DDe4jYAF@%+R9NZT0D"dJ66![f@C$E-+#GmL1e-A*%Q
+
+a3RM3)&@2PLF38Q8F3@QfQ4PJ!mk)2irbC-#5&m(6SBq*!KJeeT)I$Z8+"ZC2LKq
+
+0f)jcdi,C"M'"FCr@E'HaSj&%3,8%fQ5R'A&N#amarR*b0,M)1E*PTfZZi6VkUD!
+
+L%+r&F%'TNX!KD!5m*rHTVb!jjKEZ4JQE1Q$U%CB[0cqGE$c,Dk1LJQV0(e0%U[T
+
+1hN&i*"peYU%&4iYE[4ci5$L-*U1#%p18rHYD#A9SAJXi%PHd#&UZdaZC6LY29[f
+
+KRQ1dK!TSEIl6*'I+SJLDIq3![HICm*!!1XUQ$hUZ*Ycr[&2p0HS4E(HX%`m)9%X
+
+UfjpFMbAqKbr`J*DeLm2'*4@@SLp+-hYR9UefEb%JB[j2#BJa15!1@3,hJLPbbmY
+
+q&+"fAp55LIRYVS+B3q(L!Iep6)IA`BY9q@'*,m+)P)&0YdJ,k3NAN5S*P4JSMXV
+
+5I`&3bkJ3#6H4!L$BL`5J)DSN#qGB8'8qi0L)LRZUcjj%"lF!keT)8,GF[bFEl#1
+
+a"b"N[-5DkJ@kGZ&2be"(PR%f-4DIG(4*lZ+hJehJ&N5I%V!FTT5IN!$Sp8*3k!)
+
+Np'[$RcrN-3jZ,4hTFb0RE&#*#,E8&dYX#4$mXDh`Rh-9&aZX,YhFB9IDF5IH`CG
+
+Td3IDliZ9YRJ(rYK@qXpjL)Z9@N,$cMDRk3fa3JBDD+PIR@C,Ep#[hA(qFj!!iIC
+
+eQNGkpc+RX3bf4F8bf&kr1XTfNre*IK(,80licZZBKhVSG24Y)p6R8DD#GNd1ibI
+
+mpI&fYcZFlZHC#Z@0Ipci)JYKGph6+!4E-rrbqrl+Hd)1QpSkIkbk1SEjNSAMdHr
+
+5@*X4@VV(NrK0epM&B8'ENDm0!BFd',9JZp,*A0ji19fAq6Z1SA@Pe*a0N!"AU!,
+
+PGa0j8!dDMG2d8hdEhGBRReKUErQ`c+8Zcr8PR-P`+q9!9FL3!#9Al9Ur2Y!#52C
+
+VIk)dR43P1`rf(jXQlTla$qP5R@bbk"AJ%Fj5$9UCUPKEDCYPPm,%Vm5eC`Gc*d$
+
+G`0,V$cqf5Rm30Mj(Y(GB`HP5)62kT+#4Glb9a8Q(XkjkRHTMkeaY@HQ,9Y'dm([
+
+r@Fr&T#X*6eMP!VJA@&[,'R'Apef+HY52XM5,PDB@63+pNB!*Rh)H6$TGiRGi1Fl
+
+Cc9BUQNTh%S0KZId(XZm"GjTASD&-L-k,9Sh&C3K,TfE0r9V*bfpPlMfG@!Vfq,m
+
+8l'Th-j2D[bRBJ4HG8R@SB)HEeUiXYGKZfX3q3ldhdEVF82!Cm(hSqTNAjJkNb1i
+
+$r9L3!*!!!qSZ80m%2hdH,YTDrLBBBRqBRid"m"L0dPEGbFjX9Vr+`'BLTcB"NpU
+
+YbMpBlrXb"6l4D#E4FjGG-mUq+1*J%*KLcjX@V6b!MUT[JNp@QpJc"i"BSM)[P9a
+
+YJ9I2jZC&BhB+*A&I6q3B1fi"AH)4%'i"aadL$M3'JjpRS20"*d8Br&6`jFf+9U$
+
+1#4X6AX)q[V`$'k2Zi!-RE*2$dfXM8%r(hGaaJ!"BS[G,i**)Fp5d8l@a9"Y'6Cd
+
+hA(3ehL+kLkR48p(8IbVe$$+-(Je@`ap[aXRKT+0X"pCcLpT@D*c56![G"&@Q'kH
+
+'4Vm2I0+X5h',PXM%Vp5D!Kfi[90$+I1'ZeCa+IBMa%VC!F6c&'2e8@8,#iRU$"#
+
++H-IJ@#"k@h5rYN,FPXL0c!($kA"UkcZ"")#l@0NUSppY+NRK0CmCJSbYZc9hFL0
+
+ER3%3'hGD"R,6,MTMC0P`r'lX6c8Uq1P*e2@`cX2BX*%&)6-!TlI0,BGpfCjXLAD
+
+"-KS#B03"`9V"08PCF4jhNXA@2G51cRMXqVBZ#KYUqqIP)q-Q+TCq3KR#p`GmAHI
+
+'`3'N*LmUDq88[Dkp+LP'XKN2(Q9mSj@&kS[S)5'2HJ*ApMJYj@JQ5i!aA(9F+DC
+
+B"DZXRVMBqJQJSb%,6KFHCJ-+A-hXMU2NC&dEUcR#-(*,&J-*Ml)9rL$p*-D5T(V
+
+6F9E+ij'UH!Si'Ylm)!JJ,f`%FAm`DkS9+!pljMZY5P1QL9h4+lEeZAd&D,!k$(l
+
+S3,$B6,+DBFXKYr!b3l@0&NBlb2'&AqXb+QqGA%AJf`9K0T(maUKSHh'HfjVjV)p
+
+HYK*4Nhh1[LQadaNfE3eDXL`fkC0*"HbM)[SQmFZ9Ud%5q63KF9%1KJCe,b3#%Q&
+
+G5h55V,pT6#+kM)&K%'[N$ie1kqX+Ee(6Jdm!(U8cd@3&hILG9LhYVfh'h2+0+F6
+
+L(aM`Sk5$#NBb2)!Lpm'!3!5f,4"j39PTXfcZB-0pm`kMrMD@)i[q%L2jrcI(N!$
+
+NGGq%Cq%1X`GHR918dkh1B8ec9-#LRN31i`&Fk,[9hq+9qF$&ZU(IYIYk!q8rIf(
+
+B0m#$#FjE52MBbfDqY2ke1mLPG3-#dF%1816X56ldTA85[3iQZ,61)Y4Kb[9"(8i
+
+qB-%Y"b1LEpVjcEYXjZZEYVAp*IAm(H[Ud26!9Ehe*EZGi(bTGR8*H1!pr@[5pZZ
+
+l0`2UJC8YIAI9Z,U'qM(HHY0Uh[C'i8QFZfRrE(HVmUN(9hF6T9j1FRRDh3Kei0H
+
+6%5pBhHh0kfca#eD*[qEYl,q5N`!(,hdQDCK%AeXSqk0A1-Qd-4Y3()8a!mU6Jq8
+
+2Li+F$c,A%AqV[6K"EJE'YD-YN3bP#Y1%*JNlREVIG6rK4+qQb4"ZqSjH5,3TQVl
+
+i-AAif@+T4DcFhUYTem(*h)j9#&Q+[28NM-IS5TkHKE9hEmIKAh3RBR-p243T,EE
+
+ih@0ipEF5I(B9l0EC[3aaC#@''!`eejjYpBkmZ5HM,l`X[BRcIQNQ`85TjZDclcE
+
+)I%@Vcd4D#PQ*j4rJ3rHE2aQ%a8aj#eR2*U!JFACk*@i3mZXaGj!!r9L1DVa(fTB
+
+8c2Fe,&dRF%mXTerI$dElk3C&FIhEE3Y3A,Q6dJ8S,SiHTAK"X[2LlHGklTU+DZ3
+
+,B'aBZ+YJf)bVAG+Sl3P-"qm1jEq%Vl*&Tp!&aSi)-)Y6p'"!4#`qILqEp`hmIZh
+
+(,PimGVCaUaQCPmraS+TlAQrhlVM!a@!Kfj+!%qh%NSpcp9dTlN5)@C5DIY96V8&
+
+&ZD0,k,QIjr8B'@i&f&E$"[ZJ3`F0G9#PPVY(F3b$6,`H,SC5TpQ,52PpFmqaR9&
+
+%*RcC$!MJTj2ZjE1RC-a3E8$3!TrqC,'FVCp,0bfP3FVqpYHb2[riU@cmdVSB8bC
+
+*M`P,RcilIIR"QI[iPk*N'6ZCe4e`8`Q'6ACP5RX'BAmqKU5H-NH8ib38X3RPlD4
+
+C'&jB)pR3M$0i#GI&E"m3Q6LMVN6A64GkRTT&bG-eb69T#r(S%`qqiPjeb&`-lT9
+
+&6(!@pm#bERUq"e)SX5rDb!+MbBZc[6iNHh9B`iDDm35TBCS4fL'B)IIB[#aQhTL
+
+%*,QB12'[H"a+16CIBbAThQB2ci$dH@qleT34'8jE[m5NRm-aHHZ01kCbBKb)@f2
+
+%RFRXM&N#L)$1dQS8CfEa5JpK8bBAV9&PZY5iHDi!q,9**JYHUp)2a,FlLam5e66
+
+j5-f6FaKjVLI"!Ppp+%Y*F10B+RFPY3-(a5Y)kKD,Sc*TE1-3CPIpDCd*rlR",@G
+
+jMUd[K*T[F6D'(l"fD!rq1GD5fK'IqPNU[()8qlUd2,-"$$bE$[+e9"3MP04*2dC
+
+EEjcS3D)U)X*U%&CAN!#1Xq!N$kXLHq!)h@91)ISUrahURj!!jE5Ki-$PC#@&E9&
+
+m`GAT6NCbXm&UVdH@($!"ED5fR"HGEQPk2Vkj($!T`XpSSd%S%ki(KBGNqCN128V
+
+@jE+9V,'G5dIC+9hjAE&[Ilr+FHAbI19fN!#(b)Ke0f5Fr0bKT"BhBDAil!Ie)Xm
+
+eD*[iZGQ"r-BU18,Z)IE2bC0qmLVeMJkR+`HhHcqM+!BkcqS$jje3eLM!GAJ[Yj&
+
+fdbjNqRYh-908mC2TH144"5GMf(,%`-fBjS-T@QL$,XF-"a9i$U0#DfYXrGKL%0q
+
+ZAer#4A)U5qaaLA8Dk083f,RT+5haG0&i9+2Q-ql`Bk*9rZl3brFK4a*D*Gm4A4$
+
+AaCDGjBRXrHX+kS34a@()Qa)iXhmF0N@Haq6RGLXfQBdlJR,hT'Aj[ab2aIFhbq#
+
+d[RJV@Ejh9e3EPU2%3iQa,R"b(cJ2RVT061QXZK4#(8+BSS#feTG#5Pf%f4meceE
+
+kY,KUiH(TXl2ENeKCS'Vr#&%B!UT$(*hp@Zj1dm#F+P(eAcdFa21"jlmpFf[)N!$
+
+@dr&`Ce!4%-q&dkhh'R6[84A5`YXJ[*!!5,50k%dZ%UPF)V36T@&8H&G[Ak,CTJF
+
+EViP,4Km'8*NFKX*!PB6,`GHJTkp3DSbP&&SED6N*pEMG9c@[1+3DPHNL`,9J*cH
+
+'3pMQTbRpGmpL*1rCc@CQiSTdHrN@bG005q49QT*XeQ3X'cC3J%jFfT0PTcT6G31
+
+ZDCcRFA@1EV0A"X5LI,%Fc8C@0$31%bh!i"aJN!!`PZdB01%HTP(D*,SSZ'29c!2
+
+jE#I%q`e'kFXTG-c+m@"hjbUJIETNLjeEJj+(E"bSlI,T`L,GK4GS#`C6h33m$lp
+
+S$SS,Qb8A)+GYFPAb,PZ)Ki65["fG@MXHRXJR)pNjA3T0eUa[Hh"&&cUP)i+Q[-(
+
+q[[Hj[UZA0m(0TJ%UGZJrkl&+KCeJ1+`ikcJ3[ci-Jk0-rG+[9Ii5D!#b4SAd*e[
+
+P[Var43&ICLm%ZdH6GbmAEFJ4*RB(rQ@SmSm)iT5(f'HD`q4*@imVAXM[`fL5H9P
+
+Hc'8j)i90"GY"X'62Nl&XBfbMUBQm6SC6+-q--2CRJhJ3Y!%P$e4eA4b)`F%[`mj
+
+aq66e1BFp2PQ+iM[L%[S#D)!Q2'-f%-MpH0VEF"KJ"id+a1k8'8`#qa@d"!#8BpI
+
+@"(b!YLF-Y4QMU@K@`4`AKT4A3V[lcpki%`iKJT!!FE+#l[YBllY$laK!e,lmDrR
+
+P"A+lifrreQaPS+"V!H,$qF!9Tc1AmK4*2dC@*SGLk$Hp%MIm+h4hi%a&X0D(C(i
+
+mEk-LkRBTi#B&#+lMm'E$(PH(VQ4eB"11c@VB@ZD$CH-8b%G,fi%pZRRTESIp2Zj
+
+jJCE92"@"+FYqJ#1X2"J6*LGNNrEqdC&me*9ekKZ1K6eh'h*8B#lDk$TJQd&24T+
+
+1YFdCQP&@0TDHa9BMcpcCP)9QUm1`Q%fqk,-k!3RE5AjHcLDK6)%K(PLC6hH#PlG
+
+pG3[pEJPMTTBP((4hB$ANY"HBDcKrV4*[6BdpR`#APHIEN`3$)k-+!8D&Z!hN)CT
+
+r%[Dlb`fK)#a"kND,4%mHFi"fLRB0rUlY)ZAl#[#[+KB@QEUPA%%p4mIqA1N"YcC
+
+FKe)6)6H0X!VE,)`&Ac6@(mqYS%HTjT!!-'&Tf82J+m2EN!"+aM3L*E,f+AZePT%
+
+36@3e4E$$3NE%lG,)L,qf5NE8-"khKR@h9Xr0r`Fadf3"1Z!@H%4aX!ZUYUFQh9k
+
+p,fV4ECUKep(4ea(Q$8h6qePZ)qM9$EaEbc)3l,lETc!,R!Y`X5&3N!!jYM[!j"V
+
+(*YmM!2TF@HN('QYj0CK+KUJe`SJXIC!!D#(icUYjjAlH%6p39)Lp3aGec81hAmZ
+
+KDjiALZC&SUkHV$B`Blp#P@43a3E5AqFec@SMQaml-cKT0JlMc-aH(@)kpP1pmmD
+
+d`S(5A#EV6LP6QQhTbr-+X)Y3VLDDa8,Y-JCc[6k@[+T)B[8UMP[XNrD,(,QMX&N
+
+-RU("M&rEiC[m)3SAE6"G5I1*Z-5p`,Y1)*ZSHkkYTQcQLPL*FCjIH8)[PL&Dj4j
+
+(a[m*)f12!kGXr5N3ei4ZZ*TCpB(lEK-'$LU(@%lH4KTp%&13!,$jTBlb0e-GTIm
+
+5PZBp(89r9aP&ZfF#0NkI``+[""493G4Y&6G#3M5M3*+B(GJ42,HQ+eNrI$$dV4I
+
+XQ'TqhP)r,#8ISL,#HHY'4%`K-"c6dhZImejhI)5LE0"EUaJ,1e$EPr$KVXEF8k*
+
+1GLk!Z0&diDDlY+L&R$3Ffkidf[58"d3UR4"Z*pIP%Vj+Vh-6`Y%%@IF#"i-%4-!
+
+d+VF2$H`LNLLJ(`X1F"6KjGkPAh"pC`)qr!!aBd!ZFiC`*33hpe2Jr8r&irRa31E
+
+KZLEQTJ,S0ZSN3)hLCJ`*NH"IUbb$U!'SUSi9I8KFcSmD1EdMa$3BVHqPpq)M$-&
+
+V)"BQRYR3iakD-1[5-UP-TAFBJiHEX*)$GPqkV"DJ%bLmIf-h*p1'@ILYA"L'f8I
+
+4M`Ne-T6Y93@CfImhK5,R,,QKIMR-lkPiX,1K8`LqZqPHH-@kMmV16Nh(-i49#V3
+
+bEh'A60DD8!2Pj*XThppGC5#0S[A-Dq[Y`5R)C`L+9eCBTl3Z!fV3p0Xid`K5+*k
+
+3!16[+3UkN`B#JTC!$ehY)Tip!-,HDkh%qpL8&PYl3U1A1"dIpf&,RBb2KX%42N*
+
+`"T!!"3q43LJHX'bC3JCMBSS"QJH[FfRa,$KeVbjpYTGd*,qa,!d-liX&EADLY0`
+
+"VmT$rSkbQ%F[51R@*-G8F1bbb,G&[M1(I-5ESS-(l,Ym4JDRqXT0K&af9ahR-kY
+
+1N!#*,ZU3!)%i`GZN[5NUH$Q#HerTM4!Sc**hLjbSS!B@45Z[Z,-X[Z5"K+Yd*FB
+
+%N@`S!AM*SUBDXK(4&c"#jp8(2L8m6&-G"R6"1(#QhZ2!"8cS@*2NN9GAFNp)!NY
+
+(%$r@G2F-9C!!ZTT)H3@9ZKXD)c*V`L%1`NA[`LHHmD,mX3D-BK`jdICBa'8%Y8C
+
+m(FEZ+c1NH50LK[+,iT-d(5N%!dA[TH5IMa3fh4X+S,GKk'`5iU'I9Tr5)cbj33!
+
+BpA6MKc12YFl&8X5#caaiSZ"h5NF8IUYq++aI+@-VTIZ6Z6$,'M(jdHkMZ!)M3d-
+
+B@E)4Pc@DcrDrMLC#id)H(NI#[bA-+#p*5lE'k+&rARG8R6a[M5jVKLkM0ZNaZlP
+
+I3BP-Fc3j-*ar!2'UqX[YjfSaedL&bAdIQ$lF#Q+TV*,3%2P!@G-!h&N@bp4$+RG
+
+H4S3KfI@Q@8@f3B!Ur!V`[j6qf@hc#08T`,"r!AqA,[r[TR[r1aEe[qkJ-&J8dZp
+
+DI2@T0pp#%MclBA"k*!T*%2&8mQ@UZqipjrZ`YFj@DS@06Tb+!PmD!bCG8NfXL8%
+
+kdM1e2$U9GUDChMCG+$-d`H%bLm22$MP)Gp"S)pT#Brb&VF"9i(pFkFp@NU@#r6'
+
+B[H`@R$T`p$Hl(Dk5Hf@JQk0fT(Z%Z1hYj,9IEDBZjG'1)IP0@6RfmP$mdei[J!5
+
+er+YiZ0IZL6eQdHr[8h`YD6L'DTqpIkQ)821e$M*PVTcS"VdCNr#hl5!eS9mN(rD
+
+8B"m,fGZPCSRe1@,m)S52i4"qb`Y+crmCG5T1'Z14Qbl(4G"8ieJ#8me5H8kjVb1
+
+5*3SI05dhr"Z6*P1[DS@&j(h19K!MTLKd"+2!E-&%4F"jGJPL%bYGM[Y%)q!VVF$
+
+0Ir'U+#cHM$Xk'lFIdZ1cEFJlj'lEQr!Rd'#B6H!abFp@fmeUDd4AULh[eb`VAQF
+
+(dP,L#0FpF,D0IV,he4'SfMpNICY1dp#),%1*&C5'N!$&bIb"8VXQDm3m(h"U&$r
+
+PqV!`+dq,(q@ck`k,[J!VVJm,$k2L&CNa1#phr#LGAjjB4[D")M,)cI5NKjirY+`
+
+lkiJJ"PpEb&9M!J14daUc4&r4QYa&q4[Dp9bS`LPR2Ll$U+L)Bf0[U%L[+EJ-lHI
+
+U$QTr*HblQ@`XbTe'JRbcRL'RYB[J)l!&iTb$GA&3lQY*Q691mV[(%r)QH5Km[[j
+
+8"`cZh%IB(IJqUR)UlLp!3dA&c0"JH$+j3PPj%&2[l4VZDc"(iV1l-1dTpAda&19
+
+m2129m2l"$B2L')R8aSG@5rd5p$FC!,Mc'bB3kb94hKHP8ZN868,'&J(93d3bl'd
+
+%UkM*&"UFHeTK@iBIT$YE1V#HA+P)*CG3P([[b"8*'"U1dNC3U0GB(ERKL3Aa"$Q
+
+#Vk"0PXQbClepE8&E,#eT5pTMr2AD*5@d`09hDe1aXA"$re-AXXm09i)5abdN3F`
+
+2bS)L5hI'afpRHXm2A2'G&)Q6ZMc1j33DbACYU)5+'%&h4LXShB'+$YJI(fiEq94
+
+1(pr$D63mFR,k#Vp'+,kXRQT[$'fq@daMY[S0#C!!KJZl+j[!(2'V`"cc11BV+k5
+
+jD@Ne4pE!4dKHMJ!HKdP8S4Z$$!-Li,K*"`IfS!i2*Q"J50#@0T-0MQC!JU-XJ%"
+
+YSYAA,V*)&$(I*p"dkrTA%*MQ95BPm1[h2cp(!(!!4F%f8Q!IG+4!iaa*33U1*S!
+
+#1kN$,%""%f+"@9k2Z#!&MJ*SZe'3!1&a(mN+""-8-!Ji+S80("N!!BrT`"%(jjp
+
+aQipk3`!5*K(efhdKVL0!J9QB*pYFM[`5'@2iBGG1M`qBQ$IThmm'$Mi*$6$beEM
+
+ekki2C9C$4H,YLZZ`fKZAiC1G1XfmI&%QiilhDqT$kJ9$8dcT3GR3TP$P!EJZ0YZ
+
+!@hi`MJ!XLKjaAfiD8E%I'8!3EEE*a[P2Z![FmYJKZBd*%@KBTfS`eQ$#I!LqXZC
+
+*GCQc&KaN,TDAE&YAGTPm12XmKM*fNVBN1cQb3UMZkfZd*)2ja(e)p[@1aI!eXPN
+
+ma$2ha0i,m8#mJ14d4Lb+4f)*K3Gr)Tk*mQ1aJ0mQLP2%V[N(TUCGdH[b-US)l3h
+
+LY,dBXDU[P[HNUT@ZSh@q$4J[F9)HVK@,+GiD,r%-H8fH6,lAV6ib@+9M1ML#)-4
+
+jB8pXSp)pbIl"J"%CbS[Y%(0FiiSR`LAP$fJ!0KaaE4Z5-(D&"(UV56,X#*)IAPh
+
+edE&(F!D`0JHT4%BLM5&J4[G!@(kY6$0+0$4ZSIP1L"F,+3ke#LYUKcBrlL@qlL@
+
+f$'!N[2jDH3jhEZD8m4kZHYcERp2fR#iq@F9(Yq%jQ4kmCq$&,80$a4DjE(1cQFA
+
+!,U$C'S4L5bm%("dJ)R"1PI*5f)-S%Vl'4V,J58aKP-CQ+5CrT&5h)4@h2Me0U,A
+
+bkX)T`GZLN4cUY5lCXN*i'!b*Fa&i"AeR9mM6eIU0p!B%lE&KZ%[N"VJb!ja-k8e
+
+#lZ4Ua&&dL5!kCTQJJ9B!ThLV53'IiR(*i@DTQU+&eTST659me#c!I6aMq6SJ5Dc
+
+&-5L*M[XDH&6@`,*,f+EC@&fiSF($'1+pNQVX#5I#GDRjA#[a$%ZZ[J81-E!1)6h
+
+M&i[RQ5Q+SLiASiT,R,Q($Y2i@EEbI!*U,qr,eZ3,q$-rm`,b&#*kQr#1cYq9B%b
+
+1ZI'b)jEEZHF)FQF0(hlQ6MT%90a6AZYM%9$)T[0[lGRM(rT[%8JX6(Z")`e$M-p
+
+KC[[SMR23lXUm%#YAKHFdJTcVP5a8NMJa@I8NaIJ9I9@%9a',-2&a*SY2086UV&c
+
+PMC+ck'`Df4RBhGCc95LLTUjJm+KRijjMB6TI%fFTF6%pH"#D"4k1JfY80BIC,Vk
+
+5JQ)fLa$3FDjp2Q$5j))fA*I!MXPL&NJTkB4AdNX4QSp1VNNbBRpc8KY89DLN-Ee
+
+'"PQEj+%b0)j`df[pQ&T4*J1"DT($l+8"S%r31RTIR$dSirmcb!+iMlp32AF$H9-
+
+i+hcc2M!,6pch#+!BGiJR0p&q#*NiC[-8&lb"U-Mhe8mSf[0q"R[iF,c-Rh!fr,9
+
+HrSaQlKb,5c+dU[Qk5(-*@F,,GPQ@M`&DmL1A%HbKf8@9%2N35,98N`J`QC%28fd
+
+!0ZU1DKKKJP!b82G@ki-,aVTC3qe%V25kXB1bF4NXCfGlVPk[lP)C6[!TDc$Ki88
+
+YYfXjUFe9Q9','K%mjN9(S4k[Re01Cf!#bXU"+NA!6!%*Ta`1qa'MLpT@f8V8E5!
+
+5kE3XLdD4kQ8Q26+QkDj5,lNAK`3HdPXmRS-hi#%Cl,R356c&TSY$l,Z25,rJY)b
+
+'kR8)Fc%CEEUaG`aFqIMl4I!`#%YrmI(c'`UYp%bmdf-33LGJ%!CrE0*VPe5-%bQ
+
+8bUiY3$P-KBb8,MGaNQmlQCCEr1VcFGqi+Fb,#NPL*k[Fp0&D*Z$i3[ZDC%mBBq9
+
+'Q3L)X@9%ML`UA)hNRd`m)X6`)#`"X!rm-PNe3R3RN9Z[U1h0plUc38lpdEY8Kjj
+
+kd*ampMKK%GcLR"GS8qD(H5@,B1X#G@Ucl*UCTNZcRP3HkPAK51'2!NC%!fhddq,
+
+qH)4N`+F(*Mjd[`1MA!84C2a(eh4PMM%0BS3`jjNJQrSDAe[[NDDqE-09a5N@aE3
+
+JQ#fUNbAD3&h"cRL#BSFSNl'e8Dc%lf'f%dJQ##e"q*eM#HYNG-'c,Q89m*iSlGD
+
+DbS0`@RX0GlX+6FmKe4f5`mIDD[,P65U#pV2fbHZ+e!!hAcFk(ZCII8eSq,H0m35
+
+mi@pI"6j+ArhYiV*iVAF2(AbqmKUeUGBkd@Z+ZhLGZ1&id`N2NI4jBiY+)")c6iM
+
+bXkG28+,AlEhFMUh&&2QJl+C"Q4jEfbp(-E&3`H4km0*0)RL(2B!Ze9jC,qp+#l(
+
+3bERVXNKi!&,iNp*#H'$PTJS5[Mk&P%!-HUN+9mEK*Ll9eZiE'Vf$ETVRlhE*GP[
+
+AV[I&"mie+[VDEI8QIf"PiG-6r[@T"Eb%8YK[0GD[&MVV6D4,4FU(l['`k0DM,qF
+
+q*J&h'P6Xem)80((Pj!52IfTBG#bCi%5HdPE9"9@TrC*CJp*&iS(5aGdNj21DVD8
+
+TAI%@N!"iH+XCJebhU#$)YfhXQXY@c61@cS-G)9j2-V%aQll#(Y*S1NA$'jpiYlN
+
+a&5,K&(II1"6"CNINq4bSR3B5e-m0KG-qMM4AlrB5(5(HRTA5m10hc$f4J-+h*fq
+
+T9L8&ahkZ+6JDFEMk4p%`5jpHBp86r(Q'R1DlVVCTm+PhV9-UQCh-*"R0&Aa+@bR
+
+0dlk`5Z)p4Lrk!Rb%e9%J%iY&Q05U3VSH)2dAJ,VE4BJ""Uf,%(r[Z`KK4&2iicV
+
+fVULpGTVrdZhN``F*NjhYVKF-@l!$[C4Qmk'pb1!c%LE69Q3QMDQ2aci@eC5qiRA
+
+3lIAee*HE)3R`*A``(L5&ipcrS0Ye1UmbG8-kAHpdk'+5qYeP*L,6AhRD"BDeJ8m
+
+1fK#TAi-elcTG!#""ZDlmPJP+0H+lE)DD!ErBj%bpcR`9!3I-Re%X@dYGJDd#C1)
+
+NN4VZSeNlqJ%P#cmmfG2&UUL)0@'J0RF)F'hT'V%Dq8@1ANZLHU6D[Ui5'@c$SD0
+
+h6h"5Re,arkk#i`$FjP*G9PbR6f5Uh*)Fl23FT,N2+06+GJ"ldZUiFhpcIr,qhYK
+
+d3ZlAb6h!M[#('q[p-q4PrhTN&9pX`A#dcSlX6hilX$-TP4#$-2fLXV*[U35F"dN
+
+Mq&ZK%()3aYUij6hk-(fTFSMpq+k@Qi-3[KCLdh+kqm-&Nl#cUdK[PiUV,-pB&XU
+
+#5RMSDh)*`8!SM#QcD6TY!,0TSfbUG$(M,[&3[U`j5V"Ff"9GAqf)%GVVZ!T4$)H
+
+T3[5Cj6EX8S3@"*0,`%IFmMRB,KV&F6DNG63fK29jh6pPFFSeB4ISLIYPIh%&DL@
+
+YVGA-af"EcU%Fhq"jSZF#6!R2@683EC5Gdil+i8PL[NF8m55T@&CqVY%QBdb5G&f
+
+)qB%eRCSQl[[2(AH#C[`0ICSqpTa"C5G(frBKjkKL$'q0HI-1eI&FB,p9[,q'3T8
+
+ADa9+9XK$RMR#`i0#J*Tp2G#*bL,#1QM2bbPQHF)D%[F+hJC9dfP+FHmlhh-(&YC
+
+5'B,&H6XVFUp[$ITX$[*`SjA'#BUY9@V8'V68NU4CLY63[fcV)T@D#%Z-M`K5a)U
+
+9jRdl'T,i"*!!9r)6T)GfP5)HI5FrVe(+G&'IlHFU2QY!"0!mjcp($HK$V3b*pj3
+
+I!(0,&'55Kb8"iUFDFfqI-LGp*G9F@ZqUC`Ta+%3SBaf$Y8@CD!*hU+58D+PS[EJ
+
+b'#EM!Yf'YqLM2#YCBLK$#bVM,P6iJ"i9pDaJfCNU@IAZI,24f5'2miI"%68&2SE
+
+H)[FJRYdAQSZmPdAZb"%ik[G4-Qc%U3FTKpRJL[Vb2I@Jdc@*"hjXY11YYEq4MZ*
+
+IEKJk"5`,(ThNM#kcMU'@'A@1aJ#-daaRTP"DS"Ld1`rJ[33#6B8F&iPad&a2),a
+
+eKTCReIP"dJC,#%%LU(T"eTe1'lIJQH3&4r,KHL"kq&G$A2J@fI%,m+pfap62V6N
+
+Q4h`KU4k@bda&N!$1bLR%UTA'V4L#9-3'&%e6TpTj6$T&S#4V``V[(R*[!0&UZP"
+
+Tp+i1@e'!TKEbG-C,&M)N&q+a4QXVLbfUpmff6kVG6&0,)bT,55j-1!ilFF-q%`-
+
+a['VHPBj6B1SKQlIKKK'EL"ebmBe0f1pNb6,`Zm)NIR)F&,RXMid'0lSe$%"#8,l
+
+$lkRCa",YUPLX1JS&8358NDHqiQTdAF[SBL(bf%`@dPe,T$1[pXkfdS`m@DBKbU(
+
+f-@4+0K(X)%Ll&(1`1%EQSE50eD*qbTUEL-J@3@M&[%A--UKN&Pc&BZT!#!#%hF%
+
+mQFTEeE'2dcdf)20cfC'PM'ff2B69b,32*bG!bDYi@Hb9cJdKhNLeXdYKAbUhaGC
+
+19!E*[XP5l*U&VLdXV`"F5FKbVeDjKZLqC0#,"@AamG)4E"Uqml(-G`S$JYA!j$G
+
+rKDm3!V&-54!hpcm%Bq3FTRNCcaMRDD3EF&Y-%[l2CB8kk'0e&M)8@H%+D5VjT64
+
+QpdHBk6@mXdNJQ",3F-GUYc(IFZXB8K[IfNIM2fP`kYq!'X'XS'1bDFF0@@08H5c
+
+qM-hbrPcD$GHAIN1G$G$bV`MqEVa!1[H0&`Z)cfL944EjePKCeZX3,V4@2%N#2@k
+
+J+$lImX&EB4"&-hGLIP#1*#EY[5i(,3Q@hVriJpYQU0V9(#icXaaY,[3-'MR2pm0
+
+MSY4ddfhk"#Y,HCXN"PKNhb)pVScRq4T`rA0Md36'HSN"2U,,@ee)hm62fj*PDBK
+
+CZPLqM1iYeL2&V0M8S))UYb9E9&MC0AD60fM'RLf0D4BrL#5PeVYXQH0`BV4NC-e
+
+pJac#-)k)`A"YeYSIdXZ@4q`(MRA8f,+VE!%1X9&(BkrPcLbbi')6)q8me5k3!'Q
+
+mP`8leP$(dmL3!%GDTM,Z6J[!c$*LpRiLfQA4AK$Y4G&q*$TPd9N3R8A4HI3qlR'
+
+hi+bd3iZ(#3!aDXk+B5l)R@p8'f)&J8(hXFh9Nb3DCUbLB5bb5Y%`+'-fa8Ec09P
+
+&IH"0C+HGP99Dr8#aEB@[@[kGB9@k6c"0)`C""c+NT#P'hh'$jDMMS,9)kI9S[lG
+
+QMjU3!"fZX%G!3U#c+KjiaC)GKM"jHAe8&Y%KYV`q@X!2cK*H['2'X8Fa#Nq&U4S
+
+MZ!3)f++%9-*rA#Hj)i0cli#3!%5KhZ0RU3[HZXY5U8aRRPL2VI"(0VJYBAPP)B*
+
+ib5ZHKc@G)5Vke3)Zj6N65r8@5U3J(BVYd8K)iS+X[4l,Cb4pf@iE3Eh,G,9@)kF
+
+%p8N5h6(SU24255,NTZ(e3Ii(bZ*[FA-&fJEI2N24T('ZlVV!AR8Pbi`S[@c46p[
+
++TS#R86HT6("["Ye0ZE9$XDP4[MSDL@'@baKD8"5K8[Ad*&TiM@)%IGe&e1%(8Tl
+
+ahQb,bNBl&b@H*ZP)af6GZU'TJ(b)"ma2G$+FD8eP*#YTRqCq3aEThAfYMS`-lNf
+
+PkGf["CGl1!aS5qJZEaIeEJJ[,aY0#eC%MLm"eT3"''Ci2ejr,pBH[3Hcb8[d2q-
+
++e8+9F6XS-M32U#h(3Bb+8jZ8jiTpHS9a3k5PM1NJlYGaB*!!G8[Z`Fb)-P*!)J&
+
+h,Qi!eQ2ZRLqkhkbh4,!!5,JLKPK3!q0Zmf3%dJCcri&K#`5G4$-hj$k)CjicHHH
+
+4ib@ajp0Kr!Q(F#0pfbNmNlL(TfiSXjb0cZG30JCr(SY)Ar`!arr"KqRq4)C[RpE
+
++#r2[q2ie4I6m2ED40*A*!Ga$RVXXDm+qT4*ai*Uj($Ge-S-$2)TP@GTJk)-4$*B
+
+aS1TaD+QHjEa45BUhRAd!"h)YMBRSM!SZ5%Q5UeH%V3BR6P5Y[8"NVJMSN!#8%(X
+
+4%895-BkPTd$+i4jF0mQT*RBUjj8e-UTRA4U`jN9$pVLM+XM8)1IK&"ajr##FHp"
+
+8YC+BPbIPiR[3GSGjef,%@ANKZ,B45-2Bb#aD@R6"*$`Eek#lm1IUFP(r[SQ$&GH
+
+HaE@YCS'TJ&ZiRDdH["8BEHJaXpKS`e@mGpYV!iKZG6ba2%bHBaGC3H&CY1L#J24
+
+R,*LGPJ,d5c+dQ@rImrVB&`ld,2H%QV`qa9l6`rR@Q&"iq&"$Y$GH3kZZ6b$,c8A
+
+ZTPG4TSU`[+TTrek[3ZcHS&MKLkPQG@VK$&JK+MPb3eV#lp#@r2FcS+$rDRl+Q0&
+
+!SAN,V3aTS08S-KLJ'3U`2"20Up4YJp&YmM9e$6SKmC3U@AP3l,G3$qfEUe,D-VD
+
+54j8IP*Z+-@G#i0S3P4E3V2cr1-K#@TKV%*dUeD5!,ecM0S$NpSJ@Y%8TKG$A1D,
+
+b%eRTfpl"NZ`KG$Ffl`pf$"SSdeP[pk4"3&$2bC-IcGEA8S&+,CkE)&""f9(5KpI
+
+K'dUPEmFpHUPf5G+L[Bd[2k19BqIQK)Mh%ESk'F$$HQ11ZJT*(DBAf2YU'N!AS`[
+
+lh[LK+f@qT'$#&C-S`&Yc3KDDd8K@p#GAMX@P`@$UqQVY"LI&R"KV6[[3Ba&0VSZ
+
+&FU8YM*5mCa$YMk*R@aFJ%"lPh&Bd-ha!(AJ#SKPp5RRH#fL1+H$rBU0KeV+@Bl@
+
+)"U"ECE#KU"*C8+J4VSL5miU5ECKP2f-9(jF3daA%JZqr&am2'DliBLrR04kiZ&2
+
+A2f@dcZ*1E@%)RSKa'C9Kjf"rll6h`pCEElrZCl!Pqk,Vm-G0NRR)a'Hq+f6+P`6
+
+,@DHr8qN&j,YUl$Jiek$'B9LMrM%!5*rh9FjLh+S"8*6!VSm9r5&pXVLV*9%,1ec
+
+GR"3S3iHVl-Qq9fZP361IpIe$G1NN9T-eRmSfJPZJ8bj(HP9NZkErUD9dHR4mceb
+
+cX4j`c#!S3Q4Z)khIZSUbbLEC$#HIYJZ-qNlb6-,iq)j40h695Vp)KqJjiBlkkHX
+
+UiFF+)4E,bRkhl,"TH8BVXE4&Q%i2$B+eq6k40TcLN!#FK,flN9qYXq,*FM,K!C)
+
+KNmZDf!Jr+8QQ#V8&,4Q!,1@Fk5RN9rpYAZb4&2dqP6BERZMI2mRB9$pI9",!fFG
+
+@V(%L%qqpT!Fc6ccR2NT#PA@9@5'5HMh#$a(UI[I5P[NkJ485rl`6)+H-I)!1VLb
+
+"rjB6KZ309J0-NkHpFhR81-GU,PX9[ATjHK(REp8)mZL'%qXYT6Ff`-DJKAp#8L2
+
+k!eKelE'J1(*'ST[Aj30k",H1Nl10[bcf102Qf0XA,m4EU90KT8KfAD%"aRq!TQc
+
+ci$,'HCY5&Ii,'`K3DXdR[iBi'+r$U6ICX-4I2ICh(pf`aF*XC%$ALNIGP'XBKLe
+
+Ff5e*F%QU@*5Ga%JFj%11@pFj!XV9+*A,i*'CIi2lDY18+F)+-6CfG'K!+)@JeTQ
+
+Jpe(-C3[KjCRI48mV@%!Ca5Q$T1)8R6,XRK#JAM$%J1KqjFAr@)["Z*)mr0iMH1E
+
+iR,)KPhHQj9dcVlBM8iC2Rj!!8af0h&frEmd$b*j##SpGrKcB$f)9#bTJleIAN!$
+
+)q1C[!0mjh`h!Krp%A88DArHQ34&8-Lcef"FfX0"5,h+aPm*&Dkehe&FlQ5BKH3@
+
+M@%AdIP6)X*90i9f`KillamVTTdNhY*T*ba`H+P*3k-,!rk2XC3%Hl25Ve%@5[P'
+
+[LM!aLrq'Q*!!2I4YE1U`"%$Ilm"8Y+8klipbCe2@Qrl*aIb6"9Mh"G81XRV`%XV
+
+8TE1Rm4hdh%9)#ad)kR9IDLrNlLM%L5QSmE8*MTSIkH%%$%9DHB9llpdKAS2d!b2
+
+M*S2H'J`pH11X3c,2NGJEl5&Z`r2"LNR4601+-DJd[KIFKXmYLX9"f(Z),J6d#4R
+
+0-(0)MQa2@Km,VAeSSTlKLEh,lTcF(If,Q`&09+P'hL#+HKUFQ5e0R%NEP5jKAYQ
+
+0iMPJ2aLUZR9GBpJJU#NPKhR+qb9J2D41[`0jpG`Ijq8$TrKAGZ)fk`2iPhq)EJ`
+
+UZq55pJhj'5"p1K%T!Zc0aL$*H2HIDJc$J`Q'25a%KUirD4YZ@fmS'l!GRP8rfL*
+
+E8%,hSAC[1SIfDBc'KlC#QLl*$J205)fVaYdTSeJ%TH8iiEiUK0Yb$%e2bcU##Qf
+
+AFcjC63A5V-3[,lpYiN4fpq!VbNkCp-rY@-BJARX(+RG!GEUrj4!*@[aB0)IYe(Q
+
+B4"HQM25V"G5bMB3C%cF8,cfeCV%i9hFa,dq4QfX'6pc&5F9GSPq'#iY8'%eiM+T
+
+1A*Ke'5G"peak9pfYMNafqR-c02[M1'H!Lb)93XTfASKLh-0j83d"cE$#YfYdEF&
+
+,+1&`+r#*850%API1hr'#d+DbL,a8*XKqi$PQRflXC&BPf-)"3CA9[r#b&ifiBA1
+
+c-AM+LbKIhH9E9M-9I&9iUZC&kFk,lkpFI5pA4-eQjC0Blr0)J&+bb`E5Kd58HZN
+
+bDXBUD',4mEMFahq00'3,VT!!Lr2"N!",P'[2SAFi$h2!R4-JpGX4,cXVPA1VaZ`
+
+$ZeUK4d4lV%6Y-IAB@(+KBl*H3rkcMj!!"B1TqSpXRMETmBpDKjC[U6#Nba!d"UA
+
+`IJJP2$Gh6$A,0#V[)YjCqG&m1LQ89h6dA@L'*&F19J!3k)"-j8!$jR#fBe[U$I9
+
+0*ah%bd*8F",@)3cAV0FrmHJIbr(iGH"e#@%G`eB!0+!lT@D[QMUhDLp4h9fVfk6
+
+b51VI,mT91lVHj0aI+a80Ec9pc0i'Am)LiBGkNDBiYU(EY**MQdDeD[&h8C@qR`T
+
+4RSjE$d1bGEY)l!@dP#pP#K%0f))Z'+2NUS(Sj1P('B'"p0Qr3j1Hb1UD!2K3pha
+
+Vr"q`G3mp4ZeZ6dKcBQ$9qqF(I'*2IB8Ip$3VMFkJ`U--$%5*XkM&VH9*a&NGJa*
+
+53BQLp5)ipdQ@hJ6[JQ,"LVdB+V+C`(F)p&dT$%rr-4['*!aS8F-h+[U@IXb$Y3B
+
+kI,KZpLdfe85M9GL,AEDhM9)02h-AchDS0mCUE3KQ2k1C9-hijTaLQIBEkLAaYah
+
+VS'aA!*p58pD0[b@l5a2fDice`52CVA9[IA#-m@klTINh`qCX0&R-AX6SHDU1HNR
+
+j#TFPrCYdKNiKd1NH!USmV*!!f824(jcQa@),lkm!"R+-hPJ1rqH`V5NFf"+bYc*
+
+)diBe[*F90$2mE&[Pj@C42[S!PdZ[Yca&T!X8#RM2%iZPmU2bdM2N$$Kc`cIGF2@
+
+0LGaEc(ScNpkeZP%apDTiTGZQ[PSPMejBf$U[hN81$VXUJqcSN8MARXedhPSc'Pp
+
+0FbbJ'f@ISpLm5G'#MEk[%XYfbZ9NeI`bkXmm6U8R9UQ3!+1#TkhJI$FG%FNBhAC
+
+,HS%*0-FSX6deF"4$JLhFipb(KPQpF,Y%ZMG+mjVl*hUp$Kh[5ic!X",Tl&bG9iB
+
+[Ed1cfR,kUV'T1T8(-5lPp&e`1k999-0K2@hL$p6@@`%&51"ZMMeR)Nq*9$SrRAl
+
+f9"aGfkP1TH5GH3rBHArh`6c3)&Q[59bcU*ASLXp%rVkIIYYr*V0BKA`+TI(p6[0
+
+qAi[h2Djqj+BhGD0CUB"Y6@VB5hF2*J[S'#0+c25[akpkQ@d,pZE+C#I!1CFF'E8
+
+4,b84U6EL5V-(f86f,3E((Q$`#qQ1@$Xhia8@c4+Kme6EDlCe@SZi5e8)10kB!b@
+
+HQ2T6Dfp-*M3d4aJMZSYCKLK&I9h2CfF3PD0deYNp2a+9!ZQ1JArJ1e#`Zk2m$2H
+
+LlcBYPUecqed`(m3aBT[(YMp2H#bYX%HBq!ClXZkkcPETkYK-3L'@`bdT,)3Z8ST
+
+-F9`5I+eM0NPEE95Gdd%kYJf#Cbrh!G`JSKGLE0[6",h4YhYb$Nm,FNlh0IGLmE)
+
+2KQd+-*(BAqUAQacdD#*KjcVDaU&hQDR`A+1"#"XGhah*!"EiBY%S$0Qi+YAQXd%
+
+V-1hEZ-RdHAef8Y+SNdj4[P,X-(BCP"hC#l!P%GhJqhbI$UCER!qFG-LG#FUicUh
+
+N'Yc09h'$HVjpEb8b@iQim%(j-VAkF(YNQRBKU0eH(#A%5dhDYQhD3L$m@b&+#f#
+
+9HX&Nd6ZUeS,F(X"#%P#8jf1eNi5N$d*(GY&D4P2r'+1fDbpJ[H*#ap(A6*'Q%Fk
+
+$2M5H@U!i+6"[MKDU@f9'0l`-bfSGjr8Q#J(&1J*!fN)L,&C)'#C,MH%4"0PEd-k
+
+ZYlX44HdU!MMi595-GTrCP"@ISLE#[8AYdEU@ckqR`L1N-9MB1Lh"M6(C6Yrp+0b
+
+&'"ARE+G190mCh-0c6FJ4b)J0J$"!9D1hdZ!%VH[Z"")+lJ@NqT1bij1(#Gd+9-8
+
+LSF&q#$2N@LI6+6aZM8(6%4j-"-Hh($X&DSKkQ2fUY@hBR%CNa-GMX`K"9M5+IBi
+
+L(E0&djC1MH&Pi6aS11A%$CbDIK5hNAMZQRC%rN%p[K3(cbK4VaiI(YbB1kAP1$%
+
+AMB9EqDZG@IbUfmYIa4E+YkiE9''iLPP59'H#fH5,8Ul8*,,c''-V&9G056(,5PB
+
+JJ5LlLTCr@#eCT'$%r,i4j,kS*be&b'8*)++Y)GZl'i1M&B,S@V1d*PeaG*93KG6
+
+"-Rk@Q#8r&1185jF5@p"fGfaT%iM[6r6&m&99URUZ0Db`ETh1fMbN,#T5B3VV&MR
+
+PRdQF'ECL#%,2%N+Rdq6PG6*cP8`9HqL%K"ppabSl4DA&0!SUkcq2"T2SJVI33*V
+
+Br6*#@$%,B2mQeCG1%pAU-B[Eke!EUGA)NC61'[L!AXUY)bf@9-DjQpd(%UQ)MMR
+
+ZF6ae1QGa`$p2r5jF2f1aN!"VM&%02D%HRlbFDk*r)%k+'JEH%RAI`SFrb4%+TBI
+
+-!Lr104%8(E&Yii*NYhQ@(2S9pHaDPei0Ur&GKM4mrZFj*)V2`U(pkjrqCHCKhVr
+
+)09&'EjfBYeHK@jU$X@Z-XUSrqY+q6S104(NqpphFGhbXU'))qM!ZPh23UfAI$B%
+
+-(jh*Y4$J$RbJ,S3AmFR,1920pp&3qVTMPj-eRAk83k%m2-6#%$K4QQ2TKk@5*hk
+
+"i[jiaBp(EB#CZ["*8Y83hrijEKIa"2VYTcNpq4iTacHjFH#ir$5hMNl1b"U#Z,d
+
+ZF3&Ir@91Mp"0N`$l#Hk"j!G4)KF4)(Q#PhjT(E'AKQJbc@&ECqEj!,B'6KIaCJS
+
++-6ECqK&D9X$dkG1jTV6F#Zh``CPXTk9E)ljl@9d%L6G#@HEGqXB,Mfi2E)BpCjC
+
+bjMUjA(jXVXX+)k(qA8HP"RcrjfFRr$j1q-b6XdpqGNVIr%@Z3Tb4BhYm&DZ'Jm2
+
+I!aX(Y*ajPZ0J&aGfm2![p#TjDfVSJa'UmH,m9a$5bhMR0&e$+4ciHFNr2(NQ*ce
+
+a(9UqVUme0m%E%c$ad-Xj!cBERm%L%@A6E9kamH+MR1fb2Z&%`%M$R&MdMVddImb
+
+Y(LMJF((R)m[Y["rAP%rd&dP4d%J3N!#a)PbN*UTk2lK5UMhm(*e2Jp%(9Rm(eJU
+
+iAI@+Zq*T+Ke((431a+ZE-9G&T%ij&,F-X8EGA@!CXS&9jpE+Y)XYBJaTh+4XTYa
+
+)TI6)-q*VV6qURF#TS2!KmG"c-!kqYf%d'`BT32S%1A3AcBdDDR4GU1-E1DRihEZ
+
+eeCDp#d2c"C2HbSkEjZSLSE`*Z8Bj*GPVX%bhF-kSU&r11R["[$IJbBGe!pqY9ZZ
+
+f@@YqLVh#!jFYIDeQQ3hc8m0#2+$A,aMejQE940R$iC&ii$d6U,El!,ChFIdZGZY
+
+D8lHEVDXAm%#lVINGc'S)PX05F'!HdEEIDIS*N!!2*R%+)-#(&EG)L!8eL1dJm'H
+
+%J1+R"`$*@9p"BKP9r&@NE89V`IT0l5jBeV4A24%DE`$8a'`(T,@Q0bdmQ&S5QdN
+
+ceLepUG21$m&)$2(Q#KaQB"#hbYaMEbUR`RKar9+'@9*IZ&()ddL9AB5i&,APF5)
+
+J`acK%-ZfGLYH-p9l4k5eK!q011Bj8RKi(Q39a4pc21Y%h9qhi5%U"cB!Q0rh)Re
+
+c&GB#b,)VdcB*lD-ZJc0(2VMEIcPHi!6Z+@-H(N"2m*rMS2*D9BQ$`91-Pe4%,RA
+
+"[flT99c#k`BeIF-29ibY9F2'$fbq0*B59XPmT(H3!0dqQ-B9efKl5FC#kea4AM9
+
+H+UJqCIlZ`rD#ULkb%*(2%APqRT!!5N![QkV+RmY*fT5I(H26NjbE!VY-F5D5Z!S
+
+T2d0daR,l@VBh3@E"VNA&LQqQ"3PkkiVEM[Y`Nj3ZM5j4&i4VPe2C@J'l)`Ii#d,
+
+`lV#hSJ"KrD6FA0R,)fL658qjjhj)Q$,l"9Z(X*X31q("h8)r#&3'KP04jS5E6UJ
+
+9Z$'#aD68mNdfL""3aR8'P@F0"am0jdFANZl6DcTj"e&CaP)Ecq'"FF2iAMRDA4q
+
+)ml(iCa[!`dr-9UGNRT1Np4&qSe9X12Z5eJJ,e(5`h%e'E@BDX`@aF'AM!ZDAVi4
+
+'*'c8lqDi6)#3!-RD)TEqeeYf!Q9X1amXEd4*-HqU$UZL`dS(*32*lq(k'8$$U,)
+
+b$,`)C9%50GSh"6EUh2m(UK0LUJR)G+@@@dRVJ[ASP8q#qq!TQ#f4mI!JQRe%Gr5
+
+dK55&Vm'1F#JN9G!Gb$QG!q(AbR#QYc-))J0U2lXQE4@fLrX$PV,bSLEIPDXDP[#
+
+rVkTVI##QiSd2@Md"&%9C1d#QNcDKS#fNh%K)L)c,RMLP4rN6H4[4`X`*$cqCh&-
+
+l(p12jL$eQe0kk(8rR9,pEMLP-[p4#DHdA4Y9#6U3!)&R925(LiS$FTeYMP$2,JQ
+
+rV2Bb6ZJrGq@,-1ArjH!*l+,+X[PkefG2330cTQpm#C(Ie`aZCUC&#1@A+PCp&dZ
+
+S8-eAUYp,RpI,b)YS#Q0"R'GRSH`S%QQrLrLp()B2H36!BCMlPIc@%-%0pl3aLUf
+
+3!0mB*T!!F%aFq93[d!9NNAb3!)RqcT!!mR`i4lf@rNMJMX[c1A*!JS!"md%i!I6
+
+"XCU(eAe8VUXYjBq3!#-cXPA`+3TRB)Yl,6@PJQ$2S8FB%3R"hLEXTeD3!0CK`08
+
+@6(AHpja*)r"5R(Y&$4VS!`SaJqhCN!!LE*1'lPChi)8YB8M"B&&raUUkpj38-&I
+
+20RlPa%e2J[r"A"mmi*ND,ZG(Z8Kl$'q,FVJZ5R5$2V)j6P*0HHlqbfLP2A'er`F
+
+!N!30%A9cCA*YB@jeB@aI-5jSG'eX!*!1[T8!N!m)GAX!#9le!!$"&`$A!5K849K
+
+89@f"0J%!Yi5d9EH%Y&N!N!CYbJ#3"L(*!!$Fj!#3"UFM$NiTH6a""X"H1ENY[5d
+
+pbkY"dNcHbYBXAGMDf9krj1jiK#eikNNI[c"mAK[r-6RGC#'ES"qY30H9A9pfc6T
+
+ci4ICj"Bb@8BHfB4hC,+5K4+URZF)B2G`F06CmhCrXYpY$TkGY-a92Sl-bHQM6VY
+
+TDKZEQfIhQj!$qi0p`i[-Zr9l@fD3!2Ta&ZCK%[[4jQEVZ-El0cC--`hm2"LC*$E
+
+r0)eZeXhfZmCXhm10jcFQ$ci0Yf@iVIVlljU0$AZTGjD'H4l%Z'2(G$"6%*PQ%QG
+
+Q9cr@qI%A`b#0km1V2E1DT1&PL-'02mf[NR60-pAI%cq0c+-J6@q-fAf"Mlqi5)2
+
+J)Jf$H*69Nr4bEhjG0r)[c#0rH$AfipMX*ZIkk4GM2lm+m#0m8Cr'iFD,U$i+&MI
+
+lmFMJTKZ6i+BdUhY(IKMRq)reFj(r19NIkc(RdmY-jXUQPjG"4RKP*Nr-VN219h[
+
+a"%b(VFBqIJlDJdjVle'Vpk69D6dcRHlMlSjT(`pkhIh6jU$G2GlGe#XmErHS0@L
+
+BimC4kf&Y&'6$0*a`kTTTGSm(VH2"`pV[ab$SUrYI"$IA56V+rRTj'Q6*0"d''rR
+
+0*+JQ'#A$k6L)mp[V4Q'@Tq(jp(CCPa&J&YhHp6L)Jp62Nl5kD%&&Z0$Eh96dH,Z
+
+2Z[YB@12imF0Dc6akh1afZVf(YEF1j+pQ"Uf2-F"Epq5[CMVYibIf-dmrYGprMZm
+
+rar''rAj`)0Ga[Q)[r9CcUlDhZpNJC"Z21Lh6E(8k*ihpr6CQhj+[rC0'8lmqk[E
+
+f@lf(phKCEfmAE2`8XcdqIPJlDZr[GeSb+Mph@JH$fYirBmc$AZ[JB@fD"5PiCqT
+
+(G5lm,BcpI*!!6'TljUG4rX"`rPq$%)3irQqSjeYZV'h1G2PI-jQIaZIC"(FZ$pM
+
+SNS#Y[KVXG,)-!#MEEUMh,9#@'B"PUF0&Ii)6IL`"3&1H$-ZT)"#K(r1XYPGm@3C
+
+!Db9Fllm(KG#14m'R5`#QmXrcFQZ0mf3+B@-qQR2!*ZPp8`3"[KCLB5'G9$3FEZe
+
+"[TKfR+I*D$UN&X)N1#@b'XST(1hX8'AXl)Jm2"&edqNfRrcbY$YS385)kLL8a9a
+
+`h0Xc6QMBY8E"43k"Blm1ZLIB`lrVJDhkPZQq$0+ABA$0TFQ1-G1HXSRq+JlpB9#
+
+jJY"B!V#9qpc+YRNF`(*)0r[bdccedp!rM`,6[i''&j`[K9J9D'HVIYqd3'PT'&q
+
++0G!*r*ImeNNZNk84DhU2DhVA$*)A34cq&Yj%%Lm2f)cP`Gh0LVBXN4A-f(hDkMe
+
+YYmiF+rC-[rdV()6+QSYYd0&5"E&Gi3-UI`Q"eJD,,9h3fQm@ZRaJUCaVLD252Yb
+
+QQLlP+UAdpLXT[6f6dNkElhrXM,cUM0-EQbGlFQ%cQGc!ZVl+c@Tcc@apq1&pFF@
+
+[!Y-,,JNPNec)jp-ia",JVm0F[M"02`S[NM31rA+8`9@BQ8QDA+Eqf1!62@k6*4I
+
+jYCm'$ma0-M9$2cCTi)c5`)3j"H4QNTTa-JS[EM`FQ!*VUF`-L6Pf#hKmI!U"60X
+
+83B$TH431iFX2JcJ,M)qjH5+l%TrEih8(R,j[TcF(#DB5&IM!"#(1TdDf#AGLZaM
+
+36V0ZNY4EpA-Z,$@*H-pVf0+0L4!MF2I@[ePmZGq4#@1Cl5UCB*eAQ!S,[JkMb*`
+
+("Xa`-Bh@2GaNGTmfHRYRlF&Kph4J'XI2c&QMefXF$jlYE[,N!eb+A!%Z#PiLP-#
+
+4`[%N#M%KpS[JJm$5NbQ1@VhQ)DjZ2'ThfS0R@+FjD!q1@rfq1HMf6-1F0(U$G[1
+
+ddqJK8G%lkICE1Q6Gp)%Cc1Ep(QY!2E!+5)d#"!XLC!`F$Ti"i4Q@&)h-PImb!0+
+
+(!8KMC(`c"-hm!'62Ma,B#&`eELT"pF#%&bC1mR9cM93'9T6))(1)HbA%ef%r$H[
+
+Vj[d2hM0(ITDCaNZJZZQ2cp0`G)P24`ecEh[VrSIVjV6IH!9Nr2-GQK@bQ8(Z36"
+
+,Pi-lJ-US'``(9X#LBNBN!)PaQ'AiZ1k&m6#DMRLC2`Tq-`9[Q#)d)"[#h6+VkJ,
+
+`9iDcL&9`@[+N(b'c-VSa,q,NfVY+VVPa4c#aq#cV'[B)dL#k`GNJ%l)Q,#``&@i
+
+B-JkZ2C*&-"ZrA(S2Nb,D-Tk!Vp,Rr5&#+F2J18GmhXp[)X$PD4*K2FqhGTjlcrX
+
+hir-%N!#&k1+0@2&c#SC(X+TLFqLR,i-EXhV8(TJ6V#4ETk,iB%e)`cIj&)'(d)m
+
+mX#lR+eBk&P34p-&iFZ9Rf"PZb1bNi!j1USXVehD)c3[SZ2*X%J`aQ,P!dQH+`Gh
+
+Z4cJ9$(0qjm3ljIhUZ1cYjLRqMk`IY,Z*6rKXKK%`q4"%2SRmQleGi!X8!$!mV&e
+
+!BQjFq1-`3Ti'dLkmJ+A6Pjb)Z3MKeR&G@"D01hp-1S0bqR6Gl(IlkqBXM%I*0@"
+
+"l"lj3i2aFS"M$"VeHML8M$Imi4$)`@T6riE(R!dB6mIRd"pBC4J$%*,#SEMF'!8
+
+AN[!"R)E"L2[(Y8H%6**#KJ&lN!"'14DB`T!!aA'c1[,Mbb"0TYNDEMVa-384Ki"
+
+5NZTZ*$p%LC%Q,i8hC&Uj!0`HMb*!&PH$"23`la`#'5(i6$aIA""N$cJmJN'N#E+
+
+Sd"3S!U,P+SJpYbp3&MBSd5dPdJcb!8Y)$E3L9"3Q(@"fIa,''`*$,+2dpFaU8,m
+
+%hIrcpM[hIkhd,IX@4N&@#b4*i+b*cZSdqfdl3bDfUPQ0Nj)r#%86I$S-*VNCG0H
+
+%T`2`2XD"[$S(,!cb4"&5@jjh%+CC[L&-!83UZVJ1BL(iP,X@ICQ$e+JF-l1D3Dm
+
+d6Nikc`Jl`$p04$lK+UKb-XmQf@Jc*pcafc,938&UZhhilFH2pk#%GMIY0k`-XSH
+
+L!2Qb&d%%qK9U938#$CCJDH%3P$1HCZ&`h6`qE3[rK!aX35Yj%ap#,!S!QE(9&0-
+
+S$mG!RSre(`#%%*k8aHI6'e&bJ(`UD(QYK*h9m,Je',4kQhhj#DHNekDpfAm'9IV
+
+apkBSI-4P$DDSK)@@$[L(-)q@&*ZLhk9P2RG+leG1UDJN1RA3TP-kKp"A0-&1HYe
+
+QDrqdeqUV+3BE-aRV8FSBlX#HK$TUP*VE%q'C"H)e9(*3K2-3DKlq&r4RPSc9)V#
+
+1aJ0FqV*B(8I`BKrD5m3dFlY8Ac#&VK*S6P`&Ji[h492)eqR`LXkREid"Q'0)ZUk
+
+,pK828ab%5TbeS896(i*D%Y)U%e8$3rI"ASXh-!J-MD%-BKKkK9#hYZ0N'X-lN!#
+
+9H@RJr#BI*Yp[TT6(f()B[i3X&d1QP2Dk6['8X8G1*VMK"kmF85`hf)ALQIeQQLJ
+
+ii)qP,c$Kh0k5jB4j&N3AUNqpi&1IpYCkBEC@k2Zcc@2[&jYREq@NKe`E(00HIf"
+
+UCp#AAb[dqD,KXmQQGj[GrGDHA,ql+Gp%91XaQFdG!cS8-N!Y[3R-8hNLGKcaKE%
+
+&bdEdma*BNRV[Ja)4HY&'Gk1h8Gh&NF3Y)MjP+48KR"'42KRA89$fN6JHKE9f6D0
+
+9l%hk+(6[4dQ"eq,+(Hm5*UmiqFT-kL,!d)'$Jp%!96e(-b8aFPR&HF@P5XMdQd+
+
+%[Lf*K'1`&HiV8D%i1QSmJ@FYRd"l9b'BN!!m&"+'@*UZ20Z4+BLM`RSZTmCbj$!
+
+b&8UR`!FXHG""H!N[6BdIli)@MpTYkem2!pl*c,p1FC&[+CM6`E&H"6Z('8cYFF,
+
+$d68-2EPjk'I"@X'6iS##jkpKiSYBd"d8`*!!%jiB9"HJCVI"DjSbZJq-6k-i*[r
+
+jSjFqr&YZLmke3"rR5DQJ'8rA4,p1c@ABV-9N`L,AiYkI!p6r5j`%TDNG2DZ$I2l
+
+-Rk3#"B6EDN9k1SLP-Vf%F$JcUrbSb)a8qm'Dik"`e8SV2e%'+Lm'DN[D@AF'p,G
+
+dibRG$!lK0Yhb6Hkr`,d9N3N8LALJf$+'1+R6A-hDBK'HT3reHF8R,N'Yb3FJPp-
+
+)#8fc(c@-V+e!j0FSP$3+GKrRa&BfR8`5KKKN4hGX5lN!J-#N"dNJL$+#,U",fSI
+
+I5&$'&(#5[kP!9e$-ZU@F"@5BVK!T+pBL4"qL-UK'%'p531T(@B98D"$rr$`0ASC
+
+5kJ%aT&*48)-*cQNmfmA0F+[B%Klm#lNTSRDq`a,0iQ'#%)YC9CD3!!9#Zfr38B8
+
+CMcA'-'b"&E4)`*aCSlU0I$$"Qj9jTA#X&9Zd%MG!L8KBKCJXTe6+Yq,#iq!D`1$
+
+id"+kN3Y@Qq!3CUGS%!fSHJLBNV3'5%%M1+A`Vp0#J&d-2hNDq6!FjL%1cJG4!Nl
+
+f8kB4G#KZ@AK3N!#('p42J#J#U18U5FR)ACq"0T%`f289V'IUQp*PYrE(McVPZ(8
+
+Q3Q@RfpRr&Y1`UN48`LbkZ)!b"Np@Q"#,3S!&GN,qi8,$Flc2DHUkYhUS!@QQHP4
+
+V`(3(DLCA!!FCG9eL2d,&%Rr,FP@S&1JF0BTZ0(d`jdi05eKY9eJ)Gf*j$LMS8HX
+
+GF'H[*C*),`X*e9lV"R)!K"AQEpZ%NPAjS&i0R-f[`b9FM4@JV`8%'8E`3Ld!jG#
+
+Q+364'EqG!dX[!Jp1$i5Yk1!A3N9[YPJXbS*iXDKVkK1Nj$!3&5BmS,ZVR,Lq#I,
+
+k@XQ8MBMXG+QmM8h1J*j1!@9C%9`qVLMKX"DY53)!!NJh(J`5TNJ`i6N-1()dJc1
+
+S3lL4C8V3N!#dH4kJ,`Mq(L"`GS95)Ka%F'eSSD$+"iB%*)mB%M!1,4h%Q,RB#mj
+
+9XYdCC6!-5K+!%B(Cq-%'fqbj`T*6Y%T!Uc3L,kMKLM[GXGQ9DK6&4*XX$CQGQap
+
+eeAHb5MS'#)KLcdLIrYEQ+9pl"@Tl1DYQ*[T*@A,%`F!QI'E'+-E,J(IFC40@+S6
+
+Jb)*-H!HYATRGbY-)N5iC1H2)DTiQeJqS!-FYPX[`F,qlNqU`b!6LRrK&UY%3`8T
+
+5L)&Ff)1cfGNjRLGf-&e84RT`YBV$Li3VSGj``rp&mJkkjU4cfQYdc)lB1#Z)TTi
+
+JRFU2HX68qYj+krJEKdG#HJk-Ela-q-i-0`&e`kX%)9$(NFkdY-DT,-*C-%,dc!T
+
+V2a6b@A,T#r%FE6jZ*N$Qec1FK8aJ4ZD&'V@JF9"Cpd"T4,eHVI[5Ll'1NQ-,LI$
+
+'T&ai%Fk3!#cJka3#h%IipFJ)8Z,L,&+qXp%&Bjr26P[AXE+0#K5HMI@HVV%$C)9
+
+"kk)IV@fHU565r*e&0cP(*5%mJrpKLBq-8VJGTYEX(S%N@Me[TIM5rb(LGTKFFeG
+
+`8NR10X"@DRdECK2cCaUVhV8mUrPFlr0Sh%)&P!$A!9@e4%QL+V151E!6(FA+(U$
+
+D#hC@"5+FMbYVP8#%1N60Q%CcLhAm$1$S2Qh[YrCKaM8'L"X$$ZEXX)Yi0`dkr1l
+
+fRTJLpmeDVf00DEZXL@NHGT(3GJFN*YIAF4SpI1lLGkF2VLk#+hT$hIc-)H&cbep
+
+YCR&I+UICS3$kVLQl"L9CdpqD40jY2J1rlf3qL,(bcM&,!p4"rFA`4b'b18Ye5mR
+
+f-lm!Q#[30-h%##N"6XX3m)3kXYCL5BUUDTQfSEDL+iY*)+a,RB6",*2p64beMjZ
+
+peK'Ufm`1aD[k5[aN9Y9jjEHeGlC@(TKMZSlUS&"@eRJ*pI929$jjB&'j[IDaHBm
+
+Ibp&U(r1lG4ralIe[[FGAeSqE`kQ)leeVbP4[L)`[b[i@eT!!pAldBMSh#a4CPm(
+
+Q4K`5%3+H1rb,h%+4UbSF('TN[8((YK%@iIU2NC9bGY8hdhaF@$bhSpLGHT,RHSp
+
+Nmck0Dr'la665#h6!m`!@8JKC3+ITMT-+,bE-26Jr,mS3MJr0AKK@X`X"X+qM+&L
+
+%6[k!`V-)B%$R&+Hemq!,3#mAS+k+ZC5irUMYCh+S5+c-ic5[X'd0P4P)Ai@4L%)
+
+0'4(iePZKkLXNJ"m"B,!-)')VRIG'0i"+["V5H,LZ9Y'L+Vh5`jla'3R8a3PX4mG
+
+I"6&5c`IGV[QJC'jmpPBqq%B(bmVdfNVh3&rU"XX&eT4iP-DCb9,1ALd8$C0&%Vr
+
+3FkKH%0G*m+NNlq$j*RH$m5Y%,J,PeZCLF&-MM9F*HG1@UA#BQBG@i)LC2%qM%&a
+
+0kAJ*&4,VfS-#bU1lEH%jYmcNM*-6iP4bLNY0IeU!c1De!4fh@b%F3CCeR@!afhD
+
+!ci#RmAd820"ee9[Q!j4'ZeZNKdA#E5j@bBdYGZKBjVDr!SL9GJq"VKTJa$fK&Sa
+
+fEL2p'N3S3HD95jFe99&%cE@Lpd,%6KP%-'EQY"3@VhHV"fd!Um%e)'5,J+f&cUd
+
+b'r41@cESiZaLS11'G3iq5J4S3X&VNZ9"TDGJRqPN6DhZ,j`H4%X4X9$UVqS1BM5
+
+M`S@*+fqRa0GUSFBN&b-0&4$mQAmCH,8f!dT!*Xd"49TLk[9kc4R*'GD%MFJHd0P
+
+M*@pTS&,*B[**"U&9e5LjKS,P"'dL+qK20'e9LB@baAS4PS&6JVU(P(SaKDe(T0!
+
+p90P-REbLGNTqa@DFkTDL*dAcFKN9LPQ&mQ9f$ZdJi)68@j&8SJX[cUCA2*4Y4M0
+
+[$R9,+ckB5#U90"JLq&DrRLV+aS*IUf*K,@S5fCUhSTT&5hEFq*Aaa,ACrH$5,)$
+
+j`jAJ8QqP[,8%Vk`$64XVf`SS!YPX`B2Ka9AE#)8TI++5f1hH[C@jJ`L"qcUbpq@
+
+f[C@[%QLPXbK'P#C,jdNF(3aVX[[lhMfPZb4L%%k'EJG8)d(3(#aB'!jI#+BGcHG
+
+&,(6aP$dYb)ZpFc!lJ[1k@BK%$3f3!!Q95!',$8[L!&Z,blf[+6#)-LLNS3rVcfC
+
+3LmBCiXk#4ma@EbL9hFj3Z"02AH`%L)(3R#3),ZkSH,H3!(0+MRP#B3Z,6kB@E3T
+
+A`SXfQ3JP4HT6R`U53",m`TD3!)$PSJ@pm%jX!MXJ1L@"Ja!D["pX!a%IQE-XIa&
+
+q8DYXPT[MF")6&$h0Y)JR6QS"1qN[+NYq&U%ZQ#1F(cKb3B%jbdL3!,N)HDQYJI!
+
+F,VCG8H-i3-S5J9mr(%'ZT3'8VX6ZA65*'PmGF"bK0bDa"@(+BMNc5ERD5#qRq#J
+
+K*N'(HV)q%[ic(`hBm8HDIjJRS,+h5FJAU+GKHBjid`S1*,-3ih9PA0JI9X00bA(
+
+klD9Z&H()jLUXY))Ah!GqaHJ#CZj`LTP*ii5V9QLK$#Hqj$KBjN*bLkU&R!q!6cS
+
+Ze@4D$1G(Ih2JD"$YY)qhq'2l$m'R[ir(kEiGML%`ZLl@ErLXa`F@B3X1eQ08dZf
+
+E6U[aP0pBR2jpL3rk3CBeP2K)#qR5JEiEY-NZ+5laqAf2p1F&2Zpq@AAUa%Ce"Tb
+
+pm1KF3!Dk%4T8K,f11JSQI)N$Ndbfp&-D#,#*l!D'a(K@'lMI38cV#0TPJ0(f"hZ
+
+lrFE4bGkrX14[jfhiNrb+JrYl!m3bUhU@`@![NRTXI#K%29U(SSJ+QUXCSEeNL-D
+
+qQp,#aM,HINNYMefKSXf'B&(N*Ni+VT&YS@h`LL&QABrE#!S(&`YT5XV%c5PQTqj
+
+"bPh+&+&-Z3USR&29DhbkZI2*D41&eiqY#fkVm@!9FFhFVM[1"4Fa6YJG'"N&I0L
+
+VCmX+a-,RMBq3!-LFAIEqZrHH9+9bYrY%ApjLRrX*bN-$&2#&3`QKLAq"$CJ3Za5
+
+laMTC0Da'PPUM1BLmGKhePlI6f@E'(bE%,'IPP(C#ZrYL20$&2Pq[BBY)i0`L(UV
+
+*3(#iM8X8lK54F(k$1!Yq9a,m9)S25#Z%Ll4(`T9P5d"4l5I'R#eMCI1N0@Gd)m9
+
+dY$d3`!"3RC'PLj!!8MqjPk8-@NJE*DJVCIU)PSGeHV%Zf!GFQJb3!-'L4`*"6"L
+
+CN!!p[mJB#"2K&TK*N!"&BVGb9j`)$Jl(91Fcq$3BSQJ8"L+LH8bT9c@V,Z9TE5e
+
+"aGc+Xdkpl#ZGfY+2BJJ0ES4jABTSQ5eapSh08%QV`JC,CPhcMS3"C5KHVc-&Bf%
+
+26qKjmpc23FAk$!dk4!#dP+4!2)MGP3I$UcK%#CCGcLM"#ZR3DDF+V'T2JSX)0d9
+
+BBk&ea!r%0jY9`"i8-G+2*(J"G8TMV+0TkJI2)Q(@kk8A#a%,$!@dk439PLi#S0f
+
+6i[X!hV"leLSNSEjJ)RPK65L1B+RUMS$lD3T%B2aNXK%K1"*TIP)R(SA+AS2$A[I
+
+-X#LrdhVD8P)[+D$F#`UDCLXT&c!4,h-af%N$BGQC*IAI0YMXA56m%bSYrm#SQjE
+
+dbd23'"iLICJ"UqB"'cNe`cb00TVf&[Ri5rY0iEK4Kf##N!"04QXH'M@j6[fE$r$
+
+*E)#ca3$VCP8qXBhL1lrI!NXkPQQLabp$e-U3!#T+2h5SJP'd'k9*TrhSLa$2)L6
+
+Y41KGVN&l%-!4-jdUEReKPp[8MaH&jbR-eC)"E!"N&Zb55HM(DbS!NpS5@dZLQJK
+
+K1&X,E+f%X(*V1%fPKk9FKFD@1&mpJP8[B539%6a6CHTHGkaa+%R!D%,04Q4XBN5
+
+,L@4fb5$"ACEp80GNkT(cF"RBX4A3eDTGHc5V3Zb1QE+SDMPLK)`i+8Ha!`VkG2p
+
+fk4C@eG)VB*6lppKRUkX(&&`%3m36CJB$&iZ8(H+!,Lqf56lEB5aQ!1X)bfTHTp1
+
+V*(e*%N`BSY6(T6S`9Cp*-k3VUQ#D9TKJkf9Y!YBVI4G@q%Zm3!8C`D'DX%JHF4[
+
+NQ!)-6(JASN%N4&A58q#&CmIqMI5VD8ZKM14*%k0Y1PS`Q,XD3e01[VE&"pdRVH2
+
+fVaVcPfpmjB3l)fVjJK-ZeE0,!NcMeaE[mQ%RI2&8NFr0lrHq0,r"0AIQp`G[c[c
+
+mcCN2hjcC`T1!&XljF4(l+TAFHKN"ddJQMX)!`6-8f$qVD6(Uk3fS5,4PLG5M*%a
+
+35l[Sl0Gd'CS'eL93V0-FS0+NKIZDP13B[!LZcNVNiB[c03cTM9581UpTR8&IRTZ
+
+9#kJCR1%T"TJHiQli)U!%,T0Y)a5J3j!!bM1KB0FJa*a0T*D2fp"l[H*Hl199ehc
+
+PRY0FY$@h$'DkGGK'0+TBfj[R`T6@rV4@Dq%kb'"5m(YAL#1PYkjKIV9hHS`h,ac
+
+!AFk(GDN8p&-EYLq'81Pr"EI'15i%#d'8SER1BD)#682+,2aAGEaJ0,Ra$NcDINT
+
+3P'"#1TJT5b#*jaGAfY)al!TdMU"K1"pHKq'bY&6Mp4jSG(kfLIN'2##jfS!EI6k
+
+hES*ZrJAYGNPr!',d0YrCq0RQ`jqqpIkp"rLacDI#L,FTN9[AD&`NT&df86QP,'A
+
+)JdXB0R90kXUeA+Cf!mL&,SGF,)k2YhS&"TEGD''eQR95[1c`i%,DXR(l@!6l0)+
+
+2lRq`KPiVQM@`Z)8G4LL0U!FiUfECc*`VBYrDNa@-%!V(eebIdH8j-S&PCTQF&G!
+
+Xj2Ul@EX+LA6r!r-Rma0"6*F2ead,F'er%)pp0'ph@l9[fQ!QHMK9`Q6"8r%U!k5
+
+2kBH$0VAJUC!!*E*Zm95GSHp2*T!!"TK5-Bm,"!dXBC--YakcpFLf6jX,UZS%X)F
+
+jDUd9+#(9"Cba#Vc1kd8'V1"9)h-bN!!SkqTY(kBF`M#8(p`-DD#(((DRM4jHR1-
+
+h+FQeV4X)%XKc(86a@158Lj*T"1DS''$[3'RELqL"S3RLAIdG+RH,`C``8dpCEkK
+
+kPMR5Jh)P"DUUcADN,Nf@*b$LAEh''9kVe9*qP$icYlFC*Vl!!MA8Ch"BCH"FG*!
+
+!(K*F5)%lAUM"Gc(32BGRla"LmB%H#TU$-D@%X#"5Bf@"Z@`FErmSM&d0'f1FS6a
+
+,aHNN*cb%I(#-[l%Y,&FQCh&NjM'4"L61+cZBcLMmeD+MiHl9&Fkma6-l5&G&!Jd
+
++Qa&hE4L8pi4J+Y!E")'262`XB9kqaU*Z33NTJ""8Q-p4-GZlm9mQ5'h)I-c3SdE
+
+qYS8@(V2&SqeUN!$bGe'p)"ESB-aQ`dYiYGPjJ[Ji0qA'KES9KpUEMdf8cd!l5`M
+
+C`Seb4EB!Fcc*fA"PqDa`YHq!01IF$$&j9@S5@qFNmK)+*Rcij)XlrJ&`9ECIaJJ
+
+JCHA!0M#P`UNBbK)--$mV(j!!TRbh1jcbEVPBJ`A-le0MkP*ZYkMY#L*IjSH,'QU
+
+l4I[8#eHP$h5@KB*9RIk2#Nr68$ArI2LJ!-l[D1IrS2LUJZUbD1YmL,XPBe"!50-
+
+N6VrC@$r45B''9)S6&aAV&mU)XN#4iX`A@hL[Mlj"1-kk+L1NZ6JA2"HmS`E&I&E
+
+L5*fbaV@+1"eb'JNDpRilPbU)Ma8"2N`R[5RA)F`D+rc&3LK6@q9$BNUZ)&q4%k"
+
+Bf''KPI2kHJ+Ti4GqG0V4V(l#V+D0TpcbKpJ)%K%89HFZYF'15VP9PblNE$QSA6X
+
+I&&*@D("H3DbPGUZHV#adHS8-cqcL+b%UX0A3R8000A)&!-Br2[QNh,6@EbV9Z3X
+
+hLQh5hD$bB(f(dNU4AC`*#'4j%*+D$BbZMd*#c"(aPB4Jfk'0Pa"K-""Xl2B9*cR
+
+"qiU9b2a)$[+41*TH@FJ-QT'05Xd8@ldP!3cIqZ9TSh2LSXI5[q@ZRG8l9La!3V3
+
+PAE1R8YMh2!6Q8D2jT0pTp!pEqbHN)08Kl,XZ01[m"NH)Ffm$5b6d9Il0C")X1-e
+
+"5hNMQ-M@GZ``(JfjSkEHRCa@PEh`mM+mXUKFkdaTJqT%YkXMajpcHdBS9`R,-I#
+
+m-EUb'1j-LeY*`JNemSNYahK[b`2ThbJh)f21PS1AfYL#@kCb*EC*9d&HFH!kCdV
+
+),"b4ULZ[UXN[LI52fN0bCq*S5Gda1kb(%C1$[VR%bh%Q*,A&CA2r`M*IGF0jN!"
+
+I`hCQ#Vbm4YCTR8AVU@!V#'[43+QLH#VLhP#P[MAJEU6bT6Nf2DG9Apb`pHE[4K)
+
+M5qdKd'pjRkKeRipQJYJM-4I#6m36Tp'R2#cX'p[5!mC(ahePRk$$NQS@9!1T)#l
+
+6&q!VP4rHrU!@dCF1NMBFcFN1,+&cLfXJADY@&a6QLD1FXJ4j[Mp-kdL*iERLr8[
+
+59k405@6XQDXKYRE469$4HfQ$-lJ$!dfmqXmT$d`S3QU-ahh!4kcS$0d&aCb&`V&
+
+mmJEm6(cM9-'l-)jBHDc8SP@LaC1)&YA*mRJVeIZ&f&HbZF0qIEB30E++P%+efBV
+
+D'$D8K,A,*l,`$Fh[@)`[KET&Sh'eNQSBR*ilX-l&elDMkTj+#j+ZYI5a9#"S6NG
+
+'Kk$$(H)TB81k1Q9I@5BXUc(*UDj2SLVU"+@,'GHi6R*4E6Cr+E#H3N[TkQkEX"J
+
+ESH9%Fi!969*Z$cJThQcaUdeS8XTA&(GV6Ih$Jp)b6Nkp#McA2PR&ilpUljMlq,6
+
+fTqK"C85p*pVi(kY`5p$HhpUrVIkEfIk2(EKkY#plF#%%iSeCVJBaL"DHqPPJ51X
+
+2[3Xm%i[S[@93),(N%jS2%Q8"5Qe"lNcqZYcBIJ0[fd3j)ek$b!TU)!f2`'SrEI@
+
+rL-FZEhMZh[+#11b5NTcRdUC!k#180+#JjJ$[3V@8Z3(kXNV-[L)0@JP9r[U)9!f
+
+jlEEhCSm`fpeXijN8#*+fpaD2RZ9"Df'lE9hPq@4RFr2kqVVqf9YH0hpA2"4fFe#
+
+m8G8$VlIhh*091CA`2*E*YkTbUIU%frm(!*!$$4*eFf9bE@&ZG@&XAc%`,QKdE@`
+
+!N!e0B!#3$`Nm[!!*Dhi!!-%A!*`!3&4&@&49EB%f!3#hK,50Yi5dM`#3"L4A!*!
+
+'$"N!!!QL!*!'V)B06PIb+d%'`,*bFPb2(2Ac1ZkCVEPGmkacXlAcpRT5lQCE`XN
+
+qJ09cI3R&TbX"k+PXhH6f%I5M&DLV"RdRMaAE4rD4,H&*pNP'qmKJNm%QSlf5K4)
+
+UJ1FSI1h5[HV@mlArDr@DlYZq)kE*,"6pQr0ZTbN+aA,jc9'cA'kj,8',a((TX#*
+
+F)k-i5!)GbE"FGUi,Y,pB&%fMC+*mS52amc4F(SMUX4$93f`F,8@LhJ99"PFT26m
+
+@a@+f02r'"%QL)Z`i&9eJ8U&SkLJ@0IYBSXF[2@@LNMHYLceYJNN!i%+Qb95ErEc
+
+BrVf@*K6RbTLP%,9E2(ij0NU06D!L2bjT-kNrV1Z&FLc1T6HGb5J506fb6er1C$*
+
+9q"(FPY)S+0k'*9mpETD4,l"T+63fQEL8[j*"P1!rk#FLri9X#(V%+*h%M#Y1*a-
+
+9NlaLN@K4@b[R6lcN@8bA6U1&Rfl(l6VeFfI`fZNkEd@hGp%l&FjJd"Z)rU$AG)E
+
+$c[9&V@cAj21e+mGYL1['PA0@m&AXQ@"1b!ZLfEYfR@[hV2!p&",r&X1Y@LkdmH2
+
+r!M!UeURa9$&CcY8@KDqpG+DLj2dk2iJ6%ic5pk403NJZI,rV3NA+b%5ElD*(@m,
+
+#I+eXPC5[RIGD)+eaIA&@+)McLfD[faZF&6jVmep"Z-i[!H#c3riVL'lRqRAf600
+
+ICHmRH$r"H#0lElGj(H&Em6*dQNI(P8+p9Qk3!)!Ejee(0*eZYppSY5#3!,-+[`l
+
+lMDCp2Hm0@XlJl*!!PJhU0AMc9d"hFAe@Z1Ud@Pf(`G*cefQlKIVA!(SjF0TRK64
+
+@"Lk8b[$A,dY%qQF-(@b)cm2NP5!#[S%hX)rm"eAPF!ZV5V!QriBP2Sp'm4`lrmI
+
+UdI1-e4d"c+jarGV9F`#lQHm%%%YP+jDM6#bl$!5cdf(4MiV#Mad!JNUdYd'&f)K
+
+8QF5&qZTP&i"JUa["IS'Xd)Pmp@i(!#Sj5MDX08Bk4F342h[`J$,CI*Q$!3@p5Ph
+
+!D)9MM$DLEl5RiML)*PL*88l9#%Z"IhTUJmAT+HI$2NHDEUrjqKFh2GG"EZ#JX3S
+
+6$aRMX#l@f5*M-&6M"+NQHh9lIH59(a-!hLXC8df0J%Qd-UZ!9VIqBAqYK[k+PeH
+
+3!"K)%Ub'@RR,U1@i-dD+&ZJ!!&PlAQVL!p(9%bd5HDZ3!+LR5Sae'1S&55C1e$`
+
+Z#G%16*`FL'"-mdD*)-i$K,b635K(S4*hdJ6m%-NC)RlYUmDJML$ED,Ue-Vdp3!b
+
+5'![$9!P*L9i%%6*UkP&%$4&A1H5EP0)pZ0J1%a%Z4[5FBLS'XU`mNdXa8J)Umm8
+
+L5+C"4*[cpj[4Ld5HfUHq3,f6-r33$-kU`014ch80m%%Gle%6*F"bTiQkIZ0Qk"a
+
+XGmrJ,A*#JK"cJiU$qJdeeT!!#1fB5j!!)UCb2PGJ,pp8KMS3ZaV8B`[b[+I[`#I
+
+%8hJ&j8'8)%F6$4UllDU9mZijCDR!$HFTj#5YS)JCQ@6L!L8X#3#HKp,,3+QmHMG
+
+(L4#6IRLE4b6j'dkKJMh)i%R$!,)9!DZ8GT+jd32Tf-j6HG#j[R&BM&EJ)#RMKYq
+
+J%8p$1Jc!FLM'4XmHSCQ0N!$ZGp$l4h)HP&(DK`IfkpEaJ"Vbe1#F,)Sd"P*qJ%"
+
+Q-6ID6b%G*K%b0KSU4iQA53a))Tfp,GJB5E`!'bRP+ap+DT!!0L'h0'3"+"($)$r
+
+i$Pl5%*kRi-C%Mi)KN!"%f$eBYB!d8pj84N%m)aI8m&iGN!"+)#PI4K0P9Kla4i6
+
+@k8@b#-!Q(!'Nk)A9dcqd3&+'#+hDbHH-j'&,kXS&#dJbQ"1K4QDppd450-K)M!j
+
+"Fj)DfpdPHKk#l"#8&Yjm3PJ!1[5TQA[mfjFJf,X!XFS+f0-''X[mNCJ$3d39eS#
+
+&L)@bPTR`0IC''Mk!e#,8H%bV(p"0&+bAD%5I+LG`pY,'G&STU*r`,Q5CL0kXrrj
+
+GE!FI9a"6RJc$T8JMK1$)2a!aA'#9j'cQq4XfYYYCV-)l%,X)`T!!fE8Z)eN)&)#
+
+3!"DN53)[$58mC3h3Yhc+,0-mVHHaSSeI49Qd@p)SK$0X")-#(#BmbD+GpFf[@EE
+
+IF*Ala&k'HTfP30!j2#*123i@PTSe&pCClShP&F+QR6FSKL'566k%H@G0ZH@+qGq
+
+'KNh8*BrI40e[5FVXK"-Z[--(jpZ%L'jrBSY9eJrj%,b0F0GFYqjH$RT[i*X8C"(
+
+Dh6UPVmED[#C'cL!aq(8)Y@Fi1)jm-(KIKF')Tf%4`-bQ5)JCB@NrLlCJ-jQ5p61
+
+Y,0r*&(PXQCI-4l2K0Lr[q9JjbcdML"SFUGJdd@S!FBC$39k8AA$2J*dV&GkEN!!
+
+eA+Z,PCR3b!%#9!"9Ff+iedq@,8ULB41QCk-rc262I-P(r@b0-m#G`mGf!Z*La0E
+
+N@54)'m`)Kc&#qk4lbJ+I1%"FSqM+b+hrF)K!c[!3$&&&2$U0&103@i1BDr![U",
+
+!b'+9feEZ#fja$M+G+4MdTJFj)$h*I,,344Z[eiF3"(qF4PCjHf%!$[Up0mjJRbL
+
+bZFPf*Qa-BDJQ-X`MQN-SDjNa*&33R#q'MDYqr6F8MD*Rb(N!p+a@jU&e#%4XamN
+
+(Zc#P856pb-mc9a4DF)SJBJ3pj&ed0U3+F%VT&U%VFrSYrUe-KSV"-#Xre-8SYq%
+
+H#*!!e+H*!lSPH&TiXYPhq+*3Ce[mDGd*`p2QTh9J!klP6ApDpl*3CermjlS+cK-
+
+S@JG4DMGZ0E-qSE"&@E2AFSDV1iV,J4KfIS9CX22qeJ+pj'k&@iZ(6K4h(VX$MLd
+
+qhJrX9$Lfq)l@R34h*!4Yaq1p4CA[,4l1',!1Bdqh&YAYVF8PP5Y8J92NLh#lCK"
+
+T29l1iCY+FiPBQjdNd!%#8Z)-(FHU510Q2QZ'd5EBM)-D&S&bAB[&@61"HS&5VSf
+
+AD!(M168R#*aCDN8l2d3M[AlQSi+T[!-p#bhm!-@!J@JcJRb&3TrA)i`#-CFHA!B
+
+Rq8ec!I$EGPrXf3B659UL`"VKJM&*eddbG6c)`ePIk31&dH$Y8kQh,LQ4ifdp%mq
+
+9&iaC3A#AG`PUT%FqSE6m3KS+fD#&qJ&Ul9G#L9m4L[YH$f4Bj3!*#cX@Kpai(&8
+
+C#aU6NF`+D'kqF#L)hLDBiIk$'[*`HCp$XfZ8a1#rRpfee-Ti`V2`3V5#ClK8a*R
+
+#XPj$5B+lNf@ScJTMN!"C(10H)m60+#`U'#1V#R'BDmX%cFDk5E0kfi1)8%UXQD2
+
+EedUZ"hH!BF!kY&PLSTSE*Y+lA9FX'$R+ZDP*)&(URl',qp8BJmFjZX2N*RK9GiK
+
+@`lfj)PZb9FZH,4lA-LI3Af4V!jqfCJk&2S5Q-2imGifG+Q+"fhCP1rhL4mc[mCl
+
+NA+h&M%T40'h`$l'hriciHbPbEh8+,)3NKU-Y5+l!kQ[VK``X$r[12GYraVSI%rH
+
+BU16J0("!EMrCSc"8cGe%1"p"#i2D#"XaFT6VC2KZ)r498rc2Z2a!8q8ief5"MY(
+
+#3D)S40$r62JHJdY+Yh'",CPiB*ib4&rX,q'ff!K2&*ARd+j',U#h&lR'DKi(VU-
+
+3aSDTNe`lJ*!!ib8ZPfE@&c$e-YH)ia4R2a1aK"kSE"+GYY1P@aiL[G-@HjNj`Y(
+
+$*GLU(V)!iURdpB+[PV-fMmjTk+B-P4`C$HcbDA8Pjh,(5ZF3K,pDhA#+jF%-PHd
+
+Gp&3pbK4"*DME@iQAGQ3!XH2i,`,leRZUAq3kEAG`ij3llAB$"+m[0eaRk',qqB1
+
+%[i'%UbmH4Rj()bHj*P9dK$U)`*B-JpmUJ6CeMNS8cP*pQEZ5RY&CjBkp#*Uiq+'
+
+L&jSN%m9&!H8cFA6i[3IaCZbTN!!B@%1XKb&ZfLK6p@lFrShlR6D1UVP'[pppqfL
+
+@jif@HiPfDZfA@(58FkjE+``c(1-%44M'`jdAYKcR"SUEiL`(f-c`Kea4+b1N)!*
+
+6J#P6U#NRT$rmrP#m$IY1Xp2SJZ4"Kc,3TrTYTd24YY1JE0Y48KlYE'UCcP&li1L
+
+fMG[#c$L,F,#m5aFYUfmIL!8XIh8NiqF4f@UGqMN1pL*a+FfG@YE+R6T90KKlr!)
+
+($HC6Hb@mBQZD*226FRQa@*3qIPLLr2[99b[+lZSM#AQiHkHqrQB#S@+h"jRdX33
+
+LeAj2j2m"!!d5GA0PFQeKER9KE&ma-5jSG'eX!*!0X9d!N!m*A[8!#AE$!!$"&`#
+
+F!-"849K89@f"0J%!Yi5dMlH%Y*%!N!C3T3#3"JV9!!$I'`#3"UQ[$U)!6j!!!Ea
+
+A4SjYHZ6SHAeR*kGl$ErC1T!![TZYqA`pDCGE`JNRq$cAPe"mAKZJTl+9(#HES"q
+
+Y308hB#FrFR4,0b2mb#D-()e`F[XNab2lb1dRq`JP!`#b+D%#R(CKGH'VjrC&fc5
+
+U[fTf'rDERN@6C"T3ll,HEM@SY&ZT[(l5U&5DGT1i%$dYlqf6,Cd`pK-r#TfJ8V%
+
+k*DkrZdX0+Ca%H"5&p,Xd@1c3`91LJce8(#iS%@rp!b9Z[rcX+HhZjN@0ep*2%K'
+
+LaM'eS8N%e)M#Q+VCBCN2AlK#KQ9hBY*@*2fa$q(NT-NNNYX'VIpH1M+JZT!!FN&
+
+8[F,KLj%8BL4p%ATa1C*MmefjEZ#-U1kiNkN6KP50KYR4LkQ66!4qq&IP024hVi+
+
+b*pjAGN+28'P"%5V*Z'aF1(kBi$rDcihm4GN!lD&K1Sk9VMJGMdA-ia96%P&e16P
+
+rlSZKKZRFUMAadflCEFZX@rfA9YYk3qhZ@IHB"MfVdDUek9@YhkV9fpDJ@XRU'%E
+
+e`V*Ve+PG@#FP6m5Zp'FX[850EXHf1[C*kD-@([qeL#ZaQ%I5LrqR3)Si5U8VGT2
+
+&6+aPH*'E6N@Bh*6cr$L4rM#pDGXi`03&0lA14#LNNd4bAHMpbi5#4V@5$C04VAH
+
+Ek&UYFhC5+P(pV0&YGrXRT8HRkUp%Y[8&"$cD8hmPDVFk,r0M[[dU2cr#q4'Zer,
+
+cde09M[89I4PBM5G2Rj6-DUA'-ma633fVhHl9QXd@e1qVdd'[eXK1kpeqdqUIl('
+
+a[PR&mr`+kXik*k@,9V2CYT4B2QjEThE*r"*#cr[@k8NTMBA%3j3k`GIlHfAZqL1
+
+PrD"NdZ-Jq3ea"ll#mk$HNRr*fPr,`MM4ir(ICG(MF"M28&-(d0Ep[+fDJ0BZGAe
+
+Y4c-)ZjaT!DEPB0@Y`f*DG!B6Sh8SG$p4q+%"'+JNFPHU`)j!bb3ZQF@*KQ"J@k%
+
+RhQS!9$R$C0@efM"+!6RdfhG[3)8IqST#!kDpIC2`dY*J*P`I02c+NEic$!5iZB+
+
+lLUh"5ljhI*baaI'aSX3HU+-GM50+R#X8Lr2bMX[d42i)"!US(4&!NdC4%%4c2ac
+
+6GDk13QH+UJ#Q1!(dfK1ab+ZSJQ'%IJB8Zp'-UmS8rGLK1#+(CM*bKCG+3Di68K#
+
+j6K!X+"B*h!*KC)+RM,Z"2r86TBCP#1k&Rd$bD#6FT%c8#Z%mF2%Gb&df*Zq*)Gk
+
+kBTC3&@KTeYVYlZXcbajBGVA#&hDbHihD`-)mG[Y@XeGF"(FEk[*PThlCIp2Y@-h
+
+@XZTmiVX6mQ1bqjH@3[4K#N["+f-SHkBDU@Uph@fmr2bbDeZJ-B9["D+p)lFpNjE
+
+%PVm+J4JPB-Ame1lf3)(h@)84L1CMN@#%q*93M`48QGPcR2dU,[dS9CAJYd82d*I
+
+$NZNkXI$(H!Q%TajcA84MRT9-Z%*ijA35,APH-NGT%-`NM#1Ya+3FPF`JFV``mQ-
+
+r@1JNq[*Cb95MiZ&pRbK)d%MdjK"HMZV0h2Fd&,f"!i+R@)ad%Nr-)EbQ1(&NNQS
+
+PHJ,[,3f"G3[JU+F6Q0qFekZ904pQ%,kdrYDB@[KrjhdDY(k2Zm#@'im3j+GCm!J
+
+h6c"Q4%rJ%3)D03`Hi@eEY35YC@QD4jI`L8PVS`L9F1-lEr$TfK[-Z-+X*K,r[4a
+
+pUK8FiCMF`)RM%r(@QFi#B9CR8QaFYNe!jZC[Uc$UYY%L,TY*UV$-5X)Am6[hdQ"
+
+#XY'f3hlSq5i54BM"6*`%aKXj5!T0iHr"*m4B[,-993N[%R(ikb3h!q0*P!B`kh!
+
+CCLHUFlk'I261Gq%aBLB5)5Q5E%2bb8V-9Ri$VB!6DBam'E-RL5`4"HTQA(LNE)L
+
+5Jj,SrcDm8)QQ,0h5[%E-0EL3!,%epa&D5M0rNbF'!TdCG--q3+1h0ijLJAdEZr)
+
+H%%&6'JG!9'5L)k!S0&P[$)JEark1%!mI#(%$-$mJSND!%i'l3$IZUXTUT,0CF9b
+
+`fa)-$4FK5pm6D$f*2f##1+PUIAjCDrGfU'kGSQFiZ,!ZN!"Ja)&)A#439(c',f)
+
+SL)%L5'-N%q4$PZ#Ap@@C&)N4B9QMh3!B'520`SQEfbPH23hXaUZqU!H0GTMeIL`
+
+(Nh`S!+(LThTX$Nr&G#KN9Zm@2keq[pEij%cLKXB"2*@&U#1J-d3dp-EJQ5@blT!
+
+!mpN$FQE3mK%friQFE"q'5*ZR#Yi#Q)`CFXlp!1JSN!"ij!,+h42A'&Gf!&%6MBi
+
+Nb0&Hc!#UJ%CM!Lq5Ue`l35VSbelYFQ"paEDQFQZK!Cc+QFaV3Cl!CJ#X2"Mr6*!
+
+!4kXChq2JP)1l(`M[p"+NeQpel%rf)T!!510!HFS(e"'J%"KEEdajUj!!kahT2Am
+
+J[4@mr'`BJVa#8NY+FRb$!8KZ[VdQM6QlMS8Y9c(N6MJIFLeN`Z#'@p,B!UAjS4Z
+
+N(QT1(-BdpK3c)FTA9$YKjMi-ac"+92`NP`ESQb(hU+M3B2hE+MULTJ2A14bLU(!
+
+T(XlKMAaPAXj$PDTRb6!H9`+`1#80%R+,f)X8Ze#1Sd9Q@U*cb*TiUBZ@&,N84D"
+
+PSc@Le5JYXqjU8"60)R@c8#0$@p!2Z%8i"[e'4r1jf6C8&a#a`3U#4VGTQGpm8kf
+
+S!j!!leCh14-SZkU%!CR`Z('m*`M+M1$IiQQl@fYfZUe"UrhQRNm"FaS(2P9fSBi
+
+!iJ$`HQ-qA@mlZ!28S`G!AH1,CX#+A-*X$P0&'&%P%jG*aKMfi8KY*CXcbR'['EG
+
+'-TSLU$Mb!f35-jMPDkb"!jD4G,""M@mMh3,-j9!-pU&XiSNI(FMRbd%mH!k!+6,
+
+eIc)J&A3fVCjphQjGY$jP6D")id"jbLl8%+!3lj!!d"Y6hXhZQ$[5qqb"p'i`4Lp
+
+!HJk-XM!8Bkaq4#+%cEkaN!$[Jiq-DQrpD6S&mD(,6)&a1Z5)LT%&9TBKq5+X8VL
+
+'S$[9ZLcIq$I%Hl+F`QGJ)UAQ,iMhZYAm+q)a$fNF%%mjEMS#a&2,#,A(L,GD`I8
+
+piKhZD3!3Ei8a'JI%#e-1E62MCI&Y"-bahL4F'0KHK3f+hmB5p3UNKj5rGAUI*'3
+
+DdMF!AQDfk3J!6bh4e4N$AVE(m)lVpKqi,S-@(8&HI"R58,&ZT2mNNbN!6fef"jN
+
+Kj4d$c,DX2TDNE(2B6c9C*6Df'YhH'r6P2l',3ijGX,`I9S'XbqfM("EZ,U$q!pX
+
+0l&VI[[`%Gb!KM32F&6ZrY30`Tq"+C`ahq8EB1lSlH+#l(&[d"(3(V9LGaG(Zc(E
+
+,pRQ`'CI&jcK`PaP[R!2Nj$PXZEa)V0D&12(Y9K&Ra1X(fI,,)h[rCX!M3"d,q%"
+
+dQhARpeLRArK#KHr-09d!qpaLLVBBkcC,YHrBE[0T#[pJZ`h!D!KF1jIh*[(5f-9
+
+k0faKcq'3!$265MKm1qDlc03c9-raI3M,*4eU98DHaBLGk``)3Bc)G8JDe&jCf*!
+
+!F3TF,,D)10JFP84'TV4B)lMZ38c6&*!!k'%4#E6aKJj8a@i1)E8!#HfGr`,Q,j@
+
+a,B0Ri31DYMT0ki[[Q96VX2YFDd#JQK+LdMDK9le[%Vidia6I1*-rR,Z`aI("(R#
+
+GLXqS8GYlaYN(d3M2!**8@fBGP"65Z51["6lqS@AbarcJf[[[qH',4VBRDGQY5C,
+
+-MLZ9qAaH[[e-RFSILfrJUGM&ppBBH0eEj[,cDeL9HZh462lZ'QjUpR9#r`F!$4*
+
+eFf9bE@&ZG@&XAc%b,QKdE@`!N!he'3#3$`PVIJ!*JZ3!!-%A!0!!3&4&@&49EB%
+
+f!3#hK,54Yi5dN`#3"Q[#!*!'#l%!!*A*!*!'&MS1SQ!Pb!$B+b2(b$lGkdQp,M2
+
+jq[c@55phlBc6NdhfN8eSq"jJI3Re[$K!cfcGj$G"2eU"!,SQGDCGaFJqbMAa['H
+
+EE-,`XI$N0Mf68r*8i(f--2%"Bp9jABQ0mQBa&8Vm*PI+PTp[jeR6DVIBpZ0-XC!
+
+!CH')SMaGc#T+VTaMXK"ELLl%@&QSZUPCQU'V,8A*Ei9Pr8L%C39A,9jMKXkqXe[
+
+Ghl2i%Q2a"95XG*R&AfPa"bi@A9jLN8L[D1LTd#b,kkLabSTJiLf@0A56*Gb28IR
+
+afbSAHV6D6,(I'N*VD!"RUQde$I'l%"[pHk5+&XY`)EU-*IEamGZki,`Z0+lAc+J
+
+K'URAj8SYYFibDVAC9R@G*Bb+qqREYQSe1Il3pU1fVNAf@p%DIe0Ce@X-PEV-3#9
+
+K4N1EUUCEq"rb5b%RC,Z3!)G9l)ETF*PfSm&0f9iQX`b@'(61Hee#6M0Yj0-jr&N
+
+ZP)[j9#DrmbKIc$pRaG*kDC89YR,jC`R&r@dSP0M-Pp0X+lfC6iCVh+`+V50a`ba
+
+EfLVRYmV*m'PpfHDM`[ZmHf#)QMQT+VKTf+,+)eDh`dHPDdE9ER2G1LTAdda,D"A
+
+l5*j'#ah91UUecR8Z9-X3Sd*[TJi+KK++fbLK4+D8Je,TVI9N1-`bkpP5XE56$0p
+
+CFrk&@6Rr$!"h&TarB9BXE$hUICDrIY,l[S,[+rKjZ[GpEFdT*rRkZZcQXi[h`Cj
+
+3dV)rdjPLRQAcaH*f1TFVJ$lQI0hG6QIGVjR56LkrNeb3!-9f8JQ-hLHJ@pp+KMF
+
+,Z9`alm$+cmAm@MQFqL0!0hEbDmQ`EA+")@1VVEeB,#T9[q1`,iC6l'l,qTT*"Ik
+
+%-H$-L8ZX43G,mM5qm,#lHXAXS#B"S1G5AdmL30-"eelCk!$XF@H#j(5#d`d%35H
+
+3!!k&IZi8r%%!c"2,U!kTB26J!bdcR1TrS3$Q9A`d"M'##hU0[b)!U05+093YA6&
+
+XZ"EfcHZaSFM*V6LcAPUc@-Se3kL"EilaKH(4DUZVVM+VUik&fjDf`9)V,Cj+@!,
+
+r0pP,YD8ep+4PG&,IfHd1$1(US)N9UiNDYG5CmYA1hPGKCPVG&RIFN!!9UI'U!CX
+
+%3l@U`f$$Pe45Ab@8LZY2qR$5[Ta"hI1JlJ93%3mU%N"&2DKS!+9i8%S!PI#J%J&
+
+8dS0+"P!T$`T!Ak"HH&![6U!b1jLF(mM5(PNkN!!Vid&P!ULX"j80S()H9#k!JP2
+
+k#*Ar"1@'#K)+`FT(U,8!DYf$@JqJ0MbSM3#Ui%%9!UK((Y5M!+VS348$U%d2DM1
+
+!f[+JYJ+SNJG9#U#f2DMY6e",!kM[2DM[!kJG$fSRJ0VeS(B$U,)(9Ii%GAm!pGL
+
+$HKa!2I@JRJC3cc`SV!9mJAVZ36drJ9*N8UA)@%[T49`9I0['Cm4H[9LmJS8#,NE
+
+40hiYrbK[p')jQFUj+4l,kjESiZFEEhr1GRP9bZ(q9LCaI4VX"FLFI5ZjQ'+*$5H
+
+KF`J(&9#[RpSl`CQM)F)a"h)J4[r$)GVJYiH*h@NMp@B6FVpB$%%fi0,AY6[#U0P
+
+9DdK`Sr8p9fYNGQ5"eYL*!0b9eUKYfQdL31H)Uc0L4,*!jeKB`PhTM0SeV9lRJZY
+
+96J6)(AAP4X"*#XMpF"LU,ci)Tl#%9'qV9@&mP[dY`a(!T5l$X2mq*ND8rr"CN!#
+
+r&bF#QS5)k*!!P5'60""JkPBipKFkpXK&N!!"',FYl'KZFUY5[qVLdrTc5CCGT,S
+
+Q6,pI,K$Q`Ubi9*V&4bk*!L#i-4k+Dcb`"%%@q#aXm`$ZbQHKpJqfB@%VP!S`c`P
+
+AE#aR8!9L,f,)hVfc[2$e9("C[m90deRB)J$86VTUBfZ%&&"l1)U@-)V!pYmT*N[
+
+c(r!E+N$SP#ZdV%!9Y$AQ%0Sk2QYVe'mi1pH##K$mK5XiYQa)!F%2c5)m'H#ZM1D
+
+EfMFUTef9XI&$#UMFLr'Ke!SXRYTU'4f1"2)r8Tm$A)VbHQX@`d*5(65i"D2h@CT
+
+rBP`*j))9FXrJ80)5DjhM')$BGIlb04T+&%l&SR(QJLJZ#AZL#Nf'cQbhLc9pC`A
+
+d4VCH&LjRX,3F@0Vr,09CpIQ%MF[fl(4D#-B[Tqa*r8Y*PSFD,k-K99(p,-KCpER
+
+TLXZ@%e9,pDIc1F#YjC8KQLU%kRIY6qAR(PaD%%RdcG5)pq[reCH5!8MNJb5a2T*
+
+PY(#RBYUmlb(Q%6MmXQT@0@dDJSr,cbI[dRf*e06UIUHF!pcN!"Nh"m#5,LQ3!!1
+
+-V)Xm1)#l,rY6jc-ZIbY)I!(144)eK'&2,1[2%20ae92EE+($H@hU1iiS+)&4rcF
+
+`)N+HTBF!ih9$m'[$0J#J#85jYQ`NJ5Jbi,KH+A&Ufq6!lNBFTUC5GdkG6)[h&"N
+
+K%!&'S8&$')4$piIYZ)U'f-9h,ZF!")!SFL4SPQl-21d*!!%J5YaK-[`!p80p!N!
+
+54&4!H[@V*LF!4)""*arXq@L@)`LUY+Bq30Df,GM+q4Kj-'4DP2E,aZdmIq#H!ma
+
+&H5"RNm2N1peh"(0Aq4'+JT!!CGQC#h*0rP+6FAN#3"$%LT))+b6AQT`5%!#b5-m
+
+++&eYMrDZ53!%'L#Y1%iFU)M-BK`ld!h*aEN2SKU-e1(UQKcYAAq`R&@rLEbcEZ5
+
+0%e*8`B+IA$5YBQe!V9fVrBk!!*!!"81`"a@0A`[c)m2YfK['$D"i4000lYc8IHN
+
+hcR$V$H-d&PeLC@1IkpUIRA-XY-$b)2#N6UL(0(ELFIr&-@ra"DH6V'TcfYiRpHF
+
+V!dJrUNh9$lc1UXr6VJGbJ,AiC1rY3hd#3")j$S!NF)+B6pCPrd&aZmJE@j!!AN5
+
+#b6Y(9lZmlaPZT9Pa*$G-hbcm9(iZ#&)CKqK,X214J!#`hVMP8[A2VK`Aebe0YbQ
+
+"5%IZX9H0GJ@R`UF,JkF!YcE89ESY$h$lH3jai$m(kL!!b4TY(*IKBQqhLUXG9Ej
+
+A0"V'hUim3hDP&jKLd4JV[H6LTFB25)(8($QJ("UrY0)&!K8`#Yp1-lTK))lNMNQ
+
+VDh5k1#-eECKh"214+)G1Ti[A"M3Raa,)JK&cZ)%ZX`V$RbjReHFjKm0M(jl5Z5e
+
+2!-4pk$cFbM,0YZSR94F)4%$HiIFYS4"c8"2j4Qa"LQd,Fl)[GJj`%jcRh1!FCj*
+
+*JH$md-&J#X+pI!N&cJ%)!#Z,a-pPQLeEM4")JE@Q(kRS"Q''RK(*6)fhY$DZU!P
+
+#)NFCl92$e04`(iY2!S"c!"VJBZETe8Z#i(6Qj6dFb@AJY4f@jZHD&`J%3*U$b!0
+
+8"deYNS"G)-b$B!Q&&h[JeY)d"ci&Z(&ZHGHji4Bp9H$F(N#[fBDX@e`M"CCf9c"
+
+YH1hApFU6qP4!Kab+6$rd#'*-596r-MX[%1L!6TQN(Y4"Vm#3!2+D[jTc9Td!N!!
+
+$F41!VT2eFAN#3"$N,SJ3CZ2fZ$`")!L#$8NdDj&aI3*!%X3'3*STFPaqRS-JTq(
+
+YMM@lEYD[6`VFbMP")KSN'4VaKp*,'(@r4ikV%`4bq2e"%-Ja1R-Mel*jaqaSNqM
+
+m)`%*F$cAZB"l2GV1,qL5!8K%Jb3M5b'hDbIh4Bq,BiZC%Y"M@FB*iZBSaVJq&G!
+
+LVe8Q'VTNP!c+35#*IXPY,K#)!'(mj6@U3*,$L5"Y[,M1EBkV%`"b5+mMCVR0Z$`
+
+"))K-TX3XYaQA*`!%NG%8L'BY-Uj2!%JLXf!abfh'j5Q!1a3b,X1ae)RRrNK!!0b
+
+HF%DiQ+5f(qTIGFV#5'GRBS*TXSGd4)$[-CDA'(L6'ek+4JVXX-VKm-U2"-kUrhY
+
+"T2FNUpkc8rlRURKVeFB1fbhm!@[4b%"TKSG)hMcFN5TjC52Cp"a(T&J-3h)0M`6
+
+Y$F3)mZ43ZDQCV2m18ADJQUcK[LL8ed*i`'ULN!$+i"%T1YY3a8Z1QmL&P(cT+Rl
+
+fjV'VmSFKfp6d"KZSeE5XcUUL(*!$i+e-icHF+RrT2a"9+IFI,"V#F#qN"ZmAP96
+
+1N!#(Q2,KSP*8pqQZr`F!!!d5GA0PFQeKER9KE&ma-bjSG'eX!*!0#53!N!m*GX-
+
+!#C!!+3!!`4F!d!$!9%9B9&9YJ6B"!,H%Y*1hK,5@!*!'IA3!N!B-e3!!hrB!N!D
+
+pe3kLB#A)!0JV*mI)2Uremj+pZGINVT21ikkGFAUbb6kb#6pm$d!p#FARErb!(UH
+
+Fr#ES4b[`9CRP1f!RMc#raj-Yi@6!m,AaQfcDDZcFK1+"pc(#a!GN[9fCFRfpQSe
+
+NIPHX&HS[0dZXBh89Y[NdAkd8@$5@5$aI,#35aAU4S4",aaH5V'j)ULPEXUC+5L*
+
+4fSLLILc'#JDA,0jLQXUqXj@$2l*8QV(8!LJf$TM&Ij*6!LiCIj!!CV&B6c6bh*!
+
+!,BZVS,(-UX$%&9E39*0PR)par2Lib3dehZaNfHme3fl,!-iNfqTSaKmLE2$[L@3
+
+S,-m0ii#ac#jmI,aMF,jMb&aYQA(0D'GIbG88DBIPT@DR+kNUbfJ0jp2MVQ4e12`
+
+KlmCY9BlY+[%@2e'@e"B$T31QJC*KaL2VNUaDm$rBMdC1bEE"(YD`fkEJ-ZefQjY
+
+BALDc0*ET9mi[[N4%-C9,Z5,m@Dr8Uk9X[V6eT&3Y[@69fPTYQ98fLU8Abf`9bSj
+
+YCK+14L55@5r9Ff`MYejDLEDif64N(E'MV&$EU*FfkL[4#`iXq`(!,MrBeib@q8R
+
+Gi+CQ'ddHX`jd2N"SD8flbeAV9+iPQjBK0qa6ZpS+9*TbUVA'9@j)PQB-K%kk%3K
+
+'-JQRJ#+CI+d)MZ8fePDL8CCI+p5UYDf9k&HViPq8e8X[!1#V"I%[bUU9M5HpcrM
+
+VClh[5r"p#AkHkheIA49bb(ISLfeb!hU#,5Nr*"IMD%BdQdRNX)Ccq@U*&8V9kQD
+
+Z@+b!%dRaGAXc9h#qjQYEaG,@bJ++E@8cd*kI!HRDaNTd[9)X9NX#($pA5k[eD2B
+
+[!&hH+UfH3+F%p&IETF,LIDJ"GNqarX63JEp#La#pj!BVhI15h@YIml"lDX283C-
+
+5m*--m23-lDNqK4+e)1U")+J&dN&S8L[p3[QKVZR4,2a"!&5IT6@2U'!FK'R4-U2
+
+C`bm%3A9Ae"ErL3#JNKV@N@ZjKQE$$-1qIG8f%YLl%k,Ei`#AkP2a(4!l(GV++G#
+
+`T)E#XaR,J2mlE%p5j,DkBQPkpMZlUm1dZ0b[hB69!Be@pX,`T[l$ee&Q@JF+&b1
+
+4&@[aTJDc%Na9bbT-hc#3!$5bAfF5$@F`1B6$'HB#kKXAkKXI+ZC#aAbSZ!X9pk%
+
+5,P6#KmUi8"NIDX@&@['KXLi8!&e$rHK#r6L'bQp"dl`LblPN1GqZ[!Z9pk%+,P6
+
+"KbUk8%8I#JDNpe#Phk#FC!5K)&ej$lAU3kfj8'Xq90Q&+[Y3&4HUiN-pFD'Hq&"
+
+9&kVU3kfl81Xqe)B,YH&$e9bSQJqek8*"4[!VP*22)G6h,Y6h2Y5@#lAP3ffl80X
+
+q90f&U[m'GEm2pG5&HZT$2AHKR[Y3,ebS&cl85aIUj4JUJ8P9!Q1Y4#rLDX#h6IL
+
+mfFr$'l"G`)e"jJfraMrUj9jZKQ'F%pkaNQSC"r$cmYR2f6C[SKh1Ec'!1k5"j3!
+
+-f$G@&V-X8aE"R#$X+i$HBA3[TP(K)8bF!V*[aZ'(Bl6qEim6ZdNK2HJRKXRlLp(
+
+X6JX4!h(0f*H-!8(Sb--PJ1*UNmp-'H[I@0)ELK!*0bTfC)9rqp'5XEl)U+N"5`C
+
+)4)-PaiAh5#!T3Gd1j@m-@HS6,DBF)SXE(bej"a#DXLJ+6r9DlUAmM5&(U`LT*!)
+
+CT[A4N!",qG#3!&525'aF8!(kBG%QFDE3JMBb9#F!'YX$!F4KfbrSE"1#1eY5Mai
+
+k8(Y"`he$F'0,,hl"`@)4ZlKQG$pkFLP2"-cFCf-cf6"i(rA0*(CbhCl0!52eX%U
+
+@X)pl-m#CZ+dSX'c+1D3`rc8PQ6aUR'RX8!#Q'l#)k`hIrk3J!QTQE$[P8$X2"j-
+
+LMN(!KBRG4fXq)(b*epDFH!ef,dL"H'eJf#0SLqhQc1dcmE$"`b$6jUTji%e#9rU
+
+IqZP4)d3L@-[hjX9AmXPiLUd*K-5fq*-pN``CXeffI3#VmQ,"NJ`)!@"RXkeC@T!
+
+!!JcP`qD5JQlBeJeRpC8+d#F!CQdd@GaR-,b`p!d#9@#-9bkH-GI$4pNC2Q"(LbV
+
+)pKp!IAHie*,9pQ`8I%e!!-a%%'&fZ"*dVC%m!4"F`ac4N9[FXJe,QDmGR%-3!%8
+
+-dhK(k`DfM15*J'Va"[MV+VRZSK@RLm*5)LR34Bmc54KljCdJd$`9$fG3A0Z3!(H
+
+iBRVpi"d!!@!+&,@m-bZ43h@**V$N")U%X!@kXEcM0Fq4ZQ&6")kmBL)J6%R#GJ*
+
+)`5*!N!#eM!(#"#%*Q5fNYE2`B+K1!1b!h%HJ2@dhU*%*!!'3!,,JG'(b[`8*be!
+
+qh#A#UV2i,2!FUAmC8jmiBbUXZC-#BqVa3KrdBEL009p4G14TJ3h&)4%TB-Kem9@
+
+GiS0c!&4"dJBRZ,++e1$"lZ0B2qam-,iUdRbVEkKq'r4ALLpJeP#iY!Fj)TalUQI
+
+YCN24fK#&`lG2d6pNXFRi)LjJFpLKDBZ,GY8HB9@J%3,E@X+lkG"q+8m!$&PBR0`
+
+dj`&l6jm@50G(5%5$*8F0"h)h"FiNaTT`[8Z'hcV,q2rT0&#rbALDe@&39Z@I6d(
+
+ZZV4`+@M53r%l-p,BU3$)kbXMqE#',iQS"d1525*,N`a$JX-20fY8[d#%69J-E9k
+
+6HbXH,RNXBAI5*'r"p9+H!YMFK&d@4&)efC39VhKraELE-e1i3BYJZYbFcCVR#!6
+
+!QKQf"UdTHH('P6i"B!Q-r`+T+dhc6jH"!1M#N!"E3ED4A!JDm8LI"PLi`VL&JPL
+
+k1TU#(SK@YFq0TM4GdIL!%-ji@(qIeq#(kQ%r5F-UJf*fVVG'hJ%3!CNB9C!!L&d
+
+RZqY1XJXhf8L"C2I4i0i+$+*GU@PSALSb!3Klji!T$GeB-2'IG!JqCmlmJi)3U"P
+
+[fU!*DZCih)0TiACD(-S6!!XmX&h5PE`5Z9!R!1b!A!1!i[1&Z3P!1)["L0jYh@C
+
+Y%i"`X`*pERhC+KVVheQb#"09Yf9bkl-Vj`MKP)mM"ZmfTJFHV[6[,,Q2M9`JcA,
+
+Z)`"+)!ejc83eQ(+mX`KK4KH@*l`M2&Ik")!P%'CdYCDYH&FihJ&mL4rJ84,)!GG
+
+EUB,l-CJ'UY*dqrp52M3%j`3NmTVR@*m8Q1aac`14rV9*m`'"$UL9)(5P#@S&XRK
+
+%mPVkP6i"B!NN'DS'lm)),"RThkfZBYJ042$`#cJMp'Ppp4b"!0JcKHN&YpVKZ5'
+
+QGrV2CELaTRH3!"HalJ[([3CmS4i1e0LRl0XT[`p!#Ncj%bCL`*6VkEAQ6+p`*T`
+
+S1*fbZ!!$c$3%2K1h,3TJQH+S+bp"r@Jk9b8Gr["LFjFKY!B#(-5#qe+"-Dm*3PX
+
+J3%8S@fr"hDZC-HF-S6@3!'dJeMiml#C`jJe#1!UPBAeKHLcfV6J4d)02fbJad)H
+
+[C`jiN3ebi20`D)*6$#Qd5jF8[!8ifk*m64!'iG!$GFQBVlU0j!Q![J"p4TIJYd&
+
+E'1N6!+@,,R[(-Xr%iHblTK!!hA-3PQ#1S`GAHS8i$)RDIVKBI3`&mkFHA)0ca2'
+
+G3X4!h8)#"e4"iCkT%`&YC0J*k)KQFYB2#)L1NX*,1cdS,balJd!*h'8mTk)JM$P
+
+[Sc4%*hDSB-&P2[a1#!L!HR'U8-I(D`AemKU"!+JAb-)&&9i1RJm`$S3Trd`,P)`
+
+cJBK6q*qEc$N%'9!f*ik6%$8$#DM)'B0b'HQ(Zk)BNXM0hGQQk&#G!0K)`[Rabjl
+
+8@*m!X!3lJApfD!*!#Ua*6CJ)#&25f-f4DEiT03BJ!%`44YqZhSd"#!"6X(&k'k*
+
+[a8-cF,9*ek6TZdLZp!N!5l!461qKADJ6!(EJE!r2d![m'-U(GmG%a39Aaml%#B$
+
+U`(8%6CqhMk%m!@!)4N4!0+rAN6i"B!P1lTSqGf3S6`"FE4G9&laHBkK1!03($PR
+
+6jF`,G3,!$ScmYINF1j)R!)jfLDB0Tk5#SedMI3*Jmap0[RhF`dLI#)KaG4)L`6h
+
+Di--(+ZKHeCjTd`*Zi"PI(6DVjF'V-d*p!L$+`QR,N!#lm*!!cVh29aZ1)@L"R1f
+
+FLh)`jl)pd!cGjGAY5BbQN!#TaA@VSk$Pmc1@&bJ%J&%LXd+kIEPeCp3P#J(3Ih!
+
+Q-E3QEpR'jqCi$%%,0-Gc,L,#R23aecb3!$k()!#Z")Q*!+lm6#qT[LFJ![C6E%*
+
+L13@[l1Rfp)l)K6S4X2,N6FlAUdiAQqUpjh(fhJ,h2eI&!cM,@fblmQHic`5,AX6
+
+$Xl$rrBaUUZ6&df66dkJKa@,3*&IKqHDpKKL$e$e5lmJQ1h`K1YZA6!E2S-1hR[0
+
+@"*iFRkPNmr$N1*@9*@12`k(a5KEI*Jmr1hQH22i`BT[L$65(ER8X5ep1*2Ehpq1
+
+69lFRrRliT2G%rI!Tk4&SlT9XrfAT5#@D2*L*6dT(8jh(e[mI!*!%$4*eFf9bE@&
+
+ZG@&XAc%d,QKdE@`!N!epN3#3$`Q#j!!*Qi)!!-%A!33!3&4&@&49EB%f!3#hK,5
+
+@Yi5dQJ#3"Q1f!*!'#ZN!!+A`!*!'$rm1SQ!Pb!$B+b2(b6k[pD4qRlrAj+i$kAQ
+
+FQPIVXl4pC"-@2J1JRS6L+IjLq!%c1IP0d)p@i+XqkjcPmBjQKLHhcmLcp4M"Eh,
+
+d[2L4,F8$lf1%L3mBUmlV5KFEkq9-*2fl3MAIH,%KXikcSl10ClPb+FqL-8PkRXT
+
+,8U&4B&L)cFCR%UaK+BDY1CTT+,SNbC8SeSr&@0lLLX0Ec$6BGkkqpdH@R'8X13-
+
+9Qh[-i@qdT)",a1GR@5c@+aTjEQQ1``fSXF6+`-4ePMF0Qk@pMh(mq%6PPK&A1aR
+
+fHp25fKU!-m9e1UEeK`JErPY6,*hPZ'AY-CEHKSp2YLc1Ybb0'bdlEPVYc0Yb99h
+
+CBMP&lH`SKX(5CY2lp'4(F6SFrY#fikkKaEEeH)ZrUk`B,3D9pTJ*P5`l(PPA0-1
+
+"rd&q&(*-9JGj@00Yfi,,GYYYEQ0lfF`a@AV31CHk4%3c&H9X!IjXP"TP1C16DfY
+
+b@Al"bYA9kK)V93VbjK*l#Qh('QR*Ua'*T0IP4TC9XZ[bFV6&EGA5ZSJGCIPUT5&
+
+A'X[4+`jXqb(!0YrE0Df@I9IGiVET@LU21AYG2N4SQDUl``hRX&a,Xae,DlU(FV9
+
+ek$6pX0BU0lLP1+Be,24Z'N("5&Vb'LL5cP8,S&LfXVSFME,FDVjDVYD@Sip@a,m
+
+SDmLE!2"S4[b,XR+TXYElM,rq[[Gp!Ei[`-qc[HmV+k)Fm[9eF@eZ`8a`&IePBMD
+
+1BN3cD5Q,2Cc0P@@@Pm[PM@bK8!)P%Z*VI51EpllQUV@#A&ZH`@+e6"V'mrG!ZPT
+
+CMUkA#S@b,-$aFePHJ9El#d!ADr,+1qK8$jTpT6YrBSMq9jJ0BSMFmX`0H0TIH0K
+
+A4Y2Z3Xdlm+3!Ie5AmkNjD'DK*aQJk4(DXqiB5[5#k!H#S"G)Kd*R[6*SP*F0Xa[
+
+0`"m%32FjTVT2"6i3E+*M4c2p,`4"GjH-&Rp$!&!T6@GIY@c6G-'mX'rIMJd*KlB
+
+NaM`kYq5!LQp"X81h9Na#$8GTkMb6GLci[m0H+lV@0TBGXj[jcYhTJNeF'[5Zj(5
+
+J4LYc*EMDIIPeP0R1RXk&&h*L,DkDB*,!6LdCB,["L63cAkHPTZG)qR"SAUkJ[['
+
+K[JQJBMj8,)#+qe$a!%VbSD3!+Ze$T31SC4pU1B$+q&!!p!AU"arUKe1SA!f'jM9
+
+CeLI,"R,PI+KF!*AhSI)"9-'(+J43B*!!EU$NRk'mG!+K)&DjJ9S*S&CpU08!UZK
+
+$&31SNJp9#U$@I+Le!+VX3j8$U(8IDMf!U[K3P3#UkN09!kJ0(fVMCbJ[C%5STcl
+
+8d`#UjN29!ULk$e82S"Sq&13Zri6b-Nq%HZC$23ZJR[Y3c`1S64pU-i"ki81p1)@
+
+5-+Q5-0D5HK&A%ljY`1H034$HK,8#EJh$E[JerY%SpR)c$11mm)l*KQ2Y`Fq,4cp
+
+RGDkL(0j[-B$Vdm"@!#EVPH98KU@,)TJ6K)-+8+qIfB[C+65%q5JJ"f,d2abJ$Aj
+
+lN!$BR6A5IK!jQiKQAVRFj3K*"*4r%#594#)6&R[Z&$QVIbY*Ehi$8L)"B5db`9k
+
+2meQ96`LrcS@D0aI!iT!!!R0K+&Kb-CUaP*CLUBi#8qa@p!X'!N#Da`*,088N6`B
+
+!%!#Lc!NQ@lY[PP1!8*682$)C,A0R)XSC`-1!ReY!T&h&9MAYEX5r*lL9T4Gm!04
+
+ME$reXb#(Y6N-P)jL83+#B1ZTSa&h@,bR5$MNER5Q)MVP4'`+SPm@8ai9Rh6,@If
+
+`9m!H)j)1'if69MNR#$X&(4P!GFHHlL0!f#[JfC%*[)B1UlD6GVQ%#-ATc3CFJTd
+
+SFdj`+dXL-GaXJdM)iLfq*4Ebk!##@eN@pTP5(T1VMYVi)m#Y+22llRT"Z#(B'EF
+
+lRe@j)5!!iLi"Y32Vj9qFLmm3KS1L#AGDlQLfA0F2*B%YDd!bAdm5e,2kYj)m(L!
+
+P4Hl'GlU@Ya4,"a!mc1$N)ZBf[+ZDlMK'rB4!!!JMh(mAcNP-C6N&)!#b1q&SId[
+
+[cK%H"Pj#Y1"V1%-aQAMR!+'9QX-1e0UG83GIekF"NKDGJ-KB$M`C0Kj-cP&HF&f
+
+I!"KbD-KXrQSki)l,%`&cK(iB)JI1!Z-MGl46F&ApBIE2SkYhM5k%T*2KrjlJ,R6
+
+bS%U&6Ca,(T0QY%HTdrj13656L-qbKVR0$He(X8P'#M5a*cUN0+jqEc(I-p!!+H)
+
+ZAC!!(hjCDDTl+df`B%N+V$303id&X-1f-JjU2T3R!!5"`B9%)jGiAIr"rb36%%F
+
+K8PG6*blS!L%dCSq45S8*U%kcdR-#!L$#"BI9JiUha[R4%39hU!"eKNN,+Mj0D84
+
+Y[(a$!#6H0e"NJbc$NB@RXU$ri'cDGMY)52l&33G)02+hT)%dqci`-H00,p@eE(1
+
+bkA6*%)lRH3L)!'YU'IVP`H@q64ES!&Q1Z#J(FBB,#9iRDJiIaFiI!3L!'324'N$
+
+Y+"DFBjcXL2d%%EBca[r!e99d$VFP*qem#8%!L!2"%A+0GPY2ki2M-R9DB$B[`Sk
+
+*"cC9jK5!$ZL@BlA*L*l"a%H!G4@B%YCpkrbGJ`#3!!KM-S&QDcrH$m-,#!)JhZp
+
+aMGG-2`+%'@a[M-%HRbE1!4)##!r#,(S'%c2H1eR1!8*4[0(kfl,`"3-4%!DHaRL
+
+83aCiB(kpbH9-EK`-kX1j(4V!e!chIAYF)l2eYR`LRQ5V!N'ULcrCpiUPiAdI9Yq
+
+$1mQ8`%Mm4aI3$Xdd('f`13CJZh$PHV+`rTiJP-8,0`68,f2l%S)!F)@HI4UCV`r
+
+P#3""2([q"Nj,h5Pb8Tm!L#bpr(LUb%Rjd$AM"1e`IETKH9)q&!39lTM6CDVMkJ5
+
+!'F8C!%6'Ye-MfJF)9m!r-K%3SZ#f,6)jVZASdm6U%S)!Z#Z&FF![4k@1UK-!$Ba
+
+Z[DYVQ%r`qq6f*`S#B-8CVGLVm3,[Kr*%3,p-`dCUS%f1KY9d@BdBQ(6$c@!8'ql
+
+%YH##q@5hq*cJBEFB"kLM@!kXf-#KqNE'9CZkf6B"T#'f9Im6@!&4)Tl#dj(F3LS
+
+3M*@jmKUrP38D*A#,4r3jU$FqQ2)*)9amaA0E0S3iNlhANr+K)(M(%SQkil160`3
+
+%3*qJfr@J4Llq23)Yd-$R9(5$---c6@+2%1T-VMbGP!q[(H,iG*[iI!bM2HVK#`D
+
+b3*V*359L3*S$)ijaQ$ZpHh0FrGHM"2$X"Z6!Cia3!NF*KK-($f8jbQJ(p+Sk!6$
+
+B)3'"aFhlS3lPH8ZM"!kJT**JkP%3(Glk-QN54&L!&C&'$b2@9'ai1%X*r$FeF1J
+
+M03-Qd)((Y%cGah(jX*d6%(2MNXQNR8r+%`"jQ*!!q-e$I(J"33$F6F0Tf[QbNAe
+
+GR`#B+0L"(@Zm9R"GR`#B+DMb-+AkEh%#B#d&rBUjUm",F+DE+@F%")#03YGL+H-
+
+V&pIe#B#)#dba3,T2Z%i"#)!q`A%JQ1lcV3%",4"[R8'4$E)Fh#$eS!alDl`Xq3Q
+
+"#("epeX1Y)#EfpqS%R-GARGdYipe8[hI'9,[R6@p4bAmceAaNTTLMG9,IiE0+GM
+
+3*"3H&NF&[-H0+RNk'pRdaMC)X4J-b49i!'"[)-BJjBid1TV0qQm-C2##&GEfAJ[
+
+)@a&iY'+kP-R"h5+$&4AV0BGE+D8-[Qi4I[EZJB[i`iL,aklC3+f1ih5A*'PhGcG
+
+qpQj$k@rp4b&+MIjM"#-`h%XB[AZIN8S-H4!6(b@)SRV2GI`r!*!$$4*eFf9bE@&
+
+ZG@&XAc%e,QKdE@`!N!f"V!#3$`Q3!#N!#D(l!!$"&`%%!-"849K89@f"0J%!Yi5
+
+dQVH%Y*X!N!BY`J#3"JB*!!"#d`#3"NG3$D)!6j!!!FcaM"`Mr,c@NhTGCR*mFYH
+
+"e*1*Em$@NqEc)jb``hG+23R&8ra&!$+fXT8-1%%r@S(VqQ6RF90b,2,X-`"br$c
+
+bc#*iIS4f(D(NfH(jV@69!l*H!0@'e63e5IfLeUjDqadG4Zc)Jmj1a65U)1F8CAH
+
+eULJeU`CF#0Eb+`@`U1f(,R-$hrB84@r*A$qAJbSP0L-1"$lFLEcTee"F!bLZS'*
+
+r#S`mFSXaA#'r[JDjh%a8fU8ZBm4(M8d`NBPi8!hm%06N--m2E`m)pI1$N3CI"Y3
+
+GZJJ1GX4'!Ie+JZ9[fkBH9!LP8`$e%!p[(e"#$UK,I#I-"h5S2C&VHrB"91c"k-M
+
+fI9#$IR*dqmKQ)i)IlQ%qmYhFSCGhb)Qbl6Z!5P-)8)Q'HDPTZcl$Il5I'rQHV)I
+
+f3$mDKM&A'!f(*16P&3),3&e8cLqq5(%a0I4b$6mY`c*eVD*hYh96h`HcA@p[JY'
+
+UkAZEX)0P"rZUNQK)NYV8V6+dbNfp*$XN(&"hc,&PU,CEPYkb5[),$Plf5i"$-Td
+
+%e!NrU&-5"K%GN!!FQil*%X%*"Y%4mGQTR11'M,Vpk05ZSBH9jTeUeBP2U-d#ZK3
+
+kk8BS++P+8N#5@QRAd,&bUek5CDM8Uffch5h*9lELR`b@[SF!9eELR`bQdGUH(I2
+
+EpfER'hLqJGI,Xr1YV9L1mmepL8*#X5G%YRHrF#22cC!!098TmaSZ9d`GUVTTGXU
+
+eQS&1&1,6AUGF68iVl@j0ljC@Z&KA8l%phd25HUXN0ieDcG4MF(jXkPZ@V(f2d)f
+
+Z[R8#[6D$KUXHq`BiqJrB'q)QmTS(VJj4mUdFA2Ali4J42rK8M(fkdY1VUcH`9Q1
+
+lrV,XGl5GmGpeN!"98!ZC$N*RYE)SP2Y@-*Ber-J!U$i@$)kTF-c$+C!!KE)f2mN
+
+JU'l$GmLM$!!UZmq1A5[hJ`KR%rMf5GY3H%p@iLl1"l2LJSSFS0MT-0BSSJDcqal
+
+49%EaI`32EFmGqL8@M,8ldG%BTm$04HdUE)3DM[E#m-(irM8C3MEe5$cUX*a$"J(
+
+13$JYEISi9H1JdGHZU8Sr'6MQF(`fH3&eA8"G6k&b!LUA3Z8&9$k&8J58NN+T!NT
+
+0S8S#UT4#D3)+JIk%HL#J(Mb$UR5aDEiL+`ZbFQTA48"98ULUJ+UQ8$8"98ZKF%"
+
+k$D@rJ9TG3'&UmKTU+i@U#kKk#Y838)d8bK"34JUe,D#f8bK63*NT9&0!091SPS"
+
+UT9"Y!G91S6S#U[-'+SRc104G!A8hKHS+U'i+e403[46+%P$@'kJNPq931`*U*iA
+
+D&9#l+G5HJ0T,SIB&&'CC6k%8RP3T20C5CK&A(mmkH0aCj0apI$9!k$,,aY[m`fV
+
+-FM-HaLAK(HJqSe1mh[MT1[6)J0Z4h18"h*`'3hmHR,G+UaUSM6LBL`NA#UJhMq6
+
+M1Smpa&U1)4GQc!mHSbhZ2NlXcJVTjL)a,+lINVA)ldIFaR*f!-"R8flLbi5%bID
+
+mMlimCmJ!X+B`ar,Y)r+20mmK,X`T&*DamZSF$,ZJil*hr[c"N3&32cFj@FK)R0G
+
+R"J"FQ,*aE(Hab*QBHpjVAZPR!03*2K"!*'S2rQdbC`3AYKbr@eMR4Sr(K!lXm0b
+
+Aha!Z4k6GC%6#b646B%4D9RF"ZrA%IYp-AmTR!,3V('dQ)pFlVm"AqKH@V#q3!!U
+
+m+dpFh`NQlccj&H"6XpT!)TcP2l5TTq+Ic&M$EXb"cXHHPr)C!#@lMNM82MINTIb
+
+&)E2S%BPZmC,$alGN(-4[VE)$#$lE`LZ23p'2TMc6[aafpT*K"a1c6)&KCeR@keM
+
+@Mc"-qpJ9ITDrp"SIjA)1rN)iUm"VR$QQPeirPArVpH`YhLair-p9mGU1*elifJi
+
+A8A5KChb(84pQKKN+5fDb!TDhC*AX@FPX@XL#F4CJYpc#C9#cKTM$*d150A*$Q1q
+
+EJSNG`M$C(%8F#4HBUBC@SDlY3m1Q$`Nq[M3d[ZN-VjdX1q-AT5Kdr5%Xh"Sa0Yj
+
+8P-PNNMrEiDAm1&m3TPMca935GRP$@qbTiP4aYdFcqB)UEQUbZZer!!d4GA0PFQe
+
+KER9KE&mb,QKdE@aX!*!0iEd!N!m*Qi)!#F4%!!$"&`%i!%"849K89@f"0J%!Yi5
+
+d@EH%Y&m!N!8"Lji!N!BKf3!!ba)!N!D%'Jj10hNm33E!3MQjIE6Pk0REmiqGb@r
+
+0V&Zhp+deklB,fiaXJZqPMbI8mq,iMjR,Q36pD!AUkaVdR@pGel2dq(Pld1PhpT%
+
+G@rN$Ni84TZTe@!f@lYBfeTHGTApCV44V(fq9c(l5ETQYRCAeFY&-6-r-2*J[cXb
+
+XePB0(@3@FV0cTKDj3H`RIKLiVCQCdZB%R6mpEBU4jbCHdi5"q9QhG64PmJ['j'G
+
+aB[h)*0i62mr$cHAHA6$6drC3jd(N*iNAi)bECKdcH5e6$)2B,-Q21IVa`iBA"ER
+
+'rV+C$#0rcmIJaZdQqf&d`c(pIaqj8FZXH&&dC-c5!AlmF$Ib[0h)pi*QR!ZM[HA
+
+KFC@@ZfY@h-Cqf`d#Xa6@jDF2ffkblq%2rb$A$IcTJeDZk4fIl!C0Jj116)L6SMM
+
+RE,KqN!$JIkbI&[RRbEDa(P2[lX8m9pcGfr0LZPka58+cP0fFjhYaq$,G,49@m@H
+
+YA&X[,Dq8UKq9eNXIQrA+RFT0XeUS&FafVET6V1e85fDV@YiSemVh5pY,-h+Hiba
+
+YP($'CQ'MG(ZLkF@0b1r3#LC-XE*C+fh@ENrmILCk$[V$((K(Kf(8M$@!55)[$VY
+
+4`jY1MMTHIjaQf1Lf[5!j1DlTadRNelXRDpaVi6Df6Xkki`9Hj#CKe$rSq-A#JFl
+
+5M&`bCfQPXSVY&6E[h*kB-#YhLTAe5[Afa$YVr'r#e%Sra`$[c2+r#E0Hh[c)rNa
+
+IhlHr[irIhmIR"I[lfKSI4r1PHpNZ&GqG@&kD+G$0,UbXPdbaY,kq99KG,@2f1Ij
+
+eHkY3P&pA+YA98[Af,"e@A9l#ShdIXphC[$fa89jGA5raU26cHQQY0V(m%'2HVCE
+
+@ENpdBbr#mp4e@lqFbp(+hm(JLa2,jXHYj*DKm4rKTH$RjGZCmYP-lp&-Her0C(i
+
+Fe1-1c[aqSA0fS8V!8V1TIPN,1aKXTk-"h*2jE+KhFH[jSQJ'Pd9e11Mk2Z%2"H!
+
+k*@'M0a8`%T5Ca"2,k5m+`(ac[AGYIK'!8!kDhK-&B#UhR[5f9UL(AA#0q@$i"Xc
+
+3kcl$2%$J0lGXmMQckLDZf8kLEL2T4TlCL[`f'2fa"j+H`4&-fb!P[hRc*Md`0fm
+
+b0@iacDaALKrGfkR85S!'TSb8*)D!-EYX-V#`HfajZ`Q!a[jDUf`"9Mi(J(`1h!+
+
+ij9@&%Gp$ALcQ@TBR42j+2rV0X(`%h3F&B$0jN!"A2THhpmKVHEV%FZERD6RcXTb
+
+0EN+SUNIXCS&hXi!Aaf[k$5K!HX4L&N'`qGbLZGIeS!!T!PZa$qr562rCY!pTLZh
+
+3%%62U&3KBJLqhkfDlI+rif1Jh4$`m56U#S$IZar-Q1S!i,q[-3$qXiAU!dZPZA3
+
+![Mq'$8@2lr2%pmI-6%bI2fAkpp3'TXHE6`U['N&p2jeBEN(j951f-BH(2XCVj!8
+
+06ipB#A63h8jANEJKH9aB9@)G8$2F+(+2p)Kp!$cD6@9L)j!!9HL&68*PBLZ!G0j
+
+(%ZS5ccr%R8EBVX-BT%GX",3@HBpK@P)N0J*Lfr1#q+LY+LKd$`$$Vj3jA"@Y3CP
+
+MQi`k)',KPQNNbKaG&094QCYI0U4mi3MmG+,'[6p3ibb3!#34rQpDY&QD`8rif64
+
+DEKcIpTkil8l,@elU40ibi3Q20XGrjCh*dbriVhQ6bq9ZB#edTX`c3c21*'kG4TR
+
+C@ZEjX8SS,,#AbVTf`kM04PA6#!0bE!6`P!ClaXF4IN!Rj6#626X$S[Ab0Ql15f3
+
+#C@J0b-6'!h@!,NLmdiQCL35k#fEkk9YQ)Miab6j!CNlq"$8pqdEqr!XimFi1pm2
+
+B-ff[ABGqCPcB,([)0)@[rFDqDEM)-[$Jj$mbkq&HD*TZdQdlN`4H8cc&P!NMR!f
+
+TmXBjCQh$I&lD,*CHS4E4LGE!@L`Pk31XaHjXMCLe8[24"@r0cEi&VT486U"Vqr5
+
+$bG&"3a,$'BS#TrQl')i1N!!2q2XJ6"`k'Tq$cK#cNTdHlVikR!mqClQeVCdVbBc
+
+)4f[J10'hp!'3!)1I5bF'1E*XML"ZlLh%%D))Dc('I)0DhLIB+198%56&(J`&68%
+
+MFqJRqmJ#mich*)PFbe06a&E1VKrKD$jQbVJ*meEG3kjAJ$eFH!qq"#Q3!)ID!&*
+
+TY*!!-J"5F+)UaHk$&b#9(pX2p!L3!%+Bi$P#&DV9`XGA$!AS8"XBLR8MIB#Km06
+
+Sa!c&pU844-frK5L'&"2lrq%jNlhI)-P6k1Yrq`!#Zb+Spd[&bQTTQHCBQZ'I-QP
+
+rXYd&2C&Cbh4#5V4p6,*qiZejdBdTib'c&HFlBZ[b!hc[YPT(aZIa[(BR1@*bbaP
+
+6i&R6XD`$,1B-1IKXLGqFFUfd`I'ZMAdhf,0IQHd5mPG,'aLK"R)6QT-aD(0%Fl*
+
+'c#bI18'A[jichD$PaE`+@E$FNA6&3Skp"3ICBQQ@2@`kJ*FKX-YYZ$!dd,5IEQ$
+
+I44VY2K$6,J!rLbd#Ee$1QD`GGC!!r8EABjB'a2[5T#2SI&N-'5IJL@0!cYf`9dE
+
+X%jf)GN0qC!ICVjXe[LBfY"G85hG'EK6P[K)8dqCL[qQC4MI#a2A)EAMa,GS&jmr
+
+K5-F1cCGXU9CErNrAe%hM[ckFa6Y@@qlcmEC(0l9")E(Q*5-"Zrc%ij3+-dA8r0P
+
+KmhLIBbpjH9irm"2qCEi(I0Sj[fqX[L&i6+if%$`,P[S!`A--V8C-m$C6DX6`#fm
+
+ChS)+Nc[amBr`El,PJp)3bpk*`SEA4%!Y,(qR"rd9mdflfdVmkDD2r1qB!qN&9iG
+
+!,5cFBhfCGGFK549Q[hC)$(V#rl'GB#$%X[N2Qb&,j94[(LF'dVDbNi@5h8kRKFa
+
+4dR-TE1R)C#XDBM@Ql+&HkFP0CYAXBMbF0iZ2c1`0CPE6@hTb'$jEqBRT%4RpHlJ
+
+!8GJf$fI0l#2Da-1m@AMd20UM9RR$P`!bYB%[@Fc9"rJb6GT@L6-qE%,JL$%AImM
+
+kX-$#NdV5aq#,lc4M!V6BEH-2NTqYN!!T(#N4(NmGjXk*Crci`"H'R&VPbeJPSK5
+
+e!ETdJKS)&)ZS'0Yb*!"e"&h$fJGr-qF)X-LN+N!Za`YUkXYieZ9il%U4bFKVmP[
+
+IbT5*[$dhDT*AaKPmq"2-bi4iMQE&bXC+HI-kJNPab1iAf8SI`$+P*,eIJm3bQ`!
+
+p3V*KD[rA5'C"j6JkkERKiK@YFEB46F!H4mi+44b546J1)"h1#6SV(jr)fPJ'IEe
+
+SNHc%EhehrAS"VfahJfcl-kkVPZkAUY[AA+Fi*$q,-UB2F*eDR2eXFr4(A$I1IlD
+
+J`N"&12GhR[ZRqLBQ"rM$da8$`,cSA#Ul8pVFrRMMLUJ8Kf"S%EA8!IE)5%%G*LV
+
+T!6%#UR%iY'!+Sp32,)AUCCpd28R5jib3!!4@A)4K`&(J"ir$!kpT[F0dJR#@C5[
+
++hAIZc%fC1hR%Lb508IccHZPeEb"k@p8'T0)*!U$cbN-!G#UlD4M9JDJ+P,CA(HL
+
+ddpC&HD$m-!TD9@J241mqflIdL"jJb+(MI5J5aF6`i!0S&BRlJHF-TIU8L5X,Mh+
+
+k%NALeS,mX"0GiZ,fmkYdL(9!PfdhGBQ&309!L0Q"'V'1HFJlNGF1(qX42AhQ!@T
+
+B5,2,q+e$,!5NpNNh4(5FUP!FD+eF[FjV)+M9'V3j8Gce!@e1HFMde`Zd1EiUUU-
+
+i4k(qR&Y`ERI)IjIU6j3LTYXhYYr8qAAQr1d&,##l&&QE55pMJ3j+EF#Hdjr!&Pe
+
+j1X&a4)106jAMX`8iD4,2m3!fdR1B5MV*B@XqBN,TQr,QDZRRTV,@MmBqLi5iD0h
+
+#&qEDFk%i9!`3Hi3q3%$+3m8!rC6Vf'Ma$1c',31%8rlH-!"*PP44Q"S+%!`*)i+
+
+-f-4f$%U$j,+b)"dLVk-)FCQ5ircL2$U,Xl("GC2NJZ02(@4&HkeGG#C'A$-U#Y!
+
+"j#r11K2Cr1PHUSrELK'GbB-J,EUf$baXK0d@8U*"REBbXK[h5HlVQi3m6(Y,Er*
+
+YXU1hhBkC%(D8lj!!3Reedk$ddp*J+(b-A'U1[NDQH&V"P4E0"QS+iB`l(JlSGZ6
+
+HJ+A4[3XC'%NBYV"1"(eZ&,Bim(1+`d$aDfklC$qJ,'ckD+e5,4@+GdqcV,qp!fL
+
+8%-4)2rA-664,M[`R*!I`[HYBC,IIQBGKacamp-M"Rpa&*,dpp[2H)2AGl+[AYqI
+
+c,*!!prZ5,k!49r5c-*!!`@&N-A!l1DQkGhdHF"mH6AS2,`0%eJYIL,q+3iF'd@R
+
+e!Ca@(MSdU+BL!AR$4K,"Z%-$-3S,Xf(d@LEi3[rPAEf9IhQ!-rAh$,*@GQT[A$D
+
++3p8"%8le!544(US1U+DJPAU$4l!e,MZ3!,,+!,K@eT3"r*,I"qSYHRE36RZf'ZF
+
+TQI%dck`e6p&-ISHdqZP`je,[El$YfN@M1&3)%#e,(b!FjD&#J)V+ECG'QR'$J)a
+
+@")"@eV3!8dh'JiU"ViEE3eU$*"@[kG(G@iZ03`iE,&-GF0MdE[!cNde'j3U(cdE
+
+6m+[J1ATY@9%FqL@)k+N2X+[bd#p"1bAb6edVih)*PP5'1ZUkUU#MdPVe!KRec2[
+
+b3N@P1PKAZ+Bip%i3V9-I!"[PSAH#DSTVP+ifBV9ak`6ZXXE0clk+Q*'QDRaQ9P4
+
+Yj$H8NhK'Ha++R)hmKik&XqI$2I-LAJahQ8c$[@iZ4lZ)UENHcQUhFT*p(Q5U1(%
+
+M`XN%"GqJl+84`T!!)fNKk,K'ar-Kh0HEVb#'5MIKB#[324[qVNm0irDKi!ila$@
+
+J&5)ZE93[l69j+Jl0'%66d`FB6APSaU#DNUFNHilBFpb-36K&d)Gp-3`h#N#XHkm
+
+*3`TTh#aYd,*-F)h(cA!YVAL)+[8T09,,(1P)#0Y5M`AT8h[X1AjYPBXIAF'AiP#
+
+L343kG3"6+1&8+BB[5M%HSGHi3`-aLL,35!4T8Ff`MID@$@SP%RcQNcb[FE04ZAr
+
+9iSEi3Qh!*CfJ)!2P,b[&Z#3TkaI!0$mZ5#qFdLq&V!*`8b2Xp&[0pP8PkESUC5-
+
+Y6'@9NXrm#l,d#bX!eVDk`mRS[m-Va5(MA)3MI3#[p1+-FqQ---+VFFLjF)SLS%L
+
+p*#[XX#AeJV1+T4DKa"jm'+CP8Th,3RX)j5!JNkabK*RM*SAF4"8I$*Sj5DFpVUI
+
++mHDB%kCLI#GZ,YRB1EKaBBA9+h"6(%,-4F,5"m"0,`iaPfiG)h!EKjJ,TiJZTJ'
+
+3!*[8d%llqBVIpeCQbFfq&STcHDX5"G4fS`-(3hB32H6"ImbRLkAic"ql8bYm@FZ
+
+*APQeJDjdJ[4R+V+Y1G"9eQC%`qMPY+$`pA+DPej1'eh`b20D6[2$+'K9SCE65B&
+
+e(D,Z$C,#fNeeBLIJ#-5eD3"YQ&!%Rh-$GB(G3*ULhG4h[er-bTSZX"8iL@NV2ea
+
+LfjaI&pJ-p6rUaKbPTd)m,3Y!hiiJP3ka$5LhD$hAe52++#e!kfK#6PF&0R*GrXJ
+
+q1PFDN!$L%%`['UmqS!%T$m(dLS%'a(G&G45"),&E%"jTl10JHSXU0L0+%U!HZkf
+
+ZGb@XSkiZGNUqTUVADEN0UV&r&@ae&Sr#LMXG(AL(pRYH3CD$8JTLD2dd(Qa1G""
+
+qT0J9bNp--kZ#%#(,IY6SYY`)'Rh1bb'`pqNX((Z-Sjaq`hrN*2-32*f0CN`c@3C
+
+l'X9KrB(e&)F`Hj(Qp3%S8Kl#l(96eXZdka(YMG2X-e`j$FB5j[YILp8P#Ii@qQb
+
+H#a+a4ZPA'48kckR`'Bde8hRmLXB8Kb"c%FRd!@a4(S,-G9-Dbe`l)aSECjQM5)*
+
+Y!F%JpShX9YahJch,@UF96*kP%e$0KP5GZ`5T"iAU*TMRTYP+Uc,%YJedi,Ea'bI
+
++TJECMKIj)DSe)+pJYE"jTe5Yl'cRd!r#mb1$@dGN&i6"Y2F%"j'j9L5kb+2pXC2
+
+@eYqPXl#`hQ9SZ)(6mY`QE5a9p15'a%R8E53N"8lCZK+(2[,6pcam'U*FlhUi&rC
+
+U2X4S'S34r'!A8H[)BfL&B3I4Z0f!9X*aM!J+PJZ%6!CFSXJdb@MAQj)P35G'R$#
+
+PkBD4ZiFXi95Xj)h824)Kff'6Sh4[F33[Iac'R1Z!#aN#TXNbl'5lc!DN5a%K'a+
+
+G+bl-a-5c+fYA-+Xia,b,#UJ28*rb%21ZRm*X(@ai6V,MT(H#0p3CdJ!`0LYlmKA
+
+#rNL"B&HX(q"U#&bG(m!9c*U%S0I[`08`Z$U[`C8hd)MFH"qR%m8fN!"3e1bf1eL
+
+'e2BDA%eVRE(h`MD+55-e0!)'IQf`84`Ljd9pe3G`8AQ)R0G2+IK6ImdiGCj!8!1
+
+`8`k!q#pZbZH3!$`&2$[`(,ZK+@kG3Nb)5`1Hp"S(")48*L*P0*r,@@S5kM"IV!Y
+
+aQ2Ir&Udr3pEHP!0NGFk3!2AcZNF[3P-ZJ[jhYZpH)DrL%23['Udk`)B8CD%9)br
+
+PeBa`plZNId!+B9rMJ!L`&p6h[BQdd%5CPFXq,94&9EUYS,Z!EAA-Ac$UfLK9jc(
+
+SPDEVmbQG)r0N#l-c-@RLkqc3GKIDjVk,V'qVFk,H'18$mSM5VBASd8GSYN`G!k+
+
+P%"Pp+rA,E$1B6CKAdm"@8Q2G*[F4Xlhj)V`eRpHFh*)!QYq#)*'6fJ##1N'&!8S
+
+48SY"%+emccP`B9aJ!)M5`d!0)+Q9X`-SmKTb)#iJbPm3D!+EMXYIA$)J&@Z4(rr
+
+%J+`!5P#h0FrB@B&SEHjfa#H1dV4,1eFP-`KTY!C#%e90(b!djD%&J@j+D*a91'+
+
+dF3X#aK5C6Pm3kf5PIaIVXS8T%'*GR@McT9Dh@RT$JiT$Y3+4e[3"'P3HUKASTM4
+
+SXfY(2'M,&9#)peF`D$QPKi2IJ1#TANGZZ,jJaq1G#RDA(2LPB(I+J9H#(CpiBDL
+
+SPPE,a8+YG&A5J*jVYB(6G)+5"J[+3dQ$,(0B`bKTX*JQ'5Yk*3d@i)VfQPcmCG6
+
+3B%&[D'K!Mckee9!N)Z,aYT*qTNMX!rM!"R*&BL')%f&C8T&B#-cHA%P(N9J)6)G
+
+eMbS0ka%E@B3'QI-qHEZ0dMeGB"q3!(P&%&%NEJJ%MEKE4iJ#$!++a&)J58J*3d9
+
+L)k!eFKV%%1hf28d!fUjE+c`!J9jEM4@(cJULRHX$NTMbd&P"-C!!a2LZU)kD'+`
+
+,V$Q0M![MaJU-+EC3,[hf`Hr,jDCfK9S9cSIR,D$A#Z[E*3R91r6M#rr!HRQlGXe
+
+*LN2I!e(jp3'J8"lk(ZLQR-4Dq)L6aPd2'&-X'p&[HJ!R58rQDdiU9+Z&Mkp"5A'
+
+SBL$DMcj!&-T$&32G&*6%T$-LTA%2!`%9LdImSaV!5PRalfYD+QeXeEkJ*F8Kkem
+
+8)(d!+j5(V(rGP*E%36LLTA(@[i#+"56q83ZJT9iD#bRa9-[S1*r&8T6c1iUkYe0
+
+B[kBSa5%VAZ3KI3!hP)HXH1@8SYMf2++SF9+mJ)U!djcmQAIi)dY6f8Ifep[Tlrq
+
+N,!ke5X[&RNT5b09#0GQdN6`1F[JJ1m#44'c4+$(PXZ!F",`h*-!P24YjlZPhK($
+
+R8pKkAEe"d'3LFY&T!M-22X2aAQ3Edf*$RX2@Jb`KKS*Jd$MdIU'kA#aXPh$e+`K
+
+ef9UDS5pXIJb[KX#5lJ'AUB8F&jKZ"iRcL*'22H6)*aLFMX"DBKm6BkKX"DiJ+AT
+
+3S&"&*`bDh-ij2,5R)r''6XmjNja(CJ'@[d5fIG2EGG&3,(G$VJEaDrrffHZ!+2a
+
+"fKKrLTdAV'a)-i8"`R5bIXj5Y!+KCKJTpMUi1BQ(laZ4KamSE"qRaJk0'9$"ChX
+
+`IJSZ*TE[-I&NQ3RFEhI#+(%45F`G!KbqD[MT)!J2H3#-MF"qA!HUZKqI2!Qb-lN
+
+eQ&1LIHTH`k8)IeN0$pe'MdN-GJX66A(I!2XZiSTL[[5+Rdb(T6kEMRm-U'S!aQM
+
+6p8aE!L#"RfVa5V"3@aS"Z+diG+3i"ir&6eq1)SlHj2I2cI8$r-'4G0Ip[B"kFM"
+
+6Q5R5'2iBqhmQAkb8e[#3!&hV&iT$m,m)YZS!k&0kJPDXApL8P*'!-FlqYkM#T$r
+
+(Iq8GqHD$i6IIb"9b1!*'`AHb2TQ%p)(#GV&FaVHY&UVjJ[GLLXF,'Tic55!TSJ1
+
+J6p!FK6"`*15EIEF1kQS!K9P@Z%%91m"ZdqLI&P-V$"6GS%SA63q(!L0"dL$iB8c
+
+T3'6!kCXS2'acl%lP&FFU+,Dp0IF86%X(TTQMUEc!96R@5p[E@lH'))c,@-[Zelb
+
+Cbq01ejD*d(F"XG!A,&62fjZ!Lq,ZNT)apkFf'[qJfBAXe$RL*S"k,-HG9lFThAY
+
+&XS4qDJ2*kJ60"5Kh4bXQ@D4VA9$XiVLj3+jdld4ZriCA+@bDP-Zqa*j"(QSjGGY
+
+6+#)MY1Kf1UdMEUhTN!!+LQ*1h1!*5L8VP+IL*$1Leb+&YQ+(2P(YTjbqZ2Y8j#I
+
+m639k,D,'MGdk"2Ic'MFR*DB)h`FeEDE)%cES+A94b,1dX9+UALQS"'TD!hH+f+N
+
+2F+Ibd-G!0q91Qk)iBXpa)`1,+LIm+9qGQX"H85N3X&r!!)SKrpK,E1'DXeNH`5R
+
+$pSqHkaqGQY4#ahhD1@SijlQG$0DY&aZ4V#fl"HIP&P`Lj1R-+-D(peD$chZIKV[
+
+1Pp[jYV66F3UU1BI2lCf9l9S9d(M0RiT$!`54+28"rP3H'L$ST[cCbm`G)DJYJI#
+
+2pXmCX*c`C[EKpb#DF4c`mkpmbYc',(R1G@FXq3HLaF(CcG)IX(&cjieQU6Ld84"
+
+j84pJ4UfNMB)+bB`fdR`%M--H#Pm$Sd89'rJM[qS"`C+bY5r$dPB+aBqfe`[EGq(
+
+([-)Qa5'aA&3aI3#E&12%mN([JK%lMB2,"p$#RJ@Rrm8(mXAr-96I)!(IB"MjHhl
+
+JYLJq"MH9NQfi$62jjaaVlX[fE5CrF52ef[XXaG%*j"k%Uiq0mh8ATVh*ApdJj3`
+
+EJZN`iCC0hCKmKM&Ub9,"T[J)k6i3a4T`LlJ"Q2$F&c+CHKPTK3i(h0JppME)20L
+
+rMTJ3VG,KUAIV8mLf1@c"TFpf3%PjBF2mj)f(MrjYqPpRE[riRAGREq'2r+f*QlG
+
+qmHX2ILAfqAl5bk#l@E9mh31(5%*Y3%LG)-ap8AN)Fmpk21J92A$QHa1P&dA4ki'
+
+cD1jeiCQq,)'c1%ad9a9+i0#,h`Ll!DSdDa%e4a#$kFB0hpFMpJ'A4Z3#R&@*P5#
+
+IK)KBM9M(Zl#YL`G8MeJ)I)`FadI*0AV%6Z#6iB""A@)R`'eN1J40))`HX4*3'Y)
+
+,0BNV!RNRkJE+`%UZ#pF8+cZE`-r2Y5I&S4q$k1IkJ2DN224M8!bd*liVUU2i"2X
+
+#kcXMhm+i(J0MbYFH,p,caG"&N4(28RlCXi#%RiXD0VFZadLcDjr1!02#KC-BkEa
+
+V3f-aYKKc("qq1NRPNmVHDF&(DV-RidiK',#$,#-f#X[J2-a28T2&)%1f9hk%NJU
+
+[f%jaD2-J&J"p!)+8KcB2ZLREX6!pBVYaQ3FEU2SreM1"TF6E!j40)PRed%-%h5`
+
+AFX`[,X)L4P&h#*e&K"YG`akU8ITfD[!5N!#biiG0$Jc#6"&1aC%8%aq&R)LAFL0
+
+UR@Bc%BS0h''GES$)1%6#KX'8,3D*"$NNP"qlbQK1#PVPHT!!alRZr3Rk"kEek,0
+
+CXDA*BYL'81JjeF)$AYm&rU8IAa'JiY"%3S3iI3#9P)FQ%VST!DEZT"%%MVY)T,#
+
+LG(!JMQqM&3056(&d,64)$%9j&%$Em9`Nl,%-@2F6+VRU((K(52m*$q!MaYA%LeE
+
+VhB0UN5h$jmN6aEZ&kKA8+3le$%5"d`GmYFT$232Pe,)"VKN"hELE!8%+SGQI@Dj
+
+(C4PJF@V%+8RCFJ6@IA'ilcIf%@F0[`5-&%#X&!QI%Z(IiY1'4Z',p$3*6(h&C!3
+
+aDJ16k34&!mMpUK8cQ3dk2UHbGmGG!`48G)&Jjl3SPI4H"fAKX$49QM0q`'R3YQ`
+
+[J%2U[@k*cjEL'H!IGEmK(KXP2(1[DMjReim`V4q3!+Hm)HNlCeQEY[SlI(-5"Cf
+
+YKCCJjjC`S1-YF0mVjhLa$AJef+9KKd+[,GEccYC%`kEGfl`S`JMNpcMI*eIFk4X
+
+&[fA6ij+e&h5kARP3UP*pN!!V3&8F'JQ)[UF2!+Vbd%K!0`A8,24Na+MM6J)CVM"
+
+ErP%r4!Krf)'VHQ$RPQ$Q1[h#HA0SZ*&PSk39E@cRMDCMdHkXEG@`E08c`0VCf[S
+
+pB#N1NIXLeZN$J+8m41lVTS$9Sj3,`"SRlQHiSK8!eLNa[35X8akl+$94+fbZ9RD
+
+ZJSS)503'[Y)*iZNTT%SVjUXdM@k%9q0mqK4@[SiVXPi+XLb6TBeDjD%C"2a[q*A
+
+,i`'8B09Vq3GT@"!"'0$,DITaTq8HL9-ZffbEM(+6pE$9h1AJBST-4VLFHBb@J5%
+
+R&apL92V)()9G*&*`mc"%+$G$4)G5'E"d&'SV4Jf+H$qf2L'X%[DmDBjHhUA%CAI
+
+2Er5Fe9LT@+$V(L+++)ZC$5,`Bk"iAj!!QI0XE8'lE"UmE5CKXBD4T,IBENc(Sr4
+
+RkFB331eQV*N$SlLY3flj*f6kV*X5RB%"BR3lX`fAb-SK#)X)*`TNmS0'UiZl`i(
+
+2'#@!Bi92SY@i#9ZqHdZfAFaZCPiB@38FLYP$!(mL@Jabl$@Q4mSIh`9E%$#lGRc
+
+*1e&Bar-JU9"CrF#Q&rX8RqhYlX)9JRdkk@h"%#k15[I)Gm-1e!ITLKJS0p`'6Jh
+
+MI@Q'KSXL"[RXbF!#$lK"%ki!4B`N2PkUc-EMf!C0r3XZTChkaNbF[FG9%,%28$q
+
++SldR9c6LD1mTHQSFhLYeTJPpZ(HJ#V6G!e`J[XPNkU(f6@4pqD[VY)"H8IG,9@J
+
+EXcMqmZR&Xb,p$Y2&brAh![Q+Ejbm2,6ZhREa&Y4$V!j,jB`A$R(T,fbmVlP2p`@
+
+e")fPdXe)V8H$fR!f,!C[+6YJHrFBYe#@LGT8H((TlRT2N!!jJ,[TGR$8i!UM"T9
+
+0),0[bVN!XeA!LUl8&m@KjB))dIU!qU)mY&c36G8A6VNG55rMHJZ-+9qTfKbe5"j
+
+24Q(aKYV1K%2GJ1%HbMBC5Y-b#iL")4dEZq3f0p95BC9UVTX3NMDc'E-[a[,4()h
+
+LA@4"G-i$m)q83YLh,8qjBkM82F3Af5`Na*aA939P$e$YFmYSll&q$dSe(8j,rka
+
+PBIp!N!!)(8Jhi,)dD(9Rm`dL+JiY&N4,9`*BkJam01+X-CZ&2U,%BBH&El,',+`
+
+`dS84FC!!@S#,DA`!BD16BL2JML0UHMSR93Qj0@#lZ!Xe$qG3q8$N!6008Q9"dKa
+
+a+c!*K5T)cF+dK'q@6'cPF9RBX#NSfNC*#f!Fi6VT$@[+MQJ@%J*lB@EC(Eb3!!5
+
+,PBf0RFebX9!V9cC(h+F`e1R8"RK)6i%AYBPb9P!6'TVr@JA*j[*S6X1MM@+681q
+
+"1QJaM5KekP'cj`8%!$"3`P5b9&jH36hP`0aeSmIHdG*-'FA')2Q8Phr@E5&G2,p
+
+J6(jf&L%Sj@8B0XKSNQeV2dNk0fGQ$Jm2Fr#ai*f(4R@3!1X'r[4"+pIdCRi0ldP
+
+M(rZFUAP2r$aYdm(,APj1dTpT+RlTXFb9bZV(Y05lYBheCHIr!3!!$4&eFf9bE@&
+
+ZG@&XAc-ZD(4YE'`!N!d`J!#3$`QKq`!*jVd!!-%A!6J!`&4&@&49EB%f!3#hK,4
+
+JYi5dD3#3"3%XK!#3"L)*!!#MH3#3"Q1q$NiKH6a""X"#0lPp0(,d[,lV(%4EH@Y
+
+Qh(8chrEkGGZ&*pRK+6j,&iV2Dq1r"Z3f@3Mkd3V8GhhA0I&Ui(j[CEP(CJ1b@FX
+
+4++HEF!#b--*8i,1!*ZX2HM[E0@IphcEEMGk(Hddec%DKfY[If'iee-*bYIViCU0
+
+DhHaY+KUNEP9@9P8[FD-db))iFX0UYEQl321APe8MmGh-lkXi8MqCK'G,DZf@8QX
+
+VQ(K`TM,r0&MMj9BVlpj5bmYkU2-i#E,-Mc$MRYV'6RkS'R'8URAjX8)rrYMcNkM
+
+L$@YU-8k#``#,+hH5$H2NKU2+I`rG*&3EIT+F+E9qK"pr2%KmIj!!"(l86bYaFPL
+
+EM@Z(lN"YZ0j`j%D4@Sm2j+FIMpaXk112i+JbLB,PSl$5pmmRZe&IBG+CLM%T55[
+
+1MKY%'Ii(r!6N0jYe!BmkQ"bQ[&Fk16cd8cU[9'@a@Xm[ja0F($kQ"mhk*[lXYAV
+
+EcGT'Xr1`ZGhm8'fh2fMI8ihfcXlqEUY4llADZqY9QH%ikc[0APhYeRHDpaIkIZS
+
+P`CM@AX#mh9jcYhGriG8HG2EP!NIqf8QFp00[TbGq'Nm5cer1cXCqZ8)rpLBM2mS
+
+Za[@$0%Z#JmN&A)FK,LfmQ2@"(rQ*Qm9*1HMm0F*!CldU"q5XEl3hJ9Kppi2l#`Y
+
+Uii0'Hl[GZEr`JbhqYk"kcCpKJ4qXm,m&YGhDIDKrTUmIkGr[i2Flq,bZIprDiR'
+
+dRm'Pffbmqqj#EEeDTl1YEf`h9D1j[EeAhpaXBIP9rV@l9fr)Va[YcQDcFhq&KR9
+
+UkhL4(f'j$hE[,qbd0MHhQl`VrEcGh1SYe$l#RJmkcDhl#j286r$f60c`&fX9`[`
+
+(Y2Nl#cAe`c"l6p(q(q00i-IMRd[G,*Dk68XGrR8TpF2S)"eMj[H3!'T%,3'SjP[
+
+pSKH2XGMqf!C`+,IbT9CAlZK,X4PFLp9Kd1Z$`Km@J([+BUrB#M34,$*,&fVQ&`[
+
+!IU[&fh,c(C!!K&E8pdmY!&Zj"eQ"@[dJRS$EU2GREd#9([JU8`)LGUXeGE-#8M`
+
+DJI9jS(mJf+!VUm+J`C!!J[kpHm`QlYeM+VM(0'DlhAMidrefV`Qb`1c#-)JCX9L
+
+TUCa3D2"#Ij!!JFRSAh[Y2C!!P#rIrCX9,3b-L-iRI(d-*aDVbF-KIjQ2AQh,)qJ
+
++,!$3h&iPD0C8arImi0JUJ3X)`-h+6E89K,kUHjkIfL13!&PGiC1jTAViQ*8@f`!
+
+mqPeEVjB2P(kb$$2ZGHUlhCe@VpIXG!e"IY"4hGDrif23[(-1MFI(VX#KbfI2-%l
+
+,!)Ffc0#U`+'I3fSKJ*8@X`13!1McTpfLak(AL%1I-e6Ld'Y21I4YH`1(aVXr6L!
+
+L@b0Si,Yh&fUNaGSMq$+ddh3BRpJ3@1KZR2RhP'S0&%Rl[JUJbUYM0`RF!e$eb"e
+
+"iPpr91r8pMUYhGjQFkrhB,X&XVTHTBr85C!!$6%`LU2)2i4@Fq`l1'Vrd%q`4$M
+
+aPfLY5(RaD"ckTbU%N!$0UVqE*1kCJUSpmE)*e(!X%SEU`&Im+2Kp*ij#Z#KL'Ur
+
+F-)a2J%2I(fI$LP+pSCX"U#8emNF(p,6&Jr+R5U95IZ#BaF`5[&JDUi'Em#Tq-CT
+
+I5PJ6I-r&96TBr3a!qHSr*d"Yl1)23S04!*+BaPm(8CpN+KU-FC(b`c!BTlLM3C`
+
+S(di)B)Nl`-SZ!)fAqlirPN-!5YP*R1r25$(qbNh94q[T#*M9!1Gk9Aj5ccljZ),
+
+MhU[a+IrqKKqh0VqiB@$+0qa-EeJZ%JF`#"+!"ccC%P,H)2dXKadR$L0mFG8iZ,T
+
++JqJ3X14RN[MMd)AN3KHU4N&+hkZqQlNih@`B4,acrP,SQcd*qX84KR4Eih%BB!R
+
+pC%363J@J10l369b2'C!!4J(S!QjbEb`Trp6$1@-NAK6heC%Fq0Q*MbYBiHIVE[k
+
+XC0S&K)X0"JTSR0!&VUkS%lSC3D92U0#q+D-(c"Niaf!@aAJ,b[FZLmI,SAm-Dj!
+
+!33cR-"R"-`1N!$A1,*dF&)qR1C3J+eq$VSqVm6f46ep3eG@#UYi#qq&9q@eMF)K
+
+jU#@5RRipq4d3&Cl-"jP2r[T4fYU(JN8hYfIHSf'FqN)ID'U[Xpq8*mMK'j*Mj62
+
+cp2&0q-f!kqJS$GedL1G(3Ic-m#cM4Ye%,H*UJXJ,*herqKl))[%N"#XJN!"1!Za
+
+0ahKqef-hiEGDhS`Ep1JljM$jlD5EcCI(29qXRbULFK&6!&kCjKQHJr1GK"N)%U'
+
+![40r'CXcPpL1$c%`aULi2r%!#Ef$Z"Xj$6`PVB&6()mj&AQXDCBr'QGRM*PD"!"
+
+i8"*qS!#T2T`E!N2Ui*0Ir3SE,EEc1m!NqCK1!%H""qC3d5XCKT8Errh-3,XF6-+
+
+3!2GL-8H9$eDZFM+HFb%8#S+e33KPhipp3$(%%f`R%8,T9Ub13ZM0QPC8S(lHI+T
+
+qhTQURc*c28[`Ieq,EHY9r)5IP3GUPplh6eh5X@VVim3AR3"%#lc)fH[S(aE,VeE
+
+Pcc8&[HB'IIRLXr8Ul5*l9QRhDNB%'ApV@J6T$1L6G,)RG)bSA4#0S3@!Cr)2ZHV
+
+K6C)%jkY1B$*QcF4h4mjL%-'p$0SQkJfB,rYFET!!'!-0)em(4!q8fK"Ed$RA5$8
+
+KM,j,6ZU$#"ZG+af6C!2p"1)AH+'4N!$m%jV&e*5N-)'*Q6r*3GMKPa0DmJ!-r-M
+
+A'a2K0PZl56b"["*N5bafc1BBaUaR3!'KR8K5fF!BdSm`a!e2h,0#kG'c@*5#EIN
+
+Ceb36q*aUJTYC'kJQff1X!jb-a'9E-G8N"mN9dlcl(G2NT!V0,i[Il!3m-Jb1I-8
+
+8pP`DMf,$l3VpP(KGcV0%e+4J"mk+J+3C!,iTX55D0k@3!)j351!K&K4HKELN%F'
+
+0(a0V3X,%6dN!#VY!))!F$JB3J2X,lm'PSFdJ6)!,FIFXRQMU,qS`(`kVpS3%KZ$
+
++X3mdH"m+F4aK%9"Q#+036bG!)P3q5#eJcQPYXGd8qN@fHFLjJV@H33XJ"3!IG4q
+
+d(pqJ(d6)45`(%h@@G`G*2',%N!!MF4#l*0'DGIQ8S![rFS*B$0+GJ@4#)["KiSj
+
+S(AG!%$#p&Jm!DDri(R)[NASf'-L"d)XaFSpSEjDFCBA4a"[#rT,5&VJHl'&8F1M
+
+2-$'3!'HP`*TF#VJ3XNf-S0N(1&m+1k%cKq9J&!-McdheLMkfpTMadj%KYX+,)i5
+
+Cd&eAR"kX#aip3c(X$$NF@SE[if-9BLJ!(mH5Yi+GN9c"Hm!LFLD(l0!K,mP0m6R
+
+MrL#1jmm(q5jBkZifHihp6VIG)6L#k$JqBJ-+RBH6aZ%a)'2dmP-K42"NMZK0kZ)
+
+"#*G)"BNp`%XA4Jr+##J-B2M"b6J420CTkL*m"8FY),!43$p0dlF)!`S6$"i,f$k
+
+m)![2k28#1"jZ%0rhJEKqV'L4ar9@Mia6qY9Hlr9Ur-N+1%H2A$Y2X@FI#*K+mEU
+
+GZ$JNZVdrk[96Cc6)91TR%*A512RF$h+Ri&qV)-bdmlN(T0"5m#*qUED3!$aKE9"
+
+E@)1h$kJY4N1`%+XYj+Uk9&YZVhbRYK"*-@T,mCYG3@d""cILZC1,jm655pN"h$r
+
+SJmUG#qT[LGl-LhhTb1Sd'mh@SkrL+HJ0Yc@3!$G4YHd$j'h0mN$HM0(-MK&2BGH
+
+,H1*iLM+Pk$+Ei[DUY5'EJKjp%QQ*GGNMmL"Z#L4NjV9(3),hJb"*A"E(l4'S)1L
+
+28#(ae4i"#FL@JF3LNFF&CJQVHKKD&@+Z1JLFh'jejmjZHRqY$4S#+j!!pJ%0!@q
+
+hP84$i&Za1QS)%)!05Em5JGHq%i%0@A%kfh1aPh!3Q4B'RYcC49pT$lEka)200LU
+
+!6A+`10Pi"b4ZL1LVdfli)iLrKAm1DQd4()4aj2Xj(*)YLB04b)K)3jlS`r6*ZA&
+
+-[0T2m)*&bSA4L4aYK*!!mIE"Qd8I%43Bi`ep*1LB5c%`AN521)[N"#Zq)96*TCD
+
+2KHQ+I&4`Bq84+NZcq"5'`)%I#h*hkDR5`8!PDZra"`)$leRBr@"$SlKUm[JKfU6
+
+FJL0e+1H*4`eGC"m0X4!q#4*iXI!dD8pE#CR6Mb@dCdRT@"@B$`%!q4Y(J4H(j*f
+
+R#bB6!0Ramhf[Y2AkjQ1`f$NY"Sqd0Y"L9X(Y!r`4h-&Q6)XjpHQ5&YrmRKB6@A%
+
+kMqd!Y,KN[q*m+YJ[!5MXep'-MTe31T'%i3Ac!T89mXU$0FX$6pET*)Ef`Pk9H4@
+
+G4AC"G,(8RiJZBrq-k$,C[##k"*%KZM5f),V1+k+VAK0GiZcL9bIRY856b9Jm(I#
+
+@`f'@hd1!Gi4i[[MMp5Raq@bfQef%0A)U'RmX+jJcH'Tkaa90!mcSP6)HESFFc2#
+
+&JbbIBKBCMfGMm-+5*4Ui2CVPSQPSjHU4UXC*IRK9-20Bp)X#0!a(``5jQqPj&"%
+
+ba9Lq$4NV36+cE!!F#'9"'Tpe%4Xha-ZcZRC(ZIdqCrBj!DiFmB5d'9i@,CIX'Gm
+
+kJ3jie8DpmE#lAHmqD'lZB5S@pEdM[N*bGm-+f+G%R-8F2EmIi4d3-jr"M12rD#5
+
+jjI''P3KrREC@N!!3iL!jXRlrXl3eHTmkpFFSEM!2`L(1EQf3!#"B4,F2F(9ZK@!
+
+[PL#d-Ha+KEMe[3UK+BZP4B8`f2p$L0#6TeUp`j5GN!!J3Sb9TpbD*q3K159GAj,
+
+)0q3#T@2IJl2"'IPZ4"X3LIe8i'#*!E%U&&qMfk633*3miIb5N[6qdmMqa#Aj+Gp
+
+Y2+KhjQ3Al0$D3(CC'VF2X%*1!V%ANeeL,PG-pjh[Q5k4&DI6q"26eHbde$[IX0i
+
+bmDZN[[pNUi4%`9B*[qIQX&G89CCQ3'G,'pmFQ,3hM)PYiM0%S&05@$`B51Ck[M1
+
+!d,&I!P5#-N(%bfQ5*,`9hV@Nd1Q,Y$$QUC`dKVa[LPFV!eLQF[3E'CqmC8l"Pf(
+
+H%ll-T"TlN@b!X,0[LHp&BX'[LHrV%"IV3NqI*iUXIB!L@KPkqYK@Q5m(Z$bM[V1
+
+#2[p$IE[8j3(m9rlq23PHEl3hQc8-A+rb,e-LpTS08rq%BU+9J!phl3b%Z'YhBF4
+
+AdC@IDFHAkC9J[R2bE(%Sk#-+Vhf!CGSH#[TB6FNcjbpG%HGC+jprj&H#BjMJB)U
+
+`,(pQ3MN)hF2A%CEl1)e%l8I"+3`l*9[9M89!Ej0*a)40f,CHd6"Z*Xf#XIkbJ[4
+
+bc$G3F*i*dM'Sp&fh[V0AqirU34"9dq'2eU[mqa,lH[@hA[%GN9#a$VNKL'6%P@9
+
+JNmh*HENKqEi`!qa5-M6&`630cKBh%irMU'eN*J-8Yc"TPd+k`BYfB'LAH1+)qZ'
+
+3!"2ijcqRV`ppLI!Z0XL'k+'!H"BLcMpL-aHG&PASif!4ZSUT[BbKdMBbXN94,V4
+
+N[H5GFX4UGLKGlk553`j+'4VGcS26(CkD8[5h5C2*RFdbAqmp-ehM-2*X'B+84h2
+
+#$%X4%PCY0!0Gqi%BHNcRC-Sr(1)mi6p28#iRkBH`2MYi1fK(UILLIq4ad$&bF&m
+
+Ja)il3FJBmUEK0b8dE%mc#JD3!'R+%hQ[j29rHeKafRhh,"kJ"mk4f9kkm-KIFR`
+
+I8EMja`i8S2N6be(Yq'qKA'1"RK$)([6NP(9l'(Pp+[,&)QY@m)hIN!#ce"m,#J*
+
+2+Ch)DllClLiKPjiB!EmdqU@3!*F@G[Ci61m*RXAhk*T`HG$5b!3[Y`aJA!FVj!q
+
+XMM3Jaamq0l%iq$`-+3EqR#f8,h1*#lep1kj(H8BN'f%1UY!N+CjN(5+[)`C'G$N
+
+[E!eE,BJXp8DMfAeYE,!iG)B4$i*p3-5`2(5'bF2bV"MTY0cbcEBA6cXVUhF98$Z
+
+V$f0A#+M&ZipL"L#AJi$[``U4+)VfP`J4YdX!JKFIG$BL0F!H!3P-#33*el1a4f!
+
+#h`0K3KCr%ZpX%D$Jm5G3*Q-58q`4S-#Ek)@`"YNMm!"0TP*VZ"0l"#)31IK#!)X
+
+p!K)S2T!!Y&)3Np!LFELJEhh8HB@JCBe!j#l)@a4E*c!"I`2*Y8V3YlZJEd$%,X(
+
+HlQVAQQq2#$Zr#qE'"f+4!!5X66mMU"9MM`!&e-fm*&B*9%$IV"0h![CQRcJ5N!!
+
+h2ak`Q'U*U+m+kNEFeL)!b1XNIc6Vf3-NVCr0$4F@KqCFiXDd$MJ6515dNKJZq&E
+
+XMSB,FX-D2m19)rDk2eI19h6+hGIeEETF2ik5@JNED3bTUepbf+j%j+%EPA4k`RI
+
+SDmkZ@(62*'*'65FjkEDpep`P3q)5rr+idqUKaK6p90r$(rUcrEh01RfhhDC"J%"
+
+ekiqD"JpU*P88Rf*,(RD(G*r%#''J8P@k)3!&bHDZe88aSF)k#KFJZAN,BbUq)8p
+
+Jp6%k6F8R5#L8p(Vk$+DmG[G'hRY6#Q6a%A!F2pX3"9d6lfY-U238D&GVlKXX6T!
+
+!cE+i(Y6lj!DHNiJXSEVGcRND"[)#UEHPe#[0NiIKm%6c(eeA+k)J#N,PE8V%%iq
+
+)@P*I6hpLjd$)a*qR2c9HI$2qU8ALpIMEqIJe%U($f-$qPmR8(364(CrhYhbM$4#
+
+CYMCS!hD#RPIdPPL,YB(2KB%lee@[K+R-jB"Tr)AT@-RC6S)-"pTqp,&1!CDZXmJ
+
+eqPpLqY6KH8QdM+)`TeS@KeC@STMD"kL@jD'9PH@8DKNel)TXc4TCrBeX'ED5kiC
+
+Ibl"Yi#,m5jSM-rXLQC,!SSD$SMFbG+BqSX6GQGieZSr%9*r9B5TAZ5+j5$YR9aD
+
+([NUL1GN(f*APSDq5"C9G56II5hTeh9JTjbZf!Aj&F!QrdZ&Ur+8E%Y0#U0JTE"U
+
+8*NTIaV"N8*XhS9lSb4lkh!f95U&5R45%Hl'eJcI3$E3rB9lLLCP6,iY$*b,4S1`
+
+$e-[bd)R)JNUpa'TeaEfZDa%9M-@U3,i3%NMpTjIBLbHXXP5qi*XcbKH-"#Dd8ZG
+
+5'lBQSG@ke3m+cCjJ'Qf#kqF'rVR985j(LZc2@ZE25*ZB&qHNcH,3)NHN,IX!DE-
+
+mY-LaS*)f-EKHNEEV&MN&Bl%81"*BpbS)A1j1`'I1Gfb0bm'H94aT6FeaZA3QXMm
+
+eQ1)U843CE2CEBPJ1%*NmaBC"b-QP&"MJ6A5$,(eh`)BRNh1Mf@&3@@A%6j*bR*)
+
+$2!Y'J!Br4q6dTPPlL)PPpXLGVPcT"Ff6k8YDicK!G@A5#pf+8mF3KTELP%fUXac
+
+-a5Ra0I$1FJiQIpNTpcDHGI"A2M44)'NCEDP[pR)NLPRd[51MH1aEipjj)01AV32
+
+1ij,Qijk''Fe(2SXDHXlH'p[YlQ[LER&Sa#2#U(f!Z&XH'[&B6SNlTd"HFIEV2Mc
+
+-8pl5p3BKmS5[[a!bkp[ET!c-bC!!aD%NM3L1pJ%bC(NS5@-j*8-kT2H+$PehT0&
+
+Fj8m"&VVM``NhR-RVSe*K9-f,U!X-!FEd#"9F*1b#"%8JL!Vr9&L"9mM,(N`E*1S
+
+%f3ZPmUAF"2$Q*-[L8+C&a#(l!-Qb2*4TXD%U6N4F,PR@GD%@`eEq(reE$!2dq8[
+
+1T2Y'Ij,iIfQ$Vf8S!LThE9#UArhJ)2'2+F)2A40k[GT@'fD'aJ0F#c-mpC%SAqr
+
+6!I4+"Im,Cm+GiN$A`'KJl#$(b"[R`#c[rMQ*DhEUAF3RiDDrC(%@KpSGSQVC"eL
+
+FVD4fKaf5aH99$DjSh+a`appSA-jA#[p!Xl2eeNc3**K5Y5J4&iK04C'Z'"f%EPc
+
+i#p#5FKK3l4l*+i9FjK5+'Qc9)USpSeDERGB'`*d6+iY$[,BS@GB""N)e&+c&a-S
+
+SmjHdkMTF@h19EdeC(!*%YJ4N6r!'fTT!LjJmD&d-+Jb1r$)jQjfk(1C'0D%m4%R
+
+ReH&J61C9U*Rj'CV%X@NB(dQ09M!cA3$21I,2$Q*dNU,i6K0lSDhATPJG1lGj0YQ
+
+EXB'a)E0Rfd&6C,&`kl(QDrc--(Ab('ak84K4p%0Qe!%k1Mj&UCF%ii`D88Q[1UK
+
+j+58S`6l"aJT"$hq4l`)AS'[A68Zk`XY0qp(['2aYGGBA@GCI@jHINpMGpKpS,2%
+
+qD`10Y4-N390c%@XaMFe,bP`5fE[ABG!jArP,2B3X(P06aI'Cd%mT-mbK(QJdpY`
+
+84l59A49ThU(JK3+SdbcQe-RLN!$X,'+GIB!kfBb6RA9Zc"9aZJjfePcPV3+iiai
+
+p6@9i8V!8(6&-VAe609"Ak5CTM5GbU3b6LkH0&9)"-%qGa[3LmDP)e'0edAP42B2
+
+#M#k3!-"UJ%i$9R3[4HM5*+8(bQN-h3L5T+3863FAhIJi'522mT0#)9J!&h-Fa*-
+
+8aT!!LkDR(0!Rp6J3i*-'a#@TL9qHNQ3LM-4,D%PS5rUX1-FA!jr@eEJL[Ep,h#D
+
+DD'eJ[AD#a'd+ME)CXpl2!VI[AJGZ'lCL'q#pJYC6iV[ADHhqPI8qEjKccS&0%rf
+
+mU1HR&(J+bT3$1mmj-&`p8a)m'rf5"8-*[@6"&mI`'aVXf!"Sm,XJ,&aQq(H8pUP
+
+PjVd[*MkVI22Pb+piXf3ccPQca5%XA@4Gq`"VYKQ(THZ#ZTHFq6SSACM+0i9Vf!Y
+
+UqX2UmM96D99m0D#f&e@kJ`%lE#ikFmr-RFqjP0Jfjec+iT!!B5jLSAf!5pQ--mc
+
+&)hh&TDlcbi@Tf!#ie%bKqbfCQXekcDD+81ijSl)iK%Z,N!"N(f"80Z0`k5)"riT
+
+9A5G-Pc8#+'-$5rkp,@"ZlK[(R-YK#0F6dFS8la"QKXVIcVQp%HP48Vm$CSUL#S'
+
+-djAE"5&GZ4fqMk,dRbj*,R`1PESMcLAKk*-9!)8QlMV9K0)'5p"A1'"30Nmc0a'
+
+YcFaQ%RK9S3RefhGmPck62Rr2-"HqQ(Y'E!&1aCHXdr3lQ001Ld1-YfKZpJ(DD61
+
+1m5jE9&cacZXSlfNR$IX!mAbUm%fC*fVIR'C6Iq'-GTT!+hX"lF`aImBlcHT[HHG
+
+cSI*Ia22F'rL#GIj4k,3iC*U,*QNIB*`fidccAkZFej(QQUYmBal4e&+Ae[QY)qp
+
+6EpdELQ4a#!`ArF`q3*&XaS(K[e(NV[2#$9Za#T!!T+G#h!Z@e'a[F5A[hc!NLd2
+
+bYqJpeJ%U`6A'lF@G#Y"@rSSHAHGq%deam-IlFhk%ckA$0Cc&QLVe1[[0SLm[0C!
+
+!3@(H%GTT6*1Y%Hq$9#0@PT!!YIh#3VHNYZVEk-@"KQ*qFK+NPi5+1Kr-'496%'X
+
+$TE)6T&!A2-&'6+Q)HPaa+V#)ldJ98j8L8)jqIMrrqIrhMrQFJ*RLGb*8T@2I#`B
+
+"3ZHNf$XhM*6-DMG#`TSZ8IHDG#'DBUHe@pp@p8DMfCe,r[`'faVSPaDI,!6mbrD
+
+3!'9YC$Vl!+l[NSR-$X#rET@RBMaNGMcqY9C60bZh9%ql19AGmmMi#6DfpSb0cB+
+
+Y0lEEMBFrh@rh3-Q%C"JL-H-A+c@9m`S0B1J2XS8Fh9kEj+6jkipq'Ac@M#1fd36
+
+3d%$jk0@+2),JY`,JJGJ`,r4KV)AGeb)"#Ti4f+TKMdKMVT&KL3#&HLrC*K#4$Sm
+
+M0k'k)aB*9'#9!bVdRRKaD"1i&[h5VeI,jeSri%B[H0Mmm#Y"eq+3!"+Z"88,JD*
+
+JHmJ*YaFS#R)YGNG*!C)ZFI@ALZje5MK4&3Grf!0X-U8pjX60bqBBQdbHP9%DCBU
+
+Z#aGK6#,pkPilq-rrj53iGU%e8`&C)0e$*C+H)Tm2Ch0mZXGj'3B1$IHp)5*)Z#9
+
+20NP3+4B&GkJ0)!SNPm2SFeehYV%"5rT$YCM$5iNMD-L$AV(`rU"M1$D1"diBS0G
+
+XrZ801)Ek2Z&#r[14Ld%53)+pk%Y&m51)%d&F19)-)hqC2Z*U$4UE"*!!qeLZVaE
+
+pbL'56d`!e`hGffFr#NiT9Me"Ta1-6-m`E13JN!$pN!$b9Pak@i!Ua(MNHG1!kAA
+
+5(5#[2%8JZcG%lMNYMq!6MPkKK*3%XBVd1J#biaKR6hj4hCMfa$e$%80q!d4VrlD
+
+,,'a&C2jkNfEq*&MVXV9KXplT0Aq'GrG,kQeaL"VAXVZ&J+,D(X,',DI81jHPAr,
+
+[km6aR,3iMGih43d"LZ'fJ!BpVDKFJ[C*r6EcYV(IkEER)H,-+Z`00-P1%#21fVQ
+
+pQ#EP4TQA01Nk6$`R,@MNl@9amM99NS*VZN1)EKK,21NN9Y'%+mDb+UK1@3!m3b`
+
+JYhAMjQr3p&c$VI,8P-8i#5Km8-)%d83F!T`Le`K'3da-P[5SBj5V#P$qMBC5KCm
+
+8Kc6dh63cmTeH6*m0Ui,(8Q*IC%bMrTR0GF&C$De8&iIB"hmC$`a'U'T#(6eK[N8
+
+5S%iL*2h[B)+#ij!!Eje#!,cX2IX(AQKab%,A3TH&J$rC(Y,3EDIbf5Y5q+qfh8a
+
+ArYiZfF14`BYK'Z#Bm+XVqXFMK+G40diJ#Hl'43K(lTQ#cB,@'A!2(V&E6&I5d"G
+
+&qJG,MKJjU"CqGMBQBNU`a-##[5250#Ga8GV064"2bpd2-3a,*2&K!N-,8l[8m92
+
+2aAL26"Xb9AIBRaPBB)*"eadr['bj$%kp8qpmd0Vp+[h!iK"$VM8l#`%cXMd%NGY
+
+2P8$Y"Ar*qVj2)YHdj9S,j(*5m#@q&!44pSPk6H@kSp5DmS9MkCkFC-%SqD(a$q+
+
+(K'NAEm"Pa5F*[N[JS05bR&JLdf%`)(Q[(jrSi9Vi#`k(i(1HD3fU2`[Ji52lCGr
+
+4e`8mZa+)if(,-m5M8k03-59bC9'QP'Ai14@B!J,BB0%r(BH"&h"eFRb*mj*IE`L
+
+jCD-I%p66AmLfb0ja)64+3d4`@Gi9a6jcEb!ZU&"T#5rc"ZLiGS8bSS@i+8HS16F
+
+101IF!(94,m'$%m4R)QeGdqSCR8lm%+Y$CC@Gc&PS$b0(`T2U5PH@J`$!JVbF&81
+
+YLA9+5HfiF@FmSI"i(6P8UUebp(59)eJP5@8P62T"1JkK"0!dcESGH3lBkaRLZ8!
+
+'NKVL31N5%%D2%AdSZl4!la%8hbM!'kBjr#K!8JJcq(M-$9*C9IElKdqdL,H'bfG
+
+j&Tr8Nb"$8U1pr8B,YMM%a@[9eK,!S&q`A9Za-T!!jl'me!DZFq1Re)ABYhmS)ZU
+
+"kah*6`k0D,cmpNXKSD'ji1*MN!$aq%5LjcC4$`+J`Q)2HKY(i0"6S3%c+"D"%6I
+
+UJU29"9$$$%`8p(1-(YC%IEFQ6"HR3N&Zm6cKRBA*iK#CmKD"H,bKV&@#ZmLmZA$
+
+pDrjrJi%VNHFjc2!45N$GZM,Z19a-*Nch8i+Nfk[[EVEhHiDH3`IJL!5#Sqm2h%Q
+
+)RdZm""L-EiPGDRBZLa2[)!3,VrLRL%[!+Y`Y'(S!JdN'+ic5mJT(*Y!aKF%)1G8
+
+X*HL,8L[,Yd@CB,aT1U"b8'3Z$)JkibJC)S*&Ri!kN!!1GjVq,h([1heZ*Kk#56e
+
+kcj!!%*)2T$F3D1lk)22Nqb)`4!%akdk2PX3,88G`Uf%`aG+dlbCA'P3#NR"3aY8
+
+P,5M0h`5ZCS`#HIMicjbrH2(IKBm@I69`LC22UQ(8%5AqB+ICDc@Zq,jpJGPE"dL
+
+`4B@`@TZBl8DRTK$*YpAHlHPAFaPDLhJe3@dR)ml@TdIGKcZ8&9a`LI9@E5-*h%J
+
+pF*0MrfbpfUU4VSV2IM)K-AIYPP*V+bZVp+%cBHU9ScA-X['pD[ANj+5#1Vp$C-Y
+
+N`9&P%JA,4f'PleIr+`Dh'`,2DJmCU@Z%TS1R[98$*j'ID5YqkJ(Q4R[c3`,e3@p
+
+RZqEm(`!!$4&eFf9bE@&ZG@&XAc3ZD(4YE'`!N!f(03#3$`R%4!!*q[S!!-%A!@`
+
+!3&4&@&49EB%f!3#hK,4TYi5dEJ#3"[1r!*!'%md!!$))!*!'lMJ16KIbH))-J'A
+
+PC%[SEHPj1DL2mT@Yr0BmDEGZelciQR'[K4010X&hZVk%iI2Lq!(c&l,*3Y#29U#
+
+k[ZZbfdI6IB3[AXGZCG[L#eYN,@U%NiAF`PDq#%`@5UJ!kBG9A[9qrl"G-kVrf1`
+
+fqPmFQ@)569eaG,,IEM9%EVY3H&"Z&!V0IP234D+5hbQ+IQ"jS4-j[QHjKB,CbG(
+
+pfpZL%8JVNVE`2I'Vf$hI%U@+%+8Gh$Ji&j%mFdUUZ',q9N9XEbHA'Jm#*iUNKc[
+
+f4"Xe59FdI#m89AfBTm02KM,`mX0*6@ciJ60f8,L`iQML"jZ'@2apDJ@Zf*G"F#j
+
+%p4%12aN&8Si#4hTfQ2H$FHhbZUjVMF5q0Ca-,Fm69AqJMckC@Y&%iSIc+"plc[B
+
+M0fr,*cGERLe`dlR`F9-3jSe$br%Lr%IlUC&[+MY'Hm3J(SHUVM!HMf9)ia@+b"I
+
+9E(*qhaG$$G0pXpl%chkVhcCVqfE[8l0YIL(DhA[G29([YIVh$meqUe%Yk!X-SiV
+
+cZZM8$mfl19Z'`m#C8FdjdHKfqQDRIcIhKb*Si"Hh2j,RThjJKfq[$Q6Sam&3ENI
+
+R-lQihrD(m94kdG9eYK0'J61)VaSeGM&JlY9Gpk3R!b[bJm9&6aiKA'K8#hTZM1T
+
+qYiPfe6[hlZCbB[pHSp[ZpZlQhMY3IcR40aqLJ2Gfe&p1Y&ZG6j0Mq[Vcj2`1cZr
+
+JmhTbIR#JVU2kdViFQihLcTeFV9USdlM@ppZQD*MYpP'pf@bKqU)k26kU0r6TIVI
+
+A0(YhGqLbAUf+PrKc9(H[FcGhf'SffkBUPSlEjN%r9rX5KGl[Q3GhFh%S!l`jXHA
+
+qZTbRTVqR5VqGUiRhhHJM33hi#Zq"HM9qV+UbU1T$UQVmI9ALI@m3cR$RrcAeeUf
+
+NTda!Al1bIYhhCbMXC-B"M-VZI&3UDJ!a+Tc"Z,!1&kd'#MmBJ(Q+r1'm+K!L!$)
+
++FlAdK!'SVeM+bL[[!K4DRLh2')#UV%%dleTpi-IJ'r(aj4Y3S$HqS+L!Q+jB!h+
+
+,1K"j-T@4-m4Gq%D4-a$*XIIf0%lXl5N'2&)Jdqif2[hXT0Xh33X+,e+%Z#5,RCV
+
+)L#*TR5Y(%9JQ1HehMd!T,prp5ViS1U#e!1hTcSLj#&fTUDURU+qQA`rp+rhSAiY
+
+@9p!SF!!G+THS3k@X3dH"Y*dKG!T1SN1le+'bk!(qr5NeDJ"*JC(S$P#eNUpJEL"
+
+`L!-I9d54iihjL2j830H9r+lBGk*6*j3X`3Z8[-E9`Z*K6ClDP1Nl*iGQ$i*CpmM
+
+XeIZYEZFijI[l2A(FqLGF!85pdJ$`G2)+'X$&UifCjJJdJ#)QN9r3!+kEbK')'e3
+
+C$k!#A'%*SkF#P%J&Z)CXA)U2RmN"(r)0FJ!K3"K2q3Jf,"Cc0GXCM@3J[D&N*,U
+
+#ThrUH$%MJIM&FUif#h`l(ND-4%[`fRiGqa%@0cL*RN#R#E"qiB!#!NDL+G!9TKK
+
+GefFN1J*p'e)4)p%1`([Jajl05$3%ZNriGF")$%J*c$Ec6cQ**kd%DT0R5KeJ)YS
+
+"A(2pFA'(N@J)F-he')PZJ04#Kj0S"d'DCI-5(3'K$Ae'![C,`$--##r4%4#D&3`
+
+MLj-B@5!DCS5ED%SCR)B&KkmCLAi!d`*@S"qV0B[MNm1AHa@N3I)0Ha9U#j)Kf+[
+
+!S(%PHa8d,VcMAN@jKQAl+@l!bG-PLZ,1a4*&`LC4J2pf3MR9!Sj`,)DZ&BChjCN
+
+eREQb9Td&XJC5%9im,G+2NV&aH8`rbL+IcfmDkTX2p#A9!PfXLbT3SBA)'P!pKD1
+
+DDJ)D1SXMH!*-T'UE2a)1MKf2[XVMrZ5HM)DDVB-$XfGf'ZD+QJ!CE!-ekEdaKS#
+
+D8K$JLDPT[P5eK+IL1hLDFmZ#SG6*pPY8@[6U#6%*F8KE@#*daTkB5RMDi-Z4FlD
+
+idA!mB8d(cMMfFG'3!#Ej$!9XR%jJ@)-H$+@Y$&q%KBqTJC%8@&f!UdQ)pEc0,4&
+
+l,Xi-*a*1H(9K1,23%M*m'IQZL`@-j$X2Hhhdk6A4(EBk*k[9BQ)I[J(QP&M&%-!
+
+F9KiBBjK6ZkK,MLZpicK&+d4XKZ+f0pMQb6&fR"mrJECVCSXp#hCIZSN1h@8!YCc
+
+T&$BIF2P`cbqa+r4KSc+"IB8)j0Ha!dq,-4"-&lFPr1$L-Q2&D%,diImPLHkX#p)
+
+%0`k`*iVb$$K@5@mF6F4!4UF5h%MGM8jpP"4-`ld&jIddAf8)L2"C`jqH"b'f0mS
+
+I9$BaG202,clIf#j[IP"j1BdC8KleZXf6"YkF&p`*61-EZ&0"$d2!RALC'@2Z6#`
+
+(PZ4CINHH#E&FV'!mqq6T'XB[hfU,D3YIV',31PX,&S3VKX*3mJd-T93fKS#KX*(
+
+,'$08kT'bK+M+1iK+QH@#SLkq5ELTm*DEXVBphFL!QREj-HPN-"14BcML+C(0`dU
+
+'1LDYMi3jhi2%Kc1pk[(BXFP,Pfi5dpL0((46eC&m(IS"UYaSHBBblKA+YhB,,eG
+
+rhZjG8F+3!29V9%8T[lX&Y5m5T5dBp',-,LkUA&b8A*2IJE8aHLTXAqTH`kpi%Z%
+
+%@Q"q8iJ(X(+Nl3mFSc@*m*L9G$%N8#)G!1B3AXG*"p9YehMC-`rVV3jBF-@A`$'
+
+qJ5q9QXB3m+8bIf@,q6,cZeS#jZil`-bSC8'BImA)HAGJ1DrJMrBjUSeZdka45G@
+
+#1U+GMH`M)*XkqNJ-J*!$a$$#CNC+PGU"AGF@JKmeFkB)+Ni*hZMVd*VL"bfK@+(
+
+Uh[0Y25L1lHi+bI!&hi"N5TaM#*!!,,@iCSVApC6Ehj,(EUhhp45[F#!`9VU'XGD
+
+IPbm!,R`$LD8C"VJ"%P-Sa"D6'"RLhf$BlAFB"P*jXbkGE9"S*"S&eP#(-a%c+iJ
+
+)c2c(dYi56PlQYaB%CG`39,CTX#91*ciXpDe"k,XaV#dH@fkXGTeaKH&D!F88bA#
+
+-M#l`)FV$'M@@Ue%qdSY3-9Ihqb2M6mX-hC01Fm9Ul%+'MQIk&N2!DLa$KJj1GC'
+
+",+#AY(DCRZ0[5`a%+crD@eJ3YHEdP+$5(k$Sq,2H+rf+FmJ8SC8QIJ!Gb*bD-rD
+
+qK![p%SNZ%d6mcI`5V2)$%B@3!)cJT"2i@+1pf(FP&FSCCXX"j,f6HJ0GJp*4pm'
+
+V09J##lk"P*J#Pf"bcHH-V@SS(m-0+TA@2X'+9RlFZ2VYAP@L)$hEVG,0JqY"Dk3
+
+,KAkI!Y3@AHQ4Md-Tik[jIX!eATN2P@hl[m%9jf!QV!8MKJ#ZH'-cB4MQ,Y&Ul5)
+
+-8RNM3NQa8FVI,YiThD(r(faHD[)*4If1L*!!F'iH1H%E*Z)F2(Qe0-33-"&[l-Q
+
+V!XFXU@MYbDYSj3Ga(ZlQ8kceSbf@bL,h`T'UM953!#q3!)KcX)[9JJj$J%5mX9f
+
+XLabGchPSl46ElVcGhE5L1-"kqhr5d((V&3ja$Xk[@XYK#(#)0hCqKB(SNSI@TUm
+
+J&@(,-9,6KYq[Eb,ll+@GDlUh5ABKeL2N(N$$NXUHZhl8Qpp5%ZIJAkVP(BD!NTK
+
+Mre)9"@d*5MqEPbTHS3)Ga+TJ#9JTUHbDP4VG93JBiJUq!C5B!PG45Ul'')-5mZ!
+
+Y+@PY+3T5q8P13Mmi!%(T@dlL($`rYI6$%(!5EqcjUD-c,P&TEIZTHH8R3HN[Y25
+
+0T&6[0IVe9r)ljq#kUI8IKS#@H'2A6CfJFdP,DpY0c5YUGh-M16X6jjY[X%QhCib
+
+TJcPb*LBK"pD6b&NUXSP1SN*AEbeVS'[2#fFSCB4HN!$,NZrpX`amP5[V`ahkYEf
+
+0hlDF)D-+4F2#4VeH"i$a-Pdq[jVZABTDhj%Djq!&UK8SIJ"S+!!TEkaVr4(@eSD
+
+J'E9SATXI-`$)PLKD6!'bcCa#58-ER4JCYP'qL@qaMG)-cH-JU["!T9mZfVmMLTX
+
+k3G!3J`I[28`a!NriBL`T-G$F-"qpH*jTiYMml#8)%MIa$5$)&&LG8[*FcMM8"#)
+
+Ghc"JHHed5Ub#D",q&(cc$r5hi6U$J+)E8XBTDFH"I)f#PR!Gf*9Q[LY*AK49hd'
+
+[HdJ3eHm5)JlG1,bbL[l[eRdX`SPrULHM,'iEAjB4r@TAh"+h[c)Z[VdYbXDAYr(
+
+G,Vi[Ir8kB@([@j!!iaaX9EAfaK#!('pXUdVC[*FJYrC9*9C*33k,Cl%AX3)ded#
+
+DLVj1Mi*BEbTMT`f4,iQc![9`3*LA*ZP8T)H-3!BrJ(TUGXVJZ!m&d9ijApV&$rT
+
+rQpLZ3ZF9R&ISI2FVN@*JGZqZ[PCI4PHmKX(1bD(CDcA%8FpXYKVe[VPDBLBii"[
+
+3N!!TF*FYX`rZXUP`b4'J)8%R2i#'UG%DMiH'T4VaLqM%8aNi3h%8)#MY%%PTe9*
+
+ckEH`H'NhZmKQRj!!4NS6Pj!!X9-6,%$!I#!!K3T5Sme%*0l(e'*$%,-5-!)p@DA
+
+HEj[(ak[3"63ZI!-#-J9ZZM4Z6!N#UR(K(4'3!0ad#Db@mZ$2KVT%+iY%'h6qmG-
+
+FjqqrGf[RSqm6Er4l*kB1q)`p$bG3fBR`)DhG)@+c-i`J'-icD0%YS84LFrYkFHj
+
+Hci5ZeRY&9Cb$+Dq@`"J#q'!I6(QC8kT+eD%P@+fGH90Q@E"8mXNeAT9i!Va+f[Z
+
++X(Ve6K2,'GKPf$GlVaBB1!GEAkdc-33i`MhBqQD5(*Ha`*!!@YBaHJX-CG($iKH
+
+@d,$(S(E#ETBA,LeqQBAP"6crJHS3)l'p!2Zd3()$29PY,fJ3A!%Jjf"AV&8HKJ!
+
+!Z3HlBXi!!0@im)i!U1b+&2cGb'aVaq*%Z2TV+"!VlFFLQpc[FR%qmqC-mmlq+A*
+
+Acrb1S6J(+f-YGc%%U-%p@"QcT`b9L%&,L[VCc$KK&TLp*5IB&C!!pXS6JT)QS5h
+
+`F$Z%EA%D,CRL(iGN%*%8%dMi60Mad-(GZ+SE`*J0@@b`Si$l$,J`a0)E+ZHdP-`
+
+5Q4$V$,Bc'XQ!h0qN"3L,('5IEIYMH-@&bS"04k8lpf2$3mX@q@JA9Fe#'G[qpP9
+
+ak!SY50JZ,1&NITb(3`CXi`Ea')5)ISd$DlU&@Xj&0K3$1I)4HT&U6*FZ(L2a2IP
+
+Gc,ZY'Q+J)FKYKiC-pBd8Y"DHclTQQU'X39[82'8T0bB3cBUp#-p2'2U4(S#C$hX
+
+kZPppK#TF1943'hX1#VVXHp,Tjm%EHa4Fpk$E1kchqf$-&Djb$Pl5@TaM#+L1Hr#
+
+5cR4-*Q2RSj,DZ6*k1am9Q&93jZB$(i9%NBSArRcVip*CQPRBqJ#3!qKiKId+!Ui
+
+9DR%1CY"DPZ)(L#5M"hi%YG5im)kS"@@3!""QU3UZID#*98K#3Nja'rl-q'6SN!!
+
+cmRpY@Tck!@V$d#&X2K%J+@Z!3VT1UB)ba$4Q!PU@KM3*3lU9UPhR"P8[EHKT#+5
+
+[M1C#XC(Nc3qd+ZFKLDk95&id%f)@"lJH&b(#q%`'0#DU"5S%QScJTZ6M-e9mZ)N
+
+P$h`QV!JE)"D82Gd+eIQN'@)iX5LV135e,5KcX+p6pY)B'E9YV5r-KL5pe(E'Y%K
+
+LMI3QYN5HJ+%cTE$R2ZB!@Z%'a-,Ph9!iGqK1C@#0$TmkVUXcp6kTJUbeU63pGRQ
+
+5EC0"V0--+Nec6,dD3AZ%epq@f#"ckfbqYi[U$E%Lj@kpUHY8FkV+'VNqKJ3"#(5
+
+a6iG8@--KTTcU5b*B0[6Pk6bRY58MM8YJ&qLIrUr[(dUBb$1aKbBBrN`rJ(4)RFc
+
+pjKFlGai+q[%E!aEJ,eqVY#(3G"2(F1LUe%FefSQF6Fp61JM*e-eI$i`ac-29'`9
+
+Vf@5BP2a,!M!8C!cY&1)Y8RpXDf0b[(VAUZaqUrm!eVZLH`39Z0rUGPDlq)5,I)0
+
+B`"3BKPHi"m2`6!(K,(6ChF@`T(ZVM*iZZb[fRHL81+@E!Fb0-PZjY"$R&C4C3S#
+
+"JpJ(0KqaMer"FL%kiJH-4%2J0i@'R,%5(F(,KSj!Kf%N1J,Ge`SRcSL6k!M`h@8
+
+'1V*D1S#UJ*@bPC,!16M@DmfE)9!5Z!I(HXj!59$M`MXU#9Jld(aqXhK3@A[@Dej
+
+Cf+4Y22f#IT4&2UqdlYGj90!cTAa3-4FC9""*j8PXr65Ma%+N2CDdA$Y8Z`VrrT6
+
+Li8qd#l'8HEZVe2Z%,h`$Mc%&0['N@I$'2)DPTaXF@iH3!&DdFN9M&arm(FC3#fr
+
+!BYK4d4VTle(XiCpCM(2`DpFU&N1!,0b$AcZ$bQ*Bc&M#f0U`AI2+&BeGI[&h($-
+
+I0YSRakh2XBA)2S"CTiZKI!&QR)2PZjDc'!*qi4iXhaP8-#1IJ"X`@aZqDelj)Cj
+
+kLPedqA8Lc"5fRVY1[XDYAEbqb@VHFpkU(pp[dDbpi#h1`ITG5eB-!CD`$pE[c#P
+
+[kHhE*@qY%eeVAPN)BGp49fCJ8X`F6$*,Q'h9,ahVMqL-PQr*FLDlXj6H#@iMh`p
+
+i6kVU+BeJiL8-La2FV"Z2cj*+!QFmLE6*M)SL+-m`l16fSXe$%SR0q%CEQdI-q3p
+
+8iaa-fV@)a333c69pm-5STQd*PULf0QRA[-)&S*VVMj&rb[dI6J13!-%Rq#qF4[N
+
+`B3VPZTH)P[R!ra(4Z[F3"Uhp`XL*Fr"hj!cJM#RK$EB*62Cl03%rSB-Zc+VeXlQ
+
+0cA4%059RF(q)9'3`BMZe3Q3`pFM-50S'88#VYKmJDDUiE`@2jAQed+T4$&4mpUZ
+
+Bh,j,&5&+1cZ!LPE03!SpXUC0Zc@*SYPHSA"kHTU(LGY%iSIc+!pclHe(EYk@KAr
+
+a"h"b3cm,IARQP+LE"Ylf9Le+MkNUpGDMQI[GjKI8e2[p`hE0q(m!$4&eFf9bE@&
+
+ZG@&XAc8ZD(4YE'`!N!e@#!#3$`RQ[3!+!1F!!-%A!@`!`&4&@&49EB%f!3#hK,4
+
+ZYi5dF3#3"KqE!*!'"Ad!!+im!*!'AjS-SJ"2N!!"c2'-(#2Xb&'pVTG&Nq16Lmr
+
+XNP-meIKkdUi"iB34J29dI3R&jd8!2RUYC-!*qY%+h0@%Hj,MK"EKj$PjrT,RC-5
+
+2(#HFM,MN13$K+m%((0"h@-$RA-4AS@XiRh3L2rjk'-"#,$-BAVI$[JpQcECIRIL
+
+fhBNl))AJe+Sh)'BNjkP)LjaNYKd-6+PIUi(2+"%dJ5+(,mTXI36(T`$(G95FV%(
+
+30qQa-YH`RTe#VEB409ka9!LDSmBjK1L*CZ!A13HR+PUbq'*+@@j0&bim+9Jk6p%
+
+iN!"5,!Vfe)$$lj+`$0U8X6@!Fi2&&c0'kBbP0%qi9E#jqeBZbXJ-fQ5k@*)m"kH
+
+B9+8A5b)@&2qN0eDCTl@Ec%VS1f@5*i"+DbK3LA(,Z#*T,[#,mFXJrh3faRKJ8Xk
+
+jmXA,qCabf9iF4!(1VR0qcX93cA34H"hm'rIM-($E`HJb#)1[)Bak%IC9e1[lAJM
+
+4-"KjF6mDM"fl%M)-jbU)24Ki9d(,6#LIXR3P[C[J4i-i'-3YmcFcFJ!FA0c3p9h
+
+"%[k["8Cj8E)TVBReLKjm*-@dA0*Fh-XP+4FXRC6h`FdcE,cXAUY(FmU)+0K"k0e
+
+`3N($XDYq-Tafe-(B[%'[CCV3l[P4')eDjU1ZqTN3"eqKJ8Gep6-Kl!mZ0fAjqZ@
+
+QISEe-hcZEHVGVT+6rVDjM!1rFIUTk6Uf*p[BDiF"q%%B$Ve1TirZ'kSk(RTq9@e
+
+(Sdi`DY@Pf-KeF%+r4(Hp3FZmkRFkBD$-bR)BG'26r4D0ASb#EXXX1@8iLdU5[6k
+
+eC1L2P29RTJZ2-r%Cb!#q`rQJTXNrVTS(9fI5eI`[9r!iRr!9D[iADPhCae!e!F(
+
+ZI,f1La8DZelT!(VPf6kXCQ26+cU$IY%k#(eS+2bM!HJR88chVK!GN5`&0peY432
+
+JVh'mXhI54&,Sj`PpS`&`45CLRjSh+8S%(2Mml3b`jC!!Ya8@50KVZ0#d)#cQk44
+
+C1&T*T&(%L1$5U0!D@5P0cXmVVMJr9j!!1&4%%dEqjCIA84`J0LM1f,,%@m5SZl"
+
+$Ldf%'Cd*K*T00Bk'L#Zr!`"#V8a5"BPQh'TN92qfMhjaU#4NrPU!1*kEEX(d%@N
+
+dN3$c3ZJ$iYK-"mFq02LQjEH3!1N01P[#["M"Z2m0[N(`ZkG3l&Qp!SAqd*m)`&S
+
+##X@Zebp3k%1S1S*JT61p)iDHZ'TPLG"jmL0dR[d!R4Xf%3brbBCb("Y,@)CT4MK
+
+[d6GNZFUSkk`BGC&83-`Dq$dfRKb+q$d"bl+HBKC5Tr*J5eqf)"-TE`pGj4Rc@j@
+
+#3cbk$L#G!FNb5(2eK$#URKe9#pblP&2SHZ%iX!#m[Fbbj-+B9&*3X*h%%lpBVJK
+
+,1Dkk8`j6`QNYc6P9Dr&E#Sc1#8XbbMN8-d#(aLh*5LU,[MF1X!qM8G!CST0i334
+
+D1!,(McU"+eK*(9Z9T0rU8Icq%8DbI566P1&+Sj`XU@U1641-+391Th)j!1mR5@-
+
+r58kETLZc61Gj`@LLaL"BHbml5Sa'(bJ5S8[I3*(EYCpQ!,BNV@Z-+9*bcAZ)I2i
+
+4)U24RL(hYBm)L5FrLJdPp[d"N!!`SBB'!#""!D5K3`")d#3!j#$#kI%V38VJdMF
+
+3T0SBDJ*!k`'+p-3%LBF82b&NXri4)C&8N!!ArbC&L9)l8P6BGk4@TEIT&'%1EdE
+
+*!aIe4Yl`SZrM1H3$(1NFcM&d"LLN+CRZfLB-D)pF`*Ze,TleEXCQ$FH-%5p`"'m
+
+[Kq'1F*KA0m!d-I!bhHQlECD5(#i)Zk9VaqlMPJ4h(Ahhh4@lI'L82-hRqch)3SM
+
+9Z@hIhGeC$mICp[IEbfmlhTiB'cMEqqlZiPLk8V-H`j5RaM,8kLErI`#3"!d4GA0
+
+PFQeKER9KE&mf,QKdE@aX!*!0C8`!N!m*q[S!#L@-!!$"&`'J!%"849K89@f"0J%
+
+!Yi5dFEH%Y(N!N!8"NI3!N!BN03!!,SN!N!CmR!j10hNm33B!T*[F2KSj1Z[0hYb
+
+hCV*hXj9TI-fi[h$#b5B!&*qp#mARYI%$HUfEr%,3MeDJVZY,CK02IMhK!eGffm[
+
+2a4cB45"IY`G-&NDBUYGK0GLmhhTBhh)frpp1SpTkXPp6[E3IU2h$lITZ9FdY,Lm
+
+rZPTGAYjTl5Jk5&eE@PP9V9L(LCrk8DL$jHADhKbG[lLSUV'R8kqYSP$p+JZ'#fV
+
+YQP*V+cMaD+K5lkQraX1Y,UeI8iZ,pP$R8HbRU4ILM&ZUMTQm3&@M-&'EjXFPq['
+
+AVKH(5fj[5me(XGre-EM5@GU,iLZ1'[elS10!EAYa2&4UmaJrrV)6HeiRpVf`R5a
+
+&FAGVI&`Md"feVGeHAiHKfSb1c%qrl1Zdjq%2rhJT#rh&if#Tl6dl@BGYKC1'+X*
+
+*FE,N204qQ1*rV*m@qHeN"eL21XUk#Fq9C0fZPp$e5P3DUFhLjRbd&iF[dreDC3G
+
+rYRCEpGV@GUhjS&D[29(eaVh',A@[@GQr[eXpf&`fRc[1jX0DUk,f+JpVGqEDAZ,
+
+'rS!QRP29aPkVYYHk-cFCJ5llk1aMEhJDaHhNI`k1[56+BYGE6)F$Eh4k1h+c[KH
+
+QjmHer550rD2XI%RG!&FV1$rVRKGkX8kMH(63XqF("cUEbqE'1*[EM4dXUl*hlml
+
+FR0Uq9fh8'mdlFcqpbrrQ9+[f'!2mG)ArcDRklYi$qc0prElpI31rEq$cL[hplPd
+
+qMZE,ph*3UkjHAjhEfPbZd%@YE0GVUPUVerFV1cZlQ(k9IchBVe60VpZ0jNkYH@H
+
+&$QYZEH)0IKr6hGZl-rG`GfHRAZ0KkHGkl@jVEZX$$(Ur@EYlCbj,["L[6DD$Aj!
+
+$SUArP%I(0Y62J[5fSJ9mL,H!hiZr6l8qQQU0TZVqpe6UCq&4-X#C2blefJfl9#&
+
+JXF9F[fj&!`af1*!!!1l+M@+SYG@VpUj)"[G&G$KSHU(`K`"`Rp,),DF#())Gdf4
+
+Z+rp&!*K[GDdBlqTeN!$#EYMfRJS!8qQMY0aDj5M+!$MU&q-hB*NHq@A'!X+je5f
+
+e[U6ZaAV3mehJm$+qB'3')IRY@lF-6GbkaI#h$mi!pajlJ6G8pDJEU8%FRIJJ1jA
+
+'ZQeKhAbCCR%DH+UE6hEUTcd`ZfFr"-YQ3HS2F)6j)&P3l@'SqljEIN#FkNC"i#F
+
+B6,@pe(0T4+9M6i94#SBG$+)BBX#5dqVjLF*r3&I9Mj*8pA6F2X9"Lfe[!2$&T98
+
+$(DFUk["qEUXNkRZU!bdK!b3#XiF+m*DN$ZEM6rZ!DC!!GJ*N6RPD#q&+lANRAS`
+
+IX5-XL5EZ4PKl6q-X$aS$F,U[McdR[b'i!he!Gk*S@IS)+qIINX6(E`X+%)R"-)I
+
+QSe-FV6TCJ1P5TGXR'X6Ip4cXM5Cep8!Iq3'Z'MD$EcaX+9m99V-EmTCp0`Yd['"
+
+ZSSE`d4qNM2Q*U`22S8%!il5V"!2hG*TI9cF#CN2i5$(G"iZ,UbXVd&$`eiGm&cq
+
+JhrRAMSrlJ(Ae2'Gd`m0fG'TZE6%@*YA*!2H@eZa(G%9AEkhLN!!!ZNV@lCQlYPq
+
+eqdLFRMkKbadQ+HE!(4iI$`PNFhPrLaqL&Yd'A'YF(AXhcMHKjNra+pd1##JardR
+
+Aq!J[$Jl$bAlX1@CX[$hm5[KKekie[e-+Vf[l#VmXjSB%N8ZE#08(+fVP3ebjrBK
+
+8UK22HFbRd1)p"IQS"rM#*HG[e42k0K[JZ2XH(XS3)Xbm$VZiieIi0HYl1X%le&C
+
+qk,5p,RD5+"HM(Trk#9k$11Vc@+0j0"iVM$22$erElh6`0T8(Z9'r(i91)HAJfZ1
+
+Em)5fMYhK`TL*DH&Q$rJmSm[dFQURQ2UaQIU+8R6jl)A!q,%h`"Y+Gj'Z+`E#4j&
+
+,lb1i`1IjE[-NfNf"+IR*CLkX!b2BYk,[Y`F40+lm5KpT,'+Hhb[)F(Ma!4YA4Sp
+
+!03SLl"eAD)'1a!lM"$qpI2cTjN@Rp($E9l%J&hi[GB#(ajb*+jLIkQ)"3rb1Di%
+
+&Th4CJ#0i5m+XId6hE39,L[NCZk'JPA@LZ"m-L5"d32HY2mK`G(+Vh*I4BlBfdaM
+
+rYlF-p'iZibImM"Z[Nq51pe6h`89EQjKjDd@TSd#lalNNZ%UrCelqXeT6H2ES)EI
+
+rVLVP$RAS3"1Pjk6iGehK4H[L)QMcqlT53bm)m%UDIcF8(X[8`kCSDV14CGV5-K-
+
+,rVBEI!4@iDYVkHACCG,YJJ)*5aF6,cA%`rFQZDekQ*JN6BGZQMl4IX#IQaX(SM'
+
+2Eh%AL5@L!HPXG2Q5B3+8`G0piXG452VGNV2ESEFM`'Z@UY9e1bHrUF9dGNPiLZK
+
+"+VD9heM($l%cE)b@a8mc[V+[+!qcXEKkrIXlV$C`DH2SY,LN0a8SVrJ94+9SC1)
+
+pmcXZZIj0TTe9h1j%"hM*lBHihB-X*QJf[q1@4j!!bE[jllMPH!f'EfiaAiJM$aU
+
+h*A0YRaP)b-GG2'QiGh6hq&&3Z*ZM0hGcZpkS2RM[X0(#*6$kBUiKMUA&P5e95)T
+
+@ZJLm6JSadrlDDZa$TR`Mr+d[`3eJN!$KB85[#qNC,'GJ0([rmPYS2[V$[(`%U5!
+
+5`(*)iPeI@RZf(29HjY&,)dFXk3Ddi2@PUrQ5k&Br-Ra-BPBF"A,%SMBJXUi[AAZ
+
+e+((L4QhFT%9G9r[!,YS5("MjQbP0A+Qe&Ellkl`TDH)5VDh`*ES"[MNa)N3EdJT
+
+,)fVJ3bB!$XN"Ul*UjqEb#&b-Q&QB*PU(66K@e-0'DlF"Tj(a6Ya[US2Grm$Akf6
+
+p'2XV3#@bJVrL$)K`T88#IdAZ'4!9r"@[PbS4,*BQN`%-&ZIB*qJC,0E)B('ZAq!
+
+mI2I#CV%fXPP)#b),ARm)8&$FfR)%Bp19*5e+N!$Bar@j,6T9N!$B"jL863D#a%+
+
+JhN"!K6!X5'aNJcIbG#K),!55"be%N!#3!#pKeF3q")RlX3j@acjkaL%M5'`&@Nm
+
+2*L9"BKq!04flSS)iGVI4I&4TlNaP-Da'ET!!aGJJ,"#S4lR5)j!!b'*dA@4(@Hc
+
+U&PQH5((#+IMeK4Kfp8`-qi[MbK),I*%`p0keIhpZLZT(*f33+kf0GN-,X!$bCfd
+
+i4Sd$QFfYI[TcH-@d#eKGi2!41"c*V1ThI&M[D'C0&X,jNENcR``qYN&bCQ3X1'U
+
+l8Rd`*5eFAEQ"Y0JU)"!!#I3e`CLd5%LIB0Delc',@-@`eEEpqkq-4EZaN!#ej#d
+
+Y))3"*[%!MRe%1m!HMR1-SriCHcQ[f%ZpC#pMN!#(RpK)LVQVh)lHMVc%S8J!&p%
+
+,A@rTbLXF-eIaFa`$[FJ01-BX)""3#eBX'1-B+I)6(,[q2Bl4RT!!T-$T)8kpr1P
+
+c+!-283TF58B[XN"H%"D(HLaFj*E-VbjIA9mKeY,+p6(%1,'Mi+EQlVhlEp%+AmJ
+
+0D-@DP%"!)*`P*KDM&9XL*fberMeE-Dd840@F`G8h9&A-q399(G4Dq`fNB(k19D!
+
+3Z3'V@&X5#1J$ENr"'+Z-XA[#96HqjbV$+j3RpMI[!+`"L0(54dN8)'JYMc6-Bq8
+
+JrT2fliG)BH1)1B8J5H3l`J0`'Z84ELDr%F&fb*pjFKCr1)'VadqQE!88N4[B+Jq
+
+UP3B3"-CefCLYRJiRD,Aa!eSpIU+HZJJc(1)2ZB#[#+DBX6KedINA9dfa#K3L0f!
+
+9Ld[b!(e3rSC`M&86UVVj)e8a92f0Ta"Kl2m@G`hT`%-6Vqb$QU+JA8BK%h+Td$X
+
+YU-XT$aeKe(0YLiDN8aqIRA&*@P-"Lm"%EL!YPTS%!Y*Le*'-5@ZLAkf[r%"D6rk
+
+PA&&"!`UprjUcmL1RP(8QD%dSLeTr!*!!TU`P,P6eH+%r#35X*6*8pC!!99NVcc+
+
+j*+kcUKjr*bl,,BAYP$ljrelA&jL94l'm0'FCim!#Pp2)GeckApqfSAK&B[FE$fY
+
+6"T-FiVb0-L83-*KJ%ZFY3M)BKF&1k'ZFi2dAqL*@qFkN4EmqUm*LV&U!V0T[-[m
+
+%R9p3U33(B5QYh(,,r9A8#2P@PV$R&UhFMRVJB4!EZ[ARp'Hem-hC,f0re@Z8Uc5
+
+V8j+6("*SMHiP%*!!R'bF3)XBl3R)cG*R35SQb3@PKGTq0YA0fV%qjGimY*&4a-Z
+
+#+HFbSMhENmI3A[Rj+(I@c,b!L&NUYN291Xb4CJ#N*ZEL'PPc[DHie25V8qTVHD@
+
+G9p%dZH@hc%rN5NA%T+q4EGbU3leh@'[ZeUEC025-b`d3*a5%fkk,$q'f1CN+'Hd
+
+kU+q-Y0HZBe,!jl*ParSim9C@D0P"&#"+e+0B"hH4MeQ3!0J(*%4bq`N5qd$QJca
+
+443,Qk$5LY'4*SPd5GFK`ibadHk*#)iPh%AIdhXS0-S*3%-T-,lC3)L2`GC%GC34
+
+S`4rRfkh2-TP"+QrNAfb)mj2'-UfEa6'h&V5@GA6Qbc2Xf1Ac)X21HCHep,MDD%l
+
+C5A*)A6CLU8#!'1*$kV*`bNkF-AF*6l23C@+9Rr#rqF!rLM8+ek+lRqZe%Bj-C4f
+
+q`+V#@ri-X$l,5RVb4e+5()+8M4iN%!#&q"#N,*b5%KNF*U3dLe%Q9T%-51Qc[+1
+
+[`SiNKf4N)`!*"%`K2L3M#kH`p%R5d5`Ef4+,!%"',i1+,Rc3$@SMpGDb*$P%("[
+
+C4al!#,+(#FCmC+fJ%ckDT4aEB[PM,iG,4LTL*P*UNBXHcU-8#j3jcT!!aSNUcUE
+
+#%eT!)rH0+j@T8rl8Y%!ZXMZIQk(be+2Lpbjbi"#INA"m(+I+A34c9TZ(HpAlEd#
+
+-Z%9Z!$'K)!'jB!ZC'-5X!Ii5a'lm1`6C%-Xh%-B18C6p6M@+6B1Y2QilNUm0$*D
+
+Ljc3E6(%9`'9$bS@cSe1(XQe6JCfbJ3"TjEGF9KfqeA*#QX'dJ9J`TGP4S6bhV0S
+
+McRU@I4d6Yi%lMTLi8GM!48bFc4bUl1fS4lYl1ie(UYVBDc8Ep5Rd53j4c%BR%`L
+
+J6hU)BLj5%)5-h#'U(bhYj3lp[P2hCIE3MA%kXkb3!$e%*!$4lG6SEi*%H!c5eRT
+
+SiLj1E!A[#V,hY#"4-rd'%K&S)E&*G48NeJ+!2Sde3i-3X3m!h#Qr`S,%4Z#TkAM
+
+SS5K),!6DFXF2*)R+lj!!29$4hj-N&J*K)88STM6adQk!hMTC%)J6@`'p*B-!pJa
+
+TBLd[G%)KBLYJZ0MVS0@m*,%5m&XBL30,QBDh(Ga[2$)Ul955P4bD'4J6L%!Jb8S
+
+2c3`N!dQ@Vi[X+-Q5$kG31#G@R&NrJj*ER)2@Y+L"XFD-1XRiLBm6,J)dGRGUId)
+
+LbD(LJ2'6#!6N)$e8(*!!6T'SY&G-N!"SeR5Jj"ERrYq4b!pc+&*UPaSGDp@0)[6
+
+HE(ZD,0jYFRQM(3`-j$KY''8rMqP30RRhrABE(jQf""&fJ[*'+A8r4TF#d`VCFc@
+
+Z$ed"YN'@Bk29J!III$EJ3Hb"+XQ1U$9bkP0YT0H89UhA+RY63*-FkJXBG8NJi"M
+
+TSEk!G!TSl$5EX0QXR$I6bKXQmf+G!-V!22"TKiaRim)BUJG(0b&5##mhIpH&j`Z
+
+"(U!b0PZC6KK8rFK%)S'KB"5I,f1,E4$)JKSJSD-IYG&U`d[GT5Y8qkKXhphqL,L
+
+Dm*VADQqj5h,)HcF5PN#!*p*$hVZ%bPh@8$ZKVeRZqiKFR1Sd!YjLf#ZqBRGjJTB
+
+ZceXI85i5%Mj)VbTbN!!i!lkXf&AhMce&[C*i##C#R0bPXNAaL,Hq+@X%#`!9B2S
+
+iIq04Xm+@X%pC6A,)PcGUPN#!00*$[VadbQU8-M#"Y&Qq2,(+Y05F"qIe1AZCXPf
+
+m&e+dELPePk,U3Z!D59kqDH&Pcr-64bI(X#EJB+T+T!BDJ8Kd!2BIYLQXfGEf1NF
+
+r$))m22Mee4b0kQJ8-`VEF`acXDF(!b"XAZmS'M!$HXTVGpN934qG+A5BIX!I1c3
+
+,&QS5p)kL0-AQk%285@+I"Ah'(I9jP2&TTPmjIEINc"qBEbbQ8Mr'D"!&8GF@Er6
+
+'eF2)ca&R#(qLCH!X8kHaP!ecNUAVK)99iHK!RG`m`iNfIVHf9kep4khM))C,E18
+
+jTq!U1F6p'cP3)1!lk5(ZAc`&9i0'PqJk#r`h[$+$9l-E)3&Ik9J8,qm8YI5)4kh
+
+elrQT4)C),dcJ!D3+r(#Ir'H'H8'$(#+S3mF21d5,Sj-(J3kpffG,Ff'U3EbX$SH
+
+Rd$S"a-Dl`JGKr[RGMJ-lS3SL,Mb@(lYJa&,Hf9(-`GkT1Y,Zm8A,2XIL0C!!YX"
+
+9+!Sr`ZVR%L[20N99bD&XJ9&$"3+LNal+&NLRU-Vbf)48Ce8,Q&Dq"e@c'8'"8bP
+
+%[%1k+M4*Q"1TP"pi$XH'X$C#3V9kUp&'UAiI6TM$(D2KH0"N6RPaM0V#I5p*0*6
+
+59hKSm2fIBZBSGqq5$hIVEp0Z*BHZ#8CcP!FSLX,N*'-m*$bkT-0Cd34LP6G`501
+
+6433ZNYMV%L0GNY`ipRa8QM*X1iaQ*YYmj(2[D3$I%AP!MF8GKTV!KcHb0+Q3!%0
+
+p%-@mN!$E)%+(@Nq'2kHH#['akU$1$9RRqpVYd96)8!IGpI@3!-rP)l"Z0i8GK[D
+
+4D&5(2FAAF'Ufr8i(bL6F-IRKVeQZAYQZ6@'1f%GZJ$QKS+m#"A%+aM$(NEZA0,F
+
+aDk[!Y+)S3(FUq(%BP#C)DLYJ&,G%b0XM')iD`)*KDp(a9mm65+`"irGG9h0Ir%9
+
+6K0TMkV(`,PZ%F%4Xi#XMD`N%I#@A9%13!#(jUN`3Rd$@V+9lb5e1DjSX!U0i(&2
+
+#NJ'Ta2qY+Da39+H"P'BiLPhHI94Tlp-CI0K!ZjkM6l32C15m2S0Af+mp8mf2,1"
+
+F(S3N-@!E!Nf-Qi%m%NipkNCAV1m2JB5B"k&5,)!ThBm!ES8'9TSP$[EVZhE4V1$
+
+G234PmFrIq5CHjC9IfLH+1DGF+$RN8aZ&6#$J3YNiRlVXF$$K`PNqGFNYcPfTJ3X
+
+[NJ%rj6eRJRZUa0`4T1fD3AI3Ari%9A)iAc!"BG)`A9-ADR6*X,B4m,(CQjIYj'C
+
+bQQAJZj!!#dfe(@TdKPKCR!@Eb$RTBTZ9))N`Vdpq4(`GHdkIV1RN-amc-HD'+33
+
+rX)"*QjR(Q8&@j0!@hjNG-"lM)pb%p-U#iPpeKPJ@RGSX&E0ME1q6&6X`ZiFHEJB
+
+Chj'FL`PKBH&T%E#Se!IXDQPlLGqP`QSZ(2Lik*f)PQ9RSh8N,RU)qbRl*IYH2iU
+
+(f$SCi(2[ip-de[C,fN$Xi6G8qm(8CD4[FFPdQE$VHAek61$XI)S`b!5GVCBqI&h
+
+6UR`+TJJZ1H5K'a&9)%"`f6J2rB`(,aPm&SJq)KIR3#+!F%19#F*"9"`4#%*VCEI
+
+0@($P%#m09PA(RMFJm1T(YM6`+mYNQF"1-EjILV-PRI1q"!"YpNA[PJYTYQbH0H9
+
+#b5''hBLS!J%AbXBal'9MR!N@cV,B4ihCRN*FSbi,r1FE304Y5VmbG+M4@m&093a
+
+9%#K)UF#BS9345l*Vqm"F256&XJ-Z4-X&cY6Uii+J@i-Tq3D(*AcV(4JP)@6Q4[Q
+
+q+G"[mUm`-!r2TRNSR8(U$i*K,Q(fSYMr,ERY!ei&0%I@+NNE*%qlABNG+&G66b-
+
+Rl`QA&cDdEH'`UlZ!@AYVX"aDR(9q*QQF-88kQpA'6ZhX0UfTeFePrLJI&4+P,VS
+
+RBJ[AVZI02%F4,qQT6rSe*%m%[C5EK0#+Er*9SJ3%@NPdU(C%V*,IC-"HA+f)[2q
+
+i5iJ8be,(I)CDG55%iTEKa2P+J0@K+Ld@(%!iaI'F)Y2fd-`@N!#1S*XKbNXNjR+
+
+ahMUqf&4l!RSTDDQ)a2%(LAG@Q)iZb@(S2bfBR'rI3fV4Q%B*&',dRSJ35Q0H'G[
+
+X6K'afi"0$,qka'13!)KHjKD`r2$l3r&!+ZfL[Ui4X52)$$VPrK3pP*!!4"&*K+-
+
+&fLGpprP6jG05i0iG(dBL4ZSM)XG"i!,G'ik%dd''PG+Xi`jk[)YFCFCla%N3#)9
+
+!c`#kU&lEX3FYl94D9rK+d)R20(3b%0-Y84kN$5b(Y(+-`@SlM!%NK6Y(5*F),i)
+
+B3"R0fX&Eh8&bU#&JP'1"3(H3!)eV#0Mk9424B9C"`",,Pp&Vc%&RCTjaN!##S@Z
+
+J@@N$'YU3!%f)f*6AbC!!EYM-4CH"#kdCfJ2`1iBf`ABN%T`0M*%B!!3cXX&)V+!
+
+NREB(Va!L)Sceba)VDaL[1@f[m4@T53iP")b@+a#3!*TXA%+JU-SfBE9C%i'#@[j
+
+-Dj3apKQaj9&Q4[a%jNlZaN6)*E4GP28PD3icJm#J-a2,JG#'HEEQDh"lelVd[F0
+
+DFlFfl6a0ll$F3'&#3D,qK[53!+KIp*D6-PUAjTR1JPlVdQZ[@THqPhNaA!5AV8X
+
+haN(lXN,V8L)"kL3A#J)G1EqS9lJhVH"#bj%EZ%XSL)F[8%)Hi5kq,V)MGpPUKH'
+
+NK-[',"rHm)V$IrlLUjl6VHCKl88![&Q6QVHHGQ5Th+h8$ekHijL8&fKMj&%[Lad
+
+b8jDPj[kCcrkLDkpD)26kYJR[KIpp(hCldYLf+p8(pjU03rcdThE6p1,,$E`R&15
+
+phj3HmYi,L*8aG,De&9Q[dMVVE0I92[PM!86E+%$5jHT"Rp5EhMK,JZI'3ANANjM
+
+91Fd0i0JqaSCSFMREp#fb+94J-!jKSiBTf)4N)Fr+eMJjh+F%,8SfJ6qIh@@`FCq
+
+([&-ZqkK2(2Z6BB-`YM'RF++CK*%VP$J-Qm,HmlP'!k%Jf!P[$@&AVRGPbB%Ah1k
+
+&8"1k)e@3!$#lM!EXl#Ec'c9HCaXEjZ6@%XNYY9rCh@ZTqG`m4bRb@(jLNqMCL$`
+
+D(,[e%V"VV9N"Zij14Dm)8pB1ei52K[mD(rDjP0(c+(XX(M[''U+Xfc-6$$5Fi6E
+
+L([2KmfEYr9VcS1DF$BN%,cMJE5!0bYaPE-[ci,Y$,!d-e!J1S&#BCcR,Q!`hT#4
+
+@@8&Q*4!NLb!ZT"c4VIFQF!XVb35*FY3h)8TJ)318)dJ&LCe!p-"1q&%6*(B#l-*
+
+1b!i9La*EJ9d8S3KBM)Z#9E%JX4D)6,3@T%DNU54a@5$-Q-Y#F9U#a&E)#m*E!5Y
+
+43)JJX4MSJQBaBX4'ePE!FpJ)p5ibXS1Si*k"`NUb`"XjPD"6ET!!8i@#aK@%V%+
+
+*R-VA4AD88f'IXI,8TArQjUacK58@ChrRMAQ'8Xjb$A28MS*-j$3$#Z!KV"mE04U
+
+UkEp&6R*8XVYdSaa1MBB%&Q)$+4Q,L%"!5Y*$G`S"PC5bLFr`jU`f"G1+XhmiSk6
+
+$rEmb%TXrTTJN195*-0+23)"*dN19#!%9NpM,-b'P@C')R&QFrIeTUI020596L!T
+
+d4"r`@"0-BVIE&*-NKlS(4[F4#$"*HUKl)+"L%YX,*jJdkhU3!$1,XcqY0rJ0*I&
+
+8AfG2h#MIaqYiF`Xrj8F4%YEd1f8YbD&#J4'2"!,@NKiU&!LSV'9Yda2DQP8S+,R
+
+&fAmX$I#@RBZbqcNUNd+(md)GD0C4C0B[QL4Lh&[Um%H4QSK6`+fKH!6fCCm&pAm
+
+'EH@pAB8cH13hrkMi"Lj!Y9&[0+IB*MNNd"Xa5b$!0ZNKJ9ikaEC4VX5%ffBTp#0
+
+b-C!!C!TJ124GGIc&RjR1R*cA-MCP-X`Fh')F@69P0DF`#N1[bi8XZ#K0P`YH9RQ
+
+!&BVbd3(ch&'!a)(EGV)ES`ma8%S&D4UB0AEiHd1*1#I[HSP*ZE8b-TA"KdGHHNT
+
+42(qSGNNhS&+[Y9T[P6M*)DVHD'B#!G**$e(e%LV5Q8bH#G(0XZT,EMR$0a9hMkM
+
+#jGFB"hN0+lDmK@BTL)%E4'(H,d@I8adb2,RqNZR`L[1GSNX+LANQJBh16SCJX(j
+
+1H(Bl"3e53c&'3*56m"$C4ZeSm"%fJ,lkf!BQhm$CmkB1"HI@i4-UdX3lkrJa"YN
+
+`5c0&a9-GTP$q+2!1JKm@D-YU%MqD9TY&(0b)42-e)!51LNr3%TceD`r8r2VekeI
+
+AVk#S&1UCGBUk05MLP*PD0HLrXN#lmj!!2NH,2d*PPVb!'c8l`rF'8@fRP[%Y`a@
+
+,JX`dLk*`2r4k-9fSZ#CDG)5ELQLjXi@BIJ"m'lJH$*D+Q$h23jIDh`Q94,&6U*8
+
+FN[q0SLJ33+hdN!$m,k2UP0b3!1`5DQGpqNYZi4*Q,%q5$4U8fpbMH%Z+E([(YUr
+
+Y)LaBiMZ`')S+*'JNC"X2`6aLUkkB[N93%TdZ+L8"+B&Bp#e'jjEmZD,Sdmlk'!V
+
+I85%AB0`IQb520cU&-mQK(S$4"J8#1*-HkJ()U("Q-@R#CrpZ#5#Qm0N8c#5(((q
+
+MEiN$r-*aRq)aQ%f)E0EFh[!+'aaq3[rQ8@mZeQJ1""q"kl84kNpZk1pXfJ[Xc6E
+
+qKPHiGSjUcVLAR1Q-KfD8e2`0p'@Y%FD63G[+$B,SD*%&m%r!!ijD4+($p9HTGCd
+
+*b-H**j&VCS$Y!V[q4af-Y4A`K3eArXMDAGDjq"crQ*EN"[b6#A+(5k)4Lr'[M&'
+
+rS%!!a3m81#UM`LBcdZDflpRIhLPbTRXLqp"'fq)"2QV"mQ@p,(iaT3CHXX+@3-"
+
+,iN2kF!k"8NEY&B'[AYBkeelj3k%X))AB8#L,hhiE*5p(0!YC@c%Y2NL`%b4@BNT
+
+mb"*G1GC@%+-K646P@&X",%X6,6R1a&)KBKd`[-J1066HY#YJ**!!'r30Q5!fR(P
+
+#*Y%hc(@4(I@0XSI'CF%#X)3)8%3$(3[-$rmXFcDZee680r1Tbe-fQ-M"$p%!HBT
+
++JN0dZ"9Y"3+L%"qL`q9691+!f%Y5qM%jR)MP+ciU1S@KeKLFMSNT8Q!EJTd9qAT
+
+@d4VR1@k'A#eVF6m[UI'rZH+AGIDq6E6p8j`Y8ilFJ'db33Sj5m'b-EEp,XX@,2%
+
+$Yc'c12[9VpK0fqLp2-G`R%GEK"'DmR8i,8Q`,H35YNfmZ(B'QZV)C`'DbTY"E*R
+
+k6p)2Aa2A&f'cc#Gb!h$*"2RKE(54M)(VpdQc3)NCElf-QIf'ZjjPVqCjU`ZQbU+
+
+0"8'5%lT#VLa5kZVe"94Cah3*VZLhZDX'c%TfFjMGRLH66f5`Gf'Tc$"b!j6*"!R
+
+JE2@6M9@`Mj05J4)rL'#%+16bX[&lAc*C'H9N`UepejLpbV#Q#5&0k8K`L*+fiT*
+
+!!"(L3j5dI%T(%c+DC8L$9$J*llXS[(2G#N8#8K6mbR@SMr2aLKB%*95Gaq-Y+2!
+
+9pj5"Fm#NpReAE2TC8p!,9pHINq`%Ki4TUcd*"'JM2L4-#kI-pRQ-h5aHZZ3@Cr[
+
+H9kc'#RrH,2TYG0e"jAd!$AFiVcFUK$TUIlH+YZR[SZ`%Kq4R+dI*!eba+M`N2jI
+
+j0C*&P0h)JVfDjq))HP&f0e5LZ58jfC@#5(-X3&kiI"*Y0ik%PK@LlBJ&X#k2pL0
+
+(a(qYiKQRHb0-l!4*-YiJN39@-XdM!lI@#&6I3#VGBlN"8S@#I'Tk"'355$AA4AD
+
+%9-URYX4hUHQYrMZDfM),1KX&AUMlhKYGchDp32H,4c%UIj%CJ`ih83bF8Qdm&NK
+
+RS)'HQc5S,6m&pD"5dNJA228TF`d&PN)hb*M"UAF43L"`A0L'Hm2DKh-M05`@C$p
+
+1&UKl(K8[J['$kqL&U(&NV(*F6S-U'aQB9bjU#k$(!,!qMH"6cQX3Q%aY*dYSD0)
+
+Ek6VB@NKQ%)UFS2CLJbMQUe$8f"J%1U8Mi"i*X4XFikG`4qZf13A9ac!JGKC(f(1
+
+IfR*m5K[Rh%SVmTl5f,cLmVCJD1GmYPFkDVl-+Bp+$[RI4Yi8#(K8H-Mr&Npj0&I
+
+l*M`k+b#G-mXrH,3*p$*qNa*"DBjafldHD"S%"h`l"ElLFK+SDDF!B6Z1bDq`X(K
+
+ZBM'`bJH-UC4k'M#9jQajST&rN3"j'6KY$JCY"-ZUJ'rEXFBXd*X4"1G(@B*HB9(
+
+)B&`f$R-$G1dBp`MlZPI(Fm(i`SpBfcri!K-PKaKP)c!+!66eQRaNBNbd3YD%%QF
+
+TbTCB*!24FZ&-Y86(ZeVSkN'#I$R+R0Z2NK4mjJp50Bp0A!%PfN#NSJM0QG"*2cV
+
+Rl*KVNl`$+dbL&"182ZC%i1-cHBqMlabi*T(04)+S`YbPc0N%TFDiDKJqZF@cjf#
+
+*d8Lj*&plT9P&924Z[Ej!U54P+'VC'IDfkEUAFI!6*XV-4&KC%2##ZP!j#ije8X4
+
+#*EJ4YM(Xk&E3BVjcckq$-A6XfJ$9V`qq!H$"C3VqHM+9+-iE-2rYG01LiE-JedH
+
+0jJ0LijTk@0QVh+XpV(h8GPjb+#JJ'G#e8!+-BK0CEMHh&*b8GaYl,IYX,Z)"3l&
+
+)MX0h-fS9KZE"LHVbQdijFp$h0RHhYQ-IR(9IabIHF(0jGiY+Kq'cAfA"F%'YA9-
+
++9@4@k80V"5Qfe8[6`DhPjG13!bAJ9Xr$(rla8KEkLmI"8YYErLmdJR4lf1Gbbh[
+
+UVp%f(EcYZeYTrM00a@mpPVRGf(P#5lhIHPMIF[i2!*!%$4&eFf9bE@&ZG@&XAcF
+
+ZD(4YE'`!N!fdF3#3$`S!j`!+9pd!!-%A!D!!`&4&@&49EB%f!3#hK,4kYi5dJ`#
+
+3"3)Ra3#3"M(K!!!A"!#3"J%r"NijH6a""X"H0cNHE4mpVqqk,YV+eS@XHG*D0e[
+
+IpKSqGTX@B@3I`1Uj2X#bQUi-S+IQ3RiKk%FV8&e0f"FMLmGDML`QiDlaf#E,Nq1
+
+4`BlF*XH-(*jXTjXmRL!$[p"0ET'fN!#9fm,-5GFY2UfMh#MCV000RhH4Bi56KDb
+
+G9lFZR*iG@D@AK#i%rHJ&ZUlVXqZk0D9Y9TjTHI[e&X*fHKhNN!$IbVC!j"KKUZH
+
+&eD$kPGpTejcUMjTH`lrUZ@b5cL,@'jbh@`e@1UT8RYe[9#T0[mRSS24"qIL%qCV
+
+(L8bPLRP8UEMG%ThreK&VD-&6%6)9XepQdI+3!*dqB1cd'#GZ,PNUEZ5TZGb9mTF
+
+2f0&4IQMb6-Xd&6(1Z-lDZ&-lBJd9*kaUIla-2rik%$SZ"j-D1e"DML8ZR[)XR5K
+
+pcf(EIlrK1Q,R3ZXPBp8TI[ce5!XadP,%B9*@HPalGGcYL)rB13mQ-al(V+U'pUG
+
+IchJk%ILM-beRX6bD4Z93[$kj'BF-*adcKC0k5GRTF"QRq"rMjb$rpfEV'%mkc-D
+
+*Z9H@MFFLSIA+@+TBGEdjjh0*c$*pk0DEq(1MjEIGfVREIq+fh5[@pKjlCqbCehp
+
+bfDXhA0DTGqZ2hBlEpDX9He6L9$ZZAfIGHXGp9!T&%QJjTpY2XBEApA(5Ij6feq%
+
+M80lM-l&F+"dQGjISL84P1K"(kA)ZYMGTU5#EL6KpFea,*UQ@`qc0m1j'@,qG0fI
+
+G&,(32&9kHp$JLF+"5E9LYbUTRRY0$'kTqrK4UF61(cHmYYGr92VaKINhaAchelM
+
+!cir0[bR@ER@Ij$rckprP[brLpd9m[T6rrX'&1BlhLh0CGaZR*rG,Y@UP6XZmG0j
+
+f@F0YYh[eCV1&fema[h*[r0FEAVrTpKmGdf&VY5VHkGrKGMHlMdUG9V2CGXePqI-
+
+Yp`,VG3FArE$[AM`UCBR3H*%1HI5E,mXdp*qEUmq8DZcc+(h)D!#IiSf`0qAE@be
+
+XEi9P5MmIrh#Vp20iQ-aajMq(HZ@,NhbS)Q#`qEhqbeGcA1b6H4(!VLaZGZ@Df8$
+
+XLM,B&qP`d-9#i3m"X%m(+YMF#J!*[Ma)5VA9,`,JIPG1epHlqJ8HYj8i&$F&!,G
+
+U$Y20e*D'+J2JT2rmkJeiQaljY`d@%2QZe0M2bqbCdY0NcJ2"1McQBd&SK&2aY5%
+
+fD+N6RTeCXVKqCQ"ae6$0,Draj&F$chF"$NBDN5BUb2Mh'P[$44MLMKLP`*V`kiE
+
+A!l!m4B#&mJRVD4@)-01#0F9)aNC&i)"Y[VMK,qe,iRr&MckrYKh"Y9!!-jS"LLf
+
+86pP6VL8I4J89)jUR%9fP0GSA1Pe#-FRXHkBKTR-9S,93IV"pN!"@Y3KP!&9)5Fa
+
+SJ@BdYjh4Ec-"J8K)$'Mf&c5JqHf!9Z*N,S*LL@GScXaSB6XMSP924F8"!`U)mfj
+
+PbbL"@U*5XYVh'Qjcd(GCdleSG9Yqbi-5kEV*KheffAU13r"F$V89F)K@d&Ek#!4
+
+C4a*S+h0&$0V+D+L+B,#mQ3B39iD%*r6%P4N59mD+"Bl&jkIUbQb"JlS##$K3a4&
+
+dH!A8eD*GD4G)6!63$hArS%"L(Z$Rl5b+#LCQFUe8#p4mLFf9#K5riHfC(DqEEQ"
+
+fFbi)!V6&L&8*Xh0GY#1cAkdCbpcEq1'8cZGfG"l)j%$MreE111p@m"0q6S1)*mN
+
+MFF0RmdM8UR-YDVl(jK!#ZR`Qf*Q-jePkN[mp`mVPmQHIIAC!)Qd(aX4YT@Ih-"N
+
+HkeGkQkljGNUH![bp@M-Mf&)cM,P9CL55lh0ihG+f'LZDAc-)a$aPh&cCY3IMDG-
+
+HF1$'4'`q64BbLYK3-*T0Le8EAY1YV@EeEXAmE,j#1KAEE*BP+BX9EVF$ZfCV55I
+
+h,lUjG0)*aa%i29c9aTbae6fhH"5Y,qUV%+rC6J1FZ34IC$HE$B9QDZ6NTf2!Z2+
+
+1@SM`%$IDLV*3aQ0-SN[Ar"LhcA"D-3Mh3KD(*`&2a*'-%f'mTrG&'5X@9ZQ61**
+
+6`F5eJ2(6(*Qq5[PP'JclHm#RG+Z-5G`SA!aRBGX1m0JNaUkBNY13!0Hf,h(E!jd
+
+Cj6f0)'Fdc1REp1da@p!fBD,Tbdc"pGTJX"2LjY`H2adc2)a`4dbeIFfM$,j0$,a
+
+pJhFK5eEZ6ScS[Ja&IPh1j,*ci'-"Ii'&iakqHeiVl9k@+G$d,pP-`)*lQ9kCX!)
+
+E%jN`c*mAiieYrVC[q#ck@A`TE5*arMLN@*2,6Rf8BRNiM1*&X$F2Ve8Epcr8E#V
+
+KTH89$LDBChE)IQUf"GI(!VAe6mmf3rRV+rXcmYCH`AZ3!"lM0ZP-iITVlUm'VEl
+
+EA)d-rkjIH"lq@221[HI2(A2Sc1Y$ErI)$V$8hKjkjqbmrTcpiZF[m-['9e!,EV-
+
+[I[C2,qca9pI(Am'&ehelEYraHqIXFEhIDerP"mjZ$i6rB'R3pPG[A[Jhpai"PXf
+
+$9@cD26`[6GD"QH'M3HG`G5qm1RJ*2kVrQViU(YEqFp&Q%BH*ZSHh'8CU[L4'#qh
+
+A,`6mBAkeddZNf&iZII&G6lc-*-`liB!'(U01-(%-2IKEd0&*5Srpm#KH"5q%QAl
+
+SKHDpIRJ4R,(i"$eG*e!0hPJ38R&IImri5[Z,A!deEX[r#+h@,mHHm6lMX3f$6`5
+
+Xfp`)@`"1&l5'&acBR-mA$b0I@ZFCRm'2Vq#GcG$*I8e3a'8#L(Cj!`qI[Pq(hdr
+
+JUKmmjEDEppA8-0Kf6MiPC"NBCYPm(NN-&lJ"QX'S6jI#VK9'!lc!D#UZi8d#mZ!
+
+D"mT*4(j-4THbdlH8aRRl#Nm&eXDI$NimH`fG[)V0,dY%k)bdQM%5(3NZ#!+iPak
+
+bK"$QI"Caa6F"M``Q`$Eh-0[Hk[&-Q@XhlmGpGBcE)MeJ"hBmS%+@FThD@GJl'6q
+
+pf0S9JjGR1m[A*Z0,l-X2`l**hH&Xb),p0$!+Id0bKScBch&'l$GPi"krYKMVFlp
+
+6CqHXm@+P2*aFS0L3!-m[XB3&e3F,-EhEL,4dXjGZE#ZqAB5AXrr2paM$+`fHCR[
+
+[M-qD,-&Hj2Z'pc"1b48Ck"95J@-ZRKT6-2"INi36B+50dc89c!CMaAr$B@q+J%-
+
+Z$-S@cZiUjeX5F+c!-B%))+hX+Y`6qP0jBCa#E1+'epK8,+K,)%&+bY@a*T5L,)@
+
+kCh%JA#@ZVCd9TDE)0N(liIZ)DCLH42l#4*fpmMd(-Jd*6"#!ba935bFqCD@48U5
+
+3!(6Lqk`dj2pUIj[p#lKJ(G3"Z8cGr2!mjpSNaCAbG@fX6jMj``R3Q)ScV[lK$#K
+
++MFflMMdC(r1ZlpHq*X9k!`%fr+`pQm1lcBILNL@F$ZPpLS"UTML@1#hKKaBVLEq
+
+56Edk5pqYcSh[&ZFp+fTpZ6GhQXapXF8JNl"U(Fb%KEk3!'f[MmYJTR@8Vhb#Eqp
+
+#3ZiqY'VaN8bJlAD-G[9('5bG4pRZL!4(R,c-Jh%0YF&(i`S#fqN%SRaZL)!*'@B
+
+%I`#QkP,fI3@eM@U()G!"%j!!erH))MUa3mk#VP&a)0Zi5)[iT*k-PJbcaGJ!!Ec
+
+a,MCP0j[P0rGAk9KPE-%4*Y&d3MND!9$`@`5X-#+H3D5+QTp2#NmBaQD#YdY&'@e
+
+4$QIKl,$XH,dJk&"0CR38[i"D6ldG8`L2QM+JR%rCr3pXHU,6aShK'`#)$&4GD&(
+
+'I)LIbT9%[RLf+H&9fZ8hG)(ba6$92XKL*Xk(C3KH%Di9HEe(Uc,bKJ"T@e$aJcm
+
+%N!#4"K1Z3Cf8KX(3b*9+MBEQ$qq[9XmZEZTIr1Z2[cc&-K@Q%AS3k+[SHb%bXr4
+
+d5T!!`#Nfi*%*mkkQF4LR-YSF4M6'SK4SR+JBca!2TINLGE[0l5lN&N#cpbr[EB,
+
+i3MIB"-f%,`MFG(#Y#Q1ES"[8Dk[Jr%HVS20+B4HNbIZP(G"L"ZK8+a([5+B6Dm4
+
+kl1r$2F2RlLZhRicNUHZi*"*GIkHA)i9PG%&HbfA1VPKXD3jbj(k%U"GRpVf)l"6
+
+4)@KAGah8(%+j$JTqK"!"ZjSEcqMMifI4j1(Q#2rDY9ml0&G*hL(*BdHTDB)2iI"
+
+VVT5""#Pr0MFXH`'3!"Y3l2SI$6aX,MQ9hf2RGSKQ0`A%Q)$TZ3GP"@UcDFqm@A#
+
+ma$&'jGI'Pb6Cd%b09K8l,2Hif&e'-K)(BAX3MdV@4q9b%MiX&+Zi-$h%2lUU('i
+
+GKK&HQE##-$UQfGamYUQ`l1')[YM%PDGU%BI(1G$TK#X-2)raF&i%3k$C,'VY"(B
+
+r)rJPLfF!aV-9)kG"ld!F*iG-B5-mZRam1M2MiLahp$#1)09ACT'NqV6HVm(mYhc
+
+4UeESYk&#Z0%IZ&[0B"eU5fDMNY,ImmH9,AmJV-SQBYL8rV[b`&6(#pd"Q+iEG!F
+
+,%K!%H)jd#Q8F6f#8IUBk,0`&&)"9FXhKUGb!BH8'H"[*#52q-8iJm"lpk,4BJEJ
+
+JlN1FGZRMqTEMM9'GRKhfFbHY*`e[jRT#lNFI@UqLIG"31$qEU-f[#*pZCmICJ9#
+
+M(T'%#Yr5$Y%6S`JMXR("*Zeq8rr49'Sk*BlHQQ@2H%+'"9`4YUmXSf[$-S`RUB2
+
+YcrRBB4lhlF&aabLm[J-Njm32"Zhf"jS%I1N'QM5p@4"!&h+&K$&0aK#aQLJA2a*
+
+PC*Dr85A0GX&Fl+4d5TH2Z0)"Vd!e#*)&UTN,#pIUA3Y5bNqYi8#f)1bld'Z+m(+
+
+cj4mkN!!JEhReTN&4*cdIeN"f0[d@0eZQd!Iq@!`5R!RG'6p!b+f8dG,`e1ILF$e
+
+3m4Sbj*&fMl[RZ6I*$KL0)"q!C@"CFmF&L6cFf+p'36k1KPp&0IEVaA"5pfd`j"j
+
+Y3j6Ur6V3mHf$N!$*J,i$"'1+b)JLKUc2I*`LpmDGLY6ZSh6I0iE4QilPa0dq4RM
+
+1pGe8cCq@[ch"dCKPdM`eTP26mSejZYJ0AGPRq5rr)`1I*5HQK`6LRjqe!**&R,%
+
+PpMdpE4'Rl5JHr[Qd3@ELQ4VpRYHl`UJ[*!6FA$G)##BGk`(5cUPB%dX))I1c9K#
+
+ZI933!V(35'EH0CM'RZX)K4RZ)a2DjQT"Z%EZHHZEr9X%jNLQ+kc-iE+&$3i`RH3
+
+a@EYmRAXAI%K1Z@Ih*$Y(febZ"d0`6M$%qe)K%+#[!-#TKPL4&pFT"f$X$+3Ih)A
+
+X#lV'%8aTHHL3!%Vrj*!!5Sa$+TJ+l9V3X%02%dJ6F82cl#GNd0L(kr@RlX20G$,
+
+(R'"1F$[$cA4mHpjDk3TPG0riKM$Y)@LI@cep"8miEd4TJ"E`24-XZ"H2M"L2B!1
+
+DaPFp-X'YH[jZeD-Nlc*'[&e-JU%2i%#Qf!Y6D%b$#(lch,CSbBCjh-c4C'R60m*
+
+`bX3dPbCD50k$PQ!f!r2RHa5#K4Hi3Gpbl`DKHQ%ZiCVK#PbAM*8kp5HZ2E04-NX
+
+h4HMZAe`Z&35BfCk+%j!!qVR(cdqEKD#`rd%NQB-FXDqX4M*5-I"%V4K9iQ9U2jP
+
+@0bJDCPm3")U'94*4$ST'M$9@'DRp-5jCk+AfRhAi')Ifca`A0i6fN`&Se4B5h8,
+
+32-D&#KNa$k$%$T+0K%#T$!%`%$aV0K!aXE8d-$!l55U%pP2"Z)"f['qb!GTG!aF
+
+%d"kVqHJ4D,GedBl3$KZ#KCDFH4"Q6Mjk%%aYK9TZ"J5Aa,qa(b`K1r3Z*E8A@Bk
+
+QiPITV8%',Q,@5qGmZ(NiUZ&BHf-4NN12)HkCba@H!d0Tr$6[hL`&6@Gpc3Ha2EQ
+
+[!%@fFYYp'9D+B,ji1L-324%Z'#NK4$1mMTNrATLVQ#H2FN&r*1MbV`XB"$[T"KL
+
+-pDr8!0qB+8`@`k!RRCh"i-a('$5MM304!$-8YrMC355(QZqD',bUEl&Zb#Y$-Le
+
+)-qD5p800i$f#8`c"BF%U0+)SD'e,l6e'bB9UF+IUPb#J$FP3$8kSBT5C&@U1UTV
+
+![HBSSj@)8-QVAbhpI[V9*eG@2eK9PPGXY@55VVfeLF-8mbCL9iX3c@K*fLF*(NX
+
+ESDc3Vr+B`j!!T!%L#hF)c-BFIR`3@k*%UfJKlVNfjiX9G,qY$%dQZLPXV,dX0YQ
+
+-4D'5e&K'me%`lj%0#p*`LDYe!TE!IBh%M%0mqJk'Q)r-*Q&HiR$4*Yc'CE*jmjV
+
+,b*k%Ep'h"6Q1j3&&N!#mAD5Bah#@T8rA0pBk+#$Cd5a6TJ'#PGqaK9H#D*RJ0B!
+
+QLP-j,k,dY#L2brN+%B)[V4)eKe&Hm$!MNYVmXC3T'6[5dIB1hf3ieJkU-l1T$I@
+
+&@d8j&%0c+9%3!+Km+)DQ8-RkX@@PDS,f(9drm+e)!+R5dc4L0(&V`jXfciC0DV,
+
+VHlk$SajCQ)FQTM1$$b1Fa5RpJphklNl%#QJ"l,0k2aI)TaakKERX+3M)5$ld#K1
+
+Rb1F&0FDipkCD''NP&e1[fcTC+(cN[lp+mLfpIU8Id62i$54$[C!!f(A'Jre-8Nb
+
+-SQT&Dc`A(L*T[)%E#6Xa+[0DCaTA*I2l4@qKcFYmKEK[l#PQ'IYjRC`3#GmF$LN
+
+lb6r"YkE,qKl33"1+*q(Xh5(+L[#8(rYrf1)b@1I,68+6**XMklU`BTBAGV'UAID
+
+0$fKUpH@)2&&+FpAYqkJ+[(,TAqi49$PdeR"p8"#3!*Tkk+b4'rp&4V!0ql+U[@#
+
+ENqDhGDC0[lq'TjMe#pEjq8@@Dc0Dm#@e)6XeR-G6%F,ENZLUK-R&#k!aE@&6cmq
+
+N&qIN(SM(fdI"EHrl-X"8#kplVhlTBPeZ)m3Z40L9CAJBAdGl5Za"p[GiY&Q`$XF
+
+#-418frTGi`H8[@#JlCB%0$Eb(RRl#Z*RY16R[Aci'`CRJA6&(S@"%Ak$FiEeHPM
+
+bL2l32CXEjqPje&#a1@N*,KZ$l1SL8lBY"EVLQ1KkT$)%ePRQ,9kGBF`HGkh+(+$
+
+YkFDkqNC)lLYm3k&%8%YJLFfV-i8a6Ahc)%cRGEMA$eR23#cf!Dhq,TRH(T!!"M"
+
+BG[EME2'VhAP$S9a5$qXepFeH2&&bjbK4PbFE!cYT`aeN`MV'ElGN8DeG&+8+6DV
+
++jmH5JMZl0d%Yj$F"GIGT(%)L#JMKZhF,*JD#pFEbDSQ4A)9!J(Cc,%1Q&*S+8a@
+
+kd)+83im3em)&J4DN(RU%+!-Yb0C&1fT"X#-BHGCfK%Q4%+-9&"d$)jRD`A[q)cb
+
+TK5imT5)3r0+KqN'mB%a4'JJ(HH'KC0d8`DE3,cad(XJd%ZC[IQ!`jG#q`j9c3B!
+
+UkU&pKcTP-"2EDJDE91m`@RR)B$qi`FBBP80Ab%IrNXe-",E!M8',`9#+0Lm'93R
+
+E)aaEFcXIJ%`jG*P`q8S2F!X&5'%-C-&X8#2CT-Y%)*E[S+b3!-6@b-S5)KKbpKS
+
+fEDS!c6`Ze@Qm[p9&bimFdYUC,j9@RUHd46M4$E3P#RS@j!!KLLd)E[%EXGE99kd
+
++rQT")+d8T2@bGe*C1R![$)pXd9#J8YP!X+MQ&aS"mV3%jXcZIalRjC@KI1A&LU)
+
+*-3KRP8)f),S6220FK(lI)PC`'9E%VHlcMSeU$Y&bmHESXX*kJU`i`JL&A6kQ!Lc
+
+`CpTKH30$[fKHI"PH@PZ[%5@LT0*[#2#@@3pQh*9'hAIh'3E%"YN!M5kQ#3*S9!m
+
+jrlNC6f9N'-6!"k'AB6$,RLNp0G@h@(hIDq2@53CAAfArD`9h0b%JYmiV#IXbA[$
+
+FfUmNTS)R*F36+)QC)2+"e+dN"X*L2#4b)6#4CpEc0DrK0JGpGfqeiBZR'cKH&&3
+
+di'-T5MMHeN8lFMc&hjb0D`9i8Y5Ji"BhJHHrrmVqrQG&f2+$h*dB#Z10NRaL1[B
+
+Sd'fPJj*5[rXHS*4$131A,!8"CkL(FJEk&+#LM&F$e+5K3F%Y%D$#lk)!S"k81Ck
+
+QXT5EQ8345"5&p!3dGYeR'ThRN!"P9"cpT"FQZp4j,9KfCED@cHMaZTA0X2fK-0`
+
+`raUQ(#Y*&fG`9Vr9'd+qImY`bU%'J-Y9JJ"ee%-0!(A+F0(d8"2FT!9!C"ERYI#
+
+V*+#hFBI$"L)r3eG9-a)1UBXG$Mp8#dUdE15Y#'2EiXpLp0YSdJ+KY-ET`3Lb2*!
+
+!D,44eG+`bSUE!Yd#3R10IJ[$UQM5-i*6$URqVTF*!Y"4$kRqkT6Jc#*@ipXNeGp
+
+Sa@Q02dN#F)[C[irb2Tl"NR,)RhGK5K!`KAc)ReHRPJ@cVpDde-qFrh[L4l3Um$G
+
+*`%[rYXSYrlIAB8UARB0GrRZ)IlFD5&qN[Vqc+LV,eN6GRk31ACYPM!Ea)"dNjYP
+
+-Uk)8)CI$kP!83AS04h2FQ2Pkq!jCmDDri35Q`L19*%[i@2aH(5Zb1hilF2ZYli-
+
+lP%2JY'YDJS#4e%2JG1jL&KR"(E1VC4&k`4ecfq#1hfB#GBR28cZU!'UaN!$DJ8H
+
+0IBrMmSQ)i!FNfhQjC"daN9R%*U&q2-`A3Q)L3+FX&I0jSF4)qJ%`3Z)aQ38*@RD
+
+CN!!B#+M%G#%P-C'3!2bL"9Sq#)#C@2L,Q*J)a*qZJYY@+U64a'SK&p+8FXMKGe&
+
+F%%K6kL'(AaP)8lBZfP'DXJVl2Y2DQ6#*iSr-mM+%G'Sp%02dTjJX#a3N,%SU(N`
+
+dfZYiiCT36jj#[i&pJZmI9+T[E&SEHQVTX,B0MYLR-Mch8DIH%NB4R'#hG4X[+qF
+
+J*r3`YN*8##MYS*!!BCjJ#X1$DhXM2pQ0!5`&lqqj66R%pE[iV`I`KP+C-1Df!#0
+
+MDTZNp6Z[['5f#YN#0FA15BqJ+INM0'hdBFHkJ#BbKQk!*P'3!,T209mB3j-EGmE
+
+30(XAZqqmSJ1J+FcT065Yqfk[pcde+BIBH4H&"!%eUBIBHA9+6F&F@'26T'&q)"B
+
+G`%ea8Ur"+Br)[E"A%69d!cZ*JUK[fL+&-6Z9kDaMI&)"8Gq[,&D&NbTd1H'2PF9
+
+TR'Y)PV*ZU39,p80T'6MVR8cL"804&#BE$VN0Z6&j"1**bFDHH*P*UPBj4,hBBpa
+
+VQc40Zh'-!cHf'jh((Mj$1Z832Zl#P5"!1[832Uj1NFk4D8acNpaaSjAr,iAKe`a
+
+r8`XMcr@MXG)$+U'+VLMmZ+ZfIHKYQ*IbD[AHCVlJYiS*"h9*(k$JHC,L-rj5$X(
+
+K,Ri*![j5$m(KmP45FpIq'-!QXH(1+cU!`!i@DSYJD)GE-aMNYk+-lR-@be[N9P@
+
+RRXF4m+rRMGC)-ES"bd4"'ML6K-5a,2D(8QZc"3#"i*B#'jUpr`crTRrAMq#553[
+
+[Rm0jU!*"l3'N-AZQ#,cYj6)C+dZMXhZ`,S4d'ESNX'lE@86%KQ[qGaEE-YDXlPT
+
+Be@`H2@8DVEfb5)c&Z"I8TaaLc9df%`68TajLcI@T'2HBqIiCDakD$%EJ1b1qkK3
+
+YJ(XRkTh3!$l[,*r@EGrcH!Z[GCLRZ`FT%Z2%$EaVBEbB"fhD*qDd5kc6$PI2X"V
+
+`IeLkqh5+RZNfjl)%P+h!T9eB'mq#mQQ(XCGlEMFX4S2cX$cMI$HF@(6DBBeh+dq
+
+EV(,PX!a@$T595G#jrLrpjKqR([HVc4HD+EEKQBp&1B6#Zl3T#0"CPi6#LdM"P!R
+
+#06P2@SJEVAaR#!IcHSh2,'rDZ5de2N940B#D8DF"Vah"!ff%j'"drY`$Q'pP@Z-
+
+Bp1J%jQ)r`Lf!BRZJY'bL&[B'Zra'cV,CjLD*A3CMA6D#L)efH)N8hl!Ca)%%Ci0
+
+"JFQm!qE1q)rlLL`ei$aF`JD21drAc@6FM*l06!cGMJUQ0$)J)kD15iH4!6&a4m0
+
+kG['jl,JFrC[$B2!PD,@,NH-kZ*KrZfI+ML,$ImZbF(8+r1`l@H+BKPCf%JF4lVU
+
+GPhp'b9!%2'%)IFF1+qlDrCTDFd`Eb)c9UQlP[Dq'Y`*Z!qrEQ$(qYZAbb`E*J*0
+
+0*$Dh(3PUJXA0YQ[DdSG$L['PX"2&SdjZPZ3hSfB4jTCIkK*M,9[SiSLMEKEVUQ2
+
+%Rqd'`P8f(6hKd9KTA',h%"NYh0*0BAY3mhb[-C3qEY$HmrK0JIDQP['+dpXB(FE
+
+C4Y8,,(dMI`rfF%j[)A("rZYL13%K`aA4-(XDr5rmL8(!kf&Xeajk#2-*MJ8*3$X
+
+44!08+2TM4ib9lQA2EIJYVlYA"*4$&VI,hS*!%C!!$eRFFDJLSbE'A!&I6BcjE8f
+
+-PGM'8P2$($A&Q(f9cDd9QQ)3![C9F83EJcNN#ZiV3,k3!"J)C-Yp05q3!#Me-%G
+
+Y,'"Z%",cB"(A[AP8*$%3pV$BL`XNaJ%E(2G$5-b$"5cf#L6D9ma"!m!iY%,jLP9
+
+[,r8SKrKqGalS!8@%A#9+T"jE&qdSpG!hZII1q6'*lPree[l!jel)SPhr+MTFdGm
+
+"iCjq"-Mce-alJYX+r4B'L*+BN!!4BKT*@E!LqHq#&5'1e5d$lN%FTJ%qY+[IVVI
+
+ElkQ,N!#L'kK,&16r8cb5aY4&F$N$VlP2VIY*+fC52h1Traq(9A&2IIJkMAL#eAY
+
+cU-@eT#ESQ0`'8@"d5'2m'l9#!f2dUYIEqk,*0,)"dPc%%J53!#BIkJE)8dMEIfH
+
+,RV[V'N"@d3+)9XYL1E99ZGR$$J)9Y1'4-@JVdVar`,E#Qj8H%SApEdfc'[)q[S8
+
+mjG#,`$8c33"jmU%AJ6b&2"$6'2,H0#)!UfJ&b-Z0$bmBcc+qG3,HpI[ZRFYhYfl
+
+46MRd)h#P64#JRAcS4k"2pEZGEpRZ65pldSSHJ,[FL2C9aRB`Xlh3mLa+A#H!AY8
+
+MmPc$Zq!mjG$$`-8f3F"jmU'(J6k9m'V+He2#i(Ch&r-p6RdYc[Kr2ZF(ZPl-FLe
+
+%[HRN(Nj%YJjL)QSYVjmfMNPPkEhL"1BE0M9pT1pGB*pbk(RJ3T`J`$ljd20!S-T
+
+l0IG01Kk3!&@q5[XZcY!%h&FTIB5r4qKAaBkV"HkVf[$@e(G4mi#-T"ZJ6a682'!
+
+XP$5'[VVM`GbRMJHhr3+!`#,3fi&-d8YJ"fh&(J"GY'$M8(kBI#Ikq9%$d`HZq`'
+
+bQ`GYDaVQF)b1a3bmM"i5QT&aM5aUrZF6J9m%VI5D)9h@fK*J%eRq(((9Uc"mVjV
+
+[HjRK4#Xm!(r*U[Ir($P$bAJFdJZ8,,#caXKRhN$Pd(R!C6j"`*(bSI1!2ZA)Ff[
+
+JT2)!@8821!1(9$R*pYJS$!MhH"lB8@69-`GUcE[eJ#L(S(SAlJ3"aUQ(S2SmNP9
+
+C"08[EZjdEC9R*I5#kKHf3I@F-%[,R+A8ca8iT056!0!6)K2&%F(9mmLL`d#84&$
+
+p2(+6fVT))UKq(KM5eN853IAc3#hXKj))UTr(Xim&%4,MJ*'(qb%NjJ&C!`,0FB(
+
+%2+"XF"jDiXQ(,X'4d2-J*'B#8$0P68JXlJ*)c5FL*9Ch!E6Q3p%5blX!CR04e"3
+
+8%6%5B*Xek"B5!`'f(8)Md4)M!EVC3+6%fS,H@1"C5-`$p(C)jLdP-4(!@kJiV54
+
+Q3T@Y*3XNfQ%XNXL'H@c,U%$LX9dNRDe9+)'5Lb5dYBSNK,p&%YTD44,#hb,TE+e
+
+##H&[NC5f9S'%m,F)910q#)Pj!08be-B5%[-JU'%H5Q*"3'NlLSI&%I1i"NUl*k)
+
+##BUp"N+l'a3U0)TClYF[hEdY6cQ8LR&VVaj`Vp%$)dTXHEBZfY'@"hHeZGeUHr@
+
+N9ic4bL#TBlRrpq51C4S6'PAfP1d@8p5Ij+pPVCJLNm0UaE!bm4HeBYc![BYi$e6
+
+)+bk#4R$(TZAETR$-MV"-*'lP2ZpibE6kY0k[pGfQHp'V9ZJh90',4qaNJ[RpJIZ
+
+r[ZdV*pZ(!Ab*,REYNBhQ'*QfX@22#Xm3S(3$%BU#`M-d)@TM)M`[2$0r9hM'D19
+
+[d&HRD*bJhM"r+AR,LJpM0Ta5G8,eQHAqEI8CdSeX`$@AfJ3"VUQ(kM2k&0I1Umr
+
+-he@I)DXS!9KlU0c95DP1C#)JqUK+ma!#e@D@qlI9CXJmZJ(L4%'e'3CE5'1)1km
+
+f-hpAEBDXmK2%&5'R6a3eDa,Qr2C6CjRAk2C9E4RJl,2D-U3FhB"YSU#f$10rY,(
+
+fGPjEC[kZYSc4LJ43hrV@YpF+h%pYC&iMh00#-U$C#i*6$S9NA#)6"!5R(JV*#&6
+
+KVHDh55%CN!$+9i9NbM28J"ZkV#)cmM[A[#F)QXQmjVpRj@6)a4F)U"c+bEMF*JJ
+
+38$f8Ne'S)Pl0J*0b-Q59*q9NbM-%35*'98ZQ!X&N&AaaV[aTJD)bVc(`D9HC'i2
+
+qe4i#P80C'9IX"!%%USHb-ZS8!KQ4A%2JT+d-@HAld+-Ej12`0+%raelNS*IX%Sk
+
+@D-$dK+#Lp5jeMQ'b85F1SLcFb)0q2[B&CkE$TE0+a@KXhGJ0,14DLjB!2r(fEK0
+
+Ti(l@C@CdTf4pT46VX1)fDE6(6'*,1J%RKZ6a0Tk$LBc(X,'J(3dRY%r01[!CKQ&
+
+YL9-8UQ&')Vp),qY2rbpDkI1XMQqYi9qGfDr3reIlbp2E)DR$ULNr2kkIG[N)UTq
+
+(55Q(mMBZJ`S#VPB2j@d8+PIr)8jUdYmQ%%[kPhrrE(PcST8DfHZ%i#KHPVpFi*P
+
+b+'AM!U8J`$0G8XT'4q)C"F1DckSH0Yrb'EQNEi3F-GM*1Dp9dM-`%`4ZaRj2&"P
+
+JC[bNqm(*SK`#[9dEd`2N`kSN`KMT[1j,$A564'rRPHrG,*rBA*,[r#a`,&D*h4X
+
+66RB6Vp-A(#p`YQ4X)5%fEJUQ4CVT'*mG+(BYa3)RPhk@GKS8'SKe[LGIQbP)3VS
+
+"l84"-MF,jmKMY(YNTeLi5qI1U88$91)ldH3#1VVpldHc"+$&VB*IdYGcX`4T46E
+
+JPfYJJJ#rY((5GP'NUqD[5Gjf`5e2$"-26[V*-K(`6"'B*UU@CM,!0Z%3DI9T[U3
+
+lj4$"l6+B)+!lE4c"(3V*e@Jh5H%1a$*`6[K([rV"6Z&4'TRT&C0+fd9i@fS8#Fi
+
+"X6"80#J[Sl*6$0*"iYAc*X+q!`ef8@mM"`VA3`J(F2&f(#fh0l@3!)iB*4@2"NS
+
+LUH-GFmbZ`MHN64!LeM)hC4c*G))f`dLUDYR@`KKPJdD#qb4m0d'QL66IcJI5jpi
+
+#mmX8lJN(b,(+@-#"SHpj6AHpCRHqIZ&m[BSTq43EEepc&dl25HNr9LSQpZC(MDK
+
+cSipZV"I-U4cb`ehl%`6-UBhc`ke0B8fFNra`SjA[RASIF83*RPVVYJ&3("KJc4+
+
+Pd,BJif0imV*96P1bQ)KBA!X0GV24PJe!2"cU[TS5Apk9ei53!,aK-dLa2Xk#hTN
+
+T1h3`K[5rlV+1qQ4)UZSaEq$h"MjelAibMbimJ(BpimJXNH2F(CKI,qrdG*M3F$k
+
+U2h(TAXREHr9R`h[PL)dM-0Sfb,Lm9p8!2&c1DRarSkN@M((e'%p@P[kaVhIr0#L
+
+UVKNm9f"R)&cZmZQ(X-C"HI#a'qG2i+`FBYYG9K8%i+b0BpY$-p)DR5I4lB&B[SI
+
+R$IM1@IiEfUc$XS2c!+BI+BaIqeU83lbjUi'#!*@dFEajD'aESp)Ni6`3b`#9r#-
+
+ei@[a(G!G[TDiCNpm,H8jIr'eV2[Z,A)UKc"eep%%!A*Uic"epNfZHA-5TNj@N35
+
+Q&SjVhlTDIVmaGS65c#b3!2R3`G,Q`35rCUR1V'YM4mBi`91ULL-h98LZ%&`L"*Q
+
+hF@&meLE5E0q))-0A(RYe5id9@h"*6Af#B-JpT*ANB$Q(85D"eF4Z#8$Ne`GBdNk
+
+-YfTXIZQE91)XFiZ,K4MJV(F[kjeHlEI*K)F%S,qS9X`('0!@*m*YXNJ&X1IN"qp
+
+C0-rSr(L*,5f3!#63BJ)Bc1Z#CrZq(h2fB++)E1I4U$Hle$B8cEhm,PCJ"SB0QmY
+
+MfmN,VP81BHBZHJS#VYA'BHEHl,`QfdQ@ZI1+"2#F4*EpNqQ%eelpXqY%135,ZeJ
+
+R#&"*'`H,amVj05a0JX8MX`a`+AbP*S`RB3edKr-Nhl3ReT2q3AraRL`h@hKd[J*
+
+2j4"rlQUD(Z#caB,M2Z-YQEk$cMGeaX%U`cEMllrqICU1Z%4r[SV+A4QYA#@"jVS
+
+VM,-V(fPSGqjE34A`6SbHiZL8%h`BbFl+!YH(TBkdCh0P)L1h*3`EZ+6Y"+m![Z-
+
+hM6b%"+cAFdEm@Y%9l4$`(#Lb*Dbea'[fm1E@FTcMZ0h2@ikhifZT96c$p(-k[Za
+
+JPJ6)PSTrNU))13U9%b92$bp`1NjQ-&`E6r)[kTVkK3lh!kr!bBS8Pc"ELSfGEIY
+
+6A!!$CN%ZSM!#,rHba"k*3I2[$eVJbG,&%aa!0X3G3I2MN[PQ0+a$"ekAPVdX,m4
+
+Dk2h*FGYf95K(Ujcl[*9A`S-!P)l"lLaTUNEIl$L%BEDeaN##q1"qQG#Mb12[h4&
+
+d0*("K'3'Yb*ee@DQa3K+c-ELj)Fehc4@[qA9Qef[GGPUAq8lH644d"AbK"c+)CD
+
+Zhd8DccEH!pZ('0S60f,$@aPjq2`%9e,er*JC+5P4J53,,,9*YF-51i!p#E2*2k6
+
+J%H6UD$)UE96d5bAjfCFHdUV8Bm3eA'V"`Kb#3Zc%dD!5qcVLFPYFQqj*I&NbI04
+
+0XD(e'Q&A(cjmZ-*1K"[B6$EF6Pi&h[I(R`eJ$@k19YUqBD%MI%YU1*lfX#`BLZd
+
+hl9lfj)q@#CGSd90J,a)0Dm@8PQm#-DF(!*-i0KIhKbj-h63Gk%9fJrL-mYA%KM5
+
+cL0iE[$UHZa5qhXGZG(%2$JkEH&p5UbGM#,aDTPGY+a+210B8XT6h5KXBi[l4I*i
+
++aBlLBD`N&M*QahjM%+2#`KhKe[bK5f!!J+F+&+qM'a3S8G$5B,(BZ+9"")qa#VA
+
+iU8*p&#ei3E,b5k9T2H8k&dU-552&lmLTTFA3iS`ZYbCiH0ZF30*V1Qp)&-KAU#l
+
+f46BA!FNHZ@B8UhS-""@c5A`TU,K'"85QkX'ji"Eji*Y4SK`YCQ)f&(TcIqj#Bqe
+
+LJ12jF*L)PaP4HXA"*V&"1R(H04Y&6a`CdE!5N!$kD*d,4DDaYI'bQ0N#40f-S)a
+
+d8@'05Y%HV-e,65-"@6@eP&eC-d8bicJArlY6)l3dY+fK"*H*D(4ST-3HJ$T+,0#
+
++),T%@F#eMbJb`9,5a2V%Dr&)cYH-(8''#6Z%@@!R+PQSj0q[+iU3!"9P!rbk88)
+
+3`+mflXM3$[qMRXMLTcVkT"@V*U)(ZSNB(qU%)QI`b&fd%#HLk!EQ%JA0&4D,MCX
+
+V`'CGPa"Ir&3H(kbL$)LVk*6j!h24(N(al[X@Pf0'qrL@dC4$d`0AX!3"SfRMTJI
+
+Y%-,pQ0(H&-8(UbJ$4L2Y5!8m!e'ChI9cpHc@,CSTKbi",R3*!M66aPd#)*rYI-Y
+
+QEdVJNeDNJB"QcBZ9!Td0#JVA`YN&R#Q(pJ+ZF!N#102'l3@JQp9SpUDErI[GAFZ
+
+bF6IliSbIqTAPBTSBD&Ffi,Hd)+"F'CReJZ'83ad!Pm)%!F0TicS!&0KUL*[8!5#
+
+VT22S6a#ARb%#)'keE4$1Eb3B#!lBYBq)L-ImaZ5*#hj6$V(hVTB*!Rl6aV(h'38
+
+KM[PY%RT29[PlN!!4"R)@LFRX#HXEb4bLFF9JblMVUKKj4SK`(RB0$Z%jRUV*bH#
+
+bbbmcLG!q*JNGU#ea[CifmS&XNDk[*ql9+UC8&*V%[ajbJK$%92cZ3B!p"b2UQTr
+
++Xc14I[2*[X,ib`q,Hfe&P1eBR)3)SkIV9L(P-de31I3$F291%$#P11i(!"3k&`A
+
+IP!-JV96"c$PL+J!IhL2`r+,50M[%p$'cbXVc!2hq`'+k2TZra(Jp4e)r+mlcFE)
+
+qNqJZN!"0156VZf#R"mMQ@V&aXMi6Q@YLQb6V@fVQYc,JQNN1,61RN4M+X2H"K1F
+
+*q&keb0KYer5($`(Jc-81@HYPhRLIlL`aG-1cBCU@KffTiBKc4q!f1K@KBK'Z!1f
+
+a2$p%S"BYLCS4aC`HB`i%3%qeMfbAf$D5$'NhA2@%F-[bVrSDKAcaGErHp`H[)mB
+
+Yp*5(*mJSl@8)'V9idR)el'BHj*ic*FlL6VHa5eA)H9%6kA9@r+1FGBZ"6rm@!em
+
+@F2,D6*-Bq2Km9%'Tcf,JAqDAci'X-JVE29beY2`TrAc%q"qklAeY'b+aEQ"m8C!
+
+!AAkYf$Llr*k)hP@fZADA@dj@-DK,$ZLR9k,V+V%MH3eai,[)fJC#jCMI%b2JBaG
+
+afMleP01J!cCfCN"i1'i+J(5-2JNSldH#-`fG%LfG408Ym)PGc9Xkf*k3!*A[FaR
+
+4i(+N(a@&1!AUQajY3BA`$&22LIS!4L#$q%FP)@!HfTZDJ(3E"5N@@R-Ch4j%DL[
+
+hB%INerLL0B4YUT!!D!f4Sqc0aKjeP805Z3[2)S!)4r5QL9(hE[!1G#Faj6FEcX(
+
+M"[M[f0$1+p"G3lmdBl#lA!qTc0m@8-QBV3(3a@@"SJ#S`pM`@&HK(Ja1CBQ'*&4
+
+'f`BkX[8I5LP[84p!)#-'FF5"GLcf`")1Zhb*NS(QCE8L8ACQa$eJCDLK!+%DaCc
+
+48FUZ`bZLe)de@#(SGJRc$Q53!%983m(dfN0Eam(E9)'`VHI$al!RV61b2MQf@pd
+
+'GTi"8k+Dc6&D#cDT[F*f4VCG%#cU-iI4h`2mEJS4Bb#f!a5TdcSa*"4XD1NCXD1
+
+2%1YQUV(eIKLZ$Qp0Q-j3KJU(G`*K-(`EI8$Y@hU'+FcZaAN,`j-GbB)*T!1)p-@
+
+&3Mr$$[@b#Ad1mEYVkjQ#EXe2h`TJ[Hf3!,mA%hE9`L3#`1kJkdp6Mc06*QDDCY&
+
+G@K(JdL'0&8SqA3&BMjh9B-Xj%2GTA1#EF,2K2kZcJmIjp0qcKk5qcV$$[eFkRCM
+
+Y@NV9$"CS&a'iI'&[`1+S9)'k2-&"`BAr4B)6GNPfB,ZXF*!![6aBLmfG,)rT9dB
+
+&V!AH!!S"D!(%NH)@EFMeCAfI12@'Jc(Ebi,949e&IbL`03rfZ*&V(qABB'Xi4KH
+
+-,D29jc88l@%d5Cm[-i9rE0id("pTa&0D8V`@K`Qi!@IH93S1MUl+aT-b[G8RXJ0
+
+V!DajE461AKXdI!UV(XX3JN&`N!!$E#j81&Sf!IF0H()3Er-"RY2`E,i&X5laL6l
+
+"hNj!4f#q!!(`9G%DZe)l"eGdf9GFA`XiB9C313d'QTAD,m%e$AEkJ,(6iq-6qM#
+
+aRDEbDGe,drPCTE*B,-V!,lLq3"DIPE0B(NfMFLJUrkD'U2#*HElY`j3e3p0-m,D
+
+[e0,9clb9[I8BjJf[H89$rG$[Y'[12`#3"!d4GA0PFQeKER9KE&mi,QKdE@aX!*!
+
+05L8!N!m+*B`!#SS#!!$"&`(8!%"849K89@f"0J%!Yi5dJlH%Y)N!N!8"Fed!N!B
+
+aY3!!1`F!N!BAc3j10hNm33B!T*cFPKk8RV9HA@Fd1EfppXCei64Ydj0eZ9")#6p
+
+mEadH-RaR'hmG-cRj6G#29U#qljZ8HGcY"IFcq5r'"iZekcIFC1&d&`#"P&$9LC1
+
+eaidRHq[HfRrCVQme2MQSUE0"0e)(6cIhGVI8h0,bmXFV@m[,fieY4BA8rG+pXQS
+
+NILm0"f(Fmk2PjGVq(09I@P*E5H!2JVD+HqSIKp(&SUVF9kTb$a@E&fS3[!JVh&b
+
+jp-jpYE5NLhSI*q&J%243BeAYSDFJ8PYa,e9VmV&%(hr4#T*HUA@fVZEM*$`0dEM
+
+bKi1c1&R`92lhSCp%DM0)NJZPeTlKibmk54"dNM$SYG05R*bZMmV9)lqM0[h@@GI
+
+[pG4Dh*42[qMkJl-!2m*RT@%[A(S@PGV"Z,,IDbY8ZP!a+L9TbA[LKld"rQ2m0-K
+
+rlH`)ie(0i@R+IDA$dp-JTI9+e5"@DhCc[TL,am[dZ&EGaXr'EQ1[YVjC1rb`YPI
+
+l41h92kL[UUhkIZ1`[UH1'SG2YaT2$fY(DmY5b22@RY3D9E9II9*lIkiGT+dNl&2
+
+[FebdYYpiIqk2cG!"b,Yi&PbFadNlrBm@NL#0KdNV@"TFp)1mMhEF'RD$hQ"5VKf
+
+QJb4X$LH$1if`H0'NeJG",dMm3CcNKFE(#3@pY@AC*fpYXlk0X9Ah2hKrENjYIV"
+
+9hkXI[MrheJlrcDP'l9GSi+elr$HRpREh2p5IkI9(q[Y$I(q)jeApI@H(be&rCLj
+
+(YDh+Hj@jpEAP+UeaGA1[TVCUHhX(eHhYAA4IjUp("p8YqETC2pbZ(EjrMiSGVUr
+
+K3Rq%lMlBIhrZbHlfpPk0QkA2Hl@GaYck-4TpI&MEHApZQ!B*EY(3McjpYd4$IiY
+
+E,mqYUjp(JdH+"R##qm$Aj(pep6$[DS@k1[ec9qVR[@ED4mhr0p3bYiqK1J)'Dr[
+
+kY"(hdGM6[JYJ9pkc6DfX[+0ha@@`,dk(3VF,K4m1J(dDa+fX+d"()-Y"1VGZ[MJ
+
+!qLYAXS9p!+5`ffX(,a`!AIR036DeDM-H!Z#SMG%0@+BM[mb`J-"HH9dp,"&3(L4
+
+aT)i'bE!e'!)eS5EH-V3'9JVEUkZ#+eCA'53H-+,CUfppq-ZRp8B0X)&aKX%5)iK
+
+aEeeCD+&('!@G!8#0rYUS(`#Z[!%!$d[!,M)TQLJ2&%fYbqQ3!&rQd9HGFJRD!`I
+
+!@&BU2*D+DJ6GIJ65BURTTi$ZZ`1#KJ#4lS!jkB9G@mjh6QqK`AdD#a[JprK3(Hh
+
+q%pi"$8c!)@EQ9J#(a4B$PcS*`#(ZThX"(&i0e88`@1V-$B!1*aI,SBF1+i31,HJ
+
+L6&Lja)3V15EFM`I"UJTl#J5MkX44&*q([919mi(T)XK*YEC9hkkYKch3E3#FH"D
+
+"H9YEjPHUK3,032Q+(RPaJLr%!jD8fTA'J,3!X&!R$4Ej!6eABDVkIN,`#a4Uc-8
+
+aJU5,A[!cm-)"P8L'26651"YL%'Z0a[VKdhee#)VZBb!G6,kaVY"`mA"[pkJK$mr
+
+$++*@Rh%$00qNLc'JU63+6mm'dBAU*d%(d+mC"HLkj@2j&0VfD3p5USG4YV"-B@q
+
+)-8@JHGAmH6Ji8lpC`"cpJ4If@Y%3fm*eZX43kJ+2&SJ1jkd+%`b@DTH`V`IV6JB
+
+XMSZ%0A*'B2$+H`pi(#!YKK&ZL$0L+)$G5G#(N!$")6'4GqI@k3iq$a+(a%JHmT+
+
+diQ(2*E%QlmfYKaeh",p%h(lB#D)dF%K-"2cq!,)5Km3m`*'%(F")Pm5'J'%*1ah
+
+I,E'd3'cT3)J24m3m!0P!2r5(,SNc!Vc@mJHY-iI%3!$A"QG*I1k3!"J)`"S8FE%
+
+l!MfZh!05ka2&iSiB5"PJcE!l$SQC!+kGqk&$iXk@!GHD&bk*p3"@+hApLfEJ!S!
+
+M6kUIE0EU6aX(6iN[G!Q-#0MY0"l%$SQ9!ABEq+F1LA%!Z)@R24"E$SQ*!,PpjT!
+
+!'!C3'eJrKm3iJ0RDFHRm,)cZpR@lA[VimHjHc6'Jj3*mF`!-aM%`%'!h,![)dI"
+
+1m)CPHEVIf0ec$-`'1-i"-*Jr+pbJb,K9Y`%ZZ4[8E8BPl"S3J3&[Z8V8EE3ZENG
+
+efmSkUF&3!9pQUVElKG*CBj0"J[pYMA,@P[%*Re8VmY2drH#&$`P`X,i'#4KVabE
+
+L0R42,kAU-R@b2##G'(jV$4F*[XLh!bUaZ+re`e#D(3l*[`2#Vlhi0#kk5Sh1,Zb
+
+"Z@+pfb02D#`mlI"6HX5+-eL+N!!VL!THB!TTL[)X1&1kALiP1`S#P3EFSEVDXa@
+
+lCHrLf-+UT8hU1eScY8K3l+Z#`"*88-4q+*LhAD!mq(JmhF1Hra(V!4Uj'l!HDii
+
+G"*!!b&Jh1)ZaRQK%Ea$IJrp%I)*DrS,l-"F"H+qah5-$daM"GIZ$#`&f$2,L&0,
+
+QSR)rLG[$9U"kX5kl5*!!8Y68kTcU38S-VA)hk$C&[Sa'0A"8R56ZdUEd5,DGJF[
+
+*8!&,RkC"CaLaTMRX2FHY3%%$BCILC-P#@)DIT"kA$XKFC$@(IIqfD&(FJQNA'6Y
+
+KNlfZrb``(r-&2dlMEM!i`dK12#`*VdaIVGVAN!$#RGL*XjjD[hfcV4P1V4h8UPq
+
+$9,a`0i"8TJiG"&J1qJDA-8KPci!EK2V1(8*P[+*k`qlIU-Q#MIbGJiG--@L6HD-
+
+83Y[Qm5$X"JAKD0(56[f`pP(Ym"C5!B'i'b!9-h31!Z3"PCE$'&*Tdj-E62AZ6jK
+
++)aC(!+#DQc3a0d*4V,96PYDLMX0fi%eS3kUVjY0Kkdcj+9a4k`G%r68H(pBrAS$
+
+2l$-B#m'1L1L[l`8I0ci58([m8,Q`-lM@IG31YZV3+Gl#2k!PG`2mBql,3B#5S)T
+
+e'c0UE$"eJrmHrLHRaTMP$H!c!Ji#E)6V"Zal$Qd%65B@X9lBJk0d0bE&hM"*b2Y
+
+0FhE!F"TT,RVT`%p)Db&+M6+CiR9)kM%V4F)1(pMX16cb62G,5q8Vk,@lF`ZkJ&(
+
+F$D#,f6(R!$CKDbf(-HL#k1SDEVhh%pcDh9'$cSaXQhreV$ap8&RiJCB$U-V-0N8
+
+$G`C+MGimpk0KS*!!1+$'jU-pKIkYKJpd@0aV3j!!KiTIYl&6h6[+qfM(S1Kk#)-
+
+!K&I#C$[U&!#Z"r8HRT!!abQeX%L9!1e552SJIp[GUA%2k%Ym9TX8(L'!j@KT!41
+
+!UDMS"XQlbqM#Li(J16T@!@a'`C,5A"P&dQ"bX,L$0eL22M4pc6!+)8&NAp)!i4K
+
+#P!A"5U,bP,!X#G8AU90dM8RPHiKH2Hi90UI3)G)mbE-9eqmX5!-iXL*k36iIS6U
+
+elfR4"VQIHRk(6'#cTG2Mc"AZ0(M83KP)"S8E$8Y"#DXLAm1HPrjkL2j9-r&Eci*
+
+"ZX#Vb&2$PZSF%PJX$"2%kAQ!8QEGD&3`T[86NNTkN!#dT2iTTT6+aTVGTa&!CBQ
+
+N%`2HfMiShB69R6i*09Y"'i*)eBcEi(M4ZDIlXAf)9$0I#BKRq(0@(+@J`)bIb6S
+
+&5!MKX98!&SUfi"V`d`cr#2SC)lXE3$pcSJi#d-rT&"c'S*q-DPm"Ib#*[`0r`L[
+
+IS2brqDamMrJp2Bm*kTHUhk&q8Zm33KlhNJ0pDN9H@rfrEN"JI+(lrj26LfRK#KB
+
+fDNG[j$H-S9`0S&"cYJi#8-LSc&N-#XNVr!B5PRq#K)49!!KrP&S'BRP#)NMm&bS
+
+9MSp35hD(Q")b*icBcd9f0m%#))U24qNq%X!a8f&hKfZ-6&Yd,S5Jdi%SNTK3(K,
+
+i16%Y'F5XembCZjjZAk)TS02f)d#h#q!ik(r52M!PFB'cTMdc,Qd5NrSJ"E1ff1d
+
+P(6EYLlq+2FFqjUp%Qc+D@mcSA!LN-k2m(!5BdFN35-HT5L45RS-Ee$L+S2-A)T'
+
+Ke&4#K'F1!!fraC4'Bm0+cL4SNC!!8i"JeL(i31K+''jDV4""4kl$k1l-IdiC3N!
+
+3rKENHHN3"1B9c-X"'L2'@i6QF%L&SrNh"`&#FjLN`R&%)M6QK@iJ@T%)jpmKfSa
+
+BdaKY*#9d+'!dBGcF"#$Y"biZ6ehbLSJMVjGEN!$RF$"(ei5CJ`$NZBh0dFRTk3E
+
+KhEQM%eEj!EV9%,T3M&1d,khf5lN@8QL*GFNcUD8Sp&-!heR+9)KF8&5CG(,"#p,
+
+QkEUXN!$,qMNRbEGSUNXH36jDK6lUCb@-8PrVkVk5e8NQN!"EG1C`X$2AC*Q$!*f
+
+jMHh-0HkiaQGhAZD#9`62H,!3P!m1"-"'j"SLN!"P43V2,*k"pT,PEpC0pJE4S6'
+
+J12"fJZ+8fSjlEl0S$U8k*,9$ZNiC0&M"))+dh+3Z`a#Y%dNq$XD)dNpU5l281T1
+
+4[d4r@pA'eZ0Em1G`X!RA**U$!2bjM@h#1DV@$IDlF`PRY++3!1r)0C!!Ai5%&a1
+
+6M(U49)5MlihkYFP%b%k$CGV)e$F1TM#U4kC1E(4E0%,i,(J4Y)CNim4q96$5`Q`
+
+$Z$k4(RYUdq(08kE!*A33F$*GU$[BmbS*dlJRhP#LmjJ!fqQZS'fSaE[)PdZ0K`M
+
+be`la+ES`'3C4J$VPiV*bHA!665@+jL4cJX+iH-"DK5*BQ*-i#4)fSR#GPM#$SYU
+
+1K*GDd$398,A$`rUKRLQ*cX8JM(C8[#NClp,SJp3$!$Clpcp'Eie1FK%m$8h0FEZ
+
+mR%L!3ZrkD)QG,+djQ6(4SLXLP#dhM6@0FD#H)m3[Mpk6MCNbX')i*Th`IJf4b4!
+
+9Ue%+1l,,#AVA%q50`!BQ)CdhYIC4pA!GXkYZ)G89IH-G3U+)1%%*H(-0HlMC6([
+
+!VSd%rQ,*C8FKPqZb$9S8[HR8-RC0@lZJ26JeBbHTLGPCa$CJac&#*IjRGSYikBS
+
+eSQ@jk)G`(SJZD#kk2dap0JcYeJB2-RdJZ0AMJqV6SpT*LBccrPfb914&ZiN'8bj
+
+RpHk$!%%pq0Tp@I#,q'H[0&&mH'kC&iG$QJ"0N!!l#*JAYh'D!$Da[f&HlV)%#%`
+
+'52IQl5H"E$mDPcl4,!!ah%aj''9U#k3-J6pI%`j#K`#P#KIL`frd#pjq4Xh)-qj
+
+$l-jNBYV$aZ2@f,J5bEZ0dBk`p)@[c6@-Yd+UD9XbXF%jK@"#)EL&jYCVS1QI)a#
+
+"d2(5#*RhS)+`"38q4*C6c8P!L,B(Vfa+4SCmTcTh+[G+T)0KF#LrU9d*U`HJ9XR
+
+S&@A%CKY1TLM0q9B0I@%S*X0IM16&k!5jC+![!dMAq$fp!$Y#q6c39$,X`p$Yc+I
+
+ZJ22R%A'Z5e"HVAfiZFdj!b&Z@pTD@kE221bR[I!&B(2ar*Ijmqhk%5I"d3AiB#b
+
+"U!YMT(Hb9CliV39,iV#F@CLFk`9L8ZI9pTa+2'iLFkE-8ZD3!-F2L5fMr4I#"K3
+
+%+I'`!N52'%C)Rd6TGd&I!M3`6('mX)4Yd"bm9$K0jdc"C(6)2&r!JR(6J4ML&[Z
+
+XDlYI#,8,'ePcG2`SaR,Qh#%kY-`C5*Y*88q+b[U`)N8Ibc($PG0J['F$l+)26Nk
+
+r,hP#@K@6Nh0(6P,#E-V-dDbqFiCZST!!XNe8`dSakf-VkPjjq*R6VRfHVBdpFB!
+
+9l#GScT-XB5'1*$k1b#i*1%[BDUNGG$LqHRBS[H)FM2B!P8e8,IJ*8rrBr#i6Vd6
+
+mjQPbX9PfIFFSJUk4))Rm'Q@%eJ4H,+S8'@ZjMr'q'hE9f#(M+5@X`(R!hZYV2P0
+
+iCSI`k*1M4Zf*A-+Fle94!)Z!9&XLMcP06&,cj1!LjI+$jmDK`D6'Y"jI16*+jKF
+
+&5fV+YB-)N3,3"a1j1,0d%c4*H3'''`cNZFe(VfVEZih[I3Mb)16[JR5MpPjcEVb
+
+#YjbE`b(#KGBP13Ji0lGaK!["M0HFfeeq#p'Nr%Yi#fdEVehfak+,rdkmQk8`'(a
+
+DRN-F"GMj2Q0$Z&5'4K&U'JeJ8dB%!lV,iRjTD+r(BF`QZCZaqfmR(K,%CUr,9@U
+
+C#+965N`G)c2-'$iEKZT#f%&Z4cTrc9l`Fkp(h0"[KEeC981c#$%fi4-p$N(0p-0
+
+ee5Z3!-QkP&Z3!1P`L+bK*4MZ!C!!53&M(FBJNpRl'j!!HCGDJp(+hq5c0G)#X+a
+
+K*MA3#*!!"Nr-XqJ*0#&Ff"*c0!a3e8D&)15[TV5PkL4p1X'`hq-lRZU%#piMQf2
+
+25#Fj#mE%@)Hb9[M2r6#L!S8Qd`a8PQ@5BP*@Nl5m1!r)YR&")TBk)UhZ`m[6k&K
+
+%9ca6[AiTj!aH!$9V[FDP5N%3U+K-Q!LRJfG(DYZLLE)D8qrS0#GI*X&mT569dPk
+
+VcY5D5b4pNMk[pYi5!CJ)%p3k)3Gf@m,NQ'&1k(QKNR%XJ2PECd(VQI5FNK"@(+U
+
+ceD9cJA)F0k2J!2)&Zp5Yr(S)lFBI*5[rE5TC'6rrq!q5&Iip9Dc`5X#5--D0S0j
+
+af2LLI-GbIkP&I@AVSHr2'aU#8,ZlJBC`&)6SS%c4,Q0R$adJr*U*+0r&k,#B@I`
+
+PYZVk`lajZ%#IIT5E@XQSL5`e3kX[C8rDV-NB-!L93$5#PU)amQd'T`4qGCi11cU
+
+,Q3hNTaJGKAP#)F!V3QhD6NeN+Ue*PHj**XB%[C6-%9rY45[SdeJ)b8T*1`c$f46
+
+D4b2*)XX6D1&m5TA*JaS*Y[,81dDl5Y`i"UR6r`$D#QS(T"Cm2c)f)GVm#TCqA0f
+
+pG4SN"1GXJ+6#B6X))+RE1-)(jFHrJD0h%6i)Uc$$q!2Jh!iLr`)5Tf(#FDA%hBN
+
+3%9'"fK-*,4P6T(IZ$FkBY88L$TElDN-JU)P*V-r'4mdK&1l%SeVUNT08!BERkQV
+
+Y"X#Z8B"kV-q&eF(BfiN%`6c9HkmdmBMQ&)+N&8fhG+dkd6"P['H3!#%'J%d&D8T
+
+Vac'`,P(HjLGImiiZKm`G`K!k#%#HfcKc4r2L#mVa,R!(N!$+Mh6L#k,0Q+mMbi4
+
+(QMX%QcFa60#5NbY`e(j5r@5cpLI6E3)9lJD8j#M)[9&f'qIH+(ApLfE`PI9fq5l
+
+m4LR(,L*Tq"RqjY0qd!V"2B'-kYl+-f$[q8b(!p5Y"#aL%)%"DrNQiF#XICD0r!d
+
+C*lTAhC!!A!TB,!(TC`INP%Q6QCPA@NfSGHM4jTm3TI)3+2#"d5,52lS,T(F`mCV
+
+3`#`N1'NRi$`N!PD2+P&h9&`hHa%2SGSJ6qpR26Lb`Ek)#8%8)KN(*DA0TdcL@!T
+
+&RX8I)kc*LrG6'('J8P'rUYA1X#I+M109hTrd4&@mdEQ!ccPB[Db3!+i$&@IEmcE
+
+)TSSlQ@0U8FhjDUkTjPS,RUqDUS8#mXk@B3rA[%UcpHB`Q!d%,HP(B$6KENBk(Bc
+
+4jPFRGFcJE@"`XU-Ja8VJT`JJ'01L3LSVTZJYLNd#8V8C'2p@)j+K5S6Fd8&!LbD
+
+#RQ3)65NkQkmR-*eJhe6bqI*5-*i4K9@F"95F(#LdJaJPIFk-L!leZE)D)(+BbV,
+
+aNTD(lJ+R-c(lrPF68eLMbrVqXbRT1#$[E6jc'eVpYG,dJhUMIXYMZ"bLR3J[kb$
+
+J-Gc'd8j1Bb#QDrlL,YS*B49f&rq"p0f,Bp!9"2&Ki9lp`+SUVFXMfe"UKm8XCdm
+
+@c8%X()ab&R&2FTYi@b46JBiG%H&lJDBCpK)dlJBqe3CHCG+Ck!NH+[D+r!"&5[5
+
+lb&ASjKDZZ4bbRJK"l##!DflMV#IN1hZ0eZk#RK$Bq[83*U[YdVpKYZdLU+li%!P
+
+!be)SQ1#ee*T@Xc0Ek&(,!X#kI[*-cFmK@30DdGQSL3X6P)9ZdC%a3QViTb!ZJH0
+
+B6BP%KP51SCQCbPAmY3rfNBEk&Skj(0+A#-rP))"MEZ2d*H%TR+fqN!",hX8[%Eb
+
+5+Apq0Kq&b+B-$fG,1IeScc+"D8rCS%3#Idb#-QZeKPEP3#d2XX[61Kld`RBQ)Nh
+
+2V9Ck)9P-`lamC!p[J&86QCUA'&rH!M#A3`J,BDiF"!$-E4c#iV-El(8A`1)cGP&
+
+Qe29rB0I%*YU'c-P5"eVIc9B!e!3Y!e+k`QGN`!iQ%R8(r*Ji0fIK+kJbGe5NYeN
+
+lUMij@2pXmHfeCIkLjKRe,@3CG5cPCKSDUHeQZ@+d$&5V*'f+#ND,%&43$MDE)PP
+
+$`#6S4ck9%e-[Y(pPmDb0-2mbfPp-CJ[eB3VSRBdBXP$$+[l,L#G,5Z2eD,c#BCU
+
+!Z-EQNf[S-I1!,QIcaF4K(1B!d*GLR1IUXq01$-mCrh1eH0cXU'2@JjkFU&-r)8(
+
+TiLq+9bHhkQ#bbQ3akAp-aXlNQ0SfXk"[E`CJJIr1ee%4#%Ll'jJ"4d&8K,,E1#S
+
+#Zi#piJEZJL)!U9"VaU9JJ[9F!$`YBFmL,RUKSXQ5(BLQ-B&m(91QN!!('NmMj-&
+
+mH8%([c+4TV9*p-J2dhKkSkf4hr-MEljLkP0['9`fA@6d-&U"!6Im!SMDD!ILLiC
+
+*HEdKc8+RXKRSX#)fFe6KaIe)cDrmYPe[e1ki598d'9&8P0FGhSFR!N@c%q[1EdB
+
+lkPA''25p02bFl#*-U(HX(3JFc6H3!'!d")IH1c9c$rUJcMqh(YfU6%d[,C@pGY#
+
+(d`2YK)4YBEH+k4M4cfN5F04Xc!MM`m"BL8SI1E2+D,()@j@m3FM&!3CdZ6Ih**5
+
+m0ReiD8mqLZT&C`k9X!HJ4-4AG9+5b"#D6jXF((!Q`FI30,#B`EQHB@lbLPYTlH$
+
+92,fL3%"dKGM&28YI0ZD&mNY,25r!Jk*ejT'Y(bDf``9I(KND-3pNR215ZM!ci$#
+
+AKGdkDNV!XkaQ[Sl8V@`%&8(#&UbeVSqVF-S#iRPYI,[%G4F-NF@5CC1L4jFD(3L
+
+G&k`(`r)Ar5KXSHIXH+!*B`SVGf@kK66Vk*b-%0PlIZ!KC`bHa3L6JFDU,1kB0N9
+
+QK#M$JrE9jd%5,`f5X%mMAP4"kE3%[`UB&Y,%MhGaYqkTmSNUP8TXCEK38R@k@1H
+
+)JrCk**K&RT'01kG"YGRE9QqNE-[iDNrAP$NeQN2QrX9U[bb,'cFh5Q,cCd#h`8M
+
+a1&39pDiUPakFU'2a9eN06lb+Ye*ki$h`hX'[M6F`lMXrNFTl3-IBNYGH(p[epXH
+
+2Gi'2hp"L,SG`'b*YF3r3BK@hFEL0GPc51I4HF@0hq6DfkbA',*GkLdiQ-A3!-'5
+
+(PRH`K)fJDr(mRI4Zl(q"`$QrP5"a,k0k[#6SFPBDLQ#1pQUMRJSUMVmYHKc)i[I
+
+G6P%j`Hd-P90b35PI,-BX[@%Kc035&GKHDF$-p%-f44LXdIb)*Z+BdUmFiEr&N`5
+
+rh!eidP'3!&+LiMC1+I%PQ+cF4C33*&N!T%ZaK@-#56S+J#4X)d'S2`FMEV*H3S3
+
+IkILEZ[4,%1Rp&86bl(i()X&,2NAQLEeE(1PbL"BK$++$!%HkMD0&J*FF`V8[ZS'
+
+5Gr%L`%XbCR&Vm*)@63S5qa*1HJ)R*5L5Qi1Ar"1HG$QNQ"!'d8'!*ph'+5Dq!T0
+
+h15B%5ESjH%R(!*,m(6(TCN#4#0ejX&GYe*BfUdHeEEAEU"e@'l[er9YJkA))IL'
+
+8SS-!@$SIJPmB&hJA!E#NGA%$!-[hXQ9C-AE&EMaJ@9PA$dX9e8!@b`M)C+Q**"*
+
+Yq)AVP(k%0bZAH,-)JN'bM6`jX-PeDe6MC'[,EVNk3N-F`@5$Qp64lZ!%i,0aKm&
+
+BHK33j`[!XZ%UI"fe0JSrYbERBqF(XF!JNmHHPm0CIQA698LED466'QZNbI&XG93
+
+Y'iX)Xf+2-d4Q6cJ@h`8jMVApJ8rZ#44%Xaeb[#*Ske'd+pjDHRa&3++*Hd@A)NB
+
+311BFb95!bfYh5YX!*UiYZBcM`4)0cETc88f+N!$Rk5UrKMqmY4iH9A%&*-,B)!Z
+
+bFh6A9mFEkVqU$4J,905+ZUmHR(M(pp9lU[b1UZ$EVDq!53U['a6EK5I9!eQkh,D
+
+%pY!XK1NkpqQ3!$c1j+&K$"G'0QH)fS&YPIfhXmUFk3L)Ba$`BH!8(P4[Y%4N@mG
+
+f)q4iSA%mb!LcXCK6!%TN9"**aZK1FBbc,#8'qMLLe"jbrMLc)$I3*Dp9F81"H3K
+
+Q0B502i9`mLBcJMF%UJE4)jd5!,b#C!DKQI%TNd0VNa2$JQ5M6$fbZi43)YcISYU
+
+Sf"-R2LU5-3!F5Gac!Yb(H6i3mfa+Ja'Jfihb!Nk&Z,LTBm6Z8*f6"HrBEq0*J%F
+
+G1+YpI60NSqdjJ&m(&S(f4GbdaGG'PUM`dZ(E1VqKB#-%fJA@K5(fNQif+Qq8Q4c
+
+#D`b*!a,)5NNA3Z"),eNkYl"('-!f#BZ0PpX0Ca!1H!*l(PT2#Pd&Ua3q"K*DNRD
+
+&)Y"V`j&f#2""TSU5`*@YIG*VeaZHCi%dY#q,KJ&X3E0N%GN8#%bhL(%9,bXJQ[M
+
+f8)35[TNF@,S)E6mf@V)pmTQ%8iYp)+5Bhq*N,XECL)T+,T6-2j)EXUr0P@1-TFq
+
+DK@AD9)H@l0%dZ59QL!3USBkL"AFLZIjHRXH51X+fBG#"K)FN!b#X)N+Cm&ZF+XS
+
+rMZ5bDQ0P(1D5BYMP'c0hF&MISTl(Ti3-CSljUEjk+`5j'qYrYh,*6UUNBVNkS`3
+
+c@afkS43@T4d2X"PYYHUVeHE2(URR!1)iphLQ26!46Uq[%l[-T6KMdTeq+f8A1,R
+
+,EHB@$[c&([LA0fPdMdE)&H23Mb1rffclda[&J*pEiNJe1DE*iI(82@b-T33'NQ%
+
+BRA$'2mDKNhSDT%(%AQ'C9G6)VDNiHKSrBVSdb[540`Z8LFCEE'ePJed`EU"U$+f
+
+b**cMJd6RR`q5[UeKSQ0VkT&NPe&kiDZUEfIaI(,RTK[8#`)kS*3rQr2*#"P0@c)
+
+QCVJrXLLE"Q`Ilabc,[$GT[8b$U%Ej-3YRCaVQe)2UafH$Z1KjS3)jB#pXFdi"',
+
+UG2e"GaLTe@iCrbX)U62!Vd%#+%HKDZM0#FiJ5Ja#ZRQ8XKdPNa$ZVYVA9ML0Bk5
+
+I2p'I@R&dNPe52&5Vr)4k`kpZqEX$U9h9c$,U`jH"&iU,11&d+0J0MSXN(T86DH'
+
+E*NkNd19bfU$%9JV(maC5"*d*0K)L$(F,)BD3!"-e$c"N!E11SX!2YQXlZrXeA[C
+
+'l9H02-QiA)$U`F(H*jl!28jeD#+H&PQ,IBNp9-3R(i@)idYVMd0f%L3TZCcSI*8
+
+QB)1c1@)Ek3CE9JlEET+4H(b`#1rT@%L8j-FQ)HHK5ISj*K6&d)k!h@aQPLRU$a1
+
+k,m`dk5K+Y!Xk%0)1USc)VFc2&`YCj&h8c!ee5fPDrml!L0'AJ,[MiaFi95rqB39
+
+S%DcF3jZc+(pqV!mJPc&erRM@%,!)CX4!bSAF*L0KH4h&#SpaRbbXJ3V'ZbmPp'2
+
+ADSR2K-9rfNN[,fp1"GB5rFBibi5CJJKT)8mpAQEXVb%1TcQ,#*[6L(@)GI60VXF
+
+Qr5XfMmNcQp+5cK8YLB4@(iHYI@(6Ta18QSDFID$(ph+`eb1NVTr0%Vhm(4'4JI(
+
+U#`0ZD2$I`K8HYMJk2-L5p)k5qf(HXf%4`i0YCA+*U4)Gp9TI43ircrFC)34lTjT
+
+dC3k6X)NH(NlcHI!fX()!L%YaQ9,R`#8X,KdIZLfQ#S5"0kpaaMKm8lk*9eFc2jH
+
+If+a@+34NjiakL)54bh&l6,mkGJD(-kSJfN5[e1@B`&%K*a6L1HQ,eSTLXZjm&HG
+
+'S*5")e0a"U%4R#b*X3@#Q`kSTG0"'["aVrECmI1&YfPH0T&d4keYVN-X`f4XmZP
+
+4+m3FJNrT1(pk0,J!%[VdScJDGS029eE9TpAfFar2fk6C#9[TTj4lC*03VhVX*mm
+
+4Q[ri#G)Q(Y!*Ae6Ppakq#cTYFphiHY+!C$+Lh6$8K["r3UpRrTc#P2!8KB%X5,R
+
+0[IV@Klpm@QrJ`)KHcQML4P+jHq[+5Z5d%LF+1S-j+p2"LN*fpdE)aSH%*$QXb%%
+
+lqTkCUbD2[ZU45j!!N!$(#6!34$54f&d1LBP![SEP*8f(3f)N-%X(,q53!"J(6#S
+
+aMP*kYl03fj51DSk"ZF$XV"05q$*ha+DX`$B(r%hE)6%2f#l!MaFj&"`5%i%!YCA
+
+%DHU8Z'mVN!$E3Yh8mYXZL68"EY-M+99q'XT@p@LVZPfM*T`#d`')Bm)EY+FlB'1
+
+d4"5B1i2(fQ$!5-fCpVe9SlXFiVZ*aiD$3)hZI)M[jLj3SmZkZ"h9k,!j%CVefZE
+
+N,VmESj9F-d)m)+PIrKCIrh#SaD*cTUR&1DJK@*(!`9K%`'J8"#E3!T'3!-D)4)q
+
+JN!#k&kS[8a'%kk6LTIQ)PYrNG#Ge)#2)m`22a285$3j63bCYPQ6+!Y,!V-a()BR
+
+@5*iMiJ!%$*C8LN%N'IEMCcj&"CC0dfP82+E%apfEjR8*&Q'DCVk20IpZKSNSDGB
+
+JIZdp[l[r8Ih$Vjf#A3l4jF6La%'!k*`2dH8FTe"9aa@paUThkH8%Vdc!kKIKMHC
+
+I95[,c`V&R2M1UfZ+FD(3EC'-NV1Z#UkEjQh9NRi5NeUY2[NE"+6Qac3b'4im'R1
+
+,!6E+N!!i3DrLmp5U@ip[%C[,)GfFd)!1!Q$MI%JhjcK&E&TAGJ2ClZ,0DF3LCL)
+
+'LVf'E%@e-[pLS'B,rqLZ1,Br(2X"&*PQb"4AI)YS"i4Fp+Bq5@)4-c-QNXFXYQ6
+
+*-f+eC+C,AH[1E[2"`"APG(#'CZD*dY6Z+``8YED9h%a%MTm&,"llV)b5fieRCp2
+
+-jpJ4cJJ&3FQ6Z1JfB@ZaJILr$GS%i&#kD2b@`YhCS+6&K%K)5bm5MSFmFT8b%9m
+
+S$KE(!bi##-'V"@6V%K(!0*I#B'EF)!hfZ+SfeCED9V86+i`["XrYjCNZQ%6H-('
+
+pf*KK8qH4NHNDeie4L@2TX%6@5GVr!S2A*MZjE4508AG$5[PjDDQm)(,j8`VD*`1
+
+!@e)`D(fcG'pG,Pc+MNM'$54I#$LBr1mP'p[ii,dB"rhVPZ9(4SB-Hp(,,A[VHX-
+
+U9q3&P*@ha)A,)4@JN!$#$J*mlha)"HJi*5l)PHLDY,M,"FL1L`B3%ACk69M-+Z@
+
+XaBrj!BZ`@SZ`emQ6Bc%mZqKEAjB-c)'l%(bAF`X##3(rXM)521U+["")Q,%AM$H
+
+0jiGeYq$ZH!,SMBGF@J#pNV%PTT!!VFapC-&HMH1MGNJC86',9KZ@H6CDE9JV"ZD
+
+&AjAXJM3lRbjFEJ)HdC5Vm(%U5"A0[r!i#[i&if2(+,',&"XQf8#HS#"fQCrC!Xp
+
+1,8mjE[JGcGTS-!dr0M*a!MH$FM!h0"$kBq"99`ic`ebE!iQCqB13!$$$HH!`k-5
+
+p&K)#"V@2[KB5ZKb5(BU!a%&!JMJINKfk6pNGQ2RF%$ahi3l&j1FlMQG@l2r52+`
+
+@)5mc3@0I%51j4S@`),J3`bHBFSDJ',+Pf9&Y[e(Ehk,J$aCNAMTrkeN`LVjm2H%
+
+mFUV$H+p+HIE(4!j#%!lFC"+3!)3)mRI0T@3'm*U8dRk6'%Y1Am$T-+0ZY!&cRJD
+
+lF!Sh(TaBN!!"b5l&K*Pf!SkP%0eRQBH0I6,mM5$FPh%4hc29fe#Z#F2FH*Ti+rc
+
+2R*VX6"PfAV3BC#[iQU,CfGe$8SjELXEPN!!b8+3blJ%QJmc1A-E+BIBe[+&SlM)
+
+'#Pj"rTT[5"S(JY+'U3CYUBm-"SJK!82H5ED+H8QU)3&'mFR+FFe6MhUhkK@McH'
+
+i!,IUAU1e56cE@$%SNCr!X*Y&+6VA-mBa#P4M8ijU5f+ELC5Uj%Nqam)E3F$B!-j
+
+H3E31HeQhSL&F,8aB"dfe1!(FLI94QAXHR`F4-KJ%8G#(E'QJ[!#C52ij4iI$4[6
+
+XZK%T`p&rq`e*3Tb#Zi%NF44%Cb3(9UFa53,mmSSL@EP,cNKBa8&!N!"Nf48+[$p
+
+$aT,YH"VPf'GK#+A[+ISSf!VKAaDBe4#(Nib'd*`&J6-$GfI+'#d0"R+Nm4Jf!X"
+
+8'dXD,X05(*+$"D',db'Dc@FUL$F6P&#C'BIKmL-5$Q[E6lGZ*E'%[*d09))S)a`
+
+%9),c)6fPij4+N!#8"$GN`Pef5X%VhdTLIb36FN8R@5M2%$ej+lGD3`J+68+96*2
+
++L("NC$)55f5CkC'B41F%'ICB-NHP,K#JJp1C3#NUDGJaGH`,D!@B0jY+NYb*R6c
+
+RMTiqbE*!j6$b$-L6-T&ij*a5m#,c*KL4FHdFk6lN'4-H!SX,Jj34KB'Z*f(,#iJ
+
+U2)V*mU5eN`Ma"raVSaA"hKVT2jB'm4*ffl5'T#'S#p#,i%ff$VdR1BXCSQ`9V1X
+
+%2P0`&IaRYjLmLPB6jf2a*J0K)jIT3%EEB[+f)f*"-CA#,FB%dm'j#Ck(P**S&"H
+
+-mrM`*8*%HV3'JJLjN!!N"#,bed5ML@&YXHI0!-LGikC04F#5E4"(!bH%HD"C[*l
+
+,9&L,FLP`+'3IAXDq%RS+qp(bqq`l6XrCKCc&3dNc4#J&6Q8#*)$M4+-JmS*UbYS
+
+KRMebVFR'H"LGYTLP-$Q8jKhpb,A@%m9Sq0JJL4HPTf'T8AESX[KCfKJSfiVc*%4
+
+P5VLL"d5TBpMBPK,)b'!F!#Q8ANKf+L-m$cYXLiih2hrVRFSM[%4Z'*r#`c42[Se
+
+Mmcr()+SL$ChQD#,(d1fI[1Qd5MSN%Ya6e[j&[A5M&$+B-#d4KA6lPAM"Mmq!6Ap
+
+%Qcl0qm@"ah"*%)XQF!2XfI'Up(@L+KjZ1Cqd2Z,0mb2e'dmT"&#M0&rRd&44PKa
+
+e60F[k(&S)9e'HMPC1$%,UrIQ@#mZlV`X,Slhm3EbiKp[9*!!q8ChqHd'rd(DI$q
+
+60V1fHGKP@625kRmI)qD9#RVVX(jdp)d4)G&BlJCHcP'3!%+9iS-iM(NjNaAQKTQ
+
+l#k*U--[B(NB#U&ilePa@G!"ieZ6bjkP2c+8[(TR&N!!pS#JaE(hMe%*dJaEVM)1
+
+d5B#pD8`,55Gi&B`[Ddr(9d,)#TTBfJp!IS!-JVNIdeUFC`VFA6i3U`r4[Xe-M4J
+
+Gd-Z3!(1fFVVS%AGPI*j*H'3)bf,)NPJZQc9QBpG5l(&5MmNZHQ$5Pq8-$dD3!(N
+
+HJJ)d[&MKBB2)KFCqKINM'KXR,55G64S5p`3ll#DFF(JVLq`FCU+DL8!F$G*L853
+
+k`iK0241G!(Rpl*8mcQ)`jK%BbiUc5(*k[l,#TI+412#qDTC9Xk+D+kTjAlA+UP9
+
+4V4A9Z[p01%E+QiB9k'-"QQ%83ZU9*4H6$&IQ"JR('NJm49U2VD1p)f)R6"cbVCh
+
+bh#9Dk'#c'5hXe1X0i2CjXVQTVLpQbfk1QeJ1SE3F-C-,Ej85+GLYadT`Y%l*pLF
+
+(m(Y2Q1Y`6YG-L#6ZZ59#A!kTD89+j#!J3T`PU@PGN85)T)'ki8'+J,4ri8%%XB#
+
+[EJ00!HdDiL%Gq-Q!mIBAI-LdFVGI9ZPcB+eZ[i)2QK2jYSiibhfI51(hBUJmZq8
+
+md'T+k9Q*l$#`N93#P0Sf![e#HY-!-Gi@4J%@'0+DG+dLTCjk+Y-(5IfX"Q%AT)K
+
+4`QB$B8+$TN,3N`$QV!FGm4"4$de)ZVcF@!r-082DAH*qQ)Babd9D+SJ3J'3YDC1
+
+R1,@dM%pD+p&djBN&mj58V2UppXe*+ACU&J16*Ji,(Z3h1I2lUISm5'+b(+b2J,m
+
+PVl5!@@[*Fdf6a($JA*mmT8GN'F413)Jk#i&*eS,@5VhXJIFRflQ[K%i&dC@hKSD
+
+m0[)m*Pdj"a*&-JphE945@UB5S'XdJ5b#-A*QRSSNL')(RP*3c9(1L*RZV!LFLf9
+
+MZ4)[%b[mI5L,`*F`8I&b4DI0LEiTDfRHlJ1c6(*K@0)YhClMQpACk016,i*C(lN
+
+EBL8j2S[Qa0QVRYA1P'16-0hC4+dcNNR62BqcaQNTMGZhAPjGci`GNj!!&h,`D6K
+
+#+G%)+BPJRp)F%@bib@ml@K+k9@EPFJ%KXi&QVQ+0LHY%PfNq!d2)GD[[`84DQ"Q
+
+mAhS[H2UJX)M`*E@ERhR6rjMJdVC3BaF!F&V@#'#5d951mfJ$##'`2XhZJEPT9aG
+
+e'ZHhZ14I4[Te![#C"ZXq8-F4,G4ER2dBSBmeN8N"N!!RTBkeTj@-LXSe3IUG)(%
+
+XLG41F6a1TbA4h9X5m,MXP5[h[QBpMc5'e#dJ`kkQkc8Qd-'!4a'+#8P)8"fD3Cl
+
+6ekcP8RCC8"6cNjL@4M5QVd'@a46b4cSiD#kr%20b(JbXR%*j*Z[Ti#p`F"if'@8
+
+-Q#I1R-S$ASIQT4(K`&L8LEN`aN@DA4b"-DVLq-F6V`S,dkCQ*"UUjX'#aN#1'm`
+
+c"B2UMEaCf0r*+ZMMT4G#`aQb*'NE,pAF[IIPrGH'Yl+I'KYT`*pKCTN)c%J`NF[
+
+i`B`m4!XKl3S+b#"j,YSQEH2-U`lE$MFDMG4i3d41N@*hdJkN`QJ0)6!0H[eLSMq
+
+GC[6A#CXiA+e@U&ClTVejFdeAHk4D92r!bS1b+"M[5DjIV)AUKkHB,aCkP8$HV2V
+
+XI)ZSNQST1Z56Kpa%8@0$cINAd$GmUh1G829YUdMmNUah1B6+%hfKJi#XGaZ(bV2
+
+4(@rSqVYJH6E5i`MPJdrA0!*BGA`(VDkr9d#aZ35m4QaqA)15,Ar!E11)HQCR$f0
+
+C$kNl!fSGi`Y"KheUk3SXGmK'T*!!l"'VID@eDKa@pipf[REI*VMMEX"[,S'NG9H
+
+3!-40M0p-Z0%Eq(DAYFjJPNZj9GKVqZQc!1TcT`"H-m+0P`U2NHDR%&UmXFU@"PM
+
+#EC*#bZcbD*&kcPiAqLUG%GcNLX5ST*bTTTepX!*JapPDDZ`KL4&9Q3'P+9MDq(+
+
+84F!F!UR#fME"+aXa4#miTdh4djTTUkiY+AIhTabfYP%d#f&MIjXp%-@pUBmBcG-
+
+'G!KXddFq%KD9L#*$kR0iIl*(e!*bpPbDk9b%)ChA9d9V9*KG"MfITlZi8ZYil22
+
+%NJ)c3#YSRhNpS9m-3KBNPdIC01pNeI-lq4+Vr&p13EY0D@'9-!@kk0YDpfpF5)d
+
+4UTd@hY&ie,"r(D1'912A,)&lJ3p`$d"RK`V-G6EKiFe$J$P[EDHqhp"RF`Pf$($
+
+-aFN&+%DmEX#AFdL@6J2%l5I-5&+hYGhe)Pchf[)ZiTF#rZfZrq13!$5%PIY+9Hl
+
+G+p0$1,%49V261KX-qU[,bqH3!b8%jdIF1q#%Ck9K,eak&TAD`I*[iLC3)1Djh!K
+
+HK"@DTSIE[SZmTrScGF@h(X2FV'pr3N0ph(LbYqlpI`!0%A9cCA*YB@jeB@aI15j
+
+SG'eXE!#3$CXB!*!2#PIG!!UB1`!!`4F"e!$!9%9B9&9YJ6B"!,H%Y)UhK,50!*!
+
+'1c3!N!B0b3!!KG)!N!ECH!e1'ANm33B!ah0br$abDekIGCkYb9VcT1PQDfGl6GD
+
+l+D'%(ll6pGd8Rmm"HLTEbA(##IV4#Y4eAGrA`#k6h,CM4rKhC*2ENReNNprNq*(
+
+M"%mf*95!e,3$U"m1MVS0Urj'ZpFD2$Yaa$5G"H,NkAkhda,f4Uhf`Ge@VGBHY!9
+
+G*(DUQeYLS0``m9-r#YfJ9R11EETrBd1dP(46kBNS&,r,JN9&E1m)XEf*'iF,NFV
+
+RrMB2Ye9pCdGXE*K,V3q8RkBba"flSSZCC#"D8CL)ZMkXdZ&l)kR#kQMD%,FMj8p
+
+m$#lF,*e'kSiP9Rp2A"@)IDR83SMk"3lI'bXTamUASCG8)c9TA&hA#pbaf(G(djN
+
+EKU)H$IA4Hc-hR8Vmm#qU@HK[A!496elIl)DH`%d,%H%QP95Y)pF28rb(r#6N[bB
+
+lK6aLQ%d5RL[**K1Cd(SP)Se%[GLF2qPLm6)G1XdfIJikJkl6f(Ik6jbZmdadHip
+
+lZq+SfHVh6ZXerE&PeBqF39-F0iqF2GZ6b8Mj-FeVLeE[H1!F$rEXP`23SUpZ[T!
+
+!LhQN[16RDj9-SNb0j%DkL1AUELmDC6-CTMIAHAk5+RqBh3Jd#E"8`FeGMf8SPCY
+
+'DRA4YI(J3UYHdlYLeIGlE8M92(kmCpYLrh'Veqhepq`h$rM2&J2R3`c`jLErfD,
+
+E1AjLMZRVpmhjICcIaqG0Fhj``0I4I,NZTdlVlYehl%DpeU39EHjh(G&bZYf6CV[
+
+G`I4EI(TkdQcTdreH[qhdpcETXRkM$[Gp(p-p2YkcMcVYGYIKBHQika`-l-BC"Mh
+
+X1`GlGTC)"Cr*h1#Mqe85r8dHrClG%'m&k80"!Tc$"pJTrM[9Jp98lp*8NjqR%Qq
+
+&`b6'REq*Z[eJfiKD%L"X-GG(JbM'B%rM-S"GfGTF,X[1PPQ@-S1&+A@ik29'i8F
+
+*`%+Pd@Jj&EJ3f*JQGL-r+30Bf1hP`Yi$+R4#6ci[!CM+(DC,eCV$+!2KL%GA(P!
+
+MPkma&a$*E6A%JkSiFNFU!JIAF-kX$%$b[GeG$41lZdap*i`ah9lVbHqIpJB1@)(
+
+K)JH)+klBE)L#*iaXJ4bR)"Pc1ZLGJ&&HZAje4Y+3!)#X(qCTD+I3[r+2[KZ5`9$
+
+I3pUA!XKb(l*iFP`#S%cE15JM%1H"h@"Kf!,rTdbjJ#)li&0@4$k2N6Q8"mKL,+a
+
+H@cQ5mDJ#jhQlFK3ql)[6cKr`'H$i"TIK-q8+Z,aH9iK45S$,F+Mb"9cq5Y3b!Q&
+
+TXT*(AVlE%"T*#CE[IJ(,lkjKf5"+U[$I-l"6Vq%)af)8Z%Qb*jqlXcL3!)ekV'5
+
+MbX!LBK@03RFQaDiIaPQkCAj[LfUeHZ[@VGY*,%FqBZPaT'ChV'U1NFYlN81Q8)j
+
+'dZ2@5)*DkJjTdYT*Jq9T)PBQ)AeN`5+IkF*(,"b0H4ETC8U+q64+T-"U3!+k5ek
+
+k3FEKZjZ)EM5*,$p%E*U0G)cXK`,*X4M4iMp2D43kjNRI6X6)$3+TUN)BU@QHjqi
+
+S$4C@i&p)-HMKI#6M&,Hkp%1+8-jADJcP+*T*8Sa(HLL@m[Z*C@B42!Xql"`lBZk
+
+R8aiNSGA3dd'T+KE%,)**2eb-"fmBClaC%2)5cZ@(%eD!p&44),658!*D4V2B9E4
+
+6b-kY[R2L0!F9d6QSk'Jp3MN"3TpQSqR,fpe3Z-%X5Y)+m[K8K&&UIC,jUF5a&&i
+
+@"rk)Y`b&"L6Ik#'JD8$VYPb'"1-G3#RM)4@"IS#N0F"SaCA,eEP%H`$#ddTUXAD
+
+A+r"[Ud*EB,DS+KQMKb&f`fa'*V@d!FXImeH)KFk50)V2,C@&0eGFhlr"0VIk(%@
+
+&9aifQ-*"FQ(4%,K)a"M0#&jJfLd4CbU'Ib89)DZ6DZ8AaCGbh40RX8)(3pK6'36
+
+4q5ZCpXNk8q&&-JRI6PNSJ3dK9lSb6f`9PRrN+Y4)B-0dDcJ+-NpD[DH$NkH`Pe-
+
+%)49X0eS2V@EhK3(!Ca,IN`U6B5q+eIpYdFfjT88rHjc**-(fLd51P'3e23Ma,-V
+
+%"-IT&$dB-D&,i&"BI,ddGm8CP6#%rHQM4q*6m4PeA,!#k2&i0)$B%lDC"mXPl,i
+
+rQDC[`$$K(HIjj+F4kMB9AKZqF`i#-EIDEjcrdc&@G-1HJ6RQZKZNc4M#($fVDTF
+
+N4J%@H,bT8![q@CJpGRSH&4X00R&a%qY$H`Vd#-McShJpcA)+qM)Q`(!qE"kG)(L
+
+#$+M)q%Tk+cSC%,T%!CG55!YbAKGiXac*X""fX&--*`"#)&b`%,R*!P0DC#FDc@C
+
+!194l)UKYlKDc$'D*2FS8X!6mK&1#&Y5-5+$2-3qcNLj-HF"lMARBFVkB31U+%VA
+
+9,5`hKK9!AB,%1("(`%TYJS5&*'b"LTM[%$!$BX`&@Y+,fEjI6FdJr0m*aX$['Cc
+
+)(#93ABB3m1T1l@UhH3RX[q$0R4rGbS(XLa@R3rqBDNHd#@Ld`ApiFGeJlLk`K8B
+
+F%$)!)*aJLc!!A#1dD,1',XaTK"q9PARS1hNd1B[6a4T)H*eTe5146+1j`(pVH60
+
+ECd8%-X@DTQ4*0'31#f80S%8da1a6)0&+,h*MXb)hj-9#rb,CV9YA3Uf-CHG'`YF
+
+D-Z4$)#cNFcR+8S3&1-AU[XKCVL`d,b[#TLmM*!H'p![j(qC-#$(3p'MefNk$*DR
+
+Aq!aT"BDKj))'Z+#)"C%%%J8'Z*3lQ$G8NXV4023rbD6i)jN3@3344B#bC$DCLV(
+
+V+r#(G"08-L14)E&65BS*%93!#M#EK4D&((&)P!5iR,JbKbL*'L1!*"pGAaNaiI)
+
+53*ieN@Mb)1`hj%&b#G(8'JU3!)H+D+)93"9,DZ@-`3LMLC!!&H8BL61S+0biaT!
+
+!,!a),4,a5i,AFc(S-,i,MHr%l35'j3ISJ[@(e'JrdJ992NhGLDD6-p#SqG"$k98
+
+JPd'5P!A!'rdC31AcL3KmB[!23iX&MIpmeCUE%!@!'PlSm&8@"&8A3fR-H6hFbeK
+
+SUB$@F0FFDL&*!8DCq1C$ePl(8DbRjM3cp#GC4!XlpZ&4,`Ek!G8kAqBjAN5jAZ%
+
+#(!V!!r)`KdeHfr-@i`QmPNd+$Ph!fXU6aH#`hrZ!E)fi@)Y6@9S"-!aq!If[E"(
+
+lX5DIJ[0)r3V&P*b0)PE&Q%[[*-iZD0b-UZI3QKUmj'!,BF10Y("VS(i)1L5*$E"
+
+Afcf1BeGD[,KfVC`fBlTY+,%A'`D'1$c)-`1T+&2@8I-0R,"`'`!-R@!Jp%$Qlb9
+
+3jK*qMLJi36,M+Jji15*fS@bDiiI&eqY-Q)*Dlp)&(X%HX'B8'i&B#0-HBP@K3)i
+
+i&(q41LV++"8H,JK`p2aAL*(RJ#Q+#'!fbRba!`KkJ8aBf-Nek0``KVBYi!b#J'#
+
+a8VhV*c%P93V+JX!#MrD8q!86-e1Z0$hZ$BV)RfS%1Y$"4Aj5iEhRaJ(Mc0)&VR1
+
+G%0G5`!6LB`jDJ*aSD1!2B4JDkjCQVq[3QP)UfTNS""XbZ'S['+YSYTU99(XlXDE
+
+Bf3$$CQ'@F*bedMX2L!cL'8SU"@#V!2`F-#,ZkKS'D5lck-I%1h`*%a9(N5KekmZ
+
+%aL`E"JL"LcrpNFe6AAqNjeP2HZHRF)MhL+0*4RY%3,m&[DP#$D-3hjkiLM68bBA
+
+*B(Ie4cm+a"Re8I1*8k4-Y1$rb9V3bdI@X@#Gi0U,31lCBlMqaYLGq3(H3)$Tq@1
+
+EBKL@Vj!!6LqKhVScmmdrFKLL#2"B!XXP3b2T+*L!p6G26VV26*6JANDq4e4KI0Z
+
+$U3,ejP0%F(#P5&P%J#['BQHPQhJaP%6TJrSJ,K1SCUqCbfNbTSB48`"hZd-*(JC
+
+Q)168QD`@#5!2B6pZpNN4qa"Ga4jp4L%fcA`pNe8ip&a&N!$,9"$BG-5FbL-kqUh
+
+H@HkR0ZXa2CX"qC!!*Z+"#jB[6lVVJd(MBc5N"JdacN,$EMImXJBl&(f5Y06!T@2
+
+aXA'"bYQ90CpIfd(Pc(b&!llk(+E`Jkhe0)"Ul#"#UDbAJ%-fQB+`+G-#BB2qD@F
+
+T*+9QK!,')N-#KH*Qbp31#"Z*NeCiFiUlB"Qm6epeepjG[Nq`K8FA8UiL#c4F[Vm
+
+,&8UQ8[RGIDX((EC4YZ1pqI'k69a(#FY2Yd%iM3CmhdVpCBNhlhHpl['LpPVHd12
+
+P"bT+#1UZ+(1A'[GimcFF[URbhPp9HIm+Bpqq@['5DCKRq$f$li%'rPrH!$6mK%$
+
+jJ1r6@a"PaN#MhhhjKQBHr2S`J3B@VNeBI2C)RrdY+XYchd(rU80a)c9EG!"+k5N
+
+eUc!'ee@eHYr5N[2K5I1ir3UCL$$+'j!!LG1DNJ#bH%N"CFE-T&qQqKUFGMC,!-"
+
+*X`X+5V(#mbfh82JCUUZR1DKZm6e)8EqDhbPB%T5VQe8d&UUS4@@ZU1qD*Y9Yr4@
+
+kH+K+SN@#`k&%94L&SIaPP"X)Zm19`h9PKrl6X(KJT4J@ED!)04FIIF9PE8XA6&*
+
+kY69!5mad2dLYjFeVaLZIk(jBMh66I@d,HL+qf)jpFEHkYE0elm'jC5DPEkk'@ph
+
+aZQ98d+[6lrIkiU6IDcQRT`$8VeQhc1'&XP)$XLdTBEA5*UMElcF%hTim`*ZmaMF
+
+hB$2kfCImf9pq1'DL(r#9RSALEEh6f&FqQVk(VVU8k$Tek%%%qZckH@Rkd-T3kCS
+
+XD`$60)ehDlAjI!ikqH,9j0TRqC2-Y8(q2V!&FqmdLZH#D5SfHiK*l`56U2Ual2m
+
+$!*!%$40eFf9bE@&ZG@&XAf&LG#jSG'eX!*!-fD3!N!m+LJ)!#Th)!!$"&`))!%"
+
+849K89@f"0J%!Yi5dRlH%Y+!!N!B1b!#3"J8G!!$,jJ#3"RN-#k)!6j!!!FcaM"`
+
+Ml-MaeD0Haim`3X-RGahB*4G2IE+HY-XNM$!#X"S!p538(m"&!$jUNJ%Rk%FVF!d
+
+DX,8Z1m)ZXQQ%2bA2#6Gbr!JMamP`N`%M(%r`HSjb6S*6hc@F,pU$9["Xk-&F,@)
+
+BRMApAJ[-LQdr2@cCGMYSJ`D#)qZJ#S%J6%BUiSc%YZhe6BeIU8",8+,S&$L$Ep0
+
+ip5A8MJ"U"iJi@B'L9e%Y)eHe[Mk#5U8!0Ck+5#R+%1-BI14%BfKa*X(*KjBH2JU
+
+TB&BiGq%H&p%X3Z*!8MARiVi"fqma%6%dU4!V!1F#Kir1"DAR)U*X+LdZCZiVZ%&
+
+-cU&*`[Q#-!B1Rq5M4`ZLjK3IdB@9XUKb%9Y6ZNFQE!U)Y!+15%*DaLQ*Q-)rbUq
+
+&r)IC'1@"56U6'5qCcQC8DRY*8"bFYA2Hkf*NCMVa'Qem"Vh!ppbQ0hVXqGicm!I
+
+G`6%d*Ma9S1D4K#N2d`9PbV&c*-0`6VfJ!Ih'U9FhTe5')NSdH40DJhlJpB1kHFY
+
+'4m#@aJ9G,EQBb[pc%&6b9)5dSPB*h4*j"cH0T",4*,f@EKDMpq*VV#jP9"$&a4C
+
+SRdm)D$KfELR$D3lDU&ZMhkfE*M5lVB%r'0A01jhX-b(`[N-#G`kbc`5rehpFM2A
+
+fNf,q!1F2F,e4c$ZG$%lc+h8CHkfAQ6&-el%EfXb0TZp"br2pBD2GlU%!e@`k(MC
+
+DqE3j',@p8Ie!JieF"h2k#4,XpZ[QDDrGpVf-VallALF`hHI)p@6NGHTQ+UR!4%T
+
+*E'R9lfMZ!8p-&aqDr!X-L#a2rQAd8[&```S$(20G5G-Y*jm"i&HYVHNGIS9QlE%
+
+T[IS-!#Xb84[9#Kr#0l$MC@Z6fCNYGH4@hCq6&IH-B,F#5b*KPUG1eK$!kEP0%4%
+
+'*d4FdT9MpecGQh"YAjhdST(+L-eJ,GPFUH6BYTI,TI96)l"r+1Z'(C5KCQ#Lp0a
+
+eaQP@HF)-m6ed!9![LK9%+Gdk)SD+8Q$N-TSK0p3P)9M&*-c**Fe@chNFmk9@C8%
+
+*`rGa5F9`&*R%b!AcR`USJeR9kBZq`FH*#mf-)jS+KrP'RbcSEYlP@HhC,(3%Af!
+
+Ueka$Q1RGBP9lX56@,ZhG`M$h4XJBRX2G@$f%&jT*%3Q[-E#JA@JHqETV*)*H4Mb
+
+9)'QBbBj'`%ile6TRFZl!Y##eFZ&@LpQ[@R5i@")ah6&Np%TpP1,S,bR3&VpESd1
+
+NqX8HA%#D9,#V9YiiCLp,pD-SCmN(1Fk5(E%d+IPHZq"[1pjD%Mh`hTBE#qaFZTI
+
+Mm%mjX(,Gk)$V1f)K[m4J[DGiFKriqETMl#$J,T[)j1(DMEm*8"Dc'a9+M"h221T
+
+4K2$YmLF4XK*hSd!'X(F##fQL-"Z[&cp4ajCh3c`VHDpdeq8Z)60k5hTG&SYkY-4
+
+l8GkKR(%`'[5l,RKAC*'JMablh#"5SUIar$-RZPa5#&-KG)p-H(ji!`-&`0deKh%
+
+kNIJV8RM!D#9BmNS`ar2APKFkP@a++8j4b9fC`a0+'UT88+acCrSXk'-YV9S`h[$
+
+#`jU0@jYp62Q-rCBkrUp"`,+X%YMH)0GH)k0SEqM9#S)rbSY[T)-J*9$1jkd2PR`
+
+2G2M"-)@4LfIT-81ATRSG@S8AKk8AerlDFcakal'$Ckd#D@Z&A*%GP*EL$a[P6,I
+
+BQZ)VQ1b&"iX4M([IHh@m6cM0NDlp6JF2B2Q5@G&0rAph#q0c%RF,9&3IjE5bq3(
+
+l2`!!$40eFf9bE@&ZG@&XAfC[G#jSG'eX!*!-`cm!N!m+Q$X!#U&P!!$"&`))!-"
+
+849K89@f"0J%!Yi5dR,H%Y*`!N!B'G3#3"J-Y!!#%F!#3"Z%(#U)!6j!!!F`"+"Q
+
+`)mGAMpVc)j43JNp1m3-V2+IicXKkFLml`JNPq$`T2JR&"h!V!FMib["N`!Rkd3T
+
+F4cffXZL4ii56C`3PR$`rJJ*'1!$"(e!+l'AITE2B-Ha[JX422b`SE05fKX92AKc
+
+j3%D@pIl5Yk`J$8!E`C9j2SC8CVbT9#9i9PX@R42Y2aU",eQQ@!'#`ipYhAd,&eF
+
+!&qISZ1j!XBr943mh0VqrJY(SfG4i,bZP'%H2'iL4LGAJ#pk!2BLQ&Qpc*VQCEaa
+
+i)f499JJ1@DXf3Viei26Z-eQ$ak6X!1`R&'mI*@12XQ+mD%`K5qG2Zk61(X(,mXd
+
+fiaaXX4kNfffQ0JarULHcjGASU6B,pZ+Fm3,3U31"6V)aM9P@FB9IA,pHj$pN+e`
+
+2V0ZbkEQDYLaCSq29J"*J(j2cC5p'(kBlkJEiQdCT6"f2,ZpT6$p!R%b6'`L&8&`
+
+SeYM@-'mBpSbQ,XcG'Cf3!))eZDaf'TQ!Rma61NmRj!Z$M[[*r)PeHb',jPpRb4V
+
+4bTb09,GM*rY#j1f@FI9U9e50NY@kI9e6@@1kkPH[+H0-CNV)Np&,!k'KB9Y$D!c
+
+E5`,FPMZI6JJ"EqSRFE+FN!#cX(m%8[Sc!TbGpip!(-h[Rf8prHjC[dEp'XIGCcd
+
+-Hc[0GpK,fc#*2G"QpF1M8+EH"R&XbpA"GEfBJNrMH1%'3B5V'2IUDZ(kJqSPbi!
+
+Z*qIDE1RBf-R[%(8kRj!!@43%-Hh*Y4c6-#A1VdKpYk6KCqUHq'a&rBG8l)L$2aV
+
+q0kb&[M[q)hT3)[p%K@@0ADi`k3IP+`"miiXMhZ9h'0Z)&qcM9`#SX[@3!,jqDqj
+
+DY0Jfm!0mjV*db+`qPVTHamkT49(&N8[R'1``5G)aqB[cHU$%kbSF%qI0q+dQ42p
+
+,p&pJ5,Dl9M%*Uaa2P*a",%S"+pA9$2'@X)TqS410kLdG!--1XFZ')6*#(#2G9!d
+
+FkK,f@32P8(bX-2$QXL2(NeA'i5k6[l21YL*((fFipR+Ik8'ME5TH`M%V'k9f0jD
+
+ehqr0[mm1kir$6@1PKeieX-SLjeLcQUU[0Sb5lPFGUH(Dr"m!N!30%h9cCA*YB@j
+
+eB@aIEhCb,QKdE@`!N!b-'!#3$`UGb!!+TI)!!-%A!M`!3&4&@&49EB%f!3#hK,5
+
+IYi5dR`#3"JRV!*!'""d!!$6!!*!'0FF,SJ"2N!!"c2'8$2L4ik[AT%%5I!$Fp6c
+
+A#mmT[T2bp@4Hea&1'!&B2DNRSIKd*3!CXj8-1%%r@S'V6LRA)lr'#6e1TT`F*c0
+
+1"Tc-q411*qX"RrEPR%AMJ"M19elS4KmZ+#c9+S1,Gi2!Gm&Xf2C9al9Y,r*!#d(
+
+ADVBJNL`[8T@+R'@f65HQeQmd`*@F+Ck!b1(l-YYm#qdZ3,Z*L[-0+2ijE9G`,HZ
+
+S#ih'RDKa*91PH)iDTa!J%mr!&AN"cRCSkH(EQ-[FLTF%[KBbAD3)$Ua85b'r-H$
+
+K1fFbJ`'AFJ2Jh1$`lEANr&UQ2%m+5mJ&q5)ACZ`D"LaHVPLHJb2Qfp(E&90,MRr
+
+5'k[-dmC0CLAm8CRP#D$5"J3UbF)baLc0&IkLrGV)[mKQD!r-bd94F4APBX%,(Dm
+
+#P!"RPjaAAi`U6'Hdlq(Ib)m#5JCdHNi$qJ'#F"5H`Jb6SL"Lmib$Z0Ej`X5T`V'
+
+hDSEKM'R8KdPr6(YQ`SYBTQYYJ!PZ1)RS*1UCIa,T+RK!ZH'E@b'6iPm1b3Y4bTJ
+
+he'E0(f!5%CFVe(Z55p*#bA4H2PQib$#(fC2@L1GF-LANJp"M9k'JiGMEH"R1)26
+
+3ZrjNe$00')cF-!LR2I0J@(dQ423p!K`dUmq%`*qFhihepZAGr!6R*lMH[jX2Kj@
+
+FjV[hC8EGMq%PR9lkp-SNMYhAfHi2!JSZ$B+,[ZIjk%'VQXiZqZjf1JLR(ThfQPT
+
+X5KbXl8YN(%ekjYMh[)"@b(SFd'&NNTm3pfa+Kcfc,,M%JLTCCQRM$c4q*0BQ`6m
+
+DrQIXLUTHrLEkU%4F8p84Vf[S(lj@HiIA1F5mqRR#2rm(!"@EUpUerPb8@$2`(Ic
+
++CHZ3!0P9,(8$YmM[4BZlf"e"k*lrm#k-Y0Tpd+23ECPl6hIX,C1d,2"c*895aVV
+
+6YQd`Q$j5(1dTkQ!FQD4YJFF8JjQ5b&&+$KFbAH%KpiPA'G`M260eDLD%kPMSmQU
+
+&pdL-KmQV0khQbCkN@hZ-qk4V34q2`H@+Uc4qiHJHlcN1D`lF*iF@"'+"IQ33VR@
+
+jke2UKHI`1AY(03rZNb-,4T+YPfRm3Y&ZGIB8acX+[8q1,EJ5mUCBXjM$Q19X`IA
+
+TmN,dTVdR1UQ*F*qFk1MT@XMU5,mie1Nm*rP0ACZi6pjBk%XXa5Y$plHHDYB3+%"
+
+`$P4+)E&F4-b,)XdAVcc2U@R9aDF&#-jKYZCaLQQqC$,9eITU%(Er(mI"a+2[D`!
+
+Xm5qeI$D&QImMl99p258!KM2%Zh#lC$E3B50DTJAFRjj`b`TBE)p)RKMidZ(iC)!
+
+qjA$'j#HqF@bIk#F4A(Ym&G',4URc!E[cBkR8qY5fEj!$VHGMhrlPrLA"MZj[9!1
+
+[3jrX6PC09EQVMF9E99mTfcHHr`%!N!-0%h9cCA*YB@jeB@aIG'pM,QKdE@`!N!`
+
+#-3#3$`UKC3!+ZH-!!-%A!M`!`&4&@&49EB%f!3#hK,5FYi5dRJ#3"Q3`!*!'%i%
+
+!!)lZ!*!'KPN1SS!5C1#APC2"FZ3J@cXp1ZJL0)#&di(XA6M0Dk'j[DiM#pRKU3G
+
+!23R&jmAa(c-hqB@J(ke!&Eh%ZpEE#Xc`eJ$Jf-+rMS`@-PM)#*,"3KDb--)8k!%
+
+1#d$$llikIhdXeRErj[$di2a2ElVHX"M&hTXrl"mI(ALY*q[V2`F(kqZ(jiFH'AQ
+
+ElBf1Gjk&54i98CU%mITkpk4&rNqHH!HC$![Cpp,%qiG*I22r2(r6mr`01&lFH)9
+
+m(rNUA+Hp[HNpHA*VZ[Cc&K@&61$a[AH-6$,f$Y)NphE,(p[di`mpQ5AYhP"iIjY
+
+Qd5"#F#qF&--dqlXeVrVhBjM&hVl-XK[2flh#McpFCP*HCT&-qRNlc3CLDRFDKjI
+
+HIYJEMX)NmAE6Lr+R(dCK-C6i)lTU6j,Sb9AFlXX(jc$THh#km9)iCAPllA8B*3A
+
+qar(63IjAXVFi(ZpL-XK9VR`b'-LFVPIZ&DQhqq(QQ(0C8jIT9AI[%(qH(jdIGm9
+
+qpqc(lR(h6plakF[6llhcm#+@ART*0`YhVFKhedZIYEAGephc2HpNlhAhHDX[mei
+
+@M5PkbcXi26R[RT`rEhh,3YHr#R%PEkl6V*rrr`5Cc00*eT02LTZaV',ddpjN",q
+
+2G[dS,l,SB[,af!BaEPhmdHZP6'3@&QP@'6f3!!Q'Dl[Vj@9Dfpdr2F5TlCfmI0j
+
+UHIX[$dk26mqHYljlSIke[22Z(a(JZ`heVq8G(jhmH2XcUAqkrIdTIRm+qGlYlbp
+
+H+$[+GhFZElX(Ilkr$E[VHh56prD2Zpj"prMicGlKi4(1S+0qIIYQlk$mGIrdl,"
+
+lpRb$c-l%,L$p%c+q2(RHHRedH(MF9C(Tjq2ZLr1@q'I%IAA@II'm0FPP"Ka0`VK
+
+0"rmGa6p2abf"2bMm[i!2#LErRHM24GUl6h9rU2ISqCpm(Ip$['!,pr8SkF[hr`Y
+
+!U[#LZ$qe[BYd!XaiIqrTA1YdbGE9Y56HGX3AV%+eY[X(HP(GAHhcdi01kmXTINM
+
+EDBP1fcY+LLcY6hT%XI,qljppLH+[S[J8TH1G[T2CZdKH9cQU#-%U3N!4I1qPa+-
+
+X@hqVr[4q#V0)RIAE'labe'9lc,@jbS@,fQN(AKFA*BZ5JAVT(-[`(IefR!l5VjQ
+
+f9TQf+01QGjjHb56k#pj&dkZcrZRZE(m*Fmq5lCE`fpjK@)6Hfb,$4CaNdRZ6451
+
+mG0p*KDhk6ZkXFZe3,T!!'mmj&5[0PPQHVV)mE3Pk@hfp+mp@eXpD)XC$kDYe"kq
+
+6K6IN)JIIC0+6GB!CiUS!B0cPH',5ck"@QB0UmGamKV2+($`,XbbmUGeRd+VF3De
+
+4IqNr!e6P$d,4V5[5C3E,*FM,%bc5a3@f$)*Fp0,4"HB6YErP$Z3LNhK9j-EI`JG
+
+b-C!!5Aic@[,CYa5#(#6eEa%YBrQ0TEk&%Z6L-XV-PI)YP5![hI8*D([,*FK&($E
+
+C,CBJ&jKh,!r2FJRb$`(-q9NU38i*&NGSL35jL!UTHD$0,BiJ"jBApTC'N!#,FG5
+
+lUTr(PN+3!!1&Sr4G6F,!3JGbXZp2e*cPLlfP$Z6LPdQ++HX5T)&P$q3!D9##p2@
+
+NS(RBNU1"T4(NH"d@mqXB@"K"MYYX%eJB35lD#,!!BQ"a",P+F(&CfeXJ3DlX&bG
+
+SN35j'%rbB6eCX8L#A)c,`GdAEmXMb!%81DPTYQPa",RSbdrqRhQdDAN%1ALdL@'
+
+,l%Fp9!L@-0Ud-)*FM8M-EE!SJPbpeifla4$Nj8[Gf&X'35lND)bKGfe['35j`&8
+
+-Bf0[#35jZ*!!PfNQDrmY#b()49[q8RYE#%%Z4R*d)616h@))FT&2,UJ'N!!-6!6
+
+,)-K&-PNHJH81j!)PMkXF,q+KR1,R-`kh,)3J"`kh[(qFB&+kBZ'@j4(NQ2T-N[T
+
+*Y'9a",N)mei8eHk@4T!!LbbmAJD`2)*Fp)CKpY9mfm))mPZJe2D@4j!!LcLpPPN
+
+[0!1[E8XNb-9N2&iPX%##A13&TZ4S)Y3",*%J&q1`QGKY@`K",V**mLP!bE,(bIS
+
+-4-&p')!SD'-%2KUKYi3ARZdiE-r!9+8"Q!*-e&80$G0j&!U@N!$FRS'U5J03MI&
+
+Z-*GX4UR+(C5LPY*AmjdCTHl0)4Ij-08eMFmhDfG'ULS#5"9J*RSQHa)YKG9&f*N
+
+KUiS#C+(!ejm2QAGQa+S#J&J8B0j3f*N4U`S!BP%!["[LCP+p-q0@PB'iK3ccTm1
+
+1C4AN(`,8Sp%GbbI)FDeP(+rZYD85j,MAJIFL3ZPQVpH6qHTQ@dK"6J1kF5B[SlU
+
+l3r@d43,)!FQ&[D88j#)Gbi6Z94h!XJPb&H!DAG'D#dmYR#"A#8)mbK*c#"C2N!#
+
+V#*0a(c1U1S+P%q5L&kIQ6IE8SJPb%FBaR8(YEm%%HCNH)HS!PNU3!![8*h1!)$C
+
+(D&%%ZHLMV)NZf9IrCaC%N!#,*,8*,)XJ*aM18I6-SJKbmPq3!1LC*4(NkS&KCK2
+
+2,)8J&bUmXEF%J[cZq-GTrEjjCM%%qBFE--pJ835jZJ4cIdXLb-YE-!pJ335jN!$
+
+TC6hXke#EGq&1HV4riZQXp2-EVl0K884k[2*3B)4BGGVrrDAAfE"d)Ve!!lXj9mX
+
+QdZ1*)---THLQ+fJ"4AVL3fq5j@N0UFk'T46TK3eJ'89k1S44Q'&E3)f)cSD&&1N
+
+T"0f&AKT2ck)HK(8fCYcDV#)"A*YYE`rX'Sj3'1QY,[Z-B6S-),D*5GJ*D[&Ce20
+
+1-A"8`l893VMX@D95EFp*h@2TF006Zi0TrHMb8QE,YZL-BMS%+!BL6Xc&jG+RpJI
+
+'aQ@GfL5B38`R!-5SD)A0%8f%'F0d"$@+'Q%T422@kh$h8fF!aNBialMZ4hHiq+N
+
+$8-pZIS519UVhL3C"r96ZF1e6qp2NkCI-a1I#Cf822BT0Q--EImFLk)9mEpj#A2$
+
+8lY3l6JHG$H2[)+3UR[@NTX-06fe1MkLSFAISJ4lYLriLJ1-1p+L1'2abYe1ldqX
+
+H)p4j!-FGk0'NkU(qB!)im%"2*l$+`%A2+J2d)XT0TDR$48pY6dh2"r[(jb,A2A8
+
+)-'J6mrfl&pjI+h)GlRrU9%3Q$"S-'ER`UId"Ti&DpM0Y5hdjAXFTk('mJAG'2CF
+
+4R6)U1rCS(ELJam@R01CX(EZJak[YFi3[CqXB"Mh1PPU0H(pj,e*B&!AkDD[6G9L
+
+$AU#LC`q'fk*9#1Ka-&[HIP4FJfrr16AJ(UP1"GaG4&4B-TX@(1UJT`$0a)G,T0S
+
+I8)2rqhN!4cAS+8#5QZFUPdGe!0!-lErSXJRJi!@pL$m&-*-QET0Z9@%!XUdfl9E
+
+"Jb&Hh2,(C$1bk@6d1T[ImaR$Y$XBeYa4,TP@jY"Mr[rlpH$+kAD9",cDERX[Xh!
+
+mM(SVp((l9%F"ZEDTN!!fb3V8G9jMDV6UYh@iLkS$!@A!r(9SLP3GEU2U",Ge9'-
+
+r)jQfTakdE$M'[90Y6iq`D$"Xr'ISd[lPh,@ClAHiI+S$J&!)m,lCfM*MP2B['e0
+
+efkR$lG2+(RUb0qQjIDVYbiV+%2f)KrIL0)5$%[4LQ)l-"*EETpTHlFh4dqP(a()
+
+"9@F!K,Ba[*KbmEGDFiHlU6SBm$5(!jG4Y6[Sp,lA2%'iIDVY!DHEKEe$%r6#h@`
+
+(*p8j6HPaB'i!pdkV"+TifN1pYkFA6MaHF#kIkKcU$4AFAA"DkI8cTYhTY9U)PU@
+
+kCIBBcJ%-HY@1a4iZK$-Rl6!'[4K'I@P$1)j"VdSaCT!!b*98lDpDIbM9i-j*dph
+
+VF#p9T`#fV[&D0IB1@p#,Dh8j63!(,ZM&jD,6`598l8qcUmJd$c[F3+hXSFI#T![
+
+Cq$Y@35qSb,1kJea$e5&SkG-NMQd)ab6S46k1)hF8$NV3db2a%H26%)j-d'2BL4f
+
+TC[0-KbZT1J'SP'"Tb+F-Mim*,UIU*!$80TAK2MmQIRXaFR&9Kk1"!"i6LCeAFhY
+
+9a`$$YM%kIB0pYA4!f2"k09!&QGpI20aYVG*",kLGM'-b@pBFj+#R"'Dj9)HlVGS
+
+II)2rQ*ECQJL1EY"6"&860K%FfU#R#'lKR%2EEG%916j9pkBT(0jZZklM-+BDS!R
+
+Kb!Epl9(Nd9qD%)jJd0q''+0(J(A)*SG$'25h1Ei'`,lQ93$58`#D,TESXb[p,,&
+
+)$k*Z+k,qbRQIkkmk6JN`3QM03*mVX$T##6#dlZUVkR-"9LFSqEAJMXrp9af"*Pa
+
+,k2KFJ08*3+i9FAaZ[qS%`0B#%jCAT&F6k0mCBC&&HM"Lam[,EE(dm)T608(cX-D
+
+2pV6D,C!!$QLUlaUqNj5P2Q`Z[HS)DQ%3kZb,#)jFd!XjcMmQU0X02KGJGkSdJ0K
+
+1frXjcDlbFGM$m$9-`S'NlGQVUc)MQii&XZfJkI!Q5hZbMi[R(@)A4+*f`DpbcA#
+
+RF`&h49eapENMUme"ZMiGJ`%GGf4e!)"ZhRIhZ55Vl@N`KU(3-X+-F$S#,EY+acF
+
+iaK8TZ6"EjB!Hpp1rhpIm(pH6Hl3k&ZeR#kr-rH)LVEB(fT,39"&mlY&UHfSVTZJ
+
+`'Am(,HK,rq841N"",iVK`mcqbr9dT))Hec-JI++09GcJH`FHpUmq*R,SJPk-dA3
+
+hMedZfQTrX'Z`p(IJ8MeE,#fF*q#@EC8!HS&Kk(6Re120iV+Y6J&#l@"iH2rJq@Y
+
+6eZIqVFj&mi5ladjca!jJd#2%l5,a*S5M'25hVabcfp,RYUf1!)J4KaYrKbrSbkZ
+
+k'U,kh,$9-F#X(3a4lqrUEi-IEY[U8!"CVrV#J0Ra1TC"MjA'1)LkG1GcXEB+!,d
+
+S-KaS%m"4$(VXr*0B8G8NF,b#rTjAjL*`NeD(S&fBi%6Mle!&IFQ**S!$&I6U!1D
+
+Vk(bZdZS)LPA,!)j5d01QUHNPH'3G9f9e#Q"T"q20HpBG*INBQm[GLja,Y$SAl3X
+
+f!a-Zd9EQd-1m@3,QFh9@qe2,)"fEfmee@@e2M(VS)8rY(CfJTr4aiqrS"$h&0qi
+
+16G#Vp-EHB3Pkf$G,faf6S#GhLb6ZaZS3#NNl&C*qVDliA*M9S@LGeVcbiA0MY[+
+
+(R[`E*(&P9[[6TTHX34+ACE8p$9qc"NPFPYAf3",50dMLSUcf"j+D4SI2E9MY$L4
+
+4HQ2[N!!%26elkl+bch9BE3mQNIhLlMSJ3Dm5,%D%A)R9%B#I5E)i4@l%9J'J[`d
+
+`2dGZ`qS-B&#CBA'5h(V9)@J,KKT#Q#N09eje!X")65'-[i-4p$M'93)(*1K[jb$
+
+0'6SQ3Dm')FEH-3Pk(1%bJ%-5p(H$Q#D#3a,d!K0)mp6MZQYP$lfbRfrDp,RaUL2
+
+3QkJrjaQAAE8r2BVkcCZ+DklDRKj&rHC0aIe@E8p[S[lm6FA99Ze2Vk+qH90aV9@
+
+l!d#8hYJl!%'[+NA'hZ&(Y99Khm4hl)&HeC&UHqkK9[E3Bd@"qBi!RdZSfKlF'6a
+
+ZMRLF9(!Ep@N9"!"k5Q[$eAMLrUYF9S0LlUIU8-$5dr*lA,i02ELRUU23[ZU*33`
+
+A9,9lZ@%GacQ*c5Z"kkNkJeT@2FBQ,K0J"LSG!+#LEcj!dpBNQ,&+*e#IKM*HI'H
+
+!cj98(3'iLXb(9h!GpGkFp$#AX4Np"Ga!e3(8BS$QZc'iFDVY!5NXE-V-&e3%h$I
+
+9!3!Nl-X-&bGS184k[&C0!bIJVUQf"iM`N3(0&pB%A$A9!@KCB&LB,33"&dfe2rA
+
+[KTRC6"&`e96lUlA8Q5RE"Y`[eIid6!qKVIfj3&Vj3kqk*eKBfN4`%)*HA)GQ@K"
+
+`H96Edp6STJR[#!5pD)r#Q`Zj`J#A3h8-fJUBQKTR`"e3E8p6Sl"HLK0`#95lJd(
+
+4J$C4Q!!13Y#,IcAH$N#U!GVJKmZIfTefSUIYkf%ckJQipeP&J&kXr"eqS+FM`"-
+
+ZUQF1!CFmG36kiSQ2rSmI*X0G6je#[Fka-JUG`KMP[5FAk"6d[5-X22Mfe4!"pd"
+
+e0[!*krrMHNBFF!G8q`038I)1(aYP!MK'3DmHfrJ@0*2!33Tk&('E6mGaQ&+Ic41
+
+1mD%b*S!M&I5d`UIC24p`fE-+!$d#Q0@"!EFmYEhkH"jXG6B(b(91(3#3!1TPDCl
+
+2,a'A1A8%fT!!MXmD`3*rNm"a#2Ul"'hIC(!XJTj'l%Q12GZr6YS#ERBqUq+!6-r
+
+D@"*!Pq2EIXL!#jik$Ae-ciLbQ01GJ8S(S-rT3GPeP@('+Td"V&,qjU*cQl-+!(d
+
+C!"ZN(lCGQP['pFl14K8*r-,[ATH'&H85K4`lQTFVB30ZI%j$d8HIE@#L@DBkq0C
+
+C$,MqfDQq!!d'!VplEe&8M,!kp'kE`+pNi'ES0"Up`I!*%pF$V+k5CY,!rG"T$0U
+
+SKTGKqH)h(Bf!5k,6($6QaaIlQ+dG!EG%T`PSJ)VP$qS68TTcQ2&ZQJ,!Si&pNNC
+
+je$a3Z43kM8'$,$U)[K`A`jJDjh88VSMU++SM5P'ZSlk,`Y668FTAQc3Ifa"`BA5
+
+DJ&B"&[JSKHDVUEJd1Sd!TTAP,(a8iN-Yaq#FLk5I2cl[j,$lampKATejEirqUIZ
+
+F2JB2-XpEfhf"c`dX4DdRZ""Vjm-SpqkqD0$$Kr*iq%!bQR,)rKSqPh(h51b$ZSR
+
+h+XcH54$K50"h08,fm'Q0*&bEd#2#qr"9Hm1L'(qr[RjpIBeAf1-A)klrfphR++k
+
+Ihhhki"Sq1[#)PU#82e-UGDJi82S%3MVBmN-Kr`m!)5%-980#)%a[CfmJ05ic!*!
+
+Bh`!,!Fd"N3#3"3UPmJ#3"X%A!*!$KJ!!!B$rN!3(!+6#c(bkBHJm!*!&)d4N!*!
+
+&#VJ0!*!+3!B!$4CRC@jPFQ&X,A"eBQaTBbeXD@0PER0P!*!*AX`!N"$"&`!+eL`
+
+!N!-@!$-!+&4&@&4+9M!a!3#SNUcLU*+XiJ#3"NBj!*!''fN!!'9E!*!'[-316MH
+
+j"8q3!!&!+"N`Mpc+j,(EDHHj#5Hh-Xr5IE5eiq[A*4PY22@NTpce["Em*Ee@JRi
+
+%!ehIpAfAh1`XXKbj4A,,NF%QSi@JBH'%ZkV1k1pqjr$IUm'PHp8Ep)EG-hGaqI+
+
+XIq6`rpjJe)[d!Ich*LR+0-rFmillDj8PlYNhhcb,)RH8,pG&HM0EZIfM!hcdjfm
+
+kmUNl+C,%MI,Ve9eF*1iNVl*T[-)"(GI2*SH4AIAihpGrqU0l(CHPkpiQ(AF8,kk
+
++G(U$RejhhHqI2rX$$V`FG52AZdf+G3iNdY)YNf+4VPE*e+eb0`%N,XkQETU@Ub+
+
+pUPD*`eYA1(r"Mp1NM&aql9Bc[$a2*dP@*QkD6kT&NUdk$Zqjb5c1EY,XaU8VRTI
+
+P+aI2jrPG-Mf-3!RKa%@4!*Yj!K+im5caPj6Z1LrF)LpAV[6Smrr6T%a[-N9S&Er
+
+(4hIafUhcUSLZ3C9T[Z#Aj8cH!hJ#!F"G(6VhFJhFXP84Pm"RK9Z&X%Q@&2(FA94
+
+A1$dk-b!"9jUYNQbUTpj8F4(Mpd41GImiPGp'(V1R6r(%JML9&ClKd3&1R-Lh"'M
+
+3!KL9VLUK$i"U$&*&@fLFKbCH,ZFJ(imAIJJ(S3fY8N5e8M`T'`B"*M`ECfZAimh
+
+#,B[mTSJAlQk@ml*U0FZ,%LaC3!I`8P595Pp!XMr+&iNpqiXUEF#Gj*!!#p$RDKe
+
+jXTfP9d9FV(HN#mLQ@EP+iZRKJA2[mXT0iNc!AP-r!)C3ca!V`H!mKi`iphD@C1i
+
+1a&SQmAZb39MPNHM`8b*5*0G*84"1--!)h+%Q4FX#p`2KFjch-c,PJrDdR)jA9)9
+
+S&YmU`aYeD,46*I-"(lG[fP&31r)#A!&h)!1h10fPecc0hDAPl)#DTDF#bdQ5iYS
+
+5M-!VNh`+CKC#Q*X%@VZ+r--3,IcF2-dh6+NfDS6R)6i1'%d8*4k4Z5bj8l`mlek
+
+SL2KchQIjAEKV#NfH*EJ#''BhTE"cR22T96+4p`SR,JIX"5Xcd#4`U8M)P!P9"0,
+
+'md#'Uh3D3DaS6dLQ",V&@r9)[B6!8G,+prST&,NU#JSh[J2!qXTK"'r"0cGA3Y,
+
+,H3aZdZiNa5S'i(KKLBr6Uh5HVNKBbM-[8dC&RaMG-UP$4)aqLhbDAP1qK!SRq$$
+
+j%#q@FcaL,h`kTk`Q-aGlbS%VXi5b'q(A&F3"CiKRF0F*$T%l+rL!'bU#3*j-8Tb
+
+5J4cd&68,K&H888HYJZ*4CHAYRCcKbE8)E#G)65-[q"S'*bJ2lZK#%J)1j3b5J$F
+
+JJ#S'F*Ad)(+9#JCq5B[)8j-D,J*cVa,3[GA-VHl!k9@b,,peqmm1a*HU9Gkb$V)
+
+8l6mr!(qJmbB6M61pQk8J&6P5bXIcj!Bb,ikh&%GZPVI6-K`hI58f9'MFhLZSGHF
+
+P'%)Z*M%C+rB*IXZJj&885`#UJLGUl!A2"!Gk$m)PhSA$5F%"V[#XU5#*,hBUbr&
+
+q34HkPT-&hBhC""(l@bhLZ`*H+Mi-hbd5ATR-kIB!c4)*!6jPRR#A41B@bPC"!*G
+
+4&Q$FHA%3!I'HRKIRS'5DaI-1EP4)D6*""&KlX"pHZXLRe84K%"0*GN1GH!#XfCc
+
+8*`ZE@b,cSdr``,*DLF08Z6MKjh0)&)pXl3NK@Fd3+F#kieEBIA*T"3XTk*XjA[*
+
+c+)rS$Vf91)ME2+@aJFqM1b,"J#)-V*F$1Q1)-f5AT![1Q5#Qf65p6DF93A(jP4J
+
+*26,N'9$mc#A3*Z!-rSX2KBlk-r"[f0"N"AG-qdr6"%fJA)$Q)Kl#Z%8-T`Fh2*N
+
+RX5%%#KLJ+VpA)81CUM5CY%#AK#PdHIL-[![[m)cjA2dD#)$E*fP3E['R14"@em5
+
+E+*4!X&2E&p1k509QSQR!GFkdjc$k0mZrIJ[)m2@i0h`pFYh"X6Xk(acharhc`FL
+
+GR!ramm@lrZ"9aahh4q0Krq8P2j@(ATmIpdrk4eeq32"qIbM*b8p4LFQ4N!!0#'U
+
+1FCFAlmdC-"N#EFXS*MAS[CIcf25+SP$EMPNqTlNXBe+!C&`JJ3,VDYm`M86'j9h
+
+PN!$2bAk1&b6`5GcHKH+cKr3X!A%kN@3@!6kaK3f'4%pm$c4T6k#mLPA0jA*r6E4
+
+)i(0G!LpPQ0LA[)&h!DVd&Sb&[XJ9#Pi0q$bqqeBeRHS+-aC6HI8YSih*fHBbYm`
+
+,N3%*%cU4!4!b4#*)IpG+KUJ0,9I`jP0k"q)[M)hQd1BU[L&PpNrKM'!%VN%aQ&9
+
+lN!!(5hJhQ9F-lhKLMLabRL,5XXpTZT5CEUqpISr*8ip@cT44,%imR5)8%*NXh4k
+
+miak%XJYlGkX"J8S*q)&Jj4GGh)!XB4+$TcSK8h8`1ALK&SZ[!,Nb&FQ(JmCeALT
+
+LZUAVU+Lb"qUC+I0*4c*9L4"M9DhJSf!$'%l96dC0@*GRM0Y)@(l$"&4r+&IT5Kb
+
+adVi9QXKI[JmEP#`C[F#,J24`,!6R+N%q*mB&1$mLGR!B)F,c*&+4+5V'EE`&r%+
+
+kClicJ$c0%h@#c`iea)!%rc1`pPQ0RI'NE(--dVX0eaLE`E04)4G`J4@#')J[E"j
+
+6+arkN4V,G&,P93RLL"B[eFY"Zr$&NN)2J`N3*5-`N!$D9h#$9eTc(JELC"kR#l!
+
+#S(RRrm+p6j)P*C%+B1P1T-pDB##H3H,aM425j*IJaeGPNZ&+HPPJ'dj$dME9%+R
+
+1KjXJB%XG#)&!kBf0h4R&macXeYbQIJe8$5c9T&2#+mXaB,9Qka,L1$GG8c(hFDe
+
+HUJ'2K%bi3YN(DLc0B4$c%)mdq3Y0p`HIc2[36*6MHDdFPZr)4BUUr2ZMB(M(C-i
+
+Q8QH$&bVaa3Z&keFVTNVXGDS0QX6DEBf3!"NmFf-E+cNbF*p&m49dqe'A)!d)h"B
+
+*dMU+K+))'DKpr,INJ(2a34d#6Q*Q!l`dC%EAk9cYm`6F%Q)"BmUl5BlFJ)KPTCV
+
+Z-fEKQhS1[F!l%03%J[$S+m*&jkiHF""Y)J(#@3eI3!j69SZfiHPi"RS-FrPD!TJ
+
+#YjLYPfp+YEV%G@H"M0KbJl`VX9YqMH[b6D)#M`##bj@i'TQFk4NYUUKa@Nc$&45
+
+3!&q5!'rp&Il*JBrZ![@mdFqJ+j)V)G@#'f)h3p*"eP-+k#A`R#Y`L)Q4AeI)mN)
+
+@Ue5L4XR(B'T"5qeG'"@4dL220`G*5!3++5#i)bqQF0T3!,4YK"1`,M4j"8Q*S)5
+
+#TRU5C@L$6"+@J-b%LbKZ(%q6,651*jB$l)-[fHFq-bhNPdJD0B%*qQ!UU$L%"`r
+
+U`S+dDd6aQeK2&Fqc6HJU&p`,TYRSC$lhrTAR)!e#0TUlfa4&LDdRNL[UK'Hrpf'
+
+5L&hjPJClBpPAC6+(PGL3!*S0+MQ"APFXI9!#*Cqf"'K3DmS*pFdiH!ILdIbB%2a
+
+(PG,c"cV[MMNm3(,RHa2b&Vq#!%SRapaNd#ZjZCC(#D-Md$&EiIXB-6"+,9Dm%))
+
+`6TBR03cj9CSliN[C2B!13`2,2--e8Z9L0%)!fpb"Mj8*e*Fk``0*+ZBp#h!-iEm
+
+d[kKXY3BVXjPiL%3M[FN&N3CRY+1L!*p)kFk3!2"!SVmpRD8c"#lq`GEa58`ISe%
+
+9cX,VBMdNBeD,SG%N-kL'dY'pU44Me3C1CPVe"Km+fk[HK@M2+$"!#f"e(8*cAJd
+
+"I"L'$2%$+h&'rBM8"RRP6"mb`3MMDke$i!-*RaA@!S@,BJSc+2c(Sqk10Ph,-@-
+
+mM,3Pe!5*P26[V0iQP5Je[65M$%DDrSm%9D8d@d*e"-pSZPZ`dBJ83-$5)J$HHH(
+
+!8S#Vl,&6*Gk-NJp*SI'h,ml)cELab,90Fdqf*N"&J@Z#e*YB@CaDISS#J(NIDMY
+
+9Fp'"9@FplqD',2&R@HDT1*)92ad5h@FYBT!!j+2INJM8C(#pZmhRU'Y5$@*i`la
+
+!X'UHVXCAXkrDKD"(D[kR38GYNfJD8mT2,[F2raR9h80iMaiMC$A62[j!f3FH0Er
+
+k%Eq($KcB1d&AK(k$LFbMrilXrG)p%`bH)a&$L[*,L!)c`-U-DDT@'X#!1MrT6Z$
+
+*Pi`VS&q"MIaQRSMA44f0R6)a`JXS)a+8Tc6c"%N$P$U%T"*6mleU0k@#hj)JpCT
+
+E1)AJ4Yi*VXNAFC&#rq"DY4K5Pi4S1M@0H3%+G8)Lma&CN!$5p&3LYiklMHGScI!
+
+FF!DP&+$'rShLZNC*4BUDGD`S!BNB!Z3)mUa281$a&lN@d-3XU3ZI@-29*i4d[dR
+
+KXcBM6UYAE#CilXN&piaV22Sp16FmP1"($IMrF2!,ra6*rq-JBU'Ie5A05!&e#Ne
+
+Q,IQ8'A-KU(VrA3re-q6-++3p%mq"4DCqaQ)-UfeV2B$!CAR'*)T1#E(Y3ph"e`K
+
+SH[Pq`+I0@[jE[!A[%&""&daem()-AN"*j)94K8KE2F'9XJr4"C1,68&@e8C-K6C
+
+L&!ZT"5XG%31DFqBMq##bTYBfQ3@IT"(02LF`D8$64Nk3!(kp(SB3eq[*[SrjJ!Z
+
+q`j%9Xe,@Zbbe4,)lKk0Q-SQLAJkZ@5%'%SKb%ScR0EShfV9LcQV[U3mVdU8fbQR
+
+B@933rdT`8Z[*51c"KYcF2M$iDd5"mLQ)$aF2A383%8V@`RL%kKTQUB&Zm@cP8LU
+
+qG)h@af'E9mV"SHS43Uhf@64*I&r*,J0(VL5"M-M6JeS*&r'2NJ!XS'L56ZdV`N6
+
+X2@3X3594-L(D1,C$q@S%MmSZ,39`M@iTL-q5#BhA&RmQT@"9P8PZ)CL&8b1,lDK
+
+%9'JTQQhC!j12G'#A&M6A-@*T&*!!E8hVbBM3!Cm)emRT0XJJk9KX9A44!kQT@DV
+
+PAh@-kf$0L0,ZJ!IemA'EK&&b$$kX*1FVkm#U8BH05f**%9rPe3fTildGU9#AR"C
+
+,K+E0U%4ca+iZdT!!JDe"jrkpcJbS)PS%dES'mPmTd@PqeDB@Qb`"F3k9LZU9I)$
+
+DPqcT"+[[l9`69E$0c))*9''jLL6M3%981q+Icrpb2Id6Hk@U3G)94DN90K!KYkJ
+
+HA54d$DqfiG8M,&(3B8m`4QK5#JhQ5MXV3JCIXaGkdb(kK+BqUHlIqZ@#0'4p'S8
+
++-#+G3P2'Qr4L(J$N`5bkiRrA&5i4fj2'#)mPl[QM8YI(ZfhD6%N#*EF***BQ)!L
+
+qR#l5BA-,BVB#r2K3$)4dQ-%a+K9Ih9DjVG)$#rHCQ1b$i19Gpe'h0jKi-i5A9*C
+
+pi5+IB4#!A)!dS`iCf[X@&(r%8qq!Z85NJ6VR@SZadPIB"'blmTi%AllimP2*$LX
+
+32*b&BpK48`fpRmbl$pl%qk1aLCSk'dGqCZ4Ia9j&,-!R)9p$SPh%D9-(AapUMa,
+
+91qAd3q(LAiK[4Jef!QVLaiMFUl'h0*%[NYZAZK5K)VlY%M8&Iim,e&fm#+ac1f1
+
+`jBbI8$"lNX)C@R2TZLUNVlSCR,!-YLl92D%Ce,$Cc*8C!0%e8)%5NQD(dTkVPG3
+
+@+M3P3E+0Idh)deU"V9,Df$("FCI)rZN3(3depP+RJ%5(CL"0)&,l(k[TMA4j0+4
+
+SdQRYR'-Mj*U18`XrITQLk3qbVq(fY@f1"Ul96H4YQ+1b5XU$$X-*Vd)5KJQ24!L
+
+S(IZfId&3&48N2j*))#lhKpG1lF$lG%lp3#De6G#FZ00)d4IN$k,PY)XX2r(ZB)f
+
+r[+f6#lCr`ZIE6KpA5E3[MG81b%ZC,USjC$V4XUJ@'1%KP91Yk`Xc40+,UYGk-"Q
+
+KpE[Q@E2q$b4Qp1D&kE2f@Zhric)*ZY[+lV#HN9Gc$A*d)mS9q4SaiIUT6!SdiYl
+
+N"2j+Q"q0[DL00+fqB'X9bbPXiB36$9,E#lmL4TC8!6JUa1)m*&Ldb5H+!9$ap,S
+
+#54LHD4'PpERb$-*dD#!F@8(6'ZSJ3[,Ii0--TbPp2K45m0-X`B&TTQ%iB-5bPiK
+
+b)LQ2@QmjJ@)mUHEBETLN"DDbZ%jKk3h-$mVYhX+&AY"ZL5V58T,[8rT(QPVLpMd
+
+rS!6Ba)qdCl0"hGp8ETC9)3lQXA-$CQ+q`frXH09[eLHNL40@T5K9-'I5RT'kMKr
+
+UXDk1&JG5[+&Yd%MDE2S5qqr0m61UU%4'3,G"b,GmE8Q$S0qJR"#brHh-dSEL'[V
+
+jVJAd&Si$1b9!85fqG%XR`9!ZTC*(`MKXUT((5BlhkNQ1k)Dl$T!!GA8GGQD)iZp
+
+BiBHMBlX'kci2N!#JdqA96Ub,CC+b4Q4q$U"*i3dIdJ*cem,'"+a-&qQM,ka%95h
+
+pm6ULmY8d4p+U+dS6`J'9PkN9c2@)CM!-%RZr+3X%V$`qY4NaN!"dIL,X*CJ0-LH
+
+X4Qb@ifXTH@e9Xj8TQF3K8,b5l6iC1*(H2el#(%D+p%F%%$Vqi&E99IXYY0EP-N6
+
+m-fhZaq+@,8h)(XUZMmPXbmmR!+E)Md0*-)UCPV#Q3DfSe8rmU69EfjaH29SG4ca
+
+XLG!95I5U5ZGaq"J$LU0$Ddal"a3"d2dQiA0,D0Pp&D-C[B#[e5iZT)E8$&"bX8H
+
+*ZRPk-`HSG3jS$Ecp!P%J$,XRJPS(+*mHL'Nr@')SV-JjiKa#hhJaK(`j&*`9b9)
+
+-A3-4G"kUj!Y'9MqqbUF2+`-5ARc$VCIGl&dl48HQq28&E1NJ'#"VK2)F081@+$e
+
+(G[KjjqG*1Xd!Q'*46[&[`$XLYZd0)Ti8*MKmG#ZNIBj9#!$T4CM"-iAEAY4j4#+
+
+%h)R6"AK`L['I&$BC&Nm(4q6%X+#N08F)N8`J5EKQaj!!UZaAX@p%#S2M&8#R,r)
+
+[C0AL+LRUI5LIM8ZE!qeGZXIY@`p"SPUPCP$(R2BHc4Z(@Q6CK4GJ[LDNZ',Cr8C
+
+$ACjV#P6E3-f2a2L'X!H&eP*Gq1C86r"kTSGb%$h+`32fGD&453"Cr8L"A8R@Vdr
+
+!dILFccr*E2TR0(lDC06T%U`9@AMN0kJDGC5Xi'&r3VC`e(qe+e45"J!L'`AIK@U
+
+U00)4Tm5US!9r50r($6h'Gh@5EY&3F)'KMpcDR2pLhZlFAr6kK8`iBTq-)PZbH-8
+
+QMC@-0*`Q'@fQN5C@H#FG"LJ[*)p1dV$JC0a0M[SQe9fd&h1+*MXD#m"b`,038r"
+
+qA3+3!%rm`ZGQ0e-[b4HB*l"$Z2bTf`BB9%M-4SBR*4(!FHYkkR4`lYjfKm2ZB2a
+
+1q)rYQTHpSqlPU1I'Tceh-6ar0HbqG[f4Am8kGLI$AXqGRlLMdql`9Dr$GiBp[Y$
+
+H`SfXjJ#mFLkrphiBp`CMGi&GVIjiM'YH[R2GL`XFehejeR0RhEGJ8qq(Spl&f,d
+
+pl3fLFjlhYJmm4Z-Z(q`2h0XKPVJ'Vq3J$R%0qkp1aqldr1bi0j5eVUp`[6cX,VV
+
+$FEmhLS$$Qrla&Y5plJL`lEQhrI(Tq5AZ0I!)ERI`c[fY2cMZZ"kqaL'p(bk'[4(
+
+`Mh"Erc83kq(MrZ$Sl2*BKX!`!3B'M-%6)!ZFaZG#$Iq@[`jJi,lSG@m)rJc'hCI
+
+pXcj1"QMZT$mHi%6C&qXUFNHACef!H$Qm1"ref0mJKA!%#$IXMrlQZU2)L2ApC6F
+
+F!REKKYIG`C%3G8GN`ZhHR9r503,h-d"efL0"j!%5THH1HbHpSh(r$HL0Ph$Qk2+
+
+eNZISI$3@JTbGZ8([#(KeKqrFU$GmdcmL$k*Klk,E"rfiN6BFmSVcJAS,V0Z![&#
+
+*hKYU`1AJM'J2HppI!Xp(*H!0h9G3'j+TiAhdYSrMbG"lmRIN5AaBNrmGC13F!m2
+
+[G*K0#!*j!%aKZ@fV#K#&@Tfk,m%'F"Yip!8@!%&#N!#LaphAh9Hp85F+)L#RfjK
+
+FaidZHNGprS$[)6hJqTQb!LVkr59CM!rX#0F&R3NYGFJS5`fQeJbm4Z$fHehHVfr
+
+Ik3peiH`Fr-)eapeaPkI)[erfq0U`0`"I4%kl4dHA3dJVAq#,3'0d#E(Y$i58%I%
+
+@0Hm2)5fUTm)cGp,YRee#LRBDJm[235'H*&S6#1P&CS6q$$A!p8p`kY'TXCG(YF3
+
+p"49Ip["-prJ0$-#ah4P"#dGpi`3qN3Z-4f*XC'XDq-TlM`0qh2lM%kK[d3&f*Bh
+
+@KY9Br$mq3VQPF!1%(HCb5bUB1H-TM28mAm+F@aT5lbJeqlDfdQ0Q'Dd3aNXBpXh
+
+KBL@"ebD84Yc-Gbaaab05*T!!6YU-%D1'(VTc*ai8-lKE,kJH1!afFTKN8fjUTU"
+
+$@GcAKr`LVUpNV6$MTFh(1KS*Beiq1G)D!KJK8@JCAa0D)KCHPkPKXD6Fpj'1+Eq
+
+dML@E`@%X@KFSG6-)!F%YLLrD@89iTdP,1cC',188Z3($VLa55,$Mfrk5iHf&1'!
+
+2H4j)SD(`-TF%P,HM`@2cee)99)`*jc8$!"Y"qJ[j*1rlaB#'!*L[c0K3eG-`3T&
+
+J-'HDa!+Ba-3)-,N+pjhFFMqS[PlM2MQ!RPmLMqrdDNQPQrR3$GYIK'hM$FFeqkU
+
+RBH83I24Tl1QRRI&kP`fh0kP4f1Vj%T28-iV#eqIqb*!!8L(-i4AlfiddcL$YdM1
+
+Mh6d"fL+fKE!cERTSBjXM""Uj3&4"jSlFJ0H#YDF&mIBHUBlY,eT4@-TGL""4K[@
+
+$6SMCH-+p5`HjrQR54k!*VT),IU1CMXR,KMG69K9L,HqeUPE2+'a@)ViFCZ-)6BQ
+
+jjK+U'0G8ZRm%B2,qrDTrjhr(q`%L&iLP$p!13Z"rYNSP1`+kUFaS,1%Z6C&R`%r
+
+(Ij(d`H@NA(keG,64J@D,#U9Rp8*q3K*c-9$3-0me6k@pJ5+06"hK(A%L[!'AYTG
+
+3-"2E6RQ9)8j$-%r-[*ap$@JIYAZVh!q[SrM)3M3Cf(dj1Mp$cR$fVXh)ASJ#'2R
+
+GDJdjql[X90mpd6qL3%6`A[eVRbR',jRc6[*UC`EN!PY0$8d4(lkLc95I1hR5!L'
+
+G'+MVHXP)9aUYpEkEadF`#+qE@[Q0lFf1j#BarR9Tp[aD5T6@Hkc[*Fcdb3Li@@8
+
+!&ZcX5b)VAB*Qj[360,CDUTdm8A[-Tbc3L8UH6S!!5X,8i#4$H4QpSI,T8lSfLFh
+
+,LThNGYhIpL)0E*RKiI#i2)&DrMaIipPp[h%IKXIXGDb5B1K"0X#,U'4BM`d)2!B
+
+$*,-ZV*AMYGUe0Q1EHr8QTFmDdZXSibKqUG[-A*h955iX*U!&"TI-[44jNc+PbiV
+
+[mM@++aP)TST1r`X&pSIU%NJ0J#JNd`JcA(Bm$[PlSh02@)@9G5#S-GI#X%U,5h5
+
+6JT-A*BBaV$k$Brp+00aT2-%1KKLH[qKS"'IHS4,M0C3fcll$AaU"A!Dl02*h4q!
+
+Cql$$[mf"%fXk`[8'#Q)GVXmQ+c3UV#0DYaQS(bfrTFI!mS,I[2BI-YrAj+Gj5lK
+
+@AD%DKN0S0Z525!Ke$0PJ"8`Xp+[*8fFU4@0&!U'#l,Ld&cFG1Mmd$apTarQkL*S
+
+#b4G#h#59HQb#f%,Bipqe%2hmGbdmeTMq(`#3"30RF'aPFQ&X,A"eBQaTBbeXD@0
+
+PER0P!*!*89d!N!m+ZP-!#YDF!*!$&J!f!3&849K8980#6!%!YdhLQ,G0iTJ!N"U
+
+&C#!J#@KPE("QD@aPF`#3&Qri!*!$9`!,!4-"R`!!!@B!#YBX!!b&DJ#3!aB!#YF
+
+-!!!#!2rc!+m"!,$LQ4Qj[38R!*!&!GBq!*!&!DjH!*!+'+%!$3GKE'a[F'9ZCA0
+
+eBQaTBbeXD@0PER0P!*!*FJJ!N!m+eT`!#YIP!!V@R!#3"&4&@&4dG(Kd!!#j[1T
+
+lZEcUI!#3"iN!N!GT!!#+Z`#3"L-486U,aHi`fS6#*-KKPX0Ki!C"IaL$+!2$2T!
+
+!jFY+pb%5LRd!-ci3FQIj`J"Q!(F`#$,m3A+d1B4m)4c-"T!!pB@5K8NZaKr1GA!
+
+JbBF3!hr)%q5mZ3S1mUHR"hdjG!hiL8UBR5`8lJF!N!30#f&XE'phCf9dFf9dE'P
+
+M,@aTBf9ZFf8!N!NUSJ#3$`VA$!!+f3i!#YDF!*!%9%9B9(4dH(3!!,QmkRfj[1T
+
+q!*!'!4m!N!Hj!!#eN3#3"V-N86U,aGkTYG'9CR3Pj6aUa)hml[5J6b)8*[NcJ-[
+
+C`5J$rT!!eqpaBemBB-D0J6X%h"MlXPJ--!4Ff!IFJ%A3ir0bb*H,F+![(+U(K8Q
+
+qI[i`"Q%'FN%[5#GT+q!MH-j,q&PXd1raBj!!k5-k-B!)K(-[Z3e,%XFL@%E#q%#
+
+'(a'IK%%q(`MQ*$Q!ZG(3R8@D`!D`c5,))$B@L0I*NQ)3cN-%5Bhk-DQ&C!55$#f
+
+@Q!m*-[&*NSA#r3#3"!d$B@jNEhGRCA4cCA4XD@-YE'PMC@jcC3#3#H5N!*!2#YI
+
+P!!VE$`!+eT`!N!4849K8G(4iG!!!ZEcUJlQmkS`!N!B#I!#3"J'4!!$k4J#3"Q*
+
+R86UE!H#-92*I&BUA(2&r(53R*dZ%`L6)BCE$BH"bGM!#I`C`"i2!(mU*@-LA%p-
+
+!a)`24IeK(c$T,'R'C!"d#3a,bZ,#'+6RXJ#L"%29`bc@MIaK'!,q-2#i`ckj2a6
+
+fKF*ql)ri!2*PZT%hk!X6KbJ$%%H)Z)1F$j!!Sk&,-jTEfqa1Sm&"9,U-'a-($BJ
+
+`iR`LhV,J@Ra"mB)`LHq,kL-4lXlb*8Y)6kK10D&pb(GNJD!rM'8N"&('lf&b@J%
+
+r,mH5X$[J#`%hD6i%[RiX)XhiT,X%!X5&QK![,''H%ld2%I4b(Pk-@X!LdrjPP9M
+
+G%I'G8q@XA$jYBCmAC##B"B+q$*bMk@FbZ!PTNS-`*)C8a8+(CZ4",Z59jC3Fql,
+
+FrT!!2j5jG,%Ka-)NAcphPMrNma,rIA)D"ReDB9+59GI1#%41BeS(L`[`hi2hE(B
+
+A%'XlJfBJ4G)$G"1R!JA3GTD!jL#jB3mbL!Li)p$[cE&er"&r6ZqpE0$IKb$rYD#
+
+FjdIm$Lc%M`Jbh-'`,eNSh!m!N!-0"@&`F'ajCf9dFf9dE'PM,@aTBf9ZFf8!N!N
+
+Z5!#3$`VC$J!+h&3!#YDF!*!%9%9B9(4dH(3!!,QmkSkj[1U6!*!'!@-!N!I9!!#
+
+68`#3"SQN86U(`p)&B&m@'h4M(r#(@!i(r@%X&#CjB&D@1q3&%!()qT!!'rYK+"N
+
+!*aF+!mciJ#K1e83J`am-qN1C`)r$)"b%j'hLai``LHF-I&RT2K3'-!1)%Rkk#!!
+
+A#BFF(kCXK[&$5c!&B9)@&mBJh3IF)H$fH(`XGUF(Ph+PVNGDbJXKZ5B'rV!`LI6
+
+LCVU$!%2JCYPJGNjc3q62mQ0ra!GFGZ!1!hGL!"T)jc"4[F!-AkFE$2Z)!hEhb*e
+
+0ZTGVL6K-kX'+qfkm@,S3cfR!Rj&3d)A#r3#3"!d$BA*ME(PRCA4cCA4XD@-YE'P
+
+MC@jcC3#3#EJ*!*!2#YX2!!VG63!+eT`!N!4849K8G(4iG!!!ZEcUPEQmkUJ!N!I
+
+E!*!(L3!!I$)!N!BU)&%kTaki3jP"(d"ZVjm,#i9*AZ51KNN)h-J$B!C`!imIHB)
+
+q'BMk-3-`i`1B3jJJ,CacYAdKl%1,ib`Tc2SmrJbrcaZcdN!BZa(fKc,M6'P`1``
+
+B(b&3,[3#AcrX#r&APZ3*3NmJkJm68Kp",M2AHqBP1Y-"F#eZ`i'q-!K"$,*Ja*F
+
+X&1i(!*!%$3CKFQ0dB@jPG(0PG'aTBbeXD@0PER0P!*!*R!#3%!VF9!!+hMS!#YD
+
+F!*!%9%9B9(4dH(3!!,QmkUQj[1UX!*!(b!#3"hd!!)(U!*!'JRj41UIHTE1"%*F
+
+P&-GZ(i*XL9#B"$R-FMJ--1-$EZ6"lP#Q,i4P`"m#APmQm[R#-J!cJ*mJr"!Kk3"
+
+dmQ-'i#J8*Z8N#2"#JVJALRl%a51fIKL%B+Lr$d(#Li9*QK6b#R,bk[KBAmMV$f8
+
+#'-T4i2l-8!jmKLDZ,K6Z"`#3"!d&BA*TG(PZCA4cCA4XD@-YE'PMC@jcC3#3#Gf
+
+"!*!2#Ye0!!VI4`!+eT`!N!4849K8G(4iG!!!ZEcUXlQmkV8!N!B""`#3"jd!!-)
+
+L!*!'Lr&41UICe3@`#(TmAJlj3ZiXRe#B"$R-FMJ-h#$S$f-!-`"QN!$2"d*F9VS
+
+2KEANl))XImLIa@A*J0HAiHD#@!EF)5r)F[IM8b`TPd9X2j3Mid'8`meP)FV!-*&
+
+#Cr#(Fl)#T30JaRc##JQ6I!J4VXmhi")NTN))`Tb(@Hb"[(VFQha,U5$,j`la4KE
+
+QZFr+3)p4+1M2mQ1I0eNSh!m!N!-0"@&bFQ&jEQ9dFf9dE'PM,@aTBf9ZFf8!N!P
+
+0jJ#3$`VH1J!+i3J!#YDF!*!%9%9B9(4dH(3!!,QmkVHj[1Uj!*!'!M3!N!B"83!
+
+!3`#3"aqJ86UR8pF&K2hpI8,aiKY!j-rdKb4#B4,N--[K-(#(J"XKGcD!'8$%-`S
+
+JbjH9lN0K)-lL`KLNqi!EX$$Xark)$rK$f*IT3a+C--RRpM!mGF,ibF%2%B!9$'B
+
+$Iik8QmALE"$dKh%b!,SF`mc,*['H6jJ8pJ9p(ZccJUJI-m$X-PS*f!%HaKh+M+G
+
+-SiX2SN1AmB%-2b+05!p8CdQBK'4pD*hQ3LlRY3+i80!AcLQMN!$EHi'dK+A2L`f
+
+&5I&'bH#F9"c+##8YeAD(IB"h["BA'HRGGiIj'L`FplE#`%pfjBHm[RkN0Y@9cIS
+
+p1F0Bia9(B9)Y-XK!YJ*q8U39bXD-2j5C,)QY"AZ,IB"&I$d15-m'$UICjXSCL)I
+
+m[T!!0bc,A8XkTL5E*4`rTchZprU!Kd2%ZBIF(Pqi#9m(YT!!m*9RfQ*IMpdJ(AJ
+
+'Y8a*&JVh!`#3"!d'BA*bBAP`CA4cCA4XD@-YE'PMC@jcC3#3#IQZ!*!2#Yp(!!V
+
+KZ3!+eT`!N!4849K8G(4iG!!!ZEcU[,QmkVd!N!G9!*!(33!!1JX!N!Bic9%kTe2
+
+Aa3%`i`pP#R11Em@1,!PbQ19`',LF(Bc!Rd&b,[#(5!6mBH!1!6G#lQ`C-1NXD8B
+
+!56U1qX1qC+&`2`#3!`d,BA*bBAPdEfaTFh4XD@-YE'PMC@jcC3#3#8QM!*!2#Z%
+
+)!!VLMJ!+eT`!N!4849K8G(4iG!!!ZEcU[lQmkX%!N!Hl!*!(C3!!Y#%!N!E)Be%
+
+kTe2Aa@@hQ00F`)f3!$YE+%b#('Bj(!CZ%25(-BJb-1`$@EkXG"mLSGJ(-,2i(QA
+
+NR2d338S$ACMN)JR2M`KFBM++0!0r11IkR#!-0'%5mQ@kN6IS#bF-4I)f1FIq6(m
+
+S@5MF$`!0"@&cBfPTG'pXDA0dE'PM,@aTBf9ZFf8!N!QMM!#3$`VKZ3!+ikX!#YD
+
+F!*!%9%9B9(4dH(3!!,QmkX+j[1V%!*!'!5X!N!HY!!$)Y`#3"X6@8ESd[GN-2)`
+
+E#B9*N!$$,)I$!$-qi!pKAkB2!A'k$dGp[K")!Hk3!"FS'cD8N!#mK3(bXFJApS8
+
+52%5c*0l%mQ!#pN-jZ93`m[U5!6!6UCKJN@R$%%B`Q+-ZJ"bi`m+NK*8IbJ6TENm
+
+J((5('CmAX&c)JcNhpX13!#bR#E3BS9#Zr-bD4&P5"N5jZ3J4Qb%-HAQGZF+F12&
+
+MKK3rNp@&5@)pc',Gb!HFZNij"HS5SA!r!!d'BA0SD@CdEfaTFh4XD@-YE'PMC@j
+
+cC3#3#X`!N!m+iSi!#Z5F!!V@R!#3"&4&@&4dG(Kd!!#j[1V'ZEcUdJ#3"lB!N!H
+
+"!!#cIJ#3"c"4ZV3fCT-,K,LX92kP+K3Q33kc(!i$%4mU!$IbBbE,KrdHHCMaCf#
+
+I&f!)-1-$39m'"ZRC1D#U#+6lF6KCQ'61b"%"IaL%I*PZl)riC$Ni3DGBLSrpQ3`
+
+'8@)(BApQ5*MNkiGpSE!IKT)"F"'!(mVTBF#&L5DG%eqQ$a&(YKm!N!30!@"cD'P
+
+QG'pXDA0dE'PM,@aTBf9ZFf8!N!P%A`#3$`VMU`!+jMd!#YDF!*!%9%9B9(4dH(3
+
+!!,QmkRLj[1Tk!*!'!Rd!N!B"-3!!3bd!N!BKXe'p3G!IaNQjMaVdTb-hbJBXJKk
+
+IPd-qL9#B"$R-FMJ-h$NSm2APh%'!)I#6M"mL88JRra-rCS$(Kl$E(`*K,Mf-rCM
+
+$IKJ+*`Z6c"Q%2["PTIX3J"N!-liB@4MjiCc%"#)[%-P%31b"@9PZ#4m+q4H@P!'
+
+$34MeKc,M%Tb"A0!,dRh!(5)U(#21`mX+Ri4aBlj#Kr2i5'eK[%+)mN)a&dS'`-8
+
+cdYMB(H4m!2RBS*X(8KHL!83lZIlAKXMr'ieq454-bZd8h$MXc``YVKDqEjBPj94
+
+l2FM,9YfB"mpY"@Q#NCBVfp4DaTZp%85&rAlZ,$ESdj,K+k5,#HMG,30#N!$ZlJp
+
+NhG)c3$Fh5!HH(Me!TKZa`@`JDlNdp8f#RIL$36)r2i4jKjcq(Jr)U(4M`[d!N!-
+
+0"'*KBfYQG'pXDA0dE'PM,@aTBf9ZFf8!N!Re*J#3$`VNR!!+jc)!#YDF!*!%9%9
+
+B9(4dH(3!!,QmkY1j[1V@!*!(Y3#3"i8!!&i8!*!'M&*4VA6kGX$V$f0KUpJl5mU
+
+#%9mBB-B(-)G`d!I5hCj!e)fm-Z"2pLA,J+qIfi1$f3#b,!cl-H&%16M(Mh`Hl)F
+
+KB4*Qh"MiFEd`b("lr+&-'8M2cQ&`eZIaCrKphKaE+q6a*3-JGT&NhqIf%K,!$"k
+
+%#P,HJD5-%',JBGbK6&qb4#MF$`#3"!TLB@0VCh*[G@jNG'aTBbeXD@0PER0P!*!
+
+*U2m!N!m+jMd!#ZIE!!V@R!#3"&4&@&4dG(Kd!!#j[1VAZEcUf3#3"cN!N!Fj!!!
+
+&N!!!N!EI+N*"3dY(8Np96N303NF0$3P[GA4`GA4c)(4SC5"RFQ&`D'PMFb"LB@0
+
+VCh*[G@jN)'0[E'pb,Jf3!`!0$'*KBfYcE'&cD'9NF'PM,@aTBf9ZFf8!N!P2N!!
+
+!N!m+jc)!#ZNi!!V@R!#3"&4&@&4dG(Kd!!#j[1VCZEcUfJ#3"J&A!*!(l3!!`hX
+
+!N!CbrP'YG2TfD4CG@KZM`3%mM"X*Pb6HbNf`*-KKPX0Ki(*f-!*r"X#-$rK$*#)
+
+!PJIl%)Lk``!LIkBrj!i'Xi%[4%+ZPf!5##``%`U6SRl-!$G)GhX#iD!lc!"aG`P
+
+)pf9!4'`5!JHHi)G!a)H`hq-1%P3F"Z+"%N!FKXJA)9)Xb8q+')8j%ZHXcq2Rhbp
+
+#Q*6JHd#@cahbKc*P`+5cT"N"*%A&8ArBP`b!f,kN4+`d*#@P9Fj+p-0,#m,k11[
+
+fq'3!Zp0P)15,"[dKFX@QST!!$m!-BC*BdUe(IEP8dDaTFj'f5II",3B#L9!Sh!m
+
+!N!30"f*PCQpbCA"cD'9NF'PM,@aTBf9ZFf8!N!PcP3#3$`VRf`!+kU8!#YDF!*!
+
+%9%9B9(4dH(3!!,QmkYbj[1VG!*!'!A3!N!Ip!!$Z,`#3"NB!8Df-*V[6k!"4L,b
+
+T1@p9B@lQV@8CPJ3jc()i$&c1$NEJciLPECMP#i0dA`C%[P`8q%0!PkBhQdNf#,U
+
+a2j3*`VkqR#rNm3Q6a!3N1"c!$"$dBHa$B4R2Y))XidlhBEr((33%i#**-J"kGpJ
+
+R$rY#B6rf4r`i'rM$`L5[Me!(rT!!c`[5X`&QI#$L$R)qhXM3T4R0V@fN[iD$i)m
+
+KpK'!KIR'#15(FNUd%1NLj,,5Fq`T'2[#A"#$,(Ff#%&-'K8TlXlb!AFB42fB!4C
+
+M@TUM#H!EG2ZjXpLJ6bC-LJpS(D55kMR)F!I$2S+hh4ajAiq0!$GLCC!!dL!e@5M
+
+F$`#3!`d#BQCQEh*PF(0SC@4`D@-YE'PMC@jcC3#3#4q9!*!2#ZNi!!VVHJ!+eT`
+
+!N!4849K8G(4iG!!!ZEcUhVQmkYm!N!IG!*!(C3!!4-8!N!BIkP'Y1VK-CQHD#d3
+
+KmN)8p)HaX*9TkC8Pq6-!CRc!(f)j$2aKi-k*D`"bQ#5b1hKJ#,[p)AmS%lL$3C!
+
+!6Q#%pIb)@#JHaShF(Za$!#l4d3%`Vl)MlB@GU%(CUJGC[UcdP@T-Z"m!N!-0!f*
+
+QFfpbCA"cD'9NF'PM,@aTBf9ZFf8!N!QT9!#3$`VUT3!+l1X!#YDF!*!%9%9B9(4
+
+dH(3!!,QmkZ#j[1VL!*!'!Dm!N!B"!3!!5qm!N!D6m9'Y1VK-CQHD+`d%r@%XE'@
+
++(9J5j$$,i6"`j`6!!d2Bl3rj3jN!-ci3j`,-!$khK`&C[Uad(q,2&2G$K-f5H,)
+
+1J"N$2a%*J3mKL)!rJp`ZeK+P+V,F,"CR!m+b3X)N0d,ZE++KZK)F(iGp`3b3!1A
+
+1"ZQqA*T'SK"Pr+3,fahfj8M*$P%)*B)`c!AT%J"F$*'d)4Idm[`*mQ2X#`&hQ25
+
+ZB!M51CcK4f(5rQl1'T6B'P"i#%6aG"jf3ei#aKK90d3`i[Ik[-3'Yc0%rL`rpNI
+
+iiV"2Ka51ITce%F#)c@dqm5%hpN25G!*K-!bX1SH-Ip(6M$)b!!HBl%kM6YmQ@5M
+
+F$`!!!Q*RFfpbCA"cD'9NF'PM,@aTBf9ZFf8!N!P99!#3$`VVHJ!+lC3!#YDF!*!
+
+%9%9B9(4dH(3!!,QmkZ5j[1VP!*!(13#3"cN!!!@3!!#3"T1p3N&$5dG56e914!e
+
+#4`d0#@peG("eG(-JG'KP)'GbBA"SD@0c)'*KBfYRFQpeEQ3JBfpXEh)Z$C!$!!d
+
+'BQPdB@jNF(0SC@4`D@-YE'PMC@jcC3#3#F`#!*!2#ZcV!!VZ83!+eT`!N!4849K
+
+8G(4iG!!!ZEcUjVQmkZF!N!G[!*!(63!!Xb3!N!Ck$P'Yc#kGc3"#A&BUre)9LPF
+
+Qk'8G*#FR5i6#*-KKPX0KJ"NI52IMU$rX!c`YbJ"q%[0$I&S$8FE[B8!@&mBJh8G
+
+5L5r6Km,*3Z&q!*!%$3CLDA4ZEh4`FfKPC("TBbeXD@0PER0P!*!*XA-!N!m+lC3
+
+!#Zm#!!V@R!#3"&4&@&4dG(Kd!!#j[1VTZEcUkJ#3"di!N!G"!!"eL`#3"X5B8Dh
+
+-,T[G"8*FPP#B"$R-FMJ--1-$kAiFpBGpJ%p('F"2BRk)T$83CI`H"Q4aB3c5IF!
+
+G)VR%PqP$b8,KIJ#3!eB!$39LDA4[FR4`FfKPC("TBbeXD@0PER0P!*!*G(%!N!m
+
++lP%!#Zql!!V@R!#3"&4&@&4dG(Kd!!#j[1VXZEcUlJ#3"f`!N!G*!!"%`3#3"Rd
+
+#8Dh-,VX6K,LX92kP+K5[#0$,1NK16TB)K8Q3!--XKm-!-ck3!1l(8ArB"`JXbJ"
+
+qN[*$I&J$8FE[B8!@&mBJh8G5L5r6Km,*3Z&q!!d'BQPdH'pbF(0SC@4`D@-YE'P
+
+MC@jcC3#3#A&%!*!2#Zm#!!V`K!!+eT`!N!4849K8G(4iG!!!ZEcUllQmk[!!N!G
+
+j!*!(@3!!"0S!N!CjL9'Yc+l1GLF)F9QTr%Y9+&kCS*GeN!#FR#`4#T-JKeN1K`&
+
+QI#$GMk2qX!mB1qXY(G,-(Bf!B+--i#Gj2m4M0""Pr"i'C(&K$0*p`L4r#2XbI5L
+
+F,"6Z"`#3"!d#BQYdH'pbF(0SC@4`D@-YE'PMC@jcC3#3#H&%!*!2#Zql!!VaH3!
+
++eT`!N!4849K8G(4iG!!!ZEcUmEQmk[)!N!He!*!(K3!!AK3!N!DDlP'YG2Tf`1X
+
+2Bf'Vf$Y,bS)4AaKJaJF`Kh$3"p,GRN$8ME`bi%rf*FZ!VjrEJi2C!,)X$2Xai83
+
+j1-H2I"lXKb&K%QEF'2Ka[6$)F([mS8`C5-r1BA$@jr&Rq(hH(&XVj2%P!b"fN@6
+
+IjrB5%X!-(S3+8Yk"T)`3BZ"Kh+&-Al*%+0`2!*!$$3*LE(4iEh*`FfKPC("TBbe
+
+XD@0PER0P!*!*%8!!N!m+m)3!#[*1!!V@R!#3"&4&@&4dG(Kd!!#j[1VdZEcUpJ#
+
+3"pS!N!GP!!#$3`#3"T!!b&'Y1VJXZM3AL%,NK5MS$f0K+m[5+d[bC`$-q)!ra()
+
+Bq-2!R42A!13`5@4hm-!3G[Y$rP!QF!H$)*h!#"ZiLB6LBGc)lF%q"1!5'ad!mbS
+
+jXPl)L4D8,AD3!1A,5PpTaS6l!3#3"!d'BR9bD@9NF(0SC@4`D@-YE'PMC@jcC3#
+
+3#4Kq!*!2#[&j!!Vc"`!+eT`!N!4849K8G(4iG!!!ZEcUplQmk[J!N!G@!*!(53!
+
+!Hq%!N!El)e'Y1MM04S03Q!3jc()i$0c!!d2B&b+R`"r'`"rb"$Q[2j3*h-%J51H
+
+3!0rR"5&h&RRcX5mV6!!X#6-q%)8S%'EG(Pqb8,JI!*!%$3GLGA*TC@4`FfKPC("
+
+TBbeXD@0PER0P!*!*Y(m!N!m+mNi!#[4F!!V@R!#3"&4&@&4dG(Kd!!#j[1VjZEc
+
+Uq`#3"J&q!*!(j3!!-Md!N!D0a&'Y1MM04S-$H'!)qd)i(25(X6!hp0Eb%%Z#('B
+
+j(!BZC`FMm'F!c2K!KKq&-@!4p2Lm(2,*3-50r1ld),P%L-m0I3KR!pi!3ZiXReH
+
+Bj!rPN!!c1CRe`b#G3hkI9`C-1NYDMPm)F6)!pP!`HiPU`[K$QF!I%LEaQBbGq-,
+
+Bjff5`aP!NV&K9KB-!5lX!e&r-!M5qIH%!@i3KFJ,h''LJ'9U`L65#KPC5d[XFCJ
+
+%RM4N"B-`k[1#-#5L&JECN!!$(MHT)P[4HpekJ'iGG8kcVTA&f+-(2i(,+2keRAD
+
+(aCcQkY%M@5MF$`!0"'*eFRPPC("cD'9NF'PM,@aTBf9ZFf8!N!Q!83#3$`Vc"`!
+
++pCd!#YDF!*!%9%9B9(4dH(3!!,Qmk[bj[1Vp!*!'!8F!N!I4!!#Q@J#3"Y2"8Dd
+
+k1,X!$`aKA`L(Jri`&JU62$!Vbahb*J23LN0qAaKJaJGB"$dq,iGmB4Q)Z*(IR4l
+
+N6mLKk0#(F$EJq9bB&(*RqEc!(mVKqL'@`d5P$Y*j'F`P[LcJ$i-3a#4X"cR[BPJ
+
+U%('B3#%p'qMY0TI4jNU6!BI6VMFD1ML0j2C3jc6V@PRi%rQh,HBd(Y%M6*rJRe[
+
+"BLHX['Ndm1eH!(m@'r4lh0J23cbI#Q**Q2'(-X2!MA`j*3f4Rmc$iG&YZmjL!4#
+
+"X$Z5Qc"e(Bh*3Z&q!*!$$3GLGA*jB@aXFfKPC("TBbeXD@0PER0P!*!*1Xi!N!m
+
++p&`!#[C+!!V@R!#3"&4&@&4dG(Kd!!#j[1VqZEcV!*!)5J#3"cd!!*6`!*!'@AC
+
+4V6SiZqJXPU6F4`hkdj%EC3-@3Br2bb'I4#K-mX#X,(I)Q`b!,MdGq5*q0rD&!8m
+
+'[GhQ-YTFDFP#iAi!!!d)BR9bH@jKE@9SC@4`D@-YE'PMC@jcC3#3#DP0!*!2#[@
+
+G!!Vh"`!+eT`!N!4849K8G(4iG!!!ZEcV!EQmk`)!N!Gd!*!(63!!)Ji!N!Cp-e'
+
+Y1MLlf(4@)iLi8FLGj8[L(cAS6dGZP!eB"$dq,iGm%Z&+81!2Bk%`b31cXY`KEc)
+
+!Z[4dj)[ihGJA"M`-H0U41Fd9*k)9aj*NSA!r!!d)BR9dCQPbFh4SC@4`D@-YE'P
+
+MC@jcC3#3#CB)!*!2#[C+!!Vhh!!+eT`!N!4849K8G(4iG!!!ZEcV!lQmk`3!N!I
+
+G!*!(C3!!4-8!N!E44&'Y1VK-CQHD#d3KmN)8p)HaX*9TkC8Pq6-!CRc!(f)j$2a
+
+Ki-k*D`"bQ#5b1hKJ#,[p)AmS%lL$3C!!6Q#%pIb)@#JHaShF(Za$!#l4d3%`Vl)
+
+MlB@GU%(CUJGC[UcdP@T-Z"m!N!-0#@*eG'CTFR0dFf9NF'PM,@aTBf9ZFf8!N!P
+
+ep`#3$`Vh"`!+q8d!#YDF!*!%9%9B9(4dH(3!!,Qmk`Dj[1X)!*!'!Dm!N!B"!3!
+
+!5qm!N!B#XP'Y1VK-CQHD+`d%r@%XE'@+(9J5j$$,i6"`j`6!!d2Bl3rj3jN!-ci
+
+3j`,-!$khK`&C[Uad(q,2&2G$K-f5H,)1J"N$2a%*J3mKL)!rJp`ZeK+P+V,F,"C
+
+R!m+b3X)N0d,ZE++KZK)F(iGp`3b3!1A1"ZQqA*T'SK"Pr+3,fahfj8M*$P%)*B)
+
+`c!AT%J"F$*'d)4Idm[`*mQ2X#`&hQ25ZB!M51CcK4f(5rQl1'T6B'P"i#%6aG"j
+
+f3ei#aKK90d3`i[Ik[-3'Yc0%rL`rpNIiiV"2Ka51ITce%F#)c@dqm5%hpN25G!*
+
+K-!bX1SH-Ip(6M$)b!!HBl%kM6YmQ@5MF$`!0"f*eG'aKFh4dFf9NF'PM,@aTBf9
+
+ZFf8!N!Rl6`#3$`Vhh!!+qL)!#YDF!*!%9%9B9(4dH(3!!,Qmk`Qj[1X+!*!(fJ#
+
+3"f8!!)0$!*!'Cc94V6Ui,,Sd&iK#j)8Sk!pMB5[,dLY,mQF!c2L!2m4b'2M$`*d
+
+6e`$N-%PNGr$!%(El3rj3*R!(Jb#G`!JEZ)Q%iQ(Fb1h"2J6J%KXG!2-U1E*Hb)N
+
+@P#efN!$PbdTIDFD%q`%!N!30!f*jC@aKFh4dFf9NF'PM,@aTBf9ZFf8!N!R@K!#
+
+3$`Vj63!+qXm!#YDF!*!%9%9B9(4dH(3!!,Qmk`bj[1X0!*!(3`#3"cd!!0mZ!*!
+
+'J,p4VESBKF)N$mc+FSHmb3!BqrPa''3JQ!8X-"-f!FL(143+!``"CR`!XMlNa[j
+
+3*JKRKl%[+eNSh!m!N!0[!!d(Bf&cBf&NCA4cC@4`D@-YE'PMC@jcC3#3#G,N!*!
+
+2#[SL!!VrM!!+eT`!N!4849K8G(4iG!!!ZEcV$lQmka)!N!B+4!#3"J40!!#-6J#
+
+3"Pp&#dlaj2%%'F#%53EVl9[C5YKkr#3$bXQ[K"+@NH2N1$P'RR)bSS55"eJpS`+
+
+3!!2)L`&m(9mjH8l3MeDJqXke3GB6IZ3jQA1#(1k[UZHeIVLjrA$cr8H5TJh5"`U
+
+b(l3)NR`3,Kb&(Q9993ZYpNki-`h10V)GR9c@LpI6rE!KIpc`KbdqE'QpA[plKcT
+
+PK*l5,qZkXQ-BaZ!T(#3jk8FGb(BNKN'IPANJ8DTD@%GH(U86HRlN9h8P2-PIm&8
+
+CfG*HDRYD)XNJmEc9ja@G9$JJai-k5N1aDV5J0DG$k,VbfU)Ya1q8ipj8,eFN62Y
+
+5L430BU!AeBLJV*P#e"AIL5%k0"5$@)d@BRhPhKTPrfMLHkr3(M25#)qX%cN(0"N
+
+16NT5KTPB%rh-ef4Md8Cm8eI+SdYVj0ZB'-@M)Fpe6%M%Uq+#1#j+VTej30ZfPf6
+
+'ILmGYmTYHeS-dKh%i1PAkH`5#6kPSK)4q6T#JVDjE-4L!X"F")cIKB0bZDM[d"(
+
+jFHrPje'Da`b-l$mK#R(m&I8HP4hR#L0)&@041VaNid#Y$0,eb3ER5ifaPdL(mRA
+
+9#!0CN!"%E+33C+`amJ%TMSaIN!!2dUh`J8i("HiCe&4aSDUZCUc`&-6e`L![!l8
+
+LQ%"`H5h6MjKI1H9dGA@*Tb)1*G0L4X),-*X-`l#`C"$hK'qSX+j'MfZ6H`S-%d+
+
+2rRJfBjCFAFhZ,XGa-bJc3Jk`NVEXXL6T8QTb+B2``me2Yaq"eJ+#Xa'SNh8Y-(J
+
+q@1!ak89-""E4MdT1CFF(1`b3!#G'"BbC1[a6CY&@%h"m*@d*kTcY*kP'B4Bh,FV
+
+H@Fj#q-50R45Vq*)LhDfVe$)@86YL%de+dH*a46h+UG!dMa5BiBbdM4lEC"&rl[G
+
+@da8&bd"#$Ha)ITQXKPNdUIQTI9i)HiNC-c13!(hfKdhVDP-@b4H4dhCqQrb3!'c
+
+J,Ec0(9BlmJGlBM-e!UfpTc[09&c4lTlZlR(JES--hp#hp*kr[Tbl1pU6e%21c5I
+
+h(Ipmi`FA0e19IRe0H8Arid-E20jXhr%*Y('ECeqqdqD4i2%J@Vba2FV"1`Kl%,L
+
+N*G3BGqa4Y6'UD*0L,Z2aEC%"VU)T9PbDAJaQaKL%aGQ@4J0,![%ZE#m5f(P1[Lj
+
+XD,iM0[55K)01H[5QiRM,bl43cm,QKe$Fjj&lJYbH(UH5E!HT63-4eF4KkZ`)I*r
+
+(d)Tffk+APiNpVjHTZ$`6,Sjq(Q!a)5I14VC"k,SUj@4`AR$)iXP3j!d#6pN@aX%
+
+"6+#rc*d&R2iab&XM,jSme+I"@eB#Gh,K*9F50i1%mcK[XAGmcBm&1TKDMm[UD@4
+
+Bdc$c(8EP"$LLmheB&rMi6XQ@0kdYbr2[04,0LN1GfX0%6D2S'J$Nrd"S-@R`fY$
+
+GEN2r"lm`)AqlThG,(%,fR'"3$qJ,M&lcd[Sp`kZ"Im-4@*[2%F[ibmXBj1R+MYk
+
+)mrfFqcm!!!d%Bf&cC@&NCA4cC@4`D@-YE'PMC@jcC3#3#DEV!*!2#[V2!!X"S3!
+
++eT`!N!4849K8G(4iG!!!ZEcV%lQmka8!N!B$1J#3"J'P!!#SBJ#3"LDB8ATGQK&
+
+%h%(1"ca"0aIfKC2i4`hkdj%EC3-@3Br2bb'I4#K-mX#X,(I)#b!#N!$e)6If`e!
+
+b!#l'"m)q$b4*2m4b'2M$`!f#rM!'-#2RR30ac+lB4*MNFhZBQ1dF0@%JZAYq4'j
+
+Zd*IP#q@)Z(l-q0!5(e%@&bD4%M!*8BLm`'JK,9)c8U,(i9`2BAF%-b(`p@14,a`
+
+QK@&l,-NI#Q2%H@)&LK'irGaCrT!!,jaMPED&I5,1m5%#D@B3Pl5eRLq6',#N+#R
+
+RZJ@9BmNdD#)"M*+$l3ll*$)H%ZD3!2*ZX-U%F@1bUR`*,YqYKAhHR#j&+a'(bD+
+
+`#2`Ac@[!6iS)Xh-E)51K3jA5p"+BbaA0$haCkA`AFdiq,3aPGFlDB8NVkjR[p0p
+
+SKb8PkJPMkj80S!Cp*(aqGFMNT*mNjLjXcL&C(!i81a4GK,jqFIp8*eT5"bHI(jl
+
+KphPPZA5(TiF3-rj3*X(YNcN2JciYq@`T4'K-aKL`3"[dBH`M(`!PYcSacb`&h8#
+
+hEQj!l!!#VJF3N8q%f`0dm`8*Sj!!i5D[h`3p#0X0HBA#r3!!$3aMBA0PD@GZEh*
+
+PC("TBbeXD@0PER0P!*!*c%d!N!m+ri`!#`+U!!V@R!#3"&4&@&4dG(Kd!!#j[1X
+
+@ZEcV&`#3"p)!N!HC!!$BH!#3"LLT8ATGQY(FfQCh'Jf1T*a(MEL4hjdHp%Q%`L4
+
+r"R!j1aKP`"rbqMeZl!X$c,Ja#-+S$`'21q`$lT!!&h!X'cm(2Sap+!c#$15#AT!
+
+!lK-QH@!Sl2IkN!$2#hap1AF3T'F$BrX11SY$"PSC6F3G$bfMYCA453iZpL3$B)'
+
+CN!")qpM[$JDcK8PClN#1Zam'mAl5CXLrab%rLIXi@5MF$`!0"@0KG'0SCfj[FQ9
+
+NF'PM,@aTBf9ZFf8!N!P(q3#3$`X"S3!,"4-!#YDF!*!%9%9B9(4dH(3!!,QmkaL
+
+j[1XD!*!'!p!!N!B"q3!!%83!N!B"@e&kR8[I"Q"h*[#(`KKa(Zb(SD!rM)A#*!r
+
+-bR+([!!L!&NIF[04(3!R&`S$2`k$X-m$5G`2X4`QZ4-1N`0'2B!C0aBQV6!#Q!Y
+
+!9$0$"U+-2qJ$L!Z&r+&-3R4A0U!*Npc!eFCTll3d#Ii`m2AcH6MXmi+S(c2!R91
+
+IfjGc"`''15DH(j%'X3$d"E(((IE*LB)E#[Za2q)$T0LK'rR$-#54mE``"jT9%I(
+
+pZD[V3r(%Kl,m)6H[lQGPqEaqFJUbq8**!3'N+Q6%VPK5V(,DK!8LlL$(YdbP)1Z
+
+F9)(B+,GMP1J5,P8ji)KYcdH)%iLmb@5*cCa+j%ba"6a4%Sa1TpdCDp!+C3-I3Q5
+
+V0%VX'DG#-`5qD$FX62*b+$kdUkC[GJH-1pI4cFM`HFKX[Gb'@*)S4eM`A$Ij,RL
+
+!*8i*Vf+&B[B$AcMXcL6PiCFKpQ%1jFil%LCKb!Cp%9m`eV6mmMM3&`BK'2miL+&
+
+N+Q*2Sdb'rlM8Jf&)2JMrCSPL&ELif1p1*jmC,+kZGa%MV-(0BL%L`5!EF+&db)@
+
+ma%r0R9K-42ML"Z3h+SA6,#aK8Xk+53qhP5iDjf)&q!d+p-fFF1%iCU`,h"RN!m+
+
+5%U-4)eZXKUCa`ISplL!T4aC)JPLal%$,hFF&@8,k(4#'lcPd(G+-2C)P3Z&q!*!
+
+$$34MD'&bD'GZEh*PC("TBbeXD@0PER0P!*!*S4S!N!m,!US!#`AJ!!V@R!#3"&4
+
+&@&4dG(Kd!!#j[1XFZEcV(3#3"hX!N!GG!!$H8!#3"ZY08ISf1LI`Kl"3Q!3jc()
+
+i$$$M!al'MG`Hl%-!q9MN#rY#f1FP("'ZTqR0CZ#"AKp)cmj*q#&#eS4*8FE[B8!
+
+@&mBJh3IF)Gl-c53@24q1qR`KN!"#3Jj30QbB,"6Z"`!0"@0XC@&ZCfj[FQ9NF'P
+
+M,@aTBf9ZFf8!N!Q%03#3$`X&%`!,"X8!#YDF!*!%9%9B9(4dH(3!!,Qmkafj[1X
+
+H!*!(P3#3"h8!!)FD!*!'lE94HSY4Ca-+Nhc)(ID&J6XB"%&rL&`5aSh*L`X`Kh$
+
+3"aKh'(L41aS#-*561dGZP[&l`L$U$hPK0&QBj%V3ESG"',Za$iKC'2CM2`c*!10
+
+cHrfK6"PJI5'3!!@p2KR`B8qb"2M$)!5a--R$Z%1C2Qqb8,JI!*!%$3YME'9KFR0
+
+MFQ9PER"TBbeXD@0PER0P!*!*CK-!N!m,"H!!#`HH!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1XJZEcV)!#3"iF!N!GT!!"`03#3"M#F8AU,8HG-dcZ04TY3RbB8*[Q3!$[X#`2
+
+-q%!QFV1-ha-'8Ar)#k2!(I+#X#rNc8dR(-*"mKS"2`i$ImL2rHkJ-)Q&BA+*3MQ
+
+d[XrYpBFbN`'`q!-qd-CZ0HENb2UBS-ppa#41&JVh!`#3"!d*BfaPBA*dCAKdC@j
+
+`D@-YE'PMC@jcC3#3#BCF!*!2#`E&!!X)4`!+eT`!N!4849K8G(4iG!!!ZEcV)VQ
+
+mkb-!N!G#!*!(13!!D68!N!D9B&&kLe(RG"NlZi4kPe#Bj)&C@Hk3!$FC!(h3jdC
+
+KJ"NI`,jq')3pb1F,!CJ4Lm4CrT!!1jJX&1i(!*!%$39ME'pcCA4PH(4PER"TBbe
+
+XD@0PER0P!*!*q2!!N!m,"ji!#`MJ!!V@R!#3"&4&@&4dG(Kd!!#j[1XNZEcV*3#
+
+3"c-!N!FT!!$Y4!#3"QCi8AU,2Fd)-[a"AmLGj4-+Nc``+mXGmLB$S!r#X#m--1-
+
+$I0E*SHK#iAi!$3KME'pcC@&XE(4PER"TBbeXD@0PER0P!*!*b$m!N!m,#%F!#`Q
+
+T!!V@R!#3"&4&@&4dG(Kd!!#j[1XQZEcV+!#3"fi!N!GC!!!hE!#3"Yrb8AU,2Ff
+
+SXeL5FKiek%p(ET30@!3p2Lq(I"+K--N$Xl,F)@mb!2SJ$2[#`"d-!XMk3L$$(r5
+
+&5DkHRSjm%EmEqm,#**2GDG6Tf`"LGH)`fN#h(%GSd8-Sh!m!$3*MEfpcC@&XE(4
+
+PER"TBbeXD@0PER0P!*!*3$N!N!m,#1!!#`XD!!V@R!#3"&4&@&4dG(Kd!!#j[1X
+
+TZEcV+`#3"J'`!*!'!3%!!+%U!*!'RlP4HV[0CECe-)+)1mMjK(Tll+$'JdAq9"3
+
++Nc``+mXGmLB$B!aj``!c2Z$K%2+&-2#(X!qj2GJIm3(@cB9p-S"mQ%-KIbJ6B-L
+
+cL)q8$c'!'6RXYUj$QT'3!-I3imCq'#)K#i0dAkBl"2bB@$Bc3+)F2ba-bL4f)H$
+
+6)FYK@5j2P)9a)0)1F1I@%R'B%#!$`Dc&UVS`L4L&-)HFk6[3&qBc+9)R0HrhmrK
+
+B[K!V'-c1CH8eT"-!$fQKjmYeR[Ja3qMB'3GHAiDE#f*K8Nj&f08X2R6c5qRl`N4
+
+iL'$%lb9X85(UprQGH$!BK0%`%3%B%LEaiRiSM"&(GSAc#2`K(qPR#3!!$3GMEfe
+
+LD@jPE(4PER"TBbeXD@0PER0P!*!*X%`!N!m,#DN!#`[I!!V@R!#3"&4&@&4dG(K
+
+d!!#j[1XXZEcV,3#3"j8!N!G9!!!YaJ#3"K9T8AUlYCACCJ5BmBFb8h0IUdRmS`E
+
+pkFL0XJ',S-IRjC!!6b)8*[NcBJc`Ki%E4#(bbJ$N--[K-1KNGaU@QqJ!Q*F6!hm
+
+Bbi4*FH5"Si0V"C)*p`-!N!30"'0[EQ4TEQ9XG'9ZF'PM,@aTBf9ZFf8!N!R'!`#
+
+3$`X,'J!,$NJ!#YDF!*!%9%9B9(4dH(3!!,Qmkbkj[1X`!*!'"!`!N!B"q3!!6A8
+
+!N!EepJT1mH3"#$+!bBLY4fiPM-bTC%)*$Fr)-A+8d)Z`Xb-$2&R*!h5+ImRKciX
+
+!$#Lq)qK(-"$!G4629RBVQ6)bB!3aP##!iFPk!!IN!j!!KqHR6p3--RVf4IjfJkk
+
+GG"HDR'eB4FGl)BV'MU-dLU`M1l'639[cNHLPCp*QLS'd*dQ$pS&XQrplfUeFqb1
+
+aE(T!j22Ve0aER,IDiB`((YPN%0DKCdI5%*mRapi$GYN5aDXFBNCiqIDM6$Sqhcp
+
+q,`rT"+-d@kHSc$H5VJ@`MQ&Kc152YV1LZ**K@KXIA'a@UcN+2XY4'rBCDc@*(D`
+
+TGKMjdT,FP0EF!B&QL,YTS&fFd%YL(1b-JdCkhKr5L%Pr4,(*36HKPf&Pc4dNf6+
+
+`bLiIlS&MBd"Y%)(IR-+"G#X+D5j3mTbbQEA(T56KePA'Hc2jKqkiL%!1F3MDG!X
+
+BM4(V0Gp#@m6Vm'%*m&eNbZZI5#!Q9e[VDq1C0Dph&M%Lh@$cN!$KmaYZAKH&X9G
+
+mMqI+YjV9B9PADGhBd%-fpNU82JemKfHZ!"#r-P+q-h'XfIRL5"i*03J*pfLp4Df
+
+cirU+BE@ad&T49I%iKFZdMCqS1Te`RjB2pm%`V@&Z)d#8hNHm0Kf92mZRVmQCiKD
+
+[MrSe6P@EhYREpLTV5fpMqNh0!c,i1d4TLBd53[`(!!!0#'0[ER4PER4cG'9ZF'P
+
+M,@aTBf9ZFf8!N!RcPJ#3$`X,h`!,$e8!#YDF!*!%9%9B9(4dH(3!!,Qmkc+j[1X
+
+d!*!(f3#3"jd!!*UI!*!'[M04HV[0CE5jdS6#*-KKPX0Ki!BL$`aKAiMF!RmBbd6
+
+!Rqa,PT%JR3&Q!-`JRbrRbJ(2X[`KIbK6Q"4bCrR#2-$aCIK$2LpJ%I6i["cbK@8
+
+JiNCqGhU3!$pCSCcSd)G`GUi'5b+-SFq$r4&I-$XC!"IMcp8(ImJ6j,c%b`S'!4G
+
++jj!!RjL4UJ2mf*F9*J5@K"NIL%)8#,0ZMbpC+0`2!*!$$3KMEfjdD@jeCA4PER"
+
+TBbeXD@0PER0P!*!*r-8!N!m,$NJ!#a$'!!V@R!#3"&4&@&4dG(Kd!!#j[1XeZEc
+
+V0`#3"J'`!*!'!3%!!+%U!*!'kaC4HV[0CECe-)+)1mMjK(Tll+$'JdAq9"3+Nc`
+
+`+mXGmLB$B!aj``!c2Z$K%2+&-2#(X!qj2GJIm3(@cB9p-S"mQ%-KIbJ6B-LcL)q
+
+8$c'!'6RXYUj$QT'3!-I3imCq'#)K#i0dAkBl"2bB@$Bc3+)F2ba-bL4f)H$6)FY
+
+K@5j2P)9a)0)1F1I@%R'B%#!$`Dc&UVS`L4L&-)HFk6[3&qBc+9)R0HrhmrKB[K!
+
+V'-c1CH8eT"-!$fQKjmYeR[Ja3qMB'3GHAiDE#f*K8Nj&f08X2R6c5qRl`N4iL'$
+
+%lb9X85(UprQGH$!BK0%`%3%B%LEaiRiSM"&(GSAc#2`K(qPR#3!!$3GMEh"jC'9
+
+QCA4PER"TBbeXD@0PER0P!*!*mFJ!N!m,$e8!#a,2!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1XiZEcV1J#3"J,M!*!'!CN!!'Mc!*!'p1G4HVZMLm&S!L&I0161mJ%Bp2,[6*M
+
+NJ9PClT!!0aN!Uc[J#`04$&%!EX!Lk2&j1H3$IUm[K2dHGa"J#%3aHL&CQ14LI#$
+
+SaYL(3*Bl'k6lFV"qPKrl)ciLeFaBBM4aKi%lL(aZEcE`qM,m)CpA*Ncbic""ZK%
+
+rj-+j-B4()H!2Jb!-ikd5PM!T)DX"6,U)IFX03SJ"kd-%NILmJ!X&IH&`$QMX4Rj
+
+hHY!R6()Db6,DJ#&H-KK`2Z"bGM!5mdC#KJ-2F5D*AMD)cmP#K%q+h"h*6CUkMXB
+
+QLaH!9H&k3Pq%l%-`0%$'"PcBKq5a"9#&kF`qFB4d$[Ppr%E9,T!!bdN%rS![Q-f
+
+[X8FUX'%SJcJj`*m"XJQKE3F3NEIZXK'R`K$eBbDKer0jh!3YCjMiFC!!G`Yp"")
+
+%!I&+h2j3cLj`p-![%&[S-Q4Cq$GKXS%Ie`[(qbQ5lmNaa$iYm2VG3Cq('%8C`!)
+
+c)3Pi'@3$Y,%S9bIfNM['r4$,mHT4[",a98'le)('JTqPPUkG-4HULA*@AE$TV,'
+
+%,K)+KIX"!!d$BfpcH@4PCQ9dC@j`D@-YE'PMC@jcC3#3#F1+!*!2#a$'!!X6H!!
+
++eT`!N!4849K8G(4iG!!!ZEcV1lQmkcd!N!G,!*!(13!!YYB!N!BYY&&kHaV`qM+
+
+4caF@#T-JKeN1K`&QI-!$`rk3!!r!$1!R#6p%JKU)-Ri2!rb%B!9m)C,+i,T3Z"m
+
+!N!30"@0[G@jdC@CPG'9ZF'PM,@aTBf9ZFf8!N!Q!e3#3$`X5c`!,&(8!#YDF!*!
+
+%9%9B9(4dH(3!!,Qmkckj[1Y!!*!'!3N!N!H0!!!L6!#3"X$C8ATl"jX,B-BIbK3
+
++Nb#(@3k(bGd&)5iVhBF!c!!HaShF(Za$BH!2j@6p%-&S`*qaq!Vq-(#$+%6H*KX
+
+p"MlqmNc#Mp%$IaJ6H!cF)H"'b*fG$)$BY15Zm8eaN!$PcJBN4DmKa#$G&r0aI2e
+
+i6cbbT+!lM'2''[$k@&r)5cS'Q1XZE'k(LB@Ik3mP5i6#r3!0#'0bEh0cE@&`G'9
+
+ZF'PM,@aTBf9ZFf8!N!Pe#`#3$`X6H!!,&YB!#YDF!*!%9%9B9(4dH(3!!,Qmkd'
+
+j[1Y$!*!'!f-!N!B"m3!!Q(F!N!C2d9&kTcdYcDTc!1c,BS0Zl!0"IaMcr`Tje+!
+
+r(EP40Q!4p2Lm(2**K1,95-H0hDNjEe@3!*bF,"%+Nb#(@3k(J6[("c``K0hqN!!
+
+rP!N`i`2)&qD#*"eP,*C`)qiJjmCq'!SR#j1-EJq6Bc6Marjd$[[#!%0LaB-3!hm
+
+SabC6U19F3biVhBG)!ei1K!0r'2MkFZiJ$ji"b(hQjiIiYR3!G(aPR29jr1kJ--R
+
+M$[YN`*m"B#LB69jNeA-NbChl)lk3!)bS@6L@a)kXJ#m%h'&K8SbfX18bi!jjJBq
+
+['(-qk@MJic[KbhUQ2EM%)1mEkmQhjrJc-RLJKf!@i!0L#pL!(`TMRpZE-bdV3!E
+
+(NZ*bJN8,%%h)bSNlG#0h-1J,NUD6R1C`!d%3X$!FpUF(I@3'89Dk2j5l64,,K,*
+
+5TBS'SSbI9"VkI&i3)[2XN@QL,AGR%BI!&mV%6$,j0#JY3*L"85$f)')iF,1J@a3
+
+L,fL4#PSSHi"ZET!!$McN[3+83!8Dp*!!%14lj2Z#(aG,"G`03(SU5&H#G"9)E`!
+
+mUF#M""i9m$6S`DZKh`&%C%F$P[69m`Ip1"Y%rCM*U@*-@X-5X`q(jdGNQUlAccG
+
+,E4TTPM5C-'R9&`i(DQ8$,TaE+(BVYJ$De+9c`rj`URl)krF3*%[+qITJi8X!$3*
+
+MFfpcFfeKF(4PER"TBbeXD@0PER0P!*!*A3m!N!m,&(8!#aH[!!V@R!#3"&4&@&4
+
+dG(Kd!!#j[1Y%ZEcV4J#3"iF!N!GT!!"`03#3"Lph8AU,8HG-dcZ04TY3RbB8*[Q
+
+3!$[X#`2-q%!QFV1-ha-'8Ar)#k2!(I+#X#rNc8dR(-*"mKS"2`i$ImL2rHkJ-)Q
+
+&BA+*3MQd[XrYpBFbN`'`q!-qd-CZ0HENb2UBS-ppa#41&JVh!`#3"!d#Bh4[Fh0
+
+YBA"dC@j`D@-YE'PMC@jcC3#3#Dd,!*!2#aE@!!XB@!!+eT`!N!4849K8G(4iG!!
+
+!ZEcV4lQmkdN!N!G#!*!(13!!D68!N!DZXe&kLe(RG"NlZi4kPe#Bj)&C@Hk3!$F
+
+C!(h3jdCKJ"NI`,jq')3pb1F,!CJ4Lm4CrT!!1jJX&1i(!*!%$3CMGA*cEh*KF(4
+
+PER"TBbeXD@0PER0P!*!*9BF!N!m,&km!#aQ*!!V@R!#3"&4&@&4dG(Kd!!#j[1Y
+
+-ZEcV63#3"J%6!*!(`3!!@&J!N!B9K9(k$XidZe-S6))FCMNF"Qi3p)Fam-!3G[Y
+
+$rP!Q`)`2H$L%I#%-qJ&hb!Zb56a#ARr)MAeK!$1%56b$Hj!!caIL84bLC!!X-"1
+
+#,(Ffb26Pq(KFf1F&lR4LZR"L5EP%B'(BMrd`"2`C-Z",cNb@J@c)!Cc0qS!ra"F
+
+6N6B#ImK(m"B'8H4Q`m)N0i)Fk33&N!#'&M(-41iXmZk(5*eZf1-QI"Yk59-#Df9
+
+Nq$`j$@"Y,XSL,3BJM*%lP1N,CLF,KIX"!!!0#@4NC@CYB@0bEf9ZF'PM,@aTBf9
+
+ZFf8!N!R@KJ#3$`XB@!!,)G)!#YDF!*!%9%9B9(4dH(3!!,Qmkdqj[1Y6!*!'%M-
+
+!N!B(f3!!DDN!N!ESXJa1mH4AJJaJ[T)"pmLY5EB0b)"''1&NhGl+8V,Tm69#@cR
+
+CamK+'$N132(RqQk'$q"L!!-U@mPaXJRkd3V8GAeADqdTq8dfQ@abQfb#PVd5HRK
+
+eB'4k-r[QEN'YXk941dfAY@PMq#Vrrh1D6UF&IXpmUmYD0E5fE[Gm02efrZTm11L
+
+2B63UCV46TE08He,8(AeIQiVX@SlT+MT0qkheQQ`-%-Qhp)0USJUk'KA+dlAG3)(
+
+a`F8be0CiI+5`e94D`cTC#hm@U9pk+PA6D$FG&GP0&[44PD%j8&1rel4Fi(ZTfi#
+
+VL[r4C26qD-Hp,Ze1HiK2QPl3i2#6'$bmqRj1qcTX4BPRpj-m@$9&"QjB![b(X1M
+
+e1NTUB1'$0U%f'p(16MVE82)B(X"&ZfZ98rH0(KA"dYhmGMjE6ZMUeB38mZ-Y34l
+
+4QeKZrh*H'9,0c[S`SIXB4S@aJ6l%1QKmee6&YUP,MKMG(mLkUME+(9,8qL"ik(X
+
+&Vf$iVQhdC&4X09cN-*[KjT!!Q`IY2%cR2#Dl,Q%rQlFl6*eZ0F*fDH+1ff3)-bl
+
+8DhRhmQHdmX'flr$%4I2jc#F9&p*+M`HdU5"iZB9"R49lkpjl@YG'5qSi$p4'ek*
+
+[r)6dG$1GX%H$Y&r4UR@e#66HkUDalr$keea+J5UV[INbL#5#CCcfaeD#d8K@UCb
+
+V%5Zd'CkA6D`3i-82bpXIN!$H0m[&l364SH[&0l2VFl`iaVkZY)-d@0MRUNY4[S1
+
+2bD(9Ge&lMh#4ekA6iN`&6@pYT!dqKkh6QMCm"&'@9#@2Id'VF'JeMArkqQ[kLIk
+
+!P`@aT8kVLNA35aTR68J$MHrUc6CmJAT"1&P(e[r'1RHB5"$NkKjPRHq1[q!lad!
+
+HbeiLL90l9iHJMI36Ulpj1dfe`3f$UU`NAV"N9250-Z%NlQfI3e5e`LRaJ-1&)Qk
+
+i"fdlb"N9@3FA%cpYZAER[j[Gh&l2fBK+qpVTLXYkb49ZQmL*CKZi["4UI[!Q-`&
+
+bGM@S!K"%8-GK9($m$kb2mjmJC3HU85`)cCejD"I43iK*G'KTJ!5qFSHVfZ$dU2K
+
+-2&$,cJM`Q1!6m5$*FTR*SLFQpV0H!aQfqN#U4GlK,!06fkJ5M*9kLa'*[Hfa#3*
+
+ISpY"6pQL8I(A0TpQ!rrEk*RU9P)FqD1(LGV!MXHlUBL+Cf,Uq&pYrla[PcPm1K`
+
+a%iDefNRHk1+#kd,#TTUp1L!if3$`(8V@E%#*%)#S*k+m9qL5%[p-MSP20d@DhVA
+
+KF%VQU'#h1*k@r0EZLIm1TkAV*Y6SJ'3&,K*@f4Aj[m'$i8"3S#H%Sc,ZZHcQQ85
+
+N&9MFSk"MC(pjPXTDTA)J""jre'8-3%Km44UH`2Za4kbV0k$!KL[f`B)RFf(d2Vh
+
+S@!Cb!3HLG`abK35Q@,lkANJEH!Ui4#Hf1Y3G1R2R"9eZ6IdKD[SpjjK$aNADK+f
+
+0QbfY9Hh!iPVj!aGD01!R(k#0D49Gb#j9HUe,Q3PmJqX-64dhD!9m(N56R%6j-BU
+
+*lCckTf`*5ZE'CDH)CYNq&+kcN!#%2!cX-!5[UhrTlX4"BUSX#E*$@(0aVYpS'ME
+
+XEl5CK%R$#fT5)Nd3Na-HqPpR)lh)`MLGQ-VAS$C5bL5r&D!U[kiXJ"U-MSdJ0LM
+
+hp!`Gr9PBU[d@rGmh0V2X2`pqSJF`,!VebC5r,`3`qR#[FbZH*2jM,"Lm5*jHjSr
+
+*f15&P(jlILTT5(0&GMKK5aEr)9T1jET''Ie490*qpDF0SE,SJ(ii5%L,+(IlJ44
+
+dDYD["!&'B(UZX"VYfX2,X9TTqITZm9YZ+#DlC-"ND!*35D-!#d,)3m8K##Hqk-'
+
+(,Cl`p#4,&eBbk"ak8$#p*mSX0JP*YJT`%FQH!QBqZi[Z"DiDMq)qfMcpGL(cfY'
+
+0TlXRle+c5M#N(5mbc3J#Gq5V(Dq%D6cX-%-mZ`!T#))cYHq3!#)28aj3baMe2+B
+
+$j@5aNl&2`G63FF5SN!$lDHAMjDek8'!F&!"#aU-(NX'%p3*"KID19RLPB9qFME,
+
+cBBVV(AKNK@jl#YVY`&XmiX&rR!2q)+kE-l2m'3KjJ3%B0`Gfr,Vf,8mX$Uk#SjU
+
++imN)!Ue#JNFl[emXqqQ@pei2CPlbS4TNQj3+(TrQK2-QBA#@ja&`Qj!!$(D5[DK
+
+'4TQPP-%'+3$eDB$NNBAcBJd36hJc9F$DfCfda$%M1,0&BK[)M5CkQ@2BkQl@b)5
+
+@8IV%43h!Y4&5ZdbM0r['-eY@Q`F*19-8H5h$6cD[m6KG2EiESmHD`qR5H-cb6Lq
+
+5TT2Hjm1N)Cl,!#E`M1'LQ`#$3h5+`E$a4MPSc@$G,h1Ak9N[50E'QpP[j[f@`GR
+
+TC`,4dfX4pl#rX,j9IM2X"0b93!k29Z(NXJlQD26El2EfqQhHc05$V5[ZcY40D,8
+
+5`bC5[mAXJK6L-Q21%51N42L8f13dTQUHXC@3!&6'Ljf5a3qk86SmZMbliP+(C+%
+
+H@3Dj96$lL)VaGl-lpQ6mHRjp[F!c0'bH5hT9D"#)kYYSlb`FbqZZj*,f[(QRN@l
+
+k[%ZRA@2!BSE!H&4McC,Y)Hq3!$r51TU-)jC[$+hm"&Sqr+H)@[SaTh5bHUbGGjr
+
+L1PRP9rJJapm*RDB@@#3#5Mh)A6Q"96,1k!#iifd%F!Idj#MaAXAcX3-qBBJ!"1%
+
+J!T`f@kB@VQS8l2m"!*!$$3CNC@CTEQ9MFQpPER"TBbeXD@0PER0P!*!*Q$i!N!m
+
+,'BN!#b2[!!V@R!#3"&4&@&4dG(Kd!!#j[1Y9ZEcV9`#3"J-q!*!'!Dd!!%N#!*!
+
+'4494"U2*E$-#&N&2b*hP!pMA$`Z&54kBPH81HC-"-2Jbr#&I',Kc'+kA3ci3p@-
+
+'j1!+FA!"%*bJJiKr+b3,Nm`C!$-q`[-*2N!qYcGlY3B5)-bVN!#&PR-1I9&KNTI
+
+hpV%IKJ$bX8'hKh4!i5MS"6$N)medb98)qb'@`b#,#f13!1iMKS%rM)9*83D'I5$
+
+,PjAZ3m3II5R(Bf$2M`K1TN8r)Jd`)pH'0a%Qq6%)3KJ)Nq3MAUYV*jI3"p+*,&8
+
+ANAGUC!+4Pi5eT5'@Y,KQ@5c0Bd'eB4#'`U3`$r),%485L3TUKS4*N!#IMR$MZD[
+
+)QX5+%SBd*K[NA(T1FG5[J!(aB8Nj-b)E`X@q[T`IqEbaDN89BJ[%NS[,8"(,,mi
+
++%[qBF&&--Y29a,iX0ePPQ"Rh6ZZi'U)9)2f2f*aF$j,4Tiam%R)U011m2fV#GAX
+
+BiX!aiMam$5`TCfmTR8b`"TAd)$mT)34'Qb&hNhjS43ZkK(arm%CYJ`mK[ZL)p#F
+
+q+l6Q)I*RNFr,H%NY`)@#[R$ZCfEX4RjhHT!!&0NaNQpN'c$ZH$$JI-$Pl'"-&JV
+
+h!`#3!`d)C'9QD@jPC("[C@j`D@-YE'PMC@jcC3#3#G3U!*!2#b(5!!XNm!!+eT`
+
+!N!4849K8G(4iG!!!ZEcV@,QmkeS!N!IM!*!(N3!!V3i!N!DjZ&%'SmPX-aSF)16
+
+1mJPMelGbVb`*FTMPF"LiR"f-`*m"-1-$rK#*J$qFFb31`!cJ"PcBKq4HAiBrj2-
+
+#&N'2cmXKRdbBj!pjJTcA(mSNN!$!RilF+(YaAJG!h!C'I4%INJ%,c)6!#heK%))
+
+B"%)`#YcTT!+@Y)B-A!MlJk3%#bm*pGeKN!$Zmi9)5f-Bm(Q6*8,KIJ!0!f4PF@P
+
+ZC@4`Ef9ZF'PM,@aTBf9ZFf8!N!NCEJ#3$`XMl`!,*Rd!#YDF!*!%9%9B9(4dH(3
+
+!!,QmkeZj[1YG!*!'!CX!N!B"(3!!kS8!N!Ca1P(*a[B!-rj3CQVZDe8S6))FCMN
+
+F"LjR"b2`C`!rZ594#2bKR*L&I)6PJV!lb`HmEXaPb8!BNSL&JCYPJpP%!pc#T#`
+
+1Zc&%!%-!3ci3p3H$`-1i3jQjq)Lma-!G"P&I-*J-J$eQID#cT"Pcda0rf#F6*[N
+
+L[K$I!e(R(EKp1AH3!!3JiJjb[Q4K8LHGdfDfYGB#"r*RqE%riL0bI4MfJ4#TLS-
+
+`GL0-HNJBi!DX$rQK0dHNSE1e0MVY(G+)3jIaq4(J#,1A$8)`*2Ie)b3dpX2NR!$
+
+Nmm#X,&r)kr15cT!!*PK4"SLecB9*(RF)"(eZ,eqml8FH,ZK'r%iX8N$-H6#(I'%
+
+CkFhcKrcB"i)3XZ513cQ#QB3BZm1-,j`X&1i(!!d(C'9aG@9eCA"[C@j`D@-YE'P
+
+MC@jcC3#3#IpK!*!2#b6`!!XREJ!+eT`!N!4849K8G(4iG!!!ZEcVAlQmkf!!N!I
+
++!*!(J3!!eFF!N!E'le%'BrX1aJj'd*IcFEk3!$[,Pm3rDY#IMY`S'l!)HRaH$[N
+
+N3Q%5j$$,i6$!M!m%IHi`"XMRmB9`-"[N5$JJbjH9lN-!CZ3`K"0H,!cm195@&(%
+
+(5560Mph)ldi2qN#8J@%Ii1d*9%Kd83$ZN!#A5!jJa-F,@&LB&&2d%-aD,+N,KF,
+
+p!!d+C'PQCQ9bC@jMC@j`D@-YE'PMC@jcC3#3#E"G!*!2#bCp!!XSL`!+eT`!N!4
+
+849K8G(4iG!!!ZEcVBEQmkf)!N!B"!*!)V3!!XH)!N!Bl-&%'XmPNG"TYHL-)F9Q
+
+Tr%Y9Q(-TjGjB%Z3`bq%``)`2H2dC'6lN#hPm!'B!2dRj)6kX!f$eKlJ`#2Xc3b$
+
+,j`la5FrI6jLd"1Q(J$XVhCr*38+bB3MlqK%$0FVi3S"&2Sr2kr1#p'cJ*Z%"'r4
+
+KRc$*eimNHGJ23a)Ci%*"FN0[m)GA%$RV*SC@b!XbB$!)Sck[-#NR'-*36KBV8Y0
+
+m""'%)E#DE4h5NL9#iAi!!!d'C'eKBh*[C@jMC@j`D@-YE'PMC@jcC3#3#8CA!*!
+
+2#bGZ!!X`e!!+eT`!N!4849K8G(4iG!!!ZEcVC,QmkfJ!N!B5-`#3"JIC!!"TU3#
+
+3"Y&k$%laj&H#$'#qNJ(hb+e*YJh)J%BBi@6GhXT5XZRa08*E1GR(b%SB13j!mHI
+
+kESB2i')!!bTEbA'b#IV4#Y4eI9GVl5Rj66DCE(+EE)+@[4*kH(9JC(ScqqCZ3Df
+
+cT9%l6CHeD@2i+[rrFjT1T`9qchbVbeSeY,CZph`drAEqkR`ik)pK0#TQY&1PXe4
+
+l8Y3GI9qELZaDMZNU1NhlVI@DE!`3bEIdJfUL#VSD&FV6YGe!JI("a6,8eRKmT,$
+
+99&V$1PN,IaDTAhSU9G0S0ad9f8d@p&'9S6P38lrAY&cJHkREJ+Z+rp&Np2jSald
+
+Zl8jlL%qDAY$Jm*-B2,ckINll1Qa&L@IhNcaB088'EPJ#r)H`k28k5QTJiB-fS6B
+
+EdFj11YY3mKJH`%@lDj96pidH&F(5hIaf2PY1k1V9K"6bibe"(Y'E@'lrFPiC8Xh
+
+1qM#KqaK'KE'"2X3kD(cA9-@fU8Z1'0dIb,UU0XSG8Y6k)(MSH`@[B2LZEI4N9'`
+
+eA13`Qq(QN!#E"qdm61Fm*VXZB6qEYcY-R@ie`RCTiSlEC!Jc,Y4VHIIbCl6b`EE
+
+[m-4&mrR-*a8AdNU2"l5T)(LjK8'G&A[VhRYDedC,kMJ2e%EASQrmK24d-jf`4i1
+
+dAp'UGE8*00lUTV([m2VAA%U"+UZpq6+)*)*PR2E(9S,45&DTR+X4+l3CRTG0V"$
+
+Ja3r,faq3!0ihbmAY"0'Kkm8hXqYc[$M'[UkdJc4Bf1HU5e'qJir*SG9h8AZ2F*(
+
+ATG2L6!90EffN$6k(VG1D0R`%8CC8*Bpr3DY`D$@0IrVkDrU*rS#A"E'P6UZ+4G"
+
+,'QG05!10lqV00Rb"HN%i@8I@rmBkGjK)%16U(Q@Glikri$[(3"l,AL+*8hYAKk#
+
+0p"1V[hNl6EA"$B1UV#4HX'48p)dbi56ZECp$9,A#+I'!`i8LEVJ(E6[)'49C"aF
+
+62ffjGZHrQphFAXrCL%VlfZQ+bhV*&@kEb)PQ'lLm&'Tqm#Bc!A*f0DJ#%%43af&
+
+8F2`2V)rcRb"P"kT4,!M0RAPS&p&$L%PdD'Q!",jbKk[Di25Sq%`m8-[1#2#Bi"2
+
+a)-PbQFQL*bEfXei$'EEk3+T&hZ%X!e2EU"+-PAU,%BQplE%*!PqMfd&2fD*4mGF
+
+fRfB$rp[SQHT@8KcjSiH*fX#1alZTL)TRBZViAfhr['qA1A`k($%6KVAD5GlSiS,
+
+V3X+QQVdk)$MC!2!G5YCX3)N3J+JRSVaAk*)5rdb1L8mh4CVHYH&`5ZDSB,FiRTE
+
+meZk*r`kRTHXQe1L!C!8Z%PEC&IQr`B2K3&#J*i5M-Zkjl1DC4+39@0bMS'0NIhQ
+
+@bPUPFL!%(Rr8C3a!5(a&'Tl!ql&(V+XhS-#'+rE"JLGcBI3q[HKB"R)""k*h$(+
+
+&"+CB[[TH5"Yi#VK%*lBke"dkFqF&A@j0r5&UqMhRQ%2'4GU%VBfE,De9lF$L@[N
+
+$&eSdi#FIS)eT&9h),P9kV8ZC#Ab$k`a0(6GS"A`H4*1F42NaLSRYR2URE!P+jXC
+
+PTiKQf6i8VV13!)3m$1``"+qVIqRZa%&LUL`*XN0BFh'ZhfJD0Za[Y*Q%5F-,DP)
+
+L64#6%alkAfFM[FM#1*fBbYHJ0P,+*,m9S#UrVLb!'Sb1M5!f+2Id$"hp@9LUr4E
+
+phcFfXq`r$hkL"c!X#[A*P,m["$$kF+pc+jiNrQ-X',a)RPlQMmRBj)@8IRYq+QP
+
+)Fd9f1'&,&[mK@NlPZNBCr9&8dRleT`fKXZL!IMK)5)XSGrZ"&(4UeUm%!8CJHUk
+
+`'ZhD`mZa@QRjqQla@fiS*VYN`'4S!P"*S`!,3XK$a5%)*llS`BFYR[$d*%XA9M,
+
+S((T3-,dRbL`f#8Qf#R!4bCi#CMklLqi&VKU2iMlD22ef)I2DdBfRZbI[8V0+-+3
+
+G,c,0#!*hj+XGVi4T21``3cbl!#N)JM1elj!!)Jp6(P$,'28mTJ2PC,'6X8r"e0"
+
+aa+L3!2YTjH2PVAT3B"`8!%,'S`H5`B6e!N'&pSj@H+9KAjb0X[0KLZXGH'5&ERX
+
++fZh!@ccL`AqF!riJVTXcXr`C#(Q"!4Jh"hEmZ[BY6b`1VS+MQSVMb3J#V8+#4cZ
+
+rAbclkCEhAJpQA[+K'Q5EP!SHRqD%mbCKF*ER%A#EN!!-GT+pU%C'QD@8`3BT!29
+
+TJ154KI0L$4"2H$09`0VCRE6%-5-iXd9L'mL0*RUCBpMUEYE)K*C4qX4&$F#e%9+
+
+l6+-hqmBc@eDE"`Nj8a4j,F020Ura1&dp[KZMajV$kG*ic2*1,j+QNplR`k3KRXX
+
+!*[#-iD+E!)0$G)V"X2&'1@M0B0d[FjIT@5p)eXDEf@rQrCE"fHPR!Y(6Da(hX,q
+
+`[P9q-q`%h*9!$Sp@iH5b$ZCSp0[Xp[EkEGl-e)1Y+ql1e%eSY4,$*P+raHb#&1)
+
+bBmi4)k4%q*6Bj$5QDTkaPC!!9-D,RC,&$lT41Mbk2,[L8SGNS4jC"VP9-2Z)L[&
+
+hXc[fC2akIRfp`$-dE*j,HP9S%)MUffM[,"c,kklNN[DmHDH4E[Um5kGGBm"LKX"
+
+i9'20NZdKlj!!2p)kQS`MPQm-VI`%@MlmTiKDqM'RG,*kV*ehRq)k@H9Aq#$(h`Q
+
+GTKCB*!*+2FKG1B&9-XlS!,MME34`"r6N+2&HaI1a!cjKL!!%i5!#R$CETKDZDK6
+
+Xr`%!N!-0$'4YBAPLC@peG("eG'PM,@aTBf9ZFf8!N!R[%!#3$`XSL`!,-`8!#YD
+
+F!*!%9%9B9(4dH(3!!,QmkfUj[1YV!*!'![X!N!B"`3!!8-d!N!B&m&(*9PfA9NC
+
+l"jHMJ`Y%h%(1Pm3rDTMeHIcZ)-L!+%XL&#C&)3U%3G!Im)%Bc1hRmE%BB-E0[lM
+
+N2N5qF0J23lQC)B)4[pFAjX-Xb4pL1C`V#&Rq6!D$%-3bi!q"$,H((#)1m`!V&b'
+
+#%mE[BB$((5Ci)HKPq$`Bq'-eQ#kl)aN!&d-#p"GLAmMVmr+0!4Ifm3Bf$'%%Jm+
+
+N-%DF"h2)"lbq$(r)MdP,A*D$)MqLTlSAN!!$AKLUKd%J"+-Nj",e@*K%5&JBK'(
+
+@XUDaC)Ic%)'d1#aN[jmlL`hkY'3d#SE%E!a*@lXCA-M$Dd-hEFi@H!qJ*!3pbjf
+
+GlSZh2f5$f8Y3+3Na@#hj[!A%-Cm#LdMM)()$86S3H53NE)&di-Q"b'b1`ZdkbdN
+
+p$l(*PQ1&J$Z)I5MNa[k)$j!!cMSGE%jM@JH,Lp6Ca2A#C+1FY"0kJFmGcZB*1$"
+
+0Q"4E[Je*1XS!k6jr+*2ANCm'm5@)J!9Q3U,Jm[Y!3`c&A0!A6KBQLHh)k`qjN6q
+
+B63D2iqT$,ZJP'X)K4Q4cIXEDEmYY-JR1X5`-NlfMB[UT)DcmcQ#'PTS`I#%1p)A
+
+j3IIGT0eXTrK0@`)!$3KNEf4eER4TE(4`GA4TBbeXD@0PER0P!*!*'#N!N!m,-03
+
+!#c3q!!V@R!#3"&4&@&4dG(Kd!!#j[1YYZEcVE`#3"J&L!*!(b3!!K)`!N!D"DP%
+
+'Hh)(QmYX!Ij3'#21Jrd`&25(-F!C[RiXmSA$*+!N*BQ$rR6N4YQ!4G$Mmh,)*a%
+
++Nc``+mXGmLB$i25a2MIfHB2C`"Ga"cPbi`!c2L"D)9B!lM!)`P!Qrii!PK6R18#
+
+d9,S!N!![bdhSB0*CdSc%FAqCQ1G(T#Bra(*BQ*4ce%!BER$f`m!GM,Uc``"a)H$
+
+')1Kc%hS8m[L)@*H[i9Tq`*&mc`IF)E!i*TBaB@$B"rJZA(*c56iVN!!P%FqZXi-
+
+43"4VM3Rh!`#3!`d)C'pNGfKTE'9dF(9dD@-YE'PMC@jcC3#3#AA9!*!2#c-&!!X
+
+eG`!+eT`!N!4849K8G(4iG!!!ZEcVFEQmkh)!N!B"B3#3"mN!!'Tp!*!'b"P4"RY
+
+bTcCQLa(i3f'-1!rf`e$3(mB!CrMkXFJA$T1!NT3N$[V6N4YP!aC"Mmr,)Cp%+%c
+
+b`+`XGmLE$)$6arVFf1F0CJ0Ia"hNb)d$c2L!D)9B!EM$)!K$QI`l!PK5R1F!d9,
+
+T!N#q,$HKJm[C`8J8pjGjHAj%@[*$,)H&56P($B6K"Q8r$0c"U$Xl$"!A!Qi-JMi
+
+hS8FKMiq)GIN@VYd((-RhI-!G!SYMBKJ6"SCpJ1r#*6HAj,2q@",aT,)!)Q$5@G+
+
+-b8,KIJ!!$3GNFQPLBQaPCA4`GA4TBbeXD@0PER0P!*!*+--!N!m,0$i!#cE8!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1YcZEcVG3#3"J&k!*!(l3!!(ZX!N!CdLe%'TlP9+iX
+
+4C2L$[T!!1mXR&#CjB&D@1q40"N#2I'lX#`-h#2QL13L)-M$X!c`*r''!'I)DXKb
+
+@JD!ri!0fKp(@b@Pf'@A#*+)!kEj-IbJ-N!$2!j(A(mSN-'4D10I&MIK30QEiR!L
+
+K%!Sl)!2",&k0*39mfHR3ME`!)K"&ISapK"rPD#FqP182ZB1NTQiZA#-j9##181A
+
+%&QY`[13H*EKC(-qLU8k1!0@)FU)$60SjaB0EQ)541a6f)$q,!F`J3cL#Q4#%IH%
+
+`8G))e!jb1F@+'RRZ#SDN[b%Q3qUlNGY$LX)&i4M)N!$Z51E*3Z&q!!!0"Q4cCA4
+
+LCQ9PG("eG'PM,@aTBf9ZFf8!N!PGf`#3$`XeG`!,1*8!#YDF!*!%9%9B9(4dH(3
+
+!!,QmkhDj[1Yi!*!'!KS!N!B"83!!'i3!N!C@ee(*D8CA+a-)qX-B40a"cLF8*RP
+
+J9TBlj%d'3-qi3jQq--#-$k4c1-12##E+!#+H9`!BJR3I%19`#mR#T%ikTmeXDkd
+
+&$Z62mQ0rK+!R$!cl3-LG4@iFZa%'86pQJ"Z`2Z5(AZ"'2Q$3f9SERIB1DF5KbrM
+
+m#(#%fFX')4L5qrS48K)'rM!j*`$jq(VFN!$AaaH%0-(#6Q56f*i9!N'IfmZhBrZ
+
+4K`Zk8@kr(#21JcRN#mY),Ek()98%3C!!k524+-X(,$!6#T2BaGhj)H,JKc,m)6r
+
+fJ5#%E,J*i%*m)cEfHB%R2Sm)3$+4'(MGf#e-@Zb*`l')A*m[Q@1)h*Qqh2TT8++
+
+6RXmIbJ4Cd1[2m2Zm6@)Gf-JGCJJH9`JHL(aH,SXPGALVKQMP@U6Em((B&ib(DX)
+
+N(Lp-Sh#BT`em@4"Pmal@iQRNEC&&l#26i@4D6,JI!!!0#@4cCA4QDA*cG("eG'P
+
+M,@aTBf9ZFf8!N!RMr`#3$`Xfe!!,1Mi!#YDF!*!%9%9B9(4dH(3!!,QmkhUj[1Y
+
+l!*!'!GJ!N!B"13!!V#-!N!D6!9(*D8DAbHa-Fi'J2ia"a"hNI%*KNJGQCEP$hQ3
+
+!p)`lP1N,!mci3)BI%FE!PjAZ3`"Q!"(2,!!-3ES2L(,BK@4K8LHGdfDfYGB#"r*
+
+RqE%r3[!6"SCp)161)MH1h3L$U"mc`!eB(r*$,h!M(c$SE+f06RZ(01,3CAaq"$M
+
+#l'@$%!c*IId)+3N$IjLF%i"mI%9Zb1[M5d+DB'%RHD&BSK8#3CrEbaGNqj'(#lT
+
+4EXdF)mk$1H3,bdJc[SFKE34"N!$T)p%Sb`FX-"-+NpM&pINKiZ#(-[`K2rD"))4
+
+XZ!RJ3R`T0[CjJ5HqNJK!XT3BH0hB,8aDl)RlXBKFRqqCBiMFQElF"G#Z4#FpRcq
+
+8#E+JejrKphQE!$)rPT56MX*K[PRFAB5bJ6q$V#D[-cHNBF3q8MFRLf$#r3#3!`d
+
+)C(0PG'PdC@edF(9dD@-YE'PMC@jcC3#3#5qL!*!2#cL9!!Xld`!+eT`!N!4849K
+
+8G(4iG!!!ZEcVI,Qmkhi!N!B"X!#3"J%P!!#rqJ#3"TPL8FPT4TICCE3#ImMVk`I
+
+F#,Qc3F3Gj(a#BC)(CQ@j3pjN!25-1j6T#`2-q)!S"eA!$-MbCDAl%)!C3*3$,J!
+
+-36SK#)'#6*J8p!Gm)+DSJA31JkJI-j!![0Z-ca2`Kc*""N6!idFH,ZK'ITbG,%c
+
+UT(2Dc,E@@Z"!rL`rpNH)q)5"B4m)ZE2)M@-hbK8"0f"pb!qpT$JA'(5feNDR[8-
+
+DFHJb2Mm#('(fXN%)KZ5qIS58K)%r6-i*3$kqA*Fd5I8L6E#`b@`3f,i9!N'IfmZ
+
+AQK8N"m*PT!rI`j!!$S)Jb24K%)CC2Q#"Q4#`Lc[c3aJ+NrbK$(r)MhdJ##%EEJ,
+
+)S-5-!KJ1mm)iSJKP!hm'+626C%PKM$J2jNLV@&MX)ce`dK36lJF!N!-0$f4cCA4
+
+cC@GYC@jdFfPkC@aTBf9ZFf8!N!QH)`#3$`Xk2J!,2C3!#YDF!*!%9%9B9(4dH(3
+
+!!,Qmkhqj[1Z!!*!'!J#3"`&4!!$d,J#3"[+%8FPT4PHDXEA9D(1PQEXD3BM,%JU
+
+62$!Vbahb*J13!1E$BB!C(arXq4#!'5!%[6iqBf&JJCN3Z)0"k(&MN[%3c1*K,!Q
+
+b2Z6'rP!Q#'H(X5m,%&J8m[J!KVb*"U+-hm1!,#l-J(3IF!-@K[hB(r%"I`Ml-Rd
+
+S@CMNiUfY,",K`!XapRN*bRCcB4p)GhZ**qTa%28(Ji"aXk`["2`C)"YbJ#GB`U4
+
+BBe68EG*A"%%iLh3&N!"Nm"Li8DB2C*!!+c*M3#SIFTL)!b$L,-NI)ReB34"a"lQ
+
+F#LU0C#Q3!cR!!3cM@,&F"Y)jc1H&(2SLJ#8e8K0@+GdG*U@eh*i`X@Uj!r`HI*a
+
+V(ZFfaeNI3BcBQ$pZ*JU&K8RLp'b!I&l1`b1[jRIZ4ZPZdT`0LDkG`b[bmb++c4F
+
+6C3L6BTXNqJ!L(mMbNGF,IJXK#2Nm[R$BME+6K8,KIJ!0!Q9NCA4cC@GYC@jdFfP
+
+kC@aTBf9ZFf8!N!P5V3#3$`Xld`!,3)%!#YDF!*!%9%9B9(4dH(3!!,Qmki'j[1Z
+
+$!*!'"0d!N!B#I3!!JKX!N!EQ&3T1mH6a""R!K*)"mmLYK")%-$+KK)QRj&CbDfH
+
+%RS```XJ-J1+p+&iQ3)SR!0r&9S*q"!299ADpj"KK")A-ak[RK@qZecYUf5IM8h3
+
+fTVUjr[eq,K%AmRP4eeA,`k#m[L4DGf6pc#p'dpkQRT6(qcLP&H91qf#6LC4k3pT
+
+deYYNfFHkiLlIH$8J'"&$4'aL8S5hNB-+"qUX-qLMb@LET)0+q@C&8l6qZDi12!A
+
+Ue-a5-UG`)"A40*N`@)pU6iIF8eKX(mMif3Ef!kM@eDb#98r1&)MS3TVpTd5pQUA
+
+f-I-BXhV&B1VUM@@"36piATUmkm"6qM!LYkJVS4*"[e"fTNZ%"X!CH)!&Bc#cj5Q
+
+@6'#9lj[eTN'AQ-,85[I,Z[V@'jrC152BT&AaB%8EIQB+4ZQLRa5+`2+1$R,9eF$
+
+DGRD4G-rK*BkUK3&Ybd%$V6X)ed3fNZH-di3!)MBVA&FC,V#dEY*S)8T(kK#`lfh
+
+E5dB`*Ia%p36K%QX#D9j6e+Y`Y0PHAGpYeirVcAGdi@K`kUDFXR[ifU`Ne+p)GE#
+
+pVN3!%I&GJGd@)jDA5ZBPRrkCPc&JGZMXrQ(ljHlUYPR-0[U-c[FCbI&5@KmALjE
+
+e'J1h4Np)H6*5IFQqq!`TZPri%(jcYAPXa16*,cRrq*64#r#U95&B##XE%R(P%dc
+
+mX!8bRMEYT%kVR%2dVVQp,jU80CLL`I6)LK@6X*9jQ@d`,B3j#)6&@Ll6rGHCZN)
+
+0R3dAc`"HU$3r@c1+d'Kqb*h,G#em3F6$%L&`@NB"!4I8j$$(C8BNkRJq3J12)S!
+
+QUXe@)c[r"@#(HK'ZBqGi$hF`RVjXkYXmNS0PB2-I!*!$$39PC'&XE'9RE@9ZG(0
+
+THQ9XD@0PER0P!*!*T@J!N!m,2C3!#d%b!!V@R!#3"&4&@&4dG(Kd!!#j[1Z&ZEc
+
+VK`#3"dJ!N!G"!!"SY`#3"PkQ88D$cQ**bRh8S$mGZ9%fB"(dq,`FmNQ%`L32c-T
+
+bKlc*!1M5dj%[iRGMAaJB$@BAd0YY,U20PCBX&1i(!*!$5J!!$34PC'PdE'9RE@9
+
+ZG(0THQ9XD@0PER0P!*!*ae!!N!m,3)%!#d3I!!V@R!#3"&4&@&4dG(Kd!!#j[1Z
+
+)ZEcVLJ#3"J6G!*!'!Rd!!))E!*!'1rm+6[(Nm33C`)55!I2)VB35"$!bSB5*Tq4
+
+@FQYRK*k---,)$)$L[5KH*N#+*`$Ia9D#IJ3$e99f[H3BB35&c-HVji9[VYFlDYN
+
+Rie0d0UDkZIlpILi4&r*j8GG9bm1J[,iN@RGNrF`[4Y2HTTk8arXiT4AP6[YJNiQ
+
+8HN2DG0EEC0R(ZZ)ZhhJe)"J43d4XBP+%Yj'$#JIUV$2SSmPSQk5$5[PQ491drVQ
+
+Z$M`&kY6-8M+RF#!9d65C-&L2DNq(h&0BE"r)q0N'pJ1SeY@XJP92cK5)k%+DrDG
+
+%[CUPpM(c',0ka@$UkSePJ8%rH&kD[1[!8rS`)VHS+k%53Ep3GUC,K!E!'AL!"@-
+
+`Xq8TPNaJPHqEpDC"PjM#e%VhblVkeKZIf6NMf+49m@"&'hjQ#NETSTm8LX$bMJj
+
+beGA!fRCfNA62i5@1US8"EFY"!kdl#0G%0T,RM01%!#)f+eaA'5k`Y'l5D#&+4qS
+
+3X1pYfdY'-#Am428%i4*V!QPH8p5VF,6CAPhIEGH2kmehG1&SF1UQR,*lq0UX*05
+
+[5(@`[Dj%!"(aAB(G&L1@PdVQ*CrqQCFaB(ESl2jKqqAZkVCCc$EkM-lh'FRa8PS
+
+I&iZ@p4S$YdC25(Nb8Rh*[[J-+ETIq""qFl9jE-6Nb5mjrrL8d3[`UP8K@!JV'a*
+
+aj40-r,!&-TiflD41Uja$p+kj[5qDP$@BSX(db)S9Nl#9HCPY-#f%13L%a9SZdrh
+
+AQET#$Cd0&mm!AUJd2eXcLY"SIXLGbh3YI%(%`a)KF&T'!3%Ae13`af9'*1Ti2N)
+
+$Mb+!*UV09L-lr`9JKhS4VQ2RH!ph-*kqE1VE2*+$C@$c(`#3!`d)C@4TG'CTE'9
+
+PER4cDATPE'PMC@jcC3#3#5l,!*!2#d%b!!Y&h!!+eT`!N!4849K8G(4iG!!!ZEc
+
+VLlQmkid!N!B#'J#3"J&0!!$rl!#3"RPC88D$f@8b@i`J`ardKGaC2U%`b31cXY`
+
+KEc)!DGL0F"KJaJFX-"-#RpH2)C+"S$rJ!caD!qNF"[j3'2[FAJ!cFJKq+&1Bj!E
+
+BPm9#j%EC1@lJacPKD5-5R29jr"PqRaHNCqHNr"$,BD*pb[K#)"Yb`U5Jcahaj@3
+
+cGG&$6'bP51b,q-2%J)3di!k$$)KbQY'&5BPZV@#BC`jm@HNqY,J!UPX$**S`EJc
+
+F)-bPKhep19m)jaMN3i#S(c-J"(2l`@X3*$BP[K(K`SQ(%0,*H(*T2daiL5rN*He
+
+J,eD)e*!!q&$)MIemT4'`f(8'%R0!QUkMNE6q0FJ"McXN6-Tb%c$qBb86L!*KeZf
+
+*,3Bh%BGp`3`Cm-!34M!B*&X6(86)kd0%'++-hm-)Nlbq$(q)6$%+%I8Kkh16k@4
+
+Ha+4UX@MU+0m$lJIE`$e%)G,N%J#3"!d$C@4ZG'CTE'9PER4cDATPE'PMC@jcC3#
+
+3#Iq2!*!2#d3I!!Y'Q3!+eT`!N!4849K8G(4iG!!!ZEcVMVQmkim!N!GV!*!(63!
+
+!hYS!N!CYGe&'J`e%h#MNc[)Pj6aUd*q1h#JEX!KkI&i1q56#*C!!`"r'3Q'5"fC
+
+PZ82HC!"dkHR)&r'lX5m-M!Dc#pKd9U2&R1D+%e')BdQb8,JI!!!0"'9NER0QD@a
+
+PC@jdFfPkC@aTBf9ZFf8!N!NlJ3#3$`Y&h!!,4dB!#YDF!*!%9%9B9(4dH(3!!,Q
+
+mkj'j[1Z5!*!(4!#3"cd!!"p%!*!'cUP44S-Y,5Rh8B2qG14'fB"&d12cFXJR%3U
+
+62$!Vbahb*J1J5dp([SMIMAeKB$5BAF#QXaV6NSA#r3#3!jL)!!d%C@4`E'CTE'9
+
+PER4cDATPE'PMC@jcC3#3#Ddd!*!2#dDC!!Y)!`!+eT`!N!4849K8G(4iG!!!ZEc
+
+VP,Qmkj8!N!GS!*!(63!!-$S!N!D+V&&'Jm-#f'$)RH9,bRR8S$mGZ9%fB"(dq,`
+
+FmNQ%5b#"2ib&`L32c-TbKlc*!1M5dj%[iRGMAaJB$@BAF&JXjM4A$)Ff(%Z5KF,
+
+p!*!%$39PC("XFfPXC@9ZG(0THQ9XD@0PER0P!*!*TmX!N!m,4dB!#dL`!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1ZAZEcVQ!#3"dB!N!Fp!!#ia3#3"Q&!88D$`j+@P2ZS3Am
+
+kFU0X`#,SmANjj*-)K8NHQ*AP$RQ6!G#PTb0Ia1r'[M!`'X`Zi,#BdeaTb8,KIJ#
+
+3"!d%C@4`Fh0TE'9PER4cDATPE'PMC@jcC3#3#B[r!*!2#dJ$!!Y*B3!+eT`!N!4
+
+849K8G(4iG!!!ZEcVQVQmkjX!N!G*!*!(33!!-m-!N!B$a9&'Jb-Y+IG4Jrjdj%E
+
+CJ%A3ir0bb#F4#T-m-#[,(I)Q!k",6dHqL0q0I@&J0*KG`1'dkif'$NjM@V*3Z"m
+
+!N!80"Q9YF(4jF'aPC@jdFfPkC@aTBf9ZFf8!N!RZ@`#3$`Y)X!!,5Ki!#YDF!*!
+
+%9%9B9(4dH(3!!,Qmkjfj[1ZH!*!(EJ#3"dd!!*UH!*!'U9C44U[$eF8"-1-2C3T
+
+cMQr&ML`*FTMPF"LiR"f-`*p"FLl`KdJ%r1'FSj[&iQ`3KFJ,)&U5#2aK,"-QQA5
+
+@0#1!*"G(r@&IXP#i(`#3"!d%C@pQF(P`E'9PER4cDATPE'PMC@jcC3#3#Fl5!*!
+
+2#dPK!!Y+k`!+eT`!N!4849K8G(4iG!!!ZEcVS,Qmkk%!N!Gl!*!(A3!!3#S!N!B
+
+1re&'ZmNK*#p[#B9*,2*jr4ihpXN!j$$,i6"`16XBJ6m$B-D(I-"0rN-)XL"jYaN
+
+hFRZ`$i8"KL$G*da#2VFAq%-m#h*Z(*2A!FM`"iR4JFk5CJ53!"HCq-1qC+&`2`!
+
+!$3GPF(0`D@0dC@9ZG(0THQ9XD@0PER0P!*!*AjX!N!m,5Ki!#daX!!V@R!#3"&4
+
+&@&4dG(Kd!!#j[1ZLZEcVT3#3"J'2!*!'!4%!!,1k!*!'-K"44NHD`kahJ3ard"G
+
+bCrQ%`L32c-TbKlc*!(4#IZ`,!hG1'U*qc!$-q%#BpARm'AkI&r"%$AKJ#,[p)Am
+
+S8jMN$J&Mb10Q`ec3M3QK$F-il%&q&J-aF5d#j'14,q`Ma-323`"Qj#VKf48QaDl
+
+Rb-dbINqB+)GH'#90G"Pr1,F&QaMfI-#Ia8,%#rSK$!%Ne&LBa#*)d)-`NE!`i%*
+
+H(b*LS4F3FmL!+-Z0L8[(&mE)lq(eZCEhC8PHj#DUjlaF#!QCqi$1UCF"NpPLN3'
+
+(d@CdkY+--J!4Iq`B1aUGDFBQ`"h+&LD&13p$@N#R8Di6YKB%FcSk$d'88j&S08(
+
+Z8*LXJQT2S$"Tb65S'ee)RL8!N!30"Q9aG@&XF(4PC@jdFfPkC@aTBf9ZFf8!N!N
+
+4U3#3$`Y+k`!,6U8!#YDF!*!%9%9B9(4dH(3!!,QmkkDj[1ZS!*!'!fd!N!B"b3!
+
+!8aJ!N!B5)9('pKed&JI!M$q8QCVl@KAQK0jD%8U[pq*hPJ3jc()i$&c1$NEJcb"
+
+"&rK$14%,qB#[,qF1bS"*CdNc!NM#FG3IpL8$i)T#%1+bdRdS,%a+N!"5J`[!Z#1
+
+q("IZc[,a)"Ij25$L$R)*H"55ah-6L,cV0'`B`QjrD,'*cEL4fi1*0EBdLb(I485
+
+XQ5&-iN[#$V%rp)hpl[3J+3!K$Y$VdScQeMDldfK`J#J$`llF4JK'r@Zm8!MF)@%
+
+5al)q"$aZJJKmQ2J5!p[JIL+++VQj&Fkjf4!KAjL&)5rC&34Ke)H%58[`f)hUBSJ
+
+$rJNH4A[C`1[,F(0"R#c*(8AJ$bmG(Zj!p1NMN!$PbpRD,)Y'GG*9M0cC[&38#QE
+
+(S!N%IKcf"61D!"b&`U5`Mb@M5A`%B#-I16Lj@#N6qL+NA8R'8aMEhT8b5iSlUfE
+
+-krTC,%6B(F+mEBr-J&D'TdFK'-da`$,GILcC"2H6eBM[JDJbABfS6@i(6H8+Hck
+
+2Qb1cQ*Fci$"[9L0+'XL!C&0Z2hF@'r54UD*KYQrT0arP-ceaa'AMVP&N`-r80,V
+
+-,U19E!Irm#-LLKq!U$mB"1jJ'2*IQc!cedYmqh5*8,JI!!!0!Q9bG@&XF(4PC@j
+
+dFfPkC@aTBf9ZFf8!N!R4U!#3$`Y-E!!,6kS!#YDF!*!%9%9B9(4dH(3!!,QmkkQ
+
+j[1ZV!*!(j3#3"j8!!#U"!*!'[S044UFZc3Jm-)4p)4`1qX0BD(3Z[l-N$mc+FSH
+
+mb3!BN6[X#i--",-!CR`J#P%Jc,Sp[TcV%%'2cmXKAeJ')QlNGkF(bBNP%6CPKck
+
+%X`([a%()RHAc!RmSKqZ(@!i6ZcEbCrQa2l,8",,FfF+N%-3Jh3Gm[,i$Z"$aiMR
+
+S6"1F4S24j!#-1ji,1"p`16XBNiA#r3#3"!d&CA*KE'a`G'9PER4cDATPE'PMC@j
+
+cC3#3#3kd!*!2#dkP!!Y3J`!+eT`!N!4849K8G(4iG!!!ZEcVVEQmkki!N!H$!*!
+
+(D3!!CMJ!N!EeeP&'TmjL%3U62$!Vbahb*J0J41k`,`cF`5$J3ZNFm[ZmJ%A3ir0
+
+bb"H@JBJEqGhT3Ik%3)S1I3KR#j1#rM!1J``%X`"QI#!+85$-ZMdqiP426dHqL0q
+
+0L4JDQdDJYpYF4TXV,9NSh!m!N!-0"@9bBA0PF(4PC@jdFfPkC@aTBf9ZFf8!N!P
+
+EJ!#3$`Y2UJ!,8BJ!#YDF!*!%9%9B9(4dH(3!!,Qmkkqj[1Z`!*!(j3#3"j8!!#U
+
+"!*!'5Lj44UFZc3Jm-)4p)4`1qX0BD(3Z[l-N$mc+FSHmb3!BN6[X#i--",-!CR`
+
+J#P%Jc,Sp[TcV%%'2cmXKAeJ')QlNGkF(bBNP%6CPKck%X`([a%()RHAc!RmSKqZ
+
+(@!i6ZcEbCrQa2l,8",,FfF+N%-3Jh3Gm[,i$Z"$aiMRS6"1F4S24j!#-1ji,1"p
+
+`16XBNiA#r3#3"!d*CA*KFf9QD@aPER4cDATPE'PMC@jcC3#3#3K"!*!2#e#$!!Y
+
+593!+eT`!N!4849K8G(4iG!!!ZEcVXVQmkl-!N!Gm!*!(A3!!R-F!N!B2"9&'Tbl
+
+0D$*EM#$$(r5&h&NqSG&T@RaN54kBPH81HC-"-#*hf"F'BUm[k-1qX!`JAaD-q-)
+
+5J"NIi(&1$PJ$8FE[B8#BJ9c3#d)3%iX43Vi3$QD$G"q!V#q8,"6Z"`!0!f9bCR0
+
+PCQPXC@jdFfPkC@aTBf9ZFf8!N!Pe"!#3$`Y4L!!,8b)!#YDF!*!%9%9B9(4dH(3
+
+!!,Qmkl@j[1Zf!*!(I!#3"ed!!*c(!*!'6mK44UFZc@Jb@i`J`ardKGaC2U(4D9T
+
+mC%NHQ*AP$RQ6!6!LGpJA"Q+[,qM$[V!-)&m@M2M#%S!C(q"a6JjB!e('lf&!Q)&
+
+Fd!Y#%"1,%8+q%!jQJh3IJ+`[P#`8lJF!$30PFQjcC@CTE'9ZG(0THQ9XD@0PER0
+
+P!*!*H`3!N!m,8P8!#e3,!!V@R!#3"&4&@&4dG(Kd!!#j[1ZhZEcVZ!#3"k`!N!G
+
+j!!$5)J#3"NZb88DR$86F+161mLAP2'V3RilF+"Z`#(TmAJlj*-)PN!$!(mC#BC)
+
+(CQ@j3pjN!)c)(ID&33D#@3!c2K#&+""Qh4jIcK@T[MXpk"1(*B$(1m!IiS-Xb4p
+
+L18cipI4dj)[ihCK)l$YeD8CJdeQ0&R1D+kk-MA!X54B+p`-!$34PFQjcC@CTE'9
+
+ZG(0THQ9XD@0PER0P!*!*r`B!N!m,8b)!#e6-!!V@R!#3"&4&@&4dG(Kd!!#j[1Z
+
+kZEcV[!#3"ei!N!G4!!"BF`#3"JqR88DR,8dS62,!V#ahb*X-J"'j`li`F!H$J!Z
+
+PFmM[mi+)'rRGk8%5ma$-!TMaJ5K%J6$Vp[L5K8Qkp(6NLrMGQ!$fRESd)l$TV-D
+
+dC+&`2`#3!`d%CA*`E'9QD@aPER4cDATPE'PMC@jcC3#3#@Qc!*!2#e3,!!Y9Y3!
+
++eT`!N!4849K8G(4iG!!!ZEcV[EQmkli!N!HZ!*!(H3!!bLJ!N!B*!P&'Tm-#f'$
+
+)RH9,bRR8S$mGZ9%fB"(dq,`FmNQ%5b#"2ib&`L32c-TbKlc*!"L41q`,J``%X`"
+
+QI#!+85$-ZMfqR#Y+$(d)C`1HUiBPJ(G`J$r%TeQ52m4bQ%M8dp14,q*hBf+blp5
+
+P'B($BM'RZ@,5f!R(NQ5KF$m!$39PFR"XFfCTE'9ZG(0THQ9XD@0PER0P!*!*T%d
+
+!N!m,9-`!#eCq!!V@R!#3"&4&@&4dG(Kd!!#j[1ZrZEcV`3#3"f8!N!GC!!!`$!#
+
+3"ZLk88DR`j)Q&#CjB&D@1q40"X#)h'&I',L$3F#&dMRNphN"Lb$V3cJE"2eK(!B
+
+C#'B"c2K!&+*!Q(9lI-R#*&ek1[*&r'j-i2Y1ACS41#cQ0&GDXP#i(`#3!hF!$34
+
+PFR"cFfCTE'9ZG(0THQ9XD@0PER0P!*!*L(N!N!m,9E8!#eG$!!V@R!#3"&4&@&4
+
+dG(Kd!!#j[1[#ZEcV``#3"f3!N!G9!!"H1`#3"LR$88DR)ddS62,!V#ahb*X-J"'
+
+j`li`F!H$J!ZPFmM[m`)@3Br2bb'5ma$-!TMaJ5K%J6$Vp[L5K8Qkp(6NLrMGQ!$
+
+fRESd)h!ilAUMSB26Q*BX&1i(!!!0"Q9bFQ&MG'PXC@jdFfPkC@aTBf9ZFf8!N!Q
+
+m5J#3$`Y@IJ!,@#J!#YDF!*!%9%9B9(4dH(3!!,Qmkm5j[1[&!*!(QJ#3"h8!!'q
+
+l!*!'8)p44UG6ThFPj6jUa)hml[5J6b)8*VP$`"m+Bm4jX"q'J[i`"TKaBa$e"i-
+
+Jh3F3a`-`i`*Ia"I#!'B!`R34JLKCQ16+C[dHGc#B$4Kh1)FbGJFj(qMQd(9)-rB
+
+!'!+5MU,%)I%K0j%Fqi$APmjPC[T$QFP#iAi!$39PFR*[FR4TE'9ZG(0THQ9XD@0
+
+PER0P!*!*T9)!N!m,9d-!#eQ"!!V@R!#3"&4&@&4dG(Kd!!#j[1[(ZEcVb3#3"J'
+
+-!*!(k3!!CGS!N!D24e&'Tp2Z&!U6))GC$SH"'`6pB3bm[V!(qG2pS8b!'4r`)33
+
+4k-14T1hQ-KNX!ri-i!jP*`0JcZ!4X8qB&(@(33KLNNZ"NJ9KImMMbr%)h-4J&2B
+
+"Q!&bc,9F[3',Xh2%8F)2"N%k)BK#d+qEm"I0f$#%hIj3''4!$S%XAeDk$i@e[,-
+
+I`Vj-(a)QHD$A4cJamS9C'2,QP"MPL#ECE)klm*(ZLDmIjL0jc5`TbaF1Zc0pZIR
+
+3RC@$T0X33Br2bb%IFB8SirF`5pB4H6`F8ACNT!Y(Q-3(XDB%F4lXKb&5ANJm2XA
+
+U3Z&q!*!%$30PH("[FR4TE'9ZG(0THQ9XD@0PER0P!*!*,Yd!N!m,@#J!#eSH!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1[+ZEcVc!#3"cJ!N!FY!!$ZV!#3"Y)58FE1$K$LXS6
+
+#*-KKPX0Ki!0LCA,M9,95cIrIN3!-!@Cm`"mLF@"Ke)H5KF,p!!d#CQ4`Eh*dD@a
+
+PER4cDATPE'PMC@jcC3#3#B0j!*!2#eQ"!!YDm`!+eT`!N!4849K8G(4iG!!!ZEc
+
+VcEQmkmm!N!H-!*!(C3!!md3!N!CRb&%QZl16cQN!ARmB#dfaGjD8"51q--#-$f!
+
+1iD!2C%!8G51[$2K$16((Mh`Hl)ImeF,!MqZ&3BEEi`pPbN"kYM#*Ch$@jr&Rq(h
+
+H(#XVj2%"FCE2(HB3LC!!Ke6Mf-H'*FP#iAi!N!-0"@CPEQ0PG'PXC@jdFfPkC@a
+
+TBf9ZFf8!N!PLjJ#3$`YD(J!,A"J!#YDF!*!%9%9B9(4dH(3!!,Qmkp#j[1[5!*!
+
+'!3)!N!He!!"%cJ#3"KJ,85DM6@m8#T1`,aJ-!mci!1B3$T,A#2K#f)G!KLrNmB%
+
+Xk29T!6!KQ!9#-!TJ5!Em'8Z!,-NI"Zj``1IPd3-Bm3(@(FBjK"lN3PihbJB`PhL
+
+1h#cMpi4"e"rb`LJa5B4*8Am`Q-Ze`L$$MIKA(`121`6F)5,9pi9!'%-@Z(1PA'q
+
+QM`JN$)Qc*"(N-+mR9,N)q"###'6j`Q&hTLmC!$h-BYh)"cSjGBiFRe1cc@$[P#`
+
+8lJF!N!-0"@CTE'9`G'PXC@jdFfPkC@aTBf9ZFf8!N!N(RJ#3$`YDm`!,A2d!#YD
+
+F!*!%9%9B9(4dH(3!!,Qmkp1j[1[9!*!(R3#3"h8!!0%M!*!'U(04*V2&k!!CrU!
+
+[j-lb#IRc@iQcN[1S3AmkFU0X`#,SmANjj*-)K8NXmRRp(MIfb3$N--[K-(!j1aL
+
+"2`1iF`3!CJ$-q%#BpARm'AkI&r"+i1[R$q1`--NGmJ+21`65I3$jh&iC-1NXD8B
+
+!#6+1qX1qC+&3Z"m!$34QD@aXF(4TE'9ZG(0THQ9XD@0PER0P!*!*DiX!N!m,A"J
+
+!#eiL!!V@R!#3"&4&@&4dG(Kd!!#j[1[@ZEcVf!#3"r-!N!He!!!Be`#3"MpE85D
+
+ca5)8*QAiJm%`m)H!'b"ITKq'!-`!Q2'"614Q'EmR$+,qN!!A4S%(KV$E(r+(-R2
+
+L#BG`d#G-FSHm)"eb)Dq2[&q!S$rN#a1!K3(MM[K!ZXmA!PlNMSD!cif#IKp+"X$
+
+&q)Nb"b')K8NX40LG([3e!Ai-[0!A$YA$)!T4!'4!"0c")-KbHaKH5`1ml-#GcB-
+
+&JLAjqVNp1*LG8`PhCrP!P-5a4-HINH&$[K"1d(@KF$m!N!30"QCTE(4PFQPXC@j
+
+dFfPkC@aTBf9ZFf8!N!Q9@`#3$`YFr3!,B'X!#YDF!*!%9%9B9(4dH(3!!,QmkpQ
+
+j[1[E!*!'!rS!N!B"f3!!%m3!N!Bd`e%QXm9PG!+FJAeCE0#0IF$VaZiNrP'$rR6
+
+N4YQ!4G$Mmh,)*a%+Nb#(@3k(J4Y%)I)#L%$3(mBbi2@a[T!!ear+"$!%-1-$1*[
+
+e!CL4Fb-Rm)F)@"-QH@!)ZrdK(Q@"-*FHpZ%iCq$,5[HK-""R%#mVakc)+pU-'lN
+
+p1"jP5ERfQ*9FSDB$i1+pXb,p-2"&h%'1h,#Rd1-$[*AVpM$#T&c45l9&9aT`Klc
+
+!Md%@&mCmr`j(m"C`16XB#C3PQA5@0#2Jl9bLhF`PLc0T%dEM)h)*0N6)&fCKlMa
+
+%9f)&(2Xaj`YK(ZQ(2%(15iVbFjPbCMSCR0+#&1!6LZF2mM89)M$U#l*!j![k@-B
+
+G)Lk+cqIQ38KVKNK0f34%"a$1cNU(3G$#D8ac!H4M54FScA1b3iL`R`a@GXq5&Jm
+
+9--`Ka2j-CX8q`F143N-Fc!ET2Vl58CJ8Ci@&56cM,4!13L`RE38qP,0*LfpB!rk
+
+9h`,Ur6dGD!Ad`!#-2FLUFA6Ldc'IX$5F$ARLa`aaa"i$0rNU3ASfD*@l0CD8@r%
+
+%FN'5`qVQM2Gb(@P3RdlNeZTjF(r12Y*98RFX+EHmhjf%3&`YJL9p[3Ma&ESH"%[
+
+kCK&Bk*-a)2m#+-N1PJ#3"!d%CQPZC'9bD@aPER4cDATPE'PMC@jcC3#3#3ld!*!
+
+2#eiL!!YLA!!+eT`!N!4849K8G(4iG!!!ZEcVhEQmkpm!N!B$E!#3"J'"!!#FLJ#
+
+3"[eT85Dcc3"`"[CPX8%hpJ'['lZ6q%F0qY14'f8$&N'2cmXKRd3S6))FCMNF"TM
+
+aJ3`r#Q2JJD%`pQ21&m)!CZ3%b3(m)3)#m@,3`*H9lN0%`30Z%25(X3a!Y&5NldC
+
+Z$rBKAX-#8BLm%T!!34!6aZpKFN"MGj!!m`Q65#-14cU"p'cJic-@pSFbF`KjMa-
+
+rjTP@EN&T2hi)q(&BQ"313R,N`1AXB%`'`*a6@qcM)b%%BBlScQ[9FXa3,-R1kBd
+
+P%BiFJNiQd3b4YM*[bH,C@HN`#&SiM@NZJ(`XmS@*Kec0%#,XKk(B9PM5NV%N-)F
+
+3qc1Ca*ENDX$$)838JQb3!1lMZak&5Id@UC)BE`'qd&+'2aMd)G*RPkrG$mZ!Ip8
+
+HXERhG+!9d!-$-2B3*VP$hZ@l3B!d6)H&QQ*+Er%p"ZlBk[CbHJk&5EN96b!A*$Q
+
+XEXji,pIaKa1jYASH1&ED"fiek`i(*mVlh8N)a08L@0,ALi!eJf"*hb`##hdb"Z4
+
+I!#AC`4)!N!-0"@CTFR0dFQPXC@jdFfPkC@aTBf9ZFf8!N!PDe`#3$`YJD`!,Bd%
+
+!#YDF!*!%9%9B9(4dH(3!!,Qmkq#j[1[K!*!'!3)!N!Ge!!!cN`#3"YP985Dc-md
+
+&-1-2C3U&5Ii-FR+"2m4b'2M$`!fL%(PP!(+B*(K1f21M-!BHaShF(Za$!1Bb#D3
+
+,NmbV$!*r'+me'2LbdKIMLI)F(`)h3ZlXj3)4mQIk3h'd!)!B-fj-'Z5bR&$6CM"
+
+f"RE6*Q&",5B,KIX"!*!%$3CQDA*cG(0TE'9ZG(0THQ9XD@0PER0P!*!*%5m!N!m
+
+,BP`!#f5L!!V@R!#3"&4&@&4dG(Kd!!#j[1[MZEcVj!#3"J'-!*!(m3!!Yd`!N!B
+
+L19%QXc20P3D#rM!@#T-JKeN1Ki%l*`!H'-*ZImJIbJ5BmB%F&X!-i(0l'*!!jFY
+
++pb(q6&Nr4-!XLFIU!*Jam"1,%2J3JJMi-mMYBLe4HL,,c@*aGV)`5Ha+4(dFpJ8
+
+c3*Bl'k6lFJ%DL8+8m40pfahfjAM)cS4[%)E#T&b6)J!ZKQ4Xb!@p2(q#r"Ml3X!
+
+G*MdV'))-2`U6URGcUPGLeD2Y%)KbSRR5$AN*XTIV1%3`i[Ik[-3$9c*%rL`rpNI
+
+ibJ!L,fNAc6MV)i!4QeYciN0Zl)FK)C'1JQ&Je6PNr)ZHCT54@6M!C(FDGISfbF,
+
+p!*!%$30QEh*cG(0TE'9ZG(0THQ9XD@0PER0P!*!*,5N!N!m,Bd%!#fHr!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1[PZEcVk!#3"J@f!*!'!Ud!!*V3!*!'&)-+6[(Nm33C`'5
+
+f(VNe2'&VPadj'RP+'"P3FT3-Q13SiC)**C3m`1S"V`p!$L![!Yc9X6@#I[3#9CI
+
+d5Uq6-(+8M"JC-))NYK*m!QXRrZVQPYC"kZ#6"%I@ab4pR@c`cXC8i$GcGL9'$Y4
+
+*U,RTKHGP@G5KEBe[+U,rYNaV+c%K[1X6Y6eHVCJ-+3%TQE(HqJfPV6"6%!$h8KB
+
+YYbZ@H%'cj4aTqb$0J[CE@fpTEje6KMjb3bBLQFQE&Z&Vj3UeF@@a-f,0b[%RQTd
+
+H!C3ZBkHY54-'licV64TB9JHkrIU&8LL,KK0,Dlf@jAYYBj&4Bc+5Y$(0cG"kpF4
+
+lGZ3YLcr!+G!ETE1Y63-L-(ib[JHMTp$T&ShlffjCr%ml0-NG4I[!'1VeJ+MM5eX
+
+DeNFf8QYM40QjP,+B%LHqT@+I,%(@X@pd&X&MTi`iH5N52'@a%8BGHUX&SM+11Q'
+
+mr$@Z"3R(MQ'F(EY$"E1S6b*$'mdS&&5%k'FcMH,Kp4VCZP!9'C+`!1NpPU!,HFi
+
+%DUI001k`J!QLh@3YBC@m(qY$[(Bdk[$4-666Xi"9UBBDP8MH8[EH1+9a`Nmf9HK
+
+j@E#"dT*YGB4A1I&9-YTbVQ53!-E[&SE5KaP0U6"aCq3ap@Q0bTYRNAhG1DK"Kc[
+
+Z%+cDfDcZ4GJR1KQLjhP''U$#(H@VBC1N[NYP"U[i32bYFlB'pk-q3)%[KTeY'&V
+
+2DRQCSeEZpZB3GE+%[6Sf1!Zq9V,2rT8+4F)&b-Pe'hTJ#5G*E+G&,iLV6EA)RGp
+
+G`e[[D(P299A0L@l89RXE)Cbh,P"#2MjU#XMD8)-#Td@18rNKlH2F*eRJ`bLA)*a
+
+km9P+3iiZe8ES8qP8GX@PqS,Z,*h54eT@jrGdeiN&iS@parNTRQI91IlTmd0qFeQ
+
+@r`#3"!d(CQpbC@&MD'aPER4cDATPE'PMC@jcC3#3#Idd!*!2#f5L!!YTk!!+eT`
+
+!N!4849K8G(4iG!!!ZEcVkEQmkqX!N!B$d`#3"J'j!!!LbJ#3"TkS85DldkM6Y`&
+
+H0hB$l-YLJflX5q)I0HK24fk8$9J%26i[Kh`5SAJTVT,c9JA*N!-*FP%S62,!V#a
+
+hb*X-J$(L$R)Na3&QI!N'"2eK$*!!Mr@4Sa2-PJ%Bm[K!"N6!jrB``U3XAeDk$`'
+
+BNB-9c4!5KCSC)!XLSY*hK`Ke(JBhLChl)lk3!%bBa'ZNq!()iNLkac0G%(CR%Ad
+
+hP)NCBU1kiRTqL19`'(L)9FmR6)T#j!h,5!ULM*qSf1j`,Mq[d!m$AkaFCf9p0Z0
+
+'EJrfS@3bKQB),0k9PP[#49Bk$))@6Q1DLjp"l![l3X5HXN1)X"q5EN9j,'Pa1i"
+
+K$L(fCc)i[Sed+6D(%&%)XNPlILJ6F'(5LK8@*['-Yd!i#,%m`am-NNS!Z"Jh*[e
+
+K[I0p589Xp6dGD!Ad`!#-2B4*C-92DTH'Xr)RIX`34q`aF*22"+4RJeBj2BI#T0b
+
++*j!!#j)F9MGR[*IVQ'jk&-4q0NMUaq9J68&1CGJIMCV+P%)JcK@U5%!Q*"m9U9k
+
+4!4rfE0rDVG8lirkFSH('Xa'`T0`9r1kf"1*U@LcTkfR"QQ@aT'qQKB8q@4Ab,i#
+
+5l'!*!!d(CQpbCACPFQaPER4cDATPE'PMC@jcC3#3#I0f!*!2#fHr!!YUa3!+eT`
+
+!N!4849K8G(4iG!!!ZEcVlEQmkqi!N!HI!*!(E3!!BLS!N!BX4e%QZp2BdHJ%rP!
+
+B)mk$r6!8p)Ha8*MNJ9PClT!!0aN!*aF+!mciJ'J&T3#3!)reZE(2'mb@!5k%r8%
+
+3KPNqc2K$QF)N3[1p[Kcb04M%BFl$!(FBT,RX$J!4F,9afMY*3*Bli!X$2`CK$0P
+
+NSA!r!!!0"'C[FQefCA*XC@jdFfPkC@aTBf9ZFf8!N!N(B3#3$`YTk!!,E-B!#YD
+
+F!*!%9%9B9(4dH(3!!,Qmkr#j[1[a!*!'!UB!N!B"N3!!q4F!N!D$0&%QZp-+3P`
+
+@L2UpQ!%XmRRmB6m-#B9*N!$$,)I$`!fL%(Q""iD`farbKc**BSMmj0S,qJ$b%5E
+
+hN@Y#X!!cJ)MS&'6#*"D'`rldB(D1P1[eH8&k0JLcESm[$-6ZN!!AB-D(I"N3q8!
+
+)BL+&h*i2!C*!q!J42T*3D1K$*$2)-BrpQ-RbBEm(3")6cP`L)qeKH4B'3CmlM)9
+
+*ST`f#m$$Z*(EJhdS,!2qN!!Rb(Pj#EFIb@![K86E"H$eCrVjVMd#BdQN'I#5l-!
+
+G"#`N9HX!L-fNfMR4$i-8[X)`YdHX)!L#G,j,PV5-MHD%J0`pk4)bV6Ur+XHAcQ9
+
+QmS9i2MIQN!"2"X5*1CC5q4d-h&L5+bB'4aSX+5-)5Hq)PACLEZ$fH-K)+CA!(&X
+
+M&iQG5Bq#M%pD`5#-NJ)8FZ[lqJ%YJH-eBR0XaCR8#`2VT+Jl!rlP6j!!Z"[b%QD
+
+'K`ar+-F8#a@UBNri)H"F%20l[5jS0P4GQ13L2$NL0eB`K(`j(iH"1jZIcm$YBI`
+
+KRpcVBiNfIPGdS9#i(`!!$3GQEh*hBA*NE'9ZG(0THQ9XD@0PER0P!*!*8S`!N!m
+
+,DX8!#ffE!!V@R!#3"&4&@&4dG(Kd!!#j[1[cZEcVp3#3"i`!N!GP!!$c4!#3"Ua
+
+'85DlXj21D3"HIaJ,6E&hPT3&)li``)`2B!lKS!pN3"4e)km-q%-j-FH2I"lXKrc
+
+9`X#2ki9"KY[M$fA+3(Uf-)PRF0ERm@IiIGiF+b[Nm3&aPXmGjK#*N!#(912BaiB
+
+Pb8,KIJ#3!`d%CR"eG'&bC'aPER4cDATPE'PMC@jcC3#3#G2F!*!2#fc'!!YZC!!
+
++eT`!N!4849K8G(4iG!!!ZEcVpVQmkrJ!N!Gh!*!(@3!!KAF!N!DqpP%Q4`FA`)`
+
+rP!Q#rM!@#T-JKeN1Ki%l*`#q[T`l#$!%IT,K2Jm-HB%r4!J3p@-'`*!!$rMkBH3
+
+'@EkXG"q5#C-`i`-CIN6BJU-"0bD',NMhCIT$)@+U#iAl!3!0!QCcGA4KFQ4XC@j
+
+dFfPkC@aTBf9ZFf8!N!N,h!#3$`YYQ`!,F'N!#YDF!*!%9%9B9(4dH(3!!,QmkrQ
+
+j[1`$!*!'!TX!N!B"P3!!R$`!N!C6SP'Q$KC,QYjT00U%TM5K-!Rjh!Lj3jQq--#
+
+-$i6prAh!(I)#&SEpf!p$!'D!U$rNK9%#L%#@ZjmrLfF)f0$Ym3Q6h"'h2qK1$rU
+
+!2j561dGZP[&l`M'`$S#,T"`I*K`1[2k-$"m#lL`BbL3q0Z-2qF,*`L3pc',Gb!I
+
+5("Dc+lFLd86Af$PfeNPIc9c&KMd04(`S6"V53$MUalc'1FK!-!YNF-&Jf)0m2S+
+
++5%Q"(mI1!3cl`X)NAJ"9%ljEFI-pQ#2Q#H2'pF+!mAZp"0E,cJNR[RjiFC(eB"M
+
++K%PKImL6X`'N$VJ`"ZPN03X8Q9[")$N-N6q%q@j8`J`i,hp#-%Y+"0-@MQ!Q*$4
+
+F35+4j9iY$X-X0rClL-T&V'BF+VA-NMEA2'&m)4pC"mlR!ZIX`JrRpZ"k5BI[Z4K
+
+bGhaKIfC)Q16eHIcmM#!$mRe*1cP[fidmITc0&c6`C8'86DB@jDa%j,(Yf"e,iUJ
+
+LJ(cNf-[aaNr"Q'M44b&EQJ@mb%h@F3l#2Pm@rc@*L-,3&`Vl)llN(N,KIJ!0#QC
+
+eE'a`FQPZG("dFfPkC@aTBf9ZFf8!N!RB5!#3$`YZC!!,FHS!#YDF!*!%9%9B9(4
+
+dH(3!!,Qml!@j[1`2!*!'!EX!N!B"%3!!e1!!N!BikP'Q$KD,`fQfZ4a*1BmDF51
+
+r1chSN`L&5Ii-i(*f--S!CR`K%)A)'bBR#i1S$rQ!"rRFf1F&A0JIbJ6TENmJ((5
+
+('3!4L2J3pR[F3C++K8PL$)%rj!PbAJ,YZj(EJhdSEK*a35q!4$#1qX-q%))BT2X
+
+!MVPCBF#k%3B`3jMNcQQJ#0c%IBMm)6irm@1'EfHQliCA&X""Q)(4N!!-K+%`+8H
+
+DJ*P"l!Yc33`m16fJHHb6%hFmA3!,c)5!G$G%d-Yj5#Q)jHiXRc!TiJjb[Q3!c"P
+
+JmB$!(mkCLe`,`G`X&QIRY!CL8S&,@J%rkG`+#j0LkbRQ&X(jT[r%3++NfK0E303
+
+XM-2Smc[$qUaJ-*R-F`N!N!30#QCeE'acBh*PC@jdFfPkC@aTBf9ZFf8!N!Q2@3#
+
+3$`Y`D3!,Fqm!#YDF!*!%9%9B9(4dH(3!!,Qml"Dj[1`C!*!'!TX!N!B"P3!!R$`
+
+!N!E5#P'Q$KC,QYjT00U%TM5K-!Rjh!Lj3jQq--#-$i6prAh!(I)#&SEpf!p$!'D
+
+!U$rNK9%#L%#@ZjmrLfF)f0$Ym3Q6h"'h2qK1$rU!2j561dGZP[&l`M'`$S#,T"`
+
+I*K`1[2k-$"m#lL`BbL3q0Z-2qF,*`L3pc',Gb!I5("Dc+lFLd86Af$PfeNPIc9c
+
+&KMd04(`S6"V53$MUalc'1FK!-!YNF-&Jf)0m2S++5%Q"(mI1!3cl`X)NAJ"9%lj
+
+EFI-pQ#2Q#H2'pF+!mAZp"0E,cJNR[RjiFC(eB"M+K%PKImL6X`'N$VJ`"ZPN03X
+
+8Q9[")$N-N6q%q@j8`J`i,hp#-%Y+"0-@MQ!Q*$4F35+4j9iY$X-X0rClL-T&V'B
+
+F+VA-NMEA2'&m)4pC"mlR!ZIX`JrRpZ"k5BI[Z4KbGhaKIfC)Q16eHIcmM#!$mRe
+
+*1cP[fidmITc0&c6`C8'86DB@jDa%j,(Yf"e,iUJLJ(cNf-[aaNr"Q'M44b&EQJ@
+
+mb%h@F3l#2Pm@rc@*L-,3&`Vl)llN(N,KIJ!0#'CeE'adCAKdC@jdFfPkC@aTBf9
+
+ZFf8!N!QM)!#3$`YakJ!,GE`!#YDF!*!%9%9B9(4dH(3!!,Qml$fj[1a#!*!'!T!
+
+!!*!'!9d!!%JZ!*!'d-p4TJi@Lm[Bf39B"$dKGjC2+%b#('Bj(!CZJ(`XmS9p)Hc
+
+'IKJ#-!0JaTH$FVdFmJ&4R&S!rK#)-Ri2)dc+J#M,ME%rP%P#mNK`2dc!+"0(I0j
+
+N!-`VA5EZ-2$k-[`KReHB&29M"VMX-Q!dQ&db!"'`f(8''Bm-FlLb)j+b30!IaR`
+
+h%iLmBD+flqCVS1ZX3!jJb!I)`5HU!C(-bK6+IQj$8SdUbdB!kGR!DG3C1YQGa0i
+
+2HB+FPbr@lBH4'i4CYmG('JLp`!1*@XMP9Neq2&QBj#)fJCZ8-r"PTIY3A$P9QhG
+
+$UAfE)3HFEi-PV4X(j'bMB65CEFEYJf"*r)%@)B8ihc`'`%f-KXJI`Mi[f4CZB8M
+
++)AIKJm9`,SL*Ca!N#K%-N!$X)araQQpP&1CRd,86Z@1)IGUP(AJ)CS(iKi8PN8T
+
+#L%'Bmf0hHM"RAiK((di'4E`%aZTm65MF$`#3"!d#Cf0XE(4PH(4PER4cDATPE'P
+
+MC@jcC3#3#EZY!*!2#h2[!!YiB3!+eT`!N!4849K8G(4iG!!!ZEcX4,Qml'N!N!B
+
+$TJ#3"J)e!!#F,J#3"[cN8Dhe3R&V2A#(XM(M$f9+K-)N$mc+FSHmb3!iZ9!BB-B
+
+(-YdShChT!aiB$2Sm'#)C3$j2d1h2)NcJ3PcBj`8Kk2@&#I8)CN*KNKIkH,BI"P(
+
+'&`)KRmFA$VY40UmkF@I,3$U(36EN3*Bl'd6G)3``"-4$-2-5+'6$%%B`#(cph"i
+
+F*$$b)8R)FI3aF@k'!1Y'f1rKJQj5$RE'NN*F9VS2K3(N-%YFHpNj94lE$FBd!&N
+
+IFQ-r$)'S2aJNe@(H"4%Ik@IJFiG)UaiA&#CaS5"T,Dqrl`i6$0UR1h$jNG3*[1p
+
+$C""@Q2LN,H+QX2U%F@0KNR[PIXJlF3G)H4D[lRYml[5J$f3J8M"PS``5j$j5[#-
+
+MHh(iRE#NT82K(XERj3KcCX4""N3!ql1)9Xp(ELiJGbX$Nfiic#+$S'c*Jra%f!S
+
+5,cmVC`)d(`ri3a%B)#ZHq$&$XRLRdDKm&@%fL,L$R%mL%bD4AQ2qUf!"-T!!B%f
+
+a'L(E3Fl,IaMZkefGG%$F1JBaFL%XbB8iXZ06L$#6XkmkKPPK'4Qflf&bpLHAJp2
+
+'93eJK$6U)CL9-rVEj1-`)#&FkJ3LEi`N2N#i#aca%%%2fBDXIqa'rTaYKHkFA@#
+
+P&[+&k['Va&T4`j8dbHNF[a*jl4SrAr&a`HQkSGLR!MH6eNfITeRI6fU,3U4Gr$k
+
+k)IjcCC-2!hiTj1H4l&N5qC,KKe0m293Aq5B&EXb[&$mBSc$R$K,S1B4Hi!Y",T0
+
+**YrN*3!!$3CRC@jcH@eiG'9ZG(0THQ9XD@0PER0P!*!*L5S!N!m,GE`!#hNb!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1ahZEcXH!#3"h`!N!GK!!$Kc3#3"Uh+8Df0YV3ZeU6
+
+F4`hkdj%EC3-@3Br2bb'I4#K-JKaQ14`'EX#&r(dj(iK#j!8qYiF"f*rP!hjF,`c
+
+mS3J-q,c*!,LBA!)#Baq!'3!c2Q&5"N4CS(@U$,4@bS!2Hj+&3Z&q!!!0"QGXEf*
+
+KE(KdC@jdFfPkC@aTBf9ZFf8!N!RI-3#3$`YiB3!,HYm!#YDF!*!%9%9B9(4dH(3
+
+!!,Qml*+j[1b@!*!'!L8!N!B"23!!8r!!N!DP0P'Y,IC@1JZ)Z&()RH86,Mm(rM!
+
+@LTGR+[&$&53R*dZ%`L32c-TbKlc*!1Jm(Kq,`m!G"[i3bj&,&2)"L%!@4$i3KFJ
+
+EP[&R#r"Q!$1%56NK3N0Q%+DlJlbGldi2qS!r$$c)jmBq,mJJ60IYB3J4-1-,*e`
+
+QIX`)Nc$MaMN*)Bl@9!mkG4NL(`Dc!G(J-%63k)4rSFrM#iIG+*Xr%T`PC8-1C2N
+
+c'H*KK6$!%($%%Pe"&2CKl%-L%),BMIe%`c5k1RITQP1+PDL,*I%CdB3$IF3a`X!
+
+G*1*10Q$F%9m1+Z"m68"X6J@H0h!(#%Y3!eqQ1jJX6,*"l0-#Fdl41"TD`3JKA`L
+
+6(R%hN@IT4Z3H)%ck&U9V14hRNj49V*)Z9R08`3)c&cHE$`jV`Eeb6-T+M9K5VLM
+
+19aF+KIX"!*!%$34REh4[B@aiG'9ZG(0THQ9XD@0PER0P!*!*Cfd!N!m,H6)!#h[
+
+B!!V@R!#3"&4&@&4dG(Kd!!#j[1bAZEcXY`#3"pB!N!H*!!"63`#3"P``8DhY,MZ
+
+)3Z39#T-m-#[,(I)Q!f#"-"!''4!"0h$T@S0B%U*qc!$-q%$BRH8$rK$,BI+@*eJ
+
+5Lk$(jq@3!%m'H*i03pJIiRaKJ,K3b"r+c%(P%-K!-#XR%N#2'rYK#-!-B4*Qh*M
+
+AaL+Da)q$,*qEK`HqF"KJ#,L`$q6d&R%il2Ik#"4lbUedSA!r!!d&Ch"bEh"XH(4
+
+PER4cDATPE'PMC@jcC3#3#4,k!*!2#hVI!!YmS3!+eT`!N!4849K8G(4iG!!!ZEc
+
+XZVQml,d!N!HF!*!(@3!!eES!N!E4$9'Y(8kl!l""IaL(h&Nq`#,)mJFQ6))FCMN
+
+F"TMaJBJlb2N!c-Jj&Z+3!%)1cN8i'rK$X@KQ8K!Q*F+8d3"%13JhLie&`*rM%rZ
+
+!2`a#%)3j$j-`dSA#r3#3"!d)Ch*PBA4PFR"PER4cDATPE'PMC@jcC3#3#I%B!*!
+
+2#h[B!!YpBJ!+eT`!N!4849K8G(4iG!!!ZEcX[lQml-!!N!Gl!*!(83!!BCN!N!E
+
+2qP'YR8DGbqKdJ"#APFUr9)@ab&Y,)Z,bCZk0*8%1Xa`1!jHcJa(i-i#Ih$`r#Q2
+
+J$j%Jq--JM*(IJi2C)"2jh0L(!'EFS4`3phPJb*XX&!Vh!`!0"fKPB@4TEQG`C@j
+
+dFfPkC@aTBf9ZFf8!N!PLkJ#3$`YmS3!,IJX!#YDF!*!%9%9B9(4dH(3!!,Qml-'
+
+j[1c$!*!(2J#3"cN!!'Ab!*!'D%a4EB`kJpR@@LK-JKaQ14`'EK$LXY*p5!B`i`1
+
+B3cMSUaF'M-rYpBFbJ6m%[,j-j21&NiA#r3#3!h-!$34SC@a`D@jRF'9ZG(0THQ9
+
+XD@0PER0P!*!*hJi!N!m,I@)!#i!`!!V@R!#3"&4&@&4dG(Kd!!#j[1c&ZEcXaJ#
+
+3"J-"!*!'!E8!!)61!*!',8Y4EB`@"`LjXha#-AmU#S9*(TL9j3jjN`&`)(m)Ki%
+
+rP!&4PK[lB3KN)*J&-1-$b*IK3lk3!-F(#'cN$J*h1Z5`-)R2$T%rbirp%Ii5HAa
+
+H$[Pb("f3!*kG!rG$,)H*i+NI-b!%FqqD-#RS$a0I+aM-SH3D'#%jL$*q$`-BAj!
+
+!"Ak5'E[p3AGkd*FX6$*Rm%68T&`)I+')(m&3PLq%3F50r$`&,2E@GVjMM8H&`%p
+
+-aqiJja-Q%@ML$T!!M%81+1liNFq$)FSQaD65#34"#!1!,%%@i2Q$[M#Tc!q&XFr
+
+Y"6#R!I$k-YaF%1FbFJqGc!SV%Q0$@CXdM'1Bm1d6P,C"!KD2pd-N1YX0#DF98-'
+
+L,&a-hS&'LN36R!c1"HXQRm525Gm"-FPUbAeB8JB-"Q%dGiZ%i)Xh2E2Z35qr9!Z
+
+$-(BMAK#ViViX[`F'BBM8cM&N@AmSNh4$Zm&+3RNL,p@a+1lcKIMZprYjI#crrF$
+
+L,h,f*lH3!(jUF"!K52F",KaE"BfGpTQZL9D'(`KFpL`qG*1[$iT`8L$f0[Cl#9X
+
+d&N,-m-h)S[(cP3!Bb[d`d9KMcT2c*D11X*XP!!d-5%9-8%026P4&6P46DATPE'P
+
+MC@jcC3#3#6MQ!*!2#hi,!!Z&L3!+eT`!N!4849K8G(4iG!!!ZEcUBVQmkR8!N!B
+
+++!#3"J6T!!!rl!#3"S9m#di"b!-3C+aNbSp`bTm-1H&2TTbJK32d`2LA-)"m#M#
+
+J2LIS4br3eF8LR##9qrJ$aQS#m*H%r2$eiEkF$fi*mNMad8jjl#Q%p26aq-hD(ic
+
+CC2G4YQ`!N@"-6V%D8k9P&k3eX6q5mGQPL`'M0L,b)%Ld2q(DllX8LDZB)2ZiKj!
+
+!!9K65-9q31APeT,-PMjkE$i!95YNN!!ep8UXrKqa(r)*6HRMHIS!4AiURT!!91h
+
+(8'+fiKIi#PI!8#Q68@$TLjMh)UQhh*Z4c39i3P*,VK6h"Jl#J#[L0[Z"(mYZ`2'
+
+i#T&UfT!!`hZ9MAql,l#$N!"Gc8PZ)qNT49&e,6fZTk*mN`XN+#%P*PppJ1KFCRK
+
+`RN0DP9APZ#3ff[m!%VV*c(jYCTJjLDmfi[3cM@,')-!aXm9I[[N[bH3m#l6Eh`G
+
+$Y3"bZ@p#6KbQ+i1ZrU%BT4brrU*5BYXNYc03d`1XPrd6N!!VYcHF3h9)@9fGBTj
+
+qqirdYRm$PAD#'$Y!dLTE,m1CYd8+%i)15+lUV`Rep&SD0kQDHNS)LRSH$!F5ppP
+
+GJ#K0[VbbLaZ"@kH#HUDRjB@4SLPA#JZKeh1FafaGcXJI%I!1#-6"c&BMSIA5JPK
+
+AeXR3J&m1-MjlDJ*ee8IH0dIl#Mj`MI31J%Gq6Fh"X`3%aHL3!$$9bcKIfqJF8ac
+
+qU)6k@4SJHL@&BEj3+qJ--PDY-Q!fp0HJ`!KL9-aG,b$"&#@9eZ%a35eTC`*'PP`
+
+,bkP3#V49T0kkZRT21F8a2i-"IF8pabNT@6D!4MC"5K"aqGLKLB@iRUlFQ'`AYhi
+
+$jF@%)T3"jAa$N!$QPJEK++NMTEXZ"42GK5pLY$cl8KX+j4LSLU&aFT3`K9"&Q,T
+
++R[kSrE+,l)R03JVb3`KG((eY6(1(A6a$T)4'R@4-#q&f`2)a6@SM*h)2B!Z"&Y0
+
+f8jkTE%#m&-%3M!P!a*`I46"ZS*Z3!*PpS&lI@4!5BG11CMX*kh5rRI$D,Vei0JY
+
+X*!5bEJi!"Ddf!(3B#Yb+ZpM[X-VPB"C-EBNFe!JKAh5C&BZq%hJ*c0ET6RUkXP8
+
+PD8N#KMiJL6D6NljS$$T"P+)""BAF!HTjFif'Af2&+'X$E1kLA5ZI**dA!189N@m
+
+6K'K28M9l$d%(4$Ed(L4aB!-8+mBN5@0V%M45CHD8!fbffHKX0!i-Hm-lXTK#-kF
+
+V8FJ$+aVE45aQbiUk-HC!b@Gd%`Rq1+'T4eT1!Xqa40m)4hCG%9TE%i(X+-8I$$@
+
+LHB5dk!EMUS%NM0G"BRk!DNcYN4SkmCl$"L[aTL4XEpqXpUNj4UiBA'`@b1Paf05
+
+M&[FDK12M3',4C[N'CB*3'cddN!!`VK98CQa1a"YPSl,'qUQ153G*XkiXM3eQee$
+
+25+'6JB'a(8@LL`qNa$bFIT-42E)b@JKe$*EZ156'X@SM(%)#"T1&FbEf[GE0b15
+
+`4k8q(513!+k&I@`mG[Km$)!*Be)ESmm"J$#+ITG!*l56Z'FMa+*@mDU"2"##rfJ
+
+C2%bi!I)F+0cirqi30VZLX'S%U&Di"E(J@$Y!VEe8C*8B*#rP0fSHdMAhNc1@2!0
+
+-8((NS1jeC#YJ[#$F#I`qZNFVJ[191%0cq#kD%F4H(kKLX@0Vj3Me@L`C*A*[2r0
+
+Dm4)`66,M*#HYGL##AbMM6FCii6(QQh"%iRe(#CFVKir9rJm!$3TSD@4PG(9bG'a
+
+P9&0THQ9XD@0PER0P!*!*1D3!N!m,J$!!#iD'!!V@R!#3"&4&@&4dG(Kd!!#j[1c
+
+(ZEcXb!#3"m!!N!H0!!$l!*!(ERT4EF`'SkZ$df8a#YZiK-+N,(I!&`DBm3(-)4c
+
+d!AmSiJrldi1qC!$-Z&iBZ%%QK&lJprVF!%2JKB6QKd'8m3Gp`U4Xb09$2&8i$2a
+
+H,h')-JM9KPPXd1paBjmAH*%lkJpPbN#kcq2Q`Ml!q,hNcT+@L(2@jr1'!FIQQ+4
+
+%#(2TBH`1BEml'-a1&JVh!`!!$34SEfePG(9bG'aP9&0THQ9XD@0PER0P!*!*hQB
+
+!N!m,KBN!#iG$!!V@R!#3"&4&@&4dG(Kd!!#j[1c*ZEcXb`#3"f%!N!G0!!"c1!#
+
+3"KDh8@hX9U03Q*3&)li``)`2B!lK)(Q0FUkf,i4p#-#-R#[h)*m[P!b!X5rRMlL
+
+$*)`JPT4QG$RXDD"E#NMT!FMad+JcQ'fY38Ub8,JI!*!$$3*SG'ePG(9bG'aP9&0
+
+THQ9XD@0PER0P!*!*"R3!N!m,KSB!#iK!!!V@R!#3"&4&@&4dG(Kd!!#j[1c-ZEc
+
+Xc3#3"m!!N!H0!!$l!*!(TEa4EF`'SkZ$df8a#YZiK-+N,(I!&`DBm3(-)4cd!Am
+
+SiJrldi1qC!$-Z&iBZ%%QK&lJprVF!%2JKB6QKd'8m3Gp`U4Xb09$2&8i$2aH,h'
+
+)-JM9KPPXd1paBjmAH*%lkJpPbN#kcq2Q`Ml!q,hNcT+@L(2@jr1'!FIQQ+4%#(2
+
+TBH`1BEml'-a1&JVh!`!!$3*TCQePG(9bG'aP9&0THQ9XD@0PER0P!*!*C[X!N!m
+
+,Kd-!#iTC!!V@R!#3"&4&@&4dG(Kd!!#j[1c2ZEcXd3#3"J-G!*!'!DN!!%B2!*!
+
+'00"4CK2!'F!I#Q2%HE!IKS,q-"D+em8U+`09L9#Bj)&C@Hk3!$FC!(-'`)`2C2K
+
+4'"28N!$$J('(Fc*MGj!!m`'AXi04aYp$3!4M,K3@*[&Tl[2!N!!h&rPA23jdPV5
+
+B#%XL*JldK8%)BXBIbL4mP3LFqb2%dL)-(mA-0&lDmZ!`#2S$2R,FjbeB%P&cI'%
+
+2mUIl[#$G&i64C!NT!G8jF)H!$b')J(pe*aK(CjENmj0NR&-Z%*)S4bI$1#"((-I
+
+3MIhTrU!ICi-S)B(2MB*q`K[l8*MXL!1B!5``%mTi4r4YQS4*5hD@DS)[j!R#-'R
+
+)$`(@MA`K)XepB4P)*eA-UK%EB%Q%5jQ&4q!2qB!l!a2eQmf"Vaq,I''q$P%k5b*
+
+eZFJG*&"d8[h*[Q3C'C1iSMr[bj%')"fj23%I$NYbTNMVm[P"acih*MhKV,"3(i1
+
+SMl$5YBQf,""eSa$T#E+)Y*9*HZ+jJpA*R'PS9%+2$-m+iCc4$PQb'[5K43m4p2L
+
+m(1mIHE0ce6-ImTI,a`r8aG*Cq&QqR21-MSjq+!)$ZC0bh4iQCiBXLDb+PS!6AJ)
+
+!$3CTCQ9XFf9bG'aP9&0THQ9XD@0PER0P!*!*+iB!N!m,L%!!#iYH!!V@R!#3"&4
+
+&@&4dG(Kd!!#j[1c5ZEcXd`#3"J%k!*!(P3!![%F!N!C899&QNp'5CJ3i!rK$BB`
+
+i$rE$80!IaUNV!e@K--N$Xl,F)5q!#%$@Kpam9JI!R!%`i`-CIK6'"$[N-'$FiCc
+
+-f"hNI-$Pl'#8mIG3Q"3cMVP3,S(l2*!!+!RXAh8jd"'m*NcLE@#P6-,id4)AQBi
+
+i61iFZ'-'ISiL5eT4-*!!(K)h#B%l"(cp@13,KdN8@4CHkD!,KIX"!*!$$30TCQC
+
+XFf9bG'aP9&0THQ9XD@0PER0P!*!*YF8!N!m,LPN!#ia(!!V@R!#3"&4&@&4dG(K
+
+d!!#j[1c9ZEcXeJ#3"m8!N!Gj!!!Z8!#3"K8E8@D65@G*-`*r+)`4jm&q'!Vk`eK
+
+)FNmb,-N$Xl,F)@mb!%iZ&!Cq62j$PX2!R`%`i`0C-)`"mRPm)3aFaM6A8J9Jh&j
+
+KNK[%I4',(Pe#&D3"4p"pGm3(dRfq%-N,)Hl1mJ%@3Br2bb%IJ!LiK8PKM[@K4%J
+
+A#[F$!!!0"fPQCQ&XFf9dE'988fPkC@aTBf9ZFf8!N!Re@`#3$`Z,AJ!,M6!!#YD
+
+F!*!%9%9B9(4dH(3!!,Qml0Lj[1cC!*!(a3#3"hN!!#j3!*!'ZIT4CT0*CdNc!Rm
+
+SM"(R`AiB#[V$@%Kb6c)Xb31cXY`KEc)!6Li8"Rj-rN1@`m#I!6$M!eN`M!(bHA`
+
+K$&c'00G5"@$FAQ'5'm4p%BXHA8)9T!&(d(eha!I5IEi3b3XKlXlb!4C"Mmr,)4q
+
+!#,L&5@'1pD&%5"F+p`-!!!d$D@CdB@acCA4XC946DATPE'PMC@jcC3#3#GVC!*!
+
+2#ia(!!Z1'3!+eT`!N!4849K8G(4iG!!!ZEcXflQml0d!N!I$!*!(H3!!Jd`!N!C
+
+'IP&QNm[C`3MmS6"'R!IlB5MS$f-KL6h*X#32c-TbKlc*!$Lj8"Mi-IN2@3i$I`E
+
+!M!pN`6!'b1IaK6"`'G1@+3$MpJU6h##QLe68k"+S!!di3Zkl)ck3!1lcK8KHq("
+
+hPJq`#(TmAJlj!%6!,8`+Fk`2*8+k8,JI!*!%$3CTCR4bG@9PG'aP9&0THQ9XD@0
+
+PER0P!*!*!im!N!m,M6!!#im#!!V@R!#3"&4&@&4dG(Kd!!#j[1cHZEcXh`#3"m-
+
+!N!Gj!!#$6!#3"LQA8@D6bpR"#2bK-%DF"rYK+1J2Bb'*2FQ`*!r-bR+([-N!1,P
+
+3'2Jaq3pC$J0r"X#-$f6"-!E)jr'&-(!CdjBT!12f#T2F)+D,906S%UJ!$6K#lVX
+
+M2T!!l[1&5&liF(H@$l!)HRaH$[N!4-!Y6!TcV!mP3VT3Z"m!N!30"QPREQpbC@9
+
+dE'988fPkC@aTBf9ZFf8!N!R1`3#3$`Z1'3!,MqX!#YDF!*!%9%9B9(4dH(3!!,Q
+
+ml1#j[1cL!*!(R`#3"hN!!*(3!*!'J,P4jYBfZp-))ZiJjd[+HG5J2afj86CJ%I6
+
+i["cb5B6#*!r-bR+([-N!'+![$%)3-rj3*MNr#2Zm)-Vi3X!G!Vjq,2+&`hiB![i
+
+`m2&@&LCj$b*KNKZ%r9iIm'9Nq$bBd"cJaf(JpQ$1(F`YJ+#MN!!rLi8)Zd-i@5M
+
+F$`!0!fPZG'pbC@9dE'988fPkC@aTBf9ZFf8!N!N663#3$`Z2!J!,N!$J!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1cNZEcXj3#3"p-!N!H&!!#LP3#3"M`b8@DE#i5i,+%`#A+
+
+BjA!Bq2RrN!#F)1V($-K!EJrf`j!!1`KB0m)!qE*Ja1H9!Aqb,eN'h#%#5hbC2L4
+
+-bZ%PM!q%h9RNaFm-!AFi*b"m0""PB0J(h1PK'15`$d6F3BjN"B)P"GdSdaI'F4d
+
+)qX*m%J8M"(ap19*!!R0XVJ@L$'&53P)A#[F$!!d'D@jfEfYPCA4XC946DATPE'P
+
+MC@jcC3#3#IBa!*!2#irV!!Z4h3!+eT`!N!4849K8G(4iG!!!ZEcXjVQml1J!N!I
+
+6!*!(M3!!qJ-!N!CRpe&Q@dGl1b2![L`fk-Bqi!qa(%lL(cAS6dGZP!eB"$dq,iG
+
+m%U&i(Dk5qeS&bC!$%U%`b31cXY`K,i!)30D(h0J23mN!'2Zj26LB$B,qJ!rS(!j
+
+,&q$Vjr'a''$'cEqN1PbBj%BqAR[XprUm`"d'B4rV*KiZ!3k4,a`Q3Kb3!%$IKhK
+
+i5-$J*Q)F*`Z&q`%!$34TFf9aDf9PG'aP9&0THQ9XD@0PER0P!*!*S&)!N!m,N!$
+
+J!!Z5`J!+eT`!N!4849K8G(4iG!!!ZEcXkVQml1X!N!HP!*!(G3!!BGS!N!Bc$P(
+
+Q0'0lN!#"B"E!-#RR8B2qG14'fB"&d12cFXJR%3U6))GC$SH"'`6pB3aJ"X#-$rK
+
+$f*IT3q&FJ`1Rh8Sd`'@AND3Gj-,qL#qC`*8@)-c!+2#(IAf"#M3QLIG8S!&S#"U
+
+"aMe@j,H"LXp[Nq`QBDch%!Vh!`!!$34TG'9YDf9PG'aP9&0THQ9XD@0PER0P!*!
+
+*%'8!N!m,NGd!#j26!!V@R!#3"&4&@&4dG(Kd!!#j[1cYZEcXl`#3"J&H!*!(S3!
+
+!NlS!N!D&m&&QPp%+r#'[Var!M$q8+43Qq62)b3@LR(X"q-2!$D)3H@8!FTMPF$J
+
+h,U!)!3rM4Qi2pL%!FmJXLDIT!*MAL!6q-0iS-["PTHGBX#3q5+L2,%,J4XLG[F'
+
+$*59%4&#`8+4JcJ&!',X4B9SBT))-L(+k*5NRajJhbE8A&$41ai%ZQ6C9`&QIajr
+
+KphP"P2'&&QYLPL9jN!$2MAhHC+&`2`#3"!d%Df9jF'YPCA4XC946DATPE'PMC@j
+
+cC3#3#94T!*!2#j,#!!Z9P!!+eT`!N!4849K8G(4iG!!!ZEcXm,Qml2%!N!B#+3#
+
+3"J&4!!$jPJ#3"Vma8Hf-A4a#m[+@8*M%)TrAlh&MR`a!$V-F$J1AXi-4q$-!CRc
+
+)"pcNhfEFb1h"2K3'8EFIqd1C!%13!1i6*L'If`Xb%-cLDC!!Fq@B[!k5!6$R+#a
+
+#i!m$0mM`"iPY`[M$`L35F2YbrSJlk!YKAZVBlJ*'ZmQaL8m4E',J$lQ$-Q%51BI
+
+!jf%JA`V&4bMNm`+BN3(F)Hmb'X@j,mI5D18dkYS*Nm5*CX'056@*2mX(r+%`jTf
+
+M$"$dKmJ#XQ34C%'[MfmQiCXIZ!N*DD*+%38ZK2e"%)E%JY#PR"!9Q,B6Nl*GBZF
+
+3G6Fj-eN'5!m0LcR0*5&DA9,@Jj!![aq!V!qjFfE'X`PY!$)Jb[54D9VTC+4Bl!8
+
+CVK[+X9TXNlEJBa#1qV'(mH9f`Q@N$l%$cir#'15-Ar'()T!!V0k()4$e"i2!(Bb
+
+kXm1a6`#BG*BdBl*3Z"m!N!30"@aKBQ9XC@9dE'988fPkC@aTBf9ZFf8!N!RR"J#
+
+3$`Z6d`!,PQ8!#YDF!*!%9%9B9(4dH(3!!,Qml21j[1cd!*!(IJ#3"f%!!*cK!*!
+
+'5%T4&PdVS`9JAcmX&#CKGm!A"Qi3KFJ,)!*"IaJ$GaMi3bb(CF!GmJ)@q8-i$$$
+
+Mbdd"$2&(PT5*h#cMpi4"e"rb`UJ-K,%EBAmS%lKa$LlK%!lkkS8"#m0ql)HKC+&
+
+`2`#3!`d%E'&cG'aPCA4XC946DATPE'PMC@jcC3#3#9EU!*!2#j@8!!ZA)J!+eT`
+
+!N!4849K8G(4iG!!!ZEcXpVQml2F!N!H4!*!(63!!KBJ!N!DGl9%@ACS,4#(b3K6
+
+dKl&3Q162!*Ma!Aq)j6$`Ki%l*ki"b''5i$RK`"h'`-1iNGZ$I3M!A#4aG''5HC8
+
+!Q6d6'2LbdKI6#D),KIX"!*!%$34XC@CdE'9PG'aP9&0THQ9XD@0PER0P!*!*6#d
+
+!N!m,PQ8!#jI[!!V@R!#3"&4&@&4dG(Kd!!#j[1ciZEcXq3#3"hm!N!GG!!$[A!#
+
+3"K9V84DMb3@m[NcNmi@&PX8RPS3j&!S$c2J!Z54"(r"!,S4pb"1%RN$8(rD"p1b
+
+F1'Gp(Rq'hqF&lP"Qd#F$@6jhQ%-qVc$*(iS,J6K9S@U8!Q!'F!12ReLiNQ5KF$m
+
+!!!d&E'9cFh"PCA4XC946DATPE'PMC@jcC3#3#FNI!*!2#jFL!!ZBV!!+eT`!N!4
+
+849K8G(4iG!!!ZEcXr,Qml2d!N!Ga!*!(63!!4HJ!N!ENYe%@BeUD!i5iV&6qT5V
+
+NlfmYZB[,'lNhPJ3jc()i$&c1$NEJc`"qF[2m+)b"2d5#i!q$-%Cq$`jQJk![(!D
+
+BFBGb+0cRJ5&[XP#i(`#3!`d%E'PcG("PCA4XC946DATPE'PMC@jcC3#3#58E!*!
+
+2#jI[!!ZCJ3!+eT`!N!4849K8G(4iG!!!ZEcXrVQml2m!N!HB!*!(C3!!U5S!N!B
+
+5Fe%@FjS,B-BIbNc0IDd+aDXcmR8G*#FR5i6#*-KKPX0Ki!C"IaL$+!2$2T!!jFY
+
++pb%5LRh!6m*qL'GS*1el'1"aKd#k$lK$fF)N#mb%`1['A"B34b(bbR)d0!!4JFI
+
+ZE%Qb8,JI!!!0"@aTFh4`C@9dE'988fPkC@aTBf9ZFf8!N!Q*'J#3$`ZBV!!,QLi
+
+!#YDF!*!%9%9B9(4dH(3!!,Qml3'j[1d$!*!(83#3"cd!!0KP!*!'61a4&R1Db`%
+
+`i`pP#[RE@l%E5i)FCMNF"LjR"b2`Cj!!R![m)4)"IaLi3G!IaM*JdPR5M!#5E"c
+
+eKhh*3Z&q!!!0#faTFh4dEf&bFQ&j8fPkC@aTBf9ZFf8!N!Qmq`#3$`ZCJ3!,Q[F
+
+!#YDF!*!%9%9B9(4dH(3!!,Qml35j[1d&!*!(P3#3"eN!!-G2!*!')GY4&R1DbfA
+
+A1Cfk,L$S$f1KH'8#)2*RqN-5S6!*FTMPF"Li3m#0N!!l'm!-J"NI#,Zcb)[Ih`I
+
+FiCb!(b)F3GG!P)&K(mMbCDAl8&LBj%Dq(%3Db"4Q4&dSh!m!$3*XER0dG'pKFR*
+
+KH90THQ9XD@0PER0P!*!*J2S!N!m,QLi!#jZ8!!V@R!#3"&4&@&4dG(Kd!!#j[1d
+
+'ZEcY#!#3"cB!N!FY!!$e(3#3"X+684BE#(&C3Q%5j$$,i6$!M!q%h*K$lL!)`N`
+
+hmQ-Q#m#-R+!I)JaG+0`2!*!%$34XEf&NG'pKFR*KH90THQ9XD@0PER0P!*!*CeB
+
+!N!m,Q[F!#jeG!!V@R!#3"&4&@&4dG(Kd!!#j[1d*ZEcY#`#3"J*T!*!'!9N!!#*
+
+`!*!'[GT4&V[1!$,m39r)RH86#T-m-#[,(I)Q!q$dZEeKi!q&-H)mf!p$BC!!J@!
+
+@`)`2m$!R"`X%"Vjq2Jq(I@&K%JN2#,Y,'#*YZd0%`3jbAKpJ%I6i["cb!Dm[`ar
+
+bjcT0r*J",VZ-&a&m6Tb3!'&j2$i@%dXhiL-1(R![%HKPjp6!53fL#h!(%DRV3TM
+
+NkqF2ic#TS*Q4Jj!!(I'`2j1i@L")dK"a"cNI`*!!h-GZj(HR%i4SP#@PZA419`H
+
+(M'H(j-A#Z8Jr$"!A)L*Bdf)6)QaPB"rLL5`T4aGK!A4lIIb+C!eB'BEQZM5lBlX
+
+jc@cT!U)-**f,8PJ5`A5G(Bba!VTf%"XN,A&@k"$j3aL)(%klhUDc'R-(jAT&`L4
+
+a0-Ff6k*20PL!ZC1BcmMeKc,Mm')6XM+@Y,3CK"rS,'P'!"(J3M'1YUN9R#eq3#b
+
+%r'5f%BG"Q2qZ*-(XC+&3Z"m!!!d,E'pKC'j[DA0TE(P6DATPE'PMC@jcC3#3#6H
+
+l!*!2#jZ8!!ZH3J!+eT`!N!4849K8G(4iG!!!ZEcY#lQml3`!N!H@!*!(G3!!"ed
+
+!N!Ckb9%@ZmjJXj[6c*BZ56Q2'R%M[cXpk*-)K8Rq$1"bGM$+!)[m)4`'Q2'"N!!
+
+lbaF'-)0N)Sr2bb&bGA`CrT!!c`ZLM#m%JY$YpBFbK8NC#'B"0mM`"he!l!pjJKb
+
+I%a+*,iZ&b)fbFp-$YpF(dV1"d@"f5C+&`[d!!!d)E'pKC("TBh4TE(P6DATPE'P
+
+MC@jcC3#3#HFk!*!2#jeG!!ZIB`!+eT`!N!4849K8G(4iG!!!ZEcY$VQml3m!N!B
+
+"!*!)X3!!Cj`!N!BAbe%@ZmlJ-1YG)--Ip)AF@6kK--N$Xl,F)@mb!%kIfaX'Q2'
+
+"-1[cq$2m2Qm15!04aZpK3"BAaS"a4h`JhHF,#C1Lb)qa,`65Xi%ET1Nk'R288Km
+
+0N!!A3,i`KZ4&@*dM0dY%1#(l)5q-jK"X')3)X1kJMlK!Q,cjS8c#Lh+3!'0hN!!
+
+MG#(K!$q4TK59JRh93pR!Lpa%jKb`b"Ia3biFc!B`P0ZKM8K,i!m$6p$R*RKG+0`
+
+2!!!0"@a[Bf&XD@0dD@aj8fPkC@aTBf9ZFf8!N!PV5`#3$`ZH3J!,S4!!#YDF!*!
+
+%9%9B9(4dH(3!!,Qml4'j[1d5!*!'!Mi!N!B"23!!rGB!N!C%LP%@ZejR!4%h#VQ
+
+cI-*Pem!IaN,aXNJPIUL#j14NL9#Bj)&C@Hk3!$FC!*h(if0a',M$`"pL1A+*3Mi
+
+!%FL#b!HL%(R$-[jX!9i-B)B`+5G%D0,bhHP"(r#(J3Ijh0MR"4N%jVSp$%%"CRc
+
+KK-6%MaPK%QEF1#FKM&'AHN'C,Z0,k'!Ek"j!McX)-13YX,%43Vi3$QB$a)9#rP!
+
+QB"(dq,`FiZP(-"-Z`AX`')44i-dQFVj(Q"6f30C(`*LYN5EcfN3Cf&fZDLff`Ka
+
+,FNIFrQ!Z#X0K0JKck8X)B33'51@pl&b6@5-XDAQIf6L3!#5AfAG(I#!%LB+2rF4
+
+pl!jb[LCme4I#T#b1,+hR)`[KrX`3`9*PQ!Ha,cNc1AG*B0@e-dS)"IG'4EU,lE'
+
+f"2Zbq&9MDfMZm(NIj8VS3Z&q!*!$$3PXEf0KE'eKDf9XH90THQ9XD@0PER0P!*!
+
+*YZS!N!m,Rf-!#k(Y!!V@R!#3"&4&@&4dG(Kd!!#j[1d6ZEcY&!#3"j3!N!GY!!!
+
+Fq3#3"ZUd84DlAQHakYSC3F503ZiX(hN21&m5HG5J2afj86CJ%I6i["cb5B6#*!r
+
+-bR+([-N!@0d"AaKJaJGiVX-,q1ldS!m%SFFGP)'J2q!$1AiD)%5@j!k(rCQK-2$
+
+M(1Uj2q),jHUQ-1T"&`Vh!`#3"!d&E'pR-6"YB@YPE(P6DATPE'PMC@jcC3#3#De
+
+p!*!2#k%3!!ZLLJ!+eT`!N!4849K8G(4iG!!!ZEcY&VQml4F!N!Fi!*!(,3!!E`X
+
+!N!CS39%@Hq[8&"$LXS6#*-KKPX0KJ"NIm-#X,"J#3CMT4Rl-C!'BNC2c3`5K#iA
+
+l!3!0#@a[Gf9bBf&cC@aj8fPkC@aTBf9ZFf8!N!QE&J#3$`ZKl3!,SeF!#YDF!*!
+
+%9%9B9(4dH(3!!,Qml4Lj[1dC!*!(J`#3"ed!!!Zd!*!'[C!!84Cl*k06VdXcJLK
+
+%AU%`#A+BjA!BZ)%(XYN!CJ$-q)!r4%)#SB&drZ*M"VL$3F#aV!pjh'%I#2S`pU'
+
+`--R$Z%1C2Lr!-!GY3i4mB4D'[2j3*JM#k$+H,K6Z"`#3!`d%E("eG(*MBA0PE(P
+
+6DATPE'PMC@jcC3#3#C5U!*!2#k++!!ZN(!!+eT`!N!4849K8G(4iG!!!ZEcY'lQ
+
+ml4d!N!Ga!*!(93!!G23!N!B0a9%@4`FA`)`rP!Q#rM!@#T-JKeN1Ki%l*`#q[T`
+
+l#$!%IT,K2Jm-HB%r4!J3p@-'`*!!$rMkBH3'@EkXG"q5#C-`i`-CIN6BJU-"0bD
+
+'L!Qpb8,KIJ#3!`d'E(0SD@CdBA0PE(P6DATPE'PMC@jcC3#3#3`L!*!2#k0A!!Z
+
+P"3!+eT`!N!4849K8G(4iG!!!ZEcY(VQml5%!N!HZ!*!(H3!!Sf`!N!D)b&'@Y$C
+
+QN`Z%Z+a8rU8U&#C"$V-F$J-4(bU!)-cdHpa"HCMaCf#I&f!)-1-$39m'"ZRC1C5
+
+U#+6lF6KCQ'61b,%!IaL%I*PZl)riC$Ni3DGBLSrpQ3`'86pQ3(mIJL$$(``5ITG
+
+%r9#1rS!,%d%k*lj-(b*f6,JI!*!$$3*XG'KTCR4KFf9XH90THQ9XD@0PER0P!*!
+
+*c#3!N!m,T"`!#kA5!!V@R!#3"&4&@&4dG(Kd!!#j[1dLZEcY)`#3"hm!N!GG!!$
+
+[A!#3"Jkj84DMb3@m[NcNmi@&PX8RPS3j&!S$c2J!Z54"(r"!,S4pb"1%RN$8(rD
+
+"p1bF1'Gp(Rq'hqF&lP"Qd#F$@6jhQ%-qVc$*(iS,J6K9S@U8!Q!'F!12ReLiNQ5
+
+KF$m!!!d,E@&MFQpPH("KEQ46DATPE'PMC@jcC3#3#6DT!*!2#k8&!!ZR2`!+eT`
+
+!N!4849K8G(4iG!!!ZEcY*,Qml5B!N!B"Z3#3"rd!!$'c!*!'H9"49ThHD6GfGZK
+
+X"Z$Vak)NrP'$rR6N4YQ!4G$Mmh,)*a%+Nl!li!X$GaMi-IN2@3i$0l$!6*J$GX0
+
+K2``"c,Ja#BpK$JZbh"i%J6Jha@A#*"Mbj6*k[Nar+!bLIXb3!)!,3ZiX(i!CF@B
+
+4Z%0H!$P-0(N1J2l*PL8YdI9$'))SirIN5NMG#H5#AS#41a31ZR%Z@IBe)qY#dUL
+
+5R!X-S-FGc#,eJMDRKYf)1mMj5$jL3HpZ1@Q3!(@,3Z3&)P%Zij[!cE,"E#$+`Ei
+
+RkaC,i8(![pQM"q'l)5q[q4B)-c#Df`j@3-e++`%[X(kJ5NjYN!$D8--c8ep+A5V
+
+1+GmNj5d"!!d'E@&MFQp`H("KEQ46DATPE'PMC@jcC3#3#I8R!*!2#kA5!!ZRk!!
+
++eT`!N!4849K8G(4iG!!!ZEcY+,Qml5N!N!G0!*!(13!!k$`!N!BGTP&@RGjTGi#
+
+3!$[,*mbj[C9lBdQ3!--XKm2!jHaJ"2i-i#Fh2d3Li!m$c2Kb1!!cJ"YNZ6d)*JZ
+
+&q`%!!!d%E@&VC@p`H("KEQ46DATPE'PMC@jcC3#3#5-%!*!2#kFr!!ZT"3!+eT`
+
+!N!4849K8G(4iG!!!ZEcY+VQml5d!N!B"(J#3"kd!!-%U!*!'fiY49Pdl)iLi8FL
+
+Gj52[!HF6#T-m-#[,(I)Q!k!,KrfCS6$!6#`0STcA!X!`&SVpl[5J$r!#$Tm@+J@
+
+C-#R+q$d-b1,#'+6lJ"Y%)H+9(LiPFZ"'2Z"aKhebIbMX#iApf"ra%8Sc!lL&53Q
+
+lL4mc1EkFldQ8C3@4cqh0"VjqrM!1bjC8&'@3!+1&Pq$p-2!`lP#QMbm!e8+)CD5
+
+4d"F&Q8'BlJiZlT&3+*B3&"2Z"`!!$30YBA"PEh"iF'&ZC&0THQ9XD@0PER0P!*!
+
+*YdB!N!m,TqJ!#kZ@!!V@R!#3"&4&@&4dG(Kd!!#j[1dZZEcY-!#3"J5l!*!'!L%
+
+!!'B5!*!'1US+6J()!a"N!*0MC)!rFRL1*lG'%,#5YC3m*Fm)1d+6(#02#5-2M(p
+
+A6h)!H4'!MdV`"2d)"VkZklSLc#0c4ND-($Z#'VB5I!!HeJ166iF[%08i'B`+1S`
+
+Sq&FBhAMd#dcHYDUE[5TPmECUPrlG3&hATC6#cA'DB`#%Xr-G1!p'KeK"TbCP1fe
+
+lF"ELS#!ZN`*h5Qp-!0V5iSS)mNc!8B&4YSm$B+!4M#plDS$LrJ5Mmd3bS#@UM#&
+
+&QJHN`9ir+eXPQU`&G0L3!"0HFN"`b@0G!Kba(D3BeGJS[ffkVZCAVm*X)XqUCc3
+
+c4PDDI+j45*'&Rl3aff``MT)iDe,*ckhcK$'jh%1Q,8+j!NYae8a6E2TJc)[l!1-
+
+F)M4XrNFRE2!qe59&Lb(PYA@B*1B@XX*,#CHD0k%8+!0+3B5m2&5!YZ0G5mUUGED
+
+PICDqACEklI2$A8ha%caHH$*X@-E''GJr(,mq%[P%m-S52-p1cLIDGqm3A9DPqb(
+
+&aSpVPZe-pGKS&LU!qjN$DF!J"HrBTpEqirL8Th3Hq@aS-UKrAKS1qZN!Yr!4lZ$
+
+iABV9mE8(@T!!#GF`0YYlpQL3!%iL0![F*Xp@LUcil'C$FecCGFG6CL3II,-S2Md
+
+CdSmH5C2*ji%%8&XX-`0"NB&f*I41VGGM[kY!aICADarH1`XkKDEckAfpNlrE5L[
+
+q6dZ+[fPYeq1e,$iZIp)LS@p9dIi&EUL$I`#3"!d'E@&`C(0PH("KEQ46DATPE'P
+
+MC@jcC3#3#HF`!*!2#kN&!!ZZ#`!+eT`!N!4849K8G(4iG!!!ZEcY-lQml68!N!B
+
+%G`#3"J)&!!!CU`#3"NDk#Ni"b!-3C!#6Bf5`5QjPH(*V"!%VS4qH2#A2*)b`pFL
+
+)%NBHS,H8(%"H"'$!9S)Rk%F`%-"62*@Xp8BBQ6)bBZ6C%F5`PGbU3$i`qAMlU6i
+
+d&13dDa%Np5))PRiEV9SRh%+cXjhXSj-9hraDfq9r0e6AGF8jXc(--AJ5T*820&J
+
+hbClDKH4ASD-)bT`SM2,#N!"RR*`P2[Cki8bBRMTV1R`hPcdRIG6JLMkp1$52aqE
+
+a[UQ*MU-)T2`fVA!fbDQ9cT-GmQUa3F)"'*qr[ekCbQI19NA@q!cfXTmG6HSdKSc
+
+T*,6+,E8B''#k9m1!4bC`TU8jKC%'CbFX`F`cDQU%P!(-aPH!fcaF&@3-Fa8!SrN
+
+p+JP,jYq5#UQ,i&3EJr4NE"Kc(6B[$FS)[ICA9mAI"G[6**CNl'aG$q8Z3rNDb6i
+
+B1&alc),*,e0V0Hdr0iGMLK1DS,FSQDh,KYCU,SbV#TG+@FfAjUL,,K@LNi0N,AU
+
+F"H%j5aYlmYU'pi25@VTVdqT(2DQ,TeZkSh[k3-fAFLeHl`N'#Z&c6-!m+b5j6ak
+
+e`#e,eqJZHdCb4I(C4SehUFI,aP0KK!r%1L&60@[S&dj!Nml+i#rGPL5c!0'Q!1d
+
+U1PP%@Y"h@j+KqphDZjqGH991JAQ*J,05`CqfmX5hY$MlQaB1dPYCR2e,#d,IUX,
+
+q3MISi$m!$3GYC'&bFQ&jF'&ZC&0THQ9XD@0PER0P!*!*!TN!N!m,UjB!#kpJ!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1dhZEcY1!#3"J&d!*!(j3!!P&N!N!E4M9&@JmlTe(8
+
+"BAprAp!IaNRmS`EpkFL0XJ',S-IRjC!!6b)8Vb3"42j-IdJL&#C"$V-F$J-hb1+
+
+#f#rhqV0mSE!IKYa"i%E)RCd-J)[aJ3`r)P`r4'")`P224jJNJ`iHJ#%INB)XL(b
+
+!K@%rpNGmK*Ei-RdS(&2J2Jm-HA-G01$2)"@jB9m)bi4*Lifi2j3C6+!"-fi-h#`
+
+Ep2[#!%2JLrK)YhP*3036SLDEBNR'IPU3!'Ml249Sf!1N5-$LMT-SA0d`4"NBpS%
+
+XAeBk+BXP)AFSNa3H`bc3,3@Np1#phe1#"Mf5KF,p!!!0"QeNDA4PEAP`B@jN8fP
+
+kC@aTBf9ZFf8!N!R$Z3#3$`ZZ#`!,X$N!#YDF!*!%9%9B9(4dH(3!!,Qml6Qj[1d
+
+k!*!(N`#3"fN!!%NM!*!''c449S2CCE3#ImMVkaIdKc&`)q616Z)I0HK24fk8$9J
+
+%26i[Kh`5S6!*FTMPF"KJaJHbI&RT2J4J4Zje&-4qVcr,&`VlBFJG"+)FP`))qi)
+
+q$rCj3AUf-)NR#9'NKKc2jd#8d#mN#iAl!3!!$3PYC(0PG'PdC@eZC&0THQ9XD@0
+
+PER0P!*!*-ZX!N!m,Vf!!#l%@!!V@R!#3"&4&@&4dG(Kd!!#j[1dlZEcY2!#3"j!
+
+!!*!(E3!!9'3!N!CrHe&@3jV4CABCVF!Im[Vk"IeK$0`)ZE0"a"hNI%RN8B2qG14
+
+'fB"&d12cFXJR%3U62$!Vbahb*J2Jp,&"YmFA"TMaJ5aI9VS2!CJ"4$ND"H"KB0J
+
+A!ZRC3*43,!L6SRl-j""$Aa5)FQ3,b8,KIJ!!$3CYC@eLCA*dC@eZC&0THQ9XD@0
+
+PER0P!*!*268!N!m,X$N!#l)h!!V@R!#3"&4&@&4dG(Kd!!#j[1dqZEcY3!#3"J&
+
+0!*!(X3!!H@%!N!D![9&@Sl@9d3N`i`pPTZDq9SA#*(m'%18H#m!I"Qi3KFJ,)!*
+
+"IaJ$GmJ,#%'bfb$Ua`a"Zf%Im)GB$SF*E46d#T-JKmNCA-i14KR)2A)H"#a%f!p
+
+$!#l4p"$-bJPlIN3Fr9!BZd-H(l())"84`$!(iBDmb3#BPe4!`UNLQ(5@Y1A#,-Q
+
+AaH,X&5hD(R*'Vm`Ub@Cp5bXK45`#k`q"$b')K%NC"*ihKYLHM`pE#,QcNiA#r3!
+
+0"fePE@*PFR"PE@jN8fPkC@aTBf9ZFf8!N!QdB3#3$`Za&J!,Xc!!#YDF!*!%9%9
+
+B9(4dH(3!!,Qml8'j[1e$!*!'!4m!N!H*!!#Z@J#3"PB189DMYCA4k3#BmBFb8h0
+
+IUm,Fe&XV8Lc*R`&%ZFF#m)H"'`6pB3`J!Zi3F#2NcTB"b''@`f(JFRB`JJ5[NX2
+
+EEpp"Ch%)Nc!Nk)%[+pf(!&bXT!'6cT*Q""!c2K6eKhh*!*LA'E-N0iK#j0fZD3%
+
+BmXNpM"Zj2CJS%M&e"ekG*5h1rN#I#IF$!*!$$39YD@jeFh*`C@eZC&0THQ9XD@0
+
+PER0P!*!*$r3!N!m,XMF!#l4j!!V@R!#3"&4&@&4dG(Kd!!#j[1e%ZEcY4J#3"J%
+
+r!*!(f3!!#e!!N!DdJP&@Xke$'JKa@8*jcKY,JKaQ14`'Q2'"N!![dihp%4q!'F"
+
+2-Rk)4(8!V2i3&`CKIfB)C2RFS6$J3Qk8$E*bBRk'--Q2JCpF"PNqVpq0IF&X`#+
+
+IaqIeH8&k0JM$,"pQr+&-J(ap16rL,eBSedi$%!Q6PY)X%'EG(KmK1#!$"S-`'Xq
+
+&-*36a8DkM!rjH'F,H2dC'H3BHRbNKa#Nqd0HAT!!Bj)ja`a)pq'ScaI++6L*3Z)
+
+8Ci@eT(NPG`cVS$jSN!#8dkXL&k[U0j!!N!"S+4C,FkTF*DRI3#MF$`#3"!d'E@p
+
+NG@a[F'9YEQ46DATPE'PMC@jcC3#3#H,-!*!2#l-`!!Ze9J!+eT`!N!4849K8G(4
+
+iG!!!ZEcY4lQml8J!N!HB!*!(E3!!T'i!N!E8Z&&@Zk'$a3j#A&BUre)9#T-JKeN
+
+1K`&QI!$jXYcqN!$AK`!-!Dmri[Ik3jP!a1-+)$dlje)903(T%$-JL`YMN!$Z%bE
+
+j3pLAk80Ki!jjBaUF#f,Jja-35d286jL8jZiXmZ*RKS!lR&1#,K6Z"`#3"!d%EQ&
+
+YC@a[F'9YEQ46DATPE'PMC@jcC3#3#G5B!*!2#l4j!!Zf'`!+eT`!N!4849K8G(4
+
+iG!!!ZEcY5VQml8`!N!GV!*!(93!!6U-!N!EUXP%fRG8))ZiJjb0[FFLGj8[L(cA
+
+S6dGZP!eB"$dq,iGm%U%`b31cXY`KEc)!D33%lM#`kYSC36U(3G52'B!C(r#(@!k
+
+(b5XJAm5(`Mi!NGH(NSA#r3!!$3KZB@ePE'PcG'eZC&0THQ9XD@0PER0P!*!*6qF
+
+!N!m,Y9B!#lFi!!V@R!#3"&4&@&4dG(Kd!!#j[1e0ZEcY6`#3"J%B!*!(V3!!fk%
+
+!N!B%VP%fRG9S-DHj3-503ZiXAa,rU%&r1R+ME-!Lk2&j1H56#&H#!RmB#i9*N!$
+
+$,)I$`!dm-)4p)A+L*&djHIG$Q3"Q!(F)q,*BR*fEp@!`#+-q,dM2&LDjFc-)54J
+
+Ii-d!STah$M,p%9m)Z-2!(b+51J!ZaNq1(("KA`BA*$'@4%6Ijd)Hl)FK%29M"N3
+
+K#S4CYmHAddJ-JiYEj-64`J$jqR*qj&[5'8[++5%hCF,p!!!0"@jKE@9`DA0dE@j
+
+N8fPkC@aTBf9ZFf8!N!R!(`#3$`Zf'`!,Yq%!#YDF!*!%9%9B9(4dH(3!!,Qml9#
+
+j[1e5!*!(6J#3"cN!!%hZ!*!'6kK40Th9k!!KGjC2b*rHbMfa*-KKPX0Ki(*f-!*
+
+r"X#-$rK$*!,qF-k41!!cJ"Y%h-M[6JrkNSA#r3!!$39ZB@ePFfPcG'eZC&0THQ9
+
+XD@0PER0P!*!*"ai!N!m,YcJ!#lM'!!V@R!#3"&4&@&4dG(Kd!!#j[1e6ZEcY93#
+
+3"k-!N!Ge!!!,23#3"SMH86DGeCJQ&#C"$V-F$J-hm-!3pSA)+I#(-ArPj0d2C3+
+
+B!G`Ki-YLFACZ9[@([(k2Q`qcT"!%,))HRjG$2K"bCrR#%T!!!B0"'29j3ASf%40
+
+-NJL#J!ZPFmK2NQ-hmV[6JciL3%c`K`"QI#!+85$-ZMfqC+&`2`!0"@j[C'9cDA0
+
+dE@jN8fPkC@aTBf9ZFf8!N!QSe3#3$`Zhi3!,ZZm!#YDF!*!%9%9B9(4dH(3!!,Q
+
+ml9Dj[1eB!*!'!c-!N!B"Z3!!eY3!N!EMQ&%fZm'B*K3Q33kc(!i$0`Mk`aM!$)#
+
+M%)5iV(3I#LF$i'*m)-125$6fXFJApS8),#%KL8!J5`T"Vbr-S`Hq,)LbJBG$L(#
+
+#E1!2!5lXLfP`R`H'[#$-`'LZ`X$Gcjr&C4'"c!9b94,'M3(MM[K!ZXmALPN!b9L
+
+KE)$p@F6&$hPm14+"1ib&5Ij3"(VFf!p$[)8S&ke9ABi3q2PqHCBl'!6T3HJ*m!`
+
+ECT(Ld9U@aT,FBGl5!HRC`!)c)F([Zce-['H-BX8Kk4f&mQ`8NT1mLr`HB9)8)Zp
+
+bM!EB)"F'B8J+%bMU)Yf)"e&1I6EM4Qi2kB(c*BS)L@5'&N*Z8VN9f+(&NR+p0%"
+
+UR2K)dIJZ0LCeBepIcSpbfrA*JYfJ,iZIFZV*NR,@Re*QUX#5kP2@*fS62fEm)@%
+
+5(mQeLJ#B-d!fj%$8(F)!3i"*cBq@FQR5Z%1,S+eJ*N4%Bb!MjG"DHcl5KTmV300
+
+qj!1YpI`(J2JpAkBr&2+(-RQmQp1H6`BNeUr&[J`4!F942e'FIfL`+Q`2m`&(UZ8
+
+B)RFQ$l$i$`LZ2mcGr`L6lK13!1h$j#-4"(eNR8kb8#MF$`!!$3PZEf4bD@*LE'9
+
+ZC&0THQ9XD@0PER0P!*!*$i-!N!m,Z-B!#lZS!!V@R!#3"&4&@&4dG(Kd!!#j[1e
+
+CZEcY@`#3"ei!N!G*!!"Q(J#3"ZT+86Dl`@PZeFTL&!U62$!Vbahb*J13!)BK'`B
+
+Hb'El3jR!(mU!+-Z0r6"%EJN%Q2%",r+RT`Gp)--Ip-N!`5)rJ'&I1#G0+9dSh!m
+
+!$3PZEh*PCR*PFfKZC&0THQ9XD@0PER0P!*!*`6X!N!m,ZZm!#lb0!!V@R!#3"&4
+
+&@&4dG(Kd!!#j[1eFZEcYA3#3"j)!N!Ge!!!CJ!#3"Qf$86DldfKb'Y2D#)9*f"F
+
+-KS%&CN)3JKKJ#*!!,mZAPHj$!$-qJ$Q%JljkBC!!"E%IKX,*!,JBIaK%rF%Jb()
+
+(I-)N,h*(rD&-N!$K$Q-INS&d$J-@q5+q%!i6'4Y'I#JEq$0bI*!!j-!S)!B8#pc
+
+C2Qqb8#MF$`#3"!d$EQpdC@CbCA0SEQ46DATPE'PMC@jcC3#3#Efq!*!2#lZS!!Z
+
+pJJ!+eT`!N!4849K8G(4iG!!!ZEcYAVQml9m!N!I#!*!(K3!!#4d!N!DZZP%fZ`[
+
+J$+%`#A+BjA!BZ*`GM-#I!6$M!ri3LB!r$%`k5jT4"Y`K,iMi26i3mD'`1aN!9`*
+
+LZd-Jh5G-FS1J2iaP*!94aZpK5*!!%iD`50`"A`Li`m3$I2eBj!Z(r6!%-!5)#c8
+
+KaKB@*Ld*$VJ`"Lb#ASiS@lR04#Lh$)LiJj`[@5J8lJF!!!d(ER9YBQ9bF(0SEQ4
+
+6DATPE'PMC@jcC3#3#I!d!*!2#lb0!!Zq-`!+eT`!N!4849K8G(4iG!!!ZEcYBVQ
+
+ml@-!N!GA!*!(33!!RqS!N!CM+e'f$YC@4UF$B-BIbK6QAYq+A9N5j$$,i6"`16X
+
+BJ6q$j&cJ$j%)q-2!$8*F9VS2bB"*CdNc!NM5FG3IpL8,KIX"!!d#Eh"YBQ9bF(0
+
+SEQ46DATPE'PMC@jcC3#3#IbJ!*!2#lf#!!Zr5!!+eT`!N!4849K8G(4iG!!!ZEc
+
+YC,Qml@B!N!B"&3#3"k8!!)(S!*!')("4pJiZ4`FAL,L$R%pSGm31,-N$Xl,F)@m
+
+b!-D3!$F--1-$L!Z&r+&-!$0bcN-%26i[Khc!(`*4aZpKJ"m$0m[kh#LF,%ab-@k
+
+m""*aQ19`VSQ3!!44cQX"B*J6XQ%)qrVKK!e,)MS6GjJ%aM$JikYS`&!p$0*c@"i
+
+ApRQe)0DIMm1qB!E`Ki'EK%9eQM!TRF-VUNVi8U336l!4'J,)qT!!'rYK+&NSh!m
+
+!$3T[F'9ZBA"`C@jNC&0THQ9XD@0PER0P!*!*Z6-!N!m,[M-!#m"0!!V@R!#3"&4
+
+&@&4dG(Kd!!#j[1eRZEcYD3#3"p8!N!H9!!!lc!#3"R'58AD(dDCcN!#A"XM`"hd
+
+KGjC2+%cb`+`XGmLE$)#GpBA#!$-q`%HG(!KN3!5Lb)rpS8b#D'ENj%A5#L+IfjX
+
+Y62,emiGa@*D6**3,@"JQa#J%r'(J$j'6&3aQJl!2!`ac-'l)#f#Z5a6d#T0i)3f
+
+%qE#&3FJA*6K55A`Ki(9M0iMkJd'3!%kNKk3NKj5$)Mj1&JVh!`#3"!d)Eh"PER*
+
+PB@4ZC'46DATPE'PMC@jcC3#3#3mC!*!2#lp)!!["'J!+eT`!N!4849K8G(4iG!!
+
+!ZEcYDVQml@X!N!H!!*!(A3!!VGF!N!EJ`e&fKp(Q01S-)--Ip)AF@6kK--N$Xl,
+
+F)@mb!(E@&`S$c2J!(h9b)*!!!4&!2VIA(mSNL#i*da9B'2CM2``"IeLBj!q4Qa8
+
+-CJ-hcZ(hI*Rq8)JJ!@EN"%K&&`Vh!`!!$3T[F'9ZGA"NBA4PC&0THQ9XD@0PER0
+
+P!*!*jk-!N!m,`%d!#m+V!!V@R!#3"&4&@&4dG(Kd!!#j[1eXZEcYEJ#3"J)-!*!
+
+'!5%!!(UQ!*!'`B94GSI4eX&Kd,Q-)--Ip)AF@6kK--N$Xl,F)@mb!(E@&`S$c2J
+
+!(h9b)*!!!4&!2VIA(mS%"!04j-INKVJZ!9'5BLb*clQ!K@%5Md,!(`Eq%$PC`@!
+
+f#2X``$$(c#8+88E1+3VQ+QV!Rd%F,T+&56D)I9VJFhXB!%NCXS'q1`aJL'K%SF@
+
+#@Nia2BLCTHh)'Q3p65)P"8L&kN6JL2@k58hBMN"hM$U$dCR6kkR6l1*2L6#*,iH
+
+6"3$fCj&fm"b#0+1,KlAYD5$U$`D"1aL'`*f4iI2JA$3Pb@2XprL%54%I#VY*#A@
+
+#%IeH3)i`%am+mIl2"L8Q)Dc&*PJ56aa`BEa8[HI$84pT`mUKZMPm+mG'blNK+LZ
+
+$*5f'C5[0Z,T3Z"m!N!-0#@p`C@jhFQPdC@9N8fPkC@aTBf9ZFf8!N!PkjJ#3$`[
+
+"'J!,`i`!#YDF!*!%9%9B9(4dH(3!!,QmlA#j[1ea!*!(Q`#3"h%!!0A4!*!'F'4
+
+4GSI4eXPTGKP"KMrS#lQcI%*KNJGQCEP$hQ3!l+`[&!DBm3%qkZ4!)!-L%%9ql!p
+
+P%N3c)bF[NPB3qGcHE''5VjmrM(eH@8id#RT"a)I#IKJ#rM$`qS)qNJ9L#'i3mN9
+
+P`*I&iZaF"CXBB&SA#[F$!!!0!QpbC@jhFQPdC@9N8fPkC@aTBf9ZFf8!N!N1i!#
+
+3$`[#U`!,aB8!#YDF!*!%9%9B9(4dH(3!!,QmlA+j[1ed!*!'!R-!N!B"L3!!,%8
+
+!N!DZVe&f*m!CUH5r+K3[[Z(r1NK16TB)K8Q3!--XKm2!jHaJ"2i-i!jP!hq)4-#
+
+I'p)!a)`24IeK(c$T,'R'C!"d`@!ZK!Z6XVJ`"ZQqA)%)*4LU(QDaEZ32`a#[BV[
+
+$2VNr&2D&`RlXMrJ!mQ@kN6IS#a1(+!-34iLiJj`2N!#MS8XcQP[El%kM`8&8ZSb
+
+EVd-$)S`iRiLh,,J@Ae#m)%ab)ap`Nej)K,ZcI-N5dK1ULbjYGiM[b!*"IaM,5!L
+
+LM0r$j,3#IPk1*@&h`"F#lM#C!2MkXBJdij2Z%JJ3&fT#[,#%H8ld2N63bhPi-@S
+
+"LdclPe9LG8I%Gdj&1Dc*jG-@pRP""S*C)1M,`$QDILD$Qj!!*MN)3f*)9FKCb@(
+
+JLMc)KEbbR)jMAjEE(r+(-Q0,&'BKa-)NAcphPMrNma,pIA)D"ReDB9+5f36)&f#
+
+hFl-8d#d-b6i#'-T-pT!!NBk`'j0Z[JQkN@r#0mN3)Z#13,mh4j-SX)4#h`M+HAj
+
+%QV9Kb%[Q,#Fqm1&NSA!r!*!$$3C[GA4`GA4TG'9PC&0THQ9XD@0PER0P!*!*&[N
+
+!N!m,`i`!#mDD!!V@R!#3"&4&@&4dG(Kd!!#j[1efZEcYG`#3"J%9!*!(T3!!JHJ
+
+!N!E49P(f$Lj("aH)Z)1F6fKha!iXb31cXY`KEc)!aT!!0```i`1)#iAmS8`!-h,
+
+13`3p2Lq(I-!I!P('lf'!(`-hbrVF+*`X6()aEV`%%R'BjA#ZLC!!"&(1D`&JQ"1
+
+bB3MlqZ'%$8XL1K0hQ!6'-1$MUfM!8$d-dR0B(KIfHE8JeTq2`ljJ"[#(JCZ%4A@
+
+D-#QG`bZU5[K5T""2X"%D!XMkN!!Eqf%S@5MF$`!0"h"KE'9dG'9dC@9N8fPkC@a
+
+TBf9ZFf8!N!N,Y!#3$`[&K3!,aim!#YDF!*!%9%9B9(4dH(3!!,QmlALj[1ej!*!
+
+(Y3#3"i8!!,FM!*!'hra4$Th&k()CJ3F')3Ta@HNq*"3Q33kc(!i$0`Mk`aM!$)!
+
+Cj2-"I`Ml-RdS,!-qYiFKCmbj!,P$Q6k3!#*[e,#KUU&-Q)4m,2+&I5(X$fAQ!+`
+
+Xb)9b0'+I9`BbL8SS!qk3!"HN"cRH5P"%"5c*(3j$Mpq0I9i3p@-Q*hVZMrK#),F
+
+HA5MF$`!!$39`BA*cCA4PG'9PC&0THQ9XD@0PER0P!*!*D"3!N!m,aTS!#mL)!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1ekZEcYI!#3"md!N!H*!!#$H`#3"Q-G83kG-md)SK"
+
+jKF)Nb''@`f'!'4m)qX1B(#a-`U1J&b"IQ!YLi-r)5IXK!K*BL2U3!!ri3TLm1X)
+
+NIiJR$@%Sl!-B!MG`'R8'LcR0"5$V3flXKk&N!&bmPaq@J9apBTcDR3E!Z-2#*0k
+
+2Zl0m)1)1FMlJ$Lpfm#$+d4GaQh%MYiGiFk*XHC1&`[d!!!d&F'&eFf9dCA4PC@4
+
+6DATPE'PMC@jcC3#3#@e8!*!2#mH2!![+`3!+eT`!N!4849K8G(4iG!!!ZEcYIEQ
+
+mlAm!N!B$)`#3"J(*!!!4L!#3"Jbl83jGKc5M8*MNJ9PClT!!&d!%)1Y$EZb(S@3
+
+!M#(X3f(J$J%rIl%mf"ra!GE0KAdNh@9mJ&aLi!m,NeJ%XeMXmi)-iZ#(`KKaK"D
+
+&`M,J*JB*`*!!$ISL[U!-T(-B42fB!@k3!%X&c,La--NImJ3jVbp-cLi)ZE0m!'E
+
+Nh*!!B[Zm(2)4-BJbIJm$FSU$+&(c3a%Bm(Q6K8N@k(%(3F50r1ld)0%3G$5Ii5h
+
+qIqcf"hN!N!#)(mV-0459XU4FVBM$,)H*@UT2B5`CI#%[+ELA6BScl$DAfGD"9##
+
++T)%J8LG6DZC#XaV!k(6Up#lJkqF2Bhi-Z$,%Z3L4RGJ`j2Ac+`(SmA#)a"&0Dm5
+
+eKD5!V-&FKJU-Z9$1T-JjReP!l'L5&kbIM#$)&LE&[,'fFc,D-&C+`2P!Yjb@[`R
+
+#-0IZqEbaeb!S6%VhNG)aLV9M5D5!%`iaAda@S[J3S#9D4p(FlBU23J+"Kr&j!X+
+
+N('Y4CV"LSI4C3&lLAlaekB3lSLV6GI,X-2CPJEkF(a-RLbm+"G834&Pmec5M"-'
+
+J[$[rm@&*(8,qIV*%k$6RLp5`TmRiVe[kS5[P[)YNbqf4j,50$H)L40hJ*Kmdq8P
+
+Jq`%!!!d#F'0eFf9dCA4PC@46DATPE'PMC@jcC3#3#8P8!*!2#mL)!![,RJ!+eT`
+
+!N!4849K8G(4iG!!!ZEcYJ,QmlB%!N!H2!*!(E3!!0U-!N!D1%P%1Sde[YpLG3SG
+
+H+%b#('Bj(!CZi)&"L%#)bdVh)4QjKc!8mQ@kX6rL!ri3pQAk%-#-'`-rSI%`p2M
+
+Gf1F9*NApQ#'iS4YK[iF,ZP(-T*G0F#jJh-JEG5-IF)Hm!,)q4)c#6"$1$Q0I9V*
+
+3Z"m!$3*`C(9cCA4PG'9PC&0THQ9XD@0PER0P!*!*Z9!!N!m,bX%!#ma,!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1f$ZEcYK3#3"dS!N!Fp!!#a(J#3"V'H83kMc@$[C"-k$%*
+
+K8YL(``!c2X$k3[A#J)9K2rE$%-!3m"!042fBJ4`'(XBGb[5(-S'I!!I3kdX@#[F
+
+$!!!0!R"PGA0PG'9dC@9N8fPkC@aTBf9ZFf8!N!RT83#3$`[,RJ!,c2!!#YDF!*!
+
+%9%9B9(4dH(3!!,QmlBDj[1f(!*!(3J#3"c8!!#M+!*!'b4p4$U20k05P'B81Se#
+
+B&2EK--#-$l#q8,d`B'(BMrd`"$!%"RXR'h#([#!,HRem3'"eSA!r!!!0!h"PER0
+
+PG'9dC@9N8fPkC@aTBf9ZFf8!N!P9%!#3$`[-5`!,cG%!#YDF!*!%9%9B9(4dH(3
+
+!!,QmlBQj[1f,!*!(N!!!N!Ga!!#XG3#3"Q"*83kM,5Rh8B2qG14'fB"&d12cFXJ
+
+R%3U6))GC$SH"'`6pB3`m-)6GrT!!2j3*-1-$V#p8,`aB'2CM2`c*3"EdqQ6!(I)
+
++NaJhmNEGb#F2Xck22m2[!4i5X6cBKiL)l`R,3!C%J![l3(Sf5$1k5"1k8,JI!!d
+
+)F'9ZBfpXEh*PC@46DATPE'PMC@jcC3#3#G5Z!*!2#mc`!![1VJ!+eT`!N!4849K
+
+8G(4iG!!!ZEcYM,QmlBi!N!H2!*!(E3!!0U-!N!CS(P%1Sde[YpLG3SGH+%b#('B
+
+j(!CZi)&"L%#)bdVh)4QjKc!8mQ@kX6rL!ri3pQAk%-#-'`-rSI%`p2MGf1F9*NA
+
+pQ#'iS4YK[iF,ZP(-T*G0F#jJh-JEG5-IF)Hm!,)q4)c#6"$1$Q0I9V*3Z"m!$3G
+
+`C@jNEhGZFQ9PC&0THQ9XD@0PER0P!*!*5D8!N!m,cG%!#mpE!!V@R!#3"&4&@&4
+
+dG(Kd!!#j[1f2ZEcYN3#3"dS!N!Fp!!#a(J#3"VrC83kMc@$[C"-k$%*K8YL(``!
+
+c2X$k3[A#J)9K2rE$%-!3m"!042fBJ4`'(XBGb[5(-S'I!!I3kdX@#[F$!!!0#("
+
+PEQ4[Gfj`C@9N8fPkC@aTBf9ZFf8!N!R('J#3$`[1VJ!,d!3!#YDF!*!%9%9B9(4
+
+dH(3!!,QmlC+j[1f6!*!(5!#3"cN!!'rP!*!'PEj4$U20B1pNF`KMKlH%`L6)BCE
+
+$BH"bGM!#I`E!M!q`[K$`Ki%A4N-bB0*CdR+52UiA"KbE,"6Z"`!!$3K`C@jPFQ&
+
+cCC!$C&0THQ9XD@0PER0P!*!*(iF!N!m,ceX!#p#T!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1f9ZEcYPJ#3"d)!N!Fe!!!SbJ#3"[!B83kMcHM8T4Q&$U03Q"6fi6$!M!q`[P#
+
+p-'"Kf)rp-!3`"!Cl*aY`Kl`J#hTpI%"JGD&`2`!!$3G`C@jYEf4PN!4N8fPkC@a
+
+TBf9ZFf8!N!Q))!#3$`[3"!!,d@S!#YDF!*!%9%9B9(4dH(3!!,QmlCLj[1fB!*!
+
+(B3#3"e%!!+Am!*!'*HT4$U20DMFBKF)Nb''@`f%!3ci!-`"QI#!+N6F-($Ucc58
+
+$4UFZc5J$%!'RXD24Q@B%ESq(!2a3*X"3Q-3$E3iKA`J$eKF#@G$V5aB+p`-!N!3
+
+0#("PER"KD@jdC@9N8fPkC@aTBf9ZFf8!N!Q,qJ#3$`[3U3!,dJm!#YDF!*!%9%9
+
+B9(4dH(3!!,QmlCUj[1fE!*!(3`#3"c8!!&6Q!*!'9R04$U20S62EA%+(`b88*S9
+
+p1!``i`1X,e3[$&JBpQ-r$!%-JF(Hb3EF)5r)JPiI(a"FA5MF$`!0#R"PER"KG(4
+
+PFQjN8fPkC@aTBf9ZFf8!N!NA,!#3$`[4DJ!,dVJ!#YDF!*!%9%9B9(4dH(3!!,Q
+
+mlCfj[1fH!*!(3!#3"cN!!&EF!*!'@f44$U-YcGc9+#6[ECh,CA6DK-)Nb''@`i"
+
+a)fr8MAcb-1[cq$2m(X$k3X!IbS!Sbihp-*3X&1i(!*!$$3T`C@jbCACPFR0PC&0
+
+THQ9XD@0PER0P!*!*RdJ!N!m,dJm!#p19!!V@R!#3"&4&@&4dG(Kd!!#j[1fHZEc
+
+YR`#3"iN!N!GY!!#k4`#3"T`C83kMc@RXD(5Q'B@1cN*K8YL(``!c2X$k3[A#J)9
+
+K2rE$%-!3'1bGE-!GmS)Xk2AaJ45X#j2%,XBI"PRZE1!2B4pbHc!j!10'hUJEqH4
+
+H(l&aI#%-SZlX-)Mk-31iX!r!$1#"3BL5*8,KIJ#3"!d(F'9ZFfPkCA*cC@46DAT
+
+PE'PMC@jcC3#3#ApL!*!2#p+i!![82J!+eT`!N!4849K8G(4iG!!!ZEcYSEQmlD-
+
+!N!G!!*!(13!!9Y`!N!EpSP%1Sbh0h08S*1pYRFYPG0U%`L6)BCE$J(%MEp50I2)
+
+`kr2i-r`H`2T#`"r+J#M,MId`P#`8lJF!N!-0"A"PER9`HQ9bFf9N8fPkC@aTBf9
+
+ZFf8!N!RGN`#3$`[6P3!,e1X!#YDF!*!%9%9B9(4dH(3!!,QmlD5j[1fP!*!(4J#
+
+3"cd!!'lP!*!'$MG4$U1YJd2Sk#!8*S9p1!``i`1X,e3[$&JBpQ-r$!%-33H($%6
+
+pQ)%F"Kl'(FVdKc+"Rq!'d1Y,&JVh!`#3!`d%F'PMDh"kCA*cC@46DATPE'PMC@j
+
+cC3#3#APY!*!2#p3q!![9S!!+eT`!N!4849K8G(4iG!!!ZEcYTlQmlDN!N!GD!*!
+
+(43!!q--!N!CmG&%1XliG#2V$1#RR8B2qG14'fB"&d12cFXJR%3U6))GC$SH"'b"
+
+hb!ZcJYR!`m#`,`5bI&RT2J4J"X#-$rK$"#0XG+&`2`!0"A"XDA0dHQ9bFf9N8fP
+
+kC@aTBf9ZFf8!N!R$,3#3$`[8k`!,eX%!#YDF!*!%9%9B9(4dH(3!!,QmlDUj[1f
+
+X!*!'!8)!N!Ha!*!$i!#3"Y+a83k,1Fd&f+!rM%2Z,*p3Q!3jc()i$0b!$d'8J@%
+
+IJ&k[2-4PTIZ3!-m,XRcm!3Qa$f$'"hJ`P`&hb#Y-bX@j%9pS-frX$R)m--V)13m
+
+4C(d)qheKBC)rY$4bN9X"q6P!P#LTN!!-J)Y3C&2JjlZb)CY0ZT0'PJGclZ"bLaV
+
+`-1j3TMq8Z83BJQlX3b$U$`C"#'*K8TBldqpa"i2CZ648N4@NUUiE"Id%f-X'1F2
+
+4K8,KIJ!!$3C`E'PcG("PFR0PC&0THQ9XD@0PER0P!*!*Ya3!N!m,eD!!#pID!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1fYZEcYVJ#3"J%@!*!(U3!!'p3!N!ERV&%1LcR0j3!
+
+KGjC2Q(0l+rI'NL#(@3k(JF[C`3Mm'3!c2Z!2N3Mi`cP(iJ$-!'iJ$F'3!#q,aGP
+
+5`#,)qK$1"N&r'#F,Nm6Q%-Ri)BqI$IU!,q*$f5!+NAHea#@jaKYI3!i`lSJ[9!m
+
+,NhKa+j3GarLq-'N$r&J'FQSMKi4aijK3fTd9!MQp##G0Q)6Fa$RQ35()p%ImSF`
+
+F4)`J!PQqF0LGk8Z@#)A#r3#3!`d'F'aTFh4cCA*cC@46DATPE'PMC@jcC3#3#IF
+
+I!*!2#pE"!![Bb`!+eT`!N!4849K8G(4iG!!!ZEcYVlQmlE!!N!Hh!*!(J3!!GpB
+
+!N!DaJ&%1LcR0P5B8*N%1Xa`1!cI``"$fKFJTm)FaIqANh3pP!TJ"F"3#AaD,Xh2
+
+#()Mp)DrIiqEM,#N%!BZJaqIPN!![$#!#%6IbZp1$[V!%C-"J%%CpAT!!RNd8K4R
+
+U@-%Ji%,T(2,l[$`rc(9$Lk%2*56p%-#-$d3K#S4CYmHA,"6Z"`#3!`d'F'aXDA0
+
+dCA*cC@46DATPE'PMC@jcC3#3#8,b!*!2#pID!![Ck!!+eT`!N!4849K8G(4iG!!
+
+!ZEcYXEQmlE)!N!B"&J#3"kd!!'S%!*!'pTT4$S[&R1B#E$$Nc[)Pj6aUd*q1h#J
+
+EX!KkI&i1q56#CCM!(mC#B4,N--[K-(!$$`aKAiLF+%PA6Ylp8#D!'3"()I"PX6J
+
+l*ma""J`'BG6R"HRC`L4h,T%`I4rJh3#LR(F1-[d4A`Li`m!I)TSk!#l'6iiFF'&
+
+I"KFN-CC%90rR3KlXKb%3p@-'4#%+K&QhajI653b$Ld[Na0(#!2RkFRlN@p)D5mS
+
+T)6GP3Z&q!!!0!R"[E'PcG'9bFf9N8fPkC@aTBf9ZFf8!N!Q#m`#3$`[Bb`!,fXN
+
+!#YDF!*!%9%9B9(4dH(3!!,QmlE5j[1fe!*!(R3#3"h%!!0NU!*!'YMj4$M[``"$
+
+fKA!ik!pMS6$*!l1bh#&[-J!1j#Fa`""JaJHLb)pp))b4cjf9%h"m'Ik3!"rlB5J
+
+-B!C`"i2#*"C"Mmr,)9pB"L*Zj(HR"rN6qJ#*$Rd)C`2HNi13!$[,j`Aq8)k+(f)
+
+jc+[,*J4#&`Vh!`#3!`d&F'pKE'adCA*cC@46DATPE'PMC@jcC3#3#EV'!*!2#pR
+
+S!![ERJ!+eT`!N!4849K8G(4iG!!!ZEcYYlQmlEJ!N!Gj!*!(C3!!lH)!N!DU'9%
+
+1ZmjL5FTpe+!r(EP40Q!4p2Lm(2**K-)N$mc+FSHmb3!iN!!rK-2!(3`#,T61)Er
+
+2#lbq$(r)Mrd`&!Eq%-#-$d3K#S4CYmHA,%c5TDFMAm6[aVi`F0L"hQjc'@fZY'5
+
+KF$m!N!-0!h"[EQaXG'9bFf9N8fPkC@aTBf9ZFf8!N!QCK3#3$`[Db3!,h(X!#YD
+
+F!*!%9%9B9(4dH(3!!,QmlEQj[1fl!*!(Q`#3"fd!!)Tf!*!'D!C4$VX040`Sj-l
+
+b*H8mDY#IMY`S'l!)HRaH$[NN`L@3!-!IaN*KNJGQCEP$hQ3!(-JI`Q'!'4r`qM,
+
+m)6rf`e!B`)bF##%GRZfldi-qF9L5,%c5TDFMAm6[aVi`F0L"6@Fe@XaTVVJK&X!
+
+aiE$p!!!0"("[ER0XG'9bFf9N8fPkC@aTBf9ZFf8!N!QGXJ#3$`[ERJ!,h9J!#YD
+
+F!*!%9%9B9(4dH(3!!,QmlEfj[1fq!*!(K`#3"fd!!,V6!*!'LXP4$VXY,5Rh8B2
+
+qG14'fB"&d12cFXJR%3U62$!Vbahb*J2J32i3$J2-q)$APq%2qE%IKX)!CJ"h-!L
+
+i8$U(r$i[L,L4hjdHp)@"2b4-iQN6L!*KeZha%BPkHMVb4IaZ62*Y1l$TV-DdC+&
+
+`2`#3!`d$F'p`FfadCA*cC@46DATPE'PMC@jcC3#3#3m`!*!2#pal!![H53!+eT`
+
+!N!4849K8G(4iG!!!ZEcY`,QmlF%!N!I&!*!(J3!!30X!N!DMT9%1Z`1%XGX6#,Q
+
+cI%NjMaVdTb-hbJBXJKkIPd-qL9#B"$R-FMJ--1-$@6#-!I*jI#%Fc!D1$QPYI&k
+
+3!1A,5[FK!$0b%-)*,aB'rK`S5iUiJj`[RKqlNGqG([5"+!2$2X$E%kL3!1LL!0`
+
+K,j%F`)L2&l#`-#QQk#'BY9K5&`Vh!`#3!`d%F'p`E'adCA*cC@46DATPE'PMC@j
+
+cC3#3#3X(!*!2#peB!![I*J!+eT`!N!4849K8G(4iG!!!ZEcY`lQmlF3!N!HG!*!
+
+(E3!!BB-!N!DU-e%1Zm-#f'$)RH9,bRR8S$mGZ9%fB"(dq,`FmNQ%5b#"2ib&`L3
+
+2c-TbKlc*!$L3!$q%``!c2Z$eCIK$IZb(S6#!'6N43MUmbY#(F$EJk@TBNLa-dU@
+
+R)er%lmDq-($BJF0L-DHjBSjB!FF%`[B$!!d&F'p`E(0dCA*cC@46DATPE'PMC@j
+
+cC3#3#42i!*!2#pj*!![J"`!+eT`!N!4849K8G(4iG!!!ZEcYaEQmlFF!N!H8!*!
+
+(F3!!*C!!!*!'QTp4$V[$NTD8qkK"IcTbSfc!)ZMaH6RNN`L&54kBPH81HC-"F#"
+
+r#)F"CRc!!d2BaaqM$1!1"J%A5ZH3!0rR"5%BmQ@a1-GKk%-i@jJ8p)F*b!rPJ#F
+
+3"F+Xfq-M2[AdG15,q0hB&`B11h"Bc'QZY'5KF$m!$34`Eh"cFh4PFR0PC&0THQ9
+
+XD@0PER0P!*!*2m`!N!m,hbB!#q$N!!V@R!#3"&4&@&4dG(Kd!!#j[1h)ZEcYbJ#
+
+3"id!N!GY!!#&P!#3"K0P83kl)bdTpe'$rR6N4YQ!4G$Mmh,)*a%+Nc``+mXGmLB
+
+$i%$q%!i$c2L!ejIK$rQa(iE#!'B!Gc!)Z&!kKr`qlf)k"rk3!$#*addJ#S4CYmG
+
+(,1VTkFJAmEXabEIY`1'dkif'$NjM@V*3Z"m!N!30!h"[Fj!$G'9bFf9N8fPkC@a
+
+TBf9ZFf8!N!QjMJ#3$`[J"`!,iD8!#YDF!*!%9%9B9(4dH(3!!,QmlFZj[1h-!*!
+
+(BJ#3"e%!!1CV!*!'Y0a4$RZD8*J%1Fab1!``i`1B3cMSUaF'(JiKA`J$&SEpf!p
+
+$-Z!1!cF)qX-B`!b!Se#B&1+bdRdS,-XKIa@i3el3"AJJ4&jrb)epi@5KF$m!N!3
+
+0!h"[G(0cG'9bFf9N8fPkC@aTBf9ZFf8!N!QmcJ#3$`[Jj!!,iV)!#YDF!*!%9%9
+
+B9(4dH(3!!,QmlFkj[1h2!*!(r`#3"jd!!#eC!*!'&cK4$VX,H'!)qd)i(25(X9#
+
+Bj)&C@Hk3!$FC!!IbNaKJaJH`(`Gp)1J2qF)!CZ4%3RH@c`YB"$dq,iG)$U%XL8m
+
+k[Jarb)rp-,3#0RBM[cXpQ-XLp0#(F$E4iMLF,%`b3E3LT1A!X4`ImIBF!hmBK"N
+
+B$3()rmP+@*)r&-BqYjHhYBJFK(h)RpY8fq'd1`#IMcP2EL9)m%2!B8m@#[F$!!!
+
+0"("[G(0cG'9bFf9N8fPkC@aTBf9ZFf8!N!Nic!#3$`[KT3!,iim!#YDF!*!%9%9
+
+B9(4dH(3!!,QmlG'j[1h6!*!(M`#3"fd!!"Tj!*!'hk04$VXV,5Rh8B2qG14'fB"
+
+&d12cFXJR%3U62$!Vbahb*J2J32i3$J2-q!$fik!2"2dKAaM!$1!1"J%A5ZH3!0r
+
+RA8cR`L4r+!FhJ5J3CYdH(l'STkFMAm6[aJ50mZ"`f[9'3`HR-5eC+"6Z"`#3"!d
+
+&F'phCA*dCA*cC@46DATPE'PMC@jcC3#3#945!*!2#q+b!![N6!!+eT`!N!4849K
+
+8G(4iG!!!ZEcYe,QmlG8!N!GX!*!(63!!2-F!N!BT99%1HbHM%i5iV&6qT5S8*N%
+
+1Xa`1!a%I+J!-!@Cm1GHU#,!`kN2*!*JcFTPq')4mQ@lXMrKN2#F8*[%Jb1,#'+6
+
+lJ$X%r#(Xbb43*Y`2!!d&F("bEh"dCA*cC@46DATPE'PMC@jcC3#3#HGT!*!2#q1
+
+2!![P$3!+eT`!N!4849K8G(4iG!!!ZEcYelQmlGN!N!H'!*!(83!!Cpi!N!Bfee%
+
+1Kp2Z!'c3(mBKGjB2X!Lb1BHa1mMjK-)N$mc+FSHmb3$S[0i`F1F3A)5c!BB!-ci
+
+J5X!,Ll-8B8P42fC!MNdKlP8!4%E+J5MRYC!!,"6Z"`!!$30`F(4[F(4PFR0PC&0
+
+THQ9XD@0PER0P!*!*bqS!N!m,j%`!#q@b!!V@R!#3"&4&@&4dG(Kd!!#j[1hDZEc
+
+Yf`#3"d-!N!Fe!!"8jJ#3"RG@83kMcD%cfea#Km-P&#D&I6J--1-$V#p8,`aB'2C
+
+M2``"$)("hXN'h#%[b)*H(am3A&dSh!m!$3*`FR4[F(4PFR0PC&0THQ9XD@0PER0
+
+P!*!*aqN!N!m,j3d!#qF$!!V@R!#3"&4&@&4dG(Kd!!#j[1hGZEcYh`#3"J'C!*!
+
+(i3!!BD)!N!ES#P%1TpRQ!TMaKc+&$QIXS#j*9A*IUb!j19R#*jr(@*)(CQ@j3pj
+
+N!"c)(m*K%RH"2m4b'%#8Hm"-P"1c1B4m)3bLb)pp))b4cjdP6",l3hlXG`H$f6Q
+
+3!-5(X[`KGe"#P1V"i')I$Yc)"eMHd[8#'!*Z%#C0"$jK8Y!ImXP!f-HkNCX2pl*
+
+"Q(9lI'%Cm)@m"!*42fB)-24&H4DU061!1a3VbLGU*-%aNIL!ic9lb1d*q',1)F3
+
+*E`Y",Z3&IS,U%I5#`j*@3$LAcNYaSVY(1'kZM4@-ZV2$+i8XK%K+&`Vh!`!!$3C
+
+`FQ9QDAKPFR0PC&0THQ9XD@0PER0P!*!*%1m!N!m,jE)!#qHi!!V@R!#3"&4&@&4
+
+dG(Kd!!#j[1hJZEcYiJ#3"eJ!N!G&!!"X63#3"P"#83kRd@6Z,"3Q33kc(!i$c2L
+
+!Kd2)&m)J`ard!4Ej-[cpC!!Ld+d(m'I`K0J(r'%3JV'`,Na+mrP!QY'9Uk-,KIX
+
+"!*!%$3T`FQPYDA4TGQ9`C&0THQ9XD@0PER0P!*!*KlJ!N!m,j`-!#qLe!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1hMZEcYj!#3"q!!N!H0!!"PK`#3"YB883kRf@TfQ6XD(5$
+
+Nc[)*%rHhFZmX#A+BjA!BZ*`GM-#I!6$M!ri3LB!rR(-N$X!-i!BXmQIjX6rL)jI
+
+)ir0bb#G-%X13!!qNFriJ!BBB!J[-K**N!'`3q`MI`L!-F`9)*JGcBC,A&rBJIlV
+
+25m!B4Pd(HVJXA`J$0r+"S$mGZ9(f%U3'3K![ES%R#iAl!3!0"A"bD@jdG'PfCA"
+
+N8fPkC@aTBf9ZFf8!N!P5Z3#3$`[RZ!!,kJB!#YDF!*!%9%9B9(4dH(3!!,QmlHD
+
+j[1hR!*!'!CN!N!IK!!"KSJ#3"TUN83kRfHB#Q2'(-S81CqbJ,NP9FPqV)$Nj@F)
+
+RRmGBNJGQCEP$hQ3!(-JI`Q%5Gi%ra()B3*4l`%b8%l-jK(`K$+,)MhdJM*(2R59
+
+-%[Y$IZah"i2C1C!!a)Hbr#&h8%+8kX(JBKm1h-J(@0l5p3)B!Qi3*Nd%2Q&5d"r
+
+bb8$BalU4Q`rhXN'BGAYmB4R`KE`%!P%rCJJ`p%9j&USe-i!l&#[+*fSN`6'4q)$
+
+M0A[)l3RiBXiKa!P[#d%Zj!9qJZS4p),$NPC!1*I15h'LZdFiEUk0&BbkXm-VK5b
+
+%5%SA#[F$!!!0$h"bD@jdC'9`G'KXD@eTG'aTBf9ZFf8!N!R0L3#3$`[SY3!,kZX
+
+!#YDF!*!%9%9B9(4dH(3!!,QmlHLj[1hT!*!(N`#3"h8!!2rd!*!'J#K4$UICjM)
+
+B(Dif&V29l%V+HG5)'rRGk8'I4#K-mQF!0`M"8-LAkFEqL!ri3pLAk8-bFR$m(MI
+
+fK3&QI#$,hFqIa@8"Vir&$)!C)-bP"reK,%`+Bm4j-)GmK'0K%28(Jb$G"eM%QcJ
+
+J24[NY+!"(rBN#iAl!3!!$3p`FQPZG(GTC(4SE'PYDA4XD@0PER0P!*!*A9B!N!m
+
+,kJB!#q[8!!V@R!#3"&4&@&4dG(Kd!!#j[1hVZEcYl3#3"jS!N!Gj!!!c83#3"ZQ
+
+U83kRfHEUC$DifPM-9V-V+HG4)flNGkF(I4+K--QI!G`J"%-KAkBEqb-qi!pKAkB
+
+2bFM"mA[Ff"F'Q2'",(FrIaDA"8*F9VS2!CJ"XRcmK41&%,K$f3#'I#$S$f1#Xc#
+
+)qS0"N!$Z!bcLK4b3!*i0FXV3J!plNSA#r3#3!`d+F(*[Bf9NGA*PF'aTE@PdE'P
+
+MC@jcC3#3#IaK!*!2#qVV!![XJ3!+eT`!N!4849K8G(4iG!!!ZEcYlVQmlHm!N!G
+
+C!*!(23!!j`F!N!C'm&%1Tee[0(4`'KdJj-lb#42hYh,[,!PbQ19`',LF(Bc!R`%
+
+`i`2q%)Q!2jac*!l!$1!',))HRjG$[Q5KF$m!$3T`FQpMC@4eFQ9cE'PYDA4XD@0
+
+PER0P!*!*k4)!N!m,kp3!#qf+!!V@R!#3"&4&@&4dG(Kd!!#j[1h`ZEcYm3#3"r3
+
+!N!HC!!$P%3#3"V+Q83kRA@mdG(!Ddi6#*-KKPX0Ki!C"IaJ$Q!%`i`-KGjB[c"q
+
+YB""`SA31qAeH`)9p51leCIK$j$K%d12cFXJA&LEj3cR8#85"-1[fq*)"X%(X)b%
+
+,NaFr$-MIc&$BD5!%-A!,Nc``K(dK8J(&NDbfJ9&Ia)GN5a5P5HcVbrQ4MjKF-PQ
+
+5Q`L'T%D)qNPIPXIMBf2H`UNS&1i(!!d(F(*[C(9MG(*PFfaTE@PdE'PMC@jcC3#
+
+3#AaG!*!2#qb"!![Z0`!+eT`!N!4849K8G(4iG!!!ZEcYmVQmlI3!N!GK!*!(23!
+
+!&,N!N!DFK9%1Tph33Hm#)5iVPAqT#X@V)[5b$T+6NbA#R-aU,SJP33kc(!i$c2J
+
+!Lk#Amf!!-i#I42`3Rp5&`[d!N!30!R"eEf4eBh4bCA0XD@eTG'aTBf9ZFf8!N!N
+
+3@J#3$`[YLJ!,lZ3!#YDF!*!%9%9B9(4dH(3!!,QmlI@j[1hh!*!(4J#3"cd!!'l
+
+P!*!'DbT4$U1YJd2Sk#!8*S9p1!``i`1X,e3[$&JBpQ-r$!%-33H($%6pQ)%F"Kl
+
+'(FVdKc+"Rq!'d1Y,&JVh!`#3!`d%F(9cD(9MG(*PFfaTE@PdE'PMC@jcC3#3#He
+
+%!*!2#qih!![`$3!+eT`!N!4849K8G(4iG!!!ZEcYq,QmlIN!N!B")`#3"lN!!#&
+
+Q!*!'FB44MJjTE8!BZcf"N!!lb`F`i`pP*['2'[5R)cI+"Lb#(TqA3ck*8*MNJ9P
+
+ClT!!0aN!RGFE*MJAL(+B"B"KcPQii-A#`*m,',Z$R!r!$2l)NL*Zj(HR"hdJbX#
+
+`$q4B)kL3!1LJ315k$)RNT!%AaS"a4hc!$B,q-"BQZF2!MhN#QY9b*2f3!"rlhF'
+
+B,'FJ&r5#G,j3&rLb@*bG3dDeBep8Q*6PbdVhS6"`)q,NH(eH31SLP)GJ#-HkNN3
+
+Qh!m!$3*`H(0SG@0dFQ9cE'PYDA4XD@0PER0P!*!*P8m!N!m,lZ3!#r$U!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1hkZEcYq`#3"iN!N!GY!!#k4`#3"RSj83kMc@RXD(5Q'B@
+
+1cN*K8YL(``!c2X$k3[A#J)9K2rE$%-!3'1bGE-!GmS)Xk2AaJ45X#j2%,XBI"PR
+
+ZE1!2B4pbHc!j!10'hUJEqH4H(l&aI#%-SZlX-)Mk-31iX!r!$1#"3BL5*8,KIJ#
+
+3"!d&FA9PG@9MG(*PFfaTE@PdE'PMC@jcC3#3#IDD!*!2#r!0!![b&`!+eT`!N!4
+
+849K8G(4iG!!!ZEcYrEQmlIi!N!B")`#3"ld!!-KS!*!'C+K4l6XB1aK"Aml(q8,
+
+Z,"r!M$q8QF3rDY#IMY`S'l!)HRaH$[NN3Q'5"fCPZ82HC!"dAQqBi&`JbQ%@!)B
+
+jCq'#&`X$IbjJl!k54*6"(eP5a)hml[5J$d3C'2D"('X%&4)G&)KFPb'4R$6J`KJ
+
+`lSJ2Z%(3(mE#*(FBq$&23,0DMU3ImQ1r1aL6j3cNJPk3!-iAi3*I&SZcFmLSGZb
+
+,#T1bI&RT2K3'EN5F(+r2#dKGK1Uj2B&B94,)K2X"!*!%$3CaG@pdC@4dFQ9cE'P
+
+YDA4XD@0PER0P!*!*X2F!N!m,m1S!#r,N!!V@R!#3"&4&@&4dG(Kd!!#j[1i!ZEc
+
+Z!3#3"iF!N!GG!!#0*J#3"Z9a8Hdlf&e'!m#-2j5CP21S3AmkFU0X`#,SmANjj*-
+
+)K8Q3!--XKm2!crq(j+3"I`C`Jk!rM*Z!9@Q)qM&$iKp`%,Za(iD%59PZ&#"1,ZX
+
+,HAhH'(i#N6GC+"6Z"`#3"!d)FA9[G'PPER4PFfaTE@PdE'PMC@jcC3#3#3QA!*!
+
+2#r)A!![d)3!+eT`!N!4849K8G(4iG!!!ZEcZ!VQmlJ3!N!B"E!#3"md!!%,r!*!
+
+'!C*4l6[BA@DMc39#A&BUre)9LTGQLX+FB$NhbT)JKeN1K`&QI+!["l(I&m)!CJ!
+
+rbIJK2US$i&S46U+3!)36AkB2KB9*rM"`Kq*hm'H3!+X$B#LBcGr)br&(r&iI#4%
+
+*XVJJpV0"Aij)QZB3*3Z6a1B3J#35JbK%hV!-*)VE"%SHANeZ+!-KL)&5"Y)j[$L
+
+rNC0R553RiRS+N!$,5BIJKElFEQ0r*S2*a3pP*NX!k16($1Q#Nc-f)BV@K%N*Rm8
+
+UBTr(cb,SF3IMM3QF,K6Z"`#3!`d*FQ&NBA*MG'&ZFfaTE@PdE'PMC@jcC3#3#@c
+
+)!*!2#r,N!![e2J!+eT`!N!4849K8G(4iG!!!ZEcZ"EQmlJB!N!B"'J#3"kd!!#!
+
+I!*!'2SK46Te"jp5lG$B3iV+%iXAR$d'f4#K-JKaQ14`'Q2%"0r*JGbM6&m)bi!m
+
+"j2EkhD'`$-!-i#F)2d4)1J#Gr*J"1!U&56N*!Vb3!#$ZKD)IFI')V4m')4MUld1
+
+3!2"LB4,V9bM*!H3j"mI(qN*HIbJ6`&#1"[GRKR)%CRKLkk5b,SQlr9MN#iIpK&D
+
+9,QPe$D4+J-FG!ZNq`)9pAS!Kb24KASNP4Ga"cXG,$Ih%B`N!!!d'FQ&NBfpcG'&
+
+ZFfaTE@PdE'PMC@jcC3#3#FCH!*!2#r3K!![ej`!+eT`!N!4849K8G(4iG!!!ZEc
+
+Z#,QmlJS!N!G1!*!(13!!R$)!N!DaAP&1R8&[6`2)lI@l3f'K-!PbQ19`''$'"c`
+
+`l!rj!-`!IT,`3b5SJ5MMpc$!6`K@`"FLU3bZ#iAl!3!0"R*KC(0TER4KER0XD@e
+
+TG'aTBf9ZFf8!N!R)-J#3$`[e2J!,pT!!!!V@R!#3"&4&@&4dG(Kd!!#j[1i,ZEc
+
+Z$3#3"d`!N!Fj!!$T(`#3"RpE88kG)FeX!mMYpEY$BD%`#A+BjA!BB-B(`[k3!!r
+
+!$1!RGcp%BKU)-Ri2!r`NE`9m)C,+d,T3Z"m!N!-0"R*KEQ4[EA4KER0XD@eTG'a
+
+TBf9ZFf8!N!Q,QJ#3$`[ej`!,pdd!#YDF!*!%9%9B9(4dH(3!!,QmlJkj[1i2!*!
+
+(B`#3"dd!!%Gb!*!'@6"46Th0B,H#%*FP&#C"$V-F$J-h31k3!"GQJ4!-KAbCEZb
+
+2q)!rK(fC2J5#[R!BB-BG!Rk#mN1%U)%SirF``U3X,Sa"ZJr`BBR6KF,p!*!$$3K
+
+bBAGKFf0TD@jcE'PYDA4XD@0PER0P!*!*Y@m!N!m,pT!!!![i9J!+eT`!N!4849K
+
+8G(4iG!!!ZEcZ%EQmlK)!N!If!*!(Q3!!P%%!N!EBce&1A5GGQYjX"Kl'MB6#*-K
+
+KPX0KJ"NIm)H`,p1(J$MGKk-qA`LN!(I)#j30'dT)hX)!q9MN#rY##4kL@4*[BRN
+
+`!IZKR&`U'(Ppb3#BL94-X-LdB3JM'-a4&d!1h'&K8X,+$fAbr%(B&ici`S6GK5$
+
+$6aV!NUl&!'D3!'l!MG,p',P4YM!Ti-X1%lY(2KRJ`Mk3!1LjSdm@#[F$!!d#FQ0
+
+hBA0MD@PZFfaTE@PdE'PMC@jcC3#3#@eS!*!2#rG0!![jd`!+eT`!N!4849K8G(4
+
+iG!!!ZEcZ%lQmlK3!N!B"h!#3"J%0!!"Tb3#3"XIL88kMcU"[Sh-+RAUK-!Rjh0i
+
+`F)1`2j3Cp!%2idCZ$rBKN!#"B"E!M!r`"!KMmMS!lT!!&d!1Xa`1Nkb&K8Q,J4D
+
+[-B()Q`b!1@-9fZIMRMrSNq9B80cPE6aK%TqL2(*XaZH9JAK&FeHN$9LF$B,q-!E
+
+L%-5,-bb*YbjZdFCk"[k3!$XS!ci2!dR6&%Xi&2,a"@!$%mBA@Qb0B6m8J3'q#ZS
+
+UpQ@jrD%`M`)ZK2h"(0541Fd&)-UjRGUG"Q(5BLlP,'#"Q4#`C%G$c$X0N6q%II`
+
+mpYbH3$MS$M-b%2%Kl2HiJb$GM@6#T*aTq%([NL9b`,JM2K##)-ck2(k#'[MFSC`
+
+53e)hLYQ3!(KpL*1&`[d!!!d$FQ0cBA0MD@PZFfaTE@PdE'PMC@jcC3#3#FCT!*!
+
+2#rK@!![l9!!+eT`!N!4849K8G(4iG!!!ZEcZ&lQmlKJ!N!B"k!#3"J%4!!$jA`#
+
+3"P4d88kMcU"[Sh1QJ4#A*A6UFppC%[+j[@%J)XF#m$"Zj2CJ(`U$$!5c!'CmJ-p
+
+$'*2A!A#([!"bQ19`Q'5MX%qBY!4TN6q)3Z40"X#FX3VZmh(2(r6*FM`Sl[)qRM#
+
+*6e%H16EMmmV!iV*QZSJEX$JE"2eK$-3KL"GR@"+[AGcLM380r#&h8!Cm(JEk3jP
+
+m,1&3b-FhJ"9-'&pSL6DQr9!%"[JbU+hBPqAfKm)m#lJ3pJGc@%IQ0"H!+1GfDRF
+
+DK%Q,ZC5cJ!9Q3X#5,3dalc4%rK$fm32CFhX#iD!lc-K!a)H`hq-1JR3hNJQ6FXE
+
+K"lfqTA2XZb-q%))Jc2SmIS)Dq0bKR"C$dMH+fC!!H(f)NiA#r3!0#(*PB@4MD'&
+
+bER0XD@eTG'aTBf9ZFf8!N!RhZJ#3$`[jd`!,r0%!#YDF!*!%9%9B9(4dH(3!!,Q
+
+mlKUj[1iF!*!'!G`!N!B"$3!!DFN!N!DS"9&1SmkJEk0c#TekS6!*qGcH-(#$X$q
+
+8'I3"$q0'EJrf)C!!J@!@`)`2m!3)Br)k!1k3!"G!$V-F$T1XKB9*Li%@Vc'"b*X
+
+-J$PM&GVRijirk*2P@&$Fj@dmB4+ISMabE-ERPB&i4A0AT!eBR!f#rM!'iK$%Lc-
+
+XLEFZEY('HJEqN!!l+!-q$`0*da4,1"6bm39J!a2'&eTXM@%r&)%"[JVU+[CPZIf
+
+K-)m#,S6p`4c8N6R0"5$+ZChDR3CKdQ)Zj5aJJCN3X'4(3m`l$C%rK(hm22EFRN!
+
+ik!ic-K$a)HchZ)-JhBeN`U5FDIK"lj)PFX#i)ci3JL$-qMaqJKVih+'F%N050iV
+
+CN!"iIBL6KF,p!!!0#A*PB@4MD'&bFh0XD@eTG'aTBf9ZFf8!N!QHlJ#3$`[l9!!
+
+,rP)!#YDF!*!%9%9B9(4dH(3!!,QmlKfj[1iI!*!'!HJ!N!B"%3!!q9m!N!DpQ&&
+
+1SmkJEk0cTS%3Pb9dkR2I@4,bZEeK)#,(![!`EZ6fB"m+J``%X`"QI)$23aL6e`&
+
+`Kl`!FTMPF*KNSl"2Q,3%DC%rL%,N63E!R,%+l[0acardbA)m+1lb2Ti`L8p4(MN
+
+fir2+`1+bCVU)'l!i'`6pB3c%)BJACeJ5VehFiSd&$I`KGe!'I"i'qN1CI#cK8-M
+
+(0i!96"KID)NfT[e3"!Ei-ULYf*IPpSI#2!Zi%2B(FeK(jM3AJ#MRGQTh'S4*LlQ
+
+8Xi!&CN,!NLd0-Hmd42i3p[%$fA0l!Z'J1mc)3-5(X0rM$S*d0j)*Nh,'i3Hp[U9
+
+cl,XM2K##)-ck2(k#'[MFSC`@3p)hLYQ3!(KpL*1&`[d!$3CbC@&NCA*KFR0cE'P
+
+YDA4XD@0PER0P!*!*Ld3!N!m,r0%!#rm2!!V@R!#3"&4&@&4dG(Kd!!#j[1iJZEc
+
+Z)J#3"h-!N!G0!!$3jJ#3"Jh"88kMcQ"d#S9*N!$$,)I$!$-q%(*Rq3$-b,RC(%+
+
+q%!E)jrD#-#D[!j!!i3rkC!#L()#EaH*X%25(X6$*RmYFX2aFTF5(X[`KGc"C+0`
+
+2!!!0#(*PB@4XDA0dFh0XD@eTG'aTBf9ZFf8!N!P1)`#3$`[q8J!-!0!!#YDF!*!
+
+%9%9B9(4dH(3!!,QmlL1j[1iP!*!'!N)!N!B"83!!f38!N!E0*P&1SmjJ-DHjK%k
+
+,8*L%I'j[',K"d"rbJ3`%X`"QI)"234L6e`%3qd0ql(F(JpNjdF5(X[`KGe!#h#'
+
+[-!PbQ19`Q%3YR#YKjHT`R!b!L`"&b!q$X)pe)cIfHB%rK#()mQ@Pqa"KF@%5CL#
+
+Ab3!r"P%I)SSAE!i&`Rdj0lRhN!$E%r!45BaB)I+'cB`mf!p$4,'C`GFLLm`U3eX
+
+,C2L$2KPINUM0*Hp44Nk)iSLa'CpA"K*VQ$H*Y!',Xd%8)Lm3Kb"HNU&LLd3li`+
+
+,S-FA$[Y)M6e5%`qk`i`-4(`)qchZ)%KhSeJ*IY$V!ak'E-!Q'a*PANqYaLr""EP
+
+&#&1)qS0"`$GJ`a"fjb,j-SdH3@%)fb*8hadK@qJ6*Fci#("KMT6JCQ6i22`HmpB
+
+Fk![cAKTJB04(fY)!Ad&#9MV`Hf!3KS4*181fB9D@,d6m-f0G+0`2!!d(FQ9KC("
+
+[Fh4cFfaTE@PdE'PMC@jcC3#3#9R-!*!2#rm2!!`"G3!+eT`!N!4849K8G(4iG!!
+
+!ZEcZ*VQmlLF!N!G'!*!(03!!M[m!N!ElKe&1SmlJX+F*K8Q3!--XKm-!-ck3!1%
+
+2qJ!,`hlXKb%!-h*#0SH3!#q%!I+j[5#-bHXJ"k3,KIX"!!d,FQ9KC(*KGfaTEQ9
+
+TE@PdE'PMC@jcC3#3#6Fa!*!2$!$3!!`#kJ!+eT`!N!4849K8G(4iG!!!ZEcZ+EQ
+
+mlLS!N!B"c!#3"J%&!!!5k3#3"Z+F88kMcZ$8GE+BE8DK-!Rjh0i`F)1J2q3$'3K
+
+Q!Fci!*q#-#D[!q!1H3(N--[K--PD1"GPmG!*40jNBC+,%#8"r(b-qd1C39p1'R`
+
+4A`Mi-h+X"0L')HcfKm)Jc,Sp[V"-Q*51h*k!$iGP`)Fpb3#BFfQ,$S5@j`rkC$P
+
+e80cPDr&b3KJA4GU-cbX$5rUGpiE!!BZc53FF!h%)iL8C+UT)H[`Zq81h"r09B+r
+
+NE$0Z8PRL3k393EJ!ETEeZC%`b4p+0+f"U"mc)!4*dkl(l`k#,*mla#Yi%)&ddMN
+
+2ZX1-$%4m#2Xp*0pc)c+(a"rd%MJbV&!fJ%3RjSN$0mBmI#D[#iAl!3#3!`d)FQ9
+
+KC(G[FQ4TEQ9TE@PdE'PMC@jcC3#3#8-,!*!2$!&e!!`&(`!+eT`!N!4849K8G(4
+
+iG!!!ZEcZ+lQmlLd!N!B$GJ#3"J(&!!$403#3"Q*#88kMcY$*lM3)RCf%`L6NFh[
+
+$`!f#rT!!$f3JQ!8`i`0m#X+B[!k!1q3&N!$$,)I$*'[KA*6&3bF3HC1&55j#P!6
+
+`mc(Z$f8'I6PTm%9m)H$2b,%5B"Z'X0XI#S-`krEi`M*K8MTbH`)q(*B"(rBN!f$
+
+1T5dk%&UH2qL6jG4"FCH[aFX*B9`8D6-qV`c%qjfAKV3"Ll0*!4`$F3ML*4PUU8K
+
++c,&$"%N[h"F'kD3A(R5('4Q)q"$fHpa"NSPM(IK",fQclbEY*6i8"[k3!$"T4@p
+
+8CTMMDV[$C#-HD9&b4f'I&f4!Y(J6ISKcBcm-N8%3-0f6f&$$EN`MHRD3!#0N#NZ
+
+(E!QK,jTVNAHKJ6$N0A#X"%$CQ+re(*%Tf@l5L"X-!Pmr!J[)!#iaESJ)Z2bU(bk
+
+TR0UG6GK#j$m)3q,N%ZDB9*R'C@X)hiY2Cl%3iY,i2XCU)*ddMRH@P)$L4S)JM*)
+
+2LJ$PL`5'I)!U5M9`Hlh%)i(!Mh-q!X)0[c!d*CaI1lGeRP-l&JbYG2TfD4CG@KZ
+
+M`F&MmCYK"h+@Q$$mCm5'AKrKUSN#A@q)I!hS#c5V,3U4h4$6*K["MpQm-%lJTQq
+
+jTbi4#[F$!!!0"R*PC'9QF(*ND@jPD@eTG'aTBf9ZFf8!N!PII`#3$``#kJ!-"H!
+
+!#YDF!*!%9%9B9(4dH(3!!,QmlLkj[1i[!*!(B`#3"e%!!,bU!*!(K&&1Sm&SFL6
+
+P2QV%MIcZp+"2)K3Qq61!bpR"+!2ZB""'`i"&rL`rpNGmBB!K52F"(h+(I9iJ0MT
+
+eD8B*J!JJRpHAi3ra)F2Zk%,-LXP#iAi!N!-0"R*PC(9MCA*ND@jPD@eTG'aTBf9
+
+ZFf8!N!RTf!#3$``&(`!-#4%!#YDF!*!%9%9B9(4dH(3!!,QmlM+j[1id!*!'"9`
+
+!N!B#`3!!48i!N!BG!!T1mH6a""R!K*)*2A*VNQ15f8UH5LKK*hP'MJdNl#A(MUa
+
+N*3q3!!(M8m)!mL)!!fU5!52S4bY3H)Yj(MP''%%!)qKLH(*ipEc)PrYhMfr[+I%
+
+`@T@B@T98*GqP08e3i8"Mm*VE(2LUVLZIdjK6T03c"BlC*[)GUA'd"q0fdpR[+XQ
+
+6dMS2ZEcfA&F$$`f(+*N5*@A*1$4D%RdlC3mj*QUB&+@p[il@TlVUXY2*H#GCKp&
+
+SCHf"6#)656P5-ATY9$*26-FNFQTJXZBRdmAAair,ZRVrTcMe#MJFQRM(T,f,bD6
+
+-,Y&PJB8B8,!'2(bS+pfVS(3khZepD+m@8kHLKY")[8T6PG)%[$iM)1a0j%9GR4e
+
+"@QF#ZSP#KP[DQp66qJfZV$dq5k,Mjh5Gr,99%5U8FNB`+GI5qZBP5!*1()YCEN&
+
+Q3KrJ9"!629jHBf+"H!,c$dPG#C1c-M"q3X$GAblc@R6"$b9p$2aNI)l%6mTQL&[
+
+-lY&mQT`BT9Xb,R1NM!G,-2l-V+jk"GdECNFjFMZ[b+[GJcU3!226P)"X1LbaBCp
+
+miKA05r!+I&'@!N04A*M'3pEYC3+,fJE&Y4T9BmZpeMb#d`jQ05CK0!hQC&!1kb3
+
+38+bXe13FGjh4BLk@`!XeZRYiq2!$86'aDU93fH3C*Z"-Da0Tjhe,R3qRU410CME
+
+clV`BX3m'd@lHB5!LIXCdJ3dfG8DcJJr#B9$2Y&+dD["m(,+1,HMJkKChY&QT,Ak
+
+D,4,BYC)l"J2T!pTV$+a8f#bAbbe1lbbBZBQ3!$dXCU#N-G-388`9+-+(kH2GG`!
+
+p55B6#C!!KCPX1a61da6$MD04L)5Se(Sq-pbX5X#@ER#%bCZX(fNqSeqi)U,0CHU
+
+$hp-&K`#K0M)4l(cHpA0"iB-qfb["23XaJpl-BQ!4EfAK0ZXh%'0pXpdH@ai0q3m
+
+!N!30"h*PCR*PFfKND@jPD@eTG'aTBf9ZFf8!N!RDJ`#3$``&i!!-#KS!#YDF!*!
+
+%9%9B9(4dH(3!!,QmlMDj[1ii!*!(b!#3"jN!!$#V!*!'+DP46U2*D8aV)a3QB9m
+
+`'!B@Q!N"KJ$jXRaCk6i%-1-$Q%-ik+XA"PN3qf%S$-+%dAGM2R`"21i352F*Nj!
+
+!cd1b#H)mf1F&rK!*FX*'rMPbXicI%`C4ImJ,Sm!I"M$L3d&hYXqE$)#,)A3h)m2
+
+R`Ik),q3,NlK(`)LaB9D@1q3&@HjXi2@a2R++3MP1!lH(mBGmJ!X6"bEF$`#3!`d
+
+*FQ9YB@PZC'9bEQ9TE@PdE'PMC@jcC3#3#IIb!*!2$!N4!!`+p`!+eT`!N!4849K
+
+8G(4iG!!!ZEcZ1EQmlMS!N!HE!*!(E3!!0JB!N!DpV9&1Se9RYKQ-6K$LXP,jPkT
+
+3Q!3jc()i$$$M!mLAjID([$i%B!Kir4'rear+"#)H9`$Tf6QAUUJ*5)HB!9PF')0
+
+dRc$*(m+q6"m+!hI)'p2JA"!$2jq!@"ULIX+N0(GRN4Fr-`6FiC`QG+&`2`!!$3C
+
+bC@eNGA"NCA*ZC@PYDA4XD@0PER0P!*!*B%S!N!m-#KS!$![i!!V@R!#3"&4&@&4
+
+dG(Kd!!#j[1ilZEcZ2!#3"pN!N!H4!!"b-J#3"Vq188kMeG$"!B,q-%l+HG5J2af
+
+j86CJ%I6i["cb5B6#*-KKPX0Ki!BHb'B$Q!&%2,)!SRl-!#r("[dH0rD",&p@ZJq
+
+&!I*P`BM2Q`b!132J+!33#C1b)&T-3)@%m3&rL(L"Q`6G[T`l+-X*aIj-"QI"--k
+
+P41%%PLAj`cQ)+13MlaEQ65er+%a%C%i8T3Z&q`%!N!-0"R*PE@pfC@4PFQjPD@e
+
+TG'aTBf9ZFf8!N!NBd`#3$``+p`!-$-%!#YDF!*!%9%9B9(4dH(3!!,QmlMkj[1i
+
+r!*!(FJ#3"eN!!$'b!*!'3SG46U29hY%)-1-2CB+J2ib6q%F0qY14'f8$&N'2cmX
+
+KRd3S6))FCMNF"QlJJ@`fJ"P!a"-,)1V($2"&I!3im'@Pqa$`pHAF3B!K%1@B&3$
+
+bCF')cjXX&1i(!!!0"h*PEA"bEh"PFQjPD@eTG'aTBf9ZFf8!N!R2)3#3$``,q!!
+
+-$AS!#YDF!*!%9%9B9(4dH(3!!,QmlN#j[1j"!*!(H3#3"dN!!+B#!*!'ll"46U2
+
+9iE3l!"[dKh()RH8$,))XIf$#*!r-bR+([-N!1(eC-1),!mcN!Pb%X`&2FB!S$Lb
+
+!$!5cH!4,5M")+`GPMS9NSA!r!*!%$3KbCA"MEh9ZG(*ZC@PYDA4XD@0PER0P!*!
+
+*qI-!N!m-$-%!$!j6!!V@R!#3"&4&@&4dG(Kd!!#j[1j$ZEcZ43#3"jJ!N!GT!!!
+
+%R3#3"SMh88kM3fr[B(-*K8Q3!--XKm-!-ck!I+`2ql%IKS!(FL%-B%C1cJq&I#J
+
+,KM(`F!Mj5"!&pR8Z!*%`b@4h'MXDR6)3aQk%rD&-N!#"B"C)63E!R!&#F$%,BLM
+
+`Ki(EJrd4RfbaIbNe@5MF$`!!$3CbCA"PBA4ZG(*ZC@PYDA4XD@0PER0P!*!*&rd
+
+!N!m-$AS!$!m)!!V@R!#3"&4&@&4dG(Kd!!#j[1j'ZEcZ5!#3"e`!N!G&!!$Yh3#
+
+3"M2q88kM`kKcJ4#A"IbK-%DF"rYK+1J2Bk%`b31cXY`KEc)!6Li8"TMa!G%+5J%
+
+J(qYcBjmhQ#d$)Z*4!0LIj3XR#iAl!3#3!`d)FQ9bB@jNEfebEQ9TE@PdE'PMC@j
+
+cC3#3#5[(!*!2$!j6!!`3L3!+eT`!N!4849K8G(4iG!!!ZEcZ5EQmlNX!N!B"bJ#
+
+3"J%4!!"h"J#3"TZ`88kM8fFcf+e#FI`#BCr2+a%+Nc``+mXGmLB$B(8(I''!'4p
+
+![M!Aa'%!-d#-&[YB",fFajmHp"(8#I,k3flN$fB,NhJJprAPI#'2MbI'a#E+!L%
+
+Z+pf(`X!I"Pjr4SB2q8)Bq0`H"Q"rPJpBB#BN@CE%KAfmI$-$C%-1K%JVSJ,Z*T!
+
+!KGB`l11m8,lFML@4BP`hpRQ$f6,J5mj-"KJ#VbqGb`4Z3#Sl4qiX'C'j!)RLHli
+
+-L(bm*%[+m+-`"[j3"(VFf!p$LaZrVQ53!)Zd##(Npd(5&YN#5iThT1A!E%)ipdG
+
+mLh8ai)H`,p1(b2Z3!-00FNF`K1%`2bD@P*2#UJ1IKdc1!Pc)6i`ZZdrEeS9#iAi
+
+!!!d(FQ9fCA*cC@ebEQ9TE@PdE'PMC@jcC3#3#802!*!2$!m)!!`46J!+eT`!N!4
+
+849K8G(4iG!!!ZEcZ6,QmlNi!N!Gm!*!(93!!Z1S!N!CAPe&1BdHM-md)J[i`6XT
+
+je+!r(EP40Q!4p2Lm(2**K-)Nb''@`f(JcL&"P)&K(mMbCDAl%!R&2S#CaIFS)qI
+
+XK`K5m$4bBdR)&b&T&d$NpD&NSA!r!*!$$39bD@GSG(0PEA*ZC@PYDA4XD@0PER0
+
+P!*!*b*J!N!m-%)N!$")A!!V@R!#3"&4&@&4dG(Kd!!#j[1j2ZEcZ8!#3"hN!N!G
+
+C!!!i'3#3"VV%88jckcBZi29P)Tm[,(3Z2V%Nc+&3''$'"mJP#IU!*`JpJDJrl!2
+
+Tf6Njc[SmrJbrc`[FSFbJ6`DbI1i`KmMG$`Q6BLBJ6P@S'U8!Q!(F`10(RU"2NL`
+
+8lJF!$3*bE'GSG(0PEA*ZC@PYDA4XD@0PER0P!*!*(*`!N!m-%8i!$"2B!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1j5ZEcZ8`#3"J*#!*!'!9%!!0N&!*!'fYP46U21B$'RZB4
+
+1Le#BK(aZEaLi3G!ImS%-",-!CRb!6d%BNpF"%2Y$IZah"i2C1G(%Kl,m)AG3!Y`
+
+KVc!*FTMPF*K%,C`VBHAUF*`-J)X!4FJ2Jl#2G5-hpRQ"2i3Kb2*PTIX3BA&K%QB
+
+JPmN!2`C4(b++&f`1"F*p16Hjpj!!fa2`%8Q-@#(bKXf-20J23d5aQF(A)S[-+N0
+
+E#f6iJciCAj+Sc5A[88C1L1+)X4QI9`B5DjJhLE3"Ll0"&#)[%)FJAT+KBSY%1q-
+
+#Lk$(&`ll5)dp8K-2ZX1-$%4m#2XplL")Gk0B#Al3k`-HKQc!*KX5C9j2VFB[`3@
+
+j43K6L2U$3F!hB--3GZFLq6+0(N&K#0XL90mG)9[S%bA-q!K`BBk8i'CNq$cm([2
+
+@(1J,meiDB'$84pV5!&p"3PBkm(YJ%)D%56P$YQ&@PLp%r$0MA5MF$`!0"A*[G@j
+
+NFf9YFQjPD@eTG'aTBf9ZFf8!N!NBl!#3$``5&`!-&(8!#YDF!*!%9%9B9(4dH(3
+
+!!,QmlP@j[1jA!*!(0`#3"bd!!"eC!*!'*2Y46RX(Q`'%Z#bK-!PbQ19`''$'"d)
+
+q0r+&-I#(X#r6K`#'16%r4!Lk8,JI!*!$$34bFf9aC(0PEA*ZC@PYDA4XD@0PER0
+
+P!*!*+-d!N!m-%pJ!$"@'!!V@R!#3"&4&@&4dG(Kd!!#j[1jBZEcZ@J#3"qN!N!H
+
+K!!"2k`#3"S)I8FidBhZ3!)&J&X!3H#!A`NRmS`EpkFL0XJ',S-IRjC!!6b)8*N%
+
+1Xa`1!cF)qX-B`!bJYhH`ZB#[,qF1"V0"Q(86'#!hpX13!$X)3Pa@ZJq&K8RT2Kc
+
+eq8,!j,4EJ6[N"5kl$2K$RL!ApNGmb840D3(#$)`#&2Ee"5V3%'K)jMd98#8V'j)
+
+AqYpZ#"U!"[apJp`hq2YQMcANc6KCmJ5&#IF$!*!$$3*bG'9aC(0PEA*ZC@PYDA4
+
+XD@0PER0P!*!*m-S!N!m-&(8!$"C2!!V@R!#3"&4&@&4dG(Kd!!#j[1jEZEcZA!#
+
+3"hN!N!GC!!!i'3#3"VGk88jckcBZi29P)Tm[,(3Z2V%Nc+&3''$'"mJP#IU!*`J
+
+pJDJrl!2Tf6Njc[SmrJbrc`[FSFbJ6`DbI1i`KmMG$`Q6BLBJ6P@S'U8!Q!(F`10
+
+(RU"2NL`8lJF!$30bG@jaC(0PEA*ZC@PYDA4XD@0PER0P!*!+LJ#3$``9KJ!-&a`
+
+!#YDF!*!%9%9B9(4dH(3!!,QmlPkj[1jI!*!(PJ#3"ed!!"cD!*!'[1*4cJifi!q
+
+&-H)mf!p$3AmB#i9*(TL9j3jj!83!XMlNjU-k!%iZ&!DBm3%,c)4,XC`F4G!2X4`
+
+@*[%D03!j6+kBpA+b&!)2$'%h)B-l"(cp@13,K`NImaD1mh5KF$m!$3KbG@j`BA*
+
+cCA*ZC@PYDA4XD@0PER0P!*!*5MJ!N!m-&Nm!$"K"!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1jKZEcZBJ#3"J%D!*!(Y3!!2'B!N!CLV&(1$MD(cTPQ"&')["!&r@%X&#C"$V-
+
+F$J2-q!!I`B1&#@)8p!,N#h0"$2`C1@Nr4%!#$K$PXLBqj"-Qq8+B[$[!(3EZ%-&
+
+`M$J2pX-3JB5q*X$$Z*(E3aJFK$N2`h2m8)Dr(i#X$lNa4'&KNM[N"D`E%C@q,q`
+
+M)V%2K(dNB@%Ib2*PTI2d+,F)@CN1J!f5-2A&NX*F1Yq)B&J!F5'#jU36842*K*!
+
+!VpE0#[Z#%H+A%h5K8,JI!!d*FR9ZFQ9cG@adEQ9TE@PdE'PMC@jcC3#3#E$9!*!
+
+2$"FF!!`CJJ!+eT`!N!4849K8G(4iG!!!ZEcZC,QmlQ8!N!B"H`#3"p%!!0BP!*!
+
+'2X&4cJifTc'YJm8&r+%`4T`(qf%Sk!pMS6!*FD%``)a[DC56BjSCFVJ*J"`Qlab
+
+i3m#AaH*X`,2"Rb&-`J`-Vd!2%I4b(Km)`4KA!a!"GbjcNX0$q3YK8TB[+pf(J$p
+
+AAl)J!m%X3$S*rD(-a4AFp+B,NcU%I4PF%'330cm8mB8`$l4K9TBlj*9$*)HX$lP
+
+j(SC#M'!3j"U-N!![V#@p+d(SF3H"L*a(38cZ!hI!&cp6!qRP[6$-mQ''f(f632b
+
+-h!8-J6D46b$,4l-#I84k6Y0-Z"m!$3*bGfjbCA0eE(4ZC@PYDA4XD@0PER0P!*!
+
+*a0-!N!m-'%%!$"Zh!!V@R!#3"&4&@&4dG(Kd!!#j[1jQZEcZD3#3"J0f!*!'!F8
+
+!!0%e!*!'T#p46U21d-RZ0!LGRB6#*14cHm2!$B,qN!!2C##B"6$M!h`+`TLm$S!
+
+lj!@3!--XKm-NDq&FP-9$*a"jNi9*,N+8"2$c-Hi2C3Cp1@R`4A`Ki-r)X4*J'iD
+
+`fam+Jc$Vp[M#-Q&51R*l!MiFPJ%IpL3$B-kP,6S3@Tirk*2Pe%&aPkr&b`PKA"4
+
+T-ck[$-6lRCH'Y!',XdN"(!0a#1)P'@UT5%V-X8-%55rF&`ETT"FHG)FC'BMi%2C
+
+lh%'5L@-Gq%%[DE2[*ZdP2K3'rT!!-'P&Ee4QQ10UZm0N)ajT8A*(BCmAC%#dH"0
+
+qL(0M2`b434!`hC2B8-0Z6#0kGT!!)f3+5iGX#D%[QQZ4Gk'"-13eF+`%30QBVr8
+
+FN5RCEY+)'``#Acm##mJ!,M&ZL!Lir+SI,UQFfTe0f%,N2`K$iZ35jTK8QFCPD`M
+
+ILdpRX4$Ld[JqaQSJR651GjD8J1*'JL#-NJq+!1@,")CmJ#T+0A"l[F3MJF#2Fci
+
+#`Jfr-$3PR&mlYh@H8cX@$+edqRCT&PeD'k2"`@2aQf%(FTDB-2aRa)CH(q'UL3*
+
+GEiKm$HJ,0+XY#T(G%0-Q'm'2fE``6Z#QElQR,K%+p`-!!!d%Ff&fC@9cG@adEQ9
+
+TE@PdE'PMC@jcC3#3#9jk!*!2$"Q#!!`Ff!!+eT`!N!4849K8G(4iG!!!ZEcZDVQ
+
+mlQX!N!B"3J#3"l%!!%HI!*!'U9"4DEU14T!!i3rk3ZiXRe#Bj)&C@Hk3!$FCJ$4
+
+ha"F'Q2%"Vbr$(r*M2`b&!F`!lQ!3F+&d$[PpAX!Lk2&j1H3,bi4*%6IbZp1$j!E
+
+%!8)`j-YLF6B2'IS3136q-!i$IbK(LibG((GGQ'6XbrNMEP*$!M!N25K*'))`U3#
+
+dLAB`&%#21`K%-1L0)Mrf)6icF!Gm5b+`1)R@BFle5S,lm*V8%**LVq+AQRB3KPF
+
+JhC!!9bMF$`!!$39cBACPE(0eE(4ZC@PYDA4XD@0PER0P!*!**hS!N!m-'lF!$"h
+
+0!!V@R!#3"&4&@&4dG(Kd!!#j[1jYZEcZE`#3"m-!N!H&!!!D9`#3"Y9F8@QkMNB
+
+,m-!3pS9`11J2Bj!!i3rk3ZiXAa*je+!r(EP40Q!4p2Lm(2**K-)N$mc+FSHmb3#
+
+NZ51q--#-$hKp'Ik3!"rlB5J-B%C1*'Gb'BLiNGqG(Z425'C**$[d)C`0H'81`Uc
+
+2imr`ql`J24Z)PYC4!"MQf&!Y`2H#p%+mSd+b8,JI!*!%$3KcBACPF'PMG(4ZC@P
+
+YDA4XD@0PER0P!*!*kUm!N!m-(0J!$"mq!!V@R!#3"&4&@&4dG(Kd!!#j[1j`ZEc
+
+ZF3#3"J'0!*!'!3%!!+14!*!'Fp"4DEU14SGCl`)CrU![j-lb#B9*(TL9j3jjN`(
+
+SK2cB&`EZR$4%rCJ"Q2'"-1[cq$2m2LrJLH#")HcfKrbK6$l0NX,BMAd!CZ5`cT'
+
+ECIbH-+'(AKL9!Ar)%q5m2-`+CB-3$"&Fk(8M,r%))")QXHkJ$a-"6Yi3`hNN@'!
+
+QV"FQPm5(3ZiJb)!Sbie*49h'(`DXhi-j4*U`3X+NG"p![M#'L256`0c#E16cK3!
+
+AjV@2l$S$AlQ!Zc%6)"BKa-3q3YLG6YVZqA#8K`k$EX`cX)F3)TlMBb*SHA-T&`!
+
+5`aL`#*+U"q&NB9+Dc`H-MV5F@@%"EMrH563i@`-D23'cr3#3"!d+Ff0bC@9ZE@p
+
+NC@9TE@PdE'PMC@jcC3#3#@i4!*!2$"h0!!`Iq`!+eT`!N!4849K8G(4iG!!!ZEc
+
+ZFVQmlR-!N!GY!*!(63!!4pX!N!C+X9&THUI4D,2D$8DK-!PbQ19`''$'"k)3HB(
+
+,f0Q95p"!QX0L6K`M"%`G,*EF-hKpV#rNpBFbL8+B3lFjK(`K$-)Hj21&3"EdqT+
+
+&`[d!!!d(Ff0bG@jMD'pNC@9TE@PdE'PMC@jcC3#3#H%3!*!2$"mq!!`Jj!!+eT`
+
+!N!4849K8G(4iG!!!ZEcZG,QmlRB!N!Hl!*!(H3!!c%3!N!D%d&&THQF(Qlk08*J
+
+%1Fab1!cF)1J2Bq#")HcfKrbK6)#M%)5iV(3I#XX!CRbJ-h#([+!,#(X3&r)``U3
+
+-Y`G$2Qf&!4IfH8&k0NJcZQ*b1J$L9K`')BKpK'rK*9Q@K0d"AhLT)dRi)Ei,M8F
+
+#$2Pb+iNbiJKG)K3+p`-!$3*cCA*eEQ0SEf4PC@PYDA4XD@0PER0P!*!*h4B!N!m
+
+-(rX!$#'e!!V@R!#3"&4&@&4dG(Kd!!#j[1jiZEcZH3#3"r-!N!GK!!"EB`#3"T+
+
+L8@P'QmYSdaX"C[bKc06FekS`E@9!A3q5VqXJ16PC`M1qPfC*N!$$,)I$`!f#rM!
+
+'83D'I5$,PjAZ3b38qi#IK2d3cp#!2i23#5!$P'G*)BKcf*L2%-R2m&('6VS%kd,
+
+KIJ!!$3KcC@jdC@jMC@4PC@PYDA4XD@0PER0P!*!*RM)!N!m-)13!$#+'!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1jlZEcZI!#3"r-!N!GK!!"EB`#3"Q&I8@P'QmYSdaX"C[b
+
+Kc06FekS`E@9!A3q5VqXJ16PC`M1qPfC*N!$$,)I$`!f#rM!'83D'I5$,PjAZ3b3
+
+8qi#IK2d3cp#!2i23#5!$P'G*)BKcf*L2%-R2m&('6VS%kd,KIJ!!$3ecCA4LB@0
+
+VCh*[G@jNDA4XD@0PER0P!*!*"Ci!N!m-)E8!$#-V!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1jpZEcZIJ#3"d8!N!Fe!!$UBJ#3"PUA8@P'9bZG[PeVTlf$c3!m-!L4N!$2h)r
+
+G@&,BK`&QI#$X36jI#+5l2B&-",Q3!$HAS!Z&`[d!N!-0"A0PG'*RBfYRFQpeEQ4
+
+TG'aTBf9ZFf8!N!QVQ`#3$``LKJ!-)p!!#YDF!*!%9%9B9(4dH(3!!,QmlS#j[1k
+
+!!*!(43#3"c8!!1TL!*!',[P4D8CA+jfqA@ZR[B20!$``#*'3!-rFMpeB8YL(!@C
+
+m)1a"2Pm)T,XpJ8`%ZC!!0jHJ#iA#r3#3!`d*Ff9dBh9bFfpbEh9ZC'PdE'PMC@j
+
+cC3#3#D6U!*!2$#-V!!`P%3!+eT`!N!4849K8G(4iG!!!ZEcZJEQmlS3!N!B"1`#
+
+3"p%!!$d#!*!'J@C4D8DA[S-ccHi%%Cm(3b38*RPJ9TBlj%d'`-AiJ$r%FKMi`m!
+
+0J[i`"M!$i#J%)5iVhBI#-S!*id0!H*!!cD-Mj2@(h0JAjN%@#(Z3!-mA!L`-ql%
+
+IKS!B)RqQ2d5X"(M%XMi%JVi-c,2MN!!2b@+XX3pirBK83P5djj!!)d!VM#@aAP)
+
+cQd0KdTT#%!-BmAN"KMPQXDm[j`YM%XMF"4FaDEhJ$SBKb)$)i`X,NhLNRjAPmrT
+
+*Gm!LI`Ml3jNj(BEC)*h,b2!KiQ)cEZ6fB&+m,K6Z"`!!$3PcCA4PC'PdEh*[G@j
+
+NDA4XD@0PER0P!*!*jaS!N!m-)p!!$#Aq!!V@R!#3"&4&@&4dG(Kd!!#j[1k%ZEc
+
+ZK3#3"kX!N!Gp!!"Zh`#3"PNr8@P'Pp&JGYQGJ(9M4LK-mX#X,(I)Q`b!baF-KS%
+
+&CN+!)H$#2S!C(`Lc2Smr`qrc!KE"6161!Zi`m1-`m(Rp'#*KNMm8aMkh&m#-(*l
+
+Mbh"c34b,NaD'2)Lbh*K(@$RH5"Rk3Yi`J#'3!!djBK'a2Z6'rP!Q#'F6Rd'b8,J
+
+I!!d%Ff9dD'4TG'pbEh9ZC'PdE'PMC@jcC3#3#9X$!*!2$#84!!`Qh`!+eT`!N!4
+
+849K8G(4iG!!!ZEcZKVQmlSF!N!HN!*!(F3!!LTS!N!E8"P&T4PFESmjJYV8'APm
+
+Qm[R#3Mk5(eN5jP!S$$$M!q55"-PV"0`Jj)X#GhSB"MRX!ic2lI@(-T-"F"'-(f)
+
+j$2aKB4,"M,,5I8L@JdmTQ-rX`"1%RN$8(rD"$!5cFLK$'2CMIm3R61S#h2hmi@5
+
+KF$m!!!d+Ff9dD'9KC'PZCh9ZC'PdE'PMC@jcC3#3#6Zq!*!2$#Aq!!`R`!!+eT`
+
+!N!4849K8G(4iG!!!ZEcZL,QmlSN!N!HN!*!(F3!!LTS!N!Cl0&&T4PFESmjJYV8
+
+'APmQm[R#3Mk5(eN5jP!S$$$M!q55"-PV"0`Jj)X#GhSB"MRX!ic2lI@(-T-"F"'
+
+-(f)j$2aKB4,"M,,5I8L@JdmTQ-rX`"1%RN$8(rD"$!5cFLK$'2CMIm3R61S#h2h
+
+mi@5KF$m!!!d+Ff9dD'9XF'a[Bh9ZC'PdE'PMC@jcC3#3#4[2!*!2$#EI!!`S`3!
+
++eT`!N!4849K8G(4iG!!!ZEcZLlQmlS`!N!IB!*!(N3!!T(8!N!CXIe&T4PFESm9
+
+KXHX"kmD-8*MNJ9PClT!!0aN!PbmB$!-,c)3!3a#%-!$m)B!C(`Lc2Smr`qrc!Um
+
+Iq6`BSQb3!!&46YB2NF[!MId`*%aL%Bci[B66bmi*Nb[%$$@#iYMRpJ+BN40fI"P
+
+Z,SJA1qR#*"I*54qL@$NP)@MS#hR$!)C!0Z33J+`2%H%`%i5cLG%J@5MF$`!0"h0
+
+PG'PdC@eXEf0eEQ4TG'aTBf9ZFf8!N!R*"J#3$``R`!!-+F)!#YDF!*!%9%9B9(4
+
+dH(3!!,QmlSfj[1k1!*!(f`#3"j%!!-0%!*!'kf44D8DAf@@d!Rr)kqX(h!LjXd(
+
+%(H4m3Q'5"fCPZ82HC!#F2MESp[M#!$-q)-TK&6!$XRaCk6i%B!B3jC!!#b$U*c'
+
+#K,kS-%Q8Be)J![ZK-)Gbq"E1bH0a&-6q8'E-f3q$%-6!idFH,ZK'-Z"2pLA,%JU
+
+3!%8B"1MjJ"X%r@%-))UKKC-03pMY$iAM6HK#iAi!N!30#A0PG'aTBQa[Bf0eEQ4
+
+TG'aTBf9ZFf8!N!PF!J#3$``S`3!-+am!#YDF!*!%9%9B9(4dH(3!!,QmlSqj[1k
+
+4!*!'!83!N!IY!!#563#3"X&58@P'PmAFbQ,A!pD0'D%`b31cXY`KEc)!,Pm`'!B
+
+@Q!N"KS!,q`"QI#$-qMcq$,r2#laqj20JL,+"1`cm1!b#rR6N4YR#*(mSM(eZ,i!
+
+C18M(Pq(QJTJSU6D)H3d,!b*jN5YAB*%rbirp%Cm)X!KkI&i1qF,#*$Ib!EF(Fqj
+
+J-"YN3#lN"Ij3MP!UUS%`UDE[bbBb&b$G4kTc!4Gb4pcqS$Xpk!2q$'&50Z33#2Q
+
+LF5KiS5m-3K!6'6[)HA0D(G58N!#qdFb$+)Z8Jm9C1B2!lSDqN!#AY"'&3)j+a2U
+
+3!"[l3jNJR%eD(L3,KIX"!*!%$3TcCA4YBA*RD@jcG@jNDA4XD@0PER0P!*!*ZRd
+
+!N!m-+F)!$#eF!!V@R!#3"&4&@&4dG(Kd!!#j[1k5ZEcZN`#3"J,e!*!'!Fd!!"a
+
+&!*!'eL04D8DA9HGXEEDPJBM2Jb%5#T-m-#[,(I)Q!q"LI-!IBMN-XVJ`"ZNqi!C
+
+"2lP%'3"()3Ka@HNq&*B"GaKN%,C#G)`1cM5l-`Ch-c+)&IM$!%2J#IVF#'!5ial
+
+Nmi8!ND3c(Q,N$QAkFKfXB""NF)J%Bm!LI`Ml3jNm(Zdjimr!2Lr``QL-(ZAia2j
+
+-"J1ha`14Pp"B8LcRKlaqMjXR$Y`Sdam+NeT-eZIaCj!!@"$-PJ&Ia)Hb!ICRmG@
+
+'[QM3(r+4"I6Gb1h"T!"X6R5!#UU[(a[dHr`iQ!dJ53lLeb+``%`)SRj5A*,0%[k
+
+([A*p)Fbk26jq(pK9&)VCqU%)*+hi*)!lbLFM'NYlBNNj0M3iad[FmcjTLarQk&`
+
+!$mbT'rZPAY@BK3$(2KBL6(D!8*Y$BG,A%)Ep1Fka,dMNalki9+UXJ6"rYc"j`GE
+
+&e)3-5b)eB'Gqf*mHc+'+ZSF)CL*h9MKCNM[e)BH)ST[cD5#"p#XLYiqVaR%1XU#
+
+AY#@X(AqB$EV*NK$RSLa5Ba$l,(!L#d(bf4JK(f$)6$QT)@'%5B6Kq2Tb[%'h)mL
+
+#)6rjAU%GG6E`KrN,e62-Q8IJ)r@jhNaI1,F4A+A8diA#r3!!$3TcCA4`B@aPG(4
+
+PG@jNDA4XD@0PER0P!*!*!fm!N!m-+am!$#m4!!V@R!#3"&4&@&4dG(Kd!!#j[1k
+
+8ZEcZPJ#3"J(d!*!'!88!!'dN!*!'k6e4D8DA3fFaZPa'i)&"L%*F9VS2!C5C([5
+
+(X9#B&2EK--#-$lJpQ(-(FbRi&L0IQ)8KVcq8#6!%ET!!kBri3L#AV`&r"R!(Jc$
+
+Umi,dE'%5,p"h)fr8MBK*k!@3!28K0qEK2$Z-I9R*!1LAq!qi-!ET2!Vm)Hc,p#&
+
+K8LEbZ6(**Ja*B3GZAli2G0mKF08#-b(!b1mME88Ji21a1DejIN4-GR*Vim)N$`b
+
+&X6Z%Nb8!Z%LHqdM#)C*$$J0rQ24)[32-)26Bj`-K'!Vj-NP6Beqm#E3)I'&q&0M
+
+$9S0f30bSB809)`N)Xck22b-lCa%dQ!(N3MNUXFmV!k3q0b6,+EmAj(JE13[(&rB
+
+6J'`)Qk4@,VH'3iZ#(2C$dRT)q"FJl1&GX#k@a#+BlNi2CS0PP@JJRG3T*X%pEK)
+
+&GaL%I$k[cjXX&1i(!*!$$39cCA4`BfaPG(4PG@jNDA4XD@0PER0P!*!*STB!N!m
+
+-,9`!$$!D!!V@R!#3"&4&@&4dG(Kd!!#j[1kBZEcZQ3#3"q`!N!HC!!#h'J#3"Ne
+
+p8@P'Pm0SdpXYGLI``#"%)5iVhBH%I-jBPQ"*B4m1!mci!1X,j8B"`jc!Z6p#)K+
+
+NJ5MMpc!JL`YMN!$Z!fi3JU'3!#r6M3Q%*IP$f*IT3mN!k(--eS!r$0c"U$Xl$0+
+
+$ENqJ58aYHdN3M4)I3Ci3f9LBP!2J)-ZG$3L)AN1BifV$80JIaVi3IdfL2P,+`1e
+
+Kr#&I1&NSh!m!N!30"R0PG("PEQ9dG'9eEQ4TG'aTBf9ZFf8!N!PRC!#3$``[%3!
+
+--5F!#YDF!*!%9%9B9(4dH(3!!,QmlTUj[1kF!*!(f3#3"jd!!+`h!*!'*D94D8D
+
+A`fJ$3AmB*q8mDY#IMY`S'l!)HRaH$[NN3Q&5f)I$!$-q`2T#pF+!K@%rpX13!!a
+
+N3Dp2"Y`K,f$Fb"Ye)jrFkb-3aaI#`%-bPJIl%,(c2@&KNY[MJFMV$f8#$(0dr&!
+
+'4&PZhJ9[D@6)iCa#0""Pr"i'K"R)"EdJh3H`1q!,#C-b%-`LcZ"cSk$IK`Kb$$f
+
+j%P%')(hU3Z&q!!!0#h0PG("PEQ0[E'pbEQ4TG'aTBf9ZFf8!N!RZT3#3$```'J!
+
+--M!!#YDF!*!%9%9B9(4dH(3!!,QmlTkj[1kI!*!(l!#3"jN!!,FD!*!'rip4D8D
+
+A`fM6fbef*r$!)%3K,L[GKi4mcPL@B%PK(`i$c2J!k`[P4J($R-#j2d)L%U5"+12
+
+h-##,#f13!1i$EK##SC!!,p10#B3Pq82BPqP$b3$SF`c@J$m-h-'S1cX-dS0Z6k"
+
+*6'el54#0%Kp"RK$C@*L8!q!Jbjd0#)KH3jMMDX03f"r'[K"r6D)q8XV!l@(m)9m
+
+i@5MF$`#3"!d0Ff9dF'9ZF'&dG'9bEQPdE'PMC@jcC3#3#IK0!*!2$$%R!!`c+3!
+
++eT`!N!4849K8G(4iG!!!ZEcZS,QmlU%!N!Hd!*!(L3!!+SN!N!CP8e&T4TI$D%X
+
+cGc@#X,qr6jKlEqYF,U26"PJhaMi8%JU6`Mi-'$Ib4Yh)*rIk@&r)k`YK30l"3h+
+
+@Kh$m-2Cl`XN!Z"KIf!Fm-#[,(I+'!8'bT"$%)*-MT"$lI&iqM(*qHY!(dRdikL-
+
+HIKBEp'84+ma&S6#!)H$eCf6i%)Q`T#bhKr'(I1&NSA!r!!d+Ff9dF'9ZFfPkC@9
+
+bEQPdE'PMC@jcC3#3#6"D!*!2$$)`!!`d)J!+eT`!N!4849K8G(4iG!!!ZEcZSVQ
+
+mlU-!N!Hd!*!(L3!!+SN!N!DhH&&T4TI$D%XcGc@#X,qr6jKlEqYF,U26"PJhaMi
+
+8%JU6`Mi-'$Ib4Yh)*rIk@&r)k`YK30l"3h+@Kh$m-2Cl`XN!Z"KIf!Fm-#[,(I+
+
+'!8'bT"$%)*-MT"$lI&iqM(*qHY!(dRdikL-HIKBEp'84+ma&S6#!)H$eCf6i%)Q
+
+`T#bhKr'(I1&NSA!r!!d'Ff9dF'pcFfPkC@9bEQPdE'PMC@jcC3#3#6)I!*!2$$-
+
+T!!`dm`!+eT`!N!4849K8G(4iG!!!ZEcZTEQmlUB!N!Gq!*!(B3!!,h!!N!Bk$9&
+
+T4TI$RJCB'"B+Nl*Ja"F'Q2%"c#%F*+m4F)H!1cd-JacfJE!(qA`K(ZCM2``P!q!
+
+L,$r%FPLBj!m$0`Mk`aM!$)#M%)5iV(3I#XYbK,j+4"c3"AJJ4&jrb)epi@5KF$m
+
+!$3PcCA4`FQ9QDAKPCA*ZDA4XD@0PER0P!*!*D&B!N!m-0#)!$$D3!!!+eT`!N!4
+
+849K8G(4iG!!!ZEcZTlQmlUJ!N!B"c3#3"J%Y!!#pTJ#3"K*i8@P'Pm0T0*NlJc"
+
+'rP#Q8*MNJ9PClT!!0aQ!0"m1!cGJN5r$h`pJaSe"e"m-JR3Ii-)q,h#(5FJ&rL`
+
+fk2Ii-FQGqd-KhN+"'5$$(r5&h&Qq-2#(J0eKY$Q01S-Xjh,U0,Z-ZDHkJlbNX3F
+
+1Jil2(GN*L#@4%L"0ep%)BSe`8XN4c)5j*3`jR'0[X5b#,2+lX3q%ID`EZ6&%T-8
+
+qZGMBKi!i((5('C!!!4(S%2,hNi&dYbH`101`TbNkq80H'!h,L'N!3hb-*9RG(RZ
+
+DK(5D4(fq8)jU1J6UKFjC`H!,%8rF3bml*iIEL*1&55jq'Q&164&B[,-"&qDAJVZ
+
+D3159!5i8p)A*4K,Jcjf6QmALE"$dKc(C!++a'pr$YbX'L)5B&0f(A*!!#,XJ"'1
+
+ek%,KIJ!0"h0PG(*PB@4TH'9PFQjTG'aTBf9ZFf8!N!N1'`#3$``dm`!-0q8!#YD
+
+F!*!%9%9B9(4dH(3!!,QmlUUj[1kV!*!'!AJ!N!IP!!#&fJ#3"ZTr8@P'Pp1S-i!
+
+-Ip!AFQIjK-)N$mc+FSHmb3"Bh3&I''$'"rLSN`-4jpMRpS)`*Um$'H$#I$4#J"F
+
+j-UHjC-)N(rB3ITHJ"(2!K6&`"hRX"8Mh!FMk3L$Ua`b`1ibfR!+3!%qh"`k$cQ8
+
+Nl'D'-)PAp8-XKi%rY`BhLmAC)1J2BaPr$eH@J@lBRZ`-m5l+mSIF34P`KdP,)hH
+
+3!(JCM$Z8k3pPVN)lN!"`3iL"*`M$16@cT&MK&JC4SM"%[SJIFZ&JpZS4F!Mm168
+
+0B6MX6qHaN6$*(53GK'lX)m8N84mTM)aiXP#i(`#3"!d+Ff9dFQ9KC("[Ff9bEQP
+
+dE'PMC@jcC3#3#58h!*!2$$D3!!!-14)!#YDF!*!%9%9B9(4dH(3!!,QmlUbj[1k
+
+Y!*!'!6i!N!Hp!!!D33#3"XLj8@P'Pp1S-cMXDF$$Z"%,`d*KNJGQCEP$hQ3!dR`
+
+i$$$M!aRqS!q`d"r#2J4J4NiQpVQp))c*kb!hcb(*@CJ2Xk53!+mI"VcEN6R0*3-
+
+ql%Q@JDJr'!6T[Nar+)IZKc*",Jp%-Id#CR+DX$c%P#848+D[!3rN3TKRHJKQJ46
+
+5MqVLIIf`$#`TFLeANf-h`X+NZ+GJNS[3$rP)fL2*k4)!V$ih(`Ymi6$`,kkB*F8
+
+kpR1RJ,d-r#&h-&NSh!m!N!-0#R0PG(0MFR9ZBfKPFQjTG'aTBf9ZFf8!N!Q6p3#
+
+3$``hj3!-1jX!#YDF!*!%9%9B9(4dH(3!!,QmlUqj[1k`!*!'!iX!N!B#'3!!3CB
+
+!N!BVF&&T4PHDhYR"TQm$qS8plU!2C1Hm-Q'5fpZ(#q-``)`2Z-1Xci-"FQ-r"1k
+
+3!"I`%$q8#@"'6[iFZ9R'l`N$Vcr-"YhCbF)NA3Ef)4,f`m!$Xl*i+*j'BCpA"Yc
+
+")-MJ%#%M!Gp4H`#*@JLLIK,YqH,fVKHNCi-X,SMpE$#E&bEE2N6qrM#%hF'F,XB
+
+qK2fN$r$e`li3*Tf`*"k6+U%!AC-S"#%Z+pf(`L$6(r'&5+RJ$l%F$LF$B)+)i+d
+
+X0ZL6%IQd1jF!1%DF*dHNX'3X9C!!+SS,@KLi!H0cHh-(`C)D0!4HAbEbqF+jI3j
+
+JK2Ih2Ib3!#$$MCBd''6cQDc#J&p1-`0N3`k"F&r1MBL$!d2e-$mL&d!1af)D`)J
+
+[eZIE8h9"8PK)eMRf"E0*JFJ(McY%DJMmT(%,NaKNqF1jUhSkk33#,h*(bCc!&`c
+
+kfE![@8)q!E5+"b&r2j!!jIB`rK$TJ[E@FR[m)3c$M#mX!qN3-cPI!jF8Df0)eSA
+
+Yi'jml-pTYd)D*Bq'25fKJH9K!pqRFKmCPHf"L"m9cMN#8BEX6+cI3YiS6l1$ERr
+
+@QZq6cpH#3eR!@&+Bl#IaCj%1!lq2(dfAa-IZ)%F5C)ZILIQqb5rfCIRil`9qK(b
+
+bFTD8i5GpUIa--C+5G)21*FQC"5%Y$X-X8S+B-T!!E`Z5X6Xh)i1[Cm,i3Z6M!KD
+
+B#BNc$qGmRYa-mT(4KF,p!*!%$39cCA4dBh*eEQ0SCA*ZDA4XD@0PER0P!*!*0rm
+
+!N!m-14)!$$fF!!V@R!#3"&4&@&4dG(Kd!!#j[1kbZEcZX`#3"J,,!*!'!C%!!%h
+
+&!*!'TlP4D8DAbpMCTEGEl%k3!!'4,a0",Z3&k@j2)2I%H)5a)FZ52$!Vbde#DLG
+
+rb!ZMBF!I'rBdi1Z(I5'[c`YJ+*JY53E!aIL!2m4bQ$"L(r$!)%6#T"#APHj$B4P
+
+`KhP(`"c#34r)4'k@mA[#K([!NB`,@132BAmS%f!)-&&*L#"%Fk4C8Y3I$!)Z6&+
+
+Bj+c2imr`%hAK+,hQrDNma'EFb1h"4*dPjDLjANP1Gl0f*BLcESm2N!#c5mVT3q)
+
+i3e1Y$m+N&*D8jY,C$2B1,P)*9K(l)Mk%ie8j[J`h&b6R@@9T0FK[KRJ'5eUf'CA
+
+cT!GK*NcfpI0*!((KIKL5aI[d#4*4h)0m[K$)JPiI[bL@&24Rq8Q2T*h1#P,NMFQ
+
+dX%[41H&T3KE,"[fqF-id48PSNmm!dNN'D8-%b3S(-K##L5CG$`0jJ5JMYm`NQdd
+
+!@4)CB%`D2IEjb6N'1A9BQ$5A#bqf1i3S*iXZR+661PN5hkF'SQ6pIH!Rh`SEFqi
+
+JkFP"lLJaiBP[!qi!4aMbB9dS&1i(!*!%$3TcCA4dC@e`E'pMCA*ZDA4XD@0PER0
+
+P!*!*XPm!N!m-1jX!$$kj!!V@R!#3"&4&@&4dG(Kd!!#j[1keZEcZYJ#3"rJ!N!H
+
+Y!!!mBJ#3"Xdr8@P'PmYSG9MXHX#k-5-8*RPJ9TBlj%d'`18,"X2!!M-K`""%N4r
+
+lJ-rVaa!"l-YL)A+ME*!!i3rk`X!I!TMaJ6$VmrJcr$k[--RV4ci239d!4,aFJZb
+
+l3h'1imY`Fd%-%K#dr4VN3"BAaS"a4hbjYLb*pD%XIcMXKb'3!-&VprhKCG!ZNF(
+
+J`)d"c!$ZR!l4EZJ,HF1!3#mJKi4*N!"S@0JIbJ6Kl$#T6KF+p`-!N!30$(0PG(4
+
+PH(4MEfa[FQjTG'aTBf9ZFf8!N!QUj!#3$``pR!!-3,S!#YDF!*!%9%9B9(4dH(3
+
+!!,QmlVHj[1ki!*!'!XX!N!B"N3!!6F8!N!BE29&T4TI,f0QPYe[X6T!!!C%[%d%
+
+Zj!ATENmJpm4iK,%Kbj)m-#[,68*U*hr)#k0K`"mEpM6JkiGp)Dr2#f!SQ#e*"X$
+
+&q)!ra(+B-')Im-!J4-+N%*H9lN0K'A#(H8I!(-*"(mK%ETEaHm+%Hm#4M!YBj!p
+
+KIbJ6B!J`88Q))%4cT&P5e"m-!Lj-8TMNV-rMcr!6GH%S[HEpU6c%CYc)lF&%R5A
+
+PU,PH58jhXhBPL,0ZM`q3!,0,bZP$iMK$8kd2`U38PT6QdYN-pJiZ8JP@%IXL2S6
+
+M96Qq$$FA*1GCC@Neb'q'H!C,@VBCPI1N"f%Q62EemdN!FH&q'*,&qr3*%P(FJhb
+
+q%-L#AKqr+*B8p'Ij5BqNRFi+8Z50bE5`5p%ji@P#&XX'rEj`cM4&5@L6c`$553C
+
+T3`6*#JFb%)+**Pd2!hQ"+#1hc#5E63"C%KPJ6"Spp[R*13BjG9LB0*F,,lBlK#J
+
+RLbkFT0-k@4,IT`DLC2epi#II#KYclL$Tb8(Z+$(KL@m$lJ"('2*KA5J8lJF!N!3
+
+0#(0PG(GbDA4PEfa[FQjTG'aTBf9ZFf8!N!N'4J#3$``qZ3!-3YX!#YDF!*!%9%9
+
+B9(4dH(3!!,QmlVQj[1kl!*!'!`X!N!B"X3!!3&)!N!B3iP&T4PFRTpPP""RqS#r
+
+Nc[)*K8NHQ*AP$RQ6!E#k!li``)`2m&%R"b,1%q6(2K$'b1I1NJ%Zc'FM""a1Xmd
+
+P%bEjX)I3Z`3NL!-ZM)%l5'"10NMh!FMk3L$Ua`b`1ibf((mYje4hN!#AKJa!*%c
+
+Ll`mF"Th,5&5D'6RDISMP-2$R9Z*QX6JE"2eK,12[iDTL@&+kMh5C0TMi8*Brj!l
+
++J$Y-'KZjJfZmV+8q2Ji,Nc,mL*6R"ReC[K$1E4)EY%$%MIcZG&)Z,31G3Lr2Jc!
+
+aaK1G!hFBNbNm)3pKf)rp%Gikm@Ak8"15kA%C'6i%)&q(4@"@+*[XX1p'EJrTMC1
+
+a"-%FHK#%(MIfHA10daL92'YIPPm6*NAj%Ud3*-NB*)D1,6X`4#SM)*D9N!"fH+k
+
+j'qp"*41a3X)N,X5k%6rZ#84%HF,i23`Tjb+(DrP$)15,"[dKiT&A99aD#N[LTFE
+
+Z)%G',`hPKb4E$dl3B0bK6(mSFp9mX5DA$"$l!dm3KR-E6Vp!Z*%*k@L)I"%rj-,
+
+"l$9I*3l*)V&ZPN3@arhm9K0)&S3YK@4#@&%5pC'&N!!56aB+p`-!$3YcCA4hFQP
+
+dCA"[Fh*ZDA4XD@0PER0P!*!*4LF!N!m-3,S!$%3)!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1kmZEcZ[3#3"J%r!*!([3!!m*i!N!BlKP&T4PFRTpPPG0M6J)Ga)aD'KF)N$mc
+
++FSHmb3#NqA!BB-B(-[a"(f#K2i4p#-#-R-`%qE%2K$(bZE0b!4b5S)Aj0%X+qIT
+
+Ki(#DE5iCm'&2XJa%rF%J52GPqN-jE$q8#A*K))V*&c#6di2P)CiXLB!bH3ei)"I
+
++BAS)CS%8dSlUiQApX!`XlA%Yej0M0m,#T,LSJ*+-m!rj5&SMfHN5!+`q0am,I1%
+
+`m#pTQ#A&+[CcTi$0$2`KGc"C+0`2!!!0"(0PG(KbDA4PF'pcFQjTG'aTBf9ZFf8
+
+!N!QL1J#3$`a#f`!-40N!#YDF!*!%9%9B9(4dH(3!!,QmlVqj[1l!!*!(N!!!N!G
+
+K!!$4TJ#3"SS48@P'9fI3c`148*L8"51q--#-$f!1iD!2-"$jqm-3GJH$f5!$`5c
+
+Jaf%!Jel!`V!Iqf%)B!MF)15,#T2Fk@%Bj2"5+RJJ4&jrb)epb3#iL*JIBMN-r,Q
+
+@L)A1`U3P%#EF$`!0"A0PG(KjDA4PF'pcFQjTG'aTBf9ZFf8!N!QHa3#3$`a%#!!
+
+-4DS!#YDF!*!%9%9B9(4dH(3!!,QmlX+j[1l$!*!(H`#3"f%!!$eZ!*!'(pT4D8C
+
+AjbkJR`FLN!"0ATJ`+3Y'I''!'4r!(-*"mKS"G`Lidm-`b'%I#(Z3!-mA!L`-ql%
+
+IKT)"F2'X#43Qq8-XKm2!MA`Ja'@Pqe"BPL2b95,JJ#l!!b(bqN0Zl!XR#iAl!3!
+
+!$34cCA4jH@PdCA"[Fh*ZDA4XD@0PER0P!*!*XXF!N!m-40N!$%Cl!!V@R!#3"&4
+
+&@&4dG(Kd!!#j[1l&ZEcZa`#3"i`!N!GK!!"ljJ#3"LXV8@P'9aH3!1f"5#K-bS)
+
+4AaKJaJF`Kh$3"b)qK2dHGc#B$6)3c!*q(!B`k!8X$2Za(iB!KX!03VkS--QG(SC
+
+"$LpQJJG#j2@(h0LA$)#,52NKPX2!RfZ)81JL6&S#BF,p!*!$$39cD'9XE'PdCA"
+
+[Fh*ZDA4XD@0PER0P!*!*GGF!N!m-4DS!$%PJ!!V@R!#3"&4&@&4dG(Kd!!#j[1l
+
+)ZEcZbJ#3"J5*!*!'!R8!!)CX!*!'Ee!+6[(Nm33C`'3P!lBHZCA3)f0fC-,H)mF
+
+NYc*#bG%"i8H1'ARJe32'[i3#V!#h%S!"03Rk%3a89pF4'TN`JN6QVDVRYGlrZ0j
+
+XU21l(EZqAAimdm'(IV!mVYUfHA5p"(TdjR902UGp6T(5*"3NCT[)$a5bFmD0Y*M
+
+M&m54Q1)NeVE0I(4"Y(a!l+QLL46&*8UH,VI'AFCT6FiRkZ*%2T!!4mA30Qb6"-I
+
+*[%Lm@"(G$+AlH`NQDj!!`4EI-C&a*F#iQ%,ZN['ZEDaaXUD50p$4CcS`LM0YZAZ
+
+1PP'iQcK`KaTR*PUL!&aVBY[X-XVP+26dT1HM)!84EaA5&(`H*pVidAq+X)09'q-
+
+5HS%pd,G0eHG%$B8kMhY6j2&1D#Hl,8)(m"IZ*Q6JD"3([%PkfKlEjXcPj!#khBE
+
+H1!l'(QYXc+GX0!fbKkQJ@JS3U`j[RP3LN!"$R5lmp+TN(b5Sj0`$Z`+kZrjkYEQ
+
+jId$KQ`&Q3KAJJe0ZCMT#8VG'j-LKYa+MES2@H@'E8E8qPVKe!9A0r!ZT$0!I4Zq
+
+)6(U$dcB(NkB#jlrEZb[!ZAlPhGl+CdaAdd$9RSpq1)Jmkr[FC6!"$Y5[DY1[(SV
+
+peJM"(,E0``3Xq&Qm4bh8I(P01K@&6,dYV'Dkp@+TNpTiCiqVkY*mADY@"KIRDEf
+
+k[9p6hGqb$,2BG3lCNGqVreLb,dSHP[3JNf,E922!K,A$H46h`AH`$b1baAR[*GC
+
+KpGE+$+jZ0a"pc+NLdBRqb4efbqXL)k$c186X*pKS$E3E!b0[Di@@f4A4G93jB1&
+
+1I`@dPIjPS"F*%HLdb12hEcU1P!Ye!2YrKFEY2`#3"!d%FfK[GfaTG'9`Eh0bEQP
+
+dE'PMC@jcC3#3#G4T!*!2$%Cl!!a+33!+eT`!N!4849K8G(4iG!!!ZEcZc,QmlXi
+
+!N!HL!*!(F3!!Bq`!N!Ek!P&TEHbG!'EmS8bKH2'YN[YD"FQ3!a+K--N$Xl,F)@m
+
+b!!lN$q%`LE[!(f)j$#$+2A!3p!Gm`1%dfe`bi1[RmE'BB#`X62*R!(FSK[2$`%e
+
+)R&c%FFMlZ&k5jRk[$i6lFQlN!qR)l3RiF$KC+"6Z"`#3!`d'FfK[Gfj`G'9`Eh0
+
+bEQPdE'PMC@jcC3#3#IBa!*!2$%PJ!!a,$J!+eT`!N!4849K8G(4iG!!!ZEcZclQ
+
+mlY!!N!H!!*!(A3!!B*-!N!E9aP&TEHbGE!jKcZYE3Q%5j$$,i6"`16XBJ6m$B-B
+
+(-)G`d!ImB4"QB$3%a"&rf*mHp%PN`+5cT-8j,'NaU1rhHRfKC!$5I$l!bh8l1&d
+
+@)h#([+#0f@$-2HY#iAi!N!3+FfK[Gh4eFR4XCA0bEQPdE'PMC@jcC3#3#@S)!*!
+
+2$%T"!!a,U3!+eT`!N!4849K8G(4iG!!!ZEcZdEQmlY)!N!FV!*!(+`!!8Ld!N!D
+
+iEP0)6eG899*86%808e30$3PYB@YPFb"dD'8JG(9bG'aP)(CTFfPLE'8Z$3d!$30
+
+cD@jhG(9bG'aPFh*ZDA4XD@0PER0P!*!*pm`!N!m-5`i!$%a1!!V@R!#3"&4&@&4
+
+dG(Kd!!#j[1l8ZEcZeJ#3"dN!N!Fe!!!ah3#3"XT48@PQ'r$k-T(2&aB+Nb#(@3k
+
+(!@Cm)1`2q3$-!(jbpd-NTS%SirF``%rb9X!A)UN-V3Z&q`%!$3YcF'aTG(0MFQ9
+
+PER*ZDA4XD@0PER0P!*!*)G3!N!m-5kN!$%eV!!V@R!#3"&4&@&4dG(Kd!!#j[1l
+
+AZEcZf!#3"qN!N!HY!!$QkJ#3"Qd$8@N1LpQ9TRFDM6CK@TT3Q)4mES6FS8aI''$
+
+'"m,qrMlJ$RN"#m0ql)FK!$0!e"rb`LJ"4-!G$-)S#--X(d!3CS%-L)4*f0F2!hm
+
+)qj!!fj2$R$$q)0%)`K!%I$l@(mS%@6#-H4H52%GZP[&l`M%aPK6aKrhT39mb!#i
+
+5GhcBl3q'JGHINH&$`*d&HElPBI`KAjJ`$*M&ZT%2Z)bGie8UI'8((5b@h,XZ&1i
+
+(!*!%$34cFA*dG(0MFQ9PER*ZDA4XD@0PER0P!*!*3f-!N!m-6%i!$%iF!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1lDZEcZf`#3"dd!N!G"!!$Lq3#3"VK*8@RYR5i3iV+%`L6
+
+)BCE$BB!C(`MhjGc)"a#%'-#-R)JI)QN04"QrK`&CA"L$G"m)`9$)PqR'rSJ[@5M
+
+F$`#3!f3!$3*cFh*dG(0MFQ9PER*ZDA4XD@0PER0P!*!*bf)!N!m-6@X!$%mj!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1lGZEcZhJ#3"qN!N!HY!!$QkJ#3"MdX8@N1LpQ9TRF
+
+DM6CK@TT3Q)4mES6FS8aI''$'"m,qrMlJ$RN"#m0ql)FK!$0!e"rb`LJ"4-!G$-)
+
+S#--X(d!3CS%-L)4*f0F2!hm)qj!!fj2$R$$q)0%)`K!%I$l@(mS%@6#-H4H52%G
+
+ZP[&l`M%aPK6aKrhT39mb!#i5GhcBl3q'JGHINH&$`*d&HElPBI`KAjJ`$*M&ZT%
+
+2Z)bGie8UI'8((5b@h,XZ&1i(!*!&!R0dFR4dFf0bC@9ZFQjTG'aTBf9ZFf8!N!N
+
+lCJ#3$`a1(!!-6p3!#YDF!*!%9%9B9(4dH(3!!,QmlZ#j[1lJ!*!(+`#3"bX!!&)
+
+Y!*!',RY65%pA9&959%a&$908$3d*E@&VCA-JG'KP)(4eFR4XC5"fDA0TBQaP,Jd
+
+0!!d)Fh4KEQ4[GA4PC@jbEQPdE'PMC@jcC3#3#A!l!*!2$%mj!!a5N3!+eT`!N!4
+
+849K8G(4iG!!!ZEcZiVQmlZ3!N!B%'J#3"J*0!!#Rc3#3"bJ+6J()!a"N!*-C2A*
+
+i*Q&'"S`F1c+KK#Cj5SlG@S5YaiiF)c0J[#Fq*43I`%8!2STRH)*q"!-"A%NY-QB
+
+%IF`$)!"kAQ4rZ0YpHITjS0`lIp4DK5Q28dl%0)GSFFDjSENA6f0d2S[&VaX'iR%
+
+8MM5iCd')N!$cL+9fbPTCPmD"&l%iST6C@j5L8l"#9fdBE-G''SVb)M%*[6JVSD%
+
+3dC*c1D)P6&'V,2(N2!pNJb6U%,"eZEiK1U"c*@5#cqamSLh[A4V&Z-iCV8jmG)C
+
+-cj%0cN%e9eLY(*hh!%iS41,Yji+UP6`,3$Yd3FLCYeDSIU)V6Z3kZV#G8XNrr2l
+
+qF%fKZcK`CV0k9,V`-215Y&U0DJL)dI%YXB5J33SRa1)U8Pj''!+Cb%%FAT!!BiE
+
+*LPCTK$cS"'aV9)($14F@&mjJX!YC2Qd@Rf'dLeD[`Xqp'i5qKQ-SrH1dqK!m(KL
+
+pZ9GG(f0SZ4d@mL&6cbrJ81"C55l#"1Nk-8$9EFU8&SbX$@AeipcS"K[cj#[mEf`
+
+3&e,Ie'pB8ZIQ-KPJp`cVm(J66L0Re`,Cl(+r!TJ`(kMfj[IF"pcFlHmI(c%-'"b
+
+%(k0J9d#LCdqh(ckZJND"1G*SKE'T61'+kB-cJ"rJh$2XU5*M@R+F6(E"DkAZlhD
+
+2Zem22rB2p,iZ(Eb!MaZb99Vake@9C"f-`ZQ#"3+h!C9"!`5+c1XBr'YkUe@8P-(
+
+Vh%NkRJD)i[)%+@!EeJXqQrlL$X#[''`G#m4U*ApbC2M!)l,qDQ2B&lAEep'$TIm
+
+"!*!$$3GcG'&bG(9`G'9PER*ZDA4XD@0PER0P!*!*Q&`!N!m-6p3!$&0Q!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1lQZEcZjJ#3"iX!N!GP!!"i,3#3"VmE8@NZRG29`C'8qkJ
+
+40r+ldi-qL9#Bj-m!lR$BRaRbHB%E"2eK$#,Z)1F$rK#jHrkJ$`5Kfd[5[@aJXHX
+
+--S!CG`,#K8Q))b31h#'#j"Ka(Zb(S4`4+`2l%-&*"6q8Q5`8lJF!N!30"(0dCA"
+
+dGA"dC@9ZFQjTG'aTBf9ZFf8!N!PV@3#3$`a5N3!-91-!#YDF!*!%9%9B9(4dH(3
+
+!!,QmlZLj[1lU!*!'!Dm!N!B"$3!!bd`!N!C$BP&T,U-$H'!)qd)i(25(X9#Bj)&
+
+C@Hk3!$FC!+XE"F)!-ci3FQIj[-#2I9PKN!!"%3KM(m[k3jN%FXVi3Vk)$`&hEXV
+
+e#T0B"$dq,iGm`"m'rP!%"RaH'I#j23bjFS`i$rE$%!Mk3i33jKM1N!!pk-d@*K(
+
+`%2P*-3j)pa&Pc,P%'(cpI"k1T$4!1J),c)3Jk[EMh&T)C"3QA543Q)5c@4mT*I4
+
+&Fc`YR"02I#M,(h)(5A0eN!$P#iIGQ6NYCE+64*dX+GBR40c)ldi2jXk!B)8`irE
+
+#U-mV)UhBEU+-SJ(dZ)1,@9%'U3#&1Fr-`$EbZAP,edqLk-J*Gck@N!$P-#!ppV,
+
+jVPL5aDlA@FJqj5#CF$m!$3GcG'9`F'9NG'9PER*ZDA4XD@0PER0P!*!*'c)!N!m
+
+-8fB!$&@F!!V@R!#3"&4&@&4dG(Kd!!#j[1lVZEcZl!#3"eJ!N!G*!!"e,J#3"Z#
+
+B8@NZSm0K0!L&5C!!`bb(`m!02$#%I5&b#[aK$2`K6j!!mrT$QF!G$))`pV'Xc`Y
+
+#lLcbjQ0I9TJ3@"*QI#!+85$-ZMfqC+&`2`#3!`d)Fh4PF("PC("PC@jbEQPdE'P
+
+MC@jcC3#3#5T'!*!2$&6M!!a@l3!+eT`!N!4849K8G(4iG!!!ZEcZlVQml[!!N!B
+
+"J`#3"q%!!1Lf!*!'&XP4D5kM`f%d1)!(KV![K-0"IaJ,BkQhPUGB%Z3`bq%`F$N
+
+l')%r!f$'"c,m+)`"Lk$(jq@3!%m')QlNGkF(b59#I'lS3cJEm!B3FQIj[-)NIbL
+
+(R-R*V"m'BHaM@CpA"N`k5eU1B!Ka-J$f8$"lL@[#q%1C#BX-R[J)hQQ5NaP!NV&
+
+K9KB-!5lX!e&r-!M5qIH%!@i3KFJ,h'&H!H[8q&V3#)2c&RXF*S%R&9R"))ck[#!
+
+-LDL&36ENK%NHG`JNK[4HYakJ@dHGdkaVC6(fk-'2i#U,IffRh@%aTlPkp%J@#[F
+
+$!!d%Fh4[F("PC("PC@jbEQPdE'PMC@jcC3#3#AI!!*!2$&@F!!aAhJ!+eT`!N!4
+
+849K8G(4iG!!!ZEcZmEQml[)!N!I$!*!(J3!!rId!N!Dr'&&T,VY$+%cb`+`XGmL
+
+E$)!aj!d$c2J!iN)KIbJ6`)bFma""Mmr,)4r`Kd#8mAXBi-I!cE)q0`SR#j2d-)3
+
+4$!*r'#!IjP$)j`8BjU"Y%RAliFAJK((M*8)6GeLBj!p&B-$(0p!P5)iK-A1@3"c
+
+S#i-3a!"bQ1@)186F3FkA,"6Z"`!0#R0eBR0dFQPZCh"ZFQjTG'aTBf9ZFf8!N!Q
+
+ad`#3$`a@l3!-@-X!#YDF!*!%9%9B9(4dH(3!!,Qml[5j[1le!*!(h3#3"hd!!*T
+
+1!*!'PMG4D4eDTEQFCPYV"m#-2j5CQ[YD&5D#Ekd)XL4r"K$PCJS!SYLY+J,q-(#
+
+$S$q-qC39!Qk%h0Nb!$R-FMJ-6$T,QM%C!(1'-'NjF`+4Gc'RkqaJ"%XGNE(I[S2
+
+13LU+J&ZB&1E5`aL4,-!iT5U5jIS"a)`24IeKAl*3Z"m!N!-0!h0eEA0dFQPZCh"
+
+ZFQjTG'aTBf9ZFf8!N!PfPJ#3$`aAhJ!-@A!!#YDF!*!%9%9B9(4dH(3!!,Qml[H
+
+j[1li!*!(93#3"c8!!,CS!*!'EE04D4fX)-4PTI)[9D&ifCPHeN&bFV*%Q*1jN`Y
+
+K5C!!`bb(``!c2K$QXJ$-!(jbpN0m5KF+p`-!$30dB@GcG(*TEQG`ER*ZDA4XD@0
+
+PER0P!*!*Z2`!N!m-@-X!$&TK!!V@R!#3"&4&@&4dG(Kd!!#j[1ljZEcZqJ#3"l3
+
+!N!H"!!!3Z!#3"V-D85jGDp#AJpMR6Bj#j"8+Nc``+mXGmLB$B)#q-!K"c2K$QH6
+
+FCAc!(f)j$,+i-!ET2Z!'36rf)AF3m'c)J-%JM")B5h,R5&RB$d-Jbid#3#b5b(J
+
+A`-3LpS@j)!B`JaLJ,LS*%MPDQ@(J4MjK%KIfH8&kGJl[[YePjd'L&bEF$`#3!`d
+
+%G'9cG(4bD@jRF'jbEQPdE'PMC@jcC3#3#@Ie!*!2$&P`!!aEIJ!+eT`!N!4849K
+
+8G(4iG!!!ZEcZqlQml[d!N!B"%`#3"kd!!"(R!*!'jFT4,Q1D#q!-S6$*!l1bh#&
+
+[-J"1AjB[+pf(`X#2bAr)FPJ'SScI`i!X,Sa"ZJqiR"f-!#*JdPR5M$+3!%&1Sl"
+
+2Q*5H$B*Zl%2!E)SMQUBF#(T`M$J2pX03Q%Kf'4r`C@6i2"M!$*!!8i-I"N(SF3H
+
+&54J#62*$"$dq,iGm"*i@i'-HJkj1%q!1C3-24-JACQ()k`pP,VCQ5A(YV$%d)#A
+
+ZcPVUKIeB)-bP*a+k8,JI!!d%G'9iG(4bD@jRF'jbEQPdE'PMC@jcC3#3#@Ze!*!
+
+2$&TK!!aF[`!+eT`!N!4849K8G(4iG!!!ZEcZrlQml`#3"`&S!*!(d3!!RE%!N!C
+
+!`P%ZBfFAB"(dK0aC2U%`#A+BjA!BB-B(X+mI"M!MjdB)emXK(q""$K$&Q3AJ$q8
+
+32)LbK%QqIUc2J`QJP`d-4T2CCY3#0`Mk`cNQp-jPZ6JIj@BQM0r$!+m[l%(qG&p
+
+BQ-5Rr9"Z#p%+H5[Nc8R%[U9`Lb3T&IK$[M#*X53rJIHJ0cXC!&Hm53H5F!JaJAY
+
+"8T*Sc-,B(mSN[[,S`a$J`Mk[-#R+q(*lRFP2h'(5NdFN(4N)Fl`i"aiB)JDMA,3
+
+X!%ZL)56)$F+Xfq-,*`Z&q`%!!!d+G'9iG(0MFQ9PEQjbEQPdE'PMC@jcC3#3#4E
+
+%!*!2$&Yq!!aGe!!+eT`!N!4849K8G(4iG!!!ZEc[!EQml`)!N!IS!*!(T3!!hQF
+
+!N!CGSe%ZBfGAQYjT00U%VM5K-!Rjh!Lj3jQq--#-$i6prAh!(I)#&SEpf!p$!'D
+
+!U$rNK9%#L%#@ZjmrLfFJM#@&@EH(i-CZIp#G([3"IbK()[(e`c%SL2P!HKZ&I9k
+
+3!!'4--NI`MlNpZ3)6[bB!4DB#5A*!,J)cI&K)X5"ejq4i82!R39$Q86FC[`KAcK
+
+CQ+5(@D`Eq8#D`f+1G5NU1qKJXH5HGD&`2`!!$39dD'PZCf0bC@9ZER*ZDA4XD@0
+
+PER0P!*!*'cB!N!m-A,m!$&lp!!V@R!#3"&4&@&4dG(Kd!!#j[1m%ZEc["J#3"J%
+
+i!*!(Z3!!i$m!N!DAA9'Z0QCEDa"aSj!!1mXRe2EP)2CjNq0hPJ3jc()i$$$M)j5
+
+!m`'B%6['IRGkd!HL$!cl!)m$Ibl($a'N,N`bjj!!iTcF!*,hK('(!!cj3*Mc-!N
+
+$,3B0I5J,KM%)3Sml+%a+#!TK#bF8E9ii6!E!4E!f$-)3#%(XaRjb`,J9%LDjdp1
+
+4,q,2c@!B-L!#Z9AhZ0`V1GX`+pdIbU&JeIJNM$q8#86Nb''Zp+l*EJGC2RFS(1-
+
+A5%!A#[F$!*!$$39dD(*[Gf0bC@9ZER*ZDA4XD@0PER0P!*!**)X!N!m-AG3!$'*
+
+Z!!V@R!#3"&4&@&4dG(Kd!!#j[1m(ZEc[#J#3"JB3!*!'!`%!!-lT!*!(X3T1mH6
+
+a""R!K*%*PGaDC-l)L"*kNQ15SpI+ENhfK*%C!!8)H(d!`[$Ra3#qT(L#IJ3$!AM
+
+iVJ%j4SiG18E3ahcm!IXH`2EMC[fGXYRA&qGIG$6Y`)ZkVQcS1Z1Epd6h3mVdb$3
+
+NEQKdqH!mj306XU&R#MXbG(fe[IiSYf3mmDr"Y(@&1NKIq5C*A"bmGhjI!XY[je1
+
+1JmdZq0DKi(`Q64"lZkXVAF@PjqD%X!NI*EiImP)LEBL48apm8qVT&%hJ9&FqS0H
+
+3!*'%M@4CD8CrLZ8aD+HNT4*E&+UV2SDMDcL9AHFUZa"ITJ)U@ZIGG[hjE[9YG8F
+
+@@5GHFU$-XA2HC#E6YQF-8-ab-f!j9%04jj&M`-14U6I)aK!iT-KjL!!12G!jKll
+
+P)lH[q*3UACrIBiLT,p9N[bPPlK#$9R(S-pQ$+I8idS82XF-8%mMa1BEfmPSfrHV
+
+Gdl+!VdGIj1KQrE!NI-mkZ1`jZY$)kEfa#cSBT6ZCMSPh1lBBiSc%DV0CEhlcX'H
+
+2T3X18%@-8JlXPLN96r5T+ld%S`9LDiEp!ELlM,'a+CLKMP-bHkCCAYTe-G0F'J`
+
+*'J)"ME0'1)&LaJ0(8)6"Y0q&Z!`YV8Pk*fd@G4@X(H#9)N"-BQBKU#21kM"Y!'r
+
+U2G%R+XS1i#JI62kAUXKNIMTV6pHB*bdb!,fQ19fR$24-E%i"f15U63%m[+bRhQU
+
+$MPdkb2$SHa+@PK`G,25)Z!,@Dq5TV4#!!4mafG[p-caRHBP#M"1MRE0T0*!!Vr2
+
+(m&2ifCD*)*``#J$aXZ'GmaMQaB'[AT!!RHTU(K[4LCa--p&B&S!#1ZMLb!RP2SA
+
+-(pj!82Vr[JV8%F!'32YT+Dm%`8$0[U6N[0@&6rjAFV(1qFdJ2JSqi98!2B$lfG$
+
+k[RKfhm12KqhURPcAFH-`+hcEXX&SG"IfB&GM"4ae1ej6Q"m(GDAfASTCX)e+lm5
+
+BHUdh85j1'La[K6QZVKTZ@Dia-k&q,JEJVJr4a)PfVQ8DSmZC)HD*9MHh@`ch(`!
+
+!$3*dEh*[Gf0bC@9ZER*ZDA4XD@0PER0P!*!*8)d!N!m-A[d!$'N$!!V@R!#3"&4
+
+&@&4dG(Kd!!#j[1m-ZEc[%!#3"JkZ!*!'"L8!!!Z4!*!'FFS,6[(Nm33C`!42"Ta
+
+fVA`PR(j(q&01MKpC5pQeNU-[LlE'cj43mJ#V!D`*3#Mq["MHMVk-S"qp3&ep9aT
+
+KJel#b(-bidFi'A1#!Vi5HRL""YCN6%AT8UYb6A['&R@ehIbr3req2m*[baFk05U
+
+MZ5[c"h%FT5l2PCheLCkAZP#PpR6S,Ka9MP5DkU)L*DEdV#iecI6F@&-CCb%i@HJ
+
+i@Vfp0PP'8deXIdC*Qd4#X%I93N-LVhe&eX&69QSe@mB4p'lp6CG38Y#!F(")NTr
+
+[h+8UbpKHL$H*)efP8"VB*GNkRqU5h,c94*T`QVPV2H[K6CV9-f-[%)"PFmI`k1-
+
+)FTer5#+VYAUU[2l+@+qY4qTAZSr'R0V-A'V59lTFNZ0J3f-k&ce#%5YebABm'9K
+
+T(%%VMP4DeHMIY5YRH,%X%+Dar"6rqUUX8fiACFE#"m[2qHf5VY%IL+-%VfYAFD#
+
+P%ZrS5j!!4hae"TF)9&qTV&B9Kke[#Mcdm)5X8@UNG'9QZM(-XD!+@a18lJZ8M,Z
+
+Ah#)LS9`VkrZ-LXR#H%,UE)CG5ZV5,ca6T9(6$1fA%NS+EHS3@A1#bcU[*$LpEVj
+
+!#c$5X&fAG'NXkZ(Qb'b"'(f2(NT,N!!!LU2,KhX)K2$EKKrk'SmSGl"a-[cjG(3
+
+b2'M0ilIhG$c'2bIMrI'V9d&djdjdr(`b'Km2$YHLCh[lJeIdl6IRq$,jDA6mE%b
+
+2[rcZ2-M[G[,E-2aL%R6jCIXlfhXf1(Pqq&XMq'JYH$"m1MJpR,5dDRk2%HG3L,+
+
+Ua!,e9h3d1KiGR4le@Q&3!B`k'VcN9h&d$lh3CNfCUVKN+H!!DKSVh0C0MhAVkKd
+
+c86!ZjZTGU9rATK4+X8![MUiA*Pd%PSI#QY*AA1Z0&RY"M8fU`+Z!GJhl843f#6F
+
+HRc%(3#S-#R`,B'$)"D#pGGjQq8DAVUZZ+eJEX1V5d3VK),H3!")L`+`"!E9GK3$
+
+%-,A#&JMZ'5G4G,C+KUH1!NrlM&,GAf(d(%Ur,R4JlUUXN[@9Zj5T-FGf%XU[T`6
+
+2(PmA4@Ed,)l!9MEJhb8S[KVc`#V-hc+FV5$M`(F%#VKkhHKi*VE)Tkk%B1&32Q3
+
+FbXLK-KeNYDecN3LpKjGjkA,+p,aL9k@j@&3pmS$hA4T`hmA49R++Q63MI0HU4,l
+
+PLNA$'j8AQ3le#[-Mj8fD'G$ME-pAUUa#b%+4pLQAE#6,jf2&Z-GH,4'Zq"*6CiU
+
+QP,)`9%-lZe%b1MiF!G1b)4IU+UbIB2YX32[dj,`GUA(8LEkB$%iQ[``16iFIK3G
+
+)pciL&1[2M,CZ3k,NKN%X3IfGc5D010TS[Ic-6pDr`i`89q#Yb#-La*fJdaAfY,c
+
+(Z[b2QP`rQBRiShL4BJ5)hpZaLMqE0+Bk969Bb"UK40CpBQ"JQ)acJ3mQDqjJ&+Y
+
+H($F43ZB[6+r+JlNJde+%-A#D@i2#$*H4BbZ&qB6JZ9SLKXG[#Gr-DQD)BJHF$a-
+
+IU3+X`(*A4RcE)2mc*VI"5'0h+*Nlae28f&e+TZT0q2DS`b5bqiH6bFf+20Zb-GF
+
+3kH(4cZB4jM-rflel&NFBb'',MSiIE562cQQ,[qUmU*C5SJH"PSD[$%di12km*f5
+
+L%$!Pq)!MMej6mMkV`BHXpYmR48q`#[r)kB#'j`a1QF4K8VqEa&cIfb19p#[XDCP
+
+kFE3'(4jIi&"N[`qRS@[MFFFamZlhAGf0X5+VlcAZ3G%NY6NKI%UUYaV"+epbmHS
+
+18S!R`K(J0HFq*"T19PF1`je(RZ#i)Sd$QJ211$$L5k'9!B[&'SibaQ)jC8Y#VNJ
+
+-%'221@U5ehRMA5!34dYAdl@bI&UFQINFV-5h&[G0U+c"J'm2##'V+8k'5%iZ@f%
+
+RHi(U4V`THDC35lNIm6D9GBI,(*r@%)6q&lRRY0[ZQ[[V6*X[PaAlSaP2UmNXBk(
+
+8hH31a*4F'i,NkSBGF,IPS0B-GlQEFBK)V,R4-XejN!#9(1L(Qf`Fj@l@hNdK!2T
+
+5ZP!PTJUIJV#p,[K)`$-rq6&KJmN2i6c,KcmqD(*-h4(55`Rj4-N$MFFL@Yp%HQZ
+
+EDPZCM-8!DeEMhB3bV(H6X`!$Ur,CNiE("iMlI`!0"h4[Gf&bC(0PC@jZFQjTG'a
+
+TBf9ZFf8!N!R&l!#3$`aLEJ!-DHJ!#YDF!*!%9%9B9(4dH(3!!,Qmla'j[1m6!*!
+
+(U3#3"h8!!"3A!*!'@Be4,RXRRG13!!CB'"B+Nb#(@3k(J4Z%Z+ad(j)"c2J!ih0
+
+lrD&-i-BJb[Jp6%iSi4!1qN#BJ9c3#p*p`U3-YiHRF%MbL2)*6@5(d"r#)!2",*,
+
+K`--Kj#-"02Da(iB!KX)NhLJ2R2XM[K"`Kh-mr4"T4"F+p`-!!!d&G(*KBf9NFf9
+
+PEQjbEQPdE'PMC@jcC3#3#6Cp!*!2$'N$!!aV,3!+eT`!N!4849K8G(4iG!!!ZEc
+
+[&,Qmla8!N!B"MJ#3"p8!!*lh!*!'2&T4,UG1E`3H'-+q%!i(r@%X&#CjB&D@1q4
+
+0"X$U4S%``)`2K0aC2Lr`Bep@''4!"$"bHrbK6-+SJbaI11c1p!&r',$)6e3FB9+
+
+8mB9m%4m#lK`8XSF)NYF4bZ(iS3J-q,`bN!$TMa!0S@Kj-1F1NZL3!-2#T)Jlb2R
+
+#-N#+J+dbTX[Z#!25b%N(Pk1$+m`h`T*@9l+3!!Kp8C!!idGj+acfCiB)))%*2p+
+
+2rHldS!p`BEkIPUkGF82A0f*BcG#(F,B`L6#`AMHde#b2!cqfe+lYF0SGb8,KIJ#
+
+3!`d'G(*KBf9NFf9PEQjbEQPdE'PMC@jcC3#3#B*p!*!2$'RS!!aViJ!+eT`!N!4
+
+849K8G(4iG!!!ZEc[&lQmlaN!N!G@!*!(43!!'%J!N!E4le%ZTdj[0!L&5C!!`bb
+
+(`m!02$#%I5&b#[aK$2`K6j!!mrT$QF!G$!+-h"kI&i6F@H60alkX-!'`*-ci3"5
+
+L3*JPF9dSh!m!!!d(G(*KBf9NF'9PEQjbEQPdE'PMC@jcC3#3#@@$!*!2$'XY!!a
+
+Y0`!+eT`!N!4849K8G(4iG!!!ZEc['VQmlaX!N!B"IJ#3"q8!!'aj!*!'Y[a4,UG
+
+1Ec3iJ!H'X#q%`d&r'!Yc3fmY$l%Nb''@`f(JFRB`!Rm'`)`2C2K4'!-@3Br2bb'
+
+I$%6Fb1p1$j*,K2MFd)G`0Z!0)161mRQ&5Ij3$MQ6NeNr$$"b%`N0Q(5@Y"br%1*
+
+N!1bKB2B5eB6aKc+"2b4-iM-jf`eMRlG*$QF!5FD'@9N`",L`$d6p`5")jpm6"VK
+
+"&#)[F)H*!TDT#C0)+f4N,5faaf%5H0+3!"8-`UM2#m+3!)KD''4$$RMFT)TX4Hp
+
+ek`'kGG3jcET@&Q12([`%,U2iehED(4CcQUY(Mf5KF$m!N!30#(4bB@jcCQ9bC@j
+
+ZFQjTG'aTBf9ZFf8!N!RTQ3#3$`aViJ!-Ed!!#YDF!*!%9%9B9(4dH(3!!,Qmlaf
+
+j[1mI!*!'!b`!N!B"Q3!!@ZS!N!CbV&%ZTmk@CM)kJ5rNaEi`"YLAa3EGf!ImSA4
+
+h11$$5C!$iU!r(EP40Q!4p2Lm(2**K-)Nb''@`f'!'4p![M!Aa!"QN!$,d%I`$["
+
+&h%(1MId`a-F)NURT`L6ANM2i`h%BBU13!-F(-L!#2VH(!9QqV(3ILJX%rM!@*SR
+
+LcHJL!",p$Gcq%#Er(,K$3%5kNB`#!9ZB+,)NImL2rHjJ-$[("H@6l"`M(3"G"LD
+
+@`[K*E5`TAT5fT'SrP!PiNJ[5I4kBjFZG3HL,JS5k6ME5$#eVAKV`l+ad'!3Yc$C
+
+q,HMMKQ)cXMQ%b$'YR59P)*L9%m`UVbd611RJ@QQ!"aq4cM+6@4X!l!33Jh!3iTJ
+
+""f%'FN%[#*&)c`HiX-qEdjUFQqG(j)1JaVi-49)#lTh@LJZEc8GE-KRdMNJ")8I
+
+f-#+(!*!![HAPTE9b`,JMr'lF8+ia!#+-&@KNDVQfP"e`j)60@166ihVp([jciIE
+
+M'qIm3QHlXN*HBG+5lGldi2TcbKFIJiak1abE-&EDGAB`NNmD%@CVSb!e""a,CX(
+
+f!`!!$3*dFf&ZFfCPFQ9ZER*ZDA4XD@0PER0P!*!*`Cd!N!m-E6F!$("9!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1mJZEc[)J#3"qJ!N!HP!!$HC`#3"ZZ!85jMCeHDhQNdfS5
+
+Z0+%`#IRF#,P$QEi``)`2K2hpIF!GmJ)@K[hB$d-!CS#S2q5&83+)3*DlRcq,Cb#
+
+-*B9CYiIJaQjrd*dHp!&r+%FLmIA$-5L)q8"k'i9pAT!!!C%`b4r#2Z6fj!K1r*J
+
+"&TJ**FN!Z!M0m@%La)(ARj(K3m#G"81C40aQr#&I1&QBT)GCV"[j3*V$BSje+5S
+
+lk'#aj*jeSA!r!!!0#R4eFR4XC@e[C'9ZFQjTG'aTBf9ZFf8!N!NaM3#3$`a[3!!
+
+-F4B!#YDF!*!%9%9B9(4dH(3!!,Qmlb+j[1mM!*!(AJ#3"e%!!#PP!*!'@fK4VJj
+
+1Pm9SY4Z-3Q%5j$$,i6$!M!p%)I+#6NkG3`C-4T[H+!-3J8jQQm(H#AKpV#rNpBF
+
+b!3cP`'`1)9m)#j-`Kh$3"l+JejFX&!Vh!`#3!b!!$34dHA"PE'9YEf4PER*ZDA4
+
+XD@0PER0P!*!*HLi!N!m-F&8!$(2I!!V@R!#3"&4&@&4dG(Kd!!#j[1mNZEc[*J#
+
+3"J3X!*!'!PN!!-)a!*!'MA!+6[(N!3JbJ!NP%hVN9V)5PQ6'MN`BBB55Bj*MK$k
+
+K(L18-$)$@!%#aP-"b!V`iKR!4cd*qK%-9&'cb)!69$*[2B#!X6kbrIei5hA[diZ
+
+j[VcpYrcp61[eqXDBcNQ-0[9VSXIX8bhiR-QRFDSNHANS&2b"kI(TlRkl)Mij(L[
+
+1f%T*6*Ii'(aLFRZEVDZ-Si9'CH'HF%0j11%*[h%+eBrK$E#3!-d-KQUk`L1ZkmA
+
+G6'@dMJZ-h%[P,`X,P&'9"J2%k*-0bLQjae2fB6EG9G1`QiD"-rGAAaG&[UcDeAF
+
+pK@DC&LLDLR+e1)iq"-L85VJbf4"QXZ2)0T1N"P"FCNid`88Jp[JNNkArlC[Z3rr
+
+eJ)EiC#1FVe4YDdM$f[aiH,l4Kjrb!UhC-mS6bQald`eCBQ-qm,`6Q`&b"Pjkb[a
+
+RiS*#"j@C`5X[f8EPXB-QD"-mT&,cj+U(3"b)Ble"8pXpr#b4U2YS$dS1TM0$R0b
+
+H"PZD5b58b&FkbK63*X)GL#d1A'TI+S&X(b2h(K'(HG9UpiQL&06YE(Q$C(!lM9+
+
+cTpiA*mPaeVc9M5!q(56TJA%fSTFY+(Tm63&RBAf8iP8XX#ZI'XNBl2`4p'ST5l-
+
+Q91MBG1p$FYaciPHifpaZ[rpkfM`mU4'IAZA!ZS5YN5,K&GE8i+8AKC!!AH#Sml6
+
+"%S59lS-i+0E1G&SL2!aHr@-J'8Y@E*ielUC"-c$GHDAqcK)Z),$cG2"T$0lj'QB
+
+G-[K`+"(Ipj!![QM@1TQH[peYk6,LlIR6KrE,I"ia)B*C2qqEkBi@%D%mBri"!!d
+
+'G@jLGA*jE@pNC@jbEQPdE'PMC@jcC3#3#85c!*!2$(%@!!ade!!+eT`!N!4849K
+
+8G(4iG!!!ZEc[+,QmlbN!N!Hc!*!(K3!!lX`!N!DJq9%GE+dk1,X!$`aKA`L(Jri
+
+`&JU62$!Vbahb*J23)C61)Em[$$$M!bb#(TqA3lk`$%6Fb1p1$r)R*&&dk%-i'r!
+
+'A*J8FQIj[-!IbZ(k)CE$4+E,Z$(`%b+&8N,Lb`U$U$mB"1NqJ(bB3b%55k!`+H,
+
+h4AN$`fjc'@fZ0"R`B8qb8,JI!*!$$3PeEQ*eFRPKE'aPER*ZDA4XD@0PER0P!*!
+
+*PXN!N!m-Fpm!$(@"!!V@R!#3"&4&@&4dG(Kd!!#j[1mUZEc[+`#3"dX!N!Fp!!#
+
+dKJ#3"R%Z84eXV6SiZqJXPU5F4`hkdj%EC3-@3Br2bb'I4#K-mX#X,(I)Q`b!,Md
+
+Gq5*q0rD&35iDb%[6D%J@#[F$!!!0#R9ZBR9bH@jKE@9ZFQjTG'aTBf9ZFf8!N!N
+
+`c!#3$`ade!!-GN)!#YDF!*!%9%9B9(4dH(3!!,Qmlbfj[1mZ!*!(HJ#3"e%!!'2
+
+"!*!'h+&4(@bY1MLlf(4@)iLi8FLGj8[L(cAS6dGZP!eB"$dq,iGm%Z&U91!2Bk%
+
+`b31cXY`KEc)!Z[4dj)[ihGJA"VNii(P(jM4AR)PQ(%Z5KF,p!*!$$3aeEQ*eFRP
+
+[EQ9NDA4ZDA4XD@0PER0P!*!*QU-!N!m-GB%!$(G2!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1m[ZEc[-!#3"pm!N!HG!!#!Y!#3"LLT84eXV6SiZpKY4S2CPC6cU"%hmV[6Jck
+
+*8*MNc`!ZC`HM$(MFA0JA"Zj30Q!4p2Lm(2)"Vbr$(r*j!6RkS8c!1`"%`',A'3#
+
+')0dR61*#k56XHQ8J$!&Qh"Mi-BMkJd'5KV!l3ZLpE1!'36If)C!!TZYS6!E!j!m
+
+59k+aT+JlK(NCkBS&)(#%PV6!34BAaX!,H6-rP#XC)Dm2*3Z&q`%!$3CeER0dCA"
+
+[EQ9NDA4ZDA4XD@0PER0P!*!*(&B!N!m-GN)!$(J%!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1maZEc[-`#3"dN!N!G&!!#Al!#3"JjQ84eXD5kM!hKJ#2Y#1"cdKl&3Q15"@9R
+
+ZN!!h'3!AKd*K!$-b3"Ml@0BIbJ3C%!(-q%$)RHAc!MrfCB@6KF,p!*!$h+9S!!!
+
+0"A9ZG'PXF'pZC@4TG'jTG'aTBf9ZFf8!N!Qi*`#3$`ah6`!-H6N!#YDF!*!%9%9
+
+B9(4dH(3!!,Qmlc@j[1mf!*!'!9X!N!I&!!"lL3#3"VD@84eX,V-&i!aI2aEj`Q%
+
+r$!&r+)`4jm(N&[M$1#NT54cdTb-hbJBXJKkIPd-qL9#Bj)&C@Hk3!$FC!+H2pEQ
+
+aca[-"Vk)1mL4'`HBm3(4#TF#F)G"%)BbqAF%X+3ic`'LT588!2*PZ3NG6$T,QT%
+
+ilLm6mr`SM%P63`i,Nh+1'JM$$Fi$GcB)q5)q"0*p!(%Ki-E!(3`5U5jI`EAiJ#0
+
+Q#,*#B('-4#$+`,!2m$fij1D5I&BH5r+(JF[C`3JJLMA'K2X"!*!%$3GeER4bB@0
+
+PEQ9NDA4ZDA4XD@0PER0P!*!*ZAJ!N!m-H!3!$(RZ!!V@R!#3"&4&@&4dG(Kd!!#
+
+j[1mhZEc[1!#3"dN!N!G&!!$Af`#3"M$!84eX,UG1E`3H'-+q%!i(r@%X&#CjB&D
+
+@1q40"X$&S9!B`)`-J*(Ei`pPJJb)!'Cm)161mRQ"(rZb`XP#iAi!N!J0#A9`F'9
+
+bBf&cC@4TG'jTG'aTBf9ZFf8!N!RNj3#3$`aj13!-HVX!#YDF!*!%9%9B9(4dH(3
+
+!!,QmlcUj[1ml!*!(J`#3"ed!!'@,!*!'N!$i84dF$U06VdXcJLK%AU%`#A+BjA!
+
+BZ)%(XYN!CJ$-q)!r4%)#SB&drZ*M"VL$34#%84rbZ--q%24Kl%0KBC+(FBFbI9k
+
+!B3lDKJMj`L`-HIfK6-#al$+H,K6Z"`#3!`d4GA0PB@adCA*ZBA4PEQ&YCA0MC@j
+
+cC3#3#6,!!*!2$(RZ!!alS!!+eT`!N!4849K8G(4iG!!!ZEc[2,Qmlcd!N!H9!*!
+
+(G3!!*58!N!CJPe%GdS`kLm[SY1PF4T[1DNa,iKmeiNCqGhV3*a%+Nr`C`1AXB*3
+
+"MjX,qm,!!M-K`""NqN)qj-Bq%))KZ6'8'I5('4#&b"X'iJ`%X`"QI-)NUbmFGQF
+
+5V1FR1Z!2KE(2l38`,R@JXk54ehfE33Cmf*-X*-m5!!!0"(GKDA4XG'9bEQ&dC@j
+
+KE@9cBf9ZFf8!N!Q'd`#3$`akZ`!-I-N!#YDF!*!%9%9B9(4dH(3!!,Qmlckj[1p
+
+!!*!(q!#3"lN!!"C,!*!'@&94RA4Q&m$q,*p3Q15"@9RZN!!h'3#$,qM1$S--$Q(
+
+'Ki#[Rmr$B6m-J3b)J)M(&8#M&-b%!F`!EK$fH5$KXL4G-!b"amf&I@(J$Q@$G#i
+
+M`iGmAZ"Kh-MY`6i8"PjI'2Y$*%-ZU!FN0I#(h%'!S6!Th3GBj!pKN[HcXRaH[a[
+
+lJYQN%P(8'T%,!@'JS80ii2B`IPq%126pB3)AZT!!%H6#M$q8#D*qc%!1%dV#ZB2
+
+"E""eqiRlHE*3Z"m!!!d&GfKTE'9dCA*ZBA4PEQ&YCA0MC@jcC3#3#@rP!*!2$(Z
+
+J!!aprJ!+eT`!N!4849K8G(4iG!!!ZEc[3EQmld)!N!B"@J#3"m8!!!Z'!*!'%9P
+
+4RGUB,8D!-hcp@13,Krd`"2bK-%DF"j0Ei!rMT+3NFG#IMY`S'l!)HRaH$[NN3Q'
+
+5"fCPZ82HC!#F2YERaMj[-"[i)ZiJ4fiFB-B(4#YF#X!G"N%BbZ6I%F#5iM`(L*D
+
+@8!$)Pq8QG(!j1aL*i[ib,mq2`TJ80H5`-#RRU)%`h+!mF'H$N!![iN-Jh3F3&`*
+
+Z$0c")*(UmJeFH`miBSBJ+`3@adJ%SJ`-q`$IJdYZ,XPRhE%NIfj4!"%`k5aTaQ5
+
+KF$m!N!30"RGTEQ4[Gf9bEQ&dC@jKE@9cBf9ZFf8!N!QFZ!#3$`amb3!-If-!#YD
+
+F!*!%9%9B9(4dH(3!!,Qmld1j[1p&!*!'!Bi!N!Ie!!"'k3#3"SSZ8Ch-0S1pNe#
+
+BK(h"B"KJaJF`Kh#3!,a'`"I#2J5LrT!!&dC"&[6kY!#B%-`#)A+23M,JceK#C%R
+
+q-(#(!ci[cal!L!q`lM$1)I3J&r+k86D!ZF4cj'BC[bFFNd164*J8p3H$ZG`S)b2
+
+X36jI+"N!&m'0r@&r1ZRN'JY%f)DKX0rV3ck[--NG"RdiBMad)mbE@L(J$fAi3hk
+
+m"$d-ZN1q*NZEYJQR4qUc3YP4KTKJY5)Z50L!DXi!fC!!!d%B*XbFUi%fGUZ49)'
+
+YpC!!2j4*"T!!J(5h*m$h6a`lGd"Tjl)cA3+!(QD4LPc3bDPcN!#5('!bf[6'C+&
+
+`2`!!$34hEh*NEhGPFQjKG'9ZB@ePFf0PER0P!*!*-E`!N!m-IIi!$)!8!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1p(ZEc[5!#3"f3!N!G"!!#(fJ#3"La-8ChX6J1)3Z40cAQ
+
+V#X8V%q*Y(53R*dZ%`L6)BCE$BH$1L8%'4&Nq,dM2"KiBmVLa,q6'rP!Qm"1%(q*
+
+*ZP#i(`!!$39hEh*NF(GPFQjKG'9ZB@ePFf0PER0P!*!*+8-!N!m-If-!$)$"!!V
+
+@R!#3"&4&@&4dG(Kd!!#j[1p*ZEc[5J#3"e%!N!Fp!!"`b!#3"Ye-8ChX6S-$B-B
+
+IbK6bYlGL0jB%1Fab1!aFcJj'i-mJ14Ii3b3#rM"`JbK%AKN`k5aT4J"*0Slk`lj
+
+NSA!r!!!0"(GbBA"`Gf9bEQ&dC@jKE@9cBf9ZFf8!N!R,-J#3$`b!&!!-JLi!#YD
+
+F!*!%9%9B9(4dH(3!!,Qmldbj[1p1!*!'!Cd!N!Ip!!#"$`#3"Qka8CfF1SG3Q)4
+
+p`@!BB-B(-)G`N!#m4X!A`Mi%SXM0JLcSp@N"-#'B"8)`#Q")"[`C5hJXb4m'lR$
+
+!jqA*!aMa!GBGaMQ%(Z4#AMI+"M#AH%k-qRj2'%6p)5q-%T0%Q"6e"i0!P#0V)4j
+
+B!1k3!"FJRjYPI@i%h,NZ%F[#X"rlJ-qE5Dj#L1!NSJ2JiJZ*f0`db@#R8Db%"*2
+
+b++L"+12R+mCBi-XJmNpaX6q6`6NdY&,6FN05%dM6k"J&BDEIi`i'X`Rr!miIF3I
+
+*B)K[NCHB#bG,q$i34Vam+,I*2I4M[cZB-bTGQ+5(@D`Eq8!RXmeJlj66qS(4TMF
+
+Q#iAl!3#3!`d)Gh*TG'9`Eh0ZBA4PEQ&YCA0MC@jcC3#3#D&b!*!2$)$"!!b#e`!
+
++eT`!N!4849K8G(4iG!!!ZEc[6lQmle%!N!G)!*!(13!!Uf!!N!C4A&'GR'DAd@&
+
+2%`U6))GC$SF"CR`J`ard!4D'rGJ23`"Qj)4X$L&I#)-SmQ-I#'2NFfIPN!"dSA!
+
+r!*!$$3ChFQPdCA*[FfjKG'9ZB@ePFf0PER0P!*!*9SB!N!m-JLi!$)1B!!V@R!#
+
+3"&4&@&4dG(Kd!!#j[1p5ZEc[9!#3"h8!N!G4!!"-,`#3"Qdh8CfFCTI4+43Q33k
+
+c(!i$c2K!b*hP!c!MjfCc#2P#'%54(rY!'#1I1`YNq)-q'B!SKq"QX6JE"2eK,%c
+
+bjd)[BAkZ91*$@Ik3!$ZB,"6Z"`#3"!d%H'0[FQ9bEh0ZBA4PEQ&YCA0MC@jcC3#
+
+3#GeP!*!2$),A!!b%53!+eT`!N!4849K8G(4iG!!!ZEc[9EQmleF!N!G2!*!(33!
+
+!ljm!N!B(m9'GpACR8ZkM"[hTb)fb!BZJaqIPN!"2)K3Q33kc(!i$0`Ka@HNq*!1
+
+Bm3(-)4cde3Z$cX!$)I,k3flX5aB+p`-!N!-0"(PMEh*PFQpcEQ&dC@jKE@9cBf9
+
+ZFf8!N!NGp!#3$`b$Q!!-K2S!#YDF!*!%9%9B9(4dH(3!!,QmleLj[1pC!*!(6`#
+
+3"d%!!%q[!*!'5@a4AI4fCe,ZS`EpkFL0XJ',S-IRjC!!6b)8*N%1Xa`1!cF)F9R
+
+T2L3$Q2%"c#%Fp08,Jbl!!b(bqN0Zl%X@#[F$!!!K)3a93d)J6'pREb!e,M-!N"M
+
+I!!X"c3'4!*!$!3!-K%N!N!8+eT`!N!1'!!!"J2q3"!F!T-,-I,TKk$`!N!8PB0X
+
+!N!8-JN3!N!VlQ!d!"8PMEfi0FQpcEQ&dC@jKE@9cBf9ZFf8!N!QG1!#3$`V@R!!
+
+-L-m!N!-@!*!-3!#U3qZZUPjZKJ!!#T!!!*!'![8!N!4q!`#3#(Tf)d31)R,r09%
+
+C+VQR2DDTV&2UicTVp$9kpc8Z@G*Bap$&XC8k6fV&3X$E#DNF56FMlG&TJ+5hm@h
+
+4GI-khJmr0rFQ'p(ZjRTD0NdHphQpAVpNm$L$qbbZUC)HCpfD`98cT5RI0&K3ec+
+
+4&&F8RlGG06+b$UQL)EB+FMRCC!S+aGcS-l@-liM9*5kNLrPQ8T&&Q%C[8-CaKX[
+
+CYGV#[D`BRZ[Xdae9aG8RA'e2`kG2G4"cSLDUFK%a$%&Y,RGSQ-KT9@EB1HaXFJk
+
+lQ(1iV-SjA&9Qml*IF`k[ZJ4eUh0B"BBFj+)'DU%QDJ22PXXGrPIrKMH*TKiL@J%
+
+Pp)qDRJ8U)B6V'H9"f2JqS8IBlb-"QIk4J)2qJB#,$J)Gcdeh2a[pqp"%Fr"&(2N
+
+8a8I3I2!lkHd#b(I6A3+GqL,G+G#K,p-G!Phq1cqArY$C0(rqr*(DT3q8SGBRpKr
+
+S1lpZI9"eeJrbGhmGq6Rbr@Kqh25Zr$[ThIilk*IRTjhqMrPprQ#(i)ARHH%CIVH
+
+0@jpmmNNF2(Bk`(ZI2NCh#P!k#-JCLR6lDaTcJUrTi(lV290PYAX2(UU`RNqeh8[
+
+mCkUV,3'Cli2Rj!0G&,$VbirbRppriflabAa0aFdhhicUi+qbRTfrlNEVFrLARq5
+
+2%Aj0BrNJlXS("#MGVLr5(IN`0VhEAqF1`(&*X8FPLASTGhMBXAhlqFdlTPhkYeI
+
+qlBjTjcG[hekBeL6D#[k(Lq6cHrV6`map+cN)dQeNYpLakr*cqGh)Zr,,6Z6caF8
+
+@3H)c4AM-#&p&GD9eMVV5!Pm&$$ql[UMRp)GqA2iLA"D-r1jP#UIp*e(,ZiZZ*pK
+
+CZ,rNfGb(QF9jh3FFjaKaI)$[rpP2IbE`ehrfXjpCI&N2ea2LZ0INA5M0SH-[$rQ
+
+62lh$md8J*Q$+PEV@#bba24#DMMj$MLQ,dHHLMdFrABiCJMFE2I,QS8IH8KSHRG1
+
+Rrpc#p+-B-hi88a`hLUP1(-1QMf,UA[)q12Pp!!d0"'a[Cfm0FQpcEQ&dC@jKE@9
+
+cBf9ZFf8!N!P[iJ#3$`b&DJ!1l8d!N!-@!!!"38&38%a93d*-)3#kBHJmZQ(S33!
+
+#PJd!!YX)!!%hc3!",%&[-Tll!*!'BV%'!1YP*V19fFT-6M16deCQCLXc@j2jQCP
+
+jXT@C*kI*+DHF2MI+h@aKYhCj(M[jfVYTGTQ3!)&dSGc00[Z&E3ECZE$0)0YXBC!
+
+!3lk`c4B1HE4Ef'BJffaK#i0XSC!!33BTGf%,bmdfJ`bNQbeXB3[EE'%Jf`aNN!!
+
+YE,1&j@B,@pM#&VBTGl06S+kZlrZZBGN9l*E[F*!!J*hLl!L1M%#bbH'lc'4V-[R
+
+++DHEEJVT3MGVhC466MIP02-cN!-E4,PjEJSCC!Z$P,[`KB&XBGYEZG(@kU+p#qd
+
+bS`YEf-)@RQH8Qed-XXdJAeJ(1H%,@aM)33kbKr`%fF))"cPNb`Sjj!Ylb#&Eq-)
+
+@[V#&EEEC`MicbSeb&jDE,@bc66P0lTRCHN"AehGpSckchX$P%lGN"23k!T)$Rab
+
+1`$Kip&62hXi63L1%pX[T3VXY(3qYBVG`#Aam9ha9e!PEAFYE'8)RCJQM+")[h#a
+
+eklc0RQDA9JJaZlbmp,8jMP)mkErrB54pABlVq`[Ah-S6fMmc#'&qfbL+a3Y#Sa9
+
+D-8*-%M(YK[CZB30BUF"Dm3AK4mDNfTF,UkK1mQZ)![b1DaI#hbG%1dTKr5,1qNk
+
+k*rVq4E83dhU&Q)H!&r$EBKBD%hk[0`P08SI3M(-5R'Ua9Ue0e1rrS@jZhE*@h@Y
+
+0GFeL!4!2SEL%15YD"F#ijM6lhKCcK!J[VeRH@LrQiq8fEhe0L`TJQAJRL1A-$h4
+
+&blceB@AeEiNb*2p&Ahf6H%A&K-6cPYI6LkZbCQ@pU"6#3!q"fFZr59(ZL[U9p5f
+
+Yp+35*TIAH1V0PI@Y+h`b`C5@C8fYha6PDJ,AUbZ@YBTA*AbIb"%CiS!Q)cljYGH
+
+8pd+a3ea0IihI"b(DUmR4A'@!NM+j&,dGS2,2Si)fS#[j0dlmQRKG[+XcP$@hQLY
+
+AY($0%(8GbMpCT`Y%*!&MQGKMb*VG8QpqZhQ&H6NLjH("QUC@FfZcH8P0dj*k,i8
+
+dQHXCCQ$*dTSQ6rebDQP9XDFeY[J*A+'P5PNQL"KdiMGefPHSMp%PKNR-&)m-VR*
+
+dh[akXhYCdl,P5aR3I8dHFffpZaQi&l5m6Dp!rD[SLJ#A0Qr*dQEdA'$Ll#9,kRf
+
+Y%mdS`$IQF&'qB9l@C'jG@XrP$c6@0kfBC+@*BB3ajQPLPI#*DlSS4mf50`Q8e58
+
+'UZC($il6KEe4[ca0bHC(YR%kE9PcS')PiSH''BA0!re`$jG"B1XqN!$`169ep@S
+
+j9*Z-A3)80k,R"QR-QY0#)aX$Ih@4'#k"`Q8e'-Yi[S9RRcR+STUBNE0VQeHdQKh
+
+e,@r@Hq[IjME3#4`RPGUq*YV%RfJ-1T0D@qQ93L[9(k-2eCZX'E9arJ#'JF-FEjX
+
+,DjU@SCdAeM5C(9j%cfY--cYDPZ'jZUCPCIhEDHDAPk'Z52&2DeTATjPVQZV-KFd
+
+V20kDjHCA@Y#mFjG,M,m)M2p5XhIMpfQm0Lhc,'de@qC--NqGN62$A)8QU+hhe$H
+
+e,MFhZlNRIUPT'5EMr'@YEe2%E6AHCHMiZFYUV-1UPLjEEPlHl'jpU`BMB%l0fjJ
+
+'J5A0[QAeGBbqEYRbeTCPY5YDmBkFk+i(PY5d,QYZU['QQ9[UPf15hlZ8-mh&V'1
+
+'aTCQ0`C#iiS@(bE(I(TIZ+`1k4FXVD(1"9lJdd9Mi[QY0DheQ"pi43RZDeVLA8(
+
+Td-lhH,dBLF!R"CP[AFUerah8rRFelfl-,QpZS8V-0hrD"!Ai'MR9A2Pf)`E(V#A
+
+)J'SdFH(8l%EA1qbJE`'3!!!rjJh)P9m(JS8"2JlarrTBZbBefDj0c6(V8T00KTR
+
+($-ML3MDRIFYG6IZQ69VlTRdkmkCp"Y2GZbDLCXJq6UYYEpGS3@KDNS3SV40LiQN
+
+K4RB!(h%5,h%E))a,#ebDlJ*Af,9-9m5p60I`hNcAf-HCE39p"@frlLr!,&UUmIZ
+
+l`rcqDa&qrlhKIRr[@,rrFB(IhrIV0+I80pmCahMQB6lQ0GVmK+1R`&9!Z0SchF1
+
+[CESMZM2E`YS,fM4-"l-8aZPiD8lCH1kVT889Fi[N#lN*@DP&34@[iGrD3@lUM4p
+
+mrjd4!`Qm)dB-*2LG%52k%b#m0`($B`NN2*EJGllaMArpMArpVp8%hK(Iq-Bh4Ra
+
+MM*VJGrMphhj$3B$X1PiP!$KNChj*S-&C%"9fmfmYK4--rjQ!i3"$3(cAmAKRL-j
+
+[[bYm+M[bQrJYG,(UfJ9QJPrpI,!"Q)$[G[f[aqZ[p[I(Jb0'IEkrIllkePZ$rI9
+
+JIlK!l1r2LrelXErY*`birVr(IlDad1'*rb("iq(KIjZ!i6p0S-*rNX!-rc5"(Ai
+
+Y36cm5S,(`aI4rehmHpIc"-JZm8L0Ahlf*L!i+jlTqa))p[lmX35U0"UlaKp,d&H
+
+j5eAm2&`5k(#c-ZD[QF$-VLTM9XL-lmmIqlq)rfTm[(jal"TrIrf[&IIc"*IkMhr
+
+9q,r@i$U"&AqPraQYFR`f2kSTP"qIcCpUq[YLIRd4r[2aq22aq[2ar-Pi(kGTepT
+
+eCS1*11rNZb@E5[Beh39hpKK-1V-@dBUGI[i($+5A$Y"TrPdrJMmG)l"KP'F*`,-
+
+1N!#r!H+h1ZKrJ1L3!m#[I10[!%Fp!hkYrkbm'SH&bm4TiVE@3BRK!q9P6r8ra`,
+
+-FG,rh)p"r`h$cl$-`+qmblrkYYpe9#bAj,[mG`R[*ILAUR'T1,&R[dPf!6FAk)M
+
+3h@VCS9m"fIqA3F*[d$YreGq&@d)Ed40k4@a5MaTriGD6@m&h4XIMqGiAEqCAH2p
+
+9mH*[cF`2i[X2"4ZAMIM,i(YGb9HrA2"(`IF(ehGpf29Km$hUhrlSVGVJqmTbhjR
+
+rkGrdarrhY"ffhPrG3[raHRlC3Vd[pY[r+q5S[lHk'dHcKV"HSeFF5PYreXP%2+E
+
+a,4mGfPi-ZjbVQ-rJmC!!CjV3'LRiGciGPr',[cS'[f0a+jPRRV$F,-cdc#qmHY@
+
+B-IRjcb+"SR&#k`3I1Q+`%#hL,9%MD[$#ed*KpAS3`cK$9,b1he[aJ92iYfqMT[a
+
+2`XhZ$VbI90lGH0q#pe1Kpc$Hfj9hA,l)HbI1)[Q2q`RA'Ea(3Zr2q[XZDj@,&li
+
+I`VYAbFpH"pj$FF&m53km"d,[&AM2abNarrQHL[G5*6rH(Br`2Mj82q!r9+6NaiQ
+
+(DcAHUd2[Ur"H%hTr'1pbrNNdaMkmiYkHEdkU&+ld$942BSPdZT+CjmrVm"i-9XT
+
+c(Hpe5PeCk@bm0`3VjBl(He-`2SRH&iALpq+GKq[k2BRbVhJD[cVdIMrHR`hL6k$
+
+kV![PEm,lHPP,6`AHAJRPCPIXH2Uq*p5eV1h"Tqp(3[RbmAidp&k$Gmjm%q[*B0m
+
+N8&pd"R1j)[(H%iSriHrl-jS%jRX(hXd*SH[i6P3)D`RH8bA@4'"j*ciBQlJ*lpP
+
+2hr0$lm452&M(Gh)(krL11Ne-V*`1V#[kljfUd0X-qHC!(lkMcJ(1"Fb0Gp`K$*J
+
+`lhKPVL6+br(,0dbUGpU8@6-6Ebh"R%ldc$YEd"6khF$8HQHE8R-RhTjl'[YLX&I
+
+Ge"1E3[f'1I21S9!pf"0E3c9i,95$EFSEDrTQU2maTGrT#I84CXdlPjqq(`h0)V#
+
+#Ge5@3$bBUqrd"QZ@5(Kk"Ym2Dd0i8*I$aP$08*[$-8rIXf5Y%ZJ09qE@@ei`c`$
+
+d`Q&EU)lSPF-j6pr(KA#Mr`mA+Rf'1ADij'RXP1"l!Q'Er[6p,L8hki#VGhP$,ae
+
+Z80kQi`hX62S@Fq(`bP#I-VBj02HB9mm($hVqm$VP$3cSm+C3,i!K(BBLLI81"R9
+
+iTr+1HH5Jpl8K"S@CG[L$TcJhKHB(Hq)9"5Yck9NKEfq%kS8H2ha1C8i162($jbP
+
+@mca-K-2UK1"8a%3lI#f)dN[GG#c8LHb'pUI[hFU8!SGm9aZF&Qjd`,[JRK+,21r
+
+'+'qB)Zr5'EFC0dLCbH`#G1Hl58SAm*dB6'E!Gh6IZpDRlf@KGdb$Ge@QB,jAKES
+
+"pAaAjCh%Mijp9f%1#HL`GbY#Ep1#H6fBcZmZ#R8[F5N@UES6Nq6GKP"IJ+Qpkh[
+
+k[M$)RYa8Ym8K21b*Kd1X%icRh5e2if1XdNAe-DF(k`8@qZjlSAUKVprY$28jf0U
+
+lr@b$pBSa65qQdl[(3p1&[Ia'U(lXNlHHeM['00`8Ir$THfb1Z$"hhJh0%6HpR`U
+
+pJifpqr$THb48Adba9Pf)Z5#q&5*#8QZ`N!$@f"!$B'c@dhI02",49kd@K4'L*eT
+
+*RS6-"rZ6eK`&$q0L-m1Jp`QKfK,[j+I[GbV[h#5K9eY$M-0*m6'QkD4D0SEH`6C
+
+E3l2!5IQA"@H&!lh8UM)*%pqU8+q$YEAZ#V%Tc,K@NN9JlF!L@cp3kXUiMFSEjNI
+
+V!H80-lMe8#L(CTU5i`hP$I1KP9L%qAB`P,Y0H31$DEfY['(HY6j3hM!VhX16[+%
+
+HlkPpLaRiRX)*2'$mli8f"&jJI`mk6PB2Bekm&f+-mPkXp$3BchXjS9M8jldmK9q
+
+JVprVCikSdAZ&SEP%h$9"eZA&A(q2YSLkKZr4*N(28#I&3L*+jJma"d1i-#2H#ff
+
+4j(h4dpa,3[(J@Hq&f+'m2kh8%l2m[6fK63[kr6feEeN[XfrC5p`BQ$-4FqDpBk(
+
+0&[YJCfMQXfDl3qqBKHpG$-eBc2chVSEQ'V(UE9%#eFrF0r+G[GXHLZdHM$e#XiG
+
+e"`mjS[4l!ZTa*&Cj!lBMLFSECXk49180rANN5kN[H[`)K-5XqQ*1(JPa0brKe&Y
+
+!"f'E&YcZ1&$V)j!!1G-9`9lX5%1)[6#cj[G5P3@KVN!eMr6cHqBb1jI)`!525+D
+
+3!bhMcIdIip'p4j41PQV'*R-#f1b4hD(FQ1a(P-iH3,KH9DB@'-+4ib'fL#Pfj-6
+
+6paJEmk"cMc#VMlh(pS"1kMCcHmah6)iMS9eI%RB*4d)Gc2IhpD&m`20qG'Jh!CE
+
+qIQKD1bPI6ZJGNr2pd$l(Jrjl2bp8(qD,-5ajMc%U$qVrrX,31qVprY*3IF$ShJm
+
+aU!4-X[G$2H[%p(dre+-*9!rF$9Me`%4p2p5A6UT2E0ILa14jrf!S2rVPI6PC&Al
+
+'l`KY%6#phiGSPa92r'V55Vb$m1m,X3(-KIF[+le1E*T"bCYQ8%Q8mdaS,Q&f[+p
+
+X@MbSGeZS2eh!dkDb+XC50%*MD![YijaJDff*)GE"pab&G@$qY+@&BY(cEHTQaAc
+
+RT39B4PYS#VY4qlD+TqrFVjRX"EhE9KYLdqLGYK!EGQ$kYi@BNi[bkGfV"l1dVCm
+
+eJ3'dV3[fP8([bd0A#m3Hlh2-LEE3eL3*6,RYh4!HpJHC&Yr3Afhl3V'B5@fKIDb
+
+mKd0eiAcQh1EEVP"[Xjla(5aQ5eYS-j*)pBh0jN5UbI%3mf8[Gi6k!l1l$3U(JKY
+
+cp`0LdLB231i23R2!MERj3ImqPZpk"jm%*[C"R-*,d2FIU,YBF*!!$d+lpi(Sc`p
+
+#ZrD"Q'8IK,BI!`P(EI!pKI,(Q(!+e@KZk"eppF&UL68&-qB$fQc`$Ahc!5QKm!d
+
+cki03AkCN3)hX&iYI+Ah*`Gr9Fd["b@m[I+RU&HcRlQq'PU*40IGPa14"%'q)Q!*
+
+a4'U%0GAAeE["kqk&D1"pRLD)"0EKG9C,5md5h"%eNTKL(H6iCRZA08*'8GiIA&D
+
+R[MFdep3e05pE[XclYS#5flbh22@YbqYEKAZ&emZjJ1@"TYS9,@mh0j&S(eiK*pI
+
+3@Yr5"%'iZ6@0pFY&BmfEU-h#'Zq+HZ'V3E`"YEJQk$RLCZMQj5rA,em1KFIjG0X
+
+6IlZpT39#G%1Q31PZlX4@b06G8fG@ib&qf&"[M45Y,B"NZ'Zm`$5VU8j!p+m4NTA
+
+!0`peU@pZaE(5JKU2@1B@q*e&D3b+Q91cT+8C,ieHL%hL[Q(qfj!!YCc$A3&e3iM
+
+JcBD)SY&D[kTeqC+@HXKA'XYphQAU)fY[aMA@S!H3!"I0K8kM2YmXm9C,$G#(kL'
+
+`D,be$)UD$b,r!ifLETREAGr#BHLcH4$K@b!q[k+jG4PNmi$p9eI8H*'h!69Z&"l
+
+8'df%pd*C,#096&DkZK!0VB)+kcmIL-Ih3lAeDJF8SNPRSZVm$LeV@Gl+,rGaPIN
+
+b[pj$DRhcPkfZ&qNL$e+RBc!Yf1&8ki5LRe(Mme(20bfKh`8eU28p,G!Ha&G6MI+
+
+&kXMhJQB[&!E9'dE12FZA,&Z'VpR,h+M%6-JVUUrkPZB9!#C[mk''1*XR8H`9ZC@
+
+-CD2b29C3$@HkPiYDk$c1A)Bb-2ppV@K4q8DhiQX42SeD3SPHaLb#lU(j$56b$55
+
+B8Bc5l@#p!0X$VF#rJ,iA0$G44RiMid2eQ*S,PL`9N!"c"-*l5EY4[TU8pTFhMJQ
+
+m80AdA[6K[Fd3+d4RUCIlQQK#85X46B[[qIKp!1eq,m@M#[HZD&P1e82dI8h)T,l
+
+C&rS&24'I'hA3FCcTaE4$KG@mj4I()9lQq&UT*q8EH@Fedpc(&pmDPrZ@!E!jCH5
+
+EFF#1kGAJ9@DBI!QF@5eZr-j&R6#''TE6Plaa3XjDj40Z9%$01+4$hkQfdLeP82G
+
+L'[)E%`GIN!#QV"0ZRNeSjpiCbMGT)X1$1m4kEh0Y$I#Sk9f234QIK[S&PCX03X!
+
+T2EZHkMNEkT3,9V5d8Kr-EQkN,q#*chdd%Aq&+h!`i9IB!qHhQS[IVUIZ`4I30G6
+
+8JKM)@-"%jKa6FjPIB`@21rP#",i@0-ZTb$G%SkEN6HT,fJi[pk+S1*mFDX2AJr8
+
+Y4-F-,rG$Jc)T'r!V`aa9N!"[e%&aTcReMEA8UHUl8INH+aSaAX#[3#8DL0A-!lH
+
+#AUFKL(FemYGBrTS26P-R[r6m)!m-3ITc0V%GSfQ&a+@qa`UU!)N!1!"TPEb4J+Q
+
+A"haek%(epL!i`5a"%maN(Sdeh[T@a$4L5TTmMrHPMFMH5-`(-f1HPc)5flbhQY4
+
+[B0B[U$YHe%$L#`S-$,1D*0P5,i$B42b,K9'dLfr#Ck4%"JJEQP5qL%beT[T'Kc5
+
+LApJUMDKq)r@MiH0*dqJM$NaqKLQ)A68i,QJ`K&H*`A`M$R*IXVKl)DC+`Q+r5E4
+
+q)e,0p"TAi!f)E-EA9&1R8#ZmN!!Dm([q-P5e#6aR(LC58meENN`CS'(iR3q1L96
+
+#4X`A&F2T`'meQIM#k[)E'"U)@[$Y`@B-BEbScQqUEd4$-69HT2SST+)RI-'JjEG
+
+9#fUc'LfBc)V'8D1jD39Up`#k8IS2,m$e!-CB%c&HUM[,PjU!DYT,+r2YJ5E`+QD
+
+GMej3h)D8YCkrE,+)9df4m+*8JIN#%9PqD3UJhKTm',,b*Z-Fh`h,DLN%,h0U@Mc
+
+,L-[Jc4a3mLE4eNK5EqC`8Dmb8Z50(FT[04V`)L04Ij[4CQRjKM*B09'$dRTK1Va
+
+K([$V)IS#1`8*"T@D[j3h"[ML6*4[c"4qQ`b(3b+qNCMrHHV'q93"IT-QBaccKC1
+
+*AidJM2VEML!UfC6-Ae&,#X&c2Ie[M-E@J[Z6"I@%5h'dq&C%ldPQYk"JXQ["%SK
+
+I*([cXCfj"fdYAjJkkVY4q4iVD!UVHUUC!1U+,l9,iVHU(BD4S(J!p9+FkF%DBVh
+
+QAN900(iemYGBCIYL0CPk`A4NjdP5M!IT)IERSPBh5,Vj*UeZ[Lei@mQLXTUakK8
+
+G1lIq,4$mqFf8T4kBCh0l009l9RM9R3#%SZFUh#6DppIlmIXUIV&R2hdbPblT-Cm
+
+-N8Z6Li`EYDV![Qki0C1[jk0pRfaAI`da(,G,0f,6l1@EHAiS(FCa3r$D'#P)YjU
+
+r0`2&P)UAAKELFhPcALQVbXGYrEGN*2TNm4SKNJ"5U9aMqiD6Hb38"$HR@P0"Pif
+
+#6`SqfI*S@[51@aY`mc4i5QVkV,ama1&J(lM0Am"52k`'PfH0ePDD$Jq+1FdV[&*
+
+)'N-#20'82&Fl#Lkal3bbe1Z0[hNjl69CZG[,UU!0c`dKXa,e@(q"Rf3Rc@p6'jq
+
+D!95FKiMh2(2Y-[!"HCd*E&`rJ-CFI*mK*Q!UhjaYcA+E3er'K!RMbLZRc+jVVUf
+
+INQQeQHH@9aE4!lVMjLSD'a9QDK@mhMaK$P9hANXZ#i1AP&HDTeURcJbT@%1lHN5
+
+DHEiA&'A1XKDcS`D$G*Dh3FPH4H`'`l1UH48`e39qL26Q#A1EkZBd0r+#6[*4!Pp
+
+"(fTQAM1hINQ0caai[,pj@91N5%GMBGI9C*k"Z)Ek*6cEN!#rRNJB[TQYb92,9!F
+
+i"I%Fl)fKIDiH#H@,4f+3!%8A'0*XDYJ'-rBaS""0J"I(BlkDDIYLT4k"+G03[bB
+
+&2ki2Ec%6`iN"kXm+8M,[cAUP(QC3IddrbB%hh5Hbf%D%bZ-P`)eS,5rhh#m@%Ci
+
+"NCB#qKXmHA,ET-rpQKarf3YcCklj*rq$%#m#681GQ'#c6Tf'141EJaK&!)Q['cC
+
+'cLdVC$d,20YD&6-`2aIMGiRbb`a8IA$3[[rVq(i'[c!!i##4dcr',j9EEmF[,X)
+
+ma83`lJ2r(cLJ4epLQ6,6)PApY64rB)j8e#qD2G-L*Ill!ie4P02f9)!hVM++bJH
+
+4II&+3`5cQU"S2aZ1!HBd%eh$J3*26qljMp2IeBJrJb`B322mG@K`Z#!,DiM4d#K
+
+a41!bc8'hjPRi(i6I()09*9L69j4p!U9Dr-+G3jdiV8N6T@,9a1%6Ka2Q"m@%mFZ
+
+YC!A!%42lQI,r+-X8`CB8$$eC45Kk9E$C"51Ch#i8,8$i+"KG++UH5F1lD-j-0VP
+
+30(qQY,L3!!kq2hqjqD-@fLr128e1!@DY)JTU$([DM8N"2NKeN!#E[Hi*6FbkELl
+
+`eZ'*h`r3Yd2pFp+Ip@VpZ3b$Irl!R`i)mYqicrj8r&Vq@rVC(k2"Q-$ICDrpB1e
+
+Nm2Nji%rJ@B9CU*A-2[b*Q3MpbirIJ&)p6a$jrKYp[pkR+J'2l5lSjTMSVi10DNk
+
++rcmFIRR2Z+8R-JZZ&PbPH-EXfl9UhVmEX`NCLUGQC'C0bjkH-f1fBdiK#GEE%II
+
+8,U&9ZD'(4Jcq0-qEkRbTE*jjMVPd@@d,lK"`!V,K-hF!iU[J4Xb1'c&"e+rp`XK
+
+4X05`5(a&r,ki)2jD-d*Mdj5KC(AiEF$[![`ZaZmbr+l%laVmVX2[4[bqJYm`IVI
+
+Kp`hmlX,[([`Ha'mEINrJ&lHp0bm"flR(2+(@2+(32-'C1q(Ph!Q9jJP[),)%[+%
+
+`%cef+pMj&2c+E+K,Tjp#"-0#"YmVk$%`BFR,b-BSb9+B#S*a"bJMPXc'bmhbHqU
+
++qZAdm-[eG8hbCHT5l-SNGN,,-[kqS`C65ejUDTT@e'"@6kL[EH%(if@bI@$-aLU
+
+c!@m2LC)9Y,fT@B'c$f2f#Xm+f[RF!@UKPXqrZ+39Y,K*P)&@5B"4@,p%HH&BF0X
+
+dQ`8f&IMMG4Ar4"P&rrl&(c0FPUD2ref-rL6Ee5cQlfI[Rq@kLZeL[XZC,b,p"%&
+
+I4kLB,r"r8CHrrVYDrErZY[rcpf*0,pIJLpTmdKGrJ6EH8hdB[N$hIrH5MDD[0R(
+
+%e2MiQrRe5@AqCLleaMRSZ[4,Y2kZ)a8)*rBJR"-&X2l#,SC#QGADi68`qH,X)%X
+
+`9rlbH0dbD-A2cFES2kA!ii-0NiZ-`rfFNc8,BeK+i*@A`VaI6K'NDF'r0Ib9,C)
+
+dmKDErflmfh@$jKfqU"Ibrr[c3Q0J0'ld4d14B63d[8BI`5rZLdIMlR`dp-"'lm!
+
+[9$e'VmF[EYG(3h0S0(6)4Z0@HM6ZTdG$B@3dlQj(iaCh0'lR4q-fHh3'IR2a#bf
+
+Yd9"!'4f0Ap`$MiC'8b9ZabYa4eaj%lpYq)A53bA`9`*r*I"A!RmPm&F#IbA`9`*
+
+r*I"A!RmPm&F#IbA`9`*r*I"A!RmPm&F#IbA`9`*r*I"A!RmPm&F#IbA`9`*r*I#
+
+2![j4`$m+q%F"rbMJ(`AmSi"r&2#2![j4`$m+q%F"rbMJ(`AmSi"r&2#2![j4`$m
+
++q%F"rbMJ(`AmSi"r&2#2![j4`$m+q%F"rbMJ(`AmSi"r&2"A!(m&m&F!I`A`9`"
+
+r"I"A!(m&m&F!I`A`9`"r"I"A!(m&m&F!I`A`9`"r"I"A!(m&m&F!I`A`9`"r"I"
+
+A!(m&m&F!I`A`9`"r"I"A!(m&m)m%rT(!2a,i4`,r51!I#I`MJAmNm)m%rT(!2a,
+
+i4`,r51!I#I`MJAmNm)m%rT(!2a,i4`,r51!I#I`MJAmNm)m%rT(!2a,i4`,r51!
+
+I#I`MJAmNm*F$IcR`P`0r1I#A!hmjm*F$IcR`P`0r1I#A!hmjm*F$IcR`P`0r1I#
+
+A!hmjm*F$IcR`P`0r1I#A!hmjm*F$IcR`P`0r1I#A!hmjm*F$IcR`M`$q%F!r![K
+
+(!2m)i"m"r#1!I`6`M`$q%F!r![K(!2m)i"m"r#1!I`6`M`$q%F!r![K(!2m)i"m
+
+"r#1!I`6`M`$q%F!r![K(!2m)i"m"r#1!I`6`P`&r'I#A!AmCm*F"IaR`P`&r'I#
+
+A!AmCm*F"IaR`P`&r'I#A!AmCm*F"IaR`P`&r'I#A!AmCm*F"IaR`P`&r'I#A!Am
+
+Cm*F"IaR`P`&r'I!2"rlK`$mFq)F$rh$J(`lm`i&r12!2"rlK`$mFq)F$rh$J(`l
+
+m`i&r12!2"rlK`$mFq)F$rh$J(`lm`i&r12!2"rlK`$mFq)F$rh$J(`lm`i&r12#
+
+A!RmTm*F#IbR`P`*r+I#A!RmTm*F#IbR`P`*r+I#A!RmTm*F#IbR`P`*r+I$M9-5
+
+4"IbP`&m+r+A!A`VmTF"I#[bP`&m+r+A!A`VmTF"I#[c$J(mBm!m$rQ(!2`ciK`(
+
+r-1!I"[c$J(mBm!m$rQ(!2`ciK`(r-1!I"[c$J(mBm!m$rQ(!2`ciK`(r-1!I"[c
+
+$J(mBm!m$rQ(!2`ciK`(r-1!I"[`P`&m#r#A!A`,m*F"I![`P`&m#r#A!A`,m*F"
+
+I![`P`&m#r#A!A`,m*F"I![`P`&m#r#A!A`,m*F"I![`P`&m#r#A!A`,m*F"I![`
+
+P`&m#r%1"IbM`$`AqSF!r&2L(![p3i"m+r%1"IbM`$`AqSF!r&2L(![p3i"m+r%1
+
+"IbM`$`AqSF!r&2L(![p3i"m+r%1"IbM`$`AqSF!r&2L(![p3i"m+r-A!A`cmaF"
+
+I$2c&`&m-r-A!A`cmaF"I$2c&`&m-r-A!A`cmaF"I$2c&`&m-r-A!A`cmaF"I$2c
+
+&`&m-r-A!A`cmaF"I$2c&`&m-r-A!A`cm4F"I"2a&`&m%r%A!A`6m4F"I"2a&`&m
+
+%r%A!A`6m4F"I"2a&`&m%r%A!A`6m4F"I"2a&`&m%r%A!A`6m4F"I"2a&`&m%r%A
+
+!A`6m4F"I"2b&`&m)r)A!A`MmKF"I#2b&`&m)r)A!A`MmKF"I#2b&`&m)r)A!A`M
+
+mKF"I#2b&`&m)r)A!A`MmKF"I#2b&`&m)r)A!A`MmKF"I#2b&`&m)r%1!I`M`$`(
+
+q)F!r"2L(!2m3i"m#r%1!I`M`$`(q)F!r"2L(!2m3i"m#r%1!I`M`$`(q)F!r"2L
+
+(!2m3i"m#r%1!I`M`$`(q)F!r"2L(!2m3i"m#r!A!A`$m"F"I!2`&`&m!r!A!A`$
+
+m"F"I!2`&`&m!r!A!A`$m"F"I!2`&`&m!r!A!A`$m"F"I!2`&`&m!r!A!A`$m"F"
+
+I!2`&`&m!r!A!A`$mJi&r-2!2"[l"`$mBq!F$rf$J(`cmJi&r-2!2"[l"`$mBq!F
+
+$rf$J(`cmJi&r-2!2"[l"`$mBq!F$rf$J(`cmJi&r-2!2"[l"`$mBq!F$rf$J(`c
+
+mqF#I$rcj`*m2r2R!R`rmqF#I$rcj`*m2r2R!R`rmqF#I$rcj`*m2r2R!R`rm1"4
+
+dT!*r2[$R!hmqm1F$Icl`j`0r2[$R!hmqm1F$Icl`j`2r,F"r#r$I![bh!2mY`(m
+
+,m0m#r,F!rbh!I`[`h`,mY`$r,F"r#r$I![bh!2mY`1q$`U!2fLSqD#(jS%DB$%@
+
+mC1Jd*6rm38IIfVleIC[kY[4Ykp[4Yk[[[EipI4rdlHXld(HSldKI9pra[K0pTrU
+
+J5h0V3hYNHe)C&(+,M1P@b-[mMf9Ieebhf%e@BA#ffqb6R#,'FJcQ5JbcdG,NIeb
+
+fU'c&Ep!TrYfNkB",*'6fc4"KrVi25h%'pNV*(q#Pd4f62J2I$@2ca0LbVU%9#lI
+
+LT'Q0BBE3)HUhhC&iJ5i-AZSihfThj2K2+"rI!T4jc8(%lErXcRDZ%PV'dX*IM8#
+
+882Eeb,99@p1&`i1Ar2(GP-r1riYr+D)GAd1Ha,+Zb%Y!2QMNBdBlLA1Xa'qeZ8N
+
+BaYm5-AJE6hMhAkDk2ZC9,rGlUcT$U@Nk-,N)Hj'3!(AeVLlIkXSIU#ScrVBl,PJ
+
+0Ua+68BP89-,aY")@qNHpmJ*jmRcrih4M!2e#Adc2!@'`f)&MB(S-m$H9f"GZpGK
+
+mF6+ZCVXRfPb9EK%ab("6@GH3!"Y!1SkkCIpP4(`&%AX483MXJZLQ#rkqIlZ'1L"
+
+[UBJc'cf4iqr)6JKb&qk(+T,C&AQ,U6,,[2+Z@I9&N9'Y5&%DqL%FCV1f8edFekh
+
+Y9+2*A8m1UC0LQ9HUKTLC0HSd9ffk%4QhD1dQ8Eh9%q[6F"Fr4lf#b($-+3YUA$@
+
+4XZKkZh`D9`lL(3-aKLXjd#NTk8E%*j9e'6#rCQa9id,EIAjCaaDFhi8@irjGei2
+
+9d(ecI9RABklBSekTYL(a9QmqiUAEEeh&*-a*6eQAhjSIQ"'SSEqNf+0(C9DjU$l
+
+,AAUC[A#Xc#mb,C+rqRXDJ`A)!dCh%QHUT)T(VZ@,NZ,UV@k*)FrLPEeT9I&3S-l
+
+-B1'Ep&e6Zd3SJM!A%HB`QM'-F!RU09&S&)c,2m0iF!$MUQFB[m0D&3UKNC-#K0r
+
+m@-3N9k9(bPi1S*G$F3A8SiJBi-"F5%ENVZ3Uc'5[QS8G(`TfE@CkT1cDT,6"I-&
+
+cjXM5lbB)3Vi#5J*cDk$@%HYH9$P$U8''ZDUN8m4j$-JI&JkAPEi[E-NAeZhSdbN
+
+TpP#IqY#R,[039b4QKeRI8h(YrJHb`Y4*dHM+CCpI+-SAFYEQfUeI"Kl$BMGA@S%
+
+A2G@Cr#NfRb[5("RXR5cZRFH!6+Q[@&`,f#+(,IhjQ9[R942V%5m+EmiG0A9fm*4
+
+&IEY,+F0bbU#e*S3l((0q,b`(4qdH61R(,2D8+ZSTEh5b[AUVl%!I,Y35U!Fp*IY
+
+%$%3Xl+iha0P3MUA)BBJGMUqPjq(C5-qMDr0ElrSIc,NYBXcISImL-reA0rP[PAe
+
+pk"RRDR%'EbF+mXb'[4qMKl2Fma(c#Q,1b*Jj4AKI+prcm0k3!!dmaqEFp6mN0-A
+
+IF5kP5#0flmIdJMcYb12Iqh'DeAm[R@D5NqSB6%iI+QH'UaFc)iPQ4Qk9p8ZbcM)
+
+l$(p-HU5-,0`8V2U8V@lG3'pZSajk!ZS)Gq2b9iD,K`b*m5,$R(22R&9kpB881c%
+
+'hIN9!jfI!E5FABS$$5MVkMeJi8S%M1S-HmbV+SP)0j20VUH+#U0QV0BELFq(#aF
+
+'jN0@ZY'jbZqRV)AY!fM(ZE3qSE+Z&UqU1G6(@,VAJ'13!-ZZ"4D2l)&JI+$l[EE
+
+LLShM6q0YFMphH45+4,ar*",*rT,Ab+cfRi$l,A,&b*KjN8V&XUN5jX46ZN,A-Sp
+
+4-iH8c$fhe-`Yb+c8LA4ZG&epP10Y[rm(ZjRcYe9YT6cIa6db"&GQ,@jYAL`2NCQ
+
+0r!0cmNh*fUGZG8HKQY(l"`iHJlFrMmHJ)T!!ladPpLV`6mPT[RTS"q+XaEa%&f`
+
+cTqH",cIL+rT$+q+bVF#e,CQM&J5MUPiR9(('5-dXQFJ4iQ1kaX'"IUj8mbHAP1`
+
+A-G9EQe-GApZl`MVf+Pljm[T[,iNVqrU`mb9fYkQIQ`hFilSfb-dHp8Se%(1fE,0
+
+`K4B"frh"ULb$`"*e9FcTGPe1'ZU55E0SN[1,e$'rhilEm48Pkpf'&0crRVHkNK%
+
+9[Ar)E35Uk2h0U2@*kUhM6rRl(Zc)I#``,6UhIq9E$NB3H"XiRcI69N(r&S*GNfX
+
+@`HTK2"DX'h9eR+'Shfp(4&U14F3'AM15%3&dL8$AJZmTq&jQMX6dcM6VR0er[Y&
+
+XrrCMj(SNh846ejQ%2FbNPfk,Z*,YER0k+YM*Y5bBacjAXYb9r#b,2eJ*rS*ETRR
+
+bd"2PJh'kNQQ$8B+1(9JFa&2&R38%`K+FZH!`(XVDZF0K5Sri5@rFm%I88j2Z*Yc
+
+chf#1!-'aZkABNYQp'A(SAR"JEjYBJl1e2-*ab+4cYK[YBJ+@NP[Q2!SlfQ-rreI
+
+)q(h-Zr$M3e3Ce"UcBAYNF(U0JASTjaGUPF*jPR-&IC`Rj5Gjm1l%mR'Uh1"KLm5
+
+G&M4DYY[03pdC902Y1e23aqU&PG8EYmCJ4#bUK6GpbFb,aJ8hHlrIhUBKY0JIRJ#
+
+Z3B&pB%0r$XAjM0-5`jA)6@fD%,k,ZBPZa@SP`kAXM@VZ5j&hrL4ZXFD9ph-dfEq
+
+XS&[1#AjYheibej-J18ap$2I@)r3Q,bZSAh4XhV-0UA6idUIB8PhF199I!jZr&Uq
+
+L1$Z+lHQ')-08'@U+bV(K!Lm+rr#d`KX0MC2ReTEqD5MpRJ`'iIPA[%R%4L&bP+V
+
+L`FZZN5ITTHTVJhR0H6GQ!feYA%N@Zr9,2mR!l4@RD5MU$b3k0rBPKZJZ+ABA+K(
+
+BT8NPeiIifQY!R4Tm9e0bd$(X8,$,PISZ*P6"@YjH@M(@[V4r*aSXipPBbV-a,BM
+
+V%L+Ibc5)D1V@cc$jX(eUark%[*F6A[N+QI5ii['H*`raArYihj1B*q9i@B$I&Ic
+
+l&2iCqp56Bdmqi'rq(Z)B[M6K&ePk9MrTTRG`d2*d)p8GR5`6*N5EdaVX9mV,ZMj
+
+j12iXa93h$PRYA+8eFG6,aSUUVIRYMUr*e`(RVHf5jCLpU0#SH5@A!D@5AbT941'
+
+pqfL(pXcC&1khIhP'BCGNeq&2ePC[65B@)00U@`lh8ND`PaTT&iLBdqH!IamiE&X
+
+qXFpRD3I3X3XG$5B2cSj,J)'Vj5Xj0(SZ(I1Jbab*AE$0E[,,Yc+q,)j!TJ'j34E
+
+1Z5BE5faY"cKSEac8rYCCE2)6+9Gp6(",%1,+RAf[HLYfTKlN#fZUUS0ECLJr#!l
+
+1L0Gj"LdZqlTZ8`P[J8*fkS,YKF'q9i`C-lQ!+UaUc6S2qiJU()LNq9'[(`meCI#
+
+PC&FeErme+Vhp6U&kG19)*01fP["h[I"VIiB+IAX*QEQIA1D9qS5+@rE1UGF*G3h
+
+fRr94rAF6Pkm&e#E,e[V8Qka+ZKi"pN-@qb6N"d1B+ib6bM(E9kJEUmFJYpLi!N*
+
+mNK1e6TAl%YGaLRkL(SUjGd1[89CDHL2NiiX!TdrEBMa"61JjChIl1k%V!T9r#HA
+
+r,Xh95aLB!CRFC9hIjahF-Ur8H6ACGB+K6806EVZX[9mLkRM2E+HY4Uccc8eD39U
+
+%5dFlp6[@Pka[aLihG"qrUE5&**Z5kj&`Ej&,Cdi6-D9h6GhUc[PA)34NhL2%f96
+
+X0kh%)NBe4#Ne5m-FLLcN(GJ6VGMRh,emD3eV`+Q1`qlIjc,c0%)qA'PJ"f00)Nl
+
+q&+S5'G2f9[FPRdEZQKr(L3,B"m8jHhImcjae45I25hN62-c(fq'pPT,bVH$L*d+
+
+l68YjNYFVl*H3!0jX448'S3*bp5'm)Hc(aP+rbX@)p*dTV@RRCSdb3eQ2Kl+'rHm
+
+aiT!!Pl3*X4aRV6$e9c2lV35U,4#F5-Gf,Crh$*A82CpePE%8JJ$T,X[r)j0ck9r
+
+kjBCUHalUN!$9Rm[N41J+LFH%c'!m8T(09&($Am[EHPS-P6dc9E*LQpkA)q-YGQH
+
+M-9AHa45fqjldH%9LJ8$hCTLp)XDjP0M1J22Ua2a1V4ZQq[5N+PHZ2GcS'd0X'EL
+
+Y+5%%k*VpB&5F"'(r@FRXFFh`NNM!qfX6l5,"LXfHie"+1cCT06)r0qBj3"$+N42
+
+%Qj&LRiLjJHeF!r)0&JPV%"f-6Sm'KNAQiZS0CP`-e+k[hR3-fmXjf1EQPM+rN!!
+
+Gqq0epI8qh)c"2DhDIHI*5c1Cf(RJGC%(9GMdm6TUUYPZ2LE-F0!kK5VPkq+ZbKY
+
+R9hC*HE52`bi3r!Hc-,ZXkm&pX,BXX*iTc21#-SZD-FQdUr)4[Ze9*Bbb2PTq0f#
+
+2kYMR`N@ABdrC#K8l8GMj&4kL8$'kXk9H*KlK8pF`BCje1VmA`EFi5l#I3jqiHAp
+
+$90`G4cj-!cX)2lV8&X0E#[@k+a%cXhU$mb2H)4K$LVKI&Q#hRJi%dhLUj,M%*#r
+
+apZdEI9V*HQ*i@YT'J[15d6E*[RE#,5mk15A!f*!!hh-AFb9,UHKXPaL4)C'TbcX
+
+F3Z`1hS9i6R!0FZ5e`HQeG-rR1D"FEDhPf!$KV-%%q$Bdk9dm1l!(UQe)d-&$BfX
+
+ihQBd'#VD'q+`1DTpV4ef'bDj%LQ26hLD%$1'1bbJX%[@Cl+-Z$L9V3bC-PjIF'&
+
+he('Ekj'cF'Yr*82#S!Y`YEGF)Z+K6d14fhHlQhk#-$lh2H3U)pe6q'NQc@(-LkB
+
+-BTef45b@lZ9Y([VVU`X(+Yc!0@VJ'V@kihQ@N9rQ"RZ8ACE%@lEYCVT[#YP`qD*
+
+k,IaB,fZ0#@a%*208#FLq5BTPa(8`Xr0)!,(dZ)U6[H&XMp$QFI4XT4i"VNG!U8G
+
+@X2HGZ%4322QM6934TblBlq3)aF3be+58kG-9fDB$Lc#Hh%D9dZ@XPkq9`AP[6m%
+
+QrrJ2U4I9cV0*DhhRf5ic[LIG[P1p&,6RjGPGE9T-bN`JAU41bR0h![1DY9fTcQh
+
+V,R-F9hXPci&Ue)rl),R-V$I)2BUk5&AE$F6+rDKFbNQ@N!"*EPd%chMUZbXjmQ9
+
+0V8YBA)'f1qN+e,`*EFp9jj9p`pJlJrGMhcSEXE`[RH5HcjfEiiNIb1(M5ZI`rC[
+
+GYAF&j[AAbVVqNZirj6TMHl,DlDTq3G'A&FLCccRVC'DV9qX#8d*QL(6fki&jfXX
+
+SA1p+"1M*E6)hGQA-h["dGLZ'CN9p1R1R+c1&Q*iVkrUE3jbeB"apV38$C6HSbE)
+
+Q1&N#GSjI#@CcMZj9''h2LSqEfJamhm'X3C8I1%X)aIj6Q$,0*EJ[#m8(HKEAV+H
+
+fUedDK-mBkF%kE2X1IeT$NjRdXSriT@-FeCJ3UVT"jT934AYkYDRIlJ@,k`jGHeR
+
+AcibBXP@09'cDIMGcm`hERaereh%'ZHG)Phc6H9(*(Ik"Lp%XRf,h2`BRMqA-"X2
+
+C`Y9#Yq!U$['I)L['ABr6(LF'HqT(pQ$eRHjJYIGI(+KHq1&9UX!!VU%CYamE63H
+
+cqYkS[Em+S2ib8G6m)rDC`3Z)lA9U&h0kJ-[+(3dQhFXkKA15KcRNr-1q`'+&KUB
+
+Vb+3F,ApAK@E$QD@BHc!P["Jl1QYrRBQYbS4MP,QfmEDXMNc'9`)CXZ98NNe%0A1
+
+51[b@Zl)BElRNS`0ZmdjGCFcRVEQJ8cRdI#m[hmTBbYdRdDQh"2+P"[*9,15l1-d
+
+,JP5hb4fb"fVQJNRKBM4f6lVm2eG59b3q!l(GbD,iEA3K&rQ`+eKTQ9%P+NH4QM,
+
+21-kcE5#22l5KcRQaf1qAr)(E@ehY!T29lqGVUDr@'ZFm-Y[8@bPXRE$T((MqIqr
+
+A#Uiala1f2+Ya,Ar(H[E03"kTT-@$&`@l5E1)T5i4ITHMPLS4aBbMZ2q'Yek%Aj!
+
+![9qIcERUP&cPZ"iUj(bmhP"GSR$RBmVT5S(,f4e52SM15AILm$BN8BTA&f-$X,E
+
+%MSX*lKJC84R)UDDNfLJ8rj,AZ83XmL[1@SNYhcJEA`EfjFcQk*YS,QIp(5+e[c@
+
+Vdhk-*lKFkGNjV9Y$k3CV[KJkEi#4B,Gar!"a%9IeB"G`Yi&-9E),&#keK@lISA6
+
+#ml)6BV'AZq',lG)A(G'EpeTAr19Q1eka(lmRAlNTN!$H9TX*0FGlXCJG8c-APCQ
+
+Tc"HeMH0miH5XFmPpR69[rQV@p'AA,+21h3AfQkVZUa,iNX,X8I$bpCJiqrjaJk6
+
+U5%d,f5,*(GM9$C,DbX6iA,SR8Zj+`H&`qf0Zcf9M+K0DlcIZlpqAfR(p@l6HEBR
+
+HY3QAf@l$T,QjV1YQm!U)r$Hf16[CdaC"qj@1Ji'G$lMJIpVk029[IIlX#Y!&eBh
+
+BUFXrf[mdiLlPVcUPdFq[Di0EP*1@YJKjDp@KrfplYLp2f,)G[GkrC6Yki6pYfF`
+
+HqG%46-QZ3FjPAf[hlEV1(H5Uj!4RhqGce*af`0dl"5fNI*A,[1hYE[()U'46Yr,
+
+B#4q0aUf2ZJ+hY6VkUT(0AD"i'VFHj[iKphrGY#@)8@lGDZ(5VYD!-di+p!K[&fm
+
+*6(*8`(UV#'hHC-1L*V)p(diBfX)#l,B4[immViZYpk-Z@P[`Zi*Vf"*N`TcP-TR
+
+[rm893jHPIbTEeA-(*iGpS@DT#RPpFX)pjiVRAPZ$#,@2Hmi&h3ceFPQCL&XUUpi
+
+VdG9UKKNrH*rV1eYKM5l*'[@fCcBUb@ZK,&BK@('3!'l*$A(136XcUp+k(mdkYVK
+
+XM,i&Q45fPJ&XVJSeHiZD8HVE`R0fYPYHDf!20D!fL&&d+p",2d%p'ra(h8aGj#p
+
++cDQ[[[XV8B-Dr$DF$H6-#YdPUqShrR,bZ-8S6bPQ6XiXZ"Z,2R,4YEQe*bUfqKq
+
+KbYd(j5EPU()9%0pI46im&lcSj,cj14-,H)41EXEPHN&I5-(efqIA(DLh8p"1f0"
+
+*TRIa@L3Y$e2H"p8[G,cU,@E)J)q$01@@)R[J6J@lKL11`4Z2MqXNKc'9T1V,Rpe
+
+df`MLr+crRX6H3!I8+`Qjr$EZ9!IdYS`lTBUD99p9S'Eeh[l"UR5H8r@XkPIqI6e
+
+-e(BAQ2@`ZF'Ih@QM261iijqI#Hi*1fX$c(83+T(0q#F$2laI!,ramBlJ&%EQPT)
+
+L-'06DbcM@59ELImCBMeImE,UcB&+TRfU`"9FU(C([693N@V*#qSPIp@mS6j$jC5
+
+Yl8#Sji'ZXE94d,b0@DB[h0V298k[qI[jd*Sdf)QR#hr@Xqrf2Xf8'CJKL`-c4AU
+
+J2MLpV+k8$'YmB3Vc-@lErY[FqAcHr2"@S+-@"DUJqXriL`Z$U#pMXIFK(h5hQ@J
+
+ImX2G!aF9k+r*AHFAdFDp!hSTpVd+p[AKErXSBdGdS1lUYV-ASG8cDp6E1@!X$GA
+
+SEh2'kT3Kkh5m9r)Pc+Ep3--jmpZHT-!88jGJDj!!jmdJ'Vb'e3`KFHY!S(1-@hY
+
+#QkrBKBZGfrQfrbrarAa`ZVCYDAY"AR%FPpX&Fc1c4Yh-@"X8iplGi2aYCq8Dq`+
+
+PrAcr[GmlffLfY"qAM%V88,!"9Upp9h$e+`1FPacTFcDPYSQAm[#Y"YmKDk"rEED
+
+2A[P`5d"McaIN0*&,IhH4p[kUYP(8Rap@Jhmm%X3Mr4LlAM4cKq3ZrG0V2pD[&ee
+
+Q'h5PJZ,QSarGGKjjh+EKk-2UPZQ$mZUYU-0+RK@626%qI`qr5(Hra$@C(0Mr,95
+
+fIa@"+@Gf@Kja"EA6kldh&1dDfI1TZmi-bGeer["e&q2%(CI0(05Za,`,2(A496'
+
+`YH0QlKqhGQR2YRC"FAIY`(bjH"1PjmcEUIeXaTj1ChB'DP2K%Jmh$8bfBR@bh8&
+
+4YF'XTk*qFCHKpV&@l-AENd'Kfa2ZRf-A'd(ar5-r[6ij0*!!bBp-+`+9iQD%fp(
+
+H@5c4"8Vd@LAk15@ki&F0E%i[cSp38U"6e)63@q-$(`3ZXpi+hI'%"hK`E#GQim,
+
+dK-i$N!#*0TDDIZrfb@N8ZlR*S@PiXNAUN!$0RFm+#cPbraj6aLS'6jF*f,Z09``
+
++mq4N4QMVarFBBmCVQN39&0FIpmIpq@-CecKFBA$A,JYX0[@Z[FdSHllYm%rfh&p
+
+#X0e@qCP$XT(VSLpcblSZ4MfpDVCkiFp6qMQ`kPlff*r,EA-1Ee(Y5mSAbVUZ,!e
+
+G8UjAVNPb3VG(,c#fpIdF3IVe"@8$BFkXp@SqFfCKKl#QJR2VhQ,hpPeQ,Z$,6-f
+
+6G+rTZVc6-eLA@$6Z2ppjH[m*pVZEf+qD*+),j"&[Fpmm(ja!lkaTJfjB8&bl2m"
+
+!E08lIcm$fGH*,[Z,UIbcqTXFleh[`14IJ"idjer[c-#Nqe)!GKAabZkFTkrNElN
+
+9d'S`NIcq#4Ka"'H#VPfTULbc25[!)3fa2hMIY4q-*Rl4e+Iip(IA6(dj,eibIBl
+
+)[ZrDcrFVPc@KS(0J6r(9ckI0QQG6j'hCQ9H[L'-F3'F[$@6(*(NlSbd+-qG2D,j
+
+JfU5ja&9j8@9fHHPcG[$ANm6-68l)k08rCKCI#M!M2JcU'5YXeL5dYNqpNr$lli8
+
+8G)fE*e4YSqeCcl50kY-qdbBbEREmD+iF@kh@lIIAI&UMB`Y$Yl*+T`!l6pQPaP5
+
+A[km,6M6CV+JE&q[5S2I'h,SMkG1k-)LVAlaS8(c*ZQ2iiTVJmJf"X6'`MqR6Il!
+
+e*Z*E-+JS!(%YGC8GceUCkS&NFjCQMlV-Rdd)ipIILZZC6*Qpm'IbRJ8A'rTHb0+
+
+4KJ)0Gb'U[k&$p#I("hI64km0hSIeEF9%"qELaL!!*&#Lq*0@VN-!'`24Fa3QDAC
+
+KA4#MH6(pN`e%RB)RKr(8$@iJMYV9#ikMfCpfRe2CE[G[)`f0h"@*HJCHBr[hrNc
+
+U6JkBA1FCI6#dLc$qrFR9LQlUA('$eGmdBeM`ShY%Qc(mU@JE,[F(4j8E"I1f9k0
+
+4GmarLfAIBBNPYV2NAAX(YZ#+dp@T5T6E@8rc8fdLkpUXla*0kV%8+MEUmXbq-RY
+
+"L93cL4f2qi3rC[fAYJ0+0P9E`Dqi`arAFVcD%!GSqJC0JD[daEb$#FL06m")rG9
+
+@elrP`I[8rQPYGYk*E5VlqSHZq8'EfS%RUJ*6BcRR8cc3[S`clc'SD*!!'jJl[0V
+
+5+Ldl8NPacEaN5m$ep'F)3UQ"r%T9aF`[+S[Ejrm#JmPGJ[+QQIH-d'jk+hT!emE
+
+8VE#lG'p`6Vi[CkPS%&Mll)S!&l+Bp@KFVXFZd#iaEiR[GNRGQb"fmPRHS+BrD[*
+
+(EG6M4rE*H'6,p$mf0QQ&rl&E&laY3p`Jrb1mGdhK'4&pi)V#99FA&#-kT`"Tp%(
+
+*!Im$paeFHh8G40B'D%bU'I0(LBb[4SRXESl&V9PhSic(6H3Zk*mK2PqG$ZrXr+p
+
+6iIY,eDR`MV`l`XEQ"iV+P1l!"5S2jjA*HbHKeRC%9@'PHd[D(60Xph,[@EqclDp
+
+@A6jemEe(jfiXZ*rdB2II(2MV3hppjq(KAUhrj2FE2UQif(kajq,5ZqppE2qV0,J
+
+Y+'K2DhHSkQU0#9*(AqRTjpM099$jJVkUVb[&RVmIPcLTT"BlB"-dB!fT&EH-2I$
+
+4,UHYTkrC*[6$P!BQQD`Si81&bPL0,X%VG+0@S"qLEaG"N5@Q,liF)XZQPlcr(9-
+
+jppLGRf(5I[2q0db4'iaTqL#Q*`L6j@[[[f+L2NAdlE,2-&Qqp(42CUMH"U!Nl''
+
+ZGFU9`Ui,-P2X8Y08-&*rh-6S([mYbQ2U-@H`)TjdJ@QGd()6X2fZ9-Bf!me*3)8
+
+`m683Vk45FhZG*p`T6fVa(@96H`UD+S0khK6D+RXQHU9cHiEGZ8c1$9&(6q9-GkL
+
+cK$'"5$IcJQfP`*M01M+T9$dJ91i@6RQXT!MCZ80HJjq@qpY6[%Fp3rG@`eDVHX@
+
+bqdSYQ)cj"&di8ITIc[Vq8#hMUfmI&&bKZHil40UQjZ4kR#`bhLfpMfNpm1Mp(F5
+
+Sa(f"kL5PU4S*D[e&VP(RGZ`SJ5jGL$R4Y[,"#LT1T,3R@lbUTmGHM'4Gq)D+@a8
+
+k'LrQ(&"pDMZ"Y*ArRcRlP@qa2QQEUm6K)DeSTG*RE@3+fa+ZEM)ATj5c%Q@qZGM
+
+4!IdplhKS8%[@$16NlA*iA!ZTE159*$H!9hRGKi++Qir$e'CGU#-iI6J(S-f)DcZ
+
+CVddPZ$08fj&Y9FrU(LcNMN1H#q!,JD(BZbUGJ6D+bCEkB'hBC2j6NB!Dr+alc+R
+
+eU$3pULBXHR'(9R%G%15+5E4b2fPPF#NCaXKZXTe3aR+iP4bCFZl'r94D1E4#HZ4
+
+K-)ITVY+DRU)AfH*9[CQD6%#fD2E-U)3r!pp#+,**aDFplaZCY-Q136B!Ta,L@p5
+
+D!4Q+lVPF8(2ZhI5BESmCBbVP5VGe",9bcAG6,AIlEDPIHD16Ym`R5#e)ATKc#l1
+
+,%h3,'q-FD8'8+TlDeH!IiF4SC90e2qZABkIMIS6fYlG8idXf0,-r!A2l)iTaK6c
+
+aYM#$QFN6iB4e!l%#HHZJ,qLir`'a#'k5LQL$Br+D8N`K)1qj3p1&HV2J1F"#raL
+
+SLjSRPlV,QLGUaT%&kA&`K@'PFV8p328U9rYB!21L!Fb[-ZCMrbYQl4l!p#-CQac
+
+(9!F'bKqQ&AG#aTR1'([jQ&+pM$-b8qQepKR$#N3L@LN@p6-XR6%``*HDL4pjZa5
+
+@T+TR-DAPd&!fRDI'Q!'9MlI)hXRPHl-Ga[548,TlR4N5P"Far`ZP3N%LDAH(%h@
+
+i6T1CQR8D[L9H$LIG"VP25hE`pZ064J"95@5jb!Z8Kdh0[(Q*FD*rBm6lPYql#jA
+
+F6'JMTa2rq)9DC9l*Y$9f9@p9YJ1`+f&khL@HD!lTPqDJhk!eH`8C,mHJ0HZ'TV1
+
+K)@9jMjPUlhHC`+ESii+H,ei1li*E!d04VXiRT`$e5kR6[2(*pYpAZKIj$AJ%b%V
+
+RfmdGdF6UN!!0LQrX"Qc`f`V5d+1)dMKUc@8phG9Ei83#V`2!h)6jq6QlQD1NI#Y
+
+hjUBdBXdl16C$LGh)REQ*Z@ZTDb((mYi4-F!MfRqR6j'L2VIj!a`dmD358P&f$,S
+
+"Z6`Q%4lDp@e9%53l--R$I8fBfjRSKA5TEEqY80&)#%mq6@LNQcH4Ai26T`*q*q"
+
+K')BD)ICV-MPbhNqk'VV9b&mBV'j@N!"TRA9m9Q(H6RjDBFj*A@(djYp@H!ABl3T
+
+8q,0C4AD`D6cibqP6Jhil(J9(Y(LU$kb#YH&9!pJ%Dc10PH+Sq#deH*9U!,iK%hj
+
+(UNX,6A1PLLbF3AP*0I@XN5%lL#51!(1(fXApfC8cceMfh,r2[S+cQkj9PCH)b9d
+
+CEUL+850m-DUqfbIQ2"*kCmr9APalK+3H"Qre"a)[%Q6B5kG@GSVS%Qca986f8K&
+
+9d5QLI-)d!USEZKE*fZUY,pVprJUK1+Ci9A&-X9@L-[A@iFY&iEIU*P8V*9DXp06
+
+'SYZpHk5ALJ#FYMY0F0c"liadGQFKU[*`X6(JI,"(P*0A9,MGFF$ILpr1+A$Sk66
+
+"piGXAKbTCM[[T#-K44j[`)X!Y(@(P[fL,aS&pXL4"HddKhaGd$2X)U9DIHIl#@2
+
+$$9bMVJHe3,C1f500)J-SLXMCJ8bdj+4CGMqf9DMA5REj)2J[kB,2a1Bk8JZGjfJ
+
+[m6hdbK6DN!!(,9b9(Q$X00Y0TX'qNHTRq1q4dJZcB!FHU6p(23BFl398"q$"EkI
+
+D4h##B[QJ0Aerr'm6J"jKSRl&)3`h()JF#`9cA`-L9PP4#69GPD0LM6)f,D"pX*b
+
+eN!!2JP'"K4E*k5%H0j45[jT1`N9IrHreBBri'Z$XTGF$!'XQl%cjPTR"eE[crkT
+
+qE+ST,"GlB(Q`"j4,BZfi3c$i0K'V8*j1@VJIaAKVVp+h)hA!!`KhIG`,Q!JHTMT
+
+HfP0E8#bdi2&aY)r,(BDGikr4%X%PY#X#'jY,P3X2E`0ES@HFDjHD-0qA([5)e!+
+
+I'R#1HlI#mTq$$REj'N&le58LZ2@aYee@c#EX,S1dF8lE6raarfAkkXaeI!A9QTQ
+
+2HLIICpeaRkd)[MfLIrA!Y,kL#2Sl5a[[iYirbaI@SeFLpd@ER1rBCLYCP[,eIr5
+
+[lMGH@F-Ea`0hJ@Lk['$JEFL"Ki(hkI4qN!!Q$Gpa05%lFY`jU,[,dqr5Um4-9b,
+
+@dKXLN!!,%I!6FK#eI+J)mkQ)HZfK)Q#TB5`eY0-0NH18'FmLCj!!6KLq*CU+$pH
+
+Lkb0p'LK'i%9mc##(LQG0$m+9KklCC'BiUMS[d(Y!lqcqLihkG[$2`Q3lq-fah&3
+
+4DC`V`QLR!3SeVUaVC)k&,JM+%H9XSLLSG5!+RL`3PHhlBIGFGa6B$f051!EDRR"
+
+dJ2I82RSIf3!cTaQ6'L$URBBhYdM!PdFNiXXPiU%8$kB&hINRb1P&mR`VqHTj$1m
+
+Vc*9b8jUD5)crqK4F,U%Hh"@%X'IlC0l!BPrkcf)jLfU,jYi@TT*YZ(b8qrH$Y-d
+
+$cm0'SB!RbcVZm[4!9$T([FK4f+rU+)1MfMJU8ihUBGAAr6FjDP!J5T6QpYrP+&b
+
+Dk5KZk,"6N!!S1Mj58HXjedD1bJp%VH+S64b&(C+1@Xa4@cKUA#!Ua&'[FT6HM#"
+
+U#NH&13TAB$T+GM(l6h!8,XpdP&aDlMr&8A!+Sk051%T8C3kZ8k21ph,8,SjD&BL
+
+5+k[ppcN+GqFkkLf1fZhi#[IGaN$F+r4e[CHMpm*(!j4NU'iXlrXC`qC!VKD1HTf
+
+M`)Yd9"0(RA"mK4M#p8QmIeUK[)TZfrkVY'(ApbYh-[lAX@ei$R-aNl'ma6(3%1D
+
+G5S$d(3,`k-#BJdSHa1%Zc`F2@i`k4!jU60mVdlDZ%I"&!`FYF!(#Zi0lCFlNh"*
+
+fF&*[-&V&62qlRZX+PPT(YZ'IUfqelG,23'il4@"lLedPX[SVLUUr"!Cc6q0qHCN
+
+JGBUS0HpZilUHSETZJ`kHMTV08Gf8kfebTD@LDMNU`VP`ckkM+LRUJ*CcF5ZUSR)
+
+jbXfjF$Q[Sr`FjH9FB"-UkKchk)%ScJ8Y)KdPYeS(5"XimTh!($ehMU0%6ANEkUk
+
+MYR+8p1$E#B'SG4`eL(1Y$86a9LhbTqcFj1h!a$bhNU0b1CFeDmkaRXd"RUj[T`5
+
+Lb*NLIfVPA(4CT+*+1DU%FeNcpe`L4j9aVTF#84k1UZ"F*@T8&ep-(-MRA0DXkVV
+
+#8G+hEfF(SRCbe!61p8SJDM0(F4F5q3lF5ZLSCcPU-ZID'SKkK+0U14HBS)kDbe&
+
+hFUlA!P(61%UBkpYPJ5KZD#0rZSKcE3Y%#Imj8-Zjp&d4SS6r(("cVMF#8F*r$M4
+
+`,Zj9*1SXmjm$6CcVc8#8m*m$,C`,Yr8k5[M2JC@Fkke!P2#I!q6H*2)Gh'[U+1%
+
+r"pSiejj!P2#I!fXj&cFH+NVici(eR!XH8A58m*m$QcMAXN#8m*m$@cMA`8#8m*m
+
+$fcLA09R2-[mjX)0c(9DMcM$r18$H8b,I#8c,-mar$Vc(ZBi%SS6r('"qq6CFPqL
+
+S9cRU4Fje0"#ePU1%"liGQ)"Rq%Ej`!(1"@p91NSZl3m`$h`l-0A1,1+S9cRAb8"
+
+808F*$h`l-0A1C($8kjbV24#9a9(#$Ym16*mcI%&fi"6R`TC44AemMk1%"liGQ#J
+
+ImjEQ`$R1K5fRMRU$SrCbVPf"U%dFYCpcp35LeR$8)Fi&,AFG*FjT$M#RfdlE848
+
+P$2)!Fr+h!phmmAb11XDj,%Ed-5[0(lM0ZGS#8D*NTfEcrSGmqE"Ti')q2'6lB03
+
+9aALR9)cAqAFqc6pe-1URq88MUGrr8AJ)hr,hZ@Rk'IjGJrNp&`DMISkrifPq9Am
+
+VkT2m@KYi[I,p%YhQE(qhJbkYJcIDk6Teqb)VHrN!)Q&*f`rL)K%-HVZ,2,"NAI1
+
+[BlG8pc@aMf6cpQk*X#$("jfZK*3UE'!(XfFB6eP(p9EbSB)VS*-9aG@EMF9K6aU
+
+[UVGQbaYVI)ZEDq@TKND5"11Rf!VQ8[CDA%jabrl$V6EleBfTHZFIRGP3mN92T$Q
+
+m*HjkjlpZrmD'5P`JmCkcSFHj+Z`*qABa+NUr+kjaK@EAN!!p'HXH#iKm6fpP-[J
+
+H8lDZ!qkcZj)-fR0jeT!!aM,mVFh'lHHT1)%V!0Y$RrLk9cY@jFp)HB8"#PkFdR1
+
+-)&,ULlLVAB&AG'GdGA$6qJ3MQ9IE!*[EpM82,UT8CZ@V3241m19&lP8@HriqNFM
+
+h6q'q5eCKM[KchJYqd)QUIBpVp@C+qimh[EMl3GFZpGmMj%mbFTL*KmYfZTBhZrH
+
+CXqUG'UlH[(5P&QP4I9B"ia6F&JBXEr+9+hI4qV+@rZI8$NAhq'(mkRXBXmHIj*[
+
+CLiM9[4l[aeJlebeSp(Q`kaBAF+l,bQYJ,YhXT4lmAC(!cR%UF&f2ZD+Zr(bVAH5
+
+m*DcE,l2a`KZ[cbZjQFq,DL8M"bTPhqUYS!D'Uj8jC%-XIZhH1a[-qD$FiI"#$Vf
+
+PP&l8A@`&DFQ(VQ2Ra(U,2aap2b6eYUF%1e[ILSGKCpE8kDG[Z1RUr6KZ4,E3G5U
+
+Zf3DKqk@q!ml6eK9pH*G9X1,j)(K#!iCS1GeN!AZQI,q3!*5-5Z!QJT812cP-Vq,
+
+#6VT[QGcTSmkim-#P5hf@[(MTZ`qbr4MT5a`(,R#F2NhTTDZpCGq'N[8$I"p5#rp
+
+aiU+P2P*kEqQXFPR+ZPlF4*J@AZ+lF$rGie3hD[B!'aKGmL08E"PYKDpLJ'dhBS!
+
+EQDm9U4L3!(mje"ETa+8(0d9JQ`22`(&F$lPF1hd'$SlDN!$0#GA[Zk$'XE%IDD2
+
+'bRk1q1CV!YG"Pc6N$2K%JrBSELX2%l-mrBJ[LB,Ul9eDUH+A)6bQJHSel3$Z,90
+
+T,[#PL*e8I3LA*'!FAM!1Er12I2k&X01N`R(NVrZ#1XIUTXldTi5,XBX1P9l@0!5
+
+p#G8RUET0Tq&ZBi#$R&c)66QZpGN0[-'cN!#,rkPq(5Ia!fQ3!$,q'%3VEe9@G+J
+
+F-A*e')Z45lhIAi0)E!q0eA5hBE6JCNc8RL`G+qS5+B8l`krSi-'cR9[fPk0@qS"
+
+lT,%'l[jrGXrLNGi91f2lEeMNkRKq[@FjK$,NXK'aRE%IJi(JBMH20V$Fr#,lH![
+
+iEfIL**SPk8*(IQSk%p[%9llP5TclX6$mbGN*&*Q*+dTU)f6kr-RY&4Z+2aEQij3
+
+h[I%b1e!bH$jLaK"Y!Yr`&aU9@9j&[Tmk%eeCDC1&EMB`rHj(Y5PQI@AlaaYRrl8
+
+"Vl2Lc"'[YRGmU@AXLADhdHFrZ(eqGk&`YVX-+CAJ2fm5ZJbqfR`5`L2he5hf`H#
+
+mGDXXESRNaNlF$!*j`%5j@L"U-+[eE9q3!*-)D`#ET)-FHKbT6k*T"#8*ed%[V$#
+
+N`AmFI(9**e3)%hG#KHbQTjBXV9rbjZ*QEphE-+KRZ@!84-$[qkp)9NXNUSlpH&L
+
+lV`-(lR2*HFQ+RZ9H4L[(ZDf9Kpa*j@PLES)mpp)*B9m@aFQC4G`55TBkQ5Akf2Q
+
+pX6R5H4"p@R4@&$!EFeXjTPBkqX'FYlhpK(qi#Gjq`MqdSq1&a6pDelcB%e!N#4*
+
+2$rXrU++EB-`,+N*Bdr8SH0pd6#XI4HDKEk[)iaef"2M0FU"c4UiK"mPipA$[j22
+
+Y,Vi4i5G0a8jf,G!C4HSrRG(0I0R6'89[iKS42+&cJHbcaf$[RJ2!hL`8NrHJ'DV
+
+r+RbK-q`0`L2NeYhHQBKla%#aTAb0X-(K*4AB1eFh'AbQRXfiY1503[M*1XAT6`X
+
+jq#NARYD',2,jXd[[D@J`9E9lkZ$[Tf&qZfFK-YC4ML'221@)Q8CC1XNC8"BLDa"
+
+jh5@m'ZXDiK$CD4DH9'3T`9Y2Zr!N)NFZFK3M,K9aQBKllaVPHaL42ZPRU@FMcl0
+
+-iY6@&0+acV@iVIJZ-Aqk91TCa*R5c4@"2&k+Fbj8XQ4`PR,1J[[2@"lk['#Q%XU
+
+%fkQ9J@cHRf,b8+CFe+5#f-eGVU6Ncp(fjIaPcTGQ5`eN3j6M-Q@lBfl*A1mP9`D
+
+bCZ@Q352Gc2RLMh1q'-`*2I38Fl%CNi,6)J!I@Za@6#RCA6h&M1&Z$`4BjY5d[)P
+
+1*bY5,SJk5p#,Gr*NQI$R'ppS*bhL6Le(ZUAlL8l`Y%kp5er0-C,*cI&H+0k,2KB
+
+cNe[p1PrA+Qi9BZh)E8Z*[hDZ8ARa`#cHqSSANXkeJDK"8MqmNabF39I41-@D'ej
+
+,al1k+!dH),FV!pGd8KP[QiEf@,KX%`m$RC&*TApm*URM&rPU0e4[BRaHTGT[FYi
+
+*Xfq0YG0qS,0)kC!!+[BqL1bmhTff9DP9&8pRCe,%Rrr'HDi0A@KdXVmRK621#Kh
+
+-#Q-G&kBTHZkFR$51rD%jDfMH`rl(`jR')(BP9m9YaPeFT!466c6Cd4Y6'-%+"8(
+
+a!),X!343Q0i-9S(Y!,k!`-AmBScF)ThVNT2FZ+Y-mVQ"59l(NrbZ"L(1Bj,ILEl
+
+FT8cb'X5mVNjb!lVFaN&PNNm+c2&Fj(K@QH2`CQ4X8HCi#Z)H9ZCiSB[e`P&GF#'
+
+`#[&2)+r`TA@"r6,*+cDH&mTFl0,!HKp$Xa@Zi$KE46F#NIm+FEQ9a5A&hV[B('1
+
++MU%T'Srfb1KVmqlDP1LG%%EI1R86LGf%6&,PFqj'h,EbEYhXm"$FU*aGMlfASHr
+
+P64Df'XCUZKMYM-H1a0"I9laV+D893iq,Ki(RD6-ea1QrahiR26C#2XfPjqmlm`9
+
+V268ITeT1!kpmL(GQdjTSIk3FNf((KR[dYK+lTf+PF$R0B8&hLpbk"QeQl&b[l59
+
+6L$XeqZ'`LqT$B)DKZmS1pUf+1FBjf,*[B3BkKUrU0U12k1`%kQKi#I",!9k8Iai
+
+S1&i`mJ[8aLpSq3AGd02,,k9i1F8[F*lAFi0I+[&bL&p`4pV6`brMm5+A*pZGH"&
+
+I,pJa`EqL[-Mp*&q`e3SrjZXED!1&(frRPf0i@DiSlS3IYr2,+Ec`!SN1*X12[45
+
+crbTHC[,,)Ea-ijHpH*%V,$J4#MmZT)`,+9Ud8aC5aQ*'!5ACRT59G)HF-GKR45C
+
+%J[rS[QNcieUI-q(dQEU8C2JCKC)&f1((&hKZHqMYr0AUV9@E5+ANp*NPeeh*S5b
+
+E3PQf9Qpp6FP5Gpe#r+R#&CP1MZ*J$3j+'Z20*N8Am!62Q4SiPPJ-jB%f-!#B0FE
+
+F6rqYXmpR!YcbjG0eaHe2&3bKN!#UBbl'l3M&D@q8L(TT-#UQ#)`V%F5[J1,"U8p
+
+cL!EJ8EV2L0kJI%#UH8[)`+i`6N(R"E%U$l3#MlS[S+DR2$V,2&F1jP61B%8$jI)
+
+pfrl(r*i0$55j(a%YVSp[BVIYY,#A1F`fl"YePaTp0e'I0MLEbXb1J#1Pf4)&Eb)
+
+k8l%KMf(X6+@ZFHDD*`FUC@MD+pm8B!F1Rh'1#2-+cG,Nhm8&3$aViF6bCa'",q'
+
+1qlETGU%l)QHkQlG3dkEc(SMh"jf*bTC&H"Hi@@1!Qi@BQ`@a%pN%EMB0hIfL`Xd
+
+Q)BDm5h'cMBKFSA#cQJ!hbd11K3ShialQIS@Eq4&hPm,0S1AYU1!,#96Lp$%VlLE
+
+NC3[YXk@Mq2S#1JU'PUhhe92!-D)2CY&@rLlr(86M8LEkS*Vd2+EiEf(VI*cc00$
+
+Z1hS([Ac5Ha96k$MbCL([Yk(`FI+R1H&0U6IR+pM4d[rM5aAV5IHk-iUkVZChiFp
+
+TN!!b(phQ`P@Q5ahQ`Rr9ihk!#BRB+[aq3phU3VH[-jk`G4cQ6TY"2H6-mH3e4,9
+
+FkhM(Np938Yi1PMSHFB&KTcea$ERSML-a`U0ef9"ch,&b)`"ACZJ6rCD"#Q6!N6&
+
+Qc"dGm2Z*cP#4MIk8pT3+QMXA6NiTm[G@cLQCia92GMKjqib,i)2`1TX#jl20iST
+
+m0A4i95pd4)XAr1k6MQKI1q#rd'cJ6H@GVRM*#KZ-Q#J6Q5IH#5qC%RX&hB+r4pF
+
+!AYD1Zi*3PLrMi2TQUm)mFjP["MjMY8UVAR0DFd2k-+e(d`UHR*9rIaam-IIADYm
+
+0ABr`IIE%TR6j[Z09pkVBU@Y2VafPT%28'8eD5jhX#d,Y2h(PSMd@BNUNi(T+R1,
+
++Ue&k9h6,LkYPT23hLrDFkNCT5BE,bY[j6$M@c"q2@F+hh'1NQBSTN6Da&,YC6$h
+
+mqQKUj-hMhF&E[2HCc(Z!"k5VbXib8LrV,(2K(Lk[REFVR#l-NkR`k@2Bc$l!R6,
+
+C$Fi@EC1ESD))H,hc'#1JA&,!rEU(1F$H0Z'+4Lr4#iGXb!bi8kSYjJjFhRJ6qJa
+
+*k%%rlkAh0+H5miA1(PF5SJDi69$*lD,h+6,+KkJNMq3@HhLAX)Ih42ZD8q9VGIF
+
+le%Rl[Xh)qf+UTF+NbVZAmqj[MXbNf2d8S4cL2LQ&qR!("D%MV6pLHP"'IA%,!5C
+
+b6&'&ZHX2@2-$EYEirT3R"[9aBMFPVm%B%5(DA9')FEJ0bPh38pKQT9EZaqr5*5C
+
+X+P)UpSXSd`DSYb6KLXYRLT!!bMR*NGLNj2mb&l4!ilPd(DJ[6*9)DZ6Lfe5,3Ak
+
+kCd+%U4D6+P&S0FNiNKZK+4[*U))(3HR%e9cCeFfX*pkjJcFR6jXfU%jYPl1(elZ
+
+Pi*(TGc+JU"rZP(k%*F0mAifmFH1PJY*)8pj&13AhAjjp9jL`,HS"rbSakX8%X1b
+
+MPQ)CbiX-h$[k%Nb)(1c'p@6d-IK8Ma9X1KBjhjfUq#EeTT4+E2#ZV(2PPZ-+$(Y
+
+Q0rR%JQ-Gj'Yd&reG2RJSZPr4IF-&(E-REZIX+jAAhIck-,!XJ,+(cTaAlSSFUkI
+
+i#kF@ENe)F0ph,8*2h-`4Vb5ZjqqAf#(V"'5H!AmHm5V1G8FKQqc%,kc($+"Lr!a
+
+qAD6NEZ6F*NDS8p[jXG0l!qTTARM0CZb%KH"T-[0Dq'ZCUTR@dP6(ABNZXpaMbKC
+
+EAEpK4NHU+FpMGE8$(QhP%P0Z%jmjQfq&1jBCe#8R#j8ZUD8l51iMY&jl9H"bUac
+
+A++RipE2VbV!S906KXVK1ZbV*+lCSdA@qaa(`VB(,`@6hE[9Dll[3$'U3!)CalbE
+
+TA*NNAE5V0+mP+i'Z(#MP0[4jFMq('dcF&'KFkrM5!jF@#HA!PB@ZqK@+k#'RUpr
+
+LP`cZ+b2-*T9a3iRbkSYDrB,J48C!(4FiV%dJll[KMdY5KH+K4&3h1[Ga$LU8'YT
+
+EaLq5Kib3!)Ah#F+T&Brl8BldJpTjN!"aRj,q1Ta($H(S#2S2N!$+R0qB[`jZ5LE
+
+!0DAF,dEDe%UGEj+A"Fle3!JeHqkaQNAfC"'EM,e$6D&A2fX1e+j6MXlakQ`kPpB
+
+@KNeU0h$p'QF[*P5)k+,,eE%kU'peTFFc`Nd9Fir-TEkFap[dRScUV9fN8hhS#,l
+
+QNI1eb)0M(&P4[K9iIThHZUq9&*-E!JIYLlNY-$4hCa1R@MQVf[ria@TSHl(qc,d
+
+0R2`#DCIJ'kl38BX1@8R(-DUN8mGpQFfSPQ0(NdB[cU@b,adl1BHEFi!T)8FSN!"
+
+M[**M!6aVCe,rlNL91LLG*aRRFYlXh!QY*,UDKISa1L@YT,"kUpH!M@&@6MMijRJ
+
+4kGAj)Y%[VKa"8F@&A4ZEpH5V'&HlL6Q#hjd94G6j2baAEQYah4ddMZAq1AH4H1h
+
+@iUClB!8(iH-f'l(TTRK&#qhC4,kF2RG3bA)-@EBJ3jST`bGh"PS[$EXcaKmr@Yb
+
+m`"40N9**+&2i((c[D1)094D#Ve@+0I`kV8fJSbrMa4fM`QYP+N5H-L![$+#$[P3
+
+-(4N(mlL"6T!!GMe@-1`Z+3)ABMAS,#cm#)U4Z"rZmPpk0U2YLbf61bradcAk(,f
+
+0R*5@mN9Ke*A@IjHYpDp6k6)F&k@R!YkqAA6j8"`4i*ab4pb`V$&`C6q@'2dbR[a
+
+Kl#1@jlGcK2Mqf3mIA0&98%2M(EV@rMUI%H+ZLNjFa9(e(%Ia8ab,3cK8bCAMHEP
+
+0r$"0i8A@j6X3e')5dIQUqBl*4!`V9!`c@fVN*BB`DHdQqbcME-%P(-UZe4-eDe2
+
+DCq'q4iSHDYL[D%GUTG2CUT0@h[PV"k`e+NpM$apE(kL58SmMQTHi5[El8IM$3[I
+
+#Mdfb*a$9&Be0IE,lN!#UUrSih@KDl-b!SheGBr&,BeC%(A+DhVCeKQ#JHPTR8,Z
+
+i9H46XR(rF'iMl4r1E64KdkDZDTr#,GLF*G"+J00p15492[Th-0q&QXE!bh$Ar3$
+
+r+feQX&[X&ER,@&%JP*IP0#m(NLU-D2X0E1'Gd(,mlZ%Aq'lX20q[XRf[YakLVl0
+
+@UE@TqTVF+DeNA$(2bH([P9VE1AB2abiIL#f@HVhhVQKC,Vh)Na@Tbq#N231A`EK
+
+*dKH"kE*LDT1PTfGD"Z,f-[CKG,HePqlRa9-kYTHQEZkIGB4F`RNpdJqmi2a(C2#
+
+b&GZk086elp,Q"1p$P`Bp*mJ%hFYId-!C5$SR@N(aLY+qf3Up9p,p[C!!3r8DGS[
+
+8-cXhUAA5lb[S&Md#[l5A0!Gai932U38LLj!!rr()*i[iUibr9MLEqRc%6'qpfhH
+
+"lqAJ"pb4KZr95A3"[B&dG#-q3[FaHm@MKVEY-6P#l-RbQ-aA8`f8fJjec5YS8"K
+
+`YR'"[-IIZkfpUIfYC`V5d!E"pVkrDm8,[+JD*R[-LJ[T$-P[-DrTdGefY'&hheE
+
+5CGI+r62GcjhQrbI-[)1)q9bc%1i+)S5rpIR5E,b&,lEG%if1p!(2qRApQ1Vei#)
+
+C,YUfJCHM![6NZ`[RGQQiKmM#4Q%9P!S+U0089RM*MIBd##eB+lB+[!&6ZYA`NX[
+
+06+T,6lKhT!EGr$lZV9h4kPl@SQVHFS[&Qf"9Rprk&RPSL,31q*qRBjLB[rrk-QX
+
+N@0-BH,fHU(SLa"f0$dS6ENY*5JN8*T4IqVdTj#9i)P5Hc3hBc-!FR'BZCJhc-,6
+
+@4-[Cp(SI+#Crk"1KjBaUI`r9cZ0U#hkT0V`4S0T8i"H0jfZ9&PlF3T9ZU!NTaX3
+
+VMCk(1L&efQ)c`kGS&B+4B*H(6VM3-0!*%`Ek`)e6Qc6iPHbYAdjPIlf%defX&@l
+
+(ECf9C9kP'DdDk8QK(0G$di2hlVc%)[2(*D$PT+JHhMTCSfLbp,+*q6@*ZbF$E,8
+
+8XC`eRS"R6Y@4eMC5p"G6!eJmLSH"0jmVh)T#LqUSaf5Yl#Z!hPVKIZrRYF*pi%p
+
+Ue30Pr5m6U"8mfSH#GqmACr$jE3-cZ(&J"ZFQch2&%XE,lZaVpQ&Q(H@qVrad4XI
+
+RXR5qRXRIaqb'dVLS)PX63-pMD&R,L"*1ccj5-6&0DPY6(ai$j9B2E%IIK2+bjTE
+
+DJ02U"MLH`%+KEpjadT(EU(U*LiM!!-Z4ZC9E"3dCL5IA8EVUpA69["'D1ME6fBR
+
+CVZDd0cM$@ZMHSCIci#Bk0KQL,32GPN-pB@NL2qYXGhCVL3K'VELCiHbP8fpE&`M
+
+HV@Q-ic0XI@b+YePTE5)4cZX9%MVkYKd,3'pEJp&B6'F+H`BiYEKb(Q45ld#mHk"
+
+0'jliL$9C4FrIhbl[MTldeYBXHA-j+M5l[NjZi51+SVpC)DLDp&BSqm8ha5JSD@Z
+
+fh+HCVEL-9%a2"e-l@r8c0eC,a%XILjMN+UMQee'IBKV`)X+HApRJB"QKZi-aJIP
+
+9@P'-$G949jV-Cr%HGhiUEUR6!db'-fbAZ5SIAM5QE,89bae0R,2F#h82Ql2!lBM
+
+&S+(0`,[9&`Gi%qih"&0EX)0-PD9([@lXUQ*ZTk9c&SYrGNCe6P*)D[l%9$[34b&
+
+`d()`"lNNX"LSbe+#beN[ABNjcTG[6BX-p8&+S!pi5r%'GUldr-*T"Mi#(J)[a1T
+
+9ACNjcV2[3%jUZ4,"9)j9+MjEFkTNjq6+fHTp0PYcUYJ6!Z)j@r8pK6e6Gq1L3Fe
+
+8D)LC2ECmH5ZfII8$8eAG#5QGj3,@AJF,-PAY'e$jBYCp#UEBk6)Y2Xp-IL1+9fl
+
+1AAle6C')kbfl$MX#rC'"kI4`ZViJJTPC2mI'"9+X*fcpHpDR!$f"kcZSl2c,-h4
+
+A&#JL0YmrEHK66Z%F00!Vl,PG-U2F,laT,NSMri@f8l'R"[F30H[KIJBkBTKh63S
+
+[3Fm(L@X+hfCI#eH%I`jNQB6*i&1c3-8(lTCLhU&ap5MSN!$cNh`ekeRCb(4FC2R
+
+)LE&2fa%hGQc3jE"dc*5L$VSb6EQaSRF9U@5!+KPMFcGY9pRF-ZiYVE(G3m`DPp*
+
+TV24$9L&G3&jb%lX2AmDFdGcFfka4h''N"RGCLN(Z[b`[-b9rYSUia3ZVlM2V@e3
+
+8-6IRZRYr1C!!0IZ1C*chY,685-C*jR-M6dAF(BNITIh`HH"GR8X-#VTd*JpG((G
+
+PJlR)A%jpcVPSpA0$5D'(P&"Ai6EPH%%ip6"[5fjZ9Ea)TI(1(@iK%%pGdZAihKE
+
+LkIDN5%&[fh2Y&CNA23E&$Bf[jHP-QTB0"J4HRm@jX-'b[A+J+Y5TCGCD9%8ZTA1
+
+Z+68K-f)GbZRL0lEaKGGKb3LQ(H[c$%BRZK1Bf)B'UL2-BMa5Q9HJ#"S$-J9eI`J
+
+RYcRk-fFPHp#Z*MBV20d3(q"Q2BZi1M5eRLdTK1G0AKpPdA8qh+`mB5l154@*1k(
+
+V'0p1"BS,F--Ihdre9B!H)4D+03PA0V1VadT8(qTaQ"M3SC!!kJrLHUEDjL39*le
+
+krZ5A-E%$[`(&)ZK`S5ZbF8m!lBpEi1fmGJkZVlCa0T1[S,Zmfp4,iK@0p6aiiYF
+
+RQ-GU"rDLR%dkKFQ'k00!a5p6YYS2e%V1C1Vf8rGFVN+3!%0Qj'-+"TP@aiL[A0U
+
+2T0*qa*i0bSH[F5R%3Gi+491&(Ck)8DP+2!2a@(q"(dSIRA0Z3qrJEIS[-Y-rq$f
+
+8AT22i%,l,EbG+-Jc'rCqM"l+FXp(c#Z)1B2VE-6-+F,lfZ"l3cE`(*Ycerq3!0!
+
+8I`Gl*%6+96GHN!#RA9je&d#,3Ye'biBRjqFE(P4BABG&ip9GMTV#UYjN2TL`*Nm
+
+hA@93CDJH1N1NSpjIKa`INU'liJi#)[X(GLKZ8MUNJTV@V3)#4@C0rUbc,J3cb&!
+
+m%Y@QB1+JHTLaXHT"@4lc5',e(YkMh,6&1,6GS3iYh8IeE[5U5SUE`)h0Q@kjJ'K
+
+9e#*`0AFTGJGGK-qpLVP+eD*ARPiAP,lhTSJ[+@idf)UrJ@h-R"mK@'U1)%f)2CM
+
+$F&MYGc8"6qVc20-#Hm4BR389lLERICT2lF1[E"QVI6lH)F9f,(UAm+JAPJrQ$&k
+
+YJSqD1RCcRhV#,k$qSF,1rhc@(3X9[-RTBhLA$,d!FE(KF1AaYIaaj#lTpk-ILXI
+
+f3rPJ#IZh"l+P+(Ib4jRP+N8pf4VHel*N"3KN[cUCl)Q$DBTrJ%!PmD$i6'D0kRq
+
+f3q!qIjI-UAF)iL+!6#Bf`lHDLh*ab8-q%NV"*MGf(@4H!"#&QCP)e+9Zj$KAeCi
+
+lE`43cGc9!*rU1HRkCh1A6Nl1Gk3*LCPBDZCLEYcq$A#%''2F'Gbq"-*jES$0B@k
+
+XB13[DlT`5f(1C+AmK6-HpV9`*VRekVXLLq`21+C4lGplK4EC)[F8G`I#6Be$@iY
+
+4cH9FHmQAdA(L5+E(C#9G('HE*P#YY$6UH$+2%QM36D41YbG34VHk-C3pJGATeh'
+
+R0iY9Q[jV$'`JEhM@2G)[hi0A,r2@j-VeMGSSe(6JUJ5XeEbE[-,NbJ09+e3ca6S
+
+raRb9H`',+fd0j*fDA1R59ma9,K$13%Q2ejTNYGMYP+1rLqIbYK5p8&`ib5RL9S[
+
+N5R+8Jkj*Xi9Ac1A1rKlkHL0fZ!V&FGkR5CqXi#h1JZE"EU&R*FXG6Zr&5UrEbRM
+
+[k'f29-pffPD5A0RQ[pSJBZQq4V%6D+U"Z`4+[[h(A(hCK0j4r-BQQZqa6YBcHiA
+
+Xi`A0!dV-`U0pY2[lM%Xll4TQ&PBPX[pAIQTG'X6B+Eh)T*L,JZ`D'mrH$SFD`S5
+
+UM8kkaCJL09''QU!40X(4#8h'p6"l[6+`S3["3ic&5+-q9"'EGIB01(8Mq%XZmrK
+
+6ITp%UQBKER&Aia,BQiGEHQV')XGLp6j1Y%TA*e@P6b)0XimZ5dIQ#q%XQ+iaB`k
+
+VI0$N8Mk2`VhGqDLDe480F)T3ekKGXk5Nb*Y)+UkQ$a68C$&qXEhbaI10H(Crp0L
+
+)!MeMA42+`4fZ[XH6'1XHMkpaPZM[pYFTQrKj,3%H%0rTBlDjL&&pF4eRe6!9r2c
+
+J!2[HT@craD9hRaXLXSqqqkF[*F#YEe9Yh)malTPBh@Jf)JTq*T2PT-+fd!%'IrL
+
+R[VhHB(dkD$![%VQk2*fa@*aZP*%EMaFe4aY(LLPZBm@A+SV!&I"91aG42N390qV
+
+a0E,j0Ykcm9,S6JKP'IpCP[%PFpdkE#!V%A'lKq*QZ@f8$E%CH"h--AeS,q(3'&c
+
+(LhM6$%kqTa!A*X)i(JZXI08'0d(G,rGTm9CKHh@#(0(`H``FbP4re$,mhrq2cZi
+
+YlF6rX)NR-NqkRTA9CeUaRdXJ(i1(Q"1QpA0#c*X1fB90G!bU*dj44*Z'&)2!-i@
+
+II[c"`'6dN!"(Pq6l93S(9YSdG*GMBUKZe1d$pm9'0IN4+9J[K-G&H)*CM*HA"P@
+
+U*krScdA0DP4q-a6q1["l#VpYq'h&lb(mlXI[A[c5dr-ZjIkfPMhcUhem"K4qVRM
+
+@5FQ9'X`aCT,+QQGR5"F&HG1JITB162)1PV&l0Vc*C9qLIhC"5!cE$LfX-k6!#-V
+
+Y``hm5[JHQH9TDE$KZa9+V'RirR22UJCpK@JSG2PH%`eH9a9L!TkbKPTmGc3XV")
+
+0$YGm[2NmZ3h'q3+D9p@,5*Qa#M%$2I&3[$,%$aUbN!!Rdf@&QYfT`RE8pT3VLGi
+
+Qb$HT%RM1(M#(8d&@aHU%K2'ZdQ&a4cj'H"c9V,TGCaG6i,rqRpF+ikNjMiE9UJl
+
+XJ@BEDVjRB+-jF1r(L$NdhMcHR'R1(1%5aQh1eF25J(U2h*C#`3)p&I1`C4Kpb%#
+
+qYJdC8"AQ8Uq'IZr(3(N)L(D0`pr3FH#"KY(q(%'KFlAaj)m41$p&J&a2"q[a,Ek
+
+&`%am#kU-1IpE6ENRISAha1-Ll"'SaAlmlXA[EU"kRIE$3,%E'9qAR"0iFi*iZ5f
+
+HCqC1E$C'8LF'8#2Ta,INA3CV8Eekk*eJcRPTH$rdAqZE[$q8HbVHRmAl+`1jmFV
+
+Fd"k,VYbM[%0Y$&KH,q"GppK45M8I(UbQk,U-3m`VS6j4+&5h!%8rJR@I)Q#eXB*
+
+Hq2Fca&[f@CFe"fVhkD53!%SCN64[,ZDq8T'J'%)kGKFcADfq-H6iMqTa,G0UdVR
+
+[2[YC[Sf$qFKfZXp5eRSaC0'c#6HJp1FiP[m54rTc(+kIik#fkDFi21HHiI!FqcQ
+
+1Chq*BpPc(!ZFU`f2JY1U)4BXEHH80Aa)ZQ2+QRrEpfrlr-GadpFE0ED[!&'Dc@a
+
+cPMXm0%&&L`b-%BKHN!#)H(Na&r23da&mEm!0iMQUdHERFmHqaJM,Di`KH)RHPBb
+
+2p9liRNY%R)"rQ#DkJ-(hIGJme`&IBDL#q8plJQl1`NT2E1QI$8QV2XZdimHC12p
+
+kqbBTllqbf+6@jb`fReNTA$"S&Y[K+P)Bl'%S$k3jAjAm%,1hN!!cTAr+('1Xpe#
+
+)p3VEGIDKFdljEkXGHC9G1[G,4ZaF$ICD4"V)pkFYJ"kQ-kdKTKVIMX-34,J,V0M
+
+3e%)9DZVV`P1)L%N8i5aLlMXD@EBda1,PBlbX4e`Kf,'K`5f@-aP4Q$L1eBM+B"j
+
+0Me[3`33RlQ"qh!'YdJj['A&Nq,[U3-5aJpJFc-QJbRjYMCJXM*p@(4&8IZ`)4J#
+
+V&p8q"Si0)G@,D"Vq6c51BbSDab'Ud'@ql0L&L!lm`Kf683[29!8riIEAd*&CQ,Q
+
+RmfB!'Zpa2$UQl&P-6IZ[I9LSFEj$0IR@L8+YFqhKfHL[&1URlk25b1QNYqhmCMb
+
+NYpq8EbISlAIP@bYhA5PQjcfBR@P`)rCaS8J#cL0IR6+E-l`QBq$MUrhD-[M[FXL
+
++'1p6Ek8LpS01*@+9m3!Z*D,SXQ,M!Eqr'eUdme+8Q!j[JK,6JHXEC'Bp88[kDcM
+
+PQJr2AV[q5pINK6+Gq0Y-LL1SR8V#VVqGIJP,jI4,5*66clMAB-E8Qp!3[C!!CL$
+
+N3a*dRa-0,Xb8RYH%ai([6Q4LafeYL+8Tjkc'4$Z#Q!m43lhEI@mJbVL'&qiI@+[
+
+$+M1#XTXl'+1B[dbZpS%S-(IC3q`#Z[fd+DYH(9BHBP+'YKX4&F')18*l3,+MIq4
+
+6`,h)Z9TlMh"rYK0bcKqS$0Lpe'[FTk`6[fhiEF8[0b6N8&X'YKVfCZ"eG60JFG)
+
+Xp-l*jr2ed0qMl'0U[CM@2-Hd,)$*`R'&r8%amLHBi#@b(e2*ril*h%CG`@6!Z9X
+
+I*Z2Urid*+Q"a40@V0ITRZcCF4XCkAl'+,AC2lI1T0H8jEi8'Ted,l25pl!P1X)U
+
+#S9aEp(S,lAhAmeRfdrB0H0F4p3dAKZ5['HV@QblNi)8'r%$Z'3FKMYSQ1SkXPcY
+
+Ie303U-!GKlNIPfZTQFZDDPT`rl1AGC)-&0&"0jIa&f1"Q#)1iqX9r2-9ejJGRAl
+
+Ar4krkhrlrhMeIibImMI[rfhmk5brkf%XIZrbZhk3!+0'RIQ!FqpqH2H[AAm6meR
+
+@l+#c$H@("QU"P@+bh2QhVj,+,II8UIiH%6Y%LCdKBh(PUf-&KCIZJ#dFf+"),P%
+
+5Hm6EZ!,H(N`F48TXQV`pU&ZfFTQUb5GkT",pBhDS5EGeY#FLGL,0$(18$2YNrMR
+
+0G5ZmcB19S)D(VN5ZNNeZParceLiMiDYBYRMe&bZjQZ@P((*CQPqAFS'&5kl*!9b
+
+,T&DDe1JH*9SVU8'9j$khSPL"k!BP1P9'3``[(Ve%4Tp5,Q5!E'jc-(Uq%VeIk8,
+
+,Z`PLle9L`c,fhS#h1-4LJb5acmX,Sh[3"PEX(8VX`qSe5"h$dY'h+G&bQb64!Na
+
+(6e@L*bKZl1k"5$'KQI'rUX6R5Ycc2pm5V19p5UaApTZF0YZCQf6dMa4pJbBSRG3
+
+TEPi428Z*hLeV2@Z9HSq1@(eCqD0$%PG$XfHU,4Jp9iPH,4@`'i+9EP3LGImh0Vq
+
+Pc"hX$,5l#1er*mjS4(Hh0b,ELNZFjk%"@V0"hLNjc2!0+TG-$UKAim[[a0f5ZMm
+
+A[A!SXUYAZ3EB$dl5'E`&F0"P"GLim'c"Bq$b3"LBMP,BM#l#&Vq3!*CUe)+9RCK
+
+c"clH&,-AE6*QcJ2@fbkU1hSJHLk%NeG%Xa'c,)550m46JA(+Fd6TbVlJ)U)*6a'
+
+P)kEi+5+RckrU!Ue862lFM9XSV52ZNma,rFNN4KH+Dd#k4)&bJI3r"V@T'8c9(h1
+
+c#J84C--0+Hk)N`C9Dk$%)YUb159fb@QTT4(G(EUBe4k5-$pQ,9mH8$[icqJZR#U
+
+a,`ULUrS8hH0H$p4*S4!C8qlJ96M[1+N[mmcChcUl4KcIT-b4Jr,+-Pq3!,p8ab%
+
+B18J83i$AEG""PGaMbl[d9mLbK49T(@kcF4er8qh#MlZmL@BS6'a'[65Dj5RKfLq
+
+3!(a!c4Fmd8$!QkmNeMQ'NV$$LkKX9Qq#mUPjGbGUR-M3FbG2f26)-S(cCP0Gq[1
+
+)ek'HNdSHA)HV#cj@MJSmd&*9PF5Y+5XT0I0MALhJU[RGAY)YJ(C'QYZBK`Zrjk#
+
+5JqQf,c90*&LJXE(eLekG'5V#JI"FQJPq6ba8-5b[531kmXL$NGI&Gm"a$dS5ji1
+
+A%lJ*Yh!Y4KmPZ+Q,%McZ!'j[)(l'2k$HTD"1'iMD)D1!15f!#*jrULE+R8DaRV9
+
+U@kAA*A-#QUUYYQGGQh[SZmTHaF*32M1$-+YCQpM$rQl&5krL$Fq4!N"-L5QQjBE
+
+EDDSaE5-Y!Pa`FPShB$V2lXFS8AFq95NB0+M))$P+rT9b#4@d$%B,#dMM'UN*k5Z
+
+abdcf6(bLr[-VDVbU")PjHAhj'Y9@YP(1AH6LA[5[)fIbC4rkF@@[)VE+#&`[KRr
+
+B&94NJ&+EJ,fSeN1-81M"pEQU$K@"cUm0H,PT@&crqC!!$TVLMArU#c'#m*r8BXC
+
+4iHGLKD6Z26'K#UN)Tic![AH-hCM-#"U+Xh!92#ZNZZ+d0D%(Y'SVhP*$EhleVFr
+
+EPZdRUl'PH8Qr&V)S4[RDBUkLqZ!*Xi@1e#qH1I[2S)8&"C&N62#CV!Ze((S3a1A
+
+'GIlR$[8GF$r&,3PR2Tbd3a@HRX@eUhE6CeF1U9&-0*FVHL,J(-Bf48A-R$FPd,B
+
+%Aq@0Y[i@,i0+Re#j5a@9-,)L83N,&UN),2kE%G3Qkmf8TFDCH1,49!5`('`d)"0
+
+R(P@XS*BS&D0HBNi!3HdJ!M-lN3!"2&+*D`HU$&QqiLp@6l3SYrPjfr'NTljeF@e
+
+chGXN2'9jcB`V59P+4R(GJCL'3UrZ`'kciR5VTDQQ-DLj5PAIUjK#j+&+ZipY@mU
+
+6kfp3[UDLI*+'bpe"U$&h[ECDi--$I2P1CJR,SFB3plTVhRV$SEIi)EHe9`T8(U3
+
+elKN2Ei4@[)meEbkaEDJmLcMbeBT%lJe8C2VrUb*8I2ZL)TV[p'cld3iJY-)EU!b
+
+mBh(Ab-e)6VrZPfCjj%qQ+fpk90[$#'$@'3VF@K&8H@i5EA24IeXXS1pKc-)0#c6
+
+[LCeH)CZcLEr#3`Y1YSma%fXIF,UmJ$8IPN0*P'a!1S"cZQB1lEFX&6YK08846fZ
+
+0@bqY#8ahD(BQM`d-'UVeDH6E)miBk(f&0qffZJHG(bN&RTpV%0&EL-dB4"FVdN9
+
+6bpBC$"ecD92)&jHT613PTA%`AZ(6!bk$&8-A4$5ea-8pQ%JEf%NDe-[Z(e#kQf%
+
+Xp2XaV4!ci$+QI*Ce%rIp,LY84+4IY!TTED(L`YH[+1!"JC2kepq[D!DF5eR*G-B
+
+U2r5(qK3d!LR)[(91ID5Yk"Yrf+6,$A0P$q3HVeD'Z1U0a`VGF-08@eJa&cF6m6a
+
+Ca2N[+kL#jaYq9PPVL)EEJX3#2GJ-HZIF(P4PGE"AM,@Nrj0M(mLa"#SYYDSq$c'
+
+JeUQH4(2&,eb%"K0q%ZeFqX3[BZ(R)1)Kpr%4FKm[$X[SqK"1FLbe(Hj)$M1rU)0
+
+[jlP5dGhdk'@Uk9aJRkki+T!!&"H9H(UNZhK'ckPCdU*F$Bb&BSH1Ii2L9p8d06H
+
+phGLmB[PLpiUQ*Dh,QZ8q'hGLHM[(c4bG##f'mle&BU@FV@IBUfSMR(U*Xf,Ye"C
+
+DPZM&VrC24eF1Y'C8("Ke,#k3!)U1[qQ2N!$p1@+3!%AKkMbJrcK-NX5"fk'6k-Y
+
+(XA'B1ZJH"jTl-Ic`6#Aa0SZ3!%QXX&`A`,*@CZ&8eC-EpdlrHADI!BUTT-FVPE-
+
+f41+-(hU4[MQBQiCB(jbhYA2B(CTIlXKLmc(Z,0l3k09ik3-hCE"mhFRNRE*e))2
+
+V4aRJPLb$p[3,D6qZ*VBpCr1Q)"YXdX)0cD`Sk(fGmYp[dZG!c5@iD+!@c5V$NhP
+
+EHRb1@q&m9QAS2%pKYQXK-EA&&A-U#XQj3!`2R-e*VMES1Q'@8,9lb$cF(f&ICDQ
+
+Q*Q05'(hl3XbPAAS0T0-iDUhQPF$rUAJHGPbR1q)#3Ik-&ek5c[Z9)Kjmb8i0qS8
+
+fp`j3p,*m380*+rh6$88Z&)L8'cr(HFXmaeF8M62Z1kUU!LMJa)C-$(llQ0rHdQL
+
+RFL886eDQDPS!48qVQZQX$h)3%mZU4,h`PbP4KJMb3Ca8U@Nh0J`m"$YUZ5X,2hJ
+
+)(U+GQ[Ib%$862q-Kek)9$pR+Yp+m)E['3qbj+Vl8pjm)l2E5dm-TBKYTq)Z2!'F
+
+5EhrL13Xi*ceDUT`rU85d6m3Ul[V%"e1-!5RprJA02fBrjrNfkc[HeJ#c-CR2HBH
+
+mCG#dap,i8G%IlhlUkS$ZjX&QE89!+'H"Me105kQap@QcAGN!ZN3X*YT2I19kIZi
+
+V9h*reE1)q59Rc3RfXN[H`&dCHfb"kUcBQ53jPfJ6d(Gfj%2f4,(GahQ+JhQB`AV
+
+&$,68Y,5k-jHLGPFS2a+#EDe8#4ArddpKPfHr,SAkXrC2BZd(mU!0(Yq9)6UfZj!
+
+!lB*5`q[2#ipRf"I5F8JDE5EL6#28MmI5aa1ANMDHQ1ULdDhfVTP"qEpLP)'pL-c
+
+U4G`P%L2c$@pUir*&0d0YJ)k6+Xh(K0dQJVQ%D3NHS0RaXaf!(ad22L(GBlVV-+F
+
+)Ed'-3l3aKHX-YDR)$&48[&hBYjk4Di1pbrZZHf[8qd,E68Dm9id([eUJ9id1fD[
+
+'a[ql9dZIGHVR[Tmj,rqZ2k++[b06ZI`aVmIEA%X0)YG6C"9Y(R,Jk9%Z0&a`2L*
+
+UppqTA3*j)r1QJ9d%*5L9c`d2D2MfiqZK#Sm*D3lKTKd+Yr#CYXG96Yd&,Q2[)1"
+
+r6AKCE1F!rYhqR1q)[iYYaA4G%DePMbR`[aCFFl9B3G5hfB",rjmK##J)@PbjIrj
+
++#)&fd&AIp,IC)p$54IBDFLUdm,)l2RJe32khN!#mYm+E'(D$H32h"1b,9YlIXe0
+
+Dapq#KbjmFmUDYaZikD%%pB,P-)CRkd*c2aXNP'Tl35bbVH#f6ZQGKkiV2M(Q,1I
+
+PVZe&`(5S+@lZII"YMrX-BaXlZ#IVE`%IY#k!IVK2AJ!e4&U0bD@%,ZL`$NeQIel
+
+3EBpR@UTN8MGHC2h)*Sj,k#Y)1d'BXTA9%XeVS@6iYY2CN!#*Z`[p&S![&Zd5INj
+
+pLbI)VZ5@+@KP4NQ06idqDP%l)&"*&c4klk#k`3qmEYlL["P`N!!KU"TV)&VAIbH
+
+Pe94c#@(0PpQhTr+4di),F('3!"0G@Ed9NCed*@$LD@%mmqNme5$@[I!bIl8k'r9
+
+3RADX99fU4AI)HD!FEl+6KDQhMA`-Vj@BM[6L%Hf@'j3m1k+J)2&3"6Q(LHj6Sq$
+
+&dSaj1K!Mq'brL)rMIPH0$A0LD$@+2U4hrKMTZ-q3!"Em$#PZM"pS@9BIF%m2R2$
+
+9hBFcF[G(1#1A2X8C1IN,R!YDB,BTMK01k2Ya,[XacXE2F-li'8iSVF*BH5-"e8K
+
+9KkVFb!bRh9C1lF5%*bZckPDdd-PTIeG,&9LE#lFPiN+S0hk#(1khF29L1cUr2"N
+
+ZI$#)iA-XMhPpSBZ1Z0BmrA&S6@jNKKmPcGpDQV%8lpF$j6bN5eRFNrTaiD8[%Q1
+
+l@GP2BP+Q56e6MFq9[0Q9RIaP18(Vdq5FjYc%03L8HHNBK*FIeLk)XG0a%3BGEVR
+
+3-,Pb!'Ua9$-ehrf+YUZ*-cfi%DhDCLjfG%!KG#Al'P0Ue`Z@YY6,QPTH0j)#Pi$
+
+3II4#aGl)K9mXrjJ"CrG`3b5H(BrE)RU+E14)&0S%[Llbi3V8F*YJqLUMTrlF+NX
+
+*-'5E4JjJF-8p&JX$Z*k0kkj5I%"@i5j%A28HChD(dh0)#Yc0hL28R8!Rm62iN!$
+
+bN4Y@dfNr0K+A[!CchmiV8(TjZZ*2'&`)Yp,8(1eLCdVU6LQAI'YJ8l59Y*YXMLh
+
+AB1PU6+m5br43T[k,TQPEj8e6+"GhK`%eMfc2Z#1bYfIJP3jbN!"RST2E*k*cN!"
+
+M*[Y1)&i"Z3Q5(!F$b1Jrk#PX'bF+,95eSHjYlrpP3XL%XT!!`mF4q1`kb4!M!Ki
+
+NP[-qHeU`0P5PpE&IZZ#UTeJb#'9plA0%T4,2KB2`4S%-9"2e4BZClKcXPBP12-0
+
+I4'I&9,#RKiQ`fIPGYaBq,RaZfMRDQd@Pb*A"2QLjUF'Z*,DGfieGI`qf@104eah
+
+)eI9C"dY-laA%kP#Q@!Ic9rXl2d%11h3[8`ppI!J(GNXDab6bc@XLZET2eAk(8%P
+
+KhFJPYF4pJDUP)kMcL[dmlaE`I5DdI5T%ABmKEqGRGC@BhZZRhD&-rA8e*j4FL65
+
+9&$G$(Gh10Z#f8V[&Jc[HB#RYd')je!8fAUlNRX(G(J`LB'jJjXD"1ZQ[8%kT2ja
+
+C5rfc!Y924Hdl"rCZZ((iC)E(91$9r9(M6lIhiN[Y1p#GX,Eh#8UN+)JrJNM&lB4
+
+KC25c#rZZEiciP$1F)k@d(P3eMACf&qmDd)I,rT&,'(hpA!*H@1L3!#`[Y-rYZc)
+
+LZl0B!'DpYIfeHX1DPVM5NFNBABP-Drja-X*"Bf`bj['GJR)EqH8!G`V1T6r!6BJ
+
+p"@AHK8)p2pe9rGQXSa1iLl0Z(#kCIc,VP)D%G)1H0p)0R5&pqc@"VDlfiJ,"A4T
+
+@YTKqI!)X9TaGLi[@)h"6K#fY1!ZMGXC8-qh[,RH#)8DjFcM@hVMQ`5eB'XAdlh,
+
+9pFXKFLbK,kcJVlMHpP0N$L"6erU(&#af9Yr2XcST+lT'4pYCVE[X3RKcA@%X)Qq
+
+48IE)D[YN@)(f`%eXVb+rq*!!F%LAJj%cJ5jU8'm(UVkQa'k50b%3j6#h3Fc-Zr9
+
+`(qZ0-&CjGP,q*b450*1)U0%V0d#FdJN#rYpmf!@Np%rVba2k6,R8L65)FrcG*&i
+
+&6fNP2f(f[EpZCcGee'qb'k!JA0hp2+1j&jp!UL@(b)mZH9SIUidT4qLjAAfP5+R
+
+IhdhZjj6kIFTVIeUr[mVB@lqhck*q+FqCE"q6kaTJFQ1iNP[q#iYp9URN6jRXP8U
+
+@rZH-IC9dZSM9r`-M"6[6IL&eV8`Q#VH1SM2`""Dr$`e`868Mp5hY'$RVQ-5+pJ5
+
+L!h,Hb8lARV$M![(kXSUlf-Xq3(UZUmkJZ(QfVL+)cmbJ(!%UI2%-i`)C4-Z+AVC
+
+NfbXSlCRl&r1fieUq[SLFN!$lADfI69caFYMIjlArHA,#b3&lGM[GbI926,+QQ(m
+
+PcXaPQ$-,2jZAc(eaAJEljek*[QMf6bT3r5(KrrF5Iqr%!ri[CPkc8SZriE+XK6@
+
+jrQ-YHUI@T9Vdc5ep%3eAm$)$RPc4p(a1aGa9q15fA#@aSV@IT!Yhj45"5k,BR%)
+
+m&-JPA[6$Q$dfTj6Va1M+'pMpjCI3K3pmaN(6!98jh4Q)a#B4IU$jaMN)UEcj!A8
+
+@FDHZP4ZSH45lVF`NaqLbN86Z"e1aM9S1ppjK+!*TA3MlrQ0@h6*i-QJ)Z9+R9`[
+
+HRV-Q$m*l9-d'[RU-[Pf'rIX%kA2KS5B9QEK2m#&(A6,GeflKk1C!p%EHrf`TJCH
+
+(qN5qJBFfcNF1G31Bl)!IElbJhh-i-pf(`pFrjJ!fr-CU'@eGf1d*p+ppGIFDZKh
+
+A4l')M9b*6D5lFIS8Sa*RMl&kE+*kK,+J-X6Sji*hbmU6qCKMk([Xi`FiF,qX[$T
+
+kk(D1(X[Y+q+ijc363E)$R#ZG8G'&Bkb5-lCb,6H4Pp$6LNZpZ'F6pZ%RQL'(PJj
+
+SKK3rd`baYqbiQpF6`Gc(dPZ9hYIDe4*(4qSH#FaU0Mc8p(Q1#hrRiF!d86SS&pQ
+
+)YEqa[3AY2I9X[UKE&AYLDAa2$q$,Hil[+VElRf',hG0BbNSDApN!2[V"[mDQH+m
+
+A3qKjKP"IapMk82#DUK(Q$I3Nr0Im9-H&5NZVA%hX2Gk(HriVrAZ4Lr25NcAjIL[
+
+d116bBBRph-#%VbQ@PGZ-lCDY([Ap`T!!mJXFiXCFRl0CBMl5Bri$Fp4ZSUR%qeD
+
+Uh@3j'(3&p#bJGU%BX14h+Ya)Z!Nd-RRe(HX9&AfJlqR90re5AqS9TG1Q0lU9Z,R
+
+*G(jNh!"e!m1YEC-k9!eJ0+Ef&*3Gc$I6,kc5H`UkP'N(hlR@*)`Vk-MZPRMkGV(
+
+-C%IBVhc4b#le&9fZh0FDp'f5&0U19SV9IL[ZKbChA86pEEfZrIF'R(,"lifqcDA
+
+VNHANS-4LV)(!aY+DKVL#T1E+3-NRV%ajd(bM,m#Vfh(F6GVEmCM#3jDmM$6lEdR
+
+Fe8fN1F9hUTkT,Y+6heERJ$kGU(2dA4#,1NH&8*9LG+jm*9IIhP9b9BTMFq([kIC
+
+2e3q+)TmjXVPmT8cG,l0@RkL#N@YqPPfV-hbkLDFk3jr[QKCF5$DqMGPR+l&jX2H
+
+1[ThS5U5qK[G86k)*,QI(ZR9Y2KFj`#h%c+U,qkJ5NeQ8EhM,48Bi529`qCKlfDU
+
+!Mp08fKq*'P-fhlG2Kq2*)`V,$Q1A9+"bE2,I2UdQd3Jaa'k+-UF%r+(41CIFlAP
+
+cT3*aNqC3*fN2K4bdVf'PP4mh`6J'q+KfhX2q0`03*qlTJ*,%3rPk)H,'dP8DlXE
+
+`P8PBk,FefJXI8B1i#VMB9&FZ8V9mT@Um*c1VPZU+$dhLAXG%MME14LeRCYX)I'R
+
+-baGb0k36VQf%6Yr0L)Y4l#DY$SKa#(%Rd'R&MLGfQC8Dj$M(Ha5G&hTS)Dj(RYf
+
+G'EGT%RQ5S'HH#Ka8dAY69LDCVT6JS-RS9(c[,Q5pM5fXY`(AZG#)6l9CrG'+$dK
+
+HM8@kJpGDfD59dV%,kZk4[clAVqk15XZQi,`"@'m!9N`pKC8AR4flT,+G-j+9de1
+
+VYP)eT'2f"V&GUC5p-qFP8jULGc)"P8I2F$m4pk1TTT!!)GiSErrcpRa-)hLE%!H
+
+lp1j2"NG[rZ,Jdr3dTAh5(&FpDaM93D99S-rbTV&ZUqeJDLki((4EUG900j'hr3A
+
+m&*Z1,E!a4`33+645NdBha*C"r$JE$m-CE`S`lQ2YI0'GabXFI"K4%[%mbp-DSIr
+
+&'m2a)#VC[e+K1ClRX1+fJAN1"r-!VbpBABeq#U-AEAQmPN[d"Y"Mlld*r(!6[%M
+
+$JDkU*EkY@MkqC%AVi[U@&QJfTj%R#IehR32ECAkK`NH"#2-5QT'fViNHaF&%Pq*
+
+VST0p6F5La0G%*kVMTGicGG#"C%N)5BPDEHebKpe,2N(pAq85qJ4qMdV&I8cpSe#
+
+AZjaaappQ&#j6[jK&Nh(MT1j4i%Xh5@#+4[$EJppZ8RASZ%iD$mfaB*kcJB&1,RV
+
+`'i%c6X41rRV8H9,P3JHQZ*2adZ1'el$S)kJU5PEJ"mY215&[djYMi@SdM(Y6a*i
+
+fVI&I`Ha[pPmQESREKpr%(E3EhJhSm9DfmFMbd#eP@Ya&1mf(,VRR`a20"2Ld4D5
+
+9ah*B!Mrq%Ha+$q*lpUFBQIQf`Fa`34%3j),#a&pVljLVYi[S(p@JS85T3G92D`!
+
+N8S0Qe'!UISr+'LM-TZX+9QVB#%5Ai(H(dL@p2B,lLb2+r88GI"$HhEULT99ZHD(
+
+2Pb3a`4h5E2"Gh"1`DNepjr'kbUk([iE4Xk%5M)k8bQN&rRN1TA)9U0a%VYaK9%l
+
+PLA@2d4fU'(eLT!Fl4$Qj@5%h8SX@,ehQ8DkC2kZ*3I9!*efT4m0rUSIZ*2JK[eS
+
+2k5"9MbI8HM4)[l$4cG"J%mI@Tq-kq@leY+Pc1EU,rPJ`&90bm8X2qiLV@LSFmQ8
+
+SH*U4(ASV"EpBbkL&LI6l9RPkpLhr3r,#8A)*EKQ@1TFaLd,0b%T-A@kmV8DZeTr
+
+iCaQc1q#I"GYQmD#b"pQH9pR,ImT0TbY[$14HLpHG5ZjQl9@C1B$-V0hYU'Uc5,U
+
+FG$RM-N@UkQPR-'q%UNF8H`-SR[i-KHqR+,B1S*!!hM8CCE3VU!4ZeK&qI,INLd!
+
+ZBA#5Dj2+2Q1C@[+#QIT4p@Hk+rIRQ#lK,mQ4Z@)9GbJGplGpXi+L8Bp$jXZfba4
+
+jZ4lRcQ@V'+hHG16p2lY+B6cq(c$HMbQk8Fia1U#pBlEc`bm3UlRer0cmGa#4&Sa
+
+B99LJkIbbc-@pp4efP3(Y+Fj[4d4D-')Ph$b[rmdIjlVYHDkjrRdrchElmfcM+CH
+
+HcI#ZP,+,lNX`ZqHAhYAeqPYCEc('JU`M(kmBLAmhrUI694GU2ijj"1ki`+deVql
+
+hm821dFeICrLVJlF1iBFR1A0(D*X4lQAR5iqfJ19mi53bp6mkL86m2cL*I!+UpV0
+
+DPLd*H0hU9+mLSZd$QrJ*6a8+dc!GcV"M!0[45!T[Hk$ES5SDGk'&hGpZ4A[1mTU
+
+lc+Z8QVK2"("$4D0AmrDriZlI+&NXb[32K&T82DX&r&[18[dZA'*bi4p8pqmk`"%
+
+R)'Dm1MABbFea22-2+49J4!j((*-4`VQ9m`C)CMpB)he44MI4C5#f0H[aq`*qem,
+
+e$4d2V*1FY4k9PBhAfN"PRrij3ec4ca!p95''Z&rP4PIR)kEhDL$Qlp1+Pb0KcAc
+
+R412'Lac#h-*C'')6p9--aq@l1$!!eibM`0[b8)pql[4S06&9QDm+#k+CVCN8"I5
+
+lhM'Z$6(!Rf+,-9PLJjq65pLimE1aFHGRBDYHVDIGLqh4F*!!Pf,ShJ3ah2,00H1
+
+G'eDGBei#hMF&ia[S#V3G[bIaHabaG"(8+R-*PSAbhF*5&i`A,$A"H-&b&,p(m-X
+
+ZI6V%*VPrdf`08@q%1SpC6$i),$'I$1$4CKj-lB2ihBII2I$6r`KjZBk5Jj-hmIX
+
+')TU)CBaTlrab@GHXY3%[YY!'69`E["a*A'PmQj@'pV[,j15S`3BNj(#Z$Qm2EKr
+
+RBI[BLcEp19UAJ[CIP(AP2D3ha'h$lf[ihBVEfD0@JHhf+hMGM0qA%,%hME5MLCh
+
++SfNHH*RH[!'UZFZ9#BE0cKdE[r&4ibV%,@YU#85P)@TR)rP'8E2@C[af2mPNlqf
+
+S2XB[2@9PkP!cdBZE9,!8hQP@$pDK!GibiMh3%6d3[ieplNk@0`Vac[MSYYU(PkF
+
+lpf'UKYL)28ql'pPP+3p'aJqh8qAR%HiiRQFVfaRVp-&kI,3f[edLK-pLG!NiY)h
+
+BiJ*6l4f)Y6DHrCM9CF4jFQrm@$2j4iVMbeC`c`LK6-I95@pefNNaj,0UkihNjaA
+
+[hM2Bj3h`hG',l[Q"H09cp$%8Ue2lDMJG4aGHVIjIe,dl'3LX#4@IAr%Ua0(fEpM
+
+K,XrCVZac9UXA&FjXCCqMq!MdF-i4T[q'dhAb'8l(fHFiiE2Nrm'C4*l&qR$1I)D
+
+cLlcdr$HFbER2F"Upch%q%Z!UKMJHBL[`8STm1d2A%SC3*m9riG*V#mDPijpEL&-
+
+fGD,qlf`kKZ0(Yi,FD!5j2r@U9qT2+EX'Di2&5a,VEqc(kkIrQr$rdE[XL"$r0[6
+
+f@4amj("RX38lLlcqlI[SBRB[K&mM3q&cKRBKqQd[lPY+"ZpkV2SG9cN4Yr'S11q
+
+kq,YAU6McbD[fSVB6@-B%X131B(NYY2NJpe)E6&cJm%@M),GRAVbb%mA2bQ'9eIG
+
+YUNlZY-,YqZB002hR`[G9,bIiJdDSl2BaP,%4e(PP,KP9540KJ[282k9HRL!lj*Z
+
+hK-QRkC!!Pb#m1P$pB[%$A%Uk"[Vr8MGBG@6&K91L*`kV2D3['c#eqVS1RDQ3!+K
+
+*TlTPCrqHb1#YVST&lYIQr%A`%X[D$+#6N!"hbecF0hfk*lDF`5MmdGZ"6Nd*EPk
+
+!p[lJc*fASeackHZTB,BYSN0HZ0JG`VX-jB'+LL%*LQ))mXBp1kEaV&[q9JZXcHZ
+
+0)Uq,(*K9Dl&"c30(fKUF63e#frD2XdRRb3aF*-a9kSHY'[+mfGp*c[+"6RSGhC+
+
+Vl-hRL[`J[Y[KFBjjFbiPAmU5mqTqYFZ3!(IMh0[S`0jpZqSHc[ciR--X3lbDCCr
+
+-X4rf$-baPZGcE#(a@$@pKZhaQATSRqR(rE(NJErRp-TLjdGED5C0a+aV%2U1iPm
+
+Y--(3#BI(*ie2bN`+66"HfF9lXeNS2A#ejia,JchhdqRebUm%Q&kcrhCkBElE9dA
+
+r1,f8qfbCAV+$TVXFk0fSImb`GDTQC[9UA3[0%R11ZFKKCLYk*9IY&9Ij3+rXkqm
+
+99mC!VqckjAcD9ScqbrQcj$r,qM1HM@Sq)AELAIm4QNqjPe-ZCmXqqRCSGVe8r$(
+
+klahcRpRql2RX@MF`Zc,rdqck-'CJGMhhG'F(RcMBTA%,JpP9I20(A"bB@e(,-l,
+
+RdC0NiBH$25#A,FFQM*X`EYUiDG'BGQQKD3G1fV[(1SEFai,6cTT@"j81r)bClN1
+
+AM9'Q6V2f3(!RMmVXSQQ9mjhNlf34XeJTZdacY'h8CCHQPHUb9fQ5IFS31N2-"AA
+
+jE*)jcD&*"[m'Yei)66*$Fa[6AXdbZrEACKPb[9+b!Gfi+GLIdTek1b+AN!$T'8@
+
+rpj&A"mFpF&PCh@d&AcBlYbMY9cKdlVlreVR'h9pd,R`[IDP#jaUZ81H@$I4Yb6p
+
+fEG9qX)qA`$j@UmTdMc(lH-!RSKAZdFG!C1-M+YEfeLFYY2A4M'5Hd*%I1,+hclV
+
+UVlFqXU(ThITmaY,rBHXMQk5rf[Udl4PJ(%mrCab2&#JhTpEq'a1XS1'R%ibq&h9
+
+eV$VEr%XQ@0p9$[C'D8rh4QP!DPm2pc0ZDj*Y'qbj[plj10IpDS@GMe0aGU@jaY'
+
+RA+29KUf#0E9qbTZ4Dcec$AZ(VlL'hXppaM8ZpfcqNCreE#rVk1rC2YEaIhAVDrr
+
+[EMA1riU&$9eXqhk4ArapTmEjKGV0UHe'AI0Ei"$#,G4fcVSer$$Q9`hF'KiRCB[
+
+Hqli@mUqVcZjkV`f2lIT9#0H'(qlrp0T`CShUDq(LYD&52JJTb[V0X@9G9bpc,#i
+
+0E5d11"UIhIa@m%Vr-acem-A9ZNYHr&p&-4Xqjq)SG0Cq,f12-GUjLTUKf6YrYQL
+
+JGk"!d"TbRb,pNklFarCeN!"IZAfeHZM[EQEIkIMdC[EGik3L%ZmYG-DXeUAe0A8
+
+X9#DGF3N2kLVqhPUJD+)6@GkMk8rHp"b9@dj1p4djF$-"PfbpRRkJ$J-A+4QX1$d
+
+H1MM3Ik8#2AbMD#mbmNV2"kRNFYZ-9pTEm!4VL&25X3-GLX'Mp"2pcU,c48NKka`
+
+LaPCT8TkCYGB5p*($8Jph-6[9VRlDH5%i8dKVG!ApfNM8&20F9#'YdBQDT6repP-
+
++ecpTM9E9F9$K&eA2dc@&LQXJVq+,@Q[H`Z%$["4GGYl%[SQl,iDbq,D!5T*F(6q
+
+eXTi[MUpSi@SGc8J,j9Q12,$4CVQ$XRfr4bSSIT@[HIPLmSjq+BrY!$jLi3R@j+N
+
+0h$K[5Bp8GJ[QjP4GP-Dj92`'),k&82HKm8c@&BE`-9[Y*4A[Hr'H+Gma-HKc-Ck
+
+"VZ0L'4Td[Jr!@kF6S`$$BVEG3BC&ab#k&LNr[Gem$I`[8q&r4+EiRpVTEJRYV-J
+
+0lCZ$rH15aL9064VFKb$r'`0ZD(F'YPLmYGd6Z)IYV5JeF4T+"kFj-SC$I,0C2!M
+
+ZU'0h[N4,Y5"Hfli480M*NK@2CApPJ#R(Gd#UfQ"HFED,M,Jc0@pa'q"iefL5eG4
+
+A#G5SfFQl)BA8UUc`2&C1meqpl`mVE&LdL1`pIJjcMkGDQiPMcJr-0Bq'"%[J`a&
+
+6j`ebm4*ADVaJ(&!&0-30dX-Q8k$'@Vq6I2%&'[1fRBThA)l%HCAZ6De2&1-$C[i
+
+p3FBPqIF1mM,GIH+f%rR*P%lae`Rq1XCIEIc9bPqS)hcP&rVT2SmZGrZQ4rMa$Pc
+
+NfYH9i&`apr%'VRD9PUjU'Fh,Ull'I$Tq6GXrF@-c!ja`Ib3`fX`I'(RVDlSBXl#
+
+B0lcpFli2bjmHr`8@8q[Hp&%KMSHLUdPr0ESkLVqScH!Y$cSSBibE[jcF,A"(EFH
+
+VfXpIdJ)c6dV6"TKBR@,5Z$2r*hITZe&MFIhad#2q1X0I(BKkBd#CDekM91[Tq%b
+
+(jRl@@$H%40#,3fdLe6f1kRYjJrIDk!2T[9CV'Ia3jGb-Eii,aUZUIAS0DDSFFf,
+
+(Vb(PpN2&DDdSEQ`lN!!&@P&MiDRedNAN955mL03-j`XX[&$rdah8&crfS4XUrUp
+
+DhABark[U[H@q9CR3(rbaHM(q[eDU&dNK)fQNAQc1!MGjUPqaL)i2`#+EaFTq4DK
+
+k1!dHT0b'mcT9hUYSEr234AjVm%9!f5pkraUrkXXC(qNJPX%IZreDb[%EeDf3!&)
+
+JXkL,eZG5bTrd#'*2QaAH*GlkQKB-VeReUUY+UXeI@"[-XBacU1MS@QKmjE8&R*c
+
+9Ll"cQ-cV`'5pRmePhN0BIKee(Y29Bj`,p0p0a,I!p0*raecR(hf*H[*fZVl%l[*
+
+fdUP"(r*AEcMReZ*UkdVFR*,qHlCB[1D4Fe2lih(cMQ1XbeRQk0U%iSDIINd1ZQ1
+
+JbGkrdhBH96I$MV034[IbrUdBZ`*HFVl42jH&5G#Y8h5eKEpbq%ZdPTX6q)X+I*H
+
+8q230p&SSPVJ$qc0E6f3Gch2c`[%[pL!U9haRmZNQT,qlIk)adGrGh&R%mec8V"$
+
+ZhD[ST'E!#Z`h0JAf([V+LV')HrM6[BIS&ke,6dT2BZDhPPa6JrQY"qYl!ErSP%2
+
+Z3+ISAB6@H,%fMjS9@GZ"B4p4hf*Lef"2Fe4b)X&!KlLI-LI0[5`-%Tm6M2q8Tkb
+
+PQQQ0Q$K2@DGFQ,m8[!crNh-r[c#rLS)X"Hqkqq)iPJ8[c2r*+RUc@%1i*`pEIY%
+
+qr4GB[()K"lZ3!(1DQq!B8RR(k`bjma"pl6jYR6pjr2rMBhCeGYrkHC9rcX9L+0B
+
+T0IiHP(L[69&ihLK&MN&8kqmUYCljYV4),jAHfZq+dUkkJlPRIpAG2kfkZR96LLr
+
+aUVFUhAdm@,%r[[IcZPp&`EVMhEc%LZ&BVeBq3&l&['lD$4hZec-+f[qrfk6$`@e
+
+5hfi+6LQB8I%EVC!!")bf4e36ipBj(`pJ$,06e$K'UY"Y$@#-E3mrfde"Y@XZ-@Y
+
+6dra*TC0l(5ISI[qSBH$#)9AeFD+p[k5S2[$8j3'Z*!4+[b[6m!ASLpZDc[X'YF$
+
+T6SP1"hHS@'bYGD"CT1T&QaAj!6bea,1,AlI`Nh@$PB$$"H6Zclaj-$1F!0(l6me
+
+RQF@a3(4I@GGC&rX6ZX*%,+d9p#589Pl&E(NeH1fNP"%3Za1cU$mf'#1[T"'e-qJ
+
+D@MLGhRf)mY'KRkVCB-jFaS[C%-1Np8h**Q1)jPcj6+m&1p6,&9+hBSMP&[k6kR'
+
+@LQGVUhUYkSkQ[hSAPA&`+A3&PDUI4QA9ld`rTPMpqKJ$AGRcGp06aV"*fE%K6Zr
+
+&U%+e-E!AfrLF09a&`TS3JGUar33,Gfbl-[ShNMcjXVdVB0*X3JDriPd*DUQlG2h
+
+ESP"p8m!*`q5ZEpj5r#NKcapH#HCjc2X@M"FVe8dB-CIC9"rjCM*mIf8d`,mU0LY
+
+I)3AUB,48-FH,4cSGp,+2i#HmmYB*NX(khJRii#%KC4Zq&j4e4DIK-LHGqU`jkpZ
+
+2m6A1G%`-UH,YA,bfF-!JhX8L&p*aha#j-2idY*bIcRbX5F2hDY)Y,TSNh66mH#2
+
+T4-2&$G@HRhB%h&E)48h0Tlc`cE[1TVi,d,HZc4Ij'q4E#R4ijEY0L3L2A)T-EkM
+
+kFrCeQG)RKIZdHfVV93FTb0Y%8l`jYrrZLmiZc3@HcY)XHc1HCi9h15`0@)R-6!r
+
+,lZa$4,qBF86XcZEFTpd*GiHk1h&CT,[cqQ"hU[afGmBdH2S[dKi(@H-N8$GTkXD
+
+ViaULa@ZM40rEl&AG,dXdr&'Sk#IiqUjHkK$VEEje8eUU1J93@h`VVU`r6Qh[JA(
+
+qXY@"UI9b&(XlKM1#@9Kq,)"rAYd*Y[,Vj#k6iTR'3L"(NCDEdLT9Jk1QbUfYK*k
+
+[IqQJBL)biNcE[KGik'*!3GBMFT!!Ebilm&SHk!+B%CZVk"UULm*BaQ61@-NCT`8
+
+bDK-h1U2S)9NC[C`4V"-Ca6fc9,ZTIQ9pLjUcQ+EbIZllFB'qKkF*hIG`G+AlRKG
+
+Yd[I5"kVTiiceC3hmZ2DkCZLIPXT(8FU*XUlK4p4C'1m@6#r`F@X3I)(YNRU[aND
+
+IHTG`28@iiL1Ncm1#B,2jrJpE8XJ99RS)l63iG8TUVRL'ZGFGA"T8mj925[@#[3H
+
+r4EAjN!"DPGH*UC48Efh@mrj4mbr6MipF3ME@H1XaLi64GrGA2kkj(DY0lB$H0ZS
+
+'[(XGAi&MqN,NTl+r04XPTZHcQ%Kr6-`PKIMR4VHE*9%e5H)00Hlem1ZNRQM1`%B
+
+f[mh!5Z`&9!GGMfkZrPjbbS"F#C528Fb'A*N9aE)IjTe9G+2Rekb%Up`ifUj"Y-J
+
+1*bV*5DKC&r6iNCZBjaNblrTlkA@*!DjH9EiifZcm!qJ0e"krULC8h8S(IZ#CGdk
+
+LrbjmQq%Q-9D!q$EQ`kb"q62Zf5bJ@maXRVV$X%Q"6V6bd"#2+5hV-YiC[1Q0AF"
+
+Dj-6fIL*AC6'[aR'rIR&RJ,K,1"L)c(iq'B%J"Ii0I!Gq2K[M")KGGcbi#r[$JGR
+
+iK`P2,q"Hr*34ElrbfHiaGRmYHm(q'fhCTN5#QrFVQmAM6cH,*jjZ&S'J16+iQdF
+
+Ga+qQA@pc6bIGCKeb+6D*$K&IGICF4-5krJM&YZMRG&CJBeJeF@pVbGKRYpIdSl1
+
+J&IYdbqpTJY*,Ih#e[jIqS1GT,keqfMGd@X#EDr2DiU+ErTk!8Rm2r,Z"ra5+Thf
+
+M%2cj2b$!GA1"J-G`ElUHG)G60S8fR+)+!1HlF!FR9Ad+9I@3!2*r-fNDl4R3dZh
+
+I%mYY46NZfQDMaMe2,dLD`j6V8RdCXQC!0AfrSU5JlPJYaI#iZU#q"k%UE,Cb$3%
+
+NSK[bNTS[VM1Ume'K0Tj2EEZYM,T+&B(l&8Y(qj+5+20-q+RLU+8MbXYB+VpUM`G
+
+(i2%J@Z$hAm'YHY@cMR"Hr%9(3"IYbaikiNUP6AhHch['9PEi%HR3pei3'GC!aj`
+
+5k"DVAdTN*N[I[PQMh""TV5cVcNRV!@Z&hAQLlk##mDi!aYSJaVjqFL`Fd0ai+U6
+
+9dDa40,EBDr(ETVLHjArXYB[j[L5KedjQdmaP*p8[#1kT+Q0bi'X$I'35IU[a1ak
+
+rp$&8L9rXLNiUfkqK4F)4Z)FbEd,-qbIlhMZ$paMPF$iL$'&CA611pZm9)N8FYSY
+
+[$VqmCeYUQa1hLr(Af"ZBa1`J2pTa[*mIl6Jib)pFj,ra[kL-p,QBCmCqhLJCBpc
+
+b-TrpYdEQ1H+PY6NfF'QMVrcqL[hJ[DRI,BIUC@ZkcalJ1hSDFH+Becl)L(ehmMD
+
+qV6RPAk1US5CB%4N1h*hkiA)-FdEcLpF8IV%9@CF-S$I[m04-Lpre-BmeDjfR"UU
+
+dB)#$V"rJ)+Y$('3PIPIJYd@T'R8)H+qr*$$RAJ+DPY"N[*J4Nl%r)c9JVBb@mP,
+
+99(KdiAl@fD[8cYE(&KF+rG15'@bGE9%AljZ@2e5dXMMhJ)Sm*Gi4-Cm*FHl"M8U
+
+I8NRmFZPcYGYHGGcieG04r"l"lq&"YHb%SqMaTq$Bjj)bbTF9i1e+r,66(&[ke3(
+
+k0*Br*&HU#rXlb1&LCJ!eR(pcpVrUl9p"$HIPkV*qfpS"I)DkcEUiTAJ%[Rh!32`
+
+$R--3TrP5Ya`HXAj2L&BGhNSE5Hd&ZP169hbUP$#jk`Ml[Y"h*9@fGZleARd&j*!
+
+!2Y%jaY[D&r,P#98)i1Xcl0q#kj5dTpFTZ-f1EZ2S4N5AqI4dqpfF94XAbP0K0!Q
+
+Y@rpV(0QIhiR-YCbr'2P&Mbm@lC)p`UeMFpBI8p5YdCeLMVb)3ChTB"6HC1#AMTb
+
+Q90p1HI2XFFG%Z-`mFUR)%GSCI+PJk'3piCr!M@fKbJlhYe$2ZCMG64NlVX-(Sf4
+
+N0Zi3N@mj9qPL[L4IPQ5NZIBCEm)0M(0'TBT@pR5SEk6mXrV+P$ClNKFH+E@qb'p
+
+cAY0,+65"a,XC%+3!3HJTJS3fl9AC9a19Q'9`0Tj`L@18`kU5ZApmNRYRA26"FP%
+
+apaJmB!BLUYTY4GrZPMQV613&CATl5erh1a)p&*b92`ICBFp[E3QU'FQpRbJ)VAM
+
+H"plCGmL4$1UUjL*F'q(99+Sk+A#aE*J$Vm9i,3Lm9Z+e22"DMGIaJGHTH*d5H!h
+
+LGBCmEI6+HQQ9,DQ@c-[Ba8Pc6[r05e1p'j[aAXf,@2abEa0fjRB'A-Pp1"bHdI@
+
+d0F)Z-b2[BmM(Rc,NANCG'@,E5QFQ*GH+RB9S3G$paIfrJN%9JhXErT*[abrf`XV
+
+&(Z,dP4dGf,`UVqa`Fr$UmiZpUdKiX8F%kQ,['KEF,EcDqH92liG`ib#ZB$jcU,*
+
+)j1TBYF#M+0hHlLI(0cZ#+N9D(flmXlK!K$UPr$(1GU0G40B+cBNjMl3T2IEcIi9
+
+1rhjZQY$Q3&AK%`mIBm@22(c-f)#0jq,r6qE[FHBUE(X51YIpYlakbPH4)bCcBVH
+
+fiqErM"*j+dAURKNR(&A!#6q3!1SGdY0'6ZBG!EEid%@UJ0%0EeT1jKdlUMH`-dD
+
+YT#Ujc0k$ZS54aIP@U[JPCkd[mLVfmX&9H&X&T)hX$U&!,-9[(Ak$q*f"hfRiRBV
+
+I+ILGK0pUr)l(lcMm9Z+h(,rd(eU-h`,mjZ%h"lm"r'EK0i1p`4AJ%Kk@'Z#!B)V
+
+2Hj@m'X`mcV0rMRK##QfFV&@CThLVeDpmF&(T`&*Ad2IJNl[qaiHPGdhhr(Z8baP
+
+aAe+2#p,CbjBX&l(qR8pZp#Af9IHphpIGGlR[MMr5ErCEq[h%FTIR2$&`rl#HR8'
+
+h`FmUh0T2l[TiZr9,bYf2Lkq-5ZPZU*!!'931YJ20j&l#$`IcF%R#204I5Nj0%iD
+
+4JVa(q0fkN[90I!hcBlJ2LhYeSaXajhA&Te6CHq[rj&6*KUDMQDKaadhJUN`I1R$
+
+G"%I5`#djLFY540,q"q%G%#5UFGQ5J!H8@)A$r49f4$fr'ZUVZ2qcLY1GYYSTq"Y
+
+jGr'!MAXiRb[ll'"PP5j0EhhKI#$H-m'+JAl*IYS[a4+"H6NM'1Pil,2Z'DGdcmD
+
+R232A@FP*-P-a-DXaeShpehRf"@bmMaUDDqU#I938iFV'h9dH0MB6a552(Pmci"Q
+
+6&3R,UlMNf[+Ym((1#1bY9)6iqBHD!halq4*0cJh3D!R,qkl(IFY$["aZ2Q,hG,d
+
+hG0`Gi'T0AG$"YGC*42'hAHk-SHr$[5CIe3Dd@pdc5XDH(fGX'-aSlKdPBq6('FY
+
+qNP'UM8fGUVB`G#MP`GXEMdDK4)kYQIj&M52N0CpqC"B,l$MJ-CmePpZH$ZX'p1D
+
+ZrZRNl!Y0)k,F5p[cj&Tc-DNF5X4*LS!V,E,aEL8kTYBkTMhJ!8-jJ%61pKbCKcR
+
+Ejcp$e,idL+Lp0C4TCHKY[A`E3aT*afK14K`FYrP(&5#M-V9Mc@TB-Af9H6f%XE-
+
+I5aq2&$Fk-DDTI*9p"$r6HYk%`%cAC4ApLG`QT3EBmP0c(QP1UQbCrUG#*8(0I["
+
+IGf@Kmq4[!02""Z!DRdd+4EFjrh!$)[Bh#&h&(2)T,eM*$S"e4P(&A-9&EdN3LBR
+
+m2b2+9a%T22$UcLMGUe#T5k!qkeP0[I&4QG*rhe&b"q8lYQ%@XjjQVl"ViFhT-('
+
+b3F#c5SN@GNhA6P1,A'X@&VP@PFcea!DU-&FLD4C8KE'Ti!j%AFHS(j'adkK#ATG
+
+p)1qUjhNCTHH%e06VLY)AiFX$h#km00L+[N%E(h$I#,Y#r+K,kAl1`EEJ$MQV9fk
+
+pC[Q@5bU5lMr99p5hSqqQ2pYIiLrcVrFIp4rhRa$#HZ'GmHdfb96JcG5M,BCpfiQ
+
+L[9&RLR"&fTMhIr6!C*,XSk9q5@20BP`HQRI0mC`*MF4Z![@81B#AT%B6[JBf4H)
+
+VfG12jrXURZ@-4h5p2N&%Gm'"ZZK2dDLGGl`Up8T9SSpY6GJCd2@N[M[fY9$%pl'
+
+Ia-E6G!J0%M9hp4*Id"QImMT2Kp"jme`TF)4(prjCbRFDpCQ[K9i2h")*j2YEf*r
+
+AI4'HdIf1,0cE`kqLmZ(qj&[0-,pK!f40LL+JbT9&R-j[mbNq##2(mHiCJH[PU9[
+
+TLKIFZ(@`8UUqrk+T'E*'F2(ALiNe5f*[kZ$T[MBiRFA%@PG5r2T(K4(1$4@EM6&
+
+LMHFHY,r+D2HPjcde(UVB3efk+8'TJLY$Ae%dUYf%+J4G0RTl6JMAr2JBBlLBkBR
+
+'ea*hVK%1S`f04qHb94'b*@k$%Y%Zmi4k+ME(aj5%Hdj6[[S6-MTdfh88li[KY%r
+
+MHSfUE2MVZ'Z'S@Z5X5NA(DFR'b&,F+R##B-9A[KCI5ImAAd[*)IU@aDSEm'c1[D
+
+q(Q9dI99lDU"QbT@ee'aZmr,kaQApEYDa%mqQ6XDe$Dr8I0MidA9e8h"@Q1iGRrV
+
+mLZC@AVA(Tj'&SZ)I8&"XB1ic&26aC-mdc*pFRlmlZJ9bqi(C0)I2RBA[1VI(k2Z
+
+h2I(`dAG2E,G,'hYCQ86l(#0jSLRIl[!FpR0d1Fr3eCJDM,lICQbh$Q$E2i$YASK
+
+dAm+Qqjki+Y90L2)$#$fXC3PJaG[dcbS*TpUXT6Y3bjd+hYFPAY@cUp9THUfQ53%
+
+P,5$(0LmV*RjNPal,PM9!R2LmGbEmU!lem3Nac[AJDi(iNFi[kZF+FeH4CcjT!3C
+
+G&"Q,'XG406p'NGk2!VR510FJmZDG'Z0mCj[GTR'C+MCAI%QTXZ'[mJPeQMkK9[I
+
+H4UQIIBBC5"da$V12Z[1CeCjK9S)BHVRX6L@hPY'(k+A#J9cB#&c-GDl2fCjKp6r
+
+N5U5L3qNcdDG8ifQIX%)&Nl9B1F"IT##kffi8h'9`Hf`M2GHC)!C3VSNAAG6ErfX
+
+2CZLGkr5&`T`3,V[SY8,dS+ZMb&9(NE'SF4`eq5FpD+*)$hGqi8JKHY$9-3Iqb"2
+
+4JfkP"p1H9Yl`Ce!I'Xc"[rGXfZKq92-6Xe0Q$6L[(cXq2lDNp-ES)4kr)p@e#&1
+
+I(Y)2iD)d'CHIPECL1)1$YVD[LcbI)L)ek0pFlc,cX8[diMV8K4j+,qZBqc&dJVp
+
+(Zi6LiNP1N6#T4-4-QLIL+U#kC[[a@Y&BmkBN)DBH#KLVeSbi@3rRPlKZ&!82q26
+
+'PFpV!ZG9i"j5i5Fj0i3)8'G6MB8UAcSMr,cR)Cm6h[00YV+F-`VakH8leQ@XAcT
+
+[TlY`V6ZZVfD9%e[kl*rmpE"Yj*i@h[Yp,Mdlf@p4m6h4@20fE3#JTApKUT!!Q"9
+
+a"#ZLkRm[&'MQe6B%DR+TKZjR046DCH@VAK9'MZE4VEHJQ[6VhBF2fdfV[h3qUM)
+
+J(kkES0&PhNr&H*hN$@'PE'H1TUR-kjYhrEcVBPmid"IeHQLM'q)UBX,LBBTGHM&
+
+$[pLZBhGJ(Q3CY`()Qe"UfN6C%lEP+`iY65b'!HpT[*'#QJ*lkf`qEk05qf21l+!
+
+Bm16"m(kq`PcflI0'Ll$kTlX0p&CPm8mRCaJKJfr)`Gq&imCFYGUjQ#E+#D6hrQa
+
+F,1-H3eq$`6YPZYT$c))-h42Yj"N@G68eR$9Vr0k5TT8JhRAeLeZE&d--8E8(ZU0
+
+FcK)p0e,kjdCpS!mFK6+Z"RFXhaDDE"d1MTeaR[N0eTE[Glb$'iHF"P0eZkF8XCQ
+
+[YcH8)Q0Ube"%PMB)MD(P"ah[i"YXLRQ0@qLGj3e'(5k0SMQHD(6C-BjELVJAm(S
+
+3%mS3jdREJPa(UIK&je[XcXE)IE)18,"a`1R-S!*5H*Eimk5b`Ec2+[Pb1Gq@RqI
+
+Ea2RZ9rhdGV5LamV*hfCeij!!eFj9@P*fihYYeGCm11fAer!29lRS#XHqYQ(Q4Ip
+
+ljM'B8DA21p'L%1D%Fj+@[c84iFmKJafR!NfaRIL)2HZqTh#3!(YDi3XZKJ2h$*K
+
+hp2T,,j&$R&$jb%E9k5QZ$5lfIA#SkED8T*5ki$Y9*YMH&&)A"+TTd08Z02Qd"cH
+
+ic`Ah$Bm[D@jDcNEkE38PAKG8VdT@TRHMCT*Ga%dUaJ42q[10T*cb8llP"j[+FQN
+
+Grlab3mN'Ebqa+Y0lUq))pl5de$c98haC[fG!KbF,REC1l@bk)MDlqYbPCfj[Pq1
+
+qj-(k&U)UIih*QLkpQ"lj&0-$F!dGam5H)-0ijQ`EUCK&,N*&cjA)I+ZN6H1bJQ1
+
+5"FL0L3ZhXD,IQ3+P"MrcX66-DlpP(QR+i`k$$XAK+G68KhS-LeVB[)faB1eA&a9
+
+%PjR+#AJ&[,K@%AYl16*ST`[Q,jh!"L+4`Br,FR"Ic-Sa&Uj)`)L*6`8Ml'qa,8B
+
+&e!4Bj[A)!PLA6[%+0-EeB%,"ArmU@B0!"D%X!)EH1bqjY@!p`+JbC)iV2Pm6a5K
+
+N#kAVdAFCl*J[r)N*hf"Sj`cphZXl3Kj5Z3ABlN-&-pM6FZ4$mQQ+#-P@21Mb[YG
+
+[Ifm9d(RS3pd9`"Za",SL"GSiQ2M+6d23JPXUU2q)HVa-9HM2@8K-h`faQc(YhJ@
+
+UF*HkD(&J@MMZmE4`VT&q''3krD5h$E&4pCKV1lkpe0mc#k$S!jrY8%LcCXiJe89
+
+lVbpHXl,&I*NS-q%#+8#*cQapr#"'jLZ#2TcMI1Kq3M[ZEUT[(+Lal6XkQ!Ee[SQ
+
++aeIbN!#*9UT#-V'4h"*,#E-4eR5["@bNCS1lKlE'&J0TI(Z!J4J$%kMAeI*I66d
+
+[6lbC&R5EIB'!hP6`,#ee2qf2F6[ki8Dc(IZYb-@(kD3`$-4Q,p@Rr6K2pr-mTYi
+
+!FGkh[!c@Q6A1USQm(HTh,)cU,1Dj[l#QTDTPKFS0f@R`%a!pcA-L(EJpJlJ$*PI
+
+-mkJcCK0MJG81"EaU)M"XKYI5"jLAKIh[dj[@rc3h2ZE@bQAMlRLFH9N$I#,hZVZ
+
+`maK+(PVPRP@rc+ek2TI0!ZCREVqH@6dcCb"[YB,GiRXr0KGK2acRDfdb#i@'(--
+
+5M&*bVd-f-K@IqklL4h&fB!GNjjrCA+Fb5GeT[%dKC[&T(mZ%U@9H`h-bFmqi4(c
+
+P@qC)c0T6UJILT95p9%c3,-@A,p`0)hlh3,b(jmYNe+GQ6F+96A4MNJZe'RS6-ED
+
+2raDc%qkEYPUr&-VDL(Q94Ga2YJTN(h0,0Q!fCS*VN!#ad%Ncq3D4lZ$V,5S5Nhe
+
+`#K-Il[GLRT,&CbmmmfY[)*MY,[+q6bmNSBI@S5kZ8L3,V&0eNH&IQ)`qhLb#PjP
+
+U[m!'ZG[GdYbS0&2mpZHCXl+UjKj-+ZQR5XEk3qll'1e"G)JFGm2chl5Yl)DAfpD
+
+Xp'Kd3afa$@5IS1bKaU4`0F$9ip8RNKfN-G$436d3Fde*E`r)#ba5EA1ZUmR&'TT
+
+6j*Qcl%2B6GG#`4+("jT-Q"j'D"H!@jKLT3Tja$44El9V$H[KY9,jIiiH4M8idl$
+
+T&+ERNl0V1ADkXjS'jjDD6je`apfS1lLI("[2)dC!0b%*c'4AbCPfkQ#*AIT1-5I
+
+CimY`ZdT43U9EMVe1![HGk9(qQE1Sj[IFX59&(ZR9(Y0"['[GJ0[r9R-PqbIZ-9H
+
+QJ%05-FC84A*Ud)Q'GSH-8AYK[#mM46LC(q[JJ1FPjS,SeZKk9"fhHAaP&b4#Hl#
+
+'0Z3TlUKqe-%@F%4c!VhS@549*6SkF)98E+iNr[8r8eHYFqXULPaar2DL'ii2lLL
+
+#ch12V&)36U(jMDUqaGiY)KH[bLkVqJU3!)*c'+YjXqU@HA*SdpJ4U0Z,lQ5Z#$V
+
+6@&e5K%j154qT9,iY"5k8a5I-MN#q0RFDiSRbQ-``CMfl@8mQjCQ2&Q+6&GCY6UB
+
+1ajB5cT64PjIGM)H5!LU-'5Sbh#6)0Pck+e0ZekjNcJeNcJTPjSiLmZ(mRf3(Ddl
+
+$26qc`qdQ-S5Il'*'#%mhi2YbMieY`XPN1hFB&5p6*%Faqb!((TATX0fX$b2-ATA
+
+)GF`V1#Nmj2SkC!P8D4"P4(pKqi'Vmpm+jTHHR)e)k(Db*Ph3Ld(hZE"aaed%kd*
+
+&6dBD#d195I9N2Dd,[4I+R0*F-89Q2A@&20@Jkr%De*VKR%pY(25mREA+Tpj$dV%
+
+hVpp`)D*90$RaLSPl6-2YQlMFKNp6c!lX#'4H"H-'BRJ*BMRD4XC8*F,bZ4ddpZH
+
+S%+iUC(($D85Q5iH[,'5Gi%e*SD[UK['i8H!hf+FrhC3%RMEj0j2Yc!)Ec*'Z0+-
+
+APTJchGSeK*3B"NN-m0eG5#Ubq2)AK"GJ'fE%JjNGJ4G@hQ[8ei$2LimD5m8q+BI
+
+Z3-%-[&6p#Z3&8dJYfHja3*h@RXUPjLV9DEE&"-UNIQh[$L,HrqNPaFhN5L3fMc%
+
+P6X+Iq%cQIdH#Q(6A'J,6@kN)'kX6SGq$LiM+P(E(km3IcQG$DIG4RV2dX"2@T+C
+
+JZSm0TcN"P9BS('QQ4j6,d%[SMYiDc[fXKS'rUf&p,VCk`0lGP4c%$JCX(-$HmJR
+
+#6PG3FMXqN@mmAe+iGK[[3Dh1@kPdhRci10(YTfjrNSP25Rf1ZA8qJmZKE%MX#ZA
+
+elhUiDe6A*TMfTPUGUK5jSFXf'6Q89Jq1r1F01&)AR3NI1ThG$59LBK'HYSM[8Ya
+
+d8c9AmYYajLS,TKVQ,fTrlMKU[``c45SI2CaXpj(6GXaIX0YNFJEbij1FJ9iD9)k
+
+9`@h!%h,5hYF%Pq-acq5XDB')VYb2DLb&Uk)'%9@aAd6jF*+%(32QEl+fHQZqq!0
+
+FL*dhZ+1-aAkrac!@r-)C@E@9AN-k'qkFfIGYejcY9@$ZfNdj,S+aq-C54UYfRi#
+
+@NSIGI1GAEq@DN6Zr6PrRVF#6,69*kV$+SG8J,(6Qq+5cLF1+jN-hIV[`H`DrRHb
+
+rZad[Tr"lFJT8-MSq)+91G+XIfQM%YN2Zkhfjl1VEacPfJRP$S8(LSBJ@LdrPq,G
+
+N[+!lLDT-*af2MKe`lFhj3'rK(R8IL1[!(SjHkiDLc`e3b["eX@2fYA4P!f@rLjF
+
+64[KQ8LVSJ,r!'cC!bcjk[fX+[d1[a8)A)QIQ[K+6*eVa0Flq&J8[l$[Y,$lTAab
+
++mj%2$Cqk'!m*AChLbbJGGBT!ff!Jl3KFmDLXeprR%MS61EUZcqH+2)hTR&VCLGq
+
+P5q*P42C56),e)XTNpIZMfqP1--JZE$Tf308)(QZ5)c2%`Uh!F**f$E"b0J0+#H5
+
+HJ[V#EN*G5r-3[YHr(!#T[)@[1D8ZJI4jK[pD2V5i%&A#0jb4+Z)4GSqN+4hNifl
+
+IMDSXK*2lZEKDLRKU`852miBVA&qLIh[N4Vbm3$%VZD1"XB-88$VHaedpD`(p6pm
+
+*fGdUlYCl"VrXi4+iS0Rc'e!$1Fj-rhJ&r-Ek$rMpe"[`NLrpd00"9D2bN!"cTp,
+
+I0El&hDJC-Kk00MRI1@4hjb$c8AU[-F%P&1[`R#H'd6q(5I,eJ*H9j6aCFJ,[cHV
+
+d3aGL%S6LJEaEEU+!ZTYlTGar$@bX"C(Yk-LPP#'d#PqRh#h)QSHXEMKQlh,9)DE
+
+,%i@B@bMQ$SUCJYGI86+FF6Q3!1%-CrL@NZ'-biVAAe-bG,V-b0$*'AjGbG$T-Z*
+
+e&&jGb($+H%"1k9!#GAAr(EY(V4FbBP,"X8XK6IPBAm-R[qjXA+QaNVJICBI[aAk
+
+"hrZK!"hqi5E@HB,5)[[[[%Rf(c!&d2dRm$d!hffr'Q!bI4R#*0'GN!!6kS%-kSR
+
+Hq3EY`qiGe654Zpd*b,J%'AQaK1ThNqGaQFE`L"94*L!f-i`p4ciTT$-NUS$cFi*
+
+dBAkLYhRP&(d!R3#T!94p,,GCjlZT4P8QkBYH1URbH5H*2U,G5Bf46rY)YSqUMe3
+
+&3QQK+JIk+hbHY(05`4eCl9C8$KF(9ZqYa3C5h4$RdK@Ik'1DhDE[q24lq0qhSX-
+
+1mc9(%fb*@EkiH1e#2S`,EAI&"Q@[MLYbq&cE"DlYQ)!EZ5@i!MB-aEGT#ab-0NG
+
+8E2McM6eIKZ0pZ!$6'8r`GNXim*0dNm)V3Ad5*mlLSHh$k`6Y6,J6[eeIqGBUD$d
+
+8jY&84&mIYe6%aQ!libNTG1ZQP2V[9'`c4ar%[69fdQmNSc-kpQ1bK304EKN6U)J
+
+h@CbaiFMUTUc"*#K4I)[e,(i&ICXSrJR8Q",&rq$@V65lNTRK(Rq'`4G'QK#"#LK
+
+CHMh[iEiYc911Q&(Z%L@QM'YM)R6r"%90'+BrN!"J,N[@d"P%H$M#Z6)5PFeLC'j
+
+#9VqC-AX9I)Dr,6l-qF@#F,M$D5Zai`VHcAf4J5b,D92qbkF+pFle(&-Zd3HcJ+J
+
+3m3&2+Vi'H*,ajI8N!R-QAVlPLF(AVh&&ITfVm#XHU1`JTk'jeS@EFE#)9XS6NTk
+
+"-J-qq0C54Khe#i'SjB3JP1Ai'QEAYl"VXEh,m#*M%0de+1ejl#*V5dcB,"LDq5Y
+
+apHqJ6[SeF14R1IH[2mYpJI6V`9(l%+!VZ*fi%h2K'0Il+,U0882FjPRJIA`2a[S
+
+L2lcV[aNGjRbRCcCmeZmKCiV-Nfi#jQ,Se#5)'FfAS9TeP2)8fj1JTRb6Nqli`$8
+
+0FB6UBacN(LVQ(Q)RH6h*k+%!Srd@0PAmrKAFKr$lej6HrR@`b2&0"Z-'kXH3!"F
+
+Xi,Jl"6HcR-&*d2f4qQ+6%[iZqmJhkiT0FERMDc`&2,1r2f5EfH$5irYCXb%GLMK
+
+MGEcECYBhql0b0X,CPFc*49!P3BpMJQ)@r90LQ0K43e&AAG3J!P1e*X`Y(Km'4qK
+
+8&B+HiT[pTXA,F*0aMqT@JIHf9-m"'fU$HaHiL"Jd"C[Hk10m6$2UL[&fN!!lr'S
+
+IP'c`$6j2Vc'iI28VPkr,*#jE@bFMj%$XiSfE$lY-ICF"pNLG$[1'63N+X#DR3Mc
+
+Kc&HqK5pZ[b+mH6rQTYX%YGddG2Nd1pl[6E'6Ul(4EiT%r`0jQ93!pE!KZ"Q+hL-
+
+Ql)Sd4Q11LmTD93IHRA(44Te)3[G[ALNU0PP++ZC#a@JCcGT301PKFBpkB"(2B'a
+
+`DcG9c+fBd`8Zf"!0*04h5f9p0k*kXf5p1cZ0jl6dr[*dI8'Bp%c6UZIZA8kcVIA
+
+LdaPJK&8VX`,j41-B'Gqp%-Vi`[1-ZDKD"DUf,&!eGkJfP9bE-Uj0-G8'Nba9T))
+
+6T)Td6b+q"R[Lm$8%[#K9c1)U9R)9alL2IPD,kP!Y$MqVKA0Ab9ah1D%*PE"5f(K
+
+FUGq1695R0pHB+Xc3e5R"p`"mjq1E1M[C*DRibT,Db+eG+KUCl"('0!(eC39GA%%
+
+A9p$&&A4a"9eF34GAd-89G(%&ADMJ&+T#2@kfBcFaV"4Z0mhEGZeXZTfQaZ%'@Gf
+
+qZR,1X+2!@-)VKD@N6BH)8m!heYh5&LCl,EJ8UP3ZG`cfa+PmUDMd3e`H,64N*f*
+
+cF&Zc#AdaLc[VGVF10p5jch+&M,arBJF@ZNP*bq(@YQRj9EC%XDkHbPdpQEZkQVZ
+
+kLVXkPlXk`&fGb9fGaPfG`PhYiDifr2-C'qXa"2b5q3IMHabL%YbVMA1%TVQ9A@G
+
+)lq1#i$Cf3ph1kN2K2bZLhRqAVTE3)p*A9*2'(43hlNFU8ZcJ)(6+RFSmj)c#3q"
+
+I3bll-(paaC@"kDekmX9!6mi!IUIALNl*rh6Z(1TKe&4iM%qF[-mb[ILM(QC0VYB
+
+$%Gh88A2%$qRU#QUJ@EhqFlbV-!9040SJIUZq42bc-erj9[mp4$PVNXJp""6$`"c
+
+T"&ULYH-03d#jh#$h+I"ABDc'[K`lBY-E"r["e$jafV@8$hGSmUjZL1#0d,TUJaD
+
+$j!Sr`N88BMREm2V1E9PVaZ$'X`6haLjV*'iUY5,#P+dT*DjBZTK8MXR4rHB0P2K
+
+*$-'PM-5P"Z)mI&GSq"HB)i)k-5e"Q4H,fH(5#*Rbl#P93Cm#196&f$AB9Eq'Z99
+
+mC@@T0c*,611&h[lNAZpF8`TiS9dAaN4DJTlZ-S68SARF'bU1-HqiTV,G36ALGV9
+
+LTc$8'F&G-H8G*k%$0JK4U*0K@%,A#k+e0VApUiP[kQbBa`&@L#-6ePPmR19qJa9
+
+[ehPdT29MAaFEMLPfq+jD5TNN6j@#f&GR!H)8)-E'$6Zf(YjqNqh+$9MH%El'aj[
+
+Jpe@ermj6r%U2#KIRFLZ-R3)4ZRPkY''cjU0GA$54plTldI(81JQ,RZUYR''E)8)
+
+)E(BH-jG#Rc03C(GVGiplV6e0(0Z`*#BeJTKYaFlk&0T8i,[49AYX3ee-UPl'e9A
+
+*Z,TUA*2jF!Nj+F0XeRGX1'qh[9-dZqG$@l[V9P+TE9b4I6Cd)BY0EpSQ0rDHkch
+
+I)RTQCpL%D1LeY5G&E&[Imf((l2SBMpE@rZ9AA8I-TDpY*!AbYHD'I95l5'he9Y,
+
+9`!iP-@QHZA3h6EU`L#+p&e2(5QkGd@IBVi`VFU''SSLR2,A`3Zc1BJ-U036SF9-
+
+iT2HmZp3-hPfa'ld-6NcprBTGiaTl6q@q1pRCH`UrZj&P&qjP2C2Y[@H5l11GZHr
+
+DmR*hSD,MdBYG"h'(@Rm-XE[aZpGXEr@liY!l+CM56Rq['6KcJ(*2pcG1e2@JlNI
+
+l+lkjZ2jQN[2m4j0IkMhI8Hc4CV3A&GXq-LXUIZTkeYFSa[9Ha-9Xe'@c6HQp@0(
+
+BHr($ad,rd[Gl,rGXKXi3CQR0ecr"*@QJ8AJR1crjB2Eh)mp-GJU[6mLEA(2ZaT!
+
+!"(q'C#6TClZ!Ck-lejDhpm&ALi"SBmNUlCC')h$YTCLeaDj%RrjI*UBiXiq9I8*
+
+4hh!+lH4jRabJk-#mhF@Xh5%l'Dh3#,5MJ+cVSR+VRMZcZ2FLe,lNbYI18B@+k!b
+
+6RQ9JG5Ghl19Y%Gr9Lh*pCd66$6rj*,a`G+Vhr05%qqEh2rR!2#aee4!G2*jJ*SE
+
+dA)H$&,FNb4AhDjY6UPMcBV@-VS''GEffl-ZfL-TLX*XMk)40d!5CmmQ"h@-GH'0
+
+Re%GaRHGmXQph-@)f8[GKfXcjj)1b$V!-U41kiK$eBN$ri6p9GH4N#R@bGJ#Gqm2
+
+K&qleP&Y(dbHSQP48UHC[Tl2aNd2bHQP8+fXTq*[SZUU$ETraf`A'j8Fe%!%&5"r
+
+m22Q60[iB%ChT4)!'6Y6CAD05')f[L6B6%G,L0EZ+p`5QGdeFZDVXPNi`,q1!3UN
+
+1Kh1[-BV8*J2IPU%QU!Hd3P#2EY6$JhVi8!qVKbrKJ*X'`E(Qrm"KDL&!'bL9j[r
+
+)K*)dJ3[$qq0aLHH&%NrUYrH,f%R`J@e%'ID,#+&aa6*2H)Yd&LVF8J8-8p"29h[
+
+aLlhi[(3BL#d!TpF3Jce(&5%S2i3h)+hA!efQN!#S&X,"+$K9[Cj9J&)0&d3Bi3*
+
+(dFMm'i!Yb99)Af0%)'STjDe2),h51E'SA%V(IU((IEbhcL#4"('&#(c6![9bfL,
+
+8kd#l#e5GmHA&"5+Qel`iZ!-Q#UUJHr%,Cd4'a@p5TA'Rb-lSUl+kf'!XFU46VE'
+
+aeY9J&A3IVFDY2RYY(0eB+YD&DR"r+ecDVJIUkrlf(I4KYBLL$P8GD'0'&a5+)HD
+
+A[peYXRabeYN1pE!p[ia9Nr16f)4IaSVUakHa"hmCDhAAP9LjHINdeQ,J9f,e(,d
+
+@1qkAXF@IaYBJp[j)k(Pk)Zh#M$YCV8lEP`8k3Zj2cRTqQSF-SG(8EESe'"(S0Rd
+
+[VMr#db&dq%f8-4(i2)fFNa0lq!eX*ijJ@Kpei(i)1YflG`qK'p$kb*P`*00pPQC
+
+9Sm,r,[6RIDNrEhA6%iV$,"Qq(A%R'%Hbj$PANF#pKmrCq1JFIZND'YF04P8*kI[
+
+l5,ZU'il%*1B0ZLa!,6bBa&!mCAjlqXL1#KF6h6e6R&#+QI2S"RleMC[&GcD6QT9
+
+@pI6R3cq"04UaUeV%YH0UC`IUYa2efiA[YkUh9P3D+bF1EpCP`q2'kj@iI6CFf3@
+
+F%mLkj!jd11PPdh(,jYe'Sphr*qick08dQahDM!l+`(NkU)9e`&j3+c@jDmJUh(*
+
+BR[lX+8)23UL1$dTk6@jpQ`Ek%YPiHa"[cM9KVPLmhF0[!eb4B,[Tk#,$P3qG@SK
+
+cKdbL5*M`0KK11c,E+"[I(1kSYM$1i(6V+)2FhH-DA@2RTFBfHDNKNd#aSa48!FS
+
+I)EPKLP!9[@Z#h6lXH(qhIke*$22r"GMG#GSc5GI5kmlZh3CXX9[GHQfar`RZ*q!
+
+a'Dmqj)!6%-4%A%CP%K$MXj`46$jke4-ViiLQR[aFB`BKam)CZ22"h!,R`'8-Se*
+
+GK-C`bacA6i,6&L-H%3QH5%`)Kf4bH(GjG(KhBmF2PjKU5qUj-2[laPeJ-YQqX1j
+
+L9T,`88p%Vk%R-KCZG6BDpq#bAeqb4%kTmf-)CNIIR&#pMie#$RD#,M%-9jTcILM
+
+m25jFDdkG@ehPlm'l#dlBQ@FJi@#2II2l2c5d$FF''V8BN!"8[I@P1b*&f8bFC#C
+
+)Y,XPlaS0lSI,*-b,qQLS%+E#e4K@193I40mXa6e1L[mZ[P,ppjNPZZ$f&j14pke
+
+JHqPJHkQdFC3HFD),hdBA$N+[p)"*iiS4I0D01VDkU'F5-CAK&N,k&SUhi)aZI+q
+
+&a[a!CTbTq18@Fj@LXVlX(p'$YfBZ-8d"DXd'8P(T#B`[(HLmBPJ)(EdKq$K,!PG
+
+L%#Z)%%%Debe6pSf4!j5YI0ICkNR#&DC6',e'PHm+3pdRG2eX`f3,%I#!"0E[#K4
+
+R,a@k2qd0+k-ESF9L9S-SJr1DLEM#-$a,iDaZ-e3'Ge#[qaSFK@!BZEJEU["IJe1
+
+b-F&*$rBbYqpJ@9HmEif@1k23f($q6bQEA+rB-b,GA)bGc*X(J6QN@k2"I3iQ52#
+
+DZAJ@)Z!XRhNF0%YmHNaZ6VR0ZiIJ3YK0-j1[kiCJcZlJZ"Z!C*ZU&K,I%%-r`3q
+
+9M&4@PI,'rT&jD-IQppSYmdSfi'Bk55SQC+E3YP9ddeVlpkZiV5)$55-FFU('6Ad
+
+9h#!r+VN!($mJHp%kG"df-rGRr`H&K2"$DrA@2&&"6P&HBehICDXdQ"S[mU5BL5e
+
+*URYK&cBDXqE,c3B8)f+EMCTfGliPA%E@dD@C0jeZ*QThYV1#C-UN3K(p(A3kN4B
+
+hC!X,DX%pd0QbNMQi'UKfj6&#f55Gf8H4aB9m19&)QF,VkV5@m(3Gc4c&DM)1!8h
+
++Eb%RHrKYm-PReq(U)D2NLpM@*jR$HcC8YT1$,U2N0l'G`bEDMdPYl8M3I4je2mm
+
+1K(',p&h8'DMeA'*V0r!8UU4UZ+iBLfME&0*GrD)V'QrSlPE-Yk!HHNI10Mr8)de
+
+q&h9&3Rdb(9ZD40UpqJ1G@Z@KHc@Yb"EfY`AMc#eIY%(PqR(Z$bplmAUBYbVT(EK
+
++rQNHf@HDH@4["khkUe1MJ+D'q1hUR4Xj92FKTFU@cFHE0leVNfN3)Lj3lq+1RFi
+
+cBHT2Cd,P2mk%`UCX39hrF6l2!bLc"YI`&Xc0qlNakZc#,ABk94FD0QTrjeFZXD'
+
+b%eHM2Rf#EV&VCh[XQ')P!c1%QKh#AG+EqQH)U"1((m!A$r"l!a2&MiQ#b4UI+-q
+
+eQr@$dd4dIFR$2FQPC!FHh+B+R9309f1TPEqV60a[Sf,r1M"aU6rf'QQ5e0Lp8A$
+
+"NHM4rF%CGc5bTXCmK'fNe`2&!96P08Gd8!-eIYmp%D`dTr3r)Tcq(#'LJp!r!6j
+
+Ac%HZlQISp153!,YhB%VPAM1[hJh6#0`QbEcU`2la[q6m#(XDjJa-q@&mjGGr'-m
+
+eQr2$f)U[rc#@DqCe0Z)k2[aAlb12bEbEfibZ+*Sk)9BSMA([%jKh'E54-$Qi++6
+
+&r*Gq*6R3-jbqrIXE-`m`&jCea35lZ4I$MB%0jPpL30bJ'i&Ff&l)pPaTV$MT%Zr
+
+D"SNF8,JIeF5K`SN*G-X&mJN!IH-ml!jF$8NZ!h3[i3XhQ%#F%*UXDG$Qa"A1L5Z
+
++YLehdJ@BP8jS)F#&"9ad23)'!VdEm"2Z8Ta3ZR@$Pe$A-[aA9p%[Tq+kj9eBE)p
+
+&I86KLlG8d4cqD+NVV8h3jQ2aF&FF6f+*rJLqL+J2ZX62RDK8dil`$YVD6-8hfUK
+
+%%Ppc#*Ik#*X%PCf[qG[99kNHH31UpqHRUVILMM&A+LAGi'30p0k01r5%I98Ed`f
+
+iNKLdp`kp&RF+,IQS9'jkVZ6*r)FmRRr)Fahj)[PImU6p3ajil[RV22$lmj2U4"q
+
+'d$L$HHLrDqT'a6hAR#I[+il6i1Z%8rV@@m+SZYZ+SFdJ($DHTG(rd"8Crj!!*r8
+
+IZL,VPrAH"jFUUd+HCHP-ArZH&3r-FrdA"L,aUMd1`B'i[#T[+kdK9pI(5GmE2V-
+
+XMeVU2ZM#CL#LBcCd6J#q`-c1ZHeLIqpJS`9[*kM-hRiRZ!V9"GS#d@@EGV3$Ifm
+
+P%SpIF9!'CE1(%C@Tq%'@ZSP,2VbbEZ,U,Hl+2qiLAcY`Xecj`b9kp0S!#Va+V(,
+
+HaeF6d`N98l$S2k*U$U(k+BjqCpq(F5rS",+p2hDLMKidrFZS6ZNa+jG6ZP1NXac
+
+8@f-9GiLAZ`ZH65leE)m&&CZKp*Ki1B1h+DYI%9ZTa0S63YI$I18NqD66aq#H8eI
+
+M#1Z@pGIM21f2ipdqjmP1"CrZpVR-NG%42TQ"RP@B8mmp(mfpk!1DHrdpf5aD"hc
+
+S(B&Rj61+PfAfT$AGaCdFANerX2,H,$,)Ba2l`I4rEKKp%CS1c3L29Y-cYEarcLU
+
+2kUbc6,8VIGI09ITCRIe2kla3UF0#UJ0RUDV$re,hUS'kbf5L)eV@@Kc%rDb@DMl
+
+M[Zj1rfAfG"Q[*#C8Gp+Jif$XEGX90h23C-0jN!$"pc@S8q&'P9qT1L(RS3#r8Ye
+
+(re6X2&aF+)H,Z*mm5R8I8JcG(%5apRRX"0I%K1rMr9`VHSZ`SHUiic$pB8rCfNM
+
+qldiJDQD`LfXhZ*)3-8RQ)CYSN!$q*'2HF1rBJ#l-X'f3!)k(2qm5GHr+MMHlAVB
+
+H'3--cf*ZICfY@4NpjdXRQZkk&*Hd'(1'l'f6BFBkRa0,1NSa$AV%CpAR8A9R"le
+
+f5hA4@dDm@YeJ"M+-$fCXS)bDA3Q#@%E6JHrPkd`@A(NB"fX4jQ$LQ8YXS5D%,ae
+
+lTkmr1M[Sk$kBp(5Ud$Rbp%pa8Vrf5`B`V[`&aX[CcV"5pU@le&DJhd-GSY#(L$Z
+
+p(Ua'+1l(e9#FTE@Iek((VVUP"eFiihc'J)d&3F6N#JhND$hHamTKi4b`EkY[Jj,
+
+(5)cUrVrSj-XGm2'Y(hI!P8aRNhpq&4a"2Ekkpq1R1D'+IYC1da%jY3mdePAR5pM
+
+l-9hi1Zh$K#F'rC6p#*FQb2@M*bdbel9jqM1dAIGrj3"DqL(r"#e8f6Vl`,,E`,"
+
+EmFY-F+$AeFFH2k(&C&8JkfmVJ&a@"IUl28IaBbhGCVN&(FKX,a*`lDik8YGEGIX
+
+RhAZZl,phlfQ`PbmCk#G1qFQK1FV,K3a(16'ZUVhmkh,mTL[PQAY`AF'T2jTYI9f
+
++#qk,QG'TTdQK`rGTYhEERRGVkUpNk0B1GUjrMHX!la+C,HMqfdlY`&hDIqe8MHa
+
+bThk*3&@DI`9"9DjXA6ik0FLNF'G!6dY3)1"dXHH&fU$%GQlQ0Jp-LK2SYVm34V9
+
+6pEaU$qlYXBYm-c5j`-dFF+&YmV@j5RIFHL(8'iCQ2HliU!IJFQc(kb,NA"TLPEc
+
+bmdcLVBUKXa`MMjM)8SXXdd*pKdY'ZBN+U1ld9@p&-%XGj$Uc-m!Bdh"lHV8+f#$
+
+,$X+XI'`f'A&UaB'aNLT4P%IERFYicfC*V0S0(cHCm%-Qc[UJ@"6M1@S5@0N[6iA
+
+frFqR`Xmi8Ta93)fENrERe83(@,2$[*3`HE#edrJrpJ[Y46pP)4fceTL&9,4!24`
+
+rQSHRIX'Rd$@I-+E,&6LerLG-EM6fFRq*Im&raimqZE0rCPhVNm*IGM`UeYRlSji
+
+*T%1YI9a5-lCY4EJkGCQq8rQ1qa'ZSAVMkQ0rlh5YmGXIr['()mE*H$02Sc!h#ed
+
+J[l2b(8rNlaNm[IADepSVF2r8U+(ie(3a*$NGqNc1bV8HrD%iGkrC8)PSKG++GTN
+
+qV&a,U+!-m!CTp*Nh5)Y%iNJR[!0k1R%MGV0E4"bGd[MN`*-Eq0Vbj&E&PbJDN82
+
+F"X0G%I(NKZX1AJIcUaZ[VAJ0Z!d[3LVp`NeA$ej[iYK%a1l!Dc'rZ[$k#PlchH3
+
+Ya&q&#meL+0YHZ)9,0Er%9@apFUX3RK90c-%NdSDmF)Y8)IF8"q1)5Ib,M@`Ql)A
+
+ZXN"F[MY946Hkr-RY!4`R!MKdA"a(6G16fieke#(Kb3hXecY,V%pZ01J0"kKZa4%
+
+kZjJ,(HTKY8+rIFkML!l9Ba[b1CrF8&!Ha+XMm,S,VdEJp6AFRL-@@YbScM48*pI
+
+%Pje5U6+6m`m4$b6e@ZFIPRc"'eRi"A66%(46&H,3Br@jH"q-pj+raE&3C*X8(,M
+
+T,!j,%3lVNjZ)3%e$+IK',HY0XjUHh(Tb'r8pjY&9SZUmAEa`fmYkU"GZ3p%JJ%X
+
+XEhSBA@h#R99ajDDBpN"%6BUS+#VjJ[Z+bi#iei5YSZJBG8i(ic(#$b0Udj1EF0P
+
+JK(Iq(lA5GFT5kZ5@GET8(Em[S[X,DPf1IBQVF4)j-@hU%h$p4SA%BNqd@Tf,G8*
+
+G1'e3&pAV`19jFR[fpjmFQH*mFXm&IBS,TqRPrkKGRP+l9&NlA4AADcrUXP6Im1i
+
+[p"aiFXpX4i9@hT+922'XAKU$S9Z!Z-GN,"c'35J+NCJ[d$C&9Ga3-B-A2cra$lA
+
+A$p,Hk8UFVK6Vi(jbHr"Zjm,*!ZX6ZMf#ENBLr*aF11eXlfPk!SIq&kjK0Kr"GfX
+
+PDB5N0FXkYP)8-X!&riAVH'[VD(Tbe@MA2'i@QXfB'8RBfQ)2GH%dpP$8'D52[!@
+
+r'U"ZAbYqmVeRYB0qTDi%R"C"MmT936VhUQUUPRIB[ieUXRldN!$`rkq$4pBK#"h
+
+)#lHj+ZMUaVkHL"IYReB'R4'V5d,A6qS#jBFH@CdjbFLimb#3!$A%Bi*r5+r)3&9
+
+aaj0VQ#&iZh"96SC3NX5!E'eH1(2K'l(LhFc8CV5+'8qqf4a(@+S3SAVAcJ8(%)L
+
+XKhlkK90H!k%GEbIGQJZRR0dTrbFIi,8mq!#aZ(a6F!NlQ$)+,rL`ULJA8b+-'N"
+
+R4082HTNAS'@-#)@J%(KZEeBUZAPZSp&Fe[0(*JZp!SZJ[f-ZmV9kcr$%ZIf+(G9
+
+l`d2mNi`T4@&-EXQBp%61"1lMc&&mPA1$Y3SA04(6!h-a(J@CLh&ARI5)@3rlS04
+
+%1+3bJCabC5B2@L-5iZ8m32i`c@YFp'h*3lFMhdCP8U53!&UTre)HEUF4YGU',,c
+
+UC&3Ae!J[h''I0Tidkj-llfjbYA"fm@aKB4@H8ES1Xp1TX"+2V6"j)p"d8*4"E"b
+
+XhEJAZTHrU)#&1f$kA0Lh'li(aRQK&)Um1bS+mE8*G6[Z,5+qqfel#)'YcK8`b@Y
+
+lh!+$'`5!BMVl*lJ9r4eeVDiS")Xm6LMQG+FEE8ATl*fGpAe[26`3EZ-p*600Z96
+
+Nb[PlK$rS$5(-U#KN0R5mmB4Nde"T0Ai!IfLQ-[,j!hla10X[j(rA$[@PllrEmD1
+
+S5%A[qcmmm1MKiqcHeEh[Fri@41hpC1FM'mH(%('5mdp5I,"3RiJH2lc&Gc%PRN$
+
+hTG9VfdC#C@H!rr%Xk1C3Cieq99$,j,dI3pYRV!L(kMeB!5E[$FrLXq#CXASpP%E
+
+Jjr31QTk1CS-a5pKF1XqGd89#Krc&b1paa$L3!!%103[%5hK2'ld'&U0Gq*SXp2L
+
+D)#*FmBLGM0K8[#Gbl+dF1eRJPPSTi4APc6j9eTJqjFPedRm)f'IIXXfBl!4l3i6
+
+6rZYq9Fq+UP@$`3hdMZ`JHDb0qpHNYJAGEQ*VY&M1(qGYl)Z1qHq4iUBC,4ZC90V
+
+Zp-9a*QQe,"I8XLU3!-(Y[mG+i"hUPLCkraFC3aHJ+G1"YCLEGc0MXCXC#3'Pi*a
+
+("P0S0j2NrkYq$-(cM,-[jRA%*$k0fFJa[48,lPJ6#3ARZH6F-'(T'LMl*#cNL$X
+
+PTX8Q[0AJ$FiZ40[m$-Aq[8V#RJp)X`&D-peUR4[ehG!E#afAE$cT!(43$DhpD@r
+
+GaEhP'U`81@C5@p9@l*%0r8h#3ff-T0h`VGLAr9ZHDYlUlDFBq%(l&R5Ek1l1Cl*
+
+!'fYTY2R&fIkrD48aQX2fTN-$[B$G324[+[$,U6f@kP09"5964VeZGephV52@"EF
+
+1,N4@rf-2r!Pm&DNH!01jNeKFp*jNeP!Z`[lpfk8U+mSVKlZ3!,p("G9bS),#6H*
+
+P4Z'-qiJ`BJII!AF2(5AfTX-F4phQ#(jlX#&k2JHU`p8R1Fl328BHZXlSP(-ZFGY
+
+JMpErPblIhIfc,QFmqGRe53Zh!Ldk)*'mG2`GU[X*&AX6hHJrC)GbL8EM[d#Urkl
+
+VXUGFTi-pp4Z`1L$9R4RUU6ZT(jJhF4qQacK2+@h)S[I8VZ(%VIm[hIc(&p4DLp1
+
+5&`)eJ6i`+dafM!PKk!SCRpX4%q`r9b,Y9D1dJm-8KJDSCZ19j$$K$06crli'8hl
+
+@EhfG!&4GQ$QG9(r-K6-HFd08&@Pi`6UQJ6RZf2-kASee824D8f&[@1K+j+PdKUH
+
+R9djJC#%2JMUhSaA4#4aGl#j6HSLpBfJ@`,Q"E`hYMTc%$a`PB([`-1"`"#,S#d(
+
+PAX6qBkFKRapED'"!G'CZK(%ZGYBqI)eXdZ[R3X8X&fqhFX4dM[K$9`cHlQN8QM4
+
+m0f0PP)1S$8$ZA"0jE#ifFfPQRG2HIFTT*qp$aH'R6eeUVp19hrAhbPTK*l!&$#E
+
+#AP81JE8HPRA'2XAK[i6SeBJj+'YYE13GHJfq4MB9b[a5GcHkqM"dh`["G`rAddl
+
+'3,p03bmHFP@!14`'9cMXE(paJlJLBq[cd(h`aL[lI'jAQBph!rJ@Kk,8Bjm)2ID
+
+TbZ5BY#C5pJ9RJ[4Ac6r1K6r+'CK04Kml+1"d'VKRF$Sj2P#B6'E*1NpX)I%Dc#A
+
+ieRfNQGbS1$!h8T8BEmNkZGe&(f&,JjaT8&%pG'RM-Vfjm1"T$hGBX"Tpm9%$lH+
+
+4Xpi%RZdkfZkKrLH@#P[KdBfH,1@eJ+I84kaE&mq@TX6l1*[',0j(C&Y%hV8)RMQ
+
+*p0X'T4BH#jaR,"@Z@)Q*llb%#ZTPR+Tb5&Y%&8BqdHV&CC*L3!EF*jNX3H1C$[r
+
+1Ka3X[*S!JjCTr4'8Z(J4Fj!!@+KM2DZ'BlH%QN1VLA&Mm`aJS`i[4aDS-Ak+QFB
+
+a'3SUPf8GYU[-l-TCjp,QV&2j3Cb*bLESBG5q"hkXf-[F&f&c'Hh$4C5ShA4P2bT
+
+9rlZDj+pqc3j'a[qlP[,AlX'SFdGl5hUEk2rXSpjbcT!!JUqbh[QpYIbk",mcC(j
+
+402N4pX''ZA[`RdV(pDBaDd6qNirajAKb&pT!Z3%9dD4ZU)JfDIkA5E4p1@Bh[pc
+
+6r3A,NpX86c`6GJlqpfHp,jJ9qp)6c[EZfDSf1YAd6%eGUPBYYLA23qqii!E%'Eb
+
+1JQ+Fbl1)R"%e$L%[3R)&Tfr@i1i*AGDB)12BF3h31)dqTRXGD+r2aEcXJHiRjdr
+
+%Se[cNXZ%Q%6dTCT!%Bp&6K3`RQ+h9ZkbX*Q#iM9fA2"!C'0QA8Vh#HfJFTl5")B
+
+E*,)!Gh03I5eJIYNFiHcqmihIlVBXlBX-[RiGYFBlP+jX&D'IiLKlLX0Af3ieALZ
+
+QUT0LX)A$A([MF49F)%rH6MX2%jhDdd6IGEb1q--"AfZL0PF6d`!0Y)'l@0%U%ri
+
+KRG#eG1-hKG@'[9#k6-9VYZVNbr*KSHqc![2+2icYVY#B%YbpTRI-KJ'&Ee&)GDj
+
+LVAj6E8TmU&K)&NP(UMT@VZFp25)XU&b[UQ6V,rh`p!cb3Zq#BTX2LQfBr8Dd@L2
+
+6(jK-RZK2p,-X09HPZf&&UN[PU,Gk+cP%q1&U8LRM9FJF!p@N#PjVLb1#qZXr`A3
+
+*8D4A)MTG(G6BBl4f[C4GeK(5f"D2HpFLRCp'QYGh!B2T1ql(rHmeFHl(P4X(SqL
+
+HU8EM-8E((4VYH9LVh1LC&hS5RB(l2$rGjkQi4Rp&Hh5FadMCddCllKr@Z(Z95!0
+
+aIL@ZNq,Zf+KQ9@L!`mPe1+0Q$1U4amZ)2$*ck+km!Q4N[D'LAGiFTSlfk'2Lh(H
+
+J$bM480JIdPIQX6QqhPGQYNX8!303(&G4i#fe[aD$RAeP$M2Z$k1%[,BG9EKmeHJ
+
+eI4ZH"Kl(*5-Ve"IV9rX(LRHrkHjeQ*lI1VT,Y"i6lKep-A'(d4PQ0kRYY+flc*H
+
+UVqeGB4l,di&HHrcNjqAHI(TCL4HUQe+a(E1#[kF+mQa5)`N[[+Qep(l!cbeG*2V
+
+9m5'lAmh1,&-h-JBS8a#"UCl&@ap1U)6$F+)c*m,ApkM4J1qZ[NHXpjmaqrYpMrC
+
+q4$K8(YGQpRi6dpm[c0%D54dCRN!jI4icKkDJ8TU,dR5'amX)R#!CC8#d1c5peAa
+
+-T`QSr&$dpBKJmR-9GJ)"VXPGB"b4@bU#k%hXpRN,5YGHD@dL2XEj4HbDkl!piPB
+
+rJ'[)Br"3!XI!e9qdK@2EILZflH8301k"0rI*kVBpm$*mBrNN9mTCfVF@DXL'jYD
+
+c+-6XiaK2)1Cjc[6kXbM%d1(h($pmDD,bSQ83*Bd$l0NG(6Q6K4lIe3Ai4JlUG#(
+
+q22Q2`8lHi81m#ppjUiCH`J*A(%VlR)9dlq+)`CdB0"2(#Z609I)Uak6B[Lh5)"p
+
+9Hdm"J42Iaia[JJ1j[,J,K204FIS5YCRK1",C[$R`1QHF4+D8RFKbPh4#RB5BcDJ
+
+,0+LMG%m1I0eA*6lM%RA$$1RV1XPTjmcM!RNA)GV,XA91H,jQED9@(Uj9ZB+&bVi
+
+T`,)#f9bFc5FCIl53!&3`NGAT'iUX1VBD2UNPIl@5[jEc6`*f,q1ZFaB@k"!r9BN
+
+[BB9FVbZ9UZ'f4hJj1h4E*$U0Be0S0SM1iIMNdM8D1'J4Ci[Rlm0)r(H[VMp1IRS
+
+BRCXH@8$p5@qdp'Zdrhr'P#0q08hJ3-9iXJZH0Gj,i&h0KI02([[hp@Aipp&rT+5
+
+[3RPC)ErPE60qAm9[QprUhq+r(Bb-lRYbl-R02P0IDLKEL,mHjUr9rENLCh$6dp#
+
+[@cLUbUm$)kK%[A#hi'L&Ce2R6,YI#jp@M(%L*SJB&f)-a'3JKPZV5BKacl6hpFh
+
+d#N-II0H`mb2`M1()3+3ANGdPMAhN)#Hef@kEd[HBZR92GlkPV`+Z)"apf&a"iAT
+
+1hb-iFjei(*NDURmEAlA!J(JIiRFjm)EhEPGh*9k!"VXAl#f5qalM[IXrBAS2D&L
+
+"H5IdM4(H[NH%l,+AJI+[qh8c8'9$LbpS0Ba%4XbID!qbMB6'2P"fkqfpfr(QjHf
+
+!(a-E9Yk*ZpM5ed"GF)FGd5P'U+SEKQBM+S$kili29el!J6FiRNLmBBHII@cAph5
+
+E$A)+)QGXld'9LT)4cJqr3)T6$ZIXNYN0q[2B3paKchJR`,GB-5pjEU*[#,PP@m%
+
+D`NmTEK5mT&*E[`#46A4[4LhD8"*L[2#k&e1IaLE'49XBcaefUT!!MpJ8j(+lbG8
+
+qYDlGL2#53MDm'e"R%rUa4pLr109qFER'5cC49DEk[lTK+`lj,B$LX)&YNfq0CV@
+
+3!!ir&QYC(4eDmIKfHR4L,N6#UBI1&mC##4d[e&#(FLYH2,B)FQ)3dZ92mIFKbJf
+
+0q0[KX#"m"Nkak-j16GEY0iRp'HE5Zq*D8*'6r&E&4e[k9IMViGc@5*N0R8rZL9C
+
+ZC)AEkELZY2Bjd*K"9NG),e5TcZZiJk6c$fmpBfKAKcPIcPUKSLMp4lMLJD-jE(+
+
++X(Q5E3ZB`AmS`Uk(+ZjqYakj8&XiE`2H+lXj%q-#"@1jJV'%--,$)c'1q4('2iK
+
+6-9j&KfXlK5Y,`D@3!&46R[K1bmaM2&$b$-)lpDG&5I8r(&@mM%VfR@8rcrjU2mU
+
+G+B0ji"Y-2-`UprVFX@*RQ-0q#[a`iSIYGE`ALGh14A3lVF&FB+YpZ4$rl`*E!(J
+
+BQ5Z'`dp,PLrP3rLjS,BVrBC3AaPA$0K,+M9iHfEp*+1Sm6)M&(NpB"m$5)9Aj6@
+
+%[NRccpU(mlB"MNl@rrEAF!A+Pl9IrjfLEh`A+M@BJVrcG9DGDh'Pc(iNXQejYep
+
+03Y5@R9"lAJ-R[QIJ!#l`acePhqBX5ahB+p0*4'"aqGDb(Q5VGGeG@Gp#T[H#M69
+
+,PZ+lE[REbeIL'cEea%$R+VG[K4RIchqqcNcIapqXVF1h)lkQeBXM"SHMXC(L(A8
+
+Y0Bhd$FZS1*2"YkQCJPji1'Q9pS"2Ce`Q9Q"1TKUAD9H#BlJUX"AcjaKrEf'l5rK
+
+GQ$cPQJ9iZ40A*H@DG%3ErK*MMY"TdMdj"R`R*m(Yi#rHaiR&kBQf89DRd6ifcK0
+
+VY"GJTiH[FVMm'6Ffad-E3qb!Jj%qV8[[#k01""))FSceDlFd*GMbU*0bZ*2qGGM
+
+ALZME)3j[G1Z4%GXq[MZ4-A,1P+004&HP*cQaUF2ekKEKI[LEhm5q`ZJl&$CbU&D
+
+MMp#&'iCJ+e56Srh00f1MFc3re'V%F#285q'CDj(f#QlqX,Q)V%-9RCVd4Y*Q,MG
+
+q!rEqXFr%9d+MVY)Zka0apGGPr9E8T9aM1,c4%rR'9Y,1@Er92"CC+XJI3H!9E1&
+
+64248fL5R1b`L(Vqr!%@9,&rmEKIm11b'5aM&qH!9%"d2KI2!BTU`NhYNIQ6fL,M
+
+GZ*K($'+a@GrckSFZEIQ(!A`HB8B@[iJ$$Yqi9d@bBkP)!mE#%SeEYe[VdZi1)f5
+
+-cZi8PV*&54,Kpi&J'b2`LHMG-64[G#A5+3IQ$M1S'[K%(#20fJdrDZ#"L*ra0(i
+
+Ye5q&TaH`QaQb&j['QKHlGAX`Temd`#1h(3%pPaH0!a%$%6'3!#)#Ub+aRlXrdCI
+
+l1q4bkXMZ5H014pj++Kqr+La2C-(P[frF0m2bNXT,PV'+l#2BQ,S1(Sh8HeV+rd,
+
+-b*JN-T)0cZqja0lr"GkfhH5T$hkm$IeXiY4VNr'kA%@%hQmHpj)`i0GRGTM,-3I
+
++hjNNFXb1hH-cCiX-`ei-4NbU+L!&VeRl+[$YrG"Rh0Bpqbq&EVI9jE"0JZCRYrQ
+
+PU@Y%VXJBKrfYNB`[(lTb-E`JC&"YYU!fk-8%9r5if5)"NhiDiAdK$&H'cKS$pk0
+
+29Rec,kVS6bSIpaFL+ba[prKaH2IHBYCd"+T)4b5QGAV(+Qel$I1FHfkBFm,bQKq
+
+Dl@8pcZpGkqEHQ9*L%6-mq[*E)XHee'B4'8P`Hi3pqkh1ll@hPreQkAFe'Q`a+pc
+
+3RSjZFK8P1E%"VKKI,4,`Qi2I3#EME#VUQ1f*cK$1lL6R0Qc6ePV43a8ZE8ZZ4$N
+
+8(A,E)rmQ@Fe*h`f,+&Z"bA%J8%N2+M&EQ"ErDH'SXQml[[E'+k4"4GF4eHL3!!e
+
+2c'1VAhR63Lk-IPe6VlIPp3eea91@STc)`mrbh)qDH`qk)KhBNJrYMMcS%`9f1!G
+
+i!&KIf6hTM9F+FL)2iZj"XKDCp[C9[9+`'$Yh4ZFMbie*LbF[&M&*Vi)RH1'I,*r
+
+k"5j`jm#Yj%S6YZFk3dBJ3kl-!+e11X$*+1XSN6[fCEJQ-Z!L)'d@Y-HLldiTmKq
+
+"k`UrIbIZ!YHqYK9mGTP2M#8hpklmXHjXh1HY'iJb%"9!4Tpr(lZeH*%3a$2dh-X
+
+I1kZBA'FDhH5E3"K"DPR2"ZHFLVQcUqB59j[BrFlllG2P2SK9*qF6If-['mqA,)B
+
+lFhLCZC0p"!iM[hVD3H@X9KJ(RlZiVTRGJ02c''YCQ+1aTH9Spi&K*jJM1YEc2U6
+
+UaXDHp5ephHqBlEZRl&k#1EU0dEDR4qa1S)j02ZU9rYUFl"1+'K%2S`,YHeFQiJi
+
+DYfP*$4EFVjeT5',AX+IFTBV6d92`8f(!1G+0Zc2JS@NG-PIc$LLAXp%h(V-0qR'
+
+fM5ipHpBl98PI*pfNhCkEq9M63DrLiPdF8ckeC'RpNMFAJbM$RE9i)ZBH)R)"Z51
+
+IV!Hb+I#QY`rI'IMH2aiqPNiRq2drk2JF8*hGc&p2S4X'N!"I[G1EbAhHf3jd9T0
+
+5Na0PAH1ANJr!dqeF$6LD3T@SK"dHIpRaPEh*ilq,@$pAmMMl$B(l+h$$hpbhM52
+
+TN4RamY@#$R,XqfFbBZ0fq8hRIDG0"A#cJ-dKI&G"1H8EHerN'kZAKf6ShiDI2p4
+
+*Il05+9bTTi19QYb9G)SVp)MM+lM0L*!!LpMc9NB3RK!EU&%D)6hE!5H![m9hEYq
+
+d,)CrGQ*jB@qQmR*`EbBdk4rKYic19PQKpF[*"9RLEPm%EGi5be#AI#[Fr#($I1U
+
+bc[2mY@FNG8cNNfab1hPZ1Pja(hGZ%ErHMHf*fVQ)MdcXqL8[R)#UPcedYjqp5A'
+
+RIHpL6h0VmkUJ&dp4)G0ZRC9RA1MUCm-h3"EG!*J1`8qrL-SX(rNal[23iq*L5[Y
+
+Q9MGNhrA#jHf$bjVUQYpUAGEU(I$J$Q`G!ckej6UU11"MjmPQAqZbjUE&5qZpX+5
+
+Y-fYhR'GhJ&Qp+V%be`V#ZD"q9DZlZ8ReZQcP@N-Xl%UZqFY@"lcXQVQH4DklJVQ
+
+H$15#EIZBpkqiKlQN33pcjH3NK1l'k1LV%"kPF3QBebahKRR%&XkqCdAh)#T4L8V
+
+NU1F'ADdr&HbF@*h3PepJcqV(2ZbfL+Aj0H`1Ikm)i*21P#j3q(6A+lGhZ(E+-Bm
+
+PjiLR6Dpr9"MKh+!i6!`RhH8T"p6*$MR[V*HTp!*R#eZNRpjV1@4AHH0Z'59[Uf9
+
+ZH@["((eC@pXr4lpqM[HYUH6DcCcj0jdP9K#%&ejc`NV%)jQI8&m*kq$,Fm3lc(U
+
+V,Hd6hUEkYmM[qEc!&*+kbVc&M,e4Ve4'[`pkU&6(I$m@R!V,[Ck@'Yp5QJ[Qr,#
+
+a2)*Fi4!@[Qm-BH(lXrh6U+RHXm*Edp+24VQcH9RrD-!EYl#3!20m54ii"(pmJN(
+
+GFMhK"I'mViP@Q0STqd8q386VGdVQ`bh5X+A#)D,(%iFkJPR1,1!@a0+b['CPr@*
+
+I[A5crbQ5CrMkAG!!5DT`5(rAa[XU5j'U00@$(cBTB0DrKllfGViEZ%X$MTS0f!9
+
+k$QjS0T'rGZ@"VZ-Hr&lli)(%CBj`iIHIYmXDYbap+m#VE350%I$dcJeq+V"!Kaa
+
+BH0FdN6`eUEa2qQUm0-60j+bTZ0G&j4@(9*S@Q2`Emp[hI39D+0SGCV4DpX[Al3*
+
+D$aC6`Z#mfbFp99Y)MMj&%J5505%N+3%N8i(Nj5(XYF4#-a0D"d66VD!BKpf(erm
+
+)AckSqQ$(LCfqX&RZrqQeDZ1l`IHL[)JHSGhhRXTa6A42F*e8l48kjC0-Bbb4#)U
+
+,de'I#(acMi'b+T!!r5YdYYF'9i@B%LNCf(2J24A[%DJ&mUT%pV)AEY'f9M)YPBj
+
+mHU051-Ti'T9U8cVj#GU8a#UMq0IkIm'-8DS'2lD00BKZ`Ya!jET8hdC`S+NmGVm
+
+F'CeLIr&ha5KI,lR,K&ZML@"858e4j26GFZ+jMbiUerm,e@rmDX)QcM0l!4,KUI3
+
+)j$V9Z4-)aIA*p8Gm[6l"U$b0GfAG[XYekkr05CQhkQZX8"1PlBiAlR19VfZ*LA`
+
+@Fq'cQ*l2BXjr&Y2p@Fbjcf+kqQ1NrK042r(RIkRqF20jFFkVL39r1qQ+mMh[@T8
+
+6#,l5e`)b2(4&GEC`fm@#FHRi(cX+[,3Q[cf3!$pY)2r+TrRTVN&V#2FKi$CK6([
+
+RPb81E&R,+H,ECYb)HMfa$ATSU(KFF%0dIj5,A"4kiAN*hTL#m&N)0+l1$IJDd,Q
+
+T)+,c0hLk2+*b(0A,MhTVDZYaGB)6"bIUhk&-4EUj[pB(iQpiL[6qKLqhrc&GdUc
+
+%a+4,9'T@iEd(leeiTiC9Pfpi$hNcijfN4iXFL$Z$('HJ3Y9MXf2U`K8[lRBlX%[
+
+X'(6&Dh+SS$[33lcMkC!!0G#[AB%Y9JPqLmNhimCba9pDad"HZ8ffFkmI"HA!$U$
+
+IdXr9@Vc0RQEh-Lr8NXNrVrA!')Y`i2UK+S$1hrNlmQeS-4LJh9m2m&[DhV'm#`3
+
+carFr)9k1lqYi*p%MTZ1E+SjUYpBHh+eaShDfK@V6H4Pl[a&L12A&KM(@BjTEQM'
+
+8Ta0Aq31pA$eJj,B0A"K[Qhrlp3m,0FjhmYr"j)-A'paBL$mmlM9dIfF&ZYRTdrG
+
+dX+G0ehY9qQ,rIPH-cp$$Hipie*9+ZT9+*P)PJ@)LlfrX@JTAXfYjjJ0C5mbMa)+
+
+)B#f0FV@@@2crC5frXSFGQ5RRKE"1ILpmRq[*r58$eH@q09EEdQHel@6AkRCY2cl
+
+cRfUEI**Vk`r9eMpBfl46SGU'JV9P6Fqq+phkkX[-rUR%MIb'&RAZ@$`KR@HZ-`2
+
+cHCAGqD'CrHQh0#jEmQEpfiYKmIRD9Z06,'N5#qCkMj2e3N`FHQI@a@TXd1)N$cI
+
+#Ehf4EKhTIJUk1@qUh&eQm#+kbB[kSG54#UIk,`q,,aRVH8L)(QPY$RKU0jh6m+i
+
+c'*Z3!1AcQr6X2ZMPb&fM`HVZ+#EPYENhi`k)BGKX589@,5%MYBdebjI8H,'2KdG
+
+S[8d)mlB3D$4McJaYFKI3*MG35HkPb%0bl1C)mX-Y23kIVpiNDcZk'ClMMG8ZZS0
+
+A'emi+af`+Iphm8S2e9-FVl2E*#rU'lE4RVh@m6VmriE",ej$c,Ed[!,m&HA0,Dm
+
+X!XTGF!pT5(rkbq'eqTr9,+PkfbFV(qNM[r*4hU0eTL&A0aaeiqhMPJ+D)`A`9`9
+
+A`El,Z,fSj-R5@Q"&",aL%E(%YXP*Y1%&1AN`Em#)9+i0hmB1rAPXBpbB8h9l6e-
+
+&(UqXEhh09l4-h3D+ab+2@l[hJBrRaE,#CKR-6N*eqUT"Mm05M4+D&*eAcH@fT5)
+
+29iRk&40i6,T*1R1'lJQl3QU%DiaB$9SUX@Qc8@)r8q@4'aje%iU-(IPMb6qjbQP
+
+'m`jPB15RNFTKqN"YIk4LZiqr$U2G'LUk66Dp[(+ZqTUj5PDZb,MhfrJp3"k6(D)
+
+29bm++h+K,e'*%rPMZ8-,qh!K[H%U%1k$*Y,EFMkE@pD@#[J'eK@P6qG1+jb3!#l
+
+kDK+j11kd!L8FQVMD1jq3!&,NQmL"Pc$8R,l"I9UBRTHUdkhVI&)b0Mf[4dCEqN*
+
+dKjmh,`XEX6rpPUZdB[2[RefLKaqf!Hi(9Z0lAmU,J1D1H2d'hhq8ikLqd01jbhG
+
+(BH(B#hGQ11dCK,4NQle!ir"dEUrBR&,kqpqU244`hIl2hLjXUAQV5Yh&`[X,P-b
+
+jCe`-cl$L)J"A1ILZe1%%EId6bq*dBqGbG%SDpJh`YEkHYDaN6q$K23(fGkK$HqH
+
+AS2RAIJQE$[afC+02RkB0`F',GZFIEMKT,Yipb9bFA*j5NNlqCD&Aj6&d2VNm"hi
+
+kX9FB#lA-D'p2)9M&L3+"IFK%FcQj3[cGEpAVM@2%-2GG12aDANP+59!lRiFEBAJ
+
+mS12HR3ZhUJMH*LmRKIlER9p1RNHkY&#HYP$-2)"lM-Si5)'ZIa++-[bYU%XqaAS
+
+%GD@TKrTSH8XKAF5+b`r-%EZ6)e'CGq%1&rfe[McBdb8khFE1*pK)hBKl[,[+ZM,
+
+)3deACbXQipami5Z"Ce"`dQ"Z!AR-iMjM[*,C8ZH*V1,CANLG"jqRm(T6P1F+Mm%
+
+FiI82R$Y0E)+MF@#DVmi0FaipANk@b98l`md9Th1K,jqB-@ljh@lb*HmLaq,U9JC
+
+HIhK(K'XMj"P$E'h$[c'2T6XIE#)-p(PXVb4B$U($rIkVq%VcArIp&AVY+,V`#(6
+
+%MZU)qE9"l3fBS&NV082'8ZFU$HB)-'#1E+LL'iE1'b%XlBbP%pQ[mcrN,r'*!'l
+
+T![B0A2efqYe`RR1h1KZ((C)X"j1r!UrK`+YXH-R"(D`"YS)Ccbr,Na+j68Y5q%T
+
+H16B#R[HU`(+BmHKHPmTM+LdLlYpp0cGL&e56kFiAIZ)9ShUA[BL*SkSBKV[HSlF
+
+fA(0A0T2qlTJ-[2bJacJ18`TD%3SG*V@kHi&`lBCklP6J5)S$%pL#hrZ$94Jc0Sp
+
+HfUi8Ur@SX!LcI'Yd84GRPjlrU1[c2Y%BD5lY1GAPFiR'M$D4AIbRhh,T+SUV[Q3
+
+ZrIDhZXUp$b5LBNDMY`0*a!%f,#&p*h(!CZPLQCF0R9H6AKf2RM3-q%V$GDq1F5h
+
+$"A[+`+X9@lf-p`$5UlT1(UT6EMP0QT99`2lR)Sjf+ThAcH9UeZerJEY)HF-eQLI
+
+Te8aS9TJ90h2JbL*&k*AZfk2H9cf'RVjc@IeEbNj$+@f4pb`JAJ+HPJdAJYM5iH8
+
+qr,VS9@2i!Gj[)XDiIVQmYeVaQUm1cSr9J,$h%4QX+UFRJPP0Y8'UrQJVURN(2-d
+
+CKMG6X*G0pm3e',#Ap6CJHi(0E+SVDJdmTN(KfT-A89MNdZE4CBZApE1mHeffXH4
+
+-RceiS98U#!ISURR2TXSP,FeHElNm[1GfQR1'Hf,8PE[FqEj)X!DIaBiUrbV3b*@
+
+&E(!DF2eC!ZiKPhIX(f`i2*eIakjP!Q,!(U(`ka"4G,YjSe!kBCmV&9[qhm3'9[b
+
+i&Q%6Zf%TlN52B'2J9f-`@AIXA9S&IrDS`[`![aMI2!FACl2Sk%aZ!E6DLpf$H-&
+
+'f5M(4Jah'NNpRF3HjIk0N4XQ@mI#JaHFp)(jeDG(G,l*ArIc*ZeVe+dE,'SPK91
+
+HC%lChMmMH6peSE"c"h1NSf!K$5+@rIiM1lVV[j1Cb$J`Jp)k%!80j01)R0'*$9j
+
+22T4ecXJjB&CeaFY[&lFd[a@D"0(ERmi@qRr'EmTrVGASaB3$Q*rqreIVI!GqU`H
+
+QeMplZa,hF9DYp2BR(CZ0hXf-Z3R5h`H!BlbUpe,eYFj,c15E*416cID[bBfJD"&
+
+QbDVBP85plTD6UlY,jQbm6jHNF,Km0CXMN!!05M,VhmE[fk4hLSf'ZR5mcBZPiU6
+
+QCTmFHAVb'MCd(0Li0p&8%Z(9k50%ZbN#'[P,%i3a3PMKK$P*,)B6jL54"#I-55)
+
+ALUK*SJ"1Q0f)cX$AhG#BF#1D$J)VS($UKP0PM`-pLf[LYj!!UkL*G9IPr6@mMi4
+
+68a@p#DrM3Y(2ihek)(SPAS1Kk+9iEfl5Fh36hRkMLI6b'9ZA%1&F$eA'heDLTq,
+
+YI`T%8irmpj6)#VaY#d3@i2@3!")C`0Z43#6pmR8VN96K4iaF6f[Zm16Vc5ee$YK
+
+ArlEX*9jVNRNrQ#ShH0KNjG-eRVc8jM2Aae[irPU+1ZZ@Z4#lN64@P'00c#aF-8*
+
+K2iZLcbiGh)mf3NXH2I!'h54bLR$fb$h,0e-@T`pP*b%9()(lhpc&E3Eb86FfBZm
+
+-[Le+DEl21EalFrPlS*,,XIF2NKHE+qE3eZUicj4dk99XNbA5&Bcm1%f042eHNpI
+
+6(rZ`9aN$6BDZ!0)+&HQPZSc%,0k$LRf&Q2((2Vipj8`m5QlJA,[f(PDQj5((a!*
+
+8A[B1MH"5KRBGGP,Yd$M`3"Gp%C6DeUK+EF+Ak!Afj0idfeKNF#2$RFJ`@mfJr)Z
+
+l2Q#RESBf9pN8iD)eqQK[)U1$8Z6B2)d'(I@SEHbE3KX,KH5d"U'0UV$MP9lai)%
+
+A+R*3BN3Hl&-fI0'i'#i+IA5rm$'mL%-rl5MGc$YSqd*FSk&L58dhH"C9[Vifr"j
+
+HSB`YYFL8YA!F8"arGI1ZTQc["14i9ZC)H+MN@-la%Y-G4Ekd(D[iCKB4QhmEXi,
+
+BS&$LU&Ab[UlNV9@43kQXN!$cMQ[cRm-Y[kJ4LcGYI`6YqMH!N9(raC'%53Sp9j2
+
+(q*DZX)QmTN4%CG9&Fk`2A`-`ej1`Aq(A`5ANI-Uapl3V5Q,4r3Xr@QHJH@I![bG
+
+GV#5NbTSBad1ETk1mH6VZZiFYeR&XXBlbbc'md*2TdEhN2J0+!I8@"G0"KGhmXMV
+
+Ep+5VaqBT'm`jU14j@mN$2q-E(N1rp19KUCLN9E)5cYeF#ENUiDEUE#kV&hE)qq-
+
+3-bQj1CA[$8PdfkMIE[*TS%FJIKJIIlPQ@G2FPF6#!rlEd'J,p,Af@IXURZcaAhR
+
+5iVr5palr2ZZriMI4pPZi0[F)h`BMj@kIErIE-(NFUq'`Fb'Qc@bSFFq&'[F8ZJZ
+
+!Ir%!9lN1qcGZ"4GE&[-Q,V,h0c%p[i0HV9+QpMGTdmqYqBBLZQM!pkZbYZZASbH
+
+J&L36bdN65pkpMSRJNN##[YmKGk636i'AB()*ATMpXKdcG%#Y%&HJDp)CQ+'UYrB
+
+2p*3KMLTaIrSdEZhJ$*NAU8`*l"e8[qUmlk!QFJ0$KKc%$Z6(1PcfP@1HKZLlIpT
+
+k!p1f'V0f2*cG&,MJrPlG5TaGhmR+$TfAIh)KJAYKc,Q2MV(f4[J"*MP`DR8cfDV
+
+-DDaTUX0%5SF5h`4rLrq'Iier)lifqJqbjfH`GX@h`(HQma5TN!"lCEee!AF(Xm#
+
+Qi0)Qb-[6rAMRUbjYClRF'b[F6p%F@B$IfeDd,!rF'FXG`b&Xc$%P1*I`TM`BbTh
+
+))mh)*CR)QPJ"YE1qi4,Y%H-lA9c2P@1A*JjQdAqHcRIj&L5jmehI!db!6YVI0cj
+
+5ANjbc"QmR1!B[Y!(lI(1VrSH"V*&!YNBSl)a*TB0pa$28993N6hU[&c@b2XG9Zh
+
+PS5hTk'MdN!"EAXYTa6iIe)KCjGU5(-0pFPVJQLpCX0,ZTFiE1SlDqG4%(q4#"RF
+
+,e)B(N8p&6KIP@caj`Hc[$h13!,)[pQFei-dRS%+XPFU@,elXEUP[aLQUh[,*RD*
+
+5(2Bm*0f,e1dd'h'VcKZd$RlcmKXhi+KS+VYEIRcaiL@UH%8-"I5%2!FCa@4@[!!
+
+#9UZiAAPY*m@Q%VTj*T*A#%N,)CR9UZSKQ%M3c4ih)h(PSrr2hX09QqkTe$8rZpL
+
+l)1rCJ1KHEhfc-L(LL0))dIABH#I[9V#)+f!c)qm`E@rE1LqZ1T+ZF0jQFZi1rfk
+
+Hie6,8me`mcMX)lc`@J"BVVq"AKHP2R6C[D4KF8rYdaS3bdV'8QMi!lVhkiV#0fi
+
+Ej6Z*[VRAaE4+HG-#4T69N!!%2M3)2Q(2b@KSdjq6qB)'[!J#M6i83Mk(6E1V@R,
+
+[5G`C&MYA!ChZ2dMlC9&abB&Zh'ah"LlP5ZNQ$G0NYK84kq'ICQ!&h(R1KVTE'Z8
+
+39j,B`[J13@GaG[9@8XhfdK8DX2Y[BljBPEFN%@cG%I5HHkI&6RhlHprek-$IX%(
+
+Gm)*N!)p4c@E6D,6elYc`JVm"QPdUH[Bbk3(HkL1S0VV*#hpi1"4-hI(UK!q!Bh4
+
+PN!#+'Vj,fHm[,hihdM9*9b3kc"RX&hmfS9X"G,1@,'h1`"@Zf6(f[%Lm`4JIaXZ
+
+VQ+ZC#Sjcr6LZZdXi[U[LD+6E&k@F%Vf8E[bYXb@B8qF0$5C&VB+E@&cH`"-pi`U
+
+910(Q10mEL*ZUa)P1arPVDYcCkakVFp83MZh+"[k$U'jQ8,p$)X*pPrLLG#fa209
+
+Kk%U1I"`Ue[%0#QjAk8(FZAX*,ZpGZl0j9q9YI%M+!FDjVbD#YHhUE1VXfaZppb`
+
+BhkrYaD8cm3RZ-AZRb[ZFVPL`Q2UpdiKaiSfairCQUUrM+qCAl(fCmcSjGYVHUF3
+
+F*52ZQa"aepj-MNrJep$cq)DpQAZR"l@5eTHcmNkdPcc!bXiXJNXae*,m)!,2&Ua
+
+kK(K"PlB#-9hDRJkc[8dNQQ3-H@5AhXfU%'IlGSphF&i2k4DJQqYefQ,akqL$!I$
+
+p(b#pMkrQJkYhl6hXb0%XI,U,mcXQmYX@[0&arPjXV0Za3pK&r,MQYr'bVE-FF@(
+
+HC$#51Pka(4hf3-p$`2"CH!2&MXhBKYXY[6-EXYKrbd9h#ZE'E!%f%XFp$@mZ"4q
+
+iXk%@I+#+8Ce`*rji2h*FfBq8bdlN"4Tf)XH9hFMa[8H`EmL5%i*l#1reUUh+2J5
+
+AEKY1i"9E!A&J,,ae"DedCbeI,PFpLR2cBNGG*C!!a3id`k1SD%E9@j@Ek&ajV`H
+
+-ZqAY-[U(hkZT8P86F69rZf8a+FVm4CB0)fNL5-a6r,8#QP'r31ScCfr`$5"MRXC
+
+e',rA3(H!hmpfNUEhdFi[S@q1dMD0P48'Hc`6EX[`I3*E@qL(R(d!4L#pMfrAMlL
+
+BbE$8T1"A9b48"NlKP`S8AAZK[)q,`MIS#J(X[jeI6q)e(DmGG+d"pahBfD*UAq2
+
+HC0D6mSVXl%1H3fHJ1%GfAid1j2Y*bEA&lG",99YRNl*1YrNZr+!`ZTZrH0eiXY2
+
+(0ik0Z2Kk1+9m)L)-!llDK6(PGr%L'YH5rDJ[EHqracCJ$I9Q9i`EA("J,U(XLTR
+
+"%BCAV5NhdVK%C`91INLjMjI6K@-lach2FDFilJ6(p9FBVTU2%kY6Pb*dDD$ZTCk
+
+!#""dB,3+%+qYP`J,DUimU8+2Ga"0jV0`B&3F88'1B+[k2DPL5e+K6(MCBh&bbrG
+
+4h2ZZf6fH*mHC[Iq1[irZMH&H2FThfJp3hUj)6caQ[$!flP5qbTS*AEMcjA@"T9-
+
+V5LIFR[L5c2D8T5*49QM*F1cbY'r@Ih-(#UZ5)lPN`$hd%IE,,eFmbjDi[5Z@Nj5
+
+TA#9T$#B#mF"l$3(CACI*Xi$[lpGk+J+C4GHe2K[FHa"cSP9lihqf1G$EReViIRe
+
+jD!DfhEi3`Ud"4+QK+U!$BMQ1"9a3LrB,VhqAX#*!eb9b489RF2$J2)Mj-A5(2!h
+
+NMaUmQ`kThH53!0Ui"bi$YbI'*IMC6@'1Q-eIJj6k'Z*pmV0lpKBQUdcFQck'LqP
+
+SE`Sk9'U+r9D"MIG'*I4ekYZB0PdT[hHk,TCRd+N1MUfefqadhGb9`VK5S(PVZ0M
+
+(3q,0UUdmf`Vi+pr`C6JZKdUj6)*FMd(*Ge+Gq0*[Eq(+8Vj&GhSGXmAX$XSiD#*
+
+84Z%"k`FL[!fq*(#6RjD1bZ*@i(RFRf$EG5($((-3AJ*#1RD3!-r-U@!rmNhe!I,
+
+@+[Mkj3d*CSX6c!1iZmqfqD%T`#`h+0PZH*U0#J'pfG5f)DQG20V#fEKS!MkZ60A
+
+l)"JU[[64YGKFTC(bIl!NTE3NiA2rNrpaJlCbmlmk@`H(`#ZrK1Z%C2A'GrhDNZ,
+
+'00q[GbHmD2IlU8,VId2C)PMZ)YD[aFAfimTmf#5RR'JhTT6er%EMfj@YGI,1Pe0
+
+81[4N"qhlS,3LbLS$FIG`3Z8jBcT&RR`V3BiII212H`SQ#4GiMSZlVi-UqULbZ1-
+
+0*#+IXpJC9A[a!q'kf*e2EaeA+pIiVq!NjEALCY--q&3E@54iP`i@F)!['[ApZ[5
+
+#A0"KFPA#DhU2ch``S3)GF5mki[HJ#!1r5R#%3!dJZH)2DfM2-K&bkaPb6RcEPE*
+
++8`Sr,Yq',b1h1m%i@9J&R2Yk*Q2!ThQ-bMiLP9`&j&E#dqrqjrN+2XY(M`'[bRb
+
+i2XKD60F'Z0JaGZ,DB,0kE5"A4l`@`2BTB6[2U3j2+fP%RVh[mR,(#%Z-V!HIRi%
+
+Y@+jV2V0$aGED$c+E$$NiBlXV9rCB-)0cG(#1$RQKMrdPIF-FNc'5pe4c*'ZkRH*
+
+FU[Z0[Z-"PM0[4DY["GSqaEr!AqFrK"Z"TrbVr2XNPlU129NA42!F2m9c[1122rV
+
+'0le4G&PmpZkl(&&p5Xk#FUl2ffI"3i,IkFRP'KbU@Z@r"+hqVA1p5EE`MX,!2)'
+
+2+-HZr(8&T1Dr1bHFrBHPf1Cqqe4')I#jF[5AjTVe5G"(jGCj`r@TTb)2&ZJ+`!!
+
+FZiq[VplDM-RYkL2(!Xq[KbVcAImc9m,dPI*i-rD@$j*QJkd,`Md`R'@$-cZaY91
+
+G9GhGdpkL18qmU1"3Uk(@(IeX#J8,m4TJGPd3L2T6bYk9eP&-eG4[%qK0eG8i3A[
+
+ZVM6D2"RhUE,&qSlLhf3-TZV)SlAHQLDXM84[(*Y"aaU,I3EfmiEjTjA*i'Mi#F-
+
+f@emQS4+(AIR2DJ2Z#(eDmpCI+CP[Z&B"G9UeZHp+bfr(h5Rk`*J22pB5SAD,bjB
+
+e,Dp[89AdU)mr#'LK*HY0aCk@@V@"F0+fACX-PB1GZpDlY+D2A[ehI[J9-(Lrp"e
+
+I$CD5DP--G,J!4-fJrk`UTq[cMX6k+!4ABYfCJFkN-[[#3CD`a(m9l+"iT,`r1'`
+
+rAZ6&0N(eR6P&SPAj'kM6SK[P&-SVTijM$d[R,SCNp`3&qd%EA')VTe@2Bl9qVh+
+
+QBV)DD!(RJ%fVA'mV8I#q`HYki5XR9B5BjDr3,'@A0[X[YaTFHH&dVjpEI[%8I2j
+
+0J0-j6q@AM#1&fA-II&MiDEeNcLP[a[,03EXlkKMhAS1HCQPAfUiLcb,dES()*jG
+
+H99qcc5@p$d4Za2EXL)VF4%1e5XQIlpArFrifdFKV`6'[-(YeraaIH-RQPfcbBa-
+
+Y8HV,'hLjfPG+@'ITIXh2QKYTV,R4YGG#Ar&VI2E)ea%$2@VkL2GaTalR,4*93N5
+
+jbm`6!)H@,1+HI"Q8$%d96Q!5*XGVFQbRACfYp"+JLCN*pERTZ&YZ)1D#rGCNRL-
+
+VV*ZKf[S0G%Ccjr85h+I$,cdVe8#9NKYpB&rr1e`Y9GXI3+H(pfrJkEKh`jdqpia
+
+GmFVN3HI$cJJV3@dqcrJHLK8[HCjd8Y(1`JdGhq"P5fPl2DES-1UFqSlTl!f2REG
+
+Cm+pQEl%#jA4CLNfGer`GZL`94`HLLG!AVHp1168IS!-,T4-G-!9ff1P*pJaS4JF
+
+M5dE$kH!'fJ[pmfrL-N-T5N-c@UQVN!"EAl"El)%TNklZAq$KED6F+Z%ZMqjpMrZ
+
+dZkG@f%Z%*iTIAFTVKl*Ekjfm)bXa1c&lE9kKGQh&i"(+3aSQlL45b%Y1a3XG!rN
+
+rikcJ[1ENbX9mV%`6YIm#QKE32kL%miM++9AFabijFDSmFU+-KbF1kkEmarKp'h-
+
+aQIJ-*k2-a*GS*PCp*AdSk5qDZqHZ!j,Vm$DH%dlaCF@@cERr'$DB$FY)-%S8Jha
+
+Fqd*h-QjNTY-HkZ`*[-cNPcGjjlV1PlVhhp0lPa@D9,m!(8Fi9i,$XLP33NL%9iB
+
+-FMl%5d1k)pPc9*0JYNmTpcpbAkDB#E4EPHMIQ@8TYc"@mV@cHq$KJYm[#VM*LrE
+
+*bI3p[Zc3Lk#lkeU@JF6#pi$59iF2&'KV$%aG083(eEYM&ZH8PlKVj0B4PbMVblG
+
+LFQC#4F+mH(`91iKZG3F"KNR(*1Z`kcZ'EqMd$XM#pbTm0q&l1AB8[i$03cSf%)[
+
+4U9QfNAbGh!J-,kJB'MAGl-d%Hc2il6KHKVdC&I01b[HH&1`Tap&1d,L&6@XCpL'
+
+$46MGe-R1*-86Bka%[m#a3a3+eDl999XT&YF@*cb4-LB4LTqF&Ph@hI!*'Ahm,bf
+
+l8aA[d&$pa&hVX3rr+ARk8E[SaqYB1`*+&dD+riar%hjAmfmc[N,q22p4[`Qrr-r
+
+`Qrd@[ih9#Y3dSrr@hJ[(XcGBYB$hM9#@84INJFAT*P`jHXb[`H2RkXjA#A8,8-H
+
+['mhYUX)!PAf2m'+c5Sd18AM'(VXJIk`5VAIda4&[jRf1,X+S`CM[XVeKEdLVXVp
+
+T+BLJADb4KEl+JVq6&+epL)"h%mBdSk2%2l`6peVQlZBae),+"bERKV)a8)TfN!"
+
+Xr+J`XAiQ+TU[UTJ`SQTLCbjZVd@Tq2Hq+r@Rd00J@XI@,0bUE!,UQKFd0m0qJh)
+
+UqQ%%U5B,0TQ*KmcdeDdSF5MPjrel*q2HT3GFia9QAfP`cM@pcA511Hrai9*,$*h
+
+h4bQ,9Bi)GCa+jkPd[943+ebI2T)8dT+[-lrVC(l(#kl16Tp2diiTfr5$mp#Mq`j
+
+K2j(j)DX9EmIEmacGdrU$#hERL5p5p2(-%iMHMbrH3-#IX'JQ`L8L[PIiSNJ2(9A
+
+C2+M&Yc0IdH+,hDJS4Eiaf#[b,YQmXMjX8r8'FdY@#lV0#YV!p3HkBb[QZT+48bj
+
+NUGhXM)CMVG[KT1A%f*(p-E9I-ZXVem10rjY8FGqKNQ,5*jDV&1M&Fl0iPUkeqLm
+
+MafVS-[,SaB9E&AjE,I[D8TG-abqFA+PZZ3-X5R8'Ap494aGV3IGerG(e#c&4XZ4
+
+PDefcHYRDkaNq[L("h6*fP@HFB!TH!abGB,,MHK)4Ke!0EqIR`G1pBb18EYqRXMp
+
+`Nm""l#"#AVQ4XILUZFIh+KRIGT9`,VAEb+60BeFUYQck@fIj[LXC@E)j5d&c(%F
+
+A+&R`E@DaG0AUQL[V[I9,e0f@aZcaMHfQRA)MA@U#14@!mdbZK8mp`aIN63P(A'A
+
+J+fkA%em6A!lPrX'MES`EG5lEdjJE%*2PHm%PGmr`JGYhSkAFrj!!5FbTQeH2DpR
+
+RrGhqZrlpq2flrlAqRTr((P5qprNr`0Hcr2,ImUXVNL5k%j-0bfN`NM-jjFc9f0Y
+
+Jm`%`qqa!6aYD5f#2!5F`aUm,3j23aLKG*pZ5VL5qkmXf(4"$j0c$CVm,Z3,#3"C
+
+Pf*&bZjm&,d0(i+RLM0U4mCZ1lh2QQqLbC""&F8[AP5VhDEcCXhBK8'3aYb(J*B-
+
+N"VNL(%5U"AG`,D3LV%2&-@c+(&Q9aAJVa*ZcSLLIe#md2Vc)2T!!'"e4Y1I'pNl
+
+Q%caTBFY4aQm(HQ5GX59pKlDNXN2)4S9GULU&e31[d6EfM%hY!q1H@VIk0+"R"hQ
+
+JV4LS,+E0B9FUH0QEFYX(RFrA#r5drI`S([k@T([QV&BfdT+VbAqH84AE$fed5bI
+
+kElUU!rK5k8jVV"J,Kc6!X!!X8qikiYeTEC'bL"@VD2$K+0cFeLhFUY5XNMXSPqY
+
+6d'a3ZL0&eUY",rZQ1%,@K-i*1Jb+RL6USHjK1Rh-E)@(2&VA6)1aSZrp[[Ip0qN
+
+rBZrETEcS#2-r%Y2r&PR9Ykk[SfqA9+[MG)+D@Sl(SI+2KTc!P-S)mS`jaK#E-,X
+
+%&`E39),5!2B2N5TLaJmm49853#@U(QVl$Z@)hj*E-ZAf!T@&`GX08,,X,+T@8*J
+
+eX$UbDB!RADl*6aL1f[BVT-*URH4(3bkeh#AYcE(MHb-2)e2%*lkD"%mKVh#r1XQ
+
+VKYEXki&IP!YI,CVLj*IIrQV40h"0%q)kicjk*3bpj22F[YkGT#S98U%Lc#p3m15
+
+'&[GX@Qp5p1*j0feI#F,2lRlD)&$(-Xp*pm"+`e*fTkfHH+jN+m90daRHKBBL1k&
+
+ephKASV,*d!U)f2bD9cIABqj1i0[49[9fPAS@YUkNZ@2)+5p)&5@i+XdAjCfEX*(
+
++&kA3J'c*6aAajLT@fHTNPDfZ21KB2%HZNRIq8piJ0#BV1K!GkSfKEeZJ*pa`Z)0
+
+pT+NdL3eH*hZLE&m0ChIQ(HAk,m0G+Zjkq)AXYC9fdSKIrd@jir`qlMYVjm,aRp5
+
+r#iSL6RJUBkENA2D2ih8I`AfAeTAXl6LjHNBGr0LQ'Ij9P%8T61TVcDP`#qN3KHk
+
+NJDcB#jJh)4FZU[U2*ZprP(Y@q6$i1!fE,VM'F4e(DQr3Xl*M'kC'cEq!abeR0AV
+
+q$I`H*9k-#S2#iU)DcNHUAkF0E(DZrhcClmF*fPA#QdK$@FIH"p9ERGr$`AQ4b#R
+
+[M9cdaYEd[$Q[&-k&ZY*DmeKi!abhHjP"L!Li8+RE23Qq5PH*#%mXCkQG@kTNbB(
+
+MNE#!rSmM&cl%5RrY0p*I%YQPhae,phIPQLNHl9liif`F[[HEf"@L&VlbXNrFF3'
+
+N!FC`"%LaVcE1@(qlE)9DL6ZU+LTa+Fhi&,2GE1VZmNF@2r*(TZ##dX`aI@l&+j3
+
+Mjh9k(6qlDMCRr'8S$#iDBNLZF%9PA(*(CX5lY)l4f02hr1Y[ZZrZrCfp[m2C8%2
+
+*G[IZ#9"`QH*+6"k@%HImm%f$FhC'A1%lVl8EhS(D[bXjYfr(Rk"[IURGHhA[lj5
+
+YN!$CfZbZD-TRj@MkNd-QJHZ"Nj3M80iL-Z*XFH31p-2IQ2-hFHDX%DlST%P#Yfe
+
+MaSFCM`[b-NjN20jlMr,"hkQhZk[2DVBrbqPE9JBPK2Ui,14&*DphqNb#mNlq*1Q
+
+lb0aZcS8cMA&ZEBfqM!DpBF[Er@pqTbM*),hQE)(23EK5+B$5Q,MXQ8@[f9!D%lF
+
+kmTVKdZ&V%0bil%MDL-VqZl)9$q#PEI*Ub&&Y%f&Pr`3Ej!H!kTF'86A#XJSm,*5
+
+(aFpqp'5P'IdB@*`4Pa9hX2VeEm,Y3C@RVqbHqE%5XbB8dkh%9$9&GXaZe2IBCpr
+
+$(C'IBTA[jk,CF,0@K0dPA,K8Ibp2*)X8MG0amJmY)PAMR([kMbi81Kd14rH(2@Y
+
+ah95C4!jF,Q8G#KjV[)[i&Eq-Afc@r-F-Z!Rl@E`[L+#Q[5'Kj*d'Bf&li6Z)$1$
+
+VJ8,b&TA1%3mJeXZ4EN3pB'@pK5hY5r4*j$MYJB-EDShY(d,$eh$BRIDb&BFfe-C
+
+EqBe4eFAj`PQmj80EK,-i!djTf"&Y'krr"V*dYArB[5%Ml%5h0FaCI+lE@Aaq3le
+
+KfpTD(@''mk#M[Z5[*LBj*lmNPYVbpYll+[I`KR[QPhBABiEmhZa(Ml9*ThQDE%I
+
+F4dVm4k(ibD(i6L@q-aKrrSJD$`FhFb6+!,4#eaBcM[Y%$,pdiL@`ZaKjd5Xi16L
+
+1hbi)KB(&TPc#f!T!FC%EhACYKr,pJ[+p9IRH*lm6T-*6HeLUmMe*q@k3!0qZEI*
+
+l`(em*qfp0r5Jr,lZU[cf9mM[9-,,EpjAm"Z1aIPp!earbrI$b[HEmY[)PGm1fM[
+
+`HiAmGPU8EidhJHk+qDhM%TBUhl[NYdZT4k+#-j(UaZqebVI'Qa5MI-p9[MAH*&+
+
+NalFR@IQq5rPq9[R@q3FX8,ielUr"T6If'HhQE2Rpp4EPIBIb,Nlqm$eHIZF8+Gr
+
+Ej2I09(GqPb[Ia-h[[I)lYd&q$j1ESrC-kNpmhf46hPN(I*FUmDAAj(FCp5'rUDf
+
+#ldUU(lj(+hK(ceHq&mV[-E(+YklMQ!q8lrAb'dlHe(H0r"kRj"p(IBG[3kQ[X92
+
+j2LQr(AEjRD$N6kL6hkipb[FEb[GaqCfSe#e4U@qLJMH4[)$JfbfG2l4(+(f4421
+
+%hqa6I([5j2F!QQIipQj4kV"DqHBm`AFbc3GqF`lb@q2b+Adi81RV&+9H+8UIAAG
+
+1qGBir(R+Ge"qCe!r*Hbp0jVU`Qr`8AjR%Pjmhd*eaRFqc60qXcrjcER#ldA+0q[
+
+*EpD(hmINpf!Plq"mjAZ'mYfXI,2rq2f+mVe(q@BriVZ!qS,IR+2mVPDq@@GqklS
+
+9d0cNpf[+0qFM[qP((Yq&5P`4p3Qr0Ii5iKRmlT,I`kJI@Ar1!AbA%8rJ0a9Em9e
+
+a52PQAr'E,JMa2CEQ&EmjArLYkcp1kDHU,[Np8F%hNIUEhcUq@UPRYB,VQeVPQr-
+
+Ahlp)mjrIbj4[cL0meej8[MN2m(d(c8YqDjbrp%KqhaQRI(0Hm*[cN!$IZRr[92T
+
+hQS*V'XelIR-qme[jf'ar3kREIkIdakmSZ(k&q"Dr1@I`282TQfqe+Gqk2lp&MRc
+
+aICG5jhYS[mUi`r*l2-eGI"[%mr$YD*AI6Z)Cq%j3qL,KJ2af9F[[4#9[)[%PIZY
+
+qG"-riRHMmVe6ILFP+Yq[bQq2NYqc6hi281)(+2Ab+[-NQAEXr1DFjlHH(bR%irL
+
+YqbkP62R@IAZGJ[-kmJH1laZ)Ir"Eplh`6(arKAJ0hrAF69mM[lp+r"6I'8Vp(96
+
+2!DJ2qi,Ij&ripP*Gm*e0mjEIR-Ii[XQKI"-([cPRqFhjL1mFiYRicP9`h8*ea(F
+
+qh$V+0qFM[JF6cmEhN!$VmVZ3!2SAhk8dKr!pR1BV[mPhqFej`Qrf0ll,U4rj29A
+
+jjTc"pdMU2hlVI#1TIrR0HB,[#UA1PF3Rq0kLI*2hmCYpMHp4a"IiVA'18ZSeL[U
+
+)hbmThp`$%)qZ3bA0EAb29[+2T[Q#ll(%krLYFBj,NGqhdTcKYmCh+r&SI%qJ1BM
+
+[b63rq-djLHmlDZ9hEE[mrLAL$BcAF49+hj3VGCUNj"fXi2NDc5A[hRX@UJqrbEr
+
+`254*IKGQbHmEU'lmKLYBIUI4r-Hh3Ab3!0qFirKf8$raQh`'hdkDkrK1S$Q#EaI
+
+9RGrF0q!lNE`GmTYm!0pZUMHqNfKHi0Y$[)2Il!GqXilmCYrMHi!52i$UbQqGGi"
+
+59bre1ljpa"[i66l#EmiGI!qN1FP[cM0mTa"[jEH1pp1m`rIe5MpF6rb1hjcEq%k
+
+PqFG[cQ0qNiraQhbHID(lab"qa6iJlq+hV[mrTEUjm-ejL1m%QKIm*Ur%YiYi,Gq
+
+I9Vje(KIe'Er*mr#G52-0hflU*h`28,pCEhaI4rA$prA%Dr"p!p8ChkR8*rMqLS,
+
+h+c4ImCfQ[+I421BhkmK[pL'r0EiEUIli$K$[`(Ffm6pmIi0i)lj[SMjK22Z$FH3
+
+[c-Xp!0r*hr#GCeDqG9ebU)raI62a0-D4Yq&lQ&[jjTc'paMLLIcQhS(Ij&Ai(N[
+
+cLYrXDmD4Pq"l(-dMIT1Am*[pbQr10AcI5R1Bhp`Ei,Y+HDmL2S2[DM@HHbh'L@F
+
+Dc!RGTpHVlq6eq2BTrH`MIS4[,md"I$Z8r1)'NGqkha)TEk)5KfmRm6pqXfricIl
+
+N0rZ(hm6(EmjAIT2Ai$Z"q"Uq%fNIaQrf&lrCAraq6[PQ[q#lL(LL'r1Hma,I3iR
+
+2ihX8iH!hjaDqEbEFr1EF`AFZiFEh0ml+lccL'r`Q2qHhaT02qcTmIihQ)VkcD$q
+
+!leqJqB,[$1)2q$CSR[#ErBp[Kj,A5Ih#Emi9I#I32S[Il&pqFbq#EaIa1(lVH"I
+
+YHr#G5(-)hflUAhjcV[#Em`(I5F4rqFdq`rF!QM2mCVrbQl`Chm)Em$f3!2Der0E
+
+e6+(jLfmrp4QqNj9mdXIi[SlQ2EmjCr$YTAR-I*b,a%fHLfq2NYqMp*0(LIFUH+j
+
+6qXT2md,`$GJ"MqP64,9S%UY%ZpJS0SYYBUGiAq`6*m4TF9EF&(I%2I&BSp8ND*)
+
+eKCSbcAc0!Se2Xe+c@Y1ZfD@jT,QMZDr9Dk1ddGSil8EY5Hf9X)3`HpL#X$eKqm0
+
+`jq-bk4*eUh@hG(hKKH%,`YH&Ep2Vp3mMmL0@4E`IF5rLN8&R-"RJB0RM-#`eV$(
+
+X-e`fh$$F(T)`*'Q)C8M'N!#F)IP$bSDd$QNEXRp)ej!!#d-Z$lN4UBXd4XC(*N@
+
+Q4QC(jNF@4CC',SeXLp`Fq@lNqj&()km1e3f0(@SG@MKdrP$hd09$e`hG0I6X81`
+
+QNamEiib*aQ5M`eKL,$0@'fZ06FC@icTMKr&Gif&MYr'bmClamE#iB4R$5SDjKkd
+
+FYREBPQ(EKldhl)0KqiBG((Ci@0H`8m21$MXrl1U`qm2kSJa4jUL-U,bSkUMD+'p
+
+8Dp51U#04Tk214ef+ZKje+qVqF$%mCRM#m+6K+F26KQF0caeZ(eiah$hF0hcPm0A
+
+$E`qrCp+C8NdjTRa6VDR"Y0V8EPT[fQcDCHSd(6!G0Td`A6EG00da24S40m)aSRc
+
+%r"&,4c50D"QaDX6k%4dMhKZaIm5*%@G'A"PaFd4[G&adBR45G&CdAV3pZLMkC25
+
+jNBNMmdB@MR`8FbEQbJ[k&k`[P,d`ri@&XDfalE(VBlI%[Kpl)2CFl)ABQl&hBKq
+
+-LK`9-bTaP'@8E96fU,a4cP'q8DfM9SrD11Vp8BG'(4YeFY5C8AG(hBr6aKRMSZ-
+
+5ibaaqA'&FC[LYX@p'hFilPMFZEL,F9ILEX8pM1XEE4PG0VTfY(GdkqM9SpY(EaZ
+
+pBr5Hd3G(Gidq0IV-k!ZMVikq1IV1k2ZM(mIViL2M6I'3!eRacRKA[$[H&lmbIRA
+
+mf[L0mG[LGmDr&lm[rP$mdIKcmCILVmAILVmEIcqq0lj[615Bk$(aBa,(T)baMFN
+
+CNcr'-DCN60@BK@0Ual50f6LQBmb1-Hq2f6rQm*LZ-5I'p)bj01EfQ2YMHK0d#FD
+
+%k)53!k5%e)5F"(Y#B8*C3R8#MUbc9LDmQl!RBAr#SB5ZK1k%-`RR%biRA%fiNI!
+
+`iI',qKGMAdaqdICLlSYP,eDpZ1$&ZKHp,kjqFIf,Qepmpm9,,pj+M%R-6@a)A*@
+
+i+A&(iS(%NiQA%Qq00Bk0(TXd0R9XcPM(f,+aG@1EaZiDfcRfi0JMBiq026Afr0L
+
+,Bkq1[6Zfek`e4jUMcBPQLcR,R'XZ-XmhejPEc+[0lHC0jJlc,[0Zm`IQ)qB6jY2
+
+QFqDVjZ[Q1qEHFBRMR12QMeXdVQjF`cMIZ,CaDmGY(,Gph([M2KLhIpb*F@I'R4p
+
+hCGbYFIH64*)Z+6,*R*55P*18Rq4-+NYDQE3fDA[5lU565HH5,L6G6VUAp(LmDAc
+
++q,6aM[(1mI2(,abrFIcfmI['(aPrGIbGmBq6YFP*bDR*'FQjbBjNCh*9mU,NTFQ
+
+qj&A*kj+h*'p2hT2FQA`Sq@MbXH56b@H5,bGI5lk6I$rjd36cK13*'40b*Z40F%`
+
+SQ9!qSAV#SJRZ#Dd69NeB1f(RK$d6pNdi11(SK&-6cNfi0Z(fK2X6HP0d+C%TX5N
+
+*+FNTU5Rf&'G+HFVmP!8TVK4hLLpP98TlbVU8c5Nl8Yj,H6qP-q9J5PI+LC66+6G
+
+5lUBm6(Nm86FaHQ,ma+5*D40Y%h-RjNmXR&Jbd6faDH,+L@XQVTZiDH,fLBFQGNd
+
+m2[(da(-6VeQL,BQ@9%Z@*GG5D#Qa,,5i,'l,+XXDbeV,HXYQbcE,BFY4bfP,Mq@
+
+5jDVPZZ@@jDkPGj+B&$NTCP,mT+4*+C1b*Z90+TUdF&,$T$@61LEYR,4R8YHN%j0
+
+16cShkH+NDj2ZTqT66DPaUBQT+DQ&UD@T&DN,8MHRlNlY6$f3!(SdpAMUfG3,UCG
+
+6VkIH5Vdr@6mjEA,Cj)@6kbD[R,akm[V*@bE[QValmJH6Md`q0[RNj*l*PbEIQRa
+
+rmU-dBjST,6%Y0Ff@PTe@P&D@9TAQ5R1RYD9Y6(X[V60YIpUaY*0T9p0ZTGe2kde
+
+l2%8ra63PESTj5XU8[#Q&8dURZ+E86@QDXQE+ZLNlTZbDmX'8!e1kTjbFFRl+j5R
+
+ATpbHmR$+Bk[1'Qf0XbCDVGBXUphUY&CEAGDPeKEVDQZlGE0eQr8$khlV#HYPkhA
+
+VAHX$+paXiCBf26dThC+HPTk9RTYHPViJ[5lGQlibIAAkq[4YkHqQldRIRhiSr8M
+
+kmI56kCI6VkII6VqIhQFcf+*XZ*8ZcV@9feECGYRff$k`(E)GXjfbAEEGYcfd2Ck
+
+UR4Sl0@GUkG6bUI1R0NaG2AAGe%e61kEZR,TlDZI8ie226ldmpIV8@e2[6hddY5p
+
+$Pa'C%CZ4N!#4NQ(0b-l)cA"NP'C8C5c)@*5a0+-TBe9'HmD@M'dClfCmN!"a110
+
+BaXQ--aRR-kjPh-eiQ2%i8jpTc)c06-K-bXc+Y'F@CCCQ,XTdCcCPVXaFNlNZFh2
+
+QpXaGQEXcpf8HbZc+2*jj+V-Rme,QeFcVQEFb(fITXU+c%V-X@GDXl+cF,(Y@9CB
+
+VbjZe+UXpDd[@VU`$@FHc6QHGcEUBG5hV4YEGV)GCMkGTTaQR48qc6,00bjQ@2ke
+
+`@YQdqG-@6DZGeM#YGGUDD@ZRVCqfCGV1DIZR(CV@0Hh8Y*jT9kEGR(CRfX0TMl0
+
+efDEXf1c%l+4X5lBY1bIERZh-VXLZcUl,pQDhCUr+EXYHPldPHh[fZpPlX[GR(mS
+
+qPRdLZbIlB[EYl([CMkCVTdG2MjqH0$eeZQekcR6lG1IdXZR9deh6[G0ETUqD[Ql
+
+kjZRETqqF[R[k[ZQ(TKqGIQckUHRRTPqDIRhkcHRhTMr1dHI%j56Q@(+X1I0cDR0
+
+DFpTchXrCPh-Ljh61qCc,1GGcEZAFcqQG)@ESCjKQa-d`cl$0b*p40+0Xa[`C#fI
+
+8cI$1D*faHXED'CYQE*ZaFmCl-cTR(*aaG-Da'5GRR*YaFFD9'GGQh*RaB-DMA&f
+
+Z-6Fa0bdh)pHCZbMAPpZDZcUh2AGGENIZVYc$Z8Gc6qCHb,fFHcHhGkCaCXc-q*P
+
+*-bdcE61cCjE0V*fjGZEfQ4r-2$Ecj-bHQGGRhTRj',Cq[AR4HG#!Umc1+m`VbeZ
+
+3!1I+UmYVb'[,@jqh2@phhVkm`hQRmklPhCePQ"8p+hk@C9E'V*aCMPR1@D@c+QB
+
+YRH@EYA*@fkaeXlE-fMjVjkchCKfFG@6@b9RRCYfHGAp@Ell)eqG(jFIPQr-YqAR
+
+jKIN,mjIQHr0EmYr0hj0r)2p`IPIqbI`cqHIb,q6IcRq3!2qS`&J39f!Z5+(Gr0L
+
+bJZS#9i'lS+QJYD#pS+0J*cEeQ`S1&ac(4FjHA1&%l'ClQYeZVlB[YAIEcpKll*I
+
+Yeq`hl,GRLpQ4Xk0Ram0pUdmX%Q[%1R&)p)K,'Mff,`AB[#c#eQ@6jVMQSZD+jV%
+
+f@CZPY@[,B8&hYICGlI[DIGU$fQ0KN@(QX)b`r,#UX+D`P@(YB4ZaL@R6CHYF1Up
+
+ZM@kEEVrZR1jqH'aiERK6q*E`rH'(`iq&GiHI#lmDIMZm9kq&BC&XIBSq69qKEp'
+
+hk6IT1r3lp-Ie*r9RpGFM6"%a%I%4'4%j%ID)q4'Y%CXMMN4d4eb0Z'q)-H3DR)B
+
+U3jYKLq&pl(&f$M%2+F6QCYQ3!*1mYcNbj1k3!-H4@ZaZ#L2c)JXM&dA@4EC%VX,
+
+@CJZf0Up(pN4HME`4HAHSD@MLd*5KZ82,XEqCJIh0dU(EKqiCHR,SQD%AM9UM`4K
+
+M,$+@'PhBh5`eEMGf'JmBMaK2'Fm1+aT@2Qc4X,TK(F2H(hB81jTM`qj'qD,@BLq
+
+c1HTLe*@SQe%2S[U'4`ihB5G60VaNH02`pZ(EKqmCIRMi*91N+GjN-4@C9TNfQRD
+
+-d)q)('%D%6-LIN6L#1Z)V"&Pf,iX'0%fBZ1)E50fMYJcSR2%S4&(XB(C1H,XL!X
+
+M,SfiLMh-L4%24[4&4f%E%iK1Lmk1cSpf4TG(cipH'1f1ESPH'Eefj+U4'dGZ'IR
+
+Hb2G((KlC0I,-b*k4edEH(2P`j1-BBdad6&+-*5BR*MqQ,+BUTLkQ)@Ce6(Y-4mb
+
+1Q!pLpXFFLcN4FclQ8XbYQ([Bjk5rN!$`3YS,'5miALKrBG%,G5md[1"lSHf&G5r
+
+XI1(!#bGM8f+cBr0L5f-VBQYMPmDZLQh$aQFeGMiEBlYLZf0lBLrbhUGRP(C8p+J
+
+il(d+4q@2+Ka90@V"U!EXITD1@MpUakKh4qh(pQI(U01M,SfkL[e2Cj`Z,M)Z2Xk
+
+-iqqbZ++idVL&FE9a,A'ViME'EBPl,qjpl),#F@ILHZ+ZaGh%,UKRY(&dp1JNE)6
+
++4qGM+c4eG0hS"Yi+VF4@k-A4qdFI'heLp2R4PdEI'RehG"mf3QRB"qA(fq,Ym8A
+
+amq-AaR[M@hJMa(h3T[M$m5IMcm4IaMkS2IlK'2dBijL%-8PM-V!(UKj60QE4Q,S
+
+aV@0@MpR%@k#AX2hC2qC1JLNK0L%YS6aKIS)hS50K"cBph2!F5ELCF$HK$aZHr-6
+
+@a0@*Za,lX'RCBljS[Q'q1dir,QTFh,MNF5AM+XBY(,F8@jCpibk2ZcEZGP)#GLS
+
+Pf+T8*C8N0@#VmR65RU4ZE&51*MdDVae[("q,EFV8m3['VacI-Al(q2I'(aarG2c
+
+TmIH6Gf0MFL,jrS4Yf)1m1'(rK#-6ENeiN!#L68P*XDENT15R&+D8B[Fa2HA`a!H
+
+@,CDGPMf@6XY"l#4HXjc!9Q+[jBlP2[B4cNQ'59(B4q40XNh+RH5B9$+TE0,m5Hj
+
+*,C0@6fUEY"jlLDFR[6HTFp,"58FRRCTd&TZ*`j1Z6lUC+P)68P06Xl#CZ#[9QlT
+
+qF[4Nmf6Vj2c*jC1VXB0SQEaYmNjX)&kB[(rbSFP(*eqIh*H@N!19PTIQ5#Y0Ddh
+
+V5ZY11j0f3GNeU%e$jT6N+GBT19-Ff$6FL9h$r90DTl40f6KPfj4hX@[B2+8,ZiE
+
+$8ajDihQcF*I9EGeSh@2Y5Nr'cZ$qp!2B%1a1If$6ff*YLECE8kZR,TfkIZU@M*L
+
+-mScUM,S-EdB,Z2Zq6,2#dUGNGQ5qQhNbmcciq0(-1jPp@3PC59QfV2bXXUcj@@l
+
+`m'E`m'9JiNpR[CZe*fYIeU'XSf$N1l21J)Hl`--c`F*A60XqlGeT"kDGR(B062[
+
+8Y!IJe41bDl1hJ8I[b$ilrB2Tqm'%pq8Njj6Rl-MTc,Q8FhY'e)bm'EKq!P0GNlY
+
+lCX2-dc0lmcEPGH5pQlFRlhcHTE`EHEHC0kkCGAl@GA$&r2c5r2Rj6IQYB)GEQ"R
+
+ZbEqFIcAr4[kYr,YJKUN&PJ*V3@h"bS)e"9X+YKFF+ZJTZ&K`Uq"Z`F1#ahDG2G)
+
+HBdqdTi!6PYNGpLClQhf,r9el&lMK6[XP---ZQ29G)R+%A5`3al#62k0CT&Q[fDQ
+
+jUh9UIGSpB5E`[59K(@%l`ik&AG@Pk[*dKES'E0eI#,H'E`rr)2aLq#epKVi3A1i
+
+Pr3ApcBLmL,U)ba&h$9(BZcFBlKNH$E%2@6"NlC!!cGLbGf+c[L6b3'4Aj!Q`X8D
+
+`VNR'"FCca[[$V-2bKYf,qQ$iMZ(R6&RBA&HE@NaE6$fQhK'@%4A41G%0d8HLZdH
+
++NC%M8dFH(APKC&p-ENa6c!F[f-&5RRrK,[M(Ql'ABfq1dSdU'V8+l1*%R"dmiSA
+
+4likq&CmBEif[`16I%Apfc2%AMlci1,&PE0aBqeMAf)hBSqiCHmmFCejR[SDC[#S
+
+T0LPKJQj#c)4il!YAT1a216Y46$42V*VB1V%6@lmHbrZ@3jEMN`c@'qRkG%GkR5h
+
+"9MMeBFE"c)TT4l&G#@DhC(GN[jpp-[Ymp[hT1Qa-bUE2RljdqSdFABiMTc4RAFk
+
+&R1XcEZC'B5ZaCUCpTK2EKq$-962Acqc'(0LGTjrelUc1@DGQACaeCGDpr!CX"*V
+
+c0qC[9pKrBB'pS+LJUQ!"ZTfGrLb%&9q`ll-IjPjqbhiHhAabYQPfh1`8f1"qG[E
+
+afCGQhjRGkdKbj$RU("f1pabGM[11Kh1+jM6-16MRq*c6Ffi8aK3Q&#B9&KEZQUZ
+
+I'cFhF@l@h2bj4F@4aDELa'*,F8ka[AKqF80a@r'HiRh&hF8ALQmj)jh46SXcceR
+
+ZE('ZGRBihhFHG9jfAR2HH5RUTGLA-PkUH'R"5fhcA22DjMdXM5`eP@iUrD"dIqQ
+
+9Ph8[4lkFq(,Zb`YI2[(bJjFIPHR+,'9jC3I,MT6G+EYIe[Y+bL[CVcKHUAlPf#[
+
+hbQ[,6lqDqZU19pplpILVCbZ-&@N9LbU19pQUlVdQAM[kfZRAVVpHprU0eap8qkV
+
+EUcHpBA`MpJhc'bP[C,bam)fQ0pVIf2I'N6G1[((kMFY[A([MjK[h&ZJAQ"E%,l!
+
+Zb&TJAq"FX'""hB+'"Ei&+aHd,pLbB2Z#paCd,cLhi1+#'`XHI8jm6[qjP-rPI+l
+
+PFfXqYqpcCcphE@(N3X[#[)80#ppEH(EKl9r,rlADAhZib,9SeD+Z49F@kaBR,Fj
+
+HA,UiEI%(VPMA(YG*em1DK"T,cF+Dc6A[ejb[Z9UVV6A@TYEDDYI@EU`p9RZbpNc
+
+YjGVVYEGUlpIf,SPDNV`NIdRKNVSPDk&XXeql8&ZVADAGUHh8(YCHeYl52JL,#l1
+
+',3VcKUd+HaFA,kq(R3flTi[6THJbG'@k+YdkADIZL1k%lUVZ4RK-H%*i9RKqH!Q
+
+ZB&i-[kkhk9IUGf1RFLE#(,%dBRh%fBMEKQK$[U("X023-b4b51S3fj!!E'a3AKK
+
+bB-MYb0c)fXK6f*!!("ZU(aSe0'DS'6Z5NU&VKKiGHK9h,GR'FQ1EFEraFP45P$8
+
+U1fTIe2'S#j!!6c5'4`p2(9k%Zj1RKqmIhQXbQ-bQ4DCeT[G-ADE,f(0N4&q1[M&
+
+5KhPG-p)ASifjqi,!IU%Fqi59X3Y'(4Pe%Ibr'e1kGR3F'2P+m2$MBm5B'lLTb%i
+
+S5@M$"8Aia9d[pLEH51c&"F3iA$idM&d(&GmPjLhQrHCZmi0amH-baMe+QTrd39,
+
+2q+caT@$*-mDlar['Vm,G`A2Mh`G6IRAmmI'ANifi1aL(Hi1kj!EF'ka-2T!!I$L
+
+jDm+D#HY6,#NC+6dTMbEH"[HG01R'T0Z6lNek11PaUMBe0p8&A[Y5kY(*ZXQ4Ndf
+
+6NbHR6VC0RMrC"hDl'"[fjm"YYdiqMZhk,ZcA$dqq-rNaYZZTD6PTDp-1Tae2Zc&
+
+&J08@6#QC8MjP`46IP,AJX@ZRl!H,I@[+!qc)bkhPePA@lHQfp&,`epRTVGKi,mA
+
+1H`@fhP[6ckCI5Zqek@cAEIHab8kGDTkD-M9lDK&ffD'TQkIZRhSq3jYKidhej)a
+
+@l+DhCUCNfM*c-JXc'c)hC4l-[*(Pc,Sl,A+D!r[KTH#Si@RRTYfHGLml2hXq0Vk
+
+VXMZcMf3rRKi$IP),GV*`qV[6Ef*(@jP6P&1Adj5c2ZGUcSfFZcN2H"qE1b-$M,9
+
+k4[Q-pGM!ETjaC-DP'9GcYEQ'h16FTEREFJrQRXqp2G-k-frQJTPH-*N9-ir12$l
+
+cpXalH3PjhVb9f*LZbYZ&AHRH[-YjYr2ZcmUH965VE&ElV)fcYK(((@20Aj!![a1
+
+EcVB#Cd%&Z%fSB(A"TS*Y"@F+EK6F+AKJepZMl'Af"ICDqfllGIY$HprXABiFahb
+
+(bq&cV*P6-UHP5&Z89T4G9&5dS+LV1,8iScLrZ,#iV(K4FC2cp%[*,e@rY1LPZTG
+
+1[h6ZT3XP'5AZNYD5YT*e*4dP1dVfP(5@R#Uj8(*eRQkHDCjjAXUmY(RCmr,Q&Fi
+
+VQ9FqE`%ic1ajDqDYRIIZ[2IRlCYhC0kaH5IQACjhEGlYHII!EBc5k0+idZ45@fP
+
+1DARTr0,DdSE5pY,eTG["Gm+PhD9R5RY+VjBqIPRlFY6,X5mR[CcaFJQi6m[,@mU
+
+-CDPPYV+5X[+bPV,fXSkbh@Alb`k9GCHG+lY3GVRX@YR0X[Z[D&q*ILAT&FXVCDr
+
+XI1A8+fGIZIE+RA*YHAaj9[R#mKhPjmSI[aVlU[P9fk[jVbjmGHQVDbS-&I%9jJT
+
+EKEeL9m8(&Gd9CbTk+Kj9aP3Q9eSUFbT,+pG8EUcXU0aCHDMb@1ACbJZ9YbSI92C
+
+9kDT5`DV+UbUU[&9VUMC@EDmk8hAPY62ciqHRc,I0Gm`[QlpJrXVjDqG[Rlplr[l
+
+j4qHIR0mcrmVVTYF6AVHmAJB1Y[ceVYF[[(kefPLG9*e6lDbHApeD[Dhk32@CkQY
+
+[k0k)HL-*'Pf,BL+aHfb+f4h6q8,U#miAA0JT2[a#"hD+Keqi'9X@Hfe8dUJd[Jp
+
+V',86c(d[lX(5ij+`#jb#A@"Gh,UiIA'AiKk1,SbhB)Xh([GE2@2@i1kUjXAX&cH
+
+pf2(La4G[[[JS8CmBRfK,c%XX5eb%lGZ5a)f*@l#"fjMBRAJkm9cLKE%QA&"9MPd
+
+pG[2B$mEH'(YRl!1cd4aV0TY6c4RQ22MBRQ6Z0"mdAaLhEGbaFDI'A4ah05N'HlP
+
+aB"G"E18@*+e*@Tqd'EZjE8PRNblJ`UPfr#)`MCEa(i`r!*DaBrcjmCI(halr+,N
+
+lqF+%Z!Q,,%XYUbh(8fp1VTVFRTDI9TLfHXSMh-EFC9eRh@H&5K*N8%pSci6ekZE
+
+V6S#jeB4hk)rUcf(rr96%MSJcKYe$VJbj'EN[mK+f*2Z-8F0bKkdCYQGBcl#(i'"
+
+VKeZ(Y`eI0h`60XaVKhm!lV9PH,FTc94Z@M-LDX51%3qL%k*A4@q2hLG%q(X[RR[
+
+a`SYAAlcpiJ2d5!DkBPhLNF4lB`fi)GYU&ZE0f&!H(jH![H6iFD@ireU+(FM+FHm
+
+QPH+ZDfY5$ppdjBl2(em%GM9pr0Ra9m'P-PlSLcA'*X9@B3FmPbrqASXp&AXVYRH
+
+8'"@26LiI0Ap8'klm9Q,AZfI8a6J4&i0Z,XCYheeaEQaf(mD0hjUi+pMLlKKp-hj
+
+cr"lXB0r#[R8blZfDF@2haTMcBblM[XkI%)FYkjL%SZ+MZ$LF-Y)hm[c)bbrN[P"
+
+)$2)V&h'[q-L)652H(A&ia,%4Tk1MX4h2Mmi4U@+r1#)ZLa[L%Ha&TfLb0IQD)Nf
+
+TTKbhT6-dESdA9`i2DcCUhY1mVcQ+@iFh0$fi-fh9p1(1e+q0aG9$XGD"cGF-V9[
+
+ESPh0Y`rVq2CKUrDipUcfJ[CU@&4BFTJY,"I-r,Q`$m*1Kjd2Ha$@Tc1$Pdr60HP
+
+DGHrU$ZK1i3jL(m5iIEL&#)5RiKjLI(JCf(NSI&AiY[#GiHq(l`XrL1Z)F2Mam*2
+
+K0h!Gd4Rq5+r64qTM`0l,p(CpNEjF2er[dQr'KF3,qK2k-rT,qP[kHa&'6)RFL&c
+
+FZ,C&h$)B$'Q'$%1&BC9KQf'2iE$KLZ('N!$Zb!H4Mh'TQSXleG$3c8-[$,d2(Zm
+
+b'X(M@ic[iaVef$!ac$$-0#aa@1U`V'&fh+6@$PX`V(DBGeJ,,P1IaCA$CYbL(KV
+
+@'a8C&419%*8-jPmHP4p9&ZA'hF0LA$eXaGd$,P&6HV%(m1)D041lJ+VKTF1V-CQ
+
+H([iHTY)V`krM&VA,*%bA6,d6YNcB0D&R`Y@81'bR0kBF6VQAdS[0fU#*PSNC&JH
+
+ZjkCEDV'KhQLjL&Zj8jD(Nr6B5JqDP$ST"a[TGC2fBr[m1[E2KbEGQI3SeCLDR*U
+
+6DNmY`PAFG2$dfDQqe&AB2$FSefll*eqGr""mh*8@KfZh[,5-Y&cXR@HNeD9jXAY
+
+HR,BZEA2DpV4GDE[6EUIGBjkH0L84fqGDE*dETV5!UlG-fB),YlAB1jr%h-kd*PP
+
+6VGR@I'Z4YF+k%"GY6eR2@aqR`fP3N6Np06d$PfYhTHp)ldQrQ(iPr@lk3q9#,3f
+
+ED'LT&fICR,Bbfd*ERDh*eQTEBpYSff)lB6YMZfQlCqZG'M1eHqUPU6HQ2X)0@RC
+
+'AXCQA*NGa89C6QCDTL26Q9Q@1Cp[bKSb@c2E-pGREXRFKLZbrAa$eTlj%&GN6GK
+
+2EmSkNG@6G3QhBLHRL@Nadr+Q1A%AeS#lX$A6pQA(C1GPPfH[a'jb%bklZ*dm1$e
+
+UHZcda1NTdkfijUUG[R#kHhV6p0ETDl!,f$6p2#kh6NjrP*14BmpCKAZYP6RlFkl
+
+K6UXpjr'-H'`$&XaSQl&aaJ(X!YkDF@('`aQ2X3r`jHEN,XaYb@h,ACql1AGIlT(
+
+FlYa6Z6dcBfFQc%c1bm81B"2B[hZ@D9BXEU2fcVSmkpUXZl2kmL2cBr)6F3%e%cG
+
+3cIRYqH[cYq6[b0qGrd(qNIaMq5Ib,qCIJlC9@N&f36if"%(F2HfaDl(9cX&'Za3
+
+El4Tl"EB$XqdqqbTl1hB%KqdhlIIXMfBEX!Np02XQpTmZ4k`MdC(XX$S@1QSG5ae
+
+0MKE(+NHEBj0MKf1hi`2(3FF4abA(GFFGahe(hacpR*Jj5A-XFl,R11C8ckQGdcC
+
+RhCc0FrE-16ERa*acFbl2Z6hRrTcH3P&S+$39aK@Z+hb[F&rKNF,,KIIR*Xh0`2D
+
+dCQl&h!9cDqHZR0XqGr2FAA02c$eAP)`045Af%h9&DiZ1&CdYZPLF8*a@[)KmH4V
+
+D,kF,lECd2,4UaRiRDp3eU-*PDDq+&ekH@rBDh!jX+AbTUK512rE2,UfSJRUKZl$
+
+dP@*NcRH8&CELZkbSBQi4[UYHQq1JpmR,PRLcm$dGhqAi$LeEXR`m[T[`cEJPq'E
+
+FmTIQP&(Fdcj[+h3f(AYHIkQX%0qE+PpD!-IXMUiPlKCBDR'F)Q9*I1mP[8PmYj*
+
+f*,j2N!#'T4'TH8KkQ%DiGV9B#kFjjYp[mK[bi'mT[6Qr48qCbIb@4@p&Vp'E)il
+
+MEZDh0Cb[MR2J,J%4d&E&jhjqJh)J2Sra'acAi+XPP'pp%'[LbG$E89N3HIYa+1j
+
+dm#hT"m'hj"m'hh`&SEGrVllP#&ehX-B$2`VQ-"j+T(clfTm&FArY,p3h'1XDVEj
+
+j40'V`EK*Aq3RH'SS&r1Im"YUA#jf3NXIIh!89#kqmmrj$5V@H2[[q@d!hKbcC[!
+
+E[+fADhEm8hk$PQqjjSr)hJ4+M6IRL)Rm"YhNFZfShq)hp&D@G['["@VJV"ZVeL"
+
+2ZhbS@S-mlCTrUH,1dklpI49hRREpG"9hR[C,)e4mHGV0A)2r$`!'!1Z!RE,EV)l
+
+bT2bLr-eE`p2[l+,F+,pBhFV1ijk0S[aSAA4lP,pel&VSjAIHPRBHTbIE8TjVDHF
+
+a1H8GfdRj`QjjYTmYr1`Yb*ER-FJ@)GY3YXf"R9G(&h9jYJmbb#$P&pXHjHrZf(+
+
+a*9NG@ij6rM6a3!h`epIheXTDH-*pm,`)P"a)`*I!)r$)3c*Db+fIl*6*+ErS0VS
+
+pZNr+If8Aj@l+,mU6mU5mD$ihfN@jblUPabqkRr+NfbLrD'E&kLKrZYR*hhfZ,0F
+
+'AA4hE"FVA8kfRfeMfpJ1C"Z8i4D3!#d(XZ9L1eNAfmEfkIEFEmrfXaeh2qX@YLq
+
+f,hk,E([fpTi#A9rA0HLmr$S[Vq[X'i","Bq!33*k1!*aY`R)6Y@*NfZDlXaTVPZ
+
+q[2Q1jKTMM1I4kX1cm0[r&cBqrC,&[d+r'h6r"Xa1irI6Uack'$$9)IRlaXrJr4D
+
+[KpqH8%UrJMiT)6hF&p+hrIpbrS6HK[eH8l&JiD+QkYUk&M-YA0F@0Y0UUm29CYU
+
+bePDTe0i9@p`laf4&aaN6A@6mN6'qEe`Ap3FlZcTVIr'ZXc,pVLApVMEpEPEkA@[
+
+khHJm+Y,[UY,['Y,[fY,[+RraVL2qLhH*R[5l[25H2C+Z&dqr@j6ZBq4Gab2THY[
+
+5lb,TGk2c+%hhAC!!VVFPh9pfZSr4HHa)[eZAlQ0eqYh+p*aLkAFjkEj(jYVT6rF
+
+aXRmG9HPhDp2[%ZRqLY,e4ZHa0IeZC'm5kI[DIQC1SrXd1Zq4qEA[5rFadRFLI5F
+
+k0UIl'm%(lC[5lhDRhih-Zf-S2DH4HpQa0ee["!qeTr&@HaVR*6DNqajjPcLc"iA
+
+TqjHEVMH#Ua*pkATVd[f0hZ2YkEQ1c#PajSk1h)Q1p&`lpU6R%8Lrbdrh26+rcR5
+
+pMR5pp[hTGb-iS+-SA@pNccV5Z,#p,6hARHPk)hZ@51pC)YeIHaV(G+Eh[L10$a,
+
+(d[9'phMd(ScZhbJZ(lPr(G26ldEfS#20ab652%Gl-2eZj#jfR1&&9U6lATTq0iT
+
+,4[GMC!rDcq$id6dBiE%k&UAIMI*$)rHb-le2(@I`d`LIe*(QKpV2m#iMla*TAUd
+
+MM9m6CrCT",qfldVh0m,V*0)iZb0p*pV2i**4R$V+!ihJjN4k$cV6pbCaCZp(FI`
+
+)Ep'CaK1*-cKe"&mQHY2l-FV,MYb*p[4GE%r2YIh-A4RK)a0RF1FS[KcKLG[6[%M
+
+('AjaC$m5CrClj1jfR-(V)lLKm`b[1AUI4[MX4"T2*-l`d+-mfFJm1Y-mDb+0Ac[
+
+1m0NMr(G(qUiNdRLar3`1'q%2%QRHUb208hDNleClQSpX6rIGF3E(M1#Kp[4qYjr
+
+K@8Ijla&q0(''RaMCXildhL65q,lpM+jLj"jdRTR6k2dHi6mkcr$%SrGQP&mIiA8
+
+5DCb451pVaaNm-FV2MI)VShGd&!H2mP)Mr'JLIBF5kASGDIkXr3b[1F)(G*c4&Bh
+
+b+#0mH@FD"l5rZkraJ2FE6ljN$r9k6+#hfQ6hGTVa'h,X2G&1XcK5Fd&EQBQHA3A
+
+G8rNVa[48Qj!$DfblYm0NPe5Cc+UD6)0[J4$p(@p+[SXq%ZJM(U$H!Y,ETqeM6Qq
+
+G6mH'BLphemFHl'j%MkYleKK6i$1q19eQ)0TK-[%Y80TPXU2hQh'K+M1ac(cN(ZS
+
+pCX`Z[+pSVM@CH*m0a9JB[l[aTN4VCZ0E0QC4JYqPdGmc*Z),PZ*GE@M!H+-[QS,
+
+SNbDcp`%6kRh+P25qC%V4AdDCjmTmkUmdKTh!f`6H*["@jKkFcVfMTe+RYhMFDN2
+
+G-@AQ`krUA!Va2E34Fd50iQKAE,#h&YqQQrTS$HEB%6['hqIaIY4q&lZ`EcqqC!r
+
+5IVMG`&kX6qj&@h)[#Y"VZ-a6FVXc-pf4iqTd&V'61a,"lqJlXcY2kqAKHr#Yf69
+
+e0f*fR&IPGc'EII0UYir5[(J21Kr%c1lTESaKcTMEfKl-fHE@&BUDXp"AATPRjYp
+
+4[d@B)GjaPr*TR[L@&iha$%iV-fFpS$1TLGl(FhdehRaBhj65VLj&Eq`(FpV!Fr,
+
+lb+&G@acK@YP4c*2Iq"XcM(dAmaUBSEY(Q0P'l'SYjT!!(d*2-H0raVd(I)HqBUD
+
+GljrYfl(PpY!2qIYic2,SVEZ6phNGHQQ)[8+p"$E3VBbC1hp#2E6LIQ*q8GV$aHf
+
+Q"$Xc4YlRMh*ZVZ`Yh`4RI$1j4lb23I46KjT"I5rliYlVl3j-6pk5[0$p2-2--M2
+
+Z-[HQfr[+,VXq9'AEQ'[9k6XeZ$2Fh9H@ffmqGASIfVY`4eU-FAFMK6%%Ad`hPHA
+
+fm*mkFdJXL`hei1lBV!S+*mTZihkmfVPAQ2&$qLdlHDH'FBIG9EP6f%AHe8,T+CE
+
+FL@,D(FcK)QGhF$24mb6R(KA(E0`Ce-9qE%V@CBh,hTR&m-fdZq"Z*Qq#cD)QH60
+
+,C"Cl[m-lm@A-ia6MNAQ8rY8lmpLBV-dDMlicM`1ll0e`p)MEcAQXM3eMRqAfh$4
+
+(EP18GL&eApjaLAX(X3FadhBqI@GGp&b8Z#hMr[f*1MFa9ZSmcV1*&$rKp(RMFmi
+
+0j)blFE2Y$Ue92(RJGUGh5@iVF!"QlE"!V[3@B)`Npe&fDJpMT2+("$GJhrFk1pC
+
+rGr),,p,l+V-,C1NGrCHGdVR)$(%EC5I,#8pSh`[F[QeZH#1cNYN-c#,ra#a+XHr
+
+pXaMHNH&E1bjpDl0eCekmU3-BS0UfIcZ*MBiTYerlpKPXp1",pZ#6Fq`"hK(8kja
+
+,f,&c&hTC'AX-0i'c$8jCkXbS2-*hCBA-TNfa6dB8Yk+KleD6qDaYXSH#JlhPpXZ
+
+h4iRAD)VYk[2K66YZid)6kPYM!N2hCjXjF91)E`(k9KNh`5%c1+(IJaXph4iUma6
+
+)A8#rk,8j"0j!EeKQ![-*VVb"EerRGr&GjP6)FfCGQmqa1KqjCF5TJL85Z'XIG1p
+
+D+Gp)kDH0mCr@RX0idQS2l@,pXpLG,f"h$Z&0hX,jpKYYK$@aklHjG`EIpFlXC3`
+
+aH'F+HHjbBfjdq4$X`EKbqqpqQTVc)@`S0k'TQhL2@*PR-Zr$!BcFGj[@BcleQ-d
+
+PkGXN1`01#Ka!dLlc61+p!cG9LThm`-PC6G+E(k'E,9KX#"FHZ)fl'IpTrc,$5X@
+
+#dC2cb-%H"+0GFA15+aR'S+PHMG[CJ0Y3SlFK6cQCei"hF(Lc`(hIMTXQXpR$@$d
+
+eerprVilrmAX&EY*HRfAqifL[!cM!1)GmUTRS@PZb[9Ca8bM-GqJ39p,jmYVYi*!
+
+!@S',L3A@%Dm"A2&*hR2G4FGriFB[E+0pLrX'5fNAV8HjcIVYKUZ6(!MjXL$Hb,c
+
+YMGB-E'#Z*2'%fB6E&m91&jDCRP[dcI,N'lN,fYXFhSdKRXGa20JI`F5mX5QZB&C
+
+dfGVYS4Vd%jV6`$h18hc3EKD9fcrj%mB[Rc6C(BFZb#*1-HDjT6V*4a3QHmN[mfa
+
+N$J4eEk1kXJX*Hpq[m@RU4VH#ZeP"H!Nc+5MccQ)XR+UrEeI[IX$Hlq#fMTH"fjT
+
+LI9d2GYGf2GeG&C[EhBbqP[AF39JqD4IRSTHEH9kFAD6-H,BA!-F+,X)Hi-CLVp"
+
+M8cIK%PH(Zee2hf0Q)I-pYrmfhr@0dDlZ5VUea$EF`kAS-r&jr!@QFAmlJIYLRNX
+
+6h&hrqjKT@XNcaPc)@hAZ!Br)ZTpK$QX-l[PbkK(ID[&Y'AflI(IQc-MA,XJU!"m
+
+JR(5AJpF@1[Hi"RXX[)2JK,Y-0YIXh$G0k`MHPMZ,1SRGk'&IM3@-Vf3ZEPkB6b%
+
+X5SM,E'qLr!le5lHJcXI0)eVlFmjY@NclTV@-rrJ2c-'JGlPh#Hc58TV[dY1lFGf
+
+RUGDFA'26EQ(rQar&[JrFJ,ZHXRI5$@KY-hBaGU(6!Zpl$h(jZ!86BNHlZVUEZjE
+
+&pRBp[AClPlHlS[2PlR$Ah0LH6ZDeK4q1GhcQ4feV[[d(E@YHHl3YGLGkcM$fp"T
+
+`A1hH(YbkLA-k[9(-l02e-VY9Z"hi(@V%heRiYK*[pZ"h!riZaCXkr&k,hcAi[3Q
+
+rUr"lJrjGMqmPq&Z-Ef[`Gc[qEX6h+(k[`'p`#m&0q,X,hl,a&hFUj-IhE[aYa&r
+
+-)3LF`,q"#[cQ,0M$V-SDl#rf)9lMcBV8khjJakVY0aKI*hCJKfl(ha[TcR8aMkX
+
+ij(VQIUc@A9UV1e'VNrN`Ub9B"0S,iH,3Gb[iE0%ki#j%HQphpld)ldTMZ"QfchQ
+
+pDh"Rm5Deiha6'0TP[+((d20YLQH#ZA`r`$X(LNZ*5`k1Fqj0k@CS*Zj3$MQBfqR
+
+8`5lXS,HPQp`HK$qaYjZS$kp2[ll-d'UXR$Q!'RdpM%qqlqBHqYi(NqpRRAJlJHm
+
+RhjCYCMimpRCr%jLIY[U&*fBliH(N@hR$Er)EqeEd-Gkh+2C*-#LqjH*EJHjB%He
+
+9kQdKDdeqK0rN@+K"d4l6mbqJ'[([AGi@HAKU@l,'b8i0[L(I`GXBmec%Q%EjMKE
+
+4Sk"'dERFEjlH%X'+#Ga6hUj%-f1FI1!9qGXC"ji3(M%BM(i9rHB(JCf$@6eI`EF
+
+mqKBBq2T(4'I3K`[Hbha+kGFFcLV-Z,1F-#*f5rVXUbGiTqJ#jUccD"la#l1T[q`
+
+3m!PQ[`&[H9pUNQmV3q$8%KZ`&h)$%m)GhflmqPhQ6ka!IK(mi!fm!l1jRdDm14C
+
+[C2jm)cU4kf3AU%[LlFD0ABeq)YU2e,GHcNMfNUZp#2BFkS8c"$EUqJj`d(0F4QI
+
+IKTcK)l%RQGpef0CT-9T$e5B%VZN['GqbaX1aH'LA0l2h+BrTIFRMTrFaEahI*,N
+
+KH*I!1q&Zq$Ci[["UbLI,rX9-2A-XR5rUhH+X42X5c$V0!pcYXAI4V$U!hcV!Vh4
+
+kBhYMAF"X8lXA`D*T0qN61PlZhJ"qGN1APh"E6drA$jQAfqMJGFHMJ1q9qp[C5YJ
+
+H[-*Rc!jJc!MZ"ACY2Yq$dXdH%rSYr*EC6Z*plJ"'NPQeb5e4,GD('+2,V3Q&q'B
+
+@AJMF(c@6ETiaFILf'Ba4LJV29jlr%eb,()ebY8YaCeJlq-Q[1YaR5Kq4ccS'FTc
+
+""F,jiMejV[N[r+`YLVTe042A3$-94+d#iA[Hblb)di6S[*pJIUP`JZb!p"2`F,q
+
+Z9p6U"XB)4RmA1`2Z0fDqcrM&qUMXfSGh`'q,F6q&cd"Gf4&bR,a&S4"cJ4r"MR$
+
+qk$1a([Z&@FeP649l#ZCc$H1d$!FmbCM4p55lX`flNm6Z*!&XG6kSel2VC,r#Cl$
+
+IQ2N0aU@Q[BP3hlLE[#9c(mAGk0Ah6)dGkm30Q43e[Nj`T"rl%RQM,Gc3Z3krQf*
+
+llX9hGb[DJ8p[qk*JV2ClM+&[LBCID)1FrY$T#f0Q1Gp,i@E"89*lL0re`$L"h[[
+
+0q29ipfZH%VYc21S#bipPh(Z8QqBF2"i9rIEVVL,i(B*1XD)jM[[HH5(GAG&[F8E
+
+S8AM$PrR6GQJ8'mhSF[X[K-mqSLY$cAA&G&piZrmHf!ZmSpZcD[Xrm5dLVjAQVC9
+
+l8hk2Q+Mm*h,lU#8UIm'fS6-L&jQYZU*(j$F`Q@JG6Z4EE$al'$G3p(bX6jh$[qV
+
+&2%bDqNYH,3mlP1#EVMhQSXFAH@2Hlr*$T+G5MCeSN!#`&kA3$h)Z-E1EmE,GABI
+
+"mQMQi10b)a1cS3p0lU0p2UMTkGFDcArmVkQ(D$'`&[[`G4-c4,p`0rC0GfJElFl
+
+"[YbG`BfahMEScQA6V4(1%2TEe3`P4@qSQ!pcE@BqjNAG'l9G$mH1S$G`BH"l"3p
+
+2Cqc6"Rd$p@D')4eh02"Ap*Q0F@Kmm4Xp[&b[G22IfT%Y`4$9P(UGc&rfeX3F42r
+
+L-#`a+lr&I8GT*q[Idp%0DNGLR[0%kd*mm("X*l5pTF+"0XSpT3B'Ep"I0253!(d
+
+F0cZIlpB-`Tb[C,ac8#Xba6l-Z`3XMRjA+4IXEXPfd@-e-[id,@FpFEhB@Bq,*TH
+
+$0hPi)cK'ZC`QlVYm(QX"SSk1D[%A-#2T5A%B[[21cY8hJPZ+I(NdJdEU+HE*CKf
+
+$pC'2H[R3f89MAc0"`VAP9%0e(Y!,*"RR%@qIZmRiLH-ZIm&iLQhM*riCZbFB!(8
+
+f&bp&(I51[DL$lQM(qhc(PYM6mA@a"q0qeN"!Uk1lSI[0[6BZ6AK0FPI!G9(#GDc
+
+P12HBpfc4)1LE2%F(ETU9#HAfUhcc--Ymh(K`p0#&f#f+H5pMrCcMlUMl0D`@G64
+
+B-A-,he$L6hacf'ci0RYkl#ircCGh4QE('E*h[@R!9`[Vbla&M)A5Gmc01l%X[Sl
+
+`eZ!XT(qG46eV28I[h9d2f$XFR&!'A88llMNjGr$U@dQh#DjQFpH$f-'Ti1+EB[[
+
+!YHm#Cl-YjSd(`-Fh-"IrF1``CLKDIYa0m%mpM1F56GLe@i#j`-dSIl"ElL@q+`E
+
+Ec9S9D2l[*9e('@2(,0S[[(f@F5CkNEfL[MeQ#ZYrDjESiG&A"IF"ce6d)IaZ@C8
+
+j*`6H)qE*B3`Lh`*,Q1pVVBQ+2J3h4hR5F4["NBMZ!Ef!QcqqRhU%pN&dr91kaV6
+
+ei)j"*`&ZCeaM3J2f#qA0abh@RDfNfiBqK9XUmRRpXSZKdIKG@1JVSYfF5cF9R#M
+
+d!X(jUXA)dcRN10m(X)kqacI6P+MqmCqB`jFlP*TAC9HJcp'h6ZN+2)BEZ`Pl4)d
+
+CZG+@YhVX`mU'N8-dUdV4T,q,p9'QRBdblf!pa$`AXXiJVAI5(AT0V6[E@eJRRid
+
+lZKLpfBa`Fr6H4M"(`66q2NB#@Y[TE+RK+DBhi*qpQ8-hZBhHf,I0fMYd&D'00!2
+
+h(Ee(T)m3DAlb5,mLrIA0Sb#aik%LR3eiNNHC`d92XRXamaR'IlE,qBQlm`6M*G`
+
+GF"ClKh#cK,ZM&JEp3aGb*I2ELeFREb%dKV`CM[phI$idB6N*cF$aM$I`RVi%[$'
+
+T@rF%Dmh3F`JpGmZYh#hD)rD*1l(i2Z`0laUrb`jf(Q8Y)@D#ElZGq@1@96TrFT,
+
+Cq+hm!'l+iYr%AGDh)Ah,1j*,1l)8la*i[aMFa'!0mB(!$%TSRY3q9GY(@20*EX4
+
+j41#0l$rhf,pEd$ldhZ$NIZbqh(qV38q1HY)[Q(iT2rSSDS8,@+ZAf),E-8EH@6m
+
+0k2ANF[Xr-YpYHLUp6m5Mj$(4&c"'IR)'KCKE@2$'ZaL[Z([LX!,fEN9#5jl'&'2
+
+QS`jZ`C2#qf[Gl*-k'Gh*8Ai$IeYVq!ihdXkM9N@jrA2"8m3DH)0GMZU0!FkrJ['
+
+0lASa[C2hTR@6'q,GMXGHepX4)3cVBiI3IY36,!QmlfNC-GYmh@&i8[aF0"!bjr!
+
+5QV0LD'Jq1-pq2-(E`$eeqbND3fKfX*r+PAYH&cpR$YrkNVhcpcrM''Rb6*pEVlr
+
+Vp(F0p4hcM"@G%li$phiYbBQ3!2-%rh)LlclHJjGp*ppVI!0rqNl'0c)(iA,H+AT
+
+0p)P[bRrKVI3BZ%@er[HbG[c`rJUIKCXYI&E'G+VPF%,-I)Ve@m$)&H#9+NCfCJ9
+
+UrahQ2UD)GUANE@`'EAR[2ZlJZkKl%pV,0aGcYGqep"Xlh5emE$hc3VBAXMHBLAT
+
+H"!2X-D(l8mpmTXbpU6ZZY38,kIl8-ekhp`PplqTMTqSCrrKl8kpkkDrbrIrGh[$
+
+qFYpe6VX%fmKHALllJp[Mhq[J2VT&-E-hUF%+2NEh,@BUNri2S5A*QN[qk`d@$V!
+
+8YfT9ai`I%"HA+rUH&Y&f3#Z5D-1q[JEkr`6iUlZaPdXG69%,h`Yh)p&$65pdMk*
+
+*&IbFbIK!ESr8Zd(f8fZ,RLq"HS)hq"YrpGBQp`#(Rb&ehRYPSZD0JMZ*0m"0Yi2
+
+ILRP[C-m#i3N`4m2U(Ql"Yk8Rj[SqiIN'jXTlSc-5A9!Ijb!iJjUFYDb0d6i-1`X
+
+RLIXb9ZBN2KK5DaeUZCjPEZ*&B"KUGJddSY1"Fk!Ek9#qJPSTF%59m"e+6XH0!)I
+
+BAHJhfA-k$@NjVa%YjbZKhAcP4Q$KRH"bGJ-h&Z2'3AZCMqpM`)Qp#PV-%i#A6X3
+
+GHc9q[aUDcccS2&qcVmcN()&R%AEKT1QSZ4ar8Iq*#,bKd&-fl[MaLb[MUXRXJLD
+
+c@rLcQ2FD`3A"%VkPrhT6BXlZ*D"2`LkVrpA!lZ%E114J,hklqj+ZCja#(Q-jka(
+
+ILFHLFRI'-Lp1(4#eG$(cDFC(p)(!@f*6GjqUZ!j[MAmV5ZRZa$cqG[HQ5qpcj$l
+
+*YfZ8#l2pCAhYdl6P)H)$GZ1'j0%lF$k#aDbr*9(S!l9HRA!"Q1H!jQrr$JN(RJZ
+
+1Yl+UTXK3$m*Yl+qE&rhAH$X6qh#S*qKB'Kq'rJ#rG8D2#NDNYQUIr[#YM)rN0RX
+
+h-,a4-4PiSlrR@`FFfb9cVHAp)'q%1Uh1(V"[p#RmTV[,EKH8HhZlk&(pIAK1$r(
+
+56Jc8(YL,jhVVh`fGfb1b!kB"0FjS'A-Qqc3B1[r86CQ9`N6'T`#l+HISX%l-ia9
+
+GRhGc@TPrdfpALjkG@-IUqcePi1BRGbBi`BcJL9d0l39rUhb!ap'p9A34JabGF(1
+
+BFdFZq!VU%hXjZV(X+i8kT3kAPqDaP)FqRM8+e$(GFYNAfrK0i$VQj[IcdH"S8hb
+
+dHbHm%cNpD"'jEq$9)TK"42Q[D,5AHC66bqd"aVqTIP)mjFriRS$hbB61S5l*TDh
+
+mIlLdZ("TfjbEhb,Ficqbpp)3VmEpfEmhBf6I8R[MlCXhVahX&k$cfVRPAl,J0Ar
+
+-QU`qA[2(`[NHi69eGhl1AM2!!Z,K40cQm0S3[`KXZjhkN!!lkH16rTYEipj(Zl1
+
+#5He1Z[X#2G$6"j-eC2l+brq)1FqBj`VQ(*dfG@3HGEV$a+$JHkUC(c,0J("I4r&
+
+`@Zr)AYL[B@4hTr5HJ[I3qcqGlkGqZjE[K0ebp(m*ie[H"rq@r*6a+Qj*"QVNB&B
+
+&8ZYLjJeY9U*9--ep)AiAk9bT[CFG%``J0reBeMlS,EqBGfAJPN1cA*'kjDNjbJh
+
+NEC4De(lIJ6XB*TdJG,#0CLVU9E#H#[I40%Tm0eRIF9GbkC[cDNM06Zk6DU0UK![
+
+$AE6H8HI*VB3PBZCUeSe94)fr+Pj%p`K[Jlh+Eh0QUUAV!(rXhp0Ya&HNH!EZX*Z
+
+[HUhJYpd5H''mQI&rAir3Z*(Ii%jCAIN',+2B$&Sld8iI)hJLe@[--dliMZ(q-91
+
+j04irEh-J$i+h-HE(qfB"rGNND&+Kmkk-3MYUXqrh@SMrkRCa,qU6f,DS1-KhM(T
+
+Ql%3MF`'FHFQGYKf&,`Tl"kqc(6-[P"VAL$CV+@i,00$3hMZHhmGm$JqDhmf8,Mm
+
+iVaMM1FApi"AfkiI!)I`KBdr-234HY9,Q(KEY%ASM[NXmc(rcYZ*hH6jZr@X)jm$
+
+I`Fhj6QKP2NYc%riqAcL1[a0-lpfkA481MU0@!AZ43pLq9pGL2HYY-KdLr82X(6#
+
+9``Q#(jhQ"IKSZIB%V2TciQ`pRp+8*ZV8F[XjmE$`C[)imEqX5h`apreCU2BJTE0
+
+*qH6S,$`Fm4$M"H#)%c#AR)4Zk2%+`Y#SI`VQ)$Z2rRQIf6r`jmm)CmPp"JjrJ'p
+
+1Kb&YPTYP@Yq&@@jKM3EZb$,Z!9S1e&LXXq31"KNr'1BPrN@Y9VVcZ#[8LP0r4Za
+
+![%%1AA#%m#dHrX3pm2$U&XIrYLLThHVP-P+e92rJlGPMP6Sle5QiHk&kMkM1&$G
+
+MLr$rIYhmIpMPlr2mr9Ur2*Um+r'6YbE+HThqRE8DiZQUGf6(iRqi!AXC(hVhk-!
+
+GfN(i9Zi3qPedFJEBbae[pIcF(INamq1i)p$5rd2I56jG2-fUl6lQ&F"pl')GKr!
+
+jdjJMU,DrceJ)ElImFJGNIh3HST9%Vh@*HIe$fDrVqI2k%Gp@QaIh32!9CUAp0m-
+
+iD!Ec*!AJj00k31K!IcVJp)9[j$bNAQAAAr6*,[ed9d,(0)he"F,Y@%h@+ihDIaZ
+
+*CBG1cN4daTM*Up&A2-N2L5F4Hl$lKERmBV[FX9pX2F("r'+MhQeS1Vr,Q"lFB*G
+
+L3G%(Nk11QEQ-9iaMpGl[aeY6@DI5KlF#Y(-(kUh%Eq0@LT0lV"b#l-Y2YZLqd'2
+
+Cr+KlpSXHFDVkI3cS%Ar)hR$BLa04[`@qPB)[A8qfPkCAR5)q(-*0kj[p-jh#(,9
+
+Kh95I@eQ[FN[Veh#VIZ*2kAcY[I#eQ!0mpVBI%UlVamc0J#1Af8'lc(ipIj&5m[b
+
+qa5`5Icre2NcaP!RDAG[*5X`PKArKVjX`Sahq-HBaV"'b[T4hmhN#DSXLp!Bh42A
+
+M+Dl9ifEm'pF)ESkq@!2mBNaRSrbLif'-dr&[Ml`9Vb+[0laAA20SpSPl"(fFKbN
+
+pI4aZdlGjRQj'2LjlNVJ+Qp16m!0iT-qpJq#%2Cj80#6B,IcfDcqbkB6qj(,a0aM
+
+3Rl!2H6pGq*IRY6r@Kr"KQ%@&B*E(a0HMArYMY3cM2*+TFiXb[pYrakN$XVH9qVE
+
+#d330lUA6H2eZ,iAR5qqPh!M&"H#k[m8hh@QYBfB@Bq9"2q%(NRLCHV65j&jlr*c
+
+e)2`PF%)1q9iB6LK-h-iIL*i1Y6cpNpb,Rap@2AF!ZUIQVLYe*N%[lebUr`V-,Xc
+
+mZh#8jirShjf(!IVapHrk[6Z"ZAmHSIl!pDp*[TP&Ep$E+aMIH[U*5TjA(qHkaER
+
+rd1pYDdlcplqrJ,0hp801$FaXBVRpjqaRe(r$8[[`Xji%eVl!pD2$ZeEH4I+rUXH
+
+Y!NHK2KZh`!rIkA%0IaKr8U9B+jE8F93ThLY)hV5BlJAe9h,6d+rd*ES[eXHHk4j
+
+2C[a[Zj2VkRa6f-YQil4ShQam(I(hK&Y*kiJ9Bhr$`GMZaJLIMHq0`2Cpf2YlV&R
+
+!EQF"3bdjL@'L53cM[(D!BEiKr-qK@ckd%p5lk1b!(hmJZL-I+q4L*r8q$Yq6h`Z
+
+!dAU)2p1pEHGpU&+F@PAQb@22#HZ$RPGjL9[C`rH!0m-b'QaR(a*kDcA&$SPZpKP
+
+AAi%CE'$p9e-hj3(JcIEeArEQrp*r$GIfp9p(Hd[V[l$M3r9LCUESJa82`0qLJ['
+
+0l@5TFkIm'l4CkZhAXJ0,9!JIbpUf*qRkHRmf1ri(aqRYqUCcZm!lK*hlN!"i%$Z
+
+hi"hFFHJ'qEHP90q@m!hLI0M$REJ[aQr+IIPh[#)DS64H!AH5QlbAa5Qp[1JAP-m
+
+9V10c9IHaTYR(RY[hX4FFpd9dfCelj)BXCEaJp`9l)VI(hMl&R*kqhGjliLipT4j
+
+!mVD0ETV,`l$r2Qj2DR5#N55R@b3j)(BRG-l#lGl((T6qRGa1ATI-eM$JMb"lfj'
+
+(0lGK$k#$lp1p`E-e'(6pkG$[cL6q*Gm%VZG0M[iKV8(K$8pV23lS,&"EHY1lQPc
+
+(r*,c2JRm[H[jKEG1Hf&mfCYBrd32'(!#GEbAUIIX9I(P4eQhT,0,&Y*FUFXR9il
+
+qe1p(p2LPM0Hi+`l6Jp2ETVF!2K-E@B2Slp2$He)k21%b-&[8JYjV)mr8qD$%c"A
+
++riRA8bqAB6fiI3`R0B@LcEGqC)C1IiPqK#YjJ4YjQ,Pqa8X2CqXFj*lVVS9FEab
+
+mNeZKli+E6RM$"0HGf,X5eJ`C$TSPIIfjD)Ta5rcq(pVLH"6jA-V$MbRqJ#rf(iM
+
+rD9S,kZ'1EcVkMeGJclU6@JPLD-I,P#4l%5h)5#qL'fF[(LH,2Q,QQikHN!$I`h`
+
+[6"2BKlR1%`ieTHIVem1DrP[m)X+Ulr3d+pM*&@iq$Vd2d'KmP6N2m$@*T#l3jHF
+
+!l[JUDlV`[T&Q6fa,V40VSHImVQ+(ThL+qFV#XkRqYZRbjPbq&H5Jm#BkSR2eGZG
+
+RK,9lmCbr5qIaIJr[NR),ZTFrbj,G,a,qaRN3q6iEH8NrNU)NpSU#Fbj)FJFjK0A
+
+J#D#F`h-p&#Gl+$MC3bidG#[S1rT`ZUjpAM"f8kRVJlCk!hZ81Bqa0%q9fYh0LCj
+
+rY,r-A+EC4i6(TbDPeqHEm`+f%(iTc4RJ"XEBZaEeS%9`hQ(T@FL0!XG$rTXe6N&
+
+0F#%Kejq1hqhY"1TRhMFreaDEaAVZl"RI0*lB$0aVd6["!`feiQI"`m62#B#EXi%
+
+e(qL4RS3aIYmZXjL5U!00kTGCd`Tp!l'GhBXY@a2hi9ca3MP`(cBjqNrFKbeKiC+
+
+qbEFja8[Q1[`!HNc!+fhPGq#,P[C+3cRej8pPrK"r3(VqJDZ,H9jK2aR*`r"&h*0
+
+2i@l+I[p!12"4[d(V4hhq*E1-H!iUV[QTH2fM9qkCqNPk'8Z!rqjKr-FESPN`NZ,
+
+6h0%G89hdIq[l*i`9RqrEj4+a[RY%Si"lprrV@rL#jrVqNU1RGhfVcdT(0h[VrrH
+
+qYbImAiIlG[PRV1qp`U0fG!Iq5pqp13kkXM@AMQ3jF$SMMiG@2%"[)(Q,ZIMl6hh
+
++[VQXGrBrXRlBcB#cch1`[5ZH2C+6CETp*180#Qr&["Jb%(3Zkkl&E0D)(j,G-md
+
+V)EkZeVrcTYbGe153!&rMcBY'DLr)`Md-F6iDr0AEZ)haQ2NKdl26EZBfjN[iMRl
+
+(iM92RFJ-!arpRc#2EGc4mHAfNq`0EVh(NlfAV[maDL4T(lY+Sh[8elSMcTlj-61
+
+IX31r%HXbSi$-S2G'IjGR$FjP&Rm2rLI@m(2fq[eKdAaV2SfDlf*rAXK'd89C"*L
+
+0`Xh)B4PNQINLll4iN@&'TA&JB2MjUVG'MhMGQeHTTip%lS&%V8(qJ1f-qrfGZ&[
+
+iRppQa"LF5fkCjcMcLFlAqm9HdVF$HpDj,$k1EJDp31G[HVNYpLE2GKClch1rK$G
+
+DP-SD84A$RF$-CbNhU9S*h!5l!F`fNUrm95&kb*FG,A+iN9c('pGmF*H5*rI"[E6
+
+-,0kY`blKhR&QDfNRdBI$6X)Mf&i8i(E"&qKKm3MfpZdZeVpL"Jfi&Fe5GipJ"lY
+
+K8T[mR0c3Xe`[#0kVfhF6ai2CafQA(fEH+p@EkH*Hb0h5khQXpi2BQ6PCp&i1qKN
+
+2eXb4QMem8hpENrNp@&0bX[bf*Rfd@I1!lc4`5IB[mr[36pfrMAXPe`aff(b-#a8
+
+VJ!2Ca[M6hk8[X%C&Y2MF`q!E`UNH[@e"c3j$Af0Nad$qL1DB&pP"TXE(ifENBLE
+
+,NlNcZKK6)1q!j*kB#pm)[2AppT%$kL&J1IVVKLE*VS[I2RB!ld4Va,H"je`I1XH
+
+laX`8eTBS9r`T9rmAmrb%qD'8$khRBq[kGfmaqeh&b-fMRXb[Bhl%q0(&#9rrQEb
+
+ANKfR,i0+2HA#!4HMAV6'(9Q[&8iH$1hYTkj'6Vharmla'3ld)YF!GUjZ2IV$2*V
+
+*rdKakpmkHB[8T`jcK(HQq2*`&TSP)C!!YCjiHEbeH4BNp[e(M,rpIIqmk2rpr@l
+
+m,REjK9a4#mI&ZZ+CK!-`4fq2Q"r%bqHJHCpd4UL"'FQ06Yhkh2A`1HGEUj@HNA!
+
+NU4RT6Mprhh%2FjalL'qj)lHa0pq4F3MLeIdJhlCqMS"D9ml-F2B24ZE@Kl0r+2I
+
+FQp0D[JPkHm!RpZ,NViZ[2Eq&TJVH%(cm)12@8IjK`&-GR[F0Y(H5BF&KB,N"6lf
+
+&Il&MXRrdZ&BmrqH1hb!dikq62"YH$U66j9DLPjMj&Z0XZ9&"d95NpK2iDk[N#2,
+
+QrTqBSj!!c!cT(6hNVHlbh64eNiDP,bm+XPJ4Zh!I-F-LcH*8),L`32-[b6d@M!*
+
+H`18D1S"0lRl*2ZMXIrPm`V&G3I"BFi&,UZ$,M(``d)B2cU%$FbL86"6L[BpqZjc
+
+[m1NQKerJq-)cKiAi!3SZZ5Z4ddGb0BbAA!VD`f+Ci`m%2r4c4-+RifkJ2fB$JaI
+
+Kq*422[1kb([HPF@Gb#AaD5HAa(M*(J'-&&pq39B8Ea0i'c2l@-0UFmY&A`95le6
+
+'K1#F!c(iTZ0G0Vm,(R*m@i@EXcY#Vm"+QVPk3cl123PZ)Fi8,@f3!'qK`jMqEYi
+
+YYi5qrmM(8[F`FMam9R*6G50E"Me0`81Xj(aI`@-mke*i0!'cZS`XKETMd4#d!jD
+
+2CVfEf5B`Nqr"lCMMl66(mCl#4l([SrM81%cGIGi"fIrNeRI[%(,,G0k+rD"f&rZ
+
+"Qm6lKe[lZ'L,$Zr)BmaYp1e)J1HlIdI@#FCqH8FH&hpZD-dGIp*hQhr!qqEIj[q
+
+G1EcE-FIE-FGdEU8$1-rc9ep)2-mk"cr!Fb#+RQbf[q6G9"b4G,-fQAiLRG8#Z4D
+
+Jkp"F#a%hSp,c(,2e[9kaMAK)S9m["p4JMij6GIdGjV$lqf-q&rERj6Rl[rYcR[Y
+
+h)U-(I0f"di6ELjPjiL2"1i"qK(YSkPj8jMhAe3T+*JhX[[3CR-Zc-"rlh+)Yd-a
+
+qaQ5jRRAk,UGS#hVj$1i$EJ,phd92*(MY3GCZa@XbVX$I'q!(#ZbAH8@KclD9(j3
+
+F"p$I,DHHeHGh#R0e(MHL[-A3$X5)Sb%h!dp4pY8'IeVK,,cm&H"[C&I@Hl1*Uk'
+
+1cmY(%[KceP8+hcL%$G-hQ[Qc*Q#A3ScA9hEFpA`EjAXSMhU*IfXYYhqI1Fe1j1j
+
+a'Dl32h,J6"8r9fC5iEiTMi*pbf8qdIDY&CKh6*RRKic6Q*Q&H6ckX2ehh9`2HNG
+
+A#mq0Zi[jVN'GE'6q#B53!#Q#plhmZp$fbBhr#@-$BRA(pFK[c-(2QJ8XSAfd++H
+
+3!-FCA),rcXd)JVHej0r-fal[1,a0GZdVV2'`ABYJ&r+3!!mK'*Q)I8i!mj!!2pZ
+
+U-k%f6AL)EcMmi3[hAZm906RrlHjXFA1G&%f3!&X$IX6P1XLRl!M+IH5VVr%2*@2
+
+AdAZ+ZA3qZ(DlFNfiA6Z)SeQ(rD2Zb1d#pVk5GA+B1I)j2FSD(1Drd*Xk@6`(,+X
+
+@p!#j43pK[LX`AqGha[PLVXA2B,jIaRaRRTV[pq@1%r1%,Q3G0QGYQF4`3bIc2I*
+
+R[jAj4Y4IK'rLhi*[LIqlApmAAB9Q8pZ(Xp#Mbq1AfVAAUXCPUhK,Mh!bUHa4e0L
+
+KejqU4ZNEM"erP42-FRTpPRGN-#GB[U0Tm([FcM[akdaV0K[*)iAl+MeL0QkQ[jZ
+
+0D'+2c-Ckh-kCYIiY2jMV%el*`NG)RjBKEYL[1mbj23jPFh6j)MSHM"m'Mek%6$J
+
+VN!$GD6PbiF54"iIm45&b2!8kRqjHerNJXPieGCF",l8L*mjfC,mU`8b3!0YU`AC
+
+SB,*CDi8F1B+TlqaH`[VqMZifm8!lLrP)a4f[C9d$hVC)cDjQ4lmHmiUrIFaM-bG
+
++h3V[drcG'H()QMrD4RNeN!"9*3%XXP2IN[[-L0bhH9XNMKV08S2D`IJ%pXRC6R9
+
++[r!Kh+S64BF)c@[T&mBH`hIeBB42*lirJZr+Td#Ab(`f6[X&IU'%GT4ekHQCHNF
+
+I(+QI3%elPieH)p3$-0[Cp!iiA,NFH"KiHS!%0#Vk9Rf1c'-MpEj-hfX1N!$8Hm(
+
+!j)fC[`8eq"Bpjj4jca0[4Y1pD5r`MQb+NiH#p`lmA[cQhF&2J%I+LY4Bfi"[L"I
+
+ci8m4K*m)r*[8jj!!qL(df(Ub9JJkDYB+D5hCDkY9PDS&VI#cd!T2iRR#q`*qhPl
+
+q11iYHSK)$hQmPhahqBZS(dIpq4GXfiim)rL@(HR)RJE1)!rIaZUl+,j&p0X%I![
+
+VYe-L(326($aD4[S`q,#5kd1@5-@1b0""2!AXEPVY%d8()$Mf",lhm#3)*Mh##Te
+
+D`cFfa$IfK4TkKhQAZ"raQS&TXTXp%H`Y20#rVYjEHm6(UD-lQre)2[JKH+0rR6P
+
+2D"Z8[q[S(Up[iBRqGHC8m&CiGYcH4r6Y$V`9r)LhQVqJScZNEj&Kkq[-!H#YHZj
+
+dG*ISffeiDak*cc*h5mfd[Gf#Yk+4`&[0X0E4c4P5m"CFaYHC8m*E`DMd4X%lj)l
+
+CT,jicr*G4meDVENDEfA[A@Bfc'q2[Pf1YqDpqicN3ZPBbek+H![2YdfD2H3Ca4%
+
+,1'-RhL+lebEf3mGEdCc35`E[i"@rLINp[*0p@Vb5hm&MIT2kA$h$("0k%FpL[%@
+
+HJ8hXBiHhUVRSk#l9Yr#Shm4h$fr9Fl'M1qjN9,2m#mY3"aVZqhAqcmMmm3jh4Vf
+
+J1lUMkJ-M@3e%bbrhq9l4YAGdpfLrZ*(hXri'[X$5$piZdEIJ[1lRHRJVqi5h1Ib
+
+@'&ed!#H)$bmmBlehdZF*M2IaEV(-!IT-B[qra2Z2IkK!12aM*9[6acq8KelKhlD
+
+Cl`P[YF[&KVHlZ9C`[qL5rEIjU)Q-K3q,KNTbMCh!1Jl$EPfKaaNRcC!!qYZBVh6
+
+D4q2rEJ$Q+!HAZ%8elFYN,MQ*$""mmfRcb8MYP'hk9[PVdGCmKIIQmMh)"p$me$6
+
++[)6hLY-95di(4S`,VlCGmNGpm#cS!1rMIB@(XY`6d920p8!ES4iTH#FpiPdBpD"
+
+RZ8r[hfkjIcF$Qmhe`-IiDlVrZlNI[!-q2"DDq+ma[iehdJrHjD!H1*D[mAlKRI5
+
+$Gp"l(%Ypf2iraIhJA4lUX3rKC2"1qX%ll0bad'4m6Hrr8i)IE`Er-pH$1Af0laA
+
+H56piKlh14UDfVl%[%0j*2hKAL(V!4epMRJ,[T"qm+d+phAKRpqmTlJI[LP%2Hl1
+
+4lcAH56pi9i*k`$JEe52J+Hi(ldT4V`$[K$r#1qN(lbT3$pKQSplr*lNI[+Y%2@J
+
+a0[)Y`6[T"qqU8!piCk0k4$l*rH"G$2@+m%jf'ZqN(lbV36hJR)f-qr"1qX'l@Y5
+
+$ap&'a6p2FMpi9iGkd)YYC"iAlk3I[+Y(2IJTE952K#Hj(laV3$eS*1jP[)ChdJr
+
+H0D)HE[@pM2Ia6[V"ZfE83ekjHaQ[i*hdJhHc8!qHd[FUrY2-6AMAJRV)ZR3[ia@
+
+m8rlJCZK'jRU!%qj9r21%i*qE64MeJ,AZ9IccK1#IQk%rQqY"AVTl&Imm`IhJ(6"
+
+T0[,4hD[hl`RRrL93$hMQAVer6cMhV`[eN!$&lPkpIdmipkmEpH#4me@pIjU,"Hm
+
+@SGjL[,2lpi4craDM(R$99rAq2H(F[b@S"ech9EerZjclYa6e`)9p9HrI,ZIq!AG
+
+P3bIc9EerZjclYaceJ1QqU[G[Ph2r9U!HX-KApIlYFZlI5Y4$rSL[k[hEjGbr9DM
+
+ALRGfrhBjpfmekL%hhPIdrZeblYmDe%0f[DrSrG[Ph,qeU0H-GhErGMRhEahUmCh
+
+G[mHGqlFHpGL(hEr(RIZh!I8`ekrSrA[FZAmE83ripLYkrajhlYmQe-1HI8A[hq2
+
+1rAX!p6$AVcJHbHlqE8Bph)Q[k2elh,Pr@e#2HJ'lIimlpfmVkZ&ZEG$lplKcrlD
+
+K([CXJpkrajhlYaheF%Fhk2elh,Prb&F4"'lIS2I[-HIq2B*k`!%Ep2ipjYbrRDL
+
+([GqJpqmajrlY3MhJNJekrajclPmYq3h3Mk62ZqGBhYZ"Gi0C5%,-ql!(qX6hpD"
+
+DmIjhcrF3LB+2k1XK@hLErRH(jp#dpZMErQrCiZFfq2E`2*Uk+I2$3#qL$4Pk1pS
+
+,Xb-`Ua2iK9Mb'lfdAS&[NV24jB&#ImVAGh4[9&jN&RfM4`qq-fIB)qrj[[6QQHd
+
+U)Lf(CI8U[[QKc*NGVa![+(VV["QX@cMQ9FTIN[)Tf&(m12L!Nhh(+8[PN!$qGpk
+
+8DlLIb`U$RjL"q4H$ArM3EFDdhjB4EVpi@GEUJU1XYlYXh-*ClH1@YEAIFdeE+!i
+
+IHhV2*Hbp-k+qij''QYq*e&3IL058CClf2V(XDr3qD4M*m,G"2'Fe'pKG#Ch"(AJ
+
+R(%qfF"HHePCceac@Nr9RA8-fjLKdm3A3AKA5$#B&MIGHD"q8Xlq,lrJNF$2YH!2
+
+G961dmSh)c%b["FX*r5AQ&6NAFNbBe5ci(JKRk-hK5$jSjMN6(Fj$TSSb%SSq!Ra
+
+5+E3%jJ-K(+eS91K6)EV[([%T34hZ1MM,B[$2ZC`2$Rb3!1l$-Ba,UDda6jJ$YqZ
+
+JTMLPMhBjd,"lp29#rjUVPENJfI[m9i*dD`T*m`%00IeU6CmpLh8!,TG6k[CXF65
+
+qRJl`N!"@1q9a9!ir&HkUhS"-pEm9,rT+k6Q6llqp+5,01HGQh(B9khbCHd4d`'1
+
+FM&dal8Ii3FX4E62-C0c@R`dLMfBY@MqT1dXi`k0H2r6md(h5HpHrMm`fjc,+QCC
+
+9pPei8X`#HqrPLXB1E6fe3jC0lX8-dbkV,c,E@AC8bFALFYJZPGrV',GEaV59T%(
+
+NlMM[JCMjBp&V@9jFh!60Y@aFU15B0Gq4G2CJdqB9*piqbaS1jm8Mf3MPh4lQq2P
+
+1Xaf1j2leY(DU%A9k1jFCaXZ(k1NbAbGH$H)6m$fHQ@L*U@F-[[Q"IXlA6A9aML(
+
+F[M$lUh9HH#Ilbq)fi-dLc8!!ENUc0CU(q%CkClilm+lrU'S41ZNl-QirUaPANla
+
+hShiQ,r42[1Re$kkaN!!jJplqaFprQD-ChGIM&h2X3dlq0p(e6iLA89C'j%*$"PE
+
+SZqq*lF%-9VUqK8dadN)95Fq25Rj+[Z[S,T)hkJF0E`6MIAl1I!@bZ*KAPTZrDKZ
+
+iLh*MJj+c#YQ83r"S!jE'Qe#!Z5IEl4+jHkm6Ri,2ZcVfVC+4m56Z8lqG,KUk+pJ
+
+,,Tpm"Fl&0pNGfBFI5cEXZi"GbH2$@lGEr"l8hmkqSHFZk'Id4R`-2,KiE'afq$c
+
+aPpUIU6%cT8Qf6)fhm4e2p9A%0dJmKKlL@FPZiDr62eAEpc%1mHF5L,*2UQ#8He,
+
+jabbc`HfDr3DjSa+5%4ae[2e"r8Dm1dEITE0J%ara9KjAEQp`r9fUlGrLQm&[5c%
+
+$Qi2c-SDhGFp"jbhZ[@3-V,ClQGq`A,hehm9YqBfZF"&c@B1k3XQCM&[@q0qb#0X
+
+Y`peUa"fE"Ck%IQ+VD-rbN3-AHSQL-Xm1`6()NdFr"r6B`2Nhk61,1[JGARq,k$I
+
++hm"Gr&[0PiGGTkllpL(D&FN((i"ZZ!#F5J(Vm9$Ep(KE8RP5*&pHralBl,GLpKA
+
+iaRb,&5GcG#l&c@FZB0i&qRLi2!Kah$YQNiT1I`Mild[3A5+[&I4UGF6$j-FaBlb
+
+,VlA1MIMa,J'Y!A"X[+BS%lYI%(NSphFL$qFFL04PRmelMlj9rjZd)r!SabhVU4I
+
+GRI6XqJG'5HJX#fKqEPDP9Ff5N4&e$Q"Ib5AH4GPj"IqL$me2kMcE&"1(`A1%'Dm
+
+R1,HJk)R0+jGH,,RN,6H%dGUYH,0UIiXkN6ZM(Eh%abhQ2T!!ac+h!$R`fBINXF6
+
+haFNmP[em&2-leP(',2&kYQcXQ*GUS*rhQKUXRjHX,ljMrlQqim&BAlQP)Gb@pK0
+
+m'2N%liRhd*jj2QV%d1VKETaDK'IKCIIc-E1Af`rk+UGr"[ji@VcH4[N&bidSrGm
+
+CVq@XINha4QKXkDd$2BE$2NRQc6[K8q6me9,H[0Z52RTYZ!8jQKGV&Xf)@M2XIKl
+
+qjZ1[q1RK(IerkIRUXYCPmpf'Mc0pq&!([UGGLk&2erN60kL2+A&HK1kmC3dR"ec
+
+!QI@(mKm1j[8XV5SL[1llA+5bHZ+hm*4(X3ReQF3NiP9($$X2pkqMZd"p@c'M8"P
+
+aBq"$4,GJ'5X5a0PSMVp5qYkU1IrJB5FjraU*CfL-EqFHm,dfj6Z0ljAiATRmATc
+
++Ii$[hIJH6AjIVAN"`@N%0dUf4p8pfXeJhQ2b9'(N23l$LpCb(fB)YPV'ALh`D&E
+
+GBkSQ-jN-e&3YVYC%MSKR@2HK0B18Bj-qXUQDe+KPX)D#0Fd(NRA6fI%eMr+qAN1
+
+XS@(G6TTI8rFQH&m%N!!&NMa"&IP(R!Zp'hJjik5HdIa8eY0mp10Z5F,*S4`5EdR
+
+dj(+'!RFeidkX3Bp4h,fmIqM[k44I1YUIB)"dIq$Del)r'[f9NI16[KMQ1j)EiSb
+
+m`UrQRXDHkDc6`-J*h1`iERB0X()YF%3GDpmIMQrNA)ehaYY`UjB42XD-F(q#8EU
+
+e`J0c6[$D,+R"V81Z1XYSNpd,2Nrm&Y4l-qciF%TZ5[%5$R)f&IC3@Y-16Qi9lhY
+
++8eNDh3R0c%HG,'Z[P,a8Dj(,Q&TRID1qL-c(S[2HiIJj#(iBQK&mYE`CB4E1%d*
+
+Q4#brRQp*MG1(kLPr0Zerpb)kD04N,pJ(R6[mNG",DFh%8ZD1S0qhE)b5Z56Qf5C
+
+BNc2&fp[Kdm3HiZdAC0%1d4GX0,Idh8rCr@lQq!RG"GMR0Z$"@Z`fphNCpMRHpA4
+
+m%IX(0X9CLk[l(!S*PrX8Fh0kKd,%GB3j4c'a3,Xh#pmP9i"LJa$jH`I)8`mFX2N
+
+F"JH3!-rCH1'RQ,HbqlhN4#r"q)PHJQ(klRaec2-1@Y$J%YS*IV1Hd[NAIrm"&SU
+
+Ga%,)INiXa#`Zb-Q!c2ENbiJVJG&NrRJM(*Up8CihcYlRlSh$eCarqThJ*@E$lac
+
+Npj+0p&aJ&Z&lr6UD[6@*qdqG!(JGi)XYU"Z0$6%r09TA[3ZX,R$$9XSM*[IXcj,
+
+h$2jBhMf$cNVZQG`Uh$1A@a)pk4hV)Fe"ik1i13HcI!)cGbb,em*$B`RZ6M(iJ6E
+
+b)%+HmZ)ZF$EY$mBEiEQaV22Tq',FT,BeQ9h3`IKhLES0k!@&Se@1-V*IHA4`M*C
+
+KhI1ML,#2UQBSl9B10!*pjip&ScEGE(&mPC!!`9Qc`RA%1B-PF(d&I$`+fFH$hjM
+
+CQ&J4YBT'i6iL+qT!*PkA%B[m)E-qifd,CIh'f`EbBH"ZcGqpRI3ac,+a,pXDlL3
+
+e(mVGBqq4Jb)l"VmccD@G2"*l!Gq%*dRZQIQDmDaj,3-CV8@cYH+Nrp95fKIXZ-k
+
+j+GB[he9IJHpEpEYk##!lUAeA$Ae6E,pq9keq8fa![k[2Mq9am$`8QQ+(pEYQB@Z
+
++(G([JRraAI4hq+imIe2XQ(jA6r!QC*I3lkV9Yb`3q+lHp*Dp'GpPlh%2k"R2lqC
+
+E#Dp@rDiH%Nh`UY6[0Rri9FVhCh6qm*c@lcCrc52TmPcLqf,pV[-A,lKRj*kEA`'
+
+q+rDd()ZHKd*6I+pq9`q*TVMZeM1U4H`DdZqLbE6l%(AZ3laQqc5m&5e1rij[)ea
+
+)$ErFfRC6@LcD$XPAK#a+PTp2p9AkjKQHIrPGb*H%fT)j'h@"$aiSCVm`VlCJN!#
+
+qfNm,lhkc2Hc8"NEBA2bUqM!+4r%%D`A-LbHJ1E+)ClFREcEZeCJLZBI"S-`l'##
+
+1bjrjAf8ae`,q#leYMG&YK*CIp*4H6r#NdMIjP2dM2SVIV%aPKXGhhVe8pT!!-,h
+
+TSYcYAZdqI49j&GE+jLcLUJ[,PMcS[4UeVAV2XiZ"GI#fa-NE6rk$r4MA32a'haC
+
+UEFf(#pJE091hZq$%A[F-dRa`Ub[ri#8c#jc1!m@[!Grr2E$#YI!V"qD#rM%3qV,
+
+aGmbr)+YiY[(-r!hQITCbCJ0[EZ$L`(X#Xc%$#M4V`5MbQfH!%k1(E8ib4e21HQ5
+
+jK*qMj$@-Ij5c@qE30m%2r'dFUZV-GLV@qMd*q*V[drJDQ3i%Ac12r!Vfk*@Cr%*
+
+Z-E4mpPe[-AG2[mXYPYc`rK[")ThSSI0[C9GG&Q$*YUme4"2MBqNJCIEELTV4',M
+
+QNCUD#m$(hmMDQMaBM$e$[Cdc-m&GdSH&HiRIhLiLki(cTlHEQNdh&,Fd0jN&QIQ
+
+bFT1jHR2CmiJlr"fRrhp5rN2fK2Z8hTpLl#@cD5%(@LKE[c1r((1a-@YRY-bcaFR
+
+M+jJ8hp@$#LhKZmXl5fif-"dk%ZLDRIi#fGG@5"C#cFJAL)&MeaZhYhlQDlBY0`l
+
+I%mH,J!HBh3a0APM8ffN20L*[aH*Um!XGmBepIP2BPf-2$RR)0a[I6c2M)+@CMEq
+
+Rp(ZJ,d#GZ!q(!lbRkGI%Xd8bf&+R!ZcZmD+iBDRh`KZjldGQ8(*b"VR[cJ$HkXJ
+
+9+$MB0&*eKCRQF[4H-c),H&%lIJ(IA(jEF"6cjAEjRPNZ"a!iL[RXl3-1CG%TVIG
+
+3TQc@6fYcF![8fp,A3Kh-M`hHK9U-06+64eQ2Kqc-h*&k`Q,ml6K6je'UR20b`H$
+
+iMRj&ZfEC65Y%1l&F-$LqilhQQ4rdSd`m(DpY$mbPr'Y[*(eNqb6X`cLq0C@GhG"
+
+C,c+Cpq,hT'L4Z4FDRARVPVAKGpkpBmair)lLE`lqjXj!cG+ra1h0C!jV(EbTZqk
+
+&YSFpYR[MFHL!QM[4S06[PVXr+@VEP-(FXTMRh(Xe[Pf-@jI&q'cl1aT,bC[UY%f
+
+ilbj$FqpqHATmbb%3lmJ)`p-I(VLh8TlQ&HUcZ+EM&IEeb8)[QLq!(,KbDN(#"ZC
+
+,54mdFRHmeD+hSaHPCB$JV@[$(,CT,p3SdlYIEa,cU3V(MVZXhYmaV611-a[`EF)
+
+Hj#`MIKD'L0E+eeUCc!ASfk"6*p&eplL%(J@hN[cJM0`$NBHQC[AL'fY!5rBpeC,
+
+P1,0&hCaNh3KaL3Gc%GMqL-IRTl"$m0M$[9S&(3)c)U`4Ih0S"ISm+KG$3e%)R4e
+
+jJ5l-X)f`XH8q+d!0CQlb-M84qmq`39XNbIFcN!#Y-eIYXf@e*[BUMQ'(N!$"3h)
+
+BYA2QPCbL'0lIB6+r$Yj$0*A!pq`hjRQBI3F-5rfkGQkbYRSkT@E)AA+j`[Sp,GP
+
+22ZpMbY2b%r!2B%r8&9K2UKr@A"ML%b#i$RNUU)%5VJ#rC6BGhEAdT[JKp!+2C-j
+
+RG$rlFm96+mJF"3Ip)Y2H#VGj6#&m&BV[R@1Q1h[ZjBd(EZ&qGq)fP$pJi0m5G1l
+
+EkC6pVacHUhb,IQIa(L%6a4pM6YMK'l61kjhFlZ5lU6XBV0@QYHD`RN5eQC+&#jN
+
+%0*H"Uqpl1F#6*U)jHB1,Y(iVja!r@PpflkGm[me6A6*bD%qCc$qLjZjNRm*jiXe
+
+flE-0I9Dk2DNf2YHT"pj)IA5"#mk&YL5p$qJ9H@'K18fBI+dP2%QUY[%NJ6EYY3'
+
+p0VbrApHT2f1@eRGC5dVCde(Ib2a523THl*qCCLdDk4-k!RU"0l[j3i!r`H9UMJE
+
+9Y@ZQNSiiHkJFa"&19fGCkFXAi#m`CDI&RZ5VLZQqQZqmlZP202qSl'NVq9H3!!1
+
+%Tk,Uch8Hp6hJqNb$A-0q`0$Mq&RS!kc(d,k5@i5MfF2iqJrZ)Le,XKGcSdpS@0q
+
+kR"2$HUafHjml3mbk$(U%mSA)Z20`I$[d%pXa4hKF,Q4H)fBHCNe('I4549RU6dH
+
+YP2CTf[[`2[9L,X61[N[H2X2m,ljIUGp0ParHiRVRNrpP6@M"BfD,H!DJ6r5AVIe
+
+CGT!!F$0TfC!!T8jpQV(AFelKM(DF4Bl8HTEVSeB9r'pbb2p'-#djNdq!5kAH!Kj
+
+[b++Nf4Q%5rLTH0GVcmB$DLi(D2lfY,l#1eZCQ1R6NPm5A'IT$YYQ[fCjThiPrUb
+
+IC[i-2D`YR%KjNi*q`YqGhmAZPd2r5PprD1E,XGrLpA(b2Xi*Abjj"#,d$VhFV,d
+
+S(jl,[X)9h2YDpJF)I(a'LM2X8Fk3!0l51kJrf`[9&-3R$T!!9Ra$C$brc8hXX'S
+
+3d1mmqEkEqC@LFeQEYCXiEY0Z23*Z2E)9pfUeai4kJ(fAHZ#TqJA`ParPI!+6bM`
+
+(*IF&H4hYcE+cKVBA6U5-8()I*QLIQR2j%ii25JEV6e'V#lA'DUdbVD@D$Eq@jC-
+
+1,CBj#EmQR[9f8hJA#R9r,*0!U*!!-Z#*ChIJGbA$#1Ta*pdq!JFbVdJ4[QIaIJ+
+
+6b$jL,l%(dFKijNLB08+dEr)QBi#j"fE*da[e%1-AmhJT8GiP5VFF@#[BiqlV8ca
+
+rh9IdN!$`%2HbPHD*ZP9DYeJa@T!!2!V86laElUVj%MRp@kU2)[5abHREpb([6ZA
+
+(bR(U831LG31EHSMhKqF[pKbq"6rN16UZG[rmRT6X#-Y`"a2`Z0-h`M8q0lYE%rl
+
+X@NppK[aC2*!!l-APAfR3IQVFq8Kf8-dcBI0KAYB'VDXj,IE0k`RaL2&lA82C0+@
+
+fG`Xe#aK`8qZM`%L(IABX$e(j,Q"(q!TBKL2HKKShA`4`TI!fICl5`##hXkk'25K
+
+'r$&VMTK6'A8MX4IPcKhbL8RVa((lPNN@XJ@UH9)02(-)-TF*hLrApkB65Tl)Cd*
+
+Z6h`aRREdraArXfI,eR+`jal@23hf,,GmU1Hd*YjmV$E)[[``PAr,F4rSTBHe[5P
+
+H!'mmA[@J9hQ+Gb)(!GlTFEP64hc+,GI("XbbM[39,Xq1INXk@UiA2%45[NRPZ&A
+
+)1X+HeQ+'MA3(b"ASE9*[HQrQc"dKZ[fp[!Z1pp-h2C+h6(1Pj$Qj*I6Y,ZCR6)1
+
+dr*pbeiJRNrT$Q*EZ15e!rciac`cVUKqaHE9M2ZV(Hk32k9fb!'`6c0l4R58D$2@
+
+k(+MVr[CP%3$2Hdpm+lMH&HKRAHK*b5F"$#,j,Y6hHbrM90`@m1*lhH`2k$IUj&d
+
+#ekcCPrbC(I!5XlQY6f5`Z*Ap5K)2aVGbPMV`ec(c&F'cSRIi%HXVR0i"r6%V'1Z
+
+Y50C,k4pqk-`H8'mN-`Npqqk%2mC8k!1S&CL!q9-[%,TlA0I,Ge-''1'3!'+H'`@
+
+$i[CdLbm'qDH0UPq6$(c8l!VIVKK'he&IcAHD@DK&mcNKZr+e`Jelq1j"jQp6[DQ
+
+(@V!bNH(PAhX9EYTbjC,$%!d!02UD-aFq(pBRlPTVXZF#pR)8(B*Q5I9bL!6rm&4
+
+QJ)ChFiJ-C3B)9SURdhi2S4*hTKeabBH9RQG(I'[#*d[[cVpP&J$QJ-G36f(dkEY
+
+a)fk&PdIAMP!eI%q$2a*Z#KT-m5-$$`#YFCeSMB0(+'ppDDHR9[VHb9L-hqL6`$`
+
+rISkIB&r[5jkpiKrp2I&!&-`@l)[LRCm,id0kKi,l6md-cq4IfVG&I53A0X)MS)"
+
+bBY#cKIUhmLGB!eHBZ#([6@3ENK[b!lk2e"%CMLPQ2BMQET&mGIE0FLepArJVPr2
+
+1bfm"V+0q+F2q+leqPc+IYHRjH*R[G6jE'21PjL1CCc!(i5m'mq'*0pj"[cRRLiL
+
+Gi`ai'mM2UdG,6b+h9pr0@5)pImr0IimhfF#2e+21&Bh9)['[j0bNPqmcIi1j56i
+
+YdDN`0jYQ"4&G&[T4IK6p`cqbP1U8)S-&EJCpNj!!BCABk9Eaj9-036EaF$)[jkN
+
+hj,HBdZ*BPTI92'I-KMk3!-DTHKjGhC*"LA2H)h2jEJVrck9m906qTV5&SYpA,mN
+
+YNV-)ICLq0UFBZe`1I`[43h'[C4qqaljVI%GGEF`mQI3$#-5G'@"ri6F2$fMCU6p
+
+QrXUr"GrMHmklNGUTbK-lp9hKANCf+QDkQ5FR[qMYNhPGb1dDdL6dH@RUcH$0P[P
+
+[eZb,FJqT&p+-dB%H4eHd9,PfiB`'Ei[-'Rh)A,cE!Kd$DYI,([b4q%jjHr"Gi3P
+
+XlY`(kd(pqfcfNKI4QrX#b6Y&,Pkp1SG[4pS(DLVQ$*a,h88RFE66$6,JlZ(p)VI
+
+,lkR-DFlVE%d5'kj`GBM#hID)MP*`Z@)IlU&SK*lP@eUIdLfLRXc-kQRZIfm(0M0
+
+2UlGNRHXaK$RN*rY2km&A*[#Vj[B8AahGqlTh-FZ,Zr#XD!,qVeei9V`&C,EIjIe
+
+qB4HH&CpRV5Hhdpq&liK1@REK#ia4IJr",U5c6Yh$Hm#m,i)TG$j2mcajAlSPr`p
+
+lALfhre[*r*1"NQ,5V!+cZfaNl!Pc-il@2-@X"maU#r+Gm4Bf5qD*@a-jU+6[EmY
+
+HZ&Z)ZfNp+eH5[S@IC(qP[-k,-00CP#Z1r('(HiHmh'IpZ(&8bj[+G8b2-LqVSG-
+
+M1Rq4Q#N5rQZ)lh6iAE+[BCmFGSI2P'Sa&VSjIk"Ei4k8UKFUX2)-eQ6jQ20EI2m
+
+l5GqNYIhmHck1TlH4B#Gq5q(h93QXpJ$M[m0i2Z@",0Qa1$[e8+-[S2C0M05(G8T
+
+Trhbp`Nfmmr`'28F5[dXF[pLBL3P1-`lrU,H`c3%CQ,`je!-rD,i(d8EhcS'CM@3
+
+1QLHQNhQV9+m[qNrlATFpNXYm2ki6R`TreMHU9r%E(0d&X1F4AUT[Y[dlpNl"$2Y
+
+Rbmb1b"kE#Ar9c$"P(A,F8erZS2PbVp2lGF4hf2$2@[,5j%ffA'AdS&*Y8$lIPmA
+
+LTD%j3,bE$e%qH4l9j[dRaT!!cXFdK9(Ub'[,H*iBlXKQlFAbhJR'cXCp8mj)1-G
+
+1d4piH1!Eh"Yh$cb*H%h%6+IJT5-Ha0i0`He!EF(a[AiTIAZQh)EJ,md#h,r6,rN
+
+XTVNCh%VK@+#[l*cRp,l,eE'N1*U9a1(BMM3NXU4p8cc@kG'X[Q[Ci0BmhB,YNIU
+
+Gil[Zi9ql(RZ#ZA`1CSAfN!$2p`)B!A[PjHL3!2a&rM[9ThTqBC[%Ad!jKQ(Xm#,
+
+QD@I0bM$QZ5U4!9D`bLEH6arcY!XrNF)mr6cPfJ61f54H')G`MTX9r+(XrUfQ25f
+
+[mQCUIV"dRUYPm*MPlbVeIPHr,[*`f,FdCkjhilk8rhN%26&(DV3MpR+@SbP*FHk
+
+VNr8,FG1l3j46N9jpYSXaFjHEXp,G)UGRIRQqGSmiAmdL%#b+[3'1pZp1FE30LCf
+
+A'h!ImphJSH`'Idfp0S`MpZr+qYKRX!Iq,GZZp33EZ8cNYPI0lKe6,P(h9Ql-IDV
+
+r9%j&lpmQpri*ch(`"YiR2"bqfil9*1G"RkA9[%mbPr[PrKkqUCUM42T4[k(8[([
+
+f*,la6LJf52RP(rBU03hF"Xb6hTDpHGKd2KZC+fqY%3qN2XlKG8j1TF1DKh52fT2
+
+Q!1%ZSJIRPrYb$mScaKRIqRKXSqLda2FC-c51T-qIq(A#@rj+3qCi&mc*r%X,A$q
+
+9Q*NN[-8Jcq)m-XZ`bfA`5LJIjGilH$-[C)p)F%ZD48fii@lQ@$[r,HCf)h`1J!I
+
+eCUXfbQl9NX*XZJ["J1EhQj@m*3edQmAr5(LV-jR2m$ak99FV1QaSCj&AieE0m"3
+
++#BqhQMQ*3@bfe+QYHak#*[*@e93(Kh4'aUh,rCf,['jjb$6RHYEE*EN*kjQ6eaN
+
+'jKGr"TiX['%*k)rp14E4(([ed$,2-j,qV%RNkD'hl+emJr'Y6I$99eM[UIFT1&p
+
+QI62VihJIb[qHZ@R15chRm%hf62Ul1C%2!RT8e"#I*pP(G`Y2jP[iL(SjE'Fr@XZ
+
++!-qdc6TAH[l4)f3$jp[p*2"91$[6e3c)[Ra&[*'GCZ!ZlN-i)[!fhMh6@Af&per
+
+mb6J[C-BZHjhaNH`lpd6R9jMbCb[@h52r')fdAC!!&IN#I&BqJ$ZZ(Q6Br`@krqJ
+
+I(Q[Lhi,Im,`24LlB"3edFS[fN!$'Qr$@A1"SDQHGpK,Ye4NLmi+[0GccASD!G%h
+
+('9P0e8!GUFNqI@hL(XNk1PMc`CIX3H"2c8L*rC*mDrI%Gk+(PH5KUAYdNqL+b3A
+
+!Ua-cAbQiiXYkrc1La#&Y[09N2JX-XbFif&YZAhBfCHA!RUcY3ekp2Cfi!`Y0b9$
+
+9B'mIXM([LH%q)1IF4ZcqR[ZK1Hmb`5%ck(T'S@Iei&-FADpjaS"l,dYN@a6XpfA
+
+'Kp#ifmlIa*M"eahISpN"-J3AqKa%C3,,IYR0JSTki[GJ1Q@Ajb(0+G8rLjd"CYb
+
+I@@fBQdaPEZhPVZKEaPebR[B[H&bM,Ram#PMc1%'bajQH3lP2F!Id-@"'aI)IXhD
+
+K+-%9e2&-jAl+VEe(2"IaMI8mlDaTcJ6Vq*c(ZJ6R%Fb+JBI32IQ5jMr@[2lLSGa
+
+Z0VYqbZdM18Q3!-d([M`klmeDhl#9i+0L[-h[f(dd8lfHkkN@[0cB4`hlrM+(l!c
+
+1b,&%qbZ4hEb4pepQLrQM,p@ffLkJ$f!4p!(rHQC@8-ceGXNLCAHr6lZdARCP8,m
+
+6Aq2S&Gl[k)SLe-2"A!BT[Ch,+'+lYNal&FpYfi%UpNhKR*QE$Yb,bp+!I@Kjfcp
+
+2II30qb&RPHi$-NI+r'd[NC&'mVBDENibRZ[hAdh[UH4P1XM4fLd5E`#IUd+f(IE
+
+fV13Yj"jq81r3hjfk3fm9EX#l3cTrGiGdIRHVIlIimU8apcVU5c`Si@2TBq0JJ,K
+
+SCZqcZF),b(*cD-qDBB)pQqFNGN6[RheR2q*h8BBEiHIY5'Gj6mpKC4+A,h,ZP[5
+
+-(E@HPG2dZ,N[5Zj+qDDH-B+e-$HlGj,*JAF+Q$RGkqTNVe(R$Xjr+'GDBNjhRp+
+
+V(r$$'GDXphb3!*0M[cCq,q2!3rji,ZZ+hTYB)R1FVeY%9ZGRa$0HHHa)X@4G6f-
+
+McCJC@#dqjUJ2Vfl,,01,aBEe+#lc+rScRD[N0%5FEI3*2KCqUG!rD3B*lcDp*D&
+
+T%YlN,[(Fp61,LMmr-P%+IcqNHF9l0f2Q,N"rVDkqXr`RI![TEkDC[D6R5m92`VZ
+
+(khLr,1XMkh[jD(AA[b"FNF1bIZqVNPRCjj,HPAX#rpTJmVE[5Xk([VpjP#06[@,
+
+D41H$[EMpI0`cDN[33rNYQQfA1PM`9I6*US[M"M%VGr18DFRHYK'(FM$,BDr@`2K
+
+Yp,Kr"bp*H+I)$Rj"FS[*l2q@Gf83&hMm,Yl&BNZ""6k)fIfpEF26K[-VS0R4&eB
+
+mp@F8`#Ii,MFRBGV(fhbSd[GPQ"YffPjrRQX5ZSRVH)E$ZSND&rrBI!Arq,U*kaL
+
+Aq2[qHI8r#jlL(eFRp"0r+rKAkeRqGq&MX[YQFrq5b`C[$5m+Vm&-0hR[q(QZlFX
+
+c4AhJB2B%!q5I5'hZ@RKk4Yrc#Z[6N66$Mi(F85(l&-YmHRJIYJ!cB0q0Dha5lVp
+
+NFK4ISKVSS9D3!2m"pS3Cbq[88m$`fU15S4%p!X0,(KRSilcXd,dCS*P43@Sq+IU
+
+9r6PiPk2RC[+a36k"'GTrB4rQJaP&N8dS#Zq@![JlVF"-+XXmhh*mAZ'e+M8+`3X
+
+8)XCUNCYTmZ2`V0*DkJ(Lj`9H#ejKREcp'r(!8'mBCK@5$+2b0Y$!Z,crpQcji2E
+
+i'[ieV-8'[ZV%6Gq[jErBaEq+bGDbIa'er#R-%&AIY8eb+c5AMQAPAmXHB2*ZVH5
+
+@mfIdSJrPEfEdjT(-YqKIp!m[c1K[N[Q(dc2k6j,MqrNClI0Y!*G"6+,ir'qBrq(
+
+0p6Q5)2+(F6pEH2kXjrU,Ad#mGl#+0$UL5F+m`,m&BSq#kcrCp-(!T#SbJIh)LLM
+
+[Lf@61iYdAI4TSYB1Zb"H9Ia'c'EemT2eLR'[b+&2!JHp4GrA*0qr!Ie8[0X2-Nl
+
+mYTqZMYL2+3022&RR)YS"r*k*rTUGRUaH5E,1klA1Fh2pe4b+a&m[@cepXUPHEml
+
+912c(4M(CJ%j6p*NAX#CUN!"lR9AQqCTNqK)2N!#2LmB'pkFZhNDqR+@4qbjN6C0
+
+T2l)eHeiZhRd[%Mrr3+6fD#EVC"YpG$-mIH,Yj'Xea&2m5XYD2L$CU!fM)c[+,ph
+
+XZ[hcX`c8(eH[PppQeHb)4A$23Q@H2a#1Y#Rq@0)(P[jLi%GZ,F*lc@Tl+$q4hiY
+
+U4!CV!I0Fp-3FHbII@23BraSmD5I%ph3"%h5J6hJaVS0R6fRAh2JZp*5J(D-2f[h
+
+2'I2Xkr$irqXrD+-mZ6(21D)V)mE-`rf!elVZ`6%pJM(r5[dI"0[Q`0-Zk(!J[-R
+
+hieXKke#bK[5fV1UBPa'QHk8Hl)%eqRZ1rTk"hihihFDjU62-$C*C)M!2[f2iABI
+
+Ic+crI[%)$p5*4hKJ"AiAi[GeQJ(QE2cQ(#SkE-SH6UqmhFM"&bLNZ948!Ap2Y`H
+
+E$J&rYf0[Qq*lqRbHJ11RR4``[C***'XqjGk2HEBUAm`h'DA*'6)r!hZ&clc-FUA
+
+1F)h1P,mabb$0&V--8Mh--KLA@3ClCCE"66,,i&kCCA")CKNUa1rCq%d2Z'[`'lG
+
+`h(ES04C$8Pa,Fm*hDT!!-Er!jL(J1QJpmT5$"Gpq)@-be)MhR@m#pX!JFM@0Ddk
+
+q&rb(0`eiRi2hKAeh3M-#AFMmc@E5cBpIDY205rHlm4C6)$U68hkIG#E*J8![DND
+
+TCZ9DI%pQ&a"hV[92(FEEBRfEM4j,YFG+I91!0c(d9pKh1I3S8G1#[YUG[XJVE2`
+
+ShPeJ,NqpBhp6ZJ*E6qa"C+21jIe8Kh@6,e'1U%K8hde*p"9Te$H[6VkTecIR*0q
+
+ShcAi%AYlP[1@qPUpha(f,p4pQXSD1Y39l*5UHqcEG6-2*qX+c`*rhFdRkTlm0qr
+
+8ACfXDakQQCY1e[hk1hAR*ZT184rIc&VXBU2UJ,LIb0B6#1"h,I@aa`5QdQk*[c6
+
+d@+M95V@QB-p&6r3a8dpk)YCf@5E5@L,KiS!*C$D5kh2X-Ga1iNrF0-'Iej!!Tc(
+
+kQUXc-!h6bIQ*(4bl5pqFNAbc+MP,bcmqGU0JPZ2FI'PpQ'AXIX%XIk(k&m%XP3l
+
+Q*BmSZFV"03rbFa[kr*j-&aqXThX$r+'eLp*i)Lq&*`32S8HYQ6(If5R&&jp*DY&
+
+$qj2iJKL)',p1F%D3!$$1kIK0RrjVmAX9INr%lbhi(GII9qR[kIUl"EmI`1mc#9G
+
+!-eR3mB,C&eRc4TCbF#fN#ifI0mMk(q&5+Xh&kCN@TfEUeGJ`8U2da*k%+U"eT,B
+
+cYZD&0mkP2Y(cd6iVrl(2f)NqJiHPcq!!cj8H"Gk0Q+`qKX%pNBkI)mrG,r&hppQ
+
+d9mrM`HJrcJ$mCHm-QM[XRar!l`DRcrQ[$%+M%Pb8qNlH@h@lVf$09Mb+EedI'GB
+
+F-G'1i6H3!"8cQ0haiL#m+S+C(5qq+4NdINaHT5"!M6Z0Vc(l1ZEMRSC00A-Pb3R
+
+)4"NBi(I*mI4YFiGpP(j[+T`ifdE0JX+*ZpL,[@J#ImF0N!$[U2e,c#f`CHDhMHI
+
+pRDMpajfS2hNRDpr[Tr%IqjQ9kXGK#FARS5dRlZKbpSZa1pUUGj6hNp`"lbPri`l
+
++EiIEb6A`RT*Ef)VIVGM"(,fcb(-KGjClYm@fMdl&(5[%Eh$dSD"YCha,[BacL6-
+
+"MZN@I"6bieZ#[h9j"JN$$H!LhLN2Yd1Rd)IE+p462IJBHJ@'$Hj`m9dPF&Rd+2"
+
+3(Z08Kh0pR"IX5I44V[Jr'(klrSQFUE!2)`BA*@ZEeLiS1H5NpNl8*KBlm4em'Fa
+
+-eRECp2DmAIX%aZGpYD&0p'XlhPrcArA92ZqGfVR*fU,r`ZiYTYh6'hZf2A3I[XQ
+
+029Y[E+"@GKQkCF'%r`[VI``6&P#[-E-NiENP[C8a4K2qh1ZhM$Ppm86`hiKfb0d
+
+TmPqLQc%F@YReqT)%*[A`Cll`QCpcp6(-LL8HFSfq+0iTrieh$q,GS&iQ8HEjrGp
+
+q&*cIVc0B5)B,iAEITGKC1-MAUcqYHZQqj,pkPYE6r%T(kU9l9flrLX6Z*-a8lH9
+
+!6SR"hXr@HM+rAp9MRJ$8Hqbpr0,ppDl9HLj(rVr1PMV9GcSk9FjfS[DLIRlrfS[
+
+Zk$[9MeakL@X[kRheAhS42D6eFTAdmX[hr)MlGf+keRXa4jV9Dp&kcS2jD,eEY*l
+
+Q-ALThKbYjr)V(Udh3qVYG2),(+hAT[A%cq9ApGkZp63Aa8[e,Y4kUV&kU9kGeMZ
+
+BSkfrh[ZPhLrHm`ATVhH0e[[GrCqYp9kqrkJh8qZpQ#21kVe(kcRrUU2eVY0k,Z[
+
+EdAUY8ZqIhVYriY(3R[#BTCBFAJ$-N!#i@[45RdlT(mbEiG2Urb0[a)q-1[$j@cL
+
+RRQPUJS@DeG$TR)$rL"Z#@94[K(pFk[!Je"F#!c1A3*VhYpi#qrSL(ZCTbEPVIp$
+
+#5Ar)0kXc-Mf$c+LjEi*NbMc3Gi&RFpmFp$dK!)lQB-m0k&NjA,pRbC!!LYq9e0q
+
+4QH@M[[!PUIS4UNrGNIJqB!q2BKfR'BqCDLFl#$a#TVrR`6(NI4EcQ)4[),k,RfR
+
+3Z&j@rAUJ)LG(*c6DAZB+irCkS2XAh2kb0pV3,!*f`X2#c5*JLdr2#l2`-M(U,%l
+
+%,&32qZYCH&lId0Z9jiPI8-I,l(faJVbaiKIdX8q#k[EZ%+dAH4*SNI(Gblm`*qC
+
+PERe1M9FpQVDm#YkXSA!mCrBX+Vb3!(mAN!"AMIM$d'IJBr"G-ap*mrJTDSfa*M$
+
+D+YV!22DCNGlhk(k&!PUM4$aPhTE)i!J1a[0`TZj4kaS1$Zl6RT!!HeRUUNI!3&h
+
+f+h[PFQ!%0dUpYlYpDYp[&bm'kY1NhLI&(pM69hj5G-E8IZ9l-c(MCGJ"rPl#(P(
+
+`5l,C-e14q2N!0j!!2kDISTm&&CNJj$kL,rVkfrj%(FmPeI"A5iCbeIVRMl`0IPe
+
+dFhJV1)6q3,hp"RDdaMKM"(CAr0Q1c%Fm4[lcI'TNGiEQ%bLAr+6qI,cj@lq538M
+
+eb'F,"k5HBX-Hkreq)1A`[RFqh,UARdMP(qL@hId%HiAEQmhUF5Aj'r#lLV*`5dC
+
+mm8(@1fhiBb9j@+R(i!,0U,S[+k*N`Z%HqANH"2-X86bd5'FJI,Cj(Y6UV$4rJAU
+
+A&'SGi5VGQrL%3GGMM2M,DPKq3DRKF&F"cG(hFYc$@QNI0j`kr'X[mE6Z8haIk1Y
+
+"rdM29qaGVYHeh!"i6[Ji46-YZ"Z3!-iPkr,C1-pQH&FiRZGJ0S*HRc4Q)lC-&(&
+
+rYVX2m1T9hIlcAKTp@YC[5&ijmaj9MIXhf,00-CLEmaAZVZqIXqBj(*lc-mbIH,G
+
+1XKeHSGPYL&q[i$Xj0(HRThiq&r"U*aF`CSGp[i4aMmX&M'`l&AKELEI`D,e%[&-
+
+`CfMX+r#q%Me8S8B-0CJ9#RQMDi3r9BqH+Y5*S8i0Y2XYm'DH*6IPV3lr8[ZH2Kh
+
+l3PaJH8E&XmEZU[NqK656f%I%Aj!!q'Npc1'!%6$I8XbhJV2R$H9CPKaPJM[TpB'
+
+-*I@Zpi0QP3Z-`4[0`BShQ&dTI!%UC(De,Lk#(L`IXmQMfD$Z&[&Cr'M+rkj12DU
+
+C`5-2'Frb+IH`j()3$j&Um6%4cqU2XaH!CQci1,rc0IG,'6qMaaEYdI),#MG6Q2"
+
+ir,Mi"2Te6@Z),,%Z$i4JTiY&KkppHrNIV+EQec4mBKiLdU2Hf)qjrM$`6D'A%qF
+
+[rLPp2Fi6la[Tm@1ZKPYlr#M[@hq2'jaGFAf)KMP`-mr$qY#m#V)M(d[i+'T2QNP
+
+H-9lGVhhUcDYd(I)0pIZF&*l-Ir"4hJrea[K6hK[kpI9lMp)lMcN"Kce[A0qq4r!
+
+kC!E3[MhrNF,%cNZ[ImBmJhV2r+RkIiU2TH"Ij,B`[jRp2UL@NrM`,$6(U2!eKQ'
+
+5EYERBIrp2q(pmV,'%EqKCm[eP+pq%CM,kaLAm#e[JZl3%VjIm(%P9q*URB"DH[1
+
+d&[1AF5FLp2frc+p(Z)cpmd[)r$l-qr,5r#EbrYY-BMSr`5[ljcG4-ReV,AdRpCj
+
+eFp)GRQ@r2fJrcKFI'16F&@l5m,h$j25N!XC-F[qMhJ*HcL*`G'A!8Kf8FIJHhTQ
+
+PD`jmUiepE*&*ChlfdfhN`95f'6N3QVSj8b0i+Z89,AF4FX-*r`AH8,!kpD$GT&e
+
+bq4r%Jh)4qh2`,6e",IpKR[)caBVAK2rbGJQj((@A6KFXT2PkDZQhq@9ECXZ2D2i
+
+$UCZp&4NNa91Q$q-*YQ0@T04X%ZajKMNJfkjkRRPHB!ALQ8@-*pMQG[')`6I@-rr
+
+Z)ZRrYK2j9q50q[XCGj1Al*PjbTC4EKrr6E!hYJ3pU3GZVR#$UVf(jfq8rHpdcTU
+
+24HS%Pm#V*%rc4Um3r(9Ed[m&(J3RfD5r&km&p#1hYa2qR+)eNhhpL2MrLcr@(b@
+
+mA+5AM`L2$9m6kj%h%A9ZBak&',P2)hXDCkf3!&bBjPH&pdZ,KF0I,$dYe[`EJNf
+
+CCB"i"Ckf@bLRSAhE5$VLl"MZAFSrN[djVah*-S"Hc2pCX(Tqj-)qjX1BGBJc+mr
+
+Q1jQHMhLQ%9GKTl$V(f!ZeZ2@E"IK1lb#Xd4"keVk*QT[NAc0JR&P"jpdH2#0bCe
+
+HQklPH6dl[eEPIaEcVXMY9%qRSAcYPUdpC#KEZpamZjY$G8Sh(lFM@i)KUKA2hLS
+
+Cd+JYK@q,ch9q42cG1lSA1pPKa2Yd-%r3X)rFXqpaAm-qGFmkqHk1e*1F3Uah812
+
+QjHQNKb%p05GdYh9jefj(GXi@C1L%,`Qm5C!!maUH*0[3dec'-2#C*AjK"NILQ6)
+
+SEL9R2,,eQPG,)AN*)ZHHi$c,TAGLZCdM15U4#cpQ4N8e2jCl2lEF$NU15RhIf)@
+
+F6Krj*QB#,US8f5'"*qff5(E%[0"[1cFSUVaFU"BC)rf3!`rLkbaHRX`8%il50rM
+
+YICM[Kq%DemFVd)GSS0"([Y1(B&E-3remRCIaKjAr09c%r)2%4Aejf"8A54E*i"j
+
+N'XcM1@TpbkpD620I8cLHmF3UdBpH)*`!mq2q#"j2bQmERle)rFm-)hLHbDIUr)1
+
+e@XId6j+T5QVlHFmrc,@XM[(MNY0US)lk(jY2)Gj[,-BpSIjAhbr5r!1'166r#2C
+
+Y@a*cV'I-d@(cAHp1c1X8e6p$pk5pL&E!-%G0C$bmKFRPbpXr9[p,Q@8%1f(cq@2
+
+e[j2Cb6YL%qi0Fe%+4[(lGCaF&GmDUImR2&r*K(Z#F!"Pi0BmcE$J1-h2JQbp!EP
+
+9258pNVF3f#5dJqqhPb(d6b3E$Vl4ldVk&(cq*ia[*j('i9,X8bSI*AVGl[*Z(h(
+
+m9aXNLkK`EmUIF%EQcCR1!LlmS-rC98Z'8UfVqKE8GAR5X#qDL4dcpZS56`"l`Qp
+
+0m)69pR`kq0EZH6jUKB3r[GMe6+Af)99$-D(Xc4q,6b2faYmAm'kBZA&RH@r2XfF
+
+`m6jBNDJ,MflQiIkqCL#MVaRb6d*[kI'EjAqA`S"ra&JUPFReAh#JMaeH`)%RpJJ
+
+1I18T(,K)XJ8j('JB5$486@XjUfV-A-eH8cDEr0#hhBcTMi5D63%dJ-U(q,@V8&Y
+
+bVk*ffUrpb,b5`qkm-"[H'rPpVH!VB-(ZAfH$p2(Tdm*Kr$-qIGVarhiZ@iMN`&R
+
+BM(a!$FLa-SYpFq91r9+bjHcR&(F,TpJZ1M[c8"8p55TV&r,Ck[lhjHrbGJ1hPrX
+
+4D%Df6FNrJ'q0m3$GJ)-e9EX3S2bEEBVaF#r+%MSBh&6Qhe+0a#6KXPhQV8qBSq3
+
+MA@hI,rQI2ZKLj2cSmp!*XFiRc#0D3r2XbEI2RFU*0*b"*HdY5#rXMYJ4*rqJBA,
+
+kFQ(@`D1DGh'(HL!E(rHDK+Hpl*rQ$4!I@X0deAChL[qL"lhc6HhM`!96,Y6m"e*
+
+,F*ReRFVR&+c9(+3Tcm-mep[@jh3A#PFS-eLJqAm%qkElATrS+h"8DXehmkQNHY(
+
+-ZH3KTFB%pCD3!$NZ6VcVC[b6bL3eFJpN[VR)R9GC992%ID9b2rRhKRG&pPRRGl!
+
+R`5)jM%8NZe6[69XJq69N2Z1C!p!m"YFaK[@i0QmRHYL(ik!IjD!Q`hB8R[rTfh#
+
+LD1#pfl$!i3T6Yk(,pIppk6Cd-6lDIaX#Hj-l[2lYfh"#)MZEYmpGiKFJ-qK8rFr
+
+Kfe!MYHE*hHlV4If[$qqQB)3mfEYVhBcarIf@r0+,'CP#0b12D+!3Z8+j(fNphlj
+
+l6Yf+CUIDK"aM$p!pChjXm!f5UGMZPZ``2!T,R0``$PpEPTTQr!lKph,95ZNm,5m
+
+fpKdlfF(BRe`@-d--lS$FZrQlXm%0*&-Hi0h8dq8[""*CjhLlk#NF,L$F5Lr&`4j
+
+k8RHApfE*c5p`MQfrCm[KLrGchkP[RVkbHr9djibILLBd@9h-Ip#MaM*k5Qj@Hk[
+
+jTMcp33GM@hjMVkahm'lfDdGiSe*pqIQ(j-jdm+kN[H4Ic!1ApX9A(DV,@l$9eDQ
+
+Sam`QdLVk1YH(%PQ6i"h&h"r-"++h+P$PC*p5l@ZJiQ4Ybi-JYI1C-j1pD*Im*0T
+
+$+M091pGM,p!m5"CKFU!fij8k*qAHY*lPKG4mG[C'm*PP'cUFImEmdpHMIK8`Kr)
+
+m[$-bZal4B(Vi*-(FJG8`VM8KHJrNaE*C5HCF[4R`LcLLqlGGAqrXRfQ"BNj@T05
+
+1@Yk![D+4eKaHiNZ+ZbQh!AhEVF*Y8EhBi8`rb-UqLHk-bpY['A3IN!"-FTh`(fT
+
+M2CjPcj0[V(-dZdrRdhG2*caKr@bQIXJK,LApMh'$k%If9MR"GMFR&ZS%U3jh'A@
+
+B%GaT$['YRI%Gkl#h9"eQ@"(G#qVJ@lZEEppQX)PRS,1VqH8qZYPa$Xr06M'#cLl
+
+KDY6fckj(F*pm5lMjE[E2VNGb5mUhK)XIrmIX)Zr26M85mQfqm,m(CUGh4QHR@B#
+
+(ClGAH!rj0Yre8IJIXk[mKpQT[iA06M2P$mp1H5ljGSZElh2rl2B`lk'cZmAeNIr
+
+RfGNGG6I8c8frh6UG20,4SqUmKrXkR$&'-[reh9$F*1h,h`R0VDSlF3[lZa#[+&m
+
+mcmd4-YKlj5p[1$QEJI[YHUGRX1d3HVDXjI*YAL*(TR)K[KHkIYIF@CVEH00kfPh
+
+9-KhfDhCi@([iS-[r%3IkZAAQXEj0r#F1l9Bk'b2bDY-6JPPE*H1Di1`2-,pUfTN
+
+)jp$4Gjlr16%CI0VB+h&D(Q@+6QAl+T'X0XTP5$jIiakmh&ckAZkAm)##)cr!q-#
+
+iUb,K$Ml!2LIfKVT)[NR2[d!j,'K3XKRc@2jUkCZp(F5rMLI(ENS1*@5MS-F,p)a
+
+4cA-N@8HC3F(2Fa9emd3,0i3XR+Nm"jXMl6rLA0-acm@L*dIGIJd@-M`I`c-eR$Z
+
+AqLj(PK6VZCBbN!"CVjkAM@JV'q(CCrNlHB2fcqC8dELPDU4QXiT[2lNAj5d2H*V
+
+IM6ciAMC-j1ATH,UlLM,I3cr3#SeY!lLbECV*YT[hM,lPqPYm"2#l%PUrALe)"h`
+
+%G0DPETkjJ4V9GK[chk92`E2Mdp"A8fmrhF$hF+pJAr5TYb2%15+Ul6XdrkeSe[2
+
+T[@@F`"dBacGII#Ej6ZUe5JBj2e0k(Q@&Yq`Tp)%S93m+bDb1h)blj#EpLH0l3dm
+
+heb2k'DFHIX')h0iE4r5rU9V3!)p66MGBiEk6QMrN1mXlM0j$m)lC*AIf4ZE([CZ
+
+R2",U,AAm)6G,REf5`iABJKPd2S'X*MScp8YJ6UjJSB-*PQY[JSqX0qB&)(ICPHM
+
+aSdl1i4UTYdHi&[3S-m)GSTH,HHQAih[X41mI&Zffp2jk0r-,qP*1(C`@qU$hNGa
+
+1il4QD3fR+q,1jV02IZ!h'+Yl2,$Pq89ZmCfS8k&iBRF2Y)IJ-mP"-mmqjRB$krp
+
+5pk%LF4mb'I06CbI[T*lQS"MJCC&4bIG6mZp&J@CNBGC5epFak%Xd@HKV9JKF'23
+
+U98jrk#1G$E8+pi9jdDPr5rNKr*NcIpENr#[+c+hTq5IpU&-Tm`q@*ZBI91c9GQV
+
+qc#9YmaqVm`FAcAG5lpV6mdrlNka5hlB9bGP+EH4[8TfB2p[G-XmrCUa%M10iFG5
+
+51dmI&[LV9)QRaN6""HUr8JA[P4MHdRI&pDHqL1Up%N10'Z3"fB+E%p%q"3qb4mc
+
+,FF',Y6lh#(NR'Pa0@0mHp6b'R,+$H'31mlhFH@#PZBm#&re'ar@-iee`9-H9SI@
+
+8,aLXPmjF68m)mfeD3Gc$lFL*Jlm9q&ZCm$CiSrL4B8rkF43bm1jQ2B@2Sq#,4p`
+
+Xr%bEm&bQU41X)$IKrB`&KM&@f-%r43Q-p6l*3B6qQD["-XPjYa6p#!rNDB*91`T
+
+m&(Dbd@fM(1#ZCVAG`RHK$`p!d`'1H6id(CII0A%i1Fm9i"0UY%rK3BG[IiD$ErB
+
+NE[plKErNI8ReVc0i[rKVp1Q14l9ZZI5YG20VMSkapjDRm%UL"rS3`b[B66Hh9Z8
+
+rKQjf"Xm8Fj2XEq#G[2YEE6Fi2#9eXVdc`[aFIQ[[&[Ui!AI3jS"lQ9"2MiE6ZJc
+
+2&irDfbVm2CdceEBJ6d-ah56r"K@lQ*6kGATfAql,R0QaHbIP+0T"ZL1l$3f-#D!
+
+K3,iJpcH2rVE''4r+ER)I69pH*,lAe*CIVr`2p66B1HkXq)DdLYq@HP(3VfG8CdJ
+
+F+lfj'ZK*H&$,,Mb3!#diACYDD1&bq[4Mec2qTjC$G59*eNSACIZ1)a1aD&p'2GT
+
+F[JRacB+q8cQLR[G`JD[RFPeC2H'8MYCMImU,[T!!`bHG!8[V[C6$4cJMia-liFQ
+
+#(PDIiBMkmFNXq"PV2LErRMqJZ06i[b%-SYk8p'lhq"Zl'pAfFXQfZrpQpfZG0[(
+
+HdU[Iac&A5ilHdGVSIrkHh$E@%ICLNhH`KX2$Q*VMKlHeL$9Fr[hIfJ2XCIIIjYb
+
+LqXp"c0*M1riIR(2&L6R2(2(rH@l1pk[(5E!qJAYQLTlp0h01F4+DEhG`cP'GXm-
+
+AJh0q(pqe!aLRCpMKYcMRbK0cEKDG`SYc[Xr*UTa)i+0Qb4lbQcQR1)-kjR1'jQb
+
+c%5p'RGhH8pQ,DhrYeHIZrEpP,,1Dj'd1Cb`EV%RFajS[HblhCcPlfA2EDYTX,!2
+
+mEfVDE$62eBXB!lcdIm%A[f$qBri6Kj&$`--BLq3qc%VjRr9KM"l4GP$Mjq1$*X%
+
+UKqq*qJ,diB1hTI*2TZp*kmf2"dTd0JiM,%hH6MFRbcmfK"'HjIRDR1aQ6QFqk,G
+
+c5YhhYlSCj[VRe*bFNl[aJh0kMj[rE[q0IdEpAf41GTqRLar$EqD8ZXqeUIb[[A2
+
+k2qk`GqIfrRI2(hIMp[ihAh[r[ZeemJiHbEpp+rPA5[jYc9c6c$LAmr@m2CVLY&1
+
+L+BTjPSP'meGkUR41119@6h,e8IeH%)A4*q%l5ee!8aaCcijcXbeMGadAp@+@8DF
+
+RBAqGhRJr2-5K(eQi",S5k+l&YfdZY0G9Q-Rb(R#Y0Pr4ZXS-QVSjjcAi#[@YT"I
+
+%-Y`5b6[bEXBP9UXYGJZr,C!!YqTKKkapi[2K2*2Sek6DLdGjTrJfj[NNph%lkSZ
+
+2@TcbDZHl2TQi@mHA$dZ'GGBJ9i`k1j)CX*!!@H1$UCZCV68f))0KS!ZCNM#AQ-j
+
+&H(R45jP@PE-6VpTPi,9&Hh`HH`k)6PVpBr$Q3YI(d1DYZYFH@hJ1CK3(,UTl'&i
+
+[RfAq,+F(QU,#8C)IM6a[c2-*aKq5QcjZ+V$lJR[m'6r*[Gb1QAd%-q--XGH0TlP
+
+[Tb(VjkEA8RiQh*C'C!j9Ma[kkIPjQX`hm8V4UIEV$$#AI2@02!Dc8*pCPfN62D%
+
+Ap6CdHI&m6f(*jr6VR+IQ%bJHiq"qI'e(hqdchq!'m@FD`#1Bd8#@5H6Emh`Ec*[
+
+X4DrcrPPimqkI4BA-iPfRq)q41Ac*i6pHQ-1"h)$hZaVAiAeiPhJC$Q)dhV(q13c
+
+j[ar@)cSIAr9BNGf3!-baHNrZGc@N+Em*di0I)IahfJ16'LAe`)5Rm!6@B')@5p'
+
+,q$AJRHh9&52qRk1HZXL0*rFG2G6*$@[Nfp(DB8T6mr$cVCaUdai3$`$(0@02[Ie
+
+!,jCa"$[k[$ja*$rGbjNPI$f+CZ(p&8B0DEf$Q58'28V*dd'rm,9%l[6HZi&F*,*
+
+Mlq6EPVleqZlGk[mUHT!!49Xlc!6*CbBH)a(DrG)"ik@FK(JlSFbF)cSKbdP),f5
+
+mVF4EH-1p5[*cU!DT!ZmViCGFK4Sae+J46iGA5Ai)p6kZ3TdBkY3)TMh4i4iENaL
+
+$ZDcDA-eIckZ5D96p,NTT0LPIMRcJVrcS-lJCb)61QYVA#DSIp$a6'hkC(dpf#rT
+
++DLkaAbX6ZST6a,X(Xk-[*HE5LSbPFYG%Yi,[UN2Bk(U,1Bf6Rc[fFXNRi18H[ja
+
+[3hmYkQlpqkHji%9RBAk8ajB2(q@EQDSTHB!N8f1[hZG+cImXqqhbKjk!qS)0r2V
+
+JT+eRqT1k(L32,c9hNRF-qbDqCeGUrR2c"IbJqJ*D6X2dhDC@4EdXVf4qkGFHUr5
+
+8M9qi6lc(U&2Tp4jlYqLm65G&[eA2,d0fldTjIpJ,$EjdR,'rBk-Hh[rLU6DL64V
+
+`9$-YflkmI!R`6C-b6"PkUCU"qe)-h2+K3Q2DTf5XELq%cM2Ec#C1!hlUm%%2C1N
+
+EjMq,i%hcM"jM,JXBceG4Xc31[6&mCD!hAYZqEPRE9r'fG)8TFrNJB%h("h8Xkpk
+
+-l(EEi(Zj&Cb3!1U,3r$#40C-C'l)MA@YhGlep0fCd"c[lRU`Ha(bfDpDXq&"cN#
+
+-hJZMm+p$9Q,P[M5RAB[NUlq-GH$ND&6$qLlGIpQVGC**eXpYM6H5Ab0QXTM$,b0
+
+md+Bjdq&TP0J!$ec@kXS)KeT3*hLckeY[rV+&,I0X@l*-lmJN64Li&G&ca%`QhdV
+
+TD3PfVBhQdF2eL@13!!Xr9qEiZ1KV0"0q,QBCPeR@1Cl,qCbT8MM84dA6pAl0ir"
+
+aF%Y5kb6aF,+jB(CZ9jMhIipS*@Fl@9fT[m)Xe!rC`fE32LXfH#IM$FmAQ,SN`@`
+
+21GV4r0!1e2fB4l@VlqFpa,Z`i*iGc$@*6`*c&L4-RmcSG3j2XSCb4KMIPf#ZBKQ
+
+mIK4VY&+'0r*2`''m`BhSdr6&ljFmH05`dq14[q&E'[0m+TPr#21L*MPKcN''Ilb
+
+Gb$bAbp5$(FU#hPIp8C!!I`dkJ9,XN!$eebTlf$ZcLDc0)$rTq$jL1GpA-4QLRBP
+
+jTV,QRhZ*r2jeMa+[NVUc[!qB6`,cc)NdCS6EBk6C$f4fGR8MXhAM0Y,`TqTNS%i
+
+"qSf5*KhI-r'G0qPBm[l%lf1)!dceN3[[UqdceYR(dld8D5m&fNZZpX)X@XHFbK'
+
+mMbHbI!9HjYp23lrAVMRPJcHaeS0em3EjRmC[qi#,GM`#qr(pQ0CTaQ,a"iF'2qV
+
+iT+)reGE`h3cNS2Mbce,j358hQ(!Xmp$h)9rbY!F8lMPeDX)ai8C*0SAj!l`hZ-r
+
+#5m3lAYe'GbJq%CR`%[BKkM1qjUqfZ4RmRmmV+MT*DZ%Z)VrIVN2SFa9j5p$,PjN
+
+fdMR4Q&A22"qSU8H@VH3KbAN'leE,&K,ch#"FYrP5$RJr3&ZJIXfDf63BUAeZ'fG
+
+I5GATIi[FV!&[XZpE@0Yr"pjhFDkU,-aKQfVmLe)c3[qm4mcmPSXhd"0+r5cXiYB
+
+[`40N[Sh[TjTLe&q"hpTAUJlH,F)lc&RpSiEQ%am2$*iB2X)lGr-2YkPRaB'FS@N
+
+I$mQi-4-l0j9h6M*IDUET`"(@$Dr(c[d)1iHp6Q8#e*e6lkSZ*d0Tc20Tj[bpR81
+
+pFkQZYh2U1q2m0Z+e,p&HGDAUp,qGKEj$bEje0qD2l-DfYpjrDQ3R0mLm0*[S8*r
+
+aLrVTAKA`lX5IfkBHB)Fc4`rFGf#"#4Z*Id!'JG+(`$Iae[mB@1PUfSZhZAMUjA[
+
+rA)pPlrFSIJ5rlV(GZhBcH3I-Qh)0lARp2EMYlepRfqhV5VIG[Xk8YUrMQe8`!qq
+
++`Epm#2k!NpDCi!cX$EQ1Mhe*m(A[qp6E591`9q-+D+G@-UI"qr!HBplT[5(91rT
+
+Z3rm*r$l[lIk6!rqVra@RqZr&(!lAb2eEX*N`4rNXh$bpI`ed"hKIrI[eY1[EKC[
+
+Ge[S+m4F2E#1Hc1imHGUSNm28mQlQ1$Il%kK,$`ql0bYFEbR0CEV[9LHHAVXjmTF
+
+cD4EElm%-ZCFI3NrcEXX)4mBYTKZlrKjSbppr$IERiU*YYeq$hEfBje"h$hLj`AG
+
+j9p!H[`plS286k+fCGT!!ZmHh(m+X8rde4KSA8iD@9ZTIpa6pq$HL81HLYIYQ8a#
+
+jVBTUPcJe[2Ik,TriL&,XEqPIBLFbH9rc4l$dJ1m5-R23lm[fFl(HIASeL1F(Gj!
+
+!ZN&J-Z@Ha+[K+FNKJKR`MH5'e&aI9BRk6kP@+c2m6Rh2epqVhmbjBV`-PEV6ffK
+
+qVCV0YqB$V%[FKGl%%m$ZMXedKhV&F#DHEae[$E96pXl,&c6rKBa`abXCUc[fB+G
+
+dTXYDRm&0qLaZdQGaNcl,1aTVrHPEEr+QJaI!lQN'E-hM@pZa1b0-lqBIF[X"eaq
+
+P@6HmFqZLk&hVqIhRkfi8d9YjjhB&Ge5b'XLZ-2G"N[RqJaM9HAPB2K82Ue)VMec
+
+Aa+UQ+Fjcr$BP-keNT88'(G&Ce,Vq'XEV0B,['&2Qm3MREpS`jp-T[J!p!q+*kfG
+
+3Mc'hT9kmi8jNBp%mQQqjKr+PG8)[kl`3Ehr#"0FMP`jm[S6M&Vk0[jArU(hA[l2
+
+Ide&je4)hSlZIrH95d@XdKK`raCGe5UCVJ9DTPR9dkRdAmR-2[m+JI6jUPr#GV3!
+
+I4epJlVcjRF&,[$GhZf"rC+Nerc1TBaU@2q1ljZ9EPRPlRT3ZcpH,QNaLBp0mdP-
+
+)mhf,Qqm6mp@pqeGpTlmRPlVk6[3apRrdSGRF,K%2+-f"8iFHC2C(Hd"Z@GF$I$3
+
+[FA2QE[5Bb[k*[qSKKC98#pCcY&Mp[k[YF[ArX,bXXR0"cND2hal1F0QbS5mKGdM
+
+Z&0PB!mHNKb@50mkbjk#2VI,ZBXer)0Q2mKd0,(PJF23ZfeVHLAH2mAjdX`jGXkQ
+
++[a@`&2Z'"[d2)M9@9SpJ,[)ie%jNdiiZaCZ5GYYQRh5Gd6Ki,"A+cY5`hNPf9hM
+
+3-0qI,C+aYd"fXdEm9V`DBjKIGc[UDmb#QHpLZ25H8C0lCr`)Y*aGf,FGR&A%jB#
+
+5hALcHrm%Ql$IJ'Hc[KAY),)Ld--GIZLKE-NT'JT*6P(*%m(IBIdp&Vq4ReTb*Dr
+
+'l`4q)kGSX%,h@(`&mEY5G!T*eam9@AHApVlN84caCTkrDX*dck'Kd1cU8[FCaj0
+
+VYrBKrQI@al*%(c(arhkZ$qN6IDc'lQX1!m&08d8cc[`%NVmhD0"6@0j1ipj0dm'
+
+q`TUr&cIMD8FAeNMj`(Tc!(r5D2fT-Y[KhN4$1p+Ek%[3@aKlRrIZhZqlmb&NIhf
+
+cj&G)hARfY"KCa'1H"Db"`"ZjX`Gc[rER-)+29a%b&"AI1mG-6rPC1Gj$-MR$R`'
+
+cUNaN$lRBpAme(8X1H5Xc9i2RNkaCVc9I"2c)b!qIHjIa3cm@3,i9k$[KShV)CcU
+
+9A8HbBcIQ86mkIfU*Q+d4'UhENI1%1CjMjJh4La"lUfpd#Q2r3$cFI)aGY2iRV$'
+
+6l(R'Ri9*-jEbBpcaJ9DKEcp0)ra"b8UaAjpELPZf2*%Rh@k$bl82V1,IXDG8Pp5
+
+IKH`P,1KQ-+T6jJa@*'C`NI"-"fE`T'E5r08-R$EBH'2,cL5kB0i22i28'-hM)9L
+
+ZP[*p1kj$F*VFP6pRrDGTK+MYC$CCaC!!k[PGS*JTRfj+[jrFfJpbUUFdc(fkj3q
+
+`,iIGe%EeZP5p,'phh`ieb1j-6Y6Xpk&+jEI4,&A%)6,E(MIIG0U$@cdH[,ch`l0
+
+cfF8eQdSV[$kK`j1m%-Xi8l9N[TqEb&8ZQHIR5KB2lMHq1qeB[rjAr#ZUl5X60q1
+
+&r!p4cY`MqV-R@HGT2S'PFZr9%m"m!NYaDbV`eV6T6iT(MGkE#Vb[M(i(I[`Gm52
+
+J"E1K$d@0Gr(q3`ITji2BS[NJ2SCm%&,M#XP$,YpQFVrlGK#cSUHVYi2NY'4(e+Z
+
+8h*lYU1"%kNb40eIi$r&jB,i1QI&&VKqUc[FL0`[#3-qSVhQKr([Cr'lZmB%lK2h
+
+eEf3SQGmHqkkDFYbS'pdX$rk0ZP&QZIp'@GDrmN60JIf!rYjZ8*aeH1UTKlYrTpZ
+
+rk$Fe@`DjaIjC6h8bl&@`Gj'AVq4C&jqD"iE@6RR)SEEkL2YlF[KH'rjEQp"QDAi
+
+9a5NAZRk+SMG6MA-1HrpMVPlq&GRP+A,6S@%c[,$Z!qrprVaPKKH3!2G*[4LImf#
+
+Ba,c"JEh$r68pDUl-*-Qk9q&GRFId%D`TrJX2GjFaGi[G!kIeEXUm8&F$#08j1!d
+
+ek+F%(,KFma#CV`TUi9dTX(Ni%JY1daUH9r+![R!8l`ej'!aJ"HI$rj+2MXaa!fi
+
+"2B1i$qRlPirCAZl-9ZBf)dJHKEQTGmK+qiCICja@EAMb!bmZeP'I2Xe&1&!(6rE
+
+P@@00HJ#T,m-&V*0!&Si`Cq&S0a@X3IpR(iM*[+qP9IqjpP"f+pq$j2aNrR(FEqA
+
+6A"i%jVE5r*455l-0r)jRlRc*90,Z@8p51kAaI%5il#4crSIfX6F(RH*+cZ9J6NX
+
+2q`*c!II@!rr1FV`AL!RkXP*9k2`6JMhJ)b!p)Z18kCD4r3qkD+ePqBHN9Skm53U
+
+Z4iChC$BR2l59r$"YacDYIedblH'Gh(MGS`Ve2j3qPQT1`#Ma%[Tq,qqIm@55jd1
+
+ak`@*r'Xk$pRr[S`3jdYH&QB5![EZphX3(3VU1UpNe89iQ4b5aiL6NhkN2r@r`rI
+
+mT!HQD"!EDlBl2Zc$@Ih6H6cZa!jfh*hRj'ZahAK!-DIjRmNZb"ldHi3kE'VqVa(
+
+'DrVQ8FDVSQh4h#RF2meUi(-QXfMQQN-*QN-h1p3RcP-rq[-jcjl[jemZ@Fr3Nq'
+
+Fh"4ZNqqD05@+@Zi1(FkqNIENd9hMA3Q)ebIHZ2X`L"&V6qT@+L2IZl`01A@5d##
+
+SPeKJM+XVXC[UCI@`Hq0P`rNrrF6JXDIq)ST0U@8)3frKjbeF$XrMM[K4ZI(r)(k
+
+VIAN,$r4kp`2fIPFh"p`#23MpCr,K$9'!Q`f[#(K'h-NDUN@1(b#pCp'RbbfLAKk
+
+qAf0@qI#ciKNN1a%Ql38jNMc'YrSYRrDHQ,ED$R%YDKL3!)&mYEcT5(VjC@bL0bl
+
+c#6+HT2`59!-NAL6)PL+lb2XVZUj-jY6j0M8VcA1J-h*qAHZGqD4ZhA,QU1'4B$R
+
+KQC(6bje#['ejk%[F2"rJ3TNE"@p0dfPH(H3+EGlL-j'H[cFAk$XPLp2#AX(5CC*
+
+rLEG'ja8T(rk"Sl9`qb3p-+X6Z+H9[#-f2r4FUR@c89I`[1dSrHjYlmTiGpL$cKM
+
+CXpK$apSMMRF(qQMJHNhGj,2)ZBLq3fifqRElaN`8i*!!+mQhA2(k2iVr'pj"Ge&
+
+*[ZA)dDfjdB!(J12%*c,&,HA"FpcY6f%22-20mc!rLQaEYT-j000Uqk15pHQjqNA
+
+*qY&Nr9aibkbJfD)(jIY52A6Q+GCm$FmGIHjKR'am4SbdY6*ci$,RmqXi2q&TJ3X
+
+YBjGN8,(ET[NhG1DL)E&hkSdQHI2ecP#hUcP(cf1I%HMQ)[#cU96GA'Nb8eS4pSU
+
+CUFD@$rHaRe5U,brr"2TCJMPPbVXR8V1-&"2RZeYhQ21%[chVS+E8kCXRr*hmHDU
+
+q4rXVN6IRUIq,j5Q3!$Ir)2G,kp"IMVe&P#GVHa5Bij!!(lYSA+MMT)EcUjbcLAb
+
+jCB`YdE`[NTpLV[S+T$-dj4&AClGf[`F40@PD-hVDKjSD!2%b'kUY@4rM@MqE2,8
+
+i9rb1*R0@PL!V'@IH$$m8rKE-f-lj5-rMV2'XG6YUD2kk3"Re!IbM[PcJ49,p`CI
+
+,qL0[r4"b&Ik)rE9D@'1UpCerl$$Z(I$-q!RqrMRqrL(V%FL$VA*`L'"FcKVh`'i
+
+QFSZFbcbpiM1mGeLTPc-m9rLc[TXPZ,#bda-pJ@hd[M(cJq8TAk'jpHUGhUVYbmA
+
+r6@j+8,4,MHDFmZ&R*!-am9$bjhcl&Y1GmM*k2#fk#H*Yk*Nm2-Lm$!%2h`fqP9[
+
+1plapRVj!04iqTh-HkaQ`AaXd&lPiTRRcphGN1HBPmlFG+Il&MTc$r(Tk4e#l16'
+
+lhD+C2$!lib6i&MNfr0QKaXffMGR*$ICR9m*m6)S2(YC0pqZ*(FicIcCbbZ4'6$G
+
+cMZBYP4Pl(Zk@b94j%F8,8G%6R12SIp2cGRa&"*RMmYr6*IGM!F%"Z&Q5#FZr98@
+
+N&G(G66+@jhjBlZdFZV[)JKJJ$alHBX[*i1&Qd6fSYN8e[-4Lh#YU+M`0A0,0c8d
+
+r1VZpcD3a8Cbl`m9EV#ehfDrYr'Mhh@A(4`pN"!*AQ&X8XqhHqj!!hp9TD'iaQ88
+
+aB-3li-PT'CQF6d6-r-G%VYbQYG[9Nc'[F#,RXFXKAAfe29q`(pkNX[lNbZbrac`
+
+4[3*'Gc(0qmE-TCV[@(G-GrNZbEchD@#$MV8"QJ1dl-L"pSI[jDIZcH`(,06ap0S
+
+!2'9fGF'6$,jNb"ajDl"V,Mc+*UceSqp'ZVZhC(DeYIpC5e[l0crAjQ4d%1`-6q8
+
+bh%*mVd4HZ6#q9mdBm'BL)b6hIKebF[6kUD0'$QUX3ld+e-M9'ZNmYIP1$HGlEAd
+
+##le0-Sd"FpKqjNBZfZcF5Npr88DFNrURDJkmaR13!$AU)6H25cV[NfSFedZQ28r
+
+M1$C#p8YVcVQEXTjhiT[eb6`3kqJ11*e&!TjTEKrj&PK!q"kV&`8RZ$Y+HJ6k#hM
+
+CF4D'b@m%rGD8HA+CSp6CM`N+GleAp%IL&aNiUl6,[`[CVC!!H6@mXr!FaBRB!A!
+
+RZH4*"rqlA2+rJ,p$%,0Pl[YSkfjM%jm#[mDFSQI3q`D6Z4(H+D*$`$ZpAcq6A"c
+
+616FpqpU%IKX`Y`dbKcdZIe)dJ@rDURpaS(r0q#[hqMZZ(SRH&[b01b*CAr&@q!c
+
+Ucq1qSiaYEEpkp`phJjP10-1McUZ4makI"&b8J#FQ[9YQR02$[XRBkIQqIXjeb'm
+
+amb,h+2`jra*IGPdJm`@I0ErYJLcbb#L&lc#dZ-'0m$GKVL"bM++&Nhej9[,J#Zq
+
+534V-p+eS`8km'c@V(,mp`qR8`&6aIF"[9iph#pl8HqJHHIRie-YiI2R`ijTr-(4
+
+8EeJ"hTJhEZLJFiH,-M'hEI#%5NiFaPl(kIk@3A1![5)IY*Ec&QK[UkJ@hUqJE*+
+
+5ArN88m#qL0rJZlUSm-0bEr(Z$(NR1+J0hpr&hrpIA+Hjm#bhcTAb6ZV8i2[0V"H
+
+JMNTRc4N)Kq9Z+@V-5p6!h[QC11M6&CRjEAM1[S*c03[(LrhB$[mk`6qf)a'D,HV
+
+"VbYB3YRpp8i%La*h![jNQ,ASBQpNR83%[k'MH8BeM0#JbbircAhC$BCf-dNH@q2
+
+B5q[h$0c!Rc*1qjFlYCAamVrG+Gd(8"0k-iYT,a,)LfLh+bVcIpV4F1E3IY`50*0
+
+ZZJahJaN&b5@G`RjGqE)EZehqP(F@191fkEdYd[GTrP&mlG0D#1ae61X9Yqq1YE8
+
+rG#(jB%'$Gp+GG$-i,q',Hl8Qcc+f@mVH1T*ED6IK+G[&Q,1,a9Z`"jm"IJr,$K)
+
+r(0j"b4+mAIc0CCE)HUCl8ML#,54[idrj*Q"I#M"M`@ML`i'p&Cd"['j-)em"[AK
+
+Ak-mj5d`0Z04DhYeJ[QKJeFHh"RaL,A0c`KPYF6)b,$qGUh$!A`#DXQE94SJ@)U8
+
+Rfb9ikXH5LiVD$1*Rk*JPra(UPRqGlalj9p(`dPZY,Si-EFcHeMaP@V+AEHT0Gi$
+
+EG$b#mqBUJapJf9m!Apa,R2'#31H$j,@4j,bb`KrmiJYYG(ZBrj0HTfA`C4!Y#qE
+
+eapL*qBpRK$RM+AD*18I%C`6j0rPH-!0rNcpN4Xb%Takc+D3hi[GjS!CZ[0ASl9&
+
+lbkEHZ+[3U3@qK)bCjZeh*@148meR'FHFDZiLV)$Ia#ECd0jcGf,&"TV3)ch2ImM
+
+eZC2m3HC0jVc`DJXr*YM,kK$M,(ql$R4EcmdZmXpcN!!m41TVZ'm@f22PTfTJcVL
+
+,f%2Xibh`&Ac(!@!"j0`8ha1G@iic0m`blcr2ZQF3lm'&EG+-fiV9X2qZ,V&T2[H
+
+D3+p,*JlME5R0&M1SdjX3khL5pj-kqNVm"KE$,%lP(5P@RjY#hGqSlLfiZ%!lcFV
+
+f19,m'@")k5HdKhUAI3NhShES-Fb"Q09TP&jE2[a[e@XN9+pciJe`ldr#Hq(!m6k
+
+QliQ&jDC,2XjYCLRRc[`VpD55Zla(FK"*RUk*l)(#l,YZCbaVifla'!XHeEk)RAF
+
+PqjVh6Pmb#h!3kY-UrCh1r%fk2pY*iT9&P-@e,2Mfr8M913Ye5MLIDkS'X82qjmh
+
+BMLhN'IEDV*QlN9-fp6jeVfl3q4@6,kapQe6D#3qRprr4!@L$mS$Kb,'QCKmBNYN
+
+(MLAh2DElcVhR[NXH&Zlp[plZ&CbGKTk`Vr+'m(d*j9I(Ecqlp+1BiAI`&eSQjLP
+
+92G"hNRP+#aJRFTr)DELkGJqcJIN@XbI4`l%06Kpb+k52EcXjGYL(k"6C"r'2i#"
+
+JSN,+K3X-A5KF62C-I"HZQ2PLNEN6Q51&5jhdGlL6`&(UUIE-(Z6q2*M(-jh*`(6
+
+APVhjHm*[8*IkBm'#U)(EJPhr%RLc,dT@N!$iIH!@4&18bQRqkjcli&+Kij9mqp9
+
+fTFZPp'XkpCBUAqpRa([H-fdJEfk(Yc[8qA*XA4GmRGUIlLlTI,!lZqYPpZQEZkE
+
+eDfeVV[qYYM@AIE%YLKdaR+ipLfjKJRTHMCd[hlmVqP$0#CiA@`Vq32L-8b8l!M!
+
+AI43kN!"E%$A$5ApCBMIa`m&qVj!!R%PMML6I6m"0ckDmcX6UCG!ad'12r&I4qGj
+
+Xe)jU,@#NHe1HDa(#cUcT22RS(8ZIij3AED(HZM2deQ%@b8FSk`qa5(R3br1@qrB
+
+,pPV+)fl)caIl!1X3NCr6m-1h*2q*h+RaETjSF-r#08SIZp$($r!AIFKYNMkqbA`
+
+$qK#G)IT)hFhaXY[DamVNAT4K4T[HfBZFGfEHF(,Q06Vc+[(M"CGjUTQU14A1jNa
+
+&TjU,QEXke9bLZ1"mhC8+hCA*f*@P[jUVc0&PfF4F8rR2Sj*431DDX8pc!X56mb9
+
+qDL%1$EqETdF`b`bHC6el"Xpr(prSrN[Z5-j'p5lIBVaS[BZqKld6`k(rfRqTB$r
+
+JBkBFS1C#`Kh&2G4mYSU$4"rQl3qm[-6AK2XMGrhVI2Z4`90j6TRGU@iHGpjQYq[
+
+!dB[S&XJG@'lmK)e5Zd5IrSeiPj'k$HKr$A!3Fb[*$D8q*ekcNl`[SBm46N-eIHS
+
+K8#5DZ%"HXUqC21X-Xd$j(IC8HESAi5J8-qBRki[IRCIlE2Q)lc6I4MKAm2jleRC
+
+bAjYeAaYdAq[qcllf(00Cm"hUp"b5ZMd(mBkDr@AB!A+M5jcm%IlGJjj0lakm2$E
+
+T(IqQF*E1kqS[m2[$M[lUfk+,`kdU"!mVQ*8j8)KCiEA!2!(9pS@56fJZXY*GU$H
+
+NUCZdDhKlX[Mlk4eCc"RF%VKEZU2L9I2FAEkIG62)l*r+*jJ[maLk5r[VLqDSfMi
+
+RQ9-bhmhclme60CkD$d,Qq9VfJbp$0Q(emAjk+)5-!`IaGcVRf$f5kiFhMKSUcHl
+
+c'YBd&IP#SPA('rT9J2YKeL5q&afEj3(-ajaQ58k#rkMD-@V!JPcAmV**$R,,N60
+
+,p)KjA-[bVFS1kVZ6a(00pk91hM5ThY5d@1aAhZe1hA`r1l+mrEVN&TBG1XR0D'&
+
+q2A@D%6#l1,9,SRplMH",jQVama8@5#k@i)Rm1jSRKRPBN!$A*XJFf[kh280ZrVm
+
+K,@l+)pr,p!+2%[JDpH@&lIN$m6hd[+[b*2m@jU4c1j(e$8@q21RIcqUb2TN(aRa
+
+96q6li[QUHYi*6lSH8kQDTJ[FUaVGAJqjI9j,+1(jC,ZFNYMAdT+UffZVDS,"mZ(
+
+ZFdR[R2+%%ebCcV)#c@#ZqZ98[*m9FRhjm0UAU"IZ$VipbYm`ZhM(dFca0FCA@A2
+
+dL8J(Z+)%FL0h)UZ8eF2[Ap,[Pl++,L#2Lc@Sp`1Cf6%l+4Z#FDfKmZ(I&mmAeIR
+
+YBNkUCqdc9!ZH4ZF6G`+FPX"[qT(AiXhNNfqSQ3hV,LbQ2U"$&8m!p8+"MVGRlCG
+
+jCXP-bCqX[AC6IqJ$qK2"NcA[p%CI$GGE5EUhFl3hPmGGY,LXJpV3$8'hJYr%E6%
+
+c5rb@'Mfp6Qj6d@!mRd%)qe-"l5DmC4CNaqEH6IPV0N"I[JPq2aZKj`c$6i3D9fL
+
+Ppc)rE"NfLc6l*E5MYil6EmL2F@ZQC%5pPE5kBHMI`HdQhpb1hrJ@dQmKi2aai*q
+
+Cq6CFjMP(r*&8Di,jRXFi3[6KPNf#(K%Z!eV-I))edpA$FGi,iBfEeP*f5XGpFBr
+
+DmIi-INp0&(fiU)2L6EChpZdmqNBr'(jI59SXk)$`'hP-Y$rY@A2Xkc`$Ba2cP'q
+
+Fjh'BCl2-mhMeF5`4[UIMEVk6LVI'L#m1p,,`hi1I,A[l!pBb9Jr(URNZ(@[lRAV
+
+`m!KcTXP'im2lccXH"1LeQ2R&RYMM2+0PkQh@%rXQIBqCLm4E!*JDErib-@qYTl2
+
+)&-mHi"CmXbaPImfcB#B5e,V0UB8C4RL[1lU$ZZ["MD3l`e[mjPk'0P)Z$Ai("c#
+
+DMmKjIL8Ha2`r5cQ@EZ8F5m",b"HmN!"mLd3,J0h4A)K(mpD)0qqY5@jk@X*VarI
+
+Tp6)lB8I!6hb"YG$diX%04XD-c$$P[l4F3#pl`CQh$rMT5ee2eRjq@Mblf"qpbPB
+
+V6RV4R`XHC,KP&A4AR!G4#XFGpM4,eFjf[1$qDqhM8&[jYZGVpqCFkPKE`KP*iC%
+
+B-erLQ3hbpFc`*"Ph1S'CQGdFYlS3A%ffj%#(PV)4h!$fCAA%I*4f"qr(i$ep$2K
+
+fM,k&9Zk)Kf(k2Yc*Xj(E%$0I21-24Fmfp823,"fbYk[EN@-((Q$f,Ed2`cI#q"V
+
+i-'d!TPS02-AHJ8[RXiHmmb"bq6E-!ekcRFQhKq3HckHF93p*2U(jP%IU)G9A&NZ
+
+Z@AS@D$h0d+Ve0*q3!(NBS*CkhAj+XTVLZrT-I-T8k(IaA&-ZlPcaBfFY`50[P(a
+
+[bX(NP`q[q42'8G5-0YfG[9ipC2"1FBAK&Ec0TEFVlm,q'LE%Yj`%*[6fCpM[a1@
+
+pjHlFFcGV36K2pG-qQlNZcXLqbphP21flHT+QIA-2CFV9(R02p2J'mEVfHRb$C%V
+
+`HRb$k+11pRM!!kaDr#D'F!+aS1cc1B*,MZD#5RNd!rpXK1IA"[CU&R`hMhN0m@6
+
+VDImKBd2*`cA[*mklP69Q,V$jmEMhc)a+6kJ6""[1Hd$jPZ(lpN,IPb6lIQHblhR
+
+m$[d+&J*r"b`d&Gp2`!e4IPIVRrl,hKeZ4*f,&*2$"fcHTl9Q,ci4$N#c`83SNh4
+
+GBqE-cQ9Vab2MK2KB@YjSa48cl%'YQCR-f-cDl)'e-P%V@c"T`(r'$j+la-bkr6b
+
+%H))$6cN2!Yc-q,F&RcZI3Y8Z!9G[)(mVh-RDImjUJ&jchZpC2&qXCpP([qFHmIh
+
+`HiChhQV*RI$E6!E1baaHSX`*[HlN$"Sh9jYPfm'ciII9q&f'hqr&l`V+P,1bdpc
+
++ZD&llQ+qVR4AaMl`*k&6lh!(0e"2eF0IB"iLC[keNpQUkTrbP(!qYLYV6mkRJHD
+
+!'ZBGfq0k3X*ESB4pcjUkpdV[0pG4ljKI+@@T)Bl"Yc*mQkAI+[#Y4I1"0L-r"Ah
+
+ma9qPXHBijCdAlEQVMII-&6[dA[V"HqB"'(S[23VQrCA(*hC'F-",f&ee"G"fce*
+
+01$f3!1#&FCIN8U$q%rMFm56NL10VFVD4cTZk&1MY-bPhMm[HPZ+ce`R2qX%VG3k
+
+erjLeHiA8r)$`EY1"%l#[H&q$hf(mVY9-1RaE%qR)hZCNdB&1*B+X'Bp`MU`4,ac
+
+dYdMkQbZiD,!rdbE8JDGpZfMUe[&Y))G6EBq9(-'i%kK4MaT[NaTIN!"lLMHSiH8
+
+)3Bd'e(LVeR#jX-&4CBNAPYCS4)eDVD(qH(L$'ZU(Uc@D8H-Y@N0mMAK28%0pLV6
+
+',05i9'ZiA0c3J'5*6iV@D%'05l5'defd))H[m*9@Sa8eN!!(4'TS0PDm33hKRV&
+
+IEEr+2,H4q@2`bH,l*RM`*YjRaANhm6hJ0q$3h*,S[+,H6RZ`%GkPLkYaee"hSpq
+
+XkmZa"iFmTU#[a)5(6#!2plZK$ePApX#LI%r33#YlP6YlhQcU5DbR%dSfSkG2*hZ
+
+k%cf0-4[HkDQq$lV-2F(!e$+c9,-D#9q('h(6lbAR41d$FdqiI%Rm6DfGH08a+a0
+
+qjq&h"ZX2SBhLhCD-6k+hZDP"-HXiI,XKJBe[BNmjHPcKQqJ(&$rIH,lHc1&m+9i
+
+ZEZcD`ic"9jr!0r#APeflJIPLa93h##rJqjZ4C`hTrCZXpfrU9RLr!)G98Ti6i$A
+
+aK-6[5VbELRH6pGe8I6HCkU'29d4U*L!65h!$i`6Fd-DiD$Q)q9#MJ[Cdj31SfcA
+
+P!'IZ#r`aha2ccCEFNH,0irNUI94ZQ-jaR1,AH2XeelG4TKc1mA23KUpma9b16*1
+
+6fFF6@,Cd#lKiDSX`@qb4m!1HcbIH6r,Mr80Q9JJq%r$5d&UB"fVTA4,IQ-p,TMc
+
+T[Bhh8[$,%0GMR)MF2Gh&GA,cfU3IfEffUje[d"9-*5mrcRNe[PPqP"c-q,Y8!rj
+
+&*H6E+4b*pR(X2h%bR8q[l@FGajhGP0GrRHl0ar6Ze%+MF$aq[`DrFr$l&DaCD$5
+
+Ia'pU)ikMZ`XpJZNA3XSGN!!EI&ai42&S$A`5'SaAb&aZZ*&l@qkj%!"cKf4rHl9
+
+`F0VlbD,KQ5ehV6q6RhMj#kFfJIQ2PcR91c(MHc$M*TlaQT1B[S!pEAM6m!ClPS@
+
+l2CCbcC5rBMqLZGEi,K[[J+ReRHhBqpdpZBAhC#aqFdr'i(F)YjVIqrEN&YU6B**
+
+$IB`eYG`6H,H9F1kbK"R&AY%pBGDES(iYliTSA(+&kj2qjl$1UAViGY&rQ"GXlkl
+
+)ISfAA4cP6`f(#Ii#lifGiCi-F"m&Y(H(pd4e-(eldV5fArL3!$N1reB,6KbF(R$
+
+!20d9m1AB&H(+HhGP(RBPB,1IK1l+6[&V(0J9kJ&l@Sk2l)Vi&Kd[q&VZbQc'-GA
+
+$cDcEHHkZR1VNXYfR%@L(AZ&ckq$VNCh3XqhRKaA(bMfA'pkk-S&K@qp8rJ!iF6E
+
+c3hVR@hPrJAI+D#iViqDm52c$cC%iF"&`de(rJrdpArpkXZFaLClIcrG#HlkHpA3
+
+16mGVd#p`',#Dj"Fkf(-kmaGcSe,rpI$D)(TIA&)&r$cG(QcD!rcF$[cF"2bFB4j
+
+,iZG9`-c`$EZ@p`!C6HVaCJ@q#mi&YPlFKcHS9B"hbr$p6%3e1DAIJcN!Ml2R8am
+
+hPZDQAJE[IQ3&bL01GM(lTbC-$hiRm$f4p(r1&mrZ3*HVJqbjhH2XJI0!aG[#lCJ
+
+pr%9+m,YX26)2%Z0KIf424,F%IN-b+T!!rdZ`jS2lp429!pDJ&fCAfilGDIdJ0b9
+
+p**5h@JIq$0UA3'&Nc4[)-`2Y0ccDa"0$XL9p9R*BB`lTl1P61Zhpk(F'Ci-kFKZ
+
+-al6m$IqlQhmQl@YZIZJV1+1,m0@VhDbCPXd%HL[Fj"PQ6lNY1LmriqCrF2)r0lY
+
+D+G'[IPCZlkFFEp#Ni"aQcN'Q"bm$B%m6kmSU"KC892hP$3Y,GXfHAI@pfE1aBj-
+
+apc,F41cJpD`ASGjjB0DHVkD(CaIZGl&XaeV-M9P,lqEH8cNRkMNATqDLdH`,mZd
+
+EiUmPf1TkaURkl6V4iI606A3,-40`-Z`3bi#2dAG(p@$#`f-q`$PKQG&Gc0ZPCP5
+
+"(Ge-1bTikc1F6ABbFa8bUi"NQC&[AhIdH1*MSA1icZ&a$f[((1FYr1qAS&Ij0$+
+
+$DBi0F2YIC@k,r+6cilEHP*GkAQ0(rTGm"A,[V+0p0f`SHA*4rj9FAr$*GE)[iRm
+
+,NfVHD1&5[ZcQbQ&pd5I*,EL1m9[44-SUP0bEbSf(E$ElGXkl$llQYiKh,i82-&2
+
+-j0UrSlkSI8@2JJq1jT4!6FAIPS-#0l*)X+kpmrYiMNXh2e4Jl[A%6BJZ(4VkqE[
+
+rQRLV*C+AEQFTk9&51GE'J5II%@NI2"Xi+,m9@FrL$`fb9lTb50Hb(UH[([JffCp
+
+VQCpN,H4f$)&E+`Xp$%i!'4VL2rhiJFKIARBJmUm+-TXI4NmcXm%[AEZ@kR%1c+F
+
+3[qJSI,k5c@Fi4TFY)*eC4fk"jS`4V`hkblLXeCMe%[3iLASX)hdDI4*k'TKr`qh
+
+rH2R`jaJRipXGq#Cm#fXD$aP4(V*8HFJ+c,J5rFMHS@D&LfGRf2hi0JhcVSbXYE,
+
+`HfV(+#YVc81l$mM1Y$#1J`F2-dMkAMAfE[i92k"q5YF-AT!!YHC3aR6#kZJI1hi
+
+0kfCjKq+4#mk0q!Da(heCiQ`(iDQD2"KC-jMj5@4Ea0ibNk*TrIFbMhl,i+1RHT-
+
+pB(BDmI!i#EQi,#ZKefZlhD0cm["+kQf&cPEkX$TAkNdDpQ5hl(HH$XEbLB-ripe
+
+FM"d8RJAHAi)jC"GaZkJa3@r#2b[[d-+k,-2AAFMYUCT$Z8([FA4&U[P8ckE&Z"-
+
+A`mmCZ3(!'q-1VX40)ZD52G%m-+VMJBm[-Eeh3k6IprfTh#N2)c0I$hX9rJ0c8rk
+
+Ff,`rYaeiRD*1C)6Mh`me`V[Q'2'1@0PSjUU'02J@ErT`pclX4$'`jQE5Z01l'hZ
+
+`&V85Q)A-9l(%eA`rPFprMm1VJXprcm-1"`%XR41&,bEkUX*[hV%BEYA&m0Im*EL
+
+)DI)Yi-'hLr%YKRH2i4YV91&E%Ymmhj**T5D6H1jjJEPYl(P1r[9Zi$E8`!kS2UU
+
+MH`IV+Se$YKYDS6G81([Fbem5Aip[PIUY%Ka+'2L-HCNUd)[-$he9#!rqAVk$NV&
+
+AmP'(i-I9qBMc$Mf[ijl"8@*1093$2Z'KU[M'M`S1I#r[#E"Q$Ek*EXYUe6Ujb4[
+
+MJe3,Z4MHbrZ&@Y!V[GI4#G)66lN*D-J2j98%eZ,1VPAHPlJd!JiXd2&+N!!d`QX
+
+%`lfAHAM4G8"rbbc!+aqQ60aR(1KiB["XcJZ)0r#A+f%YLH$DpqESM6QFQpHmbJ6
+
+Edkm-IJ"AB6p@%lDI[bFl%pr&)jHH3H"2"20,hLha"R*B3[0`L8mpY0$dTKA0&rN
+
+*DY'm19iMHcUU1E9l$fjm$E*IV0ClYKUBeVbRHX3l82MSDjL2YQaa*H4r1Mrf-mB
+
+F0XIScAX#*C(lJDqkN!!0Mrl[i-NZMlreTPieBc*$eVFpM0lm$'V0Q*U&I@b-q)R
+
+E3li4mA03IP,mN6U2CXSmCSRI4h,BbE%bR-Q`6rG2IQLeSqf@qiIGiBl*(3`cTJc
+
+MYq6aXVNFalFB[e0[X[90YR-Ah9[L8Yah[@Gi)l[a+H#*,f)Z#i+Cq!erY0FIk-9
+
+pXlh*fralaKZTb6Q!1K(b0i5qSVGrp$P@F-iXiA12m%YH$L["302r+U%GQXimKhj
+
+lMk2cTIFjE[S-jVRXVH!TqqCdPCXT)cAf"VAH`lTJHbrp+GkDrY[ZI!jPeHcc"Qa
+
+8(a2bN!",6Yl'E0N*h%9`Lr'Dh!2&P'e4DqDUIqLVpIF*q[Y%qSeHSX@lf!Xk$el
+
+Q`Sh0riRCahH(h[hdIHKCcVKjcKlLAPp,-q3Ef32i@MVYfZ(mQbkR[H'+eB+2'KP
+
+[LTp56j9NJ1JaBf9IVTDpJjC8[*98@q@p)em#(m[c1)Z(B44JM%LbcTH5f$T"(VV
+
+,ejJ2NpG5(&kQGA(il!![%JHdaJhRXlDk`JZ*0rE*TK2p&@VHTLbqIl+r9r2q`RY
+
+4XYP`Kl#2kj!!(j5j'G*e90FJXhkhSrmHeQUQZ5la39Ui)k(CI,I`Ih,EhLhklfh
+
+3pDUfPlamVHc6eH`VC"R8jc)2+MAeRCI&3Qr)CYD)I,Dl'AN'5ab-T[@Zi[PL&bh
+
+[p8c43D5ieK5[9+@B1#BDNfE4ifKf*[(V3AhK@FAI"AF*'4G1#-AX9kAH60j6[-R
+
+&lB,2-ALScpJradacp,hSl2"EI",JKbeD&rcfXSTJAUUES6leN!"RKFZ#bIfkNrH
+
+,G`MeVa6pJXcq5YD&F$I!Imd'Ih#G[R2hbADL1A([pqq%aa-S0cj$pP*f3[h-89r
+
+iqRdl)I@DQ3miX"2kA[!UIS[H(4jJJMra@l2ek%a9jcZ54GhRHZ8H-km5Xr+c0p'
+
+G3+F3L-+2fqHMhbek5TRpZeQ2J(jGV[[$AJV8'J"6FYr@SMqCLr-6aAIK06PAeHS
+
+ecdPSFDjbH%haa`+r+pi4`%r+fd-,BYq0EhY+jUmq$,R`ERU-Z8hkqIZe&Er4%dH
+
+rbre"EG@TbdaQX&l3[JPq*Vr&A,2#@r6[%qDkScdhZ-h*,SaHXj'I-i([E62'f0(
+
+f!2,5@RjKjXh%lhIMpeVmRX!jp,,062aHLGmAi2IbpJqKeM&FD`PqXpBLr'DY,[a
+
+QV6KqXeBEDTi0ES1riGm,Vm*XH!MVlb[`Z`kr'rAh"r'l#VrRkqp2iAF*I[p[q[[
+
+cq&f!hq[epprKGbjqEp2Icj!!4kr,UF&p`#lNMHJ(2*jN33Jmb50mAjP$5,3Ere%
+
+b`9K1-FQ0K1adeIB$NYRIdmV%fE0&q`cf5-k2,c$h@cem#r2biY%NGh#ki'ra)AX
+
+RhfhaEk%q3RDl5I6aiZrd6VlAI!m0-I&22Z[M2-c6*,b0kYf2JaIbG[54*@q0$dL
+
+BXr5lm0fUT@eLrDcP$k,[`kSiEY85F*@P`0,a-Ej[i(XBhm0cJrDJF*c6qEkNDUl
+
+mCFeUqiMQPS5(&c2#"Saib,K-6!IQ1Ch[D1mmC8rU"6rhlXRd5a6,kbl+EVe,F!$
+
+k2FJC1Di3'!,hr3(b,$(FZK3q[)+0dCZR)m-heGZDEkVkVdeRRB[Lp)bpj!@"ZG+
+
+RSC!!-`4hH!lKpaMmhLSkm9!%[j(M-!-FH-BQp-)FbP-&Zc3bhd)q8[@B'9U,f3q
+
+PTrAi6Bq)cIK0,`PQc@9[%Hfe#$h&+(F&jTI+GTFa(Ae1C9`[qp,)ZPZEQIQ1"h%
+
+,p*heccjcT#pUf80(NIp(1$M,b,0Gkl)Ii9G3pcc*L4lDShNd(NPiQi9f*1FXG`e
+
+[j&ELpe*`*0`$B+C'aP0iNj!!1BjKVDE1-G3)[Eir5la(2H&M8Dp@kfP1#ke((X'
+
+[PAb0IB*3#rV%Gr$HXQqA)dJjlRV'LDJK0CdRQrB62%+lVldmSENSJ[f16q"bm2L
+
+YFFjALGcMbTIJ[A%X`4eDKpbZq!9)"L2-"TaT4D&rG4(`5A&2TlN5'42b0Embkp"
+
+RKKkqp*)P*jb0peYB@b,hZjlaRfKcdBqE"IUA2A,DBr4IM,NKNf'B04df6r&)6qN
+
+$2+m,B0CDD!*f3K03JfqAkVG,b9ZMHRJ*iaMFZQQNb5*I+eNCj%CH*Eb#F"pA#Fl
+
+!RDC[KZ+BbjbpU`2'&jd+kJLH`!`AD3rU4k3p#1q)hi+2-&HRpfq8H@B`Rq*P*4'
+
+1iM&q`rHTl%c&XYpe-Kr"#&HShmk(NTV!GiQH5r(KV2rU)3EF)"a%crDYeCl2L@G
+
+"X$j5!ej+lbM[0MdKH%qAk6eGLIY5SlkCNVZ'fK,c0i$flLUqMi*aR%Gcckh#+bL
+
+rCEV%8)#i-R!%CEfG(Q4e#TE+6ALlk$(`*S%hU#Gk1ZABY!qGpGXCIq)fV0GE$Rc
+
+9`2`#hU`5M4)acP@ZcJGqip"b[BhheHE(H6+("I&)[H!4CY38h,*#EpJU[@(%,r6
+
+)f)2IfH3T+hkdX[0AmPlLYp`(r,DlMKZPl`AhB6kQZlZ5pa4hB)rk9T!!-i'QiSD
+
+La'fmM(NQe0L#ZUSVdelNIVQ-@+KM[SJ"D#*qbKb-lYb9LSH%-eLPE`4AqYMRAFa
+
+RqYK(-mchBCp!XqSfiEQL'CSN-aqd1mLQ#3hS![+N!#Dj8[B8Harr(V3AI-XXMQk
+
+qi,,`Hh+jrGHX#kffrj1,ac"IMqH"4[)`CdBq[RVidlaRMXI#2)6AXc[D*VILVF,
+
+cbikm9IKI`@K[&pq'0(G)lTUh6r"G2HXAA*BDe)&'52F2I5+leQA1r@#2iRmaT#9
+
+!aZm(5+p9##dqqiMlUYl+C$13!!020+j0h9[4lh1kc,4'@c88+pRV3rEJe,r"EiH
+
+(+K829B(R,0A-q'fk)p`eD%"U'CqB*[FBI*Fl*YiRRIBadR$KKMkM1'UD[VPBha"
+
+2!F1qLhPfUrQNeZa*eZ3EeZ3E9e2`(6e"d,2`M+UTMHC`CVMRI)k3!2IR,d32ECS
+
+Qc%lpr`lY#[82b'X%24`ba5GhD@CHakI"FfI-!l)rIkPqZY#X`4X$qe,[j[)9rfP
+
+b29P6+"-TleScXJ4,EU2eAYD8ZGa-m2-5Me,E0H5e58+$H'XSH91CJlXHYCR6(rV
+
+kMiSqk,HjH"fA$ZbfLhKGlMrH9*+@)fE1qLPPX)&2kN2B[bE#3*MPFIKfYAl,PPd
+
+ljGYR2,Ik-K8Zk$rC)qCeE+If1!rhDKH`5hDC1HGmlH[+mZ&V"Dq3!$mIm,"3,fH
+
+A3qR&rLfIiX#FNCdTqlM-)2pep(4Q5I4&'pimd&lPKE"ACmUE,llcC[k*0kEY-9f
+
+1ilk)GkPa%`p0m`ilXjCmPr$EFU,JHkAcRIRAm"d'6[LYHh$bMHr0YepM""c1qDk
+
+4rFh1Gl#cqPRQR`rG`bbDZFh*bmC&cfER*@FjQdT2HU,3pa)Da-XCAr&@f6dVa"[
+
+K0c#l)Y6!(EkFG3A`("E2G01T-+Fpp%'ALaj)G*-A40&M$6!IG+4[P6fr3ccHJ-Z
+
+a!a%$M59hSS4U1ab&(J62LZmahV&@4I5ea#lLZpl'R"r+rZ5IbaVZPl+bLJmPl[+
+
+MK)HUKkpK[PMda5i,B-qeiJFJhbjPrjlIC8T%Ahm+cN$ak4'-iGrP"B[!bFT1Tfj
+
+@#hTjXpbXebj!,VqIMH44rC6C`0cqTl$6FYmq`CkZf*@*f#2XbV1*AF&hhC(A[XS
+
+lFX32P*b`b`P@9r-4iVXN8kekeM`Mq61*$q'hQRS[rUTiVjRep(fY[QHQ42&EaA[
+
+eGQ[U2TV-G341D"cm8A%RZXa'QG9h*2[S&p'AH5K!&fQjYFNj,#L"0a4hE0B(IP6
+
+!F(B[9f-[PQZrZ&AJ82(GmTBX,amZBja[[RV3YP`Q[*4bmPR`#0L*QHh"h5R',5S
+
+'0VP21,E,K)qhH[JYI"9q#pqRI-9PI%r`@rJ8k#Xdm`4pkqFMR`3i6-RFMa`AALD
+
+!1mb3!2)kdJIkMSNIff@#Iqm`Kc!(B1-BkfXUS[1[ViVIG,fmZ8ai'ZfP!V@fLTj
+
+!q8M(Jk!IF"+ALGlT$QM-j0l&@1GRY5[aET0`QA@Z$X*UJfY6IK%e9QKYil-$R#Z
+
+cEijec+riFkaMAXUIiaqb,UK[MRALZqh0-BJF@TaM(I-SIA1X%phG(4l*SYPc&I0
+
+FrKb$j)A11BUZSAq1kYpaKfBplVQ+F3VHLFkNci0q'[G929c1mq*XiCPGmTjfbrF
+
+d`JhUfBUEq&V&1'hiGJVR)[Z8Q3$XqeV5C-GV#T!!P5*Tkrdm"GUZ#4&IJH3HN!"
+
+lShbRqGkrPR"NAFfdBH+QHGIQ['!k+'16k+RALeG0c14p%pcLS[,K6iQHZeI6m4D
+
+q@cD6I1@ma,r*F"h[B4&T2H`lm0e&VPi6hqZ"SB5R4*dDV81HYr+%hZ05eZfPH1)
+
+#aFh%MD*0d0lI`[`VhQa&AqS[i2FJI3)lN5ZU1FNhceAmMCaLJ3eiIqN[q1DhL+q
+
+#BQEi1r)q[dA`U[$0Ef%q(Mh8JQqZ"Gpm+AB-YdMIB4E!afpaH,#L&"C42,U&[BC
+
+-4m$pNVZTIGD+hR+mjeh1b[0iSfFC-,2a'-YN,kS%TdU2Vli6Q&Um#`h2)1G@Rqq
+
+rm`HFC+"Ah)XqkHYr&h6GRr!XPPNShfRjSSVrXCli%V!Hhki%9lX5'QrGQ@RXah%
+
+lj@b@leALrc@2[)N[BMb"Eq"#,f+p#EiGKhj8"bVmASc[%RC'I#+S&qIHQ@im6,Z
+
+1hf1*Jm4[i8jkZ3#2UrR&rq&d8Pb-Zk[fHb*QPB1H)rKp2(jRUGrM92D2%%khP[H
+
+)r+jN*ZLbpj!!I`Ap0l(rMk$100kA6l1Ij$6CMkR#$a#Ab%f2X8i"rF*c$cV*6m'
+
+6'PKJG4hI4'Tf!ld6cARJCG%6I$2`'prbp"XcKJ2$e)T[01VKQrTQiKfi&U5k-5q
+
+!I28#b!Gr3'k0(Kh3piP(4cjfIEQC"Mbf9$$3@rKHSmmU*b-'2%mZB`pi[1%lH!'
+
+fT2B"Eb,3`#)RlIJ$Q%d%EeJR#frJUqHp'Gb(+Aar@GpaMRVRa[iGq*f2k8eaHiC
+
+E1&AiE[8,Drk9"k"`JCS&HX&fcJL+'VcGNJr9I2-%Ad%R`KaA2NF3U!,q,b4GilQ
+
+Ei-1L'Vj0H(FPZ!1(ih$A,R9pBR#$Pq+lk(E`(4V*5jNR8bhDTDb,0NlV1GpqAqr
+
+,fG(EDD,f@L"ilde21(J2f1ifHKmc$rlR2,8$HED&Gpl)fJVir8-6ElZKfD`Nrf%
+
++9e+AJZcmm'dbMLaQ(K"20Hk(l)fh(aXrb",Xq9M#Gakm$('1q%6"')pi9A*rXIG
+
+Qp!l0[f35J1FDG'##6qYUER4QEh0B,VQ)1!Id,CP&G3lVHS$,ECFI`A`V5'GXhlF
+
+Qqk8Z*UVlY9VQl[@i((-@64Ya$c+5T,QD2'!Mq[)K)mJPMNiV&fqBZa*[DKL[+@q
+
+CiTVaAGqNF)Rh*S9,m0hA"pcKj#(!Ydqb9N!m)2E2[$3j9qk`Qk[S$`Ch4c2Nl1p
+
+Mih[HQVDrR[F"EK4fZ6+fl1i3pRL9h0Q&JdNXDVFma,`$lL"QFqaUh((UT[LHq"d
+
+c#C,Z%cJq@!+ZSJjeFS#(Q$'p&KbCfq2Y`L%q*Tl0JYYb',IKMZH#4kPh[003UaK
+
+iiMMFMRVJb&I$Sb3,2!VeeRQ+5Bi6(bh*'F,FPVLV`P8kRBIp([F`hMILVq3Mkpe
+
+PQBAQbNCpTrd3I+Up)+rN%#ke,,LLml'mZF4pk*RCCqX`XeV-jTAS,jFbHl&[`DI
+
+iA3iZ3lKbc&YmFE!Rf+fra"[Nahef$1fAj)#cM+mZlbafb1A8%iq!TIMZjh)YCal
+
+2F)Pi1m'[6Zil[c&h#2Y'$j*",Y@$blA*(J5ITAU!EZR,SP0*pD$FERD$CPZ[qb9
+
+fFjjGb(K8)Yjlb4fBm`E+9khh+Z"*CH5L&Sjq@FJ$a,`rp-cDbZq3!('J(,FY2Q'
+
+!pVm3RSfY8@3b"Er6%ReBmRr0)Dr+'8I"qlkCpEfpIF$Iar@Vq58$(I$1C(C(k--
+
+Va0pJS#I0Y`VHmmfX$e-1TB,j,*Y0aAZqeRdCT38$%KY64aVINLfqH)hQ,1$MmC3
+
+R`G2,IGT89MiFS1`DMC'k#lEKrCmb2XFG2)J,(4k$,NIh+l1DF#$b5Q4AeX#l#(P
+
+NS1&["2m4f2Temq'12H"Qi'rl"l3[qFL4L(aie'@KafK(M(p2J*F4F1rjMXr(BBp
+
+Hp"D)E-UBlZ"djT!!SfHJ`q+@$b*+[NX1Kmp(2F-T@h[DEC[Hbii$JmB['U3GciR
+
+FIeJa6[#[1%pR`V1AG"'mbm`)"ijAr)cJb812mZl0i*FXMc&cb$#Rc(QFP9'eMXb
+
+J&%@0h1BD$fGD-Zr))$a,L9GDIe@rk2hkd(F%%CR6b`8ZRSGZpUaPH00jVpH*RK5
+
+CU04lRE`RGDEmIDcUEUNr"AD9(R'MbX9(Shpr8'-Y0"A3NBaC#Iq5iq40mL"p%ai
+
+'[q'EYBP[b#f#*D$&QSihf01XDr&l0@T**JKp$kqr1c"lbH5Bh#"[T3rQ-1R52YM
+
+6A1P4kKj(GF8A(EjZm6dA(iKmEmU"5(I`E0T[p!2FKRlDlIRElq2D[*X[j*5(Ple
+
+ir1P0@e(m20qcib+aRjflpE[S*``q(AP+jZmZb(6Z($)i(mqqC1!FNF@TF5Yb[mL
+
+pJiF5p`AI3jq%p`YpM1)A$C!!4dNal40[9Ia*pbB$fiDqc0kHiZfHFDlQ3#qJ@[%
+
+e&ja,ZBh-ib5RG6IkqFc,@HLTK$a"JAI!E9dNIPMNjr"GFUre,'"q3AQ`Ld5[BER
+
+ZLIhL%cJ,&EeE2pmak`GC(EIZbm5HC02-N@1aK(P8I"22RHFc`6YI5kHI`r`Z8ae
+
+#)f9bT1GA(Ec2-+Y'pTcXJXHAjD5P*a&f@6(!,F!!`#A9`c1Bem6m+r9G&$LQ+I'
+
+q8Rbfd&rmFHc3-Z"afD(JeF$!MC)00rK$I[r*J8c#km6L4rhSqR@!m2)1ICRQ#"j
+
+j0XhJer1d@K1)LiA2`2AL-c#CH8VLKIij#Rmp#9Rli19iIFV,%A0J[SS+i0K+H)G
+
+@)Bmqq1i,Z4ja1RDm!MkePFL&9B9-qRaVqU%,aGF5Fr,UFIEd`J&hJKPmRVmVIm'
+
+GU2ZP$XVjXM)lVfJMKH1GbRbNj9mQVkUq`2T0q#[m9Ym[DTrK982m0rr3)$J(D+@
+
+3!%G3Fd)$ac#6KAL%HK`5ID2hqHq-CXK"2cpMh$RGh%4B%Vq[B#b*'ilHX@16aHI
+
+R#)ie2bl$XS(IjTlL55`,E)bl'#,20I`1E0e%2""QqZ@IC88Q(#CF8"Kjr+Klci'
+
+2lZ*EUhRT,`*hFccjZ"RQR8#c3KebeY2SVFF(+!Gk1-GhLYmpRRcSF(m+0%mQ1'A
+
+Y`q(lJh1hE-6#T8jJ,R89m(QN'"NK`#NHMaaE[+&&)AM$R2XCbLb22BJ$`f-2bNP
+
+Rp#cRVja-2FlIr3EGYSMV1FS-Lq"08PR-Q1'6HUdc+fXRch,i@F288I5GcGRFe01
+
+e%9lFNLm&QDmD1cVkb@0b"IPiPVlZ18bjRF@VMEiJk"mhe2QpbXbNaaRS8EQm%Ra
+
+[J%D6qdPIVBE)AF!#q#epqZmDp9dMGKjmYEc,T@rcD`N()E-$[Z%l0&AHf`R*Ya-
+
+N'f62ITT$pI!R(9rSiHc"IAZmlU6rD0V$&rHd9(-LH*kMH2-Q*pp(+@Xq"MdEJ62
+
+#l"G),dAarJ@@Bik)r6AjQcA$lhN9pRX"1-k&qP(JLV"S8BV&lq!@q+0B9K2clek
+
+1@E3!MeFT4PVXC*&A,&%XrRRcc4FFR'6kX1DNai#r%e,c6D*(Nedi4ha3lS!'4RG
+
+$Fp3i[E,P1BkC@XN9S[8&Apiq$2p9BShRGI"H9KMeF0U&ZG,IAVAk1XI6m4YFbGQ
+
+1[qLqHpXqYrYBjaF*[cH59VK0[4T+i0Z`&(m$-cjR6"aHZd[`$Yj3@H`0G3bmSE,
+
+&'fSP[Uh'0qZlT$-QGEY3Ml@AS,CA&hA`AH[LffTm'mi89X'iU(ViFY%E+&j+D`+
+
+KckYJrcVCHI"-i1C%2q0m6b@h@Eqr-raji,F0[MCK1SLhAST[I`!XJ(V`F8cZ4dq
+
+#6`rPrr&pa5XNYeI2jD,R'p*&1aa$2B(LQ#jSKEqVr%-DEd3VDm(aiaYa4Ph0aeM
+
+6B0RkPl1Q5M5L&Db6pA50qSjmVG`9I3GXjQYVfXLE8r$4,3R18cJ,m*dqeLq9[!d
+
+r0T1!kD%&,'GI(FZM5Rp(mIm"jUr(Hf4FkINdmEEdSFGlC'rUC[mG[(Z)qL82SAU
+
+Rc#[icZYYIB"kK5iRJ)a3Nm'99IcKI@CC*!+-JQrdX*jr&cJTI$-1V5)+hebjVkI
+
+)IDdHRXkiR6L`P2L[,d+Ap9Qc6c2Lilk@#lm!A)KDRk0[(MDMGlVa&qS[9XDqMX*
+
+[21dCF[J0qXACHpPVhBmhmRj`YQNYPh(3mAGaP1pM[![D4p%$!4-f+hj`hXSR`PX
+
+j&'VhSYpc*-rB2(J41"q0H9jS%-jK(5rH[4([cU3FBTJ2X23NaKRP!rBKiLdXbhq
+
+"`r%VPLMMHq&R4%JHT"N!$kK1@A&UXr!NCC+R40mVhYFHY%rZ,A0@Xajc!Q!'f0%
+
+`D`P[JBD,fS&"lKmDN!!GTleBKF[U@$XIZa&MRe(e#!"AG+Ei-I*EmSdFp08'(F"
+
+V`5&-C4qeX&QS[rp3ImIdpj[e0h%-lRm3RKA""[`&pjBp"ErKJCEp(I`'ch2X(2b
+
+QKq"*i"GRNJF4q)pmF0R8X*!!MkEr"If2U#rKIDCHN!!kA1CKTMm5q1e!(qSGee`
+
+,SK`k'0b*8,RpR*2[HaAGCRhcp&*mAkDm2AYG61r)$p22dHQLT4HI4jGCi&D`edE
+
+41ipGVCQ$ZHFeMYj'Z(RF+r1Rc&i2cecd@%"[,"-cq%GNL(-CqqMKKpVD8fD$BL[
+
+Xr&Q-El&[d(58UUrA@C)r6A`+RVj(mmB0Hjcfm3E8Rq&ZRL0h4Qlckd92D&lU[YI
+
+3fAaRRDC,p5AR#"k4pqHbEaKRKpV&`!CAiBhkNK'M(Fe3T6i*kp"A420*Y@M1`#c
+
+T6qqZ`ifiCe91(FNrK*RJYqE$1BAhNCQ(H3ZB3CNq"&i[q)kl%LL3!&dHaja4kZe
+
+Am0GbIQGmqIr0SSBG*6pA29c)H`QGk4@i,h91cJK`"R+[EBGLH!20caQX9bDQ!FG
+
+bKGBa[pBRcbmIRX6l6Sm3jdGXfF0G$UF$h0cGeICH9mF$lJ$C`'Z3!+Yd#r"Y44F
+
+mA1&03Dq0lKKMX0HcVKpil!6Q5R+p5d)l[)XaZm8m1r%(2i[h'reBYXh3%LIc-Vc
+
++GX$r86Qc'm!4Ij!!EXUE@$I!(!VmlRc$*)1lD!HZB8pBCSpNC[6%ldK11Q"8pCC
+
+NCV&qMec92*r,H*!!RQR0i)H3!)eG[*QKIAjUkk23qX),22%JFSmK0c2IVIkUq5K
+
+a9mhih[J`DX($'"NGRYVk2'(5F`p%RdBZ-Q4Mjl[9hc'Cf0R*q-dX$aAi,4PD5MG
+
+iUj!!k4QkY$@FGe'e+*pP(brard@GP9q&N5*b4&B26aDIBXeB9FC[NYpRhSMlJ[I
+
+#FjI[a"e6[imDD%96Z4EJ1``Z"1q+e9F8rMIh5cjhidDC9k+EEU1q&8qTFQKfqVA
+
+#Uf5IhLXqK*T09Mc6i!eD6rFEhJ'9NM@K32Jcj)rHji(%Q5AhFrmH(bBl$lphl#M
+
+ZNrL9LDiDYk'4XQ13!0r'IXShD,AdIK5)$dRbj`[+Kh2C[b,ZkdrF00C)rM[()hc
+
+ZSlKIKl3L6LI#2+qH$JhHENi[VMZkNh"FhQCSrZRRECJY!JdfmZIpFJl`16`#cT4
+
+m"&md(ff0`EHAp`R[&(1F+ITTid2!H86"3B+r&Ck%($he4G01FN6JFG4h4V(9@HU
+
+l!Rm"e!G[#LjC0$Kje,2bRK29Ca$D$p9pL,Fr1H*8$I0[H%'hRGEYTA5Pc*GC"aa
+
+l+Z&TIX1Hc-@l"(lAUhjVK[kq8(d&Ep6Ilm"[H[r3CjLrLl41-rX-CjMjl$1FB5K
+
+E)hpIaRl$'HB,UK1lJV14CTMEpIGEm4YF9#!#Mma*q0f'her$EhJ1MINdIMFR0EF
+
+&V&1$AT4lR(SRhR4i*l`DhY*IjGAiAC5XNIqf2mCIF`BB`mF[D$P`"jb'4l6$,RY
+
+2mY8Vq"l`hY`X(Z(i2B&Z8YmGb*LHe*&R3`FiIdkR,kMl@%#h"RYH9l3&12q,TT)
+
+d,1El8!rF'8Bpk!U$qkC(l1(56Zmac26N1ChH)jMa[(Ve'F9Iq0#'i*NFfSqrp1+
+
+(lSkm53LDPY!Zr&e(qilId+1%YZ-[p8Mda&b"[kJ9fS5Di%K#d1'&i#dA@SHrm$!
+
+*)@1'H)R"RcH!@J(8$qbXV-QF56X5Vr&Q4HTPCkJpjKaaTfSTM`%e!UCTVXA[1Q3
+
+6ESJp56jX3FT*LIh`q00G#Iidf10UMm8M0MK)hb9$1YqK(kH94KmV@5[6iGP-qK"
+
+mAbVIUF&%VK,K9B*akKZrirM0hXQ[0Qfqhpb+6"#[*"jCI&4[&Zd*Er,m,4I3rC@
+
+m`%lr1,#I6UG1rX%`eQEX+Idi*HIm3$hFLXmQGKUqX(+22BeiKFiY"ce%m,Z)jSN
+
+D$I"(Sqjh&f[2N!$*"hci$ZC#421pidrT0Z$pFRS[H!*kEIbZTr`DTVdfVqX*l$I
+
+%'p[IHjkMRB)f$KR$INCm51hTQk4eG8q&pf'H'G[0D[[3Ya2c4GiCf92C@Hjr)mf
+
+4H5V-ji9i5'BVHPRPeKYBpjcmkmG9,iUCMCIF!X*PrG2MlqQdrIaGbQ2"lm)b,JJ
+
+'*"q(Ee(`fSVAN!"p3$@iRUkRJ0j$mb&i$2Y%hRJ#[R[B5qF4CCdDji1rieP[RRc
+
+cZ9pl(fSH1p@2@@B*TkqUalFS12%*V!90%*GDU$cHkpMR"R2r'((k&G(+"9AaaC@
+
+1MJmmMHUb6,X(RXRmpApapUrcf+9d3Yi1q(IL9-GIMhjpUJGEJGh!$Bf2+T,Gk-*
+
+Zi)kEIM@203I853Sf29AbHAh46(KlCQG+2N9rCX*6idC-d&`H4DJKpChh$IT4rUZ
+
+RN!$[PpfB8q5Yi[A4HDHm5AIKKQXH!2%32*AVBSH%6r0pC3)AiDh6hHcAKML[HYQ
+
+I[A(*Yh1Uj'5J[N(iXe2CT`qlic`%Sj5c"Efk2#A`V5TdI&NalkMic8[Y+2Z*QGj
+
+!GGR`3+AIpHfrJ6`6`XQH*,jS6KHK2@ZH'I@TG2c%aHA$imARk"E5Kq6cAN&$"br
+
+T3Uk(GkmP$BIiY3rQ8'"'&I"@&CS4)pca81i"[*Q-@JANRk0q,cG`VR*qikfSf!`
+
+r%@EF@4%-)8HrjVd46qP6@"H%qK@YYAL[qV%Uc5Y5JckVm(BDjUXk&[%"rerB5j!
+
+!A!ej*01-i%DH`VbdC'2$A&`[c$`L1)TBp)YQ%V+b-"F0qVL*q9(GUq4'RBIHeji
+
+Tl-0P0i$CSbB5$[6a8E)d98ppIeiV[MVB'p`9C()6[SihY"Mp5"hV*aTkb9Z@dZ(
+
+U[TiLHEA'Hb1R22+GVqk$,`QQ3CDV[2ijR"GKIGmF8d8jVUU(cq1lP4`)`%Gc`ES
+
+qc'[2rF"5A5Dccf1UKQDcMf9N+$MB5pMNI[3bF-[B(r#!F1lX!hk,L`J6E%4Z[k4
+
+Y,Zm$(bdp,6$Ce%Iem-HBPf)YiMGl)rHEEk`Z-p`Y3MDY[#(S9#Ul6H"C'hhS(+T
+
+S$VM6qrMcJl-!*V1jCU-rF"b"!(iMEplZAXU`P4``[ISq+[-iJHmkXR#GdSpXA-b
+
+fKCVjqPEZArVYSCPi1V#TDmG"lp,#HGIZ@EX%R(NGCV2Fm61ahq*$JYq9a+&lfJl
+
+eGbb'*dHPjZXSTCY4E@pL(rY8cMVkfeISYb*mUp4[b-1+[Y#2C"P1IPdmJkN(%@e
+
+)KQ5)`AfLTa$j9CG[$2MrRpcFI9fD'qa1l1C-8pq(h&plUV),qS$lpm5!ElZ3!)X
+
+A@@cTEB5Hihh3U`cQ!&c8PfHDqqDJpS4!!ID[X"pe-!2alJ&'NCa9Q,GiHE-(0jH
+
+4AZBQHcQ6HQ'prrJ+k5m`4mXPJdb*1Hbl5@iIGalBirKhqfNfdEIQZJ"cK@q"lC,
+
+1e@8T5dE0HX+-[&HRQCj6Xm!F*4qSbme!AG*[jlVil4d*m%kJ"mmlA(CDH1k2*A)
+
+kU"G0il[D0$mA"qp32H0he-1qR$#b,c-'+C26)qNG@Ih1lXHa!hAUEm)pDAPr6pD
+
+q2GXJcdrf3M0dR*!!hJ[JPliG1kLRmINFjREPV0Hc4X%b[$%2F2aKc2ZcZ(28F5"
+
+2PGb&r6N6HHqfZ6-(*V'lX(rQd&+iQA[h8QHqBf4ZU)0p&Vd+DhSC&iGR[R0NAe"
+
+[P#Z+Q@rN2c((hNjclp$XJY$D)3YpekkZC@[VSGHTljUlYVB,'!6l8"0D66Mb9Db
+
+M8$rp9c%[8'erLA16+@IfTkVar$1HPq8APLb$XNrkl8h*EmJhY+!+q!fj(J-9I5@
+
+H!-mmD#VlTZ00e,58$fHbAieJ[U&hkr%1HE[hQ)bISAl!hQaDqT!!UArMpAJc0H0
+
+E3jCT!DCY!!iVK&C3I-[*3@`mMrVB-4@D0FRY36j&kV)@CS!H&q1Yj03MAfMed-2
+
+6l-9,cRhM4jfq!i0p0p1hR#pSAFfQ$6m@QmeIFBeh8!mjAm"lpF(&h#d6)[d625b
+
+PQU+!Tj9i$HB-8Nr&e-h&Hh!&Fjl"QjNAJ&-ihXf$Gl#ALhl9bdbRPr'LEcl8bjK
+
+IpA+kfi[QJ2Jp!611LYj8lXcYR)'cfVj(XV6)EFTap(l3#pcjj8GafdEj5()FZ21
+
+0T&0afF4j@l(lGFl0P9YmS3GF![Ij5IEDfc+EHYlYj&8FeR!BCbFk)@5ckjbVq8T
+
+rk15TUj2Fk[3Fr#6Rak4AX'8(Ik1Eq92eaF[Cfl!6ZQ5VlH@IBfiQm`E)k3('Ymb
+
+PDpQ$4fYlZH*'Xj'NH4$cmVB-c8RfR4r-UPXR'X%lH"q+I$l#-T)Ap3!H#AZ#6QC
+
+!FLIN8m$2+,q6(*CXe+P-aErQDrVQe-0Fi1#FkR91PNIpa6N9RjN6F%-Y[*mNCmQ
+
+[Cp9hBaEfdBh4@4c(IYPqTYRM@,q+fb+BK,F(IF[q)hH)B",&@FFa$beC4BNAQYB
+
+fpm[["[hH4Yp0Ec6Ab@-qG*YLj[l(SFeFa,cAF["Hp`$[i3i+pN0ri*l!0`(rh32
+
+FGbF`),,"GRVA9J!2NS1+2AXVE1dGh`D1H3ViYZ6QIEf%Q`5r6IBXCTi-0p0ZrJQ
+
+TQmplIi!M'Z2TFrC[Bl%a`(TR-Vq8`J2%!L1lqi"EZ`bee`F+qXl(2#DCbmZ(i50
+
+2$LkBdG,h#Ea0!"[kEm@R6GkHKlH0H(Z,TfaS%r0lZ824JGkq*c`93r%#-iFi5Ej
+
+EB,,kl[18$QeL(L0L4l0l8A2@d0HGQPZSCUYENqqdCZ23el9QBhD[2AYJUMfK(lc
+
+L6Yc"arN1TR+X9XTpI*acV&JH9IMF(UYkQJV'!0Af@[kY[&ri5%rBZAhK!FVZE6N
+
+e'RJ2NIGBk`3@B9jcKhk2ji)qfIpME[EA[[iIBlpl[rq6H&pLTTK[kTjJ(p@3!'`
+
+[a$TlJV[SZfK0U3[SK[B8mk!rG5Rb2!@KijMPh)35ZJRK`k6YU)1HL'pV0!X40%6
+
+Ek&e&(h,Ilc%$8r[aHb1mDIDBrURpq%dr,Fk+[P[Ja8AI%6-c0@p("Z9*&hj%Ha&
+
+ZIT(18l2-!Km*Tk0k*H&LG!pqk@Em%@`U'[0MR*a[`PGiG92hM&U&NEZdaEP,R#&
+
+beQfN@@-HhGU[B$[MmDQ4mMK9I`Grb9M6hm&M4!H3!+VPi@RNp-50$+9RXFfG"AB
+
+)XkLJRF3XZU62RDalX&QdbRafm[klIA"lTGlH@@l1*RQ6RS0Qp1Y*cf((LCeiGSF
+
+c5lIl1K2TAqkIlCeb"lU[cHSeBMZbdmfjV$XbMRN!EdG5''*N*MY2l-Dc`D(0ZhU
+
+(SRfp3e9(HiG+#32Z!#B-XUBM@DSD#-0!PGe[(2e&[3cHRm&kkhp4E`cR3aLXYrJ
+
+Ap5,--3h@DdcHrmdRlrm'h2m%hrmZXr2dMMb2XhDRF*EbDImNfF96f#&p*hTl'Z*
+
++ahL"HhhFKjl!ard6jer`prN%c5rc*XQ)2pl!RfrT$'Ld&lh,%d`4,d5RBpP5MEf
+
+'(Mij%1aP6F98i&cX#c-3'UmZpfYBZa#UF,MF26(iCRAKIJA09Q$eTF5[3KqcH+J
+
+$HB3$fAR[lNbAGh%IHYUc0PJ`0*rU4"i&YeP+R",Q!Zq54jR(XXaM`%(3SKVAlr!
+
+,hV3jZFHmHFN0IVAQfMQ2miXaJc$IJkXm!6Va`&XiT@X`maIB1`50MhrrrZ8HK1V
+
+GhB9fMIY!6X+iL66Ah3cG&r4Hf,(K2P6M%B,1"PUEMCreCP,'Bqa@$,m,m,XEh-*
+
+IB@mUKkV-YrUqlJdSTpk![ZQa8TrDiprJN!#3!'K"d$0RETjhb-J`N6-&E5cfCZ2
+
+1Y$,(JhYbi-kd#mphi-k!9p'F8D)P@0UhaKX9h9"`)qi(Xl%ZTrXTXrd8lX,iB0l
+
+3h1bTq&Z)II*[K2MEr+0i9B$MJ[m#Ed4G-MXBEX4ZZK'9EUiU`Df[BY`D-arrXTX
+
+eM&a-5XG!cK8hSLGp%eDl0`%HX[pk%pEqpjY3d6F"1r&Z-j9f-,AVLC&G[m2ESlY
+
+1(4Th[B'a126)ril&3k)&iEjMR[kq&c$Zh6M,5hUa@Ec[f1[p[0Q5ei%V(Z"pjki
+
+M`a0e"mR0i(+f&I4#Vl@)Y52Nd$V!S8eP[UblVphE*hXIfTr#$AZ@$J),j130,G@
+
+G6q%#k+'pE+qflekZkG5q&a!'jXjA$jqYZBE1BAb+2VAHllLhdhe"9c1#Ql3&11c
+
+ri"B+I0KIVEqP",b2FY(FmC+q+c(rGd0,`GlHI4Kh$M-IRr%Yh-c+S@TS)MlTh5I
+
+l(34R(kc51Eq%f3Ym4DQHrAdq66hLJlALAaeNlh+(QHJjC[Y6G@UR[$c`Z#rF2Aq
+
+rFY3ISeKdC[pP[dT(0$RJ2IkGZmNS6GhLe(k9pPhN(5$Y*GrZQBhp3UCYDNhdIXT
+
+qEG(l@DIh8h,XriBAb5K,pHh[f(M1ZB,GhN&H+6&cE`i`dJ0[hmcERS'Q8Ab!KQq
+
+QKm9&idMY%@jQh-%fcf(bM,i6Q$aM-ACb$HDlJQmVl`aZkl!H,@0I(plXU8AY'E`
+
+[clKB#aLNf[iTkb603iZhYdARBAGL*pf1qY5-0*[4FHb2%M26q2l)MA#BkcFhBX[
+
+)$3DrJKZNZIYHZSAEh&Z)fjh5(cBip8IUqMUc#i"&'hb,FCm9L`hFk@@q#Vh6m!!
+
+*pUEQreZ-i1R51#2rPTbUQXIJ"XPp(&cRl*YrVfARfTap8ZiBRQAZAZ01db1rEaq
+
+c&Im@-IlpVrZiHq4QJb2ijhd-qee1LlFqYBrdK(LH"`N(R,V#Je6ik[QH$GheCEk
+
+UYcL3!2pc*m2qc05Fr*dmQAP,p-pXZ2"LqI!Fk%2hq5%pTmRj1@GjHdilp%I-eEq
+
+Nb3QrVaeka-R5mcqd3cpRE[djlG#(0*2FLh-kSKhk4qBBAYB1pHE!AY$)1P61BZr
+
+VSZpcfU'pVlZjX)hA9FmqdBJpa*bXD)If[LjqIAl[`liKcr@YqIVm[TAhYliPVe,
+
+b*GEMZQ`IeVIQHMh5YqqAXB$V@%r`C(QcNm8Cr[P[&Kh#N8a*Q"[eI-b+L`cq1eK
+
+E-EMEm*[C*YjTXZ2GV'rreBll@&MeeI3(b+0[UK--KrTQdHlpL,(a&[kf6E*Dr-X
+
+10&)@r@Ulq,ejZdc'e*@@)DGAq3*MZKk-$A8ph8dlZbcf((,0)TGaqIQN+`aZ&Er
+
+2B%6mmfrPHE3L0`EHc)S0Qr(LEaaF3Yl2f!h12emp4*La4Vi0C$(MMTUIMV`h[cE
+
+aI8-[c'D(I0VPV0d3AkTEN!#K"(Rcm8EZ",9"eLpckI'YHbpDGI%(3EjKH!r4Sh0
+
+pC$crAPX)M4PQd5,DaSA-NGRH,J2fBCB1kSB@LhI'3ZCUl(dFr,"lhkUp&iJ[h-,
+
+8rYG"8qRUa&c2SjjZcS,2V"5F&li,4f"p)!Z*0f1q&Am%pFe-kcVc@'-Ur+cN'PM
+
+)A&eR2r!KY+ZUhHbTT,PMljY2jcP1jkd5$eV0GNeYSZU@"Zr&3%h,kFbDUYXi8Y0
+
+jc&V0pM-eBqEZCi#aYVTF$lP`ih[-@f-&-2JLh,KCG115d8!H[RIKHc0rA`jmqdP
+
+JqSA`%jPZ)N-aD-!@QPe$pd'rYG$-Gpl3P`-qTHKAH,SVdVHkqb3HLk(A1,4NK81
+
+cJ+@C@hh[cb4RI90m&fNSNbqC21kebic[q`hriVk*rJVLeDU2[mVj304[*0a-Z*`
+
+k4rDeXF0IlhUJR1Th2&$%Hi6cf6MEcckS-E2fEi$eY[ibfaMfBa9fV!9k9[96j0h
+
+X`bdEi#@IKcZA$kqG2-%ZRD`9aHe+d)dQ(N(IKHpMQ18ZKJ%ISVHYdlPrfX-TfJ0
+
+Zq%J2i,#p(LTCJdTG#V@TQ"@i)h#9e'I[CFaEEAq5Xhm6,k9`80eT$`ERkqfb)k6
+
+dVA)cC'q6cc'qUVBr)4KA2)NAX$mNEb[U-QHIdmR+EE'kFVY39h6hQTZUbmQ($kZ
+
+l&fFK-d"pd94VhehLHq$h,IfLKZb8p5Jma9#2U4cM[)q@T9,eZlK"Uq%6J$XbPMd
+
+$-6r4@q21V#DF5$d&hSKIC@U[$RX+#NCZ8Tm(qXVF59U&KBFiHaQad0jAaIpHm2X
+
+[Q6qVYYYce$I'C@VE+PUcm%jR$X6!@j!!epETN!#G2MNpcb(prh0Di,#V955Q&Jl
+
+-CFG($HV-rN9I&KD1NaU6+kQAR*%FqY5BBGEQGlZ&Ei2Jaf3,DqX1DYQ'Ek1R)pa
+
+iTD0Pqcjc$H`6'3Y#rjrH,Tc3fh%24'rhIH9DT"qhB`Qq'EU$p!r*'iS'#$IPX8G
+
++kJd`&A)%R-SkZV3ZN!!HNFJ8+2JEp@T6'AE`6QpQdeV+pXGhp$[Q1q@eG,II"(m
+
+jDNITiq"bEU('H0CQ5XER[Arl35i@ai1)ILPjR1pHkVBG`+Q#Dc@ELGlFjq[&61H
+
+S*jkbYe*Ge5(Np%*h-![kpQE5"8)(A`FY`PaS%KTa(pY`(eZKJkGqUrN%&JYY)Je
+
+jmMJmUr,`q`jc1H[24[99kl(Ei(fm'`GYf-EPSiTF$30djG#+,fI2)AV,S1k`lQ&
+
+-b+e*I,`!Q46kq9k[lN,8rC*EYc+PPjJ50p-ri)@E4`%[qrA!-IIb2j,G$EkmPR8
+
+XkZ5Pm2RM9c$QBCiCUd0ZTB[p+QDmH5GUc58p0c%S2B%fJXrC8hSBA#Ne[dmaVU2
+
+qJIGX)d)K*+[!&H#1EB3*2l5Z"81NQ`qBbiHZh!Fp%6)hl2eVbD@@I*'a#VPqm[8
+
+2JVpj%2RIEdI1#mcZ!HBR-B-(iIA-Ym5A$f+@V1(j@Ihk,KH-UR#e!H-(FC1rmdG
+
+[D@"61XfA--UBaHkGKdH"iSE[-,Eh0,"lhe3Ib*-BFq,1E43qpKmeYrjh('dX2&A
+
+R96q+1hI)Pi)F$A'JjKI[j4Pf8'rSbmp4[2Fr-Ljd-rPh$$1QfCQYi(R&ipLCE`[
+
+@mRH'fA(qE@IQ*[ZUelk`0pp@[b[CQe,-6[JEcmFZqHEV$Kirl,p,EaEQ`&B0C`2
+
+TqV!V+drX#M*3bDlmh-eVMfr#+f%1LRZF*Z-hZq,a-r!+XMhjPRM0T'p,5KrcUch
+
+aq"TIArdYpSh`Em[2'IqkV*IdAF#pV"+1D5l[blp`6'-5ZP(FBFf6J,S0fT0`6R-
+
+GrBIfG0@[1+HU86XCMe4#Qb6FdM2#pf#I$f9-5@GHK2H$HMEYe`23Ic%I2T,m$3j
+
+k,h0#,h)U+Gf"VcRB)Yj5QS'rR[RJj(m3EbRkcIEecIarUN&)(ZIXr#pU0!l-pIY
+
+Rr'mdZkVfGmCrQqP`Ih,(K[VcFc(Z%8r!SrhjHI[&6`liQVjLkmVY2qHp-5j$I(r
+
+T2jrfK1[c4aZEIFS6VYH(BS(LEr&S5qQEHchDaX+hFTm[A3PmMaDphlHRFrAmj!C
+
+m3Dahja%hdR[d(Gp!pYj0Q(FBFiipS5&&R9iFeR`5rrIb"Q0GVQ%MF+r0ZK,p,Q(
+
+1+0A(51re)h0h0FRRTIQ1VJ,`(H!8$[!GBed1`XeJbPSl(PTlKJ-FkqTYpL$+fAr
+
+RrmC@R135"rQrRbMrYdPj,PqR0FT6Th0[iVi+jN4ppG[5E!2Q`EhTe1dpb'09fmm
+
++(`e2C,rqrDcYq(9pTkqhh&5TI'Q5ej3q2248&krkD[[MM%XNRe1M13rIK9qfl"F
+
+RiV[,$-p-0IYk6R(A#I&3Zjre0YAf5[ArZjpa3mamP2@G0JrQYKK(pc,aB2IK51f
+
+8ECSE*daj5hq((e6VYE!@f"cH@MhVb!p1-Z8P2)ASUikb0b!6m5,N#-bMqe8D(ed
+
+PhXera2XT1!0hPr[9MfN5V#hDLk(fDYiH9[lM2[&QNaaRel-I'('4j#M"6'81lCl
+
+DFVZ9GdPpkYiV[UYiTh9Ic4j%k1@9EKEP[5ml[Q!frf$iIAd%lX4eV+N`[03YFrc
+
+eIEP10$pkRrkel[AX,f*hkCrViKjerrGlp)Tbqc,@FpNpJ[l[(2DmX([d5R`h2p2
+
+KHq6hV$ZEmVYK,q+[T9V#FeJ2I'4Z`R0AfhQmCdGUj8LYdf6R$pp+iG[@ZCS5a9h
+
+!IDG*2J[4P-b@l(&18k)ehS3DSPp46FPXm@mpiN&HEDri,r26'i+G3Fi1HR3LFk,
+
+U29lHEpZe6ZbDq[MQd$ILi0Ai(6-IBHr-hh(iZ#fel&h($#Eq6(!cAm'i5,Q'T$2
+
+lJlhBIA1p((1b&q&UYCFHK`Xme!Y[RZXPkf3[JR@X&mdTq-+Y51XU4QrKmHAf01E
+
+ml"Dq#Yr0leKZ)A$)'jMr1SM0HM@aiMqSr04HbGdrb198-LqhpbG1hQI$26q8h*(
+
+#LdeR[")c(qDGN8b2HhmLqEKqUbhH2iqRH"F(jk(DY,d(1DG(DKk5$dhRdFLD6*h
+
+$9XjVqH)FdMUS$ZLJQYC'0%Y`-fDKfP2Ul["GZEZIFSq5DBIDZliCY8,hN!#*r!#
+
+c@#qdpk$Ni[&QY9Adcp5&GZ*[&qT[B%eYA[3Kr!AALAHUii0l[I284Ph01kEHRT,
+
+9MIU&e'`2jqVUe4,ZrA[A0fM81h`IrNhlKZZHb9dcc&+&[X!ER5+lKqr9`bYCMfG
+
+iKCRN+r"HlllNp,P@p'rkAV+3!11pdqiK&m#eV02HT`mmP0H'qhJRlqlU%,)'DGC
+
+Lh%,a*hq6q+0Ue[c5e$aeepl0rNj@0m2*S`82,H%`QAe&-[()lX'hFc6El2jCV"U
+
+C"E)"a-cPjkTf6V,L@+k(#(PZHr2C0iGc'%G+,ME-MCK3jhB9icqC$rT*cHH!PV)
+
+rZcSdrBSpeIIJljP6'Vbl$F*rr%$i$lQY2j!!I#Ui"EaGSKN!Gd)2Cq(0HFrkhL&
+
+6d6'LNG4Hh&dmc+ReF6[`("9Z4qH&r",8"dJ1Bp&5lhh6pDC9MF)XaN[8YBXA,ZC
+
+QAVJ210m%imJmYR$H*rp1Ef(r50Xaf3[Nqe-0J0E6qIrEr&+c3rBDjIp9%p!JZ1*
+
+H[N'$QS"01L2&1Ik-a2HcfRj5ETI-r$f1r[fhZSbaiD4HTTRdQDV&H-rrVrmG'dR
+
+f-8YdU&pNI+VlmRh99Er%SDEeYGAfFYkjD[X#mIAJQji'e`XC0B!VVPCZmEAXQDG
+
+Fb$912Zj4$5rd16rPI"@qYm6V(+i*I0$V4)FdK+061D3X+eTMZIdpjNGXRaYPRlr
+
++2-[J2XGP9fFbhV%Gbk0G6A23Q!-p5r-)HqT1cQ5[!+mHGR*I2HbRq#L!LjHX)2!
+
+QN!$EN9aqLQmqN!$A*QC@h!0[TL@X"i01ImY,TZ`jMkNBKXkpCeGQVld,(Nf9"Ee
+
+fX!LHL3[LVMF`Y-UG&Q1*%[+NTPC)G(bUjkYd-ReZR$Jk2R3HG*(628iHNSUqfD2
+
+K`aV*JriX9Rlm4kaR5ci!,a[p,MPqNTh`DhrYBICmhA-q[&r4erdGScHKRbAfhd0
+
+[1Gi-f4jc1@[k6ahp#$6hl!GF`VICTm6kiAI"(G*23pp8D!@KHpV"0bCTljU+fL[
+
+XZq#EpBQGd&iNS5m+MZr,m@542J"c@SGpQihIDh4HYHK(mPpBIrMq,GEG5Ar[(*J
+
+k0*0mj(H)CYLIH49b'`Nr9Sj-Zk94iFAfP-,(-lS2@XFGc)h6fc'",!cNhd5lL0R
+
+MGbA0rREX'(BBZ@YRAJ32RL9[lr(9CcraNVh&a4i6"1YKAq%l$KeV#"lq$f0[e9Z
+
+V'$GV4lQpQqqUhE!GFX1qc(VErEi$SA9b`jSBalcNNc*fb29H@+pH1$q@I,RS3E-
+
+JZ4lJf6(F3kEr,6mGm#rLQl(h4j+E8E$TYb@RBI*4jZ)l[kXm"lL6qar&hkAi#rh
+
+TRJRNccpfMrJq2-aiElpR+RTX',fhErcS3d-AiFj8M$kSZ`mHj3(19`+Ik-G`iqL
+
+hK$IIj2fh0mhU"cH9XY1l28HH"q&"X-[03jme8cPA3*ab"H4Kphr+R$6pj3`hXjl
+
+`3-PCqr,XarZQrJPj(Qq$hq[kI[LrEP2r9hJ+L9Ef!Hc&'1l"Z*ckApH$6N[pMiG
+
+R*EKK6bPU4`G3kbHXrqLIMqLdEXHH9G[IN6`+d$ml[6mp`)Hmb)Il$BU(A-ASrEJ
+
+p`RRhp4S8(#Jlrbhe2rF`$E)'05ep&(H[0k-HF!Scj49*0VemI%r)pcBrC4j,DjJ
+
+(XjmRF$GhL"j@pD69pKqc$`re+XK*LF`RCdac0+aiUcTFI4[KYkTPbHDFqdGci59
+
+YjLa5ZKKbeJR10'MD'063(1M2FlcTZD'Hj`FZf%1cS@A$bkBJG*pp$*V[[p$F+23
+
+&CPCEc!Zm"Aq6jkDHVrP9p0hMq-NFmBT+ppkMQ&9kPhb`VTqd*J2pYqR1`+Zc6rr
+
+cRrX9EXhkV8@rBplTPcN4dlXVr2[ScZ)fL(II[mpK,qY*E!l&Q-2Ba"a84p)l!qd
+
+hmX'm2CfNpNN0XZSNpc,hi2DEA*MAUfU#hc65UliTHIp'[C!!KD0hcRY8Xq[01H,
+
+fcPlZN!"-0-LRS,VRApe#6fZ0(9'Y0IVYi(lAS&r41&LrEHJhJcR8jTHf`Gq[MEi
+
+KYaRRr"HDBb`rdY'r6Gq0S8bMmGVAYa&I'Tp)@@f6KaL6k2ZamPlh"V-EKjcNHbJ
+
+r$QGSQ8L'HAEEM9l2Ar)Rm2hG!Xl@m5KpZr-XiaZEj6,0kL5l!fc)V%UF!I)2RNl
+
+I'r9lMRiAchamcp2[VISG'5rPZf69arG#rFjFc[aHV0qCEBVINBYB[NXZ!hb[T1q
+
+fTl%cHcS*RK6YbpE'lrf5-CeG`&mY"U(3B3LbD&REkAITl'r`eUJ(rp#!l'q0b)m
+
+JH@E!4G6#8b1"QmEGU1#XrHM$k@)d[`cmQq#[)9JEq*,iHQ-@rflTqMH5@qhfRl1
+
+q$PjZ0D*&D1Sq9'jIbhLTfVk*H4A&pjRMqUNfqd"2!aieq$eh2I%JkYra@hqDc1Q
+
+ZTK6q&2r6RbDca2@RHHFCIjVl1Hr4lDqT0JTF(r9(QXrQ%XQq6IbSlc4ELAiV+Ii
+
+0h&Eia6+(PjH[T6QTDFl)Q1r-N[[KeDJDU9(MeX!HaGFF*Kc*M'AN(PGc&YpfJea
+
+IJFXN'jMN*F0hC[m+4[%A1Ek#P!8-Z$d)rM*%'F'3!'GlIji[m%6KMMACdr!ldR&
+
+VpV66HrRrcM1bYjpe6FKUP-fqFT)"+hJ-'(,R[e63lpFN6b2k"5CIM0l'4'Tq4Zr
+
+%Tq6h"[5S1G!a[rLDE0j(["m(IQ82CGCNTPIdc[G"jlhGK+QB5aLchkfehd#pH6F
+
+&Hm!hLm'EkIakpMPeUZebiEPr4"QdHRDq8rp06[h8Qa,YSj[VF3q5eiV[TVjV,EF
+
+r,4i$1TG'pV%%Ri9kPHd6aQr$lp,)-2mZMVc![`XM6r$[D13qrTdA@F1rFb+hmZp
+
+)C0Cim"Lr&#qe(j'[Edp!m-+E@C[b%H!)B+%'ZRRih8ah$EpE##Y8fpYBA`!mY1(
+
+G((JZDc%`#cM@"$MAE6%[qbqZ&%r"edYfMciY!(+BGc%Id2Q3!13mJbqSq$'@)M1
+
+DTaZ5@cfHCp5*l*V!06Z)jfH'-UQ$V-6L%b3C"XFc"b)m,[T*jHV+PTc9iPZf+&5
+
+6!4q(BjRI-hriimZ2rk9i'ZUm9'-ZHId#C4d[(XhXZ2rP,2EME8I'!Y1i,JBAecX
+
+VI)F(P2K2@"rLDFJqa*YM-'mar*HfZ,Y$VKVl!dbiL2B((TEEX%2,TCFc'GIdqkf
+
+d#JHm3I)pH2UB$DVr'pL[Rl-(jIlpbKHG2lkCef0fS@pe%AjAK1l)J(ll'0(KHl[
+
+b8pD'@AC"Qr@CSQ(6RGPkFPHlhYl9I1CHRpr9Q01IFTiE*-HqcN2`E'SHURR41DM
+
+(U-kKlZ6ZaNGQIb0Pe6Y*2"bPpKPbTr#ZfVj+0)M5qjFjMkAYF51mK,DmPi83QKI
+
+*c3`XUlQCNC-F(SRd"m([-cKlhUPQ#I[6IK)B4A`a*c"2LEaQ!EbC+fr'XjHBCNM
+
+dXlKbAk$M@[e2Z3-epl,1B96[f+Y[T1icHC9ik1'Ydb)i(F*kImC'&qGIN!!",Ke
+
+kJ1QQU$-(IkH!9d0I"fUk,![`UJ*(9)KmbiA)Ymb-9DA[eX2h2Al88le"&,Ur+24
+
+r"D(l-b+SLIai8HELC3H'XPDf5bk"-Y`(b@m%R6QbZb6Jp8H1C6&a,2-rmk1fMKN
+
+rD1[)IVTYcB&[YB@3!"@PfVk"Gekqp8c@,$ETHaXH&pS8J0pIheh&2$4ccaTS-TB
+
+&4,2@8brkpf@"G9T$Xm%$4a,V6[)MNb-alGmMabKb5T5qU2Zr,-"qV[#NdreI&L$
+
+FaqqLGE-HDl4(e@SY#a4T$G@H,JZ`[J6IeDGJ@5"6[jY(02#,bp162-llMKVb(69
+
+85fCc)LDReZcfPdaS"R*dFfD6FK''KcQDISDrhY`bql5qHK%YbhK%[kZ(AUSIMdr
+
+D!%2H!9lS-pL&C4QET2BTUMm-&NA@p#FjPL"Ta-'a-*[U2Si&RQ""C&N-8Mi4j#J
+
+-$S"EB4E[![a&2ZAp(%X4FLc44rI!M-""P(iApqAZJQNGSkbX%2aTKlJXH0k')rF
+
+&ThAN)4mAFfSZ#a#I`"QUMKVB[[`cV,GSrTF'qR5lFM,V,i66JAqZF6V3*[IdK6D
+
+0'Dme9(Ym-rLAcTm4&i,pIeEm!jD0#@J0aIVS[lmre4lHr!'rdShh(Vr#V+(+B55
+
+EPIZCT4l"d84rikC,IrQ--AQATFFlQ)2LI*36m1j6[Z52%XiPQIeq2k+Ym[Uj'rd
+
+X'm0h%fr9)dVjPXhkHj2b,4Z8(eQ(HTBl2&pd*i),6M[P-GVk+2$'8(ki0#B%(Q6
+
+@NUf%a3SRc0a)QFrTbip-,1I66DLS!Z9k#V)V)CqKCU-8$8G`)h([YjM4jFIl@$p
+
+2r'FCR+2JcCL"2,!H*#QcbL*AElMi46-DY51%FGL(e6qSHi4@6Mb+QI@+QMaJ*Fj
+
+S"Fm$IY2q2))$"Cb(@MJfl'@5Y4GiYl'!0*IdI9CH9IE$DUjUa6fAM*r)m,Mb#rB
+
+`-PNrc6emd(kMr2KHcK%KHSHEmIENrP,X4AiaqLQmF1C'm!qP"4I4VJK[@X$[Q9F
+
+DHN#q4kfGp"jeQ*[HZ)aJU2J0HjKb"F`K,kDZIXj!LGeJ&NA-*@q3!1kTC$[ZI"-
+
+FAR*[-@9,Q)5D`2V)ZVEEb3(XkXcrkJ9CI`J5@[06`&[l*Z$VQmM,-c#ZBrL0V,I
+
+UIIRPEFShE2mhU$X(0hcqlX1CP&15ZqM9k86Hpjl"6+T[[C%Vi'j(U+l-iaEN2-C
+
+[c+N!rYYMC@rZChmFr*EFJTE9A[6qcMXYG5F+3XLf+PTal!GUDXjUfC8!ll$PS@U
+
+!IQbr*h-kIfF6hiBe"C5K(hi2j81bCpLTTfQrX0F0G(I+(l2IL,h*@3kcFBmNCl6
+
+0)MXbm6$b@5@21$I-mKFcVhH!2)YB8liKbfTTK'Ep&GDRMqT2h2f+hjNaRHiVZ,2
+
+&G,r+CaKIa`cX@b2ZbJIk3[5Y%lNZSG(09JmqCNF-EJ3@+kfDZ4RmNZ3(S0l6lTQ
+
+lHr!B`@fG0r0Va&-[ETqjD6hbdH*["0mP[c9U4I!p60p[IfJQp#aPAp[1RJCPAj2
+
+mQi&0N3Yf`E-pfEYq#E)'0f#I`)q9SbqmED-X-+BGU+#pPEZb0h&AjMrdXffNDmB
+
+pHB5q)q0U)()qCIC!GN2J,Y3VPKk5P,dm$h1)a1E0h-5i!hRAm6k(h[2fDECehYN
+
+NH'EJ0ENad2LJ6RaL(qpLr-l"6($9fH#U!afjIB2F,l%%Gq8@icec+hapq4Ii,Kh
+
+eT)QCFYB"SClS'Bpi"@ea-RXl2rl5k1mI!bk5r'f@5I)hAPPhG[I$EiqH"'[TeRM
+
+CSXP00R*2FPp&pi3HUFIhI0qEeQiS2riBqk1TRqDpSVpYLP%Q8p&()NH!CXR$hLK
+
+IG6&c!-JQVMMX*Eq%)r1j9r*C2MFIdFIBI#6[PFe(H&,1amZQ)204(("i2RejCVQ
+
+,c+VXCK0,c1DVV!1@A6``Qbp)IJDCc9G&ri(Ci"Cp%V0!EY%hrp8C,p*Hlhlci-I
+
+X0)rKmllpPJGjRA+GTH!CPk)fI1J[B#j"m"-dDii6(G4J,qe$$[HdMbIhaZi3CpN
+
+!MV+50(6-@dP26XbMkPFj!V,qa`b4he-b5*Dq",lf5jcIXa'c@3EZ+#blF`(VN@f
+
+HNVNAY5[`Pr0U5-kV(V8VR(PC"Zf$IZ`Z,l[G@2%'3HBZdEl`"Y69A1[N5aH2('M
+
+jXR[[adh@l,(d%D@q8r5e&9'lSiTi,h"'TM%YNRk#iKFPhbC,RJ3[@klJT!,8&dp
+
+'cJ$IFSTLZ,'IJVq*HDSGp5B9EKkDDhHlA#jf2lqmj[M5Yj1GE+l-"*p2Fl3jbBl
+
+K696h+9rUAHCNFK9GYFdS8&X6-$4RcSjj@IL1Z(I1EXlfQU2CAR2)3iica*`AdeZ
+
+AEjXF%IVD9b[9[q5,5[9I$1k"H@6TIC+$ZY#j5KjCj2&(&PR`6QiqNUp@Ge$iX2j
+
+pLbK[Y%m$LDcbNAZ44AY5c)cVK-la0RKPIUl'M#j%CRPJf'*k8rJKl&@lbH[%frC
+
+j*TYdjr1Qe[a1qj6U!qhh9'5f0bl1T,VS*BpUc2[5XLcdP2I@cZVY@Fqk5,dYZ#[
+
+)pDphaGYKf`-hEllRrUAZcP0fkZlSh-mAEb6XQHf"mL(2cafcbYCCjC!!jK1r1F2
+
+!P99f4r9YYYhH@"A#'p&qkVYIf+PhqZE()frfii1H$G"MY-!h!eP6*V&1#HmZT[Z
+
+,M+@A-KDIEUjR2m@p6h%Z!HHKKMbQX@MAh5(aCp-peRc&b'f6RZ9#RYN[h$RJZlh
+
+jFHV0Kc#IHHZJNFmf,EL6"94MjMU65@qTKEd0@KIC!hK-SYH@C,fEU"jUK+L'eBe
+
+Uh3bY9j'X0adCJ[05GI4Eb'K0k31rae&Ye!eUh5EdfGb*0p0T,[SfT'pIMlHPh+r
+
+0i0Fcaea@8!rQQm$-aBPN[qbTqArdP*S*jj@EQKIk+dRf5pql(1VA[ZHKea-kPpd
+
+G)QhaN!"R3cr1hBLFlZ),**P`QAIm[f*-k'dDNlSJq$EYrD'$$ibIcUFDcT0,mDI
+
+AihiXfCpK[[`Ch0fI%LpqD`JDR9@iH9h+#6iJYrJ9iXfTGa!kMMIaE4kkJph9RUr
+
+MppX9lpB"2a%2e-Yp[*[pcRNARImPlZ,Hb*UMP%1p40iPpq&G(ZU'pAf2[THkj&P
+
+XjYZe*p'$ZCl)XE+'p5dCh9&$p+K@Ga9UeB)M(BXDp$E8c)jlRh$b),0hbBU3!(k
+
+(RDS$9XNREAaG((K8XdX6dl"H$[1QJM%V'@1@l[)QX[V,$Q@,6JTm)0iAS#CePcR
+
+NXihH,NEICq!Yr*qH%!dFHaM[LCc@#I6I'2)@bdr[SRf[NcRHa6b8l4fpmPB!Uh&
+
+Zc'kiJM@8HMGb5UU3!&0i"R)+ic[HVY5h$GU(bmR3I3EEQdr*D[DTAfqJph%maE'
+
+X&B6[3D'6&eVRN6cdAr`CHDH!$G(E)[#RBc(A@Xa`m8QrbJI%Ve*dhB[JlC*$-b`
+
+I&[c2'E)fDfSZQ"1(1DX%24ATH5Lq"m#VdmebQI8kcL9XGqN(f*X+p(`eZ,Smr'k
+
+N26IF,r`1qN#fA[&2a"e!D#GL9m&p`FVNcGY&lremelKMkj&PIENj#ribp!i#9am
+
+mMMif1I2$EfD,If&fU%eZJE2$YhcQ&pUK5q'm["[`"Fi"CA0S16Q(2-cK@1,#8R1
+
+i3HYUEQ*rKXAX(GPZPLZ2SAhLMHbkDJGZd2R%NVHC(ScFf4"U-Pq0QeX1lC6aS1`
+
+Gqj2$qr-FKJk%IqP$Vea&$qF#V+YCk15DVS4'!VFMb(PemAX&jY[G@qhj@UMDde0
+
+qr&(fAr)b#mRE`$A!22IJpbbT$5f3!1c%hc,ZX&S$I4Tfq&[fjc-XG,'q%Gp5cKA
+
+hIG-(13r)N8%(9!jF@VkFEapjifJV1#KU5-k&IiKN)lm&ZTA2(-iNI3Ie%U)cZ8X
+
+biHJZ(LYj6Nf(JRZlrMd0KrPM8)08"NaG9SHkAqAHPh4Xq1Tr5'SaeNT[CiYq#hY
+
+EpS)CA6`"1T2**R2Q%h)(8haN2IQ'&P0q4'65mIJkh"RK$Z%TiVK$bEXY@C%HCee
+
+b'HC@p$(+*amX@20+4RJMp$,Pi,%aJqbYm%``[FC5ZT2'J5m#V`i0aEC5F+m*c*c
+
+pFajjd"Rp@56qqJ'kPDM6A%cjqU%PPV`Bm+U,ElS3leq$ppYiTfk(l`8eI259LVH
+
+$3m8hRIXjV+hLE1MYTI0k3[c%i6@&IPXaalNdFjY*JG6BaGj8eS2SJqb'e&!ImBX
+
+'k'j(D#lFBAU[U6iS)RP'U"(K(2#E[FAEF6[aHrl5(f9er0i!CYUc6M9"ZC(`bjV
+
+Yi61rXkCQBfB)Q5Hapbh[qJEdCiXSIjJd4VH'f)2@Z,ljFH5HaJdd6TXFF*VVT2r
+
+[UfJ@GUIE"210C4f'j(R%lCKrN!!e-JAilRbHmP8hNm1k'ZV6eJ-A8KH%E0hSkB4
+
+N6p(em'Y6$[(()abLBB+$f8f'F`BPaA1-@&+b@[pL*+[e!$rcZ4KQ6akS(CTT[,p
+
+XhBe2h,j1EJYiS9FPH#'pBBj2MGp@PIQrlZX1Z4&&iPR%@pVXmJjj5EimQl!Bm92
+
+krXSpaJe1hFF9+Eb((TBNlf9hmPl'hlqAMIrhATl0R"([TGl"ab3$Npj+C,4(GKZ
+
+CMmFK-kZ6ip8EkGD*hS#rXA[-AQBcL&,Q11")jH6[(Z([*FXlhe-$LbcS`Ue3Qi@
+
+H@J4$""DI[V[-+-jE#amle@$[[lZ[T&N)ETCjDKj0afZPlR(LIppMPp1@@P$F#A*
+
+dp"3ZKhHJC4*YS4hrJddmbm6ra&D2XXE$F[caeKE)rRNjk,-M&qfMr,B&bTX9`J1
+
+[MA*(-3-qG`aeXi!P%kkfPIi6)ePZ"r3Ve'$)[)!V8YU0I6S5QCIihclLj#(DTbZ
+
+"PplU'BY-fibJZ3MemRrrLh+R*4[@HjQ,+*aa$Ijq#!,e-i!Yj'hb)'jfRR1cHcP
+
+Fm+k,iA'`'0i)Ym%Ei6Ci+Y`'6i8"EKHFE(f#dahVj1lGcqNDPhZS*qRR2r2$V!R
+
+1Y`icU#@q$4T`m09Ma%2J9lA*8C,AY2h,*Q`N@T2Pd"@U&ZR`,$`H'E2eF11Imhk
+
+[lGMdX[+HjYd!rX5mj"eAPqpN0%12&H!Z`RU2S61@Gi@U$5dX*MfEq2IqVbqa,K5
+
+mL,eeqKMa*DZVqB5$EBK0)kLR1G3%,cilJKGa3eAV+TaYQ$PEB-[)qLI4NpbE4pN
+
+[aR$PX,q(mpR@QlE1dG(Uh#H+pjAH,TFAV9ipaC3EAFlF+2e+dlJRAfYkh)$$a-+
+
+EBJr1IGcP66HU2ZD`9ekrEJHl-(pN&ca-cqbUfV[SbG+pkdc2d&c&rV[q[H-qBHm
+
+qah`KlNKKJ[m1XBIVU*i(1l%'pkZB[K@1`Ri[`!`rlI['YGJRC!R+L@c1QaVCI0&
+
+8RQdiqp2dMVFX[Y[XUrcHk1()k)++b&1qEcKeiNpj[e'Cm9a(*(ijq,FhNXkV2[*
+
+A[Qp8QY($b&i4J0pp1(S)'U)`G&-&`1T9d)%d!`mJBaFdI0&Hk$8@3i1`q"ASUq"
+
+6H9XZp#%AQLcST2+J%mV(V+*c$EaFJSQHFH0%-rAVqF@M"DA1$*&jD1Qr6$((H(`
+
+UHMicUh*jFLi,Ja@4jGN92"2-`GA%A'TT*PeEl!&Jh'frR-[4Q@!HkhJHc%@d`Mm
+
+emY#SphDV0Mjr@N8m1L%5c@f,E,Qi,6,+eaBCMEqCq"["hh(iQi@raq"[YUm0ZjM
+
+Yl+(FM`cX(HDQmmHq*6"Iq*(848F29mBai`rj[S(C&[(-2S1CI3Cijc239(i'h2a
+
+R`-XM,`(qkKj&lB01(fjH4CKA0qi[HkL,Mji9b3JDQPX*m8bIipjbeld#6Dkp`qc
+
+KKHTM8HB$4!lbp8kZZR,i[T340rI`fX2`,9bl)HGi'IRQ1)k$Q[QbemQE#EqTT81
+
+HT$*`#-M'd!"qlI65VR(p8H#8a4j[#,r$q&f"ha(mVY`k%6VcS(FqHD0B2cGSpYH
+
+cL!p29(Y$YDc$$F%62AN3lkLrXRI3[HLl$AJA&He1),LafJY[p14f[$NY83[D#+f
+
+e&1q+%qr!qHZl"0kGbARU`"qpmGZi*D*"#FeLh%2Y3'S@q$Bj8Q2fdI[8l'3AL#I
+
+j2Vm''Pr`0lK0"qT`$Z+eGE+C!6r1"r$l$F3M$qi#jb*jde0cQCVZHqV*[[I9'HL
+
+E0Fhh+dGQ$-dUITI,R%XVDcj#I)pmUiL#Vh3i$Yr*MfT0i&R@l1qeT0eqV,4c,'P
+
+N5ZCdMS8f,I#Fq2@-!Iq@"AqXXEAi[4Tr9q%[r(ZbYU$'$[a'EUFXD1qbS2h+JTG
+
+2eMVmlFCID#+cS,A*JXG2&VL$V$!m9&LV"ApRi5rlJDBp#rVZ,'L,XT!!)6X,R%,
+
+@)[b&9QCFNIJ%MF'l-(SD!jr-*1@&C*rJ-V,J%d4064Cd*H2JcaL#Id)'[QAKGaC
+
+m5-D"1mKLMc0mfifrZr#qi,5[N!$Z4HMG[B#rc!jj$`25iII)8X2Gmh6)ZFlqGiU
+
+R@NlUZpEb-(%fCB)@2ha`$Z5djfq#VUl4A%+h%E@KU@-pMjGPKYMAkeYSR2jlhh2
+
+!Vl&[eB2Kc[0p-hJ'F-M8J$QI0q&,F"0jRlT4af84i#d5cK@rl5iaNl0UU['GI),
+
+P!XP+mF$NlG"AN[!m['55'jQr$icY3!hiq359$d9q#r'Hm'V`,IZNAp+8U(di-BY
+
+)*&8$@JMEQIqj&rhl8*6FKfaR(jkIZrJ-(jhljCX1$cXcCqB(RBA(X9Db0`hZH6I
+
+R$a2rkf*m,cbe&jD[j-#Z9%Bc+"2lpY505f-(cSPc+eX[Q86a@r$6lahBReKbI`U
+
+6qj1HYlXT2ErD,Fir*l9EmCV0fa)lpG#XNhGNmbr[50m-aKBKdd"EmLkPkiD!J34
+
+hTE4FEMFLciSIM2GGXKNL!i$@mr8Bk'NXcC*C#dXIm*C&1c&cd3TRIK-hV@CVTrF
+
+DpN'DlJe[a9rmRXel!(mRHRHXl[5fS%EEjJHmmmNA!Yp[a2FE3q"l9MlPEBPmSq$
+
+X`P'H)AL[E3((PKPDMeZ%[U!Y%Lp)D%H3!'(Pp`A-N!#l!Za`[M0,c+Z+[-m`Xa[
+
+CppA`"IEQ@c4McT6c4*f,HcUpLpKA6@F0M@Z3!1l#rhFZj"4N,U+c0+aXmj,l8GT
+
+Z$jqD&fH9QY-C[ji6j`U0b"lb[',Ga!1i*H%#`Ql#CblYp&j*qaQ2m@kfN6qZj-Y
+
+$jPIZE[VHB$E30BFq6cff1KR"U9R"[YS1RFHpm*h@[a&[,`%R$cj!Y4HFTqS93q3
+
+ecYR0GZVcAZ,EqBVC9Y-mM52*SGR0Me-H!I$VHYGrc`"@!hB*iEiqNZbCHhL@jTp
+
+m2Hf4B'LVb6QPEbhhJ[LD0a$qCYaM`HQThFQKYhC[j&C+CRE9QVeKC"DD0D1!pS)
+
+ce@cDU)2[d1VmK@T*1"Gibr60T4am1RUEcEfefjYS,UJ*6lM(XY#2dklbpMM-E[M
+
+*`qbFZf"fIHIKS*,B!pjC58bG6ld1BERi"*TAmNLL9V$R"2i,YU8iThdcA-mekPc
+
+FKKSH2N11V43'+b&reA2K$HJd0U+R!%q*RXR$+DCXp`4L6p'GK@Plh`h1SrV`DY8
+
+Fd+JYfLhH5(,pH![GTRSaQhqAF#!2(LB2XMA58q#4YqD8dK$-pd%h,$d'i3h8Le1
+
+ceh2qYf"8Imm96K1ja'HV2Sbrqr9Km,e,3NHTqV$2MqM$FN1NVa5[YKq`6i0bEd&
+
+rF6E[%c('C-(Bd()DrqEm+D9IrZl[PlcRiAla(RRFa12BZ,iPe#pl0EjP-ZF+aLd
+
+UI5lTe5Zlp3qX*F&lDV-D1LBm6IUCCXjQbYVmrIqCKcGr[H2b[S6QBRKDpJ!hDZN
+
+l(#CZmLqhK0L60l56mZ2q,6MVY,i$(KVKfpI"Ul3'[L'R%Fk'6`hd@*1JRra,qRd
+
+a0#eC2+mmH0Q-DIrLXUal8+p`(2%KbIlE&aRlUqJ"IBbK0m3'p$Vj5hKeS*GDIIG
+
+Q`K$d!f%Yr,i8[mILpc6mcN5G3Uec+HVNipdBV60&kl"HjZPX52#q,@"pddp%K`h
+
+pd86X,63`JIaNrNcami(h!VPBdA(b'hf$S"X[)hp@q&'eNJiFr958(pr%Z9+k1c#
+
+6$$-E-bPdDU+2dj-e+d3l[Scp#&5Mdr0(V(FGm-@CZ[DacLq5jmQ8leAIGYh+pR@
+
+h(*LaVQM'[AMcDIbp,$Dd4M9ckhU6Z3MZHX$Hi@UjF$qS-i"2lh,-f[N6Hhl&[AS
+
+$h2qb*G"N23Epe%-Q2(-fDVmIEk!a+$Z+[BEIB'N6IU01k@rLYh$Maci'l)Ll2DB
+
+)ZTrY8H`1HUr%EqJ4!LId"jTeQT`l23BUKI-2P)lF)04`2NhaQUh!H[4Mb&b0ID4
+
+(-@T5Qi$qN!"0L(`m0D(%qXV*prClX"G`GmbF9b9DfQ2K9HhQ%BLHRJGl4"ESHdS
+
+lrI2"$C60kI36E[bPm1e"I!XAiLmilM!ilM"dB'(`fN(`%f(bc)9f2!b11daj%p"
+
+VQ$!@H2J-F0`Ca(([a&pNRFkJ0p[a&lkk'H$!-rVa&eaq"Q8C3&mCi2JcpNM'J3a
+
+N(-J!ajm"$i%-F2`Ci2Jc`,eRJ1-2i@m!Y3,S,i$q!NI*ia+r@4-FI`BiI[,`'CK
+
+2"VMk!'Scjhi'12i-F2c8lfD!ifHq4ll2)0hJLXUim["Gi1'l(4jHGUEbp-l3ppA
+
+H8jXcp*lCSI#HqT%$laF9"b%X#2L(b%mD[hIK1hGSQllE-Y*rP$`Z`V6AH%2H&'m
+
+%pi324A($4*pk@e*2#hm@dDFZ1kP2P8bQhjC-P,H!k`GQkVmKBr@'V")H-1Yel%M
+
+41hIZUX5GSaCQrib9`mVk$[VZGRT%TUAalr4b*HI!1S@e1`ei'e4qQHpU[[5SEEG
+
+Z-Fa(d9YqS%pSLhPca,ZDHYmjMcZpCRfEm(6Femqq,FTIMd0HK@5BjTEL2V"h@Gr
+
+'QcE5eKI$rj8DUN*N-AYTPll&HElF,Z%qd6ZTXM)1[N@jCZ&**I19["0-RX#hlF#
+
+iB@#Bl9h36)ZfiL2DqemPHdI2JSAASAI8)5mR@&KkId$b0j-[[#2MLX)*T+mH4ri
+
+rQ+hdQ8XC2dShJ,pB)MTS`HkBKIPc9dh(M)$GZj1cbH'X9(JRfGVJ,@VIJ!-LQfI
+
+#,pQ[PEP4DNN[`*'C2B+9)UiAAIUQB*jYdC9kUclmclIUQj)clHLYm[a$ALAjHr+
+
+SKmbMrfHR[bRjpQl*Z)*kkSDqh['KiKrUpASmHkZMcq@bqjP4f6h2T`Eq40#[#Nq
+
+LQEpX,jIMfhEd(mEHE1m5[R04DLqaDqp8R#ipU6lLZEefH!reQU20ZQ1,rhR([R&
+
+YDXFi@pi5l&9VBYD[P2a9f#ZCSfNTS&&BS6-46jbPm,S@AdM-hr`M+r3ElXIB+TN
+
+P09q#F6&2MqZM6j'h%m)E`TZA'DcTXjm!,THCrSGrRZRA@G0mp'iFfYGE@Vp''$*
+
+#Zk9F&hB-A*ji*Cl%-k["EqV%&q%h2E,@&&l)hLpeq0f$hm#MS8JaF*4K'lR0$Lr
+
+KE52H[4lCN!$U85-$hmJ9YDEfhGrVd24#C+cJM)J683pF8LL)0cQPAGjXrCkMIFc
+
+P[!LRQ-@%dBJG0CG"bXY3qJm1c)4h+rX'VXV$ldRNreRfQVe[c@[N-4i)iFd8IAZ
+
+&[[fD[Xh(QqRJ(hILp`IKUEm$Ecp(Efe1%F+amBreBBM"[@YfGcI6rT($LpIN()M
+
+8G0p1-bS6AlTFpK1Hm8F(3VpVc*Sp&qLHk!k)0cHpeG5h5Vc$`$[9k%ij(JZB2mM
+
+H9[bQH`Ac!TdY-p&cYSY5IGQqjI3J2j[KJKVpGMTU4KhY"fUXK3I5aF,YLrrC5VS
+
+RV%9Xe[U`X6FqB&Jc!Cq&5cL2Mp`96cXb9qT$A+VeCk&hDMDKCI2Vq2H"fMl1A@B
+
+d8hIj)Xjq+r8mrAdElGM3E[0ZTM""Bh59hNr`@VqjRrHaTkQlRiS(pJ`QICT%Alm
+
+I$i3f90B#9mZh3#&P*-$[JM8(S&dfhPbb@Z!Gq00#hArK%9,[FrJp1%ZqelHqrSZ
+
+lG-[ZEfA*I9Cm9&F,lbEY1Fh2jlAX*YbfQQC3Vlh@VYQGFB@qUG)hp%T$$r!(m[4
+
+eAJqjNI1f8flb2+f9JqqX,E-T1SIR#qd2kdpHNkbE6EJ&p46hfA`ifl4'S'`A!T*
+
+lmrHpB#I,Z`Mp6R-9[+Zh(0L16$2q6YJ0R1"iMfQrJXQfRq)CC-DLXI"Q%-FqN!$
+
+c[9Kd&BS9(+qPI9lTBV65(HbY+"NlF'prL"NCPq*jChNeP$m+%[p6Qh`$R"*mf0f
+
+je-`rXPqb'[EhNm2c!DlN2V$'+,iFi)A%PkRMCl4rSP2KIG8ljR[9QSIaKZq!8hl
+
+"@hX"jEYH"erfL*Z6#$Y!l[4Fj$rJhM%M%EhAiDd4JIB!'XI!%XIc$h1I$0qCFCV
+
+0J0lU&lhVKG%bS4PjJ,E2Z-d%fKFYhJDIQ'"c[FPSRe*De$iP)p`qpBDfpN@hE&0
+
+HI$Xd#T(f+GI`2-LPceYA08MmqD3Tm"dp)f-k['6#"@0N(Lk(81YYk'I4iU,)EHK
+
+e+RUi'$fmVf*EqfhSEdC9++AR2q$aLEP@(er(r[V-FijlI-9*Em-Fp8qKhJ2kSd!
+
+9j82QlGaM"YQ2m!(8`r`V5Aq4R[qm8M-*rJU"pM,[0r!lh*Z,rLmdiak(Im%Hirr
+
+0jhDEUZGH-IA2qdccmlQQlIPj*[TmMHPj2QCkRhr)E(aqYpRmr#YQkippC[Z2Fmh
+
+1(mmcZhjFBrTq($2lI[b3!1Rrm@icJ&RX3'DKRGK&pGYP[fpjPAk(fmYmhiLLj`4
+
+krMakrKVkr4Vk[3rphSGqld1rpk(Iqp$[IHMh2[4l(rUp(rhHMhl[4lrhSprldHr
+
+pk2Gqp!Zpi!jS"(FH(aleQb(b)M,[Ipi#pQqH9mM1%KM0QT*HheDj8rQ9MCNcF4H
+
+fYDrl6&BRG#Q,iBY-[k"4ra6a5@*2TdT2k2@%Npk%06HrNMN62Z$E)M9@&V+`dkH
+
+'Ze[-@I,!5CP[M@$UDRZAC)#"RQ-5ilpaMcYqJ8FcHQN1lD6QF*CH0(ITX0F52&V
+
+%0i#jC)VJ5FCH*B1FHVq)Ka4cF6Y2R)MkJY(,K[Qha,[C[+U4KA(",[`Zd+`+qrb
+
+B*J(hfre%VJk%*B1@a'jR'l3pJ5*JL`pKhqCGNl'kI4&c4PZr@S"H))iik(-%Rb,
+
+`mTV$T-p,GbEp2T4AJ$fiA8#@UL4Uek[(p"NTAr$4H3ldi[b1Y"rIikEDrV&ir@V
+
+qLl'B5chY$@qlH'#l[4RXN6ArTrr8mcj0r6PN$(-XJAF8qG&Z['R%QfCmkj*FX$f
+
+F@3lIk5Q-($)2-ZrR[-,S6F'E`hV-X@9ldh*kEhlr`#`(jlJ8-b,AhT@FBd,QZ*F
+
+cZ2Kcr%HRVeRrk%q'QqPKG'CGlI8lGrllHMr!2A)('ZhG*r'!jJl(fhEX2I`YIUM
+
+HZBG[60m-CMTmermp!p%1qM13!1`LSc2Sp51$ccIh%AL"G6@V4[p1PJ,MG-2([jY
+
+dJ*Q'2@c)!5ck"RJFF"qilEXh`PYk%6JpIPq'GhLcLfUcTRML3&[0ZRa2r,%)189
+
+3ia'HLARKc)1rbcaSQH2,,fblmED-*fpFPr&%j%Y9M(dU[f(UjcaS#R[3jiF)Hm#
+
+c*jj4DJV[4[phQZCVZde`h9mBcjHKdBDrcSiSkX#A+("P%$6A'G(SM92rC*MUcIY
+
+FU!,emYY[QpR@IP[CM%@B5GGI'2pD2qGQfHEdaeVaZk%*[G0NTAT$M4f4[`6HMf5
+
+%U3Di8H&%p,iV,ZfQV)ABQDA`5H1m1IIdE[!lqYMTk09CMeT#eL!RBcXPqm-qT!C
+
+kFAXN'"KHX9j[ZQml(#qLSVABAH`3kr)p[DIQ,CIG5Zm9GLT"Z(9NTaDIfURi)`8
+
+9PApip)R6Zc@[3@VEIK@QpU[dBA[)f6(dXCARGLIfa1dD2**5IHHGkPYZa*'GBdr
+
+Gd'jbhU@iVI4H@[Tpk8hZcPMa-eZ%$$c,[SqqS[E4e1dCbTpGI6c'IYU@8p&jk%8
+
+SVpR,1"*p@2i&bE*Y'&cb0e6EJj*4Y#r2!he2R9GL3QrlDRVMj8N!6fZFHc(H`,X
+
+cQJN[43mRS,Ha6JB$d5dU"UChX@Bed"i+SNp+TSI%LqMV+d@CNH@F(3,Hj0q4r*D
+
+$rUZD"d+c,(4AQj[4$r2Pdpr4daX2lB5AcmEf3[DKDHeqc9i56@B-bCR"[%@!-aD
+
+!&``R-QmN$rjkhk`[D#&$NS'SDHfqphXmlh52ALk+`9i6b0Z`'$AK0rERdA*`ALf
+
+IaHd)"hr`P,hp"brC1jref,ZH"DDkIikplpPUZrrC6R[Jf3IX`mmqC4mP[Sip[&c
+
+Mk2Y$EiIH$(a2IIXlc1l[-,X(-CF(dIH$k1e"p2BJqRJ3G4p%,I+CV29bMD2[$ld
+
+GHM2`2I8YaC9alcF4VbdjDmQEl4fm4l-EZ#aP&5-DkY$D[XiHcZSiRMeC,2-'hjc
+
+6L*`0i+P1AQG'Jc[F'QQmC4VTd%Z6@ZUqA#d"eM*@(frLR#Up@B5!Ie&RVHMRP9p
+
+$KZ2GV$G!ElK2Qq"p1B(p1j,)F80rEr8,+R)bYVMDi2(#$Rp(,K(FKfV&*E1@jaH
+
+jlV5ACH*Pc"[iURrHaI4'j[fHa,cRI@KC9LrQ6mll,hY`j`CRhjFrr'mP1d)rEi#
+
+E'S8@TILL',b8iBFjVhaC&VMf+,6j-NpmJlqbF*ElXP%'ZYZ@H6Xr&M6&HfI&jr3
+
+X@,5JFX'5"E8,'KH%&d3@a"HX@l$KUZePH6G9h94I(FJi'XJ1M!q%!Q@"4B'+3'9
+
+JF@"*S#T3'kJ20!DD!q&!@f"GS$H`-r"BB&GJcjM3Q,eMc9MrK2$&QiXh&QmUhPb
+
+mTEL[H(ra32'KiX2&4iU2&KmV(L`H+M%PQ59C*GNPidZ#*ANP"5@&*88PddXU5RT
+
+,0T4X,0P8XVRNX5ZcCaA-LXjD0cXqTfK1C%jd6RaZfI`0mlFX+&K3YQ$[JX-,MLi
+
+iYQ"``G"#Xc"VBHR#q3[,&LjDZ(RKVS9lVYTmeGDVGPkelkVqXN"CX+b`V+KXqM9
+
+peqbpCYmerGF-A(2iQU2A$&ic91i[(eHH@Cj9RPeqD0(!6FdhK@q+h,6ZTXdhElj
+
+jbmeEEqjIdPqeSqTBe@"eCR9fpIMU!UZkD*PhFDR*U(cci*Xlhqap-qSYp'Ck!el
+
+%hJXHma`GGA$dIZpdrel2%FpKIk1re&rbjRjrD23LEj%hj#dCeHmYpB8mJrlDdAY
+
+(phZcr2@H(QmHP1Q"d3G(lIH1pfClJpjahJ+[hp2[1HJjj"R!TZ8'aJ8b-qScDM1
+
+U-LSb&QFX#IJ$J6IEhUapFmQETGfCJ8f"cB%YErB2EI9[m8ImcIk`[beM88ECk%1
+
+M"dE['hA)[mqrIp5!p@CNY(9Zi3U2*fLL1#8R,-SC@ZlpU(`mF9IfXI-,cTpqrTB
+
+,LLk-M-mD[hRmi)5HLCN65bBq&L`!29KPQ9aV4l$6iiP1Q[1LMAbY@GEXSaqfmX2
+
+,[*ka*VpeV$8eFlPAHc[cXGa,!PcX0,aXphM(QNRjiE&QGY#%V'QPETdh0)r1,`M
+
+QY`CpH8'm$eq#ArLFCB+cCXd+RQp9(hE(e959dqpqR&'4dlIF1dBq0PI8E9qqU$k
+
+lIP&pY(j(rH(kBhkV)Hc@HPpPcZ!+MeFqY[JcFrBYphj)[VCQh9jbqik@V*C`kml
+
+9KD[hh&&d4qdGHh2D-,"SG&*qFhii[pPVhA'a0kI&Ph1(,kIDCe9I2$TRQLph@Z-
+
++c$e`rFh'QR2cQ,bJQ4#HL`-``@6J@G6-fQ*0D*-(BqA"%QY#C16"-QY#9"j%h!G
+
+GH"#bM*mI6&PN6HK02EJJE%hB-'H8l4CSX#CXNKC#r##ce*V`5+VLj+!eBFI)Jca
+
+V`Limb(!HR(r8QV"AHY!(&5&V`X'48Dkb*Ja)$f0N$'KlqmL$&Q[#iC%(cGD%)k0
+
+b2GT5*'j01*U4)ar(&9J6"RhjAKZNJ!jYVM9K5+TR5,Qi0G'I'PV0GQYLB+i()5@
+
+$(Qq0aq0(Ka-QCUDQ9K@h*QBl*Dc6m`HYLF&8NI0h@4-,8JmQ"kb*ddp9U"Kjd'K
+
+0R$qb3&ZYLBY5&DUR@a-VRH(@C&X6UqMe04NB2XUh"Xh%CPMri2pif[D3!$km))+
+
+(hG$Mirpi@R+rikJeFF2)JdTViXC8JmY5fc0jMc9abmK-(l%Q2Z+V$hLi"Vj[3UF
+
+3Z!Abpq2$ZP1Mic(`@bfd*Zja@TfbdCV)Pm&'0M8Ep6IV,1e#D+@TaTT)"k&hKMY
+
+2cC!!1jlZ01V2`*63@-hQS!N#VXUrm9P1rjRp9M!lG4Fb&e["%rXme`S@11@UeeR
+
+")[GMPa8XF6j@(,@#CDQkiiTbJa9HE`iGLk!@L44C3AH0Tr6Q"U[H+G#5ZJ49D0K
+
+Z[QhH(LZS0prQNl##dG4)ZP)MkABrlVD#)hGqbR`VZ$'jH99K,!KiDpQme52AD*N
+
+9(&RT#(VCd)3E'1"b,&k&iKYcpSeFb`SVb"[XcP3pDQcA"Kr4Y4bh#Bpf1@[CZld
+
+er9B1AfKhc9U#*QHFAV2F9+8TU*6RVY8f+fGNJIPD$V,e-@i*qLM41C5kCAGD1DA
+
+Zape@6TRlFBH98q&mM!5YR-@TlLiSXA+@M0bl)LZRbYh(G9C1[IYaXjA62,+ka9E
+
+1L9dZYIL!ii&GSl9@6Nm+58h1Y%jFFVE,0IDfpI`H+fHcEPIe)%B06B*Z&jIDh`V
+
+-E9d#29@8@MQl#0S8Z%Gr5YM+k4XC4U2&'qkeHY%M9NjrDN1EdHjfh9!2Le8[bFd
+
+C2(RRUMEP@!(RIC9PMA1,a5h,2Fjm5E`9`PmE3EGPMCq,4)(kGE&Pj6QE$@Z+c(e
+
+"BaASCKHR(Ql%3lIb[G$VJN,,+KeCRff@9HBFTa8S@qZX6qrD9aqd,-CJAYfBCG@
+
+29#L`,0TfEcP`GLDdkA)N8ZMUr!V,SLAhHePY@EdRFHCNBeN+`rdL[CMXJN@@YA8
+
+%JE4BeXM1eqbcV-G1,MPUE"MT!M[A#p8[fQ4C[14HipJkJqSfQZf@4FLmGr52T+!
+
+&F1L%BlTqKX+Yr@BVG`5&Rpp[jBj,EXhjf0c6XR4VmNH!d$)VPjEI(m-k+lI3KE"
+
+,VGa3DJ4ek+054q#IpV9@VR[D+mUXh-A1ah('bUeeQeP[jBiFlXaQ+jG4QC[5@R3
+
+AeqkkF*q#$P0bfXKLMmZfFNGJplL!PEYjj%(8bL9baAq3!'2PlKaK-K*@lQ-M,IE
+
+ZEdfEPF[l'a31BjU9Zpm&,i9@lN&hU'KXQrZaf-Spj(l%)Za)PGQ9+V2(!G54S-N
+
+,[!@S8E`Jk(kXYr*Fl&a6DZ90Gcm@@RNZh+UTX2)@Z4qM9Pk#kLLemNE3e89lV,c
+
+De&i$FK5!pCE0Dh2hHVf9TcbB2GKSj59!FSZ94abBrrS"+irfe1I!kU`m3PNHl,T
+
+SKj@AS%F`50!M3AFP+r"kZEYN1kdm2X0Z3S#Y"6Yd3ZY2P4@!j5S")43ih)HhQP1
+
+f@hP(4XLB&9CHBL1a),Y6Hl5Rdq2c!'eCV99@[NYUfCX,aP[j)r$jJL`VIq5dAM$
+
+1bQGFjCh@9LZrF!4mc,,bAHJmETf92`+UaQf`mYhPjZYH,SZ[r6YEBq@lD(PFf-T
+
+[G$pLG0j#MiYEqHlqMSYBqH[FQDqemZQNqM"JMC92*p9(UHZXr+e1ZFcY9VjbPBB
+
+K9eVj54`mZFh+9p"Va`,EmN"U3*Y(0UA%bKpKU9L1i-J(c8ZYr"(DDKU@bfJVUl$
+
+FbKp+c(Em*1pFF,lZHl-e+6"bhcGDNa,(0Q"0FSpYGGLD91"Vp$ZFh2PJ[#B@dR&
+
+1!k'DHVab3+KfC+I461qYMD"9JE4@ZKSBDU,$-rDHedLr0@Q%TMMrX$9TK+D)l,-
+
+QRB#[%@X5R8QIIffe*Y&QHS0U4,IVY0[HPDcTX5B4)[8I*+a*)cY@[F'Da!$8Dar
+
+cf$ebK+Tb*SrXf4TV-Z01VkI&eQ3L"[d@YPQ64ilLZ"*V-T--hS-0eZ541eLpaCS
+
+m`ZY@El)QRq"e9eQ6+drHjmc$eZ3P)cJ"E63lM%j0d%b'JNG4PhFIUc%,)ilXMZf
+
+b*VY%B294Dr,)0Pk3!'G0GZ%-Abp,0G),5-r2Y#D2!0+TH,$'"5FVVFP-$6VkYK$
+
+MfDK,ZeNN"jPPeQ5kN4kN"d[cZX-+kAH0)*XPeZ54,FfXYbD2F)+CZk`#iJYmk&C
+
+L&56)Sae@`FM19Lfb#S+ReU[@+LK)k4[UV!,#0[lQVl3+4[MkkPUVB'5[T`DXJ[R
+
+Z#Lbh#RLRh3T%JkDJ8PHJ)68DRaAFC"8dMQci+UYJK1@G@Q39M&cBUD9@`3KQR4U
+
+b#YD0)1-99J(cZGkZE,-+A&4D[FFUf$T#1Lfe#TJFFPZj%Q0Ekm"8Vq`DUk$2a5E
+
+VV!+A5aL(YHP&2Y1`9ldhGpTLUf"NQkG9@90'PRGD[69P")P1DlDQM0cBD@h@&*G
+
+[RaDeTVKmql3HDiV,idcVYDC88Yf*0-TT'c0cT[Tb,[E9H$fAi%bHP6HYYQljLY'
+
+HPG8e,A"4#dbVZpe-+jbfX[V1CA90Um20Um2q@VpR@QYGH"R%f+F[EfKT$IX+k2X
+
+eiEU9rN[Tbjbk&5[V9S9E'lj3eqNCHkNT!9kDE'DEbG@0M8h0GDX`Kd$eUYUmjZE
+
+'1hfJAUDhe*MFF28UEeje5d1ic!0hVd"e5dZeG@Hcph,km)&`8f0$DjJII@#f0lq
+
+kYDDK`6HTZV@qBARBLhNd9GIF4PGqiSU@TY@VDVfhMH)RFaT4BQBY(1i!!#l`3q6
+
+89,HmUD@Z'9r4G`!M(0p+dfKDBI)E-)&Qlk4P$H&96@&[2RjIhq+Mch1E@Vc@XY[
+
+`Ym@lh1YGYVUPSBk%[i&*X`dqIX"IM`(F%1C9N!"1jrJQicYkTq3**GV#6DZD,dD
+
+a$p5CQZT`6Ed[VkDqZS8@D8CMA6A-YJ+AYE6@Y069V6,dB(DiVLhXbkpTE'UY)p`
+
+l!iXiF9@B9LTF801d+Yb`DR@GIh*08r1G@&B1FNC6DqlU9@'I9G2UY@V#hNNeUeY
+
+D-6C-("@Z@B8X4K0UQrd&mV&jYRpUEF2bjA8YGDYUkVb6DeXDPLeVV+0'-&JSYF)
+
+&GE80''K,REr1jkPEf4bq%cXdIVBhVkjTHE1IIPhJRecAh0VF8"0'Mi'kfeGA0p*
+
+@8IBd%dl9Tf(9-kMfl1T@0"r)SfBibjNYbifeUK8pc'jZV29jN!!8+)"2%r&M0[E
+
+YY,UfCPV)UfY0(JdRJ`Uhd"6FHSe[p8kQ(EkaVJAl%m!RQ%3'TYa4h9*VPY0jQV#
+
+me6YeqHV'4YQS8!&pidD&V48ehNNV'TZ@96GkmeBdKC[mq5ZD@jUDI5Y'H9Dde&@
+
+(-3Jl&8AeGG@e$DY@Q2UkaQErP2U'fVV`kTC`B`e'#N1fkeGkVIS`$IXDA-'#ZXE
+
+@1Y*"BDF#HGAi@18aZ%bRYDbZmaBdV!SE[Sd&YpAGLHA"V`[mqBh9bqSDIENi%VJ
+
+4FMCDkTERYVBfqr)EkeTECrYUr9kqHIM(SC`9EZ,V&k"(&rLXaP9dpeUDUR'*-!%
+
+Z)TUk[UBDB+QPDF9P4EiTM8ehe,A8B2mbmKTT-8j[T(Z*-D%T,+1HH0[VDkY[Ur2
+
+RV+ccHHY@,U-&[VECV*`mfkc%UCRMQl5bUACeBj1hB'A6kYDkjUC@R+l3UZU91+3
+
+"h2@!`3bjb0FeeGC0NQ15-@89P[6UPVV@HPmZ$LS[iA@VUEG@ZEhS[,"Z9A8cm%#
+
+cYi"J!6D`f6q9[Yc3A)YP$%fKEcF"%Xcd@6KQ%`9rK#jZVQkX#iIV6(0e#ik2h*I
+
+@kY8j09kVZCCfXK8[*UkUD@TXD['MEhCir4fV6!i1S(flJ,r)F3T2aKI-GqEbd8M
+
+j2R09Fc8Y,+!01TbpbMZ9"i0MJ`dr#pm)DPMQKQDFYiaQA9(X!GB!TkR*kf['YCj
+
+M`LBAfjH4hm`(jV6QjM!0[E8&aq,UKMC[Jmr6h0+`XL(Fm(PD)UcJkIL1#hk0ciZ
+
++-qTU9a0-XDjHKbI0UfY)f"PSAQebfV`&YkpZ#MF!%B5RY&6A!N!"['4-`LFJJ4$
+
+pRY1`LRjMfYGk#eUUlf$)4!3)V)@@d(q!pSdi4#%,VJNIF2F,D+T%*hb!E3m8SB%
+
+@3K&mF&-6$ZmjZYYiF5d@"Q8cL[#*`mD6eKUJX$Er*(c"98Arf$41)TcIdV#L(M"
+
+PGU-hRj%D2VA4jCbpHTA*acjM(mr!0l4f3b29ZBQZh*cUcp11fj8l8qik9cBd'Gp
+
+Z@&966lZ&1b!JD8BGMBi!&HVZ`"6!3!@&'C2aKVJ)F1ek'MSq%qD-VdG,-m0km%2
+
+bVD8CYc4dQF*DPQTT@)BR'I6mfZU@&3fVJ$,`c@k4M!PIX9b"+c!$hKj@PB-LPd3
+
+Uf`&aeE"DJAaXdM9Y2VUJ-m1dAi&F[*2HE,Mb$913!*&JH2JU4j%V`9Sij@`9([8
+
+"!#U#ChbGD)"mJF'DrEl@qLCiqH-kijjFKi-bNC(-61pdh)K!+diB'bAfR(0l#d$
+
+5(,TL36TV%fPT"I#(@X0mkh(j!-c`!kH86r$P!RpHDlLTfBq,-QIeXYB`VYKlj++
+
+GeSTlMi[99Vh#UQXY%j3$)2Bkl6H8(kj(X3cmR0ed"i($0Tc1#DY`NYZD#-r0@Hl
+
+eQA",G3e'h@aUQkhDfGc2(&2!%m3*8$`'H"UDY(S9JA(qjQ4#Pq%#5HNE-#@$36G
+
+9!pY1[!2hkRSk,#%kC3jJMCq0pl1V-9KC,S+FLIaPYTFi$5f+Di$&HFmS,frNh2"
+
+bJ2%!3i,6@m0h!Lk$)I++b6XJYlPhQP9eG`#hcfP#m60@S-PCM2$Ie&+hBR@M`(d
+
+3!pFeV"+F-A("r+XV2h@pYf$4Tklk90Q#44Aq3[T5Fr9FmlQQcpIjmbSAA&[KE`a
+
+iVJ95R,kLMU"AJ#lDkDhjVB@YBA4d3c0"SMQi-ac"MG@0U`AL&3+r63FDRSe&ZJi
+
+Bkl59GDfq3PQGkm%-B$m%1`XBDI8'Jd6Ch,5#1*df3fMcZUD'eSE'1i&N81#QKPT
+
+3V@heMB4Np%PcAI-N32RT)#&H6dYhc3V#JFeeScam2rMTDLpfEF)PPhKc,[(P62(
+
+P&2JJjSj1A8!%32555i,cUPG0$JIT&%DG!8H*2RM$@!-H#TJe91#JG@"D9'Me64)
+
+#)J@,hUL3!#Q3!#3kcX4"#ZMfRljFk!9CHGaJE"jZ#6!%S!U`'%%JZ!GX!VJ`1ip
+
+k+mqNEE8$GKD!,8qBN4F6@qr%k3(H`MeX38FYILcGM"C3Df65fLBe,'HLB%,$FT5
+
+B[X)`"D(Adf&E3',3'+!3F-QjZ@dYUmhpl68H#22+YqlB0@A26)"lN!"K6IkT-`Q
+
+PF#rQM-kC15Ehbhka!MK[fXFKkKmlheX+295@pC(0CT)eXI3#UhHaUlrrE*[e'"G
+
+VpRM)!b$,9qDCrGaAkGr(bhccLQ$5J5VK14RfKkdG@pfbIpeVpA(C-r1EXBT[Q'C
+
++ahLYr&C[AXAe9erVRrECNRQIZUjb&Y`#VM6jY9iV%[&DeXb!p@mVF-HeKErTqq2
+
+j1cIPIQFmpr%kh#Y)qZIiV1m'PRXR5SN[((Qmj)Q#*kI[+RfUp+Rj6eFmhEplrZi
+
+GHd,2M(qQjrZK[Z`rHH3(Q6qSr-&MIcViCi9r9V9[q[l)rNIf(rchp3F'qrFrN!2
+
+hqF2Ff[Jj'*ZB)J6-8l"&1+(-imce$*VHk91R69dqa[V*%YIii%HCrY`AfVKiiHa
+
+lAecii28r1GYVrIA3#YSp&[M(XVBp1FIFcirN9@l11E+#K!Emr'LS(V(9B@YJhrq
+
+TB((2cKbB*GMhAf5AY@h0k9rZ(5hIG`CqP[fc,Dp9[RCSX'!d"M3fYr5Qk&P@kA*
+
+8j(ZBKGaidr+&eNh486Qc-FYYr#E`C'#ajbQGUjSqk$[qQa8ibjQaqqHqrrk#hhQ
+
+*Fj&P$4fZmd(SaSplYhUmacbq2-qB$CiaHcaMMRNq00pc9YZiA-p(XTClcq-L`A1
+
+DX`Uc$TqljEbUmhCqE2V%*42A6A`XGd[ZrMarh[6*[C2h6"iX+#bS+YK`FIE&CEN
+
+AdfUfhj8DlZpGq9F!Mc5F5EAB#"C'Tbfqe(pTEe(fCBpGGZ6bmCF[b[hi9VQUVlp
+
+NkU9APXcbjRNqdFX[*X`+%U3r(3$m3Lr1mrLarUR!Uf!8hK"Z#h[KSe%aVfPeBfd
+
+3F#B+C!0S&58S#$JQ(2$iPSbCL3)#c&,23p2b@`QNm[KIG&hP$GimJU(K[1#BX39
+
+cr,1RAhcaa@ZQI(DT$'A#NTR&NE[D4qFM0@%CA%H1NfQ@E5JH9paFFQK@F&CmeZ(
+
+CYE-2PHpF9(*YrA9jRcUDqqQ0LMTDDNeqdE6,VPJ"e0('Nab6#eakiU4cHScRpR8
+
+!ZpV0"i[`2T3rGX&emmIkV1Y[(TerrCbEcC)DXK`*V)RNM"fENh&@VUIM-3ID"+2
+
+VF[SF4j*JTlmdjk!$@B*GPE%0XF(Fq")-)43eQ-6iC9l)*cjQEM3jCrYbrY5AFim
+
+[Ci%[Cm*Sbp2VRa+iL[$p06@Y[Y$(#LiT,UJ!IShH!2Di&Gq)N!$2V["II$QpR&*
+
+68pFFEKVV#5k3!'fkX,jk&F$ZfA1+#i#"Cp3eAQV1QP[AFPYGBpfG`8A!I5()l[f
+
+,1k(dZY%Acclkmkrm9RrqUkA0RaQ9`$MRA)G&REQUDI@+qZ"+m#5clmc)D3&*eQ6
+
+-(@0b23q8ZT2rmf-@fF)FSiFel)IpmH&MF,Tr*Ij&*PpZaJC0fA3)2#,q-HEm#Jq
+
+GU1"1DLB$c43"Qb3cP23)@aP9AX[c19r1H,c1Rc$qNVc!0(dEZ'le3XpeVe2c'EQ
+
+H(aja,pbh"hEf2ljZ6p(6c8mGr[k'2[1p$EP2E8"hBj!!8'@kQCbIfcS0@(K--$r
+
+[4L$kXcp6M*fkF(AidXA&mb#-1(YHF38%'$-[[DPi(NNU-[,pY'8CPicqp1U'm+@
+
+I0[k&T%JS1fr1-N$[k-LDS4-%mJi&LblpcErS1[b9TlUq,GeeAK0E&PZ""MZ[Ml9
+
+fIKBYGYlCqGRBBVaj4r&AR[V5Ef)jr[4(AlRC0fAd9klqhHqJb8LeaaF,Pml,qC)
+
+rcc0!d`Y'SE&U,M"pRN,MqAG&d*2SY,mArf&*lPp8FSAST21D`B$1#8jZ)GA"GC1
+
+$iDCJA4XSPQ0MAicGHNPXIGFce#$fj4X`h9&%'HaVfpArT`0r&[lcm!rfjZl[d6d
+
+%D[M1$[FbEPk5FjBrer-I0VTEp[hHjm+(5JlYrfRYmqE&4FmrpZ-PZ5m8m46`YqE
+
+MEC-r-[NM*ii3Z[lQ,[GqE2,Rl!8"U4prZXANJNT!1K*Cjr'HLIQ3!%Jp$[N'V%T
+
+Bi2&(["QPhSc$hX!'ljKahM&aljJphV%phJp([4rTp@D1pfC'[HIdHXrCj6frhhY
+
+"LIH#lGi,-ldA0RXRK,`6HV`6qV`65l`6YrYc[F(YbldAF91Ki1'FB-lLR,e@TP9
+
+Le9[peP"Z+$HHZbp[I&jpARpqIIl45AX,$NjC0hA4aC',"`U$drCmXZ#6T5@K+m1
+
+jT84SM1(E9c"R@M`kIJ4Vack@1,ARMVC+Xr(h(5!-($lh6h'NB0EfllffqGYrmqA
+
+!a8rS&q$j-6QcB2eKhaf1ZcY3pK'h,KfEBKpbfb44-FEjfKT`9fRJRemb8[&@%Ap
+
+XTj9q2TT%"@!ABZl`VR2Qk2j9hT4S2DIXifj4'#ljJ`EG9cNQjmh+kaG8P#kAq[l
+
+#acc1Qc2G)YF3ZA&F,Kk1+A!HTIBQPZ&m+U*lM%0hIA"C``VrTIbe#8L6!TrTB@#
+
+["SaLKRHK*rm6dkB[$qEccibmdVqe"rc@,9([*IQe3Ibj&J3T-&A'M#$,Td#qcb,
+
+FdK)%C3LQEAEG@0m8Yp)PAY6L0rb"[U'!+X2aLN6mHjBaKjrPQl5#j!GChNpF#PJ
+
+%jGIXi!`8J&T+b0mXEi2IFaP942fC0GA0`D$eZDD'9@#B6LIN9aCNYJRr,PT91kp
+
+T*H[LX[a&p')UU4,!(NjYDTXjciFCM"rV#jE3b`X*GPhI-T2[l4XVEJKH0ZfbiL$
+
+"'Y&24#qE-H16KF'E'U&BZ,DK*6Lh'QcLc-E2MI8AjZGA%N8YEBGRj1IR90a`bCc
+
+DTQ9ePham@P&`3F80#qP$PNqhK82MYK42#C*+`&q5m(3HHr55+i+A"9YNUD)&rZR
+
+JpkqrV8jAaRB0dfaf0J#-F&[p@(p)kQ448kfB64C[`&X@MKf6kleQJi-A3Pmjk-r
+
+cAP2,F12dr-EPqDYmeV`LX[bB!!+a)(pfBbfJbqQJA[(TKMN"cabrGmlC-%DCmZ(
+
+!R$'CFdB(jSbUQR01kCa4q,"mcMR4r!$q"8dR)KPFY,MbaRPc&aR[TimZp`S*&lS
+
+jF011QmEI-T4l5iLNVJNc18IqIZMMmch6'!A-m##[AX2!SF0(MKiEc"N#CSkDT9!
+
+q6mRS#16-mqAHH!2#5i3,MFrNi928Rj2RbbRdjIK)3`Nqqr5V`p830HU6#9GAeRS
+
+pLlJa9MM,Gr&e*#kCh3KKa4bRM8XAAB8fTMPYR1@EG&e6bah9GhVP3F&eRbS2qUh
+
+E@[3lZhMl(3hK,dJEVSX,baB'rINh,'aTR8CH8p5b`aJa!,2k`)hP)$d[+`qDLNr
+
+GH0hm4*qRAe2G$0@3!,AjcJAAB3`0LHF&j86FKch9e!CBlLB[!2q9T8X1,S%"ArV
+
+rK#Apf!kBU2&peC+$5mZ@,PTDXA3a[M3XV9TDQlqdhZZ&V"Mk+[b,@NXEPa(ka21
+
+fT@e,)d[MD',VdKidFZ8k@0p3JccHSqdXaXYP5cF[hE,dNDAEm@h0N[kmT6ZphMP
+
+qA!'VX3l[0LcY@lThkIkPe!N'G2V5!E3XRB5dbRDmh,Rdf0,"@p(j9B&Eak(+9CN
+
+RUeb9KEGjYikr0AKVhUf&q&D-U9`eh4h[95'mUEaerUePYeEJ5pfYLkQ,KT(aAP9
+
+9iq(aEY&ria2VF9ApQIA*c22H%HG$q0kaRU,,,[rip#XqmFR3M$PcjmeIX*!!'TY
+
+B[D`'fSP`cZJjSm$YK6krhb@NJVRH,aecQ)63PhVAPqAqeP&j2G&i5Cq9jk)m$'P
+
+kJ,JCIR5rm3rq9)%Aj(h'%32P0d$JIdV8l2hhcF5RF@FPhlh#HBYQMXAI22`GMlp
+
+[a0p+r+h"hhVmRB@r0q$[I2cpBrcp-rcp&2lqVrMl9rKl$rjq&hprK,mlm(FRrZi
+
+"jBDHJKr$hbMq&Z([*2bPNKPp"@r'hhIMlr[`GblqGZ%[8Rd(IaYrlm4Ip"EFJEp
+
+I`0m[iqrpq2Xpr0f'[rq)[irME`q8lH2`&cf'F[%AF`[0`YmBrVi&Ipq&[c2aG`l
+
+qa[(hMr!ArB@fi1rrKVpIa0q[iqm2mIGRq)ZH-N!9CQ6LldRiqhVm,F(I+IKl+Ij
+
+HJEpAiqreq)ZCCA6KliIapf2iqqIiqarapblmr4VqIKpr(m,IIm,IClh)6i5r*q!
+
+[GL%m&Ar49hJfrU+[F"AqBJr#Q&2i6[cYa&rX@4Lc#Q-A`TK9q)rapd[iLcd)SlI
+
+`)Ic&RS@aCf0'iHmVmIGNr(d$rVi*Imr(hfRiLadBX`*rfr!hJErSDmakr&f1[jr
+
+$hlr"Ar3e"RX`jMRmI4KrIikr6hR0D*LJM4f([kr&hd,mr32maIk1aFc'hS+rZ!Y
+
+M-E1aDr$h3rLl"(mrJEqIaGr9q2Yjr%9[BrmFIrm1Ih%Ea[kpef4Jac,(iLpf,02
+
+#Apb'c#[`Y`*rUr!AZjZ*Z@9L*c,[`0pfr-@HCGk([qJY%rZ3!)QlN!$jIIcp0[j
+
+LETNra9rX3bEf)H,$Am`YFJlqSXI)C2`p&hpa'b,S,i,j46#r5#hqASZrQ'(N,[c
+
+&hNAZa9r--),GL+$2#2BMmJ6qEX6Ilq![HSeJ4b*rJlr2H-fBdIMlD[ap$IjLrmC
+
+KRZ1`hq0`LmCKAmB9ibpZk6MXiVKbr(dVrVi$Ih&,aYdUPcU)4%!"Fme2j[jZVAI
+
+ZiPT2e,I`h1LP#lh4H3XpdH+&Cq(l+hfGTZYIN!$mhllC&'qFki[Q,M3iS9r'aDV
+
+'YASlrTkld"r0@"L-ASA,PE(3i0[*RIpkB5$kSB8Ikrcj`V(i(SMqUi8ILAk5,pZ
+
+icSmXp2VR4-r"U`[`qSYF-5-kH@%'UV1$V1M(m2hbKGRiGXSp(G*9qm8,4kfpG1k
+
+BV!p&cjSlpVrq49GRifr'3Yr9d"[2AJk4D8h$-[1CTUD90l1i-($eUSB`C#"AQq[
+
+VDX#4c5i$8G05Gm1GV@B4+I6VQUjL%i*!aFU&i&JZC,(`e$TSLLpMiAYJ$T`aVS&
+
+6a$90Uci$9@DJBZjm-)jYk1#k'R0Gh4hDjN@3!!680Ge!1Yp!@31dL61[K6!p8!Q
+
+"iM35TU*KL(`SHf"4H6ZP"STcY&LV%RS)8qUDQKSVS9QC8PY,SS2!9AAK'fV`(@p
+
+ReXi$$iXjc9ae,H6@JIR3JE10U4#0ebe!E5P88lGU4ELHkPl)VK1"HBd0cCKm'iE
+
+5M1P#KhYp)lSKCfU6UeY`pDV@ZTD`Q3Y0mrZZaBi%&UbUKQh!Qc'`!,9BAAHRSAH
+
+Z2&ZhEh2-YG9YY#+b'l%E9e%21RAUI6%(2UjK6HSdk$3[38ZBP3fRYZ968'(,Y$!
+
+QI,k3!(KLplZUUBDHA[6j6jI9dScG[NJ$V-Fj[*e&cYM+Yd%+*6[jpP@ef$$UGkk
+
+VDm6FQUXEjcG83jk#)UJmlHT9bjZNN!#8[TaB8TX%1ki"FeVA4)eIIZf+PSSQ,%E
+
+GJ[N0V56ZjLXZK0i3'E2X)YUk#1[`J4Y*)-[ppKEYZYVj69H$D@jZS-(TSXRbFiC
+
+Dj"d3"+-cZ8*e6Ab8A*rF3$BCZ!(FVHZTYU@LSBBSH9hlbk'ERJU1qRe8&+flDi+
+
+pJhj9HZ9qTAZY$9qpLQq#,!5SB&N(,@p(iHh35r[ASZf'F'd&R"$Qm-V*4(#PCY`
+
+'YKa$`0Q6'f9,mVB9Ur6DB8Pa$0"AeEa`)bq)R*(!SQ[Te&f%UUh1*XN"Nk[%Efc
+
+(AQ)NpNA(F+(-3G4E9AA,Uf&0%&Ki`lA38dqliBEQ1Qcec,#HH)``8)N*3#Z!!ea
+
+c,3C4el#b$RF)EKNbIjYBE4LRD1V#aY@Yp6Fe0FTYm&B'pqfDPG!Uii9hU,'01--
+
+`SH6Cj!i+dFp*ie61BFM"aC2lM3&kjiIAc,BYaVS#6[j#V,eXe%8d)(l"@,cl+h[
+
+Q(piE@h"$3'[,L5#`i$8,N!!DiC,U9Yie$1EYBHPX@N[65PP0DAhD[,Q*fcFcc"[
+
+!iir6c(Y$1a'ZfpZJ`F)0V+U$X2SDD1+`'pI1j5%3'[%!r#%X!Yi-b4Jf#41`Lk%
+
+AP$S,@4AH6IcfVrp&j&c$fe!l9dD[Fm!UZ3DQmY@ACp2`a!fG+b'lc1(D1Ci*6EY
+
+L!Bk2Hk"EClM#pYSDdd[iYVT@2SDk#[iLS$0[JM)!'5([P)H2&'r-Z'e4%a`e1(a
+
+lL9d!I*!!6lcjpSP!bcjGXKSD`YPQ!AQEb,VTADbM9DeGl8#lYPVHqPSBpr[)%N0
+
+kb`d,2Jq*LQ!J(NpE3*fYh431ACZG`ihc,-NK5D0",$N2k*YA`A[!YKl2VmF4iCJ
+
+&l2#Q5+HiKE*XP`!-ik3!8mmaep&K5U(5fTBE`JkQZU+Z4FqrA+SrE*S$Z34aM`%
+
+`hL)F3Yi9l[l-94"8A!Z%)pG@jMZ(li@l@V9ckBc)#Z"0EE@,R'89G'b+A@CIdl4
+
+-Kc#9EChN-(#"H&4a%IP6%!LA4#YKGP0[*L-*G`6GZ+'@R3N3IefYSRkH#X-M+&(
+
+AY*J`"9jGbmi)+%G-M-P-VB-A4pd#PMGk-&!A9HT+@9YC`c%a3$ahU6&&EBM)8#m
+
+b6jphHD#Ka#qEL8cmNVS@R#I"&A-"MEN8JPaRYYi'$5[hM'MQ%NLYb)0`19V4bBb
+
+kKNDbr(PM,4!5rVi4h`*3+X(M#ViR9m1m)l#mX3PcZ,Tk@5Y92DH)(8MJTh'GJ3f
+
+8e(UMZ4d1(FKL!%h"3JmX(U%%@-PL"IllI`!J)!GXEfG[E'PL!*!B15!!N!-f!!X
+
+!m`(G!*!$53!-L-m!$c!#!*!$&J!1lEd!!!)!rr8!*!%!X1+D1VQp(Y8!N!C&4!#
+
+3"N*&!*!+Y$)!$3%MEfG[E'PLFfjKG'9ZB@ePFf0PER0P!*!*j*%!N!m1l8d!$Zj
+
+f!!lY63#3"&4&@&4dG(Kd!!#j[1NPZEcT*J#3"f3!N!G*!!$#&3#3"[dj88fD0!&
+
+bU4`%B5EN$db))DJPp'H!%-3Jj-lbX8#%I9PXd)epb5%Z+pf(3$I)!Z4M2C!!#q%
+
+H3R,FA8&J[T!!9bK-je!f%085lJF!!!d&2h*PFh4TBR0ZBA4PEQ&YCA0MC@jcC3#
+
+3#I$d!*!2$Zfp!!l[,`!1l8d!N!4849K8G(4iG!!!ZEcT*VQmk5F!N!GG!*!(53!
+
+!Hf`!N!DVL&&0QM3"FUNF"'%Qj!p-L#&SJAaK$,TTSicI`i$8(N,)BCE$)$d$q,%
+
+[#m5#Zq3f$,Ua,cRS$q1`d"Ib#SAT(-S'SK`$YKm!N!30!@"bCA0dD@*cEQ&dC@j
+
+KE@9cBf9ZFf8!N!RUKJ#3$`lZGJ!1m"`!$Ze0!*!%9%9B9(4dH(3!!,Qmk5bj[1N
+
+Z!*!'!AJ!N!Gp!!"Zi3#3"R$!88fD0!&bU4`%B5EN$db))HJ0Y1PZ6k"[FY!IaN*
+
+r"["PX6LEACU#ET!!"Gekp-K*Im#jJbc)m#15@c!+-M"B#%!1bf-j$"!ALQ&k'FY
+
+)hqB$9jRI8[[+BMIZqm9X!T&hV9MHeG1S8,Rdb&MIhN0M[T!!9bK-je!f%28@lJF
+
+!N!-0"f*eFRPKE'acEQ&dC@jKE@9cBf9ZFf8!N!P443#3$`l[,`!1m,N!$Ze0!*!
+
+%9%9B9(4dH(3!!,Qmk5qj[1N`!*!(2J#3"bd!!05C!*!'IL"46CSd!A+T(!4K*Z3
+
+26)JK51G3YMXB&2,[i)%Kl![KX0!AmJTc)i8iB!N!N!30#'*eFRPZB@ePEQ&dC@j
+
+KE@9cBf9ZFf8!N!R#aJ#3$`l`(!!1m9S!$Ze0!*!%9%9B9(4dH(3!!,Qmk6+j[1N
+
+b!*!(6J#3"c%!!'($!*!'M@a46CSd!A+T(!4K*Z326)JK51G3GXLGj30DrSd,q6[
+
+`Tm!Ia['3!"[b#R16K6L2l3F!N!-0"f0KFf0KC'9PEQ&dC@jKE@9cBf9ZFf8!N!R
+
+f!3#3$`l`Z3!1mdX!$Ze0!*!%9%9B9(4dH(3!!,Qmk65j[1Ne!*!'")`!N!B"J3!
+
+!E3S!N!DHV3UL!)!J!jLXC%$a4em*a40+4P6bP+!(J!#3!+-!k`08!'3&k$`#m"9
+
+CbB!5p+-9S$b[$k#R!d)Pb+0iFRL"l!3QQmd'e[GV%2)JQ`H%V)3G06ZkCr$52@5
+
+#Pp`#$Zqm8V8e"*i4,k#Ubbh6DUCp)J$!,LqB-8[kUFdh(dlXZjBIX'*D5`f*BB$
+
+p!R[*6(9R3I!M)mXHe-"P#C+QT1Y6dL1$9H5miB0Qe&ifXUa8`VePl@V`L(PPTf+
+
+%%#6NMSU`3qDa"N+"%pA'Qj)9[++#S0LqKf)IMI33ZpB!r*S6j#1'fAU`Tc825H@
+
+Vjj!!$kXfY4#VpU2'[N+(GNBkQMf("'"MT5*$F&[dfCq"#Uk0NkC$Y26Ep-)a*Q!
+
+B-e"ql4M)`b$6eR&MaqP4X`HM*jhp8aPR!&9+R1G$%c'!RAd6Tr8LFXM9dQ3Zrj!
+
+!Tj!!H$il0IM&Lh4aq3md@[epIY`3f"depeXd8LAYHTf9AlbiBpUIkQQ`aVAECYY
+
+DRrXl(M808SaY#2S(!!d*Bf&cBf&NC5ibBA4PEQ&YCA0MC@jcC3#3#4DE!*!2$[&
+
+D!!lcr!!1l8d!N!4849K8G(4iG!!!ZEcT1,Qmk6J!N!GX!*!(33!!eYd!N!D!EP&
+
+0QM3"FUNF"'%Qj!p-L#(`Z--HYpHAV!6GY,&E0GNIBMNFlJ%D#L%,h#`Ec!DL@"K
+
+@8TJ[j"8+dcQdQ+%VKIX"!!d%Bf&cC@&NC5ibBA4PEQ&YCA0MC@jcC3#3#5U6!*!
+
+2$[0,!!le13!1l8d!N!4849K8G(4iG!!!ZEcT1EQmk6S!N!B#&`#3"md!!"!+!*!
+
+'RP"46CSd!A+T(!4K*Z326*LFjIBJ#$cZX!pSq6FpiJjbmCXGG(0KAaKdbcRlQ5'
+
+)I&i@L$$LI$f%(MIf-%#83h)4JJKdJaaQ1CbMSc1q)1Y$Qkfq+44M"X%S%-AJqeN
+
+XcJCkACS4j#+q+4(k3PkK%1F@p0Y'c*m"I,c%F'9rD5r[pHLaK1(j84L[*+@9c%S
+
+94+c(lFZjJh(SFh6"&b3MqJH&)1FCq,,5I5KHK#cV8lDJCLhe1,b*p%hKMSRPm+Y
+
+PL"he1*30ZZ9XIBlrTR!r!!d)Bfa[Ff9KE'`bBA4PEQ&YCA0MC@jcC3#3#6SU!*!
+
+2$[2m!!leiJ!1l8d!N!4849K8G(4iG!!!ZEcT1lQmk6`!N!G-!*!(13!!&RB!N!D
+
+#Se&0QM3"FUNF"'%Qj!p-L#(`"'(Bj`i'K4N3qG`H"T!!@m6k3U"E6K*Dp"$k3Pk
+
+K-*e$f8#8S#d"!*!$$3GMEfeLD@jPE$*KG'9ZB@ePFf0PER0P!*!*3PN!N!m1p6N
+
+!$[DE!!lY63#3"&4&@&4dG(Kd!!#j[1NpZEcT2J#3"i%!N!G*!!"X-`#3"JbJ88f
+
+D0!&bU4`%B5EN$db))I$!V(4rb!HdQ2'(qEFSl"2k-d!8)LmEZd-hb''@`cQK5p)
+
+hKE'NalpF1VJKVe#BcU&X))SjX[d!N!-0"'0[EQ4TEQ9X-Q&dC@jKE@9cBf9ZFf8
+
+!N!Nd&J#3$`leiJ!1q$3!$Ze0!*!%9%9B9(4dH(3!!,Qmk6qj[1P"!*!'!d8!N!B
+
+"+3!!mj%!N!Bd@&&0QM3"FUNF"'%Qj!p-Q*cPpL!)2$$N"9Vq6IF%h9cB&aB'SFF
+
+Gc()(I%#8NiYpB5k)FdJki`Zb2V3#k'F!Aer1(@4"KKq&F5bGBJXqK#!#hF5B36!
+
+D2`IZ&CaL$b(N--[Ke9(Q#hQ&3TcEeDF0$&LFc5l23EHBdh[GHS"Z2AVd@!*D928
+
+%PhDfck0!ElFC3#iL8eLdr9bNi!Z'I@#`%)#%8q!R&+bKaq&0A*3l$d(N!cRqc12
+
+'(LBaS)pR'A1Kc89mFp@BTBcd`bC$L*F[*j9GP*B@i'0I&P!ZaBJYN!$"`*H9lN0
+
+aKE5Bpc$LI#$$6CE`c6965+dm2R$&*D1ZXi-4N!$iJFk5CX`Gh4ANEkiUK5fq(cR
+
+`kN-L2M8p$Q@$EMPIaMRbQm,p!*!%$3KMFQpcFfeKF$*KG'9ZB@ePFf0PER0P!*!
+
+*Kai!N!m1pTX!$[Pa!!lY63#3"&4&@&4dG(Kd!!#j[1P#ZEcT3`#3"J(p!*!(c3!
+
+!$AF!N!Df59&0QM3"FUNF"'%Qj!p-L#(`)"J1ClPCS29N*@0I&KYdBarSaPm$IaL
+
+(H`#Pd*m"5$$*CN&k4Jj(*+%EC)%R+a9Nq&%B,mP93,FH2B5am&@-q8,HA1h,U,L
+
+i%9m3D1-9k"%h#Lma[p*@q41i@6DB[Ebi+hia9N0eC8Ic(UUj!RerQ%pH'fFa)8f
+
+Y"Y$M*LePIE%XGi")jrA00(-K"(-I%21&AkiRKpj*"8'@`f[B0fh#B#()HG#Q'VI
+
+*B-AF6RXFbJEG%UXQEB4p8lJI!*!$$34NC@e[FfeKF$*KG'9ZB@ePFf0PER0P!*!
+
+*Td)!N!m1q$3!$[Sf!!lY63#3"&4&@&4dG(Kd!!#U1JQjUMS+h!#3"hm!N!G9!!!
+
+TQJ#3"Vqf84J#Vbm,#X-qM(hpF0MIh`G59BPcNKdNGcT2r#%[M1ENhf[8##JEpPL
+
+FqM!EG&1""NXML4m6FQ&J+am+q)+qE'#"QA#J-15,HQ!S$)-qS5rN&3Vh!`!0"f4
+
+PFA9PG@9`-Q&dC@jKE@9cBf9ZFf8!N!P#LJ#3$`ljF3!1q`-!$Ze0!*!%9%9B9(4
+
+dH(3!!,Qmk85j[1P'!*!(ZJ#3"ed!!))d!*!'epa46CSd!A+T(!4K*Z326)JKm2V
+
+kFMl1"l5Bm5ARR253!$[,*`a#McX)4-JAjS*BQ181q1*(b2#M-!DBmBFb9f%&k$S
+
+%k4cHbS`ic()BD'1ZEXJV&+Cc+"Z)BZ@`r3#3!`d)C'mZG@jdD@`bBA4PEQ&YCA0
+
+MC@jcC3#3#FYK!*!2$[Sf!!ll[!!1l8d!N!4849K8G(4iG!!!ZEcT4lQmk8J!N!H
+
+*!*!(53!!B,B!N!EiJP&0QM3"FUNF"'%Qj!p-Q*cPpL!)[$#C#f&r%'KcAR9r+)a
+
+4r'M$N!"A#&N3pLf2Ud&r'!24-M#a,LP&SBr3@6U(XS%SVXRf!`#3!`d)C'mZGfK
+
+TE'8bBA4PEQ&YCA0MC@jcC3#3#DDG!*!2$[X$!!lmG3!1l8d!N!4849K8G(4iG!!
+
+!ZEcT5,Qmk8N!N!H*!*!(53!!+"8!N!Ea(&&0QM3"FUNF"'%Qj!p-Q*cPpL!)[$!
+
+jb[L$2U$0HGApS6"'mD-03eiKC%&i49`0qX-BL*D"LA9*+3TpK-l51C304(&0YKm
+
+!N!30"@9NB@aXD@aP-Q&dC@jKE@9cBf9ZFf8!N!QDK`#3$`ll[!!1r4)!$Ze0!*!
+
+%9%9B9(4dH(3!!,Qmk8Uj[1P,!*!(1J#3"bd!!(MY!*!'@m&46CSd!A+T(!4K*Z3
+
+26)JKm(RG`D$3jr9Mi)%Kl![KX0!AmJU&k4c+"U,Fq")!$30PC'jXE'PXC6*KG'9
+
+ZB@ePFf0PER0P!*!*ZF3!N!m1r(8!$[fc!!lY63#3"&4&@&4dG(Kd!!#j[1P-ZEc
+
+T63#3"d3!N!Fa!!#0m3#3"Ki588fD0!&bU4`%B5EN$db))I"j3d!EFQIj`N+Ieim
+
+"I`VmBC`)K9kK-*e$f8"%8'`r!!!0"'9NER0XD@aP-Q&dC@jKE@9cBf9ZFf8!N!Q
+
+pm`#3$`lp%J!1rN`!$Ze0!*!%9%9B9(4dH(3!!,Qmk8kj[1P1!*!(03#3"bN!!1P
+
+[!*!'X#&46CSd!A+T(!4K*Z326)JKm(P$BD(2kmFJj-lbN92S&3V61C304$R4*3!
+
+0"'9NF'aXD@aP-Q&dC@jKE@9cBf9ZFf8!N!NV4J#3$`lpX`!1rZd!$Ze0!*!%9%9
+
+B9(4dH(3!!,Qmk9#j[1P4!*!(4!#3"c%!!-j%!*!'*jT46CSd!A+T(!4K*Z326)J
+
+Km(RC)0#'h&QqX0$Rp@2!"S2q-%j%3Up3Q-kKE#$L5@`r!!d&C@4`E(0TE'8bBA4
+
+PEQ&YCA0MC@jcC3#3#61j!*!2$[j-!!lrLJ!1l8d!N!4849K8G(4iG!!!ZEcT8EQ
+
+mk9)!N!Fi!*!(,3!!q'3!N!DQHe&0QM3"FUNF"'%Qj!p-L#(`HGPJ@1McqM&JJri
+
+`*VI3+a5QFbJEL(,$5`#3"!d%C@4`Fh0TE'8bBA4PEQ&YCA0MC@jcC3#3#4q0!*!
+
+2$[lY!!m!*`!1l8d!N!4849K8G(4iG!!!ZEcT8lQmk98!N!Fk!*!(,3!!GQB!N!E
+
+L*P&0QM3"FUNF"'%Qj!p-L#(`HGQ`d1IeBm!Lk2&j1H3Mpp!V&+Cc+"Z)F[*,!!!
+
+0#f9YB@0c,Q4PBR9RC@jKE@9cBf9ZFf8!N!PHp`#3$`lrLJ!2!I!!$Ze0!*!%9%9
+
+B9(4dH(3!!,Qmk9Dj[1PA!*!'!jB!N!B"@3!!Did!N!Bil&&0QM3"3#k9Jb$-K2b
+
+"#6%%[Lbh*jcXpD9cQ8#Ei3rkH[Q#rM$Eb`1p2U$&b1hapB+S9aMl@'%3HYc",(I
+
+!"d44Y*3c3AlX3d*r"JLjXh`X%,()(m*4[aFc3Aq@(i0Z3J#)GiiI4TGTAZ-)jU,
+
+3+Se[#L(V#qA)2ZQ+KAei3l,(S@c3V9X2d'ejDeFPh(4r@6fb[pP$+-k!b1If--!
+
+$3pJA`Q'!Z"!3%fDbBLT&[X*RchX1Tee[0(4`'Y1dS+21DGDeX[!RM,@06THCh,k
+
+j%IdH[bd1FUCkl[-#l-G"hdBDG'-4kB333#l[EH,3Ji#"QidCrS#8fd8Xm'IiJQ%
+
+Ib2*PTIX3#l3m(,6aH[kU4@kM4L(b!P&hFFbLd&dLqEb(h%"`[pQM4ki!hp%fM[Q
+
+E%U%R#%PrhrZ3!&aq,KCIYmX2ahZa6pVe*fph'H@E3Pr)+mcp&"@@I(2CIJ!!$30
+
+PFQjMFbjNC@*eCf9ZB@ePFf0PER0P!*!*aD8!N!m2!#F!$`+4!!lY63#3"&4&@&4
+
+dG(Kd!!#j[1PBZEcT@3#3"d8!N!Fa!!$R+!#3"PSb88fD0!&bU4`%B5EN$db))I#
+
+K%0#'h&QqX0#(h'%Ii'q"2i`6UG!V&+Cc+"Z)#)[Y"`!0"'9bF'ac,Q4PBR9RC@j
+
+KE@9cBf9ZFf8!N!PA2!#3$`m"m!!2!cB!$Ze0!*!%9%9B9(4dH(3!!,Qmk9Uj[1P
+
+E!*!(43#3"c8!!--j!*!'[#Y46CSd!A+T(!4K*Z326)JKm#%f#,3KGjB[,23KGpJ
+
+(f'$3(mD*61J9#Y-jP!e%2)VY"`#3"!d&CQPXC6mZC'9LG@GPEQ&YCA0MC@jcC3#
+
+3#6ah!*!2$`+4!!m%!`!1l8d!N!4849K8G(4iG!!!ZEcTA,Qmk9d!N!H0!*!(A3!
+
+!I`#3"rA$88fD0!&bU4`%B5EN$db))FM`"hdYJ*Cr$GeC2U%r-`54$rJ3JNMSF@-
+
+2!d3j4qJ'@9m)qGcHa66`"'(BYrMq65(N--YK%))Bq,*BR-h'60b3!&FS61G30K$
+
+P',2p!!!0"@CTE'9`,Q4PBR9RC@jKE@9cBf9ZFf8!N!NBL3#3$`m$0J!2"-`!$Ze
+
+0!*!%9%9B9(4dH(3!!,Qmk9kj[1PI!*!(L3#3"eN!!*&q!*!',eY46CSd!A+T(!4
+
+K*Z326)JKb2!(I5c3mUqK1mXRp'H')2)"(d)3#6eZl''!+1F)h5$V#b'IflZB"Ti
+
+J$2X@hlmTK"aQ13am@5c1CQ-@EXJV&+Cc+"Z)FQcCIJ!0"QCTE(4PFQ4PBR9RC@j
+
+KE@9cBf9ZFf8!N!Q,Y!#3$`m%!`!2"HN!$Ze0!*!%9%9B9(4dH(3!!,Qmk@#j[1P
+
+K!*!'!IX!N!HY!!$E'3#3"S@@88fD0!&bU4`%B5EN$db))FM`"l%2!@hZZijp@@c
+
+3MAe!'lrS3AmBJfk,lb'AP8k)P4jJX"!NRMQ!J"b)FlKAU@)2S6m$N!"%NXfZ-Sa
+
+@4J6-BYPJpZTkT*hR4kXGC5fNBm1XG(q)`,l(@6c)q@J-[Bb9EGh-i8iUk4D9rrm
+
+S-&r)Ql2+Yj!!,fGd%mE[BFM8'13`bf(H`LGBL!@[0bIa23jPJfka(S6)0iAl!3#
+
+3"!d%CQPZC'9bC'9LG@GPEQ&YCA0MC@jcC3#3#4!E!*!2$`6-!!m'qJ!1l8d!N!4
+
+849K8G(4iG!!!ZEcTBVQmk@-!N!B"JJ#3"k%!!'J%!*!'Dm*46CSd!A+T(!4K*Z3
+
+26)JKb2#([%$,[qRBPm8'hGJ(Y2',([5(-HLfq"jb@HNq"&*lJ-&#%([QFF*a)-k
+
+KAU@+2B6q$%!556DlbLpL3EFH13#,CB2C+qZ3!$kH(kff%ZcRb@m+59"G@fi[BkA
+
+r6Eeh8L9#AmLE-iqhN!![C`%6aZpK51m-FTMP-'rK%bc%JYF6N!$i(SHb3EHF$S6
+
+'0iAl!3#3"!d$CQpbC'9bC'9LG@GPEQ&YCA0MC@jcC3#3#5%F!*!2$`AT!!m)Y`!
+
+1l8d!N!4849K8G(4iG!!!ZEcTC,Qmk@B!N!B$D`#3"J&0!!!kp!#3"ZIN88fD0!&
+
+bU4`%B5EN$dbBR1Af)!Jb)!*DmU*(h%(1&mkpqD%`4Q#`%!$3,4D13BBIKI&5eMH
+
+A%[b3!"rlh8'!Z&#-e-[B"22mSC@Slp%ipV&m6r4q'8am*")$X6r$&`clF[N#pJC
+
+)bH@mH0jEhYJEZ@$4b6GMIRq9qqBbEV'(-!Jp**EYKARFf--!%Am@Tm5G#EV"R#C
+
+e,`cjq2jMAjJ,BY#0C!*)XJ["ErB3NX4l2B5qN!"A+-3j8hd#B9RZ3+ajfZKPe-r
+
+)QGKL+ZpK"X(SmP+q+8a3a1lTbh#4lS-FCMQFN!"@Ph9rCr(BLN[lNF@+V+b@5R#
+
+c@*`GUbdVR*VP',+j*DY"2rN+&',+KGb2JJc0[cU5A9`Q6!d)a`miGj!!"4l)KCC
+
+pSk""MLXe(,KAI,l)I2(TH$jXk#C2l3'kTFC@f103GXjD-rGm(eRjha6Z"`!0"fC
+
+[FQ9KBfKPBR9RC@jKE@9cBf9ZFf8!N!PeF!#3$`m'qJ!2#M!!$Ze0!*!%9%9B9(4
+
+dH(3!!,Qmk@Hj[1PS!*!'!Tm!N!B"#3!!00d!N!C,Y9&0QM3"FUNF"'%Qj!p-Q*c
+
+PpL!)-L$bZ6d-k+D0AA4rL19`Z!G3#MeZ6*+&H&#F%hFQ'#`%1FplN!#0mh8[$2N
+
+!iN,)&qD#Q##8(%)DVi$d)&KK#%&h'+m+9AVd%"+YphS)I5'[8)J6$9@!&[Zbf+!
+
+Eqj+$rM""jHJX0bH%A&Dk$`Rp'B!NNQc5NipiffZ&pc#$B(4eaGm8ZPNfQ,e'8AL
+
+Jqj8)VHNLh3Fj6%UF0GE,@%Ak+khG59hC[9aA6TBEQjGlR46$I#q-)CXl*T8h"e'
+
+XR8,Z&'3SRF89[bK*&2!@5D$2ET6aNdp"KHK)L9i'm*2D)"DmQB2!pcL8RIJ#c%C
+
+afDR`qkC`2`#3!`d'Cf9ZFhPYD'9LG@GPEQ&YCA0MC@jcC3#3#HX3!*!2$`Lh!!m
+
+,!3!1l8d!N!4849K8G(4iG!!!ZEcTDEQmk@S!N!Hk!*!(B3!!4!B!N!EK$9&0QM3
+
+"FUNF"'%Qj!p-L#()p)A#f9P#I`B)33a#lL`I#d5j)6h%CDAl%1L@j3li9SE@HJM
+
+AaRDARqq!9#(N--YK%)A)5fMA"1B,HBA#G!jPJflGFT2I",&$L[KQ$q&q!*!$$3C
+
+TCfj[FQ9SC@*eCf9ZB@ePFf0PER0P!*!*)r3!N!m2#M!!$`ZH!!lY63#3"&4&@&4
+
+dG(Kd!!#j[1PVZEcTD`#3"c8!N!FY!!"R8!#3"RZA88fD0!&bU4`%B5EN$db))I"
+
+RKL$b!@dBFaNC3Pr)+a5QFbJEL(+$E$m!N!2q!!d'D@jfEfYPD'9LG@GPEQ&YCA0
+
+MC@jcC3#3#4X%!*!2$`X"!!m-@`!1l8d!N!4849K8G(4iG!!!ZEcTE,Qmk@d!N!H
+
+(!*!(63!!`2X!N!BLH9&0QM3"FUNF"'%Qj!p-L#(`Kb)`i!2Dh(FR1B-,HE!IKN#
+
+h@%6hKeJ1KhX!T6!jbjfGlS-F*J&`Xf``H`hh#XYm)Dp3Q-kKE#$+$E,p!!d%DA0
+
+PF@YPD'9LG@GPEQ&YCA0MC@jcC3#3#8eR!*!2$`ZH!!m03!!1l8d!N!4849K8G(4
+
+iG!!!ZEcTEVQmk@m!N!ID!*!(G3!!ZR`!N!C!c&&0QM3"FUNF"'%Qj!p-L#(`Khe
+
+pJGB0Y1P#I`B)33c%j2SQZ4G"0mKKPX-jM%SZj*[#@'EJCN'hE[ek!(NUN!!#,6P
+
+)LTTlYb6a5dmLp)@m#GI8Jf46cecc[4i*1ipr`Aa1[!2)DbrAT-HKE0!YTcL4rkC
+
+`2`!!$3PXEf0KE'eKDf9eCf9ZB@ePFf0PER0P!*!*p)S!N!m2$&X!$`i*!!lY63#
+
+3"&4&@&4dG(Kd!!#j[1P`ZEcTF3#3"i`!N!GC!!"2Y`#3"N!`88fD0!&bU4`%B5E
+
+N$dbBR1Af)%J#YMZBj3liJ$ENcL*[BhH3!2-*)BGC$J0ad"r'3*3$!A%8)Lm3LA*
+
+*45"bXf``Q`3%AU)@%N@*d"Ib#SAT(#+8A*6Y"`#3!`d,E@&MFQpPH("KEQ4PEQ&
+
+YCA0MC@jcC3#3#Dam!*!2$`e!!!m2-J!1l8d!N!4849K8G(4iG!!!ZEcTFlQmkA3
+
+!N!B"CJ#3"lN!!'q"!*!'Y9&46CSd!A+T(!4K*Z326)JKb(*l%26eBpdK,p#5peJ
+
+BK"jh%(3,ZE0m`"pL14cdKh%Z4dHq-"I%2B4ClS!2L()3RKq4Z%6,f!cDbiJ&r3`
+
+3JM'*)G$QJ0m6B`E"+"$j%)))L-1qH0!2jp#XQ23h*C)H3Um[`amLFPqZ8kGfRGc
+
+F%%'2cmXK(m#qIU3#JUF9,0S#a)9!"URNBrKZSLrQ3fl5`JX-ihYED$&Ib#X8TR-
+
+S1kBV4m6f!`#3"!d$E@&`FQpPH("KEQ4PEQ&YCA0MC@jcC3#3#G)i!*!2$`i*!!m
+
+35`!1l8d!N!4849K8G(4iG!!!ZEcTG,QmkAB!N!B"P`#3"kN!!0ep!*!'d(Y46CS
+
+d!A+T(!4K*Z326)JKb(+c3%YHG1c,BS0Zl!2GY2'6([5(FEJ(8!SKbi-UB%888S@
+
+qN!!hl[%d2VZ(A&Dk$`Rp'B!NNQ`@C2K4'+m#[JFjc(*iIIUE`PMDKPRTrT!!$iM
+
+G,"[-AP'I3#r8"EX)"J["mNI0UDbAXBVeT,BlUC*%cfmK(fRQ2@f8mAXBN!#Dk+5
+
+A!I`%#l(JYC,%pcL8$EVaLa2U3Z@E`[d!!!d'E@&`,R0PH("KEQ4PEQ&YCA0MC@j
+
+cC3#3#Ie*!*!2$`mb!!m4E!!1l8d!N!4849K8G(4iG!!!ZEcTGlQmkAJ!N!B"RJ#
+
+3"l%!!0RD!*!'`pp46CSd!A+T(!4K*Z326)JKb(+cb@%Id1DqkpLAa3EGf!HkDH-
+
+R2HJ2ih!2S"4#0SDVJ"9T5"Ak3YiP3Nm*Xh[)CDAlN!$3R`&))XPQ3BBIKI%Ui(Z
+
+3!--XKd'h(Mf%X42hKE![j2%"XCYPJpQV@a-Q#eHK8J5$K@$&SmClkQ@XiMhTkNk
+
+U*0([@mK(bRT2'fAm(JDN*VVTC3!r`8)XH+dNm6d1CB0ZXFPP"3LKE`Vh!`#3"!d
+
+(E@4KFR*KHA"KEQ4PEQ&YCA0MC@jcC3#3#CK-!*!2$a",!!m5F3!1l8d!N!4849K
+
+8G(4iG!!!ZEcTHEQmkAS!N!B"$`#3"j8!!#S5!*!'CDj46CSd!A+T(!4K*Z326)J
+
+Kb2+k%A*R!fhBhpmA"Yfd%2Ncr5'3!0T$')3HGa#)F[)Xbah`a@iJcRher#L-iq#
+
+8@a6k-d!)BZ$,BR%f#p)ciS"r8!J!k*B"%HMQMp0QZRH!H+P1%FK*!pr-KBVR[E!
+
+2ql%[#fJ*2DdKkfiQQEA`c4j#b''@)ckb2MIN&3V61C304$%Uf`m!$3CYC'PdC@e
+
+jF'&ZC'9ZB@ePFf0PER0P!*!*@@`!N!m2%@`!$a-b!!lY63#3"&4&@&4dG(Kd!!#
+
+j[1PlZEcTI!#3"iB!N!G4!!"Jr!#3"JZ"88fD0!&bU4`%B5EN$db))FMbqV%[#fM
+
+p)Dq[(p#k%A*R#rdC`*I&iQ`fRRX2NT2)IP0)6LQdPa(2Ll2R4f'm`X30HBA#G!j
+
+P!e%ZP1d(!*!%$3PYC(0PG'PdC@eZC'9ZB@ePFf0PER0P!*!*U$i!N!m2%R%!$a2
+
+V!!lY63#3"&4&@&4dG(Kd!!#j[1PpZEcTIJ#3"hS!N!G*!!"X13#3"VMC88fD0!&
+
+bU4`%B5EN$db))FMbKRhBMheC31X2HAhpJ0D0N!!l'fJMlU!`(JhFB4c2UeRHR%`
+
+[Z*aBc%@k)Dp3Q-kKE#"+U,(p!*!$$3K0CA0cB@GPFfeZC'9ZB@ePFf0PER0P!*!
+
+*f6S!N!m2%c)!$aP!!!lY63#3"&4&@&4dG(Kd!!#j[1NRZEcT+J#3"JP&!*!'"18
+
+!!(,3!*!'6hi,SJ#!)!1B(cP+k20c28k1Nq0N`+iR4e[$aj9`qKkK'Q&4FLcb!+X
+
+(M1m!#!A)L`&me16N1%%rBS'ULdQi5Bi66JEm##F64K$&[CAJ"8U[p4@YCkq[rGC
+
+6bc(U,90M,0-MKfLmSqqQhkTA9)6J`c%JdQ4#RBmQ5B"aP(BQ$UQ9$i&MjedG+AR
+
+L(1[kGX0"bBd[DDk6YR6P%JH($rQ`UI*p)Yp3l(6&+LCG2C!!4`10pAZ9qT!!F0S
+
+BXI%pMP-R(G@HScY0C-d$ddNN(G&&ekImeY6b&*Pi)%fFG-Vj41am[pd01ENK[2[
+
+[P15"49p*BM3edpRjD96h[NHLj%9pS2e1j`YV6hZ6GSJI8V8ld"R5F-i1pcK2MpV
+
+fV(V(6aeAL@Xk26p99q-T$ml[DBIIXC@CPPH0F6991U'"T,I8J+DK-3#RE@"G(kK
+
+QT(#Y9XPhRA(EkA5U,Sj[JpPX,"kTZH!C$c&a1f$j8LkjL,&[mC`1k,4PlHKUAPb
+
+[LKIS+q'ER"ThZ[Cle,8jN!$e&D!&mPh`&GGp!2,D@PAZ!UVl-Y0mV!FCTS8M(RN
+
+XXip-jH+)NV`IErJ(!P`L6!RkCE%U2l,ckqR(clqIUXVh0Q0[(-l@e[c'Y!fkfjN
+
+UUKYG"8q"B42!)T!!SiF%5%3U'Z6(p"PXp%MHf81Z8QVqUmU,jI,krPqK&,HAap5
+
+fYmP-!#IR+N*I(Af+jJGC,JERhA$V`f%+($lRUpHS&%V3H%h!!cV1(KGeq%i5-X$
+
+S!J,)MBjN,YEPFPd5BPEPBRNmmQjpHeHXeYFP4X#YGj2"k"q'`"Qd"Vec-08SqmS
+
+M9Bj01ijm$M0Spj!!p5+2qLLbNA+RkSeq&(5FUCKUMATA'!m(-3q8`pD#0$Q#31j
+
+8PBH1UIMPUK3L"iVPbh!*C@ML1iG#S5"G!6c[1lA8q9i4BS3FSm`-%ImJ3c&F)fX
+
+#)+4hEN6Kjq*qQ6ZBAbe3rFAP8!1%0XK6h6l2L$Cc#AY91GTh,&'`KQbKiFLMT1A
+
+YmpRjka,5k04EYT9[@FTmcH'",4pbUam'f-RJTED2L6D#qKqkNGLri*fUYcSi02m
+
+5c(jU+r261pVUX*'a9hPVS9!CB6r0X*ZLhPMiF8)V`G1dR3p*Z`4#NbD00F*2*Rd
+
+KUfEF(5$R4Jq@bp-(pRVRf1%GALl&Ur,dKm`Ri#'JhC&qe-E+TG1r(`Pb*jdmR8c
+
+3'8mQX%q')N,h-$[YIDMM#kQqTYE("#8$$)QBE0Pad,)*MTC#H(Qh,R*lm`ZX'p)
+
+JjcN(Z`DDV!ef&T3Q+EUUZ"ZIAXf*%``%`E*UY)dXHaJKH6FmLaq9iq&+@(BDTm[
+
+l$`X)@a-HN!#,aJD(`N4[,,03!d#NR`RT-4R)EbIiJDECBRPr@F`PUTA[E4k$-Li
+
+VQ&8F[12!dr24E9PdDZZ69aL-bM6iBHN-$kDYE#!TDD4SGP(1hXL`&'ilbipXe@L
+
+j,(0%[F%BFhk5Tk[8k6#E8GbI-d#Qp8j'jLYC,(PD0m'hY*VG&FAYcH+b8)QI8U`
+
+#`hZaXqEiVHQY(6ppbPk1`Ch'cDK$Sm1!KN,Qlf08ZEiVViZFYXIF8`dlr)Z`ah6
+
+'[`HSX,KHNJ`'DDia6f*IJ1p$T+mRAhhc`rFriKh)bS0&B3qVfM30S*)V`(H0BDA
+
+HpciCPLEHppTfbU*kF*DK$Thk(`!0"'jKE@9KCf9cE@jNC@jKE@9cBf9ZFf8!N!N
+
+-+`#3$`m6k`!2'I%!$Ze0!*!%9%9B9(4dH(3!!,QmkB#j[1Q"!*!(I3#3"d%!!'A
+
+R!*!'!C*46CSd!A+T(!4K*Z326)JK#,QcI%$,[qN4Gj!!mbAl3bb(%iRBldi2aN)
+
+XbaeBc&SNR`S`AmJV&+Cc+"Z)q#cE$`!!$3KZB@ePE'PcG'eZC'9ZB@ePFf0PER0
+
+P!*!*e6)!N!m2'8!!$aUU!!lY63#3"&4&@&4dG(Kd!!#j[1Q#ZEcTJJ#3"hi!N!G
+
+*!!$r1!#3"[XA88fD0!&bU4`%B5EN$db))3LjXha"IaJ$,ArK3Rm'L%,NC@0hk!B
+
+jc()Bj$$Hk`(%5f$&(X)9k96#$AQ&`R31C304h)rY"`#3"!d$F'9ZC@aTFh4YEQ4
+
+PEQ&YCA0MC@jcC3#3#3f4!*!2$aRa!!mEG`!1l8d!N!4849K8G(4iG!!!ZEcTJlQ
+
+mkB-!N!H)!*!(A3!!-2)!N!BCae&0QM3"FUNF"'%Qj!p-L#&JI5%KC)%ik!pM)2C
+
+Rq)*K(apbB$6%JQkLf1QEZDF4fd-#"JY"r-()!(TcJ0cI2qIGKN')q-23ME%2K54
+
+#BX#%k4c+"Ye)l*[#r3#3"!d%F'PMDfaTFh4YEQ4PEQ&YCA0MC@jcC3#3#3&#!*!
+
+2$aUU!!mF+!!1l8d!N!4849K8G(4iG!!!ZEcTKEQmkB8!N!GC!*!(33!!-[X!N!E
+
+@KP&0QM3"FUNF"'%Qj!p-L#&JrCi!d!EpB5b%('Bj$2cBP`A%UI@41q5&@F!$Z4$
+
+1*44M)$IN&3V61C304$bHl3F!!!d'F'aXDA0dFh4YEQ4PEQ&YCA0MC@jcC3#3#ID
+
+p!*!2$aYh!!mFj3!1l8d!N!4849K8G(4iG!!!ZEcTKVQmkBF!N!H%!*!(63!!fEF
+
+!N!DkZ9&0QM3"FUNF"'%Qj!p-L#&JJd&r'!0Yb*hP#`[p'5!+NCH0hD%Ej$$,B5$
+
+1JEcAJrq60`NS5RS)eb$5-21&[%*K1SHbJ5MANqd(!*!%$39`Ef&XE(4cG'eZC'9
+
+ZB@ePFf0PER0P!*!*$SN!N!m2(#J!$af#!!lY63#3"&4&@&4dG(Kd!!#j[1Q)ZEc
+
+TL!#3"cJ!N!FY!!$A%J#3"ZeM88fD0!&bU4`%B5EN$db))@#K1aJ8XK"iB!Ml3MJ
+
+Xp)@m3Q%kKl+"+$Hm"!#3!`d$F'pZE'adFh4YEQ4PEQ&YCA0MC@jcC3#3#5h+!*!
+
+2$acP!!mHB`!1l8d!N!4849K8G(4iG!!!ZEcTLEQmkBN!N!HV!*!(F3!!FeJ!N!E
+
+0qP&0QM3"FUNF"'%Qj!p-L#&JB3KS3qiXAeMSc`a"j!-qK#!5HYcB``"4cK'kX4$
+
+`M-!IaM(D0i9"k(%(F`JXbah`j9a5Z*m"3K!$AaD,XeQJjB2[L6'$B$4Zj2N48HP
+
+Pj)5,2B5qN!"A+%cR8$B3N8EBIJ!0"("[ER0XG(0dE@jNC@jKE@9cBf9ZFf8!N!N
+
+Tr3#3$`mGJJ!2([`!$Ze0!*!%9%9B9(4dH(3!!,QmkBZj[1Q,!*!(-`#3"bN!!&`
+
+b!*!'$8C46CSd!A+T(!4K*Z326)JKB'%S,'3K#,QcI''K,q39#Y-jP!e%1F%P!!!
+
+0!h"[F(0XG(0dE@jNC@jKE@9cBf9ZFf8!N!QlI`#3$`mHB`!2(mN!$Ze0!*!%9%9
+
+B9(4dH(3!!,QmkBbj[1Q0!*!(XJ#3"ed!!#IC!*!'E5p46CSd!A+T(!4K*Z326)J
+
+KB#%,Y*Ma*BHafa0)$VQcI-)Jp,L$3)4mB5k)K9RZJ#pqK!`r#Q1!'AmSFa9@J+j
+
+$N!$1iDh-L--XKi%fjZU'[%*K1SHbJBJ8`rB$!*!%$34`Eh"XE(4cG'eZC'9ZB@e
+
+PFf0PER0P!*!*[dJ!N!m2([`!$b#Z!!lY63#3"&4&@&4dG(Kd!!#j[1Q1ZEcTMJ#
+
+3"kX!N!Ge!!"'C!#3"Q*`88fD0!&bU4`%B5EN$db))@!K'`6DN!!lbaF@qM0$%2Q
+
+!$b')K"ihpM"!P(1%EL`K"8&r'-GBha3'SFFGc-Qc,(I!Ph0*dAi'#%%-I&NXcQD
+
+"PJqq*mB-JY'iMqG(4+@AN4-ZpK$k3PkK-*e$f8$%&m,f!`#3"!d&F'p`E(0dFh4
+
+YEQ4PEQ&YCA0MC@jcC3#3#DHh!*!2$ar*!!mK4`!1l8d!N!4849K8G(4iG!!!ZEc
+
+TMlQmkBm!N!Ff!*!(+3!!-H`!N!ETKP&0QM3"FUNF"'%Qj!p-L#&J)4X-#ePb#2a
+
+K("Ek3PkK-*e$f8#8'ed#!!d%F'p`Fh0dFh4YEQ4PEQ&YCA0MC@jcC3#3#BZ$!*!
+
+2$b#Z!!mKj!!1l8d!N!4849K8G(4iG!!!ZEcTN!#j[1Q4!*!(1!#3"bd!!1*H!*!
+
+'FZC46CSd!A+T(!4K*Z326)JKB#%E&V,N2BBHRjG$[V$3&r)+KHNFbJDLR235!*!
+
+$$34`Eh4cFh4cG'eZC'9ZB@ePFf0PER0P!*!*M)-!N!m2)8F!$b+"!!lY63#3"&4
+
+&@&4dG(Kd!!#j[1Q5ZEcTN`#3"cN!N!FY!!"HH!#3"Ri`88fD0!&bU4`%B5EN$db
+
+))@!K$J[*#l!)HRaH$[R#3Pr)+a5QFbJEL(,L5`#3!`d%F(9cD(0dFh4YEQ4PEQ&
+
+YCA0MC@jcC3#3#5RX!*!2$b(N!!mM2J!1l8d!N!4849K8G(4iG!!!ZEcTP,QmkC8
+
+!N!H+!*!(63!!eBi!N!E(D9&0QM3"FUNF"'%Qj!p-L#&JZ6!$Y*Ma*BHafa0)$VQ
+
+cI,Ph(rZbNL2Z)1F6CVN$XG!FiV%FANN#c2K$Q5Y4c"Ib#SAT(-S')YkAl3F!!!d
+
+&FA9PG@9dFh4YEQ4PEQ&YCA0MC@jcC3#3#I`c!*!2$b+"!!mMp`!1l8d!N!4849K
+
+8G(4iG!!!ZEcTPEQmkCF!N!H-!*!(53!![,`!N!BGG9&0QM3"FUNF"'%Qj!p-L#(
+
+SbrNi(p"LaTHFFp*$lUcBhFHqV15)1mMjK&RZ`'T)`(*i*3N`i`pPVN3aAmJV&+C
+
+c+"Z)FP*X2`!!$3CaG@pdC@4cG'eZC'9ZB@ePFf0PER0P!*!*1L3!N!m2)ci!$b5
+
+S!!lY63#3"&4&@&4dG(Kd!!#j[1QBZEcTQ!#3"f-!N!G"!!"kdJ#3"NGh88fD0!&
+
+bU4`%B5EN$db))HM,3Hcc!QdBFaNC3Rm'L%,NC@0hk!ECR!#)4,()0i8NNY,FN!"
+
+A+%cR8$B3j@U`r3#3!`d'FQ9NG@0PFh4YEQ4PEQ&YCA0MC@jcC3#3#BBb!*!2$b2
+
+h!!mPJ3!1l8d!N!4849K8G(4iG!!!ZEcTQlQmkCd!N!B"!*!)D3!!6kJ!N!Cf9e&
+
+0QM3"FUNF"'%Qj!p-L#&!2LrRm3&YlVZH`B8mf!p$L8$J$f1K2`2iXPLFcB,dM'9
+
+*k!CCN!$K4q5bL(e65')@b`Dc9iZT19ae0E3)"J["MNIG@0Ge,d@*d"Ib#SAT(-S
+
+'SY`Jf`m!N!30"R*PE@4eF(0dE@jNC@jKE@9cBf9ZFf8!N!RAU3#3$`mNU!!2*MS
+
+!$Ze0!*!%9%9B9(4dH(3!!,QmkCkj[1QH!*!(AJ#3"dN!!2@'!*!'Qr046CSd!A+
+
+T(!4K*Z326)JK3,iX,mF#EG!IaN,)BCE$)--Ia$i%ZS8J"PQqV(3IBN%,d!,j`VK
+
+(M15'[%*K1SHbJ5MAJ1d(!*!%$3CbC@e[GQ9cG'eZC'9ZB@ePFf0PER0P!*!*Vc!
+
+!N!m2*B%!$bEc!!lY63#3"&4&@&4dG(Kd!!#j[1QIZEcTR`#3"f8!N!G*!!#$1!#
+
+3"ZlT88fD0!&bU4`%B5EN$db))8#q,"Ma!5eQr+&-S!hk`eJ)1Fab''6iJpL(3,F
+
+3a-$APh-(@G!L"[TQM15'[%*K1SHbJ5KAK1d(!!!0"h*PGQ9bFf9dE@jNC@jKE@9
+
+cBf9ZFf8!N!RPY3#3$`mQ1J!2*m`!$Ze0!*!%9%9B9(4dH(3!!,QmkD#j[1QK!*!
+
+(S!#3"fN!!&'T!*!'iXj46CSd!A+T(!4K*Z326)JK3,k)$i9p31X2J@jDb'(Jcr!
+
+&55$`Kc'E'hZ[4`r36G5MKp#I!AaC,-k1jC!!0L4!SRj6'$ZUFD&H4Jl%KPRTrT!
+
+!$f6i8CLJ-%'iSY!AmJU&k4c+"U)BNHd(!!!0"(*cCA&bFf9dE@jNC@jKE@9cBf9
+
+ZFf8!N!R[b!#3$`mQm`!2+*%!$Ze0!*!%9%9B9(4dH(3!!,QmkD+j[1QN!*!(F3#
+
+3"e8!!&PN!*!'eqP46CSd!A+T(!4K*Z326)JK3'&IAk"e!fdkd)D%N!$$,)G"PTX
+
+&hEVekm%(l`"Y2b!&BJ)SNAX4+-JY*,H+T!I`mr3e3UBlmi@m3Q%kKl+"L0GLq`%
+
+!N!-0"A0KGQ9XFf9dE@jNC@jKE@9cBf9ZFf8!N!N,)J#3$`mRc!!2+9)!$Ze0!*!
+
+%9%9B9(4dH(3!!,QmkD@j[1QQ!*!(M!#3"e%!!"(!!*!'fDj46CSd!A+T(!4K*Z3
+
+26)JK#,XM[L$3HQ!)!ff'2qJ$hE3`k)dL%%9ql%-pK*!!pB9bEM,2`Mkmp$b%ZI4
+
+j6[#C*`M$FBJEmJU&k4c+"U)FBEBI!!d'Ff9dF'9ZCA4YEQ4PEQ&YCA0MC@jcC3#
+
+3#DR!!*!2$bL4!!mU@`!1l8d!N!4849K8G(4iG!!!ZEcTTlQmkDJ!N!B"L`#3"jN
+
+!!%aR!*!'4-046CSd!A+T(!4K*Z326)JK#2X`k`X",ANjmlUa@qM2m!A$2Z$VblQ
+
+$,-M`Sc!'k4Q,!5"#[SJ2%F3r+!5jchXNQiDqZ56e1bBZFLreb"lb%G'jc5)lG2Y
+
+$Z%H2G9A0lI!bBR1!)lC(cVX$Sk%H`Yc+ZEqrEh%TLej5J!f$%#dM2)--h4Ml8'J
+
+PjT+%hNbBcU&Xd#dAqNhKIJ!!$3KdFQ&ZFfCPFQeZC'9ZB@ePFf0PER0P!*!*D5B
+
+!N!m2+9)!$bZB!!lY63#3"&4&@&4dG(Kd!!#j[1QTZEcTU`#3"J)0!*!(c3!!CEJ
+
+!N!EUj&&0QM3"FUNF"'%Qj!p-L#(!b"d+CrJ3d-B[HY#IjFG,lSN[L`fkX@p*a!r
+
+jX4"bQ18`m,M$(VIAPk`%BRq',aMf!F*,XYP94[qJ%'amhZX@BlkPl0&M'bM`Kc%
+
+3*FcFN!#Ap)14DpP[5YCD21[d[4kJ@cU(-rb)5+$p6FNSH,Q6KA(IPqb")DmIqf%
+
+SfGH24Ej`Q*bB2b-qJEH8S&YX*YMCb0FM2TUB#fd4b+6ImSIL`+bJ@4D$@ILYe0a
+
+BMd2CS&YLdNml3b%"rUC`2`#3!`d*G@jLGA*jB@aXEQ4PEQ&YCA0MC@jcC3#3#32
+
+V!*!2$bTE!!mX,3!1l8d!N!4849K8G(4iG!!!ZEcTV,QmkDd!N!Fa!*!(*3!!8eS
+
+!N!BljP&0QM3"FUNF"'%Qj!p-L#(J3ZNFbRB(Jm,F#j!!&prR&IT#AZ&q!!d+G@j
+
+LGA*jEQ&YC@4PEQ&YCA0MC@jcC3#3#4B8!*!2$bZB!!mXdJ!1l8d!N!4849K8G(4
+
+iG!!!ZEcTVEQmkDi!N!G8!*!(03!!E`)!N!BIB9&0QM3"FUNF"'%Qj!p-L#(J3ZN
+
+FbJkjXha!blpaB@i#q'2J$q0ic!ejKF+FC'%aNqd(!*!%$39eER4TE(PZB@ePC'9
+
+ZB@ePFf0PER0P!*!*R+%!N!m2,#d!$bf6!!lY63#3"&4&@&4dG(Kd!!#j[1QZZEc
+
+TV`#3"ji!N!G4!!#")!#3"Y@M88fD0!&bU4`%B5EN$dbBR1Af)!Li%2B(J6ER9II
+
+!N!!hI[0$BBb%rJb!Z0#br(Z3!!AGH[33NPIZ@dB$FG!IaN#dhDNSp)@m3Q%kKl*
+
+M+,BI!*!$$39hD'PXCAPZB@ePC'9ZB@ePFf0PER0P!*!*2%d!N!m2,0)!$bjB!!l
+
+Y63#3"&4&@&4dG(Kd!!#j[1QaZEcTXJ#3"k)!N!G9!!#BD!#3"V+G88fD0!&bU4`
+
+%B5EN$dbBR1Af)!LLM$rS!pUF9pd$3plic3q&-4,k-d!)BS#id$,'Hj!!"Gekp"#
+
+59jkJ#b+)Jri`"U,YAN@K,q39#Y-jP"e$XId!N!30"(KMEh*PH@jKE@9NC@jKE@9
+
+cBf9ZFf8!N!PMK`#3$`mYN`!2,[8!$Ze0!*!%9%9B9(4dH(3!!,QmkE1j[1Qe!*!
+
+(1`#3"bd!!)@)!*!'B"e46CSd!A+T(!4K*Z326)JKk1H"5!Jjc()BC2K4'!-@KS@
+
+qN!"A+%cR8$B3j3#@!!d%H@0[FQ9jEQ&YC@4PEQ&YCA0MC@jcC3#3#D-@!*!2$bj
+
+B!!m[NJ!1l8d!N!4849K8G(4iG!!!ZEcTYVQmkEB!N!Fk!*!(,3!!U[B!N!E3hP&
+
+0QM3"FUNF"'%Qj!p-L#()pN!NK"aQ13b#lM!',!`,I5'[8*M1S@`JbXN[!5%K$&9
+
+$3L"-EfG[)$8Z-`#3'0m!#`(0!C%!N!-"!!mZp3#3"3lY63#3!iB!!!'!rj!%"`#
+
+N`XamZQ(S2!#3"5XKa!#3"3mVr!#3#L+5$3d'8N9"4%e&EQ&YC@4PEQ&YCA0MC@j
+
+cC3#3#ACd!*!2$Ze0!!mdq!#3!aB!03#q9%9B9(4dH(3"!,%-J!#j[5"a!!!"6!!
+
+!#&-!N!1T!!!$hGYlAHJ!N!Bm5"%!#"c-G`LLdV9,-"3P@HP[1b*lVSYV3m'mD*B
+
+V!MQl*L8NqT1kHKac%a%bf$j80MX+RplZ)jIelVfSa[(C#ZR80GMklP$AK16BE-1
+
+F4ek#PNlEU-Xjdr@9fM"UMNZBjIS`!ZeDQCJ3#(65+l*Am0bJH5jF#9h2$2,-GI%
+
+cAGmDC(VRQ4-!L)-mMMEfV-XJi8G'Ec$*85M8"XL83p-G6B445TQXpXG#&J!,6MP
+
+j2%%'-"NabcAjqB6E88l*"-p@MUIG5MJpNq!r`U*N"V"kpK++2bm#m'Xb2#H-S"q
+
+e3,@H&l-'j$JCF-)P%di'R+#'%Ei5I!!H9LF`H5hY[@cP30HQ0P3C5lk4G#-+TEe
+
+a646PMA*8+ZHYfZkm-TU8,YTG+4d*US5RVG,#$Q(eUapq*U&,@TZpY1X&BlKj&$d
+
+lrd,!leRdJBMLeMGQ9cFKTa$DAZR5l"deiN&5EFfHYZDpG$2D$Y5EIYF+5kAX%-`
+
+-qr(l%%$k9JSRDBI[K&+BM[FibT0ImQb4*XQ+cK"XRMd0`@EVkq8i0i(`JJ`,[+&
+
+D)B*!)UKSK#l!KMGVKDi2Q)H`b+PIZ8"!HNc%1-80Fh1L92)+V21(T$[$34RG$L3
+
+U,lQQ`Xp)9D4P)Ce$"6RG!iJcBIb3!-5pjR,X'`N-5i2C2E'55U0dMC!![(c[c`0
+
+9EdeY48F)8d`JB4`TR@1dEe6KaM9)k,rIKbm*e$qLVlpDQ(k`UQimR5fHd[1,LjG
+
+FFfj)+QZT[506KHH04KFY#MA`a%+d#SE55J!#Rd-f`@eMm(LUV*3S6qAh`XT,lJS
+
+93T19NrmN+Fqer3Bek8bTUQ'#`H"1Pk'CU,Udh46&Qp@'hNJYV@KT[GZfUU"V98L
+
+03J[`mi4VC)NJ*aKHHm9TC-Fdk-U!6V!H,NR##J!0q8,),dE3)p8-*Cj)cZ!""'R
+
+*p,bF26C3+eJKarhcX1[[8Tbb,k(q`0QBRQd'-S5q9fe,fb$5DYI1*JjXT(I,r1h
+
+Y*UGiG8I[iM509rRGCC!!QX'dI*!!"al9pDd#(S+'+80M*ibE*&fmaGlip4,Z[@-
+
+rA5hc9C*PG(@E8NcV1-fALmeeR0*kNkj[X`4bbP!GN!"0&2p8N!!2Pmk`%k8AUXA
+
+"mUN1Gj!!J%0FEANi-#ad#l18E(Lik0q16b5L0A$ZdHLRMPd'L4[)I'm9")1$iFr
+
+f6``R#maSUB[jM&jprahZ,1FSIN$a&k,E@PA@H,U*kGXAcepHc'L6aEM#9VGjmZ2
+
+[l4i[1DKXeq*rk$6EjV(dm'Xfi#cbXU#&XIdmBQX*kmIX`D6[DF(A8kpDDG'r[$'
+
+SeSM&4#GaIq5*Q-IB%'LiK[jJ$fhjl8EPU`jf95ki$a'--(2FUSr8KG%SY*lQRr$
+
+)'!)+KhU'T2iUEc6DS63J`6)5IBmV+C6c)b3!%P%dafF31UJ@9eq&(N#+YG)Z#KN
+
+HE2()2KXe2KlGR`qBk(6!X!&jjDG16Ke#fAV8ZlF+LNIV1Gi3"YJihr0`EK6Rq)C
+
+mMdChSZ2L3@lHi*J(4P"8QX3rh53")$V@L5FrkfiHr3mJ)!GcEh9bBf9c!*!B(mi
+
+!N!0-!!d"EJ(+!*!$$`!2-!)!&eZ*!*!$&J!20@J!!!%!!$-!J!-!U((K[,TKjQB
+
+!N!8EiS)!N!8)*L%!N!SIj#!J%LKYH5"38%0"6P0*)&K$6dC'+3#3$9*4!*!$,`!
+
+0!3N"S3#3!bJ!$c6i!"!cN`!202J!$cAB!!!"!!#P!2X$!,F)V)#h6GRJ!*!&!P5
+
+I!*!'rEX!N!V*53!0#@&XE'pM,Q-ZEe0*)&K$6dC'+@9ZFf8!N!R3DJ#3$`meD!!
+
+22md!$c9SXH#ai&K$6dC68%dJ!!#h6GQQYdhCTJ#3"K3!N!F*K3!!Jr3!N!E%#!a
+
+!q-iZ@EGZeXUfP'aA6MRYE62EV[XT@3RE4[H4P5NMV$@Z%HiqQMa'MY-Yi@3Ih8F
+
+r6hkkQD@%RZcYmHc@Ul90MT&0',QplU0(0U(GT[[Yf"&1',R0YS4YXYNQA-+p"Kd
+
+lmT3m*mmM[iq`IB6eG1Z465Kj4Ti54YJQ4c-ja30eq'Y3f8ABCTXG18lBN8hB*NM
+
+D!!32r1BJ[2%Hc&HDr[SLF2m8J1qK%M$ZC`IqCeR)Yr6mcdC6bIl8p4N@E`0P'@$
+
+H1P5JPrfUD'GlUVd`RpqP,!)%"R@XA+Y%G%0IRl[(-HH,m)FlkmY%1j-EYMlrdCM
+
+X22HUB!8m,ldaB%rQ$!6LTi(XVrMG#h0iLAdLXUKZ**&"+(fkV(BYc'9VJFk9EFK
+
+BLm+*a!##9NG&2fI@apTJM1`'BR[JEl6YhfEU84ir$d3@!r9l8C@a%-UPJD%CK'*
+
+YYRdX$62q([c%$U6I[G3[HlMiL#h"fT2N)d-qV)$hTDFbU&+1fZf,`P'Z(H(i"H8
+
+)f3h+dh(C3APC(%l8$k#klc`-lKf)fc!blHK-f`rr*6pIiLd6@DcmeUE2#lrH0F*
+
+rC*&b&Skp!9L$RqdA6KVYfAH%8qN4GkhbEC'VY2!pq`IPqa#a&bTfC@BAq5DI3bG
+
+G[RH6lhIJ9ji&eq&jh8PbqK(2VrrG2UGDA!h%$`0lheH1$bYr#qIi-mBM&65%[H5
+
+&Zj+(&F)$jmD%"mk&BcYeESR-ZCK(q`kjfRJ0aT'GpUbe+ha&GpKT6cID(ra6ZHc
+
+JlVXiZr"XJ[USM(1Ib#0e)r8Ca#),460'J,Y8kr`!japajSNe+I2%5A$HP2eCaq,
+
+6pZ`4kVr[X'eEJfG$9QG&16d!-Q0eK+HXM[Npc4f"P9EfDT6qm9DmM[Z[)1B1cUI
+
+$8fQlV*CD)jD$Ncj38IlV'D"'r#@$dFafqX*f"+R0B(TfZ[aM[02[[e`MZKk`,rb
+
+1Z(dGYTdq24&+[dXFDV'!Nhfr2$dl&4*mGlH%eY5,i#SIHm+KBkc*8hAXCr!lZTP
+
+j6A6$q[G5ehJ&dcBGAFlmmVSI9XG182qri&Ie161JhZ,dYQU2h0%I@PkP&pcb`AL
+
+fk(m4CK$Ze41IFA4'69d4I9(A,H+0m92fG2BU3U)2qLkbGS',S,9i)T(BDer-HlA
+
+VIk%-ZFXjIKI8(MdYCJRA9rqN(0he,fY(@DhN#2SAa,rL+q"0Vk$HfZJV1mCLdXY
+
+@)T!!2BHJl%bZ"Y9AYj2lYVSAZ@IAR+pb2ZpljBkReKeNVN"ZGphSd#Pkl5N%f$F
+
+Me"ka!ZbEdKmk9$I+I3l5Ja%IVcY)(aC14kf+0a28D'kS"8&q!r'rFCjlF6CeK,b
+
+,KZPY+d@hkLXI&(dPIHM5bcALp32f4HNI%`pjH%VmSL&pqK)p'-ZG(@aEI*Jm",+
+
+VkdBeAeRU8b'C&qm62'Z4q+cG3drC&e12U5M2%FGD2+CDY(C-K6+M#"lVj1j,akC
+
+dAmN5ST8pm0cf#MIACIrSj,RXcaPkL*fP*KVYkAQLVk(AZF[#FI'!LE3ph6md5bh
+
+08MHce0#XFK8QCLK,(6ED9rlXBSCNaY'DIH&'CL[PhIdXQ'5N0[L9fR[8UAeRRGT
+
+Fjp5DI5AA-[2k@rJPirjZIKQKr95l[Nrc'hb!Zq-cr)Dd`jb-C`lFafSp[dZemfS
+
+"Ka`l1%BJMf08Xl0F1`Pf(Y-1Xkq,-mC1TFk-Xr1iG$a"GZUPifeJCl9fb"[@D+F
+
+YMqL9M2fNGS4jaIB@'$#AXp-X-qCh#c-EmNbC)hRfI2r)6r[NcU#)rTT#KpT!*5d
+
+EIYPlShDS&AaH1aX,-p31BYVT+Fc)1D**1rf&'G&@ZhD%2@G'lJl2D'GIB8BB[8m
+
+l14EcY62-SP`l`Pk&GNCC2+SGANV`9Hh3!p#SR5-X@U8Mea1qD[KBV83CU`D)4M[
+
+"6)PZRHm"[4EpB%T!"NYB$4)4f)pPV(,iR2#ZHjb"Kp8jh@0FplJ-dA!BRf*9JrQ
+
+XDK&LeBbPV&TN$k00pM!fbKj'0ll!+S8[XZU(k#dQLaR(C4[MM'l$a-*U3RHD`S0
+
+dKS#JHX+#kUR'Bk`D`!cVDF%6V$Va69B@[XdU"fVG-`bQ0mm)HB6R#,l2kJaq`1T
+
+Yr*!!e54qa1SbKZJE)Ib%933(@GAJTkaLS)Yl9q)hV&*iKG8q-%pkKmA[[#-i+HS
+
+@cVa[#82HF@()Hd(Z4pi*F8c[*"jLG9PkCPKdCPD,`X`DF@dcjRLTE'"Za$a@2F+
+
+kDB&A,R1rE'-H9HcMXSGj5Zj2jKNmc'U-ebbBCd&TQqGdQ`ZL9r1LU-fF&,@CPd9
+
+YP$Zej3[L+kbUU(ci)PM&+S((@DfR#m$ALDqckNBMUal3DAdTBGEA,al[bmPpc(F
+
+Bhf*e6,6P1`'kSZp0I)I9'BLlkN(0Ga&q9T1LB(ST'@9E2$3S1[DALdVmBI%'Ib8
+
+HB&8Y#B0H5kEpYD)EI`-HLMlAeCed!iJp#q0jSlflHdY(P+F5B*Qa#S2'UQZh2S-
+
+DijH*KKFqBe8cjjX64Yfe1arG5M$)*,FXBFcGq*J!&%1[I(0lP1jlTS[K,&l!F!F
+
+S0QGAMf#i1![%FBY2-2B,aLDCjck+)GQTq1J8$Kq+iG`MmH#(H`K'lZiHrhZ2D[l
+
+)lb&1rLr1"'2ieUkE9CkUSC&l'#d&IH4hP36*&bf#L(DU2*)`j%QDNHFN$lHl`"f
+
++ERJZce+e+#lTU%jb)pGd-C)&M&`*SqXDaP2*lHY6FL"fRM*drA88@4bpaA3*Sr-
+
+fdd@3!-2AQ*lJPcR'58,D[FRdQ4+,,paNQTQUL((J'XEQj1DqC2&5IS0Tphhj(ND
+
+p*Xml2L3BhEI8i$lH"RLc++R")jF05EHDXE6lEc8`-4DCCQ+lS3DQY3+'iI`jN!$
+
+(H+ihQ8mEGjRqfMd-jXrrBMLKj!l'TNm`LT3akIp(H5@-e'dI+S$`5M6R3l`N'(,
+
+Gd@`UhC[+BqiYUSTCm)EbQ(+,'-lr&INYREIY%kDM"D2NhBS-EA+ajETPr$L[*HR
+
+HC)LjZVLpA(F+bLSba!4E`2!iqLfS6am[#,bMh(%i`E$Z1KcrSq!9ENjR[!"ja)h
+
+NLU6GQb`b9aFCFJ,5acTMFLjLm,*Ca'Mq"Rp`F$#+ZG0p#jM#h6H-eYDQT[@pACZ
+
+l8PhEN[8L[2C8NP0Zr'jGAZTp+4qB9RFRfhX4l8dk5SdqQ8aakZQZR8P%RbleQT+
+
+Eer6fEL(8%m6Ce,4P'iFDZ[TkY[3P*AG&@eZGr0ID`BeHf0U$r`-!!!d*BA*TG'J
+
+ZBbj[8dNJ@%024NBTC@jcC3#3#HCm!*!2$cAB!!p#SJ!20@Lai,)J@%024P0365!
+
+!!,G0fDHh6GQR!*!'"PN!N!B#C3!!q@i!N!BGp3V!4I'88!QlPG$@)dI*X5HhXXF
+
+A@4Nj'Q&VH#BjGS55PDeN`XJa-Q"N`*i-'(P+CY3,Ir3PE#A2#&0fK*&RNPXC18C
+
+QM2c+b$(bP$`M6mNcFNcbM$`P6mQYM$`P6mP6mSc-+*N`FSa-f"%8-B'kA$hA#$Z
+
+2V)4j4KK"%b-M"Nb!ca2BMTM[j(I[IrY)j%9%9+%#N6N,K@J0I8D8Y0E#9[bLpFZ
+
+$[QFP,iGK($d)SeUVP[Te&l1-cKT49UBlBAeP4IIiSRe3l6#+kmq@IYYdPk3#+Sp
+
+JU6CPAbl3hMdLrd'EJS(RAA(raqVVkerI[U),2+qqZBBHj+!AEX264MiGF$(lQ2e
+
++NB*rA!hS-rU%cP-kcq[-@DkMEk"[UMjqKDR[d@G&BIp&86iN(ZD942Q8H*Kr3j5
+
+Ya--lCNAC4Mm[bJlkT#Llk01Lm2d5C3JT8Sj'H@0a&-44%NG*('Ab-Gd5aab0mFl
+
+LLm6A&&q(aX,&4M2@!pMr5@E*e*if@X[K!KZZQLTYQHV"Ac&%)qMf!Nbe#hrh#4M
+
+pRq)TBiBrL@2dr`Rb%SCGbZhKIJQ5'M"UpGiDZ"[XqTJCR#SUchH!FJc*`f0'4KP
+
+Rl"`k#()02(#Nq!Y`fGY50DqQX,lBBfEi'Q+E%(pAV+Q-1'(N(-0ZSSaQZ[hf5BU
+
+1X6j--B9-(+E)RpcqJp-8#biKQrK4LLA(Z04R4)hR2FE15BU1X6&--B9-(D4B3Eq
+
+FI#p@rk4BGJP0(UFijaMmiG0E6,II(GjLbYJm[F8%-RqBiUcf[bP',U(Tia3lMR'
+
+cchMdm1l4Ap6+RdZN8IS2!*!$$3TKFh0PFR3ZBbj[55"B3dp'4LPPER0P!*!*I0F
+
+!N!m22md!$d@E!!meD,(JXQ"B3dp'8e"0)!!!YdhCU,G0fDJ!N!B&0`#3"J+*!!!
+
+P%3#3"XdN#N!!DpqYC'9(MVE@N@F$1r'8-#9XCH3S`40+CLZKK*'98!NM-dBBBC*
+
+I'EQ92#@hKZqpf%VB5YBRq)rF5Tj'+*kG-M*Lj2'-(#92)mq1(#8$GJ30l-L%[C%
+
+"Hc*LC-M)VH6BJ&$bM+#"N3N9q-V9,-+1(&X*)a0'MT&M"&%-Q!!"!1@Ja#G-2Vr
+
+qm4N3b`1iK&P!(#-'m!N,NKQ1VlYQarfa3rL"9&q3!)FP(-84iM@pBVM'F&pj%HZ
+
+%"h*V5Vj@p*,M+"rI&)l(dbYQU9hpZFDH4k0K)ajlqQU[rpdAL2X'6[Yh-H[[3YY
+
+k!fap4Aal[[rDqi*eE`pVhLi+Q5G!CK1VerVppei1Tla0Y0)631iHVK#hQLrII0N
+
+U3a#r5&TTTI@BY46h-1,Z-dI[1rb1JZRP(-Hdh9UcS9P'V@j@PV@8XkKC4%QLAQX
+
+388NJhE*0ap(HfUEEYK[[0,HTQCfDHeRjf&&GiMP,H(bDXX)&`R15b4#HIj5J9b9
+
+N@S4cNYNJR*G-Pr#LC0M0c"clf5C-5DC(Q*!!c'I#%j,C*c`MQ4RTIJ%aHUeKNPj
+
+efHD1E(iAFCeM95(e$b#U`T!!kHYPGLLbk)VXi4d4`!3KC8(A3f6cY*pI%FZ(0i6
+
+F5Sd#Hidd4[H$'L!e!P14MqKf8&jM$EA!1Hk`epZXN3Z@NX'Y'Jbc[9#$mfF0EYp
+
+`6XVZr013!,R'@#1Z0,L6``Qk*U$&Z'dm$p3l0@+6DNN[@32P"@k9'53GZ&!1G$2
+
+8k%BDI%0#M@)aUM#[KBdCTKPTl2p0Q[i8[h`--V1XHYZjpGYVU&%eAEiHIc5-8Y1
+
+1[LCMMIb0Uq&&$M06Nj`1U45&1cKCa5AS!jCbD0QeKQ[K2`!!$3TKG'9iDA3ZBbj
+
+[55"B3dp'4LPPER0P!*!*Df-!N!m23U)!$d[m!!meD,(JXU"B3dp'8e"0)!!!Ydh
+
+CUEG0fDN!N!B3!J#3"JAa!!!b6`#3"Z#H$-"&"hRml'LA(LH85eK2Ma-ZBA*bM1!
+
+*VD1%Y4*+f"'q4VJ5GK(@85kK56KKj0QeCSpRRY`eRkr*8X+2mPqj&Z&2RKpC1H'
+
+5iei$FV41`JL,()Y`bA(+cqZ-(*G``Sj`)dIj%Ak%(hR@%GEC%dkH(hP1MR*bP$`
+
+RR("k!R9i'e6RF8VBfK&1Z#FrMc`R51&N`!%)`!(P)!')1Ne&KqlkFMr4R!SL5Y%
+
+L)R8j%$)bH+aMa$Y'aNaC[DQc-hMm5P4i,9(aBUUL'Z"9CNFi&AER(5d&6a)9EC+
+
+aFRN&cEDH(UhM@rZQNM1DjD60$UYYDqI8j2LT)M-55eR*@'kS%ET2R[@4QY*8e9G
+
+Ll-XS+YPCR6fa0T[p*Ge!jB&U#U3adeG5X'q#)p"+#M`IrFZcKhR`hMh$prjhfGq
+
+CXrpl+J6[XI5M4$8&4!hEU6+3!(jY"0bEQ,Z[I@&["V23X1))1#Gel-Q1X)j-Q#V
+
+lAk(#rJqS((S1Taqfp35hdjf"0+P!UfJUC8dCc,,'c'-8#!b3!1VEF80[ZShQVXf
+
+1rF6cDF`"qeU`0LS"pKPMr@2JKEqC4a$+-,9LlKfHHilRUQR0%AMaRcpMN9Prl[$
+
+p@HRlXmca4r,LqA202rlS()SrGKD21PQ%0fXmEdBr&QmiLqHm'AhGmfC8mQplNhd
+
+CAQc!c02`)$L4BEf8#V'AM[+Zdqm6pPYef@m$He(QX%F&jlh+1h-AlX1i"r4Z`bi
+
+h$J*SS1+3!08E`EBZEEDki`pBMHZ*jSG#BDc`5#V8(Srea+-@8CNldT2UL-5aJ$A
+
+1DZEKAV6l-V`#Z"F,dZSLX%C22i1lYJb"SEfi9mV-9ql-0fbE)#J+e-c6kQUfL'G
+
+8*C!!&TQjdH&@*T!!Qf@k&XJp-V-'b!C"(R58+F6F9UB3!khXE9FCBU'9(A19IH)
+
+Uqp49pU1$'!XGC8DGSmGSG[3B,BiHJc-JHScl($e'&%K%CMJk#8'iq&4Fcl(FL8G
+
+5%(CUZ5![Z6-FhY@#F(lX'35ClKANJ$[$`Bi)-ZM1X-Y,"(R2RH&&X8!3GYi8"!Z
+
+&kJ3C`Z-f36J$MB*mJ8H6)&b@0JTb#Sp14SMcE$FRq#R)2-%UL90pR8c8b843*TE
+
+)a%E"ZQJ1jd'+hA+C'j!!Z31mmQL3!)VCHjNECN`9-TpDbR`U3#LMDJA0a@X9AB(
+
+A1VS5VaBUih3`UFS)kejK(4,@Nm*k5PKr%0CKB4d4eSJBZC6jM#$c'9e8LPH#5kR
+
+45aAQjJJ[4MRC-9+GbPk)CMY[2P92JkTq[!JV9%cF5$[UVkSrK2P$#A$N5M#b`4a
+
+Bhe$TFq3+-&)K(&+"FcVmmS[-#)FYh11)a40Z[e98YB@cU2QSfddYScMcpE$CYYP
+
+Va9"PL6*P+pQL1Dac(2IR1(64X$F2P'pK$NFVCrd-Kk6"F*d'Kpi[TNG5b#iDMS[
+
+F$$JRpUCK01rL20qKKf3L1HPLTFq"QZPak&2N!1*3rPb&ZfBmCrcYmELlq4M01e6
+
+RUhpL1QG"Rq1T()FqXT*R($*MeMDZHV*VFJjaNhVHhF'-jKhDk+YrGYUKK-r"I@E
+
+#SCZFICEE"![FC,NFafDfK6kh5Qqjb,&VCU2S`jkMa[XEKG[N'flcB$5I"K4meqQ
+
+hTMI+S-ralY4'#9lD+1L@D(+1dik,Ca,$(%1cD@L69RH4Bf!f-9aF6S`RKM[UKlL
+
+PG3QD6mb`RiEMqF5J[hNFRqFi3U(Bq!rMH'+dQai(@ZX&Th@h1Tqm(CFiAMLrFEh
+
+rNVpeS0fMAer`M$RfckEc9INBQNMR+'jTYhqQ%fhC5plTkA51q"`r6qfc&q9[i)+
+
+,c(&`eN@N#YpD14H44A@,UeFRm`mAdGipKhl,ZiJQlh)BD2q6,Vlj9ejElVlGQIB
+
+DV6lcq4I"2XI*E%6d@q,VZkaS&0dVRZ`14qd@DjIC5+`6#m[j3!M9NZRqaTRV,6$
+
+(Sbh*F++KSb0Ti5[!TeS'"41rG@E6DR$kI'D6YDdj[K8bV99@6hXbNNM&Nb$@+mP
+
+6B(rZQ5&3T#,Ym%Jcr!m!N!-0#'&dEfBZBbj[,Qp*)&K$6dC'+@9ZFf8!N!Qb1J#
+
+3$`p&Q`!26`%!$c9SXH#bi&K$6dC68%dJ!!#h6GQXYdhCV!#3"J9Z!*!'!T8!!(T
+
+&!*!'plX+3!"el&GQ%RSHB5XMc)[3#28LYc+b%NBB`4-mQDf%%8C@XNE@)b0'Q"h
+
+jPF`SZCAKQd6BVi3H1EE+b+hN9m))[M)baT0RC-$)-6+JC%$*-m+1(#8M4JD-2)d
+
+F)imRcmK6-Q0(*NcbP$b0M"LC8I+8-$c`Y3*3J0@ZMMaY*Hc)P"%d-@!#R)I9PrL
+
++k,XlAei$aN-!ec%(L!Xd!ADS@h)bU"h6DA5FRc[8GiP+Em0%&"-d6jPefl%(qdU
+
+,m+JIb+ecmP8`Uqffd[&GpG0bcAUMqQ6PeaTV(PB+hCLaj3R%2"Xc,p+"hpeBk,J
+
+flYd1JQrZ)T+j0()ZlAGMNDdP&kNKcqYKMTM[Fap3b'd5Cae4BLm6qbfcEd5!a4k
+
+XEZe+KhL&@fl4mRV"BD[Q`V1$)qEj8F6mG("i**!!r5a)Jihl@HDZ)qRfX1aZSY"
+
+p[T!!p*i"2RP"IT5'ILJMpe6fpM+YCQD9"N@DZU1m`9HX'HUAAR,UPUM26T0DP+P
+
+INcY2p3jcTqDCq*&k9NjB`lbFI0)lV(e56[DTAjB6cZa91CQ5QZ-`C0aBPea$#@I
+
+S9FGCHRNbhDm3SpFER+IA0LE-jS0@3eN@r)"B%EDceM4VNTm4H@b)r1Lk##"#RAb
+
+MQb,bCGS[&m60d@8K&b6$BX8KBhK9b#2*k)X+GB3A*6TQX%-kND6e%61)aC9JlkP
+
+#K[6$B!Blc`a1)*8C3XMAP-(Ti6UqVrd-U@P#,CP9cBac'KTpKrVV5S(Cd)a8b,J
+
+iBV5GamjDA9p*kG#i1-1lfZQimS1h6KMlIp)35Mhiar$r*QB!X8D*S4m%*[P@kHN
+
+i-D8`$A`K6a1c(6,5*iPTeqa9cIQGQ2,Gi[&SF"Y8*DEe+)j+TArS+KEq!`!!$3K
+
+KG'pT,Q-ZEbj[55"B3dp'4LPPER0P!*!*XL%!N!m25r`!$e,5!!meD,(JXb"B3dp
+
+'8e"0)!!!YdhCVEG0fDd!N!B)G3#3"J0K!!$eQ!#3"NjG#m#YAEqbP4QKGNRBH4(
+
+DD4GC'D'%%NV`K"dj'U&i3XP+f(Q%(AP+MK(fNUH4@mNcF[6X[)j3`PC#1m,@Lpa
+
++(NmH6bmM4mNcmRMb+hNDH8D1'AP+*M4bP$`P4b02bG2)-I+8c"Kj4KJj5Sk4Bi5
+
+4BdH1%M3`-U%#9@C(*I6)dl3)1m,)J"&d-$*PK!%6!%ql,L)q8IAUVFeA4&8ILDL
+
+AQSR%#8a)&0$dmm3[86$bQ8*q9i2Q(9()JBFN(D26Q-H-G#UIdRV25iMI$e*f8RD
+
+paNJZThbXZqrhXSedCQ4UI%r'RRFU4PBiY1J)#MXTDLbfPYkD#f6D-c#3!+,"QkA
+
+59lZ2'MUVL2UQUFBD29X!ai6@0&XTBB0VKDX@EpX8fr@aBEkJL$AE9J"V!$kHX`m
+
+`c81Q-dh0cJ,&`&ih2e2#I!2@!Jec&ZBX9F0(%MlZ"RP%94i*PFQpGYE08)-p68Q
+
+`%pD6YJERXFb5mqVpklh'pEkpqHm!lm%Y@(,hA2D@kVpa(dm6aDpPdr&*f8pa$pf
+
+mZJmfhMQm[-pm2fTUiCp[%68pLk!$R5l+b8ZYCQp5,Fjl'Y'Z0AaakP[B)h+JUh)
+
+#Pp3L*l0D!pI8+5G2YBC6k*D6SYD`fiLF,+1*bXN+QR0bmKT0KjbXSER#%kUA+a'
+
+PDRC)4p"ed9&d*QiNFT!!kL5&d'@*mqb8LU)NV8R5KL5pTc#k,h3Fh4Ea$R6,hBN
+
+b5CK-%MHB*!DB*)DC*0)8-FBQXKQeQD9Y%Z-LPAm`BBa+lh(43bZLThc2"5iiAZ`
+
+1VVMS@B9qp5%B1lFFH6%$@ii,(M"flMM5P!ah([J)EMLfBTqK"*cX2(Zpcia6VUL
+
+10m-[CLaT"QmC-hL68*bdmVEmKb&c$6'$GidC['FS`iI`IX4#[+pFhXr)h@-eV9-
+
+LBf6-BdCjUc*ZdUjF16!bQQ%'M$0P4LihQTV8($HKh8*!@4A2bXqN2BEp+fN&k5m
+
+RhB@h8GmRRKiNR3a5j-ZpRh3fB2$9$T,12p,q+dRl#0cE5Y)"Bqj(dMl%+LI02i8
+
+1lll+k8(5a5$&#j@NY`+'ZcQH5fd,Ii9+LJ($18a4haIqBHfP1-MrPYmTi[rJ*h6
+
+j)%Am)Rb'HjX9Br$1GBrKhf![YPSpDU+K)II6-A4*lGe8P[i$!!d,BR0PBA*MD#j
+
+M,QmJ@%024NBTC@jcC3#3#I#p!*!2$dm"!!p8q`!20@Lb&,(J@%024P0365!!!,G
+
+0fDkh6GQZ!*!'!k)!N!B"Z3!!N!$X!*!'P#T"fQ1irkEZjjm(l8I!B8a8C*JL`"l
+
+e"KhLD%padYb@I-H$lcdUY9HpHp()9Y`XEJmP3m0qU`[T8Hp9MNYfTNMaTN3Ldf0
+
+IjMfThZ*fFe0[jjpYY(05*MZmqMAIq*Aem'i0ll*+@$C0[Cp@V`H@2JdA6,'ZfQQ
+
+p[Ld!c6Y1HAhFiME,D[l`J90fI2LZRqlF2Q(FiXr!iT0Kb9BieV+qN[)cEYPT-%I
+
+G4H48mKCr#&4fXF0lb9[fL-1eC@qLlCMmJXqIXQlFd6CKfq)TR(#lfN1[fX2PAYF
+
+e`C4DMU1pQCZJ@U"Hrm@jJeFbf[EFT0imKp#N6)I`@ba'9e1CFf8Gj+PT-k28Y-h
+
+aEkHJZ#-F-629iJ0SRGUQK"Q+Yh89Ym'4fM'FVKhcTbXQkKMaaICiZq5BCZ9[mQP
+
+,rh6"f*PP"1fllFp)ALmk@3B[eGqMrh+9ImLiS#FCli`-RBFdP$%S['1m#Gc(Uq`
+
+-l%19PIkE*$2BcPJ2,C0",mb4QYQpUG[h4,8l-qHp4E-bT[*0(B2*aIE&V%a[L0q
+
+NeD$F(-VBIM#$hlf9d95[INVf2m$HSU@Xd8-S8aAQ9`X#!*!$$3PLG@CTEbjM,Qm
+
+ZEb"B3dp'4LPPER0P!*!*,Qd!N!m28Y)!$eUB!!meD,)8XL"B3dp'8e"0)!!!Ydh
+
+CVVG0fDi!N!B,m`#3"J8Y!!#M5!#3"X-J#d$iUfrPjmSZ21@hXQlGM0$MVS`FE42
+
++*C5XR**RR5ZRb5PC)bc###A(P5Xj6MNjbXPaFY61Ed$SNH18dc2#9h*m2EBqNam
+
+j&Z'5AaNj5MKKNH2N@13jBB3I'A!bSH3SH8D1Ha%DH8CQR($bR"`Ra`Pr#6mbi13
+
+iH8SiiH6iNDHFiS%kr(I'#BX5bZPc3[N4@NG3a3%)(YJ-U`j[I)f'jIi[2J+DBJ$
+
+1S38`pP0"S)p&3T6D#r6&XTPFpQi2Ldq"KL'JX3G"Y&12aY)MfC&U[cG,3i6I$l6
+
+Y!Dd5XG'j1AH1Lmjhkj9LkFcSr2M[E6*cr8@4$jVAEYbaebS'JUHq"4D2fVIbUF1
+
+j5K(KH"&ieVE[P(S4,P%E62@[ck4Jp&j!R(UNG"@KbP@%mqR$BIT&f"0NEBPAGmN
+
+Z*PqhlIa#*-iH%'L(1mpPQFI9hK#Y)`"`TP!mDG[dDD0r1*kbE@&!cHTFJ-%jVBX
+
+TB)CpmD2S[NjQ*6,,"`2ARLXKUK`rXAp4ML[!UHq8j8f(@dbj*5kJiXjpS-Ddjlc
+
+,0%5p46Jk(Z[IZal4GSG2Lq2h`XHHAca*,JiMT&0"#'GKGm*P4irSh!TXjX6UI*p
+
+H0f"G56X-bENL[D)*Vq,+[K1FDm2,RcpaGrl1MNF4l5fKA6*#hf!q(@Q@61B$d85
+
+L"-[M`eQM,Y0$QhN,aXm$c&6L1[06ce4j!F(,#l#H@N#S2!eF6L(mB3T0(GahL6)
+
+kTDGp2h094PZC[HA6L*3[!BAMUEF,MiemARKc`#T-$eRLbeNLiP&iDc6-Q5)EQA9
+
+fcmhL9crQh0h#[4+ah,e5cE#E!iqhp%[qr,hcXehI1`lhAeZ&Zq6-e6ArIh-RUj!
+
+!bmSUA"V0X4D'H$TT&dHQE,X`RBbc"q,RlrBC&VHGfZ4PS(AHU30KYjEp2X![Gh%
+
+JbHp%G4N$KpkjRj9-mBJUp-Er92R*kcCi%cMGaJp8rLq+b@f((PA%*b'+hK!(M`L
+
+9Xbck9H(F1+,+B,9(ES)199kUpT!!#dkU`KhNpJLR-kS`pfk2N!!+U5*(6UXU14E
+
+(94&k6kK5B['-+$LSV--`@E@!Q`Ka0,)kLbC@da$@Pa"LYDKHlqRPX`4,b+RhUVJ
+
+D)A%e`Z*UG21+JT%%pj+4a`&@AiUVXBCQ*U)"$l)+iL(K,!-`QCcHE*-jc$kC`jb
+
+3!$R-(2B*Gr@SU-FL'PJYDIFYk6Dr`AfX9Q9@FddiF3K1M$1DIq8Dd-N##66'aLD
+
+R-fkmlA8BimESr0MNbc%H-X!aS`Y,4YG[&k*"ArRfb9eSG#fcIhQ'([AV8#DN"qp
+
+$B9ccU&q'-Vpi1%2jFrKA)FRqi6%m2*l*+L#QQl01L3Hpj$9,A[Pm$q9KLJFcU"k
+
+5B,jBc85i4Ne*[$cZ4he1QPf93A9F4mFm*'&*3mBKp,"@lJ5a609MbIFi9[G`Rf`
+
+@Tke+HZ0a1qakN!$LE'C%PZ#Zar$`c,bEKZaZBUSH!hmPaM1jA8q-)E[k5@plUEU
+
+GQ&8r$Bp[*iClX1E4ZjNBALhr*SDEP&YqKl6[-I3Rk9VbZ)[VZd(Z$VNIG!HVZN9
+
+DA6f+cqq3!-lj(LpZNQl9#f@2SRJNle&NBRMMe5PHiIGGlbC3GCYLa5INR!NE&1A
+
+8UAUmXNR4fATlHC8r9IpiF&r`5YY,JhK-h%X$Cq899%p$*lqImGYI9EI5S+iHkGG
+
+fdT!!m$eibGFm"XqGpMaU9i[lQTerCr*1bT*06@458hUC8H4"0TDC&@9XHRjZ3S4
+
+ACbHcfMZEQFYNm4m!N!-23R9TE'4&FR*[FR-ZEh9d4NBTC@jcC3#3#699!*!2$e6
+
+l!!pE#!!20@Lb&V+"9%9B9%e38b!!!,F)V0Lh6GS,!*!DjZS!$3PMG(P`C5jM,Qp
+
+bFbj[GA4'4LPPER0P!*!*,Ym!N!m2@TJ!$f%0!!meD,)8XZ"B3dp'8e"0)!!!Ydh
+
+CVlG0fDm!N!B5q3#3"J@9!!##d!#3"QMT$-$i1Nk6m$22)S`Fk`JrZj@6Sh9fK*1
+
+98(iD18Ei55LKAC366SY`AhjN*I`NciffjM-peXVTiCRR%8ijiB3G@IN44Tje5Ti
+
+66MKKK*&R%AD4!5H-2#8XFT`m2c*Jj"Pj6Tk6Tq3TiB56CaeKj2L4jq3jH8kHNUI
+
+N1AP1Q%!*F%Rap2PkE+eEbDh(`P2##H8%3Ca`!!*`3!q!"6`JhXr5qXhq(lm8@IH
+
+8L(`Z$iPipd!4lbVZLkSX(1pUSTLG+2lP`@0'T,9,T'f[h#Z23imR-UPLb[Q$[m3
+
+q4XjAY'hRUcFa0$jZrY&ba0bh6MQ4b3k9KLXfrI2LLBYIN!$jij2cmqm25HZ*b81
+
+A6dbZ+akIP"QmZhF94!k8*9l2Z(SR!ri@c@Rk1qlil4q[VA%SVf9FAfA9[XUUEGA
+
+IZqV[@Q1Y((IZq8$DFfQ*0rpC@Xb`[8#l3kGpppYhcVj2frH8ID2hm$eRhYjQqqk
+
+flk4pSfhaI9lIAR"LHTcU6Q[lmZP`aaU1m26@M[&Ij#RAMVUpHTrl6i@M26QQpI!
+
+GEY53!(F0pbqiIm-pLrX2q*%6DmIGJIYqh&UIGq2HXV%&Vi46ARA+Q&-qFFVA6[R
+
+*+6F#aA[B+6e1HG-T*jhbK90diYM`L$,m&Sm,9%"4YP+CGKj3PHe8IR!H8*BG9+i
+
+l$kK,$j9IR3G9)2ZSr1imU!T*8N'[X4j8L3a5q62`D0A)-5UYcS-UNK+9pFk$UT)
+
+b&I3Xkd'9b4NUQ-5X4k[Z,"Ad410KaeY24HHfckMS023J&I3qHBc+,MbHTV)EMpe
+
+8H[&iN8UIeLi9G&Nj619PlE98"[!BTi)H+LHT(-,M3bT[i2'T+V,"YK3&(aHYlUh
+
+81qRSSm2-HredC1MB38H1MP0dD2eVIeI(*6Vfd6&&ac3G5N*l[MTQk4LNBdiGAJF
+
+GapMI0Y2448H*MQik"ZJSdj'N`kIM$"e&1Xl4FCD1mh4FNCE%dA`KDe(2ha"[f%X
+
+Ahr@cLE3DYU&lRI*kPZCMG2N@h1KAQ)UpRL6mb9l[fDAC'(pMaN@YN!!`Bh%Z"J[
+
+0X*m+ra(1a1Jd+aR@d-D1JEqqT4RDPA!f+H1&J`c$)kBCfUmd3l[p`VR,FSh(f16
+
+-P-B69,a*YDE%d0&`i"$*'N,DpfbE4%E@CF6$M2X@-ripJi1X4Y-4)p)Ef5[rbF"
+
+-%9@$pVh1DM9SIcIGVP%0QKU3!0j5ViDq-11"@M9J8N#IMbJL!e034&(rhlp%8HF
+
+0RFT-KlBcHBfLTJD%0'q&BLE--$pCT[JSCj5))M)`Yd88p@qj+N@GL-a8dD#SU3'
+
+KEA@+Tm)-h@p9+$l*q5ULL!a-QK(&*h#IVRD8[EM0*06S+*SD%0+*F)ALT6"$CrF
+
++4G3lCX1))M)`'dF8Rm%p9D@SNjZChKS8068JC,V26BV6BFE1'NA-ZCKV)iV)`$3
+
+I8A`1pdb9SQ)`%fH$SUB'K-`%GT2LE*LKNhQ&iJZFb51+b-$q)D+S%rjFY5p1i1D
+
+8h1b,QKS3fR1E)ZEYKBcRDa32F*m3885')[bEiRl1ma@+(q(QC0qJb05!N!$Z1&B
+
+SGS8C,p8S[XjG5%34'GMa4"4Ii`kL3K(l5,10D&,8e)$3`6V&J6$MP4T&hDpchp'
+
+NL!aXT5++k(lBQe3SAXE0$8U6SUB'K&!,YbMkBBEZQLS8dE@`JiSS)J0lY)KLRVZ
+
+H4BSkXqYQN9XI1m'[8068J0$K1X9cBBDC&TBTBVH$r9P%%4RBr%88X@h&IUSbShb
+
+2qi*6Ee28e)"3TNla5TKK6$CMBGH#$E)P&#bI0TNGN532QS&JDI-8C'#lBXplNXL
+
+2T`SMTEH0i1G5+U4(LQ-&&6,jiAa4KH'aP*p6S6$k6RC-"AmX2d+VAaT*8aMh8qQ
+
+X#LAI0aN60VmiDLh&8C2r2`#3!`d*CA*bEQmZBbj[FR-ZEh9d4NBTC@jcC3#3#C2
+
+-!*!2$eX)!!pL-J!20@Lb&,-J@%024P0365!!!,G0fE#h6GQ`!*!'!JF!N!He!!$
+
+%3`#3"TQ3!%(DBlMrTZlR0`02U$I)40"'+-+PCGk%bT2QYZ4E"UjlhZ&QFAXS'AV
+
+E3h[3R2XG5T`T8V`TNALRkd"I5lh&lHDQhXkrq(JATlEG`jCr-X8GiBLC`I%"Y%l
+
+0M-HMXH)ffh#DYT3[Dd[rY&AFM*cH$SA6rdEj2pbM-T)EP6)CQTh@Rj(FTMb8FD*
+
+(rbD9[qr+0Y6I3l)c-)XU*bXppfH`IEcUB%D@bU4UUUmF[J8l`e,@k#'N)J!!$3T
+
+QCA*bEh)ZBbj[Fbj[GA4'4LPPER0P!*!*%NS!N!m2B3d!$f5M!!meD,*)XH"B3dp
+
+'8e"0)!!!YdhCX,G0fE!!N!B&#`#3"J)"!!"E$3#3"NYd#X#YcikXl&Hb$KJCV)5
+
+4@`PE*BbXM,#9((X!-Q@%ND15P4`PJj8-k%XH6mQYj#Pjr29f(9NPYhEi,R)V'G!
+
+MDf50c"JC-)))4P$!b)J4a$$#b)L4b8V3`!J5'"liZbk!)Zc*V@3p4PC'd-D!#A"
+
+!CeG%,#(cjHMlC`$a$3$H3J@9*kJ!Y((A@9P0@dkpfI5A"rGA*BP2q-MLYQ6IRES
+
+V[miL,0`YGMhL9e0f*a1GBkEhCZDblh@[KlpY1NXm&Y`Y!%ir['TF,8!Fcm&5H[8
+
+fd3qF(k%l#X-EhhRh%AAP@Dipa$,"cR%ApCYmp+C11lJGF`Ij+LNflYHXN!$r'5Y
+
+RXBGi09EkXBIbj&MaFCGCZF6pJT@m6TJL#U3T%qY&GP6B8@0(#p*bF1&l'KMq"$%
+
+8!bm)aS(XSH'PD-#pD+b[@!#NFA0r@G'`d@mhaI[e"@01CY6TEJdMZ9jXJ4NUP-P
+
+K,MHcCDL'p+9KeK%aN!"&8k*fF3b$qdJ4JriDBMa@EfNJf+Z9S[Y3Pk)QZKY&e5E
+
+C(CJ["F"6$5Q+6L#pQ*%cM+F*Bq#0)iLrEc&QG2ke'%'+IeV-aEHqEj'S882PABX
+
+9`e"A%D98mj!!Ik"GLiEKr'e4c`2q-C-@hq"q6MpIV'jEE*Q'L,GT-@'SreScl*2
+
+$eGmGYDLR9)LP!XLHllN"IK[`(`#3!`d)CQPXC5jM,QmZEh-ZEh9d4NBTC@jcC3#
+
+3#9iC!*!2$f)b!!pUI!!20@Lb5,)J@%024P0365!!!,G0fE'h6GQa!*!'$4J!N!B
+
+&D3!!f#F!N!Ea)`Y!q1[BbhrPHZ9&Q(85VK*qP"mP,%T@`T*3rRM#*-rTFEqMGE6
+
+,2$PK5GK&k2RKD8rS4,iqkqc)5[LYAC*RN@2N9h+F%NjS(6P'+(q6-2+F21AN'$N
+
+D1AD%I8FiHAlN1(P'11&'@13B14BjrZ3S*f01RT+RM`IUm*Gpj8ABQ8GBK*(MK*,
+
+MC-!*@MLH!'J1%QpF3A"dmdpI!!YV!Eb'PB"a$a'B)acD"#PmjNJNE4p)rlR$i3)
+
+3q"PBd)5PH*4i9D3pQSlkqhNYJ5`32+TV5h4UL-45+9G(S-*p8A99XhlC5,XGflr
+
+RfTTS,Re9b*5Cah-'bR*49!k'T`DY2R4PSmE!LilcHlB4blMh3LEq`)'4+,E)2"6
+
+&0LX+Lr[IbRjY!'MX4q@*+*Ubr3MQfJ'VcA'DJ$,KXm*'9jEk-Q@"ieZbU#VTcI9
+
+Kj@"idY0XLZEpFjVlU#0U(L,(baj(LqG$ilmqQ0Gp12HP-bjH(2`+&B0Kjr2X*`K
+
+C4rP5&hNrVR%eeA'Rc08kG9'de[m#e+abp@EI"GVM"R+F,Ei&[@Jj6AfcQN8$GBH
+
+SqlaSDHMRcK5#ePPUkNH&0B"PRTi9e0*`8dZM-kCDeJ2eAr2pMCTLkQAE`A2diaf
+
+!RSA&Xd6FF4*a1&BF`D'hJIFErmUBKlI8I`K$I#@ASEiH"'S$Mj8hp$%EEHk1l'F
+
+#Bq*E5(MTdpEX&A+GjIX49PSCd6ljQ@KhXc0j4,"-I0'6Y3(RBN1r-hb)2SJ[eUF
+
+`,'UfL*2RGH8-BrJdr5ejAVbKIh")H21i1aYGhRa+jMGMMb-96dE6mEe)fphN!UT
+
+6eC%khJA[[XT-,VQK*ZqaHCl[0ebUj([rNEXj@AbA+l+&li2P[!Fil'q,"KFK-fS
+
+8q6(2Bb`NXPD4a84U&4&PcF*M5(Gi4K&Qe0[q`'FFpRQqphINFQqA(A-hN9F8f8Y
+
+NKb)j)MX9%9F@mk$!2-PKPb*d'@&&c[JliTQP##q(Yb2ZEe6N1hq(b8#c)Mri1j+
+
+kN!!Lc"j@+$,"BC8J%K+X9L6)BBdLC4bH8L6%BEdJN!"F!"9B`1N45&jUXBK6(B5
+
+Y#AGaDS'NDMH%Y3hhLSr+1U#X3mSkV+`RP2@-XPj3eXZ3!&lfUl+1U9V*-`c9C,b
+
+UfaYeil$S-(+L`cLQ1TTela*-6TG&Uc'Z("2#B3D&``b*9R-0bMPYN!"qCMEM2Ni
+
+C,1FdK-T)aliZflYBcK5-2BBX41)3qkZ0G6KTV*[ZK`Ec`CFCCLXdeSebIc4"MP)
+
+hT#2#`643FC'Me!XC3HA3LeR58Hb%c+CbZ-*pMU6GhIZ'QXD88fZRF%L1TB*UY)%
+
+LKrTK#SHN4MJNHI`L"4,aYFSNMhjkLIdFHkKEEXNDkmKE8L&TX&f((R,0pcKXRi0
+
+Ga1GB2Fh4fKTIQeFUDll6ecqj)h-FGM,Cde[UlL81,a8&$Pl$ZF6d4,[Ga%c-Fjb
+
+kRDSm5@)k9BINdZB[R+)cU4SS*UEZ9UV'LKb0*3l[@cUI+UEE[82U02q4+,'I0Cp
+
+$YGe)`hmIZa4E5Pl(`jk1UeV*`6Cb4bZc`jlb$`HEdkedHYr6I-HRdbN(RZh8E4Z
+
++hN`RQdNKHCYRdXRH8Z$B-Fh4dCZ`HqlF[(4hJ[G$@d*SeZN#"r[Jl"hb5GLk5dj
+
+,Ej*'Urh*QfiiIEMSSPGYVMYpV-JK6EI!X5I[-lXqeAIQe8X[P4DpbdGRe&mU+N[
+
+Ue(P02IYEJH1pDBj81YP9$0VY+pJ`cl&TRQ2Rha`Y,r(hMlYGD'cHYi6Ge2YLL'a
+
+pGS2GCDIYl@rea!AGTQ9#dGC@YjUfVLP!6fM-YF0'8SRN[TjdKl!qEkHIfp66dHZ
+
+Uk,DlYHIp$`!0#@C[F'9Z,Q-ZEfpc,QpeG%C'+@9ZFf8!N!PA#J#3$`pNS`!2H*N
+
+!$c9SXNLbB&K$6dC68%dJ!!#h6GQeYdhCY3#3"L,K!*!'$Dd!!+bG!*!'jGd0`2K
+
+bNNcq+pY5rT4IP1FDMr+,mUHEEXU0mXLkQFF[bMflcEDkf42ZZTq5IA4,cplkcHb
+
+m6EppP2r+[6@Z[+0Yk6j#fi4Y#G[[J2,d)T6Xmb+-2#2(EKpV32Q)X(f%4BjYXXP
+
+Y`Lr#Fp$4IB546IL4cIB4GPY[XmX9k+VHq$Qc"UN00TPX-YN%"CXF*aY2m-$[T)Y
+
+B,iPl`qHHAbpbpL34qC88LPJ6d*%*345VfFPm%i*PhE'Hl[dc+,D+j2@)R2@L9-K
+
+hd3q9Y85lSqRj&*F*,iZFQG#aMfT9AGE8e@Ac'$ErSeqLV#A@Y'6HJ6&bcRiKLIY
+
+G$`aDiKq-5X&JVa5Z+NTZRTP-[TDi6[,$pi0)Vd358CQ$QHGeTNM##H$&r6N2c%T
+
+)U2HE)YFd*[mDACK-hYV@'&k*[Mhc8RCQaA+4@`Gm5dVcT,2k0LNQ4Qa!JTcp9%+
+
+XPAfFEqTCHE[)$*%f"qmEa!1'LaJfEXM'cE(aUKbmD29Y9N%@ar4FBQ-U$p5ja!D
+
+ZCH-fJ@G,,fDLe-A-ZZcC+c!E9Vkf"[r@(,UX)3IJbh@hb@Vd%`jIFQVj,bG(%qU
+
+9Rp8,r#SF[LAS"mRAlKH!klQp6C+hmJk4F+0BQ2I(QbrSSBm2j-$JI4*#&S`N(TI
+
+'m(e5&Hk&lk052c1jEf*TM[,*)cBi&")M!3aN"6(UCLEIH-M1LZTX9T!!if0&b9(
+
+P#Bk9m'cPdrMr@@6j&-PEIV%%`EPlf5frkbQjL"bYJ[!b%I$j#[Pd25N@H-IMcdc
+
+U35q)AM$4"&-KTk"$AY93C&VMfVS)CY`*F![(&EZ)f*A!@2D)lfTi*KKZ6,i4AlS
+
+p$-cbdJZ6@c&6!$jZHhDI2CXI[P9Nm'B4Sl19$aq%qh[PTiEAhPpQH8',iK5HV91
+
+pMA-IFF#RGMJUiAA,a)Yj&qCVY"q9#2R"GhAKU&3"lf[%Xce@EA-*fP`qceREGhf
+
+FK@D&+4ifrTA%@%iqYd#2CI$R[5+4[QZAG[3T&cpQU,Ia$rc9dPa0(!Q2Z#5qp[+
+
+HH0r&2FChHrkN2Vj*-BY4"c(cDjdKAT%-E)+I$hMmd$kajqj$qm5H&8IfLIrNd*i
+
+9Th*ScbA[j&"[FRZ@CcU(IS`FJLp@&HhV-aNN@idArQRfRejT5d5Y9HLVri&r2IR
+
+$Il0BVil+$Ie4kdHSjpUqMYJHTVr$`&e*A(Kf"[AERdF9CZlG61,m)(,'eRc8jR4
+
+0PK1cL"MTl$!Bjc[Cm5#`jMKCP'm`GZqdXiVFQ5dfpZlIF`kHL[`[6hCrAcd80hN
+
+#c"c9jalN!R`%hTGK&KQcHe%QBkci*RKe2'0kJ$pda)YfRpP)(Fp*C5ZdV3(QQSj
+
+Qe5eIpiKQj#9bJhY6950fLHDk#2Zk6jMCHX0Mel0fV[3Ic*A(NlZSM@C@Nj48rK'
+
+j-L)Kh5I8!l[8rj9*+3N[&ERUa@65k*%FC8jY![lER$5RRK3"Yi(KTH+&VR1JiD$
+
+Yq3,8p10@e2#dPF$1-T!!@#T"DPLj$aU$2c8N0M(MMA*TT2QmII&QA`@iY!#VJ0k
+
+1Ya33Xp9SrISVQ@a*2JrI9)&ckb#aSY*)RjFBrN(EDc1B(q##(!J*F,"V*T23)Z*
+
+NhJl1JrZMm"pcCM3m)S(`N!#FNEJ(1N%ci,d"(PY5qU&QeKlA$YM3EL+e3km`RK1
+
+UVZk9N!$UPFk!ebFk'G#fAiF#k(!'G!Ji1L`aZ2r3r(Fd,-Gm)AD09Z8*VpUq+&5
+
+[JaIU*EBq-jaXRQ&leJA-3NHh)$fP1`1d0[i*URq)RF#H-pL5mT,Cfj%Ah8IciTA
+
+NAZB&X`Gl6!9p(fQHILdejNijM0aI&l@'M&qY0G#hIc"Ur6!FYITR*RIqcI%(p`,
+
+-b[ABHCj!2GpJbacMLCe21eJ(H0Ul`dlGIqeGk(TljMXT,b(IYfb#AJFeM#CI93f
+
+4Gj9Vm-GpSl*9Xfmpp!pe08XbM+bk+LR@D[JL[R4AF0Rpfi+9,b'2,M3l82J4q18
+
+Zr1%KF0EpKjlJASHm(B&rDMH"CjClC&TGj206Tp6D0cEFbeaqZficYAZ1A3rDp3j
+
+65l@TI80f$3kX[EJ9XJkX-R8ZERqXpFkAMhq"c4@b6JMKAi*r1IjKr-%Tr3&,,[a
+
+"!"83j#*fV,qMFrPCm*m,L&,%'9F%R8VYI$Xpc4YMQAEJ*DR9k5I3bG1Chk)6e!l
+
+ZM6+,dcPJ,h1ddiM1$GU"iK,4cS2T'DJTAf$(M8ZSe'Q(@Ra*1h#QdFa0Kmc6cXD
+
+88ZiAd1PQar1KP&+HFe0+HDLb+Z@K&XZedi(1lGTj#Te[D@FE1L[BmH,1CI6a&UG
+
+8mF+e4KA[!$ThD!G102TiAdARHqcik#YeJqr5P"Ym&HLXdZNEdEPACkL!UZ+(9q9
+
+"lI$UqjKfYUF8b1@dcZ45ajpTTakGGGVj58V[!#qp'cJ6U%,RjpUKicCTKkIM4l4
+
+$PCpK4r2LA%5B6+$M0QZ(E#Zd3qA0$(P2ddjTHSE1E031Y68cG0FLl9!"-m2FL@Z
+
+R*Mf$I*)Ll6!Gc3bb80CUKkPMCZT3h+NGkQeQU1JGfQ%LQ*RjG)Kfk&%c3hHYd`k
+
+90c0-MS"fF!16-lA$QhLqGR!le8#A#IdS5V9$Tdr5$K0VURESq4Ze3lFZe!jf!lP
+
+C1mKXZCXGBIi`DefSbJ81P5+Gk"2X!6)JZDL'K8RcX*b*DVZFM@SAdpN+bNG3PH+
+
+X,PC#,NFe)Q@SAT@V8Hf56b*KFAT'jCE*G#b*Z8,L4P8P(P3ej1HU&kE40*eHTG0
+
+$1VG$cN,L"Q8LUN,bcLNQljaDq6#UHX(HNp0'pMPaZ349Rb$,FSB&rXpC,ap(pC4
+
+FL@U,A)AU1I,2HB'Uj1b3!%VNFCjm'P8a0aPhUF$jlLUCcX5J%XKbL1I'[CTjS42
+
+$e-Ep&*9cEk&#lP&9MMi96l(i8*8,ANGiDZJB6kfFJ5T#hhMUUD@RMITjqZJkcaT
+
+"XRR@b3@S0P*4c`LpjhQ1EammSe68Xjf+HRCa!r,kUDJh**p!93U[LVH'2[2@df(
+
+HEMV-fdG&[B-b&G9G903lT,l#"4bpcG62ZjAkHCm6,kUAUCPh'lhZh8Y&IAiUkLZ
+
+JIVjLkZFVThkq+Q&bhdNH[RSbm,@4JDp(H`2N)@YeHL0CqNCdlQ9PXifHm1dJ*hm
+
+H1IN,bFPI38lq@X%fj'q4Fe$ebrQSKJ64j"qQXrhVk!Rr+$f4'k32FS[P-P5eFJ@
+
+U1[SlGllJE8TZJMl)(D32FYI)0DM@bE@S0Y,IZ3r,GFaD+T5lJfVPlUAU!6G9$i5
+
+S8+#%#JA+U8UJRRN6Q%qr"MUS65!Zjk&+d,Ab'(N%0Y)"JFeN%e"A"H#KXYB&E6&
+
+lK8hZ%fZHeGVH%9YFKS1Db#A@C&P[6AlcPBb&2-)Iqc(HaPL60f"q3`F`XLpNN!"
+
+%a-!E'IM!`FLqMN&1+BBKjI"`AXE!Q8F`'PUlEqT3d3aA&c'!a@mLG1ARB233Bf%
+
+@JaQCqB#)6ImB$`FM2Xk$&`1mAcQ*8C!!jXUGK4K-jFb(j&@IK9cFF[LPlJaQel'
+
+l@$2d+f[#i59eJ`#VQ('-VNZk*a%MPXBSGc!-Ra4,mb(CcDF+MAhF`8pJF(ZUTSS
+
+,EAl@CZl`UEe+Zf-UiQkG9JKE"II"!bTL3mYJF2Y2Bm3k1aHh1c+mUC!!lFN-"[E
+
+6ihkGSTYe#S2lqD&X)%Er1)q2kGjl#L-dRJe`(LjHf@cJaNjEk$kUhD1Z`KkEFB`
+
+*kS2CJ-dfJr(9`pN`kl6[2cMJQkhhJH11)8E*Z'1J'@k$MQ1X8FdBHfr@lTKM9MP
+
+Z-(&ad$(B`$-BZ#3k'+h0EHeGUFhUIFHNh`'qKp&j'J0[5NjLm!Tc!N1hjR%-hLP
+
+2B$cd,`cG-V@$fmmaPcXBj@ql[#`0JX[[rTh*iJ9)Eb([lNbiQf3Fc0[R%CIM"@3
+
+DiaH(Fa'Al*0ZH&4[@mIcM"MKm6`$9pbfpfm!&Lq-HYGjG`2!25LMSPi%$LXpkQ#
+
+B$5f&dG#3!(EMZ0,[IaNDZ1mGFi1$8If1lp-JZ2"Rdhd%Ipa4c!f*h6%hi2k98IV
+
+C-6IJ'TA'X!b&M"ZD*r%DHXS0[cQ0mFTTM0G1BcbMlaQFRCZ[P#fq'M#CEVpr2Z3
+
+'h0Sb5TX,`-'G'cHe$!DZTaN-qpYc5L(c&RYFa5rVkibXLVKHZhJ[eiXGZf-UiY+
+
+A88L[$)G9((!`H190Bc3d1+H`!`VC#CA"`%hkH*Cr!-#RPlN&A$caCX9a!pq5Z(M
+
+heHXJZmIFX0&4QZm%$VX"GmB-"RILrCkfq&lKK+GY"FB`bY*V-&l@C$f0&b)Z[TS
+
+`Q`LkBbVLqTP4b'b["eA%P61$J9G("eA%GI@NLVJPR-6JLiN6''RQlf%JBI(H+1X
+
+'l'ijp*(CZF`QGpJ0Z1&QP2l$-6IXG6$qmLE'SYLLj[RT8m*4K5+cFBcAclQEfYp
+
+%FjNNVeY`B'hZM%@lfcZj$%fIff(fF26QaESe*1facPKUX#2Df49V@06H%Q11QLY
+
+c3lQ0BkpcC9hG,3[D'f)p#lUP$'06b4&Fd*U0qCVTfUU*YF8i0@I+h&MhY0R6jpk
+
+dZ*RGccMGVPMhejZ@Y*)H')"2Je*$V+B8!3+&dMXa`!h9&"@b6I8-ABINp-mZEQe
+
+2p5'"dqq-GE4&QjA3$E&S5`VNLjd,hQ)`G8U@`e5'C+SjibfqdpZ@G-hr3RZEp[m
+
+2!*!$$3PQFQ9KC#jM,Qp[Fbj[GA4'4LPPER0P!*!*Mp3!N!m2DR`!$hb'!!meD,*
+
+)XU"B3dp'8e"0)!!!YdhCYEG0fE8!N!B'93#3"J0p!!!Pj`#3"U0E#N!!DpH[K*f
+
+%(6j'm)a3qmb6X#GX*8r$-mNcmLYC,l+50F,)J*&MCdF'+hPfj"PKjq'c1N+Ih-S
+
+mLp!H6ar202+F2#@rFX)NM0!Mh)Y`FZ`))j`m*mr*J"0qK1@6Bf6!##22MK`MM"b
+
+EN!!"Zj@`*mr)R*&R4pL495#!kjS``Si-Q'4!)b0'd-5!#3"3$K*![%6c[`22r`'
+
+DEJ$BMUf!f-!0a(X#6@jU)piEH@XUri9$m"!)2+1(2Uc$&ZklMFaJIV$+VhJ*h+2
+
+'0N9V8LKP$%e-H$i#3Hrp0Sk4XBBQKlr5T1I'G--1"UlI(R6[&`@#LAe!I*k["56
+
+Z!SX4Gh&fFIPTDJiYYYNqY4rL[pJ-F-"e(cMpd"-cd1-[X$Da$5f**,6iEB3GmY2
+
+Q3$PR3[62iBKc(ZJYZ'la0b$+$-RC5JfYY`"4r"hD,bD3!$0GGcrcpVfGPYlLVi'
+
+H9YIYRa24QGIVmN[RQ-NI%-bJjFmcj0*,kJ+@k%@A[TM43U(-R,T+UIi,F+*GbVr
+
+-)f`A2PkbjcmmX62K%(8bLCXmN!!TPBHJ"pfqh%&q'rNPEIEU@qhL8I)RJB[r!rC
+
+dZelNcXZQr,L56B&FRh0(FRTD9EBjjMJP-rFcfH&VA*%DrZjATHIa$dSIGQFTa4b
+
+#-TIB,ATI*QEHe,+NPR2@ci&BHV1R`eU4H2EB)hhf5SQCPKHLl#(keqhm+ch'Hl,
+
+0UjGQc#8YaVD)46"kJcIZm-EYB02e3`i2hqZ$5Kr*fFYhbr*kSL,I9VN42GbdU8f
+
++Q`kebA$6U6Dj+[Xb0eeU)peXl*+q2K&%j%Dk4)[FB+0b'X9DSPjf(h!0QiMq8Xh
+
+j$V`LdB`f)KhY4'&d%%99bmE35G3(pU%iJ9e%#f!qSSMG40GJ%2f0283hCCEL)H*
+
+%*55)hU$2b*iDCE'TFFX3`b)lEJeQ$"B3X&-N-5q5RpYDX(6j-P&fY%LQb8qR42a
+
+c8c0DUF(dH-peM8C,NkNd2-fkMhT$0kpSU)3UPmTR4'T35dl)qa'JTZ(P%C!!'[k
+
+r)#5[Q@284'5Zh3&eN[AEMc5f)CpN$'8VN86P09KH3RUe1U5'9G(JMG8d$MFdr&P
+
+6rB98Nkk0FIciX*9AYrKGSalMLSBrQhpSX&P@[BjCBfD1KEZUN6l-$p2Akr3R*&[
+
+0Qjdb121NCBkS"P)T6PKjZ4LDc'DYFI`%!!d*CR0PC@XZBbj[Eh-ZEh9d4NBTC@j
+
+cC3#3#86I!*!2$hLC!!q"0`!20@Lb5,,J@%024P0365!!!,G0fEDh6GQf!*!'#FN
+
+!N!B%33!!Bf8!N!Ba2J[!V4fhPI#MK"kH%LVlP8YSZE))j8FSSCab21'%[q6`R&k
+
+%NcA##5IF#,HAr"Sj6MMKj0G"q1)5+U(*UFF)AmRaPC(9Q%FiHDlNmBa`bB#6iq3
+
+i*8m[`SmF*c0'1#A2bE%S15lKK*,R4ik6jf6!b9&bP$`r-U2N1#@FF2+F2#F-$p6
+
+9*0C4m[50F2*FJJj1d-!"#"lB5BCA@p5ppYT2Aa*eZd6d#Jd5UBH"N!$D`C!!C54
+
+kDXHXfIADha`-2a"eBHcDT#2d+)#-19@S&8*qi#@a$Sfc3M0NbTV&DPAl5$bY[r[
+
+2-DIXiZATA4TlEVm-0C+*QemA['eA8A,mCk,a1rLZ%Ld8UI['DHq@dk5dmbQPQSY
+
+Til-Q(4Q&KBN@$B&(ZG,NlEN5UBQVP,,b01#q6f6P2HmF8Fd#reA2@h8Q+$9kNP6
+
+f+[8d0hp,J6X%2!(FJ)I"jMI#-F!Kq%L1Vh[H+$BLkiLRBl'Rc%GEb!+qcMTEARl
+
+4maS,DFX&hLLGU&ZRkIaAb0&"MSeNemhA(FT`YTbV@k#dfk*"j,R4@"fT1bh+1BY
+
+BNJ*G3%D+-i+qGDJGk$B@(kYVcE[IXbCMcJ,b@2l9bkmLMj@-j3,IpI,j![DQ4rC
+
+QZ!Aqj0,NlAHAC'r5ccXdd-+ZAEm@jQa!)pdU8DSaNcIqdam-p+pFba[ANI19T@,
+
+GUK#a&lmldKJfpDc`PAR+ReImQ6Z)qqJ2i+bCa*GEk!5qarZi5Yl'pj'2(i)'#r8
+
++mPb)I"$SU'p$K$heRQ*A[f0i@4$iSe1#r"P`f#q0#0)GFZ#IcJL#AI!jR%G@N!"
+
+8b1&XH`4"0p0436MhNi)-B4J@C"M$Xi+-BRL"%HVeDj%$1%F2B,U!KLCkNpKpKC!
+
+!+c@)rEZLpBRdmJVeBrU#"M$GSD1B0ZJBTbTZGYL05NVjMXK'$3XM4jcY'@%ic&C
+
+,c&!hf,&DTJH$Hd+Y#rXlBImSl&qBVEBTDCB[9QbrcEflT+C9Z@VE-fD*#BqV-EU
+
+PaZlG)&M9,RbaLEJme0JDq'Ycd'MI(dL(0H!HkFBDlGX$LBL'eSapa(F(mYV6N!#
+
+%JKk#eaR@i&h!krG2P%K$jj&J$Gj"eZ!Ya$-M%FieNj!!fY$0*Nr[RirbLSTUX4b
+
+G2h"Pki3dhAGJfU('4Uca4&[$RTqI[46I8T*3m2`d)`ed85GTXebZA+kqFq$MViI
+
+04j0eI%3DD061a[L2HfhchXE`MBR63IH6S!FEXa0[`j-('i1QLc5HDQ[-fqpGR-@
+
+9)5hF56(@d*qp[3p&F,Zd8cb2leY"T`UkRb,k0dVSQ8k+Z9K$qr%ebM@lJQ0+Aa#
+
+(l49T*2pTVd!%PeFl4HjmjZPr#AVD5p'*%aVVT,JFDfJRJ8[pqZ6kqEG4@-1ihbL
+
+iKA!hlZlLKhb6hGr&p6LKPcSTEXFDfSQ[NA[MaD!eSd[#Irh)cAr(j95Sc9fU!TM
+
+@`2m!N!-0#QChFQPdC5jM,Qpc,QpeG%C'+@9ZFf8!N!N0%3#3$`pmKJ!2K6J!$c9
+
+SXNLc)&K$6dC68%dJ!!#h6GQhYdhCY`#3"JCa!*!'!j%!!(L@!*!'i+J+3!"V$9E
+
+ZVB3G2RCiGXV1AL2X#9XC14UH82+-X&Db(VQ9V"&qj"Nj4PK("LYj&RP1f+NCHm,
+
+@b+f%DI`SIcaE[`&j4QBV1EB54YK&q%Ni15CKK*%j*rc)m60+*Ta`-Z%RBB344YJ
+
+44Si4GLYK6jk5Cf6)b,%Ml-JU8(9G(f&2RKdCX#22##1)iX!%3#F*S1jKfHm(Erm
+
+'p&`&X"eE!,@D#%)*,SBJ#a0+@"9RS[+5`q8DpF0mmeL"GF6M9Q'N-Y,PGlb%RP$
+
+MFdhVd9[@bSq0"6k5r[YQkPE"bBmII886cdX6KaX1ACSEmIjY+)66R`'T'Ei1N!$
+
+q"fJ1H-eDmrbYl"3LVVejBMr8I,)+(2#mrqV$-1[%FS9-Y6`$06b&@-kffQ8E5[6
+
+)hG+S)TDkLaATEBLN-c$59CLT1F3ZI`---XrX*'De"lYh6R6TS8RF6!Kh#UHRfr6
+
+GhmS16m*0p2XHbBqjdmr1ZM02ElU&@*3k4p*A'2J%3&e&6kEl8arjQmK['E@,mmD
+
+CVmJI"mlm#ELR0TX0BN'1bbA(e)-1hRiXq'![3+mhpJ0hr(cmA-NaL-FP(f*(kMp
+
+3erDmKZc6`&jU""R%6hp2caGJ$-e#0HCJR#X!C@V48baj!4#qDkqXd21NpYcMHI4
+
+85[m#4Be$dj,9ePD@AX+5Er)[[Mr5dhFkTi2krSMT2,P,&ZkT@&5bi%h%JMahqYi
+
+dakKpIGfXrGcLcE6V#IB@rCTZjEiT'EVfaE09qjb4C,XN"e$kJje3CbHiiCj,Ap4
+
+C&(lR$!AG*,1AliEcUlJpjpXVL)S3fD541T%qMIa+C+Y'lK$T&d4l@0-[MJDj$'L
+
+%hK!4"'Zd[`5l%4M#5Qk(m!Qh[h@rhY#0q4$VZFh$j2B%'qJZM)hF'T+9QX8ZETI
+
+T!HS+GR0l4#F)!IZi'IL8QiQN96aHBYRTmGT34eAafj2(+ijPNl"6C6#M-LmDA,&
+
+$q6)rpVE+j-M2C9AU4A[6T'J`+plGSXC5Fj1T0Aa6Lci@@h[C@`drSH!DkI@%D&"
+
+,*ZVr%V#SSI-)L8E3r9'j@)ke)#+jaN28kIj2C!D@d'K!X[,&6L3*Z3E(6dLZ8*q
+
+AeR!k'Vba"Bd$5aV",1rqLVT*[akjpJmDIHmeV-1(bq-91HPh'U21U&eQNAldZZ1
+
+p4Zj,IU)kAGQjcQ#LDl[3(JR&2ZEB*h3$%I52NF"*CmbT#&!XMBmG`rm!N!-0#'G
+
+PG'-ZBbj[,Qpc,QpeG%C'+@9ZFf8!N!P-MJ#3$`q"0`!2LF%!$c9SXRbai&K$6dC
+
+68%dJ!!#h6GQiYdhCZ!#3"JTJ!*!'""N!!$9!!*!'9I%,3!$9F9G#1H8dMarPK%m
+
+S*mb18%ii*Bc`@`NP4lQ%8d+0raVK4rK46LKKPq3CH8kH%dij2ErM4cMPj&C#@cN
+
+j5[LYR"kH8aPj6QBVH8DHFX*T6`DF8-+2M#Kj4SiHiI3ii4*1@13SHAlN+(P1RKm
+
+j5Sj66SXm*Fr*-c,R*akS`pZJZ#XrFR6#"i56ii366P$!#3)ii3!%$rbHGAMc$HS
+
+@6hkp#04h!AJ@EB#jP4di#b`bdSQHXj!!+ZBRLcGR@+`"L5Y!h6`1i5lffe1jiH*
+
+`1"pi5EM8Z%A(QVA+T%E1RV8qV[[IRHHQF[Q4emGUBq+jqYT45MVcRr4l@a@$C2T
+
+*)(f1hmq!mdHpKI4(`%0Y-2dZaY06D(edc[2kCq#kE`*GCFqV[!Gd*J$1Y,P6D1i
+
+U`e3ZS[QG,&$)HYi!UI9-!B1HGm(Y4f[k'[dF)83A(G6$QHb4U8+@rQE3@,Tr,C1
+
+C38FTHqmNG6ZRVadUpP`!ZMq'QFfTEN0QaR0PI[BYS1F0ISrLp$,CZ@4A5LEQ6lP
+
+S9jj[HpH9CaNSIiSN@5kP9`$kk[[&piEi(VHq#q+6Fbr8r&1h9CPI41Xrc'pmq"0
+
+cl`2Qi&c)Vk6m"TE*kQGqhhSr+$pUNpe9GpTk[a4lRlEH,phd2UhH(aE[p0Hh6#r
+
+r4H$[abrqpPIHe1cpkqqeIApfphhPle#T6FA@XJpC1kGY,AYdbHTalcQVr&)66$2
+
+ZI,H"e5Dr(BG*a$`Ic*J[Jilc50Kj-G"acSFcXU'E''`iPeNmSaeaHjpfZ'hXM'c
+
+FipUj'Xk3!!41D1IcF%E)C,3M"2`CSGbSRA8@pfKRJm8alAc(SP-l@bbkYI-pLmH
+
+PJbB&h`D(939bSFcL0PB,D''eK0YCVH!1)DC+@j!!(#3K'EKEe%e"EJic+AUQT(V
+
+(4FLm,jl-ZZMKK+DV6LDF2Th3#mM*kF3F%UR49mEcpYV`EX#-QE&m-C[+3L!pB(T
+
+afI4ZhdL'9`Urc"F[)p1lb2R&!M@Upa'pL3Dp#U&)ShSENB9Uq+CL(r&G9,HV-8T
+
+%[K%QN!"HAa80DXPV%FCmXBEbF%3MD69NYr#P)K(KfZj)&Z9*eZAjbE0GLD@UMS`
+
+'5(Kl!AQIN!"rreN(UAbSX4*V(0[@'"U5U%9hCdJkHK%IETJpdV('dJ(T5'4YQl4
+
+X[ijJFfKhPr4@62("AG,F3C&'6e9MD#KH-MA5PQDN`3hk@kEp[(#hrU9ajBrFU`K
+
+[NfSDAZ,h9,!eYEZ6"QlBL24MHfPBMc@HU'T%SHGGm'ZQ!ih9hc2YLr#bUP'8Vrq
+
+[ii!LVi+)d&1l&(Nc4"T29cAXilm2hM4l&'10YAf+pYAVA9LM1#'AeTm8Fc'K`6f
+
++Fl('bDV'QHIi5k9f5GMAFMKX0IPKHhPi![m$!*!%$3TTEfeTFf-ZBbj[Fbj[GA4
+
+'4LPPER0P!*!*dGS!N!m2K6J!$j)5!!meD,*mXL"B3dp'8e"0)!!!YdhCZEG0fEN
+
+!N!BDY!#3"JIK!!"F2J#3"NA`$-$iM(9VabNr2d)MQr+Rr0Ii88jZj8FS@3Q,F,[
+
+`P+paSh9fK"'ZGC3rjH6iK(!km-[MfNZSGDhND9(Vj%pBCq6@q"01D13SIhU%RdI
+
+iNH2N'AP1MNZ1A8mji8q1NZIN@H3SH4Bj2L92bA2bR($#Rh"bp$M&!hAGkKGKDi4
+
+bY3'rPA$#M``iQI-MFrji!U#CeiNh2LArkeXq2%Tdc[0%G)M+LBbcJ*!!Ij!!D%@
+
+D%IIc$iDlimRZ8cdS6K!9rdKdGJhpMb,!Jq&BFhHcdjqCC88Ed9QI50ZP8Y@'@a)
+
+*08Ga5,fR[e3i&QrCY6AAaM0R[b$el5@UVU0NGC!!,Ya%92l+ih4'93N'h8XPeS0
+
+%k!P9hi*h2p'9PpZfkV8rUNj4@9m,"3DH)1U*RTqm08A"RS$[F(U%JZQhU6,p1B8
+
+'$+SDU+#e!aYSAGUJ3,UCbY*p92j-K6eQMG$GU6jU5$96r@EEhT2D3+9@"9NTm23
+
+%c-2121$lE5DCajhPbX9C6QQ3!"S"Car9TeU)V#L&0Y[6hbpbrkhVp+&r%Y"eqTk
+
+rG!9[aCqmeUL2-'Y$b#6D!2rh(,SL#Im(V'(b@IZ`9%5(RcjBQ1HY2[XEQ3Qk4Vi
+
+NLVb,pc!4CM[D1r4&dZTP2AiDB(l-dPCPNJpcPU%f8*HMjVP,-A00"(Xf-N`'-#Y
+
+dSI5&3KI*AJT&8Q4BHf5@QhL@b$YB8UUha'UbEA!fT6"V3r5D0cZM-PXPm!$ieXM
+
+Xk+e*6GT0rEEGXkr-5J1[`Ki(cbVZM8Apa$e2IdU"Tpr#6+,Ee)I-cEX1fQmk"Ue
+
+Rp4qa[f2p@AYSIMadXF`8e2`(a6F+Hj)ak(4hlbII*YQRiTGK#U*RVG)Z2+fe+pH
+
+FiRrYN8"Ne,BM0SAB"eHpJEf-2ZcP-HYK'+D#0Kk$&V2k['hrk1Nc+V1,&hTR[2"
+
+b,fi!0@G-c6ljF@jfhIGHVZq8lpK2m0hNFk,p-)9kqLr4Hf"b[r3S[@U23CZXAUR
+
+mB60lk2cM!-qr6B5[k"X8GESHd[@%USe+A50HNRT8emKiZ2EKP16Dc05DPl1P)V`
+
+bhc$HPr%H`BY-UiKR'-1,I+VS*0l2m)*A2KrHNT@ip@JphJX%kFFE1PL-#Sad052
+
+''4NH!eQ4kMEZ"l*&%%a,p`V#ZCEL`C5UflF@5*FJR8"k"6N1T%q3!+q"l'2%j0c
+
+V%8'3!*!!+4k6BlDR"(Nd-jR*ddU2(fl45!f3!"F%L@AQm5H"M$!LcMJAKcX9`@r
+
+dSL"`#98)mT,6`j1&"AR9kB',+#,)Ddi2A%8h#m)kUKkiM1i8"!Q*lS(VU%Q3!2H
+
+G([E80N('R4kiNT+#I16dX(qH%13VTiGG1bJ)ZdEem2BS&Z3l&+X%i86`2%'Q8&c
+
+-#0ZCUJ6aSkJ@*)"LSb$XkYX&@BAL!8&+8E3,8SCLYb")9'Lr)%%8cc*#jqTGXJ*
+
+[T93@&I&N-[3QiL5e3KL5XQm1%'qCX(5-5FG*kH$-P'L+1ia5kELC'iakkBK*ajh
+
+5JH`+e4(TD*+1FHQBN!#1EE,B5VM$CdN(E`,bY8P("d&rAj*emJh5QDL'#$l`$E0
+
+Q[YGS*DS6Y!E9"%&hXjb3!&5C38)@C9B5"$IA)Q)PFjeSLU38@)bR-6X*@p*-m64
+
+Q2dpM(QAYcH1#RD#c8Bh61HaKB4@PrHYB!hmGFrLEQ-rI3A#M2m9-rRjD'@jYliK
+
+VLpR6C'`efRGZEdp%`e%dA'DXThjMr8`LE@!f[,J*N!"$'qXEd0p3De`lNdCMFZC
+
+!(Sd-fZ2)*Y'mDm'KKr,Qm&*SH1PRMXE'M'KU9Kr2UPP@Dm$P`!i$acDHJhF6Fl"
+
+Vh3qq`RElRF1CP6dS(,,fR%p0EP$3aeZ(2paKmURpT0(9ZLRFdZTbBkUi8TU[$R8
+
+j-8IFiGMNFDMYTMRLA9dlGRSbL%+C6k[TFQ"l&j5'20MV[h2)PPaf!frkZKNhe12
+
+&RY2U-6V[KU5Rp$9j0ac`1+`XKrl11qd'rA9fYHrSPP(i4*aAfZA!hCCA1Zb5$-h
+
+kRZp5GA-XqAl-8r'k[0)R2BlVjj4@IhRNPGBIGJVZXS+R`B&VY1"TRR9L4QQqM'r
+
+)h&+#cLXpjDQiF9jTA'8ZKjT(Fl3QSXdlP&m$#bUk(,LI&rcUN!!J#FPYTJDmF[m
+
+YE5EFLUj#Qr-UaMb1,A0qVIV&Vik)I$2RPABjN!!+,#MYN!!JkmPY*Zk6ZhCT-q%
+
+'GP@m)krd%Bq$hC06@ZhZ`QEk[f3#KFd%$Q3GKFf%@C&QCCAQUi![FlRApBh`Xp,
+
+MRSVhj*AQRCIKZ#r,NBKhYqa5QkPddDm1"p+C4EpQ5*!!aH8fdq0DbHA0K$c#98K
+
+jHeC&T"8Z"riIQI@VZLi+IUf9[+EJ9h!JFbVi&E-LEI58PT%j2j2-)b2!R0*YRSS
+
+U*jK9'ZQ*br(BR0,)0jH8$YmDIkLqZm["Ppe`eamF+K6*Fl5fGZa+F"l*fGI#CH0
+
+`),9E['`b*-KZXrZ$FmJIm+VdPY(6VN,'j$VQ30j9f8ejF-j9q2G[@HPSamk%j$(
+
+)pKD8GML3!%8Z+TdK36UG94T*UX'heBXC0+pdpK,Prc(RP%BZjR*`9TY6@UGBqIf
+
+a2EiGkrcArG&`fidDmG+Tc-j$4ULr(JSh0Qk0GdZ8&@l9F80iYiYNJ-EGqVB&SJ&
+
+SX*Y[#S`3EBY(YkNK0VBR1Z%IAR"Sl)Uc8J$8qQ!UFGGr!*!%$3TUBh4jF'8ZBbj
+
+[Fbj[GA4'4LPPER0P!*!*"*S!N!m2LF%!$j2h!!meD,*mXQ"B3dp'8e"0)!!!Ydh
+
+CZlG0fEX!N!B(,!#3"J&e!!!KX`#3"Ti@#X#YCq6`e)kXRC'RK*+Rj0B)*8I*L")
+
+!-XH6#59(bC355JD8M#PClD35kRAN9R)V!#9(Mi`S35FPKbG(#8SS'9)bS8G34!m
+
+)3,aI6kL%%NUSC,)#N!!j*30kC%M*J")+3#M3#K"3#Z`+,"iTbJmIlSKU-4&Yi8G
+
+L'3iV@V11P96CPCS0%GfrqYZbfeEYk3Lc)#Gk+QcqfTITD&61[r%DhFKZPPlfCQ1
+
+'TF5HahmUrKA&+ejaA@[T4`Zi!-$f3`$lTkrpIeFKI,$r2d9K"i9IpZm+)2"@m&E
+
+YS9&[m@l`d@"(hcVVl1JrMBd@bG1cmmbN[cb6k)Pq4ed2-pR"`+j)k&BNdpX(L&@
+
+0@CK*M[PmL)c*hB-9k!aF05!ICdaZ(UcSJf0mlb$p2F--e#aV"4NfTPP-@F%&"$)
+
+'1X$dT+RV8DV"kCi$'@L4jpJX)"BFb%!(2FF1ppGc)!-0RR-F(af8"E)CPQ29@AY
+
+dFT&bfCh4GijbcS$q!3!!$3TXEf0KE'8ZBbj[Fbj[GA4'4LPPER0P!*!*VA8!N!m
+
+2NK)!$jbi!!meD,*mXU"B3dp'8e"0)!!!YdhCZlG0fEX!N!B9R`#3"JK4!!#Qi`#
+
+3"KKZ$-$i%DIF66I,fdHhK"'f@E%eIJhB2YdVTjaX1pIY54LK$6EEV+1A5BkYEF,
+
+fNIfd0C0&bl8"@C-rj8r*CLZRZBm`XJNRQe#b#Hm)[k3m3YY2'1&N2pQ%NdhBIXN
+
+fF[[*-I+-r$jbR$`M[irF*[XNYaRj6Ck466ECC*00'1'%r3Td!1F+[&kPQl#6Gi5
+
+6fj4`b5Dh#4Sfi@5mm33i,1#"'6liJm3rfI2EPd4@[b`LRj%0)X(E3#3F%BN2N!!
+
+d[h!N@be09DrNi)(D0cb0(PE*@ZN%cf5(#p@#j6GkLA)LEGYGfP2ZeCdGQTcdID5
+
+RI9cqDYRKdY"$$bbPXHI&,b26EH'*RaIUjqB#DCXVb,Tl6iNFr4ELN!$%4fHNrDR
+
+1qXPlAj&JdhY%YXd%aijp3@4cK%%JPhQl4AU2e&qG`MXhA9b2Gc!eq8HTEbM+2ER
+
+RJUHRMfDb1G6XUGHIU@f6$YEH0S-qka*-eU@qDD1XkTkT[icm8kfkmdG1VHqS&@4
+
+iFe5[SeiAkJCijhhpJ$1)`FrM(H*p#Zm)lc1B`eRf1iXkZ@FKQaK[NIET'k-6b)R
+
+"iqfCq[RR`9i!BmmkN`cH0fL[EAKhihdMh[hSD5kh%-Mdl+e6Z@R1mY+[18[N66'
+
+[0L0V01p(QRG!mcSdlcR0fkejkc6[LjVAP9Z3!'cZQp+HHecDN6HUHHZ3!0H'2%%
+
+Hk`d`lpQ,FZ#baSV3@+Id[J3Gek$MkEES4&p0-V8Ke#e+&aPehY$ih"1b!ESqAAY
+
+#mY"BIdrpiNAfK4jbLr@ADXiGPibVHecfYfVrNVA"mQ"ZrNYpk0l$CJPrm@BmSYp
+
+VHbUGajEpRElrj0mK0LrI)PQ0rre#l-c`9iMB`H%Ca0mJSVI`&F5cL1J[2,FdKaf
+
+)!rZfb@DmX5l)h&cILpM)Z4ha`iMh93[P4eYjpq9lhAMi)QH0[P*eT&3T&mD'*ke
+
+1AqmRA8ql@V9GVI(+)`8dC(AfpVJkKbZ[eGRhb+(UBliTbpZaHjHVY@pACC*$X$c
+
+1X+I*"p"5rpk"[TeAHVqr-&%BDq9mqK0pVTr2AUR6-eiTdErX'$NdjRe-Y1NYc8G
+
+SM*@M,X5l[!Z+ZM8(!iU`'+0Ha2i`$#4SD6[+Da@-*k*r'NBXDjr-Qr!XJL9MjF#
+
++4e0DB4Ea'1+6L2"F%4b6bq2'BH8&p-`2[N)VIdFVI"ra"F56L$p$E25X'SK1qfN
+
+&S9AQ&Q)&E+!)'bM#"SUiICMc&m5rDHAcrkKm`9IK%')miME%GX31c9[R+mFEPV3
+
+93lfZ!Y3C3fFa0"C$AbjR#b*eaXSlPl393hArdh2FreCPPd8r[("eMcq2#,f&,fV
+
+#cBMY0h%KV8GFi`KFUfadK+klmjP9d$dfLYcQ#"IY"jJGB*[)"eh1jlR3A!jfKqB
+
+m$(+Rbi&VdackF8qJHb@rEd`JT$"GYb(d*(P(f11R(1%X9QhN$,'EP'!c+H'j`"2
+
+X*#AXfj1D%@`U*GKA5V#eP&!a0cZ#r56l(B&Lj'j(1$1I!`A*GNH`Yc5(LYVM#2D
+
+BjQ!ID@IB5NV1'm%qmS458d)0H),YT!3l5XND)pKCRX6lMG"HH-+,LLI8SbHQRpM
+
+d%jYqBY02E2U*66qak5IqUT'['rQ'%AKZ*EL'+$PKj,Y'IQ$NKdCqE15R4V$VPI"
+
+Zj!RFTa)i!#A`!8VJ"T6!P5U"1e"bcSJT-cCP*UN4l"XPUifm``KhTLIFQCj`ChT
+
+bUj(h'rQ3!"(D58qiicbKII3%EN%*pjiRm!&+i018Q1B6dhaLQNp-miPT2RR-#1i
+
+m5QD-I-R)PiemaBKT2M(0*kEja$5IQ1B6EN92Z"8pi9Ed"2j%#Ib0%YlN2$(0*kE
+
+ja$5IQ1B6dhcbCb0r0I*h)kmDZG3J+6fK*kEje$5IQZC6dhaUQNrK!CA3bRX#2kL
+
+%2XN6q%-PF)K+621TD6iecDHQqG3dRq)DTH5JN3H0m-MJ#DiD5ZLl2$(0TkEje$5
+
+IQZC6dlbl$(P#*l6D%6UK$NISK'jaK%lSIBl3#GhZ#$9rKb28r%FGSHDl(D(QHdL
+
+Fiq3*L$CjLp$Pl"6HJR[PlAK01IDN8(RcmNkmcXLlH(F3Z20J%eeUX%AHM9Hhh)*
+
+ARQief-pl@9$Q96LBN!$Em*VPN5Ni*P"Q-#phiV8J(m(VT0b0eiXmE`DRjH2dGKa
+
+(F0DC-(Fe$Li)pN2BlM,f10GmPm[BcB``,h(fi+&b53edrC)%$`6Pm@+KA-S@UBY
+
+JUm`'@brIX$'q#"%H&TIVB'XHqIRZi*l,pfYdb"V`ER$*V4U,Yf[dcaVD9+Z2eYd
+
+D$[*D$8e)h(d![4lQ6,K$mDe&9ZX$a5E3'ZjF`KV1T0S(IIUCiH!KmV(P2P!$Hf5
+
+P$fJ9'qCk$6Mc4UrF'+c"IGhmk,USXdbSpajH2YhRpGfBY#CPKlK1QjZSj"Ac15p
+
+'V9&Ue-#QD0EifQ)0rAM-mfQAMcp,0E""rcRTl'5e8KbP(ErD4f0QSkA4b9,c[iK
+
+V0I462Ijl(UL"2Ik[HD$AiJ6[XGGlTDGjXeI8J&0B8IRprqN$0H!c9[SBF!lNHJh
+
+FG9Bf#Y`fYNCVS`M[-24+rYm5dZ@0!Lr4h"EdbGFfbQ)0GiqrXP&J#q#H9UD)'VK
+
+%V8`49`(FrKHR5)G+(qqFMD1[6r&#Dd,(AjmL2&+caVH[6K&1&Fj[CBUSJG[CbK3
+
+2Z6mA&UG)ed`rbNZ)TmY6K(0V6SMeVNdahkVa[DY6T,GqBbYMFjG,01*[e-M[jCm
+
+$r&Uq5Vqe0aPkA!B('dCbX!Z`q&#P8KUV$TD,if-2Sp05eDI,i1K3XIVS4"-mD15
+
+`NDTNI6QY$SFaALil-(@`-ZV!'*Imr`%!N!30#'eKG'JZBbj[,Qpc,QpeG%C'+@9
+
+ZFf8!N!R*1!#3$`q6p`!2RXN!$c9SXRbbi&K$6dC68%dJ!!#h6GQmYdhC[!#3"J4
+
+,!*!'!D%!!0N`!*!'a%)+`+dIS4*k%[T'9N)**C630d,*'VQ9r%V`C#@rNPr*5PE
+
+bH%SSRNV@)dHeb0%M6mQ%5YE,bil3*dI*V9*bP)c@#"STH8TZ*30+d%(*N!#5#59
+
+SS%G332(!ehF"G25-(#9(mB35I)35G&&J!S3(!X!ki--6pJ+aBIhj%B!G!d!@9V'
+
+Ca8C-e@hND&EheKSr!RMkl$Hd6XYUIE`K&q5`CGj1mbpGDrIlk[fAVj`lVG0Yhr6
+
+'ck6,5"Y*!)1"E4HSAK#["UmfRr+pl0pmD!`cMTR!6'(L"8!'-iFjNbC#(R110k5
+
+eb*XLjK*[bTJV[0%aehPMB'kQ36Xp[qa+6IXG@)pGYD`cl33)XX9+m-"+rN8aJ#L
+
+Q,%Y$I$qm4SCh64(*U0)0+BCh5G(!3ed4l[fEd@a@Q[@DkET'L%%hJT1F%Yq+N52
+
+'KFG!GjHaI54-3`r"b!FHFSJB$c`8Sr#l$m2C@F,eS,[hpq%bLK-2XE28a%-`bRp
+
+l6I)rcSq(BZMK2QTQKDT-Z!r*-!+2`mD1icZkD@F"mfkeaSpfGrqJYYF`ZCM6r3-
+
+!!!d*E@)YGf-ZBbj[Eh-ZEh9d4NBTC@jcC3#3#6JR!*!2$jbi!!qLJJ!20@LbI,-
+
+J@%024P0365!!!,G0fEfh6GQp!*!'#$m!N!B$53!!YE)!N!DYc3Y!!'[AV4*f+k'
+
+GNC@pPdH1VC'M&m'6BiCRGS344[$dNP#bPKfjP4bE5(iP6mQ-RTGG4pKk62,V4DM
+
+NmC3FRPiVHAU%5Ck5Cq6TND2ND@4!#50)B'6!b*b5'5-c'MP+MK&'MT&R"#9X"Ak
+
+mUhN4pS5C!m,)-3QL'$N'6!!d``)@J+K2D(lhk10lS1NKJ2[S"04T8U$DU%Qb8Lr
+
+9CT9bjG,h'@Sq!"'6hQdSA#!pB8e1P#EmqGSZkLYjh*5a-p)PV8baU2FBmplIj9U
+
+6ZFcXp)mahMQX""`MXV@UB+a1S'ee!Cf[ZkVElKZNh3@-1YP,j3I9kQGh'('l#lC
+
+,2Sl4Y2AB4F*X"SBABCXR#-SLB[CiYCS#HXdQQBXY9i$eP`$h[6&[aKk()Jq$pq)
+
+GR%UdT2hLDq69ld,CH5$dQ$IZPPR[0k!F`d`QAA6hddjp&DMP&I,-NTD&@Rm&c+p
+
+%Cj1,e4hl+I$2@pmBhl1YHdIhQlVIpAUj9r*6G&ZUMelbdmF&R&mrTDqjj6,[3fQ
+
+"%9&iZN18ERq'Vr1++,hq$'f%'k,FmQGi`d&4"[dC*K)6j4ielD)3I(5,`PPeAC4
+
+4DJCB3BY3LL0#R3Qk3h6)4!TdfaM$5HVb-+JVJ5LL$-kj+q+a*(iViV3Q6KZ)-LQ
+
+ChT5jYp,Yb"aciS[KL5rFU6LLeY5cI%iI5r8Ee,3UC+l0C5dk5k"($D'LKKVjU5K
+
+ekD9lSY483fQD6bI93#-lL5Cl8(T5BJBHB@i51r(`p'#2)$1*dCj()C22[DKP!qh
+
+kR$fB+P8Vh`49i#%m)Zc"Gm3HI%P89Yf%Z5BLI)9FYI6`EP'VVAV)bNc9N!$%q4T
+
+b(U'cAVKVMjc[B3BHjaSHK8aTCNlZc"[c5GHVEN'*FN6DpdMm)9dcX4ZN1DISCk!
+
+6KG9pdUQ!iX8$dZA!Sb[dQ-Z@CJSC)C3kT"KiQ%F8kbC1Jb+RYf5dVqj6A!S)p4a
+
+3h!JmVSBHZLKR+FN2+!BHIBF8GG'IM6)kT-Mjr0M2DDrESmLZ08*-IBrL6Z"aqaG
+
+&5L[kKIbPb"lf-8Aq%HrqT-JB4SiTXQZ0d*epL[3rUAX-KalT*pjkM4q!VPE[Pml
+
+9cX&Aj13VFRL3!%)brJ-!N!-0$'eLFh4bD@jR,Q-ZEfpeG%C'+@9ZFf8!N!Rm[!#
+
+3$`qHb3!2dUm!$c9SXV#ai&K$6dC68%dJ!!#h6GR!YdhC`!#3"SmT!*!',ld!!*V
+
+E!*!'*h`1!1[AfpYlRD@PRGrCqef8Zj1e50[XpNAEalDacYZRADbRfeLRPpGQRrC
+
+fAP[+RaBp2$AHd6VhXrfXLl8FceMT2XKlYPhBIVC2Gp`keYYbE$rEchE(Y[QahY,
+
+YQGhLX5kkdeaBVN"Aek$1kbcGc"+rip9!F[!)*,H3!#8##6cbN!$m*T!!'KjiJ!8
+
+m%5$`P%Ujpcf2hDr8R!e+K6kQXT8+$&6i+daAUQmU,HjIBATahH,kZTJ22[BVGHi
+
+4T8UVe-l!3GKcLkXUkLSFIcZA`N0+[59,h(iTAkA&LfTVG4lR`Srr6rie&9FYAV4
+
+f5Gb018IrFYAkX&+V0d3LeL+9XQj$f6fV0kJ8r)q89#[ehLD9Qr"2MIShT!Drm*d
+
+l)fdE!bTeqM0+K6qR8MEP4ABe2[Pbr@bPTVBf+P96'BNd9"kjTkC5TH"rC'BcBMf
+
+T!LA`RB28QQDU6-DQ$q-9K!#k1E+hj!DP5[,8V2Z3!&m6mQY)$Ah"bIQ"b#YfcXK
+
+hYmNhbq4d6M+R`bDRd[X3[c-R+h,-cQRk(V"X&TBl'qmr'Q0j+-Bb%Y&jRrL'NrI
+
+pi)YFh`aIjSiik4k(R5AVK-2Xqj!!maN1@cd1R689jf$Ae)PfrXcecIFR1HKkk16
+
+!R+ahU*6*+5T3fJalYBUXfc$2UArN89G5VS,J8B-Bc#X6hd&mTde1L833FliA8hS
+
++I4%cJ*Jck)ZHNVZZZZbHGF[leDeHVJlLqcc%c63a3hE-KXUcb6feT$`5F@TNCZ5
+
+)e%JP',HJ4X!+0E+p-I*U2HZe!(dCXDYB,p1rSe6Y3`VeXMpD,jQ6FeJ$$T08jYR
+
+3f'pU532UjADRAV*+VSIpHK@iq5(8c4LTQqhkQl%M%F61,2N-kJLeK0Vl,QX206A
+
+[2M#+ecDCEDa3@@#eGdZ&ZQ41j,Md[mP5MbV,q+b`IEbD%6l)Uk5M6XQTqD+C65S
+
+6hf8cVBjiGSbDkJKUmI`DpR,@9AI24kljV%[k4RYpR)'AYfAbrX[Z[+91RiiF*r1
+
+DaNJ%c2I82X1qGIjUeTrTeB[*QR9Dqib+-+mQp*Z'F1ip$5hpkQTDe%&m6fh#A0&
+
+3@F$k$E&q'bV(X4CQh)ImZZV"+QdS9a2Q9qDFL2&I26P0jB(CC(cI!'B1l`,YPiP
+
+[q[fHGlRKIHdThQBZ-Eah'mB2Hr@FcKSSU94jL*eIHb)5DAa)kL'0r3-qkEU2[,U
+
+--CRhUARPC+iR*'j(VT'Rr&arppVVZ4VfRcAXAqUYMh!TBQ6MqeE%3+a`BhI[k1Q
+
+$N3HkqQ"NrIrXJpC-REqe6HG[RFcIlK')0D8Je(S(BKABI5!qjrE'Ef8pT1(lH#R
+
+k5%&S2I1"rG1d)rI0*Vr0DrjhITY0ITY0IVHCr)lHS2-lfU6c1rV[r,VlXZNGEr2
+
+UE@T"6TLp-,fN-E+3!%cB3q$$[,2`r5RMHjAa6@81h6fj0prA[ZMP1lNJTrN*RC1
+
+kdq58$CmRN5pp2[F[HASpJ,@rY,G2@FY-M*0cLiRa9bB'HmR[qjhTLH&(HQ1dX'i
+
+4Sq86[6'NPb$'lilhaP"hkKMUUHiBdl#RQ9+T!ZZaP8V1GTRFj@#qBDfPB[i)-+i
+
+e&R09+&GkLjQcCjHd4#,6CLR9-##V&,dQGpU&D-3hkEc@ECJY1A'A-Ze#&9Kh8fi
+
+kl!(T-e@Q2UY1lBkF1C1qPkkI9Bc[`,V*&fDZ,X4F1KRc"rC+R%[Xf1el*M2[F'l
+
+JISBc6rKT95EcYqjI-XG`lh&kpr+Sk4pRCUU0PXUfGdXkYpq-C'k06jfGf@5T"AT
+
+ZDT1jlN`qCMFQqGb&AFA$NY-ZlQ6Xq)f[RCeCmQdXl5a9VR0YNrQriBCA-c'l49T
+
+4#c@S5CQ"@c!$Yf#(d@*k1r,F$(qpZhMT(V0A1V-c)iZ0GkVF$VjYdabqGkTbPr'
+
+[RrihaY1a(jPq@(,DbCd,kR+TcZ'ehc%(e'f*kI[25dlJeJ3Ik6r0UX$i#JHbm@T
+
+fPjPA#kDrCZpCAXZ3!$M)Z49f%fHrQ3eRRq4[10@XNaR%e1"[Iq(0)*YUlp)l#1C
+
+9HjIH9648pMZ21`Ia!aIXMEJVU-%hjk1PNmH)[4cIY*GKMm&qQ)AG@`jm'MQr`#E
+
+p'Ymh6)qSTaXMJaPr#ha6B5qpr*PCaFKcDZdHj"`H9@pQ(EXRTjbUkC0-rdPU`c$
+
+GmGqB(LYY8KZp(3cf,ER4I9NGGfKklbKqUFC[!@)IdK`MZr&riq@4e"RJrPRNN`e
+
+l"2[4Tf'[d(@JC`4m0rr*!HDMNh@FDjMA-&HEq9ZH8EPr#U11fbl`Q1lmlh@mkA3
+
+GebIVZ2cre$&f!)IQ9fVZ*AG%$[e*!1iApp4bT+QRPL00I`UMPPpHpbFcDVR*Uq@
+
+QIq212F)dX)ArK[ABadGh"@EQ,bhSJeX#5j@BlpaTL$1P4HmXTQ'2crh&E6G,$VJ
+
+"@&3IpIPI-DIG#0[RCEI,QXXR&f2,`Qja`H[aj&CNUGipf'c"J,'h)GH'*11jm!Y
+
+iI[B1lR9Z@A%1*BMcqhJaTZNf8r#U)4rH*$#Ifc"EarNKekBNYhRr`5flQp[Vl$a
+
+@$A&'0TI%VLMlpAbB`hqp#@U62FDrh`6j1AhdrpdCZIZ5(G2[J%h[6-UMZb9hCp)
+
+QYd@aR8QTmHh6[60aGb@rPKe(E&IbD%2$XA3`QR[b"ZQ0R8lEq"LIiA%qFKqMpcD
+
+cG)aIAjRJY-2M*2[R6Nk[lh35qlS#h2@`TpNj`MB,p`4A-5r$3@iN'N,(0#2iF,H
+
+YI9rq9S,42X2JMcXqc8$Zh`b(Z4k(8R"Ba$fJb99k8N2S#$QN6Rr+m6X[`@$rQAX
+
+i[kG8kITkHA9(cEjFNHJTTJjHqQUF!A`,-$IYG1[e*Ghr1ZVe`*Qq%U[Am)1UcDj
+
+ChRk&6i#&bB8XC!mT2#+bhfPmjY9-YbDFQE6DMI2DZi5aQm0FjR0kKjV9d$+f[JR
+
+lebN2Um$'*jADM"QVfqI-$Y6F0jLEPMfSTrPc)Xp+hq@Z(EEEl(SbIB&lj2QDfDZ
+
+k$PqrRqLk6FaPMFp@!F2pf#e1E8YY(VZaUlB$XJHhE`FaipGKAl!EhqGaCm!D6[V
+
+1XZ21LIcLahDHVHJ[V#RZqq%RIG21Yh&V9JELEZ(Z!rAjLQEdUjIX1k-jN51rmIB
+
+Kfc@cAdPZa[mRR[p'%epkN[Cr)@$EA1DrqS6VIe6[VHfkGjQN'5C91UGIbVfHI6-
+
+!Zqlrl'PZhdYhqpZ*6BD&1rrSh$[QRkUXhKjB%AR4kG@mlm3G*'mA`D5Y&@`DFV,
+
+BKrIDpGA3mUKp#lFEhkc(NPEF'bCpXfZahf%00)CI)HmQhM-LYcf'Vp`@k"Tj6ZB
+
+"TmCN6rA,phMqd6eFMBN[YkA#AFH6[Zc8IBZT-Chc2"hc(qA'6qB[LIQ2PiSGFp$
+
+0k2HQ(kD6[DQaihB[FMMVHTTh(fURXjlX@e"66p-AHrHJYrqmI[Taj#dhR2Bp5+$
+
+-lAAY0k%lb5$KYm9`I*2ARjblCGDEi5TlGq-[2AdkkU)@Yk3krSYkrRAUi%@T0GD
+
+"U3&cLh&%HSZ6'fS*2T+ER8p$cL(dL-KNlYYXPR-L2hIQ4XDe@F*2DV5$a3[5Ded
+
+@,mMpRFF#pjL-rE5c0f&1Y@(aq8%ALa0E'+mf@UZ*qpIrU08&b9VGPDc9VG-4fc#
+
+@'Y8em+cQh9k[,dL0'RmpllEAb0'[G06)dFrde1ZcDl[UpGRfqMIe@Y"4ViGN4ZZ
+
+Ued25Sf-XmQ)XG$rSV0G$dU-kk[93HrfEHVhp[p4VE&CK[A,Zl+P9qfESD2qZ@RY
+
+HjVd1TXrVrZF`I9l[IebQDDCZiUcQRTN$c0emCfq"dN+-9lfZhqIIEh1Sj5frCL&
+
+l"*ZA1cHhpjT8k6@kCc[cJ)jr4'BVBBPEF@%j4PJfe6ldVh8Ae94i8"MZ-VZFHTI
+
+&X5L,UBD$l'4d(hP''(!fiibSrCq8[S%mFYfCrJQjQl0[+ME$6mGk6[HrMMe8bjN
+
+EXrr,l6QCp`dhQAmkZ$dK04VM*MADaHeCh@[q"cHlcb&Qc4fiMrLmSlZ`BlVH$fj
+
+!,J'cGjV+'ZE0"QcC56f'G0aSjT)*BTF@M*DiqFPB[1GNV%$M3q$0[EK`2#KcXf'
+
+UqlrT,dNpKh,fYe2p-FVi-f#-@m3BieQ0GdAcrjRXVrkSHr%,CiijIAGjpqrCF#G
+
+RlK0Qk"Z%J[CEd@QTf2fh1VFEq5AlX2Y[M84ZJmrQ[EK9pIb4jqi5F*L@UZq(@rq
+
+1XA!Rm"('3[l2i6i"[Jhp5R(c'MRF[9pMr4XGNjh62kYh4AqXrACpNfMYChA8p11
+
+bSp+f`hVqkHK6QcNrRY)'m@VBl)jN[M'jk6R8QDFHehXAj'ld-1D"Kr4"j#kqlLl
+
+iX1aNB[[lJT*Gb!8eS'-qjZcN[,ejU9X$MhEf"lG(2+2RBA"Vb-EHhBSdQ*hkbCf
+
+1[8ZeEeA"H#rZ8XZi-`@IHGLGb)bXpkb2b@e9A"-J[TGP,XKM0f)Z3%bjVA2QC1S
+
+Nh+8#b'm"D`)abZC%(TAqahU!AeP$&HjdZIp0h*hMaUE0k"m8'2d$D+C%)TGZ5*h
+
+aY[,)LBVPVfkBYJcXUkmS4XeX-hS+L#9k#V&Brra$,eD6dCh!lArcYEL"+MHk'p!
+
+j%0f0c'P0k`ie9*mYXa2Lc62D"XM0qR4AEUmGp(+$VS"SKc!ADSF`PkHpA&)F[Zm
+
+JAlQ03dbj3Fqfml)@"@C-@hjLYmPT*rajJjq,lbX34qkE+MBdjhKjEB)[EmmBicS
+
+[4UiAS`DqZ5C'+@2Bq8kl1V,(j$SA[Km`-FTM-6jTBU!1e28Q"Qm"Sc'Z-M'%XkZ
+
+,G!iQ$0VPZp4mlp$I!HJbbIG'r4f%"T0m'rm3,YEPHlIjaM8'[e0+c2F#m`d0+2N
+
+frRd+c2GFmle6IrI00pr!*0q3!*15Ed`cmYfQ[rY00GqEc,Ia5m9fAVlaAlk2kHr
+
+qQHEEF1P[Z24[-YqB,Z6Ej$R!e-8!%fI!hITl)+BZq6Cq!k%aaHmd8cGTaMi)N`5
+
+r"frAhd0`[FA[G%`lr-kBTlq('Xl$$2GKTMib-FA*Yq%a("10I0ISll--cl0-RL0
+
+-rL0`,F([,&1A)k&X)0q'lbJ62p[8kaJ6*pINPf[bc60e0GE8jcLS(XQhiCY[H)i
+
+hIZ1hkHm**Zi%E*r`[F9kKlA@qT!!0G0k9rL6iG,`1m+c`ZH(CiI$i4[$(`N[XMi
+
+3RKPqCrKGiAH(,`KI'*iEIQpiA[L5m2c`CH'bm"AK"H'V`ZAKb[$Lm*,`X[$9iHA
+
+Kk[#+m-V`kR"Gq*V`GH&ei4[#6@%Vh"aZ#Amih"TH(liTI(0i3rLMiBq(2f9GD-e
+
+4DU,KAf$U5bQVe,V!@QTYXMCDRl*ZX6jS,E1ZYQkeVVIHD69BXkbVQLpURYGmFI-
+
+PcHpVRYpmDI0PcCFhPeRR@qqf`TCPY9LcV8mMKaA@akf9eNA@aGCLDj@eb+UajU'
+
+$EP9hUXQU@(eH[9909hqKmY56kLPVV[8HklhU+R@$@QKGBVh2QQpGDPeQA@k9@Hq
+
+hVP$EV3A@PHTFDk&9EP@S"U[5UP,PDU+e4)e9"DV3@Qj9U`qS+pAeDTfefPTMe9T
+
+ekR2U,ZXDUpkkeVT169,R@1ZX'ka'UdQpc@T@-p6EV4ZY$eXIX9UYpGC0eXh@"ZZ
+
+MeXI8!T9[IF,kT"U[aUN*UJKprMqTVkUleGI8&pAAeCI3llqX[U'qLGqpq1h%le[
+
+ir3eqpq'h#lrlmIXfIYr"EcGq$q$heqT"r"l#E`pq$kZr9AqRpUV[UZr*lr[bfbH
+
+r(mM[Kr,l%46KIUcqA[f$1S$I6r"l",qIUNI9BqTap60e%,q[JFJAe"2iE6%rfq2
+
+VB23Y4eZ1hjK*#M'r&'+Q+*b#rqMaKHL(iS[q@SKH@eL'rqAiM`[-3[6!`RVm4qm
+
+[4*mYa'a6Z"RrYq!rqR`KHRBKjT&#p-K#p-0#c#k&MfTpZN,d[d,-&)@[+"34rQ-
+
+q+J+()M!S!S-L-#J#Jb)`+!+$)Z4IK2b,N!"r%I)[3[j&b,m)q4FKrb,NAi6mLj!
+
+!Ia(b,d,q4FLr#2NA)ImLj&q%r)Z3!(m4mTr-R-'J#!b+`'!5l*2!B")B6!+$5@!
+
+`#3`QJF%N-*J%"T2!B")B6!+$5@!`#3`QJF%Nj$!*1FJI"ji43l$V%+cDFSPM!5P
+
+elQf-FF#f",$ReGi"c!M'j`Z1Ma-Rk-3*BPZQ&SVPHlC2#&c8CB`6BSlAL!8cK,T
+
+@,,LAdA&5k(d6I9*ZYE0)qC,Yh3G6RhU!hRe34qSIa)+U8EI3dKFcLMSN&P5EHNN
+
+XYm2b,#hpKYTCp&[M@2lHYU4LhY-48c'jkBMp(lHp"`3Gb`FG#kIP@aPR)1T3&BK
+
+P"Rbq+aCQSAe!1I#)@1kaBkG4N!1mde$(J@I%!VD"E@,",'`Xk"Jkac6d#@dCa#V
+
+qTPKBHe)VJmqf-aZ-2U+pKj!![(J2qERYRFk+%qm-p!EYRH&3'AUKE4Nf`E%mDeX
+
+b2qPBd*FdLq(NV5fS4meX1$UEX@"'0GkBGVAP,23UlAd@ZT@aB$BehVL&0KE-qGT
+
+l"$UHpKQ"QM)qV#RYmk,MJlX0EFP#Ip6H@3kIV'CdSkq3!&i@q!5hLJmk4c!XPTG
+
+YYL-alq[+()N+#6iX&Xc!`EPLq4Zl*ie%RHPX4k*MDm[Ck-@krj`0YXC#YYSENi#
+
+U%3XTDapf-Hf$ZGViS0,9Bf*KKp%qb&(lM)*"%ahPe-8STkC'168ekX-fU9(SrXB
+
+(&D+cc@CXmFR'2X$iJ*la`5aK,1a*NQ-fHj+f1&ea0)B8(@Fd#'JqSc%M'"p-)FE
+
+(UHr4V'"YB5I5hUK(Bq(F,P8c'[h#@$#hk)KMd$10K6XYm4k$lC!!XC!!Ye!CJif
+
+%*M#'ZU#5f4LR0q5`miT2$XMVI(,)89Z`46$H$VdFGR,*-BI-Y)8p6NGdqR)1ja$
+
+YlG$,R@rRRBYZBLa1$H3kh5lAkG"jQ'&dR$af-@eK98ZF2&!a&QF#bd2H*Jl)Uhe
+
+L3Ff(-QNCbjP)jU5a$Zqa9pQaaf*1dV((1[8i&Qa0E1bF6'a-'MVf1'I+'iIj3XF
+
+Cje4$[M-Rj50ElCf2QM,H6Sf1GqD9mCK2GCca6Pf-Ip$aCNH3!'imRQbeK4e"Q%e
+
+J4p!@9(#S6#bX-mPL!LSc1&-XQ%0dl!QFJX8bNAbNldh%e+-RJ`*-a-Cb2VcVD*(
+
+G`f#FEDP#E1*#'m5#bP5MaF)XY!pl%Xql9#%f8-D(Fq&jBL%IlF-CS93Xk&h'Kpe
+
+cMPJ`VaJIlM8Z%`[UarK`UPJX&R4Cim1jZNBXk$A'KlfV85bBCS`2pJ(U*V'JTaX
+
+IcS#hL!8Gf[LJ(Y8@XD$M'ap1,Pm@#fV8q("1rkCB-"dC(dlG$iL&+X,D"a1XfLF
+
+@G"MM`kRR-E'`KfJIl%68Xf,""Y2iF$*i55bBMS`2GLEUZ&L`Q6Bql-(pa)+1CAb
+
+`8`N-&3ZUhrK`CY0eb`ffpQ(he(@,(QGm10'p@5cS1XB(1jR!fm@#lQjm1!GI)"C
+
+-SFD(dpCmX@##06lX@![&JMP%qh$j%VKD,1M3aSIpE+eBX)d`2Tc8QX6Lp"rZS!)
+
+hLmAT2pa*"@i9Lp0rZ+-+h#N@Trp`CaAB*KDRrh#(&EKA,%lri8iVm+"BR2l$(9I
+
+J4f*aqJphAS'$BR(k$hGJJHI&i[3IlX3#E@*aqJphC)')@*cq`jeCF)"BR2l$(9T
+
+`Z&LFrX1G@M"A,%lriBiY1%NX6[rKcLhijf*aqJphF-'CBR(k$hGb`EPLFIS2Gh6
+
+"bmALp"rZl)+,a1,d(ql`JL[%i[3Il[5#p@*aqJphI-'`@*cq`jeIm'0LFIS2Gi$
+
+"fm6Lp"rZ")0EaH,d(qi(JemALp0rZ#m-IPXX6[rKrM$iIE%irBIla1!MBR(k$rH
+
+,`DI&i[3IlKZ$,iV&k6rF2`Cr+aDRrh!I'3U+aHNrh%q'"SR&k6rF9iE1&S[6IlL
+
+r$)dALp0rZ-m-64',dhqih`a0&i[6IlM[$*d[&UIrF2mCZPJX6[rK2M4dP9LFrX2
+
+pD'LC@*cq`eeTk$Ua12A$h@RS4V%ip5-h"QPLiG`[hHNFlZ0'LBAlQJPLiG`UXm3
+
+jU'!P%m3jh!r)h(!10a3b,Cb$#PCALJ8%9+9B3%#Y&![ReR9Li3kRPCCLr&HI%JY
+
+Rr$[%`Zh'&mA#IHB1XA##rBjB8-(UHf,K"2Y6XA$rFeJXR'"r*4C8X(T9,*`JqSL
+
+&1j*dXA##%-V&U1#!8#lQ"2%QXA$M0N-XR#$H,4CZ!#i4#bF)S9c-2G&5XA##U"8
+
+,Yb8hL)86a(UaS))$Qm6##H+cBZ&@kNYLi36a$E&`al4E,*JJ!Mm3#hG@MiX&%d6
+
+J1E&`br#b@$"""&i6#rGlU@,K"$&-,*JJJQ2%`JQL8#bB))*6aF)*iLr%JJNLH+&
+
+B1%&F+KC-%-&bXA##@#i@6"$"$iQ&%i3P&N`33HNQaC`J2Ld@6"$"ciQ&%i4-hF@
+
+B))*I&3XRL&eLi@h@GmA##H+!@0"rJNq*K42%8E'Jr`4r)aEdRj!!%JXRL)&L3Im
+
+*CBQ&%m3iXE!$&SZ&(A#D@0J"CiQ&(I!L@Xl&rp!#XA##@#)@p*r3'V&`JT!!qHG
+
+Fp*q3!%`pDV#j3H#@+"X`X%8aJ[hdQ#%Hh*NS95BHj3VDAkTHpF9AJqU(,fKiiHY
+
+faEF*E&(XFHG*[,d5Elr%1b6aMURqqXS09Cj2lm"NHJGQd4X#HFJQ8-CX![A-*Y!
+
+JfH#5L21aa0XKmIC*[2d5la$M`4AaJLN5lc,"@D"3!F%CM"GF`!Z,B)h%U'H-i&D
+
+Zl)2Ee""mE9IXaVMJKfdr8`NH)2AJBG)+(Q(X8#RMK@BcAUK-iR%RSd)0M"IDcP`
+
+9ENpK1b3fD0M#GS6H+91PKQkK4dUCf,KA`I'UH1m5Mbq,a`(a1#3Hhk4(Rhba25#
+
+ff@+61kSqd-2(eeEaH%`mpY'MElTim$j!pCdPYTI%9L-fcLQUEiY%fNQ2!1YAp6d
+
+Q0YjLU(j6a#BpS0p'X8Repp-ahNaEDMiCTjDb#P2RX[j5jl&@!QmAldhLIEGila$
+
+[RH*pJALr+(PJUX!YKp!+,"5E9%RJDV&*P36@LUe"E0aXUIjEa!Bp0YMfL)hh+,`
+
+E"0(qamAM6RS-5'2G$mKNT3kBSBEKUj6[CaK3aZk'AX)B#mKT3,e%DL+Y!4[B83C
+
+X*Ud"@eRhJAXPdQlQ0f#[4'SMd3'[#&(Z409!k@3$KGr!fG+IIL4qpH,A+Rkh-pH
+
+"ZqNpF#pc(5MGDq!"kADF4e8DhM5!Vdc'5p0pmARaNfT)fm#-dqjQ$d[EcQk8YS1
+
+p1fdr'DFG8"Q)apP8$8TRIS1bQGqJ"B`dD#RleU!DK3SI9+F`F3kU9m2aeD)`F`j
+
+U9GMm$YV#bKKdYm)Z14#42!j,(XHBaq#jl*U$jc(M`I1CcH"b9YAJ+QBcZ%DGKDp
+
+k04*I$6b(',b*H3bqRD00N!#A5fV`SmaQm'&Q-b5I9)C-B4j$5NKPb!cQ-D589)E
+
+-*C8KmdKPb&*5'9,$E),`K@dEmaLbNhQNCj*+HKDTT'FcQr3#8NQIc'c55dJP[C4
+
+8dQH45RSjmdKI+P6N"MGp+l0*hblC(#19p12-)b1&9$*5Q8G''UPNC*&+4MDTC%`
+
+PPB`C3S9,'j8Kme"'#r2)1%3U'BG**H1)C00'+KQ[-*ZK+D3b0)e8KUD6bY$*c'2
+
+S9+(bjmaQk&afJU(cf31'bS`e9(V5d1h-E1JqCMEd1#Yq@$Bj$FYPIX'CM$fXJ,'
+
+(PE#[$*1Z2'`T1pQ`&XBHYSQ-KfeQcaKfJ&'((56GBBG)*FKE-M9-TTCKajKpCLU
+
+jCZD53HB-CT-jPpPNcT1[qF`QXjk--k(ZLDm@8JPHcMa`4BXm-Q9'bG`PfHaK0X&
+
+&iRe3[!q,Aa[pKUF`[q'T-UZYB)cK8aKMH!PM$*mY-FSNKTlRZ!&A`bA,iAM$!lj
+
+fLrG"pXMK8SA$TCVC"K!2HJ1`69B"I#dPdE0D'1qX9QCcePE'1qYZQ3XraNJMC)B
+
+B8F"+'M&CCX(Ea%rQi"%Ea(XMUBcB4Zm4fi8+pJb`(@5@)`ia8PBQ-mLDb[bb5TK
+
+IPR63,*NMJepR[+b0C*De4IafXiDb$V0EM%aKGBl-)X+4NpQ"4NjKj`K#,`ifQBe
+
+'3Vm#AaYPd[fqq"fMapR('AY8'Q12QXVBSaC)l%FBBj4-*0RPM*%Yr6Yl-f0NEj-
+
+B6c0'YXbbfDq`9NC,(BbH6G+MTD1-PKPpp"ib'hf3!#a(Yj(F'1QGBqDU%IJUBdj
+
+"lY(8'1%dCLZc'50ccjK(QFfB9jK06KDcb5PJPH68-CZF$F`QCbZcbGR"AT9cR0R
+
+NTJUKhmU5SS3jjFjM6VP9c#QhRMRP5NhRhXe1QEY$TREZ)P6Z%FE,`cL,,kR,[!,
+
+'bbYP[,aCC*!!0jm-mS4"AK-CK15m,fmEDcT20K"jXS()1mi-aQBaJl&6'AYX#@1
+
+(H%QMaPBahYKUaK[E`RKMC4SHZerL[5MaMNQmmB`h,TraaLeJ[('YM$4Z)b10fmT
+
+)irDcFi`l3+)KhUZSI'L4i#ZG422c'69r"V2-,bAGr'V'cUq4lF9dLGFUIT*6[Z5
+
+8,a0NrNl@4rjZmXlI)c%1X2INbdb3!(qBGCcr)LX[raMp!!Y65`MA1,$PNX(i-QB
+
+r[SUaapH6h2K0c([mCQBCZPJLl5@R#62)Hm)XXTb`J0P2+'If%kUBrB3'e[U%*YC
+
+kL2G3DS*XI5EXCTqEX)mCK+!S!9XEE406QII%I&+I1)ACKkkMpm3&M$Ha9EchN!$
+
+ha--N8C!!cV`,FTPV##U,X-PqUk#+N3UN2JUNPaIXPhKYM&HBUY+,2lLX@KC%q)Z
+
+F8)%PJ4@,DZ[@,&ZjT,K5M3qm9Hd)[,Apr5fSLK$qie)*Vfi*[29Hq0pEJaM4YlG
+
+`Fi3BH(d,AYcLaBLqZ`9d'--NjHAK[EQ&9C')B4a3'pL,)pIPM)&B-Upb'q6q)BE
+
+Q%@3-ml+B$*RER6pZmFJe0bLG9$D%qXrH&qUSaUPi%Bpbh@TBV!RTcD$*S(La%b2
+
+ELr'@D!ccCkHP#GPrKUBE!hYrRc3k&bi#hSL"Dc+r'YMKfIXkUS(E4ldVlDd'kCL
+
+'Y+l4VQUBiFA!lVkc'T!!)kiCI)U)JIXhRq*%fFC'+E+"mCT3ekPTC`Q+C4iKf6X
+
+N+'laBXKQ)8Ea65GVZZ-2N`ZZ0Ac5L)'V2Tmd+fe(1fPZ)0mVr'eV$qQp(NAHpA@
+
+6E[0L[$p"qPebDH*64!cF)IS8HE2"UFqPb1XqAXl,MPbX*bPLfqi5ZV+()VEYEJa
+
+H)FBTJMkZC(b+L)(,5CrL4D*S%kI)bhMCh*qQ+"1i)B6ENQk+Z!&`Beb6S2J"ZI$
+
+a+5)'EMepLPH)(Nq8)JPb1km(49T28X4PJNX)1Q8R+@lhBXJYJ4eMiF,+ZQYVl&Q
+
+dCajbBq##b5H0),KYHL-'VPcpDX$e$e5*SYA!qdrDj%k#eQ3el2G)IlbR'R"aiFD
+
+!8QeR650(h'Aj&"%$GlNqa9@LU45E%J*rKQqjlHLG%R!(iK+#$Z0*LY'DjU9iR#*
+
+[fVYUZZ0[rEr'J%B1EY2mDN!-A#6leB$E#LK,4DX"0fLieE%l%Uc*DMMNNIjLXKU
+
+L-H3H)eB0e%`krJH+L)%EDTmLUK'k@2'DjL3R&cQRDrU)4qL[HbMLYXH0mG8%4@M
+
+Ci5E3TiJBZ2Vf+D)h308VAS[FT-XY8@mYiZ,)*B6EYT-8Sc(NlLK'%@4acqK64!c
+
+FUIX8F@8(6E,B[L'`%Ypbrp5lEm#YP%Y)p)F5&(Gj-Hj,8-61(,HB2NA%`'@p6a%
+
+[mS+L@T3LYU*bSD4V"pBNa3-H)GRJ*bK'qb+Z$6XTBX121e+I)Q*!#m#R#"8Jk-&
+
+&+A+l3$dCZ6DMYBFLEY*F3Y"rl+EB(J2DRjd8-8(J"YDRL"K3,r!TBKk#QPfm,h*
+
+'P$ZjhVk)DcUA%29jZLP'Bk"H1LRLNJ,hZcj&a)$HJNra*k,&&kA)beNU,-PYRpP
+
+eG&2%fh`F3Mp)8YcUaC!!bl3B4HUFD,IHQ4)A(,K2pNNM"P3NI0)[L0TJR$3e6H4
+
+Qm66TI4j&+N3P512kdBh"ZqmiD9Y[kc4TlLa`Ihf'0'0!'q--k3!mSDFBld`ra,G
+
+FC2Cf*YaYZK4rPL3GMI&%&qN!,LY`1qj64!bSHIJ8FIm!0FJS4GkF8fe)ENPT69+
+
+-6QbmXZqQ')fKZe!(4@cCFIIZ8d3-k)ri&(%["#h,q!i!(8II[rEZ!(!Vka,k4C)
+
+LqjNGilN%4HKfi@EITiJB8%ca+H,`"NUFm9UNMSPFlTkZa@-HSD0*LY%BFUm9S`K
+
+G!HJ0q"34!aS[2N9F%%0(0%S4'hKXEFh0XGR(*bML-YNPp+XHLZdaG*rYS)J,C@J
+
+Pq"34!kSd2X@hL3TUP#+8%),8KG(h(l!Q+A,cE415Hpd%a@L-IdT3K')$G"jmLSJ
+
+"(4fIiVY&`c91NCT8FZGpQQ+d@r`Z56%Dijm6&+&`#)d+Rb*L32R(TiMl-LM34LP
+
+5ViBU'A+2EME3#BUiBhF)bDik34'Al@i-RAF(4GbT39r$TiJBd#Vb+H)U!rUj8BV
+
+8ZX19REkE0aFCh44C`6BKlGj&dCY41!ee8X6G2E4"I)U)!A8PRb+Zmk$q'jYkJp3
+
+'d62@UDNAZJ!Z)6d*G&'-aK$aLKK&h(Y!em5RL"M3Jr)TINLdLq-8U@%L@J@p&+&
+
+Si")Dfd1a2BE1T)-LP%qJbH*64!`S@2N8FHm-jH8i4@UYL-V#DBVH9M[!'l&ZLY%
+
+BK3Q+8'L"RSa2%6%SlhD')Qj#S"XGTdL020'(1%h4ffT$Ck5(BM5'L2I%+1*0)0$
+
+#m5NL"P6#I)Ui"S,UGC`L&60&fH)d4Hqb*+![jVSS4Q2SbDf$)ZiVS12M8d3-k*V
+
+j&,'PKfChR#)Z%,3QafQ+hLeJ3$31%K5M-DLq&kH)[6mdL(b+L!%P0TmLET'J1"k
+
+R#2jD6H3da6dH)EQT6P#-aX#@)%j4iCS)qNRq*K8aS"hREe,4#k"l%U@)QJRbkNS
+
+88'K08[3Z'J2*fdeSUEJahTQS4DJI3I[*VdA%J0UGAiZi(i"$P#+dTDK3V$9DD1f
+
+K#)8APj!!RT!!1bP#lF@0S8rQ1LKLB`lG+TmLBN#IckHSYHUM&((['Z49YqM(Q1[
+
+AESU-DK0U[lRd+(Vlqm$U"%AS5N&cbkH)'&!8p#Rq9*6fSa5TbNCG3p'jS69*N9G
+
+L0L%pPA94I-@,JBZR6SVBrd)[c+H)'0"!p#P#Z3,[")K5T"SGCJkYbQ0ZH"-8SH2
+
+M%V*k+%,IaidK#J)aLRUl5VIH#`0XrD#(jT0'$#JlqU4r,5mKL*+Q`L*ZQV@H%+e
+
+*d[8H4Ae4f%ADZeALR0j*'LpcqKI53A#$hYXCdS`"[FScT)085Z)eRNZDDS*300F
+
++5E6fN!#'TT*,N@Uk#G,3@R*M8!8e4MUSYqXqDGc-3mr1*idB81(d5@2cKGFX4%P
+
+6q4GcUGCfSM9*1MVVk0[M,Y,4QNlFA(*R#LdqRb*L3$I8TiLG%GlL%+9)(FfrYC@
+
+Pc'e1JL+dUea#9*908)4'P4ZMrHE*C)pH$ae"Rb*L31R8T`J0",`N)NS40CL#UaQ
+
+YD'@fppd8H9GR%rTa$d9SBlNafUmC62Di[i-'SNm4-D$0kP2%p)jh8-4UN5r$d(T
+
+D[E8)a5kA%'D0EST3jR*Lm2UKNb+f[Y"[p#NL"Y4NIBV[NeGF4#RLlL@&QSjDDF0
+
+FGR94K&kB5dKICRC5K#+B'i2AhR'+Q(bK2HP64!cShrS8mD)i[%%MAS[3ZGFUBVf
+
+e#*dbPe"bI`Bp-MF'kU@6)R3LS*[T8d3-+2Ek&,'$`!XkBVAB"`SEKXbT@S4+QNY
+
+)0-+k+%)(cBh4[NX`f8-E#*UI2NA%J-D`6a&6(Glr%D@)UEN2Y8Ee6Nc2d!Q+8'G
+
+c#E9[-Pb+8'4cBl5V'ZLr!0l@!,e5I`H!'&"&pRF!Q-,aHT%S4G`-pk%fUGijk3[
+
+L"%ASa,Q%fUGHMk*hLacm5S)LVMQKYHT64!cS12X8X6A"fdZL&0(Cqe)V6RF*d93
+
+l5G'ld3rUA9XR4@M5Z6(`4Tr1MS)02(4LrBk#'&#HpMX+0#+JH4HlE1Z,IBa@[1Z
+
+pE*1S0L&4F%Y3p2E+d-cSSSJp$M4ZIBU)!DeXRb)k)0kp%VZ9l)ZlA+h*ehXV#88
+
+rPa"fLGd8SHlRaQLr#MACiriFqV`q4F5!ZVG2m42bDTFi4DS'LfTJ,d9S$VU%m'+
+
+INa5pVDh@YSY4r#[4&[BT)JEdb(f+IbP[MSRh45S8LjCKEeq%+U*,+$Ql3pc0LD(
+
+9m@)8m5iTk#,l&"%$#ZSq49$#LfPL1kfqd$[@1SZp1bfYe@J)bF[(%a5pE9!)5R@
+
+G&+(F!8eRRb*L322GTiJAHH#p0e'+Z-(Uaff3!+K#dYT$%6U5,L&)$hC6K,kN'b0
+
+a6F@l$ZK4qa34!bVe2NA-5(LY6T`LVSqeEZ9TLYjq-F3AAR46p"4Z3SREPb$Z#+#
+
+Pl90%$1MUqa5K8)'hpX3k5Mqq'8,80(XlLYEP0)5d`N8R4HKbZM'kpbLi6X%jQD%
+
+Bd,S3+N2VihNaS"AZNmB9296%hiL"&`Aie3#0#,`i+&S0Z2ES"b9%V4*+Ddme3(A
+
+8*5ekLeh9!,e40`EZ)MZV!6-5&0"pLSL"0a$i&((EJIF5a@k4qe'AA8r%Tfk4SB,
+
+U%NVZBk#1kXESZ1eB89&G[3U,1CY$likI'KKr8&*N$,cX`#H0M3KHK154j[e32kV
+
+)Lc)VV8R5hN9e+(Qh!BeA0iDq"1ZS9pb63jhHTiJB@%Mk&(mMleQ+8X4P66r`epU
+
+aY2C3K2+X5bLT$J89@MH'eU2TS)Jl!LMVqa34!kpRm#PLaiEA1%8TiLiL9GlAB&Y
+
+l+%)Eeb@N1f`R4DMIZM%51ri3@1"9!'FS-JEHqh#'BSJUZZd6!'mR8Y(4Y8UZZD4
+
+)8)3QVdZ)lke*8)6HVK-M*A%"(m)L!5mDm#NL"PiSi92%23*H3K@G!&L,Ah1f%kG
+
+U%5V!,U(NK!d9B$F'RdN3TiJl!Vc'`+H)'(K6K8m4GqPiae@8)Pr#KHP'U`JEAD*
+
+ZLYiZ-kApLYHP#$eL0dEL,M1%YSfA*2J8%31[`2!TiL`EVp#+kIRea`@6eMEZeI2
+
+6+XQ'd(Yk+%)PfBfKElIX'0G8eUeDSGHPiRCU'Z-1!LpPm%NM"YkfiC0'TH'GAA(
+
+5f0TU9HCHdPVIf9$8SVjGT,f*,D9GXG*NMbd*A[RJ8d3-[-E$T`L9@,`5,%S4qlA
+
+qZ*!!deV4Y2C3e+V6KT!!eKhZT!M9D6H'[PI[S!JG%Ea3`UH)'(JrL%m4DKGiieK
+
+-8l-r0QpD`ETA8e0VB4Y#HMID54&Df'i-I4[C3C&k*(p3N@3-[(M%T`Jp%Vc3,%S
+
+40G-I,h[9QYQd*LPk@eYjD9@#)TU5'k2p3XjN$qe5[!c$TiJBH+1*6a(kTRKI@Qc
+
+(0J$A89V2ZhI(TMA"$D(N63D8`GdBLINqa)ZV2kJr-JCHPH*6a')(Vf1,8X6V1[L
+
+Z1,2[JM9*dEZ56dRHC%#Th)h4VX*9[',aLXS94RM'Rf0`9B&ae#H0'(JVLdmDd`A
+
+HraBP$3@J!EL9d)VTY2D3!)E'ZN1a6rYNl*(fe0Ik*#lN3P"9`BY$I)U)JGHpq"5
+
+aBF6Vj@)U1!1JK+H9hAY9F+!)la*U9ip`+8)MhSfKYB'Lp9TclAqZ9laC#qmhXbR
+
+D[EapqmXBH(@*A`fB32!HNcGLi1dcIX9!H32[V)Y@$1jUm&B0Sh"[Y0F5&319I,F
+
+DfT@5hBU"9ViEJbq&LYFpG'6aPK5I)Q,JY6Bq48`lH#9H[%pM)m8DH,e23m(I*D4
+
+95$ST3X(IMB'E'MI'r)[d%U9G)prmCH"G!SE1RDTiiE*D52jA,kkS8JYA,0,kbXD
+
+TENh&XQSBB9T8ZE*1@jDYV05'5XGPT@Gb!LdbQ6#iPe4P4AA0dJVE@,hUQX9VE12
+
+DQKVA@,9Xb6)QSX-XAP*"%'+X`HX%(-rDQST+*l@VPp9+`PLeQ-3FJrBb'6S'(AE
+
+TXM81N!$PI-D!Be[Tf'U[AE&SPB1JHSTMHC0Mq6-l5j12f0Vc@ECNe9ShZHA,9pR
+
+'&49V(-FPDaB[AQiEekbYV9e@XG)MF[8b"j[iSEbU&TZ+A)Ph'YJQYd`V6'Pb$$$
+
+PDVZXG(e3Q'i*feke05YV0%Q89YfUUeHBqS)"9V[DPUqY@l`blLe1fVji,3UK`aX
+
+ZfZUN@Qe(X`feU'eMU9QdKK9"Rk@kPQ[A1"C'@8L$HEA#3YBQcDY-c+UeQQ(Y-Jk
+
+Z1JhEX0,e@ER)XhPHMURk'T2afKTM@&Qlf+NCal4QmBF-'0X$C,5KrS0V9YJZ055
+
+2%TjIX3J2F$$G!Ph6p%kB+YAr"`#3"!d(E@9Y,R-ZEfFZBbj[Eh9d4NBTC@jcC3#
+
+3#I5[!*!2$k+#!!r@T!!20@LbX,)J@%024P0365!!!,G0fF+h6GR#!*!'"hX!N!B
+
+$K3!!VSB!N!B`qJT!q$bUabR(merj%6cKC#@88dijRR"kj&HbFNT@mT4`mLYj4MK
+
+Cbb0$fUf-(*k4Bq3THAS%6jr3##8VB4*f+f&NCH3!9X,`&Cj'Q)3C15SC86+M1C!
+
+!(#2Xb$-bBNHH%mVTFFS**a01IL92bA0+MT,MP"`p3[Q6Sq3TH8UHNkH%iS'l"R6
+
+!+H'5!50XjC3m*mm*JMMKH!)m`!,'#Urd#f+[qMDq"jUD!Aa*&CRLF+R)"p%RVe-
+
+cG,B#Q*QK`H*JY#mBP`!P5pA(Ib5kA+S*5%h#C%rP@Ym%c1j**0KF4jV0ICkqiY#
+
+HNVc'pfB'N@4VU&XraSpB2*9RUh)Yj,$9@-e50qicYmYJGTI42B%El(HjCL&qj#`
+
+#cJp3R"eS&39kT31*5Lq-bK#5&4HY@CGZ@`"QeU$-E%1VbY#Vl8K8Hf"8E55V$iK
+
+K`l`-lc@6MQpfb!IhmkmrjU4bSF0Z&l2r6H'4Z@Qk1@eB)bGH(TTj0T,-#bIN)@5
+
+5PcahiLjk@eREflV`mSm6m['Ym!(8fD+5CJY0ll+9GhXcHGGTBdjlL5eq9@*0FSR
+
+&UDT80DV[8@fQqMj9A5j4&[8`Kq,r)92Zb*[[Rr,QN!"I1fCB6[c)FXRaP&`MYjh
+
+#f3)j@i"'9DHDS'T369,eFf4kQq%GSDp1mY8j#Bf0I&CLGNY*r!pF&-XMU*GGe+q
+
+2UGpGReDAfH-"j'VSTeY6MhD"+38Sdqe-c5%hMp(TA8K2&%L8MAhf)T@hRZm[1m5
+
+KI+&m-q+dCTHm3hFAbU3#K9Klr2kqHCMK6HaCa$*1Ea*jre8YPM@eb2Hl+p#c!jl
+
+(pl)$N!"#Piqf!Ci(bier`e36h1IA5jl(lk)pBhSE8VK(Gae`jj`G[!X1U9RaqeK
+
+Vd2rNpr*Xd21h`5E9(DTl9!q#Yd,b#hl"cp6%a)3BD"'6V@L(Q'J9NpqL(ES"E@+
+
+b(qh366$&j)pSKl[jN!"2+#C!3Ncik"-adDJaa%5RjP-q1INNB)aUq(dFp0E9R["
+
+&G)MB1F0rlD!`A,$(ljdcK!*Lb"'MF1[ZX,rBB0`C&ZmSXYCJf)9a`G!Z'+1h"81
+
+rB!61eMNMaKNm)Cc"hi9RcLLT$8EJM*,EB!61+-Pr-haRP1bhM-ba0*&A`D"rd@P
+
+HJirEAJNC8[qI$(k(,ihqB1%G,pm`I'RdG`XCp*rlLb'NdCm[C0"lq0c("j`MJ[3
+
+r!*!%$3T`CA*bEh)ZBbj[,Qp[GA4'4LPPER0P!*!*MTJ!N!m2dUm!$pU*!!meD,+
+
+`XQ"B3dp'8e"0)!!!YdhC`lG0fF-!N!B)(!#3"J0e!!#,Q3#3"R)h#m$iVQ`Pp!R
+
+6BfIND1HR4aLKK$ij'TjH4bKK"%pS%TT(Q*&Mj0LEj&IbM!`B@3G-Vi[3#(fbRT3
+
+F1h)d`[!dMc`M%dBSH8UH(ARfK%BBS@6+b)K*MRD%NQ0("S`m*Fr)M"fC-(YbM%`
+
+CH8DHNQH%V8!GhLk2ARD5Sdq1%8BB1AB%63bB!'K1!)MfMNUHRRrlJLMB4d3p9%Z
+
+NP3-K,B6P$#2&d8+kQEPQIVr"mTSS%)@'8LUR#Z"4I5"PTYal4i[f"Mahj)aCL,V
+
+eG$k[G26E,e@[DjDap)&-HRa`ii`eqa1PL9"JIQQZm'9'Sp#*Md46MbJd'bXmXp*
+
+8-I@5U+NH*YqLTYXhL9U#JY8D5a"iLmLBTT!!FB2kcaB+ckdHUM)Hi!BiM,YZh+G
+
+q)dPPZ*f6faMe,N+R"Cd6SH"mRd94dIkqm*@eck5SHZS$KD(pVM9*eX`N*Bf(d*-
+
+L!aSZX3EF*D'YcS!Ad$1d#1i02Bi@m0G#bbYVMZ,+Ul#9%UmLbJr$jeDCDXFbSIC
+
+PhK[b(A*l1TFEc88E"K32-LFCG6,0@3`VF#rHZNTNK3lLM3R5JAH2),ei$pmV`aE
+
+(D`L5a0XJ#'Hp@AJHicdZ0dpFRNqZLXq1#R'K#L%PM4[LT#$X4+XJ9Hi0Yi3K#"T
+
+,hE$,&B)Bl*XJR9KU"1R'8Lm)HpBS#2IE%8D)PA(h",#edbjXjkJ8fdADM@f)f*G
+
+@iCL9k`@jBje%+m+k5N%pHq9U4X@Qm)fd3@dX`d(6,h-LY#kDeVV@'P4$Cq+&kqK
+
+0V5Z1qhLheV(@RY$'(1K2*-,Mm*X6'4)1k8jIKpHD*BV$jR3j0YYfCq!lFJFrKPR
+
+(!IXS`QPBjfKh1D"C1$MM'$X0SYriab(H"jK$G91%@`1M&dNi3p%!jim(A5GM*e@
+
+K%A@NTl115p@F[)bGK[hf9d*aC&b1)Bq$1mEP5#5mQ21CQkULQd8100#fdr"`C06
+
+rc@cU+(+J[lCeH$hp8iIMIACXh13@qX@KTXCT&0&Upb,Y@dmjFr6qmD0Cq[8[4hJ
+
+Rj@UD*-Pqb[QAH-KYAdDh8MlV*6LfRI)&Mk24je"cl(HULM@dc!i01pcmkfMMIiQ
+
+,EMQdiUP[N@hiKd1V(SIZFm3[R(,D[0LiDL+9,Y5*-R+q)BNfES,FP4%ckemG*6e
+
+[jQ`cp83#f1Li5Im"!!!0#R"bD@jdCLjM,QmZEfpeG%C'+@9ZFf8!N!R4JJ#3$`r
+
+@T!!2jm)!$c9SXV#bS&K$6dC68%dJ!!#h6GR+YdhCbJ#3"KV(!*!'$-N!!+L(!*!
+
+''E`-3!$Vpl)eQ9lmeZe4EV6hZ0DYr&Hq%XTYjBqRHEQXPGY@lXQIEV)T18i**ia
+
+XGVCfj4&1Z5HRQCcZ%mmfY6cH8Ai,)dr*eLfKN8hh%AD%Zb9XNmfkD14BK&dGkf,
+
+AZBr3I4jjbXPQqeQ%5rKCarB45[DamLa'pV&pK(,a30@9cmiLI*!!j2Ke(YPN[XP
+
+SNa%RQa`R'i!!!(9Q(X#TPq(CFr-,c`!AI"&!08S"9FJ+JJC"%fq[91d60++GVGf
+
+GQBBdcaK3["`iV`%"2-Tk@E5PZE0jXMmp5c&R+IkcETZQ86bkBYdkCij"qdE`c(M
+
+f589E@PHX[q0FQmbF1f8`[Dj(ARc&1[98RE9r8-&E2BHL,J,QI`ISqc@`F38mQm[
+
+I625820dpm'A!6"Cd9Mr-rVmLC0a$c%d`(L+q!8LJD'PN*ZE'0rS2TfB$JmTP%(Z
+
+)DiLpa2%GXq%I8Dj&eEG$1I1XPhR)He9m)d+TCTI4NNaKN!"iL@8GBGq9QEjiZZm
+
+JqmVB&c5@SfbSf9A$RK(fc-P`PD@jKYKAQHN,T[Y5l,Z#I@h'HQ$Hir#NNY5Xf98
+
+EFA248LM0DF&DVCR%Q24RYG1lN!$J#NKrD4)qFm1-N!#4Y0lP%4hU8[!69m9lV6(
+
+L+1IIp2BZL#le8lSXr2[F#kIQIS[Rh0c#+4Uc*fKVl08D9pXk'ih*J&@h8FpQe+4
+
+HXjEh@jEC9f))"fFZXcNp0ZI8V,%0eVjiVfq-mmAUHRfMj(YK&CdQJEa$#IMf*T!
+
+!hd)m`RXRlafmYj0MR(LBpa$[cE`(H@rL2F#lRhH+YmQlQhGR!QlKDZ1pLVI-Xjc
+
+h8Yj0["Yj0r#Zjje)B&SPjq1FHHccF+DmBpcp1(YNcM$[#YE)ibXPeeJ#,MrRBme
+
+(l21b*d3XZhD%Y91m6l+rSM%CR#rHD5CG)A19qj&E8ZQpF,fl&dZXdq0f[hUrIp6
+
+H[GU[Y#HKZ(qKp2lhpHPG$qEU0YGe6cPFrTkqJPJeqb,-)r5Z8-m`aZL09iNhNV[
+
+0jVX`cEH8[9Fk[3fIc,fZcl*NEM-jSe[QdIdYdG2Yr9$dX%@0bFYU(Di+m8MaT`(
+
+bD2qKIiXAdEFXkA0m59%r2r94dY2cdK[FHF4BpjR$&cpNpPrd5l2PD,#GR*c,-T+
+
+SV,kA*Rm[cC!!($hNU(i*+X`pi(`Ph294pNeb5+r-DFiUSIpCiaNY['D1)`'[Xc2
+
+rhBZTIBKNpm'IhSF2G+pNhIZalVF0Mjp1DalIU2fG@Xa1kaD2c0+lB!b3!%Xb"QH
+
+YC$emELmiEqMpABQR#TCbPilP2#kA(83Rd@hqJk"R`NZXmp1R$Za2)VXriHcqj24
+
+1HmVTMhC,p!rQGXY-ERdXXe1[e%ljb+%2IH5X"[Q923r6ec1qP10e-32Th0@B[$'
+
+YCASh[-rq4Zr'C(f8hQ3GaD$0acdJ(rG!Y-`A,5I+6JdDfeb*9#meTli*&$a+6k[
+
+IdHYDE,E-#)ddZcThm#EZd([35qi8e%L[Ui-FR9ZhZ4DCped5BVf,p5jM1m25!9H
+
+(q8Li1*+R*Z+pkV#a&3A'Jr3LcVA%qX[cU6S`%kRpRakJSH`+Xm1#Y*E8Da(p69'
+
+c,[T9c($b"IIQHG&B0"8pbE0iS0G9EdJqYE9H6&h%&cl44Gi8Y#lN+NPRC8F[l4r
+
+'"Z[d1Ee%Uka1PhqXNqJDF9X6c1#'m+Dfd8XmBFPZBE2rNZkKAYF#f8qc6qpQTpP
+
+22Srf-DrXEXj[U%f--hE*M1dbSlX-h2-bm3&RKkl9XdLIcGr&hT[$ERN23)@6h4B
+
+)&XdFl6V5r1+AV#e`-YZ)k1QmN34&Zjjq-$HM4[ckd`Hb'V1,Lrjk2$Zcl1&9NM%
+
+N`mSHk3cYF)T11Dq9[C!!I#dHD-jNMYPSjr6XlJ5Per%ElC@QHeai*!Y&cfJaNr0
+
+cAf3[4&2KiIk'a"I0$5@25BqM5q8jADUIY#c1eU&Rkl@'44Gb"RZHH52%H4,T2*c
+
+0l%jqQXcXSV[1l(EIC!k+p@ece@BcGDR-qNk@-fH*AYEa$*FD1*[r9(IZcHNY$IG
+
+VMXE*h%D1bAaf(aXc'5aQN!$[QR[jaN%1fBYU[K1'mr6-mJjRCmTHjHdl)$kVR2`
+
+hkF%P`Vr%qP1VC!hKP[FAlC(d4UIh*Yh,h3jc,r8Eb)[M3I,XYQI#cVGdbZ6,B)q
+
+l)$E#16Mld&41p6piXHj,1EMEIY08!kN1qTDm93LQemA)4`q96&@flQ&BU5d)9Qj
+
+R4RJ#`D%@@hHpKe[)Yd%dHq-ESTRppUBme59kRb4Me0SC'phTpcGjPdcaI9A2+hK
+
+UARRhr-Hml1HmFc2cBV2-+l-klbfeT[Yee0',M"I)pa4[jN*lYdkm+VcXMe1(T6f
+
+cRQEH3dZUbp&$m(rd1$'T[qhMZMmQZMKj@Zm"2@VSl6G-H[+*l8BhCbPhlAf@EpB
+
+ri*YeLQr@TYGqIlZr$jkl0eP@96e308Gb0N,I[Cqe69#l"#qfV)K2ke95eBHm$3q
+
+X#0e2[V"IhN1X`hIA`pV#'6K(R[4)0YL`D8AhVMip5i26Gj0NL+S8h-*&I!Ya2['
+
+0a!AN#6XmYj!!Tj4pH3j2RF-MI!@LPl`IrZL!G8VHh3HE8A+i("A9"qQc[qAMC,Q
+
+e1c`,Ph*[[I6GZDPQY'3cJKTUKVc&qZhX"U2R'ITC-qBE,`1Mj@Jhf-0jq#lqHVR
+
+Xh%!20A(MrkK*1-h*1HCQ1@Z%FiRefJRK-hVdQq3ZSace2k4'Z6h,rQ9)!3&6F1A
+
+9mkk*AA[Gp8C9hF)E&Rhf4ZR1p$5[5,DdVT5Hr&Tp@#PkcZEAraMLcTm(1AbYJMp
+
+!VA%*lr1N8X$r%UMFiQ1iUQ4PYUlX62G-DdaAr-1XP1[+APEQ5'9k'bYcGH9)ZP)
+
+8BZ8bACRX$KaPjAUT"19(K9eK-XAPZL,UP2"6!i)e"&@k3Y93U5[m-H(dd*p`ZDj
+
+`,j`HUJbIV[3,d*8"JJZNJK+YHKJZSJLIQZARah5LETa(Y&rk94LA%XA))T%K3V3
+
+89a)0iaULRBJ4l3Fe8SG`2IL'$@VMLZ-QSJE`EiDl#3e%Ur"jSQlF4M6!1IQ5MQ9
+
+%1m(2*qj4-#Qj$k19k!LiVqj6@!ei3QJRUJ"cMbF1IQIa*-"Xj@N!Ni#R$F`fRK6
+
+S'*iKE#6D#ZVXfB(lL*l6Y@2i'Y(Vq#U3!1F([6J[K!H))[Jk83df%c@"rdMb6$!
+
+Yj!hLQd4$q"E49RbEk+#Z6@!V2F5,E84"m+dU[a4-"rN*I)qS!Bm40H,l4%hB4G5
+
+'aiP-l#%D`K0%ql#2k"#BGr+2i`$456"IjNq!cPY3)V@##(j#C1$(4%dB*@V"6iR
+
+Dm61L!IbFD!Lr)0U,Aa(Yaf'L3f#1+ML*&iNQ3+ra9Z!PSRVmMQJTaSP-r*kS(hm
+
+JfS6M4#0iP@JIrNJdKYH)MS%rIV`RFBV1&X,IL#+B))VK6D)DR#CUJNA8SZ4Md'C
+
+&jjLf@hQ)6LVq'2*j&"h-jeI&4#&&&r'9U[1*+Y4RL',U3U*'G4&4Yk+lq!B9Nkj
+
+[@-dJfU(SHEiaaEcP1k,SaEkMLSjIk&&dim*50CFSV1K'K4'k%JUle49%JiUH9,K
+
+64BN1+RTdi5%eMqJ)23Z&iiSZjBHL-rQpLLlP$bVkNcqLkSJUe8+LQ2SF8C1LBrP
+
+6DJR4N!#kPHJj4FIb(e*I)$ULELFk4Hr$p*!!i[qVkD@+2jUQQqT1ST5LPdmrVZK
+
+-44@+RP4N+UE8SRj&"bSD8,e%3q+[452UriPfUdhLe@+qc#*mQbJkLRbLie),q&&
+
+!9#C1($$NMe8J$Zj6)#'Z(&J1EP*J&5iJDJIh+G!0lK-NR5#`AHB)l*Br@i(pi1q
+
+``#MP4f!-h-,!5A(d`)6`"6hJcJ9,j"GCX!`cSbYAYp&mpE&13pfKfMY@VqPF'D8
+
+[BkkDMpeUrTNIC63!0fqQ%riM8r2hX(p21cPb[mRS$X*"YkFH@BlF6c*Q,-fKrj,
+
+PjXMq)U1rD!jlm%N1Ti%lBmpaTh!8f8hRXbYlK#-PHQJ1cL1R@*,H[`mhN!$C+cf
+
+(T$#CiqbX`Y(rdDcd0HD`Ih(S(A)*Kr1hVeK5@ZES'-GG,(0*KR1bV6jTGl&CRDE
+
+S#Kf&lG6(U9VYVD*ImMJ641fi,1bl-acUb6-FGlAHP@crdU3-@U'T%ehAfG(@ZZD
+
+I($,(+SDl$cQ@,@YIhbNfp!((bRXk9RHQrHXpMXaHF#Zi-AFk@Q*%je,(3DAkhXC
+
+Se[3f-+[ad2[2EJbp1-2"0*EP@0QjPJp6`Q'HQCk["@jQ2P5PUqp06fI26-EINHp
+
+-6ar2F$#VC6LFNhE-GrHMm9D'GAZ1M&-kTcJ`@ES"h%FR'LbVc"@[4V4VT9e&Y(h
+
+YZXjPbE9VZPSleUeHZ`E40H[[QYI5QX6r!!!0#("eG'-ZBbj[,QmZEfpeG%C'+@9
+
+ZFf8!N!N3d3#3$`rDL3!2l!m!$c9SXV#bi&K$6dC68%dJ!!#h6GR-YdhCc!#3"JS
+
+@!*!'!pd!!-Yi!*!'ArN,3!!92eI#-TV(bFS*(j(M+c[#M[#9-%)*RM"bP&0bH-,
+
+A##8V)eabr!NMh#5rNZ0NYQCQAB4,RK,ZbXLab+fF-$`r@Z4@mT6m5RiP[h*bR$!
+
+lFS```XNcmT`m*mH2(*23iq3T'I%McmQ3!*0Mj2M%MU#!N4RP&!r8G3dk`LNjlY[
+
+PGH3jQA##'%ii!!(`2HZ)q4iMAlcahGI!b+m!AXIcJ(Q-(AJKLiTddZH&IUYjV[A
+
+l$)Y[J9bA(N,N-FjqdCq[YqV*I1`PGi,r$cSfTPA&RcYca[Rib[jhAZM20qI1RY`
+
+H%mq$9d3lleeG[acGkKVNbcm$j3fJYbpD,DqKd$N2615!)apL-A`I#"T4e*9k#AL
+
+T!92+`93q3#QJcQ3%dfR3q%@-(Ei#deh$@(mH@+6QDc3DA+4ZTY0Zl'SGLk+2`L-
+
+SL-G+'2@#@GA+Ya[2RJ[fiHKeFJR*TCh2A6dHSULXIS`fK9@hMUHAIN+HV$D#&C6
+
+#1UVd-jAk`4lRjfKi(Y1(PmKZ"G11@6'BaHj`"B'b@NH3!,%UL"qC2aCYr5*qb',
+
+k1RdrC&'qUERCS0H#meU)[AEUH)YHE5l@KlN3Vl$XYYll6`@[MrrV0FlBl3`jVrF
+
+cC,hqG[QHef`RIXVLQUe0i1SVY[DiqE5@[GKaHYaMATrr*6EEr*rmH$HV0Ii(pM,
+
+pq)ErU-`BlQFlE86EGQl&(@prV1M0*M1bHdGI%*FA@,bU(G&q6M[,bBcXdN2Dk58
+
+cC))TlAb5c!LMLRC)e-d)lchD)A8mSjh2@1cAcZFX5YVjNX@NGPCCc%J(SaU"C6c
+
+#USGGV2Um)XK(jfj!q0r%#$NI8)e$-QC1`'29eHNTR9M9L8fGd,[&+mQ%G`SjIq(
+
+YddfAc@J,jU4C20YUq!d)J)0Q"KI-c2#b-E`Yq$-l['I-6*AceBTjHAM9d*YSd#X
+
+6R@N-,KUb8!eV+[14A6-NHeYMJBLX%DD,AYm4$@V*'aI'I*Q'm["%3l)M'V*"q2a
+
+84,J@2HVSNk6+XcPcA6RH9(9Z)8Db,'PS@N,fDR-1r'DLdFmdRKTUe'S5YA3c*U6
+
+6Pr,KpYJKR@PdlT014Di05FZ1Hb,H(0Up5rT'4P(fl"qNZB05$E[aR8DYPLfCEG+
+
+1CUV"lIJJdcB[h*[rD(6rbVf+m!)CT1'd5i*Z6HhH53-hE%Vki%iDZTR'L`10026
+
+FqApQ1YES2mbd&H(pY%ea1Yld$bLZCS3QGLKZCKVq3-1p4r9HfD'BD9bk4p%pALq
+
+mrVBT(TFVkQq+['453T0h+I,1569XYTe'pFeABShdNR"[I'r5'V9K1e9r&rm$!!d
+
+*FA0[FR3ZBbj[Ebj[Eh9d4NBTC@jcC3#3#@(!!*!2$qI#!!rc,!!20@LbX,-J@%0
+
+24P0365!!!,G0fFfh6GR0!*!'$V-!N!B'V3!!,-S!N!E`Z![!q$cf+cG+MUdX9fi
+
+d-`G&ZG%)Yj8pBCGNC9Uj4MJPR&$#[S'%8h*-mT36fTTGPi4*Z#XljB46`Jp2hbD
+
+FX#0-mLXMa`JRY-lV[*i`3MNj6KLKj#NjGZ6SF3H%5Cj&MKdj5Sj6`JL0(#0Xd&(
+
+bM$b,(#1--2)ViB35LJIUm)1X,XUpD%QQr-L8N`%RR+#!!a!m81FJmFTedNkqFH8
+
+5NIFS%Ee$Z86+djL3!*B%U1"*qQR*3,bq+IjJ"f#BD%B[dFaamY(VQ"F%kL,aL,0
+
+[DjQa&4bQTQF%K31eMBf@MP(c5pRh0FY,"1VUDcrBrYXDDmkm!Y+pRZ0REKVM5B@
+
+mb3KP*pXS0hQ-#T,RU+MM*k+$KFC3)N*9a5V%Yj-ACLc$[$,C#T%4UJE@J,F#HjN
+
+Rf'%BHM5RUB)mV`3,UA3!fK,3TR[9ifmQU+#bpmjTD#K+r%c8eNQd0NUd)NVDJIf
+
+BBEkL%qEIaQ`[d8U[B44RX@jM*0C,+RKcpi*h(hJ1G4!&Sk6dM!&hN[+!lbTV&@r
+
+,M&[XEHJm8DLFb2+d6rrSVVqb1G85ZQBBSFp)5F"(rFL#biNc4(VABRrS-(c8&ec
+
+@kh2mEI"fSc&a*9&'rQA)39QE-6,&Gid8[@@5leZ(,f'-k(Nh`Z%%TI5m@q&`'r`
+
+i$GjFc"+B$5*,d!-ZVDbGXS%p`%&J"EJ+[XHhR2H9*,i%Ch5a[`1CfG,P+p'l#J*
+
+*j!$Fe&Ur)!#Hf*EchP+Ejf[KmCE#Rd#I`l13!(NUH+Chh2A[Vf1Z'bGkJ'8rH[-
+
+%pS[KUkEV5bq,PVSFIa$mHJ[Qei'hjIMKleVaXTeml0qU`k4JCe!mECrSChpA)9[
+
+BkG8A$6029V$C-+$0'fa'CJ[Tl3&N-h-E*+r(M(Z59q3mp)eNGC!!ldA`#$MK$r5
+
+mc&N1IQ(2M8ZK#@3[reBB1EX+AH8$d$#P+f,FGZi![1li5V6ekarM$V4DGq"c8S,
+
+`Ql-Ie('IQLPVSc&qdmhpQ1`Mkm%@CrqFQr-a+qG9HPl+c2N%ja`cc[Ni2$Z-VmR
+
+Y!hFAF`XAj`MlCSj`HTLchBJc[jNMicdpIp6-8DZ9)rJ2[cF0`0YrFr6,IcPkf"A
+
+FRP$TpS3LlJ2S"9P@6r$a[Yd2S2IG4rh!kMBAm&eQBNqhL5PQiD[@(LirBhA%iZ-
+
+qK%iQrDN(2(RiCXf"(e5&lr*$Xi(ZfMY+-5C,H%IKECPiJTMNbk32Nf+CR,@j2Er
+
+Dh#Ul*)aUf*RJAPL6&#CVH+*j-9N[%qji`Ude16[FmE,cfHf$!*YP`VjYN!!*lS5
+
+e`cecZ8b3!'0VKhYF[NbqFhE%-jRd1cZRf!ZCi%CE1qcSHTN-16ZFUpNbZ3MJN`N
+
+k+XfA#4*'&6baZZCUQJ&85M1"bQN@d#CLVk[T+IC&1'+N!6A*RLjlhF3*l#8d01U
+
+M18$pD,p%Jc3Ak+`dh#'D"c4+mpP,dC&L"3Ua!N9M"8S6EbZGl)@bPh+!HU@&Rk*
+
+&3%1FHq8LZk!-8b(3$9S-G*ZH"lT(48!T@S)mDr3L8"EVp2KT+9!f[3486XZ"UQJ
+
+98!1Y"BT6#+L*eR%5f442,bI!FiS6i"RL"(L'aH-e[)fBBe[emVDDaG[U9[C9ED"
+
+RJ@,d(&!h1kFHCEI8IRC&(@4Ae,2LqhV4FBGe)%E3SBN1,9Y8ET!!'eR0UeUGF$3
+
+)Kdkc!YYf004ElGl!2GqZl'lFY5FH3"8NHN%TSAkPC2+I"++PiSYVK$m45XP*l*q
+
+-J52c2m*MFZ#2"$,UFQ6q4I"GC!kj%"NGlRm)q#8FTR#(`eTJ(dA(6ZE`Qd[cq0+
+
+N(h0FB$q%Jbm-hPbqmImmA"cF99Z(H@PSlRfYc((a6kf5+Y28iEmi*%-HjZ"lb"a
+
+m#r%#D4,1BS%(20Ep0*pp6@e,60EDEEC,UcR"p@DU&JUb&!6U(BjUP`0Ad1ABhIK
+
+Ka03@Br8lEI809RmbNm(6DIA-DL[$"FAE1D9qe19iGC+M*KEIXpd5akBiYf(UiE+
+
+MplN1+Gaf@+,FBjP11j4beF[Gr0dKA2BdabH6(*,1PFc42CN2lSaSkqDpPqNIkY%
+
+6dXVf29Brl()Fb("BMr[*f+6k1h!FlF&X#6bG9Xmeee(fkE4kp)ddarF2eIrp9NX
+
+,Ij!!$kA@5Gb6I+$KT0@IQhB)R5I0m81'SmDjR@LSMfq`bp(cj!Bl*2MRN!#j`IK
+
+2T#5!0p[6D4I4a0)1iFr`SaZ-ETEQq$($8IR@DcC(ZYRB&B4EX[R@8BeT8b"DXm+
+
+GVD4!,,)R[L1qBpIlI&(GQA@mrJF!N!30#(*KEQ3ZBbj[N!-ZEfpeG%C'+@9ZFf8
+
+!N!N[RJ#3$`rX$`!2pBN!$c9SXZ5ai&K$6dC68%dJ!!#h6GR1YdhCcJ#3"J4S!*!
+
+'!Hd!!'La!*!'k+!+`08a`L4VNPX(C%L08$aj2$fb%NSS!5!VQDdGS5GC'j!!Tq6
+
+A"Z6aP"`p-PR$Pp)MP+`pHHT&MT)"2E*q4bD8V16T%643-UCN6!N5+*P43XQ%NU0
+
+N3JQ#++%(r&f$MY!RYa*+k*%T*@LL`!3iS,-V)TiKHV[dG!mJEJ"J$$+S$+)#N!$
+
+(EE)56&ifh12'Z`Ih!e+cZ0YJ`(rLbUV6F!+rcL)'F%qcLbJ!49QTeh@1GEhldj4
+
+9Yh+dmf'Mc0daS68(d,S!Q0QF[A0UbrXRRBh(b8jZmJSpelMAcPj1PjYJYYS!PhX
+
+!T)8"5VJT%ld&lNAGA4'hJ6ZHL1"Vh&I)QaiK-V9UX8+XB9B@I!rPLE'bLM[*LSe
+
+lL*8dCipb`Ja3,JY96-'q,2Yb%*(EZhZZ,ZVY&F511(31UR),+-5S+-#j+26Z%aZ
+
+-8)YjZNT4X0&[&m98lcBa'c0-ZXL3!0'p5fb%'5T8Q#1m5HbVcp#'Iha,Q,9'$1S
+
+@*d@ZB%JYI6,S'R#SDFeCr@9`V`Bam-GK4NbpC3M"qc!0ZLeeC@UmQe08EC+9EBm
+
+CTDYb9G1+T40)efGB)82p,TT4$p,Ehbf'M1*2L`%NffXaVRm6beHr@L5Uea$pC[d
+
+@Fb&MSXZ`9qD$rp*V88mUi8Y*+*I9"eA1`4m!!!d*Ff0KEQBZBbj[Ebj[Eh9d4NB
+
+TC@jcC3#3#Nm!N!m2mb`!%!2L!!meD,,NXL"B3dp'8e"0)!!!YdhCeEG0fG8!N!B
+
+GCJ#3"JhT!!!9kJ#3"P6T$-#Ycfkp4KlVeZfYQd8hDf@EX*+fTCaZbNpj"%m(Qqh
+
+epP(HdFh11NUfkhl+hDbBehU94FY@VV+LeGVMkH@@80l4rC5rQfc+Ml!YBGG4IV(
+
+)CTX4ZSeb`Z6[EGekC"0@dQedNff-X0lHfdI**ScX-l)T2d*jc$Sh``29ei#R[Ce
+
+&YNPZNq-Gi@5bb@b6-5FE6r"![INPRLEAYN@2rC,SY0e%Y*L+L%3H+Z3p!&$,PI6
+
+R29#DD'j,[0`$-%ENQb)kj4'D4AHK(Lb005@D8[df&pm3CXb4E6-N#T8ZDfe92(c
+
+&kNrm2rkCTE(QC@XZ2pl'R,0IN!#5(XHG1cCC`rf#22fE+&LeMULUKUMl0XTI2pZ
+
+U6NCRY[8hND&aG@IJ`EEHDiQ58AHLDKG4j4,b9ce(G00"5P4q(,1[4XqCq%m399K
+
+%aPA!Q'0m#rKfAQV"pT*CG&DSHeUCZ3b,FK+"H`MB"9a6YCL%jVH'q@(@Kd2G&$5
+
+E+"5,QS3GK$)cj!jDGj%9MeT@-VTjDca+2TiGlUDNQKQ5-e'V+BT5VR%VjXCQqSf
+
+S0BDq,0qrF`Pe@lYjIJPf&HSUF%'BHKpNRYJ(Fbc[X4i-GEPU5Pa8'Hjb9@2QXbZ
+
+NU!9UVK,mLr'IJhm3rb,dY3(lJH2!qIKlm!GA&a["S9Tb6Z%rLIm%rXrJcchMq"r
+
+!Icrqqr"r&2maF!![jalmGk-f!,`Gra(mKr%I`Rm,rT[a(k`P"rk%@34q"(idXG#
+
+b-*piCJrq*QUe`0L2-i)DCK0c@B&r$$AQ[!4iJqTheU-f'1Ra9E+h*(XFrQ5[mmk
+
+,c*4Q3LFdXp!k0UVlJbIlYkMqi1XHJ2kqUL$P3Lp(1bYqcPUD4*deG%$hlAZ*Ij!
+
+!I1KKAD2(S6Je@KCkaNei@0NkbqUr!HB+cF0,LX`NqFV@NHMI3,lH+"&l""ZdN@6
+
+Z4hHBBI)R1pcP93%5,h[)G1dK@ia'%V@8H`3D+AR0jlk8pMRIkcYQ$mEmHm'leqC
+
+B5hQcAq0b'AB@"ciAR*DJ9h![r)[lkVjaRf@e$T+9G!BTE&,eFCj9(6*m")afSRN
+
+lX-mG0YIFHeT[jlRl#2XF"cpS)fF5IT(J[8@LCmr([J8i3RHjpk!RB5*2P!e#5r$
+
+qBYFl@RVakUb@i%pNGS&EcqNrLIH3!-!qm`d6XlZS4[9j,I5BU)fA$5*$E+,alKk
+
+j[jAQMCVlh4RZi)`jSRmlZ'01[%Gbpb[Z,cc2h!hX,(QVqi+5@CD&rIV9EL92IqF
+
+ZGm*B6h6qHKKV$&V"MX#paJ!2hNNjGK6ZXRScZr'KCKMS3lq"@V@Z)3Gi0PEZ3`C
+
++cA)2U&Q5Le&,lPk9P6cp*c`&qdbB9fU[qZDlA[A#M(ple3EN'2M!3Z[)3CjA&@!
+
+1lSRrDIV)pc6R#jK6lbe+Gp*rZZ%cDDjVH!jiEP6DGjY+Hp!qI)@e90hBD6@#'fH
+
+hM#ihSMB1rLlSCV`Eq`(h[U`ZSE9,1Eq"Vq38LhUNalkTDc[[B9l-M'Z0pEqVXDN
+
+ICMA'Zf8[JDlLk9e2A@rV5Zia9RU-r5hF2Ae3lb6!IMq!i`(k$32ljab1@V@Z`6q
+
+Q0kTGZZb-LhfHfD%p1*!!eB5*(5AAZXXl[rTi@mIHZpY-j(+jdfqrZp2$MlhM'fr
+
+TYD2e&Xk3!"l@&[+hl#Nj3h)[!qDGe3%lJ2Z!RF$$*@H`"iX)m$&Jj&&(XJSj5QF
+
+EkFefAN*[)rV1#AFl'M$$L9SCCX5cHNrVfP&HmRlNHHb)Fb,Q16!rL"jIU0X4d(@
+
+IjY''AH3$0h"'iqc)R+V0`eBMqpLkJ+(iL`19af6q+N1Z#J"AK,[)9hRB'ZXil#k
+
+(PJcdK(A[BYhlN!$Z,8*28pJ8%m$AKV[%)I6HaEek6al1XFR6pf#*BV4Meh9aeTp
+
+a-qHffAZ6dHZZjKe9bSb*$,1@qhkderJZ8FIZQ9SR5J2BNi'XHicpCDL*&NLIDB,
+
+fP+CmR&044qBAZ(r)hPUP+f([GVhHE9q@PpDEVlH,kR3ZU01eXc!c')Pq5ZC$c"M
+
+C$0lXBm`IqpV-IX+c1*[&lb"VB"29F8B`0Y'LC'cZ9Z8VDMjiYDRjPUARV`$h8[#
+
+DNjf6pJHKpbjhe+beI#(kHp3mH+rLP@#0RG!fqfBQ%c5DUl4riUle(rqF[$RVRbS
+
+2(*e+ji(*Y@rN!FIk5!bj@YDST13dbA91aeiDLd3rD[YX2[H&ZUKBkerH%6,p2YP
+
+[NSIl9Hpm1bIi@8XGZqlf+hp@q5J5@k6jNf(ci%baHKIRYL(H3B2Q@Yqabhf"lUR
+
+42G@+`qIXc&k5iH"2RMB8BLjkPJpeRLeh8h+Uh'qrQMqr)c-hRh-,jURFTrI$Zmh
+
+X-VpbTmRC6qmIr(AII0ARBCbp9E#[GZ`GQXTU3R[J"dhJIT8&`9GQX[(MG`Djikq
+
+4b1`J#6f8Xbm96j1lP&R"[QXTRTHP-TSa$2eh8DfklBJRX50p5m&qAjkKlNH#lcr
+
+eQ4lN&(&(5R1CRGriU-c"fK06I(ab2mL9V!HHm@Dq2(iAiRY2U2XjePqe[)9#bmV
+
+(F*14Yc2LE'FBXfRh[EJTQlJT*chUpXHh`!Ff@C2bcYa%JA@h%H'q[,hU5I*d@Lq
+
+`VSYB!h`lRIF8p-@h&BY%Tq8Z,ck62'(6'JHh*GTr!pMlr)&fbT&CTCe`,k8,`E[
+
+QIR"mLII+@I%Zh*NV@XM6AYH`Y5+)I,'#h1ec3fAYFpf*pJpIdYCHGqP@RYA9M6P
+
+eQ$0hJGa(epH*f[XDTfi!VTK,![2++aEJF*ZMpX%c+h#,LVH!6ep$@E)&A$q"@3[
+
+!SD9qDhX,q%8E$A[r6abdTZcp)j-AmEdG'YM*HeeS68MrY`jiqZ((Lqdp!d[0!R-
+
+ZaQd%1D1*'TriRASJF*5Q11FhMQ%HpKpk'"bcqpGhIap4)Fl2%Z0Y!@0[[XBKMA8
+
+r[bR`(Y*[%,,I62cRHX'6N!"A+*mV6V`8S(0ZcN8&0a+D*bYiXk!V1e'Tj)UV*&9
+
+T3#8X+lLQU0R6X!PG`DX"9CR1QcYA9Z!%ZUF[eB2p8#eAh"'lfpeQGh[i4B6XbH1
+
+6ZkVdfYd&F$%kMlGA`(`ZPMfm-eAK9afb8JMR8eXZh'2[V2$hGSqh-&AjE+V#($r
+
+2Fk4fJRJ'3GjaJ!CCiCh0Nj9R8MfmEhiZ3Gl*9!qrd3M,bP'l"l,%[Q8&Z9VhH(K
+
+6XX,k86dm+&G@r!aN*3!`5eE`9SA1PK9@edHiSKdLL$-V[b4K9#C41I'VPL6aR[[
+
+T&+"KHKr3EZN$KqJ$H2F#AN!q!K&43p#iL0#(L"aY0!qS&ac)-8#93*ZT#QL%`N"
+
+l#"lT'+92!ifaL6NHT89!qqJLS2ed#G!"JUiGih3Td#'mXL((&#&41ii5h-#C6lK
+
+H1Ad%ch(kk5Y!%B,kR5X*9`pRJU"FCaYe!QdJH,Tc#b'T18F)qR6ZTZ[K25l#[G4
+
+9*&%$i8lX@N)h!@dNh!"G`i3,T@X2)CY2+k003#&#ATN@ScZ!iR3R8*+q$f65&U"
+
+qfJUdQEB"lD4li8p%p`%&k(kJ(RS!D$h"$DF2d)0!3c3+Y)FH!GV2Ei(F([S0d"c
+
+#Zb*hR"i$fN"2!3h5dd"$G""S1rd@D$rp!@L#rJJd5Am'QU*RiAN'i4@1Tj(J)jk
+
+9p$a3JJjc)#2iL@HBrJSd#X@5Cjr))FTa#5Jlab1m3!%"IHF%"@ja1H8#bXkT%p"
+
+d6Vdi'bJQjJ+CiKbJ$H*FS#hL2+!4D*jbaJ4dR,02I!CS8Y3$6BR2!ad9Ai!9Z36
+
+m2YF[S1$F)[&&S+#i$+K0I"QS9q"kR6XLS1-mReJ$9#bJjMb$rJ*N#ZJeEd3J*q5
+
+0#@JdEd*m"eEV%P"HIVli!9#eq$&3[B$bmT0L"e#Iq#R3&[%3d*Ki'1L3!2J&d)5
+
+!YJTFiPG!!I&VS$,a1&"%2!PN#ZLTB&$m#@K%3&8&q`@89$!TX)P#%Y"3S8XF!I+
+
+*&i'+f"d,Dae`bX*k"fH%L)1G'Ek(QXQ'AGK$Z'88pK'FZ(#$V)h3k8!l#Bk-6)'
+
+VAZ%S3A2XN!!bPi'0ed1FX1#6-U&"R9irZkqhL"PiLf@Y@MUaI'Z'p-C6Bh,UaE+
+
+MKf[HpB4mi"hQ2AQh%a+#GbGlZAH8CT3Z[f*PX`jeeM%5Pi[@D01UjD8`@++c4#8
+
+0LmUAhUh"0Tci)pAJYCUSh)EqEA(-b,jC`aCi"VD#PfUC'GRhDT`BHBCmXCEPNAQ
+
+V"KA*'BTiDSCZ`%9&m@K*m5!k&9fCMfIiH"pb"UX5h`c@ahmr+"1CcHDKZFli'eI
+
+-30*k,`#Zlkh`9FY-q2E1-%0TfL%MJjk"C*[jN!$ST$F%f3@PJh(DjNqjS+kUKiY
+
+%TFZ@TjmGJP@c8VP5YQC3fQc2+)bNCcJqPTfaG'NdX6CZqjIHN!$pk@fQCb$cRYa
+
+dkG+PPcFRT1HpbX2HfCT9rjV4[(Ve+X64IqiM232*qfhP35j3$P69S[FYNbel[9)
+
++UQqS#UNMVCJ&XUAP&9@0CQE`A58pSl8jXH`+GRcNN!!XHk4k*pplC#,KkNRf209
+
+QKY[i#IE)0ZNCI#p+cG!IdLBb6jBp,JK1[K1TGl@S[X&H6V@CmGhQ"2[Uc!aFl9p
+
+KIlj-8eRfm(`RlU`U9k85`+[XHDV0E1!NqeKQ"Ui,Q4Qaa&9U#Lj`ahAr-f#qQ2e
+
+$pmKlD@Di6lc12U[lHelErB9[19cNiNrU5LCAfAD&K+UrLf#l1NJZ,D25k-VQTY9
+
+`P8cAH94kaDTVQPFRZ!d*Xe9D6ZR5DjE,#C!!3R2dr&9VVU6r!`!0#R0PG'TYF#j
+
+M,QmZEfpeG%C'+@9ZFf8!N!QaR3#3$`reL3!3"0F!$c9SXZ5bB&K$6dC68%dJ!!#
+
+h6GR@YdhCeJ#3"J'Y!*!(K3!!Eb-!N!Be+%(DBlMrTZlR2`(fU9GR)QJM&2NRP5I
+
+0EFQrYG(XT-cLpP!bp(r*L44[5L6q3pZ%HS[Ec8fpRIqeMdPa4cKLCQKm!+e65jM
+
+*%lYlLYZ8i66Y'%lAM[R6$JQie'["QFh+hq66P[jTIp)rC#4h*rpMMrkp+AqId94
+
+I1Ea#l2UUS3bJB2338K%!$3TcCA4UEA!ZFbj[,Qp[GA4'4LPPER0P!*!**&!!N!m
+
+3!q)!%!E)!!meD,,NXU"B3dp'8e"0)!!!YdhCf,G0fGJ!N!B#i3#3"J'"!!$J'!#
+
+3"TEJ3GTMk(p6pr1(32XbN!#[ALK1QYZ50R"d@,hYEe[!+'i2*82$I[UDUXFbp@j
+
+fA"jRLRcBar6c+Z($!IdD05ZlTq,GA8RHecr(Z(lFRrMj0fRpqC0drF*&cbqQXZd
+
+APD4qdFDC[cL0hEri("IpiT[XqF@6l2fPLjYr1CAEIPP*hbrEZ2HATl([PjrMS9p
+
+qNmGrq56l(h,a`Z*@#+B`GYPp&rh"RT82"ecAT&6RAYAjJ1Vm0kV[hkLqRe9p2k[
+
+kIPEerDcUqeR9pl1UlfG9hmqU[[p0pIe[UZpr8hhrQqVlhe6IrkEkrMI9plqT[RH
+
+T[Xm1C(eLXEU--TGDp"9i9ApLpqGR3I)bYi,RP'"i*f6`CV6*0MQLAXNQc*IT%'A
+
+)3h-p$U(AU6Z*MM$b98iX9eCQEUTA"f$[3(SR)j!!RV[-j)RG2HpNd0id!rGj2!2
+
+hK4Q5R@&Y-LXh2CFI$+(lB"R@$m6HapTBY$1GJ9[mTklp'9MLKDk@D(,h80IHYlZ
+
+L-SS(b`J!!!d+FfPREQ&X,Q-ZEbj[Eh9d4NBTC@jcC3#3#8aN!*!2%!6A!"!+G3!
+
+20@Lbj,,J@%024P0365!!!,G0fGQh6GRC!*!'"cB!N!B$23!!X4m!N!B(#3T!q+i
+
+NH'C'U&FVNp$H6KY%MK*'+-'6P4`lFQc0M[`DB@6!b$'[)`0+MT&Mj"KCmr,B5PC
+
+f%[TNI8CZ*EqbAr[)L%PqCH3S'6!bBZ3CS@6#b)`5*RPfj*J44JD8c"Kj5JD86*M
+
+ND'4'b6-b@mNc`PDJbMSl`L42Zj8`-Q3%83bB!'K1!)b[D0ZDhYX$[)-!aY!('+H
+
+)!"@q)BA8Tf,P8iAmVaZqAmM+hI-1*VU*"keN2"q[hfXYaJijEUSV@f285Z4b0Sd
+
+aBVm)rY)X8l+5UF6Mp0'CD'j-%+0HLPT'*rGflVeM*I3X*f#qI!'%CkY9LZqEQIG
+
+&H)-RDrF#be0!HBfh$i(E*35,TQIMikGUT@c!($m!eJHUfk2p@P1rV5NmLjl5#Xa
+
+bXUCTkZk",m)E&1F'!kZIJC&,-#CA%#Sq(bb89a@1k!TmaERcK9[9k[h5*!,KC`c
+
+F8i$iY1"b'aj!p$hePkLrD(Sh(%r%$hUa3qf'`kqeq!A6HI"*T[5qDqmU8cSRKVb
+
+Q$NX2h`YGc!ZZm1e8#&1JEqL,[RNM$+mkZ'hb[DL3!'pmKa6b[ABY'VXC&H!(hqZ
+
+#L&i-+D5YGL2k3`VTV0f)Aad+%5Gp#ZRPFNiKl#3-+%5k`9)DT@A)K"2FqY$1ECM
+
+G!ec$5@i6UPq'&%G5F5`TMS,L+%2mHJh4raDRZAe!&lGYkR%kEamHESI`@JmbmbN
+
+GQHT2''NMPdN[a1HY14jF0L,B0#,09U6TAM'q)PeS4,Ci[l9%MNBM8T[L#)P2,NH
+
+M$CNpaD(kX+($E8+Q5R(BR$81I8$IE4f2K%05a$NMDDL2F2M%$m8K+HAi*IFFffQ
+
+P,I#2`rE9)abkBrb5-iQX5m*m"$f5,GArHVH6UP'r2V)5$abAI*+UP1hd@E9T"9D
+
+UaM(KFUL+F$K5fHc#SQZjFXJCl@DGJlh6FYU+,H@cDHhLN3ipfAJQClF&@kZP`q9
+
+3([e16*dNfNc-1Prq*A4,#ISR-8Nh$F1Ya'bl(&HE(,&8)H0qmikGMLF@XcB&@lR
+
+PY-YKrR@k6V,EG&TFQj%IJZ[KXG2lVS[KPY1(,XGiJf2QcJfR2HXYU-F[I`*lZK'
+
+,1E8I#q%r!*!%$3PcG'4TEbjM,Qp[,Qp[GA4'4LPPER0P!*!*BjS!N!m3"XJ!%"0
+
++!!meD,,NXb"B3dp'8e"0)!!!YdhCfVG0fGS!N!BA%`#3"JKP!!$rK`#3"K-)$-$
+
+i6ZjC-F+e,5@Fd-d))lb949K*Ea0+9N,hdbeCfmGqd`MGC*r4EV2FK%PZddf1*ch
+
+cT#QKPbGC[k+Fh-Sf@cY1)mFLamJQ+iX`XJQ6E$Z2NXd)*pap*Z(NH%Ffff3cFTY
+
+YXPRN10Q%N8dfZAhNf@h#b1eMC$qj66CKj$Gj4TjYXYQe!PeiQp#LQhPjEEECAKR
+
+CC%Y'Qi`hQ@jb'dm!02-kmGC[a2l"jbpF%&Rc#a(j[Q`8XGi(41`m#[Bd%(8r1jm
+
+X1C1PS#(N@G8)UQ&j8,B!6b5ck9,DlrFilZX#cmqeV9@VVZ4JXHM1`9kqdEcq9dP
+
+QRF'*[3YYR$Rk%P*ZL,hbidZeDe9,'Mlj1j&MQfTR+`G&HM2VDYZRTDNb+2C84Q4
+
+(VADKXPfDAMdSUpVL0ICfY-9&8$H#Vk%&@0Hd*&)(aDi#apZB'K!,p9V-3(`cHL@
+
+e5EEm#20@-'qj)Il+VSSN1Qf4!kdpNdq)0+9Qa*VpY%KRUeJ(@PHA1Tm6DFq)pIa
+
+1F25XRML`Fr9%eh6YiQ`,CKN@)6meT(l9Y$4ATf3M0(blNTCHD2BS08Yp#iDBNPl
+
+dl-D-$Q[SN!#+0)Km`"Nm,k4HVYA!h8IY`0e+Ef3c$3)pjEDH#l08jb34c#-YjCP
+
+(*XQpSrE1)G9RS&Cl!lk#,Rhd$HUR800lVQm@Cb5RVchQUrj%0PF[5FY45pU1ET,
+
+fSpZPBm%6U6RTmhb!fGISl(GpB,Jj(rL29HEN#2J2SfF!29PJ-kQdT$$,@j`&q!!
+
+iXMYUelp,R*UhI4!lSL+0jFb'5I+9XhpjhIKQG-NhrpAbqYEE@LlUH"`D(DB@SBi
+
+99mIV2lbKil8rQ,Q'Eh[NaXlmmPIbf&ABL9Z!0eGHNUCbYVN4(QkQrZTTh4q0l[i
+
+BU2fd-LhYeDaL0HbACQmh6-(hQ0mamrpcapc3`0Rf2`e5&E%#$IjkkDi'RVr8Na@
+
+*dBqi&mKlFXQ6[8pmEYH14(GLCfk`N!!Zj*aLiQ6L)jfG(BNpcqj,Mj@F6+*l[*!
+
+!6jVlj$i@-kBqkpB@lKfYclKe$$H0eNG-IG'YiafQ2ZA@0ZiXj6@ie@[kF'[aMV,
+
+rM2FihTIa[SVh$EcJXM'Rr6CHh'2fHA2$r4E[(ie)Mq"YA)Il4h#6522XrDL'm$k
+
+N29"$YQS2jT-H)PDEMj5"I%'4EhU-eP8J$RYLZ)1N@a&S*39&i!)j5#5q&XMMLZ!
+
+'P51+6!2j1UH)[qKTBDrbHZb%hp2R)e"F(XD5&TZ-EbS#"dLV)LIm(MK#(PIN0Em
+
+($T&Z4ElRpm!amV3LTrdH1%K'&+&kEJmF*C1+R20lH$dI8Z4AIJmGpi)LG*,E!rI
+
+*R#+rph[SaYF8ZHchd(&l&,RLpp"G2BTFmhTdZpb[##j4H8!4AY90LY"R'aAKpIb
+
+B)NdS1K4T4V&G%EV`+8ASXj`LQe(X9i5li6P&k2kU)ZdSCKA"VT+A&%QKq$B4HGL
+
+Fk04NYkcQG(VVCf80UP&KkT!!&kVMCJ-cmJ#U`l+1mmRl84e(ZL"b5Kj#G8Bq3!F
+
+VdhQ*SEUUNh@c`8U``qT5+r4S4eilCS3Ek3LCV'2XYPi8l"2VK1Ua4jP1+G0T-XR
+
+6fR'C(AMB-F+1f$"CBb@baLC9a8RY8qlB1@8kT"eA1'YmXbVa!M[LIHb1$fYIQA2
+
+%$h11H*8qL*m3lYBjCEUS6*I*K!G-pPSbf8eNXPZ8LGY,l*fFfak3!(Kb+$IUQ%9
+
+HHdHX[9DaP-f0*a&jL$aUEC-CDpYmKQ0K3Vbi'T!!h&MEHY(Iff9pBMkrSI6J3))
+
+$CiBF8AC$TFLKk8dd4jME8(&bZ)2l(-&aj-iD)`Ih#lleZXcm$bJHF)b3!)0q*`I
+
+G&RcV26ed$X2ai)djb'(IQq1pEi0ZC@m1NdDpUaNiX(eACNhfjdZ&[D-qQ@Ufr$f
+
+QZlZZ'6K`!ANH-NRDHZk*i2Z3!2&p)XDYD5l5-*-c+#cL+M6)imrXENcPZ!Tpf*A
+
+,F$Jq4clNq(M%dGqIq5KM3,dl9P3-1(#cVDLB$%L3!+f&+M)lj(hLhJ4%Pe8NUkI
+
+3TeC82"0bI$(Lq-r(HlhTRPr"J8ZdlYH2i6dlVc6[k&hHVD2SXY,R3aAGCAj6kDX
+
+K"c+6N!#M@#U-1Q2[EDDYHMI@P3B(lZZkdNJdN!#'4%SM*C8"[(V$+AT,DGalJBU
+
+ZC(p6'YGJ`&'BjmL0j8T$A#R)8$$pL$Fpr8!Q[3Z01jDQMhBH%a"c*Fj2Ib,NB+S
+
+4F1acpK@G)&0ImPPbE'*d0$I118l0+d3I-HI31p9he8f&b1T0MecTPN+R3ik[4Kc
+
+QqkaQ!R@AJ`1*5GhPRp'X+h,jEVb[qr-5A9EaFUM3ejCGcY2Gjf!@Y,#jRrch2S-
+
+#b$cU5S-$19"GDFb+0#p5QYZ"kC'Q"@CA,#U0I#&3m4XV5Nq'(-be&T6qdPfPLm9
+
+-HNa(3DDcSR6!JA6VpMAQNb#[A2!dXbj03Hji'SP*S1,*&DA2K4cI@94D`ielRXE
+
+f4QC9pc3iN!$Ce6f0@C()4NScHr`6ANeh&&e@qNUS)T2'4D@4%`8Fc#!AP0jh9qR
+
+qrS+6eLX&QGcI,fb2!dRNR3[EN!!JFel)#CJbDMTe*bG!`K@Sb04d5HRS(RSViR!
+
++K6&H1VH80QS'(-JFkjl'TN8Dq5m1C,"ehcqMbIZlEV#BT@J#p`mhF&Yi5[pXf3h
+
+)mJ+1AblkINU6e,U+i%"UA&HaS[m04#SLJE#iRGrdd'89N6!'#VPr$Ga8%Ip(q4b
+
+rMMKkRh5ML[RdcRcVQHqkhr--J-EccaCbHiG,-Tjha[+&m3bD6)EChklTcl#6'G'
+
+B%b"#LYbB!FBR5VK(mQJS$8PbIi!-H8MrIR1Z!"RbN!$qC`UjNJk6'4d[1[*r!*!
+
+%$3GcG()ZFbj[,Qp[,Qp[GA4'4LPPER0P!*!*lkm!N!m3#R8!%"K$!!meD,-BXH"
+
+B3dp'8e"0)!!!YdhCflG0fGX!N!B,*3#3"J5*!!"P)`#3"Ul[#m$iX[-)*i`F@cN
+
+j6Ti6eNViVB34bSqXR")mSB356MMKKfG(+*HX(6r##5AmP*rNQH3iH8k18cPYCB3
+
+5[XCr*I3NR+bF(2l)iDQFmR10m*@4Sq3jHFV*-I+-X-&++(P1RT(Rj,L%%djBNQ0
+
+2MN@1N9r*8r)X`LA(*Fm)j5Yj5RiPcmJc-Z%V8*I&cZ2R4cMK%ZTa-Z!%84b!!2K
+
+BI8HFAbRfhH62[a$eIdp%Eq#RiA+K8ZC'p2VQ8"`KLVmVE8HUc2#4I$NIc3ZMMVS
+
+*cP%CfbY9cVY%9,Z&rc54Qb#DV&*QJLKCEj!!irB$81hF@Gd!r)cTRm!FCQkr&9+
+
+'QBHA"JlimDa`HAkX5URkD@&X-X1If92K1TLKCV"%6IrS8j@TBZ,(UAVLJ[rP02&
+
+mVN'cBkI)V8(RFT`S@1jVq)NFZFHJra59*VqJ6(f$R10aFXDTd`V"@36RP8`BjTm
+
+2`kQKRhjRA[#"G`LmG&$FA`Q+%rX1`T1P$BTr(UIiQjh16DZ2@Ika*eRE%e[D`'M
+
+j[bA+36*4CXEB)ZhbTMXGpXqE*NFm2d2%Q9PY)#r`QhhIbJEhSD2Y)4[XEHd+1!0
+
+J)Q-mZib-)9mTIb"(aa1'jbBPCqhk&A+m'I'KkAfQI1J&EaGVj&R0T-NII,$DN!#
+
+ll,rD,SQZGCY(pP$d`8HEi9b9NKkf3q5VbAT,H2#6[@3Q0)k`jNK[FN6dF[DYAQC
+
+D2pNMc$6YcJ"ce,X-2FMM[MjSk[HS[NB1ja!HT1dH8Up[@FpiVqM-CALjZ9JPe`A
+
+ICJhX92M0AIpXpZ",D2eLIp!IY"QaZ912E[KRKpMI3ei"1`pck'@h[9BZ0'cR9[R
+
+APCm+NZ19Vq'$GjDF&AM#rTPplDaL$er9hFheU0DcTRC'Y(j(kaqd[Q2U@&EVNYB
+
+kheI"(q+[i9r"ccT2iPr$I`lrHI`Am6-Apd$X!M6[fBhmm!3GH)Epi0-L*KfSS4H
+
+PidFc8%F[5@FTQS&DmU5$qd*RS*lf5qHVD!CZd+Kd6N3cF)GbdX'@daQi4H253@T
+
+d"Zl4Dp,j0TU"Qr5kG1#rcX"GQT!!$VD,cR#bRTE10Ek,T)-VL2C+Cah&S(5ZShK
+
+11MG3C+9c%m@3!(5`!FL96SZ2-1PXSKL46KY&@MUh8Ec!RAX2&eR4A'Ab(YIkm0Z
+
+[fJ[Z+XAqC1`fp8*jILB[jpip"LiBB5#jPM%l,iaV2FD(R(,f[XXSI5U-p4jMSI5
+
+4bFX1Sr6qI0%NDBHKTL&M1``MPG2ACC50pkdZSr`afm'*h@(-&Bc@pL1'2N`KjIr
+
+T+$%MaJaF#F*il%'Q+cf'CMVX-666Y4j$-lh5BfLQ9lX-QqQ6ABE0p&UAB60pVXI
+
+36*r[-QbQ,cjLk%[*YA-rVlM-q!hI$D2XDG'"HfaV6`[$K(%dBVKr-8`BCb1'hRM
+
+E$!NM,Mc,`#fhaG#APZ[2-R)2GCJPJd[5-JEre['XA)rrq'VPb'9T'EJplfXeJFA
+
+9D4NiEam`*,#i5#hMi%1'#5bZ9F[JUqi22eifQ2F@mTm8011Q*pPK)lJKQiJE%X[
+
+r!3!0#(0dFQiZFbj[N!-ZEfpeG%C'+@9ZFf8!N!P9N`#3$a!65J!3'[J!$c9SXaL
+
+b)&K$6dC68%dJ!!#h6GRFYdhCh!#3"J3*!*!'!N8!!-hY!*!'-KX+32MVQ2KM%YV
+
+!##1---+12-@6Cq4AGJ429X,)-r*iGZ3BZIACNDINUH`N6b9$4YBMp*)FZj@`)j5
+
+``j2(-h)!4`j2*AMDV4''Cq3SH8TqCH4SC%$*8FNa`Sk-'4R4b$2*8F,)L*)K)dI
+
+*X52(b+hXb)b5'5A2#--$ApI&eL,X*-r)-I)dJM)'3!#!dUiMaNHBEkSIYJ(c&S"
+
+6p+2Sh`jm([5I)8M-r,3!6R'Qi6IkIX8i4rS6CFNVff'P5S9$J2F1U,EJY([!)VR
+
+(!6[Z`A!Y!V55AI%behdq",LfjMc,`hJa"+2L*$[5VJ6X[4(#F5Q,Z`"Ec*i0a25
+
+CJ&RP#"djLbdCBD[@Y0l@BQYG2+fMe%9BEZ&LPPNZjVV#+X&p3TPAX94p$)Fli+`
+
+9*&r&km,Ne+ZGpC!!H22%ZqU%BH0m'0BZ[2mZlfLf[1Y0%VXJQeF#f4br2%(j[EA
+
+N@p4$IL'221ABjSkUUcqkjQi(Z8rrcXfpLLq@,fh,Cdjj(L0H28RBjp9KC,fh0r4
+
+ZH*q"5fY*dYR8fGMMdRj3ehDm!@0P8qm0Fp2pA5BaSE9a2G@mXa(pFEUlamHB&*)
+
+`eB5m1+%QlEk(@$LT*NYp$fFE9T-1L4%e@5&aP#Gl4`4SdTqpd942hEb@!CCKrQ)
+
+FdrUKrq$qG)0[dS#KE`a'F`2'[6RG``&MlT&Zk)#KX`TQQ-bJUk3B`rYCShm-R6A
+
+qbdLIES$mLN&lZVFIk6ZLR"PMp`q$VMGYGmE`pKPMaDaF2D!'pB"UqJm!N!30#R0
+
+jFh4PE5jM,QmZEfpeG%C'+@9ZFf8!N!QM3J#3$a!B3`!3(0d!$c9SXaLbB&K$6dC
+
+68%dJ!!#h6GRGYdhCh3#3"J2"!*!'!A8!!%0E!*!'GM94"Ci@&,l'qZL6!N'"cJ+
+
+"3#5S4Lir35iVJV,NrirNA'E26bGMAcqm)S2rrqhFdbX0b-[Rb6mNHphB[6LIZI`
+
+Vj2prQC-LbSUJCA*k1"cc8'2rcjpI6[EkdVR-96RTNMmJ'1LTfXmf9!$LlhP`49!
+
+mpTje3Hmr@B02rcbI&"I+rG'F#qiJc4$ceCc,PmMr2j!!FrR*Q0GRb2rR")9iUVM
+
+rH%lL98'Kj!ard"H$r1DRJJ+C"F,CBHc,5[D3!-#A#fJ&9aA3,Y[5+`*")I)[@[P
+
+m!Hde*2pr`",'BNIS*KKrK&r2R,(B%(BK'&*UlM(IcqI@-mjpf"H+a2D#VSpi"V,
+
+Sq4QqBhcQ$0((ChJ',BXBAmapejG!X&FSb'p#VN-qf9BN03hTk4Q,Kia@EQj$Y!H
+
+j-f+i#FERPM"qGLP$lNbF[V5aa6RMMfaUF3Ejm98Y[KVl,Rbr4D*Q$Id$'eTmG3P
+
+$VL*PG1hka4qeV-AdqCNbLG12#IB$!*!$$3KdD@eP,Q-ZEbj[,Qp[GA4'4LPPER0
+
+P!*!*!8S!N!m3'[J!%$"#!!meD,-BXU"B3dp'8e"0)!!!YdhCi,G0fH!!N!BU6J#
+
+3"K,e!!!Hc!#3"QHI$F$i6RTHCXIAq+fm@lI40P[CeR9(HG*@6[P&qH,DYehSmD2
+
+E+(I@ZI+&8ejXkhNqLlDCqGPD#ffh(V[eQ-H2X'pGH$6#A*6bLaAlV4fK2-))Ml8
+
+F+fhKGV'@SlYM#cP'GV`)@pK#&h*Xi9qba4MKK#hNf,lB`KDkd0qZ329pabllQ&e
+
+(pP'b1l+3!1%Qk&M)XK)mX,fI!+[f*ZN[,[c(0iM+Ga2435SRdSU"8)Q25"m!i'4
+
+8rNTm`ALX0fieU$Rd1Y(9[85q8PT#I`RF(ibfa&[-IQ1ANP0%e`k*YYm69Af`GGd
+
+kZ8ICX2aLJrGrU@!deYVci-8fhMRrme00(e&9K,5Y'D+eQ@`fh8V1C+EjZE8Cd[(
+
+00Q`QleE-U(!6!A1'-'Y4L[cFFhRHE1kpGfYM%,@@V*cRAAY$0VZf-TX0Y4-e%AQ
+
+-fBcc,JQRlCN"MCb$Xl*(jQ08US'mS9N85U%RiE3r)fES[[Vk0&8QqrbH,kbiSfT
+
+l5hCXHcSlLIhe`cGUPAq6cSj09MSV*[h1*GKaGV,IpqXjaYlIrh&fNRFID#&Ihcm
+
+6JB2$U4CUEU+L`2!QSNUlSkXK4@l8BpMI(9U4c@)rIbK0S4$kjfIIHBhjNM0G,k%
+
+1JE[kPl(AHIlHh49lMQ$f3cbllLF3E!Z&+qa5BcZ!mflBBqj[pP#FMD4HSh$Ufk5
+
+(RYEU3bQk$[-pf#mJY!6XbLij2Sk!JbAcXlri'Fq%$KqrT-2)GEfriL'd5h+CLV!
+
+fI['dfVm5HRU5kbXm[2*DpL$[8J2ZDdD)kQ*%Y6mP`PikpSTZA2G%,rDj9qJ&MVP
+
+P)e8P)Sji0IbS2ZfSV,56Ub(YQ!eYhY`'Cd-p&pm3[YAi9Z%,$UL#[D'*Y$$UFRa
+
+piBLRP[G24'cH4*[N)l6,GM+d56X`2c[j,i+rAEC4i+m#rhZ&[`iFAMAj!i8I!Ij
+
+h`&p3q!M`%m!PrlYXKi$r&2LI+2`!m$2!KIk"l`-q$Va(iEY$Qf`km*M#Ki#A!KI
+
+m!mm!p`(rSX*6`$m0r&D&pf+IGZ"5rlYXAF$A!lp@i@h!8m!,&,i-q,EjfBRr82J
+
+5i)2!$IkEJ(m,Z-(rA1$$`!Ar695`,l6,RT!!QTPiAXk`ak9Q*[BS[&eUCQ+l`U0
+
+5-a0TK6-(d-b%p2pGpV$8c%5,`KG)c8cFVI"'UCQ*"S@$%pE-a-d+VjDDQCLPm%U
+
+TQBNbKFq@QTR3&&iZ06-Zr!miI)Xe-rjMKEZPCXCrT("GDQCFq$md-5Ne-kliYjf
+
+9QKPAr0Y15mf-#rkE51qYR%'"qXfkT`kha+BhIYiEqL2fc2'eGI"1K6eCpa3-,*N
+
+pA*qf[`@2UfP)fdIK@rmQ28k$TfPG6@3I3EdEp5&m$q*l!2J`[[Z!SEE[a4IpfNR
+
+83rJ1iMZ!E`EI,HJlJcUPkYiQXX%EE5H!iCDbFdm8haAi,X-AGiiGrXQpK&Q%R6A
+
+Q`SFHH+iGRQZ(jpVKZAEQT`Ne20IZ"mDcH3liehJI0lj1I(9mXB0Y%Ymap2EMH`6
+
+BlPrkFfS$%IIKeSK[k[-(Yk`R`Lh3!hdikMH6Zqi`fF!,EM@bmkf!23jFR-QlTA#
+
+BUjl*bhZ!Pr0lY&qFLClQd$p!VpqhpiZl#rHIi8(SRGZhAqMdG!Se2'1Rl"rlBp9
+
+Ih[IRS[pSkQ[SMe!aGR!RRVVqH1,T@FF6-Cm(qYGBakNHp!2$$V[9$RI*(E44jN6
+
+0kHplAZb6i(h!SlXHqp6YXX-(b)QD2@'ild8aSjPh5Md1cU-q$hChB(I(*Zb1hVQ
+
+TP`4Iqq@ZrrP2DYGfBfDSR`T$ZmQ4',RaH1+[EMLHH0M[HAm21UXdTHidDTGh'X&
+
+2c$YY!El`L2IZ0+ljI[[`6UZEb6j(2Y5(8AY3(a8mcl52#NdHa0I8j(mp+6QNBD%
+
+eePRIpFHKfl(%bBVR%[rUL+Gq0+9"TE[6FSpc`[qaaiT8YpJMbPa[HQ8@[TMeLY$
+
+0T*SPlMrP4e9LhP11GNYAjm6pKek[[!@SUZkEd2*KdLSqKE!(f8XS`AI!ZDmBGqr
+
+'M8pi%pGdeA-Q`EFiCVH&6Q#[9hP[A3peLRPcH&lbRDpjj4eaEJEI&(cleYk(2Hi
+
+MCqhR5DppJkTUAk6bZXq6VrBamY4q(&iRj`AilJ!Ri'"L@3L*%qlfR5rK4Rm[LpL
+
+62FYh1h2$'8!I-JMFkiG5'iAZUrG[)KFdJYZ-A2#l@1TET#Ik(G@*k(9Hp$T9,fi
+
+!fehSGHCk#p(V3fmKHZHJejhVeE'I4qeRBleL$M4Q+m!FEfi1)F24i6N%ldN!Xi@
+
+3!$f&qjec%re[2eH(R!'p'ZX-[G39)6X`CpdE-%R-6GM2m0b$M'dDiCem(YjGl!%
+
+ripfC!q'cQl0l@BrF`lZSIQJTQj(cXYRF2))[qh"A&&[c4$rcp9Z1*#p5%qCZkHb
+
+!h-R4EZkNq)+1'eq'C[-k6YZ)RYe#VZhB'l86YBkk%,86YBlDMGT@JmbZ*N+HlBq
+
+)1956'4Y%VlFQPFfLpUI4Gfr'16Gp1qNemmLAc0ccA2S1FLHhYATj0QD8mia+YlJ
+
+&bY1BMFb3!2Rd!#Z[bC!!*QDJEdD'#QU3!,A0@%d&b8GD[FR-alV5%5TR$(0X05[
+
+)N9c`"mH6mqirRYbf`S1j2Z&*d2kci,&Q!Elp4-PjNH2*qBlUQKXCHlLVdL@djdN
+
+ZZ-GEJe`bHB1M1VR!8IdmCLD[Ge6c$LSFaI3bMQijCq9k8YBDcKC4ik)6YHUc9DN
+
+kT'SjIbB5iTRd+I@e%-+hMVj-[I3B[8$(k0qe-Ue+@l5dTb2DJPYeBDHX`cfaG3c
+
+F&iYf5!3pE6hG#U)lZeF*C'P,[+GEp5!hjZ`BZA%*-ZS5m&Gb!0r$q"kCep,4dp+
+
+pJHk-YAB,!,q&,Gd4[X8DZVTA)C)&[S(QpA3JJ528l@*'3mq$2H[!kY*B9cbfTM@
+
+'8iB@4q+GM#cUA'qd8'-XBQ,Bp`bqBd5P1Vj)N!",[IJLfbk&aNSVm)9Q5ZILfiM
+
+[N[Y620-&R2AMaXbbH#$LSXbEfaI,I8VhCYl-)#%8f2k'KD)qY%6@)iCf,29BqU'
+
+FJLcp'1UjS"p$)qJh9@*Sa&+*e)Rm'@Uap')T*UmC3c()[8h0R&H-mJlqPFAcR"K
+
+-jE9rhK-8c`EcKKEbfq9eDM#4el2"Q-'K`5VcE(Q$e%(H2`bpl0M`f&GhM"-pmTD
+
+X[c%Uki'(C,heKl,12#VV(H1br[Ub(6r,2-VePVGPc4Afq)QX"lmMkdGIN!$ed*G
+
+PR6QKqYT9[9M@FKYNa')ESN#,2p$U$c6k!dfeJB@eJDAq`2fLljBS"B+ILc,'(X*
+
+q%J!DL!B$VF'!i$B3[5R3HT1"c3QdcP(BrIl"4Il!'RrQ8AmJkQFDd9mE#0i5p3F
+
+L#kN"Vc)B&,1#Re9[0Yaipm(kjRFE*5ZXpb!Pm--5q'%*r,!%(P"5Mbr1p4*X8G*
+
+X20l!pj0AiEkMfdf%hj[Fp$KZ'[S,I$fLjfd$d8TjCB&J4pV$Fc4X4[-&JJZ*KJ@
+
+#M)'D"F*Eb)Nr0,G!ZN!alVCjJ(3,K2Gj3#$cM)QfC8#fL4if#,'ClG['&VCp3"l
+
+M(MYHc0$M!UNd%ALq3TJ9LI!q%Q(MN3Jc*4'm9e()6K2K(59bb%51QJMc+*(6*S,
+
+E65)kVK1&Q2cS*MqkbBr1VfdN`[U95*H*m!8M%9DQ42LGN!"%F$%U",HB3Z!)#RR
+
+,4(!e5D5!G5m4eTj%q$k9#0a#)DaULCMm&*Mm&*Mm&$!V9`Z%961$%8HBI83JI(P
+
+m8b")cL6LR'dLH)XNja6ahU+RL$8U%9DQ42B#H9)JambHNmEH,Pb!FQrA)X-jA2F
+
+B,Z&LTApAG#0I8!M[)a(@XN$FKFCXpqmEXm@lUJSqV%YB`Gm6#'[P9S%`Ml)(2NZ
+
+0!Q&pbajQp'k"9*Xpm'&k3##XIYR$1PXY%&bXUJFq6Ed#BHq52Dc#2S'`ZQ32qrL
+
+!3&JeXSF98LU3!&%6BCq5#$Z#4&Jr%Q%95S4G6##P[)p%@2-5iFY$)Zc'%Q&e5B3
+
+G35+XHBR`fc#*X*BP`RiQ%D3C#Q&P5S6GC)p!"Je'5rQefV"!f'&N$rZbR-Lq)K&
+
+f3)NF-C!!UpM6C`L%0a1cVq,0VKB)EbCkbS4,#)4jP$h-SdXJ*SpPc1-R"-)mINB
+
+Jc12R"-)mhLi3hRZa3(M[C3,K[9F*K2GH,a"Q0#d3p[4('4&A'Iq3!+&404iaJ%&
+
+eb51rS,#`m'A%IY9'$P4a+N+9)VlCf)RiKZ2C3f,fVD*M[m"'a3CMBJ0f'p+mh+&
+
+9m6CDL($G)I,(AD!YS6*8BF(&h@*5JMI3"RPAEBKheAB5[e*m3(3I%AZF%UbX&Z5
+
+jQ31EAq`YhJJLcH)1b5Lb-@",H+SYbRcBZJ5AV"E%Pf,52S+cf`l5YELU[*a[f@G
+
+cNQD[TPQS'ZR6U-*d2DSS`B[YF3UJkUI2S"UNhd'ePr9J2d!hS"UKck)k4R"SqdQ
+
+DJqSX"A%CkA36+Lr"VrACG$1UDVS&952p,USQcNrdCUT"e8DeU(U4XC'qKH$JqK"
+
+p!G8`hBEU),qRe)m3r&`IT3C8TrLUeXIS$Ya'6[SL+KrGLDU#[S3Ua1&j342GKDU
+
+CF2-@Y0&m9,f%C+UJRh#&&'bKqe"P#$jI-%4)'!S232P81%*I3A@5Y9GiLZ$3K@1
+
+%Tjk&Ni4-hZ%Q1,@MNT!!Y$LU##mf(I9`#R)ddPG4,@0p1PE3'P44kN$94[!m4i,
+
+@SNS4FJ9(2cb&(&X),bdFHqN283d6-JV(BF)l"mF)`38G4bQ*kR9#'Z`i"[FKabK
+
+Y4R@'YHdi5`qK'U1(88d5I0(TTDfSI)5dePP*m%GR&5&,F5kMVk0D3GY4(B*RNI-
+
+`i6@)Fi6`EX&jK1#3!-kMK$H!cYF*(ZNm4NJ!R+2d0+Scp!bUXr3XlX%3I3I9A-*
+
+P8,5%[SXU#YHMSME#qj@LG[Sc92f%e,*SJ&j'08Lik)Z'#+mVLRB6ESHL3jai&)h
+
+`kpQL%i58[1JYqJ&1J0RdekJUL+q+25*2E'DIFdACX9`TIThVfXQqk$V)[ZJDB9p
+
+dR@B(,IE50DKQdmG3,5$FNm9KqJ5U"2Y@F6rl9[%!1eEa3IDUiP(fT1+6l%R&CpL
+
+61#['6HTNTh4lf#RG2YlHlHIYh4@m[6[%flXEHA[h!RCapaCfFIFJ1kMl+$XS+`,
+
+B-G&aJM[F*jN9pfRk1+SaCX8p5GIK#Y6j"A+*Qkq1%Jr0$+jFeDkL5-Uq3pU$@Rc
+
+9QPJ`)K,RJ(BEp@ZhRAq6V-&EmFAeM*I)fQeKp)IVYGVclj(Klc`$Q3CF-cFMraB
+
+CG`,2N!#[NI0lj0iK3a9LKPcFR+%DS"DjafTc$k*V4!4LrRK'R2N3-rJqiZhj4V&
+
+qd"+b068$Yi+FF@%2c-#G1,h(*j8qr+[j2P2TV2JC&jkFUTU#V5ZYfGJU*TR'0@0
+
+F@CJ4-fG8jfEJEB)e3re`(DR$dP5-aC3e!cIZ0)Y`+$#9Cj&6#Nklj2A*k"5,209
+
+J#"IB*4C6Z4Qi`+`CNIE1L)4`HepQb*SK28B`V9l2Pr&pc,YD3rUC4C[")ZFj[,'
+
+mQ"QGBR%Jaa$RT[*5[m$L8'k'Z,50'HTR103&,9lii9C%YM#Y4Fa!)R@CDIA$jBN
+
+V)Xmd*dLF-8PQ'*eLHRq14Fl@IXRd@'i'TfiAQIir!(jV9[1p)4M#Lk%T09JcN!$
+
+&AG'p0@6b["Siqq'85q3F!VfN"Q3P&Y1FMhfJ"L3QeJaFf1qTSI9AZMIS%IR4CDD
+
+Y'8JBVc"Y$X(,SMc6V2PYq)V-4U"66#Gb,1,k[m6dcYb-p!G-)dhiEiG$JS"mE0V
+
+K-!1jkE6$)Br!fkNmdq)P!Vl5jcqm5*!!@eNX)TQia25Th!b46lh,0*+1MjL1Q&T
+
+%rRIPDM&R)!hqm'SaKZ"e@*jT6TIaiPGQE!+pa$6b1)[&*kDB4PTRcH"NmL,65'S
+
+qB[V"0DC2$eeKfTU"M2X+dqB3*)CjTRN1jr8L1c5R[Xmd6c9B4$jdLHRmV5`5PRH
+
+CKXk4c8il%fBJPCpf*LJ'VrFZ1K2qkd8jbBI1K'c8BZK2,l2BPC["1IK&&UA1Tcd
+
+B#4fbjfQQ-30[$DDCKJ[LI@+1DI(Liabq)M-6k"66I*XD,2*VS3qB4[TQcY#3!#1
+
+qac35`)qB$Uk,GdHkM*Ge[eE$#lrCScf'b24rp[MI(h*H[%c-j5Li4XMq$F14'*e
+
+5$2*(5`dmli-F"HQK03-TTM9$rC!!+H-pC$l&JEIUV'f4&!UR[E3pXNKVXlqGfKk
+
+CSc9$[UidCUcTM2DdidNj[ec,EimX3Vb%qTk"AYlq@'kcRdpYMp65R#&HQ*Nc`SX
+
+4aX[0V-c2k,M+K&kPjFYPb,QmbS*ZTZ$b0DhV9R9%QJP!*,kK+bCE1T!!IU)T'&i
+
+9@Ae(Cdp(R),495YALM-Q'1RXfV"m9BF#1R[3h0J5Mi8lPmBLH&UjMS),&RiT&Jq
+
+,B5hVj*h(9U2Q)keUDCH3!*SBlZ3&9#HhV-Fm[+EXL+qNr`F!N!30#R9ZCf9dBbj
+
+M,QmZEfpeG%C'+@9ZFf8!N!QCb`#3$a!Fh3!3-b-!$c9SXaLbi&K$6dC68%dJ!!#
+
+h6GRJYdhCi!#3"J4R!*!'!R%!!*(j!*!'[3)+3!$VP@6PhXS-(b0Vh,@2(&XM4b0
+
+-`JJPH%,*-r*iXM,*VdFB'6"bl1c)B#A(b)bHChEX#2eZ*8FYXT,(Nf-!K&lN'CQ
+
+Yj"PjGQ6#b)J54QD-2#1hNQINDH6CN6%M3dU1N9[CN@2N+8%$)mm)"3#UVJNMl-L
+
+c!8%I!bB!HTB!428`d9dpr!3NkJ$QF"j3TkK!jEJiSJa(jGa@d'lpm($j`2dV-ea
+
+'!LHTjpeDT98Cq2YCe"%CD@Y,fUhS9VHhiab,dIYlY&X,UMZ0RcE*2*im`P4Lrq#
+
+cqGC45(8Ub&hp!MbG0qpd"H@PT$'PA5ajMi!EaKcU%V+D@YPI2@lk826QU'FAH4Y
+
+UfPXhjMV`5Mck"G*K-PmXlX*ER,$qCATbi9lHkFMZclBlj$$E*(G(FY9mD'TJKL[
+
+8(I*5FBB&I@#c1lV(A1qARE!qQa8Zle,Uhf9&pmckBf2#[C`R1H31(ZmN1Cp8F)G
+
+j()pqjRHHeB#QEi`hMj8h[,rQrF08F[q@CLQ'ID&QZbJMACYq,QepbrHF+0BlG8&
+
+)r!F`BaAKTdA"P18ZB*,E6Ic(E425jMC15dHYrbA1F[Z),,FM6*-2r1r@lfd'F@a
+
+c$0931rFE3FYhI4SZUJ*HUm,hRiA3*&rHJrq*+R6TlcE*'2mULBM"Ii9p(6('2`U
+
+GPK(TSabMhi4YrX@),K5hKPNhK%'@6#Ek[6"Lf(XNK*'+'G)XMMZ%b&hc#A+X*!f
+
+4Q4QVQGMN9Z8lM[['9%&d)HN@BmD-S-q3!+S-'*I'M(K1p!9lS6m6CI[,+0qq0[a
+
+$qQf)*h0Q)-h"A9[cl`EqKQfmZa9XE6ei'1!I!#%K$&9$3L"-EfG[)$8Z-`#3'0m
+
+!#`(0!C%!N!-"!"!`3J#3"3meD!#3!iB!!!'!rj!%"`#N`XamZQ(S2!#3"5f!!J#
+
+3"4!Z23#3#QrQ)#!$0MK,!*!Fd!S!N!0&!5%!h3*j!*!$#!!20@J!%M3L!!mdq!!
+
+30!-!!!%!!!%"&`-!Y`F(%,TKjXm!N!8%JjS!N!8#!"m!N!V[i`d!"cBi5fa[Cfp
+
+M,QmZEfpeG%C'+@9ZFf8!N!Rpj`#3$a!cN`!4EJ!!%$16!*!$pN&38%a93d*-)3#
+
+`)CUaZQ(@h`!#PD8!N!8"1Bd!N!4Q"J#3#1cq"J$VC5CEfFTXC5DRQFPT+eZlE1h
+
+b61CRCZE*eLj2[M)jjC66jdDjQbhXeLl2krRDZfPf85l)3,T3lQDErF)fJqcFE,1
+
+&EEB`b#"If'B,Kfc6EQ'E3EEC`L#$E+'3!%'f81l#&TDEE3BC5,N,@pM#0PXBb$B
+
+$fF)@YYR#FV1&EED`K@h+h63&UZ[k[ZqEP9I"p"-(#GKjf4%F'B&NNm0hQFR@C2+
+
+98dihh465K@l@ZLQRR'l+DHCRpQBfL(,ch(6KN!"Y"LPhi3Z$E'(E@pQE9flDZp!
+
+''9hB`KDfm$bMR(*cXiA()&rB&R,#&lC`N!#$('32q3QbK4%11H6,#MRN#hZ3!%1
+
+fm)8YI'%,bmd@pTP46MRP,L`hffbc66P0lTRCHN"AehGpSckchX$P-c-#(bH"j-!
+
+RKb-`$KipeE1hmaK6-+EFqQG-qH8r`m0ZKSriYpkUE9Q'PbYr#9RC#c`YlKBPhQi
+
+Y+bYjVF"@-S8#cp$(rkcl,+V[EqZ8RGrN$mlIr0G$FDirRiS[KfA82+rA8eGClAR
+
+c*aA!Ail)P'5VA[EQ#ZqrVPM@fZ"Y@rjTS[KLN@PJ`FX'9dYcfh+$UD`Lk5NBrp3
+
+f,H1rLl4ijaGrG3aqaaQ3!#8`GEQ"'HLCAhMebM&Mmr+H43*&rG5fU9l'hTV1@#Y
+
+lLe@cDVc`0CqC2@l%--jJjDrMpeCm',l"lpa"-r)rJE'3!*0i2bQpZr'q$HqRJZm
+
+K[,G,lalT[C-TqEm,hE3Elq(Jqj1q`5Y+(rq6pm0ipdVjfFc!HcJkN!![`BEh32#
+
+p&1qj,)6rmcdClm95IV`l(Z0p3V"q`(qi5-SI$lb0H+m)[Mq1pmVJq`0i[i1DP@L
+
+-rALG6%-"Bi+9ZS[QKDUF38LR5jRMm2i-hS1"5RPZi,eDULXVRBRhZN#Ph$&iE`M
+
+%*p$lXQ$m2Vb[$,`R82l96q2A"GrRiIh*!2iiUXmc`I`0H0mSDZNTapZ,`GcXLTe
+
+2hrF'ZjDe2I6d[6@B,aI[4i2[PAJr(X4k-Y!hFG3ARB&F,LhHHi,a*hb$IdD6`(c
+
+[`,Xj)A3Gh`i2BLh#Hl,!'JmXEmF%BZ-hiMhckAYZm*eB#NIUq(E15"hIPUH*LCA
+
+6JA9&rleG'AbE)GiFk-1hj6R!ZB#jmEBVL!%6jQf2b*9!H6PqqBC*pAD(0'YQiDd
+
+TN!$6LCjjHc1D3VmEQ&T[Ej9UlX6E8dpMR`[dUTYkBNZ`hc"RhMiFV!GliZ9J$9i
+
+*eQ#lp-DD[KlXIdcTYrZ#IB4CmrD9Tqp(Jl-)V1"YQ583$qEUfrf"QX86RTk4pb2
+
++)"l8jBJZ@$28jNMNdrF-8DXiHXX-[Z8%mJa!,aba"1Z)AMQ5rI4pI"!hq[p)SG4
+
+RQ'0((%pMT`6Hi`MEp+I[GdZj@BGUk3fpG+44HTZ10l!ck9[-K5-VJhh+f-EJh'0
+
+H24mmk2NMDk8h-+!M'i1p!)CdT#[i$JCeC)IdMRRNS2F033D&QACNle1F@i,cJch
+
+aSS59ZI5XN!#hei,e3SmI15mc*`HQq*%,&+Yj(LE#%AP#F#TLSKfj(N$TT@ik&Za
+
+%GN2ldrGZD8U"3lkM$%`,0cVJ(A"2L8@HGb+P0db4Gf+#FB1NQF`Z3(HqBj5kJ1r
+
+%B$)$[U2lhM%rI4m4I-FdH%GQ#ZClHE!E8-phC0j*r1MBGb6Q%)F1HkFmq$BYN!$
+
+AJqRmcT*Jpa+ABT'U1c&*hQN-pJ@BfM[HTqp,!qc*6A9E(X6$RRJJb$V"H0lCr$3
+
+qbLTG9"pcHV"HB+([["ZX&rVkRHjJRi1Y[62%0PL[+02dBMUpFb)iAGM,V`AVacj
+
+jifQpSdc$6I'(RVj(jiJ,FqHGi"aadrZTi$[Bf$Z2RVk(JrA&&'Y4"CN,iPZ`6C*
+
+DJi@d4!8C!'-cRVjVjK'2[QSa5B`32G&LPTJ8pLFYf4)HaN9RKN([%i1e*Gl*6pr
+
+[NYka,Z1ZT#A)1*`8(f@D6UTPII!GE,-P1!ZFP(p9B&Bid%XY-T-`m6dHl(@`YTD
+
+G36D&'GHb@f)[B*%YHk@k-Qkcp)EjdA*3HX--EMNFc+'CTZ4i6AV$I'JK&Q'q(3V
+
+QET2H`'"DlNK[Q(FY$k8hc)Thq3S2EkM(Zh,IBJDq+h%#$aMrZm%0J4IBhc8%HaM
+
+ciYdJBj6h3UQR`AMHc3l'SMl[jNVm!RhplK"c4)hH,3c1*H+Z$,!Z,qEkZf@"'Vj
+
+,Q`3p3jd81dhL"m3F$1,#M(JhZ%@5pf92Fkm)aS0R[4YNKr,qK&42c2*hp`3h,HM
+
+hGq@qCEh-[Q8[F@0JcN6-QAH2"cGEl)0G`CR2QZd*[Q-@[RXT1'-ampqp&TaVa+U
+
+h4A&82h2Ib(IfERX`YRXNYT9Q$qX1(Y)UpAXFkY%D*Ed"@fZFp)DCdjSX[D%r@c1
+
+PqU,(@h1$-apcXMA)hEb%8fm"(B4Y@Q#lid#Y@jdbkih$AUbe-FKHQ&RcHkR+iQ"
+
+AS*UY3rbHZFc1*6)``9E"e05dCEbjrf-mZVG9kQ5TCR3bai(0YZi1jXCNEj8kH`$
+
+KHNQD@Q!)V5H#E"&6V2ANdrFS'r1JFeXjUiqq4rH!6ZSfFh[-Gdb1eZ#Z,`'lK0C
+
+J"r2p2A8`(r#m&a(F6B#P[aHFeNl+Pa9maq4m,lM2mD$rhXX0eSIjSJa,hU1-bS2
+
+k[lFiq)jk[eFIV!mBhAY""K@(5ICHX'HGQ,l["AXdMZUa*PJ2606hJRhTT2T%Gbe
+
+16*lh$JAcSerH%j09i@ImcZ!@!G2l[62"H1*ANeEL(B4rIj!!$@!Z[(G&kR9Ld`a
+
++hM5$5U#FCi*c#E2M2@R6iN'pfi,pk3+H0TP9-GBI`0!@h-Fj`GEDiS+XJqpC%Z[
+
+!r'P,#FDLjp[NcBVj2Kkj`$,DJP2BMGUhP6ppjhl0C#rShEDD)*Y'll3&fE!$dlm
+
+Yb*aFP%r[AMfBT@e$V!N-S'eYS+m-HQm1ALd3Hkc2-5IDJPZ6"$$PYPe"21`2-Lf
+
+qSErDpJGM-C2DJ[YBH3m&km,jc,R00pl&Q,h0HXCfX*JYEF(05$c90cUEikNQai2
+
+-PlhF%H`2c1kfIJNhjZllr$C'm`$NIMmi"pbBQqm2l@2jVRI`#@"LldG,[!4prlk
+
+mL`8(H6qiHaq)rR`rZ'XIL&RfIR$l-C!!F&3&hT-SIj3**e'0&J6Id9I[Va*BNc"
+
+MhUI0"Yr30qph5@qB@Hm(qc)TRE'59iTI+AR*aVmVjTH!NppHq&,P+pM2c@YC@FG
+
+BjIbA%C2$NPJU5deP,"p3'ZTUkecJGE1VPpFeZ*YEm)lA1DfYeF[D'21f0M5heGC
+
+jfqSp$8d0EH,p[SCDqEfZTEUfZD9KHB2RE9EYmE5mjDjV@elAaP`V2"kH#eL@00H
+
+XD(flTEQZ&JQ0&F[VUMeYGDh0e@eecG90GFYC8r@EU-h5DXq+1ZDY4Vba[+fkY@f
+
+&&cG$0bprZ@ljmQShdZ#f*rCfHfYV5kXK0G9380dmVFh3@PGGDj!!i`1Z"NqG@F[
+
+D@J(*F&9lJ'P1FbeV@G(QAB%D,'TV39eU@pTD''ZVGV-'&m2[(%TM8-cmkQ@Y,AM
+
+"dG651Y`h,(TlH9YG%qq+KDfXZD@Y[U(CcGVUfYZ@,fZYUfY'KRT2Jrc)fTYapGA
+
+S!H4&Fk(6PYDei[ZqeQUJVkPVASDhHjYV@pj#rL90V,E"jDTVj@(SXi@e+p#![lU
+
+LTDfK$K#-ZXq[U2BJEaeUA-rFU$HD#1rjSPK'-TXZGA8q'PS&jGGphKq2lrYVkZ3
+
+1b%H6cN,9q9h6d,UmMErFbk[-Pd9elLE!AY5`USkPX9`fPq9K@V$$ke(@QHLPQ6J
+
+T3mmh,+2IaG@SpFc@KMD+D+L@[P!Gq9lFiQN!3RR$b*QjI&P$!llQ0VK3L9Ni1&0
+
+IYDdY+`"-hKCj%#q6+2U+h,2UA*K3pG,h1%BeR19DcQVFq,iAC@$qHp[3S[+0EXA
+
+A-R`D0B35[BaCG'mGCC&[)*&[)-'-BT4Z"qX&f*Dd!IpLqPlFdN`CqBf-ppGKDLj
+
+H9Xq@e9F$i@a2(GU!A`e5qmXEa`4H&U,cCk-2Cq0QMTfPAZjYTJNeZmAl0TS@hi[
+
+`Z`6Y2T[L8BAC+eUA8r83I@mc-UP[pS9q38r%jNCeDd00M3I6$K9@mjCI()GiQHp
+
+YSjk8Eq5Gdd*c(epmUerZE3"JFmV)0q1!(G1VcL20-2N51(0DAIKGJ$TK$08YTbp
+
+jii5FdqjP,P4!c6LN3pqTYY)YC9$hBKVb'a-(ArG9YpBb&jp0D1IH'FShD5,$M3[
+
++@Np,66A`U1PGLd%CQiEk"C@E#d,!+6fhMZSjYk'fVQe&Da[e`Gb@*[S#RYMF4a2
+
+a9lJ#"a0qK6e`IUZjq+dkkKjm!9eGG3f)JB`&6'61-6@Aq6@1mA%RAiM!eq)@-4A
+
+jKQM8P,a*I8REi@8fLSSVd+%@I0eAedTdc2$`IUL6*Q8GIQ@BS`VbM6SSlM5rVUQ
+
+'1P9ped[IieJ6aJ[i&DK%(E'DKH"@p4Ja"['ZH[ieMRmY!UHT&PpkIT!!"pDdeLf
+
+[*lCM0+m3Z06h1%B9)"%!"b#YNMF5-2@ba&Z,(P4[pi%6c'%d`8cQ89rYU@Y$6$f
+
+QT-RhkY(ApFKH6m`(-f1KKc)5fm+hQZ9[B0B[U$YHe%$L#`S-$(1D"GP5,i$B32b
+
+,K9'dLfr#Ck4%"JJEQP5qL%beT[T'Kp5MApJUpDKq2I@MiH@6TYj,(*Mm$&-3ZfT
+
+`A0$JHeHLRH`hiL$h*BZEA9HlJJL,r5E4qSe)0G1VAi%h),)CAd0eV85Ym%*U`1p
+
+&$DKU!hM13NbNKZUh"*Nb3-2`Z`JF%kQ%MCJ[+SE6JGpU-['&eH8h-034YH$EI5d
+
+B`RK4RGp3ei5'BQUm52945%92q)*"bfqV&[Hk-9)E-*N9M@ZJk#@Sh4*dSr3IAS"
+
+V#FCB!c(HQE54i*HDJ'VD5b[cE8NcH"@c,N)[+'j$bPV,[fbbL&G0NI"#UU0Hj[*
+
+X*J93Eh9H$&PjNh'1llU''JV"brcU9RF$F4QmQ30+hL6D'NRUc4`ZkP9'LVba3rQ
+
+Y4J0HC#6UEc2D,#hI8!DV*QT3@Lp-KcI-!hlG6epJTb$"S&+,k[R'!&qFLI+0QF*
+
+[Nq&`5-3f%SXq6pfiL#V!Ep*NM'1qF$,aUak%8ArE%83PQj*&+fU@Yf'Le3kp-4T
+
+E#qj2&YF4,XA4BPX4[5HCfiU#bDi&5b"qNH`Y`RCQ*YTD[M"ee(Hpp$f1d44@p93
+
+c!G39AfUAa'p91``M3E%%p9+FkEjUBVhQAN900(l9mkpad[E&DM,eJZR)cT1N'!r
+
+53qc2C@ediQkq5DZEEi[IPV+SV'DXHNA(,UKl#`4r83YPU3AQZE`p'ZVF+ccb6Q"
+
+QFd1ca%dLJhpp!,m[i4GlpY1RFNJ3!22*B$NdZFLi8DY5l1Z'Qc2ipAaNm10YmUr
+
+"aZ*fk8CXQVhmCTiIXYmeV+2`@UpPCM0Zj2&l-e"-+ArTCFBqPe[`5QPP(QlV[bN
+
+Ld5I,9c0Q"%Lq)qqLU6Lj4d*"F(1b14PdfFMr12rMcBpR4Qbr[4ih6i06Np2QN!-
+
+K$JIl`'hq!TEkB6@i2+XhYp&dZ)m9Y+c`e"V!+J-B%Z#*!6'eC@@Rl[IY$,,8kif
+
+rH6RY09QjfdXV+hL0C"Y)e10mqEj1UT!!rTDl,ra5-f!LXJID@PS-03hJ!r)k#pL
+
+iIJ#0ZIJqJdh&9,ijbjcT-J5rM+P6Tj49T-kVEDQT5md`@`ccbbU+k!(GFA-PMBe
+
+5!l8+AQqH@N$9AGLDBbK"*aH994KQQ'I--44Jdb0-+6"MpZaC+BD&(P#8q3fY"PX
+
+e"ZNF6k18[CcB$BCRH8Xl-&AlIiMdjURcQfX,@TViJNlb68&U"AfSJI1D"AA,UVd
+
+'rq1mPSCQ,8Y$Bf(Ae@#BMELkZQ9mYL&r,C%`I$0EJlZ'8ahJ&-6cX6GHh#,"*j6
+
+2(iP"&PeJ5(1TBHX-f-H!3M3!AJb2q@UQlBZ9HJ45Ck*q$4*qA"rHBL#'%`A8Ra@
+
+NC1'EG9)pc+$qQRkF!fqk6f5aM3L9adZ!kp&DAYjchbJL2!1dTRck'capHNI5jhj
+
+0M,r-a6Pc9[m2rb0M,`*0A5fEDM(2Q)Nj%jf$'%8!LDmE0QMRPaCb23XmfeS9-c!
+
+rPq0hKI6,$&4pF0#q(m)IMYr#lbrKphUmr`Pq(m([lIM&4CLRQ!M'[H$r!feeV@q
+
+LZHmABbFRGBjThV*Pf0m(jSXaHPYpG6-fj!AcjTL`1*pGjhNDD%bJR"`SJ3TXc1V
+
+aaP9'3GN)XXpI*f0bcfPZ@H'Z0f!4YC!!k"S1&(Kk-[2[TlqV#Am'5fGDRkrr"$3
+
+iA!cmaCM)F*ZHJ-Xd"pfDCq"r%(kc0'DCB%eH8ISaBr4Ve1,rG88++f(YdmC1'dZ
+
+Blf06ijHE3DJ-4@68["S`hm"`[8DE8TQ++)#KIR9&3e[DUda&2@%N[!BU9l!)iD-
+
+,9V5P9FfKi9e3-+F-@lmjD3[R&0"feiJ#heqdh2""+qdA&j`"b3M8Y4-&0FBmlFB
+
+%2aqN1XM0(YI8CXkkEXlhe1+*hd[Sfb(r1HR2HVAqA*U42lrr6`F%qGri6rp8r!E
+
+qYr,62dD$-B'rbell[TVTi22c`Cr!Xr)c85ZCIIJM[c*rqI%E[qlcd3NLhhpMm0F
+
+(aAe4a*IIQpr,Bb+r$MDU15RqrfMXP6e6kNpQj&r,[dEaM0QrXhh"Ijbd%4N+Ck4
+
+RC-l-QT8pHjkYS("qd9$%c*TPY#She0#)`CrQH92Y,j8Z-"3B5KTU@R'(J"13!%h
+
+%X)BD+YjZUXB#D6DB9i1A@+da'E2M4N`3p@Zr-()d@m6Df9IC[f8Af9mVaLNXLP+
+
+8V"UrGIKGM0rPq&f&hlAiABrICr#l'Em[iMH%hqhiI3frZr'l&lq(m0Z'ha2ia@h
+
+[cF[!GQBDTYBBTKBDTYTcTVkF-lA#-2804"D"0q4RS-GZ"6ZIJPqC$G9Tp*12B+J
+
+!mEf8(J06Plf-E)b5,2R*)"KhJM*Lb@bmh#+qTkkS@di2[eaAfbaHTYCM9bDa%eX
+
+Eq2HGeCKDmP*ChEbL'V0kBPe0+hm`AXEfF5kEKe9Q(GlZCii9Y,fTA)'c$f2H#[F
+
++f[RF#@UKPXrI@0B'@Yc!5N'V*-!SV&XQ[A!XZ#f+63bE#[caZSTrSSbLIrrLMaP
+
+))$llZaMpFEDV@FcI6pmrcA89fm9mPc0I42SaJVk18$'Iirqm,RrpGlAkIpeYrqI
+
+[aCTHVX(RYIQi,ri#EDbRqM"mMZlrlL8E69pYBSLTmI%hmq[Mb[c0A1U0Fp"ek4G
+
+Sr9e(+K"1l%%i*r+Bd'b!3TR9fU(9JdL`PY(pmZ@r(,jZ'E5#0&Sqre-+2$j'Pmp
+
+pM-2pR*-e-Pe)S[q9Pm+mAdjLT'R"[rAm+j-C&H)@QrpZr0Ye'mXa85rN2rjjS6%
+
+`"MIkBk$)-!DDAQ11iKIha@0`Gci'HQ"MYZ-AUKjMeZ%AYqYMS$Nd"MTNBh!V23E
+
+hdf1J-$)'GlGMF)Xl"VIcBh#E25BG[pRiKCE@'#LJM)R!,qk"ad#MU3bhif@i)bk
+
+lKGmfr%,TS3cibi#r$2M,J,m-q-Z![`cibi#r$2M,J,m-q-Z![`cibi#r$2M,J,m
+
+-q-Z![`cibi#r$2M,J,m-q-Z![`cibi#r$2K(!rpSi"m0r+1"Ic6`M`EqdF!r'[K
+
+(!rpSi"m0r+1"Ic6`M`EqdF!r'[K(!rpSi"m0r+1"Ic6`M`EqdF!r'[K(!rpSi"m
+
+0r+1"Ic6`M`EqdF!r'[K,JEm8q%Z"[a6i5i'r&2K,JEm8q%Z"[a6i5i'r&2K,JEm
+
+8q%Z"[a6i5i'r&2K,JEm8q%Z"[a6i5i'r&2K,JEm8q%Z"[a6i5i'r&2K,JEm8q%F
+
+"rbMJ(`AmSi"r&2#2![j4`$m+q%F"rbMJ(`AmSi"r&2#2![j4`$m+q%F"rbMJ(`A
+
+mSi"r&2#2![j4`$m+q%F"rbMJ(`AmSi"r&2#2![j4`$m+q%Z![`6i5i#r"2K,J,m
+
+%q%Z![`6i5i#r"2K,J,m%q%Z![`6i5i#r"2K,J,m%q%Z![`6i5i#r"2K,J,m%q%Z
+
+![`6i5i#r"2K,J,m%q%Z![`6i4`,r51!I#I`MJAmNm)m%rT(!2a,i4`,r51!I#I`
+
+MJAmNm)m%rT(!2a,i4`,r51!I#I`MJAmNm)m%rT(!2a,i4`,r51!I#I`MJAmNm)m
+
+%rT(!2a,i4`$r#1!I!I`MJ(m%m)m!rK(!2`,i4`$r#1!I!I`MJ(m%m)m!rK(!2`,
+
+i4`$r#1!I!I`MJ(m%m)m!rK(!2`,i4`$r#1!I!I`MJ(m%m)m!rK(!2`,iK`2rF1!
+
+I$[c$JAmim!m(rZ(!2aciK`2rF1!I$[c$JAmim!m(rZ(!2aciK`2rF1!I$[c$JAm
+
+im!m(rZ(!2aciK`2rF1!I$[c$JAmim!m(rZ(!2aciLi'r'2L,JEmBq)Z"[aMiLi'
+
+r'2L,JEmBq)Z"[aMiLi'r'2L,JEmBq)Z"[aMiF5VLb!6qBZ!["[jLi#m'rQ,J,`E
+
+qBZ!["[jLi#m'rQ,J,`EqBF!r$2L(!Im`i"m'r-1!IaM`$`2qBF!r$2L(!Im`i"m
+
+'r-1!IaM`$`2qBF!r$2L(!Im`i"m'r-1!IaM`$`2qBF!r$2L(!Im`i"m'r-1!IaM
+
+`$`2q)Z![![iLi#m#rL,J,`,q)Z![![iLi#m#rL,J,`,q)Z![![iLi#m#rL,J,`,
+
+q)Z![![iLi#m#rL,J,`,q)Z![![iLi#m#rL,J,`,q)Z![![kK`$m8q)F#re$J(`V
+
+m3i&r+2!2"IkK`$m8q)F#re$J(`Vm3i&r+2!2"IkK`$m8q)F#re$J(`Vm3i&r+2!
+
+2"IkK`$m8q)F#re$J(`Vm3i&r+2!2"Ij#i#m%rN,J,`6q3Z!["2j#i#m%rN,J,`6
+
+q3Z!["2j#i#m%rN,J,`6q3Z!["2j#i#m%rN,J,`6q3Z!["2j#i#m%rN,J,`6q3Z!
+
+["2j#i#m%rJ,J,`$q!Z![!2i#i#m!rJ,J,`$q!Z![!2i#i#m!rJ,J,`$q!Z![!2i
+
+#i#m!rJ,J,`$q!Z![!2i#i#m!rJ,J,`$q!Z![!2i#i#m!rJ,J,`$qI1$2"rjmi-m
+
+(rRcJc`IqI1$2"rjmi-m(rRcJc`IqI1$2"rjmi-m(rRcJc`IqI1$2"rjmi-m(rRc
+
+Jc`IqI1$2"rjmi-m(rRcJc`IqI1$2"riK`$m%q)F!ra$J(`,m3i"r#2!2!IiK`$m
+
+%q)F!ra$J(`,m3i"r#2!2!IiK`$m%q)F!ra$J(`,m3i"r#2!2!IiK`$m%q)F!ra$
+
+J(`,m3i"r#2!2!Iimi-m$rMcJc`2q21$2!rimi-m$rMcJc`2q21$2!rimi-m$rMc
+
+Jc`2q21$2!rimi-m$rMcJc`2q21$2!rimi-m$rMcJc`2q21$2!rimi-m$rX(!2aM
+
+i"`2rB1!I$2b$JAm`m!m'rX(!2aMi"`2rB1!I$2b$JAm`m!m'rX(!2aMi"`2rB1!
+
+I$2b$JAm`m!m'rX(!2aMi"`2rB1!I$2b$JAm`m!m'rPcJc`AqA1$2"IjFi-m&rPc
+
+Jc`AqA1$2"IjFi-m&rPcJc`AqA1$2"IjFi-m&IK`+1T+"2aIiFi%r&rKcJ6mAq(1
+
+"2aIiFi%r&rKcJ6mAq(1"raEJ[`AiE`(q@i$r&Z#r"IK[!IjEJ2m@i,m&q'm"rPZ
+
+!raEJ[`AiE`(q@i$r&Z$h3@(3"fd9(l53!(a3)db%)PiLG*S5(rf`Dh$0i,V"MB1
+
+E"lF1EKrF1IMZi*l"[B2l"`m1(Kim1YJcH',`j1$T3HM5h0VBUHddPN)KYd#ACSD
+
+mc2p5qJh&$C09EfBDHkI&QQ4RNDEM6+pR"TfTf6G3ZU4da@r3+IipT1Q!5b4NpXe
+
+Q)El"pdY`"[DLirIa8Zq+6*Z0llV*Z@abDFrSmX9EF0+dAM1EU4$e1biYAU!,JjG
+
+URQqG5a[r-HAM@i!bVcq%Z!0AA&RfGUEN@*Vi9cd3aC9q3lZQFNXDXlRaNK[I5rR
+
+Xr0ri+aCKqcVba*IfD#m$qD$a!acY(6c(@[a@'*UC*[ifLm6E"-*li!V9p@'2I,R
+
+I@p8C8Ne6JFP&f!ZBU+Yh9GN@Cpj`9CRaGec4J@TBPCL-5L5M%SkRPE$32q34&mL
+
+6&rS'dR4qp%ZpNAd(QFCN"Bk"DC(!hq#`,YlLYRLM49cP0RH%S6,0a#+4iDE5RP%
+
+hJA3mGFZ"+iMi%L,f)5)If!A464GpJhq`QMSJTjj&'h4ZEIaGd3P"hS8(S)TNGNA
+
+18UV-+SqiDeCp8D#6+e+3!)*q#)9Bc*e8&mF0FbI9D(,2Nm2bT&MP%DSKCQD01X9
+
+CNkC$aQe+Ujj9EA&(H4@mLjqLAN&N+2+d#68ZRdCCG,eGAS8c'r'1i4M$QH$[P+3
+
+d(H)65RXdQ&mcYXKa0GZm2P((*TcIe5c&rEZZ"kZKqqEkdTi"AV'(2%*Y3q+YhRc
+
+33lIIZSS*Q*1HdKkI1Fmr)e"$[k2BV8CP(RG5ICUGDT%pIl,),c)YNVrLH`U0#FJ
+
+$1TH4CbUMLSH[jc&(FG8@Pm#3!'2bL0kdURMBAfGQX2$Gm9epTd!SJM!A%@Ca0'-
+
+j`K@Seb5QN!!`0Rq+mG!`aXHIBI`fekT3#)hX4#$mqNFX-U%b65Yk1B"HVSR1Taj
+
+&a!!EjN)L)RFR9')QHq8Xl2LD30HQTfP&ebDNM13,RMGS5liEb`MjDLJ*,+L'@NH
+
+dHe(P0+N'DBC+4cH,GQZ3!$r%E%icI9rBR-I-fp#R8a+Y`6leS8pGKY&1,@D(@Gp
+
+6dCfqKk,#e%R4k%T%RemSbQ0LeQCEc9m"(X0N095BJ4FpeCR`#6DI8f[3"RSRJrI
+
+1`d#Qe&FXVJ9Xi51QSIc-VI1ULI@J"i8hjikD1M[jP%9pZdXS3c0Pd&S6`Kf1fEm
+
+ANSfMGJqQp--QDf)PpC3h)X&DY89dS!mADR(8Jal(IKB*%3Zlk`ef,TKM*A)BE,[
+
+YkfQjH$E5FZRDr0Cl[SF&GeLNi6[dAf#JriTQhqh5Ei`qDer&cZ,Y4(kZ3E2[)r4
+
+`KQXKBPj%c"N4-lm)la[%H`lHkl+!jeM"2GmM3P2i(AXp44T4qckL&q4T4alr[Sp
+
+5c,llD656R&6(B%,DD$%cA2fB'3Nd-l)Vc9m5GCECBIJLdl3L-RpMS1T6YVK8`lf
+
+jRAVS8DJMh)2,AaNZ(TahiLl6RR2I1bIekV1*9Q)-Z[0,KcXr$@JjZa3('P$Ddhr
+
+3a#X4d-Ncl''2V#3Lh8`fZj%U+SbDX9T[*$BI,P`FRJmCD6TlZmp(@I-lKp'1GbU
+
+p6'CG64jCFkL2XA5["XFJPpd!,"l4!m%BIrGl,FAP'q,2i'hb%(Gj#)T%[(mN%XR
+
+q[%I(@Hdr!IGEjS`8-3Ze8X8bU4,Qa&1k3YFbMj8cedLCHfl,QCZ3!&QT%qRFk,V
+
+DF0[E2Ym2Gh21heDjKI*m"rI)%&bCXl5YCDNi4'BfmJr-bGF&Djqka4@1DNBH($a
+
+dh1IlNFDYN4()pdk(Y4,m8h+DValDJ6KV-#r4"GX0DERJbrAiL[c)M,K--h"Y6q"
+
+4L`04jDm6UKKMT'D@613`m6&Giq"`2jI*q4-GMJ-XXQT,5l,YkrY@Q#GI`bYIA[h
+
+YCG'PhaKc`@&ekBHifF!pcZXMh1`KMe!$-@I,GK1[d$*JQaHSbLS),&&AaCaZef@
+
+RS#lT0)[ZX(q41ZB21R%l[YUacU9*a2h[HE-c!9'4"iGG1U#+20L%@TqSfK*rfMI
+
+iF(['!-1dk0cfe@rE1),!fm$jY)'f#[Sh(qbDA,1!MF5#GD1ZMV-8p3HGL%M*0V%
+
+SrfYD!L+!,KlSQ[!p"GqV$&T-lh5$bYll&aX-eJm(N!$V`63p69fR%AZB1ekk`k)
+
+Gfeb'Y'5`NfYC-)ppcJ5a+rPC&RqJ%[`&Ydaajk)R5NELG#964U)%(6Z`-)#RR(F
+
+@%!K,F1D!`hJSDqGfQciYl#HpFF-I88rGF5rf[ZmQj`J3(,Y(L#fChCX@MHi&"rC
+
+fX08i@mXK()Ie+RZRcXUQBLQjVH"ab,%qki8I)11EQ(HKJF08'G3DXf'(0M#paN+
+
+pP2-,Y8VLHCTj"Adm6p*2mZ$GLHAM9,("`aD*1beSY1b`'NDldUQQ1hBNSSr9#bZ
+
+V0fleJBKS9"2Ip#9bAM3qX0RlJmi1"D(&r[!%F!hbl`2VKR)ScQHF%4LZ4'lT8!6
+
+aAFa0G+YA54NZCDqAFeq+[1XRFFX9cYbISmRmC3AGBNl`DmFfahahV1!`YC'mYak
+
+N0hPC6IfLBh1HE8LP`eFqaCEXj*e6rR@`q@[a+SUcSp#DTJN`6*@KXUJ-'bl`SY#
+
+2cNLmd9$BqGcD0M30TGm6`5!mrij[%V&4#"qMURM`XR[m+ASTrrT)AR2HM9e2@aZ
+
+Ad@3eIqNR'ELpiM5Y#IppJFk0IBR"HKh&VN)T!VXdUH6')&pl"DL6!qpU5JikMKd
+
++GVP5hq@%+PM$YjG@M,8[lGq*"N[jE#cQXc%PJ1X5)Tp62i*SkTC2-IQ`I@V(rS5
+
+mPa1HDNL3!$IY+4rBmq34rUX'pMq*I&+'PmAiAFereq#IX@ZH((qbPhrcpc#2i8X
+
+$IT'PCp@6ARS("be*de(GdFNbB@TSFeU*r8T*DFr(Mq,288a&dkK9pRDPRNHpS#Z
+
+[h*,ADIZkH"e``G`T@)lCL`U0QPGb'9!Xq+95446HZjpfD0mlPmMll9qFPGJPfAA
+
+Sic99@a+)"FLdfTl0HbNYd%[eY!Y%c1Rc`,mI(,BYMpMRNl3$k0L*MJD6"fI(*F$
+
+!9H+9("SpPiTjd'A3BKGXXj[FXLdFA`D23+B"13%@cVNQ'dYXE3IBD'mF92l@1@c
+
+bibPAE@4J5e$$+hIfhDSYf*PkN!![T+LX#QbCSI`J1$JMAZ8cD(RT0e3E(A`,9'1
+
+P,YK4'1KlaCJaNr1S`UV@V21`$kM#!5h0MeTe2058`CF5R99mqkp4kHeh%Y@M+eX
+
+JQEE&`EpVQ8rj-e6Sfd[)c2hN+Sr3*e6FXRG1[8US+l(rV!dIZTZiI#fJ0PQfeUI
+
+HC*A4p3L`(cCCNj!!(`aK!G-PP@'fVjBh9Jp$EV&q"B6i*#GUR5cf*Di6&2eS(44
+
+cli&HSkbdp%E)abm#R&jPUqiN-D'Rl,fGl`5[#&6q&C6r1c4A,f&J"Q4bPrCmRqr
+
+J9RQ%cU[*VZ-d(3UDFMY%lId#8FHl"LYY0D+GEfl5mP,#R#VDUGqjcV'Z"E[FQJI
+
+i6DBY*0Q8A)q%qSZF+N-+LbbjTqq9Gmkr#L%JmaiKaUDL[bN1%j[3'#l9,!9c+,b
+
+Blm!HEF-qjjlPpG9F!dje((Er2UH"6b2N`j8'GM$@*1,N6k)UN6(YD(0GpLV%V[N
+
+4R#L!I9#FXhI(rleccSL%"BP[JSIjq(CiRmP4YJ9Fr%4`YfNT6r*kKIe5ScDB8B9
+
+"U)"FI3K[#2Q`XG5[FM%LI@G+DpUj@D2dB0EM`D`KhlXFFBf(Y!Qa('HY-2AAFIC
+
+E"P6E)$L4LZeD,YmcP&(hI0T94Md%!9+GT[p(*QIpArR%KQT(,ZU3!$'8bq4%k!U
+
+*ai4-ihLN)PZTSSD[KQrVXDQI`rI-9-Q+ERTId-DBV2BQAE+iLmR[p$lTml#iI)E
+
+Z660i@+5pRYM1J![ba2afM5[$2kP+T'X20rV'B*Z(EfZ+#!'kjJ!B&5G"b(G1-(Y
+
+F-cc2B[(qbM3VLc9MXqFiR0L*69UPb-q0H4B3e'5,#H*06l41`pc!GUi1q3Dcf0@
+
+)$NDN43$$-N0aeAS$,JDUeP9Y2)lYjAaXFl0,1,q3!"hl)l9eG9lFM09M`%URjSK
+
+,-jRB1H"eiBH9f26a1QUU`@SicJakjLfM5[PkH&IP6,&+Zk3FfXGK&`MqJeQB@GV
+
+cm!&B@`CBca61mi)LLjSaLE5VmK'q(C81MV)f3RcABBrUf1r%4CGM6qN+'6Y4f2N
+
+9(U*3-EUcT9iQ(Z&6ec"KRRAD[aI'Eh&@B$q(2R(cr3e4FAFFIMm&l#$dq(*(*0p
+
+5U0IGFCLC&H[Y(r!GJM'UL2I,BZc@8i&J'TmU@8k@j#(H[Q1$9bPB6a428mGiF&i
+
+bfJE4edjV*h9bNTqa)ErR(ZC+KP64Z8if,PdJ8jGh1)6B%lJ,mCcN0FJ5e`DRep!
+
+pRqHJG,@eJFF'#'FP*X#hS%R[iV-$Hk#UaPK9Tmph,44[-aSejCf0dGJF9Eh@#EX
+
+0GcMM+)q2ZCX4-jCh@%"LPkc2C"&aF5TE'G*&[,lJ`ZkSi`k[4pEL,819V'%DPCq
+
+V[H&NBBqm#SVFXG[9r"1%XER[)9FCUHl#6c*T$Q0H0+84kl3VBV&d,prQSEqq[(L
+
+i`R@m4R@m4LfZ'$l,b#qc!ch+,N[J@lBG"VT[UV(JmNAe@QK!,@U0#@b%*I#T%K"
+
+pNa$&%9I$c-k$IX65ibT1pSCch8bCbk2R5[8)m(S%T(TN"(VIL8X%aC-rh%J9FDS
+
+#r8k18%JX3de+Q6jGfJi9@)6aj!kUP#TQ[AbY$FalH`Sfq1,ITej81mm'TIQGCl[
+
+-f*jda`lj8Y#HPfGhGLJa+G1"H*Nm+FrGpFpVeRDY2,HYZmca[0TVq4bS32fi$j,
+
+,c&U0f+1SLe5eh8#Xh)r+TCaNUG',VB[JQ8"pGb9(VULTG3Q,+p"f1ef"QMHKl6R
+
+b[,*['(YRm!(X@qFLP[HPGlJ@mXl0FXF-jr$a5QIaqcHlDqrfcqZ[P2Em&GerbRA
+
+'MJ5jfeApJQ``djmcPqHX&TQYAUhf6`QC)G,CVrVRD5qMF1d5#0#6fd9Zl-UB[Hl
+
+Tl&B-cBVkC1C1PfB+-6e9f[-hKhR@[#RdY3%-P0fJ*X[k`'3*@(Rm@M#EFh5[`QK
+
+l9Rc8h+(Kpah-'T6jJG0"+!kFaT4TG1#qV#E'hl1iCMfe6Hl5)(c'5!p@BpYhj*-
+
+DQXbNPhh%,KeMU-B'89@2-+qi5YV6Udhp$JpBA(I`fXZkIQE%P#ebT',6pVZCQfr
+
+BrZcmZiicb$e(UZ#EcNY5lY!2R4a0FkV90`"1(XfC#BDcM9F,hB+V1-4rJU`3Gce
+
+1Dc3EkDNI@329GlS#e6j`DEKkS8IAU!)$H!h0Z!2BD$SiUqq0f[HV!1S[%dA02f+
+
+I&EL!f&%VGc'R"lLXh0&JdVfJNMJRHCK$c$rX#ba@D#Kk!Nc+dITh9@M8R+h(h$2
+
+BlYABd9Rlkh4X95BHTma96AG%G@3b[ZM2N!!TTT*X)LSi*kR'EiNcNq-Y%Aad`"f
+
+q8eFCFrR@A0#T((UqPj4Yi9K+A+I3UEIimbAlmj8ZjRGaQKF%U@k6Zd329-i(Nm,
+
+&D25HY2Qr9&*A*$B$XGh*S2MYG#%AIVmR8'QC888b4j'D-XpiRQIlF"jrF%1Gp@+
+
+acbIi!lHhZYTjHV22akqP[PbM+hKXX-Lh8YJkBG-jm-*rlGG5AQ2H*fal9Z-UrKh
+
+YfGIpHD55&JpH&ZJQc5*@1PRS24ke8SSSj$J+KfjiDeRS4G(lY9Nm9l@8U`6A3rN
+
+m(kmh9*FSh,QBFVT5i(*fKj5-S(25R6Lm$8Q8iY@&f!"XF&Ka-F%G)b2+r$R9P&3
+
+EKF*ImMSALd*qa9R,X18EEq'AJAdj-hRd665A-ri1NGVIQY9T2miRZ&cTf6QY@d2
+
+T"QZq'#U2Rj&JYh(m)(%49p9)&h#hJ8cPSJX8,V@&EYmZGF,6SK1LXCHliI2YdZF
+
+GdC[h@PImj@Bl9V%I[bYHZ5Q3!0j@Q`NeahZaQ"e614q9Q5A0&l@0ihcKj+afLRf
+
+G0@rqDYEdCGFXSpV9!rDE,1qVi[JPKGQMi18E-A(frp-'5G@4QKDb4C)lX+XE*,@
+
+9LI+j9,G@l%V"iA$lBfl2C@-U%eV[0qB0l8[YZ2iY@Zqf41rDK-[XX'$5h&cDFbY
+
+`"86q'pfFRHcV#+2p5XFKrmi(A2!rEAdDKVBqIhi9k),b4Zc8PFrf2r@i5rQV6UR
+
+hmGF0J5h+590(Q,LekP$rpchE&bGXfBlH'0Ub(EhiRlGXCSrmk#LQC0F)jl+[YIY
+
+fAHF1mDTN"@EICh28R(E!h6X&,D4mPFZm(CdZpPJRC91hmYJ*(ih!VBqk!VHe1[U
+
+UNFQl32%dEMh-r82frlTTLf-6A+T9c+PFT3"R[-2I)laG[-8rb9%"kkddZ(Q6$BZ
+
+Db2Cm1+(T#2'cfhVm2[Lm,VEHMlTSEF,[DPl$TJ!6jLbAb6c[&eF-ADDKU@a9caf
+
+B(2D&QU8Uj2@+#IH8-iEhfRT%U(hF8dlSCULAbmT%h&*Cp9k,VPBcc2MKHlbqFbA
+
+@k"+X8@pljU+5["E+i#S%U`r4,ER"cYYSCfC9@[HM@FFQTi@MEd)QKDeT'*ZVA-l
+
+H*'H8qMEa16[A*DieX)FD8"2!+,S9k+@IS*i,rU0ZTLlb&kAQe&II!a@S359qkml
+
+jFfB%lj*9pHYr1ARFE)+l"$-RDblFM88H1qRDh0S6&CTpMe(PlN0LNh*8ZJU)lDr
+
+#ljm2A(4bh[bFL3AF6#8fih+pS#qNi2VYXqX1e0[*D#GXU!66ZhJYNT+,+Hq$kKF
+
+kA[8@-k6"ad'+G%Z41AbRJPe$UfhNaZ1M@X&K6#@TfV*R0pdfJKJrklmRX6I3!IP
+
++3LkrMEY9IVdYifk*T'E99a@S@EelB+3URHGP2D[DPIp3$a1eh39Q2@aZm1Gh1fM
+
+2$1li`l1"2@&RMCqj$N)P-MRqbF!2laI!Ehbd26#&NER*834QE'U0T6fVC![a2i1
+
+YieHmV(UM[j)TRbK`"4I,h9&VpPHN3[##@X&I0@qS6CFjC8XR%1TjS'YXE43dEf1
+
+@kBZh$('9dk[rB6kd'%FkmA6KchVfRIkRQG,p-f5jIkC)$p3'TTI9PC*K[6G%BMl
+
+'(FYrRcZIcCXIh2Che$*r&96r'ApjF36eC5cf2Z6phJipl80qX([iSJ,p0ERR`K,
+
+DZ(G!,m@q9m'q2[5KPc*f42MVVQilHa&D2E0H[Td$aZ*JMIifCl41DD*1arX&Am*
+
+X1J!dR$1ricEkTjLk"&Z22+m(d1!e*'HSBEF2qM[(Z,dRZ2Q+AVMBZCe[qri+hdm
+
+(TQ[EjSiAa"A(FE&G-$FckqA0M,9"-HlI#mcIGUjFBeqJY&mBZ[GlHb[0P[B6JP'
+
+*'JSf`1Uel`UZGU@Imj)MIFDQe$Ea8Kkq9H+laZc[Aj[YSeFqf1cAf2-&1%himYp
+
+GT,hAhM'"q[1$+[#2"`0iT"qMeiYQlKUa5rrNfSrekd@AhJ&GU5#lpILcfml@J3i
+
+&MciLEjRH,k[DJMUXjE0LXM[5kq[M,p,Gcr1D62E[rjC+flp5rj3c1bf(Z),DkIA
+
+H'iTfMHcje&eRQZ$Z1RrSKT2Ma"fAc4c8VX5m#caeb9Nq[,AMCZiIYhBTclCf3AC
+
+[cI"mZAJ6THI-@mP$E-DH6QGfq'Y6kQ520Jj2YN*jXYe*89@"V+I#Ih'ASIDa9Zc
+
+&fj0"`GX6lTqM&aY"p[fM2ldq16bFbBp-Urf9iQD%fp(H@5c4H9,d"LRk+5NkleF
+
+0E%i[cSmDSlp6e)63@q1$HrfA@@m%lhK#`c`iZK1cF@&k3ZF"b%3E5dfrG`E&0)V
+
+Hh'640$cC+R6)&LcN#JYCB[mH9FBU"%qA#GLlM9F-#[2NC(T`kmIh+'2'DiT!&@3
+
+h"SELIMJJiZV(5JcZfQ@"cDEHXAES4-qh(IR*R[X,#,EE+Mpc5$CbAI4PGQR2TI#
+
+R9me@,r``FBJ$UqjPMre3E*Zcq"E9[U4mYV6RDRh`NR+MG%f5&E`pHTCMfcM%%D4
+
+IRj8f%1E-fLMR-fF@GJMVbhPZh9[XhVl,c-Am-P2c*0eVZLj[pih8*4U0qmqhRpj
+
+rJ[hZ)IDV*SRS!RRBfla[RJj-S,GAGd!h,-LZ2aKQ),EURAq)JHc[4TIpa96q@Ie
+
+0M[H1ChMb,dB2Q[1[GfCJdRdK!,X+Hd4h,P4Am'qj&G"U-1'mS3NBYJ9QJUjGXD`
+
+XXb26cb%0GL"`hh8!M#CfdG5Rq24hedap15pH-Rf'b,l[1X$[9bjV3N(R`*lLkjj
+
+2QrA2TXKESM1[AK&(1B$1AZc2MNRb9RT(1'E1Rp*m`E4*FE*ViU,+l2,LjqcJVbH
+
+*QCZFN!$4khl-,,i3B%Cm%0!c9YLX5@KYRhSRiC[["K9dM9XRC@fM(CR2Y)eU8cl
+
+9*M*ZGAdf9ikYNZ[f"kXrUG'aaF&E@D96J*fRl&+MUXY[UJ)666BVkXE&ZM6S[6'
+
+hlNMkY#i-iZSA,aS8Al,Z'$kr*VKm3f"Xm1pMq[3IE)f*f"B-+JT!A%9GCFHc9UC
+
+k)0QFTGQM,[2R%X,BpEILHLC6CLrmZEKR`F@'[KHbG+5K3-0GL1T[k"$pkBQ4hI6
+
+4kb2hBAeE-G'"ZEJa#!!*P#MqY)hA)B#0JHJj#T-dZl!kJ0'mQ2l*"U*D`T2&m95
+
+2E##1@Z8,MU0CRh5I8pTZpfmM$BAB&BPk"PkMqrIq61T1$TKF&cMkB(!ABIcjU9@
+
+5EZS#GT1V[fR'X2LcHd5E-I`CkaJVpJG(T4X&mlCASe&hc(q,CIm4J5@kXq4GH`H
+
+fi)V69FY+P$ZiRZBRfN6@Y9RI*CV8Bb98E06PQAePpU`8U@B51alh#Ar#p9rD$NV
+
+C9'd&[q)1Ie,$ip@'1%$60kMhAk8[jcZBJ0Mi"(68Affe3eXH[%mGQYCQjjhB+V1
+
+[IqLDlhI)(ALLdMmeQRNqa32YbcMc(S1+"YRqZF1V,Dh5XM1C&0I-5lBiA%prLU!
+
+QfCpIUDUBq89PFFI#Af!`Z8Y3h$6cRK(D6@p%$1[DQ,S9GTIZ#mc*pm3X&3d#Djp
+
+GkZG#&V-HJm[ek!AD*HBYmGe1SAX6a%iq`a23p%G0rVL$HVae[iK(YR6IJ+jCbA`
+
+$,PAJYJeaJhb2mGk9bQG%j+%c(&GGA9#-k%`&dXK$ad(I3pGGA(Ye(8,@1QK-UKR
+
+cah%FAk88fGd5K9ZclLB4Mj[)hG!r3hbZ2"hHh[(28q(0HRNU[#hZMV#aqEkN-U8
+
+lF,(-`hPPmZiTU,@ebLUXG'p*Zf1'jAl1II0hY[kJrFVT5qmq2Rpcd32M`perFr#
+
+[$rreh8G(qT@q8pp[r,Mm8ZHP[N[epplpb2U$&,J"IB)9`H(900B-lddVf3DfL@f
+
+&RjKRfAjfNTeKjpJYGTIGC`-+T5*@ND!S9*3U&LS@+Eb+PBT9LNl&6X9Pa9h&!k9
+
+D'Dk-8%BV0bK2+Dq'a)CB3aD&l!Nj%0+M8U[dUMM9+Y9Ye@"SBHLLd,@K@p9UpD1
+
+`[,$fX2I#lSFpeUJdHNf8aUbaDHSeUcAl09Fd0c9h4X@1-SibM8SIP6dUEe6TU,C
+
+4(D-1M1SCGA(8P9%hY5UY6KZM0@U6Y9RD2'f4YN4EVqh3EY,ZdVkR2DDp0PSe1QU
+
+dHA6Kk)@MAD0AM9ilHZISFk2[MhidHN!AVB[6*HKX1SHZ9&HPUp%ekpTdDh9GZPf
+
+k)lTHh4AGIGh!Q1Jak@-FBeaM9SjC-fEcQ'eMhKfcGmcq-BI'("R6-qEdQ(0M,Sb
+
+j0ZE"Q-&`6EJK2$dm0l`U[#EF%pi@[MhmD2LCm![KPm0[K0m1Ic#@MBdF'c[@1$C
+
+aE-VBc,%jBkeMbmHkaRV(VKblDZbGXIIe+Rfb2PZITkr40qTAk6[ekr5Ep$[ehIU
+
+$qL2kNrSVqP[kZrV(ik,(fFD9M9XiVRjFmlM@FHhMeShV'[IZZ!2M6Sil1qlUZ&[
+
+MqL1L)q)LM"'C%EN4eSLLL&-4jmI(MFmGAcMqFH6Cb+X[U&m`[e$k`X)A&NHe4A9
+
+'VB[D(29He-'Sme%ASfj&hBek1%%l)A*#h!66"-Z%V!Qj%q`6["2D*UbDX'(#Ha-
+
+16cJqiG5%Xa2Z6AJ3VBc@48G%ad@ES[1L#k-h4Qq0hK9p*2Tip2RS5p&ASfp(2iS
+
+HR'LD@$UaCU*RBY[%94-l*fkGZ(hLRSQ(*[C-2$hal-5,%kp0[$AalX3(%`GL9$(
+
+D'(e-N!0QM$h''H1+mFDXM&N9XbCQ3mc@Q"dalmEXMcNFFbcQI-cPQ1XaYf2Za6b
+
+)kBmCR+5G&$%TCP,FT-4*PNRCNr)Qf5Bj*P91@MbTCP,(T!f6ZLCYRr6HT!16MNc
+
+UQA4b8YqNbj2Z6(S`U6p@&DZ,MBL0M6A'*XGQaeTM#f0,BkYLRE(Hf*@aZf,ha"k
+
+)24cE%pXEHcEf3Zb9f'Za0f-Ia3kmU(iakX@%&bd[jVaBqQ,PLiYHV(h4mq+U&pH
+
+pZ1R&A5pHI[&fA'4F6PaMA([FaVMYF3IM6X9GMVXp@6FjBV*aF[,Nl-QfbD@6DbF
+
+h6pijZA[bSFP(*aqII(VbKFQA*PqEI'pb[d&Td"SL$(%'Nb(6N!"M+$)X003D@Jf
+
+V$*f'MBBZ`dl$EX0H`e($5F-C`hR$0F-0`ee$rj5i+IBT#kFXQ9)lTA'+GdV(P$9
+
+60NcC0ZAG+AZR(*KbFXVC+4HQA*ebHmS$'!"b'E9'Jc(4Q'h--pU0TFD9aMA'EFE
+
+GaP2'mmD,aM['qmD"H(emBRa+[#hH(Vm`IR(mK[KYmI[MMmCILlmE2j!!S%``*L3
+
+RT#IN*0J5l!Q9#8X5kK1m#Hd*Da-f*fa,f*23RA!ii9M#mB46#@F6VL4F6lLEm#$
+
+Km96$e)5Tk91cTqC1Y8ee6#fE@M9eb93Ar1)[QlTQkSkTHkEZRhTSkV'TTkHHRhT
+
+pkTfT$kEf*kS5YBP4LE'*#BR*LGC%Hf*CiX,%4BR14&HL0l%pX60aEH+Qa1f*lbD
+
+qPpLGH#La*r&NiTR%QiRh%KmP$Na66BZB&M201#ePQQ9DcV5mDBA6(00FdjURVCb
+
+fHYVDD4ZRECYfH&V2Y"26cN`l2qfk+F)8CdSfCCTb6)8QKfQab@PbQGT0UdeV61Y
+
+-QdaE68G-adaR6(fQbkCVTKZQfkClT[iNPU40LNb+56)Q*5CP*Z8Q&58Y6QT-@Th
+
+8PE3MD8p56p,*T$0*jj-Z*9e2HT!!V%l@*dFRab8R*KFQPb5A*bp+hT5m1lNlq@$
+
+bXH36bHH5,bCI5Ek4I$[j`A6ep*6TTG-A6kqG[R,kUZRVTQqH[R2klZPlTaqGIRc
+
+kUHPpdbp2[chp`I6(+ES8I8TF5R++*58VT5LP0+8baCRL5ZP)fC!!mQj+GmU"P1-
+
+TTe+ZTGa1HC!!dTmbN!#U6Y@R4UFD8K06Fe-,8dY5RDQeUFfTUe2ATQj2hCQk0r9
+
+JDQrUUG3,U9G5Ek6H5Af81Q"@Q52-dHBiq!`X0P[0GR19f@QZ0lHD9jNlcC[-@me
+
+lc3I-*meAc$I-pm`2cIeTT!LCQQC--k@PT'@QjD59TLe+UdhcT+e-@j@f,QeVfUk
+
+d2@N(dJkR(8dlNABUl8VDME3lD3r5"LdD5lJPfT*LbE'8@GSY1bel,(XYKbh(,DF
+
+Y9b`2,)mX!c18-k*QC-mSQ9%fBq'-aKQVCUbGXA&'ei`G-hE2k*jaBXD&'9GQh*K
+
+aHmD$'BpR$+DVdVAT8HQakBRTj[5Xp*ad@hT*HQAkS[3PkIATcHRYkChTQp1hTZp
+
++hjYq*2eiqURdXqNAdUqRhdYrP$k3!+(1d'9%CF4Q'$-b-k`C44NP'8XbA"R0'5X
+
+c9QHXcGL8X5eMCmEZM2dCKc0k-NjNR-lSblLFF5hM4XEYM)&-9@C%CPbQ+G1FQC@
+
+CNfR0V-adCRSbfc-l-cGRlX`mQ(NLmdcQZFa,QGFcEfEHbhb816"619-h-f+QDDC
+
+PC[E-[*Q&-dYR,TbjC'E0c-DCE60Ace`cFph-c60hc$``mr$-RTQRCrE0[$VceXb
+
+l-ar0(-K5CHQcSV,LXSaCTLa,9RD@0FZH9Cj9P9@EjFPUbfV2kXKDQl8jDe[@VU`
+
+p@3Hb$QFGccUCeCGe+HY1e[fXal18Xb*QaF`bcNUHCCQ92FXkbckVG&E9,1FXckc
+
+@@HfceXlD0'[EV"fcGXrD2q[`V'1cMXmk2H[mV-ZcEXbk0H[qV)&XGACdGPbf+GZ
+
+F[6#l*VXYZc2l[Hcpf5Hccf4Ib,k5I52lG[D$l2lCE,CkYRjfp'c$E-[X[0P&XdY
+
+R,jbpH(EYE-rXYYQVCUqC[A(feYNlCVmlZh[fSGR(CKqII@VfqGQACPqGIAhfhGN
+
+2Ccr18HASFZ*b8R,5Fq`j5h+m1@djUh)kFpEQG1AXc$Q5FbcR9-l&R#Xjph,kjqM
+
+Q4-k*Q@1FBjTMQC-eTh41cC`eFlE0f6[Rq*a6FrVQh*KcGmj!,X[9jNEN4ZHDFl0
+
+b#h0,FaIP1R0VFaYc1h,Aj@l,hCfl2rG)lTRFklRhjQVQ4Xb0Q@ZDQcihHkjYVRe
+
+ZbGcbZI9c[A0AcZfBZhEZjVREjZkBqqlF3h12cMdeprcF1h-Ic1h2BhRU[2#mk$a
+
+$RLN[0km`Eh&HICiRVc9[9pkH[)0j4r*kmNlPRFdlRhFaldlH`lc(qEVmk(a$IQ+
+
+q*6mh[c5r+YqClmT[cQr,lmc[bYq4[cIrB2k4r"2jCr)[j0r+(l3DV#R`K$I0@Qr
+
+YYCkepPQ[@+pEEeV[c'2cY2-LjX&Yr+dTR5QG0PRhYMj@1"a46NHbV)C+k+p#qGl
+
+ANfM01i!Ek@65m4q`%HVmKP$aAFAGLG,)X1ed40m"30P9UC2caN!mLN!Ie&L&r49
+
+HSHLj'TZUb0Y&d-U,1VpSK[d&dqARri'TK'qrl[S8NhB#q[r$&,l*-8dI`I3SBE)
+
+FKrih6&31LlaGqLNQbc'SlXNdfA8+2"jiq"EmP$14qf&*6l3+YAR"5'FB*NChr,F
+
+TMqQ8)BeV&8XAQ+C@,CmR1qi*ca*QS$N*U0dUMP0LP93kZkrbhH-TGh,aAHQ'lK6
+
+8lJEe[FQ8PGB-p%VRYR5V[8(-$I'YNF`ch5R2%XB%Y#kqXGeH!SbCA1%[QDS(K-T
+
+hc#QhQE5k1lF,RCl6iV,Z&,p`1d1Am-0@b8i5j#ST1AmkjK-8Hm@$560hAJ)p@El
+
+kpN0E(fiiI)G*GGkFA)q3!(RCHi3V4Hh8)[*J1qfka4H,kL5PGKm1U$#(Ve2RGQa
+
+h3$'iKQqVYjH09&"YUj8UH*0(GP[ELj(lF(a$AlFF(BdAF`kS2V8pfYUH6,jhlU[
+
+IjXVaE8k(c8dZ(T4qXR8VNpm4HffMS6LaM'Z%jaU+E9e34[E'`af%C%e$6UV+K+D
+
+dN[jCML1K%4Y[VqY`3![p%GJ0VJjf"+F2j`"8Xk'$)21e`3%&#(@hXVhb@Gf$KEc
+
+MN!$R![K#B$3ZiT3#9"[&C!VPeMEFQ2dLLd80IYBpjY4k50K49K-@[EK6+IP"#I+
+
++5E6bT@YPF%NCaSTZXMhU4R1iT4cTBZl'R1jD1E4hMI#M3!l6pkie28A*ZmNMZfB
+
+fQB$F0pNcS`c1@Ab,SC8V&Crf['pNdLED4YJ!215)Sf4V"U4*MM4%fiCclkB"8S9
+
+KM1PK3,UY)q"L`(`hI3cXZ#18a@qdmrZr%k6M+#r-ZBfcLa1N8K,P(#N"P#UHVL,
+
+!2d*a%G)0d6cZ,!2A0Zl(D(rlIQL#Bhd,GijLhZ@)PQmqRhME1)1Ca5I##I0kBJA
+
+beN&IF0MaKm3LH1063,Fe*UmTaK3#mTkl0&hS"!!m"eMSl!Ge8I2N8RGCmd601,)
+
+J23kZ-+aNAQd28,h%Uhh-MhRC-1DA11CMrbYQlH[%G)SER4c(C'mXbVQ[&AG#a*Q
+
+HCA[jQ0)MMc%b8i1rkKR$#QJ4VE3NqaQ@cKJBjNZ0a)qm24*,8Y@cQ&)ch#fBRU#
+
+Mc)#H&,D*hXRQ5J!lG@RMS8(m+QG)d-6'r-mAfP(aj+SL&+H#ES$-e)`cF*6c3LJ
+
+TDSPb3++0hk9m`JLJpidX&hQ"FKHXQ6G[C%m-hI,`m[Mhlm'r3$TF+k35rrL&'QP
+
+HbE3eGPCYNEB$-**MZK%RRNJf+FYRSGrJ!Z!+-Yld``@!'fiE$!9Q!RU3!,Ah1r9
+
+J8h6B3cFq,i6f`%H,)AQ+b#82*lAee'RHQ!6V[j@k&rN0Z$I*511U'MXML08K'l4
+
+if3fiV@c,6d'2)NVMU$+8p[9@EB&((,`1!(-6jZIRfFdF4@9EH'GZ55(@[)[(TNQ
+
+aQhPREZ(FYGLjQ-G5L3)a`#1Uc+G2NpF4hPN1X0(%NdT)4GNak!ENmZKCD2!+kf8
+
+C3D)0Nc`df)bjRBjH5"@Z3lBA5ZT9SHPR#)edmaCbdR,kY0q*$YbP`qSXE"LB6)k
+
+Fpq1ZKU-)j-m29$FM`,61fMkY-&8Y2UN`jk5Z-(VcEbZm'Zaf05VmkD`L1pJ5$rj
+
+bq[5)%k+(`"%YRZS$Uf"YH'm+0X(D61-D[[4L)69iL@S![L%6IQHb8`Qh'FU[JR!
+
+'jI,CG"U"$*N"*$%%Q$YdPG#IAANQMQE2rSIXUhPfddqdFRNcZ5IG"EeAZVGBMUV
+
+[mE+#adaYll[@Mc[F'U&84K@PJF5,""NZ"T-VZPQ%!rH9+L+cRS@AGl0`,p12Jak
+
+DVN@LXQV,LeDIVja*ARCHNVcX[#a3Q8iii*K+iEIU*P8V*PDXP'l(SGZpHi6,R8!
+
+ZVT!!rI"#a1qd01kE4raq`&r3J!Z"(P%HUe(KGYY"Acpq1e2KRGLTKb-MfE`iNJe
+
+@ILdB$QSPH[dZ8H"kB'MT,rULRZ(#,lbSNqD3!+m(5Y0Gj#&!+l"mc0LJ6P#[kN-
+
+YN!#Y8r4)!dX(LJ,bh#)6,G%ieqV$YJVe@X[pe`Mq5iiYCZ'Q-&`$"`k4IZ*lk*8
+
+TG,XB02'Up!"MTm'UeirdM93rcAHI02LB"GH*iEVce'2!dCj2G3!Hr(E+I3526TC
+
+$E6eYk2RQ[d`!ZVH+q#6[9Ya`)()F['Ai'K(aZ"Q98009H9hA++26!UT8cGbP`L%
+
+`+V$3!M%pa(f3!2*3SUD6F0'ArXrkX%GmMI"FeH[1K$86GUBFCFhJeE[VrkTqG+S
+
+T,"GlS$R3!mUrZ[C#*"Km'iP9+,G06E`Ia4*eV`F,4r+`1b2ZqVJA-"%m3(@mY+H
+
+fS&KS`H0MD"m41``laeqM*B*,D&Il0cDA+KFDf`'f3MGIec3dB)Xd0H$HV3N1JZ$
+
+Tqak*j6m&Ka)PUaRY99H``0E(hRCC-9Z`Z`c5aMRP!2((!eISUc2(pP98DeBHkTh
+
+iJ$[#m&Q+i+JSmS1(qRAP49"'A0Pd$dT-'Gk3!$ke&,Nr3Qprac*2bV+5kc*&I[#
+
+JkHTU[R%mH!q)TSX,"PlY(RcNIjp1liGSd[!G9a1b)mHGJe,%1,f,AL9QZK5aJGi
+
+3J9b)J01M3kMPr8@B6`A8DrFA!8XPae**1pdDmJ)eieRN$&*`aEG%8i[V@R5YeUZ
+
+!PKGHa'%@FUKie[33r",TQNhQ$%G9jePk$kMY[Aqj3Gd*rTQIB!@r1CD6c,5kq5b
+
+%GKUJ810,HmCRQqL#S!44cQD+JSiDSZ#@"e'ChKrecRH&Jrd`*SR(3(8GAP[`RMa
+
+)lk-DBE-j,DN4GLY5m1CQXIMbX$KmZ9J-2(b!DF%4b+2N`5GaSCNFMcf-pp@'#V%
+
+T6BiMaRpp)Ql+83rZ#QU`CrYihX$mD1V2BMQ,USVQhf&kaeCS8SJbd5(DjS(RBD1
+
+3!-FRbc1mbe2p8DNmkMNHKIfUMM*i9"Z25THMHVJHri&E2'U3!$p+0)!2h104d!$
+
+38Gc3BDFJ8I6LTU)fmPbEH95Z2qTa(V@&4f'(T+1@mkKY2'Um2kU'4lh%Sr4Q"&&
+
+6H&5)4q%qAdI*,ZE!54i&63!G*4SB"dlc+(LidP&*2%VdrJkYPD21pr1Sh6cUFAq
+
+8h,mIH-#MS!LNSplJ8AYXAq9pYpNIpb*pAHrKdI[JF!BDIr5G)1m(1)DYrPa021T
+
+9(J9HT+-DH03*feH*)9a[j2ZReG+V+1SHZ%BEGRfrFKI(rbUf$8pK,UCc,'r`',J
+
+li*e+J*5h!R"2`jK$8Kl%36(""hH"M$T-hVC-4e,6YUaQF+`&Ee2`Cm5lJpNLCf+
+
+1JhYVUYASc'b1EjIlKS5PbTDPqCIb@e@RF*U5h8N4f0jL9iQXr[+LULq"`FaX1L!
+
+Z%k41BERQh4fmVQHSVYZK8+bMj[+SEXVe&[N&9&&92#V-Fd&T5%H98G4"*Fr&VDL
+
++bZC4ETi,QNBkbXqM[$`Af)5+1XGlp'!ic`@95"dPYeS(bE9"q$[q1AVZ2)m5R`[
+
+E8AFGp6+2NKjm+pBIp3b2'X4cEI"(m9BYr+IF8p0ErSPjEL@2bZDjV&PcMLX0(Z6
+
+6pDe%Ia3j8rK2c6`ArDqTU')H9F4c@62hA"b2'X&c2Hq2m[#S8TkV5)lUiKF6"r0
+
+i,QY@G9hP8G+hEfAjShEaU)Nmei[qU+dmLVZ3!2"hi#0(4ch*SbEcA#rlSalN898
+
+m&jLJMPV!SqlLZ9la4dhM8F*FhbVe4h&$'rl6*6cAGRq8m*q$06bA[LY#P2#IJbk
+
+Hkc9rP2#IJidm&rFU%R@@mjq$c6cAkriSi6m(@hNZU"lT+1%r"eIbA'riSi6r(#4
+
+I6H([3%P$4`Rr1GM"Fqhe4`Rr1EL'jq,'3d8*rcQiMZH#HbFG*IcRi%DHDj8r5[M
+
+2`Fdmeb&rP2#IJeYj,QZbRZAmjq"fRZZ)((@'mjq$j!SUr"hrY$c$qFr"GhQZ9Rq
+
+8m*q$R&qq"6p-1ZSP([8FchA8(l@"4`N2I-Xr!Fp`pCL$"hNZZ0l68D+"G*!!mm#
+
+hr&2Yc")Hp4,2GG)I9F'MK!HqjCpUCp*je+Xm9lXr+S0(#6Ymbcppc[!,XS1RH5j
+
+X'9A84rGjP2$!Yr`6j51qT6PiRZI#PP0([FDMp[&FZre4@hM8!CkVaaqeRNFGjVR
+
+JXN0(LDHYJjc6lD$YU)S5"RQ3!(2bYrcGr0&#(R@-jl)Bd8IF!mM"1caAQcp+0)E
+
+9E$l`L&mqE"R@-JU0fMB5GFA,Ke0iqG$jGch02h8NkUIj4EfbhjPED"4A@HVc1IF
+
+cr,Y(mRXZMN6p((r(drbUrPE8arQeDi10d[IcG*ZcBeFADH!%EhE5GHU1*@EZXJL
+
+)K#AY1)5,4$$S(8jb*j9ahEH@qpLlYjNlI$G[leB`%h+mhqf-6Dc%"RB`Gh2P+Hf
+
+UfN)1SA!&G,+mZ'U6VMMN5G-eqGDXZDRDZl5P4TaUD#3*X15-V@!fCDr#j45hl$r
+
+BBV&Hfj!!V,ErdGReMLqkYBE3eZJEhIqqmj[V+h#"a([1ZMjlHmJ6FP4PP*GmPeh
+
+R&CTE6FDaV(XX)2)p[C9*irHBXR8Gm)$lANUM2CGR0EPIJ22)ZEMp2"A0F!9JZa[
+
+&SCHjBeA1fC5,+k$Ja5RGB!NLTBZ0ZpV9H%9h4PB&0Uf2FL3,DaVVP[NpfcRSSNT
+
+P9SjA4)N1AelNIYaNcG[2i[Mp8fM`XTNC`[k#l`AIldE9[XYVpATLjimh[EMl3GH
+
+Zp0dRj)paj2I524H-lp[GqlecmTdDVYkmG+8@ET8Gm!(M&0`@"Na[mLYAlU,eC5f
+
+GDDSGLZla)rM9pc"QMcr'EfB[)PEhHV`IBqeFYk'Hl-'Z@raCZUj)Vi(jG,1AI1K
+
+h@5chp&@+khV-&AAPje[P*%p8)G8"NBdAhRKp@XV0I&j8+a%j8#Rl9Qme06$m4Xd
+
+RJiLaDrIHf@$1"qAELaGbk#fP`DIZBN[*j8I0$HbF@'palUA[Kk6HpT4JCqYEm4#
+
+-CTX15ZMSFVTm2iiEN@edRBTVYN(SIUR[J!ZdG88IhQeQh)['),Ke")C)'GeN!AZ
+
+kH,pJ6%!PF"2"5SHH(+&AmFFThEG+l244Ceaii0+P0P0F[26G"pP1fI3PMJ-A1%k
+
+[SZ6bYIl5$q%aBJQr$kQ#-dca0e@V&DkS1LZGTY+H&cF5TU@Aq9fiRqja+TS8Hi!
+
+0M#la-5UfLVE#9c(!8#8a`#I@9iTN$-MI$"eXHU6U`8d4f1E!Xr##f82q)dqIKEH
+
+f0Q4c`Sr&hG"*fcb%Y&jKjNlEq1CV"YG"Pp4P$cYiK#SmELZ2%,-mrCKI%JAPflZ
+
+8%XR*6'K5)p9VfN(F@bE6A1",!IHip`(m+i&aH-%i[#fI16#Y`8k6hK2#IcdBF+#
+
+JEZT-jh#i',[S(Hi&4@2!09UY89E82!hI330Xj,&(EXTaVFpZi!fHK9bFkI8VE)T
+
+6@i-mLia&Y(+pCdAAP#&'VJkM-A+Tp`HV%BRYSE'+lMD-9Yb-L3kRT6"+a8LP2@c
+
+i*)9LZ1PdLrjbe!L(PJmf96F%VVb[hE0iK+[BcULK'aDj1Pj8jei1S3bjE%4XCp4
+
+(B##if-fK$5`h[mJq`36qfaQA4,-NPDR)k9CRA!IlkVHGFI-rBTSr16H9)Y0a48P
+
+YK(5[,k'cI(ha4ma`J[+Q0PhKhZ!-2KmaBiJfMYr`jqZN@9j1MZ`kijbC+G1CDKi
+
+`rGi(0BN'G8AR4a[QrE8'Vh1L$@'[GRCpUAAbb8kAcZXlY'eKEb'cGcSeL4AJ2km
+
+6ZM4qYINB*1(ZV9hUEH&6@#XFd2@Ch0L*ce3J$qJT9a0%$HDd[Hd0F"*K$@#6p2C
+
+&pdQe4TT'8**`(I,!T%`+R'(#mD"d3LR6mdiS&GfdCPPphE)hPlCiDYq'G9$,Rk`
+
+J!RlI2b0C*j!!U$Vfif(Y[JSFZ-mPjb8VHT,h-PSjaQfY2141+Nm$jbE)-jY1#2Z
+
+b+%l1,1*M9E*8Lbb4!I[h*QF,6fKdd00CRXrCQ0[-BkU%ec,-HGYe@HK('q'k,23
+
+M+cTH@2a$Y5e,hAj&NL$ap*!!EfmPh34MAP!4`TUZ4m(lTQ0Dq5Jb"heE6ZilX52
+
+!EiB0R60U0APlakZ(pdiZ[ph&0b,mT(EGbIfNG)D6,Q0R4!Zrl1N-TcIam`UHd,P
+
+)p0R$cA9[d3#`0`Z&j!TYKZb-$erS$(Z$m#$-p*QhAVc6SUrA3,'TE$@c`(X[[A&
+
+dVQV@H29pQh"Tb4Z&d*1eNJHc*[*@9X,FEBfCj-"XYpVGf+L[l(6A`RPChF*1pf*
+
+NV+BF3aklba!cME*dNQHc$%4@)[+kbhJeeMC')l,6`0c*b&+%Yjj1jSj$MQcN+%4
+
+F-Z,5%IIZGFVh!#*p`QPFc`Bqcp+*8eY65-Fkeq#fiM[%r1NIVQF*cj4U+2IRm9+
+
+FFl'8*BeR+H&CF2mCc8-(2Xa84*P`1lA@Rmhl8d`HbT50QT35ZlRED8ci('eIcPr
+
+Kq9)XbIjXL(*FS@ahcRI-peafTL0V4Ni+h'ZB1CrlFFlR!MRK9#2*8'c!T1#d#-!
+
+K),X98dTf9fXiBlM($3'@qG@YEk,6bBU82l91"hVa,MjC*[l&KMFkb59#Tj*(ZS8
+
+[R8l`Y%ke8eh&Bb56QmGli89%P%ZCQGcUerPeVH*@09c9HhXpmGI1e6)[(TM*Yll
+
+L8UPcM6pUN!"`GY&*hKUKH'fFjTSEAP2AXlSS$4iJYbX$2jY5'@q(J[CBZ'`6GbQ
+
+G@Q2*(jmeG[dLApAkUSdFReHUpZXmlm4jYbGED6r3@54e5$PhTBVX[0kGYN@U96Q
+
+IcNjMf&rmaJ9H'rS$kZ61ka61'#YdF&BBlEJ36G&cjm@NF4`)cPP$m5lf2akHD5a
+
+Ler+UZ!fiL`Xl-2A%,3GkB`T(X&T#8$L-)(-B!E`rE!@V`(B!Ad$Ji[aLV0JLRHX
+
+4Npbi*dhb"Ij*AXdRqGf0M&h!*,m,IEPEQZ59L(P9RZ3'(&-BKk4*ISGrMQFMaj2
+
+5()GV0Q1c0-H6%2H!0-IcRGc*"DS,,J4@)Fj@j"@1!5p`*h2bLShRK9)RpmpL[Bq
+
+Pf3UrPTbYSKZ"b(q*Z1b+BNHajaifajLLBfQ+aU)p)[VD[,Xf*ASRK$'i9Yj%BMF
+
+KNe3jd,`4Ykfm@cFl[!BqSFkZ`pl,82Ic64Df'XBUZKMYM-'1a&$IN!"F"5UP&81
+
+0LiH"&fJc0F6ZZmqGk(SXK(bD8mfrlmTMA1ZTm369FKTijIemCcDYQIC(bXXLGQb
+
+i4fpc@0hP+jR6EJJ*q)lPeM9S-@$RHQd[Q86FUGi(li08(`)cV,NRl@$I+#r3&@$
+
+,[Sdcd,(mUQiVqSLHQk"ELjF!ImR$Lh)f"QhY#cVq!KmB&j6m"Gh3dmpIL[&bLVr
+
+!%fM26Ij5KTI$r!9hT$epr'8#AZ6bC)FG,q+i#MXQ1)Z9&lQIj!Zf@U%"IRd$ED$
+
+3`$EqFJ`[cC,L6QLJNlqF`JX[N!$S,6Fdi+'B!pI`-SZr(-E,02kb$bpbK3@2D+'
+
+"3XUiP+*&1f8TC5cN++$ahj1iNZk3!00'qUa!MdM`(pdhE3CFkh-QR$jEQjJ!TmP
+
+3XJ!lr1JLRpXHHMYrV@T,j8C5+6PpGYN0Cd)`bjCJPTHVYV`QCDQqB5,q91V8TT(
+
+A5jLfK*,'")0H8Q`q`HG-*EcN,)Ib3"XB!'bdBqkRrYDjjc-"2NCckEVLpUIDdY#
+
+Zec%AihB'il4VA83p2a)9p@U!+a(%ViEL`DP2FSJkme'kciMFT(a!URP,MBElp6N
+
+&R4I%UMa3F6lUZSLDRR+V6!ZFfCK6@5-9$C5*pdcV(r2h6'JJbIf)D(&pG!ZlEDH
+
+*Zmc%E-1q8AHT-AJ,p@Q$jlcdV$"iKCXV82!QSM-C'r)SaXjNkKTRMQ'k[e+'SV2
+
+L63Cfi2$U#PL)KbRU%hiA&`#aV2R6bTj&",k%1qlECPQCkULBk@kqKCSfLqq"H(r
+
+3'5GY@B4hJC[9qlPC$HGQ3Ha%YS#E680h2bGaXcX33pkPZ0PQ4+k@Z&QPRj[P)-G
+
+5LCYa$c02iQCqa0dYF61iV(#8m`X*91,dF62Z*Z4P'qfcTD2iqL`k#PEMVIGeUH!
+
+BNBGcD5YrYqmZSR%T%hPB4ASH8hbhXA8qc[28dHilFKHpI0*c$92S12*Q)1qhS2"
+
+amUFji4UZ0qH,f0(5QHhcjH[)N84R1(9GjHr#1GdJD6kk$BAYqXYGKX*reqGkL!Q
+
+*f(,mINhHkN+hVc1'X(8FiCdfJhV)QHh1E3a[[GleMMZcd9(@#CBk!A'"-@IFdBd
+
+jk)l@51C@1LfS1HjBZ4'!AdEdLAj,3`A5i*8G-qE1,MJa4QHSb(SI0(#VD1jF1*9
+
+Dj1Z[+(!8H0L6lADqIFC&m#'id%k#*qe'GP@m'LUmUKGkeFB,I[F,VpU[(24GE0(
+
+`6H9GcKM"#ZYdQ#L61%qm#bjr*IB+ZXArJ+i1[+`GG`8eQGld3qYDc",cc1Cm-r!
+
+TUe8Z3M5R06HN$p"k0#Arb6RapbH"&h0rVIEGd28)2H"Z*C8ZhlFpmPi91hAYYVU
+
+MK(5)1L0)DkQ61lC4qdpFZ@MhUjJ55ELH%JrImQU8h'1piZ*U&5RpcD%pTlT4@T(
+
+Z022YI$Um"1I'BjE`,IXiUGPM5U4-+m&Z&P-2[ckD'MN,q1lJ$ElhQFch!%Z%hph
+
+18P)[kbaeiKiZTj0[9cKGQ#GGiY2(X*PG`MYPXJZF,G)K0N-&BA$KkG'&3ENNMrI
+
+VAXi"pR8`C`4kL5k&C%0Q`$GF96([`1DQ@p"R5%!2q[PHHQp,-RQ5kHac'K%e`+@
+
+(Ii%ZHTmLSRb)5R!,EV'Ala,fmMh4rTCNm9V4q`jed[i21I+qQ!UK-+RblZ0j$l4
+
+S-bMf!%8Slpk2#D%qh%&"k%MVMjMZi&&Ih%+!L4b69'(ZrRfZq3'INAaIiij%ICc
+
+B6FPV-*+&X8jR1')F,Sed&l3'fkcNLJ2iAEP-Mde&8[N"&UjI$r@@"&aaqI4K3MN
+
+R8BY05Zi[Fd%,0*C,ei(1$kJ55IF#q$E9BT!!RllQ%''Ua53,&&T0-SEN4UMpKp-
+
+Vi3j91R%GVqbk&ZldSR-lhj`mS9m[HqKZjZkUla'#4kB6hB#NIVK,1%@A$)ZmeH,
+
+'MCF+5L00Z8VQ&$a`CGipTXHfU!ImUdLRCP2"XSqDLN8X,c*`lqL,e50bX![ANj%
+
+"m+NH-pKd0(+4+ePbY1a0,"(Bi#THjmSZ`a8BpXaZF[!(,f()9qmUqVYmF,Ff6p*
+
+p``8GXmG[ipRA5Uplq1X$`,)BbKikFdkC8cYC6I%A6LrH%K[VHZ"FJTkiQ8Hm',H
+
+1Icr2[8Y241BCF%i8Uq)#9cLbb8lm`MV-!(VjQ-&IPdQjkhPZ%b0m3pMjXG0l$HT
+
+TAYXd(MYa-ALDc,`QrV9+eNaVDUlPABNZXhcpbKCEAEpK4SHV+-r$Y6A$lVRP%P0
+
+Z%lph,Xm-he)cU%Y1&NTG8N9hN!$F4fJR(HAqbkd5A+-NipI2rI#'@+'N$TI"kl5
+
+lJPcmLaCGjlXm!Sk#F$QBk0SYAqYp"jT"GF,+pcdNR5Z6T)YfPHDeC"R3P3#Ph)B
+
+q6EidFB1*Q`+0kaPqkB&,LlJbi-T!9rd+4I53!!ITEr+A00jA4SK&+12@a)QV,lS
+
+S%362F368FB(hl6Kb*4lkb*(-*(G,SVV4ZCrRS%+TSEbYqb+jqkNamAf#F'V&ihk
+
+8,C`kGalLZ%m*jd21BjT3G!5GS8KPcQr)@`ZI5a2KCeIZ&m-GFUA10i[,!ZFk))6
+
+2%1ka'PR@G"D9J,e$CD&(2EF!2L55MK9i9"D98fN*`5De'lKqM@F[*&5)k+,,eA%
+
+UU'peTF9`K&[+jaqG6hfjN!"[dh[5UlEdN!#$L-0(mE@3!$a*KKmHjj'PC9Z!jpI
+
+TVIZkSjKmUMKSAmaYJD'i0imieGUj9Ek"&kZJlFAk-rGfF2),T&f#lajHL`j45FG
+
+aUU46aIXbNk0UaSiQK9kFpD)[(6Yi$MI2!DD%($Aq("1N()XGaHiBkYqGb8)(TI-
+
+8apR-0cYh35Z*IV1KISa15A%89QhaD,!ac-J1"GqF`,3HP9H,IR&P-iSU,1cCd+)
+
+QaqZifSh2C[cG@9j%RIq$-ZQf&YIG3GeNhMrR,K'[IEQiq6jB`5%il-j%E+Sq4Y*
+
+#Hc+1AdkI1b4P1BBXfj!!)8@IlK8l!kfAKYdCiimI+fjCT)qJ5+NNP#Pm0Rl[D1+
+
+YU5J%AbYMUrRVY!k'MVk-&hH-#Uq9+4pj4J"j[KmGp+@Lk-JiQ-F0G)+dDd$#X-G
+
+4"#l%DY$cBHJa&#0a2pcPZraX4YXA@bChAZ'MDr6jDJYjA#lQ&i84CmV3AEE@[dk
+
+Qbh"FP*k5(9[@U1MbS6$-ccRPMVLZSFPrC6q1'2dU2[P$f%FdjhAb#(&NGJ!1"52
+
+Y8%2M(EV@rMUI(Z5ZLNjFa9(q(%IK8ac,JcK8bBAKUY[%$e)NAQ4G[J0"&5B428Q
+
+EljK-a,"DaM#VY9TFBJL6eMlrch+F6EL%3pQeHU*QE8Vl,$6i@0*$$INNl8LYG$T
+
+ApMM01hrY6ET5jQRXi@2Vr&95kR&%mcb[N[eq&-lpd,e`bTASpNGe4@"6RqJk,1Z
+
+U2N)hQKBl-aKZc&@0aFQ@@4&eb#RGTYe@)d23AcfY-kMpG5[b+GQiIcLhJIB2jcE
+
+SX@P69l9VF!XfIaQd%ZTA32kF1`Ke35am&fSD!kp8dX8drj8f-pJYpSVFCDc1Cp*
+
+,-mh,JD3+)pTq!e[j6UJC[h[j#ac4GPiB8YQHlDQ$k1ZFGVNfj9mA1k@e(&I8$Ac
+
+SHbAQ6KklPmFf$mF@#VhHf5YDPj0N[8`1I4QFX'Ii-KJh5ISL-&986'fbp24-58I
+
+F2Sjp'0eYlD2lH8`2DMl!-i2UX6r[#[Uhp,Uc!cMr%4PF"NDhERAK3lZdqB(ld*8
+
+"0c!b3IIa,fMJ$#5G%kfJH%9Thfb&hL[TrPl)SRS0ZdhUQCdEj6VTpp9dLak'Nqe
+
+,QS1iF+U&e!+4KEh%B-iYi9mMq0GUHr1JPjMTVIF',r*lZ5Fb"K3Tq&jRT![S6D5
+
+M'rB5ZSqiLdpUD0[Zhm2%RLchlh`ee8#Tl9$GXS)'KD(@X583m(L3!"eQIHbb3Jf
+
+h+RP`UV)-,P@f+%iS,LQZ+JD8#FT-T99CTPbYh+EFTAa2Z9pj5(Nm4"YL#%N2b3Z
+
+T$'N1@4R5'E)"cPAD9&NUTmUM@UhDUMUJ1Upk%"S9QK2D(,Sjp%$SNG$MSEfKjd1
+
+[KGi*l9FVe6Ue8CfS6P'AUe[9(HU0kLleG[8*p5Re1I@0-(eBC&K-@(TBGTJeE'&
+
+B@pLQX+0K[@(A`KjS)M8j'VZQ8Y1KfDaj$ljAGSdbM#U%dj99SdjaRbZYSqk0'Y!
+
+UiA8PAjZV,G3ZdGCU@lAYF,Qb$5jAAYAfDDpTEfV[MGD2MKZG1$TRG"RmVXb!hj@
+
+9SlH0hM2ke1LcSbrTP$U0,P*AT#[41H&eCD9ZQkjEGe"h9(GDGfj-dCLb-8['e)l
+
+T'[2HQ'2`Y(*Xc,e`ErJDq&MC'RiTr'ViVI#(iB0MY@2em,!bBUaME22BcV(EaZi
+
+CHf6XCEe@(k-hkB[dlIS0qZhMe11dir6M)XI&M)XECakA1Di8EP8@MqXBYf(FeR%
+
+laZdCechZm,KMF+bbDpbjF4I(A4jh$Ej96Sal1'i`)KcZ93)4+4&C%AN4pSLbL)8
+
+4Lb0F%Dd4+b2@M'mI[f(mj[([MRp[r*(a2H22MZmEIhhmVI'2aJp%kL)M)Sf4TXM
+
+Xb,c)dXM+b0V)aXK9NCf4AC(E)rG'(SJm(RNbmN,NjFMENIIKIbAeKGJA8Pj)Im(
+
+f3YN,5ekSID(a"Hm,(5qXI@((#`GI1"@9'*89P4Y9%P8H9409(p8He3'(,1[JN@9
+
+c9%p8Ee4Ie#AZNk9RJR*#a)4Sq'6*Rj!!0k&`3Z@%44-DiC9PjB4e%lC2f$AK!0b
+
+bl*a`CX,P#GIJPk8c@K@YMBk*0N4ESV1LLk*,SKG(ed5h4VG(EiMH(2eZp([`cK+
+
++2K[G&hdpqKDmXr4-e%f-Q'L%JjD5LAP`d6*eBZh%4ZkLC5eFY$`hmF$%ia026V`
+
+`mI,%fa2[64b%JjB8q'I*ME(%@'1+BKE',)laa,4b"bhdcl)PjNM-UCLc-9IJRk8
+
+pjY%Np56GT0K*aNRTm-e5-DPddT**YC2D*UfDY*'lCRNHEPN16,SEUiq0LNf*,BY
+
+G'1Z*lBVG$QFXG-65'RXVpPlX)"baj-DeaDf+faNh#'FUH`fA$$F0pkDSTi42LCk
+
+5--8aTAc+iLReF+@bImU9+GHRh$('`S0+%9bSP"XGaNDi8(R#Z-IB#`FU4if2ijA
+
+aZ[JSZ%qC'VmSIQ9m9rcfq(IM$m8ILcm6rb"K0abQR%Ki-(8VI+-m0rA!e+06Edp
+
+pQ+K-N!-d*fBRjL8@*TE!+mVda#26(TSfQhDBpTLk6BIJiH39ddQi10PRZQYk!2m
+
+QcL408MMmQq3N@C*bNQa*MU65T)9*VU6@T&9*(8RVi12NLD4hNlU6$L8G5cUGG!j
+
+16SiNh8LkPFb5Bj13!c2Kj16ZC%rbZZN4d`h6cG2cTTG0Vi*RNkET@kI[J'16CkF
+
+IQ(jiqV(T0kB2TU5NC+ENTYK55P,D8RT5HP21TPb8[*NSCbETU3QTjY6X9"ZFQG`
+
+&EbEc8YY51e)hT'j0h39[*PY6Hq$0j%MU)h--Gf*bYpPPhQ$HBqj*5i$(NRPT"q'
+
+SC%rD3i[D%Q@*XpbH86@MIXDk'C[6)p2,dU[5Dp-pkDh`1V)r`b#j'TQ5dC@a+q0
+
+8aJAi&cQDF6GM-$-fdjKTbFc,,-eFQ1Q#Ej&'q"CC"HFL6f6ZbYb6Z6rcF1Ba1"M
+
+CPAN@[N9Fm#f5$YFLUfGZQlPVjX'CTfCHKc148c-I`SI)a+bDV+h`(E)ckpbX[E-
+
+1`$R)rZb%l,,XlGRGfCHclm`1Rjdlqhj1$*apV-rC2DGacTNjrENEFlYbGqAZbEf
+
+3!(XjpfEZ(HkcBrhF#h0[`&Y(EPj*hX+mjV`fZ1RBaTedl-flNRFYlfEHlEalF0+
+
+4R'r+0qIAj+r-Ajfr1ApErZ(m[[a,qEIclq8rbKq`UUaDDk3ecTS)$adMV$CVXlA
+
+$ZYQkbpS$,aflV*IKT+-,K0$PHi)9Pl&XDfGcje[2(!9!+`VAA2dX(UkNXXNpZaG
+
+lQ)$B8pG'LhdRpMIBE8DpCd8eb1R636ZjQ1@UKMX)fUQ2kMrp4mbmLiXk8V83lJi
+
+JE#,0UMjmd@X2d@a+64cLmp9$Q'V9f%fP1HRk!RYD9)$ZqAIMr$S&ph%Cf$!r$Z@
+
+D2+iF,9RKqMl5emL8f'*LbmbEB19M!+l[ZDP2GUS*pmlNJ1rq4c`e+pTF$Dfb"MU
+
+['UJ4SHVcfpmQYd[KYS54lF[c[!jQM5DEYGLLME9ph9!XZaI'AD82bN0ZNb24!F8
+
+KAJI!pAmfZIkI"09rmb*LPRm[-Xe3c$dYK+#p+GVqU$@k$Tk,*b9JRc%*f[kSpRG
+
+4l4aHEF%[eBCA$P5EMLa%mrpDT@92fN59VUX1+SM&+SfHKeSYG6ZM-m-RDGGL3iA
+
+E$R6#KFEK6TJih!GZR&kQ`&PdErfb+SEU*6ZqLl@#PSLYZlA+)c@M95-p+@4VG3%
+
+D6p3ri@8Z0m'i$,Fm$pE#"6GV&%N3VV-a[qlJhC1'l@8aBMPV2(jhfkSMVHX8dH0
+
+0pQ2a5*ifARqZH#k+ADUM(KDeXUr#HQZ&HqkIe`VhiMqT93qF9Rb43+dHp05i!MS
+
+S&fI`qDh$-lKqH!CR*ba`4K&'2EAmIZ4Zahl-V+1mlmXqQG'aZ5bGVfIbQjMGF*i
+
+J+[R@"0$c'0i'C%6*MTGpT'+L(J9XMa9`!bbhff!l@L1!PjDhe-MD,`pli)!&#qD
+
+qHFG*4fkMkL@Z8J,$,%IQ9RBP0-8NRPa(q@bS*C@,cG"BXjR1,Xaf0DHpJ4R@42G
+
+[[C`('KR4b4"T(Hkf,1S*5b2r5AZR[9G*4$"LaJdPCfm1EMCXREK9D"!BTIN8@aq
+
+EiUeZ5JH,dmY)X!ZeN!$!RF$-Yb3`'S[T9'6[m)k9hZp5i[6bAD"h$l6+3p-HFie
+
+ZmAIKla4hU)pjDUUA[ENF&CTE9bZZXX+5``Zc3P#jkUe3jSY[XJP`9U#hThdH#K5
+
+ANBVTk@"k+9$pc!Z'&HbPMeKN3L9F9&46Rf)Dm%,1RPqCi'"T`6ZdXIlj99aHM)Z
+
+&Smi8NFrL2HkmC'KVT2UC$'IBEN0P(Vc*60PL+4BlqaKRQ3fe*jZc`2f1aD#Ke8-
+
+GJqH'H42Zq346@k#$60@pKc`Zh#kB51)N4V'FrHCCf8P22VQl)+DUi6kU!3FY!A1
+
+3!-XbLi'k6!iS+AMTDYKaS@a,LMEB"dRq2Z"Yh@Zi`D%l0dicm"(`N!!8q99G(6X
+
+ZF)I!R04b0BLT(+e8E,CQ9BV1b4DceIYXYQC9FSmJL1GXeIGepNcGJ`Xh091K+@R
+
+f@22b0Pare!j29A8hUR6hmlJA"l!Jdq9%(5TIb(8!JiP@ZP51c616hiJ#ST[R,VR
+
+f*S[$0DpGKjhqrNM$G(SJ6CdIaTPC2mI'4@Ud*f`r&+a2(RS#epK3AIXACqR10&"
+
+%E,jrfY"4V-)jD,KAf(1l48DjCh[G8*4#6SPY6k&V4[B3PH[J8`kkNTKh$4)[3Fm
+
+(L@X+hfCI#eH%RaTNZ316`5GRJDSEI#KDYAr$L5Yi3BHF(qHVA-H9lNa[K*EMZbM
+
+lT"mFk3ZUeN'RbG+e9!TVk-S8kHD@ASDNNJ'UC*60hE40CR1VH'pTc`8pa+bKR*(
+
+#PGr)+U3,b%YZUK(Cb"R05bkE0BTEQ16!,NXab!0Aa+@qj-q8%6GjQPFdeG5ebLK
+
+X9dCQprkb2f[QAF%iClDf9J['5HCc)jq+Z%-9jiJ(i2[$ZbU('"4d5NdHZMckkRV
+
+i+TY#IFkjD29cRD236FVBMq0@mAKq+28`E`e[ET0F3kE`'bbi4d%mGDUEmEdpb02
+
+Y5C'%hVERfSXL,hS-#N`DAp26Q63Y#``)[$k$jm)'brC1JkT3YjaCUe!98Fl)ZLl
+
+9K-b)G5JK"BMS"G!"+51BGV62dcJkd5(#a$B88+&L&Z1ac,`#4G#FN5QSqd-iZFh
+
+4[hG1X!IYFQ@Va0-0YKFD*KR%eD'aq+5M%1kdHBfD3@SYF$IdU+%i1jR&lB$1Ef`
+
+l&5M1KkC,E$r99`&k4PR+9XGHhF6p0jHKqP!6aF5!,T&8Ia#[Cl+P`&KXI2A#UDp
+
+JBJGq!`Tfd'9%9f6L[JaD8,GB@@4j!DjaYr0X*Pp"GhQhbXS5Uj[Uq1#*A50L(UX
+
+Gf(0L0ZN8*KZLE`m9[dUkFPT5)cL6kH1#2KMN5K!jC%Bq,''3!'PeM2M+TIe)-Ze
+
+(l0QJ(2-EPi-Fj)eJ0&dj''`l+P@'Cb!Hjm[h3IQTXq!1p'rHS[m#!rf$hd2j1r%
+
+X&$[H`0Z*r&b$CYp(k+%-ed,%[)LB-e$V3-cm)Va[#,cAC3(2XB*l[NH%T[!lf#-
+
+K8P3qm))ml8,P)`rD4%SV3cBm@6rIm+$#kPSi%L2[FY389[8Qmm'%0AQkk6+'UR1
+
+ed*dM(IAq1Z4CN3cG&A18%6i`[%0aNr)Y&6@eML%3+$*VmQHGG5QB3CVNQDXU%4-
+
+(eF1-M9B26L-`Mb4@lq%pdSecP%2E(HT3dVeXldD[h&(F$'jXcR6,&8U,T"k%+qT
+
+,X6Y*)@6"0Fa9UYLpq25kS2MG0eQ-SlK*BbRq*VBamcp$X0)34KT"Hc'(!eD$hYN
+
+-2-R2mdccla'MG4C8Z+0Iq%NqY3qrXQ@Xm(Vj$LQkBp'lK)FmX!!bId6&!(c8e$9
+
+G),LS9GXmkKmUV[hVFkiSU+*16T[%GmR3Ma&A-`jR,[9'h@hN,T*jV&a%T'2lSA`
+
+4KAcEr0Q5*0f8SjcP+S99f4VHflTX"3KN[eUPl)Q$+C+IM%!&mD$B6'D0DRqf3q!
+
+qIlI)UAF)iLU$6#Bk`emf&1AJXT0mT#B4QpcSYDKj!8!8CQBL8FS0i41mU[EFHFf
+
+2DYE14KD$ZHYq0RITl1Gm9`S6Q)QPFMlQaZhI"%H)-XCGJHe,)*62$E!jc)h9(2N
+
+,LKlF8TJc@5P"iUb6I5fF5@jrqkk+``Im$TT8qrGH*BFhLch&2Ij`8r2@eZC9FcR
+
+Ek[J+1NiF+[AScD56jZa3q+Z9NN)G6qC4"%h55G6TpJ4+kj8hKV)RX$Vp1YlTMDa
+
+G-A50J3hN$Fqk4rVPZh$9DGkDA,Qq84Z&bLjFPB#eQRId9jKFLEpUqA+QD1G(QDp
+
+bXf&aTCIpHDFQ9$M9jI1P#i3c8&EPp6jC,ABl*HM[`[Pm@iTH+#a-XV2S95bKJKa
+
+'S@Y5,+(PmhPRIaGp[4NlA)AL10qR5CqXjPZFa5dMh8)2BjCEU0k,P9jIe,(HdGX
+
+HUClYLE8SSD,$Gkf44G&pM@)Rd0J%G`Ni2[aMARhCK0jCr-C'QZr46YBcHlASim8
+
+Y`mVm`U0pY2[lP%XlV3V1,+a+C2k[r05k0)Lb8hT65M)8"GJe0Tkp(3jeR)Q9'qa
+
+dLc&&D'30e8-cFU+Y'aUp'jR+eZAId0A!8j,&5#0H9"'EGIB01(8pq%Xfjr'RI&k
+
+"9-e#D$1XJc+%0aID+Y334ilPmVfdD&H[-eDQ*C'QjBGAZ-T*C18f8YefFKI-fR'
+
+E$aU0b[GAU,mh$e@cZU)1cN'UQj5VPcQ+2('NkQhk!N*0PZ-AfbYI$0F-b4b+(KH
+
+@VqCBe`GcF)HVll-PaVV2jQZ-*ITlIEA5*RjKUjm(a(EkQ'dZBP5IAmGC08`'2cm
+
+dc,jh5p[rhCqiib,lk,YrqN)#h&Ul`-Ep--Fp#kXEc8C%dG9NXTa8f"Bk`1#2r06
+
+(h@YFVa5Dr-YBMLTAT5YQCjT%j1B645d4Z[%XeD8Vre*j%EJ#[UVQ)mU(U-)Q0Ej
+
+'YGc"HbCHmPfa`5`62Xdb`6(ITF)'XJ`4YlXTESl,3YN3QiEA`6bQ$qdP("U$kd3
+
+4hc5$NqmYa)@*-)k(r5YIYF'0NrI,IGVXjGKHR5#(62`H#mG+&4qdM[hcIf2[hGa
+
+*r!qEH#,cT+QjdiCCCZcRiXKam'(1#91'1#(Q6BIS`JB5"p!6Tb#X3d%+FZ#C`Nm
+
+rfMXm'6hNf5Ma3DA%JC9@'Ge'Q4JUQP6l`Afa88em6)i'PX+0-M`L,FI,mb1Z"5D
+
+['-T&$`1Sr&BS[REJpa4qfr$EJYr$q$f!hhhih300bGf5(N-9+HrVIA`D&0qZH*K
+
++bK'Dr&&QNX`e--q3!%i@mUC!$6-9Q13G,'222,L)cEa-rqb#'MCQ'l34cj!!)Lm
+
+SY`qD+'[KJfH1ZlA4JZm@+(1Ri2Z(l[C'G6PV,(4kAf10(QFPBJ,ZdXBDI(Fd,Uj
+
+NM6ER3Vcjh$Q0ZS8-'SJ95dLTYa`a!pda8%!df!mE-j%Rh@Q'ZZQT`Nl8pT665'm
+
+6aCY8#6aR,jM$U3#VBR9UQ1kHe'%aKeC'D$69V+*6C@@T1LYlYBET6KFm(P26Clh
+
+`!h6lQd#c(6AI1lc4(,M[)m3FMMI%'h![IEf6kEED9ie*!HUpBPX+452d9066R+(
+
+c)J2jfRCN3&@B5ldDkRdI!H9K)0Sp"Ap$Ti!('MVVF`6jpP@k8cp'i2`%!A)p%DM
+
+(0rNY"'EL'e$TcIVIDXSpmBYm6c`HBK1Sa3(mlX2[(U"kPIE$3,%('9m9R"0iX`*
+
+iZ5eHD1#Gf+M68LF'8#2Ta$I%A3CV8E&Up0e!cS8TH$rmcr902"$-24A[6q,paH(
+
+FH'9ZD&&'9Zk4hU%q#5b[j[0GplJ*8M8I'+QQk(b04mb,`6j4+&5h!%8rJQFq3F"
+
+UB`@pp"pQL,IddbjVp0IZNdNKP6+d0'mZjVj5N5!E4EUQ&c0GVEiakX4RpEL@D4h
+
+jRZJqpfQqc52jb(Dkce(@@MCUbE-*0k$NjcLDIiNMp6N1empa81[k%abHmmp`H)l
+
+r(-H6[m5akMQ1aIC9QXH"D98A"CDf+h8e2b6GQEVk$`ErB0"h!MGp[9(M"[-4TGR
+
+-GRZCc8d69,3T`4L"k&Q"L*FA#c!229f"pcVF)*kM'Qep2RIXDib3!,M'')+Ab$h
+
+"q&M[THmk@GK*q%PUS!XBI0q,cA-em18(+jMlY#ISlLmNpF5fSGQ3!0$qDDDG2ml
+
+%qGIE0`QjrmaL%pUHXpKFcNVKLN5cf!jRNF4JMd"j)-AqUZ#(Q,hj2&2U*m`abRS
+
+2"eQ[X&hR)$VRP1q1h*&AfDAcJ'$%cP9JV`@NL6m[C4(dNCdTMC&9q(BFJ5$#h@$
+
+&KU)'+S&6AfIZ3N6F34(1)Xjpab$,YXBS[(b%Pif)b`Fl0K5iaA)Q)!S6al%+8@Q
+
+F4p2c((54`BNl1$rZJ(CeKkH81$,m[R8JiYJKE!lQTe0P[l+D6@Hk6kU1##S"G`3
+
+LJ0@,DKm$aiD`pN8dGIm('XGa'BhM-&AS-Ppfl%4%"hlKPXbSJBHf[*p`qf[Sb#c
+
+-h02jCJ#H(f*iG-b)Cc'9RErfIU(#rJl9j*XR#jAf08IQSEq5U*rH4+@4ddP[1rL
+
+EmBMHIP1mRD#hha0[,EcVLM%lCf*fTX#GhNH&c!LFV9p,RFFc[#*Li1ZZrAS$r0J
+
+j4%@-pkLhNK(lIVF8mEMZ)#iP)ZLb3Ye"RkmAfZ3,%k@B$NqX&01"kaYNCMe45rS
+
+Y1H9F#!phZrpEeq3%-jhifdb+)kLG5Yc1[jeqFI9LqXA&LHPRh'mdB1T0E)aB6$-
+
+3mL&aUXqa4LGQ5XpVc'h$GbFbXH0HESbL+HHX`N4V4F`(L+(qqIih%'9Fa`[h$kc
+
+9%CNC3HR6(BK4c&mQ9rY`&*Lll#&f!pd"fT49V!ST#c)T3pQ,L0*!a(bQ2#MBd6r
+
+b+H"HCPqP[%qi2pd*14F19`EXAZSerK2@LGmfr,EJPaX5FUKY`eX0Hc2`UV`CX$K
+
+T"RVRj22jH[JI82BaY9j-kjpM@ZA(C1'i`[kJ)2`662#@fSqTk,pL-VG49c!CF(,
+
+BKmQipRpMJLTN$&(&+SAkfDi0Pj(4hPHXBT[9AI0mDNejcPZKb@cA!MYp,rH)+&K
+
+&d9DZ,AUpj[DqkrNXqfRl"VcVU2b'#d2bec4jkdeAL[$'"(iJpib$%%GY%ae(eXZ
+
+GVqS"+&6JMX2FMmZee+b'jZT@h2rX)pdm(",LeT)hPl%ABa&,C8I`p5,qqBTVc)j
+
+ZRr0"Rmrj[rerY1V[ikImcAYr'hmkdqGm&)AIZhh1(fE,8@IfmYal(YhlDqII4(k
+
+D062JG%EjBi*kE"QE,REqlHe#Z@9QVHch&,&$T0JC)KCA[MT@8(MT$YM#J3f+j"*
+
+Pb3Fp65[JpF6%85$&TSMEJqU'P3fb4U[S8d[dMlPM@ET[T&dGXCGUCTJ[CGJ[mXp
+
+[U9hKD4QT"$8mG#@bT@abZrb`TkD"K"#Mf@,9AblPDK5AFXKPD8"HbJ8@,VNQqh%
+
+Y%pUC8U1C8V4@eS3UbEdZ5E%#dA95G,+)KMKU,(U&L$iPAFJ!fB+@323L+IU!e)@
+
+@Par%cTCL3b*fYYpV)Q+a3C,BTm@&d8bdJ49lTa6lJ(`08XeKkHMET'Lj6C*S!DD
+
+MTdV4%b9hMM-K@NpSC[b[5[(C![HLclF'DRQ[&1X9r5DRcAEQ"K(p)dRIS!&+*p@
+
+5Zf0%cj'LpiKDcfQAlp%4UbmVIh4Bi+TVFFq`"+)A50(VK#1#ZN#Pkk9)hIre,@p
+
+*F`Fl!qdf4IZKLM%Dd@([MFJdia,RD@K#9kiAGdS1!hcNbL@6!fi'm1@hifj*hCq
+
+,I`3iG&#[FJe`!*bN-h!,i+$,#V"aiGQ#am$PJ6!`(D@`'6f%,ABK,G@S!LXl8A!
+
+A[Ji9XaGY-QE1!GEE,XNlHL"k+SL69d4c%E-UL*)ha&1"FFTc4+R5[Z!LSSP2%D8
+
+LT[!T)UIA*qX#VC9-Apf$@bMY+m%RQ*IkNdQ-,K3AQA30"18#kAm-DP0$RUSrjQB
+
+9#L,)KKY5h"%RM+M@3)P&Y-Dc(&E"DDQP%GNG[*M9RX)`2qBXAqjA1rM2k#kFGPL
+
+A"0#9Ii,Z%BmEDY93$)iUGr!UR(HFe*IjhVRI1VHDRGJScC&$iXSbPj(IB-GK'2Z
+
+)Ck1!eke4`D@#aj*lq3I)XSdVP$YF"YeDrNfe#crZmLBCS$#a&IA5D*S63j9I)2Q
+
+!bLqi)i#!0em*A2FHb[)1$k)bZAS6P,$0ZcY4CdD'RVZjc+*'PSNmEbE9T6q2H0r
+
+U15AP`A@iZZ"MjDM!!feY98RFQV+58M-rjY9LAM@rbd1k"G$15((TFR(Kpa48FM$
+
+GpLHRX&J60$CHrU*(CB#UI#!dKfD#had&93c,HpL!RPcbj19emM[JQ#FaLI2"fir
+
+"0[Ka,8FIaEQSLq,F,MpZVcpqaMqLhLfK6KQ1fLQLJ$R&M`JHX-URLCe'SCTVPlF
+
+)lf2Q"$49['d2dcEhd(H9[BU&0AQF'B5iZ`%6HmMA+hQV9VcK+9)!L#Sa4EAFF$Y
+
+00DEYT%@!#dj1kcT-jlP$'#AUVUFU"B0'&"NN4p'rNbkKJUD4D'%"+Ea'DN,k(&D
+
+4bCk*MpCpIN@e4jBJ-5q[,eqMfXSfbXQ4A0b,(i,`f6c4KhjFfDZ)Pd8%VKG$2qS
+
+*+$*!U8h!AP6V)8BSp1$kA&@(LN$RerLp2G8YVIYm8!G0mFBrm`BC3HK2DM$MU2"
+
+cX8*5pjl)B)98K&0%i0ilbQj-CJ30a6Qi#Ti69&ea@TV4!eV&'fr*`6Hrr0ERGFl
+
+f&eIIfV*X5"YI&+0m(C(A8(h`K,P-4HSAhc[hQp$#JS*))LEi,+i,e3`p#1*bicV
+
+r%aGlm#IMJ"XfENNimaq!K`XU3``3E`9#'4eAV9QN4M(*8#ETLB"c'&XP&6&chK4
+
+"fa*mP6IDqPZmE5Tp3Z8f@&6#b)T%*5aB*#1`q'pD3*ZX0e1'('ILL896%F"b0&1
+
+(6*aj9,'#@U*8M(U*@Ai%95-)c1a%!J6`c#BZ6UJb*"e`YAUL4ERGalFGMlRVfTE
+
+@Y05q6F*6P[IBQ*+8T@38daf)DLMdkJlX-8M1jjUDUjX#QUY8HEq+UBBmY@NhbQh
+
+eI(,p$FTAC*52dA#j*`!ekVED9JYmB*J[hm9C3M28'',HTmeEEcLf"fC`&NYl*8r
+
+Q3GVc"12KPG1+ph(0QdYX'kVr)TCrY5,Kqm-9QIlrUJJ9hck[L1Bl29Xrf`(8V2$
+
+i+`-[FG`eFM150D6lT9NHqC2TdTkH"IGb"$"[$NF'@K&8H6!6V`ZLrlDF3Gr$Q)X
+
+E&RLJ)(Ck4fh-)[i+6d8if6l'Q9MlX22aa9ccS4P+SQ3$dJ'Fdj8&Y0qb91b%e45
+
+%2DdeEVfd*M$G!YUC2"B`D,LB5#%I0c('3#p%['Qhe6hS"%`Tm2aFJiKHFfc'),T
+
+Bi4kD@VE1B-eaTc+4I0+CbN4HFTi!aLYmHX!9X',SJSLQ&Y#*Qj)fX*-8U*I0'eD
+
+kQk%Vp2N`V4!ci!UQI)Cj)qrlh@DSL%LrD"A5UN,*PE9I8X!$!LIeVhp)d3`i9h)
+
+PdaRY2ZJ2p5PS""+4qH@#1UfPk*Yrf+c+#A&Q$HHH)&H'Z'Tea`YGF%G@99Jq(cF
+
+6X6`Ca2N[+kL#jaXqVV*@&`(h(I(jDV!Cp-kj2DM+ZN#[''Y)rbI,1TaM"94DUQ4
+
+p(Q*!VC2GFBEbAlM+$FEq*0TCrm6(SZ$[)qb'$P"NX!NqrX4a(ef!`PQ8TEE$(FN
+
+4cLqUiH0mJA$iB(Uf-p9d,R$IaVJUN!!8&j9iHQk+HB[SqGA,@U@VJA&3l0$aVe(
+
+mipA0,Fe[0l@X@,l8YD*j@9Y$LpKRidj-EqHiQD-cVH9`3VQ-V45cp3ch,P`2jhE
+
+LY&XlGiD@*AVabd26dC80V4N9"dBGM3XNSq0[qL0NIiSBC%'S2!rS4a'6*(liGZJ
+
+Nq[)KE"bQMVL*JZCH&$mmY%Qmc5*N%LXXerQaE""C1&Aej-DpdhqHh@H!BLVTm8V
+
+PV!e4SGL3!+r4&@"Z'QaGB0j@&A#hJ(ka)i[14dYR5bVMPZ1P$pb8`I,j+*0hbTE
+
+K$+l2-X!pAaVYkCI5IPa0E([1jU3L'f`c`ah6R($SIChb2@K@Cd20*EKNZ"D0-X1
+
+6H9YmSX!PF6kV-R3LU6$EYC!!Q+VLmS,b3R+b%F8$TiZ5U`fk6TJP91dHXJ$h4pK
+
+A@DUTLCJ8aZ$q)(0T&pick6b4@UXj$[J"&JrFMKYd4jc(b+rhdXYm`k%9mH"6H@V
+
+!2lUjGi#LPq86(8TDUCpX+,+K3+6F@6SZQ"EB[LTTR((I89lT4`&R6Q4Lm&r*r2D
+
+@4MYA,+*iXM*9dc`SHPV961Ak))F`XDa+e$*IU44PX!!Ia%Q9QREM3X"$X+1@Zl,
+
+3`dIJ)GUjIbm2862a8ajb,9VaN!#AqDddEmLZm4"lVY,"0V`I@lZpe,43LYK1RLl
+
+%9iE6b,FrXCaj2#FpZkUF2kP%C*!!48PZ+m8A@C3"+6mALeYqc(l1mpZXEh[Dr-c
+
+'C$lREH+@3G-H5q0(4AqdqkR,McEHpFd"48!SCi'28ie,UE(eDE0Gf3#k@"3QfNp
+
+m4RYqlM0DFRrC[B6c5mkD%pcE0(N$GfAXXF@bdfkR8A!Zd5DJ$rR`qp`Mb`i[ce-
+
+Bb---eLYQS+@QTG@GZ45eZd,j8a&X'i4+U2KKAi0GR[fk%ZV2fNq2Y4r)J6CiE&H
+
+'k1MZ3VB,5Jf[2bmmrf&I5!Fk+E5CL$'0QL%mPMkHZ&Dem849&ieHZAI0$-S2(+-
+
+-l%9N9LrMA5)a-Yr`TMBZRhFce!ES3+c-F*aC,5b3!%ZBPZ!"QTdrf`(idI(J%p)
+
+pTYXDFiV`&X3i6"Y6Z*!!8CZ+G(p&aHZ,IHXC[Ml5Zlc[QPdYhaIDlQ*L[@Smr08
+
+#[@TdL9ie0[cI[9VmV&-rmi(1HIPhr4'4r(kCbZ82HpbHPKTU%,QH)UYSFj-M@ip
+
+dSH'#%aj4Zrpfc6,)'jNh$H`L+%'TI'ji!X5h(erhPl[e5(-B0qe3Z)A[`,h1-ZS
+
+ZF"Pl"`%rK-,,SMX(m1rfjha(r,jX,kEVLNJ0pa`%2i6"eGH+*84pQ`f$(Ia2#!)
+
+5JLCRcPqm%N5J(GA90[pYpM#dG*'pNTaV,EhLLJPF$C!!rbdP,mE`USIGB-l`23(
+
+lSSA[lpNT,I'hiDN1hjbbjZd'ERSS3Eei1Ba#fVV3h-m'#DADAK#,E#ZiV90kjc8
+
+h*0m`mjIcjDlY4F"d,-Z,)154q`aM+bBHYRUF5q#$eJA3$rD,#k!kV9QA8%,SJME
+
+ck!6Ze`kklE&-+k9-kXD,V"rCa)%2I@CT*`K6YR#e420D+"%q(R8fC1,Z3Vm&i*0
+
+)D48qe&6AkJk`+lPP#TSjSk6'TdBI-FNG%+LJ#aUpGe$Gi!GH0prL[1jhN!!KU1U
+
+V)9VAIbHPe95c#@(P9lL2@q8VUJNAi1)S+V+bDJXL1qP+`-66a2%XS[08JeMhdL[
+
+mUmAHT)EUY'10l&S`XPh-!q@!PTdX6,eYr!#mYf)kdTY0T&GX8(+XL)+#a2hPj#3
+
+TXPq1JMGA-qB*IicJXrf$2S,lA68fc)QKe5MkN!$Hp@1Nicp&Q[FcT,JaAY,D8#G
+
+G43Y1q+c[`aQqpaR1m192F)C2r3,RiPDB,i[K(2mFjkSIikcr&1H-Rq'%dLU-pYF
+
+68)e8GDM+MFa`AQrPe-jmH,)bThC&+jfFpRHe9)'eZA"()-k(HZ2(b1''$PF[YX2
+
+rbj2K`Yi4$*pKHGMM$9jda,6QkBp$Dh)M-rb*DIl@e)+PH,mH+1FKA5[MRY52#bp
+
+pN4MGcFTq%T-b4HLCDRbZK%h1V)5[L!PDQb,Q01FQVN'Jc%[(),cmX(C"M*f1Lc$
+
+SF-Z&KXQ9!e#,TCUTqHkAY&e0R+Q"M@Mj9N1aV3X+S@ZjccfPGVfi[V91e06bZT(
+
+J[`5%lU-A+[C'$[c$q5F01GHUK6XZmA"kh",@9f3KKlV3*[$eN!![Bk#'f`66Cap
+
+i3R&LTFN"$*RkmF-BA0%$E,%Iej24[C@5,p4bh)@)bqVMR0hKp"b5![G`la(U6U#
+
+6q"PmUIR)(6&qZr$ELBh%*HrCh,Ic#T6HcUlie3BA`Udd08HlZ&-aGDH86EieX#P
+
+kQE5EE)iYef#TFNb[%X[dB+EqLkCT@m408dd1lJi$FKlCRR&(C'r2`#XGj#M54#H
+
+h6d6R)!GPpTe!V!*b%b3j$[Q4dBr@'Q`E*c%P9,@KlQh[rf9#b)5bN!$$eaIil$1
+
+#)BBC2%JdmhhfY%"YU%VViriCJqe2XD34bYUDjiL+"Ci,Kq#0!KQS*ZU,B(0FfGJ
+
+V%pf-cp"C-DAFdm-Nf+lpMNX*(aFq&qdFlFfL8Z4+ilkBZDR"VL5kRGZ$AAm2YPJ
+
+680HGb0AeD3G,61m9a,TJTQJ(meIlr6p"$MYd,e-2I8)3"hC,'XFGj+2D4(*eRkV
+
+pEk'5`VU45fU*q`*95dG!jaAlHGiYi2Y-F2Z8MlSH3pl16qXU-EhA6hZ#QIVVDNi
+
+SZ4*TF"5h3"hGcMEJMP5lj5-lhQ!*lG#L1G3&0PkZj*l"ZcdB3-$F`-b0!hA5Ak5
+
+F8RmiGCIkCrLVRicDG`l[hA$Mm2%-MkV!UrZMqTpZlm@Ri,HK1f&Ylq1N5&%3Ia#
+
+4LYX*`dJEBKIfAGpBpJPR1%G+D6fSDJVYl#lH0D!29rd6Pc!'KlJ%[,$3-9p1F*r
+
+EGf9%GQHa!-akDrYVpBBe,A'P)j-aXK+Ce[r6C)5MdZKNc1&h#XTpkKF$h#Nikhq
+
+)Qa"l#XUmU`Rfr(4ReDHcMXi3,mkkmEKNrXQX8aS5dJekhNJhG!EelGIlYlVDL`X
+
+%GfPJh',kX3Q`A(,k,Uk+@q'Q#&YDFCT(lBbT"YVIAHi%Jde`CI0BHq1D!rGi+46
+
+6[mY9ebq(bE'%[V##hqjDbdq41B"-AHXIPV$B@AdrcqUNV1JD(@eRYHkbmq(9H,@
+
+ZL,bQ4VKRBYXR`fUd"fjLHaAjaBH%3lMH$*reGe'GI$Y3rR8TGSZi#B%SKlN0BQE
+
+HVBF'ZGi)Bj@(-q9r3L*&-iQ)kMeL!m3T(FIJ"p'(A8$5d,5q2+(2P!QG5)-iapp
+
+0iXIK-E$S*mbqppGYlk@1qNhZ"LJ)PimrcfMZa5H5DXPKmLG0RYE(DU2+%ATZ9e`
+
+YNZVhGj2l+DPqRr$DRpE[Vc,feZqYFkKIdR-QfmINZSDCh&KHb@hrMF8q+9AbTdc
+
+f5L@,rd['[NSkRF6Uri'4JTeTrkLk9LB6KAY6d4Pi&)[IqiHjU*U4qTCfV*Ke6'*
+
+&Hrc4!6([C+GV6pMarRKp@F9Gl'8I)$dhC'G3h$aE9a(%CfC3$M%9[PL'mIi-SQ9
+
+&Eh1bl4@8pXcpLhREF6e2A861q2h1YNmRVRMll1rcU[mb1H(NJ$flJqlNqLFQ@92
+
+8[a*RjLV-QD@IcN[Q[MJ[Jd0cVdKG01mR&DKiRr$rE`*rlm3$rXpRAU08LlrKXUb
+
+&0ERq3bekTpDP@[60,Ad4IFGh'Cm"MkeSIMkRSZiUI'*EVT*BdGT2dS9lBSV!*9&
+
+d6L%H#Z35,rTKc"kG8mU&D'6P6HcqFKedi32ILG"d3&91GrXMX8Q%2h5qF3j#+Qq
+
+4Ajf&QbT6ZB'D4p(Eb[4m+!$*4K+jld['0USCEZj$8!65ZK$frFHFfJCi-UJ,q*F
+
+8VaDm2@G0lS2hU-Ver1SamRBTpZm6KFq&qjYPC1)q`BFFe3PdAlZ04cIkScIcrFm
+
+f"l`me-Ea'hKSihaSNcH!L6EiXmF,qMf,CkBEr8bZeSJ0[l&+4&XAGR[pr@YIhEf
+
+#EXIe864L-kr%&Y,G1(fDSa+RTp&kE+&ke'4#CBM46`AZPT9(rl((dIIBa`q`iAj
+
+CH6Ied1dF2IIE9m3acfNQJN3E1&FU4d9ATY&+cYM#DlQ&[1@HPPa,aMbEX!mreJ`
+
+jA$qX'9,i6$2%hV,MEPj2"(-I5fp9HPpV9dXF(DPl*$#VZI"3dqG"-I5G4m2641Q
+
+JA'3Me[l'pKDdlr5cqD*Z9Hb*TI%p-B`[jcQqUpMQ2F-@[DHaP*8d[K($q(*rA$p
+
+pVaG&k(Q'8&r(f2T3m"kX%HB-pb6mera8ai9+5imlQh83aS@@mEAq[FM&HHR*QVc
+
+C"Md1ZAaBB6dr21%VLdAPYQ+lCDY([9NB9(k"BfK@FBh`lXpQ8ABd,rV4c*+lL5C
+
+$ledTGj2PD02Pel1!fS9L`*,I+A%Mi5E3b169Gl4A926"`DGAhr62IUPAP%kEhZL
+
+@iHBQhIk"EMh8$3bAXN2S80@"dCMD8e"f-0p-rmK+lbRSP+BGI%KENc#QS#1l@q,
+
+Tfm8bNaeK[r*&)l[89h5jFQpE`,G*3R!l@XC@qFbi(jVFF`ReYr@k$Y`IGXS&[cI
+
+k0THZ4jV*3BR&@!2qMD8e$A%&5Ff9JB*2@*PbS2P'RjKAYq1iQl5hie'&K`aa'@R
+
+fhiVSDaY*FiV[9$e6AD3R[kh1!Adk8HISZb!@GBj5*L[&k&bj8Ukq[D[N+Q2(jm2
+
+IdqfIU"m8D*mjXVPmT8cG,l0@(kZ#N@YqQPfV-hbbLDFk3jr[QLCF50DrMGPR+l&
+
+jX2H1["hRM+1qKKGK6j`HVTI(Z93GALFjJXl(c+U1rU!#NeQ8EhM,48Bi52EdqV#
+
+VSGh[kcHCpNHLaT6*lpZR``&VUm5b3pJPjFNFQrbh6kY*0%)-YTZLc#N"IfKdcL9
+
+hHpiFS8$FS$MF6GT$06EDel$5bSqEB"`,I&3llq&qD!03*qlTJT,%rAPUaU)Rde8
+
+DlXE`P8jBk,midJmI8B0i&A#aUDjFT'Uj8Y9i6fC@,GNC%jc%[Bk*("dm'l@FQ@d
+
+cm+9`AVk8Gd-UiGT1k26GM,MDa@l5kS!SKa"h!TeQl(LLPeR*!Bjc[%r5HD'(&Z*
+
+km0RGQA'(*T((#$hcC1#JLYlVSM+*G+8%"de'Yq5$HLRAfpM'p6EJ3KSDmFN@Xbp
+
+#mSA+Ul&`Eq"D+j1d8MTf3Ydpr0IRKp6G8@RC&*cA!1X0`)UTTl$bSV0MTe#fFfU
+
+jFRTbj4DUKR6-[J#f+j@bGqDmC%U4p%iQS[,S'HiRB[jNe45#4Xd+Q&3I$ehT9pJ
+
+YpNLa4,&1X80a6fPAHT9l3[4`BlSLT#YN4mMaN!"VUQ4BB*QJDP5Y8VdADJlG&VS
+
+hp&,SEA@kZK"15jpAAe6I#XX0U`fl%RC2%kiaDcbDqjV(SkbM&SeD-fV6U!1M(QU
+
+0fJlY3@f2pL5mNYE$%qNGZN@kmlS(BmaMFXIF$pmlG[[BmrT-IClHVQr9EpEhkI[
+
+(QFD94f4(0%BFMHJGcmCVabH22cEqi[M"b*c)jXLp,eMK)I6T&ql"(HMV89HLENe
+
+365LDd!l[RbHLVA$jqHc%A40[am6&Q'2+iFYcCmbj55GH22VL3&cVj1M*eXR1b4X
+
+QGdrZQhcI%'eBDlJ1ajb2'k1-X9098b1RaL5k%MFP(NJm0ie0-dbVR0BfVA[DQ@N
+
+$T[G-KddRNM6QQh#r8Tj@Di&ciU'2dJpPP-mmPK@AjFaUcHV+HLrV90D&V!Hc9,1
+
+-Xl*Q,Ca92qYQYLVEPPf5[6ElB[D0fEGb`R1kFRE-XFkacbQGijc62QIGR&kiY0b
+
+6UjklDflhh00c,mfp1[GqAQ0HDpkU[!ejfr+Mm`hjLI"J16kr+,mbIa'm@0+(jC-
+
+J@mpDpeZ2F+H9EeJ[`'[PbARkHG(c%ZFjjZfFGf,HjAPhjrAEM,CF@kfYbrDZVGY
+
+f`IDSS+LJXH"3`BQ#-`8h#b-,B`Z0KC!$1qHVjdI2MjZI16p[IP'aYPKI(&GX+Xi
+
+ZYKB[,'iXlLMH8lbrZ,IiB[&YZpBHB6ICFqePpPEl+RZAr6hl-IX9qhAlhCI#AiT
+
+k+IfPmTF@[G5a`,QJBm'M%Qf*[Q4MbGk5!b9AAeDpV(djlZ@FPaHrI2,PKbmr,P@
+
+9QNTc5`q9(Lfp@rUJY2q9a&HbAV'p8[A+m9IZPp@8RANeqGAYVlllkSPAcjAVbP2
+
++Pj5IU,48hRq0[AEXY61[hALpp[@EVcqXmPCe9Qem3rG'e"Z'0a,I5(pMm4[0Eh5
+
+qXIq0SfqFI12-'eIHZ2l'V6IZ,e)[dLq+@@4HP,R)ZXLqD0'LfN@0Llb,9LlUA,4
+
+jdEC&lblUAA4qdD9&0aFprKclR2TcLCr,rPcVjeCrE[rRcRhZqQ,YBY2Lh-@0Lpp
+
+GI'laR9r,ql@DAhZda,QNI8R2NUY,98Z05l1@PLcY@,VA'HAFiccPI&3G@ffUAPb
+
+pUIUpkJ[9efU80EUDj"T,cCUD$6A(Ddl9R+fj8R1MjRE0JjVqCH(,%TEP,5YF9VY
+
+X$@0[P(Aq4@FHq#$FKBLRm!cmFSH5JPra9'bk#Y01KBl,VP'-US$@-EAeke+iFV,
+
+Y)@`"YLP36UCD2[hGh[DAF,KZHLE"c3SLJ%LK%9C3li,F19B[C+G(i&8m#4MhFrF
+
++i[`!Vr$3BS3,a!Y06fX%"LEZ0)i(8-N&"$A5BhQ15(ihQ1G))!r`qJ,9eHLRF26
+
+LlJ#[*3+p!I5i20Q#$Fd@Z-1(*h"95haEYAaNfBUfTA@YV9"06b&A)2V[1K[Z1rL
+
+&#Km&)M"@U,EDcN*k*!mKAC+cN!"1lL`N'LA13MT4(5reRZP%!%K@"*%8bGA@2T2
+
+B[@6d91"@[Ze2i2HSm,`!hRd8qSkA-qlmfibb6DKGbQA,F@@S,X,J&$b"JFH'mGZ
+
+$hfl59HQi35SVM9(BrF`&"RSTkF&['&k&%6[j'q%A5"F2(CMN5X",M`YZhb+2S@X
+
+U@B%IHlDNNd)GSM%+2T0$Z2K'l'RpDYp9X1p'ha9mmIVS0k&%i)Cl#VVZPRXBC,R
+
+rYM3YlUDVJ[X[ZaE#PG"%11G'T*A(mMJcZ8FaL'Z&3rLHq`P'CVjY*$0mL!3Bq4!
+
+am9GCZqDVV5cLXaV81D3DP2qd"N!L0@K%$DELpkLSJF*XqKjKTBD03h34IRG+AG,
+
+E)lL!DT8ZS+VK42+HYK@YEH,1!JUC#3)6r&R0aFB*&cfX@X2J"E`qEPA$iFDBHG$
+
+T4NG+jE3(KS8fUA+PU0`NAVNMU*c+%qdHScGB-6Se53edL2*5Y&VXK*FYV@p`5hS
+
+#RpE%S(UJNkl8Sqired0hNQ(jF6fNJe3p(TAV85FFA%Ff3394225IMZlQPq1RpGh
+
+,d9edU)1TQ*5$hdU"UVbHfF6,8'a+M+cJ@c(ia3D1@TK)[h1F*qEGpMdL0bT&Pq&
+
+ABk@pJE-Se)bXa&6'apXkj'VjLB1GXE[p$RC`lb%ZF2BLfp-bHrP2ZHNejlAKh"[
+
+`ZN[+hDLm*M)(N!#CYEXG9@eNaL['+qPA+&*96h[cH5eB2D,BjdIaa+FSI$p&mI)
+
+`#ZPGNe&'HJ*Dr'BGiC!!I&XHmqF5"LHjYXMX-jUT+6H3!+NI9AqQZh0qMZN5rU*
+
+XN5YDFBI8FArE0kXT'[8iE,KLZ8+4PqYalRb@M0(U68IZrl1V&-EMr`RM2%c4c@+
+
+1dC2fRI2Xlhq"@-fY&qER[B1)P%$%iiAjLZk[L&bm(,R6+M1J[F9jRBK)#85XKEr
+
+kM9rqFDlERZGDi0[rmfbh2mmfJA,Tf3ch@%NlkF),XhY4b6e9[kq0+jj'@C!!G@E
+
+RC9MT'@Vm6kHl5Y4q21F4Z+3%YpDmZYp*%cP(0rmk`lmkq0BKp1J8cp`4h'D%qVR
+
+hV)GD`A)qpr+Cr2GH2K(r$eiq(i@[K$QY$F[mEY-kjEZN51I`,Fc%TaUK+CJ1ClK
+
+R"pY66",IpN!j4e8djJ-0frFpN[UMjIjlP8FU0A'Im11'MNf[k[4r`pfr8E*BP1R
+
+J#E8SIeB,1#LG)c[1Z-6N3MqX'YTeJ#014-`%H@U`NaZMqF`r,&@!%9NmiTL)%-k
+
+Y['p!Y2kqDZ&-0,+4ER1aVGQ)hfIaZ`'qLqJjiKR"@@Y4@GPiEI"ApSQI-m693`c
+
+48aPNL!GNER4e2Q*kV`0LrMiKZDN5eXah6M4Z[-JKc#fFK5%k86r"F&bmL`F+F-d
+
+B#V`e"h[d-kp9kiLTbRa9@"$0E)fNkD(IpBja3j!!!Ii8@j6*%KXFe9c#aSfIMBd
+
+l2`YEa5Sel9jXPj5$2"4$rc5)iCC[J3([[((314E'iRe,),k1lV$EmAX5[mF45ap
+
+2,5+AB&NUhLdXeB&i`9)CL"FX4r(ELPpfk40"0XRpQfCVL(SYf(R-B[*"B)Nke3#
+
+20[0JDKr#lhlmlLhYqHZej+ir3KjUAXI[DiKS)*BaYV2l+k8pFpIih4"$R6Gq6H"
+
+f+hkPlQfZpAA!95SQ4b8f)$8fqkV3cX$fF5'fMleS8jqMG8PSIkZd*rF4[5&Z1hj
+
+I`Hr,Z&irDQDi,hN4Ve[aqc`LpU@3!(SlX92l0m80GrPEed1hZPQDB0MXh,RKQam
+
+dY50Z9A1V2bS&8EZDb,Q0QV8filIl55ClEdIe-AlT+5Y6Kjb*E[LNJX9`,l4ZT!j
+
+eF(F5ki'1L1(ilGaTmQ4a*46VM!r[b(eiHETc(kCUL)hBdl5lN9f@FN&Pr'JE9Ai
+
+KiBlKHE+LNf1G2P+2$pING3U%F$U0,J'(YK&EA'#UY3ZaeXDc(l1k66T2rUNIEL%
+
+(9c&mQ4,Z'8'8UEMlkUe11fRfI&TY[C(mV1,GHdDk[!l19hV426dFVhU16U+LG@T
+
+IPFHpE9kYrPr8[6X"#+`*&CYIX5V%d2C[f1([d0NTlA2@b4F9cLaTRk2i#"5TcK'
+
+Qri(6GHSC6XHjjcMKG1Er`CP!VZ(kF-jkKV1,h#cp$jb*1Fp`'[h2F6lSjbS'1a&
+
+N+h!cLhblJYF5"T-RaArPdK[bTk6KReZ)8aCjS[iIE$U+idHh!paS*2Q[pFSk%@Z
+
+NAB1e`H)PLI8hlU0eXrj$k,ra0"aPl!q#Ejr'iH+11iYYf&RN$'hIaa4cre$i0G)
+
+P2QFS&k2IpZ'qT@MNVXHUhh'C%h%EMiVcXT+rqk5+-jqmDMGiZi"PV"p,pM#@9i+
+
+E$h)[YF(%"3jI0!TbHqE&+cY4(18FN9PphkEUj!ic)iE#kEm!cXYk1F%I0N(RZSq
+
+KM!ZMcK[K&&&P0"%QfNrr#qVPLD*$[RkEkEf+,R%*`UX$e5m@2m#YXQZirbpeJe9
+
+(9P`i*AVLL0a$qV)"8kZ[kp#C#SQDG+TEGJhYL3bqe9@ab2e+`9m',V'Xc3!k#AQ
+
+hcFGpdbGlBXZEMm)IZH2[e+6!jJ9Sj`9QlX*XkCT,Adm&XbaKAH,#aHi3hQ8S&f,
+
+8l)Q60(Z3!$IQQM1&clVQYeUV[8ZPM5+[LabB94Z`3Fd"4hSj-*[UQ,,MRfD6cT2
+
+Z[dKB)082@cANHAfSNjaP`jhd+VSP@pUE,f"j!Abh`f8JmfCG6VLF+HE92,R,N!"
+
+hmr`lk-$HIE[U(Xlmf*c$,%1mQQ8Icl%Ip!h2XDERFf`Tm9Je[BEYmHVlD*rTK`+
+
+!j)($lY5+B[X(@fJQ6F+XUf2UVZ*I,6$"d!P(iShaaJaMF),abLl@Qie-kS'V2@G
+
+F(ZQjRdk[&hmP`25DqlI6#r2G[LVkaqQPr*r,p*)G02dG3A&+r@1'251VePDX8VA
+
+5,$(RQ)XmRVDJ9l,PAR'9$II+rU&HFD82pmVZAmkRlFAS[k`r5rLcc$rMXe(0*m4
+
+1ZZFl5[-TqdVLP5c44pm+cUlRLcp#rleYq$2,RcfIAFm-ckldrcbl2SJFRPe22Gh
+
+C`DN4GQRF`Q"f&GlkM)X$F`YUH8Ed2(U5,2a)S!INXZABe#P6TmbF-M-#dbiP11h
+
+!5A[h@-H3!2YBB0TCdqU3!05"Rc,6rHLbXG,8D93H$1cN8CRG0+fb[T2`R8aL&QY
+
+&PfQ1YTfkl0+d8Phf%Nfb6aK#Cj!!ZD!ZRdibTb%ibH#JiYD,`8PQ+1jJfUYCCYI
+
+qfLa$VKFGkp'0@`,p+GfTYb0b#CQDA[4l(hK8m,`%Rk-9[@E`CE0c#e*qK82Rl[r
+
+[R@[FqdAR`RR@&bTdVZ%-GZk)iEiYqUHZ,6m!p[%mf-Fk@4[bBFiqPRKCK-3pqKL
+
+)E(a%4plHqU3%YckDN5aN+R,N4rEfD9IppGC(0M5p@jp2@ISrE(eNNr4A@jqf2F1
+
+-iiRRM12"I1RQe0TrBi,P0IjdJY&jTUk19@HEImN%kl[+`GiSjHRH+!9)lH[KIXC
+
+Y6E,Y)chhecXIjpTIVE$cF8VHbM6A12U8Dl4BX&@`TYC2H60bEH4F`plK+kkKph1
+
+IFSh,2CYlp'FpfmXkqRZfMhAmAphkb[ql@id,[f*K3aIG[PrN&hrIU6&qSACcDVY
+
+4hI)@1)4`#l@GXfi02iMm931hKXG*@kEh[Uq*(#5VXl[HDm0M1hm9`VAK"`FqZ6D
+
+F95dlblKiEDL8$fSNE`Z08D8pekl`@&`DfQSim"3rYq@Y`*AqTcKUi8bYCDHiq,q
+
++BLkF"XC3k+cpEZ)HjQJA5(ULCZrmqC,KhS%#38[3rihd6kTd(p[A3AlTpYAUSEq
+
+lQAflkj1EfAG1N!#+5+bhd"PcfZVVUQZj9+"daL8mU+Xil'Z#TT!!6Q5jrbk"-V(
+
+TqLZll$I2NS0qq!Q"6leH9dh3Ci+2Qc5Zq6i"5P43B+B("$Lhd@k!j*@Z+j,*ClS
+
+CVp6[i-VAB+H&C`jkK)0,m%H([(hR-NFK9aT&M+f6TPaVDl8c+*5(K#,eFZi9[H*
+
+TjpA!'dC+Nc2JQ%LLTKMQS`ST6AE8,2@TZkCLq'j+D6,,RTrb[bLl$UmXP(`lH59
+
+RiPTe'Kili'EUX[FYpNh-rc5drEIlGFVNkRM0bMTqFAa&M9SVfBCE+8mcmX$)RZA
+
+2bhEH(bkRq-Hp,FZANR[l5hPX$rjK%jpJ$HiDrihcYM5YY&X`0kIUSM6'T@)h!,%
+
+YK,S2M@@bVM#%MpPU,mPihiIhG2'1L8'RQE%-p2dAc9#RmZi&Eje1M!)-LpRf""J
+
+@2E[S@L6pp(Ec&I#rG)Rr%CRLIfURZbfiXb)hY'm1$N`a6M(1-)lX3j!!rl9K2m+
+
+lr&XXhYVZpGr$pPD8QMKe*526("P$3ElCb"i'GY641eqLT9S3VfeImb[XC)L+4l1
+
+r1-b8BcXJ9@d`VaME48EFQCUhZ(A`R'`dLfVUU`4Ue1cLZb'&e+UXm$a@6[0I[Hm
+
+25@aBY)MX2Ai@jajVfPU)Bblbcc@2JJ4,i)368qFemY%6ddUpS"[@j66B69+N*e1
+
+JbQ&d1X0$4JehjKTePjk-Geb1a(L9lNfY6a6P!fEq[3('*IRhMI!bhAhLGaAjbC4
+
+1mDm6r1XBrfVMAbhm#h@-N!$E8YlRd@Gbhr3)$@c(4DjpA3R1CHY5`Zribj+DY@S
+
+CcF[,[mljG1bDYRrL4QF'11%",6$Dc"mBHHYVqSLcX*Jh[2ec[Jr,Rjhi"4E6EB,
+
+TC%3m4d9@N3*bC&8irk)fJlFXi''1-@lqjH6G!RrLGVbUrD*PVE$6T64YJ)R9+55
+
+95I0rFSqk&c8@hbhh2qCICrKA"k*H'pE'@pJNe(Sk2Y@KQFGG$KK-)1M&S6D4kKj
+
+(pEfm`Ie`j+&`2kbe$(iJFfl'0dB(iPA92VQ'0(A'1E&Mej!!F[ZKiV4@&$Hf(FJ
+
+#VDKaF,9lk5,b+K*H4'U'mcN@AUMrfAEULapld3fPreHYEVZ8pcAjhR*rH`B83(m
+
+XAicrPdVe)XRR51UT&aXc`8h@$#N@dA-&@'3M@cQN#&8,Vmq$T0Y`AUI+HcRYEHk
+
+ra0rU['(3eS`mZ-jIpH@-Mj4)4m#K[[eDc1-hbeXKT8"Q84HYck@dGqR5aCifUch
+
+,2(A9V4KHFqTNAk2dHh"K65$(+Tj$48I@31-VTm2[TDk@KCc(C(i'60Elk9cQ2B6
+
+PQ&2R-AeeaVK!rpe%E!YF5VepZrf2[N3pH6YGAf*hH6[Te+!2qDXhR!YUF,9e*@k
+
+qBqLH,4U[HH5#j+&ih,cM'1YbP[QU$ZC8GLK3GcUQ1H5+K#Z#rTffmjLm'ADFJcF
+
+",pqr&@*A`%[1eiEQXM!*qZ@+V$,aVbcq*@VRME(mL`TmPj6ip!hd"LL@Z2hl-eY
+
+2j"Nqcmd,alrBJkKFXCh**jZ3!2lZrSR'4(phFfF4bh04Xd+iGkqLNjS"Ul(If1,
+
+IHqJV+mBLlS&2pKkLAr4-QM(0b*RI"[)Y$ZDh%Dc[@IbL8`klr*fLGa&DimAD2'T
+
+@C'd(KRe!IBZ*ABNpc9("L33$24Tr`T`dpl)`5(a@)2i6RV+"DUBeBQ)mj4RT`[c
+
+j`'AiRjlrqBAj944N+AMAh4I$X5T`BIj2fZR0BJfK[PaXq89pq,H`H19#$SBpjlF
+
+d`l1RFQrB'I6()JVhIGSkIcV`rq0MGRAfh2jjPAr1aD)SRT&Ur&eSB9qESR#G8S`
+
+FJkM@hj&U2HYY##M0%Ki-)XH'I)RD9AG`lYPIGIG2UkjZhC6L5kcU,9*h(`p8l%r
+
+ZrlcZ9e'`lRJh,l'L1$E+P3q3!&XiViYf3dH'p)b#e[r[0ZP)B*[8YjZ#9a&Q92a
+
+'+b3"Sqh5eX6iFX&(`aK$h+YY$#09k&lfBiaZ$crG68'eD`%aDp09`'05*rGk[Y$
+
+prQ(Mm)9$XZbN4V[[5C+G'+V,!ea*#*4qAl5KLe$iYeA9piqSmG-I&Ve'lT5af'i
+
+(J'DCV0KZ9Z6lF,86bbk1q8*2eSj8!KicN!#l2r2@NFc`iN6h6C@ICKE2%*(pT6h
+
+RR0`Ke"8QBQQYS#HKY2)5CXY,J@XRTBb!f&fB4Ifa`8Ka*BfSA3(IhX,Tp1j$P)m
+
+1re60"R2Q-Pl-KLJQV@p+0KP&02rUThSYf+&HVT!!ZK9$,,I`(eH2Xe4FNe[9Dj&
+
+h02h9ZkL-JdZK+kK8r63UUhjRKM"&kpI('*j(*[jZHFSBYNJl0X6T[4K9U$Elpf+
+
+ERl1'UdKB%b*31lDIB1'1EAIkd%D5*eqfH`a-QLh)i*IFBd%YGEGUD&Y88pIXpk)
+
+aZHGEYb@(@-Mc4eF$H4lf[!AVddTe%eESC6E9DYp-J21fY%Bib-9Qj8ZN!4q-%$i
+
+#m1)4AL1ph-RcSajak`6*B(h["(a`FC'd&Gq,5hXL8R#CNdTpeTMji3#qaZZ2Xe'
+
+9I$XAUbdmD)KlZ2$&00`hK#r'Ri'DqK-C!iS8I+mMhH+#*1&RimFE5+NG2SUSYrk
+
+%cHph4#jU+MrKKDrIXcF2AS6#I&8HbeX[hT+J`b[IE9*%D(`p-VdQkmrCef9+Ra6
+
+qlfE@e-NHET!!Yi'QH'21d0dA[C@D#cbGT9(dCLc2DXpbQ)U`%TQC(K$GfBH)MNe
+
+ML0LGM6P2Za2q+R9hiV*)GqIeJHj8qHhZM'V`p&qN23+baNQJEY,8M9I(G85,fdf
+
+*RYhLNIeR5c3FLUMS4rReADh3)GEEI1ZQY&MfkU#fq&EFL+%iYEd(aN80Ura6ki9
+
+`lUiDhL6QB2Qa'!k@G5IBbUq6Hr55Db%,J4a&@RjQbf80MXT+Pl)#HVlqqK(&4'6
+
+%QECp,h$r*Eq#V)GP)pm#lS'YfGm&X!1h30)e9"H&dBb*2'-CccM0Re(E+0)C43r
+
+*bZMP'F%kN9(mDdZe'qT@eVA+13YT+KrJI6rHhrG`&D,l(Tl+G0rcSNhkA[T!0Af
+
+-XEkJJ#2HAYmDrG051CP+1PRD-rDS2!YMhB,T"6jZ$B,2X9e5lpABk"6a%UieK#X
+
+f3[TFC!JfQqrrS$@4I*QP"Y&1JeHZK*EbCjKlrIQP`,H#FLUUAV$hi,HS0Kq@Ur)
+
+U-C@LULdYDVjre2c,G-3NPj!!pG@H1X`LBI6G3p@2D@j(De-eV,H0ZJ([2YYA[3b
+
+Z%EUjY`CV0NT-ckFaiD'BU%m4FE#1EMG,SQU5`$I8Z0I$Vj0kSM%G'pRF$JeABXq
+
+M1ZKkG22Ulb1['XJ94rNBa@c)P9jH,2TKi6P*0hT4p8Vi1SkKl4T"Lqc`JT0S4-f
+
+ki)J"ZBPjS5EMRUqIAPGSi+YAjBZKcF`lL0j!lI'VDN,9V96J"jk&j`Aklm!j(@i
+
+5S`@)E@-qb"bH2q1Ic3,k0FhN8hFB0LR3L9BZ0Q)aaD8pZVXM0lh4#eL,R0MZDq5
+
+U,1U@1ZDB-HE0%AF*Krb4QFmR)a!N`8'&lq$2Cf1-!,(VMJGfBAmd2"[r+2ET"Ga
+
+cRc$L(9Frh6e'lkpP,pKrSbhEP("JmhjPXhMmk@Eaa020)K!dDJ1lHG4"(+2Dp6E
+
+hG0*YeL'ABT2S%(%fD-p&4$`c&+(B&Kh9c[&[$-ZRl@Yc6(jfHde(5)[EX%qh(0I
+
+'5EhdKpH'HZN2qjlfdVURI81R"Ebj0UmYe!8&YcPiiB5eP2Tli+!2r#HI2HdEKH#
+
+(riJ!emej$#lI[I!H`4RC(0a`LLS![#I$Rjp8G3fUkL(PrdE500SlV+AE[bH@fiS
+
+5A,604BelRPk3!$5'50HPqM*NrE"UqJ&*58(GX9U+i6&e3Ad23PAB61ND!NK%0q4
+
+j19p-Ce6RSd*Y,*rDGPXCGC9+rIFVPSlf*594jTRi8m945dH8Pl&8IY8H$eVKm5#
+
+5lr0GaDekqE11F&lk48G!&qf,(MVL5U90IGl2HXC@9[J4kG$hAK!CCRr(R',S&UY
+
+ILN3Q5pqq85(G%'QY,1[15HX"DiAGK@c`N!#%m@iraUS!aVjqFL`HeYaB%p6UD&4
+
+)'P[XYGKY8dc2mMrdfX9mAj!!d'XRXfMQXT0U&`Af9'@4fA#@!Mjb"hiVm$X"[h3
+
+59BCIl)T15YZ[S8A-jVq(-Qp#c2XRqpilMHma5Z!p4KM#UYS@(1h2CLb4(E'bEif
+
+pXQGVFSFGYiZaeqJEQ-6F!$rDH@+)(qdm0-+2A15!mlqUM0Kmb-cBcaXPBj4EAZD
+
+creE(HBkif@f-mPrDk#Zr[f)rH'mBFXZKHYQDlR1(qBkH4T`ijV82-Q,IREL9hpD
+
+FmUf@e9$Mc)J-qHp1rI!CKcQMqF8V%Vpi'9PA$+-hlr$86)[Gp6'20@ZGTiHVY(L
+
+BJf`FjL$VJKaN,AjAilG*UKTe#(L[[m)rjji(QUEJC,bB%C1a2b-eB+f-P[*5q3b
+
+ij1&qeYN[eFl@aaBA#[h6NKPXR@e4&qqEPMq3!,5b12H!LM`PeK&4R`NalX'05Tp
+
+55Habk61efejeh0M9de(mYZ,hb)KDGY`ap2JDH'DkT)cb439iZq)qk66(jL&eJ$k
+
+0j3r)&ql5S3jb1$NcJ"V1[cRhchVl9e$$qlbkV0qqCKLI)@qc,QiT(S4c*M!3rc$
+
+R-0JCIUPE!TGQ[mpBQ`T[a8fNpJ,GUFNV2P&+Q0acP2Zqd(FPjCC1hZZpqJV))Af
+
+LFdb`G#lQPbG8)B#ceT!!Ec1Z8e+HAUIJ0MZbP8IA)hU%9dfhhifC0G("2+8k291
+
+ke,r')r[c1j'jLZF[4(l4iiY'Zd52F1[BQ2R(&(9V4$FV%"FaU$-pa-)G%"`,NY-
+
+8UcXTEiieqMJ,&CP(eF1VMh-f[e3`9++Hm%rJaVC3CBIrBUMRA-cZTS`G0q"%8c)
+
+b'hH)b0I-Uh3aAi)h8c$5E1[X0q%'aMQl3NBVHcV80ecfDAeP5Z[hFVV`5+VaDMr
+
+NH8dhXp!%%[Gd3*!!"!3e6a(%G5L[LEkD*-@XJVIiZ-Xm4RNF+jVrakGilib21&6
+
+'bZFIK`[63&KPTkAS`ek4Xea2AP#QGlB1pViMd%2"@IPcN!!GpU+feS#DNGclLB,
+
+3kZGpi*ehPac*S+jU,X)h&9j0TDU6$"I,KX(r@SMA22pV'9j,r+m9H*hJIjf+ebR
+
+qeb"HCiMAHSqSPeECNQV*[)aHR$4Q$pfm005jX"R[eEb)aMGlQV%cYc2J5Zk$XA"
+
+YVkHY%A+&-r)qKRcm+82ZCG4P3EDYG'D5FXcB@BJ@"0eIc2X9$+SBh0[`Ph`lGV%
+
+ANLlf%+H[l1M!jL9aCBHEJjHHAqaG4F+,25*3&h[AX1"ZiDAZVhab2i3E"h%&mkP
+
+$P@8X4m99#cb5dZhY2R*mXc1J8U6ei5BmL`Z%b92+(fR[e&QCYSBT6KBm9LEf@5r
+
+m!*hqCNi+8fC$9H&M$arMf'FH2QDXamCcqImRmhGjjR*XHq+kerlh[(V+Pj-R,A0
+
+LYh6Lj[q-&(NV4HUH'FpXPF!*4jlU(G,64RE'A3DfH2mPUS$4#hGS6XilGPDYjpi
+
+dYC+Uj$*l$qS54LE2YeE',cQV[0TVf-X(fr(f1*!!eR0h#(QX(Vr9q!hLG`CqTq&
+
+h+RkRi2F1r&EJG`*qaq1h$,mPq+8$f%,mjZ%h"lpCq!hJ0`1rDGbGAaiZi@'T!3i
+
+)TRJpemLV`D`6I2E2Cdp)SBf6Y6cM00pUp5XIA&3kX039p$hij*jrmkMNR[kqEip
+
+d152Z5fTa36UhBGPb&ZAEmH6QB0aJeH"lJlf$9`E[qV3qJmmdj1LAZccRbH(lKih
+
+FQhFE(19QN!"$rapZ-hp*Z[Yam5ZMBVSEbZF-+J[EJ8Cb,q&h&T*,%ZDKrP*LFJV
+
+6M'IN2F,[8MR@0I0VQ"r$re[-,4rp`$P[5%l"4VbllNp11pBh(mY!M6YZ!9GCfZM
+
+KkbCi!JGZb8PFPL+5GL!*piiJ8I80br`H8+)9$Je9f"(qr'USVq,q6bY1IqKUTq"
+
+[iVZ,*4EH`lQmXNq19&ETd[6@&mi(BMd6,"rZPmbRr9)S%*LA-i+4RZ-qlCla8[G
+
+XIYScm(f@D"5C#SPCM69[',V1XbpJBhe8ee*G'qLMJM"R&ZlZFV#aQF55h'TmcB"
+
+V8eBN*+lL%Q[+YX"*251`Ye)431B&KrI"1CX[6QpI$if@N!#ilhV%Zcc)bq(Q)hT
+
+2ehY$apd"VYE8"4emSje%&(rEaFiBqMlFDr*9E8#lj6fMC1cjFFDkNBcQhP%bKRq
+
+FFF42-NUeXDP6e4D'$U8mZ1[Md5L8b,%edlqSF4JqKm52c(+'(BHaN[YfNYZH$[0
+
+kp1EZSHRN(!a1)k,F4p[ca"T$-DNF5X4*LS![0,,aELNkUYBkYY2[!80jm%61pQb
+
+4KcRE&cj$e&iI306H&Xbd0[Lf8Eb0*BfNBc3R`cBHYr@c#T!!8CRDX@BeV*LqbV`
+
+Da0JjK+@24iSER5M69-lQ2S5MF$e[DX"-RmNXqK1a68VfXq8e"Bm9Tf5f62p60Bk
+
+!CMriVlZLd(lU0i$T8#0`6FJLKD,El(qi(K%('TQU[#!r**rcJ!q*(3$VM+,bqC+
+
+2jD)!%K2jIdD8+b05H1#@Re'k9k&5&dGpeV1+HZ2$8URr[LhP$SThE--XCMh0@Qj
+
+9`T[6%H*NJi$RF5PDf$9G1ddYFUjHA14XGmah4rQVX%!JD@48KA(*i!j%AFe42bK
+
+LTe'&[%lVF0l(RqGPP*i68P1[-eaGK#m2F,[`8QFTqLCYI-"p`pbAjBFp8[Gc$VB
+
+&GXJCr@,V0FHlA&#490rT`D,"lB1hI&NqKkr8Ymjhc(I#Ga+@&3iS&bYVP1h+(FT
+
+Zj4(P&H9YjF13!1J3FmL5%%p)HmLZN!!p)5G#cSAF9d@V%PATUP*9T@UYUPYe9(9
+
+5G8ee-c3b0$Bd-c3[e"'k##lRfY3@p8VeE[8jpD-`3eKpf,U`Ff&h0"'D2%fMCSH
+
+QEj4f92)SbkLX8B@MhKYeF03GEBkf4RYDHdelDl4kG2MSb0''dBQMddH[(ReXp,A
+
+4!cUMVNcAS6ZJZa*Z$$H(CiA[$cm4IM(mpPJf0Q*XmYLLX5liS(YqE,pHScISPqM
+
+AkYr9pqL[M&12Liki%R&c[!SHk#V(Hb19NIGHB#p%[C!!r8,(#ee4LbBFRA"T`V8
+
+*Mq&mVQTLG%aV6&I-UCMENpLNQl%4XFCB4fa(l*lBRKGh[YJIGc1ZIl)1$ZJQ6rC
+
+-AJY&e"@'cBB$KPl$`bNa8p+R2$BZ01iepX9RaTI%9mB[MRI&Hq2EilI&liTr,rj
+
+3r0(i%r&A%R3*b3R@K#8*Y3Q0#Hd*A3N(%iiNp%aG2A9GSLNa2E%[mI'd1dNj559
+
+*0j2Z*0e2HT3dN!#X6-j*GLClNJmN(jZZQUkGVTqH-$ejZQAk`ZRHk5ZRVjkqE[U
+
+ZkHp02cEpa246dmp1ljYqGIVGk3-TZT5)P1b805P(8NkNh%aPUHV8P&4(DPRUSP4
+
+[kTV8VDQl8`qNpU5H5heSMMCRQm[-lHCYDCDdNV4&DI9TE@QVdMV6eU9Y5YZDGLc
+
+YA0VPY(k,bR,$mQ#'FNE%$-1-a"PC-iTQ,*cKQV&TaS%C&p+9kCEdR(4EHQPk@rV
+
+@p'-CL4Q@M1b-`Sc'M)dCKc*ZCYSclmh8cV60A$LcFqDfQ6dccmqm-r0q9Pl@`Uc
+
+DV+eCh9P(X`CQ4F,cA48FhbfGY@[@VHcSl0cXSZcDl1EXGGRAXQpQhmYq1&Xr1hT
+
+fiZcdfEQclE2,CUqE[AAfSGP(CeqHI5e(QD2*5FLTcpQDFbMR3XkG1HBjZA-@cI(
+
+!(GlU1FIQR*KcCmlph0KF6ql+h)lFVENlFmrNAXLpNRXRpm(FV,P&Fd[RGXlG-(I
+
+Vh"ec,q5CmaEPlFLlQ(FMhjjI$Vpi0IQVmMIQEmdrQhmcrflq3k[D'QiYY5kbePK
+
+h@fpB(eN(jqfdCGX@fT`fVfeeJD1JY8KCP&+89948Y+LSTcLj1,diVlL`Z,4i5A'
+
+crFa,#5p9[E6NTGUAcVadrU@,MR5(bp(Qk(#XGA3jYM[f1,SGTadA(GF@U"ES&aJ
+
+@*#j)@C!!Y5"h3H%#ai+b"B[J#frZJY8,eLcBYH#p"IXA(&e`I-(*"9F@A&p`Cm&
+
+pq-8c5L*+SNX55L`Pf59P*3Y,DNSD5cT,eT9XJiHm8%P[bGQ5[T*V*3-[+em1IcR
+
+UCH2,k5mli#H[kHA0TEV5j&*,UD1dV,5eY,1dUh4hkB(5`k@pTHG,,jCH+EeHHU[
+
+d`5[+9b*H-EjLHUAdP4f[R(lPh#[AAlPETLb,+FXX@ebf[HamfF#V8DmDAV@mQ[I
+
+UiPIVAeeGVLQ2+6H8@mUYj6[,pjEhPTmYlbYrA"&CN9"KUXLZ++PBAE'KSUYL4mA
+
+KLZ-9jbSZ9YbZH&Ja@+QU6)C6[C,+mNT2jHV+$CAE+Xp@ARhYl-+BKBN,,3YY#dX
+
+A,PUiFZ'DKGX@lPjiB1'aKDF@pLfmqVVqpGMA6DqA`YGHmqXpVepmr9U9VXTBP9e
+
+PVeTBe9DeYHTJeGQUkfqShJKr`mLBqH)lmCd@XB1"lf12XKM@X#HacLD92XbTYI#
+
+0jSF2pAUa9fQU@pC8[43heDCL3baRA"2YE3*eP$Q!Pi3Q2Ei'0Q[aPHJH`[1QM+H
+
+Cia(&`Sm4dEPiS$EL%c6UQLG@P9UT+T%"5c1fSA48Ua89I+d8m5BZ,h$,BEU2ahT
+
+S`DTPhS$V6L-EbQ$L2MjRJ6-4EM06S#D9)AfR%)2dYG,V`GXX0J&H0'@[jA9GXN#
+
+&V$`65L,``TSK9+[ZDi'Y&aXJDe)3"Vh"$0T@q5eHb@0Tq!6H2H1Jbc"e#qN6B1[
+
+A-P)T9GrIDQk"B"XFJ[CLBXd5SUPQf%$k1Z#LQYl6+iYIrk!`c,kqI*-ZNUefhiH
+
+Ui3MDkZY0"Y9VbVNrbe4pV&3&9lUk['K#Taj9#$SYp2B8Bmk&-C'k8$E((B'[&Di
+
+F(Gc,'`UhbQQT*'3VA"STSPhNUHNVha36k3KeRk&mY5G&G-dGjc'm,iH,6ihV&DU
+
+biD[PA6--AC1)'b"4U(ZX#B)VPbSF0e,KTCr@Gq,IeIG#3V#q)rcecAY@aplASaa
+
+GApA@$0G-1EkAQLeS@9lAe#"I!(%IM'ZI61TNh"(brYD(@`BkZQm)c!V6'HbDckp
+
+SDH0(4,&TC+%Sr8F8P&&Cm!`&(BVC-`hc*p[VkieSKC')`$bD`qI1`G1PfkhcrN&
+
+I$$akcScUG5UMVNL6D,pY2*pSSPDb'QlUISiZkaQk5RfMc[[E(0ZY`pJ1$'1E$IX
+
+"Pl$T[LHZ-RR(Ulb'3ZP[95cfIG[9cbS*&rbXTGYIbed5hPF&AY@ckq4THUfQ#Ak
+
+03#$(R8*'C-ci(MA@b1Z"12jjldcmV!ke-E'4pRAB4!9LaYZrU*l2$$e&lS@NFKT
+
+d8Q3dDMb2U[`aLY3K&-L9`R-0)YrrbC(fGlCD,3UR[Ra6qCHN+KZq5Lq6TqQMFR9
+
+R0`PR!'Fi!kNQaQ(f8AFHhpHGiD`%-I5*fje-6R!MMp",qF1jX1ZmQ1[FS,dchHa
+
+la#Z4M!kPKe@I9)dR[-`-I9r@BZd`Ij'#k'klNI%ZJj0d'qQjlPJfM(*p$1ZKh[i
+
+[2CLQYUp9&c*$E+MSSPF+dB1ZVL*R,89'SmEcU-Nrk8%64@USr3Y(#p'$VUi#Te%
+
+ILKjd5cfBmV6bKLqGqY$JfmA[2TXfZKr9r-6XP&N$cZ[(pB)IpardhHUK$HA1C1F
+
+56(hFB6LZi&Bq%6IYCCCLH"k%D`"I$rP*4N3b9k`&+l$FX1EL5X+,ZhFAHLLeY'[
+
+q4e"!rbjY53Z,Nq`X0XR")T-@X1Kbk%RD6Z0@0e@r+8L)UI3%aUV9F'j@`e8ZlVC
+
+&QfJRG@VJ1-2K+,L(92JaRKX5+kLcU60&r8+GXFeN05'I8a9J+mdmSa#IAVjMhIc
+
+lZ3+1b`4G(HfS31X"+*IAF+q,elLYj-bk&VL#DVb(I"YNI)mf9EpGi`GS+IZBqNT
+
+Q44b"LUMkciDfeX+D4Rp0,YA3rDb'3VZXI"AY)9#4BEIHJQVLXV-I(qifV2l5qDJ
+
+hJhbifi6kS(NC'Z9eNVF'ac*fjNL+c,bqIXr(YrMX#`IkSPB0e`F'ZiDB%(Z8D"8
+
+Zmp![YU2TRCJ('EUY!2)k01Lf82DiVAQ5qeX6Lk("H`VIY8-RKVee0Sr[fC1(BXj
+
+XTaM`j-%ZCINQ3qQ(&h3QC[E0FQRSVGcNQd@H9fSdhP'(IKGH3V2PDQGMQLLAXGi
+
+(mk$&J%XcIHF+AlDTFJma#c*d6l15(fR8e95RekcaZmZD9i*i9pFYE@YC#TPAe4l
+
+SMK)a5r6F5"UD'lAq2R!8LVK+A1KpLbQb9*!!8R"'ZaFfQPZrhr81VVHb'[99RHi
+
+5a+DrhYPBJSc*VD-4@Gc)&*V@(hDpJfq`+HBeEU0hQKYe+Ya34V,G%HLbBcaZ*H+
+
+HaHXK6#L$A5$9(R)GT8mD@@LbfTZdqd8GS-hPJ)HM3IQNA5rajdNrL(QIP2*Pmhc
+
+EITj[#mmh6rEUhG''(LXKll`96D0@fGZ9T&R*pkV+,AQGYUrcep#2fTedAfMI%6,
+
+cX[qDH5aQ92(c6V3SK$RKR145`TU)F"k5aYdX!dfKPIL)2HZq+h'3!*PYF$`BaB&
+
+,,F`lqJLR5p)KGZJACD,UG%[BPS#D`rfZfq4),((#dl*-X(f*T*X+902J'#"Ile8
+
+H@Zmk(pJh2,+XTARj8V*ME@[$m@kUSMe"QYleLL3VLdiUaJ42q)X0T!Re8llP"j[
+
++F#TYrl*L[@1pTjpBPHRV@A'%QDfYe8q9BPp3laP@'-Y!TcdMGcBGPjYGIHlb-bI
+
+CcELFZkqZPDM+Af1bTNX[TJFr`E3%MZ4MQ0J6C"MI1pG"qScK5p!(GF9a[PA8SA#
+
+D`6(*!Z4kcS@VIe%Q6S)'MCrcX46-DlpT!EPP`)9C'K5&i9IB9,jl')YD@-L1XQ$
+
+YK4X94*HCQM"i"EbB#KYlZaNCY)F2mjFZS`0DC2"$-`2F&l0bV)PA*+$$a+Ff'rD
+
+hf"DM!QS#V2+i43'X'mjB"HUMqc#KXUcQVD)'JA*#Q3F-[4HXFNA'HS"4TBNF9ca
+
+%al-*b&D6TNEITA%[N!#KMrAi"N-lTa'1PlF[jP-hkNqC@i!GAP3`MIYP$lp2(T!
+
+!%5(C#SIp*[[pVk9J5Ee931HK$h9A!'rBj1q+*+KqBH)VTb""%kj%S@XQ[KKNUN*
+
+Cdd*L1JU*AX0UAd,3Zlc84F[pdm*aRdm,jfVKp%1Qddpkff!EC2rDYT[X5rdp+ap
+
+DC3A*T2eScCa"j!UE0HVeh'e@YT!!hec,6,K!fRDLS&dE-i+4q3UJI1Qi%,`-dfl
+
+q'qUDKQYXHjS2TN#AG*,N(jSmC*+CUT!!5'`Nff&bF$E#QZicJBe8VRIedGEBBL$
+
+eE`mc%'0i![8kC[qVUHIP%fq@#GeQAb#J0a8mbb@#RrE(Z)VrB)2"L[e@q0+M00*
+
+1"f+cPfT6ITbRqhNH8dQ&11pGAJTElKTRq65q(HTh3ilU,1GcIfPeDfAV#TNEXY2
+
+JP#*bKXq*91$fM1!1k*f4ck21'23F#dc%+1$Pdi"K+ecN,Z'm,14lMpkdXV'jm6'
+
+h9Li,lij(1#qVJ`IeAYmUGKj$bN-ErR2U'Pc50B,D,'"qCJmT0GCbjJcN,@D`@h`
+
+I`1BLj1ZZfL+T,PSS013SPQ#iP2XCC#06mERZ58iljrTh3(Eq@5fe-T28RFEE&',
+
+HmM36TTDTmm(*c$hM#[E9EaZdQ,@RC(rP+kPkbCLJ'C,REcJR4rbHiAJ2Rbq68Cr
+
++eE&A0p+056CdZ1LkaYJ@rfh16VK[HYRmT@$@HXbV$1*qXP8JqeMJ@)rCQ!kZ3FC
+
+#PqlN'd5kNpqP8QZGl)06Q2K`Q4ceUbiH[JpFN9h2B,Dl%XQe$9cHe$`bMhEb+S8
+
+c`6T9&aQqa3RSikdXF(1ZpJYXN!"lA+dY69)ca@jr[RG190AFJdNPr96*D(r)j6+
+
+M2BLZ)6IrF$-jE3YhfXeYDdCD",UKQYJ'XNq8pP"M%hNe`09Me5H5RD5HdY&&24$
+
+eJdVA)XJ,,&*YFkkVbF8DQP2NHqHiah%hA3X&(6Bhe1B`2BcJ,J#h-)95&A+)DD,
+
+HDYFD8X0&U[)@(cQ#DR#QBG-T6-mRCPFcGVTcQNIQPTT2RA$HAkmkG)$FS#mN4N#
+
+I0('Fb6iZCYUT3`kVF04M6V*('R#96lP9jFJ!HjdihRG8m+%VjZqG3c@rkiTb&,Q
+
+aHe@ZaF@9f`e30@Na9("[jMf'LN4`5'TKQAT[6J8kd9"Z&c&U,ich9D4e+I2M'AK
+
+lHTjc3A4VC"fUMUYM[V),iU'U@NNEmL4Aq"$UB#XiSMQ"RR-[%ASj(9fi3LSd9"$
+
+rqYI89Fqi919&cQMqpT`,AMEZ,(*BX319+JAK3TlIU1SEh*9+q0)ed@APA`95F!j
+
+M&GqXZN@H,0SdG[MVpT`VJ9F%R@QXFK5KNj25aNZ9EdZ%`h9a3,66Rkr0PB*iSM`
+
+Q-SaGPiq1,"K0QPSI,XBQ+k6DP%!GMLdPA+qM,bffCXrD6,qqE*U-$$F*XJfArNS
+
+Afl8VQE2pQ61#QEQM#,qrm#IC`CT6S&6#l2$aLJbK*cXj)i4E*I"p8CV!0Z&NJT9
+
+h',9mN`4(-IXJ#rlA`8THNH[$#,0A*I)CcLXi+6cN+,r'j+r5)-U)rX,f!hSD[ah
+
+),cdj&j&3*'C0ZU#%KHjcBH11Z`M@K9V&M$3@"bZ6l-jm@KHkbT3jTEPLNXKkkLU
+
+j48,Aic@S0-!6T0Sik(NlTpdVhd2L)SN+)l`3dIV!R(L&a$fQiIC0(26$J5jQ"hB
+
+%-Uq#dF-a[!5ah2)MBl)8BARS$qU'FT3bCb@bZ1'K*0fT`PF'XNld*#D5AN4G2'i
+
+8q!hfk8r6'm(6*Rmj`FTCB*e"kdc4H@$f1pfPA%e)L@'3!-!!6rrjT)q0,hpqD$k
+
+fB8B-Q&NVA2lbAU1f'RaH(#*CrK`5XZN1&-c!5p8[49i`K@6(0VF0ZY[f9#if9-S
+
+ZpLdQ-%)SFrIZ)',pRqSSEL'r0G&jM#PadP(NUZ(mVc@!5AHY`6#pP6kkX5S1bQ5
+
+iL#K,l,5p6[cKI"Bda"rLFjEZR%++j%4-ph'K0#HJ2`hY0XhdL()9HJRGd9[$"Cr
+
+@-2"h0Dc0`9B2f,Yl%J,B`B#0JpKE2NVBkAG-9$%Qm4[2jb@ZhFEhS&ERVC8kEa%
+
+FkZMf8lFrLF3RT6l(A#U[aQQ60L4fKA+'GMhF0DTV%dal8iG69BVFd'@CMKa+K3c
+
+b*3[T(LUkR@#(Sp2ChG"B*aEKDF[iABUEEUS@#(ilhP"T`P6$r%AYcje!l9GKTNM
+
+P)dF5V&lS0h2qJYdQNZHC(jrL'HJ5419B'pJ'2#SQlEh0VJE*L`@fHl`cpH"1)lR
+
+L!+Ua%RkakPKiq3%@lX9*%RB-Q,q*bUSYHHchF5&fAZ-+eaAlI'l0C2!,TlCb#lh
+
+@U#biFfEIYefhGeD#ZI[&eKXA`9KmBbQMr3LFJ%UFKp5S2FP9@hM0b*eITDrcCZ$
+
+*&'T,e9MPd%39&MVc[F+cb4&*cDBE[ehi2B2I6ZlY[ad[Tr"l-KAk2ael5B-BhHU
+
+(kL1al46lHPq1!mbN4XGcl!,cK[D-a%2V-4UIc12I%2'#lL5U-Td8LMUfZh9m2S"
+
+&RpI)qd"F"rE`k!dZD*AG!!dJAdmm(24dl+BV'fL@AVbF-%)hN3C,"ja6hV!H,Kd
+
+L$hT5q6Z8U#ad06&d#eLTGdGJ6a*q#%F48L9S%f,ID@IaP92Q*q'P)IbqaV$D0rM
+
+AZ$Lil6&6frZZ331aKUPU*FGCUDK6'+SY!fP(i)T"CEfq35G6kFQVHQdHVmJ6Q-l
+
+*&GhiAENX4N4NeQ-5E'6KHV22&p&*Gi*"lLqTBc[dfZ!H+9'EcKC[!BD6Y'Z!5Ed
+
+Cd)!Kpa68&hB6kLUDK`EEr+X"N!$+@qLkA5LZ5*qRqDlR3@8388AmKM0F56c#lT%
+
+8UB0m[0[hS#T,UlESQR'e&(EAJ)NHjaZZ8*e$rIEi$AKjPQ,@mSi'aJl5GZTi$hI
+
+eV!@8MAdR4AHVZ&[[DhbLKi[JlfM[Ed$Rk$KRqXI,iD6BIp$RSpkSM4$pd00&9D1
+
+QQR1(e0q9hU@pU"Nb(Sh3fpmjE(9P)r04HUr8`rmBkr#81j+MI`U6j+YqPcl0I,*
+
+NqGmEjHQ(,X3NU)N"mQkaL3,UEYiV*ElVB'00L'a(4kkN$$AYq$VPDNA@('4ePf1
+
+k"QX4dq814m`Y&(-Ra8c"kkp)'FiiEFK`KQIiTT6KM01-eeq6-R3k$FM3b62mZT5
+
+KdkR$kfLmZT!!iC6ZS*M50E(8eIehl"kjAXL)538[3[NdjD0pE5KLTFl'P4SVLIY
+
+4G[Jql"IiI3$DpU%IED4Z-k!KbrilVaIp"d`"G2m*I!r!GpZ["TK-Ai3`5A3RC!9
+
+l))ekSRHq3G@eHhX96H4Z9b`bVN"'ALbKqYhNjPkQ-Gb[KD8*L-d-Bmq4!a6T$)R
+
++irNj3ES`2p(E[(++2)41J03!HQ@@MlEc[95MFMhI"$r*1kRXH5H*mU[G5IADThd
+
+NfdI94kS#05R"+JH'+RbH9-'5`4eCl4C8$KF(9ZpY`!C5h4"Rda@I+2qDhDE[q24
+
+lk-rEd'&(q$9(!`cA@BlIH1e#2S`,EAIjHQQ[MLYb12ME$DlYQ)SEZ4@i!MBdaAG
+
+S#ab--)59Vrq,$AeI-9J0m$HR-jlJfbhK`)r463U["29*(,MX89)Yih@#pPcGLGq
+
+ZVhkl(9S2qENd&G(AadhP8C(BcRJFK5j9DSR[E[P@3m3Kh&YM*reD!MUMi`!Q@mJ
+
+Ij4BaJI)B[FNH&BUXEXSD0%+*iTYFcq*Ad,Ial(q!cP`mqapGUT8'C`*RZ-HIBI#
+
+&N!!Q4+!F'VeHplZiEdYaPb&QY-XKaBcJY6%4ZRq#SM)%dap)-*FPDmeC4(KiK(1
+
+P&TA0i-MFK+af%mIXPI!C[SkB%2XAmd2KHkR0BF89[*[h44Ub,+G0q5qI,P6Eer'
+
+B%S%qQ!P%qBJ2Z*2a0F#GJ#q[1`kBdr(b6AFN[Rk09q6AH49qa3hp-13d&0GlF$-
+
+1&Y&#H@U%'kTd[m2($C444rf#2kUC%04NfVk1fI90l&TX9dDmb"K%G`h+930fN98
+
+126B,KQ,K5Pcp1kL6IJdFq8QHqpHIjEj!cKc!8IX3S#ZiREJ,Fq%BVrG4G"ZMKVJ
+
+-Fm(lq"k-mQVI[qHl&4&LIkG[RKTZ)HQjNhP5pF"F#*fD1$Dlj3Vdq)j5RN+V%6V
+
+a0pRTMJpFdf"(U6l')Gj$KEb(f%PHG`*k+-$4IK1E+Rlr#Zj$q2eV8Qrr1PMNK'D
+
+0EMheBid(,1#i+a%hXjc"#9!dNrTLNa,klL"YXXfkBP0FB[XkR`+HHGmIYG@JFDV
+
+arD4"N`C&R(%U[YYQeYH(XR)f`V1Dc-PP8#9"Mf1#BKEp)M&-l+LK&DiZDK#"U9S
+
+CiQ)$4m!41QAYXcAmCVpKD30Z-QE+2MaiEd[e(,#K0[J5JMq53DRBp%B'mM$0U*M
+
+)fd(Zm#Zm8,,"0rJmA46KmY8[AEkZ%VKXECfdS,HkLcGZ2Z`bp9d'f#0e1X`E0L8
+
+S`*UF#[+%-erp0Vkir3VccIXa&pdQU1fQSFUMfI&HIk+9r0U0HC2&q4k+bk3mk#)
+
+1`Fe3j$iaBCG@&i%j,[U4j9eiGdC(k&6-L1lIZT+9Ec3jbZG$a@J9cGUD#&,kial
+
+ei")qJl("VGTB2VqmS!GFX#i#5+KFQFb9+iRUGFFk9eB+Rp25qmeTk[`3i3DT4Ff
+
+lYjPQ@mZPTc2!#+Q5CJAbLASl-Vjc-CMafHFCXe'e8P4YPEpUlQ"YbRKY4[$D&&*
+
+Y--Q5@6)i36*,FmIKDl!l'Pp$`)Z5f9aHa6*HaE'ZBjr@SL*BLb22DZ(FkCM[+L-
+
+d03kZJ6J"9qUhBa29kFR4*6-$G(@+m$d!hlRiTXj1TL-CAaP#pEfP4dBMNch--8e
+
+%I9P"&kqJLeI3a5[SiK9dm3UkH!9G[))ZAN%A+ML&UP#,QqhS63`VKGY0mlCGHcC
+
+[TkPaT&&8YkqZR$2X+$#@d%TQFR5S%(%+q-Dj@MY#4+m&kk&+jA*&BNqFc#m9PAk
+
+)bkf%1[BNE!jZDp'M,qE`cVVGTF)0GIDcA$8k[RpL"qDl5%R,i9*f+2QVE)QLA6f
+
+9Gr9NhY89[+[,H9GRmki1m+j1jefG`VXkLAHeKhHei9[)XE%H3m![QAm`[XFM+Xk
+
+e5PI!&#eYh%q,p$iZ#'lM2XrEZIT3k-q+U2IISDXPp)Md&AAbF3I&MAYVHD)9()3
+
+Hi*-j$cNMm4!iFj(,2XaIA('PBAUVRRc1hj-cJ0rT-D06FMqC1iIl1'TUemBQ6Xk
+
+RQCllV)GCNk[e3%3hGG4mpL1kZS,1F8DrlccI9CL#*L*Y%,Y9Am&qmqaA[ced$e(
+
+#08RN(J++B@#1p$JZdGV,Lm(JbF!JAce`MQ+X`ViF1f,6p3[l`G3qF9U9P!phD2+
+
+ZESMJqY+kDS-@Jq3+2FC&&')jfr$kpKe4DmEJaV-)pmBZXaBhP9S4BFU@4)FcLLi
+
+QP4GmG,pj!b911@[J[dMLN[ea(RjAD2J@'F)#1M&0!CNALpRKdJLCFUb*P3%(&PP
+
+8aHJef&8RQYQ9r-V+dU9PPUM'#ee,bVhHZHC%m%+l,S`*Y`EF+UBaS82cL#GB(%2
+
+4(UQ0c)YXMG`GfIe#mJ[f&j`[H&pBmd,A#cYHZ2V#VDM5U1X6M"05*Z41X%r`60J
+
+aiFb%#p'kk+KSBh44G&RdiZMDk,A4qk-[4cqD@"KMLV(%&-BFLaQBY$Sf0YEaBYD
+
+,'erXH[(5LlGHI"bRMSZ*Xm6PaTA',BPVLqZ)fa#h1@jRh2kihVJcFHIM,Nl@6cC
+
+1cTfmD[+QbAXRhjamGr*$Jmi3C6!BNJhTKPb$c9"Lk$BF-PbFXRA+m5QRTebDFXd
+
+BD8`d@U'D'63f'YZ-UihVM*Z-fifpaR2'Lr'fq2,i*9$3E)VI'hm3kTNlibr%AiQ
+
+r%rmiS6IKiY6SU8Y-pDC9TK2*YkCA6Zp-b8XT6&Q9qYJFB9jLAQ[HEqi"!kYAh&'
+
+H$HPA,95GK#*TC@LAqTMkI&KNf1D`l@&R0EY(A4ee5lYIHePlEr4&AILBR$'Vaq`
+
+CdcIQ%E4&0i`eMqdBZhEXaV(EaZiHZaHDSY['pZT6p'AkeH2#afdIpc!L0U)pBP[
+
+%IXB@R&"8G0TS2R#cAEU$D@Tef"Z!B6P13B0Y%++SMq*C4TFMSR-hYI0VF@qU,1"
+
+#!Dl1abf%cZ,M@HCTc(LlcUdLR5AlXYZ`T9VKjQdPCC)mj4*LAkd*L*1!'0Y1l$G
+
+lq18"0`ebIjGcP#XKi%h`qbSlIqFTIU8&KQYrZG2'2SF)hAabYf'VkD-pD#51lp6
+
+hBGT5CbE%qUUfm!cE0@'-BD[fX+%%UXq")UY,ZA[+DjdTl2MkCC(*BE49+0e4PdK
+
+E)RcA1fZ1Vkq06&D,Z1T+%9GGK8Xq(kj3ldJh'04GkbpB,Hm8cHYlhp,T['dXX8`
+
+TXXk$fR#KrNh,p+EqmrdA@PRI[(3,BihpPNjMf0CeIHphcDZ,G#XYR9pjeAR882,
+
+D"[+eX-(3Z*pU&kkTfN+D*YKIa4XA'%Tf%mX)XA$5fM%ea161((f'hGEi)LGU+'U
+
+%bUN4Vr2Z+YDJ8N1!([HF3rS[Z%S-f(Q8lNB[Bap"9aHP1kFdpCr1f6AGhRmD[hZ
+
+3!'8hET8pdkhpCih@H([1,NYZcNj8G!*kXHX3ES"VMb0f$hlh'DaY2QFdHLF*$-R
+
+TkcF!CaC3lZhpjXRD2Y6pk&$&YaEAh6,D,h``rDAq#eh&EQ9kCe'aj31$T+#S,TG
+
+p6@a+rb9F+dHF&NYUrkAbT[j,l`m`p8[Illr5Y`ND6q!aPGri'&HmJ5EQQ@lrH1q
+
+mlf[26VFcMjH*HfL6md54"(q'C"5j-R!"cfCAML9hhm1[&3(4CNHlFR16$VMf8Fb
+
+'BQHF9rf[ia,Y@FG,2kDSVpQCF[U#M`p5G'$"lQ+ZQb,l-+f1#E5MJDcVNU36N!!
+
+pTlMr%T6@j-,DcP'1LZJ-Gcc,`1T1lYV(0h9m9br+5k343IS*j2*`@0-TDbP3Mqr
+
+VhrpiVf&-F[XS&C`$B5E@U(NG$P(F#U-cqYFf*9Cb[C&e)VS5cJKUPD9IXB49&)0
+
+CYU)6YN#2CIl("hG2YZ'0R9%EcZXmrq2pZiX4XjQk$p0QrXGl5l[!m+41k)V$e)X
+
+"pI[r3YE`NbR8bA8EI-)I+'iPP3G8dhfZQP6d2X$I6R[6aiI&jGMS0UjMi@qQblB
+
+1ZM[(EaIBVKr93!680he`LHBhE[Ja)[UG#J20bk+l4LGb0,jQfJU&5H(Gl#VHFTL
+
+1D(&KV,*Ek[1m5J3+T@8IbVR1853hDrKG(fU#HN#R"IAS4MdmU)F2pE"kq")1H$3
+
+4(1[rGabQ$J9dQC*TrSq+GD3`A(I1Lm%9T"FU5-NI(Q"45A!AEi4V$V!`TR"'FCl
+
+`"QPFP,U%!KZQS*mZ*Q2ANV&jkG!3@`"1VbB51kCb3P"b''p!@UX'ZR3Q8#f&,ej
+
+`UPSe9f"+ePaN)B3,(%8Mmkm(YJ4R)Af0CIkSPC5h0TDdBZG(SA**A3HB'YS%hPU
+
+03",%"5M`6I2AbfN*Nbmcl5j3GFDA&pHIQ&i,Sq%jQbMSVF',ArMY-XUr6*A'M5J
+
+lSkr+kPU'XFL45VA'YB#Z"UZJqfJGG",BDq2T[P@a,P5$Zh2CBpMe3(hG(pj&(eD
+
+`F1T3eB%fCR4"2KYPH2R$AVhTih2f6LLhlIePV*UF(mI'r6*@&&FqL6hdbeLVZkl
+
+%bVh4*l%@!lm5UqISYGMa[i`Yr#5f%V(cY0"5p@LYc)!ECDd-h*F&'NlZMmqjIjU
+
+($+&HhkZr24)4k09r,hSS`Y2&92L0&c&KZ!F1RaF6HrK0E#GD-Df2fR#l"IF(HhD
+
+2S[[E@ZdFq&cU2NHcUPlLIaH'mMirP,HLq3R&BCB-hiDi%aa(SZ!j9j(!%il2h[6
+
+i2(lT44fA*8DPJeaMq%JhV"Xqpb6Q0EVU3#dmQ-43Qf9qHrV)IK$A+YepUADSp-a
+
+rI"1rqVl3iMYE58P-+kVkmk"G`4U0h&R&SMYa-E86pGZ&qZh'paY9@mSVG"A6aVD
+
+SXZ#FjY8+h*dEcUamRK2)ZX6qH6Lj-+#2SkflG6UVldpFCp'V+4BVG$%GP)(cG&!
+
+Vef"l9Ul8j*j4lELMXCaLfP1%cVC3(4p8$"YFkJi&Y$dbmABIhTbV3ja4H*[*h`B
+
+iY@#lUHJL`jN(M@"B2UM4Xb+QapYJq,G*lk"XI(1i`MY#H!DR5d8C42-!5J!D1kp
+
+NYSXV'CN%LKdPS3T3ADN4'kB`9G'l1Y$Y`di-GIYAQYNBheq#hCfJ2C0d,4e8lGQ
+
+Y`39"LdZY,2Bp`Hd+R)[MeBFFm*H$Q,"6*dd#BRb5C`56Meac4iNiSUNPPr#B3FL
+
+aG$CZV$#h`$P`PF5SC#HK-9`Lar9*m'pNa#!LcUh&K(!)*SGhPeZ&GcIZ+q!p9Qf
+
+S24IRI9qh%d`Qda[5@ma92(c8%j(Vk)Qda9[X6ESp8&A39d6Kdr,m'),Cd6FR91p
+
+MSj!!KCfJLih"KHcm(c&IRa1AXP2R9eAkq[$ZmT'(r+flaa!1pYMA[rmM6FGBE2p
+
+4L`('ULd[h@@*dQEL*'H#4,Y(m+iai(ki#X1mU)f!!Q3b[2*KP82P4r605Ya#*IR
+
+Zi5[Cpi#c4"FmC'-bmVBBE#m9E#qC0Sl5)djdi9[S`N(SP4i`D9b3!),2ZP((&LI
+
+e6$bQ-MbS50p#E4LFdBh[$A!Z-C!!-mjNr(+,qEMNh@(92k%(EdeITNm&DXd'NP(
+
+TL4aI+Y"jfCJJ1MS1mI%XFE`5JlKk#a'Nm,UPLliaXS'bKGr8YVL0Z)"e-Te(*r0
+
+GBDMlQ@U)ECKX)3`H%-Hed`,&@I9-pDIp)D9dRl@Fc@eNTI$c0!NA-)Dl(RiGYd,
+
+KF5IeZUr49JL'NBfEV9,IGIM['aZBp'![#`B2PIE%H&FVH@INkaS[r#PPNmXKHdD
+
+N'SUaNhRp%$$AU&BVF"Z&#4+mELLHLiM)'Cl(3E2%TmENjT6EZRX8VV2G0$2jqX`
+
+Sc0QG21i')0NZ+lA%0X63V["$S55C+hTjSrl)-,TVdlZGTJ@1pEKA6a"U&HQ*Y'd
+
+9cEU@SIdUlYV)3&))Ke`(mNUL("l$(a*F!$j5N!#pB#fk$TZCH9Rr5CdLp-KFY5@
+
+APC2rS&HiT[+UGJ@QaR0m8Xc#PL6CYEJ('idj#m9Q!fSGdFe'CDFVca3U)U[TbXq
+
+E4[FU96XkZATR8P)KLrJ11Te)#aZcQ!Qei"lSE+QM!"FE&FjFMP!f5@If8f4K)Ep
+
+DbDG-SE@e5P0SQSTQMQ)eDBH"*ZQhN!#62I`@q156Dh&aNZEi)VEe#BE3[[89RH6
+
+,cR"m'GXjE+,pQ06@MJ6Gjj(hmqa!f)&*h8QGJ9S[),Cf!jp#C930ee9G%@fEDP6
+
+A[ZL-`"ZkZ`Ac,DL'eT5c``IP6T2I4CaD+(qQBNX66lYA[lp6bped+kM9m%+qMN#
+
+FZH@,0-TF2mEpiC!!-PB2mdiSY3XAi6r0)rY--irXlH!6i1V8b+1T)5lZHZG'&Y9
+
+p5)QdCI2acC[HYFNdU#%Z81[N(6ZGci5T2jd*CImd%r+EXaKer8GjI"j!&6HiQQr
+
+"h(`r0eDHAEL$6kAU3Mp)lHrmdK8m&)jL5Z#R6p)GI08mYa96V'KiKP![4EK,D[2
+
+3$"&Pk0"$Z+d#IUprS[Ja86"CBa2PU8k$HQ5DL+BbHEJRS36FaJ&Z8ij1US"A[Z5
+
++hj8QlVG3XArPRlM8IRZ&p'!UVCj`H+Z*GkYqrk`V!PQ6)cr!0Y,VKYS$U[++,5+
+
+J2aZlVCm%9TT9m[F)Tcp(L1JJY'H!caAjJE2h'6Sp184c!*L5HDqCLJ1'IKcZ`Q4
+
+HG@$rq&pcISJp$A-'8Rm88r'0(mA`QXhr896j0hi8a@[QY6G"Q5$dJrH3!-GNhSd
+
+G1QFi6CdDVJiEjGiR-1r5D#0KFR"4TiZkq[e5JVpR1(hlpcGQ(Q$1,qf*$(4c,iB
+
+Er4[-[m5!Z%%hrEQ`[C!!lER5Yh(5&H5e$4)jS(!r+VP$!486k*D,j0%!fY)jf"f
+
+i'Se1$64(i6Bk'%ZF%(Ui+G"&a4A1LDZ5VM"hdRQBP8lS8-$E#lcC23J'!UdKm"2
+
+Z8Ta3'AD$Pe"6025$DqLA8p'piLB[ZXHL0UA`a9XUD3jr@1p-k@#dq9JqeKR0*l&
+
+%I`LhAG4QAH(MRDJ8keVj$YVD6-8ffUK%!VrQ%#le)6B*+MYIFlI*Ve)pmJC8liH
+
+RUlEJKM4EU&6GB1IkmldEGfJjqbShT'P`*6&Sheek,HaQ5R,RUMaDAFQ6rSpj22q
+
+BjcTbfr1rjdRjaca`F[AAHH!LkbI9L6`+SR%'mY$9hG30NLHlq8rHNh`-`Ld3Tr5
+
+YYjP1pN`A4CY'1'`m+b2qX5[5rM&2mMpf4FB[kldIhSFH$cTK"[mbh65,Xr)&[S[
+
+$NAM9cVRJDepHP@1LPU"Aq11NV3lhFTEc1A8IG'%6%0'()6SR!,GjCZIFGQQSGl$
+
+4JQ-J9'EIN!#rD)AU!Qf"k0e3qk5#Dm3LJFF[qI+$UY`$L%UAA)C,hF4l*9jC0r'
+
++D,RI&rrc-EpqiZY3HH&$VIBKSR8B"9iP9[Qjj+Z*kB5-+9MdpkJDJkKqLU2I,ri
+
+4h!XkJ@`I2!SN2IF0MKidA6'T6ZNa5*G6ZP1NXac8@q-Nck'AZ`Y1J#leE)m*&CX
+
+KpCJi")4M0UYI%9XQaGS63YI$I18NqEM6aq+H8eHMP@['pGIM21f2BpdqrmN1#Cr
+
+ZpJ@F)k-MI#)$R4!aTjjl2TTlNBFdprTlXT'e$EZEE)86mM153h,fT$AGaI-LANh
+
+AbI,Hb0,*Z4Rl35*3)d2R$90d+FDjPBUq'@9$FcD,lepCCjPU9rUZQeITChAf2kh
+
+c8UN15kN1R+@U$[plhFZ(kbk6L6kE@@[aTILc@UVjM2ZkZhaAZ&2B@#8aSEU0)ck
+
+fXEGYPc`b3Jm2jd%'[kp"RI)hb2a+e3Nj$r[jPHSqZR*Mjq(L3[NQaIhN8DVlN!"
+
+LD"BKLVA2iIkL68ci2Ml%Y5+h#4ZUMMX1dhAmP#e0j#Vb"+*Q"EUiDVh6L)Jl4"k
+
+bL6VKHMAU12V1pHM#0-YkiD2lXbj4pklXH,2VCHZ40Xc`,1E@epQDPAA+R@KkYP0
+
+FdQ,-DD+h6BBClAa1,1NSa63-h2#ckJZTZR-$$ZkPZZJY)dDZEM!G'5B%-YC44Xf
+
+Z"%%dSqRVq[*e*JZZR2'$Y3Kc-2%X),C3'F5ALVh69aqI)`cPhIcA"4@Bc+G6KAl
+
+%Thq#NpV"Ac#!FHd[-&l1GSDVP&qk5fd"qVh8)3Tp$A'R9`29U)RqF688CfNCiRA
+
+S-B[ApI(U-rCR$0KB&%"-VP#AqE52P@r2q@$I9Ym'"Bq4'0ApIp(*Pc[JSpXrlS!
+
+VQFiQr2`U1)akI(RI4dpc3T(qV*@Q)h*UGi'XUmiAYqmMZ["e@XF`Gb6k+I-a,Nf
+
+3!1Y(6eT&VQ[cp'GSZalmbJ'dG0Rr-9SSiR81JQ@hJ@'hi*HCi'ZbDj!!1mH&$TC
+
+9JBbrV3"b@4ASlrBXbH@lG*[P3AFJChYKf8HRlNKGEpAY(hI[ZG,rXhY2Jlem`8!
+
+rFFT2$Xj4ALkNfFU)FCA[ilmZfjHGLFmmkHX+6[eXY[9e+5ki,fC'TjiQG46I*ph
+
+DEARHVFQrNU&E1i"Pc8qi$[#Z%0Q#VVrYe!lFTIfh6YA),RIU&`K8TI&A%&6PbYE
+
+P`p-M6!Th"[36"38#6KGlAUJ05R6RCQlc`+3iJ@ll5kD61eA2UrE!hKklb0H$N`[
+
+Fc!&[mbCI@b"eakdAJleK+0EKMSpk!#lE0V`Z3mk939E*+cp2%YqU'#V6FA)HLba
+
+9b$)Yf(HiC*5EU!"q-fJbUYi+BjBkb-YXTjmaTZ$fp'S9X%'@(B4CqHKX-U,PLJ0
+
+M'9@L)*Hf1jIaRXd8@,A(5QibiE*2r&T#,5V+Fp3NX,*IRJVY"jj2KCpaT"LVJ")
+
+k*qh2UiN1X'D(H5PKmQ"VTr(Ip`[Y46pP)4ec9aZB8,4!24bIcF06[q"6k*U2'G2
+
+P#TaDpa-Q0`ClZEr%[rMra)mqZ@YSCPhVNraIGM`UeYRr@Fm%dU#82plBJQeE!Dj
+
+1AIV[9,cMHSaVU0kifUMI1e1Mqr$p2hjrh"34EqDTCiB@T[,RGeDmipEqRXEGAkG
+
+mVE-Fpdre#ST26Q1M%Y+JMH@X@10@(ijfp4Xd&BK@++eSPrlpLM@%#XS!Vj%qSRQ
+
+$Y)c&MEI$NDDR'cGL0lYBf,(8TLF(Rpc%elBRYmZr40')(1,5D1kaX#FhRAIa1TL
+
+rZ[(DJYH!5r-LC1S[h(,fiI8Q(KZ2f*ei,H5[,VbqL0GF&rNkm9IL3V-3UX)AEZ0
+
+5c5p`&CUIh#k%%e)6Fp")ZT`AET-LjplL3"`aLAHd85f%2Gp9kSr,G5A,k-D82EN
+
+cM11%(iH1Lq'SE(jbTdQ01X3pZBRpHUI$r14QSeTcN!$U9KLQXV,jd!!I9X28f`S
+
+HKhA*cJf4crRNTS6b%&iGrYIGH$AmVkrJpKbad%&(GDDK1YPkIYNTP4UKYrmKiS'
+
+N9QRr3mFA20V#,k#EKU#EbK'((U[0`IYJ["Ip,BkP,%X[iF"0Cf&))V1CRpa#"'T
+
+DNiK[e,*@2lIjbHdRGe$IBfj9"DV1fm8,GcaFLrE#(5JD"(#*j8d,SDY011-UV0J
+
+BfHQ2U%aNj8@1,lLZ1M@)Hi9CbSZ18qGdF$a'k"&%EAPb#`iRM0$Zrle@ZNiC8Th
+
+FSNkAUZ2hK[9q3Dl,X5raDTa%6NbEfPKF[e'GXY!G)9IRBTe3&diEe%Ae1R"jRYb
+
+CprdR4e2Y6qilS8pai3bpr2IDj8Le5aDede9a[ICCPb9larCqSHrJNrX'+bUdpVD
+
+Sj)PRpG)B$08La$dXBZ&E%8*4L-4mJDiXUZ+'LKNFA[U*IkLpIT!!pNjAiR5P@!I
+
+hNcXMGcXA6Z@ERp$Y%A3ciZ'PjF)CHfGImj26Q*LYQ-fYq'kT))f3!*3@8FF@LN+
+
+'%iKX`eYE9r16DcUVBU#&+6CKCL4JDiXpe)8cf%04ij(Z*"IrDS#kIDAibIHHe3l
+
+DSES5F,N%25TA1AN-8&96YEc6qL'UbIV4[m2r[`iH8BFJ0$J[h1&939IA$rD&[@M
+
+pT$,SM'KGiRTq8KFS2r5)kXa23-CGKi#X,JB6r!0k43BUZMZHA-F-`GZ&Df)be"J
+
+&"Q4Vmm!9$Gq)&HpQTMDGQFeqmUf@D-*5MJM9ZhBZZ+p!C#fdkbqFpQJ)l33VkGC
+
+F1'h[6I`rq!#[jF%(L-AP6F8Pl'$++,cJJmUL(%b*%'S!R4&92fL9AS#10#)8JRc
+
+JZEe&UZ6@q8dk3fRI(qP0p!SXJ[l1qFMAiMR,*mlY9kfShQYZiTpN6%N5Bh),aU3
+
+RFMT`(qFFa9Fa2e#V8&%c-6d`&q0aJ,NBpq4*MjL0-+9,6B6$-K2)+T0QmU$9,$C
+
+'c!2N$p'maNAIYPad1r*YPLC&%LR&qLrRiRBD8HXXb-+V6NCe3Bh``PhZNFH6BRj
+
+bGpG'Cb[2,Rij,+c#-iVABRBk*9ELX43QE!#D$SSbL)f$Y4[hJrIb&a@`F!G-Ma(
+
+lGm0c`RJ29&U4GfGj)EkfS'l(28A%GlpP$5+`eEN#HR&YMeYJF)-!8%cRhK9Z4Ap
+
+(R+[+#m%LMa1+qEeT1NY4'Ta4LB2Bd(IA`9RRGVkRC+BTPiZFfIq!m2[p3B4TjB@
+
+F$4e[1LRB0"4bM4r#QjZT5RhqS)m0C2QBq1rD,VrdrAIE2SX+PrHrpk1$Mam0C2@
+
+[kRq2jfp#e,k2Gcbfm2JD4*cNqHq3!$c)8*q)rNUmaIF`*4j&pkA8+6['3f9RJ'p
+
+J,R4cU,0'Vc#SCH+qMk$Y-ik&`R%!@!%Ql`h2iM2Ja,4L(C4'i",i6TUHMKD0,T0
+
+CR#VhhBP&6)AmKFM[X8ADN!!"[QIcf%Yi6jQi'XE9AILDc06iQXM#R$')RBcBC,c
+
+(mpKEHHaNKPYUTB4AN!!llh4T8eVUNaZNra#`cVYYQ6hG$[D'#+IeehfbRK99U`D
+
+$'qJGf5&blKac48YY#hUSaGCSZCJrcM[B&ahch5I&660D0M,*Y0hTLq0-dQTC,UK
+
+PP5+$fhHIUl"hb&ZDb)0IC+bj#%fC$Uc&h(`h-`klQ9%38!S@20ESJlZC"0m2KM!
+
+%,h#FI6'[)LEqDFaQ(Y0EXH$fe9USCbmJeiaapDZKl"1hQ%IF*6!Yeq1Y%Qp`e5'
+
+kmQFSpZp9%[EZ*Fd'D-edbh@Z9rG#EkcQK'$M#3HKJfSSV8plkflH@kk45T&M*R4
+
+8EX%Hf9$I)Mc8aNMB$Fq3!(hC[qQZiPZp!a3$,flIK'i6RIAjp#CSBkf--,`icrF
+
+hE5a5FF6DI(Li&l!EL2a01AijYFG4IFSVS@6+U&HYVK[1YF5ki*6#KFL+IqU"2i@
+
+R*G8$B$Th%BZ,h"I-'XT&f,prUd4Q46PPF(EbpkLJ'!p88,L*[m*41+-r))cB`AI
+
+!@8@(`pTmK-G4-cZ-hajXL*l1KZ*ca5NHCkJ'N!#(MMmkaCb,hcV5SlArVF[hp2k
+
+XbaP2IRDpFI%@S%8(a*12NEp$0Bp3X6I4MIl$9LLAD$6qLq5i`(9$p*6V6+#RIJ-
+
+f%k5kXi)pG4Ie!r2'lmId'1mZS3eCj,lF0CbiYIqYQrrNSPaVFERbV,mQd'CQKFQ
+
+1-5%-95((jlC&"[V2&8Gle3MYi$#&S3'UfAJCZAXi!qF#Ieq$+6rVYlj1!+SZc*a
+
+1UMrQ`KQhS6'mNM5mB0[6`"ahl(NGVmCD+(UY,lFf,RE'mDPdKNp2VjM!b%)H"'9
+
+d4aZLihKdSDY8kL(fMU&B"0F-[Y@d1h)52h!i`2EJ(m&KmdI3Ni2+[Bbl@Tk'I(j
+
+XSB%"dHNjBEVjf&Rlm$@U@DfH$a@cE,cGbL1QmiJrFNELE@B68k6JZa%VSba%E3*
+
+bjfVYmIRBc+8B9(CVlfQlPA`R&BDH1AfjXeC9GXrA,fU&RF!f-*J`p`Pc'+ceL+J
+
+cpLN1hf9%Vd2-)9&VB`2IS9ILDe4cSFJ[GAHMUip!FcmII2G)(HeN$26E026LB@F
+
+jQ--4F)8MpXiAel1V)VBf&pd(ap@bcqGfPIPi0i"[FBG+,Ia*d-+I+Nf11eCV49p
+
+`*NKr9Il6A2MMl1(CC!abp`UF6J2hM%`Raek*bD3leVUM#SRAB#l"$I@$,H3%aS'
+
+jN5c&H"eVaABAIB3Y$A+Q3%Aem180$@T$iD%cEYjK`5VdaBH0Y)Y(cPSpH,EV@+H
+
+EqTpB5Lf&acDi-kAA2$kP2Z5kGE&X+9+mMfI6Q-9hLQb,b,Z@`DmSNAj,)pA#Bi,
+
+VMjA-'58`mCfA8%'eL&09VP%@8B@46l4kFCQN'*!!!HG2*N[3H+E$&ITK#3Z[*X#
+
+JC9Tr##8ZAX3F)KEU@-F9fl&E3XfKeF5iFENDX&'(KdIQb6&qLTR'Bp)N9#l6@Qa
+
+AQGQ9[GDTc&iVmi-B%j90d!1SI3qmF,'AZ5r#jM)bL)XS8E[TbRTF)[ph0BYIrCS
+
+CL)cpGpAcVcdM8HH1p6[kQqRrl12q-TiK#9mMqKIfer$A&ILG)I+,SXQ2X!mfi'Z
+
+ipjp+alAk5DYChT12m19iFJrD30Pq&G'%AUL)0LMqPb6D[Kbc'PlZkrf#kFNGLLH
+
+HL6Y'r[ZchK[)LRhT#AYRlcaC'jeUHUDQ,P@VPPX5&U"hA("LiJaF4d%acZ9H3Uk
+
+8kNH4$b5jJY-hDh"@K5kVMa9al,JkD*a'"ZKH"pVV#c![Hk$lbIN6GUY@[q68)bB
+
+HIDNQ80KY%K-&M+I3T45l,'bQS(L0(4Im*pQB@CILr8`jSTbR0)(Ka)NX`0d58&m
+
+,'&ifK0Plrf,$KlfQqN&Yi2@VU$AHSA4PU`Mp&-H)TcKm&Ce3il9LbVXT"PXic,A
+
+A"LVK,Acb0YTjQ1M8RLDbbrBkiSri2F@*fPaPC#-dd!EZj)T@kI"ZkB5ZT4Zr59a
+
+Yf!ZPbf5mCXSZbL`2(2Sq+l#Jl2fShR+&2YE9Vhr(S"P@q"D&9'FlpdPJUNf*"aJ
+
+,b6,K"PE(b[@mTiq&"*6V9C9XrD8IR*Q0$CDKJQ+E$iTYQ2e'K&`MdjZC6*l)6r5
+
+c,$9ATEYK4DT,jBLRDJZjFrM"+P)TieA)I!h9T"`qG`[$![VV2m&d#9'iAb!kA4A
+
+3f'1dGKb9#8r'YXDfq!Zm&ZRm*0+m[JYSp0pa$3bp9dDl"LSfM%64Z95P`Uf,L$i
+
+mdIfS4VV4-brd*$S0phPqZXp6FI@qmXk)D,H1XUG-G$miSR$e5j%'i[a5A#I&hEP
+
+"cUV3!)H6eq'-R$'S4Ki[4q34Q@[ZL5Y!4YCUbM[&c@(b4,Fk-YTe&rU!%Jf&r5'
+
+$T@k,l4Z$T3DV3"(3!-9a'3AHNSGU-GJq@'Sci2i`3XLV1P'&beH0A[f(m$6`##i
+
+C@D'q@,rF2e#mqdeA[dhrr0E4l9#kpEKhp%9'(d&RQ0fNYY1flM*IbVqqEi9K-Tm
+
+1p$RN*bmeXr2SC5eHU'j+aAE-#[kHbXqe#)dN[2#QeY,l!6qhG*(S&FL(l(ij1l0
+
+-hF!a3*Q##%ce,0lkF%,&(B%,S2PKhX((64TmG`dqjRVrDI1q2rKih`H%3q9aEH+
+
+qHk,kqrRC5KfT)m12+DI2`iEJ&&4+Fa'Dc[$A'BB,*k-8L2B%TlHDMkNd!C8AMEi
+
+H%8aqAS9G3)"VFKFB4rLfM#"b#lYphS,5-9P+"iZ*Y(m4ZqCUE)qie3rJ'[)Br+[
+
+!VA(&&bfKf,EILQel#350H`SH+d[PEA[JCAMfmJQZP&8rZ!CUb)ELpV-Sa1cR-4j
+
+rc0-mdk[2SK"$hrMcII!%LXU,PN'%0!k`ChGdC8pRDRaAj1-E1DM6KIMcj2d'1hQ
+
+(&r%ZI1HdMlk-"DliA[IC#qRHa4'*1c&S*SjMb*XYj99Z9E&p@kC!2UVfRJ)#*lk
+
+2kGi%"h*jF"F)ekRLXLCL-F$Y*E*jXq%cccL&6%NlN!$PEZ'[23%a@e%AD&"(k*i
+
+Fq,U[#Ac'CHU''F)YI),GbM12pqGGKQJ[Mkff`dNmDbZem["DP8KBU1bE"#bVNFh
+
+&XrN%iim8NJSQXMUpSj&9aeE!IE[NVj!!mPIar(F!ZjIMVVBAjUX32e@+,q)+Z9j
+
+R-PA$E3hcm1c3EC(S&"kE4,0"G!iR**5X9X#pM,L+22mJ"9G1,HY1N!#A)8CRTfR
+
+cU6rT5jGHQ3lmcjKba+qQ#Gbr'%pf`Lr)Zl&m9h2K`T-"hrl"G0pqqJml"XZPPpA
+
+L@pkfi[FPr,Ejc,l0[MZ"b-Mq*mHIh"V8$bB(XpA`V`IielUKA1'cZ1QT'p)Y(&h
+
+T8i%4P+&HZ&Y`Y-%[Uh11eDH%4bl'1"%64)`,-3CLdK$$VG8GL((2X3i1c[%`c5!
+
+mll$c`r#-i8K(T"H4hBkQ3A,[NpaLYD31$P#hlZh0-`f@`a@%Ba#E+bKFcapm$&H
+
+dNdiJ8eh9Eq1V#KJ3ld2mEK[Hm0lYl+h!#p"Jpi+p4H,J!0klrc1QGi''&9Ki8Yd
+
+8jKPm6-JZHaNSqBC204Y90T6iJPE$+'6%r)Rd)GXSD1`$CEIDfVm0Eekq(I"MBZF
+
+a$H%Z0!df8KIFD89dNJkUkSDQ4BF+S2kilm19&h$J$BiRiQpD,ALIDZhV0@M%&%6
+
+1k0k$+K9&iqc[Ii%8TacfHBjjMHS,f%2FD8eramqh@$%[qCfLE`LjC9[00B6A5'i
+
+8[+45@lX)N3edEdBYfKSMBVc`'4K9RmBQaN9E'-pGlP3K&l&*b19f'55YDcFL[+5
+
+3!!h["Y6CK(jX+hI&6l9IA+laNNe8PDRqVflB#S0q#k!iE'$Ej&ZY@-@%`irP5Uk
+
+1$UeiI$[G+MBI)Z(83qF,Bk'%MKGUU%1j&5mH5aJj-DK4jDAk"K(PKNEmlA"B%$S
+
+,PejdaUFQkijEa2i-3mNpGMfJb%PqUq)MV8-Ur,9`c@XNcS21*rG%DcG`KG[TZ+k
+
+dpMR3Q%&@4e![9+R1klK$T2-2Ad0MD9H(19r#Y8*&8IU2FF8$0hRBj"4Jmb6E&M#
+
+$Ieq%A3p9h2dZ0A+KYR!p"laAGR-QaX85aK)*Ba&KK(p+BKcl'FBrM*BaAN@(DcZ
+
+&+d2#TC!!9&#Hf%l,c'-mP2)-`M[eTd9*pGmINhbN5[CGT6r2rY)3bPf*)hRJf8c
+
+mii,!dMF2GUcB'@Ca2`9qZ#$%pMV@Lm4Zjb+kAHC!,V$9[Pb)rhIq,3!mM#aJBq'
+
+R*F1Eq$lmA&$EPAj$U+q-+`EX*C8D[$fcIT*4e(LC%BUm(V#2!D6#Ur)D60fXq-h
+
+1XAcE!%FR'hrlklJ#jFZ'Era1d6Hr#j8D6-(Ir3CAR@Yb*Xjlc,)XZAGH05*Uf`k
+
+S2Dq(#q)cF&mAq11qdJpjPT8fl*AT*#+`Y'a,D4qb96R[VDaV*F1"`DEUCIAiVPl
+
+qp[+9q)C&3$%[qVM,Zm+!lkFrAfZJlq0[eY6Lfa&6hHE"%B2$eY4%mBlDeZSQqSC
+
+G9jc*i0[86%%[2'"X9aldUR30E!AQC,+Z3EN5(-09MUfB2e[hHiXlRFcRa13T85c
+
+#befi+LP4T#(Dm$Pdf8bP5(0RDr#GD)66a'mm`)R&k@Q@#@DlcMSjfKfPXqCMTiH
+
+[%MJX'MmjfddE3qb!JeU[dURfKP!R!JN%1FEjP*ZEBbfje%PC[*2q9FMALqME`Bj
+
+XF+Q4%GXq[MZ4-AaHRkf-3eHP'ZhBe1&kG4Yc2IVbYl#[-!B2Ki`IV95S`e5KQP(
+
+B#P9Q+lrmCP4%YZ*(5J8EUi0k+Ib+,90HaFdI0KIKYDLL8j(@40V-*ET[kJ!B$TN
+
+-1+Yh99K&IF,1SETXh)+kP#Jd4cDiY@pX)HfFM9X-Nj'PP2`4"&l"&Mk*4FbJ6A+
+
+UcF4Lm2X,8&6*m-EXGX+2`akiK&'F$ci0dI&31!mXT3NlZ8rN4fB2Lpk0LhR%)"D
+
+EpEf[[Zp8PVh[aqGK"Q6aXfMJm%ejP5ABkPN+-1Bl&#l9EU96Z6Z%N!!a1V1EQ8U
+
+A'!A#0i&J1dIJBa'l)fRHk%UN8Jl-(@C30I#aD)idBcHm`)%()Rl'drJ09,mN2Vf
+
+!hFb3!,P82pQ`e+ADJcRpR!Eqa1d)k,NmTaZ1')L)J434D0GL2cF[cT[c1q3`Uh9
+
+hdT3cfY['X[MfN!"FPPR`@+'EmUf3!&aMQD1"UmJqL)fTkp!aVGVG@[DAE(Ck%NY
+
+2d0Lrjf6lrKIi#RH6Rd&i)6I8miK6EdM!Dl1-#,hI118PTX'[$rk#TQ!1P,b6a,)
+
+0YYha'I0BZQBI"L-Q96Q3!),AE(J9q2Dplp9YlChh9dbefqbd@C+JqGPYH'R'DTE
+
+$dUGJIfXNi-Z(VP`1,`KT9*YYU!ek-FiC-@8HLm@NRdCiR`h"PD'c@X2ld5HU[V8
+
+I9I3EbkEm*FX-bGdG2`A[hYZF0E9#&DP9B(T'E@YAGPCcRM2cTL%l*,IPNF&DfQI
+
+rh[9HhMY6(#BffkdZZmfbRI8@%dXh`QN6pZbhfVrAf9RkjC,[+K6BBTDkS$dGfHJ
+
+X-YUa!5k0Vf+aq-h#Eb#$if`SkTVRMNKRpPkMI5ZfD4[-k+&5Tl)e4k!FLJkjlE&
+
+[SkMQ(Gm0#5YGJFPad&p*$bSaPqQArQRKK0)2E9priaA5S+,VL!Tdb+BRKXP9Vla
+
+T)JG-[kkS8eYb"dFlBbK,3EEfb,-mme"clb'ReSBYqG"Hl5%[blI#1F!5B(eaGp)
+
+EVq4RD`rKlN'b&ZMh$9DqNVm81hG'jb,,MFDPdjHb511Vi!PHH&I,TAk"!prjF)U
+
+j9SrYZFk3!1E2N!!Y-N#VN`j`dNUl(',([JVA4!CF"+6-KICBC&GUNHmSA&IiI6Y
+
+`&lMKY5hJXkZmE$)jkAIP6ACPi6l[QH%S!e%"C26jpR1h&Xm4JPL'R[YjNqF@Nq0
+
+2SjGm%`JM5#lY@fm[+*mrVh)qFE9*[HqmecP,l)0BGA)qmCEfJZk#BbQFXF2,c&h
+
+F`q%`mJUSh@[1DB0Tm`9,DeZi%h2k6@-Yml-9PT4XjAi`l$K$@0Fk[JmT[lQKEeh
+
+VB1ml"Z[Ze0h,-%HhFl6YD@'lBkPM%ipjK,Fj*rGS4Bf)"e#"pRdVih!(MGZdK%B
+
+6lYI10"UjBpY6VK,*CHSTq+N`i"cTaYhTm#re$$*Am"e30Xp'chl-0ZM(f6BleG`
+
+[i+N+qMVT)Zhfl)`"44HpLS0kFDZjCPPphE)hPi)S`aQhq&(Q(L*m%ER$(km$XLR
+
+`"EJIhfRi2K!2(dZRBhfq(hCp$UM1EZ*IDp!0!mJVi1P0j2c[E"FkUd'UbBR5R[K
+
+kmQ"iZT0A!fkb8#8UBBILVpLqZLmKrVZ)pI0+(ZGq3q#m#pc`0rG[jC(d*ieiq@T
+
+#"cRfrkD)f,a0I02ei'Pp2Y`XB(-)ceY36[RD[KIjMG8,Sp,9Em0,)HUN[eQT*&k
+
+T*`+9QYaM2-dVp+$YUlM0#*1$fr0QML!d0FTISa4#HVB,,JarQpqjIGfd&0lPLHA
+
+CI4R5bk&p'G#NIj!![k9eYiN+E9a1$Y6LGh[$D2-@AiUkj*VKT"!C&P'AG9lJAh[
+
+(8mH%2miLTjRRCZ%9ph(RP[$AHl!p86XAmI#*AErNK3Y6pE+Al[Bc0dV1`'F[GEH
+
+dYE3(I*!!LJUCGNUYr2T#9cm6[J%bk!E!G'GqqN98TRRm4lM23iq,LbRY@9VGN!"
+
+pa`1([IFe00Hf[0A@d1BCpMm2E"h$(X(P1UV3lf2RX4C[@d0,mp,k1JrXJ1[-fTR
+
+SfHeJ9Lm*V-beQR!ZVQY[Fl8dbckMV9cVLB9GbE@SBCAI4l#CkdRNZMZ3!1XaIbj
+
+BjSrk,S[jadXBmBpA3Nj#k#b0EXVbi3mEPi!j,@*RQ%0XiHblCR32SZ+PU(JHpG5
+
+)SrJeJFk*eJPpq6RfM#(X`qk`+*TI`qlblp9qI0+CdJ8+RqjkjE32edjCKXRNf['
+
+dr[82#X2Xkb9hMb(M26lPJ$V4*ZDGp6+9AZ"XBC[`-R`YKq`UEp`YSZ4YRFJYEdf
+
+BSbmSDiEQk&I2mheV-MQQ-fIq6HH)&36K3pLFX",aB-E(e&I#1[Mb&2%1XpjU5rZ
+
+STlRZ,I,D[Y!rKD5Z-QmaBfp85jA4li-H5G8ahim&TN+capeDlDfRZ@$1$a[,JmJ
+
+9#Q,KqqBJ&Vir1650'ZVF+cc9V80SP$ZE&p52Khf*#`Xjcbr*!iIK69!`U&ZZ4cd
+
+JR[Ffd`T6Zj5rb#H)D1-1`Abi44T@cf`X)Tii9#YQ1E1!@a",dr,UPA9,[AA0dP5
+
+iKZ4lr2TGd!"*-V-*Eph'Hc*,NDSde)%I0NKJ0Vk,[[Cflr,IT3&(jAVX!Mf(eVI
+
+SbGZmmTrAF4pHZhh`31)bK$Raqmmk4BfEkYrbmfSE3AdBr04cJjm-,0!K"aEH08d
+
+L6ddUlf2HDJm0F6-jDbV1J9&ja5'9TJ8QrqDmc[eIK4D+GZBCU4,pmP8VJpD$aC3
+
+`11ra#MrE&T+M6j%%J@4p%%Q5(mP8)(PK&2GDBU'C"Dd$SZQ@8)c(lX2VHi`[(e4
+
+pX12%6PrB,2Irp&UeH9IJ[5!hV)mTplmVFe`6hD1m6UVf#Thb5DBa&JN%KF9TU%m
+
+BRXA(3PN9b2iP1YYVJD0&6)QNG1`jm*k-pc$8!RP9)R[C#lGT@bZC9JT(2Ve456c
+
++H"U9E*%kq9(DP%3VSrMAaRr&'D08$9jikkX4hB#jJFTebEk0i2j6q4Yr34Z4D(h
+
+aGpN%Ecmjqi4ESdPJ9!R0iH5bhTbC04ITSR,M[j+phUmME1,kXaFJ%Cj+#d1Z8pd
+
+lJ&"FReare0[[C4b9TqQHU0YhH0hkDh05j#hr1PHSLG"fa`[R[mT6Ym5%2ifjm'P
+
+-ckFajcq0kIidjYbR-9e$-9,r5DJI$34HVMqFP&kFmfTL`Gp1UU4mclY@j35#Vr5
+
+eJ!chAj@G,Gaf+Ap+'[l(63![VFcVp1G2'FkrpQPqZQ[3'X*p#,K0'0[Cr4@"!e[
+
+@%SViPJ%hSPjh9+-D'LSH*p`3c3YhNS0&,c`[`4Y6%"iAJFE9[4jI!lShjSGer`D
+
+I,Jr+(%IemN1HkTSkA*hJa-'*qRG)8j&1qUreJAK,RL+m[q(,l4ZJ5jUeQ*Kdk%V
+
+0+Vchi,d,lp5`k[+1l50[CVb6p#L4!h&RN!$M$&5SHLa@6&di%XEGEJGfL4dMMS4
+
+0$K9dqAZ)Gc`GSJEkYFZra5V#Eb&jPYaF*[P,kaM1+lI*GZk0%k!Ff!(dfiDi@T1
+
+RaGhLD["!,CRmmeS2M$8a'kiIb[hSr0fr)pk'&S-"f[feK,qPl*[-Gi&Jj[Mq*m6
+
+,mAdGhdRdX&RiTSUMfUfe"hCVh+LGEDADG&l"hQmN'dYpX@Q5qEMLYQ)5jHR%9Ij
+
+!$kmH-(,E"Lk-YkfrrIVlK3Vl1hR[B2,"L`eZ,-3I([FDZVmcr0hXp+VlZVLI80H
+
+lPHTLh`&RT&I6arFHXDJVPA4,PBbR5J,&*,krX@XTA-fZjCQpSTDB4r(jBB&D'Q9
+
+b,E(irmYDIQN2Gf5QA#r#Y[TXH'lANrX,"UV,I@ZdYXA2DY[*(F2EYIhSl(qZEH)
+
+TAPYrX,EqNGUQR!l@YLC3@pEdl#lKP&KIC[C2*@lN0lA+FmIL#DPmjMV6-CmIYpV
+
+I0bJiX[N0bpkXHhXTl&9IffTmJL9&B-&Fll&c[4!6KpkCGA%e0QKaNSFESEHr5,H
+
+1G$m&hCcACHiZ-hJChH4&I&$U5,C0`eHkBl,l%5&kX+h&lfIHG%l$ZmjJ9'bQekG
+
+AFrG",fKh6J5VZl1BP0F@h)Sqb-CJXb89HA`CQGLYVekqV0U$I6cm@HYY3SK[#i&
+
+'-qEdi#Ch-@eb!aANASSm*-YUd*)AFHPaH+ce'XfGk'Ei[6G@1HN1AQemi@Te`-D
+
+mhm8Vr@Y2XEh1h5Cj8Gq3!)Afl&@feq'p1!4qm3TLYUIPjZ1[)(Gq@88481k'Fd[
+
+$Gj!!EclJFrZI9LqVI0XV+KmH*+ri%Ej(kda"VQki'FIE4khj0%Ibi+m+MSjp9h"
+
+l8FBR5dZq'4(`LNA%%YXQ*Y'Q&m6N`E`")e+j0Rf)(IV6f-Di-DHUpjfK#Ma58GI
+
+fQVHS3Gi'LXFLMdZjlk'AciY9K5dLQ*f%k[49Jrk5T4T&0#NkVaR+,28X&eH*qK8
+
+6H'bDAVLLKZi*Zd*UK'Z-D!fD+V"TXe&L2e2Z&KXHG41+M"ejNmQlZXTT4[-1CD$
+
+fNdMPlRfJFLK5XGe(ASI*F3d9h5DEAPijPhrG8#NU9k$Epb&q$j+rC`FEa0@,`ST
+
+Fk%Y8iN6HC0kKqB1iN!$HG!d)pd-6k5daRmdYDe-j2"[VLY)MGDFC,P5AIFe)$TS
+
+lc8!*KbDZcZiRT"6j1R,J*33eTkra2Xe2bde@UGCf2h&-6X[Y%p'@[K#GqHFXb-4
+
+'l-qql5`Thr4[cbe6``rE!0G$XqlG,q@'3A0(I*D$lcr%ikLqd01pdhYABZ(B#hH
+
+QfkhTK,4SUc9IBA0hEb[IP&MbElpGFpM[H2kI[PhB@[e@TEb,KIFA+*PcclJFIQh
+
+&43#ZF["GTX)*fXBRTU9TZZlPk*38l"[J+AiMel+52B'(l`Q`[d-GfVZr"-frpX[
+
+BG1#h)`YpqJ4Y#!jGXYVrF2dT3r(Z*%0a3PQL)ifmid+[bU2TIR+P!&j'X9FB"lA
+
+-5(pI)9M&LAb'IFJN3aQj3[bpEpHTGC2B'0Fp12aUVL#P*+LG,m50-$`Hd1h`VX9
+
+EC!4[NCH6I0qGlUmN,#"G@LK2@bKQ(F3p4PNdT%!h2JP''Eife#@ABMf-ZY,83hf
+
+SV,@3!#jLaH8(jSMGbH(`M(Y`jS[qfPJ@k1NLP@T$pa0XT'l%2GlGT6hTj+'QUlX
+
+0Nh&"([-ki0F8R$5BNdmHXlM2Q#"PYY4j`ZemYZG6jm&M+lcH&13k3b-a4hMp!qG
+
+1NjVK*KfB&XPc`ja(Mj54AAA9cR"caHQFlmdMCSaEIVH,21'lb#fkZT@"earH%H(
+
+D#(R'%P[Ep"m-NqR1"jX)!hdHh5X*PX2SF,r['Vj5I$Hm2d#[(88AYN*(l+L+Q&m
+
+Ee0k!#CUe8M0N,,Dh+c"(J!&cC&-Ph6"dhJaLDHGB1T(p1YmMrL8q%F!YAF#qL9H
+
+rRAihAH#j@qa0B`i,PS2*AiVAN!$r96Dmj1!1VJ'fQM1HAaBR*A+EPL$aPC`bE!3
+
+mleD#j6$MdAe1QFH8Q9MdIraZ6YK1U#E6'6'mh#Y'p3lh)LD1UU)BlRkAhYT`c9h
+
+@3[UlBp2am[dqh44-+@K&+(5Be1VZ"F+eQqTiT`*(3M5B`$EmcJY8BHcNA(TTZeS
+
+Xek28a!cLVGj*ACaCFZ'$RXpl@C2@80*hZXIVC%hT(5bVq%qrl959&eGqb9$biEG
+
+lbM`2"D*#MNC["a+)!faD4[T1iS$0dX8b,aXkVaPIM8G2'KTmTH#k9mHi'R$"RM6
+
+mDX9@02!pJ25UVT1(kT4G4T0QE5@`rj!!4G01TI1'S8c1ZZ-[F4FTElK'maKIcB"
+
+QK9Pa-`HZ,*+B@ZUq[I*peF2SkEXDkYk5GKT+DBZmCc(a%[#d6,J3a*B1,rILed@
+
+['X2hmAi6-FD0bm@peHVA[,9`hD`'K,f2511UFRSLQ098'k5+$lDJQRI#djbKH6-
+
+4HpP8Gh5M"RYCEb1f&pM-*M[$9m0M'K5Z2EPKK891C5jGYRLjITChRp-bZDm)-`!
+
+pH+&0+!J(k+TjlmD+CDdY(NqC1,cRGTTcKRYLe*@lh%9H,9L$cf4&PAm9D16+3MB
+
+iGEMq,!,hN!$,1rB20KbHlQpJec)4-@#282KeX(#khEb45Cf`hjQ-,Ip[BJ-VIP`
+
+,X)RG9)mld9CX$2ab$#EVcRhePI$'MbSXm[1,#5d&Z$LE3dGRFJZJe9lX(X3,0XT
+
+''6CLZ00)k1XQpLMhEicF00dm'4kmi+32c+mf,Dcl6IieMfr5[N,GZXNN9e)ij8R
+
+1+GZ(CL6[Tbi8GQrR(1NS@%JGLm+9(c94r1LZIbibNA&J"U9d)3SDb+F41D-E'lb
+
+H2#MVR"&c`+cUkTII,QjYH5Xi#5*h2TNYp&k0hk4rVY@BTB3$Q*rireIVI"Gq+iD
+
+ReMppZ`,hF9DYp2BR&CZ0hXf-Z3R5h`H"Bi+Xpe,qpHl,R-Nh#LBQQqeI%aY"d5,
+
+-%&@a+iPkh5-Q9hH2b&RrJ#j*i5lkDMD(2aZ8C$DqMGqh51m8'`eekALE"d[&1eT
+
+D[',NkFPV@0"aB12H1,dMc+05Kl&1I4JdmPI'-PdB-m1&G!*E#KI5#F`)&p)*,!H
+
++U!NX(bkNhBK1`pFpd*K`)jS1!NZKF1U'5fL2$6f,Dq)hN!#VS*RVVXVl+hJI"DH
+
+Q+RS,AXF(Sjr'qh4rp&Um"S24+r(Hf+cQd3eiqieQdXYRE(9XQ(dG9"Pr4iUHLVI
+
+re4p02I,IPb*,mEEG(jQ(em05C!"[VIj)qZAVPL+T`SmBZCl@h1'aeeYDDff`$[m
+
+Yd8ZmeL6c[LpCE2#`bFUPDcajUFVMA"p[S3GV+1UX5q4#l'E5@&'106'cF-8)KId
+
+-LMjE2l)IVBH@2(VJ0ET*j"6Kl*&lPUmR,NdEcCf%P2))h2pQ,qh3N!#2ZR&KqfE
+
+cfk+NPJFmKhGI$[mH+19bl2[pK+@'mJ,D@KhhkSfAAm8f@5*GJFL28Z4)e1m9F6h
+
+pN4GlPE(3C1Mb)bf9N9kUbbM-iVfSf*H)'ArNjEHRR)P(b3fFDqHq)p+d2'bEPSr
+
++bpkK(Pc+8+l&6USG'JFHk+)[Je,EHPQT6IJ5[F#Hh*GLQB`-EQ5i#aRQbKQ8Gh6
+
+AAZl8c9$Q5*XLA,4'(Zq,iqLJ&$NZ9k&!4ceNQI`Q8dC")6QPN5R$bkeiT9FmH1#
+
+&LKb8'*%(qj40Ap3YKBY#(pd[I!3Ik0"21dShm`lD[K$A'+KB8Y-0RN@9Vkp0[iG
+
+A+'0,,G*&,4`(*FGIhAaA-f,I914i8Z5)Hb6PD1Ea%Y-G6Tl!(HhmCKB4@hmEXi,
+
+BS&$LU*(b[LVPVC+43kNXRqFGhq%lMeYq85-@Aq$q-0VeE`)MSrk,`iK*#MeANmI
+
+ikPGB@'jc(+)bDL0iV!pI!c$A%l"IiGHKCH4mbV([M$0FB0(p#cpDCk"jCm#r*ef
+
+Xa#@,QKJRJTZRShccG0al(eZXipKL(H8[ar"#6kC(pj(l$#J&e*SN6)FNG[2,mQc
+
+6Nki@QkG--1HJP1FY+3qmT'mDJ(lT#f15-8R,45@FZhNPj+U%QkUc19bpX%2F(pG
+
+`*L8hTr+pb8LhMIVY*Um#HJ6LKr'4PkXEQZH[*"BHm0f"4PYJX'h32&MqC)r[kT0
+
+@hpA"GrR[NlkV2MeY[i9VFir`,6"5l[Ej0Xq#bH0B"BHG5c&YjN+0H`(8Z+I3A3#
+
+mS`GiPDZaIq0@F,PT+Gr%KIGp'G2cfqM9FQPUIjdfrGbDEbULL`Cm[b4UZh%jHJ*
+
+U36+aR$5aj0eVQ`BZ#56SqjeL4`Vp&(J**TIJKGN[@c&$"p3`GK@k*Thq'DTkkm"
+
+`6aRXQ"6hCdrM0Sc-N!#&@QP+B1qJqPARI4XeN4XB-Z3JGL!r9Z'bV`6cY)DqqkH
+
+YecpY+c"V*m$C6Ci6c[[9VF6CGGeFfD(cbNmZ*(![M$RhiA'Z[4&kL%N1R&VG6,B
+
+UmjZUQfXaN9+Ka$I4eqUlk9[Yfi#[cEj$h2-c@,[L@q!ldrN8+49lCEee!AF(Xm#
+
+Qi0)Qb-ZRqr(Z9jh+lM+a0eDiep!F@BcIfeDd,[II'FXG`f&Xc$%P1*I`TM`BbTh
+
+)Jbh)*CR)QPJ"YE1qi6,Y%@-lA9c2P@#A*JjQdAqHlPhm&L5aHjIh)5C!*qh[kap
+
+,,bGjc"QmR1!aI+%2fZ2GAr-qmQF,ql-a4Q9M6$3ElL'HSUUJ)R[PHEQULHph@,8
+
+A4VHQSD243fja,DF9qha3)fD9UacCQJINY-#e8,"JTGe,R6Gd(,AcUBNqb)N-lPD
+
+S$3mLRiUF,XScHZ+LHGmIBb0PAqc2+X'E6d#&@#Z905pGkQUYDm%TUYlbbCfL8Kc
+
+f2#,GLq4Y0"YaUmiEY!lqjZ9[h)#MSXRFhI)M5jFZNm8VSLLJ*q3ja&&-jSSA3-"
+
+U&AC+VqfNf&4%0mp%mL)KD5)NFpTN2336#EVCiq*)A(RSrl2hFG@QHbTjpFmZpLk
+
+)HcBJQZfTDj%Q4!a4#L'k(K[[a0d5&R%&E'EN(DEYE9[Ra99(`P@HYj&Fdm1rQqF
+
+%eI*8#p`m$[X!,l`@!*EVEk,A4DN2A6DE0#aQeMbY!E'Xj9Mb0Ep2phjGiIM'ED0
+
+m*p!hplUB9NP[QX#)-KU0i%1$i"2fR)L'0[djN5qS`BXJd1KVJXMRFm2bUTEFHa*
+
+hQXR+Ui"1paqLrE+SZ'4"0fkZ+afAFX9dNiCT-YH-L)h`6c1`(1imjd,G,B9bL#Y
+
+*E'&mKk'c1,GU#kPQHqN+$GMpGc"IV-TENJLflJKkclh$C+@qrIh[ZPAJEpLJERT
+
+"-)#(U@CcD66DHRGZq2$I"-dZ&6fh3IL[YrS)USeZ1rA4G9!`GFI)%ci!MY'96LT
+
+Uq#lQIRpjmEZCVNQkY1J`Ck"Ir&Q%EMA3c9P@hj+1+ebcBqaj%Aq6Bh`!,bpKVUC
+
+,1-i0iEMZ(Z(iMSbMRQjIP(*+j(+DlVI116#RcQXDpC*D"6HaZ,b"(hh'j8YaSXe
+
+a[YmI0e@+%jf1mpIPZ,-hh'ClqbJHfj8&r)G3hI5!ISG%K!B[mi[5$F6b9)HK+cR
+
+bFDKBc@p3F,Y+$q,1hFY`HHrDRF9h9GkQ4k3FB*cr@KaBfqlZjZl"I4(lcS(arGS
+
+qA$S6Rq!HZfq'Z-rTLJ+,UGdhNaJRhKJlIPq'r$UKI'(j[TGjALH2REC["M&(bBM
+
+l*N6F[5q$amIaejVRmAAl-[E0#QJPE5cMbMZ4I[)!+cZc-#l&8%[bJc!m@l$UBH)
+
+&AFTba(3TqlS-eJi@TaFaj*&GDKGAK6JlZ$[Ha[0k5,F!h9bV8KDcAdFI$(!T1`b
+
+Npr(P2($eVRe(E0Q+a8phFAlE02kf$@pdqlm2'qYfl""f%cqZr'fmE1mZ3eb)Ec)
+
+B54f[k)i1Hk#R)@$i*,b"BXGQE-AYPYkC$9RUZqfN1`9cBlBB'iRMlXBhkm%(lQU
+
+X!4mSjkK1Z1*q["mj,Ze(5N3RmJ)01j(MdQlNq,kMf$GNL!R"2B6h4Z8@D4q#5lG
+
+0*r'+VB!i-"EHZTT@ZR1@,aHV(X@jHE'MVK,)BJFDi&&80+0UcG*0G,Die`2'2H*
+
+f'Ih$lh98UI*TZ*UrhE58&'Aq)XZQm634*'B0reS0cDKI)2@CXcIj$5"MRX"e',r
+
+A3hH!hdpfNkEhdHi[S@q1dMD0P48'Hc`$EX[`I3*E@qL(R(d)4L#pMfrACec-C&K
+
+U8[#V5`Z9J92iT3*&eciSlq1Lm$@k3J$lEqH[*r'DLYF1ZYD!q`lXE&'eVr$HC0D
+
+6iSVXl#-qKmj!FBlX[J)Gb2H6JQZ,fk(R+lI-)f@GEX-pq%&KG$IriRAMb@i[[h'
+
+XamAA!iPPda"KD2$9cR5*[iXAdEL@l%Hp+I[q(0Z!pG5EAC%ZF-'"1B5b+h)fMc!
+
+mFNfjNFBP1LY`mRh+IEb-,KcEHGc621i8Mc["irSV$&I0aiR9U8X4ZM43pe+23J3
+
+)1M"D"BMAeLZB#69ARP5KacZ)*[0C1$!U$#XR4l$P3jj8X58TP5Dml,%iZHAl+1j
+
+peqq1jj2Mc,lrb,q2lS[N[AU8hfN[SEaG@RF-CV``0Zj8[X`e%lT`jm[V!NZR9T4
+
+1Z$ha'3h@a(S@*bUdBLafHGShklqj#i99bC(S'(B2hFVpmXX9ckTP,Xq+j54P+PG
+
+*'S1*3$c`AN0!GYHPGbrLprFEh1Aqc+,V@TX&lMf)Fk,(pmAmE(1JYcp9m2hk`ZK
+
+dE,Yp3B3[qa%P"kZ!$SMQ11Ch35hD,lcqAF%9!ESZNbXU1S1$"qG"R"p$GmM652k
+
+S`E[TN!$D63kTMI[J-R"lBPb'RpdNcK%cqGFJUEi'Hirml*kpMFNU%rHQMq"L1Y+
+
+IL!k9QQ+rP@IKHk-LqMVe)DC09q,[RDQ0iM2S9"H2VE*DV(6Gh*A)F59"mpC`FKm
+
+2mEFUYr$CPXHrFM9IJH0bU*6,*-KfDk4m*q@*,rhf"UiXj9YdTjrKE$'cLc)1QJD
+
+98AM!qMi,lB![#GcNTk5KXVJ9H"Vh*pKfA8Jh4"k#Pi!D&AH3!-r-b@!rmNhe!I,
+
+@F[Mkj3d*CSX6c!1iZmpeq+!T`#`h50PZH*U0#J'pfG5f)D'620V#fEKS!MiL6G9
+
+l)4JU[[64YGKFTC!!mRr3N9MLL2hFrq3ED&4@E2ThjfVK%(MYPh#GN!!ShrKZA1-
+
+SENVarRT[l)Y@RimUY2%hT#f#j5jLiaTFE$mLcBFYBXU*GQ05DGp[0,eGd9BVlR`
+
+j4D9$6hE4[Jp++k+X-K"h$bGNRM1fQq@+Yb,Nq2khrVJ[2iNj`A0F[2XkU+)25BX
+
+lhN!LmLQ6PD0U,hl)R*GkmqLYieV&DYp9R+5m8YbLR`fIDU1+'0qPJ`8Fj"H0qRj
+
+GHN%Zk$#jbZ!e[FGV1"4EMSkBMBliI5M#`+m5(#&3!dLZq%-+fV0-JYakQTJ6hh)
+
+QYLY+i-IP@r"Pj(E&kUBc-i0cAmpd$2J8YdlD4b56Ui$X#RMk2I!mApkRqHJai#@
+
+4$pF('8[TfJ!A1mB1A"YXPDm0j1U)e`,B2X9Yih1U`pe''T&R(cJp['1%*BEAJFr
+
+2`"BXflQ3!,0$aGED$h%f@@2M'GZG1D,(JZNm4`I2d5%Zp,'rT'qBBb*'mTjUdA*
+
+0Ye-mPqTqBr#%Rq8XA0(QAB'f6r)YmYAk$Z0'B)f[hEGIF+RVZ#IV[$!qadra1Gl
+
+aaapmmeZHF,SX2RY[&iqS1#eQ33Q[ce[R`%1#hqR,i68iA0RZZ`bYrTIRHib@d+j
+
+#rcb"MbM(cVbeqD6Q[bFlP2X25l,-rr"dHL(`ZE,9PqFEe%ESSh,V[1R'M02D3rQ
+
+UI$!!aqi6kkUfY'"bZ`E*XF$6kk$+I2Irc#YKqNTjT!9lbrY)Xm(@"H%H'-kb`CQ
+
+Gf0UTcUVSlHYX99`JAT4hZ%e6iiTi0S@#KAJ0F(DGjirk-mVHPG*960A8Ea2T6GA
+
+91%PllUi8fM`C$kLbKHUZiLpc$+EUb%-eRZTQV)e%EabE3FGUNh8fp[1'iDH95H2
+
+4m"1'EEDq6%)PMMMcRY8'h"(kY1DY[e)bhh5p(1UdDR2IPC,ALEY6p)'a%(kX*8,
+
+Y&PFe0#q[Dj99p+L22`KSS5AV6FDHPPUeJ9$5YYf3!!#9JedlecQ9qJpHrBmqq"8
+
+`q(lTfpjU,#A9TKMSF!')QN(r@991eqGYJI8K#+j%Zc-0R8PPpU8M,''&laVB3H&
+
+iFAp`a(ULb)0YJZSlFiT%+[2@8kG&0SJTP&0'(FFHPXjG$XRZL4,f3aDia&C1Ual
+
+"DRffG+CLXKTS!@H"6DYFEdP4m,l"khVK+bGPK*MP,p)XCCFfqUkdDCbjSA5[Ree
+
+fk64mrNf%dcP2aCGdijR"r3"m@2KTV@$15@p'mCZ$GPIiFGjlG@UDT9dT1i[F5p#
+
+lH5b2A(U9IpdbRr3q%,NCfl0@'EQ*KQU9NMrASrkAr0Y%)kpjach-i&(p5hcK*C1
+
+rC*)IQiK$ULp[i19UAbPKRDAl06rAh%MKQKYGqdcd&E['Cipm&6(3SkD2H"r[e10
+
+mLd59%&(Z-[-%`+%PLlJRA`8P3e1&%jL%bI'D(0YT9hFE[34SBUC$I@iklTEVL,P
+
+J[c@Ccj(9jNe3EIdD1U1aqiB$pqR`5mp+e9'Pj%BIf$Iq$Uq@UZhhSG2$qcI`G0b
+
+li8kIHmDZ''RbS20KCi59S$DI*lk2BX9,RLH09,3cF%2(0hMC8YTH$dXkM$UR[Q-
+
+kHp0YjGXXq&HcYeL"-VSXaDE1DrJ1ACD+S`2441L,eRHRR*T,k-"#k83(p2iGGUV
+
+4QJl0k+$@-4&1"cI4AZLII3ZA'8T4'TV45Pf&h2U#e@6e6jP8HIm#$fqMa&B*GhP
+
+dlh[FUp`pSpcUB1j`rZU5AMZNh9V[j"e9JGQ*f@[c#V9V+`528"l5-(([))@ma'5
+
+md$'3!2p6cJV1DdkZE-c(XK4@mkqJD3(pJc)iMbK,VH4pl")6Tp`Y*XS%H1+`EXT
+
+rM0qh-"F6LFp`-XT-I*jQB[PAddD6rU+jHqik+,J1Eq-ji44I9QcCR2X2Bi0Ced#
+
+#8D)Bj11echFPi%CQ1ZfKcTl%bbcqmMVIZ6lM6Glhjr6HCBBQe5p!aa(1PH#`E!U
+
+8%1,KP5'0R!radT!!lNMf(P2%'UbTCEl(VLX8-j&fUa,pZh00C5D1PAcYl"jiZ1$
+
+hF`aZmL+$BM*pPepfk%A32E@Y$5#am$fJp0AK!`AD'J16fdHTS(Thc'42IBPhMG`
+
+kiK*PBpN@6-jdU%LB&im[B3I4,HmJ`$$TQ13Cl2U1i4Xk[3-bmIdi[K[`hB`Ga5p
+
+Jmj!!LJh%FR4UKQ8m[dkZ"iCRC3ceLPlZc34l-rMY1&k+[4N9mdk+pjj%l#R(ddl
+
+3Z)e0k`MX3`Dc8,UTNje*NMY59i&qJ@1(#"5UADXUYe!XVLe1Z,8L*Kk+Rj`@AHE
+
+Gm!NC'IMATYh*NRGSU(lLV[ABqrq#22fSAI3MY9`l!NSA4U,[V'mMIYIahdCmeIK
+
+bIFGmH[cb2meRm*Pm&Uj@S+BCrEIfAMLH[FP9#hMI#'8CG8%H@*UQaj@Mar!D2(k
+
+Zkhk98$F"GHbkdGbZ+Ja3fIF`$cDVe1J3K@IXXI2b*N[4HNGI'2CQlZIS)S`DM,P
+
+1ba[@aT4+kjZQr$$Da4UCk+X-q$Y*8PT(-AJhB8`M1NVm`cYaVfAZEKj',DKmB(*
+
+Z+"X$T@J(bFD2#K-Ejk#LZE++#52+ThARi2CDP)TrrlY#I`Sp$DCeE2AL,G)QS,T
+
+P88X,l$FSTk)IK*&UXQ#6QAMB3&rGNK+(8RiqX'mklPek`$9Hj1`V"FkjTRISch2
+
+1HhbXd"*$jreaiP+C)d)GTmaq1NdY&06bek@0*i@da"ZFhh9bIXF,VXjZVeI4L5R
+
+Em--,d+2l0Q%rNI%q9b[HJEHRHA42f`m[@ZdR[dM4ac01)[S![RJ$!Ar#STN)PiM
+
+iAZd0*ced9'AVL"EIVMa*LbpkSk)8qFCLVmLlC22+qSK&eK[-GUaLG*X9Y)$V$h4
+
+&PFph*L#RA-K5ZpNC!FGDYm0*biR*iiGLUVjN8&HXJa[rekRL[X11BY)RPUX8k-9
+
+cXhL@VVAk,b2(+HJbmZLPa9XNIPXKqYT5Pdc&,jaFU@kj%ba+G3CIe&9(&pH#lZ[
+
+kSqX@Bk*NL-[@kKEjXVAA-haX3i+lCH`UcpM"&,`D1$V"C-Ie*#)1SaVHlXq$ThX
+
+RKdRG[PpQIq!QJ82B3G4ia%E'iU[Q(YmVCAc,kH#je'iMR6D2AFRBXZP[RH90C`+
+
+bC2)XH5h42$T2bS*[-iZPUeEG8P(RU9XQllBdCSphFLrYP1[T8K2-+3qFCh)0I1S
+
+ChJ"[LM[U,!9IF6[Yq*VSY%Rh$ajjBeb[FPUHaYb!Q!c[#dkaHiB2h,iE,HAqKda
+
+LIZf#1Pc,2ZhVpGhc(F$[hre[m2Ap22D3!25phlFAAdrbPrq4Aef4*0#GQ'aB6S1
+
+4R-NZieb0[3df(`#ccr6hY+%dqIFBF!*Mr$V60$0PT04eXLhT-[+l[Ncp36C+c$e
+
+XpVZ3!#[!0'44KKdTYrXCm$,8#Nm9Cq51M0ed[-Nchd5A*B-SLPZkVQ5a6q20RV8
+
+,J5+,Z3d",aNN--J9i5"5,EL6ed)U`MU8(XHQc*&C8BbhI,`jbi[b52e#im1,l!1
+
+*d4&1HfjXlf3q`C-@YK`Mq0["2P&RE%RITLfTl"!b8@'AV%TKpF!VY)dpBj(l`,J
+
+[ekdf"HMC34jS+`BULQPcf*8-A[Dkf2C"jr29I$9Y2cq-JEmPkCljUk50Y14Um&h
+
+JU!UYKcHiK"2peje9IRc*G+FeMNf'3aTJ@!b@+AFGXHkdYNJCa)T902K`"'jZUaG
+
+[N@T@aMXSQpFRVd8MG8H5U&HG@[40BCLS#Cd6G'JN28R83ph$G(SjXa8HmP"Y#`h
+
+'dX(h"YrchD,rX(9`Tr5L)mcrF163@lKpF1eJeq"1S9E(k33eY5bh6HBIGGRq+C8
+
+@i"RcG8%fBAB*,JbJU35P!H`I`TA%M*Fm49AN4b@U(QVl$Z@)haCE-ZAf!T@&`GY
+
+08,,X,+U58*JeX$UbBCJRADl*6aL1f[BVT-*URH4(3bkeh)l1PUMiIZd4C!TlfGH
+
+-m"6b)ZpA*hR9d*Tp2I#,FZ&V4DPfr[)lAb[k*UjTDRLGF4qp&SCHF[RF[YjPP*8
+
++U9!4iLp3m15'&[GX@Qp5p1*j0feI#F,2lJ(D)&$(-XG1pm"+`e*fTbhZ'&l*&SU
+
+ETY,XJSBL1k&PGl`c6YTND!9%E(l0Uj[V-AFRmY[4&[PfPAS@YUkNZ@2)+XY2CJj
+
+FPHDbXZk0f%MPXK*S3$EP*E-B3b9AfHVN+PYGZG#aH)TF*Hrk&hb$8*mJk8"db$H
+
+'[UhqRR$$i3lfNDE5*$CiRG`6CIXU1,XclbJhIJAZ8R(A`bpNVkU`NNEmaLq+(HH
+
+EZ1qXQJr(Ie,r,LL+11'TM*N5FlKr(+rV+1klY+jNEmI*e62Ui-FfcI#e8aDP-+Q
+
+[0DI#,D5$&EU-`eQa&c"[3LjFN[8I6Glr%1pCjF2JSa4XZZ!D*rlG&mqrH2(&Dbr
+
+HHI(KLirMSZ-fa1f*1aThIl*QF[2NB`CQf'3iBlJp*AC+`T6#+596[&-kTfbBdM9
+
+PPl(%Z0Yic0KR['mFL%q-ciX[LLq*Aa4r,[jDJLiKqSA"+&f8-DSbUMkU1HUpU)0
+
+4ak014pf1kTr!*X4-5*Q3!$eKiB51#4XQG%hB0D&[`U9S&KdCEBbf4"G',iPf4EG
+
+'ViRH',dMqZV%L)NR*pk+f45c*qC)c,P*fC0+*p9-@M@TCp+T54FQACR8(kZ2MBj
+
+0LFf,,5Sq0Vj`I0PilrJ,ikqmN!$c3Z%,(5pd[A"TA2ZiYH-fMYXelXLiiq214*!
+
+%4b4(C,0NGS!GC9IB6IBBGMQ5&&Q+2%@4SN44TPLS@+a`+6b+GX8Da3E&ZiVh&-F
+
+8*a5R&(f+biTVLN'P@UPA4LN6P"DP6@PA,PDkP+h+9FTYbPh+2FVpbN2+BmS6bR2
+
++LmTV)H%K#5'@N!#F%%r)VT!![5&R3Lk%2!`C9"P8kDSU9E1U6E9,G9"e@R9HG4(
+
+,C9pS9+JK0$Nd*l3`Y$4d8DJVY$edDqL1d2G#piFH#Md5fK0k)[48k-h31k%23aq
+
+V9@UY1P*Y8@HTVHSLGCPkSGUThU6HVRj2I9*p9ReCI9Yp2d`A&KQ@'*B6eKjf)qb
+
+f4U0*dD4VbMAYQUfD2CSMQUZDQk0kY3qe!k09Sa0(&ijfMGidqZ,S"k-(G#UG6YH
+
+Kfk"l6pHVZc@'MG'-dBq*'j-m*R1-GBaM62QB4@0UaRM'Y)jC-fERQ2I'("TcBFb
+
+9-IhKf[$)m0M`K("cH(CiARKTZ#[F'likr&$iXI",iEI$(i6hMf9MY@-MamD-64j
+
+V'eXbYQVXfV(EalilpX$B)f0[M,dcYPr2p*Ier9-h6pdjY@rUYF6S4(2LrX3MLIF
+
+6qkHaDA(6602566D6`l6)9'2DBpT[ZQ5kCVTRHT5N6JT2LNY+6XT1FL6Y56U3!(3
+
+Xk865kD3V5AH6(LIVNK15Xj1Yb8A**FQ,NTh*pFRHj2ETCG-pdip22c@pErUPkGH
+
+Q2jSqN!#L5SP1L8XaTD5Rj+6B8KDRe+Ci8YT59UHX6GQ8XLePCmVZP$XTpe0CUMS
+
+e-M8Z05'e20@CkNPY69f6ZL&eFqV1e0fTHe2[TMifajL0jQ4cPMR2A'3Z0bmfejX
+
+hQbqB"p+JR!%hpVPTk@NjD8[5YUIeT9e+ZjTf,qe4fU"&B`Qh4&VL,,J0+-bdf#f
+
+PPX@@@NZcTFfbfV,"XYPbdR,@FXYbhp)r)h*'lic,-fl1H*`HP@j-cdhIP(iNr@C
+
+'E%C#4NU',F1H8CUa-'0*KL[$Np'@dCQa,Q0caYD-[Sa,'6FbEQIFchL8UFTXcGb
+
+6H6$cC'CIjZA-kjPhCl+CN60cCpTReXcdc'bEZ@2QrUc)V0bXXUb9@9eC"l11Cjh
+
++ZT!!GAP@q+bS@A'c%QHCCpPRPFpD2-XeUhP@fkc9XhE01MMV`UaEXql1HTbGRQh
+
+0EXrZc1l+2T!!I6hlG[Epl)(C-E0cClI0lTLpBIE"f8GRRjYpFIDMf3-jbKaG6RE
+
+1iTc@R)kFG6QEF[ER(-hTc6QGdcFRDNlXR)6FR0bGZ3Gc(ma9cpA2MCUlFZk&Z9I
+
+QATplEqjJRMB[-LmZEh&H69jphUUmcVaeHC[cYZIYcYZEGc6[H0l*[%Yjeq'k,#8
+
+r+cm[hjl[c'r1ll-UV9TVJMA&QQQei9LbbVV)@Qre@YZYRGEGeU[@@pEleXIc022
+
+dmkl-Zc@[hkDb4GRLE!NfXffaVFC@EfZfYGVDE4ffMEEYYYff[EC$YU1fblBEYVZ
+
+f"lE"!R9"C)'a`&53!&9J+kJUU#RS+&KEX+PJ6m(aJT-&j`ZZ&0`TH&$3AmJ+0BA
+
+k`ZM#YBA[&Zi[2&TiTI$"I12mp2Pj@"9Ac9md[fEqb[QGmcI0hcRrj2cc43P&+8@
+
+j4BZ+DS[@&"d[1PGdU6Lf1+9i#@b![3Tbj`fi#RGX"Dq[r&G`)HHX!LYr$Ep(DA-
+
+*$SSP)c3[i%fRiR@kNFR-m9dSrEI4M+j*i"kRVV4Vhm1U,IE[34+NJ'@Ap@ZA[,%
+
+P,EIJPF,jd,rEB*J-pjEMGcGS'!Z$6k$Uh8P`[[Xi#h0(m5a9mdZN,&R`T"0L8'K
+
+cj-!TA['[r8ED5bbVj,Z6k8+k4*(U9Zk$JpRkXIZqK@X1e-*A9[Ua+pU20-!aY!)
+
+T,SU-XqEI,PdK9q,1b[)+D&N`2XPJ0HKlHhcDiXFqE5*Zh-dFdqHA[d)jXPkRe`R
+
+c+ZIaM,m-$GKPSc3*jFl`p-XZEAU-8fQEL%ZURRrr,GHpIEqclhGi0Y43XYfcHbS
+
+dYUBiia,'T%IEhhp6BjqA(PhicQZGQRIJam+9N!!cZ2e2d$Hre1QjYZph5PH)E'e
+
+@C`6PXh)dr-PK2F0pedR+%5KVCHQJX24[qm&[&2a0Y#&cR$2#Q-48@cHN[jmqN!#
+
+IQhibI@$IIFS("llHhTj"Xm(k,+H[S44D0EA4QFL,5Pj[pqSCjChmXI'lb0aZb)&
+
+hQ2%ZCE@kP&BaKL9hphriR5+M4VL"fJBRQ[!0P!FY52&"0BGH-k%&+AkLj$A0UF,
+
+A)2JPfQRFJ-VqZp)9$q&fF2)U#!CZCb'Pr`0ZI*B!e5q0S+U(U5#i$#N*LCRhq-P
+
++!rSaX$3p1M2k80AVhi)IMh,hB1Pp`i!8XciBdbh&P$GVZqBeUIZXmqlMdY02XFU
+
+CHF%mq!dX`(8*I"*9I#qA*E"%KGefkJp0,&PKRhrQMbi@fQdf@qrlI@Y`IeTQ*)p
+
+%Pl)1aDE4f)AieEq-Afj3r(d'A1hq,0iA3&$Cf4MVH+G49pKCq!iL!rKD8NMZce*
+
+ja",%HRQN'e&,c&`4Ce[R-V@42!%Z1E5q4YIj2P6@$C[9ELeGFAKp6BbC[c'USML
+
+2fBXh[fm*XaHR`mX51k*Y`ihI3*DZc[GlekH(R1`eKpL,crIDLbqXVp0XA91M)Xc
+
+`KRA8Qr#e1+0pqNZXhT+llrlAH!p[ZQpiDAFaCXM[chXmS$5HiG0N"q)qP1)r$-C
+
+2$XCh5['GJIMc4q9iH'bD,e!'S1DmSCMMZ*G&mTG1[!4f&b-[HJ9(BFIaf`8T4q`
+
+CNbjME!@JLFZEQhCPPr6pV26pX[5pAhc(#3fqpT!!C1Rl$ZQl6RblYSV[!3r`RE$
+
+[rZK$i[ZkDq,EAbkqN`N[[hN"afpibZIh$I"P,pm250q[LfmM4h`lD$2-lpALffQ
+
+5[MAH1&*qi,H1LkZA[RH,EjG8MhJ*Ccc9MGmET'q00b&5qPiJI@Zm#H3C!YqH"1R
+
+lEZRl5HPEjaq`52V@Z,m#(rAB1,FEXX6h9eZPpjh5ZhLYa2F%mCe9*(e[&pmh8ph
+
+jA5*p%cHrpiR[l%Ea28cXpYXcU$raIC0&HQFGm&dXa4GI&pmMU!rj6I8VI*G4rI!
+
+p4X)lCU(d[94mMif5[R8Gaqk9[MH+El"qp9dT[XG,qFG6hq(EN!$UDqb3!,j2LQq
+
+(9Ac(5IRMDX@hDirdrCVdI9amadYeLjIU'brKM5Hh0[Kf#fmQl@&5Ab6321%hqa6
+
+IRK6a2B$Q'EkpQk8kV*1q18r`R8McJGqFJrc@Z(a5(`k8qMT*UPH5e'IARCHq03j
+
+rV[3G&0pTe%paqqj2T,V`'hb8hqQ%&pqh8*haR8[cM0rX6hjcV["lQI60H[+EpH(
+
+h-I%p@-Sl1%rkRL&p0dVIl$pq[bKplj@qfBricU1qi$IR+,mVT'r@QGqkERNd0rR
+
+pL[60qFM[6['G,m898*r`@q-[)Tl"lbla2BckNIAR(-$h#1)*r+DQ0Vj,$d[Il#Y
+
+qdkFQ[XI4[1)hj`ZrGIh(5re8hL1q*dRi*P&rme[(9dMeV*!!F(eG+AecrZ,l'c6
+
+rqEe+qZBm`RI9*HQEm`$IGp+mj,I'q8Z2aIGGdG)hj`@r13rjVI[h,UPrTdQiTY'
+
+mjcIR-lq9dpMf0k5krA1T2hj&`[8Va,Iic6Q$laP5hhbc3rV@rIP0mNb0llZP1Xq
+
+N#aM'(4(I%fMZiYXJRSG[4j[iGK,2`(HFe"Ga"m@hUdTmadYjiiN[m9[hSj[i%Er
+
+VTHpGiMXK6[Tq5AalT2bHrH*lJ"3r3+UA9jSRLA3&a@r1HAlVqC&%2)lIZZq55U9
+
+[hEIA56L[)`Ihq,k"q!HrGGm,cm6hPiMAm&h2hG69i[[,a%raR5E9hd(e()$kX#r
+
+i6Ik&Ebr9"GqC0'rjcAQ-ljYXdMGam*YcPYqFMrM1)Tk0lf`*ebe84hcR`NqTI(-
+
+qiRX`m@am$lNK[[1TIr&G6(-)hm0T[[+EI*IIR#ImCRrMZi6kNGp6T@r1'Ab2S[l
+
+MYmihL[UAhj`Rq#k9kPa'I),[6G)hH4qrfGIi(NemJGmDjfLTAU1TMrMp[26023$
+
+ak$U8dGc'paJTraLD,rJH4lb1haVRq%6aI5[0'AjVI,F5MmEh4*U$q*j-mi2IR*2
+
+i[V0'I&GeLZpI)Yl!H"eA+[90L95R1k5mJb8mAk'jj0ehhd6ei6Ij&lk('-9hIUE
+
+i[S(UaQri0ZCh#XerI"[%"rR01Bj["r86[mPRm1fNZBl[1*SMq(C4hIR0I31qimP
+
+p*lr*"r$YTRVM1i(Q"Eipa$[icAlJ0q[)ErBp[JG)m31SV[c@H3G)GI95[q2E4lb
+
+"hq3Mr1EF`IG!QT2mjMc$Ga,a9RlVH$r01haI,rA$pF6[q-fjMHpNQRrmjMcQ0rN
+
+B[mRRf4HkI`cL9q`$mLjqkrVr)YA0K@r13hc(dEcJ0hNP[Ph%DrRqK25YmlLScrK
+
+0RSI[H*T[q(C62q&lJ2c0HZ2l1USI[UmRAS2['kM1q%kQ2X(hPb5mAk,jLZm8k6f
+
+&jM'r@8GqX`rjVI(G52A(Gi"i"licLIrKqf[%'r&p%r8*ipNIM#0rB9lZ!IK1rSE
+
+[()2dVHZ54Af-ljZ*Tc'1[!hI`ec50qFd[XF56q3hp`lm*Ur#pcLD9raQAc11[!6
+
+IifNHmCZmK0rX9hjcVZ(l9TV$r1EH!0rPdRXjm4Pm9mMah'Xa6P`YB8lS2VeHILH
+
+[alG2kQFIm50mHfN1i0XKj4HrR[c@r4C2HH1P1(`lLIraQhh$ErBR[pNrr#BqIR1
+
+qmTZm"Ypaa0I`(8rl-(kc[rM0rZ,h8p)hq`AI"F36hCMhR*Ii(NTm(YqM#3Hr1EI
+
+`I62KjMIR$Vkc#6Hq[hC1I1F3hq!hq6Qr0CjFfYIKqbXd&r'G3IX"I2m#c4GmTa&
+
+r`,G"mi6Il(pm1k5m6ZSAIR1Zi$Z1pPRmC[rbQhX4I,Z)ar&EalYShi2[H*T$q(C
+
+6rr+EFiAIR!ri6L$qbfrf'Ei(d*cK0rZ9hq60q"EHJ1q"Y+rPYkjR%XeII2ZTcr#
+
+G+1@62XEhG66[qFdjJfm[c@2Qie`NE[*FI(ZNr"kTRca5[&I#Fjh89hkD&i)2PcS
+
+VQINkilq'AUrJ0cX"&AdjA2HUi)-)Iep5-[DEq$Arq-jIpAIK0P2#VCMpLYL%2MR
+
+q`ZdRY`2[M)l&mld[hXb[m2l,iUAIRT-A`2I[mcFdM2ZV`(ZeifYIbIqM`2YpkhV
+
+HlhNrm"laEA[m&X`UQ1pVblaRrkIr-"6r2j(mJ[AqdQEkMpAcLaEUIE(IrYmJ4re
+
+j%3$V`JiVXX!#Yd[2)#q&8`'F#!43S[')reI(1aA*#9CPFVC"PCbJem`j$KNSq%K
+
+'a['ElbNk0fj8@MIZ9aNflYISlph6)cX2$-BVPCfG#LAN+CU-M*9!T2YV82+k!8I
+
+h(X**[-30V5qM-pqTk-ehKPc2F)EGch#1lFp`6Kl)k-JIc1riG9mqLVJ5!PcE)Hh
+
+A#N(LGTL4l*VXJcTQa$Iikk+Kq-ehaM'HHCL2HBd1'29CmHX$%')K,K`*AAFp`aA
+
+@Qp%4dTRISB#K0HN"qBX2(4S,H1i0i(-d3$eE!HCc2`Ep0``r`c,m[r)ZrqVEIYG
+
+4d9b5lr,I*EbAi&qUaUALa*l4M)B#IFfrkmH*fA$p1"j`2Il8X`k3!,m"l,Hkk(m
+
+!kqVU`Upmifm!MrSH'YdF-@CHMF2#CH+dF)pAG#UY+S0'6d0NmMh(4XIqjRXB4Kk
+
+0AQ93)PUeqfGr'#bA'Z@4clSR'KlrRa)mJTljD3+'rc5"#[p*!M2mN`4fq,8%XI!
+
+V#4i*A8,rGr2IZjmR3(D*4fVmmV-h!F&Cm8cIPd#`pqH2*P#PdGJerQL#[XTGUZ*
+
+RiC*!KjZ9-Ar0"'Cf94Qc3QCmIrlSrdAm9q0MpBYKerMlkhqYZ*mPZ04rr+[!rl8
+
+'e`QXq#[pcfL9ip2j88'Kr2KdrP63hqIckr2`Rir(RirARirRDq2G2QAE-",SM4P
+
+jrpea``QmimB0*rKGm*9S!S6h*Q"i0)'%4a2mlMHrqHqrqHrr[Cc!1qkEhrcQZ'p
+
+1NK2m,RrrYpq8%##lMPF*!!lCQ9m5D(!@4)AGr0Y!i36$IbCJ1-!3%0pe20iCS[2
+
+El`UIbSlm*Ri,AE5kGS'Ci&Fr(fJ!*Z#lAIrVmIUV3reahlJ*RarURbqrpGC)Ipd
+
+h&#i3qr[cB[pHl1rq3C!!-+qXV%3mCEa@B+-RadX&TI%mBQ94qI`LmB,I'aQ-8$N
+
+-LM0-i9m(9'Y,kpib&$C8`fFYRJHaG+C9C#ZZ8Da+NPJ#"lD"qE80X'U!Car,4Si
+
+YL[5BK0GHNplcfACf,HderhX4fkk`a%cPldh`qF'rDD`G8NbYUR"EpE)h$@e"4("
+
+D$cH,8jK9&I*'hI)8+CXIfFDVP+A`EB)r$pk,f)mdX`YE$'qhV$#m9GhF4L"Q,PY
+
+@jmA,h$V$X[VUCRFG,,)LI(jeECfKSCR(cH%iaj'C+rMP%$6MfDqaepNZPDDdTFe
+
+3XB)F+%M8G@`K+e@Tr"%*U1B)YNH61DqeMZ0DK-KHr,!h2E[13b%0%P#c$YLjS1P
+
+8#df%6mITl#@9mT8&rQU1CSmecM*2AIAb1S1VSEPKH6d(!*HXJCSk&e`a"0TDhkC
+
+AS2c9&3eY"Yk'16$3Y"!C[cD2&rjV"J$q@J%[`YINJV1a!Neec5Z5i)c0F8VU[eG
+
+B"rX6K8DPPrY2m16$K`MriP#6bBS*'aEDkPVIK+,hr6ami"MEfiC#1,K'LCG@0aY
+
+X(N3[E%Saf&SEm&a4hEUblZd8`mX0U$P5r'*efkS8!qb4"3TE9VJpeFX0Vl5L`!Z
+
+@#icI!-CrSGLhiIX&,Gkh@a[Fp@d'8d'5BFEXl0Q'5Y5YUXi0rd5,$#dZAXCIDLD
+
+I"SXDfYkQL0ZU23hSLJ80eHBaPI80b`h,@eaYEe@M6HCA[if1#5aVm6E8eA,deE$
+
+5h0"3Xk)0lmL*[PUbV*SmQmrdT"MJ1@*1GHZbHTjT!IUI'HTEi6&iXF'lSY@,lPT
+
+%ldYKU+SDKCK*d`9iJ8mAMBNAYF'5*(S-VbM"[Fh,2#XS(6T`TXH$-3&m8T!!4@B
+
+bZS-TMYVrRQ,AKUbbPPDUa#,$*df3!)H[86--&@r$BGVLZQA)J'Sdm-)"339E)mp
+
+X,)(1UkM,ADr"A5)QLk&)j8em'`bR6-0qL0L-!ZbqTR!c)""QMbp!)kTKLlp9$#Y
+
+,%mZC(kV)'@XFH)"4LZ6I)&IFhj!!-5%a1S)[,R)&De4JH[%K-'rjYbM+A9k(,Z8
+
+#9LG-,+YfeaRJrh+*9b33Uk0rK2QZ%lKHa63cAKA`Eq(%a+aU4"%jIPi0R,-%KXH
+
+3!%k!@HVFqQG-qH8r`m0Z4F'jkc'4a(UFCeNNb4,LE61*&H,l*4)Ha2G1%N!%CGT
+
+$BST'U++miU9&-0,[f1ReY+&QMVf#+6N10baERSh[9r&GM1rGq'EFJBCP(STV`cI
+
+M6JQ'jAJXH*96E5XYa,XcSV$NP@*m$hVpTG*#I1I1+bQ[C%TP9Z&,P58X4,RSjIQ
+
+PVq'pQFUF3l@mlG`KH[-`8k5Li#bfaSc,Yq2Y*&R5+'(C[BU#Ee[*P&%*q`,L54[
+
+ipXGB'l,Aj8hY&!IJcC&1X%!2qEB@(Fp1ip[frI`0XZ3P5Kfj0d0,mLfC8cc+2QF
+
+SRDLCDX%FC4fF2*,kX"k0CY4T1p8JKjhUPh(R+-alCG`jLLr"Q+h#RD2i!c(SJ5p
+
+(Z@L2h05'F[N$i(LH[80[Le(lhFFCeTaCbV@Sr4XPp'BS[aL0HKH,Ye@ab0%T[@e
+
+3f$iUP0k1)PqKH'ZqM4c2%d*$ZHNZhYi3FD[[iffGp(BHqIbXPYiHQ`4mKd6FBhP
+
+iDeI3jYcj,jai#bSi$VLJB%ZJhRL6`C5H`0r@!XI,DDr4fjTB(RFcIeXY1$6I[L0
+
+km3&k@hXCQ$D+H[p@JZ$ImVD&R[ir$3!%3N`ZZ@pREf-ZEbj[Eh9d4NBTC@jcC3#
+
+3#A[5!*!2%$3$!"&qP3!3-j-!"!!i8&*25NY"5%`"!+5II55h#3N4!!!dl!#3"K!
+
+P!*!%9&3!N!Mp8Jd!PIR*9QkdprHk@C4l!'cP4KIDS$ACZP$ZCNp@IUlI`1YD`p0
+
+Vl4S4[V"EMkhjb6BpRkpjl14dZh$YNQaQ%El)j(6KLmFUYRJV+cpQQfff+CIXBjY
+
+&phQ%0YKXXj1lM5kd!GRU*JXh#9pBGXT2qF9D#%e1#F8$Aeep[dfi#Gb5c@jV#jN
+
+ZC,U3!+-,S@5b1i#!crbq*)3MK-ajMa!$4*Q`K5`PKq@+2(I3ikf'5N+QNDNNPh5
+
+NhPNBU2C5ZG@KIkP@"R9PlNLd[+KL'L0KjlNBCTr@h6J[[AcI(K(*lBN&+b'I4Hi
+
+R$a%Ek@*QS"mT@*j@AK9D6i[b5RRUMY,D+1L+KD(ZAU!l3fbFq3EGH%CA'+ZZTLA
+
+H)&Ta&bNQ2`*P[adL8L14h1'ZM8*q0j5r58K5lfG1rGAb3f%A@%P)Dc)KqFkP6RN
+
+DZAY[1b'#JHaRp4T"`"3AQ+3qXID[R4ajGFJI'Z1hP*8jPZ4C(D5"N!"a"e"33YL
+
+er#2-e-#K2dGBr"22JjLSb&CK%TFPA-4q*%R3L6mQX(4De[mreNq1$$Fp3RHQEZM
+
+Y"1#H30"6(D[d8P1*ff2hZLZpNGTCXjM+6di'P`cXEh)PR)+EahA,0M`0Xd)m@X+
+
+P[dfjp%XBc4$V),C#[-LPpd"0ch+)64!lZ26hj""0%#-3Gd-mck@r2aQL%q)h)"k
+
+&1-LPAei!%6JZli))(,e6)+k#Z!2L@5lpJ`b)C4#"mi0MA2U(-SM6ZA4"G+AlR9E
+
+*m!E5h40R8$2hQ&Kl[QR)e96SS+&M9[ciM&Pa3Q5lGPlG[aQLB`M(*ZT10paXqqj
+
+h@"2$+52GPjUkDrChliF%dKUQ[rYGe`r%,J89Tc20LQreQaAE(c)VpZ5D&IpdC0L
+
+429DX'GE$YB+I-%XN"m*`-6#XP51k(`eFXd'kUpJ2HU9qi-+-rp@IpS'Mf`QC@6I
+
+#2q,IZp,Q$cF*M!qiQ&iZqjCHC9iSZ-iELB,RdR5!9K(jbb!qp'HpPe`5dSPm&9@
+
+"@KU1K0Ck2D$PRA28%r'kSpj+ZZB4kJj5VcY5(I"'+%LY$B5#015Md5S[VE!AmBY
+
+SQ8K,5pa"YpmEd9-UQ8)$84S0-5C2,",a"U28&iV8Z+-,k5T$Gmf0(Vf8Q"'LrhZ
+
+j8SM23(`HHjGd!0i"H!IJ(Gc[5-Ij(B*`133jp!R8*qE2r,1YT1201R*G'p4fpiK
+
+qccrEa1VCj3Xld*qXAZcaq@I$V,k,R13QF@NE",)4kbAXFA+5R1BQF*-!fic)"S%
+
+aR#3EZ8N3daM$iq6dL"l+p#`LVj*&i0XZb,&AVrQl&rhm[ErG2H+Q0rreFibrqle
+
+8b5r`DUKAC&$IM[8E"1kR-S0X)H4(XAlBhX34T21LhIMhiJT"5-2H[0+5FKaERP"
+
+0VGiMh8RpIpljh3m2mjCCR!8iIX*ZD'XJ[XPEe"!FjLe`1NZ4eaZ*K#+ImbliqX`
+
+4hU8@h!B8hRAZkYXqhIZLEjLhX-M"I2,"G5%DI*2hVSmlKRQ,q+)+e"X)"U+Ikfd
+
+p[reR!%p1m&DJAP8J'29'X$&Z+ElrVEmCCRB8`Fi+c0@"0G8KcfhQl&rM9DAN9BQ
+
+PL%H[DY`"91bjbD[2Kqf9C%Lm"59k3*0V[$9rk3a`q2K)jcZC@Q8i!Klr&fp&JE-
+
+%AB+q3,Qhh+8RF%H8H"e&jGL*bZT!EI4f"dp6clh@&49fX5ZL9IrC64D!-d9HQp0
+
+5"UMD(h'(U`+H,kDLk6$8Mda&R+Bi&@ZpAhMeP@(HCFj&M(Gpj+ZeiFpjkDZi9dK
+
+H18TY1%h9H'95kBkkdDY2Pq3%p`mH1&HAd$cT6-N+LUiVDakK&Vkm#"EcchLIfp0
+
+bL8d0Z20)qZFPI0&b31@aB+#1S'ZIXHliD$@EEX!UVbLaj'%AUq$@S`)DUrE@P(T
+
+K4rKV#BmRGCI!+%D2Df!8&e5+daJAJcpacpN,DclFUPhM(SrFq[@"B'9SrHeqrXi
+
+cfid!6a(jba`&f#1DF,AAAHYGlfEUEcNhjiFr'@DAe'ZBqX5ir0ahC,rKqcM'MZ[
+
+,l5eV(@i[dLiKG9Y+MGXMM9[GRjR[q0Qb)FpJ+Uc1BjipXYS6#YD'Q1bEZRFpI!'
+
+h1kBEf#ej1109S&YF+V4rQ3q42mb(P-4m`#BNX-6MrTki*i!#[!G5bA(4SC4HZcr
+
+iheF'"KIhq"m!r[UHq)rVf[RXEm5K`b%cA1H2mLI,QAEN'G@2fZ'[errK4`l&'$p
+
+U9ilaShE9'$pUalF#4[P41el-Mr+MpR&Mr+JGrp-Cj8IYGicaCd)kIT3r+BPjGqF
+
+B2hU(2mhm0lmmKA&2'1@(qB[H6acc$l92'Y12rf+NMI)VNPR[TBraSrFCSra+"I2
+
+q5k2m+LAc([p['H@r'p)[Mr&2KK6M+$pU[fZ-(lh('6c+Mlf,26$+Ml0MbLLr6-@
+
+mRcSf2a+c!eq"`B0r$9*#&jS)ep+Er,kB+f45RL(P4LQ[N[*'+GmYj4eLRT)[jV!
+
+L,J9GRrk!0AcBIpr@1RAa[lc'Yj%UL(@c689mrR+q6FREqS@M@8p#GL4V-e3fm'e
+
+*qrNfP3+`$b'q!M(,kVIA#B)p416fCIBk`ZN@#,[jYZ49r%qdK0D3!'UqUH8+e(c
+
+EVi)U1eEaXF9pkP9K`VI*MrS9a8eq@Eb)Mp&jkMVIq0QQPD9m!GqQk+)DPb,,6'F
+
+4#[VY@3emE,BThe*KJGVpe+'V5e&4H9`2,Uf&HN2@jYQQmJTR194["c`ckdPJFaB
+
+i!'qN$LVhDrJff9ijhRTSI&IiIQ8Z[e3iDqP,5G@9KQPF(qBk*kbFd09Zk5F6`mP
+
+arC*Yi+LXj9[m+MkQMp4'2-6@Vrb2V!2U4fQGZZj&pKHpA`8e&l*fNBbFHHS'Rfc
+
+j0MkfI*[pED([`4`b$cefU9GXbe'e2%qRaXd'*A62'AqeVAr`keQ000ArPXjFr*4
+
+2(jm4,jTYbQ0H*IqEhi(F#FI)f5((fK5E`-&(DIfJ24k!j9hTNmFVic1JjS)Z4(,
+
+rEQY1%CRVH'1U8,'YH"jhRer@)[#am*dYajG[Sp#EQM,qUQqmJB)(6[r&q%cJEG"
+
+rPip"r`"'aQ2I-$361R'"-K9qJME51YN,B8eR8qX"f@kI$Rc[LGp,bh4fRGDPYP`
+
+NULLh@GYjD2&ai8T6BqG@Rib2k8KFMcb8LdrAPC9H&YTTUA8AQ6JR!$-a)jjZrEi
+
+p3$5dY19$SaBFH(rkmY-(Fl8kEI""[mjTm8q%Q,A8iLGN,b#%J#2'E!'mP`fFG!j
+
+K*dD`VT1lK8(d6GCXR%%da3'LpY%+kpT8Tp9A&rDd()Hm$rQ!iHQZ&M*H`[BJTV%
+
++!rie09A!)FHk[)qdXPF@qdjSh!Y0[U03T9#[*9m5"Sh6PPYdp31GA8me&ipSVqV
+
+k"e'pK1FQF-#b89m#6q55[PkQleh3PL3-'+FpK0ULA8pe!8GcmId@B6$hjrc$S!S
+
+kK$YAm*'@R2j0VYC[K#kClKr[Y2M54,hF4CG@3YTFibANN!!,CM0h(K3h3cHLJM2
+
+S'+hrH*!!,[KiX(JA6+eXBcE*pZZQCa2Y#Q[HHb6ej%8L2lh#1,$3C2hba)[N!H0
+
+!5qpLLkm(HYc-jSrCGj4TD!-0E4%K5TL1bDpNN`GmDA0"MIf`Ah2UmAflL0`Vef8
+
+6q3Mc+H$p*Ld,TcBhA0KU1(MK#@*Y))C$S+FX3SaDJeCQhL#m[49kJqC1F%h8c5$
+
+bjNEM3A6$H)JjF8cSFFfPUI%Pe2`*SbE!Ab8b[cBA@+%(*YM$U34CqDZk0i#hPbi
+
+JDQVfbG`+(Tp2)3C6r1A[&HT8"Y1ZlhkrF&qMA`(cIVD,DZB41CIM496RQJLS6%+
+
+e,MPN8r,kK81k4Mi@IjQ2AHQ$$Uq(&E#G*2&I)c$eB-DEmNVc#aD5PMKGA3CcRkV
+
+i@(CpIl21mBqRrRhMk`G2RQ*irD%"BYEPDV@!EHTkQYAiT"T9Fe[r@PC4)9@NGVA
+
+e9l!+Ue3K9f`%%e0a`JM2$Xdlk(MKJ%X1f4QF1Y"CUihDA'hVmQA(KIjLUhq3!1q
+
+P!e,0pT'DIUR''P3h@@S8R@C,,j%C8V%@eX)F)Xqa%,NZKkKb9X0ZplD*6#GCR0e
+
+kj(!fQFRC#ilpiP5qh@UeYKrXh14iJjKd8d(j(eMR`*C(GN$pNcIV(kAFEBECYqX
+
+e``U+'pCQ&QpFUmP[b0m)P45b@$jXVL5$9F5J9XdU&9!9dj[`Rq*p$4k&$PCa2YD
+
+kCBfQiD$GE#4@Xph-arCY@60Ccc#XXYXH*(EE0`iDP(DE8FR(X#210jlI#Lap$3I
+
+EYaL6$VAVNqbfepVYYUiYAPAcTM9be&aZGVhe'-'0%'D&BU%5jX48h(+bc)#2DhN
+
+qDbSGPjhNY&ff1@d,P+k-kbb06TYL-b%E"TGXbb%Y,aLQ`[DAl2XYcTPI&hcEjXZ
+
+N5A%cU(L@6J+fPB!dCjI64I%CB3lk4Ejc#P9"R6AE2X3aPbkL55lYGC8kTifD+A6
+
+$KX%F&@ajMYIEirU@lbhqPA$fQ50C$UCP8A%"E*hh`"b%2M1D@RVcqUqQ3LHe![B
+
+KB$m(l$R!2J$X#F#f!rBl`*iEfCP6D6E*m+XKbr5RmIdN#MaKi,N#2&(!+`&h5AJ
+
+%m!T`)`5pAJ9r$+KJRUq$cG4dI61G$B`qG!0b+kU(I!%k!VN4(B"m*LU#A%GAmc%
+
+$Yl0`ZMfXf6R&`-9YKJ(q*ASFXUZd3kc994&9I+U"Sd9a'mrH!F5$Hl&`a5qRCQX
+
+6UhSQ(elY`r2Thr(`PlRHA9ZM&&qibC2T23NS5Hm*DmSIUA($#amHQMGVPK`+EP3
+
+Nki1KU&G*IaN-"Eh(C2V3(93I5Mb+iih)p*%88Bc6@jr-lLEZG(TV3l')a`XXBAK
+
+S"kpedYYrH9Adjiq24V%RSm)FHehURNU[,a$ddQJNjSAri[(-Z504j(0AedT9KU'
+
+LL,GH)KTK!PQ*XQ%QCY4U-!UC[VJ9qq2"De*#j[hqBqI'BirNa*%R*q15PbRV)"2
+
+XPR*m[U-C,j-JrmiLZ0'#I2Fb4bNq8,!IB(b'iK#ZEI!V`fYiX35+#[%+#A)RAKe
+
+"[UTm"6j``kh0i`YYX#+Z+bpD#AUiIAKG3j6F+rR@*6DLP%h*Yq)c)l,(mUh,J%r
+
+f4,Q$iGmXA)E2RFLHC@EK1A%BAR$%4pN8@H!BA"3LPR3&kRT%,2PT`(iMBP0Q![D
+
+@L0fl&c"Bd"L(%l!kZ$j!E#9JZ861X$@Jb8k5'9B2Q)-S',B*11B4*F1H!-a!9!a
+
+V"Db+T$$X!'$`H)3JT*'XLF!p@r+M(HUZ50J4U!-6'AB-k[SNl!4J!q*MFcR9J&h
+
+8c-3IA*)lJ8q6-SKGR(`'X&66%Rb,cT!!!TMf+cBb!l$l!%X$jVm&$Z3q*hRFcrT
+
+&p(L3!'(-BiAika(c@!%Di6#2$6XCaM`f2#m1BBDe-)ajE2JK`jJq`i[$qJciF)D
+
+Ncr$5X$l$bb2k$SlSqm@)2RbN*U([9`aVB*l&`GIT)UC3!jBYpSVKA`&6LA@'Gm"
+
+[H%(RUqkUkKY$r[T#N!$B(BE(2QIk2`!!$3!*3N`ZZ5jbFh*MEbj[Eh9d4NBTC@j
+
+cC3#3#3A,!*!2%@i!!"'(1J!3-j-!-`!DFR0bBe*6483"!+359lQV4Sh+!!!JH3#
+
+3"JJe!*!%rMi!N!M`2!h!VH(TASqCjAU%dcEEK'kff3&`0q@%FSp3[R*cC9Y#ffc
+
+rHJdbVfKVFMVJjcjbQff+TjldmC5[iDr`Ar+9NddSArP&MK1Dj(Q8h$k2m#1EE3Q
+
+prH6hX8f1Nk2N0YPNHelN+#IE)jZ9NAf5`6kbbHdMR$$bQh$#b'$6j"djIK,ZL`H
+
+qqJCpmRFIffbc6Ci401d(b!-D94)!"J!lr`6`1GcCLc!(Ji#(Em-mT'"IbXMY"`Q
+
+q$,A3!G[Hl4lHe0SGIMPXQ%E5KlS*fE$kZ[V[3ULi2Z&8eXZ[h[Z5Jr"m,4b"EF"
+
+mi)-3l)'k3U#`#2[3V%KJ$Vi&0ZViKikepiZFD!H)iKiV!0JV!!@-SEJMVhMf,m2
+
++pim$I1%5`)0)q"(ZdaaB%2G3%0MZ@@"hGC+G6RM+bmDflF[5iC4U530D5SH[SH0
+
+lL9I9PV8!c8KYHLB2E3$9#GQd&(JBNEDd)KZHJDIKbC+Apcq3!$V8Y&)99h)34r'
+
+HM+*"MqF*KA96)86UNbF9k!-)%-"Ec$H*pDPHC9)a,))F`Fd*H86KIBU9c6J##82
+
+9V$FKi3P)$f99#ajbl0G#-qb(PpMqqSD"!4F2`h2`cRd$!Yq*l"V@c0i4"SANjQj
+
+p41F8[dk"TV'9Y',`GAJ%6NQ"Z'la[U`K-N2@9S`r,NP&KKmp2J!r#"aS-45Hel2
+
+F4+B!FV*QF8[R59P,+QQL'&`40RPb90C'&*-Ul56f(0YAIlG)U1$'dJ&ef-3ZbGG
+
+$2FD@3"!1`BH"`33fce6iX+UTjUJ`T'SMI%JCeY'hCH3*4GF6f!SZSVdR1DTMjhK
+
+M5c+TC+a'MJ%dYSP3'VQUF@Y8%I(cF8A,lJR6a)!UiINi2!BC1#rGd5SR(b96aCB
+
+!TKE%$XDNUUmUCT1V&N5eQ15,kmA%pX2P`-&fIE82XSK"f(Cl)1MMFNVaiR"U%Nf
+
+LLehBZCf-Xh2!R',J5YAJF1(YUTc@4a$H)fDI0mTX9RGRbj!!RV9iUf)mUU59[+L
+
+"+m"HGl-p#e2`HaD3!)*HYU)Vi6$PMk-2diZclG-2VhVBXU8ecpYP6F8k6mSDEdd
+
+M@ap[iUf'LR#RE%`Uq5Cq6-9F8H*"fAUmLFYDLVIVfC'dE2)H!mZVQBl(([6i,2[
+
+*p&pT["VUb+M&lfRE`qmrf(b3!2GM#AU9%8@c6+i2Ldi-D#T14P1emX4SNp-U0Pj
+
+6jI#@rP(9j+BqE19N(!(MFKkR!8rU'99*#IFTeE3-G5KV)BkDf+jX8VC8AC266Ga
+
+36*cNb9'KT1'X)i@-S3rM3-KNM3a1$T2`56@&mYDS6-e&[qM2$Bf%68Zf&*`IL')
+
+%UTC-CdN1kbbRdcJ5dCm)a!b2LZcR-IX&GQVkJB4Z8")QrkJ%6AJkH$r[birMi&#
+
+5U)"T'#)iChCMkeN-`-Ia%K$%H4-!#%Ti`F)"(N2q6mm@f0k'Q'p[-jIf0J3$Kmi
+
+'8%9#09rXQ59@Q*Raa@C15hcQG##iY"4%GBlU-Cq[8'!q[0"-l`ES6J%dRJ1iFaE
+
+pN8rb5li",ib&k#"EM!j@RBm-qTFMJeX[43ChABP-49HL8drB8Ca&"@EELe@fIGj
+
+[fmYEEI[5,YZq%VAYP5GS6MPR`SP(I0)K2G+&+CYmA)N14XRAFQ4ikrR)X(ma-P9
+
+9L%iaF4hF-G$@fNe$VDXYrRR4Ud*(lq%1"k'l58XL3AaR1IFD@R0VGp1DqM9m2V3
+
+U8"-+V3V-Kd)9!D5[#K#p,#$SCB(jKB8c#fI1H!)eSB@3!p$#Ccf"HB'I@A!GS,V
+
+,G`63(+U6[K"`c48Y1Ykp08Gd-N-I#4!GcC!!)F*G2Z*%FI9,Z12288Gpchr4A6R
+
+G8X!N-$&4+J!*%&l+2i6S4+8IZG$fL8TrYZGbDrh+9HM#iRSrVrAh@Vp,%!kipAA
+
+baKm,Pelp(i'6eG@h")MqE`'(rLm"Mrj2J4,pZN#&rV(!bHS6p*d3qiN0!93AI*6
+
+'RBkV!Q5Zb#Ij03(KI9fr,1"%ihThrCF&eT,E52%QA3LiG#mCErF%2(8R'5mKMlq
+
+ZArkZqIq%AmQ[iYhe[jlrpA"[#QcdMeBRIYF,lJS8q4rhRpL1aShjd8P81YbB2jf
+
+dEXf[@r6Eir(fH,dpR[mahQ1Xi)Y*2"#N1fpmkHM-dG2D%YkG!i'Ja(h)GQkR0aG
+
+kS1XP`qXdV9")(&N)rc!+@"!3GJPLEB)ACZRE",13!lL,-kj0J[8#hUrG9G4eI44
+
+pH6iphmAI3GA9Ur&5TpEK-X%E*q[`ZJGh4A#,4)Ul`-ARR%ZibbTV#Ef2eSEI$IX
+
+ED@b%8iD$3DF&p1F#'c'mG0aTk$Dml$pEZ[!$iE3lkqS&m2RI,U2)pErYmDpHZ(U
+
+KK"1l`LGmMHrT1hkrGq3EEahk5XRI'p&T0A5aK+H1cRmRqNB*cchpbQZ[[&E#EIZ
+
+l(qD'5[KX)[2VhleDiIq3!2i1&r'I2d0I*FrrYT!!pl@qr5r)NIrDdhBfpPjGh6*
+
+5GZ!cpcZ1(Bi2i%2!apZlqV[aNHZ,,GfprBMrpT'ZH$YUr+fpZqF)RPGDiqhiF*!
+
+!e6M2#GQRRBH'E,HD6"r!FaM2cAMqSTSdmH%Kkm!cmAVa6,`6cS0%0TC*@jJ@Qi5
+
+Ra+X4C#c9`T-#kdBX!2M@"-0mLihpFDkq3@!lf0M&jIX'#'1I3HaRpAF,l(R%8T!
+
+!%KUAf0Jb[JF@2[k!2[#jTm$H4H`#m`QpDF3112lJIF61ZGSrCZTl'BGAr6Tk5VM
+
+BAe$M&28,XBZ)eEQm[b2f'`IcIi$B,aaXmfA8rUD$e8D4plb,r4*jIbDX!D4&j(h
+
+*bA[,Va"ll2m!N!-0!!T0B@0)C@&NCA*c,Qp[GA4'4LPPER0P!*!*Jam!N!m4IT8
+
+!%FY(!"!cN`!`!&e)48&%5d&)6!%!RX,D#D#Fc@d!!(1S!*!'3jd!N!4jCJ#3#0Z
+
++$J"0XJR6q*ZEj@EE+,pBEfirCQHAGIl#k5!lLdjbd1HfSkhj[Gae`YI[Nbrm1Xm
+
+'AAUaVGH9Ehk$p)[R&9ri)J,XFTL$c)',)aFRQ6R*ch-j"``,q2$5cQj$Li$N32+
+
+3!$a)aL""$,J522$)3Dh'1-DBaT`aGEjQ`cX*M$Pip'LE0r9acGfXZDpSlZ9(N`2
+
+Ch2C#0PqS0`SZ&F2CHR1dEq`X,GIIreAaTppl2hMKhd5CaPX[[1`TFp24SkhHp,l
+
+MFdrIXMLhldfr9A1AD1icjX*,AfiFcAhCA2L#,aTAFM1VY)HRZDpVcTGFmC!!jJ,
+
+*AA1ZjQ+5fhq"jN,0XIIkrl-SDG0"b"L6[c&QkN1febA8l-fNcB0QQ8PRNZBK)*6
+
+1a-eE0IE0AjX-X6%2'pHN`eHDYaQ61G-m3R9VjPRQ8H-4VcC[Cj,@c$10B+%eXmS
+
+mT[%CjQmeAQNHerJCjZmdAQ(HSI(T4J$DQPPZhU9aUhQh1B8iEGjM6L01QIIUI%R
+
+c2Sd6j[hD*fiqS2R3I&$MQ2Q3!-D"qE$@qqB*M6hc%BeGme'0(I2h'K[c-BP$Bb#
+
+&c(Vc#AClHQDYqD4C3Ec'I%VcEHE6'UmfR`%ETl2&cfTqKIN(YRpkjP6c1DeV0Cr
+
+AI0Tm`Ca"($GI0#h%-I12@ZHE,fPXc$qCCjV6NmCmfDc1j-eAQ'CeCXame6b,H0K
+
+m6I2pjNQ0YjYreRJc@cQ6Z-0mR5P@Xke[D&fEqDCT)hkfq4DlA!dQ[khaD[-GlI0
+
+-YLAj9HBTM9HDIp'kD(ZVlIC@fqfYYYYEEEHhfQj[YGhHDVZpeCN,c(HCrbc3mMf
+
+0ejM[DpaQIU"aY)qcf-F209jYrTAqCl'((fQmNRe+(1hK,,Z(Xq`HcV*l1-[Zi5b
+
+lKl2X(XkbHcJVr)Vj0eM[XqE(4"mcrfj-kJlc%h0'mSl-2[06maacGZE&jQGd2$Z
+
+cerbFLFl1l$+rd(M%r)FjKhMBr&,V"mf[01ih[fCMCfGfQ2r8r(Ec'ielc@melM&
+
+2DpaPrN[Mbmer`ieRCbie[p2mmmh[0GjLrU"aKrNML$JlXm%FeIa&D"2*Vh-FhF1
+
+jMU[a'XI6qV-GAq-f*p"iY4-cja+[FN,0Vh6L'VFk#A-HFGa*DQbFP-5Kik4"`92
+
+1-Y2L2*AkXY0#r1A`q`k3!'(@9RU[CGC60$lE19AM-jh6`-*DCPc1EYBbiqPDYpa
+
+C`@lA-ZXcY#lQV$6R%r[1'9T[R&@JFfhiemicMC0Ckk`fccAVQ1jCG&[("XpNXq[
+
+Bi,1CBKe6Y@Qm`MQ,lZZBlQb06h@HSr%TcKViHah6RU0ah$QAMDjMf[2BcMUQA@X
+
+Z-ZY#hcQIAFiikmakXbD6Gjl,9'Xbqj`,0,lDZ9$M[Fj&6,8QXmGjRXCMcRUfXLB
+
+cl,4Vh1pXd(L(iRm01"ImV`(RJ[mei&c`[bE6j@c8q2P1KfNRhZ*XdRb(XaPFVXQ
+
+XGbl@H+fc4H[ER%XdAZdmhf`LAZQm310@je+fZ5EM1THCcF6'Z9cR51TF&l0YQHY
+
+LYLecA8bpc(9ak$Tr"VI&R5Z)!UH6b('k8)E[FEV0md22kD%LjQ`&mke1VhP"SM9
+
+eVV201-Pcc9&RZlQ8U-pFPM61$R0&Z0Qj%Z5XF2UCY"2m$@KmUM1SFBXc"#)kfFL
+
+`aM&RTmDZ-k+aF8C0&r&McKMpHM+21128p@6HkZb#"ASb$cUlYHiYcKk0hqaFTI%
+
+EREdDhqqm810lRDXe[XGjNFEA15mf@iRRR!QGTqlXdlMQC,@qj%aUIXE*DCahmKT
+
+21J@YIl%cTIQVR@R0lh9Q00lM&$8HFkl4r3`lqc8HG%TDeqq80GlK9$6HlP3e[X#
+
+TQ@h%kjaV0AqZ8pIjeMJ0cEFj6Ff[GQBeAZA-DGe+CelM&Fi"MCFl#aUIkPbRFB[
+
+cjpS[k9b[FGbj3HYLcNXdpTfADKaTQaiBjdEkp'8f1cGTh1%FT,i2aVPCmaFiYfL
+
+meVP9ih1Gfl4qMI-bMGZFPf[GQFjID(kem`U09cQhDlc5Z82M5)2e@3h@Cc9BRp9
+
+JI9D$p9N0eQFe@*rG8aqiI#9clJ#AKc3HFejPVL3HGZl8I,pc@12YcK'0Hjbl0,l
+
+#Z9[MbjeA-mm1p[fAQYrX[%EM$ZHe@KFTmahXmh@QRcM5PMZXeYeKYHi1Uh9h@+f
+
+l`fVG(ADr1qaqGpMplV$lh@(hZm2ZGiIGl`klhah`b6eQd!aNGMQ[C`m$Q4(RASd
+
+(RIXdlRIZTpm!qhf$jRZG0fUqahQ6aPh1Qc@q`[NVM5phhU,amjd(Y0m@jd(0GcJ
+
+2DAkpmeD0,h,q@ZXZF"l@H*hc0ShA1Z+l$)$h4c8qfhQlpM[6q4Z09cZ2DGe+G5i
+
+'l2i(l2i(l2i(l2i(l2i(l2i(l2i(l2jP[i,IBB[IBB[IBB[IBB[IBB[IBB[IBB[
+
+IBB[IBB[IiFbc(I'$KLeqKbeqKbeqKbeqKbeqKqhqKZhqKZhqKZhqKZhqKZhqKZh
+
+qKZhqKZ(GamQh`EYrKk*UJhIISARM["0&eQCe`dkV'hCDhE$6kSDG9MIXY,TKTp8
+
+01keZf'Pe`dl9$52%N@lB#6lIaGjh@Yf`Nrfr@r14EYJ*$lp(keBklp9iKI-qM52
+
+GX02UKThXlrhD,p)01keZf'Pe`dklljefhcXY[ib"a`r3EmcbbjMPPc(,,f1@AmE
+
+Bf`FeAZGm511)AmBX[ic",ar@IK'rM&Pq'E2m-QEa1@Ea1@Ea1@Ea1@Ea1@Ea1@E
+
+h0@Eh0@EjCGcbblMPPh(,,q1@AmBY[iaEIKQhr$,12Tr3I-3[ijCIaLfrM&Yq'EI
+
+m-QljCGcbblMGhlMGhlMGhlMGhlMGhlMGhlMGhlMGhhMUD3GrdAdDABkrb"EqRQh
+
+X!L8ISrXZd2eaTYS&UMq",l%,(q#6'VFiRf++ACQdmfQ0imjRY'r-qDcQSbPhf5Q
+
+Plcp3[jYqRp-ilRbHqAE6l`[df@hllEEpGM2I&mR[SCpXE3rX)I9l-JRRRpMq([T
+
+r@H1Bma@Ymjf[DZ`kAp2B1%p+M(2`cfC9@L-fM"@0rr)0SU6c65bR@ja[QA15Yi4
+
+T"k`aihI-AR-9-c`&Xel&$)+`Ur!R[QX-Nhc2[*!!(Ymh,c*A-rm2U,fDqAqSXH[
+
+m+hZp1Z-i2f)[9p-ECdrlI"pADB)q2kE2K1dc3EhdR@MCiIblFA!hpV9XGhj#CMZ
+
+C(ZHR*SXcXUrP#ZGR*SGhXUrP8ZIRTS!(XkpPLr-,-ieEXkqP`rN28m4rfGHbdIQ
+
+PmA"kpV9XF(j&CJ1CGZIAC0V*V(IqNmakX`p2iMHQ6'bFhjTVLG21dfcM@@a9h-"
+
+RXDhreYKhIUGea[NpQZ0CZ$"r--h`1miI3FPb4jc!f8`VY`ER%UGGKekcQEMVDKa
+
+ca3QFYBLHYBLH$32ATh[-$FbmQF[iEScUZBcVBQ!6'eGm`EQNF42Q3&SMFNPc(I1
+
+Pk(Kp*ZN#Bq+iZib1ec0*LqCpPc84ZkkiJpFcLEL$eiHqHbVcRZUH4[B'YV9FiaC
+
+A[-%EQ'U&aR&A[-%EQ'DPjReA[-%E-Tkl#KI["UCkTXD1ZeTMicj,iY#iCm)LV[Y
+
+XSTMEKRrPZ[L#$LYcccB[*AU1ZC'GVa(QF-ma'Hm&lVRQXY6EhI0-Lr[f6)HlPMP
+
+[bUahciHGEmTFi+l6H+hlA(MaTX`Dp`,fFP2QE2G#lG2QLKpi8qC-9rc!Qc+VhI8
+
+DVh,E09lTEY"iK5YqhdfCj@k(aUhZ*TdRl@l@HH,Za6URlfl4f,LA5-`qRkqEHS(
+
+C"rU)`V4lUEKelQA(VJX1XUA,09lVrTR'dCA"3ECc"9-Fe#X$L9HjR8arN!#YG'N
+
+FDC5$9U-FY"VPS08S"ke'1@JebN(,(3FYGp$(l5Cr-ac3Sh(FhDTac1h911ThXqe
+
+hmbNTGj[a$Ik5ij,E,MNAE*,VNj`AjAC)cSpkA#Qj@&6A,cR8JRY+dKdi0NI5(6`
+
+f4p)G1MC(dKdq0NI5hAPXMU3lXMJ(qaTP2lH!YM'8a5fJE9cCBaHmm60hYpQ8q&R
+
+QYHiHX(4VjQlh+R-EmChZA[-biM[F&q)EhjTjK5ZqikfCfp`AQCF6(h4IM"+l0I-
+
+5Gd,Mkpap1,@hCZEFV-CeGe,MDpdFI(PVTZEQ0Dkk"BdVlT6'*9ImJe[CcBaCBfj
+
+P+d9"[#[Z`I0![,J(c`2a*BhAZ'@0fpb+aU[GUXBVhCV'bpeV0@jekaURhBE'FEH
+
+TXHr1DQcF1BPKR(R6N6VNiMQkKma4Gm&FaJDZ`b(q,rI2c5XbZpcVc4hQpXbB+kl
+
+"lCPKpbAQPF6EhCH#T0Xc2Hk0E2rfc"AZ64TIULLk2E2&2BJkZ4fH[CNjEfHIYfM
+
+q![G@MGHkYfQImpbAJB,E-qHk,pIi(2F[0&lM[N,M0[Gfd(FlHlj$iq@J4ZCZG9q
+
+TFk6CQX4ad(-1XA&I*I@KjpkT+"*[i&$QE,b'9a'hZ8IBiL'Q%BrJ%$ajYqEP+NI
+
+LL#F2@CimC(RbN!$Pb81@*`pCRMaNHHq3!1@p3fceeFaeQ1f*eh#BHF9V1-bmVkA
+
+[BHCp(Id1JpCl0)lQ2@cR2@cR2@cR2@cR2@cR2@cR2@cR2Cbjb"92m3LSZTHk)hE
+
+q)hEq)mar(rf2-2rp'Mr6I31S1X)HhUKaj1%HXAXiB[G`a1lKL0h$%EZ()hB24q`
+
+HMYJp(!Qrj,i*2Vh*IE1bkPq"["Eh,DM'Zm$R!h5k#qA`)"2I"8lP0Z`ZP)2FKYd
+
+&(iQ,G"HiPGZ`ZpM8fmbVcGeX5&bNZqf'lVBEZYYZk'klSE[YKZkf'lVEEZKZZk'
+
+llBEZKZFH0AY39N6-rRCUcNGErSh'aK9(kR`fKr0$TmI0DmKaC4Bq`qA'M2ThQYA
+
+QGF6[-MXdIVFjC1iKISmjU2&lc@'0hfI1d[MpCN$M$jKKM6pSMTKlB&NF-ZF3f2J
+
+`mliH6$`"GlfHIAb%hEqHIAa8Bq2q[GB[Gcq'Gh%['PV8blhd&@kp0l--0M2%D98
+
+8ph,K*Xl8[F`MLZ*H-2Cal4HTRAXcEh8r3Ikqc)1ZA%hGPhQ,+pl4ICNhZTmfEb#
+
+qerd-5lk2ITmeYjVl`LYFX!B12QI@JKJL91MRj6V3r3+4FEp)Y-)&CpiDpd[QMDK
+
+XmB5-qf@cQDjI-H[Cj&HCI#-6L4ZdNDSRcEPJkTr4&Hpe[flHNZT`[f'F4!H9hc3
+
+2XYP[XHN(f1#hfI!$)1)lE13"f1%TqMr!21)%2F!mhj8i20Ap(MXil(jImIS$mdS
+
+Q%$rR)6!KPf)2@DAkN!"9UJpCTIU3!1@&Kb`[2%6h(jQhKXYFh#*b2cCr(Il)j3i
+
+XGSZ,'r6M@pMj6if$`r!cH-"eImj@Am)@IX%-,k(IIjJ@m2",GT&fIkAFar92kQ'
+
+Afjr8`kR9lQm`Y9DRfPaZ[r!SMVT2QlH&VHjrd5P`reXRrKdA!LfZh(ceXl-r`!I
+
+pl1b2Q[IGSk#K2i2K)A')L56qMqGb+IP)TYAcZ)Km**2fI+SIbF5pJ)[)4c+q&q-
+
+5mT'-kmR&eb0d&fG(mJNZ)`q3!-G+)hDp&2%#HI&e&T,'`pF*-ek,l-A,Q0Z)@Xe
+
+l`bZm8kMc20`F+NlM`05"D4e[ZENdG,c6CH[H#YQSp`c3hHDY&!ATRD(G9TRhKGr
+
+dRNReTlc94#rcRNANH(JhjUMhE22"-1AKh9$"E@ciFqpXRHBjiP0jDlM(A'AaZXV
+
+LG9AiHqmFm"Mh1&kPkhNkj9Uc+Ab'ae8A&H[!hcl[Z5DGf-H%&l#,MGk&e,cCZmL
+
+FiEijYF0lRMRIf8'RpGUlhI`Gd3Cc2p&'FhIUDDr$h1!m$DVNRZV$QD5h@H1iGl(
+
+'-@q,aVjhLFDZphb0MIF#LCRL8R04+ZpGKUqC6hhGidSVmA9fbK8@k,M#Y01Kdjb
+
+4@ZlKc,M,`rZmEVDcaHXaChKE`LpiA'+&5DqAATGlfm`6c#RZb6acLR-bcjcLQXb
+
+(Ir5ia3)(rEV&!E-VV4%i(95d$QRGX&P$(4'jR@BcfaZ"`6BcP5L+c8`c"TBhK`N
+
+22`5ml$+AHKr`GTZ2a#lhZ-)kHRNBmkl55IDDMkCmli@Q*H'cZkZj#Pa1eaFTAPr
+
+-"RrM6F!*[k(62[2h4&Nc%2VHT2E1QA2B9"lFHKlH"cb'6U&L@MFeSmJSQRDfF`e
+
+Eq4MEfDqakmR&a-IBNPa-I)b1&CfRUKL[S9(fdIpDVDQEMj0VD+jTcNQYmI!jiV,
+
+h1G-H,[IQP92NXZSmjT-,LI1B6biNcQ1q2jFipRc[HRE19CahJk,K*A,rjVe8lYq
+
+m'mhY))Q)h%fQP4`4Fah8AGaXc[G`GG&pBqB6U[['04EGp`PBRRaUYAH,qD5c1Yc
+
+QhDTXHCXL!IFMYFIMK$Zj*ccNiAd`2Fi(8pjZ2N9dKlNbr'I[P9Tab(bDMUr5h*h
+
+Q(85(c4Y5(r+1Q-qi(`TriYe&papiGa-pl((c3+qr9%jm$9(-HkhfICej,VLmKiV
+
+3HcfcAq$GblhV"Hcj2R1TpD1[K2AN*ZP+%2)'Y1@9)%4ZNUkNrj[-jm+d*cUrfd2
+
+RXkfhk&`2Q!E4JqDCE2BKkP)HqMjXpIjDUamfEf)2A(dcp51JrBhHSiUUYm-C-Hp
+
+[d2*([FG`Z,rUSF$$Ir#ip!irlU(!kI%1mhV34X31ZI5QiPhQ#kNR[AI$38mblAX
+
+84qr96Ep2HBAlEZSqS0[j)&(#idkG(YaeKrGiA(9lIGj(c$mbb8I0`h6PRMYFjR(
+
+0$CGabjfkdd-[1hG5rdPc&l-6dH961J2+QbkI8FElV$NMm4[[HGirQ)pNV[!qKhC
+
+l8kE0qcb+j8dJjJX5ThlKF8H4r%9UXiGH6U#2[5qC#DrGqbIcMmc%$389Ac'(`hr
+
+b[XTNYhKIdbQIe!Le$1GbXHhiC19U)ZCp8lI+"9[UFHrE10Q2Jjc[+*DH-Pm19hV
+
+rSPhdAX,lRVQCk2[Q+l%E2EQ@Z*(X$mfME*3)AIH[p(U'ad8e(H81fRMF3B11IaI
+
+MhrZ*f8,d8l2-5hXr3dHGj[fF(NHmAqJ'rN-Rr+9jM'Q)8NHmAjQ[1NHB!38FqiU
+
+(![lM9d!lV`63jlFQ3mqR&D1LITGjU&qV)hq(jRLIph[cq95EamecXSeqIc4I#dr
+
+aMUT#KN0$MTSPjc[Q55,Ar$-4STM)4i'hqS'i%hj-X!P881UqD0jc-mC25%ar$ZB
+
+c[Tq#h9j)&ED'H@%BmdAahZkMH%2I4f)b6kYj+2bd,iVhj6k+PhP1)fVaPiXLm%m
+
+hh`c6[UKGedIYK[rQVa3dq+KG+RKdJ4aUPcP@QjFcYDKGcdIYa[l-IcEDiXp5FEm
+
+0$4922HLIC4l'%c[UR`ff1R`dEqSArKVMZVqJqcRQhV4'j-i9pmSrchcB'r2AQQq
+
+PC[ccdCBcU@rkkf#8El+jjqV%[-e!$Ue,lL,M-[hc"'mq1MIe@TqVC46!8Am$$X4
+
+prNBU[qAcNN2i4Aq6X,@r@I$[A`ckEr#hQ$Fb`bAQ'q")e1fM)%E8lD0J6'i5[ZY
+
+cNa$q`8IE-M(+PQjAQ%[#PElF&aZIqf)LG'hX"6iZc0%AH"rfYm*h54pG#akfXC(
+
+lrHhQfakUfqmccdTGlHrJeBfVb9jTCYNm%AK#fi*YZ6)qkJqDli$I)GbrapL'A"J
+
+rPNVlA"LlDAB`STXHeHR'G(V4XmEICGT6[r4hSh"qb@alc&0%9jP$U8&rVfRa"X1
+
+%rd)frL(rD[-Y+PpNrSACLCJ)64ZHlNq)'[GjL!1ZFShMCmeh`p"(e6)KVRjUTCm
+
+h$h29IY3[i)DFlU0VQ@-DYIHi2f1qjc`HE[GamjRR'Zh*faTXTB3LEIA,ZM-8VAH
+
+IAa8'pfX'bmC(ciD[mRP9)rbkMjj02HBhBFA(U*mel`ark2-Q#EPjEQ"mr`"GhZD
+
+MCTN(cjlZIkj6A8rI$[m'FekmJhfp4$[LeiGardEGaNh8VrF2JS[e-")12Dm#(29
+
+[-@qMckfQ$pC&bATImQmc6e$a-M-(,SM!*#jpZ-`AR4VcdDRKFTpVB(VFBG`rZQd
+
+6JhH#P*6IkVq5&aeDf33[KD4qiVm+(q`RUEhqRI6D5lI$F,,aMe$EkYq&$p)DIXi
+
+AhIS*rp9%YrVS9VUma[b!ZBQB!rA+a+mMqUQ2HSdGp&q22hH3!#RZeFVlMQ(dIM"
+
+kVir265dZGbVTFdHE6,)l8DeRq+*D@ha8+eca!2Ahq!rL$0h$[!qCkjQA+1caH@5
+
+&U9@pqJqEmkNMSL-D&Q3pJSr6!@)H06r-a2fhikRm#kcd0a,6lc(cCU+r09pLCP'
+
+bF9q9V2q1NaKCiEq69be@T*lbhf9qj$i9hZ@r@l[J+41pPpFT[ZD,RJepp#`9(c$
+
+hX38LpS+UTH*$jQp4!4m'[Gp-IFPr!Thi*@Uj*L6LPM!9mr'4R4Ki&ffEmY'f9(j
+
+#NI&*kPIjA!rKd4he2fhqM6P4Y96L*62E2aKdQ2mjmf1LcjY28-HG),N[QRH&TrM
+
+rU$fqC0Da%5+Q`J&HfZeUrmYQT9QG'[Dr![+(B3P4Yerf8EIHCrdR86`rpP'hp*@
+
+,`,IkH-'J4,5Yik0Yf3AhJ+$d1lS4lLe6Dh`Fi13DG[9G&-bT2[i['rLqH4dBqi(
+
+QIQMqRHKIcH0%2c,cE)D)h,qK26YpHH($q1,XhZ6Ml*UE[#IpRjSIHXrf4G[HiBZ
+
+fGAfd,4hr`r`Nr(YIA&h2&eIApp'dh[AqIq*e,r04Y1(hr0pUTkI0EZBNSSIS@Xp
+
+A9pIrREM$rZr0984r-(p&0CGl4#KDlrf)94c5!#mh$!+1q&)Qi')[B@*A",cGFI5
+
++f+8"EhFF[66eF""$)cjXMJBKkQ*6%*ICJS3jN[Te!%@l[rkMGp%Veae)-*C[JK3
+
+[PV#"30l[+!A,i2C5kYY"LcNRmHd`(ULk$9V04QC'hAT[#NjP#eiJkMB-90d'Tq2
+
+!I$X3GIZC304Y*K"ek`6Uj3DVc-q)RQN@dKU&*K"(e`[3Z0ie`CRQjpjT`E2P'L$
+
+!dDA6@EKq6S#Mkcd42-GFaRaVQ$J9R#0)$2"[kA'H18+d9McZi(aH9[P"f"DJDTN
+
+"68XNQ[D2!CSfp)1,G"GS@MVb&JHjGX&XX)&p2aPX0,p-iJd%(9`("!'DPYaQdj-
+
+D#5if[r*'`Rm-YZL1,f((kB"EZp3lJKI!6EKS`DAQ%AC+42ePjMqC@*5Y%k"X[9m
+
+&9jL2d%0IcJK3YURh"0hQ0mRhN!$PlBc8qQ!Vr,XqA"'JE92A"0Zi9EX'9'cA$I5
+
+CpiGp!GSf2"U)AqX%SQP2$p#dhJH$3B-q#BE-QqJd,,GB`8jFcVC!e1`TJDMC1`2
+
+8,(AMmZ*2X-XF#Vm4l"C0'Za4&1(0K[mDl08H,c5hXN8LpRmeG5X#F@G6JELcp`H
+
+iXkRl8f-"Ef1NaP,TJ,FaNQRf25QD,mLChi*fVNR)&Fc64&0QM'MDr"I4$1r#Y!6
+
+Sf$pkcq-HEpf%+#dr(P`$im"*`AldV"Z8&)fS@MT@c1AX'Tq@A-hX$$mIL+VpC##
+
+UpVB!9F[ZQXSmXd3r#p#dXCX$hVrimFhd4GA5Gm(m1R`k`+'PLkKD%k"UQ4"[&Mj
+
+$dblTME1$Pl+,XqPkSlND&"#4ZmQNb4'"#2&Tdi%Sh6592+F9EJM%Kr8$I&JUAQD
+
+'3FR,8B,hThS#AVa`HP*l!ekmF2BbmqfkUcZBiG,JP@Lr5e0I$3kCPb@qkRdfH"8
+
+[q*MJ6YM1$`lV,%G-5qV&!@jXmXAKh3'k0K82ASe$('G[UQb$ejKEf!`4XiQbG31
+
+8,@Lm4hb!i2AQ!e5JDmRGCbiQZTmHk8!dV42!'94cEm8ZhXc9`+9-*CV@#G5*$4i
+
+`R832FQqd+hL)UAH4ID[j(G[KdSVF`qEGi@Q"H,'p!9iXGBpUhlHE#jQ,YlI)25B
+
+X%I`Yr$MQY352keEqc[`qI$,J(LVmp`!IPPkmYdAGZmh,`#BZ,21q&rEE"C1J@kP
+
+8h4Tm`2a&l,+!0`+1AKDl*1!#kZJPE2V$1Y-6A,kH&U"BbAh8r!(H&#qf+a#pkJ6
+
+S9HV`BS02TLHkUj9Q[9SDQ+j2*#GiF@eXS9CS6!59kYCk2@a@Drf&UDC6Mdp@Qb2
+
+&kCPQDQ*hXC+[cNZre-61f@*ZIlkHRCp)6TDbZIhGe9+eRTbI+6B,QSVA#rQSCVT
+
+H+&3dPCJXc8E9LGa#0UT*Pl26K8ScUmR83U&8UXj(II2&E+NkI58cafFEKESN%[P
+
+#Brp`YYRANjMS)4@YSUF`9m`9*"HI'"SGEaC,%q&SS6PHkpb8'#NdQY9kSA26XYa
+
+XIA5KXE8bYiYAjG+&bYaSS64@VAB9Ta-NZl*jmZP'IUJbA*d[e)HQTP+5P2im0DH
+
+jm8Uj1PZ*FMheiKacY$EbYX03AIXQLYAZNF,8i'`jN4mX&2,peGcq+$0@,"I5QYP
+
+@VHDl&JUTr'JcfpaDb8k@#XPmGl-8T9,jhI@L,8XaA6Drf+)q9qr-0CNlN4rT(1M
+
++0JVj-$p8+e3+q9Kf*0pG*YaG*daP'`Z9h&LpeP9X*L[9RE1&fB+NF[R#h,C#"AK
+
+VDU"3ANba4&)*5BeA'J@`hU2SLlKKV(#JZ69IE%l%mY9H5%2#E+j!1&UmVK$QU`V
+
+B)&rY,*A#E$i[9I&mGD`k29dUK,PQT5pAV53RYXi"G*NSRC[*eVZVqF*!YV%rYEq
+
+`F#bAc8pfj[0eb5A+2GAjLQ6#mRKYXG0L6B+FVFV10UYA&KBNPjbYjE00(5@H,m)
+
+2dLNVQ0&1P8*c[PVA+Y!N!0C1f9UYI6'aB6'aF6(4SHd+0&[3"5CeRN*[+6ZGC)q
+
+9D8h&*jX9JA-KPL[Rf8Dm-91FDT*)C%ZeQDc53,A@,&BVe#5"Jc#[P"IQQS09i$k
+
+CQ1JYPT6&NP2EXifZf8SHd%re9HD+M5,iMdf0eE10QIL8%0pBY4C-pE$KF!SZSL"
+
+Hcm0VaDQ&8dE(1JGl1NGk*SDlYQrYl0Nk%NaXlafGL"HV2F9kEfNDKL+Kb*KUM$4
+
+j5"%fP3a9`UYpP@CTH2rd4!V#K$(,r6"38R+$K@R5`U0e0P%X&5[6Hp15P3k5$(2
+
+!BlDqN!!S9jVp@T()CaHL6(,Q@*Y8Z9JjPQX8FSZja(@&HV9l)FHU'l1eRZa#5,L
+
+l80JI*ai!-605F&8K@dmb3EG3FAdK@FiHX+R%4(qaSIc58ZUTEZq%&NCcS+`Nk9h
+
+(dqR5B(@`@0V1"TZ&4'Qm84JY`(NKC51&A$0"[29!Xe$*TmL!X@ZU48Lr&0Ade-&
+
+kDDK5@KLU&&)68'Le[L!cKba#H#p"6@9fXD+[@5LRQp#R&!hAUlRiM'6Jk2K-%IS
+
+K&bphCHZ$[C9m@NYlN6P3FATL'&'&0***PNh!cpACHL4b%[9#!b@$bNK''9l+V+9
+
+*$Fr@T`XL&D5$-%iKVfAeDT1p&[,5EVKH+&8"0+PZ*DpmUTbYLFU3!*f#TPThY9b
+
+$iM39G@#4YE(kE#&1h*XY03V*#C!!P+dTP8q-&UE,i,irVmPQAPK-q#0HQfhfP+E
+
+lHZ,6K5LaE!+p9CUX(P#*PQiX0*!!FS,C[Tj`BL,E+%p-a)CkHdHhM[P0T'J`95b
+
+8mXQ*L9UfNFZ@*LB5$CPk-&XZ*$@MI"ZPP!*5QYUH&H+-HUN3+4I+AGfLES6CeS[
+
+k5j3,cASa"h35696CPY(CU5R0A(`XXrPBCY1a6-Hac-CMQ3h(-Zf5#58c@UM&d!Z
+
+McAS)1b!,8018pCDEfNJT,K5G3U08BkEHl#%Re9)c91I9de"SPBUijH#0LiN0LiR
+
+fX!4`'#$HR+R10NLJMA2&FVBdh26+qB93@4jJ649,T8*pBl*B(5c-RbMCJ"#J41"
+
+N+pUTf'A&+l88$MIVk!E)ClE86+0XSBC5385-b0abAU4DV&K&$G5#Dm8p#+lY,eE
+
+fKc*QCDSU5U1ZqS,H2A8SlRKCehk@VTQ"r'+QZlkB'5chPKUDdBfa[*lkH+1q1pp
+
+J(ChG8(DGQYj5Ca-F6kC)kFMj`J%T%iK(1qb0YNP4ChGR,PGS01M9fEfYATfYpI9
+
+SEQLq8MJ1LXdfhQ6M$RVd&#S,!`M84QbU-LA82&FYB3q`D5'9b@aqS+G,G,6!"-K
+
+!mNQd%I$(&@M%+[3T0"+jE,h3h&kYlSIhTfFN%5[L005EXDE+"N+CN9#90D(Sl&a
+
+G@$Q4+aAhMcDK&fJE*S`QdP3A)L'B%AdHEaEk#jATjSarc@`$U5rc+N&'Si[l%'H
+
+1h(k%J3b8flpB3N@ePN!Bjl[UKHcq@+4[Bid#KN3q6ULEP-5`++(N&*[TE)M@dce
+
+[,iJj&&)ZkLNq9bc-D`,!0#@"r0R"4VVT9kKlIEX([&epREJ56A%Z`%eFV!p42JP
+
+*E&9K+TQH3LQlS,j)C$ZP*G8p@apMG3fYLm#GNY3S*JpL5AX-9aY&i5JGE1IfI&h
+
+(%C%HYBfXQl"@heeRr*4UmG*BXBRG%Z9'TR$'dP&1$"HmLbJ*2@@Af94K5T!!RSL
+
+b!pN$LjPLa8ka+i[CCDH`@Y-@&KYf(S'(lDBdK%&aS'PG1I%[DYdSPX4d2DZc0Z+
+
+eDQPK0$YA#1[6&BeVL"MLC#d,eN&jELE-98Ye[*j`-R,N`URT+'l8%,$eE&#V-$m
+
+4dLY@UbMRe#V#304!$FTle!D6iV1&d%0YC,S5`i-JC!&eaE3QQ,)4`c$#H`X+@"1
+
+&X*'Yp0DcP6MJ(UhRKZTq%p@Bh&E!C'J#rNUb9TTY!1%'pU#)3J&LJRbRLVT`E+B
+
+J2*!!3T8J2,T,+2ddZ8M3)GC#`4q9+H!l0S-$3@&3Ep6R0QUd3D2fa'5cZa3T[mU
+
+"AVc(hN(@U!@al+5%BD-i[4ZkLmrP*L(baN##K!S0c8!4AE068Y`p"X9)BSmN8PV
+
+4@HSUl@p)ESr0*D1HhB`QU9eG!j+55AC*SL#pMQQID&*`,4QN-KQT(bbVrk*cGBp
+
+&qiYQM(+b"+`p+&I''LeF+kT'8Y95erlaQKf,E8M645d8NKY!&%Je'qh-el@#@&Y
+
+(p#NP[D0S,'PXaCqNkR0N!ZNc++8#T+jSei0`e#"1%5N"`+LZ8YE8TbY680Me$CD
+
+2``9[X*S634PKC"5T)!d3HV+#cQCp8JVk'e#5$L4LX#$cMKj(Uj*iF+fi!b,dZVY
+
+8ABVqkqk+J),5*(GFa8TKI9LdT(3$$!K)-PZ(HU-"4T[X*dVTF&'MhY*J1CS%L&T
+
+P6"*8(BK&`P"PXG@@[D9SGQN#Gl+4CC,CXb4iHi&T*'jl5iZ#PlDbBaeJC(L"h85
+
+TrZPM+Ge10*E8DdE,0D29XUE5iU3JBGI5e,XXe8L98JeEfk8d)L84Lf!8l")+N9K
+
+j30SH@qdZH%#'NG3L$U@48)h8@#i394j4!6@@[FJFS`,TC+P!Y,KP!QQ'L"M)eQ5
+
+QL!UNUe!"F83&-P"%"@5U*58f!Ac*U[cB9(dANM-j98HpC%@XK92BR%#C5Y%UPV*
+
+k,E&CU#Vhb$k%I,T+r4@K&q!5X9Pr3b"K&bbG&5A5*3*9Y1LS#kA3"F2KLI@8Dq,
+
+NjQDU95`+F&%T!b88A8`5M9T3+BXE4)4IPCGBR('+"l,er8RY8DM2&I+*5RNBFF6
+
+@k@'9+m)V+SlPaE3Y%iVr%ZDE832X0%Ylbl*)UlQk"8JDTlbVQUhRaD"*cQ3EUJG
+
+hpX4)p3k2*fT)5ib4DRdC%f"A5PY3K#fBQd(H5pF-"a,&HVA5X,A"cUfP!Z*!DZ1
+
+iFjamB'J@+efcc5DGYme8'me)Y#H[UeE,Je8-PrQNU&Ge%#)Kfp9924!T@R&0Sm-
+
+2f##15lHjJd3`TD*3VL`%e*`Sb'k$+4RDce9V#ridGa4D6edF5XQ@4TS`)jUjA4E
+
+P0CSGI$IbhF#hRHrk-$XjL4&G5@&-Sbr&GekI,&@QV31A`Q#ZBBdfF*pMCE'F'ck
+
+G'SQTr2"XXh-qZj!!Q1*`S5b'ChbU2PlK-#@IQUU,PB&C@Ua3&*R-SRS"B@3ri,[
+
+2P[!DPQ(fli68LMLEZ*!!NYdp8kJAiMC65@N$jXI,X%@)F([J%$BMk-DDMFJaDN4
+
+@881XSX4SNm%aFR0KrrBa-B&$2"GYKddSl4T0E8G)ZhM$@MJN&JdFfQ'L*U)6#Qj
+
+Ur(+aN3XaZlVaL1,l*r038UATLrd6C%X`8+!ZJ%DG-AKXUMJGbijP5rZlSV!cQ-Z
+
+@LRNZI(*lqVN[%MT*e`&G&D*3RfbqVl)AJKLDEBCX$rTUa)D,)Jh#B5',CMh'a3A
+
+q3Lcb!!48iK"JQ)FM3hS"%jr"r"CI)*jGe*H0'SDAb)ZDq1(UdXLp3*G)f'5ZdSa
+
+QDF4*E5hAQJ[Ld`q1&%SK"4,(b%Y)QM#B%RD0Bq6+@8Nc0RfG6"4H&dRLq%`[J**
+
+%0'bcMR(5Ab`R'M1J3PK&q+c8$Li6-09JY5iF3NCmNP`KEShA6BZ*$M4(0pbfj-T
+
+Z%I1dd9b8Y2QGd)S#1Vp6p&Sm[p-+HDP8idkd46YR@`Gkk[-95C6bIFebHe5iBE&
+
+3%PUi)5VFZ&JS#5hF'"9f,"C+3JXl3YbXFJ1a1#N01%9!CX%0@iIkaGQ8ibVJhPR
+
+*$fIciECkGN%XT,S+SF5mkJ*3RK5c+e)*N3G@aGM%Z@b+%lHlQ'r1T$4PS3mTCD2
+
+8XQL%43FZiLXQa2S#XEK8$@bR()Q%-S%HkNaAKE`P&FkS&iG`L-jUNY%dFPhQ#j-
+
+PjMS2&"Yk$-%"Jl#4%"9Ze@)+SlD3!*@MLKaV8b8JZIJNETJb!pkF&UMFNB*XA4[
+
+(Ul#KENaPUCEJi8B*-9)e)EFLNSLa2f%6D'l,TX3a&bcX("mE'KiDjTCK5XjCXV9
+
+%$ZA8@3GNR'FF8(NF5!Q+%F4d+6k6FMmA$C!!NV1"4HL8)$6)RG-NjAMaJ5%kQSN
+
+4'$R$1A@)a5T151I))m'iM+4SU2lSA%(-B5d0Cb,j%mj&F9a@S@`&[S"+S',G+bq
+
+)X0rGSkBEDRjhMk8hk'phMq`'IdP5LjiqBkSk)695Z&C6k1kKb@[dYS$BAL[3P+4
+
+)4-ZH&c-GKV$BI!84lH6%md6(iiK0&H4mB3#C)j@&HVR4%'I&#ZIiA$mAMZ,X6c9
+
+k4U&a8Kad!!m-0mj,1$U41dI*U0XS#C&B83)ZNY18QRA+*48*V@AD8#ae&#1A(Kc
+
+"e,2P@!jaPbmNSK0&#)+$#Kc1i&Vj'abaDb0`93Vc9h'rPKcYP3d,@mE,-[T!BeS
+
+d4IG#V6lE#*'Ek[r-b#@1C-*jL*JCmCpV#jU*9bH[d83UUeF483kT*`F-fJVd4"P
+
+J&P@J3-GQd-BcLI+LJJhQ4Ehk4*@`(+P@NTM(5Y`aF4B3+&RS4ZkJiJ91#%8T*b6
+
+4+mFpJG$GpN$94#`LB['dT9ZL4bmLZHZ+l`I*!SjBT#Y#+%fZ6c!FKTPi[*EUaCZ
+
+`8L+B9km"M(&d+JjeFUIb580%*G3XVS2%kRLV'q&hGijZ6D!X)f-k4EKM,1+,8+q
+
+fN!#8X2bXL-a838ma&BeDT)T!%K'f15bUc+TfL8N'%X[0&()F(0EhdkkmHkq`L3`
+
+5N6(D6F6FG4Y8Zj&)GJp8j`V$AE)X18EF1YG-4SHB`h)(PbYK+kQ28*RMD*!!@ki
+
+'h1*I5`PJf+BD*`jq%*I)4a+kC3!JBVLBk`I)1)ZimrMaSM*MMATZ$jHf+1PkY-#
+
+iE&b)*@D23k0&lDe@#X)`RIAXC$(E)NUfd!6liX!h%YXAL5BfPHmYi5j2bGQVpH+
+
+S%-N`PHrQZ)3V$AS)HA&a#0#%FrhkE+@4U-bL%jTi-LLJb$),5M2i')JjLNL%h&'
+
+4D359%IUP)a+05ZAZUcBBPFG,-pEB+-e%+if0E494QN#LS,D%+P&b9P5+ba#PBK!
+
+4jhea29B@pkQhH!"pdpfX$L-R25iS[G'V4Z@QEHXeM(%+I0%ZQN21Ir8b,fQ22"J
+
+`4-))K)1LA&,(+`f`,BPQH6i[&DQT"Sb&%iJ'5$2)-DC$`GB@F&jLA&%6,Tk*5Qm
+
+3[hR,q[Ee`E9UGXa@LPL0R"q*0m6p9@irZ%(-bEd)bY(ZY,&34V'(L&HPAG@,+Jh
+
+kaKPEM)Ni8,i5Db-Vp,k"35U0T&kjkXf`1h4Pd,pG0MQfP8M-NlSBh!J)G%SN#l$
+
+(KUEN5T1$)ID9Mq'ec$B,2PGTGBrL3'ddIi&MMQAfY-8U86Rm%28ShUjFXBbVN!"
+
+2c(GR5k,H'l&58lb$8$K@TKrYP5jbp!V0PNH'K%a6LNDiN!$,el"DdiXHM!8pmi8
+
+m%f0EK4D3!-qqR*i(LQk2br38GPm9e-U*1hj2$V3&J`2LRQ&*LB,!4T4Y#C'`K#Q
+
+pe)UmkPMNHF4TdV8!k1+6f&$La!CFi3c9Bp(eLPkp&(1F`aE5A%6$%Vh)14J&a5(
+
+RMdNK@RZU#"$Jj@ERTP!Z16Qk5S*+VXl+b)C%U9UCeZ2AH1mS*`MLA@iAqaI[QM(
+
+6fr(%&d9EQLYHMXG(Ci4@%eBhL#(''CLFL!9bp,ie0M3U"hZBcX,$U@bTfB-Q%T!
+
+!)HFJX0$kSZLa2(G0)AGF`UFaMM!*`qTX8mb+*0F!h*d,!Q,4mAJS*kA`Jh8L4A-
+
+JP6NkkZD%)4*RXJaU+f,FKIBQ#+f)G!cU5Y8m0G#XP[d5U24iJ%#Z91A%6kCV4*H
+
+P,4'mS"qp$j*dK#*0Kb*G3,'DEZZYkEB0d'-KpSk+'CXF9h080i$f&4886M9fUL5
+
+T91[F6i,b'12*93)d-kbASpJM+#qS2A,ca*MXhD1+Te#9Nm"%*eC$FdaN'hIJJS*
+
+irhDVmC!!(e%#+)`f'ceMiEcFpm2Tf8PB44+jdRjPVYMmB(9lXHR2%l!01D*#RX8
+
+i'GL`D90U2XYp9b45%e$kB&N0!09ZFNl)56LD6B6@SMqGMraT%R*PJ&-5)G1b$QB
+
+#,ak)A!%(`NDL+T(A`paSA6QC$`8Y!PMeqLA"e5TAqq8m6PqhU&ValqXpF,2B9G&
+
+HI$%)Z4c@&ad!8JS@A"4)`G#S)!A!XNri44Kb9hHAM"Nfbe-LM',68b*U!15)A!D
+
+Q9)Q!BUj1V-d(T`GLQc5#dHlZNAaFEa8KlrL8h#9[h$$*m$PV0FZV%E[&K`PVeBB
+
+S)c`Sk+$*daEL&e5$hXjqP(qP+Z!Ah5$ZFJ31EfclG9`84(F"`L&pMAUf8"*HlJ+
+
+m'2eTp0*)S4Bj)XX%9U0M!K3@PS,L141I&e5f4*LD'DrXVr"b!@D+8NfFqQQT&rP
+
+RZE'B#fH!I+hDp-[F3(*hd-`QHJ3ciRdX%l8-VSEd$B'`XeB60Ja"Nd$AbjFAiKK
+
+IN6DE@[5Y-(5fSGb&BRJ&SkDh*N9p,N$XpZdJ-jLLB5('U[0iXqAKDSe(&D!%qll
+
+%-J%I5lH8SH5hRC4!BQbfcQA*-S&%S64GR#hhcak)bFR$eP)bSN2TP"*["mdQT"Y
+
+ALBjm"lDjk#f&b-+44af5mi+CEE+MG,kD3p0BBa90bY-FR,dJ'%4841`KfQGNL9e
+
+5["D#dN5aS*RJEBlFK%RXLa'*3E8Af'DXIkl8$JI$$@VEU`U+r"1j41LVa(If@28
+
+-L4AQXQ+FM+Ka)QH0l'#)ii4QY4YA3%`MbfA#`Y%c(5T"4!#+b9qXL%-5&edQQL`
+
+Cb9%a+Y-fT@S%Q3Udp$TBbBhk&,*VdE")`Dc04PGK#U%Hbmdfi@"RaN'`EYdp0!T
+
+fqb%U,!-*pHKHVJ$5B#"k!S$PH[Q&FVJp`UDiI%0bP+bRYd9H(SJF6R%NqMQ,%pp
+
+T)c5l6*HlB-9kG18M4+XH&!R8GR5q'cN6'pCcCec+GDY`aeEU+ZD3!"Z#$D[fLef
+
+&E2QiHZQ@miH52%r3LhV[&8QGTKT2"'%KiJ`**Ul6+5F13&AML@A4$EpRNch9@F!
+
+MhR4,*(E(#YbRLjd!feZM)L8-,Lh!IT*CV!8KjN02)ETd6Jl$jmhGSRfA9I48bBU
+
+D3"(+i8*H$5&FPQE30c#`Y5ISlYrD1D)cb#dBX!a"Lk`,,e#FLGhC1PGG$A9pmV1
+
+ehN&42Y',)q*+L0QPr#GU+&VG-XX(eTK5ed[0li5q,L1dJ'FKKp6k&NmLRa0T,CS
+
+*G566L@qK"Q!#MV)-9Uj1)K,N-J`59L8%-NAbTZYPZDHbPS5pUT'c@[%jCUHc*48
+
+rmY4'LUXSr0XX$`!dBMfUHF04GXLC@l"9q#3@)9R0A6%C40()*U2M",Ae**-8@bm
+
+k'[$em$`54RepFAN63J`*Iai`T#ZF[e6J9S&N,,pI$#!jV'I$DV8+ZGT,#%`fpDI
+
+PL&1%YlM#m*,`eR'F*hIV$EaiCU*m8&f*Q8*TMMF-FYNBIJhb@Tbq$AYLNqMQbPb
+
+m,#T%&"$(b!*S@5GLLp18-JrSL"*Nf5`JSFpFU(12SYM3-bDDCPK)8Q4dCr4B#$*
+
+DXPEmN3hdUD4BBbBVYh%U4a[b-Nq,fR(([%4IEC9+GG%hlK5V+cj9'DS*iiTd3'p
+
+'erl"U,J1mA`IS"(*(2PbDZf)aKRSkqN6Hf&%C)"F(R#6J964kjADE'0Qk4$,fPe
+
+K0eI8`m@+p4rJF9pI4B'cl@R(9231J&V&kMaJ1f!q*"NGQK(3a1A@YSZfq)CJ-5'
+
+mS1b@&U)9HeckTZ4#3jpX!@k0SJTM-$&HLmi)3p#J*IL"F,Nm!4+LEX3$A!BLCFZ
+
+@jZ"Kh"UrQe161!HLZ(5B[&h9DU5%iR8j,&'P`LfRk1RdI(dDfb`5IM&p1UJ@jQE
+
+fLfq6c%HU3"31YUM#"JM,58Md@*4NZiI(,DB6cCRCmU5D#k)20Zc"A9Hq%r%T"c1
+
+mNC*5CiCV!0#4P2[$`Tb)%P(19me19aZPl&`a+kTQ4lD@V3M(E%-VCLX,b4hE"VI
+
+#-pKNL@2ZJVJeie#G%1LQpJeAE[A&3BRc1*3#+#8FYhKZ$k[Bkb[d[lif94"26P3
+
+@2Tq)-A'bj%ULIA--@i06S&!HjU)L0U6J5ad(AeG5RUE"qFF`5&Gi2dI"*p*$&%8
+
+NYU)h0L*H,NFhMjbM0-5+68Fk*h*c4%SA41TEB5i@-iE1lRTU(2J1BS8$U9"H$m$
+
+5`BUe4hrLB'2JMP6RIH'1)*IP+Y8I'aRI+UT921jiIh@MZV*q[a!2@"UG,h"i&%C
+
+QcN,!44(qGb5&QAUClUU,bm(pBKX+1248CA3X@Lq29p3aY)%,R,,SApXGjUeYZS5
+
+4h8R"1Qr3d$["5RM2#3U2c3qV4"[E#L"9)f(I4lH(3NX-h5RRNPcL#RP*TmL-i#`
+
+56eQ%8*CM#cQ58!0#0)[DA3Q""HF9M4NFLEV+6ldX(*d[0KV*EYQdXM$q`fipYBL
+
+VBU0A1S+GYA8Q4VCe4Fq[UIYJ@4@H`DT*U[H`pGTCf,GB'41f%iFE5K&Pa&eMT&K
+
+%TBb+9HSYB""DUd(FQRNGr,M&)(J)p1dZkAp-rNEQ)U6E)Y!BQba"(X)HDE4R!AF
+
+m2bD[F89@`mEeQ$9&[A8)VF@Zjk,6[0-KR(C-r&DbZDTFZb"Me1F9N3ART*!!-Bf
+
+PCbMdK%#[%6LIe4G&F#@1Q4+UP+ej(aFPU,F`aeaSGF+baIPX*H`ELLiLZKII@dR
+
+c#0eaEepZ1q4U5H`hYATfS`e%EkIN4RV44adT6-[6*DS6SH&@!FQ*-j-3dfGXD+K
+
+IT*!!&)S(&6RELAaM[kAF@J3j)F81m4[dD%e00ZZ6#$,lYeY&J63AAd&2)G$VJ&#
+
+Jb8e+p2D*l$Ub+-9ML%`b1HUF%YdT(+HREK'Ba3B65ekjc4Sr5NQB"0Pm0L!h2KV
+
+IET%5p!T&HI*D@P%-DSKAr&,855AIfG1&ATDAqG3P1##h#h[kip"&!cHhN!#B@Ec
+
+5p2A'DD"cj-V4S(2dUX&ZdD'J4F#K%P9RA-LArHfic3RiK&$mJUQZKY#[!!KD&"H
+
+DCED,8SRdYA9LV#mMpK'G4&j,FcPp&hV5mkj&(5!#a"*5E'H2b*!!!,pPU#kd)Dp
+
+j0C,PERdC326T-90"P0m!9aMC3&qfDB([XIr(Z1B4PJMP1%L4aV'#RMM)e6Z["eT
+
+S!"*%Y@!l8Xf@9HdaA,D1QaAD#lLi!&A3%*Fl(ARb6!pB@I1LDFS$BX,8pJK0VQ(
+
+NNNN8a'3H2+REK,q)0"B#*ZBK3Kj!%jXV(8dF551X&V(4S,cC1RH#BV5)(cJLp-m
+
+"%L+VQ4*S@Pmih4PGGH[a4e+!8FbTMD"A(#*Aj23-LUUM8,14Z8"9DZRd*@@*6B3
+
+ATJ0V8-0#laX#D,KcNmmc1JZKA!&"Ujb'@`Fb)GC3G$l,`d"UrAJ3"(iR8iQK)Lj
+
+-VJF*DppkdQfMU0LCS!BT!f8)&16+CPD-UQ6dR+4B"PDaV&m[GUB3"dG5[#RAK9c
+
+26SZ!NF5m+KQi9D4l#&C%V#b*b[j`P(HXDK`NUl1J$d(&QM`T8-R&1')9FY$R#lK
+
+H8B1+&pl%G*B8NRiKUHGjafiifk-M,rE"h[4T3e,fA3ICR,d!i9N*kbG%,fkURa"
+
+KA-p1P1X3A5(+9%4-!Uh%25"R&jl`)`6F,mr-35T@bBAf033Z6U1E,r'BScX"kpU
+
+QFKbcX3A4D#(2")JG)lESm8IGNN+'LhjbKEe&#iN2&k+h&r98Lee1*M'T1hQk6Ji
+
+#BA9pZ#"%(iQq6[4elSd1aJ3LSb+`eHf8'lB8Ghk,EQH,R&NGp`C#HkZ#@laiI"A
+
+2X5&4,DRSrL2bmLH9Kq%48G$GXdfHJSYXV-Jmd&[-%N2,eCAFBNPYG'mNj*849Ee
+
+N"8D2eNPP$0dMl!)*L8Qbk"b-mY+R"DEFL!Ck4K'14$F6eM'!I%2m-14$*69mR%5
+
+L`c6V!XYlIrVBU%LL[H+b-E5rD#TXqj1T)2F0dE'CRTVTSN914fj"ja4X%3c*YT`
+
+cAG2+[dM`q"Uq,H6Eq(-)r28q)hm53@0U1PViTde(A40I)Hr0ama+DQ,%UiKRC!E
+
+U(HT2P4cIpAch53eaL6jVL'@110qeI*0RZXjDjZ-2,cJbpcUq&mUFa-q,kV4AN[a
+
+'[KhNC$HRNQ[RZi8pA#,l)@lKQiPfGB2-FMPp9YVGZH3HYlYEh1YUDU4(bHj+[YF
+
+YpL!hc2I&5lfZX$@b`q@fAj*qjpTplV$lSSp$hZRr(rcm[h%VmAlL*jEb9H)DZcb
+
+Ih6DBF3AIY'$Z62F'bIR-[h$8[8%`*CL6[3K@AX,h+R+E"8X@-p,hAZTHb[G@[X[
+
+iTTRV,kME*4JP,cX@M!Z'THF&I$IBZ6EBZK8@)keRHQ$(-pG&@(#Nam2-F$EIqjR
+
+V(2)pj0l%pmhNriSH,H3HX&ac1Yrlq0j%lF2X8lK%p[QSh@HFfXIirLhI"EjrarG
+
+k[ZqNaehd@%lZ4Vk(q+lPqhlQq)"J4rC0lJemEk2Z3Elhf(N1X+pKiJr`hFIh&QB
+
+j`qj9kMp1cjGEr$RN2QTVfkMp&0p25crLfrNq3ZlkSqle[b6h*,fq`IFLFTh%Rb2
+
+qQZbCA%*k%S0Cc@rLbpqr8-jkLMihmjhPqa"jPrKHBYQ*BNck8,16l`h8rCUk$$R
+
+"6arIRe(cAZ*2m2dYApl52KScr!%VYKE&,R'XaMqi@Yr"RkL*QlA'jaA"4'+6L8G
+
+hp@eYY95b&NY80r%R-qTYEFRNFk6E'[lP3I$rp@ZAIM'GZF+6la)l*NkFV0@Ur#H
+
+,M4XlQLDaP&rId@D5ar,HK[@E1NcUH(jM4hZ(54r2GkbrT--X@qThmFB1dd)qcQk
+
+ppSdAGjM-mHNfAp*40Uf,Qpr3B8jCc'hT-+IDVQlljSj9jM6GeD9QZFA,k6CHB@#
+
+)@QeclE`DQillf#H&YVBfrYH8lj6!!,'EhG6@HJV)m0e'V5eCZlCQIrph[r8mhAr
+
+JN[8GVB)Ek9alEXH[c61BFX2rQ9*4TY-YDchHpb+cFR'IS13-FLZBZI92"a"YE4e
+
+AQ&A8,JF6QdakbHjS!ah29"3)@Q5'e9(@SZ9Cal-G(HE-ieR3mfbbDh8[k4-2Ebp
+
+MrT1[FV0&'+'0EUHbQr5aGpLSklM9R%9G#p1[0l(e"cS`AMT10fHIU0NJ08I0FkK
+
+*JadUfU9LR9PcSXYk2*Z13A21b4V'kEM4R(ZbKR%kEM(RRDaKS)j@XrCN$324qr`
+
+reA4!R@CG9"2YBMd$dHHj*e&c`I%Xh(6Krpk*CblkhcXajRQki9VL&%9L%XbZ2ij
+
+-'V5Ia1Q'iePQh+KFe@Sk,0pZ1Vi"HQdqZCf,6f*kbdP-Aa)aTh,LTSiHmrbPr1D
+
+14md,PRKl3mHVc+A(@H@%'G6a6A1CEZ*'FlRLAMDG%V6)VlHh[m2mfIr8pIDZAdr
+
+G&AqUNbUYkic33Cd(*p3k(M0G838iT++Me['NkEEEd3UffA1XJbqX8HX`@ip03F8
+
+'UHJpdD0$+VDGU0JL&GZ2)4lQKLaUm'lI-346!kKV(5Qcid3I#)R@jXS6E#(-49(
+
+rL4VK0fS'6Y3)$e)cH++'HD4Qk%40,lq1VjVK2l(8HL"[G[k[QJdG[c3MIf)Z''l
+
+-M&,6+P*PL3XrBXC1GK*q1Xf-Rk`4(X-Y1&NM((b&fAeLFZAU'mfHNpaePA,$Fme
+
+HaHY&aYr5IXQ'MZAQK6BIY'rHZ!9ZZ[S%)fj-GTaYAU3G%UF)NbAjie3[2XQ3!"-
+
+RTpbhU1if-iV*NRfD69eE'a49&Mf)*`T@XrS+FP[E-l4"Ve9Zd3[*re0PRdqf9D,
+
++a$p9"-'#ajpCeVlA5XI&pc#dIq[*9jR43-q)TSK(pKXEN5k45T*(R,@$cT%qINJ
+
+YAHbdpKNPfd@AC#[Y!de8GTK*UfecLfS4cC!!9baCEZai`K5@P168NQ+HeYjj-h1
+
+Fqp%#1dcaIfQ"DjE`pM$qeD)Lh`!6PilVGFfAPhSP6@8ababY1&dR1YH@1MeUVPh
+
+Uj*MkdXBD*l(I2*jPJl1,I5##ZH196$H[A#ASdd-A&1QMjX#L8MhaDLhB@9!F($A
+
+A,8hpjdXiZAiTGm2a+CRj*5FeeNY2iZJ9jXD612SpIhci@*kG2m'I(ri6GQkfhXS
+
+Y%A2$Xr&)(F#d+mbYGNZh,8h9h[&cml)PpqIP*e43HeI(LmeI4"X5AQ@VViJBA(Q
+
+AQ6FR3IIYfP1BPiU,NafhQ6YddZ[0+cAqK6Pd%VH[@X,YHHE1*Gb@cH%Phi9ri,E
+
+Nb0beK05lPr$dkT1crHA5E+jjcG*XaVcfK2T3IC3dVc[Z(BLHT-Xp9TfqAZ-HFkr
+
+'EcIhD5ICZlraNNXZkI$0rFFVe*h!6G4H5I2'*85p5@X1QMIcTj%Z-RpPhP)&2SP
+
+HFFI%,p2Am@&bmFY8Ub6jTl,ak,PmG8FHd2lmUjBrrHYQFq&PpmEjMb$mmcEqiBR
+
+m136p#dMm[@Ap*mSAA[Vpram!!!d)E@&ME@9Y,Q0bFbj[Eh9d4NBTC@jcC3#3#G[
+
+k!*!2%BFk!"(,m!!3-j-!-!#Q9%9B9%Y"5%`"!+KajRUSFHCZ!*!(2!#3"cN!!,[
+
+A!*!'Ki04YI`K6j!!mrU!+!JcB6)M%YEbqM,m)4pSVEIU1J0e5NU+8'Lc'ia!QZN
+
+*BlFRd#dRqFdQ`[d!N!2J)#!26@PZD89NDA3J4QpXC'9b!*!3am3!N!0k!#`"%!(
+
+Z!*!$"`!4bdF!%Hr3!"!cN`!4c'!!!!-!!#m!p!-!QTVrNlG0kb3!N!C@[!#3"L0
+
+`!*!+fj3!$3YYD@jT,QCTE'8ZBfaNCA*'4LPPER0P!*!*(3F!N!m4br!!%FqK!"(
+
+,m!#3"&4&@&4+9M!a!!#h68I2Yde(d!#3"JCf!*!'!Y%!!*HB!*!'%E`+6J()!a"
+
+N!$-M4`Rq)LYCVbG()i19i4PjGZ+226PQCq*M*hP+''%%cr!(M+Gi#F1I&m'I86[
+
+#b%V3MeMJUqm*@aNj4Tk4C`3&M,!M++'%!C!!pB"p1rammM$!Ne*85UYCVNUFT9*
+
+)`4I)1jeDCA3,Z@RJR"``8jEN$`5%RNXjRmM(5UGPPb%m28r5jAf0lDaiYP0&"1,
+
+mTYQ,PRKR3d+a9edTRCR9B%Ea0XS$4YIl(8LTY"@hPjJ[T+3Bf'KBKUm5R4&`[La
+
+'94rR`MC3hIHhM63Y%PECU[l-4G&*KGHI+%q-pN20a$aIIT-LYXh*k5Q`I#%&jBB
+
+'mlGG48FTAU,pD%U2a9-iC#!qQq6J4I'l'V@hccF&YL#R2S)I"0U%6H-$j45AQ'3
+
+ZpK"`bL#"miJSIP'D&Vh"PL9aB9Bp8'q$YMH,XF68rY)Z3k,E'hK(8k!IbVM*-`M
+
+j[TB#baBK[QqI)pEHmG%4bGDZH("Q(#GPXI*G%`@I&Y`@4Xp(#!,)UrHGXMk%GmS
+
+Z69aJ@ETX$GUZdGja(bK1ER(EYKrpqY-Nf&ITUL%',Y4B*@rL65E-HPE`l[LN+)f
+
+qm8H9a6HSEfca[@i$LEik1fUrfl%0[LPa23A0'IULM'ajI-5NANLQ)-M!YBH2`)J
+
+[6$Z-M6),)F4m!L+K5%N*59fA+NeidQ&PZM+$98)qeY#JBIS9#"8r@kL@$*NCT)E
+
+fNpFr6e6C0GJ#$DY3*SKL"f`,kj!!5"!b4pa9fF#M!)CQl@Q62`4!!aJ4V&f#!Gr
+
+I#,4)iEYSQq"I!'VFcp@de'rDcAhI0Pm(6Zh+jLViTFYcE+j26Tr3p,[qLG4df[E
+
+YSf%cESGql#DYKXZahBdK0M0EKQGNa+dD5*!!*M0ZPe`d3NjaH9)FrLKQK,X#142
+
+khk-CGrZeEV'ahLLE8UQGc6EM'PB&Ir"4BFBaG1b'iD)P#3)d1HRBELhr!`#3!`d
+
+-E@PZD5j`FQPZG#jMC'9b4NBTC@jcC3#3#4!M!*!2%FaJ!"(8aJ!4br#ai,*J9%9
+
+B9%Y"5%`!!+#M94UQ-Dfe!*!'#cF!N!B%Y3!!!VS!N!B4U3Y1!FJ$%'3!F-))A`1
+
+S59jNaYE`P*0M(Q(R4GCMKqG(CB54!5F$I!D`2J#KH)Eh#%#Zc1G(+%%rBS'rl1K
+
+E'CP`-Z&(%-8)aa2m!6[$(rGr$2"`cVlS5SqYdj8I&jaa4LGGEF9QAa9HQkS@'q2
+
+%!QM8@RZJq%'!mQ0qh1H[G&@8ql85TiZm@0jE9BphCiqSArHkZ,P`qHd"PU&&5jG
+
+ESJ-Tr"m`Il9@'edTiBeGj'kV+h%bD8'Pf[M[U*AahRcTF#h``p9F61DFeclhZQ$
+
+,5p,+G[3T8X62)KL"c1HVchVYGc21chHUZ#'LblaDPdSQr%r1p%E)3*qQ`*i)cKL
+
+G,p3QhjHq!B-fZ3bAIMm4(p4Y)d,8qJpP0P)dk#4*C[b"m`Z6j9YeVI`R'i4QlU0
+
+9P33dqqi%J0#)c&hlmN,RTGNfZT0%!$Ccjk@TL3HNYB(+9qHlh$%T#rK-MRlh4`R
+
+RLhZ-ke,GH@Q(SM"l%-'4J2AYM&-S#$4$8jcDkYSV*aU#k9$dl3QkJ6b-PDT#q5D
+
+F,C!!3Me0)3`JKGN62!`D0HafTdXPT$fe*iN!E4%JlC3J[Ck3!+"3r*3faS'hF"m
+
+-J*[FPk!fYG146FiQL@KG&'$MC#J3+$!Sa!A%DDZ$e,*hbQF3X*lea-)@jUZ5-KE
+
+!5&SrhSfk[NPqMY!%p!A+eSi(H&YdG`VA"`aGjLj-)AIS5*1US3J4(8)liaF@3C-
+
+deZm6dibATYUfJ@[U5M4peD54)AfmSBK$-SQ`a,bRBJ*Z[!$cfXm"r,(#ZQNSZ["
+
+ZXIRBEkS!+R!89H-aF#!%KG@CFXKq3,h*kaI%TG,E(A)rYiD!e(L([B&CH3YHAP8
+
+E!bQ&,`!XXmaPaS%KT"j29#,a#*D&CX4iYBQDc2&0FBF+44lC-L))`i95*@BR!Ui
+
+K1j*5L188[FEQKML'0S@CKHk-Spr3'G%a+ATS'@RZh!Cf4)e,PDpKNJhSQ0H&URb
+
+iV48G'p)B*D#&"JQHS3RMX'K'(3$@d+KG4+1R`C-F2iIYFQk+Qe!mj+Yhe%YNDiY
+
+D'qV!N!!N0!"D-qDP6G+hXKLNiLAqe*P,L%,R%aEQS'[0)IV+C#`)Y1,*dN&RA4)
+
+d0mk`iclN(*K3rfX"La%`l8$`lM50ESBp%HH#Gi-",!B4*iil#SZS@`a3FDR%E+1
+
+-NCdQSbRYKkFG",-Q-(A,i&qA1iHEP$5Q"J&K!RP(8d&%'`IN2VTe#&V`%NeqmCM
+
+%00[Z*E38RPEDhpcB$*qUmVNE'LR8T-p+D,rJ+-Fd0"XQ"')SYM#[B!PPqNk9G9b
+
++cr-PlSKh,YpNhV&Yh*%YN!1@YZNILjj&6PERAe@$JD9m$40pA`061,5ET6"@+ca
+
+c!FprNcN11!MMSaAXUY,qI1pUii"&32(!K'MZSTFlCfiK%e4"BA1r0k[$jXB)3i0
+
+3Sd,aeqTcVMdTTT'*Dk3Ar538rTk4`E[ddY`ZmZSHT3I%f54H4U0QUY+BK2m1Kb6
+
+'m52l@jZ-r4dZNqk+kbDd$m4-&fqK',lYTI$Za95&!XBT'cI8NfQ!1ra@D)d,mp2
+
+[A5@KeCkf%b4P[(S2hXf0X@QkJSEGH,`PiKFD"Z`[1Re1eS[ABKUDk(m!!!d1E@P
+
+ZD5jhD@jNEhGc,Q0b4NBTC@jcC3#3#@JR!*!2%FqK!"(H#`!4br#ai,+J9%9B9%Y
+
+"5%`!!*TC1b1Q-DkV!*!'(HS!N!B)e3!!52-!N!E44`a1mH6a""N!R'jbp2$AT2-
+
+)2AkDI#h#I-XMQpiQG$1Y)mqLC"-m9DRRC[J!ELAiFde1pbP"2f+"[d(0qNf[6@i
+
+If8qHNp[NZ&[#Mp`QJdeQP1b9d!-!QS9I,cd2m20pVjq)T$C+4#a(HDhMHlkR(pR
+
+e8(48)NA1VQA'6S'Q&5F+#*i*8,lZqqXJrcH*k+6$Q,0[Icp-1Km2XQK8kqf1BDG
+
+4Thdli2N-pCiX1ZeQ-eLEIkr3T"PUA`U9bA6*eVVK3KQ8MiBik)TeZpCEmAd3a62
+
+"Y1Dh[#1cf'2QB@H'2P1CarUhqY&KM3&(NBK6cQl11r#B1R5lCB!H2MPB)T6RH5a
+
+0"-q2aD&-BjlYq(kZ)T9df#$+1e(+pU4-H55mr46#Fb,Pi#b6RH"'*R'imd6e(Pc
+
+EbhMdNDJk[5KM*3@D+kLBiIZCc)(G2qIUBU#Gc)23rl2[JHA+LhQZm+(#EK+1+9!
+
+l[RF)$Kq,DqReEr&I3*!!I6fHG(Z)*fCM[+E%SJ'&Cc*63@!6`jVX$9Hrib2p($"
+
+G4FF(&ECU!PGKJBYDb+Ve%aD'i*D(d8FAJNhlHTlmL3IEq$S@$JU$NT8EeJBJheJ
+
+i*UQPr"UC*T!!$*fXeVIQ6!4Mj5DVci&A8LRCCe9!EXkK5Ji)9m"!+jKZDL*`"3+
+
+ZMhNVE1@l`8U&e5YX`rca25mRr"kN&Z)-Q"1-VQHM#F+XQ1UZ-jZYPjMUFFcH"!8
+
+9k)L0X@$61@KlRm5UKhCCG1(Z"(iXFNjDJPA,9''Em)FLf6S#0pSY-$S!AahH26&
+
+NS9*`&49-bkU#rBJN3!'&4hdA6*[2-K$&1p$PQJ9!RhcrGIc(BDk`("Jd'PBDe44
+
+dUijCK3NqXNma6e9%PMJmY8F*0GCF&#M0$QEE%@(!lH6SCYYAkEXS(I,!a$TN*FH
+
+-4ApNqj+d!fHK[&TBJqekc3,0m9@6EB5qam"jM3kJ'3KU``#qBjHr-h"UmSahNaa
+
+Q"Ud-35D,XERL"&G(GE%p5,EP82b%LklUX9ff`9CAJGY"HjL`-2b`S+V@,j[0YHq
+
+b06$-%q@b#5UNiM6khQB#-NL5AX(r,m&E-[#m*dIR2-9UdEQe"ZS!3pM3X3V6[D6
+
+IS1(``CD+mam!43r3Xfm&2+88+!TK`'(CbSYe"NSQ%FPjHUkL6,&[TbNR62l"U,K
+
+N2r`!FI#@T,Y&(XHXK4'A)B-JH$M1!q-eH,1aieMrSF4`AZlBT*6,Q%X2E$5TR+E
+
+!"3UUD'Sl@fF0M-JL9CmSZ+D(4k([CKZ$C3c1,CS8c*Z-P$Z#adfbC2RA0PN`&KY
+
+PjLZNjNPFp@%&K1YrUI,2rMa0LI,p)#JYDQDj0R3blL84N!$@ehk88M6G+,JBa*(
+
+LCQP$YXe3+R,U14$Pp8d@A5-UMfjS1P,G39h5K'HV&NBccLjll!`cl4'f"kdYY1i
+
+&Y*9&1GIjG-#L$C!!!@p$CL,R#hE%[XRJ8Y#4BS&YYkcL"f@dNV3$)RkdaTNjX4J
+
+#C!iVH'eKZL2TT!,NaLDUc(dCmp#IRS!`@!D`iqXlMiE%X&E-+"e%ABiA$(0+d62
+
+rG9qR$NH')@4023"K%DNKR)d)EmPrV6$SmXN@+5S)5Kr[&4k)bdH*k[5F!AU&G##
+
+p-#B["RY$8#GHNJaR'[K3eI4A11Eaa4!Hb*(i62R)H!EHAJcZ"Bi6mmL+@Zpi(fN
+
+rf@@U0j!!$V)*p@3L&VL`A+LkfjMB&`F5UH$Q@,3Y036G)CpkPl$QjPLbA+iNi0F
+
+4+YA&iFh1M015X@aMXffG3aSH#YheqD3"Lj@!!P*j"CY#RNKS39fZj%jeGp6M'DF
+
+3d"Uf&N(B$S(GRVRQI"3&GrFDjbV8&8FeJhV1i0*)3m&PabPB6MXi$Q+XBIhJQHL
+
+HFHa#AmE*GF+cR+fb[*GFUprb@aCqeB4lLVNl35R`&1X%A#K-E8+pY([$rT@fU*e
+
+&RBpMMbGEB+DGERAhXjP%rNI*DM%rl2@,mMV1-262k5e1*(GDVE!"Qkrb-iNhB$K
+
+F2Fkp9)SZeXTERJp6"1MVQEY+8H+mV-)NE[iIpb%Y,(VAf`r)Ad$Jm'pMBm2m&p,
+
+&%ZU9Fl'AU"`Qc&$%Z4khPAZJQGKid(4fi@eREMm%*h-e05Db*c8pUG!ZU-`amBR
+
+%Zf6"'&EB8E+%e-RCBh%6dINf@*h[@3V*r@C(k0q2KZkLT3mVm(b8a2b-#qU28hP
+
+MQk)ihBbPfbY+F4fC`@%'9Y%k-RdTa*'@i3`pSE9APk@@`&&@'h5TaeZH-FXFD[p
+
+fQIXm[Np[jk%%'fm@IBCYKVM2KIDF3(rGHI&F6J(m,rrlUFcjUERZkk-fKX#'d(e
+
+4SLp!S-+FMr($LF9GZVJ"Y9X(3)-R))ZBq32#ed[0j`9q2LKehc"!(Va$mpN9IA8
+
+9$C@XkVY#)VS-[p2aBCmm+r$$MH6pq&84CB`@SZIej6$R-2ba0,ZLZ'UpK31IK-9
+
+NGKFqkQpEJ)8#MA@@*J-pP"#1)%6SKVcl@%@h!0#HSQ4J--VYE,2[Y4ZiXTXV`I4
+
+bijVVS8QVG3Vjr3DIDpZ&ek8h4HI90q&-mE2dmPqPf`pFjLNj52)"G"iQDBV6+c9
+
+S[leS2@2381il(2pCKIUCIDQQ[e'chkIjq!!A-3#C%kT"dY3M-&j-i2m+'iSV1*c
+
+Vlc`d"VrK!1B2K[1b1!%3'SX%E,(2q(9Ai`9`D#&)ET!!%(`#cZMKIV"@@i221K`
+
+2)[k`4+`X%5qAL&H)!#q-p,'f#8*VXrBdQG8fiG$D*SKAp"f1Z4X(Kkp2cU&!2,L
+
+da&+X+8Dh8!B&$Rl!d8[G$K*-CbUlXMU#D&)@S`jmK*26T@@HS5EEr#C%08++kL#
+
+$M1+#'A2#D'$jE4rmd2cc)PZSfG*UiU3,KjiTSA&ZbIMe*M(qT(&lJaJld5"4D$9
+
+AcYerLYhqqKHap8D$+&-jiPQ9lY4I"0FE1K"I&'pY%b8X5cMULjrPIV0&h&3IAc5
+
+r'22q&0lkYNl(,hSEp4F&lhq$h'MSf[K9q*BZ$q,pGkDRNV`(fCrmr`-!$3d+6@P
+
+ZD89NDA3ZBhGc,Q0b4NBTC@jcC3#3#5R4!*!2%G6'!"(T83!4br!!N!4849K85PB
+
+`-3!!Yde(6VG0[d`!!!&@!!!Di`#3!mN!!!S035Z&k`#3"K`9%3!)(*cV%%3P)PY
+
+RL8`ZUM5*mhTTHLE&lGNXcl`U6A!HIi4&NX)4k8Y*mML"686)B2Y3@8H+[V6$H[G
+
+H911-E)9dMr-++V-%Ui`VC`cY%@&K2VKXXq4ZR6T9`48ViXU$Qc@ECCZ2R8@ZM$1
+
+jlT40G2T)b4!G)R&V%R8UG1$D[RJFT&*'@'VQV+lmXCmN,CkA*$XRi!2)H3iNSE3
+
+M+K4X@5"MU-b)pZNI5DH-C&!mrdC)Xcd#*CSl#SAD!)QKlYdF6@`b8DPC[5F"$%l
+
+aj2%%'F#FER+8i+Z9VFbVNf`*@pR+b0'"G4*1,6Fp)ib`HV)5!)S2B(dhaDF4J*l
+
++9X+5S(F6a1`MQb!2U,l,[Zqkf%QiK*2RNGYNX!N#0TPXFTcXPG!$!-S4rY(@E`2
+
+mI0rE+mEM1I@L*1S1Sl`9qTl[p5H5-M&0BdNL6H-S&(QN%KTT0D@M*)Z'NRSLM**
+
+FC4-+cT3BpN4+D@[RbF1GhcGmle,+N4a5NC+JbbLRbcQGjc+Gb)5qEr&6P$6TI$i
+
+955j$fPFkEIRH45BTRd3CM5,`RNAj"-q5rPC+mhF+*b,0T5BeSVNU01&q)@+FYST
+
+TQ3%9bSb+$1bMa0**Y4TV-5@KTF9)bl#5r+mYRHN30*L%*5mb#V881@JB)FjNaUH
+
+DP#NQ`%`b5K5GpF39",'mI@qN0)%3#h+8N!$53f!CdhpjG2)Gl91Z`#mC'Je+Y5a
+
+M[X*Uq4lNqSX-3I85(Lc!&&,rieT5)UC3Jbql#l@!)2`E!A(`b2FI)40q&b9KA-$
+
+Ncrj341(9J4DceZ4j$B2jqr08CQ[8S8VbhPL[3DqKYjVG`ASb+Hj!IINf0i+Z8!H
+
+4L0AilPMh@RkNHb#cUc[3)4cfJDa5mD9kHj&(m4Ui$aQeLYe"Rde4J6FUcddfPM!
+
+)T"Lb3)aMG5PL1!4hV!I1C)K%m0crEBFkcEAR6HIfXHhhZbp&-SbPjq'Pl50L2Ic
+
+L+*(C8A+SBL4+f`F$KJfe'2-6GHJGE6IjcmlfifrXIr5ql6XP,52bVXp$[-E!&6T
+
+6S1e*+'NIDp"-,%"lVeiGGhG2@!+%r#"Yqcim+RA#@Bc%QUB$MLr1TMrqZHdEd(5
+
+qJMhChJE5AEe@dC!!`N'Z"UR)3K%2XPa(b6J`KlI`f%4%ji66$9"el*(ciB#P#KV
+
+q1ppMECa**[c@pMe1%`HCiQN`-@m!,M`@PJlcQ+$RKDT)FV`H(Keh2@pV!QZ"rK3
+
+)Rr$$@jM1Jl@@cCAJ8)J[I96cpLTJH,U"0GcpNMPF2&)TcUa[EiL04TXHE9%L1Ii
+
+9M3ZKZ6HjiL$I4PQH%GSCA%))+qB8M5LSH(h9SC1,iq-'MF*BCE)#1[ib4Zpk4e,
+
+V!DGB`)BBG-r1ATdeIFrM#`4U9a,LSJ@'V('LKM,Bf&G&2%3*bPe9)VBSDJc,XX(
+
+UQZYDjS91JQf)q"jYdpN3BKpUT*0p$IMB5l4+pqb1--TI'KTAAmLmCjdH2'Em3C5
+
+*beJHjA)De*H3!)'-[Vrp0D1jF`8Q"`$qYNhfk9Q(GVjaM`mHS-akhH5I&-f*Ad5
+
+!l&rJ4JEIaTJ9b!C[B04ET$1`@eYPf(fi0K0jD&"+mpe&J#r[qYkjc#p5lN,'EcE
+
+3FD&rGY(PUa11Nk!RSX48Uk$4S2qBj&lNbL@r'2QcbB`6pMQiHUiN'IA1*fVf)5e
+
+Ff&KT!8$LF0VAQK)h#22QkKLkPhPHP38f3cLT'S2V@qK$-#Z6bI(AHFq)-FqJ@ep
+
+N9qDjhceL@9(Jq*@c''+IF,Fe'XKVU5hR*Qdkp[!DG2%bM!dK&K@(DXdQ)VI)8##
+
+PT`V$aS'D*8q"U)iG3LCR"A5[mM!f#Y#VG56(d9+*%Ql+6iN"(YS&*0b6-JdiXEK
+
+&-1`5XAl&-9kHI+&fCf*Zb"YCX9pN38fa`8(JX(dY`LYlN!"PX3HDDi%Dj!j@@Zl
+
+'8ZI"ZEL@q`L!XFa18@Z25qAiCk3)*mL$0c*l5RbULV6UYqSGDpa#e$@E%rA8pLB
+
+V`Dk@Ee4aM[h&+N#G$Mf'$-49l$(bbd`ccLMPViV8l59T"-FR,Gk[RlQ*V4(9DC1
+
+#jQG[hPQ6'r#Hd0DElLJGU(dea8Jf$)Majc*'N!$9i@)Y5*DE)i)JX&ke9'bdl@-
+
+#[!UUY'V5+PHX0(H5B$BDrjS9I+9-VaTqNa5)XQVYq-chK5j&qm+h0qFl[c+qTmQ
+
+M#UiXQ#kpJ+kpkV@1Y(@H!be&X4a0"9p%jfIT22Dc)Ep%ebAL9V'K()NLcTpbMd0
+
+bF(4*V)mZE"Hp`H9BGGJSI5ARCG8`lk,)eAGbELZ$L@-YapJH-((bHZ0KQ84QFdI
+
+bd*+mmKeT@2TU+V0-M#9YQS2l'"&kU%cQ)-YH"G08$D04*&&bF@Nk"1N''fXEjHh
+
+RG-1CJ1G43aUKCYeJeih+Ua58&d$SS([FlAF(hhAId1BQ"9YEh0KDZ6b@b4LElh2
+
+kHKXrF2RK"fY!D&4Jr4iR@'*B`NC*jKPY[pd*QF8p[4VBhphlL$VVpLr16KMi,m,
+
+23AMiE48[CAQVmm3LqpfP,CS%KFYJi`EY'S&$Q'TKrPNRJ3Mck"S$6rIDTPk988(
+
+9Q"Xh(UmDQqi%@fAlDl45TEPhFpPQE#YAh*Cdke,P16iYH%M"18V-kfLB6ak8BZT
+
+@,%Fm2VL(RiiF*GFLCQE"TTP!5V[r'#P'6RNBLc'XlATP[l[V4!k@(M%QF5YU3'i
+
+rVF$,b@-p,M@TJ1!ZRUTlr5kk`43N4,Ubh$+NF14!PSBV*`6qm6afVm6h8UX9,p$
+
+SVa'Ic9fN3fGYNklrp[D&1HVk6'A[4C,IhqBDMBma8Y5AE$#cCjhb@+G1%3r",Gc
+
++YiHZN9MDRbjSLBBi'j6J8[GZ-[abGZf)9@'UqK)q0l(c5lh+Q-U%ih8rGf06A8Z
+
+Qq'`%G,"ba#SCPmpYRU$-X)pBj[$!V#bRQ0Dpme`rI[,%iq&h-8G*H89X*6-NmTF
+
+3H)-8pXdX8Si')[*B[FDQ94-([Ta@ANB'kk!fS'fmi`XIfH0NCqp@C,$`1@Z@C1e
+
+UGb*RpKPEdAD6Pq9QlIIJi3lQ'Q1YRKU+f*dbCcBG0`Y(HUBUFrL5SS'b*aH4#-S
+
+QBHZ!h8(!9YlCG&Xm6Vh#I-kceQiBBUaJR%[)-PZU)FVLQ'MTI@-&RUk0%q`)Y)q
+
+G(9r!B1r!!X3(9mGiRUeXBhF5rM+NG0$$R8DRJmjU4'4[`$kP8H$TaYd![PM"5Tr
+
+8HeeBj#j@l2$3lqiAd,2Z+RFGi+i#h%`CS8VRYj`!q4mTI!L4SkI8V%`Kq05YIqk
+
+[Lcjd9jU!1@@DkkVfdc!@aT+AKTA)"bLp0mG[VSS`P1RDElFlimXSMR,*Zd-ekke
+
+A2NYI*+'-9d3q([l[kRJh0plXM)YbZB)lPeQlCX9+R30eLTCQ2K6iE("miE+faLN
+
+Mq01YbZB6IQd5G[KNh,Me2R![Y"MCFZJQ,,G[%6i0""RXJHMf`FDIdLPq'`Kl&lp
+
+,-BbiYa['-Y$aGZZeG9Ql(I+jPTdU8mc5qR-!C,@*Eb#FEJKUT!%A#P1rIUc-!Ir
+
+A@FEpHKCdq`JkMHdPQb8MQdK9AkQXBJU%`A)2iZm!JXh8,RjQk$M0Ma+cIk6m98(
+
+TZHY)mZGQB%9fDJFa*cGY,Mi[-64-k"iP*3D'iY"C(K3DbbP%X!&8DE55lMdlb`k
+
+BMF8AES5[++"hZGa9Nm&A(IYP%Xp[XdkRK*P*qVhrI`!0#NeTEQP&C'Pd,QKhFbj
+
+MFNC'+@9ZFf8!N!QD+`#3$a(H#`!4ke)!%F[`XH#c)&4&@&4,38K-!!#D@58(TM'
+
+VM!#3"J1M!*!'!C%!!%RX!*!'Q6e4#ZQq!4iQ6-VbKr`qVamR-m)NB4,MFhYp#'6
+
+iJck3!!%4X-E5P$8JQihmQ3`'BSm%T'V8'T!!PThP$Q'I"qJKBL&bBcm-*31J#`C
+
+"$SN$j![l8-6R65B',`QSV#`8e[,k-[`K(iMk3eiB04Y!8P+U8Tf)eC'[#q65114
+
+c*#8T'cD+"j8dGm5RCpbK6&rB3B,E#D*"5RbAmf-HYl2BcfCJf0I&&bDaUm`a6%T
+
++8JQ&#LN`NR&!PLr%!3r-)Q0`!#R&prM#J$5938HN*b-@9e)AZia`,%8fH3TRPXF
+
+f%V'K1iapmGcQBPVJFk0i,+mDh"k2MdhBcECKZd-HAc#HZl[BMR-*jmVLKSE)(dT
+
+B9*3jMEIiXTq9E,&Xd'FP`jMKk60#LGPmk&Y##4a2$KRSJf46b&e,@4+5Hk`XjPK
+
+ZIVm,2FYYm)FpEZ4G)QLjbCLaiS@KfFU01[QpQ%P+ECK6B4BmlQ#aJ"3,i'[-DIX
+
+fPp(CUjfa#eLmbBE4BR3CFd+c,A9eVA)5Xa9eM+i16PY1U+)5lJF!$3!26@PZD89
+
+NDA3ZZ5jbFh*M4NBTC@jcC3#3#8XV!*!2%HP4!"(ZF`!4br#b),(J!*!+RXLJA+L
+
+3!#k!!!!'*3#3"J+a!*!%L-8!N!L5iL0%$L)URNVN3Q9+!(lf$*fb+VI%CG2hjcl
+
+Gd'01F()NhBbd4kIC#KeSpr[KjqCqfND8(rKAYai5AKpU)0eaSZ-'-3Xi$B6+eUL
+
+QE#Sm$Xa#jaH8E,RFEedLI(k0'YISE!J1%6`ZN!!eD6e'+%h,$&%!mj3M'5DRY8$
+
+5&#lT"3-q0$cQaHDi8b$,DIXSkF+[ADfb`SY#I)"#F$3q`eAU+KJ&0j8'&`JINIS
+
+j44!9!N+cmB3e8EQmRqZQJ%4"Vl#8j#c#c@c'&XM4CG9mJX)&!Il-V'c5QECp(5e
+
+#3-FG(cTaaTSeHI`4ZXE4@lr'`X2cij&%%Kam`qAX@QhK+NYT3eRC13hR0*icljc
+
+ji'46NF8YS5SkMm+ZSV1iR4cC"FCk-0L3!*E(ki%hZNS#NKVMLMf!S$'9$Kaaa&"
+
+PlM#)((Rq2$4FIVkrbI1`bXV)@9@CbleCKR3d[mR8LPkZQTHrI!bh[AJ89fmG2)C
+
+IVV)hl0%rp&MV8"Y4Mk%ff9a2#&AFeBkAM!`%SLEIGlApXkZEQRare@AK)SpTmMh
+
+r!kXADh*6r@$6-+2K*ZCSB-caH0AFjlGGbC`0TFa"TH"",8$Yq`VdEN3G8r#"rCA
+
+&LEcrV(AjrKKU%kVY(qUEU$mjSZfd2D5ZF)-),B051U0`PY"d&QeV$khqTX%kj'6
+
++0$+Fa`0X[Up"V+I8F,M$ePC&@pC(l6%+$E4d,KD,FQ`J00fLe+&EdYVGdSUHaGE
+
+Rk)*hck-!Ee2a5k#BJ+Nk@d*VS'4Heai+JP2Dh0%Yc&8(fk-Gk&INR@h)1pfCplE
+
+E(`U+2)l5qGJQK1!-hK),%qq$1JZlD3bMMh%)M#Qh-$J@S1XYX0ic,!c1$8,eDb`
+
+XSZ!*"RKc`BG!cRX,KiC!4IGE%'3!f#rSZ-feG)'&R3%fKACBf(Y#iLS!$3a`E'9
+
+KFf9hB@Pd,Q0cFQ0'4LPPER0P!*!*J%`!N!m4ke)!%HpJ!"(,m,)JXL"849K85d&
+
+)6!!!QU'YMjkCQ$)!N!B"*!#3"hd!!2I2!*!'U2C4#ZQq!4iQ6'+$2RIB&hAlFE*
+
+(Q#4-FJ-1qi0qR!dbZ*!!"rYK#("KRaHNC`1V2q6hHIeB+0a(J(aC++cP$hQ#R0F
+
+(QVERr*k!!EQMb8acSG$A$rY3#1Jj&)BSL5p(RQT#S51RVe-585A#!F+N0&mXUi+
+
+kLd%JD5)FY"m!N!-K)3a93d)J6'pREb!e,M-!N"MI!!X"c3'4!*!$!3!4lR-!N!8
+
+4br!!N!1'!!!"J2q3"!F!T-,-I,TKk$`!N!8a0D`!N!84k5S!N!T+Q!d!"fej)%&
+
+18dPKDA3ZBh0bBdC'+@9ZFf8!N!NaB3#3$a(,m!!5!dN!%$16!!)!EP"56dT,38K
+
+-!3#IZA"hYTRNB3!!0L8!N!B6#3#3"'Am!*!)c*F0!*@Cc&CfV@`LArR&YZ,jbLk
+
+kd#CVFXVTCTYY4ZKQYhlIHPdHRPjqElI``AV-mj0YHMjImlD8Zr#&RA@5KG-LV)9
+
+GG1&jGS3[aeIqGNPjaKDfAGK(@jRmSPef#i[@iY&0ZeaiHZ8YI'"Z&cC`Hl6,Ne2
+
+#9U$`@FEpcMT,kC@,j*BM[j!!K5cN&h),@@lP-I,,-E)!j(N1'Z!CiaKMQ8-CZ`D
+
+hl&)%cjfNQTYjSe#D*d1Xf1EcPqD9A4R,AV[XeeQRcqCR*Qq)4+CFpFpX,ij`%MS
+
+[$U(#4CA2(q'fi[C+m@,F210RC$'ZU62aF15YN!"*la6TR5'pUk4hJr4q3RUh4Gk
+
+$FL*[F*,rP[pp2aiH#9!2GHBSj6TEE8e5Q592Q-9Rbh39d9##VX+V+VfjaZEffb[
+
+il)N6j8JiRC'SFh[mpL6qEpdHYhf(61FC`ZXmI,E(r9flcfrhbA5q34%b*IE&L6T
+
+IVDrLNK*lV5IJUl!$aHZbqdJ6DJFCrj!!HQPR1`*MAHk+kN#PRFmUY&9Bl,C+Zkp
+
+fiX6TK$(iXYhQ1X0C"4N,kpNQ-CD-@b(GM&[!Q$k4XCb5Z59X8[EL2Kcea9MLl(r
+
+aMFA&"60`4'I98cAM41H1VE3lA'illrF&l(cNA$dNQZ5`9GG+@IVH**ppX368K`5
+
+I4p0L5',eZ!(9Jj!!*+rM6-A(@)SBFE#UT@(QBaT%'#*RMSCaSrj4cBdk3VFHGaA
+
+Z)1iph+M1SEKcF#r"[3RhB@l8Ve*a@h'[`Gh1MATILGZ%qaEF'h!Ij%Cp-!lhYEM
+
+[`3f-VQ6Fi0%&M#l`k!+2SfQi`H-SH"`&aM&J(!2'-A!peSblNa[e)6!q"-D(Yh)
+
+T#@T4VVChUNl*YrFJp3fRcpj$HUQDel1pRE`BDZ5@4(,h4hK%2+Z+J4S8'rBB&#m
+
+&2f@c-i4lFdp[R$bppl))Umr2hN046BVChL-a[P(qH`qpmB0),`+GGZmc+1lY0LM
+
+@A'Y32*PT8(a[Hdb4*df8%q2$VBHH%JmSi'8GI9`jGQAPY4p69@6Eh"AfDQ!GP[c
+
+!H8AmR9X1iYB`0[j!(hkI4SHP2S`c5(LD#&mZEB"[NY6A!&pb%D`5`9I$43ApI0q
+
+3!#,YK&G@jDVP[6l2)RX&Z"bbmK8qZme[Vq3AhXcEh,cGjUY'Bm5$DUh,iqBp$Yj
+
+I*99#[MJ#baIDh$DRhDIMSmd@lr,cISq)9"(`qHaZ2qr`q'TXrKRmpATQ329AFeE
+
+4fp#Mel-4rGGa4EM[`rdSHCHe)Gk'H"[LEG`(V'hrbR$iL!I["M%r@RqqYC-r@kq
+
+3!,[h5%6[Eqf-e$2Ub5)(rU4mbH2IDJ0Aj(H`AG`)EL4Upc,+Pf+hX9hXC@iB0`+
+
+aj44C'KB4GV&Ph!MF)d@%fpM,IAa@LhaQXCeX&R4l(1qS9pG"HY*h(HPj4Yp26eJ
+
+kDbG[cibd%(MY+5dV%DMXe2TpEPd&1khlD9cGp*r&F'H@jZC5qA$8fZhI!I$TJRN
+
++GmU3!"9LAa2PUm-l%Ab"U[d#pCU[SrEdXLdUMV$eH1dN8lp+8iBm(f0EQ&XSXUf
+
+aehbTdG6bT3KI(N%Y,XNM6bLp2TIEl`#`E3$CmMGpEXSf%R*5EBA06F$5J1)hE[+
+
+RaA#0"39&K'ZVV[C8I+R[j1kf'+ijYbbEh1Zdq`R@G3lhmCM#-h0,5NKKKphRmj!
+
+!%@hRN!#ha4JAciN`pJC%aJ0+69bj0SB,`U)c30MY!I$C9LcQ$--IIebIF[*%4rN
+
+VAB3l8*p-YrFT2+q%F*@1Qh`Z[jd8cZK(AR"6$0PBPPY1b1KHkPcqhfYXMfQ9A6D
+
+ICQ"*&IkE[85jhre6d$A&UPYH!98hKF096E"9rG9QmV&lqkT'@4&TV,$j25l5k4c
+
+Zhjr#R5RK8T&b$H!HI5hQM)+LE#-j!cA+*LSe8"FRrLP9hULR5NY*BD@YYKCYhAP
+
+269'GL#'AjTEP%h+YhEqSaRZHXmj)&5H+R'F@UhLYbqQf940b[amR(k9TTZ52XVa
+
+#dBpq9`fTV"[`adrIkqXET+VUM9E9!8IU-[mUaVM%+133Bjr0A8Q-"kVaFe4rSaV
+
+2,bd60EkjeLqf11IUq2EhqfT!54iK*pP3(UZqV+[I5+FD)1%@QY,R%@l0`[5EU!'
+
+3!)B8[e(B4cfbK$ZlY)LmNA4MV8FX!2eHr-B1$&UL#QFA&4EL2DM#8i-*,CPM31(
+
+RliiKQdTcU9S0@PL,i82&HBee#G6E5XKj4B9Llq$be,KU5H3"9qQ-AiXKca(-BTd
+
+,Z+@1V2CF[d)G@E3(+"(95R*JE(*HC9dfcB%PA01FQ@*rY$$J%2ZMrSTM'MQjcmI
+
+'-JY9(!a6b"V4[Pq13$(h9X98lTH)%T*5AQ0cZ6'r6%JicHVA06ab5Pf,lCMJq(d
+
+Hc,%B'iPl"2Upb*`QFT!!Bp#-43khId-"EMpbe(J[jrEIABmhq9L0Z8mI$6&r,II
+
+@63FN$NUrbeq0pS[U@1m"KM5VqRHpl(k*CeQ%dHmef`LH'kPrKbBETdBdfdKcY8m
+
+d)ajUiX'p0Ak0a)-`Uh'6rdlTb1e[fFIYhb4D'2Q%r4mkQMrA-D&IaafiDG!%66D
+
+"mpdd!4Fe1U2M'BpYh2F(EHEDUJ2riV&0PEKA5YSm%2(BTLFrV`ZE@Z#[h4)(PGY
+
+q8j3N208mM[[PE('("$KeIkJ0Th6Vpp66Sh&60`GGRJErhhQU(0TXKjHSpN'ETk9
+
+@kVmm9HKbZfS#0EeD$2MUk4EFEd[kG%9me8cqq-aAc52lI+@'VciQ#[dfSekhC%R
+
+kd86MIlceUAlprQUq"6IeqD62KLrpY@9jV'BeVllJ,e[G[rPV-rbr@I,rCY(rH&G
+
+qlUr0rNrme8F8q[diXKNLkVIj2qY$RlmqdDrIAj[4Ji6%HS$hb(2q1MCf+RG`AB1
+
+NMc5`rZqH`1I#rY@rqLX%riFNriG%rq00qaHIq5ZdQhZV9Y+&U@d9IZ`HB0XJdPk
+
+AFqqd[S+HB%G%[p#jqK!1+eHZa,KDdF9Rm3f(YfhC&"`@3KrArIT(HkFIDflCH2$
+
+BNh-h[[4)iD[+RDaHkrJ(UrDUJbh(VYZAcT+6@6e'r%XHbrR"NL&XQAaL1f[q'8c
+
+e3lPmI5[r3eR,kmX0(h'(C0b(cCf2PLqBT(PN'#Z@e9XB*fpjaCTLb,2C3MpUZ1U
+
+eGZ9V)kqV5h4IPI,APl*%3r'%)cF1E[ZSRXPl1-AfiJN+2EB(P!9M8R#qpiYJ2IG
+
+`2I[DPTaK4M8[jr4@ZHc"1prl48rpG8GPL3[ZACilHpKbP[5&0bp#FYU1@M&@`N4
+
++aSI$ElmL8p@dX(hB@Ej6qGcr86ZlIR44VR1k2Za$I@KPqa6UD(h!2YR(I3(eGhh
+
+(`(,1E+R+a!8(M()qlQ*k$mmD2PYDT5-rZ`Rkfj0-5-6Ll'l@&cZc[BG,%+XrD4V
+
+([d,#LH262a+`arS92Xh*D")Daaq&*hNJMNpp+[ARFAaDIKTd!6q9LX!&I1R2%NR
+
+`NHTqDIX94r8XKX6h`&UY!rJb'4Z'jq!,r'Q2Nqii2QP2kl0ar"&iiPmGAq&,r8!
+
+LI$0i$c+Nm8Ab%ibjX@b84YZm!rMdeij,,[#RcS*UB"bIZ*1(irM5E)V$(&Y1Y9$
+
+Dbq8`QaQ#ZDe#QVAq$KrM((%0*-kI0UA*`h&mf[JKhH,iBr#N(L+16aLNB4bIpNk
+
+SKiVM8qq&IH+[m+RfAhB"RcVNbbrJMmD62"$(Tpk41-6ab6YI[i"2hU%H1Sj2[3r
+
+9S$Jqc3l)Jh&m1Y4$a[(*1p3$ar'TGP!2%FFIKbIGFAcUhDQ(Lq26rK$em(&mDB9
+
+1JEer9@1Xracm'1,SM4ALAXBr(I6[k(d(c88SYXPqpP#2a%aebIPrq4-Ka+T`edh
+
++bK0bbS93NQ$Z$Vq3!,S5VqfTbj&C,i350JNKT3+aph%rLc[9j,68KF-@$j0EjPR
+
+U'+HG&Rj###9H,fc8-,k'93ZVQlU3!(1r8iNX#f8*JGR(Nkrh-L%NIm'Tb&rYP!A
+
+cK!!r0ER1-A45eS)L)9F)+6TiP9@4DZ!R-Klm,DRe3Q"59Skac)MF6Ab"YQk3!*+
+
+A"h93D4(bpDR,*f9Kml`8f@X3(jfk%QJPZ3@)0r!&[0bT%N+bGA+DJ+JFA8*h8UB
+
+`0rbUmIJJYEE)b`GeAUjpf)*K(Dh'EMEFQaM8c9N&4@90p`VA#`(a$c$-h*ed,,8
+
+jq4Dq,VRZ4q*r*ja+j1a2ICbPT%p0VRI)bPF*JI*9PRI$akHRXkQNX69jrUTdCG1
+
+Mr*LJ3Cm%pqaa9TZl6rjCDJ1[GVkY0H6IjG!&a`Ic*Q9PLeSPrX*C30K4aGLV[BU
+
+&&,G#`9[ia5FY34FDmb5(2&JC()qFr9S2blaZ4ASHQe,`qTK`fDVmUGaNTk`T,!5
+
+mPc5p@,k+KcG9aF)*ae!p$`e+R!H#%i"EVhY3#-!rL,'Kj"Xa1KT1R*DNaNp*-[J
+
+kf@0H9I[UpFfb*aaDk(i`H"9IV,9S0GCNi`&XYA(,0HhECVmBlPVGd,l#)4-#@KE
+
+8%3l2"FGTLiZ1K&[j)Za!$VrDKAUA%KaPqVl&a94m8G2l'4SSF(KFqFYE-c9DMAZ
+
+k8eYLG!l(R6VAk-3r$a"K$)TNT)@K[DaR9dP[l+@q@-HZ*m)R56GCBmCiTXThX@3
+
+(AfCDT#ia1HUm&8d[iRfFm)"`GdF6'bV&RU5BbK6ZF5kXU3+'R2+bMfTNcmjf[+5
+
+bcFKb[)!X4I)LGQRiC-D9j8EYiTlfMVXDmrZi9hAF'@%[a61MFF65L&md(Re,r$T
+
+&IZq"@d+i*q2+DiQE[q1Z$Q!djRr$'$kCf5,F#&C`#2G'lP%0HrQ96)dc!biCjaa
+
+DBR5-M2$P$PJe8L4N(5T&YPP4QlNh`EJ4EL3'HdJaI[&(*rPT(jh-ackU-bdMMD8
+
+jYH25Q'Dq+IX38qmk`13[cmrSQC&PZQci!IEYM*kQcYP'ad&ih#$@(i2M"C&$#"a
+
+#[V#IL6`ZIcD0IGXaFJVB@*jcUREIpY6M6'kADp1B[!pj0h$[iBZpkXEkr5[d@rI
+
+I`8ce6,m0I)Tp,%1MemJ-5m2[VS!hq-aKeZ(Dm8cHf*!!XCA8b0JQ+V%MI0!kK9F
+
+(jr#'6a"9,Z%%NcNeQ8#&"iCC['T'U-)*lH[!lH5RX@6Hi*!!f45#Z,ZQc`SqmmK
+
+-V9+IpIL$hjrj9)06JASrbFUVTM)jPfkRU0Bk(&'C&09BjAKGNGdGhUCY%!,"Ci4
+
+!eh%iI$'6+9YCJ[!R$&8206iVZbJRG`CV#[)h&+2ZmdSKN!#fZ,Y4@r!AZppCp[1
+
+YZhD,mFAEHTK"QkR4)(CVapeLMN2+86D'ZKH*'@95KVSMe&dQCTLN$,N#I`eNDUS
+
+`iBGlkadF(fkfb[(D3e8(cVSK3j1T@9mqlm9`Gll*H9,Sj(ZNR$9p1Ge5MXQG[0T
+
+BSfJh'$ZC6+qQA)`0dTNmhFMNfR5Q6,m"[Gfl@@LP8cQ,DIYcD@`#CmRGmIcZ()[
+
+*C'VGfRjV`HXX5cX'c$p&[4TG(RX!q5[lmfrKZI-)NmlRUf)-mZXAMFjIYNL98jq
+
+c$*NmAS%FG+iX4F`))$GCc&3J+k"$$ad12e9ISG$L0bp#B2hY#eAe@bf'$'Bb@!a
+
+#i+RE&ekZ%f18C6&2CaEcRfr9*eR-'8P#J"caCX1E+i"b[(jVkqdC#GYDG3N@mdp
+
+D,HD1fqh+aPXAbSPcUF(kpK*'(5&UK@*'%ZV%'1Tb8Jf)$fjk0(8-2cJYSF4ma&a
+
+LRTCN66Q&dP"L9Q$,FHR*1D[5@G0MqM(SrK)GqkM1r$6hIV0M0*m30)$&`r`)S#e
+
+!T$'YP*m9(1rPi"Ij3eI`5Z5CdLbp'&2i@Ab#9A1+TEE%c"YiZ'(TbA3PZVb#RlF
+
+'G8f2c2klm+[hE8mY%,R-bXp&ecN@G4!qbmKUkXcZ2U''NpBMpMjL,BLY4HaAL0f
+
+"f"V%2N"XE9r2V1E6@)Sc'Dr4cT&#0r-$a`ZF,Z$i%Dp%h#V&IBLA33d2[&k&DCB
+
+5pIblk%bc6R@QNi$S)$A`0K&l[+H4)RKRN!!#H%mJ4RKVq4Z%J*jlD1BiLeIed"9
+
+k,QM@p`LEq4Ia1X'h4A+e98`C(+2Rq,bJ@3K%"bA8&iHlR(,HB&T0@@Iq"VTc5rP
+
+B@K-EcEh*KPZ-TE6lI6r0-["qE"B'+RJr03mrf-$l@B6T$b4Ye$9!ecdded#mQbB
+
+BB+DJb3AH`d[R&e,mLQaKTKNGbS65[!AJ`cPS@S#h,mFdaichNK`6r5@#Zb2(0)r
+
+`lX%26LMqF'Q"Q,GZjMckh`dAkYe9fKR#RM9Y2LC9)iDpGBSP9L''ZEiB%a$$R*p
+
+LBlb)i8qN&%[S3U`(R5YLmR,%ZKJA$SpNicFJpN!%3fj&$$[mBU`5X@BT4[b`5bV
+
+'L2GUTK*Ma'qIDJ,0Da1()0Bkk#60l40(),BpD`l0)"1rL9Ml0meX21CH,b$f0T!
+
+!Vd(H!X6@4r4)R)NrJZf6B[RLrl(U4Be*Jq05$"KE-(X6Bp)r%F6B0'#d5"M3Er1
+
+1a*V[f+UU6rmCm04I"+-r()cp+j!!brTr!*!$$3aYH9pMEfjcEfaP,Q0cFQ0'4LP
+
+PER0P!*!**2S!N!m4lp!!%M1b!"!cNrrr!,C849K85PB`-3%!Yde-B,G06'%!N!D
+
+Ab`#3"Lrj!!##4`#3"KR#$NjAmT3J!mmT*`ZlYEI,jrCjP*q,l,fflQ-$Z9lE#-q
+
+L"%mpkq5Zi5q1la[X&a,%`b0S"EUqEp!h5@khm2*G*!Ghj"F#b5hNi*&IhT0!5UM
+
+U`%PcGaERSX8SDQIT-1XR+femP3F2Xm&ChMXi(%A0pN+dpX%(Dp(1f9'FMT)fhZD
+
+$,)p([5aGLD,lrAiNPBC4RJb6r$MTV'JAGqEQhZkPlIkiNd3I2BhERb4a*mQ(pm+
+
+VqAjfN!#Y(-iA,`lkfAlF(r,4A()k5[)d1Xjk(I6@bH16[B-m(KcffX2Q3S[YpRk
+
+El19*1mXlcB@0+,Uc'"h&VpLjPIkXPhDbNqe4(VR#HbIbT"AeHm04NLDj2ILqqY'
+
+CIYYJNG&K%L@GhLM,)kdYSmC$613S1dj3S$G%IbQqC0&*PVq+XM5krq4*0$a$cdI
+
+$L!A$DQcR[A5dLrPJk[FD$@hNUh%2mmA5X@*dGf90LU*U0qdNh@K[Er[&ifHlZbr
+
+ZEqrXl8fEkD8(D'AZl56Yp,V&&Xi24jhHC1(`"!h0h[4lqp-hk!aY9@pk"fRFVpm
+
+NHCj1@R6S8Mf+df&[Ej!!pilMNEbF3i2MpJL6E@H$N81N2A`$cJbMMk2I4HqZYU)
+
+er*rrBQ$2je[46eV4h9Ed35[#`r9hmCe&SUmhjYU(FBjZ!$&lQ'Ff(Qf`4m"@@a(
+
+PFGSE2G3fQRb`X$%RllEcV*d-Ke[(56Tb$kfZ!8+5[)V5j!5$UUUAcEhUpI[I[@r
+
+hXf'5Y!qc0affZrham,$jk2'6V@J4&HVkYKl*D@mk*1brHpl,V(b,Vd+*36aXahh
+
+Yj1KXCp6C"H)eKiGC2QT&XMHSZ*fKT[fFYGp2XQ'ckXQrker1'qXh')qDBbcp3CU
+
+JN!!e+6e2DadRq8RH'bARjITCHM#TYYq2deFFa@6'mVLAJT'-QLarqA`3Gq`Y'lY
+
+U$kZ#3CbhabdE*U2f1"pQHEd*ZeZN$*dNESm%h5lhJ@JkQ$c8)32pcLiV!XY[RJ+
+
+,b$BZRbT(ZR`j(LE0J$E&JR1bf5"*(AcYG3$55Ak"-ThX)@(XqQ@@M[*V,-"MhCV
+
+VYreHqe96d2H&-$X"[lV'jePfe$4m1YrU6[Dc2$[4pl1R1dNrDBpZqV2C(A9qNCa
+
+G`&XRZhRh%1"f2FlA1p[*YJ9Cl'Q01H4`hl%(+6!YEIc*bNDrQfZ%p@id'LH$MEQ
+
+'`#dq0Ji68[Eba8Q[-cSX(k4BSQ(eS*heq8!@L`m8r-S5ShLI&ADh2SR66MpKSlY
+
+ECFPqlkM(Y[hlKJ$X*hK#m282RRIC4rAN5C,L#IN-Rbb52+eh196(%[!+%N(dBE4
+
+@2fV[j`PiIIdZ`N15q)YRU0B"e6e[T*F#"iI*qF2K)-[kqZcVU"e@8K$G8lAdZ*G
+
+Rk4'!Ta@PQ4"eJ5m`j[&JP(4D)"Y!jBlIG9NVAcp2ZZRib$pqQU4MhD)S(Jck#Ep
+
+IdNLS&FCbC5k#%F-B+X88)+a262CRHG`&KC(0``3`e!Pj58EM38%H311+[UC`$3S
+
+#U54T6QY-F![MU1KHBh&rh#dh8am04J)i&(i)+1f8D',JFY3M3VL2m5QhN8rFf)q
+
+"r""Yd+N$V11I2pd1*CZ,a`qc6V)!,BNMRhXE`JK9R1H2GTUR#ie'eZeLp&RAME+
+
+6(i-kRLj-4mPhCCImrUJI(`aEmR3ckFGRqQRVD6c%q[#6lQp9mcPBQ$i'@"`PqZR
+
+KU+mIGY$cf&S5(SEUXL0Dr&PmP2akEI8hNjjHl1l`4EN3M@2TkGLDq&VR"m&PVV&
+
+kZ[VqHa"8q1pdGHfpqr`deq"#@$23iFkrXU(A$pRM!PU!KV2L44`fHRIVrAIaiAG
+
+Sp1l@S`qLVeY3I0bh1AaGA'3[B!Tq,`pl%0FkXTV0TXSA3*ES&PiXr(Ve0`Zq8$r
+
+lYY!D#Xf4q!PA*["r(+e#$K5T,iY'#391N5kE#hb!A8GjLK5Lb*Q))T3c#)BR!i(
+
+f5$5!C!'lK)BUQ152$AN&'MU+pV0afX%f$lmDalNp&#EHla`"Nc"eD8#3!*I0h@*
+
+pi"4ID@f-l@5`I)q)cBldUC9hEp1RdSXdeifD0Kh`Xd4H0JFa*,("QI@9p)G*pIC
+
+"Vfe2G8`VSfb!eV6rPIeX0-U1PYI@Ua,kDPEP[DT)2qQ13JQ4NkGpb+0T$H[L83k
+
+`ip#EYl6DRkHdqX18kK&F6DRZifT+eXA0P0b#fDlD+dHEh+*r,4,cX[q,"Z0p5#A
+
+3K8Ej@63J`4k@ciP06Yl[8XpT4mZLkd3aF5L*MkK+aa52(-AdXVf+KR0D9R@'1E#
+
+"(1L6TmeZRZM$CbqI2'P"BMe)4YdHP)U&"Cf6EpX+SA(pFY%kq"Jdc#%PkhS-866
+
+I(Fa(80*&+`8l"Q+P#DAC1!Gp!Up0CCkJK[%3h9Ke@")HGePlI9kk3!-kTfV8dKF
+
+Q!GUp%@AS*6rTJGP,fHKS2#3Ek!,K4jNdiEY$'fR(6qB)V)#8`085Dm!3@qk(-9X
+
+TYc[k(Hff)[G*GSb`h!9FI5a6!c5lVC22j+SSm0PR@p`C[Lj9E$l[bVDJ"IN)c&I
+
+C!*!!Y%c4JLr-Y2"aK1kMIq3[rqE$5YGQ#f!Fab$LD+KPHl6hq2Q6"ipDdB1AMhB
+
+HIqlD(%!e4dYHH-Dc[6fX&r4ThdmT@V1Z`a21US#0pN%fbNl2J"U$E0LMr"qTdK6
+
+&SqLMdpEC2BF3ZeJhAb2Vb[U0"`2XSN!ee$dB2,LS(kfeeZlC-V)XRZ53!+6*$6X
+
+CE"E2RZp#AdMDVk)H8$61$mD8DBE!NXdX[6f+"[fi69m(X3N$dQP!$PJH!N55p#f
+
+rjX6+14XJKF,S9(NJ!+YDmh-Qf*!!A31l-pdIK3,,Dl4AY1Q93bcC+9D$bq`I(H-
+
+4pi@2,RK$@+aN*(Z9*f5*XLlS)-HSh8cG0[hAKS8pB,qb"SZf"iYrAi6&8k*-f)B
+
+P'IVL@IRUf&jpY`VLB-!Ui$FdZQi1mQFV!"L(eXjKkh+AUb#Q(X$B+1kPC#bf35L
+
+Va##'9Y$0qY!Eq*V931R"p+)NMm&KZ"rDL29+Ra$h#-!Qe%'P"9fcELm($C'13r9
+
+bZp5%mGq`)Lf%a9&8VVHQBH,'a$$9LUB[5&SH3H%FU3`bSi-bX2iIGSlc[TKcrmF
+
+!jY`A2[-G*U!"#YLB%,j%q)5&c!E$b6LXLX!D2r`0d-MRT1Z2B&[krHqPTHJH`%c
+
+NGP)mHI'a)Ejp0+(p$p-8k8HRkAJ[Rj`2P+pNS2c`ai(qJDP3K"Fd9YfGRd4TTkb
+
+'dLHp8IX`DSV83Bfad3Di43rhAYcrl%0mp3e`hSf'p-![9ZAKJaGEphpKKAb(el@
+
+H2Gpkq-PcU69pkKrkfG3YI2hpEMNRJ1k@qhVFkb4CX@%`4e+B'1*CP(5l8(j%YU"
+
+N!h1Id3Yb!-2h+6@JQE!MI6KT`I%$XP3LjC35f#4NP60Sap8LjmN"!6X[h3%R9-E
+
+#(JGTq',G5pP4B#Y,GB(jl5fR2Dl!DGQPKfkSMf%mQ6j%bdGJ5PQl54dIH[URQeU
+
+3!)de'M[*#*BdHB'HCee*MI0hbrFJ0Sci#HdeSF%Z"'XE5f+MmBq5TTrC0b1$5T2
+
+m@qZ'E0DLFUV92j+03c!Qi!GrHRR*$+8H2N!RS4D*'d8GG!i*M(%"*,TChSB%KRH
+
+`JB"A65'"$GENkE[eemA'XlH`4+(3`S6BBGKUT,)A*`)G1fLeI&#1qj!!),J-b4i
+
+rVmIY*mBDpF3q`3YV,!aVdU$kJ5"$SNYqmcefHN2)0fIF%$kI01[,LK%`@J5G%pd
+
+HZj4#Fr`Ekh3Q6b9'fLYA6T69*V8"k4-Uh(`m$r9YrQ4H5kQM5((P1a54PX31"Pa
+
+r-hLVF$PlHrThIRdckG(43,AKDUa[e*P5`[DF08lMJi5+h)h![3HI-"b,m2NkN9[
+
+TNKJYS6FEKcIT$rpJIqe61"j$jDGe"jr2SZEq@632rc'&3!jYIL%kJFUFd1S48`H
+
++SR&UNR2SMHf)!!aCGbE5K-%%'GeY'[D!LUVCGL+SV,qq+hiG"@(8l+A,pr#6F+Z
+
+`iG4MUV(bhP%aG6KrA`d&LR*`RAeI$J9FZG*&V44T+,$4E@*Sm'2r`p[$&95!'a[
+
+1c[X$@Sq%+aAS+SA@bMNi`jQcH+q)qmddBi-q'(r#NKG50lBF!YbS&rG")&@&XiH
+
+&bmj[BZ&'QjZj[VQ4KCF1K@R$)JISN3k*(Ar5ke2Br1'jH#U`P)XahhEfaI1R2hN
+
+hZSIKFDfHaUIhBFhl2)-h9h4bd2TQ6qe&2HSpr,fd*+@!K2##!BJ4E5!3-'hmdc&
+
+mXFa!F2ebNR6U0CmPY"`eeeII@i$`ZEkkIYd!*lF,q0h26V8&kq%4L*dfcDp+Xr6
+
+llKCIq+HED#3l-'V,"ebEDPcUU*!!(G+3!!2YN4jXeQTkSb+K,cQ40m!%H-'q@&f
+
+r1`p')EeKD8#+kST5j6jX0D2S3C+r![NmLjiJ2@+MZ5b8kAkRmb)C6Q[HhRcabaH
+
+hG9jq#Ka2-3!i-0$D)m(lm`'`Q"6!rShZI#Up[ZRP(5Qe"8ATRhYjL4flmcP'Y`(
+
+Im*eIEG"cGHIKKML#lrabib(e8HPd%r[1dJpLQ-r#RY'1*V`1f4F*(&`4+!VY2fl
+
+P(T'LLF9jf#4l1C0[0K""3$9J#bNlYkFU35Z3!,H-4##*9kJ%V'RM0H8jcdm3A`X
+
+U[dV1d("T[CEbH&0*%QEmK@D3!2ADT*ilShcphAG*N!$8'U9!T,NFqLfX"RdSk*k
+
+pUX)XhQ(@TN9(TL4)h3EG`-02P-k`'J52bQZk%$8AIC9IfaIiNTH@b0(+*[#)fVG
+
+pK8rCC+40%2"XU-3L0-cLS-,kYC!!MU`MNr")#Q3XYe$Kp2e(VQ@Ce-I4l5p'Yhd
+
+*I)jZXi$kdr&%QP4lMBUC$U$&id)H%UHkI"ic0'PN&hj8JB@GVH249VT2ASJi&Qi
+
+KZrpC-RS'28ehZd5@@p,-3U%(DMpDbEhQ`1L0JHP'(ZTX4*0M6DQbFR))0`4'R)l
+
+lIDN5QUT%+0B3QM9&00&ZEI3fGd1X-2%jQ`!di221Mc)3dFhXa2EB+GD2d,JelqU
+
+"p'2f%,YXid9GlU8'f5)`6kI$+J*X@#h@X8##SL1VBSYL[Q$I'rC+Kr$Kh*dlV'1
+
+#(HBfbEKC3!%NapaP%F)QLmaLEk49h990AY"GED'DcF&,jbT[ZY@U0dYiN!$0eID
+
+,JrZ3!,+4VBqjGE@),Bc-G1e$EB9F@D[E9-ffDa8ji6AE-hK5&2Ja8F'N%rhFA&Y
+
+GEBP0,AKa&jV,Ddp-@JE2lX4pUb9eEPPhqP`4fpkl([8Y%6V)aid'fRk-T5RCCMf
+
+[&NQ(p88RpfBbI(@rhDB58R48'a2@E4A)4YdQr&NQ`@$`8BQj0*!!NKTb6l8(kHd
+
+GkihXe29Q))dAdf@$Q8bl+4`4Rr6k5'84+XY@#i*BZ!C4f@5!fR!jNATR339cXd3
+
+GdND,)K!4FP[LD8k1q$XB&9arLiYYTNKBAq+T2U(8`H!JSS,q@1H2GeCA'4$dfK#
+
+"Ki8M'emTN!!m6VZ3!)rY3e@D0[aN-al&d5*,@h58K2$%k9iR`dclY)HG)$a,[`N
+
+Y!Aa`MUTqmJZhMCNXXX5eRP))rSkY#HMlMU*EYkTZbBS%l5X*(bMjd2J,PZ!@Y`0
+
+T2a0d'I9'G,R5jHpi`k`'1IEM64M!a'@a$!8(rFMFe$&qhIYrY2lAcTr#+q1p"qH
+
+pd@9hdA''8P)HRK0CarD+c%l*MfdK,6lMJAVbJ!!L$X!jRq5d,F2piAD56K0LKIH
+
+jqMC2qB`GXF31!hR15r#C+r%)EY2,,[#-*B!G$T1DYa`SUF#ZZ5lL-0"R+iKk)ZP
+
+G#LmkbH`*"#HD6+3&#B)T1m!$+*Re2RL23G+0are#H[)1YCrFH-&F[!Ur1HH8dTM
+
++Lc945%T2!EmAXd$54qm)&QH$5(U+SLCili*65Xf-Am8!Q*HIV@#G2RYkN!!V(#Z
+
+pi$*953$%"(NC!KCmNJ&l+2hqPl8X#)#PZ1J&8T@9r9GYcE#T*J1l@e6p+*k&P82
+
+)$TVHh3,+0Qqj*!Rl`!kD)%FXXV$5cTqRF$UB'l`b%-0ab-3Ijbd1,UBD"Jp3j-j
+
+[%F!%CBf""T5XhD+e9b6I4lCXp))6EBBK,#hCmjAM9K3q-R2S53B$aQlf-mRqDpl
+
+#SMl"HVVD,$kT-'f2*EMFLf!G"5&$aJIG@Kem9"@1CCE[J@C*HJTa"jpK5A"I2HH
+
+cQFI$BGEZmDf"#l5-3`pq0[9iH#5D!%!89,X9Vq)EVAXVrFEECR"V,l3kI,B(hV+
+
+EF4DK4VcDmX%bLJXUMVCJ+S&6BB&H+U(I)U[9D8!NH[8,$2%b[)X,`PA3-Ii#[i*
+
+ChbF,PCYZaS%+92m#Te2F"+G5B!N01dSMlaD`YCki,!P[Q+!T1k!CpV)$[Y-1P,G
+
+S!rm2Bc[8Y'h-&TefD@ccG,%NljCQ-(@qP8Q!iRf'8qSE`jri2d0#4CU"DE%JNZb
+
+kN!!PB4SG3A!6jGh-4d13!&%%'!")Vq`ZjcQ%P428@C'Fii8VM(#U%JT%Q[fZG8Q
+
+lV#!4aFAU)Q6YeYiH$8$)id&Mq2lSqIE@XlfRphqe%DA,baZ)Ri!$aLZmC6i&+3R
+
+B1,30-mPF+GUb6q*lBj[`eh5KECmTpjXDdpb@pa"r#!,P55c*JXT*Bdkd&&QmE)m
+
+AhqMjeF1QrPk3!1P*rJC4A1`d@SHe5FCmBHpY4%'Pm5*#!%a,UjqET!H4mk&I3F!
+
+NDY+&M(K#(CE2r(QbDR8'R8L"&Ld5#Nm0@QS0a(cd0m-3cYfV([UqP3+Vk-[AVYA
+
+#TdFcSS-03c+&X2p%S8i[(m&pF3Y25dJ5-SCG+#h6AK8[`Eqd+QV1&P$mKl#H-L@
+
+&ZfiJ06`F`cThNVVJNZYGRm@#IJIh"FkhXb2)f1#jNiApF3!m[pLNUafb8BLq,4i
+
+9mR3ND,e+Xa1B0Fd"@VMY,Ue,9%+r&Fae-[mac3NpX8GNJTrY8VJXhSV(D`!Q-Bc
+
+qT`,$rj+%#r3[VUiLj1!Q*3&rB1&Pm)i9lL*6K4E0U6P$h!6Ud+LBN5f$NTSI"q"
+
+PZVTPbP$0!9`!%+$VmChRjJp"X!b0qHbq*ViKA#-NF$S8mqQeA!'KTcIHC%Y[Ja$
+
+Te8%1E5rH6l-F831D1"5bP)6bUjfjh&T[ChD@PCiXJ#bDXpdjji4c9Db+bDHAVQ"
+
+Ad6`q)+&3XT@JrNP@SA'VFkab%+)@IEr5T8+US44X$d'(eT9'(VUf&$5)HQ8QMK@
+
+XBN6+2Z`CkF8d5NI,)%T4T`Pa9HS4V[ia@S9(2D6HQYp%mTqJFJASkQ3ffNCP"V4
+
+bAm09VDa9ai(K[580ALb!0F44ZhJqYcB@NKBLqiTAXZ9EcaqjMVhGKSh)cZXHf,V
+
+56F`&0NqC04M'DR[K)3DGA6Ki!P")HV%KV[-imE'P)"XfY0`kedDESJq&m,+2GHQ
+
+M8R@dqVPi3M"c%BZkrq8,[c'&[fGQ%[6KT*8N8N5@'N%)$eaET3-9IN5Dk66U8M%
+
+ME+"8bf1%Vc9h([m-NHEbAN,%Z@Kim%)Ue+X(`L'Md-"8RB*qdjE%YS+rrcZ'q`p
+
+Hr(81Pm*K(D"NH+5eDhA34j3)"T8a-NDFT[bSL1kHmmA4QM&mcEC%mSYri@-Y*)-
+
+AVXUM"-LM(cY*QN&$,L8#,8H'i8)*K%iCBS-CkV*a"DL6QrMpdc@'r`lKL@JdK`Y
+
+,FcpG*`[B2qSedYC2e`4Q"[f9BH1Rlr$EF,cr&FAaYGC`lUI["2-VFiq%TX(aUh-
+
+P3f&S$LLUcNdRjXb`+8cdDJ(ei+NdE"%ZhHL@0mkb&iPBK+#kNlFYiM+d#4r4,3N
+
+SQ(AT+`p$@FGh5`'(9"H5'3`0N!$EhdJl9HMBGd&M"fJMPBLI[`5,6D+$&&XB(r6
+
+Rk+"D,,4JGb2E6%Lrr89q@ia@`5(5%m1&"&J(E`QlJT%L(`erhB1S%"k+*rTJG$J
+
+,XTXUR'8mf1Y)X1Q`,''m`M!0B"q)+DD)B9FSVS"bNEfKbLd8@ljA$$!iBfMfpP8
+
+epEd[4F4-Qe*!!A-1BldSYb9Z#bQfpK[eeeJ-Kf[P)bYM6)E$+0TdR`K)lUhfT"m
+
+%U,B3+``",fM,P5aMFYkb890[BB0mVrMJF`#[a9RC0k1[IVb6H(iJdT5(b&j1bR#
+
+-[Xl@mDGEI@lV9cr3$"Tr!@TI0Gk'iCf1'Z%GlD1"m3jjSY6MX+!H1#ILVp3MA"m
+
+!eL(micZkSCiF%5pd2L+`I8A6LK[Y!SD-cITdR)b6PDpi"-8'TKe0DRbeI1qV*ld
+
+89NN9(pJBhL6(Sdmr-eZk%9MU*4*@*%9Ci#Nc83q!B`J#@,RY1LKE!)ATGAYFG`K
+
+&NQl[UdcBZdNGKGI##bL&M2,M$e0ZrCmTHhAJA`I-rdi%**FXlIfh[iK[Ul-IlZN
+
+(56*ShTf*X9CSh`T05)MAlKaR-(PZHEQL%CFGGDfMbVPRdPGKfEXXR9TTGbh#6Ce
+
+MUm-4dDBA'[8H`I0j(EpZ*Tr1bfMI9E'4@aF[(aEpfdCimE$Sk"m`&lT1VhCV*S*
+
+@Sl#RPdN(*AYbR)#CY")&5fFlmqBdb$J`91AKmP*5K-A"TAQKG1M)0jc&8"!`8RH
+
+@JiQ+k6iD-b9XR8cIJN(VP0D@(iL83&XK3MRdpBHX852Ar15'H5d*I(11"ILHj,3
+
+Sbr186Yl36AM*Y8'TM-c+&b@[TU'G),l#%98-D9ifFelP6aV3'#BafHdPj%KLLa(
+
+88@djhea+h,A&%5Qih'@aMH4a#QVK9%kR#PaT'l8dm#Fei&S!U2Rr[F$rc326NA,
+
+U0j860j`Y643C-#!+-ViqFbLP[NJ%SX[S!lGPmV#8$CbJ81D[f(XCK[De&)R&G&D
+
+B$i[-(6B-X51JSLQKiREp&Ie`c,VEhGTTj`0ealA3Q&MLq%69)E6(R[cd+T3Sh(X
+
+#%e!Y8MBU5e)'JeG+p4%)Zi@i9+aR'#eTXidd@VB[%VG#Q0'P+%&'+K4d32B41bI
+
+DQb!S4(GNb*&"dr&GC#Ah8U)C5'QI3ClRi1U[&bP`-DK're[@FX+mf$AJib"AHb0
+
+TXF*[IQa!DJV*+"FG@Gfk(af@pL0(F[KZ!X6C3"fke3qN`4V`r!+aLJh'PA56+)T
+
+A5kfRSSJ-,arJ8h4FbP'QFX[T8lTFk1,L&$6JPeQ(pGGerRB[rlET-`D!r@0U&)I
+
+ec`[pal9p1JD(bTXec0[a%"$BfD"QbL`YPEMrCS-j[@U,PjDUP59,!L((,mQffk+
+
+1VY`JaNB0NE',M%CiZ+m@P5"6ZaiiS*V&CYe5dj3RID4lFBdpLp5HJcqq#!5J9KP
+
+$ED`fSS`(3$1D#b$I6aUGe9Dj'ALi"hqK&UDP[A6T`,cAYqC[qQl'U`[DEpcTm!(
+
+R+GmKJpTRM!$Ipr1B%ZQk#+SbM(hi2eTX3-dF(953!(&48Ufd%59rNLN[bSJbDCH
+
+6J+`Tq!e!KQ5ZmH$e+YU00AmR3GqLjQXbJhDNHBGLa@#pc`h$GAh#f4`2$d9SJIP
+
+#C!UYF@PMV-l$BFXrVZ"5S,`cP4a%Lb#GIDe8Q!B!!3$9+8AmZaC"5PaT%"+Kkjr
+
+)T&9389#IVZYX4phHY[Zp9cXM42MK'C)!0cJAhL#`qfaYrAdCaHl@IEG!RT!!Q1f
+
++LeFYGPJf$!`A2m%F!pYr%Dc#L0K8DP5U(K*4IFbV-X"`p%09A"X[Xf$,bi$QTTF
+
+"18Gq8*[mA4l#YAfek@5YA)eD2#b)(&GqMf"T`qiHZ,@94%4kLF4"j)El,*13!#Q
+
+!f3QQ,!F[D(QV+NpT0N,LLcp2`#4*imjHjEM@%)YcKbS-G+%6TLZhSLpE%4AB+j!
+
+!p0!a-D[4cZkY)fVCEAb*HM496a'cYlcXd&"0$*)D)e814BCGLVlFL,kNqf"aH9P
+
+5pCLY'(d*4`T+0N,bSr1SH[FU[f#@e4d+H2)P0#J6*0J!"a-i0&Z"N[4ap+8j$)a
+
+$Ki()5J"Hi9QF4lkZUIZ6KCM-T(4AQ*Ih(MVd(Q!q3-qU[CGk3Pe&9C2J,TG+0@E
+
+lJ[8cAlDXU0,LT"iIZ@VUASHXJ+3IZ[)Zd%dc@B4Y)US#Y88(C#b26kPaS)BM31U
+
+Jp&''fefB1mqL2KXla2(l#cri"NBlm9j'UTP29,dLSX8DZ3"l!ElbrLBLAjdXjj*
+
+Z"!&pVRbii!ACNFGaAdp'#8&+M*q9!L(V#4G`L3NP8)MMAX)FSA#,bJE5)"N'HCR
+
+HBeNpP-SYKiH"1Zi!T'QJ6p%"#H4&a6!'b$!bUQ)-0F9'SK6b3V)f!S1aAe`Z"#V
+
+Q'Eb8j'H6Le$-c9!DeF3G@9SNQ-V2$4,#3S'Qk+GreT)qA%eN0"ch%2BCBF['X'e
+
++5CKfkDHm$eZ&#m-B$a!4)qX1eJRDF(5clY2,L131R1V`)Ikk3S)U%&#43+))j'X
+
+`ECIR(,RS6l#-DEE600a*+3(c"5hAdb8Bf@GfmYE@d@"dpZ+!-5B)bC+Cik[,0Te
+
+GQ9-#9D2a!+3XI5P&A910,3VN8rJLUE8k(Vq#L2KYR#PC[ahST[kYb89`4$M,1f9
+
+Z-Sr@H)`Y#00)1r9m5'V#2XPNTlj*mh)$Sm6K,4,)0hE*1Vq*)12"5&!P3Vjm(%"
+
+RAY"LAV,S"AUXf6G8i[b1*JmRA*YUPK9`N!"dFIRV4j-J+`mkaIa4&,2[Cp#!p$)
+
+lA2-fVc+#EZ9Y#Ep(feFcUim-Nr!FQj@HQ##*4dAqN!#Pkb`Lafd@leN(+T%b1H#
+
+bUMcmiAAP82FmVf6!LeL3!+V#eDa&(E'bJ#ZAkR*",fZr[SK'h"FPN!#()%A42U)
+
+jm%l8M`(fArB'HJjHRZ(UZA#4J%#!'-EfN98G3hDKaL4`)8maN!"j1`"YISB1US)
+
+J0F9G'XBGqj-'[IF*3[9H"6&De'+Ud4Be&k+S%B0A0`1G1UDeeQ6V8V0ZGIL`dT-
+
+Y&b"HJjEXJ`$@qDRGcaY[[ppDAZ2MS$0heXjPCTZq!q,a8-j[%3IH2YeeZLii03m
+
+EFJ9&eIeXh*!!6ekQ1%(M9H9AQ+ADL[!*M`(6X$639PjiDmK9Up8pE[qTq6+*S$q
+
++iE16fmGUbJKUTN1,mJ1qYSqL'Vf1@AH,A@YA,N%'Rc5-+#6Pq*MRNaJe9'+6G'b
+
+42QM6$BRU),$2N4U16TY()@LM#JEA"TT[PD9H$ZT#TV)9F54FHmHhh&@&M#"EPZb
+
+c1UbYbM6lLf`qNk&0(6qh,*QDIQ9qkDT&8L!'dFp)P+K3NHP1)6@YiF")h5dfk,K
+
+c60ch*Nr`$53qF%pR"MFGpidlepPf+SP3j8e64"e)d0,KhVL8"ZTa!MXAmUN1IfQ
+
+T+XJRAKb3!*G1pH&,,!'Q@-Y9d$0K(9EK#!DE!mi!fD@8(M5Sfh,aq!#[5hH4LD,
+
+U+6*d$-*SAB4q&DXdrd@1)QSr1PFBCeEQfJ"B"&9FRUHK%CXhQ4mADCaU-KX*l3H
+
+`[,jN3QYG'NZqZFj2iV'%2Z"fLFBQVM!c8Y"TbiPeRQ2`U4`T+2F9e!'c0L03l-2
+
+%QBXXI&31-&0iiDF9hRQ'(hTJQ,rjMrYNcjPI9"D`-p9#R)0NTV+BFY*TELTI@R4
+
+URCeDK+I+8+EKCcMl$+%Tah!ra2ZBrl!2(cET19D0Yr0-NbVT39KrId2f"*pHlV,
+
+%!iKA5$,4'bh#B32dDE!1a%f-Aqjk3pj!Ka([L#+UiL()T0(1rq!feNZfqA$VbVB
+
+&0Yh6HAHJGZ!XY[YVlfb5%H('N8d-'YS[F@0UmX)mT&[m"[TL,*Zka1i5'VZF,Ec
+
+AX@%RZDIq2VQbJT`Q9eD3!!I"I-))Q0*8SmXGVS2BfhkJ,bKJ"+F*ipJJ`p*T!U3
+
+DpcYdQkMkBS&eH)q-eU3Y-B$6S&4dTq%fL'8kb*EM%fMi#"2ASlr%[F+80JJXHTS
+
+"AL!A(CN5bF$Z6B)L+IkYCR,D6JCUA`(8[AIh&a'1p`"hJSS!TFMd"4c6)K"fLF,
+
+9pB[&H@5XZ#@hNp6VBFlrDN(X69L4@B[P'Bf9P2!3$r[EM'#'IfAIi$jJqM3P$h3
+
+5[h#*@TQp8Yc!k#5#F+H&1L$lRI[[!J@J%q+'"9,`qqqDfDk#,8(L`AlaHFf$NSV
+
+LEkl*Z3MH'qa$T4c+-AlK6S5ihGBl'L3P`Pm418P2#k9ih)2@FG&cjd9!`Pd9amF
+
+[bSK(d1V)YfrkBA54&D+Tp[BAll`MjiGFe(,h4d!0i"G0Vkjf%X+P,S+XZA6K&N4
+
++3[+(-m[(#'TI+LRKHJYT$IZSeeX9pc"Bl5208bQ$rL'cfGXL5FAZ3#JQD,fU3b"
+
+dHV(RNeCedH8qPFZ'r0d9eT!!1`C6ZVJTDRNa@P*h!%IGB2QXLH[62ZV"@'[q%Sa
+
+k!@D"1D'-ZaM$@MEc9$8N0`&r9UBlcm1RcVLl2PceqSU2@FKRGC'$DCK+c2('25#
+
+%J!#DGIKXf!3BLl3b#kF$XJ25"HF,Dq(N[JF(YV3)kBFMD+i`pe+`ZY*!kb-rb9`
+
+dFNiZh"$qJ1YL0%IC0"L)JNm*!-MJGeG`F$'fFB5!U%IZfSi,Tj3GT161l&K%+rD
+
+Tp`"*eIT0aLqZpR1Ip,[QNmB"6G##ePCr3PDYY$[1!CrQa0C'*XUdS93JGJ*Mbk+
+
+1&ZHa40%1ETmeL8F+RZ"X2IKN'8[N3VJUk8H0"+#YA"XA%ijB0l-*6+Qa"X@&pNK
+
+m-iEpSaDN$qDq5@`rk,+bAXPLT8&E,1iJ`E!"mMKEGpJDNrlYkF+e*HAU@P0&DhI
+
+c#bfMXZkkYPAq20BNjbG*r4$TGATL#4%fE,h,a[kA'([2)Y&8`4pl+Hp'I5a8SAM
+
+`h"0&IThd,5eFm,GH5PBPG988ZZ!06581[pFFBY)$Ck9#Vd,+bPk[!RdT'DfXV"4
+
+AI2455J+11ITl9JZ+&1K""9)FEX!SK3M!3J%*hX%dcdG*Cej6$@LG*-e*Nk5M82A
+
+'2(N$%q&J9b8!kZqAjIVq-M&X1cd)NaYDZ()iQ,MpkN&f+J(rjEE+MT(,&ZkcFmD
+
+!,PL$JbN1"@!$TLAlH&NPqraX9*U&c+)f1hGZZR8XH,&e"E3'D8aIB4HjFL$bBcP
+
++kVJhl%'-4#ScI#rB1'3jdc$(6X3DS2DNi&I9S`RX-$qSCH%Q46e"$9,C*f"lkYj
+
+3dR'%!kX3"JA09j!!5YSJDH@U`r%Zk5FBbAjb'-1j"VNd@6PBi@Xi)p#4DjCZ(%F
+
+8&%JZ,l2iF3!i#IIGkZEr!#+UCh%%NbY4h-N5[i[HI`m@JA@i"6l!Rrl#R5Kk#DJ
+
+c(YT0RRYf5`)rU6&f8NG0@BXMj15)dd+rMa,9iKEEIL*`T6SA4Hh[NHR'3r2UB1A
+
+c0TiUQCVJS6q(3QD*&'2-h&eD+k%1A$aF5S1e+F$185XY'K4ZKEE*S6MkA-l)m6-
+
+TcrNJpH"V(EKFS`%@2R&CD!'G0dUi!)2D5U*&4,MdGm+jSVk,Sq5S$Eh1lj1f$FB
+
+m,I5pDj89rR4maY8T+ZiLLG-pMFKZZJYUZ'`,dHpjUmjbp-&#G-IG*[&0*hBGaCR
+
+[a%lPZHc%(qjle8TpS5LrhP5Ur0rik1T!0dkj@Dq2Fd'`IA9q&8de'Rr)iRdihka
+
+`mpPMMDcRZq)i&hG*pqX6A8b-[$V8CII&b`!M6mq+'bp#8q81YYb"X2,99ki1PjZ
+
+LR&mAESHLLhqLq1[b#`8+eFrQ3-HPPJU+!Z,e8+GF$h8U@Q#-8A9-%0q+$fA$Slc
+
+lB,N6lKi(X!Llp3c(E5(585Nrkem8`!L+5i2D#24hJq-$DCU(lZQBrHMeY"b(m@k
+
+L,MPHCUqhF434p@92rh8ZC%KN[ID!kc6qKGNMaG940%aSdX2d+KGIc`FF[#PS9)m
+
+9*bH'A+(rQZ+CDHYAX-i6GRLkHXNGEEqFbk#qFlhjKh'L*cpm8SCe`e4-iG[52J%
+
+L,))8e`Rm)(c-3M1G0R8KIp5k)m8J1Z!N`&)P"Dq,c+MrjIh@YH,)#ia%&p6EqDE
+
+1@fq$IHXbEfGbh%"pQPBYlm&(e"fCk1pl*KTUf%f4@)L`2242Ej)NN[!JH1Ip8YD
+
+jQ`N*YGZV#N%39XAJJ2#LT(CET#C-[*lH!hFDeURbb8iFVeAb8T%@pkIB*CprE))
+
+!lYI8-'50HEM-,JSl98p"8h*`dCk@jK'3!,VUqN`ciIMlfdidBUC)fjRf%FXCU[V
+
+l1LMEf63+e$*p$)VBDiq@2aHF0BS$5f`4c&)Kaj`KNRi09bNiCl1BZhTG5kedZM@
+
+l#,,elG2E(d,-jjGID8$Z'd[6lED[pG$AZM%fh8E5VaAlT5[faYf%C'N[GemH-f'
+
+A3jaR5G[iEhpa9pQUGY2kFcH6c1DC&Rkli`HiUHe8[GU5`5Dh['R`TmA'[Za,+D[
+
+IIZYII6jTC[hGZTZA96GIqEUIIMp6jp2kiCk[kU#[UH[RaU06`4C!4%i3HFfMTSK
+
+eF9A(&AHkLX+rcV`r$cA3')2cq#lR%CaT"YkP0'%i&k&aEK$HV9q3!!+63DG%a39
+
+i)2Z!i(a2lN8Jp%J@l$j-SeDi#(KIe*-aF&k#4*9,"%QPM8KY[-55eQHYf'&kj`R
+
+3&6AM)$jLjPKpHjbR"#iV'jL%HmlFS4Mrj#$*2BIYX(L1JkrL!BLMAPCJPGcFN!!
+
+(1$Q$`em"SUH-P)q+a9-qjTp0id(G&M&#ET+*(JDc$`r(F-$B5$m8Ip5)fH%QA9L
+
+"%&6K5mL&Ie@NQBc2cDqUTDXY%HCD4lmZ,HP1&22c0mk(eETE6P!MYHN4UdCBNQX
+
+ABfQCk@AdkTXQUr9@BHIIZPaD#V'leG+@cfjDIkpX(IPFGGq[%H#QQII,CX4c8V8
+
+6NYp$&4lHqlVE#PV1ZkdfmjmFk5Zbk-2V!UDRd&NKTq3"P6ZRL4NqL0K%#fF12Bm
+
+6,*FNj"jBJJ(GK`T!PRmJ4+r)cR'&'+!c`)%,)C'9Ie8UDkJPCQaYDhEGJ#FC5&m
+
+5QU`95PT$A9RR06N9B#)#9hRjhr!HC(6`VU!UTEj@T63%fbia01chCT3,L!XDZjr
+
+M[Xe4KU!4c$+L'QhpX3p6cBPdm&)qUXL#61NUQ0`RZ'MRS[*a0-EVp*A09iLQK%U
+
+''8r!a$J,9ieAq)RBE*FQU"lVGDq#+'Q6E#r%`L1f`TIlhC`5*'$E"B@Y@C9"P*e
+
+liFNKT'VR"CmL3Ehm"MA#VBa09H%F&UFAMUG@'0"[YLG&a'4Bb%Xf8+EARbZ*Pf`
+
+PD,a&IVk9a20kPMBbJS#kD4@am"Q$+YG5+q,4YqIDLR!A**VjpRL%q$I9&le,@,#
+
+4cMMb"hr1&V-(QDr-Z"MC('6X[0*)-VZ&AB(fGALF5SEI"e)9qV%A998CTd)b9@Y
+
+RN['j`R)Ym*B[CiKl!A3#4T@-kE)9J2VAaJ2@+YF-Rhm8B-qqfD`U9Zc(#9CVPME
+
+eHC*RNUHY'l%p(ZRA1R2UpZl@VhD4cUa48aI"8pA5L24EE)e%1-r@4UVBdQ"AI2L
+
+DT+[8qb*qG%ddG-XN28NIbNCJ+(0hP-h$Q&VGQAV#J2-4ijN,UFbhUI8YICLCLTE
+
+-l+cdJ12p$%HHh5bY#YeZDbdimKc#JNIN#XHUja@BB@pjRQH*CrcZBYA`c9pd9mI
+
+feJKBAVa@Cd6rqcc8`Ib[IJMT-abcULGfP[MLX[dG[X#FlqjJKBd8-UUj&m)&Kf9
+
+GMH!+hcAl5lqCiPhHe@Th!%p2KEK+j")2($IhG4CAGG5DMr86hl'lTHdkS,kX'k"
+
+qHP+VaNha5-ic*JAlD8JrErHk-&2ME,AY&cJQDII&rHfG[6fIR!Fhq`!Rl&+`Eb,
+
+dk5H20Z8@UBZA(cabYj1k4$P'@e,hm@FX"FaiQ`'fh8+$jV`P0+R8R0p+Xffqe,k
+
+fFdCC+E'3!0IE1H+-k$6@pfT&0#UfR@X)dK84dhD445jA2h1l,Qq4RLeDN@@Q6hF
+
+rNI&%Kr)6RIS(q$Dp%*62YlIPQNH*EEia-XJQb#'812[)$LTL6THBX!F)K6'2F"e
+
+EiLpeI[$bdFlMcaQ(YlXYab3Ld*AM'KIA)pV&M&pQqpA*MR-0-6rE%18f6N-r5ce
+
+$4hc)RC)[QhTNC90Fc9a*A35hVMr2pTmQq8&Lcf"l,6,dV$1V1$RYBAUDV+dl'V)
+
+6@!rGcKY#6%`p3GR4r["mFQ-*aZpKN!$Ek$EJk[a4+I!a@#!"D"1fEh"B1G,9(m!
+
+fBG2qiNl0)c`rXp2Hc@lVG2AXS%l&!HFCiH'Epq8&1cBN%,[kiZ%#6K#9ScMcEFd
+
+08ZMJDeFTH#Rp#pLA*qjY`41*&[4&a%Q`&,hcR[MXi03!SUrG@3FrJ`(N+-i4Vfb
+
+AJ!8SPkJcGQ#TN!"j3ZG-ID*I`42fFGB!%L59*pL90ETYR'D6qaGfc@E%!h2+3@*
+
+%ZLiq3VqiD0UfJEIH)G0YU&GI+kS40DXBc"#V*mHElQDDm,1#TEI1P@)`bePb"+3
+
+"ATS!$aB)LYaVjXq8GF1#Qk8db91)0)lL4b`Sk,cEJGe`DQpej9T,2k6TDC!!&DA
+
+$5fZ0@18kZc`0dTLlS!I!G@ArjkMi*+-&(alm(G)MqFS*",BPSp[ZYAN-EJf&lYF
+
+YC4`L-[jr)5%-980#)%a[CfmJ05ic!*!Bh`!,!Fd"N3#3!`%!%J0*!*!&%$16!*!
+
+$KJ!!!B$rN!3(!+6#c(bkBHJm!*!&-J1F!*!&%Ld-!*!+*U30$3jKER0TAh"bDAC
+
+KG'8ZD'0'4LPPER0P!*!*#MF!N!m3-j-!%MFd!!mdq!"h!94849K88e"0)!%!RqJ
+
+HFVDCiMS!!!(B!!!$1`#3!rd!!!'PB$Lq13#3"MD$%3!)(,c1)BLV!Cl[9LJKU9X
+
+Q&5%U-N*$Sc66PqB"$i55HSBk*Z3R,$25*bSLJiLN[V4"(LHdL3JCE"mUkdJT0Ih
+
+Z[DM'1GN+ZHGGTpI"EhA,QG#q64YI@S*ZCRC@1cNEY@GRI'XccFki%+$Fh16I1QY
+
+'CBfR'Pm`cScmJdF48ZB"fVEPKdNUH2fFN4310fe4`91KfPKdibXPd%fE"mb'RcY
+
+"8`&LS3V%S+-mV4`qaq(qFh2[q3+!*m2"GcJjR#RQJkS3ihN4+Ch#A4CM`K22ZNE
+
+5kVl65VA6'q&P0J5#ACe$&#X9G,E#R0SE*XG--CU-@YdDMTPUY#lYR33!!&&#K93
+
+)T!#i3f&r,aEj)flX5fC)4+3-b'BMIbD$JGJM!DND6813!*DGj3jKRiGNBaBL0rE
+
+$8$)!ZQ!3j*!!1%#qX!p&I0lNZ-@Af[MFAKr5!S8("a6L,$BU8IL*3jcKp[M#LM#
+
+Ej3pjJTbAh+jU!"AJRlZ+e)B+SVkZEC!!`S+f@Ak2"i,DZACPSE!@LpbC@@i!3ak
+
+IX*Br)q6eCB"H[A5f0(-[Kp2F8HFbpQSMV%95IXLh1XK-CSX45([eJU`[*2E!8"J
+
+$$q0'3#S$T+Ad48++6BKZ+R,35qmdkPa*55Rp8T!%Pq5kcJifI5aAAC,Elkbha')
+
+E5f*eKm0S-q6QGTENpX`fRE0,6Uk5)K6kqT(&K#!#r9j5)T9e&XCH-AqR@V)@chd
+
+i`ardaA0Cc'CmRN"1-'pb4,Cf([*jBfdMSmUZk&qqcc8i4[j36!(MFpJ9*1,`BNU
+
+@Cl(ZF0XIqR%[RKl&QJ+a9#+@%-B9!J[fiA*!4ZKa'4NqY,K0A#QQ[#!ACKD(8KC
+
+pNE)q5%'bB[*9ZZ&2N!!I,jQ)$0P"'&i5BV9m)Dmr3lJI!!!0$34#6#kjAh"bDAC
+
+KG'8ZD'0'4LPPER0P!*!***B!N!m50#)!%S+@!!mdq!!k!#&38Up+8e"0)!%!N!-
+
+F@,TKk-d!!!%H!!'Mq!#3!k%!!%T40DhB)3#3"LHN%3!)XY&i2S!q%b"I@NQ)R@9
+
+a1EMTGFMElRk)E6FTYP8RhrRY2BkRL3JCE"mU1bX(i*MY08[lV(I[46A1c9C)kIk
+
+[!HSr!cbkiqCN+*JD-fF+p,6[#EPDG302feXGr&Tf$[0NYRdD21eU!QThh'b2e1i
+
+@4rmUH,UdQHfChU8pa(ET#UM,CK!cdc-lr#,%pLm&R[jP!'Q2[Ard85LYP!8!N!-
+
+'H1PeHCCZ*BYR6Xc`E'"HIR,+lHfLh)qDbE40*r,ekaXNjAMU59rZqXEa262jacV
+
+#*j!!cj*X)pYc*pRX#&rB2X)lABcYH-Ib@MbiAFkhdij``R15%Ak,K#pmm3R2cQ,
+
+Eklc1K8FB82KcI@N#a(lY+V+pl'RNPq0Hj,D4KHccBLGI#CiFrJSCRANjX%(D)#r
+
+,klc-bc2c'U4jq9eH%k-j+-V25I3E0,2"bTTRmHbpBJZ2mUicAFJHQ,hCjFHAPbb
+
+HA6`pXTJIlb+hm%8A)iZCmFM#Fq&N1@!"mPH[m-I-[(V6Dl3GTGZ&rFT'23"Cm"h
+
+!'G#J5H$d0VFN5HqA@2qh*+Qk&RI*8T(2&@Kc,I-fGQYD&"%krYQ(1(UahY2Hf@E
+
+(RHRbYqIIUr#f"$0a)K"adjTGV4NF9Pb&+q$*[eIVAl`Xk&N@02(TXL40c-!-CQ@
+
+qZrMG&(D%kmUJbpmdrq5@S#XD5E+b$VbPEH$[KE@fYrKYrZL,`hmQ[f0aqQ5T5*)
+
+Qql4q93FI&mRH4ZXjI!qQHVl8B!4jljl3TU6k@L2GiSNh2ZrpYhhbp2TN+YhGjJ[
+
+)i#"Seb-a2TpE"Xaf4BqS5@)UQY$6Ii3NAABG'*Xp50L%`%"-GPG9b6fD,KZ"lMB
+
+P9)IrYRK+5rEPS%cB$SaHB'cqlcB$GC,K#TTdU1%8QR3BrSIK2j8d%pDNDk5VHHk
+
+'eTPKY5F59q@JYlQpTFYG+T@-Ue'5X4)$1J'X++S*j5k$DN+*Jl1ha9AMF1m2#+Q
+
+*DbPeJ[c0Z"CA[e98Safbc0faH,(XeZ)V9$fPkN8eqQ43h"K2U5(CVjir[NC2kU&
+
+$r'T55qXK&3qYM+Mk368V3eT2MreiEL3HLUE$UV`!HTLK+Q&96eC9,I,lr'Hi@T[
+
+DE@p#A&fMZpAf*X60EQp5E%p"R1PCE3KG4akNPr8Q-VB'VrV2kifl)GZfR6bHPDN
+
+2N!#qF*GYfKYd&R`49%jI'XAp6BqT5D'e6MfYbZBhZM36e+T%NcbU,"[8VTl2(c*
+
+I)YC&Q1mP3lmN+,a%B)1NdJBbf1#L6ka)X'N2Ef$6@pVCY$A[Bp0G2X5GrhKXiq-
+
+EFG"R2E`eFdI(CINlIGCr8CT"rMRb,K+!p3B%Y2eYm3EMK2LJra$mKj)"d6mN3dD
+
+S6F*r&2kM@GPlbIaa4fDZ6F&r)RmE[-EL2i(ITeNfUlYm[YDj-585PlZk3SPS1TP
+
+-+ATUEP3ZGb858683dL1*&!c5F*C5EH&3Q%IH@%U2cB3aYIFS)AA`+5Y)2$409hS
+
+(hq$h)TcEX3cRpb+mT[YF0C3+T"-*6Gr1LK-S(TbEMS5@"b1alEc))2&+I5VX(Rb
+
+!hh[N*M@ZVP"+r6jhPF[G[RLR)eC8HCVEXeQIca%VU[cHaJlaRNja&Gl1(GNM`eF
+
+Af*'Y)DlDjA2RFIFjF899`0@kbp%VUMUE@V0m@1r9q!,"r([P6B%XhpClmaDlQr0
+
+aPB('KZ'i1Vp2i'-kU&cD&XMVBe+c1kX2+fk1Zk-Y(eHrY-21ZPRF2-mbAckZXV9
+
+M1'kfDiNr(eF6D,3c)4CAh9&9PBqVDfl2kX1+QprC--ahRD[$0FaIRDpTK)qUE,A
+
+#lbY9cF-k-$-cbQEeFj!!1b""b*51`Ze$aM[V+2[9[c'FV'HXApfeKGkMmcGacX*
+
+j)mjZR*%SCH2mpcMRi2`icVNi2i&c(Xj8LG$+F(i-jhbF[iDc"qI[iPb!meGa,Pb
+
+rqV+6F#l#2GJSa[N[F"k*meG`,X(j%Ca,FIjcR%IKr$$1C6Kr!HI41&093*Z(mqG
+
+`(S2cNcL2aAN6cLIMr!miRi,cYh%HKc-bcr%iraMR8h(q,-i6F+DkN!"f#XlI`hN
+
+LcPr'H4,(HcV18-KNR*r#H3V1hm#j(1F[iM`9jarKA-&a6&XIr'mk9kjIIF',1&G
+
+pY[p(p6K2jqFCH1FR1-r%qDFicm,j#Tc2`2QM1-r'q@kFUh(HJ2-FR1r&Z@Epp)Y
+
+*Gl@i[`VRZ6KrK+b@cPILA)rcM6Jhm(IQiGk,mhbF+5[APZ*m1mi,H2a#IMk,Rmp
+
+'r)Ga2JIR2m$jA*b[a[NmR'r#H4(1pe!L61GEF'l%q3kF&q1-r,k*hcIMI#I1,HZ
+
+$[hS3jeEFhiIc%Ta[*Ir3IBp3FPc0TKN*kcEI!Ar`(I!'heR!I@FKpjfcZ1q!0rJ
+
+1H)2[J$Ii$RL$li!hq!jiJqmdEPcpFkVQY($I!Ar`(I!(hfRQqJ9[m*dflJ-AFYq
+
+jL2[18ZilblM[,1HqXi,lcNVZ1aGchfRR[Y2"IDH6qm8UlMZV1Fieh'r@FVqjK2[
+
+0TGa[,Z0qFcPrr`VZ(eGb[lQ+qm`kIVkDqmdeh'rJdr!Cq$Km"Ri0Ri'I`fI'FMq
+
+iP[X-I"mqFmV'e8r9iA`GpaN[I`Iq$Cq"[m*Ii12`MIAF0mMRQ@pFchhM"Zi60h,
+
+I3&k!Hq34m"hi0RcS*ZiA0h-rZBAlbDhN*ihaX-`ZV+&hTmZSK'ha%IJ(I!6q!4q
+
+"Em"(i"[#lq!Mm!hi#(`$2J,IJ)r!0q!Mm!hi#2`12J+rJ)md#4q"lm&(i"[`N6E
+
+Z)r!0q!Km!rU'Em"(i"[`%IJ'I!5q!4q"Em"(i"[`%IJ'I!5q!4q"Em"(i"[`%IJ
+
+'F-)hi#2`$H#%Em"(i"[`%IJ'I!5q!4q"Em"(b$IBqeGa(eR(I55$qmF#"a3IZH`
+
++bSqNMe!1rAT9r2N59*9Aa5-VDmJ,$RlA)b1qr&08ZH99mGkX+$'3!!*AMAVB+Sh
+
+V9!cd[X5ViT0(Uq)p)&!8jr6a5VM'TVl"rrV5LFP81)S+fJ9[dkpGFHUDHlli(&8
+
+UkReYa$p+RXiAiCElc2Se"%T&c[8SEUj(d92bIrCIq1G9F6Fj3Ee48Tq3!)8k)FZ
+
+Ye%EL[Sk*k-%kk%&YH1pc#1LBQ1X3d$(KCe-SSMrV3VD&V![C&V)ZC&Y`H@4Eb,U
+
+3!'dKkd+fKD`,f4Db,Q4Eb,U3!'dKkd+fKD`,f6QbVQD4G5(E3YD&,"eCei8mkd+
+
+fKD`,f4Db)@4Eb,U3!'dKkd+fKD`,f4Db,Q4Eb,U3!'dKkd+fKD`,f4Db,Q4Eb,U
+
+3!'dKkd+f"Cc)YT!!G5(E!NjN@mLkN!"Y)HY#YS@X#pN@XLjN@mLkN!"YiAh+YPM
+
+@4GR9eU`,f4Db,Q44EfCGb+jkXbi[clV@[jje)FZbXLjN@mLkN!"Y)FY#9V8pkd+
+
+fKDcV&TjehFUcVYZb@GGkQGS@"V0h&Ck2h2S&ULCZma'RQSKU+(`%95(`KUSLI!3
+
+q!aq"cm"(i$2`%IJ-I!3q!aq"cm"(i$2`NI1&Mm"[i#2`'rK)%rF49)IJ)r!Ck"X
+
+q!ap"G3Jq!Tq"Mm"Ri#2`'IJ)I!Bq!Tq"Mm"Ri#2`'IJ)I!Bq!Tm"6[J-I!3q!jc
+
+`'IJ)I!Bq!Tq"Mm"Ri#2`'IJ)I!E[`fIJ)q3c@kZ*m"hi#+T"ErS)r+IA4q"(m*(
+
+VA[F4q)hP)kJ+`8IJ,r!0q-Tf(i(I`%IJ0r#4QlQ2`&F-(lRL&ZTCHl@D#0q!Mm!
+
+hM#Uki52`$IJ)I!-q!Yq!Mm!hi#2`$IJ)mK2i#2`#2V*Bq!Mb&2J)I!-qdXTp",i
+
+"(i&[30r`$IJ)I!-q!Yq!Mm!hi#2`$IJ)I!-q!Yq!Mm!hi#2`$IJ)I!-q!Ym!6[J
+
+'I!5q!Cc`$IJ)I!-q!Yq!Mm!hi#2`$IJ)mK1m$jq!Me"qiXp(9#K9kF[@Npi(ma%
+
+9B9G0NiYi(HbU84(kcS,$UH9BaHJlBijq0Gp4kG@2,cU)aMZS'1Xe#`iMhe%ajXe
+
+eDATR-'p@iA90Ahi3eIe8J2el+hqkThp24CJ(RlU&q[e8M2@A#GpiYIkL-[5GmBY
+
+ShS,d(AhFhNNQ%C0bmd1hQ0DHcbZ[$lkXHcfZaKDAYhAhP*ZNA80)L#SfjdE--LR
+
+rkb`6Nm(qf58U3qqpB-kV[4iU[9TTjhAE*j8Tr(c%qee-Je8beYcRNkb9J(R`d0*
+
+ACmHT$21Amlj'1P3apQj-[199he(TjFfhc5IH9)$eiqA*2E-b9AJqXZ+H24XF+2&
+
+mj"q0HT%#d%GD,h"UR%8bFF(fhRb9SZpd%"qqQ4#ZICZ24'-lM,Td2)9eQJ,,Me`
+
+2*lVX43H!c8HQ[V2jL+42h6!4`UiF`)(K[("J11p)lQ"`B$J[("K1#!H'mm+"iEa
+
+`B$J[("M1#`H'mm+"iEa`B$J[("M1#`H'mm+"iEa`B1#%!m0jiF$!#3H'im+"iEK
+
+`B$JZ("L1#`H'im+"m6iF'!j+$VaeHi4Th((*NCRM9R'RRFkG&Si-Ti8M`fPRF8H
+
+%)m0TiFK`fQTH1B!M`fNY4iE6`T(KX("N1#FF'FlC`*d6MJcRK#2$+H()F%jXGB"
+
+l9)VJ[+J8`BRKb("-1$)Fp9cZU("NSh*`jB+K(@,LpcTTcU5JZM,P#8G5lfc4i[d
+
+R8S#j3m[@29()#'X#FRD1Ll%R5Sie@kAQEl09I-!Q@'c+[9RHh$3ZCd*39a,*r5[
+
+&D*IIi4#JKm1EaYPk-0L8@RM,'k+-RF@DGDArE6eiEh))d%+Y3i!@6$DP(Q,hk5'
+
+L)p#CLN6hZi2h@SF!2Faa#0#$C213!"V#fp5BTJrXYdV[J%1!'USG!Y3JfC4US%d
+
+0AeG$A0CGN!##("#&pfD(!$8d1!eiTF'Qe%6D[[f-`V$$8*Yf)*GD[fM02EHml!#
+
+`Rp&C6JAl'B(E)jXVY8IL[IZPXEjqcAee[hDXf&b*FhY)'a%K,Cl8SZVIa,&qjTV
+
+(kR3(!'fFidLJ$FPY)1HUA+('8`I+%piPMK)jPf6cF+hQNS6kEUhQbmi5Y4U$c8#
+
+Y"SRDLHU%p`Z1%V8DNme!V@DDZL)51Z!1AU-#V)bSe8Jf$lX$,@RiVMXmj#cK$Mi
+
+f!j@*TK6-pN4P)Qr0jZXh1e48*MLh8KR$pMP&%KBiTITjQaCASJ$IVVhP'0j6(3+
+
+FBS&$J&0XB62JS0@4P@Ui63ZriaVH#adP(04Nmj!!JiE'X#6TF329VMKqlIbllR!
+
+!F0#&MJ31bVNpA0YV5CdE5abSlBeIFmrPAhHUU1d*EJpVSkdA9RaF'kHZZHIU"UF
+
++E3KZ!cPTLkl(hkf@&kcCI)AAS5)RjG`HbVdLI5JSGakSPhXrjLM4SfDbHA6[a8C
+
+pV(YJiTTlEMc8Z@,[4B2E`aAbGPh6abVNmj`P+Z5#c8!9p-a)2+ce(kL#IX94SJS
+
+Uf3cd#e5VmI5lr3+A1NVd#h!f!eUSdYjY*0%Z2pY43JZFc8"q59A#6PhEhpMTEA#
+
+8b#p00Jpl3eZdd&GcTV1%0aKX(ZiMD91L@Zq"$1S-CiNq%X(Q3DIma34MGI%6c[$
+
+Vfk+ETlbZKMJ$TMZc3VV8`bmF!I4J3c2ZMlK$9@3PE3Yqc"h1FC4`"mPQS2CLE'K
+
+q[2EbKii5Y4I*CU!MR(D@ACVCPIjJrZ$9(58k`Qdf!jNPDDVa3'Z%G[QR(#8b5mj
+
+Q3!XcU4RiK"C@1%TSJE0j5!ZKM@Tbq9JhNGIV%+#&-a`$ZM8CQi&U9%fJd1AY[FC
+
+4SKTPXXReF#(q#DHf,NG'H'c!V1f'A%bEIH%&6+8cA`LVV%bK*hM'*A3j6*)1STP
+
+,aXVaFC*d--d%$XRFTY+''FBYIG&EXbraYpQXVca*'QGZ)Qr%3#-dCbRfCeB-G8A
+
+3A$,Y51``,f-)P`XBahUXQ&$%T',8&HBfLCJ`a+3K"V1a4!a0$R09B!3@*Yk*'&+
+
+EDal'B@&fP)L*4-`Ba0a[a9$IKFZ&-9NH(T01e0*r&Z,1Y@+S4d0IJ[&KRl*LB[(
+
+'Sq##q*!!-F4K'1D$h3iqC!aT,`bcZck!pf4-!Q*q*NNhCX`)-BQJFS%NrIe$h8&
+
+@GmB0V1kFalCYBh@Rhl#0Ik94YBIjTY&%5hbec&G'Xl@%$X1CEc*Y*82B0#rr4kc
+
+1RThMBmr1TIq9q2mBrKr$rc2XfCV*q#r$Ic[qlmEr)rKrJ6elV)crmr'r!IprKIp
+
+rCXr@iUdbB#M$@k-*TeB5UP&$IGUmRS5m8+ip"6-Q5Z-k1JRSPNpN@+3PU%fd`i`
+
+cAQK#%EAh"F64#c%P*FG@bM*DiY`aC@8NPSl*rBD*ZC14me@jiS5D%qE)FZ@ap0*
+
+L,4d2*fY5'K(!,dNMRCb1k@TUD9Z[lY2d9-AXrKLG#a('(eUXT9*D$%mCN5@,%MM
+
+9UD%8MbbC6aMiBqf4hMk#YINY&PJbMjkU"cq'haC8Q1IDP$kR2e'GSBDp*@m0P#2
+
+P@Z+%XpkNUdT+PB-H@9G$'YTl'0%8h966Kk"*L*bMpPI-0L'-P2N&%"489KU2&0D
+
+%p)jiG!#2P4`hT+G9#ENA1Kae[JEH9bUk%P1arh9(4Ne00G&),%)X%c9ea&9"$Pj
+
+a&3m[A9%Yjbi[31KX,D4%JeT691Y@SK@cSFECd+"i'irE,cM`m!38A#4A,%9M8kI
+
+DU+38ZE*bMYbIQ,XSM-XCD'TDUY)c*B[5598hAU%AkCSkQm5Y!FI(H@-bUB8L&-X
+
+GC%dNeCFa(XjkEU4(RYl9PD$FUkQd4%R'j![`r&*9+5N*95ZeZ&ZQV9"VSL8cbAp
+
+@p&5%jP5(+D`j900IdJ@*0fK%MqqKaYTUVDF(JU2($"mJTb!aMp69(R34&&Ed*qD
+
+8PRbiG+BD6DUP*9N%"E0$eA+&5E@lFXjX)YpiFU6KI5Ykj"#NNUZLqEUeY!6%&8c
+
+2Z#LpXc`G!b`aji9(N!!U9L48C"NmUPQ2V&$e#P)Fi"QkN!"Q4IE3Q1L,K**GCZ"
+
+)14T*TY5iU[1!ddUPZ)c2$L1896Vk)lMl%6UYj)p2N!"#hA*!MF*'HC6p*KjjpBe
+
+P!df`0LHDp,5C"jX)Z-pV+&846&$'hU,(jEfbGF[``fA+F[)m,9,b,N84aaiV)`Z
+
+,`!HfeT!!GIIi"2NR(!V4Qm-,iE'DqISJemBVla&'AV`UXI2er+5b3U8(c!bX1C)
+
+-89qPb"+3!(fi-AYT95L9eP@H+p&Mi,DT*U%!dJbbh@Q4C%*,QZEY#b4FrN$ZlS8
+
+bFJITlRLP`@1qJlH4a-Q(Yf58H"X2i'aNZPH8PTBH@eQ+"-SGLZ*0C1AZZHDG@`d
+
+CCB$Ic5&J3e42c#%SAhY5bc-1&A-)1,H(Dqe)-Nr8PcrK,&&V0pL%&X*JX93K'-d
+
+HFG2N9je0rq$rCp-HZ*!!6@pCc+Yl[0lRSSQciQ-ar1f6q0XZrRB`IaX-mdR!364
+
+&erraYmI`Yi2ifhRmEIJ'9iL,DSlq,p*mZl`pd(`PZrkX6IMI)$hdU)r1p)m*VYZ
+
+q%)llC)ila-6p[3dF0e8IArVifkI`Yd-jCjhmEDT5L[H$-p8kjqear1d`rRB"IjZ
+
+UQHap[,e0+q2jfq'FXeVq0RN$Haq5`64Hjd-Xk5Q)*Z+DAj!!@8AdhGZiJqjU$lD
+
+hiJ,ei"LI+p"Q90p*N!"e[MBhlX"aTYrRVX)G+S0d9hF'l["H#$[#G@9NjC6&5LK
+
+&Nj&$@*Rrb@JU@GSBA,)8pk)+I''QbQR'`9YfaQNTha4@XHC`pY#$Ur"r%rjraEU
+
+r1S9e[fcbfYQaeBcIk-IrqIMrPK(rj#0eq*q&rmrKRbUjj&Y22RS#rZr&rd2XSHp
+
+-aAm"F9cZEPm-UefDmd!D48aaPFhY`AaFREHa)a2(!h@+Ur"fYZII+rF(r*lf6ZL
+
+U1klDjA2Rhj[GhU6NhkYSmGPm-0berU#03m69#"`XVYl9fTl(0kqTeHD9aGAi!UK
+
+-'ZpCFH90J@(Gc&[XEKl@8heM3ajITGr[%rJB6j9,f`*jR8eUGYXkBh&ch"eYqEM
+
+kT4eCh9JijRQ@qI,[9ECf$-I0GLhajh(8""TEmh(9(999qELkj[DX2UbiqCd0`hc
+
+AZ6TF`rc9qCT'q+KU(2DRUZCK(G6k&bqMM*AZbIGe62i1Th`ZQajSF2QEPVPDXra
+
+@Ip![5cpm)kHqrjbLR[ab$Qpq$rcGRFV6#bVa!6h,#RUqk%jhJpbUp@VbL6Acc)R
+
+cpk1R*HMpi+TiHcD06L-d&94T8@6*%`EIR3#ZJ#iB$EmV9V)Yb$[R(TA*KpeXbph
+
+iRhNrSaRc,'YpXpHckjQ$3PSX@@-8E!*Ieir[9"lbN9BVPMClGNrJMdYQ5LC'jb'
+
+[[R3pJrqCPLUQrkmU$"bB-q)(4T-j'Cm(1PqlRTQ!(S@@q!%j2#$GU6`mbc&!$6-
+
+F!06!q3bSJDEpV0!2U+(V@AM$Z3i5DZ"m(P*$U,S#8k&1118[S)C@"`QRj(`'[+(
+
+9Q-C`h"[q(@Uia8(#'cLI!@pSLk-ekB3hr!TUq*+$K$G`2Jpd[RBp-a%PB'SA1DD
+
+(VZHKKQml"UKKTL1!'MLI!6dXMA4(YG!"26alTr,)20,$V#@eacP!k%(b'A$,C8T
+
+N,-R@eVd%IhMH3F)Y1Cm(qMZkRKNI8f0MBY$@r4SeK`6(!$9813'S!A`HVVpJTYk
+
+*qSX,@TMJ*&&r-IJ-q#4P(HpD``2MS)B+"`QIj(a+056Z9F10Nf*)5YP1))F9dAA
+
+G(@d2hrGl094cQ*aCS3ED%F@[KZi*%h[8B!1EB2%T&3&NVbNLPK#8QVf&KdSaAGG
+
+#%ArT'+#)lMN6Ka9KmJP9X0VqVrDUSX-*S,EIpDqE[e,lC+Dfhkq+S2NRYf5831e
+
+bIL@-HdX*"%E8qF0`Ke)r`Bkj5Q)hATK"l'B[h&5E8-JQQ&Hm2AZe-DUQ8[[(`AQ
+
+[GjDB[HTM-c$aDlU+l'6TrL&AhQj(LBPINXd$ZC9haQ5h&NYSmIh6DVb,(!,8-0F
+
+aB(+Lb@C!%9a4PHHPheC%Nk1%)[aX(TL$eRA9j!4'9(5SrFSl'AMA$FJf[qmBN!"
+
+YGXq'1j!!EIVj$'L#CDc(LeCGed!6hh53!0#%Rmp$GCSS!`2D+3iADVUZKLDqjKL
+
+JLHkZp51D-2L8AAl2lPA%c)Na*I4ZNEIVbP[2qq(jT!LqqEK[$TE[#q-%mLc#Vi*
+
+6he+"j%abrY`qcU0M!h1a(4Ikj!1EIAAGH%IEGjqc0[[DcrQN2h0ZF4DSB'2QalY
+
+p8Ep'Em-6$K)9E-lRN8i2'N0kSY2M"95`JadP1MdBR`FcSjp2bNc019V"rJpi`cf
+
+1!@TiTi,YU-(N8fB*,qc,%Z)6L9"AE+!VXdl21lVSqYMQ,hrNdeCRe2iXSAXAr$d
+
+Uf-`CZ0GIN!"Uf3[Mk,m@rqhXKF0aTbVjKk35ZT@`2,G46Q,#@90IY9b@V+8CDUX
+
+MDVqXVNaJF&%(KZbj8jU'`8E,8'TC@bfRp!'-&D2,YTi"l-e3e*11KfJ8RlZm,&N
+
+Z4j+jepT#Q+(@M(Yh*"k0a0AhTZ-dRQj*(%2*QZ@%V[6'P*Q4D&6Y9D*bU!q$jCV
+
+3@c)5mpHD)K'j,#f(e9!NTN3RPmmT*cTSi&0,q*L%VU8d@UU&PFmBk)iq,4d0bpd
+
+U#%b+K&%bE1Z*S+SQhL`5`&Z!J6bJ!r64i#B+lF4d-hIj6'!T3MYY@eK'dNclClP
+
+Mf-Q%TJj5ql9lEJacmdTL',aA%X1mYC*Bp(dBU1E'F$93+k(Q8CIK%Q#(XC!!dAB
+
+1kNJmNQ`m5@2@&PXNTBD8H&a,bBDdQL)TM1)M$$4eVI-38Y3b*6iJ'kh2(A8CTH'
+
+j4Vc56K6bD9-MjA5FX*)fD#1"CA*+kC9cNXJY#mY3f5S)M[Ck@"9$A%H@!5DS%FN
+
+C9#9a*a&$6j+%JFEB)NUqP&jZ6T2ci%ND"-3'j+e)Tb!KLXRQZQ!`M2M&+U""BFD
+
+VqELJ'ABH)JPAr8#'BbNrkM9ULaXf3U@-GLh,@JTNZL410qjB1TNLlBqZRPGp`Kc
+
+c'DB3%T6(L-`&Y*DHFV$5,Xr%$DR2%jl1p@EF'h-0D3$%#c0a-#DP4CGr+1Fl(K)
+
+4`d'[09Z5FTI("P#U*RdfPdZlBSdKlalT0r+1kG'e@"dmXP-ZK9HkklL5h8fkdN0
+
+M)iZN9h!E`ldmZq2Ym@iH55ir*8HSTLFdSb@@CNCHR)B,qQ4DXXL3!'CM$d9l+XY
+
+,[8VB*%Kc6RMc2@jER5fihF,HiPM%6%FmeH@!d0Q[UR&+IjE#PCJ"NjpkXU2F2-D
+
+!XKi8Y3i"+&SF!P"81!5Jk(3)3&(Y%)$#l4#!SXP43KHU!%BVcH'%2,c"ibfApZ$
+
+LLe(i(eq0'HiVSP&i8*rVBmN1rU#'4(f95NM-"*[Ra$6UYIN2m4Da-TGHMEDEaZk
+
+S+L&0E98aGD@6XV6@5'qD-iF8QH#J[N(TE6-I$SKmJa$5`mLq+5%JpLM4TK!M4pd
+
+C[r,eq1@&pc(0PHKIRN"ZcI*b6`qfHU(TeD[L4$GU0!UK&e,rm!)9`Y3)6"e`pm'
+
+mZckPcc[a4#F!ppe5&9-!B1TME,Q'Y@dmdXCheD!!b'KqY!F"*8m(FkQTQ+(@JQU
+
+Am@`&#N`AY@TD`SFb*b(Ik46,BKXIMcf1!adIGTDiSa)e*Yb6H&30(1LHLfLc!GS
+
+BqFS%Hl#fhUb6ZkRkR-!mCfdG'&4L4LCj0+U2X#44$D*"`N0$U#A6a4+MCSQ+,Vf
+
+l4"fIT1&H5C'i@AFfTYSc!%2,-T9C+N$laUi2#r9J#$ZVRF2m'U-BrGim)'[ap`d
+
+&`K9Aa&eQ!%0#PF54U$lLD03hU3JXDUFdH&a`*5#`D6Q0d6QJJHA'c+MTFFD`T*V
+
+5BG%!X!!$C4CaR!)[bThmRL1Q"`8dA`'IedBE%`P9bG6-Q*HcEG%-MH6UQ-EFMZa
+
+fLDb%`q6rX,l'0)EKNrbD$#$M8A*[@TiTaKR9E5NeTh0"%NFelb(,eB&q'T`2'MV
+
+55+IENC&NC`VYMG33J')pc"Bac'ITSS6(GGHE1b"9CK+8JSYL,PkB8SBHJLd8%Hr
+
+YQK,U)e+-@ITN(ZkCA)Q-[%A'XiB5NV-#B[d!4*ql,(adCZZ"T@Um&q2UL5RUS'K
+
+C'9*9e!+-K`Zc%4hC*3Q-Gp!RU!DS"3h@16b[af0dpElhb9$DPELUTC08q6fBkrC
+
+82K8(k&3"&G&@K`!8MEr0#DRJK65@"SUV!fV"DdaRA)lfGA3'-G06"LK@+9%(T8i
+
+9*3!+XRpeJ5iDG9e"TNJ&c'e0#fIc0J@HXp3UQ-l4(TF`M#$`FTXM`mZHGejf"r3
+
+3MBN3hBIB5S5fAJlq$Sm6ICUdQ8JFYZk)1ic(mCN3E$Z4mIL[iR&mGMhE8)4Q8)r
+
+Yjh&m'a+fTFJRmIm-Mq1c[pQQ)XrJrqFmMXreCYZ+80IMZ!L2ic1lfFBL(m,r$hJ
+
+FjRNM$PZ,r!$r2q4aY-N)Lm2Q)UILIf&$0%bENf#M%H,F"9l,`8IjepRQLlBaheH
+
+a+FJ6Q4Qe8jM[3CV4(FPDf#E@LRr%2ikjkiqE2,mcSlAMRGN#q"jJk#NZFCDBd3S
+
+q!rhQDr6PbF5B'X+J"YS!34QK"XjRS--DJj1`3-24$Z[r3SIe6a`N1Ua02J06dm3
+
+dLb1$MVUZac514adNTUDCI-UHmqIhpCc(+[&NT!Xc6PDM1I5J+VSZAI2dY-'pG2I
+
+hR%pq5`8fCf#HCfDdZ`6lX$m1hEXZjh'%QEN&CBmC2mEr[r%ifRH#CA+I4jBi"rq
+
+VH4cI&5F-fp,IhSRr$Kj('5L,Sfc`!pLAr!0Y2)l8cH,q#6[PI!RrMr)il)+$"20
+
+d5ISN1,Mh+*iTSKT2f9iBGKkr%rZ3!0qja6NJEY[H1L#(L)F10NMMVrNj@r$F,,E
+
+3I5i'mYH6IZ6Xml3IL'd8A[Vd4jA8$'PFGIfdim'lKMcbbE1J*Gm13pC(RN4E-rJ
+
+fJZ![e,Vm(K1rQ$Eq1rajdN3,rdCX`1#Lc4YkA,NI2fdf8-2amhRB"Rlpk1Gc6qA
+
+i8+8`-1NcPS0MfP4K4-e@Nrr`4S[rCPl%k*PZY3hrI&FVejmaJITYrAAcrb4fFJm
+
+L,qVCpU-IIe9cDdCrI1EcA[k$@GQaHIkTHK*%1bl*2C8'mG1L"3fFIf2+-ZGr!$p
+
+Y-9'@f)@Ij[i(d85'RZdaAX6I`2QAFjU2kipf[3qL[HajT@NArYR0$9crFLlb([l
+
+$@0PaZrMIK%T9%&@AH%9V&rjU9h-lejmaYhHIrX+"[eIrr`2mf&1+9mjfikpXUc(
+
+ammQr*ra[)r+q)0TkJeISGZFIY1U$b$q-39plqBpNCI0fmEm4&F%J`LMbd*hi'cc
+
+q0UirBalX2[e&XE,MGqPr)hD1BYZ&m(ahMrr8Frm9XjT1j"p2m@e'H&kpahmD[&R
+
+r`65KIIc(X,)6m[a6IKj%qDIBp@SRrZPqPmr%hcf2D!"r,2$hqYr$`)p+,km6l2B
+
+I@Mh%PrqLm[RdfP(mFDcXa$cr9)d1SLeGH$eL&ricr5dCr,c@H-*rVq+T*kpll2D
+
+IQLDHIhGA+`Ii6f"Pmr2jhlm!2lM(Hr[mKa*3KYqHU+cA2jpp5rIi2TV&AlRm#F+
+
+RHfFNf+r11'%3raIErKfeRf$+Ij0fi#GCl-$rc[aLMVmJKhrM[3#+r$0jaf08NGM
+
+U2l-p,K1rIk*PkH[m*c2[c&hmEd6Y*CMbcb&reTprHZ3JrL(!rmYGq'RhXf$+2iI
+
+q'EmeUA%RrU(-1b[2rcH!(rQRf+TQ#rji%jI-IbTirK@"hN%q%MaqdS8%PK@4iS2
+
+C6A*@kZMF%jbmm,QRfD0,0e4)4BX*[hk-iAr2!6r`S41Pqk1-b-#IC@laXpPr3mP
+
+r5rZ3!(q"rkEIq@mLr&IN2e-XrkHpi1,&GM[m)dI3QriK9jIam@rN[lkjN!#[jaq
+
+frp&8b1AJ(qq,RH"fkArKA$2rkjl45*SEF3Mle@P4U@MQVAK,VjrfccqK-rXKKZ'
+
+IHbhURc0bq[mKm[j`bMq'$q2r63pYmG2Y[lAZ,K2rjZP[H#'5H96X2GH[rpmXUkf
+
+3!#DDqTmU-FcTTJ*l#[N2G86C(c'M2h,@YG#ri5Fqr(@%hr[5C,UL59(BcQPJ4QA
+
+),C2VamGH%2TcV9pp`BY)$C!!If31mrrmQE3eNCpr8ArchMdCZcLfk$e+5-ABhX(
+
+m+i0jbfhrGphfbG1"2CUf*mVBD4Ed`%fh%6HfraMe"qrG%fK*6),q4[l,m-[k0mF
+
+I62UL1Y3qr(-lQpd'rTb$6dYMh%#cV[46'mB!reR-@m(j$liNUcqDX%cLh,be%[Z
+
+FLKb[8$HFlM2e*rI1*rrIKGr0[(0irK1FeCq"IbMP[krKVqKSEc6a[l5Mq4EmfF!
+
+[q(I`EpliD6[qkZCPR2phGL&hp-raqc5q'lp2rh&Cr@00r0+qer5Ablb9ZrQ2'0`
+
+1DbIqqQ#MNIr5TYDdb9dE%X#Rea,q!IhR-@r96[erZ1X6+%eYhK+,I8j',[$22-2
+
+3(pZLqe+eDrm)HKhildEUfqIIK,mhrk`2qMRrY(mdC[19pVfGIi,rHj(rp[Q28a'
+
+4r%mhkXrQ&Z&'rA1(rMc-@ldMrb(mY+[ML"(rfBDrSG(S2f$m0k-&B4rq!ZE&,SX
+
+pq$q+r+I2IrVaRqRf'[@Rp9L)$k-VMaN!p%rFa9,qZa9rVrjTSDUT[2kba&L2N!"
+
+R(32eab*@eT!!Vrpr(2V[ijmUFP[pTc,i`Bcqq"EUHr4Ac,cS2qV4h`GKcAhqke3
+
+%4Il$meqjqlbS[qr!2j*jMmhVRfSr152jTp-4j-[r@2fCp#m+(iEqGZ![!IjHrZR
+
+0q2cQC6dG14arj4+2iErBXCY[p,Q(re,Q4Iq4JjrPAr%MqZ[(Aa2S01TrY)-$AA9
+
+'X[kc!rmSi1rKRq%2TIVRDrLTriE9riMrDQ0@kr(mamJrM8Nr[m92q3IhIlRrq4l
+
+pM@CHp"rek2mHP#Elp1Gd"!VperPjrL8fPGrVIbFallbmrp'qSc%Mq9FrrJS8B$M
+
+q*TTdme[mBi#rPrqVmke(fr&[U6qrPRpYUIp5rd2@L2m6hYlmTkUMRIZIf0elIrh
+
+0mCqX%Ipa1M+&rp4dF[mAQ`AZeGmTc)[qSclrlF[rR)jBQIp8'rThYXiB`$m1q2[
+
+p2hpRlmr,q+Glc2i[CmH,!IcMQ4Ip4hhiqr5l%lp["j(Gq%m&rRlqddImTaprVF[
+
+XIcf`%dUIrk5rbIqCcCRkTfqVHH!Ii2mdjNAra9Eq8dEU6dj(V#rrj[VVhKGp!2p
+
+%jMeTYrlG)rl6MlmDDq9arq@E[cqpGK6r*1$[jcpVC1[%I[bLrpQh(rTHr+FclmQ
+
+[m-pfXphm14hC[[a6j0pL+ripq#F$Icrr3dEdhirIl(rccmBB`$q&H6q3!1prqLT
+
+DArVbhrlm6r6I`Rr4qX8UX,[`P`0r2rpa)re(rIR[Y'Dcrrl!6ZaprTrpQrbhpji
+
+@5Cl2qIG[b$c!I`AceZhQhc15rrER(p-mJ4B62pp@QZTrZr&2Bpj6G[ZIjmhmDjT
+
+RLH%rd&r,LSLaKIGZr*A!hmprq%Mr56pq,-V1m-XYi2IbAm@m#hE`MahJ+Ipk5hm
+
+0(4hFIk+#'$iU+i!$q+F$rcEqqr+IEIKTES[!6fdIVq+I`E`,GqZrCr6!+rKjrcA
+
+kMkMrqYAqSjR!hmpr6qZV`+qrj-h94NApRACpj2QAf)ap$rjCc,YS0rr$hr3rkRr
+
+MqRFfDhm&raR!hmprpNMqeBqrURQCdApjB1[l[[`RlFhkad`8),MqqDlPHqY[eFa
+
+lkQlqFdEblhlmT(p@IrCYmEiAracQVGqYrq`hrCrUhkcqBp5rD9CVD9qQrh06hke
+
+AqBSQA`8qXFjf!ISh0GCFcalTq`mM+ZNNl%a+8CQ2V@@24!ihqPpS"P$152i,rpZ
+
+5Ik2GeHJrY5G"lH#rPRPG1r,rKeFrKCP)1Er4Ibrqf4hZ62fIKTp3"HjGrQp(r[%
+
+@r`h0EEcrM1rFZkrrTBjj'r,errY3D(SVrc)rdIp3aSjSq"DEqU1XMqM6EhXUJjp
+
+pS[pfNrI,`#rk2lGr0-1+0JVGN[qBhi@m!D&-+Mi1Na"TaY'QK91NSh+M4,VlMmZ
+
+@8EcS2qmGJfCqk'%Qr,@jh,`(rl*Z6S#5!$mfPah%cbB'8`+L*Y!IlC@qLhq@I*(
+
+am5EX,p-rV8!bi(rX2qE#NDiIm5dFeErS2hb&Ihhk$pEMQ-pQcpZ`PhrD4RFAITl
+
+rB2B&SS'AYL"qF0A[p'rd[`rSrq`prLFD3*8%q0%cZ-[r"!%U![cBTAi3IbZ5hmk
+
+HQY!HrBH`f60UpqVr[&(m4[ieI++*Ij1Am(qpI[`P[RUMGh$$C-3"Zp3#acq9m1[
+
+',V3[IS[fq$qEIc&!C1#$lqKXm@'jC+B([lrrAcR`b6hTj0H6Ir,qId8"rX@Mq&r
+
+XreF#I'bNc`$qhrIr[r(4A-#Gq1hqIm8!IKV+ZK-rPAh@dZbIX[TTYj[c6cE0Ehe
+
+YrXQQq9&VrXRf$r-R"r-[IrqeFZ"EBZ$IiEqLreT0J,rY&Ie4rk8aIb4L%Na2EMi
+
+h@(qU4rfTTrlCm$*'c8D-p$ml%dPkp1r[[eB1I"H1qSrCrD)Jq#iDaHr[[eB1I2j
+
+0Ur[aLrjV03(qCD2iCIm[QrqN'X"2FjPfqLr[rkAKAbS#r"KS0-Jrlrp9&1$(6)T
+
+GqDq[reFpJ2rL8Ia@rkpk!$rP*DrLCrfrkJ(m,+8D`1rVre84k"peZd(m[[jI&3&
+
+q,!'kZrl#qhp9"2KAMq,RrEq+![aV4[(crPp&JIpImJTqArpG**9phTT0hpGr&6V
+
+5IpdrImAm42maQhqS(1$rdMhkPrh(+J,mPa(qJIc6ehm-#e!0i-IDUS2mbrjM*3(
+
+q+dEaqrU2$r9IEIr3`l#6IpCrl*YrU"E!6h0TGrQ2-Iq[G'8)@pcS8jr0pR(U-pj
+
+$6DemrP-*pA)8XXkIhB9jL[$I2Id2U180eMqYqBF'#5rK,f+Gcd%*Vq'RZ6!lmF[
+
+qDb@"rUiCe4r[[eB8k2rD2IKprGF+![cAlF([klp@%1#RZ85lkPqmreP0J(rp+(k
+
+lreNaJ2rk8IbbreP*`2m0HrJhqTm9"IURc62fk"rpciS#rk@p&(ELRkheS`4qY2p
+
+hqhIc+(l6Ha3%q'NMQ$lm0(6AQ(rcI!QZD&QMY6ADk2b*YFcEZD[rq2*E-1J5r4p
+
+Xfb[raqE[cYmaIpMmATrrqmjh'b%H`&q[pVCU#LV`5S,q)qS,hq9r5J2m2BccKNe
+
+VAkjD[aS0ZKZ-D,'l"ci%X(2jUlYf,92dj4,f$p#1c-A9YRGe'61e&ae()$!9'eE
+
+'d,LCjbF'"BQ5bePJhkmPSDj)(!ZkF,bLiZD@LXpl%TJr,4hk&ebe,9KaFlUDmU[
+
+8c1"6#-FT0Nl)PSU6ki$cSIr$@4id8*CRJ8*2(#R(+6C,b*'+dlF#jk25SFi!ZTQ
+
+DMN6$V5jI2h8+!QG@jJhF@qmC#[I[GXEHXq*aEmGVl1cM-j9Kh1F1iY222KK1e)H
+
+[+ClUSY8J0!0*E8"0B@3h8b#,E%3NeiEK85B(BJZ'A+Ri`cG!+ip*KrjH#k5lUAS
+
+Nh+Zkc0h%,!AfZ#((+AM0!mk0`2QG2q*mmkimb('+V4C'5-@VcJ(1MG+K0LI[BZ8
+
+iaIB+qF$j'($q'00VAp4!B"mii"4E+RLNiSX`dV[bqfrSKUbU,VE#&6cYY@c&hJ8
+
+DZ3#bS0LG[,[-bI""&fh+U&P(rU[ABjf1ji`)QKqUSiT-fld%AA+c%8&Ue'RIMRK
+
+%I-Z))0hSb$#$ed[&Pi@0#*V$lm*1*L&4UIMb@8B%EC2YqMB'kj0Ah2L%%6%,%Bm
+
+MiPkTq1UJ%8%BG(4-db60S+Y02SKQ&hDXL3T,aGG-05*SSSAHKSM[)1)k)i*Q,,M
+
+3Care-L)H-L*SkS(V)G!q@bUqGT`43Ah`,L6Ad8mMBS-43H*`,8$k3[R4,BmC%5f
+
+QLQ+-0T!!+D3AkKjeBAmUM&fI[M@M$pIG1!3MiYQXBQJ&GaTrT6HCLX%EIdfUSiJ
+
+AXK(3@6c'Yb-MNcV6$NG%Z"'"1J'Up@j%a"X4f&b#G+C9)'+B%8&69+!cV4B4Y)B
+
+R8"Xkddj'4)%434ZB3'GD25,+M!K52h5QH4%ahSM!6JVS6+p&a"3MJPL#cV4PL*K
+
+K4%$6T$-0IM[$Cd63J#IS61Y$a!)MJQCl3fGD!K(R'a&8MB(1Y*@)Z-#)),q$cV5
+
+,%E(5L+!DLHYqR'p!a&T$(jRF[bL[Qh&c2AJA%6UfdH*Da'B$`4)YYlVCqAeqaRb
+
+29SfMia,X%BG(KJZ2"*DG10l*(eaI`rpM@%@0LGhLB@@+Q[!fmf$84KVH`$JcL5b
+
+j*S1`crRAGU%DX5350h*'Z3Z$8A8J"m1Ab'XH0EkJZmdAa2T(V%G@&%PBA%hliRc
+
+F[%"R3cjZQL[SbF6*SKELTMEjlIFDA2kQ)#dr-+H6h%@%"4Ya&)Dq,-2ld,X4EVa
+
+AiIF!SBbM180'('EB,pALe'01F3Z-Z4Q)Spe1'R*aKJ%MMQBZeZELSM!cPr04%3M
+
+NiR`mP3GDGZL$i6MPj1AjZ!@ZePDK!mCV4DGrLF$(iQTD'iIM'YTGE5kNrJ3$qp6
+
+3A#5$EeV*[i((BDSrpFQ%BiqB15fYl5eqS5FMVVjY"hmXVYVPXr9Ua#h)kV8lERB
+
+@4hGF[6`F4i4`[5+MCV2Tq(X,H4`qQYI,ifSpLmdiRITYU!BB,Z&k$[lUD8mDLU(
+
+j6KVm+eaDdZaC'ZM`0fEi&X"CA(R!EI20iUElXhclifDkfiIMUPdY`h&ND&[M+TY
+
+fk)R&,GLT'aC(4VFeMSCbpF990`l(9A4NilTj+Kr"2EXMbkX9eiS'9+j,C*JXV@6
+
+[NF(5DXT)Aec@(JXPMG6946QkbbH0Ai`phi4rk92If)$,R$YQ[r(kYhlHfT-@hC6
+
+GJ#YierC,0*DKJZqibREJSQ4J25U@ke&Lm,l%GpXrHh5hrIV-4Q5qeIEjc!Lf`"k
+
+eX'02-JQ90LEMh-TpbH,hEC!!CZkN%[LkISQY92l9-@#$Y&Q1!"Z,FckP(Ylb#JA
+
+!MJVD&BhVjMl4kJ$J&HFi%RL&j$D`hES#B(j5e`ZB)0rP),(G1ZFci*`+J'NfA9Z
+
+KKVXG**a6mRR)148!fheS9p6"1FFi9'4CNY[hXUbMA[%EH-AR(5LbV#0H`5F"([@
+
++5@XfAcAEUF)V",G-'qK#3bdD-pXaYlG[GUhr3bP14mh00B83A(HG1Ef9UB`fF(K
+
+QN66qHD"ai3AGQ!4&-92a6hXY2Z1kBq)r(SerkT[48Eh88G(684A683(68G@5TS(
+
+5LqlhYER4'Y+hcF*,RlAjP&(GkGd(d2KkYJ6#"aTF*[UH0DVH3'pdq1e(MeH$626
+
+jSfT8$R#2qP@`LEjRK6J&!RUiC)L*IXM)&'Qe!AV-jJded5H-c0"@'k#(h-*-p+k
+
+4$3V8"ZK4E`ihdHFk-D"(66A#4"rVa1"j5'JL6I64)lZEU!h3Bef5+"2pX*(*H@S
+
+$p1L)LcE4Tic-M9BES%I2E!c2Y)lVhNJFpk0(*ffXLEjRA5X&!RVdTXCacc[Z1XD
+
+k!r[4SaNShN5II-$[$q@ik'00-0'2'0Q@3@fJ226L*(,dar1m3p`$3C+*2R4N8[m
+
+qp-BNqIhSXCa#-Xq`Mc[Z)I6B`@N)ccC8$1M4+cE84*rqZfRPDJ,df-JZK9G@MQG
+
+D,k+2-Afm$cfQJ``cd3mGQFqQ0Z!Hdd"56I3j"h,F3qM4DCjQSSmkN!"Y'!@arHM
+
+4I6UmaH9&[h,FRcb[TiVq%[Uq50Uh6TYUSJrp8jDT!N!24@43Cq2Eb2(eE0#jrd0
+
+5RfPbRrSRae8"F)pjaeN1$YcMFj[F(rPf6,3I9%9f!6h056L'2XIdqb0I,[jlGTM
+
+Yr[VmRVhq(RVD9rXBqV`#qK&Mk%F8d1H2SFm[S2H-SIF8d'-fdP(d"3AdKD2SAhl
+
+p2I4&Bp`A&G$6hXE(d"FAd)mF3cqbJ,jN$(e*!AhT+2UAAhm2rDJalNF9d+0LGa4
+
+p@3%p4V)G46qkJ"iEYKa&Ie)"2HfTI!cpQ!,kX@2SaaE3Rcb'rZ3#qP2'd*p53$p
+
+Z&2h,Vlq((P1FMU)IAd"2ZaNI3hpU!6eYCR3-rB3#qY2'd*p@3)qjAdI46bbJRc5
+
+'IP)"2@dHI`cpk3AdNmI36bkJ4`rc8I46#ZJa-qmSq[)#HSb42BTqDJ%p[[p$Efb
+
+`S#hJjkRm2*QI*r(ckIaF`Fr6q,Q+RmXqFpaYeek-+3Rk4GG[B*G'-Pf'ERET"96
+
+cLH2[B'1X+pJ&(hRJ0V-6pc25q-Za35NkeFkJH-((H(iqPCmRm20TJUr4r$bGRfF
+
+)rJ42JMI"Vm1Vi0(0,PT)Qi-NQ2I'41*Z[YC64eA+aTYrBXbriZp@[XkA`#Pi%AJ
+
+&cilq"$q1hJ626'q-Vl8h%aq-,`a+KXCmI0%dcj!!5l'KThEiaY@2NcY#)TMK4I8
+
+'GRj9CeRQTVQDE'jmUddh0kr9CTJEd'Scc8eNY9RQ4V$SU#LNkC6jjSDX@[@'TpE
+
+4%1%#Ff08VGcFA&9Vj[K+q(N+2jIbFcNrMrUV2c&GkSeAC[T1beMM@TmCfh%lQhD
+
+[c1T2SHj!eLAhp*AI[QYfhrHHX[5c!IV"*J(T'eFrKUQP8Zq1l`MG1(TbG25q2`Q
+
+pR-62BrKjP[#K-mc0q,4@IPr0ch2iZBDIZ4DddrLjMTrVqEQ"RmIbXr#0prhJC(0
+
+c0Uh5h1"8qX)TjNCVfNQi[jh0$+Y-VDHi8HdYA@Cf&)p022eqI#eYHT&QEU+Y62!
+
+hFr+mrY(cTV#26mpdelVCaqG4[fHXJHH1rha5HY$6Cr(e8fRm$5r6Xf4eRh9dm'2
+
+K[d*hMYm)IbTMGHX'YpYhXlT,+*pMZ`9IYBeTdLqN&iEdH!I01(Gpi312'd2$e3c
+
+mkXYE-pf2EVDF&Z&LZ6PjI0`[m'rcG6[a5ChY8llM9-$Af`Pj'cEYIT!!dIB),hk
+
+KpErY!pcpk@G,ipKpl!j("BaXrX%ZM$3qP1BlX,jZ-FNH6S0Am)pjUHL)cM*RhbE
+
+$QE+4VBHMfT!!#a9kYZkBY'X1p6&fCCGlQU2R$aqklr#K$`iIQpC2(hV$m+&,#ar
+
+kTI#KFmPJH2)K9183bpr+[QP45H$ASUG8G(HLca)I1KlaS6X!(bUQq0MD!-Kiq&R
+
+-UN"0%aqULrM@mV1S'BRT3DMriH2C[N+!lr5J"i2SD3MYNRL-GYY+Cp8bD3a9#*r
+
+U(ef6bB6+f(hp$`a1-YBhPj&6brQi#J0GMTSrU%Zj&ll)E!Cd+I3QG#Kd*[3XG#[
+
+d+R6Uk&2SdH(6d'AFZ!rKrdD@QTV"9FE5bA2!iNaT%bYKhm5qP4d[NPk5f0fijBE
+
+*QV3ar`6U-HCC'`k(Xe2p1a,6[)!pfQAZ23H-NF1SS5r&!'TYA2hi9GLdTEV$'%S
+
+(d'c@0ChPE[R[HF88pZR`pPfep8qI54S6%fjP&lU#`*-UhdpCY2!NJ9FpJ"1GKIK
+
+%YLkf3AJI*rSPmD'2b[,#`Gc'i5H4Cq[qAIhefhXbQU5F)FUF'%&C(XTAqSElk&l
+
+N$(+A51@!EZU&EZ3X"!@"$b`UTra#q)$BS%)pJ&2S9I!TjjmS"h#LUdrLe,GmdFH
+
+fE+,rPIKIMIr,mAm0rQr$rdI`r`MEX[Pcq(m)rer$re0XbjhhirrlE-Zre1'Ih[l
+
++*[arLfhjmZ$N%$FVqccPG+cU9#Il1[fqMJ"cc6L(9h(@5H2rhaHG%h6ESQ,%C'Z
+
+URlPQeZI`hd4E(XJ04p3'[VjFlD+9pGU!rqXjr$G3a8Z4N!"6Ym5lqL2K9"pcc4V
+
+N(rQKR2QT0Z#rFiim9kj)KS$Ij2mQfY&)NC!!(e"4ZM859fAQ+V2i[jkm8*&3DeU
+
+46TE+XT`!IX%r6@1rJ8DhqKI"e9drcY8@[Kha5F8p2j!!LRXTCdYQVNUU8V1mUP8
+
+lTE58+ZhPXbdqEar-LrIakF[QYr*CLQ8(1k@DX**5T*TZl"QLV9V9'dfV@$qU@Ge
+
+q*lpYq6Ml8RL&*58hi5M)f2S*(bDHpAC$FB9BqALc+Lq8%dU+ZFUR@2aM4`5jf,P
+
+b3-rS"*Gq8V"5AL32c)'IH'k`r"aG*carZh*9UJr6MPH%V"ZKhPI`draIiabe05X
+
+5r6@0'#X!J(r8Ya3*q@R"R'UjTi[m[#$$2eAPEkDkSYMmC6IqKJkM%+UE&D0ejZB
+
+6R1V`c(BR$Rlda10cXhZMffH%kDHpCbhcef6fQR8c[e%@M+(kKIlNUP@0DRHk&iZ
+
+L,J,X44iXmAD*4$X#FI4ml`TK1BN1"28@SIbppCCV,j%D2cCpfbEQQQ2P5lH6rkX
+
+(kJ++K2b22VP`mYZepX-eGP&,epJP4bEBCC0b[R$G90+3!1KZP(e"bJ(qppIGK&k
+
+%Mf!'!$kf8`Ppk)[(KdiVI1J92k!288YR23akhk-C2bPMjhlrBQcJqQAT,2B0kBI
+
+XBYEA6&1YhG*,M2)U9XIj[Al(*DH`HpFr`'lNqibJRRYAmj!!Epp96eQKb-1&AkJ
+
+2r%L4N!!RdZFIfUT[qUP90ehc`'Hh6LJkGB&d%-jcf*Fq4[8#N5GJ$Z3"[f5,-8&
+
+Rr#ak6B3r#"m3[Z$d4!MI%$kUX3Yr5%I4#I4'I[H@ENlNGcb'eX1a4ZMTQAi&*f0
+
+'Ei,9&`&1F4HA%GRrEL-FSIrcIRcJG&T[a0rr)0i9Ec$pk2,N6eNDacQ#-"[G6qY
+
+H`5[HY6jV9[q,EflTV9)M[#IhkK)GXVBR#Hpb2-haX[Hp5r4TL68+f%*1p&AaXmL
+
+&T[-cVI[$2VBR!(eL+U+B%-K%6YmFIUlKCpCPV"6`3P&(&eiSFKHf4K*pG4QqpCZ
+
+Hf&"80'kma)SR(&&F9-4ZqK,eFT8B-B(D)[rJC@)LL2!`!ip4X9Y(B$JJpkkYI9"
+
+AGpk20YidUPR@qe2%qm#1pcC2*)'"F"1ahPmhq$lYpf+`42qi0iISLRf4C9HMJU$
+
+Q1rp3bPP%ELPU@1U#(&2dFP#ZG)F[9dNR(KCqTCkGZ6$MKfjfjL,+N85ZT%MSHE$
+
+m4&Q3!#X+[-,rRGaBq*f69cMpJQ9XpQ98Rr"e6*Zp+j6E)3mC+V&qp)Z-T,H6cDk
+
+9SC6,pmdTeSqRR1#$T!$pQ1pLb-DBli(QTh#[ijkkZ6IG"jZR1(C2dalZa+C8VUR
+
+mRM3D6*cG`HqT6qBZfZZQ`EcIH*R%CY-'9l9dE`!1SCl*i*cLA)6I[2m3mNID6dM
+
+HIa+lCY*H3[)qK2Ul%Uhh$3hjiNPcY1q2,aiYf[IPlN1ThK9UC4#SArc5LNHp5V*
+
+&dU$1rk"D#`pbURMV2I*qep0@r(rMN!#5Z`mLEmA1FH,q%4cDFTRefGJkMr)jHAm
+
+1j4(3&qRalq!MAYUIChb@%IdXmJVV2I4QL2I)PlbSEH[VV2G3klIH)cf,pji)iak
+
+64Nap-PXapiSmPqTk&`ce8XH+,6)5a(fNm*SKBNjdV0K')Ph-8KjZ[%pmNJpH$aq
+
+MG%lbF`pfYD00CL3I`EFEqB@mrc#fT[,(rfa)VarjqP$m4l'IPR9r,r*,krkqR`l
+
+GI``6&QJI&(QrJ5CjQ2GrK*U#pGlpb!hdbERlMb2AYq+lN!$c@rHIrDAJllq'q2X
+
+ml9*NaMq%HV9ZqD&1fCAjh[H`YCMehYr#,kcl*l$,UrAq!mMCVA[QVl3@SEMr"$D
+
+DXrcidk5Ij0cpJbM#@IGrKZe,6$ak&@UdPPkBhjM&X-p3E[1XjHHSYpV[$E2m*J%
+
+H5IZSq2JR2lId&J%2FDdFHYmMGYS2&r2V4pMqjHrVTE6+RMbH)qCKC`ZrLa"ih!*
+
+2L-#IE1e4F"ljZFerJYL*2eHmRb4f8)J5IKYUmAF1Z($`43JqS`9r#B+r8%Y2Q%a
+
+Kq3[Mem52L4MkN82aN@++IBcJ0bkRGre$K2@jh2Yh)(qdp-l`qYlAckB*4FLIa$f
+
+`f2Q-51qPAZ`p&K)&hm1%RYb#[h!VrLcNC#iVreT%qG5hK["RfRlKj%-frR5KEcN
+
+KKRpjJTp8#pm&`'rTR3f+-IA8KYULSpp`iAFCiMj9m"0RkmAFc1&#fV61Keq[*,m
+
+`rC[TMqGr2d6HcDKpB5JrM4IiKeYkL3)H8frX5a2k5K5E3L3)[AN%IeP#6m-&RPc
+
+KPb1%If8+I#(#,j)Y[0RBVG[*9c)YIchrFd2kE+4mbXbhaY''G@BpKIQ"qIl$b1H
+
+SPFJIRfAVbGC(M2$$51%hSECIf[k8D1GEGVf!cHk`m0Tk#VEdP2RF6ReN#(e'#2d
+
+Q@[%AB3eE*rr)XZSGjp-%*6XrL"*mT`LqKJUqiN5qP#(d%5ribV2d-*kfhl2j,4"
+
+k'QlKV8#pcRN[E1GH$M)q(I8djldN5em&f$R8LUqLHTrpAYV1c4ZkrFDmDd#p`hN
+
+rdZ)[LEBUY2dkc2+I4-T(c(S%dlH*IrlRGq),YI+r4YV!dYEc81%r3i4qdbepHUP
+
+q0cAhrX98cl$p)m,5ceK-DV,i'!@rG[K*&2kID1I[0Krj)Rq)&I%ZmAkBRIrElk@
+
++r#4'q&@im(mj)N@mEqUqNHU*YVj5FrMeDY5LRI`Z8r!6)ZjGG[jSma8Tr%HfS2%
+
+[1ZI2HMIe(Y`cK(q)RArCpb1%2f6Bp3L6rmA%[kqq`,i#`8qZR5qBHZfJqTe6$l2
+
+aZbcpRN3E6pTq`PUcc#r2bMI!Mq0AHB,2$!Y[$(CIYIbiLHTjYRlC[!$cbaEq)P[
+
+[q*GMqGGGY1HNVakZc`9HTpk3!#(dRfRA-hcqT0FJ(l6ddd)E6jTmY@,DQS1[`0D
+
+MlDr$K"r'#RfPf2QVc9H-m-pSFCmUr$TAq)AEmXmQkJH`r69H["mPm-F,I3i4lq@
+
+,pc)%[b1%(dF+2!ALr3,"Vp[@Nidr@qJV61$,&rL6K9lMK0p31kAr5l$mSK2*U1N
+
+(HSMf&(6b&CZ2E1'2DB,2JK`q2I6`%*i8l&rQj,24JUp`ZhjRmaYLjemf2m%LhL2
+
+dP@RVdr5VFm'&8br0XGrcAHPKkQdcq9f)BUPH026qF*Xrfaq6l2b+k8%rjN%Cq,U
+
+'qMZBApRk+a$qi,EpVIXDXrqkrF[Q`bh`C3NpKPYkA`8XC[kJ4m'AU3Fp4[d+GRi
+
+C+I`ShDlAfr%H1jqeq8d@r-9DHXp(IiQ6$qB)ImJ5H,0cHY4Mi&1hqMZ@8$q&k3p
+
+,b5q'jHkASClZj+XHi8pbY)I!kp4EE$r0YrX6($dkr3BfRfl,Iq+*2lXH*GVia*F
+
+Qp1MHZ6Q5I(meqVfFr0'-eq1lkKqCPMkr3-d&U&rcpeC32F*q,eE`R5ri$E(bKmZ
+
+T2ml@he$K(m1XpiTT8eBl(k%0+reINXArC16,MTpNfr8RajrXr#CA["FMp$p8j!X
+
+j1Ir3DdAqc[c,eRq5H$mpKerAD$+UVDpd1jpbkRff(Z)%[M!lIl(jG4CXb""q''(
+
+PLbXTRlIV48RL[8L,lc6dd$Vk$4(iK`KqKiTlCcKUSYf[B,qA+[`i41J[9HJM`Fj
+
+RRIcGdCmG(fhjj4@SjcTq'bIib,Ii'd,eDP-IZ8rYe%ZLm2XFZejJkdqdiFTidaq
+
+qMph2RATdJ[#(1-&[[-!hh0D(REpR@2Uk%[fKMKk'@IS[ad4JKfrI8U9F,kCIPh6
+
+[I#pHk$P6m*8Mq"NZq%l)k8P28,h!cSHc""ij0PAScG6R(q21bQrq"0`ir'IDp8Z
+
+EMe5lIQ[@deC5[FEQ*p(1afeqiJ6rE,kAT3mEElc`bc#KVdKalbbERLl`T0Mp!VD
+
+H-ZhkJ-f24rKRK["r,0INjm2fT`6KhdQ#AipGMl2c%cjhdiI(jMp$i-X8pmkkMl&
+
+#$fNf(hDm1A#!I3@#Va54ccV,-KABp8"E6faqSrQj",m&PPlAB*DJ8hr,&[SSX1S
+
+cSkPqEIVK@ZVIYGq2Y2MBL*jpfQpCaRmAC&Vh6)mQAjGJ&Up66j!!Fi2jPbIdQ',
+
+jiDAS,hIi5"Ak$a2hLB,[@)%[`hlIpMXjVN,%fhKbl(c8ILr*cLGYIBF*2`fchVY
+
+Ube#r(6kE(Qf5`Cpqc11BJh!akXhkY82ec6#46d3,2M)Y2LqMI-M-IpDKhm[4fh$
+
+"Il+G(pMq&LIm-9I%1qeMHF)[V4'l9k2HlI!4+[#j"D"8bpp1`Q`-Uplc*%fkIcj
+
+h[jckrCeqB9[IE%iDap01rI-h$,fACZF60Kra)MlFkKrU*1jYribfqiGX[mU`qcY
+
+XIHF+IHECHV(I5cILD4l#42#"'@Fr(I+6*![r$1c![ENHB1[EBr%r!E[m@qp0I(6
+
+S[ZBc1r&%@AjC66Z3!*[aFc%[`ESrJrSClIGcKEq'L(`T`YDhRGm0YrXG((mbq9R
+
+aEc[VL6&f[G5R$ce0rH*frG"PkA%PqDq0*mA1$feqA(CrMC221rVdiG%aRQ&c[5,
+
+"cYqGr0rfPf&frQhbmbQUYcRpP6Cr"H)q*)G(Aj(ALkf(+1'[8B,r%)Z[2m9E$Kp
+
+*G[q4VDGmJ5pIk#(IpQ[lr@&frjEpRTc*+24ZkbY0m"-Um!`4rMC#k$&6i)fehV[
+
+QKD(mkMUUMj[pmf[SC-m6B,1Gd$q2ALIqMMpIF2VKEEeN#Ej(f2eMpRf@i$I9VUI
+
+EH--%[KMarK#KTebKTab4(b8*rJT%2LC(eSTl@lq&JTp#NAm8#Vb&JYp#SBG#`9H
+
+Km1Y#`AqKi,p3m&mSr+e3m&dSr+03m#r'8mPlQrmL`Aq4i,p)m&mNq#m5r"F*rSX
+
+%rd@#rb,"Ij(J[dM`Ab6iCc2KV(ZEIc'@5plEr"F,rSX&rm@#rf,"Il(J[eM`Abc
+
+i,aEm&`[qL`AraB,rBX&rXH#r@2![allj[rm($3d)3N`ZZ5j`C@CfBA4P,QKM4NB
+
+TC@jcC3#3#8)H!*!2%MFd!"2Ta!!202J!!J&J39"36&9$3N`K!,F)V@Qh#+eY!!!
+
+K"`!(GF!!!!Jj!!&HK9Hd(AF!N!C[VJh!VH(TASrCjhU%Hi4&k'Cj!+`SMh+28,j
+
+bSl)YS4&'YZYePRP&@j2VPeYbQff+TjjeH-,Am&IiMkfEF[+8Vr`La`K0mMa+pRY
+
+N-l,Y#(-rqAeXNq2N+,P00YQH&cR+bIBk,mP[b@!I'@abM&$bQh$#0[P0ZH3f1Ai
+
+50X%$Ahef6HVFacEEE*0R"%hl!I+!4T8%J!(!MRD!lELchm)C'!)mI"YQ)3YlXND
+
+T&56i+Qb!,YMb8@mZe0%EI50D8(,4!1UQCF2UlaRBL9"PIFkTV6IHH[6A$V)cZ!%
+
+1`KCJ!3K!"(E"jR+S2!pld+a)i!am#fc8#3iIlK`31G%1%-Fp83D`E`#8-BE+MVc
+
++1AJ*E[c`'-"A,J-mKB5IiMl&JB9aMi5"263$E'FhfHQ'PlaXE0Zq+Kh)UTBdU'9
+
+eH"BG2dUmZQ64!M3M*IA#"#3"kY1bD5P`&*&NAT%0cm"*H0(hmXQR8THD9qT55JP
+
+5+0jA8$6SmcbKX'iUK%MpmJN&qJ&#"2"fmheLIH')FN)a,))F`I9TH86KrBT9,$J
+
+#D829V2FKl3P)6aG9#jjfl'q!0QL&eePVBp2JS)Y(i9@im0LJ`,FMZi'eX3[#S*!
+
+!A0qVMqLFiYFTd$bfNPB#[Jl2`'Y5++9E[,pSL-b3!,8*idp*8S844)p2`)p$HpX
+
+0K8rS4@iL8`!P@E1iTI1-V'@82&%-VJLE2$-UDb1+5C9f%RZ9l@Pm@#48GQ2TJXh
+
+Ba"iTd%FpaTC!'2E$PG"3'TYR+MbRDUSj+JbTfJJI9R)kqVD-#8,4p6LfJSYS(mQ
+
+-kYJjhYbHb5J&UjPM!-e*%8Sc9c9ZM5SLIMkQD-9G8CSB8#Fm(i0[3J%@T2Xkj-a
+
+cC+V5%X$8`YM"K&6h0F9XFGA#U*D3!!)T[C*B+e`0lH[8PrSJLaL%EEF(JMiQCa8
+
+[$UFQm3`0DHcFGXECHm#FBZ$+0Z"`iCfUR0G(%0iPCTmhbQbfqIlfBEeSm3l&H%l
+
+*+a1L"Ui!HmI0pMa-`KpC5!TlfBUZ4+182iiq6#r&YNiGAI+`F@2("1q804AVI%,
+
+@H%FHfITB#qm`9)5lCH1%-Y(#$kZB+dSm*9[2Yh"Cbr*1[6L5PdhHCf"j0G2af)F
+
+HAf%rRrSEM9G$(4Qeq#2*AIcaI@hlq!#@i)JbSQL@bI@Fk-5JTZ*N0&9VJKK*1Dp
+
+Lic99MQiF'&90EZSjUb6M#"L6*h!Dm)aH8*@XF*p96FY3KiX@iUL*l5TQC%[906R
+
+I`Jh&a%QH'49+'Xik8LJBHJi(3U&S&("bQ)5I8,-SEih+e&cdLrlFd%MBY'4,`IQ
+
+"+%DJDTPmNH5`cR)qMb-4rBP!c1LSb(i@XjpMVddpNGB05X,N0d[3JUGpMr2qL6%
+
+F(%S'&6!03`6Rc'jX28X!"$KH!X)iEd)!B3Q!i`"2)2mAjmYXGe-LX,Z05lZE`U(
+
+pjd1S)U&D)2(b)LY26`F5dfFP2Rdf&&jF$+-k4r9%)&!ZX`"HD+BH!ZM0!M5r"h$
+
+r$2SMRq5AI!0H'-[a)6BI(kTEL!d&,m@'0Pf1$Hfi&TZ-hiK2[Q$(F4D9Q@h2epR
+
+f3Y#f,ffblFXlE2YDh,C[[%"cbMN66McLN`lTN5j-fZ6M@R`S6ViZaA+E&Q+ji(a
+
+XXUiFRf6L1VKY-0R45d1Y*jRkNZK9ZH[)J5i(SEY*HcT0I'FjpaTDCjE[TJf0brK
+
+XC%QJ)4*C%TL04'S#5&m5)(T930#V!V0cFqIQcThc""SLFj!$NEN[HJ+c!MmhjcT
+
+!GCI[#+!j9#Gp)H#DUeKd[([V$0(*$(dN3(3d3iB)GrQ)%mA9ph((Rk11qTlrLVY
+
+UZRl!*$!qlKH!"!MhmimJ1PlV4bQbGEc@RkfPdR+r5M@kX,M5cpAqV[EEKh$!VDa
+
+6YrpBZ26kr`LFUUqr+d$dI`Xip(m*H24r#[Md@`)eqQF#TqU2dhGFl-IA"&"Gm&%
+
+DGcSZ#C!!Z3UIj*F&K2F9rDU!%ihVhI9I&9K1ELh&1h3Ki0+pC,cG%r$8R@5mK$c
+
+qLRle@rAr1Eq@AmflkhmPre[KhK&BkaqYE[aZ&G`9U2!rkcqa(BhEmk1EU(5i2Aq
+
+kDGfGAhITpmEM[I&kEccrBl`R@$Q3!*!!H#K-Gpl8iU(T3fHe4E`lKd*KL3H3!1h
+
+F6ZmXp%$A5iEAD9U4L$Lb#2jK&,!J)1`5a&S(TfIS@`FcN!1iLc1ZGB*e'ZrAlUV
+
+SZMiU[MbIRZr+lk$kqU9iU9-VF*AJMC-9H-@$Zf+ia@+9AH$LFmiqlV+U@N,[jPV
+
+cZfCr,BfeF+T`11bdJ2jFB#0bLmHFKQl"briVrS8I#+IG@GF[3L$iB49&E["$Mhr
+
+pi[@,2NlX'Tr`CEkRlrMp`F&[I,$r5GrIZr%T0I+aMfF2cAihrUk2PdkqqIDEErZ
+
+iEAr[5QRBafI5KGrriDdDrbIdGlL#rqTPqQTjrVH&[&IlpMmK4ri0aqEad5a!G)(
+
+3J@SY+NmQDTa#U8!2E9GT0lAf9Tl"ZeEm"r5Xkc3mF!8Tfr!aIIM`JG3J2MHFlZ`
+
+Ck-@RY+qhpaiC32a#CfrI393,G+3km9NLZmpjV-JDR@H-l-YU*VmAckeiEX2cNfV
+
+'a'H0l"#HLAF8cm3EGTil-Uf3!,H`#qcjChT5RAJqfGrcl!%mIbH6-r"G-2X4[#6
+
+HUMMV4B%jcb(aK3Y@k!1#'TX%YSf`a`B*B`m)hX-#qlj6@U'"EqUT&m,(Rj`k#H`
+
+MJ3@%hP49lfHqerThUYKI[#BMpR'9phFI#hlUBqZ[qYJ'H[ETBEraX#D3!1EpM$I
+
+qcYH!6l`C"I$JReQbmCH1l`IrbT+mjIm!"J"VcdrjS+FEEXS[bXh1P8mkeX8fffa
+
+IE#GYX$drFe0qY0lYfE[0RTR2cpY5VXITee(qDqPP['2lf6jQ*iI+pV0pfPZ3!1f
+
+1ab$E"hNGcraBlcj)plYFE"rNXBAY0f-0PZGe[)lYLd1P@qALXB!(q%lD@C0Sj5m
+
+H[&fij3L8i!J1iT6!)lL6i)lm*VGqAQI(D4hG,-VGY0ZdLhE41PT4IY(pG$r0jdp
+
+lZAYPdH02qF,N-A[E4h[V(-J[bNpjZRpPT`hia9TNLm`'fl1Nr,cHLQdS@dkf'&[
+
+!KHeRT9eXGfbIlSX[caCMfh0IE"[E&kYMql612$X[HN$AG@80'RPehYDq8CN*QKH
+
+"6d!-a#ad`DfRlmM"'FeA(G25H2(&,9Hfe)F38Rp5r[RhFilqr+(8Ej,d&0LbUI$
+
+eK0Y#@CQm5NR,bIZCrX)hm,9&UC5q(6"GhhS@&A*+D*KBBQqlIQrkX,cePj@%ZDI
+
+0RY0Fep$B'LDd0hDdK`N0GHeeBF,#YMD,e0#GcrE1#*AC3d2)cJPPQB0+2hY@YLb
+
+Gkmkerr*G8mI)Zq8MlhVcD"PjYf,NhD+4Ge8MlfD1['XHHGFkmUlkPqmDerrbA@5
+
+N6T%a)hRi4q,ep'9NT'mD4ZVAf$m5lpQ4GbNMlhVV@ML5Gp&)[1dMqD@1j*%a%Zr
+
+!b,ZHHMIH0r*ZmdLG5NIHpG5TiI'4qC%eNXI1NAVdp(hMr52[9ShNPc-5VfF144i
+
+BHEGqj&eST!pkqUPaC"j(pXrAR[jVH(6NA8pq$EH-j0FljmT(qVKR$N9'qV[aXC&
+
+i[A@U((RAdaq4N6fTFAqrpXb*KT%jd93p%Uph,[EZ'CY'mXXGLEG[T+l&)hRhl(1
+
+4NIfXFIc)Zjjjh$#bRc8F2j*h6pmhMHa$6@%N[jim'XT(kPFf%LpY*&l2[YL`I+5
+
+Z[I[LZT&i2AP(-L0jl"hTMjjjdl4rEqkG(cheD0LrPrI8Sq'fNAHpqeR22Y'iIhl
+
+hlYNpZ%[$b2l4-))60)lJ*BdMFcSb-LFL)rY+C'3H0)c-[iEpqdVYb,Z+NIV9M,c
+
+VaD9kplbH2D2aMT(kpHEA-kFEpZIA8pI)I[bXGir[fAFEpZmC[EK)lhl61cpkjf)
+
+22Y5`(crVkE2'rAYH$`l8Y,qIH[E1TK%mSh%rVY2E(chlC@3rcY3c2aT'pU5Qr6K
+
+"6emfM05MB6r1e$-r)[[hcPlmSfH2E"M"Q4VhljHpq&B22K%CfGXD4rSq-V)h0qh
+
+(chV`bmEpqe$[R1MGXamEHGH$9cAYRcHpqfK2A4[flk-pqdGN`dJH2A1hDD4qNIh
+
+lF5mZf)Yrpqb,MI[R9XpmE4bC6`hlmFkHI59bk%LmhVR9XjmelYq$HrE)K[hcV'F
+
+2DaU*&pQr&rEJVddMmkaaT'mL)hNdl-F&HhN!2A1SFD6r'[I2ejlm'[IhDbpHdV-
+
+(0ilJ8JdMp@MFciISaB&kH5fpHf42IT'4IEGK"&pTfMrRHYremMpkq4#prGflprI
+
+LMMheLicJ8ShlFFdHh,&TIhrdlL@pZ%K2IcFq[amF*RrpKqrrpaqqrpprq2jrrq(
+
+lrrf(lrrh(h(UAlLmj,0II5JDl%f&mYkk80@E#f1Z1bEDNXf&qCRkd4deBFQV&a#
+
+Ri*%3PYH&#eVUSkLh+aaH[D!LZkNVK'Vj$Jh6[N)1%A))PjGqpUaX51GQVYcaS3q
+
+(-1l38$UM1e40cSD56h$IN!!2KqF@VRaJe8HiDqc,C*Y#H$CH-['m'Xq0)E9UL(C
+
++V9L2TKYAlXMIdjI*GkpmJ*TY@0j*r$L0[kKkA8KP&klZbHC$b&+[82Kk6ZUBA4V
+
+#p1j3cCY"a2*)E4!$pI3F9K-1rDl%#)8`*rXCkUT[([BhHGc(V5&(jK2TAVQKYd(
+
+[E"iTfIT`H'p'Bb9RPi8JGcbM2d*IS@karQ!YEFqKGPZbG@%ZG4K868kK8(Dcj*`
+
+RYH-lj"8+64q+hk!1Cp4'ZdrAqk(8XLZ[KfC%MfQ2I*NHDD4(T[90c-rXQd5Hkr+
+
+l`q&6lj*m2#hD)hGC$iI#eqU5rNJQ4bma+MA'T`Sa,KU+SI-"IE&5Dj*3%`ljYi8
+
+DSHkKX2Lrb(h68m`1p!*lXkJl@P'p))US@pPAU0-E2F(Hl&mE2I@ZjqTpF$kiXdc
+
+Qf03`MeljF6c$)JYAlPKHAjJ6QH2(HZp1kjY%Rl&hdlM,mEYNlX*bGf6'5Ei24`1
+
+&HI6)bKhN['QFj44D6JqB2(1NIe#('8Rra(,1b8I-%F4&Ifa0iM,'N9S8IB@m$pE
+
+LhZL*SGQ)@Qcd@T3QXc(AD[(5pl3R-#1bM`iTViI009D2,8RX@-eLp5Mq#VNIV)H
+
+Ge@B1F8CcrZJXZ8EcVke25bq89c2[jCfh@Yp&CmLeAp!CJVM)1EXiDa*2()iMmj'
+
+c"R'#-Z0-RMGBRLRDFqiFfZ#lbp(C(1XPpK(R2'TYChfUjHE4h(!ZYjikF+hfe2f
+
+f&k$IAiTlV'[ZT)mr5[0)YYTj+Rf@rR02D9fNKXLlRqDTZ`lceMS`Ee-h[*&D5@f
+
+kDj'qYaCjp(YA,Bleb,&CQcJbDj1pCekEUGdl3%N8&IH+UR")EI5,-rI[2Nmm&!f
+
+`rqc8(N'm*[C+c1A9j,)QI`FcJEAe[P*h*pDS)+0cCBh9T[SdH4HZ(rA@mD@P@HC
+
+&CIpl3m@hSR$iB(UJYhC`i,cXM&"*A9IhPiDU`4ccmGC3hEmXP!pHAa9Qp)6ah(R
+
+NVUJRT!I$`0(E8mcTUG&J6HS9@M2QM(aR9RmkRQ2aZRG*E@9hV0CpXqNVh%ZYqRd
+
+kMUXeQRj$8L2G)l#2bNi4BEjpT$$IFR4@DNlADBiDAr*eiarTbiT[d8IBchEZRiZ
+
+Q2cGf48pfd+19HfB1lRAQ[26$NCQ6TI@AH60$jl[TlAkedFpY6TPkpmj"eN$Q`l5
+
+9MqNqiMe%GlbMqh$RR0T%I5UScDL415Al,(!3l2[Y%AR*l!%HNNHY!RYVpGcAI2i
+
+(CAl,ARCN4c`k*rIT2U[j,edN064lBGC`2E#2,PlA*rf!R4bi`bl&(8lYT@l163q
+
+[A+GjSjr-R%M,p"cE36i$Dd,T3el$c-,l"QDFe1M!8F2erIGFEhSk9qa5QZYqR31
+
+RFZhH$CJ$GaM'M(5[5QpUm&h+Yh(b#r2!l1a0$krUpGeJNr3@pJbCVHLh$G*Eh2@
+
+N2Y0kYmYpZ(4JZZc!QYmIkjkUGhrqqAL[arY-a8jmArT%mNCMHV+rd*VFScYi9Ne
+
+BUR&aRq(h-ZY0IKr@ZkkCDc#'M6CcpaXfKrRUBJBcX`YAp9EANir[cBTj46Tp2fJ
+
+)FfS(rrjcZX2F(3l[HR4d*If@9C1DYLV"*E+5A0*V8YQ8[%AF'b5Zp%!Nf[UE2G@
+
+GckZT49P0b36GZGbi(AhC4`311M9kA1F#FF8R9pk5ApLl)YqpUTFkVKF-K0LRfDR
+
+YE!M52iZNAiN,XZpEVZ'm+F`&0`Y)(1j"JQ'&YEpPjM[[c0ZX-Td4'AVrC@+YjRh
+
+MbNd@FklL'X`4Z#[h1E`*[lR`"[R1[6G%Q[r3-1FVe,#l&aqm)ET9kPVE%D+T2Hb
+
+@`m"-(eQjL6U[lHjHH@[ZiCAhjqjCZE@EZGFiFqAQh)ep9Gh(pShV[T(jq'6Iq1k
+
+5P4[SJCUZDllIXHcRYhFXfrE&M[blb$XZ4*2U`BiD$TV(l$KR4ZkJ1I6$*aIC(&r
+
+&Gdp05+AjiTeh3ddS+H2Ec"k!ph'EqHi&kd3prI2i,U`*"c#2!R2jmQi$hehXabP
+
+m3h`a2q0[U3QMMZI,H-JYB6[R#&qmmeCaIi#F9R#ZYKb$a29-ReGI-8Ak)&aI8TP
+
+Cj(f"hV%l"qC[F[95kDXEGGr4qIdCRG8QMQ+[pi!r5C`E&0FdFIl'pTEVG0G&hrY
+
+kEf"hA""QeD31HQF"am8EQH[HJh5IE&'-*6JVL9I1fk(2aK2-d-4,6H*9ek6+IrT
+
+X[(F9ib8mQX3,%dq`KDjiXY1DH1XRKe#b+UAaeK*2pS)mGXm'HE1$1!q(DEd2KHR
+
+%+#C'+c%8@q#1MlF4hL*@FIBkhf1mjBTPQrc+Xmdf1c([JVe,Z!2fK$QDcCiJ1eB
+
+6mj!!1(LN"bap@6)RLDhI5*il3iRA)Bmk&&+$$6@T86p1DT!!4`d+XamVj$mmcVp
+
+!-HhiVCjc%A2DPlf9YqJ&eK@jE#8AfF&XMl#QQNH#pVI@-Ak&a-kliqRB$TE6&9[
+
+f5K1lE'q2*Eca[r9BJQ*U,rGBJQ)Cd4S((TFq33iQarK[D(cZ,RbMG5XNcb*L--G
+
+Ga)Kb$[!@H4B4UpMbLeH-`-f2r!Sl9rEaIYBcFb9HGeZYHH#L+C["G`rfM,H#1&V
+
+rJcd6Vh2&a%m[jZZG@*-k`2EScRb&Qk$ar)p,VT`4L&G%2+frQ3pjDq1qLGHqLYE
+
+9IfZ5CaPaGIjej"P3MSM*XcQ*9mAEM[ihmGcjjjqAa+[PVHaaAI%%)c(a-U8ZKrX
+
+Q8T-UXahNB0m%N[NIpqLcX9F3qr1rM1hA[M+aeb3pY*khJZmGkL'rBQ!QCPe5hbf
+
+m2Ecrq*2p*blCIlchmrE`rZ02pTqibQIVZEXQ9@Vcre!pK51JXAhENeb"amCpkCP
+
+Fi`VecpmKmm#h[YJ$[M6["8mje!0aZPHjF@Zb9r%f[@SkHdCZ-@mI1f'FcUQZ[#8
+
+[8kFFRC@#fekY05*hJAJY-I4Pi+D)N5`jZINlmaplm0kNCYJTIAmk8M2K$*LB'j-
+
+DBDrd+AE9@50IX[pi9a6h#ppe[0AjIhbr`-l[,9&XrGKqi8[UljfBe'm0Ek91cQl
+
+Rl$`qaG-eTQF`U3IQMYFi*#rA!cZMGkMrZqVKeEhDj,E+pm9B(qmJKXcTcKlakP`
+
+eF@Fq-kZ!5AK6HrSr1UZmR8RXE--GIUEiAYjR5XFClM",BbMZF+pL5Bc6`NkGIEM
+
+Ze&RCYX*qRFj1[9&fkKEHi'kchQ'(GQ0N5Gp%[Z2pKGQLYI!-e6p6BS5rrTD1c-d
+
+RG53aC+i`"Ym3,bFH&!U$1Um9,lqkX#YP[eEc6Df0RY$C`[Q)AXr,AXDGl[[bE@,
+
+[ClmKeV2C6mJ-c4$-GAHfZqqkj@"Ai5UphpMp8q,Lc9eJCm5AACaJ8%di0qk631r
+
+P-3G#1A8&TiD`QYLFJj*lCebC8GP(+KmU6@IiS#V*0lNDAJ9kB5&[C4DiEl1UEpF
+
+H,EFH[9CR$r%aiR`Y,4TAiZ%F)XimMb2BNaX$h#V`&GQMZ%IYiX!!Gki4V"qaFEG
+
+$F(r@!6MImLq$kAA`i)DY[#9hHJLG+aCfV2S3-@BA1A%@rfZ!+`NXEd2h`f"r`$8
+
+E(ZkVl$kfG`GiB*CJRShhp+f",l-QGq2+"lT[A0ech6'l-phJ+*JGDf-mR,e3%[e
+
+-qlT*kR4(kA,$*+p4M#"[(5$'BXj6kArIA1f&4RT3jK4l%Ah(fSC5lcHmJEhT1pE
+
+LS'Hbk#qda,NA9)hGI@Q9l&,Hk[&9cVNL9e&b[9jR$(*IV['pKqNX*MEVFYA5P90
+
+'MSRhf!)hKIb#qJGreT%PERRpf'8Yi*H)P@QBq`0r-F62daRmY1*l-N[3KeP('ji
+
+[HAP+G&qe151QmNj[TfGNAUc9hFAN8pcp8Gi"mfTKlMLB-IZ&A"2-m&$*fCq6H%[
+
+TNkAH#mLeZFrQ3eKcqf5FfarTr$#jBDiqScZJc8[kD#Gpe%iIYBH8e`MjY)&aG13
+
+XH!&c$SA6Y5HCZq&&"LAh[(DC1GkHTfI1k*82j-#5`G@0Jp1lma2'k9f4@m&jfXS
+
+0`['eh&MbITI!jbA2U)(ja,[)BTY4I9[`S-Pc$S@jLP%*9`GF&I+IFDi3ER(,p@'
+
+dFR2Hi+Y`(L%Zm1di`d`2Fe-kiQ(QB-I*dVQ2(M1a&60k06EfVc,LqfZMK`e614b
+
+[QmY9S*cTaBrRVFk9FHq@4)rTA'UkLEUlh#6$'48q"rUkE1S2EEk51eV`B"6"+bA
+
+R*0PjT([XM(e5pXVR#RZ`eZPTh@FCRhbf%lb5EXkdh4hGl`$je[D%V1i0QL0Qj%m
+
+--hZP&lJM&$bUr0QYdK2#189I!2Xh22)ebL[UiN#R5Fh"Xr&NaJVQdlj9G[6M(-i
+
+ZEQRpRAmY1@4-r4&j)imS0kj8k`8ZUmGlD+Idc['ml2c#l$+jEIDH5jCj*E`Vm2U
+
+9)pTZHih$Mlr#q,5[FVbkmc,ecr#F(1iZFm+pRA1ri%k6(rcNbRlb!LI%-e(j-8h
+
+KD-(m1rIc%Ye2,(q'I"MHK8Yh5XpYhFq,Y[X[qf)NZ6EFZ(T4pidV0qG,9YiUr&$
+
+X[@(PZc5Zh0NpXrIqE[K6U%@ap1@#LZi1h9faca*R3!l&@IBiR%2Xj+ZB-l`VdjT
+
+2@hQIcF*5ichbc8fU!c#%Ye[N,@*ZeAP1r''HaT)p6Q)ChKRMF6mch"2&eU,h-LH
+
+KaI#%m*&'+TmdBFbUleS-lR5))6[G51&+B0pdX$IHH8ihM$U5$CPme@6TiDBrPRI
+
+afpP0Kq6["B14qp12cej"E`e@M#-MjTA+2&AZDQ*Yp$IDMcUriYFSr`QlEGk9%Mr
+
+Nr*Q%5H0,5mSN"jcMlC`MHdA0q0,Mj3`1N!"hE[j2C!E&cmYHZEIRZA-JR`(dA`f
+
+c)Chj95-pTccJ(bQh3rLPTPC&h3F@1,#MZJpNV`"A$6A"[#DQ8l-R[mlG`H`-2UP
+
+*X@NZK,52,2iUZi[U5V5UVJ4b#BAe1MIY2N"X)43U"Z4Y#rf0Xq@-ee'rH4Ec1Gd
+
+KT'ji$haX82j+CX6mF$4e,TFF6-eRkQ`&a`Ye,jqi2T5"*CE,r#Ki-+5QAJ2j#6'
+
+8QlLAA5[!MY0qrp3r8Fj%82KD`#LfbAcP(HF$H`(mkE0d"R!'162V-UdMjj!!a!%
+
+H!)kUF'S4BjA1,Va$lN-mV["e-%m%+c6cDeXm[a3RmGlI$@mI1k,J4q(A+KkH@Ha
+
+2lkh1$Bf[MAlXqjphR@*%U$Pb%ki!FeXka[,@[@LFiRZ5-hT-jUA@41BRhNp*DU)
+
+BU)f"HBchXRZDpiU,(TR4i2r+210F)hC&V"4c9[*Nlkj`,06cpiVr)qjfLDYFe-A
+
+hD`l16(jH18#BbDMeJ4eahj9%6qUF""ieK*LE*5EZ"[45TkDec#9pYc&qKlX0FLG
+
+[19mD9fleYd0NhM3p%!kAYihd5a2aH-Ipe24CS$Ek+qYAe-qGk5R&@GqqAA%ffG&
+
+$1LF+K*Ie(G83b2Ck5'e02D6Q8JrX5,+hhEGbAHqeZX-0k&hPZaVIk[X"[B+$BIB
+
+5-ikX*3IXfSc(("DL03)q*,%&XjIiTXXX`#`5$JpV)A8h-lbaG1qqB(E'!5he1XF
+
+,Ll2X1F9""21eFmcfYG1M2eHp"[4SS[C$LXkVR+42dUARPI[p!m9%f%HB@De@+qp
+
+eeBV9MG%mSRZ$Ed`bmfU'kRHXGS*a&*0[DpINEmTqR9VG*VMR40-3'-N1!N`ZI!5
+
+D!a%d9$C3Nq@Kc'2)($ABBG(8UDER!3`CHmH2lLaJ,K*VU[%GjDj#jd,6C2D9JBS
+
+e2!EQ0-,H6Y!pb-48hJ4kXU'&R(`I2Nei`E,,S'D'll`SkCR)hKT@+*IbB!hC9r+
+
+q5Yp(pcP2&E90pYJbp`@6NIRd3q2m)hI%X2Nj1"*lmSC(i-B5Um2XDAM%CJ9R%IE
+
+RLTB'q+[0`PreY)m[#kqC`@k*Z&FEIr8YlFbFYA`2m!81G"Cmdp-HChD$8hVk@[J
+
+%a6AK940VS!PJh`2h0!@q3mU#Q["Ul[U$djd*jr8YKpD%bS[Qp6MrY"Rqk8,$*8)
+
+PcGT(SG4BRE(rH5D%iRk+`19!EqSZfGe2Z!2[fY[,fFk(@$blkb#RSLapM,erJ1e
+
+XrSYNCp-GIT6f[G@+`0ZLH+id698-e2ClEVAb'jl5[8Z`%-Rer6T[p1jpbU@6[Ra
+
+hM"%8+Bp!mr2*IKjQ0KI*@r"%"$Xbq49U[6Lh*1iBR32B2EES(S)GZU0Im%j`'Fj
+
+ibH9Ra[m$Rb3@#r@pfQS#lSE@`pArb'%'aNf6HK6mR*a%Cq9RLQqCQK6&0H(E8*L
+
+T($5R*M'1pq'k%!G!2S,P@S`!pDq6hDXE!d&GK%XCl6IIEGk(HIPVG,r,!52!I2m
+
+Rib!lr6G&pebpZeUj4)bRXAh-YrElG-i1P$RVQk6lYH`[Sh8[%#c!`DP'Qkk,Lh-
+
+GfVY(+ArLjEelP()&ZrGZNi0J"iJKHl+*)4L$aF-X$P%5lG5qj9jRGlRAGRF(1aK
+
+PZKr)EeQF1fBJhMRi4m1IXiI'm#l"cCjA(361VrPreYTKEbif(18JPJBHPSZP4II
+
+,Tj9EM2d5ZJ'q,EVR)hIZ[GM9Ka4fGm&-,$l`8jdjGVH@ICSFDEYMfpeDph,CaFe
+
+H,MZkLb(m+lDJEk@A*#Da"F89T%B&Ebr-dkjCGE(fLCP23CNhLKhXAeq6'Mf%PEP
+
+D0GSh`%,+EGB8kYiJqh09H"dmRAEIIF,rY#FK6[QHrX8HUc1`6(F+[CYNZk-chbl
+
+CJhpT[rjBBk"I%k3qGXij2D1eNVPUpD8-*L0pa*PRqdi`C0j,c!+Gdbk[-mhHVG%
+
+Dj0-ISN2@@HX"mSkl@J0c4HI26a9Rd,X#dbJ`XfK8pbr+iaRNpS,Jp5ZijpbhR$,
+
+18B12TM![I6)[K5ZJl`,q,XlI53km-hQKl[[@&[IeIEdfCr0Mr*Hl9-EdlY3LY2#
+
+)k5ZZhpKA)EY3Z06iI-53!&PE8f[''#6p)Y`jR!f'ZTbmA2dMjJAq`)2X[Z`Y%j0
+
+hKK1`aIDCCj3IC[2$[H`KXAcC*jcER&@'ijAZG64D'cEIpKe6li6E![fZSQad[p4
+
+8FRBeBf41r@*'XHE%*1cqR#hF'q5IBKM'PFT[Beec1k0)1DpaDGRVG`Rr5f0--"a
+
+r1CJdq*bKB2THh"fNKX+hp#kh[ADNcVhS[2'f$-pYl)iM9Cp&kqbC4Eq@DS`S4Mj
+
+J!qH#ijN*!h9@V#hJSCKh%64,Z(FU([S$icBHaN2062(*,-+CXcmYhY'i"cH#d@"
+
+2fM#X`C1HrEMU!*jG're!qe(hKHIL'H9(CkKeAak+aAZEU"GcJ#j1Edk2kcc@R(k
+
+qeA-5VU1TNGP2IRjVNQqfchVGXr6pmMKhbcd&jfL2c"24Z1LX[ApkpppZhC2$0hA
+
+HEC`Uqjr4Q%%XD*Zm4rGrGepBiIK#9`qr4hQ1d4lfY$`AC`eRXi1929[V91eRc'E
+
+UdU"'f9l[c1%CPcT81p6CApba4aEj,aDIlpMIGjZQPVZrGq)))dhcl$L1-,+)rar
+
+#%3bIBD6TDaRZ3$Fq)$X-m3&RepZYHbYf2@$N2aCXaqcI2p)mL+HE(9RLrkqpQVX
+
+k0,cBAm!Ff8Fj`h[pVU'phXa1dIb5RH`0(#$'!c!l'QB0GK,ZD%-88a81E*CT%1B
+
+CP[SZRIrZM-N3hDK)pfUY&IFdQB2I0Mi"qA#-#pk'iVRNF'%'f[h5c,bpi"H4C'E
+
+Zp(U3!(1El(0BZ!Gf&cA[C8Bb$[F-CfH&ELci3(+@AJE2eZb2KFN1'm2V-E1@c['
+
+q9ck'FJ(4ipmd[-lC@jrCAXcKQIZ+16bc'Il+kU%F*+GS(V+2JRql3QTZ1EFZGbT
+
+(q&+'6dYGe5'#)H'F+0`Sl),Yj##i+IXRQ[Hqp6(A10UhqhVMAN*GXSUFMQmUASF
+
+DT!jK0BS"!`I$1CVAhTelm@2PD4h"ir9pQEl[aZ00E-&(J-HefJaj`["IJmHE')+
+
+p)JCe!R9f+IqMJaXL-d9jCB0VSqmDci&j5&l[+1`rREK4qpDNeaGj,0'5d"dS463
+
+F-iScITIf5F06c-B("C0kqP(RKM'[BS[rSb1FlqfAQ@0b8SdD&qFMAS(iUi@cKCR
+
+%A&C-K[q+2D,&GX'RPmYp02I[aI`IcJ#c'qjZ52V+jP5QI5ejjaVr#Af!GhNjCUr
+
+-C'SK63ecI$IB(HqIk+p5Vf@Ui*rf,ADc!h)ANIP(6S$K(bTZP+[lY-2l3JlJ$![
+
+[e'SV1MZD`k9j8R(l,Lk0IbqAjNR&!&$[dq%FkHjaNN[iGkD0pXU-F2P&Z`[m)QM
+
+D@5j4Jqmm%@*LYq+qX6$lHHi#KXNX4+FKk`$I2I"'GJrfc52X(TpQ4ZTlh6d3"qp
+
+$SRQaJRI)H8IqCMY(j)aG2Ac!41VjihACEj0M2%5Pb%qZUkBZR2%PdAGd,m)Z'5R
+
+dC32jiNjQ-Xl3pT4CBh%dF2-,&5rZk0dI6jHqlp#caJa!r-+Dm*'#lU$"0j52-+f
+
+[bREJGaK1EMN*jYe*AJ+e#`l(#B@*aJp@["bj[phf"XX4F2$lYkX1a&(mAQE(6Y2
+
+rL-d1CfEXe,dH-i0iSjQ4hjrqmNci"HiYI5*hd4dd)[aGXh[A1Gp-Ci,J(HK4pJ$
+
+kR$2'[0HCJ$KiAb6cH3A[Z,-fQ9EI$ZNIcT*`f6LCFHRC,qMF`8b3!&TL(MbQHSl
+
+4hH9(Ll5R'j6EXXCkjcE&6E5IIe6MHl(SM(I[`-!PXV`fj*54LqaL0YMG'q'S+Nm
+
+@q0CI+dkXHmN2GaC`l"L(cZ$+&M-fZqI1QY6"LTfD'42EYcBEeR1"iYmZ(N[YFm&
+
+%,4DT''5flYY4I+&pA3'$0"J$[S--CfM[FCi1-+eXh5-d2ami4V[eMAN[fSUb+bh
+
+8r8VVe$j,qIV6b%[kkQh&IG,XGF!YG[[Z!Bl`0a,mlkQY1Pm&M`F'Vhbr$'+SYJr
+
+H+9DIVE0Ekj+jEbrG5Jk$mY6(m%(5P&1THDLq,HUL(0Hh+Jrr&l[Y8p-NCpd4RTT
+
+SqEp9jfLdRhch19m!2I0@RD24YplMrDhK)RX0Zh0``lGUIh4J2j,M(CSMH3H'!ep
+
+-Ifb4Yq5,GH*Y&fKr1hZNm)ahk(lLB'db,ql4qRG`3D-B3"Ckp!1B(efFNVGU(T`
+
+P`Pr5fC6Q(*0Bcfb@fJJr3QZcafZMrGr"lGLKF`ZlaTXNlkji$[q*EjEaTQ&l[#m
+
+rUAY2eLZeMiVYcIQQ8H9`,lcMicRDZ4YP$r'I$Zp'6aL[lHKZp)6LrDKA8S)YFlI
+
+mIhHM2L$fS8G9em$8C8pF&r"Ubfcf$&@HSTfh-4k#cBZBHR3(iXl68TC`5P+N,U&
+
+`X',LVq53!*2NN!!jR!1`m'@U0i!mP%[Aa6efGi5dfZLE"Ec'j3r(jY2fiNcrrL,
+
+MTTbRmcr+133HA&[8KQ@YJ'f)RRD-3i,q"YI8-fP$5cJkePPfkb$c#,ZcRrITa+V
+
+NR#%ac4b[R[S$dhV(r+K@6!KRbhe"RIE)1mbJ5Z'GZ"V1i+jr9IFaB'PV2%D9aQK
+
+iZ%PR516K"Sm9**Ed(Q+&LhMk$Z84GQ2TL%%q6%Mf"0&eJED'jE8lI+SBYZRNmi6
+
+ZCB`M2"`h,k19XR'IEP%I%RT$9RmRUYHbdE6BrdCh5p8'9hdGeC9ap&E#m$U'50q
+
+'8Ymbr4$Jl`CcKhji#cRmV@*d"Zq'IiDr+ZMC)RjKpU[de8Tf10R*[UaFG[Dbh(X
+
+I93a9pQ@jriE'rTAfM'L!YiJI#p%!YaiVc%ai%h@`RJN+QE@HkKl6rqC-XciGV+k
+
+,eGmfX9P$i52r9[[mF"e5De)repPSpC4Ibm9S3NZ2SKqD&UjmJTc@#hqLIZh$(IP
+
+G@XZCUSh(IK)X)U+m8)XV0ee2Vd'R`r"X4'-3ZBY'KY([(b3kcV,r3Np+Hc*6Hii
+
+cfZS#'3fJ&D*jeU[eE2dKf*R54)p"biJefb"pK$c%&`1i[k+GB[SLNjc!@hp--C6
+
+Sc2K+V'pIb@bSYVJ[QAF#-fpNCb+1)R0VZ2*r44-3hfAh+YFKJpbbbFh4Ic5jkIl
+
+hUXH%$VdRR4I&lJP"ZEHRG,!dCXKLYTP'hDpMPRT-e@MrGF`bMbPBhb'['SZIH-Q
+
+VKY%(-l2`*G1X3`mEV5@CkjMjd,ifmpMTTFfa6Rq+pU(h#F9UAjYY(9j+@Zl(Sm8
+
+"Q428ER)iFNC,RMdYFd[pM3K(36@H$KMA+cS28[[J2I#YL381MP-hi9j(krCPdiS
+
+mj61LXdk28DGp`h@#4i)P[5r@5$85IP@MVaIdRl9'MjLfbbXe3Pr[LrXDG`Ifp(L
+
+(*ipP'IH5!GcJ8GePC-GcG-0%6lkZZ0Yp4AHi3l[GeZ(qId6lRhN)AlCMYhY3H@e
+
+bjfXhI5lCkEkUmjmaIqAIidQC$bfbSkl2Ie8are6"kD!PT$L0Zl1K[k6hb-R3IA1
+
+&FDe%%h4S3B0Fkh1fiKr-"9T+-KqB4bMe8jd0CRq!R[[@)Hm0U2R$1Z1@83Zh0d[
+
+rZdq0DAhCII`'D0j4ck*FqT!!I$,MQd5mNS6#dFVrFI&4icI"D22*A[4B[)mFRE9
+
+IZL'k2ji$j0$#NdZ@lQD2p'jRTQ@*$KRd0VFq9jY'X0C'r'#S,S[UkD%'cI%pHT%
+
+lI@DXb8CH[ZLYL#E((qY1*RdMQTaA'6pIFfLaqQia,CXZ[%%`0F`5j%Hm!9S[ia9
+
+(0AXYCT9hA$aV@K!NElNK9HBjDUp#VcGmmHM+,'mM[!f&cBTVQ,UPNPI%iPfTf&S
+
+6-ki4rbCi9kc[[$m`2@E-#F`(1eX@UBiUDXihSI#3!1jDR2fb2mN-r)RKF+LRp8K
+
+JkLhl%6"ih6h*%3"H@Aic1U!2'2rGF)#)eDe5,cEH[c90$H"jf-P%Xf8T[HMf@hV
+
+ePl9Qc3AI$CihkpaH4MfA5Mf(TLEG6[mIR!N24pX,Q!PQL6-,-10e(S!MF@3HB&B
+
+eSK2IG$*IF$M",H"16!eFc11IDbmIlCQliTlCUEYiCmrm@2&PTfISNk@MCljZf-Z
+
+[HZE(@J29AMQJ@0*5kL@cr+-bblHB0`YRPMqS[-&Pe(-CpA6RHGAYp-KaraD2p'k
+
+9IFVZ'V,$0F8erNHYTqiFH`Ul00mb0eIl&4U@`(a9`c*Bm"aba&p0CpkEI1GIBIP
+
+qah5eMZ9SF6ZEhdRr0TJ"m+a#l`f5jhSd#"6MC,mL(m&AT[99eT5FTReQj[&#iEa
+
+)RYlI-km9UU1B1R%pI,2l3fA"Ci5q5d&2cXZlP1Ad,,8%4B0BGUqY"GdII'p#2`P
+
+l(2(TpXMa+Y&A))H(1DZHlcYFb`Hc3cd5pIC!DIEK$`k+G`0S-$%[k1,pA`9G%-E
+
+*feb#j`IdbUD5UXcA4dd52`INr!J1+$b4KdalQr[HiEhe5`p&$a6Q+[fr812BKmD
+
+MpY0UdF)Mel)J@b*m21MJr*Pb9-PTFIP0m#mad[C4l&(5GcKVha8VCp,dA69lE+!
+
+QGCI@N!#m([*5SV[k9mbVM$2V[Q$m&q8AEFMq1HqJlmNjA2!90,c%mmZhG8HfZiZ
+
+FNAY-,mA%TjjJGjqP+Dr)HlGV'8R2PBP2&qiXiDl(0PV2VGGGa[4FN!"H5*Z+6R"
+
+i,(dGL4k3!"kP&`@TMD-(pk$TM3`0&pe1MlhXUm6-armeIlkUY9&[3QEQ4,d*TE0
+
+['MaMXR*iV#HKih29q[T!ACV%ddCMhb6aa)3DVE0CYPZ`PrA`a84,`26%D[38&+q
+
+D,aj*GTX'QU0rrMEGUeN,f6hJ1bAR*ZUmQMTVI+dckT[c0HVmCHSmBeqGYkL'ZZ`
+
+S[JZeAePc`d[$6(fEHCE5(NJ@c@V%MSJHT26qrqU[,FS,Y9j'ZZHdb61Yf'F6M4q
+
+![-@hdf(F1HVhT'@VpURh3GGKqj,QqSB['q1,CTeT-albCC-HBqc4((HSTYJ[r35
+
+CfLJ2brY$e4I#2&-I$,qVc@G0QqSAY6%j2Z%FkTGVdiF%$q9`VD&e*ldKY6BHNJl
+
+bKX&2UZST#lfFHhf!-Em((iVZN!$mX(pYbFrX2E4lCPm6HVZeh6IfhGIGhEHjZk6
+
+[$V#`)(Vd1Gd,9rGhhp1lKAeY2E@!9j4-e@h825E9p(rKq8Vi3)fpmf0ZE+LNeZD
+
+0Ei,1+Y9qm94dh6ZU2E2XlSfLP`SpkJLlc9jrQmCXLmYmCY2'6!maULd'pbPS,BM
+
+@$Z2NAAe`@8h*kBSId$Z"SeNaVEFbpP1!'-R%%,b"[$`hK[#Sq3BadSLK(M@-RT&
+
+JG4mj1#hhf2rHTYSQ[YRQ@B+kIIKDcAhXMp3(#SVq6`Yk3)J,IcHU[d#r!*U2&jj
+
+9bjMB3`#eEbEFQrjpX+QN62fa'a1pRG(S%kSqLZKAHKB0ar'KKFJid$Jmdr3"0%l
+
+48*bmE,6,p4!B#aTUCbVZCf*"Ji!FYIi&[G%*2b*fQ0MeScGZJKq,Zq4-9p8%m!,
+
+kSiRhGd1i#rSGX9qrhk9RZRC-L(I3JZ0-Id`acRM6)1'FaHk%2FA`4YpN1)(XVLQ
+
++q4PYR0'kRjXiaqDD6qID,f,Sl12FB&q%khG-X$jX@e&pp5(JR3qUr`eJB-)TS%m
+
+(p#dmbMbSq*IeLi9jPQ[H$T)'H'Zd2!iB4YQiHVQrI6E'm[&@-!@mP6Q)Yp"3hUM
+
+l+0kUTQ"MRh,Qm"DkP4YGJq1!D8dfpUPQ$GlZjUh`@k$2TMSIMAh+Zm0EH+rCU2X
+
+9hJS'5QkNHEZ6Yp*EH'ZdEjIT,-CEH,,CU,-&Eqfm&XeL[0h+@jQ"eP-0hQElfmf
+
+mP9Q2YkV6eVKkKEq&rZC'R5ei+cf&Ymhq&Mja[UMm!UYlMEIcr#f`XbrUMSfhJMd
+
+MhbTr#efP,cUAm8@G+AKEk@qaqhp4-@5m&Fi3FYVNEk&"pNA&R2&@[Br3A`8m,p"
+
+A"IEp3HK$b$H2I4pDS6,rj'f[*TM-%ZLZFBrkb-&JY9r8@L%rjFFdpP9jlZ'DF,[
+
+@#Qm9ifYF[GlI3V[d#eSV["@q!Z,1p,HB`er3@Z'YBLD0I3hq&VV`Ap#G#9`1h9R
+
+KiF#mKBlT&clUEe@(X,%[kfqKJkTB&YkUcQIMkMRq&R[$&h6[ae[ee06BYpEI3M[
+
+L#clrASMRRkeK,Qr0r(XKRRmf,V4@[q$c6reriDhS)K(E%UpE`Q8i`h"Ik-Y*A,i
+
+6lD3c[&q@hD,[KSE-PpP,qkMBacYmXl98#0I*H!6)ZH#QLLPGMmJH"(`'R)b4LXr
+
+mhYfL`HYb"(H,GPcf8D92L9HR)jbPq5HHSIPF26lpqj2CQh,!IQkl&2mBFdDeGlj
+
+KBHA5F6X9qlrkd0NRGakkX+2c3fGd92HJHdG1H#5kEh+fp+R-i[Srb06AEF[8ee6
+
+X``"G$`hdfe@jaq2(CQDMHY[$l2Qc)UCb$qqNKpAc@*3MC,apRF$1Zl`l3#Fp!mm
+
+PQH$-@9+$N@Nmp`$R84cKch4R'FQZeX!Ei-[9q$#T`Sm*HBl'pq"I&$cMFBDJ9M2
+
+K(+UA"PZ()j`kee-$I53)6qflF+6KRd5`)(*UU4'M(%b(5`RXD)KaeGTdlXQqM&l
+
+(cJ8I'X-Ue@X%X'rYKf66#9#0!2)0MZi9d[FRr#FJEqXr!Edha2KF,qNZ4Fp-c,h
+
+qNE6-QLc"Ym$l'L#qXE3'-`SB11H%1hZf$hY$#,l-'hEpma9XdATXXKN392b*HTk
+
+'Fd@I3R`Rmm*pPbem1GC2H1M`ZLHFT(Y83`qFTBY9`i)BZ-P,pJ-EArJlQTI42h2
+
+bXKi)dk6f`R13!2M9XDq`Bh2)cMrbEl@rG2jep5IiCY44%km8KQG$h&Ee6&!2c!(
+
+ALdMl!rYkbRLN1&D$`alai"("a6p%DpRkIPYKjmqC2aE1i5HATi@$`6kb(-T3f+L
+
+lPfKS!"r'R&"m%(2+dC%c2'$86V@"SVa&d8$6YiSP'#mQDDT$*Hm1Q$B'hV(q4hD
+
+@[L(fXciLpX-Scd*i3TCVB@Dal$ML&FcKjTaY-dYiRrpJRLc)qa)ZbpZ0%pSc5ec
+
+X[$EK4K$EJaHjPREA*63kK5fk@aZq2Rb$r+([pmd$h!0(IE[VaE@EpimH6[@aI+Q
+
+*jH4Vq*FQAr&&m@HQfhBi*iGlLGQPh-Z@mFS$H4*Zd'MiGMkmAcbjZJG2C'ZkleQ
+
+p!P`kQaUXL(eI4"CqH#*B3jRPrPhMdr*GifVG[k$PE2J%QGT,d1%6M3&iZc!iPUe
+
+rMZfak$hem*0MHNrTUSY5C'mQ&RaBFVI4HCpTR&RPiB"I1$$'0A%hc$a3M#3rp!8
+
+adAGb*aSQdKII0qjE+lXlI3a"JfbKmA6*epX@hbP(m#cMDYb&(SjJTPX8LfN4h5R
+
+F(r*,8e(J%%ApdYbRqjQE9kl1'[%XXdfa+kYV+GSZZ)[kbPQ[A1"SI6cLVmU,6UY
+
+`kUbH[-fh*&U[1*!!q'qd[QXdMQ"hTSHL[QRdV@"hjQfkqrb%4YeUlphl#cSC+kL
+
+$UBA9Ur5"l6i'[`Tk"TmYq$r52P3HXif,(@L0HFUl9fYN21h0h-F$l50LRc"q36%
+
+,3h!2Li8A9BJ1G&ApDr!VpBH+YeTH'rUJA(UC[,4PR!YfK6+dC2V(mHVchaG2HG3
+
+1&3lU-Z'rBRE6+bViCF2!bSGPaZ!KV`%[+lTI@lpr"rf!'Ml+6TN4Z%Z2Ci@l"bp
+
+L6`LjMi%dhUIj,+QGP'F'hXZH32dKq$-Ta(pU9FpVMXhdM$j-hd6J&%k(@c"pA!A
+
+cD9MQTZ2q)(2c-GXbM9@[9[ddj!UGA-b*pXJeb0X@#5HIZ"Yc06PMPa(rGkKIKY6
+
+-iA98Y5LIP$NFa3E%,fM,r"JIX(S@CLlP1'EJ!aIbZ3C21MYHr`+h",f&(Dprhqj
+
+IlQi0arE1GcjBGJjXZB&F`SI1eccJaDFr2PXP$r(LJrX@pq)6dl8`q"epeT5,Rac
+
+4Sc+H9+eA`K1k')IM$dMLUhle[mDhZ#(M[qaVam8JX52Ad@HedQH1jJ[a"I)jF9B
+
+--N'j"I+HEk+l0,bUU+p+B-j@M`"lbMlc'pD,[jKj+[PMRUS(ejCjc0FLQDh)`Ha
+
++lET[392AiL3aIk)lCBCDlbLB"DF,VhC0AAMr*QT%c"Zp2i$[),j$[(BqeH&F!*G
+
+'lj1%XiIckAhS25&1IhEQ`L%G8(Tl9IdQe)YkTqS"0!JAFZ0qMkl(I",Pb&k[r*m
+
+ZRd3i#kjlA)GND25SlZIJp##AYDUV!dipkZpMaaCG3kf40f1D`mUR8@maiL8Q**J
+
+@cNAM5k[P2Xmpaq5ijjLXmD@E[*pcdTc64"X@jhRZ33EH"+&4!"i5m#RK1jMqcj3
+
+h`14mf6ZCRrja1JZ`lmZZ9l"@ZI23-P020Ql-)Fr'P*UCQ24$)(ZlLGNXElTLeK*
+
+6X@$%4%p@jFN,Xf,!e2H%%Zk,KHIl6Mc!d+q4BQJ[DPfF1Y56Mqh[51aCe@HH6T!
+
+!Nq24+",GTYJ!pq(jl!,dYU8ml[l'Va)-Ycrp@ri9HV9Aa`!mkjR-Z@VQA!kmK9a
+
+QEekqT$IEMFp+F2UU9-m!qD!qk&9[Km`Q`CPCSqV4PC2UQ3h`5aBZ99ffj&k`3H'
+
+X8Zm)ZjVikH8AH,cU4(SRa6RNeAH#EDdb$00JNS)lVZ"lXqcR+FEPT8DDhUZ2*QV
+
+'DiehaeaBiDmIU3fd4TcDS!D@6bZeiAi,hfl#EcGj60L#lirU(drihlN)T``aQ3[
+
+k31[G[N&bbDXI1ehfEfV-@Gm'JUpiEc+rGD`ThLj$Pi%jK$Y(9dV[8#ZP9e2"FZE
+
+C1dh(VVk0(UjNE`*2@RUi'ZiQqG+VfEHY9e(fm!DEaqTP91H19c54IHVGM*i&'P,
+
+AFCm8cb'mEjEpDjPUQ,lNqP,H"D*TDR*a2(1*6Q9R,[kpZF!M'ZkY,S'C@8RddJl
+
+&+("RFK)FVNq!I3&aC&qJVmKjZKX!2e+GhJ2'Rq2XMlj4MMKRHr50m3X*k1KZjMQ
+
+dU)h'MHIheS*C81XM'N[R@6YcQ[JrHIR!c'5@!"0cCJRd5*aC!Sa3CSR-#F`5cJP
+
+qNC21N!#f0I[jqij2*Zae$6If,ZTHf$ZVZlXh`qa1BBqY9!f&qeCAiaQY)RG2llc
+
+F`lh6Q!PeiT(*p9J%MG#I*lV%#4R(Ji'&h@Nq()cr1,bYmVI$H'[iiJRiCYQQ'#Y
+
+fap@a*J3p-)K(fFEH$[IF9*LpFI9YUJ201rKiP,d*XD!ck3AcSCm"UlRZi%am3bb
+
+,2Yl`YNEmE)V2CI"qf9Iepfi5[N[K2Je5IZ&0NT`0aD,K*EHP-4`X@S6U$krpm83
+
+rFI18RiI8XTmcEpkX(#c14&HlSf@FD4FH-!kNdIr&[@#6eQqE``'GY[*@[jFHXIU
+
+pZ$HH5Y8MJG@j`[dQ[cFkB1U4!2I+J64H#(#[@Sb1PU,KJ%jEUIakh+YZNp%[aEe
+
+b!)ef+Hk&9fVeq('[1L9'4aAhUKX!c6acVpV2dp$,dRYEr`0qEqS2EaKkEqU[rT(
+
+XRXdCL$[P!%lVhH4[9Cpc@UrhbRlP3*VqcSMl1ebrD8,XQl@V4hF+reTm9R&1d[H
+
+,k(k#*bamPjm9G*!!460'hVbSpFFZlC2Bp(Z)Z9-NRU-+9(I'LHei"R0M#mi!A,i
+
+YMNdr'39idj-C)r[mFqDR46RikMG*pd"AYpiraQDC0ffepTB,IK+YpqFUd684[M6
+
+hSLDCDmTT(P$-ah0(JHF-[eAK!r30Cj,M6aAh+rCkf2$,QqDZ#lmMHr`4EK2a"mC
+
++8Xq!bXe+RMVGI'kiI,%GidIER#jJ4m(EA2GEQ+Uqpj!!MpR2LG@6-mjq%Yk%q(a
+
+'6(IZCZlYkEB"dAV"R'[q`iI#b@!IKALjm9c`#(2q%k0&ImS$&p&6rE&3eM9VG1A
+
+88d*Ub[X8)r%crpfkHG2Fal0VY3ZfK[XJIJEMTV0!iGhTLNY`hm6GXZqVMT&2[46
+
+da`FbqpheiQ2a1H9i242lhrRh[46[C5m&YpBl5lK[*MqC-EJIi[I+'f3IkEhXaBL
+
+C`P`BiKkVdi9R3Pa*p--eMQU6Q$d8f2P1CY`1HZpdiQfE8J'Q4@ilq`0RTbF@'&l
+
+0qTLjPLac$21XIq,EE+r%)HCK--[qXKp+,reGR2pHej&QRdLG8ApIKI@$VmV[mk3
+
+Ic1ifT#Ee5DdClV1jYakm-S4(Q3Z2&9aVLk-2)TEaI!#H![+&G`U$alid11AR8@6
+
+cK2[h5e['9a`SZi&i$1BZD[K)a1X,BjmQJV@KhphhJNhBHmNK%KV3EaCZMZ'cP)q
+
+[#'rK(A8RSlQJTqdHM,ZFiLkpe(BlCjGfG&+a5bme2HUKBF8qlGXM(ZSB2mCa3,m
+
+TRl[(UfqA9K8alI9@NleD6hV`aKj@+(X(caC6XcTGLN1ZX(d0pjJ[UV&*MLYfHF@
+
+J9jLQ)HlY($ZLpa5jThG@CrR-$VbS[%2d+4TH4cmNDUmAj6i![hG4H18UcL1c%m-
+
+Ai$SBIi`$9Kd84R-H`[Gd[[dR%c2[VjK[#BUcE-aepcDYJL2"("Y+HT[J8a6R5&$
+
+L,l4pC'3fLViJ(ZA9cq$TUr$If(!'XbC*Gj&Gch,DDK,r+H!4Y*XQDTm6ASJGAT!
+
+!d8d+GieUchH[ATGIZ(S0Q'#cF1G%!rGlSjBbPj)%ml'DF3Ch%Kr%4R-U$Aj0KR'
+
+N2-DTKXi8-8"S$(*@dSI56XmPU0`Ej'(m-P3BpSYjVCT%)Bq65*a-I4Z*"Y!JbBZ
+
+aBH3Hp&MT(LXKhVQP,LB1H!8Y49i"pR4LD012fjDjkD6+AZiB!jbJEcSR+#@Z,I3
+
+$eL4aJi+h(GIL0Ie$6Q[iHRS)qS#BPp#I%PhLpHk4$Ii21R5R@X$eXpbR56-eV*-
+
+pe1LcCa)$($3(kf5G-qXMi)&fdI6b9(R0PGp,("Jad'ZT'(T[lrf-DP24leBDEe)
+
+QSLQ$0bQI-NrLCF)ACEkKe'H8TfGfU9r'6NeL+eI4V5&lbHaI4F0k9F`RAI[4eDZ
+
+k#pimFb,ZEA*br)X$-aC-52DkaY90`Q@4[4aRU8hMkKCjNh-6Z8#RN!$ekHh2,Qq
+
+1j(a4ZrHiVrkBTJ#mq@DM*j!!XfT'Q$6%q6GmQ)e6Ea#G3frDqh%iQ!'pfP9Thd"
+
+Rqq28"6elNlqIUcj&d1I[[02fEX5U"!ZeIXHfHjaDiT3*TXdi8Gl(8lSIaI`N'Fd
+
+#j"#['!0b@&jmNk$F%lb*H&jekSIBjUAFl03i(RT1YFm`Xpm*,b&@1f)1Q0rEkCr
+
+K(NZp#MZa&4I[c-IJiMhp!)akDq`r8QBGpNE%9+r1[6S#PN0Nr$X@R-BAHer6XDU
+
+MZ4DIleE2-Q)pXeZa42B-hY5)YJ%a+HMeGHcN#mAcTr*B3kU(4kqRMMp(Mmi+cDY
+
+p[@%9,bRQqCjVK*23$[QPj6TrTh1aPd26%'dYe!rc+aq2)3@cd80pT2Fk-2K&m#m
+
+f8mIPi`r6ZU49`h8eHCPjk&m3k`kL&bIEfrdk2h!raHm0hZ1I90"jIBYlHVNGMSr
+
+Q)eJ)BU5BllTr-[dRlFrFYNI`Hf"Rc1hQJp6f-hb8l@KlT$#$LSTeH0&m9`)EbrY
+
+5&#Q2@GkC@H[8jdA9kN%HbmH2&8m9`$+a3m),r3$mTJd4R"$lB[*8pF!,ABE"@p9
+
+ICJ&m%-%#fCH4F)hRSKVfCkRZAD(Q6KpX,MrDe%$jdD*pZ&[b-cAGVeSkiE%l4!Y
+
+XFfD-[NdYpYeqmeiG#CfHVqVU!1-c(XdH%ea8H6+q,HM(qMI`EKh@5aHb`ke)K5R
+
+XR)2)*`dZqFLDNX2-[aAa%Fh2q'Ac,4mr9Ra[5&m2XlF[Q+i5[&,S()Tc(fZqLiJ
+
+&I&*LjAXXaG5MX33h3U`FmB'M(M4D62mAmi#pC[ZXk91Uhjl0IC,fA85j08(T0p4
+
+f#*Jeie#c@VMemLCZKql&p*1Mmf1ApJPe09#AA-F%l+lM&8qh@UGpaUQ62N31NC6
+
+`)hI%rB6Ba4ilarF8VqM[UCCP3m'lY-R&l@R**CYFYXDj4c8`'iBmY+E%mFJ&d,L
+
+HYFX&!iBq(2Sh[DENF+f4a4)2ee"`0h,YdApKHr1mlMm[ebj5m+jXiLQR)&S,q[#
+
+cZ3K1KM`U2Cr53RhSXF4hZ-jU8ark(U[dZ-T92eL[jmdRBc6ApH+95Q)lFqi&fqH
+
+'KUEEf9&1k,H3!'0EX$Q+#MV8p-r28G+T(`L-HC(9f0PIRp5jEhhQ)AB`rb1E9bG
+
+d+@,m8q`c`NYc2)GLMk+(C'!ViYh)FQdG(mR%PN66m3APS#(2`Rr08A[LB)jYYK-
+
+Fc2(&Q+Ym--FBPpES"@ffR[LZkpmFh1Q46h[X4FlZe(bMh,pIqj!!66+XiqIDrkI
+
+d,kRp,[@("dhe`GGQ[[,PVYefNIrX08!mb-0[!(+#GKYmCk$AaIHUc*ZGZLGhe*f
+
+Ddm,MDp1qXhL6HD2F3r@-R"CV9Z[Eja4$0Mb6eRrbQ#"k0mS[0rbLPc(`)pjZ,Br
+
+IkS$DrE)2#prlf%%D&[E9j2$UqrBj)E@U&N%Jq"FJcTfAq"L`',EUIZ6'HQqL)`K
+
+G3[9*hP9EqqhJ#i!,$!aj)Id2ImR`Zr%3f#[R2(!Jbj'$2e,G9qS&-hlH1'jiLhc
+
+9%`MLi8idkYbq1ZiA9lMrMNEi8Z%a`Fp+bh,aF84X0a3qD(l9K)[`hB)(FH%B6PY
+
+YhNG4,cHHcMrK*ZbdQBmpj6LRPMTZm0F-6QfciZM$U$qaG0rUhZk(qm4E[f"(SG5
+
+FJLF%emIb&ZG4$BMj`i*&kdkPlmL2j6[9"Dj4cEZU-+SfbKBp%mKXrBjU',Lj&9R
+
+H*GV2KQIfZe`&Ye81Q@!MJSq6PbTHjD"Pi2KLEQp*FXi%Lj!!f*JEURpXGI1p'md
+
+,3V5RMqP-(p'VpCjKQP1(Y(Pc#c9Yl&A0b)jk0[DU[UEU-EcNr-TIq`[4h@JTfK,
+
+`4IT)hpcXMAhLD@4&G9fUSDE%p(1T%b4D6-!J`&HY-EkUph%dp!G8je)0P[FcZN2
+
+aMYafmAa0r@eSF,AFRHV[I5KeRrNN1-0i-V*IH[Zc[)YUSMHkRSEhrYpKS60XG$&
+
+8eh"C"Qkjhhd1V"2Z'A`1Nhq@9CaImiZH3@4q2D&p3Rk4pHFJ2!heUN!p9hZAEM[
+
+dilT(p(JdDR90LQ-D&adDM&+M$EqX8EMSQ84V*,Zj@k-XUm@hp[KIkY,k@1qe11C
+
+r`qVeSHpC"miRB[6+E@p,[$Ydc$h4G82HSY%Cma#2IC[mc(R'`fSZF+mdRmG9*`(
+
+eShiH[H@3!+04l*Vp`Ye#6ZSEeIKVCj`mY-rTA89dk@5(UcFm6lN%bH+a3'TQYGf
+
+1B2JZA`Bq@f3Z5+e4'fS8'RcDdD9H5,pVV3'U5PffkklYeRUHH'FK(pEP!'l6(9q
+
+d$TmSl&Z'FjSbPEiZ3#G"H%[XFHQ*EbQQa(INQSE#P`SDABMC(0H"-`9akkb[QJa
+
+[FZE#GZercK#hViVfpY8r'"E9deHKX+cJHmrT+D2(ek[,hUAeU,1$qi28raqd4Zj
+
+m*,I(H'5-U&i*mQaeM&rQ`Z%j)h-%Z3Jfdc&R`+P!r!VVKmEK@Ii2aL8hp@GID"l
+
+I0*k%k3(4lR,U2prUEl3LMXq4Q2l1D1U0hCXFN!!Q`DhK)aQeP"eI[16LRRYJPkl
+
+8qQ4IA9hJ,3UHVAjJ&#[BE[kX8G-#m@1aAqGUa4$2%I%FV8l%drk1pS"J46T6rQc
+
+)+hTkNRq-+ldQmCUHE*TUi'eSrjFr[mHmeJ[l#ajrreX[l#pi[8FY(IpA,rH#d@I
+
+@H,SI1lh`6CdIfJZIdafU$i*HL2Q)H86l!*i2G,r3qVaJH$MQbd,ccX'FepX1X%e
+
+j%qjm+j`U2&GJ#GC$$r-+K5rSR(-mMTSm8+rYq!$L2+`fEEekie3jZ@mc,38l$c%
+
+l0Hqr-pj6E"lHE6l`'Sk#Ec%6(VYi1rL)qIH)lJ-([E!Fpe"ZHPlp6NAp6eN1SGA
+
+1#)8*TRei"#qfZlei*%*2fEdHHNA+1ePJ((,L[p#3!%91HDj2L4hkTS*[A&0c`D2
+
+)`cDaC6E)lK(GmDQA)hY8P`H`YF@plHpL(2(P2Er,!l[-!q0r(9LZp$aVfVAcj%R
+
+r46NF(e3q(HrSja$Rh&M(0"5Z-Dm0KZY`5JIAe)'H%fdG+YJK9#0Cq03GG8LAI5e
+
+DKirB$)lQqTT@FY6E3YYqh`fLia$0mAVR*,j9GarG3er&bcTVfp9M0HE0l&"YFk@
+
+fl#AQ63mL&K2Vp!*bXfPNaIVV98eFX`0Y%(m(R-RFrC([QYJ(LZKi%$m4VBR(P&2
+
+6-IF2D0fcM#riapVIeJZ)ZkY8L)D6`B$JUE$pIX[RVieA&YfjNjPcLLN**[T4`eD
+
+F[H!a`kE4Jm"24-FK&+k+jr!a[+KlPQ#'),EXpH"mU&lSS6jA[%0fXEq0r56&H[Y
+
+eVEXBCS1C+EJ,G,1E6SecIlD!98@a'mm'`AC-Re3@24[pM@V&L)D`DRNPL`pkbrd
+
+`[D6qL(#[[IK(ZN-jZeF8PeRY1D6Vh"$rGhp6m'!Z[NLLlacmhq3Sq*R"'ilY%+r
+
+Y2KmfRHqMZdqYiEE1l[-0a6qLZmq(M92QlMjG11D'iVlc$F@r6ZilYPCM#R0`RI4
+
+T`B+5LR(#qq[d3l0UkT0k$VPHZ@)&a1I3EqkXbl+jmAAP'lJDfN(bbK-pM[Vm`j8
+
+a0mIP"D`GbJ'kdjjUG!Vc4!21p'-SY*Qh"q@Cbcbb[1GIeGM-*0CB0I5KGI)L11l
+
+Mqh$Fk`[HpA81I&hR!h!T-iHhkLlBJ59(jm['r)Ad3h5QLBBj2-l*MZ6Z$Z"HUem
+
+kRA(I+2KF%9cMq*cEDVS*Z,IlK*XVpBE@DEp)cYm`(1$Nh0aU@S6-4l9hh&Uf29U
+
+mibc3qHrUZ*r8K$3m`-h8NllI1l`NDAfqT[Y2EEhT!AAL#m0M6G'6[)YBMLDR'2m
+
+G(K+'+irMYhNSYPJhM-FmDPTDH%Zr)4B6kG5#cBbj2kpalLc1!Npd(IZIc3Hj+)I
+
+eL(lee1Jqb5@IRXj(dk!!ljV`6C)MXkd4lc2)Vd9a)@M'J+qN2QHl[!#J*p4,$(D
+
+MqL`H99[(lXDEiJ!d"!HTPd1Chep9M-DG9i['9kQ[%,rljUT1jNk&c'R4'K)m+fY
+
+)ibTGH1UL[5Bl$(B!m(KacM&mlp1kBahHdeVMZ$S2I+T[JjQpcqUcaANbcJbZblq
+
+A[IKLF##0Uc012$h18Fa)kqHC0I9#Y&dikb,`Vk-ec*BDGR$#TCER*Gl$fr[*[mM
+
+V8'YlPZTLFiBTPm0V2#T2@f'A+rJ(aD`C5fB%lk62*,qj4Ip,iLY+IH")2pUCU9j
+
+*GiZ'"Xl8JR8m$N"Ml$'[+cAZU2@a5Ede3dq`[UbUSX!TN!#H8Epe$UIJ3FeMN!$
+
+jlEVHI+dD$q1SJr5rD(UaAZIJ1IS&ar"0RfMpcLhi`')2QGkMGZL3!%c(k-V-eHL
+
+PI"LX3R@l#UhhJHH!Sb`D,$JAA!L'-fJcA2(f$4kr`iF6q`fcX2CfCYp*[LDm'83
+
+jQ`I-mpiTVUE"Mdc-eh5-ECj4MZF"iaJIM[R%3p%!qqI1@'pHr#FpdVZ@(0ENd3c
+
+8r[PJJIm-A3VfeeVE1G4[RH&"dlYX9Ipl3m@hf(-1T!GkD`IIp9haHB%qDHd[$9@
+
+$1@E!V@(Di)+"h[l2K2,"2,1K1Bc[Tqm2A!mh[cQN"m2!dGY6i$C6-5l[@9,)@c3
+
+2e@F3GYpV#ll4G6rm5r2M"4dF8br(Mk#TNmbrU#ri$M`L6hGUbH-VT[XJ-6FV0ZP
+
+b[+hrK"M'92%YqJIljFjraLb&GhSBbk,1'2[+DS[r3RFBFD(*ieH1jM$ek,E'Z4k
+
+UI3%FJ9S1p)J'VA2b'V+,Z-%e"IiAHDQSZ@TAiSla($kbiDR*[K2&2cB@m3r[Q$b
+
+BK2E+Pi[qah82be'GhSD`[U$C#`dbP`X"Mbr`1UXehqijL1k$Zb[Pm(j3eldl+b3
+
+qpU!+L3F00ZC5UPUcm+!4VPHr&mXp4q0rlAV6TP#0"q"ikMI2pJ6b`&k#2+!YRJH
+
+[42H['4U6'Rl)TiXrpSM0Qm-FRr#bQ-m`Uq!ARcP`0Kc46BRap+cI$Y0cUceAfAr
+
+F2LK@V4I@QPkRi*[@q[P'6p5+*U$SX$SD#Hf+PCKG%0jQR"V+6(4l&,L$q$FdZh5
+
+lFQ1k0%KM2E[GCp-a$0I-*Y'+Mq*BD`fE8Ke0dGciL-qParI0T@V6+($QdL1QT@R
+
+QNYE`i6hmVdiF#&`aj#CkMY#%G,Pf3F'V-ApV[EE316,H,b6[kFB&Cpj'[a&j#Rj
+
+PljQ2D)EN`rQ2HXB3r-AN&+[$QQ4IAa62--NC[@TbMQ,QdKm2Qqk0h,eSh$hZBUL
+
+EQAhNMXMX`biGbh9GNQY'2"2VEcTQ3V&1Qec6e0PCMZVj(0-'D$-2[DGf6@FhIFP
+
+mrVfL[fFpR1M-Q@`H2G5$QZ8PTG)$JLNEV$XSAY1lpLAa(K)+Pa@mZ%!VfRKakGM
+
+2MR&A,'p6r9%+VbU+IFmd[ap(XHqT1L1Mf2G$Z[p'XHqCKATSlhe*mCrDqY3qh'K
+
+G%30r5(%Z%mrPrmSqRGarLYDJe0qlmdpf8RT*'6!YHqV%hP`dd&5IaH-"pXC'pZh
+
+--,'I2IT!ZPadl-LpE1dr$Nbc9rZYJa1`Y!AZ2c'!,09QP6Uek5kqRGi'MmaJ45r
+
+BRLfqad5$Ta51bfVKfU0I`-d#IecjkfDZ2Qei2h,%hL@H+Ub2CYk4CdmZZAK@S!D
+
+ea0aRQ,0kN!#0cB"9j&c0E!bLBclGmmrUTckS83CH'M,30-P%RfJe05QU56fZH$P
+
+h$K-MLedZ#kYrf3AID*p#GdPM+@I5iE4lEQ-Ah'K[pfSH4M1&AQR%cjfmpG3VVYX
+
+eJlBrMcr(Z-2+eek[A&[-3IV`2F6EI[q`lXk$bY%JEp[bXMNAMEEA9TXA'j8lSjT
+
+Ki&e3adVH2DJFM3iILUrU!IkQ4PfFfBd&r[[,0IULcVp$0GUiEfmj@+-q+(3#X2H
+
+5Zk&lR(T8iZc[p'IMa@X9Cm3-ddT'6!G$(56B+E6P`IF3MJYkKVjRQfi(,aiFqK(
+
+X+-iFVETHfH,c!hP4#qm#i3P4%iRm,I5Mk%,aVZ!DF%10Pjl%bf&Q%SFG#CDjhGq
+
+A*Zm[**r#jr1""i2Ij02FPIr"9HTK1aVR8[GX2i2mUZ1F6,cF*-jE2Fl,GAfM$Y5
+
+B&VaCZA,*%Ur$ef!B[DpHENJhrdpiIq8&AQ6A(M+c*R@riPrL#GPl[r&I-32,HcV
+
+8PdIi-dFUImE`"j,GceNUllkCk6PL@kCKCiAb,kY+C@kShfEZY0581V,6[X'4,0K
+
+KhNc06Jdr'$mcA1&3rB`(dfh+FILG0lR'$c3`chaiVc@DkLfU1q2iRe'r0YLAGVf
+
+-)A6PSMM)i9LKNV+2hRPhY#(fA4'qEP3l@S0VZX'ViFfY#-m(Ur)c9qrS,ZPG6di
+
+e`TeLRcf+lr&(r`&Gp6rr`ijPHG1f022P1Y84"-B$(@$('lMM3p2l#[1'J6G0Nq&
+
++UCFfp%[5HX1+rbqYZlZ,TdaP[KYZC,,SH$mk'!jIKSjUIK4lb%amh(Amek$2I)(
+
+-$T`Aq(QZRkGcVZ*FalQ#mhM1CCc(U0lfQm-meGYqFlKFpEEI("S9EhecZ%6eTGm
+
+FPULqp*[$Qf*pkIS(`eE1Z9d2lX5[Q@Hme+C`!CM"e'LJH3ZB330p2Ueh!aMpc[j
+
+M`!bmB9bd!dRVTP(Y0NF6*fd5,dr`"4G+296`H34[(hR6ZdY&Aa%kee*2qK9JhK(
+
+1V1XDcUcRHXkX,mqSUeHmjD+ZASQ(ZRTl1+1ZhPl1U+YhVH`*1'rPM,Tk"cQMVVl
+
+aR'rNA-Pj&QI-dH!D1!-Y8&c,T'DiAqLeA$()AJUqJASf%SahJZkML&(GIhJSMhB
+
+-(-pG4I*Hm!Qm+HCp#ZqcqUq!Y`"ZJR+3!0i@bEb-jE[Pr$$1Z!kK(`[ASAe(H5m
+
+a-b4QdEAFYeH0Nah%FTM`0XII*T0MRZGBj'mbH4-L[kcqLA!L-N)VHBPA,ZC&A'4
+
+,"HmZ#@mCHUFl6J)eLI9"3YEVmUF5Kh(E(`V81f'4[fXSjT8`cppFRE`TmMFh*'r
+
+%h`ppPjLhem9[U@HJXcqK[0K2le1-&*UZc`l([IbCZ2&ELh'[GMhIq$Z'iel`E0`
+
+959cMcb+qCcKZ[fIM9L9a$@i62iGHV()Z#[X6APXmjCc,*)m$SI`Nk5h4+BDR!m5
+
+UP9LMk(2KY0`H&JQRKE'"B3Uh*mCR%F`IXDfAS&!ii!(I56$6C#HCa4k44elc[!C
+
+T9Vrh0KCl-,$"hma+hL`[eV*FX91mLBarPI(96)lZ[V2(p!NkpTfJF@82lMZ"@fh
+
+Iq92&[GapTmKhQ@6K#5'2D[%bI4L,A00I&KiVl"@EC$CKEp(Bf50lb0kK284f+@,
+
+K%Y0h5parZSpm1q'cqkD0IihZ)4@FL518FqBqXS)cpMj[*HIV1+Gc2TGcL(2Bcqr
+
+hme3reh!ZiRbql#[!E9UklJaE-jdrUa6Z"E#(c#RL2IA0B2,LYfDIDmVkbUELN42
+
+a$LalkQH(bA[eBl-[pJkbbpr[d$cBNdl[MYHG%fmhCCEp$6l9RZ+lpp95aeGfYRe
+
+$[H,%@$d8`a[fpTph3GH$Il10Fd@FTh)8[$9$pm48PHpjK[*0`Z``j6f[fZfq50+
+
+lI[Jc["0j+l[ZfSQZJII3VV[qA[M+rUkl&0mi%2G*Z"2qRrK2*rBa"&pdRKhbT[l
+
+"-A+hVH["aq5mGIc4Td35,r[ScDUcRAf8hU2Ij"kaRk*QR[96[K45[qS(ErP[qb&
+
+PH"k9[CK2fQrcb4M+amjhhCepiMA4R9H2k`kUmmUlfHG8RXmYRM&[j-bj9FZC1-"
+
+bcYclYh+Z&IdSp&PH&1dmLI-LcX$i[EK%52LLF41p(B*hB)pBD2Z*Ga&h%EeV6Pd
+
+N1dMhAL)q(1cH$,j$jpjF&[YZb#"Al*!!hUV#IPA%AT5aNheNp%q(pXcSRZ9j2-R
+
+$kRJ,PkJV[ZbTR6ZDCe-apT@+Ib0fDc(fAQ*c&aVpd@GMeb@aV3jYPHdbIqbHZTe
+
+G*P2b#)AcKl`d-kl`-DcIH[0'1,1b0dAI1*kTM!rr6(#IQr!H-Eac4hMGHAmhG[F
+
+8m@KdGUMVh-cp0mEZ&Ma)H%0QcbVUIR*HFHGbGUYd``6rT+$c!ar3iZ%Glb+m8id
+
+D[(X#r62P2RCJKFYV8[p3pf9`XepkDK"2$S+2AUhDV&,M5(L$FAZHI3'Ekq)1AH$
+
+aT#G1aB[PV[KiHDcrcYc2peb1krKdjIifLrFceA*l)aiei"R[9jaDa,[1ibP(qEr
+
+8PKc"m89YHHa5*KHCLIq5LrESq(LQ-CH`jI,6f"[E[q85R@Q4m&l2aAUB10868ch
+
+HF@hHVRJe(Nqjh+r(@f$aRSQph*k+0pIM#8IpMAM62Cl1rYIMeAQmijcUVRMM2Gj
+
+*$h&Z[$%HchVL1"@[h1,Y0BlUkr&Zm(LrmSQ1H,-mhQrRridHleIc(r&QH$cP4,i
+
+HleU,pl4jNhXph[8H6cJDEm5VpAM(jjp`jKZ+fU$NmB+269hFGFClqR6Xrm6ZPiB
+
+[rfReqHDq%mdSFR$VekZ2-m02m8j8l!5BKq%-CGMqi&@p`f-BQhGZM%'3!$1)ACK
+
+qMQ-iZ-R0Fhpr*M8ZaU!e2qLr5(iHp9jB%YfX[HA@UEVrD21RH$6hc06mrKRN2U`
+
+FM14ihTANl@$I*Zq3!1GG*2Qp@VGdiZF0a`p+I2*iK)H2RSceUZAQ0U!p3SrVL-H
+
+lA$b@H)DdSSrS6iA#VL&[B"@Q-IQLHB-pT2f9(IYY"!G@p&+BZm(1fZ"@#lIp9rT
+
+84f[aSXE[US9`89qYKB10DLhH6#hDY,Gr@3Y($aSF0IS3&"fA*e9[B,A`Dm+Mqi@
+
+2AQ0mYrY0jj6DTkfM*KR1I,rjJ8+1pGIJaD'T4$(!ZI8PVU@crDIJTDhMakLraqc
+
+a4qSj8l4#4*q$I1il`qKBfmpSV05dj3ZFZXbf)VmZ6I8qT"B(G"G&V+)NPY3%(JI
+
+9MbelLGjj9HY(YF3dY[#J%0ZIj*CVR,e5ib9hafEHdQrl(32fpPZm+`VmCXhpmX,
+
+md(MhQHm$fc1b1paRr#r6-qL0&0NId"XmValfMNQ2GI4d"@kipSM4M#VH%`Iq&Q4
+
+@)NpUfC[qbSMeF*4,IDPL"iCcRElRVAGl`5G[,#rNB$(XEH`[j,K[EFXAI'UQY"9
+
+eYAj60q(,rpHkM6@YU50emmbfrMY8Ydb[@lVA6EcS+"pjM2'a96[UQ*jhPiC$!6V
+
+V9R0CHhL9lRqZeX*#krG9Z[mC$aqlA+1Se28ILU[[9+pSj0G#GkPG042-$V0"G)K
+
+8-fjq`5YLYbDcm@3RZQ@Z9Y9Uhjp%2aSe%0mAVUkcmGb`dRdN1VS6f4C[j6lp[qc
+
+-d3-&A5RapDCaC2klFHcHPLPeM@VeUFHUk%jbpZlIk%M(H*LLhd&0"QS6L5i!GM[
+
+KKKr6N8+qMXk6H&C"c1KqT"S1GRE%I*2LVA,E(CpR,bJ2rB4ZIiGf&VdBQaU%bkS
+
++rB)mMZ0'GUiBIrAdVlD"A+V39&605GhrUS`ArjM@9AB*pJ'`k*Gli-@#9X@K(RL
+
+a81G$2I##l8TiDlJFeQXhGdIVBEb2#YqMhAiSZ[c9VS[peD+I-+2'+[jTrGA#+dd
+
+KEiYi#rh3XFCT4qp"+k#3!2G&j&"-M"!ak(d*[[I'QJDMkX-8%bG%R&)d#'V3$Tj
+
+TFr#b'!mVHi&RMhlLRS2kV)feDXaZB,5(S#XQr)APLQf+GZiQa-Uimi4(["U,pbh
+
+CZkQ09bkcd[4[KGaTEFBTCeQd(lj0h)qL0i2F%@HRkIlGTGLLZmq8ZdjbSHjam*!
+
+!6)qiiPG"Y0Z+M4-XZXRh*0i6lLPkd*4GS08j8F$F0-qBrS9iJiPU$pj6e#$6f+,
+
+AJpLj"Dm-X[-9DjqCh,[m*,5DId@c5aPGQ`b*Vc2qEY2R4"m8i((4p!&eDJVhjPK
+
+RfM55iph$H[ThkBlIPH2Q1,l8FpVU$[0DFAHL4hfhD3"'mj!!2FRXSH@rd8ShfTJ
+
+ETjSRVNce`LkD$)8&2VV*5hfrb(crP1YIULjFPpBP0GVSfIDBKSUlQcAGU*L3!1(
+
+*YaIdEBrTVLqer-f-%TeAj'bm&k@lPJ4mDKE%r[6Bik*A"mpedVr3kl5HEQ`mc)F
+
+#QcNDMckjf!G"ZIp[0@`VHX[YV''ceA#*cCMADkMki9U68U[K#Y8EkUQKp+1*Tqp
+
+dChEmSjfXCjG1C"F1)&Sab0rCrpdGRIT#f#REBicm+2IImI`$2$#I2D94r-JqSRf
+
+cBYQf,hDSCLNmfY4AhG-KI,VmG@#cR6Zkq,`lY*rqV)"Te+q$*rhJf0hM+dAhb$[
+
+0-,QAP*Y+2FQ&i'kQ&eY0Lh#aBR*m5fe)ihY[J1-lZEB[hH(kKfl2d5q-p0a)l8I
+
+efZTl9-j'6lR3BYrZqTp1l130'I@CNcDmFmQZP5pDl0%D496[#[8SZ0heVK`0U*(
+
+QiBap)E[((HCl"hH-Cc5HXld'JQFDh#M0hV4T(jZG2Lh*Q6kp@XAc6[500jfrL*a
+
+81cA9X-Q,G&j#"hD)DU"TRU*rCq,X3AGNJ(XPVV6pk*1k(lPlB2(i)b2Ka"FDpq`
+
+LhGqDd'`8r5RThGY0%`PD*+LYD$bKAV96$IHIkAN*Yb6'ad-XB)2EaCmHYB"`Yd9
+
+iYXRjSh5Zjf51l*FiUH,EKlN991Q-5h0G,h$bhU0i&(FKe"LpGk2fN!#$QjRH`*k
+
+6+V1'[01mAF6HcKGH2Q8RP*ji2XjM5p*M'dCL+@I%eG08V1D6TXR'QDDD68HmPAI
+
+iH*GjEHECN6Kjkjk+-Z[6e4)VA,A"-%eb2k'*%X8bll"p`RJ,&pmUp(4lf"I2-6f
+
+[!rr#36*kBEUR["i2(L%dhR%1NZ2YNATbe$[dp@l2i4dCR[[$U[NaVIH@lKYl0hF
+
+IZlU$R1ETrJ%G81iIp"A)A53rN!#RmCjSG&#ba)YKZ,4&pc6M2ql0YG&EY@rT#3m
+
+qS[Di,bRl2TlhkSYBhfrYaTX51#Ul9JYA(MK0(RUKf'YGr&-mmD99LqppQ8A[8Ui
+
+Em*YRd4D0pM%mZ"2r&Qb'[P6m,A+([A'TjZ[Z($DA-fUM5EU2)*FeF5kbIk)fUVh
+
+UA@ilSrUYkpKEk$12HdZRrflG@p!Ib+Ndr`-`$pC8FPLLI!DYDBld40hi-6V[Ddc
+
+[E+6jTrY11&TpSJTZ[86a"Y-(p!!SIRLd$h*MrZmHL4AeMVh82%FB$6MNZ@JU-`*
+
+aQVd1-VYY6RLIN4QMmcq0h!IS$S$mkD93I+&T6&IrfZ`8b"PqRh5RN!!lh5ND$60
+
+akr61f-GBXFi!b@GCd6rf!0ZVmm')K$2Tl$T,c&r&&2-H$'hUp891Vkr(X"rVTA+
+
+Ci55iSmD6j#Rll$,PhSi8$1TbmmXR'V5Lj`YpAHY2J[k3!)9VI,A@@6'NCDEKJ0K
+
+mbcaG$mb#T8RXQm4lmd8*pV6801m3ehS&Xre$(-b*bcQ2A5`8kR3ZQ0Lkhc&R[(@
+
+m4R([Ak)e`%ci8F&h-pk@*A&dAj2HDE(q3Zqi21K-UEq*QrC-6GZH+,lhMLR'p9C
+
+8)i55Kmi#pc24&)2r5(!UP62)rHcCSIeXXIRTMrVhr1FG,6V2Il'M[6PV1aVimCd
+
+lfT)prZrYIL,qa$Z`Nf80[m41IPM`XLTD%[!9LYN3V&i5aX'rNVSb6mi2iqP321L
+
+,rm@KBIP[r"C'Gd(9TIcRAI$&&rLZREjC@ME$RD5h*X1Gr*R0R82BQp',Zm9mZKM
+
+051&CZ(kY5U+2U3CZPiHV,M`FjQUK6@Ef)26aZdcELr-2miiHU44[cc8pB112#R-
+
+NeEa`hZFHSMTfbiaX0cj'kFq5HGaP[J!45h%GZIXMpcIUm1k1H@$Tm*fcZ$ra3E)
+
+Z6al!d4a2Xk+6+hL1Ged4mlh3F$`(mrf$f"p$82"KaAiAlI1r3Qm@9S1c`r1!lR8
+
+I9hkB'bmSZjIa"*LDk!)(hCHPU`YiSHkreTZqeQ54DI4+,6kZqaCj#Pek`jZ+HF%
+
+2RX4U+[5rQi[1'NFlm1)#"e0m@6LHhIp!qpReL+4IcK$TcirVRN)[5CdcjH1'DfK
+
+Z8N[9KCqT2H4J5NlGfKihciD,lp0CLrimSM8(ciiEK)ZDM@p(pPb-%h9`9U,HaS2
+
+31Va)V4FY4[Vha6iT-mM8@QB'jX0kQCZek",EhFRi$U(ZPSrcD[@FDhdP'Eqqh+&
+
++SJr&rYF%0k#RZF1c91CSrEe9l(rUMGhNZC!![,CIm'#jm%+L[89r$25`6GqQ4h0
+
+3rr8QKf*b@(l"JqSPZ+0(M6pXFLHkim[ZD2U`3Ra('"a"Z"f+HhpFFk3fUI'K+0i
+
+dc9Y(6ebaf0rA(ZFGFf@miaUCACJljjkEPqUG1Ki0EP1F1kDTr*VrX*K1Y2,lV!k
+
+jil(IH2[E+YbY+(p`PrVI-Ak`8m8l!hdek0cb,)Kp!bQRd$0h1,EJKLCfZZ)LdKH
+
+h*Ij[BRk$&ZUHb9b!rBUh9I'IVM9Hih95I%AM'GpmkJI0[*%H0PjJ6[S%-4V#QiK
+
+Ic$kMHccRM05ZEGLccN,60G3B"YGDU2`0q%S5hk5#[cRB%rE39lRCTYFhaIeR1"5
+
+Kf&Z0fk1L4`lqJR*VeFH5k#eLEZUHURjVQ2FHQ4QR2,$!fpSkQ62@'lMCkGHEYl#
+
+2-3XrS[aKih90kX`iTlbZ00fc@RF+Nmm'bBHDM#Z%$f(`(mYM9paRBF%E#H*i*3j
+
+l'A(SVe%`,19m,64IJiM$h0`ip)&KX5[F,93F`mC"$GCT$E4fT5reSkfGmIMI8lX
+
+fmi!QGamcc[$4fVATM0EDI8aRbE(DY4NQ,(FI-hmDrkGf`4GVTaVp@M[(hq+KfZQ
+
+F-E9c21JFUYe,XAmdh0fUZr,rIqf+IP@lPj3rUE@l9INK2E9crE2H@Z#l(UVG!Gh
+
+K6HdFEc#rUjfCShD'fVVThG*E4AmD16Sq$3lRGG+MKrAYl[B$CT,Q&Hf*!cEljHk
+
+@JJF,a30[dGRCNh[45c-FZBYHBU`AEHldAfKk#$R[6rc$0@[r4hI8CY01LYkVjS&
+
+kSehA*lfV2*+61V4f(pBF'R3q'XjC@Y(l5A2X86liFQr&[2J"Ab2IRPijK4mYHhD
+
+$BK!Z6b'SINldVHar*[GNmCp[GV8"lThHBPlN-b1HiKRL3pAJ$ilA*(d[FmVi"8B
+
+0)`ArIi)EbbiE+I$r"EF@E#QLI(j6Kdc(aX!e1%GjA0E,2I0QEXGhB)X0SMm&$i3
+
+Z)V86`1mDiYjRa0X-IBp'24!0eVh0`BMJUG(ek,dYdrNGpImE5VfZi+fUL`-$Vlc
+
+$P+pJGYejNRF"ILY-cQAL'mVNk[SK&dd[m@e"(iqF3iGUNkjp%B[KeQDYcRrL,p5
+
+8lp9VpTTr$I'N@+aFS8ALL`+imLDmE'acMAr9jD-HXji,r9a8d1GlQ,YliE+4jcX
+
+e,'FR85q%L+Nc`,[6CX!#a5pFhQbka"$-AhTkU-i3kMM+1iPjXhRCMRU1(L$q%Sc
+
+(#R,0mpc(CVTiQJC2N!!qN!$*p4EH-h)KepcQ#)j3KZ[CHbqb@ET!im3iMQimj*q
+
+KqcVLC4IH5Gc[&[Ccb4pH6A4ZcYrMrdhQQ1*$L(PAV'1feQ+TTe2"ckRed%Tq%QH
+
+CD8B4Er1q2Tle"KZEVrK[6hib%m5$LHDRZqbKr&3c5[06VT['9dp#8CbYaGp*$jL
+
+H(+4khCi,prVIL[V+55C1SFrq[F["PS%r%SIHCIdF9[jNe``S,-k!Xle[2EIU1iP
+
+jNhPY21Ke*Y0ijq3d4'G#T[Yr8Ar0QYGTYG(4c[r#A!9q"Dj#FC`ImT!!@KUq3M&
+
+p3Mqm$Lr*a'(GiEYkBX%65fIGfkAZ46l[LSTeKhGpUH&(G6rXUMYpmTUk$e(FN6U
+
+JmNjLeYPZhqe22DT[X-CRckUNTK)l&)icA$"Ddj!!ep6Sp%#2cH$BL+Am5r3404U
+
+8Uhq1lMj@Q`'jKAM,RV,j+HpHm`X4Sj3F+bc(&X1-N!!IDQ9RbA+2c6k#ji1+)PE
+
+D16p8ZjLF*I8$8[X9pT4IFfh8#rTrjYSFemDcr!(,F6Fk0DX&$eL'Pa&m#rN@r6p
+
+ifRq[Z*R`Y+&M1H&"Y&XkGbCiBpjRf*qc-hQfk+iVZ%VBr03EVK0kPjl0NGH(RIr
+
+4Zdqpa6@Vi&rFfDGZ-'m`k'ZMPFQG`+h9KrIa(bfr$frI%R[&@bGHP@eFa,4cdYd
+
+2`-X!4P`2,f2#0@0h*h9&VGYR@Dlch2p+lbl`&ZGrHZk6I)("1$-EGE6B(R0a15F
+
+I0Sd*GfDlqdMcFMJECKqKleMbL9J(d4YiH6B2F[ecpDePkQ"QG'f-lAE83@Xa6rN
+
+4XENAh4%`md`Y-"[$VNp3q4aA`Y%6)qF4HhV"#D*E!6l[Nld9-T0q2B2q6[XLjJZ
+
+*HJ1F$40+a3rr"[%$XeXi5'BZ91Tq!1`I(PRXGi"mDhZ82b9pD,bcNk15,AVUH!F
+
+I)Kp5RL0R#1pP9SK1`XfkraXIm03%kH@CdIYd@KaAHqPQa4D0EpNS6qC3E(VS&Ib
+
+PNiYdXmjAed0mQR$IXk[8%lj`9RTeUkcI!Y(r`HkJZ%kEpY-*I`E@Xj!!LDFk,+r
+
+'Bhk+CkS(eK2aV,mKMDFBpY&GaYA')`lBK2k%j5`FaA8kGa2i9rqCmEZL-lc&pe2
+
+CRelH2plXqXI3AR,fMq[-jqNKMU($rkcIFPb(F$mlpiQVG0GhpN9J-'E[VP(H9(6
+
+'YbjREc)chYE*k*rdlKN$BMdGeXRX&cA+cre0R9ami#VG@3lAUFVVC1Iri6V0GIb
+
+cG`mC%2-4@5HcIm`a[CGIemRG[mZ'r%phe+R$1mJVRR`lGqQA$)pmIIF1HVb6mp1
+
+0ajf*mBl2cjJH63'qZFam@rI2mfdQ'USb@qV[HJaGlqiCGk2lrqQGFDQaRT)lifB
+
+E4raN6bUrZA2'AD%F`U-clX(bD9kI9qEF$Djrd$[RcSceF0`j0dYaSYr8bTec9qc
+
+&rf*c,PUV9fCGVH2r[E2Z619kG-kk@HDrjGHeFQIGj390`&GQAGP[p1RF@IGEM@F
+
+lkhkVm@aRhA%FUmZ6l'1aAf2e)R+rpJIVkh$rTr@Q"4I3prFD[rN02Nl-IjALIB2
+
+fqb$*bRi9M8KLd00klkJ*Vp#jB2J1aS2fkpi4(BdNj!G[I9PJ'aZ9Kq$V[4m2E1+
+
+e$jb%lA"iU81hSKX1"A9P6*f&-bQeQ0BRA&RUr+K(-',IVHMP)"Ema8YrQ&Keq@T
+
+pUjkU[@p8M%e`4hbYlJNe9a6[riPjeXAE8'UkmS#@%9qdLF+LKIF@dkP6$IcqY9'
+
+&mJNC`rJLHcEfcS@mi2pJhY"-5[BBMq&acG-0Paje@@&ebGDC,C`E`hP%r)KU!,H
+
+'YDDrp!kG,m+h9Dd*[,QNS(dVH`ra9Dfli9'HVI@#YUF(MlUHH6HM$I'!iMSTbr'
+
+qRR@!cXG9JMq'8UISV&j+ciQRlh"Bacb)HVQ8HTqKI)KPe'mTp@-pHc9c1[3DSpM
+
+U"['lSlU0IkZj%D0drHm8'JGeKZ)LhAJikT)ZY95Xrh66%l&H!T%6FP'Y-H[0+kV
+
+r+IS)[r6BD$5l4&XBrK%GIl*Gml$)qU[Dp#QkGa68U0YI(RbB46e`[H+&qj9D1$S
+
+"AE8SY&T-eeRi4KfXlqTIe-(YAqS-LCmbc'MVYG*SEkThV8k2biEA1pfiM6%G125
+
+MdB'MhU*SC+)1UmLP@VMhH'GVHE$rMqJf`TqCi4*CRGECL[mCA$YhAeh)Qc+pd#k
+
+p`,Q-[DUD(V([S%'UhYDN2elKQ[9i`K,FrCmpBEAp#jlLmhM(mC3BciXqqCY+h2[
+
+DVh$MVqJH(X10U8''R'Z(I#hbAR(@Ea4dEC5IrLH+RcLm0NGRl$6Y4qh02pCjlF4
+
+`p)41dlRQH[22Y(K669ICm8CFCI-H1EZab#Q-cJAe,beiY+P"[pVSB-@MhCL&MQ&
+
+6AplYJCR+2h)j%EC'H*ZNq%md"fp,R$Iek'`HiSf6'MAL93Qc6,4lVRAqJkXep4(
+
+AQM+Hc'*cMILrkU9Gkrk(IkfY4ph"m*&E68H(f(k(MXjXipFCEJPepKaY!1RRQIE
+
+qT+i2H)#XGE6IHV98reNIU&0VklJq%(Y+2-0eFB3LB#-M4i8DFLQHc(c,BDEI0Kk
+
+rib0',HdFMmH-j(#+l0h3Xi81VDI5hp$$8j!!0p@6Pq162"K5Rb"Q(Jj"XY(3!+p
+
+bJrJP[j1hHCH%QRfq(EP6!+ZS"D03rL4Q,A`lK[(r[6Q2pfek!)FrX*hGpr49iL9
+
+l[AJ0-9S)@E)[`mHkkZ'URK4pFm%AdbH9Ci8D,6G1RrUYBcqChUmfcB48a@HSSdL
+
+0+pf9VY%p1[*[`@GZNYLUBDpqjVf9P[22KlaQFcDU"fh[G6&I,PfpcXNm6P$qMr(
+
+)@%%XH1"QV%c69%DI'Ar0H3AYLV[$rFB*qdM-Sdb[rT,@GlHr-lZ[Ym``SamSML#
+
+mDhT4M)4qbc%RjZ#XPjihZd*%pp5ld!l4f9iVAUH-aMcRA&AeTq(6DCkUQ8"0'HU
+
+#m3cGX&#UGiM2PeBYAJJMi69iqmEE(0epV'm5p%!5h"E9dB&2+'$)p%0R1*8IY[f
+
+ZSfC[8ccAh5p%"bQU``82KEJ2TAlIX!,a`ZLGXmm,Bpm3ZY#S&c9a)[485UCT9(X
+
+R(TH-,`6`5+Sf#LHCY6*aiQ6(3-dce)G-A"M&2E9dqSN21cGq+PSqQbH[L*iDb5(
+
+6FdMh(1MeTer4hi2k2Mb)A4VGDXIhjle`QH$4Ac(31`YmE,bTc(3GXr&P204b#jK
+
+29&0QShXY&@eBm)k(a*Tmb%ra#I@L2U6VhTm0H3(FjRPACcV*qi3QE8c("TUaj1i
+
+,[S+j+(VMp6ZdAk`haR$A6cI+l!Z2aDpA*(T8mJ`[qr('JJr[9l`(#Uq-qJ#AJVd
+
+1kpe#RQ[9"aDd)$'A4I2IkX[54jMKV0-E%6`!Y6mUlm8r-l&!m85d6'YLX-VXIGa
+
+ei0ZU#DmH$,fCKZpYT+ELEFr'kAUlLVap5Gi,C)pIq"RH0h2[$`G6Kjfm+q"GpP#
+
+0a+1SHUT+j3fi94)rL9lFm4%d$HSMp4Y632c9R$8[0`lH,H)GkJ`pRjlkK-H`@dG
+
+f2kippp&[Eh61r9'rJ$%G![&!-)1H'kdpYdk`-q2RB)pb*`eAP(hYqMA6RP2pRHE
+
+B#f%SY9Uj38l2)Gil*Dl6FqVVfqS&K"XHNVi5A@BETq[Y62,f*APVEp6[kBfG6lp
+
+IZDFR0eZpe+IlN6c$4ffAHC@T[42qhXD#ar&A[-GfchIX!X2@#+i!$@Va8FjCrir
+
+XCpG)Ahc5r9(qCYkrR'2qLcN+2[6,("Y+9Q@%Cchra$1NcbXqa'br!5G#meG-hhM
+
+jLM#pFiA1V-c*[-X"9lN0RE14+d*k-Re$$121MpK1h[(HI6[b42SUFCcde"V&+MJ
+
+IVMA2(Pfj9`lPMVcVb$r#@IaKG1EI[Z0rjEpkAriG1iIGDf6q,4%mFZe8Z!0QrPA
+
++(1"mMFk[&`Uk5CMCG@f2L2rUacBk"XDH5D2R-J5Aii`fIJK6iTPp&h'Thf(QMAK
+
+l%(dFjCJIR0@4HeCP-Rme4@Uakd28N!"pH4XjcEpd9([Qd2NbBcGp##lZ$@I32jG
+
+0h(Mj'I6ZC9U(mJq"YaeqPrC@kH-jp)('*iHM@RU3!,h(YlG4DcHrUNc6I2&B85[
+
+jDjmLRqL-b2+kD1c1fQ4Q,PdJXA2M'-jlICFZ'%JHrC[h9r4%J[CVqTjGZPXl"Mi
+
+&b"NerGRLFjqmGD2$NV"81'cBbD$ANp"Z[2AR63F50H!EmA5R2M++Lr'I9cb&GiI
+
+MkjiBLeqY[M-FIh[DdcZPIVAZXr1J(r+1ZF1p#lN*KpV-(926hF)*-69a2(*ceP#
+
+E`,a6h56-V[S(4l9h26*UDGF@HNTVfYVf0@E5!mbN"jK*$fL2KYVqiZNhDC2UQ92
+
+`l'VLdPGR@GHpSpVPAIfMKAa+m@M+@PFq1qXbb&hM4I02ppl)PVIbc[B+jUKSI8Z
+
+[8,ZhAAe)(Gp4VID"mIhJl+Vdk`([YYa9V3F[UaNSAPaa4j`5rZBq9"YGD2TBk"@
+
+$"9D"G`4U`Zk#Gh(c6RdNN!!MhEC,qmleSKabh4,LQIiFRL28+q$+,iY[U5EaK@$
+
+dh*EG&BlZ`lm)G)S%ZaD-MfI&2ilTKAETdLQ1qRE6,L1h`2&c8@&FXUVUX1PIrCB
+
+E,JImbdibRS6SGrR+0)FhGP!([qVdejaM0CRJrKqY0f(CIr#ZYH!6*1Tr`Y(1Xcc
+
+%elKrh(m0Yl$#DMM42,KS$Ehr8X0$[6!adErc(IJrme"I9aAQrd9pIC66jk,*FbS
+
+(H0Hd1F!$9SAL)FaK5bV-fclfecR%I+8,ekPYje6AZi821Z2rf[8X+AhR2Gl2M[D
+
+FpBF,RSMIIFh$Rk4R`2,i9-'6Lm(8GRTqa[q+i`XQ2HCF%QHf[Uf%rp(alUHDcd,
+
+P3+Y(52)EZ$FaGr#Ihj1T2lCbZHeAa'c)IdL@APh"Qpc1+&)qPYBT%G`ebhTR3X(
+
+MMf+H!F@HYT[RdNcVdIF9p2%d4VcUGGKHMA+S["A2lfZaIJ2A$Cb+VIRZ$`l5Gm)
+
+E-,03F#9iYa2ZTXXP6MCHT0HpiDS(5I9Ek"-0ib,1DHSA,DkN@RdJU[Bmchir8i-
+
+GhQI&pr!kcK(1m)(SRHXp,9TSiKPDH"QU'5NprZ6bLYk(8VilM$GG"Y(4J3i,qqj
+
+qpk8XF9q-ZArl2!qRYj!!4fU5Km4j*3r494"Y&[MH&Bk6l%T0jTH"ZYlLbG5,aSq
+
+hc0jq,0%p3NjiCrh@!fqa@P99iLqT`a[UhF(M0aUIq'KZYjV[dQ1j@4dC2rfIpRc
+
+r(jcl2VcJP5[[1MEhQ9-,RS+4Vq"mH$2NT6RHl@N&IP5bmD15XfT'Q$5Nq@1a$Q+
+
+b"@J%@$rRbVmU0`qLh'&e$di469KU[M[kVX)*'Dpc%IUPSX2fcQY#'C``FQ6!Ci6
+
+qi`PpA1Y44(I!MG8,MTGmY2lNq&"l$AbVCIKAQr")aC5Dm(26AZ5qVAUhlPlp-kf
+
+AZeGRiiH0I$(a-@B`-lr`[e`0ZGd[ma-kqp2`8"X,(R#lH+M`p,q`UZJ,ZFbdCUe
+
+AEH`Xd6Rf[1ke"hdf[EiEfKSiHUL(Dj!!RY4!mI#M0AM1I65q832,K69BXI%K)ca
+
+BcSpIHqhj)p2&83j5QIMfYGL(l(+UJHlXpHaYe*UDe+lhFXaPhD[5CGjdD@pYH0Q
+
+$XX[RlH6`0K3pk6[qH5,QqC0c[E1rM*lHHiXq9VSdHPar(ZUAKcZ+e&CeU1hXXVV
+
+#UM[JH,YqMF-#lXT@Z"68a&qPrR[&fh@Ni-PI28e(#[jrH'pp+RI@dUYk#LA4l))
+
+qlDZkq"QUXbjFe1GXVUL@Q[&QrTcT1CKCJpfMN!#hKLIqR1+R4NHYN!$h4ILL5KD
+
+H'VM1U[Ye3Lrr6[9la9K5CldcQM$GrBGD8Cr5k6rL@p)MUUeLqA[@A`+jT#A4@ES
+
+rLTFBkX4,MDr8I5+U&AfPi@2U,le,!qYbdpD0cY'UPraG1c1)rIZVfER'G+&d,JD
+
+R'YmDXfY"33mf1VX@'+jlD(DYX9iX9LlNdGN&MVUC6@(Pq+Rq'I12q8R*FQm&a##
+
+lqU!daQJ+TDj4[a$lGBHfH+KJ1efk@iLYr2eS$jfFifCRh&$NF+NI#peYVM#I#24
+
+)3&kDmM9691FFGAAmA%LIPjS1!lKZCSrBq,,1H*I[+,0(`"G1Z+!(I8`VBBcjL6V
+
+5GjM0aNY,UY@N[H#GfG(6lGT2qiEJ5hElD"*r8p"T8DlqCDC[Ac8acCZb6F+lrTd
+
+Z`'8kja'EqJ6(BaraY"2YYh'+qlJDSPQ12DNAS*LR(BRAE[k6AY9#MqhKR-fBQB2
+
+JNSYH[FP2GX1BRh@GJHh+RcU1Ua[p![9C[k`#AM9dB96$J$21l#c'Xdj)Fmc,BZk
+
+`U@Tb!5m&2elf0AK8-&aKH#6cKUPiQ)CIC')KZd6lc[6*YVjI@1ha6R"[lB13!2P
+
+kkFaYKIXQ'b,lYXCT8`c2B%2Ljd(hXXZ-DqhiV`r&INPF2Iq3!1*Qi[-%r0%Zl3,
+
+K@b#'m9XVHXfbDaJYr'F&Kj*m*,qAY)FjdehG1hLMA"Fff4`rb*Xrk*hK2[UYFA8
+
+$QMcXYr9aIjMp@28c1rXK6AUK5a[3i,"MAImhU$Z([[P*JCpRr%@`&iAMlZ)"e9*
+
+hpHN#hKhVKpMF8e3hHTcLZe(YlIFU6iIiXYR,i+8rZRI)2ACCjSTB9PIXT%q&Q"k
+
+5pKVRKmIdrI!'GiiHF0H18cE-hbM+I2dYl,E3&E+k6Clb)CpLi%Ld&hcBQlN6eAp
+
+r"G[mdYh4pJ*R#hX"qRCKrXE9UTe%rhR`I8cZMU2R62e(FQ9-298E!VeKF-1NfYe
+
+rTI1+-8+K9,c)L5m9aMChJi4M3ei@GQHCNpE($I`08qX1lhkrS2q"0eRba[UQ3-l
+
+l9%p4G`cPBh#rK6m,k3r141%8*CLq$Gkkp9)pG+f6mIm+[4K6)hIf4)CdPdc-B1h
+
+Z[p4ph(L+,KhbFi(FNYdl0IHLMRa%2d3iKBj($%I63RV"e%IpZ--$L2Z@IQAJPBP
+
+mQV`N(r'fKCSN8a2eK+&p5&eRdeYM6CX+1@LpI*@D3f2IEH*Ihq44UI'Qp@darDZ
+
+afNq-Q8IHYTrS'3"BCC&S"D[qaal6G-!li2Y&SK8-$lb+5DLre6@ZGaI9!2d,mkA
+
+"h@BKqj64G8[2iJh+p&b+e,3N1PjR`L[aXj2i'8PmH'"IeL5e43ikJp`FQSiRKcZ
+
+)09$VRT2NN!"TH9pUrNl&'lEi#+KfhG`GjUp`Y'Z8F9Cj&NJ2ZM-LQel)8rp#EBp
+
+UlQEhjSa6ISld"A6XY!HVNKi-6S@Z)Ik@U#2"q5Aq"6fkjc'ZD&2S(P1Qqi[Q*I`
+
+HNaFe#I&QP1VSG1KmblZR6&G*Be(ELPUl3FG#DQpR"cL1VC(l!0k$l!GI-Ba)Cqm
+
+Sa9pF(`$cR&r1AFl"fSbIIm@RZM9Qb&R5Q25BIa!R*ID,f*(RBkZhYQU2RlbK+ib
+
+4QZ)m*2&34he!mA,6S0i+2rBPi3!L6NMLBHH3!*f-H)#E4dBK$f+)hm9rdAFihiY
+
+Q#MQ&kQI%qZImY8E#prPqQZpl"@pHU[a4GqDAD8hKDp(--AKYZ#6aIb`q(8X,1d8
+
+(MRP*i[p)CT,XBd@j9&ERcl5q@fbZMeCm!h1j4ZU-1+[0GjChIT`AFK(pbHMXm+S
+
+20mbd-fYh2a6MXC@5$h90SVi5AV#jclf6'R4f"a2[HPlMlH%YHG(b(PK$&%-fHRX
+
+1YM(+r64lYVM(r+$LJEEfd4jCK6FBi8Hk2@*hUUiHZ9Mj,lC(L!ZiY922LNGVjl'
+
+jcEI`A4#Y(@*m0)TLci*ZlH`qDEN(ahLbAIa4ZhXCM6PUP"!M-,b)Lf+HXkfaShm
+
+XqQF@)p$G3,3Q%&0f-lIHMJphH*)Dp!*Hj[+BK*G#lLjQ&[%EGeCP#ap!HlIGm&I
+
+8hrKq6f(@eZ$Rc)0H#hF-FT4YlmSZ+rLee2Aj!PBMI89Xh1%r+@iSEhILYmr1AQ!
+
+[ZR[qd$aEQYKi@j2%2Sl,p"f"lalXrrT316%I4I$48Vh(Z#ZP6-c$e9U*jU$aPQ2
+
+jZ+(`YdAp01K$QEQ40[jSpBU9)Ta`i2AUFd0kBVYU)*',hY[l-F`iK"9QP`ZFBV2
+
+M3G0p[*GGTE&hTq30VM3m,eheJYjdKkF`l'2!NIE#XpR4hEfU&ih1h@",bGdcdEJ
+
+De[XiHFq81EqJSVZMmmpD1cSrrrk1@$0I1'[3MXfAfIXKq'E3CKfjSk3#6h'F-HY
+
+V8TIYd54'M"4LV#Ff[)e-0MeQhG-9TaUm,TkcMKC3[Q"%UZh)()UV&l`'Ecdl$6q
+
+*[R1jF6[FKlhPaJ8'*AjHr@Xqf-ZZ6Yp)*NrkIa"r3+DIdV2iTV+paEIB)`3$02(
+
+!dfRCN49mRPadab[*XZY%Q`,jTYDN'R8Rd(VleaRqqj,Y@E,IqaIK@eVh5Y3Gq%H
+
+UD*&"pba9p"(!rrG56hUmcQLl0d6U[fJemqBVj,Xj9+a"@d1`Gla6MYL2c@2'N!"
+
+`%IACl2NkI#JcGpEqVS'FpjL1SFb[[brJ5TaY2+2rkI-DZPTrVre0RR+i&1rIa(+
+
+dMcVk$$-"Z0T,KLPU[DS88hN,He-%$AlUH8arcI*HcZcMqY,Y&E*VU[r+Ic3[3lM
+
+M[HbJcD1Y[X#6kMY'9iTZ!V%EF$@pDp#m!"DdIVPi+&824D9Y@m,l"#GEL"B#p"c
+
+U`,&8,a#q@ULR3DmY0KjVL"Q`5r!Ke(KSlHl[arjDemIcMlkfk[%k25(#Zpq3!*!
+
+!NEQA$mD1[L#Z3aqEK9llY4+,qclpbZ(F5V`XeE$lKXkr4Hi92*9h)qbGl"Teh%r
+
+@qcr@10AMAe')-mAH5Ca5lMqUf$Jpkh0Q+ED8+rGfjL('r')-p%h8k`'ePi,L-6c
+
+l9HUj9E4BS!QmZ5De@1HLQGY"U5hL3B2*1dddm,62[41,I3l0+G4DZ)dI-L`)ChM
+
+hf1rH*F!aPYReBJ&A3clJi,@,EP+LkL2e-6$$RM,qeHrQc,H9NrB[FdEl!I#$cV`
+
+FkB[)kX,FbE$k[qMe4lqK2aDN`q[1Ic0ciddD!rl24B-ThAVM"GdEl9b(ViUG2Lm
+
+0MqS&`pZMFcqMmpjm4qG04iU'89iQIq49dlYhp9KGpQG8,dGd8-3Rc8lCCdb2KH)
+
+HbeP2IHpRpr9EEh'ZRq`Y[!q&amaMLp3)hU+drPPlCVjS)qmalXb(3TVDU5BPGc2
+
+dSfV'YT3jYlN`qr!("k[rNrRK!-mbT$hTA66N9k-B,$#NZ*VJ28r%I[e@21IVV*X
+
+Ah[43D($HJ2!%A$l6XlER2&RN-R$R"Fp8[-BJEX'RP0p#M&3iqY6"+Zr"Xa@pAP@
+
+I1#(*CDIVL"hPTGLGh1SSjD2GP[qAl!erT4SYHh-hLPC#ZrRkiblqp0AUECeHraC
+
+FGf2(&2Md`[p![6j16p6I1DTGr4bLPm46#,(XFpcl)(F"RSRpd3GH*,@)fQ6+'rT
+
+S14B$Xp[%k-K4FdZ@h0LVi&aj2K)9G0LQk)jaGRLhlLGRKf[8hrrCZR-N`iXQRKZ
+
+D'Y3chmQFkfmUD*,4Xjl(GD5XEPRCq0ID6QALF(GCp8`Fck)ADaImPcT`YKS0ZS1
+
+eS-CfG`c8'A-4IBKqA)!'h2Zf-H2KR8rd+V4Z+A(G8-ZdIkaef`$[J50p3qHRpE+
+
+$rVGaZA1QDkl3phhIGAKZVbUTPYUL"Z8q%d*GApAq*-qjL$0f,06LE1d4m9b0FjE
+
+hEiEhECVd,@YPqMNip8*f3mR(GiIN,[hLEb'fleEU`&h8FRS'eHlqcklrle[JGH)
+
+-X1rI`R[KhH*pNErRMPY@m0bh-la(IHapc[@$C#iI52be[P0h+HUPfTiah[,hZKI
+
+NhCiAGq*RNlcQ2jZAi*MB6h92P2cHBIikhIa-6h*I@55q'r26cm`20mi&a-QGJR2
+
+m@!cZ$ZPAK)1leSZqdk$++IHLVqkqGqI969kr(0(X0(FMTqI3iVRK#p[3K"h!$MG
+
+SEqdp6m6kJfkrKlcIfIIXpcc[pjarRGfYlP0QZAK4aVhM#cE[*p6ZlrK#Fck2I9I
+
+j1Ap[[KDPMpkZqb(lL"L&M@[QB$+D$Z*e'HIN1!qC%CU(qNM92'5H-!rZ2E,rB"I
+
++8YrrR[(M$&Y*RX+pm#HTS3Z[IbA4Qh4[(2PIQ)rBRe6hkXAlUPYqj3-`aSFeh&r
+
+MMr9E"Bpqm&!f4,dd%8IC5Bmr$)le%2f)qr"R`!U%kk-HJiplKZVQh9*Vf(MG,SR
+
+HCrch3ckhGBBUaUlqrD+m`U1BFVHRc-D5[LfjKjHAGD2(dh"2hlVFMDZAGcqX@QV
+
+cPV9pXQ2C1DXlPVhj`aeCHX6XjjUcF!hHjMV!m69f[lhJ[4%HHJINhi0qLq!6fDB
+
+MMPfVI[+S5F*MEm3M'q,k%ae3lQfLBB)HAfdFVm$MbIYKc20NmG6+26dIrJ'ed)K
+
+TC4p48NAX$)q&rHLVbLfaqa(hCXDdfQR8q+6A89Fc0-[Rh!LIFkK&qbhL6d8d2$*
+
++Y1Bbijj@I4c4&SlkPIaEa8A"Ea2m&IjFC&r3@A@Kk9[*c22[,16a,(PmblPPR%q
+
+DKr3jr&!*e`jjZ&l6,LcS(5#208PIj&1MVFrf4FUc0DmFVRQTelcBG&1"6jiG6R)
+
+0rEHT$jLc`aX8McSl[0&hJSZm9`Up9bkQ9eEmBehr4ZZ)ZXS-4&f9"bKe[F!mR%Y
+
+GilDkCRXiU5phTaV"aA#ZRT5KPR&Db`V9GUerFEI4rKH2Hkb0mP4L2C9YqRA)RIX
+
+EmLrlA3Ap!HdTaIA8b`aQ+A*A$aDk#iNHNG-rd&m5A3RfMmafp6N06eA@faTVTca
+
+Da1GmYVf1(AU4c!+C!kY#QHa(ELp4*hd,lq+'CJ2bAmmZ4+me-N2*D`RAhbBDKH#
+
+C#*kKA$cP`-1MZZarQ8PH-l6@FH%dahDB8p&cZ3JqSAYMHK*IY-U3!"qj9%(Lar5
+
+"q6BSrQi1cl1kiAkYpRkYp(iYrcrpf[D%ei,[%+IY8B[E*Pl2b6P[T3H)LbiA,T4
+
+S`cKc$c`dRA[`i2!0aFSarp4ML08RqK21Ia$cT[lH1"ZB99PJX,+hLUG4l+h3#XJ
+
+$1bf*aKPICPiBhAdUAZ$92l0`A%ULNdc(8ZG)#rAad4HPhU1L&I,bA2kkkVTK[JL
+
+R6ZI+L),rji0ck9"mU3[mC`K'DZ)VraAaRASU0e1p'NJpce1Z6$iq4e9[qBA"DY9
+
+,lpR"BrkG(M%r-*aaj#+TjjGc0ArPeZ8TlXPhe&`!pN2Z1Q-Brm2L25fG@Xe8(Ib
+
+fIUfAmUQm'YIi[K)2`XChbNcM%JjhrjI#6e9ID2*1qp2d6,QpQ9h`#F9Bd!F`1H`
+
+cRS2'L[T4PEGrRIK4c6)G!ID4BM6PlNFYHHT32`P[lec6+k$RMULA0q%'Bap`[#+
+
+a,cKAM9H1lEcYp,rP['dE,(K01k+Mi1UC1hirS,F"ECP1cjYYrh(BVrC`hC2T$86
+
+VPUPm3pF[Hmc,amE%,iMaiCkTq!fe!88Mdp%EH+kJ%qE'6,@h,mAFeCMq9am9IXf
+
+l2#&YCQEN69Y`HF1#qR5kGYGYAa11Y+XC*[YYc2-(Z"`(e2F$0#9HmFHhL9b@5#l
+
+XApcGVAISRA$AcSSapD&dA[h1Zc*Gi&D4D$GD)(Pa2*c[PI2VrKbA5*lVLAHEeHb
+
+dfi6cEI"HAqhZVjNh"ZAk2D[if2lEPNSXk&YH*"J1pX@)FqA,H(2am"YkK[*l,l4
+
+)(Z#aLLBKjhJ91bIbZ8KVeMl'0&mdei@5Rp(Hj&jEqQaZj2,Dh(*rQGYI2'5j$Bk
+
+jaF,PC4c%"LF*h"QFZ6q'`Nc6fkP+pFCH*B8(mSVQ"rSR)pqpUKbI%G6)fB,(a%V
+
+ik6PiMeJ(2l-3ca&Pp"HieLrTVQDiL+AZGa"Fd+@pITI'ZcAQLh,Cm9)Im1H",lI
+
+[%Xd9h2RmcJIHN!!)"NkISrkDe(c6-91q#qVl(ThE`LmhrQ-LJ[%Dre3KN!"Hf32
+
+hrl(fK@$AdhS(%dqQl+-'hRp,hj0[46d`FUbi&jKhjZllFNGG&Gk[%CiAZ%Ji$iM
+
+cdjbA+[k[pI3FA+bRh,'HTe22DU[R"2IMpQlcIG1iHPE-i36'U2Jdq+rJr%%6PER
+
+P+eFEqEj*kp+iHPiF$lSFI[A`9a9+H6p,CkIkdXP4V(2r(eqQ0@TeEYEq2hk2D4X
+
+-0RdGl2Ci-c@TYm66@L3B,`UlNp9*#BArS'rSN`+a4X@a8*-9fYH0UpGjVh[A#+F
+
+0Eh&QArV@X+2,2E!)DV8GdC1`rV-L0e,r"m4ccp)eZL1"jibl9AT(Ai5HhpFpqC4
+
+R*p9hAACm%5F[dlM'Ukl9cA&m"U&(J*0X0'pPd(DJVL[R-Id1'YmbVfP@1[V'JT9
+
+A&29j1l&bdDeLIY6Z-PTEah4&AGieBN(cCdPDjSV9mR(hb*-kAfjXqK&AV[CrLhd
+
+kX@8HRiMGiF1RF99DI8&#+bm82P,3)qRUKe,k5rcf0,'hdimbCR@@q,&3Im[JD9D
+
+"6k"IS#r9AhS(l`1m&ii'hJEm,6hHr%,,,MBIlY2Db'`)K3qErZ34(dV8[+5@JRU
+
+[N!#qAGH*2aTkPYDl@$mFQa%'0i*f8L8l93[l&(2(A[Ujb6TrM8D3!29$S6cq222
+
+4+hFrXCPA(mCaClhkPR&RY,lHBEJ,03mdRZ!h*Tjb&)d'!Q*Tr*AQ64,hkXP[TAQ
+
+eaVhMC30qp996MV&N(hQhFEd9"dU[hI@&Uh52%Kr%brVl6$mQPhHk9jKp"I1l@0k
+
+ZZBEq06XKlP+5R6$U$H`96AATR8IkqP9A(I982HDhQbG"e-MFUeGre02FbmlBSEP
+
+k`NHTj,KdeR#1UJ8@c9%eMU-j+LIS9)k(GEqJ`kfFfL0l!RG"kHGFlIp6IUGLqVk
+
+S)E`*,le)GAjP[eZRZ)CSQqhIP02GN!#ie2j0(ihIVDN2-pR0ql-c2bYjiNip31l
+
+Ip%l(@djkpcq@pfHI5[*162+q30mKApQ&J#&L&aTYqYFHl@R0rE2II5PhZcFLcXp
+
+p*dmL0kr(l0K2"!03hbG"mC!!8Yj8-5@hF&8CRKMS8dma,@M+b&ia24V`Q!Q*Vec
+
+'CJk-P8#XC0Y*2@@rdYP[H8*mQREK%"QZ6fDe0c!c2p[SfN0'Ieaj9*LAPF,eaj`
+
+XqarDrLd$,qCXr-G)cY+2dCcE&)GhFiB'hCr%2Z*rTHp[GE$K)ba(pk[1'P5YU`X
+
+,0i'ciA`0jhc1XcNALZqC0ER`A[A+ZhqMiR9jQdGY"6ralAZ(I8*dKNTfI9ja#06
+
+)kVS8rj2r$UYA*EYTChdUT3k)B63Y9A24H)A)95fcDDXR@ZjrFTMNM[VPLIF@lM'
+
+ibqGZTYm9FPIM'Q(9q'fJ"VcST9692r9BV#eLBq-p[8!IH5rji$fej)qmPaaPjcf
+
+&)9$VFrrRG3piIAFh(VHr'e4l"IRQQ0lQ3kCpE$bQ@jb%'(&if6%EK@Y1IJ`irJR
+
+LlGhk!i[KkBUcV[f*ek(XYrk5eeV-2e,FcIL9)CpaG+DVDQ2X8`EFQ#!q*2DSYP+
+
+2MJeb@HkjI&*b-E`(iUrMK#08%YeT-a"[i$93r85Kra'$q'r)BeMr`Y"1IE2T-'Z
+
+-FQ+mef2ShSNhL+%k1"UMJKKM2BCU-H-0I2JjqXH)88Q-5cf'p@m-$'Z!FJK-M#T
+
+L&(X-U3&L3+0iJ'+'*NBe-FCi$+N"j`eLk-k[-@B5Bl6&f"KlL3G2CB$Y[%0$dkr
+
+aGH`E1Sqa2j),%(52fkFjrj`F11!3iY-,R-K0QM[R#Hl$h"[Y-GP2QVQhhT5SCl5
+
+)Hp@QIG9$Jf)kf$f*831c&Lr%XR0qTV1)FAl'pJIFS9DTdl+R6Zc04300pGR3@dG
+
+ZL,ZP,0c5Id`d-*J+irURKHX'3rRai&qjrIJ[14!UaJfQ3fp0@&$3A19H30k-b@R
+
+!Y(ANG'q5dhhN&!Lh2TY66Mmme!2TmT2)ahVU*bD)fI5C(bGekZiTRYP6DDV,$Xp
+
+)1+GaMP1Z*AKJh!h%ka*j4IXrTjTfZ%[NlZ(Lr[fC2p8FkF9arqF-pjCq@D0lk((
+
+2)e'rbH[BmEMRVpZl3d(RA(TYc3'qhr01m@[9qNTc,0HA*4jbZCLcRr0S2(i8XqX
+
+9LFF3l)5L*BPc%Hp'mqjLIcIDhedXmC!!aaQCqU2aDH+p6RF4c21U(Z1,F+p%M%,
+
+Tdc8h%,Ija'hU2FlcaiS[L1DSm@BSfN#1IY1IfDb81[lKHEiMKc[21+G$I-k`MTq
+
+"!lrQNI!@I"pHM%j*QZVaV!E[*iF+Y8A0KFpL['l,qj&P[2pZ1,ND23eSKQJXe!1
+
+aG#k*lXhR68p!F[qdpUAX5%I`*)1lb0c6AYaS-qr6PSrdhUGecq%GZ!ZM4@q3!(9
+
+Hajha0**#rN0eVrSbm`HBPq!`QXI%Im*p-![+P5YbAeqel[cD0m+I)!m%2)MqR!G
+
+b6Z&mK[)LUX,E9'mAr!M1AA!H$%GLV2,M&(rmUANk%1e@cp[JHCaKGIP$irqX5Kh
+
+*%V[E[1QGCAib0AIK3j6X@QpcVFZAR'M+#fkADI[G,h(EqkMa)p4iQYCir6"ZN!#
+
+TQMbFDGb$QX,"c1eimGT5m%KdLhXSilYNhQ&[ehHQaaiXp-N#lC0icZb6!'FIXjV
+
+hRAfb32UN@2f"D*mmBcXIqJ3qAA*9`cm5$P"GjrfIYAer&IJ4Hd9i01S[dZ5[r+6
+
+p0heHHm9Sb(EdL[6A1FV[2)l4QMe-pLpJkr!c`MlTaPFbTHp1pSPbE6VlC0TUmBZ
+
+)@MfJr#rTPIQ#'f)2Q1qp!N`H[5*iI%H[c*GH'D-c9AYPVqTU(1`9mKlhhhckRPi
+
+4hD8ccHqBc*8(G)mTfA@MiUF[cj@KbLFi`N0SJ"2aQ4ASPm"RrN&rq3i'VAZXc(1
+
+CiIHT0aQY`Ah+[e--Br8ALR2q2ZeIl$[j8TFeD1+'HelCNZPK,m,HG%V[iA$1PbB
+
+j+rkV1FZm-$NVIm(Xdq&kmX8HKPe0228FbENlEp&r8)aR)eJ6H#+HmCPP6q)I"Aa
+
+Yq2-4,3[alI1(bP[LIKcc*6dU&pd2IM&GI4Hp@Q1$q4R2!RpHm"i6dp)f'Yc8T4j
+
+Lf1ikmmF4pF!"EK*Qbr4`4fhd*dAYGIT9E,XPpQ03AH!9#GpdMAQAANP1FYqZZU,
+
+B(I1Um8'JHbIjI2Ip3[UTF-GTFaImeEQcTfdqjC3&AcrP&$$*LkPl2Vf0rVX[aXd
+
+@lUYe(a(kPG'GF(PK(faF"HH92LkhQ-C#e*G#KF`Uihe&Z5Cbpi6LiVUIh+FiUpl
+
+GUr-riMdMmhcrMDq`r6a4pb("MDS%dp"h*hJ$-9`8q`PjpXRNU2d&(1#%"`,"[9"
+
+Al"KqUqeIQ@CTY,D&l#h,h9q%Cm00kTRdBX8*T-DHK0rcZ(P58QkSUGqpChVp6R,
+
+$,+BYGA`B2XUpD0QVA`PJphm6kh"Aa"VDQYZURlk!!9XZ"rBLBJA`4V04CT6Cbm6
+
+[+Z,IUI&P0eKPr!c4ai930A)AVbkH2c8p!I3$i`[r51EA+YehXmHQk"&iNN0I@qp
+
+bm1h5KiA["KIcT$rLcBPQ2,`2`2IarZZ9jd*Z,@UX2*GAHPFj+bYehQ-I8&f&DDX
+
+UE-melk*j[)c9're8B"4E"CF3lMed!ZV[r@["V*DEIlHpdiA[i[SU5`5(hjhT((J
+
+e2,Vd0Vb(K@mD8(eeaBp@INlblS`(V%hkGqA0-@i1IiJqF,AmkT["!q"j)I`A[lF
+
+YmeG[hTEjGq-U@QiQTaP9B%XVP9r%1Y"(3[LSR@LCYEIXaaHrG%0dIqapaI%+a9Q
+
+N(PK%8i3k1YB(-@UpR"b&"j)[r$IU3HcrP1*$f*Fq9EYVVH+IZ,Z(1m%r'G0JN!"
+
+"ab$c()-XT-C&j#0pKjL&K9efHV5GZl(8ZbKclE'9R%Gh(A"XjE+ElYeQ2A12lJh
+
+3'k,AaDJQMhPArpC[5Mjjb`C'9bjlG03NfG142hVmVJ)r+T`CI9LQG)$qk25fCRU
+
+`(cfl)l0XS1*YTk*Vf-"F-&U5i&r,,VYJi2CpZ8NId,Z,D*@m"Cp@j*A&FQf)PRZ
+
+GK"rFpEE3DkXiS-Daq($GlI4UVaFjKfGMr%8$1q2FE+RGp@R&KD&[CMAiPm-hfLS
+
+F&Z3Q1+4L$[FS2makV!k&eaT[@@E3R6UI(%m2UNr9`Tbi$,eTH!d!CS`jZ)DCa&e
+
+4qN3pUFLF"3CE+,aZCiC)[RIV(Z2L#Z)A(VN+rS[C)6`#m3lHj5-1Q%j+$XpUr0l
+
+@K%E2DDD2XDBTc(51U[Gh81cR6rC9dj1Ti*V,KF02EA2d)IhA4kLemZGPPeQKp9F
+
+Z`Cf+UbUAi%lM%b)'m)q8,*ULb+ZB-qGSL&Pj'GUNcfb5Q5PhRK4hPh%AiYe2Z@1
+
+-BZlDZA2dB8C1$a@#XFm[RpQKQ[$%IVr%hSSBU)[PP4BUEp6JefD'&rS-&li!j[8
+
+c`KA!AC(Id9HjRrf8AT)+b8AQ#r)U0!bqpDeDFm82iFRDKrECEII&lj!!FdKc9Xr
+
+JT4+M%*qN96eVrShY`Df+0`K[D2rD)f)X&E(+BNr996d$%L[)A*Eq%[l3rV8&RJ4
+
+d8+aRNDUAr"YLef22ER$-QAYj%2c0dr9)'Jld8[&6c"e)F%,KP)"I6$qfDfi199h
+
+hRVLYkkk"9kXH20j!`bpAH5bbepqPFr@8EeR9K90XJpT`d$Yi2ecHKB*Ye'qTUZ"
+
+Hp)@Tc36-5c!2mB3P'NafPe(2@+,M6qq0`)'%ddCFKeblD"fe6hXjY@EID#)H0#V
+
+S6B1pXBkGfQLBU8G@aF)rTALTmGU@+aUcpIQIkFjMkTKa`CEbDCRVfHqDm8T($fc
+
+`'$QKjqNh&Fk*NaSb[ZR$M!Zq4UcT*eA5Me@CXLVa[,46mV6BU1K30HfXm(SS6k&
+
+pGibY(r-Sf+&V),MD`TLl,[-2[F-HNcRSejh@ceRmDTQkR+kc''Ih$E!VHC-FcdA
+
+lPRXajV[1-lb4hPM*2[-3GENPAF%C1R4[hGE,I$0pNlEZdk%N8hr-0Z)%48-5h)k
+
+1r*&R[1eCGbSHF%T2`I%S*6[B-X@r&CGHC[Lhh0eTHbPi*HJ0c242a[GmUhZ,hZR
+
+H`*P&M&jLh@PlV,kr)HEI)$qlhalMNVUpk1S`9X9HJF46DHGX6,DH`&aF5Gp-2fl
+
+E92&kU$&6R50hPTm(q2R0FNBZ'9-hUijffP6f)*a6ZRiBYZVFSEF"kPVXrrJ2T9j
+
+cY`KH2NKUL$FVM+I3[NZpXCcbJqPi10HpBThY4dX0rkGQeIl9L[m$edLbIPPKI3D
+
+ZV1KA+Dr,H8Hm"PUKp!pA'HmSf$'#54cK@9MIbG3TAV8X[&,pTd)[YV`((5(XLp`
+
+$i!YH[$+EZ#0mlbp&Jk#"r,,FFe+5cMrTha9(@HeIM,(i$2SaK*p1qST`ipbKI('
+
+G"8Zdripc8@0BQfK0,CfQ(ZNPMb@DVqk!5l3qH6[J,5Yh'6`5I#A(1j32CMb#ce-
+
+F@',U1mH6KXk3!'h+6hRJ!bhS`HI'1jV'Dp(jK&j8Vc2l2fjlZ)XeZlK@XHr%SPH
+
+0q5MlMr')*$S*L#miXqMAB#l"!m5!kRcd8iYhKrBThU3bZk!P$4cXrZM[U@Q+[aI
+
+F$@HC$p$3&UiicXTGPrjS8IaHI1LId15`hLMCArGTIh%1)IjLidG*l4Gr3qr3'm$
+
+IEJ3rZ0lIfIPNHZ,fiV`re"-16U#FJZA@Pp)6,kV1!Z),Vq9J6dLmfa8210S6qPl
+
+f9Cb0lY-qh6pa9QdkVDR9*cMU$cb+0FXmTPFrqMPREK)Ah"*2&Xhc+"kr42&+jH3
+
+XdEQ0I#fhlD4@"$NDf#RCEaZB$l*R@He@h#YH5Na%H)+IY2l6[YBq-2TI`*G&'`2
+
+lNr)@`0maplGB2CkhqU[14#VD9$p9E"AlY"YEpKE4r0&lQ6q)V6amVBRJP1E1iP&
+
+HmIFUZ%9A2k'ZZcZ25fq-2ISLef6mC%DiVjYm8*6Y,-FhV2(T5rq91(q!m`E1`p5
+
+MAA+B`RN0jdXiVqSmK&LRDDcPR"PV%@I'DZE-@'(1M&9(c,H"EI!-M@4S3LDMdkc
+
+R5Cc,19Ijq51FLcRAqhNPjec1RrAcjcPRFYlNjmFjTh,HkHFAa91(pI&KZ#YT[f1
+
+#2q(J0%['J01)hdGkpP$Zc(V6')akrFd#Vi8hi2[fqKp[qlKbpl61hZAQ`q5[A22
+
+Vpa9RGca#lepY["6U[1hrL-i4dFFK2d9RLma*eFrkZ1jYI!rq02H[G18'1M[AXMI
+
+((!CJ`kHMGlf,2*,Xl9,&lh(IcqmGrT!!R@I'JaCe03ld-#ZAJjA#`RP+jU$5ch,
+
+[jpir-ad0'-Dk92IjD-aPiD@Bm$ZLQTl)PlTSU*hVG`2HRBl@FkRe3kbHdLHrVrK
+
+lCjmXe6Q2I9%p8%P[,6,q)r)pMPPCV")l$$4lmN36aZc0+p"EPYdFZEPlbe,E%id
+
+qVZVE,98F9A'#Z2Y%Di-m,G'&9dpYZcJ(11m`MV`[`aNH#q2J!-5Y*CH3!'K%k1k
+
+da26Fa+qKj'0LdCHKj,5*-c8iYR'Q9JHphc+hS1HD68iKpMIiIijAAV,*)jFm4bZ
+
+ZS"L!m+e0cBbf[*GCS1p-rX`caI)LMpqh%`mq4JZ'XmhhU-GP2V,[',mZm2MRfq)
+
+kHq+Ycm4ERp4CjKVH#+F-ja9J01`$BK9',m@AY6S'P&1KGI3eS9@3!&DS*GjE2!2
+
+abMbHibN2mBKM4'1eri0UNL*@CZfZ$pVqMEbYpb,&f'rlYZFM-DhQRHEMI9akAh2
+
+jZI)%-H1hacU-Uq!4e2B)C`bH*IEh1[r$kaL2peD23faCY",%Ya*U!mbfF(cCdSR
+
+X4cR,Fq(Yq)K)Gqr(M%-G(fSeU`GNR2&qZh*VC(lIT[ZZm*+4Mkd&mPIFSrfRlLX
+
+32M2!ZB%HYZZ(`$['0I3Y2k(8FBFbGZBb1!Pli558FRH&hee"Mi)lm!I+Vm+XJdB
+
+)peVa88&IN!$%1C3h)0M,BYXc-+HT1k*lc+eahjAAl[UBiN5))rX%DVM)Fj!!1@K
+
+b%"iJkLQi!XkbVb"@PG8c6[%Faiq+B#3r06idhVYqSh+X[fr9HD%ib-F9Y`Q&$aJ
+
+(8IF'jE2TIMVc[fQdB@m3$+4YdiDke2Y0Vm'l+&-2,UCcP(1EHKLFTkdq6pF`AdT
+
+GPj5F6RLM)cBUfJlJ2Ll@q5JlMYALhVr5H0q+*4Qp"eqjB(A!+2*lFbRm6AQ&'i1
+
+Cd'am,Eb*m!Ea"1G4M%rcd&VISVJJCX-QRqABVrj!qDYiXpBi@Yaa&KGi6Y#9"jH
+
+YqB3BLcEeK+p-f8FUE"qKIdcC@eEl$&[V-icl#r9"$R"1&YeJd4b@R[q%kB6ZrjM
+
+Z8cLEZBiCTHp&*`(e-Ec$6m5k8!GFXi1B$6JG0ddXcXCEP@q1'0Z*+cT`*KHCAhK
+
+(lcUF#GC6%cJCZe5r4R[Z%li2#@DaeYr)AKRGI4ET2)[Z2X62ZhFI6i[cCU&Cmi2
+
+BchHaF)IJ'a-Fh#AL5aFlb5HX6p(hiDr$rH"EHQ'dp3@@K[2&l'(#bbf*IP,Bae"
+
+Id@24ZH9p'E-M(k"N9lI@cH*SU)IJLQD1eYQXD$4p$1Q44Z2MbSl@V21k!lXNGXl
+
+C*r[GEFV,X(je%1G!h(r)%rcP@bfqjUJmhF0F"RMXcK1q@KBk"-`MA,VJDGmlI8r
+
+ihK11ml3qQ3ZU$pE&LqdM!ZH+k4SSKf@0kVc)("Kk"'Hl$aEj2PJ-cTcRI[IV#Rl
+
+ek5GYIdjaD--*2ielQGZLHp-825%F1Z`3,rSH1GEIA1C[Z%pLKrqimJ0-c1FmCPX
+
+5NfmBNfpX60P[U3G6XLYVqN(#k4jkT[UlHePE#rk3!$DBYS(KP+&feQr%)3kckc@
+
+#IU,!4k4HkbEhm'[a61JY*EcCqZH,MR@"-`KG&24,4F%R-2a5FQk&`L&,i5h5#iZ
+
+R!@r$iLYU8iPbqUb[+fMXb'`h[3D[31h#34Ar-5CRHU@U)(BQCfK5h'imQYrip,9
+
+F"R!Xb3rD)2f20dA#T3Q&9leCI2f%`YKAd(r6C!G%,8rRlKUr5lCH1rZKrCTZrjc
+
+Vk9qcA)IF`)`jAI3XF&mPGFDpD"GDr6Q6mhArP$0fm[,KA0%MTlr,FhdA-cUGI6%
+
+ClC5rmEc1UYh9UE`!iLJ(090%Dqq!DIfmVQ1h-FNEfUhp(V+m"pp*[PqhI)IF,$[
+
+2mAPMCM0`5IE-qVdpdfq9jh-Gf+KAI)k!kj%%(eUd)DQh45a90(Sdej(+CApM*Kc
+
+Z8AMJkRH-jC[q&(e`rV6XMb,dUm!46+YQrTa[EajkpNhphMH'JfEiBaBM*5j#,UC
+
+Sf4S0[r-E4*X-Cq-C"rG&m6epqH)H)QFiDhd([qZ&QG$&K30H)rfNIC4mHSbaU+j
+
+XqP(`FfC+c8fG()pVe%kh'R,d+LBqaMTeJkJr#klXVFT(i8`hFcq,0m)(41fbLB&
+
+pj9EPmd$l@r`6'$i92If$ahDVmCq%hhY*&Q`JNaN)[R0%q82J8BV@)[!Ep%!``!9
+
+Q6q4+E-Grhri2+*p&p-IaMV%+Xcm[pL,ZGBG)qDle6rS41KpHpcXVHV$BApiNXkP
+
+Nep@+(`N2hrTDh*mar51p8pl",l@MJ6H'`X&ICRq8rMQeLd9hLLA(2cXMDmMP1TY
+
+CJdlRVYmHhl!V`hA+39QTA[B`hqj6cJCkj9ck#,fb[pJVZ0FH'I4IrQQ'(TkIf$X
+
+5IIi2C2iRjQV#Ta66aS`iefDC2jPPJclk`LacpAq4iiVB9eajrDX%IaAr[DSIpB,
+
+TAh*IKlkbqeldP2(Hm8++pfAqRPiX49mCle9EEPTI1[(p"B`b%6eNc+2QX%CVjAf
+
+eDF)m4&j'8`8mBG&'9!aX54UG0[Ebc*HeiE"6QlQmM[jEjIPL*J,6alhaH,1UGYH
+
+9ZTmCE8e`[CTdlcFFN53d1q$VE0NXjPX1-bq([HeVK[Nf+GjRiq%XmaKRiGmSIYE
+
+Nq'16iPc3hh0mY%*M*%F`GG3PJETX,IL3!,JR$"V1U(NJlj!!D5-f+Ek&plZS!l#
+
++Qh8H&fCRRE1Jjracl%f6mJa-,SA%fQ(mPLE&M5`ZKhb!N68C(rNHpjqjrdVPZjM
+
+B4EcEDYKkNrD('a[BEj2TBYhMAM6hAk(i+IT([*9fe9&`1lH1bRGak[JKaFZlkLJ
+
+iE,51AVbRXBk01XFlkpKS[1Kl8Y1m&UVRlp64+pi(8-G'lCI11MBDRRD2qi,HIiA
+
+bRI"1p%-k25IFT(PK2e&G1G3@'[Qj,h!CRER+'G5f)I'&8FIG%2Fa4kfX3D*4%+i
+
+IKdH6pXMRja#iMX-bTHU(,-hQ6D2LimER!Rf+RMq[IX*Zi8T`VXep-(5*Abr4&pL
+
+%TUMXRX-q)GkUJ8%S(YV"-CU[Fm[8*0d`f!E&`mhqb(QB,G`MFimpXNjaDR0I8E[
+
+V+Z8K)NkTab([S'J[rfLqmM&FhN+QlqIF6i8VSlR2erd9EeD3!*Ib)D-j5*lBKBM
+
+GP3lc(jJAphcURj6"A5L$Zh!&rB'k,l#kLrl[JKLIcalD)f4RpEj"1CU'Ni,H@+$
+
+lTXl`"BCA$ddpMrmj@SR8rX0HEADe9U[TA*f,ZKHIp5lfEX'ec5j5[-qMJpAC("R
+
+JhVj%R[6Jm#!D"AHPjPXYG&mhIL9cIKY2F&6'ipXei2jVd#Y3[XG0b[GB*RkUjAk
+
+ZpZQD6Y%4Ve0F(AI!eHYdEZ,ZG2*4rUjJT4r5I33p)jSRe$jJhaN0",rd+FlaJZI
+
+L,2K+"elJi$P2rarFam9Vl%`djh1T93Sj"cRhjjcNZUQM93Y&q!(eKR[J6[a00%G
+
+E4)Z&1VESrch%'D[pFUrUXSkerVM"jJ"h#TR((iTeVk"G#Fl[5[6M-FIA0HSm)rr
+
+FdiX2GZ#0b!ND-$MM,Xh[dNa[DB(jU8!mh#P[%qq!ac6QBef,G0He5!GM)'C)[4P
+
+`489[*TeHAa8QX%ZYX2ePJI,$N!"RFH`T*431Ik[k0F!E[J0q9c28$hJ6K-rY&`d
+
+,e#E)'mC*iJhd+CdhKrZK9Z[&q"Dre6NAred`S!rl6,&pKPPiJqUp''qGeIqSTDP
+
+i"ch[d&1KH1a%$-jZp(e'V$mTZa%i4r4p&Yh[23[BhE1%)r[1YHBV&Ac3VEbE)Ri
+
+E,'i1(%RUCl3kX(1%GBr%IArf$HAe5!hR$q&H,hYXF,MV8M[UT*hVZ@EDV[EZZq*
+
+G$A[C`r)q&2l)X)ihI!eBI8TiIaI2)I$Q!(d(da[UjB`B*h!ECbFNabN$rhrX%q1
+
+4m6mTrLrp)AhMp-H@rIk21r9Ji4%"Q!Vh(0&FJeGelTVL%ikj9j-lp#[%2m6+N!#
+
+'8bLlCARpHA(YE4h8bcRVi2Tr&Fmaf+P0,qqK[KR#Q6Ih1j*mbE(+m2jDCh9hFPa
+
+9%fiaAdRBHq#T*SDcT,%Ed6FTr,am0-C28hQc`YqSVUKJQbiHMAYpiqiPcKYh,m&
+
+pP'[aKeS$[9ZY',rSQ4bUH9j59rD`VDY`13lecQI-mm5K2,Em4U2@dI(!M!)R@Ah
+
+mb)aG1T!!l+&QMRX(P*Hk31V5lef#IjVhh,Y4$krd*IC[,qm"+i-AJ&f)2Z,,`,C
+
+X$mYF!AG5r&2ScTDL1aYQH#Vi4d@XJBKB1F,9`0bSB)Fm#kdGF!rJDaCDqQBI1Gh
+
+dk-32$2fCBUB+aQMj-ZDFq#(H9r%9,h8GI5beH-imrL!(dfHbQfSZm#9kE#FYTbj
+
+Pj2mQFNJ9$fr-6IC2R![J@3THMTU+KK0k!6MMRr)'r[VfRbJp*$i!M4pHkaNBI@,
+
+p+)UHa3VZ(8qpqpq[qkAC1d5(,*3ULAhEq-9l"[0'$Z4*aR*3Er@DJqKDZ$PiDe)
+
+TmlAJjU!BFI*LpbMr#bdBSfm(heHjTT2CILYehLbHYh8HH9*$RYR)Qk5f($a#d3-
+
+8pH9fk$Yb5M#l`NI[N!!Hcd)6YMElGA+!Ep%)IL$T"fkZD1&1h`NQ1mpe#0`mS%9
+
+Pme8[S*kZ0G44Y36Q''qa1bIeSJY-mQEGZa8MQH1kR&+E`KIdh`rKmCYPpbAR1,b
+
+qbM3NUm)Vf(q(LVF,KeYjEjJhlqEbDFbYUNcMk)fmrk6Zhq3PpHjpGYm#RdMl+k&
+
+1pMai"dQH9ir1&V`"3HqK#Rc$Xq&6iC9G@m"HS!2p(ZQAG2aH`LmL1@c)-D-VVqG
+
+Kk'jKVke4RB06H`*bmf6@MTS8lq(d*8Kp6EYV'kmH'D)4C[IXHZ+C2@6(mXiSN[I
+
+5ipJa`dF05)qRC+jrc(FBlir9'fXNGCp`)cKlk4N3Q)V`4k%I45hrKH[!Mic(D(S
+
+#SQFJBKNh15q@[V3bL*(D8Tp5ReY'jp@,*R)K1GEq1RlfLr("Ur"L2pAaDLlkS,E
+
+fM'Af5HY4S0bial)MdD2!21FNmpc21GVN+Q-hP4`aSfDEhPCArb$'"[J1i*)%,S0
+
+rGEUpDAp!lJ4R`4NDEeYeKLb`A3,kMP0jJcj01T2c1Q)*adhI3aIc(QT2[CR'k$T
+
+l+hR3%dfcjm'FjPQ1%[GdL5[q!D""'0lbKQfCVjqi,I1"p+ZP[j%2GM2Nda$0f[3
+
+CMFfjH3`AXAl$iIP!p$"eTUfHqRfGCkGRmMmlE-0Ab)IH2q&YT[lHF4AaR)1[l2k
+
+US3G-%IkmUMEJ`8IQ(I5qf#qipld0R5*UES@2fL%mY4cT*mkUm&F,-aRlUHqMUX-
+
+V(JML$R0[lTN5+laXp'(LimVSmD5dh8XqpcpF58kjSYq,IBFiVZ*da0p`,hlipVF
+
+C(UJiPr+BM3GrlRlKSp8I'I#&i*Hl6[jQCGGlYeE3*mP5FrM9c&@F&(HL$hA%0lJ
+
+lLkN"DcP!U0r9cK'S%ZqGe+FV4kF2YDT5IGCQp1LNech(Lhi@HPPhJ!AX!0K,5RB
+
+YFRkqClUrbf#2Q9Cmrd($`C!!ArK1HUL9R9Ykb(Xk1h#9q6cfIP[IhlfM3RCblYZ
+
+RY"1lZ)$3[2Gp91S)R2K'UF%[kfPL$41X&CS8(c40LZYL2[l#[A@mA[IRNAK[K1l
+
+T"iGd6e%(HKdTC)mY3QHhH"@5!F!RMEi"GJ@mKDCd%9l4LR2kpNEP(q-XH$TRT"1
+
+2YDGZdp633JdqVrH+8E!RM[VaL'Pr5Ar$"l2M(hVrjFT6-2kbLC[+RU$FQ4Z8hi1
+
+ciUVNbB2(b[f[rY%"-!I`Q1"2NTU5h)[&*j2Sk6SBdDlRY+*kr4`KRkGdlj`DcTG
+
+G%ZG*ZNYLKL0hp0KeaLYmGBp9l6LlbhVqVHB86RCCl-DBLcl4"m6CXf'YB$fSkCG
+
+r9TNjqM(C#l)bGqiXc(2X4`rUV&82qjHLkG&I0!I0cMY-DS8ia+6(bP[Xq1UE36(
+
+1Npl8AIbf[fJQB[jNZQp8B-DDKph[MpIGq*`@V(5BBU9VfFq$8r(5!Fb`2ll@1%1
+
+cUp%4HZH&8D4p%'D(4am8#!GS[rSa[9KbV,rh5CPY`B)q,ceY!MGarGR4UbZj91I
+
+2DhMpb6(qDREU$2*19VpqURpFKGDrm(RK!DfUUfZlk+'Z&XhC[&qN(K0[ik)V5!d
+
+Cj)pG3(!A@c2*F6Sj+PkAbhfPmS1afm[G4pN&F*BmSqqUr&d923mm@YkPbPepJqa
+
+"m,D"1pb$lq5m(CDm(@CH3G[ZPcU8l,VBp+YkI84hp[('BDhFQ0iejZQe@PpA(aG
+
+[CTKq2Zk%dh&BAa4lKPqe,DRl+6VCf1ASYq036*iCdrq#VZBaEMDp3e@c9rL0Dr)
+
+"`k8AS+9MH1Y'Dhm9YDKK(brf(FRi*[,ma(D*$jK[J2T`GE`R'Hj@GD,(%1d*L9P
+
+Yr&VTKDQQZhF2("IY$G@jXCaPimdk&0kRIVXerJcG,jIY4LZBZmBVh&E(YirUID9
+
+6ep+#VS(@F6KRB#A[0rfp`r1fB@EIQ0b(CAq[%Vj`RHYkj+,aXB+[Cr,l3qK"PhS
+
+jlk!MPU3kBUHK)jCX1Q*VZ&[(RFNl0jHhZ-h%BqcPa(EL)JlZ05lZeR&hc0rE(1e
+
+Ap)rXDfCIL[(e`*fEBrV`l(RJ6,KAr61Md5XqlVUdd+(P"'eki,@4d#ABp!VZhX-
+
+ZJ(M3('frRac8Pm3VATbL'[acG-kK4LrliV&l$2N#ZXI!Tmb,hhAm)EC[C-aV!-I
+
+((IH-m[VA+QG"1HMHGFUC%[lQ(0AAF$L(qSjiVF`9IBIG,-UGU41p"YQ2&K3a6m%
+
+XJ(G'GreVc@I,2iEAXG1$kcIEq1,U6jGDT+)9KCfrJ[I`Np2f6X&Yk4N"lk'PX&L
+
+p31,GGb9IiK$+CdTiUmjjRDf25DlJhAM`kh8a@&RK(hdQ,-aNf&&`4lhhqQ[!T("
+
+R-,6#,"V2-Pq(f(`Yf99[r$hXJAQ#Icd%lqU"X&Ah@TQ[X`eI`&k)@-)lFRBcqJ`
+
+`q)9UdFe5(5("0ej)$FEi"V8&cAZV8ilqQ+VpSGSA8Dk@`D$$cqp4MZBfH[mqirY
+
+J*kcfrF(UJ,mC(A"IG@F*q9BT[`YlARC"Ff4q#4b%$kKH&pkpJhIRLbFie!Hlp,@
+
+kCa6XL"i9h))H-m3cSF(iGCHBTI-LkN'Mr3'T!IB"i@HC2EADF**CjUY+hqZq,cR
+
+-Y$cCYr4-cRMdp)!DS%IpbK9F!%H,h)($f$qiIEYIp++keMRj`)JQaMJ0G0aH2*&
+
+mDX$r"i%GM&DY2AqBlHIhqMRNjh&qj[l#Z3q25pi61Hm%c`@[hi02a00Hc4RkakI
+
+"j`@R"TjY`5-!lppc"lK(1KJfZ6[%SDPp3BdXmNSiPmN$*$Ffj"TD`,8&9cqpT3'
+
+!("`Ac!FI[P'02cYi4UHqJ,ajS6(ffijk$1HZ60i4&kEQU18U5bj4r&aUJ4R"A!d
+
+(fIqRlLPDG4,N66cHjQ3R3Up@aRV%YF`%i4IMMH9&J[[r`VF,[Z&2HKk8[CQm--b
+
+l+Y0lN!#C1NRRU0AVMqT*[9pj(jCVTEb3!#V9FGEhdf1FP,&cQ1R[jihe*9(dAhf
+
+)UIE!4[)+ZXH['[F,Q@6j94Q[hZalQ%2&F4ca%)@Di+cqKiCS2p'60(ZC(V(*lAG
+
+b`IdSf4He&a-9kh(IIS9[X[@ali6rTjmlp#KaYC*GlpDq"2pc%[1K22EbJ9eIH$D
+
+QKd+m!9HR3[d9F4F"0M,*ikM1@[Xre0AZ1Preb+M[B6@[*BEa-hiF8l2q'Y6M(V4
+
+8`E8'$X%C61qmk(294i"QXH!DJdSZUVkpC$leULR@DiVZQFM"H&-9hMpVTVi&k-P
+
+D-Be8m6YB)0i"`$m8RrlN[b*ZPIMe)%i*(6Zj!qG'Fl[Dp"rDrdYRNNF1HD4QeUE
+
+",Y@6$2)CN!$T"&FhZ[LKF+(kVN+2PXFj#IGLH[4cF"e`F-rC&RZ(ic[X+NPa(G`
+
+ii1mbM[U+-h'`Hj@E(X6"AYX@Db5A[k4K+[ik$1q!RR%GAK0dj5brf2J91S[kTDf
+
+$)diYFl-,"1(X`P[J6hr+[JG1q@5GTp!ek0q@4l-B2F9h1JXRQhkJfDqa3fG38q#
+
+"XRF6mb9ICH``jJ"F3$9'G1DrArG2e#%NmB($!CX86NHDj+`if[Yd$L&'*M())a"
+
+I!m3Fh4LUqr8UccI'!h1jL23[@XjqG$Bl8e$Zd#IcH"IKA1&mS1Pq(Z1DKKrbmrX
+
+i8dq''XXmChZFDY9BMJZc9'-j,SK[5Tk[9UhPZ(#emiiQUIr@Z(#jRkrL$'c$Nf%
+
+('mQjM[0ACFF$YqJUcY8*6c06H8rJ(l+2hAHLLiGhJY1)PkfU),fHRF4)IdC2)9&
+
+pHCLpl4IF!-`"b`N4[URe206qXlr3HF"jme(64mGjQ-bNcMN30bRK(5I$+kZIN5Y
+
+0HcpQbUa"RjG2A!m'p&#B*j`)Sa03!CI'6cc`e,aE*f@LhG0c*8p3dm%cFL@28q2
+
+jLecM&&pSi2V%VqNf[[3K!"kA9cLHi%Mi0[1&PV0AY'A!Er"YiNYq#r8i9r0&,0p
+
+DBQ,hpM([IHLkq9E`KCGq(riq4*m+fX!HBX'h2hc+PpGA6*%H#GHA9'B@@Fq3!+r
+
++1Q*1PBNA"@,1KJGEaVNF$mb9qDq+,T!!9ca`SMmF21lC)KlRA9lJXSSqVAG!lX9
+
+l20mK(mZ[44jVP([4Q&SRI!2FVl"lF[VJD38q$2#Q@I,'1FbCZ41[QlEZq["Hr&#
+
+m5A"*dA$pU(%C1*2Veiq@qCXaa+IVlNr,DqCHE(JVfqK6DS'+[rhZH#A4hjpAl'P
+
+SdXSmGRM&K9kh&())FXk@HL*'*CTEj*%qUebQ`G`eK-Gd4aHHm!mlC6EJr5Tj,rX
+
+%q,mi9iKh$m2P06VE[kFk)jbaAEQRa9`FF+hJ!Hf(2b9'fA-c5H0UR`SH35mlTMH
+
+KlcQM@&r"BG#RdV2XrbUT)leN'&d3lN05@q&I+PCEU6cDpXF[FriKDRD9mGF%BpN
+
+VqRIP,hY39&l#*Y&(-2iHC!G%VDUib`!ReAd0[Jq8dqR`4$,P26J%XSqKRiK$$Z2
+
+HfEe-2DcI-2+BKLTrZAhAphkM1kKHqj52C2aD@,j1"AFCB+c$P&XB%BbZ3[%+R!A
+
+(3Gh(#8CFQ*ehfS+HqI0LAKM`*q9A'5iBF!29"@VIHIG[[2Dj["1R"k*cSNcp0U#
+
+qe)"6IY&UHJ-c0(c!41Z0CRS$Fpc`)G-8`bE[6RE6-X8TS)dej*QD66Cr8Nl0+K8
+
+IaS`BjTj%XSNKmDe@#[)a2KBU6Ap@C``mJ2+YlZZppACe5G1CiHU&3(6TbM3ZFK+
+
+H6P5(a(-8Ej9[Fi4VB(AbTApHkM&[39HDMa[LjB+*AkRk*ZJGUdZA)4jR8#[KAr)
+
+GHP[`AZkSb&Gj)a+l628q$(kY2&rSMe*VHpRlm()K@''TiK!1cUij+bp$p4SY2R&
+
+ClDicG9lK$Rb$bj@h$%i@G+`V0"lH$4*1J'M&(rEJ3(mZ`-F+h4q([qZQilEajQ*
+
+LCBVHLZU$c$I[9lMMV#KFKri%r3@Y6PIhUJFlihpirpQ'ci'$0,H"pmT(+RD[*UA
+
+N@FcEXG4ApDj%JhbhD[-5Ub'HC6J)Q*&A+2p32-QK,MBAqMf42BUlk%2KGIL%SAB
+
+QmSLS0T[f9IXDViI1erdAkR`a-b"0kiLHL1j(lG1(iUP1c'AD2q`Ec"9iS411'fG
+
+S$KLlp,R**k2kSC+D)9kRk9I9Q4PDNYQ(EI80SHREpi01la-2f6kh(Cm-ffHS6iK
+
+0r62#JRldE8YfcGEjfVkM(&h+*3[kkG8$el0(0SH+rP4B-(L+kN)'"p-$[E+A28S
+
+ZhA1Fq@%A%KbFH8"AX%VfS5ei9'b2`P[k`9XPTeY#PH44XZXGUQ['@0aGpFeBeFh
+
+L'a1A[J'VqNZ*#Fj(d3G#qEFLmY!k&%XGX+-Fa,52e`,lU+PV-[N"hr'8FiE(`Af
+
+pH"3m2pS4H[epKYG$p-IJ@A$)G[`-4[!hL*MTrPCi(l'h*fVLm'VS#q'49C23e-N
+
+f[h",CX8D,)Bh"8`TcV`L'HmBa*SYMJ`-iLF&ciA0k*SfU1I#U[l'X+JrKHI#UUT
+
+ar@!2"r,Xf-hi,SDH"[9iN!"EZ"mZaQ%2L&ApaiH@rKR%(PBqMMl)fNiFe%"d(9%
+
+2`a(aU@FEjQ$VdT2,[#5Amb8Aa[ZM4i5EJ$SDr"Xq*P08jj'q9l"VB2rTrh`qe5(
+
+lG&e[SDlUVc*DebTL6id'QU0Xk*1pPA2MR,"mAbe34m(!dFI'Kk0A29Hm8GH@ChV
+
+%Scf"(06[j+XqE%h[Udp3lBN"HhTLqS$iVYScdJIVRZh[-(A1GPd1pN,0Llf`iCR
+
+kHGAAUe[l!51eakl3f8I(q544[icdIXYDEj+GfhUdSkINm-h8q`&Qf32d2Mac5Hm
+
+ImK(*QEDc8(2-Ip2lKfS16UbYZ6-6YHDlpp30FG#cd[q-kALB2&Ec[A[k"I&k-DP
+
+3H2)pGmf)0NRG'pfE)ZCl9AGhlrVZKDZQiqXrTh[Q+[a$,jP%2j4@,j9pGBcTN!!
+
+*Kf5-qjUqcAaU#MDh6$9r5U,V9%2*H'!@ViV56hVhlZ31(T+@9,-V`EHPCflrY&5
+
+jeY`Ej[92iNe'D+hG09hhD0Q[MVcEa$Yi4cm34[f-q*jSA@MYIbfpmRZm'6hULi2
+
+(KPEfadTfRLbiEZ,hNeM(PX-PMpdRm8Bpp`1hNEL-K4SJaaEHbV`P,QRL-3Ia680
+
+XImZrLI2f$24I)(FT9hYFpC8-(4&6QmpTM2G*$LPAmeim'Y2(Zr(m5&drCeqL,K0
+
+hM,Q#Rp$,N@VpZ6-Ali&*c2dDEfD-"VXBBll!6Z4bkDpcQ4(RFTAZMbGc#I`kPq'
+
+&A*4(ddG!MFZ8(k4cCSRf9dRd!F1FC$D0L[h[JTI`l%G[ClEeiTl%%c$RkAY[-j`
+
+pdElRE%A[PmFc9fEaQ"4l1r[jHI@!Z[d8bAQIDD@pb[d52K)m#cE0G)qZhijp"Sl
+
+A29Qdm1j@(lh8Rc8Hf%[9Sl$K'hPUGrqKiPj0m'P0E0&TCQbAYj@b(#c*q(EGS0S
+
+a'PXp*DXHrP(r*c(-`HUfU`rVpS)[[#kr`a@56mRZ$GThUNd8*rZ-q)ipZT2i8qR
+
+B9bQa#Z)A`%-'+"l4[PZjc$&[cVr%4cTVe@EH$`r95[LJU*AX6VqT9Flq@Q&rJ)r
+
+BPma6l"[ekT`e5cI*V*&kl$rCG!iFIl`A+am$I--P1SF`Jj!!YrMh`"[e'kjaeIm
+
+82DPbEjLfUQDlRA2p[P6Z$EqT,2EfIQ4'KF,Irq+ZZZLk)D`*qaip"PA#9Fb"2jq
+
+EAmJHq!MlhhhXJ[#Cfe5bDKal)I'IXQpGMiDHaEL!eB`#ifVIXD0ApLICibj*c9G
+
+X#T,eaT2JJ+(CclPr&!m+T$E%rEGP5JMXGZFVPZ6Z"G`*HRThA5%fL1EYkmV(pH1
+
+"rm#8m*EDA9086q*!LPhYhEb0X#0'h`U1+'rIaGXUhYDRDJEA+UD@1TLPVJqPjJl
+
+fM!Xc"!INZeY#CIreUHQ$DaA2#%ECUPjLcKcm9"acZm5X,F6N1ieC0IJTMeP9e4Z
+
+pGmG*dGZhJqAYCKEqc,c64Ih+&JfQGmSlmAYVI-G#Kr8LjfAN+3C8%R@V,UGLFEi
+
+0bp[MqHGE+cl3M5F2d4G%,iff1*ije'ZHBj[)8r+A@A-iIp%JM1CISV`$q(bA[IP
+
+!HU[%%,b01mq"G,rFkrk,A"DfD6fSICb(GbTk0CJCci4FQ3Rqai4,8JjrL@p,hAF
+
+51%Xlj9eK2hSU"m+1NlCchR+%h'drD6YRkN'a9Y50!Jj[r)Zm@lPme2JlX+iI`H,
+
+(HJFA20Bl1(dRmhXImpbVh[,DXiiCQrP9p)'R*[dbATckT6NFcrr,H!(&&`l&1h$
+
+r,q-&eAI,iALVNplG0YblQqRGL'1q'rcYEfINKU%CUCM)-pV(XEkh'02"R)lJAB(
+
+8jU'CMCb!U6a6m#qY-f1FkUL(`PYM,LpiKhYbYl1$(0hc4TN1QmApYpH&FG[4-Q[
+
+INHj9RkrF8G![p#SSRPeC+q$0ac"Q(h`!aH-1j0(XD8ip"Sk%2F1c4M!bm!PD"V[
+
+`$1bT1[ljRQNZUHSRT`2ATXF0cT)i`G["Tr)%&d"GS*q`9r&)i`d--`bm4Df*Q@1
+
+FEplff"qB8br4lRk[mhpbEGq'E`Qq"pid!%kaCpr1&1iCU2MPhZ3Vl0LFNrmm$hc
+
+M#Vd,RK2lJIZNf5YMH'8e(#&`Jp"Mar,)8Gc4"bm"h)3YldjY&4r'k+d3jdc1#pN
+
+,2dII&!dZ#&rXre5Uhh(45[+QcN2&8"phH'+&jj'HR22LR&PcSlF99lYlTZi!@kD
+
+QYM0RDR8rac`j1QFD$+Xj1QFH@EA!r$!*(VbLIeR*G*ZjhMA-MaEUYNVQTp4f*A0
+
+KD2Vi`CP9*r(0STqL-d)d0RkLZ#Ja#[@ViCfAH1c#M0JR-k+Si2p*p"dZ9A`9AYp
+
+&IeMLFBpfX@MLCTJ4E5-cSEB`%k"IqCpR`VarRJQ&r8I6%am)*dN2ZVdHfG2Vpj6
+
+8H+q6Ym0HVe6m&pa9`GDlCaak[UFZN8+rSjl4IKqPAPDfR&`LhXYRDVqMV`pK(Mq
+
+kM,hL-HehpMUm*K%lEPr((Vjc(&V4k(IL(m"Ad21jl"M%1KEfGjE3hqalhre$Hm1
+
+"p`b`#k3F2rJHlhPh,`"h9IIID,mlhU2GIXm8,JPl([LYk)U%`N50Lc`ehQpaNq%
+
+P1`Ui2fE5pUR2F($SdaFplrXPEm"Ai"aXRmE1VRJLHcbhrqh8r`2JiFcY!imaje$
+
+cSD1qb-`X'U`$elklT0Ikf`[ZkPh`h$lDNl2$9@$1dAkq4(X!Z95EGUihaLjNCk,
+
+HNHQIiRdpjIL#ahaKldAlDl6b5d0KJRU4qRrkDpmHAJ@`Srr5Arj5F,hS,(El+kr
+
+rU**e`PAMf`1Rd&r`R8fqJ-j2kDm92Mr,IAk+RreIpCLrY(`SlfL2AD4HDG$EDjL
+
+Ci&eqrchX5)mp-c0h6dCADqZ[CUDcLqH#'@B,I`3c-cc%!6ZfNmFYhlZ6amfR*q'
+
+rfl0HCb[R$'EV-8j4A'mrE`id%(ZkpXZ,K9d,1dK*p*MLB8E(Kl1haZYKjX4HQ4d
+
+93c95$ce&MUYP+ci[-m,ZA,qD%A&VpXaJB#'B3HT2ll9C',HZ-!XaZaHLf@VQ3f8
+
+F[bIZQN,1Pl#,9TC@-Cpe&qZHdkfP&6kRS4IKlAf1TrH,(5&Zde#0SV1N)2EAY9a
+
+eNb+T&A'r4HHep&aGh%q+qd(lfFjVc'RUFhIfim@qrlj9pprrTamlZ@2!#(lAMrl
+
+5!UE&@Hrf)r8$AX&"i[VMZ)+$&*CUlNIRHQYTqQN-j0pkdPqkGDK1dCiFq42YQF,
+
+5LFahk(CmYa2GY+hrJe2aierc2flr9rj(h)jIm6pqS[MUrq&rl2Nerq2fIq9ra1h
+
+m4rl(6j4IqL[q4iGRkb@cP&-S2)lXBIj(Y[)rZ0-CI&HdleArIeI#rmKfrSH6qc'
+
+YLCIc9YfSD0k1Me[VC`Vj1V`pjUpj[eAjc5IbKVIDBY'KT&pZj*'#EkfFE*2Lm-R
+
+FjFVG%9dke)FF,(UiKEIq(kV[K-0p$-fQlbRr5[YjZHiE[qjRIh(r9HiV1G3$j%l
+
+jAA%$r5G,RheAH9EEpHjlXIHENhd@eC3!Ia%m[j,SlFVI1D)ABId5N`qBMiHUJY0
+
+#k,jajBlZHrSbj0#DreiiA$`6&a`KI$$[EDB[k&fKR+qf2XfV&Lm+V$RHeD%K0XJ
+
+d9Ef,4'm@2F)HX(iak0eHlVUpJV(2MHD+[$IqRN4[fALKJqIZLh3'L(B4G#'3!![
+
+H&+TAF[)j6,k-aEIf[FaadC!!J2pJk003(h"VCSbH0iq(&b6D@-*,@qVqdTcqAFh
+
+H-d"V%-%E#$8@fPBV,m+0%3%IYM(U[!EdRmKBaQqL%kXFETb0&5TSj,6eU5FJHM9
+
+JlA![1il*"9iVR(VcVHbFU[mAiqIPkT`3M*DkkQfVeFpfdhCf4(!3PB2A0NYk!(1
+
+JqMR[a6(24k+"U6k`b5f6(MSb2lTM'Nr0M#NH18l&Y"UA*UEdbj'BSI$J@pQaGK6
+
+`(Z,K"[-aHJ5VfF-A-I1+C1D"Yj,*I62hKAUrLKhhE[Ek@p&JQ"SbJhNi2,H'cB1
+
+I3B[MeM!VIN-Y!fK9)Pr"kLD0c1l3m#i@)YF`A+#X`C2CTc2+m3Xhh(cjJUY'$Pc
+
+l3q&icE8jM1PrAeP9rpLb#X(@5RBGVlk3!&@M`6p4GR2be*MAPUkbF3AGL,2,dUi
+
+E)AS0V-q@8mT%Da1k8BqI`*khib9r9HL2YI4B$Ca%iC6+$1hFCEDLC6f!H6F)E4E
+
+`k$P$&UXHXCPI%CRCh&'3!([@LhX0X(5ce`!AdIQf@,R+(AN-m6``eh[bQ*RN8D4
+
+F3R*8b$&%cB!M&3N(!$0$1'JP8E9LBpbMh2fSI,phFqjf9X2Hj5R+l*!!rQer32G
+
+Ej+9H9"'RC2FUhHmiBa'Ah[!Xhe&QM)NVR"[%9@i%iL#ZcRIXDfr83QT3%Ve0r@@
+
+B[&82)CUhj)XBRbrQf+*pF#4(ehXijk6arkJm6-bL@RMIQ#Ia@L286qBfjNfYl)r
+
+N9Z#0l(PZAjh8ST2pHCVcpUR0FCr`&TD*,kVeZKIY2pldVf@(ch4rQ20epV[q[RB
+
+Blm`[hQ@N$Yb0Yq0ae[**,Fmd9XmMI1kA1ChqG38q#ICV`F-miHMYi,m4BT!!FrE
+
+2A$1riChNQdb4A&*1+Z5#'15ESGE'jq`6bNQ8IE+p96eS5pf1j(TX0NEjT"I&[,E
+
+(hGX90#[KUpcNmaYHMEr)[@-I#2IZFCdj*KrEBa8k-l3(U3H40TJYPrdT668[h$I
+
+BVD"R2N4RSDQ&F!5T,BKhiKdAmE+'r,,!jj[`CE!c2H[[U0r+GcSEY,IIM5iCGBc
+
+)blGHQ"K$X(Aea6c8G'pl2!TBI%5i61e2kGacCp[4I9Af@r@))I[6LALKm1IRhA9
+
+hY%(L+LFKT4F13K%mj8,K#),2R!d[S3aq!MedPc)I3r#CbH@UhVZ6qGB+Vl6p+I4
+
+qdMMI%pkLA,4HVY8QHKYiN!!cim!6fh*afFi#R`(mB("q9kP1$,9#%2FB"m)r8)M
+
+*2IN@0*LlX&mRlUh%I6L1'`!,Mh)R4[@%55pMa08(P!r&!plFJ3Q*[kqEY4IBlaQ
+
+aEi-SP[a@jFc59iQ*3ibP@I8(TZqkLPMcK+2,2C3D,e[!H!j-Kq-Uh1(RG9mN&i,
+
+cE![Lp1d,`!``ai5MA34H-!6qXbHmCI$Y@q%@8IYrX2[*rDl1@Z,qa1kI!-Gj!Zh
+
+FCIK031dH8i`50AML$q`YpmXRU#9M@2lPVqCbjJ%9"Cl!d!&QmMF0DicaB9h1jZX
+
+l5U#U-1I"0GHpiC[+ri[bB5pdrGG"jVFAHjaLXN08CaraP*-l0+$&q6GAhFkF1k%
+
+[3+b'Hk"krZl!'hC,EXM,dH(!RIV$-$AjeadQ80"(N!"pA[Gap-cIfki9l4Pk@2Q
+
+ARXP,mXVa[0!hfe4V`r30p0D'U%kmS`(@[NYabH-DeeDhP9SEp%kYI%jS'mJHX'C
+
+[Vi#h+lf5E[TmSNX2[hr5+pX8jh2i'ErZ&3HMJID,kC0YjV-a0PYFVX`EIH,J09[
+
+Ji'L2r*hLjY(C-PMhAq[2N6S(a-i8DlT&Gm9raCS#44iTCV&Ufb0ZTHFPf&1cmNd
+
+kmRVrVl'RiJ-kG#mTJUmN'01,Er4HVRM*mdE-KapdG`8l1m`CS(lI)(3)"dKGX8p
+
+Urjl#9PaZ3T5Am,M@aIMAVe"mZ2hlKZp4Vl3cEhU&8jj#qe1+Blh'ecKDefmTjR5
+
+iVZUl9226qAfUTXIbNphU5(j4$hd(&+Gr,6r(UllUK'(2TPl8aYVSf`8IUHMhE0'
+
+0a6c)'G,kkY5p#QcITrAPl"$FL@ra29bdYec1FiIf9Q$VXhTMZHMC,(Saldkp,F5
+
+aqP312pRNEV@rHR+2kRj&0GqBqd,CIAYfcdjH+H*dl'29`cK!"hi3+'!1@pKr6Df
+
+,b(HjBNGZ(XGbMkrD8hFENlKH$2GS(JIZ!@cK+1i4Am!LE!e'A4[e9&ql(`Z-,r"
+
+a$Q!GkhrMJ2%9`jMLB4``cA'%[eDH4ibceBYAal`iBVk+6Pj*p'HfBh)QQ$Q'0i)
+
+$ra,23LbCjBM[5q),rRXL[SXR9jK1e6F8RbZ*PVM'fMIU$*GjNf+EePFQmNb8f4@
+
+jX@p&TZ(%MHiTa5pq,(mlbif(r9VfCHJ@YDd3c5haNaC*MFrHZ,UTpeTbDB$RZCV
+
+p#V-NVqI!Y1i-EGHT2T,-I-a!eVTV[iLBhiZc&1H)FY(18Rjf5I5RjKe92&jp6R%
+
+RlLMLX3)eP6SdT"TUScE9T&%YX$ND"r@SYVKRDVmL&mI,12)6r$YDIfrlLj`&p1c
+
+ekJIperhp3H2Sr5T@lFZa'X!YbD2lc!T`A($TL,qHi0*&mjUYHR)RFVGiEdRdZTF
+
+j3bD@H#a$,0Af1cQI"(ID@1"@k0k"[HGFpHLVh)Tka3%GESA'H$Fa&1F9EN@pcV&
+
+6'XiPd5AQ#Ha9$"Nq&#V&5`1e"q(R9IdY[p'MGLCK$aSYfYb#JH11Hq!kcXK&q+5
+
+raE)a(l08Li[H+U)e`C`k3hY,Gqefa@91j',f$j[,DF1j#%DKZE6&Q0L*A,L,f&b
+
+5pZCbZRTm-,PShllU445l![A0&#pT1ebeb`jM#dAQ2qT0`rcA0aRr9A#DDHiTqh6
+
+EVc5HqY[l$Hre8$h18Uf$`r93hY6q9jY[R'JpV0paeN0j#a)RaA$"8h@)mA-DiHG
+
+-@b8qE1QhYCTD1$TC[&FXDEIT5G,c#EPKR6@U"Bp23!ppTQP2TkL1Gl4@+DEl50i
+
+Lr*ZJK`GNYr$&(KfjL5rpCC!!ab"id95G#qST1mAm5kZ'S(MC)UlZe[DNlk31VPY
+
+ET@ViXEqX9cKc&Sp[1)0AeV8$`Um8I9Z,K`EY-q'NQ"fLQ,b!B``eE8IFPqbq4R-
+
+dq`2pR4IbhR+h3Vah2-MM[IM+aR[9kX-phXYm2-KE1q',K2eiRrEZZQUmZ+JI@AJ
+
+F%NpCSmbcRrTfcaZUTqNed6!aFH0L[dD)UhJPI2*`,pAHJbjJVbr23l9BZkF@d$S
+
+2KEFVA`%e&dmQaUG!%!mcdISFV-0&YKZMEZ)IbkRE"p5[SG3(qEMe1FVakr3"6Vk
+
+jlS,+brqqcXkM[(cCbIZT[V[1eRkkrh-@F(B*PJhmJ&UaJZ0bRR@qJrHBdib,VlQ
+
+BZIJ,M+F6hi#QSH!E@Lri-5"H,4jLPHZET[`Tkm'dC2F9bY8L$eXd0e%hSlRj@(`
+
+R1il8)eRe"U0c1YPmHNL29HPH$,md-N1dIXP@rhqTReZlNZKEZMXEM*SjBkpi91I
+
+#BBakQpG)pjaSMF4h6dQdaAL3!&,cQ`ll[rJ#mC-5,NHKF!H9)e#RQ-UrmP2MTb@
+
+j&"P2mX[+Fp@q1FhfRcH`[4MrXb4DT(YY5A58k[8T4R(c([iRBNMY%82R+pqdAI%
+
+#rc2U9@P3`8H!H#bC"RkMhQDiHq5qJ2GCci+k@p&6999Yp)dL[`(hfYGI95cMF&m
+
+h@mr199c3l62`S+&KiH+MU%93qTGlU2EQA-F2h*MScB-adDHL!3#X@,a3J%X[Xk6
+
+p%Y99F[[`U+Ci+(ce)25%4(H8[2,Y$i@Dlq'e[JeHGY[QLYjS-lT#4H0kSr4%G2k
+
+@Q"EAD2Jki03f(DZl4DjSiC,6)R`cjCd9kCk*[AE,f!0R$4i1IfpU+[Cl8GKrbS&
+
+cK$--RK6m)X5VMjlf'p"IdAZCZqdjG+)(2AD5D+JF1-+d*KrY1[!LmLQ2rJ&Hi0!
+
+`'+A#@j5$I[D"6A$%Q3mm#-5VceU6$qr&4i6N8pPr%T`fm(0qU2YpHl6j*'*A4pH
+
+JpA6AEA!$fQrV6kA'p"q6UK6m'R8#YahDSjFFf1leJPH(H28pCI,$I8"pF%Kq%hH
+
+F0$K&p+ZI-Qj,Y1E&@E3*L&R4%djHeR#V!p24Ra5YcUH8,d3p`XJR$"m6MKeUMh1
+
+4e(iC2BBHKJr4,c5L'h03Sc%8l[cbA3p&k`Zlb$$ErG#[aFUhp+%GrU6k"5!AQVl
+
+lGpG'ApICD@ECETYPIkPcia"2hRHGcE*De9[iYGC(r"d&[B"0VYhbMf!ISMP4UrK
+
+!4al3R1M*Br26'M$!CG4(Ahc"KbRZM2ljPe5hSHNVMRm!8hRdGViVq))[HH"Sd3H
+
+2lc'pJJ(UH`1makMH*caKL%H%bJ0Ap)mjF2hJ8FbE`J2AqJbSUGe9TRXDp@NakkJ
+
+9K$GakM[#[+Pf,E24iXrFpMXm!mMqLTkZ(Rah1%PecF1LDjl'$2JRjHC3'mhXdi`
+
+RH'6lb9Z2MqlX2qNESVZk%jh56GYl"pIY3,X8mk-+(4cKGMj'A`5F5bBB6m9[iS&
+
+2T,cMSlAb+YCcB$Ua-hC)IB6Md&NIVrEC-[UX*,T6F8,bG5drRGV$4c53!([b&Ci
+
+"qQ`j-dMd)VYb99eUkARr2[dEH+VjLkrGc[cVdX!4l0jSi+4cAf(hG@ASA"hdE0p
+
+3!YBrE0Aml-0p+h,,&I0r4fia2XlH'mSk2r,1#IiQapm%pFeYh#d+KklLI!JAEeH
+
+qQFX$)9jFSIlH$"F%-C4Im3UH5li*r,-X8QpSlC(ZKFjHSAkTNY&9bDcq623%[1-
+
+rFFmEe+QP0e&UBcfVIYk*-C0,9[e6b9YfkGFeLf+jYqRZDh)AVj`f(`HM"pmGqGI
+
+*1hJ`K(CN*prP[qBVQ*M*Yiam!mrQ5mpdc"9H3dC-L,RejNe3hfMqbC)rqPeeC2j
+
+,(9j5[T!!U8-1GBJ[eN%j("ded(b$,pIEiHKTRZ6"+NI[*Gf,E(m6ph*b99lUZrI
+
+NUQpbppIl0Am0(A8qS,ZI@qGJ)AIQ3Tp3m&K4%TeR'%eRRLHaGqS3+GmAq6CU[Z[
+
+*9h!4NfmGqFBTAPVpd%EdjZVN,Zm1VI1IZ,rZp%cApShq,L$q(X-0[pJSf'KiV2J
+
+@EAp8p`ap(fr[Y@p3Zm6UGI$3i(f&053@Haa60lh4S8&,E!3kY0["Cbe'dYNlqh8
+
+[0V9XGCp"dM[BpqLcKc@!&lMKFPrPpbPq2p2[drbqeZrKGe$Za9-jlV2mRKjdHCr
+
+Mpr4Pa(YiK*Al&Vm[NR[6Tk(pI6S5AB5'KDXZ@[@4%1!cK@-qdr`9#cZHHmFHq9,
+
+1G&ZY0MddkI1kd4bMTbl4TBrf4T(d,ZDbc1ZS2a&rT@0&PD,e`*ejbf&kVZQqhhG
+
+Bk+B$'iI[S5Z8[i*p$h[S&BTCPN6cR82)R6hq[Zd5QhNJTj-k+I3(q6ZGP2JRpQK
+
+crrrTT-32&R45*ShST,`BU3k!e"jDic*rSB&&$T!!i0rYCjNH&IG)IDHq,I31q$Z
+
+m1fPp$fRi0MmfSP1G82BER@Tke$Z'bb3F@SL0hJYhlC6GNjkbL%95fb`*6dcdYIP
+
+fmd)PrV"i6lp5m%2Pf8R0S,RJaF18&im&A[c[HpZImbm&606IpG@U#Cb$AGGA6GL
+
+V0CqX[&,X!FPCm"he+1R&Df$E%br(II%TpEI,Z0L(k68iN!#TIl+bpXRGbMrULU9
+
+qej%22+G)RG%ELH!A"m4,BIdMa)8I9VchaZp0AiiQ2cp[ChVX#j8cBIXDGH%EpVZ
+
+T!cPC%UFNQQ1FPREaXY3ZISflilmlMZqqbE8mfJBd(Z[CIVCT(qZlR3A2%P+AYUf
+
+UE3Lm#2'+1XH1fFJj,a2T15Ic)ceRCEkUjic-pAT1bh6T15Ac2Md(-kH-!90i*ZE
+
+5321e6I`!BADA+*p`+6-GHdQPHJE!V1Hm`,P'jRC*p"q80i,GC02Yl"9(F(cJ*5h
+
+`Q`@ESDI"ceb,Pl`jSbCeIQ4Kj4Hi`ldRmj(#2@G0FqIbkSfG+jK(j'dfS&'AV2-
+
+)rX8kjK(pd'(Z8*06X%@HiDh,JmFZQ9@,cPYKmfMqLT,+cZ@q-hd-6'MQJJQGp4G
+
+@GLkUQm"p81qVr6i)0r4@DK*FS*kQd,pe'R2K!Ud*-+2%b3ZL`FiQ,,%Qcj6CXBf
+
+BR"0E1E2I0dX11'rdmhV1k#Y`[(SpdQ+r`Mj@!ICEPbp4(F-eTXGAT(Yf&cIK@Hi
+
+&ZfLk+4aYR)%IQTBH[(NjI#ES)N0r9c#U*M`RBJGE*(`$p%@GaS((@G(9%GqbfBS
+
+"#Tk-I&cr8XRQMeKd[Z"[0B&kRk&BU0&@leqlZd`jJDCHSS9![`A)Xl6V4cXVZUj
+
+rZ&+eE"XLY1k8#pX#&YK4+pa$QeDiNLB2iH#D21LKXq)jVl6!c89IcqNIRh!EPQ@
+
+k(elG6JqYYP`Z0Qj3Tci*2,Khpp"6aS8pf%2R@3rLcZJJ*Sm[A6U4Ff&eabMdddj
+
+A6#AD$h%&hRB,-E8'PaK(61VXk4rZahR2p11jUJ(b5MmU(j!!q@N0&"1-eN"fE&0
+
+ri5LBh,YlFZ'HHYmXAYr108e$MDeDAhKA%YABRHE"RU`%YcfNi@Fpj)&6)rjeXDZ
+
+UIehiPBC@)(8aF"kKRYh1$KHT4Z[Gl'ZL$rNfaEAKFm[$'q'83QGFHN(p%NFpFE)
+
+h`"GEpdpqlG4rVYDKPeIC`D-N[l5paV6Um0EZd(CrhP3fDRi"AlKNe0a"G*L!0HA
+
+NMZ%l#N`2H4f0DAdG3+X*q&3@2R1cm*QE6Ebmjq2KrN!CmC5rN!!"[c!$RQ&QpI@
+
+MTK%6[YXZ80a2HZ!`rp*L2IR-"I'M!hijm*i+[,33hfN4ReMe&hkRSf[b0cZkUZl
+
+T@,EYLah9B$IB-f@'b9hE0*[&(I-cEQ[ef[+eqfBSkU&cEMdi4Q[j#Z1,c&91$Hj
+
+,2BEU$',I*jicXJa2KF4L[SH[5(Kfb"0IqZcre[,a&LrEqVqeA$friekjUTTMXZH
+
+SHV'YShCk$0@*D"fehHpeCfNGYGA[&3IP2Q,p`E3rCAY-kkM0(N1jDUC1a'A)C9[
+
+f8+LHM*pPeQcNFCKlS5qJTrJkG8YBl[(9IdcVU#Dr&`f-@$i1cV-CdhAGH06pp%,
+
+V+19hBMH5(BBH-F2,YJpK0GXGUk%h[GKZc&dBR#1[B%[`kZ@G`aIBM4IXa[X!hjh
+
+2B6ACq2)4Mq1XNF'6S18Dc(`Q2D'V$+dBD,0L,r"hR3`ZmhRYb3eH(q@RIJF[FT1
+
+8Qe(d2h*`DKb)Fk!((I8aja80PK6bh'%acSpha!$qS91YErFE$k1e[0pMk1aLRKh
+
+jR@pD$FJp[1aC(!LHJj(V3YjlirIjXX0m4hIl@UN,cPBM1+1BAr!*cdmi2*bRNZ-
+
+pe&IVSaTScP`jAqFImL&@N!$fUha'k0adm[N5qE3HT2-1Ee8M@'V5GVqIYeUYfVC
+
+`*SkcNAMLY`raG2l*2-mch8($`6'lA1dqr+E[#0pLXAd5Zf3e()4QfH1bMTkb4Ra
+
+E8pmHQ$4pLPC2@`!PI`JqIZ#*chL$*rI%ZdBi!`[#JE92lP,GEqk1aNG["KaqqTM
+
+fp!(X3NHA(PRp8hm8$L4f82BMjQ(L[qc[bY8T)$F+ZeBe1aEVY&jbN!#k`&m3jR4
+
+Qfb1Ur`KIam),Vqk+MYJ@[hIV&KNh9ZZE+e`UH'Hj02E#+[V+f$0%ZdVfidNflq3
+
+1'Q+X0hCPF2lLDhHPe0FS1B&Cm%a&DrUMe"[e"2G,kcfIHRpEr'DLcSclLPGQ"fq
+
+"[bIb)4XIeKU[e[T"TcTD2qq1FHVG'20ICQ#EiK&iYdAUJ(GTKUeiGHFb-GHfXI0
+
+)Em!IiTUVSphi4hj"FrK)p'6YVU$qj)52mP(H$YiqRIj)RdSq@8G1@3-HNcIZ+1N
+
+CqR(d(Ur[kDdBA%bq4kbpmKjak2(FB$[HkUP24V[&Km"Fd@PUhUlq'M%$k(-3G8N
+
+EN!"p6(cS0Zd#effrEkTi84K*61!J`'rhaCjPECck6ibZr#-)!XDVI#Yl8,$h5Y(
+
+lp"cDYI[*bUIMIIRKMBl&l2S2a*h,[P4rlf-9iS'4[HM%DF+EH0Y!4H+$RRJ+HcS
+
+SFD8H#r#NLc2UP)P@GlcfcBZ4qQ$&@ILjaPHkD#q!aq2S!TPjQ&Pp're26K,k!c(
+
+9EkhdLXFmk#XAj4Mf%r0fDHCIP[KpKrC'`D$e'AVU"HN[p(@Pc-D#1k)Rml[8*f!
+
+bFeFm%CYD*'I'2SBRTrE(iePYjKqp4B[rIXD81m`d!0qSpI2Umr28r!TIKFGjl"(
+
+JZP6,r#UB(%Ul*Y0[9Fb9$rGAbed6RL("MdjfM6lk%[5ZBDI0@c"P(AN+hm219H[
+
+YRj`)RDRjRa4YN!#@cLPVqr#FMQq3!([aQSaB3HlpFVrXTLR`MI)rb3b'[N6q*me
+
+ET@GYC[4QY0lEHrXZ#SIb$BTRpJ,b`YXkm3jMG[p#k9ZC+bm9jdVp66rE+*abc*-
+
+pFJrrT*l-%H,a!li!XH-LASlP!-)#YIh#e(R-P,@kAm'E0pkRb([12[AKc6REhU+
+
+lXF`BF,!3*cbfAhXaI09!4ABYRRV"dDNrVRp!mq8Z`9jC%%TqJa1#Db6lA"0m8I*
+
+,QqL*NLIr3I86PS'*`YmlCm"Zi5,"@l5(Vjp[N!![Dj9'c"6`*mbURbZ2&c&6j)h
+
+fQ[%phV@c5Im!a`hA+fiLATk2[%&GGREf['(E+[`imMaraBPm-bUi6jr-Q`MmK"E
+
+LiZcRc$dkirmApiMAB(Kmc%!,X!EmNRV8Qm!-Um5l-MdX'hh%XTT`M'PXeBF@pbe
+
+!ADLbHIARaEibXiP&Ap'-*CS(HTGTf)RFC5MI!li1"FXjb)Ppm@r8jq`TAD93@+H
+
+H"ek2Xp*dd&rm'qAprd)ADjRJqH)Afp3hV6VlZ5GURha5GB5-ImPIDl(GepG12ae
+
+3A3M-AFIA-V(h+Xe*p%@%CiJFUA(KD2j2@p95qq42e(q4k&bmq+6lL2LiH&P@lMT
+
+QP28FS4MY2ETMFABGpq$qVr@4r&qZcalcrbceHF&pD%YpC!GRI4a2%P)IhHY1eUI
+
+6qbalNAk,E@e#aGUmS2ZLp1,4f[a)pc06'k-Mpr&(f5hZTKE`1(T2ihlpf3lI"XC
+
+r!@UR'V#[H$B`RSBh1VkI"lCH4fai%)JSVLhl-$LLPJG`Q#pAeim(p*KZ+r['c#(
+
+@NV1i5$LVp'C*r9A8SrM&qQhf1V#'i-kT9TZTJqb4L--FQ8IKVldS*2h2AZ!q`Ik
+
+&0rj#HS+H3DZN&Z!DqUd(&kLfPDQ(q2a&l%+[5@95p`TL&mCe0r8kUZAb4Zl*RVY
+
+Sq[8GN!"l"ek9bIFVI12aMI&2kMppYA16bc2,RP5FZVacB&QQmqjYA9IK4j&qZS&
+
+lM'52$BAVc,-jFS@h,[@#!Ai-BQIU2IC'XlX(TckPR1DL'GRS&[I"HfcrlI,#ERB
+
+Bd68+KDZ0Xi5lm[ScBqrSe2G+JjZFh(Xp1irk`+8f,rRUSKG3Q)fk&JL[!(LfiFa
+
+R@cjHdjk6ZrQU9a(eq5Zi3LEaT3GB!pbP6-bc`ka%Q`PiQhJ&I9AR9rJq`$lYEQ!
+
+pVdHpbAp%18VkpZ,B*bhp[UG,(8fGK!1!0aRHkqN@cpPM4I["e-M68&mHT-kX(Ih
+
+Sm"eLC,6GUcjV8paREBTSCl+'j!RbVI@`6H`BH4f-jHC26pbar(2!kZJ0PjT0+F3
+
+&EeqmiF*V2hcK!Sqfp4'[ZpU$`NhTkVHJikb(r*mdKI*9q08HQBH(#0lf%MJ8RkN
+
+2"il(Mc``RaajNh8)I38XZB'h$DH'+Y('Q(p5r4pdRPLhVI0$FbXkQqCA5&cNNLB
+
+ab+e%6QP2pkc1RNf#`jRCJVN#crik9j`H0ReJkmhhl$phlM`I$FdGVIY(PDI$2M0
+
+pS2MK+h9(VC+p9LR#BFHC0I5mI8(89AGT&!RR%Qm%QkKY#Y(P+a$UQ,BUdlPL[R)
+
+cEeJ4YR,1VADqHdq-65r&`2XiLI2+Hp6QjIFQaqfrV82NYc&fr,T@`9rA+[lAliY
+
+qr6lRYl9Q(HRh1,LShR#XRMcTApU*`EkqHXAV6lkF250kIrDbSIZ,&[aG006hqZB
+
+Ipl`jY"HhADIH[kHQi%"p5$PAH(HCqTkI'Xk5miUkF)lUhEliYmSM0l-j$Hqc)I3
+
+lGjU@TmjThH(JHqNN[[#5jdaIccFTPrTScJhN-9Am2pqNZ"YLP&XGpLT2ir8kq*k
+
+Z3p4[jj+XkNMHeeF1eTGXfS5H'hb2bH90d0i%6#FUL[R,V+r'bhYdGYYmHlbhZrX
+
+$m&[4Jc-DqF'Ti,2JXUDaedIBkmdqkcRL"Cd4kr'41cTd4JVqJTbQD5fVm$9YH#d
+
+I9YiApcEZDp5N@F&Z[Qc'-ceQlXZRIP*p0&-rJrZBF'1c5err+Z'SQ"e0GP&kLS[
+
+Lpr#$44iIZEKhK6('aEh*G'HN6rHS,f(9[QVr,[Mb+['IT9jkJB%KCq9+A'TF3[K
+
+D1q)9XJZEfS,1XR*iU0e&Rqf#jhL0kpDYD`aZ1[DKT`Xc%2IQc6m1[EQ0HR2QJMY
+
+r)rA0P"Jcf&hiPVSK5q$QbSkPR2ZD*0l0%JmaI",$a-h`Z(%HVc#*0a@[f'P$FI6
+
+1&cbQj)&cSX4'A+r(R8DHe6RH6*@kk&ZI[hdVEr-dAe1$ApBFG9NY14MG+'T94**
+
+mQ92ermc*V3RVP6T8,q5AQq4,2pmTNUqj6b2A!EQ&UhH)$NZhCP8[0JCX[bVK)G1
+
+6jCYLl-$-U(5*BE9'&6GcX,p$APU'4SpURXL4q*9JB$m3[[c5(HLrN!!(A#GqLB`
+
+()S2$R+9B$E!5l[jKm9U-Za66B&c5JakZm%i+eq&&qS(jmhLc8(Qde-0pm6(9"53
+
+hT[l18@mecmhY6f@@lC4p*'Im8G&@hU54MprIY[PEiBU4dqj`DB#6,Xb&2r+ma(H
+
+1c8Zi5LDHU91Paa%qJIKIaX`'ebLHpr6-5#r-HE)E@*dec24#iSRHUHQa)Xm&I#,
+
+*4A`pQEjVPVHS@AUFKiPrJF4SNRb!#@+[5"IpS2)H-#leTNkFK2A@rT&G#fBZZC0
+
+X+JN&$m[5Gfmbhj)IeTLCR1(GqfRE!j6IX!J0`9hrECmi`c4q1rD*Im@($mfKr4r
+
+krmmK9j06CT'G3rFaKaTP$VAeq$lkQ29#Iq0dkbi2rqcAUlE%NEekB9hU8jc(Heq
+
+AH`qc[l'cr5$f04f+2@QlmbMAhVdmNrLHA!Y6mefHNrKkY6Pa&M''-cXdKZLTQVK
+
+VL9@@c#,eh[VLAm5qp*QlH)5*[5-ri2r-Nc--p`A(Lr-%-DNINL+m)H4f'AQ2i#e
+
+Qc)r0VkE-''rQ1BjVei`Kjf$9FleSpfp64q((Q,kM&[9UpRI@MGj,Qe8,41G'bV3
+
+&l",6m6@1HpNRp'fPjb%kX*JV#rGM%HVAC%Q[qK2C&0+k6dJ2T"Jh[4hqNr%AVr8
+
+3EYJ[p-mjTi"I)VG&F1,LU@XC0@b*F4VMjHBacZKTEjDGCC&`ceK$i###8E1'M-f
+
+BkK(VcE[9S`iebk((SeTM`&5RKSZYeVYdIc&ck9[d$E8HVS'[NmDj5[VFB$V#Md!
+
+Hi2F,$`jc!-EYF&E-b$X[QAR2b[ZS(hc-X8hKB2JMrG"TT!BRq*IHTmKMDe`rR&2
+
+rDqd3QrJhDiHlG-A!'q"8Xel1$(K5r4LD1Y3-eb'01[5M$NP*(@kbZ0r6IFqYB3l
+
+[dpNeVR'XAI2%'qPejB2Hj28**E1C'ZIX@4makEA,eLe&HXT`SCJlqLG&qqGPr-h
+
+6rT,[%-A6fbBCGMifpN&I"1m9Xm1lc[V9Zjlk,ZbY5hfbZLkeR2i3I@[(VjUmpCc
+
+"c[-)jjN@'cafl5A4pcHaZ[-dZm16bP8aZp"PrNCm!V#ZQ1pEArEh3Ki(Z0d&i"X
+
+&&q[XJaG&F#U)Zf&@[42H1MN5i@9`NHprV%)iZiCERPPpThN#dekmD!qh'20fd`Z
+
+mh+RQLj!!''!qf%aq)h(r8R0IhRAG*rimiGGZX0bZ9EjM!AfErf!iF1V4m'mZ$K9
+
+6"(H8qH*`CLT%9bd(cb-Ym(NF6JRQM2"ES10Rq5hLMepm`Ze4,D4mkTEpfLKLVQF
+
+YHf48Zq#0"A$C8)2N$AJ5-acF&6)R$3pZ%G`km'*h#XmIr(h*Rr9)JcYqHkER&pY
+
+N9L*1p93i`G3f%Tp!d(i1Vcf5p`0j[e0lDYQlc)Fap9R$RI"mF+GeRkhm'0D''VP
+
+DVjpS,p!A'[+PlY8mUEQT5DE&q,(YJC,$V!,r"qp,*3rKf%,RRR9K$e2,@((-222
+
+$40i[ki!cF`Yh-MYaVRr2GbUl2Vf$QVDYF*jhDUEpBGHKZrm2PY@[UDM'Xbck[JC
+
+rUJFpmh9lbLQi@E$ITH,aH(h-4kR[`5FpCU$KK*'R&12Md0rGQ9),-kIVE1G,0"q
+
+hm*!!bYP4ri$bRM1jYpUUkFk&6P'Z0((V6Hb&j(V$Lcpb'T!!j*64pb2$b!Zc2pV
+
+$Fc%l`A(26M&-KRZjB$(8N!!96b6YTRAdAcbUY5QZc$[eKIrd(PrihEPm*NrI%)Y
+
+X3'G)q"9Ah`8A3qB5X-NcLpLNcMr,&`TIZU$LIm92,r+0ULTLI0Pb4rlVR0pYXfU
+
+kBPmbdkX,q%GD`Le,PTf3!(YFE!q3!,d!Zi!lTeF2lCh)BANbYaFQFc[miYbZqVr
+
+RpMA+ZH$FeRRm)m9AcFcH4ZrXX2SiI#Ybf#d(V8TQVR$cH%BIdJHNU8''m!q`cbT
+
+r$GahPqZ@*MJ2he2,aRUM)1mI1GAB,Z1Crpcm"ir"k(cPlTrrEj*Db2iZpAa+p`Z
+
+,VlPl3H4rl`8a6JMQ",&#HSFS3![FH"ZZN4jrceUYCH6rf[&qS2V1aP-UChkQpGr
+
+C"9jLq+LYiJFldr'l,(4BkX6rhM[4*Q'2)@i51ffNS!p$,EBHEpL1KJee-4j4([m
+
+'k6AN9IK-hY3lm$4jh[5XNF5lbRhjFhj*cB&Pr,VQhbpiHp5DYfm3h8ZRIY4qH99
+
+,cA*9bEH8h,'IZ6c0Jja4b9em1R`rpY4bdPI4rmj[Ph+Z6Z9R0"6qHhl@Dr("r+"
+
+0hM*j6ZLBR!j(b3ldQ3rEcL3FiGRDieQ6cq!,RI'hRmL1+@rE(f"r5S[hT`j1#2$
+
+h&M6H@Y#'@i)fh")djCDJ+GHp6`+EVbKLqqpk`9Z-aI42j#6jr&HH!'-#qbqR"Q@
+
+#Zi*R"Ij,VZUr(ihp2qTD'QZGpq&3ee#SIF',j-(D!Ap(VZ8q8j*PGaHZlbTd8*5
+
+RIV)1$NF#GA8`N8rV60c3YICKar3VB`aJTZ(1$JkG(R[2j&i"A-l[1ajdNH4GPQ[
+
+CC%d9[3EUrlbiY8ij08CE5QD@l[+LFeeHrr[a[NcF*8Jmp3mM@-Mq29J)HI"42S*
+
+Iq3M!6B*pAb8RRD('YjPJ*XIf$1[442H!ME(ZMpCpX[STd9bqjlir2219Zfaare@
+
++qp2A3QbA6[HBiNR$p)MJ2F)*3"qmmmi#*i"D`UpTVhIaTY%,pAYk`F'VJ29TlNr
+
+UlKA,A@[k!DeMl&eAhl'Id(GrVEV'Q#0C4@l(KDVVfFZR2UK,TKVZDq"@VSC[Xe`
+
+`0ZSY'RqF#m9hLGRINq@GD)@U2S*SC3+6QBGf@IZBqM#PqY0)M$@P4CZC093X`h!
+
+Ld&2HYLK%p#lhimG%$pH0fpUeCE6`@Z#C8(Eh(*pGj4BI3aak1,MIjl0Y-fIa@5,
+
+F'q6E6"aU-bc(6a!Xd#9R$LVp,'rmh2YRTU1"$GbYiiijQjT3fiHqr*KVN!"c%HG
+
+%cTc&,GAV-%,*RK+Zj`@UI5UDV(J($UYik)3fSCdh9IjZPEm6IV(SVZQl9RmR'ML
+
+F4HMC#j@2qe(4+cTI0Id%QeR&AN$p(Y'41&qjmRFp&4EXkE(Tp0KKI"(cEJhl9Xi
+
+,qiZcmdcje9jiL22&[FIG[DDUEcV9+(QrDZ$qbqjNm)ZMZdi@[8XpLk`$pZ`FfI(
+
+HG"ZBcjhX5c`E,Z9"c`r3F+rcH+PVL%91+l('@!cU6I-HqX[H62NiiBaN6LDR(($
+
+%fp"-'-QHRm1F[C-GR"a2c+[YeBKSrRYXFQ-0rhfjmprpI0YM,26`qq$3qqjG#(1
+
+EmhUMl"ZS5HjbjMraLA$pBa[C%ram18Z$k$jk(Ipfr1,`$H-C2DcrHlq4@58j"A9
+
+f(Fj*j[,a(F4LApBhRZiH'lVZr1[K@ZiFVUAGNB,+6C2i`,iXKmYbS0`kL"ETmGd
+
+b9JI`@j`k(1bTlMVBRNVB8hql0akY3ip@*(0UQ,RU1[F$+6S*meI-,I5rmG,J8pa
+
+2Cf3UCqj"bH24b8A-mL5Qc"4h0KE+@p&FU%'EB3lD$(23MjLM(0a8MaNAac6c'Cj
+
+4fk1RF9GU,&+l'E8LlXSpN!$pDV$FDZQA!VMje&)*efmGkKGU1ard5K[Z3X0#p*Z
+
+GINQ6[HHGD+eq[)!pY'mDaL#J#fhamMEPZ26LUc'mCa8F4-4fI&mJRc4liahbqG"
+
+4RqlpK(-JUl6lE("Qi)10md@AUA[rB)cD*RMLLfDhb#aRAafCqF41V"j'E0BIf@P
+
+-hJfHpkHHbcZ'CpCfB9!1H1CFY*2$pE-[9ck-i!hYl[h+-dRf5HD&h66-c[iRXMH
+
+"4l'$Fbiq%Z#*18[k0dlk0earR26#3Ba6kp)`h6hZYJhAr`CfY+(8,*[c!Z(Sf(T
+
+RfEY8cRcA@qmUVrH(AkLhf8Y-[G@$FAZNq)ITja6T!Hc%3iQGfECE0$5P(j+G&fJ
+
+`m#I8lj!!d6-kbIhXc,90ihEQf[kMImceFF@VHR-eY9rTYArQ9rh4K*D8C`cRfiQ
+
+"@%eGcqr$KqFJHL6'pC)jL$FaMh0[c-'''CCr`bf@Im2cqGXCJ9JjidUAIiCB@BN
+
+16-HHqh,mKG)2bC`2L,j49ZQ(*"rFhb(hb(f&jlHLpIrNYm,c@q(jhHRjrA#CjII
+
+$V1Ah`rphrBl-C6-lBKKIlVLaHCQ&i"@d[mmj"TQmBGjTR*IjfrIlfk$crNrb'MV
+
+cI8QeRNfqfH2'G[r3F[,Fi$QPmqBlj-XhprdQ6hF'X2GRrQT105cf'%Ih&K2M,Sr
+
+"@G)llma-E0VfUaM0dVH)dEcU9c&NPL$'#i1rLZ'j`@*iI[4F$'K`#FC$[+GRYdX
+
+9,!IlMH#he*TKA(M4@5iFCFi@XfH(41qGZ[(KJe8R1@2b'3cLhlHmjUqSdCb)TB!
+
+ViZhmF,V#HAE*e3hHRq$mR-#@Z'IblG8IQM9"08qbckLm(,l*$H2C2a3AScD*a1l
+
+!Q9bp8H)ch(QD(P*1[YNPfe563Val[BbpE2Ijm6UIhQ",QY[2&4qXra'B-(38GAm
+
++QPEj'ajX*"pSA"Kqf%E60(l@2$QpK)BIG(b3!&H9icI#il"DI`[TK9Tk8REJCRC
+
+Jk"rLUl-GH4*691cLQBf1+jh%c#b1fPRICe9c8qT,V81Ra[(QQq10'VZkHKX%Fd&
+
+IdSm)jlcS0&)EdFapd3`d2"2iLF(mSDpVIHYi8(GlGU2[UePS&KUFj5APD6&Rim1
+
+-FF3Il#RYdYT1h8&-$ck[fUjQ"eQ1VVHMZ6Ih*X-UU+&%c%(H+5H0@!(jEYb2CX,
+
+&jAd9CpjAZ'jk'YMEfEbTPrd&Gc+[F9i!lq#lAG%V*IiUhP*I[HL#4fDT[j+j@mL
+
+jkFJ1hhAX6+EZlNP[D*deIDkS&pSBE[hRQZi&0fj*-"KkN!#2i@9eX4kKH4IdGjA
+
+%hQPeE0r-Yq@#U(`DG9qTQZIYj2HGk#(ZTeSIk)k!Fq2[(+LjD&mGlZ--VcQm+UL
+
+')Yqpja(e[0[R44mrUpLiUHQ'IqhMj5rf-I@4M[4aeIqRMi%"`+1$eKhqS(Eq6S#
+
+k#iIa8#qhChrCbqhChiA4bcmYkXAfGG(,ND5A)rp5Gq)))meRr#,K`X5`!V2c&m'
+
+K)3qFA"UH-rCc9,M2NimIHr2IBij%&b3(c3'$H@4+AFaG'YKLj8[aK#YL1$+fYUJ
+
+"BkmPer")M8YjjdhH@3cZ40h5pY@"ASTkihA90#@Z+HT9'h18Q!mj5Ghe%ifjBh8
+
+Vqepe5hqZELGUjpB+@TZG0E*e1B`9TEq8$h2i*5F)1iAS-rcIR+"Ij16`e2m(cbL
+
++PkbI#Vr1B#C9KQmS0K6&6*j9RC!!,XbNb0qU(j%Zc#5+PIc-20KeBLAE-jQG&FV
+
+C1m&[2BlT2"[VPGVk1,jZE(f%(k1i6E(&q&R")kKETr9*R34r2PLR%jM1BEc1F((
+
+,iKaa9`bIi2fa[Lrb9-rdF6ZY4UVlQ@P[IeV`B1c@D+[Ai(@-6fXJr$G6Kp+N$NA
+
+8BCVk,p4FC5C"ej0e#)SqNANRIPbkD[$BbhbiAmb8DZZ[RbTR00Uc2c@ZC1G--Ae
+
+JI$Dj0F"EH*R'(($kp4QEIjhpZZhPZG,9Vp#Bf*TSXUD+jMpe*NbqQBT$5MhD&Gq
+
+K"kTS6cJlD8dacNZU!d*Y,*0$UH6c#SBURXFMi+mjAd06!Cij9iM2Tm0[6Q+J4rd
+
+frm"m3f*I+BQq90Jrc&`JMPaZ0A[4q[!%Iq)30j(HQk"hjI@kleA1Q25fp1CHma,
+
+HdGYHaF%YGj!!@L[!#cCaTNCPPI4`cp[L1#jmm`RQc6`A-PrB8m6lm8ke"dbqpHZ
+
+VANhF9HETa60J0ATD04FdMph+864ib$UVfG1U2@2H#bI*["GGGVbAQD6[Ik5D4,b
+
+,e[aTVB'qrk(f'qXKI4qYLI%PBrRZUNPP131ierR2QHEUedAR'c5EY4E4r8Gclpa
+
+rS0PfI!CfkCH"jmjHANG0RPeZrP!jKlI%r3@[*jB,"bqEdSpjbq%EpVa0E`2IB3r
+
+8j`HNhK(MHAZfH(e&Ee0lj*pd(h"k6(#URkJh22-qKX29HRca"LKeehLU1@cl[YP
+
+l6(-ZXjJr0Xp@h,mNjSr0qbcfS)mclmdm6*(DQail%-mLTmlD6fA2HkQcA&$66`9
+
+S06Pm8'K4&1!j46QFPJrLR9qFG4fFd!e5Jm2[9RNGaH1BQ8q1,JrlcG49F(IcAQB
+
+kGA6Q`LA9q(YXrhAkB)rf'[[!p)$KBZc@fH,NKPl#'mR0jL-D8)h4H-(EE#hKN95
+
+ir$DZV@9*G)raJ6YUm526eRCUm52PhlQe!"p6BM[l-(1DLaB0hSJrSFjDY+f6H(1
+
+(H[@)[Y"rkpA+N9lG10+VUr&FBfXX2DSpm)1#PRLdAhqN2@VHkllEd5-r9+fSD)r
+
+md$bB(ZcA(jMReSjqrF'HrMIp5YePYemI,Z!KRIhkX1k`AE8364+h&MS2$[EV`kS
+
+GdYQ[QrEd[qRAe[rHVpeDLqKAm3TdY&H9-i6DG04!kk9q46YVqT602kHQ6aRq%kf
+
+TDTde4[YUGFa6SCdYKMGrF,E3hfKR[BbRpUI-&cZaH(,jY4BG24MGQcYQ69"RMFj
+
+XCar3q,[0raaVU9j`NM0(DbdMEIIqYZpLQJU2D!dh1TBcVeL,[81e%%meb&X`'Cd
+
+Mhp-D'0rjSMGB%[e3CaAbb#MZp&p5hTcP9+a`EAhXIcVr1R'SjTFjC[qVE[p8i##
+
+MEV,rG0CYKqV1GpA0qYV[UYX2#[S([kZEUqpBqaRi%G4hY0ScLJmZ)KGUfBQH+AZ
+
+BR!hFTBrS-G"I4BE8",',h(Y2jNJXmMNCbbZH*&PhVH-6TL@J0GAjEqC,Mjj$PFb
+
+hir-a9Z1lU6'iL&de,XD(B#ari4qGdVf!CTTJ6Drb,X8RhT(D%*-cr)4#ib"NlH'
+
++8YIN0Rb4@Kj(hReJr`ZMk"1m@G%29p9p,pUYU-2)FZ-2,rb2%JXmJBp*,16r6r!
+
+6m$BmDVVi(YRe(,l'rMFk*KZQSL1,2+Vr@qphk*[%HMpYEdpr5fH6hZfbrDGc6SQ
+
+1cbRr9Sif#2J5iP9DmRQmi2eBGj!!a`eh3Hj'$i-k3M)(NEZmM@,"Za56kF,[Xr#
+
+iU4kE"$-,$'NR@YbmU0J$fjqH$p%Cm6hEKe'hm"K`piBSijMk88cRP1B2X"2ekLS
+
+iklG-%r`9AckZlJrpJ8-MrPX&h4RCNkQ6!&m-b+r52Eb!9qa9[*,pJ(F9iQ2PL1F
+
+EeKiFQkfZIj!!jIS(d%aTMmjE86i0R`CYGCFqZ@)bRPl$64G1S'I@ZTi#BSQH3PH
+
+XrAq@a)UilJ5irieA`B'#Ra[4hB$1JHKZT%l1GZl)0)fZG*j@Q@XE),H'Mcq6fdX
+
+2*,P"9d#d3jJ,Y81BbhH6A-4ENY4hY04AZ(')+4cdp$J[F(Df6,jdpfE2D32[bF'
+
+R*ZJNiJLrDHU+lV&*AXYj5qiCBh`NLC'4a+!r*2TAB3cURDE&qBjm2ajN00G5hNl
+
+f'&A$-CCk$25"jaU235jJ,-El2BE8QIbTV'ZC'rH@I[C-Z%qMVN@hI0Aa*fA@(A@
+
+5cK0re6[P(@G*q0k`GGlA$pbG1A$Fh-cGTCq0ii6[,[RX[&(IkmVd[!9GkhH)ajH
+
++c)p,2cX[(,JEhr`HI*VlXirL(m@2CjC-G'b,mHP3MEjL-pT[cH3'[+!&EIq@4r$
+
+@!Xqe5il$[m1B8)P(PM3mK+6$*FLB'I!'k#hQM2NNIPPq@Ep`GYcdZ)DMHX+Dhde
+
+4ah$25H4mIZ@mLj1kh*UHQlQiDUl@"(@`-ER6X#E0kk-GF19h[P5A8c9"26CU26a
+
+KDfCpf8QCQ`jiSEI+HQC0Q0Z626U62DiMXri0(CN$5MXb"r*0i"[NQmJhLHpTI*0
+
+,1qM&j,J2CAl%dAHSQpBIr4DK[[#h9jipF2Hm(QTm@qPRU@ffeZaqDRBr1mcpq1Q
+
+j(mhlqp'l[jppjRl[SicSJ6J2@kpXkT9p,6[+08HU,cLC"mfK[I0LI-FdKkhRA6V
+
+UUqHY'(9AjL0iaradZ)KFXjEMFH%fY*cQNc[fBmrd'm1L&Aq*D@*S3+%hpQCZ'6G
+
+hhKrY[#Y,(25ATh0a)8jkpFh4B-pIKV*V4G[1%cdZq9pq)eL0b5RmZ8+Xe+'FT0r
+
+rD94lCrQSGRQ[fKDUmd50#e[,KHaTl)IbRJ02cSa+"kPRVZK*)bqm5ed"[pHq3el
+
+`+1aURA6UNe&AG52HIRIQ4Fp*FFBXf@%0cb&G2-Z"DrXBFbc)hSYGme(MGP!$$rI
+
+B&ck-hK2pfLAKrF(UIKl$P6Vm5#d9AimVf#8Ml+*9ZPH,cjAcGDr'1hUF'Z`mS*N
+
+[HB[Ud,$6@UABA[`ejEBGfB@IH#JDZ'Y'Y&Pli4afAfKmj![1pH6UqGd,9pf20jL
+
+3!(KVY$V-a#lcIi'f"R`Pd9pJhKp`KXiaI2TASN8qI(VhSGZcp%p,UU5DXjpc)HF
+
+Jjk)0Br&CjLfC*4i,66ih56k)Hi(`[1!Y*Up"I8[jm'AHrJ$[k(R%[)0(#(fhQAF
+
+CjR-#H-V8%[bCYfrLc6R&@2#4S,&@m#kRq!lq#24GK(IRmkkQ'ShVGhb*r8$m1[K
+
+1GKpPk81e`0h&iUZ-lphD55p3Aj,[SAQB*"V6f$H1aQ%Ga([Ri$!CR1-acKH5rk*
+
+RHi&e+4fZbqL4[%F2jhd`6RIHM'PmJ')fX-E`S)4cJG8jEelpU`5RNE[#,2VX9KF
+
+8pm4C05Ed84Qc+pIFcZL1kEQ$a8p%lScF`IMim(c22$d'd,p-`N0R20TV5A#DNZ"
+
+,*fhJZjSBZcQhmSAIP54mFL5K@CZ%"pBNI1BNi8FR#9m554Qqi23PYH-PN!#ai+8
+
+e#HqX5C)2jQ-5IVL5`'D5d(T-BKBRi4Fb#9m4L42*$hN'H1FRTi"ipB*r2SrN#Gj
+
+&d[(F)8i5(K`5mFhQ3q-bMVXNcNRim%Y%LcC*HJfH)a-(q$l,qmcR[%GUArLHl`Y
+
+Sd1bfpr#SFqcp&ZXpaeG8DYcr6HDa0'ASAQ-j'U[*iKIAmAB&2D$kYAJ3U3T[P0N
+
+S2%L*jfM(9r,fVIi@IM$qGplNN6"[pFk"1FrheHM@JTG0[ac@pkP`0M%61Cm@%XI
+
+a3ipldBA(fF`PEqb2QfqXYL&hUTK@[HZM*dHi&L[8ki$Ri#jLN!"cEA"0m[RTeFf
+
+*`EI-NpiXJI2Z,YBLQ"Q+!3dIdc2rTbqkqL%lk3Ii"G0qH+AZiS2k90dRV(eXGea
+
+cmS'e&SiHHj&k-b3h%,'-2qmFeGATkJ[45qVTPD,X+,"4q(CaCeaXGf#G@,Im2[(
+
+A$,qQbfarkR1JId**rf3Pr41VYjdTEErZ,GBrCDLh`[AV0KClkVXR$mq4E5r0NFi
+
+Da%m8[S3lPf*aSBdCVhZAkh[$pNE`@qD(d,Q(*hL2q)lAH&(2#-JTAQTj)$h3@he
+
+$58df4me&qb[KmmbddJfjNM28"q68N[B0I('q8IZ!1!TdCYIP5PU*8EIZKT*CiN%
+
+0parLrN29B(KVlLjTcAafh+[((j!!3Q21ZafGhi6U2QB4mJ)hh1MrHX(,q`US)AX
+
+&Zm0&F5e4Vf,K4U0Q(e+p%E0IS'rq4QV-QV+HL(2CmPc*(2@KUV@'(aL[c)ArVbl
+
+%&+3ZiNR&l-UQAM)rmMUMhI[Ua9UjG4VaQcUaVY#22L#H,aNhFJ1ca$p1GMI4aek
+
+4+hQlp'FiVleC*eUASVN+l4EfEQcHN!"lJK`r*$N+*cBZ,AiK-Q31Q"jkPqE#GaV
+
+r3lbp(0`EH)$k3f!peGZ*6r4E@EXEirLFPlLl+1CNXji')dQ4fY@$'iTHZmle2JC
+
+f0H`Z2ZEVRL4RpZ%&T[[UHB2dNHc3*LEV&*Zel![Zejb"m2I*2TBphHfG&(PVjSh
+
+-5Z1RLV[3KAYU3Di@qS9p)E`@a+(f(ZFLr%5!if*dlP$$lVS8`-Y#EMGUEJh4@UN
+
+,BX,lk8mVbFIkI1(XX6ZlfCqFRCeePjeGhcPl8'lqKT+6NjdkAA)pXXZ&MjCkY6p
+
+HM19G[RIrmhB-B8i(DlK*Bj3ApME%F2Dc@hJBhF&bBfeFkd0"p2P&*mFV1*cZP!f
+
+Tm[cG-QHK1pijJd9E0a51,I"Xa9m'Cb4ec[%@HiKUQd4pS5ChrH!amH#jhR,bh2*
+
+dR9a0q[T520C)MYie`hYUFKpq5r%ZiZGjKQPkPfGEhF-'cedH0UME"-mTkQ(MmhX
+
+mE+4@LaF9i9EG@p6[MD6+TPCT2h((Z0KfE2KH-ILEq-bKrdcQbh0A[X3p6qD,pmK
+
+Aq*)'keXZq6*AJlGFM-i*2ADf9Rm[mHiX[I8AUQPSG&!UZikq4r`B9'Ia)L+aHIi
+
+Ip9K9U,r1FAQI+h8aql6d!@E8LQFa6-cNCpCALcIeS5@hI3[-qJYJeM%X'pU3!1!
+
+'J[GA#Xr[(0@J6[dFRLAJGp[l"6P$Vc,lB+eA'VUBJFi2,kcmN!"Tr!)2DGpqqC`
+
+3S4[N*iq![1&Z32l4Rq+2#lQ8qEYaXN23JaGMiA`&jhM1BcNR%#I,iea"R(6H"6c
+
+1+)r$H!R2D9I#(h0Ql"p0I+F1#Dp6VDj0i36c'q$X#&jm+K',&Cd6hY%()$cfj)Z
+
+(BrKhV"Aq!2+"Yk[PkX-*2)B![AS*0FQ+Bb+2i8R-3[2CXrac%XrSC[kTmM*2D$X
+
+Dh4(Kmhj*mh4d)F6l2ZF&cjhc3M3GkF1(qd'2pj--p`EUa&%2+2F8Y#IJrf2jX,H
+
+K0lJ@kTm$(![J"13)YUZQ6YG-+XDc3U(lkbK-CKappHHjcm+m26-1qI"p5I6Trql
+
+M`rVX2HcP3h*G@"FZ'2&rb&`0[r&Zj6RhPC!!Dk[j[hmM9pHMb-%H-VNHlb'6UhV
+
+rHL2AQ)F1m&@bA@1R)[BTLlcS6CXHY&M(5XldL%N28N'*NdGp&,2a[I@jI-Xhl,a
+
+,[89LcS%VCRA'r1*ja1L2qAXIj`jFiVI$(cCFifdY'd+TmS`4eqU4%@0B34q+&PT
+
+R["h2kf#!Kf0UZLjcpFmUaGZPF'I9&jirmqNMYQA&4c(`Z`,4E`L$Ym`BACQMY["
+
+@FAI"%eT$G2r6mBJ(,0J66caEkDi)V5CS%Q!HlJ-c8&mep$'EcKhh%AV)36l'j`5
+
+pHe$I2mpp8&"hYqk#HbZQU#qXkFG@b[ipi9Vi%VHN*kMA6I4LIH-4`UqX[H$HmQP
+
+aR2Xe$R`+hh,XK%f&1'q41#'jSerUMc-[b$Fh(LFpAI82EC5G#hAeCc)REY0Fb-G
+
+&r2!blV(EK#mHM5rUYXPD5qa2V"ppQ1204UeTiqjETElNTq20'[G0!cdJJqHS2X"
+
+VHJcNAA-2%Xd`k[lV$R@"mUl0,S0piq[ikS+rcYh#-praAh8(1!G3DhK-iaaBRlQ
+
+'19$[Fq!ZpRA8Qle2ERK$TrLcb&D[D+E[GqPlp$VjpqDpH#NfIEl,ql`LFr5!p6Q
+
+pYDCcackRMSIa3SAB`&Db6jIB%SYpK2ID4aJpM0NBY8YmlD2f4CQaq1i92RL(2[F
+
+a$B,AqqM(rlZ2$Zm+lTiJ2PI-RJ"qLQFqH`&pR(*2)'qZ20i2N!$[P1HpdiaHp8!
+
+1$Hb,&XciHYfPCeh@ZH*GfbD[Q$Kj&@rZjAYeIR#CHkcCdCYS9Mpi3h4V`5F,CK9
+
+R2AbY8qr*qRPhr,ehF1r3!rNAiAIPThK6q@jSRh)+X@rJ$IKfq6[C3q!p1DqC-h[
+
+P%jb&*pE[$R"8B&L"LI!Eef5T1A)[iJaZRQF[&`pa%B[m-hS6+c,qQfIk(M`'-D,
+
+kSQZ%f`rZK(LM$&Y-m[53!0r8-%ZiDHaCQFR#6q[)phJZQ#AXcf,c[Y326rHf(Z"
+
+)(Ui(FmcYLHkCRLZE"8kH2b0A*KMU-mBpmh,R4a2*$pr,$pr,MmF@2a`[,hZI(fc
+
+,LqFX2l24cac`NkYIIDU$j`@q9jc`[IEbhF1AEq"$0fi(Ar$"i[#L(JH[,3lmfdY
+
+HFI$GiVDB6r8ijPFFI,FiY0MLi,[&`AH,JiF@"pr0apG$,!rjHFM2Xj2jJ[JHL3Q
+
+q@aam0h,5iUK2(,`ed4CP,Z#laBPh#HB-[TX((KcIa`RhG2@m(ZHN0F0*@aKcdU4
+
+RLTlV'Fc8VIkHh1-MlpIDHh)TMljI0$8YA&IrS2L[arPClYP$1rhGpMhjCmJ1iCH
+
+qaKYbL2"'m"ErSePQQ'!&5a,r5r"e*hk'@SIp$)Q1dM,9e3N[JrF'r,"VKX!,Z-b
+
+3!,A'L8Rk"6f5rHbFHhpacT%AHUM'LJdNICQm&mBjKX)KacbEba6"[(!QMl@5Yel
+
+R@[&Gk8GZ4dYL0IiN`-%!TPHi,dpiJ9*2,D,KJRSq'1HDp#A"PX1Pfe8r9,PFL8m
+
+`,qJ"Z#MK!D$[NVl%QcVaeC@$&h"ba)e2P9GlDDPLB,DA-*r)15kDe`2h3(PA`KR
+
+#rP4Xl`5IMR#h#ac(c`kcUaZ-3hL'5chhcb@j)fI"HcD51q+3!+-LH)rN[X4mlR0
+
+I[`G2QN2%8dfLq+Y"E5A2909*@3k@[pam3`Q1M9SB2r[&NkJ4GYf&5@e5Z-X6R!A
+
+[UG&4k(IB!i,VTZ"62KSV3AMAL#@j!&00@'kl8V$JXcBf8e$2ZZaP2U[qi&pQ9BY
+
+U',dfUacIFF08@lqJ5R*)f2PrHVT&G9@3!21l*+H&q1'bh#$a,Z,N1Y6eNa,@@Hm
+
+RC+hh((plm$8)Ed#UTdMrJlB[9h'hLrcpp-fZEZ2q,"VU5r6D4-H#*5IP#VlFehE
+
+I3lcUE)[h@-Zrp0KLeE5b2FEDFTDJVfU,YFi`V6IdPG64m!V"ee[Y04%[I5[`Q#p
+
+qM&&rSrP5k(HB(r%,V*EN2mZ1LhSk["Ik'h4k3MJdm'P1EjS,YRfa)mYH,M9Gr#m
+
+erB6UbTfD'bIkG8(E*f@(*0B*6TfqbBEA)Pk#hU)e+q9-r'i4CrS8@Mrq52@-9mk
+
+jM62f89pQ+RZ8f@eN0YYp#@qTTIl@'GdPmiN4aaej%l9$r4lYDpqNm8HB[c,ZLBJ
+
+(AS8[cCZ8kGdP9AkIiRR-8mm`3m*mfG'i1c+R$TqqNVphaa3`*qC0raNiMa5['2N
+
+rMlBZqlRicJFZ184eCrL@ZM0mqe9rQfjDjpkGR+%hihf-Yjq4YkC13GPM`krYTiM
+
+HqjEGqi%@k6rb@F,eafc,e(p!2C2NQqH+92@@2[d,fkSr(X)bmiMNp)$iY+FR5r@
+
+l+*iM`F%SpCkbR!lXr&lea-Jll5[i5G,D,[ID,KV+br4E#Kj$5hd[+2@liF6-L(Q
+
+3!)La!Hq%PaR26Aa6VT&j`PMFc@T[4LIYhU$m3IMAZMc6F1*'QbX1Mh+HaBI3JXD
+
+RPMle#iLE1A'Lmi%mGpCGDM6$HrP5hMGE2-IE9*hdf*(HjYadGi+Ul"+IRm#eIMd
+
+r2kikLRCqkMj`B+#i$k5EYZA"IF"hhE`'pQUjJbHB!CTVjV*YD,-B$KPhBViMPmA
+
+d[q!)l[X8I3mFPHreEC3,c9jDF1mA+fdqkhj8hS$R3mdjaP9,Da9GXEK08S-+cl9
+
+XfEfMhZT[L[d029BL"rJ+G,MQ6JkTQF-hLACXQXG+iCkaT6ECVp(kJJI,q"F[5q)
+
+QbpiLI"Lh2UaYM#qA[cQVqRYDikM2kB[YA9$1-Db#FhA"YNd$3ceKCZ#`f,1NjLX
+
+lfDjp1)28@2L'6Jh#p!2j6jHj&VrX#KEAdMbR&(Dd[&[9NfR)2@&p@rJ+'X2ah1M
+
+%82c)+rK2@I)'HiVhjN,2Z69IHVpTKRIPNk,e`9l*IQ#-h[fb'aF52iH02j2q%mi
+
+Qjk[1XDJ2Dq-GI21A`C4riFYpk3EPDAdlP,X[VR6P63%lIHH$p"Ha&A#Yk--IqMG
+
+"i3FJYmVB&aIUIM%qka*e9a%ZJHHdjh(hQU0Em!@hC[+P'&mUREm4Ah(HPN9K91H
+
+*dbGfRSLQcrRRGR61HGG'`m84Tj3i)ml3HK",RlpL`B$Jjb02a!2+L&'6m*2L(hH
+
+3!0@$-HQ6U[C5mPNdIf,Q8R)G63kANF1FZHSCDAlpJZSKECZMhQ"4ej)R1lmVI)E
+
+f(H@pc10*`jj)8jcA3ZiMZ,LH"6m`rRM+B"K3(k12%3re,a)ZBUcqmkH(ek%IjHQ
+
+X+INXChr[FH3r*Kak*rT-"d,CaljhEeM`[8I#SZqAKTE[(aFk[RpUb(kr2LcrIMl
+
+dI[qQX1ElpiCehhmNE2K"DGMdJq2#E6mi0@cq3AhSrd%qE2h"6@(l$qi01kM&lZf
+
+PB5HpU&i1Q1q92j@c[l1Qp,0CFSk3!22RbIQVj2Y9m[dDqAk0I,p'[PmMhkq4lpI
+
+)pf[NqcAbIC4m(bAI4mRh8I*pP(`I*Gp(b4IFqGh`jIFqYIZ!MiQZYjP&j$UV&T0
+
+k9%cQ(+rmbJlI`+Uj@0j8-B8hZCdV,Uc-`G&X`EF"rHAeHLS3(dl-k@c,#EN1'2B
+
+d@RV")r#-'PI$8`E25(diXAGcK#G-VT(aib3lG8R89G"B(+Rlhd$e!RG#`crQpjm
+
+F%1[r$EQ)hRQ2pcriAa-0(AL%A6SA2j(-YCrNUVlDa$FDq2q1hlLJme$S%mi[h$4
+
+mV3rcC,b5l9B[[6dkm#0&Fd[RCkVJR(I#*6'cXklJr`Ep0[q-88XljbKQY1-6iiS
+
+H'ilU4iPRXS"UHRGjm*dKjj1DLP'r!jZVel&E3b24D%+1'2+mrNYI3&fHC*!!6p3
+
+rA%Rd(G1babbJ,eh$hq(Z4ri1HXrdcH%FBjkarPpIIkpii$[-18,mj@Kb%4pGb*X
+
+UhP4cekbFfrEGkZN"pr3LA&dEhDrm4qYcN6T0R$Q-&flia8E[QjVRqUE[J9SHVZ-
+
++DN5X[6QTBm6Uq**LqG%krLM1DqC[r6*LCMSl1ZcSGATjYplbGAi!Hf329%Ah$Zm
+
+$iYQ!r3&1)rJdCkRAf2rXf4%eQ"(MAIqV"X+MMpEJV*GUd1(c%$kcfBrB&a!hpBF
+
+HYk-Rmm4r!$LN#i86Ri#@(RB'BJ#,2JZ1)cirfJI@S+fh#%b2pkfm`jYR*6CMLNi
+
+HG%BBPqqjIba#ha3apQK0V1miD*e4$j!!1S%a68#qKblJc"NhK[(lG!'cdG+&MPr
+
+YQ4m)k86,EhHX#hK4'TKV4$ClhNRIf#hajVqrHLladMX[RG,4H@R0j$R8a'S&BYI
+
+D'HI(@1%2SSm!MF"BESLaqcFDJ3[K%V*R9Z""NI9Qh@1p`A[NX9Gf(0Cf)GV(f3F
+
+5%ch'YlI4Bi+Aa8m2(aePmE,,YFrfVX!$K(TiJ!F,Srh#I"%[@A,N@p16fRr%Fda
+
+Ze#mkQ4Zm0#1[EA%rXSD5(qTSHeMfErMEGHUU[EjEik'HV+Aa3C%M16[j"LGU[S*
+
+aQ(`CdpD60F+Eaq+CJCL&eA$mfBr8B`iI8"e@E-!S-[S308L2jj!!UI@ZZ'DF+qE
+
+0CQUj"`lN(YPjEDm*6fGYXAkfpm5EJUNAki2lc,K(E0qC'Ze`Ij*Pe@LkmjhS1X9
+
+UEH++Kd+hEdhml4ir4Ecbh8NGmQjQjdC0V,BRqdjUBfD4c&V8R6ARV+A1j*hN`Y`
+
+BKh2TlJ1CHaR46Xd*Eer4h9`aSVXC%3bMClkfl*Z[hIUEX6PVY6M0V-dDQV9GfT`
+
+lpQYcQVc6pZAp1ie1c!l@QrVEe1CFJIBfFj1CSIdHA,%PT0Eq4qZEf"lblckfqKl
+
+`QQAaS*)R,hVRFrXCY(6*SmlZc+FVhVlJe)QVkU+"9EPSN!$mpfjq3fVm0h,4`1$
+
+imR'$kA,CZc-lm3Cm)Nk2ALLpj42$"0Fqm33`*H"a#5fUm4JhDX$mi4X0$A,Em,l
+
+NbF[9IkA'62UbBmB(0DZ2H"BTHE*&Ge(ZbDihd'!Iplr#F+)eficImR*dhIG@hjb
+
+DcVilL2M8l,&qZHKli,8pf@!@`T($AR(RmpM&B8pVX6TBA3YbY&"IhG(V!acKa%r
+
+,ZEF1$piGh5DjM+6f)d@V"AY(2[-5QKGlbDYDq"`PdDI-TiAkAk%@9*eSRa6P4Se
+
+RrdQDN4XPA0qh'cHCR$,4FL%IL9U9U)(iX%F-Vh"rk3dEIS%2k8hQA9rbD(9AkYE
+
+Dk"IQY@0P#4l'[(Ga,hi[F!mIkYlqfQM!2,Q[,1RRrQqjrl(I`fqEp`(ZaEXPlMG
+
+br`2ZaCmTlYGc$flb2[2f[l,N&ZjIj&kp1+mX@9IG9F+Z[NpjDVKI`IhTh)[A"0`
+
+[iKkkA[Y-KheP5CElBGbV[XI+%V!DEa2hJU[L[TEl$h%[q[HiRmPpK([ari"lH&V
+
+aITKla59APXcPIMRhY[iKlZrKhYDrN!"lH-4pAZX22(0YpI@P'HZCjmeVf-T5I#5
+
+`CjihIC19T8h@-mqEai+9TIK"BFmmEcc9PD95!r6-mcDc9TELeB8pmlc0SC@PFka
+
+RRPH2HVL(aahfc22QBh0P+69Kcca[HV`V5r'j`*jjAVe'i$lEHZCjeD((2A"IpXc
+
+ckRm-pr##bTjjh[bAV5aPEV&RRMHXE@8THJ[XQHI9D`AZrGBcckRA-[6%!HZCjlc
+
+q[LHXCjlcq[XHYjjj6ZX2EVE4[r*A6'@AS"DFDN5pH,PiE$4hGl[fkkETZG)Gc$M
+
+`e-L0prc%qIHBDH6B#cGqe9jZ["G1[$IKaXIahLXFHh,SSG%DKaCX(,UYF@M"HS@
+
+(6irU2&1c"E24*caml!2#d3Fh2JiY@(,MipKc('imGhcNl*9DT2%'-cH1Q4[(c)e
+
+MjXC*IFLh*iFIH*TABM-1Y3'B$c9K`Dq13aXJMKamJhc"h5FhdJZ2hlIZH6eBm!(
+
+j$VY'A4GH8aHLQf8ii3RU8A@6kNT4ebh10-jmYqk,bG`Lm)E-Q`-MHD!Z(AR8l)Z
+
+*0aA9Idkr2P6DShZAi,AleEF+hKEQ0fQIlXPbaXaSYIGleDF1qk`*hmTi[c8V(T'
+
+RKd2))6Pcdh(E-MI$Jja498(rNbHe9Va$dbm"FPMP1BL(FVcG,M8aFCVcAp!hBFN
+
+(G8`@lD@#kd8M!AMX5TN&hJhj2p%B&C)6rAb,,ilTD&&'`UJZFXIE`ZbAY9lV2&I
+
+KXH0G64`6I)KidDm-EhR$YXcA6pb'ARc+-hR!AihfP0R62%ffTiP26,ZR38pBI-T
+
+hlfNmFhml[UF9M*8j"`fQXdXhFdlK[&AVI(ETGZh*$DUpCRVb"GfPm(k0pKVlV1Q
+
+iEI6Y[XbMicB+hK,jpLpld26G(X[MDGd2a!F[pHSLS8&UAArR-A`4LakT9jB1@Ub
+
+IQ$mqR8Fj'Zrq88h&[[U*lSGiQfUl!(3&i9m@mF4lV@JP#YrbTjB(CY##CCqXc,b
+
+QCFJri-aUm9P#REQ9C@@L8B+mK,maIrI9PEC(2(H8l"6FII-[!'qB!$ra2D%-Ap`
+
+j8ri%6XPli#rH!ArhcHT&P[''&lAKpPrNIUaE[mb1IX+h&$%!k,ecApmS(T!!a'p
+
+p26SPd'A!lJrG#PmMQQ4qdG`8[8l`FFaEl!#qdhNE60l'mjDqVq*jH`&[Nj1hI[+
+
+MRJRcJf#ZH+-JacQJrZfMFHLhPhT+j$Z&Z41[aH8pD#%err9'd9F6l9Eb4X96KDG
+
+8ZFR3p@&Fk[JKlJDjUpmL1D9951k5"rQq1+[H+1CXBl4H1FKi`ec-Hq)SLbbHF'P
+
+X22*AbEXkV4K2hV0Hrk9'@KIY#5HhKUMAFNTS+Z4NkRA85jT[GICcbm2"H$,`F!j
+
+bpR11jacNl1HFc0Nh@63!S50$lKRZSIqhlcVH`X0%Hm3j)mFlm5FaHY91H)2`'2&
+
+l'q(0*BXH)'-M4VV%J"G3lJ,dK*iU[P1*9q-ZAI3%*3EH$9i4$TJ-eMEi8[3%2li
+
+3VfN$@Z"[T-XGi[KBfK-kjlal@qFClpV@q@%mTF0IZ[&qQiXhGBpU&G*RqQAefcT
+
+Vi6Uq9HjZE8'RN!#pPp)jjjc+bH#5j%'#Zj@,&U'RmlK4Nel@H!1ZC6KQ`",Bfdm
+
+T[U,mPLM(&II@1hE%mF*emJDFPf6hqC(RR2)FhX",HNB&@Qi1$iBc6rK@`SH",Sp
+
+b[1MT2i9i3FmK%fdZFQC5d1*+cRaYBSASF6&Z5I39a8#1q**R(B36Ll29Ta0G#Cb
+
+YCY`4M!lTp2(`Lr@Np1+deFF,ELVmD0Fh&(ANm1B&a9AEf41L2NqSCA856p@mPU!
+
+EP+!B$h)8IPa2MTpm,NIS@&K2f!Gc4AkE*0qF'd)eqBCURkalSq3!2`Rld)R-fma
+
+-)1rd3#KA2rYEi!p`IXJpp("aRcbB#LGY6aQhZ3(1G!jBmraBNqJdZ*r)KlkA)lA
+
+`9@[H$9EV6fI"lTehTH+p`jrqaYe4bcFHLMUqQBUbhc`Q@[l0'9([0qZL0Gr-4HZ
+
+qH81diCYh4jZqq9"dflG5dHC[J3dr1L2DqUfkD2ZhFY'1Epd32IDYZk1G`XpPhRd
+
+(j0&(3!lr([rrLrdrirlhQ2m@lepLr5E1Vf+FHRrLEHql)fqklf0hj[`YCYkhQ&@
+
+2-fFHCdim6Umr6Xmq6[mp6Mmp6Smm6ZfIS+j28,FRU-d6e1!*mRf#r*iJ*r,H*CF
+
+q!r,S)b#(IirrrmAqRh(rHmarLrF[XAi6jeFa6VdrmEEhhC%hhIHa1h0fZ9AFQG9
+
+r%,P,j0frY2'0lQY@I!aaCqh%KCB-jX"jk1(Bj6jPbTZh0i(9!-!&6K12pX$D601
+
+l*SLQma&1PmP4r(192&QVh1%1$dM!'K&RJq'0bXm(phHIkT8J0qcJ@r%P2dbem0Z
+
+M*r0SMaU29pQ1Q4LX%TVc"Zq629dmEqhlLH4V28BE,qmERr0l&(QBHS16eeA[((N
+
+MpEkf@1rjKbbXl+Aqe-ci8c#b@1hlIX"+Z[%5&m1UF1h,BYG,+ZGl"9M#*Yk)GK,
+
+1-df[ZN,eUZPa`2+`95YIHJ+q"6cR*rU8`U-RCQ[j%V`cEm522RS8f+IF"qRT929
+
+H!N`BGfPqGcTaVPFHq&3im2A`iXN6RkViPr$1d,0VIZ[4T4QHr!VZjXQF3ha`FVk
+
+M("qm!iHXlFIN%IkYEb9U`d!2-R#HHQM5hQMf[PNZHK-iYdL[i0h[FjjAqq6j6lh
+
+B-p61fqkk"$1S`FDAI!Hk2EZ"fHF9IP"*e'QHfDJE!6e$B)-TSJ&Z[*CQqCX-HF1
+
+l`QcdG`AX$rI)`dFXDUqNMlb2icfeKi2ei-ZiSbGkhM&ZLYr42hf'h`@jfb4F'I5
+
+a2dqIi&km0H*Y5[82RCF!A5MUZT4%5p5l$AT"H@JpRUZkZ2[pc'G0QhNll2B,El4
+
+P`)&Zk9a498'MCf@DhLhFN`lriSGiMR'GcfY-Z,VaSVHKrS%0*c6Zp-42BNhX5Gc
+
+`-+S-"hEdYqLK'IY([@Q*dfZNm3+JIUMQ&VL-*Jr42h!elkbA5kRMDrk*EEe8ipl
+
+8brH*1$rN8qQH(ffpbS5MdH(23[DP"HSP)!m2M[6P%khAK`VHk8cpV4qYAp6RX%p
+
+(e-@Ej'%dm4I%IY0X2Vr6+)rQjIeFNPF1@KQ9X8B+qLhQTF[NA1ImaAr1fFheSQG
+
+U@+FjRXUR)aI`GX'MmY*RIYX0EP#1TCPVe%`Q"mV*jc9r3ThjB'l@UAG!0arbpQ`
+
+qah9*l*`XL4DUPY[KZCX"Mb,RU(`B"lHkTE0fB58D8aQQZ`iq"c@D&kP@cd([e%G
+
+LIqE$k2FFL3dG)m3'am4c8+ale10VI,2[Hq9S)m1I`HmGN@J3(HbE)jSkf''599[
+
+bE,`bN!"$VlfG0RkXFMk`ihUqR5NGN!!DLDDea4P+SQdaYdad[ia(M,JKrC,MXmA
+
+`TjVZkHZJ"K[&Uk#C8Ffe6lj6YH1jlpAI+CiaS)rdiMX[PcGjfE[6daDF1fp"r6P
+
+ThY`8mmM&$m@,lca6lXeX8Vph,jlk,RP$hAE-K`aUNmkm"epfZr&M0FCmcBdkC+J
+
+$DQ'a&1iLj%+Hp)-3m`c3Uj1cr*MGmka2[@KAI&-jM(PhTkV4cFN6M4QYFC(ZdDB
+
+2LUSAc$Pe8ehU!p3&ZR2HjED$HeG8`b$&q429G5PfF'q[lHMH$Ga(DTqFUlcmNLG
+
+RR+Je(3U(XNm*2N[Ielq-91MKZiM[FVkYI&IcAFYh2Gq0I$IchFTh'pmGI(IahF2
+
+h@Ei(dUP8'GpN[UPmdrPQmXhQQmZhN!"[-Gp5[ZAT&!ZaYl5FE`VI0,iCkG3SmNJ
+
+JMb"j"-NM5"j"mJL54j!!2),N%552)(N%b514HL45Md6UN8Jp%UP()[9)*)p%mNJ
+
+LMb6b5#+2*2*))SmNmNJLMb6b5#+2*2*)SKj*&r'YjP[$Yij[Q#rk)BPq5+)INZL
+
+(*2SKLAiiQhiiQhkiK2-PFNBG,U%1Pe#(5kM$*G6K%ZT`#A8B44kMb'-8HB`LMc(
+
+N2iEmaj!!raMb(d2qBmKr$2Q2)Imaj$q'r-F3G`aaaa"hM-4&rQ2)I`cjMb([-H3
+
+pKV`[hF&h0pqpI2HP8l2TUl(de9MkDLap0CDq'MZ1E`lI2,j&I%0mbp+TGbcRfm*
+
+h"Gp9I0I`AFGh!pp0I,HN8cAN&b+r%2Q&b'mFqBdM[h(N0ilmaT(I12)E4hlMb'm
+
+FqBdM[h(N0fiqhbUq-rR@mTh(0m)AHBmMlh(N2Bkmaj(h12)H4plMb(XFHBrEbRF
+
+lAq3rM[c(NImimVq-r#mMrm[)rc,b[icm5iKC3X`5BTE3IbAdA`Qp9m)-+'8'P$)
+
+$5TN"TFb!8QC!+6eB5Jq@dS1Pp'!T29K+$jE5JkAdB#Np@%S2PY+$TI4J+6eB5Jq
+
+@dS1Pp'!T29K+$jE5JkAdB#QpAdV[Pj*l+EQAd[ZPj&p+rTH6rjA%ZC)i9a,R5Z*
+
+F5C`VLA-PFDiNcTA%+501'A8USdjPe+Q-1T94Tc,kUBaq+U1IbZLR-[UTM(iUSjr
+
++k+FbqUQ-ILUMRmVSTc,kUBaq+U1IbZLR-RUMM0iSScI+k+FbqUQ-ILUMRmVSTk[
+
+STk[STk[STk[STk[STk[Sjk[Sjk[Sjk[)rbVb[iVmap-RiqQ6mI6*H2TN2(dbRMi
+
+C6jq-Tdr'dbIMkC2ap-PiqZ4pe(8#GCe!A5G3e`R8G3*eR8"G*p"r%qLr#I6I"2+
+
+D3&i6b'X#H8dJV`RN0B'm*T!!e`6bQN"H%mKV!RP0S2mQd(m6k+X*p08%qQS#I6@
+
+"[TT!AdfJVbE39a2)[i,m+mLrJ[`Vb(mL26+4(TP)MdbN4bE5)a2TNBRdb%4kC#)
+
+p-T%HQ8L26+4(*Y%MNqQ4bI6(C2TM-[daQIkB6(p-TMmQdaq6kBp+mUSNTdTbUL5
+
+R5R+U*+G+FUSNTdTbUL5R5R+U*+FTj$5&[TY#AP2)D`Tj65'[+H3eKEbQd1G6k2-
+
+Tp2N8qR`+I6k&2Tp#RdmKebR8F!Vj6L(I+H3lKAbRN!$[&2+G3Vj6b(F+q8iKhbR
+
+NqhlbI6rj[TpmUmLPLPbUb+@+A+V)C5UcC5Sj6bARUH3mPCbR%QFDpCK'2DC4jfR
+
+8H4TcB"UaTK&V'V'Q%@XDXDB4DcThdlQE,RI)EcVj9A1H33icb'%'1F`JKaRN-)-
+
+FCT!!``abQ%(F'F5G3G`C%JpaCe#A'G4P"M@H63r2TSGRdm1ckH(Cc*!!fFb3!0R
+
+-N!$Cc*!!fFb3!0R-N!$Cc*!!fFb3!0R-N!$Cc*!!fFb3!0R-N!$Cc*!!fFb3!0R
+
+-N!$Cc*!!fFb3!0R-N!$Cc*!!fFb3!0R-N!$Cc*!!fFb3!0R-N!$Cc*!!fFb3!0R
+
+-N!$Cc*!!1H3rKrcRN!$r(2+I3rjcb(m1qFmKrcRN2iImjj!!racbRd2qFmKr$[R
+
+2)Imjj$q(r1H3!2mFmTp$rR2)I`ljcb(r1H3rKrcRN!$r(2+I3rjcb(m1qFmKraV
+
+bVb(r'[+[)ImDmUmKraVbVb(r'[+[)ImDmUmKraVbVb(r'[+[)ImDmUmKraVbVb(
+
+r'[+[)ImDmUmKraVbVb(r'[+[)ImDmUmKraVbVb(r-1F`jrR8B6jeQ%mGjP1(qG4
+
+K2R@B6ahQ8iIje'%qGCK2(HC6KrR8B6jeQ%mGjP1(qG4K2R@B6ahQ8iIje'%qGCK
+
+2(HC6KrR8B6jeQ%mGjP1(qG4K2R@B6rlcbAm"q5mJr`AN[i$m&j!!r`,bAd$q#mK
+
+r!IN[)2m&j,q!r"H3!2m#mPp!rJ[)I`(j,b$r"H5rJ2`AN!$r![*I32i,b(m"q5m
+
+Jr`AN[i$m&j!!r`,bAd$q#mLrR[cVbEqHr1[*[jlmkmQrR[cVbEqHr1[*[jlmkmQ
+
+rR[cVbEqHr1[*[jlmkmQrR[cVbEqHr1[*[jlmkmQrR[cVbEqHr1[*[jlmkmQrR[c
+
+Vb4mNGQq@r#2N(b(r#2P(b$p#rK(bMj!!Ii6m)q3I)Im)q8I)2d,q%I+2N!"rK2`
+
+Mj"mKr`Mj4mJr3[i4mSq3!(q%r#2N(b(r#2P(b$p#rK(bEb$r"[*[)2m'mQmJr`E
+
+bEb$r"[*[)2m'mQmJr`EbEb$r"[*[)2m'mQmJr`EbEb$r"[*[)2m'mQmJr`EbEb$
+
+r"[*[)2m'mQmJr`EbEb$r"[*[*2p'mQmNrdEbEb6r4[*[*2p'mQmNrdEbEb6r4[*
+
+[*2p'mQmNrdEbEb6r4[*[*2mQmQYL2fUN$Sh8SC%k0&+(4ZV35"dDU8-MG@JN6L0
+
+eD+31MG5KN6Sd8BFQDY"%$CUS34-eD+)'6G5QL6Sd8BFQkY"%(CUS3a0eD+)16G5
+
+KL6Sd8BFQkY!NG8$q6H6I42j0j0p%rNhNhd6q6H4r&l[KAHb'Gl%EhX8HG4Gle&h
+
+X8AHa4l@b0l@b0l@b0l@b0l@b0l@b0l@b0l@b0l@b'lDb'lDb'lDb'lDb'lDb'lD
+
+b'lC5qeCf`eCf`lZ9(!!-$hPiUCH20clU(%I1#F42S#B*j*!!3&d5b#1"fL53!%X
+
+#p8NJR`4k*)'F%ZL6"2*+S&F5b#e)r41*RdMm41)R8GpNDT0-[FmQPlIaTSJD&I'
+
+ZL$K&a#RLc5KU1SUq'%f1SmPa0$Q1*XI4j$LD(%H6ifKb(%f1SqR*-I6M'(EE-I6
+
+I'2EE-I6Q'2TQ$2djKYiC3iq1SCCMU0ZPj(3T19e+6TH5deMfd2IbjM,HPr#QK,`
+
+Z*imV"6Y"6jI4EfAdp&A%'8q2[SmBlk-r+XKT%[@B4$dQ8Bp*a*dNH!(U-CPD6#D
+
+(bHbjPI4N*AeH5GdVUIX8H[Ipe+D+rTa+cdk624Nlm(6CGr&Z"[d`5llSL9R8B"E
+
+p-)ZHQd@0CT(l,(+H4Fkcb(F@ZFkL&V2SeGRdlh8bPr#QL6F`51VYB3ie-iHDkHP
+
+QCX8YmN8YEL(A@qL[@qL(hqIlFEk,q2i"hdr`A8`H5mPc+ANZTEC,bA8TH5dPcf@
+
+mA8CYPc'r2NP2I*+CpNPUp8PkkC2%[*hDhmkFZTdkhdlqGp%$Ga(R,ZEIAH4r0qr
+
+[*[lGp1EGp1EGp0(Gp0lGc0#lUIFpdkH(JcG2aq*E86LSR(2GG14KFBFhL9A63rN
+
+!jp6Tm((aYS8l$qFXhKhJM(I"jEa0*ZB'[KZRKkHiJkm*m*6`IMRRE,iCI"(6fdp
+
+maYR-I60Rj!JZTbHD3ecNQPJf2BaD`c[NkCABZG14"XHCY8RKE5[hU&&J"qraEAZ
+
+#YmMIq`$IlAbhmAf-A&#A4(*-)PB5ZE94`b!e$C+cKl0R'Zr+qCEa"VR#``BijrL
+
+bcUc$H[*%$H1*pG+MR*&M2,(Mjr1qNLr2L1mK[SIm2,2iSRBHmQhEb4Ia23[ieR+
+
+(fL65&aqMeJGiLi+$aS9[Q#pkc80p[IGaVLB1HLFSHFbNeUKrJY5QKMHSF`,UUIr
+
+KqrrpKa[leml28aUbkC!!$CbhfpPElZGX2qqcXfqZRH-1pA14Rd[p[0(1rKSrQh`
+
+#epNjh[1*[mh1#49q0['$YpJjFC+IUrbmdmj*mrbmbFkRH6kRYGJj1HhREA)Hp51
+
++ZkPBkdYflUepU1k+aR4GHXRLqXCd3pe9%`lQ6IQLZL@ATUpUATUqZ,Ne[E4YmC*
+
+,dR1D,fQ@aq1E@eZ['TpHdTaZ@p6Be*4ZAT*ZAp5B2V1ZAN2MPlbFlb+qbrGQQVb
+
+@lqVNILhIpFRp4VkEq@lPZih[$Vklq1lKqbcI!b'mSSa[0GpN[UPmdbef[q2jCKG
+
+ck6H*Eb(IBVm[h9Z,I[2i9[i1L3%8piVPeV1RHkm2mYNab1r6GDCNT"F[5Cr3G[!
+
+*E5&)2qDRCpHeec@P6er5hYLkK)Y,@eZE@kd2pIf95p[6c4HRcfbmV,R9H[Z$pQ*
+
+Z5eepSm5CfejAIfQkqBV'eSZEQUm-SAeTDhY6BpV$6'YHZU5"E$fK[RPT8m15elG
+
+6JPRYLqZD&PrGQ,kNYDjPdH*kI9rGh0JQcfX@AkTj6@dM8Zh5GRdl5b-M*cc)D'q
+
+@0pFhYkFEPc3[[@54aCRVldE0R6[RAHQpfG3e0kF[@eS[NHBZEQK-Mc[apCVc4#C
+
+8GE2%Q9Yh9IV+4A@5(&jNA,QiI4([*Hl8*9HPaeQmQ43&JqY$G8e,Y8Bh,@RXD'Q
+
+XEfpX5,rqa0I[[CmbI$qIqh'HlC`Pc9HQ&r%e04Y6*kqZ@EbN)9eIedkGkZSZNG(
+
+*Yl2DdR90VBee$9HP'aS*-B2T0EkpZD@&SAVKK!PK4[ciaX8,&cEa#$((,UB$jel
+
+9eYji@ET4@MUI[TMEY[3b'F3FbpFeeLe*RcllY$RRRLDMZ)ilkH@CG3h09e+YD9H
+
+PQjVV'3LB&l@YcI@0$8YE'kP0641cr8B+0d`RKDd2BXbkM+lq%&fKYEbTV6%plqb
+
+ihaM!*-(hQ2Ne9dN)LAmSK%IDM`1Nr,4cQE1H`(*`Bh1kYC(C)[9(c$U+cJ%cP4D
+
+I+d2LdV0QaHPHYl5TII%EkB8CmU+ZG@Ppqq,Q*8b[ef,JM[PH[83kp(VVRBckjL8
+
+0&"H[,q#pQC6bP!2aj!cKX'9YEQbYUfFBIE#j4@GV@ChZ4'MIT("+@PkF`C!!2U-
+
+RK0H`DCfaL5pfS0M[M0lrHcNiB`hI9F0[e[bZM3dlqT0G@hDH`Elc$(l!cN0mRal
+
+LZmq3!!ilRqhllGNpIYjVj`b2Nl(HcfBr(fSl%hjCp#rE-k10JBY10K[)A'pV6rV
+
+NNdr@p[@mRUhi2(E-m`EiBXr-NZMB0E2+q@,Ac+VJLhdcUiS[GXi4,A`aYNCdm!e
+
+,T[KL"mdLF"DlEaDlD"BlD"BlD"BlD*E[ReR-`bcfcLbQB&B6Aq53!#Aa-6[kr2M
+
+&RHEp0hD,RGrV1-PlepSjj2M'Z$&q0Zr(H9q2FcaNh10q0[PFjR1Ja('0%Xq[C+Z
+
+IcI`SA@2RbheR[[a41erTH9`edFpVl2alMZq-pcU8pp[jDSrr2XrcI4jrJVqES$M
+
+1&FApp6VGVY%#0lr"GcHlmAf`T9%@NR'XAV)!iaTS#9D-DiML#E+!BHAfe-RAaZB
+
+kCq+1NChEH@##iRHKI'XZ+FDl4YEdr23*l3H(Fbk3!!MpQ9[pQ9[pQ9YR-XIk-l[
+
+NRF&,qM1VqM1MqM1MqM1MqM1MqM1MqM1IqM1IqM1IqM1Il+qrl[%iBeEeCeEeCmE
+
+e"prT$kEMa(#a(EN([Y2ImChqB$[p`ABkhJ2Rk3r1ip`$lj%c-*rqB$lpQFIpQF9
+
+p4I`b8Q1hK*6q%p+T1BGb[mA[ip1TfN(ZYaE[5mZiImc[Jhkr,C6S(hGA5VbGaIY
+
+5ZGmPZa'f)pbAMH&qMmIhT90K"IF(L[%Z5kG6kE,N2Shl&,",rR'2fHP0MdRUPFT
+
+pKXF,F,q0qmcNrPRZXj,l(G`VRZD9I))52mGE!IG*e$qMQMZIeFYc(rH&(Mq1H(a
+
+IA+a2c8AFKkbD8ZmDlXZ+pjI4AaRc[9kXhbVZUiE[CbEhHGcA*[e6c2fmi[[Ceh'
+
+[5k$8DmkYh#p+iSHiEafqAe[-jh+q'EF1hfmXaJ[Yj(j6%Mq&Hc[IE,jEL[e41Tj
+
+l1`piAmlppZ4p,[FlNrY#lRF2ep21!qE2rVC),ZG&K2YpaIGA-3q'5Zqkp4Tkk0j
+
+k$DhDQmp3@i8PRaVkDDJX`E&lYrqpFTpEl(I2HZi,Nrc+Z$IBUr3$jYR3')2P2HE
+
+*d2R&qrGZi,kk'$p*hYH8@!9a(mHm'mV1lG4l([IKiIF,LrdkRRiCfT[d@cAhbj2
+
+k9("[GaGE$iZaf(VBIBEhklKhjm19c-ZKYaEc'Gr$[6X2j(jV-Tr`(EUpq$k4H6P
+
+d4l&qijN(3amG[RIlII`FlYhq(MFZR6Sfk@qjamlRc'IN2icGVq2HlIFDpSeKm6l
+
+!qU#H`q,jEqpcL[(+GR#2AG(T2mb6B8Qrbr[LT(ma[iECI)rH#aDSmDpLhJq,mAI
+
+HBdFDaXlTj)Gj0#cH2pRIQ&I$fT0qaV`C0M6[X4m0BcGeqKRp2Lc'9(KIaheXrM2
+
+rf$aJrRBI`$cc-Uq'V5rZ8jG*rQZ(mhAhJh%,Z-H1kq5,q6-XCPhBHlXIFRjJ[aS
+
+QmprX9f1NRMZ+qA[B(iBp@Xa[J[6VRU3r'ArIh[Ycf20Y[V2[i$ijQ5I)lac(!13
+
+plpej2iI[1FQmPrIC0YfP(VZicr&qi2dHl[15IX(qFNim$qbpR3HmarjcMZerdAY
+
+h2T65(qI-5rTT1rIZI%LLhmj*jS2Fea6McmP`lmk(FH`rjf55IX8m2DFRk4IX[qH
+
+X',iRAmAXAq2B*miCfJpEZ&mpI1r1Je,kpCa0bEc$[R[1EFQmCIm)IQ$fHpEIR3H
+
+PYh#rVAJr3H+jq-#i4Gc[6ZU&IH#FRF2eI6EC&pJI"rEHCbCi3GRah#FRq@hL2M@
+
+jalk61@Ei2M1T&lkC0Kqd(Xc(h3pUQ2HCdj2m-BmcirkhpfA*[-GqRjRXJf2SKm`
+
+&aIY%qM-cf3GUYR$[cRq2h,[p2Qi0pmh$phEqH`e2b8cf`d6QDfE5liR-Ym`056q
+
+chZkqPmKqP#RchH)IV)r&KfaqERrAJ)GN*[dpH5,h"Zq5r3Ec+K2FbjR(V2rZj"l
+
+lBLDBQ(12qC!!QHcr%XpLC5EHm'3IQ,1@HhFIP(Z$"GTmKLIcI`lcIhLblmpK[aJ
+
+16ZMFSpq'eb6hk*IKbAihKreMH$+rjp!I`j2p[S,pDRM5cfAXfm16q9ffPAYJkmi
+
+qJRiER[4h'I["m'`bIjM[`Z+q9X&hH-bjX2AMI$IcGbcia2!eb6c#rM!mQHpb$aj
+
+(4cahRSm([aSHplZpIbbT*qE0F1P[LqHJriF2p6Il)GEIl"rZqlDH`#1'flk[ppM
+
+Icbe,jLrUFfk#jj5bhjjE@E`[kHIHiRqFIdAFZrfG*2'bNrR'I',i(YqlqlfmGrX
+
+pLIhPh'4q*c(2cahDel$2R6ZdVk%rcNh`QaVkpGb1T(ma$mj0pV-+qZ9F-'BEcdX
+
+rR,ZQL$GjjEhL09T[c)YcKrCcl%IRaYa#@aqhIdZCIqFQH)h%Xrh-r4EcjY`Bhq@
+
+m"MjiEMbrq4ll`VQ#emAUZb[T&q"MjbEi63hcjebi*Fim3h`3bU,l*[#lmf4Haqj
+
+6N[f@m9cm4ZkcL[I[[Bhlh+5Hf%I25rTAlN-*2JcmjVaNrhi[qppj&b9i,ElR*AM
+
+V(2VK[*EKHhFHec!2cN[`P4Vf`I15q6U(II#mG8Prm(eX[d)rRTIJ+6AJ"qFPrCR
+
+%I$J[fDH5f(I15r#d1I6[HFQq2)Iq1br"6qH`(i2Mima6Vpbc(qem"jjXak2d#r)
+
+MpkIMhYfICP-[m)#Lm`6l2MP!cMc(rJF1823plphp@0i62irPirEVHjRI@FQqI"A
+
+iAYE3[Jcm)5[HPi&PHCLh@3Z5I4hc!2bLcR[Z8fDqN!#[!0j4G(r'2-l+&Zqpp'I
+
+@mZ,pPH`V@82l&2D4V'4I(Lreere*m[9)2GFQI!E-lka05AqMAl15H6bEr5FVkIH
+
+V`&qb"$qhp9l)[EYI5IlNMYMqaAc1L[%caQFrZr2i+RR[cZ1Vf)Hb%VaN![Q252"
+
+8,r8CNI6r(1El#1Pr1jq"2ip)j[%ikM-L2A`IfkI4(b1'pL[Xeb15I6U*H6FL`8m
+
+Vf@G'c%[ZJDq152J3PBpalq*IPFacm0#Lpm"24b6cH!ScBJ3m3T[[&2$1%3Qq239
+
+mFi6XZrBHH-5)K1m`*CjYd9rFI1I,9bJ[rAbHJ-,NHD0mFEJ3YZYe`[[%rB@0PiF
+
+*ISRcKaFf'K'2D9cBeYLqm')lAl1i9EQJ[*X&qCA[hmDAMA)4hi[jAX)A2&CK5%e
+
+GdK$U@PUDK(XeYE9H[R9e%+HQ`YI80cKMkj3c!NpYUeqm@0l0AE6iBK+G"[@C1I*
+
+mEDY`U24ZEK-4CM6S[ZVH-hA2`ND)[60Dr(a*N!$D6EZi,5b%Z$YY-HNcKeRYX,,
+
+N,#4ER1I*a65bR3EU-@eTkf,K`H,--Z(XP0kj)f%CGmLm6Xjec8[)@Fl)qF103BR
+
+'L$&p8CfNk+P[JK0XcMHfeEFfdKpb9pIB)BP0EfT@`ZjdHK#-f,V'*CULh-eDBRc
+
+SkFdY9p'f1-rPHp-5MBXSdlQB[V5e6@US*'CleKiaGp)IeBX[[VLaYA'*X-Z9dc`
+
+M5+eR`-(PHjiYN@h'C5hYdTpb4[3Cc4GV2MK,,M0DfPS@Nrb-bjI@08NFRKN(GCM
+
+4+QaQ18YGj@`5!jFGhqZe[M0D@jVN!QGcVm4R-,Xp&e1ADka8(N),(Q8Ed6BKZac
+
+NH*jP(Z&mFeeV3lMBjaGDhh2adUBQEcQj-bhRZD5Hl`H0)hiYr'J@peUBJH!J5jh
+
+0RG4k*S4"XVmKUL"[Cm*b9LiqlMjiQIE,6,+DaEbCGA&MNa3GVFE[9,RN3-2h4ZP
+
+NX*`pmIbFdbJG*QI*XkCZBD-8@JB,cc0N%[)mYdd#mFa!KTBYChQ(Xla$M@ZDka6
+
+Ei9ND91j!,jIcY@q@43GL!M0DkkdhDlaADRcZe[#9G3#*b4Q*A9GRZJ%J8dk6rYC
+
+cVCm[#A$IEj)'[UkjB@N6(A9G-`6d@JB9IYIAAFC%eM0Va$-IAYrF%*r0*1,GMBd
+
+AYcDfbHcNN!#qIURPUHG,JY5%b`AfLKNbbhP(-LIcj0e0,3hdV0lGh%UAm4hUC6H
+
+DfVUQaRCHe6+&qEB@VVLF-3YUbD+@5i5HhYaNr(YQ#Dkk28Z[QM[T9pcC%FFlP"q
+
+jc9M58LG0VQpUkdMi4[T55S9Ka@LiQiY'!mmh59+ehY"b4P28dN0XReTkS&CkP@r
+
+0M+TYi3dH1,)!H16FS5UiNq3GbVqm0hIbhY`acaYT@)b)fUAF!B'iB@Pcqf+@$pE
+
+ZaVU'H'AM(GF1RX'YjaNpJ!PfBpf9mGVQBFA$Gfk3!(kdHiqpBjrcMSANfFi[hV(
+
+120rFc1#@0cS"EQbmM$D5N!#mNqUMQ(Eei4d'0-qf'VLEGBQ-B8mV`mkXM*j@LA(
+
+6%[RDYZFGFS4+!Hp!mTf,cJVIm@aR*RD'QjD`a6(LA(V#V#+iUj0e8XlZDXTlZiE
+
+aML0-cQCei*f-ICb[UfZp"'%%H@0(NYbKKH4X4j!!hMNMa0c,k*!!1rBNcM)#cGQ
+
+qXHAMR4f&cKf$i%i`I*kjk1)XqkiSamLCLL0kjZ56-qB(chEhi6#Bbp"LYPb`jPi
+
+ZhBChV!&ZS&q#eY6p!US5-MpjVQAT*1eIlQpDL%3%@S3jfM[QHG0P!DN16hZMc3U
+
+lYr&XplQk4DE*85Hk'6aMEQ)*PeVA0FXU1$Hd)`r""h*'Sh+qBV%e'L1kjGmNQKI
+
+)(k0&SYe%KHaqG(1GlFBh-ibBT*e62,1!2(-CZ"Qp&APR'mcHB5#`lb3m4S$d$9Y
+
+qA[[&V2If6TVDhY9GC6Zi%eGE2RU2MVfqm8VJJER0%NQdANb$h0KibG)Q4aE!E*q
+
+ea(H1dV2IFIDFdfIU1A6D(-8V,jeeqVbcc`RKr8M-m,lmY$2eA6PpChGMfkHbHjN
+
+p#RepBcZELpfIZ'YHhlbiE6&SMq`I0bpZD&r8*%Z*hPFhYX6hf2'Ke`(-!Zdeka,
+
+Cq"5R`(Q')!c4r4Ni!#DVa348FS9pAG[%(L9iJ-@YY&++2a(I`XF$BLK+%EU"Xrm
+
+94m&,B'NMi"q-Z)d[H)%Mi!U0J"mm!Nac",ch%@#C)m![4m!"(!&2C!4FJK(`3dE
+
+!#4N"cfF%h*i4m0p(J&'2J0G$G1emq!(RJdQH$krrI,$)mq(cRBmHaIR`H-i(RcX
+
+I6Rm#l`E&1(1IfEm%j[JJC[HJ4,rX2m3J[lJ&VPYIjIUX9IICHHSX2j[lDDj,2fh
+
+3cY2pAEATVN*ZdK-1J`0a&MbQXq""R!82iLcR-*d&pImXG!623M[`V&KIU!q)AdC
+
+U1RST4@JX&D&$926!&%M2(faD[&$HjJZ"QcadBHIKASq1GJLqe*8!Kk[[L$kqaR9
+
+aVh'GhQYGKrPDeEZGd0K8$rfFSYLM'eX[E@aU[%Up!'3)jiqLfVN6IPr5S!ifYE5
+
+[@pV@RPiSUY`a6A#'TkEiPHI0Qh[H[$5Uh12RR6hAP1VpD&R(`BF,b0R9Jif,pE(
+
+X2IKaFA$LiQ)GV$iXINAKi-haprr0i1cT[qVAfDkl!8e024XGj$Q2fEPQ[TpEr'c
+
+HAqIcqMVA1ll1hefrbFiI$(DZG9m*0lSZFjhVG)GpMSG[YI0mpld`hr@hjkX1b(Y
+
+266FXEUZ$E&q0h[TiFCF`kl+@jPCSZR8B6+LV5m2Ac@MX@0aqM(CrdJ9eV6")Vjf
+
+5IPT4Q8-$$11-5qTD&pCGJRlp"jZD811h$JI1G$f6-p(a2"-YU$24-cQ6'A)QZX0
+
+R`Vmm%rlPQI![ci4rH5DFbc1C-@FbAmk%FhNQXq9-1*GR-P21K(0j*M2P6$LA!q"
+
+6RXQ-1421C5Uc1T8jRFTZNXTZNXTZNXTZNXTZ-N$ZMAj,+[Y*+[Y*+[TLUEkMT++
+
+&P4VVAr9jm%Z&TjS+fc89rFY80#p6BpfX[L4qFFYFQl[H[9!dq-lBi&VF6Eic0TI
+
+CHD&lU,M029$Fj[&[mahbpa[mE$a9r,jVIArFCq2(98ZFrJU+$X)2`"8cccl[V&P
+
+KlMQRRbRPJ"+GjeKGc%jRETc1h1J(LldIIG32GR!rHUPIV$hApHXAD`Vc$KVrrG"
+
+%kXIFk1HcU&qLdpq2@G3[eY6K2@C42rD"IR#!qlQ@86pQ86rQ8,pB#kl2KcjGj2f
+
+cb'Ik)YG@Aq6H-aCjRrh"4AifrEcBGmM&ZNX-Ec[KK"Ba+H%TSpjqH-pqDZjR"[Z
+
+TZjmCl+IZIQD`RpS(q5Db%bFL'j+)TP8LL53baa,TVcMk)SlqLS-(cGAC(fXbZ6m
+
+rZl@IZ5ehf%,pj1%[L(Re&G&A,EkE,I&jYG5el*Hj"[eblkG2qQjfZprIXFM1+jV
+
+mE(D`&Dj0IfI'cTrbZINTIrmTlpHlI%kfHPkY2PI[pKh[(XpVTEpIjARGLjLCR%d
+
+qphUIhqGeHm$lr3(2l`'Ic`miY[1(ar[Cc2R26,2cIkUdmaqT0a&2k5eHYl8qjpG
+
+kAIlBhhr@pi,2D[pB,b-2qlREbiMpM@%#F&$Emh"X1``rDF**d2ha1h[B1m2Cc1L
+
+cQFebKkbJkqj"ZpdcPKN&MAE2@'E3f@4k0M0)h#4J"N&VhC0QjU!G21LQHd3ERAV
+
+S'Ekh3q[FJlkj"dec$cVQ(V6,2HL9GrbJ9qi4MI)-jKbe[$2B*6,B)c,B)6+S83C
+
+ebD!Zd"RhL*Bip--pUKPZik-fd!M[)f+qrDPM#jrcZI0R0ZINlCrjcVCHr6TFXZT
+
+(XfmmjiH[jVl1hMhN-fH6jl$*FB90+raXCYBQpiA`X1-H$rYXI0MaL%FF[hM%Cp-
+
+MlYIJ%FG"([(CmSMlKrLbcl)[qqclXZmqAhBmj-YHbmeHPmeHPmdq%cH[ml2"8El
+
+LqIqPqhIj5hrh9cl,rmThJ%FpcPD[hpGp*RlGF"[cXl1Yk2aNjH6p0ACIG)@IcA[
+
+RhGLplbjaPFU(r'arGSCfqi2TIQGRD1pXlE[Kh2Yl2HjJha8(ZkEGB*RIQ,f$L6!
+
+BE'F`Z-jJ-*dKS!5$AE0q-,M1B$#G`I)'1-&J-),"i#f$f9-(JlF-"[XC$!ie'#a
+
+K-2M6B,#R`H"1JpPp"l2h$QER(Fbq1aLmD6"Bdf!`TX&J6%0BDSH!-3d"BaS#TM3
+
+%M-RqKS!e$D%H3kM(%+Q(UF83DM(NGdTiPrQ'BcKrlA2dEa`[r&[IlIl@I9AmRHq
+
+)IqGq+[l"GlcY(QHlli$EIDImYXrIlrMmrBl2hhmXq2Z)eZ#llLhMZll2IXmal1p
+
+j,VYm$phPZArIGir[qllk!krC2rQqZGYRp'lI2Clb'If8la)rp"hNKli,r-Mhm$h
+
+qrKQ[ac2qlKRI#CkYY[22hH['chdRH+l+cmE6b(0HVhhH1rZmELriA[k#BlclIII
+
+CllM-!Dr6!DYMhfbrZ%((lPlb'GAZ'&1lc3TrX$RU$cCEr#QE3Ii5Qd(q%TY"rK+
+
+E3Ii$E-Ej$e!-L)CCU*N%Cbe'pM%*IcGc'X9U#b%rek)30*-bJ&i3,3Rm"4Y60%j
+
+5Q#X#EEbm5+mpFd9p64r,Jq%La93lS9d%TkLl&I9#!Q%Z+2"PL*!!*(JN9NY5a1!
+
+kiL!-L!Da+-2E4*9Uc0PRc6[YV(RRbVf8#9j1-S5eNe&h4GeLp"&V'L%B((a$Td[
+
+$@j4kF-%ES5I-%"8SrSV!IBVBdBV!IND#hiaN$a`jl)9N*$ZKR)dQp8Kf`j(XKL2
+
+C$6[LB%mFbCiiNMha)[E+N5pbA8Db3ijNKmb2GGlabarQ&H@c9qDclqDc@aDa3qE
+
+6[IRXZrRXZ[R8,CqDjB09jB09jB09jB09jB09jB09jB02jG2iqH"6qHc(qG3f(f`
+
+Uhr'cI2#TI2#TI&##I0IUc3HMbJHMbJGYb!HEbJI&b!Fh+q"Y!EKC!EKC!I8SS!i
+
+&e+')h!YF&lH!HPc%cRZ4FlmZSUFZSQBAXIGHj,b+LpKl,f)([iJGr#)Q`dAXi"I
+
+p$J[[0"N((6cZ&2ZpGGQ*lhl2'dpkdpZRRAcX491QCP6E%Er"30U+5rR,I3iRQYm
+
+G[rZqmKrNFaZDkhV@(G0rU1h0rPIi21pRFprr5T[hrPFDImIr+SpcKZ&DrJVE4If
+
+[YYh8rfpXIrHra[-kdrCZIkAYQ[j+`lRmPBDrq3qc2GerQ1m(CpQ1l(qYefGJI$E
+
+j$r,l3ECVqimdR-"rT1hrrM''#rL2-PpErV'fYrM6A[m-VFI`*RD1R!P[ILYLI*f
+
+l3ZI1i3P9c+9"c*ddCP%Dmc50HCV'2%eMPUBa-p1BQ31CQ31CP31CM`1CM3-GGaR
+
+)r"R)r"R)l"R)l"R)l"QBm!i(-Rm'-Rm'-Rm'-Rm'-Rm'-Rm'-UX(JJ%0P0``r`F
+
+br`Fbm`Fbl`Hk,ib"c2Z"bE`I5'd'$R2F"P+RJG4T)(AU%q,R2mD`8[qaKURkMc9
+
+maAqXm3(maaQHi6rHCmK`ReARHZqHlc2LVIlZ!X0%r4--qr5mNKfJ(cZ(m'r)[F(
+
+1%H2BR%irNQI$Rh"YV)Cecirm'r*ZR([-![*ZqRcB!lcA`K@p"Fhm@rEZHrihH6r
+
+N'%iP[c1AFkriN!$rEAl1-cc*rhEI%5lf'AUa[lr8qh+XBZhFYC-`5m9G9Id!H3)
+
+JY'FCA`apMaXeik`dI*SdCQ%DZeNDmc#0r5b0Q3Ji`&0&2kE4SfRXD!2Ccp+BM@Q
+
+aERh2,ifG-LhfLX"ll*CTVP@I&RZk1")A-b"YQ#24Km-[`IScY!H6aleLqIiDhkA
+
+''GlQ2m0hPe,(9#ihr0&rTR%+r'FDMmTrPQ-X9hLm+hcRZY*hT#YpKbXc2-q2EVf
+
+HcFlfHjlAlrPZ0Gj`5Nm3XcGhmVfDljZircVIfrKHbRF)FFcmKZm12CZmbhdh,2F
+
+kA@fm(IrjaSh`RqpcjhdqlbGiR5S-2r@rbr,hAqJBd@6MH[J[mYebL[I,q`eIpEr
+
+2pi!2q#jBjEYVPEqVmRNfeHVJ5DRRJ1!lLNE6hMcZM92(c48kk(MdX@ZjSrMRfe4
+
+6p"hbGP4p28UJ'DFCm$-'+h2A0VDpDFE8F6JAQpk)4lD1KjjAl'%e8kpCYBfYk,)
+
+99,l*2)@"fkZr8cb$)rkJP'XJI!(b$FJC`$j$hX"!GK6ZL32"8JD#TA"2(-`Z-j!
+
+!(ABJH-TE5(XJQ-V!IqEl$'6r(HKq)`EjQd(-qN'L$iVj2SMC2SKD$+*DJjMRJmK
+
+[%$0l%(ddL&NpL$NpL(NmL0eV%,8D4*d'8Bp"l&D$C,p'[3C4Ud(8DK!e'N50"L8
+
+-Nd(8L6[i)+r"@q5,r0p#rQmKrlH3!2pEb2mYj2q@Aqm6I5,mr!Yp(NlhIADkcl2
+
+TKV[l6D[J4KMq0b[,hdF2q(MS+hK`d*q2[[(40clf'0m)Kl4[KEV1X$hEhqMcGBE
+
+AmaVI1fGkh@ICI0DJU*ZIA[Fc$rc-!cmepP0A2hAerkk)rFcrIYpRi*Y%cM!L+1I
+
+VI"qjc[HRklh1J)[NA'Xm42rP[JIGk0MEA-HLE[,pTmlQJ2b5kI9NqZ#df,q(qdY
+
+QKK&b6IBp1TRjPXam`jVQ1C6CPXaX5fDf*LIlF*m2VB1rTq`+af[Q1IB@pMkTpcd
+
+YSRe#Af+RF(IrCI`NXb4Q4",iefRFR8D5LH`(Tp%ATp%JTdRrB0p*C#G)G+`id6R
+
+3LH`1LF)"lJZ#bqM2'VkLXXjp3IcH%3j1TaShS4ML$r$B299"2*ZJ6JdqYaZpAaX
+
+GJfhbqkBRl0cXmlrCFD0EI(qraE3qr"r`2IeM(RqKia-,(AGBk&M`EAkr5,(JK))
+
+U1)!5G,hhr9bNmar#0l0m3[cmLU9Rr8*Lk)PeZmraNIXphprhI$rKGIZNefHCcr1
+
+P2XF0lpQraR'81raqUID"pG!fr,Lf#8La5+UCjb&LrVB,T`)*M&RDrUEj8dr&h-6
+
+E6Tdk&pm,-pjdrY46a4X&5d)m!1IiGbjGh2kQG`+Kk@!E-!2[Lh9l08q3!)`R"8,
+
+fYSrpCIGM+qrZrT,Peh4'IQ(q%P*X1LIIPRXh56CGPAYhIMj[hMGejGdIqCL@rT2
+
+I@5P3A2c+dcrqCI)-jY[cdr1RjMqLMcpVHdJerbfTmD&X[H-mIqJikRhH*hqZ1-f
+
+!&U`&c%frhK`9RLFk'468m,`Lrq(mHpqBlq[qQL6*[&BkRR5Ride,I-qjar[2m,l
+
+pkramPqm&KYFYY9RYXqB"hBRkkCXeM[qXm6lp6mijq$1I0qYp$e[[XIq6mB(p'ad
+
+2rL22pimFArjM`iP+3mIVArAk9e%2-jpDIIlFlAAjFpY62'pMThSh@)4`@)$9[jY
+
+GiphX&HrfRH,Gl"6[CUGiYqm8lfE[H$IlfhXNYUXKm"lfYIH`Vlf(IHdpc2cha"j
+
+0q,B[#&cLd1q`rN&I&$r,AAEjqGaD6[cJ-ZAcMVemhRI5,rJZrJA("$FkK['Jme'
+
+qj$2PBGmG(RBXi"'2rfAM32V[p9eSXmqLVrU1mDM(rlTMUBpjRYXmrYplr,rhq0r
+
+d@IG0hdRq`@HdiE&#dN,2MrZlaahEI0aRjH-q`jl`(@D(jr9YaekrlAPpac(ARIl
+
+qZpi(hr8C[X[2hrGCDMLVrVrbr(BlIfDhlhDl2GmIq5l`)mpVMr0ipRMF(mGR8mq
+
+IH$eri[hb%m2#rArVHIh%irh%ichYGAMDGi#R2GqRIFE[GHaPVrIVASrlM'-achM
+
+rrY4ha*mjjQdiXriR()2qZFFhA&RrclerR[IqfHIpmS,[*#mkY['5lm"Y[NZe16E
+
+GjR9UGmblhHC%3!J3FYEm!LRVKd$+kKXSX6i,i%e0cmUA#VJIf-!SUeqJh,$Z!*l
+
+jj(bDcDr!S4k[Rr@AqBfDd2-bFEHEcpph""rrIjk,IXrU@15XI%I2`1JEr&B(i1*
+
+0ArrjZLrpj+2arCImhZE6qlkl[rS1d#ASeLETqk#2IUZ&mMrck(ZKRVejple3Kci
+
+3jPr2R$ZSmf(1pYHY#r,[qKPpIr44hbIRi6![ATXPLFIXQRI1DA-,Xm2FGq-ac[Z
+
+Z1%AUXZE3M1f1mp[CmZme&hqM02%lEE'#ZR)r$9Brc4M"Q!e&8)CMD'EildqBG(%
+
+k1E&@6dHk)8mNNH%0D6lAi8#PVPQiMaPUKJQHCfB+MD%'(m-`!!0'2pr'B[%'(lV
+
+-2A'TAQ*TMZEDK@UUKJqZ&D-hZ(JE"!UiIESa2CN)P#qN)aHmHlX%C2cTG5hT`ZA
+
+XjX9,d$iB,J3hq$QPEK9qPbjT1,AjXX[%XT2NbMHMa4-1G"0(0hF35+SK(kNKIQ1
+
+%V3(R`!*F[f2ZZHNh6hMce,5!i1*J*q20NbHrEAckr#DXiebhZ$8p%fA'DaZEhZr
+
+jPBZ*'#f!h!qGHqiECc3d,famiqp0Q*JqEHkjXq8LfLr44KL",fJB$)keP2C#aK[
+
+I5Te[p-i5IJ@-f(a3&#'kfT-jQAi3Nbrb4Q-P5A+e9#T*qq,+f8jPV3#VV3!(VJ!
+
+AVS"V8`(IT!,H8JAXK!Ti5aA`Y5Z!q5[JDeF`%Di",kk!Yrd%Nki#MYYN1(N9mJ9
+
+(T3)qASAV0e6!iDk!`ed4Hh[N'r#i+a)HE`8mlJTih"9`Yb[JEPI!hDk!"c-4$Xa
+
+%Z#m6B3a-K%ml%Blj42M-%a0r,K1Tf84ijK2KQ8q%Cck4N6B4I[P%kM@4HNfNAK1
+
+Tdd4U-p(p9%qN2K1Tcd4U-j(D6+3f%kR*4'SbN9T-T"B6UF9%DM'4@NbN&T-5MBK
+
+*e'350CP%65C4NdR8C")eQH4kPT1Sab6U-BPk6+)HNkM(*1SaLAT-SKk6U-FNkM'
+
+*HNbL&T1Sa54U-BPD6+)@NkM&*'SaL9T-SKD6U-8NDM'*@NbL&T1Ta@4U-*ND6+B
+
+'NkR"C'S`Q4T-TJD6bAmbq8mQrmRN[d0L'5h0bG4K-R@B6"dQrbi)hBH83kEa,3S
+
+9CCcpXrL@mLhR@mQhQQm0hcUqBH+%1$H(#RaVTj5Yi,ZF0cbhmPh0GbhIpEc"1rm
+
+GR2PQ-pqYI,IahF&h&pmpI*rPHb"8(&$'0jN[FMVY0XlTI$2jC[20jBZk"+K,J,S
+
+%U%Z!ZJ5S5i#k"+K,J,S%U%Q!1J6)1d!YNL82j"kJ([$JRA,S$Zj3&hMa6MQ!ZJ5
+
+S5B#D"+K*J2F"HBHD"+K*J*V%8j0iDK*26H+T4cceL+FHmG3MRRV%8ipikK&22H+
+
+T4cceL+FHmG3MRRV%8ipikK&22H"E0q8eI+("QS*'G-VKa"dJHD&1mG3SRKV&8aY
+
+`@92`cj)#Rc8&rcXTSmPc%(N1NMa4XhKU&Nr0iUPC2$@,TfEae#bHQX96X`4UPN$
+
+0i-8PC43e5k"Q#H563#i*j**!,JRNNN$0%UKC!M9,S'B*e#b"QL93X`4UPN$0%UK
+
+0!V9*S$B*e#D"r"2)2i(m%mJrJI`6b$q"r"2)2i(mJq3I*2mJq3I*2dMq3I)2NRq
+
+3!2b$j"mNrb$j"mNr52j"mJq5Ij!!r)2N(b6r)2N(b6p)rN(b$dT[)1FJ03K5Jb!
+
+e#-SpDK#N"N&U%+3'3@U3!%J0%UP")M9)T!D*e##4'L45Jd6T*q5H5"d5U81Lh+%
+
+1LG3KN6SN8SIdGCa4#fKhTS`Khd6UN8Jp%UP()[9)T"k*e#0GFZ9le'1`j)LD*&)
+
+6F+06$U)ZTr(Q02SiNISN8Tp%kM0i,Ypjh#&f%R9+SNj*e#Q*1L84,iNk*9'R*1U
+
+84)f5U&%5p8QL2NR8*iRk*&'E*'U64&f5U%X5G8QL,NR8F["bcUK2%[9*SMC*e#D
+
+*ZS#VRA)`Y8QL,NR8)iPk*&%2m"a6i$LQ`'e-184Q,qS!rl!TH)*01BEj1C3Fi2F
+
+e"3q[+FF3#ejF8ikYjSYFKaPR12"Uid8%rSha8!+[-9j&i$$M2J9HDcb)3*Aa(!*
+
+9aPF)9"Rh,9"Pr)Y!PA'N!NIiZi('S`L-0Rj(B,6a,!*('JmPF+4aJ!0MR(q3!'k
+
+mPm"4cQmBl(%(QmC"i'MM*`51pRUFlIb)$10E")iahNIJ'11C")jeRS24$!NFDhb
+
+9`,'Hrc#[pc$2HjM(2FIc2mGi')(MR%GaMR(J!XFj$q-FVrXjcUXi*ij[kTlT[)e
+
+-iiN%6R"qaR$Mq34HChU6JA%HIi6AkDfQj4"iJpIVV9kIYh[r[02MjAVqZ9lrGhR
+
+mGhRr[FZiGB'hqIXmibd&*R[p4hSqqGjRqGi2qGl("Cj2JFq$!Up$SI&C!Y1m2S@
+
+QMaQBj[@rb-mAHpa,['p(HGa4AYp42Np'H4q2mViHlAdlf[-IEAbR`%b[pqJiM[*
+
+S!UIk2"VMFk,BH$U"@FCP$*cQlmGkhQ1G0c2@kcE@kreHdk!)[-2i6)&hq2[h'Qm
+
+Rm!lM+`9UI!k%[!rKD9M1aNpfi(6[[h%q2mGj2eaQ[+2!'IkZa1YFi[eBBRb[3+h
+
+hEBRA"4jAp@cQ*$bhkYRN@HTp!@r)HPC1Bq"-lrFVr*h4q!LFjAecTGqA'HmTm%l
+
+M93A1mAiGErbP`,NqTmZpcPGlhGrRr6("qh5#ef1#cl8+Rhm9AXq*RZG%chq5pr9
+
+Nlm[*2MFV[El[prJIm(kGkR'QHAj''b(3i(e9lIdj`rP1ehKpVr9kAZ[[C[VFQZ9
+
+aCrNmRZAjcrEk`MZcR'Zm2ie1I@#*crm2HTdqk21pe[ZXe[11H*dD[%i0TNN5k2C
+
+k0[VmEI,piQ2H$arc2$rQIEI3meTK[,2!*l`[l[4khZRa2Z9erC62m8pj[,Zm(RI
+
+j2'ReHGMUmHrfr1lf1YlMFfQPalr(kh12cr0lI0kXp,UZp,QedZZlbZI[+Urc+Tr
+
+,Urcp[Clh[9lIqhbZh1rclAkI*iDE(EM*klEDpj69cPYElA2N!ArhJ1IlJ0IP!Bq
+
+rc[[d$YZ$C1GGX9G2*h#icJ*ifjr4UJlYVd&XEiBi'CmlAK8'j%*FhK2CcM,Hmem
+
+ClhP,c(ZQ$62Z[C,hm+D,6e$[j*Bh!H4`q#P0$I))jj[Nl)er2[NjYml2AllhPe,
+
+iQ3G9qLYkpUI[9qN[mZb2VdpaBIY#q!91d0Pemm)hL!FpF4**Y88qK5ELKC2S'BV
+
+@AAhUc$RKJ0IlR,V3piJ,ICqq`2HeYr[qNU2clb4jdIhe24$R2`i*[kl9mppqR[*
+
+$rr%A2&KqLIrIhmRNqS5S[qIr9IprDi@q$qVrlcrrlhEipIe5Ic4!4QSPhRSAijR
+
+h&ppkrm9UGk&rIrP$$["![4MI[S[a9V`B[lk,mFLm'0r%Lr&Z["Lrb)[aj,aiiVi
+
+mar#pqY`C3F`'aYQGq##J!+jpBhhmMQZ[8fqppYfiHA1d2$caRM'Z%2qK0cCKkQ9
+
+Z)Fi9FpkK1Be0BNXXHUG&3NkF+fXecKb%Q'*aaPqjZ2eU5mTj0kCQYXBD2lZe6BV
+
+J['-05iVh9j05QESpkFcTXVS@pCPUhd`ml5c0KacL@*`55+ZLH`EIRcbMKq$pq,r
+
+h0&l8HQ5ik9k-Bq6&Z1KHM(0PH31(b)Ya!EdB*mq,V`1&G#9bm!,q`58+I,%[aL[
+
+bB[b4`eZ*jXPhm(-YGp"KC'5["mF,1(Q@#(!3[4M9fF8i59k-5k(&10#@Gh#5,*&
+
+h1I*TKMCH`&1b4)#Aj-9Se5l'3h),leSmjaE[JCC$V9THl19Vj"DC3Sb!#G6#"'T
+
+K!VA)p1%E1&YZ`Bfc4#jm1M*m1%X8q,9Z`D0c#lkE@r"DhM,Ihm%hXd5ZfYGE,6M
+
+kPJMScKEkV)8HDj(qiKZijfk42Q2NKIYkUd@klRrdF`XZUrr(G!H)@Gm948Vm08k
+
+3!1VrcYa4&lT$Q2UBFlmU0c1h0(G&ENEZY2aU*-*'jfIPCqGVm[RmYIN2jKFL,$B
+
++fE",mqr)Ril`@'RqV2aFG-I+mqFM1$BTIe(q[IN&qITmBrk5r1,mqr1AjT[bPq@
+
+Aj#p(EZcQr0Ajc[bbI$DIbhIRHr)Ib#r2I`M*X)rR9q3rQPqClmZGN@15HN*ZHZl
+
+dh+,FGERHA&rZhqBZcLh1[6rh"lPVFUIQ-VPCZIGfRpdpYrZGhHGdRpXpVrZml[1
+
+l,qLHRjZGHdFZRm[PHR)eZBq6`h@jPENPZE0clm`ejTTc#h-YZEN3[&D('aLh&iD
+
+E-FC8J*R5SH("m+2FR0bCZE2#Hm1bm,lF1EPcFr0bjqA1cef3!*ZIHeIZ`V!TGe(
+
+Z2H&0ZIIP&Z6U3LCARfX)#m,VFjH%Bp(T'j'l00F8hKhH%ki*RER,FkfjYPalZ$(
+
+FP,Xbej'l+RFekm`&ZFlFXPaA,K[HRZ['6[6&Z@Yc(mKp-,Fmpk(FKh-IbDh)I66
+
+h-9D"c0bUh1T`3MJZ[!l,T8AKhi8[K!hKLq&ci6q%2`bhKMm+A`Trc2m[q'rJrhR
+
+qAq$r4IiEq6r)rd[m(q+rLIr$r$mElZ(rCIkEqAmPI$hmap!I[K'qUIp(pEp9rer
+
+ArcIdrpGKDrKfq%licq&qrRr2rj[mrb&X$pm,h`mr#!r`ra`9qA6i)Ip9rVF[rS`
+
+D8ImYd+,FP1&YS[X2-@$kA!@63ZC-)+YmNj`h[qAh*Vheppp@2AR'c&0RR5BVQrY
+
+QkX*k-350Arc*qN2FHZHa300DcNh1-fPf(YDYcPrkQ2''Z+!%rX!j0VFl*qi1ja$
+
+FiGc"1r4pHFhTCp@Q6dh2@Eb`Y3l4K,RTciP13@lkh+XZ`cl5M(Vd#fjXBIX,I-S
+
+j-hGCV[bGMIEJf5J3kMGk`jF&iF,3%6j1pfi,IjpkG@TLkUacN8rJ,RTjXjh,PcD
+
+fbF@%aSBPGS-h-h(EUeHHfDf,p@Cm(G`6mbBMp3GX(EHcGGc1YR%lHmAYl'fhXkr
+
+GIXXCG8Z@eU(k1lCaBDYHi(FjESGTfRF8KQ9T,[CbdVKXUAR*[@bTVYUH'8X[`8%
+
+9mS5)XE(#l$NEddZmZ3+*"22%-kZa[R#(I1(2r(Bf[0[Ci@jRIlZGhHef2*lI`6C
+
+b"cM"(@!%Gl#Ch3%ZF-FNdF6`(2"jjeGp9MNi`qX2$LYqY1TXbqH1j5YqY1)4[eX
+
+q!pG%1+qDDqFeFHp%ZbID2jkNJk,pBlZRXhpXMq#pdb@f4k*GSRfL2pXYdAk*GNb
+
+XCfc(%(1`2H0f61!QjbVGVjbT@%eXT@+phc%66*eYj@d[a2SaeUHf%V&qYK@c0E4
+
+9CCfMXd(l)$BrE,mXZqVMlqpl-S52l,$clG[Yh(+YR@rl-cX[qTLGPceTjm8ApIe
+
+d"@U8LbpDrYGfjJPjI-r1brr3cTriNTeAA'MR43riZaSrAfPRcFB6,"Y`KkDQ6eL
+
+B2Q&@qS5D+5HF1H@%Fp-R[%[I[32["KIqRZiGR#'F*m,,UTj``X)**fKYKcHmkB5
+
+&EiV[,MKKi4[pEQ,kZV25*eb@A[%a83PK'I%qri3*Ed%eC2UCB3C+(lb8@"HHC"B
+
+3!TZ-mpVh`bq&V51&26+&BU3%p"mmm-ipDrL#cqkCclH+ldbqYAc"(mGqR*)UDL`
+
+([ZLF[XqC4PhJbmj"r,ac$Mr[(-22q`lf"GqRrY5iHj`ea"QJK%-qR2Rja29dAa$
+
+0`Il``SZ(hQP+#VirP&@eApJVi10lHVeAf"GVq+lM#fippZS80ZJ80Z38pZ'8J$k
+
+&jc(L3`F!*[j6`NkqqlL$(J"`Rj4819rVYGlde4HG!lR4ZDJER62kS(1F(r6hAr+
+
+GpN[H9epbVZY$c[9mb2IC6Fk"fq3Fc8dHjf'2ql$['`rlZdHF'rZ)Fef0pb!L4B'
+
+[q'lmX2%eBI+$&F1A#RPRRh"F216kU2S"DVbV5R!pAYScIN3mU8@,JH4(pbEKXb'
+
+m1YD(lqD$ZKkI%SGDRFLK[%8brILQm4h1pd+qPr#pR1p%[M2ihX5hNHmL[L[ihXp
+
+h,Gqri2X3hlrQqb6I(r(p1GqA5N,U),k$q'Eb[B$[5,jMq9l*&hPj'rM@m*h(paD
+
+q5rMHbIFq[TrPLpbmGr2G`[Fa[Y[jISr[MrRZ+k&Uq*r'G`$IBAcIc[FL[ZrPH`A
+
+I5Ab4Skq9ldIjhXCh'Gplq+lMqd@qMr,p&YqRq+*Z[UJNP,k5ld#qjr&p"pr4I%[
+
+i9["&,m4GcRFqhe[jY["&cH,SKlL0I,r!pkriEZAl(Eirj)YDq8[iRX%hRHm)[Qr
+
+MLeVjUCArRA`Rmlf',rV-rd'q5rPqLZmU[[q*lqIiEZ6l9ElIj)[Fr)raIEB%!9&
+
+mdEm"DKDJ$`,dEf!+Ap3XF#lI$r"&EJ(k)%!I"+KCB#hIcr$pFlkEq+,(!Z39S,m
+
+#Mr0pS53F@-BhK5pU&XpFL+H(imNVIKCIp($mHrM1iIX4[J[jSVILVqH,[1*[jIY
+
+P[YrJLrk+Ij6[dhbI+m%+"ElSfi4+[XJYi55qlq)lKLpk)B'm%ZLcK#[iSXm5k)F
+
+%DTE`FEl),i&q52KM[Rr*pfrjlZ#,ANJJ[`6U&Mb!lj[i)VIJFAc4Dd(U&Q6f"*P
+
+T`I2j)XFJ13ETj5!j"UPIm'0m-GZ#p(+3!&i1ITR[erMq(9r8-2J3Amb*i-p,`N(
+
+dA#,pR(JBAq5Cb)a,T1m5QA'*c-l%'VlS[F3&I$(M%ZQla#kq6Ab4Db,e6#6Aa%r
+
+c[CI[TrRq%GmrjB[D*Y,VLFbqa+rarDT0G1mhj(6CAjdDRAT$3mR-a3fTGDR3-hY
+
+dlUECC6hIQRe)VRRf8@06SIYh(2iEXUqDcGbjj0ECjBI-bRjPGQP$b@Y1E8KPcjl
+
+pQZlAc(jPlNfcbh1[QMdZpr(C*GR5fDRXU0R(G[rlfDr-(M,lf0cIcciNIrEXih0
+
+YX`pjCCiAI*f3!([(l-#jIhEXl-1l,jPGP[hhX`r)rV[CKfErR,ZRCiIbZmRiM1c
+
+ECKqFrDT'LXZqI[BSc5f10lK[q-qchlIblfErN!"l[[GN6jdGFXGa2QIf!FZMQ3H
+
+9(9aj52B9-`rqcEIa@Q+HbIGY9##1l-qER4Ve`32[Nec"ZfJ)-m)-DZ$0r5GL2%6
+
+PhNc9m(BF6))E,mD$2@J'RJZEQbql`'cAPmdmTh&*h@@0jekeT$kF[Q4a1kj$VJR
+
+R00D$jYjB!aHYKUGc`jcQqVUQHFh[D'TH@0F8jPif'm,B',A52lS4breAYf"bF3B
+
+`,McV6km68BY*iKDrE1BXe"rV,,NV'UrdR#p&[U+mq9ce`apDM-[p'@Ff,PNDjZ'
+
+XIU`iYdI#3)h&SJ##bYY4pHf,Vb$&-RIe$aXNjFh06I1`5$+US8%%-Mc[D'`r&eQ
+
+(@Yl1D$J9e8c8DFD5-jXE'X1XeMT0Bc6Q"mT2)lB%+QeFFNRl)SNl"Y3ET4c6Y,L
+
+&bYG4P'UU#mrk(f`L'qTAQXU9RhEk%P(Ym-aXDUkrp%aka(2D%[(*0)k#H56&NNC
+
+"b6p8#-r8cGeFi1ejdL,5'k(cPNJ1@RAd*H[!ak9UjRiX2[`[*bA8bK5RV2AX&Uc
+
+jXeSS%kl(L*bR24Fhem[65kpiCdf$e0MfLb6!H+c$q(CFSebV,6qe3AX5h6'eDGE
+
+L1['28$D6@'02Ah*aXcl9B"0%LY,NcKa,858TEjC8*jaj5HYF(%iLfH,&EIMbP`U
+
+b"A4U5''Pqj!!eU8d`)I2Dd2#dM2lh"C0CUcdYZf5dVUP5qSA*H-$SiKp*Vh2%QU
+
+Fpp8ei69IKe"jXmiNQc3EN!!CHmj&+p1Q9GBkGh'p@PZ3!+kId0cD-"1Lija`AP[
+
+M1BeYqK,a83Jl9e!#1,H5Y0PTXE6,fNpISY0"'J8UR0)Q'Yk-Kr',VdlQ4Yfjl3e
+
+cm3)k9jY2LS2Lkd6d-,QQAiU-+5U$85Kcbl64lefba#FJ'KF$!KN@RpVHT#dNSm8
+
+cjd`CIjF5Y6EZ04PU-UPiah6-5a6(h'K"aPK&a$p-FH2&G8ZET#VdU$Afh(0E'ZZ
+
+KG04!b%!`-ra48XmmkJ"&9icQdM-T4rRLbqMM'pNDT"p-hFVD'9+MCcFYE9YdIR1
+
+6c4#RK6$jCPff91HC-m,4U"M3RKP0-P$CRU+rbRTML-l9CB50+*-GCA6'&1HFkEk
+
+3!!UqX[jMQ!MX-"6$QFI5Bp&"r+&@KJV)[6)cZ'K`eX(U4qe9CpDeDCqK(12E,Cq
+
+aVFfA@9Y+`Q02R9QFM$2DYHjiKL%#S9X-Ebi'ZUkJ$G4P"3I6"l&rbNHrKkX+6-l
+
+L4S4RCV8J%BX9DV3@KbX8am0l@jZ[2"d,'HJV9-BZCc*h+BXVMF0T1jl0$+cMmZC
+
+C2YfM1m1PPl@dAbA6SfbQYB9@#fhQl(Ub+mLcX6baVF('N6jR#jL42U-ZhL"B@(D
+
+,GU6C4Nc2Qm4dDU)CC("U`cMY`N*Ka'RGC%3keC9b5(Na'%dVFm)jfjCZ,p-[RG2
+
+Fh"+N4Fa,G!a@%lRL&Q'ZZ,DCUmZAiR2R4VKrm,-McDS6Y9`D[@aT[#M@0HM-+*Y
+
+CNqbT+0k9jjjf"EV$XP&al*SfeCUE1F4Qd'6RDZ)FCH@Ra8ZSf5da&MKkabfjSUj
+
+*bb$$'Bj1TFbb5(%L5DBB(0+%Pl0DBb"KACmEcT*TkqkiCDhRYXIlfU6'9PmFC-k
+
+pYhQ'd-`jE$J#CLb"GhiGqj%-C#NRQXmGF@8cCEC)aI'Q$'&TXhC,jE9+ZZlFH%E
+
+c3Xpjp0,fGQB8ji0Z-CI+q1449KAfK%C#U8CId-TQEbHQV5j-U-d!!ELq`5%$6Jb
+
+cZ'#df+8-dFUEjmX'SY0N6*d1DpeC85051T%+Pfe8EA4M)de`UCSFFEC0l9P*42)
+
+`h@Z@S4$,SahjU,!Qa*e64cZRSc1%i+3%*e-[kBE,'eZC@E+@c'2RCX2)6MZMl9+
+
+-'*NY!0Yqh5*"@pJiY@3b[4'1fr9,,hY,!fX@[ZrJcS-#pI@K[VNYA0EFF('iQ*2
+
+RiUCQLR&0hF)f#IhfLD(YFQEbA0K,-cTD01!l`Z93[mKKpi82T-*"r`NU`bjP@q$
+
+hr`-!!!d!#8*-,VNZFR0bBf&dC5jSBdC'+@9ZFf8!N!P`b`#3$a+#PJ!6mQ8!$c6
+
+i!$X!Fh*cFQ058d9%!3#N%PHjUdD0bJ!!)(N!N!B)-3#3",cc!*!)R1S0`+hKkDB
+
+bqeb2F'qcIA5cc3k!ZbNRP(Z%mT8EPCplCCZ4IHXeb,bLVFRTJ*rlb'ff+CjkdY2
+
+Y'[i+rq9H1AR+9hiGiB3QH4iPYhh#Mfbf*Fcpj0PQQp`Q4mPYXXRfI(+8Nqf4l5@
+
+jIC,"2V,*EA+F82+---,)B&-Zf8H1(bAF&`pmp3hkj1mqYYPQQc`MD0S2N!!(0+S
+
+N!!`!G[i&i)ZiXeIJ&!`"(Vi2Xj!!JRdT)pm#%R`90N%RE,[B-l+KV5IdDXJ`MD3
+
+2G41bBI9h$pb$8'PpbUQZ9mrIIpj"H'%6()CY`(cJJb$XJDe&Ih%HpU&CNF!Tq#l
+
+BU&-hI,4M314%1d!8peJ4`&i'+')-T4ejTA2GC9Mqd6'!KjF!(N(#6h'IiX!#Z!F
+
+$`(E2!,ZRLqad`60H0VCYAj%1T94,'Y451R`$(Gp2[*VfR!9S4QVAX`9S"kK0b+D
+
+P`'1)Y'F8fI!-2!Y2Plemm+(8U@D8QVL5KcL+pfB9$ASp6bLXQ`SK8VmmS8!rJ*m
+
+!hQUq6Dc2p#N6LQ%4j!KZ6-LM#ZpAV&c@%8JBUQDp$3P23(SdTeV`U'0r%d5J"Al
+
+"@KSD"`GG2!3[`RX2$!Tm*l,V@B5p*``+bBdpqUM1+AkG!XeJ+fR&i*[`1*b8r((
+
+Gi[dj3f5'V#dBIeb55S`kp,JIIZarU093H%(2F41C!XM,QX8YR5GP,DPNL'*`4GM
+
+NbE5XM5SQ9GT*l%@fVq&HN9$4MD86YQ)6Zb9I,r8B@`)"1!JIqBF5f$a6i51UTTT
+
+TB8M94[Q`-U+MEmXS%)UZal%9A%4lAc+YBqGi8fXbU@5Y*Si"0,@,8*UiUR%VVBM
+
+iqCLLjID%D'*!MI"m$,i$@9L3!1jUNj02N!#T8NX!8`YJ"f05cGF9XpP9#k"D62,
+
+&p9*L,A$&Ik"$AqQ$,')3YYdH#2UBR&+m1*bD4*2SBKGfELIMl#eJ6M&`THTaZ2!
+
+19FlSS`M[%E22'f8ffhThkl#HXhLEBMbKC*5#U)%V`0j`Xcd(Nr"(jTF#AVDL+k%
+
+3jBqM$p1,Xqe6Mkeif,bjVF!lC%h&1Nr)'Qr,)&XIDqCYKST`Pfa-+)9QIP6&A&(
+
+L%GPkXTR,@SThk,R4M'cbAJ2,UjQ1aeldq!,lfG4IDE`DkQMDi[Helq%2(SJFi!0
+
+BJMjP90%XNqXMSK1$QSU6d95Y!M(DjBb+MGG81E4j)+fDh04(V,b-)f"-,Z!di%N
+
+pUbSTi6kPQTDK$ZFXa&%6fj9,bTDUDh+QQ4Z+LC-mQ4C+'Xik8XJDqJJ1K'c1b1,
+
+N-!QI8&-SEk9PDLlk4ApZD#4X@V+Pi2a!&#03Y@3Q4h*BCcQ6`C')rN3JCLJYXTr
+
+&l1IBbDRp#GfJ*%cqF3QDmA6J3GjI'-2"S544!G-`4($1l-E@XaL!Mq-P))$caJm
+
+3N!$`JS8$2)EmRjmVXVf0-GrH#*If0JEm"mrj889#09rXZ89@R*lfaDE25(ckM$q
+
+`Z"K!GBlU-Cq[@'3q[0"-l3ES53%d[39`p`ck)jrNPh`$AKL,d5%f(afU@3J2e9d
+
+1$feC#JrYZKUHM#j(*jqbScL,LXbfjfYXHk(1YLp[XHfPAECp0@VEbdr4R(,1K"1
+
+2q+4$HU3,NcEjZ"SGLT+[bq'4,3[KNEVjm'40-6V*a(9`af"l@`m0YHlfq*G%ViU
+
+GIBFk(B6Z*Uf*"2'GjGaVD*eD[C[@0kcLXm%9JITJF%9J0KLX#L"p4B$S&3&"V`M
+
+-cXfGR6YleK1S$ml0c3AR[Z!*c!Vml*cV!09G[L1!jP#Gp)@!DkjNdI(ZV90%*c2
+
+dN3$4d3`C)YcP)di89lq-1riFGG6hr*IF9G)Y"d`#iq2P!T!!!1(Pr)1)MPIlN3p
+
+Z(krfChXq[pU[I*8Z,+lemhTrVrHl$1'!@eXRE[kaF1Qera%i89Yl@i$SraC`k2m
+
+5m1Mr&#M6E`K8kCm)R+Jp6YpaX4pI&d"e`8GTh1Qi)N$Q5Rb5Aa83hYId+`*10+j
+
+hehp&B$@jp44[dB@!5rH5mAC2`&0hN[%5m[KVqTA[Z[p2qGAmUYjGrf[jh`MhPX"
+
+krfKeiAHMi+j!LIp*riRYD0bF(ee%TF20qG0&krEmZNfr-al[M0FlirNIich'LVk
+
+Ba2d"Z[2'&ip-(cQM,H,GfHm250b(E1GfHQZK"lTH-Va1d`S'aC%&m3qMJ!8"BCF
+
+JeJCiHBDq$6!c-i1l112D)&J[irhDA59GedI*PqI6mehk(94EZa)[G@S0VK#mFE)
+
+'VhP`9aLhF,Ld#eamcVQ-Zkb+PY$lH+hlAEHrRXCk1"8i%("D3(mZX"%MLmHFKQl
+
+$bri,j3Xr%%klXkjG!PrGZa88ZAA[H[aVPkjG+Z2%V[)*Aq9lqSlI(alqeMX([eE
+
+fpfCd5JfqAmC64fCr%(fcM1HIIHheeei[ilEpr%Iji6)qNmMqlJrRUrbId0rK%[k
+
+VjqLVj[RI&[+qhVIr"6RbAhhDcL+4#jr(4pb`!jqjhhAd8(`3(`)qfG%pd)12A&p
+
+TlHNE32ch(6fpKe(MEfha$RS`Z1`m)f6ecJ0$pPNeQAN)cl[a(-&c5%fDq1#3!(d
+
+&cm6Va$2aqTb(L1ai0Q0K5ZcEMhI(1r!m!Fq)9b2!)Jrr'Ti@@!pLI`CmDi*K[X-
+
+LAjjUD"6B$Z3Y2$")'2XFLqa20p`VX*H3!2FmT)6'%[+qaqL9*-#IN!"hNQ%[%,Z
+
+)f#qC6qK0)AEDe6Z0@0Ea@[X'DLGFl!,bAU*1)IBqmL)Zlqq)&4fXlN2%A1f09e$
+
+[R)0YLL*fbF9qJaS5BBdJc52[JT2ajYmLYZ4S`!HBmHRr!`!0$3GQEh"PELjMFQ0
+
+KG'8ZD'0'4LPPER0P!*!*&)%!N!m6kF3!%rkA!!mdq!#T!%Y849K88e"0)!%!Rmf
+
+@elG0f8F!!!(B!!!LlJ!!!4d!!!UPT,"&mJ#3"V9+%3!)(,c1)BLV!5ijY9KA%Q(
+
+pq'$FPDC6NNPa-TFd8qG!J9cpHC3bAiV(%CZ)N!$"pU'bfQJqIDH2A0Dlpk)D&fF
+
+Vj*i8h,TD0GbI#acJJkR!IT,#6FpT!&1Z2U(Q-Gi6feabKJPE"Xe4EA56ibjAda&
+
+fCMYEE`8`5VYaMZ4M"CJl1p5ZIA*(CmG1+LK,SDCE*X!emS3(qqpjiXCM#cXk48L
+
+C"fMEPZBFV1H$UK$MH4%TcFQVk'$(-r@G""@mIXkFlH#QFbHKQpSIMQjmT35kkF,
+
++CZA2R6I'S3,%3K8RIpM6bZ&c(1irehr[,Slrh'b-AQ,b'NRMhK9+RU-h`XYX#!5
+
+l1NZ,P3Sk@f&1CDmEBUBD6GBk2m9SYBl[#aB!!!e19r)V33B`q`JpI*fGPi6GIRA
+
+6)ZYhq-h@6HMjK&U$ICi%6r!C3&3*AmrI!&eGETDES"qY`0mekF[,EQ@I(GPHK*&
+
+0IT2C*S2pC%,*TZ3SAU"CDlQf8BB0!$F)KErYi$Iqh!l##qQGMQ-`R!VXI2he!aK
+
+F6'dr&JkqP@%JlGJ,r'f!jQ3#M"5"&*'3!'GLY+eBP,jk,1b4N!!2S4E&YMqbj3J
+
+QhM#UMIPC"2J')ZR8()L#QA4%9,2pb+YT+H!qd0p1[9C[e*!!rml$"r83rMMe(#H
+
+!Va6&@VPmcr1Gb@`Ni'i8MlaJHh`hIb+Np*G2SPKkrZRL$G'f3ZQGfE&B[(5M-+9
+
+9RJ6q+9KZI"%+f)2eNi2R*qY9I1")BFH"T$G2fUh$p9e8C54FcaIJ1X1Rr9JDq(q
+
+P9$)f`(MDEX('4JAS#@a#SekT&'MlRZcXjh$-1B0lm,X&A,YV6d8#Tb"qdkL8bfL
+
+if(2J,2$3BL*f[BNJfB`"Uiq+9-(cimVZ!SL8YX4,,cESHrBDSB!SH)&KGJi2B'1
+
+*6ZqG54!*rAc*5iT`BM[#Q+(06Rda!QGX5b)4HAm99XaN%NCPaD"X@HBJj#3`c-%
+
+Ja0MC3#p@`3Rm#-NbJ@N`%TAbUh**LRJQI80K5X'SM%B)k&$V9&R!U&53!1,Ve"j
+
+)'BQ'YSb%49$''hSX#f`%a6GhBTp@3HRNKLb!'fip`K!BBBJ%BfrSa5Mb(Y#VFiN
+
+I&mrUZq95Z95UBF`L)5&$P!rZbR2l,R#LP6`A$#,mEId&l''Sb28+)%PQHFeR"rQ
+
+8P%4%1MSHpB@FUNHNPDEmZP`5NdM!*EYcc5jRm%`Q$0i*UaPVFUE92MjSRQbDeXR
+
+aNfll%e8l&r)p+hTUKfMJYmTQZPb6ErEl"phpR$daj3+!-!HGlY2Q)5(VV0M")##
+
+NDbF10j84k@fUi)j5F*LDKIRr3!+d1YhQmCq)@iV@8'LE'QhKcNc&PD2*VLZAm&X
+
+5EZ'`aJY0p8VaZH3%rFDH@Ya%V[GUr5M@5L[fek8Yd%6+&'mpG-Z!V!Vm(b'JAp5
+
+j(m`lL1i6m,Q',2X!&3AG'9KNiUc#C&%h&-5DKPV6eF)0!9YHUP,hbH%KDkbMLZ5
+
+!H)cp$bY0QP4&"l+XV!)9-K!ehB$Q'QZmKF5jK[cTZ[Ed"JG5![Bq+9'ID"c)'+*
+
+MiISc#JbZVK285Q9%TpHhT6dYK80XHH`&e"RMJ1@p8YY9K4+CFPdL2*8ADdRQ+h-
+
+cHbS#Jl"024aGaI+PYEaD!+ZFUF!h5BprQ24i5T3kX-q)kahQa6QPdIIJEeR$bC*
+
+'mpq$d5`dZq5(Y6@iNe-qH0iqC$[2LE##+C&ja#9qZJS!&A*C#-`$)$G#$ar[QpS
+
+)5EKSBl,%UA#,J%bC[h8E#B,FpJ91#HM,L)ej+4(+SkS!8ph,dd$VKNfmKS1%NJl
+
+$i63HcmY@aTUYT[3*KpYHJ%bk5dlUiC%A1IM-`&@M3T6B1RNbp&X$%4rdd!m'*Y#
+
+d0IQHNGE#B4@dia2*-dYmX-#e"fjmbKUN+9%%JZ,b@9Pmf@rpiD0Uc&*&+bp%&8L
+
+GN!#C8,hAKNKVVKGlpJ4h&eVV+099SZ-U0R03a#a19%!RC6cVl@%3k@P$-81b#k[
+
+SL09`3mqhjBAZmQMmXq(-49j9MRe-k8l2E*P9D$da"jdrFqi64aQ3!+29j*5V0`T
+
+`p8S%XL`-HpbU,*kYM'bm)KEDNG`HX1hSXU2fT++l%88I*l5IKU9d8dV49X05bP3
+
+MIZ(k5hZm"D!mIZQ15jArhKdrDIaVIG50%,-,"@,mN!#`[b@3!'lck-!kDMjrmHq
+
+bb&*6bjL&5%l*A&CC5hXT"LQQLf8jM6!AQlN62Z-m681CZUYkJT[emJP0)e&%-FY
+
+5*mpd)d%BV39AdGadRrTX[k9Ul1$#Gi`LqM(jdhDUDd-dQm6N#Mr!h[PV9eh#hL,
+
+3@(0HRhVVKqEDEe&KA3Qq&'l4@*I-9k@Yhe+9lB1TIUkaH8hlEj9PFkXUZY,Kalk
+
+BGm)9I0Ek-!U$b%+c&,h`PSm5Q+Fk'ilAQkXX0E4IINKF4aS8&a"&#p$9TKMArP-
+
+aNd1DR#YXX9cdUCEFL+$AI((1%UBR,2QY42RQ@!2b5X@#8AXb%5E[6frk$@&qDM2
+
+QGCdakIV%(iQAqK%CLc2(l2KZF*-k@IhJF&LPJ1Bh-Id4-R5$EAGdSXjSe!kAp)V
+
+28'UT5hHI135A*Vl"5BFr!Z,!rDJH4eGKhY6Kj&hk#0&i&Sq#FapN-)[akZDGDjH
+
+A-fSl128L2#T)1bmC#Ke-HBN*KeTaTi8ebb,(iie%&5Lkc4lH-9$eh39rDfXA8hC
+
+cNi-dllLjC#SI8Dj1V3GM2+QD)'A16U*)Vp@Ke8LFHAKLG5NI+P+HRrC3,*0-hP9
+
+&ebQ4CNP@N5M@clhB'B2KF4$`8NCj5NF"1NrTN@0M`DNr6'hHQVNZkT@XGjclX4S
+
+r0GHrY)-CbU(B1ViUQ+Tm"p'4[P2)ZYSMR25q`H(6P-&d%0Xi5$r%Vmhib*EIck&
+
+lVN[KV-#Tcfc0'ICEakMFKlliYS@,`%ecX+K*#mD-c[$FV*!!E`,4G',@ZJ*h-(l
+
+9f*Li3((8Kb&j!eFmNAPb,C1eEqb*5LVHM08rA#d,5Y6mXiDQ1#IR@YU-02b`6P9
+
+BrdlL`G[kGrkkBMC%GbYATAlR!a(Gbj6EGfjhF$[ll"I,9j!!L@kcLAq[TZ@9Mcq
+
+AH[*b0Xm8PXN-q5m$qQa![!M6+I@-r2C66&dDIQQ(62NdYp5'F+hhYH'jPF`0hmJ
+
+-R`CAXFpP0,*4D&klEaBIHZ6"lk'K$CTkH*%9@DDQKe+FN!"m#F!*qAik@U3QiXi
+
+[JSUk9&`kkLAcmE+-Bh0[2(J!1(2J4l2GSMD"KFa4,5TC9D5B"QG#VbV1afUP(b-
+
+2,1G*0pH2XVk[b1DGRH$F`&K$)$SC@$EeblP!`kYRI)9+-L6%8GX1hGDPT`h*B["
+
+1-59#Qicbcp8J0i4+YXI&C2Ii1Yb@!V)TqLec-S['6i2*alkI1,Z)'&@Tlk%3pIp
+
+C(C!!!0lQiV6FlRAh1bHGAVGjH04X(rF'PX8lZji%p&L1plTlF(LNc$T!NB`+([!
+
+@6S*lDK@j3GDJ9j!!rXKcbb@q0$jMT1)-Q50Sb5I#4i)+e5ZdTBp6dj%jU-*MF`#
+
+[F6LB)!0kPNd!fCk%r,BHi6rkKIEqCEUpbjUh1a4j2kX9XCM5U6PZKlcjEE%NfCT
+
+!9"-""YlTX`![c$&CkLr[0qlI,f)Zcl2X`*VMMRI-iSkDAdh&e!N[$03*Mj5VJ"i
+
+rj(hAb$Dj5N4H9FH(*H84&#IT($r,L2E+C8aAhaXYpa[l[ddk$ie'EjDkR9dmFIS
+
+bdZfUeT1Lil+NkflDZG*%,b)p3G&#ShakDmJ+BEBbc0GqC3#@R9BSPp)C0l2*E#S
+
+S"QJ1+-icEK2S%k`85rAP!L!eS3C'-prH8%48J*0pU)p`YGCMRei'-%(d'XNMhbM
+
+!5),fFHh3T01L-`a8r'f'Qk%bQ4E5r&rHj'2BT8r9G6liq4-qp0qjI)!r12#UI#q
+
+8pZR8a[-1qQ')b"J(IL#Y"!LYY+*-l9[[SEKidN"K8(frr,@!#QAb@"US%#RJi`%
+
+G6LYd3,!,&1*k*YL)0cIaUp-J%rUd$[#8UiIHr`-!!!d)E@&ME@9Y,Q0MBA4P,QK
+
+M4NBTC@jcC3#3#@BR!*!2%r*P!"2r3!!202J!13%`9%9B9%Y"5%`"!+KajRUSFHC
+
+Z!*!(2!#3"cN!!,[A!*!',UC4YI`K6j!!mrU!+!JcB6)M%YEbqM,m)4pSVEIU1J0
+
+e5NU+8'Lc'ia!QZN*BlFRd#dRqFdQ`[d!N!3J)!p0D@jT4@4TG#"'EfaNCA)!N"$
+
+(a!#3!iX!*J&@!G`!N!-(!"2qP`!8*NS!$c6i!"2rX!!!!`$rrJ#+!`#DQ[q6Ydh
+
+@BJ#3"Pjk!*!'*TS!N!U2Z!d0#feTEQNZCQPXC5jME'4PFNC'+@9ZFf8!N!NG"`#
+
+3$a2r3!!8"+S!%rp!!*!%9%9B9%0A588!!,G0e,kh6G6"!!!"UJ!!#,)!N!2K!!!
+
+$U@FAdA-!N!E'0K%!#"cXFJKL&F#1EA*Nd!aITJFm%%VU'3S'r0M*H"KD1Rl)Qa&
+
+K%9rr5$VeTAJF[BN)'@`I+UZpjNXlV(I[468QCL[N")$m$YrA*RH8#X'&,d@mhhT
+
+)*qdMQR&4J!lCbFZdFUKKeb)R(G6RqNpkELaYTM@efA-dI,(@fb11S),AcaP*iD"
+
+'+Y6bi6'SjCZRc3`kKPUqG3Y8Kj`3#e8J"KhPDHA`13lhRqZrKcX*JCPS&U3)+I-
+
+!EG[bhFkaM0&E)ieTK4+(kP5mZiC!X+X6)-C-FG)aTl*hHU@#4JZLa[eb@`Y1!FM
+
+M#6+!1HAN'-&IC#A8,R+8Nm(+9dkHRq[aNpaDRrKBNQH%%dV`$(p'"5!FRdB!FNd
+
+QiB35p#-@U1Y@Hd+2($r#Ra`RFdj'r!Jb'1%V`3F!G2D4bHMc!,mN84[6Q[2D02U
+
+m6&5Lq)AUE9YkBpZHDZ[S'Jkk-Klbc`4!6j)NQBcS5p1@cEE5p29e8DlZ1pfIVlm
+
+KU!r#"F*Je9'bdTrm('%mUYkEYV+l*kZjFpBpDATI'FZ5JqD-m`e)CdN#21eD+YH
+
+&)lrTEVJ2EE(4(hkHlV9heP48hRKlda9p@63h[AHQ[8h&Fi6(-CR@%hbcDC,J5Gf
+
+pe6@HS[pUrN249UJC[`a8)F)hhY(Q2Va0NmQ%FZqHAeh42JC3j0UrklJCDCEm#JX
+
+9,B)FlrhD1Np1ekqfQfQL&LqAFaV9(D`KrPllRfb6XYQBRR%`#)P0[5Zlqh6216j
+
+P(aaq6ha`)`M`0!LbB'PU5KIjkqkS("-c!chNNmeQV894-j)Se9YG9**Yc'r-(D&
+
+!SaEjGihYG4UYN5d$TR9(-``98jj5'p1CqhL@CI6&M&kp@biCm3KBGm,'&+SZKD[
+
+Zj$9IfeeSB$TdN51!8MHkp(pU9h-8-aLN&f2#Cdr(2&()l`q*dNf[+Er[[p@k5bm
+
+[,L"lN!#PS"G@`M&HEc+C$X928a4GXZC(QL(YcBpEic1DIc*qCI1eEKTKFpT[ACY
+
+H"U#mZ01RSIKM')ERI`T,TmD'rNAKAahFrGE"p`ij5M$lNUHMG$6L[Tb[HH!c+"V
+
+EhQClPGG,hGlkpG-3a#a$!@1*$q0`DX2IV6Z%36`*q,4-"%kT#b"#2lJY5QD8Gek
+
+0m-!4+EJ0pDah$*1#i9)`aN#5l2'@2D&cN!!-)02qa[CK-$%"aNk98ML3!&5"I)Z
+
+'LUjV6&R`38BlZfdUfKA`m4CALLjr)DN%rrcDp,$Nd+Qd1'hiHUX,dfbGl[QbBN)
+
+l@q55q@&LRdP8ACaCf4NVUB@H2qBQ$#Jl$SN&BMY5a#$r`m"ScPm[$K6r3U#qKi1
+
+"fqXa(MJAK[)qYMGF3F2j*@E5A@RdafeGDrIKqG9A12@NQUUdfpE[LiNTYMb6MdZ
+
+r(+B+@b9%al@+JI$qV1B[i-LYLaP"8pPip3JRbJ$f-("5M8A1i4i,*MEi(j)+UlH
+
+hVM%994UPXMq!NId*amR,YYI1Th[c-3C#B!jT20"ZcFGr'T%NMP$$3BVeL1Z2!B[
+
+lLYR6YZEM+C[+%4&R&d-fQd%*0qClq"m!$3aYD@jT,R"bD@jd,Q0NCA*'4LPPER0
+
+P!*!*%#-!N!m6rl!!&!R6!"2r3!#3"&4&@&4$9dP&!!#h6G6#Ydh8a!#3"JXl!*!
+
+'",N!!,f)!*!'Ta8,6J()!a"N!($##&m$U%PHC-C@KUHF(+G(f0N4HKfH(j844JD
+
+F$2!C`2S!K1)ChL-!Z6+I(k%%rBJ&rVjMRT@416q#+%BiRZ!2f"RqH2KMJ)GcpPN
+
+hHQUGE[bdiS`c1ZPQ+cElT[,D0+hB'#HZJ%DYY3H+(`3S2qEmH#KHk+DUpfXPAPf
+
+9eI,HURDk1a8!lS'rlA9eFql+@d!H+!YdDZP+qjf8S'!LFR,qBUdfZP(#'hY9ZUe
+
+Za-QX!p9UilqM9XClmlR(GF$hEbr&l*,ceTGH9faj39,CMMj&M[K&!L13!2Pbp8Q
+
+[r@l"qGP196G%G&%fkeV*M2r&QGi)'HMc(0Jc`4QMmlRDP2[D4c"SNmY`'3icm9l
+
+G4K'LeAmUXj%LSV-X@r!(cXp08@l9YI)IE4"DZ!p@04,3l,X6!%)M#RIYkh0GeQB
+
+EG@HC!'cKcQV6%Jp)k`*9VXjfT@059[#C(IhKMc,1VqiaVNYejk8GLmVX334(!MD
+
+d#dkK)0!#6A&UUeZ[R)J%ml%BfK0d!hNBUe@$mNdi@b#&LTT$'%!+XbGi'%8el(D
+
+RDb@NI@92-J(D%N$D18%'!b&"SIJTMmD"Yh!IMB#Eh*HJ0VIcLFe1CjRSA"4Jif`
+
+X%#J`+-3&a(QRJp5b0mSA%,#"pF6#VX`A*@8UJ)QdIVUEp(f6rCbJ'HJ,P*dG$r#
+
+fk1iFVJmBZX+GQdVZd*'BUV%)%4e$3q-A&N&-'KX1L@R"Dp0XZm$&ZK+aVf)D'G+
+
+R'iSi**-)Dmal,QEJaM1`E2dPJ$md@$H4SJr[&TZ2rDiUS!*(868H!`G#8&KE+)I
+
+X"p5[CIZ-Z&"kZd2ZTpB3N!!Dll!h-#Z[`FZhcFC!5Z%,!-ZLF)9aB!LTaa195$U
+
+#CD%C-9jGSQDAq+Di3i8LMq`B%B6K3UN5Xj-!ej!!(8NTa(*+AQ0c3aa$Qm,83RH
+
+Qb@rSM15B&!1dM$6hEJ-lSUDe+YH`D%Cd,0Y+06lFeSU1N64&#@LK3B*RD-)d,*T
+
+*$i!e01N@dH4am'6(6f'lZ$6965JHmY8lkL@bY81Y$A9J5")D!+fCmY)Pk9YCM(,
+
+a((rUc#9%SIF*#h28YqBBI@8b&34Dm@MTU,FZ#jUM-`bf)d83pEr%Z3LBEL"ipbT
+
+2ESBpNHD#Gk-4,!D4*Sil#SZSA`a3FER%E+1-LCeRNcRYKmFG",-Q-2A,i&qAHiG
+
+M5U+T38#B30l49"$*aK'jMfiGJKDm4*1I25BaFGXpKjE#ddRlKaZEi@062h9$P%*
+
+0qU5%pJ[1G8a$h$!K%'1aKAN&5kM3GkTZde*mQLpT4laajDE`MQh6MZaSDE&d6Iq
+
+ek&RLC'hj488-,19VQ1Ml&TM#SGXXPE&DiCN,H2kEc'R!34Lr@X(H0YUIl9eV(,!
+
+)+"kB%2%Z"U9cjKBb34880[FlXcTXES``0!Je+K4rUck9fT0L'TQi4JE*6d,K,aS
+
+C[-X[c1e9fGbMp)!iRDA,C"+R+Se*q1p`5')D2h+iYGR8hq%bkDqiEN,l3-adp4U
+
++iGYH#Zp"5P8SB*bbD8-pQJDi`fq&cVJ`2rhH04*DlA%l39+QUhIJhD8a0XpAd,!
+
+EMlG-r%,$J2e0Tmr)H[&5c%-6r3m!N!-0$3jYD@jT,RGTEQ4[Gh-ZBh*'4LPPER0
+
+P!*!*D#F!N!m8"+S!&"5&!"2r3!#3"&4&@&4$9dP&!!#h6G6&Ydh8b`!!!DS!!#!
+
+e!*!$Z3!!#BQmPp$F!*!'6eB4!!JFl())BP9XV#FfN!2'`I'(0NGXM[`C%4Ea$Bk
+
+`-"qFk8X*Hjc3*L*NX(fSV#1Pe25lpk)DPf8Vj)5ChC`Ie2h*`d"RMJpL$3I*PJc
+
+YRjZa'96`qMNM+4cZ2qGq&-K4krk-qc21FE4YjcM8d#!Ra%)9L%&(H9SjI)l$rHI
+
+k*r9e0McXi-I0QNJS3XSm30Zfc,BNRR9VT$'Y8$b26SAQ!2j!X+X6)-C-FG)aTh+
+
+c[T8+'Lf)'QmDY3e1mH6a""N!h#0(`ampVcG#Zhcj@S31C1H46Dpc-kdMcj)`JUF
+
+H!2AF$%m"LZ#rC1j6JRl%!R80k[1l0VdfZAefNZIN0MPf@m+2(#H$6Ak6Tf463K9
+
+SP!"NDIjfJ$rIpdjM&5m1BY91"rPLbrGm6hm8*hh9+Z*8jH)NcF3qD"VYZ!$",3(
+
++PhcrEUaD5EmYaAGrl-HYppYC0&MXV[Y,mk*%lNHYjRP2jJ!+F*E!emBa%*DJT[a
+
+3N!"*&kLY9"9CQNbi'QG5&BcallEP5DbND,imDSLDqradBqq`)CD(4Yfa+9MXh[&
+
+pL*@C%YU*Pl+9CQe2Q!pV&qL$)[2%kERqk,$'Q*e)Y4-TcJjEq*JiG,0KJ"jpFV"
+
+B&ClRL331jE[UDCUdCEEQqhN4&A&,p++m&59L-dd6'5P[+d'`pY+dGj!!TDhJ,)h
+
+EiGS0e@ZiYTR*k$e6YET4*ZB,D+k3!'*"h`r5(1a)``N#)YkpfhVaI(ZhZI[LqFE
+
+HrXE@baH(lplj4K3T&GT2PR2KG0'9"U$&mIHfK$J$fq$L16Si%,R6J!LYqAHPDXF
+
+R[RmSLk1HUB!Jp2rLHiKGiE9PAY#(LML,*5@a@21pTp#dUdj5lr5FIJ,"%HV+Z0-
+
+P2$1Em'P++N%S2%Lc)JKXDN9G2*2&FcR3R`2GNV[E&6&R-Pm4J8Yl++Ue24''m05
+
+M9L)6JPAlp6$qX``HdGHKEJJ-jUhDF,%(pFE")FPL)Nq)D36*b-KUlIk%L@&LS5j
+
+U%q"a@K6TUDJ#Z6U"&QQ2F58-@Z'jb@AJ1JbZ$hNViXlh[6X98DZ)CI22pcbGh8d
+
+8"q),c"keKfH6#@&@6(AGQ5h3rUJ$LYi)KHTha-CBf(3)EDrMGY%PZbbkG(F%he@
+
+jC#h"R'@UL&AmidJfGZ"'X`'M!rMUm1k6q+RhM0QQU-DKd@A'09Jf)J6C,S0mP)f
+
+Vhi!UCYc&ikpKKDi"l4TSAF%6EE0adIIMVikBZqd9R(A9"Y"(hppSrkQI&e42!T9
+
++RFSpL30$feB45JlXTlC-LJJQq#@HqfZH0#kk-(+I1*LYCi+"fmR4eET9*+qLT#m
+
+$8bbKQ(I-G1hXf-*QlH!XP9G,DkMH6d5J1EkTLqA3p`5FeqJ!hF43'`Ei6XI%+`2
+
+R8b+6R6M(VF@RPQ+6eG"FY8HR9h9kJ,&Xbe()2DNk49HXLf8a0`GZ"qe5`X,`cC5
+
+U@RYEVprl2VX(`cbeX'##LP6X4apX*T!!3CEd",mI`eXfm,#E$JjP3Z@QFfX0e!&
+
+'f-LaLY$0U,qKBqN$Qc[b(i#b"rLcE`AFT"38T6"`@,D&kBN+*D1)j$)j,++X%0q
+
+08mkBr)e4m9Emm!2Li-e)emXm$PP,)pk'!N(`D,N)M0I`CRR0XIj6LH&mZfD6XV"
+
+!ZI4JSdRP1!8Z8+LLXHeL5Da34+DTqXM"06dm#(eh1!V-!h"ZfU3`Eh3QA4*FAd8
+
+cPTqZSbPMH59Gq)V8h)LVIVS#`U@r9[PRIfj1LB@VJf"q@M1cDd-RidS5!rQ5fSS
+
+5MUBl#SjklDL3!1E84lE0S96Qe(-JcZZc,$SK9"kGmI(+GBHkT'qi+5f-$NNh,9"
+
+RQ'f"B*YSED9e6k'0,-UPcUF$PQe!$$5HfCeVbNlBCaQfLPDUTYKQ`bVqT)b[*1f
+
+!DPpEim`F@B`!r@m)XXGR,qT)fNV-CU0[l)e6R5ik*JbKU1Y$$jG2dFG'aRK,rPY
+
+9SE0(0dGC05Kh@NBmL-X(FG(U1J2dYG&#5Z(M8@qc$hAU-FY`TX'(UUBrTQ1H[KM
+
+#lA5J2P0H-al!fk2HPF"KBUjC5HXPlcAY4hZ"kPYR(0I4+9ML`S95eH8Y5Ef`R4)
+
+9TYHb9IPiiMRfTPmCD`E@HF[&YD[(8+qPLS4L#-8A"8-U$-,ZIYkS9@aY)`fILY[
+
+epUMTbQZ!"#6T-@k(G#p&fqN5CAHUki1Zc#5(J+pHDa(#pK6XGP#Em(%8h-)fc&@
+
+S+ijVK[3FB0,NJm"PabQBRA#B)5R@CKfkBKbkF*TLNiTPPSXjNAIMNq)2mPb%hp5
+
+aQjMC#D8J%kS6Z&#D@NHp0,[pdf0Y861,@Zq((V[DQ'RR9I$U2'D4!2kiZRP,5q*
+
+)a@F`$-I'MSa`!ZErd6rHlGL+ZdBjT1'N&"Zp(SVNGfQ"968mJ)a#@[l%dY+eUa!
+
+qL2)[3ZI'qXUQ'VBAQYFqDpL*D9!-2S4STEa,m#")8Y8*#E+q,QS2d"H@E#qGNAd
+
+!h0mrTi[5h-F#CG86Na(M)+@,$M[IpA9-LUQGAmUmRa"!MieZa12LmV++5'NLqIQ
+
+FjS18[qY6'H32d9[dIf9jfI`+H@*'kU98Qc%HJ"bRIGA1p4E!G6!"QN@#&QKR&de
+
+K%rZ4`XberC!!b#k3!2Sb*EY`H3b*6F!F)fCD%p!4T-E1lUUcL2IfB'jbrR0)VLB
+
+1J[jMBh8$S0kKm(NREXX$UEL'pp-c@c[PdM@8ENHRFNbkJ11DVT*eE2T-L#0G`,Z
+
+"%DdGU@CD!NGCAH'R&64p'V2-V[hh)I2c9V&r2JNPE$bEpKQe'H%q&pTY![eekF9
+
+Y13A`hra[*@NZpmeM#2d'J%*J3qKH!,PA&fCYTjFZdaQrR-bDM@h3d'*Q%4Iq32M
+
+5I2efJ6mI5YfE$q6"HfUHm2%,[UKIT&9plXDU)qKYPirlj&D"2lU4[*pISR('q%,
+
+d[01dRd[X*e5D(D@('heUG@!GjGTpe1pU`-+"TMT,iTiqP!K1)%,SKVamAD4E!,6
+
+l*"N-4VNpfqcha6-m5M"MbhJ!FmheU8QV03ljeC3adED1Vc0[bXkVV@,Yq8Ak`Yq
+
+Nk`9[PT,Y11qKmbK*Bjbq8J0k#(Q,381jjdcqV3VeFr'L5VpVY'mDIIU!B4%J2[-
+
+m!q4,Ml'd[Z"h4I69-6BKr5T'BqM&#iMI'-khj3,!D1S4Z')rdfZmPBIJd%+)h##
+
+4H`CHd'-qZ,Gi$ipJ(!mKhXd3GfD)ac2%%d,!#b0pU'f%d0UX2A9KYBdiY,B4iJQ
+
+r@M,VHm!2Cm-e$d0,1eAh#X',XN"r``p-Km9j,kC`*QNRV3k3!%b1BY6#Nk@FKjC
+
+*KZTLpGZ3!05S9&9l'5*+"mb3!"-hJmM26q'(jTrdf&60IDfQ(AH`mi`*MA-caJH
+
+Vc2K&ik0PCQa&[EJJUfAKh2fAf%F2IK9E@ePKbL3Gb+c+DrpA`E89(BL[LZmrBNS
+
+FPRJDSAk4qqepjZEkq+VjiC!!pdYiDipd1Rl9Ze*l@2,q(Z59&9dE[`QrVmZ$HIq
+
+GkE%NV0HAXMrkr`F!N!-0$3TYD@jT4@4TG#jMGh-ZBh*'4LPPER0P!*!*qp!!N!m
+
+8#G-!&"r,!"2r3!#3"&4&@&4$9dP&!!#h6G6-YdhGZ!!!!DS!!"TZ!*!$j3!!#I&
+
+Mq&'U!*!'&C%4!!JFl())BKA!MQebC0!-AkB(2""+kKN+"[cBbAJB@MTqb*-4BC'
+
+NF%6k8T)mMYj%K!bf$jA9A[1P(GDlpk)DPfFVj!5!r!lIebChP!V"K5p&[0pk5#I
+
+Y)jTa8B!1fFR,Y(+SBGFL*ah8jrT2HQiXEDBeYGPc0(baeYXMMU##emmC5H'J4LU
+
+8d(-55ZJe+qJB5YJ-3hA)#E&3"@,38Cj@$TrMF2qjrJF[!iLj1"ZjUda"LT!!-Jr
+
+3YLhIl@cXPV`edTK@+*j(Tq,G035#ACd!-@D+NiijPCZH9DQJdB+S-ARD!J#3!`a
+
+1mH6a""R!R(*bP1#VPDh-Uh1IK+eXCH6S`$S*dh,6-m))UbH8!&"m!1Zl+6k0!24
+
+8YK+@",fE)'BIf34j329pNii2BLIK%NkH4fk6`5B)f'5bbA'b9d)2!#K(q%GE[`h
+
+`mhe[VaL0CY5,NUJlL2*@k(Zqeap,bX3NM5@*0)fM81545QLSeB51NL`D51U*-%T
+
+bPBdT1&0Ld"-TTDfG*`phIYr`[5XTKh*!48U#VU+FVQCdRXYd,"2kYX928G+NmpP
+
+%*,N-D9rTY19l&jQNI"aP0)c!HaVPBca,qPXTcGmT()XdPjV8N!"QUY#%qi@)FGS
+
+UTQ8'9#Jc+M+`Ma*,*p9UT-@%K*B@)bh$5[+rYR5Q3p"J%TDmb#M88Z5JBB3iNaQ
+
+IDP+QQ!!cb5K4G0B6ea$%m[DpSG)%3Lc)88*+$i"P62rPdFNVfUGFJ9mb-"U8DPR
+
+'I)A9mMh)p4FCJZS92&L!+D6qaifN4%bJ"Ppf&qB#J["["-6")prr-NV#Z)$"Rrf
+
+KL-,V!bfQVI&crp%@e8Ki[cp,C3BJi@B02&4*cUJjj!hd9Y-eU#H6BJhTbhHj%A1
+
+*1SK%V%EV8pdEH8Ic%#CD3rBKKPDa3FeehDKX-pjB`-"6-D4'M'*e*IJqlN!GU40
+
+1)2KdNPkbDGQ4IracZm4DT8pc6BLEG"b&fHA83*S84eNZ%kNGS1hlpYLC$"%5R[Z
+
+rl9#Ji(Q6QAeXqrhZ5j%-BZPjH'Rl5&d2[cK+C(D8(+SB)G2f`B"K!be'r%3GHNr
+
+E6IkcXrhiDrXII@MlcK5@%ANhjb&HBq!+R5R3pL5FB4rRS+QS3AZ[AaphGdpB!Z6
+
+qC3Sa(34j(&lbrD$K[rFp2ZL8'r0EfrIBp`ib`G2Pf,`"@!XIPV*l%*Sm,e4&NZ2
+
+em1LikhPEBqLGjAS#K%riPHm3I+K5Q33,FcCT3f`dfS6`5L5(Tk*4)65h$KHlmKf
+
+FQ4'k$E6M,'01dC!!JSVA&adkZ6JqEY!`M&8Q+f#ME@l*'+hP28QY,cP!!TETXRY
+
+fp[UXkAXHAb"3ZjDA@Bi1&H*IRDL"$$Ef94%28#&b9c5)MB-5`,*X0-$1A0Fb,h3
+
+5E%2%$qKUcK`3qe$$b2Bei'-[dFRFXc[#+(pK-eap)I1Hp9r`Q2%(85DZBRQ8bdN
+
+`[i5iB26plDmBcBdP-1i%q*XffDGR(GVjfMdqH)!Uk(@6Ie)d*hi4!E*rKKXCI"X
+
+Z9L#E8B&4V`ibB,HfbJMkrYT8j+&"+FehkkaEh2@pFjPIT&`cM0pXpZ&#rqbLbeI
+
+((#G"6d5*U5G"Sd(r-FQpb*9,IM(b*j-C*qacF29FRc$URBr9p2ZdF'&MT38!LF-
+
+C20H810I0QfXZU#RQH4RKE)C`A1@iUbDS$M!VNmRaehR2L$&$1CVd4ACYR[[G)jB
+
+9ABGI1BXKpJQh3k1"[*(DFQl5TQ-2Vd%A,d09$l&(1&4V1KDj4BB#+6e4Q!81e$4
+
+j#N4el"!b15Y3I4J0(r6Q1T,MD+P%bB(-VTm5!cbd#dLi*f8DF'*aLf$B&@,pQQ1
+
+m22P#l8l&c*!!0l+Lr@I"R'+$Jm"KqeU%erBJbf)20&F#0FJGV,6FMDA1Jh0a)rF
+
+4!#1CRD)"(TI+mFp)%Bk4"fpPpT6i9"9Te@rC1eDi@Y39Qa2ee2BQ+m'ZPQp9FBl
+
+e`LT!R3ipKJc%9H`amXX-'miSjDq+e1d&D36(4bdqV*kjLDd3e@Q6JZCREpjCNh[
+
+TRY$@QqiS(DKp0F(%0!L)mHFb4T!!cF2&@T!!,$G("%&J[@UTf'MEai"f(94TeD4
+
+PVPKTlL6"m$,k05[i5TPHFrJk+4"Pe6$`LHm,ABVfQ@p[aRGqCAa2NrF(A+QC,Vb
+
+!VVhXYBkdGCi$,85a(%d&Vk2cNh3HqpQ3!&qJjbAL9V'"()SLcTpbMd0bF(4*E(F
+
+ZE1[Hi(+X1Qb8[TDcXQUBGe(NkT@FfFTJiPM,%Dp#fQa+(RBpC$Ch*!mYb5[INBD
+
+PVbBbbm4)dUBjZ)m4SBI+C!kbl&8`6G3J'NB5*4HA*J13!'k`XEC4hRj10j`*H&`
+
+dT"&UeJefhDLm5N&j!B31ZXIGI[Ib9IFYE@j5X,A&MDf9bf1CM,#B2UH[Y[%$Pqq
+
+qX`D%4J@fie'#*BBPE*4NRY(fZjf3!&RFdjX$qlYl2k$1Z[f,Xa-'rS[`Fa!HI&2
+
+&5eRHjRPLNIhZ`KC0JX*PX('$GSh!)8be-2qXNN#%HA5$JDGlBe1[bULJDXb0YFH
+
+VaUBl`9ECrKUY9'RZh9bf'G[+&EFPhET5HBjKrL%&jbJaEk*"2Rj3LUPEX4cbq1!
+
+HIMTbP0b)Q*N&QfB#+HhqBk3B1H9K,%D`YZZ9rHkZ%cPBH-5Ba!f1!EQTX3)[*Sr
+
+9Z05N!S+lH+VZpE[S"K13!"$TdR+,N!$#N30C'UkF%2M(mpLp%Yp+VCDm3+1r3R`
+
+bGj%1R,90Z[lEfaIQU1XcPEhV*,qrc69k[5fA(X3kGBTi#'lK9VipG)h%d[ji38X
+
+da1PP#5jelbD$cfGAMPJ@TUS[i@-01lr-9aP6QA"mhXma0Rd*!PLek@Ad"YY5m+i
+
+",f4MU0S)-%SPS`C$RMqRRGmKZXYMaqVZf$[!cA)elcJ6I-%"E6#C-*2bZFelPKR
+
+8NI'F4%h#2jLd[I0F2hlba1-9ZGkfT,`QpU9C*IR$",a"9rYQjLe(!hRVG+Q*!er
+
+Z0%jJ"l9TElX#2VD42Di*(!39'Fb&cZFP@6X"RXLTIFE`Y0hNQESj$irJi3kf(q2
+
+6RKU)f*dbCcBG0`Y(&+FUFrL5SS'b`HYm"@86er1dhN&D9plCC,YB5UqaaI0'YKZ
+
+'@$iBjq+f$+TUeE)i*PS'LE%#lq$'#AC4fXGSM`p5-*jJ6Z+$bf1mp9DfXD-,Iq&
+
+41ZMK6U2633%f)TS[0$T8'J@HEYbYkI@N9[TN2[k&4HjLaDiBrHjq!6hRaHHZ80c
+
+eLI8Z%UTdGXX*N!$rN8S&I,"NCGV&ak,qFaQZbp9G!`2QP'QZHYp2+eXB5jiYPL)
+
+IS%'[Mkq[LM#8kFT[Yk2PbbL1FXNM4V84VLC$5emNSBbA4(iir0m*mfklA)q@G90
+
+G`Th,V&fcBUR1J6T&j60I(A`bZ%Ce@GimC34r59ACI-b[6A,pDHepi&jS-E40dqe
+
+KEL`MI+8(-KJA-43%'hp+*rKY)1aGr#l%-1,H$L+,3-IEVGG@cHrfU`#ZCDI+&,0
+
+drQd"XYV%0a"10`3edS!,KDPI2rE[J2rV,1*qY6'kX3@Ga[D5cC+46D5UVe4@-3A
+
+#B,N(m8F&`@CUjd1cQTcQ4iNC8e,q4+(dh%dNq6-[X#+lfi1BNjXfkfp9$!d6ZNG
+
+*LB'K1(3@"iA'$!X4E!"9'LfPqm$1XQYSSrkbM2"*"[3ZCm"UIrLLBcpciLe[fZQ
+
+8-,0[Ir$r$`#3"!d+6@PZD89NDA3ZD(Gc,Q0b4NBTC@jcC3#3#CSV!*!2&"5&!"3
+
+Kc!!6rd!!N!4849K83eG*43!!Ydh8[,G0e,d!N!B$S`#3"J'4!!"*l!#3"MI+83V
+
+T[J%H*Nc+mSIm2UmI*c2#*'%5ih0lI3KNq)-qN!!"%E$'dT3e)*Z0r*N-"Q+2"+4
+
+Ue"U3!*DGj3jKR`IS)@)KFQ-r$#8$S!X'33k*!q3,qe$%jddQ"Lm*U+`X&0EbqM,
+
+m)4q)qN0H'$8E3&*5UP+GL0@4V`[NdMMNFb3P+4XfLJH90(I%TfIFS8aIf%'#f`Q
+
+L38TmPr0M(VHcf-pQB0MAa4FQXD[--8a+5P)*K3ST-**a3*B[a!%2c#*MF!!TaII
+
+i`S!dP8&(T#FM&PG5&lZ-F#a&0RN+CjE(0K+aS6Z-II(FjQ*Di(1MH#b['Y`HMip
+
+0f-ffBEY$(Pm`RVZlf)jc#HI+iSD'b"p+@&581Bfhq,+IP@baE0"R*F1BiHNc3SR
+
+CI1KE3JNF6`iCk)0N8mKG5eN5NRZX,1CBERkr#ch,EI#(2@lNA5*SZFQBXH+&SGR
+
++M6Vj[CK*5QfB8f%@21jJXB!8#q"Vc'Rl0TI4fDZGX3YB[-Q'd@*d'A0#XbeeGDe
+
+b%V-9GBbZ$NjE6ULL%Zi(!!d!$deTEQP&C'Pd,VNZFR0bBdC'+@9ZFf8!N!P,+`#
+
+3$a3Ib`!8*1d!%rp!XL#ai!#3#Tl)S&bSN!!ZJ!!!"L8!N!B#X3#3"+US!*!)%T!
+
+!)d31)LUH5Z4#C8S!I[B-RE)UYm4PdrIR2Yh3Bdj`FL6GM,4(TpN+(@Mhqq(RjRl
+
+*4T3Iq&Hh(K*H(fSJhA'Li`Ba#cJ0K-V@U+CX+M`1c%,R&j4XZGa[A5*mISdDeqK
+
+X#!i42#k3!$9T28BS6FX-83$cP#-C*UHe30)8,ZN&!cid21E&jVK6)-YTqbMT`Up
+
+GVE,#Ld*mJ%*`0$l$9HSU'!8hP3BA#"q4qMP&%"8#3V2aK$94ZEbIkkD!4%'[X*6
+
+N,-,0E-B@b0&PeAb#`J8"rXbXE0+CYRdG,8*!aadI1R('QM9jr"'kaY&E[mE#`r2
+
+MN835((c$jHaDEH%U5fP$@GNj$HFdRM2[R2RJC&14a5fK+MU2`UkLXlLG(0N&aRS
+
+`f*!!PXIVJ6Hk5J+5'Z1+2B#J-C81(((%8'AZ-)JFHIim0&aq[Vr*ml$+bXKC9CR
+
+,[9Q'G$5rbG5+AUkDPlpm$,HpH"4AEadmKPqZXMIXd6rd@1Y3'e'2S6ECA%m)9Gc
+
+9MTH-$!5L*YphYIfcUjZDI(r9CH%LMfRb2Im$UaGVFP2pB0-`Sq%QjQKJc2&ieGc
+
+RYeh*R!fPc%'Pi%%Y31hl#[4Z4"e6m)(pPF@*[2qXGIRq''S6UZdIkTZS2cQLlE3
+
+pT+j`J`JYJe)kSh#@d(3@E@X2VIkQ`6VNC-Sd-Tc(!fbqVd'XTp4`Z-2@9N9EeNI
+
+Y-3S0Y(3Z&SYbE#!dhD,8S9[5fYh5LTl&eZISJRI2S`"[8r&,S*L!U6TE3QZJC&l
+
+A(JU#8pVFd5h-93IESahS9q5GEFJlhCRhYYXI#SSmMY,jf#D%i!cH%JX6li-k#lY
+
+T$+12F3L-+EF`1"DJkbf`hM-X$-i03[9V,#bLi!N'H(2"Kd$1H`Z(KN"&peX3C!$
+
+B,qLicE9dJB@G!6D&GPMBHd,L+J!0$("XC@&cCAGKDA3ZBh0bBdC'+@9ZFf8!N!Q
+
+!6!#3$a3Kc!!8*GS!%rp!!*!%9%9B9%0A588!!,G0e0+h6G6J!*!'!53!N!Gp!!$
+
+hc`#3"T!!69%+kEi"(LC-BS-qGpJAGIYaXNHB*%ab!`llJhkF$6+iN!!(qf%)F''
+
+I&k4R!kXrj2Gjr9JSh%H!I&NSV182HB+Fe`HDYZImRS!"ZD2*6(1Kd0F2qe!)k$N
+
+8KLL*,dHHDN+K)kH[8a*4*F)"`U3dAbbVJVU,35"T)Kbd(`#3!b%K$&9$3L"-EfG
+
+[)$8Z-`#3'0m!#`(0!C%!N!-"!"3Nl3#3"42r3!#3!iB!!!'!rj!%"`#N`XamZQ(
+
+S2!#3"6[SJ3#3"43H9!#3#XED$3d+EANJ8&"$38j655jMFh*M4NBTC@jcC3#3#D%
+
+E!*!2%rp!!"4M1!!202J!H!!E8&+[5P0365!"!,DChj5h6GSJ!!!"(J!"-4)!N!1
+
+"!!!lr5H[5DX!N!DX`K%!#,,4H$k!dAAcYfl2*%fP)N5(5&rD,+raa)bK1""SRC!
+
+!('`Im$Kk%a%bf$j8GNj#fQ'pHbqUF8@f3TbfSmplpbB1ZkC$[YDYdiKS+b*KAdV
+
+di`EHHl+6FPVVP'DD6P-N&aqPHHr06XTUlDFX+j(f$`LHmYkLp[l44k'd8KB!N!-
+
+1H1QXpcU[J8h-m-aQqA*DG[kQr1bS$EN1j1Yec6T[l9V,icVKe+lV&mqmYFhNjh9
+
+HEYECj5dq[B8hL*rAjk)GkecieE(pjL*EMPd*0q3ZZZJY1PMiiV&ZdH*GaVBAj(R
+
+!9ei$HJ"4Xl-fZraL9mHkf(D`X)@I[CmE6b$!DJ!'P*QGFhCHQL4*X4+*I&+54L6
+
+"A9mT5!U'rc*mi4k[JU2$lIBd@licCrj#Gh(p)JKT1`0V*#RmF8Q+5(RjC8Rke%V
+
+mYrCFM#4%Hb8#AiM'Ql[bIKKp9pkr2!(rHfciKqfjm&d)#$E"pd(i2JI[i(Z3!)8
+
+)c!Sp*!jb)dADUjHkDiZVUaI,fHNL#lI9PAipP3BeCSC@ZLX62IjF(6b0#pB(VlZ
+
+T-'0@SG1H*`-9`YSI#8&H5!4i!jMKQ`(I(T+dl0I)!XMAZ8DkNTdA9FTTimE*TG@
+
+e-Jf8me`PbFik9p9#9qe#1EHmZ0C9@qlf*'HlA3[GY4iC!Q9RGAeYL6Xj6IE3#dm
+
+b3Nj@dSXmSpb)2m50m&+2fldiXH3S0fBeEEeNk`PZc,FZi!C2lh[XL2#ikmk[V$P
+
+D2"V,ebA-IIB%1aCB&l#$TjHc3hVb$ADX26HmY,V'AA@XGUaGdl6eZKqSl#$`mje
+
+`PM)J,dS"e",AV)FmM@pK49&DUTaE[DKD2Lea)QL8C*jRPL19rfmU"dpGl3RP8,N
+
+qj,UqeKA+38R[NGTB8eYH99GkP2k0a8fE0`kdVUL02,e(G*@Ra&9eM"a5BfR6jVq
+
+GCPfKUhKkMl$$99&4AA+F(9P0$ejHD&h"$TlHpe4(f#*hhA&b5)ec3*2rf`PfR'G
+
+G`!iP[8G84kQlYVDkpTMU+'cDZZT@k`V9`G0lT(,8e2qjFT4!jAM'ZU*b+1NpSMQ
+
+!@9A9ac@(XfQEpdAV#Xh"dhZNPq1T@eKqR"eV0c9I[L(AiU#A`h*d4$QikY`APYF
+
+G8`l6Qjk6rmUk3MR`p,k[UjE@PYHjMl&MG[2PGmqcX0"9,,e(Y%0*h88eamJK06U
+
+D0UlpJR@&GZ$T2D)k5mXVMT0$DLaUfYD3!'9GS6U9p"lKKUZZZ[`MEZ3e6hbLf,U
+
+#'dTk2q6'm4DTe*MEI1T+c6pJ4F%0VArFmpBEjRm0rXIF@[Mr[J[ram$p*q"r)[c
+
+r5rKr-[br$[iR`IpQq$m4rRm@rTm+rfq%rkGYZ1(*C2KrbUh$,J9[P$3CiTE$rbR
+
+X2Y*-1q+HP9D3!)RI`hS3'TLZie@pF9l6!cqlclT#$r,d-RB1!cCYH)HGAh3q5(j
+
+'l#6l#kYC2T0)6MiieV4$XTl&f("f$5ifDRU,T"&`Qf$(4q$c[8G5T1l'bep+)Ui
+
+['eM3"UGJLRb$bF[Z$mpceC8"06kXXXXH@2rCf5QHZ[VL2,X61cYS"642&$4U0!C
+
+L6U%L,EXI[YdBPh2hFaQqi,USpT6TC'i""Lr3E,lI!r*ih,A(Hd!j64Z[@QGKd30
+
+Lk99lJ'qF-G)eT),mI0F,a*[5dG0lrC!!mk33XSAFYHF9lM!PfqD1)3QpEJbkqZ*
+
+X-Qa,@FV3[lkAE*X$e54BaQ+MZ9$pEi6@5)Z5(iHUZSQi9LK9G&(bJhM2B'DcEa$
+
+Y90+m!S*CJFbpkaSm@QA+QMB[qlVPK@[`r8kMTha4PD[L'$[1EpTmGCf&"6YBHSr
+
+d41V++drddLjSRT,r)qZ+RSL5AZ4'IQ&q,Y4bp(4(1HcS2Jm'[lF8ll#RMB-lV0P
+
+`jjJ$b8,*($VGPJh[KH"lK'C@#U(DqHbLr1P`"kjcLH6C#fI$(5TZBVFjmq$Z$Uc
+
+aH3@&J#m%mC%m"q),3Abhf5Lq8-3A$('!+46ahCCAP9B*GdbE5c,6$5(`lBRrLHX
+
+fl!,m6KGea&B81f`jq4-Uj0'fQTS+Yl1NYVbQ$NL8H'&*G@PTB[@deV$4mSBSI#b
+
+RUXjG@qSUF4Y2'8(mSI4Deb,M$AE2`jQ#9X2C23m[+$lIA9,RV+qTUDjYbBSCb"m
+
+mTlkmC(%Km0Ti6!hLVcMV&UBC$l$ldE,82564jDN-qiHUkLVhGi-55lV4%J1L2bd
+
+iXD4'Z`f"@rdk0,'UZXiG,[0hUhYKTbY66UZZ@J)Lf&dEP&JE#CA,"3`TN4hZLd-
+
+6Dcfe*EdFEU8J`8-ejIL+T`I(C)-d+!PL@%SiPLahPAZ*kl$BUE%!X+ZjQUFkqPK
+
+BQ'4eZeVHf3jCqY%Kde&3DIe4SB2RZM%`1Z)A*m'Kk0md(Bhq[B'mRVC5)bX[QX#
+
+k$SR95E6YCjqTL)$20GF345UNN!#"'4H1J4VaF$2C9Mj!#L,IraJ)%#SmF)`'E`-
+
+U"jK#YXflkV")V!9'IL35hFe6CppXA5%5PI4U)M(d8NdNKL'2Q%J-5p&%BYJ#655
+
+'iAY-*)BK4jP)$%-4ad4L'!`Ji5+4dT+*a($%ad4L11*M)M%Fm6'4')liQ%J-TrK
+
+dNBJ(4D*%LVY&NjTT+#JjlrA'UFERiH99*4Ae#phb'GMT"0+8+33j-fTi$5Lh5TG
+
+FA90AAPhP'61XdP968MXfD[K#GfPjP9ZHAq6-Q*q6Re-i[c$$N6GIRKLPBNP`9AR
+
++S6f'lhJ5ba+!2@RME'RjQ8$A#N`1,j3BPj'6AmMMH(i`cT'GAL$H)aLAPPf8lhr
+
+2jR!k-[+,J&'YFANfHjVr[Gcm,*Ir2DFY0jr('ANUbXSemd(M#Zc13[plYLbRQQm
+
+$Ae&Q@Sir,X1CRYS4jh$B"6l+JibCH8ir2kEPT+Rm-1,bd`Vbr(&&'E2XrVL-h)+
+
+1Z&cE$)FrVX#CRZZ2bbXB0miIji$DiBqE8C6DN9H(VF$@N6q(2DXc(jRT(I8M-dH
+
+Y0dDFhC%j#c8*h1FVhCD))&S2CKDd[BH9Ihd+2N+5T)M,EkC"XK6898h(MGY96hG
+
+96FFF@fj@Hc9bc('NTjPXSh&k&U'qKq$J)KVRVhENql04Kq#aShE-55(EbTi)LPa
+
+ZPrUJGM5dj+dhI2aK9'@BHCpBQi&DK@U-8bC,T6@R6-%r8r(2aq$2TDKB`Mi6+F@
+
+INd,QrL##c$X,[URCm-f(Eb&mjk"f5V1h94"*LC[9%9ISQ(*+ahXfCiBr,MFcX`2
+
+($0XXXq,3Z23XTeN"&A`1ffarA1Vd,&9TL,KFNm-B"m+R)hrT4DNGH8*jkSpcf[)
+
+lmZfFBH[!!B@h-bl2ELS('PF`)ffk2mjKbcFVVm+cr&46)G!i3d(abN(afA0Rq2R
+
+4VR"SA1D8+6-lF8r[L%Y2c9@9P4'RemUK80UJKN9!(d3DA&5dEPhVpqB0QG!LN!!
+
+p*G@eEYSkm,LAZ+[NLp`ZE#8XUSj#ZDr$'3"`3,*6dj4GNqEAB[Q%rZd9A+Vc-iL
+
+ieQ#[Q&CPjEf`4k(VJ'i`#GqEX&#H0@Z@2%fH+%mSPfZ``e&5klVi)Q`Yk,J4(K4
+
+EeD`&Eeq(c5(`Re3ekbd#&VX'Hp@B%f3&I+2q(A$r"rcr-Am$fa8#(l3FY,b5K1L
+
+rCHp$AYFf`hI6HTcHKLfRL#XZ*+lVZ6Z0jKAZP6`[UV$MHpJ#XFh+9S8Daiea-"A
+
+1D8S@M*YTFl3e!$!Z,AZk+G4SA(U1VDhmBTbH9`J,!@j%+$MDjB-QQHE`h[ZllEB
+
+Sl2-)3Z%`1Tf86G5M*beb8`04+f&[4#@P%lBRpSQJhp0c[%TBk"hj1bdBjqqdB*b
+
+rdi*arNi,aGIHDF%iIkF&ircD%q1-6JY[6P&mlCd6M20h6QKHpFj*5llE1bFdVVe
+
+cJR(qcJR'q6XR0(rYR3'DTrD1#XAGhP'Kr'M[U'#F[k0#HGEH8D%mEZqSB*brSd,
+
+IDqqSd2beGe58I2Jk+V41Y(G8-%k[Fi1K23Tr)i)S[RBG5(N!3Nh%+IM5Y4k)m4j
+
+fh[bmcl9VGFZ)5l2Efh3TaN&Cl)J$AGUQjjAhFYX%!SY6mi4#NKeHVd%JI3Q(5N+
+
+IYbIDH8GT6bM#%,ql1NMB#[DhJc$1h`l#1(rTaEM#E-I&r[GDT8NSE4mTUEYGdC'
+
+kCX8(H'SKT9q(e$VKr`CX8`FNL"b3!#"b3),)!3NL"b5)(*!!)(*!JXKTdqhqdJ9
+
+D[Y#N2SmV%$KSA+"db3'*)`G+QZa[-Q0FS06*J9)R"dUG(#KeJ+qMe-&l(D81ipT
+
++(H9PTh56!p*0$NJh15$Gj)"dN`2563j)0cNJhH5!G*-$dNd15$Fj)0hNJ(56!p*
+
+0$NJh15$Gj)"dJhad5$Fj)0f-AYC!+21m03Bki%lSDi9r8T*k8CX*1f-0#F1$GPT
+
+,d,XLK%C,Xma)#((p$650lZ*p%"T2A2HJiC)Q5qQ4D!R"pkc8$)kHLcae-(riU-'
+
+aTRRUh!3,#cFh5qrlFbjKkP6CmEP4fF#12mrMXc+BFmR5Hi3GPF86PRid"I5mjUR
+
+92l'ZB!G2lrp-ihKP8NB#c*lj$[`hCpA`58&m9Xddq2mCq-pRf*L6KDE#rfA`Rdm
+
+@NXJj&f!mF!01#PQi&R[S@Ni@VX"lQ+haUVUd@$%Z'[Q`LM-ZKN'IGSpam9#[aVV
+
+"Z"J'$ClGaX95EMLNaX@&YDkPL@@+Q&0F1$iGeUPeV%'0Lf(JX&1-Lr"&9iCU1)&
+
+jEjHrBe`-Jr*T'"FMFJ$'6E6XZTjL5e"S!S+iIXD&1Z[&'RkATj,H-#k'J6H'iXD
+
+dr6ear9cTq5lULq2TK)(bCbfpJIDdIp0RA!aMbea`iq*`-&Jb!+kI4m-h56-Z,Pp
+
+)A2qPKY2hA2qPj(P4c"hiAVZ4,ac)`4-B%dTF[dEe!!rf52%Pm,q0fAVY#B`*Yl)
+
+dmSA6$S-PLj&2+pM&"2X'[&k$N5rQ!Z$%hm$r@[k'aB54,jbf8j68G@Z4)Zb,4Mj
+
+q9#PL4@lN#qHY)Y!"2A&3JG&bH"VqJj%[jTP@XA2Y6NpbZj%[[+9jC#5%&%FPNH)
+
+qI)XH'Nq+BrN!'Prc#0k$rc"iC[khi2mq[`RhNrJp1'T2Jf-eiQK!a"pR'RIVb9M
+
+!2$Kq`([2XSFKQpr*cV#PXfd9r#+c6rXiBMC%6TeUR(&dUV'H`5-1UJXmB&8mlU"
+
+Df$ce`Y1X+aa82,dU1f$!da[Xk&EXJ5CVb9(rA@0qmp3(2R@#(5lV!RCSk6dbLEH
+
+mZV,FFmb!ecJAGVkBDehKhH6TCHb)fR$$,k[hkaMZQq-qZ46i[dVA0kTIMKq5q`[
+
+85AakHbpijp[lFA*m#Tl2IIS1CDKN6qk(55(f'(kRi,66JBGmUXeiH2qaGTaR`Rm
+
+F+RN@r-I*2kI$rmZi,Y-hrkR5pMlkdrM*U!Ki[,aU8@,CKh8MT@P,mQrdA8(mhU"
+
+ZD6*6ZDLjB#42Bj5S((-Y"5S(JiV%8(+VFZ23Y2f%m-*D9`diX$j8C-[Z`Sd1G'j
+
+d60Z(e"BiC9Ar+Y2f%b`"TZfh!%YQf6bL,qUV6QbbdeMEI2QGfkdVp!92lrZEGp8
+
+#`Z2DI5CXA,,8`Q,c,TCHK4e[$`Hq-XN+B$M`0Bkl)Ql&fF"r(!jm*5LjjCImGMM
+
+`UBQ6IcFFH-G0UdR*YlPfZi038f6EjP@'rMT81D+kPk)Ee&e9pi(-D"brlMprr*!
+
+!"B$qXKEB5i[V,cfh+MY`%lRA&9L[Y1U&lNb'iPdPYZaM&J%+V0!L3)'*E"l4'XA
+
+eT4pYpp0B!&VMDpB9@S1RpmM1"8Sa2USd'U[ATdmTXkiBThe8DhJLc[rckMZ0GH[
+
+1bS8a"hZiNCkDjQ6F!#*D*'KiK*c-drYZKpR6[E+BpB[HjdGMrES[MaTrJKh&eJA
+
+Xd0*lH+13!2B69#2*&qJlGK$Z2H(h,EZcd*'GVII+B%iTD!clhc+K"1l9$4(CI8[
+
+r&1l&",dJ(1VHQTmpqH1692QpYJ@%FUr12E!Af![6`!(G0Jd9i`Sd3jraAT'cU-h
+
+!KA(TYN,91'DmPjkDT4UQH&bKcC&9#,jVB5J,SA%3aRa#S2H$J4X4p,dd4`BJ912
+
+3@dVMR$Pc-LUUUh$,4iLE48f,''Hh13Ue1+9eJ(&j1IPfIeaKQY1Ta@PjXMPpdf)
+
+TMXP6&r[c1XZ@DaV"D&l6LK`cG(bSeQPF3@kk%8IIJ`%'dm(VVaSH18!DjmaV-e6
+
+51$!ZGFE0DM-!+R'j!4a1Z5-1%U,jYi,T)$EfhQ`pMKT)DC`p)e1*!pH8&%bR$F0
+
+e2RbFZ6P1I1p,%)G'-fP'6XC-Ci%MhF`hME-jfib+0#l,d6DlJXEjM)&+A*kYEFB
+
+$MB-#e4'ANGA'*aShbmFE'JH&Ub-ZYk$0S+V%jE90-kCaD3@QFBrPbGD*1lG!cDX
+
+49eTG4EG2J@Y3Dm&d'M0p$`UQTk`DrFG"I%i5VArjYMaE46NfLD!F"e0r(XC0RMU
+
+p8)QMr+E6Mq&-D09qkXd)m(&m%rkrk5[jr'q8(BAbriTVUa55rmA@(BAbEm"llLX
+
+*JC8UX[EMj(kB9Vb5G!EFVi$r555[CAmKm-QFJ[U)-8-D$HmJ2K1RMIP@1$lZ[q(
+
++Z)XIV8VbVXHi&PY!TK@-5@RqSDVGb&fMrHqK'42F-ppDMHpTJDh[NB4$RGUHV@0
+
+jpSM,MY-Shl*p8,MH(c"Xi[cmVP0V,H""ijeDN9[@)HJ,E)8jY1rY18@bq[)aNdQ
+
+`190,Gi"NGNIecZGdpiEhr[k2eE$&[89bNeNR!A$Q2YEUXTU1(J!9je6fReDIY%,
+
+-FQ08YdT5+Q&YilU![QBP-8Np(,,lbL4e(0$b![QqZX!VRD6H`S,@'8kYNp50GfC
+
+qAHQKA(GE$CRj9Aa6KIQ@UibeiSkkbNjHGpD-Il5SF*@TZAh2FGHYX[J%14T2"@i
+
+d@3"`BjiP!6I8h"lThPI#H0H2PQ%jYrQdajl3ZH(A@"B1hAXP[4mi04G@`%cDScA
+
+eV+E0ArZ&"B$qY#T`DV,F[Xm0C9'RSpci@02Q&DP@&5j@RYX2k`BSqf2FQ0DdFIN
+
+Sb`U(,m[Y%5efrTrYcie*kmkDThQTV#@dQ*VE)mj%e6$bJ62a00#TjeP81"2eh+V
+
+Xk(l)Q4K5@R2-')iBjPX%1"0c,!+FL65EM!Pd[)bb6&&2Y@X(I@6X9q2"J9C[(%!
+
+6r"$m2k-YdMqP4BQ#HDZi(P+%fZ8&p,M4(jkBA9KpXGMaaGkHm!l"D9ql"Jjb-&M
+
+*I4r9$`6SF9NE2-#m0h-[r4+q`YQd-rGdI*L5qb'Uq`R3ikk*H(UpRIXHf"R&q4F
+
+(FSrGJ&!Pphd0p$pN9b2Ii6ef+ZP+92YcMchC-#Ah-5TI!$e1hm!6phEZSl(Ekb[
+
+4RER(RQLiJVi2lbBMqJIBPBr"Hp(h`XVTFk"eSUG,N5[SqkNZ0N$Ip!TMGU%23er
+
+H3I6SiHLQS&G6MqMja2)qEk1RcVQ$&4FRVA4Ad-Y'[HFGklCG+2HKPp"CS(NqpU$
+
+(qHJp@08aY-irXDXKlq3HTj3Hc$hQ0P*"(kqk'IAF+p2E$q8HMdEL2HK"Cr0&[,U
+
+T'32drm+Z4Vb0RZjYajA52[5iAN42"EhQY!6dG2NR12lHj"lQBIA`lAcBL4k99#q
+
+@Hl91kLUcpc[SXH)FC"kq%meURKS%k,r#VPTfacb!RS$6KJMrkNldD)#+8G"('MA
+
+[ARE9rpfUJrXh(N#2c1UYS1qZ1XS!28cl9+[5Qmc$kU(-"[iGHY3bI46dJ`b9H4Z
+
+lfZQ0fFNmG0SFc$f13ql,FQmSl&[B9FHd[9HBK`iViC2HLEiIIKAd23cHhm1ZBYp
+
+K(UKVh-[T0I5),PC"6rFNjHMrQPd&[(qlFRqShQ00kkqJlkYi!aAdfpM9X(I3Gjj
+
+1p$!'A"V!p,e4mlM5'[i1qZIKDfk3!01&(JC95J-CmibHeSrBP8mVld8I"IR%0CY
+
+H3irG`N%+qPk'dX)TP(K`b[UId+02@MTBG4$GB!9pP)'Hph9Jh[YEc-1ZNUmEe)N
+
+HHeCa#[VqKXEp9hEPXklZ3ir+%D[*!I6BZaLLS)p9pC&HFIhpjMhSXC0i8'eJ&+c
+
+c4cXV4RH"UdaI&[Ia(Pmmf&P"AJp9d2FfFVreP9GhSDGlD"kX1PJIC0CG-03'elM
+
+'VMH[SIp6(aHec$$@@9%AhY)eVVBGed(HSfSif0[!$RN#kpmE1ZpZGS8Dq%hQ3Gj
+
+$aDb1RHK453eAd+2X8G&cY3)$H3pARB1jailC#-ClSqUJKaU2$mFqp+Mc$U,(r[a
+
+)eNddp2hYl%VIpZ6hk)1aVh'`iZ,k9D-8pd"rSi21ed,3el2DIc$h(fH-DMfG[I#
+
+6i$ZkUVi#(3G@$@H-XUlN"`FcZ*m9l3GR,SqeH-Mp55GbMaPm,rIdGDAUI(!5plr
+
+4@A9`6EMaV+0QH"G`KcXmf((V1MZl5R4$fYE6@A&aGXB%"Ae2SjIj$ADP#D!rS"m
+
+,b-0mk[#h@MRa"201rS"jp286k(fGM%2SNdkJ2h!kd@2HG[IXAMQVjMC2h83RhY#
+
+DVEJ1c@UJqq0A`45+9E#(fXVjN[6*lANCHBPdDNCQD#9XdZ54"NFNNB'ThbAEXV(
+
+6X)Q-r-QGm"pp+`-JM[[@T*VDUMTiipi%+5)p*Al58f5B4'#'acp#+1T,Afd2%VP
+
+R,f3k-c)8r1'P(VGlF@**4&*+r*fJGNIf)YXQjm,+Q$I$@b3PrUXrCEY!`c4iL%%
+
+)fbCA*-$i0F52ef`52[BSI$`,i(GQ&*kYi1Gl3AZ8r-FpVACDb,$e6lCJ#VdT-L@
+
+dFJI,[eI(Mlj)ZSVUkrN[X02mVcdh[,5kaPee12qT($qE$03j*DdVri81cRr`cqV
+
+mIbrrf2r'2SR2ka2!EiGp%"MrDX#q@`FVZEq#R`clpeX4(aQ9N!$8MKqlJDMEI,k
+
+,V[c$@&K@Ic`PVLU![bIr$(mBi,qM(IrrJIrB@r1j6J,iB@KD!F2[US#eec[iMbF
+
+DHSbFra2T3VZ-rj&'rF1H0(jpQLq!2bZM-%h"(kD-5rk)rrHKCS#[Vc299IpJr`R
+
+'re+fVI$Ep5pEarphm"rlXckr99Ip+9,cAe0[j*rTRj43Vcf&9V2Q5)K6H[kYq9I
+
+V,q"(&`*fkR`q[`"q5$q[2j!!rLSBNrT1r6IbMjd#p+2i2*Blkhpk$Y-I-(N"al4
+
+qb(pPJMm&j[0mGG8r%+k-rkikpiAPX%r#XIb$2LABEI(eil[Ucd`(c6r@Rk@`,aN
+
+-'ce@rm$E$$0+rElZ!2idQ*l(q-pQR4lR2cLrB1&DIiHjUrl"SK1)rhqhYL$229X
+
+h3SSBcr!(+E1qHSJTSHbBI9qQN!!cFh+CrJmV,FH9rk(q[TRr&[d$-mHS0[+j2AI
+
+@R`,'rc"AAAAjRr'$fj5Jr[FjV(q,2e2$$r,c)rcJ5b#SrhfHM!"q'0*SBr82e+F
+
+,'ALXrYd2Ie(rqrUNAIPh1KRr)rKkr-IUheIK,qTrRr2apIl2mIcrAqEDp6PZZr$
+
+RC2(q"ep0rN$rS6mC0FlIr`$h)d'0k[0L"I!AjZ6aqUXXrlj(rb*fH[6q(p@rV2m
+
+(2MKd,VGhUV[dKkErqEEL"r)rN!#-'Zr22lMm#HTrhd56!(lBG#ZGj9rCDhY[ri2
+
+K(`6irIdI`%kR*[XmN!"Gr*rY9+B@DVXD(X!rQ)bDi-mrH(2SG"6IE)fZqZ[)BIM
+
+j0S6(p3Iii5K-hj5&!2kme!Nc'AkfN!$ImIi6k%mkKGVRF"$i5jM!23I'lc,mE*f
+
+9erJI6dBPq[Rr26EefZG#IEhr#dXrHUT4Kle3#h1HARkC[&"lDDS8%L)01!GHK4@
+
+Ni9iDp++F%Rre8h$h-(RKT@LmjrhI1-brcmm+H-N,TCURKq&2G@B`rDIYih*8Ii(
+
+qT91pIHlV32jc#[*iri8[K(+-rl"j)CdLlT[U%m"IP*r&p5GI''1hrZ'c,,Vd$cL
+
+`kG4bRrqlLrm`hC[l(j59,$lXrbX6L1Q8G,r,VJ0rDP%QiarI3Z&irBF*-h4HLQq
+
+bd'rp"dcrXMd22ZSr2m+QK[LmL9hk`eDBcI!VSabaNQ,ie%[82KDC9S*q!UAq6d[
+
+$L5+M5'Vr'ZarkIKa%b23(`13!2mq0jDq6Rk,rJ*I$XAI0ShihIirc0J0M0H"LN"
+
+'T'P6C(d1(8pC46(d!"he9E368+hkfdP#6r36+2P2Q$!2rSiQ4FpYJRbHUZGrprP
+
+B'f*Hrr-,DIeGGRqNX8[UAMJ-JX)rYIqirV1c3A[%BIqPIB3d2,!#9P)2m(rCrH&
+
+X%G8AFD6D2[kI4&)(Y[&I`4q%r3HI+cQ!rfaS!&2qDlXm*%R"%dp"2'6EY'KTX-C
+
+Re"cUmbmQcF,i-9*3*Z,(mU*XR"1%r3GehHQZqXIeEeiUkcqdEXZ!fF(h#"Pffb9
+
+lm%FBq!&l%2+QG3Vi,[cJ2mK9kTmk$I@Br`9Q@%GfHV,"%H#[IlK&!FGIIV&l2Q`
+
+fFJ`rc,51l*`X"Kd"2rkCDGQ+rS[UYV5Nc&@,#6L+(fTIC+F,XL[rKFcrS1d0Y(X
+
+b@P[pEHRrdeRHN6jr14kc)mMkri81'r8rD,[j[+Dr*T,8Z1GBrHAj$m,TLi$I0d9
+
+&af[HUrhR+0jrEZIr'rd2@,-hbMHjL2'YNhq+rkBaL[P[bSlh[f'fHT4[XJ)Hk)M
+
+lmA2pZICF4Aq##@m*'(&DpHFIm#XE"[6XV$rJ#2,Mch6BXT6mkh[6!2kpr$q0T-E
+
+lq(r$r1@![l2qQ(UAm4q@6P$djq(0C0VU(kdr26[V6`#rk[q+B[k[MrT[-%-rTT0
+
+ri)MEUrpjip'R2hk2IrI"cG+)(lrU2iRLrT1bBrQr'[,Ib6m8U1hi9Ip9&20IP4h
+
+hAm%Q9c'GrLIS)AE82kIGbHZITiC*J!rlIl$C3pr1qKI)2qJ2cMm!lkS&rAHXr`D
+
+6AIThkNHB"ZE(VrBrY!d$MZP2k+reEeN*hmLr[rlQT@TE)aK6r2IUMc0*kR$Hrc(
+
+d"fL[rZTm)$pHmaj@-qAkZk+mXKb&ac(q`5B@!cVph`(qUIh2++Ar@3B0+0B!h)M
+
+I4E#CY$+F!$EjhdEp"p[+RJL+A'kAqNb"b8p+T"6em3882q3rSC0rAIUAqjqdLHr
+
+(q,m@'JfGl`IdPhjUDNVQ9eidAr9IE#ZlHEQGC[VhqGppF-BdDHRrqSiGrHqd!f0
+
+&J"rf)4!-m%e)+("Q`1UV@)'X#2"2lm)2qN2aAfP6l3rdIe**kNKrrEd"V&QGqMI
+
+!rl1K!FEUIm[Nq,hi-dRUD$rqPB$r6rd(YImUTV2[aCm&q2hpMdm$rMre(c,YL8V
+
+r@jPr[KUG42[aCj28-Elm&ll`IE#QGIDr![T,p4p'+Il$XSrmKjm$kj0[DZSZr@(
+
+8D,GRF@+C98(p4pr9[[TE!4Z-@4IJ9cB5fC[rDLMpPJAiBHrQ9r1rU++kf&8"1E!
+
+N`&q`2rr-reYQ6B!IDr+qr1H@He"md8db2EpEQ5-#&2dRI[%VjE,l9EjTr-B"kb$
+
+Jrm[E&jVeeq#)U[qX#2!lf[,[`fphP5af,3,SPJ6iBGl4UrMjC[D3!!!,![c+jLp
+
+lq!FEplZJr&J8m,q)eVpc0QK9UJ-rE2bI@'C0J(r'JIbcM4mbF3j%QG8!rTRlqHq
+
+NkK[BEdQ3!(qFDV`[riAZ#qZFlYSPjE3%@3hJRldIIeTeC8eePD)!V!I`cpR22ma
+
+r89dj+N!,![l02F!rk$r8@KE8Ar4-[SSI&J'b,XMrZI[jPePq)9SJNI`@"2M2fiq
+
+raJ86Z+$rDdh!2jKe"rM$qfRp9arqh1UPH6"r`D)!2qUZ9qYI0Q`2CPP3Ieclkmr
+
+1EDK#3TrFSB)1IES`*25E0iA-IAJ"@)T('*YEl6TSk#A5l4GSqV1prm,mRbqDJCB
+
+!q*&0Vq*RrNpV![c)Zhhi9IqR*3&qpf[m8lV2eJ6i5a%a#IUH0['k[Ii`rq9ZrX@
+
+'K2km3XHIm!ImZ%V9r[T$rCI@"2KT5hd[IZ'rl-$I-b6dTeX1ibrIMere(ql+[a`
+
+5HYmCKr'I[aqrkMqd*-#rH$pqeApS5B"If5"X$hl0rl2Q8kGQCYM55-pZfk8EVY`
+
+%rfG*ekc#hM@qUNb&9Z+b)3IHr6QST'r[dArFIl-lrc%KS6qliR$qU`l8AqErXLE
+
+!MjX&[eTr&2GId1lk(ad5qZ`[$q0(6piqr*VrmlIi3d*#I`,IGr$$pZd(p!reIlB
+
+&"VpFVr3[f9`G"Ip6Tri42flGY`mrphpH34iR`5QAK5`JEVkJ%*b9Plm)Ap`eB6c
+
+mVj0@JNFSk)((`AYa3)2LY)Ppr4I9rfP*J"rRCZc$crfIZrP(jqSGjKmZDlZ2IiV
+
+rXrea(6qGUh)Brj)$q&Ar@iE04R*(h3hI!54hj+25BaAC*E9Z[SAG"1PA"Er%,m5
+
+qb(X3*HTHq4eR+EkpYrq!rMG#GGBHrB9BhYCIbYYlp"IGlXQHKQPi"ErLBAS6rdA
+
+lkirUIp`rrqaX-LUGccrMrVrGjq)fr$lrNq,rfe0rk"54`r9(U6MYpFFC+X88M5@
+
+526A,ACGCAHX'%3T#I)P(LUJTKU%V-FiKm&5-icF5c!HjU+S%3Z$Df8p+(c2QjD#
+
+amPPbfmXfI'I-bf5XR1`,GV,BX6#L-jJ1C%mCJ2pMR"I!p`D+q"DT9r&@+EV'9HZ
+
+U6)@Za'+BkA,KP+6*54$pPEXIKYHqF[FG''-lKFEJr4D`'26ZA3q[,j1#Jh(aU`l
+
+S*ZV#22M@)qV#CEY4Er`DSYai&88pQD2HH$1JMMjV'U$q15"`G5'RM!$G&&1d$,l
+
+R`Y2f9'FRhBVU-5e&45ed+kSdk#CHEU@E#0j*Yk,0m2dj)Tj"!SQIL)Qr*`N6I8p
+
+%+phZ'3'*MbRk9cAKlE"0a$1q"&r!#IrqG6ILHb-T`UGDUAB[-XefQK36rYm!B'-
+
+AF)9T![R-bq"l#b+IZ9(U9A4D#h+P0SqPb,G6T*YDFhh[Sq"HM+Pp3SUT@`N)eUV
+
+3d`Z"jRB3M5EH@HI!pb,%1fYj'ekDk90STVpaYe+&hpN-6qR6rk(XqdjMmKFR2$V
+
+*UQ*V2TjEYVPC2f@QEYXHPFR+V"0eqdkq4k@b9q@0jkA3V8+G0Ml$,B8idif0)5A
+
+LT"Y%mMReI(F$j6*V!TpKN85HI9kEj`"608RQPe3[Lj)PFjGD9FjD&Za5Dq`LqrY
+
+GDR(A&2mZYD&d0e3VTeeU3qQZVEjGDN2TVUfqA@T$S5VjGkN0K@NjeNLle)E#4)K
+
+$Zp6#Nafle)E4r8IK62"hN!"`ra&EQUBEH%)`,J2'4CTj`MK(GRU"H)pJA&Tf8G[
+
+qTK5I`kR@45-1bPpERF#ih2`XPePA+,lTEEU(iVBl#NfqmVJ#JC['1@fjqAjm49Q
+
+jCPjTA)%G9VCZImq@j@c6@a4(CPU12bi$#PG(R-1KkLU$6aNcmjaqRNhce8XDPjp
+
+@N!$RMb[+Q'A@A39IEN&(A+jYKUNrD&b"-ph8563ZVf$F1(mF,*ZKmX#)Qe'8fT&
+
+AKkh!eT%rKefYp`D2#jbCCYe9kP"QMURr@$e3pi)&Ke``kKLk+D&cCN(EHr$9TbT
+
+V(4%iJjA*ifpYGIZj5l",m#!T8#FZ*4(lL*ET,E#A-(CAHCHJ'p[`iT@YEZI&5CF
+
+5H`bq5rXUbDU[%EX&eMA9hFL608&eEq'C490e$i1j9+p@GpaE!$XiH!rrHlf!+PQ
+
+CUr[U,X@R+r-(T8aP$PEE$XGF$CbTc-Q6cQ+E2'FTFkZNE'9qP&lpLdk2h[")jBC
+
++q!0r(m%l#1Z*GjJVCGq#phFmMZ"cZQ$(ik+@QA&NqKE-Ll,$bZ%1X6C*9ccbqQP
+
+-K`jaVJ9!KpLDB!I8&MAe2pa3Tpbq6`fT-D&Tij84&KAGFc@h+MF'(H)'Rm$l!6@
+
+NaM1E0YrdSJ8!0qCB&Ha9LlRPc*!!RRQ$'ElC`2pceUjUfKjIUqr'kYrq+T`0B%*
+
+H329I#e0,VPN2HCV8`SHLY&3j&fDPbDFP6S4jpFRX8@AME5e(4fS!Fm%IV3&MQMB
+
+fCPY8e!#@@mD--,B[d6lp0NfCkpUf5AU1-Zm20dNIfYSebU8lq+Jl!,fP8,J2rd-
+
+'RY)mjFcV,5S8LTTEaX(i`*EYHcThRi%CXHM[+CV#GA-++8TZeG"&*q-plpceB,X
+
+*[F,ePeqH'N,bAX"Z)'I-8'@RMEIbmrQmjfKR-IpQ2N-bL46J#$)p2hPI`jPi2$q
+
+i26fq$hY$M!@mPeb5lLkZ*cYZA%efI"krGj!!(6G4RkIPqZb6qkcGCjq3!'GIX*0
+
+RIi2I'[KH#0p,iEX#[YI#pl2`r5*mEiI["[Mq(Ac[Kqq$m(dB[Sr$GcYmRi2[mq6
+
+CPi,JfafqIH%E$pmam!9rmdY6iCX1hl2K@`MImq"E#YmUq#k"lbA`[3+qDq!,Q&m
+
+#c#qYJqpAiAX[I1q$l`2BMp&60ihpRmMqmjRJZ'XURY0-!T!!bZRUhQS4dKBiX2R
+
+2b"Z5eLX,[9`UKDl%2BcjAQ0m[aLq05$IH*([AmLp&4crU3)hlTH#Cc,l2iAp4k`
+
+82iLX'`$r(4Vq+kq&rhb[-4-ramIaFp`+hNq-Hj!!r2Fr`@CD'6`[+D3QZf911kQ
+
+CK[Hd(a3"f#I")50[j2Qh5k(,d3r#GcXamCq1Ih"E)Rj)f4f)KlUK)k451-LR'hN
+
+q!3rDjY8pB8`m0X&AcPqk9ek%0'R5PLh)Mlq8G(lJ2U4mll#$r'LT"k5#Z[J8IP3
+
+8Yqb43#TQiMhea!3Y#,SdD%'S"2MY'[j9f$rMHiHp@ap)kH0mGRS++IfhPMRUT24
+
+K[+Ii)bM6D2iIe2![rb,mjhZ([BIIrE)fVk#8la#Y'0U*qeIUARXF2pqB6peFLQm
+
+3"X0$f#jaBpK@CFPXZl-8EFXP[Zm3hlY0hEq1lk'hJ'fN*[(0R,6rbUC'kXD+I(-
+
+iLHh3*kQl,)e4YlU4e2h+*,CTN!$%0jl50kqCU'cKU1l#"@04f&D%#pPqHK,I8iV
+
+YU`@Q#EDh)0pI61)h-&4&h5Q-EhHRE(R)GLf#H,CceXYXqkm(e5fB3PHKhZ0lK*P
+
+m6KAeDaqrSCipfE+A!kRi!Gj6M`$UM8Q6X$jrAYEV'Ghc+i$rE)'AeeH1&rd*H-i
+
+bp)'ZHb45&BmjSR[kSGl!!rLEGIaA`(qq4pKlpAcadhaVea5bq+FYqa@6a8rJ2DY
+
+RTDA)!$+b5FrrPCq#rhb2X$IVk5GRb94[9H%q3JareEb@[44)e6Picr3@kKRNAj1
+
+Hra@ibb6I)q`Yr,pZ*XrH88-U[mle@JUT[,YP,ap5H4[H-rbShC!!Ime'rZQFUlI
+
+F1rS'(qqGaK&0'eGYY+K`ll$F-ZG)10XfmU"lKdq+i5l4&MFQr1GZ(SN8,%$R#0p
+
+J-CKYYDQ`0LqIGl(3JI,J5GU*)RR6M#R(S@`E62EZ"9a0iVYDT`3k356[2-6,hqf
+
+[E&(APPH+Pf6%U3UHf"p!4Fal5DmT$ASIIkLLk&Zj[&p4*Ua[L,[)!U#LR'Y*8&(
+
+dh,+U%X&fb(c6l`1k#RII)@NiCTUa-%eVYe2@TAlEf%YcJ,+VAK[19'@(%l8klF-
+
+0hV1m9Pf6qd1-jf`ISZ`NpeBqEkk0*MmEYTTNT2,HCK,*b'RCm)'N*k0q8rImI(Z
+
+'99HrqI@UFNE6jQ[k@9A-X1+jC69PP,+A'H0*[MU6#RU[Z'0[-()X'4HQ)hQ9U#2
+
+9A[(E[X'ZqCQ[FfTLdmE,,l@Um!hbh$*14E*G2rdUb@li1-Md+UaVLNULeBVX11G
+
+aXU-)[M2JENBXI"2KQ`RIHI#YJqp9m2dLI1q&ld2`IBEXQ"N(hebbBcEYB[c%qeh
+
+[6A%6*kmZpfjCIHfU'lhIJB#[H*ra2J$rDA$[eGHZUI!qYhEH9IG!m(S-L9feG2@
+
+e[TF'A22Lp9XEkKT5'Y)DV[4Z@E9dcAE[1J`F0IS[4X[H4lhIm'jY1+qKB09Ae[l
+
+MUJYmlrGGkePpTc`KA@kB"3L+'aBNbb-p)aT+,j[EF0lDHDZq[1TfllUeIl8UbhZ
+
+ApeE[djHPV[MZTdZAhq2Gk2ha55[qHI@emZL4(S"*ReMq'$aa(k#iTQ%jrS0R@1i
+
+L%@6$%JJVD2M%3,aFZf(9MFNbV#a3ALk2V*I(6%aDA6ifG[4B`0+@SR%+aLd!B'A
+
+$)NKQ@X-5leC)8rYE!lVb(-G5X)+LQ!1C,Pbep2V(j0($!GciKXXD["$UE5J&%Qf
+
+9*e4k,V00U+c%2bAiT`,JHfrbhJf)ESPGkERZ1Kr!q0@h!cqhV0N1M,kp26%V2GF
+
+qY,+aRHTAI2ZkIeRl[49h!@dCAD)EXKU@AcEAZql6hk#FHRUb`S#Y-M3Hkd[U,V2
+
+99j9A9c&fbqkUqNUNKm(bVBJMBH4#qDT[HEGFmEbrFXKM4RV'a[(5FGfp[KF54Jm
+
+[,d9fib83B$1`a9feN!$&0(ZrkIh'*$hLUPZmhr,HSMbpiL([CUdUAChMhHlG[#C
+
+epDhHVhZr-Gi2Um,MKT!!@qL9!6#Zi4-0q3dVD3VAACecr8E[RC!!S[[JBAKmG)0
+
+0+6A!hfXD&RQh6Karb[K6IBQFS)"JaHSjHAKp&IM91(q'+eXEB$@Kp"[I8!1S,X-
+
++#'r"@KAZ@Z$Dr@ZfAlN!UZ$6Rhc4Hcr`LjIPdHHfe#`rpk8UL0S#"AhGUNAHClA
+
+d5HkZZ0'R!bJ6K4aiV5i39af)'af)`pcjilCfC-2VUeY4TEA9PFNbG0cPU,TU'5D
+
++,UNZAbLM1l012NRk#5h"13dA!EZZD5LlkVbSE0G#pKc)YQ5j(QbXLkVFm#)-kB!
+
+(r`B,'Dhc@kl-AIi9S2$bKPRHVC!!RLmMh)'X+Uji!@S,NT0AKUGlAAI6QZe+,D5
+
+F2`P+85V`qFU'-PB$YQ+e[ZUmGMhN6rB3++30YD!C&RQhV2c1TrpplHHmcbfr',*
+
+!d3kQ'@SSK%)dflYe65@mUC+R(i9,be1eG`X!ASFNL"hp#Er3kAhemK@rARi2&(#
+
+emNqS`CA+A,*@NP"eY5JKV,ZXkXC5cHHVp#K+S!TcG'd2$$rjC(Kf9488a+FE(,b
+
+BbVMGQT`QHcI60b"jYqJdA#Fc+QeCrI49IqIG[(Ekp8YL4bIlmIIe&m9B6'5l6PU
+
+ciZT(%"(ND616-bJ&RSiG2FD2EG$ST@AJ-r'(MKTG$%k6aFMfKLZ"1NYB[IFX,Dm
+
+V+C1[HGblqDT030r48+$!29Z2)0K,2$B+#`N++jTV,#XJhq1868(IkSSer8ETLZ@
+
+YdhUjH5qeE$Y'mQDSVJ)i`j@0+&qI%+6dSMrhd#Bkh5$rB6l4!+B(i2!#!qG,DMm
+
+$6KpPmmahZTBd$b6VPpU8JQam6XHC&B9G2ffEjLF268hKIU%2'P,5fM90@krl`C'
+
+T+H0IQjV#FX6k5L&XKqapM1Ap@A-Qb"R+$QV!T2`E@[B3)lREXH[2ql)MP9daAmA
+
+*FI&pVU19(BIEhU@Z"Q0@&FPj(TR,Tk&fClY"[i)AhbE69f#HD1H2,,T2mqmXqSG
+
+@rmkLHihqllZq4)VM6ri@YL29K`9&DV3e6jRqM!9!Mh1f*8'2Nq@@GieEf&Ea!ke
+
+'rr3qQ$DMGidVU2Y)kaUrbDLG@`qmcUK*cC-hh@94`5L@@mDS@'8riVBD1%RC@l'
+
+YpR,ej20FC$cIUT)b6NF'mYSq80N$Z!hRfFTqALSqMTIMiM1Yq9`klP5LhK*&pAd
+
+"eD9[YfjV$MC+T2FEGHTrYb-ecl)YZ*qSTkkq1-rZ4#hTFq($(PZi",DD6f3(H+f
+
+@`36bCF"ZbSacpM-$[Y!6UrD8kG4S!CEFNNeNK(0f(Zk)'#Z450JeB36@Nll+MJJ
+
+$X4Cdl[5Tl2Pm,GhY,2RFRm+D%E!&ci"ie-NNf3Aq`9@`Ge,+TETZANGG*CT@J-b
+
+#(dbp$i)Ta-Cp#'EJ5IdHirAh8CBDliAMK(6p2J,bBGahJh`BlhH([5L-q"lJX6I
+
+L)m%VBm4(B4Y%cdG2%Gm,iShlD1#%F8makcUf0fi&UH2Y!kV,Z1m,2PrM[KpdF``
+
+m!h$IF[eq-2KPMIXim--Dpd0J$b`$cc#Bpf6%$rq,e[KN)*J4IcTZ-D[IRi(jdHr
+
+2!FqXQHp"HViG0d%meMjfR0pUI@m@c2J`lY%rDpbI#jjNirimQ*P[j)[Q9*pVd!r
+
+hALV6iQ24Pk2IpiFp(JRZHm$1r"qhiR2KeSBdAb5j'#Ta-HCr[&,I%0SJl,@XC[8
+
+10&3mcKVCT0c2J9T9!Vf-%,Y@rrVp-aBa$Gp3R%fMhl1pZAIH$`9m-)PG[CGaGi3
+
+[kAa'34kQh5G!6BG*i$[a2!6e+4JhE'"R*2!IjQ9Tpdp!6FDY&0JCXaRqj'[hBh(
+
+2EYb2NYr$rZH`Dk&kIa*SR+"QlAlm&c#*qMh`(hCc8ZmRi)bA!ISppTldH$0r%e#
+
+rlSi(23Rlf+[hLFr3D1hq2rDmIc,X64L-I'CR%QVI`ISpGNRdr*[[6`)p%+,cG3V
+
+bIk"qrjplm)qiRY86GKk%'N2V#Dp[2fbY(e0aclSreT1TX*HE88mqKRYkkI@%f[M
+
+eHM)(HRUlkmR$8)q0HR)Qq[6eHR)Qm0@S*cC[DcfaSD0Bje-UHY$eHT)+-a'-HT+
+
+"HhhTp53$kjI1T`cd2HVe*11rp[!Y%rL`1hiaGJ2dHT*jCfXpb33pY[[p,*M2BG5
+
+6Xp(CVGH6Xl%Hl+SRdk%H'2@NS+QeRK6J$*4Gq!HL`caEZaq%ma@SIJ)p!eUR2jU
+
+'TfSC(B6cDI6hKZ,m"[EHZF#&-Z`,,G6HS`jdichF1j!![BHZpTr#,#PSN@[[i4k
+
+PZKl$%b(f4q`MjKYeeqFXfR%q"ZE,L"HE!!i9qfJQY254)4R8[db5jd&6l5Q4(cb
+
+UFCfG(Q+rbHjLhmB)XIrRB2fp3X3ZmYe0j+ZE[LG'8AEVHiZ3!"[Qqi)[3mAqRph
+
+%IAIp[6*d9JJmX@*reNLa6fPhd3[U,[)GSI2Kr%`I[L%L(`NLra%YHh)!2[0Hj+1
+
+[`0p0m,Z(H0pXAhBApD@(ALr1[pfA[dL"YiIBpc,5a#2HLa(jkb(i'bALSd6pkU(
+
+cT`Kc+qTI$m'R520He+YS2ArI`eP[HVlY(fr9KqABrdM3lUYKjT!!dApj!25SFIm
+
+Sp&Z-qb,3imEp60b+@1qri1NTmK-TkP%2NaqL(N@+qM*3a!m6p5"@VaGPb&A"*cj
+
+b5m8Vq0T,m$0+i)m5p8%@qBd6q4fShcq-mepd2[i)p)l"RmG!Ai2IST8rS[ld&hU
+
+PPmKr6e'IiN9mP+LR23@Ii[9m2i,pPXpSqAJFpGmcf[eFk&FCrE9j-"Q&p"Ak`q5
+
+A`0Y6m#9+j+Zhi0Y!`EHHSRldeZ[MJpM8%rb2&RcZCH)4pE@A@Fp&[RUCI"6[ma&
+
+cH"j&Yk$3(d-&[k-&2iB+2N5EH-emL2cf%2RYTI2rBCb*C2*$m#PDl0rD@q#20[-
+
+MkNpr`Crq)KrG4,lM"(rL"0kKTMifpBqShqEUm!0%24PJiY2jp#6ZfDRcp3RX[q[
+
+eqGq`rkI(2rQh[[leF)%h4Z3haY56)Tr$4,fQQf$SKiqS8r1RmrHT-e[jr8[3JkD
+
+qk'2@6a1I@Br&rA$"YpjQ[4$j(Dlcl5RFBd[8`ciQ(P(2qJSqp6(aLRSie15A`00
+
+EVcmlm%lNSlIC[a*ml'2U8c0Hm,Q2i2mJmAkFRUmGf#m9pEQ[H,q2i%0IJEHI@Im
+
+&ArS)[[39r1ZPipXKqK1rJRk@k3rT+r!S,8Xp(k,Ha`UmdD,q$$2c)q,lk[9SahB
+
+IArU*pf)&hiDEq4(eSTrJ5k5S"`2-r1RjHKjRPBYk3PG1-r)Kp%HXi)FXmY92h!H
+
+*prZ*qS`@%M8Ik(Fbqi2L[AiL[l&Qrm(NYq",V1#,,1T6V&krAX"qY-M(!"1[U(F
+
+$4,lk#l`$66i*IB-@&q2ddI2hDp"[4[eiiI-q2FG(1+Ti"Ej"C[k%(ZK[kRfcASY
+
+k-NalMi6JhX-kAbU!@dCq+Q'HYjQ[rUEH&AJ(#,lh&IND)2J9)qS6(H0Xj&rRCaA
+
+-I$6bmHYIq2)c@1!CD0CA-el8[`'L(Jd3mIU50dUmPPm5J[i18Ar!Mk+H'X"LjUZ
+
+Ai1p!`DpZ)VkRMZG&i#re)qJ(2BR'k5li0PM%$a,eF,$!1dM`QirFj'H)U#p$4(b
+
+%KSq%LRlP"6$P`Z"$,AJXM2Xkm-1BHR#``0Y2e-Xi`4mqSP2PJhJr3G`2%RLkLAS
+
+3BrBIaAZ$4IaJ86m'QIi2NDmKJTp$62dUq0KGIlmHr$HNHbYIiJ6rimhqQ-PINBm
+
+%SArkLR`10[1[mB@%BMp3pm05I)*2F@Dq66kEpfDr6q3R6[#PYekId4X![Zl@I*M
+
+p(S%hAZ!C)ZVP%-'R3H+q[q"lY&i2`pVeI*cJ&eL@@r%+23A@q0Ci8hq*qbM"&pQ
+
+XrfDrAr"YL"N[hKmQlZNFAb1r)PraJRq$p2V`)MDl4Ip&&[8UAY36@H!CD[DrcAS
+
+Sq"%[q$p8UiFN$2XG)Kr$""m'LRSQ#li1-rdHCRr4l"qEr$,p2QEr6Ec24jkVp8I
+
+NZlI!-e6NDk$T2a$e#6hZR"rKD,JAr)J3I*)&2iDCr4hc2F%[1[((Z"I[4q[e2Vb
+
+eAdh#SEpZpUXM"2m5"2k"!Pq#H'qBfEm3q4SLkZGJJ@H!`"YVeJHcAJZmrFck)[M
+
+G6q$T*r$%QreXNjpQrm28Hi+2#5)rG'8#r3`5q8N`qa-kIl[M((1KMq*0r5ld@Cc
+
+J3i,'2p)GjNZBH)EVH,["A+#fqQ$kAd4qZjRp'T%I2R*Ia5[H(blbhpH-&h`$Lee
+
+VINhrK1Q2%29RZ1$,F-((i5BHXlmYkYr`MXhDrcm!N!-0!!YYH5e-EhG0C@dZD'0
+
+cFQ0'4LPPER0P!*!*dc3!N!m8*NS!&'51!!mdq!"f!2P849K88e"0)!%!YXKAQVE
+
+DTE%!!!'U!*!$,3#3!lN!N!-Yd!m&h3#3"XEP%3!)(1ab#'+9JkqqM)bK06Va`Ak
+
+Di8[c1(S6%6,B2P4f6N,DBEel,kTa4EC#6[LZlD[[LCQ-!j3[`!G6dBrcJEKGiRX
+
+a(j!!rFpZC8amF@mL6mR+S%aQcJe3`H[RM+4`b1eXdPCPV&)!ZFl,0U-'Gd"1L)8
+
+U%)11mV4bq"b(qmqjlc`fXm&#XbB5LT!!-Jr3YLfc,BPRh4TTpI"C'dc5UAKh$B&
+
+J9bG!M*PL1J0UGHHi5J@0&R5d,4B!!#0NC@CTEQ8J6%e(CA4$GA*"F%jKE@8S+5!
+
+S+&0dFQPZCe"dFLN`H$!j-6!T$C!$$'ej,9"33d&18dNZEh0bBdC'+@9ZFf8!N!P
+
+-b!#3$a4M1!!8pDJ!$c6i!(3!F9K$6dC08&-J!3#h6GRbYdhD#`!!!4i!!CIC!*!
+
+$T3!!N!!&hfYP@!#3"ZFD%3!)XY&i2ML`IeK%Tj+T*&--%P1(6ahH2cdkG'UrUIh
+
+5`TN$Tp*m'80V"!+Y%j+$lAdm`H0%0K%KJqe$C@G9X(AlhAY4M5Zb&9,DkEQM2k(
+
+5iIhp53Ccq'9%pfqI'Ji,E[KSmY4@d(kNJMbR$`1ij1@6paSr2VNmj0216lj`mUi
+
+!4aC*VM"6rml*ZfLGl4R6Ec!kRCeqhIMa8",b[,prl&%SVC3&"J$dC'N,2aH2mU5
+
+,QVh4-[I4,MI,lF,fYE,"0YTP&m[2h#GYDjITVCNXjCV2kB!IV9Y,TFB[eY0Yl$E
+
+EUIYCEk1&e4PEf(j[dFkmI-YXd"'fmf+EEArKAS2&q#,KTEPiF&2q4[&B`0HY!04
+
+,GMfplG(MPlCiC#',j#"jD#H"4q!6H13hZG@FG0*VYr+,EAE@d4l2Rr*&bYr-hTl
+
+fmPYBEaIV[0kYmRFae[Pj6G,H6QZ`(#eYd-@kf(l@H9[)@[M(EXG[1C!!"mV"*Ei
+
+8"frK(H3pfaH(4rM#IlNih)3["r)ZYTcf,[cFEqN9"lNYRLr3G9hAjA@pHGBTbje
+
+&$NE!eb*`Jq4J"#3,@6Kip"3i"qCP`8j6p1@6(cM!Q1kEM5RDDQDEi38(Q!*MVUi
+
+hC[4'B`U'KIaP5SdaaHiAMc+&r'G-4,l22b8e9&p9rXBf*9UD*-$Fr*@D$LXajXI
+
+h5M4ET@RLL9@aTTK%N[UNEU6qHSG%AD,iQcbaXV&4)`AHmaHpdAUkrMSR9YFZVHY
+
+V50GIe[cKKMbCiJ1Qmc[C&!rKfj[&lh4qfrLGcHm#IKIbfmj["hQQmVh+&2pa#Gp
+
+Vq&h2'hlIcqp$r$l#lf1m`6[[DhcccC2m2X[[mraZiIFPIPrPp`eqhcE&q`hKYjj
+
+Ie&4h'pq0r$Ea1iEImIbL,cjpmHQ,6epmqZ,6&jqqq26&Tbmq2I(TJdrG2VfSPcT
+
+3ZdmrkUQjIKFap+@HfRhkiY-6Rjlip-6R[5r[d"1IR[Md*+!R!6d*k%P!2`,k%G#
+
+2J(i%p#1J(`(p#1K(3$m#qK(3Mi"q"23MS"m"r3MSai(8m%&qKr,l)Ak(NAHBe)8
+
+q"I3SS%F"[6QSM&r8H0!NIP(R3G4j%(8H*(@LC`%p#qKC3-m#HKE3Xi#H"I3XS'F
+
+K23[T@8KY)6d,k9P)25'eK0358NY),5%p#qPC5-p#HKE5Xj!!RSAd,+4R)6d,k8e
+
+)Ed*k%p+EN!$k3qS2U6qNrT!!qN2U$kNrT2k3!2Tce*qMrKcejkJr4rdjkXp4Iil
+
+kFp5ISriFpHHS2dIp1HV28Aq1qR28Rk2q(2ARU$p(r6RUcmPXS1BF2FM4Ja`pb%N
+
+F2FM4Ja`pb0'$($h)di-m2FM6Jc`pb01$2$h)di1mc"0Ucp1(2(h)5`apb01(2(h
+
+)diG'X$a2,r,dST&kmr3M6crbp#022r,d)dmr'U9@[NFr4NU0k%QHRSaNK[2dTBi
+
+hGFaaR[lNk8qHrSaF`1r0a*!!1k*2%Af+k&0%Rb,b4I3TSNm4IBVS8852)[S6dCq
+
+)rN6d*k)h%Ef*k%Y%Ab,k%Y'AL&k1A-dhqK24RiMH423QSLmM*4Gk%p'AL(j%p#1
+
+L(a&pU+-2GI5K6V!AIC!!A3Ej$`%r$k''3hE`Lhb(N!$Vd'*q@rK&VBFZXYX5par
+
+X$E%4R-Hh)lX![PhC!r$YNjrI`5,hc9f#hjhZ'hA+pf[f1h6[L#Im*QE)0hF'I(-
+
+Zq4d0FprSKh`rCErVk*&mQlaeGpR[HYPYq'hk-B3qmrX$XS2JqeGNhq%hpa*m&jJ
+
+&qGDp+#k@2BMIT[k#khI"e9e`H3p`p4r!l-XhCPkq&lR[YHlEp2d!fBIiEI1E[Km
+
+)MXMh"[[p`9,hcEd+hd0PPm,h-*GrZ1[6#("%[Nfr4VMqM(EcFiM,GkLVre$Arm0
+
+FrX2Fr"dQqaUq$hI[Ie9f1(arf2Ar`kkHCMGRc@iHQYdF(q(U1F,K`4'Z$dH1F0q
+
+Q2dI+hXK[drqMh2FBPrGS0lI(Z,c(Z2iHir$N'$I(alLj(ZIQGTbVIaai+GqQhq-
+
+bHGkbhmFk2$V@iF4aXYrbqcRlIEal2pl924lmPQr6Yr'ZhbI)2Xa[B,"mQrFRX(I
+
+bqd4`9Vi0$TcSj[!NKjmRJIhbEHE[*)HI*lPjD*'GR0rQh36Aj`PZ(LGXFYpQELH
+
+i[NadICRSF(+Ll26m0R91G(-abH@CY-4pQhP[GHpDhCbeZVNjfF92%9i!hlqfc(j
+
+2G[0k+RX-[dpc1(fkkr2TVZp6h(bFiHEd$0H2-abZRHR`ldcAciqi1MrLkTrUj[S
+
+X0jGR1G`mfr9hZXYrMT[AmebH'DkqMlTkchGc0G20jdaf(RkhZIjHi2TjJAYhSF1
+
+YLecHLa`HAq6URqAkqqYZIMlQj[-h(!l-G[KrXH[6a3lI,h&cGSQVqeVATqYFRaD
+
+aSmQhkHFLKlrAZreLLCZ(*Dl1'phFhHMUZ[d*qrd*0aHIF2hmK-Zhf[9eYF2ae5l
+
+I(DiIGcJmZG2KiCdZrbGGICpdI9cMF1P6,[mDejme$XrA1,cjP1[VTaaZIGVepp-
+
+1IcrYq[aTKmZIFHmriqTHkrTlPm19ZabqhHA`j#k('hHj[YhYpT5lYlK[Jb2Vh,Y
+
+eVYjeVLrVA2l2Z6QpcHj"X[2HEV(1rXA+PlA1D'a-0$49ep@@,Se9eb5UTTD1ECa
+
+3ZT53!!3@9YF5@,#r+DY[5$3fPRkc)G(8h&"lIfP6A@QLTETTR+f&r)ShI@c0dV'
+
+eK%qI")')lm2K*JprEdf92-,h%[Pf-RpCq8ZLbCmh,2pAm(rQ`9cpQrc5RllIT(q
+
+G,rha06MCphhiL`p5l,UTmQM6''q)0F@AQDE%#MKGc-MLX4-R-c0Y*bbU@(Mmc(Q
+
+Q9(JhcR'Mfb-Dh6jpX0[A4V[pCC6L(fIZ&hr[2j!!jrml*2a99Xprr-X-'rlkAfj
+
+rqF[rRlr"iYiAS[qCrpErIab&pcrSrcrrHArBiHrpArV2!5Lm&Gj1G%U$[m[FAkP
+
+hBph[2r`9hSVZBKKFrM"iYQ&`cm2J)BI"a3b$Ca`'9ci-[QCBbpik`5CR&Tik`dc
+
+Jfl8a8I3em@[I(-A[dIbHe45V@CPpGeE&2'd2[aKRMR-66FX5$6@afUT'RqIFHHr
+
+6QXl-jTCFec@F(k1J*-pjFcA2e3hj2$22Vfkk`"D9[$YppSQDDqD*$Bh5K13GHcL
+
+Y*hi"*FdiCH(m@AYU2cY@(a0Hd,ljp42QDcfcpq5C9YH3!"!0iqR,UQZYPR%BQTj
+
+IcR6KV6#fNKR-kc$Bf'%`fm0J+H809",$B+U(SDSBpK!X*+@Dk@b$Rj-Xi)+(S@-
+
+B"KFl$0j9kZ3lF1D-$5FC-cZCj)@$BH1CB6KUQZ%`Gm04I`b(X4X1Lbr[`'*,jM'
+
+1qE5JA6JBhBeN!"mm(1kHZTMKF-V$AFh$h3`-Vl$GFN3hUTQ*3X`!""S1!Jd(JBB
+
+,q[!0f2AK--15HG8,QF%K5KC`h-2KpiHM#4J1(ciFlPcHJ918c!r[RDhKU$NN!kC
+
+c1(-fR"NE,[2&0e$-$*FjBqERpXl@F*QkAmlcF"3+[m`-%R0C@aK1eLVdbE+IL4T
+
+hHcKpLiZrjR*Y#QB'cF&j`BcJK26(dqATQHPCk426Xp2Tp%ATMk3VJ`qPCk526jq
+
+3!(jIqU6dR25mp2cdJ[3(dKAT$kBATFp)RjNq+ldN(8mRdQHRUp2RT*HRDp)VdVA
+
+TFp00kI26&k4Edk[5UA53!'j2Gk3[6Up1Aj+q0(eCZM2pdI6(dZZ#13&)QM&"HA"
+
+5X#ci4,!Q@"ImHE!dU!l1#6iCA"JF(b5$@F&ClDHd,fKrIrX(fNpYVfKIf2l"pY2
+
+D&`8R"Zm,dN%3G!5cJbZSiCVJBd&YF%V`rL!4e!@93Af`3,9ZR`GZajSEc&3ccEc
+
+AM$B2Qjh"[1$NB,ijbk`bLi-2"+F'&F(#i)2"DF'Li26J$,-P1$2iX$NQ@"`X#@)
+
+Q'F5$+V2%[$difaaTbXbiB(P3BcjN2Q`Z0+h"Z8&$d"JdQ@[0GF(j38Z`-VL!GHE
+
+SS$9B&E3&+I1HS0e-0mF&&`8A"am*9JHA"*F'P`@G`8H$beN&QS+e`FI0@$2'[-f
+
+-0qAQ,m`Ac#Ec4A16qC,jV,R&I-lFD[k+rcrNrh(q[mMrPrMr0r`r`IqAqIm+rer
+
+PIc2rAq2rAjPlq2mMrTrNrpqDqm`hcIhQ@qEEq[q-rMqVrhqLrhqUrrrHE$2I-hp
+
+V[Qpq`2qImIrRr2m[CSIjNAR!2'JHi[pIdj(I-hr2rbEhEermMr6SL`abI*CU8`j
+
+[R+UlcKN0$A80+#N%Cq*DeCZ-HqHaIcVjAHrqXqL8'612Rh@#V'bCRMIc+Z09LDA
+
+b*MK1rj!!paURBeRXp$VA1jh*$8k(eHld5dZXESJ,5YcK0$DVR#EZ0UFKZ-eT"fr
+
+6pffc6jSrYr6idRR9P3faKZT%BqP0THqF-Q9bkDNV9m4UQa,adZ2V'ZVCrZ*,R'E
+
+Q$PXVrdDE`rJGjAl6#&p1-QHB&R-&drZmqCH#!`XQ&F`rYEQf5RE4FqVXGeYcSP%
+
+#&b@UDQd%EkjXER#Kc)N0e4UC'80lBYj!(iUYBk6S@+N9TBB9HpY)pV@4[jJ6Uff
+
+10D`d*bBU'c5![h0L$5JY-QC'I80eMFC[-A1DDa2bpZaQAE8c-jV2EQj%-6mc8Bm
+
+Nip)%Uh(QP(K6R861V6X[mb3c+a(hX8ca+'Cj&2-fLKeZ&2[E+(Dh8HKc4V'0M',
+
+'4X%4M')c'`8[-#TjZSJUiXmiIG8$UX%j2,krkGbjpK4Ach1G1cXIFl%Y-dl@lkd
+
+,l2GVQGP*TbHGRdafJY,jXG06RKml)hLI6)QGNA4+G%ldcdj,1LrTa*4QaNi-13F
+
+l-m@*LGFkVG*GUTNUpF4fUM6lACKJqQ`lEfHK0)qP1E@G+-fclCMYSHdUqjaLJmj
+
+"#6rX[+aEHF8jkjiejV*Gp[ZH(ICll8AfqikrXGpV,VIIkjkehjmjFph21bqAlp8
+
+rXGrm3KhIXprV2fZr2hfVrGj`K[eHmj!!HlI3ICpR[l@DM,(93$XdVh4XCHRB@D9
+
+MCdmGHr,8XDH@MMeGhaeACFC1r&2G1iJKa"24C5fB1,CbiPMYlH&9aibY2#B61hT
+
+Xj6YFl0G,2c'rG1b+dXl,f9aLD52H6a`lmGLUdV(aNmf-"F34P&aMapZl%[&9URR
+
+Y'&CiipH$m+Ne"@EBY+h'T+pplYjdHlMY%k2$fmT'69eI$JSXfeSdHEBC-RDf-9A
+
+6PjK8FY5)m[,!$%r'4lE`CNCdL5PBhfT-G*8C1RGRq)8PP$F*C'aQXcLehC5Qf&c
+
+@XZH[Jj&T@4+'@pV-N!"T1me3FZID(Rkk4HS`q624d@EflI5MNhjd$)[F1$pP5V9
+
+(mm)RT8GVBfE%Y-ITd`VkG+Rfk6'T3ISbHN6jM-!FeILB+D$Zh,63&+4LTUSY2'4
+
+ljRfaEjeP4fKralFp*[ee6j!!rMH2dTie4,pZ6,,Mb"ETb94caKh58iePCQZr1iJ
+
+[NhkrHlIfqd&bMp6FMDN,k6IkZHjfeqqPp2X[c9$Y-r0URkII6Nqlqrb94m+(G"C
+
+"fNfkhTMf4lA($fRr4ZEkjq`U'mQKN!!9TL4+VG2#lLR5"lal5[U!G`h4#c6q*r,
+
+1j(bNm6Sh'emf"CXZ#,Z6&iji4Q[icI$CZ6ZIrkAfFMkr[mAEN6[+QBr'DG66I1M
+
+8p605*PTfZ-b--iaDQ[6pFYiIE0mMef[b(RNQmpjcpEG-HcEXhX6m,liq$*-G1iU
+
+6950,`)#-[1Q)MqK+aYp8Aa%I0MfCIQlLh$$mlV5Te$q"R%#hMVB4A@eKd@4Q$EN
+
+dcl*2M5cjh'ii5H*,TpQ3!$SIA,M*$'FfkpZkRbej)GmI2ETjJXcem[$a,j&hF6`
+
+-flBq8Gcf-(N`LdQHPBq@Y(9h&8Yq8pYNrFDm-+rdipB4a9[i4TqDSPHDSACZhPC
+
+m`2Ir*0pM)%T2E3q(f,PmqjSpH0J8[BhjhmJ[jJ-jPbZfb+aN4QX-[3-qc2iU@0#
+
+2Jj25B+$"[qE$Y+j&dhEE1F0-rCh-&qCkYQ$MT+q&ckDI-m8b(m$G6$Vd[DK2([&
+
+%HAPlq'3'U`hq&9,dEUh&ZhU0!G0DNY,VRhe2Hl32[cT@&Nf@2@,&SmrG+rJeDBU
+
+*Y%eKhZD#+lIF(jABbX2-X24$CVM8M&kY8PbpLGVQ6Ye)R9IPF"A[,Hi0YCJkmG2
+
+X&CNeV9-hV2XD@2Z%'8EF+f2fN!!V4pb6q,VVTQkJRYm'Jc26GNhp0$M-RYkI((P
+
+A161kGYfCCMLrZ@N2m"jei@hl*[V1'3DfYFVF#Ukmdi-VbkjlH[-%`IVPiC-5Ie3
+
+`C%5Ai-@8YUe2Pj!!EjbYBAXS1)`qj0,(6pfJqe@(iP4"hK2lQ+pMP1$XpRS`CA9
+
+8-HDJNMANk6MLITh&MT9GaDN0C[J@0VKPBql[dRUj5h"@EM@&!eKKpVU9ppKpEZ9
+
+9,$h)[C+CQ,Ecf6q5q9Th*l@-h#8BX,8YI,CPA6G[hQ9ZhQ@'hY9H0C!!Xj!!CJk
+
+RlAcQlec1JVc4@G[qH0r1*[26+61Ef8B0hLY[d*FA@cZ1hVif-#2NHfRR1(lMBZ+
+
+08hM6L@"S,ARalI(Y8@[mrr,+A(`Yl-VXNQ[*YrBD8jUqjlQRdSmqed9GQe12Q#@
+
+TZmfCU@[-SLJcJaQI-GZ-rTEd[V20e%[I-CHYa'C8a"IH@4rAR@S-ZCTGVJFFML2
+
+@p0'H@(b)hG%k6j*[f`rf!R8r0AGR9l2$eTDpXfac%#14jjarch1ih8[H1[b9I&p
+
+p*0bY'2(Gm!INIC+HCPar'k+TQhiaGqH[(XRXMpcK882VlH6XUH2ci5mb-lAbf[!
+
+(B-lEJMRF(3`Q6iqQ@!ERDNdb%pb4@50QX#@kd46)[YeCZAX)lkr4@F-la1CTl0,
+
+GJX2IP0K+-)VpjAk#rAiZ18j@A1)lBK&km8rpHI1RVrIR6GfTY6p[k[j[qL-l12X
+
+Mmf,kBrHk`IkB1C6qk#aZcX`LHM-efjZ2DQmiLlYlFfbf0c,rl!efL`ISa5cH(%!
+
+2*[I0X+fIq#(ec"2-bLKQp@10a9$NI#*kYbQ2AN1H&EY(N!"l0MKhJ0q(PjY*1K2
+
+c62Rde2'6eJ4K9ddmCGE%k!2b26A%$,YrG0LeZm#8l5LJ"Xb0`D'Kp**B2$PjdC%
+
+PDpKlRk)Ak-H89r[hT1Y$6"eYXdhE*GNqb"k*2+b4GE5q0JHBVHJrCS(l"1Hhj4%
+
+cRCPSSAGcT4FY(HbNQ-'TCY8cfAi8A$pDA8pQCrXqLpbYQEkEIS&qq@AYpDlfTAp
+
+BS2BZ[JS#Z8RIi"FAmLEq)e`TpRlZP*LEYZ5UCdZLm#jYV9fVNUehEfpE1E)NqKR
+
+,HdaJMjffmep@kVk2@XI!Ch$IElP3GqmQM@0[0,YlEYVci0hSTmTRT-+ETAr9rGG
+
+J+RGiBS,CBBE+cMl9A2"2ETr,9-42lRBlA![aKY69C[LDUdf*m&6)em#E(0m&bG@
+
+D#YZ@G-"MV4`4&3a'2mEBHTc2ClLEUDC9G`,PJG"(j4@Db#mc`"iJ9TL8CSICD)T
+
+A`lFYiPeeYc,l+[N$FTpf0fL,6p5qB9E@ZTjqU+H3!kab2DdRhLKp0(hbABlBcAU
+
+McCIXXHJAqU)pbP6&KqQZ`Gk0Gle$MVKaU`QCNm+NkmRe991m(Qk#285IemTEaYJ
+
+[FXHSUbGAXIl*HqSI"eFA`k8dbi`JEbjC0H*!QFQ15+R`NH"8Y6qS0EBpcDapDGj
+
+bMQHGI$[c8jUTj@NcE'hD&%p*Qq(SSM*VikENTVJC1S(,N!$JI-E*QfEZ3L,@&2"
+
+fqI&Q40"T61[iq#GEam@fYekbS,LeCP'aj%8Y$C*Mk@@9*G68m-,-+[CX&Kl1B!Y
+
+`T8(iF1*+-X0Q$QbrqClc9m5GE@%1Gl6[[rAhLTQB-c-(bKrZk6Yk9Hpk9@MYV'c
+
+KQch-['G*f"CE(SDY08ZL["&ZBP'0#FrY$-1JF[H#eXj&QeXlLjV1l66Eq"iIC8E
+
+fj0Mm@JkmGbA2R[IScF"l8q-,[qY$jqpbE0RAUpbqAJAlhNrHphlFlhV02TiJ225
+
+9FFYMpG@j**H$Fhe"jpZ21jFp)if2AT@,RlcNCf&Zl[A0Yh[Il0L,hre%0$!eU9K
+
+"afacRR)-H(Hfl&H2aXamqGi3-aq)XM01frP6jEm00MGXLTRCUIC`aaTf!)[6ZX-
+
+j0Drc#qqiQV28[%3e*Vde,kH1HB@VbD%F%rCrd`IChArHKq`,IE"B[[+HhH["mNG
+
+5eiB2`IA95eh)qhQhaicR6FkqmC8M,h,qJ[8,iJ@@Ye'X0[9Q+[ELG2Iq!+jULq`
+
+3V)AFpL6ifCBlU@R&l[AXp@DIc4c5KrP5bkRK%hj(acAD5Ip!6CGU,qHQdEQSVZ8
+
+@jIQiYh&IDiQE)H[CcGI0H(('6,aYfUI4el#If&qNVpcGhEHr@63UCNH6AE3MmN5
+
+@[mmX5+&"32mbl2q086Kmc+VbNc+R2ccAmShKZq$2r`aqHG0UqL$l-E3V,G5X@SN
+
+cP)0$ccIG6RrhF902c6B(@3d2H'a`'ff@ch'djpemc[+,G4rkXFG!a-fEEqIHh%'
+
+rLEPMKTX'qYXN15jMGq(E#I"eGh(49hDXfh3q&fEch56jN!!M+cP-hYMPG9fqeQb
+
+qHHAY"50bH65@05kRe)([[14'AXIP[C3k&`5mQ5GpdEGCprBShVCS[DB([qJjq[+
+
+3!05!r-5e$F3lXr@bTJAr891a*qcAd&br80riE,h0a!Y5ViNh81Z`S$,FXIBbb`P
+
+EA0h,MB(ER`Xrf-Sq)C`AY&-(C,J$Je'0NS2m&hP8jFd5lUq(!r[Uk2"aV4-eNVm
+
+5$ZaP-2DdF%Ikb0eEU,QplF)(@Z`Zi$JHjN2+eB!ViHlINEc[f"CL"GAHA,VlqK3
+
+iKCVVTfqX1'(*$BXUH20`LYU)Pp0f2U(m2l8abqiSHKFc3jhC1mP96mNq-Ql#iH%
+
+fhM43MqIH[Z[HLPCX,ILCD'R!Nki1c1GXADpBrCHT5l4+*TrTdfbA4l!Ap8aRMfT
+
+"Da6`2X[l+4V(EQ"ia9PJHL[j4!pKCQbbU`9k)UP&p%pQlPE*@r5X-91(bAqaj&J
+
+TpB!6a&l4#%q5UHL!ieUPYC!!*f'rGAjNejTXGkh0K5Cj`rJ@eI,*h"h`[-la,CU
+
+cLHr#h2"RGJp3IF1DfjRRRqm6[k)DKI)qmArb`cY`k'HAr(mF-RSI@fH#3lm$$Ud
+
+3((Uh`qfMcpPC1&"j-l2,VjpYDNprCDpH(5[i$0mch9bhZ4RQI'0Rqf[GVEK6LmD
+
+RM%IMlEX"61*lDLe-cepb0BRqbpC%,'+1"$XdaaPCl(L%A$1b@$68j4"1$1pC1l(
+
+&jKEp%r8"ri3R[f*jAfLmL#I)k@TrU,A#(+(Z)hJ,M2Q4mZk+-8kb6q0D`4KU$ME
+
+ecD,G[l@2,mh)B#Yk1i@F$l'rXfp$GBm!Yd`FjYl8ZS4GB[kL#SR,2U&[CpXk[UH
+
+D"1$+kPHi#-'X5jrV%NjLdPeF5H8q)6038$d6p,E0`L8Frh!BfRk)0Q`h*f&U%T`
+
+#IiRDeU#*#qMV$(Ui0X26i*[cq"cIQ'NRaFkb4V4Rl#&i%1'Sf82QCXk1*HCY&I'
+
+$Zq%2aP2,!R+4FmdSTcV2,(@p(Y+$,GYra0bd8[2Pk(@S@jNVFfii(G&(S)kT6JF
+
+(()K9&kQFN914aE`hj$eU&aiEmCHLGjRpdBm-59e&Rp!cj(Z(1Tl0p!rI3rqeGmK
+
+0rTZp3ka41I$PD+VCV`3$[U[k*p1(KA[kd%!IKY#(+0Z(*5k[D!'+24c(qdCfMFX
+
+GekjeiSh-ZZT"PlMq6-eLme3hXePb0QEl9T!!Q6*D+0D1q5RSr!c`EjQQIVcSdR+
+
+m1pPbjfFHPq(1SAX&GMJElE`kep2Ie@YL"Cq1aJT@cphjL2*,TXIF#r!f-iHGjqY
+
+mAfPc3mFZ-r(Lcl1jZZXdZm1,AP201XbE,fCQ#IMqE,q1`fThUH1!YRX5r-BN,SG
+
+3`dXY`f,KhB"9ak0ETdDLBa9Dj!HI+"E0VY'@0dA[B&lZch"f*rGULi'hQ`GdZI2
+
+#lfBi`)P`-a1jTM$T2UepIGXR2[A$V,lfF9[E&DThR-6F6RcB$*df#[h0+DCiU[#
+
+1JLq*CQB@H[I-T$6D%1Kj%Nd*F%Ed,CrVdEG`"f&Ydm)R%e,E42SfjZ!`"0HE9ce
+
+@e#4mib5dE1K"rDEc[!ChJq#NdF'Y39X(AHb,S[1(IPrUCcmDd)lINqaiCVYJ*I)
+
+XQ)BQZ,0&qd%Gap$NKN0j2i,h,qT-VH2U3QHcD[3cb9Cd2SKThcqZQ-MHV15YpZY
+
+[G"E'F%S+p5kLMcG,cde2QQb1(pNp8'UibZYrm(kke#%DfqA-(rV#'Hlm9%EchD)
+
+lE+ISIYN(I,1fMPD`%pr,2[bh*@eAlU+RlhBkRII3C01MUL2UL&rhb9AapF94,MT
+
+JlKGqP4Q[BJjh0R+r[kZkm4F%Fk`HC9R(L',"3+-*SdkTT-H"hMTcN!$d`Z"dZph
+
+jmPEV2P*hM2UfKe6hh%3m+cXfDQKd@ZL#DUA*@fpQ,k6@Ze0V'TDY+9khdh,NVDQ
+
+G[6SAXa2dBPSh*m1pA,JBi"[j''JHR6Ii'*[AD[c!"DUfNhXSq,E@M6m,Ppa!2ai
+
+UMBS1VVZ@,k5C'h+4bdfCe9GFF#GD$-%PF*-Il1%Q&IqXAUKMqC,LrmcIf+-hQPZ
+
+FiCHYGZ3rira@LeAcPIX56&rJqBq'V,DXARC#lR'P28$f!Z`#4Caq+,GhSSEe@Ga
+
+HRFAYMPGaHqlraHh,9A0"h&BmrU(bU`DcRfGfYYMq*(SVDYLY"QfZB+jSmrL014a
+
+2$Y1$@23(f'G9[`EYHe(VeL!m$ppM*fkI'ckad1)qGjT-MGeP-S[km"mk"X(mU@E
+
+b+rKrJ24#pRITjrGe[l$m@R%[k2bIHd&*%`+F)&F)M(KdfPG9IqQJ[eXS-hl5"Ze
+
+PjrrBm9j@ATGl"fpS!21El2b0pVV%MX1hFAFJFj6MljUj`p,16Bh-Rh+EK$1'["%
+
+lEDHr$i-j3cpRp1NpNKXf[)[aGGAa2bkcKVTDAkbEp`ib0DlZ49)RhXhH@cra5hS
+
+1,Z-rp[b[9A18pRcl*RD3!&@qIlcpdRrITU*9TGj5DXGq9Y4TpQK'TAEX5DKGY0C
+
+9$HRl!06hNQUZhU[2h&$iVr@*VReAIF[ERqZD-Xqd6#NeKmX1p)9,lFiN'Z'2ki`
+
+h6jR$lah'[(-F1kDmhIi3qe0$CRrUdS5!Iepl0hcbGdcCfJ)cBHeS-fRY$$0jlci
+
+*ERj@$lGrJZU6HhG*`qR[V8RUqFmk!HB%ppp'$fB)l`UG&I3[ij@IkXhpblj1ech
+
+Tr4hk1YA-Y6U%[mp,rKfeYMP-UCIGAE5qQlL$SMVe`6iN'JRd0H&%INmamI'f$Bm
+
+k6RpfKJ1id[,1#3rGk2K1mKUYm(+Hfr&`&dRH0EYE0Xh6j&i$lrpmq`H@Sc1hT35
+
+cG*HIDhQ@%c2l-RQA(2P%rkCFb-pkZ4$Ui&-pJUGk"2!QZA9ITbE&80%k'-jNpjj
+
+KlQ#B2H#*c0dIlIY[k(dAVH9lbLPcIaAYXZAp0bR[2fk2GVR4j440KCN4iAY%%i!
+
+j12i1V`PibZQ6Tr6I`GLYQmBX,1ZGKB5[!YHRYApAGkp5lGV61CiEYqmUFmGj`Ya
+
+p`qSI0TQb(Qh(f'qmTUIZZ8X',&PjlI16djA24p2YcamP(0ZNAI!)FP2*@EdkFeF
+
+)'-"he%qCq`JYMT1jQGYPf`q,QkR4+cNaYV*dSZ8fjPJZ`fJL-&01BfK#CTIlmA2
+
+XQ%pQmplIGZr)%VPlCRL)F3klfQaqJ$MZi5$qPX1f*rQQCS8Fb8Y5lbVbm$E$HZl
+
+HYU""krLMb)fmmBKl-d[$VNh%(LA'QNe2H0XRG,AQq*l-Gjj[B[(Dk-B#HdY0Y*j
+
+(+llKhFhbVV2pq6,llUJ-hXaelmDjGk)[PVYVqQk-HbFD$Q)4CRDXkR&r5qi9(DN
+
+D0Z&Q0V%Am(k2h*%i8VAbpce[P[61f(aQE#Hrf&Rjr'6fVA%$qdZbme`mZ"IZd(a
+
+albRZA[-ZbQL3!+DDXr61cIqq1aRqSRIAD@CfHFqLHErHR@0-CQqk!mlRA[BPIKX
+
+YT@KfZr56UiUDA,kKkmP&65ZjaP+1TF0Qk[ieB4Jh1A*PSKPT`M9+CK)miKhF6*M
+
+!RMm1R,fA(C`D6q$9#e'10[jcEQTM9IrqcP&1rqlaZch$KHjmRmZplpk&J0[%kbG
+
+Nhd"2aUm'rmP2G-5If-bHi2&,,-e0HjJC82jE08rFLI#'qF`pV2qbh`K@58djUlr
+
+F8C2JFR8(XGbAf@I0l[&ifadrfG2,&rIddZj)1G@Q5Aj`AeE$C693a6im,VYFGEF
+
+Xp3(kPU322629h3Fl8f&[rqhHf0Z([PZ4V'Rjc1H2QM"%Z@ZjNl#dFi'IIp64$Xj
+
+PPIG6M"c+0rHJqJP$p&jE@cDRB%S4'e[PVGaF@-KYKUZjcA!epb1Z9JhZ8*I6cH3
+
+dq*`6l1hKAAPM%9LhNPk4Gq8Hb(NeA1i#QCG*D20j5k8M[Ldh,d19@kcJG8FE0bb
+
+`&ad2Aj[Flm,HFrb&TZ!bcceXhl+(JaJUI+GbPqqUaU@IAbha2C[3)#+hk*h-2YY
+
+JhcKrRVr$N[DRHcmK$M4(fNq"C`BrZ'+4h'AUhMqBBe%01[%e*pB,PR1ZGQ%qZ40
+
+l$k1%pEYf'P2hFPIhErI9AH)c&h'6R(cQiXF%Ymim9r8``MGX9`d6jj6l*1[#2BB
+
+Cl1br,hX6G"4Eq"kIBUrSL*I*r,Sb[aha-6),24bRpQ9jZG8!MZlHdrrVfG%1S@G
+
+Mq,j90$Ufhmhfh9#qqDkrhh0G[fmCk,IC5dbr0lXH#rpKjVNJ-i#Gq""b0c9fb`e
+
+0QBGkT`Xd(2KIU'lAh$-De(k@DheAmjCVhElcp9UrTAa9IkfQpaYGlemIR)q9h*,
+
++(-Eh2H4!VT9YrI[`6Kc%M*5dAS+$H*2H'rX((&`q`pDrr'CErr,qqLe')0HiXXM
+
+UUmM9h(-(TVcR$Z4I,I03crIEFYqS1A+*e)2i[j!!1'VIi1VEd2#rkY[JkY[JkV[
+
+AeIH$9EDq(k4XI6rilrhEKFX'1dSFhrLb)p+#KG!9E&rX0!C0['(G$Ab[Ffm[F@p
+
+c6[FrU'XSer[16GPkaj3GdIlhYUE-0DkQ4Ylm&IAbcHqm8@F4!cMl9`lLe2*UPk0
+
+hEc%jlR-jL#ApH'F`FHAf`4bVC'k4BpAD`4b#*FMaGlX(Ff5ZX6Nb1rYbi!DAF$c
+
+NHrTfZk(#j@#r%Ik@YfDBGrQ4l&A3+"0Ec*ip03Sr2!&6%ahlkjhNH-SFJ2K1@pI
+
+5cYPD%lN8D%@FeNY,Ljh1VMjDjHB6QTqph",h6,kpi**C%rAQbCJj*HHL0lPq![Z
+
+(mQ+m65+jZhLQiVe4mM2FH9BqSTTmXdZqUcFTb([Xi9jHF2MaFcfpiCDdY[p9qF&
+
+P1q'%F8G4pkHFiYGJ2ICH*Z["M3ZM$h[#hM4q3rI#CFpc``phI&$AA-IIL)l$h[T
+
+Ec5`XBLCP"el&$SclKrK9E%HGj"59ZhKpXq19"MNcbk1@qrZ'hYb8r[,@BG,MB0c
+
+[HebmUrHiF#kBbb[YI[Q1DJ*i'p(J[Y`-0$U6&X8ID$h-@qN$He1Ff5IF[YV-c8,
+
+$XlbM1Lh@6$f!bI1FefcXZ9fkU&9h%$1$friKZi1XjkjhFR0[mA@@Uq!0*A)1mNi
+
+eDH3+U(IMIR3P@Pc'jr,0q#ah0ld"lQddEjE*rS+Bi$@qEd9hm*ffm%f5Ia0[H9p
+
+pmQQ2cCT)RH-ElkAQPBHfZ&h(BM,[lZkHkGkH[YPc,h5&ZHAIHrSD[2(D(Jk'I%Z
+
+Fim[D-rF)cEZFHcHEh#rD2QkrLpqeTiA$TY2hMAVc(,ic`)pqKrJm1`Hk)q"la4m
+
+Fk(PbQk!bal(Vq5+TeIEmT-I3@V`2aKbrSGbikHRMrh@1elmkalb2Y'Z1jrl[13B
+
+(m'*&h2DpjDT`eam%k,YS'(I-m[E8VfGjHqS2BFcb6hVZaElIa5ahCQHjmrGp*im
+
+`JGlLr4V4`T5i!V2c6dC$3adiY66mTLZkASd+phRUm8Y[rQ[1#G`&'FI0!F0j0%P
+
+I6+`"ER(fDrP%+f)d-VDhk!&c2d+Y(5rhH$V[R1`lbm(Yl9[$hMlJ&U(c5Vj+6`Z
+
+CRU*ILc)D*GC$69*hrq6'h1kqcIM2[MAfp@e[liUpkYME)pZAR9a4if[eX)CID)+
+
+`8mKpK[qL#DV9P1M8IkNc5[Q5akDKVc1Fb9c,EbJhP()QEqLGN!!+Cc,C[C9E+pf
+
+F5FU9r+eb("@Zj)9NmUPLeHcYeEG@1Cdh-[G+EAp8recXMqKMP,HCBR2mVGkIUr6
+
+TX@bIK(rZkG0H6QFRAfHdZ$-b05)f"6h"*CRl[UK60")GNDGXMr6ZCj0pqa29ie4
+
+kp+cV`Fmj2Zf"k0p-(kCRqc#C2P`U2+#T96d"Z1)G!V2'HjlklS5AH[$FEr4`08a
+
+CB1IV*kSC6@If*eBV@FB8-`H[HrmKaIieXcFphM1[Ve[m+mrVmlr"PFUmVVbRHeR
+
+f*ZY3ZIR21a1QhLEP)D8IfjAI@IEBXb8p-j(XT!YlmVbMGd"i'm[8-&hUfF1K0ZM
+
+0'[#[ill"6B@r`SX+GUaGE`Bjd+,[!,RE!#dUERF)lT*VRaEHk[F2J`[NNGYXchj
+
+Ujh#[IU*(QrMf!R[[bR&pIddeBc,E-TZ[U5Df20Z1mZ"@1mKE+q!,0[20'j9cCBE
+
+lhNl*j*d@hUHF0qYF$Ej`TXMhijhH(M$e,VYqa)(Nh56F"qEc,GZM(q[0"DeMUfS
+
+8$4rbU1hCMrAfM(N[QL6cAZkbileJNVlrSGiNBLcYqBqe"rVq"cT[l)I-IGU6HYF
+
+6ShIAQe4@-i#iiMmaVALr,X8hh'c@AU6lMpCHhRp`Xkf+JCAlCEJKc&PqP*kmXCV
+
+HL2q@&HEqc(c"kiR9`QhQQr2BXKUpBGrEaNEi(Fl!XR5Ap,[6kV`cplVqbVe0RC&
+
+AG"p)CNaiUVr4QkMQIBQ(@q6b(qhlV[RdjV#Gqe9ZaV6Q'6ERMe6M*rZAj2b4h[I
+
+K([4*m0lJB8&kEfEXl3`@*Ah@HCV4GlmUdB+DHCV%VDC%$iTE&*2`R+)D6UX(F4E
+
+eB&fA*[4akF(1GjYF(m86K-'Rj#i2jmhd9AKhmei`RAGd&U-PeIb[f[dhQB0ArIe
+
+C-`0'Ll&9X5@T$E1%0e+EV8GZ3+d)*`MICRXj,GbU@RkEerCb@RL2e30hpH+(pVC
+
+fdSXIp[L[d9j!MbQjNhfB05hQ&JhHr1k,[AKhSq4ER*[9AIH&rUpCRIhbV$lamU`
+
+qK1FDff1C8Cf"PrdYmA4HIkJcDYlV[YXe)cr3@e(TM2a!lqrZQ0HAe@p)H9jIlTe
+
+r-kqmZebFekpj2U3mVer6(EE5#lP*8Zb&iN(2[(j0EiH8jh9clrbEHEhrhqDeqpB
+
+LjP@m![A1UQU'd*ZZ(QLr[[m5"RhIiPr5dqpErLIYUGik@a(Zl9A[(EX%@iaZ[JG
+
+EYVc3,lP2JVVPAUp`mG6bDbqkCM$GQlZ`*UGBSjLGl!1DIk[Z9Y*,pB*6RabP[Ha
+
+Xh2UlZ5[G92Lkp[!*aqAFh01,eh+p%%meU&Xi'F@4lfN2Z*Ya4p6hIkPBK6VLRTh
+
+q+kUEXjU+$Hkf2[BraEmb$lAU0aUcrpDh9l`''Af6rDIFYbek'lR50h1hZ,Y[,r[
+
+l"rqTEmAlMSZZ3Kr"qilfpScbJfZSKEIXj*iTCjLD$F3DAll(3(m9XI3%Z5Fllce
+
+0,qHLRT1j((aHY%[IYBprB@m*D%m9r`fqp0ecQ#[i9XA(8SmIS-I3)PCk2+AYZYl
+
+k4ArdhYd,h%`6VQQIl[,K9hT$6XlS%eUY"U'j9b[+ZbChV2EDMDESGq(q9iIKThL
+
+ciAkdUXAhFVX9ICL!!h(8dlMkQj),1S&25#l8r`Vk",cY+#SAhb-[pI&VR(pcaq6
+
+aDGb444d,IM[lAIG05V2IN!#Ik@mU0QRX*E[rP(&U`frZfjAZN!!+Gk6lMGEc,EZ
+
+(*[[8Ybc[JYV023cH%4)F41hb0Z@#Ae*1TX,I0dIPcL*Q3$Nc2hFldI,QNhYQi)8
+
+Am#(&L1rCI4KpkcJ-hRejQ(5FHLqRmpl0(h!RkQe(H0C[fT[JHhcj&1rqE,BhiVr
+
+Tlml)RX`l#I$&J2TQ1`m[d"8lbPGb(["ZP[KBfHAjKVeIIQ6h-RIrS0RG2m$0P1h
+
+K`XjKdr&Tm'jXqE1G8kVTrF)c*M)cMlKl#XJPpa3UZAlf0pPFRHlZ",6r+eDLJB+
+
+I'lQlJ6X(FRGMk*48kkjNcFJ5Tp1Di@iES,EP9laBfcX2C@[$A3'j(F*DH$Z%YA`
+
+R@iYi5j,qRLEp&@dFFSS'[6&6er,+lLe6PRIIj@TkR2I8i2-Qk-I))rUQHChY4f6
+
+V@XpEDXqBicHc1H*X$[T$SRm9jZ#pdiC-[421`B1-eMUGYlrKFXcGNq0ZP`0cN!#
+
+jd1@J&V#8ia+A3rT-r96c4H$'jb-hRScfkG5,Z&ZqkDMabBf(MeFmm8DmApi45cU
+
+fQQd9p`hY6JiY@j!![$YbBbC2apf&0eB8rDJYfA&X56*qV(KmQCAmTmL0&@CSG`U
+
+mlV`AlcS[i4r&`c-,A03YRi92K`AF9ec&lEG9e!DqB#fhrGFqKVF@e`aI1`Er$UH
+
+E%Mbb01!KT"%Y36c6K,FP#hTU"Mk*AjCIp+mM99DHkH'T(@Ep(kESBdI(H'SqXU4
+
+LDEB[YjFZ5#iGX8"lJMlBR0aTf*09eiHld-Urq&TIhZX*q['%pL0MYL@[(c)qHGe
+
+q!l-eSf2@a!8GU9(*e*L@j29(Yb6hLl3NKr)EmT[M0mp[a'mG[r@4&QDa2M1(JKm
+
+ZFiHqDImaEjhdGhjK589UD(G&"cfq)h)M[4fM2AZ3!*ipb!lc)(jk(Z6QrB2FZhq
+
+3!(hQ36G(FIK3TJlEVc(dDma&l#LA(kUqi!329TQQeUAiMPPPYLeFA[6eKCe&GbB
+
+[@f,+Ec4R8Q[cDM`Zh-%YTkA8M[di8hkY@GEjBe2`8@j!B6CH5pjFYU$LFdrGQ5)
+
+2jL[6@Zhc0%C[#(Ghr0J-Z8KZffA#*kAqFkk&Uc%eGGcNF`h0e56crNT48qZ`SLC
+
+jVlFYp-i6EecBAUjQ6q-mY(8-25jC9'UNRq2PRM6U`VZK1!Kd-Zp3eaZpYdkklT2
+
+*AG8R8Y`cA5RhR*4RE*BGeZJF'X@cA'GlpcC`,-IHLehc'D[Yi!dma,%[h-+p*rU
+
+eLr$qB1pqlZD9bRkNAU6f$Hb5RHbLFh@[&TmV4qTHMAId1$A5kB#ZI-eE90F01qe
+
+9`Hl&6kZfEGFZr"H2K&ehcJM[dPNiM0dA0ciQ#XrehI$apXTZ[,'m-lYYa$dYQ6[
+
+-j#iR2X0Y$IK+QLLF`Memimla921Q-lP&IRKjqr!G+HCRE8&KP'q2leDqFha2hR3
+
+%2XZF`PR6cN!AUI8XNAU3!2GSdAR"@da,PIU@bNE4GQhK(6f2Q(I`#+([RZ4GE(e
+
+1J%qC9cLG0irbjV#HA2#4S,Nfm'jFcc[i)p"hRE`lNRF,Spbi2Zj@pJ2akj!!2Fl
+
+j+'[-p3+a8m4A'GmAHbHc`2Z5I)qEKj(FQ-DqdCZ(IH#qMZm*m"c2m6f@qYHm0![
+
+Xbr3pI6RYjET2fe0h6jlZZTP6-!dDEqda2#MKHj,YFdY&r-h#ddLX0F9pGRXA&((
+
+bV*S6pe'CXe,Vq0E`DqA"rZ)RB[b-B(pmI'4q*"i5`4(KrQ9d'hG$F(XY3Y-8SCH
+
+10[(l%$QfmRdr[r#l%Z'6)eV$laTqi6-R`Sp1K#q*+-N[0(e4%ei#Q@XK[eIbbhU
+
+!Ma&qZ#+iQBKEMa&B(-hM&liLmT1S$hAk[21SbAqFfBGr[Sc8#Ge&G"3aj)R`i*!
+
+!acGEPKZA,V')l`JIIRPZd8BbDeZ)iCCZrKHmEkU)&dm9l14ZeV(-mC8b&pRqZF!
+
+0QUhf26cUl(lrP*fpa&I8d-cmVi4lNjYFaEMQ5QkXeVHPLbClEeHi"l4X!aj%jTT
+
+h#$D+$P,b*EIMCr2f+2F@IM$qRlUT)f(GkTd$1-rh#lKE#edfrA+daGqHmIE3*"K
+
+*I&T0(RZ(M&JNGq(aEA$*SArUE`GaHpZ3!$Y9k9Cpd8I210&DE&#[!jRpfmK"cEA
+
+K0DRRTeHh*!IIXNjiE!6qEAqLTaHjC#i(E[LBQIQRZDM-`jMX2-![Q-l$RVk2)jj
+
+lSqmAEALL1p0ckS'e&mNppXRUcC!!fN$NiSk"@XITACh+A-LpT,jCQC`UJKZ&EjF
+
+LaT9f"rD*ICZicS#CQ@&mbrld[J2c-c8l2mhCq5Reff,+ZrYQLrd[j'DV)ljaFmp
+
+-IHHi26Mbr'Xi8Zj"-%Rd%N9F+ZA&EFa!pkkLl`dl'lR[@$q%5I`TX'Rl,V2'jNX
+
+p)k#Q3(VjGQRAQZJeKE06!6fAferKjm'dkCZ#`MRU!h*HBG-QI[&pJmi"H46FQAd
+
+d+'`J4r['D`TRL3Fea'mNIQ-8$ZrKZ`XENMH@(6KK[`*Zc$NlZ2-E4YH"4DJ,fR"
+
+crpH",hqrJ"jb9V!lR*cT*ISe4E64k0Q0HQr%l"HBQrmJ2@C2f8rN1AYe8$K2lT+
+
+CAX-2M#1im2rfKCb#p%8mUCKGfI4,m+1P0HcHfbrfUYLR)plS%rZ+qp&[LqG,jZf
+
+m"LcabQ4hNr[B'i,#pmKmGU4e0Y[PeUAFA-AY&XjZ#@qS28'00dU0SSPe5m8[4#`
+
+iB'ES"+f&lc6rME`p"piEI)$k3f!reGY*9ZkhXRFhC2)6,a%l1D2*CMm04e+3!0i
+
+YJcH8Hqf+kqmcX+YKGmQ#VkpQDqBF(Qh[[QD1PMQ5(GVNC*p+@-Zji(j0$)5r6mk
+
+al1R&f5R)@i-hJTA'6a9hSE'p[D"@#r2#Z4"G#r,`pKja%AiLS(%aGql3`qkq6%+
+
+AKGTZd0U@KaZN,mJ*lkFr+D%Hkr1&f'0hGV-r*6XlqbilZlj,pU$ak@X+Mm[Ze)e
+
+5kkjGVQ18p'[lNcfjR0AjrFpTbA&126hFV$RDr0k'(-PqGKX2daeXI1BfV[@K)2I
+
+jj8k1)cbFlT6,#iDPlaDFaGha-JE,EGfTjNL[Xa9r'F4)hMR(@q`KHYXNpB9DhrE
+
+J%q,"mc&E8qEQ&rT8[%Qr,),('UR4@EpR6keIKpp5[1YdhcGE6Y0CRF)iVA!9r+j
+
+if1$G*RK183mEAqceX$%d+Pj84&[eqCll[Cd&3kD0d(RLMR'+hE(KHmA`Eq)cKri
+
+c@5qr+r@5pabX&qp4VqJP$GHhAZTPVBC[1B8l*r6BHArd4mi['1q2bfcpSGid0(G
+
+3CVH0ZNIm'#a)i89%F[2lPrhBj2Z[1#l[adYIc$iYF`#-f[!5K`P-I[hk+0j&i#(
+
+YmHr!@Am*cVV%CH-f*,5"d2e04qGhQ0kJ(RS6RL8QF)Ib$q3EpbV(l+rpDZ!ZTYp
+
+kD@A**IE',rL3!1dlcTeR3Zi'HG6Kba[Z"Y3Ir3(qZ&$,$2IZ,0NKk-',ZI"p,Ym
+
+"hfIb(C+RfH8jPcb0[20GRP0G(ZB,qfjA[M$D(*AaMbDq8dHCYqQYVXeQV28EN!$
+
+X#!iqPFM&bTd6aZJ$%"jl*NDj&32rMSY%2i"ki1hU,Y8I3mIJ-kZr4NqD-cP4aq(
+
+CR+h@CmpGeLH'hXhm!p9PlVhYD1k1L*lh+dC[X*Jq,4,[Pi)Ar#lMKGadT!mIlJG
+
+phNpLj`ddbD-H8$lREdr!rmIk2Gk'rPjVSIijS,%!6d#0i(DpU92"T#Pi9QKerMT
+
+DXaJAiHHQaINXE1R&106$pp2#+rr0aiIefE[6biI8ZMTQ6R[Crb&V0IV'"e6Rr(i
+
+*YGk[hN"r8@[4SdM2$*PDUc0NDPA[AhpIDmP$"r3U@pf0R9NCRl+SDiccS-8qcZD
+
+E(M(T35SRH9VSMh)ffAIeeGZfkDNle9XNF!jD-AYRc"22)qEqQ,IQ5@,3%Kq,IYK
+
+SMCq[hf3LUM0'ARZ2M"c$"ZC3EU'9mfhT[i-"(BlTkD2*#jiZ%@qASTe9AhKHmXT
+
+$YUI%4c(iZdPb[k%$[Z@bN5@"qUhi90D6jrBI[*!!Mhc!VEhjj0D"lSUieB5E"-$
+
+$Yq!-e&F0IF`f%Z-q3JmjU-IiR+"h$plhEh%q+(KhYrfdVF96e4I@r#0,C2qqk#,
+
+d%VH96P5[QjM&CBP$4&qjk,5Y`kCRmMbSHH"6q,BM*flaH3k@2&-PeT&qZZ3bm)*
+
+kFq0a-Y-@If5cl&cSUjG-MYZZY9#2Lr`GUiKMYqPB1V*%r"Y,,l%rXAr(Ej!!fd[
+
+[INelZU,l&ZN[pHPiml$c6B0l3)E2dIX!qqma8(I028KZK[(Z[qj34k[ZfZ`bf$I
+
+q"&pGm0Hj9A6Q@rlelJ"a!,f'ac6L`'2*#m'"C3i(lQ0I4lmjqp5',fme`qIZ[+c
+
+(UbAm'-Ylc$VepqCpHYX(1RFcjl15SlVXR00EDb-acMR[H"J[9-KG),IX5T+,Fi6
+
+h1NH!(ZCF%6C*ITfMlFZ54q#l9r6JAIHjGpmJq2NFrHKrcY(1AD'i*iM2&E-R3*q
+
+5@F4H3"qRh"1SQf[,l!HSpq*qlc5RK8-#EQ#I['6'IE(PmeHdGTkqI8VRT#PVHI0
+
+jILp)lekPHH"AH@hfC[@AV`P[m6jCJ&A%qKAAkVfReSar9[2GfUZp``a-20186(X
+
+DEbVI-8e6hd[ZkhN$[Ge%r0Y2`(Yb5ahIR"8iiTkJ1V%KAi0("BIP6d,Iq'U+RU2
+
+fbAa$QjI*Dr'3!"HjU$qM0l(*9[q@+HrPBj!!)ld[qV"Sqk'G%'q8(6BRGAUSEjk
+
+C*GSdcUaJXZM6ZZUYeJ)XiAa1XGkAKJbaZM2@"ShNcRk`a[%Gi6hP`C!!@I$N%fF
+
+%3i4$IGeUcaaL(MH4224H(RS[$imY(KS[Klh2JpYbm*cPSIIb`!'2@Meb8T2QS[G
+
+b4Hre'Vq[mXXh,r(l)Vr3JlNlq)@ZcBArGUM,4HrQhNX-1MBAr(,4ZlRFBR24ZlR
+
+Sh9adD#jkYbbr'A*PU#p$ICQR`"INcdK1k0eFp'l8T,Rdad@h*VG&@3[dEUjiPf$
+
+0d,YPd-(a[5[DdiFU1T`QE4@DY08C6CV-c15qQ3'Q2Z[H8hZmkrdMpMfeP,h[ed`
+
+V&DfVYlYYbVGPPYiJcKPkdEelSEGq1+l('miehP"$K$I#YhL2Tm!`i3VZb[TIJUm
+
+lm60drair3h*(DChe0AJVZMI`Ka8-J4G``C!!4k`Q*RU''4Rc%XjGdS0ce)AZk,&
+
+b!p&AU(YeTXDTjS$4,p9bXA"Hq+D1G6C[(DHeiV[TPhf9@a)2i8m#'Ja`HUelki3
+
+A+2A8)MGFd-m[CfU0EK9ZZ51b3qq(UTBVr`[`SPhk9Y3"B1kL@hR6,VkkaZ%&R"T
+
+aie0PhbcGEIFk-d[!*fU1*eGdS$e3hC9SKV!r6E([K*rZ*2B52)l($[051ab(k!c
+
+[GVArkfcYU&Ri(MM9AddHDP5%lj(Dlp)lBV+[I`j2QU2%8deHr0@JYe,R8,f6XKi
+
+ZIlhe$58m0RT"23el-TiHBGGGRHe0J9L,m#aicaXGV5k'25#hFHS1e95EA+(SVT&
+
+,DJ'R'UkfZe,1qk`YB3VkfCjDiE$U8lr(UV9k`fJr9L@qi`l9frU64NJ0i92rDkE
+
+AkPd9e(b#e,3D2ea@'b6H4C*D$h(hNm+0G[E$P*fpa0mHI!h#'j!!hP1Nrd%lPjZ
+
+)[86p(R2c8V[9rUc*c59QlGFG&b`eU9C`B+lY[SGm#e,eEXE@rRl'2Q0pMCSCBfq
+
+**CLV46fpMZfY0mb9p0(S#U(AHmMe4,cdEF!A[rJa4[r0cCG@&`0q"%YX,kPrPKd
+
+Ar8ad,r3hQ-b%D'MJdjcH0'rGrX@@&(Zjp23c[qrTTr@Zh(ZiXAGHEfhmY1b3!13
+
+kSDR60f23YBLAS)1eCp2j*RqhKQrk&(TX`U(U'Dq0lhIjaMkD68jMMc+lM@#chCI
+
+`PVI8MjV4AVL)(#iakLB@jHBpRH[Xj!Q(@(pPh"14$lU+E#P[#ZAYK50F[1$UZ&N
+
+p`i`bLf4(iql)QVTmqNVpcUkTF%kXQricm$e"['*-r&@iEG@[a(FqH-P4HRH'EhP
+
+hKQrrf,eYY,I1RDIiaVdCj`RHIN(HQMlPC)rY12KqQZKmGpA@LqYPrUKRkBL2hTk
+
+-AkbH55CDca9$e9[kr#pXMejKc#VV%5QC!I&T6dq@kRG42%G#Jc(GcC69G'$RGp3
+
+6)f-k9r#6T,eGlhUl*PHAQEF#(N1RZleJZSXG6XiiSi0%MXIa6RLfeEQ*EmU("8q
+
+BLl[CSKZiNrCjSrT"q0Fk*eNeEV2&P84(HE20Md-,QTqhp(QrJ,aCNLI&"qVFfAI
+
+Td@9ZPXrJr5UE,r%fe5icYQZfLC[&R@"ZUYEK*hLYriLIRp3lLKBrG4piZkYR(fL
+
+dYbelpS(X*bUUf+XP"Nm``l6@TPAEZFeL0'6FLIQ1@KBcrm)M&0mAp$ei9,lAYkN
+
+@QV0dkpB[PPKme[fSV3V2KeTc5D[@d#"haG`YdS0CVYBCUlB@[FZpQH,Hd'-PDS#
+
+[`%4VRY3`02R@,A)lYX(P+K"REZR0Q)1d[p$"-[mTUl*jkf9[%6e-X6rXE8N[0r'
+
+ZP0lIdakR2UG2XHpbmPhL+SLVYflIdT@E#B1"KfBm5fUpXT1pY*GRN!!HLpi`k8%
+
+(md$pdpRZ&VrX#TEAdMS[pMYDbbhUbA5Umi6ePk*Ad"b*jmBNKr*(M[!r-l*[X+F
+
+i0rLC+rEmlKrBQq'9HJVD(qb9R!IQk0m[ZhNKmA1iiQQC2p&X%Pm9ae)IeXBlq*0
+
+IJ92Hjm[p9G9TrD8CjRaa0DTZ#YcTm3mcAq4@S,@L$hrF[mQ*2J#ecFliiN,I6m&
+
+RA9jh&@J*N!$rM(lHIH'SHRc"[6TP1FDATLrDM+miThkC+@SG9ckTG4`hIBimYD9
+
+ehZQE(5rq+RUpA1Zi1GS2FZP,1jGd#AmqB4`H8)iSQSbI&+rXMf`rQ*-qU4BYTji
+
+eLbBPPe2VDG4`0M9F[8!p)bf0,iRQEY[dHS0&AkIY[%"[h@hI0@`0H2ba2Cj)#dl
+
+A3ZdMY,LC*3pDrAKKYqP5(k22N3rpRbaDa&,rPjDEYh%r+Y-kZr"'[VdeBkMrG$2
+
+m$Zic[@f'A2kMV@E*Maicbak)Q2S(aTL@"iihU3ILC[8$DE2QJH[-qJHfQSd22'B
+
+f24Ja@aiFBfjlm(Kcei0aFrq$DE2Y`H[-MJHhQPhdBZZ1L(Q+@93["kch[*r,YpF
+
+k1h*MLTSlUIQ,e2c(e2[(e2Xdp6j0[8p6lp28qc6e2Nfp6e2[dp6l$28q3lh281m
+
+ce2X-p6j$[Fp3,l6c@p(,[rCmphkAbee[JdA81ZXY*[@S@-phS2V+,Yr!HR1aVDC
+
+i+QpHDqdmSb4!SlN@h`EdPpI[U8"m1,'QdEBQe$TXMkI4kDFpKXjS"6HSU$05(dk
+
+FhA'L%kE@b2KaNTek@YMQEba1N!!lXppZdIRIHm1rbqmr0#!f(fU4HqGph[rJIde
+
+Zk-!Ml2CIi#F5YGkNAPI89j[i4S2q2r%EPh-k&2U%md5EKPrV`lbH'XDTPpkq1r!
+
+6j1D@iZG3i6R[48YLX,2Gqlr"[#fG8p6F1NmjSbfI+Z[af0"l2dSmNrPkdl[L`IF
+
+bq4kmUCMk(AJbZT(G'MF5c8h))h+HehrK#kML53EeT2lKTS9rDfrC!`[S5pISGlM
+
+l8Er$fG1jf9PMb62@rqhVEim([TfD)q4IcddZmU1VH61A0`Z)V9,0lICZpI5!1,d
+
+),jJErN$eMpER)Zmd%A1BVk2UQFeZEKEfcFhl$r4bCamhd#0blDZbIHbdIAa(ZIb
+
+dMcr-e(APlr`b!M16(4efp-THhUfhI-82F)qFJERKeMhlJ(Jfi(a!dpJdGfH6aBI
+
+rcE-MHR"CKZrkEcd3(AhD!qZ4Y,F(A6i2i61EmiKp!ANACrb#GFeNLrJ2J)CdY@M
+
+L3flTB@FJ"l$Q4RJFmIQa[@XpYrA@`1NaIMr[m1B0bFfFFLF2GdDBPqqjIkcK[LP
+
+b[+SpXElMF1Z-p`"j*l"d%j!!lh%Am-SCejS*Hqm#MZ'@,Zli,6VjBP1D[H@h0A-
+
+Am145D+iM8UQ&ilr9,IQ@RK0G3,l'eZ96@eUAcjibMjlB@i(BY9l-e-GF(4rK2J*
+
+Z"*CU3ikYEp`)A)f@N!!cX`%2LZ`hqekD$FC4afZbil#hUlPp2'BS16&MI(X(-bC
+
+m@9"Z2PTNmidCTR2f@LFH)06$!caBQ0X[V"IjkU9'[M8cUI0(2XI8a[Y&JlA"5c2
+
+UHMicMqbKe)FqfKQ@r4[qGT1qkUa[eAcS*hYTI&#-NjU6HR16Y&lK1%bpc'Rlb4l
+
+KcA-Cc%$1eLJDImiMlc&hl"FeRCX`LS`j4!mD-cKNH[e5TQI%&I2Q5AVj+Pc2'YP
+
+jlDb*6ZH4R[lCf40[#UCIl!rL6CNCXA0RHV6&qC1F%H@Q1pr*ADG5VdeHm9"BR&Z
+
+6r`@A[b"HqHkP$bdhX(1M*rDf*qG1HQ1`5,!@I@I2LE@m-hN[YE!fjL%Z26!8h)[
+
+K19J6hZkjZlRKjEZERF*Kp1(VfVhifRerXi5cpKDR`GVQ(0C@ER0ZHH8fTkQlB@r
+
+GrqP'*l#$rHEpEGlQh-$YEGBQQ+(cRZZmea4Xq+DGQp)HmXmqYYjr`'Z@jB1QlDb
+
+erUHkGfC2[A'0D8fA&VpRbI'6eXE#VV9"Z"[Hkk'lMLkBm+dJl0SpB9MClY*KXRF
+
+hYH)0H'qH[RZK[+p!$K0DqraB1#A`F@'phRKdLlUX2hac3i2D0VbIYR1&qQM8R0&
+
+A('IFFl0kPfF4j&Er"CMISMI3h$VLrm$KT$el%VrPEIMlIbKk3d%jqqj"j1I0(ZZ
+
+ALli(pZr*KV13!2R$AR&[racZp,4@kS1pDd'0eV5G0FVVSAjSK20AbRGr(ljmGhL
+
+Ee$+"hNq3!&XYf$XQJTHSkb(U@L"kMQRKCka2#r@r`PY3lA,lC(*30)(p*jS4&)R
+
+@peLV6DDQ6'kj8)r%@jASJIL`4`j(Y,rdKJfr`$[Z6ECFAIKiY+hJPVRK-pCVamC
+
+#2)`jGa)A[aH)`iHkFrrFX-YkFYpBH$raEa$rNB[$Ej[c%((aESRi%m4I*Llq6"&
+
+rM$Ldb@pCErmE#fmQrP2LkX9jBq('D&XKZrTEUP0$I!2a$a!AV`Q)Vb'1Zej[f6[
+
+X'`Y6a!mPV[Fp0KE#e6Jea(Aq0KE@%lq4Z0br4ra+iTh%"Am3KkF9je,LbNYZ,&a
+
+!I$eafrqTa$p(h2DrP6JmiQl6rS22I#4kG54TCfDEp4Uf-B+2"-l-0R[IC'1NaXl
+
+-0XZrE)cJ"i8cXmhU9$G'T!HBQ@d@XcC'm1V#QGPQF@KMC*kGQ@ekI`0aH0cKc'b
+
+c2MBh4ZJ*CfDE[FHl-B,2"Fl-0VfrJIJB1c2Ep!ipiZ"p162Ee2mBi[##bTRCC[H
+
+2M4%mVR&QYPQZE@1%H`ZFQ@hUY3*acml-QpCrkFE#hACQhR6pcrl#cXbEV[rC*qh
+
+-[+RpKcEEh,rbLUHa5r!@R0k)qZQjiV(4a"j`YemhP`H4A@!FG'V8aQGqk[6h`$4
+
+Ul%8E[bQ[MAI3a$YCEEc,HdFdpY63idDVbbeBPlZY,VGJ(G(Kdk-k[hQc"GLB&4d
+
+qpJ(4k%-Elh),PYTiPcdRdFCcadI0M[5LJ6I!A"I-GF&F&maeT6r8fe2$$cl0NGc
+
+-`pX!V)FhBD'[GVN0i&*$GMHrd1j6'qQJimpZl,m(#cdJhf(AD'r$DqTUlQBC6AL
+
+S(P8hkedThR9clBfcl#elFl+f6R4$jXhE,pH"[R69XA"[6VbC&IdKmrV95)IZAF,
+
+ArNapUq"YDhU,cZQV+Ek"'IIEpkqT6ah1f8Tm+q2pXbRaL$cI(%!0pFRVaQa2hS!
+
+1mV)4aF`rG9+2L(GSqL9!$CYF$H,2&QpIN!#HQ$bVdPr30ae5$rTB,lHA*PdY0a,
+
+!afi8,(!fTEqX1@C*6I6c,EiijR1,XY-8Y9%lhVDQ[U,pHY69+MTf[&ZBb3Np4#$
+
+h+c[Z2ATlmVjaflNAAhLa$[LVdCNbHeUQaZjTiK26lQQi*b`qjE[h0(jcIk[ZDC1
+
+1%*c$$DE4NE[i,[$pV2CjG'5(cZ6MHR[0c16Ik5k&p`rVV((19SlCcYbqPAbmE,2
+
+`,ChIqr8-QVPleGEaBpd2a!F[lp9eQLVTpE)l4[1,A24)[6'bfqEk'qZ26r&SR1C
+
+lX+LQCklq4[G$["eUG`(F&B4r@H36ll9b+e(dPMqaG3#$EPhekC,N3I8jri"A4X9
+
+R#Hr-E4`b4'k8S#lKjjGfAe"LpiJh$jHGJV[[a01iFA)4qX56c""mFBqEqQ8d*5H
+
+KAr`Ak(H(UaGCjMZmjcEFcmjdIUc[r`SlqPlI8Z3!S)AM[[k%H%!5[rA,Z&1#Z`c
+
+BrA'h)T[J*TNR0cIPALId11BYGS$X5Ec0CGm'[+A[Ui#h4r1f2[[@SclH-f&p1*J
+
+VhLLSFIE9[hfDKlSJhP1LhUQ$Q(JYEZ[J&Y+URfb@qfTbZj@k8I&8NBQS0KPhICL
+
+AGrb3!2GaL5fl9fTU+*EDT3lUII'YpdD"Xb[#ke@$M$HXaE`RMl,'jK-YMFe(r5T
+
+e9h8pqH3pqr9rp%MlSM14e,BmA'0V#QYm6DCI[9l5XQ(A6D[0rRJbb2#Gip[M1q!
+
+lalI(GchIf5Pb!a"hC+Jp3achrplk"'rKB@*lb(FFm%lm5C`@ASpZ%"iMcYq-EUj
+
+HlJ%b0h)d5Jji!H8Z3%rS3m9h+[PUa"VPRU$N`,Z4R@Dr+A"Y)jGc6r#6PAK0'eD
+
+2IU04BXL6C@N2@qGpD([VR01hYek+Th6i5cIHEmIM66fMY`VT-rhXq2E@Z@JGMj,
+
+BlIAF+H6X&9VRID"N#V`NGC!!d'k0jaCKTR9-dH6Ih(J$Vf8dCZ!510[I9hj&p5f
+
+TaK9akafldr'&MmSED&lURFq2&UFT(mFEH%Q2LlRPPZKJL(QLYa)p$1lbU-D,R[i
+
+,j-Zj'TUic8A06)&EA2A*Ed`UPRYFc$XY[&djN!"G[Z6C"p(%iY[HTj1l%[Lf0q0
+
+fFA5CBJV#MJAC9)%c2YLk*!*f2M0+)q#(-f-e`Nb89a9-#C(M0G*!j'50i#CYCVC
+
+'BL,RDD5*b)8DJASZmf'0M#'b3#2ML(aF)q10+9bM%GJlcUc@5#Z4Hc8bQFMR0!+
+
+GAZCkM@"X-TrA#2!JFiY'CK$jXNEDL(aG)l1)2+@4f86q[8Bi3RqQ%Fa&jL'0F'A
+
+pRNE!A@GqSK&Fe-Mm8L2B`c2G'X%e6@FrM@"rFiCVT*2)"c8#A(*'DJ3SkSc4#2K
+
+hCj9'F*R$XI1$'ak1RCm04(L+UQ$3f$Xc0,+*L%i5Y$'1RD5(LHJN3@[Kf%N#mq$
+
+B5B,1fPQZ%@c'6S0'F,20@DQ4c86Ze!Kf$QHY4Z$Ja9Q[%AL!FIj#)mm4qAf03'r
+
+YI&NMZ2cLf*R#,ZVFUj%ALHL%!$qGIpE)9L*[D!5hrCcG'X&eV@bK4YiJNYI)@d3
+
+8Dh!,,AZ`4"b'+kYBii!rfAGV"2L6IDp'J$rC%c8#r-QHV"(J6lC#)m#Il)Fd![c
+
+*kM3ii%pfK8D!2pNQM3"rXKGU"2L6EGF)m#GlL8D)2qXe![c*INBM`*rXY4S"rQ4
+
+[dJM`*lY&)m#IV%k)!rjNlp3)m#Il$Bd!Il,Ie3M`*rYpM3"rXJpS"2L6I83M`*r
+
+X2fJ%q*2p*id!Il)re3M`*rX['J(qC(qP%H"2pRQ0!(rF)4S"rVJ(D!6iilj&)m!
+
+Ipa#0!(rF`c8#r(&(D`6iibUQ1q#21diM`"rh(4S"rVM[e!M`ajfL%H#2@ki4i)r
+
+l2Sd!Ipcj'J(qZ!Xe![aacp))m-G0D!6iipCS"2MM0QS%q10HS"(JMaYS"2MM+[B
+
+li)rl-Bd!Ipa2DJ6iiekT%H#2UeZ!!rkiRp-)m-IpSND!2qjA0!,mFHr5#2$(rDC
+
+'J$rZhfJ%q12U&T!!"ApFh3+bi)qV@d!@r(%9il,JMrYcM3"rh#k0!(rF8#2!(fq
+
+S4S!rhKpV"2MMP@J%q1-GUK(JMhHN4S!rRNjF&[ca*QN%q12pQ8D!2pja'J(qH#G
+
+S"2MMcG-)m-Fl951df[)aM3"r[*K'J$rH-Sd!Il`kM3"r[2-d![ca@M8#r2%k0!,
+
+mm5l6#2$(qlK'J$qHlPeCm-IEU"(JMkFl3KEmmA4(b))rhUdD!IjiAp-)m-IEUK(
+
+JMrGYM3"r[1pT"2MMlG!)m-IEU4(JMrGMM3"r2-@p,2MMk5k4"AqmCc3#r2(Xa!&
+
+rI$Ya`"rI6Kc`alF6"rcalF3"Ih`lFF!IhdiFm-Hh%`ImmHh%!Apm1h(!(pp1(2$
+
+(Ya-(r2(Ya!&rI$Ya`"rI6Kc`alF6"rcalF3"IhcG1E,JMkmBP`9rI-@i,2MMkkD
+
+4"Apm46B3#TRpG"Gc`4rrdaS"r[JE0!,mm6qV%H#2VpZ(#rliYfX%q10r4b2!(er
+
+R$!HV-[[YdJM`arp(M3"rI0h8A2$(ekh@"ApmhG4Fm#FSdJM`*p#CFX'I3$GB&r`
+
+*aQX%q"2Sr2"8Dk$cii)r`5b0!(q#14S"rJ5kLlRJ6k!l[J[q")T%,[J6+"+ji%q
+
+J515#2i%LN3[q"1Xd![`*&)PFm#G3*(,"Rd#4b!9r!N8L&r`*l$3!I`,Gqeh`*rL
+
+@4S!r`6D0!(q#(fS%q"-mV"(J6k!EQ![qK--d![`*ppF)m#I8(Gm&Im)hD36i%qS
+
+'Lf-bQ5,GYPc`*e6mFF'Im+dD!Ik%bU@ii%qSV)!,rS5+A5li%akQ%H"2U2MMJMq
+
+KlPJZq"21e!M`*p3Gb`9r3YfaA2!R904a`Cp3X3C(mM0&ZYqki%qSqbe)cNb4lVF
+
+Zq"-U[q+#2q%9'J(qK-UUN!$d#@r3#%,Kc4S"rS5keAV#rdK[2H&rC$)pm-I4'Mh
+
+`arQ54SJrXJpiJMqbEARJ6a$4#2!Rd0jki%p3Va(J6k"ERJIqK)SAR[!r`PTi`[r
+
+%'L(r)p2J#IrcBBf3!2r40q4raQU%r)qq)IpcJNE)rqJEmMr#+(M#rqJEmMq#@*l
+
+`2rU'r-p(08,q4pq3!2qCT4(JMhN$r-NXeJM`al`"rQ4ddrA!(r-'q*04pX8$Im`
+
+Ei%p'@3B2r$&[J$qC'c8#r$&[J$qC[p3)m-Hm!IjNrNSM`"rc"[L6qET'J$rQ$I!
+
+RSaZB"rkB0m#IM#+J"rkB0m#IM'+K"rkB0m#IM++L"rkB0m#Ic*-D!IkB0m#IM2)
+
+5([KMhT!!rmPS"2KMhJ"r(0d[22$([!(q1)US%,bD0cliirb*4XJrkK[JMk0)k3[
+
+qk"[LMr!A[[#2qJEiibJ1q-)rkK[JMk-ii![rU'q!2mjdMC!!Ip3h`"rRH)d3Ir3
+
+0m-G4E2!pr[MJMk2Bi([mmF%I4l("prMMJcq1BS2[mFF(IjbP'NR`a`Gr('@UI)m
+
+r2[MM++El(Rpmm-G4G2Fpr[M#2kl45))r[[#2JY#qaapIq%IC+Af22ll`Mm*Sq4j
+
+rI1%ICE[d2Ili`Mm+V[JHIhcK(rqG4K,mmB9rI&-M#Ilii%p@q5RIiim2rQ59UI)
+
+pr[MJ6eDh+0rMM`rqC*@pmMhqq1"29[F"hq12$rjNSaT*m-F(Il,+SrSHIhcK(i9
+
+4p6hqq-)r#VF+3E9j%`Mr+#aVi2%R%2j4q0E!idmJr+2-FZ$a*a$q84L!`102)2b
+
+Ml,b"ajp!q%ICIJ122i(`Ml)("ajr!Z%IC51')0qq)ImSR!'N-rB0q8IKa3+22i(
+
+`Mm+3!!8HI`,K(i8V#ccq"-)r#QX@H2`*K(m8rLc`q"-)rbK-@Z$a*`"rXVVP"4j
+
+r![!RUqaDi2%R!(qbbV-&(Rm#m#HVM&[Jm5F!Il,+m!3HI`,K(f9I$Mcq"-)r#N-
+
+4H2`*K(q8(6A`q"-)rcK*)`Rq"-)rDL6"Rd$ial-dNZ"2)2cM$)dNq"-)rhL44K,
+
+m#B4rR+Z4"(m#i4q[d%L#2i(`MpGU*-'I32M(*4,"B36c*K6qX8-M#Ik%`MqZe%L
+
+#2k(`Ml*6KKjr3[$(9@iIjThX'q#2Uma5k2%R"(rFUc@5i%m)rVLkHiBHId,`ae@
+
+&"3i9f$I!(eHe&V6YB0i!IeaPAd+22b(iibS2%hVm#F%I9aQCd102#2kibXf%(Rp
+
+#m-I9(6Adq"1#2klZU+((Re$iEpP43imrSI$IXU1'(Rp#iEq&43mprS6#Irp8)`R
+
+qK-)r1KT*m#F8rP%iSG$M6`MqH'r@5))r)IMM+HX6H[`*`4p2HII3idm)rRK(D56
+
+"Ra$mmBl@5))r)IMM(DZ4"(p#m-G6,Mldq"1#2jkb+U((Ra$mmC5I$chqK1#2Tba
+
+5k2%R"(mmjC-)0ISQ"rjiCfSN`CmFq12&0C,J6`lmmC69bhRmb3RrIEe'%[c*#Ip
+
+pXdB5r-N*rle-)`Rqj)6r[PdM#IlNK2rqP%B5r-N*rbhX+Fr2QcIN[i9,bARmb3R
+
+r,GU0R-HIR2$IX[2Q22lNK2q@R6IRm5FRr,FS1h)HIh,#I`XEP[2iNa2q@p3H1Bm
+
+r1H'r4IH4mrL6%rjE&#!jMcmjiEp&#j,cq*-6r"&95-lM6dl`CkY'%[c*#Ilm@#-
+
+*rZ3%If6rcRRmb3Rr,AL@mrL6%rjEm#cRm5FRr,IJ@FlM6dliEm'cR-HIR2$IJQF
+
+jMcmjiEm&ch)HIh,#I`ZHj6cqj)6r&Mc,HIc*#ImYH*Ehq*-ArP[`,1ra*brmYq"
+
+ChZ02A[K[`E1majqmm)q#ChQ22hRK[`A2mKjrmX*r#jlP2IlN`4pIm5c[m5F2r[L
+
++ChQ22hR`apIp,1ra*`rqq,UIj6hqj-%IAlR9[-HI22MM+iFYC`Ed$I$(9jc+Hrc
+
+*JcqqlZjjMcpjm-IAr5c[m5F2r[LkZqFprZ6"(er9@RQ22hR`aeImbA[mbB-rrU-
+
+D5I!R$rliUN$+Hrc*Jcrq8aT*m#F[qJ[Kr2)HIr+L[a"pA0lM6alm#44AmKjrmZ"
+
+2S,aGhZ02([`*&"[b(Rrbi%pJX5("Rcci%kJQ)qra*`rq",TIj$hqj-'I32H,[-H
+
+I22J6k(k4prL6"hm#h4XJ($9[)[!Rd(Q-22j%i%qJHd2Nm5F#I`,G'b+22a(i%qM
+
+X44jr)Z'r46-AHIb*K2m@a8ENm5F5rF8h0*,J6b6kLfpU*-'I523ASZb!j0UqSIj
+
+#0"k4ajm)r!R&N!"EBAq22a(i%kV+,[,i%i%rSA*UNFHI#2`*96F6HIb*`*p3F6l
+
+bq"1"2q(E0*,J6`6qK+S8L6cq41"2U+V(b102"2k%bY9'(RmLd9q)YL6bq"1*rN+
+
+`)I,i%iRq3[3QNFHI523ASK'-22j%SVm3cLrbq"1*rN*iRFMM6b6k#q&e)SmrNHJ
+
+[K,H,22j%SVm3hLlbq"1*rN*iZmMM6b6k#q(Y)SmrNHJ[4&d9HIb*4(mKkTBkMcp
+
+eSVq3!"fKcZ02(IJ6UZ+PcZ02(IJ6U[DPcZ02(IJ6+NGAjr'R6["(H-SkMcpeSVS
+
+3M8)GU'2H%''%4kd6KB@qS@j"0#0eIQlV49dU(%kpU![d$6@JSY'Upc03,abX++l
+
+Ur3c8#`FVH&([Ck"H1&M4'!ha-c"%10KM0*,-`"$KB!9$K[JC'#BFV2!k`d3$UK&
+
+bX"UK"P3Mj'!e3JfS4XM"DS3D8)f3!)29#$@J'L((U4&JR)Q3!128#$$14-KaDJ5
+
+cBL,N1$8#M$-4FT`D!FCTC,K`f"V"r*J)jdFMe0"UK21M%@TS0F,jN3KK`%3i2aU
+
+KKPBMR"q0i2U%L4cU)lrU)dIkb&JI1Fj(6[54L6jbLSqFjL0RqJM9VaSKqk`4UPm
+
+e3[CC)e5rDS6XXdB5p@Z$X-mDSIT9)mPN0[M*E-"*JiR!Ajq*`-@"LH"QXiRmMSr
+
+J0U#*r2Fqm[Xq!NF1*[)rq`LZZTJ)G3XD`GjJ)Y3YD!4lJiP3Yk!4l!dQNXamJjr
+
+j"Mrc$AlQ'rc-Md#NB#*B9dhN!cjbS)rJJVU*(13MbFb2m$-r`Xrm#$rc)rc-Ma$
+
+&XdDS10!)&FmDSH*!)e3mDi5+!idN-cr#cc`2,CP)-[-Mr-b2i'U,LH#fL)QXm*(
+
+EI33AVNd%pqa0**Rj%AlQ4rLC(q&RIS5Iq4(XLLD#EFC%U&A4#(C&%k&@452B&8d
+
+NQIN4IZC(q*NIi@GqK*rj%IrX)r#IBL*[qXK2I351$$4b%(*N%dPQrL!rm`IjQ6r
+
+)cra"IZBEf5Tmh3%E46NQHe+Mm)$#)c6k2EK4q,JredLbLc8+(b*k44b(-@p'#Km
+
+LfTb4IKFE+Ab)D,4'qPeXT2!KSVU&B6$lKRb)m!dMr6ik8P5!SVNC+9FJp!hhdI-
+
+eNZbM)d@&+PcH5&%"kKZU8%9R0G,[U#0&K5VUrj'L!Y3h9)L+2QkN+26d$4@LSP)
+
+F+3SpH3030#V+8E*eDi5U4ie`kpB)ZQ`Lh,SeJLkE#(C!%b(2S4(XJ#C#RN-Mf!&
+
+0K$b(4UJce3Kj$Se3CkS4mK`DSFj8)q3j0%*fi`mdNNce+'%h4*dabV-ESd3rUKR
+
+*9@L%$)9'b%Y)C,6S9N@p00T[pU1T,&5QB$59kCY$T)r#MKmLHN@qL3e)P(R,ar#
+
+BQJ'*-Qr9#2Q'PNrY6i5X9&BMf*e-(Y`ddMbmmk"jH+["[eBMC#-mM3#e64jf00B
+
+hC&p1N!!)PIN3##0#AA*QQ%D)!j&'b(**4ZU$-m-e3Nj$FVZq!e5KCYiNElbcr*Y
+
+,-jd5IDCdcqGQSEi@$CPNT*C,)k'3!)LAbqX3K-l8DB4m``2kQYZ44VJ*rCP'Z1N
+
+Ze3M9cEGVK2eCV"%U1TGSK,T,M9"Y+Dpc8ZeRT8E4@YbNEbldEcj'j!XD3@@C#r8
+
+epU6-4Re$lDR8,6S$cBhY0h1&[KCeUEcKc#r6#2B98aRf&Df-$,a@PSFId-V)SQY
+
+P`TK,CINjQFV)NfYPC,e0"$ZE9LCFXYEcTliHmR&D$fG!kq%8DMeNQl3+FNc,*5,
+
+-kp-Di63m+AR)H`EId6IB*-dEq*!!cha2)f53!19eRFcbAfX%&rEeGCe-TVjQhIS
+
+'eHUEHZ%iApF)%#(iM%5'X*%iLJK$4!2r6Bf3!1(@emLYVcmJPeJq**&I%Clm4Bd
+
+JMh1B4!TXjdkC9&YJIN`%ALj-"0Z[LB#V-*&[q!LQ95-(`!#B#2JD%`%fQ!LfEK2
+
+"[Q`LAmp%$T4Y5p$i3"$,Z9SMZ2MQG1KVS*0jMIh#4(J"j[-D`5kVH6i)Sq"m452
+
+JMTaE0B,+R'p*RJm++KkS%I!`jM9`f@6NK4V0!p640d0P2fZ@0d0&kIpPMI#UcS-
+
+DiHf(64SKUh+24XL3!-NZ-Hbq6&H'LmVilq60F%(S1Sd!qmeVB,r6V4'b69[d0A$
+
++H9,I!#QGTc4#cHZIbQZbDmifM9"(r!f080Rl[%Ci(8MI8%hljaSK`b1j4p#,c&p
+
+UK+bMp%ciP4%DSACA1M8#I-cU0M-#*0*1MIK*TP-MT-[5UB0N1jGj2%LdbLpSK$H
+
+'[U84hJ55@6j)E[K)I`i#Zl3V"`[V)edj@,D8`c4#AB$djf#j)L4cGM$SUG0`X%b
+
+Q6%-MNqPS"aTP(j!!rDG4Z#0p3rhhAdPNT'`pafL%##JG'-PVm`CpG"3,4`N[1dB
+
+Mi)5dhpaJR8IPc@KfFZGaMA$LAYB)NAHV4XKir*j%B[Cd4GjB&03CL4a#EXAP3d3
+
+G,RKlL%IY3caU(m,FqPGTK)JU(6K8CP5fYd1&i6P9)SG4MiN31562BHbY'N'*TJ0
+
+0i*RLI*2F9*+k$aIYH+L4T0V$jG+6E!Dr#T1Q2I[9lCQCqV"NP$FI&Rb85$-SCL,
+
+RCr)dbrdTI30X0@qqQqR+%@6d[bq[Ma"Zp9pUK$ZJj$P#lUV)De#$d0a)K*Ld@50
+
+JjM62NB,"qTSFQ#$(8F)%5Eq2N[eE0ZHM4$mJdh@8hh"`+FlN'5-A*+6IBk4FU@b
+
+-G&RIX-XD!@)&rbL4Si8cN!"kMKE0Pk$GdA3qqd[*I65EArBCM@$Ab6kQ%I)VKdU
+
+HXE$+QR'X-)b[b1Zac)V1hPKK$RqXEmLNk4Zb`$r80p`[p!d[a@L%GemNFSc`VG+
+
+"Bm"4VIBBdFK-e3Kj)YPFMT&V5+G*C"cEP[CR(*1TN@1&kG-),`'G+hQ1&3@K4S!
+
+$q[Si8@V+Qq2BA-bE*-pa2XraXRI*4RHmp&[HM'Gqh%XPchKUG$q[%DTiCGXD,eb
+
+hj$P"AJZ1RM!r8m8*B*bq2P(daT,a4"JH4hIh%qQbeR1LE"VY%MQ*DA"eVcj*9-'
+
+b"Ccdl8`9,F)qDi6XVNDSdTD-%d5A,"NR#XmVVbF+!bq45F*VDi5k5qRm*,N0GDe
+
+'U(RpLN4DT3TjdbTDd6r8#&`!D1j@Q8Gp$9cfYNMNC0'bcYB)eDSD%A26%Z&G*)h
+
+`fYAA*A++U)aP9NjK%pI+INhZFXRVbG*jH6eC%%CHRbS6*kp2JlA3ekIjVT`Z,,"
+
+'X'eTC)U`f4)j!eE!4(JV5ATaKQTm'6P6lN"*cmk85dmDS9T9Ae0RUK&XSIVk)d+
+
+iDB5+AARp%G(DDS5+8hd000Bh8d@a+fqQbNcT'kT9p3heU"S"8TVA5Ar1JSh`RT2
+
+Zm@#cperd$Hp&I8FM9'*)Emm@PEY-jYR#kmMfHlDSJQ@UcqEQUQ,5fA*r5USp@bj
+
+-DB4XK1$20&+E#(XVVkHaAEVV0F)ZkaY-MAP$9E#q`D5l2p3)%8EIS%Ec"Y1[(Ch
+
+Qjf+DRbR5A5B#MBafDVTFXG)h[&JJe8kAh2U'9`Id$ETRhQ!lemJjJNP5icQ#54T
+
+*82%F8B*V(R4!qh1ZUVNP`XYPqLDClh0PJM9#*0,AQ%F63EpeDXk9Zb!D`9jS-J)
+
+c6B5lV,lQh4H*R#HD)1R+HD*cPJkF*cIPT,,c2$DF*mLVEkKhPhV1NcjUK2F4j28
+
+-hldCXZe,M60N3p3)-83bc[#i2%1fAhfGG1qMSQ1AZMmUppNdNXc!4chDIG3Mp%G
+
+&`DpjL')5iB+YHFkR+bD5E'$R#iTT(R6H98lSI,QFGjC'Z"2*RR5qlrG-d@j)lTP
+
+bj8ebcr6c1&2Q8A,2e!X`%NQf[*PqbfZ6r8,bY2PTD20l8T[JLVkQjPpHAq"Rp!+
+
+rVe`)+k"j,[4cFD&SFr3eEbX)'PmS[G8)%8&kGU%JJNDS#Ap))KI*R%N9&mPNbYj
+
+eN9aYN!$F&j(E40!IhD&RXIASCM#,MGK%`#EkjdRNBXp3A-a1VNc'aA62[eNMC'5
+
+%BlpB&1M#99`XepCHNmJP-+VqPbA2*D+VP5h[%MBkcA-*(*0@FBPSqU5+5f!Lr@r
+
+T'qcTrPp,j(*K$i3GZY`c!&H)rP[HA#'U'SPF6Bfkl9m0Kk0Fe%*K#BAV@FJ-Q!L
+
+e5*G,j"VrqPTKJ[kY4XM$D)5-PR"demQZ,AQZ%dCITZ%ki5U%&lY1q'9j[8LZ$@Q
+
+%$)T'b10,aZX&4qA0pE$+`Alk"MJ9M*!!0cHJj0-h0iMD9aMZ'hLYNF9-5+#X,F8
+
+&JA)clF+T5Hjf0P20h5lUBFRB,[b24RKV5L*,4,PcX%B`)F%SMB"PeGa,K#[60m#
+
+"B)+mZ4&Qa%6)+XXqG5-c%-b8b#fH+lY&@+Rc0%+eZ8DS*cpI)VmT[,C'H'IZ!Sf
+
+3!*H9h,m&BQQN3cKLM@"@3N@*$UE"[+&b4pp3069,)NYK5[Ae8P%#bHYEjBD8[&N
+
+Z-km4kRrNp8UB8N@aPG36I%MIX'FD)E-ZN9A`rGVP9D+"PjkYJRR90lHKk6-4X!F
+
+QJKU$ib62lCk,r`3URD"")eKLc"YQe$GbTB`C2d&ZRG&2L'j"&##IS"IkHM8)(Db
+
+9M+Z&KC-mUp&l"UVL@#fU*-'peH"Mm#@*h#&-RdCi!8'iYc[!@meiKh6j5APcTfL
+
+9"CI[P'X-`MrHb@3'bThI+DVq,fL%%bHXibFphrT*8AT*,clTfA%f90qX%8fp4$k
+
+$0LFF)Ur[mY`JI61C#(S4kJjc0eJ6RL0[lQC'635mBUJ+Rl[CXF)[D"kbHTGSK%U
+
+[ac4#&GCFLDb6+L6M1VBmV@)GA3ihkfXJ9[JA'Q%pGfX%H'BbNV'm90p3r5@9VB2
+
+[0eA`RT!!+*r@Li+r551LdCF)9IJDB9Fd`RSd3JfC4YJTM9$[VK'Ua$5#'MAb@G(
+
+(DB3+1)f`MaSK2QS%1l5*m2k!4T,qI0Ehjl1q2jm90CP'U([6#*9S'Z'04)e`-MA
+
+#1iFDi59$LG`MUK#08*HR%Hbb*S,T0a(X(#E#fG-)80Y%J1iQ`UR@50+IHharl[(
+
+pZ8HkXP!MR*VV*,*"d&hQHi2SHN5K!P-&0X+G3b+r$31PHAkEZXdESTe'Z!9SK&S
+
+p3G6lp,k%4-$rD0hhb8d(UIXqGLG&M[[J,a3PlT0*Pkhl2VNXU4(@)j(lCCBPmJ$
+
+XVZCq!)C4Fhp1YLMKjcF+a`j9cGLPe69Bpq$IP"!IQ9F8a'TUkZ)6X4q3!2b0RCm
+
+iId%6a*cjbmTTjpirGrP[FiJfm,dF9*VYba')!Q*I$VNeX#q(A%IIP`1A93S(6-F
+
+1SZB`H3l3%iHP(#`LBjE,He29!A)'0[fEJX*b%pBT0!I9G[MlS*l++HA!GFjD(Br
+
+UG3HE`h5jh!rQ32Dq1Ul4-8H!0q(hjm$96YYl@kZF9`%ff#6NFKh8QmJMIe3Umqr
+
+$ZHJ"lY(mRZUVR8jci$jSIr8f58b&THUT)T3%TDLYrSD%bmVEphh9TcP`LE5rHTX
+
+NjKThXATHLTDr%h*4@rhP$3N,Z,bhheGpQJ-h6rZVYdPLEYH@HNrp*rqi(bG4@rh
+
+Bc&6&p"9CVhCCd8(pJir50'Uc'R4rACd"$#)6Fq!QDer2p!qhT')Z3*Ck4Ld[rkJ
+
+V6D+fqVC6-(@Qdb!i*0@E[`2HR*Q'C)qje1da0e3h,H[GBqC9BSa#*kraP5kQ1A"
+
+&YRrbE*+B1ibP,KSmcl`r&l9GA*M*5LF&IG@R1A#[YVpkQb6QTZ1ZkRNEU+Ik"GA
+
+)2,AkTPHU6h2J-Qjrp6C*c(h)8[@+0VLG@iSQ[EGCk4LK[rG*$YcJVIEH*)Qj#,Q
+
+VHPljlDQqL!hA1faBh*KSD1S&"rRccQ'[SZe2lG#TVSkZ[BSji(DKViYc&Y[Da!I
+
+$rKbi,$b)P0#,apbE,(ADiM6m6k44fqNjLefVkEfKVrVL0(c4680lSUAkT@RJ6@b
+
+cd93hBkVFhmY"A`F$1HBXVNfdq#S'f3AH#0LA3bl-9A1-YDhqqeT&46p3al9e`S-
+
+$Kh#[XVK&*9`#f-ILj0P1fpVTKk)I'j)FZ$$GMi)f5Fb0c")f8*E+2rJa6D2P(Fi
+
+rNDbb+bFpidd(rT(26k)*GPkE12q%8lA@ChZcmVi#rq"r*Be@pX8FE-GMRZd`R5k
+
+c(Fb"#q4pdh"qBNAGH3RUTfq-r6P`IhX36A%Y-1BqCQPLH'q0ImSPQ@LPLmISeDa
+
+"VS8ji'HMYKQhUY10r6P`-Ab`LlJq((-aFpI'rkpbdA3R-2M++qb$e3pCTJimpZI
+
+!rI,"$X&*3F`0b9dGJJTeCiFX+Y2e4cmZ*MP`+Ef+LbC*c-A%8[@m$X-rH,j1ScZ
+
+h`cr*l%2A,Fe[3h`K!ES4k@F1NKbifejP$Nb5Q%Z%T3jC0)@#YKp0kai&K`6KT(V
+
+eGe,")HD!5j+q$LeZDQLUNbXGp%qb2`FZcIGhd5D*Z@YBkU*Z%,K&AiVZR,-IqcQ
+
+lkX@Y%dGG2N#R"@1N3h$PZD26c!([*`1cH*@E9hM8I#m(lZI[Q9G*%R0CF0IH`)X
+
+M2AX$NLS235FU!p@E(,M8[kGk54*c)l"825qbm!rqk01SV9k'NfRTIQA[P%X1H!)
+
+BR()NLENH@+UHUKcq3A13!%DlUPp#9MTZf9Zpj)$lJ-(UN53q!(G&1k[IePGp%@0
+
+qDM(QdXC%V#'Hi`((,Uj[DMME$TpX+c[hHj19A9cd5KI6(2",d0p&Qb3H2VfhLe4
+
+MiFq8EU)lZZJFiEUiC'PeA5p8cPPmGU,*-ZM#eHhQQ@`1Z$HSlN`Q56`mcmMb-K-
+
+l)'I-E66G+4FeZqT[(UcHjS"2K)(U08RmaaYceG0TLhcckP)56D[(2&bHD&#h0YA
+
+UE3ii8UMYdkZjfr0'Eqpjii*eIbJA,A*X#jXE&4[J8l'rHTX$hKF'HUp*iMGAp&E
+
+2fe5XRXjlNQKDr3f*aS6ZbX)GlUlHjS$,KS(U08RmjLIl0P&RE#kk%jNk,6,0EeT
+
+CRqK&TUXDBc@ec9L$TPZH[JkP1H$jSEp$0NPFI&JIbq9BE8H&jCUc@$[#kP21CQI
+
+eLjE&*-IDhqD!!iQp(@+5Z,Lm[d1LrqMZd&@0mGUQ"Yf3!0*Y[UGkQ`0H*`DUeb4
+
+aF99[p8C[3UFlD65YIN(efCCVf6"B[Fd"9a8$e@Z5Z$M2YGMU9E,48rd9$6%Xd)S
+
+[SQVe0JIm@`a8VdRLiVcZadkHkNKk*QpKhIQX"1,&U&Upc3'R'!29Dj+i1-m+f1T
+
+9rp&6rD+'kPUG[*6Ek+RHjS!RMB(U08PFR%GZ@lhU2hC8[k3fVY8rr'Ve*JIFEqb
+
+TAT,%"qBj#6[hU[rSQI[&pE'iSV+`GlZVYcRJXf1JHNd5(cLT[hTPi(UUAe*IEqI
+
+qdF(UE3iiqKLSAT2%"blSVai,cDlUElC)56p2eHTY$RJ('Ga@r5p5rD,qkPA@8+N
+
+H()VYrH1[9*rQJ%Z4rYlE*2'"DhUV0hS""apUD65Y2N&FB40h9jmJlS$Ub#D*$mc
+
+VILcQU3kQZJ[@DHpCQ59l,*YBh'K[Ya[YC3d0YAQZ49i`8"KpQkJCT%-9081D!bj
+
+UpLY[R#YYV5!SEUKVb"@V,eJ(r&heeC(QJ&Z8UMV3*)N2I+KhBJa[l+c,440YiQ@
+
+HjaC1G(Ie0JGmU3a8VdRL!r-lLUdHDZBGeFq[J5a$fm6(9PreD3iiB+Ra1ZG5I9R
+
+Y`9Z3!+cq#lRS6QlM@6HGH,#,R`kiAU&r!rSKri(IjM!-DPq1'e6A)P-L$2&ZPDV
+
+0!Hm[!bT964+rTDah'P6""(F`T@LUNEdfYX*@rpaJp6B(A-B-9+p*iVHXlkfH9cC
+
+C[@Sb6,5XH)MQJVK2H2f3!2*K&Id3Fm#Yd+"Q*IUPhVLh13l,E`"T$[JMkpp4VUQ
+
+hk%$RC2Yc`&p0GBma5H+$m)*GR!BM5A1iCTP'NbhUQRTQ5'C4q2+qkNd11,RC8ld
+
+NL3r#DAkaHKkeB[9rR)XQZ(K&JQXba2)2lZT9J1'5K'6PrCNNZJ00XmFk0,fZ2P(
+
+l%Tc@@EA))&,@RIrE(2@f5i-jk1$L[4abFAGI$[&ZXbm(ACZpPi2HY2EABEAXHlH
+
+0hreGA`eqlXhKIILh15+lkGGkCM"NGiij5qeD$P41p4m@c``UTcRJ5fi3hI1MU%0
+
+bl+SMc3&AFi0e$"QRIZIfji!VSTVkE5lhDCr[a9H$&XicZ@Kjei&(PrK25RS9q8C
+
+c3IGUDE5F&@l5k06"pXbbp9fpC`jXQMAGiFhUkfjr$VJrUZQ9lqBLEjP[S*D-A4!
+
+l&$CDkH)UpC)h@$ec`'I5B2938mF(pc,aG")RfAR,2)NQE!Fh%JESAkqIl8Kb`0&
+
+5PHd`5H*$MZUEqq`KIA12m`fDPTlj"Zj!Q"c`cV6R$S3NLA&KX'[bP"'X60kFaDj
+
+Rp1PAeC(B(($T0+!Md53aIJT+NmIlpDaHYQdE,FmpR(h&KklZh5Q0fLA,AEFd@Xi
+
++ahhaBESp*eR09TFGPiYfED*A`Fh&KcAPXY+RRA`,$f5M5GEj0A@0XRr%A2%[eFV
+
+lkFah6#kDC,dK89qMr26SCEeCM8k02[$5k-jGHC,EPA&CC%([VL`[")IJTR!!,8`
+
+11+MDJaD5*$kL9k&,"hh5!EPjB+-l1c6AG@Ka)V%mhb'qd!j9,mUN1H$RUYSKNb3
+
+HRGmNH#fH(9#eTBNQD!SYdk)klQ,3@H*!p5B(R'2YU9k5a%IQQ@C9dm"E9LQDXQ8
+
+h9GHUDKCZ&UYXQFd"MeS$E*NQLBr-+p,-2Tfeh%5&SEQm+9'MHNBkD1c[IC)$EVL
+
+U[6G*iM&j2C2GBj3Gk0jMS"mdNeIPiG)Fm0e9VGiNLFINVaVBhL[Vh-e1TFKdP81
+
+QQcMmdXAEkJZCMqVGPc3(A)"91f55a'2d&S,Y%&dJbVF)!'adCiFqE6Y%`@@C#'2
+
+VjDB,A8lZQ5(0!8pLHfH)5H+aHI``2&2@APJa8GXK@jJiUqbV2Xf"q`2peGXNmGY
+
+`X9fXhZk#5h24%Rl)-0$0jClHD`jiFpMEHbD*hjjAT"Rp*PdXTY&Llh85k5"cS2F
+
+Q"abGlHQp*)RIRVpmB+Z(MpEGe9mC%qd,A'[ZU9jc`$[DhZUC*#l,Dl9YpA6Nd&0
+
+p%CQqEC(TUVS9U!T,f*4HP"RLFG(55f@H#Gl'k,KcN!$&B3kiA4YNFHUITSYP9Cr
+
+G!"lShhj%$BIPJ#irqr%Mb3&IE9Am-%RLX[c&(6VGB29k`ma%EI@f-(%@fPGpQJ-
+
+1h[UVYdRLFIRGbrEqArEerXDHhPH[Mk3ji"@Z[hUE*"lAHmNXfATaQ6H0TM[hr&L
+
+YlAheVNQD!klN"RCZ64+2bqXTlH6"fr+1bE1&L@[6[ZV6(,L9e9qp64+2(p%rHEU
+
+[9#C[cRNZ,CfLp[0R53iiVD[bCbC*2$l2hTNE9PNm`UI4T2HA05&[PpjAlj'N1H$
+
+TVYTlNb3H[k&rmZMDBmINAGCdRQDP)pD"kNd1Z-IE8ldNLFIhUX5XC#$lGlPSJMT
+
+'@LmZA2Y4*mN"RhT9e$&*iU0lUlIADHJ-0)dQe9YHN!$1ArZV6h,!%9qeHT-NRT!
+
+!4ea9Bm%cAbQkFf0lh@jX(hp"J$pR4D@qb45ra@pXhDV(0!GFb`jZE("(@$KSS)i
+
+d"cc2eMBrA%dEZUm1jS"MfPSrRM6&k#4Ur8!1q+hGVm*d$lBcK)1)mrU8I[jP1(T
+
++d*e12AI8bKa`G$[B-r58[UBX%X#l`iikQ!-+hX%ki+k-6R(hji$R`X%01hSAhLQ
+
+klT(3KDe-K*KQY0'+'ZrEkNjhX(VQJ,[$`HUK")k2b@pDG(c$kX8ZPSd@,mV-Va0
+
+DNSji"bl+Q"c`NEMRSS`NLBr*Uc6-r4bkEdfMaHT[AYSJPbUJjaUShZ5!Bm8pe8Z
+
+5q*Mmc8Kc1mLGPS[Z`([hA4DVVSRY1@S*KZE-a5HIa,(I`NMPchV99%N11!LZUMf
+
+3!108MJF84[C`E,[UN!!F8&cA-1m0kK"1Dd#9a4a`,ecYaj4-AhH`ENNrE!ji(pj
+
+EKrCe"hp@UN2l@Vf+BAS'&43mZ269NHD!lq)pr6KV2XI9#b0Ij+++rG!FF'hmmch
+
+QB`iE,Rh(qAPLqCV+'UGHJZIM[MV5(2"@@EhbDj,%ar6HkE'mK)ZhJ$4UdHZDbUD
+
+kmk8Gp*PFVGlQ`0Bf8,dQLBr*hbLL2b4@IeBZDUZr+Gj8Yd)F(p(EFPreD3liaHb
+
+[hLD**rAISD%rhM5DpRkap'baqQQZpYlQJ$20fY@(V94IjJ80&qHHPSZQ[8GP+%m
+
+m2&GlEh2!!qGJpEPfUTFlPch9+k0FU6j&*YrG9'#R36"HXAI(VRZ[HSXH4&cQJ#2
+
+2fNlC3SI+HKec"m-p1aFYEl5i(dFrdi29-`HmI`j@lhf1kX[)C+XhbZPbp@"I&PG
+
+bZdFm92G[#8N1Z!`GV"jq6Z0*AAeUFVFj&be92pp@AlhaN!$QJ*r4'M+pMAqCmKe
+
+LSlqMNq-d@Tkmi0hU&E['p#!(R*-19Pr(0RpXrMkFZ56Jf[Zi[AF&i'Z4rV4V2!T
+
+b`+0TM8Hj%%mf8rZVerZ[PHSa9CFkeUek8b(0!6HSJpA$FeCml,DqUh,ZfPbd-RP
+
+I8KrHYFP$$[K1VDNd4Z!pTcchp'M)kP@eDD,PkZ'FQpkr"kYR$MKF(DcH[3K(1f8
+
+@ak,1aN(8JA0VqJf[9BmFm0*D`rXMU2lQrPe3lmMfAYl&e5Gk(+pY'mJ"ekkehQq
+
+NqM*EEh[r2`cf(PX!ICAAUNF1q)1YpIjE9&r@apMHdpYBAqqK#k+AmaUcJKa`)P[
+
+E0XEJ98K8mMflcVr*45[9%qrh+H#C!jjRDj0h#G@,AVRljVU,Pj3d@UiqpfheV$j
+
+B2A2!69TYerPpULr2[H8rp'j(KIm`H,C@IE,A-!mji11f0RN(8VhFrqLCHe86pXi
+
+p[,c4QhZYHZ5!BpcDj(d4ldPHErAQJ+GVViHBD'AZQp82I'hZN31Hh@V9ikV"LIQ
+
+E@lCk[IrD@hhpmqT"IV"kjX!&pF(U`Ch&lmiVSHhNkIhAhXQVMkM[q9Veb)(lj69
+
+QjAPm2C@G2CLl5A3NRNE,eGGGTelVDl`1FX$CEkekA2JlD8,rV[1hZ@LjH[FqpAF
+
+r@$ec`*GGMIH#8Z'N["ECpTk1kATk2kHk%9h0`NRU+Epr[dpb`+e`EErr"Y@AR6d
+
+BjE9RC5m9(EDTl&MeX9qV(MRJLlM@Hq$p5APGP&'2dN0k'Ue8Ijakjkp9Mabi3&q
+
+VrKlmBSNrLClUeHp$TAVpJlPhq[@[+953!!0HMfZSddMejFNcel%mF8,BFb[,S1N
+
+@UUqUYp-Fm(3`@$fmq-G6mN`cP@`X55`mfQKP[hqEkU[Ul63(r#[ApMbIkX[kDE0
+
+Id29lrlB"Tri&G1qe2BmEpRXAA'kLqSIlUcpUX2Uk,UU[UVI6((!`8*ZmU96ITHa
+
+2UUIlZAjZ!pXcVSI8YNaZf1par"ZS[TGCmDB-9Kp88[dqe69c`'rLB29$6XH$@CP
+
+CXGAVRV'lpjZTITqV!1D!am9DlbG3IIQ@[+fH*XEkUSIrh`,AM@Sm,R,!1h@0bhb
+
+&kQIh9`pTdBlUbBjI95[H8,)$UZXd"eaD9l@r*NNmYGp,KlF`&be9[b#Ke9G9efN
+
+1q&hB@cf6a&2cbJNkkQG*qQfL&8jV$GA[FiV!(,KU9H1dJ(Q6mUKMG0DH9BTdUkl
+
+4XQYPBJU&JkVV*!FmEYH8%rG6rGbqQdR`q&'-GLNRjXPph1b!kMV0!6IGHbH25H*
+
+Tq6XC4QIYRCZ,G[@H@3Z&!kVV0!HZ[G83pcQFdC8RchJ*mF3G9Sqc%)1QZ#@@(9"
+
+GTcRJ%,bQR"K+p@8PQ9iYKSI`8V68qmAeYI98Ae9GTcRJ4E`fpbp3I9Na3apF,)P
+
+H-T0SZIGJ(JVFGK[X2A2!pAL0em'@HA+qpr$T*0R9YiH*9UTrKHVhDDbC!rl+Dle
+
+r$5plFJFVUGjFES4lMQ+d`U`XT2TpbQcQJ#q0'TIj,2ljj$*@6qr94dK[lqXVU,k
+
+Ujdjc`$0kEErIM&1rXJm$FqI+%dHU5E4F[Eq%k[FT[*N$lY4VF`p@kG6*rEhAHl5
+
+ljcj,pIYdiF`"(q`e4Zf[m#&BpTaKHkmh"RTl(cj,pIX8jm`"aqdeGZ&d(!q@@@5
+
+M-IHqR)Z@Gje&+kPq`1&"NJ2HhJHVchq@kXX-ZVP"j)PIf*k,4,+HS6"82q$`)-N
+
+"0kk$Hak5a,2bZJhMKXRl4LjDV(kqUhl!i8'5!hlPpe3[5H)6qUpj`AG'-9VU[8K
+
+p#i@$5[%N"jc4lqdpNm3Rj,N0`pKlhmp&5ldhe9Iej@N1-!alHkr9PbpafZVe1[1
+
+1kKI(@5&4rB!U2FN"al8e[(mC,ilPLmYflVrcmY`[VUpX@%le!eVf*!GmjGHUKcE
+
+ac$bADAGF[5GEfA'PVeI+PDRXJ!)qc3%(qi1BKb6aqr*ETVQ'krdX&be9$jXFZ1U
+
+G(G60*cRJCVHfkf$Z2j,IlfheHUYiCr8FD94I9GZR1H$+Ifr[Q55HR9G,QeRcV@k
+
+MPef!1rE#5+r,G+`2Q1iEeFL"+e4l1Y4Haq(%3Z'!fMl0!@h,hLib5Aa5AQ&*YhM
+
+XSZBcd5j@FJR#L%,KJ0Sqc3%A`S1X**,%*q9[Ya[&Kpq[rf$5Uq)VK"qUUZh6(,P
+
+p1S$mR6M0l1+$`9YSpD,rX0%Zl%4KU,kUYNpcj!B[ZGSNmEcH[3%hRV4kdArBD'9
+
+6apfAl$iP2A2NpZN!kVQKHdk[YKAA%l4kBF&YY-,3r!HUhkHNC`ki!USa00"cRpH
+
+,1ZBkI@BreArBD*NRN!#j(e65D`li$U[02DUINGmAEHp9rp(Eqh!9e9H9p'Q1h$i
+
+GIrea10)XlmS@G96rX40e&Tk['eY95CrQb,fZ!f#5q!0jaC94F2Z@)DMSZCPd5Ee
+
+@AeA5TcRbVlTJ-8RL8r2k6PZpkMpf9RqYZ&FTF%&plpa,M[`q(8!iRZUIk+hHA)V
+
+fVIkMFMGDrh,G9,p25FmFm&4Gim,K(k8Yc`FEjEj[p4m9(ErX`CGab,031+#N6h2
+
+N"fq&fL6a`M`RDYbh`3G(-GUe+iZh'0a(flXV5ilmi+e3Qb4HQ*mmZbZVrQ-R5i&
+
+,)UbqUU42Fq3(EiAD*2%(meIhc+ephqSr+VlaQ&4Z1"8+"j6dD3lijUiamAq+4p)
+
+biTVV6ll9Ir5kdF)Cp8,K2L8pFd#&-9Jp(&E%Tq9G)"KG)6aP&+1fqLYMY48aMJ#
+
+"T8KjESX0KU9)Ff6hUHhcPj*MRbDH1I,lp!4419dXm`6')jT[lhqBD'9M1j!!k[G
+
+TiTN$hXB(Ukp$c6!VcbYEr0"lQ4Am+0l&HCLl1"RZiPbfBQ,M4$dEh2dARblDS,,
+
+A2I10V%,qSSY9E6ebU1Z,3Z'!!Kij"+Bca6`Bb#'d"A)-H%P%$Y+#b$(J*6(T'6`
+
+ip%e9fV2mJ*SKl4RmTJrN-$h$4VmRKrBX2mMIfkDC@C3F&Dd!FdM6iM0%05XjF"Q
+
+b*iFd,Ik3!&a3d$Uk,c[DTX9RLVm@c9(Cq#8(QaCr@0JTc6&`HqQ2l1dPQ(DTH%c
+
+42rIlT[L`(Vj623TdqeT$$RG!5Dq9bGaApHjTM[bJ8X%QL6qFp`KLlZ6lGq5L&Ad
+
+-VJ3GXZ0e4jA-i3hS`V%'D[N&,J$Zc`&RD69G(DiAAj,Ae9Rf6T'M`Yk0cFa(I*C
+
+ZSSPM!$2A[Y9*$%cj&MIPFVqh019MmFjdR)T!p@q2ki[6QD&Ar3b*jkUH'8)1Ejq
+
+khIYV%#9P!DfbT!Y4Q--GZ""`BqB'Fb%b-+pTM[bqq`dKZTp,HTQ9$f3B06S[6k+
+
+9ka(Ri0YA,KXPXfJjb'rQSZNXUQ%fq2N9eAk5e6*BkKDQ`Q#P%a`8Z!Q'%Dl+9AJ
+
+mdB[[lX$NT6RJ2h6JXV8QL@Yrc@jq2aHe(E+&SIVUAB%d4hl3!Ba0%YIPf8fM-2A
+
+&jhq2hT3YNf%S4!D[`LFjmS0k&*XNVKrHGm(&Ycl5+KGFE''S[RTA)-f4(l`jDT2
+
+%pIPl8ECkX!#lUpH,lql!AB%d"bk9lDfH5H,kr%ek8fpJY459kS[)e'b4kIV'ZMk
+
+cP24-84LpqrAGLcP`1D*f'H*KpSD8TE$q#FSZ4T!!`afiFb!GdRQYAL0)Fq3(Y5m
+
+f5AaZhZ'6ZIJ4U)q3!1ll(mKk8dcHa1IU,ETN!l"cTMl5HUm%$6N)&mjbiFCQY4U
+
+(!0Hl1a32fU&MUA@a-Np*V8Ba(4bDLjCV"4-80kN#0FQUf!YAcU9S8ZXF9fcFV*U
+
+-RPV9)eUP9NdUXeLpcC!!jXLrUJ3b5H,Q[*V+U2)$UmQSD25,k09UdHZ'@'hH5SI
+
+jLrlF&"rq)M+9&9I)i3lFH'"PCNZSAQ*)Fq3(,icD*(&crX+@3F,!kMmU[L)@Cl)
+
+@)S2hlj-Fq9GprTNNmAPjIE#j``c("-AScMQla-kCR,(['V5aX!r(UFdhJcm$2RM
+
+Z0m9(&[Y0`R5kXNNJKlI[aJ`GhBlXbG'l56#(qqV0IQ0'S-"GerdjmQpF6X8YRaY
+
+lfD!21&ip8"mK0PUjk4,J",[X+e4[-X$MGLQDc#+[q01[@pbKVLq5V1Bq9@"e*,f
+
+AZSD-`PGff8f,ZB!0El2&D&*VHk*4Lid[8YGkh5j#J`reBGABUSc[bGYqh9IplZj
+
+VLM(A@ViFMIliL[TqbMbq5(VIbjGV9N(+[Ai&6)kk(Xf+aEbLA`&*BQU9(*@,J`[
+
+VDXr@()A)`*f-0%GGciAXlPTYN[KLZCG3eP[XQ)ml(!CIGACYV1BPAl0hJDmYVcZ
+
+TBJj[J1h3bQ5'UKFidKcj3Ima0NPmm40pU[6!h[qSU0*[L&@VS3*8Alh!NHE)$hU
+
+,X8RLMq59fAVl)M28h[m`89[p[%V2,JciZ8abi1*3Ir8f5Ib4[1E*h"F+l!f-bV@
+
+KiT6r`%ejHp8H0j!!CN0UB2Z4V8@UhmfM))FlF-Q$9Ri@0H!2ZA"Na5Y1ep)FhVk
+
+V9r$[8cLmjhT%Vf04jR$hhIB!lK8Lqbj`-%GqhkeLD!$LMq3hE+-%$qcpMfjGq*c
+
+iX8Ve&#+[HUbd1D,AR$jUNRKeAQeQ-8r[Ih4IBTLM0l0Cr4k2P6C(p*V64dd5Vmk
+
+l+M(h3J2,-&@ZKdV5kjT46q+1mplU*3IZqG48%Iq1kXYiEbil"9r+442-ZkUfZNP
+
+XqFHAj2NUbrfSMpKZlZIDjTSDGATdKqT)NUbQ*i(9NGJ1QFIUTT!!6MAF3Am*5Bj
+
+S8%pTNm5Aj0@F4['"qrE&U+hqaNc@3Q6JfNHD)pTh9`Ph@1*,mMINM'SQq%iZQ[3
+
+qF@IL$Pcl5(0%JhT+Qb5q0(m6f[Eq'hfpKr84bl8-A2Y)FN6lp*4jA1IHQGqV,%q
+
+TZSeZRK)'1-8*8b(bUJF&Qb-Dp&jMNm5AjA8rGVG3$@,2EQ'm""8LVcTAX$QL36H
+
+3!$C*I&PH1f@VIqAPc8EGKa5ieMf`fCJFdD"R'TXNlXaIV$5X8@JR[TY$5MEDF,,
+
+MGGSE"R53!'Z%LGr0km$3"8qYSB[9Ub(-BE5*eGXHc'(iSHTe$HC3rD)lF&f$1I4
+
+'#*a6$q53!!-Zb&'p9)%FfV3#0l8(FNLTb&'pqX!FBYZq%"Qic5!fDp%1j+KH8%!
+
+1GIp3L1blFi$VkSA)`$@#Y)jS3!1DcR3dS!&0CcSDd)#Q-iflC(Ybk%a(!aV3G+D
+
+M!IeL1Y24J$S`RHPS3,@@cR3dS19+CcSD8&bP-ahYZl2,H4hjiZCR[9(DB63Bh+X
+
+hYF-BGiU2'Fh4lDc4$Q2F+CFQ08I&cjcN%+hYTd3P9QD`5MNi)I&(j8DXjUL`*X`
+
+K)"0r92J'cG(0U0Q"M5mA69LeVp,Bq(*aH+!jZMfLfB'0,aGePqESGR"L"cDqA,4
+
+"QU1ElE!$'hqXTap9jcIK(,mcAI[bdK4r62EJrTe*$N3#TkYh1b5(FYM9kaU53bk
+
+3!,N$0c$5@U-"K9aDDc5JBdYVMAlM59U+0Eh[Rc-T0PiM5KI0dHedc4BEBk,"jUM
+
+kL3qGmj,&+aZEN!$b&bPC',+kV&EFGK8L!eFkdKc4S!V+*SRAjZrMQMbKpIr4c@P
+
+*2k6kkT@10%FdU%bb5H+eq4YbYRV9Y&@U,ml(PqamY&H[k(I5@ImlhiU4[C*Abh(
+
+NEh--bELQhPX(ENiFZXMV*!aI9A'FL4cH[S[,GA2BUa*1#ij3ZrDU0!FFc3r@!5m
+
+3m9TeQ*&`Q3D,3S[l&@3bIf[)+PVE*+Y"`Y$k2k[J)LLFqGD9R6Y`eb60%3dUb@b
+
+5H'hr&Hh3qMqVE'-,UTFZ&Aa!pG@l*QQ1D*rL#RHZil9j"Y4FqB2AJ',89Rr0FUf
+
+,[DrH,%Pc4)1k&TXNrRMHJCP4IBE@reP&!fVUB[A9DbKTMQK3ef+6a"rIdRG4"Vi
+
+FLe&ErEc'Z-eEL!aF3dPc4+rU@Nb5q12jUhX@GHlY4ahEXd*Ni)T*QL-D[&pPNm6
+
+VmT0R18KeF&AK)+pBiHHqHKmPc9%hU1f`5H*eHB@hhC!!rVYFY(*"DMUEa$k(%-a
+
+4piB2P5p4IDpR[R"chq4Ka69SkJhFG%Pce,hK3`8AKGIeiRhSEKf%AmK&8fH0ep@
+
+[A#akP2[8Cd#hhdhi)bK'+a-$0a)2k-fNC,-a0aa#HdHfjf,+G9A00D))qC`kMNU
+
+b'V9,D'pb9,3[GRrG,Rqb[bkThH[C6em3'q#(S@q'dKaeJkS4Qb5q+Rpa8(C'0L#
+
+0PUCKb2N6Cf(&'Gcl$0JP+(&8I6[RRIEfDA[GXZU'Q*Rr[N46"8DT6kfU`ZhhBYl
+
+5JJ2ZXN+[-'GaV)Cp$6R(CEbXMie$*fQ+GT4b#efqqFYMYE'-H`HaB3cDrmT%I,R
+
+1#HYGA*YSDBS[NMkS0JdeQAbARBhD,kd9r9'lAI2VB$A-(Dj&3VJNYEE(c)+CTiQ
+
+SBHC+cVL2A6#6,Tjj8Zh51SfE0&HGAGGX*[)5rCpCI3&pQ%Q[VkZVbI9E4d'0+fY
+
+HY8l0A%RH'602&#0S&pE9f(UPKA-5,BKFdHFP$6MBE9pFSrfL,kFc&TakdVa6jN[
+
+Hmj!!`K9lFN@$'*Fm0h%qTCh1M0f3!1QTc++'e,jd-PBIVlEcHR8c,%plh6NV'Ke
+
+l1kFaaP%Ke(JqXkSe`RZ9VId-QY0@GqSbXHZS28lQ%Z"k3rACbqLGe+J'aHGB,Eh
+
+1j4cRa"BadjpVBJh0c0cT)ZA3'8#a-qXeMjR[5r9dTX%@Q9&*BGarDKPQcK)XBUf
+
+flQ0pckpHAQIV3,04#K[22Q-LdaP(rI1DC!)96daZY8J0rrEc'TUUQkVVU0ZNN@)
+
+j+r3D,"@JQe$P'!JTTN%IE'QBk-9e!Q"!8BRHQ'KSP+V-91LSMXh0Xik&m9YUdZL
+
+%QFR3%6![&I['jSE9T$(6UQAHXU)5Qre`3Qm10A%ZZi&lcZ)9LU#3!0YF&U[P2'S
+
+b3*Fedem'Vb*)r+!QT`M1aFNTPXJaX#H$@#q8cF`RcS-`M#N5B&T`TXp!4`,41X-
+
+P!*L6N4iM6HVf#HZ%@6PdRm!XRBpJm+VDa+a%BlbKZVk*fdI&6R"l+DdCYXPS,LD
+
+DDm$T-l-J8GS%5K!dBqDX"-fd@&B#rLlN[EDZJE&5U"F%1Z18%fhAN31$T3-eKdD
+
+e9c2R"MLd%dQU14RlF1Q!k#+!15TZ-BR&lp2)GrA*FM*-PCN88#V'NVi@a%p3$-k
+
+hM%8XmY*k+NTbL6NRm'd!*9i@XhlZ2XlXL3F`'EaZS0-L*A-A2'SGU#k$'6pZEhB
+
+,R0r3h0KB(A-lJ0L4QM&cGZpX@C[paM@he'd01)`p1E(L"1fCFB[+ZPL)`)cY'3B
+
+P1CTS,bKMdkM-F!N*M$Y@9M1(j9Q!6R`c`Fk@bC8-VhD$-f,G9XaL`j)GeI5UK*c
+
+f[$BMj5ia2iF*X+CcK+eTNI@AD+HYZ"SB8hjmPjbViM`+P'C)T,h95XaQCBh"M29
+
+NTdik&5DFIReMDTGpQB[3iX4L1)i%k'(YaHc,4D#FIV*X%maZYR$d*GRiFBd!m+A
+
+eGJ(E@#mlP6k)'!CZ&FhT#lJL-rE"N[8rkF&a4,Sa%chRYMcP4,pGQE9(JTaUjB8
+
+X'UE,$IUmBrI"$-K-leiS,Sm,Z"%VceI[ffHFDRhm*JL%#3,@cK35BN&M4GdXQQ4
+
+f80[pYZVimZ2VQR9PX!H%d80&6EdPC+X4HfLAJNARR,bJSAS&IEma-8-D*P8P0J9
+
+-hEBLQAVd8,H(M,3!5k*fK(0QC+rcQ+-L,i0c6YH#`3RaB!el*VJVM5db3'0lKTp
+
+,RUR@V+(D0V8j,YY,Z88kBa9k!Q05fJ$Q,,ED$PRfpG51K0)G%'%VMf'ALR"6lVP
+
+eXSJN4BE),Zi#pUC6@&j6fXMZMNK3*-3UR%k&AZKL`8crMM8hh("$imVDTQ@*4QL
+
+K"D9Rec3RH')R@+BL46&cLB4P&iq5T&aB5['3!"Y)3'iR4k@lKUiZ+F*`HE[1,ZG
+
+f[d``31LD)PXQZDlU'@(GA#Ud@BNT5aHB)Jp@S@3X9F#ZTJZ,*8,62Bp9&&NUbaB
+
+`3BUKPKc!+fYj(U%8)``i5M&&LXR5Cl+"TUYHbUQ0c5l6+5Z%k`'JFYS9[)Sm9JA
+
+Zddh+1XC0f)TNlkh382mr!!!0$4"`F'0IEAPIBfpZFfpXC5jM4LPPER0P!*!*313
+
+!N!m8C)i!&6!k!!mdq!!d!-"849K85PB`-3%!ZEb2TEQp-(-!!!'U!!#hC`!!!6%
+
+!!$Mapf4[V3#3"Ub@%3!)(1ab#')9**cV[q-L4jPjrS9lYAEi@5FGe1GJKaFkr#D
+
+!JY&S5Tq-SAe51-[NkG5ANZN"$i55HSBkG+m9Mpl4S#j-G*,(hldAlRNX`,QT6ZX
+
+laL$)2BC!LAh,ULY'%3Ke91UC83P3Y-PM!+2k3Gr4+3#9Bb!QB9XS1'SNP"Le,C3
+
+B%cEHpP'1GePCD(V")fVk++I(B1kBij*(!4kHfh2F*@A9ilVE@rY"LHh+!GjZ@bM
+
+PG$`kDLZ!8LP3S@%+9(HkAZPd"@J(AMpR*)@$8JTPPX%1M8##4ZEHiqbd#h*#,&5
+
+"'(58TjA$jcMFIrj&YBB!(1JXKAM6QIU1S"4#1TeP3mk@jV55clSedZVHXcDBT&2
+
+ChB%r%1cU")Ja8h3kbkQpG@bPJNB,SPDhh'%"!!!'6PIb+d%'`%,EK*lA1@*RRbG
+
+Ik-,@c$U,[XIAUkf%HbdV`HHj[Nam'JI)U,Qpb'mT'5f5@cMjKIa#8,53!&r)E*0
+
+I#!)@JSk&,!3Y3&epfD$V&Q0NXH0eC%GZ1E+3!0%Q5&JNjh3P6`Nb9ZC#0VZebbq
+
+[cP*cAkcc&qkLGREDGL'mb+CNC3ikYh6#UHAabi`-1"N[4bB,36qLJ+j*hk"*hf#
+
+c@lMG`L2l)VmM#pN0b2,Q-E*33P8R6SVecD,B&-*9BD`#@A2a94kmTD+&pLG6)dT
+
+Z@65I2'P@mH0lBV#B1D'4,JVX4dSlaPGK6BK@%!JZ0a"DaP+I5kpQ@qRml)9d2+Q
+
+ILRTXR0"cY#F#Ia6ATraX)2#Q'fZhlSTB*GU9FGd*BlqH6k6l50$I$qV0"h8-i',
+
+MkB-RMRJjmeeALCrC*Lm8LrImd!d56iT2HpS2M4p1DY2GUeHhC*M%GdqfP9lF[,Q
+
+K3R0EjVe"jebqIh90aQFh,jCI(*jmG[YN9`@[M"qmVhhSBp$eSqYD+hhljSkVRBL
+
+HB%qlbfI[U$PQKhI0j!p366T)EfB$09'ekGV9LrZ"'MNdNYPL89iBU80aVR`2LlZ
+
+QRIP`JLBHq'jF+Zm)JEDhR60UdbTpk)HHQ[H-&PQGP6Nr@F"@$i`-T8iIr,Tk4m`
+
+@pZ2PeE!'a[0[Ti8RDh,mrJe152X'DiqGVpjX6N)RZ(QcVR9ifk+IQZS4Mp"+T2e
+
+capbqh&+ZBk[0h-0S0N-TMSkI5p01G#XkF@Db9"DPdS$RJ9(205iD6jU0mNfaj3j
+
+fHqm&MYm@eC22rIalVR8RUr@1$#GQ@TTaXAA$pH,0T$Plc(Ti8qSejH5m[Cr)K#B
+
+KhppriHQl+LqDiSdU&HqH1U0!lMQahBKVE42B!AFhbkA0Q`GiJ6fjf(6,q*1cKS9
+
+qk"Sa(,SU-KP!@F%h))k"q(2aMAMBU!!1,)LeYe(kI,BL2UQ)lBTi8K&iH1NK[V0
+
+)pjFl4AIUD(5$HlL#ql'E'&`H)*)$hlARlfESQlCYSdF2jRCSS&CK[Qk,h0B+Kh[
+
+!'q09V)6GYR9j*N)jap5U9NUR(rY"m1r[9`-95qP1eEpeZ$S1NRKD1MJmkQ#CQNR
+
+kVUaIq(G$!M,bjjXU,Ep!Ve+*25I'IG01YKF$ijhLH2ILUG+Q)RL*82'f3Nhl1@a
+
+r5kUiG0e6[0[kFGlBaEh%P"*Fh2ZK4#&V8RTZDae+2GHqN4r+EDP`FP[YAZ#%Cc5
+
++CXEbH$-%8$dS8IR*mch(+p8hk6@@AeTJJp-fX6)Bb+K0EYY!'MI4XG)h'l(F)3b
+
+e*KhA--5Bl!8KcGlY3adf6Z*R2eCF$lf26h'6YR#C*dq"f$Grm5m[(q*dTkZ6&jf
+
+6hBeNQ*fa&3p)D9hrF'h@9*[1QErm#hq-)lbRjP+lYf@![2Ga),TYr0lU1GUCLFe
+
+S9"%%%f4C9U@J$YD$@2kfY2H)0GJFA`m50A3*ad2QK$EGXa)Ip3qNUm"3m+E@06j
+
+5DPC+cplS@+bTjeV0lI[KdcXbN!#ZqGLIMA$Eqd`ZIVLDDqVMZlG`-ir(HA)#eP5
+
+2$j8pV8mB5C1RS%3+4'PGic[YiE"i,p,1C1EJ(#Jbk`FibeGQM[[SNl0X&Ed6`h6
+
+@C[HEBQ&jA6U&`McD+4EikZ0MCbU*8#S[MRc26&F2GV"dJqX(UbUJ"l+)I+#hYj3
+
+iF%C8BEPMS5FEAHkX5Qlj-jrDM[FG[Zp[i`P[IcaiEdap9%m!KI'%X)T2jJR$A4V
+
+68"fXi"8iPZj6dEajY$V5%Na*rDk,KqZHEhjiKQTVS"G'M@b'1--$qH(K)!)ATFq
+
+q%'kqfqr[2lGd%'lY*plb+!M1###jFqjV&Fj`[aC%U*KJNbX)-Z9KC+4A!33#9N"
+
+pAh4Z@p6IPq-`QH@25F8ClZp(85$Tq`6N(NaP#XKP,R)k"XljKlYKI@,JIkfG-G&
+
+,A%K-!,0Z)0@k5D)V5!13!*RlDUmqJ0'"dV*d9k-jCaK("8BlQk0N[&TBIE4Rq!i
+
+"DUh3R9N0kFMBcGRfkA$iari&,5QIc'!eYN&eS*Qp+!Fk0m1a!J2bF9p1L(2E*iT
+
+P6A`VqThRKi266RrBllik26cT$(ZYIZZiJaHpCL@[GV9416X!eIVQ`Q#reQ6j@r'
+
+f@#MmV[LPUq*ST#UqN!#0KLM2"`1F!3lKMR(F-ji0ej!!N!$KlU!c50ZleKQdqiH
+
+pdfjr8$5,5))ikVi+#831R)"S&S&m2['l[Gl1Ij4Kpe)N5+Yhj6`[cd)p(+Mp2VJ
+
+'2*iV&'MN[99rFe64hS2FA3Afa[,h5QQ6FpIe&m6G2Li3F`D3!,Q2)hPcd#U9Pr5
+
+C6S)6HM)('q#r6m&AEc)$3FZq13)fHj[AB`I2'qrPkXPl(`GIrrG+93AqBaqD&J*
+
+2bZ8p"+lHeA5!(GiG[Mc'%F$T"4EPZmjU(Thcr#YUm+PeLEVf%HqqS+d5j"!6Hqp
+
+J8,V!F(E(Bb#)hA''#+lTFh"(RjE[%!(IPDQXiIZ0`*R%&8'IVXR!@GK2eiqG'#L
+
+%Ra3'96AI!m@LMi'jYUAp"$T%2q#q(L4T5cimJ4TDR&6d6jZ0VfjlqZ"d3#r+!RA
+
+1ZDI$Y)N[Z#05V$-&N!#bhhm%#TAr`-qqeU*2-`9D#'X'9fMdP3fG2'524!eJECG
+
+bfTD0IVIcq#%qI)j'[pXjH#*q@3(`m@mcq$Ur5Ed!KmGH2[$RB&0N0AXPbe%#S(A
+
+Am@,Z6H1VjFRC8VmVG"'&CZJb#K&'@(e&0#"IS(lK3!NM5G`LDKA`f(L!A8Gj-T&
+
+#9"Y6+J43NNFF4Bb3!,Y-m+fAX8YSU%+Er('CAi%81K!MPB3HYRR`GH,Sp#%Ef!f
+
+m'B!@TLi0#)"PFfHT2UicAfPYM1dSUZi5m'9(qY6+qpZGBqj&QYX3TA3kB$r@q@8
+
+[FN##lbh5[J3mP,G[qQlk9-HdC&5%eV6rTC%b4XfUcI[A*I69X-TVed@fj0JX5iL
+
+8U1e$(V8eV)XEB![ADHLpG9[YkbQpmYp6UNF`R9,Gah4+eXATP(c"E&IYPE-2[ZK
+
+I&&N'Y*MrGD0N"1B5V1q"ASL)q+["kMQ2N`Zm0SLYA499CQfl$KfLG4#X!%PpSSD
+
+GUJNjP8S$CQaCTIeQ!!IfFAlf`p*B5r[`h9G(4a8`JIHP'IZNA*R,"k9Y@b%dVPr
+
+'V32!3DN`)-P@2BDZ@"Y(Dm+2V5)#,"01eSiN!8CI!cq"(pVKHB,mk)0ip1V3Spd
+
+F8qe,Dp`&'Y!j9D1@[M!*d&HAK8)[qh-Ia*Q8lFk5Q1$!"NlmJH)QSMZd!F@D6fB
+
+EX)#B`'Ya+,MXfc)I4Ua8d9UY$0%hj"N9i`VN$EbYZT2M+LZXk9JC*pLS2@"R5,6
+
++X[T@kRF-FN&NRf4lHI%hF!Q[m$lJk[XqbfIf,59%[22K&aeD5XbMXeN[B#,,8ia
+
+l6FNih$"fB4I%+$&L,X9CU1Edq`M5`,3SCfJfRF*+9k1cV88!(3Xb1U!IF6E2#Q)
+
+K$HDcJ@jKc0Z2`D&kC``3Sh3LLLd5amNAUMM$#mbmqaId+pkmIUh'm4EdmBSICbp
+
+4QmhSMJ"N(B,#3mX,kH9B1H`Hl4e8a0kVJm(KPpL*cfNPV!k@ReZ%fhY4c1NQp32
+
+5L*%1liiGU2pd%84jKMkhjH`J#3,Sr8K#9"Y)pJprE)dRK5pP!05U(!#"GY8Be`G
+
+I$m'bVkA,,GepJ9CdY,`,k$*82QKbH%H+3SJVi@HG+jD[pqT%'A@a`2(H8l(2me3
+
+q[HXBmHP&CE'E(HTPA,fSJ5(a#S*&`8N8b!60!i5"[*G[0#[0hI3QXLbHl&Yb4fj
+
+,pk4l#VTdh6d62X"-Adm5BTd(11RA&"fH[F#"$!6YkB"d'U"P&N'9VF[`cr*Vb`-
+
+kN`k3!2+*lSA&im!0e8dF)A,XND*X%eQK8%,E(EGQQekDBXNqa@V`E-5M3ccL[[$
+
+4-Akca9Sh[&IlNY#kV!Xk)'rR-r9YqZ1'T6eJ[l)'mqNHc2rr)XaId*9*fh#HKck
+
+r@,dk6&mpA3@4Lf%9m"Z5J`d0%'iV!$3&(-"Kkh+A9D#@L6IZ`2&$!Skf35LVq!`
+
+R'*JAGaLArMjA!l8#a0f9QJKTlSFfBVeLF@52F0J%`5R&SfZfi@ZJ3HNi95rETBU
+
+hrcXVdN*D(,h+pGCd8T+T%GSZL,XA4(Jh)0JiX(68%*A,`,Cq[h1FphM1@hm+B-j
+
+E$-1HhJ3d3*N1*S3[AAc#3Zj'mHdiV)UF0Alidd%MmT1Zhi"Jp*IIFN[GA4`c%48
+
+4,FX,"BUVYI5MbBQH6e-S1*fQ!diq'3f8Vf5Jr2$93*mM&8U0j"UVZSLI4%p%HK1
+
+PMhcM6N@*+5IKbPGah,VYBErea90mM3Bildk"Hq!AUr,@AVr6qL`Y&"dHehUhffQ
+
+rk(+YpQNmM0R8,3$B2YdYec[TE[RA3pq6kQV$B&"!IQL!Cedj(S1"%rD)c0NQ-)(
+
+##f)!ZqmY00J'fE['I6M$irL!+*@AXS8%0JPCj9e`q08LlkGLQL*f1L+'-ZeaSZM
+
+,r6)+L8fY1Z(38d$d@`4jb,cSYh38#NNXafdhY'[1EfFbTRJ*1[i0dQ%-l'0jc@&
+
+FZ92iGpIAVlZfHP)3&GYf--jHqr0pqffq$0%(D2%HbCqJRr#(3#E53kH`BU9%i%C
+
+'3JN4d#(A&(4R"e2#FQJA$!U-'djSPNk"e2%(ATXE(!q'kp#"bS1mdiX4RNl`C3J
+
+$I$irXQM8l+`-fpf6rF26`qj*kqLieHjh"e"PLTUbVEbi#aVSJ$jKXKMRqrZNlHE
+
+hAUld$SAYL`jk*%K+'['Jl6JFhR1raRV5m5Bf6Qr-b3'kjN1V#'d3GNdl2&f"kF)
+
+5f3cljb1m8C!!rFTrSFm(1(B!&2`CE'EA(X(!%q!A`,@+#&2ek`i0l&J#0@`Sf*Q
+
+Xd6[)(!'d@ic!"QXdr432k!h(Xc2B[&4SlKETBr+U0lBA5C)b0fGBF3GGRl`Y5r#
+
+!X0)L&$EiHE`%-8I@U1Ii0Pk-HNc6E(T9R5cd!fLBhk,G0C`#5+@i3RcHp"eP4F2
+
+Ih33"))SE,0X1a!*riLRFJd'KY2E+R44*4)rB*1N6G21XX`DDHADqCNZTdPD2cY-
+
+c)bf*V"T)m2(JVF*Np[Edcic-kD32CT%9G94MIFcR&He*X"cpd*P)iR"2P5NVm25
+
+!N3!m19bGSJ"Er!mJ&$(@amKLr)1bG)X8(`qKck(S$Tmr%kA43Uc"+i68-BFf#pJ
+
+!+RkG4&TpBJkl)JP6V8MUMHf)FJ1UL8,VkC+Pb53"M+mD!46!RLRZ))6BH,208MZ
+
+A%-$*CUHkLjqmb(SiA*j"@B'mGf#ZIL62UU&!,JFY`E0b+1$PLZF*)GCch$MJUl*
+
+4`NKKVI+GHh%0j@'XdRVFC+"i@M+U*9-'i,*dYUAHaG9iAFVY2Lp,V#Xhq8)!1C`
+
+E1ajCA),V!5Vi`)FbiKHX%)JEP1AVXH&CjMhch[NPRp%Y0(%S0NN[QQAVD)956D+
+
+06@CU`XQK(j!!8T!!*$K(T3YSEqC543IHfB[c@`6V5!qdSe0VUZiaAmpp351$11I
+
+jkSCfji2Zm5F2S9Am)DEJ%Q"j,3rM@@KX1S9Mjk)&+Ij(#JiKST%"lpAcV3jbN`K
+
+4rMkr4HIQ&Jir4+[!(E5)iScE!EkI`%k$AP)bYeVXBbSI&IR)A23&q*3`)K!001%
+
+r#$[K@T*,J9iG[53c,#fLiVm()5ID!$Ra32E)-dEJmQ5[D-Ke6eh`B(LUfB&BIXN
+
+Sq9AKURjIlY#,H(S0MHa18J+"$m46V#b"kXRN2!aXMd4-VKDf@c*R$D6i8@Sl$lY
+
+9h3eF8Uf5"X'Dpj2!%$0kNheUf'X[YdY3rNEHi(j#5[YhMI[EDi"e-TX1GKP,8TH
+
+8-PFK5c`3He+IJ52i6"c"(1abUFV!YG2b[,k-liUHfqrr[,r""I)J11%m!`M0d0`
+
+0aPhM'E#D9-"P1+KrEYYph-fVA1Xkf1"RhGc&TPli%[1l$#Z8#kph5,KkSEh$*LF
+
+AIVl6*R'$pZTNXR$1+dIGGZZS-hcCkV91rX6'JReT,TpGYLprrG0Dr-2Khrlprbl
+
+C2rlMperme-hIrp0hrrcpElll1lYSAlkm(&e1X'YIpLrMAlh"YRfjq0@EbpGimj1
+
+GlhrcklqQYLPHpCAM0m#ecMlJ!"Yldi')1Ke-"8ZLReb98#*h!GLTB[AlI)-)#lA
+
+Ika'@ribrfE`%YkQY$cq2h8U8VXLN5r([)VZPF!kS4aX2H$KdrTVji2`PLNUdmE&
+
+FS2[LlL1pi%e&jjPA$*LeACMri5XFiLipI%M8JDk*`JYUalFApP[D%iVkd$el9EQ
+
+1f-f`0Q@R-M)"H+X!c(MiYU95@3h`Sr)KJ42EI&lPTqNA@0QFhf,f)MH"4q5dl5Z
+
+XE5TqeUcUSK8@"dZNA`X2UadC&b[N1-Gb&K8qIAb3!,8XNlSL0YkDME`%2RFhV%m
+
+$,C!!m%5D$"#0jKafL@#3!*J9iNKC[MJJGaDBarBT6"E%b8,*q!qRN!"jLG`3M2`
+
+!h0%kG'*cH2%MrT0eiNDLe08`"R"pA4b#hi82`)!F0Yi&fDdAj)!DFH%VR3(@3CD
+
+#'GBVYX#rH9h!BH'2!k*YC,IPdM,[DKmHN!"Gm39*(h85pk4,I!GE)Ud&Yde1cfl
+
+H%E3B$lJ4SJI`AZDh"2)+`XJ"a)!85A--V,h!lDSDq@1F1*@blC!!m&4("`T2QT(
+
+KB``h-38f3T%#[AF`$K$8$`0i'r308j5,pYA254Ypa,8H-!F+!JFDDIaY1iX4$dp
+
+Ib`M6N8D2E`)E3GPkK,A4,F0CIXCTL!%L$$J21Z'S0!B$S&b5-!IfM1`A(`Bc`0A
+
+R85QV@U'(XlbIm"N-08aHY&lfQXH#qP(XK6c-'JE@P#T,0%THVPLXe&6&bl-'5"H
+
+de+!@d6IC4E0cCUJN(E+CG!)!Uk21Ya8ZaM8e6mqcX`Nhd,Jelr9!Fd)VQ#`UjX[
+
+VS2hYUJXdhJa6M#D+V(C8V#,J"4[(1ZCVPYZc+VBeCQJ5[@(*Y2RALr9k*VZC5Sh
+
+J*AP"E0HfU3J2#iX-r8@P99eF0A$6a5dM0XP$NCeKhr,+e4XR%0P'E([('Ej1",U
+
+YP6Q1D"(E(4R[aDHf&G*S@Yd'E0BM9T($[TJTTacRBEKbUilXjekcdDL`lMa2XPG
+
+Y(K'[aES`LqJ(D5fYiiiQCp-fYBiL05[NcETm#$q5!ST,KK(Fa#i9EU+H(IAq'lB
+
+mkp'FKR!'D)C-EZkVe[KG5MH$p*!!,mEA0#r'Jip+YNN$%-qE*&jkN!$HANel)eR
+
+N[GNYaiYfpk$,eQkbZ2"Y2i#ET(!HE$9c"GNh!*@0fUXY*"Sjc0$#E1Dp%bK*!c-
+
+T%h8'k8T!ZfhkR64rhYrmTNZfFpDAf-3F%Ae*pe-H#IeaLAkmfQL3!-[TLEB3$l2
+
+*$,k5p"5hVShd3e@DcN,Vqijai!UATT+jm(m@)Z*XiUC`XLS8i4IZ(edPCDeVeM5
+
+,Tabp#d#)MSB#4033C&$*SA"'hdU"$pEL,1d,I%ZEHh2J'h,bS*@4BiaK$A)Z0rH
+
+[i33F(Y3+LG-cmF0d!RmB`,rfI`ZLe)Q3!'[8,*AYia(XST4d!SJY@eVJaQU0"dZ
+
+!Q$D9'YZ(N4A&ifi)S33,SA90pLf3!0mCTZm8pPimYASGZE4J%L$9aXf3!++E)G1
+
+LE1UP!1ciF+UIdQP$Aprp6q*AGUkmqh%ALZEaZlGJl'h[(VGV,N!0lbR%(-@4V"+
+
+f'h9a84UJa"dbB4f9i$-[F32Q&j-Zm)`PF'hpV[I@Xm1ZkLdeda6jQMjEJN8IqBA
+
+cbaGVm*YVRS"#Tm44@K$hcG)"(N!h8Pq(%,$TKLBQ0`6cIrP4QZkHP[a@5cFVDAM
+
+$-4E"QRiA8p$NJ"*liQDK*ZLI9$$hd$a2H$&ZcQ!fBm#%JT4Z#Fc%R"hX6#(eHDS
+
+FTX`QLZ1JNmkYLEBJ5'%H&l)bQH+CPCI*ZbY-XYK$XC+De$+2+CELX6M'"+@*q+T
+
+G'JUSdGKbKcKjXYPTJf'8L[kA1`!i[IA-Vm`qX)-Hm#U,c09Fh3fKbM1,RKSph-F
+
+HA[J&l(4"BY-3LdSLhkE9'VZ[bLSGp'P@[@9ljlI5jd[R&E(m5%IBG`Jd,#ZV%ZU
+
+YBa[I`3jkE4C[+V6YX33hH"j`+k0ID*'S-Pl$4b@m@@CaPc`*T3SUiM2dDrie!,E
+
+0[!qHGp@RYhC"!'FHj&G5Tdk&e*QP4+SI`r%6jA&l!@m@R!DqdB"J+5MF5`94Uq@
+
++4mr@F*8l3kciXU,aT%,p4LAh+Y3lS0+%"DJG)A@E!qd'p!`0Z6QmH3HpG4H!-ec
+
+D`3q+h4*+JZ59hVYN!1F5,1&1DjGAJ[,k"ECLBKA0M@0lZKFraUpmNGdaYT`1Nh*
+
+9TrME)paH@i"E!3-`QJI@-'KdRT&*FfYC5G`rT*)L)#hd2jHfm3Yba'*@3NQMEV-
+
+(,4q$0U[ZjcVZ!25&G6'2TeESAFcSa4%')S*(URGaa8MfDA!dd))`8iHT!B5"9%5
+
+)iX%&YJ-`"0"Ci%a2TCFM+rc+(m29YUkej$l$JEMF"5(MRlBZQSAUi++ik"X&-ji
+
+G$NQ,#QB"MH(lM@k[Fc)mEVhH%@'eZJ-[-FJHJp-[CQ2FA(!N)+9-'6Q9TXJqLED
+
+EE8*853F[D%&9Xe1,VhhK0q'H#q!9@*T34&Q5Kc64`Sk&rJB[(JPcUSGfhHGiHRl
+
+G9HfSG9LE)#i+6k6mU+h%JV"%1,*&fHj$MAXbQ[rd'M6""pbb,L"qfN16Sm[@eGE
+
+P3[#DC9`Ul,,K'*%Si6%Ir8fKbXM0)DlJ%i+h#Q*`iZ*3b-%X8DF1hkq*(6LpE2p
+
+lR0CmED#Z1SZRj9)*h-0H&(qCN!""&%a392TU$S[MrSh"C,'8iplEl4T-%iLlMm,
+
+-jHeiliH"&CkL!#l*L*(fHlXlJhS"F,YCjjF$(2l*EP9IXjrJG0eX4L*f%(N@IN1
+
+cYNVqLE!d-*m%JhTbjXD54R6m9$fK)r[$Q&Z!mfLd@ZdEmKCr8ri@IjR#9FHE$dq
+
+*%LmJ)h8[5Y3pB*q"f,!hka`lP@(HUR-YSK16KJaP[VpTmmZrZ[c,kZAII2F2T+1
+
+elJUcDjp&k2+9aaBAB0fX[#4YA"Y`j+0C3bY2%J'0DT3U"'QlCa6lb`(`kl2,96`
+
+hDq6N[T)imMIVh93k"Ep#HJ*a,$9cN!!mfj**JYrl5+$"h4"mIfTJBZE-Z"H9XF+
+
++-`U9RMQ"0E*-ETT#RkMR53&ICG2$rm32e#C[L@bM+j0G8H4USeIiM'b'06,p[)+
+
+4,F(6Aea(`FD+ZlqKdp(CpV1RTMqapiAe9YmcYSGS!0D9KJ6`Y[5b%!!8fd8V@$R
+
+9P6lX'8&CkpDSC4!q3+F*XP[UmDEp5$4JDT25DjJ15ba'532'IB0f98IEZCC)@lN
+
+[5,BUZ&r(JH'Gi3E(#f!0FG6Za1eVBhl)bCdl[j+0[pipb$S1'4SENBZRHf$V5TX
+
+3,V"*-Uh"0&EELcJhk'bXE%Z(3Y+)f&Pf+5!I@kS4Z`f3!12U)'S"@Zj$lhcTia,
+
+h89&N@Rh%42'BZCZklRpj%4Z6G@p$kA6%HDMiT4cb`9"%HZ"Y&C%q90V8SUUV[Gk
+
+-Y)&5EGq"cA*[F2Mmm158hlX[lR8mq)!Ve+Y(q`#13L0'k"6d@j,Gm1mrah"eVrp
+
+rFjJ3XV9(TpdMV9e6VH'8*MHS1"8DL'Ua8SlL-T-A4f['LkMS%mam[!JI,!Qc!9(
+
+bYX6PdBpV-P4Jj`ZaSZ@)-0c%5+#9AH`G3!UlMe`#L"SDSB)T&IkU5DNk"Y#XG%T
+
+aHD[il$kKJRXc[a"@RMAjl1`&YEM`l!&p'b5MVdR*F,%5&jmpB"ml%p+T$*Q$S$C
+
+GlP9J#ll!$1CK8f$ZI6BNHBLPI)1-'M![!Sc&UKeGh%STmJCHF(hpJD6-B@q,9G*
+
+Vk(e20N8X3rY2JCA`DY$G)iULGb5`YZk@ETAE',"cpPQGH!@,("hFVGhdJ0f)jcX
+
+ip$[D66hh8k23qCePHk4KRe%CSCQmV#2d3Xi4R)-DK8)'FS[(Y&hP[[[8FIFqfYK
+
+KVmY[(ABE$dfpJ264r0T$XbD&,8k1d32-CA2ZVGjJ)@656QbbJNIbV53C%VZ#-QI
+
+Ia'pmm#2TSIKC),A3d0'jCE+,6qk*0fil,-XK8eeDMAZcarUT(2T'!80ecZHT0e3
+
+jLf+Jc0)!NfD%4Ke4962Q-'X(LP-N[d0F%2"p'ZZih(9@fdLaLepCjBPEReXVEk4
+
+P$'pa',P0rm5$j'qe*rdJKqSkFNk!LNebJST)-Q*f-3A3)5@&BN2[3aKL(j2`XQm
+
+'XQ1m65JJA+3@,FPH0Q8iaUL$p%[A1@r1*pGJD,(k"bK%66p1h#H&Hl!ZS84,X0(
+
+U,%UaN6a4H26J#KiKM08,H'5$%"`""bmd5+c$ZE#Z)j!!`CXU&[S0HLl["0bFJ*U
+
+8T3Ki4T!!63#C-Ba4VCG30jMd9qkM`P"q3K5a,p6FKl44LlYI8cU`bpLelQfY6r$
+
+f(6L4X&PIJ@P6UCqPrfR'PN&(LUIVjqCcYS3"N@,%!9G,A#@P0J[FSY3*ph'CXAT
+
+,'aPY9&S!+0XFqh6!30"*R*qSdV!Q4M&P`9!39rEV[bDcm-I*"*2be9#-Q3l#P*H
+
+SQ)HFHqYX@*iG$Ja[5KQ9YYqcfeESAPUSJ8,"FcTb-5TcXAS0CLBGED3G9FSkS`Q
+
+cT'j5HLFYl3QC6ZXFTR8i)UT28k1Ki4[0kr"IQpQrQjH"cfQaJfaGJQV0rGY'"#1
+
+51rS1jN,9pA5hKS4a03Tl1M&2+4M1%33M)NJb!lTM81Q[m5i56PBf3&j+YJU4$UT
+
+p2r9JmJfaA$)-*)(!FN`G!G#K(Tl#'C!!Ec#IrMSd`8)q%#Q"YP+`M06AFqYrJrM
+
+mj--m*LBH4G%#kK5R,m@D!5cP$6@Y%m32!'D3!&Uq+)3f[[%)jMJ1Pc'N@Gl-@8X
+
+98rP)IjTQYmr$eKeE$%qJDX[jCL)(U)@f#+A!A4DedEi6!PSi)qcFa*4KU3Q+&jc
+
+%-3e4Xa!rA,)3*TeLHM`-3@68%Zr,pC!!`JX"!C%@L[UdKCIk3P3)1k32I-[NB5%
+
+[R0BS9NrfASDKICdA,(3H&ZE$Y%c5-2dZiLU'i2X*GKBapYqb'KZAC*`@EJ(0SmP
+
+*0VM`aUUE+2@YHLQ-!@*U$SaM6DTcP2@TFSp!dZc34'8E5bk65Mk`$4l"M+NUH$8
+
+3@p`cRR@Vk4GaMH)pdqdVed`UC0`KLdr2C&+0FUUKK+!M'Qi`E4&b4SV0N!$1*Y$
+
+[&KRiMkji4%6,"cL4C,pPm9`Y)4SDL'X)#KmcH+aJ5VLA"c"VbFaTh*(9VI[4B@N
+
+r%KNXZNQhe!EUCl4q)!h@Pc8@L&9X-&l5*j',9dZYHGa%'b%I),ped1EBV'`jK@5
+
+6KFkahY"!,,-1khIVr'3[rl6T3kL"rD2")BIeki9q[VE2'EPE#C!!h,ie#'laK!8
+
+mJZD!3a#6V"'kQ+3!a(5c$l5e@+10F@qJ,dSIQD!m2L6@CMSQ9)(Nbd&8#!)#[m6
+
+MpcUT&a5Lp,(B!d4mJ1%hI"1Qpi+h,Nj##A`Rek0'll[M&D-X6lEJLmQV%ZKCH`p
+
+hLUrY$DZGBMrUi+!,*+j!dkA95VClcMq6IZk$3+jfX&L)S+TkKmMhSi,AU+ck$e1
+
+4DJ"U&H+fbc*UL%khdPNEi$Za-I'*p*a'f8kLlhRdJ-XNhm&jffF-4dbEqX5(Af,
+
+fA-Cd$lUJ"@T!e89VU##$*(mH$$QE93*'M&c'1i-lJLl9T*heL8RXJC&RH'5%qMa
+
+dXf4,b&6%m+ZE3f`[#9k%q&+La0eGB&3)83XJU!9l2,Nm&K[`cp$c#9BjJC!!D%H
+
+DGqb3!!FENNm-erZ%68)rj[!5-+E!M3-FdaS6G@q9H*!!,EpF33T$pUjPP)4U)SP
+
+`3N3Ca30q"pA*02fHDL)489&-%MmKRXLNP5p6$01Zkh"(I@pA!rpXB1$aLfH`#Vj
+
+-Ff(LQq@6j[h(2)VP6LYES)#1TN$NiP@,RCB0!d-Z6bL`B#H5MCiBVf#(De5N,E)
+
+%4%3#aGdTk9*9A"X[13T+f-@CZl#,EZq4b-4)Sb8-4e4V*f[PkU[&V)aN&Z3hJT!
+
+!`YB4jmV@9Lb6+9J6QCS2peh&VS0UiD[QYeVHUXT6+YVJ8a9KF)aa0XBLZ+9MLMJ
+
+RH+aZS*[CQ'aJ3EbV##,BTdFb6NHMfk3I4ZL69,hHHBGk0#&S,qCQYCTG3aA4#%5
+
+5+JqBC6m[hZf)Gb3ZQDp@fC+9jX[GGlIbSL6A$L%h[f#@9HSI22NjQ$qMJGJ!"j1
+
+B#lB#rZk+H*F+5)`j5!14PF"jKAah&NN56,c4,%3cNa*)a@6Y2d5()BIR!r4X*K'
+
+CaDQV+&H9h"LN8RfcSf$p,-U@LXSF0rAib+ZTf`2)(2L68ISj[QjUqb4S%lihU#h
+
+X+mh%`JV,MaU5Ep8T4!i8I+RKNE"&450A4JSr%l'fq!CU6T%KGkdNSZ&5Xr@606)
+
+qpR,i5U4-AVlDI04YYZ3#4SU6P&X0aX-)1+9"bC,p'lhXT8$bRN258p%B*3Kak#-
+
+q(jY09Q`AkZ3N2,%)-d-`+L(-")`ZAqi6f,U'j3i))-F9daM!1XQSmKKUL!dI2*J
+
+2lEV)LB$piR,"GRGI3E",I0E%)$1a5P&$LJ5h+'#BJB8E*)#&2&6ZCfY4i6km*Ta
+
+8$RhB4RHaC3qK$CD5d+p6Y(X9UKRhcRNB`AT+eKfS%l"Kqq1kYl%D*IeFPCU4[kD
+
+AS(+)e8XJVKcb0INAP#b3!1iE$C64'XLe$R)+#@JiDdl3BkY6HmQQcR4QN9Rd*f5
+
+*"*Fr'6qqZNIf-'CGZ9N`238qfhR&4FIpG6SN9QL2'U'ZPBbVPRMi*`lCj!)XA+q
+
++pYV`[XP#QpN,'"cU*RE$pk!$"2*S9%3pDH&NhUekeh`2F-6%$8%iNNHLhGSiMPF
+
+SVT@FR5l#Qr5A9fQ@cmQXpBrREE*Q(f1088V,Z$I#-&6$V%l,(-@TmGJq["2ekmC
+
+,,qj6hJ38a4CX+G"&QU`BJB*R,H1JUhU1-kDJrqRdkSLYBY4P8p1S0q+dPRh2c-P
+
+V(ND93l2SfY10k-S2Qe9PDTq6bURZb2&RMk++`E#)5eVc2b*U!U`Z[(Y'SVA,KI"
+
+,h"I&QJq!RlSM'0VJR4!Pb##TH`2U"bq4-01eHTEk4D@$L"L!,HXc(5@(3jjL),0
+
+Tr0RCphG##42i$RN`9ZcB-f,qEIL&I[`Mljl%2LR8JUcR-qTC4%qU3%H&XC6#@'Q
+
+MFf!NN8fjK)ZQSi9+4N%[EiB*!5%3#U,h4TU'Aj@DiY02aH2XJ)HlfmNiIUXE8$Q
+
+!l%05%3LC6aN"fK`'I+Ldm'`+'S-q+pe0Fe!Q[q$abq$m1d6kQjY)[`R#2rQ(i$'
+
+qV3DkF1paTGUNjbMRHS#eTTA66mKk1`b19Kl'("P0C+Vh5)+UP`4"S(%mTPHk#YE
+
+liRMF$@'%GRSqE21m5(QIV&9V(hVKSD&`SG1K@Y$,Lp"(aFbUS9@4IrqAJkIpb*C
+
+a@()bG*)(2YEKGI@%AYY(BI&1FR(icDLj4$Hh`LFe8dZ'AK(8i-K"$Ef4NRY"U#L
+
+UiP-%$UbF*IEZcCBH3&AN"cZbCeDPlNBhKBcec%j*2#!1EfApk!F#ImP&0VDX66N
+
+V`mT[C3a$@B#T&8E#29-hr*X%E-2+PH@538!%MjNa%#(rN!"X-ehD05TG(I'QTUQ
+
+jr'UUGX[fU1qG%hB,b6B`)eaN,"KAV5,9E6V9fVXfVQ+%PFdf!Ya[N!"SIHb01lq
+
+3!(k9UcCQbh@hcQpG&q56))$NTC0mI)PG`"4VGK,d0B`!P#H%E1`qcB$TAN%[DC)
+
+(XeIP!lb@*dD%'`HZ`MNl[SN(ViY3#'@9CYpU&&'0hBK3(KS6e#VEE(ic5I+NYXf
+
+R2N*MKfG9FKi`LB1lG4,15'Y0G%52mN@,5D#J%iB[bLR#N4#DF4N#`Z6Nd(L'8lq
+
+2V)K3Km+TlpQPc$h0*fD8RE6')Yh'$+B&@HC0"QHHf"*895m82be4(YBP*$4C@LD
+
+3!09M81HTMDqbV9DC[R"4QaqMFN5SY@q@VhVU5b0ZiZa)8AhV+-kACLSqGKA2YZ)
+
+b@B2C#JfbHEMd9rc$TCTEKfZ6'5!NF)@3!+j`P$U%DSH4dEYa!(X)FN@i'8cBPr"
+
+92GpR@ic0T3e-@HDjpm(85pLP5iphq)EJ%fV$-NT$,k@B+03UX3!)IM3PL@jKUE*
+
+'56MJ6&IjjF4q6,T,!hJC3*1k5Qc`9h31ka0eVGh*N@QKHV$JQeF@mUpFY*S2pJR
+
+a)SmA`qY#Dm($hFSh-4EC@[`'r-&dVYN6k&RJ,*pYHUr6!p,L+BX8[+@#"1!Y&H4
+
+"!-rBRXAlRqb)8VSrf'&ZpAAb*BEd+8KFV*,l01NCjKU9KH(dL&L3!&lNaa4P@Q+
+
+,2L$'Q%TKT[,hUbiRL2(,k!9YAL"e"@#8AFiDSebKRchE!NB9lc$B`,cb5V9e)2Q
+
+88Ni(6GV!'!PbQkQA,AUC`4jQ6l`3i,(h)L`d@"*jLPCkHrB&QGQNYU06+k3SA$P
+
+0PN2&RG,+CR)VZA8m"%pV3SrZe%81,Shh9G@C3mH%E"fDpP88I$4Y"A1X3@FN3mm
+
+1E*2@Sc6K*23ASQ(Yb3YA4PE#"r$ff[CR!X'i3#L!!`3&EZ`JB[3)mTT!dbV8HXj
+
+&biS!QF2e--4A,BLp55ZLXC1q9lX["JVjB3FFBd9J-f2'3Ui*D35hKD`IC&e(1%9
+
+-hY-p#a*B4d-S3GS"CRVX4()TiEcY$08CeS63RV!!@JB1pL*4,GJ2GR-`YkRMePh
+
+iFq-1BY0&l1Pp@M-8CkcB9%D)p*!!Ha%XMdVFT&h2Ud*dF`ree3Y(bVm%)22l-2)
+
+lpkp%I[F,*EaXJEr""06pH43Rj1fpqK!6a5JY0I99a#Bc6L')!cprf5%Z"hPh6V0
+
+e,FCUiKH#rkD-8%m9mJUZpdCARbpQF-X(-$)dVV2rM8f0pdE3XJ`iU(H+UY0hAC[
+
+U4ebP)KTpidbE5UP*Y`D12bd#QXqV11-h,L1LFkXMhale3m0&+d4[M(0[(cb`'EP
+
+'Y6`D%IK'IY%3&p@13YkLLb!A3,V`"C'5d*!!3HSE&XhDPh,LL*KNhZ%@[M5VTDc
+
+fY[9I+e&LS$L`YpPjcE,RM*c+9@H@1Kh[HG1U,[UPM`e&*#4Vb"2Z5aHR4FeI6N[
+
+U$L"K(jE2QMJ1Ne82aPU,N!"+p3)-6I&5'3qcC#elTXSb**p!C1Ah3&MK8ZG*XU*
+
+$bh"&5)831CY9`P+,Sf3#'!E6Be21HCANK,b@f(K9XK2U1PpU#E13!-"92Fr!5Hk
+
+ID%8cIY+mB2+A)fLQhP)TUCAk3p+&!X,m&@DRiR82#HE$DYD(r9RUc3SD4LHf4FR
+
+GAMl9kEY5QGUb[ST8C&5'-aP+KQD1JhFCG)8qKeQJjV`%fK&D[,98EP!6`"T3QN#
+
+h6#9QirFDHVZ9KAPDE%2Y!h-1+K#Q3Tp!3`(Ye6eCiNd*JB43H*U[`NKeX$+hk0i
+
+LhSY(S1)@hdC''T%$@1kUXcmSR5fYT@HX)X&MRcEhN!"J3lr*6KM9QQUGjEalI3e
+
+)-L*MF1X6eb"JB*&&-MRM@PF-I&*K#(bAJNH)8!hl#SX30U,S9E3(*SAEi+P!B1P
+
+VNVb@V9'6i03HZCKGbJ5$@Q"f5@T)"KJ`1%V%5()!qUD)`3lB"+Mc9d&YH,TIaSD
+
+aTh1r&B)kc"RKmmMU4LF(f@,GaLTl#YCNRck*Ml!SF0S-AF3Tia"G*3c(2q9C#@#
+
+1$M-Nh`bra$,FC259(lbABfpqEBBJ,B`Km@C)3&AU+TmmKQ)pLm9qD40%%('jaKQ
+
+p#XiY[8j$+K"h,09U9f'X0N0LC4b-VkP92V!fGe9eX6MFG,$dAZ"'j2X3)Z*CHV6
+
+ZV9Q$*GSE%$RZ5-6APl[ef1$Jp'E)CZ8MVaimXPc2XYTLfkP,Dd+5FH@@SFVlH%p
+
+Gh#@$+BZVkjBei50d`*AKG)jMaV!,&`6P@$#5`dfT#PBapIJ`$A+lJL`iAX&mG"1
+
+2Ukq`Q0`r%#821B(RS4rl%$8JGJ3NPPJrK*@JPTfGL,K,4F,*B%)MePKZD9#l+6Q
+
+j*[3&VrXf8*l+qa51E#00+-`j`6A+fC)f#)Hjpl#S%C-i59%(4Rm6CAUb0URCA(D
+
+m40iXKCm1)I5U6&)H[4cJYXJDjY[bc894DT)MD**rH6+LcmAM4a"jAB,Hk`Iider
+
+)rU8dKRX#U"ajhX!Q8$4`qKh'pm*0cVYjTl#(F(eE,Hb8UIAM9+5*9GjhmC5p@#c
+
+pP66L$MqT5dBpJq&YM0"&-NS%F-$)jC2G6FR@LeGFQq1Mjf"D'a$GKd885%i*68i
+
+iI5iTiQ+B*@m8lbGIkkC)[L9U)Q[KR"E348%*Yb#UeB&D4"KJ'&C+Z&mN$G#Ld3@
+
+Lrkk#))e&e,B"VYY#cm`Q@1&&k+9TVM"22rATd1Dpk'8afEKpFq*EbLHh+*k846f
+
+,225S%dYDp9RHLF@MQh5L1XM69ZTNrIak@UPbF-&(V`-#ISFfkb4T'C+G9+NXUC0
+
+8IfS@hi+ma`Vh6JjY5"1qbaR,YKIf`dQm-L2-TL(,P[Z[PQINeZ)U1P*UUZcJ!V`
+
+4dYHSA1AkEDpFV!Zh3kp,20($l3E6FJSp2B-H(4G0UGX!@f!@aheV)CpEX230G@i
+
+mN@KGcZ'"Ic$R+)rR!rKK1@F4H41HfbPBblJ!4T!!iq5Y`[l!"mF(dM6L+GJ4MG&
+
+V@MLrm6j4Md%LXeHNR21@P*lq'+mmKCdmpQ[4DAb&pcXjVX+%QKlDb&p4,bb+(KF
+
+dI-D+qI`)3c#jrKIY26-a`r5X-iRFh#hS,%`%U)Ai$[k,E&b[p2Z*SUfB2e($TI5
+
+XBK"25SH08pS&+BiKk&#qi81'hZE1AieCNCUS*'&%DE2iM#[6%(6*N!!4-%lX#8A
+
+*D(h#(@Tqj0Da)H`6c[cSQpINGDR$5YB8),4`'bE9@N62[)PU@TIpRQ%eM2ieT#D
+
+cAHkIjCT5aCl,LU'S"A$-T#%dk%Pi%X5PGTYpMKS4IfL#2efZ8q@[d$JP9!k+f@[
+
+hKAeLK&S`@J#ThcAKJKSc66`)ddl98e#h1f3keY*-VDQVVXr8bTDrRh5L9R(C0Dr
+
+YSmrKrIAhFDS+9mINUf@d'BLb%bQM&"5c6Y6)UDYX%8aD)DP0N9rN)S,@Z#1'D2!
+
+fakRRYh2E)9V4q!+IEMbeHIV1[EBj"KiVbFkjHDfhmPURHV*c#'4JaAk5&AXX+N0
+
+SKk$%*rPm,!c2++D$MIrFffeJ9KXma)5,qqP*dZi@rY"G%l9Kb*qImr+"AV2YI0[
+
+l`lcXA5kVhhk4[rVSYTP,$fqkZA[Gc5GjhIGrQUR,jEk*FPPPZ@ce3UIDRHU-Z46
+
+V"&He&f`F)ZNhjTT0S*,UbMp+8T)[q-K$4eec4ZkGVZJF%JiKifaQp'3X*j1Bi"X
+
+hjB,9$QmkI+@3!%Q'&dS-q1p",ff&)q`(l-Bd2*&B)TYqV5C@T$CHBTIVV&ZQ54[
+
+PHkJ3R5VQ'&UN#V'Dj'q@K!+R#iNr26,4cl,,jFmK%Xh2%@Ha(`&[DRSAUq4cJae
+
+`%`JTmM"TU+Ib+#qH`VKieRUbqaE43EC*[*%'F`rbN!""4+l4-C5)pf5L`DB,+j!
+
+!I*'LK#3!VKa0CA`q[kU@VVB%e0!kq[AmPYf*2$mP%FS!ApeH69!$8e"p9Sf`B(*
+
+hXEC%(-A[rR'6eASV*I3[AClI@QBGU*Df2$YYrE99kl$RV2XqZ3#RcAareB`S@+T
+
+f8Uk29!8f*kIG9UGPe'feQ6r,X'&1'T*A5LhKQUYC(8fapb[V4P2d')4H5r)F@AY
+
+"E$[d%rBeD4eTm"HQ00NM6Jq5QG-83cL*8'1&D!UhKaJeb3UHIj8GI+SPLRTYbi@
+
+V%54QE2L1[i*bk,QAVDa+-"H#&3aI8,P@,S9*EZZk0S&5'LDk5PAb#$r"qiPTjUS
+
+X)c8TTJNQ,"U`BBK3a)a2C5,kBilhdMR+%$3rJibS[YV1E`mT,m,+#AY9J3kCdM4
+
+94ML$DHG#-R)dKJrePFeA!+Yi8kFC0iI*X!pAMAP[KI'f2$)UQ!rD,3-ZEC,YTI!
+
+J-1@*FTmA,G$#S4a$i4UGf@QcD%)"-X'AZ`0!H`RUjEG6)aM08&N9#-jFHFeYPD*
+
+Q132kcIBN1e@RKCbJLT*aC%4N6P"2STKcbK)VLHIe,'eN2!+UrY@,KFmB9&P,VBK
+
+(VIUl8A0R1Ri@ML8`L99k-e60FKZTeb-+LE50Y$"Q6!2DN!$*jX#ll@0V9bUkjTh
+
+dd*jBc#TMqFa(-G2A`HNU-8qQT5@,KiceL+NjjTI,bq(&(4mk18B9LqU1'VMkalS
+
+(eLTVKXm["GLc4jY9I$9I8V"D`hJM(dQY1*B$0q+jCq,Ya0K58k[%FkHGekF)JU!
+
+fKpN[-FV@0SRMHP1[a'SIKG61#bNK%iBE+99X(l''B@`UhNIe+SSdAbf9I8qP*qP
+
+$J3i%FjiJFaC+h#Shqa&&[cJJ4k,-jN@E@Yrb%G$h`V)MZ+X!,[dpKALETrG!+A`
+
+r#'CL2EU15Idb2C(9mqT1iL3`IABjPIcZ4U2iCTkfU9mp)r9a,9Nrka3,[jq(5VD
+
+r8ASmZe3bK"6@A9h5KUFVa3Ia8`6l!Srl$N&Y4(l,-AY2l)acGK&l"PG#qr,+e5e
+
+m-TJk+FV[*P,UUYGPqUlZL$'(I'*,VRQ"hL#%ITr142Z4X6B"HY"2CGeEM$*&iFL
+
+lG@+H@58B$CpINCPlF0,M!#'PEX*3E5CkY99NcZh2+-P"6-20ZA3$E[H4HfqjhqV
+
+Pei4EMbfpkRNN[1M"*2![$rBj0Z(ij3m1XM6NlJ4,2h%5FC'i,eh-*NZ+cPX-hBS
+
+Si%bSH[45qlUYb3&46iqm[UeKY8CPZEjASDPKh0[D'V40%DkfLk`BM*!!+YXP4Rp
+
+m0A)L6BZ@&XbH,VrJmA5Rr"1GaJ0mDd0qmrRY(JG"PPJ0Tq)qf36*i3ar3NY94ep
+
+(dHE[`@2*&1#e,BhRpr[ThUZ$`H'Aj&qlh11)`M#0ilJHNU,r8@T55fEmFc@k$Rd
+
+m8f#aZie9JQhEA69$6r6)Kp`bqA,0K[VXXBUG5kUVi3[m0fTd,29%TXmJFmifZ%d
+
+m@D[F41&T%mRE)8"MPR,p3AB0l(Bd-Uj%TQPrH0k%Rm)Da)(NR[SQ6*1-5i%V3-F
+
+m6GFJp`I%Pd$Z%I@c*M"iJ9l#NRTEAC4(8EIYh6$IYYHc80Yk$&hCa2$C9rQ&f26
+
+S144(K[PT'C(**CMfIXpkNHRpj'Z[P,6#m3)+rFDJ3)kU'#*(%G'lR"F2(V')&(S
+
+L`*U,pIZ!k0M5E8FMq)-PYdai4V`SfB&j@Hp,dRI9SA3c@,U(l#h`[9D`C%R2p,"
+
+`QMdk0HQXf)`BFUd-%L25GBQF*a+C',DSc''Pfm$FTc"q(&"Qq`Me,0rbC*)PVF4
+
+-AeE@aQS*pmdk9jc&D"&LP5%0-!i0")9!DC+[-q,@ql#JZ5Sq%+5j$DM&L1AJZce
+
+"JRLFfTNa4jq1)E84Q5YFLjI@'XqbGcE*a@cNM9`2i)LPd8Y8I%H4b`4X*Zi34T5
+
+[R%##R$+kflj,SIEVUqqrcPVB*46fr`-!!#!J$h0dB@jNBA*N)(0[GA*MC3#3%%N
+
+'!*!$hJ%[!C8#D!#3!b%!&2@S!"G8*`!202J!&6#U!!!#!!!"!#N$!,$LQ+fkBG9
+
+b!*!&"j!!a`#3"3)MI3#3#TeF!!d'BfpYFbjMFQ3JFfpeFQ0PBdBTC@jcC3#3#6c
+
+k!*!2&6!k!"8rD`!9-$S!N!4849K83eG*43!!ZQ(68,TKde`!N!BVE3#3"Jj4!!"
+
+dZ`#3"R9e$8jAmT3J!i$*#IZeDf9VRf5cNP$ZN9ZCCpG+q*SA@3IXSYXRH),2Xmj
+
+0mINF2k![I`Rk%3Y8JcklmVZ8$iaX#ImNfmJQYjpXmT[F*T`F)jX4*PkJ8DiEkbY
+
+XRBPr9M#0keD&X6!+aT%jCIbF@fRL"MkHqNN8H'`Df+R(+rET#+MiVl)EK,2)(8m
+
+59YeGBeXII,$04M1@6$MVm6(hNjJ&M[Jmp0e6(X9Z-U-AZkER1N(NZkEN)38B60`
+
+i)ip26X3jL`-R16-M[X0Q3FSXdfF4YpdiLGa4QR$Q*XcdlBdJ)QeFCjD4`F28YhN
+
+Nf#FmQQC5((5'l)$l2$)pGT5120GLEGILIXbC#Ild)Tj`'d*QC!KfRp6S+cABIJ"
+
+f*TPMKh%Alb-Qp)9C(QLLLP@0"9('T'SQ*'6%JT!!`0HJhSaj*J65q(@"G@1+A(Z
+
+EZElJ13P#5$`"-iKqjRSH'h'@aYa*[9V'!iMXH@[`Y$XFX%ERQ$e[p(U0cZ"i"iM
+
+**-"VIXSP(hFDHLlS3HM)p)9M-aU(cGlZ8q!fRV6DVF%aT'AlV8'RfHqcr@k20GK
+
+4ScGSl3lEM4il'[D1Z[eQRE%qV!0Q'BY[,BKBJ*AK-*XRTZ[&5cXF)`4Lb1ACE'+
+
+HFS5"aC%X0M-48U%)PlFHcjLBAZ#2KIK!c$ff`eb(q8&5BfH4Li"*JN[hCacb&+L
+
+aPQr9DqcKqhpJKfBFXmBTM,pV6NH4DirakE$"0KpXEAp3Bm0qJd6&IaXV+qrCh(&
+
+p$MYf"NEc@D0Yp*S(IEDemTlV@ejUFlEU"H1J2PNYASbpB'6#'[0((dl0C&+I2-B
+
+,"jcBdmDcTM(XY2U$2H0T!C2k#""E!(%ILDRah0'dB!Jc@$b@$%ZBU@N9C0!,iX$
+
+MNVCqe%51*)#qB'JB[6m0GJfMJ%VFk4*F03eVmFS1jRa+L3I0hQ'V@dT-DHr#-J6
+
+S`I&cZ2l"B("FSXAM**R0e9)N1pfp*PZIQLIF)&'Uh%qR51S4+)Nq9'-5iG6deYL
+
+A,d@QH)$Ad!HqC(0Scr0f9P#bQ))2`h$R"AT0R1aSk[RML#HJaai4iEMDDE9VM1J
+
+#kBSYFDL$RS3$(ASN'Garl"Z@'G&,!L(1bK[A'&9*INfb+%5*1D`5mUS%4,ae1`1
+
+)S6LN%A8cHVQcmN,lad1c#00%86+M-AP&p$1(H!k-`G0HphQVFd$[+[3SG9+I2AV
+
+%S,Ci3f!mLJb+`@S$J0fMG[0C%eB!%0KAAM"58K!#Gb01c#50f4f'TR-d"&kMe@B
+
+VP3VE@*GPDQ+')CS!!AD2S#PDcpN%Ij6JIG!dZKp44J-DrllkLYekaDrldCV3U9+
+
+j)!M[Jb$qfaBdY1UfDrZ*)AeKq1D8CfTI[55499lNf'1Z83Kkf(R5(AEfT!LA!#)
+
+l$(6DT,TC3jATJ&H9rP!)DcA56SV-b(`!F3R3jl9QCmrSlKYYY!Kb'LRF#4,fH8V
+
+0526q(G#M-SE'@CqDXa&AY)9[hZVjBZRY[GBH1T!!G"A#&BE)cDeb)%k#-(6pXH&
+
+ijKKN**MLShLQIS"BKqaT&+')b1m,#)eJ4P9+*+)T-NRq*D1XUQde$c2LRdGCI*0
+
+PPdRfABk9TL5+Db6*,k&f'8XUZ@3S%HQh,[bIrBMU,qElLl15545FrGB5h&KB4PX
+
+BJT&j)'B3jFS6N!"P5`4f5aZaNNNql$Gl4V2A-`ja[fJF0'Z)"!9(iJYl8%QkJN5
+
+0ce6m`59D1m9)+(d93Gm+GK&E#Q%Kd3*%UI1hD,2-a*TFCCXUGRN2&N$LNqZRk[B
+
+KkUR5-SBC[5MeYC!!m4Vq#DEm(-hF9p@@)l3!(d5+-a@8@YQ88FSL$Z39edp`KSN
+
+F!fbZ&-THj(k+#CEHRNeFMpp%L'a&`ZlX5bShTQAa%"G&4JrTX-JJ*&h9G(mVN[B
+
+4`l9Qf%68+Kp+"A*GmEf'AM4fI52QRmZ@-FmZm9l%9K+P(")SU`ek`bE!AL%j12X
+
+882Z0GPpM,64@BZMBHY,B-rBDJdD0(UV+2Sm%GRpV(JEM)!PqbJ,#ZBJ#lF"&[*[
+
+AcP9mXUc+mA#!ZqjC#!)TE"B(Fl2IP!84TbVlpXP"`P9jbe*2"l"Kp[,Rd%4#I#0
+
+6S3UpcPVq'lC[XZUeiPTBSL9L3&A-ec*,!9J@b6PqVXXSiZE*A2K,2lf4EZkLDjp
+
+N+Im[Qbb%r0dRP+`,Qj4+[R2!*CI+r@!6G!hI((Rmhcf(4,KPMXF4(f0,S#[05J8
+
+A1`e9Bk%Ca9ce%Q%&TIQ#6kkX-YUYH9&LGqj!L+Ac5TCIGiiIZ#TAb(D5"iIV,)a
+
+!*3dRk#K`[m$0(kdX0mD-aj)3j8U)N8KK$F[@PYDY@K-'3h*P9PN%*+&I43Np"8Z
+
+m,*fDpec&rdd0)9SCF4!K5kL[mYcbFqG3JT@f)-M[R9&Mkhl`bKkrDqd(P`M[",#
+
+$(rcU"MSdr'B&Q8#PB'mEC*P,2fS4m6MeVU[VbqUFJ5hlXe$dCB%1JpL!FIrH$'"
+
+jFBSRJ2h@ajhK)A29ehDA[MT+G,8`m%r&lFK!SmF4KMi9UUXU!'0LPN-6!,&k3*D
+
+f1J1k3H,J$(RNU`rCjZZD31jD%+$ZfZif"J2JU6ZlJaeAYHT!%A"b[-#8V#$R9Kf
+
+mJ,KChbcJf'2p!YmqC&8TlYTKiq0fpk!,HG3i3mir@Mfm8,Ff8(3M8XfK3B@mSZQ
+
+(9HQB0AK%l4rdq3H2KBN",$cLkM1F+SCdj2P[(kVmj%@CLA11FK1L!qbPaB3*9'l
+
+P80mFAb)HFYMZ6FjBY(eC4f%)kHpXSS)+S`)&!2JqMkbL9!KF2&qH#,rY#KR$)Mb
+
+&3Uq1N!!34e"mGF149"DKc8-X'-$TE@CVZf0@&aNDXb5#i4S@G0H($[QL&2lld[&
+
+eBEM4["6SrKDLXR5!BL,m@9cN1"VpIdjX0-Zc61b-%2p)j)XFZI'a$H8-acdhA)G
+
+m!&VhF(6mDqHP%qRAb`Xm"L9(RYZTI'3e-S[H6KFlXIkJ4M9lISYj#Ipi$Pp@XIc
+
+5APEfZ8EL12Y1"*'S!re6TG2!YDRXi`JNHJ8rGj2UNfkhh@ad@("LcSS4'ihmY($
+
+kD89Yr3`jA)hVSBNX0("Y!K(BHC11UF4T-`[HI2k()Dk$p@PRq`&emcJi`c`LTQC
+
+HM!m*%kPdRX3@YTEcN`KH'k&RiSk1ESKVfZ[jfaH1PmB6HLh(c(*(D&KH!&1+KMH
+
+IpmNr5BeE8KFaaT5d-0Xlce4El#L&[q5-JC)5&69dlB+GS$l"LSilRfa[IUB,%9k
+
+3!(4'i$KDS$LNlZP8Z90MUa[*00bJ%,KYVpEJGP3,68h"T6i'@5G!blRQd61DAFI
+
+1KGR&b5r2Cl&1NYF`D["SfMD@a4`VBcc#406&1$NcG1RK204L%i0!!&$l9KqheYD
+
+bbZaC(MFMmR6KCYp@bS-M0LY3rhEbU3rCTaLFQQ2S44R`b3!Viiq-iql`XhrJGPU
+
+l6G6XBi+pMJP&BKA3#pZ@iE8X0A4fa#3"cd`,dh$-1M"aSpT&8p"TL0Y)*&Cr-iU
+
+4h*GR*LLpkB-SpYVDX6[faC`lBCKP,80Bc*36i(-ek96j)`,p51jdaH5f5Lpb6D9
+
+T-+HjUH,A,8f4Pck[)+Hh(aKTL)fcp*H-1P%`(*QhdSeV1a5P9ScCcQQGEE'`cYi
+
+AqCj9!1bjDHKX9l8Ed@$bb0D*3C+S@a+N@a0p,&G&"h1HbrefXhNNlbqBfL(8#Lp
+
+4K'C%eYR@`iF2heHhQM6f1!qV0"mY$Mp['@b`Kp4a4(BAk+T0S2jG+eb3!,e5Jb*
+
+a!3h6+e6TH(N'dlMh"UjeXLZZ&IVUT!jca81d5iNY"k(Lr$hKeSNKKQFSAYQ'S9)
+
+Tid06SZ*@bRRBhc@H0AY+Q1pGXP$&KhmI#J0A+SCd`GEQ*Q9XTB,*d52TU&F5%8Y
+
+Y0c88*4KL"%++M,p1G$C!8IQBFTVZUNKTZZpLP%rEI[qNh0rH`ZRXcp1`kSkm%f1
+
+81QUqkrSdRaYjJA8#"HlGNb*"kaZalfe$#K8,mVJTeFRMSC5[j#IPeE(hkrad`Me
+
+[@5L@E8(AQp[aG6IUpTmfffhMX,'V@p9,YX*(p2+LQfHd9F'QPSYG[M@e2hQ`598
+
+AhP1,Gr%6"Y%1`BKHRDrMPYZ2GbXX6)SGN!#HP[pD4Bq2QNEcipD!6#1-(SIQQHq
+
+&e52MHD1&YH`U@Z!8Bc"!&jmk`cBZ1FZClAkV$6+pAVH(hEAm&3Pa[k09S@[KciM
+
+1H(6GVUiLd6'YTZ+*ArM`mEXAX$rY*[$V$b0[aZa8r$b&&ja"-2aQaQaYGA(ee+Y
+
+8S6*43r"i)2+)IUN&8XlIK3P0rk@Km65cKK!-2`C!BYC@EiHV068pAEp%[r[TjPh
+
+YN!"CR2"T9I*jKi-*k0GY+16UNlSjSFJpheDa4brSTS`3eYpYJE!M[a9[SI)I(eB
+
+hcapXeGLGL2jAr-jaM!dL@XqF'e1i`N9jThHcl*fNK9Ibe,8mSIb)2m1lmr`)4R2
+
+,meP9iGBd80CL4D5+bNkR(q&1H8YEA$THCrlmYL!p(j,KXS-Dj6fmM-+%baEP[4b
+
+@%"$mUQiCXL4-Z%RULGqV@+GcFIi42bdJNI6Tm3`#dQd-%'V0UXr35+Tb`R@ai#U
+
+3!19N0ZXrC5K*c5jIbb#%P-[cdNAJ85'BMeT&UAQ6IA,r(FQM#lP(XUqY4R4YSYF
+
+1#L4Q#[)Cf0F)EPQ(("j3*m%l891N8Z)UL%IiUZ"e'e'Za-2l@jp4[lRlUApA4Dj
+
+kHrmqAZ2Y2++eIa55q"%F0E*3!DaP3TcMrQiP*#d0fd@*e4BKRiUIN!$S$c#Z1DJ
+
+4L2q&&Fld[,DNTcD)9fQ[4DfT1DY55@E*iZG!9+5SQ"%E#+)R,ZHAFha84f3(BDU
+
+p4)DP'lVLSf(892XlTmTq&FVMF[&145XTmr,Nr',Pr`#3"!d)BfpZCQPR,QJJFfp
+
+eFQ0PBdBTC@jcC3#3#DS@!*!2&6#U!"9#4!!9-$S!N!4849K83eG*43!!ZE[5TlQ
+
+ldUS!N!B(r!#3"J*T!!!09J#3"ZhY#U+!%@3!Nk2NkA&+MUd44XD8F(*iLJq!V#H
+
+Kji$J[`L662!-J1)2'*m5LMp[*3!IMH!C36pkJ9XpCPVVN@F[BDG-fDe&RK(N-!G
+
+iJE!,G1&2ML&9-KIcAY%$'+"%c5eQ`'ZV+Qj&bXZbJHZQ5kNe8XcabDY9VT!!6p'
+
+j9Y9pZ*!!$Z-L#Z3CkPEM1(h-K833165U"SNNX3SS6fR+J9aT-*CEi$)$C3YkBJX
+
+KjmDP[&IkjUkAJeTQQ%-bR86"fb5Dc%+IVC'F8JX%MEE@NSc'kMUe3XQ@+HD5Pe#
+
+3!,4%EASZr)"),MN+"L',i3I'0JX%P@m3F#5NT5VK9SRX[lDVMbB#%5ZqQV,Pkr8
+
+D0K$,EmJXJHYjAD'dQhU5f$YR8H+&JiH@D#A[DZN`Q"dkekPTc)PVbr5+rb&6D15
+
+KKGDafC)4(c#ahjCDm&[5d3#mF45!$qfZ)4FPb4jkMZ+qR`bCefGK"'qf&$SI0("
+
+#e()jbmq1SAI*NT%A$eNB2MZSES1fiZCQ5k(44#`HHG(jEmdYTM[**I0h#Ne,TTZ
+
+iCB6HZ$mC26YU8b)ZYSaCG-(BG,FdV0)&AHQRSE'42lek9TbDZE@0Zb2hkrp5l##
+
+1Vj,K$Q049d,Y06%,4m&Nb3(BJQSTM-hfS0NiS"[e!U,r"IVeH1Nl$S2ai!AN+Nr
+
+jiU[SdaQqDphhTS5LYhY9+DlrULk#XcqUY0DQr@RiKI*RB85r)N[6NqJXkJ29T,P
+
+Zi1Ke5CrA2dK,$,AMJRkHMVDD&DCpdAR@pC!!U'eSedqe!P@2hHbZG6I`PD4lmZM
+
+TCVjAN@LMSXrI'qq'lKlr!`#3!`d(CA*bEh)ZBfJJFfpeFQ0PBdBTC@jcC3#3#3V
+
+U!*!2&6pV!"90D3!9-$S!N!4849K83eG*43!!ZQ(6AETKdf3!N!BIPJ#3"JUe!!"
+
+X&`#3"Q#2$%iTqC8J!i"lC,2@VT9lpS6hE000q4%m@mmkb9lc#6jMFVTC%Mc"GlU
+
+qA(aH"2peR()*)qK(,&"ApPefFRVm[#M[@1FQ@c,C4cEj68DEM"MC+k'("hB'm(#
+
+R)RB%rf3F4r'$NIU)Aa"0)R8NCT'h#'4qHI(c6SIJJ$pEp@Kq([Z6D5UUp@hak1R
+
+6*f*i,Y+T&*DFb$"04$6Qci232j9aiUIRG&&h!hmFaD([+Kk+PMhe%c'2SdRXcJ3
+
+qM@-T44+0dc-hPR[L2&U)N4Z+@(TqNXEqF*&+iDI#$Ef(5M&rI*k6`H%Lp'6-l&-
+
+Cch)T$MS$F5"$'EZ"k#f'J6m5EAmN`d3+&rcT)TP+$d,QC!Lf5@Vd-c9%-`)l0r@
+
+MF%p)(rHaB(fM8$c@4$0@04(&1C1UQj+3!,')jJ5q$IA14H"#))hrJ,(HQD,3hK0
+
+qb$bRd4`56m%-STrj35#'8L`519i%YC`(%-9abclX$QaKG%l%X@&C4XFqf30L1Se
+
+`,8qPiZ22jS%2HK!kGN0fE%lMb,6UKm!eRVAD,IX%dSTQbqkBrEjSGLeKL*jKfDh
+
+kS'eBSMH`HYfqq8#)2U`$CMQ,@`XL&Q"P1-b6UHX(bGS1*`L""()&RTLkTa*K-**
+
+)&NqiBS3XqZ$aR)NE41'%a3GLiE%piBp&'+8eF4El#*JdfVJrje#N3%fd`Y'$Q[M
+
+p(ciA4fk5#1-8aUqlXf(XHa0m1M,%lZ0(6jl@a+"[N!#Sq21`8VRVbE%I5YLaBc[
+
+QFk2Y@1C"AcbUh2A$8E$`T,K$UIaJHUHmQ!64d)8eF)5V-5L)3q1jkGLQGG6U1SF
+
+&e*mTqAc!Ie'j+`1S[i6V(pMfb3SYQD6TZ3),NDEkhaAUS02Ufid9l#*%+(NPlJ9
+
+0ffTe$Lji)X,#bIH!-hG8`SbL-)N#ZF6TG"ZQf%QRFA6QK"&!pN@ReGl,lY"GR*P
+
+-*[V+Y#c(2ZQCI@SelLKem'pk2TGlPFTSkXCL"f#*1j&1+Vp0NaG(aPI1%D,-1$$
+
+[G`C(cR(AD[4I!Z`dmMfLi-bK@eT9f-2&H#cMEI'k`RdM6%@#4(,'J8[mNc5Dcb%
+
+bIpr,)A)"k#!AcBdR58hX4)'(c!lQkVVCDZ0kM+m+I5bUKEiXm$EL,eh%BBQJ41(
+
+l34X!VbYEicR,i5(M&E%hJU+!6JQ4B`k'P1JA15cZ8ckX)[`F0$NN+IH92I&`4qK
+
+MmH)PKGJ@Zm*4TTkRB)qf36,XAC`'k"Ili[(Z,ZjB&1+D5D)8A*N'!0DJ!baY#ab
+
+FZJ'jhR&'EL+Mi6I9*Kd5arQfBJ*YEN&U`SiAXZ21C(8EJ)bB@4,X*M*PHlYalM4
+
+#b8$)T!!CZ9jjRR&!DaP*P3kHR+05l)[2&A"jHHClI2P('+"dY1+P$&hC#Mh''PI
+
+(%1XLRM+KAQT*b-6%BD3%)4lErbC5JjJ&G%RV[qMdYG4"'i2e!Fc)@lTQ@hc#-SP
+
+lpl+S@#A@,ANNHYGb@Tf-rCT@VE,&2k(%@&pR!Vr4KPj9K4m$&',)-bG!4B-B+iI
+
+XE&,[dkph2medrb@'G+ETe&S(ApiNpLU)aU,F8"HXVPT0&$[NaPT4*R$Kb@5NLmQ
+
+cEVGY'KeUbK%Q"RH)@@GI0)efhd6(G6(#S!ER"iYjJ"dJd!IVRZ+J3k'R3&N!$$V
+
+2ZS013`Z1*MfDNYXb4GM**$fBf%El6a@i8U"PbcNDY*0'M[c@6k[-%LEJipchUUh
+
+8l[`Zq6Um8lY)!'C$'FL3!%cL%AePUPJhR'i6*Hi)2G8bkam4B(e*l)-!'AAX-%i
+
+X%aR$d+NE[UTUi#%DebX0ffJed2m"hK[B'6#&NHGlL"L)-PqN6SM@NZ8QHfXVF*-
+
+8iB+pCaqcd"STBrQQ)&0%3eiILFAbM$0988%AbZL3!'"ELr'#bK[(kJd!E5LFNaU
+
+&@XN9NKBrNk8-BHVk`%r5kQi0JeLQE#f,1*+R*Xa1Jmc9aJ#KL9bNQQd0%&NEHh@
+
+k'&FkhF("B@QZM4q8'fi8JI`hr&8AH!IlAVf95-q-KY0!Z'85h5Ll!PT&h0q%qjF
+
+-MEmiaiH'l3ak1X(b5V!8)B0jcrira!qlab$%AieHVhhLP*l)M1aJ)aZB[hT%NFN
+
+GSX(VKPdrG'cM)+ICYNbMFH)dc'DVBcEd'@d[$RG0IG(U1cfV4DQZF'h(l[EDjR1
+
+6QJfI8#dl-ZT@9amd6,-(dI9ReY*X'S2fa`9Fdcmd'K!DFflRIkb8`NeQJDdZ)e+
+
+8`lHj1ZLE&YP%VfC[%q2M!@,$`EECrm8qEl0D8m(3k#k#G--L(`,84,"TAqZY31Z
+
+-&B2l89R1XVl%4BDqJIDb)I%GI9[bC8SPMmV2YB,[d0GCl*cDTHj&4IP!"C5cIll
+
+RF)&HREQ[T)256!0(YGTXIB@jG,[XrJ@[M!![M5T2f"r&Q-Sc#qbKTXaUYLTFE69
+
+B(Ulh2j0hhC+NaLS'T[)#a&61X`C&#H6p$rFA+c'"j"P4hN'(!ME,PZZp4fR$RY)
+
+4T*B68N6LNq2&p#T'DeCEpKQ0q$1a$&G$NCkV4U6bPca![&PrC5iZrTRKF*UhmQ*
+
+6A22J`H3YNFX"C6hCC8d4Lee'G30i"i-,AkkA*CS9bU8I@c42Yr32YKb9[Q[a5""
+
+-e+ZeA1IbcN-KA[0eSYjm!$r'1`mm"2Q5Kf`QmK0PGMhVG,hCfBG@paMY5GrViU#
+
+)P*TLr0LNRCj&#KPrf+C5fUBfSkK4YjefYp[,GkRIM+2b9A-QDi6m!ScbNJca`3Y
+
+&5[rNKeXhU"CI"P%qG`E-X+SqUQeE$CVU!QKB)RNR"9!@UZ4faBQID+JYp`9H(0!
+
+MM[H2+)TU9h364@$6J66Yr-Q"fU,,X4N@TBU%GCJVNL*5%r"a[)#he'VX$)0Sp%V
+
+XE&-(8YYepX)1phJYSIRAK(T$8k1lm,[4r&a[f8@I++5r,V5A&X0c'cb1balSB+b
+
+Xpdl8)jHCR)&HpX)PME#bmjGa(-h!h[m1m5'JM2ELfG4(3DKqpKPZa"IlBKHP&E$
+
+hli-mJpkr6h`[AZm%FaHVk$YR5kUQ5Vc,V4RI&eG&A$fm34ZPI'&(`9TlZF4fUe[
+
+[fbh'qQBfGq!TK6F--!CSCDl#3AH'Uk*+$f!ZQcSe#bVpQ6CCiGr8R*[dlKQ$2Pi
+
+d(&"dAiUfPINa-q4fpCk@$U&3(0%"#BXMmQJdVQC+8djN%QpY6!+T,PfcGB@!abV
+
+PikbY%G)16bePYHkBpF-Z4C,Ried3R[5-Jd8b*E(jZkDG435HmY#da)da(cY@NlC
+
+k6m&aU3h$!-A8UR)"+`lHG5UHm05AJUZMjN46VfiHF'q'LI8I%hb92q-0%&VaFX$
+
+0B6K8Y!I"i-RMJYLBE+A%T5,mLCqiH#aAhF9MPQ"iMMMMPUmIcLR(1)le9l[Z1$F
+
+XU(LFqD&hjCJmLeL92)L@J`&G,P9IGkqLI+Q'6K#MD-C[)0KJ4DqVL4kPF@B+JYj
+
+9Q%@p++[EVphfh5ZZUf4MU+Yi+j2X1[1S)a($Gb'R(('CBGIp!%`f'86#jimGq*5
+
+"U,&Ie5LF&AZ*Rh!eA[UUV-Q&ScDledq@BGjk&[K(0AM[R9[Ar'DB4FJIe5'rBrR
+
+"3'[l[+QJ-CAcc1eZmXr4JXU@@Kaq(!k`81)Ghq+kBIjpSeM4jeJXGN9L83bc&rP
+
+(lCpC,JIA$i0(-IkmUI`I!!d'CACKE#jMBfJJFfpeFQ0PBdBTC@jcC3#3#E8T!*!
+
+2&8*%!"9dqJ!9-$S!N!4849K83eG*43!!ZQ(6CVTKdiS!N!D6QJ#3"LFK!!"[$`#
+
+3"S%@"NiCH8U3!!(-k4(fDpIDS#HEEF,12S+RKQHHQkeT(0mc0b@85r!%B29FAdl
+
+aE``rS1Ial!Mkd3T8ehGpQchCK*200TRX)l00*TXJBcYGb91#M*9,MYqb9L[V2A+
+
+E$,MI%Ek`VijXcij`,m,**TYXXT+91HJN#mhRe+lVb'C(d)pBS'[5GpNXZq31@LM
+
+rf++hQ)5AC#'r2+(N++'UE`lDhpQJ(G*r'pFLf[200rjYUjR5Mpi9D4SY+9C"'FR
+
+9HrpE[e,S!IpD(C8ZXh!f,kM9fDDR,emqTmQ5LVNN9mjN8Z5NT[VcPdPi,E-m,*E
+
+miSD)`UR+NP#B2V5YZr-`Tc46Xdc%K%qEQC58UfPa)c*j5%Y9NLm5bQ33jN8@6XT
+
+#8PL3!%L#ICAaX,DQbkBC2$a-!TRTlJpN&MHMq'er6#FbNCQ)D&"1SY#RAZM,**F
+
+Nd$pI$1Bb`##M'CEpQ+GaTjT'qje#GrdL9-NKb4$[pdR2GcHKCh@MeP@A90CddK%
+
+&$h+I9-V&9c'pEbN5'*!!ehp(eeU#)XeqRF*%prP!T4Ma!h5'S6m1SiJQNXTF6XZ
+
+ShI5"LZhclZM8'Br)kPr3ZH@k9RpdFBL+"h1&ea[Ad[5c&DG4L2B`k(f4D-4''jr
+
+DEZF8G6mkk[DkS`Z-Y[fZ1qVE`b'pFebbD'#jSfjRh,0F'ScGJ61dpiL'J!ikLbj
+
+1))Le!#J$BHZb%''8IiE$ll%%"KMAGN"cF5fa$0BN0XXk#I+aLejK2$VT4bUCkH'
+
+MBX,B93URP+LL66GCL!9cS,kL2hT)@k",hF6IDp1,2rk"cN5HNh80i0m3m53,JaN
+
+qI@V4`E1RceqfD6bdH+Mipql'aPBJTf%L!FIE)mrqB28meciCdY10V6$aSc+3!,6
+
+*@rQGqHEkaIe)635JJ8FVqcYkBaq+!X$CPc1X"q`4A3Fl%X!BL1X3JqjR2#ZT0H$
+
+1X881r@*G%9m'KaYpjpLQ(5c[JGGAJ6cF#"2dF4KlD'-Mm"+m349fc8qAZ(1#X'T
+
+lA5@2lj[RT+8cr&f8Lj4rAkGqYpFQ3LX%f&UCC5!-EEcHPlPHT+MDfN'(NfVDYi&
+
+p@q4Ik`i+i9rGeI8TYFe6UB,*kPHYJbVkqI&FB4GY4$,@*!DBjdKh*lp)(jqPp*l
+
+)iZpMa"TlL-P*T694q(1[%,1U'*ldXeNceDYIL[IpSM6&"68V!-'qT`I6-KfdUS)
+
+k,-!!"EE%**)B&8#1TeXC6F)N!2KNA"FC)ceI40(R$J3l@(eVS&EE%4$,BQ!$Hf@
+
+K`Ck`jaAeX@-[jRfBq,`(5re$EN$l[9TAPcFN,SrRS6qR'mb`Ih2E9eQ+0qfMmFP
+
+*Yhp#"hL%[4`25SRHF'4ehY2"!ji9%Ea4m0Dqc$q`1lQ$0[Da'l!J0lLp8[U'dap
+
+pVl`MEhb9&2Y6b3$QTfSmkmS,j+5FY4EEp2-'pr"0#fYS&6m2%hR0[l'Rq(-p$*,
+
+#QmR#-e01EaaUr9Mb)m"SGGAIaX56f&#T[jdJcE#3!$GEH4'JFTHf&V3*I,kCB`0
+
+GD00L'l[jN3S$ZXipADUc6Ar4T6rZrVNr2X-lP-08Z%i15UabiFSBl*Eja'FJ5fY
+
+cNG(10BpPF2N4*Iqd#@lbTHdjlp(QKElMhAi'Tram20)I9aimd'Lk-"`jJr[RGke
+
+ZMcr,5rRip&[2TH8[a[fkB1U$AqkHZXijeN$Zpe1VicSJ6hI(ETmEdm&Z8ZX(l-D
+
+l@5PEVJ5ZpVDh3331bL`a[4ZH,RaS))(1,`"'I%`ZfJRI()!6ARZ"(fmrB65eZ+Y
+
+(qD1RqQ0Z`Z#bp4(Pj4h!pX(E0r5dqUaefcqmSB2YT[%Rh'cVVq!D)"bjS"@lVS[
+
+Gbk5i1J3,aYr6CV+MAYjlU)#14rRVebqU#IV,,N#fQkDJ!leTT)R)QrR2#ClTb+V
+
+((0r6DSeJ"HND5H$dKI)D@frQVhJj5A&p'C[69pbUITD@9Yf!N3`P&0F2&JmAd&3
+
+baj!!*aaR93Ll!6f81M,B[&fP[bXYdCjX'd!edfcf,5ZYE$&84fedp(JAh8hTbS5
+
+(S$93YNh0GI#iI@TpX,f4lCje(HpdaIq[XCbe"8hJJhS@ZGbGNp(SiUlDB&B85e0
+
+-ZXY0TRNBm5G0iL#ljY-fjR1e'45*9+GQdD[8dNL119qSZ2i&fQUBYR)6JMr+GN&
+
+PE'I[PIQmkBFE#Q4fp2kKZ*)H'L4q1jlAkrCYcd198E8mL6C%#)l1PpbDb)"JeTZ
+
+hT`3%2rGePc'rD,1p3V!4b3S(MKT-1lADT95PcEISfQ(e3bh$dIHe1S3hqhkFYN!
+
+cm@@[b$!MR3[UT*QZdSr8dQ9EDmKFh0Q"C-[4MM&-k9$N(q$T3YZ8EM9$pb'8EM)
+
+!hb#d*LMdbC2-fY"@k4Aibac%#V4I0XV*$TM[NB*XM[J+irTb'cqZk!AR+qmbV`,
+
+lKTIMI6!XR,I%&C61Rm%D'`T4lpAMeALbJi$rPmYLGD9FM%E0"VcRbqfUY[bmp$E
+
+aS(YGeh@qQcTrSR[X(aA+aNZ+S,hmV`%j0D%@Bl)Pj+bd#96%J&ECeiSle-BGBZ)
+
+L'PF-Kk*H69@JR"c'pjKkUjEqdP$aBV,GrG2ePZPqPBFAa8&VlG0e2eLrbf$$Qb[
+
+0(R'Xj(PFAXqL@hpaf(8-,eZpKapE+MZP)$$QP(#BTk@VQMAr0NrMLq5UD4)UNA@
+
+JEUif$+#cf6I2U+@dYrMYe@S*1$Ej'SqXL)m#PBDlXHT2eP69!EMGU)0UMGbG5pC
+
+9NM`+$4"#*q4L3(V(H#K#6TFYFQ2NpNBA!ke90k)*"+QV'bb&b#JZXM+r(8j!PKr
+
+)+*f'D2$UKKQ%dK(-TMF0&eiij4QpCi6ck8Lf&H4Ap4V3q)*1hM%L[5KMe1F1-Z&
+
+,,i**BeZh3N%9!Lr8$[%IY-h,ah2fF+#8Uql4lfDB3HRGP$H09+ZG(`0""#$I8bB
+
+IBU&dpFB&Uc0UV'U3!,ijN!"aLZN!Y%+cZ#N!mRGh6MVF%1Z`!RFEPJj4DpX0EDR
+
+L%mrAqEQfU#re'akaK!K8'#d%1[Ja+&1Y43+N`!4Sl5TX%GBPE$e36+Nf3I@qKbe
+
+$Y1bc+-4@ETPUf!j+'k&[Eb93MJ5(!JAfd`XbpM&&4f5c#S$8,9peBF'j(bDHVZ$
+
+6bLd1j+G5*VjZ-cNA"T!!a`p#S(L$546+U-d"Dd&P0I(#G'#HSP#rQDQB*"`kDm8
+
+Hj,1,qe62I6rc[Xi+(AITb(&kYY9(1fX+6lPrI(j*%bBZF`()"DleJUeRjAH9IX0
+
++PjfFLlp&V8B1IP+*`+Z9RUG6c&#4S5K5m#Q!JSfPAV6(#Z$qD$$SA@JB'ZV%R'C
+
+MKC&L8)r3fK1Q,k4"1j0bA5`l9*Thq#'p"K`([$iZa5+lHR[ElGIaYeCY(H)*e`N
+
+8ffiYS'ZY(9k$AmI!rk"BDp&XJCSY("&`IRPaB*fND8rP,&$dm%i+1@TBH%K%VP1
+
+YJ,[LfKRhMjaarlLZLEDd2rd1Y`@3!0cCh3hT,4h3SdH%#INJC&M#p[E@,I19&PJ
+
+"Aj3HZ9Q)QXk4GH`G@b2,'rGGZp1qdeDdlG9lc(FdbB5N@J")"ZXqNTU8,1J3#hm
+
+P!(&@K-&YR`H&I5h9R&$"(YB2e!dD-6l69SNT,e[m3%EB99)LiETSfN4B$raN)-&
+
++1-dZlcqST,F'!rXB4,M9`1$1UAAXR(Z`dYh@qb@QHf-Z`9@Q`m%iqa(8r2@PFHq
+
+*cC(5)HBM9U[G!VfKT!e(a9KEiE#@k*c%Q0!qT&b$'-h**`8aUS4,B8h&X#PYD#H
+
+23"#2ZlUPZqlBhUlF"HCLX2AjXG8EfQa*b'i$HmUL2Z*pm-epYNb#,J('X)@*S3b
+
+-!mE4f*j@*61`QM#L-AG3#AQdA@RV5MVc,B8T'Eh8TGV5VhAQdKLH`-$$cka$d8h
+
+HD)[Dh'LLq1N$h9&Jdc(%0PJ$9)3d5IhZ+m-K#H0!fKcpHQ&kGrIZD!mSb8#$X!r
+
+C`YVKY2MjhQSc$ZH!GA43J06()1b"6q*d!2K@MF#lYL&i+cU&0!))`A4#LFr1lA,
+
+QJ`49I43Um,bp#(S%V+IEm0L5PpTka8k(biRda3D%!QTGUhEA9Hj-ha(J8H5UPJ2
+
+MEGTNh'!(be5Zhi*U`M2jLG1aQ++)A,04h'p[$MS9K%IcMUQR(*EE3F3Q+Ei@5C(
+
+pVc`k"TRPF)kV*KdZcp9h%3"RQf6cqAVPeeZ5MPrS1GKe1pGkPrF+eEJ9XUfQ%'"
+
+rRY`!fXAUNqGk*2Mk!$6%AiQ45TpYBb2BUdZS&FMc5PJ)qhkk00Y#"l3ZC3V+[9H
+
+cFR("P3N#*0M`&l'9,qjm-X-+#Jf$l$GVMScDbc8Q*LN@fFSeY@Bah4&SN!$ii)T
+
+0`b!5T8)Ar#3HBGR*)q)AC8eT4I98!qrYQB(F9Jq''(#3!"i-aQN`eA21N6EVhkp
+
+(*1#NXITEKLBqV)Gah3XlaBYG#!$5UaEJCbmJbj-F5*m5eRcDT8phEe#G(%1J"IZ
+
+D,MMlhRjG&I,'VeB2hhi#-4i@0pK6[hlbj!i2&fYK`(eU-NS8VrB1AXP1%$[KMY'
+
+J+0@Dp*P%0$i+Bk,)Lm)!G6@'*E%AP,a`HM2I0+$2UVCJP,1pEaX+$A4*'jUXMa$
+
+6Dm%4hPb`l%iHrLV9P'Ac5Qe*pJ6C4&rf$2d-hJq"UqHmmmlXXdS!N@e9)36P(XS
+
+BDc)hdk9(h#N'2@lEA(dMe2K)DMbSlFqS8Ihd'Vpd4pLGlJQFPVqcKjlPRTJY`!(
+
+f8J(eT(1!hP9YEel+3p(3K5#pl)Ibe+`GHCLk#Fk6GS(E'),(cK"Z@$,m&%K0X*3
+
+F*E1PFCi*UN$G2i+mqJhL'pB3"8%0G&r"kq"kDjF+X!r)!0ZaBXeQ#c,[!H3DNC,
+
+[G$X$`!N[)-04D2l0hM0%0iM+3Y9+e!,p2"5Y)3eBLp$C9&6ALL+cicQl%5d@TLa
+
+8q++K#a#heb9,%JMRS#8FP89,##Rl4`NIS#fF8NdK0+l$*f(HEKd,4JA4G`HQ"bS
+
+@3qqcUq2ZRlKHD@%X6e85XV`r,GChZZFhX#SfIZ5H@SdE`'L1pNBK4C3kdcRNNCY
+
+E3%Ckm)SiMIGRENrJQrX+SdXqG0!T,rTq4F&#Gd'69V4HX*8H5iD)*T*,3GZJ)#Q
+
+I3fBEH31b!k!H&f$XISH3!25eUq3,LSGZX4BkI)"`$GI``PU-3D4hQ8#Ed!e51m*
+
+%)P,dhk-@'qKpD8rU+N,0KJ%Nq24dBZS'hQC+B2d'-EMY`-SHkRY``T[[[I06D`6
+
+lY5",4i(&SI#*T!FB@A6[M!(0DTIqrYIQ6*!!mE0a(E5&qVq&ELH,MN+"a8KJ+4a
+
+bM!Ad2V'-P-&6X0MCjD!98#R'e%#IBa'qN!"%#0AGqGNm*9YjbR%@YLl`MP@8U%d
+
++*14AMahp!m5[)!@L9Nd%D466fMq0RC(p#X)8*[YeU6MbCKZC,!aeiDC0f-,l%#Y
+
+)(k5KRUGVKRBb3jdfHX2T1IfUdC!!kZX@NmbhLq!B&8ld[BR98LE@"5d@eDD![QD
+
+UL@m-Ak5U+CA'ANlVpV!D9R!25VYJI@'"LX#""&&JP&2"ARdSr%bYe$'m%PGJNYA
+
+BePM8P')F*&TlmKXDZ3hT-9j#"-(R(Xm-9BKK$LJ@#DNA,4ZAM,&[(CXI3fM(*IJ
+
+NiSU`Sd%I%H-cB!&F0K)E*@pFBr)XM#YR[#L0NC3QH5VGD-9p'B[3d&)djX`ddT)
+
+iM)hXFDj*SK("eS1+-)M5##'8`--F%0TLLmm3qG6mK&[&A+aj$iKjK!r4"P`FYa*
+
+9cZBk48I4%-#rkcMHfEKc@XY'[KN5XaP6Qp+p5&5QBVSp`QYZA'ZrNfd#Uk[b346
+
+B8CSSqMS4KG,fL3L6!8UX8qC!eBZ`8NQ20a9JhLqMiY9YD45mUYXFb'Lk@b(6R)V
+
+c0R6UB"Bq0+89PCP1E!faqk"0p0GV8I+GGP4$JJDDd+JDHVqQCBQ3!,'6EaZD)Rb
+
+0U1!VXcpiBk4&0GMq2TVaA'`61F"e1'9B`U6`!-YN0rd(cI,(6V1i-,3Ydp86!bD
+
+Q4%E35L+qbf*M[9cH9IR*BKZ4BPXkLHFJfHUf-cjC,EaPrdmhH(DNS%T5%KZ[KA9
+
+X2E)Jp'qBZkNcTqiTl3XhlhL+TH*q#E&P%dqiAK#)**iYk`"0'XF!Xf%cLP8P,f`
+
+J$5hf3eBF4SU2I+X#5Cj*3CP*AkSdce&!80P@6D+3!*NIP,kp"kTrL%Lb3rdV0*d
+
+ZfIeM&Uirk3lKbae,1dRA8AFaCJpq`,8P#a#5JN4CqDB+4+hjC9abL*d#DLLb"&T
+
+FLR0+9QGHf5+8a9The1biqV8[166f1A!J'!l1&efKX"UBC*-5*E&`Cp+CUfC6!%H
+
+@&L!$K'AI3#NQ[UB52Z1lNUEBccR8#K`DK[,E@NFUN9Z&#Fl-RfU`CAh[*8am-mG
+
+kTQ#jck((lbqG,PG6)VNhZmG`CfPp@8H9dF%dNd)EU%h8'NS@r4CYCG[&8[#FcE@
+
+N4D9-*qdH6A(J3cd(,dM**0!V@a+p`i8UH-Ye2GfVki+*jMEd"f"XVHLA9C[$@DP
+
+U4C5#2YAX*['R%`IaNSf*08HF50bDf9f4b@&9A&JRaG5UQE-Kr+,['KpfHkQ0CbU
+
+JmNmYj+FU+XP!6Ij(V+0kR9R(*dSdiP+`HqK,)R4YDHE2&"0N&'aKZ828&ikk9D!
+
+%3bXITKc-+-e![%Vb!!9FI0k+d3*m+r%3"SNX)`Y&[DjreS*GfVMQPe24Mmm%E*&
+
++NKKJYbDKXRNN)UDKQAA#&ZY-L#MQL`F-hp4m9'#%D4e3pU!&i[pUSrIJj9H!"%*
+
+'2H`!9PMd!"FdPF!NB&F-ALD*08m&X,C2BG)+#+k4QrBlK2b3!%@3!-hqCZm!q``
+
+QFdT1Z`Q#0`EV$!kf9`@DI34rf'1SkAGJ)NiU`fhB4q!efmMffA)'&00'pPJ'--i
+
+KZ@%SP"9V`,mijc8*@ZKPf81SbmdjKXLmZe!pU8P61p!*,1AT#[mTGqk[k[4ND$'
+
+JL61Le@*,ebVF`&4h"HiFJH5c$&T'-jC2G2V*"rQ"95%L-Rpi0U*B8D9K+fQ"$P6
+
+(1BdZim+Va$Fi6INTj"`@"6r!T'3M$&M2CAMZ[m&#KAdY&U#$d"M[@fbmV+frR0h
+
+RVY2aMXCZ&dZN9Q#Am2e6E5%36f*'DE,f!Q6J%mKFkE$P9rCaMG-DaqS'VU#,HEh
+
+a1DC!B`)kTpE31qNj4l9&qFPRal),mkq@e',-'3-[!#qr2i(3SR[G@Y,RmZ06)$6
+
+b'bZXUfmMi*%@JT5iUBVFp+5)YalN)clC+a[@6m!f3LN0HZ0"HqFX2hEQ0Jr01HM
+
+4IKM5P1+d!#LPS(0"65`*IKNF80mjmd[-G&LJU,ke,'%k4fGPF"YMSkh"FGHe1Ka
+
+f%4U(4Q'+S`lK)YGZiiK5-'C,$k3(KVc'CPa'*JiAjbM!p%+VLR-EmKA"BpCC@N`
+
+#*G1%9Sa@T4ra85N5SC'DH1&02K6,5Ee9*2X!+U9XL&b`'CT["C2L9GKXX8L6akQ
+
+P'3J9[Il6pZ0kMZ#VSV[QVP"AGdCR"c51`-AFE3Ri"V&eU1iG3fV$emiGJ18%-kI
+
+md56q1D,E$`Z6Z!H+hCr"h3HU0EM8'`8T+Tm0KNdqUMZP6hZ*!,p*1kS$h[PS'),
+
+f8F"1&5f0fYZdA@bfQ%CeBU`8D2h!5-C0p1md!`eTTYbJM1RPlrELeASjIlaU3-,
+
+3%0'VfakC"m-NdA%EUC!!"TUPDDJk490k0X0q`iXP2eLYA@0e4PS9q)ERmm3h2(4
+
+l(LCL+-@-K,EBV'`2Z0HR,5BUdqQY`AF@VXBEcYQ!mGElMc+Ap,Q9Hi,8#(6eDl)
+
+JmeG$,j*5Djc+3afX-9"ERDe*[+k$Ve1MpDm%kY@@,KYDFZH4XE%KBNC5,[Ef%dD
+
+V,mPFCm5M`RlkcmL)8pq$D'RLLZ0Rc5FAi@XE)IAViKC6Mh5B8(+SF#I#9EF46k"
+
+SU*%DAZJe&M1JHaSIP5&l@`#'IZNKd9HP5@8j1TT@dlqb0klS9*TVb,iQ!LTakkU
+
+0qpY-6m)Ga$)LPr`VSZFX0jRMXaA9hY)jB*9$FN%eM5J+TaIDE+#I-Fd+Li@"#0@
+
+F-XdKbS0BZPP2Kj!!D-RaT'pB3pXjqT1CLjE`$#R@k!,0@IB469rH*B$(J-Ej9eU
+
+TNC&)Ye)ULRA4*9hM$P+)Sk&iR&*@4JUA$0),M[5Df3!--!L%5Q&HdFBdNdHlF"*
+
+[U+m*lE&T,92KDG*,!U)kdY6i+[X++3Kkj`06b(LH!Ab9SMI@-1@UN5kQ@%f2c`#
+
+EbjecJ0VSmaLkak1BiVGZb$fZ!5i6`pdfi2"+N!#b%4`2+XPjb4aG9VU[K83'D(@
+
+*QPPcUZP#8BS+CrJE4hK*%V4!04A#+'qQBK69KmU"$(#6cCG"4Cqe%kA!9'9X0*K
+
+0VBfa1QTcSciEfK[e83j`UcM!DfqMbMiYh8RMELbp6*eU5e'hp5@6`S#Ja-acjiC
+
+G62)U*VjZp65jhe#8R+fNC2HAbh(bHaPI8D6lh0E-ZTZf4I8Jc-$9$UZM(@qpXmB
+
+pq1X#P[mc5IIXM!V9*S1KVAEP5cRib'0kVpamZZKqpI-YeX)c4amfDbLCNI&H1dV
+
+YhFMHCqYdC[,labim@SB[YZ&m6Aq2i5@)#cQahdHZ@Z-$MDmfJI'9XeBKrl1h9N[
+
+qj(PpKG@T`hD-J9pkISEB8kpYhI4V[qhB#$Cah)j3hDblU4RAq-K-acY'4Q9j@2+
+
+3!-TV8`e(LENQH!J@AfN%3h2%-eQJ0[8ddX!bmD-ZUhVc`6a60l8Bm4p@@"9V)aK
+
+JU%q6PJTAi&BJj-m%kc(rb8kA5XF`ZdYBABD+K5J&YT!!R%E81RdK%fQS3J9)Dc"
+
+#rUacS@+JUrTaXH&,B3Z`LZ!$I9UbV33ZQXjN$YT`C!P32S4PGcGCaNJklGA4a2V
+
+brGqpYV"eD!46ZmY"%Rffpk,`EXca!h5)jM"U$9KKa,Fd,iP,JN6kAZ8m'Y286@U
+
+iTi)PIaU*k43Df3B9I4CTlqdeX3DKBUK,R-r29FMB'Qq3!"PcBUN&2I-ZaJbiU,C
+
+(d@4Y`k6b&ekF-N`4REDQB6UrY"9"k-EMp(NqHbAhAA9f@Lj0U+*r4LqQa$#fB%f
+
+AcGD)XZ+0e(YcqPJ3qeI`Fp#hi3F3TE56ic#bhY$qD@ch1rCr8mNqjUE)Ej!!'k2
+
+E6RVP5Q+B)al,)m"L(q'#'-QJR-"EA4*"UY5b@HL02ml1r!MLf4#`-HAd+(2VHdQ
+
+ce11k*FBLqQ8lS#REFX%A5`%FU-K-r2Y*q+[1rr0B+pkRP1hiXP9$H*JYcmSlS(I
+
+L!01m4b1S9ffJ*k0%9UarlKQL*C@623E6(UJBd3)DI1-K@mVl(m[(X1cXPdPb'lB
+
+%k-LT!aT#lbQaK5APeAj%3BBKD+NkKUE$06m%@*'-aF*eQ+d0S'NXM4k-G*!!)@-
+
+*H0PD9'CK*J(SdhY`fEI,Y,UdkKf#GaMbZG!P1eY)&SMN4fUkJ1%SCZNaVTEXK5E
+
+GC4"BM'SCN!#'$c&HY@kK)6(M8E!@$"!&!-MJ'#h"L[ZHj1Q8P,f!eTKRr3M'5lX
+
+e[(&6MLDEYJ*eV`KEU5`)bh%!pAl#3i&$'[26$BfKpqm`FCK!3aRJ5ULmS5c#4QK
+
+kkUm@)65Q5&5)50N[f5U95d2b1M9[-+B(#ehYUUX0G6pCANGi9SXldrTa4J1UE'&
+
+-&h#Kc`Ik3U$+dcd,cKT'TAL19Z!J@AecR$Aa36'#&)-+f@NBR`$&HK!4!cGaQ,%
+
+Brdp,Zp'B8d(Y)+1IZeh(a@PIkBL!ITdeY`J!1c*14Dp9!P&YDCXkj8p%6j2edl%
+
+4Q6A(,*jVjMk@VYil+4h,2-4$iC`0cH,q(2'4dqBcRZ9TaDc(8CTeq-GdZVbe`QC
+
+leS1+BR9)83$d)k$PXd(2rQ!ML11r%EUBPPplFBi"$Tq"D`j(eaah8ip6CX631dj
+
+K5LJUG5bkm&AQDfq-i13QhZN--HQ8MN6Mpk"mL%MiK`Se(hkNbqFI'pUHC)r28T-
+
+Kk&d)+6QbHDLKiQb&1(a(M8)5MD2,B29qT,@@&cdCcFJ3%,BKbf,%0IkqZ8lh86#
+
+$RlC@Se2b[8fjQ%kiE)V+p[-@Rd9c#!!@NL5G)Fq%8&GCc1D0lF&,q4lSHarH"l@
+
+''jVhfGfb1UHX%EXVK,ILhHGd+IE'!pHd-BYDJ1+L9m@SSK,@j!U8-hZ)U`5f6eb
+
+JHJ!9"bS89$Jk$1AUV$p#KKT`,PC*aSa90pPMNp$9aX$hh@`LJZ1jb*fLr$91#)*
+
+61P%YRlU6AmSk2+q"-Tq232YqTYp6pTl$4)kfG%6J*4ihM4M6IQUC2Q[d98CjXFH
+
++"2BA@TU$44*$EEaeNjNpSkSP41VrjB"IX@EPIi*9lAl)Sjb1[3jCcDY4ANmCpkJ
+
+5RCkca"Re#%SNKl[3-L(C0Y8e@NSb#eNNY6f1X8SEB6UA)BGj[VD1&BJ*bZT&Hab
+
+ZrimYd4$Dm`VQFSVdT5@d9KLq9`dm4UCb,PICH!cVSDeKG`TK!VhJ3cU[U+CUZ94
+
+3Y3SkeA9$QD[244[TRVk$a'Q&+#mADhD4Rm,[6#ik)`Q-Z4-a5f@Yf,$KiQrQm1Y
+
+kH1X0rHh1[93Y#)+Z"m59#Eb8MDC&E@cZ+$fDh)Qr9RP23`G-RGM()4)iF%*XG1J
+
+Yhk2BQ%'R,YSQ$M%LU58KX[d,'rldi!RDN!$D0rZUQSQZM+-c%Tk($TTd-8A3F'q
+
+'-b'l-0ae%'r&Hb"JN!"i40LHb#8-!Ypl%P)Mq*1J3NcYK4ZK&$d@"TpcVjIVkM`
+
+!'M@l#H!rKI[C1TBf"(A5Lea#81iJm*-Z&BaqhbQZ)Z$CVASkUVR2J2GU3)e2VRT
+
+FBJ,2*`KAai$2-FK@2i'lGFaN'EfG!NP9DL)V-E11Q"aiN!$23KNGF8-if-EN-[[
+
+1NL2TZSB(A#f3!0cam1Z'aZqa[SlFi-AM!"A[TA)jcQh6Xbb0HGh&f5$9`0lA*b'
+
+3!-$J@JCfdpkF+N@AjUBTk-KrC--H6ZL5DdURR[r`XHC,f'bR(q$ECLfbPrH52$%
+
+qR5e0H@(mM0'@cIBkqA[-Lb3E40eBFHQ%AYE$cccS9-kKb"ip6a34BlC)!i*)EVK
+
+d`S[9XPZF4+TbUe`Ma-l6*ZER()a-fV&5IJM3F-6m(+(aAi%@miRDi)I4'F[i@9H
+
+&DVCaG,R*,$ac5EL(%+b6'KVQAkY4TfljfG%TLbL%Z#6LX`41$KVmpDBDX+KdfPh
+
+43M5R4dVUSBiH+H#&,ZhHCJiHam2qEe,K8GD9T`JYFd3ANBBr")N@3I'iNEqQL-j
+
+L4)[KF`6eir4jS4ahrKdr[h+EDald6-pXI*R$,Y229b(18peVpP6k,CcTR)mc&X`
+
+5($%K6Z*'UfiBFj0bRFS"0mY&1I0UC4(`K4(2-U#&f-YkL48@+5QSR0pAibHkdpX
+
+AMTd31DlGR[YQf5,TYT9al0Qa9Dh"Cf(9EUa[dNA5'6cQh,!ANj5cc&rrl%fUjLN
+
+9iYLJ+LjRc1r'Up`MHE&f[V#(L%)cMY$Vf5H3!*4`MA")rNlDmJNSC4)-$*jhdCc
+
+ImH5lJfQLYm[kYI#4bSAPUF*,[fcGA+TH`NdL3F-@'a9)3Pl1B',U`Zk93(3(!aT
+
+iUb+&,,PTqc'ZMpV(rGEQ(q5aa5NjGhN3LDqmK+P0aD,6BAhp5S2QM$k[92'P@CH
+
+*pibVRb2#ITV4("NKXJ#LfdN)GBQRQT!!pF5D)QfUk*D4RarZUj(q85eC09`Flmm
+
+3di,FfK@PHcidNi-fAa-%pUTIif`6rCbZDR64cJT8499BY$RdClJD5!F`i3L%3bT
+
+V2-SUkidEFP&&1XTd-D663+95Lj%M[M@[D')%BZVAUFb[b6T$b21l,kC8`lR#NcA
+
+2d0-ZMA&%8%Hq03N!UFP0B64QGd#Hp(S!YFUX0m1cBJaG,lP!AHDF!"8`BI)(6H8
+
+-qM1p[9*jKLMrJBeNAS2$M!L$F$@%bHeF#EB5'-l,Fd*LBYILA%dj6eG-5II"%X!
+
+e(dU"Dd+J9I,m%e(A,qh@"Fmc5(f[Bjd+DiLe19-@UN'[Q'23Ib3pjA,d&"[U!`P
+
+EJK8aA`+@fLkIH3ai5S$d,AdMkM!pHK`Fl@A'UG%#mZHjdImH'DdGfTf$Cmd[,Qc
+
+dD[A0SlSmbYdU@AMVIV-,rNL(Y+0U%F-NETJE5KMkENKCANXh-i*6pc38KTq2jBb
+
+p$&AQle&c6SG1FU3FIQIa',2)0hihj4C4CF)R6p00a5cCZErA9!*"j40$mQ,(PmY
+
+0Rb"i-(K!UCH*J$UDRM'&*$kR&NDDkmpBHbElm-@%rba9pMqR@Y"LQ)k*d6[8rKT
+
+`X6bRKe0J0bm519IU5p)QU[BmDqf0Er'[)b0LR4-ic+*Ej+l0BXP'QH#*6)TI3K,
+
++l#)i2LhHYhcPQhMIFT8B9-3-b,6NJ,YFTpT[F8kR(fUADYGEMSD$,#p@-1FJNRr
+
+ZT5rKa&)fM%"2eqf10+%c#d'1H`dleef1fF3rZUcdLZ&)DffL`E19CAj5k15%(qd
+
+Kl8DHeY'VKiQc'CYVdJ4[UGh*@"Xc$3Z2h63VI+a%CDCT@XpTb911P8,ad[Q9pB'
+
+RFD)!llLPjlQki+)BfIfL[6LJVA4@YCE@6EUiS6UT6kl$SpfpIAQ*YG@2MHAe$dJ
+
+X1XM-0rN4Ta)BHjK%"hXqbNXL1$&cDY88kFbNc[&jIq(Y`4*82F1#jbFA'3cYfRS
+
+!b#M@@`C4MJ2a"'f!4*p0`*'a)E$)9hfNi+D&+bQP8T3BmF9&#FX4mZ`460LZ"%p
+
+5Kk9BeBj[A(1J*eK%&VPYJA[eh53q3#QMerGBIbkXT"CEpFKjR,(053iMbDH1F$A
+
+PR2"QQBl,e[H3!-3G4E(%p6JG'"bHhd!4(D3V*3+,pBJ5''IRF*4G0PP@c5&6bjj
+
+#)kRRFG3@XCSd8Kp#@9*IipMT+YV($SI-PehEaQUfP&eUR3m-XXpbiQbdafLLbA%
+
+3(,A@Lkbfk683*i-pZIIKC&@qeKArMa4`3P2lmL,Q6Ab1#1(*4-S1+kbLKapbQZT
+
+$XB!'B+h%1GC9l+BG5cA-I*Z(X&H(Ic@V0FN3(NClL*!!QDp`!$KAj`"-&fSQMm2
+
+59(c*#iii#@36[l2r'Jmrf)[@%FVR*%c#cSbA5pTP%YHU&aqBLF3iRKq$9V+"4fH
+
+5cI`amk2!A"I*A5h5FFT0-RiY#f@bqPS@9XBf5*iYI*3l)bEaaPUXcjF1HE(qiTr
+
+&FXDAMmIbD0DR8A9mPGjf+m[,`$j)FDSE"LpF3IK"*H`f#,#U#&aNX%RXZH2,&0*
+
+3@XhB140m$"948522)B(rcS0l#XIKVPBi%HB++Q)`N!$LrF@UZ00irKFk+N9&Kh'
+
+1)prXqTjf`VFIemG1"IRB!8$3pA05k)PXj8!DH(Fi)L`@rN`Ce&86if-i*k!prd$
+
+P'*jp@GejpChT[r4fFSPY-Q(iLe%V6cIq$`#3!`d(CQPXCA-ZBfJJFfpeFQ0PBdB
+
+TC@jcC3#3#@mR!*!2&8eT!"@'&`!9-$S!N!4849K83eG*43!!ZQ(6M,TKdjF!N!B
+
+j6!#3"K#Y!!$LR3#3"PP$$8jAmT3J!i#YR(!2AbGlHl*2`Spb,l)bckk9F(THHrf
+
+iQblm#ClJ+6k!0HALmpViVmYkJRl%!R9pN`CpRB-kKj&0pT&0YReNNhf5fq3SfB`
+
+`"G!Cr[EULPJ9r'rSq6+qjDSImFm2Md0q*-C1i"c,X3`5-3i(8l`SrJe1MS!"re8
+
+f`mPCj"f2%Q&YeX5GYpqq*il14$+5SLZ2F6d@iC!!Ici)["-Ca9jb4Lmf(GmEKP(
+
+J13U(JY8IHE'B41&aj)`&IKT'8SSi(#DR6L3ha&Ni&Di6L%J1[$L*[+0T)S@A##F
+
+Bh!iMiXNERU9Jm(!D$'6%k"-CM9-UGYS(BNF'-R*mX6mpmMeAl(UZ$')T(1#R&r&
+
+)$N"N#SE1EK-E2Ff'f!k"cNQm-0J3dX2l5$#rB5$Z'U!D99f%8BV%FK)L-K,KK)l
+
+A`0kCm"d3C1lIiPX[4C&a2a"H`$K(i338Mi!-T*pk[Lq1T*M'FMMekbN1A"52@re
+
+(RB1qD,32aH0'YpYSp`mhF$%CKAJY6k6#iidR[JGi)$Tb!PCX#Q1[fGemK,Z0Kkh
+
+G9[m3e)VY9VrGl2A%GUFV'Q+rdHfh0Jpf'efaIp$Glr5DYi6S36T!PU*i,8(B!U3
+
+-K3eNiRKq2*I$)8`J"Phq3)bF%`NcF#@FC5!FiF+,[Y0iLX6a`q#BbFI&6'-E`KZ
+
++)%cUiM6bB$"*H+lq&%2Q!RA4#YaEGI(VYhiPpT`i&Sd6#(r6'4p&hZ!B2qdea2V
+
+G1rIHVSZ$AS0)aAqh9eEHm)B$1B3bfrIZiXI!pDF$+GippB*"H"VI'MeBH8-'-$C
+
+aHe8Gd9IeS5TCpUe40Apal)G($R5$4`EGSmB(6E[Il1ke1[DM(#ACSSIc"0+(0)T
+
+c[Ceqrl#m&KmRb9R'L2Qc[(V3E[Ak@qACD3$('Z4hcF'aiqCRh$#)3em@q03ClfK
+
+-2m(,Km,HkfhD(c5lqGdM,e3b-5IXl[re0fdl2q(iIZM1T)36*+6XJ3C'Mq46k#+
+
+!Z5EL@#EZb+V9aC1MNCGBY3e$bJ9+%'Ld9-UMhGPULP9+96D#45,ZLrE"lZk'IKG
+
+*"b(&$TbaT*HYhETBCH1C[q(lNdJ1[DIUcFE+LMYb)V(Ua+lR2E-8(#FkVSP29mL
+
+Ee'Xbp[[#8Mr@aL`&#l3L42JbX1MHfKh`5KFMQ8a"I""1($"`CZ0'm-bGR&N!85F
+
+Yi-%NLILSqGf!!)62$GH`%U36,`QMM*ABd*+q!)&X`p%a#(+$%cX)"p*13SD0Rbc
+
+ABDJaBH0%0d4kSQ[ha8(lBHHJ[986-STXXN$VB@2,hQVd'h#JER1c6V$d@A)fSHJ
+
+!8+f@l,NQA51DXqKl4k5AUb0BT"ZJj'FD4p+IA#h")r("hF226#B5fI4+#5D*Mi(
+
+hGf046[ipM8415KK4"1Z[F8Fc6`-T*CqZ9(lL[[)2iLX-F3DIb5,iRhr0qd[5pFN
+
+F&TrGEZhL%-U0`+DRfH'k$MH1kmSi4D(H$!0`VIK3pbQPM,meK8bhPkT3"&N8h2)
+
+VK3bZD@9#IC-)dC'!HF%aiK%!Ce%T2eN6DbZ95SA!c++8@"0hS63QmMbl@E(h$-c
+
+9&LMAK)PaRl-2R!0!i#i4,&%E!-bY1Ul#+Y1D1J2*bQjfZjeZ(C!!RNL3!)!+a%f
+
+P0)BQ84lD#B*dr1&HFmrHl6cqQ"e(#ed&i-`brLJQC%r3U39H#3EmGQJa)H#A809
+
+&pFh*QmQENfUpX*1kL#9#VB--Q$VCkMQd'aqYhjKTk$`,-rc[dc#KB1XKbXM$c'9
+
+Y@ZS#9CcUBCND,,jFCZS"5VqM`J50lC&ip'-FP@J*56kNfPbcMGeZXl&eD'pe@`m
+
+IlVED1h9@f#`fc&$F4d9TR&I("["F29fVQZ``[fHmiVP4'+X6he['*[T&Zl2IE,0
+
+T,*+&C9bj8!G3,254jS*A!L(5KkiIaR*fJ!KHL'(K@CGN+#-DSVYE"TD(RFjZXp(
+
+'fA&i)QGT$q8+c%LH&&&13jQNb*@KN!#CQ#C*(6SGiAGK*B9TFQJ-al!Zb8'(Y)[
+
+-""%RN!$`GQ1heq3XZFlAf)F)U$(5j1D$`!k22S%+M(ibfLS9mpc39@'mLN$&!Ck
+
+BHB(T[0`"JDGMbPMj!))`[D26S)F[d!NP-[lc#1TlJLIi@5X%Y&F+3-[J1C`8aX$
+
+1Z`b1f!UN'Y3TFBbc48E8MPHN250V"U*9G1'eZHepjhA'Q%ZlBd-Qc"CS+BfBS60
+
+l'A515G0iT"kRSL-PT6pQNY9LU$(KQAL8+[q9mFi0ql99%jR8HTiR'Ae8DCE)V%E
+
+9@E&),lNGrH(ikF9aCi)rIS6ZA&bI6P$friMG38SUce2d,UeSARkSr+YeQje9i@3
+
+*H1&CZ9GN0T@&YRlhS!R$-!RYhcT[GqBbed@$BJRiAkYI'5q,eckD$X(81XM,'V%
+
+[CAh*0*pDT%kB)'Vm"YBd"Ja*JCBmXC!!6S4"5j3Y1P6STl,r93e3+@(Lj!!e1*j
+
+4D)'b+(rN4AfYVJ*,&R#9J&,#%ELjRp!Y3IS1mZceZj6)683f930R)Cr3P%$*eUN
+
+eb"!BVSV*`+*H-@D3!&D)d-ZA",r!NX85,fDR5N("@ckP%39,DDk[lGC[f`Gl`J-
+
+8dKR136VQVLi5b&IkMlSG$&afa2AV12C!V0-2lJ!U5e%@h((d,IP6-6PlQ$*)Zk!
+
+jArV1ZI3,IjSAEplP9GA[HC43pG$J4AqDBjqVkE9aUj!!1BYk-pEC'HH5R@9A8f9
+
+G(H$jVk-GV2',C(ITiTH140F,3r)#,JhR%jP&E[fRLNUN5N3cR(-4A383N[mL*%A
+
+&Ul#B8eAH96l`kZiX4f4hXC2$A,#XV*khkMmY+liD9La*Td1QUEj#SU"1a`ZCp[q
+
+r!*i'[KFm+3[H&ih[Fcr&`[%l-eA'PmF#A3b@1H&ePhXCU`ZVe)&Ae@GBk9NqrNT
+
+Sh'Z4EkXQQE2U*#`MPZi&FPaA#EMTHH9dNBYHb1XNp!BLQN+%6T4-*eTLSBp%-'Y
+
+QU@69kJHQ%iGkCQRE,Y`5ECV98rGc$H%1T-0)+,qURk%26V8k031NmL[JX9%cBrG
+
+,Ei`d$$maa)UFkBG&S$)&TTQ3!-`GJF55'S!k5UpJ3PLJVXURdXfEBdC#m1b*Ni`
+
+q[,ZqrR&aq"[+q44#[aNSZh)`a@`A2lU`F5abNa&YCNqGXrJG[U9'Xb@YQ$B5UbH
+
+e#[dH-m8RAaiML(@pJ+[TZ6VGe%pZdrZ[6V1IDCcdi*CrE-le-I#YhUl5Q,Q+Ce8
+
+L-Cj1e!UDpq`Pa9L*"e)1j!!cAJD!4Di5J`(88N0U%SdDCXm4j#)*Q8E-Pl2A`bJ
+
+FUlQd3N--#e!F1G&CR6EHibR%1I3Lr*A!aPb8NSbASkYH3'G`NY!!NEc8*pdl,R*
+
+JA#IiP*Mj)U8$4Q$&)A'-YpL4miiJ`3i58XC@fN$CkphFk[4U-`(S(3$2`P5!)0r
+
+6%C!!-ljbBf8cm#V+8kN$eCI(ha29UP$Q`GfB5C0NU1q"B6lfMR!'!malp('88I2
+
+iQ3mM[YPr2Cr%'Flim68kk)iRHN1EjErU,8b1jL%`[ff'4(jiQQf*8ZU4E5f85M9
+
+p2(e(VD,HcAbE0md+)aF3QPiP-bFTC-BHPffCeICF,IXZ0*19!#ke**aKBC5@5kN
+
+c4E9"cqNXPkI#RDbY!6ec3Jp"b)hhEY6i#(lk$I@Vf(3J2PcB!0Z823J6Qb0%,SI
+
+D"TZ0QPCAmLbCC4p05K'%6!3Lk8qML'-"IPD2Xf2T8+Z3!!S@#*QEj,I+4Nj0F+j
+
+C3aN1mb232qb[+$Fc3H8m!,IZHl,63%l!q9BDfm4pH%L-1m9ehHlR@jhXRP&aN66
+
+6eh35%Y3K2@F0lr*XR#A6V'XV($fGiDRq'0PphRVCP%irVQZleQ"+e5f#ke`F4Vj
+
+&-c*,a4I0b!m"q-mj9h8Xrc'@jrA,942H)Uk#-*FV"GUJKF&ml5cIpl(FhE`BE%-
+
+$fLR`5kBPVEfXE'EYQ8Bk,c0*h0N9e3pT2YT6hlFIKp(JFJX*Y%ZL6R(V6d4G-Y4
+
+p$(qJE$D%m+K)'%p30rM1-AS20!26*,a*$D!A6#@PX4p*6-HQhp)A1DHNbImbf2J
+
+pKI&%ZKkqNA)P!AZ8P1I8P6'EcZreGX3iaQMqiY-ZDGTf0FRd)`hql$#Jlim`AF&
+
+NQYMdCBSRQ+#XVA'5jiqIp&ZGc9krPC*k$GhY*bJV80mmiDP36@2Q#bNep#@@LSY
+
+E"06DY#%I'LTKIX(E)K9",0GXBULBGfGD34TXGVBTNK6$#VhK)"!jZZEQSdi'Mlm
+
+m3a+i"KBih'HIIH(k!1%5m`3h3F#BiEYrAf&)fGG&4Q9'&,lINU0-K9EKY)6[l0b
+
+lDkYG(fF*1SCh,"k#B$XRq!S4&bPkDf[Yb'42T3rV1Q4XKPhVq!rkiN-kLH(V6IL
+
+!8NbIGbSZQM`Pa*BASfG`4eqm*K*+$LTQ$TXZC)PUk(SSm9%XQflaiqbSQYNKLTe
+
+E68992NZp&-+'"kNa-@RjcPYkjNAQ(iAqcGqaMMJ)KcEY+QRcT3"cYM4CVYI[l1X
+
+XTjb8SQ%+kqkp1Dc6iX0)[GD1h@qmhqcCMHk1`N@B8-rJ!eI@ZT(fmL8rC+IMPfD
+
+KQ9QdhLb3!$+-!F&bQ0'[p*!!k8KIbajSrmThGk92+fAm%MI+AD%CTeeh8C[LdG4
+
+0p1T1!8krKh"($a1TX&39T1A@d*kUd5(DdiH0cIGlZihH)eXp36`Y&SMRm3DcMf8
+
+d3k6hMJ2q*"N+CT68DF9l6Jaq(3&+ZDPAE+U#XhK(52Z(qmfH5-l`NE2lQMD6M8L
+
+S"A35,2kd*Q&XQlAKiP-[F4*1*N3(a8%bS+a!Z9crA('3!,mUQ4EQfbGiiaSf$-r
+
+)*Y5%8JfJ60'E(XklSY*dIaP"AAl&K5aEbC1AH3cqjJ2m3)!ShbfPL+%61MTeNf`
+
+)R#PUB3qPTG,!#$qL(R3KABf0`P5jBEh`dKHUqeEKHFH6be%PNRI0Ca&iU+ACb+C
+
+K5h2Q,Tc@VH[iFTai&lPGH0ap%jc-Fj812[5J-'0P#q-Y@kM5l)f)8Qh`@!!k)L3
+
+[l"V1BCC0jGF`b+"crcb21*N@9+T29G12TV+0JBK&3,AYmhQh[J5J6fkMCFPZCZ3
+
+mN@F,FR6J`qILRZS'$cS23&8K88AHUdE&(-%#bbEA6UqRV&ld%cc1bPS'9[rFpL[
+
+$S8qI@&!PYpT1i!Z&f-l)J@8q"XH9l$AcLYQT86#-3p3-D*iS@cj61$,RQDm`RKF
+
+5qDN800)Q61CPD825eZTF+(aK[bqV'@0jaJL3!"Tc25-kPSD!(*h6Jh6-a8a1VG%
+
+NYH988#KpXY,-ZcYChE3[jC2,QZAaR[eqmh#leHhecBr`82bf[fGhQhZG$l$deHA
+
+1kr,P9I%b+efJhXmq3fZ-0$Q3!%qKB+%ER[c$*!@"QHqB+DP+kVU0ZB!$8@8bJUC
+
+QMUR,$5e%r4A#EdlUc`rQAh6FER@`3QpX)C@%EZ*EkhAcSQk+"1Yki1D)Pl11kT[
+
+*4`%Q6KIc$SANBp*23,jc"bXGRJCLmS'G++r,)RNMTQpd%PM-bdlaIFm`Z*(!jF0
+
+*9U1Se!33f2pVS9eQ$eeF[F`CH@*3)Hd23@ICaD5#Qm%U[T@8*TqjQ9l5PHikmb)
+
+&$F@VQ6D(2kL2`pm`NEjIdR1jZ5ra,!Yc@L6-+K'6i"DIAe$40iEj&SfkVP@!T&D
+
+IjI,AS`NHj2k0jf)X[#6k(0&9!8cRS2p+pIm!N!-0#@GXEf*KE(-ZD(0[GA*MC@0
+
+'+@9ZFf8!N!RfSJ#3$a9dqJ!9P[`!&6!k!*!%9%9B9%0A588!!,TKe*DkBG5M!*!
+
+'3P-!N!B3G3!!2%N!N!E(3Jj1'AP+N!!"X!NM!jU%%PVRNIf%%lE**VFb@pP,0Qh
+
+Yq2S4PTX46[!%B2@XNe0m'X-2bQ-%rHJ&UZ[Vr4adq%NAYjlm2R+F$$C"`#Dr9l+
+
+UpJiLc`rff!&6[liVHp`0M`EkQEQb,j-L&JKE"-)c4FL'dSTGN@$3caVed!2qRKa
+
+,Ia)ir8(%pSqIXHprq1%PkdeB0"#X,IV#Ld)QEI9mi6NM%B410+'+BqikYJ`mKqX
+
+qG&[GJ4-b2j!!rB!2'ClX3!J@5MZkiS&ia5BbCLEh-"R,#D2!kF@4B%l%Z'FpP`&
+
+0bE%R@6-SM$e,"+Vl5!6$E"6[@KIXRI"%J#QIachA-GQTB`S[&)bMIkS)"m,#),0
+
+Q#2BY6D166)1pPHL14ildAM(KS$jJDVl5Bbr54T1Z$TN-XNlfH85$$*Md#I`CTMG
+
+K,XH!8[`MK98XaA6f&R-meHG!qKMa!*eKk&H1kl+HB(%Sl0Jpc2S!)[YidRerGY&
+
+PMGBRpV(4EMGDh8q[J"J0*+V&51KqR+([1QJ2J`kiTcBfDq0$Xhhm(VL0ebHR*pe
+
+2'#elHp*Y06XGp[DXc4VX[0(ZRKaIR$EDl2bLIAl@D4iaeX(US,1XLfS&33YBC@b
+
+B*5,ZJ*aQkr!**""LA+l&"R`N3!DQ!,0BM$-6A26EMQHGF&GkI69m)%jhl"9cE1E
+
+*k*!!A381##D5bqh2HTLb`#%lmFbM3rDR2rq4IH"Kb"SM,2ia(rB#aqVMk81$III
+
+LqjFr(,+,6S1'LVrRHh[2$pL3!$[HN8Q[BJ`Hm&MVl%f6(4cdC"6*S4&'h,amaCi
+
+I[$YH3*Ka!)U1$0Iad1'"'!X6Ef(d+S9a[%LeYiq(3fB1H-!12[rm,+XI5FF#6IC
+
+FD9iDMZI(d6k96!(@SpMEHiS9XB50VUhpcXNlSp[i@l0M00V[RZfeQee8G$qG0j@
+
+D!+6dUAZdY#Me16JUUAdUA+cQ"M`Cb$ek8[a8H#"r04K`[Xfk*fI(RHi*hMh6M5h
+
+"rK++k*HKIc6iDcTC["Upf'C1clfNKfN6@%RU%([0EpG5V`rBerYUqT0prCaZe5(
+
+YfR4[G0'9$#`-F3kSGfS$k%QIJh8Q5p#Ubb(QpPp!6iCLk2`6cT9A[lGRF[ph[(6
+
+SrqQ6D#e&-iIqEf#hHr8liVrEe&Xpj*G#i8P,C(KiMmf)2Kf[EbLb6H!2pjimHF)
+
+80M&E*qeYrq$CrV-j6D[@JYM$A%"mZYe0qepL'C8!Npk[#'M"j+'3!,eI%SL8XZk
+
+K*(48h3['V,EKlFP2VBX2'`MEP6`"16eEJCMH#(aP#515KKF2&G*pacG)k4T@Xi'
+
+JL4ac[V"h28N[9,*+UkLMN!00,b5@*`p6GN%M)U#YHTL''r[q$U!2IHVRaAjG()K
+
+K98kU@8mhlfe66"cTK#dq6!Gfb!4@Nj(N#@F`)ajdJcJI,-5ekQ+0VK%)A%'XTHP
+
+Eq&HheD3"53)+FmK[G3B9k#Apr$-if4HQ`ef$5X222mmNLB+#BNc%k9fTk3SHc)T
+
+Td"V@q5U@9IfXQ@Z9146$PHiRefZQiP2p)2T3EK%NU(kBJ@K`k9T`PlaqQ0@p2MX
+
+lE6CD'%ASJ"IlTK)HKK8V-G)hli#iCD("eE)TK3*K"'0QiLrA@BN8Fb$J*)aJleP
+
+'1SX%#FqTN!$`a08F&mX'[5(-P'L@NL1&-E&jhc#X%L1E3+B0e&cAT,rVFmL$brX
+
+Pk*[lb6)Y@Gc-DCE'NACm9ibCBLI$VrIpfV$mM%#%)KK"q($[FVkm#J4Zb6F-[Ee
+
+V&+)V*6a[#H[Yb5P04h),&#Ai%"k8-Xfb9ha15bhBPMdh+Ci*#A+HY$!'+5dfF@C
+
+b@8,ij&p!dTL'"q+I`e(,)S!1Sp'NHRUa8'U88il)Yl@@fSp+h&h@Dkm['YbZN!$
+
+b'Z*K6`5PIS2",BHPZRZS6dJU'N#"1`YI6qYXQ(L`2+e&5e!!"4(&[Ead',YjUH@
+
+-S$dUI3U,NTBflicb"c+[lMNJUQ*JU*C&BbJHPp8m($Kf)B[GE68kJiGFE"%FfBG
+
+58aBL!(jN!BXYVTT#GG8AUZ[@`Lp"-8L`&k4LhKHCiq1m@S`,`S2lq[eh4A%a+*m
+
+mPSGLN!#!ABJbD*+`'%BIJJ,[bhTLEP-13I*#@8jcYEK5&DR#&PpLl[V'3,KT9a9
+
+SZLi+-aq5)Ei86#53!+J3emJN3fK[JhASB!$5Jr#$62[m[Y&jEj`f@r"'%LRK'j+
+
+b-9T,X,P(HH[i`9G$FZK4JqXKc!EM`j@)lJ55UL+A$ZV3&GlF2lkTpU2JGN%aHe0
+
+!+q,YbV'L`H&0K5AmD(!,0cDJk[X1dKb6j'9K0m@ZUl$pZEVf`D&NKT+"TAc%Z4$
+
+63k,#@fQk33PpMZA4-(-!ce)3pPcIcPe*"3AHF[@F0G1NL0IaJlQ&I6f#&H)'*h&
+
+fri(6#rMP$JQHM",jGj02KFK!AZ8XYh'N8Pe!%eM`Rc0M'9ep+Zc)1!HKJ`!1fK4
+
+VdkrcMYS#"U-2L'2iY8lI!lpDp0b%Z@KLU3l1-hCaRD'cm1K8Y@)M98eiP'A"pbQ
+
+FP*Cd3XHGi,9"V[%l%AA%SS-,VaF(Nc1[D5Ri$b"G3JFe`hQ,kHf0M%,eYN3Q93D
+
+%PSb-TLIMrX"SBBRR1"mF,`k0$SC,rDR(,Zd$AMX4$k+Bj[eM,),*SX&30&ak"af
+
+5,6Xe)R9p#`4UI!4,cRCrC9%NVZH9&F(J#*RkJJC'eNVjYE6'9m&Pk+mb1JJ)3["
+
+K3[U"A#)m4[$",@HQ$a!6)$GTk6TKKZ0#pL*BYkhAfDLUHXM0)$FdZ#Hpb9"Liqc
+
+B-fRHK5p5GH&'459TY&*kQlb`FA3bY%KHD%-DLkDHq*dh$@m$LJqCd%+U`T0'SL`
+
+I+-LeV!iMJ34&88jZSB$RA9UX4"*&XFT!P0A&U[QP"`6EVM328H`@D`JcSKJ&RUT
+
+DhkehEl,G[(VaGJYGP1Z0,XU6P5lUN9ZXKKClfl(&m#K@Jp2k388JdVcAFSmJ+SS
+
+G3bhXq+*Y*%fc3-5'JXU)6mTJ*3+49)92BK04f3)K5A3@p8TZ&0@8)d)(HIQefA9
+
+AUi*f-i%ZJN!'+f8(MJjj(pN%90h%GY)X8B#i(RN5md+dB`"k+[+DlEDKmb`SK@J
+
+hm%NH`Nb9%Uaf$qkTJ1ST+VUIYC0lA5"I$,6B6C9P,4E,Lb$!jd%#!A@rFM#3!,9
+
++8lUhGFKh8m5#9J-#,AQ0NfI5DSMmZ@i'HYaYRp)m)F+Ple03b(EjG([5A'KIZNi
+
+2$G"b%qY0aEk1`6%,Xc0XCfc!+Tq[&ZCR)"'#d2[$i'QjPLLP3mTphbh8`*H(I%3
+
+NB%H%!fkYV#8G!i@8[GE%bre1!Ka'L$3kT@U4iPPB')(SJjQ4lUHAK5'#1`PKiX#
+
+Sj$%*cG9L3dY"@!4P6!reY-Gjq4CE&CI5d#j+kilV6#'F',"Y'E``(DG-+eaYkhX
+
+J2rK%G-'Ke#TN`aCd#q9B,!SPj20jPl9*mKH'FJj1`FFbr%@f55PP#E[-8Y5Dm$&
+
+iT-+5T4`8@h!NK4*,IYI!3l9+PSKJXc1*Z!"%[9,)S4@K+H6TkR,+IYEe1ZTE&dG
+
+34MYUM15f#m38YZ2CmMN"p+kP1!N,TFr@F928VC1N1NHR%RCTV#pl9CJq,X3iip9
+
+QDG1e@Mf)4QLU#S$dj!k"[0`+)BND9PR,(3!1URLd!(@p@SND!))8eR+0S&-M"C(
+
+!M39))94FA(#S9Q3l(p6Amde#P,RJ8'5`06CV$ib8mVdD4r""*6d4JmMdpS-*Gif
+
+a(UiQTp),UkYTq$9l8hfYekJH+P9&@5U)@S5QpD@A+qe#9ef+8V44BhiC"8aSS8*
+
+3ZlrVB!P"qJ04ZEAm5'j)3(+V!`!Zlq%561'LDH1U0)a,He*CJ`@9mXJFj-9p@8B
+
+T)PkDZDAeAm995phN&0DUBf0PkKab9BT!41cQJm)1dr@1@Q6$MNBmXUVHf5P)6T8
+
+')#)f*3R$8#a[5U$DTVX3pbS$l+p#QmMqL$'Xr0a3l%e+bi@A%3!i6cIC$H)qP-m
+
+Z2HLXS8S,8Y3`HD$di9K($kHk@ZIMm35A'MlS`Vi-KZYiGj,Qj`'Ldm*!JQKEEYZ
+
+EdaT3Q$Kc8HHF%-d2YdVr'i!1@CCUJU,G)2hC1QRrB*81d)@*)DeI%U-!,dKdm)$
+
+$QFLZ'BKe!KEQ!kjed18`GGaYILN,mNMJbTbk2T!!*qiKD!M'X!1Fc1T*DqRac)"
+
+Q`d8JhamijN`VU6fPI!*,Vb&3a5,0(m9""'-'&*+m)%@B[!bJkZ$&%FH%F,0KiZ!
+
+@%MhFKC-63!TE6UHI&N-h3c%-M'Rk0I(LqSC+Hdr[pkJ4N``fG%-EKS(L%`(Zlp3
+
+#Je+(HE',['DP,A#UVE`,!*ZiC("jP8cY!@'!F`Bl",8rT6P+(TIDb+,$EAQUc%D
+
+iQ#,[6G)X"NKE8%AA5ZieS3p,@6b3!0RTRh[K!(a4ZeHL1MN!!fGV-B`,hj5+UpS
+
+#p`Ud@e$*eRh(kBV5@D$6,'9i!Pj(UAd4F0TZ8)Lmeb-%j94h#143eN5&HP)D96R
+
+GrbS2E)"PqeSCP"h3aD5Uh1G`HfrZ"'`Q@*A(pA4pR"iT6emT(9Kk+mSPTV1GYFr
+
+kkii!iVFeS6kJeV!*a5afjAS3pDTTK-GY!mLM,U$NFQd3)UF8bC*`8&XDiN&Kq#I
+
+#Y$6M(J()6[DGl2c8aV1Zki8IEXU65`a+#+I+rYjXd6aGNkd@R$1%p0SCXTPid`P
+
+1KMZC2ekFG1QlmEVG63i2QAFZ9*DmKq&N)Kq*XkZ6qA"5iDm[3a(-c8h1QckQAK6
+
+"V"%)RFa8L,IPlBPVqeJ*+Z4[+R&06$H1E,+0Ga#2K+FJF15aaY$cH'a%Jj5b&,F
+
+Yk++B,$Y9l&#EEFJ1aU$!'J,AN4e[VNF@QdaEU",-U%h2TABqIF"*hqDaFCbLI96
+
+c2)q#c)mbp)J298+4G&&5N!"GY,Zq`8Sp'8EllpeM`m#9A0$2efK*2p2,G"Ne+PZ
+
+,Q!%h8$*e1l0#HiKDUM*BDh58PUDB(RQeqpF(AZfqpP@0#!GjacrK!LmIIjSa%Ta
+
+&Y8k,M-Q8'+RG$6'1*0fL`&9X'SSC"EJNL(CK%$j3TjVE!h91Q4-SD`!#,jJc3e#
+
+ZLdT'jceSK-34H-$`A5KLYBFj3JqAr!S!TCHRqr``FG!"CG6SpSCjGc*6ld3eTV#
+
+UeGZ'HJRMjD&cbMkVp-ebMbLVR*M@Dh$EMD%K9jAJGmVli*!!F"mYj)hM#U5jD#a
+
+*L')CD(291G9VUf"1UZ1%G%R4M6G1XHSeKG(4J1[EckZ@2TkdAVkJIN$j,ep%+8I
+
+[2DAVk8QjmDEjqZ*G9R0meZU!ffBY*"JhBd"(E`3fBXU[DHqhfBBGqf0d-9,fp%$
+
+4*)c8%Y0dK1j-&HVlJ,MN6(IV,EAJXeYG+*MCjP5PYTD2F'PFliKqQkdZPJRcjGD
+
+)MPUT2ZFlV+H!8d!i''3K-Bk`%@cpKDViPb#JcFGK'p9aPD#Jd@N3N!#CU9HFcLB
+
+Y4)c'@%BpF0emAVPK8`e#H4PePkTJhD5CE`,NIq*#YjRFfXVl(-S4MSRQ3SQfYka
+
+@2Sf1,GqYlh6PE[9R15I0jfXaXH2mH5G[j$P5p[H8Jh*9h%89Q8'j!E6Kr"30%TP
+
+)j*T2p$PfdZer8&!N#"CS#BlUkrm!$3TRFQ&`D'PMFbjMEh9bBf9M4LPPER0P!*!
+
+*p1m!N!m9KKF!&EfT!"8`1J#3"&4&@&4$9dP&!!#kBG1BZQ(6YJ#3"UGR!*!'*Md
+
+!!0mV!*!'EPX16PIbP#!$cpf%rpTEIR*l2eS,lD)9)dIc)[4VdBj&9S,[lH@hTQe
+
+mccaj"JRkd3V8CGqJXd'Ahb`RQfhY1KIq#bHE`8ei+eNSSDVR),[&Z4PRcZ'r@ZL
+
+fkRkjIEDX[Y0I)kJ&jU'c&e5k$FqqhR1r3RAmbed0@Vh3Vp8l6[lUV,0miF++8qS
+
+jREVRE(XeVpPT1d'92ppUqRHmX1ehH[6LUY[`Ud(Bp&h9KfTVYqkhR9BBS1mp"jq
+
+USHFjlD$DfAG$lj,6#lT1f@dkS9Iafjh3,h8lRZ0h(,GC@3a#!XQ[pN`cH0KY9Vb
+
+3!,[[H1'HJH,6c9[1Tel6#pf'Fl0ED[KPCm-[HmffjlMSRekdkei&3*TQU1`e3Q0
+
+(d(#Z"HM1lIK"mj,MqAJI1Sa[d(61k8DPUi)6K+D6[0XK)%-RD&(a@D$AFaSZ!0,
+
+ech+YBe*Bl#Z1hq3qkd%,%0I4'8$IpaX0Tq3jhECAl6B+TJp8G2llqZl[YflY1QZ
+
+ERc[r[EDp[EDjqrNP91c8!lcflRLU(hq[eI$4(S!1h5BceV4aBhhlkZp4Gqh+pBh
+
+VZjm$@ZIDpGh0pCdGjpV@YV2Qh&cEhVeqpGE'fVCcmpEfcDfGpE11X`2US$26a5N
+
+&)3ZJ-KK@m6UZhfMhkI!j4+!0Z"S9TqlHm5!'C3r+8R&FT``YHX*adiRE#*Se"Km
+
+9,FFZ1Al9D3DGJV-IqK#B6M"N[qR"UN$"ZGiXRbdilhp`hVRKYY[1fKd3rkUl9`V
+
+p5JfIEU`j5qH@9bi8R&XlD`3UrLh1c2c1VeDm+TLjZA)1(j[P4VIL14rYqme+X0m
+
+q@lmmmcZ[#@&c&ZG8%DNUKFk3!&#IVCqC`A2(XFpUMD$NJMce-hK@Kkb92*!!Hbm
+
+JTP5l)HX9'Qa50lEV2EG6TjBe+RYZ1@S9AdP(UG[IHG"[-,6U0le+RR'CM5S"[C9
+
+cRA'TBR(lMlYALm@SfNI9'X0XURrG1HVcS+KS%EGkB0a,9Xi[lF@9m$PU#d*JRcD
+
+*q9%AQR$iS,4K[al!rj6mQP2[eU!**!BT$bhKQ$e$`*ehhR(H5KP$,EB$B&TV-`r
+
+9DbK1afd81f"T`bZ@JNiRf#[ZZ3G1IL&r`chiI2(F,'"9#$kXQ,d3E'G),MUpPXH
+
+H+,*jGr##M36j,*J)U'X39U!C%6`EecIArr#jmB,,jZ'0VFrLKj!!-eealFVkKR@
+
+2+qEKc[VZcIA0ckl[U)I[p4rHf2TNR4qHlcqmZV8"Vi'rprX2Gklr89AmS2r`jYV
+
+Zl[VfTZ0mD"jHZlkaXEjpkkDJFX%mA0ZqQK0XPjJTQeZlkaHeKh'UIJ-Xb@Xe,*2
+
+r*+98iM*,MSLN*hTXP'Gf"Nf4`I%1A(JX46rZUGXXNiYSkfE#3)M)mN-Y`jZfZhX
+
+Sk4h!!Cj9mL1)EH&r[Zerl3A9[0rXN!!qb-[GrF$*RjY$JHK0RH3V[j+qZJ*adce
+
+FfpMD[(8$ECMA`XELcEAVQlZjTHcGq[EDcRV1DS&qYlhqfISfATkEQ3%`-+`J3K0
+
+DeI+Dm1ZHXjTfGQPQKTi95CZFFMF--8)S5U&pb"4pZM5Mi0(UGS#h5fHA#[TlVrq
+
+plVN95+akCBSI&0YP&kaDGCDT9LrqI'RQbYE@a[VDTQi"KK0@DGAChEkeEMVBGjY
+
+0ehD[2N[cYJ-Bkf*3K36$+,Eaq0VDaJjkZ"2i&DIYG9T"ZeMU0EYl*5m8fK8FS4r
+
+)3*b"E"GE`+E6!4#0S%-GiQQjlSDLchrkG,Y)b[F&X,Rq"m*'[5[#,AN-d+8C%!k
+
+IU`(NbDm4rG##aLMd-'PTeiXY!c&8lmdIP+N5`(4l6UX+aZEPid%"PT1rp'DG[j!
+
+!&1V[(@q2HZGL"i8H)8q[BD2br23MCfN@+)'0'&$J`Ac[%KH)RPbDqHZ-CQBCR22
+
+#-0#-FM"Q8Ih#li,K5rbR@L"Djj[1C@I*qGLT0J)84E@,$UB+$A`"&+V+BVmZBB2
+
+DUmi#k$l,E6$[,5bSVN"4P+`93p+!%56cM!!`2NXBS*rck"qrT(I9+6qIRFP*EhR
+
+9e@`+8rqaKP2Km"ZP@E%USEZ[I@EGDl3J@[31$I,cFYdVIe8m+0Ba%C`mE!6lqPh
+
+@N!"k++cS0YYq$8kC()-6VN*IDr5M4$q#4U9B$KT"Z%ULaPmL`AJVeQbY'SSH0Dq
+
+MP64[5KHFGqKr$Ip,%H2#eG8PXZ`eq9h#E`)RelF%S(`11Nk+U[V*Ii!Z"P@@9@0
+
+r9D)h**%d$UrTBRV(aUmD0-#@0Xp"i4M2U),XJXiiAVAUP6[N!69HHH0q,Q[AdJP
+
+D2!9BX%k)*V8dLCKKJjY2(CDe@,-adMeR!3,9,X-d0U8&CpjC*T32NF`P-K!r)2T
+
+(l1Lap)dlXf4*XIeS10*!aGrJ[3[#0!"ila,(`M[S*AiMlG#6SHM3Ue4hM#`HeS3
+
+%`33FbE5SENbf!bXN21#I$L!PD-!bBYq[B26kJ'UQEX64Z+iLdJ"Aic)QX"S0DAK
+
+9KHT[#R+-cQ08MpLJ8Ee[Z34Eiq[EQ)CAP,'RGf)c3`r$&TQ!L,Q"S@,NBFIjGkr
+
+J+),MJIU!&q3Gm*eq`Q[63(-j"hHbIJGc`4YZf+k66lQ"N3G09M!hjJrrj6DkHdh
+
+r,#BT(DpF2qY9ZTHe4a'RAmDm)mDNi,6pC[)LJDrL06UBX@"``"m)#MA!4!N&IqL
+
+e-*!!KpFT%P&8mIiMBBpS*QK#,-QrB`JMM'XeA%"a%)6mA$m#[Hl!JQ@Dbhc0DlE
+
+U9dT!p$2aj"CEY,(3RdV01aI8h)"*YX3P&6e46-m-V0$SZG@FRY(P`5JBI[QB6lT
+
+9[Fh196b-H#ZcXh1kGlG"%bPb8(TbS*4Jf$,FNCk0fCC"fIqdV+LKC'FD!0!,Vi!
+
+@KCX'J26,RT8A)cRp#HHijDc9YNp140`H+I92U$lV8-80f*cf"4`Y2`&-4,+[p#M
+
+p"!R0)(%#U*N4CY$AQ)N+!A%4D#,Ma!$ASbBHk[1#aZPE@48`RUYKfYDTL'N%E&m
+
+rD-q%"@q8jRirfXe&jJFZNh)SD*2C!qX(#dGIdIFPmj3CF25@bTUAA%LE8+S!9kJ
+
+ppd%4L6"+hXdE4b`[HrVPJP"BmaRCKX-'a$!2kc0GT2a*rmD"$aX3XNmr3'!+!!1
+
+H3@L04-6c2TNcfYZ2,pJm&B"0da)%B3S!Qd3qeD#Kh8&ZmR#i83R3+,%))Tc-3q+
+
+(8`4L!KKB)bCCdI-UNfI4JC1f@qAT$+'8j!6S3C&)S9i"IAT!4%mHB#,6,e!CpD(
+
+'SR%GLMFP$eSZXJ")6'5e+@2EV18jC$0AS+&CmY`0brfdcMpqQ`3%XeQDF9`6M)P
+
+b%HNmedaD9KehmR"98MITXm,+qc5Z%0+RhB(eQa5eQd-1b3[p-Z#YjG8,I'PV6-`
+
+,m[aZQ1Hh"@IZMYZ3!2`&[Y$EjTeLNe0F34%Gd5HU*Eh[ebR-PZG5UmkYc5YEYcB
+
+rSB3&8RE&hGp[Eb%Eq5Q29c&8dfd@(14j-0HY"INVDjm82eREA5Xie"1Db[84`BZ
+
+R1+MjHp`MUUBj'[A!X+1KU'TSN!$bJPN3M5k&R"%[BRCC('JiR8&2M`J[bX%a$-3
+
+9j1-3!++D,VV4UST3#p4*X-Ua[6)em"BC)0Hm9J#k#3-%Db&LJMFjR@NJF#mm`9X
+
+RqM$G9f'(&q+1kR&TjX[2PEZYAqT5K2Y9jF5FDFYKN`6M8IV)Kr60(IQQSdUTYf6
+
+a0jP*2B@+hp&85Gj*`1mS2DN$(a1ID4%GC5!`5U!d!4)1"mY)IH,r`6Rma[qQYeq
+
+*3h`k58R[`pijX)FBKd4Gkk+0j9(0YlMSV%29kB'f%-r(r[Jl@%B"1`&!CNpkk%8
+
+2iIrY``Sak,Z"F@914RfDQ85elqE"P6QCl88bRJF-L#@5Gm1Abjb%T,rP@HHEEaa
+
+k6DP+pCVMLqSaQ#+C90X)*EY8+FU[$4UK0rTefJM"U&Pd$Yp!*Fa+494kp!)F`NK
+
+8j#3C'qRjjF%b6+cqf%0E89#%DQNe-h#TQ&'R(R*dhdB-6B&KbYR'R#836@LDE!N
+
+`C(3*CP)51#)p'$S"LH)ieBEIi[`idVlBG8'$XC`GS4MES`5*#@,k1DHY,V2%G%E
+
+2,0#$p"0[Aq#[hh`cNmY65jH03[(B&6$5Uir-+c@aid!9Y@V,B3c'eI$)9Y1jL54
+
+GCFf#N!$E"ZbXAk#RB,NKMYCYmS&$5MKN(,AcC"J(H&QQ3)@!IIbFi4P0)0AJ-T8
+
+5VM1%8QI2T%!Y`("6q`ZmqDXJ3q6S%bCU,m)&Mc08%Ze)#CEL%[()jLSI)N-N(c$
+
+rN!!bp2SZBf6bqi`b*SAiK$1'c3V1%pS)(CibKaKf6"Z*fMj!4YP&&5+8-80Pi%-
+
+KIGT2$VV)@Z"a`lml`0MKhr9jr2$h$L)lmQqIT-,`Bjq8fZM)-k8fQQ9Qj*41Cd%
+
+1F*B[",Gm)Y6e+i#[Af'h5c+#k2PU`*!!MKCkIYpCCND%-HljC0EKcH"N)9q,9'B
+
+"))"RFbBrUR`,mU2U+EldN!$icD((f0ljK,Y55ArXaIbK&p2Df)mUL(+MT&E&K%l
+
+2E8mNT-1B!l'$UdbXU!lL%M`jd55XU3&2Q"d*+aD3!+U0@)1fe-349HIBG'X2cdm
+
+dHYBNMUaSE%CbCMDpHfYlGf1pL"9EaDeV44i`lK5FcHXETLFb!pNX8JhQqpS6$41
+
+R*NK2iZF5j5&43@0pjH&K#ce0bNir%"jPXRr3RB&hR&iJ2%-q6"h3R8K!RmN1Gr4
+
+2l6(Mk(mVcm&%H3l!,U-krIN'NqT!LBkQcD+4(aBGI%a)aP@4C'60iG,'[&[0`E[
+
+aR#S@RA5`BkG)`(!i!,J[1@M,S+-$ADrQ,6pS$JL8d3'-%D[i,mQCc$Cq-$UUUBL
+
+!XB3[`+0D%LDZFTlmK4"489SeN!#DZSr6caF6e488TJ64q)9RL+)S8`YF3q*AKe1
+
+q)r1J14605P3pB4cH6N[`$qRSGCU!pU5caaq&ah3UY&$6NLN$fT2)ij33&c'eKmb
+
+RAN)bKcUGpL*f+$CK5N(XN!#)p5Kf5$8'X8-0S8l'2FjCPYcb9p0"!&ri'q+dP%U
+
+bJX1Fm55)1&VY0Pc'TTBAaQZAl'Mr-*!!H)T4(6XUIX3SJkJ2aJ!b566q,dEF4@Z
+
+%Mp4-Q[hBf3flhUDl"b$JG+jKADem6A[bN!!SirMIBdhk4B8'M(LS5PQmrC&%C38
+
+(H[9pB2j%6Zk*ai""!fCLKETAC&3iPjlfRK$bMXHXdL&Afe("dIX8Z)rJ+rX!i85
+
+2(H,$h$j'-[36iaMkZB)#-'`bRj@JrX4%8$2)q+!B4r[m0Ya['mPb8JTk8+j`Qa`
+
+%dNAb$!T8+&qZC-mGUQMHX3+3!(@N4CbQQ,`aVTl`1iVj#m`Q68BB(jI56@Yc,13
+
+43YaYci+PQk6DM!P3MIBDF1r*%r5C&mTb`$8@2a92JrT4DDY`H)E4"m@I8*blaBj
+
+b@a9$Y(&92)ZUjXK"-3F(6DmFPXFc+Jq%&HQLM3`&CKp64KjTb[0,MPh'C&*&)ZT
+
+cQ48Z)iUSA)-G&IaVrm06KBDUBP[+dDB,94B,q42PC5$)BKEBY-AGd"TIN!#Qq'Y
+
+Ah0#`VE"@'[8LK$PYK%"+*V5GJ!akZaq84a*H[L!2,eqU)@BlpL&r0ZYkjG%HZ)I
+
+GJ+M53H5@AhCSdU9U,dV8A*D6d14)GE%S%I)Srh&!`SMD%+3HIq*@@6M3%$f09d$
+
+`rNp8`*,F#dZ`"KGSqDUH9&'9298&1hCk&,bK$l3bbh6JGP`iVpP&&@Z2C*Zh3Kl
+
+J'!1pKGLPkI#(Y0MCf%!S%MeI`&[CrBC(3N@mS3$la`jAQhF"cRMVK0SZB&fLd2*
+
+iemS"L65m@BpqShI4-Ea!V@3X"#l''AFPLC%D4FSimH6FU994JPBhE3`5hU!3cpH
+
+0HH#kl"i!"(DX%cQ0hCE(&j9PkGYfpCJE69[L[Zqf*)m2@e+2)eS16(DUJX3CXb@
+
+Fa%apkHN0!)p02P6ra1#AXFepi2,YBQVGY4E,fGN#A226NNC'89,jiA4k8`ka5ll
+
+q25iDK!)@#3aIkhl(lGB$c)q'[4lYlC!!M6[*dR20B9kL(Rdm@5YbZ0IpU0LB[QT
+
+CV0%"fSLUa[)83$-D1KRaP4ZH'i)20'1hFQUVcq6XLT0XU8Q8iiYHpA(-(A%R0ea
+
+h4NRQH%%BI8rRR8-qf2fRHK'm2'ca'YRL3GkmLl)`DFpTaGkpLLNU`lAdrE%Tqd(
+
+3J!bKBBS1NfFE1DL`$SG6%5Q"ch'&,'@18XR4!DBcD&fr-eiK4J8rN!!Lr'"34Hh
+
+Z4C9P`XhZJH8R8TKAMdhfiPJaCA&4a"PTUK8XXIF2h3Pemk!22@qiVj1Leq9JEbp
+
+S3K"0+,Q$TV$feXi+j-&J@X$QSD*@fI%A-Pdm1j!!*@c*iPmp`D5B5d[*BQ3H6Jb
+
+XlT*d9B""*XD-)[4lePh"#Hr04#)Ap@YD'5h!"Vr0mq%LDGU+3M-&dfbfLph@Rb`
+
+cPfRi)206pCTPMcpL2UH4NXR)m`#1#9(GM404ChP$!X#8f"!lG)dCQhQB00B898Q
+
+0Ye8168@BArU,9N5CJaT-SXTDUQM%T*i5Uk@F(6,T8b6DImjr2BX"`pHcFrJ[V1P
+
+[MQVr'EU'3NBkH(+%'C!!I50MTF'#%JYbUQ8aPT'Q*!p9r&bTJ6`FQ$r05$9rLQG
+
+GGfhLiCUYHa!NBIJ%M8IE0C6DhGZa-8c(!FE8racQ+rVfShmMa42c-6%*QD8Ip'j
+
+-pXrl4$+R0"5kZrJQi3iCqkQ2-[&+,0@`VdIfD0S"mNBf1AZVjSB5i2JiAQ0!Bl[
+
+r'4iHM3kMcY8)85D@`mjlJmjIcKL2*S`rXGfQU`l(KR&+CcLi26@qLB$Sq5dQH9'
+
+ZjANQcqXFp*k2SL1edB2MI[j,$j[e%$Pq,NN4Q-V6JA3+Uh5[k2Gh2"r!q3V'9a!
+
+T[rd5S"1q$AJf*Y,h!!'C(aK%jR-%d-L[(CrU%JA*6Zq+b'k%L)pLL-%DY*+0B,+
+
+l(*jh-Tc8C"G`*(GFh1YN00E*lXdiEZEeN!$haEKE*kYTL$5LXeTqV-LZ&)9G1pB
+
+,`X-)PPL!6#[EeDdke)Fjkq'a&TMCe8qBUBf$[fL3!&P@q,TahEQU419(hEGa095
+
+jRJl6Q10P&`-DVAiAGB0J$HGXk8H4AV1"j&U'(BI&q,QYCM%pkShI@mFAN4pAB6f
+
+R%Fd5ZGU*b*!!f8K@H+[aS"bM%`rj[k$"P0aCa,%Fqj4N%!F)[9a&l*Dm#%!cbkE
+
+ph"h[S&2U9[qdXV5%#hLBRr8JT01*[!f[@52GPd!(4I68CZp@*k6*PkUXVmD`caX
+
+iPQV9382UDE2#MkYd@Fd'%*MG[,@a86McGZY-)8UD8U@jBC2[hPjkPk*6EfBc"NQ
+
+dJpD!$ZlLBHM`1VV9+PHQ*PSZMI%%!ed)3`RGK&dFRe1dXVfSRAMpbR(K$*TKA2f
+
+%bal-Ur1ARD[EkqZEaGhe2q`@(2QiFa2(K*Q[em#Z[fV,)h)H93@GY8J$SH1m"$e
+
+1NMUR$6ebkVL(l+44I[fN8mEiL8[V0LM$GGJT2Al5+0(R#D4FqD'rLGUcpLBLcU%
+
+,XDbdcLAQ`'(9L'0C@8,db#!CZSaG$k)iY*ESG%&#XP[baB)%e&3aS!IKI[J!MXr
+
+TDia-RLMYKTCre04NpIYqU("49Fl`iE64Ya(!-8Bm+NRML1-bFL[01"5)jrU`JQ-
+
+-D$j+2I(C,&*Yd!5[P"Tf-,c*TCrkZKICK!FCbd%F*5-Y3%a%2LmXr04N#lI%4,[
+
+cECq2$q$5#"2ib5CUQdk6eLe&L)&p!($jA(XX!DF!m!eI&J$Zi!d#)Hl*#rq"JDa
+
+pY5K)&fp`Z1paXR5Jp6N*,lAl)"GYh3Hch*L9K%H("CP6@8%"rE#N%1!S5T!!@C&
+
+X8`ZY0j(Y"(BhbhI$L26+T'MTLTNAQ&$NkfQ!4A&XJDB9i"KjTJ'5[d#RcmRUEfK
+
+3Rq9DXcjXI+&%R2E3@alLA%31"4fU6b-6C&Y)C`3`HNA3Fe)`aTdMI,VQC84@'BS
+
+4%a5P"6NTb!Nm(JI(ThITRXf8ke%CR6PjdNkd2iA`(S6#'&d,jZ!)YYRa@@a56SA
+
+-l[QcHk49R"acpZ3QX6%E&IRLNm0L%UZ-6R*jQ&k%%QA`"lil9,c+R9TcY+9+j%l
+
+l+%@fhA*&VjH)XVrU4K)&RaTp9MRP6Xa1k-!@S2fR&4R!dK2Cf&MP-aVcl`ci5TF
+
+rQB2e#Jif%D%eFf%%&'re3jcL5'[p"TAaE(kHk4@c#l[jhK%8PVk`hjDMEqHq),`
+
+&%2@QMm*+K),0k*R,@RjP!MCD%R"YJ4FR0P6blkJRTc6J[9KFj+8!*PfQ**+RKMS
+
++K2XN5'`#-)cB&C%VjYDK3cdD4ShPpV[JfiP69EGCaA*Vr)Z"e4jVPGD*PcSP`Ie
+
+I$H,4,-`%Zm`V`AUbc8Jb4[QhiNeE[2SbSBAHKA5d,1Q(&!,aK*U04h4k%8ab2Fe
+
+GGRa,Mj0e*C2BiA5!b1(r$f,BUa&rAS($Ij-`+hUc*bMq[!YRh*Y1qce-E8L#4*q
+
+U1C16L,Rf1B#NLK06QrNc3YHcZ(Rd61&-H#CHIBBkY-i0ShTPID[P4S$aRl)5ZC-
+
+ZpVN,pXq$&Q,r+03cAN@3!,D@+5dRE(TF,J%*9YLX(l1(TMh4qEd!elB1BlhaEDI
+
+p@cpY3fVMRVf,kAK'cdhL"+ai58rkYKICHS%[bKPdN8DF4#')HHUe[5r4"L(55H[
+
+G6!5+RhJm(2!dPqjcEY(X&AHiG%0e3Uh0ZC*-(!Nl(pKbQL-q&ACU0a&@H2G%9-h
+
+i4)XV#Pc8Ur"B($4@54Xi0HC"'bKJfZ$eZK`dB$Kiq5lcTXq'ar&FG4GH%&fK"%R
+
+S0M&5NDmZ(6SMhl$Sc1r#iXFAe@&%&'m6L,BSf%9`k)(N8cqNa4Cf[b6C[m(HlQ3
+
+IQ5`NN!#[-JU+Uf1Zc8GRd[a6RjqCe13L`dYaiYI$Hh&SfN*ZYGh"4EeLpH,V0U1
+
+03aT#hQK'&p!!m,Q9Xm[[,CqrF1lpmqmYm[Uhf6R&(eP64UI@2+S6,hXkQ"qFUp,
+
+6YfZ+2BBYi11f2"H53%XbX"'LYSG3+Cf'#S*M+3XGp&Y4Ch4JLcQ1kic'1h5YU2r
+
+4+Y2rNVrUcq-"SFSe9(Z`3@AR!2[eG'Qbd-maPfS[N!#ADS10(83#f[BcVpFKi!q
+
+GS#Ik*DHY$6K"aklL"Z"pR!&-l'KMc4JZB88pZSq9cV+9diGa5#[ZS&6,Zh(!R`S
+
+QUbQ"3%aj-EFbch)fq`JqMI6ILNj@QL@)$`A(#"30[P6)##*K8dd,Y)Yqf"0e4!l
+
+#&SU8,PBGTCbTlLLp6)f&PF9BN!"M9dF'ib54)8GYQZpd)e%Nd8bHp"M&L'Qf52+
+
+pNmSmlCH-2LZCb`j%6&jN2X3B!k'$-'CN&ib*P1`lQ8ZM*l*YpR$2XHbA(ER6qa1
+
+RiHjMXrj9lldN%Nef([2beHMq+5N8lcUQ%X-@cDjBD9'aFY)MVh'e2CT+FC08ip[
+
+4f3cG+d3k``S1p`+T9Uq4D#BY**kCjGLLM[(kkZ(UE)jG%&9$Yd4hmY*STH5K0Gj
+
+6d+0`H"2('P1rQ)k`Bj**[QT@QC!!E)-9,jUbTM2(fk@XcH5@b90ek@TVkLKSG(N
+
+`!!*J-)+*U")0K$5J9UKGG8[XRA!BRf,3iVNPAR")REb(Dep46Dhp8J9PhCdZc`I
+
+TjPMSP'GUH)XLK)c&PeeF5)XcDdTH$DB)VV(UKfhFH"Pl5AhLYBcm&$j6"ic[5f-
+
+6j5K(,LGb6NG1*fPJC#5P!RNAQBV`1%623EL+h8!RBilqrQhU3JBX[rC3`(K('+T
+
+9*a+kk3"8H@!)iq+CG+C@+"X2MmrdNNHT'"i[Ur`4hrj'YQ36U(Lb$H3&S'iBKq`
+
+(i9I1!JklkMDEQ)c8HEMaM!MIT6Kq1i82L1eL4%(X9hFqkdZHkEjbMh5CERc@4eD
+
+6,+1+ZX(DEa)Sp0JFCkefHl#ESAFBG[5S*#8D9AHBBk[UZ,ImHZIG0RA3p$bkhKV
+
+Q"1XKi*!!d&V$rdVYFERKPQ(c!ScJpR%0Z(U$bA)RZYUG@KJ!3*GKNcRQ+#[1,JF
+
+He+9b)-#5Z08%"&X-S@PEp3LbQRj8+F)3['MLM20ff`eT*b5D)baSF%mY+#JLPQ!
+
+R4CAZHJq`Ea114ee!VJkL2MN`-%fIfq%(ABm4EbAjb-R,0FhBpiF&)$,QMUi6h"1
+
+*NX8jdYJFVj'GSr[*U"Zki$"ZDajmS#"(GS@PhK[bU$`1Z4k9eb1e`@)92[&k!*`
+
+jUc#DqlpDik,1rMCR-fN@M$EfT5FE2QL@RLAJBH%mJfH*Q5!"8[*c),)U"iIV-8C
+
+5a9$J,TbUpNXicF'*2e2(R$Pq#!HY'UFbI'dLleC3EZPd@dkIDrVka6IS8"$G*)(
+
+dSHdcZERmTeHr968#6DeD8N%@e(dZKh&KYC,QT4)1J[XM`QJ*''lZl6-SZK6b$BA
+
+i+R@dqahfFVhd%,VpB)+8[@$b$9$NERl!5IDRrBfG0Ppj`XX4[-NpPQm3PR2Id6Y
+
+(K+2miMZ(!JbS14`mdYcj$`qC'&q)LCQ3!,UVf*ceVD,!DNVh2fD,,UBrGJX%&[N
+
+&NcYQii$Qe4M&$")a)C8T)J,!p&ap43)iYNbMlZETb#DZ4Affrk3qhF0MRJiB3SY
+
+86aCH$DL8MmVJ&hh'q6B)X6Vr6lj0H2DIN!$6Mc'RAi3(9q1c2NSRTa+*5qY*)N8
+
+GRT8mKeh98TB6%mq+VYLLCTElY1jlYUk-9*q9a4aEPk88al1DldFeDCciY1B(#4G
+
+i#I66XKp'V4,,4`TeB3i&KLPf'4C0GKN0$UGr'"4YBJcmY*PSjIPa!&$0cl$04-h
+
+6%Xm8Tq4)pp3([A"GEm,8ac9P#rR*bVKY+N`r*B0cpp,X109Ad9N0ZZGAlGqZj(@
+
+ZQ22UEqPAR)UGc6U)pi#abimIC1GIme8iKMJDrF@jA(UR3Ar!RD0KFA`B[161K#j
+
+CjP$BNk80K8bM%)Pq,Ac)SLcdrZ33R*-EYC-EEk-$$VlR@l*'6KM&$hQQ+breU13
+
+rpba3$kIR3,aHH2VcpUaNIC%1k0+4p[(VaqGmfj!!22EXApQLQ,b'$qJ0MfFS$+p
+
+MX+PX,Xd+#`4CBLA1&1ekd+Vm8@*NY-6&H6pcZLGhP"`Jhhr-F4'ph%rl@,'`CX-
+
+rVkE+Uh'[fLkJN4S0Ij*C%CVM@Y6h[9Sd)q*DKpF2ci[hk&pQYf!3c*P@l)`[9m*
+
+#NkpN(B'#8-E$8`iJ2,T"HAS!K$`()J3G,%JL$b06Th6dFi)R(F%e23!Q-lp*K82
+
+2SiiQ1Q08c6aFF91V,3hCXpk@H5`Aim"Mm*1fb!e3ApNSfr6*mr,KB$[4!A1UG&E
+
+fJAj%Ze9TKGI!V6b9P1I+%)fF8aDP2ZF*B&R20(NqkCKQafR$bMTp5`aE8Rc9)cE
+
+mN`ibpNhab5DrfG#hVbidm"hhU"FCLk1)pL3rebG-#&9T54BH6Uf5-D'qX)%63[H
+
+Vk3RKUiTk22LUSKi-[UUSCi+[+ZU*i+Z+HKliUU)H"8B9P9@*@#bc3-YMIE[DNeZ
+
+lqi1GC#lfrD"'V`e)PZ-kIdN@$TY00A([CJf!cY-29J(SSGlK&4Yk3(Mh6Z`'9@R
+
+jjI''8ldd5#BT#'(kCCiSPSK1-R,%+!Q$r$,2[j@$4EeF3Jj&JfqqdGrpdKjL#eJ
+
+Y$#fAR3-0ALHN[U%EjB64KhT(S'#l8)R@#pRe1[a@l3L5e6,4STr*mKMHA+3AIe0
+
+qNjGL,9aZ&S25PhB9PPU6TKB*k59%mH6'EL*5cLcD4%4Xi$dSYKTH8G[U#C933b'
+
+Za)YM!%`1r%%0D4C,GY#3!#+@DNZY9&,(!q%&(A9#&C%&NIVfH$Y#&hY,YlHfeIC
+
+!ALkNZ)ZI)HmB1R10)1J%b(RkY62+R19`C3cY6a)UiF&JP5![99)))j5R'!pSSE$
+
+U'ekA5(Gi#eZdRM0L83NjMmQ5[(lhJc"[XXp3lj%2h-S8!Z'D6U"Ei9LhH'II#pN
+
+DEQ4i*'5$0BHLCGcd5bR,mTad&K@%Cj!!mC5-VG+KBaP5"ca0G+MNmKD*2D`3NcP
+
+"GP[38*dbFB,kr#Dqc)kIY(H-9lB%pB3DVlNa*8#Q43KHUR'fEpFX(q8&JJpbq-0
+
+9T+ffRReURGE+D@)I(,R6aalSMBQmpfZZKFbEb4ZAkkZVlqEIC8l5TeRlkIEYGfH
+
+"TMVfJ&SmFrXfVkG,hVaG2N20$rH%eNTF*S+)-F('KXQUd-%1@5S3Vc5P`[dPX93
+
+LaH,pXqp9RHJAS-&"h8'hK-e&iHcLqqI2Vj`Rb6#2D[U4V915*mVM4`FPL'eKG+[
+
+q!9B'l0)@QFJmf8b$H"Z[eAjQX*J!9[k`4D2F)5VS5EemiQ3%MSA6qpjMG*J-&TA
+
+)"V*E`Z8mJ-EkT5N')i#"2,cpeXfGKE9+82)@9R$,e2V0R@[diAD6TF3F%b(&GRf
+
+-9bikElI`(V+L&hm193Gr9k("m'JAR3eiJR-hGl!FC[Q5Fc9SpG3+V18,&ciS1*m
+
+e--hCmd2R#JjHUhQ0,kAcV*dV*-c3e#["!3#SQ(q%"%e3iiYll@@UjT[FJ*bGa*R
+
+eZGkXA-@G0,4CiSJ%0i(6YaaBTQJ1a8E+EJ[E(q6MPi(I(%1mH$ASKMif09a!T3C
+
+@beDahN)9kPHUd4"(@M!U6LrM)`X'l9(l+-B$p`R$Q%dU)568)V6ZI46Lm3$L0IR
+
+SC9Ti6%lc1HRUL,LiG3af$Y2cZYUj8T2j`)4!-GE-iAl5*-ZBF!X2SNjb2G*TA%Q
+
+Yd8qb5LB9#-FJ6PXlLMiN'!3r631C1&!I`)IPGCTM6"2,p54Q+FjmP(I)`4[0cr-
+
+A0BkQV8*m$&69"62T&2PZVFilF23#8k&'R)'+3fHrF%&hm#mk$2hV3$Jb4P$*-5R
+
+SR4l1Db(3FDP4SbcacX*jf)C30$Q[0Xp5+6YHS',(BDS*K,M`$-2p[Mj1"i$kem6
+
+9L"Rpb"998*Ck&,JD)5'CPZ2'G1MU09Zc#*2@EULG5(I#(a!d`1kL*c3LZG3M05f
+
+(M%[Xl&iNSc)@MeaI"VU+8"e$EM08d`m3(qL2''D1E)RAj$Tr*m0VFLH"V+'QU+6
+
+9U(SDYIUE'*Q%9EqL#I2%0B8Rp,0[CKAYEMG*ePXB60aZmK"MkjUf[Upb"rm(!!d
+
+'D@jTG#jMBh-ZBfpeFQ0PBdBTC@jcC3#3#Gc4!*!2&CEm!"A6[J!9-$S!N!4849K
+
+83eG*43!!ZQ(6Z,TKdmS!N!CRVJ#3"K@P!!"H+J#3"RX$$NiTH8U3!!(!DB5IkjA
+
+CfHd'2"EP4eEQbGk&dr0DeTjIM(!M+m(hpQk'ci[K"h5`AGK#d)p@S2Um[Qq3!(e
+
+VV3$Ved9ZNqdYr"C1PYH&M"C1&NV@m',9a1l1mL*EC[c2mCaSYER!Q1YhI2k9pIa
+
+@l0S,N!1Y``Biq&RBm2XRJG2T4Ub`8@4VRhjkRc91@05e@FhZf&i8-Vr02apicU%
+
+GK%jd3Lmf,0GTqi(R@%+(N!#mhh9#eJrm6Q$e'$ke!pYQSGq1MUc!IX"1r*Je,Bm
+
+&GXX*Sm"Ta*(0%"E,Dpha!iU1dcl4mBYBl,AXJ+Z2l+#R3['iFX!HfjiG@#lEM4Z
+
+Zdf6E6Y2f3TYCd%m[`UlG3L#9'-)qSQMXb@L`4cl8@C(MH`qBlH"p`(KmIBrG5i4
+
++95[-$j55JK94)!2Qp`PH4241Q'XK3!PrPE2H*S@1I3YCbA9fr6j#h)8b"2h)F9h
+
+@X&NFfZhBA9%k3'4IEqdrU4lXXe,P+IZk9+Z9+[Y2(i!BGAfmYJpYSFITp9d(mK$
+
+S`2*iaLSC1qADaK0`5`qhYVIfRb+dl0(@IU@mYmFH9@ZXa(C,YIfYMB2Y8ShY(Y4
+
+fUh[P9FEfN!!k8+C8M&-3C3'TM!aVfC(PZ1%`(CkL#)3)PpYLAH[34M&SfUJX,@D
+
+a*QV42-H9%X[e[3i22SJkaai`Tmdm2eTK4i'$!K2jCpQ[01JUX-+f[1EU#[[(IrS
+
+(YQ1&)5XG)[%hV&iMF&SGI0STXE[heZjrZX)1pNS892cF@9bmiE4EGKZC@EPr$aq
+
+pTKZhE2ECNH1er+0`YI[jiJhE3f%$#4c(Xj'iPIekqD[5GVe@IVc(eM4eL8VeDRF
+
+TIG&arBD&*-SHI8B&a1Y`EHT0j24XHV%BRI4YLJJJF60#9MJpaf[ll,Y&#RLcD`9
+
+XfE0kpJ2q(DNBS$&`2#[SK0N65"Jpk9R(SbG3jb2,6X5E5R@cc*B,bk5jb!V&"iX
+
+[f@jYDfIrk@lj`H+LH&kMEU1qLba%cLe[ffhpX8D"kq2$KKAD6XG$&@R4jc,+@"-
+
+*[Eb,Z%FYZapeA83e3R'N2r(Xb'NPcr$#3[NNHEl9U[K1k,JRq&TbAIrSX4hYf3T
+
+pi$ALi+6UP9ZFqbKfA862LdMfM[@FDd$"2V6FQ,jYqP%S[QNqP4!mVIK4[HcjFDG
+
+EVrJY"GKa[$LXlb'DT)Krh+F-`0Hpb!ULQ*6qDf`(&+#$d#kjD#8mp"-9j#Kb654
+
+0"A'TIqd(,EE1+P[E5+BNVhL#KppmLiFL`lpE@PjDB@[*cfkYr'MV6hAJUM@UplI
+
+Br4AQpQ,hTBM3GdZh*VKl`&QYPX,GRZ2#Z+&aK[H()@m9*D"R03-I@'J42d-XN!!
+
+*4A2Y&a0LhAkKBBR#fiK*mRZ'(#VX@5F0'ie@2ikbQ1k8RMiXCeL"d0c3MKTY%ac
+
+1b*&Y*`K*Tk&b6!j'dp-$&fNZILkj4-QaSGhT8F2[r-8HCbaP+fH&Ie(d1r0kdh)
+
+1RCDYL*q0i`SLC,LZ(BCp"9bI!qdAXH9UiZGcBLH`U@rAc#r![-YrAJAqK8iB#je
+
+%hrB8$cpR2!R48+mPJ)M)CF%"3G2kIIFN#q*1DD0@c@P%d,bJ1DN@!'5`b+,`LD5
+
+pj)'3!!,4j8hU!NHN`-$5`0F"!@)!l%mP%Q1!M(b-Hr+#r*SV3!-iCIcIp)C0ac&
+
+%3U6!VY-f49``&,*K0Cp2*")Kah8#DN%RY8KcFR4)mY&Nca8RT!ZmbD*,[)e"N8h
+
+#alNK)8-SbId45VhA9AMLB429D)H'f!ieV20ViMQSV00@3%!b*QCD*LbFN5(pB+l
+
+5$c,LmAXN)*Vj8l9bCkQ)1T''-!i`ac3*aKP$j,5J#FJ31LeMCe$6%4%KaDQ@rUG
+
+L*"rm@**%&[f5DP(NHj3hlh+03iC3h6Er!$fK!F-9m%42#TT@e1bqki)j3I-`hj`
+
+%RJJDjpUm$4j(Jb0bB"!f-8bqaNV3!"lCaj5D8c4K8V!IQUN-4fJJ$EHUApBVeAU
+
+TpRK-pEd)-mN-l%8d"6)4NT3F5cVq9hAr""1p59mR)5R8e%3!8PMXQBV)%4Si6B'
+
+,r2ieXH-J6$UZYe618%MK)TK04m%B)UG088)CB8eEG)CefQdE!rfQ#9)fp@h"%G0
+
+`6BQ6%!APRH&eZB(G5'FFII`lYZe-)j430,EAKar$3$PMJ$3j0d,kEG1i%5($QCC
+
+YJ1Z(IBHAYUZ)#)L'mQRXT!!-*lEmXjRYM*!!TYH$I5KYL[$9T3(%9H!*N3'REGH
+
+T3VLfjQ8L`D4J-k5k3(UQ45&#LZZl-ai3'A$1bh$"Y*(K#!dmRYE&BjhSE5VeBaB
+
+QI["ek5P3@lBIifK`K!E#G@Gi)+5if54R--Cj2m-4$)h%&"1@`S(9C$MmN!#-M'Q
+
+m(d6)F*3f2qH@m,q-Uc340-j8%CJFh@%IVCrm0eT1@+j#+LN+fb([a0MkdG(@#H(
+
+)8rSZKk3#STPq4!1Clr1B!*S'*k0TR6K#!k@4a6"(GKIj`,4FTpLZEE9J2jbNTS5
+
+N80i0AVIG40*BZ)DL1)Ki4h8P9h%dfZp0S5"SR*RGR#Ydp-!+TIBdTadpUR,D0Qa
+
+6@@%qTa%L*HB0i6QZ$9YScU2[2c1(2VC6(LbN13kIIb*14fi!f,T'512DZ"EPTVA
+
+R0TqXM(1@#"R16$ebR'XeE10@i)J811d)mhQl#q1V`B'3!1*JKjXNam!a4ep0C4m
+
+#KB[Ub[U4qkISSqRJ15)(4[ke,b`&jA!c&"ZUeHkf5jVZ'9fBK!d-K"`h(iJPP"6
+
+ER,@0R*%51fYhTbU"5)&(GY#FcD`84S0R,6d401lDeLBB'[PMXH1q@e0E"'1!0!A
+
+L&2RF6+L*S(&fVm'R-9G!cKJL6GQ@N!!Ke*6Z8bJCbieY0afhmd8JaQ%Y'#N5M[S
+
+qYeb-@kL%SV#dDF"N-NIN3*2(Cd!6&Bl33,McTd"#C%"P6jK!K`B&@Q#!(5JK'CM
+
+HJ58Q"CYbQIRm[$LT-PG!!4P#TiNfK!jU-KD4l"lXMih[C(k'4aRV,bBb05G(Bqj
+
+d$5C+MShl@1KK1L$0bG&mBFLFc$%D2$9-TM2[Xq8"Xb6U@kiG6D-L)5NdQ$D"(*%
+
+#8EFR9BSMAUjJS4$r5m"kF(T*aC6Gce+JEqbF9!Em)pfFpkGKi8YLXP"+aEr%4HM
+
+q*6MmZaP$*C34eSbM,V#*)qARK%![0kF5*)2f,6'rQe!jCB"&*3VQL53j'CTl'Dl
+
+M+cNC@UkYQ(!*NN(MHH,'DIV0p`a`a!"SqM,"'#"09hD"02fXB'KNENBiaqQfIpE
+
+aCmeqIpUf!T!!`M#&QS`J1%)$T5eLE'lKL"6iRq9,GJe["h4m0e#+JbAVf'MNM"4
+
+*'iU`m'TD&a6R$$fY$kr355RrDfMpTYf+aBD'Gf)6cKPk&UI[dG1LScJCZS9p9kB
+
+AcrBHpH1IU[mdcmrDNKHa(cQ`5BXdH1[9(Dc'#Dc@qq8XK-RfXq$lc!mY'"NbG-b
+
+8A$"5*&T5mQLm3a)M44jGVde*+"TVjJSdpXQGr!%hE&p*P-3d!H5,Aj3Q3[j,,fp
+
+jM0Udjk(2fTKa"Fdl6hS`kp`N*)FL$f(+-Ced#XVK4pK20LF6*F9HcdG(dp(!lU&
+
+V%kNdlKi9*J22VA85NN,lbI+!Gc%5P!`,hpblc48#N4*9H4dl%41+aY)f191+#+'
+
+"aZKk9NhNHU%VKB63A@l`(`'*mblN,%rLY!1*dE,2KTX**F1LK-3$&mU&8%(4h+1
+
+I#eU)RCE'K`&#MTYlL4++aR,6khbUTcNC1[Ei5T8*Pb!D+R@qlDY$Y,QjRcTjm#X
+
+hiKZ9*[[RcTFUjDrq,N"YijM!K`Xjm),f2Pb$"5B$8aj1Q#-MVAlb2fM-!RhUVDG
+
+ScXR3ml@#Skf#q1ikMIGb"5B$pl"Te1%,$LCNbFR3fM&aYAa%FA,d2&5RaS(dc@p
+
+`26+Ii8G6Fr(U`p,'d3#FRNa(4S+4)j1CTk%1aTji-EIc5-J)qMj)SeN'RZK'Ce)
+
+'G+q$9EkdpTDff46i2YrL[b@IR8D[U+9&Ndf,)04TZd$p00IT99)TrXDA'i46'9M
+
+`I&e@*5H,`,A&+D'FBYmRBJ,+i20UN4H+ihcVj592'i2ae@aK)i,'SE24,Ya,IB4
+
+)JEkF!EbGR"-Ljdd03B)a3"Scd$Rbr9i%cG(SkF`h'rL'F)j3KCbYiNK"'[jL1JF
+
+LJXDCHH8VL@BXGa&rfUX)Njf*M+5Nf+N9JJJj$RZi6A3%C!5peNQ8%GEB,FkaI"5
+
+UiV1hApdG!0-T+0c$BZZiQCjUcKRDH*TISH8dp2Z0ZHPQkXJb-a%!0-bHQVQ)N!$
+
+LTMYPmRdbp2&pfG3FMHl1CMXFN3)$hU+-@aU1d-$jjZYd'`ef0jTC#K&5(#d,-Sf
+
+LK'JSpVZEVT3M"N"6A39ML$5e98+'8&0C6k'QNEP)HYkMc!HkQU24f2G['P4#+&l
+
+-0pj2)LSB+A,Hr3K'LVc1D3R48$3SerXV&%D"Mbbqe'r-*),'mH--*TNQ'"UT[#e
+
+[@j(F"d!I6FC`4!idG@B)$#`cCL"#LP-6R(I)iIL'2c#H*F%!-MQ'!BXfdY%46b4
+
+-KUGEm3DXdGLXMCfKe`-[!4V"2ma(%p!T2$Uj$TdLCAJ4c`rU0HT-!*q)[FHRFc(
+
+22X+DeG#IEDe3R(3[Q0A[cYI8+NcUB1V%f*Nq4kHJG01[jhL*rhXFE-h4Ne%K33Q
+
+@2bmAAq*3"RN(a9%,[BBA-[iIGY[Mj)[`QmV"6[hVDQecleYeRJ5YT!UmHVmJ2P1
+
+Ei6IqA*6(0BK(`L5%LaX%V*!!314P&$M+`,8kpETm9K!ia,*FfbP9bT9p#3TSS4L
+
+G3d,2F5[&iZ+Klp"4)%j8S#q*D+KN$Y6HcDkXF-J$+kk"`1%3I9TaSVif2A8R"!%
+
+IE@d$f1k,Vr`#$2,Z0H,f0fYhlb,dq3dEa(MbCINTiY,jdMj"$SS2k([%KrY#"d8
+
+&Dq[UhHGZ6`H(Ub0PplJbHS,1%0G2i-)2IUm(BI%HK5i&,Y[H)F+6C600p*'k0Si
+
+Q@FFY'c#b#"j[0V+('0+*Pl4aD86N$fPcBaeCCJH(GKec[HGdQ3Bpp0d@6MRa1L'
+
+!mT!!#ha"4D6p,iAGJmV$kN&P%l!N3jk8[LVAph"fb@Ce4q5k-1-9#JKVN8l`+"6
+
+S[hV%PSZ9JqhY)Z!hD,'ETKN@c`!TeflfF&m,44!hP45FpEZiEH5cYA[rM(p[h5S
+
+Z,Y$l1Yq6pBe$"f!i)U`CM51SUcKRmN#%IE[T@'kG@e8KJh4`4X1'XHD@P#6,6jD
+
+JG+X)I$Yif)'cb6XX,'eA(eHhYaiZbH`L$a&5ckEXbK"2bYZl#8-iSP*!HA0V[eU
+
+MjkG&#Hk-!Sk5UF,(JLT82Lj3PDT[9cG`53QXI%qf+Z89YT5FH-)EN!$&"E'ZK%#
+
+eFQPcKAdLUeU4VDqcFUe@VGAh$MBfF2i+9GZ&8ifU##iGE$`863e%,C`TZ[GDdD[
+
+)UBT+UVD45%QdASIVrQYa#fN"ARZ`Z("RHH%U,HPJP38HBd9"Qd#PKiXKkD)dVk0
+
+k3di@2(kLb&GdqSL+(daJ5Y`+em&$Z,$!2j%8"&!)HK-r'A%GY"iG6G%X5#V&3#*
+
+3fC[pNb4`A"er6QpIiRrm)[T[DXiSrLRRp`%bJ*Hdhe)JLpPjq'AJ&H90k%p,k8A
+
+F%mMr"9f@kGp#VQ,eIE`&iP@`&a#A$9ThMf!N-5''40#rCi4l4-$VXjGVXKGjUEU
+
+-Me4CrH36NM*X16B1DM9dmI@$[A,Y[11J@2eZIX14'MYI&8PGTS4$@R"Iej-XVD9
+
+r@r0'HDJ5BZR22MB@C0-B18T%@J60EU$bJNq,EYkj+B1R43RH30Jl$FqHNBKAmjd
+
+,48KJ,-6M&@Dc[,G4fhTBAYrBfGaEhDaZd+")[IkAkPFiEQUGrPfYmDFmbaM0hdL
+
+&5(S+#ppee+BUJ0+L4(fmZK`qHkDNVD5a[*e%82a2UQPN15SSYbLe98%"3*86'50
+
+k3jpIKd*'8!3LLH2['X6K94AkHeEr-DN-15Y6mdAkp0BDqk-1)Q(*V0abXRjL[lb
+
+M"S88'%9)SU+4dZNX@%GG9%&@%)Fa1GqZNPl9E+YAbHP5*'H`#3468LjC6YL6H6#
+
+(m)bMHR+TjE0eYPrDfTj+)3DZlGV*eCc,qB6pqapi6e-BA6$%Alj@"`L8X6[,',B
+
+hh99fqcE[adMS*A#V!QfmBT!!F4rAJ`91J60@j(94D8a56$[f,M#p&0&UZp%T3jk
+
+@P@*`@GBT49kEP9'F-lhbFLeHfQ6*SDfpGIKh)kH*I`-Hi8%Y!%aB*$J+kb0J#QJ
+
+#3SqK,@&`fAk6"'Jc"m!V)S%)3AP,lmPK*f,$de@8#T&XThB3VQ#h9YfJUE@S++m
+
+CU9pN!G2lE%bPlqC50K4i9Lj#[e4B)QF"Ee,ek9dcDP&4p39E-qMY)C4IZM@RDLc
+
+[rQI!,a3[ZiYV`Raf9kF"2c0X4X6aBF!SDRD6f)a0HCc!P!*aaYL-M6-TJ&(8iFe
+
+M-ca[+$9[S%-I5ID$$Xe61Y+6bQBDb*,M#CELTdHBcIM8dakK(84p9(apSYN-6fF
+
+q#*5LCrHHcIM#"JYh-f"D`HK'XlQ-d,B5SYK@VDSNF$-m2G,CPabM"LcjpUMh(V-
+
+j#[!9Q-'N!RA#@Y,rd*B4mV!&"591e3cDq6Z[&%44%C*AVFfSq%iFaFA1S6SZ$X4
+
+k-r,Q*H(PKMBG[1'4EHF8MNQQ+Y,QYV,dFIKaZ)0c"k`1AbfTKVTB9Qj"X"T#m,D
+
+J68ZH#dXTEbR)jK!%N51)aB@8Q+Mp(XGR@5)d5qJ'-)"$EljKH6FMlRGML@5bV0Q
+
+Vccb5X@!I``qSCiDR&Lm-*[j8hm'XXr5iI%Xj'M%!)--A+CEcN!!f&9)GT%pab9k
+
+lAf3ILGL3!09"[[hQ,NaJkqcQJjY&"[h*+f5ZUk0F[,d'#V[jl1j0-&$8+("mE3h
+
+efAKC%-kqBM+C@VXe&*!!MUK'H(iD")F-SXk2(%*#F8ZH2+I[U)8+"Jh(4IC-&*,
+
+FiBPk@fFhEV$MEeI,ASFZ3ja@TK[(#-e8#eS!k(L'[[a+bL#ZDClL!V98$D8#Pp[
+
+bkeaa33BeHAF@"Rl,`&p$QK`mai8QLE128bh1PG%&&dUBJMfLbc(1DIbL$)e,$,$
+
+S)JCMNm&&Ib6pM9Yf3+)c#4mHe,E+C-0m)bklkqqGYKcd39Tf%#$2J6I5-Y!(CB2
+
+,!kqL0L$p)'l8T*VSRI0bRCb+,Lq!MeBXZN6*Z3d(N!"SFU)kEJZTNb6jM,r$q3"
+
+e@PhBUP0`U%q@TZVPBZ'6!Q,'be3F&S[XG[k8cp(8X+B6*VeH-UrFfbpYI$PkIrY
+
+c$q'NBE#88L3[%biSA-3J&(erdqr4IA[8Ce)PmfQ'L-mYY"NG1&dl6"EVN!#*HcL
+
+aNIEN)aUFdNfGVp-X19Ma+RX6aL"[SH[Pi[m$!!d)D@jdCA*Z,Q-ZBfpeFQ0PBdB
+
+TC@jcC3#3#DAG!*!2&EfT!"ADj`!9-$S!N!4849K83eG*43!!ZQ(6blTKdmm!N!B
+
+2L3#3"JDj!!!bT!#3"[2m#diTqC8J!hLc66B,AkeXCAjGa[E+RYc+21[@69DfGQ3
+
+G%,EC2X*D#F$UZATbLJrJf[L[fh4l%[3M&ULq3FR2MN`ffH3fq8dfq8f3!,0A3Jp
+
+!h`lrl,K$af4r5TFberh3[4+P*MB8L9,i5k9MfTTSPmT+`IfLfc8mi-r4ZFRZFa8
+
+R*3ARA6TpmH)jVHqT6#60C#ae@C!!fGMRT9Dh-Lp8HFmAjb*9'`1$`[P`YKD*+LM
+
+,6Cb,,H&TNdY*KGQ8Gb+A!lSh1`U&TPa'ULKcYGk9NP4*3NI26-j"UFepNfe*1ah
+
+*h,T(Q0XkLVI6*Ef9@ZBLTH[G1P8K693SG5&*`$pI&)Q-%'4YKQ8[1Bfj6i-Z$Gb
+
+*8KNp)+P`Rj20efJkUiak9cdbHHdN%#8(QC2*@,b,p1iT&3LSdZpEVAp#d@3IJ9,
+
+V-c%C)NlJ$+(IU65PYD4G)6HlY&IlJ#*p'#rHA5dA0*aqT!r$f@`iAA`F3,&-$+l
+
+PVA4qe$C,&H`Kk&aS5faYireSG[i1ZX-himPim4(4dZ9i-4h0jh4j0D-KA3pRLr(
+
+jFM+FdI9bGRde(r@*jN!(cQSArd)3Y3#839JN5k(5iLFF2U)%#X594T5)@iNb##@
+
+D*5*")EVS2icA6N4U8'mF2K3EaJDN0U40fD1lA+&J5[-,rE@(TJ9k00CK[dHrrrB
+
+EHLq+JSDh!2pFE0HjLQ)m[4r5bGRTmaFp@Xk((#Vq21YdIUYdQ1iL5BqiI2[*SrB
+
+L6XeDJ!!FGDCA&b-k6N54V%Ua6Z9Ih`hRleD6dI36[D)ITZ2*jd'RFfY84&Z4V3a
+
+h@"RBpq"i%qTZd1h5$aeIqU3'pXQCdK'NqCR4#a6mR!!#HNQ94E`qHG,Y(0Pl(8'
+
+Jc8&p'K"ZI[1+%)*pHN9KP%1R#dPEH6B!#N,KVJDGcjh1jIM2dq9lDb3)%j(6FG'
+
+cdD35@LkTCmG!+D-j-iMHjdd5SbGpkk'DBNNRe1rA36dpl608PEC%Vk%BbVS[iH0
+
+DFY9qN!"+Vf810cd5NFMiH*1E,3d6dd0ES4"kV4-X$&UQk9ESV`TD'h-$XXdf8bN
+
+DqipdRB0BPD85#5jNQ'MeYafrX@VMB@&-@JaSSq)GbZhEr[0[E&EfI+F,&@YN8&(
+
+"$2BSpPcH*A"+`G1RB)0Hij3"1@+4)+'A,qRV,MfK`'PhJq-#X!ik4c&c5SmT12R
+
+lKP@#$eHcLrRi,k1RAc1$4kLj)'CZR4dfQY"hVbLQlrM`pHY@m3p@mE00`rfAbh+
+
+ADbMqVUN*jYT9bPEFb&8S#KQiGhl#E0&4chH1@ApI8Hj,50jC34b#[*!!kbXVF`p
+
+!pFc9!JhrZN,0I5r$-Q!cVY"D&p#U8m!cfUH1S0%VC-PG9IRVB82S)RM)BRrIC3b
+
+Dp2G#VYADp(df9IlDD"@+Y-iIDb1X(QpaecN#JHiCik[!r2L*R!-ZTGaQ(JjqBM#
+
+3!0c+YMkDSrAVRE*(FXkX9IaX6#K9E5)C929adZh4D(UaZVTF6FEcKFqliER&L)d
+
+IH2!A"a#8,NUK`hd90$f3!*UlRk-&1-j81a&8[9(3T2KiN!#L+ie1lhQVL6c',YC
+
+Ii80!QNX4i3Lp"&'b!k8ZfEB62*[@22EBp'*d1Ck1,[MTc4@HNFji`K4a9$jL(i-
+
+I2d%X5f#!6R!Z3)fl3%Al#kqElD$'64+dSmQEqA6S%aK'erL#HfLh293E#2m-eDm
+
+B@EIi!T2ISdpji,VmHD69-c$FCVNXGQRTi@Sd$a[[IiPr1Jb@eSkEKhCS0&P`h)d
+
+',i`k%&YSf`aEHfAVbD0DpeT0KhH$0#k(NrQS'MDY%4iiEYkX83mh%*!!+6i$Z-'
+
+c$jbErL'1CZf`TEf@6p2A(Vmj0AC@Pk&2aU*VD32C+jqUjeC(Te86kZLXAZK`ZaE
+
+K6C(#XS``QNqlp2Ja(@l1l+*h-ki'd8S"Y[d&#rP-6TN2rmBY$NaDVPQmSYUpRhA
+
+VY8!2RNlV+G3!mL@b(hrm*E,D2NI46SF(fLd@N!#VS2j5Iqfdr2HXY-YY[b,E#IR
+
+VI[6&jC4FC`%mea82q(VAr#m#@l8Vdkp&m)'XDm[9L23qE8@jfrp@5HZU*F&pSkf
+
+Ej-Z+iKf0@#,q&Z%@JJH"hA0XjAh'V(8jK22KI(6ejNpe%2AZF4pdp+dPFe@DPFq
+
+m8E$@UQP9AHpE"+A#`1c#NS("4qA91MAK$4ehTm[*K"[Qk+&FS$GIc-E6YbJ"!pc
+
+`d4JHVE9rK&R9c*`LS`[RKdRNamKqFeJY$d1PCcZNqKaJ'@#eKR8Re5cI`jH$caC
+
+3%(j3UN0J04I%SHDFR-Air`!!$3KXD@*XEf-ZBbjMEh9bBf9M4LPPER0P!*!*`8X
+
+!N!m9dli!&GZ-!"8`1J#3"&4&@&4+9M!a!!#kBG8bZQ(9-`#3"e`!N!Fe!!#Uq3#
+
+3"Sc484l'MB!dk%m23NmcN6B)-b%j&TS)Fi0pAj!!c8h5aI-(IH&%0[&Pj@Ec"2H
+
+aEZ6'%"%HKTB!!!d(E'PcG(-ZBf-ZBfpeFQ0PBdBTC@jcC3#3#8Nd!*!2&GVR!"A
+
+V*3!9-$S!N!4849K83eG*43!!ZQ(6dETKdpi!N!C#f`#3"JmT!!#cF3#3"YU&$Ni
+
+TH8U3!!(!RQa[lHhbLZb6X1cFC'AQGC+MV8AS'6F*[mK+m"R!qLi-6r(AaRmGSGX
+
+Rk%FX80HJ5IR01K[d&L0mi4rjIICN5cMCC#@E%UV!jqF$N!#Eml0LA[#Ilm9*[15
+
+UMr3pl)Bm*$U$`%fm-)M&AYJHq0+Zi,rfIJXBm'pQ0H`I4PkhPiM+kTaBZAhl!p%
+
+k&%P2LQhCP8%5Ll$$RhF$Eep'XCFFdX5UihZG-!Sm4q&3X"Sp,aEp+1a'cTl!Tdi
+
+NTBM$6R,J42+11!`(`R8#%FNf+)UmeL#4`NZ%%l4[KK%4jA81,4J-$S+fM"Kp)U-
+
+p5m@$qUji)!-C1Eji2'MjRLXf29F'X431m00%h*0Y%'R"d0TeBQ0(Xb(@3k"c5#*
+
+hK23`(`RQ0`c%,308SkU+-,*)+Nj#4%BLl02b1E"h+(`("*Rp5lcV3K3TpfhK"Bb
+
+c&rC"F3r)32U"jrZL*F8JPTf"Al8iX&%mf@Jmh0TYL&VpUAK5fpkZe4Y2lf"MdJX
+
+a,IHP`Z2YpAd2m%"dj!5X@![MdGVfkN2XVGhEf0aS2!@eBRfM89rEf4(V@pZL*Kl
+
+AYKXEUlZEY@haH(IlmGE1fT)31j!!$T!!@462*BLc!#P$B@fC1*iI$qA`&%FJ"Pe
+
+q@r5FIBPMi%TFPVC`K)YEp)h',4,($i-ZNiq0UFEZ#+mMJM#TLS2)`i&*`V(k,BE
+
+d#P6&4Z!Z9F8I2[bpH16%XDMY3rLVcPiVmYTGI(T8%mZh9MkiA4@l1c8LpHEXl!d
+
+[F2e"@iVVG(QAHYHcLDiIYKc3R`pp[1FN[DAHhGRCqYEp06(IkMJYAcDGU&Y4!rJ
+
+5ciN[CiNE1b%q`GQ-+MalCjCR$hSHERU&CX3RRiMkaUEikLZK[ql@lfhYeZpR%r@
+
+"lcHIK&%E-l-c"#!))Fr$[L3%Fl5#VXR61I(HHm$GD$BHEQmpfDJr)#jQBTNBr&8
+
+KSkK*C&IZeHihlpFDY5U"R!-a-b1U#1MAr#Z5b5!+D01GfDm0qf48rX2pY5(jAY`
+
+N3%cSe!8HFCSlAJ6Xjd6ZiiTCA9CjJbC6BFhZ3!BCG`b)KL658%'edV0#k,DC-b*
+
+4qVM&f%I$"I&ZX0mNp6H6X!NR3Tm8%#a0'FRBjbQ#hC8*&[Sb8%IMVPJ"q"Q&I-p
+
+j*LdFYDLI+$,%JPLTBK&`U-'HG0Sm@8aCA)YfAA'Np!aKr)[E2c6%%-q@"A[R-+`
+
+%QmZfJL9B@qM@GrjIYV5-1#'N'jXBi+p6"r4X4%Z,!B@KC4)(F2eGhd'YH9"hMDF
+
+C`)cKb88%8,&LV[)#l'IB$#MEQB,NlE5'4M,@lGcAV$ZlP3i-D$#EUQS4!le!J2q
+
+DBXZJ)FEY5IGC-qP&iB%Ai#+d)ZNmdkaME`Tq'X4aQeCaf2lY4NJ)PKZVNY`I3R6
+
+D!l%S[)!&ADQXEha@hhdd"mD41B5iHqRf`N"0(I!l#Z48!VrcMI"(QVIUjVp5iS@
+
+kh`NirP("kPHI6!P5Pm+0@*mpe*VPh,S!cBBb#4H5e0SMCk%[MH*BH`[#MhPX`8G
+
++JfLmRlY6iU@[lBVqD+IlU325VS,`3-BPh,l'Dr5U3CYpq@8rGa0`%M3H*f'rMm&
+
+QahFi6bLicNbrPYYIV@9R1SCkEA!a48(!1H,T&aVq+4ZBNK!"A&RqIlRTNC[Lc4L
+
+F[Z#SN!!6A4KQrTXBV[rD,*EF@1&kQfB[A5IhqX#D,Lch)@Q11ZBXQkY-b@3aBSa
+
+m$XcY1G'235M1$4pRhU#eHkC*GAC-A+`6Rb`J6K9(fU"lXM*e)$`eKZ1+)+A5(+1
+
+5kR2Y1V(VH42&U#4#H'VjpmID#[$0UFBbNh@i[R5L[S15`@&P[MaPN!#3!&Mqi--
+
+2,IY&@1*0)Z84[C&c-!@#i8TP%-4H0d!lJrE2(E(m+ldYahd@3m2Sk@3(e9*-F%Z
+
+#Ib0d5"aibdmfKV@-[6+XdYaT94Am%IbI[D'Pe5eil)Fa+HFYP5jTNj8)bV$8N!!
+
+jX9E[Z9@baG(!6FJ8N6GZqD(l6-c2eAFhN9fcXp,'DUHa$BL&HhSMB"I0Q@2["&T
+
+`ka2`XA`Phl*G3A66S2+cC%$-9qZAIRE+(&Y`0"(ER!+d,#cmjT9emPc%T--#M5C
+
+%58$&S@e[cbMeeqMD)Y*q,3eB6lhZ56i,%,3[#aVlJmZ-`ir4SRSYA5c*8bSVUI0
+
+$CQm["d*B938#[8aPhNGC6HEAhl+Pl2'hc3e6TjJQ3'iDX$'`'@fm#8B@eG$U88'
+
+$9'!M1!2ZU+*4eM0BmfN6il+&N88pNbj'5M5[Cc@q5pibJSSSb@ME%+U8IG)9+AG
+
+pkcfdRjQ+%*J-mj)T'ER)!Fc5+fHU6U"LK1r8KA&V2(fmYN1qX%PH"l2++QCe%H@
+
+NLJ3kEkZNJU0&)h'PIQmN,%92TR9&Y*%06SJH1$R#KTiXCc$eNCQ-cNr[eEDEKP0
+
+VXaCbRf@F@kE(LDHC@("fk[$EkM5m-1-ki`4dpZ"-$ZUV%"#$8CCFh*`Acp!Ll8U
+
+URUCZUE!k9jFK4TpE"UkmZ!kP44TjTV2MN@Xkmp[24CeI3Ehie%kIB"JjjqGApc5
+
+1KRHC"!#[LJ6'q&aN%+0Vq#@23EDrAlT&QKfhlZaPT2b"IGc)(HRc-e-N%FVcTCT
+
+l)EQ6+Q$@"06b5*ZMCbcCjYiT6fRMlmaKMSTl"5qj9c`f[f2MqiU'-kplG-CI0NH
+
+1NSJhU4MGl%P"S$K"KAe6#D5@F1BcVcRGEL5lH&I!K%"PDq([))ZMPH-*"RXY'8d
+
+3T9HfM+H`N!!GMX&U62Y*$b,PYBc[m66"kbl&848aEb*Q@2BNmpIX56m$"'0`EfY
+
+VFke@TpF!8+dbAq0"#kkUG$jKkrp3*U'IYda@B$`a2+"1EpNK1l(d5'Il6Y5)"V+
+
+bbJ-"(MaSpde$A4fVGE6rCGhCNa8Y$`)jMTJ)-dqP9X3F*k0B@U&m"TmXcCp@5J(
+
+6f#N'pG`8')6bc`2(emT4'L"f'#pp)QVC-QZX8'65&hp8R(dN5!!+ZEQiKNa`b5#
+
+q$j+'k)LdMh*HLc"NR-!bdM+#eF)Y)PK$L&,m2*jpF1`m032d[")C8D%6VC'pE1l
+
+@YpG@U`E21ddZ,K)MGj'[r%f560A#3LT)!c29Ak'MdH&*ICIfqAYpiJdD3F9#%CM
+
+D$F+F3V5DY#p)(#P6*f"C+qddbeC($2XQ"mpLZ)c#&5eUrI#+cS"2QlJ5QEbLp&2
+
+Q)+BM5R&TcX-!aFGjp+-1LeQP48kYUD`YVYELq)!GUf2b$%9BVj!!,"l"eHG4qka
+
+83'FY1AfAXakFQU$mU1bE-lUX(9IZXD'5)8!*U&#N,9&3IfBCMkU3!$6B#`R2Y#K
+
+1caA!C+I+2"&JMbT2N!$J09@dMR!Y$0PET"i40KP$b$FVMcq1Mb!r+k#`N@#BLP3
+
+rq-b[8@54q-4pA&`kY6+eX0ThAKB)#f1U6YYkEA0R6ImXAELk,V"'[`"UE1m1mDK
+
+G2f%K%-IF`#RJ-DKI+SVM[YVkjKCpl9bNm5CG'0FAl6NcAF@0HZ1dV9Mi3pk'#`h
+
+NY8D$llNkEhKaUP,TU%2Gm8-Ri9AJEQ9TQ6FZ,j&A-q[)Zbe@&(pcMfUIE@ipf!)
+
+$4%"(I)c@h0%N8A%$9$bXIEV@h%$)h0!f$j!!28JpUA6!m)fd'j'Alb#3!"Xb`*0
+
+BSrTXAV6MfFa+6aHS)ib&q++1F#)j&N'4P4fAXA&Sc)h36ELV+j1ISraKS(%43!-
+
+YfR)C!5JkC)m4*A,[V-p@&"&K6LCeNJNR1JqCC$[QR['dV3QEVfRMlARI*$2E%j8
+
+$L[(+%rKR*3C6PY4UbGS9@3j9aYeX#R%UbG+Gab3N%,CQS`TqeNUb%BQ(PeFd)%f
+
+HLT*X-*eU*[@@Ek#I[!"!jc+M3-rVr#[[`"q&6C1kRbF@6C4%MjpS!*P-%2V3'e9
+
+N)BT%5M[Nhm4M$'`4CFh0IHlpD9cNRc+JfKq5Rc`J2%iD&#ehb`4MUS!f,J-9#J5
+
+JART,S-a9G&b5[c(!8krI'#M#ESk-[FJG)1qfjL*#di%r"I,!fJbk-I,Jk#f2jD`
+
+B@GiKhMh+22Ape[H&GU5"*d8mkBP3XpST+q#BY-!j)mQ[XVNB0XieV"+Imhe%3Z9
+
+Z'kaB$V2bV$%84!+MdNL*L'&2FS59$M6[,I(5,ZD4(B0QrS+%E#UY&F,h`!0b)&)
+
+%*ePe`1R)Ei`KIU(6NN`"m)HPji!Z,MY48`4F)4'RJ`'hr9hEpG3a'U%8VjBB&C0
+
+3#1HT`8fj[#+6!I$j2kFXLrJZ+i)A[Xeip*IHl6c)Ij2$F0#NSHVSCA)Le2KBBTV
+
+C8ejRCLC182@XF*-`VTSBJ1+eQk(IaQZQ!91[4C8VjqeE#2T`AN50j"2cbjU'M3@
+
+-jMpaU,Kb9#ek%5%9X@3EKr(GL`cMKhG#*Gb6GMJl$9U`FK&33DlY90fkJ+GSB-Z
+
+UU+6(BZLLk#Z&q@UB2@*K'5hHU$bZcm0c*H'j20,1c$)N`4c!r"B@KakS`[UmEjS
+
+EP[4*UV4kG-ei[H`jZArdU#I[b6fA*3"aSq'XY*BUpEL#LT+!bTCIedpIfUdK8(0
+
+AIq$&R0r,fm%&$3CNJecJ-qpGQ%Hjk%8Z#(YK`IMpN9jd0X1DelGS6)F5IRD@J1R
+
+S-%99r&DjJLU5rd#4iL#c,[K*eQ9KJFd,YP1rEQ4)D-[Sq#IKfFY1qScP0HDdfdG
+
+PU'2lR9fZldci,bIXfkDdEH18ViT3GNAe(%TSm(Ya85Z*T8A9fPa4AI+#98&+-Zi
+
+"YCSVlf$k'Y52Q#V`jX*&bi--JfUNUKE"p)0(&kB#Y"a8X55['k4YNZr,%EBm8[M
+
+m[+U`9*39F!Z1IE,@UT*2HYJ1[(E5JqVaeVE(,jcE0aliLB*)aJ-rqAaPH4Q"XCd
+
+LL%lbq5dDiLQ&#V[68j!!CeD%%F-9!*ilGm3N!l8)SBTbD95$S@5@LNmSe`%GiiC
+
+8me(P5fq4S3MD20LK0fdf`Epk3Z(klrTI"0HVfA-4@4C%`TmI)hhrLqAhme53!##
+
+R#KN5q6B,Xr6L'%01FeB9YfrVB#aPAcY*6DE5B&@4Ae95'lkE8QkkrV[jTIR1pDV
+
+5YL8Z@jfr!f5LElhmZpFSP!"d'UrfiUD2RSTkpf!@T6X[Rk8Pb`E6J1Jfp3dd-kj
+
+-Ua@A`@NZ62)2&3A$0QeX*N%rG'hcPD93Qk#U8dB+bm"%+Sl+TeV1GG(U6$d4"3K
+
+j+iVr!3#3!`d'E'pREbjSBf-ZBfpeFQ0PBdBTC@jcC3#3#5kc!*!2&GZ-!"B#aJ!
+
+9-$S!N!4849K83eG*43!!ZQ(8T,TKe,)!N!C(9`#3"KFa!!"[6`#3"U"%$NjAmT3
+
+J!i$(b2&EDkr-2Z[mK5imFQZ'Tqr#eV50llR4lF)*RZ#TCqm@RaI(I`d@rJY"2eU
+
+"Z[,l*Pd[Yd9riEH3!!&Ib#hN&c*Eb(4C#F@VRjh4Tirha'2"[c#HaJFcqDEHaFc
+
+haRiL*N(SQdVj'epG!KYrDUeiFCX%deNQkUepmIc66eq)beZ4cAcKq&-rbP)46rK
+
+j'!9AIT)'f5e9Y,``Q-4*&(L5Kk3eQ!@T@#6a02(Q!Nq6a2G&'NqbDbra$m9Y["3
+
+M,a+*2`l5,!NZPjN[JNaidIKTR)Kj2!iQYjS-#TF4#8MX-cqCDbP1Zd0akNGqiS@
+
+LYl`-Jj(S"#-r5RhKJ6p9T$0r$#%e'B)p)6AkZ4VL*!Bl,`[Lk&$i!HS6`IV'NIK
+
+3%FeC085FD#Ce,b-K%a%[#(`IkYf+d)0!#[q!XAjS#U2p@!34mjc&#dJm!c1)IKf
+
+%SEMda6,e*mZ`SAN!8EaU$mlXi8!dZaIL9G0aQYh"a5%3XeQ-D[r+Phb#q5)-3!p
+
+#*el%(DYTR&Y1k`bicD0fTcfiJ,6LT$hS@[fq1,%Gd45pTM0SYiDGTL0k3kGRpkd
+
+$)ITS(6$6,(jX3GJ#@KNG0[Bc,`M6G6YF`!45b"@1aFblmQ%')ar1-KDH'-',IZe
+
+acF3,ifM+iJ24p0LK##BLLV1'Z%i#'%`@llTIFc!Zd"$YD(63%(rqq%rLh%Y6dEa
+
+#ilHmq@85M+Gi1Qq+CamqIr&T3`cl64)9IjlZlHdp#LD`UBP`1rDTlClY2F*M%2R
+
+kIHrTBk&UcUecppJk'TibY+Vb4h1["K6U('ZC`!aJN[j0jS2A@)aQAZ+0b&p5(jD
+
+B"K"pi8(D@h%*Zf!L`B38H0AZ[[K3X`SZjhZ2b%%KMH[mEG"bA9ele[cFFL&'UhH
+
+KDrVY8hI3I'RehDCcZ[F)j)1*TZDk1B&Fl-&CZr[5E4Qa081*ZiEI`-fpd4XY0U`
+
+(3qI),T9M96FSDh8Cirq82Zqhh-mYji'aH%r@MHXSh"I[[fm+S1UqlT!!C46FD!l
+
+b-@q0)"U&bl%[rM#+SdN`2CMp3B0qi4khqle1mm)pErIll5l8b4RFZ0G"0)k[6B1
+
+&X%*9l9J$L$Uik&RL+Jl'TG)S&CTIIh$FFXqXjV(Pp!e)9E6ThebXIdkcFB!Cmbp
+
+953)c@YF%dmJ,C3hhdiTG55F-,KP(+QNUEp1RfHh#6eI%jPiBaL1U)@G-)[C&mAM
+
+U`bD[k[Z(QclQYYASieM5@@'80M5DqD1[h@b@a'LdUDM,Gb#iD4B[k[[LZqm%[5a
+
+3l8j#EbSqq`bqjYK`h91dIDlL"'12XBHIf3(LIpLp*I-2i+UGUDp)H$pDcX@heiQ
+
+h`0#0f@EL4b0I2NQESEI[D5,hAF)m0-2++pXjlVIrCYAURca1JhrcidQGjV$pI32
+
+4EAHUE81pDapEi['qH+BKKYdMHpJpeK$$k*)QXD,qf$TTGbf&X+QhZXHZIH*ff[h
+
+"LU+CImkDr61hBh89aHHBhQM+mM!S"R0IS!8Z-94KIRUB)rV@UFY5IrMX'D46(Ai
+
+rd'LSM`USGDd@iXr!%&#L,mGJc2UHQ(K"%Y*%0eA#d$4)1`BBRcKYl@e@10YIcdm
+
+!1II3b5aUeIPk!'eqiIE1,[VSR#i*mLH@UbMZ$Xq2,%FbJZc8-(2[4QQ#iA`F6!0
+
+XKE#jJ'KKM*e&1FVf"hE2l6PYfm&ZS@DSB@R4'`j-jI1#p-@4C3T0r`kDl8j44dU
+
+%AM,eddc3AQ'%HB!k1HC*Q!6AK&U1EB"Ik-+H!dZ"r(QPq-Mi)@m5JLJ6C#-d4[8
+
+,aqX1--UhQTdDQ`aAlcmM5k"ILG)I0&X[+j6RGbJYZcZS95MN'@Z3!(BA8Yd6VP4
+
+"$kqBj(a,%'SM,(E1laLA-0`eGi3V+SleQQq*BChhd(4EVL9%mr68@G&JULYPqqX
+
+HBDBPK$2XpPB3c,3LLJAC5JYQ@N,30,0Q38a,#1Q)+`bL@Q+FG1cQB!d"UL8%E1G
+
+mcC5SPK#I(cAAMF&-9aEMB+lEB(aBB4c"KISVYf+ZP4V$EQXM',LZI+TMGlF3aTm
+
+*SYQhl+0rfB)meqCCkf%BV$5Y+j2i,VF#qUCq0m-ba1(TX1+PUq'Ir5fM0d6bEYQ
+
+!8G-6Q#`hF1fe-CGBdJ8-&RIm,h$d`N#&YKXE)&3U-K$5LZmaL!pA'l"lHbrK9,e
+
+"9%hl)&eHAlB&c5)2",Qkd'-c)fbkNd8"L)'%NlYB1[Ha8[J*PLcI`2jeD!pf9*@
+
++E(#&k'aQr`"Ml3R'S%SRT6f#Y!UjCRJ`%RU4L)B"@IUGDIm(1,d3V#%KjjL(lZ"
+
+U!lBG#JQ,LXT1)Zbb1Hk-MiVZ(C9'h!d@9qh!ZS16V4XmH9j)490e(`[D#S(mREP
+
+3GE&9mUE6a*mLD&'2a[ZeHS6G&)h[p#VH9h1P)4HN,[DVf4dB&Q3NEJ@&a-Jp&20
+
+DL3U`$&'#"l#9Y3&-,NNIi$BM#!$PUZ8"F$1(!*!!ePN2F+[*!Q$AF6*q!#0(-Q$
+
+*-N,-)-8QmbhFbSi[[G(ADHK4m1B"F'11e%VBj0$@kNfEQZ&P[EN8*me"Xp1JY4+
+
+Y!E(IEdKVFQfXlM&b[@S)4!F'(F[0)ALJl$IfDV@MjV&l$(Khf(@X9N-FYiqKM9a
+
+30E!!`RMDYBHRC`hB[d3#&pYfciHY-m)rIZQq1QX##M1,eD9&rAPcJ&*!Zjmh1d-
+
+,!C'Zp8A2DJfXBaTXV#j)[R62)!VJJG)L2%aQT`h4l$KBM9mJ&-,E6P)4#c6,F@b
+
+R+(ED4dH`m&2#2fP$e"bJIH)L"G5P5Y%rDalEVrJG![3YKd!!d@F2N!$-D9VVYiq
+
+KN!$83l8!0"PBI8KD#(INS*fX!3'[U`"2RA(U0(YR)03',UM+`E4S%(IBJi4`4,[
+
+AX6khd+h0AUpc!4G3AA9X@6dXFJR60,,54%Q)QRkrH8UD56LhDhHEjjCZCHZN1Ha
+
+!!pL4JdJ(04"#8rKKBAMTKr&eRJk+DEq(l%rd!6j(f4,l`e[K*`R@V#2i6YS3Iep
+
+LYcMhdp6$PT&@LVAD!&'TPqk&2856Y&X@K,ZJGZQI@Cd1+3jV`06L@PrNA@!lk!L
+
+5"Qr0&Jda8!01-HbM$PdkS2jKMIVU86S2@a2kN!$DQa[bT'e$cbBXJCU#(Df&f*C
+
+VS`H-0I"VhYZb8T,Up4`LrXVUY1ac#cfBSh0hb+I6&ZX%jG"4B)Fp"AH6SR#1K!`
+
+dT980,-5'e$f3!1c40*4VK5B!QIc""[Gcfl&N&3"SQjchl[GX%(+[@XYEXbJAFfS
+
+mV-%a2[`BD$UblBl9l0+H0Yq`Uk'!1MZ[,R)J1H`*CNbV@%82R+'&rE0qTp5FZkM
+
+Il)[hkMFB9*lGB%3ek1d[-(+9bFTS@Lk"UZ*aM+5D@Ia$BXU!d9VTfFh(%rNcSh6
+
+ca+*5e0,1l!9UZ6&5Em+KYINbc))&21VkD5aLC!ZaEErQlX")Z4aPb)[3C1PH)KE
+
+cYIL@,@mC8Ii'SE&F0N#iL6mC4GNKeh0QKSV`pm[RAqPQj)`LK3A"0SmIBY9rKC5
+
+C"d&&k%G6T1`5Rcd6%RaIV-H4`!%EbE+Hc[CekS-HRrc&5'!'2`6C5XL'Z*+S@dM
+
+aQDKI)9UL*mCSp*EVPZ`IrfKJarjEf#G2GX$&X*Nh'U9TACT0mbl6b`V%$(9!KJV
+
+*KqDh,R+cKp49A4SV2NMc(#1&$0%l+$aYSB88(X"Fc"X-H)B'4i!$q9X%9&)bJG1
+
+@3-+#"aJ!'4B-Ve-,FbrjfTf1$LNMF6e$#*3+i!)jcPE'aa%b9-bi%d4IJbGkQ!+
+
+`9+a6YUQ(N!!-P&PVYL-6Kf-%BZ&%c#Vh)C,TfleDMSDAYd+-[16`AI(iaq,imZq
+
+(fRNK*I+bBa&(-#K1cP!)'*(BE-5$h2FL`MBS"CZ9)M*%&Z9@ZXM@I#Z,e6!8V-j
+
+aFTp9P6"+&)+XI0r5hFNSkSmM@Z#iNb@ba*4MNd#c1-N%9A+qC98e$f!CbC68,+T
+
+J@(G9#1qS+XK#62'L9)0hd+ZFBL*1mf`P8eJm(EKMaYr93D9T30Ur8IQaJ[Fb6bV
+
+"lp)Xm-TqFEMh29YV-9YJ8*!!qb#1TY'6'K5S!VkY$CJQ"Di[CVI)KE[F*D8Nh30
+
+f"(aj5BNirJeaA#,#Kri6%4MP[)4RIi4p)fQS%BfQ4+Q)$RTB"PC)@ca!&(MMAr(
+
+'*ClhKZ#+hikQpiERLZDG1VqcV83Drmk@B)[fK"Rpf*jjK,8B!!TSZ2Pr3`1XJ+B
+
+4iAGS!PZ2da$LR6fJhR5'a!2lGhJShZ!4j49JJ8I&Qf&G#G,!`mD$ZFIJ[e5k`9A
+
+#0%L%1f%)PdShZ&SJ6AJYN!!KA,3G$F2[fSiA4kB0m,bcP))PkLY9&&i$+qMlYL(
+
+b%)@U+e&N5[*"&+iZCH'#M6!&6Dk[K$')K63Ea0I5,$"e[ZXAQKEP&dfR*5aUIS2
+
+PdE@%aH$k#kbDE8YB[2`#UiEILLebUlq`cDIMX[qS%R,ri)l8-eAlPB!0(Z0hJ04
+
+p9&Vj-!&$lhG-8EaPUJ"eUkm"6Cp[Q(Sh2c,eERC-Fm!h60&F$dc(Nh"PB#8`S,C
+
+-0D#LZJEmJ5Rq[Y-8a9ZQ#[#eTZ4UQLRPXaIq+%$kqXS,Pr+Z#69B!a%",m*f6Yj
+
+Vq5$PBb,f5cSl3K5$$1G-X1$!pJ`lX*!!b11L$M,6ISMiLMc4%LqR-cS8%'EN2Tm
+
+p&hA+IV6Xr6,)E,r%BTj1904N*VA`0UaKDV@DmM,HTH5I9&S!aFRd!8LZE!SX,[Z
+
+"&MBhCIHK#NaPmb$KCES)99@E!JJLh!'KDJ1NTpi+L!@S1VNJch2PQ[rVQE,3S8(
+
+8ee)3*T9Y-+ZjGkY+1B6+b!,GFM&ELp$h%RQV"4FIS#T9Zea&lj8jE9"38f'3!10
+
+Y-&"6BA$4TBqf4UVJf3Zq+4-N@)2bQT-AT14LhbaM("rLK-[kX-4+,c0pMQBFM2K
+
+iEGdl*)Re(E!qHIC@Zc8@m@+XebFU+08M3e%FpZ+)PVTZ35Gj+1U2#bG$TiXeBQ[
+
+JG'J[M`@LfYrkdcQ1@"@ED&8K9q"k&8UA,"!G-@G"&*jCBY*(5U'*e58)I6AL9m3
+
+(K'H-8*jV+2-9&1e4NPHELYACMrHUXamQ@N[TX1d8[$XC!U3bj@RhHRHi1eK#+MB
+
++Z1i94`&1-lLd`k3GCmcp6M[-f2$$TDB4EfjA+(+R@1$`d,D"DL!XJN+L4+[1H*r
+
+L)aS5XpSp-dP0iPAmYRJ9[4dr(0C+Xbdlc@p(F!d)HV9#2B9BFB`[UEh5JQ90bk%
+
+!bd8X*NY`a"a5k9,"EG'fVDI!$%'MBTE)(L&``0C(TU[a91K'M!SBeAY%klll9d#
+
+l9YrbH@X0'L"[hYqB!'RR'DDmY[@&Rl6B8FLPq*9(U84Z&S81Dr[iZ52@m,RCr-+
+
+K9%"l6k("eSrZ90!%-Xa9,M,*XJ2V#qPG#m13!)r8K'"6B%Jh@H&FaZ0E+G`+L"-
+
+%Daa+0@mBX5-A1'L%ee$VH@*4Y32f2E5KZ4-VGmT&dB'daVT(-l0"LBB0fNr8&',
+
+4A#U5lESUR9e2D0qBQ$h1'`"4a%j3S0'N0r&#S2j0-CU6#0pXB%Ba%QIDeE9@pdD
+
+k3YUki`VPYF!FXXrfDfBh6K8,R%NbYA8M+ZAfbY63'S[Q+l*#K9E0@bCC9e!MDEH
+
+-9b4hZ!dae@Db"DIL5Nc$YNE1Xf1l8A5MjNjPLK[9NGkM$'+Z$B'plM"D6GE$US[
+
+#DX9Ue#fJeT*[k43-T'3+ZaB@H`*FCU$q4k)#md@Y,VF`qcXl+8$b+C)@XcDVKI0
+
+6Q%T`R0+1N!"DT(EJX#U@VGKd*DQi#M`Fc8aZ%4F*&dJhFXTi&'-[bfFh)3k[ERQ
+
+[#`Y'RhKK3ijJFNq,K5kYHV([#"%+Ck#8i$NJ'DIq3EQYTBLdHc4dfYBapV@k$"F
+
+"G*@*-R1+@YHCXcY-JZ2A4-*NPSQ&+LZ1r8JDUV#i&-3mqJ1Vej0%9NadBAQL5(,
+
+4TH@")fBMVp+XVL2e,1HmfE8She`G9X,T0IHdBaq"+ep%%+[66,K*`-Fp9,'mlE4
+
++Y(M6FSkG)"U*XA-lQZVFcAH8VbMA(,6*r&m@lhmQrVfLFFm!32XrdeKT)8RS"G!
+
+G"eAl!`9FbX"5-SPTT+T[4#RkXc6ka6+GdDMH`2i'YcPi&Z-A,+ej6#KU$5L1%FU
+
+52-QCim&lFb6bAjm5%9i'2``pR&M!kB6)ap+@,Zl5mM5*q6jFc*PL1Mr-UfEJeRZ
+
+i8SXUFZ%j4hAcd#i3H&&p`!%)-e$(mM!,X[RrbP&4#U3JT`f(i0M12JT)#bc,[eR
+
+5#81H&S*SL8#)![4'Sb@Lp,JE3j!!K!Mb#cSQk(S,a1[[)5Fi-%Pe@$lNQ,a8*jV
+
+QNG%0U0+Ni(0$&d%6%LaEdK5ZS")I&eic"F66&)(PCC-BKbk[PeJ'D,aP"-ea$Q!
+
+(U5YhU#-['mffL,,+S#Qe3abk(AZE(TKlYjFq6JX[PTNTRFCC[1DP5Q9Rd-6(VBN
+
+HNfqD94LkBl5lUCK356bCZ0Fi91`UUMIeH#%VD10X91+H4&PKFr!)LJU3!%IF02E
+
+fk#ehT6bYVd`N"pVR)NbE1)VadZVfHGG1CaH3!0c"IF(`&QD'l%kHljRcD@bF3mK
+
+`5"RREI+McHIU5!JIeejE&N19RS@Y2rF$Y%j9Bl$'@QfP-V8@I@FHA%I""jJBk)X
+
+b"&c-%'`YmRN4BP`0QFGYQ[N)0S%La9hS!CH3!'HBB!XeX+",4jKqf3p5c,[&-bj
+
+1KqB9Z`Ad'V2"Y#%pLSjF&re,0d3CQ1bA(Z6p8+C'%DZE1[)-%apR9f3j*Zda-K$
+
+d4&ZR!&N-3`BZlS9-K`CZf4%i1S(1aaj2YpMe@(Gm&jhULNH261[cHXpd[Zc&(0'
+
+d2KmajFl2)aRABdBU$Mb)aaEQIK`5Pb&e@G)-N4R*$F--36b"C&kfK"r330H3!'-
+
+0ZMdQXm#mN4l`'B*b#KrLmXY,`4G*[``S#3`SmqAI,,iUY`[UYK"KmLR-1dcqUP$
+
+cUj[!r'L,+@Z*k"d`Ab%#l#GE@+Tmaj310Z'q+D(#Gm5AFU34NIMbi1"!5,m6H2T
+
+UajDKAl#fGp"NN!!'H09qZ!S'IkH0$eXfMD)iAR&&Th'pK!BpaP)c+"hPN!$(J!L
+
+4Gd*d5C6h3TFqGMcBlr$J+Qm3beL#[P$$8bSl3Y(d96(8Ljl3IM1rQJk[Ti94%!9
+
+CICmh4XTcM'kPkb5m$kE,&K#,CQ9kpXG,2UL1GN'md&`!8C!!'$c$($,[#r+IC,V
+
+NV"0[Y0D)bmLrbK'j("*4LF+',@#`T'[fh$FP-Q+X"%c)Sb@1US!J5NBX#kFH0da
+
+c`!+2pR02mM[*2i(M")dL1m&YGpfjG2BNTJ-ee)0dQf-0Qbi8,1DKK8!fjQI%EqB
+
+m*I)*&H`58PD%cULmlTim`m"SUReN$HhIS41hp4U8VK[*EL"BDQdY24XAAE4&2r#
+
+a&mc)'hLUih&D`kYfBMZ'Sa!6!RK0[%*QP2mLR91%AF$4'"lRNl&aTYXd`4L9q)m
+
+0p2Ap%E2C8"J(BchCZp6Mk%`bH3l)bP-cM-eb%"MZFf('H-d#QqUF#@YKV*&f"@6
+
+iqBJa5H+jX$!a+4Tjc)m-4GQf-3L-[$LE!rD%k2DY[`kYEXY5rkA!12kR,3YeJ&J
+
+I8(T'JjlD3MA%Fei@%dT$2*'2F1-Y$F`i)``S%&-C+VdbA$lqE"$*13hXUMDBC2J
+
+li@bHRP,0c#!Af2GM8hPaLbk$F4XieUNj%Fm0LZ%IkhBjRjL0)BdHZT3H65N0&,U
+
+8(NdT4H*9CC@R*hmdQ&8T[&YAiUdS6"HQ%'X$ACLEZLl1hlGC*#1&I$F!fV-eK+i
+
+`)0UC0BLZ@$1T3(5&!DRX9J0993CXDk`DF&Zj!68qZXBdKDXB4MlTQ[C6*88AU+2
+
+FZJRb!J1KM%Y$U)+LrdZ$-dC39KQ`d[%d9PP8E)eSd5'R@Q5Pe)NirLEMcIpC"l,
+
+#r`F!$3TXEfG[C'&dB5jMEh9bBf9M4LPPER0P!*!*3Mi!N!m9kb8!&K)l!"8`1J#
+
+3"&4&@&4$9dP&!!#kBG2IZQ(6k3#3"M@0!*!'$`8!!(fR!*!'MBm06LPj5T!!!F$
+
+NK+ZAeq9(H'bcNpZ4Y@ZYFd[2DkmI0r-*RZ$cA0r0m(PYr0GYbXq,S"qY3&hICG*
+
+"jfG211(I%AlNHFI)EA+EE$*Bb'"CbDD%#U#6$(pVD9iX#Ilc`hlSfSQpiQ6[JJE
+
+%d!lX[Kc+)"($d"hl8J(S2rH`#`li0lF9MSiMVcp)4'QV,0EZhVdYZXFL'8M4NRf
+
+Jab,XmI0"i"h++2D5BjVBXRf[&dD"CbXHLPCRi-9L&)Apb"i+228L+88FpT)M1j)
+
+EiMJF#mF14#4G,diLVcY1T2!5B3IZV6!LREcHF8S'Jq2!P4'c6f3d6+9if$J3$f8
+
+J)pXAqq1ZlcPLeh0N%%YKJcp0a!2T3XL8$-&ZNaTYVBEB$X(16V``f"$5`h`N@0m
+
+`%1Z'U'C9&@'8-LRC#3NCLA"%i'@SGbam'`)Cr"A'ZMC&TVdV[)"j$X)4*"k!'83
+
+rmRaIG+8Bal)hpUXT$b#+acZG4mf$MUJeRSM(Y9DVeZJmf3"L-JJa,3qPiZ-04li
+
+(HK!kXJ0fE%TMVplDHJ6FfZE1lNlR#D39fcZG4VhG&Y[0PUL*r9UVXl0eX&YVLIf
+
+$eRkcA9m4SJhVJ&R+iVd&%3Z`-KcQbX6fr2M%$Nm3!M(NmPdaX!mP`X#45"CAf-*
+
+"&[hLmC5*lBG"Rm8(BZDa$H(e4"!Q9A%8H3LB*$ahImSK5i'Uf!QFPDVi`jh2a*i
+
+Gak*f#10[fF0Zj,Pp21h9a1VkfZfl9A(3VT'Sq(GVI[i69rDm3-+1MBj9rlUfDlA
+
+U$pYLEIi6,h$mX5[&!UAbbQ"K-Y(h`ki0Dq4$RmH*DdIpPF%AQ1Q"PI#k3hS50a4
+
+&Yf4CV@ml@jC9&MG[6UEffP[@er9@HF,&p[h3B5Sb3+UDRr21`)j%2*+1CrX@2FC
+
+2Ri[lBN%m5ji&T5rTVe+Tr&"qqRajkGEpclpiY[$XfEf0Ppqr@YL!e%S@k3aYHM4
+
+FRH4i*)PVkSAaD#3MDe4b"Z@jNKIcFiPHa8faH[[1R6+NdP"qH*4$mI-*P"+0@&Z
+
+8CmG2epErq"abH0KYH#Vf[T-3NAk'[G*8hI,b'T!!-J+a6%U%5`5rRkF%F!ELjRf
+
+QZX([m"[SLbrZ#p!X)jk5F453!#"UA,p2e(!'cc(l+QITq0+1IZAjZ8,XbMjfJCF
+
+[#3E8XjR+PDVPqEP6D6,P9PI[8%)326bZIDBIEp$Ml@Y0LeJ!h[*%"keakVRqcdC
+
+5V!5CZC!!e%McUmT%"B$++b5X0JRVUYlZ+ef93Tp)(c[#H459eIEQN!!@Ll9&&S(
+
+XXIMYiZXdQU,C%l6[J&DNk4,@ZH!lCh3-LIKjV3T4q'@pLJd[%9J5P88)LB!)JSB
+
+$EF"il@P!-EciE(@aX16D*&U@MX,)Y9kcE63Ie-A5#k3al5Q'X4#hPX4AZ`F2(YC
+
+[d+DL2%UBL4b1+#mT'QRUD1#K(bJT!T35MCeGNQ`Ze`Z'ar-SL8S1XNeKPFYQcTI
+
+)NmNFC*Z,ed6PrY8maMAGqm*adcNPrL[q45TGfB*'Ff-%iFM'VRImaKaA9U4(6qY
+
+2'f[*!p&9l)j)'63#AU@#l)%[24+!mea4,-AVQ2RS@l3`&llp)%e9((Ba6CTFLm3
+
+HeHB&$FV"aCH,2%@)QX!0qJfrX@$VP3UHAXh2dE*!JbND$8!MCa!9+9bPQ#q$(MD
+
+a1AC%T8+DBj25MX!Xh+)CF[VQ1$a0R(R8X$e4E@14SMaprS%$G`PH%a@a9ZDCCm&
+
+LQF8k9I`Y'-5Qr&N(GeBlidT#FJX@-TmjV4$2[-UP3455YCQIIMjPba"JUq@(Xib
+
+C$#)jmV8G*NRhcaJ*`PJ1[4Nc)6,$)$CQ(aMkVq-`NEm["U#ebV3@0+YX2b-0p8k
+
+*YCeBrUk$%k**qim1pfB(k*!!EZZ"Biqma2Ee"SlbS!`HY+pAD!mhCG!5&[AI"6Y
+
+EHhrE!#Nhb2QQ40!"4SLJ@kN!-&-X66#9AMQ)cSJX)$$iiejV$(&T"a35X%-YX`0
+
+JCLVB`E3NVqd`Sm!-aC,rdITDeP4fThVHIlbAfcRCrP0GmeK`hS@#FqN"jerkNiC
+
+'G@G)AHNXJ(,$H*R)BkNK+qG,h$6aH(dUTYEd9)ShL8'e&8q$NGFq8eLHB#fI3Y%
+
+URLekNr@,PAV(L`!ZbHK96R'k&2*54++J*AJV(N'BA9%4R-UKab%"@Cp@Sb,m00K
+
+Uj[4TQ69l`1j&PLQ46r,0K*PTL8m4Pmm"ZHclU1jrmL`,FB,#K[jcHP1`RJS)X4a
+
+8!'FUkP!(*RRL-JiaGTk'cVX`a'L4@86J)JS*+3m[!VS+3UA305H-Aa#j$X&8[`[
+
+YJ2mf!C9Q!,M)2pC"$Iq@IUV((YS[9#N5ZY*%!aI2J%qLXC236brS@efFZ,cJiB'
+
+dA48Ck*QV5LiLdhQbAfm,R+HBC#QKkaJG@a'ZTE"GPdX`MNSB49fceX(#UbiZUZL
+
+mJ,ULaYMhVFISi01+A-ZA$TUk3p&!aJ6bL'@%"*-M$DdB%@XFl+C9ZjVKmA19blM
+
+SSjZH8SP1*DbN6-T8c-h,pXihMB1p-MGC1XIHN!$NELf+,$T)+Z'1c'TZ@h[e29`
+
+33%eYBRffFG$BE"id(LMcRYJQ*EIm"4l)Ufa0YLKNiA@!RfR*2N'L@Ei)L'62#4,
+
+$T#SS!bB0@RSeS-eNQ'A$i*F0UrIT20'D!Y#!F@(JR%P`FJbMJ&8`(BDH#rmKPk*
+
+aJ*8KPL89'$J$-6Z+'SK'&Si2%jdJqK8f5(%*-98Tl2j&1JR09!e@0NaA9@UdGG#
+
+`F*AAVTr&*$H)@SZr"QkK4H"U'3++&5F-iK)`M0N,PPAaji0QK`K12!"#8m,(hB*
+
+a4TJ#KqbLfA#EZY9XG-UD1bimQ%b+aEQN-iDUIl[IMf3I9j5-MS&J21c+D%62DFk
+
+Q&26la!)%FfS1aiiP(+E&)X1cq[b+ZCr0BK!*kp`[@l9f[ERjTamG3bT3Z@Sdq,Y
+
+&JI(@SP[0h@EMCm*BJhMR8$Z"1!NS*QV@NKdi9!X!RJ"QQLDJhP(XqD'Y58)4N!$
+
+X[5F*L&SRjmRSc,6hJDN6(1,D`F@Z%eT)!qCbPEU(YTq9Q#jfM,3T`,A1AZdE#aT
+
+YeP[2dIh&Y*1BkS#Lb)Z*(E+'ScNlUmZ#'LpNcSNFCM[0-&5S!5G0Y65ec(X'9#T
+
+P4e&-'Ue&TK)IGjCF@Tkb%!4)fZ&dEHG&l0YdiQ`dBjR1MU$Lr'U,N!$bDbe'RTD
+
+6(h&9*FGR%a8F4&3UX9Nmejm@D-YVk2i"Xm,(&@q'k6k&XD%kVJBSr`X8R2[Gc8j
+
+5F",m1Pk8KLCH!&)9GN)hK5aAF6P58&!aD2!T"JfkEp$6@-#N@9464KG'Ih@CC#B
+
+k6MFSP9Cj@%dbkXGeLBeaT3&VLK0TCc$GcaL5pL24lV4f'Jr[kGI0fYCAlGeDqj&
+
+9c(fp@@YP)kH4V6$d3M5G0e@)P5jM%d$H1$@FfRrH4#bMjdYHKMGYL[,%3Q"GY5K
+
+8K9""a#6%0'@i2F(GbX3Q99'Fk"3Gb94m@Xeqe9)YK$-CY#c1I0jTL6M85XBM%%i
+
+3S9@am+R[,[!HS0E%9,em&cIk!HmRcA$XMBX`dr&!(C8ZA03SI9)p9-+rN@4eCHf
+
+c[P,&,*8c%R6*X[A@8U2CDG9V@irU$h"MHeTLiXX#cN@A@Hb[ji@KBMeCQ[pGH((
+
+TPip2bl5TbSV+qrj,Vc'S*lLM)R$KMSI$ikTB@9Na@KlD2#hXN@+L9abZ"CG3(IT
+
+dd-60+Gka[h+$N!!1m!l2Z%3%eSQ5NShLPRPUEFc&(cBLe5i##Cp-B"c&&TX0bYP
+
+ki`&9QlXlE643f(68ZXIeLT*$pjfd@kA#C'I2a$66LiAKQBPQH[aXXB69U1`b5$M
+
+!j(ha&&ja8K'LN`45iVi68KBqe%62+KMqpS$TH+JD,3SBEV'cpbAk*SbTQSUNSDq
+
+)2-Q#!Va#1)V&5mrhH-ceKQSX+f+*&DMSCADTr,ULAM)9YI&R9S-Sp+bH0KqRqG"
+
+3RlE6dmBB)[(14#)41Fe9KmEb-ZP"AdFS#rB$Af+"9p&"RB3H"-@a'qdK@N(N69b
+
+B$42D@RK4P6HY&Ka-"*BTMPh"kMaU04p6YQGEqp[P$qLrEArClUF`dm922HFRFp2
+
+ejG41QHam($,c3rEm+[)RfI'Y"(`r"TVMDcQmaF6*Z0IM,l`SZF'9!,3Gm(fG'&q
+
+Bd@PV$j(dQmhQEVh@`+GlF*%NLm158532ml!a@'3`MmbcAGYYebH0ck%GGD+a,'d
+
+a3!"#lSL+[K5`dcS!hL6H@*(mi`e%``Q(+!8P0a%PPSNq`X"3C6`4&qlU%BPkJG%
+
+aU%38Am)881kH8*!!UJR6B[))*K4a+[Qaq"LFXa-IPGpC[[3RCMV2PT'[2,8d-Vq
+
+9hfK,0$jL1!9dR6i-Adc6HXB)(`)UTB909d)pp8lk'lAjGeCVC3$%CqV&[(%d)D,
+
+Pe1Ubq3df!8f4G9Jj0S5EY)pjN!#a(c*[M6jk#jXJpjdc$8bQ+2*p-,iI3N(aIaB
+
+NZ*j[pdrG9aAlY2&ER9CYUrj!GCbUAp1G%Am2#LT*HdMY85)qMG@r"Adc*X43aM'
+
+qQfBPmQp*r*5C@2[lVHBqEJIb!aLY4SDEckV4kB`b3&T1mD9GEaaN6Tql8+Q3!+2
+
+HDM9EeNlMHC@`Ur64+c3ZA!iSSH84[qF86'E2B)JYDN,Bl#UeX*`T#a3R"b$f4K%
+
+U+e(@D+,mCP*+E4K&#hG@IQGC'1'+q[mhMGN$'pY-M+8P2hkG,T'6rG(N`(52T-p
+
+f[$0eYL,QRrSJXVUMZd`DXJi"RLG0AVTP8F-mq3H(lZ6M,2PA1YkP"PmlFY1CaND
+
+4'VVFZfJaTkZ6AXj")(H@`93(Ah#8kLYdakAU&'hj2&p2+XUL6m3[I[fPNZ5IVd[
+
+*&2lF)bUi*aYQBBlV62h[3MPMB5A2[(lGAD6USb6D$%2FM3GdG8ia$rm%r6&@Y%P
+
+Ia0IUF32NcC92L&XhL@-Z39r`LX94H[@6I50Y@Y33AS)[0q,+Lcj0'$mpFTq[e)-
+
+q""VS005YcFZA5XYr%+Mjm1)%2$[+0lZ,ZDD,ZLF#D6PKK1+DKk%3A"Lf80G0Qe0
+
+mG*&"h`ZI,Nd(XB3kX$91QJJ8JI,PKB!#Cb$dppBGZ3$%M"8i%G-)Fk(D0Ml,q!Y
+
+UMe!BpRm!N!30#@eKBh4PFQdZBf0[GA*MC@0'+@9ZFf8!N!PR[`#3$aB#aJ!@*dJ
+
+!&6!k!*!%9%9B9%0A588!!,TKdqZkBG2i!*!'4-B!N!B8R3!!01F!N!B*33j19r+
+
+8)!0JXdf1KZrBQJf6Yl,IC1hbLK*1*mYk(AIl59D#TrJ!eTF`I$l(IpHj*@`Kk%F
+
+V80GhfD4[NYXklMlcb@EN&R*m1E+3!1A)3Ri65TD98,bDQ4GG,Lf)NZ"IchB5'I8
+
+UMRV@*DkI"(&Aa%iNT5pk3D[[b4cJ"I$aTl!EK-2)lA36BHd@aHSRRkb,Lk&)ZP,
+
+8C8Ik55b#0MqIqqj!4V'E$+PLerEFGK$jVUhk8'fGGGeBK&(3LHbH`&-EcBXiD#H
+
+AGL5VBKMdK@2l)T)Y0diLpk+I51%Q`[CEbd&%*,RYBGS-#[Yq5dEF26'F8[(Xq&`
+
+mNlk-E%qFpLmmea'(VL2p@!SEr90&h*8Y%*Nf3l$la%C$Xb(f!h4R*flJ9i9d84m
+
+*jMI`aCTT9(G9&N'8GQ,C#4%CL5!Nm#,B'`V2"N%'[m*BliBLiliPA*rll!BK+1k
+
+L-j!!IZPkRVL3!+)IbhEI+kGp!&%m2cMlp16m6051[a$2Dr9klIMXLbS3Nfk!DMR
+
+!U&-rELrdA,3(SL2EjiP0fcMDUqpq#YcDcX(K`GNAS&EX(j`Glc8DB[qN,QVLY&B
+
+r1pJp2kc9aHPjrI5NX9F4SS(43@GT&qp(%,+!8FD%Y@4LZeim(BF[)!)ak2*DSQX
+
+2*-6!N9#@PV#&!bhk-10T*lBAq"dQ(iMCM&@&faCqN!#8a@AN3Q#5i(Vkdaib&5L
+
+,!pqTP-A@`deaC-HaU!d`q,Yflb*b@adm(GA%bYVUqLGPFGkS%DRiXlb`m&[AGla
+
+q5iTlAY!*+YelSiU1&ecBQ)"aNG(V[1L4%rKai-P+pmQSU'FRh8P&JqLDP*`03iN
+
+1mj*R-NjX,pRlTMqT1l8pQ53cY(hAQjF%%(iU@A#kGS34me["CH)QR[aUG@APkqV
+
+#rX(KRLKKfX+Zkm4P8G,m94HH-pCT%JP6h96`C3&96QLLG8&ei9PNY`NTKJkF"P&
+
+5AC!!9aJ0Af40p)EUV5U@5cc'@"d5#)aUJ3C`rq!2aqG()T4qd`NmP$i@$m[L`RC
+
+H0$X4M3X+9US,#mZPrrYKcJH"fi+XK&C4I,[`FQ%"#aBY-me@N!$f[3,*JGaQlp8
+
+&2A+IBXA"rJ8#Qk'U!#2F88F#Ep5'49A8BS(9cICM)"@JD0C[p&KE(IAp,hhAHG'
+
++l-[2eGT4&SY!+aBA#S8T,aEUa'r!4l&+c((IVZmQ68K4XbFKeX1dE4,&[Kql(4q
+
+5c"68[Lb,fQ'9+c'%$CR8`Y!lG(YZBPQBdD,e,#mTLL@aZVQ#hf'a@)@8AP(YPi%
+
+[,6aMNUJ2rUJG%MIMCSZ69UTSrKU$!&a(Gi5jTPkZ@4'@X)$q3&K@lA#TpQ@aY&j
+
+FhLL+4E&bYE,5TTm8a"!S+44H%m[ikm5P)P1cGi2dTY@P0FC&GkHl1`Cq-K)dN6X
+
+R*iGlY@2KG#9NLkBb6U!dq8b5%"Id*YYm)BG!#EpDhB)@8a%%)F''4*U%RG($c'b
+
+X3(fQTCdJ!E)5*LV9DXYkF"S&MScM2Db3!)PU(,V$DcLNKhDR)pR$E$rLF@"pNP(
+
+8T*A(DTc9GMpVRRbq9pmr2(PH&XF(K`![4$,T4lkeLMIUib9rBEirNm2BQSbd+"8
+
+A4laU41SmCh[cDdc8kYUf@&`F6m'@VQ0@H%B`Ek'-h!",*I6I#ASpqUDY(dZ$ca2
+
+2LUS'JR%*0Tf29G$(fk(AMlXm%V'&j6SDmPZCKI5hEVXPfk*am+aj9[YXVp'XeCm
+
+T9"S+0F#-)chXV00#V[0KGkK#05VFYKU6Pi*3Adr!hrPRdZpbS$qdB9qmiPp9MJB
+
+JChbK-0-S)QTT5BNDE6"D$ZNhPLbY'I5E+D"U8-Y4[J24'YidLp"BEBqNhpFl@`p
+
+2c5krUAE!d@aRdmdRbE"*1JdM5fB-AU'l+ca[khFD@RTIfe$[HR9Z+MmTV[#H2Gj
+
+kH!N[&8GVq"[N)&ak,$CI&hZbR@69X+"m*aaDPZlY&3PPSFUT1!()[6q'@0PjUEp
+
+A&Tq3!-L2pehS"ZZ)aN"&'mD@lp"m6*!!p#JiQ2EJDQLYPJAq'&`p692r!+Ml%A`
+
+*j3G`5k30q4`U!4`YfF$%`R%X,r8DEUfZ-@X&E(#QC'j6M2""#m29R-3G`1*lJdN
+
+B5Q3DlTqN*QMHel4Jk8N)bk-ZRD6#rQXCI4B+hi&F"%N5p'Lj9J,-ma-hZp,$UQ1
+
+GeFrhc-Cf)`X2-*aQjQjdB96q2m+`)k-AdS0b(d,NS3kV'iBMeF"B$(JCL'5RlpP
+
+4JLh88LXM`lNqfDJBeA+FY1"U'VL*HA5Y"UQYm)UaVeDqcQ5(2dDkVQ6L5!QqYDk
+
+E`Bk1$B8f!@Z%K6(9D`C)YjDU9XeaC*L)2H9,l3)&rXabV@VYfViM[@RK[EmdCjS
+
+kY6X`+l'aK(L,X,X[RaTN9*f(L[EBm"j'-X4kedb#*KP#USKY"'`U&ad,lX@N*R5
+
+XKkD'h,I*(Y1#-m'0Z(j(DmS9%)+)[$5X12V&+%E3K-fX"Zcq(eI[9dh&UUTBZDp
+
+aC)kc4MLUBS4M0M2L5Hm'C&aFPGQri&89Zqe'C52G$3daMfJhc&JDEBqQk-RMZ66
+
+iS$h1B9m"N!$QCZdBrVRKq6$N#,F04jMD(2B9J'jBfd9Q56)X2D!0`(6!MkP3BRc
+
+qDA0LZXkkNS)8F![#L"`ZQ21a#LG3GL2`[5'-)kJaRYL4aDbD"!H"f[$e!iHBJbR
+
+[Gf*aj'*AJ"#5X2X8HZ"H,UNpZ1-AD!GkFam9@"$*V(mKCBK1f,T&2Q+m@&6BFMm
+
+qH3Vh'AC"-PU*,99P4afca+X#hqkCaCdqk"Pc4a%-[`2jk9L%Q!d[em-V26rH16N
+
+rIXSV*9aI'e'#)EbEb2p6[KeC)`*S&SYBmf3#Q$#*Z"88N!##&9@9*he9a3Ya"Ue
+
+%NCZD)GeB')DD6#k9HTKG%1Q++#Q*J4h"LhXp&!2E'md%AY%qD%,L*lUCLH16XqE
+
+CTr@6j`I(cf![!jeGCHk6q!+bK4i8)GP`dQEAaSjf2CN6[KER'pX9"4$+%!($`Lh
+
+cNdCME0lrf5JYl2r4D$+m&CX2P0V12cT9iM!K&BY$2X0A2Q`Q4#q'p)eje*fJ!PK
+
+kEF-,+X-JKXf90!I`%B*d`)h2-Tp`NMaZM[B61p*L8$"p1RBVVAQp,cfQ4I2+-X*
+
+(mX$p3!`hb,UiKZ@Yj`D@H`EXjJmk1"XG,%ahD``1Z6#NUI14ZF'#Rc1&8Q2bdiM
+
+imP*hG$-K+YMMB"B#Vk9TaPTfDFG)dbKVDV3ij'9%bGL5)ErffLK,XCfZfj)@9PI
+
+Aef9Ya`YJr,`ZbCbJV!B*"&hMc1fPRjZ*T))&j@1X5Gdl`)`#cr(N,fj@UKrj",&
+
+qI(!p4`2Rk*&AD3'Jrq#5'6&4i!AM6Er5FC+ZYr8Nf$rT$I1PjQ)Z0qNdC9'b9e-
+
+i,VmCaR&p0T2[@4QlMpraSSPr+`kMkPZ*'*Ar5!S-&L-BYp,-3EI!$pTYYDlR#mQ
+
+EM539))DGd(K,a0d#pT%fKq!#bD8iP)lE4JiT95qN4bKk`A)#2a54$4fIM8@[$hF
+
+*lY!!'`)aCF-TK0h84V,$Ka02%,D2p'FRk-1CiRKR,*8ea(B)1jUB3!YrXEqe!e%
+
++c46"k+@SSE9S3SHCVFTeVcF@3T9q!e%UD5eD)@aj"1e8+4i(#*r1GaeJq*ql%-R
+
+PC3eM`JpcS(CRPdUKYb1800!ii@G%Qh&r)Z3"NEHpDi"aURl$q'ZLL6)H"F2i@jS
+
+9N!#QYM"bT%h9P*mEaN22G[hQ&9CbiM`2lS#cib$UfClC!e&`K1AB#ZhN$p`DHY"
+
++bXdf%eL3!2+VE6,J[PeI*iF##Gre$GLUD`ra[,DbL6$$1L+P@e5hmK*5Ur'lPpS
+
+f0rdB%MLA3[E[#N@e(&M&b'ETM&IHY+26H`U2$@@$NLZdF*DfQ6IDa(8bjDCc&BH
+
+KVIYKfJGFD9f@Xj(91`mSkj8eRI[[HLTRj1C"@eSKjb%Fj&K1HrX3**jf$&j1Q-2
+
+@TiTkABGG-S9)CmXCMIdSd6"MCC,hrBkA(H$mbXZ&`TcaSND8JK,T$Um$R@S0S3&
+
+5AA++)IBSP*kQZUJ%$Zhi[60p[q$"VMrE8Ie(R3Z6"Vl12D'i!MC!%ZNU2hIiq!-
+
+f$P0`iI9Tp8FAR)(Dmj0SU-CKR(T56#d#dD5P'1Nm4LcP&LRXR@(2T9-$**M)Kri
+
+8QS,bc+F(55Sc3*5cqlF"+XdQU$3ESG,('F+Zp(BQ*RUK"DK)P-#I6%HP4#+K*j(
+
+Ib8C-4j%V,R3&c5,4RCSh#YbLPKBha1r&&U@SaHmilD8l8F9VemA8P#THR49Rmm5
+
+#"2R',N6"AaeL`#Z6MdhTe%DH'HQ$[T-)["%)3Ji%-&%eXTR'REb*'6MpU1RhHh!
+
+6%pN,Y59'6BFFr0Nfq`p&k5(G1!#J)"3X+'9$PNVSU!6m&'#JDN98&CjiK'@(YaU
+
+0L1!'c$HUb'd3!rIJ!400A0#5i!qDj*Y5DJVBp!4&J,+VARJK8$`aq$LK3DBVY8%
+
+B'9X1r&f$RTYMhdd@YDGQbq4T[cM#EBkphHEZ3YqR@b5p)F'G%fpUF[#+N!!Tcdj
+
+KfK$ABXaS4de`&S)DQR5K[[2E!qrd3"2($S!)A*dA'BdU2DYqm-Npk2%GQb9!0YN
+
+c"9*4,'&F8&S*D6*Z4cbGF,'G65qbGk8dHS-q%,RK8RM0NrB`)'TS4qiDD&(cRP0
+
+q4`26fRJMHp$#*4j*'31@(l09@$-b9liZ&RAbm"qSUaRU4pLe%Ha(h28Fpb2`KJ*
+
+QErSRb%d0qE(0,B2j%I4K#XTh$Fb2G%8Pfqm%80)rDmNr96&9RVX&p2$2I(h3YSb
+
+5[kYDK[H6RQ@!2bYCK[L,KQ@3!(p9V`cXElU9SIfS@"RFpeV&aaD8@RRfKI5dBU6
+
+a!NlcLB4Z&i`Qr&IMq#JBb,2!kM6CM*Z"c&,[bfZ9&HJ90!-ab1D9RVd2i#S0cqK
+
+,"ReS$1SB0k'F,R[K4#F[rBi0N`8U4rI1!2%la63P352R*+U+LdMD,fLEecJlb#V
+
+-F&"c$34AH3k%QJ`)@lMGpa+M+@-JBX-JQF-G0S9KZcB&a%d%@0N)CmLU8$$5kJ@
+
+ql35i+d-9P'#dF0@!(pRUj[ld+$b&[GEJV1[Sj-SiZfr5E1rYGNTDY('9,,Y0Y1-
+
+Q4hB)3cB'`fr0Y(NU[3#h2hk"fF9XFekXG$hK#"$81hkaZ23Nk[Jl1m(9&&E*"Zh
+
+lmjUPF3dPkQEB1Q9(V[Li6Yp@Q$59(Pc)Lj!![CZ"UcKHeK1L86Y$A0NLJL(C-jD
+
+3!",H,)TPLJ3XLRmPqeeh!cfTY9TN!5+qi!@1`Nkl+Gf3!-2H(`hIY!1iB1H(KpN
+
+pQ248$fl(08rfQdGl4qQC(JDB*2j9MGVNk28PHm#bYBY6B4l5)+pN'C)3Na0+9+K
+
+E&N)X@Mq11#mY#Qr%F9TehDjr'$L9lZe*$DiF''3Fj1,6"`8qFiLVELmXaBqQ#3f
+
+rje)e-HAN08Fr%meFd&A%bF4bfA3'-pX@aMSZ*DK,MZ1`#khNL'Nf1A56aJVrHfh
+
+6IEc2-AdIrG(R$rD)+PV3V-9hZpZrTiM'M,lI5T,EN@MJ9)"MmSl6016N)-NmXfc
+
+Zml`0*kqp2kb$mY8hj@Spf2b[ZcYr1D`b$[+bPUIlYqEI(-m$+%*-QrLVcm3`cR"
+
+dV#C$fYMH4SCMfaa"qHXmpBE2-#'cBR!i$k01dkM+QG#TJYYK*V835QJc$fTJVM$
+
+G"R`'[(59,-[DeFF&Lc1j8d*dkPjKJ59TRQjlT1HdQ2lD!3DGEYpYikb6#4)a(Hm
+
+fM0QLbDhrJ$CUmqi$aG[kA[#qelX"pP`0IfH$j%(Y"Vm)hVDjU(4hJYkelkE5ZrF
+
+AX[kQGjYVGhm)hQYV3![Hr+$CV1+Yi*'+)DlE[P%mR6`e5IRC4+BR5hAFXiH,TcK
+
+kH$AZi65J"LQVed-H2,remlpClb0Ua1+6P0c6GaCTfU[12D5ZI)TGk8+pIR$"pDK
+
+-H*jFCEfVJZF2&MdCp1N`$$64eh'hKYqL'fQqp1MZ,amkeZq3!&GSAhS`NSi-a,M
+
+PI!!l'clk8AVVI""i&GcZ$N0mV6pF@YYBjI4-5'%!ZR(8*aGe@CY(G(a96aX$P-e
+
+pK9BriR[30(C%%dk3!)pjdJT2ZEY[H8&6L3PPlp-ll,e[mRHENSrC-rT6cbpa*`d
+
+N0h%!Hc4ID8e&T`5@p1faV*!!'M3(B+celBH)U"mZ-iNQrj!!3U&h)#'51bX%#kB
+
+&3rL)"+4kSS4(%*TL-'R$TI1lf"l5Y0(5UXPFA(Ca4KSh44Re+8eAX5LbQEfHp`)
+
+0[$j0HS6!,EpJ-KUlk$l"B3FprHS9K8KMmL4VfX6@bJ-,M(3X,PYHfeUYE+eY&S[
+
+,A*4F5UqGG1Y"N!#FA3DmLK3-dk,d'!Pr"#lSTM5NPSp)G'f[[G5$`Hh'%ZX)!JV
+
+Q6UU"IF)"H[2kD'YcFhf,+K3Y6ajc16mq5Uqa%[j%beM-9$'0!)j6kP*V-3G#Y2U
+
+E2Y)6ck("MD'IG*A66+ifRFdi`Mf2"r4!F)GB8$'8G!q9pRGMl*0Y2qpI*@4erqR
+
+F9C`H"FG*@CjUIRGl('!HB5$-BIG@!C-TaRAp'ZTj"VJB"$m0$RSpA1fQR0L%i-8
+
+8QZNUM!Hq%M[kIDFIdceB5#l*E+'JPHCl0!9($JPc--DDXN!hYS,fT"eYkbYVIe+
+
+T"bY090d&F$0&,531a@4#1hCXMml-8@"("l3540aTFF"*Z0ci0jP!P1A"kNJD`fL
+
+NbJVVL6UI5lNF-QV3Q!S&dVP"R5E1SXjmc8LG[E-)80d13[(58KjY*N`qAXFdT1i
+
+@H881ADDr6SBV9YX)(qR,*[Z0"Sl$d)kSAXBAZ2+3!$B3dj!!0M8d1X2&B+1MI5D
+
+l3[AFUJP[BfNam4U,*VqCRqCMPZL+ApDB"Km&DY)X$Ch+DZl9kbIe-PT#-NpGfNj
+
+TZRFFi&mbm)0qTiYMSh4Nr4j[)6NhDSLZl`YbfrNY3D,'["ZUM0YeV4aMq#RFIZ-
+
+)C+P4XcJJJp9KGQTB0d$1J%,5i*rZ)US')8rV+S1kE"p6a$mV!CN(Z+D@&G!K`l+
+
+irh[mlZ0lll5aIjpYJ2m(!*!$$3PYB@0dCA*Y,QKMEh9bBf9M4LPPER0P!*!**)`
+
+!N!m@%MX!&Lj4!"8`1J#3"&4&@&4$9dP&!!#kBG5cZQ(8Z!#3"K'*!*!'"TN!!(M
+
+H!*!'+r`-6LRjP5!$Q"`RY`Qq1*kY6IKjQqjekbBVNp1VP4bGl2@kcFjpC*19!+b
+
+HTB6Kd`K!VJ0jC"2d)aB)i(VV-LmH5d*j4cKj6QiI3G$'Nr8!J'D4Jrd@lC2pTLc
+
+3A%dlFIPF39lP'3p%*!+D+*E&)XJ05XPm4I)*'[#cGbDc3SP*V-NlDp24kHN*M3[
+
+5-DF"Rr"8jb3MqhbILMPAZG#&3Cba4%45TB+91NTCGl()+9-5XUH%TdKa6VQ-p))
+
+ThU9#cLKJ+5NHLP`V-CjT6N)65m-$U@JU3a%96Jb!Xc6NbUSh,MXVhPrIdhZHFX8
+
+5ZTf0%aKp+3+HjT`Bp"Y%([-34MSaK[E#Z$'Xh+!,#A9-#jPfL3[J&9PrC8V(YG"
+
++P8p5158HdmC)46)cj'fi9e$#B&$0hl&F,k&S[!p*T&CR,$0B(%-C6&q)*+%aTeR
+
+1SeRL1aeJT!rpZapZlZqSGre!(hU$3HrklU%,4Ke,S2QFPhV%0%X%j-&Sa9+E@#I
+
+MkRa`pJ0iHqrkPrfl"eK,&rflkr2KN!!ZEJE8Sp[Hi+jrGRrC'p$YrH$fCRMH)4S
+
+L1P$Q92`lJUJ&4"N*#lPQ)XQIi[#!%XKK9a*5c1BFC4"`0%Y)M!*dd@mCGdTB)Y1
+
+*04q-6FDk*#*+TICTS33+4X[Rp$X063[ie%q$MNq[hha,9bc2U6G(m-rBG+a%1-(
+
+69Bm1Mip16Rfk(rD-UIJjD&(V+j%'b5cNp-Frcd6`kA[&&ThiEBX[83NTI4"T+"H
+
+h@VNZ(LdXa#HdP$B19i!ZdF'qD@BMUr99b#14)JH$dE$reh-k1F6A`$,&-rJidR)
+
+83M#LSQqPdYl[FQ6+[,5lb'b*H4,HGL*#QA*,,j!!SjV0#AJ41p)cT411M'AHcf)
+
+f$)iL$j!!`A58m%M6d4C9MC!!*l0H[FhJaB!(ZP-5[++M4R0&V@AfV'FXYCE6r`L
+
+U'+bL,A[-5cZ1k1XR3Dp@URG1,%5)0PUceUkY[(p@ZabKfFb#m0B4qGSp@eRYJq1
+
+GhQ*,E+,3m*BZ@Q,(A%E6+Ka0fC+mYHBfR+VIDe2DMHU+fhUk)EH3!2qa`k)0Gfh
+
+LQYk%DmGF*[!hmT)(r$rP6%S90Zc1*B5Q%VRm9mJfV'[0&@[aR,#U3Sjq[`1b*+V
+
+Ej(ARF![2"EE%d5Q!$KNNR+P4UCi`LA+`f-GeZbEiJpai5lpSBbZPr+jmF`461@m
+
+)V[#i*E$PEXCT1[(b0TNP-kaIQe"`2FS3JVR)[APlZfT3VqPIX-@qSrQ1%IZHHp2
+
+2P&H!JR1ki`aN)T8AY-d"Bf4"!9iIDFBXq$5D+$2NeN6M#9kl1d'f5Vh&CaH'iNH
+
+18mThY0M4PQ(fiPpijq#0Gla,ErQCmP)'9ZPbaeKi51FA4U1aD,8`%`f65#0T$JU
+
+-FMd,d"kSN!!#K`5lL#2"Na!A')aaXhlR6!NjbeZB[+#Q)'E+RSi`3FejU*b`CJB
+
+DXN3'e561iDb2ABi3iK#"Zj(*UFFlN`jpa,%!iXjZEKrD2Q9-QlRV%fT"M%9LcN6
+
+HSDN"mjl`YKfeaKlB$Em8$+0rd#e2KaUh%mVbEQX2(jc3j6)(F3@a-ppmeSFZrG1
+
+jheeY9!Y!hV)fCCdXle3Cfa)86`6cP33hi&kkiC'V+[LA3RJNXmRjdRb242$p5kN
+
+qdLaI@Z@4TRLT%NFc3I'NF-'f6j9MFdrBJGCM`m!8lNd+"jpIqKc%(h%k@j2DpI)
+
+Vj6X42&+#)2f9d4`a'fp`+01iiVfcIeFALLN+%2Z1TVM5m!*9XB8@0E4B@idMA&*
+
+[VkMCADkhF@V606jraQXFJQTirE#@Kc9E,M,2@p*E`X1ID%Pr`)-YHYYj,[Tli`4
+
+VjmaJp[C16KaX%H259F2FSYc$SE8#(4pqke!6Bd&0pSdlR%$EV0E`cH'TJ`8&UpQ
+
+1hc55TmbFKeQ*2$Tjii!&6a+jU"KIRpVLVijKla@,c#QX[M&eDk"Tr@UFqe6YE4m
+
+)K-1mflpD!iMGBTV8%4X!,X`M($VrpRIX&9kqB"K8"(-T3U[A0*Q(TD*iVR'GV*q
+
+cK!QdU93eS0jKV[5FeP)+i1C`Yq(`EBXq36C$I51MD3)SAVde"32$F9%cra-jN4'
+
+1`ZE0AY5FP)[qaq[lUe@KqDX'FbcA0pqIdrl2MEja*6!R[ScP!82MPF[IEMX,!"6
+
+,ZN*Y,A"EhDI9(YqS@deiBe5cdjpFX&&L#BG&RLQ'2-%aedl"[EeCQSY*DLrRQ[D
+
+KGJ1BE!(MRq,lAfeED9YP4YMr!3!!$3CYB@PZ,Q0Y,QKMEh9bBf9M4LPPER0P!*!
+
+*iPS!N!m@*dJ!&MC'!"8`1J#3"&4&@&4$9dP&!!#kBG2kZQ(6rJ#3"K'T!*!'"i8
+
+!!-r[!*!'ql3-6PIb+d%'-*-6,X&AH'EfK(H%NC9G4eDqmT9jNNh2Dq-c,U(EN`!
+
+3J0@c$Q"6I,S5J+kZPI#6S"qa30@JC`iifB4rCdF'Qb"K(pRN0TPZXPHbUXl)Xm-
+
+f(C,l,DA1MU,bMAqTQ4Yh4#YV)K@[VD+PLGHTfQ,`,lkHJ32q@RfcfPJpAa6Np6[
+
+dr0@VPc6E8,&3&+LjbSUF61+HTjQq9MEAaBB[qM,9LE'CPL@2NPDid$NcReZj*$`
+
+P9LR+69,F5+ZkY$&VLQ4'9X8k,kbHV3Y&ZL#CaFq-CD&dXQR)i(#GaFSkpS@bbdD
+
++Np'86P5QV%cTBMe,G84R1P*CVNL#2erN#a9$b)B-`ljP05D9'[6@J*dXY-QkT$6
+
+Z,6Pp68B[DU)9+jq-ECKiXQ!K,CN9JhHJhSC5#B&Ur#1(p9G6E,@2#8CPRJZcJX3
+
+,-)2S0cT0DDCSRDYNRIS0$b$5Zf&i1Tk'e"YGdVYH%24'i@8AL-A#i&TGUj+2AUj
+
+5$AS3fXV-1EDKF6i)qUI!lAdp2"Z'Pj!!PYi1`p&J-U'hii"kG0%,`Q&rHYB,k')
+
+DA)`RJb1L#D`$CJf,hbb)@)#9iE"B&9+RqCdG,K%#1H4+BeV)Di8`L"55*5C*%E,
+
+SRaj[Q-M8C(-R2K#h(ZZ56LJcK8mh9L0J#[16qaX1fa6`DCK&4clpl[GId,R-FqT
+
+G`rKpZCaC(FraG0kMiaI2AllbD6VTXDMiHpCZIkD6@#9`jZMP#caQ8EU1&Efqd9P
+
+XE[+MaCHl)aI+14m426ZN6+PBa9maMFp8K["M0KA@!8IjdH*JGc&2c8c#6cLU@Cr
+
+f[Kf)F"#F$mILG%H8ie)$(Z49#X[Xi5BRBAMj#5fI&m@Q"(-UE-9`U%)%I`Vl3Z`
+
+4p6b6UB-%JXlJV1(*(kI$N!#r@BmG9Q5b`TSdfK&NCSMfK-,KZ$m*KhYQU[McFX9
+
+Bq"5cG8*kPPla3lG'Tdpb6NI$5IM0*chA'5)f[Z2,J%XCh3U6Qe6YF8EME`Cd'+f
+
+Y4I84+3[lKNE$XfjeH6Jc4@'@)LpNG0@&KdrkR!(A4XFS+l284&G#CkYeiI&*Khj
+
+SZbD6N!$RVS4$d0QF,eZh*b"k$)Qh3V8LH!'G5(Pp-HLIMRf#U$VVG0ZY*%RAqF+
+
+Vhf[EPYLeTeVD4%AU(I[9JAr`IAEJd$J4@KbHX*KAfmYr[QA#SReXIfbhe3FN5BD
+
+DJQD5#A8Y8j%MY,Z0Sf"h%IEq-*L)AR$5K!(L38JlTq0f-!Jj%5i["UkE`MJ'P%%
+
+(%*dkR1j3I`CP0#I1hP1jMT@B4r6MMjrdUHa9#"4J@)X4hY$cEUNV-@N'L"E5XVq
+
+%54+2E98BX@+1Y4PEbPV"#RL6F(`K"N%`$RbN!4[P,KTEV-HM1j2ALV@)Y89JHT!
+
+!G6J+rDfX62Xf1("4fSqrJ!FcX"2rklH94)hmPq&+e2m"i,LRrlCF*I-XMpXYb--
+
+*+2-VllM*,3$3Se+rf%0-GZMaiqf"1*rdaEH$S123+mGa,kNXji6G*@EPcl38[,6
+
+f,qj$RDdi9TkrCHlkAiGEA@l3rHBjYcVA#d3L,BNS9P&+X4&4B9-4IHS(jBQ)d%@
+
+,*dqk)&ch%6BZccR1`E"Uj"0EL!laG[hGqjT!@8l8"a@KXq4&h9QDd,Jm4q%Ip%A
+
+IS9@KlX6a$M%pC0a,1k8NTIjl##%B!QN9la&U@("p[%9SR,8[-Lim-Pd)2)UP`MD
+
+`BHrA5(bqVeA-U*&bfl%U3Kp%fD`GE2f)k05&9rU$RA(EC%VCC"cRDPl(+aIN%V8
+
+kU0rFie)@LqDkCUjR5hGm&q@Fb-168GN*rK-5c!RH,dZb@'!-5l%P[GPQ45P3Jm"
+
+HfrR(a5*6HJ5"DMkreBd5PJ%V[$ZRhZIQ6Yq'+E"qB[UhQ'8F`&BB1AB2,'9BIeC
+
+3NV#hm6`cr2VFc5Pedf!cdfZ#@hjSeS*bBkR@3@iMZF4`i6h[0%fP[%A45+0859X
+
+JakT8EfAa#XfN5,JeBbccDBNP4Xk9B*!!r,YhJl2qq"aMb[Lp6`GI(,hNUYc+e)e
+
+E!5V3+L[UIS"L`*qF1"cEr(Dcd0KD[DG2RAjIdM(lIc314AJDM+(IL5Y+18"iAc!
+
+bCRPm&qG2RM6P`hhbMZCeZf@cJYS2,&`U,"5DSe@jXYH3!&*Q9kj@ZG2E&F-UL6'
+
+eh!cmJkr)63(h,EC9CQ@LM20*Z6E8h9CJA9XYG*3,VR#S@)jQjDS$qRlQ,,-E*dV
+
+(h'mqTBXG0K2EFA9C@CRkZ01KG,DT5pQ[Np4ID(6)Q4rPrAiKDG!H[06DPkH9Y2#
+
+6YcH3!%pK-"ddEYLL2A*GUi2Y&8diYVb4EkpV+hjXYr$(`"c#+bl)55T4HGr3Jk2
+
+,B"[*TI++K8@hb@!fRrK!3&*MSDm6$0Z%mjihQTkjK0Y9lEq6b$GjSCE)c&CVKP#
+
+iUT!!'e`im'GJ5*FLZG1G!'iF'Be&[aIf6c&-R2J)maV@ZH8AQFV21cG3-"d"i&H
+
+Vm!M$Zm2$)4EaLfRS9%(0`1mKk`mq,c"qh@Gq(keB-+[hR5j386rqSFSfq&G@)52
+
+B%8*p3%ZXXS&2V5V@D-kB-Mkfr`m!!!d+E@&VC@KPE(!ZBfpeFQ0PBdBTC@jcC3#
+
+3#4Fm!*!2&Lj4!"BkQ`!9-$S!N!4849K83eG*43!!ZQ(8!,TKe!)!N!B,)`#3"J2
+
+P!!$F,3#3"RJ##dlaj&H#$'!U*jcLMjkAq4&1"Pca0-)*)j36&MP++$pbh-L!8c`
+
+Mar!86`&LUi6L!lJ)rQ-H*e`*qK%,e(APJ&e(Mh!l3JNRM($bR-`i'A"bR!`i'A&
+
+bI1d%!"TBkbHC6[,0PD,MUVl+c'ae-QSP5Ie$S9Jb5PCa5AQQeF9L2RmjPDGPphB
+
+NEdqXMilAkZ*SrT*#'Up8AU4CVUV$FDGH2XTVNiMrNZ1-eR'QJchkF86iI2R9f5R
+
+YCcT-6D&d-0j8UPc(HK2RibQ0br(HNmiQ,DEmCGPVN!#Ym@k$2cmpqqECeqF[6Xp
+
+II-XjEYlPU0G&leQVG6'i5'R*#Q%66Ucj5eeBEDCVrKpI6UPHP8T0+6&jq"Pk&A9
+
++!4UK-+6clml1Z'8[,8SBTJ&J9'@*R-pLlGI%qDN[DKCT,X"6YeNG,&`9GcCA@Qc
+
+U+KJr4eZ8945rLE-m[X`9'BdD&+8Qcme0TPpr(QR%3$FQ33,Vr9V"QiQH%SLHSMi
+
+AlQB&@NLN&f"h*b6r`0rleE"hh%Q9532)E-'QT#!T`,lee2bd+m3[H%aUIRFEJ(i
+
+j"ra@%)'[2@E&RrRdpUf)6[$kK8qlZ`#3!)laq$dDJCEpm2V+(hQ5S*A-aGXp,[`
+
+QB9*-*P)2-Eb6LA3!5&5*Q-bCTGAjcT!!-PQ&rTAe"r-2MRFM6bc4Tqfk+Bh*`Cm
+
+YM4qMHRM9[LAP%8H4*NEAQGi`*1$H3fh-L1$N4h-dBr0EXKBB@k[MT!eYN[F9b[`
+
+lVCYrRR$rPLPSVCH$0eGJm@dX,F-(2BIK2a@Nh,3GCZkcQ@4*c0TZ91dS2JlVTjA
+
+-)-GS`Qjhe@@ejVJ&i1cXh%MafRQblZKM$X1ZE6jKl!Sd`r(lFV9G$4X*S0U4j*[
+
+VIL@pIbIb+F2VpIXRRmHaqdRq&(*TIc*Tp4m@dCiSmVAI+4(),F3aT!8!Yi5H!HC
+
+kfP%i'PEKrESFJEFrklF4ld&$Z2HJFFErf1VJqS1ZMrJdr0`$j0f4bL[P,QXHpS%
+
+Yaeac$9J(16AQGRJGEZfBBR,FQVSjKEcEdlm'GEQYVTe8[SfN'&[E!2Z$K[HA,eT
+
+l&D3&4fJ9k-T+ZJPTe@#k9508G`rdND5PGc,*YG9p$-Hh(TrjpJ,SVk&KVhijL*Y
+
+d0J#fT,q`h@Ni5(!IdQ@TiZZZQTfIhHAFUf%PbZdihj284"!iIU2L3jpb'L@jU46
+
+F"mLf+SjJ0kMI$(Y(cDj8ZSk6dXK['D`rh+IFQ1X+,9iVLLp4maXCkCRid2lK3ia
+
+*T!mL[4rT`dL(N6k1p)N,K$LC6V0E(U8bVNeCE42BIK$!pG-)j*H3!1eDcI&i0rS
+
+I!*!$$3CYBA4S,Q0XF#jMEh9bBf9M4LPPER0P!*!*BBd!N!m@0NB!&N`3!"8`1J#
+
+3"&4&@&4$9dP&!!#kBG3%ZQ(8$`#3"MZ5!*!'%38!!$Q%!*!'(aN06LPj5T!!!F!
+
+f)qc%9f[[PraT$MCCQDee,TcQ4GC[BCZ4!9m*2VqALmq,iEm'bl',S"qY3&hIS%(
+
+fT8fkV#1djIK&CXXE'5cN'&NSS3)Fd!bJPF9jX5MiVfr'[@9,RY'I&h3$[L3k3pq
+
++hF#24$q`Kjk6BY#IIG`'"rbEf`N'Ck(ElFA#f#Q)m[VkUQLILEMRL,V6GI`i%N'
+
+(MipmppJ*)cFqSaXlTZGfJY"h6FP$dQVfh%J-`U!EQRf"SdlS1#)+1['*'6SEiL`
+
+B#X[d4HMBEK5(ERXB1m+0KHRE+d&)3VQGXi3-,Jjpf`QCIHb%r85+a`G(iV(M1k(
+
+TL@I$YZGDBYqe($pbK!RqG#2U16D%6-J3l#kTd9"UL0d!l%bbb)C`A0`2"HXEq++
+
+LL5T@44'%#42$M%R)8!3$!Lp![62KQ4")ibmceV8T8ZeYiIV-XaF-)(%2c#$kLHY
+
+jSZf)BH4dKPiai3&%mAb[qH6`U#QU"br%mfUpAMeS[YJ!BY`,F0XjGL3IYcr`A0#
+
+$d+(TXf-6'NpVpCdR`+dqh0[IDlk!Y'*hVhP3Dc6%lQ&G9-@cDVfjYh1dAkf,CdI
+
+eCiH0fV)3$9J(c")@(bb)@)#9i6$EL8hALbCfH)%3L##ACiZHHH`J$#`(b@),8eM
+
+)SYmmRM!a[F$[X[K!6$ff)Gb1m)1i+%j#&`%6"c2h*ac5&#L+2GpD,ST[[Pd66md
+
+S%Y9M'(r(l,G$eqlLk'P9P#VPeI@L1'T8596m@jQI[qhkPMHd(I%R#YrPhTqb'ed
+
+[D*Y`3(jT-h+l[ZNYplEc1dlmBhm`[X2CMK[cYffRirT`G@5lA6Ffm+[!5B3$XEd
+
+P&NS,iZjGj%TAE1*dID%`2qrkXI#(rEB6$Sb$`dFeX4MjGN(mkc`R+blEAY%1Lf*
+
+Jq6$+`(2m$EjUpFa3,!ifjL934aKZe**%$'*3J&rMBHJEjB,#`#fa*5crZ18(YY1
+
++JaELMBiB6l)L(Sbc*Bi1(T!$(6a+H*3dM`&BG*dBi)0BFYeJAC*V102A)"UZf4l
+
+p#2'MP0*N5*MLDI8[VB1MT`pVG9*p,Q0,5'p5ICR-TU3+&be#"jKS#5DD'pbl*ae
+
+blji5kD6RSNT0-E8a&`H&-@S4'LABlmNZ,l"')lTcrdD9I61L'a,fCi80q1EeDd!
+
+9q&4T8&ZJ5qV3@B$4TiV-cef58BMhFRLBCbB1%ILDJ+BN)UL@12J3!6JUN!!#61h
+
+@&R-$'@PlNIMHmG!INPX![LFSb%"-KU5(ZQ3(I4@CCSLJK3hNkE(T`CEF18)5%qH
+
+)RN%3YC!!TbeJ'B3(#0,Ri,$CDMkT(clI1hK-('kl(D5iH&,pjeUVJGVfk2$Tr0`
+
+FCCH"G!-"!h3+8Y)rirm$SC3SL$Z8IaS"r'j,%A@9C`k'3ES8#01!G6Fh4AN0IQ!
+
+5"QRbQHS&4apG(,"5C0mji86I1fJb'G39"9B8aZlHAa#dK9$5P$P,0($mKJfRSej
+
+(rmK[+(JAMU1'%MQ1[9A@ZB1Ej1Z$[Ad'J!5SM&Y8CA,V[IR$IC'LES"%JILNjT*
+
+h*cHP*8$a8Nr8YeClf%&pp3)kf*KrH(LiAkXHS1AkYZIkh4CGK@5leIe'$E)U84T
+
+lMe[0k[He4UYDIjad2C4%dP@8jZZe*L#D,jl9*"1(HC!!-J6#kV*Q8q4h`"+4YH6
+
+kaQh8!0,ZXeSa4mUkfdM#!PBQ[`Zp$DeeN6+8X-!#V-N1ai&Vma#&F%5dkqEjL5e
+
+JFk-qV6DIe1TeVV,%a!P4#q0`D'(S1,8FAPr%iQP5DU(6kG*fI)BTKA[QSeTpGrr
+
+`qDLabShX3VdhfK0DJVjTc3-HbBBG!l-#K8eTZ96qp[lDDQ@pXPC"jj6'Qk+X,TI
+
+[PpI@+pqXVDjpYrlYqQUPmQfT8X,jqQUjY,EqhHTkTE5k[RCrTI`G'#A*3Xc"JNa
+
+X'k"IH2eDRlVYIL%a1(aJp9iD*$b1I)U8dSBijGR$i"X&`QM4('%mV$jU2DSfUkf
+
+MJhTYTmJa#Df6NB(aH(FBK8M+m6544bCdfrA0m#b0kkJS0i11K5P-1M'j@e5PL5l
+
+T0(5amMRbLL`1`U@dJSC&iFUfJC1!Ui@IS#Z2G468-L!k#S`FT%F0LKI-2TLmF,U
+
+&LhacC4%c6fM4,!EZ48%N%$b5!B$N2K6&T[85ZjYPBRJ6!HA0LBX6(*`K$Fj`PGR
+
+Jcm+XJd%%"F3HKSK&9"@DEeC8XLb,@M4`,0Id2-aC[QJ-c0"DTV')`!f+aX*Gk30
+
+p#NQ5-j)&bY(+Uf)0hZ*HIBG,YMlYdd3K$3%4-GD'ZJP&HGXPhJS'1ii6ZYB8KSj
+
+`fl,$r"C[0R%`'&$ZGc`6",C%@UT8KeBG+)@NRNJCc)f-)+NcFU8M`8'c@6p#qjP
+
+6APHe8pBhl[Lb-QD!ULr0+F-$%F&YMM!6pP*+A419q3-%'Lj#I)U)i8"ZSmU1%TH
+
+j`Ni4eN5V4iCMc@"e%f*Jd(LJ`fQ*IQq)GZLB,b'+4[JT4IMT,8+dm#!pY2,$1$p
+
+Xj)Flq@%c2hb9(cVjB6Frp22$&AN)a5I1SM[+ABC-fJ*V+'pU)DA,-Vq3!0'BJJj
+
+qGIQ@M-1NB-NYkB1e&2FP6Vjcik5b843b&-Fql$VhUHG)9&AS&FIbLScANE+jL6m
+
+a1NG82NlXX`jGa"+IcUc2BI5pLG+,`[![iX6"GAmK&Mm1)c6FS4Hl!a3'HNi3H,B
+
+%a%aYqPeXCRL6)3YQNGm"m(+1iS)`6"T-JSMTSZZ)dY,p0G&a3h#M"U$E0hQFaGT
+
+N$bNRF0MMGQ(X4DUNH)+K#[QMHJfc5DCf"bR!C)UVhdJbf6DP-1c3k8maj*!!-V,
+
+dYZ!b,,FG[V%%XmTqM$9'#RH,IL[&--0-#*!!pa,p'$ThiJMUrTU-$`9Q"C&K%$b
+
+VAPL86RXE)*(V-iX*b$X$AH8-!Pr$Q,%Tq44@*+&CaU!4D$40rL+*8"8d#XRj-`S
+
+ka)cj$!EY3Nm!Q[QV-*CS&h$S(a-ijh4`MBD#-N&$hTC,ehMS-$1mDl4`P-MhXV6
+
+$f,P8@Pl$hSPIdVF5dY@3!01P6PA95AMSLS3A"[Z(M`r4Ep(+%4!*k8fa0-1JZ-P
+
+R1$A6*IQKkjFF8r2B'[IQ5jhb(MGYDdQKRU-QM"G+J$a*'N'q,S5MGF'9Ea,59TH
+
+9KL`j(GG6)D+aaR%*YN%i3T!!H[beZfRee-%EhCp3(SJ8RNUaH9@,(eh["ljTilf
+
+3!,UV(Kh`0#!AC(Sd-*f)-EI`G2aKDe&EbGZpC5iG@e+FLm'&TTM*fX+mIjpD*1$
+
+ed$,H025m0KTDNPkM&c@G9f18G)ZCF%T+f[PJF,lDC&e0FCd-1%JU+@M+MF"S!55
+
+RT8(i5cT24`Ie*N4Rf2Rm3(rCZL1e@D,I5C6*krHS(NL&#!34+!e!#,43+TA`P%5
+
+"*j,`EEa&SZX5mp`Hm"&&$,'8TfpG06IaDFj8Z93e#,QCcQAHr5,8jYFDG-,rY-1
+
+PVZ29*h8GQjQ*r$,jb"`Q)-BQXRHNZj(pQA22"AirJZAK041@"&4KbQaAi,,NmU@
+
+bGk5bV%b+GBR8[d,LjdpmLD-)XUE"*#fLkL6+ldGfGr9NH9IKA+Re@U1mrSMbJdE
+
+ji51+UBZf[Z"G4fYHa8`UAkQXfdK8RG2+HIPef'(Sda5$9cYdJ9*THcY&62UR`Y[
+
+%QmQ20PP-0C+HDe4hDe6kkH@DA!5@dLYD#5PR$N8h8UJXL)M$BKiDD@a`1UVR$2`
+
+S8!U$4Fl%A2L!#Lmrp[EFGSKA'G`qCp(pFkUp6669Z[2%eMZkDVhTLS!#kPMdM2R
+
+IH91MqmaEdAihEkM(AE2Y'DMAjI#hD[LK'D,k*6X5bIBfeT)*'j2PHa5C)i`$Yc1
+
+1bK9Pm$35e!AjX$9YDBb0Y-U'*`3,hk*)6+p01TcbJQS5jb16YYl(+LEjkb)Q*b!
+
+*m@XGbbBK#FKkS54T"i`(dT3e[iUJN5JErQLcV,!1aA`cCD+A(2M*a#mFVX%(&q#
+
+$i)52LS6r(PT@[$&d1TCraTDPlcGXVS(C+-G&N!!Y+Xqe48IjGFijVa+`X@X","L
+
+S3(qh-RhUi@JN,afX@&Ki#&`2YANcrpZV$Di#Nrl"R1LjeGX#mVFd8VbZ#mCdBb5
+
+bJi#L10NCeAAl,*mB,pqFAQaD9ipTZB*NlfPjK$NIhmE3U%l9CSiZ"cA'eeYVqNj
+
+9ANMAe!r2F8hEcTlfj8mV4bqV*!2TG!M(QT6f&8P&6cd8P%m%dD3S!e+LdE"p3I3
+
++QPk6jp"i+I-2MFUI0&UF%,AGBaHJ0c+Y60$alX9dkIXPA`MFQHT-hfd*[U"MS4k
+
+KYehdR2memj*q,([&pHk-+dEqIq6'4kD[Cda2[eT!pBF*962UZChiLrf`8Bh3[Eq
+
+MHc1Cm3'6,qJr6E-9Vi4ZS+-*0$dGZS'fTRkKpd3hf2%d+dhlGp%D-r6IGGZCSIm
+
+KAA0U0RSBGB2pDS,0JpSAF$c)'HY'Akij(D06H@hLiE+c%1(GS*!!'254)Ida'9e
+
+BVaL'%iEdL1Y'(2TJb#Mqq%AA$AKh#[iIC[3Rb*KRrV0[$63ipAXVk119YN1IZU'
+
+US02%,aI9FhDrSXRSYqMM4qcC4ek5cF3[Mep!Mqk#cr646[T-Kj!!Pj,$LQlkqX-
+
+P3-)-Ykmqhi(MEAPDaLQUff`qk-cHq#38jAB`*@N!NUFq6E*$*2NiCjR0#TV[Vc+
+
+6&LPY9Q%UcIpS`3[6"jTI$4!lb4ZdhSkK2f`3BeI1ddBBF3IicA$S(*Kp"jr!H#"
+
+fm6%SG6T12#H+,V-f$5(NMdSB[rcq*EpIQGa0ATRTVbaG,99+-*Ec2!L*2EQB(QI
+
+FV%KG6)ci(YVA,a5&aIqUk+JEd)B`k`A&p0X@A4rI2D-CGbbh53*MPB$S*ZNTMhc
+
+@ACqTHqQh,&bV6jr%`TFZF0"+2Y"&M1LE,JhKak4MV&h%X3Y'X!Zd93E3Rm!!&[N
+
+S+bE+AM(l+d[VM-dYJf$a9,,CHRjBabHlm##5lP5b1`R6TAAmj9)3ibfa8fh8$Kr
+
+q%ce8B+kM'kPIq1@--),fMpKc@bfkJM0GS-k[93STF5dalq'*B2V6Af#C+UBZTGq
+
+&HKF0%ae(M*!!,Y+Yq5I2&!&9,"JA'&MNNmqGkBiRAIf@q(R4)l5XH'5LM"@9ST!
+
+!aDp%)EFV8FTr&b@a`kqLF-*GIJ-Z54S1[LX%iRH48HE2'@9U[#aP'XdkNMm,'AN
+
+KDGhTGqA!LZjR&j!!*5-AT"qE)b`ZMIUFRC!!Gdb9c1V6@KRXpKLf)2kXAQ1-VU%
+
+4MQ$TD@rbdMEY%S"@fZ$0!rX'Tf00Lf0&Nmi`qBD"S[&I&&J8aPG2-@rmFMi4M&,
+
+eBAARqmBq0BXNdq59VdjiGqlrM1X(5&Cm1[@pJBNM4m3I4YDdrMX8[L,Jk169c5j
+
+Hh+$1dJ#2M-j,09'6M9UACHI9d23'VClMC6Y"8UYa0Ll@9VldijZ8q-3V[b$(0+1
+
+6iPCfMAbVqSTqhC0q"i",N!$k$J"Kj4q@5mT[VSpPmZK!PP*(C#G@KA`c)DVHrh-
+
+PNQX&&c"eMAZ3!,b@0#XLE28Fkf8VlSA"#CiG&E)21@Kq8MVj`#'46Kk22jidX3L
+
+Rj&LMF4KRElaNa0+AC9r-0N[Q3QC4pbHk6f95#Nq%QE"*f&j,T'RG'Zd`-LaN6%J
+
+MMUCV0ZrerL6"1@6'AbH6Rpl+$5cYRRdULreVTPp[5%,Tf!aTl$0f%2fb"0Mm38[
+
+e4C3X6R,Yk((Qk118Rq(NQeI&@Q8VVecUP9eUJCEckRS*9m1BeTC-Q%SkBY&fm$P
+
+IjhFRdA4elL,ki$'Hfmfq1dCQbLjIMAZIIA8G#MmEkaV[`PR%AAmkjY11qrm!N!-
+
+0"@ePE5jMBfa`,Q0[GA*MC@0'+@9ZFf8!N!RRqJ#3$aBkQ`!@Bid!&6!k!*!%9%9
+
+B9%0A588!!,TKe"'kBG3I!*!'6@B!N!BA$3!!B9i!N!EDj!j19r+8)!1!AB5lefZ
+
+5GAN,IeSZC'8VAjQjF0TD#rALlcB*RZ#TAZpQkhNYq)qCfaK"2f+"qVj*Jr,iH9X
+
+r'd5fLjf4(IQ&l)lFFZ3B@I#%(S"[$PU[N!1TGFAIa*pXpq@*[h%dM+JSLXr8a!h
+
+GS6ra`e40)Qmfp[-qhU-6pIleGckirX%(Q!9rDUeSHKB(`e'UkUf'Z[(KKqqUNc1
+
+9MRaej!ma3k+L!6mIKm%M2dk#p)`U@Zii'%4a',JbKicA'`@*QXE4-(BR#Nq$f2G
+
+9%Jh58cIfGp9C0&0p0e5al`9*'JFRXp4A3DVFd,XHaB4@-$Lc`k"`&RTqc01RIMb
+
+a81aeMY@H(rUa1eEhCbIMS+m1JViI*Vjb-6p9*#2I!j!!GKKUHiI3k'Sde*d)dlP
+
+T%)@lbJp3(b['0`V91fC32G@QLQ)l5Ge0#FKB490UhJ"kCfVX!L$6IjYl29Z+$(Y
+
+2"5(21BUQJ(L%b3$kD6!HUa0Ic4*r-"Y[fMR38AfqhlYlH0a6cFi$pARck+MCk6h
+
+B4FGd&+(DIq6,2-&N1Ji`(S#1hC!!0pD1FDppe,U,[XhEq`Il[3H!9YhClhADhDk
+
+kFhLNQZTqmkLhhcSqD"kTqmG(p`qll@fPZPJG6'DRq1-+JKD`bYJ`cdrGB*c-eq%
+
+"5#!"A'02MGa(2XLJli0C21@U2VMSKafhNlMM+"`bq1LBlGLZ#JBUM0*0G4S()*J
+
+d@QfrR5&MJ8fe(rDh0pAlrr#HZZFQL@Sq`Z+hh-P*((K$20eVUTehEVcliDBklMB
+
+*e1YVDfpjrL!)IHaLTqHd2fXH1%IY[DkkXIC@%2E(-mpA9iQDYdGAmiVK1$TaX4F
+
+SmKq$0d,91IbNVGD6e1drh&6Vi@aLR[c(8rchb"hM[kNE6r"[hdhl)bGeKhKciq(
+
+ZfYVeGI9@-!!5+MLC%#a5!1iF+-FjqNf[j6Lf6)0`daf2Srlfk*BTp%13!1rb%DM
+
+aB2H21`mXf(ZYHmd[e)fGN!1eYr`a&P)hkGhGlhcUY1Cp2PMf-CM-'lfE0kSQICm
+
+U88USc2pGc&iZe,$2Hr6P9lYkVUU-Tq0D'8@UebGZr0$42G6(5VrXQ[*K2ifQ&h8
+
+R8CT'Nk*dM4NU)#AQ6j``m[`%j6ZEr$aa(p2MEJdE4jaj3"U1KZQ#bB**N!##&AN
+
+(8ErA8L0r&N-jJ!G""1l%"ml*0X5&$mV0+PKI36b`PL)*!2EM98TR)9K2K0$8Mc%
+
+`G',IYh6E-[6*-bP3cJaJRIMMk&54A(,9-)SmPIJTL`P)5ArJcXCT-6XV'-hYTe(
+
+m8*hkN!!bSJH59)&RA30SCcBjJ@+LkB-*"J9-r@Jmp[Y3JbNMdTr&-@PB))0Y!Sq
+
+Iq*M%"``"GLU0$*JK9PikE+[EEK,d`@`LB-'MjBb!%#X9+XKDb!VLI-Ja'N026ST
+
+4CJ`JHl'Lk)kZH*p%*&#!%CBV'T-Qc@F!SSD[KRd(dYY*4l'20F!@r(TYlFlq&jh
+
+MHeLFSC-%[rHamYhfRY2GrdeEU,X*"%qTR"8l`"+DJ*ja2BmNiN!0r&1@`CLH&,@
+
+A$bM0@0%S+5C0'6&hURK@SV2SADmEHQV8,6cVDQIleif'B82Uk8"1Tm#YXhq`QhX
+
+*r!&!N60UQJ)LN!!0b5a#4A&AM!qe1m0D'i6ApB1Gk[L!aPS1B[UC-5SZCIQ#RIF
+
+b2KAdL9&jViM&-JE)pM8T9J+EkHbe1eeD9268Sr2)D0U46440RB$PjQZ[jB5YqG+
+
+-ma9Jq"VVmN5JQ)mP1mYN13@CJHiLFK6#)D#5@MXEeT3V56E3qZ9ES2N45N9MEL[
+
+"3U`rS$"S5qa5V"TS3Q)K0'm!aSX()(pR-(D(HJ$""26Kair!FQj)qNKJZAeiH0"
+
+ZGY!p#6aIJl**`cJHG%Xic(#L!BQd(5b1E33a41pj#j&Kh%*VA#X+R8rDYirhe!d
+
+LM9bNQX)-4qbricpf*fMV,A3Hp'!+MNPqAjGhD1QNSEiQ(YAb%Gf"ac4+())4pAA
+
+Z!65S"hJCRAY1lql4iHIlREh'@LhRq+'ISQNG)k!IYB[pG!CKHYbjIAMFq@4hl8Q
+
+f-q"jG+irLJ,2!'!4R%Vh"BG#-Z!Y4k)Z&CLm[ZM9%"US%c,4B&i1e1M$&"Y@SUa
+
+ARFM!B1hDJ#`SZ2q+N!#h`B`q3@(V&SZbMmf3!%ceZfXe8keha-`V%$2-P63`+*Y
+
+b8T*edYilZfUUEQB$U1R'4J&$#38akTI6VlBe*PE4C(2aE,R3ZEES$H`%RM3pQrV
+
+eCIfQk[6Z(,AEf2ADNl@Dh[8E-Z%6aGk$8UB1$)IYAjJQdpJG6PcY+LEe+k+'((U
+
+I!11iBCd2D3c1HIHGXLfeU9qpZKN0"VBC#k%!40e5-"e&D)mMeb00iN$N#iB1`DT
+
+m0iCb"TZBB6aQ9d06k"Ci$LX@#"A3&8c2!1kbN!#PRXGXBF8bkeDYf(fH35J-3FX
+
+je8%PJEk@K3dpQ[3eFYV`KQ9!h89pc*+NB3JAbfDT)`GK38i&3)EBX-beUQAq+Ka
+
+(F0FdRCA&JNq0UCQ![A@"l,9U)'D6RDmDkYSe)4aZII1AeM6deSfL2`q`pCI4hjE
+
+'j6GA$VNHS'AEJ5VJRRVKc#)@c%),C3L5+E'3!%3rdq'If*!!91*63S4,6k)rehq
+
+p"rIKXa&#c1KDm&Rp4AXE3MGAA&+r6kq&RN16('H8!NR5FDSrmU'[MAcAmq%C5N&
+
+'p8q,@8YZ*5e(1``)r01Y@j-c9XBhbANbVl,LV0[`FD'Ce4'GSj%$26fYTTEmRS#
+
+N#T-"EfC&+bJ&S9m!aI0mHf3XSe@I`rSQ!c6"$P"`I6Hqh[ILkp(*lmKYe(BP,&-
+
+b$X'3!&%)%A3kdNN+`P(@%UjJ!LM4K&-P,T-(NK'(D"1I"R"KIcFMNc0!S#(&#)J
+
+3J(*0qJ"H,$PZr[C`Ql9)kl$65aVE,,"ibi#-)'+j+0mX9*VPBX*a8#$k'!q#m-@
+
+@dK#kI8C0XJ02ad4C05B+C%`mr$!QYDr'p#l(p"CMHQC-lkFadIiRb6#+`LKfBRm
+
+)IIGhq5a3HK&-U,V4`3MP@*PVTM-Lf+@FaJRpdkGr!0Mke'H((iD3!1f')&0)$LF
+
+R$-!!j53NK9h-FB)aqTM#`a#qpNL%3PHHQT4TjfeM3`S!'8-e,mmlJSZVBD$6GTK
+
+P9k8hUG)X6hGrcqNe2fehRHE4RUJr9S96&k'PqJj'PVc&ST),HE&U92pkRJ44LiY
+
+aZ$#EaP+mj4JLCqBH%AUXcLjhPTTTP8!T!Z3VZ'i+qMM6"Y[TL(`1eLdN#M1[L!8
+
+`P!R*PY),T"d5eVM621K@XPI,)da#XPM,QX*qiQ,a&k"RM1R%9CZ#T(KT"8Hc#jX
+
+A-D21Ld3dP%9DK$%PQ"S88)U"Fba9R#([+aQCUV%@BlNI[N21@IPZi-fk,V5Fi'2
+
+c-X4Q6%Hf3YdbmCP'RU1aj@KRY$N0D&D266JMj+rTlIl4K[Y*4IbVlB$i&NdP6iq
+
+0*MUVI'GfXAK0L-5J&,['FmDJ(3K5UU1JckmS3!#CH3+jZ8`5)!1bLH`PQQ%85Dq
+
+`UM+#3b`D64q2C8Y-$E-(pL-h1P#U9CHfi5I%!I8qU*&F%pEemTK,qiaL'ZUhl&G
+
+mRAIG4CBRG4J[E2N65prVl)*39q`f8N4kAGDRXIq)0J9EF!peep-BqF'BiNrLQl#
+
+jDH![!KmXk6AX0-XkJ!(!2*!!J-a9%2@)5jij-,$b+T91TX`X4NH4!aCTAjjH,BJ
+
+k[*!!q8IC*S#IXML$pC1ZFBq5!$9G*8JepNHB`4K8)$,@#AdAH"-PI'6HQYhfiHe
+
+r-Xp(aad(!FjZfa6mmr&Kcckf$Jm11qDa"cr1["hXGl+h`aBd5r-c+[M'Rc,#Jkb
+
+rQK""9U20mQrENKQaD#X'K3@hprhNF!#@Nl-V`'e2i0)JI#IMG([0eUIr0ipP"E+
+
+R04Feb%*KGD&&+@F#+@q5J*3m+d9bqELea9hJ")['VKPL)5Ub-l,HBF&6)@@D-9!
+
+dPB"Pbr5X5"mX9i"b`Jrd#K4B`T,!-pj@3%UT&dcbdMFj`&KTjbZ@F$%r@5XJFiJ
+
+FFVE"qcaSU34!r$@QHPV3"GrbF,9R1T5+09PRBU&dVbmjh*KJ80")h+Tk*I$)Fc!
+
+*8aR*KL"%@PLX9d'XMp@0c&(0qh!S&G'9)VhkC4RdSQ3!e,KddRUN`%!X&Uih&P)
+
+jQJQi!NY1kr@&@j8"L,AZ2)P93j)e6!IeUlm0Qj,BSr!QQDS5kq`rr'eiPCDH*[@
+
+3!)Sr'IZ)'IK)bYYdd8$28*C[IMq4mCQ-iC`RHTR$3H(B!CS!pE3H$Y`F(A53!#f
+
+&H1G`&#eK(TIEN!#i(-*3E2lS!*6`&C&4T1))+@!3%$DIXR)%60GBIG`Qp$5N5HS
+
+KYlqT!1EE+A#M)'15X1F#(NQqE&'XI+rePD(&9H1,YZd[pRY1jr"ckLZ0c`0p5#I
+
+9Y#X#&YIS39+(bB$F!lM9XLm!NJ1U&B,C3SQTBq22ZIV,%Y%rmK+)ah5EFa22)q4
+
+NQa""55%(Hl4UZD&J+CJa`"p#AEY-UK)3Uj(VC''JZJ9i6"Kr48i@l&[df1QFGf&
+
+eP1ZF45$cJR(+c9SQ2&NAN!#,@#rQ0m4ahT!!#%#+ji(h8TcSlU)CUPAJlE%G[S9
+
+Ia*,*Aqa$!i+a%@bR0K3j"aBc*+a",#bB@!dDMmB'5NV2CHA9r&NZ@3@j-!(!jES
+
+(@f``G(@YFBhQIJiFb*@G`lhhIdA8(c&r,RSEcc5,LTdhGmH3!$FHAA'*(qS!(Je
+
+Kc`iBVeU8*ARJK8@pC$mQ2A'lFT*M8A5q"*`jHQjEFHDSa"*MjPMbX0p![S8pC2k
+
+GZmG'H0!"$rc"%4"B&Z485r5!8$cPU`%JriLd5-5Qi+j4,(!i[BLF8)RQ#+qF)@a
+
+KT)UQf'VZ$$3SaB9QjACjFTMBfXM*&qCFkFiYl,Q92eFCG*9$9eTdT8Hh-ZNBP*`
+
+JY"&(fU0LLSY1R#"DG5UmZ)X"+DTc1D!aRbS$lMq'H'@k[A6GA[K903[#`Uk#[+a
+
+!!(HF)fVmY0H'fRH1fTX&)$,`k2FRDjSNJG(Ie1a,0CI&F!ST@q8&mkJ8F2$M1,*
+
+a,pPM)*XT1D`ehJ@'SSUb,ZZ`"BhH+62pqDQ(BJkBL&J8p-fGIGZAHcSi4X@"Klc
+
+cRharQ4&Nb5Gi%Mp,N!$6F,J"4HG4XS*!RK#ELI'ibJc)A3-5-*l[6f&U&DFP)(1
+
+'ERa#)4ac&-9S5HT0LNJbCI-Qb1G5GK%MMq#638aK2rQBa2F#@5HqVZK,"*Q3!-2
+
+f1K5iUZ2SP(0ialRA[SI3#SGJVG$,SdZ5Cb,2BpAA1HiFY9ZfZih*'rV)Fhm)(%@
+
+R%(pDfeTq)!Z#bB2,FQNUU50jJ#`6dP(rD+p+I&3FR$#5@C3P'TV@a(E5$cVB20f
+
+LrIM$(bb99DEVUFZVJPeXBkh1V(LG8"58c[#)LNp2FET+EYc-k#3$T'RK@d%&mmY
+
+0GEIC[HXFY$Z9D@9p,KEb)cHKqdq`3V8&3`Di4-Ri#HS@Z8ZV5CP$U8L6PN1+Mh+
+
+Q@NbaNY"#4(VPX63HR6YaDB2#29C%Ej'&b"hXM"KF'P'P9YkX5251ali@*V,Y9S@
+
+cRlF3iY6#q-H58R[EBlI6lV(Ca,mkampR+95rL!36hY*Z`fhN`%*1(kRlf%1jck4
+
+V@jbZdXHpH&mP5'M#5DB9@e`iVTFiG&p'6mj&aV+c"HB5@&'$Nf$&Xq5bl$-G#5[
+
+HlE@`SJKR6+S4BZ(ASQMXJLSS%Pd8`A1HcP+6e&L8cA4G9XK%[Qa(iJ#'GBQ"SB)
+
+a9Sp'S&Z(TRB`#iY@XrNl)l8S)Mr*$&0e@K3"rH,C#cc!B)$'cCp9-D5mEP$8rXY
+
+%)U%S+6Gp!'DePDD)2$j%h"EcmF'k94Q2!%Nl#"l2e`Z"ALXELiiG4'6DB63EMTB
+
+NFabHd-flFT!!!m$$&lq+4Tp%D@++mNA9&c2+jD8Dl&ECL(9Y#)-4(Up"p#A&DqC
+
+m'pETKJ)e&fcm2f6rie3[DIr25JfK9F*p)FqqKcfLDjAT'`G3rh'SeeT(p)`N9jk
+
+V'F)Q%qJhPEK#@Np)8NKLTh)BJH`0D6@%01!a4!TVm`C)C(B3@c$k"%Saebi(aqN
+
+#(B&AepPGPZQQaY`Be)k@R53h%q[eml-SZNpMiaf+qPUhbr6If#LGB#8LH49c-ek
+
+8eZ#@&'fGeXGD'0XBcJqV!*2`M3ZVX(@j#PYEEbKBKCGN+G6aTJ'Zr''Qee3T$'H
+
+jF4$$1k8%5"&#0SP%BqA*-5Z**9l,$TK)+TP!dd)0akfN5C@+jYEBU9IU`MCPJ-@
+
+1BYrMheF(a(5j1rmfhXXYHZT1AJBGaA0lJITHUrGjmb0&1F$riS6j!-qJqjZ0Cj`
+
+bZA,`[mDHR(2))a%%-kPY[NGNA$iq(30V%dIRfRH3!#$j4&)m1Zhr65Zq8CFe`M(
+
+Kh$FdEH6ZK@jaKIDeD,'TlVH2lM8ll8k2m9UQE+6[YcQE@NeEk[V%4%dfcCLB6re
+
+-(5+RclBafe2da3kCCle*eXTQTc-VITECiUBj3Qb%CMQ-,*P"`NB@8cI6NH8NQ[K
+
+dT&1RPA&"#-FD*-H8"jj+aZ#E'4K)Dd@D`N01B0k0jEKdY'CmVECJ&Vd'jeD&(N0
+
+R&QYdIF5DZVK(SrP(N!!JhFDGm!Jd-!hL@q`BR@1jK0*D`bqBR'5&2FrkRm,P@hl
+
+rHDcRV'qL!m4-R%V6[RDCCE"fFIF89PMQ&k1dYM5@6#$%"S(ND@Z,b5D6l0IbDbS
+
+QJ*NTL'Aa8N&BeIh(U0k#kDM&eKChdEGKj2!Ea55di$'(6dh+6q-206+*j!3hTqT
+
+*+&Sf-&#B0*LFZl&K[G8e'CC50`KaEV+UY#aTCV$RED5"+59!lF&4+DB`1"G)c-S
+
+-m1)@cUX`B*8'A-B"cr1!md$J2"&B43+V61"j+*!!dCQISH-,@X@KMPGGV+3Udi#
+
+[*T2$'I2Jh$`,q*F4[Jm#bNCIaJ#VN!"G8#6X[MYE!E4@d"3R+R+"Gikbc3Iq%"#
+
+di#hMJ@pHJ#ilE%(k*,m-B,Mm)BNB[S@-Q'j*j,NkNH-Tf4dEQFB%JE+C-!mILZB
+
+CE+*2),5AR,DfLL%Zj)*'biLBkSE()XIdfR(6%P[dTl5TelND9N!jQceI3Tm0eMi
+
+r-T)TLXYc9l`LR)eHADP&BANG6+F-'IRRkS-*YQ)MQS+10#%!ZGiSUDMB9YQSNKI
+
+Qh&h18D6),VSHi4kD#FYbb@h-d6dJKqbmq,2EcD1m6[+V105FaL0%CQK5Sqhe"8a
+
+ZlIP)U%+d$T!!4*QhdcG+c9icG[-15l8L$%L,Ckk[%Ed84hkYHI(Xi%RT*dYHGD[
+
+)S,imHU+Y`HIQaD[4V$eCKPjY2qY6I'Hp)#+(3EQIG8MipEpGPqmQ@RM"'EDh&SI
+
+VX4hcqq(C!4[ZV3Y['NfrE#J2C!KNCYGbT(-SELkK@%CRb43T'Vl(0XP&a24+%Bp
+
+q!d,FG[(M'fTbF0cJ0VqPZ'3'+$EfA#!h`2LihCCGYM[[4U1"5#MfT6Al))UbSjr
+
+,+cB*d4P*#@VcGhijR`1`9dII%8jIRAZA5ie8B66MXj[YHJc@TqH6f,4jkN1YBYF
+
+K[ZP&1a,IE0A%RF*USCfZAj1P+IFVJkKhG!cjNCd6aD(!)0c#C8hFPahLM!VRU9L
+
+5kr(eB85m#+)C'0A*4%EKk5h&I!hiFZ(%IHM61A`UVfI60$ET1-*P!mc8%"l+$f-
+
+KdMM'9FAXP`58jqrcbjad36@raLAKHK5mCaKkjC(3IK!-q'N5!G)iq#NJk-Srdk6
+
+kq3Ef0Y6P8Fq'eB1r(1I8YaTr2Xk*'2Z,djbP2r$L9LEI`-LZQ*VcC1@[0-#dC[9
+
+!&kmhMaDLk)%TRdjPYj+Y&D4G[JQXF$K-$!Zc-)@FjXT,mi0,RpSILr[8ca#P*Dp
+
+JdpZpSL$QTrm(!*!%$3aZEfGbBA"SD@0c,Q0bBf9M4LPPER0P!*!*CD8!N!m@6"!
+
+!&Q4Z!"8`1J#3"&4&@&4$9dP&!!#kBG3KZQ(8)J#3"iF!N!Ga!!$ZV3#3"ZbJ88+
+
+&&1L!Pm[+bJDCb-dbINmBq,2BS#r,&m*Zl)FKN!!"%HJ3m[F$8S93@-ZIiI9PJ-k
+
+p$1BdKdAATCI9R*CQYV8@#[dK$0LS$,!-qEI*ri$mMmRrKq6r3JE5-jX)K4(Spi)
+
+3C-85i3$K)+,MKVcq$1&q!!d-EQpRFQ&`D'PMFbjSFQ0PBdBTC@jcC3#3#4m!N"!
+
+@Bid!&QJM!"8`1J#3"&4&@&4$9dP&!!#kBG5jZQ(8[!#3"JR5!*!'!d8!!*ML!*!
+
+'!F3,SQ!Pb!!QamJ!B1eNDaiMc`LAV)54Ci34pS54Bq6B%4SCX#F$2!&B2H$eP$#
+
+!cL-!AqHa)ibJ(l(!ACIAa)kG4eCfC%E*X3L#Q!H`(PBj`!pZVZ!&*%@@9E!dA+F
+
+LYT!!)Nr3`%*)K)8b%+Y-&`k0KE9`U5TF*h9e-aJm5R!KFS3hYp((YepH`E4$Y%(
+
+0$8C14BRKDmL9CX1@6P51J42jXN%[bT%VM#-lrKa`8'JPE'`3mdML`T%a4mU)C8V
+
+BC0+$6ZQcfP`jTl)Jek-TKN[B&+k2DSqh*hA'0FaD*#lGUpD1Y+,HYV1CC44M6RN
+
+%YR2hZ[dlR$@mHA+kYqU&[FqGEZeL%'k9ke5&#k1-Pm"f0`r*UFhr'e1'hG@0G[$
+
+d)"k3!2r9bD+$pXE%RE`2edQj6Z#$H+e$qMpcTT4*1[A@*3T0Ff6j+f3(eGh0M@T
+
+e6PK6)G2r6L#ALdfE2"eh9GAJ9L3)dfF%YQ3XNCZS[Vl[3dNr+#kX(&A$BjYQDR9
+
+"3`9ECkKRQHeKLbl5j20+@,Dk`*P+N!"P&cT@8KN@Ar"3D'ap`H[SX26#PkbmS"8
+
+lHHh41Bqr4NZMLMcTA2&Eb@Z+I+&!@1"JA4&6$#Q,PFB`MQJdS8aXQ%dZ49Ka)e4
+
+K"`"H'Z+8'aj6&`MVr(`5H5b,a-mI,bC9c*e3q3LXq)BMfPf8LT(ApZN"KZ2P'$k
+
+p[`8klZAl$jq()p$Fd6@N51%6Fb'&Ui"0i(Rp[m4K@'MH(R+Ar$*N'(bRZedpqQE
+
+`Sr9dYPeI!D$Jk#(SF9$Uf@V(GR#lD[4k$cAeTY-p&4`'(HqKB,E1pJcC#AUe4dV
+
+3j4kS3(FZ,5R&14d58YkN"$,q&FNpjd%fk5+rM6[-P`Fh$DjSqIE,dj0Sq"fAU2@
+
+TGZF&pAF1VeqmqrKU@lL&T38"ADIA4%9%Lb`++3pGhKD9TVMIS`l,)pQTFQTjXXR
+
+(pb"Ud$T&NrX1eT),bT`b!HpTbHFScmZ!,%HQ4dR2qA"ZFhQqGP22[`8@9",e81N
+
+k`)Y++YCljEpI&QB2RaDS*5PF[NemLHSeGA"+Eda[4Zq+hT,HDN40-YY)VC4)@[N
+
+f0'UTk"Z,p1$"H5k4h0Yc)6)rZ9"#fkJ2rJ%!$3G`BA*PELjMD@0c,QKbBf9M4LP
+
+PER0P!*!*Qd8!N!m@C'i!&R@!!"8`1J#3"&4&@&4$9dP&!!#kBG3NZQ(8+`#3"LD
+
+i!*!'$1d!!$hJ!*!'XRN06PIb+d%'!,[)XEeHI'AfI8pi00YNCEE@V9YkAQ3G,#c
+
+*"%r`2F$kESV2Dq1r,VFH36pLJIUqlrY@pYQ!m#1FM$Lj64$#b%)*aHXjDRf`9e9
+
+lL[q@IU+MrA'P3SpK2)YP)T[V02K[%-h8)TkX3PfT6-jM,-@rbP'm[%U#f6a6YD1
+
+kH[6YYeqVdCA#4YA6-ka196cPjf%8A1JN$E)VQMMb`f!D*e(J#`l"2jJ(U9SQm5c
+
+a&`T2dd4VPFE6l")d(+LVH+A'IU3523R5,!P'UdbV)&0q0(N3*d41-,ebB$#iLLB
+
+kBI5C6KD1LZHGSAUZ)jhiS6TEMF*JV%k#XBj5VAcJTiPdVLFJdS'KYFI%4Yq`SBj
+
+MS21c))i1P!i`RbMQ0il89aDS3G93FH+3!06mM)K-9,bNjA@`Gk9#(`6CrIZmkj-
+
+SFZiR+SJBjcaHJZ)jN!#"p-XJ$09)Ue@UTkZ`iA"JShVC(VcS$JHUfAQPAMCl[@C
+
+Rm1S!'l0jM'PpS392X&L'!H#"k-52@,%1aQQVGr3#HjY2fbIY`5Y3UilEJdkVheI
+
+(hCjUUV0QEp!q'TidHqTXf$[VpP[l5[8K(5"c+(k@)'`"8SE#*MVcJc$GbZ%96#!
+
+&AH&%cId,$6-BDcM,42PU$#rk3q-1L4r'X$3L(aYcM4fSB+UL1'ZSbb5!`@6aVIS
+
+GKY`&'USGMIFEkQprrkXkpG0805mJr#0r-8U#b3a2Tdhem+Y(AhrE8-0qNdM&[`I
+
+9kKF623dL$6Pf"PlVrjSRAUre[+mH9Em)SR'iQQKePjaiIhkhQ*L&mFL(0$"8lA5
+
+IYG3H+2,JYq#E,DPDIE!(d@9-A8MiPR%3NFQ3!,amPB&0iZ#"UPl%`83Yr(2YdCk
+
+DJB2jKT)h'UZV(kV%GkUcH24[2FjUXS&R$qaSGVA8C[#Nh@PKm'e9m+dL'S-p'ha
+
+42#NadI$5$a,2SjFD630pqf3,6HD1ZThq$PV*AmNCj&aM#G`j*%cUhMhB+*DP'Br
+
+9D8pPLf,X*fEii(CfXTZ9%H(Vl6Yb4[(%NNp2PTam`PYQ#A4,3k64QTe4KiUH$[L
+
+,"i6(BZ"3%5Ifq41Kq3*,%hhP$$)[1f("'FI@'1M0NVGPPcj)9Ki[*,(@C*f!JL-
+
+0C"d-L(C48[5A5ae0+&Yb6-1mLfR%'l[rfU4SK6G0iX918HmNe9"l!'KN!YRJR5$
+
+)Sp%E1336FLJ1mHC0Y9+$4l!C#6DB4Qk[aUCN%MXhjPZ[9cP!*cTE*E"LLh!0U,i
+
+6Mp(Pj`(NEcKHbajf46c)+)1S)c0&@4#YN!#Z&I5CRJG,03Vpk&a#!`*+KE)4H`M
+
+Jd'UJF%*N,"DAjCGRQ!41cN)%bhDcNkEch#'aiGUQH!Q"FaS@hUU9LSN0K4BEM0*
+
+Ze5'b(UmKGCMpQa8%l%E9'`S)m,$cY$[X2$1JhpX!3TeCFJ#IBh#jVfj*VC!!UQM
+
+$j6`)YH)m`D`BC401+emlDMPe6QD8q*CT9Mr3-25VN`6H)EJ-HV*@#rM'kYFq9C%
+
+m)&mfFJQjJel,T,QRhHj*UpN428r1[APm+@%cYhD+!1cKm6RbYUSPU`Je8SU)$Qi
+
+3V1[[2Gd&Yc6E1RPTerN80e0Pj!-r4G`$"6Xc&hJl-jI*2mhmMQ090YH&56XP3l+
+
+ZN!!+D$aZR[4Eq5!Q#LB&NEH&BA!ilmjcV(ffjN1QDj9,UjebYfiTXk9jPb5pHD2
+
+5,&iZB4hH024RKiH$&lhZbhERZ4($cJ8&8Zk#,JH,1QFq9@5HRma5SeGE,pK[2"K
+
+cF41!8BSpL+E"kqef2+$AF+[G4S-hM4GD32-@r[J&,MRCm5S-VmVQ%l8JFK)k-Bd
+
+kL(3+)2Yk(rVaSa4K$E9FKUibAQ!2p*+a!e*&K1TSAE9mG#jE9K6Z"VZj3(2edIA
+
+dkf9LGZr4Qk-5"2-'SlmIa42UDDk$4*0`S3`9KdJA5E"$XbP5E(J88f4*#'"(@m(
+
+629%-qelKC*hZ`,1f3PCQ9Qr0E!Y)5*5KKM,)lMr+dH8,%@a6YkQ3!*aYE[+SBeL
+
+8AEDTS-)50+&YANAR8A`C86dieT-9LXR)Ak#@c[`%l6EAKrh@J$)@D3K"Jka@@hh
+
+5VNhA3qdY-KNBLLim+NQm,2B`4%meAPI)EDBcM)BkUXRDZRUX[R(#+l+%QEJ6aTF
+
+-CVaBQZA)LhCj3pd&1AFEkQ[Ab*bYE5j5*&QGFJe0V5e+B3cB$T3S8[k8DN4kRJB
+
+*BKC+jT!!c+lBI1YfIcM@a[m%fQeKJmFP#4(I9UrjdVeJbJ`GNVZ)Sfmk(SEZh![
+
+f3N11!)4RMkV@'KVX9XFlEIG2Qi1M&lD)*'XKL6')dMmX9a6cHGLibc*HVYm*,2(
+
+$kBbAFYimD[CEhDIr)Jqm%kd@)jdXcE5Mb#!m9#F`ESmPHpf[&$)6I3ek3cE%Qah
+
+LS9+hb#Sbd(,GM94352`Z$YZim2*F#H6R26S2+9LVN!"2-KFTY#PGKiQHKir33e'
+
+4NFd6"&%b'BSRbVrdVlM&U(!h*X["k--$)mG#E),4mPK3XG%2GP3%ajGIJVp2"'*
+
+V55#YT3fbq[jpQRmSN!!C3LPk-c*+Y(r1Vfra3IpYZd-4T40RALZ+9l1jemPVEa'
+
+"aL@(TMM$e$X*$VTGlh5i&4p`&DhAQSCe-YX84fYhZ4BUil'JKjh@pfHYSd(VQFF
+
+@X!DrpY(P+Td,+1THGab`+lqRi"4GC1VeJeR1!-14Z3%4p#1SdYfiLi(0F+DU(EH
+
+rl`a2kp"TkAKjZ(8Y@J@L3j4IV%!',QMm)[2C#SfeEpTYca[lUFBp41(Q#+kYBp`
+
+q2#-rhfCFXLmQQJSFT#E[CCa-b&'i8d&R&fA3QMqaiZN-6pJ+a!b5+lAri$'22YN
+
+2me,[m`U-N!!6K-%)T"K'(TZ**jBC4`[(0*,P4fS+jc#V#UT-6T!!8YRNk5)6EB4
+
+r8r8mE#MS@j4Z9)i(cSEXbKEhKmUKXZd3$28bj2DcP4[EZ#DNA'Y-dX@`[!LNa%@
+
+6aVJ,0h3KNBA")QjhB',A!KDkR%26D+[6(6j(-(!Dqd"QQ4Yb%U(Tlh"I0+-EV""
+
+&3XUjRc*[qjLHfXFYp!dib&[S,&MJ0N0bLFLdJqE#`F1E&dcA8F`NmhZm`[#HNe2
+
+@J`D%bINrbIKR#Aq5Bk&LUc[AHqF#Y1G"cR,%J[qcLZRSMNDCHBH3!1-'6cYcfdM
+
+,9!H'qpqUTqHX"3kricM"I9ZQT"HJ8Kd+@5hiVK+#C0p%c+'DN9JaP3fT#108bJ5
+
+,"BiPF9f)4M-[EN+I-R8b@aFeY`eYT#qR+fK1ASdHjA'2eYb81!f@hVU-F8GBb2b
+
+,!'!@rZZbXd(Rb"LTKPb&4KbhG8RZK(cp4CS#'QTk$(6e6e6kZ'6*DTJMFSSM*&P
+
+ZB`hqrQ&h6DBKDVcG-V))828"SIrkF`%)5j-JJd(jZJJbA$1b[H`)TJfBXhTJQ$4
+
+$-#d`dqM6qXIF66!TJ*FZp6L!BA&PEA1D#""!m@8LJEb,qPh+*R85(AX'-@BYi"U
+
+lJ3d8XPeJV5p-$!KhD2)qE[MdSPV2fJ-kkiADhA8UG)![qbUD)2GLXQqP!D[SIZG
+
+eZPkcKk!N@RVi8G5mfRrpQkTZE2XQH&U$Dl!&le+,12`TmN*j+%29URi0Qbp+9+b
+
+r"$T-dY([5'HA'R34Mk3,J15lf-,ZIr(kMphXlNK#A*SIL-Jrl*lrhR[qC`R1$jL
+
+)r,*(1PGfRff"a@FrY$A2%2QZEHmULlMGPV"a8eN8Ur-iR[HcT-SRC,A''(iZpUk
+
+M*YZ4V4!jHdT54U)Y5qcbD(90KLR*U,LDU[Y2m-A3cX9BVFQA4b@fV,@e3I[B`bP
+
+i"hh#ZKI)bh4i")GlNqS*hmIbMHYRX3ThN!$aUD1cYaQbEp[)&5kl2Z6ihA+T[X&
+
+IlVbPL$JDVF1qe5p%b&&*`J&DC9C8T!'AdKL0,651IA!-%P*%3`Y!dR*9X6M3TZZ
+
+@HZf$r@#6Y4rbUFUIhS2&KIHmZaIk[)-3eAhUh8JXr2""N!!Q)K45,#-90m-5N[!
+
+6%H-9r6!#aaJ%JaMRq(cIAr5b*Xl`4B(CB"42+ccSChYB`QQZ#"4f69iqFmRXV2b
+
+XKdEbHqqXeqlfm(-(AhlclTBMKlV9Y@dfhj@JEZHfSk@eekf(%reDMJLcC4D9a)V
+
+rCZZ2"ckXqFfC$q8a%M%&6G*D2Uc`Md-N0P$FV2NKMKP`+&eHade3Ue-Qj8X03)!
+
+mc@m0Q,-KcVPm,d@(6qB(&rJh&)3-TfCb"a6`If%D)'kTXaJA93-ZdmS2MZ!BeU6
+
+R(-U[4dMA'C3irem1h6J*Sq&@ChZ-C-bS6+e-BCjDld$q!GZ#XD`FLldMSSd`I*Z
+
+`XC4@2ZCLKGLTSrL`jhH'bZ,UL,IrG**RZ5j["Aq0"V+3!%AaF5Z&!iQR$aZP-R+
+
+G@5bYcM1[HqbGY2Z$(!6aq"0`TmJFr0[Ur`-!!!d(F'&bFf8ZBfPMFbjSFQ0PBdB
+
+TC@jcC3#3#8ZD!*!2&QJM!"D+J3!9-$S!N!4849K83eG*43!!ZQ(8,ETKe$N!N!C
+
+!%!#3"K54!!"R#!#3"R3K$NjAmT3J!i#jb8*EVl2,kh,KK%H6Zkc-Xd[#kGNYkmI
+
+0K6h"%cc&CqqQRKI(IeebFa2dSa@SlrXZVqXkqpMYMLqmP1b,Ni@6`8+@)lH3!!N
+
+R#ahJJFp4N6[,#fTCmFr)M40rcC12q"P%[8L'BM@-1Z1"EdIjTh0qLYhi8pU14TG
+
+ad1ZRUVaG84ZII(*2R9kUY1qVTYrc`c448CFrRi6"Z4mR3AT*%p[Z)1K'F4LiJN0
+
+JYIY"SNCae)[GSF+REZcl+SQkkB8Eqj[U-KSVc`e9l(H#*)f$dh(UUb"9EYLj%c&
+
+43II5JX(J11b!3%+Iq[(38V(A1&&lIZM(lN!GMdm(JDF1!Xm2%eqj`%m65Gr[J%J
+
+,KYEZ%KXYcBEDMB$16B-Sh&4qJ2PB-Ep4U1iDS"T998@a49*f8b)b9Y')PPI!hU8
+
+DZ#$)l&rMAGq*)Z1qSi+3!((fSa%SlJ-C5,m)"J0ekUYaiRI(JkV&JBhUbAllmG&
+
+*@p8D6p@6@V0CDl5IEQ*MfSm`lCrlJLFBMJB"i)(Sf!eCX4E'BEfjr4KlDirf$rE
+
+E6d'YfYe[0qUYPYSpDUUD1Uiefr[E*`HeTMSqD4iIYHTV5V8J(5#c+(k3!#"X!9+
+
+'`MTqkJD$j%S16f%##HJDG&6I2IGK"Ti2CqNS9hR`SKmeET'iJbMX-IRBQ'PX8`9
+
+G&8CT99h%!3`QMDl9Ec&N,P"9qk'h9PArq2&pGHJQLDUG3rMEl[!d$MSpI$UXUI@
+
+l'rFqUDU69Se)aCml#`Zr#lSG[`YP0ZlGaFI3'i`l[RT`%B5Gk#*Ckhqkm$XrK,(
+
+4*Mfm52DmePr-*hU$k05&9M"N%$fZI9jhf[AQiIk4mcK(4PBBB$d"'d!1aEV@AV[
+
+pG,)YkDATCFl#R)`(ARSjmQQ$34+F$ZN6[,HVR-2@Y[0j[CR[1`dLTY9r#5C#@&L
+
+UHRlUpF[R8G#TE'U%kXkbA8ik-I!&SZ-drk@pl6Jj,0MLU&$,l[j"A5h([YZ"AIU
+
+3!,@HB&&24`E4E%N("RXkd'[8PQUF("aX,K"936JDTmlT)2,1!VM(PPVIA'JFlG"
+
+1ham"Z`-EmCc3(IUdGapVH@rFFBMPXZ!$X'&&[9VJR)*T$l3A2X"'fpT6`k4R"-(
+
+bBNha#Y*(FKD-a,S5hb-28QZ3!bb@+j8`c+iU%fbeYD@5Y"-JHAc9(Bb6IKQDS`8
+
+Hq2SUpB3Q*SLJNd1BkHNNNr)@Q9TD`VjE@kTqY&Y4ia%-dRHm+)Sl5GQMhCP2Q2f
+
+!Yk8f2UE0d!0F'hc#h2'CN!"YE@R'AK(YAK5QF64BrC+S,U@43l+cBLcjFHb3!%'
+
+@@qfMBkIHE"ieUp!KF*F)k96!*%*04fYrcfRA2UZhR&TcEk&NBV#6T0'S['l&F$@
+
+B5D(dQYQ8rbbRGqrp`ZQ&PUqBTp&[+9FHEI14p-BNIBSrk4JZQMRNYh3bBb-ASE$
+
+J-Tr+L&`S#DLbm5`'VPhLG4B%J)$)%$X#!Gqkc#[4(3,0XCZNIKZq6aUi03K#hh(
+
+2%I%U#'(K6X6Ma!2[Qm`$!k($QRYhR43)('mF*e(-fhLb(k#M+1rjkD'I*'l2,br
+
+"1kYXh&@eMMm94P&U)p!Q&,H,2B5LY)-!i5+(c!H*MC`-6(#F4M3iSr(A`S$SASb
+
+58SG$+jra&d3jrqA+bJY4d'mV'&j'Qpj&M8VCd[21%kHqCqcJp[2`YR@"h`!`ZCq
+
+iZ6+Y$ljdT5eQLb6r)dlCA0Lhm6ED3N,VaY%3"81A6%BlhEY)0,&%BmDq0d64K4r
+
+0S&$%mHJKF2bH&cMH`(GM*+4*m0)E16H*mljH@+#S6*&b&%0dP$L(Sl6XpGfBSf8
+
+HDR3@4jI5"GHGXSN8&IAeehD)kDTB53HKJajNe!qma%'RaQ+qKD%%T9#DH&"2@-Q
+
+kJfR-ra-'F1()HJI@3J*B*a`rT2h5)-GF&NqlLMP$ea2&CQd#X(Ie5PdTj+bBb3T
+
+mr!GdY$(XX,bkd(F(p9Kem4r5a5V*La2XMD4)*e00F8U2%&YkLI'0,(4RF[iI11`
+
+#Alfh!HE4[f!22"hhZX&,%rGRDi9BLRFXE!%q4cGEQmP4,m4Sa,i+(SJ"NYfSIjR
+
+`M2Td5idFE+4!m"cCU93D1318MLYEU-HqF)iI2fdj"rZ0qUDG(N8*E$C$X!S!p#(
+
+E`'1FZ3B)-'8CU0)Dq&5f"ULaC8R'Rr(dkXB,1fm"&MX!hQcJE*!!I9Uf#eG@X*,
+
+*hS554Ab@&!42I!4d+Bq%l"RA#lT!SV$KahP$9&8D$NYYdKF*0UQTB!G9GAk+66b
+
+%fTj")ZUBGDH)C@Gq+[2d8A2$$!-PFPN3EQe8X5caKm%@4Q2hBNXM5&)8R*j`!5V
+
+pq0N,V&pm(YBE1mr$49QLQ6+U!1q$+$UM,RG,PXSDBVVpp,MHiYl+SHS3#eVYjRj
+
+M,pY!@NLK#q2EYk!'EcJULa#UDV(jC*(bI)P#*@62A6f(Y3Z86*`ZDE@f,(!&NRK
+
+#Q-l%NHABDiLeGaJK$CEhIm$N!Dc%e`d$QX4#UFL*ZPe1!V2Zc`TE-'4TX"JX6eY
+
++p'h8GTMSR68`ml,1f"-&-'dUQBm1a8BR&Q9kJQ`a)E@eM#dJF&VJ(1dkKr9$0#r
+
+53!Mp8P+G0"iGR64f-#@kQl[b"$5jFbl5`U&e"2LqIF`Y8aFFYTV3V-hLMejiT88
+
+XNXj*PjK82IfTmVZT[LE9bXU+p$@J`X'rf[jfDqdDHQ+"BM0eHrpSZpAHcah+6rm
+
+!K`T1"fI)FPdZY(*PFr&80#1@5j14mfiN4MG##kNPf55,5j!!JHQFK*b+!c[-lXb
+
+r(&84(h'A`XDA*r1mFc00,qQZc$%%eB+%%(``d80rmZN$Eq4q4[X$0MH1fNllFI-
+
+)ZYZcXV9Z9f'pMX'XCe+2YMeE&a*ah$Xc[mp[-aec694X,Dfpkqm`MFLJ3p#,3bB
+
+ZCALX#$12DYZIY3jUVFH1L68@+*16VCH+DZlAh&21A@ZHmaHI2eH,KJ#8N!$i)aJ
+
+0`hN80bU"5#cc0hk4KjFal09!dQiULPTDhlMhFBAB-JP2#0-IfH&NU`f!1QH)ePP
+
+`me-*#Lm)$"5[ECVBUGH2%6'Ka0Nk'bbNaElHk651'VA$qM5&&)hYDek0S[-USfS
+
+*NBGm,I8KEGEKqKEpIk2icar9QTRB063')MQ3!)SFKL"&'NAX613#YJb`l*QL(iY
+
+!I06k@X@X@9fGV*(TCjM@IRX&`lL`"I)L@r8@bLXpMhTM$S6,2&RcfUaj#f)6dd)
+
+hSd#fBFCckCMSVdd3,8Sj'IPHi!iFbXM869"4pd&`K!N*jLTli"5'[AAjMXN%ZJq
+
+@8S4Bb32k0q(YhefB36p8LeqV4G5iLhqF@E)159Er`X8IIiiR0Q249[abHQ)f8dj
+
+2ldcm[f,0995B&qR[3NSKSjmLbe`Hdm4b`kDXHT1*l5A+Y)rM8,Yqfj4IepGDrpI
+
+GSMl0$dqb9RPqpj!!kq5kIEeUBc+CiX""kj3dGbh9L5aei[lQf'BL3ciV3%+L(T[
+
+V))BjMC)KkA,DCH5+-Sd,M%5Z%4VM`F"jJUj0lT'552R!F6P5k0r1V&b`M!ZP-ar
+
+(*(')9X'fXb6[XCF5I@"H&+U@+h+Z3r49-)Qb9#qX9(@'+i*!PED(AhQM5e0Tkr-
+
+3RhSFT!fT%R(-Qq,J`+&EeXYb0Q1U,jN)FC!!S'J-c@AX*q-"qNHDhYhrSR&bU+5
+
+h45mDk&U58Q0j8i8MqSY4Va1A`a%-(*XSl@K##)M4J"$!V642S`M!5"6h`"MYU@j
+
+J-!2([SVka4"c!hDK9)CA!X3SM6@)5Z8CdKB9Y"jZ5E$%8U'e`8YB(UDbjlb%bla
+
+q49mSHhfG56PZb-G+m4(",LrmB@XhfjH,KAH+Mb[&apALieEam8(amG-F-6)4UMJ
+
+FDhPdC&#aL(8mNSr)4m9A4*MmkcV3D(H3!#0h"iKL&(ckH')j#!Fik*@2q"B-!rM
+
+#@mX+`MkD-@Y2Mik1$ZUe"V3p$+K1ae&ef#%FaQdBNpH(bea!Y2DdG0Dcmj&Z#%C
+
+-R-%mM2DcJj1G2E!QrLS-iM4&jak8(F!e`"NGHDdGb,pQ*`&dAqbr&)XaY`-r9r5
+
+'j0-i1Q0Ih+dGY1L1JBBl%B83F!9RiJY&"#Ei#fi@`#XL#ET%h1Z$!jcGZ+J,4K'
+
+(&@l65CpDIDE@-lRCm-9GNTC1X@KPTFbI+h4MSL9EN3hBY'6e"*DilT66f6JDprT
+
+S[)C$IUU!L'%Yk3k-$lXjcXacI,R-dCF5[I9%@-a9I9`bhU3$[h$,,'lF*8FU"Zj
+
+Am$-,rVqXjd*B+V(TjQ`2eb!IB&iYbeTQLIKr8aVULBQJc4hSGd+@!UPS#R-ZAV#
+
+&j`22D%$[SV1FI269E"F99B4,'%&8),3Pf`M+GBp&Md(YE1hQ#Ba0,j!!k["A%FM
+
+U['DkpJelVQGX)kFHh3L*2G-P$p`h&hLcA9+V@m'+'dZ[1p@LSH1p(ZdYj&Y"r1S
+
+'Vp@-jmaqQ,TepKrpG@*'le5JEf-S'pek3TFDE0Dri0*RV412qhBaZK5f$f`X@La
+
+1&0f"fj-h12JLR`q4c&-FH*0LGK@J1&F4@B3A@FQF&24KcKr1#@5PYSrrEDQP%#p
+
+%VBZF#rmf511R0$Lp83h,2"(2YZ!eA@[jeLb0ChU"B5mYCHC$)r$PE2jem4(GY5j
+
+kaC!!Z%0KSJNUK'H[%R)@4!-fB@XlRbrJYYZH#*`dkPmFelIEp4hR842LUVIYQF"
+
+X,k@'Gh[YF3'V(dYCp[MM%TPmKJF`,[9rA0q`KQB!UE(AkM8T(83R92XAV36A%DD
+
+(d)d$0`c%V'A[*M04df%mLcV4UBJe#G6e[b&K8TcaiH2IH)&bhK2c6cU2mEfZY""
+
+*d#-[`T%Fa9F*&INe5ECl9HrQcN5@VQ+V$%`@8eV68B$*eUl2@H@fpIB(q2K*MSR
+
+i+!I,'mK$+c5r5VZq`jHeH&5iXB!U9D*P1FLVlVpU-hH5V#j"'8K1(0,$#4(eAj3
+
+UXS*)qUJUGibmb0j!@U(22(UDMEm,eXcD6kNkcj'IUR9D-VRab*2(p!l)""$G)2(
+
+jcp5$*Z8aT9-UeGKRG%kJjSeq[Lf'C9bDbH)@+)[kriTA!,c[U`XQ#KBNkMp8+*F
+
+k$)SS`C8)I`mMQSC,bPT$6QRHUQAP`bc4f6#AjbCcM*%&8a`8C,D!&#A2'B%#me5
+
+5[Xkd)B9[G&J8qLUVZ*@cED-HYGp&4pVa@&j`4LUU64pCP3h'&21DXYJm+5[0I@9
+
+@8dfEIJfqD2XPSHLD2i40&)hXY2+28h3FTJp0d-XAPmb$-((26AHHNKbpm"bLaG%
+
+Z)T&a#&bbbe*D,mp"k,X&l05MM-61FP0[C`AC9DTDiSe9fE[#d+UbR)b2Yd[+@U@
+
+$JD,FCecCi32MdP*`ieibT4m6+)I2m6l@9RDCbr1Ba)bf1R`Xmr,XrQ4qUbNJY23
+
+BPrKjF9+L1F+UJU0i(2*D9PDZ@[Q#6`N%-q9YeRG2bqjjqjh3mAfQDmN3bbRq0Dh
+
+lME&IN!$5mV+F*+JZ[""A!#Rr&b6KH(KD9Ed)Ed2S8j'X1,q!38qVmQ%8iL84cd&
+
+Q'p1$"N9M6T+L-fLm#d$66TZHdc1R0K*,@"+F%*Jbf[E"Mh54PhN1GTV4Q9APSh6
+
+#XiA(cr$d'L*'-3R@Xa-"PSI&`+iNUiUlB&ljJ1(DZb4pp'"V6dQBSR*VqX@YTVP
+
+!YAXAXlfNa2b%Mb50cbXVY%[2%!FFeErKKDqqp2N,3p52"('HC5eFpfqd-k[Vp&B
+
+6`83ramC1DFC8Jh66XrLmM,-F4#-T+E&kC89mKIiR2LeCH@GJQ$#`K#10pHEDZ(5
+
+GD,mF4ecAd"XTdia,UY(2*%Q5&RmMG,JpLS4Q'eja16"TGD3crfr)l#(D6[13!#i
+
+LbK0mMMLrV-d-iIHrG@!)qQDAEj`bXEqAlV8@[!K2$IkUKErS3(`CR(1RE8@"UbT
+
+m[`SG1RAB8TE*fbLB,hULCDir9MEdX3KX6'"`imD2*[)He0Y`0K5Gb#4KT'IF,[9
+
+@+,('S4YIfSFbVS8"5E!-m1J*RGP9eUIf-NY0q[JJjhqU94428kN@cF8%$)Pi3NF
+
+H[5B8[2'h0d+@A+Q&['&E+6(P3XE[#6D9MiP`QFGNY,mhZpcUU%[NP+Sq3Z1%9mr
+
+S8FXqRF&HdZ-UG$!$fj!!b8l3`d0)92phAG#iSFIq-%BPP,JA!JMlE[ZhDBR348q
+
+aiVL"HXNUhM`e'(&8(rEmf1ld"`#(-eCjAK4+a&V#JDXV(fdjEE-1S3RE8KpT%L9
+
+IAaeUCclhd"53!'E[26jMi1$mm$iph9PqU1lM(ZAR[2AA5#!'@Ti'!lk(-%bJb*D
+
+6VF+6X5$l[N*h@2QCZ9hm%5d1%YDN06,,F(CUE4HbqE-I82Xk43fK69$AqFjL+MB
+
+ZckfPhJ+b!VZFH@JK6P,''V#`jfDFcl(GY39qX9EV@PVdRh0`"T1IQp1%Ed"#fZk
+
+Jq13b60fASRHTLliFkRS4%rUEpR&F&LGT'CF("hihGBj*iPAecf-r[Xa#@&'b!$e
+
+p%QZrMR%VH$p*r$qVT,92Vp,S9Cc,-0*l&AJejf#reEE[$FjU9Y1DfcPPHD@lUXR
+
+Gh,aheDXB(2A)H8IQGE#TQ*m%R5E&)D1-HH`[42N!!5!h)5&XJZ9'5Aq*`PC)E`9
+
+8&2[I&a*r6pk!p'p!c8-@2hEKIql"Vc[`H9pk8h'EcY6@TGIAl,LjjBj3+Y$rE%b
+
+,6Y,8J!BKH'kH0"`mm#bh'VUKC$)kMQ0jdI[-#5m1&YKTpCKiJcfVHP6EFAE`!**
+
+cdQM@Yp%jfH8DRhkC6pm#k)!Q@iS$"8-jRleE$(U22TQImd)h%@AHE*mCQAJ@68k
+
+[`r*#i4BjRaq2-J$@GDDeYSDaP1&rebbm-8P"Pj8r[rP`S'&1-I,&r'U*M5Q6G*%
+
+[-G('kr[HQ81her5fKVhDQcd+mXf@RraaF'@3!'p2(bDR$Z3CqBf$m4MMIaKPmk-
+
+(djqqIDb+P+3a9,1,3@0Y9B**VhU@hX,0RY`SF(([i2CkXGqMSa"'B!!8PaE8LEf
+
+lc6![TPSrBKM&c8KfqI&kiIm"!*!$$3G`FQPZG#jMD@0c,QKbBf9M4LPPER0P!*!
+
+*4[8!N!m@GB!!&TBQ!"8`1J#3"&4&@&4$9dP&!!#kBG3kZQ(833#3"L'#!*!'#c8
+
+!!(aD!*!'21-06PIbP#!$J+fFX&m[VmXVXXrBQHeEQCc@VH4SDlIA21kQQceC#6l
+
+20Gd-Rdr`hj9EEb(S4bY3hh801SrGbLihjB-)*mI**T00"TXJJC1&%UV!cJ$)[Fd
+
+0YDRi,dlm-0Yfj52qJZJmNL-r2&HMb"X(1MqHrRQ62MMJAqNJLLm6rhbBUFT"9Hd
+
+qH2#PkPqUE+K9@jrV-%Y901$2hG#Ik#6eXdZk1(!#Ia!PSHm)$k(9'ISTk%IRL60
+
+5q$4)Y&CT0-JZR%6[UFYSV&`R9)Rfr$4,r2iidmV2P"0kpk+%j2)(PcNC()j$6bI
+
+-2Y2*+*ILQeCAID0$R6L"1KRh!pp94lkV`e3V"rcT)KeU$d,QC!Mf+DPaDY436b1
+
+`Fc)r#[H8pR'I+0Bh#Y9p5p5`UUXSbCP8R)b%6&38%hJ9kPfU`)&!&RqEX6kESY$
+
+H8hl)2)G4$)Q(B!E4,r`J8(fYaUNHM)0kcJ1)kRQcmqeaYk-DV62e[0&Z0eUGXcd
+
+JCX-)ehULKBmrLJ-Ip#"diS6Xf*c'Xm2f`EI!E6aT(M8lCj!!9MeYGPU(TkIUkA&
+
+E0G4*SpeT(R52'QeedQfI(*mHELYe#ZZ!@FlLaS+)"9JC$[0dj[K"HQ@(-i4!#VN
+
+#6`fGL8BBZ"V*iLP(ZFLLAcfH-h'###&(iJ1am0LHmJFUM,+kZNKm"%`@VGbIFbK
+
+5S+kDSEYG9hrmkJrUQC1QUM'"m3qF86ra[A0mHYC31rGh[ha39ph6"SPkEf2M#cp
+
+dJl'R9CQ5GhYBRPkF"e(IJIbcSdGTjMR*qIE`mFB'3PULZNGj%*i(1YcEF)G1SMC
+
+RCh'@l$%@I1AU(TpHq"j%heGEZrACQDGMFbD)EhSMN!$e`rfGZVV-[qeY6#,IJqq
+
+F3'"lBH6TbY2QdD(DV+[@mGIm'iImSlT(-Jmm29!MapeiFRamG0KSUAi8H!KX$ET
+
+Jp)81NGdE`Q`F`e'kjdC4iU899Y3G9YAh'jcUd-8[+2Rp%Ae5Yr$4$l9AkIADIqm
+
+Fp(T9GHI1p1VCk8([Zm2fiZTjXrAPr5V6FSIDIGe,h53+JJSN-i+BRdamS+#&fYp
+
+AGeq'GdQ1dK[45#3XAFVA@JhI+--U2KmUAch+RB5[Y9V9f*D8VF$3L0lkAA8AV)R
+
+R1k8$T1#-EPrSdSQPr&MY90A@P[Rm'6PE#(9RArhIcPI3aal8pY@I),CiLHh`!j2
+
+GZqVY@pK%[YjRAP0h,""[%FE1cPGhUcP9XS@e85%LqH)05f6F3iUBmhYm2"AV0Th
+
+b#621k9MSaaa5S'-2pZ9JEq1G5CDTlb5Z%*'M1P4G4!`id5(*f1SH(HAQ!cMkK*Z
+
+KEP#1%-Eq[KLBl9#NA-RbX$(((*M%e%+ii')fMm*5LCaN6JQ-IVa&GGMCf5Z9lQf
+
+U9T5K%k[c+1,qGcK1U2fK66$LfVV%G-S5m@lcV8M4A,)&,%jl"0dME%V'*Bi)56K
+
+ai2KK$N5ar(-U5riUD*T'&kJUDDlL2c1h&iq09H&-%Jb$3FkRdfdr1HiGJ,K9!m4
+
+4hZ+KlkDX!"%P64$T@SHp,)T*V4f5+NM4EM-jA#XDFYCG-b,Sa#0CA#$9fIi@I4P
+
+qL%X)B,q+44EJR"Tl*(lQ[0DTFV`*UVCcVUR"NZ18NpQ0!lD!rU!)0$C0ET4I1%Y
+
+*IDqDq*ri`#4cIYKThZ6d2L0[P#4S'!@Sq@D%YJ`JMDQ#pJE8D#9'qj%5jb)R,Za
+
+Aj'NZX!FEp!0YH0P8[R,8(-6kmVT+dTd8"j16hhm5N!#qN!"L4(pVkkTQFrX5JYG
+
+9ZeEM`,B9C9%mdYKaE9&Qk8hKQ0G"&")TJm#qYrPGSpeSIh0k(eS`NG"MX-'U[f`
+
+14LMFfj!$PYA%k@((`MS@LaT5c%1[VMDGSABmVZe3UpYkFYaYIBfc8,r*HKpZKB$
+
+3G!dG8jT3a3hC0(15V1,%G3KKZZc&d-Gq@1&JCB'Sr%Sj,#UY5GhEFN'`F`QZ4$(
+
+'[T'U+%l#H"A`0D*+95UpF'+&BSi4LiC#Y#QG*$3rk65P*+B%++fS3Qb!NY6L+8U
+
+9dSVaZbAaP)LE`-''G5%%#@$+$ri`@NTTC,QTc-j0X$*+B3#6cB+k&QZkfdL%K*k
+
+0c&@"M+eG'29h($6MPTGbTP8JPfh2)Z93"l&)+8V15[5ef$pUcB-*Pc+iAU4fd4b
+
+RLNJ+-XG&[,Ra20fZ3eh+akakj$kF*Mp5X2$R'Y`fVhPMI9Q%jdr*CiDV*6rCY(l
+
+94kKq8)MfNk9%DaNAimdY+8*,)j!!K`3,eN2PK2A-prFljUF0dlB[VmqR&3N60%,
+
+(GU5m6TNC6T9[abr$-YSNJ43-TQ-R*mfXIGPH4F(%LbG@#QJJReJKbeD3!+K[S-)
+
+fMm`J*LJiB5c6Tdbd##ZZ[%hCS6J'Ea8j5$qV93L8M42X[b9Kjm*(jKBhKJA1[0Q
+
+Cj!,YRYN`i3'QU[T3qM9ZVpGGN4VNB!e49j3e0&Bk&F%VVAHfPNLTCY&TNQ&CTdi
+
+NTQ88f6)(M9A%*XY9Xrii3bqFqE-VcD+mDVJ%hcNl16a&6'5AFQ2RDf(FGpcADH$
+
+JX8J+Ge8Q6Y**aY"J(!3-%&GTrFjR$)NQ+rN2LPXV,h+5HP(KVQ9F[Z"8ATkpHVm
+
+U#j0CAEY@iRD+"-5EKjBcdKAk!@[KK36bBF8'G2!q"$8GjXXZBmh960e4V8l[T0e
+
+mYZC(Kb6e8KKLXUm1MPZG0Hk,4h6k@0e1Ad%J0`V6bJME@3mBl(fBrfqYlV1UT&q
+
+e@NGmi)q-cF&AIDmINfDjMTUR3[Z6ZDilJ#h1*K(T,8@HLImaSZK0lh$1C!kK++)
+
+C'*amV'(U(%pJNJ6I5$hQ"h)5DjXap9)"`2"%!-JD6Q1T4BmSCk4CJ!"`QEJF9)M
+
+HBp&,rGRmINJiDr@qC`1B6N,['3#BTrbk+N#G@UeZMC(l`UCCV8BXL1kk*#$RMBi
+
+@jBH`A%VeMU8Lp&9%BafYL'%LG(NBKJV,,Z)UVmk)IjbqH!@,P2p5+T1Kk$!ej1r
+
+3mHkVH[Qf9kl2Q9Ka&cVKH,NicTcreqjajh#G15MDj@QN6cZB$EHEq$`kERdLpI$
+
+IR'EM`NF$Q5+#LY0lMYP-h,1-kVG[V`,HT"XXM@b,XT6H%9(#8bX0*b`'4RSD8PN
+
+Af@KiHS(2F*9(h-H%%a"XX`E%FZBZ,C&R-AGhN!"iq2'`L1X&#M$QG#3JJ6Hr@ZE
+
+8iTT&TJP')'i90[,-HQ@fM2Nl)3TiH5,dBAf4LDRS`MG1K8@I0Sj1*9cqap30Y*2
+
+%$YkrA9D%p@VFqBdBU30M'#TZr-*r"@pFGIVm$8IH,'KY[+!R2"GiN!#*@AE5Ga*
+
+j(5+8)*)l6#VPPq@(D)*3b-63qedU0`hq3'jVLcq"pDSl[*9TkfG&2`cf(qhb)mP
+
+T-[jU)+0f'Q[A4pFL-QQGAL09#qAAl`MX@2G"L1X`H@HLPA,VFpr+YaGq81L((QD
+
+SN@qA0EZdm"c("G(Z+a1m`T40,Kmd"%3pjMP%0Jm$A$`8QiiHJP$CfM8U,*Y$1"j
+
+aF`"92ZQj6UUMrMqQCBNT6AF+)YHNV8(N38l45XJ&3SSY8mEaG!RmC35dS[pV,*L
+
+kjL3I,2RlkLdQ,aJFXPHJh&a@S&*SPQTp(XEHUc9r%r#l$@Ve%qIe6hTG2`9B2J+
+
+3!2F-qFZXMmmG,1e3Ai"+q0[,(*R*J5b5"25+`k3IaP%%j`bApH"(a2)UL3I8e!D
+
+BC6d&@!52RHJ+T5LiK&9"@5)hM6q2c,-pQ3"R+ffa&KYPk)+f6"V-l-R-EELahI9
+
+'Bp[!Cd$X[Jp!h("LhKCQmUaAj)9ACQ1`m50(qmU2KA(B-MXh4M0%CLm'ETMNGH5
+
+rE[jr!*!%$34dB@GcG#jMD@0c,QKbBf9M4LPPER0P!*!*#KX!N!m@LS%!&XXr!"8
+
+`1J#3"$q3#!!!YhpTj,GrDI%!N!Ea"!#3"M5T!!#)bJ#3"T@#"NjAmS`J!mq2,13
+
+f'mMel(,VEEmMH1T*rFh@0i,r1-dYE3-3J08!9R06r)6M"p6NPa(dSa@SqJC-*mc
+
+[@rL!E,)*%MBj,YPNaXNjj33TP#a((V+&,A6K(H3,Q5c(bBiXHPkAC,2mcFlkKE#
+
+&h%TS$MSA6YpMfR@fN!$M"2f)"ES'I62l[NYqCJ[CC%H@BH5KC%GZ)4Y2&NUS!Pe
+
+jI[F*Xp3'1ffe0ADU'ah9UP3Vqf(X1Ql!2F91ZC-SSc$fHEVrB-(e@$FXV8jF2rm
+
+U#j)`6X9`6kPqPApaUSH'hM$8$P2l9P-h+R8Hab*3QUiBL$LYl!rPplmHjpmrY%0
+
+r6AaIl@J9l6S$IMG)P4Spa`IlDjBR4VXb6Y2S6rY&54mZ5j)hr"NHpA$NfLiHGHQ
+
+QBPh#9jTKY[4ZjHMTXmVqa%h(5Qe2U6ejXUGSlQJN[$hP&#q,4pK@H$"8rXU[Z+)
+
+N@43"pE-(DY[3e2SjUfZRV5lDiMKd`UIMb[lI+j@ZcQUU9@Y5YG[+LQKE-5fpac6
+
+$d)d&q&(Vj+6GkMEfrQp4QS1Q#BTld01kUlVBjGZ+r2#J5bcE5NIVX,CqKVliCGH
+
+5R,%XqFU+([EDjqa%VE1kDUR,QZkmC'G0e@,p(PKh'*lQR[DeeXE(NR*EU@XDLVN
+
+MUhP8UcJaMmDZR6be8FBI$mA)$B4#3-)IUHIc'L1B--"MP4-!$h(XKC1'5%f49Yc
+
+!a@""+9[dGlXAZd%kFBITf(0p0pd$BMG,"(lI#rQ`'lU*kdha0CA!LMj4Dbr0YQS
+
+fQ@NCEpVDRl&Kf#,5VUmF-qZM66'dlV6Ue*e2V&lISJEHB9TAlcHDHbM)AhC(eeQ
+
+RAf[Q$e(`6`p8KZ(kX-PDhCDeV1a*9h[9dfT3%,-63keKd&4FQ,U2$0C4DiBZ#rQ
+
+dNSVBPdfh0qDam[LNpJAK(ZKY69e-VY!k#Q6(0"6RddL!C3Y0kc4DbU1kCP5ZCp1
+
+Q+NI!B$PblZB4J#K@jZ,REhU)AD+6FSFHHYD$i-$Fq9TVer51KZ&Mdj5MfMjpAU-
+
+h$c0f+Q!ZKb)R!alRXDDIr(AEH!i%aAfVE9V@HDmbL5q65(D,ppj"N!$jb[FfLDp
+
+2c6h&CPqVK[cpX0db,I-(C8E1e[a8Ed1BGD8+M2$ljPXd8!T'MhrJH1'!Hd9AA`6
+
+d#!D9!Zm[TP1UB)FUf$(DH)Llf`QLVlKPp0%rfL%q'RHDKRj'%QY,MV#CS9PpSk[
+
+JADdBHGEG4,K1%-CL'+deaGd!B[Uf3@8Zm+'J`ZHlFFaY+63S2IC&9%S29'@Dj3p
+
+kacl0ZVT8i+ND[2&-2f8dFd`@2$%eJe3Q-)p0YB(T9,&V2CqTrEE&QPUVdE6Zafa
+
+&JRRUJ+pEGD[j#kP`N!!cLC4T!6'$,[U9IVEVUffPTaTDPh9D*Y`6N!"a1(qPY[Y
+
+SK+4cK!4P5aQaS%jem5Qqk*UY1M95iT!!ZRBd%`AAmZRAQP88a2HB'RJLQa`6!20
+
+NRLCAh-[%HY)p#3CC208$E5LPmfHCjd8de6MR[Z5A8NBI*DRNaVG3"iZkfqPCje*
+
+%&-pcpeA,`Z5"(,URde2F25hPcCIU5caiC%9ES0G%FdJjQ&LBE2cFUB%%aT!!`E6
+
+lCFf#k+Vd9)+ajCkBD'5)!+fH%J%L4crUh(NXbkBr!k+LN!#GTYTpbFle2MVe#p$
+
+G8FqTCamhYADEC$(+J)UBd91,9*B#V"L9cIqYY[Q4j599p8'PSliUjrYhNNiB2Uj
+
+3%rrYrQ-)RB$ImV-N93C#m6KqhllBTjUqdM"Y[e60PrGM2"+`[Db&T`,DqR6iH`,
+
+b5V%6!rA-ihNjpr@kTMbfBMRV2S0JjHp(VM01@Br$eq3d2"M02qk%N5HZb*fmE8k
+
+692KjZI1BD[Y-ECX,kHDGTM#("erP(9a&Xk#NYKeeBDV9NPM3)SG0+P)J3kI-G0L
+
+XRdQV!S*i"cDb8AbLplYe13h&A*D*9M4r4'dVV90fTKTG19NI0p8kp"'r4ad+LXF
+
+B"&pdLRVZD3B%c'$E1"Scjl2@UfkrXfXA`C%!FfGRT``-*`4M"B*M"A38a[%R8$#
+
+`jDF,aS(89TG[A8dS+B,kQKD3!'QIeb!12[$&cC`4&*VLFi1CVEpTpheKD2)FT#`
+
+)Ki*&)Q!q2L6'f#XYbke'6D(IId)2-8r$pF-5`mlCGFL6q4@jVIH@RTXrK#2a%Vp
+
+5[iESZ0ZTpAEHF`+MRMLVTJ+Qf4GGM+1ZD)84RZF63B"U%C-"ch#iEU-[4QLL,j!
+
+!Nj!!%E9$,I8PYf2kMG%aajM"PrYKbV3Jc*`akk)PY4*56JG8FdmpJG8r6(U"SRQ
+
+4I-LD5&!+rZEm[J$"XJ+6Ra-"iM51lmQ#U4qQmV6!4%r"KXQ!0%6Y@AM6+FcJ($m
+
+2M*DeQlSehJR9GjdJF'iKA1lT$IeffLDX%,NT-LRJT4!13IN*%JPpqBE&T1,(Kme
+
+c%kj92r4+Z0$pc3Nb!0G09Z*"U,Q$UB#!`THkSF(j[EF++!K%bZ'("b!14-VkeIZ
+
+*V9Jq,,A$G)$'i'bF&TLPAlT"PM!6IP&6985b$2Qi3bU!FrkFafP'jIdQ%c(0d`G
+
+C'Q8%I8#SafNBcBX6eNQ#kYbDR!K`,Zqh&Rk5Yc"!k&m+SSMp$ZAFNA1B[fZMdLI
+
+mFSaFRK$TE"@fm!K6!3m@)J26!M'$k2j2"'3#21%c%C!!qL'a#k6FU`NY64ZMLG-
+
+#N896'&-"SL-46JJ8p"mD*Z$qRC@02aN`*630-LN3(EP[R4VD6R3DMJ3cYG(B59J
+
+(+X@Bm!a))G'Jj-"L8+(CK0B59SR'`&P!'NN[radS&1,k$"b+&"+aM`F543V*b[F
+
+,5#%C9Ei$MD,2YMK3+&C16%!+bGTqL&#KU4c(4#*!TAM5VGdpL5+&"%C0'UQ*3i"
+
+#X3l44UM3l+LY0XAF"k)!9UV9r&+J8(aeSYieJ3#&iQY%4`F+!B,L5BH'bL2chJ!
+
+2H%UU*ah@d*!!DfbmG!H5Sh)XTJ0FMrZ`0'CRBEb)dUK0'B"EAj&DTp"qm"*@+1C
+
+clXB)"8dGdCX--1H8l0V'DJL%dR)Ud`5*PLB`1383TR`3L$[(#d#-J!HEp-BNJ0H
+
+MU%Q#`LTj15QJ3$er0`%3d(Zi6TmrP1&c01@A')&S9QM(X4mVLNMj8#9rq)C5+5,
+
+P)`6N([eDTj13!"DV21iM8YI0[`J&$AAIl+4[Y*C,+`*6JADbajE@kheJFlM656G
+
+Yf!`0XYlqqd#L!2E%a%4!j1+K!Dm*c[G')03%Q+LMMM84bjm5%!qcm6X*G8(#*lK
+
+UX33fUT8!6eJMZZV%!QeNQcj-B&!pk8VKNRNF#4)'1LB$FKpe*(*+)&KC[mGN`(2
+
+pTUpE1e0!BB"6k8`5D#3)hFHYaXd@!UmpBM'S)*SR#!3eH+X!@kKFJ9Sfp9HI0Se
+
+3d%JI6`RdH-T%64DNTakVTpTYc-H"S,MEb!1-(BFMri%%AI4BXb$Na1dCC9iL#(6
+
+8I@rCL!pN$a&8[BY!e$@I834+HE9V[[,Y[QUCrmm&1+PL[(!U))f)mIHE2[E,P$X
+
+q[($&XQaM1H&ZF2-f"38QB1j4`5N"6-*IDqDGZeA#q6#P3c40i#dpYZSe*!*qLHd
+
+dH3G+J4DbBP["C)!k)1A$@hRJ52C0#(9-#b4"K1"+aPG`dSd1FE#(6Be0%ZJhrTi
+
+Q+%[dbQ5"p,PbbT00cNrA,9M"3HGCUiQ!!&BA4CS-Q'QHajS@b(9&DfSL`-3U6FS
+
+*!)FcjF!Q!S*LUGT*J,ITBaL@`GJaPU'P#!E+`1eqLa'XHa!)BXPCE8d6U,F`ekB
+
+#aZ'Zmr0bJjea,1k$!`+&80[j(B'BV'Z,k3*eJM+Q$8SEeQ335B,AiAdA[3l43aX
+
+,eB"#d5k+M#3'&CTUEmprlr6TFRm6!F("*Rma+4$I`-U@HZII%lN0cLfJU3$[U)R
+
+E6!'%Ff`U6JI-d5*D2Ld31dF(EN)*#DY%Qk4"!9DUGFiJB8'%H0`QX9H!IrCJ,MB
+
+R!T3TY2qI(d*RIp*[[0d*Q1!N3d4[G'd$mQF2)'Fr4d5hic!JkTJaifp@ME%GKb&
+
+(%Rf6a,%l(#E#QFArI-ZP`QjGKHl`NI*pbE0B,&l8!DU`@rR("8r("GYc*aB16mA
+
+fI3,d&QJ3p$['1&NZkJS[i0KEZ46$Q,(D6X0JkSF`Y`kc`%lG-&L`+eG(B8@FLqZ
+
+dU'+"G6ll&B'b#Q*"'GNZk3TqH*C62Z2f*A0L1BUV48&Fr*R3e"6m[-5'M4GLZ1f
+
+""%BA2,-[&bmSYHaG2U6IKajhLYS2MpC["BJpe#Rh48Qc1r!%il&6NEe6dMR8RrI
+
+-53V@jj8Jh$cSBV+R4'2mhm0rb0R&&IjIiMrF`fG5r6r$2QH%8l$(qF@b8%'P)V'
+
+&Nq2Kd!k+FZI$+Eh1M%9aD00UTG`K,3FE"D$Ab)8ZIf@Z5B6kH#Jh2)QD+3H03j%
+
+frEPmeAQDKMj,8M4TY2Ee1@m[`4r6CTA2DrN'P@I45PXqLlkT(K`qHbe,JUDDMB8
+
+ALAJcUa)fpXbfh#A,pYF[5j&'4I0Fi!&1lj1p#SE-pl@R%`#,8SeR%U!1`UF!bYM
+
+PmEEPL8+2lr(K,AJr"d-6(0RFBb`Fr%0Ji9jQULQ%GS&Q2`ZqXk1TC0cR+9rSR`*
+
+[+QKC,3EHlH3`lekEHq!k5VPh8dBXAX"5m[#+qSK,`E"rI!(6#FSG!dH(%iXXX+i
+
+,p[%8rZQMmK'@)KqX9fe3-9MGK#c5q0qmLB68f*kHZB!5m0#a3!Pi`!S8l6@)(!H
+
+f%SG!$[NC0VE(38ej+lhUd&YVYY2hC+FcVJ2lmYAp3&B`"c)rc+!dhN!J4VPY049
+
+BHcTm$Vel-&Q8+UU'dl09%K@m&'!F%+qalIkJ820+G5B5%9m*P[)!5UGlNJ+IV!!
+
+&RirMF1,L,EXH,I(KmD&HMiBrY8$&m'-MA,)ar0M+0dh9+,apYdZ'q18e+G!&je&
+
+XCak0X$"TC0JD,$6CfID0MM')cPDL8%&2Rae)@EMR#BbVT3fMI+hS5JTMT#bF-4U
+
+hQ,+jr9S16Nb#)!f1dPc'G)`+*YA*fiF68(Lidj64pV"Z""N`EQi3"(TRT!+`S(U
+
+9,eSm$aP8BC!!pd%V1A&,%r618G&lLB,Ul+G+M#C8BSA-[6$i@3#@$$p+3,#GVFb
+
+MEfS%fT,3Tl2G(0TR04fEGN[@)mK!331SVLUqMU"6B@JiI3U4LY)!dF,4fL,5qb%
+
++56bS1bHDUH@3!2(A0@,YbZ9p@BE1TANCTk!fH@#G#SMa`B(5$frQE$TKqJjhX0K
+
+TqjR[`lckm1R6'698,RrPQ4L`()RiH4#NH5QcPIJ+"S9`9M6DSBBki8[r9%9(`YV
+
+l,UGqq6U,kBm2Dq!Smiae@4T0@H)i9VTK$i8Ia'3VdINRp3AG1A(1(([@ICKYcr0
+
+j%l"ZNcRLQ,BUe$CCJ8hch9$L`j@[)iUDr4,U0%2Z09Mi5HR2QC!!Zie,EPZ&'p#
+
+h#S"0h2f"G2b5lbHYB$$V(MDAd4hBQ19R!QCP(JS&'Q0KAiJ))`,#S,CQ!p$U1lJ
+
+Zh$X#B6#,5*r*UBf4Z"3VkT)KpJmHJ@UqLQcS9MU$'JZHDZdfPZM5)[#KIN)4NYR
+
+FHGiAD,Ipq5LhpP)BKm'("pA2RadI(Eii2$k8Nq%GijmrV6kV(Vmir12adI(c&jq
+
+r1$Smr2cJm!$Irq+SHR$mi[R4Lm1$SaI(cblfUmp4RY4dk#("q[`RjlIMB)mH$@P
+
+XBBI[2&mh%eVepKUkPEIDGV%bmh`X&0Q!mj(maU,`BEGd8J6dS&GXd04LY"$Yl+E
+
+3K2eGS56q2qQLb$P8q0jZXL[34pmHl"1NGqcVEJ!6fEkK!Bmb0(YS5A3--bcJTib
+
+,EaCk5S&X*(`jMcd'FH$$ANUIBI*X-4ZMm9Lb#8Gb8)#Kaj[E9B&D@Y)FrU$2lBI
+
+P6$T%$#P8%b54bH%Y)K-TC"9a,h2,NkS@,P*J%1l(A*TBSrY58-$(+Ml2dLa1[8f
+
+U,a-ENr+IXj&lcGc4BJlCPR"pb%MJ1QXImU+5pRIF*2,iP!K[!reaT8*6j"Z%"'$
+
+@d8Ji$H#p)[4#!TdEH!Qf@&8(ePL(2f2J5!TrV!SFjk&%EmN,9[3[938pG0drNB%
+
+0akr@0RQ%4A3a25,U5YGf*'8&4`-%Ar!+"paIb#d'r0!r"CTMq8NleeUd#NDM4U$
+
+N1,"p[Kd`JP)`,E2GYkj4"$qY(MkA9Sp!RJQF5$1@C&JM%XGZACL!9H*E(%YJ%$S
+
+9)aNFfG%KFV)Z%0$-Gr6GbQ3,p4'+hZ,2qHKK%JNkQ@C'p5`II9D9Viqi)B4pNbj
+
+6'(+'qS%L#4m4VPd-AHPq4GcrihkCF5q5!b0U99FF#4a9FR#Um+fb`ID+4MLMe0T
+
++HKIJS'bSpC,iKLC)AaI5G!kP)Gr4c["LAMY&-F3j`qm5EXZaRbl*E)BVjid&A9"
+
+JLX0NQC&fJE`jJYaSV)mDlUE@`EIP-jl"BAmH9U4A8r-5H'Zf["U&Jd*X)Hml4F!
+
+l$2efaRb41,I9%"M0%b,8#BTF)Ki#-'N'B,!KL(k5H(f4XAbF4'%9lSdT-@DM*2B
+
+2FHbF[Q[d$GU'SA0QE`(X"DITf(5D!`2P%U*ImP6(I)"8m0CN,1*C&6KHB,'6&S,
+
+Miea'1%*S*P1*h5a0B+[fGG%UKb+`KA6d9YX-h-,E9QC8fp#5Tm0`3YqqNkF8",2
+
+dd)@'%qA1,d@d*b#65K2-!RlFdI@'$i*ZAm4[l*EE%d3F'NbU)8i,J)jrM-Hdm$3
+
+ld&ElZCQ5!PVqK!EeUBM83!Lh)+H4#Z#VT#G9X4U3!%93d-A#'9VV9G(Y3R38)+@
+
+)MPZpJm0pHX`RCHK"i,VL,,UQNNF-`"#6X+$L2,E,D"(k5#49-d--je(KFdJc8Kq
+
+,`UMp)GA5"&VdqcU,9U#9l"`qHc0"$HEGj1m`jqNUA'Cf@B#fm6)Jjd1D#V8mdfR
+
+Ki&[+UjE2(D%mG[dLf)Nd!hmLPB#,Tb!NB5[5FfG*l#P9*V+LV1R&#*HGFjKGI`C
+
+pfV!+6#CDc6F&8-i*Y1TE1lDPB#21i`R(aYIF*)Td#p1(LD+ZV*q+S''(C&8a8D9
+
+*!Xi'IUQ,664VNRm,FiS''"Qhk!fh*+eUCi,f+HGf!"2q')Ch[8+haX-!T)rj[GK
+
+1$-+ACYCYq[T"k4ccM5`X!9)0ZDZ,V)rcR19"p5SVSBH(',C15L#6$lh)mEBNQ``
+
+AEm@159JIr3F6P1hLK5hZhqSm`9%JLk(,E&8X3erQd$GP"J*aQ8jFP#NIGQICRqX
+
+DDb-jZFLRX)HTj1fjpaK'mAAl0J6S4d#1JNf"a'`9D9"mK3T$r'iqN4Q+,NR6-,M
+
+2#jbNbK%&`S*)b+Q"ZU*SZF@%Zq)e)dlZ*&&HcE2Amr&fL32AFb4H3+eXPSN[b3c
+
+e9"BP9ZCcQhD6Y58"90F$k`%G9RRjmPi+P(cp9M1FS202TdVU`Y(K-)BRM@c%qGK
+
+0L!RfP-`q'hX"d$a6!$)+*kZY*3Q(DITGm4L'Rq@4TPE20!b3!$-&"!lb$k4N%0*
+
+c0PY5d,U%*GTQE6&Giki(-RPqE#M$`6kD!1&1M!0f[9YING#h+%!4[cFfH-AfCXD
+
+f[U5PDSHDKd1e`'#&#-f+Ik!h+UYJ`6f"lpI%aQ!Gq0YL%i[b`V6IGhGKPJ!00(0
+
+b%%BD3!-0"1DD"P#P%GpKB"'NNY$Dl#Q!8i+e9a+J5V-1#3HSdCbj2J@Z4L)$4bT
+
+Uec86X*%))Qp$"'`LkT-5%4Z*m(p$K2p1"-Q5FjB'p8'X(QZFa&'#2K1`)Z3N(&$
+
+#f(X"qh%Sfl"D0Ml#!&[c!"TSeR0#SB&QR9`Xd#"l!6XAYZFFmb-DeQRYEm+,"SF
+
+eT5*#J!`e9G6H"58FmNTZ1k+mHN'fFM)LcBNJc$26Y4p)+,a9K(-k!c0LRjC(p*4
+
+LlJ@(,pZV(!8'&iZZNCLXd@AKBdJ@#ilSmp"c"l#)!iec3Rc$(Ab'RmRJ01![2Vh
+
+Bcj,iBKrIGMhm2"V3YqIKaIkXMMqL3X$r,4YNShQHlZrmL!"E*9*CXYS!L&#XRm-
+
+KJHSc)&eGHM`&1,`hM)VV'9'J-511!PLfiY&BBLVb%#J-a3)aF82i0CRK-'B3H@5
+
+MI%XTX9J,Ql%#ZjF"ArS)#Lrj10(P-55TC&V-KKPPbe)UQD$DZl9q8'$Vh*C9r&I
+
+*"djZMVAl5"+fVaa)HKdR2&kl+X)Fd9X&1kb!JkX&25)S#)h%A3hD9J'iVD6T9!D
+
+Y2%5YSl5EU!USYamS#,'4HLZLiic162Q#%h%@51FZk"hH*c'JMmS,"HbCQ01%$G1
+
+2(m0b!Lh[irX'9)Sa#@T!TC!!e22!)8JP3Ci&&d!1,!T9'JV,JB4!T8##$Nf3!2a
+
+2D3c(Y@ZpL05FC9p@#&MLfcPh26,H"b)('p9J@"P3+@K#$43%#X8qMVU%[GjNRJ`
+
+)LQ-Q[Pe[##1Q(BH`[3r5`@Jc3JdhmKfk-E9f6bR3N48K)$4)6dTNamNdeFSN%Lb
+
+IQEqAmeiTBPKD`riL%@m9!j1,KE@,bGMQQ4bB'@(c"rRRC(',A5*D4,LZU3l"+#U
+
+608&cTd21[0ij!BcNA*Z1%PKI'@"`@`Dk&,FXk-iKaIY16q"Fk0*fiIfdR)6eE#m
+
+SPpdfUF"k1MLXk-N8d)JB6@P),TZ*IJ)eeNmdI(XeUi929%jGJf#D'MKZC#Z!e5!
+
+'1(,Q46%A0iQ4L+Q,#BQ4Qi+3!!rVfJ'JVKQid(#B&J5f(8f3!1e4A(-UI#c80LI
+
+Q#9+J-lGBG#RXkkb+bi5(Q1KYMBHP,9m`BAFEAV1Y6'!$h@Qi(68+'qJ3rmaX)IY
+
+CN9hHX3'@k@"R)'[5j!F-YqBViRdPB6HqJAYcbjD83D"D#cT(pZpa,MG4pC3%$Sa
+
+BNVLi'cf+cD4[a%CM!G-4lI(8(QqS"*A*D$Df,dG8jN+Urr6fd33j%Ti9BE-eVH&
+
+Aj0b@'VfPJTE)RR51f'XVA!A@0[XQZK+3!,P!)((@3*()6Ta%pTb,+F4kAkB!HmD
+
+dZ5U3!!h2J6dVZAm*bf`A-5lClIT*B"fGhD[52T[LeRcpC(EN`+R'9mmTb-ajG!9
+
+,Y'd3K@8kAE$4638$YR1"kaUkpb#U+iiS&MEb98RT`(N5)@cHGDhLZZHBilb3!2E
+
+aL-UP,C,)4F5QRlD'cD5bDD,Y*i9P1Qk4b1p0f-#'LGbcjBNXU$TiAK"@r44)XD`
+
+Y&aMfYC@[XB"(PXN!'pK'XS',Hm&D95#!c(DjklI,AE2*aS+KR3@C#4N"(rJ!l1N
+
+'YEZ5ZJ,,MS6L-KpF$HkDD-5Si3E#l)X50A"e5Hl)5'`l+`jTreCA(e#j2J5KVm9
+
+VK)r8)PhEiH()MM0P2i`,`H'1KGFq0Ze%8+CD*mS8Q3QaX),lq0V*j-#1NMNbKJ,
+
+k"M&X6eSZC`Kd[GKi!8RA,fabdJ$2e-K`Mk3!GR35TZSb93UiMP4C5%X#9FIZD01
+
+F4bYp,`kS+&Y%SB-2Hj5I$0Q4%eB9i2X"FJf(mKV1VJM"j5Fr61NXL)k2X%b(M@+
+
+B2UXBJU)C4*!!b&%l4!59Li)rh1H@($Jb)RqMMRqc[,"%Tl8dcMhN,XE-aEF#)Vh
+
+9S84eA"V3k)H0)&XG-KU'SeYiM#-[aY)!l#Sl5*,Y""G8,Qe)0)a4"U+bD5'`lK@
+
+!1Jr[3aN*R-[X$2rMRF*#kRKrfja%G@m"d-B8FA"I)5Cp*e-%eV-pVajXAikSRZb
+
+eL1@#RPkG"A3Q(Z3V8CPV$*-SV+0EZA!V#djJ@F3TVZI$IC'ClG[G)d-&5mDYH@E
+
+&VIRbD$*JCT`2Xf9ff2N%eY0KcF!#PQ`r3"bFD5qmEBNAZpR"P&hZ*B'0E0Q9%PK
+
+Qdbh)PE&3,$qZZ0C@DB$fV-MVFN(*d"i"h41IEk6R%$l4C'0ZF!1f%amcIE9X-8*
+
+&VQ2kk[ETlY4+51!pC-'G`3V$ei8m&#`NTP0N2F*P)i9mAXT&*'XbSJ2AHRQ6Bff
+
+*K[N0rj3AAkAjULLIV`ZAXh+Y8"$BN4S$HA@U4Z`qS,MkE#3PFU#mL##%mZL*f)&
+
+@&UU0V!,Y5$XlXRGSE9G[5b@`VLKC-RTUqb[$6IB*42#ljHa1Y9leAZ"rUJAalIS
+
+pJPZMB,Se[VDNRpk'lET$jQTR[JLJCq2)E,ea(C8G'iaYf6Sr[)L""eSXp"Zp@X0
+
+Z5-FSPS-(@XdeV'MVG%1Ll3,TNCABJA3"r6$D&`jHdHTbQ3fa`!GUXHH[hYIJ!l8
+
+XJ&Va%MZ3!1*!V4APaG[f@qqN9q5+-%YXaDhiXXK@A1E,cXPLi53%QY&$'1b$"H4
+
+a,UV6(JZDjDh6)+KFe5B8)-K-11kf0&c2aqf-f2c3Ye[!$VcPM[a)18`h**N2X!G
+
+MV0+aelapF`GXar[5hi6@AqiXBb`h(b,,KKX)qkbI`JDk*CB1C6V!HMS)'+a@DqN
+
+)DqF)9PL[iZU1c"9#cB[rd-i(4eja,Mq3!2C2,mY84mTqd"%hE(%0b*'6-hUJ()B
+
+dJHJ15FX2V!BHQ@@ja8",C-pjCE4YE$CXCB9#C1qdFm#4!qP'+"Lf*ehNHG6'0((
+
+J3)PS88m)@%qh(QN'l)DDA)Nm0!b4(CrX"'M,'eF"R''Y3IYd@#AfflJ1Q&BfLL1
+
+(LY(P&eKkPZY@C%Hka-UTEX`3e6ir3CZXK)0cKAXS(k(cJ9@aQC6AAc$Gf1S04rD
+
+FjlqXELJCZ[Fp51p$d!%j&2dfjaEKIEPMiQLck!9!E&[#R[hPfaFbk%$leXH,m*(
+
+kVH1@m2hlrZ!cP3cGB)a&E'bM#"rIEZ@T+(5NA&ND!6U`MTDf!I[1f+M*L1eTEfC
+
+TJ!p2Y2,#(GPA+m$e+cQi*ljmpd"Mpea1hr2P%"KJ'lkH$R'(iidL%P42KZ0l@Tq
+
+*U*&VC3iVG+5m$Ua'H+E1eXlJkq$iLL-D"1YSFX*RmTIa0K9'8+ELlKJN(MSTBX#
+
+HXVINL1U'#%!)fiaX!)l&!EJUN!$)A#4FM(Bb!*5VZaKXqq*LF%ZN#mpb*#PL1pl
+
+cjC*%i`-Q%q%DM)i*S*kU6jQ2#A1LVUG'K'IU&k4qZcS*kpP`H&2hJ%5e$BT!F9G
+
+@$Z&K+Fii83RXkCMr(k@KB6-TPKEQQ+,!ZSFM+Nm[aDf+kfHA!EX#HIK$+e6U`kU
+
+-kd)HcGI9TVLf0'ck(qDdiM,GUM--f"&L'&m&A!1kHmIA(+YAQX&"8+D5!ak'"PG
+
+STT4PJXh)(Ve@S[*m&eMlhV``BR`*B(*Y'p(G+Hk5-r[ILQ[ji$CfDa-"%UMS6)X
+
+NkPTlU%aq!$r@I0YGI@I1e6H[bfUqTAAil5NT@R9%hbT@RBB9ZJ)G6j%)d,6$Fca
+
+()M$j@3jprBEhBYj@`RZTVZSJfU[`0D5'l+cY!,beA,G)J0FHMJB8+YQ@[6i'Uf,
+
+`f`J1&r4A"e@8m044X3R5H49'p[e$'0jEfZlD%UL[4EA0SC*5$8!VRLXm3qRKP""
+
+KX6AJiaXU1,bJh82AAhQ!cZ+j"F)DES"S*%U*YUUJrlf'ep#"GYU"hhL`MjXQlGD
+
+$p'B[Xl!i*E([&8&EG5rIG&N`q8[Uf$'ee4rZ"a-`Z[RFTFX*0[H$C4V2KFT@lV+
+
+BGe9dp0YP$PSp$Gf8,'!khQ&GGQK$@HMD$`B#ffdF!6NEaEKSN!!h"fc))i@9`8p
+
+HaJ*6Jf89)mAS(5SESEFH2UB6%'mp+SR6dQ2M1mYh4Gj@jPemKU-DNjLLE4hZ@M$
+
+dah+T#ijG1C@)N!$a-(KrY!+D,Q+VUa38LEh,D593,&C`5X06*9+X4cN%G+[Sfi0
+
+V'dGcb(%+BCTG8JePBDG`IU``h6*Y*,jIQTmY2i!,A*!!5f`h+MF-LAPp-*C"%m[
+
+E8cjD#N5A6rKdm00N$["kUc6HILE[Pd#S2"mj8F+Y)3#4BcV#`cVJpr4idT'FclZ
+
+F%i0(D'A'B,(99KY[,IVP-6Dk@U,5"il66a08aPd,HUa3BiX8i1'N,qae`2fQrP9
+
+0dY#,$,[A*r%SbV3)clh9,a3"d#6)JX`@HrT2k&Ua8fai2-R2,+K$m`Rq,M-[9'm
+
+$q#A"qfV1F&Y'UdL*@Yhh+9J%ZT'0V-pdLmKfPJ'iK+8re!PJ`HGC0"c!*2YfXB5
+
+ACfh-&5k,a1k)-ac15IrLd%23+l6q-T&hL0!J6ThU,C(36h'"Kpm4+jGi3&C[")"
+
+#%mZ0!'JS+!#1VT&j``lDI$CBa#U4K1"k&J**8DV"J"G&#,4I#$39F'03G`4(qG5
+
++aPNChINE(FmEbF-VJ0DVZ3c0Cp5&mr8eK$TJ)V5C-'qNB'a[*&'FRNM#`fkAIdL
+
+8aTYV5)VV4(&25I!2bpGa)#Q'`c-&KNI'lriH5i%*I$L,3f'%VflB-+"8-*j-S6J
+
+K'%lF%*M!KdXU"#E`iD`JJ5Qm[pG$BB3[J1Maa!Rri[E%$F8T`A$DKZ+-S$pT3h&
+
++-*bbS6JKJ$EUmB!4cLZj5L@J%S)iMNAqPQ9`MCCaB'Yc3a183q@$(h#"$L&D$Vr
+
+-5-)P"K%JcADIfbJaN!!9h-9)%@Uc3b-qXFf4+5iD+"-UKA#@`fle,#44XQ,dEFM
+
+f#c+HVeMf""%#48IUi6Ye-D,)!PUT*(YbZ,jEd(%`KVP4#Fm!5@lbr!6'DVKY%II
+
+jQ&0F&f#i9%!J&)qp9@N'K)$"&ld@X[65$#A63@rMSY$bSK#3!)U2lAlQJ3-T$i&
+
+,Z,af5E2U,h+*h,RR"TH3!-diD34QQeaPK,AeHMVINJiJNJZED[d62ECrmGkJa%[
+
+CmN&j-T(JK+%8*6JE@ZF08)*Q29FGlfLP1L)aYU%bY&#98QBpMd!5,eYLhd#[lQ1
+
+rrr&8ZNhUc'iKH'e'!fPjmD6R-bS4%F%F"2)eHRqC5X"19@Ph[NFF&S&!AjEZ@6X
+
+`iV-+`906Dc#kP9P-$N+N`')XaGT5C-Xep5P5LIA"`cSEE4mBmAN9Q-#p!$Q&jQV
+
+Y9-2`cUdUqGEq9d[bZkTZ0Q4PNRq[kpf$rI2Q,*L91!51faq$%Y&A-PJkMX2pZf9
+
+aAHATcH8GP&j%b*!!i!GH!rhMh%4-)C!!r3R1HR*fD-IL,*jL0MYDU*T$2IJ+LNR
+
+`fZXSRU)+Ha4m"ArTGC4+0a)8I1Aj1-*R(4Va3RIK(lihp4+BJaeI4e[2N8Sb%pF
+
+FiUAhkJZd95qV"XY-4E9QF$QEi4H`@*'lS@'4Xhm*hYN@&hk8BC&,GB1GS6aa"IA
+
+Ni`8L'GQ3!-$pYMr+pYKd4fL18lT6UY4&'"D#BM[-"h5m$8cAc9&X$31+#T!!pEP
+
+(0B&3mX00Q58"+D&rlABGDe@rAFH4mS"fbHrX2rUq*#[BQ`@D!4I2YH1ePF14Z3k
+
+X"5$h%iiReJ9NYjYaelCKYPX"-**i[d`eHXL0ihMQ5JQAYi(GMq%A3[bU'43PH0c
+
+!-amKA)@0+A9LfK-E*89a9C'I&%T6*PlpN9"X0Hf5F2U(SYd`D8p)8bpJJ8-kpaH
+
+VFE3$&Z9"Vc"+m"%8I)5&I210Rqj`6!hlY(E8(5j-&$M9Z8##3I%-16aXRTZXMC[
+
+fp3(U5h&ZASX40kL1aI,k'SXh"UJe2qmH4!U[[M*0*i#5b5P%Ud)%Dj9`@65e5*!
+
+!&"3++RXacRJBcNfCGH5cU$+&2Q238k$pk8B+C)-4ZXpZ%T*90pB-6LTp8fj-8PJ
+
+k#6!NM4$k#3m#LKQ&TEPQG+c!iHB3i-bJBk4#p51q-4'eLN3H"6)4b8,hIMYPRD1
+
+l[lBiG)2MBD6cQbbl[+)Lh*Kd9H89PH#0ki@3!!ZcVXL8`0Ji,@ZZlb3,JIkSemH
+
+BT4[-q-Qh6Pk4'B2a[A+6(lQ!0Kip0r#+5I$'Y4%4a"V(4Mi35ij$2'SPT,!Y"GZ
+
+6Yb359m,+4l5rIE%Nkf,mFA3dMkX"RF9BJSmj*4(EBl6%FJKJF4ha&4i[MR34BEP
+
+kii+$%eN20GmSp`SI#GIQ3!NRhFR(RMMCp!5[M9e),fi4[MZ40##E5qMr,X1cB'N
+
+Aa,SIFI"A"p,'IUKEHmUAqEHlpCC9#PKEReHp,JaF3TF8'4,RU&iSN!#JV@[Nf&I
+
+S$26IbRIU@,T#X&q2Ge$M6J)Z+&ahHXA#Z9BK[Mp!Gb5VUMLiAUlld)P8SF2TK20
+
+,ANj*@UaPLNMIpaDf!a`K5U+'+Eq*2!P-p@T[*`JeTC!!iN1MeC&EZJAhY$aB@i)
+
+XFXa@NfQ*b#i@icI++SINC`Gf)N[fbM&5%Q3Uc[MPA3'+rDN%k,&9!E,[iA[kC85
+
+VB!CqJEDa(X1+A"C2T6clXNCEk`B)AH0)D,C+K6G+GFGccV6`aJ02GIH@`p+eJe3
+
+JrRk5@bXA"5M'k!l$X'65D1TE1G438!i%c%B8e3`N$3GjC9AR@1[&3f5[VAAXS@J
+
+qGe8#aFTHI94FVrr(1kMAea*mqE'S0lra[[4c'lIHpQZ``XPmQF&!SemTel'PSc`
+
+PGh365UNBhX94F&XSJQCl+br581fd"8lR)fB'lXP*V$)DDRMFpK(C,e#VhKjD#6V
+
+$3X(C,Yl'3e0BcJ9UV9CK2)TfDZ"J@T+[VMk)8#2#j@mE-9E$"cfN4aM+YKMHT+U
+
+Ia%8+Mq`ep'UVKJmPrPLHKXXKp5'KXl26F)M"Je2TZ3+V1p0HJ8mEaMc8TK"`li[
+
+9VNI,Ta3%RPBm%rNCedDAY8R0N!!ZpE-0aMKCB)JJ"$KUh6(kdRFIlZ2e@4+KaC!
+
+!`!C*c6K@fCX)0&&(8cbPES$ReSQqJC`ri[A8Hq[ErH*D[NeS*bCfl-Y(lcNqQT1
+
+%Fc1(YbJBJJJXhk'fq$TbZ(XK6H+kd3hD@Ke9j`$%"6q'qrjQk%K5C8AelQp$mc)
+
+dj'dq,#6@Q60iChmCY2@mJ0-9mrR*$CV8-KYhM`ij9qjZLE35%qGlZZaiAi394&A
+
+8[Tl"ZQI""JjH%GPlJ3@f*akh4lFET9)r'Y4%bBTB08R8)IS&RjDcK9*1PCFP"#K
+
+(&IF*iP3[A(F3TCjf6N$'FHZ[Y13MDIp*H'f3!!)&3a)3BpV0SQlmQ3HV`!bqZQc
+
+HSEqrEGiUD-FJTdc!8TliaeFV)SZM",*A-l+mYcNqQS$V"Y%NciU3!0L@lq6$lF-
+
+9`GDDZMYf)V)5fr%e(9r`YEeq,B%+H+er$*TA9KI-!QrV(5@6BcZp*-KZXh9N*ED
+
+TFQ2V*I6UBP&KB#TQ43jS8@ec"V,2*2p6!TNemJAj2lR9Gc6m5`ki42Dp645&b9I
+
+J)G([D+GU[ffaTYCU0180PXBJ"a$Ge%b'@,(+Y4Y#SBL-A"*m``H#b0E%LHS(&6K
+
+$MrkJAlIU9R2aRTI-TJAhkk"Ac4,V"Q*1lX-l@T*%9PcIq91ecP,b[Ur@5-JU+d"
+
+Mb&3'P)+H2MZ3!)k5,Gf)QV&HaL%c5Ep90e2A2,MP2C,i,HEpcG41Q-aCh1UcLi3
+
+I0&0lk9@!mYJV1HH+PK#2#B"E*IF'V&UKBU'B"))erh6LEdpP&Aar6h"LF,iI!S3
+
+P4q+mLIa9*)Re1Y9A8#6'pif3!([J*Z@A'",Ifl4IbC%iekQrJ%pFkr4I`#[AqNl
+
+M!!dd`pkR!!dd`rfp!DSdi@lRYk[84KiYJ%Z*bU5,BPSlL#YjGJXhL"4B6p65lYr
+
+4lXpTIlLi[@(3*eVYmA+NNVbrLcU6+2@`idYa4S$,(G`6D6BK9["K&b,GUp!"P[K
+
+THUIFJPZf6iJPb8d2ik(-!DV[p5kLf9+8Y1Y-8X0JT%JI2TX@CmTQ&k*LF%X0-ib
+
+h6L1*8`%Xm@HXX%G2F"SPE-1VbL,([pCfCA%9H'[)5jUAhT0[k'1XCA18G!*EUkb
+
+2NSlB5$4XES[B404[F)[B5$4XFSYB*rSadGDc014[CdJAE30UFljda!DLBHPHJ!D
+
+DYA`+jd[VYr9TbJ9Db@3YmC@iL2")a`@H2e"'#U-Y&eF9C!!U"6cYpchDN!$8e0F
+
+G@R13!"Ll4CKA#%[N!jX#D3F&L[SZhi)#lFQ95Z9G(6Td)l6EJU,",jZiFZPGicS
+
+*+,K1#f'lb%,Tb6PG'Ur%5p6hMj5,Lr6L)RMi&rVldbG2r[ASQpHI`6rkaCGr[VM
+
+ip!*rIrR&2lrr)IH)H'[&paIe&a4mpjFh-L23[+6@JY1iS,d5FP*eL#YmDKPY'8L
+
+@a6@*!XreU0q9$h%H)hj8$5r5)@Paj'#pNDpRLMc1@ZjX$)ZC$2Qdq[S,ZDf*pYS
+
+1h@FVL``44c[fF()iYlLmJYCN6S8qp(0BRibHBF@E'@kk*U-rm5p#fh4,X9bMm`X
+
+6f0RH$F#D36VY+U$jZfJQceQZ,[$9*T1'FE#Z$2`jH$&0N4V&HYKYT5VA"C!!BKZ
+
+AFFY(6NAYQA0XjjdPBdlh,93aYB4XMP#!kl!BZXZ0"[TN[%0dMKdbpN'hPYdZf$J
+
+#q'NiIG'!Y%22r8K11`jDM4b'N@[[BVJ8,b"Q$`[B)EEa+40'X28C!0jSf0p898(
+
+j9Sej[%q!qY[)Cea3@p6,IUf`@UlRmVQiq+eG9Z%a134`-r%6!`BqYKcKRGeUDVI
+
+S9("j5BcCjLVML+N2+IEp56cqJ1-40HLPaMC,AT!!$QhZfG)HM0"#CHNR#F'R5`P
+
+`EX(CmV0i2`"B$r'f$pX#9Cpj&U%aKSPa)LZZ*!9F$k`#qr6ii%!U-KdqQkdG!6N
+
+BER*jNDJPHbaFDBGG609&)c)P!Y$cV(*eb+V(!H8`Q-H,(@6q('HMfH++mh+3!!&
+
+8TIbdC%@e#ZJm6#&+G@Q'C@TNBr`J(9GNR$ekkmMJElNI9P+iE4Ep-Q6MlB[FB"#
+
+"mYPX0,N$"$QF9cL$-J`Y28a""&2#ajAcM!kI%JG(PN$PK!*bX3GYJ)Q2)T1['md
+
+"bdkmpQ0+-dBqlPmbH3K1'-DKAb0D*X!2YNhVfFLpkmqJJEpGE&`ciISFi'Ij4Hc
+
+c%'FLf(AX`LE&AR(cqe(i+lIGfIj2jlM(J[lrFihFljqVR@bV-GX20F@mi"kYT,Z
+
+1T(9%LEdrkFP(SP*)V2e$,'qclfp@hkd%4D9([8R8P"ca1@3rfipYi#b49j*XliN
+
+$6@5@#iE'J'h"N!$LpJlMpF8heC)K&JUrk[d$'8PNECB16!4dCRe9dKq+JJ8ll*!
+
+!#-"5MdT'd*+KpCRNmVP3pUlUX6(jl,1m8q4F!pAhXJe$j4%Z[+%2"[1&jbS'4eD
+
+HSF3QCdD[`PQ,k4,GV-'++KT[X4[KZ[$MZ`X6!ab5#2Y%FhU"++R$prb0'Ur#5cA
+
+[9`Gf(#Aa+18U["$b`p&SFjC)!(T#*d4!!R)iCk4#YjH-4(KrB8Z&EMFZ4MLGQbY
+
+bSY1H)b1(%rGf5B2JYjF)0B6[K,3@QEXCF-$)KbA5*T-FEDN"8@b#V#CN#Dlm1$N
+
+2D(fiT)(CR!Xi8X8)PHmf3r9ej+50"c89hhP8[*jDFKM6m,b)bPG#4R9B)k,29+1
+
+,)3S8X(EbA'm!P`a3$Ap@*G%!)Uialc-Q!BVRj6Ik*aH,65@TYJL2l[c2F5A'ET!
+
+!S#-*[m!DHVNP&QH[F-63UGrcKipS)3(J4pMQ-jI13(Ka9hmPQU&qR&`23mj2X%%
+
+Z)"bemcjkNR-R%6*ZHUr`"H%kTG*&9+VCN!!QJpik)M2!AaLrf$'-1h"!k&`)hkX
+
+b$&0lX%UFSK")5Cb5`AVJaXS!0KHAPhKK"h)Rp1$)DBG9$)1P+8R(qH8F)&kZpH6
+
+0HX$VYB"Gd&BhF3((`I@DBah*5TBEeJ@cIMEp(,P(pId60`,@cC(iI*L%G-2fp4M
+
+a5pp4ebkI6@M-#'a(ULA2eh*INSSBS$qZb!ihe"Ie0r*(ZcQHq$%9F"N)3lNhZm0
+
++JT42d@EqeXZ'$ZVcM)S+Jeqhqr@'pNRjC(J3h4ilG+1Mh3L'FfGI,P'QIAScrh5
+
+*5)bM2XS(LG63RDeF9%Md(bV-DhQ+%X[Y22p9Bh1BD&%JPYIm6h@6!Q-MENQE'YL
+
+U*N5VY@S*5bTI6e&kc`ED9ST0%GY!`1EMGra8@VeUX0i,kE"I3"+3!%Zr1H(PIkY
+
+XEfj*T5T@D1@6,)X-(rq&FiR-9lh[aDH!BY&FrjH%$SjSL*q9@rZldlH16#5Ea@m
+
+P3A[9Pjcea99`B-llE-)''i2,Xr"5X9iA%LJ%Vrhe1T4[cMT08#`9`YVf9&mSmQq
+
+GkmhrMr0"Q2qcbYrhlCYh$8)J#Ilq`e*'lr#'!Mli0DXdHS0[GMRq,`!0"R4PFQd
+
+ZBf0TBh-ZD(*MC@0'+@9ZFf8!N!N,D3#3$aD@*J!@e*!!!"8`1J#3"&4&@&4$9dP
+
+&!!#kBG4$ZQ(85!#3"KLP!*!'#1%!!&cl!*!'39m-6[(N9i)-B(UF--0hiCNji!d
+
+B@6RPj0E-AV,A[-Jki'kkfCEJ#6l2p3%)`kFV`CpV,cp[%r5M&ILkl,[HUi``3XQ
+
+@E(,lb#DhMi`h'@ebQh#b+D%#!-h#[kk8S'**&NrhI%[pjT%AJMq2%a'$,b)CLp#
+
+bV1"QL%6%94Hc4Fc(%`Pf[3`(EpiF`A!"FX+JbmBXNJQ)NASH42b'a3QA#d,8[C!
+
+!Md3FF8rV!2AARr!%CV%Bapi8m'N8-`D*'-PE,fC9@)Jjq&i%-3Yi)Q-qR%X'A))
+
+A"Dr4RUN)q'L4L8(J2!TBV056PCN9jqd"R,1)a@MYeA`BFKpDh'G4`X"$rB4)*La
+
+!)c-a4(Y'E[450q"-S$T2FK&9JA(%ak$m&4%F'U'T+JG%R#Qa28P'aL"Q4&j'paB
+
+3HQL3!1(I8eaI3T&l(`#2P-k*Q+(&%e5'TYrb-)3KJhR#4[23bA3J)laYpLmkJcl
+
+8fYI`YYEYeYVpkbSbbSP!0,YK@JqIcN+1mY$Sf)Y8BM-CPieZr3*jDbI09V0rMGE
+
+#@E2IE[4kF0ET3JfZDYeqXcjSeET`0HKHGAU02B!H4JH9C5UH)iLeJ&('K!9-HMa
+
+-(Z*`M5@3!+"GB3!6liCK'IJ-Qb8!$rYTTXVPPiaR5Va34'0P2M,Q'DX#(d%NT!1
+
+h-FH#N@+6rNa$hJ)10#0rci(IrZihF1NP#G4Z-2KeEcU-H6$'TmXDl"mH(,eaB0#
+
+VNDRilh@Tp"@2r(!H-0J1a9MX6EB,a$J83`m6J#"%M3)fJS[DG`ehd'lfqUIZ48l
+
+ec6c#@JMf*Yq@[Q)4pQ"'12AmJJBV2"%KHq*4`[U0lQ@cXa+Q4J$k3S3KTQG*ec[
+
+[pkpAE-PBbN@K,K0*96b#IRI3-'pRY9D[XC&IVefYpI[Hl,-"40KURU`*3clm6&J
+
+IG(Z0hSU2aJh$M$ekpRIVm)e(@!hdE1eRld4P(C4+2**`jrT#a)%$#r0`jdkp1hV
+
+(Rp95bCpi-9c9UrUKFT+p$+kU*5bk@)*)CS`&+@iiHhH`IrMepqQc(lTBdZqqhXm
+
+!d`G!)Ki",!Gm6Mm1M,N[e@MLf(j5HIHHSARUE4JclhheZ3p5IP8'`fIq9FiS,IJ
+
+I'pZA@1JT&aU'ZikK8q`1X4(SF&4BG-0MDYf+(!XTl,*kB4+Pff86UdTD(Zj-aSJ
+
+KK4PL,[(*eT'CP1((%YAjNR"h&ii4@PA!Q-NjLYq[PMjQQF(+[5[G#"jNSP"r*UU
+
+#!#GeDcJI'B8+)0PdT[1A35TSh2+C+-J&p)#Hd$de3h0l%)Lb0#9b(a[c5ID1BFF
+
+N%2jeK6D0MA!i2SEfS08U%kI44MY%UF03*-6L($Mh18%G(l1JCTDl21,5TQGbGjQ
+
++h%H'qb1TNJ2UK9$4Q"R&*T&Z-Xlk`!Kjff`I(4S@d`TSfB&TRJf8*ak@KVf2GMf
+
+Y)"-JC4ZfVdp&NBIlSG$iF%T2UZpc+h*qa"1reNRq+K)bYR!(3eFi9+6N[QmY,R`
+
+Cf[Y1[hlHk0HFY%(+pNlHR@88DqAe5GR0X#[NRZrkrV[[,T[Ylj(NjCrh$ejq`[H
+
+EPif8B)d24k%hKTeMq)[GU&pd2M6VYADRVG`QDh1lQKdbl1TrKL9MP`3Rm1%BkLI
+
+G4Zd22q2*%6)NLcH&l+-1CM%@8#S@Y8*K+H)4bKjL&DZR'hZE8VG0jTKUA"C6SMB
+
+j!6AU1+0YA0EU[Hf#eTm`rce&2*&H6-HB85bQ+DfT0mcrPNCmq*!!GL&XBHEN5q`
+
+#%S(qTX4Ti4TUd$Z48S-1421T[Hd,NUr"DMdZ`5%hB*d(#QSK-Ce,8``$h(JapiD
+
+KpPV,H65lhQN0,Y[+ENf3!$YCcSa*-jCU05K2#QjVTJcrS+l9a(24Cfh'ehYY"VA
+
+@pK(b&%ISmNp**RhDR@p3@1lIle14K0F+0GkS2I`k,4%p8*CT5mCC%k3$(p(T`Lr
+
+Djhi@E[[6E9b%DTqRrUdC3Q*3NplS)hH-!pUI(l%F(hJ6JEakk+[@IB3cJU[CR`@
+
+(JQ9KEJ)4[C3`CALa8UH`4-jRZ1q`e++!MS*8U#T,9RT)f+I9N!$H%05EAK$hDaj
+
+AXTU*TT*G%GQI4L+jDe0$iHTNH0r%HBTR,)jRdCfGeEM$jkeParpM5r@HYT4D&06
+
+qDXT3F@bYq*A6bhf$)YElTK"KeYp'a0+Yh9h6c6NMC8$0aFHjHmZMSm1-@L8RLpF
+
+Q9k24Pf$p1N"HXLRhhl`8)[kCPla$rj-BbX3b-Zh1D3-US4mb@QThdYB!,alMj-K
+
+bB@i%2Kf8lKCU-m4M2,([`S'qeq@[@&*BMQQCqLK-d1%NaIab4b!R%i'@iD!e1h%
+
+iGC8jVR)RP8@S"bYb'jD*c#i244C@DKk2&$K'Ypi5crfjBKCMiilXl4I*FS@XNIV
+
+JTRH-2QFq@*0RVjMTq8ibM&TD[TS-rr)SB`rD*je"qe3GS,)FUmp4(N*FF0+4fjj
+
+klaPHDQ5%M@$ECmdrYJHAC3b58[[+H&!Z1bA,HLC-lAQ9QqY!ZpNUNmQj)`Q62jQ
+
+bEUVdMQMVP"DmLR&9XiV#T$U6PDj#I-(%c%4#MVNhc*FLaMb1YBjmelBlIEGrdHf
+
+J!qGU1@jLL)@'1a&Pi1P3qD!10jYB,RQ#R1Kf`N1')mi)qeBVZk15-5)3SdDe@R9
+
+V5p3&%i1Je5F1X$Kfk@-)qk4fkTl@F*53!0p+l4GIVEmP`[UApIrfAJm85epFp+p
+
+2jK6l`X)IHDRIIaV`D6PBUa(`-jreehTq)&fAXc8DKI0N8X`A,GpeZhrUeefhC2f
+
+J#A,Qh1je5qG6)bd`QllRL86d#Tm$FCYNAdQT$hA`XaYIV92XZ9@GkY`P6bArU`*
+
+9Q)CEADBf"EK"&p&IMNQF!m[6fr0b-9H9*e[6$`2Z*&lehahYVci1'%d9kN#K&#a
+
+*)kq4$LEraBXCa9mIDCc9X8GaZI69@$3fRa3SR4YiL&q!(32+ep!S5(AL(QUKB@A
+
+kGX"*4C[#TM`3@@@M8jq'LP#SNB8-DQ5P,MK+&"h+biK%"`b`l26kA8bV3i3rq,1
+
+&(Phr"`!!$3ThD@ic-R4bE5jM,QKbBf9M4LPPER0P!*!*FK3!N!m@bcm!&[be!"8
+
+`1J#3"&4&@&4$9dP&!!#kBG4+ZQ(8CJ#3"T@5!*!'*l8!!*)M!*!'GP!16LPj5T!
+
+!!F$T*YaEZrcm,VmcEj-eXj6XYE1pIYb(h*D9i+PR+AGpfrL[!Hm*qK%,e$9Sd+a
+
+4EjrCfhGN19k5j6KC#0c`+&NSS5T3Ehihjm6#h%)'rkI&R$K`fVG@!Uqe@"8,#f,
+
+6VA@EYJKFdI(FIDGQLmIdAU5hFk,UYMT0afS(BXqc1JfRkJ[2l3C1frC4#2j0CGc
+
+1NHIX03+4bXb+j8mr[50fMd63X%A4hV2EJ5rF1RrHD6[lYZFl`4'pb&K0TqjkEFH
+
+5G3Mq+cFFRlU!BPX#RqUHE3[IV3F(PQII&dGZ9e5YY[$XQZ-(RV2E$@cK"-*Uefk
+
+kRQLj0DGqC)V"`fklCRYFI@"l,G1+4eXliT(GYMfV+EDlZdfR+[*1e@llYV"32lh
+
+`'hB0M66&%1`kGD1NZL(@A94R"BlE[LpX"qmp`Ieeff*&&kUUQKHZCbT*@3%edK0
+
+ZKm"RdEdMdE63))frb&MR3a(f[LDF0YICF$YSF319SHN(6V-TGQh4pHekYcP[kJ#
+
+LH*`VEa4fbL+pp93m6KH,kDhbdrY!$"UBDQ([fl)HKkBHjD(4(SDI*YD8XCNYCMD
+
+!Qel0jA2PTfLY@-q9Yl+PNPJ[&%9DE+H,j9aQ*jmZLZfGiRDKP&d8SS643@@QLKF
+
+M#&V!+'2#DRCJ18fr2`j233)qfY@XLBDeEi--UMDBT5BXX&@(bH9baNdP9Y0Ylh(
+
+cJ4M1f(hKe%AE$HE&JHH!B%#-`qNh0B3X-#pblHVL[,Kcpa1aDIQq51pMm$0@DpG
+
+cDR[iY*N@5b[,YckG&cZP0$Aej[6dljafYGN&jAi16Ukj"rjLif(d+("DGZm&MAj
+
+lVrHQC380HK%qQ@QkHqjLBbCkXGGdGbd-8r,),!,*Ufjepi!+Z1RC2SLULKE-6%r
+
+I[#Pq9l2VS(k`b0DYP8TTHMTIc*CfmQ@45HIcUqR-(m3fCU-GB(p!,pHll@TUir(
+
+@'KUHfbV2LmGJK[6Q[-MclpRldp29KZ8*ra[JE9NYqmZ[a!-aXj0CcD2iQI[kp52
+
+D2#B3r$$%bEMY#3UHq@l6"XjdafjAR(BGmpceJUDpEEIaD'1eZ&2D%)eGVqXhjV%
+
+S(!EmLCrQbT[TEEaeJNIcr,1PIQI8jmcpk@)f8`DA0)Yf05$3YBcJcU`"Sf@hc$F
+
+d3MhK,rHRD6C%3lDhA80"e%(qX'Njp!A9B('VZNd`)RBFdE'DGJ"'mQcD&iMp`C@
+
+BIYSj`#CqJ%p9N5RN#m9LGPh$IEPbjrCApkIAFdqfGME&VP9pAYR$%NH&dN"`HGK
+
+3QV@+qBc#(Ham,H[`#4TQ(6kGarjRfe6c!l&dRaph2,XLjiKaXAcCpkHC8CpJBl0
+
+3dP2qM9T@#i9m0Vf&IPA!all0B21Lf`&c!Yheji9[S`DhAE94i(SkAmUU&J"5Eji
+
++&5pmE#H"Ad9(D)"9fjN&jZDBdLT0fP$[#h!@E40B%9b["Yi8"l3MUHh"kR4X3+S
+
+9LZDH&Z1N(+IGk3DbQ#pA[[TbC@N*Jb6jCXkcV4SrRFGQ9DrE@%SVp&*14lAVm@1
+
+DPhRq#Nkd$q9RKZE[Q(@dAljU@GkHJc@#SDQcA!FUiXC,M,!KmAG6QKSDHPqapV%
+
+mk@P#994)mNB4*dh-YZ8(GTNQi)(BfXRRjm0Afi'R(QQmeP'*4mmmde54`A0*&r4
+
+&NYHDAEHkc3"M#*!!A4XEQi1"p1e!B''f2a1&l'B&c*4GUk`AD%G)Ej9bb31JBH[
+
+J'N"aQNPFZm89Q9EUKeEEKkl!,m[&(@+4hcPe&+"fPVAXkXkMkAhAUC()X@E[G[G
+
+5XU[qV2Mc0'edl9S(+eC36mem(-b!Q,#Rr(AkGhBEfS+F,XN`NRiU,(fNU##0cqX
+
+!GCrAA$[)B*0Z"l3FT$5[ciYV(XSL!-m'KlC&#SA0#Qq4bk'#4jAZZN(JYUi5+&A
+
+@`lAb2,6FI6Y`kE8!,G(2)edRjVMYiXNq4"Zjl1SY'm`D@1fp*NM3$UULEGXeRaC
+
+Qb!meYfd[dXa5"@EK@QaJ-JpP3m*(qhKd*"pYSJfCVZHlAJTY11,TN`dL9MYYd%r
+
+Pj9&%f8h&HjNU-hSpH$U&!AMNZM9DNSJhD&&(IfdI'JZ23GhD"dpK*TSf#!jl"Y5
+
+8k5NP'i%k1LlD"5jaa3(%'P)YH%DNAY2Yd*4-RAEQaM)eB0)BqI*LAL4ll,N9km!
+
+k5RL$&bY&'p!k8QD9%4p*6TqGRL,T,AbSjS1@UC6$QiC`a1I!fUcNFp"qm2R'$D"
+
+50G%'pUAc99359d"Pp4"8EAhS35ZLT`T`cFCkDkpPD'4iSakr8`-cH(RkE&4&BIG
+
+VBY1)Al$V6K#NI(#-V3@&%eK)#@F2@qF[(je$kTIfS41NPSCXS&CZkXQ(68+V%QD
+
+4@(@#e@BJTf@HYP"DDHAU3KrNBK%+(4UL9-aN#YY2Kchal!jfP8$Y18PEYPdrf,4
+
+phpUcSihQm@DPP#f[&c)l*9REX#5VYQp"5f#k5!SUCjq80l2PBLiM!Z`qBHYTSGL
+
+I"m'jLSeSbf"PiJLrIKJ-[+FPHY1'5&Ie$5m")@J"JM'S+""S+QJY"Le)K,3U2hC
+
+Ud#$Ra#(8&`J9UKSUR*!!*05'c5,l$I30Al1(d)[E9M-2JXDq-3[`)`0Zk$6&*Gb
+
+!(MfR#VkXBPBmI'!'Q%CQ#LfN[6#PGhj-YITb)pRiqFYF5Zrq#mZcUSRd"d#hfG6
+
+mbL1lm,iImp06[$6JlaVUT2p5REL'BBd+A)ILc51TaieRH8#mFS&a&jYfRH3"L#A
+
+a+qPKH+$%UplE`1f-!1@8i*f@ZBEY6JM`eikM5,55Ieef2H+CimEreE"McE-1+P*
+
+#eV*(i,hJ4V9VBhFqj6HcN!"+KQ1#`dK%qj,LXZ64[Ra%Y45kh,pNXF@X4+1#Y6R
+
+!i1-(4,%8p8X9UZ(r%aX,2F6YJ&`'S%K(+kMd91NJi6)Y"iAVUG6FS")d`(q9KYh
+
+Xf*kD)JFf$MP%XAS)%3#5)44$HLL"kJiD!B8D!KZk"cF##PI$TCpL8Y#S`(d1T@0
+
+Hc#c1Q)e1iB8!NKBNK#&pJc0VQ-*ALKBD!VL2&qrjLam[h[+KESAp#'&9Z8eb5T`
+
+A%'(hj#9!A%c0fh&CCS8eR*FQ*%M-#[fXq(B(RqV3E%0bBZ8cDVi'NM2L94XH6p(
+
+eCmqZBlZ408YXUCJD[!8m#DQ9Rpqi%6j!-HeUjdJ1!&A%#"%C8r2i$9N2VMpEZKi
+
+qT4TTMj-GR@h"+Z"@8m4'4%Sd#e3mpH1'Z%@ER1pmBlYeaS[A+0d$141JHP@`iEH
+
+SP!L@i,iF)I6kp&HHpeFMp0Q90a-8#Q4%8@SblN[#)M',S34p*DA-c!NQ6N)m!-6
+
+[Vk0l#[lk(e9Pk[[T!N*9UPkK498VN!!64U$U'FYR%8bIU(NaM&4%SY@fID!N9R`
+
+a+LZ"P0hXBE+`55L#N@ZU+Y*J[36UL6E5'M*4J5c@Qq+UTD)8qe1fdf@P,N@3!1r
+
+aHPf!0D'bZjG5ETPU+)(,N3@h`,XJc94Lhr)FDlF*XC+pGc8EVM'fZE(,4TTXT(d
+
+(rJYSUAKXd36S8RK*e`BdmV[j$P`N'P(TB[`8[AHp)laXdh)2CjS&i4KNSbZ"*,D
+
+GCT-9qB43""Cp"LE&'SE"6Y-k%UQZ6pUddZfK&IQ,N!1+LY6b'lQ$3$P918a5fm6
+
+h$2H`j-)&X%T28YTK&-&U1EF%DE)D+'Nb(Yd,T65"(1$e"[[U!Lk3!*d,9TpRD!D
+
+6-PrefL"q"bI(drLD8N-1UX*'i)e%@VLCY%lESk3eQRB3VV5k3Tm%MBJU+j8#KMb
+
+,R3I5(YV',JrcP*!!0%Z@@Hcq%C(BKaDmRhL$5P!%d-RkXGH!%!XYp+#K$+,`PT+
+
+YLKB*pRY3Vk+5i'j8T+)EpdBkaD5"@#1GmEUi2Qq%4DdV+V#KhUIFGb2TDk+4(B0
+
+K!)GQ4QdmM,f-SR&!I50$)hV'bV3f0SS$Z"qY&NPi%2'Nb9%dqBfHi!hb0)N''C3
+
+80a&TPq"8`PKhY-cXBb1S0J4ka[A&@hF9+a+4IDDB6CHcRjPh-4rS[cQaj4j%LdI
+
+XMP8FS8B@V+!@$)bb939Tq-$EGlbJDc8(48QM+L(**8,THTKl8Y&m568fGK8BY@%
+
+$8PZ-p#V$l0dV4ZmYHTB8F4J!ZCAS2d@Zf%4!*a"BD4DM29ha5)JLpj8-21a3QE#
+
+R$CdI"K9%)kXU(F(ceY)+C`Q6pU5%BFYZM4#IRL%q28D8pSaa9f#RD&QGF(-)0j0
+
+q"5p@UXMj%GGlP8#j5De8+X[8T&iS+alE"DDBfY4F"'leZ8,[ZI`)IHULQ9c0%',
+
+dAUSZTJrDqIHU%Aeli48$REMNiVVMqF%#'ET"K"#FBDAl*V(5b5@E"+5qJ1$CIqU
+
+#V"'id+X)qa+#'13qRlKk53,`Z@0Qh@I2!HX+m1)I0+$F$UU4qei,-J&)'mTipEP
+
+`ZGp+h#$T!83q+%FhE&#1kM%jM'mUClAIhIA45PT+)Fbepb#EY,L3!%!Z(MA@!UL
+
+B5(P@jFa`4fDS(&r@Bf-GT8CcF`lBd)['cDaDYCR,*D)RF85QMYqNMT!!-2pG1"J
+
+Mrahf1ihP$CmVU2r2AaK08L#l9Hb$Y2C*dM)XeHd-+X)HVV(VMYf%F964#baUPUb
+
+ACBLfA''T#&E2Z&,*6Dm'[@F+K@-4TSrIrri#K9bLle!3&$'NMI#jXQV$E9cCcQj
+
+9eJU2YmkJ$YMep8!XFmf4bIN%6Y,YJp#cMfq*D4rIlrCU49NK2YBrmKS""DUIH0&
+
+KXMJD"X5$e(DT8LVNFmKak$G254hb6r09[f0MUL2McJ90rS,r+rJTB4iE2#q*maA
+
+N2f6+2[4ri1jLATq(6l45Y&2+&RXk88llZ'fTaB8"&0*24,EL348Xd[6+@,@49V"
+
+0fNjF`V@1YZFD(1N@l5"kT&DGY(-d*+&60#iNfkkp+rGd$0Db80N+6cpM8S3Mf`6
+
+UN!$eQXF1#ZFIZikaQj+Tp%9GLUjl)k'F&FJmN!#UiEB(QiS8$)e@U%4#,3c'jK%
+
+&MpfL*`H66PP"+J5j-f)pQ%eCR$N"+db0E4rA+pG95FVTbjj32hApf5ipe(@4B,c
+
+U(X)pa`lCl3**F*d!)`ef84maEVT3F'kaX,fLjGEL5Q@V30V*N!!F&8"IG#&DUA$
+
++LPEaLAJi0N!MFZf,m)I)$l#)F!2N#rUJ[(K$M9DPZrbh5J[,rcpe@QiLDr%FqN+
+
+IarE*M8Ij`QSkMf#ATY2CC)@98eik4l6#U-T3PHM%!+66KZq93ik-)299f*kHB`p
+
+qS$)p+%Q!hmJ(#@!bdca$`hUU$6`'$I0[%('e!46qMYp2BaXHY34")*([E[lVIiR
+
+922H[K9b0-CCaBkHqrP1k[[EhkXp$mfk-T9fr[`V!ZJ*M!ri[4AM5B#A4kX#J(r9
+
+JKCG%"m5eAKe3DP3RPAReJ"+XbcY4A`H[jITd&B%+r*pG5238E5kCL)Q5*+5'`A&
+
+0&3K'd)TLXq+,#CmifmqQp!cVJc-Q"MehmH$c##VfLLG"#$`ZfYbMfIHQ0'l(N3J
+
+K%VYr0-RHI'qPeq"K@P(I2fSD-'FU0+#rZ*(dRl2EUX"RKh`U%J(*e6A@$kEd8T4
+
+Ih5QA#c6d@jq&p'8fZYR"MKj[FVT0Vr-Q'%2Yd@Kr[[#i8&a,'H%KHNlfr)hFqA0
+
+#4`2idmhKP*,KpQad`r)8rY(0pd%8Y*erRePK#Q8"JI44fDIN(69!eDrH[CXZU"i
+
+CUd0UYYj2qCRC`Nh%&$mcNaYQ8['l803aSlpCJ#Lh@IJ#+r'(-5Cb-*A,jHCe#kG
+
+H6,jkHccf%Hk[-am9pZ[!8jmr$2fEpNGliAJ%&I[ZE%IFfaq[)TBTS'N+i*VMfGG
+
+$2K@U-)S1TPk[59-FNk6($*%V5q,D0819[Hq(5&NL@+98A,Y'Jk+Ke0-SVq8pRc#
+
+)&(qB&jNj4c1H)*'dSEMdr8#(i+3TKE6mXN`!b$*riJd#9pN&Z[Y[D2'-V+F8@`a
+
+*BbKRED5KU2qkXL@l)S"0Y"p2VYN6iba"[E615Y&5dCV@j@5F(i8X4#68Acp1@KR
+
+e@BV)IXHUfNT&RVh2$bNlX8RkK95H*GUaUMaSV'bC%PSjei"`iLCcqddQiN-N1*R
+
+a2Dj32TfdkP[8NBBHNT0Z`F,#Q%L8%f$9YM[X"RK96NrmLH)daX2Jd6#S%H280BT
+
+CJr!,#mYeAqbj(i@$-T(iRl9PFeq1I*b`TU-S[q)[+TK$KPHdN8L"*P$pm(0AbEY
+
+N(hEBp2HXM4*IPa%QB)5m*--VmG#J*%bNJqE1dcb15ji&rbpMjicp4ZD[(rCKhZZ
+
+dMbLSmlLi1*k6bSa+5))dP`H0M')h%fDlF82A4XZFbFK6#AM*T"$'aa('I5D&!rK
+
+EB,dRbep[XLB9Rl,lJ)&#!PUq+rlbPf5[S&FV#%jKbI3&UlaJShF6IMDRBC,UaEV
+
+ckb"q1bjbflZBNeZdK8IEhCr*1[4['ADmXTHHV%06R0"KYcTRM-bl[YU#2eGEGlM
+
+Y%$*a*EmIlX`5EELakh+a`BA92GA926fT$Rk1rTiYdBCEIPbGmDVJh5212%Rc+$r
+
+D3+ScNr'8URj"e6kA@VNKqbGI2*Q9-C96fY9L+XPM6NJENFm-KXbE$6d`%&diG2+
+
+"DTG`2PIpj-K*dfY'q9UL2,N[[TBSp)@$+5%RUZTZh%"p@YRpdL%e9mV!0m6Ab*j
+
+5-P3-4K[Ek8-X8'T8jP,UjF,+V&k,+$F8k4R`V$+l`DK-cM1Q$6N$1feLLri8d%J
+
+AB#NN6p#ZDhNe+6q'VFkf1X&4q0UXTL4BkPGVm0#Q-ZX9FLA0pqSMU%c6KE69+i'
+
+kq"-lVU$0IkB'rpXA2(XG#JZ@[6fR`9GGM8a5dV&ah%[63CCH)NJG&mVed1)DCaV
+
+h0a%jI#AX)h%*[*4!A1[e)HDU%)U4+'m*qf9F+p5H!8S[5$N'dkfN`D2II8lSeA%
+
+fY@VEAh1jV"GLa*[PlVeNN!#S'CHEB3,&E6Q@6RU5e0Jad9II[[@cDVPek'EYQeR
+
+2P-#iYYMNUZXDH8k2p9lD&UAT&D`S6N`baplB81j9hdi$9HA`[r(+AR6YkK#R,'h
+
+JX%r4Z4)SKP*L8aZjV9)j[CA*LJCGcj!!De18324Sfl2hjD-mqbqE(IqEY,IRUjQ
+
+LLZL@!&a'B3b0@i@e,)8ffP8`)mI4EH@3!(e16f%icH66T9,fL6KJDh)'[(1!`H2
+
+ImL5#M-++!ja1!cH4c+`9AM'(62Mp-%55RZ1&bZ@5#'4"XpZ)e&3"G2`9lGP$Q%C
+
+l2c@6,c`UN!$,6HG)XY9"SDLPLB51MfLEDAAddrNCZ2PQj(S@KUdVJd-8XKjaTKc
+
+0(mZM'P4p`mcfU1,IkP1d-bT4lcfR0HTi8#c6P-c0b4E%2jJQcq5mm48-p*6(RDl
+
+LN!#T5*!!EkY)f[0eZ))CrX8'd3eP%U0H`dQbjK#%D#K$q(6%!S$-C3`MS$Ua1V%
+
+QB!C(0`c3r1!)q8c'!aXqV1l5$Nb&5QNZ*$,&&A(r%!!$T,aVeHK6+L*@[9hReR+
+
+9A+D`T9HZ2RU*A,,IiDq-m'8fSF+A(eAkD@iY8m%K'r"16UCTdfjhe6$*@`8'!j!
+
+!DIV`P(M@bAKJaXjI)cKP03cT`@V-c[UjfF63Z3j[HCB9X,rcbSbq@Z+-@(LlH-8
+
+U%Q&%+H'C&(fJQ&+'Y[S%Dd!SmY@hE++EeUF52FLj5RTl1jr,T-ZjJ[C+ajJp![N
+
+1p@ID#-IPK$0dMmH%SCq1f8,ei6ZUq!G,[0Nqe$,kLLBdaSJSiVXlKQ!a@I4cm[T
+
+B!l,3llkPLl"p[a"'J[ScC4MFRdNM(Ti6fJLl25D1m2'B1N`r"Z3K$aDC(CMD9r2
+
+)`e!a'b'4j'4@8a2f)LD6m)`BK#hKL!ia`a+TffiHcA"dSbD2`H%GU,ahHBGXPDi
+
+6apj!&9%*P(*(3LB%Y"JSJ$)`80H&rIdMMFD%Jj!!f'YQVB)6p-6B-UM4F"qf4kH
+
+*U*,hCDUKqP#PfS2qAL56rR'*FV*C"U83VBU+,5)GP*rU'`G-CS"NeC34!T!![Sf
+
+c9X"-1*!!"BNQT3TFa-8mf#bl*VF)GQ93+CR(**@ZCGI6b%["m5R*C`ebG`P+iZh
+
+EV#Ab!`T2)3A`$qA#YRNNb5pDf&9mEp40HE+$%GVRCQ'TCkRG1*YkUFaBINl2IS#
+
+e31[iHRlJL'*p'G'5S&HP$mU$@,V2C94FP,lmiMb*LG50#b9#Ii$Z'PNm5`M`+M,
+
+m5D#dMm-U21r,*@Q#@iD66VeBlJ9$)p-i`PNK(2NL`Q'J8X-p82-HhVTJC%KCc!l
+
+l(2XS)GhV&&HXLI+L(APh4T5dTXl-N8GSl"+0bha3P)VJ6SF-L,j9TrXdG#h9KNe
+
+CJ"c0jZ"d%da#,pheYGhiA#"AkDm-S#jI`%#S-aDLlH+`!SX1[T[V5-*(0f&A'[Q
+
+*cA[B1TNpH"EXTY0bfQJe1NaEM!U8Sj&'j#RihJ6SFTPL&ef`2GQ#)p-#I69*q!S
+
+pq0kTE#$4&[iS6ddBG&DHNj!!&-[[@!PQ&U%$IHJq(jbdSal5&JjAR1C6,@I(!QQ
+
++mCPce28!'J8lKAJ@221HY8NXMAddUV)9U+@F'DQ+S'G4(HS+JE!'D4-J&"d!Vf4
+
+9P9j&Db&9!XF$eD1AkH4FN9j@H5m55hYGiL`X*R$N%$e),TI4pD[ZiEd+BZIf5Zp
+
+Fj-Q0(G(R,XHIV,85lm)4Hd@!'jBVQ9JVrjrppGKaHHbf[,5m6[hLFjfB0L8&i#0
+
+X8QTL-F4XcT5I9PE#EcbSHT!!hdpUe859M-Dq5[Nh92FjXDLp8afSBTaG)D80,ZY
+
+K)T0H%N9ib*Y[Bm(M(%H9dCJ`Qk*!k&IBVDcR0TSA%'!+4hCJ&Fr&3IUd&H!XKfC
+
+5J,N(#C')@QGi'h0U8L@[2-Kc4ih5lEIY(0V0T,#p#M0$5YfrSimM'6l8KiqSLQ6
+
+[XAkY0h'b$F8F[DmU2,a$R"9)d@c0HE'H,a6@eR2jI'QRZ*l1C#rU[JUKk+XMS[N
+
+e!4'E6BK-[kIV#PkqCh`PLV(Ldk3l[,T`lqbe18)F!DNiMD$h!"NE[3HlQ[VQG[Q
+
+!&Md,9)hi@0!p91+D@$TF@UVAPr#(ZeFHLZ8l&'UcmXNGfIijbRKj#5h"'ITH$jP
+
+M1ei#%l5"6%EMX[@$cJmDErT1Ha)ArK#&hb+l2hrpR$T&LaF+&plH,JjBD(DMB'Q
+
+pD[%k&2@2pU6LSp@8Ga2!B$2jFjGq4V2[3e+Li8kC-l[Q1VSK1Se3l4qGKBFb4jH
+
+Jm%@9[2"`'()EkNGGMa4LQ!rj@T2q&4,A1RVR3K(%Kr,+T8j!39#ki[LC1JF*ch3
+
+-EcrEeVaAiRF[iMIXZMSMjDcaUX(88Zljm-JPkKGF`hLX'MM-%PBpL&856D2d,MT
+
+1L$i2Up$peDe@MBe5JrAF$C!!rcd)H)V'+lV`#b($Nbe%BNe0I@CH4m[QQaAPfdZ
+
+-hUIeaV5&@5*(jkZpT'RYBMXGRN`6he0$cm+UC"$FSHXa-F6Vq(L#G9Td-3Xe[d5
+
+l(FV3&ffarPUKF$N365FTCE2d5,6m268b'i9L@5L#L9-q-A5DGpR)6f3%3Nhl4qh
+
+U(qbM%U$Xe"GrU-"j"q-[M![B%cL3!%H["4HSGck"C*5krUIVZ)RNZN8(SK"dM%e
+
+rYJIY"FT%UJ4A358,!deaAZS@BdY`+SiI$JhKEhY`F0N$,$f8B)r,I)3k[d2p"5l
+
+0)4q(0N`*EABX($U4k[9+pN6qiYR5@K"r**AVeK,m"e3aNM3FD1*m+3J@VA!'2f+
+
+X`BaYfrCcEDUqKVR@&RCT#prH"$p3DYb`Yi30Z%AYM)#J#4rh(hGbCG,IHLde83"
+
+P(2ERdaPaFF8b@!hRJPM)G1drM+X)jc+H"MA"bNlE2fR$E9G`M@"cFYp*l)Nq2SL
+
+#'Mcd)j(TYqG)'MKZY'GkD'658[QCRqRY+@9NlGGR!l&-Si`&G#i((fH(J`6ehB$
+
+`lk%5q#VUj1-c&j(4#UKp(''HpINa9@5-eVY4j"246SV5imT'EQf#%0B'$1`)MlF
+
++aFfd*V3h)GjA!)4hAiCf[lf%"%IQdIa8##EKM!NPi+UeD1j$hZ%Kem3M5q3lpES
+
+G[-'T6[,5%RNiAFXaY(aj+eCSb$qU)1!&KmV9keMUq*!!2J`Zj[C(-RRRRq%5ari
+
+6H[8hr`ReK8dfK2aMeU+T94YAf'0#Sd,4E86%mZ2R%L9H6h6M'#$F)93EG$[a5GB
+
+$$qcIZL,h$MPjNAGS3GBG0NXKU+!jh39-+P@Z8D@TiZIU)i*-$KhVmf2i&J8[81X
+
+R#IHJP2&P@[4+Ce3RQG8p#*Pac91eS,FErGD-@#qaHYM#`EPQF4G2lcM6&Abi4%Y
+
+53QMe-N1D,*!!Sp[d),*KT4PG421#S[Q5XjIl%Ze#lqaT2c$dm#3CY'$3I@)LYGU
+
+"LU6l+qDMk$Lab49LQJF5YjKqI(QLf0RS6`DA$`kE$1k*A5e-j6"XrP"jf%jlHhT
+
+ifBZf$LiX5hVEfiRqSkYMZehBeLX!,TfM)Vii6LH+[BrrifqmZX#I1&*[NLhk4rQ
+
+'h[#Z$@pP,%*1e*cr%R1'+JlfRapiRjS#`*i1F1YN+4MYlE'#SqYMIP$8Y#$V@a$
+
+`5KM5i#Fhk!R,C105hST"B@(hcR@K42@*P+%V)25HF)qlN!#!hNTBd6leN6NF00i
+
+fiQY#CD53!(lCj0ZD&)Z&`Qji)Pe)H05PPh`ApQ!S42h'A9U"P!AhL%RRE2dh-Ch
+
+X,M%0IFFJr4'@He)m1[SQ9#Kh%m8ZY)FN&Rric+A"KkplNFi8q$PRi$eTmYNhkNe
+
+dYFSrM5S6c`P%ljrm*P2r0*X`aaMarHGUIlip4BjLH&4V,pPUI+iV!24P(h%6F0l
+
+(Nd)4IT6%f+L4MQ(kpiV)-Z'Uq)8!c#I+("KbJEVCYBh`$ET2#')HAG$C[l*-(LA
+
+PGe[4r8#i(BJVjR#6QHMGe3&%dMGBAPe#*H%D0H'--EZ%Yj(eH1-%UXFJ56K+c#&
+
+kk$J(J5b*FUr"DN3Va'i6XkJR@d0aj%%)YI,**aUXDm*Z00C+K!8J8aJG[fX1404
+
+JY`CJTV6U%@lIkU2"rLR4C&fQ0$ViV3reb3$+&0D#(`GR1!d!lb5!FH11E-3*Q,`
+
+DMAGhK'G+4&5#c('0!HpT`'A#qK6Ua5HI!NiZEVZHHc"XpkF'mG1l#1'm"FMPHl*
+
+#*&%0Cp6--`j!"0+G&Gc4I&[#)G3&&XXKSKRVj49#[%G9hVXV)DdrGBFcXQaQQrZ
+
+pI"Yh1#m[8aF"k&[09RJ"T)%d%ljmqcDKhF+F,+NZGVSHlQ3E3[E'I2N1)08SZM"
+
+F`C`e!$6$[R`2@2U(TKfFBk8!eF@5E$(LkpYN$KL6aqL#2E2GXUh&A,((8SXNAbf
+
+dA"kBT-+mY-V4fpfQrZr05#p10VSUBBI5kmRP18VM))5A"bJ0iISMel[X9ddU$`C
+
+2UM(2d%IB4C3F**dUa`lPNG&A@5Tq'dkc)[rLjJh0[-0j[NV"dKYj5(KfqP%E@*N
+
+$&6`XRb&paTapE&kmbQDGR!6lpZ4A&%@dk[S8h9(C4a0K#mBMbX$4bLJa,)iUUT3
+
+h%#qAfhS8Db0K1"+TrR3N0"4N*#@JQP39F59i%Km1%aYX4R#e)Ci+adRT-K(J)Yd
+
+(L!h3YH!0&A-i5d,p@CqNmKUSPQ"1M2&h0Be8XA3jcB%rJb0R*UfISZbK9d-c0IA
+
+$@%a0r6J31SaEHeVjTlVApX@jYVeVEIpfV'dN)Tm09AadTD+@N!#%NT-V%l4,U0K
+
+ZPGVC@LhXE+f0[*IB6*MqIl5[CiYTE9l[P`&&qB-*RLkL15i#QFd)`Ic3MF4-2ek
+
+2'8bGZ"QVNI6%FcXVkYa`[1jJ#ck*CP$3d4LV&qc"6XBLmZ6&5e8XV#8RY`jJp&(
+
+N,`V9(6FeQ$D5a+$PfR'YI4bbFc$3ZGaR!-p%[KMJh@a-mC5KqQLcM2TNR[GM3Ii
+
+Ph(*4Ec0aVKJ)R2MqA[Trh4LCf&1qZmj+RV-#cD9G-lFfDpZ)HRmDaUlr6T2N5lR
+
+r3bIZk-rC*lNb2BNZhq(`4kk)c"ldZ,+CfmTYiX1DA!02r$9m2JN#&MKB+lSl8pq
+
+'F'cjMqmh'IKliN0LP%mKpU+C)a8QKTe"A31lqI#`P(&laQA%D3Rk2SG`Gi[R6!l
+
+8F2V8LG5MPc5)QeQXJi8#lYmCV1,$D5-Gi-bETrr1b)1Z0AK0(XG1rXX#3fr54BR
+
+40-9(Ehr2A10cjdBA%CC0Z)11K88a50T&YUB2S`T#*qRk4Ybe#!839cF#cV0*c*C
+
+jR*6P2,l"X9F48L2N$E"el!DF0X&ATb02L'jkTC!!$XE%*IYBZ(#,E$!mR&&RJUJ
+
+`#Ska9F9GRXRiJ3SZ0JGeNH`rTVpI8c,[CeATdiGLEac[8Hb,ipFp*fliq"dM6'j
+
+B8ldHKI@'%HXU`N9VhJMXc@cNmLUV9rb&(Rb4+q9@meRjF4@h1)(10*jbYkKV(rL
+
+*E&YUJ`Km9U4@a1H8kQ@HKkF[F%#dE%NH$Pc9ldH2mh$cD3J$fjH4Z,YkkNEpMC2
+
+"qahqYFI(A4lfqADrclpef[6kLS"E+)j$5dq,ZLVKC%!5+1NUlX6hFCk6F+*Xm`L
+
+J$Q`aHl!jD5e"(B'04h3%GK8"e09BhY&kl1IKD@F3LlAibUrNf@3i+efIhf,#0rJ
+
+'-`DPG&09#ZGcILqdAjdJeASkaB#+PHAS5!G8a"e3TF3Gd'2LU8#$F-cL#"4eVIY
+
+lXliFkr#!mV(Hbh1Udl3de%ZFa*[5k3C955,`#1I!hC4lCN3Q$KM%Gp,bC&SUK`b
+
+',b$p$q+Y)1#TJ0D%!FFAfp1qCU3B"4XJejA1j-3j0@UeaP8PBjbPTEY!#Pb8F4Y
+
+HXP[aG5*+K4RXRmC)S)`2+X!BqU"X"cHq4qfDCBN!pCY3Q1PPbLG-c@1&N9)ep9h
+
+RU)S@B&MAKq('NC!!G3CDVjqM4JX#*FRYdZ'Jp$3"((LKSQXHAakVPm$qK"QGb[S
+
+DP1qq'3(rJ"Vh26V2lRmDhqr(KqDIp[&[NrC$meAMTDQ*(!rbkKV''AQI@'&LCBV
+
+dGh0*#Tb'I%B+RUHd%FFiF0ljPULBN`UUdR5$+Z)%T"HPA!bT9[1TAIec6bHcH3N
+
+h'XRBmRD"paTX(*+R6$FmT9KVbML)pcPI8[h)GMhSGC[)X%&NR,S'Q0BC2XrV)e)
+
+HJ)HebI)K5r5[&$ZXUcrFF!BJ5Abm#kPlaMYN"k#&MVr@ZKkIF+XRV9!L!`PZSXK
+
+YV4I%&h$Ei(%1JDCHLh&N4dhNV-aFTb4$Z,`ZhME8361UD*9(b4X+(Gj6#F4@Ye9
+
+fUXrpX[XBGidVrP%h'&iEYB'e)K9jRV4-XmN)FV&f!+6`@HrdM&i4)E(aY%#jZ(8
+
+AQE(m$H'1kXCD-+qUKfjq'&8FPA(FMQfN"0,h(1qGU,qbR8p$X5pZ%S9MVm0GNY0
+
+620CUD-fdKXiBXK6`20&LZ2cTVH9l5hQFamL!G1fHQNdq!A$eD6Q,'kA`JYCV2CT
+
+m!@$bG(UUB[NYRD(HF[FK9f2L$PI[b"HdkbmGhSC2'EGK*aLkh!3(6Zi6R)CcKS2
+
+89-E4hqP`E'l"R@8&+GmM62P@A-1GCBN*5ThU83UkV+F(NJV6$SX-b[VB"hZS%BE
+
+6m,Bc'Z#L0A)6q1[dr`)!N!-0#RGTEM-bG(*Y,QJZD(*MC@0'+@9ZFf8!N!R"lJ#
+
+3$aE8N!!!&`3D!"8`1J#3"&4&@&4$9dP&!!#kBG5pZQ(8`J#3"K2Z!*!'"[8!!)V
+
+U!*!'hF3-6KRjP5!$Q2Z%%ra4MQFV@lX)Pl!MP"ZjPGND9m,Al-KDPddNH),2Fhd
+
+!`[$T5[$RHRPF`L,S4bY308[UaHPe5Bi6(Z'4fa)%E8US!%$@HH%IlY'$[3G(q0q
+
+L2ASMSdF(1TkeThKP`I%LmV98%FeMTC9Hcd9#ArSd9R(+SZlj#9PiH[Ue`iV"+jY
+
+m0CZ(dSXd'`$A&m%L&NNlXh6r*,LI2rA9*(qcI*[fRcjp6+q2D#JQ)Y+*3d,l'IC
+
+KUh924Rki#!4pFbQM3&dQlHQhTHKZU#DU2Eh,R(%8L$'jEdi'M`jH$8rGPkd@jT`
+
+)69V4IUI6-3--a'JaQFKSiP!b9BX`S%M&-bm-ec35p2YqjahE[JFV-K,dhG#p12Q
+
+j4iq"lm"N*T[(BZl&`YA+$@,[NM#D4`GZVQ+*C4H`3%@T"UBr@h$e)YDKb*bNMmE
+
+3*b1h2"%&`"@ma)q&L0a3M$9eYUTB6UBk`pH5bQmQdfTqM4mTVG@XiDHDbX$-@cA
+
+D6lbYZDN``l(fkDXV[`qUSH`'G5N$2Ge3db%A80k%DlFVedIZL*LXHQ'q+Tk0,I[
+
+K`Fl[HJ[Q65Qjk430Z#"RLmS1A@`(@E9R'j2+hr1Kf+AVM'eQfX#0j&mk4Y5`mb(
+
+@H&kZ(6RG`2r#8`liIqbC8R&3dSXTB@NbNkZE*@ZSYHH-ZVlHX$a#MNpq(,`q4FP
+
+iXL0ii6L2&HZiIfB`MpYPdQ@F4+*R&)$pTb!8#$m8ATc&@CCY)[B53)fNMVB32l"
+
+BeXTCfr6qeaD4(*-ead#A-RRfV'-6DmK`J,&NT1f9BhkZl8-M&Q%L-XT-,IqJX2C
+
+$DCNKKH9E)KHNSPe`#dPdM(*K*6DTKGCLT5h,RhSalGQ3!)cc@QKk@EkQ3V[C&+d
+
+P*TZYcEQ)fT!!d$0D(Q)Qm*R6j9L+S1jBZB1C#S3eXbN[#BhXIaCm&DUB1f9M)CF
+
+e8aYjrMYh%UX&@Y-'1CS`#hjTS#i,d`R*+0(##dL0d@cm@#8h)c"Y`EVFML#AlAK
+
+T8&R6Mm$TeFaBZE*@fh8QeQ'GYkLe9@kq36Z8Ehl"DJ,V8iTK'CJ[Sl%LE,9(L9l
+
+if(5N*+i$J+*iB5R$)$%P@dm&,EeBUNA#F38dFBai2R*E*PVk[%cFi"%f"KBUhq-
+
+P3bQA[`N(e`4XV-0XARqb4([5TKr2KJ4c4fIR2pNBZBH!LN&%c-L4$+9HNpAK`1(
+
+h80JQTRJmI"C!X'&JL#H-R`0dHYLkFiFIlbc,&jN8EfEpmPF'QSNB!8rb6ZEqPbG
+
+[#b42kT!!la$Xee`K6&4[rPkHp`EX(KX"&2Sk5J#e2K6,G9JG#)`!fckhDBl6c*9
+
+ZRHU@&E#X`,cM94!EeBD6ek0r3'Ep5J!rEr5FmC[%EqDaUX50XA@0,D%6*&F%NbD
+
+qXLA,-ZP'@MFXPX9L+@+dT*4B+DUV"+Y-[P88mhl&`,%TYjirehC(+%MS3XIGrN@
+
+2!l*XA3Y%jiTQdRmReYKI%d4Er6VAVe0pB@Zm#-1Q8ISUFLY9ID$"a8eI`fTC4H-
+
+kG`fV9&R3'ja-+mmi4M['SXhD2RP4J0kMThMLM*HM@5E%q'##&j@c-U[j$QA0hB%
+
+#4`0q0cqeKK!4QXCP"MBP-e'Z&mHr[%8*%1P,S8rV0dBcLEd!)BNa(D[idX0K)""
+
+qL'U4c3Z$!@)q4FAB6'DTC!"PfLE4(UUEQf8A0JePP`V1,J9Ua3V9mYE"TX"bd1E
+
+8TTCZC+LHT4IH*JkpdQXq[CZUb!kE-53HqMm!T[TaDGJ$'MGCVA"hh1Tb-d@`0Pl
+
+QS5I0V!eiDa6X%,fZ-H#Bi9e*QQ,Cf!LpN3JC`NIGX3caeJ$+S-+mUVGapBC-VMF
+
+k[Ip8BHa8`9Y3"QF[HV6h9mhB'Y*jFGmTLmefU,S`E*--r2,qC1CQ$Nf9RHGRCre
+
+HGi!8b0Vi*M#VR1'`aU"#J9%ed94dRa[XjXDF8qY$mJedeaKbm(A[Z!h9qN,1ZXm
+
+Q0i@R-'R1EHBXeHcZAJE!J8clLcK"V+BVhB6TcE@l!"6hMD+A0V-ja4RP+28',`i
+
+E+JB6#ep)K#hA'(-`qcKp$mZ)S%4!-B1(B`iVj8F@AK$JX$9DS`S"16%(TUXi5,b
+
+aq@L!`hfA`acii3c4&-k&D4DTJKhRMh`0ZZAQhF)m&Y8Nl4!I1i(4mVfQ!2%4N!#
+
+RZLd(H6UCa9P%LCa%Q20rAUrFQM,aTiqp[jpj*RN0MK6bMYjrS&+#Bif,`icE'hB
+
+[HMM2l1q8,mlHm0f'$RE+BHq(hK$84k8Gj,[E2aRd,[LVNd*ep,)l[!"bD,4d!'Q
+
+V2qaG[1krSU0Z[rqmHr3pRD*PmGFheXXhJaF1[6iC[-)A0ZIGBII8SEljAFqbrYJ
+
+PZbBK8,kSC*`Jr`F!N!30"hGbDh0`,Q0Y,QJZD(*MC@0'+@9ZFf8!N!PFI`#3$aE
+
+mY3!A)Rm!&6!k!*!%9%9B9%0A588!!,TKe'LkBG4r!*!'Ik8!N!BGp3!!4VJ!N!E
+
+jl`j19r+8)!22hB4lDbQE,@BHjC4(D,DbGj'fAXZDE5&E@")m`9228REVH@hmada
+
+q5G#2@+#Z8GqS8IE&1VHhm&Yi*Z4N1Bm-PL0l*3XP928FG(EMkT*ceH'rJrKj-VM
+
+H%Kraei[f)qFJSPGHbhIkAZMYqhdr6*eqe"lfI&e)rV9Il+%Ar#YY4)2$10M[TNj
+
+jBpQjpHYIhh(f$TfdkcX0Iam0*%l8iFqlBI$#Mj-J2D3A'ei[k%4a'(LL$p&@XaX
+
+NcL#1pQ1[lq"6*rCp*iNkkB%Aqk[1B64d@PlSa(il50)if"ZQ[K1NMKHfEd3a349
+
+d$R8cH$J-fhl-hDGqh0G32+MY1Jrmd)qpRV-ph1X&,@FVD2PKiMXHqUFA5GG[!dM
+
+G$*@p6fMX5$5Fqa'kmp)J#PFG2m$lf'&mSp#jV4U9A9@F+0DGP,f8J)bGD%$&Pi(
+
+HSG2c!*!!URqGDjf4`Q$IGS+3!2[X4J0!h%9R!2dJk2@F2GmC*RjRf+[S2P$4q@5
+
+cqE#qfh6@DiqG6pBEMI9Dmr%U+UEG#+rp&llS*qJ2HJ(D!p#a&c*MG4Z2USf0KkL
+
+lIRGcDl2j'0!kpcHEYHV1MR1rhR$@RHhe4R0cBhGV[H&XlcDfkc[9kikc!qUJ-ph
+
+&+`T#&N"P-+cYTel35dCdH!`45!"AVqed[4Fqa+$P3eRDMZHdS%A[1+ilmAT4Z-r
+
+JSk,Kf+S6G*``5LY3b3!#NdC6pZXHM!T8R-f`GEhLr21[IZNmmT,%@Am"iQpirEd
+
+iD1rMdk0ejqEY@hGqAA&fGpB*92blXE6dLk$6pMYJCZh1EA`-@leKfhFq1JM#GR5
+
+3!&c[IVcd#cq%X+%5kJ5K$q,@QQlepqYEEU2kB-HjCDTH)KfrhVeNAqchSMd2*-)
+
+MeHV$pGpAhGhDjNlcR[[3YM`-S5cY['04-0MVfij!NjDIF%HM1YaBXpTiY&R2'b2
+
+a$B!,0GB$!E0b1`qDcFGjY@3r63mY#UV*9YH,RDZ3!2idLL[U3qMe3DfVUGmIY)0
+
+iG5Q!C8NMGd!e3HiejqEUdP+YIUrUA1elchfA`!ZMYPm@EhS*D#iq(F6YT!*"KH8
+
+*3'Ekd1l)"pl,CHIc*H*ll+I$1#bhSM"ai4,5mXf+`df)mY`M5R+,jIZErkqfqfJ
+
+Cr5aAPNSP&SbM#Zh1mQPYY+jV9f[hh2TpG`[-A9jHAIT#)E[[TqjHe$k%J@XR%YN
+
+")Df`*CBS"-@,&j!!a69(&h80-EJ`ZM1eZVlA4V(DjKBa$C)X2S*BE,-k6TQkqB!
+
+I,5Z'i)PXJTT(45$Viae$)4l+[R)ZPB2%lAZY1"+&R0q5pYE`U8`ra00PjcI&Uc4
+
+DCT+8K"TN0"'G5Y"DlEK-6FYAJJ1`'hd)j!N$$VS"h'm1m1G,*F)F3$&S,5pQX*H
+
+3!jLPLCp5Rp4bKE&PX5JcZeX4,!FUUT)Sd$EIU$ZdA5+0C&S4'ZRK`$Fp1QYVcQD
+
+YHGkU,&6*HMNYPN1L8&#&,@AS%cd4I+%AKYaIM*R-""0BjYbMCaRY5(U)2cr`EST
+
+K2!`(ATaBLKJHr3$K#@ecRB'TN!$Yk5C[`!HLp*Q3!&D%hP#(9frJ"qUKV`kmHF*
+
+fPA`3A+#e&P+JY,L6TVPH[#pe(9m5*H@5*0lqIZc[Bi,!*1!#bmlPbe$[TYYmf+M
+
+$@Mk!BK$#mRh&mH2B*E0B[VYqclfhhP`(k,Ui*)B!a,bcS"#dlMYNMU(jiaqGF0M
+
+Imq1"IEAi!,&HkVp-CdJCNX(F#(RBVGfYlpEZ5AmMl8Z"Z1a1qCmF0a)UdBL5!YG
+
+YHBNIl6dVCbD)p%LC*mJk1UlHhka9lh%$e*P'r0l[h)Ie6f$C'p@0LM43A%(LV3%
+
+VIH&Sm`"r-SL$[[30ijBfGpcYaZDMpphNViP'9Z6'-MVZ`I!2XkM&34`Xr$kD8bf
+
+mjZ(GHRfVZPl$f+[(cP90#JJF584,"H[PR@CMYfU)pX(8qDT#ppHhGQ3PqF)dUda
+
+A*XTLS19frGl!Mkd`9"`&&KYqYp2cpK9'F&$Q%Fe$VphLND%A4Z&K2aTLDM`-@c5
+
+48mE+b)ZHBJKY%0r3X"TS--4L!K6dKhdm`dJ#)295m3R6'2-ZkV9G[2@'r2VD,9-
+
+HmfRBZMAL8Yb-Khkj33m'",eQNFA`Bl6$kR!KFba6%idlQkr`be-&c'S`S`9J-'!
+
+6`5UGU99T)P@X2NEmT(F[0,98X#CA5!alS'cdZ3h'L5Hr38RmL@%VAJ2P-VdQ9Sa
+
+X#)Zj8-!5rTha4Fi!21L4iPCQ@BhqN9(9BXGSd!1MD))NPbm64%*R4YdU!d[5akd
+
+HZ9JTLL8eR"J$`h"DEReHJJ6f-&GZHk4`XLa9c!c!%Ia8K&Y8m`pQ#Eqb8aBpTY6
+
+$P3`1f3-rE,[6'S",`Nl'K-[4-c@VQ28U"0LDGLe-p&)8Nq,%9-3VRKBS08D&DlF
+
+%i5D`-E&%Jh2%q(NqCTJqiKN`5D[m6N*$&1`%,fQ)%hY*P`h),fKjK&SP8J)*"QG
+
+PKCT4@"Dk3[E00X8!jJC4DB4dR4SE+V)AqpjcqJLqFAp5C(K%51b5GBaP)BFbeQJ
+
+pB959DEM)30$VmM"-J[h3Ebp,jH8U(d'fp82G(mYJTY*F#pC'HLR498QC+9Z%3C6
+
+5pRF'M'"9j"SV"3$1iC!!(`9*FmBb6[`T8pl-$je#Sf#4dQdP8pX!Uh#YVYpklUE
+
+G1-,#"m"5eDALcqhL4p)Y5[p9V$@`jV+[PGK+rkUpUjS5',*-A!+NlpJcmScGE$&
+
+mhl5b'YE1kkNdI4hek@`hkK[ZSr@04VdBBVGk[KHr+dLY#U@"0mJF*l3JqkbGYec
+
+aFV'aKSdK(Kl)F6E$+UEC15RPY&Dkhhc5++BDXcQAC'`ap4#fJbFRibl%)X32IG#
+
+S*QY$6d9F04@4rG!SlR8r9+"#aXTfJmfD(fBeZSTC(b("d&reT!2ID!q$9&+ml(P
+
+*9JS-[8S6,jCeY+cIhmBhINM1F!(!!%I,l4"XXFkc&hPY,0hj@-#$KF#5&$Ck5$D
+
+d'5!0hDcYE0kVmJ)&Y'+L$d)kG)I#%aJMR,G5VG9h(ccmZT@flp1Z%fXa-bQE(a@
+
+ZqYL*D%#d&G6PPiN"'qXleIVGIi9FRcNI8e!dUCd&Ye,BL+)j24Xk*CP3CM,-DP"
+
+dd4+Yi'L8eVFDeI9lMehCi3P-B*i3+4)$UR!d--Y+XlR3e5B$,ZVXC-DPLSi(AHE
+
+G0p-ZAC!!I49-jNr$P9H1G$)5f+MAGKB,M&X@-%a'mM8UlNM!ZP@[U5P*0Zf4e0G
+
+l8A,NmlUCIpZY0k[RcIaK'*N9'0[-BTkCcBP'@6),rFPSV#!iUTec0kXY@+YPDe(
+
+#V%LjAKiqX)4)&kMd@ITNUI,+0A0C@BAlPrYXbLGA4!A9L,AAUV)DETa2Mid"9rL
+
+dKR'-(AqBla!G5U#d0CGEIU)N(QUIVXScH*1kUUa`p#@cc3Z+b383&'DEMjpr'',
+
+PRB308h!D[%SVP)&(DQ+kS+rP$cTqe#NEabP0aS5!H)X%!9ZSiPckf,NNprmX+m[
+
+($CAbENk@#3X"'"%A!iiMjK+l-Y,RME,K`Yi"$)FS,JG$%pK-KAc1cLMaQUSUVb%
+
+MSFaN5q[hT"@c!R'X3aRK-b60qNC"fU0PMU0CT4NVXCmH65ZeZ&5X2*R4C@E"jf2
+
+-k85@+$'CBpV49M'E9+4"dGNdmhACRmDDTAFc6DXme0jX#%1QA#dbEH&j,3U5S(F
+
+S"5jXBii4TTdbDL&$!Pa"0J$#3ebD(bC2YZTNIDVhRaEcPeGY!eV40N"9EHq'Hm2
+
+iX"j@XI-[qrk+1hGh'jZBbZ5b-Xi'-!2Gq540,i@pQ[DQVbDdCPjk1Z9p1q)G0c!
+
+Hlk,qmrQN@E`i3#+)R2$4*c+fhbj2bRTbmi@q%SqJFTMe&f*,EfN99if5e)MXJi+
+
+FSJb@b,EU'dLZ3(S&N!!mA3)3a4kZllJ2YZThG6RCfE`@#VM0a[S'q+kpJCaC3d5
+
+!C0mlh22e)#B$LdTT&H2)$fAe#LRMpL$)[kXqPEj#'![4%e-%lJEGCR*Y"mNM[F`
+
+k,4UY0KVe"XE*6bY8[8,C*1b`4lSCqJIm,1[Nqbf&AY6bHQI5BCFLY8M3EMaUmPB
+
+Ir-9irbqEE+qYCIZMH3PTd,-P8V1bVJH5eSlqBbPm(0BJ(qIEF&B1Tl28)r-jRD[
+
++`RTqU3CC4lj9P*r"*dG$a4a4lDA4l'-38da2+KI2i*0khQ$31q6KamADSqKB#[U
+
+IZQ4eF*jicYj6T`1IMR5L%1,NT!'-%E9UaX8Brl#8S(B&kZFQUGGk,PhDB*Kdq5&
+
+C1IP5$H)+'HFL8hZJ)1+*RHkKiR#C(36)U'8pp1#hD%e6PjJi&CkpbR,[QTp-CHE
+
+p)-Y(5b[A5AfXKbCG$pNp'FPQmhE*eC-&X2F5,V*pIY$`4@VLI#abFdqp`%#J@M`
+
+DjRN[Uj!!I3A8e#XDj"iJCFc&M)G#ad4Q%`Nq,DAlL!Ta2QpKplbqX3-"!@`0rVe
+
+0q6ilAcJEYHE@$M+NYPHAp#FDFk882XIYZp3,@U*'peV2+3$#bEE8T"#@-a"qkr$
+
+m!NP$A)P"I4%&EG0ChaY)j8d1H69"lCiakjJeJ0)1SU`+fdia`XrUfCH#B`Rbb9T
+
+G#U-C!FVD3G`Q,K!jX$bNqM-M8@Q,'+)Xi!*$2CTK6,HUE%(fAi)FGU*"$",#BNT
+
+9$)BQ$8,@9-0L#4A49b*PJIm)#bTUe89Q"jcJ*d5QD(%K!#a#6Bk"Z@hE4#iHC4D
+
+0B,&qDK%!*-ALVp&3-d5bZLT6Rl$P'F!6j-$S%Dm9A&8jA`)f`8UUNNk61ZpVh*L
+
+YVMF8P@EfK@babC0K(0#p2#NSE)pcRQ"l3J4*k9JV[5j"RD1Fk"Q[E,HLZEiIlqZ
+
+KU)T!fbZm-BJR`m`bFccLFRR2ZY5pm@222Qj&IHaFq#i[',"M@kl3clhPLTMjCP[
+
+EJ-icm96d#Bd,ke9XCqYbHkBFI3)8A%l")jGfP$QfcRK[R&Vf(9#68#`#4hK&LjE
+
+G!TX8*(L%X&QmH!Jr#HBDV4iCVNd3'#miQ9Bc,iHIaV+a(Jbm)&D*0qIUSmBF91&
+
+BMi5iD%(L86+qX#T*5&Lff[,GHl&+iP`BjCC6-X!`#9i83f"%K#+'dQ-iHm&Hl-@
+
+(R#1'@-Y8aGc`0!kY&LTPJYM8`L'e1#ULJFQ8@Mq5*"RaBUPNHD9Vf33ZIT0R&#S
+
+6@eEd'`m)p"Xl(Q"B[!%FL"J5@ImYHlCGD$DT0cNXf5Xc4G1SR-l4@%`%%bCM#Zj
+
+riXf*lp*5k[k9@5Z)S%cD450NQ88E2%iG0i$HhME!ii&[1TJa8T*(9$'m%6ciL6A
+
+6LFM#&[kN-D+@rmBIXHUbk)8rQ(X1-#2mE`,Y0+[EfiYI'-4*[ZeKl#mLm$i',d'
+
+F!V#*ErX5+GTE@d!!NQ'P*6I[4Tl4r2mMa`2$a3RHdS$h&XDIF)`3$(-d[mX6!F9
+
+qX-e)aJZ9+'ZR!b&QffSiJm8#Al4Q5D+'GK`3Bc1DNGXACjqCA(L3!)&aQ[C3fa&
+
+E*@Ba*%Xrb8-0Z5UUUIC&[&U4'Q,IQRD+8)G4%SF%$`8eQG3LBVjBc+1MF32S9f*
+
+Ge+G`1GA$0$"Z#Uq#6@6Ck9F#QY%McDiLS'B8CL#4cr!a5&Z@D)(KiCF-mhij3(D
+
+rQf$HdjAX2f"P+BRhF#EBCmDJYMAJ(c5*Ta@,!+(EL+TR@i(&4h`VSfl&H3C'PbJ
+
+FS0`Dk0H$0"D[Jc@%rMc$1p4EGDjGHmD,dUX1V6N359!1Xe%F+&"'UbXVJ$hJ9!H
+
+"!Zq3!0,@C"RP9i)9#NELXZSj)0lG-R6AI%(H2X942kSqbTHZT4C#k'NNHJBD3-F
+
+M4B3jHMS9)mF2k"&K9PC3mFURRej"QbApJ*HRFk`&#P5!kpfNHRU@5VeRiEr6&#L
+
+4NrjX5"iP5(ZqGMNBBpTA0UkcHQqc@A&ZmVIYHX84Vaj@YlBVcKhjUPNNH1CD`L'
+
+H8QA%CbY!iS(Fr0A#)lX3Urm8q%14Y!15$280e5CEI[IT)DhXUR(MI"A3&-%+F"j
+
+0M[9eRIZCH4dQc@AYEbiVCh0CUklHh1ETU`*r0-m[!TD9Z-r#CXF4*(Qjd8k-Q1Q
+
+,0j*%Cc'k4GY%*S*&9*eR)p(V6"(8ZX(laHK(flJ9J'B,6hPTBBcI2(SPcqfGS$j
+
+1B*R(l"#@f"9dF(3""D#HjrKqa5P9@l+U#2+P4dHiMMRcXA2EU(jQA"NUAYXU-CQ
+
+`jS&GJHI&9VXT4!63M*'@#e8!6'l-LS,(4(8ZICKHUL#jJEII5b@kh!+4%1*V%IB
+
+M"BdTN!!jh&-da@0qRC%!kJ)@k%#Kla$2JSZq3rfSIeSAiGV!mFVUP4b1pc3TH%*
+
+%3H'6[AkNH3M9i,8AQ60`K![5ZH`,NdcdC@i!++4R'ZK4bC!!QQYF,))@SIhXbel
+
+YjdkGLkMjVA&4eGljPLcfBH,DV)A4rFmXM&`j2$%`*Qc&4[L*jGS*@#Gf3hEfF`J
+
+&PFe5+,*qLc#+9kcA2PT%G(2e[h*HQqmI@'mQ60mB9Ph[YE[L-Q4DaE,Qh,'DaXI
+
+,R4E"`R0Gq0345c'k%#0DN43b#Kr*fNFXMPa)QPQN$)q,jQ%UR!m6mHr6m*,XHDB
+
+Efr$1fqm`1Aprr*LmJRM0)UISaj2*!PlK-XbJKQf''AKmScPI6Q$81+GBrTSR+!a
+
+XpXlSa!mcjF,EbXdmYajel4d$V`[I+3SML3P4L*252`qiXTN@E4c+Y"qeKIjP"[e
+
+rcD,8EVNG4''EmmZ-U381BbbjHMQI9+Q3!+**m[dXqCLf1mq(2VcQ11ll1%)C,$8
+
+$-43kYGZ,*5ce1!TU91Xm%FS'Sr`B"c@,pMS2K$SfViXS$+V3K+m-U9i51,G*AfG
+
+[d1%l2@9%9%)c5B`0E!Ccl9GZF(b6"4N,3'9m45q+-$,reQA`@J19j*8Q,Sk*,hM
+
+md0fUeKca!ZX(4#kZaB,GaIc06EfpR[q%hMpGKFK+h[)R[8fY53Q)j#+1N@0P9K,
+
+LZT3I'@1!Rd9'R,cLB*U$JCp&8V%Z*D#A#c2()4T8A)aMFcq3!)'3!2X"Qhja#KV
+
+PR%R-C&rMU!cC9Tj+T)FECebJBF@SX5,UJXZFjD$2$rjJ"6U2YXX&LR,Y4,VG,1-
+
+1Kk,-&qM1qq!NJhRD(Y6ffdjN$lDK-5Dp(eZa(@@Y8,,KE*p'U6*aeA`P@[l2c'$
+
+4aKk+k)e"2`NeQR[lLXVXXBF$k$c&Z$-+(R[9`B9(rfC8*5if%1Nf#b2mr2H8-U2
+
+N[c&Ue-#jBIpI1Lf#-2IrU92@k[pGU-BY[*NAr$R(LiTm)!c''3e-QXLVS5SjQY2
+
+T++i3-hD([)GeiC@*mq1)K,qd)T)4TUe3@X"I1T%4!G0@a*,fMpe)L+G1NM(qDcF
+
+5j@Nh-K6KEe"2qKPbm1l*ZZIddSH&*fCd0TKmicmANCM(0a5BqX9&*@l[V4$-$0i
+
+rc0NVZb8dqNc`#`NIqC&4)frmeNNR-RDjk15eh6TT4,S3dBRBbr6Dl350L)m$,qf
+
+U6T!!mCVLT$Yq+"E8RrcUjP2T$V!Ae4SFbX9mE&K4AC1"*F[GI)Td-46b8Pd)VAV
+
+BBSPSD5i2%p-,m0a[fKqi(5J4KC)mqHA0Qdp"kNZAp*eaL1`+8RVr0TLe&ElJ'$D
+
+FViE)fYJNXXPJkV0`ERTA#L1a[mqP2b1i-eJU0ND!q+HqilA1Qj!!k$*F0LC-,P&
+
+bNkq'ZeadJZrpc5fmk')"#mhf9p@PGlJXlb9p`cQ'ir2c@)GINRDbT`4-Jk"0#6(
+
+&pAHb%GGYr(Yc`h@jV"U+(RL*Lm2p"YfJK6-6C%($0Z)&E6jU'qUrp&Yjl)PQ@Xj
+
+XiVA)3U!TrqLf$J8Q)eY+j&CH3F&,(d)&qi2Vk8[DqC95*Lr9)`D+BrM1LpmJEr*
+
+K'l9P86U2,NcTX![QL#&*-F3C3995G!6FGQf3!%*ac9FqK!ljpf-8$LiTLj)9SqD
+
+bV)Ymj5fTm0%`r,$6kNABGa[YR,+AbhXhLM&DjG3@MC6&j@4d1JE'l,d+)k!&p0)
+
+'AiD)9'TNm2V`ISki%a$A'[Am5pV,RA9rj,8QF5T*'Jd'-'VL)"qSK*(R5A'TA!M
+
+keq8r`%HA&94(J'B&#Am'!Z%C9)T5-2*,$+G5Q%NJlfVTVbkZSN6iV@Tpr(,C5Gd
+
+%6!(cTIjreZP4`T3@&cTekE183G$`$lb$X$FSElZIV&1+KlV*-$[*X0!49SXL4XB
+
+5HXjN@Ql1f0ccF,m1(HUS'#h)I()EcC`M)RMAm!6fE`3p#dq2cEfi9)e0dB3'qF@
+
+1c,iJ[(2EM5N,%3N%TLGYBBM34'E3&qb*f$8JRm8`#VY2cj'+##84@mCN88#`Gm5
+
+kbG2MPj!!%Y*FSe)((Tl3Bi-H08rSk3G5@ULFY3MQ&!I4Ml92fENIiR&f,X5aJ3"
+
+2MIS8CcjS#k(#ZFFhG*`&G'G!F$V1p%S2pLh#A"UhTqlLb-m@NI0G[5KP#LS2j@2
+
+(bQh(G,qSH5fAjkA$XDMP0[T)llia-!6Va,j-@'I-bi`CLVc[VTMS`XkF$5cbQqc
+
+%b@c50FYl@GkI&5'k1%eKN!"MLAc1+BqbilCRDI1LSC2B"69'XF#,QmH+9$NlTCT
+
+1DAi'@Fp9H)2M0GKLVc!c,ZIc&Kh9YqJ!Vl1B(`ZB@9Km#aQTj-)$Z)lfD69@iff
+
+9'8TLm%U`FpC2GYD8bU@RM2B4F"4'KQcHmGPi!Beb)-3@eImi@C!!edVTB9PfpSD
+
++4CUl[3HXI"r,Sb+!5UQIQ9X)1'9d6NBNIA9RhU0%LP'PUB,FFb@!cJLDGB@fZ,5
+
+i&`0G5cUpLf9!e5#&hjV,Kk`lBLjcpPB4YL!1fXU@BEjZBK6e`,ciXBAE43XLD1h
+
+002K-+-3KU(5Hc+Z4X,UjkE9QL%'HBV%Fbl2QS$Q44N8[m6%l3B(DjIGV6[eh,Mc
+
+@HJ-YLiS8AQIP0ErN0$pR9Ch!1VZ"0EZ%LQ&k8`HRf-JbScY2Xq`ZH9(8YqFmjRl
+
+ap4Q1XSdM[)0`G+B9$pieQ,-lVSS#3(EqIJ,cqq9VH9[SKHMF%NBHQBTIEI1V%Z1
+
+EbC!!Ii&J)IR#1*pE&iT'68rHkmXM,Uk5NCdC8H0"Xqc([,Sp-6lMFj!!TN,*C3[
+
+4X--E)4GmJS9UEYl@eh%LM&TqUCL1%T'!RX(reD9LLK1L&((cSK4KZIMJRM'XNDK
+
+VL[$hl9&M-Lh)LN[@ZF*eh,PjCbiT1qpB9p0a-"R3B%,@r6mZacZ1K"%bV)%3J5U
+
+6Xce3BR63N!#-bK1HRBR-Ta+F9Fj2kCX(V-aU[9iq`d(1BLN,9c$5kSGDd8SaVHD
+
+B%*m[T$YCeETc'kYDp&C@K3-6hcN$K-*#4#(+188R-ZRd+T*#L&bU-@k!3fE6Q%,
+
+Ze"YHU12GRGpH@GD[9,8V!f5EUJIQHLQZGheHVbhV#5jF&9%Q&rYK!ADcNLHm&EC
+
+blHU0YBmqYXYK6*BrAHa#bl+N#*BPHm01aiqIh-Dq'5q9m2U4f8(J'Xq'iA08S!*
+
+Q-8MXC(9XDJY0K'P6DVBNN35IB5'0-fC9$kFRkp%jiINUK0jN%P$a$K-&ZL*lZ@N
+
+@S)J!0-d@6NrX32(4+UqU9f[0RC-1X-FJF&+V$,16dNCRc+L[2#*%6TMl#BTNSL*
+
+SL+cI!arlJHDf6E'6-lXA%l)!!'8'VefcNf'-DQZ"aBj$IP'MeBdaRB&59+l+UQT
+
+CVdL$(Z5V%Q4feqDEJhRUE),6e&$j'[Fh2SadaV-2NcQlD$5Kj2hY1U(CFe*U)[H
+
+Aj!LZM1866TG@heNaH!9'4#H)AJ3N1%%1Ub+FlkakR""rj9r-'Up84K4Dq5@TVS`
+
+[(Mhp*hTU[pq"5SjVh"R9)*XbVR&l912@V-DYSXDd!X0dR9$#VT,Gi906*Ze2,MD
+
+8pF4UIXQ2F#XG%KZaPk2TRQrN8!%V,f1CrbkB%S0"8ZZRfQ5UeF#cq80a9DQ9U5`
+
+(PXZVBj*'ah$T,8-CE#U[+[XHV6TZV&*(r43hYLk9bK42[m`R#mZ0,R@R(,NR1Ic
+
+XN!!1DQV"Qf(MQf)(6mq3!"-V6LL4aiNb%caFCiPceP(%iVDf*XiUSfFV+k*cQ1&
+
+$1(mq5Ic2D$qU0kU'R8K3(`b41i`SmqILUMTY*jZE10ZJZ5Q6K5N-j&Pr!1hZ2FG
+
+P!Kd-V8kfFF@%"qYa')1NVCKfhm36aJERcS$MkMkd+jq'9r6bDq%IZD6JR9cTiN[
+
+3j$DAU#L+#0k4hB8-i+*fVM0C'Kj$,8PE'Jj`XMZG[Xfaba)3h#-RLDe[,Va32a(
+
+N+`f,,(LQ"QC2M,pI$($r$`#3"!d,H'GbBA"SD@0c,Q0SFQ0PBdBTC@jcC3#3#DV
+
+(!*!2&`3D!"F`K!!9-$S!N!4849K83eG*43!!ZQ(8J,TKe)F!N!BMR!#3"Jf9!!$
+
+kQ!#3"X,I$8jAmLY""X#QR'afkl1ekq54RB3IjE40D(iqiI4c8bXUl`JR+`&B2GG
+
+h8rblF[bAcmmMk%FX80reAFrpK40qC*pN5hiIH8jq(d(%*TaX2&N2`(-8HGT4I6@
+
+2dY$1e6M6ddN8j'TN-aAEXGe5kYcHEURY6clChP+GTmdQeThE`RbUH&l0FT1VUfa
+
+QP%j$p9,(19jbGDZc5!pMc"C@6@`FUXb-6'E5`140T@LUQ"L9fK!V!TX@1NUMG-a
+
+$YcUHd@)2DN5J3%4I`'*&3K#!-Y&"CR19Qqc@,ar0dU#)E*SV1bT-bV-Q9--P6bF
+
+f-bS[J%TR)B'iZRap+-cYRIB1!I,++ReVSe"TSQ884d(49D&0(aH%rS(T+'8b*a%
+
+8%m9QUmN5q5JDTD%CUIlJi+4hFEVhjH$XT0Fl16qLd65)Ck&4Rq9&'0QYbI0kCS-
+
+90pQS*aCHNAGMipJ133!0%9S#fcXjZMijhcpH$3bZpMirl!hf,SqD(f%N5N&q0"l
+
+SE+bH05m2Vl$LkXZ,3l8B32q$c1640kB9T39YD6Fr-U$iZm8rlU@&D4L0QYq5*QK
+
+IUZ1@Tk@lAYEHi4h6@!Hk-)0&b`eJ'q!ehcSS$CL0"m$+)QiQqKBEeDlDh0jT0[[
+
+ACmHBbY9LRN``41"E*qPd9Y$BQei"I265lK+B8Dc(15&4)[KZSd&M%Hf6XA1E*6V
+
+QY9eLj1lMA9%4kAJ!&bQ-l(a'-"J(,%00Sd@LTamQRFQk5IVjiI-EB`Yp`-dqS%P
+
+dIR-rGqeGh-kBJ,F3#-Xjb)a*"a-6M5F&4(*`q(,[pHR9i2M`j1MiDQHeBak&a86
+
+91kj2$Uk1CF9LN!"BQ1"J3@+@Tb83%R$c1)lC),Ir6k8kJH-'0VDC")N8R,4bBe6
+
+YCQei*G`@RQbcd'4Nha2N!kc0B"&6QiBF(FLd[c'Ch4cU(+"J3,2%T)@,%,NTTSJ
+
+8K"5EG+('d5dR"$c*e1BQp*MH+"MdpXGGAM[,[TlCL-`E-mq8+3*Rfm&%CkV$HiR
+
+#[jbr2MXj2lRDIhAkkV,hPI1@M5%mkfDM5`mcX`&!H"U6G$ES*9KUHU"&Q3NaMTP
+
+%Md'CTTe,%mGf6Lrc595B$9idc1`mP5FN%hP!2VQ"MJN@A)*XF'*R5&&$Saj$8LB
+
+[(S[f0r6A-jdJED9!ml#*CKq$)YQ8kcLa$YpdPNeMKppQ1Kfl0d"HEV"[p2GC3#`
+
+(NS+6`BiI$'G*3ZVRX*6DDDX0IEaY0L()3C51,)PpJ%HaML&%-b"I5N2X2)Kb@2q
+
+5R+i66TFlE&jpb@S%18d0KcLKcVNDIl"3fHD'6Jl@[SPY4r[9FjMTq@!FV(d@Zl%
+
+#jN($`%0ZjhH[pXbQ$jYjpi%&f3Kmm+YaJ,cirlY0"VHkAirGKc5f@[YKGfDJ!Gk
+
+qmiic0db*-ahR%XK*A[i6%rHZ6d%*MKRX1'[VP#1hAVJFbL!N5$BU12V4`Ujb#fP
+
+9f`Fk$`G1++K@8lFb"@$`!)D@'D5N&6S"-NXT'F,,B`X0MBT*9deeZ%1DISNH!,R
+
+a'i1*$!jFJ'Z4arh5F9F0k9I@AN3,%r[@i2fki9`Xi`8R$8LH%Jl[k42L(SU'!1P
+
+[K,HFhbSbd%i%@63Yi(Hbm'Mr#m'TS10E`H8!80+"r*!!ei!CFT@&KlI`IZF+p#3
+
+VC5ScJ8&J#GfU(TLA,+X@qF4K)c9!l"JLI#j"*MT&T[#Fp%`KEVKA&&NdR"@JCj(
+
+20G0iCC)T$$jE+UcaVPNZ3KFLj"-38Mpj"r[0+eJh,$N8TfDR`BD4DV9Jf0"kRaB
+
+i(fqG[cipEEI9lUlL&`j+UJVUcm3U-S2X"B"+[998,93,+-Klmk,SD8Ck&KFpILH
+
+mD!H%P91V3iL5ab')Y&J48`QBq+&9IjUCE%P#*K"GpI,9qG@rD5,8F#M-9YJfRbG
+
+k-4K5NXQhG"k3!*!!Rr``6rj"SKIk#"iNE@+N'jH213@6L`1Sc9V%rV-GPDV23&'
+
+G2M(bj%QEkHR[)8)'jj5a1BJ*Y8ib2)(f3BC%81eZXp&J!kULEIT99cf5D-G2(1C
+
+%C8b%BLBH+""@eS`d2!LXFdrUYhH,%4NCPXZ$@a,-Gp8I[+K4*kTN&Nb8MZ(i+3c
+
+d&JP(X[r)8Q#'Sh*f9dLeJDDD`Bji[(jD!*5G)RPaF-4k$Q%m#MdAA-l44j8$T9%
+
+*SqTiVdI,N!#@IG9!"3lb"&F+--J!GD04Ffi!jcDlmBS&&f1`q),U!%iJDmf4IBa
+
+SIKMLcc@&r3p,eVC3-1$K+U8iEXAfN5DTHD5"-3UQS5RQj*I-X&P`*p)T0jK`A%V
+
+$Vpp!d0USq--V%IMUmZ$`N[JDcNXVTZ3"2Y!L84al1V8j5Lr)LT1)meaNP#hTdhC
+
+9kq,#VhLM,LLdX!*S49NkV8XS2bddPm2ml'I*NeXZBPc6i0VUkR639TX9Q,CkUMl
+
+f%#LTH!M($2aR$%+2!`%8d!kPLAd+GUBA*@K0*%5YJ9aDkc)BJb((CFYP'Y'@%4A
+
+bPcQ5*i&DlKT#SF13!**Y&AId%%iNmR@USl5(GT),l)Z-$+q)6#jNB"&%rJ,4Cfb
+
+TBbTIcQeU''HMM1X`)CrRiIqJJ`A,@9)+e4V5)qT@5e+F-IJ8*RD1c&(D`Pb,af1
+
+Q#R0hbH5prN5bf%hQ$-0(`8TPrDlDLqGkQ6-lqa0UUKl#EXh8rVA(#4rD[hiK8(U
+
+%K&QHDk+a+DEE8D*UK(A1B4,$`2#C[T%i3%fEb`RNUh9X'%8Q4N-*Fk!p4rZ5,4*
+
+G)-E`jV&X(+mZ)DL@R&2*1G8jYCNZicKp9dN3cF)@"FVlh$Q+d*h*G-h%6a&%N!#
+
+8*2iYLFJZq'4U"Y`XNr$L#hU(pRa3SfkFLc2T1*cNAFe@qH64IU9*(cj9kfLIiC`
+
+4ZMIBcJf,2*3-d61T9TkVk+SHJCl5JNVGFPDPS!FqRRTHA0`6EPJ"lLB%""heN41
+
+*lDTQqjifaEEm0mimTMILhcqa+'$@&2SZ82eePU0R!R9mf8)Hid#`KkjBA1Pi1#l
+
+P[5)hX'K6-HJ,b(p)mVqDV"RpMSR8fLNa`6AU6c5mik#8eVpiU%M`$F-d!@"R5K`
+
+Vh0`Y'RqZH56T8!h$Pb+ekJqr1$br'TcYp6jR5#iRR#&29%j0[Te34)J+"8J4c"f
+
+0EJrh$6eA@rpZkrFZ8!!SPUm5)c#XS*e#*`MfCU%6ZB!b'K'#Ud+!1P`!ihb#P$q
+
+(@5"i)GP-69L##kf8@&)L!-k4Da&5&!+#3JDPBqi,%G`qeU4,J6R,$*UBD,3N)5)
+
+YmAEI#6Q!3(LY33RC,X'NS)8k(%XGC@k,`+9@6XD+j444ETH%*"Kpq8DK,MBkHkF
+
+3Q4l#0@lNm5dAKlLEL%eV@hL*!pSY'DCeIR,+Da1,A&[BPS`0&S2!SP,a8@H`P(H
+
+XJJX64bh*#i0mJM--kGMB1f3-PdR-jm19e6p2R0`pP#r%1A$$KeVPL84RkR@3!*J
+
+NQ#jEVCB8lqh@Y0hZ9Uq2R)9KL,$C8BQ"JR29Z(0QrJ9MMHS1q(Z-c,FTD*fd0+h
+
+Tj[2Tr(j5+JdHTF,!%e2IHI%0`+S9VkYaM[JiZS['m#*Cd9N%KZI1B"Xf,IGf&JR
+
+Q'$X+ZZ#QcipL$UJ*-2'pe9AqhP8Y4d1RlEbZ,B"b()8%NpUj5%!#P6*EbC!!10Q
+
+R-SU8%9"E!I6h$$TdhY%HEV'`G[0j9BV9+mT6,&lKUV&rZ'B$9dFFI0bKP6qX8qV
+
+18#Xk49J2A+,b*#jAURXJXV`')iB5-,4iQ+6fM5FjNhjRjh!(1MP!V2&)R$h8LPj
+
+I#(*XTh+q9B2Ia'RC5LmSlT`RhU0ErS,1!h)D*868$RSFJNk*YBeLDd2FIXBYe6q
+
+K5br9L4,FTK"f0(rd&q*F(k4`%8I4&@HaA&IGcb1mcAP1Y48BDa#'@1H&h+p!ica
+
+J4X9TP%5i6Xf)*AjcXa(p4rEbq#KjH8cNCAaC!XAc&C18hlK`j@2'"Ja%cKmDEjZ
+
+d"V(fKX(bG)QDh''68PL$V`8L8[S1rAq1J)h)&'eZ#P,LSBp8+Tf65+1VN!$rIV0
+
+EmLqE'XiF'S5mdEqB2HcX9L65PK8Aa$Lf%YKk6$J5G"pSCH%`Vj@%Q-LDeGEL#@L
+
+QYmr@[N`Fi`"#IG[iP315em3iP[N1aYiSY)Nac[jbTBH)[0)h'Pa,m![18l-#451
+
+I$K(&f,V(HqL4#&ZUjj!!+V05ZBYF!$3UrNXjL3CfDlFT*8#mNZqJE-%,Ych[a#"
+
+Z)9UTm,VY2)A&DlQ3!,,`93jEBqR@jVN@$,ieQfKlD)E8eR"R4i,eR66Ibi$hiPG
+
+8pi,99HQRG!3A&$E9pUmTk)PXk6pkqP&16hk038iSFb3rdFNlXm&Ek`MP@1H"1X$
+
+,hI6+LFYAGdq"Zh#jGF$hCiL'1LS1+P95BqCp+lM!G8[eZU4AGj*4UHlRMDSmqC!
+
+!)kMeVG0A@h*44#5!BRLqN!#U+PE,3eA'+4brCpTK[(-G1G`i32H6fD9$4[Ta)9L
+
+U*qTRG'b+3Zll!EQ-R25qLU#FQZrIKlj$mZGH@qJCS&#ZdZXT[PM'(,I6p4cG5Q0
+
+XH$rQciF1l+8*hacB)eU2rbq`$V8E,(G'Tm!Qch(!q-HbaH3,Z*q2hpkIQ03hEh8
+
+j43h"hlA4H4"(jd%GR9)H(E+kP8D%m!kjfCe)h1"`08JUB9jFFGKXrJm!$3YiCh*
+
+KF'KTBh-ZD'KbBf9M4LPPER0P!*!*dAd!N!mA)Rm!&cMK!"8`1J#3"&4&@&4$9dP
+
+&!!#kBG6%ZQ(8b3#3"KTk!*!'"qd!!%dk!*!'f2N-6LPj5T!!!E!pXXR'am+cPAQ
+
+F(*IXTjaZ#FhC2MSKe(LZHb$"%i$9Fhd!,N"R"(p'rFdf)qK(,&"GSkl-ia&f4GJ
+
+q`Q2Eb1fAh$lbQq`M8dVf5Qi9f"R!NdGXb'BbLI5-jB[FL*K0-Tj1CCLcUH#4b0K
+
+B+Y&RMjkXVhmSNe!9N@#IaL,@fD)rr9Pl-pcFI$*8FR4h94LTk'aGc)h)%LB6`kE
+
+m@J6cVHjNa-2R`56644*Ye9MA@NBX%e`&6UC!*Y*i[DeeHkMd4%-JjG&A(+e$d)'
+
+1"4XqcS6L4N3X%Q1CL0a+q+(lb*kGAqlYAkjYeJF(jfGADaq-j9a%(p4(CjqIlTk
+
+IR&m1f#HE(hGAafI(9qAPjY2kF2qAqfGA`HR1i"H-H316&D%T-R'QM4`[6RRqR2f
+
+HA@MS,,*6h1L%ERSeqYlq`FlR*eI"dIlaiG%9DhkIE'cFJRaa[(Gee'*BN!!DjI!
+
+b'"crHVmqIVU"Ah-H6NAiI-KHX0qZdl8F-mqCNAh+0RVhAQZ4IZ#JHKCq6@4C3"E
+
+dRZhX"BHA1aG(!AR$2cXqXDKVQB!(NSV!5rarf3L4CL,PQ3L-$U+-caSeAcL*YPL
+
+UH!J6"h1)m,,'MA3L,+*-*Td*f2"!&IR8Lp*&EaNI(Bfhp!-SCC4JL8kpaTBGea9
+
+#$C'(Q4"*S-6B,09JM@p,L%a1TLX-VlbFbFK-(fmf[-XlSp-9TpHN4YSB(Gq6QJV
+
+L5k`S&QpJh6(c0YP(0d`HYq4lP*U[`DeF5f`RE3e0CV$BVp5D"k'J#+a&XVEjD'@
+
+%hT12Ejf`H!9-eQK`RC`@Z%CfGV8-JjM2QGGalN'XkRXP5UpKA@*E@9IJpZ4[k*!
+
+!D)9GLGM"NmYZNCd9r`,ZF)"rjc1YXkK"Ve@#D8U5mhZ6V9!lcL8UX[@9@Q@@E2l
+
+ipT!!Uh%9+drl6A59jlP%4Gcm#3kEFU)%c`,(IQf0$AITqaHfM9#Zqe4@@`&%aR2
+
+`X("HlcfJ`KpBcZ2qU,I-96RfjT-X5%A5[jEjp[C'ch@@GlrK(TV"#5KCUQ$U9ac
+
+5f(q2Ak(08jhAd![kq"lFichI'r9k@rmLZJhJlc&*Mfd3E8`8Dh6!Ha-p0%$6YV,
+
+FC+KHAYi4YEC$`kE$KaQ-PrGmb+)31IJ%!lET+`a4#4!KhR8R@CFYZ(b0'1Y)H(%
+
+,f3LkME[AJ+&@1[2#"V%YXHLjrc5"CE)GrV$H1ri+2K`)Fk!ciIBDDd-V`#6d,Cr
+
+I,0Ppf8qaVDM[C,PMPSPVN5(S(`)JYc,*bPAYrY6iUMhkMd@H!IkY49TZrcE)$Dp
+
+EJc`N3-e9V)F"L0fBqMYLDrKCF&ITEV5Ki2m@2421GH@ZH@Yl#P-l1hLc*Nb*-K@
+
+l(B1D-5U-b&fEV!c-CMkMqi&@-[*TkV)rJYlPk8@Q[a+K36rafFqaqCe+kY#GR2I
+
+FDN-m6%#Z6BMrdIYlRdKRE*[0lPcQGJ*[@Y[X@jG0(cC`fB-%j$UArCIH2e`fKFZ
+
+QGbkEHjKRZppUdDaJ&YlL(SE@2MUAb9JcQ621FZ1@E'B@UF#FJZ9[,)@+FME@'60
+
+6`Djj*R@4NhD!aX$--aj#6jNEHNMJ(J23@%YJ5Q1,aIcYXecq6[M-jVG2f&5"Q5I
+
+kNciERPmbN!$E2Eri9FpR+6GJ!d5dCcQ55TS&mcBJ[rfZK&XD54jS$,eSHQF[3)P
+
+H&9Kq@q9(k[[90kVle6F3U6kP5+lb#pc&f1%Z9)fhePr@YQJH*p4'+8hCVF[f%'E
+
+%KVVmHDPG(4T$PNL,Hb65b(Pb4bQb6`i$6h@K)QEiFm&i`RJf+@+-G$kf,9b3!-A
+
+-6,1[LY``2X*5dbG[A8eKc"Rf0BZG&fQU-m2L3KQCBY*fM6J(9,ICeXhSQk4IBT8
+
+li*Zm@Q*C@ljE**C`0K[HbK![X@$QEf)6adZ`qGF,6lF2Y8kPf(b(jraDi8d3Y3Q
+
+%XhPEKTM$#h@5Hc%F$1mEJ[!`drZ-hNfd8`r"PSeLaEGba(E60jDJYZ1m%UN'V4V
+
+3%K,PfQRc0@4Cb0CY&"h&L'+8(J-4%6p))EbPd-MKf+I2bBm-TG$LXql&MB1lXml
+
+"cXPJ[ed@#dKcjdQb8RRFGKPhF@I*"Qj4GKS%)*6+KBKc"+@KGa`T[FC"dM-C)`-
+
+T3mZ1!Zm8#H)`Tm4-#d-"5NCEQ#NK!"'[3XTR8hfiq8,Re%-@$)5T-#QmN@(8%1,
+
+2HMC4+lh'K9,P@Vh5kkDLT9$S(QF&Bp"#rXLQXEIL%N'RE84jEFPSmk9"8h`Ne'T
+
+[,FXkVDl(-Cq)KakQ9bTiY,eLHQeI)X#4AZT(Yl+Y,%1jd)Ca8lRqd*(I`bL8h&Z
+
+XdS$G'b4,L5X"%!qaib0KFMP*m%$Ycema9h8mV)*[H$ckdqIbJ4bL%"($Xa#2m&$
+
+L%I!)XB&QacDrT,&2jGT(2i6JcIfEZB#XE0[L8KkV[+0jU25)+l`[T(Q!Saki0hM
+
+YJlrPfahiZRd#e(6X2BNij$EM(b&aYYE@l+2&A'3),[6C*+%G"GfLiHDf3UF4!XT
+
+"PNI(Hbd3GI[U9fp1p#2jGK%UpXTY(N#p#k4Q6ISHYDPY@fp3+iQ'ZlBSZjAcbcS
+
+,bV1SL10&ia8beE)TqDXQ"#5l*6LVFVb6K(r'5SB'hQ4iULKq5UrmN!$+EL[YKa3
+
+*1E[+#YSD)Y,bJ+XFXmf)Bi+J1Z3U)'d2+%"3FFT65R6AHc$(BT%Kq1UEKBF-r`F
+
+!N!-0#ATdBh4PFQdZBbjSD(*MC@0'+@9ZFf8!N!QSP!#3$aF`K!!A61B!&6!k!*!
+
+%9%9B9%0A588!!,TKe)QkBG58!*!'2Y-!N!B6P3!!h(N!N!D,a!e19r+8)!1!Zj!
+
+!KHPRlcFUfLq%p[BV@@M+#$eE@#jXAhL#cqaPKmpV`Aqpr1P#d)p@S+j[d#cCf@#
+
+c)UakXbHh5#B,@FK#IL'E,*5XiB(I%F"QF888"Irp'&Q4(I3f,2QCrfU2ASM3#Qc
+
+E%cfr0A$YG&D)R[N1fr'6HqchKi(6k8BLrlJJ+[IZEBRQ8%4G@jcD(GZ,3Z'hqI1
+
+jjecB3HK%3jTiE,T1f`mmaj4hb,-DA5F8rF$["'C2i&-Epi[3EdHACQ!IL+%r%*E
+
+TLF"Z1@%81-e"C!XR%UEAf[3$`XPT$q0M-$M`@RE!ea1q-4626Xl&-pZc!p-9,`G
+
+0el(%X@2CAQJ,%rI640Le@`!b2SE@2L8dcK3DiUQ2kmc)mEd$B6ZB$`6MkhZLUJp
+
+99j@%(m5Aj-f)J!b%hkIP"D!h&+i*J26q$GleN43*pLhKH(aReqm$iLiZ!qLAMZZ
+
++TLd'SGdHZ+Ai$Q`8VfU0jrAcKMJmH5eH(CkH(TidAKpJBp6e-@eIJ1edMp2VZ`l
+
+1!p#"k6&Mic0H(*dqISkpKipUalA'Dd!VRYBD*dGRCq*Tr93FLTH(TihDir2M`e2
+
+am[cdCIhXD%1)-e!(Pm9AI+BJC!&8"X0DGQ3kEMLK`fZ)3!Lih*ESQKFfa-#bS5`
+
+YB3S,@[50ir%PTZYl(3BI'a11(3LR,6`r+SR,`)(!42kFrI%0L3U84-fc0NTLGfp
+
+([$$$8"aHJ2L2c9icF&SGI(Ta+-V9bYDpNMJr1b43mE1jX[*AMQHjJjBYlVKqapr
+
+ShNNR1UlI0-'!E1Kqcibk'pf(k866mE%MQfKhaYmYhh0`@cB#'HQ2*d,#FM`b@AT
+
+(1`8!XV*Cr0mr!$r`3UIMJEK''*R@1r&!l*I,j31a@43lq-!kd,+EJdl(m6VJ96`
+
+8f1!dAI#SAMmq1Mb"#KSJEVrV@+%"%f$MP+H(afG(*CS-)@@4FM*UlL$H6!TL0$&
+
+UI,S"MX0SqBEPZlKpGJ(f3Q0#Hl6dJ0JK6ZU0Sq5IliA3"m*S%BEZ82rEY#'h&hB
+
+S0CcpLYmAVYf15'JXq#5i!b9X#XSZR%VA$&VX45cI$eUKb*G,j3,%pZrp),+Y,Zr
+
+J'ET#@B9(p8DMrS*[`kCDY)Sci"jF'iS&T@Xl9aP-SBqpB@5Em!)XHM!9I%EEGeh
+
+r%X38lk!-(IYldI'&fD9&F'1NTpkl$#l)kk!I1U")blrdf*63RK$U#k"`Z-C-3HP
+
+lS!8JD`AQTH%kR[dG-plaB('D280HC66p+2*l"caQ$B)!IY0JdBlCq-ai8ApbC*`
+
+G0FCE,J$)!e%q@'Ph*,-0m'i34+iY2jG%8`f19X!)ZaKP`kX'!4IYYUqLlQMLKAR
+
+e!d6I[(SY,iGd'RhEZh4Dm"X24+A%%`4Yhi`JUU41ka8qSHPIi3!DaaHjKqlMMr5
+
+"i!Irj$32Z'D)Ih#,R,&Ff`cSdm(+KHqd40"T3Z#F+%pI#a)2h$$`,2#dNkS@MZF
+
+V@)6id`K63N)"-Kca3N-dCibH0*SGVD#DGFP0V$Lm4PfA$1$1Tl8I6XjI#*!!*aE
+
+K-NJ)ci!pj&N`X!I`'1UHIf&(ITi3aLhdll!JIPT4-BGaK9hjj2S#'+*(Kj04A(k
+
+YML)LI$J+#a''5+lN0@NNL&K&p&rRib"jq-[PaYHV$D1c`8pe')NIP04kamIKr-a
+
+Ur%fX81,lNA395LXi8b`%X56q#F5"*KlA6U#*pH2D%qM(#$15$lNqdbX&LH)@8#1
+
+3!$3jN!!F%&(c&Zb)+)BT-IU$+2`2f*JKp-pRk%lV$AbiT4Ip%jC`q`EC@pFF!Xm
+
+8UNl!adJC9$J4QqdJm!-,Ne!4RQQ,r(G64dJ,FeH5Tj!!LL[`2S!e29M*$H1KB6)
+
+8hi3aF)(P&e$Nk,C2YT12P,$-r'MMp"`D,DGaK#)2XT!!5drF[5Zq#fcNC@(Ak"H
+
+NEC),q'MDLG5-T[492(F0R&aB1RddcNTaJmi@)!DB-#LEb$mkI')m1cemqGbSRG3
+
+D*A&51pE(k5Yb#paqCl)9U%b,LG1'+QiJ)qJ0A$Ra8&4f+4hiMJLeiI&3cqc$')S
+
+#mbDALid1iC,,N9eMqQ9hN!$*`U`dFG)kj(,A#B+j6*@NKhaHHrEm',m`NFP9Q([
+
+e[0CJp**VTY[!X&bXH$cqk2M`mGr5+!PAD%HNXPCqMa%M&Sbm&*&3(eSBfbaF3dM
+
+3fV%AJVq5ad(mhQ$j$jAIBLTeN@U)F&0jlS1TVrbiBZ3dElE%h[0QH#6-DS&'+`A
+
+R05-f@iDa+E69'fLVhk#p@6'(GV*P$1eNQ2cq%Z(U&,6A$"TjPdrABFGAiQ!"R68
+
+%X#E#HDKPbdI-D4H`UHpFfHl9jR3#KMDA)i@MNjl@MSp%XGfRfj!!rhMj1bS3f%#
+
+FHDGd*lM$JU4G!4C"GNr1MiqPdV,E'N8)@XKC`pU1LdM*kd4GrZ6j1!!Dr4#'3QS
+
+X1d5NAkhmh5X*B8Q%cSqfhmir2Dl$lKG+&*&J+pq8VP1)rfiGL@kZEEPqD02K'NJ
+
+DSep#L1K(iVUpGimm$SecKN24c#iY*$m`'H5PDjA#CR9R5QN@V1dLEeTMJc'QFcE
+
+23Mm0XC3LL(9T!*+pM0j8(eP"e$R5cba%6QlCq[d@KSBp`hX9P'HN4lJ-V83[Vcb
+
+J'U)YmFJXI%d-,&Kic8ll1[EQRYr2NcMSlf6M$+**cdBEB"KlGTj(A`+b`YlGLJ,
+
+AX'#`"[M)3-ECV0@eiBZBDXK6CklrR3e&e"m0!`&SX5q6@b9kljTGXT,3Kik0Q"+
+
+QNVbQ)!q+f0Dr&%rUCe`2X-1)NfR%l"'iYIkB`dSkJr6eER)SMU)8UG!ApbRNCM'
+
+-lI9C!mE3U2rGd5Ndl99XV`-EKY6,9e3)!rcM8r+i$!G5rSm[@&%J5FY[9bTEq26
+
+ccf0b528Pp$41rdJi5HXpBK%CIk%aAmR0+CD"9RpT(*fHeNp,YhM&G#+`#*kY[4d
+
+bl"N5Pia%FR,NNbeZ5@Y""lYp%pQcdTEN,RNX8ZidjD''!UF!42d4kmP#'Hafe"&
+
+63jeiHYEp#-N18Ld993!'QU,JKf,%II@G-Krk6UC!cLGTN!$qSPD&[S&'cCXb#HV
+
+UEbUV"hU#0AMe0q99YFI1pP4TMja)pm3k#ARVq*&r09cQNd5mCFLN-kj8SL&dY0*
+
+04l5BdlDKH!M684!N19ZBQ35efL38me[VP!rQN!"kQDfhJc!#0(&b"hcZ6L0ICE-
+
+QFd21mBKr-X4MdZZB4KI4Q0'85qDa6Qr*m96E(B3X*V(25'0TpEm*IraQRdMe%l"
+
+"0DH#IbY`NT8UIVI`ZihIR@[B!T9#GbrP$ARehFU)PJ9B"De09U,p&M'S6''G"31
+
+`Rka)dE$Jkj0ppdQ*aiISVq[lBa'3!)D6(GM)kA`4J#ArC9SE,b6V0+@IC"McM[S
+
+P)$X2f,EFG8[!#9C+BKLYP6Je4Q$JJ[&jRCTal+YE($)(MVeeU[Td&[)4)$U2H'm
+
+S)29VRUET0&0$kV936r*DK'0fDY0h@rpcU5k3!%aZaD&"P&el!Y34U5-MC'XZK8F
+
+1)@D1ShB5I0K2C#)8"+S-Q`C`+L`9a[0p2i3PLQ!L1RPHV@K*J+'GC$5HRpCIe8k
+
+HkC2SMijjIi(9#Y39kScE8eK2TZM(%NS3k3"jd41*pa!3HSmN#TU"846NHI*ZHDp
+
+`rrkfq"Qa%`kLcbNU1QC)PI2mj&(pr14*`ZH&i'@N6M9*alF,68SMQY4FTMBRXB&
+
+cik4#'SENrhTe-0@0VNe99[#I'PJpNb)kHchXfjE64Jp5!iefACYX-XU,)ETJKdL
+
+e93-e&$hB0X)+RFJ,DQfCF+!49G$D52ai)rTE+&"fr!(haR"SD'p`l-'8#LRc*k1
+
+0AmK'fdHfS[R8Ahp)D4Th1#3K-('K*P453K0Fd8S,@r'NlP"P&C9i@+Y(PZ,,B3J
+
+CV608hbU2CHU6)L`'P0@R9@`SX)j&2P9rG#`Lk-`YZUSN3b#A'%Ceh,Kj*[&0j#"
+
+YKQQ!G43`38+"K#b+mK2LU8B%T`1mTXh+,fN!2R+3!$&Z0'L@*"GqT!9!4pYiB1(
+
+)6P2ZriRp"YSN*5J*r"YFKcY!1rZDUd4pC,0BrUDkXmZfHL9(cTTqVNYXX[&6hGP
+
+4(r%PQH522)ZPFP)0kipUX9k86Bq@9qMM[Gf5f,P(#bVhpXM0ihYPRlqAbHA[`Z,
+
+[E[2h+RhITbAlHmReP@d+"#VbK'd+!LJ4U*Ej"VPK&`1-3@8IAr3rej3A,)Thl,U
+
+T`9KkL`8j5JcccJ08AThlb*b&XlE'+bJi!5N9Nr+1l'KTBMQrh@$Z6@BN&E%FIj0
+
+4SLF(XRc`f`I1'PhlPNV#D5d'%f+0`Qq9d'G([18%H(39h6-"kZd5U#8NId#,-f)
+
+YZY,CAb%P)GR0h0Qd9kQLZl(La9Bb,K%@rL%TH,k[R+Aed4rUTcSTAVCp08UM4Xm
+
+d)*TdXYK`T*9'PHlF!SFcrRT5C%TcSJ9i)r53!%(mQ4%6[+BB0cXcK-Fe*!9S@Rj
+
++`8b`bfTVXfJShI2[GEF2E6H0)$08LbXeB9dUqmGeG(BhNqrSRiqq0q-%MCC6UJF
+
+rS)-kLUp66D-0,)A8)!R@+Y9p+T!!8-GN[S9eNICd[ZiKND3ec@c0@)dPUNXJEXC
+
+Z&6Qj0qY4IQ03F8UKiT4$48QL)T[ebFA31M+3!-bD)Rd#[%@U!Y`ZNX5*9c8rVf,
+
+ZU%fMm""#51AdNE[ieLVr&lIacrC"S`#EmbF3BQrbCi(r9c4iabcPT1T!XTfCr)d
+
+V[jS3,*RL)QY$FBM-HMa044BKE)U1,U@)DTDjUTNjE'1V-,U6MZrT3pAV"ANHb&N
+
+i9e5rRr!'18d6a6@NXR*"bSGN&F[1l5B320P%dT!!,2V)#AE$)e)SX-H4fFJ4T4'
+
+3!+abifYQXXG2&45C#X8#*XChi1fFm6&aAUf2N314hD1fPHcApDJRCANAKJH5)B!
+
+e[%'22U&4`8Qc6R6R1+KdQNkB'T3[J+E`U5!a25[0hTrK%-BNZfE1Ucak6''H(`,
+
+!ABaFHEebM&BLp@G5B&`6Ehe-Ur+kPMkZfAF-GY*j9408Y5+F0"P8,500%9h($l1
+
+VNG05K(d6Dh2GF0bPRlb%NAe0Mj,kQR8iY2iZA,aHbZh$fF,ELJSJSM+Al-erH+"
+
+&MLjIH8%lGPc05[+NF)N$@9N+VMQDr3J0T`rMQq-iB*T56%L+$TjXRU,Q'EG&dD+
+
+)Za,kr'Rb2AS@3Fjc'C2'h+lIdmfiaCi%8DllIbVh*0lZbrX%%l(k82,8BRhEMf@
+
+B2MGNYBlm@dFfDq*YbmmT8TVfl6r+$h&h9Slka*eE"9V5B)'l+SEF)Rk$T`VIHRJ
+
+Ha"iD9cGQ$eI0&L9&fYNLACYp"!IKhlLFD8+!,EB1!IYNK9',N9pEJi!IaG,lp4)
+
+lF(c+`DVEH-bTA$lHj,8(Z4bU$&8HdC8&YG%DJLfNB[SL*$HmFh0AFiEb6lQ&#Uj
+
+amBGIX`*(jFXT88(Z+"(9dEpP)%BI4kb+M+j0&DdE%P4NldlfcQQ6kEB9A@r@l@i
+
+S'ZTpp!V5mUjlDK0c5hDAC99lDY[`QKNjhXP$31J`X(KbEG*%5HF#ITBH(KYp6Pk
+
+AqEA60#q%6i*J[2$#$9PfdeBh`iMI-#*E,YmKSV(rG&5Sr-jlU$(KZr3F!99SDEA
+
+q@Ph0LSdIhP@4fa'2Vrl'NrXQ49C9e%SHimLU@Z[U-3$UFHTh!fBl9"&@[b)`jV)
+
+fDDT,QH(49(M-$lq5fLE[RIGU+rY8B(RIV-hPIZR9hU)4+65@0Gjp-Q%UNU$'(9q
+
+k+2&+#(jYphj!AEkV88!2MEU(,$9KK(FYSK,6GiaHaTe4Pa$US"kHd((6q'f8d86
+
+mT%J+K(j")PXNRGYSBV'D(peiceSU0)'cNq0e'cSh'X4T-m,-!-(jD2#N,c9-P(l
+
++LkALbhYd!iIB$j'haUr5,"CV5)RZ[hr5LjH3!&ZF[Y2d3@aZPHd[)-J+%K1C&FH
+
+25a&FNK"`1fQS&$mj-3K#P*6mGPZp45&M"`G5bC2c($hGU&c3c,JNRIBZ[+-kK%"
+
++GUqY641Z(fApqYGf-LP%9Y8HGEcM5IP-4(``5MFd6N(A%T!!*04))2(X5qNM"ad
+
+`BPNTH&p6je2PEB&rZ9C",Cj(N!!5ihXS66rc%bI+TpJNR3N6'ID2(`[)YUpAdJE
+
+lT,-Z8b9f1H[VE(djZT9DSV"XYqhJ$F),91*iZ*K1phhS#pjZP%rR3!ld5i$ddJ@
+
+L%hU$"rh+Z&%JEA4XdI9V"4cKTHrVaC5KhH4ZJ$BH5m5$(q!3lT9fAhfIm9hP$3`
+
+"(jrikJ9dfE-rC!e[m#AeNIU3!(V(a5e`*fKJk%hXfF[BT)XB#RK*Zb@,CX56'eZ
+
+q5SYCQH8MM@PpBZC3rQ"39Sh9K8&K"L62P2aPK*-cAJ@Vr+V,1,rJ,*9`S3PPACB
+
+Na3VL'#rikRcHDjKmH)3Ar*'GkZ8jj[HYF(c+(V3N1MJZ5ac%AB(-i4HSkBTI9R!
+
+4Sq$mkC!!1@XN@$FSPLYlHaPE9EVc9@TR&1+GZINbXL25h#kjQJ8i'BXim#bZVmp
+
+hkVcJbqaPPejGbM[Vkr)aS58GJ22N4Ef2c&'ViZ*$pNV%j%R4*'Ul@D)6$EeRFHf
+
+#*[(adl1QIZXEK)J+4SP"UJ199!@U@l%'I"AJcaibNe5@mi4TrkhmQ*@23FSX6E&
+
+F1c3'jEmFf9I*cb*N-P2M@%4pM'dbQpX['%KHA+rm2`#3!`d*HR4MG'9bE5jS,QK
+
+SFQ0PBdBTC@jcC3#3#HZR!*!2&cMK!"G6Y`!9-$S!N!4849K83eG*43!!ZQ(8blT
+
+Ke-m!N!B4D3#3"JCK!!!(X`#3"R!k$%iTH8U3!!&-MT-"rQJVFp!4eNXSSH6AMY2
+
+V9R,dMD`pB5HA-,)5J0@cP$"m'J()G5!l`JMk%3X%F,debRV#*Cb-'(P1%-4AXLV
+
+3,(+`YdYlC(qIGD#j'Zh(jE2jG8k[RZFC$d3N!KSUPX8Lb'R%!L9c4c*LRk!"IcY
+
+R-LZ8'-DD[$1IMPkrINQ$JR6-UFH(208jbFJqhkGL`P8ZG'%3Cb`4N95TB+@18YC
+
+G,(,+P)6X%H%T8Ta6,L-pCBSI8b((&,#8&!p&VT8BM$8RSBQPiB&80*+KL!SR"X"
+
+a'R*Pe4ZAR49[VZrT$8qjBJRGM!F*M,i8!8pc6Jck$5+2H3JMR4K$Hf(FZ+hFS!X
+
+*G8`,Q4i6&m!VX[l+P&l83LY9,C,++I'B0NBUNTNKpq&H33Q$36Ar[ZAk'BV'qj!
+
+!4'TeaM+$a6'8`I5T5")DF"VR2"SR,DF$M25ZFrHfHhp(lHX(HYIZpGVAG`r(B05
+
+a"*T2H+P(M,*%3"k-9LbeLA8bVXjlCfr"fclYA(EZ(Q!YAA6ZVXp[EqQLfk-fhE4
+
+lGjfcqmYfMflZHcIGfr0pSPY%"mUFLRmML&T!P*'`N!"V*T*m(BF(P%!1Zj+3!')
+
+fi5L$J+0C3Q)8S)YqCG`TBBP-KpCm-$BC1bB485TeLkC+S'#dh+EID@KDS%@G00K
+
+[dHpr[+)VPZI8RL$iCf`d8#)FiZQU6BF[MPkqEY(pEGZBLVq$hGhI3Kk*&)EeqVH
+
+G[mrTk0AKi@%$ba62),L[C6p8E)T'lU2RZ1FlKP#Qh')&h%aP"ZJrl(dp9MVK&FX
+
+h!5X'4j%(F$rY*cc5G,K"9I9ra@E['e%99XYX5cL3!&V,%APL-1S[)3hpL-e@8+[
+
+[B@Y*c%[e4r4X,Hrjh)2[`KE8@ldrk#[-9)4SMBAS-J51e#4PDpDXM`Bb6HmY![A
+
+-29YCrX',4lh&KYMN#Vb2EPTbaek'fDVXJiUmK@iIEYA[Y6&qSlcLYVkZb#hN2hE
+
+BY1+ZM9c3Qi!p-TFTr%9H&FIhV%QT`SEGZB6J9#*Rhi+fBPeSVPL,EF+U+Y(9`la
+
+FD`+@4(@cJ+9jh9,P)X5Er9a8F*!!F+DUX"0Q63iQqlJJ5I#"2(Qc9Z(6&q`B,aJ
+
+V"32l%j'IR"ckPJ%%RNLe2f[Ccm,(JNf`[%CbmS6pfR3Rm%lGGl*Q8jLeBACU1[4
+
+bRl!Z0CpTc`YLTQM2cqI"ilUI)@J`b*[i02H,6QMb5'2(cmLhlfBrc$'2A)&-T2)
+
+#*!&hMRk&#J#BHfT3!aCmkJq9QA*,YX&`bf9dfCVfTK86%18F1+(T%eR9#2'@,Aj
+
+LQhQc6E6-NFCdcSDUm*S8'JS`e5RF2GJM3b(55*U6!D0FM`2d#iUP`+R!EYj)m#6
+
+%M39cfqcE#90#M[0GM&T3N`NU-mFKA"[-!8LN36)1cF3dC)N-UY'ELmrBYMCT1$A
+
+J-S3XNXIhKr[d(ZF!L$[VhMci,FSB+N#"%FN@!j'B3j!!GfJbEYi6lYXeE1b"cr"
+
+,`6$k!YhDl1ciH(GRaccZ6*SANEXhQkRke4"D4bc!1,P6UIr`jdG(DC`kTUmZ+-I
+
+cf@`"#'2Q8lBIEh"&LC[-#GdQA'4m#DmQ`Nqm$Fj`dfT0l+Z1A"6N%MZcdQC,6&&
+
+fKm-BH5PN@Ae9*(!PfB+@0`3cqA!D8PJ)Y6Fcp1V+'VY)(0kqVKP#18dGJAPFL-4
+
+a5Z0bGQSrjm3M9"*f'Se%m)NA513'@Y63BL%(KkqNhNT4Xj0FKH+mKB99i[-YhQb
+
+9'Pir'(QS9FXJ62HCmk4CFqCq'TJE*)i)1XD6D96iA!(4DP"MJQDDU9UP,DU'CJX
+
+)E&ccEMqe"K#&CFZT*VDM+CGpA1-qI%6Pm[)&KIA0N!"'ZM'L[Z!ZRCK)%6DA*+I
+
+6`YB4EUdMflcE$PKa2ikb"Qr-hlEEQKlh2!-f+KA20Bk!pA-pHP`rVCLcK!RV5-Q
+
+hG38AhE@!PV9M$9RYkT@-K!eiBNJ51C34MU`EJUBTi0ImV5NJj"ZhYMR[4HIppIh
+
+9[0eDmcTc,0IG[mjTldG2Ek3d*iJ0dLhL&Xd(Em0bfDhi&mF*1&CG)TC*RSq3!,)
+
+3PYFB4hADl9kHYkp"@GD*6Ie5b')11@!d,-ZaAq,V#Ea+Qdd[5cKbB'B[j3P1YYK
+
+f1q-d&m28(XFelF(Y&@#i!3bHkZ+AX)fZM5bMkRm!!#%K$&9$3L"-EfG[)$8Z-`#
+
+3'0m!#`(0!C%!N!-"!"G-jJ#3"48`1J#3!iB!!!'!rj!%"`#N`XamZQ(S2!#3"8E
+
+r9`#3"4G,83#3#Kkf$3d(Fh4ND@mZBbjS,QKSFQ0PBdBTC@jcC3#3#5ak!*!2&6!
+
+k!"GE'3!202J!UJ!@9%9B9&0365!"!+#(YNbfQI4[!!!"p!!!$*S!!!%P!!!&AC)
+
+[LK)!N!C[e"%!#"`FGJKL+!i6bI[l8Z*`93GNh*T(KiT)DTV%P91Ui2K'Z6*P1-*
+
+p+4iRV)N)'@`I+ZY)dDHIqj(,H[GH912QE)@mNT+H&DDiA(DR,HALN!2#2+YI1Sh
+
+6)ma,i5a6iT3d)R"9&T@L5Ya@F9j"CCCJP61PN!!mA&RELR&bYdkGUP4T%MGL6S'
+
+Shkj32&2c8aBfMGJ-#RKJ3i#B!*5&I3q)!Z6Y(kh4A0$q,#X$3r(CcNd!ZE4cFeC
+
+r*j8LT-`$Y'e,Fd6@8m(VjibNm-rZJ$d"BU%+a+#M2+fJ'@cNm,RRjYkPXp1BTI)
+
+l18ZmdGa*mN**UrY1+p91,`"G!IN$3BG"iF43pfk1aeqTS,-)3(h8kSB$BkBBl3,
+
+8kU%(bNdbQ[%Q!3#3!`Y1mH6a""R!c)j3MMrU,-)ZFZbM4pKPY*3IjI3iiAEN1$P
+
+'1-%6!)SrS`)3LMm[$[!9SG`Rk1-%r3J!UUl,+iZ`cX[)FA+-))S6[T*9B'F!m@3
+
+RTKdLj`YPaMPZiIc%0*G@RFdp*AP+Xr[hlp(cbeTS,h0JE@1Xm-VS-G(MUU,!j-K
+
++*qe#&Z014A6RQ45&Y!pSiVc3KE!&9HV86HB"jJJBFMDIj14-Dh2T*N)l"E*J"Gd
+
+PrXfQNqQp#I62GKrFrEbKEfU9jiEZG"SRFAaEkEaU#dPI(&KVV"[2pkm`@jfBqGB
+
+EL,"REc&@k4Y-T@VP)@H$NGEU'cRX@GCBY4"H-M+'f9lPY$#U)+@9,j[NkH(4!Hd
+
+-+Cm,bpp1r5BcRcjFFLRY5EG9TFb+#K$Jim#BCINbMbpqS6hDq[(CiI'hp)51e+N
+
+99NP([h0)lli*kAJ,!TB"KiDjc-p,98NDN@QNjXcMhdT4NbT*5b63#AZjl)$$N[a
+
+FVKJiVp4UCTE-Zq5'9@J*iHK#SJV`cD3'(jC*qR*K)THbL)jr#*E@8@203K9)AL"
+
+99G8kY!U1`V1U#kJ*6SQU#N*%CC!!dSm'DH-$ha"HN!#hPq30eH)FbMa9aTb6e+B
+
+pQk1&J)'Ec,8f#$A853IlKG'IHFUYF(18h!pS,"J-Je"b[V@D$NkH$N1"A9MPN6r
+
+'"LPRd-!b**dU2cTYmh2THmG39U%8NKd@$Zrc0'%!jlb,IEa1DGm%CC2',e%hT5j
+
+N5GRabC16iqFR4`GC(#'d5GQ-pK'c0)kLM5a)ZLeeSFSV&LY,hGCdDip'-pVHTZ6
+
+@'[AU&BAcD9ZQ+Ef%'VifhU*YNKB0GmDKlqSVlI5!#Z"Y2KNY)EMMj'S$EVDmXaq
+
+iGqd'd1XikL)%%5"pIGe3Z`fk+6Gk)DhR8()cP0E8U$U%UK%Z&a@9aYE#Vb*ei`j
+
+(D,G*V$a6cU1$S-BKb!(VKSM[%KF3[JmAhFUbaPa)QmI#e5%!Y9P)-DiL2a66+)S
+
+HBZT-D@p[(li)Z'0+DNDG45"c2SU+'@LBjk[Cq%YBANPpjZIa)m"BbrJd+UE$a+F
+
+$m)QLq"@!fl0K-HZeiTbiG$!XTJ#FDMPfdD-eYTJ0%c(PR!G!&BNTU$V"I5GGqI%
+
+DkDqFM+21j3CZH'3[A'%,cP1-%5$LL#lQ2!Q5K&1ki`D$P#YLfTA!cQ$J!@1QD$!
+
+!F`K`(!9&hERArNG*0+X'ZSjiF!JKGp*6fh!*+pfd)HcF`-Jf1D4FPkYmVjSa8+p
+
+D%IjYNXdjM[UeaH"Nf9A)2)MK&F,&*I@aI-"LB-6''YcIHS1KTrelFm#fFHHp,l$
+
+MTk16ikqclalrc(C`44E+qXZq-crBdbQ!1Aa3SZ+5&46'A'2J#!S0"9QdGAe*#e'
+
+edUdX@Xr4q(U1VPeD,P,+X6VCX9V@L%&`$%h"B&-'fT!!SI9`i$A4)rjH#kl(3aY
+
+hLHBQHVF-eQjh%,MG'ASi1H'Pf$p1A&N+hq2VeFafmC4@`F-q5PKUUbc4D29E4RR
+
+5eFd'b4)4&4rh&(fA)#@EbLPV2k6aH,c4ZPJbJL[JXf`K%Pa5cJel`,*@,2rS#MY
+
+a*dbr+(KE)M6KP5#80QqkK'Ym8IC59JfdA5+[D5qr`CMEjcERLI*#mp["p+TNp0U
+
+6,JA*c9Vkj(Hfk(RrpA[&mNRGAkk[aCDGM188H'[eRbPIb0`ELcB+*9Q+(+mIlj+
+
+HCDMiiRTbViHc+2$!BqB+Lei@khPX()hfU1qfjH$YDSjM&Xji-9V1iI"iK11&r9l
+
+D'Up9$,TZUI8k6Q"$ej&T9m2ALFV#Xm0l[`,d[b!-Qlda,+q-Zc(X!r&Z4r`r)5%
+
+-980#)%a[CfmJ05ic!*!Bh`!,!Fd"N3#3!`%!&e3R!*!&$c6i!*!$KJ!!!B$rN!3
+
+(!+6#c(bkBHJm!*!&4`hP!*!&&e*$!*!+HSN!$3TeFf9bE@&ZG@&XD'KbBf9M4LP
+
+PER0P!*!*6h)!N!m202J!'!GZ!*!$&[rk!2p849K85PB`-3%!ZEc`-,Qmm0N!N!8
+
+#*KS!N!DVG3!!6I%!N!DkBJC1mH6a""N!bdU1%lE'e6Le332E4MHqY`j2f2SHahr
+
+-jc3*@r#pe2#Ei5Rqf[LqPa1f50#29U#ZklX'IAD0V)QpFE*)"XZ4KB`@XJNRLe0
+
+'ILA)@*F9NS9!@J[lVGGhJ5c3ib$,lf)%XZYFf(ACJ@b4E%JlVij#lRP"CVI0i)#
+
+J(ke!JllV'h40qVc1+`GpEAMQ%rK*)$P'MK'QkMYUK0RE-!iAST118p'IKTRS"XN
+
+mL(9GI+iedmNLLmBA-e&YVSRkmqIEBV!3XiY3Z1%i6'C6NClccamQd9@B6D2CJVk
+
+i'-64HCSP8B!Km0qFrhe`%8h&*%[(@A!Tm02G,!c&0$fIA3GCq%)XdVNB"SR)`P%
+
+dR@A4B$i,463636,k)Xh%C6U+cKI&-2M`F6,#YMMpSc#l,&EaEUm[$X)Nc)*B120
+
+"(!e&*aU'b638!HER&iFAi3L,V'(il$ZdMCYU'r0fLZQfCe'D[""KK1mI#Yl[35+
+
+fmN&MUP-LcBT*YS)C,I+K5#Idq%PXlh-4"eK3[Rq'hhTa&'hh1b*+H-j2dJP@r!N
+
+Q`p)rLq*B$%)aRiERmhLpQ!-[cSmXrp$Zqm,SRBJM`h@0RRrb!LmqZNMapHj9+1I
+
+CZjc%%FE$SKm'#9pXMA(0G*Z(H2G#`qTBrJP@1fpEIXrd20'fA@%)ah"pUpR['+j
+
+`qUjMHqD'%"j1"j29&&qH)'!"Ti`,f`PR3442lmrK*`#"3kcVhNKF"&FK`1"1#'6
+
+C%B%B!SZq[I'DC$Y1Nc%[(bqf'hY641FL5@IViMU,!$#2dJrAAc-d&$JPV'5iX5k
+
+H20d&2Kj1KA'&`lmBA!kbD$6'6pF-XEP9hhkq,[UHXD(VI0IiElXiEPr`SCM1j!R
+
+[dAU`JdGKJK-#k"*Bm4(Ha(RFMkC6r(K+Mj*K2"r4BpZMm&Gc3-PmP!lRPd"IE3C
+
+[DpElM0U!Z%0mHbLR*D4ZaeNBM"ELEC*HkaIT0@fmm'DIBIm8BHcm-Xc#H)&[GkH
+
+-l$b,1&+I(BEF$kpeJSrGeIJh-0rm661pR!#e(VlaKP'B$--h00R2[0NL$YII[%T
+
+ME19RpEdhqKY[F6P)FE(a)MEl-b)9EfF4`2q(3AB&-V,9YAcKB"1(km3kIV$'Z,%
+
+YC[0CLRIZkF"K%CEBj(dq*YlklZAN)TKL9AMK8%d+k1#NhYG-2m5LG@2Fm1%N('+
+
+JqANBc1BBZ&DpJkpfKc2kRC1HehA0!l$I!B6Ya5'2K)&ZikIY5d)D-+"IV)Z@lDf
+
+,SbJCTGGB(FrU@M!8%c!!,2!qd'kQZIMUi,)@$)GB,rE`-&M`Gcm+X&R1Xcqr()!
+
+[B2#p"'[$*4i3h$qXMF,c+!%@BZPh`K&YLqpHSmdHC1"61"&`QdG!Q)Ic)@ecAKd
+
+&b6M-d[PdMCkk(Q!1AXCZPU@Ch-m"NaXFpF2dLXpDmqS"32$q+-CTm@eFUlrQShI
+
+5")F,-#)K`JZldaFdr[eJ4[G-P"1-i*C"-ci*%edVGJC-`4Ehk'8Mh5&`(QYi+-$
+
+l`(Sik`FBIhX5*E8T`3Ifm@QB40r)DEI#M6'!q0E@iqdc#E$DZBlr)!&`lY,eR03
+
+eBN4AQjkPKMKF!,&q)DT*@Yim6h)HhJc$b8cipKT$k5kJ'I1!%jdBi$EQefN@MrM
+
+3hSQbkD`fM!Rqpa*jC0`)$f,hKKBZI[J)%%6'GbLU8j!!LJZ1dcRKk`-52%aTNRG
+
+bV(N&4139V!%XJeJmFA%$2bM3!ID`0`5Fh*p2Sq'k11KEM#el1$G5NpNN!!qk&q)
+
+1lLXSIac2SN[FdcC@qJj1#`b3!%6epRc"4!UAr*!!,k!ik8`r-(hIG,r`q-rj+m1
+
+e'Ke6H#IJJMr@[rcp[jR1kb*aaHdr*R*p+"cAETUY[QYkS2N(Pcc2"3ad%`Zj8!+
+
+B$rJ`j([V0b8-ZJ0X"12$'4qQPa*a!m6Ia+-rcq&5)q`(@2H-B'NED-5&JrjmNZ*
+
+bm6%S(0ql0`F+2"jHN!!-J"H&XU#""pPSR6'%40jiM(ZiJN0q'!#4-#i145XfK1$
+
+%3#$hDaKJ0`1ji!$cf@*#8"G8qm%m!IjU9E-X,"M90ZMX[jm6ZQ#lHmN9B%dFT*f
+
+$eQL*"I[MC,SArM!V4a5T"$%@+rchme3H"4MJ`lHBF#4`@XlHE"V'ja)+CZ&03!6
+
+Z9+iZp+X$3EKKpA``rKZH,bT(YY[5ErF$!UJ&q3%LM4mNM(ZI1#ALl[MU6$l+FAL
+
+X`,aml-eb4ar9l*TEi`Hm&G`kcd5MiKirSS2B(Y"ejH8IlM0H*jRlM*Lmq$0T!*@
+
+NR63rPhcb[$k'QL"9bB"J[!3K!32"D,J8IdFUF#$iX3ieqDJ4MiaTEm4FQp[HZ`4
+
+Bi,efcGH-PbB!jT-)Q-2,hk-,iTl-kmlcFI%i8YCSJf)IqRMh@J%A6J'U$kM(hKJ
+
+8-*M+A@)N`%e-FdUqGc3-,[e3r()1e0P@B-ITS)*X!3F*R[FZ8dba(9q$L1VP1m%
+
+dA-Y[@23DL2SCT#,"XRH3!,HJ,mbSlNC$[GMJCm3i[!r-52&KRa"RHh393"cJYUL
+
+'k-Va28'-f-%ec3LH)BEicCc-+2%C+d1hFFFRk,MQPHl*"UM&L&Jm@ZqaPQ%!LVI
+
+m*9IhNDM5MlULH4a#L4(VjK3NE!!!!80l%"mh0$K9+"#r3S'CIfMe$R)BH"5ma9-
+
+G8R3K2%3F9abb@2RMQD6q1IY-AE9P!qN1lGBXFZ'J1)f`iI%d"h10RiFbBrN3@pU
+
+(@JKqqRJb58PQdQLk+%!XYJF*"9F'[A!(@%THI"0XP*Hb6ja$Z08[)QrdP,VCDEQ
+
+8[-5k4$c"8b"R2P6-94Hd(8qAC`6FhKi-X[!U!SIH)ECJGU2pBS,ET$E%9V9iB3F
+
+!`HXqVaC0H,b63J1F9qAPD933`Y2%M+'@B1"p%'pXG6&+Cp2+'P'RH`'Z+iEM'5i
+
+!VVU0h5#$CYT%i,M'6Ti!'1q&eeJ3K`-SHYkl82I%A1q"P`Cr-E"MYp+dF)r@*aY
+
+R2%2X%k3HV2pa()#MMP)Aj`1k!V#f-e+$2"4hU*AT(2##U5KJ(FHPTb3KkUdiRJ2
+
+@ccqlJ#C!E'k#4T!!j-6Bpm`M"XlcGUI&Y`84b6`'L[aGm#q!5GqHH+K1!2F-QHL
+
+Z0!c`[@*ZCr6UBA"&'k%iDHL%L)(p2VM!'SP"TeLp&&j*k$qF59*%'XK4lm8,R3@
+
+D%@dX+5@G@&24@$fP@603V'Rf!H4MdDF%X"%!X6GlT!69i)bNX2%'[Z6FTi#*q&i
+
+(`p[@rSQ'`-iVa16"@rBIcA!Ei2bJjq"'SP+I-JKi+j!!31,8F[$2#)NKfq0KXTT
+
+pNCpLNUr2`pR'QUiE-4hlaa,NX*(K'Kr1F@r$h!Fd@Cc83BSV`HSrem'9+BGKXYZ
+
+3!%!)G93"pfG3B,JKq4f)3VI$FC4!BF&H2lTBm1-3aqqSr4V3395"j#+UN!"ZiQE
+
+h-A2Z"Gpe1PH5a6c3PmU3!"!f*D,fABSMZMST0Pd+ZN[8*0qXciBRV4RXdfQ3!j!
+
+!(cr2Z803"q+-pTMVJC[PPmU"%4`b9)UNf`-T"$D3!+[eP39C(q3Nc(5)fb51@0`
+
+e"i"qK5[R'c1H%!-(3lS(2GPk08Hfj(5Jb'-r$UkZ,@1'pqY0dTld#Z!rF[kJ*p"
+
+q$c+Jkb1qG-i@Xh1m'BYRe*kS14)h0G,GP&C#!+rK3F%qX)A6kEY'4q`a&6m"0mT
+
+e'&,iScqC9caG-hXY+F,A$D8f4#%2dLJZj-j&#N0(B8rT3Ci[!()')3G)F`H'Q5$
+
+JRl+5%mUjYaJEJ8),1Iq3!(!,e#M@@-XlT3-3H)ID"1CXS*5BHL6`6*`8$-GD60j
+
+335TN(%L-F!Q3!'rK@jKb2+e[BKbA2TT#VK!dNk'(32!CaSDE"p!R)K3Lhk(L#0,
+
+EBqQ0k*c4YAfPeX@hLkEGaA&HGU(YabmhBBiiZ+E4)"S4`d+)EY3`4'R4p-H*j&N
+
+"4f&[NDBp+PXGS),+'RR[TDQN2afUaDX6HMJik''LPZ&B@)JR&dZ5!iCc@&&@PPF
+
+q*r(j4eE,E)&AAI$e[SI&cSm1EALLU)IJlrIGPi9CkU,GXA[5h93LpEajD-2C9"r
+
+-HNBAAh'FZH'DSQIMlkXHd#jPlMQrF!E6Me+PY6)ald%Zbh@$M&cNT3)13U`NCqI
+
+a,'9Gr%eZ#4bb@L8N`2-Ai%BJjk"-R#53!!M5Aq()iU8mcXG6CXk[X"U$m`,U2e&
+
+Y6ZQNZC-c8*V#db"h$Ima5FM)"[dV[DCVGNf5AdLJV"[`ThP98P[qG[*aAAXKHL6
+
+@Q&'6r5cS%9+f2j1dJ#KPeH((BTGqE+-YMNX)1irI[XmD6`2MpY+h)KZ*dQ`)Hm[
+
+(K93Be$pS[KmQHCrf(Cb8*V&4d,#5r8cp&+-R0I0Re[1#3JSlI`a$3fN36dEimI[
+
+hFhZb9la"4rjpdZQNk%Njm!1HkRB)(@%28)X0kl`18bPBi,BK!RaDVQ)EP"!@8,k
+
+"JhNK8%-fmAbL-LR,JK,%eq'ZUj[m%LFk6"JPM!3$j+IL2-VKZUTJd$r1(3,FZj9
+
+rhPF`Cj+99i)BL`@l"%Gk*BG%@MN@F*rJbm95HM!RD3,FJ!I%R0)N`ia*A)*[jKh
+
+E&Np,M-,2-qfTVMi8ZBeC'fJY*0iBX'KE-$TYj5K,*9jd`0r""bH'VhX`R08j(!R
+
+HQ"Yh-EQ+3NUJRm`QQdp5`S[`Z(+)3DI)6G1''!Sf9p*8"B%$,mk@9)!!*ENiS&'
+
+@`$HcP8i5a2jM[SM[UF1SHFNc2'rYe&Fd`d[@IH1`l,lDKJ-`h6(iUNPrijDJSq&
+
+DY5HZD&T3(ANi"(&qXN[U$Ue'b#f"qpNGlBPlYjBed5HRSk9d$ifG8V!@#VUE*MS
+
+A+r*p*'5&NHB#VH$GF1E4*64'`,FqF2YQ,RMR!,L&cmPdY`e6',8$U!0f-cd#`!%
+
+*(Ua*&HmCihmB3Z)ePT,EliFh@"q%LPH@J,Q9Uhb5bQ8G"(%m$-B3ekq3!)F!KdH
+
+5kB-k%"Z3!j9#A6[%ANiU+`#Xcd()QX"%RS@*(m![-p2U4-R-4C)DB@cSff#lm0%
+
+p*0Ec%,))9dE"aEbVZ6`HAF$S1p1@Vk34e2k23i+9H48XLPi3q#PaN4L+KTMbcH6
+
+`-`h6Hdr0V$fF$ZjZ'c!JmhJc'id6T'1-Ah$b&m*LU+KKjY84iV*jYc00LTAN)Q%
+
+U%km5l*!!)JaDJ'h(0@)I(rE@bllD%"ip$+%2F+[6UqdXEC2#5Ck6*mN6RGG"krP
+
+ZYhH5S8&*D)LFGc[Z'9XmFVB%-+hhfpdIT4E*X*!!9UM4ZH0CX*PFf8eH9EGN*A3
+
+erp9`Ck9Kdj2p))c*%5ZI--Fq*,%APr1,QjY5)S6edbj9I2K$dfKK@bIP!Y2m$8L
+
+"9)09KFD&F@C6q)VhCl"Jhm(`mY%QiahC*edd[0*h1hB$-Yj![XMRq$D8hmNGa"Z
+
+(1XLCQ[F0Pr!q+#FZ"A6P33T2%&J0*`46cb($)5j$8$M%j!X+d`qFf-4'Uami*GQ
+
+PKDDJBfBBjFc'91(qfkAaj3,!c8*d`!*J-p#Fc8FVp,!!-eKK1*am2H+`mQp))%X
+
+dd@%fhr6NrS!X`2PaHb"0"K(jkX"Z,C*Urd"Y["9fq2Y*#-m5r'IEd3L!qc!%dC6
+
+[XK`4T0)@8r!*T4H*[i+qh-I!mED-E$c(Mr*1k#!X`fh$iMR)0$LAlC&8N8IMaH%
+
+M3YLlX!,6HLb9dIF!)`JFDj8h3-mH(X'Qp$NPdSB*)R9dkCY$j%AY*5`fB(6G,hI
+
+i'$-6PhQK6JQ!mAKr610JQ4-(&Z-%XGl&59,3k*-j$Q-lPMS3HIYjUeHR2mk4hk+
+
+qiNIk"U0,5JLq6BFbG+2,8&EH4El&*G%aM9IdfeAl`2kG2CNj$!%!@$p15C!!j'h
+
+YK*-``B(KM#+a3lBd(-cK!TKm(h56R[lcQ[$KIQJ+fApi232Ma!6r+3FB1*l[aA6
+
+D((B(P1)1r2LI&a,'6+-"rbAj6RRUF'U([`4qER)V2U30)&$J%l,c)%3!8epNIDh
+
+Q%6(f[2+h0QH!CYR#NQm6V'$DLhZ[qmd'A8CBfN&0ZF,iU%`9!&3-#--mYS9R`pX
+
+QDHEY6[(+phFfAbk0iR#aBcQA8U4Zl-)-[cGNF9TSb0RfX"MKII$K"BE@KKE%(@%
+
+k`JL4Mh$qda4ilk0bNTLLE5j'!0+"p11N,2U$0i9kPF4P-9L%&6cd)C[FHMJ$YPV
+
+j$+$L0*QPdjjhPI%N$(N)r0B+i#hhB%*'ULL0hRJ(mYMVAEV[c2,ZT3MYS$*+903
+
+BB&Ql'6J1pa8+$+QQF9S6KU3V4-!Vi"[E"#kJf0`9*`,)Fdb6MYfEF)MF$6"fQZ5
+
+RX*%bDrJFFX*`B@K*$qI5@NNe4bpE6pZEB@5'XC!!AKDZKkSV+alc9@THq3)d&*r
+
+(6134pbA[%cTqEa$-S%R4U[1!66JiB,P2JFDL3Br#i885`4dIbpP*X6H50CP9BI3
+
+Khj2CC6I''X@1-DUS)Ai,Z3Plm*R)ZDfJ$Q#F`P)52@F%hAN*02Vl33'NENiAqR#
+
+15)K5LCcNm%LDbAC"5%iZ,`JZZJGXbF'5)$,XJ%Kl0cMbaaQZ"f-I`$V`mc#@$JS
+
+2["103%&[f%HLiYY1ahaPGSSVPpIIfi"%-5bLMIf!5H`dch8$CKIXe1NeQhq%`Ii
+
+cm2"l#J[E4m$h0N!ZMVq&G@3qR'9aVDNHd)prTAlc6ChH!"P"-X,"#&3Q"r'fr'm
+
+Fj+pAJhad0mJT8H@I-%GFU6+"J%Llb98%rbl[ZT(D1iTDJ5KFY4S2dQLAQk#1&%Y
+
+E5d`fi`%p"b+A'Nf%iNK,RFA4)!-YEYJFkY5JI'X5LLH%-MZU(H)5-'F(2je3cQm
+
+aXLIYZ622f&hE9Q%&Q21GLD'V51*Gd-m,YH1ZbPTS3cj,DCJTFSCLCeHf"Nj"88X
+
+KacL8l))I0mNe3SQQr!j,@M58aQ+aaN'rhNpeRT5Ma)!k15mp0Kfhe$IGVk%YI8E
+
+a,3ZX(RCY%4N-#Rc-l@Paq-!EfeHQKXMV%9m'&jU9!66&FEY"VF%"64D`6`Y[U'N
+
+Vk!T%'+*A9r1Ybf,9c5#)RFTH'D4C%T!!b4%[`U3X"@0ZJfL5&`"R)r4hiiN![TZ
+
+XmdMilIeJ`C%-MK,45,*Xb4',Hjb`UTl'd$J2L#NIf#r0R[@ei9YfleBrJBdpCDZ
+
+fj91PK'@*'*m#ij%GaZ!8Ued%Q01i-*L-G3BmP`-@FSDF*DYM-2LFBV1#ThN(CMV
+
+QL&dNM-,JUF8218*dS2$k2ZH3!)rLE+I)8m$[T#[`frN8+9Q8Md#C2Jd*&TSLYi1
+
+3!"`F+I1'pX&!)0!I6YMbcbhih9Rq,[Da#KRUSJ[*Eq5cd0*@DiKN#ejfZ2C,%`j
+
+1([`ri9H$+C&QEEe3@N[P#Qfjr4jLb0k"f[&SZ-&a"GZCmZ,N%)E$6m"9LQr`5(J
+
+mKh$MedhJ@#k`d@[l[G%3`LPI@Kq4`d0i$1f)%+&()4JAa1qR*m1EM4d"ZL#-l[(
+
+3(S,,XG&X-cm*q2%'aXPRC+eSNpI)ilcH!$@NZk#pP[I`a9r82[rLbjrpA"fZDBi
+
+4STNE3V8dAUF9ke%i"M'*Ghh0A*lF3j!!Kr"L'4jb8D"DYA6k,Cf4C'H(NS"Ulq8
+
+Md@BM!LaF"'pY2i9"4TS6T"9Gr3imBQG#I'X+1&$1p&IBm,`lJR'&e&#qJ"d+9c&
+
+)J"-'-M16L'EUQ9B9qf,lU3$IKS"E4K([3SF8GP*qpYDY`Ae,43$5h(4R,J%,4,Z
+
+bX'$rS'i#f,+A0qQ!eL)DAi,2pQ3#D-D82NSmS+h4KbjRKcq,B*m)BZ+#ZQ0)rYP
+
+qAF&*`eJlR"e@F4[BF3JE,6)KGD`5q,EZ)c(d%BBJl(-M20-EF(CFYC!!1i2[q*Y
+
+bBm+2S5JU*+5*DF6&Y!9T'TdKA%Ud,M@"4f3$M"S!Z29VT0$NB%@%V'6iK4i6a*(
+
+H,&H5ei50AQ9cZTDQSq%E0ibMMY@$aC0i)5YjlBXhm(6hj#V(kpmLCiriKMr5(G$
+
+IZSfd2QD88CL"h&-A%IF!+aQ*k6j"Z&!*FRa,Z0+'i6Y-*F&Q")acKm-lLjF8i!Y
+
+Nm"RraVD`9%h12)Y$RD4q"YN0(MZUGFRYdj@e$VBVi3#4Ji5PG!'!`G,eiM!&45T
+
+L+X!B!(SE0TR"G0,blXkSBd63c0i`BUY2(F@`pRP`P8,1dhKde5"Q,#*Q)'[%'BB
+
+R5k&J)TA!$p"-c"4#qUIKBT!!`PA#"G@B))m54@a+c(&jh-1Y$J)a!"d36P)5UiN
+
+iM[Z6'9Q!!lC55&RIMb$e%+iC%b5j@$L"3ZK`,dc&fF!0lY4Xq1-%X[0K1@L)iqB
+
+Y196J#8jmX"mT1Def*Z9hJPS,9l6cN!$EH5R,lGQe*PBbITaT6,(&50QVD$9FCBY
+
+XU-f#B$PjD4%-KLrb!rM2ZJD%Q+f5QCSCqrB3hdThbPeE5bcq&(BFRK%*%M6*![Z
+
+1aXP3#0GHDBN2%CAQL&Si&N*9f)&,PR0"Fd$L+k)3JQSSc-KbHRSF)0JG)12JPd`
+
+G)1ZRQ`*6bI[i@354)JLaZ(96e9ZfD6YQ!JQ2&Jb#0M-RPMRZ6X&Y!UlLE22UDr+
+
+iK$kj2($4E+jBC+3p'L*ICdlpdBP'YN(6kdh(3F%-jp@P"ZB'Q`PD9[b"d%XMbBS
+
+)kPaYKULVk52h!k!8q0H[bddlG-4B9!qHcVG*pNp+3)HGi550*!1b3mb&0$i-$$Y
+
+HB[Yi%FqaRD%6)6Ab`N$F`k@d`U)LRLXd)M6$dF(F@LZC%`qJ#(GK560bUdX3`2#
+
+A[qSE(DG`C-R`AFm10YH1!J6#X%m1kC84`,JV'NEcTGFa[%1cj4!%Q5J`ZbSjj2J
+
+#-%Si1%S+f#%[hl4XS$%3pqc69V`'J#KFGZI*0!BkBQeVc@j0HLG*kh"pYG@"q!,
+
+T4+-Y92(28484iKU[#S#9*p@CrPSc@$)36QB($VDlM`M50pQiecDLmBDP)*8f-R[
+
+SM*+EKZ4H%BAP"QfRBN'LacId6,L'Qep6$IN-*"`TGi2*9RGLXSGXLc(5F4m3KNf
+
+2MI*"!&eriABiZiDk1VYp4QX-S5dN$@`&1MheLfkp-&Fl3NB(kke(DPQkiCD`D9l
+
+1@N[3kj'N'eQG!GUfpm5HYbR&'jb11*cm6Pb*dcMiF9*2`MF,J%H3!"b&aC!!,a"
+
+E3Y)+D!%cN!$)mr6i'Y'E5Eep`,)4iZ`j(X%0k1#jaH+9F"-d)%@-JTS@lM6Z$p-
+
+@'0%h85CX1SMYA5C#$bU$rGlKcqa`hZ4JN!!KkPH5U*p!(4"3[1Nq`PFKf`('i1M
+
+-qC,)")iF(6hpG[JUF4E#$F1G$#Ncb6NMlRN+L9++[1PmFRQ$c2VQck`@BL%T4IQ
+
+qd3jTp*I3k0BX+IG!9j!!!iI&E1ZV-+LqNMi-[Kk&cK+cE8,Zlh6+4jKfe%PM(!K
+
+NJr9%85L)p,*!'+XckQUCN!#1lK-SRC&C-KQlS4JV2&1TCf*RBER416m'Cr,UPTj
+
+dZL-Sr9!$S(0D8AFi*ppEC2b%+BH-[82E8L*L',G5B[Mk&ZjbmEU+CJ',af)E2jd
+
+%"qYkd"Y-9I&N2HD)T-@lkMZaPEpPjrm3'6&&#!&3pfXV1`C8qmX"#'MXa)%FXh-
+
+%[[-DPSL%cEEl*'HA03*EMjJKdXCCbr!0iF(AFp'R6#aX'$RZ9ekChKmFfKF4[k8
+
+RhdIqf1RP2aKkU"B38-lbAqIdkX-AqZXe#K6"r#Ibe06`UM"pc@`HH%6U6[kS#)5
+
+)J5)SLb6*8h4@rSNT0prick0"(6kZ3h2bH,K'DX4-IJfK!FQf%GJ"`[Ei%Q%Y4rR
+
+66*qp5AEhpjVQr@j`rFYP2AeSA"Jaib8#ka3&i32qJ0r20++(I0[DZlb#m6cM',j
+
+qh3pMjHp39U!fSdmfLf(r!AK'`2TA#589r`j1pM"3`jr5Y6,j*F0eVBFj6F(4pPG
+
+r5Q&X5058-e$0i5H`&ribe+[PEcLF25aP[%FkLS!(2+)&[E%ScQSV*kF3l"$K'lj
+
+$@*53!(f2"H`5X129N!#Bk$m32kG-"mX$"$jEpkKXD-+F+q`V*d"Dj4lbLUriCPF
+
+'rdHS@#B`mF-KM$VQ8(`q&qleBHVi,V`kCf(P8#)&TPh)[F2!kZbV@L`bBA+MP@l
+
+BJk%UL'SjZ,lah*!!UVJ'*X4ilXU!f`P[1,!"3VhG+Dr5L%S8LGJcEi@ZS42!E-%
+
+$h8ZkPT4PZ"laLiK"ai(F49!$22cQJRP-kG,JpZ4YJl%A-pZYJNB5B8'3!'6ZXA9
+
+Ir`(FH6lmKepX8Zc#T4)TH,JRk0p@EZXXY`Q`I[A5-Dki)F$T%I,pX"$P9HPLaP2
+
+f26DF%6LH`)%013NVm*'hAqk-"T0#rFLh"$DeL@JaN!$E@8q(PEDTb,*lJVI(NXE
+
+E4TlPjCXp&)@)EGrD&VYRBR1Y5-k'Aq@cp-1'*h)cdp#!!aNBNX9ZEBV0-jVleTE
+
+B1928m!0EcUIPLaJ1Ahb$f59&#pm$@(a@*Rc,CD4CYR1RkF8N$ar!i8laR)2qPVq
+
+p'#T[k3M!MB+D,2hc,j!!&PIp-"c$E#43(lk%amSh3[hVr@k$&154LVi!-U!rja"
+
+GPAr$6$PhlH68BC*d4l3AG@6Y2"UrV#GR%%TrK(c3brb@G[&X'IrVaRcUb0E"MG!
+
+56["dLXQlCXmlkFUTIc2fBil(X,)KHXGd6V[Ba[LLERIf'QBDap#q@dGeL(2523b
+
+YjUEC-Hme&c"`jHMV0[,qFSY(*pJJBI6FT(d*X"*ZP6j"#"hV#5C3-GCYRJpXR3B
+
+)bM3b2`6l)j!!!`&YPKD[p&VQXE$E2k!BC4GG`-h[KB"P(+q["42S(+H"Y,1CTMJ
+
+f)X#$HDICN!!0"ijHp*ai5a3G*k"-S6J!eAL3!))0pU3(MZP`JfaQ[d-+d#4T[(A
+
+d,Yk2kLRdr-`dM426F"D(BNr5[&JpTRdJ+[*LmN[`@ca*miaVY6#hAl5ChU'HJ5#
+
+88qM5!dUlKmY#DkC9d@dMN!!mLRL&DiC$p9QZEhKj'X$l-#pF2%3c'#m'bXVqP&0
+
+0cm1Kq$#k`@GdLh+[$p3eajIc8f5ah$SlSrhK8bi`eaS2Y'&ZRaGIj9,Kj2Q!S3Z
+
+G2``![iA!MH[X6`LS!Bi"F0ESqa*NqP,HE[pe4IjpP16TISJd2JH3!,4!a"'0QYr
+
+XaIj5&[KU['1JkmX0Y(flrHq`@dIa8J2NGA3!'EP9NImIKM%%1aMm!BCa19mLFAl
+
+p-JB`jVQZm"%TB5m9J#,#i-X-N!$S#'36L+4Z5K0F8Gm&rkjXR@2NAr#MH'30rdM
+
+f$'I@d5!E"Y!'@HURL@+E+Cj3iCS$+YZ'hf+3!)A&$f6d'25fXm[8IqHE!A[HP00
+
+A`TQ23d'G6G+0fKG4mDD6Ef+Hh5K8Zkqeb[Yb6JNIq8lbD)*+EP'Uj5$T,AJ@V$2
+
+9DL55e0h`9HZqKqS`q"9$iDjEcCFr#MkJM'MX3lFq44qB*jqa"kP*eqaA5Z&U%rj
+
+k`+bfY1!&4C%KLCmaDMN3%J'3!%1*MK3m,damUHrmZ-hMBAIQC1QM"*d+9JjSl%%
+
+%,rbU*eMaIDBMJJTa5GCEe"NV+LD%hk0%cY!5+5*,m-@N#QB+Ek-AKFAq9GrfNH'
+
+[KIpfXle"LC+-ZGih#h5XVc0SSA*RX&BQJ8#ICNJ%c@Kkh[`Gm2@KEpc+C*61j(X
+
+)9$6Q1C5Gl-2"FUc&&(9#RJ&mJ9INf-U-2Y-U2-N#!ea1TQA#e'6l,!a@R1PHTX*
+
+4&3P6)iLL1JFSQA3DM,+j3Q4La5B%eZ0b'ejl`9pFiE1pElBG'!V64-GN"b(R%Fc
+
+c'jMTi+&"pV@+cC8j*I1TNKJ)CjYHcA3#eEMH3h6SH45-UQbQCT9MS"NYrJ%66V)
+
+6[PdbHJHQDrFpUCI[8EkUbQ8`K)CT1f48FC--4@"1![!N9&QqKCh83V&%jLkSrJM
+
+b#11'P`@HbMdQKaqbdThb52qB`L4bIA"3d!UYS"'Q6Kj-B#YjM)!94`#&E8HQ#ZG
+
+4bk"rSTc6J(!)&N[@Gi!U*P8V*XL8mdE8`Jb86i8&JQSG5-RI1D)'ceTR65Lr*eJ
+
+Dj"(#+Xm!3YCh4ef+adXY$[VYpNprA,0hF#H6lNjA[))rqI(P*,HaMiFBG#*Z)a5
+
+aS&cd5dAqaIp!KZrBe3!4Aj'V%5[!MHj&5'L-%Cd!NH%3b"@k`k&Ae%0b6I!C[a`
+
+#B,LYCa#M2Aq*,%-#(B'&TVS*@AjlVKeGP[Gk[HmGdJ(FHFY'idEAImd6,h#kG9H
+
+e-VZ$Xe5GN!"P13X)DmrXcBYL"q61%PRV*6R1R"dD)Q%B!6@C%`$#)aR$4JFj3!H
+
+r(If5D2Q6kTTG0SMTEN%VF*,48MkUq0GYTlb3!0p+'@,19%mBHk0)H&iCKTb8Tr@
+
+Pm$MDU6`hJ[G,LCaD5MdQ$D8EYTJP2LBjjM+k*F#"K,#iP`8FZQEjliGH1hM*`k(
+
+6$EqmmdX)S4Q2j2HRl[S+GHXDBRAVkf2jrDfhBrRZe[8B4DrVVYQbQSB2jrl+Miq
+
+-(@RNr1fY3Lr2GDU!a(-EJ')q@e*,1#ac)2lfai%XS@m'NMXb*p+2IaLTp2608*H
+
+lMPm-T4pr2e5$P!cXQ%!'I24SfNJb'PhqqLLQVSrLehq9rrlP0JaJSG#ZCJD+3Z!
+
+0UG`Z9,e8!6C#e0DQ)iU[99%b2ViXa2CNM0!EMa+D5[h9ClC(8RQ@`V6ZFq3mi)Z
+
+'CeS(2IK6J%P(26JLjBXZ(YHjk!R)NBP(,cC6@'VbX1K#qi#+mS#+6&$'ChibfAF
+
+pEd03C2p&BE,HXN-Z(aa&bmE01p!q)3--V%,INLCeDi8L5BEB!HJVB#mS'!4M2TY
+
+52D+J[r"Bq&N2ic"([p`$BkD4i3Q-QEHN2DTPS860Y#MaSXiHR!$,(*Sj%!r#)D+
+
+VdGTm1jM89hJlP$8EqR,ZSliG*Q-&ae-FJ(@L6-`EbY3XmHCi22f)bmCGBa$&`DG
+
+Z4+-i$HTD2$2SQ5j'"jCP-mdPl'2daGXQ'Cb!(ceNa0qmGI[0"PVp0IYq-3h+kIK
+
+mLNKf`@YD&VkpKe`BTpY&a1U*DQQfD6R(XSpYabLZL$JJCDi)!4PXad6NdhQN-N0
+
+[k+e"+dI&ZE@NXU+#!bL15E9V-S$-$J0q1$EN,4JX!`-S5YT#-D+E$[FmE$%f*r)
+
+$HNh8fA4p&kI@M[meG368&*A2FjB8[XYIh41CcA@4XlHQG+fY)rHKi"6PC&GJ`1G
+
+XLQ#dJ,S`5KPP3,0bFCCRRj&c1)rheG4,3S5eGZaF%bM&JlP!amXHP-(B0Ye@amU
+
+J%X%'mAN5rT68iMT1PReTrlMFECMZ!rRd9b[f+C1F*Cec5f0EK#i[c@Pjehl[,,p
+
+RSN[R)ClZbQf-G-a6i8AU%i0M,Nejaf0Z%a5FASB"+VkeiJ+"'U0jli[aBIcjX)'
+
+S)YclkN,U`bq2"0[!DIcKB$)5R4aiH[2EMBr,2C`2+%$@UG0I,IHpr[,fipFrkM(
+
+CTR%ceKL4b%XE[RK,I[(9H2e`!GcfqLZa*528j*D`If'9"mGdd#4RL&NNp6U+KjY
+
+Ahb(dVL*mFE*90L)Map6m%G&KGr,!e@0`fXVT"*H)P8DXQ!5#+Gpj5%5,S%F`Bl4
+
+CFRkRN!$C("D-mH6TQBSXAqbpH2hVrAH8cddjpSC9bR--erL3!+T2,Fqe"hL[)`j
+
+lSl#RLKfX(%rR5#eK2B5c,#XUTJ%Eci2jC`hSP+*(ZSQ[PUbch+D51EYapj3UEH)
+
+!rZ13!"'F4T!!l`PA2*CMCVEbd,eA@4)pYlY,QBGb)SlG+F0)hQrA)bHlhj(eC#,
+
+2hj'!$p2EQ%MQ$p98h0T`qEh!Q,h@,S`4NP*0c8%9iA%N6I84MZ*1DeMQ5,"Y+jN
+
+RBMbe3*j+r[EbLQ[TkBN+bDfHPY0JC8bq(5(HJ9e@N!"p$G+$6"3RjpDHEc3TKZD
+
+(e1!13$mY['fZGY!50rZ`)ENBp-!jj,YTS99e11Zl+Alp,C%HmafM0&*bmc4bY3`
+
+e"rI&-N2l($C,F5rbNfV-d[`ckiQP6UK3e52JNLeBfpbl9X#"Bd36SA(Jb"aCE[%
+
+1S-[0H6b91SldPDc$'JakYE'3!#D68-!mm2i4fJT$m0+J6cc1MG5B0DII5mN!8S@
+
+(@Ka#,hFQmiU1G1$q(PE`SH2mh`T@)rek"DZ98C2i!(9i@'4Z4Id#4BM9VRf9J@A
+
+i9CUS8e9PL'Y,`RSJ-$VchI"(B0JKd)9E%+8%d+Khjj`TDkBC-A)#r@I)VV1B(UZ
+
+V30L*d'Qh%H!ajbaCYAD)J`"da(ZRLcUKX'Cr62ep1dGBj[HjVm`q,)aB98*Zb2+
+
+almJr8Yh4ZhQH2AEVK(-i1biM0@c+QZ"ZKK`G&PpUDY0D(13MQ-$p1ebN608d&-Y
+
+K868lHTaB&Xl`8ldhEpYcD,IR#blJC6$HS!iHc!-b[A2b&DBDa64XVFrELaa4P`-
+
+5bflU29Xk8N,C4C`VqSJTT8dR`bQbZPELG%i%c$PK5eD%VM"ilN!PUN1J#@0j33C
+
+faiiRq'pr@CKB!F9D3!LCrEiYRRDkKFFrCTq$mZ(f)62r3"kS+qQ!JE9L-0R6$0M
+
+*"NT4CfTX1(ZLD8#`GH6AUiadYKcNbRbdF%cTUfJdS3)%f&0E5j68j$D`JA43[TJ
+
+8RHEBi`$lLTQLPJPNr@$[&5"6Yk-3Gki"LV(RSeq#-C1Ub6R")J6J%&$LJQNl91$
+
+[NTL8!cKkEl31CK1L#A@8mTTKbr#0mL93N5L[f3Y3C+06ADBXDUG8hR#&[NF@BfM
+
+i0L`!N@Z'&$K@aL"'@Q1C&93p"XlmdeD6NA+l1+N-bKIaA!A3[lPD4CB(AJC8qrj
+
+leUpV,BG2Cj@AiC80hJaTY2B+b9VG1Rj%r))lK63aT,e!Vaj5pDleHq6@@e9jBId
+
+TP!#rL4"HPAZF`RA0,b*DjTR(5VQ@Pdc(2qa3P'p[hE'2Z$rD(94SLA*(0&c,MJK
+
+`KrbLP#pXiHN'p5b2N!!8cH8U6(QMmK@e2[5KkSM5,kRpK!MErS'MN!#T%m33'Ja
+
+@NEX"ZEC)"qTTq$88'@1[#V2AhIa,3I325(8d9'-,f#4HLciS$ZYd8a0)&HL$pS!
+
++CmXAJcJUl"*hJ*'43(Q!"-TGP%h,1"TD@R,q([!-6,P&Hm6rc*hmpL3rXPUr1mP
+
+8S&!MXjeNYGH`hS2e`*hEBPqPS((p5UjmL1i'"-MT5&@S)L)lDqY9QTCb4[B$8Kj
+
+",i&9KjqdIfp8hK5Y@6hdFe5DKdMfT+Dp&808YlB0D(dCN`$hIaA3-#AdCa@@XjY
+
+5*2%UT,p`51HCBY(DeLaI&!&j`#`8C6SYQc,PQKc[V23Tl"HhC50'!'"HKmVir1V
+
+HhqPh1VcCVdb1VE3THSaLN!"d"PVLD(k)C5m5a#5f"JA,p(YNc%[NUei&+G#hkmN
+
+U&&NFB!M&6C@bp8$!e5c("k0#Dak)hd0p`"`Jk&X'TD&(pHQmeSBl*+N4lmkFk2l
+
+)+Le9pV1*8l&MF'R*h9+eI33$@'NFcNQj"NV5mhI[f0Y4Gi#Ar$&Eb9!MN3T&),Y
+
+(QVU'$M(ZZT*kCpAP9jA"l@MZI'2kE2$2`eSfLZcZb$-dR-ZH8&R2#dZm$mQra6i
+
+2&6#S[E(0`Y,D0LJrJI*-ba#A#5UVimX#"f($52TKjiT[VkVL%-qFa)FKPR9qNYE
+
+Qh0[SiD$ZJ9CJKRHL0dPl*2NbaRfE-j3e6I66@lj9"GXTp18jYYrqkHbNQHUN*`k
+
+#UP-R2M3+86"Il+4L`&Y2FdE[pc[%6656Elqi8J3ebk#MTp*(%G,e+IDS"Kc#FV#
+
+'fh1ZDV"6SI#$i0'Mfq'3!(X2Q)Ff496Fcl(ZfEBi"H-`hU$""FR9Bq`#9Q-hV5S
+
+FD1-Tlb[A,rGVHAiV0aXIh6bdMk$#KL%aDN#b&Lh+rj`S[!T9D@BV(cL$X9bV(&c
+
+%4HULbaVQL9S)bK*[dSilMPL&aRjm*0ap+kkA-pcRlPT3!lK,+C!!T!SC'X%F8NC
+
+3YQ[hPC!!Tm+cL3EZG'TRV`Q&HYK*lL&6H$@KC(FLYM0@jTiG,h40S$3eb'6[fQE
+
+4#+8XB,3L$i9XUa4Z#!rJV@`PNCTP1qLKq!QZN!"1M`)5mPk4)&LS,rCG$e9SHh(
+
+FZ*($P+8REV$G#iFi!&G&Xhf8P!%5)&f!![3GV*KhPNfeC0c"hE3ZJ5l(Dr,'r%U
+
+Me%K#jIG)k"K+Cd3I*aFhSGLY09YGr-J!mfmJVTr"l'[Y$6l6*CAi"L[20MIAS+N
+
+#F*4FSIhfFJ'Z)0225*3L8LQ#2&2V1+j#4GA[KYNddDaKLQp1-AAQGV!HJUIR`SN
+
+8KST%Qb+bPmF6KZK`VbDZXQ)RKe#XD+5M8-I*XM'0VXL-@9%$8Rc9f+-+4d85rUE
+
+GeDS(8+9HHT'j-Pf+Uk5PkKkpIebF6B)a+b+G+U6P55BHb(r)UMf4Jj3JhmhHL&"
+
+V6[bfAiZ@S**"'h0PheX%DSD0SkPVh%#2aB#md-H)k&*XLdrCYX&ZAmj"X%29$',
+
+B@PCr'LU*8G9S&9q8LY-U'0A%5T1-*LShM[k-)&0Ap4%R)J"jDD9*!9%(1"KTaV*
+
+0U6,Jm+SR#R2,+`Re[d##&YN``4edeT!!S+0F3S*d,5baYl!+5"MD"2d0)KJ!qYk
+
+bA($%KdK(mlY98(BS%"4PBJFBd3eGXY&-16@m&p@`qLiSYd8VKV$J0-+XYSHXi`1
+
+5ISHbL&6hT*i*V`31iNHh-Pk9Z)[5Q0(SIGPD*T-p6c3+2A,C`p9kd*0RUcrUB$&
+
+phY@)&AA1EMe6J8e181R@dV5UA-m*0GG1+p,S99FjAN6#K60&SECfX@i9#iaq2d0
+
+21F[#I*0%(Q$@&bD@M+*N`jcbiECk25ma3GhBlhm(hLF[%jqiLJJf'&h%*Nd@BQ4
+
+EDY@F*&FHpDIL[6j(G)#P5a6*[`jla*Hf2Gmb(FBcYlQmjELr$Pfr[HX"kpTerhr
+
+R#2RXQ"Kc4Eql48GCpjC9kl&EZ5Kd3&,p5Aa'+c[4m#if)'0&6GfdTE5p1`!B6i@
+
+FH0bX68*L[+Y,V&Em@&,A6+J*[cMN*pa-hX'RREU'UMrpYQq53`8(lVrcbKIiNIQ
+
+fQkTLAp`i$"e6'q'A%9cjcCpU1(13!0+AH0`jL0P901Ze[%F&X2qXkl`E"f05!)G
+
+fUF19KAN&a#4YZ3[e2',ia!GBLR43%&8`)%H8T1BdVZqKjYIhD-05LQcK%3("NPX
+
+P+T5r(DU"j4$NN!"i!lZfYVLZU*`1MiJBS&bVrN*$KNS[c"BlUFkcTqM&+(6LKQ,
+
+mR2'M%ap(kfDTJ&'PRXLLJ!KQUPK+V25#&f8E-kX`A(CQVKp$Z%kI4,K,ZCFZ!,p
+
+I1#,mV$bFU9X133pdmpQVXK)H@ZqSBXc5-J@3!&'6,B!X!RY`hd0,R&CHCP15C!a
+
+aM#!9,XUAHEbNk1%il+L[+)9@1bI'GPPBcZ@mY6[XbFaGfJN@k6P-FTr5lc',$B,
+
+qbpGdLq`(l&34E4-bqLjkBHJ[j62)RJaHhRb'fP9XeeqJ@5'eCBJN*q8YaGFHYG,
+
+I!eT9fGEi+f5S"V0bTX"TN!$1BrMrUA#b2Uh%RZUUZ%dc&#L'INHfMmqVFb*6bQM
+
+%D0LY))`1Te`*)ETEh[%!h'Q`iDTJSl8V9bq@I@p,9Gb*@P&JL8%&1*@DZ%Br8!l
+
+#JVXUNkbYBf%rTM)LD#0be44'XiRNYF'pU`KkC(5qBadV$@4d)k!BZ2XrS(NJ+bh
+
+3%YdEEe84'8!",48Y6%&,EmehJ6([1fD2m1-8rr+4Li3prh3"b4FXmFRI2R43r!R
+
+IAEAaN!$*edd$,3KL)e5pHQrCL'q"2)-1SE!kdV&Qr`!M2iE1YH)1"(`6V-BRq%d
+
+[,aY&eK`TL!0phk28*jXrEHA4)E3Qi&j`+q&Pq`-PcT!!cJSpfTfeeMV4b-lAEEr
+
+'1YC6[XTSpC05+dhKP6B,(ZUed+L[#9Ga01(T%krh8e+JEU'3!1MBVVAQ1%(5BLd
+
+-FqAaeXC(P(JI58UY&Ld%C`l+biSq`Z(a%-Y*Ij&N[@BD@BGa&0+V4RY"aTm@3"Z
+
+M&a#89Pp'*fq')1$'XM3BdNJ+4pd3&1')GYI*M3BfTE[8#+f84)1`Pa,X*LafGQ2
+
+fdqNpR0KLIP0E%FZdN!$6,,(8lb'(4NX34IU9a4d#TaT65Z#1T4U,rrRLG69Y`AA
+
+pBQcrY-h3UYbk"!KP"k2,5@%ChJ$9qQM)e`C83+JVB2IYH!eeIp%2Pk1%Bq,aK+e
+
+bf)kH*[SKEiPl&4$K*c#lmJZc38miU)'EI1`kU&G,$0f@pM`pc5mjamm4-),XC8$
+
+10KYT$a&pNqA43T!!mGNX$kUjP(86MLd4UHLM*f["NH[F$'1FaKS0RXTP3+5[ar*
+
++mef'A&fe%CEa"!BZbNTY%`lJb3ZG$L()(lS19EYa1[pGHcSi#dmC*bNZ*HFmCLL
+
+U29K9GP!#N!"8H8)*l`lEq#SUIEe1EU%`4BhpEJq3!&"%IJR1%M9@jQV(me0j(fq
+
+G)@rj"[+E4,6V@LkllHp1jc+5-M%V#Jb5CVJ21[1dACU[A92'm3IINkHh(3H`frF
+
+aDlP@Sl'DI&bXf)V5&G'*3NJhKAYhb8JZ`dE46F+ME#Ic3jfm*G%S@Kd2CASc9P`
+
+iNUUe8Y4XY`hH3`Db0"d2m4`5842Ya!q`KKhC"6rI,6!m8)!F2)15,YZ!b[DC6HD
+
+!e'cVSmlBpNHjPl&ML*PRQ[8aYFE`@NBhd9&9Pa3A(8R9`h6@XpAY6FS*FK`S"$r
+
+J3&RN[-MNiAbHf1#%@H)NUT+B&63%T3(T6qrk@Z%alM4XUEJVYmk8TSTlJPh+M11
+
+Z9TPfReAe!e6XF#RQMrFE+fb4fXF4jEET9c213Ij(4)TbMS8+c3B!hLB6BYCa5*B
+
+c20dN0Kk**iL&8jE##)cGh%[R8f9#(Bq!ACJYqU1EJV+M@'#KmDbN3-CmhGfAJX1
+
+,`aYb%rVPfEAlTl-ldXJS5bf[m(P1r2))Td#(ISEGM0'[m(P&(XdM@G3D,0L,R*p
+
+0daT$4m)2d-V1m@HhmpQm[#U!KMi4i3qh$S!VCp,-L-G$5)qbG$aaI-BPYqfAIpE
+
+T,"&+9SG1c8H"1pP39)'8S8$%(TMmTKMic&@bJKI*ME#RT`0hBjBmZ9U+SA08l!d
+
+NH6dV)"c19dMS4)@#`N5JTdJiS9*#)5ch$3Zlj,##3NXIUbKB&b!I"FB"V8eUeMd
+
+&UJr4dK-d-N(83a#MqflNm5jq2I2if'ESVTl`E(%F'bfm6Zd"E%Zp@Y*Up8-3$C-
+
+mN!#Nd'V6NJ9%G++)G40jp"iF2KjrV)08pN0['Ai"K`q)C,mUI6p"RrXL)l"!iH&
+
+fPp@EAqLYF!"GNiiQ#p0Ya5V[mH*k5YhkEqHc2Z1MqmRNJpAaT"$`-S(MU6e1ej1
+
+$rY2eD-0IRNmFl",biPC#+Id'EK-hrc6'q[B`af@llG!IEh(6i+JVZiN+EhfDB4j
+
+3TD09kNC%,QaL$1)50bRIe-qZPkbE2lp9r2b9M[IPRP,G$Ap3YBfbGd0#Zh@ZL!+
+
+a6,VCc3bNj*V9-cSIR64fdr`Emm5K2rji1!1AG@M)H$M(aXrI'$TY-FF(#,2C!mN
+
+-XpelYLrSX&qm2kS"SUJ)T6XfD*B"CNJ-#ZRqBJ03pQq3!"R9$FHd!ETMAZZrEk0
+
+jIRQ5-f'j'G'8hZ-*Nr(6m(NU'*92RqD2NY")F94b$q-PSqai%Uk-L*96+QaHH2-
+
+3`FjSp3"j"MC$TA$5rNCp)B2"ac"4k4lc+G3CQ'+p%`8JG%1DMKp-iqFN44"T3rp
+
+AQ053!(%XCIUbiIVQXDmhrAX4'Plc[%A3RNK(#ZbD#&G%l2bFLqk28r55DDdGJ&-
+
+$al)1pM*48cQ3!)P2P)NPN!$'h-8Dd2l@05B0j5l#F5mmjjjN!!EN9C5!iqlpBHi
+
+ia1BrS9iUHBFa'IJ(h(2#+4A%5Q'h$VPQcq#JY0l*8D%-RJJ#VB#NPXN6-B4(F8!
+
+m2Yh0EqV"*81+)m(R`ieip('CD8qM%N6[+ZDj+heb!TFqNd4m[0KY-'LbBGc+3[V
+
+1*i3G,@UH@pe"BUXUN5L5$!1--9@40BG5a0Yihr'bHMEm*k2X5Z4R3M4lc4*0VKR
+
+ZJGAcIS#6UF6P'P1J2FNl9q!8MlGi+UVbK,JKqUXUB60L65dU1B2F))mc9ZQ'U$*
+
+-IhJ4)Bd,dBJ)rI2VJ4eX#pB#`Z@HLai!%E@*KPkd-P#3!)KSD0F8GdNbNC6+(KX
+
+ck([f@%Z3!&)k8jJID80YjN3Hm%blH52RVD`llJV(lQNl8m!G06cRaQ*200k'`TN
+
+**%fA2F)P5KNaK4k'j4H4lBDU&H+JHT&62Q1S'(N)854mmp3La!eV`-lf#Xd`rI6
+
++2R%M28$`Bj*IJQehe0EYikTl$YNb&,N"Nf"""*!!CPT@4IS%CqVf)'4BF(dMp3N
+
+6I2!+j!(Z-B6RKN+-i0$-dE6D$)Sb$dI8m#Pl)(JmJaiTf%@lJhYK"M3V2%FrAIq
+
+N*bjqrfdKj,bUr+1DQ#jK-$FlkQ42(K$8YLID6!&a5p`NaAk%diTBCPlc1h0HrbD
+
+U$p33H68B1L##V[P*hG#-RU[[$hdQ"p@K%K%9eG@hkiH%@q%PG[ZfpM6AqU(-5fY
+
+*iJBGKLMNUM+KZUmX9P1j462YpQDfjX0"$'Jj%pj!'!K2TUfj%4'%Ti)k5!D3!#P
+
+DXDU'b$LVq@EYD4P[SHFP&%EbDU@ZBTSkJl6`"UVC(Tk1a0"#"&9BTL2)r#!m!66
+
+pXZZ4!`@e$S2l-T0@ErFQ"F!r1#5d6KDMBcj-P+d&9Q4NiNi@%09KK,Qa`6BN&GL
+
+J-R8"bYm2ZbJZFh%Ch+`U(QKhFC&-*$FieRQY@GN%rQ'AMZBXrF%L`-22r#2krHU
+
+E[j!!Md`+ib%5DXGq[YM**D[G0PdZ&0aQdbqR[adKUd!$EkC*S+FLY3T-""hZ&E8
+
+4ZGR-A+mRbC94C2hM19`2QEm"Hefd&9$Rp`JpF+3daGK@41IN[3YlHY%J5"aa6"3
+
+e*Rf)U'4p5pC&bl5%#3L%+1-#49)rF0-ch[I+cC!!'F[$XSphrCKEM)-Bi62fr['
+
+'HLENZ#d+C,EL88ICNi!AiB$f$rekYrkZVeB*qGD4fX&*88HLL$[A3d,F(e14pZk
+
+9Tbj!epXKCd6i'&i$HVb1XP$BkiPDGI[acKSq2DdqLqqfDYYVMhI)brjq#efH"ea
+
+DIl,#TPHq"4D(qdUV'2'*Y3#[S2,b-1(`6Fcd[@pR8PGeDN-VU#,2'cjfp4`AfTA
+
+@eAYGb+BD-9pK%pK"0jmGFMlVh#V90G3rINfC#4)RL*2p5`TX2S@U9l'i0e$q'Sq
+
+Ifd$ADh)Ap(4P3%9prcTr2p2`R6irXbPU0B)pqHZDL&)pKGQ$I'MBkl)D0Fm89R-
+
+R)NfH[B1QBT6SPRL"UV2H@"lEG&%@IFNc`BTd"JUliA-,JL6qFJlCXh*MK`T9YBj
+
+0[(YHcR4Se9JZ+[3#@jQiM0'`QQ[!P+[f6dhXKA9bQ@FldBCPmm5lbS5+De0qGK4
+
+YM2+'IFlHLA!FY,YqE3IH(L#Ep6&NP8S'MpiXN!$)P@EMYBNS+F#@%6VC,BV6,!G
+
+)NE43!-eL,RhL3Q$`IF""jF+c0lpb(dj"Zh6`jm08*YH1fabDP24!He9S3pH2*pF
+
+H0ah$qkl"da'#BmH%hP6"IJpM0k4%R(-IDjYJeX[(c[hH%1CbEZ0TrGR@-rVr,lJ
+
+Y6K2d2#clL,b,%2R0aU@F34-l32B2,PU8HcL8Ule[M`[am3TZH[lU6DX(N3E9+##
+
+R,bmX8R9k)FT5*Kl"!LXh3$c0mll3SPNH`T-")[H2Xm66DRKmmrZPh)&qq9rA`QQ
+
+HVZAhdl6&A(#E%,YdCkMFVGpq)4B24GbfXb(D9b"85Rf0FaP+qKR)[VL9bRKPUr'
+
+R3r$Gclp!E!YSiLpN@-[q0f('A8PQf[00!Z,6q(0GDNG3cmIEdhcA9c'XX[hml6E
+
+M'&jDX-d(d4GE[%rpm(FE9Gj1VeKrl[2P9Pm9pEAFhL9,4SXAkrhR(N4%['kL9TD
+
+09`FrpRJZ9!hQT`RHFHdZMIU"V8)'$L8,1D(YFf8"V'rh9p!rIS![8$clGG$hliZ
+
+RP*!!0Acr!l&0hrm!hlk"0ej$eJ3+E055l'Im,jYbab0a0kDZ81P"V*lN5P#&+[#
+
+@HSl@5#VlBSp`3h12Ek!GJcEjfXE@,[lJrcqJREe1[lq1heqRhppBEVKHIL0rfHr
+
+TP4F&mP3KV0-ir[l@JmliIcp3[+%8f&"0R$i(T&mTU,DafqCEakEIKCd-pVpKj[K
+
+N2IDrrTqaafSUiq5!DSMVei3X8V85F1[cLIPPepMM1KI,&3qNThFU(iMX$DM((")
+
+m)Al"HZ!CH"D+B,&$KSYiMG&c91(S("Qcp-*&&EA@q',Z,64mf[*$GB52SpTU4eN
+
+CbHi4F8RIe$kfdS@12YD$D6JITE@lk46PUb3RHB"J[b+FlS5$1966jJ%iK$qP&Km
+
+YX#*r`XFmq(Mmc()P-XGD-J(Ep0$dqE1JJAGNhaFC#K2qfVL$AXK$I9-H39Vh-jr
+
+1[A9lZqpKpl&Ypc'NVS33QfZ'lk0Qf0S1!!FZ2ZD68Dk$HM%X2iKiA$F#'JS5fk,
+
+#REDF`ES*"CT#0BbY,59VppKKR*q0XES[aI,&jZ`(#f14B+@hYE1S`ETc,F2[%)+
+
+qqd3JdCMH3j4Bd$D(908KpL96UKI&YKH!RBm*(YAl)&[Zh)NZ5@kMHefPpl$DrL+
+
+`kY8LFJ-l61m@fcb-Ebq$V)QM&eKI*r)Sp1%Z!!,Xl46+EZ8jRZD#a8L4L5J*(9c
+
+Jd,e8QPSpRFjYdj2TSR`51r-F+'qQi!I)rP%CqK08E6P24-+YYr'+IZESLhHIE6i
+
+l&[6(IbcD3ZIcUQ8JNKif4pe6$bpG,UJGDX6NqBKNr-0LK*NbkbN@j6i!MjCID`(
+
+!&3,CfaBDQX#IrBfc"Fm!4`H*Ir9&pa"-UJFkB+QQ"emECIk9`&L&p68ZV'66Y--
+
+([aN@MrhGV$pq2qcia@qQ[AcFl23pY$ripGa0dIEJp**[T-BFLemI+fT2Z#A#bkq
+
+d9bD-Y5,E%2jdE[`-4*1jVd4icNp!X9BV'm5SeBDAd5E8jR338D#XT&C%EJ3p1ID
+
+1MZrU2fd0HL[0T5mc@"PP,cVqB3C[8C02PN9"'4V+e49BM[9q`Le'T(YdMR)5G`%
+
+Qr8Im[iD4bPB!%qR'aZJ-9KeAXRdHHk,iQ5BaD!3SIIP'0%Z$a8A'FCBC1!e$DR4
+
+@*+r-c0[+9(eH9l(L2"B)+%CM88bjm-YI-$LD)VYJJ2ZV8#qJf`AG+D-YRVA#$$k
+
+DDTP(ISlPBIFpkX)M6K8*V9'6T(qR[@I9Q1fmh&hX[bV(A#@*EZK)b6AYdYFb-%[
+
+c%iK`6+)"Hr,5CSm*ZBTK(*l4AA*cCM9(HPNF5$E94''9%YD!(**pBGUkm0)8&GI
+
+dqKfIDG!Y3[DY[@-d"Aeel8bF9XNHGIji$C,A'G,db!GrRNC5JT&ELAX(fJQV`Z0
+
+Nd85@PDcjb-K*q*i6HYT[[d)Hq2Y,4hXT&1lSV&i1!$YAfN4(caprZ5P1bFpiKM)
+
+3cT!!Ej-e*E%E)!m`BB8hI%AZcRKP`KZ+U48i#M+Tj$i8kERlMj88Sj9F*RE+Mmc
+
+!cTD*i*2&0AaaXq%NqGA*$SE8ijXYb)U6"Dplec@F3kYCXMQ3!22Gl#fd`1Jf&$h
+
+Z-6p0'b([kmZPeGb88Rh2p1%C[CZE$rd"-'eRJF!Fb'ceJGXpSm#69XBbS8lpL2Z
+
+'+rJ"qCbCNcZ8A&Ac&mK`1pGiU+Nke3+*qhP64Vf%$1CqKdVU35NUIaUUN!$,MA"
+
+DJErDlFKrMK4`h*)4k1-8DfFkl'efTlV8fH`f[S#hb@9*`G4[&PL4c,NYfkY4[58
+
+,ap2)T8$-0lDi2ET#bMeD8Frb9+AY56#)B1L@`c`khF5Ul(IRP[G8cA*Y!0dI'&B
+
+QLSrJ$QLk24UMXKKmVN-%bDeDI42Q6Ica8ll%@r5cIVd,c,&GCVDmEcV[IE0$5kC
+
+Y#Jb!9%I)j)'HhD[MNAXU"&kAGVfTYR'SUqB$k[Lh3i'H`r2U4X3E8"af'Q+@'k!
+
+R1p2b0S8Gm6+bBfCbh+15MR&*X[#F9+&%[!ZPra&kEQf+c6-FfR@946-lIK"2hLa
+
+cDRj#hckHi,NIbL!KUG$-lA)&+4L5@CbGq98cCH&Lj0kGYd`a+jZTcl-0L+T1YrB
+
+Yp2B1pZr0S(#LJ4Rf4D-XH!QlBSC3lSPYfZBHE1e"8lree,0LkKr,U50q)`jL'IF
+
+IRG31B3VL9$#GD$le@*l*N!#"I(N)CJk-Z"q0P'iEDBMN0Fk(q!53!!RaE#HNP2Q
+
+,-U%"Tc0QfQqJRKHAP@)QRL*dh)i"0(j6&5lp+SJ3P!6&(Q#alX["J9[F3p9$q!'
+
+j)+JP`f"#2Z)L"q"UH)Cfp&H&'+"Xf+GDRAjJ'rPcJK`iZiQf,F4`34Q2V`YFd)k
+
+Ql3UJ$QeVfpS6)4ES&R"`V6dPKSF-JGN4#rf0,%cEc0"DA"IM)G#rpT%N'&SF'R2
+
+6!+935fN#2`qLQ$rhbKP4SAZVBj!!AAb9B,@,5"Cda@DDjKPU!*DHKhRpLCV699T
+
+bZPK59@1+EHA*S)HEDdec@F,%eKK6`raPVEj,4c4rKZ0jL!5H%q+j!#hDec5i9[N
+
+DQ0'*1NjV'rkbQBBkYj!!1Hi"q8l8F9fdFG`,Y6VZ#hh5B3Jm8FH*iIJqKdl*a86
+
+BF&B`jCd1Z55m!4dI6#!-FCRjIGG(m[%e'0*4@fjMCN'cfNX8-r0)EkZr'E2KlY+
+
+&PpJD,ScQDCpFLl"bT2%MY)e!@8890Uf'%"@e`UPBHR*HA9+'(!e(qJ"K+5k`kJ@
+
+mVIiq@J3h(CZ3!)dlR5N(S0)!jNVVU39&!j[PKTCC-,QJl)H"3#l6USM%LH&EaUk
+
+k3e*fZfT#jNiR,Q6!CXTY&81,R#kjbRS0)KfXAqFM8BK%%UZYqKIE6q"NcE,SpjK
+
+5h,!1$XZKi32rD[ir$Uj%kDm(Crd"Z)BGBlQq8M9aDhEhC9MDS!ijp1',"$D`0`$
+
+D6fj$R$6pMdr%$3`mm`Aqq*mVk'jFUc+r'ef6(`m0ZVIh$EQqD"X9&DA*JrRm44Z
+
+j&bCS33r,hE4AqkbVP,VS'$3rASA4H4mrqHd4C&Z6[pp'[[RG,RlbB4Fr4+SJI(1
+
+&3rcN+e$+"E4,$HaGcNcj-,[[L[0PY'&$b#qPKjQQY)HCIQKh+BVm'#p%iNCa*U+
+
+`),m18C(+Eb2k58eK-PPZr9ATJ$HHbJMqQ,E1G+*S2JiAAJ25F1(e,B5Li#fdcpP
+
+Q-l(D8m&ebGM9RZcU#F"bmM5)AJk08JK91iq8!Bii31,LNZr`@UKH$955pGQ(CV`
+
+VDpNQCl8fP-Q"VB0#&Gi+%V!X6Id8LRrFY&hT32q0XAZ!MPV$MeF30p02rME1X"i
+
+#M6(KfhFh8-C6HjpiH4+XTa28SE-j!NA$$L49J!2Z4l(H8M@V9CXeUq)&Uk-8d$8
+
+3a3IUeM)QSa$c,k)ajXA$(p)LRl-ki#Z+pF*@M4daT#j#eQem"Dl'F+S#C4NlFKl
+
+EYlClZ-4f+PfUMQQER[XM4QR0l[A&25HFdERc%G*hd$lYSYhcAE[c(D4&&KKDU[P
+
+K0))PN5KEGh)Z"`!5!Dkd62A8$cmp9@Q"5RB&&+"bk!'+Dd0ZBUG*i'pd2@!"94@
+
+Cq*FXqDAU#000d!Q'GN@%)mQ'9BlS"[i*Cr,iPK-G(X""5QdhQKES44GRK&k[VKN
+
+4`XU@%K$8X[J$FamM5R#J[6Ji*l#&)VF8YF1"9iL(+A()@bAm"j)K)c8bkaaN,3R
+
+ER4jFeMD@FJ1hIaN&+Z$XU1dFDqN5mk886N62cN[*H$*G'pli@L1I9kRL!XQL[Y-
+
+Ti'PNBV$31U1N,cM%Ck&hVUBcJf35U9D*kTr[%-DbiMYh(3BD[fIjij!!+KMKCG+
+
+X9SJ6SDJd%95jhE9A!68T(@kii'%GHJSrU#SJ4BR!1055aaMe@,*@A'G`2PLDp6@
+
+(+8m!FTXHBARm8$E9+(,JC0[0FrCImMZ&[[QMZ%BC$4j!**AaNpN'8`!c)HrKA#R
+
+ec3j6U*(#+im+L*)pQ`1kZI9h+%f2akP2[Mj2lq5P#3HUGj%-AAS#$bk63PHS09E
+
+QPiNXLT*'#8aDiD*IHMf0M&"fD"h8[R4Gl5q3!2+(1`PSeNYKcQHN3P8Nm,ZR*1C
+
+TDlGPmd!@ek()r%3K#3M"cGBp!KR(Dp6I[cV'ZqaHH,R#,H+S8&4940%'YFVB4AP
+
+F3+Q(-Vj*D)FJZL$h2XE6U)F9fCdCQLPk&JVZeJGJ'(*S1hX#dScX!Rld62DXq48
+
+#,)1@FrZF5F1E(hFZ*Yq4c&ZQB8"q4'UkL+Z49#`U$9cUF%4aCrq4V!iX$i1+TBC
+
+Vc%DSG"ra#EN4*E9AIJKV##[e,I0(mR8D`#mdc)l-$Nf'[QTEAHjhpd9D&6Z-k02
+
+e)Er3[8VEC4$pMdNI)%ImJ$JLk*!!Sj-cE1ZAdL`bK2jl2M'Cqp!+lp-E)EdT!l,
+
+F*m'rKm"@QAhLYfbei8b!#+%cLY#rN@QhX!0LS(4")Cf6pXaf3%9[EMSG5qh5U)U
+
+qTIkC`&)rcYTrfl0c4J!bUcf[Z2cr@9ql6+c[K1VPahMEbV&eKR`e5D#9--4lE+b
+
+(`BUj4-*jFL2pKX!JCJ)6'+QZ35E"Bf&jk%HETA*`i!Jkd3hJe4EJ2Gah"AP8d$!
+
+D2EC1,%2(bpK#le+'X"ApZMd(NlDYMD&5'CA2,B-E[&KcPFB%Nh0dkGM0l*EddU&
+
+J0"-D'+-LYkRM5VZj$YE*KiMK&N&#`jb$$)NqJp(4MCIpTCc$X#@l#CJ)Cj,99N@
+
+f9+0GY0,%dYK+Llf(Q(b&C+Tqq$083IK[f14lNm%5%BBU)N!+LCXFB9@+K)*P2dA
+
+rAqj$pYQRa!T4CU@hI3YLMG&e1L%50Q*`Nb,R0qa2R5ri6kamHd6-hIXHMD3FJSp
+
+d`+K94H)h-23#9bTGTB56Ap##fY,IJdlI4kaUYLS3mpIdjSS4PDUf0C+1Qq@%BjA
+
+R3hi"RSpa08C+m1`5DfR"&Hh+e[PC14A$aql'&Qccb[*BcJQNJ-5!+VV36&G`&lj
+
+4f$SDD8Gk#SQBUIYSYF%hcHVL["!&rcX$8me9`(69Gi8NhTqaVL8ADd[UKE,N'm+
+
+Zh"U*`J!D#1eKiii54RbkVfTcdT4VJBLYUE,XB5IS+Y5XSIcB[,FU0dDQV@K8)dI
+
+)i0&r19Xr)BC9Fj!!*M@#(U$qiP8@MTLLrUYMC"NQlm4"a$eAedERUJ&CMi%RiAk
+
+B,XEq2m*(U9Jdfl[Ha+MCDa[*)D*0FM65fD)ca5IadKQ8YA'm1TqF@*,-2lL8E%K
+
+!-N3Vd0"2+"b4bQ&l"fNFp#*BDmVq`N9P4Vh!f)2904D%XJ!KQl(,83#APkH`JQ1
+
+aKQe`!6kUZTiGkl`Y3Q3eN!$V)%jCa4E@BpqfNKHHE$+beRqecC4mM*UdmFYp*$U
+
+YEV8qE$DJ8B%ElYPY#`BpEeVU%k[%Vp`rc5VaRL2rC112iab*jXG@4H9j96%dN!"
+
+QKcRiRE*JiL%cqQKifH`B3T!!CVQ`0388$3('9"m()j*dU%EUd'UPN98eT'N%VhR
+
+X-B+20Bdb2@+r[&(2Kk8QL)e5#G@!F84V!hreRbK1Tq&Q9+@+adH2l,Xb*rJhAK9
+
+FB2GbJIl,dB`N1J@`!I"%EmKC3M)KH&cJNKm1%C5D!Vb0c*82(9)pKZ`1X,**Se`
+
+jC%8j!%kVY!@IMRS)i`cHHjLV$`5V0SekN!"Mf$mCcY2SCX)PUT)3Ddf(KQ[VYi3
+
+V@Ri%ZjK64h5iKjlXc2EE+Re3-qR,XikU+2`qZ1YQR4,F@QYi&EU[l6!i%cf02!S
+
+eDk$cB5A%8YBJ8+IK$JqKR2dRZ8#,q93m5ZAPCkXKSEL!d)C8!VX-dZdc,X1qV@h
+
+1FjN%8%a'Ebl!JPFeFeU!)K!c6i',k5)TL33IXFH3!+4B&bYj#3m'lUK,dmcTrc$
+
+(Ki#fEkE3lFdFKfa3hfc%bM0HjJGkeb2S%2($RbE3XjiJlq`k9F$lqaRLB3E,Leb
+
+4`+8+4E3j#QY4U4@*[PQpRqN!P!6S(3828+N+I@4*4GpG[2eL@T)r64H'pCGd!bl
+
+cimEHm"P0*cf,%lc+d4@ZhD,i!(5[eiFr@(kS#!%mU6VHY2NUff#65L+R#RJP9Tj
+
+TZ0d&`*eHk&#0M''amfc-YE+("8I)KKF"dF)&q$1H%EkiFGm19SXk"TDUIK8#NEZ
+
+2q6G"Hr3Cp)$C)EMp,r(iePdN"+A'RThdPh*YkLfVk"G%9NDAPf8lb5%,QFcN+(d
+
+@8l6mfHr[["69*lZlfdr@P&1h&$b)PBJ6i#K39dl*G!jE+CMB86ei+3bVi)[JaeX
+
+CE`f(4Yqe"&MDB#!FQGHU!49+4m-,-+6qBL@@%#c"8)#5iG+CP((cPhZHpEA*'Qr
+
+mIKejUTIG(R%8kQ`qr5FT4d5k$#(&XEMR"pE'FKh4Fp'00SK!(d2)`leKGRk-i54
+
+5*a+aHiTUG$P-Fc5Vd)ijiK3B0Src+`2`-mk!i!4C&Q8Jh'adZ8eh2"Q64kIqDpd
+
+%im#XXH)FNi!BPK9Y[5NhQNXZFhDa6bqf5`DkH(hcV[V0CpJ$PAU5L#%Ma)FMZDH
+
+)*KLLIhJZmSaN[@3G4A)JANKc,)@6iZr@6`iP%3`f2T!!jM('YBUmf-MFa*NNA$1
+
+(ZZ)fSr)3N!#$qhf5"TfGlEE4CK0e9P@K+-*A@PC96"*#qGGF"1[BF+*RJHNN#8N
+
+-h&Fd!F*0F&kY%6Yi!hTea4RpN5#dd"UD$(1j,C*JS&bq)B+kfEc![(E@8#rL"1l
+
+)Nfq`j[Grlkir,K[d!R(Ce(Ser"*aAA'420`+YD'aiH+XXA,TMaV[-4bLFLHc(LM
+
+(XBJRIlYZ0D(rID@'5Jp&9dqqp,3dh8GF`Lh,@089,ZYB6@I"aPa8[&kB(XZN4')
+
+h"*2&h6m!I3-KUc!M2TRYBE0"5k31Tl+FrLSSEUUm`cJMC"T9JQ[fP9GI9ai)9jk
+
+elM6*fSpBK!h'PdIdKSclDK8%+B`YT[a+9N+Z6MfZiRRCmILX9)b9-jQEeMA`qPF
+
+2)r29QhPkM$HiD2"dId2I4#N)*IDjr"KE'kSF5YejP@Le*9Yh-J&-HV!c+a#E@Te
+
+NhP8D,AaXbHqj&-Uf11r8qAZlZDP#2Ld)l*BNQTj(mlq`L*9c%ScSLjUE#H,p%'N
+
+Y'S'%16VBf#Ka#l1Hr"KlRYSQB1`TJ#AND!ZK3S26+c24YT!!D1Jl0VCh(amK(D'
+
+K`GF0A#$V"&!,1#rK-fm'`e&1)%G!IJY)+KblTiK$0m,C"%3dlf-2,MAFlHkQ9VF
+
+29V`i8JZd,0H)UmK3MAiDh!dja3bpFIq0jaJSJh20k"N(CKIP8Bj#L"PKLCS[&md
+
+@k-DmK6U9leNIFVfDr[mqFb`aKr-X+Ca9IkYE[FKBYM6Q+PCPkeNA&ML3!$iDF'h
+
+@UPId[iNEk`[*FT545VV&q$E2`GhpN!!%lddiSD$E,APj9Hc8A3GV"M&Uh$3IRP+
+
+RFlS`%bhNHT%IkaD*4-53!2ZBYGdbRN)i(-J4L"'(H`mc1X1fjXp+NrAk+[h@$AV
+
+9Kp+YT8`dd[lT+8kK')48'dH69)Ui-5MN11XFeGYqCCf,rXMCQ!j99A%rES(&3M9
+
+Fk*M%1I9-L+"DCrPAKUeFBCP[9kT6*$6+Z#(,f')&%I$XXBH1c'd#jekZecCA'dp
+
+EdF9`$,BV***dR1#aPPZ`AAl3AIb"V0b(iLdB3IB+-e0p*5r!KX2Cc6lRc$hm1iY
+
+jS(&6TQC4JK[Q9hd,mF-j22kGEpXfrVKK0qb[[jD2RVYlp(f(3"@*i1h4@hX0if[
+
+al#R#GFrlKb$pli[Gamm4XXZ2AbZH2iZ"dE0Dlr,,r(GVlm"`RFk*H[$ejB0!m3Z
+
+8)"eS&IrH`$S[-k+dNf$1bMBe+,V5lAIAmiG0,kmCar49"LHeFmY-1a!3(PR5U)L
+
+3!)Jl4YpL6lA"c-clUZrFR%JSa3HJ2A91l)1P,-kcAVlPXU,C05bD3E(ZXMP*d&$
+
+3JG5-`J+EDG$,bA1A5Xr1dcfBU%6*fSjEd-*FR,99PN@I4D1Vi(a1lqV1YmV0C&1
+
+V-c*HZ-%Sc-iRN!"cQ4@)meL(9Yld+aMPTiKR43"$['8EADG)dLbbh1"B%d[$Vh+
+
+SXH-+SUCl(**ZU!8YQh*`92JBZG63eXF3[+cHIaaU,FmiLcMdEBc"c('5M%"ePE-
+
+5T`1,9XfS15djU85r@hZFlZ!Pfe`4Rr,)d[TeG'+mBp63F%(R%m`YjUG)aj`2kH'
+
+Uq9QNj%U2kj!!Ld0+aQQTjEF-d4"0Q4NFp9IL8G6iZZ'r-MS3YSmI[P!f"k`9M5A
+
+,TaeYVCBdVp`3%'Y4[pr0FK[83FHh@%cj1AjDPajJ4SFVm+iZ5`Y5V-#R)kAMRe'
+
+6jjFC*)`pUA)R!eQ9GfrF4QCAm3dI%5Sd2XI!+Q'9iI!-V-1JlK+LKTYC`HCVQ&k
+
+f$Y@RbULXPR&VECUR&H,9K2""UiNKc#jA9r#3!*KFHV@1%EmY)Ip,Q$`,M0a,YUL
+
+MaJ&4dEeN@e3'`6IbYpF,Q&4'a1p`FR&6)XpCjTJG4%lKSh2h(i%qml2AlMkED5$
+
+)jU*AHM[h6k*-Y6*5@Zh3+%![%dJX4lA"eJLj#,"Jp0DF9b$bb#R`E&FA[Yh9fam
+
+h0@qUhVj(HlSNc,1LJVJTpBB5+beRG9m4b85U4cI'd'*'6SShbrS&FUbqi09&aKk
+
+J4mlbM493a+D@%X+,63hGM@SZ+9iP5%9#)!%[j,jSCY2Y4G(#(+P0c'$4`ZL&!6F
+
+JJD@*3+*-pB%I1P#Kd-$H*6U6H2CSbY[ld,FdSB6l@'S'-Nae[fRr`qE+pC*qYqA
+
+MFH6X9Z[UAT8["'@1dKS@%H%9[iAFRk*a82#DP6U6qq@aXPGm4"c93Y,@deSJ+IQ
+
+JKhSTPHFabF)R@&!,iPj'!'`XN`5!PdV3XZbrd@4GQ#jddfMfhdSEfU-G'6',IHj
+
+fYILjP'FTr&(3j*Uk`PhP'k-plK#mdmD10TVUV+rAb*Y`$'26r#aI5hXml'0BYq6
+
+Xbk9L(HP46C!![N36fX2H4@DB%r6F5Q$'kqJCJEm@-K'NUTaRTH$e'*9XCAY$a0`
+
+b9DFf#aB-bfbi1"LPDqPB4RZ(dfaU3&)J@a@ljRFCS@'K`ep2,P&$"*T%!*,[THP
+
+EeE`CK4H-@M*LT[@k*4Z!R[@2"NQqY3iHAP@VGlBr8,@F54fk!K!CUl3*a'165C1
+
+p3H4(DR(FVak,d*kK`rC+`Z-UG!XP9G96bA98aU)4UVbD9TXLjUif`X-K+J%MFLj
+
+[TcMkH'1J4&RY)II(6B69VU#2"3UE*j'6K+jDlH#"BEl*)4r-`J0Uh&h*bkdj08i
+
+a(S)9fahBKT!!TX0fU9'iEe#YCKTdl-YYjjkcdQNCQ@H&RD[NAHjLYIQ0,b-fTjK
+
+lLRV)-,&NB'3q[d3Q(Cc"`-GI!LXB',`YYi[bSDAj6m2hjQrpmH`mlN`'U[fNRR&
+
+Z"E+9-S%b41ae&"BIpq(ZAPTU,G&RH4UH*C!!IAe3IH6M`3GN*kJ4k+Hp!2N,RBc
+
+P'ND4ZIEmeUK`(EZFfZ66Y8@TU'IVFp0#&#0!EENMEA(BBPK5LIcSJ`9,!$#'$VG
+
+HFGSlQ[L&8*TU%p!1)j!!203#EF*ei`J$fiERMB!4!`)Z@#d@KLC-2e4)DPF8EVI
+
+9Z89-V%KkX+%B18EVZq&ALEKe'k2jU"f(%GiBp[9"%1A0bc`35*ZCKA9aCDlKYR!
+
+,U[FU5dk[VfFGPN3YHGV!L@@)r-$'F'jRhhIJ-Q3",#&hNNqK)U8UN!#(I6AMYK4
+
+5SAAq'9@"Zhk#(mP8A3(khZMl3Yi,p36im5"HdD5Zm#r5rhLGP,QE4U*T8QFU2T%
+
+f%FmYHA8LUm%llBJMES$)3U(pDJJjK',B2,*T!Ti)cK"2N!#Pr)N[KCLJB3$p#Rm
+
+3eFPcUSL"3mMUqT+f6V6Mb+@%L824I(V$[&T&*JU9Zj(XkBaJm%L9i)eZR9#cI@%
+
+Y'UUSHLH$U+SNEA6I[fkc'4(GA0Bf[%5k(#p%G*rK)e4`$4bAZ*G9[&2(+)1GYIV
+
+2,K"a3QdfpN2GeE#&FR2ZdT@'Vdc2+j)R2pENpiU9C&2pQ)((!PK5MaipHUV#9lh
+
+S'FLJe4GR+M"(rJMe25p3IIZ[$BmSUmK*F2i#3U[5!`aHJ&hJBp8r`&L`i$qVeH$
+
+BcKc81%CK0kp9a!V*%NEkdHV&CaC"S4c`V+EEL%d&HklE[,BLd%*3cp2('hRB'Jd
+
+RSr!#Y#Mi1%CJalebMhc+Z-0B-9k9KiV&IQR(EeGcNrGc#$NFaj@#8lF,U[-HBC!
+
+!hLAG,0h9l0-88dkr5K(EZ[hNE2k$A+R6p"GBK1kClXk'#,GAD&*5ZB[$*DZpm1d
+
+G0(A(h"*,Lb(FRYBeJXQ%`kVCRDFj6NKiDR*Tj&"KBDV@!'j%fNZ@'Jb1!XVf[)d
+
+cf4L(P@Z4%S'(m5eV[GID-RZL4TeF"d0D+cpQH-[M`I+&C[V3*'dMCRGY)CfFq$+
+
+Mb8b&EJXf&$!0`Ee38(L+ClNb`NT8LaC!%#j1,Z[!$DDSSG-0FBrIlf9&F4qYB)2
+
+P[`@V9IAm1L@Gd#R*bc9IT%GiK`SDD+%A'MFHiaiSVp(c@BKfARTZi3Adlj2F0MD
+
+AEkJ[%9MV$2p&G#JBaHQT#TfdUCc!V!#GbN&kk@r55MX[b"Vi15,kf)+%"(C*ibf
+
+IPX9)E2rfJ1Lj[b(e)MTke86kCKp%H9L'BkVQ(2lC3`&ZKP")$be6V5Zjq[d&2X$
+
+G[0Za'dXU-2eX,M"pma)$-[!&0rVIR%"'"Sc"GP5fM1&cY,G$+MK6&@fTXF2&%A(
+
+bZ3$hXT(`JS)HGM0Q[Vj$Y4[jIj9hTiNCr%DE+2Nc5D2!1M$i6D(1D8([CH8%PCl
+
+jQ)Ta"iXI)+G4&pb0Q-B%+8Y6"(P('P#dLPH`LeGi921Fh'`GR20QUYZi@j0U8,S
+
+R9,Z2eFY3C)61adf&3kp-pRbq$qL(lK-qXM6e+lAXL(VRUqKYShUUY#,&!)T$6-*
+
+HEa)r9R2d&-L)e(M5F+[EUa4r"$D9TQ(dTQ66AZLK,!f9KDUc'-r)#V,)[lKH@h3
+
+-0f1c@BDmbNp(MKjYSbe(NF43e9b!`)P"M)0%F[dTADEIZ`b'*%ENCPK'DK35Rif
+
+L#+'895a-k%)+QbeP,L28,J8DN!!&,V!Qe%5G,RD,XLX4F(%6%4Zkq+Ml-*1S684
+
+P*)1mJ[LE-hm!E9,"Lb&HYR'3!-h)$"M&00i13DY2kT+'4)mTlPLMd-)DLC9BbJ!
+
+#dB'$)89%)KM[-*I1N!#22"H6GLL)V1dLLl(@imZeKd4I9LA0CD[5U%@4-chE`PF
+
+dXip8BiHmeeFL4A,!P#"icCICqYIEeM,LKk[UIV'G)8#R0@bTNC[K*$C9ECfQYG4
+
+$Y6HHTPc4pFNQ-FVmqQ!dUNR6(bBB(&IP,3VLlqFBJr[&HhE4Uke6Ab3J3jE(FEI
+
+2pKBNX9X0)29!3TNm`q-8L'2-%-f188c9B@d*)*HbNe#k+6+5)fSe1Dp(6Gmp+)J
+
+1abcV59I3bT0"H8mH9[f1jTl6S6dTJ,DQ,#NaBC!!+ef)Y3K$bX(LphmHE1f43K`
+
+RkIrYH869J4N(P!8,5"M04"3J[h,Ki(c6T44C+dURZc1RV-$3i*FU8e4*DHTrq48
+
+[UHh'Vrqifm%cd%DQIk,PGfe@3Xr!9"1VK)&2U6q&@Y@lGY[bjI"R6TTJ+i!@XL'
+
+e&dV'X9rqp)r,6IUB%*jJ`0rqF4kS$DD'Vpc"CY4q,SiG&&ZbcGI-'R8Sl+fJMS+
+
+JH$Q+TDCfr!9-l)%[QB@-5P[4%*MlLNBaNDmR()#44pAXU68'6Ja&UmGS46Tkc)j
+
+(LV2JeYkd2QNmf-GFBhNC&QL#234cPCpb$6$!Y&+!XiA&`00PBkF*8*RiD3ia543
+
+`45QBaiNdL36pJBFC59`C8)Elqe4@j8ENhSGB0%1*K`6'[Y8KV`jcrAkU$ec%C[h
+
+Y9!U5rRDUQllT1$q1a4TEM'lkp9c&VUEc(MVbeX@1ar@8*$3QfSBFq%p+NQh#i-$
+
+5$f8[DLXG'F9+d`RRlZS-9&!PDeHhd!$0VCQ#48cVRLiT3S5M$F1)Si`'PprI@0C
+
+$YEc)NrI&c(2,iqNd$G@RYEkBS#CrZb0@B@K,JU,eI%X-3QJSqpYYmIh3[TDbfG(
+
+DH&PL*,mfp+`HL[cPIlc)[X)XG6JJ&aIZ-jXk3R4c'D!-I6F%MaMdhk%#8ZY)8Y[
+
+94KkQ,)jm!d5fEEC*HFkK&Y942,Q+mCRrFK)V!(JjaP'%MUl5Prep#f&(!9eiZPL
+
+RK@-CA#X&-(+#a,#hbJD25iK'a[h5F"b28AmZUY2fi8cmTla@RYi8EK6cU$+)5CJ
+
+V&`25Kk,j@2[r*q9X6hA$QM'5kZc-M4`2PLb8JTq0D*60X8PC+kY-Gb!rmrZ`ke2
+
+kEk`'2*0F@caHcXej86Bhp1dS,A'd$-)*BV-J98@IL%ZrSCZYdXFB4V&d@YH!*#H
+
+Nr98LTCY(3%q!B6&'**qce)0(1,SFMl)XX1-Te!JNHbK82aGC`dPiKk"V,9F02M5
+
+3!-RZ)ES%3d"Jj6'(ll[GB29Ek6@cU*b&"6lh,&XUT88190mHX&#-X"8BpS4jic-
+
+Jc)cVNGkSTlL,Z*'b89@jiS'eUpiR*f3r&UaFPTf[aS,i'`9HX-E2d!mMifeLh-V
+
+B`(ET9N+R43UEcHL[kipAfUMbY-GEcdFM'dP9SmC#f(f858T[%c8@&%CUldB*!PR
+
+1lSe4h350G6-&#9%4FKe`!%Z2m`08D)YH4qcfiF3BeeqJQcRD%51k3FM3DUefS,%
+
+D%6U98R1KYi8C5r$SqipbR*mM-Sp92C9i3DTdTHFjC[2HDFa5Dm@[JLi1FDQZ-"5
+
+PTl"McJf(PJ[B020kDMZ$2I`E+5jPT4i1[p*ZZ*`,RFiI-lEAbaTPNQ&$'khKK*&
+
+l"B%CZ)-NA4VmZ[IAZCmH4&Y&TkFE%3f%D&T&dp5dM2GqFQ!Cc5Elh5kNGINQV[l
+
+h(ZUQ9dYBLd+49E'je-ej50[bDBa#d900T$hb!Z)f"l0ah'j4UFF9D+aN+#b!8A!
+
+qPfrPQ[E)2keQa03RqaN&SEiFCRPr!rZBXQ8XE!E[HF,Cc1'E!p*E5ai36A#QMq`
+
+,VU3@XUQXdk*@$ek*Nlc#JLQG"S*be(#el@e-qT*ZK*2`q[mlNLf2i4Qm2j'[Tk2
+
+mi!lIHe6fL`SXL$HA(h!mfX[8Yq2C%9q@R8kU,9-6h#EMd%$6R#(i'jlQUeKjPp5
+
+P``%M-0,,fIJN``4C1Pp%2Q(*+KDfhZ1cBhY"-T0,E2Dr[%DI9DGqU(a2CHN2'cL
+
+HF!*K6cKH2+SQI$YM$eIihBK*e,$"UhpHiA$QIeKM-LqXm&[Qe4rj%d"ecM8L8%X
+
+qIEVr*e5-"r%E+YBIq3F`(8RB(aIfP*["8m6LMFp`r@fkhR+KrX(fp!6%,q4q*(T
+
+l-RmSp+9k,!CS89MGk9b3!(C+j)%fq)RcT`QDDK6GpFG6TE%6-pP'aHe#hi[LKj,
+
+$dN$LK23+QBlJ+MiYLBMkqTKU&'IdYqV4F*`k`-i)q(XNcAaY59NpY$lHpC3[)1[
+
+$hJm`m+'%mCF&!%'9f'k8hAD[6!P'qel8(&8@0aZ()CB(%c3JS08p9eBRprFA&pX
+
+1'-K4rZEQ0NrpkZTLdKGhja9F[cXmIr6@`c8H@cbMkhM,BQa4*bZ9`jG@FX(5LTF
+
+j9EeH#T!!$pYm2mmCpDK4S#eN[(`EU`BqZMkKNPAF4&QUG4je9$kT&"$PZJSKE-r
+
+Y5b5-Vmf#iT0b#'9L5J6D)MFjVZJ@8T*[jG6JTfGd!Z1Rq)mk$5raTa45,12M&k"
+
+h,3$Y@S18[!L3!1IGFK,1%MY4HkNi*bDkFPbk*CrQCBHVG49qc8JDqqDG*2[&-$G
+
+pff'(h2YphqRlR00#Gm0U*F-3M,QU'Z@9316qN!#DVbIL1(02#6j2GldDV!NL'GX
+
+m6,C%*%mRl8`Sr-dpIX$GCp%#-Zp[M$b0qb`rka*8rG(,&d$9Dhp*"kMQ&4f"k[M
+
+T#P6Tqre(6*Arek$+P2R!P(!&$m'8!i#Z8QE(!0Rf*202K8M&j*fUG6Z8bCUl3jL
+
+E)Rp333#I"H6l5ALKFpMYH*c&$+$6R&QJN4Q+b0Rp&L*C0dElR$*Kq0KLHK'JXFN
+
+ZqSGQG[p4Q*!!%D+Ph[8)TPe!J9-%ai`cGi(-CMe)a&Bk@4iN8IIVJffJQ`Ik$(A
+
+$lldF*Ejkq3,ZaTRp$I$@&2m,H+[M`Im"AY`GR-*e5%I)1hflJPiQebiPHhC@kVp
+
+[d4-RkFp*(@'4J-LkmfET)p4'0C1m@'Y[5)@`6*CpmceiEH!BShG2"4-"V,[S+Kj
+
+Z46I"%Ie6XKFDM+*R2iI8+l5[dUKUB'ee'EJ,P2lUKF3E9I85b9lF9G#4AZK8icF
+
+EP13D@&kQ1dM-4ImGf9lAjm#Blq9&D)U1aYUbQPjJ!Ua6eD*DG+[Ha&Vj0kV4!*%
+
+DCi(`V9S0h*hDZN9e8Yj"j*)`TFcRai(SG"K@*dF-FZVC,+FUdi9JA1fHP$pKhkb
+
+5#c*))q[KKAdjBbRX+bE59c2LXYFH"G+ULqD3!"$I5!Y6P0qc,FrUR#K(EiN2"(r
+
+R#B0kX@J&UhYY&j*)RN$,kbqceK*Ha,6Q&9+)+EA&CC0,S3dq9j*IVS*-PM44G$$
+
+H2NQTm8KSlH[$iqB63pEANrdBp*L`ipTim!cKZJla&Cfqkf["-6C-DkF6c@`q3'+
+
+8ck6LiFJiJ'+qT(#fZ,%jcD*9"SqG&B@UQjY"U(X@UH#GNAKM+jG[b*UZe(L8H#c
+
+3cIeQ33`pRFM)4B6(1f&Nb-I[[4DQ6KI%)GF8MDUGF,1kE[UQZ%f3!"Y"jj2#46H
+
+TpSM[3$H5f+%%5LGkbac3(&baGBB0,0%%HbL5i#pDEk0J)Q-I$M'h2b+hZ3pZPUI
+
+(c3$rDlFUiTRp&0X#R"bB6"'U#)SQ`he-X1$6G3K4jS#TSj8RJPjAh%L,)H4!Z[A
+
+L)UiUT9Ud,[+rAADj*)B3!hA6mMV-"38Y5b0LJ3#&))X*"qA3aC!!e"f'mERXZ)6
+
+!"9AeE1(',EYpC$,UA)ab@M'A1rMICjId!+e@DR!2BKkA@rpV["#b$9DX5hpaiDl
+
+(Q2a@PrlLS&d28UkU5rpTIpeXSfa6Prl90Y8HqC@CSIEce2@%KAhVHQU2I$[U8lm
+
+5-HJC"e$6aEpe4N-SAGTA[JQ1XFjKr$aaefJp+Qr3&66I+lD$MbcK-4CH6!`8p`6
+
+hf1kIQ+2T5dbp,aRE1!356SqqHT!!XJGqq(`F8q9#TLF"mViJ5S"0&kTlqPfFpE-
+
+cqpSEY)`SK%BhN!#UC8j+C!#)5S68YmKha#a$-C)[LiH06YcbdEAlM@l[dRdYil$
+
+LS1-lSLTA*KmFe`+*CSTXLj!!GQ6UYAM$f5kBNVQ)kV+bkQ*e&&V1LJaMEB,B853
+
+V4pU)bEl8Y5PQ(5A1@'@(,5+MQ`(6DN0Q4*KfN!#kIK2kZ"V'4UY8a@4[8`I"A--
+
+IY"a*kdh-H5'),'@D9&S3U[QrC4TF'@AYPa6)0#JKIeAPl@h46dr-fN2PL-)D0+[
+
+!4PA,HKXP(C!!!q)d`6(hGGdPBb8[$(3HG#9#I++0d0#NJ-1&k20*'%riEM2DI0A
+
+Hj*RDG08qX'R(FF5P,qQk+jhS#k9*Y4dSDQJ"2#dbV#QfZ&Umk)fD)`3a(4Z'$Gf
+
+VB[*El1!QAhFT8@E9SGU"3P)NK"Kp*QIp'PcB*D-&M0PmAcFp'8SL(j2#NeGe'#+
+
+,RLRK@$YEF-XXSI)F+ND)K16ihU26TX!bidpP0ph#5b&N0f4TKi61GU560@6XL*Z
+
+KeBh@4DQic2bf,[B#%Icje(228C1B1r+Me8#5dK+X"jY@L&M99DX"JmXrV+SK@L`
+
+V12$cE@'NV6)M%%-k"SR4[)(*5K'ZM!C63cVmi$p"(60eBJ[6L3B0G3qee&`93q9
+
+`(LI,-YPZqB-80,MXNU&AAQQ594,C2e2G1CrIN!"kf'U8TcG%j2RZL!6hXF6M3dU
+
+A8'G(NJ#-4%&d"T4MfC%Rb0"TJPSAr"SFRZf9-[ThHl@5%MD854NZhPMlKRaC#ar
+
+L5Z1Gc3BYRVEfJjS@Gd'RL`Z!q@l8mD)pqMmamGdQkJ%J$#UUEdrmpFCFGERi1-J
+
+'C&U,"#HUejLGhCBj6%3p+@dXUMKJli3Hl8N-TbAfBe4%b9YZ9fJrm'b+l"rblr&
+
+4*[*P2AE0dq*i%5[1%Mfp+kB)8ZDJBIhPkqFUP@D@#*!!EDiM*84jYXaq`eB4&3J
+
+,K20#F[d9i0Z5V0L$cqepXU+!YiLEUQS#+0Fkh3rRcXVZH"fPUpe#*8Yhki3Gm'E
+
+G83k#i9!1d@am"fdQqN4K4e4pk,![iRH,1%`h!i2$YkH4lHFb+YKb9-Im`YieVp)
+
+U3&j%p%q#Yf+[8)bi1"c)[Bq,(5V*[0[dM`a429#2S#%X(`&)SiM&jq))04-riIZ
+
+kJ%E5l),J"L!YHdrG*"ec,SlYhT5CcTD&r[L5!%L&6Vk+eVI9$VbA%F4F+mEBK8#
+
+dmA"Kc3)AR#kmQBB+h%bXQr$8pVeH@c4@B)prr*!!rNZ(mEP-()T38DCB0XG64U8
+
+Ti-GT#SP`RdS0-pre$0@q[Ra!R4A9qaA30NQZfC[e5ICIY3CNkQ56+cCmJ)E9!ii
+
+#9'KKlf,jL@SRShUJVEYT%+kdQZkNh"3QrDQhZAH'NM+LDa[X'a)pLIYm!BEAf&L
+
+8L@I,G8F,UX-4@14f"Z3JXSQjCFjJDeAAfh0`"@HIV'pZE[+$XQCkXG'f'ppV1-b
+
+ViNcIIiDh6XXUG@J-6[+#HKXZ9qc*)a!HI!j2S1@5jaFF!)Hf`#N3!rLB[HE6q@f
+
+!%8%Xi3Hq)`ZdUeZLFKC9UKf!&EJQKPL%L5TMj$$"hRQMViU3!"iAPh6mD(8'bZj
+
+`6[58IL5TR98H4kPh844lFq+`iN%M1$%Dj&Hj3CBVUb*80$&[`mF6C6'ch00p48"
+
+Q-Rm3K%(hqKM6Sj!!H,8AiShRlkf4(3ElG-PSKBXcb2kSGJ&JK,F3ZQPd'MA-B-L
+
+Sa1K#&p&l#%Z4M,E&M1BrVdNbeR+edcJ8$lb*XY3TqY,k'r,@"66FZNY9NSE@@EA
+
+rdV6pXe6PRUlD'lKYFr@'NNjlcaREdDTVAB*Z'SR(iS(J0N#EA6f[Jf*e+8EK-ML
+
+lYP#P4&L`IJr%0#d*I%39krR+l!r9,P"&!FHjK)T'1ebV,VM4)"CSSD2"BNT9G#*
+
+m'Vc$fch8[V-%A4F4T-V[H5X!3,Cafqa'h(5T9%lcYmQRd'AUCf#"#ZVY6mI&86,
+
+fZd0iEK4L!0d6*iefBD[D59PATNIZ6hX$LrT3CK-6`&K-fb9cip"1TeQYe#Y5$I%
+
+%9!r9TbeX41l*K0pY)I,2h%$mFSXVaT16S5FPlDZkJ!GLVrJHZM3rc3@k)Q+-K@i
+
+5edf$@p"pJ3X$&'b)"R*[4BFTBbm`"k`m9#a`eZqJi3IDRliFB$#h,kK95k4Y$6c
+
+(Ke&Z)pTT-5T&i48rG1fM09AX"%M0Le!YLqY0G0PP[qkK)JE(KPh!PaPeJ+F5-GQ
+
+@1'k([$0@$8fAjJ"Tl33+&ZY8fk$f&US!aP8!Vp36!"T-cRmD[I9R9P[-5,fCMQE
+
+VdfGR(ciipplPh`L3!+&U%iXA(!B$%Qc$iYjV@2pfML"+(!6'MRF+RCVAL[Hh-%$
+
+%H11025+DPQA`&+iJ5VTGDCXdKE+'@fLe'SSS-AFUK$CQ5&3@YjTH4$,'a*p`'!b
+
+#c0,6Hh%%TL!+PFd[STGTpA4b#deHaYMTEPAQMfaNl2*(C@)G14&FG"eG8UDXmHB
+
+'YX5PNf6K(6##L2JIULaJrN-8"U4,K5R#N!#1N!!)cSP`AC4HQDJEkH4U*UJLV(P
+
+YN9D"1XML0$h04!HE9L)Z!A5)eE&eY2,YLSL0IMHiC))qacbFhjGIrIAL,+S[rA(
+
+T4XbPT"G,clJUAS,!N8[l'b6mJYMq(5S5c$4amG"r4XDXi,JFTQ-KCr(A,A2F%l6
+
+!KSRSI%HZF`D9RB-HmqMmSA*+q-kVBHfU'IZ)S98,@VdMhDrN5MYriNTECDpdZKf
+
+Ua5lkEU'm&R"9DmKq6QT6Zm5!p*GCDD)-V2,!bckQ0682e'2RaY+a%89EQR3X&rh
+
+3YL5'@&%YI2BYCkf$54iLDQL01*EFN4j*2h30a,JCLSIViN06-qB[p`FJI!`BQeD
+
+i[VRB)D$r*38lc(PI+V"%%[9a1jHjZb2*H#JYDdIS!"2"4F"8,LST4BeP+e'`"3D
+
+TAQ#C"mFU*bM5jTKmeMMaAZAS'kf(jEi+-D@KUp2Br2--XX1Qr-lrf+Qb%rX*VG[
+
+X,!ZCV4DY*ScBER983BmhjH@iLVkDXTeADA*%"%3iC1XDQl5!pG9H+,GJ-iF'1Lc
+
+H&K&T2!XLp`@rH3KI$*21rPjc*#iYDGEl+h&4JI4,-T4U)KQC1!cdj%QR'pqMb'"
+
+KD-3il$#c`6,`LHXEkhL+kU8"FqYplk8Qd*U%'`LRSpqX6b&8#KAMk([3X9(ilC(
+
+XN!!L`9iQfA!akUkDDL62H9D''[U6FQ2DF3!D9lQXipBkiZT-+d`)"60[Z$B%,@f
+
+3!2c,SJZ2dZ+BJdQ`D(A$3G*#(0S5hPD,6R,F'5%h",Hr"KiFJE,[(RH!LA,J"2K
+
+U-Aq!rM,Sh"+E0[+Xi0TU6UK([#HBFC46L``@!-)IPjKGim+*K-9G3#e`+5hK(Q5
+
+(8q42d2BCkYGSaYB'M&(a1-p#IHI8SNbh93kBeK0MBqQh3dU@ImFTeG(Sb)DVi@P
+
+mMLVUXL10CCLmJe#l2LF,Yfp8%pjbM,k(KUm3&SfA!)TCYIM*8b`ET3A'P(XjfD!
+
+kZmN,j`00DjV`&GHc69VKFk+d4RarTNQL&'X!HM59L*DD+R9HY9)heBiE9MKFI-R
+
+Y*2%F$FBH'%2GC"1@-VbD$(Q80-Ck96J9Ml-!lEd+,4M*(0hY6CD46%$'rh8jZXM
+
+r8YPi5mL3!"raGN5D'"L6V53`MM6([9C*,J%)J49K'008$qHhV9Hhd-fF,LZ+-#,
+
+BTjZmd`q6k!CSN4rp&Apdb8CJVh9@H4e!l[CJIH1RF'5G,!L!T!'cJ(i5*J(,H`M
+
+(RY,GPM5N&jNXA1F4'pX9"5"%9-rBB!m"ATleC"%k`(`X"l+kPiaYQikTD'#+fM*
+
+,0UCTd&IdB-M'J*!!hG2Zf5LCYVQ0-!"%"$4UDIJ&diV1E%pIhA35(D&pE9U[d[S
+
+0qd9bUVT6XhhCX%DVGUZaNS!94-A'*4IJ'Cl-DA8"A5HSlp[a01PJUZ-Ib,T@Ac)
+
+Z83G`A1*Ra!AYU9*`hF5JGciI1NKPPFc9'42'0Uc!'&(-D-8SXdl(J2p90l-iJr#
+
+)9@J3Jm9M6S41l5LalqB*`Kk[VFLrd`(Y9+G"Zc&HM9aZ6fKU3Zp@BRDNJFBefDQ
+
+l`Yqc)jM*K3VpjYUJqXG@H"RASl#r3mb3!'L2ipL8C!RVaN4#raeA(8p8eMRee"N
+
+%+10QajK#[l9XXT+Y5*Sid4eIVA5d&j,DXmDC&(2eB`rY'aeGbDYPIb8+`&Bd38%
+
+b+8E"BRE0ipRAJ&`Be+,1[p6jfR8NGfMT3KZML2$dkE1i4E(d,h5ebd6V3N&BdXB
+
+i%dAH8X-`13`@-'MjbV#Mic8STDdM`@AmDSPciFRmlJLdZ&'JC)RM)38hSUC''93
+
+faiV+k-U09cV6j&K,6k)qPXLRk$X95U)6pdU2+i&hRh`AaPBk6rE0M",++ee-0fP
+
+0S2G0b3h@-&cJLk5Q3DT"9NcU5kRUYHl9eQCD6Z$4H8I&9KT2qDNlTJY#-)[$*@+
+
+*5q,9Fj!!S3AX$YrQ)H9mFmST0L`SCkIGZQFL[9Q,$!K5qeTIq'YTjjE!8"ppp%P
+
+Id0p0AR#M+SBUDYdUa@T)N!$R@TGZFIkLVAj3YcjqL*MFLrDGP&9L9*Vqe[Hei@9
+
+apSdD')Yk"amG+hVDm&l$4&6,DBDT&Pi`kB'$*$$B8QY8HlE8FE50[k5Zcd+)DJd
+
+[K3JLqXK!*#!4CGPSqKkCQqr1N6@"qlCFRc%U#hTZ)CjXcLjN$Q$3FP`%p3q55Qk
+
+&*2IfR&YcBm09-BM-&55i#b!Cp#f0@9%8$[LH"(SYkY8(e3VfY6eJE-5IH0cj1DS
+
+*k33US5)cJKK!lNc@Ydq@4)iBp!XkZ-V,H&-"6LX2Z`Q"1G-e6KVQbT6LJ%E&f'#
+
+Gf1pp!MTPH0Tm'BrY-LC88kDeXDcNcCiKE'4b9dZK$XMGA5`@1$eUUIV3V)qbL`m
+
+rM!$U2SBed![8+ej96'N@qX8%`3FBZ4@1k5'ScaiecXIABpb@%UfHGp#P#"kU58e
+
+)9&HN[ZR`L$Ilh03Z(RFAVB[1RqHPXk,!rH'Cf-),Ca$YFM[-YrpJJ[YZ6m9,H%E
+
+KM#HdI9)903r6T"LB&`AHS5V#TS+fqhV%hpC6FQQ-,pdHVUVMVd0GbfD[A'K%'0`
+
+P48@jL0Y6EZ0)1X1UU81S4B6[b@-BG)&21ENP``ciNEUiXP,Hqd@2GHQ[U&A$ZT6
+
+dR#bYZdYXB4!-['')*+PX"%*0bkl"0f8"&jpTXGpaTm#dGfh%r[%f4JbpbPA!(5I
+
+aJA&3d*ZT9fkDqHZ,hN,!K$qM+*5"85*Q$kG,)YBedP"f-AB&FNFNNE[,4,i3p`E
+
+%N!#[I9d-N6Z,!UhVh9kkmeT6c0Pd+VGj@*K415,d3(%S,qSqLKV-Ua@iPP,RM3J
+
+",D2RT($'E9Q@*$+P)iP*+fa&!pcaXp12h`50,MH*$!9h+9JkA#RJ9)L'K!)f+m2
+
+C"*IJSC)b4F1+4T`4N!!%442D11R[[f90m&H"ZdYKXfaJc6KC#YJGj*`b&jP"cBJ
+
+2%#8P'XS+-&@cpXYPqdV$e3)0"EIi&TKXBTdR``QYffU)%8lAGU#JD-&H@%6G(%4
+
+AP,%Yj3q1daJEZPY2LDlKDk0DQKYq[p(rKj)qBb)JfmG*ZGSHCr2GCJ0$erdeqeD
+
+A(GXc%6@@kffHqN@qf52*ED"if-9RiZp2d9mIS8Hr&1ZRJh0abP3-Y3`3"84'GqS
+
+AUkpq5R5k8LFj3leqLal)9rQEXM')A*RpX9c'El'b08ml,P!rf5aBe3h8KkThjTT
+
+!pYkU)m")PlU+U"N8TKE&Z5c2qkDSEZ8$F,S'3*ZN'mc#NZ0)Rk'3!&)p$r#k!jE
+
+#3TAK'8rD!'2Her*jaGbr'KJJrAa+PAc,S020M+pM4YTB)b$XZqh+aGkQp5Ch*k!
+
+N[bb,PZ[i`"0DUScLrrE(5LQZ&fZqXc3fUXY9N9Sl!+4FV"CTe9!a$j&(b*@j'40
+
+qh"`A9FYH9&+k`6+"`KV#N6)pZMF*C-4mK0JrCLP2aZ#*P3a*,SiiGQ@+eNZPHjH
+
+Pl*4-[N@IU@lEN!#@DpbE1%K(8`i0383"%K3%XE4h9"6('Q5@M9LHE-&,(i4h['U
+
+IEhZeAb2Re9N)Vd%TB&'U5[@FP6[EbKAPdr,TNcPeNK+4*MNm9L!eJ!SYTBL9!5P
+
+'Pb&PfL4mU)D)4GH!PL1[F54%bB$!RX-8JTJ6Tr6$SkRF8`2[4'fBAiCC@TXKJSb
+
+,4X-+GCMQcQpC`+eA4If-QbM$Yje&illB"CE3MG)DQ4[DBG8i,M*1C3,Y22IQU@!
+
++&TD`e%HE)e[6%HbJTP%,ZK@*,I%8-6e[S&L(jEAc%B8P8F0lE@-AIr(rlr-[Ek'
+
+qk[XE4iIhC5j-$1k@mX4hh1e'!BM&)TkR)!%)C"Nd)!$8LZ)JaU`0cEJNGLK`+MI
+
+*l$KA*iV-rXD2'6pl02,Aq+#8[ZAXa6d(QDB(DKNd"B'G0@ARijl3iqXDKMZLaLr
+
+lZ#k'IVSF6"UhPAEhmS2,!R3KkqT+jkFYS#YclPl@J9dqVjGDB0G,!FlVT3hJaFE
+
+Bm4SbLQRKq9C1AMNJRqJEeHSb1UR'G'b#)[A![rHR[$MI6,4jj0GCaDIQdE)B['f
+
+TaSND@'EdHq)3N!#1irBih6)d8XP'rIb`3"e""-f'91YYdE$J&[NKcXE@9!351bL
+
+23p[#&Q`@P%iJ%L(jhRDC)DkNGP09qYXPG&82Zp4@bQDC$3,@&YmT03A%A1pUmdX
+
+CCc`Y@`mdHYZ1M1EMH[UGrQ%lLJ[fH[E9p9D6p6*cbNJ$`dR-VQNq*Sq#26$Da6i
+
+Cr6arTIfeG4`#IJiT0rb8I(fCLlGd&IdFaiJ@!qHK',R44FMd-UR(9r069!(D&TK
+
+Z$Z2)6`(f$qFKj)[G''mXcQ&pa+r8-'3ZJTm2KB!kC[i$D(k(PP%cmlqLj@MUd&Y
+
+K-Ddkk#eiE!@NfC6V+C)bNEP$k9Lq"dM+SrJYNYC+$DA0,I4(*(h*!&C0BYS'+YX
+
+QaqR8DdR0P1(QDFVRmj6C$,MYdC!!IeSNcq[AS$YUU6dpdUp2)!Z%RM"@KB'IJLa
+
+IraTNkAXq&(XU62l%#l"#"MVVZfcfQR@1E$fKRhH(F6I$9H-C0R)Le-lP2hb2'GK
+
+#JQG5Mf"%5-b219NIF5r[FH1*5,4SMmp2cjIjV,N(,kY1VfBDTKEb2hqS83%N!+)
+
+1!EU-Rfi!D5i*bdG*`'9Gde8R51,r@#c8S4RJdE+-dF4Hh9*aV!GS9H$`l8bl4+e
+
+jNEKCKG)NQ"KiTP+k1c1-r9ld64%S-RN1JR+3!#c-PT!!RV'AYUdXTR%kQd)48G4
+
+(')l,`SZYb,1&M#ldYS"Br$PChhD#@8!k2B-Jd+0*e6dFG@hr8'aV-2A5KMF9a',
+
++8h3UZUr-KI8`eV[)KI66Y#"dGmFcC$+c#TVm`#8@TMYr1!(9@pa'%jmr%+IliR1
+
+a$kJj*lE&MYM&3GrD%Fm4M$lISKqK5fG#'$Q0Z[*cmGF-4bkrZf+L&*)@P(0eGmC
+
+-aD(LTS*1M*BUq'aa04%,PGYSMVISr3ITICBIhlMR$)18`5'dRfb9b`IG2Ram%ZR
+
+H"!RCiC[991hp-B-"4h%&N3r[D$Shq-5ZN!"UV)#XfIf1B!I!UlXaQU3)TmMjC4L
+
+@!i&JBQLV3"ci6YkUdi`U6fb)eAbRa2j@!69$`309&HUA[-@R[-A%%D2JeEIUDcK
+
+UZmIQTc$KcXr2i&Uj&Bc`c5kqZJZMQ+il!YVbF-%!X6)AD9"iITiQeMdBRB4+@rX
+
+#0LpB8GKGYpVVB(LTI2JDDkLU!cP&p$$@,#eh!RAPKL'9EVbq3rJf**h!1X9$SU8
+
+H(KDGV30%H!hlG0FfiHfJ%0m1f5U(62Y!fT!!kl6(!C2$+,0J6p$TJTm8MLi2CXC
+
+-3jFh0,B`N!"PTGkalXTa1AXE*fI&"qE2eHajA5Kjc!aXAbIdL)!%eU`kF[#HA%C
+
+Yc-DPMjb01c#6qK4Sbl0P#JSRkJT'Y@k%&UG[J6[`!V+#`Rarqbj#j43$@efB'YZ
+
+)fBqS`I*T&h2iHSd+U)h`CN[k%dK6fZ4GL@Hbbah-b+Bkh`[%hJ!%qHGF3S1IKAd
+
+9Y2YJSUcc#j!!jjJ`2[Dl'%h-9YQ'5Y)pKSU!#9-`c,L)Jm["+#M33Q48$`-P4mM
+
+[E'lPUCbSKPN5AC5PGme+Seq%DPD$J1EFE'rd,YKMkr3hpIG*+aJm'dL%(T@PU9e
+
+rYSA%60"!c"8d"-VY8CN+UY5aNYid3V-)h`,&KXqAL,1m)'JeZ`4PM0ab$U,dI9l
+
+*T"4S[YR(P-$TjU3)U)q(H49I3!Iq0+erTLc$-pcdhRK1(G@+@N"CU'%QGJd!3P1
+
+1qmMR2hpCarrR%0r`#(qK[1%qBTmSYYlI)Yd'6ca#-hl!-Y,qm#5D6%[9Yb`V5RF
+
+V5kr2e%rS"[(6%YV`iAb22q&`q1YqI3PBi3I0Xb'bCEJUe+i8#k++NI8p!eHa(*0
+
+qFQdmY,QF&JqG,KJYdB3HNjP#@%'KPGpYHCXi8a4bX2LM@Hf9RR3aI'!HSkT9*D[
+
+j2#mi6ZG%p4ehf(j%%`ea@FHYISE`&-&JA@k9-&pGc4,RPF`$KBM!@)S16VIDF3K
+
+&5)FLbN5@L`aQdl+FTLN&bUjEmTleVNVGH$$2##bNMN4m#QmJ)N`B0Mm+-Xh`MN-
+
+%'Jr9JFR`1#dcRk`Df)jS!R6Vp!E`mB[(ff"9P(cqmY-$Ya3XkD&kDBB8%"MV`IN
+
+'YmmBHBZ$D"c*Yj93QiiC-U0f!DIjNSXrK6Zh2jrAM![#[+`q3Xk"eM@8hV*h6HT
+
+5Ub`3lNmUMAclQ5EPVXCMNI%C,pqKGe08ebq+m$SbN!"9E0BEDQ[62J@N6cI(UG8
+
+LC'U1*#*"NrrjQi)6F(Q"mPU,h40[P&PTBqK2V`2DXmed6KDk)i5V)i`#$B9e##l
+
+D(aGP@r%)m6d3Kq9EGKq"$++PYc*A9#VL#$3'c$"NA'45DfNc2iqk$9d2HBT!!r5
+
+`pSicG`kTjia)!)QrcaA!p"9`9-aUPRL)l@m@!H8#X6$)T!ZBB#H$-5k9G8Y-(4*
+
+q9j)ed4F!i+#KS34#Q-q&N!!AU1V+6R5M0r)[Ee-ISTme9B'9RhR$#02[[L&iqjN
+
+h@`$fIrBUMG&rr@IEHfq-d9@!VhIHq#Q#h3lI81[pYiRCc3q$l!T"PEHk9)#0'(K
+
++e*mrHhU@@qfj''r%qREbDXY!PMjRC5fDl-L63K6A,eE@b4)rr(hhMp,YN8k#'%L
+
+9ZP-qYj3VRUKMR,T3$0YJc'HYIj!!&[)C(&4l"L%Kh5TSmYLAbAFpVL1qZT&!D6T
+
+`P8&4qeLUE8DMUA-A8QP'5KQG&k)K%4`d0"k""afm$FLGiQY*!iZ!UiD'JZ6[dZ'
+
+Q%4KfmpiVqb@Xbq10[6"FEAekMKd@m1FjpXjrQH8BYBQ8Pq9PV9+l-Q&UG%43I0d
+
+Pr4(c0VS&Tqa8BbPd+[IhZ%$4b031Fe0IV(4i$UN9q%Z,V*HA`AUM#A95,SDm#,A
+
+AN6Y!&V2*,&Kf")ZqDrhI(`Xha3%4EYA0$IG[klr)P3#Kmq2C4GlL*`49`B#*L@[
+
+X@d0S3@E6#NFre(*pP6@RI%RH@X-N,H(cb`'NXEH3!02e!Cd"EP6aNF)c*"Hed&f
+
+NU04f8Q9qb!PXSh-MSa-B2+-FVa"B$0S3Ei'VT`RAeiTah9IjrfiCSL'DSL9-X,X
+
+8#)DeHm+fI"'iYr)%(QP)EqHe+VcLP1r'0fl*'H1QVF"Kr5'FQ`SBfVK-$`3RJ`D
+
+#Q8(H-Bm1Ni1V)hpjDrrL`jdab9rZl6U#0+lqc@f&4MQF9Y3iq1eTPI65,i[CJhm
+
+i,5adI9@UDh%1Gb"28-l&&A`"jqZR1UC2f9K$4!iLNSHiQL%hGpSk@kriQ`km2Ki
+
+F5RXRXNifd&l*N`AZ3b!Qf9`I6c[!F0SMFdNZIf36lHNTr#b04b(8P+e%[AF30aL
+
+XZ(Q(5SqDFS3p,IYlEb!FAh(6&b$+$UcM18(""PhML-%XPSIb$L1BZUf`,U'ZZBI
+
+fF8!P@`D[#I#"pm&4hI4#Z*1#PXU54bpcT#iScI9hl'ApfJX#8bfR[)eRH,r5*J`
+
+N$52c[84GpmZpLBCIPhY0@GqTY5#[',BPq5!d(2NZ*b5[V)rHX#AHeik8a+SadDd
+
++a!Pk9lBT6&m%kkZ+FB8l`MAMTZX16K*ZZKi'#3cX&#,i8XYKPk91i8ald0QD&EX
+
+9k)!l-1q29'DPYEJ3Al4"#f**(I2PM,3$I@RKNdHXcqq)amX"G*&Z-icLYmXc3[5
+
+'cHDF$'S#lUTP@206"U*bqP3DaVSfIb08TM,54aYfCD%J@ipPTDiSZ-2jh4+R0qJ
+
+BmakQD)QP6"*44$4QdE)GQ5'VJ[mYaEb-+%!1VQQK8P3@L(9i!-8)Xj`)3`#5[+F
+
+[[k%3,jG"IN5*r!2Z0jIGJ'"VR(Hbj@!$PL#DT[4`'-BJ!`3RXSme5$-C-C!!q&F
+
+b4UL6$($"JK*K9Im8-D4dBJ9#,e[")R*&cFVk@MF0,2"13qDAk@(Y$64T[[JIiYk
+
+UVe[T8V4qVH&163cZc+'+K09d,Ef0CS14)EG-C9JVj9*%4&l%q)peHT`K3I2Di64
+
+&``,Cc[)PadR)VEA`qYfLR1e`Dfa&8e9e"Z+`P@F%T$&,p,SaJUaL[D-UR`dQKK(
+
+Lar`SSq-!E@BD'6%4BT!![!eM,eZi%8r2dKTe-6&&"b4a633(K%,83haJf+-[Led
+
+bNe%S29kfM[j-G1NC&[205M+!VCp-"[+bQrYU,i%@V6&P99XIifANJ4IN)%+jCIk
+
+lKKkGmm21CPVCHdXj35Y&dl'*EL3UXN6NYkPpPHe#*(B2KJqlGae5KTTY6PR'i(H
+
+##4XPqEeXNa+0(JiL*"R)*+ULXPP6b#LPQd1!-i+**!4(r`!E#AZ2('0b,,-9fP5
+
+46FP2$HTk6B,!RAB4@4['1)`99Hh6eU!SSlRZ"cFbfD0&hqfGFl`9[[VAq!i1iff
+
+b'GmZ8Ue3LPVLMeTE!Q!j`LdSr)aM[e$fAk#9-%M'XUD&flpH-ikP4l3ER,A)M$,
+
+J(DdbAT4RJd09i0L``kN-4#pPk-rQ[jETAEHJ!6!NBL&E-Gb5TI,NeBq(2-p2ejB
+
+&$Q24Yp4K!"(r05(FVAeN,YrDhi,lHYN[iU*VHpkYQiXdiUZBqDd26hlVReMfqKN
+
+F#a[I%CX4d),96CU$B8!CdjBLTN`3Tq,i$U@Af($PS*VMZ*dfAlLKBHrPbU))Kqe
+
+6BLA&[TC29[j4e$#TPJ14f%+Y0C0+kZP`8UACP)ET**h$RM-PY2D0pG6YfDX48A6
+
+m)(-VKUj(+MID''h9MaMX&$h`5K`JLXUbUX!",-$J$c,QSV#2Eh2`DHG5%r#X1$(
+
+M*3P0UdS4hM4,XNi&ZT0K3Q@MY1#V(RTe&[(E5"&M4K"#JXi+J-XfJSPH&i1k''b
+
+*`EBBl)KKA3bha("E$(F)"LRL2ZYa+#(-p[h@peSCLGR0"MeEERBmd0me`YPeNMf
+
+4+erQ[1`9'1H'r5P*cKP"9XYS6%&did@MKA6@r4%Q`B8PiLPX2JY32)ADeG2h*h8
+
+a[F+JpbGEq#(JpRI[f&Sc'+kr88Tk`Y%@EZU3!#,B#+0j&1lLb"Jl3(YfF6ajDp#
+
+1rMr1f,$#haf4S5K1Y3pENNpELD"5A$rL2@+)U#-C!4(,(*AqASKTHJ`Y,j!!J1(
+
+B91@ZkR*F2)Y9')S+V$+"T9mLX(!rP*%83d'4&L3NbHb*L`,ECKjDSamZllX&mck
+
+UdKjbE$ip9HrIJP1aST!!C9+$ABN[[5`L1SqkDJCS$b@2cUbq'D*GR$-50ZT(0-#
+
+Y(IEC(&`C44H@E3bDJ'CK3L5lFT(4KRXI%3e$eGa[624$S(AVA+f$LXDQ@*k"q2K
+
+114hFqQdmLapY*TH%,@1Y%8DUk&Mc)4U1*2Cdhe[kLcYq6-KB(6S+Zp[M691DBVc
+
+l8PZaKdaQh3,!ZCTbZ(@R"hZBK,q)B2$@6BPEc*lLi[!EqDPI#0%U$fl905K@@PA
+
+KM%eE*Gp"jQ!!`M+eGR4CCpl[i&XSqI")0b$+jc90c+hhi@i+1PY*T)Lq8Ji-cH2
+
+fU`edh8"+J8GS1Y-i%2)TN!#$eli)K4`)-T!!k3i+f-pha@P-9r%[11L60$HjXI)
+
+q9mrG8KBRcmdR883%IbkQ*)D"-m%@`,mf8ri,QIQ*),)6pDe04DG[+YSAll"#R-@
+
+E32')Q4bM-hQT6KE4U$hf-FrTG!N'H"@EFT*5kPTaaMh),,3BPCf[fdEGR5`IlAb
+
+IL@&,ZL&#Sl@("'AXEBr*@iq&@XA)[)KQj*,BekB))PBMBSV341D`M'4)dCp,MdD
+
+aUqD3!)h&"8hS'$d4-%hBXbXK3%#G@UG+,XmKJ#H1)MJ)26JlbZ9T-RL%h*A`TRT
+
+,Bq'5)1U9[eBXJ6[C"&f+-d6m3PC,(X3cQ&5D'F2#pG*hL*Z[%UcB*8Dha0CbRBm
+
+UPKcY9-L+Kqj'!b$4R@'%'13QR,+USf$`20SD3FRj#pDLcNVPp&@5S%*3aJ32SM(
+
+fK4Xp,pZQV'GB)c!PAD!fRjX6'+qqe#$M+fqK[0(R,(eCTSdGRV[&1'JmJD*3H[!
+
+lT*lirGarH@-U`5c2rkMiN!$ECVVqF$R&)6@RPi5[CEre)a4JH`5aqpj%$fS,M[)
+
+$eqKjEEKSerVBAS+iD"5@rC26*eRf%4h[X29lXqZbJ)"pE!LRmQB8BCAlBiq'UYb
+
+k`'lm"VThTL%MkQY("&9caP&h&XCTi[AD'N31b4dYUphem(d'E-e5ShICkkR4lNV
+
+[JD0NQC*d(CCQR#Zhb*i$)(KY0B'cq-$ABT+fM@$ljXZH3)Qrp(f&AKa*fNNU$*0
+
+E#KP#0FLHP$e5S*f-$G)V3diZVj6VY5FR+T'C%6eYc[10SU4ZGNp%(1mKe#k$CEb
+
++)2h4pPb9)'TKfHMX-6963F`&THNS!kiLArKGQ#JMN!#p(FJXE8PK4m@qcL#QFrQ
+
+`%JjKL3''3C6AJD8*BJjL%)8lU`fVHe#A90-96T!!q"GpX*Hpec3U$S!H1CN0BjY
+
+1+QmCCXKR@`@B%H6D1J,q-,aRHP18'ei0%`QP%lqTkPT%([5%Jbe"84Xi[%e,Dmk
+
+q+@8G0@*SYa)EGD0R0PJHY"dNBSG(G[fm#RNa2&laFqkDb5*dMZIBQ8XTfaSBq#%
+
+VG(dZ6kfCUjDaSR#HY9DKp@DlQc4$b-h&GC9*kI-0bD&8&)"SdSlCML9qpkmfbrV
+
+B,2ZaHQDD!P@&9JqB8%Y"be@iF4S699ZPpma4M5)jh&%E$D*9P#,l"2QK"q6VHTY
+
+!#5&4d3#-)k9pG83PalRH#E+-$)4U,QH9F+E*1-P6(#mT1IQUh63kpqG9iE"1ekq
+
+lbLZ+GmU$GZX!A!"bj1HNpL#)0KZh-`Q63Caf(ha-Mq#8G9AHm@[LP0-J&Zrfpm8
+
+lU4,-DDA)HGjKXH"I3G[c6,L'HF8P)r5IXCDV+JJardd%+@6rCVl+H2eiGr&hT@@
+
+ZZ4X0pMT*2"9@[DK@IeGd6cBNE"4(#A)[!68"%*Ii'FGmkJkc`cYh`11+Z[9B9"Y
+
+RV+ZCH[6F2$E36`(C`ZTK"i)TQLL,"P)d+fU'MMM!I0Y0F!+TG699*Ua59-40F$l
+
+HIpB"LLCMc&Ff(a)(M&k@Dd-E#bNZ'8qeF9rf1kbm`E(lP+ZS-e9,YAj$54hLE8Q
+
+48T(-GIi3f-kLmIi!8[N60%I91#h`MiJHV-l0*H*(FRYT2H1l)9G"QF&5&cqJIG2
+
+2,R10JdBcHbIJHDe@K)C%6CYF32CkSc(3C30d#f`6%6kHG[(V[Zpp%8jPihNLVS$
+
+L0rp[6`[VB,(GTBBE0-*&q,#"r0I%Jq4J+YV3*b21a6BhK3D9YAVLGU"qXUrIMmT
+
+CRC+XEM4Z*#cYCG9QIS8M"iK)F,c5Q*6FpN4a4qL[8UbH&k'Q[(e&ZVM6-H-2l$4
+
+TGGJ6M4q&`iXNJZr)R6jjC!656*Qq#a@GlA@b8Tk$P&dN1EZr3N@-qPJ3LMj$`#j
+
+p&qB0PYYVD,Zf!(ibA(2Y6`TLZ$j%0h"I81X$i$j-1G'QFiGfH!RrG[b)"fQT8K*
+
+X"0b[hF2[id39khV#0NZD6%1+QDCN(r+K[m0XA#pZ!CA[qF3CrT@0BF-mM(qh3+V
+
+LD`3YUj!!6lDqpfI!k29JKRdi-VZ&fMkCC`p1l#%FbmZP2&F)aKk%`iJ[a)+f#qm
+
+86IAeBrAJ(b[Zpdpe$CBVBX1Q,6'mbr1eq[[68*ip*-RaUT&A6D%QVhQ+S`l2Jj(
+
+eV'VD#FkZ$YHZ3Q,c@B2@+Z3X'l)AF+T%!V!5CbZXkjm1r'+TM8CGSl#B$%VT)-6
+
+&X"l%Dif#,0*6Q$!`E4IBbmcVF"6QQXqdE*EAqMD13VTVGq@P8mSNSYDVAh9UKK)
+
+(U4*D2%bDSCfjq#hCHb3(KklVKJT9j5`mU'`2%6`#6U#QmP&jLrMYq6Q16$fkAI%
+
+H$8"iFmP@U0*`,h$M51H$&&FE',P#DNp9e9JL%Ti$rE(hGH3Xai53!!S-L,(EYef
+
+0TK0Z@cV)jH'A%42Xkhc2pJ[T9S99KKLAP[imbJP,65),PbV"!)p!*kP`&Q8l`'T
+
+T!M8*N!$C(,+kh(FA6Z5!eihJ'D4[lC!!Aqja`K9d[HU80B+K"C8HH*%U6iLTRCH
+
+LGk3EP3[(b+jR6QK+,F-rP`jFb&IlG`[f1`m[,C!!%r%T20RY#mmdc(ZbP$5dF`G
+
+'N!!m3lK)#I"4KY-j85jXS9VqQ9LA-RGHIPB$5@fmCL!"I$#iP%bJH@U@+-'Kq@k
+
+TEjT13+`%j@#lYE3F4Q'!524`R-,2dfK%f"NjM$Z!$qUJf5F[LR#Z$+em5QYk5%9
+
+!9$fk0BBNaNVa`pcdeiC$YG8UPM*)9)(XSbN@"iC,1eNFQTf1MFpDCq4P$mP#Smm
+
+b-XH'ZKZPB43IBeZ06+a#*,KVj-L!H+4%QSJeiE2rYScL8@Q@MXSVSR8iqcFJHS"
+
+bL,l58p,0PE#$R+6KA%qGUUr`JajR8F4%JE#"'`H*PDH`+SNcD2S%%4RD5$C-&NY
+
+j42)akYQMAbkG9V+MC,`+@!ZK@N'TX%9FCiVNhe#AJlme-j9Vk$Z@S[`f8pD-0FJ
+
+Bj[+aBh"MTJICld1C)PCLU*@rUE8e&SG24S8B&,-AV%MZ2VHM(4Xh,9I$NSBCGT`
+
+1j0d2eCq![8KiUC3dMfYX8GH2c)5+IE@ADF9jH3)-Y,)r'"BVi'BpP5R&JdKXEp4
+
+hkV[2kFdN"rKU(,'r!PVJEXjckZYbfI1XhS&b&,9rkT96M8bcYE"94ehb&,A!jRb
+
+bRlJK@X8i`I4'HPf98&S4"48fc'VTIDjU"2@dqc$'J3%jkbFFDHj06ID1)bef@50
+
+PkYHa43)RZQIDXj%@dZGG`YFV5F"5Npi)[4X,bDHLUSJ-dD&@0cP8P$0k8e8%eG1
+
+QmY$4lU4N[XE&,&i`J5-#5VDK!mY2jEN01ae+llGqY8G&JCF+mG#L5Dp*,R%D4lC
+
+!CZ4[PNiH0Pqa(Dk&6(YaI[qd4A-X*+U5GJrMB0kYd9Kf`i(&6kS0edE''b!$G+I
+
+@$,-*!H2CHe%XeRQPA*-8BKa[45l-Q!ZhFR)8Lh#69@eQTGdeNpN%*rJ&2'2'I)d
+
+lLGTdPVPeM#UAaKBIHe-Z8T)d25,`8Hk$)4NYaRlfAGGS"'QKPSb6i#M1kQ+q1)$
+
+Xr+dMVMV,0--i3Y#)YM!cqJlFjf$#YIS5hl)&,HeY8E54$6ak!Ir&NCc3-0%R4#1
+
+m+*T%82J#Bl,eb-1bEE"196Qaf%Q"(GE#rFK&6r-HeB-mU'S"0Q1E4km'@p0"lE0
+
++"LUl23BdXbGKUj+pl*rrp*a1&Gpa&di$M1ErTh3)XkhcVXRqCJSKiRe8"',6FqQ
+
+U8@#HZV(f+f[6M2ZEhd'-SCV`a&64I"[@eHTk26k[cdj,@R3kU2(2Xk@$3AG!qBJ
+
+YRIc*9#dEja%V@jIXPR#-DP8-lXPpe!*k#re!"NUYrYk&")I12f9Em4Uep#`q9HQ
+
+MM@6'4J)(a#dY0AU$AJA%f#J)6`YA9Z2'N!$4c0hGhY@kS-$Qibb3!"e8e#"lh6Y
+
+r9N)[#V2[`@IXQZiBY3cf'Ni&$3,LlCJBHqRM`4QDKrH+m3N2`b)bX%rBjVi`mA`
+
+BM4f@![3pU[J[A239*$M`Ndc`#[r2QXQHdG(rFl)1VGDdIAFY(I4J)ciX'2pKbM$
+
+HkMhE#F$TaB6FiTeRl2*c`j!!%9*ST82Q!@%iB"jb%heU"JG8)EUAbSL0"bR*V+6
+
+5q!6qH"1M4%FX$6,C*l#Bl3e,rF!a3M1+pXbB4L)a[ZAB*4P#lF,XeqdMdq9XMDL
+
+ThTLZbkF!'bT#EBJ)j"%XFVX!4b%,-XF#fDAJ(cTp&-MAHLJ&8KPYPALV)&484di
+
+VBij-`FVAFp&ZQGkUdpY-*mQpUJA!IE1,(NYih$@ZDB15,6%ML)lEY8S'#8B152'
+
+N9FhB")HUVr[G[bK!SEe$#P&YX2aC#SjX(8b%E'AF[+!Rp@FY9aYJF[JZT64&-4,
+
+8hIdX+d3ke5ClX@!+Gq,Up+aB*!-*I*ddA#!cXf`UdAfXPXMiQFm#lS%q9@UaKU0
+
+3KB'KbCR-Fm%Ni0Ti!VeC#B@[)332Xi"rh+DkVH8!3Hpi#UZpHIK-&f*6Db1IMpJ
+
+Ij-EhJ+!5iNd0H4*2RG9X'4@-dck!Ef%ZYM4[&JcI&VL*6el6I$4X`JQ4`1-Y-GP
+
+$I2LkaZ@r"L5EY``IkCFCkm-Hlb4qGBBFqJhel0k)ANerj!%VNrMmqj5$ZJQpM+p
+
+rm#mc,qIp5me()D2l4%UM+p$@'STPcmAc2a85dP`c8Gr8(UdpiJY&ebMJmEaHeei
+
+C,KX48aE#4qG36Kj5'VJ0U!"Ha#H[DGDUC$JPh9MPDNYRGkKP%4k#YBJ9fqRcSl@
+
+2bTAi)qTHij@i(A8DT4-mc%L!,*5r`qR#1+hIIS#NdrJHbC+h16C[ARqQY52FF95
+
+Z0hp&Xk!64Yj&N!#Pb-NQ%'(J4SeFqT8fNY%-Bh,jB&[R0[N!$Lq#%8*[P%pJCMC
+
+8JV+$HIhd@IK6C"J8a1'$Fq91@d-II2HDZJJ59H4"("91QQrYr2l!0Y"cEPHcfQ4
+
+eq*l9PR8%XRl6"dMQa[II[chKRq+%ccfprH3rd5GrU6@*Jh(U#(GKbej3h`HJXJ#
+
+@FmpPS%3S(RMh4dD(r"AGM'lk00rHr"-'k@@mFrDZK00[1M$KbA1DY2Z-@2QfdI)
+
+2)IiAA1+Kec36ASkB`A&CmKF1(ZVjpSlQKNcVJ`DB-Kc4LTRRQ%h,k'"h0bbMd3(
+
+eA$N0B$ASmRmkeb`*4SZL9Z)ir3DMMi#'DhI!J!%!(MZp%[jF'YRQdb&D0H&9G9#
+
+A)E*IK`KIbK3Udb#*RHa4r3$Gh&JN$f2`8hN8V&a)HiY-(b*NEq+QR85dL$U"AB#
+
+TkD-$drG-k"qXFqN'j*H3!$""B[GKVp&h6q#H['6KqbTHCMX1(lJ0Z8+T"hf3!#M
+
+YQ926D)16FB'')HH2,*jeA*Nl8qDRG@CdS!-p-YcGNEa!330q208rKMkUdJ%-"Y8
+
+[24aj5hd5mR4NKLRJ`Me&+ejGPKRZ'GYdEB%SY5D(jG$54LmTPc'c'[#N%+*Tp#G
+
+9(GJmVEqlMeE38pIQiTlk16G@pa$CjV#Z-f4+FA&82IkUEh4`c'qEe(8*2e`cZ`h
+
+6a3rXc-'5m8U*#,5J2Fiq'XDI**aj-hAYY-0JSjBGXS[kX-cR*Fqc*6CGeb&45#H
+
+-#T@fFX!G@"(ekEeIblXZN98b2@5BRA!`(d12CDqTGrUGMZ0D2Iq2PbCrX2ZDH$X
+
+8R,+PRSZ`h)E3!,r9)3+486`29KLTE,F$*&"YFDLZ$GDpbBBRd8A+)XF-b8SGMYQ
+
+`91VL5Yc,CJa4NdYZK9+LDRbFh()"d8P4NU9$[k-qPLB)el6-($EiRbDZ66c))Q[
+
+T*fP4b,hi4MZJDV9D3ANfFFXiYS895"HP5-j8kELHNlP8LdhrahFBDD[)dq46lH-
+
+Xf4+0I('H9ffMeE-YcqUFr1&fZa4XVM8N39948BYpN!"ERIFBr8L4K`R%RM)*XhN
+
+EH"Ur[NpaH342X"k#YflKNZRiKad,PFHHEZC&B'`20X9N[iJZN9B!K4"(MUe"kA0
+
+k@m8Z69KC&Uh2)4TJ#pPe46pqC)%V[caJ*H[#BaL"8UN6aMFSrR`cB$LAf`TjRjf
+
+[i&[fR#ML&d%83(2kZVC3m[5Qb594`'ALPVHDYR1#bAL20hh$pIZrQE'kN8FS6RM
+
+,k!,3G4-3[$HLcG+!KL`%9N3qG[Rea-I!&$9SEJ6jUjA,h1*)rXC[FlHKqA-'jcT
+
+G3)X2AJ55I2FP`il%"#V%l332)8"(kdHk3T(@FH%9TC054$-AJGQ@43cPRZDXbH,
+
+k&U+a%r3F6*CjlHjMLIAH0!dU%r-H1VLqCh40ljpAR!bMR#M-)lQFM(&#D'X[[V9
+
+9GPQiPQ[42%dUek9!HDLS@3[p*r'&[G@m%I5![G#a[ZBI0JU14*bh`q`Y1V8%lb'
+
+IP(+#UcN%PdCj$j(l[U(6d(S881pN!hK,3-#LPe"iHMj-)T,jF`)cidq3!'je'Kd
+
+@6N-I3PcP&8YC!4cdY3pT($T"k2$U2#Y@k(U(GSC3fXaME8EIDB&FPMe6mR(SHCc
+
+qrRL1'e)IcM*080@3!'9*&1Z3!-HcBB(DhAP%!Cp"GEZX'bF@0G1f0U5Z2kr56M8
+
+HQjEk4'HSPcj[THLP!FjZ0rf-dS9DD6P0%9l6l5Q8!P)'hT)0rH&HS,q"+4L2+BS
+
+8H#bF-Ma40GlM9UZC#j!!`,%HdJ`p5!(@'Er-+mBVSqH,#Z51M`bh"I80`iG))NF
+
+1`V9#,m-3GTAK0YSC`E3Z85H0V8haj5!2%')!p+L`RGa2mhSh-dLpR)("XUl#c$E
+
+FSLaRjN`BerK-E1%4drMr3)C@%+)!(hHKFMR`Mj`pI,X8N!$TU@m@QrB10[KRZPi
+
+T,Kf9Fbfm%5LbdQ')-B+Bm-R$D(5A")5(&'0&-C)C3aLie55K+2Ci6&L3!*U&DdZ
+
+JD)F2kE5d8brM!'@@j0hVMJ&plqGceN[dD)@Y%#kBm*l!#IDT2$YGUfHYSf9F@8A
+
+)Z6%SVR8(JpJDeG0K'F`CJLjAEq#e[Nfe'EGdQk+GdY1,bU%(Jep#9H@ZP,3hH-m
+
+'DK$ddPX[AK1hG3qla@PK#l5$dXTLQ8Gd3*`lja(Q%0D"Ka(%arZ,ZiXd$iI(D&i
+
+XLS##0Ad'X52Z!3pINLP!5,PQN5-@qTGjl'%Sci2M`H&M@L%AA1%mc4,NLPB%UR-
+
+!BrY4,Q6q'4ajIklD3[ajARF#jj[[YqM99['3!)*AUD[aN!!'Q)*@LrI3XEcef83
+
+U#c$V$N8T1BZdD2cfjbLcm82lL*Y`)V'M,&4mF)S$hSBVk*&qRad#U,Z$2&-Efk@
+
+S%AQ9Dff,DJ5cBFhG"NcL1Ql$ehq4VjRjQAalUQfV-c11K-qbdlfCE%8CVP)H*`m
+
+&[V,PqF!`NZHVVr+15'ZVE"bpJHM9S[&d@XSCFf"0"a%U1[[JhlLadAk"JbVMK52
+
+MrrbakVem$jRI8Fb%e162*l*UmcdNJ90`89I1N!#8BM'@L(!%h"Zcb2U1hj4H(V+
+
++pEIF2aBMJ('5`'e`d8`rC8biQUhHSGD$ZB-Cld#eX"5(eX3Dkrb!e$Y%b[4-J(,
+
+X+Bd0kL!f8e!8NUSb23C,GF$b!)RcekU%BXb$K9Ef-#5ih@Ykmdh&-C4@G%!F8N%
+
+Ij-G4dc-QAX"c6Zmk6RlfhQ+LG%i)B*10ceE)XY4lkIHiHBKkXA*ZE!GB"J)Fb`0
+
+-c+B6J%'4RF8-UATiI[(HXB4l8e2TFBj`p-VI8KII'jAS#KHI55Gq#"F2UIQ`Qce
+
+10)T96CF@jf%X"&VMJ6qI[Niq!i'0j*F3d4@PV'R3AcFZ)L)F8ZCd)N*cAXTUUdK
+
+,bJ#+(%f$8LY,(!"&6#KGTJ1eSe2fF+ciEK33cZJ9S'KSHhmYVeQZ+HPk)9eAN[G
+
+'$3`U@q$I0I&HF`RA#Scmk`4'dlp19P0+4F`5*I*D6q*f-&i%1A0cV"Pbh00'Tci
+
+jq'MbSF8m%'C8lS60ST3$"&3r&4d,eqeHjlf6ZG)KIFqq+&D$Aq41eAV#ZL'(T'(
+
+Zi`4q0JUI0QPK)4(ES*SCNYVi9#U3!'9mk0q58+b5LA-*BANJrE!*EcNhi1*YJR!
+
+`1lGKiA``)I,"m#8U%BE2MUEmjX$!#"Q%8Q%K6H+U6'q`'N89`+)Z(dr!SLj&PMK
+
+EL0YHXSl!9,l(kTT#!%cE)hqQl891#@f'mi6Z2AE,`FAX,0JbGYdQqNbBSDle,l%
+
+[TE'JemmHZAV6Q*6&baP!,HYKB"jd`BGJ5",3l4K[GrF%@TVM#jmh3e4666ZV6@e
+
+dV6P(j)*%T9H+QhP&%NYLdL$NZC5b3*h990M(*h6(9GTbJ'RI`'`*Bpl&iLS,)T,
+
+GmX5dK"BbkKdNe%(+"*3X')(3A4VbalabBRU)8H*R2h)0kqicdDrL#Kp1`la"d'k
+
+20eN0&%5$@MkH,b%4i"AC0,LdZcJ$5#TG2L"2pJ3YG$iM"`K%UP&Hk@"YPVSKdji
+
+*A,1Z4Ud`Zp86hU1k!F)Q+d%J@2*N+%K$4!%D`)(#@E!h2J5Z)mNe(JjamRL4186
+
+0b)8*d-1-B1PT@[*URMi'ee8R)(LSbXTKkeGU+&@hA4PfYlRLZq!4d8'Q@53#eN2
+
+eA4jGhi43+24aD)%bHJbKJ$L0Zk56IE+"HVLL0HIT"eNlC#4%ELNr-+T9'V0`$EL
+
+dINA,DXrJK(q"Cq*R[F%'qd*edNb(688"BGG4JNS4'fN(HPjq-Gp$C4qGjAN+b)"
+
+P-C`YqIfr2C!$cDXX)ET-Mc#j,$[VelpFd,4la8IcFbH9pBbdQ,[++R%SlqbYleH
+
+fS*!!$A5Qd(Qm4F@Df2YZ,Vp#84*idR!EieH[deFmV2c+6mGMDRdlI+IRH*9$Sr#
+
+5k*jZ*B2c9R8S5YXF+b9)qFj++5h8R)HV*J!8eK5A-U5SlbARD"hF)@MVbhAaXhA
+
+aml@9V&p&M40Tl6jXbQLBR40*@3[DS0KJ,XJG,G)Ee-6EcJddC+C`&UTDTjcF,AE
+
+B1ePXe)db'LUaVh[AYZk#qGqeIAYG)!h"23XbU)!IZ8X#fr3J0kZdEP+QE%0Zi9D
+
+',0j5QPUF,iqZmEG*1G[1d#l-AA5b`dUTb-N'[#fmN!#,$#Y")p0b#q-Zh+5ZYA&
+
+fDYkXa4)Jq*TE!1M1pe#M#fmYC-EJ!XB5NZ'GP58Sr4!b)@%DpR3ih&2"BGX*ZC)
+
+cc`TjS(B!f51IIEdQj@Cl2NY,$dGS*@f@i0pLGYXkR&Qr81%4mXZPQdf'DEkM%P!
+
+1JZe4LMA1+6e[bj&RK2eMqLcA@m[3lS3-X5Rl#G5d22a@8Y1AQJL1BhZ![cjC6#!
+
+'C1%U@E@GC48!A++cm%Db@RE1c!JM3MXAF'E)BNjNRF)'!0G$e%[#'"QTGCIkGf4
+
+pSY&)CHG$j"[`6S"RDV3!fI(GqLBj)YdS'MI$"ddQGa"p*B(4"4ITb3cJYR+XHp3
+
+eUUfd85eG42hfT)$Q,DR)[*[e)bJ'LA8GFRV`KYFJj5Y8pUaIcSJ)E5[Y49)E!ic
+
+JR4$@5)+!EJm+%X'Y,FLGEb2Qp6VP)UR&-Ne(cB[@l6h0A6$&"6@cQ)!(p&!JI(e
+
+$rhm!)5%-980#)%a[CfmJ05ic!*!Bh`!,!Fd"N3#3!`%!&eZ*!*!(&J#3!iB!!!'
+
+!rj!%"`#N`XamZQ(S2!#3"8Ncr`#3"4Iq+!#3#Kl*&XF!!!%!N!0$CJ!!3QB!!!-
+
+f!#H3!!!!"j`!!!k)!#!!#!#3"93#jJ1F"FJ&H!%Y!3eeBf*XEfG[06-ZFf9K!J!
+
+#!%&38%aKGA0d)3!!T!*)!J""8&"-BA9cG#%!!+3#5!#3%VTKlBi!'!IH!!"'R&J
+
+!N!SJ8J!!8L)!!"dd!!!0C!#3"4!!"!#3"5S!8J!`!*!&J3%#!!J!N!-3!!!3b!!
+
+!#0`!N!SJI!!!8R3!!"eN!!!0C!#3"3J!N!F1!%i!9!#3"!Rb!3)!"3#3!a%!!"$
+
+3!!!)A!#3!`-U!!$!`F'"!8$$!32!!S$#3FB""X!(J-G""3$&`F5""%$-!3c!$B$
+
+033m!cm(1J3j!#J$+`FZ"#d$*!3R!#)$)3GJ"'-!CJ0P"'`$E`GU"'N!H!0l"hi%
+
+I30d"(F!FJ0a"&!$8`G@"&8$A!4I!&S$@3G)"%X!6J00"%3$4`G#"%%$`!6$!-B$
+
+a36-!mm(bJ6*!0J$f`IH"0d$e!6A!0)$d36`!r-(pJ6e!r`%r`$k!rN(k!6V!1i$
+
+l36N!qF(iJ6K!+!$S`HQ"+8$V!5[!+S$U3Hi",X![J1p",3$Y`Hb",%$N!56!*B$
+
+P35F!jm(QJ5C!)J$L`H1")d$K!5(!))$J3D!"B-"KJ+&"B`#M`D+"BN"Q!+E"Ti&
+
+R3+8"CF"NJ+4"E!#X`Df"E8#[!@r!ES#Z3DS"DX"VJ+Y"D3#T`DL"D%"i!,M"ZB&
+
+j3,X"Hm"kJ,T"[J&q`(q![d&p!,h"[)&m3,3"G-"eJ,9"G`#h`ED"GN"b!,,"Xi&
+
+c3,%"FF"`J,""8!#3!-'4J9&!N`&6`&+!NN'@!9E!9i#A398!PF'8J94!R!&F`&f
+
+!R8&I!*r"RS&H3&S!QX'EJ9Y!Q3&C`&L!Q%')!8M!5B#*38X!Lm'+J8T!6J#1`Bq
+
+"6d#0!8h!6)#-383!K-'&J89!K`&(`%D!KN'#!8,!3i#$38%!JF'!J8"!!!!%,R0
+
+TG!!%,R0PB3#3"!%!N!-"!!-!"`!2!"m!2`"r!2m"r`2r"rm2rarr2rm!N!-)"!`
+
+##JB1!3N&$3-,"`m!!!AB#`#3"&J)!*!%3!J!N!6!#!#3!`J!N!4i"`#3"#X'!*!
+
+%&!8!N!3-"3#3""`&!*!%'`8!N!3,"J#3""!&!*!%)!B!N!3i"`#3""J(!*!%f!N
+
+!N!-,f!`!N!-"J!S!N!-'J!X!N!-$J!X!N!-2J!`!N!-(J!`!N!-%J!X!N!5!#`#
+
+3!`+!#`#3!`2B$!#3!`rB$!#3!`IB$!#3!`RB$!#3!`(B$!#3"!3&!*!%!3)!N!3
+
+#!J#3"!F$!*!%!`3!N!3)"3#3!`-ZN!-$,T!$!*!&-d&%3e)"!!"B!*!()`#+!"`
+
+#(!!#!*!$!3B#%!3#!!35#`rr)`S[%#m3,K!#SJ#-!*!'*EK"4%05!3!bVJ#3"L@
+
+S!%!!8!!#F"LK(LY)pb3J2*!!!N!")&%'r0c4r!!"!!!V52c)B"-!J+%LN4M33HK
+
+!N4M-4#,8i!`!"344"[YU%46J$!&rk&)'+%(SIrK3##a%0M"1G3!!6PErpLmZ!!J
+
+r,J!-5'lrqJ%!S%cm5'hj4+Q0,blrr$mm!!S!3+PG3qlrpM"m!!UJ1b+!i9K#)!"
+
+RU9e1AS)qr%MR$aK#Tbmm4!JJ6%p(B%J)UD!SAb"-S'4JL5NQ!!"82LX!"*j62#X
+
+!"TaV!!)k!!!Yr6bDEIdiQNG)aB[m!!)'!!"&!!Si,IdqQ'hp1TK'5-5*!B$`V#"
+
+8-)8`"G"()&3a3!!%)-Q!!N3!!M!%d%BLb3E#HdP86#"82`!!+!!5UD!YArrm)'l
+
+rr+"+3J)!Ck&36VSEY%SYq8a8MfFQ3UF"%-"l&%KYpc`J9"mS!!S`h`K)H$$3rrp
+
+#*m!!3&QU5bCIB#4@rMkI"Z&B#%LTI5C4L#SJ#dcI'2$6F`!!pAG"H*e-8P4[Jdq
+
+4)D2#U3C3Va3IXbr$*p-J$"XR!KJ"S8F)6VVrH#K!3PGK-q"%#UQ'"+`q(f#*+M!
+
+(60m3J0FV4N"+@NH(le"!%2rq3QlrrU"-rNKi!'lK4%kk!'!!6$!Zrrl8FhPK)#"
+
+Z!!K)D!!#*3&!E5MRF3!!ifcrdR&iX'J!)PI!4!3!!%KQ@5m$)Qi!%$)43qhh3#B
+
+$!0"*FAJN!dK#B""#3"!BX`$33!!!-$%!!1"*X8&4brrZ8FVrkV&JJT@"*Kr9Fq5
+
+&8R5)EPL2CajeH&%F3L!!TkQ,3UI3A)*1Z[lqF!&J!R$5!!$9+bm(i%31i8aK-dk
+
+k,MSq!%r[!*!$#QBS##d!"2Q%Ca)[,IQ@!3"Mj`$12J"FMf!1+fi!#[Q@33#-lIP
+
+QSJNq!$!(,P6$35`I!$L`43!!+Li!#Ri"I!%l4[Q#+dAjPJ!31d6jI%(YqPSV52P
+
+i-3p`#D)J)@"+3'CbT24)*Z$p,`-r"$"$ZNSJN!"!A)pRaS0*!,a)EITDJdNYaN8
+
+d"c("-%%X0!q!6VSLq[$Z%'#3!%pI!4%r!!'*8'6B9)pJ!2p`%93!q0FV"`!mX"p
+
+#C5l!)5m(2`B`3cSb6cLMJJ!mFPKLJbd#SNC'AdEjI#YYqFU&$6S!2N&MG[&S3#)
+
+`"8cI!1$Ai8+YNcUL&#$J5,#ZJ8#!m"B`,IQ'X,"jCJ`lI2rrX6,j5!KQS"ARjLd
+
+qd30R$MY(Xlj`!U*JK%4Ji08CrjJ[$-%8!"*J!"DS(c#($"5!CcaKM6f`HIq`3Ul
+
+rY#e8rlM!!*!$$%kk&Y)YArqm(@i!'rr&,3N!`!Vrc0$r$[r33HlrQ(!LSQ![B)!
+
+-UD-SApJV0KdX,J!12Li!%J"S!#!"2`F[2%P$6L-["Lm&JNYkF!K4!Lk!S5&TBf`
+
+d*LPNF!0Q-6JQ+8i8Bh!%C6&cabJiF!9Q3NFh)R!'CN*R23`JBNcZ!2$rk#S"'#D
+
+`H5KZ!+(@S2!9##$X,Kr!&!Y1ZKAL)!I3Rf"5*%SJ!(J#)'BLa'2-)Pr6e#!()&5
+
+J!N!Za'1k)"mL9#"6S#j-haKN@IkJ!0C)jamiB"X)X&S1,8cr#Me(r`S#$Y,r+("
+
+L&%(Zr[M426B!C`B`!`!%B!!#HLeZraMqj0#d(2lJ##i!"3!&rb"Q"R!!%,"JS@B
+
+r"dkk!PD!PM+)Xm9+S&"bS&#53QF[,[lJ2e&bB&+k!Ma+32&Sj-3Q29"Mrki3RDc
+
+5SFB&4-#CU($RXLeZrZ$rbS,[PN)Ri'@J!!a#9kQ829rqhN*RS#(!)5m-(ca!!!!
+
+"6VSAA0!%h!aZrrrqh'B+!3#3!'q[-"pJ!!(-2blqh+QBF!33J+%L+%LK,Le)r[!
+
+L9%+4GJ(!f!"J2%*14%bS$ECIEJ!"3X(CS8%r#!!$U!iJ)JYR!!%Z)%ZJ+A!)d#!
+
+!Nb4!$*,4*@B@,!SJ4L*'3qN!N!-+1LJ!"%M&jBhDL@!8+JT3!#"&)N9KEMaKFmE
+
+PMYb*IJ#9bK!JB!!!dX&04P*&4Mmb@!K`h"p+!!#%C`!!Z%)ZrZa#E[lD)%3J!!"
+
+32@J!"2lB-#lqfNM!jBJY!#"!rZKJ,L"ZrZK"m'J'N!!ep$!!S"#`E[lBCK)GI!!
+
+"rZaJaI3JX8"J![l@B"45-+TBV[lS)%EKYm#*"-J"EmC+`+CR-X&0d593+0DS(be
+
+IrZJb&8UJk'FD8IJKV5m3epVm`@F-)38J%,!J3Dlqj'FB)38LES!h85+3!#m-d!M
+
+`!#"1Z[ek8)p54eL+)%@qB,*[!!6!rbK3@5S[#kQM8N0J!2kbBBebmTJ#92qf`"5
+
+JAK0+82@k`0Irrm-YI($J4Q&eE2r1`r46k(!(PU%,B-A`S#0J2L0&J&)SQP!%hUQ
+
+B@&BVSQ"`!%cI(#4ka)6rQ0!$&2qU8q03GJlrB2-!#[r-JZm59*Lar"1-F(J3)+l
+
+rr1"aU04c#R!r(!9!8RBJF!H%,8Mr+R!8,8$r,R!(#K$!F$#LB,#q"2q)CJ4`rf!
+
+HF$qMG5))VR)()+*JF(J+-+lrX1L+r#m-5!!!EIfXU'kSrLmm!!$rrb!IS)!!-UN
+
+5U6#Tc*!!chZS8!Ji!!B#K!L19b#1'd$j6)"rH!!"Sr%3(NTI35M8i8e1ZL4Z`C4
+
+$Efabd&b!JS98+j!!'&$jB$YJ,IPN`T4[ER69qm0$%HT`S!!"X*pX$Q%q,d!"q9D
+
+T!'!+)&3!$A!!%"!l32P@b!H"Jrd%)&K1Z[AU!UlJC@C!E55R%h&iJ-!-!#!B5%!
+
+3'D!)!Ma6304c-NMR(`K(TceYqBEr2%!J,@hjP[mq`3G*3Q9R3QHKq[rm8J"+3)G
+
+R'Q,T+@&N,9$rq#*ZrrK1!J#4J%%!"(j#,IYD+h`!!!N3q5")H$YZrc`!Nflr2[Q
+
+@3%Q#'q$BqC!!!)&)EIP`-LD'BC`F&%T!@)pQ!*!$"%BJEIFN-+hjIR!#d+hh*!!
+
+8+d$jKN*YqC*`&L#`LM%2S!)r!)%!6VSEj%T!9+#G!l"1ZJk+)D)%%!aS!"8'CL*
+
+1ZKS3HJ%4eNU!E`JJ!!#fFBe)EIq'6VSR"&"`F`#N"!Kk!(,MH!N36VSQm!b!pIT
+
+D8)m!%@p#%#hk@NL!3$4Ad-#!BS0`"!38S#l!536rJNKYqekJ8))`em"+3&!a8)p
+
+Q%S!@C+3DVY%HC`4C!!2""e08`*45)$mm!J'"+U%D,a4`pSUc!K)Z3"4!N!#"G"q
+
+83E6`(f`+F"q3!(!q'd$J"")9EN%8qPVJ-4T3MmJY!)5&+8&*-$J#U")84%#J*(a
+
+!Y))b$`HKr(!!X,+8,`#3!dkY!%)-J!!S!!"X$$(m!!%!J!)8F!)K`!1B-#hp2NM
+
+!JI$!!%!'32p@28$rlMem!$,rl1!Il+%!84Ek@N+RS"ULd!X"UHT+,[qLCP)&#V'
+
+0qeS3X%kJ'MDJ'MTJhUK1ZL9#8EA3ZMEr-U!DBU!DV'#mV+!D3U(%B,bJm"+D3%C
+
+`9i*K1%#"1[PBC!aY3N6jT["S'Y3)CaC#di$J,4UcX9!&!!(HB8Gi!#`%8!"1ZKK
+
++!2"-`0e+,`-J,IrFd+e!&2rBd)06J1*Z5YL!B2VNi2lJh)""JF$k)2q&CJi!m,K
+
+K[aDL9)pJ`U"&)%3'rmjQZY'R6VS@MK!EVNU'3&9k3B!#DU5`K'a!!c!L"*+!,`%
+
+[!p&`SNX[S[&1ZJm"di*aM9(1Xp%%30[dE,MQ-!XLSF6J(cCJZMT1ZL2D`Z-+CL#
+
+V829d#B"KPaNba&N!!2K+4@BL+flr0S1CN!"8F!DLB'%B'4$ca3$BNP!fmFm[F)8
+
+9!),S,Uhr'+NL,bd!Jb01ZK4#m"*)!$)Z!-,GV%S3GQB!!+4+4@F'3Q"#,Iq#B"5
+
+La*,P*"+a6[q#8)r%%"D*UDY3(26`D!TJAU3IB1m9GUa3"X4C(UY3*)$dS'&J'&l
+
+%@53JEIrJ5("iF+Y36)8BM2"SX"86e["d62!Q@L'L1e$jIM+mSMX"`PC&EQ5+@c"
+
+VC+(+i"mbB9-!)""f2`#K!R0V'd$l@["S$*+9$%,6Kdkkm[KF&J#2d&BSHJ2aPJK
+
+q!"i8("3)"`!'!%"R#!`X!2m!E'Bf5JGV-R!-"!"!CL`-"J!(CbB),!!'!!(8%'S
+
+!S@B@5L`!!@X3S#J%!!&Q!4%(-$T!35"+,Iq!CU2iJG$l@Pb2F!'am4YB!8$rJ)2
+
+Ed!(!e48Jd%RPL0#Z!!J[D3$NK!!'f"8iS9MJJ!aJ!!#B+%XN4`!!("0)KMSV!!*
+
+J&"J85)5B4J!!5N4Z,NT%CJDkE!!#Bb4BM!!*[SaLjQ!F'")MI'dBS)31ZQS!"!!
+
+#9#+15N"Z"PQ+YmTPhVA-B`!!##`8+*)NKQ#XYmTQ"&L,B"!!0L`6*Z#d)!U3!)[
+
+NJ#)(@B'5!!5+j)'bJ'm3,`S[N!"Nrfj(kJ#"!"(V$Lm(5'S!B1rrA#i+8)mJ"`"
+
+6N!#,@B"L!2pL-'cS+J!BX&S)S&J-3&`J&#M6*X$Q!*-QJ"#,CZ"a0M$359-!#%"
+
+b!#$")-&4b2rkd48r2!J!%"![,Ic3-%2D6VS)4&b2JMlm51F#%!H"3Z)J,IFdX+h
+
+h1'C`IKlZB))!$#$20&+Ypc3")$i!2!IS4QB'!!"k#-T(B!*k!!*(!!F'4`!+J+*
+
+1ZJ3!2c`3i4r)-#5#2Vbb(X``*!!)GN*Yr1"#VIcB5NE`D!TR4R!!!","aNRYrE6
+
+3M#K!,a3r2!%'!N(!))"S"rBZV!!%iBdJEIc)5'J#*8"!`!IL2L`!$0#9#+!+,Ib
+
+JEJI3%4,`D"CJ4ZH0"Ea+4C!!84BLJ*Y$k8!1)3$K+3#rJ*ZJ,Q!5kjN&N!"FMk@
+
+U"B44"F!UZJ!+d!(Je%2kF%8i3CT"k%!!,4#!52rk*S#EI!!pI(rrrrjJ-#Nc""!
+
+Ge'Xr5-!5,IcKikL!!(BV32`%!0K33()-E3!Br1"Yb$JYr0S#+!"%$rm!-!6J@BX
+
+N3(J!'#S!!J`!S%3!$'i50K)J,IcBk+!arCP!!N3!B&K"*h)-iP)X"'d!$2cJ1")
+
+L!#!%5-(RLG+Yr03Q3@!ZS"m!r!)"fq#X+`!%B!3`B(8i!#!%5-$RP!+)d1&'3%%
+
+RiS!a,90"!P2rrfI-0J!)%`a$!3"N*L!'8SE!BG`J3"#)`)--K[(*E3S[F$`18(`
+
+!@)pair"d!N&'Nj8#'LCZrrU!F6jN2M!$)*!!!%JH9N!k!-F![#Nc(-K[mJrhS`@
+
+"Q'BF1P'3!"%-432r3M)+CM8+r1"J+S"a3'EbK538$Ei!**ik8(,+EIcD3M)2CM8
+
+2r1$Pm9!i3B[Y($j[U3qUV`AJ&Dhmc1mAlbN2-i9"ZJ)NH8SU)P0J(-PC*'eM8L*
+
+V%RJ!5N0R!!!SF2r33ci!H!([E#"0d-I33"A(-#MlF-!3aiKLBqj5,*p!!P*%-!!
+
+)4,b)E!kB4M"%*McaJjD)B!D"!0!A"TD)-%8SiKUBL,L$E`5iKX#3!'ik)!05Jm0
+
+laAFL3"+3!*Q"$&LKLJ6#$)2bJ`*f!&0&CP#2r83J"X%f)1B#"!2"0LK!-%AFL"6
+
+Fm%EkB!$p*J%#%BB-(NcZ(2MrfY%951F"'$Ym!!3!!IYZ2LhlEL!(F9dS3'!@*J!
+
+#60IYr04#D`!%B)8#0Vcrre)!fNG3M!a("`4Yj"!+J)%X3KXiXCF!%a%!d!i[!#q
+
+JA[SkIJ"m!(S!H!#A!!$,8)pJ50k')%c4baB35)-N!!",eFbk3fF81J--4IrrCJ4
+
+m!*!$B#C`)*!!"A`"iDj+4@mD2a%PB"`r"5p`c!!L,Z"Y!)!a!*6ap9*%!%&BLlK
+
+Z!!aPXMGX!!"`!#5`48%!J1hlN!!5!ZL#!N%!$p!`%!$P!bb,k8#2#qi23K%(kB#
+
+%#bm8$m-@!N)!`KTZ"#"Q#r!ZBQ3Sd!jJ'a!-4p!K+(`"lfi!"(S!B"B`45!%d)M
+
+K&5K!1+i!!#!5'8F!!YT'$%83!'hN!'Lk2!#!"!*'$rmU"(!-i+eip0K(!"0!"3E
+
+PL%Rc#*!!hM#3!'$3F"B-&!!ICb!!%"Lm!"maG&*YqfidKf"Q2K)!Jf"L#!8!!'F
+
+ZFhK!QY3m-!J%FhJ!B%R`#!4+4QF%-!CJ#M#`GG&f1+!#J$i!B#akL!*fM`+rP$i
+
+!iSd`"-!i8d4+3'D@FhM"B5"!-!!q-'cS+KmB"XNkd!l4TbKYqfTq!+-"FLNc''K
+
+[U3(@"S'"!(E%!4$mi'h-35F#J!!!$rrLf!!Vd#C!1"0f!"CJ@%%RjP)+Pd!#-J3
+
+!!!4"!"m-33!&BJ!!mN2k!63!"G*"d[%3!%l4!"-(i"@-*N"54P5K&SB!6H3(#&-
+
+6$p)(#"Dm!2m!%X#N63"!$M!(8NGb!$)!jBNCKKL!qM!CXU3*&SC,C!!5M(J(b"!
+
+'9%4#k9*Q9d!#&S4J,#!dVZS)')CJ6RJrJ6J'4!!+35GUJHa529e22`!r3Z!3%!F
+
+)F!(3""D!XA!!K9*(ZNGL!2kim-F-!`JjK`J#NQ!BJ2![$*!!iE"&6VVm9NcZ'2M
+
+rj0%9!$$qq[l@rZMr$2p!rhb!DM!&B#L"!!%)jiK*lIZJ)BFr"a!X!!4)J*!!BMm
+
+!,a6$)2d3mZe(N!!S*@A5d!%@QJ&#!cL$`jI,B"3K[c9!3R!-$K5`F!"5d%P(@)Z
+
+qdI2Qd((4S,*dqmU`Bi$rj#Vr3S(k`6p$GA3KS"Vk3)!J29rrrNT3B`6%CK#`B2T
+
+R#M!m!!0JC[T1N!$@9Z!D3)#SRkG',`MK`D#YSdDahfF1F9F%!+'YJ-!))SKJ*N(
+
+k!$B`21T4!J!Ld!kbQ'F'5TKR%Q$f3rS!)"!!dp"1dB)#J%*!28!!%%jH)&m3!&#
+
+26Y#`$&*JlRCPFR-!N!0J%!4YB@0S!$aNFhPcGJ!mL("bEf0"#!!mNQC`G5!!2*j
+
+aC#!"9HKVBQ3")!"9!4TKG'aV!!!"3QeYS93"C-J1FQ&Y!@#)E!"`!'H)!$`#HB"
+
+6JL*i!J!JVR!%$'N!G3!)Ca)-DF"$#'B!+!453'!'%$J-Xeb!m(4J!!Ji!BN!d,2
+
+r9J!J1!%[N!#4!2p+$$J!"!%)%#pR1!$E"!XLCc3J6r)!f[-R-!#!&bj)$%!I''F
+
+@$%!r''F38-N)#$KR$P$$1'F)F!"J$S"6#R!#B$!!"R!$B*!!C["d!!ai2rm#MQi
+
+F-!V"2((`*#,eU`1R4Z("!3#dL'D!QB$A#J3'iF%#!-IqcK!i!Kl3#"BL5")B!""
+
+R!2l5XJ"QpT(*)!Ma1J-6#`!"!J%'"`3&#!Q!,NSi!T&V&K)!!MJ"q`)"!!m-!6%
+
+k)(J#h"!S&%3!"r!FK##V!J%[E4B"S`ba$!"RCi)6$'"0!fd%8d#6ih$X'2#SMf$
+
+f1!%)3"#dL'F+@Br3#aDSMb!Im"`k)Pm!"#"IS#8ZJ'S#3TF!)Pm5(c!I!!"+!@F
+
+%TdCJ!U0',SK1d8j@)06rcL"2-E"C!"LJ!H!S#Q%X9'!a%)i!)X!J6b&Z!!S!%[+
+
+8&U!9i#J16JJ!AL*I`#V4)Pm3(b"ICJ5L&@"B!3+Q&@#APl383,m8D--'F!HLB'!
+
+%8"9`"kCJDX-+3,m+DXJP%X`P+Y)'F#F&J",-*b25)'m!"#![!!K#CkRZF#i)!8p
+
+1d(,M8+RK)T!!j#+)2d!!##i#3jq",!!!@8m[2-!ZJ&m!#UQJJ!)-!#"#%5!ICb)
+
+J3#"3-"JbX%9R&J!!XN"L%R!!8d&R"K!BdF"JpX!)%""53+!ZC5`3MX`["p!$%2r
+
+H98+'Mk!Dc(!!(d#Kra6J80$%-+lriR%-!3CKKMe(!"3Z,[r)B5caTdl3KdK(J%9
+
+&9&C26!!!%6I5!pj3GJcriY!$#!3UrraT2rk`29m!%Q4C#L&E8hGJKLmL!JG3DKE
+
+rR0!$%[qfdJ1B3LlrS"fK8Y"+rk&`!'#DSQ)rKR0$rTcL53MJ5jj9B#"4'0"9JQ4
+
+C%#&E6e"&6P*'Ff@5Ia6!02rL3QlrjZ+6'Mlq21**%1",d0`!$#X%B9"d6qJJ84E
+
+B93j1d)N!AeG%58j'bSa2FQASm#))',!GX&S++Z!B8(i5$(J`+dJK@QddSHqK4U$
+
+Ik$&NU"T`!@&&r9S!3#!ZrqL`RfF89Bmr"Lm&d!`%&,#S'Z"e&!!5c$emrj!$l"I
+
+iS"VZ-"`JJGiq(fB-%!`Zrl!1r5`q(dT(d#i)U%Ircc#AMP@2F!![!+!0m+!0mM!
+
+2@HP!'QCf%K8a,2DJ$ILMkrlb%"&FSb@KqM!23Q")%"%@9Bm[i'Nr!"m%UF63fS!
+
+,U3$FVciIF!+`V[riCY"#m5GJ8r$J@0%Z)")81"pJ%+3p,[r`)(@d1)!FCJ)q))!
+
+%-FF+B&"@l!!861i3m2r8CeN%"Sa))UG&8dC*6%8!4("&1$`m$0SJK#!'5-#KJ!I
+
+pX#K)`5e3Ff9dd`X!!#iI*Nak!#"(*&"i!@"X5J3!!'F)%"*)J1K!B!33'NL!GJm
+
+!8-B!5J4Aa%3%5J0Q)+fZ!R$EQJJX!"E&)m*J,J`$!!q2bK(0fYI3#(!)!2R3!i(
+
+F8dC+4Qb1+dcpaNRX&!!"3D$UbV6ZcNRX!"!lI!!,rG+KLM&j!rrpe+$Uf,6Zh,3
+
+(i+6f$IhN-3"343[rrHDJ"HUd"qkd"r+N#`lppM%!%bJPrrhiS!AmX`Iq!,3P"+A
+
+frJJc!2i+8#NV62i1Y#85Y#8@XIVq'M3Y($*XG8j+)PC"R!&L9hi"X9TJ%R!f$&)
+
+6!#!6&c"`X(!!#-#q!#!8X%GXjL#a*Q51F'@k!!)&B#YYr0cq3#Z`@Ij%3Qhq6!!
+
+!1fhr&[ii3Uhq,%(YrL#N!c!%5'hj8Z&%`#$F6VVKmH3-5Qhq-!#)E[Sr,Ii`6VS
+
+&F%S3aQF%3K"aN46@&@hr(10X%+E9&5m(F6Bq%5F'CK+6*0+(808!M01(B"L3!#J
+
+2CJ&)#!K!G`!&*3$8i8,6'5m(dBHSFdKYrekSScmY!!$rB($md'hrBMm!U*-q,Ip
+
+N-"#HEIpJJ(p!SDL-[PpX+S,NDUL-"&5HAiMN"P-YraaJlU$)EU$)($!Fa#5S8)q
+
+Kr+L%d"Pe6VS"8M!NPN#!2))q3",k5Lhj6'F55kSCF)"JUN!"rC5S%Q@Gi85SST!
+
+![jbSRB)4"U(@UK69GGE&9K8!8XaBiY*D-GK+EIp!Ee!`EImq,d)+#(&(6VVjpR&
+
+"U)4bM6`!&B"1Z[T@FJTc4Z!l32BrcRT'!J"!62RLFdC!$C*L5!3!j`2J(rmBU(0
+
++VIp#Eh`VEIq)JNlj4,"Y8[P)80a881"3$+d!%2$*)"9#Ec!`4r!rH!(KBNE32eV
+
+MEL`!5!di`iC#diS3KUd!@L`!B"SaJp!Z!BP#,!@Ui@*#&C-`,IP'd%DJBdT`'83
+
+arPM3!(!L!-"1GG-Z3'@3!'[j4M"`D2P)-("QqGRXmUUSSp!Zmm$fJ`(`$3M4B$E
+
+4'e*32)-"`@J8%2p#d4X[SdD!UE`VArp+`TTbEfG&3Y!,!BAprdiVB,,r8X%Y8Q9
+
+MG0VJ9U8!NZ9DaHP#CiELAT,PBL"YrdT`!Y"#%*!!`&)X!!D3!(#*1d$rCM+!Qj*
+
+81`!"3IpS0#hp2T3JZ*4!5-+&r!#J#!)l3[P'm"-mm"FiP%&b'`B'3J!LK"5`)86
+
+3EG#h32P+dP"61d(j5))4,K-L88KaUk!#FP$(!J%!MJ-3UN9!f"KJ)18'@%&d@d@
+
+T%d&-e,4!p8*32("B3%+YrdB"-A"F3MmYq9DSKb"L@+L+S$AJ"JeUc6(5Ka5$!A"
+
+A#0'3!&h4'h"FGNjeJB`3rDhh!!)N+%"+E!!%CJ5!ecj`rl#Yr`UJGY+(-V"RGQB
+
+'+f`!%2pfd#jf3!d)S#C+3($*"($rB"3Z,IpfX'fkd)m!$JC`rbY!rhBJ"p!"&*S
+
+PfN2Yri43*5Y*qBD`1!(3YR!JX)V"D2Q8-@+J!RNJB4J"+21DF+@8hT&IIJ!X,Ir
+
+#%BErX!%!%k%`"f!b%#hrK@XF"!!!)@H!JK*U&&)!Da$!fES`#mlH3'$5X1%L$"#
+
+NY`*54m(hB,j-hh'`3!dJ5N"RQJF5!"m)mFeK62pkXI%!)"#@8hSSH!&-B%T%1P#
+
+N"T!!+!0R`5)&CL+J+!!!&!"L,!3S!!J4f3$rFLkbJ'B+dZ$)J&-1Z3"Jq!&3C`B
+
+S9#!-CX*`!01jN!$2G85S)"rJMAaP%*&1F'l3Re#cI%!,"))2J%,`3LFr2)&@S!h
+
+`J"&#C`4`X-9`""J'-,"63UHSB%SIC`UKCa"0[&L2EB$9,8UaYk')2*'9d'[rB$*
+
+1ZJYq-,"C'4ce2r@HG8H@ci91ZYV#Xl(aap3Yq%MRj*3(#'!E##c!#l"'X"8,'+3
+
+"#%+M,PJK!5#!K%kkjmB5S4)J,IrNd+hri1"Z+)#krDJ3Y1)369j1Z[X%+dcjH0(
+
+**!XV4S0[SJKK'2p-mTVlYR!3Y+S[$#m#!!DKb`Qd+ha3BA*dqBBVI&0*8&98)IQ
+
++9Y!0X'IBm&S+%%r)3%Q#X)d#&+VjJBl,#Q%BrZ)k,6#S!1$PK+"M8,"Y#!$Jrr5
+
+`$pMrq%*A%Lhrl%L"2kJL!A)!m"RaP"qcP"r`P"q%2`&9h3)8%G'J!3ArK2"D&QF
+
+'X!qUrrL5P3V4F@#@B%$kA)ml4FAGX+01X'hrk'FJNM`D5kRKdeG)!&!EfA)!3TV
+
+"d2T@X'IF%%rbP*81iZT2r&(3F"PQ6VS)H'$$Z[i'!3FPZl2%P3,!D"*dbd3"'2q
+
+&T!hNmK(FrrJq[!#U5J(`'He'(Hq8(l+8(qk8(i9h+`%FSM#&A9,`0"M#0L"@!%+
+
+LQ6`%rMp"rqU26%)8e0K*N[#Hq*l"@2PDN6aR'&8Yf@TKDIdSmIJ0"!!5PU!#B,$
+
+BZ$S!,SbMh`H@!Qhr+"$qrmk`3B,aVfF85N9R%2+,`QF)!4#`$m,jN!"J"J*Yr[r
+
+rcM"`c[Q144#`$mC3kQhrbR$bEIr3qDk`$p6jXL0N9r5L--jR&U&0rmjR$P8YfqV
+
+aVl$)$"%`X%'SDJBbBN&-lK$JrqM9,E#N"J!!T"0R#$YZ!"6j@Q#3!*hj@Y3-fS&
+
+UN!"-*Qi!$M"%5`b3!'aM"+&aS$EJ,j!!fJF+L*E`X@5Q+iJ-,J!Erq"`rJBGI0%
+
+h!'!3,[rJ5)!G[!!Z!1&5B%&")6"&)E&6EM"RZ[(+F*,Eid"$pJ$Ki%$D5!#SJ%M
+
+!S#i-4`2RE`5!25cKAG&K35JKE[rJi'`+B`!'9-0MCi3[#k%V6VT'6JIJ4T!!HB$
+
+rcYFG(`K!`2+@Nem#)N'MpN!L,NkkpS!Yi1IrhX#9e2rLFldpE4!TrmlrjN#Hb2r
+
+S`*A+ri"4rf#`e[l!!KJ!5J43Mr$9iBc+dSF#F!%G32q+L1ZJVKU`@kTQ"V"EVQF
+
+1`*@Urr6!P@%U)&CJ!RJ!8#h!#cm&-#qda(J+YE%"P2d%JXY&!*2!T)G[B8FJB[#
+
+HqZ6aQQB!!@SmD"3Yrl63UF+aM3#K!!&3,lX!B-8V4rP-"C4`dXFhcIUHp1SNd+Q
+
+kSl,@LR"`,J%L3&RiZNT'@)pQ"V#0)Iq&iZ8!!#*DKL,V('Tmi20i8dDJ!SD!5@(
+
+BU[5[dJ8SFSd$NGF%m#YYqFVjPX"VhT!!kQlrL+$LqE*!JHMjP%"$j[Q15J6ba3c
+
+!1i+#p&$LE[riqBU`UqZ`&#hrJQB)dE%MN8(5`$[mqC!!-30`#K$DGP0'TlIfaZ$
+
+N!P*i+YSB,@hjP2rDTbN%3X4M'UFTeCU!i'&Tq8!&m5jQ'Q#hi0#ZrpS[!+FTM&6
+
+jc[(5NUB!rUcA!IrUXUJ-e+Y)F$B-#'dJ+!!!9!!3CMVJE"$41k!VrU!VJ8rb""#
+
+TMD!VmLmmrrcrr+LT8%8$!!--5+LESl+!I4#SX+LHB%#4)fBkFCi`!)!S!!3#3!$
+
+r28$rrJa!!!h3(i!1EJ!$rrjQ((%f-1"qd6[KU%kkdLk4&X!p!3!8-"NZ!)&8jQG
+
+C%$IqJA`q2!0)#HKJ(U(,dMb`L3`4aJ"kSDZTN5m-3!+TJe*(9)r",84-S)%(U"p
+
++RfEUC0,569k#$r4`49*p)@iq%%"P8N)3'5!c+""!+d$h0"!`1$Y'raC#EIkUB$S
+
+`K3"!+["!+RC#VIUa5)ib,IP3!N(rJ!S2Ca"V!!$k)2!0-+(Q!",Z+Lhr!JMd!"+
+
+q$)8!!(riE3JK*RriB!)!3LJ&5'hq)%kk!['UCLm%2a$%pi"K,%kk!BkDK)0Mm#i
+
+5E3JQi"UaE#E0!Y&aQP"fF(hji)!V%Ai`3)&HQS01Z[F%P'C+%6-5Eea+EIPf-C!
+
+!qI#Hpk,b"J+45*&b2`B["#mYJRq%5S2aNQm`J+DU@[!bU[$`RAEb"Kb3!(+DS,)
+
+$N!#f`CKBpj,rXJSqNh)"Q*((3)'3!2!a+Y!Zq%#(,&L2B+l!(Z&c88'@P)E3l"k
+
+ejMYYq9,j6P!))Qr2KT(@*M-`(V"Ep'kJX!!5KX"lX'Erp'`'B)F)`24J"Z("IrJ
+
+Z!#YYpbMh0#9Z3#U+!**3rBT`#$6jKM-$,LhjML`(RDe8!2rdX8chN5mii'r@5SG
+
+Z&JaYrpN3#[PfC`SMj[D'9)p`e"J4K[5b6VT`9[+5@)mJ$TC#9!K@rl#mX+B5F(-
+
+1i&,dG""Z#R&-N3!I-"N!(d+X!!`jd-3!'%+3!)"X!#`Ti#%!*,"M#!!J)%bN!Z!
+
+Q!(*D,b`!+%kkp%l32LiS)&,A+r*#%J#!5HX!%%T8E[`q&%+V!!`RX'P%K!!JS)i
+
+-!#4JK5`hES"p'#",T-9r)J8-ifc4K$j`q[A!NS,de5X[$(!3d&JDVJ!)N!#"m)8
+
+ri$ReRU"lr08VJ"&0C`UTIA%fF"S3D!Ca0U*Q#m"S$Q$0X'N!Nm,M4@9`'"J*SQ$
+
+9+mr)1hcrrrQ#-Q9@d2q'3UJ+V[qB8T!!R(#bS($ISR#bTR"@KR!(SJP&GE5Q)Z!
+
+K)UlrYZ"aPYDU"hi"d-Q!0N!lXXY!5B*&5F(Y5N"Q&#!YqCEbVJB"$,"'I'!'8NG
+
+JcR!!f4N(qLEF*Yb0#%JFP"8+3Td%UEP!62`JEG$V+5"Yr`$ir#m3U&&1GDK36R8
+
+!N!0`!*!$J!!!#0`!N!0J!*!$)!)U2c`!!DR`!*)r2!!"UI!!TMmm!!'Tm!#k2c`
+
+!!DR`!0Br2!!"UI!"$$mm!!'Tm!%X2c`!!DR`!8ir2!!"UI!"EMmm!!'Tm!)S2c`
+
+!!DR`#CBr2!!#UI!YT$mm!!+Tm!#3!`S!J!!(#!!!"`J!N!3)!%!!6`"1!3#3"!J
+
+!,3"2!$d"!*!$!@`"E!#'!&m!l3&T!"%#r``!rj!%!&m!N!1'!!!"DJ#3!qi!N!F
+
+IJ!#!!)!!!"i!!3!+!)B!A`$Z!@S!-!#'!&m!l3&T!$!!e`"R!1F"BJ!I!*!(!3!
+
++!)d!CJ#Y!)B!N!!!"!!0!!i!,3!Z!!d!$J!Y!#i!M3"Q!+d!KJ#3!`%!N!-#J!!
+
+!"%!!!!NJ!!!6N!!!!#I)!!"""!!!J3)!!3!"!!)(`)!%$q"!#"KJ)"!Er"!N'T3
+
+)6"Vd**mb"$*-0HMj*$8S-K!hq#3)-1!)""rJ%!)!`#!"!r"!!)!!J!"!J3!!)))
+
+!!"2N!!!*b!!!"*!!!!!#)!!!!8!!N!1!!!!"!!S!PJ#-!+B!k!!0!!`!,J!%!*!
+
+&%!"S!3X!D!%,!#Z0SJY*ER0dB@aXD@jRb3!"!!S!X`#-!--!U3!U(39'D@aP1J!
+
+!!3!+!-3!C!$8!+N!+!$3!'8,5@jcG'&XE'PZCcS!r`!!"G0"4%05!3!'G`#3"JA
+
+$!!#iQ(KhGCGfKhH3!hKRKfKR0J)lX!SJ#&QL"L!)GSGRS!GeL&PeHAF!!(KSGfG
+
+cYQ@fGTGR4jSU5SGTrl!+KRJJ#'JN-b!)Gl%d)4JK0V%hX63L1L3pXca$!l!-)M0
+
+SBiCkS!H(T43K&BChKT!%!!#(GSD(Ch5RKMD)H(D(GTD(#!"hK+B36j+eP+D@KAK
+
+ePSD'G3!!TfH(KBH&PAGhKD1RNiH'P!!!KDKRKD@9KQKRGjCiGBChT3%KN!"aTR@
+
+@KBH9P3"pTBD&Kj&-GfF!#(CQQR@PP*GfPRD9%%U(GD@@4!H&KK"XKCD'J+Q9J*D
+
+4@j!!DDD&KT@'!!#9KN9TH(H(CfPBH@KiKhKQ!!#)D'KhGSGSD'PB@NYfL'PR3)#
+
+RF*q3!+5%)!L*&hGlTiD(Gm$@#)"RH(HJ@RGfFlD(PQD(GS@(-$)"!""+H'CfGiH
+
+'H(CfKU9RPhH(!!#(GQCCCePhDQ@'H*4hL(Gi%-1'KRD))aCfKiBJ#"!JPRGhGL!
+
+I!,d!J*D&PBD(GBKhKeGiGSCfPK"2!!Q(KRChKRKi9a"!KD838)D&KP-%)*KiX-4
+
+jChQ&KfPRD(KT30H(CJ"!PfKSGS9iKfHACh5L+(F`-RJ'#QLam$$4@@GDD*!$`(C
+
+RX"pSH&PB!!CfGfKiD&PT@'JbF%#'9hKRH(BJ!)KBChT'X"eSD'CiH'KS@@KT#!"
+
+S@@G!I@PCCfKRD@PAH@KC@8)8@F"f@(KR@F&mH&Kf3*TS3D4T@9N+JPM4[9T!KeP
+
+BD'C(-$ChKhD(Kk&',!"RPU"DX$4f%,')Gi@'LhB+q3Fi!KaAX(ThNAIAGhTR2$"
+
+b`(b`0fKfGdB4DF*i-(+(GfF`EeL`)'KiCl+)GiGh"2YfCj'DPeKRH9HJrD$q@6!
+
+bXG-a-U%8X64$Zl"a)ceSGhCSS"PhXH`M%AB`#k%1X4"f-ISB3LPhL$"4YMa+GdT
+
+dX"HNHNGfS!Ck%""+Jl+(S-U@KTCfH)GhJ(1@CEA!J*@@GhH'GT!!6K%TPPGhKCH
+
+&KS'C)4#`JAH9KR835hPSK*CfXc$YKU9h!!"@YQL&NlD9PB@9TC@9DB@9!!L&KSD
+
+AK)@fK+@9T2#hD*9QTJ%!m(Z'Nl@'Gj5@PCD&D*5(PBB!!)D6Y+1cTSD&KCCfKQ4
+
+TH'J"A$!MChPSH9P@KjKSX)k`L#$8H#!DH%"STS#[J6K(XH'*"hQhN!#FKa!rX&*
+
+Q#4-3XR5Q)#D'GhChS!JJ#)GP-2&eL)8!#(D(PAH'KiD@KACTZ45&PQ@BJ$jhKfH
+
+'GiGQNCah%#!J*U!1NNd!MSGPpJQA%$q3!%Ce)#13!&ZJ3L!()0&hKL!VPR@99S%
+
+"S-eiL'H(KeJJ-k$6PPQ)0iPTD3!)K*CRGeG,@,H!MJf`1BGSH8N*)L!D@QI"m%T
+
+SD@GT`-4RDAG"lfCS)!#(D(GDD,,lH'GU@@GAPAKhKJ!!L&GhD'GjGRDBD(9SL&L
+
+(@J!39hPR@AK*@(Gj5@KCX)&)H@F"S8#FD&PeDQKf6,"k@@P@PX"fGm"B#K*R3&Y
+
+B3,"T5AGCCm"BC8JJ"*D)G4!!KjD(P6&FGhH@D)ChK9U"eC8!!'LCG*Kh#IN+@QC
+
+BGiH4GhFb31NL&A@A)3M!E@Fl@AGh9hPAS&+A!H!`URGhGC9hHA@A9hGj@,!V)!L
+
+3!)`!qiGBPAKPLMPB))!K+)FK'V)hXaFJiM%0lq#a&b)e-#%a#fJJV#`e`'ef1*G
+
+RH5Np-mmN%5!'FX@'KTLJ3ab&,L!)%%L'KU#p58!!PfC)L%KSS6&iCUD(Ji@)H'B
+
+!!+G@KfT'LADRGSGdSSChH@B!J,C)CiSfL(HPTE(T1AKiGD%@!!"S@(PT5PNTDM`
+
+l4RKeLAD*%%"+9SJlX-q(9jFiKeDhK)L3!$US!3$!@dT*D9GU@9KRKeTeH'P@PaJ
+
+$Gh-)-9%`c(GhKl!JX&CfKTGBGhJ%!&KiX&aePEG`Mi#QKf9QH(SAr2phF!#3!`J
+
+!8J!*!'!"!J#3!a885@jcG'&XE#"cEfCdGf&bC5"KFcS!N!-)"b"'EfaNCA)!N!-
+
+'#3!*!2rr!*!$43-%J!#3!`8c,M!Z0$Jc,M!Z0#`J!+NJ-6Nj-#dj-L`J3@aKC'4
+
+TEL"6HA0dC@ec,#"*EQ-Z)'&ZC#"5BAPYEfjN)%aKG3#3!ai$")!!N!-&-bi`,M3
+
+48h4eCQC*G#"648%J-bi`,M3!N!-2!!)%)'pQ)!FJDA4PEA-Z!*!$!3#3"!%-!*!
+
+$$!!S!#J!YJ%F"!&993#3!``!)!!)!+)"(!##998!N!--!')!NJ$`!CJ!K999!*!
+
+$$!!S!#J!G3%m!)G993#3!``!4J#Q!,S"eJ#'998!N!--!#!!#!#L!4`!J&99!*!
+
+$$!!S!#J!VJ&1!,9993#3!a8!02qd!0i""3!"!3!"!*!&!qJ!N!5#!!%!N!9T!'-
+
+!I3#I"!*25`#3"cd!B!$cL'&8D'9bC5"TFb"ZEh3JC@j[G@GS)(*[EfdJEfiJdPi
+
+`db"dEb"`CA*QEh*Y)(4SC5"TER0dB@aXBA4TEfiZ)#""EL"KC'4TG'P[EQ&X)&i
+
+a)'*jG'9c)'&bC5"ZC@9NC@3Z#!#3!e)!!3#3"@d!CJ#"!+)%!Np,!*!&"!")!'F
+
+"!iJb8fpbFRNX)'*eG#"K)'4TFfXJFQ9XBA4PC#"PFR*[FL!SAM!T)'KKFb"[Bf0
+
+eFR*PC#i!N!-q!!%!N!8a!'F!43#Y"!44G@Pd!*!&#J"3!"`"%)JF5@jcG'&XE'&
+
+dD@pZ)(GKFb"cG@0MCA0cCR9X)3#3!bJ!!3#3"Bd!KJ#L!-S%#%0[ER4TER9P!*!
+
+&"!!%!))"6X!#!qJ!N!0q!!%!N!96!(-!C`#["!*25`#3"33!53"&!5k)A8&Z)'P
+
+dC@dJGf&c)'0[EA"bCA0cC@3JGfPdD#"K)'ePG'K[C#"dD'&d)(4SDA-JGQ9bFfP
+
+[EL"[CL"dD'8JFf9XCLePH(4bB@0dEh)JC'pPFb"ZEh3JD'&ZC'aP,J#3"&S!!3#
+
+3"9d!F!"a!+`%!Np,!*!(5J"9!41)1P0[FR*j,L!J5@jcG'&XE'&dD@pZ)'0KEL"
+
+[EQaj)'*P)("PFQC[FQePC#"[EL")4P-JGQpXG@ePFbi!N!0Z!!%!N!9S!(S!I!#
+
+f"!*25`#3"dJ!AJ%PL%j6EfeP)'PdC@ec)(GPFQ8JFfYTF("PC#"LC@0KGA0P)(4
+
+SCANJBA*P)'j[G#"cGA"`Eh*dC@3JBRNJG'KTFb"cC@aQ,A9ZFh4eCQCPFLi!N!0
+
+D!!%!N!9G!(!!F3#X"!*25`#3"dS!93%6L$T8D'8JCQPXC5$5AM$6)'eKH5"LC5"
+
+NB@eKCf9N,L!J8'aPBA0P)(9cC5"TG#"hDA4S)'0KGA4TEfiZ!!!#V!+X!(%!"J$
+
+[!9!!%3,r$!$rN!3!"J#3!h%!!!&3!*!$l`#3"`%!#J"a!!B!l`&3!!F!N!8)!!S
+
+!#6"*L$UeR2!j!#,m([`1!*!$#Iq3#!!M!*!$"`!"!!%!#!!)!$!!F3!(!1m"8!!
+
+X!!N!!`C(C@jPGQ%!!!-!!`!0!!N!,J!%!!!"!!!3!(i"5J"q!8S!+aem1N0[F(P
+
+bD@GSG##T-6Nj-#dj-L`J3@aKC'4TEL"6HA0dC@ec,#"*EQ-Z)'&ZC#"5BAPYEfj
+
+N)%aKG5i!!#Xq45*$EfeYCA*MD@&X)%4TFh4bD@*eG'P[EL"5CA0dFQPMG'9N!!!
+
+S!0%!$%98D'Pc)'PZFh4KE'aPFL"hBA-JBh*PBA4PC#"eFfPZCb"KEL""E'&NC'P
+
+Z)&0jFh4PEA-J8h4eCQC*G+SJF(*[C(9MG#i!+`F-3dC[FL"YEh*P)'PZCQpbE@&
+
+dD@pZ)'pZ)'aTBf9ZFfPZCb`JBfpZG'&MG#""E'&NC'PZ)&0jFh4PEA-X)%PZBbi
+
+JBA3!+`8-1M%f05"ACA0dFQPNCf8J4()X)&GKG(0[ERCTE'aP,#"$35!j06!h0L`
+
+J990")#Jd-$JT0cBa,6Bb-$!!!!%!#J#&!*S!T3#k!*!!!!3!K3#D!+8!ZJ#&!*S
+
+!T3#k!)8!QJ#P!,S!N!-"!*!$!S!!!!4!!!!*)!!!%j!!!!!Rb!!!333!!)%#!!%
+
+!!3!#"m#!"!rJ3!JBB#!3'r`3*"U8#%`Dp#5I-J3b6$ASq53e+$)30rJN#$$J#!3
+
+Ii"!#!-!J!32`3!#!!)!!3)%!!###!!!6j!!!#FJ!!!53!!!!!L!!!!&!!*!$J!!
+
+!!3!+!(%!"J$[!9!!+!#a!(8A8f9XCLe&H(4bB@0dD@jR)%&bBfKTGQ8!r`#3!`J
+
+!)#!"!!)!N!3"!!!"!*!$!S!!!!4!!!!*)!!!%j!!!!!Rb!!!333!!)%#!!%!!3!
+
+#"m#!"!rJ3!JBB#!3'r`3*"U8#%`Dp#5I-J3b6$ASq53e+$)30rJN#$$J#!3Ii"!
+
+#!-!J!32`3!#!!)!!3)%!!###!!!6j!!!#FJ!!!53!!!!!L!!!!&!!*!$J!!!!3#
+
+3!`1!!!!(`!!!$q!!!"r`!!!rq!!!Ir`!!2rq!!(rr`!$rrq!"rrr`!rrrq!Irrr
+
+`2rrrq(rrrrcrN!2qIrq3!crrrriIrrrm$rrrq!Irrr!$rrrJ!Irr`!$rri!!Irm
+
+!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!N!1!!*!%('&eFh3!N!-"4P*&4J#3"B"
+
+*3diM!*!&J!#3!bmZU5!a16N`,6Nb)%&XB@4ND@iJ8hPcG'9YFb`J5@jM)'&ZC#"
+
+5BAPYEfjN)%aKG3#3!`G"8&"-!*!'3!#!!8!#S!A3#!J4K#*+8Zfb5P'%))J3%!Z
+
+J"8!#J!%!!)!"`!2J"r!2q"rm2rjrrrrqIr`rq"r`$q!(`!1!!3#3!`8S!*!$#J#
+
+3!h*#H!T+RFj1ZJ!N3QG)H3!!rrp)E`!%5&G)H!!")MVrhNke%!!JE3"X6T!!UI4
+
+CMbmm@N956d*RUD!N9eQ2,ca%394"3QHTS#"A)&!LH!N)*&*J$M,BCJSb'Q!#3KP
+
+4bIrmZmPQlUQMUD0CMbmm4&*&6%*RUD!J9k!P)&$L3#30B!Bb'0@e%!"4b2riUD0
+
+1G5"I-KJd',"B9mRrqNT#Crj1m#$m)&mb'$3BX*KAbIrk5N*RrNl`)2SJAc)B0"L
+
+`3Qi+N!""E3E33%(`!!)`%'Iq6[!!!#![!!3[33!%)Lm!##pI!!4)jc`!*!!Q!8K
+
+#a--S!#S"5%A)aG4%5%+3!m$"d)*-h`!m)Kp1G5![!!3[33!%)Lm!##pI!!4)jc%
+
+!6VS!R%cI!)`L(dje)#m!"#p"!!3L,`!),em!"%MR-3"1ZJ"m)!&-h`#-)Kp1G5!
+
+[!!3[33!%)Lm!##pI!!4)jc%!6VS!,%cI!)`L(dje)#m!"#p"!!3L,`!),em!"%M
+
+R-3"1ZJ!-)!&-h`#-)Kp1G8U!DKa+J@S-4)"%J8kk!#"%J8je4)"1ZJ!@4)"%J8j
+
+e5S&U#N5"6VS!"N5!6R8Z2!!!rrqbJ'-')J"`!%jeX)GL$)$"5%!b!%*!5%"1GE+
+
+(BKSZ!%*!5%#!`8K!5%Fq!%K(MX%`"dK(-JG1G53!*J(LL1+*XSGLq)$"`)Fb!m,
+
+!,J0)4ml!5%I5Kf8)NS*L"%5"6R963'$N6R91F8+RB3!!&&L2C`TK!2h-B3!!qUR
+
+d6R'Tp%j@rrK)ja%B3JHK'Le)rrK+,J!,C`BJH!+QS"X[2!!!S2a1ZJ)5,8$rr&K
+
+2C`!!SL!m!!"!!+%H*NJJ#fF!!**CMbmm4%008$mm!)#S(bKI)!aQ"L",S"pJGLm
+
+-UC)J6+"N)%bJ+5"8)@lrr!!-)&3K5`!3,c`!!+'B6VS"ZNU!9X0%!dL$5--J9#&
+
+$!"3[&$mmS2`[2!!!S2a1ZJ&N@)mI!%kk!L![2!!!SCK1ZJ')5S"36fF%6VS#)$!
+
+i!9VJ3!a!!!CQ#%(k!#SKb!-mIJ%JE[riS"X3"dcZ')Mrk%jH6R@-5@jcG'&XE&"
+
+KG'0S!*!$6PB!!%MR!4K#"bmm!!#Jr%kk!6)S3#!-@%pR6#m-6VS!BNS!@%pR3#m
+
+X!!`r2+$m,c`!!+$m6VS!ePL2(`"1ZJ'5)%bK+#C))P-JD3!3S"mJ5k!M-$J"@Z"
+
+!$%!!"QB'F!!K`!-mIJ%3"dcZ')$rp%jH6R@,8Q9YEhCP8'&dBfJ!!%j@!!")ja!
+
+)+'i!#(B!$+a"6%&%!!*Q&!bX4%008!!'CJT`!E"X!!TQ!RB"%!0-lK!)rrK1ANj
+
+eLNPc6h9b8'&dBfJ!N!019J!!@Bmr2+KZF!%I!%kk!1CCMcmmUQj`!4m!6VS!f#!
+
+IX*pQ"M!m!J"J"$!m"!"1ANjeMdjeE94[Efa#EhK8FQ&`F`!!6PB!!#m$-$`)!-"
+
+Z!!Tb!$)!5S&5`d3$C`4`!@!#F!!Q,[rm6Pj1GBY(CA48FQ&`9(P`C3!!6PB!!%M
+
+R(`!q,J!+5-F["dkkrlJD!(!!%!8-3!!"@%pQ%!*("rp1Z[pFX%GZ"(!!B#TCMcm
+
+mU*p`!4m!6VS!2#JI@Bmr"am&6VS!-#`IZ)CA`d3$C`4`!'!#)!C-lJ$irqa1ANj
+
+eN!"0H8GPG&4bBA""C'4bCA0c!*!$)Pm5(c!I5J&R"+G'B!+M4Lk)6Y%LAa)I-"m
+
+JAdS"C`5Q4f!#SNG1d5*IF!'KQ%l4!!!$G'"@38a"4%4$69!!!3#3(%MRB2"d-Tr
+
+#,dJ!)#"2)P3aD3!8!"JK3!!N-A`!!3!XdT%K33!ZS!,I`NcI$`C1G5!U!!KR$#"
+
+!)""R"LmkrkC1G8MR(`C"q[qSF!`L+J!%`VJ$'Q'UCJ!!i%KkrjK1ZJ+-@%pR!!$
+
+#S4SZ#!JU!!B!"'F')(J#TU!E,#S!"#SU!!JB+J!%Pp59e#!krf5K(QB!!+)X5#!
+
+kreJL"X+i!aTB3@%!re`J1[p3`,J$'NU&CJ5K)Q!%)%@J*fCd+NK)H[mm,a!J1[m
+
+U8B![!#!18)![!#mkra4K!!"`h[`!&#"1S"mJ4k!EFJ!5"1F*iaRN%3!"!#!#!3$
+
+J)%fJD3)!!"q!!5"0S'V9e0I83IVqi%U3!'F)F!'KQ(!$SCJJ659)!!K`!%cIB2K
+
+1G8cIB2KJ!2m1)%kJ(pA8ep3J4k!E-$J#)$(!#Q#4b'$J)'m!#(!!%"!-!!!"CJE
+
+rrf!!!A")jamq3IS"DL*)*%JQ5#K)+NJX5#!))JJN##B)+!JU##`))'m!,0$m3!!
+
+Z2!!!!6SK#8MJrRj4crrk*'m!-&#+*Qm!1#K[!$$Cl`!d+NbDr!!JGJ"i!5S$)!-
+
+L!lR+C`!"!!a%!!&Q$KJD!)3!!3!!%"VK5)K!G!qlbQi#G!$LM'3!!+)X5h!!%"S
+
+m!!*'!!m#3!$`k8J5'S!",J$P50#[!#`J3#*3&YN@f4EC8Flrr#`m!*!$rdT$Ed`
+
+J6T($)NK`!"!Bd"M3%!*!!"l[50"&j8M3V`!X)%!JL9*&bSC93fBL8NNJ5A!!%"M
+
+3'0!3!N!!(Zp)d%AP50#[!#`J3##*8NA+KRB!!SIrN!-!hSAPMpk[!#`J4b#18NA
+
++KP(+rf"J!2mk&YT53`a$!!0Q+L",9dJL5(!!%"M3'0!3!N!!(Zp)d%AP50#[!#`
+
+J3##*8N8#K3#3!rpf!P(+rb4J!2lqPqm!1#"[!$`JLdcII2K1G5#3"DNa16Nb)%&
+
+XB@4ND@iJ8hPcG'9YFb`J5@jM,Nj@!!")ja!)+'i!#(B!F!!`&!b!!!""4'BQF!!
+
+`,!!#$)!!!%05CKJL,!!%3N&)3H"*8i'6J9+"$!%!!@B#GJ%3!dcZ%!Mrq%jH6R@
+
+3!%Pc8R0bBd0[EA"bCA0cC@3!N!B3!#X!"3%B!J#3"!mdq!-!N!-"!*!$3fB!!%*
+
+Q!!!$0J&#LiJDFJ#3!a`$!J!B4%&833#3!mTD49*2!*!$eN4548`!N!2L3dp%43!
+
+#!1j659T&!!!"%P*PBh3!!3%H8%P$9!!"!6C3Ff9d!!!"6P"bEfF!!!&D8e45)!!
+
+"!@C$Efab!!!"IRCPFR-!!3'+8e45)`!!!D*'Efjd!!%"VN&-8P3!"J('4%a24`!
+
+!!KT%594-!!F#*NCPBA3!!!+'5801)`!!!T*#6N4-!!!#RQ&eFh3!!!+U4P*&4J!
+
+!!VCTBh-M!!!#`N4$69!!!!,18f9dC`!!!YS!!2rr+!#3#Irr#!!$,J#3"[rr+!!
+
+$C3#3"3,rrcJ!!fN!N!8"rrmF!$QZ!8,5S!!!rrmS!#NP!*!%rj!%!!!TQ3#3##!
+
+!+DF!N!8"!!BJ!#Qc!*!&J2rr!!!T[`#3"!2Srrm!!$9-!*!&J2rr!!!V,`#3"3(
+
+rrb!!-3B!N!3#!!!-)!!a%J#3"!)"!"-J!$%V!*!&J!!F!!!a0`#3"3(rrb!!-8%
+
+!N!8#rrmJ!$'+!*!&J2rr!!!aV!#3"B!!*L!!-Em!N!@"!#mJ!$(%!*!%"!(rrb!
+
+!-FN!N!@#rrmJ!$(C!*!&KIrr*!!ak3&#dd`!Krrr)!!aq3#3"BErrb3!-JN"3Y*
+
+J!)$rrb!!-KN!N!@"rrmJ!$)T!*!%!qMrrb!!-MN!N!3%!Irr)!!b8J#3"BArrb3
+
+!-YJ"3Y+X!)Irr`!!-bi!N!3$k2rr)!!cF!#3"BErrb3!-j`"3Y+N!)$rr`!!0"i
+
+!N!@errmJ!$4m!*!&J[rr!!!dlJ#3"[rr)!!hr!#3"B$rrb!!1!J!N!@!rrm!!$N
+
+-!*!'rrm!!$NX!*!&J2rr!!!jA`#3"B$rr`!!1@S!N!@!rrm!!$lD!*!'rrm!!%*
+
+5!8,5R!9Q6Q&YC39MEh9ZG!C`FQpYF(3)a#"cG@CQDAJ*Fh4KG#"MEfab#%jeE5p
+
+1B@eP"&0THQ@-M3:
+
diff --git a/js/games/nluqo.github.io/~bh/downloads/ucblogo.tar.gz b/js/games/nluqo.github.io/~bh/downloads/ucblogo.tar.gz
new file mode 100644
index 0000000..b6ac8fb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/ucblogo.tar.gz
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/downloads/ucbwlogosetup.exe b/js/games/nluqo.github.io/~bh/downloads/ucbwlogosetup.exe
new file mode 100644
index 0000000..b942e1a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/ucbwlogosetup.exe
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/downloads/usermanual b/js/games/nluqo.github.io/~bh/downloads/usermanual
new file mode 100644
index 0000000..0fecca1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/downloads/usermanual
@@ -0,0 +1,4189 @@
+Berkeley Logo User Manual
+
+ *	Copyright (C) 1993 by the Regents of the University of California
+ *
+ *      This program is free software; you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation; either version 2 of the License, or
+ *      (at your option) any later version.
+ *  
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *  
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program; if not, write to the Free Software
+ *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+This is a program that is still being written.  Many things are missing,
+including adequate documentation.  This manual assumes that you already know
+how to program in Logo, and merely presents the details of this new
+implementation.  Read _Computer_Science_Logo_Style,_Volume_1:_
+_Symbolic_Computing_ by Brian Harvey (MIT Press, 1997) for a tutorial
+on Logo programming with emphasis on symbolic computation.
+
+Here are the special features of this dialect of Logo:
+
+	Source file compatible among Unix, DOS, Windows, and Mac platforms.
+
+	Random-access arrays.
+
+	Variable number of inputs to user-defined procedures.
+
+	Mutators for list structure (dangerous).
+
+	Pause on error, and other improvements to error handling.
+
+	Comments and continuation lines; formatting is preserved when
+	procedure definitions are saved or edited.
+
+	Terrapin-style tokenization (e.g., [2+3] is a list with one member)
+	but LCSI-style syntax (no special forms except TO).  The best of
+	both worlds.
+
+	First-class instruction and expression templates (see APPLY).
+
+	Macros.
+
+Features *not* found in Berkeley Logo include robotics, music, GUIs, animation,
+parallelism, and multimedia.  For those, buy a commercial version.
+
+
+GETTER/SETTER VARIBLE SYNTAX
+============================
+
+Logo distinguishes PROCEDURES from VARIABLES.  A procedure is a set of
+instructions to carry out some computation; a variable is a named
+container that holds a data value such as a number, word, list, or array.
+
+In traditional Logo syntax, a non-numeric word typed without punctuation
+represents a request to invoke the procedure named by that word.  A word
+typed with a preceding quotation mark represents the word itself.  For
+example, in the instruction
+	PRINT FIRST "WORD
+the procedures named FIRST and PRINT are invoked, but the procedure
+named WORD is not invoked; the word W-O-R-D is the input to FIRST.
+
+What about variables?  There are two things one can do with a variable:
+give it a value, and find out its value.  To give a variable a value,
+Logo provides the primitive procedure MAKE, which requires two inputs:
+the name of the variable and the new value to be assigned.  The first
+input, the name of the variable, is just a word, and if (as is almost
+always the case) the programmer wants to assign a value to a specific
+variable whose name is known in advance, that input is quoted, just
+as any known specific word would be:
+	MAKE "MY.VAR FIRST "WORD
+gives the variable named MY.VAR the value W (the first letter of WORD).
+
+To find the value of a variable, Logo provides the primitive procedure
+THING, which takes a variable name as its input, and outputs the value
+of the accessible variable with that name.  Thus
+	PRINT THING "MY.VAR
+will print W (supposing the MAKE above has been done).  Since finding
+the value of a specific, known variable name is such a common operation,
+Logo also provides an abbreviated notation that combines THING with quote:
+	PRINT :MY.VAR
+The colon (which Logo old-timers pronounce "dots") replaces THING and "
+in the earlier version of the instruction.
+
+Newcomers to Logo often complain about the need for all this punctuation.
+In particular, Logo programmers who learned about dots and quotes without
+also learning about THING wonder why an instruction such as
+	MAKE "NEW.VAR :OLD.VAR
+uses two different punctuation marks to identify the two variables.
+(Having read the paragraphs above, you will understand that actually
+both variable names are quoted, but the procedure THING is invoked to
+find the value of OLD.VAR, since it's that value, not OLD.VAR's name,
+that MAKE needs to know.  It wouldn't make sense to ask for THING of
+NEW.VAR, since we haven't given NEW.VAR a value yet.)
+
+Although Logo's punctuation rules make sense once understood, they
+do form a barrier to entry for the Logo beginner.  Why, then, couldn't
+Logo be designed so that an unpunctuated word would represent a
+procedure if there is a procedure by that name, or a variable if
+there is a variable by that name?  Then we could say
+	PRINT MY.VAR
+and Logo would realize that MY.VAR is the name of a variable, not
+of a procedure.  The traditional reason not to use this convention
+is that Logo allows the same word to name a procedure and a variable
+at the same time.  This is most often important for words that name
+data types, as in the following procedure:
+	TO PLURAL :WORD
+	OUTPUT WORD :WORD "S
+	END
+Here the name WORD is a natural choice for the input to PLURAL, since
+it describes the kind of input that PLURAL expects.  Within the procedure,
+we use WORD to represent Logo's primitive procedure that combines two
+input words to form a new, longer word; we use :WORD to represent the
+variable containing the input, whatever actual word is given when
+PLURAL is invoked.
+	? PRINT PLURAL "COMPUTER
+	COMPUTERS
+
+However, if a Logo instruction includes an unquoted word that is *not*
+the name of a procedure, Logo could look for a variable of that name
+instead.  This would allow a "punctuationless" Logo, ** PROVIDED THAT
+USERS WHO WANT TO WORK WITHOUT COLONS FOR VARIABLES CHOOSE VARIABLE
+NAMES THAT ARE NOT ALSO PROCEDURE NAMES. **
+
+What about assigning a value to a variable?  Could we do without
+the quotation mark on MAKE's first input?  Alas, no.  Although the
+first input to MAKE is *usually* a constant, known variable name,
+sometimes it isn't, as in this example:
+	TO INCREMENT :VAR
+	MAKE :VAR (THING :VAR)+1	; Note: it's not "VAR here!
+	END
+
+	? MAKE "X 5
+	? INCREMENT "X
+	? PRINT :X
+	6
+The procedure INCREMENT takes a variable name as its input and
+changes the value of that variable.  In this example there are
+two variables; the variable whose name is VAR, and whose value
+is the word X; and the variable whose name is X and whose value
+changes from 5 to 6.  Suppose we changed the behavior of MAKE so
+that it took the word after MAKE as the name of the variable to
+change; we would be unable to write INCREMENT:
+	TO INCREMENT :VAR	; nonworking!
+	MAKE VAR (THING VAR)+1
+	END
+This would assign a new value to VAR, not to X.
+
+What we can do is to allow an *alternative* to MAKE, a "setter"
+procedure for a particular variable.  The notation will be
+	? SETFOO 7
+	? PRINT FOO
+	7
+SETFOO is a "setter procedure" that takes one input (in this case
+the input 7) and assigns its value to the variable named FOO.
+
+Berkeley Logo allows users to choose either the traditional notation,
+in which case the same name can be used both for a procedure and for
+a variable, or the getter/setter notation, in which variable FOO is
+set with SETFOO and examined with FOO, but the same name can't be
+used for procedure and variable.
+
+Here is how this choice is allowed:  Berkeley Logo uses traditional notation,
+with procedures distinct from variables.  However, if there is a variable
+named AllowGetSet whose value is TRUE (which there is, by default, when
+Logo starts up), then if a Logo instruction refers to a *nonexistent*
+procedure (so that the error message "I don't know how to ..." would result),
+Logo tries the following two steps:
+
+	1.  If the name is at least four characters long, and the first three
+	characters are the letters SET (upper or lower case), and if the name
+	is followed in the instruction by another value, and if the name
+	without the SET is the name of a variable that already exists, then
+	Logo will invoke MAKE with its first input being the name without the
+	SET, and its second input being the following value.
+
+	2.  If step 1's conditions are not met, but the name is the name of an
+	accessible variable, then Logo will invoke THING with that name as
+	input, to find the variable's value.
+
+Step 1 requires that the variable already exist so that misspellings of names
+of SETxxx primitives (e.g., SETHEADING) will still be caught, instead of
+silently creating a new variable.  The command GLOBAL can be used to create
+a variable without giving it a value.
+
+One final point:  The TO command in Logo has always been a special
+case; the rest of the line starting with TO is not evaluated as
+ordinary Logo expressions are.  In particular, the colons used to
+mark the names of inputs to the procedure do not cause THING to be
+invoked.  They are merely mnemonic aids, reminding the Logo user
+that these words are names of variables.  (Arguably, this nonstantard
+behavior of TO adds to Logo beginners' confusion about colons.)
+To a programmer using colonless variable references, the colons in
+the TO line are unnecessary and meaningless.  Berkeley Logo therefore
+makes the colons optional:
+	TO FOO :IN1 :IN2
+and
+	TO FOO IN1 IN2
+are both allowed.
+
+
+ENTERING AND LEAVING LOGO
+=========================
+
+The process to start Logo depends on your operating system:
+
+Unix:	 Type the word {\tt logo} to the shell.  (The directory in which
+	 you've installed Logo must be in your path.)
+
+DOS:	 Change directories to the one containing Logo (probably
+	 C:\UCBLOGO).  Then type UCBLOGO for the large memory
+	 version, or BL for the 640K version.
+
+Mac:	 Double-click on the LOGO icon within the "UCB Logo" folder.
+
+Windows: Double-click on the UCBWLOGO icon in the UCBLOGO folder.
+
+To leave Logo, enter the command "bye".
+
+On startup, Logo looks for a file named "startup.lg" in the system Logo
+library and, if found, loads it.  Then it looks for "startup.lg" in the
+user's home directory, or the current directory, depending on the operating
+system, and loads that.  These startup files can be used to predefine
+procedures, e.g., to provide non-English names for primitive procedures.
+
+Under Unix, DOS, or Windows, if you include one or more filenames on the
+command line when starting Logo, those files will be loaded before the
+interpreter starts reading commands from your terminal.  If you load a file
+that executes some program that includes a "bye" command, Logo will run that
+program and exit.  You can therefore write standalone programs in Logo and run
+them with shell/batch scripts.  To support this technique, Logo does not print
+its usual welcoming and parting messages if you give file arguments to the
+logo command.
+
+If a command line argument is just a hyphen, then all command line arguments
+after the hyphen are not taken as filenames, but are instead collected in a
+list, one word per argument; the buried variable COMMAND.LINE contains that
+list of arguments, or the empty list if there are none.  On my Linux system,
+if the first line of an executable shell script is
+#!/usr/local/bin/logo -
+(note the hyphen) then the script can be given command line arguments and
+they all end up in :COMMAND.LINE along with the script's path.  Experiment.
+
+If you type your interrupt character (see table below) Logo will stop what
+it's doing and return to toplevel, as if you did THROW "TOPLEVEL.  If you
+type your quit character Logo will pause as if you did PAUSE.
+
+               wxWidgets       Unix        DOS/Windows          Mac
+
+toplevel         alt-S    usually ctrl-C     ctrl-Q      command-. (period)
+
+pause            alt-P    usually ctrl-\     ctrl-W      command-, (comma)
+
+If you have an environment variable called LOGOLIB whose value is the name of
+a directory, then Logo will use that directory instead of the default
+library.  If you invoke a procedure that has not been defined, Logo first
+looks for a file in the current directory named proc.lg where "proc" is the
+procedure name in lower case letters.  If such a file exists, Logo loads
+that file.  If the missing procedure is still undefined, or if there is no
+such file, Logo then looks in the library directory for a file named proc
+(no ".lg") and, if it exists, loads it.  If neither file contains a
+definition for the procedure, then Logo signals an error.  Several
+procedures that are primitive in most versions of Logo are included in the
+default library, so if you use a different library you may want to include
+some or all of the default library in it.
+
+
+TOKENIZATION
+============
+
+Names of procedures, variables, and property lists are case-insensitive.  So
+are the special words END, TRUE, and FALSE.  Case of letters is preserved
+in everything you type, however.
+
+Within square brackets, words are delimited only by spaces and square
+brackets.  [2+3] is a list containing one word.  Note, however, that the
+Logo primitives that interpret such a list as a Logo instruction or
+expression (RUN, IF, etc.) reparse the list as if it had not been typed
+inside brackets.
+
+After a quotation mark outside square brackets, a word is delimited by
+a space, a square bracket, or a parenthesis.
+
+A word not after a quotation mark or inside square brackets is delimited
+by a space, a bracket, a parenthesis, or an infix operator +-*/=<>.  Note
+that words following colons are in this category.  Note that quote and
+colon are not delimiters.  Each infix operator character is a word in
+itself, except that the two-character sequences <= >= and <> (the latter
+meaning not-equal) with no intervening space are recognized as a single
+word.
+
+A word consisting of a question mark followed by a number (e.g., ?37),
+when runparsed (i.e., where a procedure name is expected), is treated
+as if it were the sequence
+
+	( ? 37 )
+
+making the number an input to the ? procedure.  (See the discussion of
+templates, below.)  This special treatment does not apply to words read
+as data, to words with a non-number following the question mark, or if
+the question mark is backslashed.
+
+A line (an instruction line or one read by READLIST or READWORD) can be
+continued onto the following line if its last character is a tilde (~).
+READWORD preserves the tilde and the newline; READLIST does not.
+
+Lines read with READRAWLINE are never continued.
+
+An instruction line or a line read by READLIST (but not by READWORD)
+is automatically continued to the next line, as if ended with a tilde,
+if there are unmatched brackets, parentheses, braces, or vertical bars
+pending.  However, it's an error if the continuation line contains
+only the word END; this is to prevent runaway procedure definitions.
+Lines eplicitly continued with a tilde avoid this restriction.
+
+If a line being typed interactively on the keyboard is continued, either
+with a tilde or automatically, Logo will display a tilde as a prompt
+character for the continuation line.
+
+A semicolon begins a comment in an instruction line.  Logo ignores
+characters from the semicolon to the end of the line.  A tilde as the
+last character still indicates a continuation line, but not a continuation
+of the comment.  For example, typing the instruction
+
+	print "abc;comment ~
+	def
+
+will print the word abcdef.  Semicolon has no special meaning in data
+lines read by READWORD or READLIST, but such a line can later be reparsed
+using RUNPARSE and then comments will be recognized.
+
+The two-character sequence #! at the beginning of a line also starts a
+comment.  Unix users can therefore write a file containing Logo commands,
+starting with the line
+
+	#! /usr/local/bin/logo
+
+(or wherever your Logo executable lives) and the file will be executable
+directly from the shell.
+
+To include an otherwise delimiting character (including semicolon or tilde)
+in a word, precede it with backslash (\).  If the last character of a line
+is a backslash, then the newline character following the backslash will be
+part of the last word on the line, and the line continues onto the following
+line.  To include a backslash in a word, use \\.  If the combination
+backslash-newline is entered at the terminal, Logo will issue a backslash as
+a prompt character for the continuation line.  All of this applies to data
+lines read with READWORD or READLIST as well as to instruction lines.
+
+A line read with READRAWLINE has no special quoting mechanism; both
+backslash and vertical bar (described below) are just ordinary characters.
+
+An alternative notation to include otherwise delimiting characters in words is
+to enclose a group of characters in vertical bars.  All characters between
+vertical bars are treated as if they were letters.  In data read with READWORD
+the vertical bars are preserved in the resulting word.  In data read with
+READLIST (or resulting from a PARSE or RUNPARSE of a word) the vertical bars
+do not appear explicitly; all potentially delimiting characters (including
+spaces, brackets, parentheses, and infix operators) appear unmarked, but
+tokenized as though they were letters.  Within vertical bars, backslash may
+still be used; the only characters that must be backslashed in this context
+are backslash and vertical bar themselves.
+
+Characters entered between vertical bars are forever special, even if the
+word or list containing them is later reparsed with PARSE or RUNPARSE.
+Characters typed after a backslash are treated somewhat differently:  When a
+quoted word containing a backslashed character is runparsed, the backslashed
+character loses its special quality and acts thereafter as if typed normally.
+This distinction is important only if you are building a Logo expression out
+of parts, to be RUN later, and want to use parentheses.  For example,
+
+	PRINT RUN (SE "\( 2 "+ 3 "\))
+
+will print 5, but
+
+	RUN (SE "MAKE ""|(| 2)
+
+will create a variable whose name is open-parenthesis.  (Each example would
+fail if vertical bars and backslashes were interchanged.)
+
+A character entered with backslash is EQUALP to the same character without the
+backslash, but can be distinguished by the VBARREDP predicate.  (However,
+VBARREDP returns TRUE only for characters for which special treatment is
+necessary: whitespace, parentheses, brackets, infix operators, backslash,
+vertical bar, tilde, quote, question mark, colon, and semicolon.)
+
+
+DATA STRUCTURE PRIMITIVES
+=========================
+
+CONSTRUCTORS
+------------
+
+WORD word1 word2
+(WORD word1 word2 word3 ...)
+
+	outputs a word formed by concatenating its inputs.
+
+LIST thing1 thing2
+(LIST thing1 thing2 thing3 ...)
+
+	outputs a list whose members are its inputs, which can be any
+	Logo datum (word, list, or array).
+
+SENTENCE thing1 thing2
+SE thing1 thing2
+(SENTENCE thing1 thing2 thing3 ...)
+(SE thing1 thing2 thing3 ...)
+
+	outputs a list whose members are its inputs, if those inputs are
+	not lists, or the members of its inputs, if those inputs are lists.
+
+FPUT thing list
+
+	outputs a list equal to its second input with one extra member,
+	the first input, at the beginning.  If the second input is a word,
+	then the first input must be a one-letter word, and FPUT is
+	equivalent to WORD.
+
+LPUT thing list
+
+	outputs a list equal to its second input with one extra member,
+	the first input, at the end.  If the second input is a word,
+	then the first input must be a one-letter word, and LPUT is
+	equivalent to WORD with its inputs in the other order.
+
+ARRAY size
+(ARRAY size origin)
+
+	outputs an array of "size" members (must be a positive integer),
+	each of which initially is an empty list.  Array members can be
+	selected with ITEM and changed with SETITEM.  The first member of
+	the array is member number 1 unless an "origin" input (must be an
+	integer) is given, in which case the first member of the array has
+	that number as its index.  (Typically 0 is used as the origin if
+	anything.)  Arrays are printed by PRINT and friends, and can be
+	typed in, inside curly braces; indicate an origin with {a b c}@0.
+
+MDARRAY sizelist					(library procedure)
+(MDARRAY sizelist origin)
+
+	outputs a multi-dimensional array.  The first input must be a list
+	of one or more positive integers.  The second input, if present,
+	must be a single integer that applies to every dimension of the array.
+	Ex: (MDARRAY [3 5] 0) outputs a two-dimensional array whose members
+	range from [0 0] to [2 4].
+
+LISTTOARRAY list
+(LISTTOARRAY list origin)
+
+	outputs an array of the same size as the input list, whose members
+	are the members of the input list.
+
+ARRAYTOLIST array
+
+	outputs a list whose members are the members of the input array.
+	The first member of the output is the first member of the array,
+	regardless of the array's origin.
+
+COMBINE thing1 thing2					(library procedure)
+
+	if thing2 is a word, outputs WORD thing1 thing2.  If thing2 is a list,
+	outputs FPUT thing1 thing2.
+
+REVERSE list						(library procedure)
+
+	outputs a list whose members are the members of the input list, in
+	reverse order.
+
+GENSYM							(library procedure)
+
+	outputs a unique word each time it's invoked.  The words are of the
+	form G1, G2, etc.
+
+
+SELECTORS
+---------
+
+FIRST thing
+
+	if the input is a word, outputs the first character of the word.
+	If the input is a list, outputs the first member of the list.
+	If the input is an array, outputs the origin of the array (that
+	is, the INDEX OF the first member of the array).
+
+FIRSTS list
+
+	outputs a list containing the FIRST of each member of the input
+	list.  It is an error if any member of the input list is empty.
+	(The input itself may be empty, in which case the output is also
+	empty.)  This could be written as
+
+		to firsts :list
+		output map "first :list
+		end
+
+	but is provided as a primitive in order to speed up the iteration
+	tools MAP, MAP.SE, and FOREACH.
+ 
+		to transpose :matrix
+		if emptyp first :matrix [op []]
+		op fput firsts :matrix transpose bfs :matrix
+		end
+
+LAST wordorlist
+
+	if the input is a word, outputs the last character of the word.
+	If the input is a list, outputs the last member of the list.
+
+BUTFIRST wordorlist
+BF wordorlist
+
+	if the input is a word, outputs a word containing all but the first
+	character of the input.  If the input is a list, outputs a list
+	containing all but the first member of the input.
+
+BUTFIRSTS list
+BFS list
+
+	outputs a list containing the BUTFIRST of each member of the input
+	list.  It is an error if any member of the input list is empty or an
+	array.  (The input itself may be empty, in which case the output is
+	also empty.)  This could be written as
+
+		to butfirsts :list
+		output map "butfirst :list
+		end
+
+	but is provided as a primitive in order to speed up the iteration
+	tools MAP, MAP.SE, and FOREACH.
+
+BUTLAST wordorlist
+BL wordorlist
+
+	if the input is a word, outputs a word containing all but the last
+	character of the input.  If the input is a list, outputs a list
+	containing all but the last member of the input.
+
+ITEM index thing
+
+	if the "thing" is a word, outputs the "index"th character of the
+	word.  If the "thing" is a list, outputs the "index"th member of
+	the list.  If the "thing" is an array, outputs the "index"th
+	member of the array.  "Index" starts at 1 for words and lists;
+	the starting index of an array is specified when the array is
+	created.
+
+MDITEM indexlist array					(library procedure)
+
+	outputs the member of the multidimensional "array" selected by
+	the list of numbers "indexlist".
+
+PICK list						(library procedure)
+
+	outputs a randomly chosen member of the input list.
+
+REMOVE thing list					(library procedure)
+
+	outputs a copy of "list" with every member equal to "thing" removed.
+
+REMDUP list						(library procedure)
+
+	outputs a copy of "list" with duplicate members removed.  If two or
+	more members of the input are equal, the rightmost of those members
+	is the one that remains in the output.
+
+QUOTED thing						(library procedure)
+
+	outputs its input, if a list; outputs its input with a quotation
+	mark prepended, if a word.
+
+
+MUTATORS
+--------
+
+SETITEM index array value
+
+	command.  Replaces the "index"th member of "array" with the new
+	"value".  Ensures that the resulting array is not circular, i.e.,
+	"value" may not be a list or array that contains "array".
+
+MDSETITEM indexlist array value				(library procedure)
+
+	command.  Replaces the member of "array" chosen by "indexlist"
+	with the new "value".
+
+.SETFIRST list value
+
+	command.  Changes the first member of "list" to be "value".
+
+	WARNING:  Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of .SETFIRST can
+	lead to circular list structures, which will get some Logo primitives
+	into infinite loops, and to unexpected changes to other data
+	structures that share storage with the list being modified.
+
+.SETBF list value
+
+	command.  Changes the butfirst of "list" to be "value".
+
+	WARNING: Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of .SETBF can
+	lead to circular list structures, which will get some Logo primitives
+	into infinite loops; unexpected changes to other data structures that
+	share storage with the list being modified; or to Logo crashes and
+	coredumps if the butfirst of a list is not itself a list.
+
+.SETITEM index array value
+
+	command.  Changes the "index"th member of "array" to be "value",
+	like SETITEM, but without checking for circularity.
+
+	WARNING: Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of .SETITEM
+	can lead to circular arrays, which will get some Logo primitives into
+	infinite loops.
+
+PUSH stackname thing					(library procedure)
+
+	command.  Adds the "thing" to the stack that is the value of the
+	variable whose name is "stackname".  This variable must have a list
+	as its value; the initial value should be the empty list.  New
+	members are added at the front of the list.
+
+POP stackname						(library procedure)
+
+	outputs the most recently PUSHed member of the stack that is the
+	value of the variable whose name is "stackname" and removes that
+	member from the stack.
+
+QUEUE queuename thing					(library procedure)
+
+	command.  Adds the "thing" to the queue that is the value of the
+	variable whose name is "queuename".  This variable must have a list
+	as its value; the initial value should be the empty list.  New
+	members are added at the back of the list.
+
+DEQUEUE queuename					(library procedure)
+
+	outputs the least recently QUEUEd member of the queue that is the
+	value of the variable whose name is "queuename" and removes that
+	member from the queue.
+
+
+PREDICATES
+----------
+
+WORDP thing
+WORD? thing
+
+	outputs TRUE if the input is a word, FALSE otherwise.
+
+LISTP thing
+LIST? thing
+
+	outputs TRUE if the input is a list, FALSE otherwise.
+
+ARRAYP thing
+ARRAY? thing
+
+	outputs TRUE if the input is an array, FALSE otherwise.
+
+EMPTYP thing
+EMPTY? thing
+
+	outputs TRUE if the input is the empty word or the empty list,
+	FALSE otherwise.
+
+EQUALP thing1 thing2
+EQUAL? thing1 thing2
+thing1 = thing2
+
+	outputs TRUE if the inputs are equal, FALSE otherwise.  Two numbers
+	are equal if they have the same numeric value.  Two non-numeric words
+	are equal if they contain the same characters in the same order.  If
+	there is a variable named CASEIGNOREDP whose value is TRUE, then an
+	upper case letter is considered the same as the corresponding lower
+	case letter.  (This is the case by default.)  Two lists are equal if
+	their members are equal.  An array is only equal to itself; two
+	separately created arrays are never equal even if their members are
+	equal.  (It is important to be able to know if two expressions have
+	the same array as their value because arrays are mutable; if, for
+	example, two variables have the same array as their values then
+	performing SETITEM on one of them will also change the other.)
+
+NOTEQUALP thing1 thing2
+NOTEQUAL? thing1 thing2
+thing1 <> thing2
+
+	outputs FALSE if the inputs are equal, TRUE otherwise.  See EQUALP
+	for the meaning of equality for different data types.
+
+BEFOREP word1 word2
+BEFORE? word1 word2
+
+	outputs TRUE if word1 comes before word2 in ASCII collating sequence
+	(for words of letters, in alphabetical order).  Case-sensitivity is
+	determined by the value of CASEIGNOREDP.  Note that if the inputs are
+	numbers, the result may not be the same as with LESSP; for example,
+	BEFOREP 3 12 is false because 3 collates after 1.
+
+.EQ thing1 thing2
+
+	outputs TRUE if its two inputs are the same datum, so that applying a
+	mutator to one will change the other as well.  Outputs FALSE otherwise,
+	even if the inputs are equal in value.
+	WARNING: Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of mutators
+	can lead to circular data structures, infinite loops, or Logo crashes.
+
+MEMBERP thing1 thing2
+MEMBER? thing1 thing2
+
+	if "thing2" is a list or an array, outputs TRUE if "thing1" is EQUALP
+	to a member of "thing2", FALSE otherwise.  If "thing2" is
+	a word, outputs TRUE if "thing1" is a one-character word EQUALP to a
+	character of "thing2", FALSE otherwise.
+
+SUBSTRINGP thing1 thing2
+SUBSTRING? thing1 thing2
+
+	if "thing1" or "thing2" is a list or an array, outputs FALSE.  If
+	"thing2" is a word, outputs TRUE if "thing1" is EQUALP to a
+	substring of "thing2", FALSE otherwise.
+
+NUMBERP thing
+NUMBER? thing
+
+	outputs TRUE if the input is a number, FALSE otherwise.
+
+VBARREDP char
+VBARRED? char
+BACKSLASHEDP char                               (library procedure)
+BACKSLASHED? char                               (library procedure)
+
+	outputs TRUE if the input character was originally entered into Logo
+	within vertical bars (|) to prevent its usual special syntactic
+	meaning, FALSE otherwise.  (Outputs TRUE only if the character is a
+	backslashed space, tab, newline, or one of ()[]+-*/=<>":;\~?| )
+
+	The names BACKSLASHEDP and BACKSLASHED? are included in the Logo
+	library for backward compatibility with the former names of this
+	primitive, although it does *not* output TRUE for characters
+	originally entered with backslashes.
+
+
+QUERIES
+-------
+
+COUNT thing
+
+	outputs the number of characters in the input, if the input is a word;
+	outputs the number of members in the input, if it is a list
+	or an array.  (For an array, this may or may not be the index of the
+	last member, depending on the array's origin.)
+
+ASCII char
+
+	outputs the integer (between 0 and 255) that represents the input
+	character in the ASCII code.  Interprets control characters as
+	representing vbarred punctuation, and returns the character code
+	for the corresponding punctuation character without vertical bars.
+	(Compare RAWASCII.)
+
+RAWASCII char
+
+	outputs the integer (between 0 and 255) that represents the input
+	character in the ASCII code.  Interprets control characters as
+	representing themselves.  To find out the ASCII code of an arbitrary
+	keystroke, use RAWASCII RC.
+
+CHAR int
+
+	outputs the character represented in the ASCII code by the input,
+	which must be an integer between 0 and 255.
+
+MEMBER thing1 thing2
+
+	if "thing2" is a word or list and if MEMBERP with these inputs would
+	output TRUE, outputs the portion of "thing2" from the first instance
+	of "thing1" to the end.  If MEMBERP would output FALSE, outputs the
+	empty word or list according to the type of "thing2".  It is an error
+	for "thing2" to be an array.
+
+LOWERCASE word
+
+	outputs a copy of the input word, but with all uppercase letters
+	changed to the corresponding lowercase letter.
+
+UPPERCASE word
+
+	outputs a copy of the input word, but with all lowercase letters
+	changed to the corresponding uppercase letter.
+
+STANDOUT thing
+
+	outputs a word that, when printed, will appear like the input but
+	displayed in standout mode (boldface, reverse video, or whatever your
+	version does for standout).  The word contains machine-specific
+	magic characters at the beginning and end; in between is the printed
+	form (as if displayed using TYPE) of the input.  The output is always
+	a word, even if the input is of some other type, but it may include
+	spaces and other formatting characters.  Note: a word output by
+	STANDOUT while Logo is running on one machine will probably not have
+	the desired effect if printed on another type of machine.
+
+	In the Macintosh classic version, the way that standout works is
+	incompatible with the use of characters whose ASCII code is greater
+	than 127.  Therefore, you have a choice to make:  The instruction
+		CANINVERSE 0
+	disables standout, but enables the display of ASCII codes above 127,
+	and the instruction
+		CANINVERSE 1
+	restores the default situation in which standout is enabled and the
+	extra graphic characters cannot be printed.
+
+PARSE word
+
+	outputs the list that would result if the input word were entered
+	in response to a READLIST operation.  That is, PARSE READWORD has
+	the same value as READLIST for the same characters read.
+
+RUNPARSE wordorlist
+
+	outputs the list that would result if the input word or list were
+	entered as an instruction line; characters such as infix operators
+	and parentheses are separate members of the output.  Note that
+	sublists of a runparsed list are not themselves runparsed.
+
+
+COMMUNICATION
+=============
+
+TRANSMITTERS
+------------
+
+Note:  If there is a variable named PRINTDEPTHLIMIT with a nonnegative
+integer value, then complex list and array structures will be printed
+only to the allowed depth.  That is, members of members of... of members
+will be allowed only so far.  The members omitted because
+they are just past the depth limit are indicated by an ellipsis for each
+one, so a too-deep list of two members will print as [... ...].
+
+If there is a variable named PRINTWIDTHLIMIT with a nonnegative integer
+value, then only the first so many members of any array or
+list will be printed.  A single ellipsis replaces all missing data
+within the structure.  The width limit also applies to the number of
+characters printed in a word, except that a PRINTWIDTHLIMIT between 0 and 9
+will be treated as if it were 10 when applied to words.  This limit
+applies not only to the top-level printed datum but to any substructures
+within it.
+
+If there is a variable named FULLPRINTP whose value is TRUE, then words that
+were created using backslash or vertical bar (to include characters that
+would otherwise not be treated as part of a word) are printed with the
+backslashes or vertical bars shown, so that the printed result could be
+re-read by Logo to produce the same value.  If FULLPRINTP is TRUE then
+the empty word (however it was created) prints as ||.  (Otherwise it prints
+as nothing at all.)
+
+PRINT thing
+PR thing
+(PRINT thing1 thing2 ...)
+(PR thing1 thing2 ...)
+
+	command.  Prints the input or inputs to the current write stream
+	(initially the screen).  All the inputs are printed on a single
+	line, separated by spaces, ending with a newline.  If an input is a
+	list, square brackets are not printed around it, but brackets are
+	printed around sublists.  Braces are always printed around arrays.
+
+TYPE thing
+(TYPE thing1 thing2 ...)
+
+	command.  Prints the input or inputs like PRINT, except that no
+	newline character is printed at the end and multiple inputs are not
+	separated by spaces.  Note: printing to the terminal is ordinarily
+	"line buffered"; that is, the characters you print using TYPE will
+	not actually appear on the screen until either a newline character
+	is printed (for example, by PRINT or SHOW) or Logo tries to read
+	from the keyboard (either at the request of your program or after an
+	instruction prompt).  This buffering makes the program much faster
+	than it would be if each character appeared immediately, and in most
+	cases the effect is not disconcerting.  To accommodate programs that
+	do a lot of positioned text display using TYPE, Logo will force
+	printing whenever SETCURSOR is invoked.  This solves most buffering
+	problems.  Still, on occasion you may find it necessary to force the
+	buffered characters to be printed explicitly; this can be done using
+	the WAIT command.  WAIT 0 will force printing without actually
+	waiting.
+
+SHOW thing
+(SHOW thing1 thing2 ...)
+
+	command.  Prints the input or inputs like PRINT, except that
+	if an input is a list it is printed inside square brackets.
+
+
+RECEIVERS
+---------
+
+READLIST
+RL
+
+	reads a line from the read stream (initially the keyboard) and
+	outputs that line as a list.  The line is separated into members as
+	though it were typed in square brackets in an instruction.  If the
+	read stream is a file, and the end of file is reached, READLIST
+	outputs the empty word (not the empty list).  READLIST processes
+	backslash, vertical bar, and tilde characters in the read stream;
+	the output list will not contain these characters but they will have
+	had their usual effect.  READLIST does not, however, treat semicolon
+	as a comment character.
+
+READWORD
+RW
+
+	reads a line from the read stream and outputs that line as a word.
+	The output is a single word even if the line contains spaces,
+	brackets, etc.  If the read stream is a file, and the end of file is
+	reached, READWORD outputs the empty list (not the empty word).
+	READWORD processes backslash, vertical bar, and tilde characters in
+	the read stream.  In the case of a tilde used for line continuation,
+	the output word DOES include the tilde and the newline characters, so
+	that the user program can tell exactly what the user entered.
+	Vertical bars in the line are also preserved in the output.
+	Backslash characters are not preserved in the output.
+
+READRAWLINE
+
+	reads a line from the read stream and outputs that line as a word.
+	The output is a single word even if the line contains spaces,
+	brackets, etc.  If the read stream is a file, and the end of file is
+	reached, READRAWLINE outputs the empty list (not the empty word).
+	READRAWLINE outputs the exact string of characters as they appear
+	in the line, with no special meaning for backslash, vertical bar,
+	tilde, or any other formatting characters.
+
+READCHAR
+RC
+
+	reads a single character from the read stream and outputs that
+	character as a word.  If the read stream is a file, and the end of
+	file is reached, READCHAR outputs the empty list (not the empty
+	word).  If the read stream is the keyboard, echoing is turned off
+	when READCHAR is invoked, and remains off until READLIST or READWORD
+	is invoked or a Logo prompt is printed.  Backslash, vertical bar,
+	and tilde characters have no special meaning in this context.
+
+READCHARS num
+RCS num
+
+	reads "num" characters from the read stream and outputs those
+	characters as a word.  If the read stream is a file, and the end of
+	file is reached, READCHARS outputs the empty list (not the empty
+	word).  If the read stream is a terminal, echoing is turned off
+	when READCHARS is invoked, and remains off until READLIST or READWORD
+	is invoked or a Logo prompt is printed.  Backslash, vertical bar,
+	and tilde characters have no special meaning in this context.
+
+SHELL command
+(SHELL command wordflag)
+
+	Under Unix, outputs the result of running "command" as a shell
+	command.  (The command is sent to /bin/sh, not csh or other
+	alternatives.)  If the command is a literal list in the instruction
+	line, and if you want a backslash character sent to the shell, you
+	must use \\ to get the backslash through Logo's reader intact.  The
+	output is a list containing one member for each line generated by
+	the shell command.  Ordinarily each such line is represented by a
+	list in the output, as though the line were read using READLIST.  If
+	a second input is given, regardless of the value of the input, each
+	line is represented by a word in the output as though it were read
+	with READWORD.  Example:
+
+			to dayofweek
+			output first first shell [date]
+			end
+
+	This is "first first" to extract the first word of the first (and
+	only) line of the shell output.
+
+	Under MacOS X, SHELL works as under Unix.  SHELL is not available
+	under Mac Classic.
+
+	Under DOS, SHELL is a command, not an operation; it sends its
+	input to a DOS command processor but does not collect the result
+	of the command.
+
+	Under Windows, the wxWidgets version of Logo behaves as under Unix (except
+	that DOS-style commands are understood; use "dir" rather than "ls").
+	The non-wxWidgets version behaves like the DOS version.
+
+
+FILE ACCESS
+-----------
+
+SETPREFIX string
+
+	command.  Sets a prefix that will be used as the implicit beginning
+	of filenames in OPENREAD, OPENWRITE, OPENAPPEND, OPENUPDATE, LOAD,
+	and SAVE commands.  Logo will put the appropriate separator
+	character (slash for Unix, backslash for DOS/Windows, colon for
+	MacOS Classic) between the prefix and the filename entered by the user.
+	The input to SETPREFIX must be a word, unless it is the empty list,
+	to indicate that there should be no prefix.
+
+PREFIX
+
+	outputs the current file prefix, or [] if there is no prefix.
+	See SETPREFIX.
+
+OPENREAD filename
+
+	command.  Opens the named file for reading.  The read position is
+	initially at the beginning of the file.
+
+OPENWRITE filename
+
+	command.  Opens the named file for writing.  If the file already
+	existed, the old version is deleted and a new, empty file created.
+
+	OPENWRITE, but not the other OPEN variants, will accept as input
+	a two-element list, in which the first element must be a variable
+	name, and the second must be a positive integer.  A character
+	buffer of the specified size will be created.  When a SETWRITE is
+	done with this same list (in the sense of .EQ, not a copy, so
+	you must do something like
+		? make "buf [foo 100]
+		? openwrite :buf
+		? setwrite :buf
+		    [...]
+		? close :buf
+	and not just
+		? openwrite [foo 100]
+		? setwrite [foo 100]
+	and so on), the printed characters are stored in the buffer;
+	when a CLOSE is done with the same list as input, the characters
+	from the buffer (treated as one long word, even if spaces and
+	newlines are included) become the value of the specified variable.
+
+OPENAPPEND filename
+
+	command.  Opens the named file for writing.  If the file already
+	exists, the write position is initially set to the end of the old
+	file, so that newly written data will be appended to it.
+
+OPENUPDATE filename
+
+	command.  Opens the named file for reading and writing.  The read and
+	write position is initially set to the end of the old file, if any.
+	Note: each open file has only one position, for both reading and
+	writing.  If a file opened for update is both READER and WRITER at
+	the same time, then SETREADPOS will also affect WRITEPOS and vice
+	versa.  Also, if you alternate reading and writing the same file,
+	you must SETREADPOS between a write and a read, and SETWRITEPOS
+	between a read and a write.
+
+CLOSE filename
+
+	command.  Closes the named file.  If the file was currently the
+	reader or writer, then the reader or writer is changed to the
+	keyboard or screen, as if SETREAD [] or SETWRITE [] had been done.
+
+ALLOPEN
+
+	outputs a list whose members are the names of all files currently open.
+	This list does not include the dribble file, if any.
+
+CLOSEALL						(library procedure)
+
+	command.  Closes all open files.  Abbreviates
+	FOREACH ALLOPEN [CLOSE ?]
+
+ERASEFILE filename
+ERF filename
+
+	command.  Erases (deletes, removes) the named file, which should not
+	currently be open.
+
+DRIBBLE filename
+
+	command.  Creates a new file whose name is the input, like OPENWRITE,
+	and begins recording in that file everything that is read from the
+	keyboard or written to the terminal.  That is, this writing is in
+	addition to the writing to WRITER.  The intent is to create a
+	transcript of a Logo session, including things like prompt
+	characters and interactions.
+
+NODRIBBLE
+
+	command.  Stops copying information into the dribble file, and
+	closes the file.
+
+SETREAD filename
+
+	command.  Makes the named file the read stream, used for READLIST,
+	etc.  The file must already be open with OPENREAD or OPENUPDATE.  If
+	the input is the empty list, then the read stream becomes the
+	keyboard, as usual.  Changing the read stream does not close the
+	file that was previously the read stream, so it is possible to
+	alternate between files.
+
+SETWRITE filename
+
+	command.  Makes the named file the write stream, used for PRINT,
+	etc.  The file must already be open with OPENWRITE, OPENAPPEND, or
+	OPENUPDATE.  If the input is the empty list, then the write stream
+	becomes the screen, as usual.  Changing the write stream does
+	not close the file that was previously the write stream, so it is
+	possible to alternate between files.
+
+	If the input is a list, then its first element must be a variable
+	name, and its second and last element must be a positive integer; a
+	buffer of that many characters will be allocated, and will become the
+	writestream.  If the same list (same in the .EQ sense, not a copy)
+	has been used as input to OPENWRITE, then the already-allocated
+	buffer will be used, and the writer can be changed to and from this
+	buffer, with all the characters accumulated as in a file.  When the
+	same list is used as input to CLOSE, the contents of the buffer
+	(as an unparsed word, which may contain newline characters) will
+	become the value of the named variable.  For compatibility with
+	earlier versions, if the list has not been opened when the SETWRITE
+	is done, it will be opened implicitly, but the first SETWRITE after
+	this one will implicitly close it, setting the variable and freeing
+	the allocated buffer.
+
+READER
+
+	outputs the name of the current read stream file, or the empty list
+	if the read stream is the terminal.
+
+WRITER
+
+	outputs the name of the current write stream file, or the empty list
+	if the write stream is the screen.
+
+SETREADPOS charpos
+
+	command.  Sets the file pointer of the read stream file so that the
+	next READLIST, etc., will begin reading at the "charpos"th character
+	in the file, counting from 0.  (That is, SETREADPOS 0 will start
+	reading from the beginning of the file.)  Meaningless if the read
+	stream is the screen.
+
+SETWRITEPOS charpos
+
+	command.  Sets the file pointer of the write stream file so that the
+	next PRINT, etc., will begin writing at the "charpos"th character
+	in the file, counting from 0.  (That is, SETWRITEPOS 0 will start
+	writing from the beginning of the file.)  Meaningless if the write
+	stream is the screen.
+
+READPOS
+
+	outputs the file position of the current read stream file.
+
+WRITEPOS
+
+	outputs the file position of the current write stream file.
+
+EOFP
+EOF?
+
+	predicate, outputs TRUE if there are no more characters to be
+	read in the read stream file, FALSE otherwise.
+
+FILEP filename
+FILE? filename						(library procedure)
+
+	predicate, outputs TRUE if a file of the specified name exists
+	and can be read, FALSE otherwise.
+
+
+TERMINAL ACCESS
+---------------
+
+KEYP
+KEY?
+
+	predicate, outputs TRUE if there are characters waiting to be
+	read from the read stream.  If the read stream is a file, this
+	is equivalent to NOT EOFP.  If the read stream is the terminal,
+	then echoing is turned off and the terminal is set to CBREAK
+	(character at a time instead of line at a time) mode.  It
+	remains in this mode until some line-mode reading is requested
+	(e.g., READLIST).  The Unix operating system forgets about any
+	pending characters when it switches modes, so the first KEYP
+	invocation will always output FALSE.
+
+CLEARTEXT
+CT
+
+	command.  Clears the text window.
+
+SETCURSOR vector
+
+	command.  The input is a list of two numbers, the x and y
+	coordinates of a text window position (origin in the upper left
+	corner, positive direction is southeast).  The text cursor
+	is moved to the requested position.  This command also forces
+	the immediate printing of any buffered characters.
+
+CURSOR
+
+	outputs a list containing the current x and y coordinates of
+	the text cursor.  Logo may get confused about the current
+	cursor position if, e.g., you type in a long line that wraps
+	around or your program prints escape codes that affect the
+	screen strangely.
+
+SETMARGINS vector
+
+	command.  The input must be a list of two numbers, as for
+	SETCURSOR.  The effect is to clear the screen and then arrange for
+	all further printing to be shifted down and to the right according
+	to the indicated margins.  Specifically, every time a newline
+	character is printed (explicitly or implicitly) Logo will type
+	x_margin spaces, and on every invocation of SETCURSOR the margins
+	will be added to the input x and y coordinates.  (CURSOR will report
+	the cursor position relative to the margins, so that this shift will
+	be invisible to Logo programs.)  The purpose of this command is to
+	accommodate the display of terminal screens in lecture halls with
+	inadequate TV monitors that miss the top and left edges of the
+	screen.
+
+SETTEXTCOLOR foreground background
+SETTC foreground background
+
+	command (wxWidgets only).  The inputs are color numbers, or RGB color
+	lists, as for turtle graphics.  The foreground and background colors
+	for the textscreen/splitscreen text window are changed to the given
+	values.  The change affects text already printed as well as future
+	text printing; there is only one text color for the entire window.
+
+	command (non-wxWidgets Windows and DOS extended only).  The inputs are
+	color numbers, as for turtle graphics.  Future printing to the text
+	window will use the specified colors for foreground (the characters
+	printed) and background (the space under those characters).  Using
+	STANDOUT will revert to the default text window colors.  In the DOS
+	extended (ucblogo.exe) version, colors in textscreen mode are limited
+	to numbers 0-7, and the coloring applies only to text printed by the
+	program, not to the echoing of text typed by the user.  Neither
+	limitation applies to the text portion of splitscreen mode, which is
+	actually drawn as graphics internally.
+
+INCREASEFONT
+DECREASEFONT
+
+	command (wxWidgets only).  Increase or decrease the size of the font
+	used in the text and edit windows to the next larger or smaller
+	available size.
+
+SETTEXTSIZE height
+
+	command (wxWidgets only).  Set the "point size" of the font used in
+	the text and edit windows to the given integer input.  The desired
+	size may not be available, in which case the nearest available size
+	will be used.  Note: There is only a slight correlation between these
+	integers and pixel sizes.  Our rough estimate is that the number of
+	pixels of height is about 1.5 times the point size, but it varies for
+	different fonts.  See SETLABELHEIGHT for a different approach used for
+	the graphics window.
+
+TEXTSIZE
+
+	(wxWidgets only) outputs the "point size" of the font used in the text
+	and edit windows.  See SETTEXTSIZE for a discussion of font sizing.
+	See LABELSIZE for a different approach used for the graphics window.
+
+SETFONT fontname
+
+	command (wxWidgets only).  Set the font family used in all windows
+	to the one named by the input.  Try 'Courier' or 'Monospace' as likely
+	possibilities.  Not all computers have the same fonts installed.  It's
+	a good idea to stick with monospace fonts (ones in which all
+	characters have the same width).
+
+FONT
+
+	(wxWidgets only) outputs the name of the font family used in all
+	windows.
+
+
+ARITHMETIC
+==========
+
+NUMERIC OPERATIONS
+------------------
+
+SUM num1 num2
+(SUM num1 num2 num3 ...)
+num1 + num2
+
+	outputs the sum of its inputs.
+
+DIFFERENCE num1 num2
+num1 - num2
+
+	outputs the difference of its inputs.  Minus sign means infix
+	difference in ambiguous contexts (when preceded by a complete
+	expression), unless it is preceded by a space and followed
+	by a nonspace.  (See also MINUS.)
+
+MINUS num
+- num
+
+	outputs the negative of its input.  Minus sign means unary minus if
+	the previous token is an infix operator or open parenthesis, or it is
+	preceded by a space and followed by a nonspace.  There is a difference
+	in binding strength between the two forms:
+
+		MINUS 3 + 4	means	-(3+4)
+		- 3 + 4		means	(-3)+4
+
+PRODUCT num1 num2
+(PRODUCT num1 num2 num3 ...)
+num1 * num2
+
+	outputs the product of its inputs.
+
+QUOTIENT num1 num2
+(QUOTIENT num)
+num1 / num2
+
+	outputs the quotient of its inputs.  The quotient of two integers
+	is an integer if and only if the dividend is a multiple of the divisor.
+	(In other words, QUOTIENT 5 2 is 2.5, not 2, but QUOTIENT 4 2 is
+	2, not 2.0 -- it does the right thing.)  With a single input,
+	QUOTIENT outputs the reciprocal of the input.
+
+REMAINDER num1 num2
+
+	outputs the remainder on dividing "num1" by "num2"; both must be
+	integers and the result is an integer with the same sign as num1.
+
+MODULO num1 num2
+
+	outputs the remainder on dividing "num1" by "num2"; both must be
+	integers and the result is an integer with the same sign as num2.
+
+INT num
+
+	outputs its input with fractional part removed, i.e., an integer
+	with the same sign as the input, whose absolute value is the
+	largest integer less than or equal to the absolute value of
+	the input.
+
+ROUND num
+
+	outputs the nearest integer to the input.
+
+SQRT num
+
+	outputs the square root of the input, which must be nonnegative.
+
+POWER num1 num2
+
+	outputs "num1" to the "num2" power.  If num1 is negative, then
+	num2 must be an integer.
+
+EXP num
+
+	outputs e (2.718281828+) to the input power.
+
+LOG10 num
+
+	outputs the common logarithm of the input.
+
+LN num
+
+	outputs the natural logarithm of the input.
+
+SIN degrees
+
+	outputs the sine of its input, which is taken in degrees.
+
+RADSIN radians
+
+	outputs the sine of its input, which is taken in radians.
+
+COS degrees
+
+	outputs the cosine of its input, which is taken in degrees.
+
+RADCOS radians
+
+	outputs the cosine of its input, which is taken in radians.
+
+ARCTAN num
+(ARCTAN x y)
+
+	outputs the arctangent, in degrees, of its input.  With two
+	inputs, outputs the arctangent of y/x, if x is nonzero, or
+	90 or -90 depending on the sign of y, if x is zero.
+
+RADARCTAN num
+(RADARCTAN x y)
+
+	outputs the arctangent, in radians, of its input.  With two
+	inputs, outputs the arctangent of y/x, if x is nonzero, or
+	pi/2 or -pi/2 depending on the sign of y, if x is zero.
+
+	The expression 2*(RADARCTAN 0 1) can be used to get the
+	value of pi.
+
+ISEQ from to						(library procedure)
+
+	outputs a list of the integers from FROM to TO, inclusive.
+
+		? show iseq 3 7
+		[3 4 5 6 7]
+		? show iseq 7 3
+		[7 6 5 4 3]
+
+RSEQ from to count					(library procedure)
+
+	outputs a list of COUNT equally spaced rational numbers
+	between FROM and TO, inclusive.
+
+		? show rseq 3 5 9
+		[3 3.25 3.5 3.75 4 4.25 4.5 4.75 5]
+		? show rseq 3 5 5
+		[3 3.5 4 4.5 5]
+
+
+PREDICATES
+----------
+
+LESSP num1 num2
+LESS? num1 num2
+num1 < num2
+
+	outputs TRUE if its first input is strictly less than its second.
+
+GREATERP num1 num2
+GREATER? num1 num2
+num1 > num2
+
+	outputs TRUE if its first input is strictly greater than its second.
+
+LESSEQUALP num1 num2
+LESSEQUAL? num1 num2
+num1 <= num2
+
+	outputs TRUE if its first input is less than or equal to its second.
+
+GREATEREQUALP num1 num2
+GREATEREQUAL? num1 num2
+num1 >= num2
+
+	outputs TRUE if its first input is greater than or equal to its second.
+
+
+RANDOM NUMBERS
+--------------
+RANDOM num
+(RANDOM start end)
+
+	with one input, outputs a random nonnegative integer less than its
+	input, which must be a positive integer.
+
+	With two inputs, RANDOM outputs a random integer greater than or
+	equal to the first input, and less than or equal to the second
+	input.  Both inputs must be integers, and the first must be less
+	than the second.  (RANDOM 0 9) is equivalent to RANDOM 10;
+	(RANDOM 3 8) is equivalent to (RANDOM 6)+3.
+
+RERANDOM
+(RERANDOM seed)
+
+	command.  Makes the results of RANDOM reproducible.  Ordinarily
+	the sequence of random numbers is different each time Logo is
+	used.  If you need the same sequence of pseudo-random numbers
+	repeatedly, e.g. to debug a program, say RERANDOM before the
+	first invocation of RANDOM.  If you need more than one repeatable
+	sequence, you can give RERANDOM an integer input; each possible
+	input selects a unique sequence of numbers.
+
+
+PRINT FORMATTING
+----------------
+
+FORM num width precision
+
+	outputs a word containing a printable representation of "num",
+	possibly preceded by spaces (and therefore not a number for
+	purposes of performing arithmetic operations), with at least
+	"width" characters, including exactly "precision" digits after
+	the decimal point.  (If "precision" is 0 then there will be no
+	decimal point in the output.)
+
+	As a debugging feature, (FORM num -1 format) will print the
+	floating point "num" according to the C printf "format", to allow
+
+		to hex :num
+		op form :num -1 "|%08X %08X|
+		end
+
+	to allow finding out the exact result of floating point operations.
+	The precise format needed may be machine-dependent.
+
+
+BITWISE OPERATIONS
+------------------
+
+BITAND num1 num2
+(BITAND num1 num2 num3 ...)
+
+	outputs the bitwise AND of its inputs, which must be integers.
+
+BITOR num1 num2
+(BITOR num1 num2 num3 ...)
+
+	outputs the bitwise OR of its inputs, which must be integers.
+
+BITXOR num1 num2
+(BITXOR num1 num2 num3 ...)
+
+	outputs the bitwise EXCLUSIVE OR of its inputs, which must be
+	integers.
+
+BITNOT num
+
+	outputs the bitwise NOT of its input, which must be an integer.
+
+ASHIFT num1 num2
+
+	outputs "num1" arithmetic-shifted to the left by "num2" bits.
+	If num2 is negative, the shift is to the right with sign
+	extension.  The inputs must be integers.
+
+LSHIFT num1 num2
+
+	outputs "num1" logical-shifted to the left by "num2" bits.
+	If num2 is negative, the shift is to the right with zero fill.
+	The inputs must be integers.
+
+
+LOGICAL OPERATIONS
+==================
+
+AND tf1 tf2
+(AND tf1 tf2 tf3 ...)
+
+	outputs TRUE if all inputs are TRUE, otherwise FALSE.  All inputs
+	must be TRUE or FALSE.  (Comparison is case-insensitive regardless
+	of the value of CASEIGNOREDP.  That is, "true" or "True" or "TRUE"
+	are all the same.)  An input can be a list, in which case it is
+	taken as an expression to run; that expression must produce a TRUE
+	or FALSE value.  List expressions are evaluated from left to right;
+	as soon as a FALSE value is found, the remaining inputs are not
+	examined.  Example:
+		MAKE "RESULT AND [NOT (:X = 0)] [(1 / :X) > .5]
+	to avoid the division by zero if the first part is false.
+
+OR tf1 tf2
+(OR tf1 tf2 tf3 ...)
+
+	outputs TRUE if any input is TRUE, otherwise FALSE.  All inputs
+	must be TRUE or FALSE.  (Comparison is case-insensitive regardless
+	of the value of CASEIGNOREDP.  That is, "true" or "True" or "TRUE"
+	are all the same.)  An input can be a list, in which case it is
+	taken as an expression to run; that expression must produce a TRUE
+	or FALSE value.  List expressions are evaluated from left to right;
+	as soon as a TRUE value is found, the remaining inputs are not
+	examined.  Example:
+		IF OR :X=0 [some.long.computation] [...]
+	to avoid the long computation if the first condition is met.
+
+NOT tf
+
+	outputs TRUE if the input is FALSE, and vice versa.  The input can be
+	a list, in which case it is taken as an expression to run; that
+	expression must produce a TRUE or FALSE value.
+
+
+GRAPHICS
+========
+
+Berkeley Logo provides traditional Logo turtle graphics with one turtle.
+Multiple turtles, dynamic turtles, and collision detection are not supported.
+This is the most hardware-dependent part of Logo; some features may exist
+on some machines but not others.  Nevertheless, the goal has been to make
+Logo programs as portable as possible, rather than to take fullest advantage
+of the capabilities of each machine.  In particular, Logo attempts to scale
+the screen so that turtle coordinates [-100 -100] and [100 100] fit on the
+graphics window, and so that the aspect ratio is 1:1.
+
+The center of the graphics window (which may or may not be the entire
+screen, depending on the machine used) is turtle location [0 0].  Positive
+X is to the right; positive Y is up.  Headings (angles) are measured in
+degrees clockwise from the positive Y axis.  (This differs from the common
+mathematical convention of measuring angles counterclockwise from the
+positive X axis.)  The turtle is represented as an isoceles triangle; the
+actual turtle position is at the midpoint of the base (the short side).
+However, the turtle is drawn one step behind its actual position, so that
+the display of the base of the turtle's triangle does not obscure a line
+drawn perpendicular to it (as would happen after drawing a square).
+
+Colors are, of course, hardware-dependent.  However, Logo provides partial
+hardware independence by interpreting color numbers 0 through 7 uniformly
+on all computers:
+
+	0  black	1  blue		2  green	3  cyan
+	4  red		5  magenta	6  yellow	7 white
+
+Where possible, Logo provides additional user-settable colors; how many
+are available depends on the hardware and operating system environment.
+If at least 16 colors are available, Logo tries to provide uniform
+initial settings for the colors 8-15:
+
+	 8  brown	 9  tan		10  forest	11  aqua
+	12  salmon	13  purple	14  orange	15  grey
+
+Logo begins with a black background and white pen.
+
+
+TURTLE MOTION
+-------------
+
+FORWARD dist
+FD dist
+
+	moves the turtle forward, in the direction that it's facing, by
+	the specified distance (measured in turtle steps).
+
+BACK dist
+BK dist
+
+	moves the turtle backward, i.e., exactly opposite to the direction
+	that it's facing, by the specified distance.  (The heading of the
+	turtle does not change.)
+
+LEFT degrees
+LT degrees
+
+	turns the turtle counterclockwise by the specified angle, measured
+	in degrees (1/360 of a circle).
+
+RIGHT degrees
+RT degrees
+
+	turns the turtle clockwise by the specified angle, measured in
+	degrees (1/360 of a circle).
+
+SETPOS pos
+
+	moves the turtle to an absolute position in the graphics window.  The
+	input is a list of two numbers, the X and Y coordinates.
+
+SETXY xcor ycor
+
+	moves the turtle to an absolute position in the graphics window.  The
+	two inputs are numbers, the X and Y coordinates.
+
+SETX xcor
+
+	moves the turtle horizontally from its old position to a new
+	absolute horizontal coordinate.  The input is the new X
+	coordinate.
+
+SETY ycor
+
+	moves the turtle vertically from its old position to a new
+	absolute vertical coordinate.  The input is the new Y
+	coordinate.
+
+SETHEADING degrees
+SETH degrees
+
+	turns the turtle to a new absolute heading.  The input is
+	a number, the heading in degrees clockwise from the positive
+	Y axis.
+
+HOME
+
+	moves the turtle to the center of the screen.  Equivalent to
+	SETPOS [0 0] SETHEADING 0.
+
+ARC angle radius
+
+	draws an arc of a circle, with the turtle at the center, with the
+	specified radius, starting at the turtle's heading and extending
+	clockwise through the specified angle.  The turtle does not move.
+
+TURTLE MOTION QUERIES
+---------------------
+
+POS
+
+	outputs the turtle's current position, as a list of two
+	numbers, the X and Y coordinates.
+
+XCOR							(library procedure)
+
+	outputs a number, the turtle's X coordinate.
+
+YCOR							(library procedure)
+
+	outputs a number, the turtle's Y coordinate.
+
+HEADING
+
+	outputs a number, the turtle's heading in degrees.
+
+TOWARDS pos
+
+	outputs a number, the heading at which the turtle should be
+	facing so that it would point from its current position to
+	the position given as the input.
+
+SCRUNCH
+
+	outputs a list containing two numbers, the X and Y scrunch
+	factors, as used by SETSCRUNCH.  (But note that SETSCRUNCH
+	takes two numbers as inputs, not one list of numbers.)
+
+
+TURTLE AND WINDOW CONTROL
+-------------------------
+
+SHOWTURTLE
+ST
+
+	makes the turtle visible.
+
+HIDETURTLE
+HT
+
+	makes the turtle invisible.  It's a good idea to do this while
+	you're in the middle of a complicated drawing, because hiding
+	the turtle speeds up the drawing substantially.
+
+CLEAN
+
+	erases all lines that the turtle has drawn on the graphics window.
+	The turtle's state (position, heading, pen mode, etc.) is not
+	changed.
+
+CLEARSCREEN
+CS
+
+	erases the graphics window and sends the turtle to its initial
+	position and heading.  Like HOME and CLEAN together.
+
+WRAP
+
+	tells the turtle to enter wrap mode:  From now on, if the turtle
+	is asked to move past the boundary of the graphics window, it
+	will "wrap around" and reappear at the opposite edge of the
+	window.  The top edge wraps to the bottom edge, while the left
+	edge wraps to the right edge.  (So the window is topologically
+	equivalent to a torus.)  This is the turtle's initial mode.
+	Compare WINDOW and FENCE.
+
+WINDOW
+
+	tells the turtle to enter window mode:  From now on, if the turtle
+	is asked to move past the boundary of the graphics window, it
+	will move offscreen.  The visible graphics window is considered
+	as just part of an infinite graphics plane; the turtle can be
+	anywhere on the plane.  (If you lose the turtle, HOME will bring
+	it back to the center of the window.)  Compare WRAP and FENCE.
+
+FENCE
+
+	tells the turtle to enter fence mode:  From now on, if the turtle
+	is asked to move past the boundary of the graphics window, it
+	will move as far as it can and then stop at the edge with an
+	"out of bounds" error message.  Compare WRAP and WINDOW.
+
+FILL
+
+	fills in a region of the graphics window containing the turtle
+	and bounded by lines that have been drawn earlier.  This is not
+	portable; it doesn't work for all machines, and may not work
+	exactly the same way on different machines.
+
+FILLED color instructions
+
+	runs the instructions, remembering all points visited by turtle
+	motion commands, starting *and ending* with the turtle's initial
+	position.  Then draws (ignoring penmode) the resulting polygon,
+	in the current pen color, filling the polygon with the given color,
+	which can be a color number or an RGB list.  The instruction list
+	cannot include another FILLED invocation.
+
+LABEL text
+
+	takes a word or list as input, and prints the input on the
+	graphics window, starting at the turtle's position.
+
+SETLABELHEIGHT height
+
+	command (wxWidgets only).  Takes a positive integer argument and tries
+	to set the font size so that the character height (including
+	descenders) is that many turtle steps.  This will be different from
+	the number of screen pixels if SETSCRUNCH has been used.  Also, note
+	that SETSCRUNCH changes the font size to try to preserve this height
+	in turtle steps.  Note that the query operation corresponding to this
+	command is LABELSIZE, not LABELHEIGHT, because it tells you the width
+	as well as the height of characters in the current font.
+
+TEXTSCREEN
+TS
+
+	rearranges the size and position of windows to maximize the
+	space available in the text window (the window used for
+	interaction with Logo).  The details differ among machines.
+	Compare SPLITSCREEN and FULLSCREEN.
+
+FULLSCREEN
+FS
+
+	rearranges the size and position of windows to maximize the space
+	available in the graphics window.  The details differ among machines.
+	Compare SPLITSCREEN and TEXTSCREEN.
+
+	Since there must be a text window to allow printing (including the
+	printing of the Logo prompt), Logo automatically switches from
+	fullscreen to splitscreen whenever anything is printed.
+
+	In the DOS version, switching from fullscreen to splitscreen loses the
+	part of the picture that's hidden by the text window.  [This design
+	decision follows from the scarcity of memory, so that the extra memory
+	to remember an invisible part of a drawing seems too expensive.]
+
+SPLITSCREEN
+SS
+
+	rearranges the size and position of windows to allow some room for
+	text interaction while also keeping most of the graphics window
+	visible.  The details differ among machines.  Compare TEXTSCREEN
+	and FULLSCREEN.
+
+SETSCRUNCH xscale yscale
+
+	adjusts the aspect ratio and scaling of the graphics display.
+	After this command is used, all further turtle motion will be
+	adjusted by multiplying the horizontal and vertical extent of
+	the motion by the two numbers given as inputs.  For example,
+	after the instruction "SETSCRUNCH 2 1" motion at a heading of
+	45 degrees will move twice as far horizontally as vertically.
+	If your squares don't come out square, try this.  (Alternatively,
+	you can deliberately misadjust the aspect ratio to draw an ellipse.)
+
+	In wxWidgets only, SETSCRUNCH also changes the size of the text font
+	used for the LABEL command to try to keep the height of characters
+	scaled with the vertical turtle step size.
+
+	For all modern computers For DOS machines, the scale factors are
+	initially set according to what the hardware claims the aspect ratio
+	is, but the hardware sometimes lies.  For DOS, the values set by
+	SETSCRUNCH are remembered in a file (called SCRUNCH.DAT) and are
+	automatically put into effect when a Logo session begins.
+
+REFRESH
+
+	(command) tells Logo to remember the turtle's motions so that they
+	can be used for high-resolution printing (wxWidgets) or to refresh
+	the graphics window if it is moved, resized, or overlayed
+	(non-wxWidgets).  This is the default.
+
+NOREFRESH
+
+	(command) tells Logo not to remember the turtle's motions, which may
+	be useful to save time and memory if your program is interactive or
+	animated, rather than drawing a static picture you'll want to print
+	later (wxWidgets).  In non-wxWidgets versions, using NOREFRESH may
+	prevent Logo from restoring the graphics image after the window is
+	moved, resized, or overlayed.
+
+
+TURTLE AND WINDOW QUERIES
+-------------------------
+
+SHOWNP
+SHOWN?
+
+	outputs TRUE if the turtle is shown (visible), FALSE if the
+	turtle is hidden.  See SHOWTURTLE and HIDETURTLE.
+
+SCREENMODE
+
+	outputs the word TEXTSCREEN, SPLITSCREEN, or FULLSCREEN depending
+	on the current screen mode.
+
+TURTLEMODE
+
+	outputs the word WRAP, FENCE, or WINDOW depending on the current
+	turtle mode.
+
+LABELSIZE
+
+	(wxWidgets only) outputs a list of two positive integers, the width
+	and height of characters displayed by LABEL measured in turtle steps
+	(which will be different from screen pixels if SETSCRUNCH has been
+	used).  There is no SETLABELSIZE because the width and height of a
+	font are not separately controllable, so the inverse of this operation
+	is SETLABELHEIGHT, which takes just one number for the desired height.
+
+
+PEN AND BACKGROUND CONTROL
+--------------------------
+
+The turtle carries a pen that can draw pictures.  At any time the pen
+can be UP (in which case moving the turtle does not change what's on the
+graphics screen) or DOWN (in which case the turtle leaves a trace).
+If the pen is down, it can operate in one of three modes: PAINT (so that it
+draws lines when the turtle moves), ERASE (so that it erases any lines
+that might have been drawn on or through that path earlier), or REVERSE
+(so that it inverts the status of each point along the turtle's path).
+
+PENDOWN
+PD
+
+	sets the pen's position to DOWN, without changing its mode.
+
+PENUP
+PU
+
+	sets the pen's position to UP, without changing its mode.
+
+PENPAINT
+PPT
+
+	sets the pen's position to DOWN and mode to PAINT.
+
+PENERASE
+PE
+
+	sets the pen's position to DOWN and mode to ERASE.
+
+PENREVERSE
+PX
+
+	sets the pen's position to DOWN and mode to REVERSE.
+	(This may interact in system-dependent ways with use of color.)
+
+SETPENCOLOR colornumber.or.rgblist
+SETPC colornumber.or.rgblist
+
+	sets the pen color to the given number, which must be a nonnegative
+	integer.  There are initial assignments for the first 16 colors:
+
+	 0  black	 1  blue	 2  green	 3  cyan
+	 4  red		 5  magenta	 6  yellow	 7 white
+	 8  brown	 9  tan		10  forest	11  aqua
+	12  salmon	13  purple	14  orange	15  grey
+
+	but other colors can be assigned to numbers by the PALETTE command.
+	Alternatively, sets the pen color to the given RGB values (a list of
+	three nonnegative numbers less than 100 specifying the percent
+	saturation of red, green, and blue in the desired color).
+
+SETPALETTE colornumber rgblist
+
+	sets the actual color corresponding to a given number, if allowed by
+	the hardware and operating system.  Colornumber must be an integer
+	greater than or equal to 8.  (Logo tries to keep the first 8 colors
+	constant.)  The second input is a list of three nonnegative numbers
+	less than 100 specifying the percent saturation of red, green, and
+	blue in the desired color.
+
+SETPENSIZE size
+
+	sets the thickness of the pen.  The input is either a single positive
+	integer or a list of two positive integers (for horizontal and
+	vertical thickness).  Some versions pay no attention to the second
+	number, but always have a square pen.
+
+SETPENPATTERN pattern
+
+	sets hardware-dependent pen characteristics.  This command is
+	not guaranteed compatible between implementations on different
+	machines.
+
+SETPEN list						(library procedure)
+
+	sets the pen's position, mode, thickness, and hardware-dependent
+	characteristics according to the information in the input list, which
+	should be taken from an earlier invocation of PEN.
+
+SETBACKGROUND colornumber.or.rgblist
+SETBG colornumber.or.rgblist
+
+	set the screen background color by slot number or RGB values.
+	See SETPENCOLOR for details.
+
+
+PEN QUERIES
+-----------
+
+PENDOWNP
+PENDOWN?
+
+	outputs TRUE if the pen is down, FALSE if it's up.
+
+PENMODE
+
+	outputs one of the words PAINT, ERASE, or REVERSE according to
+	the current pen mode.
+
+PENCOLOR
+PC
+
+	outputs a color number, a nonnegative integer that is associated with
+	a particular color, or a list of RGB values if such a list was used as
+	the most recent input to SETPENCOLOR.  There are initial assignments
+	for the first 16 colors:
+
+	 0  black	 1  blue	 2  green	 3  cyan
+	 4  red		 5  magenta	 6  yellow	 7 white
+	 8  brown	 9  tan		10  forest	11  aqua
+	12  salmon	13  purple	14  orange	15  grey
+
+	but other colors can be assigned to numbers by the PALETTE command.
+
+PALETTE colornumber
+
+	outputs a list of three nonnegative numbers less than 100 specifying
+	the percent saturation of red, green, and blue in the color associated
+	with the given number.
+
+PENSIZE
+
+
+	outputs a list of two positive integers, specifying the horizontal
+	and vertical thickness of the turtle pen.  (In some implementations,
+	including wxWidgets, the two numbers are always equal.)
+
+PENPATTERN
+
+	outputs system-specific pen information.
+
+PEN							(library procedure)
+
+	outputs a list containing the pen's position, mode, thickness, and
+	hardware-specific characteristics, for use by SETPEN.
+
+BACKGROUND
+BG
+
+	outputs the graphics background color, either as a slot number or
+	as an RGB list, whichever way it was set.  (See PENCOLOR.)
+
+
+SAVING AND LOADING PICTURES
+---------------------------
+
+SAVEPICT filename
+
+	command.  Writes a file with the specified name containing the
+	state of the graphics window, including any nonstandard color
+	palette settings, in Logo's internal format.  This picture can
+	be restored to the screen using LOADPICT.  The format is not
+	portable between platforms, nor is it readable by other programs.
+	See EPSPICT to export Logo graphics for other programs.
+
+LOADPICT filename
+
+	command.  Reads the specified file, which must have been
+	written by a SAVEPICT command, and restores the graphics
+	window and color palette settings to the values stored in
+	the file.  Any drawing previously on the screen is cleared.
+
+EPSPICT filename
+
+	command.  Writes a file with the specified name, containing
+	an Encapsulated Postscript (EPS) representation of the state
+	of the graphics window.  This file can be imported into other
+	programs that understand EPS format.  Restrictions: the
+	drawing cannot use FILL, PENERASE, or PENREVERSE; any
+	such instructions will be ignored in the translation to
+	Postscript form.
+
+
+MOUSE QUERIES
+-------------
+
+
+MOUSEPOS
+
+	outputs the coordinates of the mouse, provided that it's within the
+	graphics window, in turtle coordinates.  If the mouse is outside the
+	graphics window, then the last position within the window is returned.
+	Exception:  If a mouse button is pressed within the graphics window
+	and held while the mouse is dragged outside the window, the mouse's
+	position is returned as if the window were big enough to include it.
+
+CLICKPOS
+
+	outputs the coordinates that the mouse was at when a mouse button
+	was most recently pushed, provided that that position was within the
+	graphics window, in turtle coordinates.  (wxWidgets only)
+
+BUTTONP
+BUTTON?
+
+	outputs TRUE if a mouse button is down and the mouse is over the
+	graphics window.  Once the button is down, BUTTONP remains true until
+	the button is released, even if the mouse is dragged out of the
+	graphics window.
+
+BUTTON
+
+	outputs 0 if no mouse button has been pushed inside the Logo window
+	since the last call to BUTTON.  Otherwise, it outputs an integer
+	between 1 and 3 indicating which button was most recently pressed.
+	Ordinarily 1 means left, 2 means right, and 3 means center, but
+	operating systems may reconfigure these.
+
+
+
+WORKSPACE MANAGEMENT
+====================
+
+PROCEDURE DEFINITION
+--------------------
+
+TO procname :input1 :input2 ...				(special form)
+
+	command.  Prepares Logo to accept a procedure definition.  The
+	procedure will be named "procname" and there must not already
+	be a procedure by that name.  The inputs will be called "input1"
+	etc.  Any number of inputs are allowed, including none.  Names
+	of procedures and inputs are case-insensitive.
+
+	Unlike every other Logo procedure, TO takes as its inputs the
+	actual words typed in the instruction line, as if they were
+	all quoted, rather than the results of evaluating expressions
+	to provide the inputs.  (That's what "special form" means.)
+
+	This version of Logo allows variable numbers of inputs to a
+	procedure.  After the procedure name come four kinds of
+	things, *in this order*:
+
+	    1.   0 or more REQUIRED inputs    :FOO :FROBOZZ
+	    2.   0 or more OPTIONAL inputs    [:BAZ 87] [:THINGO 5+9]
+	    3.   0 or 1 REST input            [:GARPLY]
+	    4.   0 or 1 DEFAULT number        5
+
+	Every procedure has a MINIMUM, DEFAULT, and MAXIMUM
+	number of inputs.  (The latter can be infinite.)
+
+	The MINIMUM number of inputs is the number of required inputs,
+	which must come first.  A required input is indicated by the
+
+			:inputname
+
+	notation.
+
+	After all the required inputs can be zero or more optional inputs,
+	each of which is represented by the following notation:
+
+			[:inputname default.value.expression]
+
+	When the procedure is invoked, if actual inputs are not supplied
+	for these optional inputs, the default value expressions are
+	evaluated to set values for the corresponding input names.  The
+	inputs are processed from left to right, so a default value
+	expression can be based on earlier inputs.  Example:
+
+			to proc :inlist [:startvalue first :inlist]
+
+	If the procedure is invoked by saying
+
+			proc [a b c]
+
+	then the variable INLIST will have the value [A B C] and the
+	variable STARTVALUE will have the value A.  If the procedure
+	is invoked by saying
+
+			(proc [a b c] "x)
+
+	then INLIST will have the value [A B C] and STARTVALUE will
+	have the value X.
+
+	After all the required and optional input can come a single "rest"
+	input, represented by the following notation:
+
+			[:inputname]
+
+	This is a rest input rather than an optional input because there
+	is no default value expression.  There can be at most one rest
+	input.  When the procedure is invoked, the value of this inputname
+	will be a list containing all of the actual inputs provided that
+	were not used for required or optional inputs.  Example:
+
+			to proc :in1 [:in2 "foo] [:in3 "baz] [:in4]
+
+	If this procedure is invoked by saying
+
+			proc "x
+
+	then IN1 has the value X, IN2 has the value FOO, IN3 has the value
+	BAZ, and IN4 has the value [] (the empty list).  If it's invoked
+	by saying
+
+			(proc "a "b "c "d "e)
+
+	then IN1 has the value A, IN2 has the value B, IN3 has the value C,
+	and IN4 has the value [D E].
+
+	The MAXIMUM number of inputs for a procedure is infinite if a
+	rest input is given; otherwise, it is the number of required
+	inputs plus the number of optional inputs.
+
+	The DEFAULT number of inputs for a procedure, which is the number
+	of inputs that it will accept if its invocation is not enclosed
+	in parentheses, is ordinarily equal to the minimum number.  If
+	you want a different default number you can indicate that by
+	putting the desired default number as the last thing on the
+	TO line.  example:
+
+			to proc :in1 [:in2 "foo] [:in3] 3
+
+	This procedure has a minimum of one input, a default of three
+	inputs, and an infinite maximum.
+
+	Logo responds to the TO command by entering procedure definition
+	mode.  The prompt character changes from "?" to ">" and whatever
+	instructions you type become part of the definition until you
+	type a line containing only the word END.
+
+DEFINE procname text
+
+	command.  Defines a procedure with name "procname" and text "text".
+	If there is already a procedure with the same name, the new
+	definition replaces the old one.  The text input must be a list
+	whose members are lists.  The first member is a list of inputs;
+	it looks like a TO line but without the word TO, without the
+	procedure name, and without the colons before input names.  In
+	other words, the members of this first sublist are words for
+	the names of required inputs and lists for the names of optional
+	or rest inputs.  The remaining sublists of the text input make
+	up the body of the procedure, with one sublist for each instruction
+	line of the body.  (There is no END line in the text input.)
+	It is an error to redefine a primitive procedure unless the variable
+	REDEFP has the value TRUE.
+
+TEXT procname
+
+	outputs the text of the procedure named "procname" in the form
+	expected by DEFINE: a list of lists, the first of which describes
+	the inputs to the procedure and the rest of which are the lines of
+	its body.  The text does not reflect formatting information used
+	when the procedure was defined, such as continuation lines and
+	extra spaces.
+
+FULLTEXT procname
+
+	outputs a representation of the procedure "procname" in which
+	formatting information is preserved.  If the procedure was defined
+	with TO, EDIT, or LOAD, then the output is a list of words.  Each
+	word represents one entire line of the definition in the form
+	output by READWORD, including extra spaces and continuation lines.
+	The last member of the output represents the END line.  If the
+	procedure was defined with DEFINE, then the output is a list of
+	lists.  If these lists are printed, one per line, the result will
+	look like a definition using TO.  Note: the output from FULLTEXT
+	is not suitable for use as input to DEFINE!
+
+COPYDEF newname oldname
+
+	command.  Makes "newname" a procedure identical to "oldname".
+	The latter may be a primitive.  If "newname" was already defined,
+	its previous definition is lost.  If "newname" was already a
+	primitive, the redefinition is not permitted unless the variable
+	REDEFP has the value TRUE.
+
+	Note: dialects of Logo differ as to the order of inputs to COPYDEF.
+	This dialect uses "MAKE order," not "NAME order."
+
+
+VARIABLE DEFINITION
+-------------------
+
+MAKE varname value
+
+	command.  Assigns the value "value" to the variable named "varname",
+	which must be a word.  Variable names are case-insensitive.  If a
+	variable with the same name already exists, the value of that
+	variable is changed.  If not, a new global variable is created.
+
+NAME value varname					(library procedure)
+
+	command.  Same as MAKE but with the inputs in reverse order.
+
+LOCAL varname
+LOCAL varnamelist
+(LOCAL varname1 varname2 ...)
+
+	command.  Accepts as inputs one or more words, or a list of
+	words.  A variable is created for each of these words, with
+	that word as its name.  The variables are local to the
+	currently running procedure.  Logo variables follow dynamic
+	scope rules; a variable that is local to a procedure is
+	available to any subprocedure invoked by that procedure.
+	The variables created by LOCAL have no initial value; they
+	must be assigned a value (e.g., with MAKE) before the procedure
+	attempts to read their value.
+
+LOCALMAKE varname value				(library procedure)
+
+	command.  Makes the named variable local, like LOCAL, and
+	assigns it the given value, like MAKE.
+
+THING varname
+:quoted.varname
+
+	outputs the value of the variable whose name is the input.
+	If there is more than one such variable, the innermost local
+	variable of that name is chosen.  The colon notation is an
+	abbreviation not for THING but for the combination
+
+				thing "
+
+	so that :FOO means THING "FOO.
+
+GLOBAL varname
+GLOBAL varnamelist
+(GLOBAL varname1 varname2 ...)
+
+	command.  Accepts as inputs one or more words, or a list of
+	words.  A global variable is created for each of these words, with
+	that word as its name.  The only reason this is necessary is that
+	you might want to use the "setter" notation SETXYZ for a variable
+	XYZ that does not already have a value; GLOBAL "XYZ makes that legal.
+	Note: If there is currently a local variable of the same name, this
+	command does *not* make Logo use the global value instead of the
+	local one.
+
+
+PROPERTY LISTS
+--------------
+
+Note: Names of property lists are always case-insensitive.  Names of
+individual properties are case-sensitive or case-insensitive depending
+on the value of CASEIGNOREDP, which is TRUE by default.
+
+In principle, every possible name is the name of a property list, which
+is initially empty.  So Logo never gives a "no such property list" error,
+as it would for undefined procedure or variable names.  But the primitive
+procedures that deal with "all" property lists (CONTENTS, PLISTS, etc.)
+list only nonempty ones.  To "erase" a property list (see ERASE below)
+means to make it empty, removing all properties from it.
+
+PPROP plistname propname value
+
+	command.  Adds a property to the "plistname" property list
+	with name "propname" and value "value".
+
+GPROP plistname propname
+
+	outputs the value of the "propname" property in the "plistname"
+	property list, or the empty list if there is no such property.
+
+REMPROP plistname propname
+
+	command.  Removes the property named "propname" from the
+	property list named "plistname".
+
+PLIST plistname
+
+	outputs a list whose odd-numbered members are the names, and
+	whose even-numbered members are the values, of the properties
+	in the property list named "plistname".  The output is a copy
+	of the actual property list; changing properties later will not
+	magically change a list output earlier by PLIST.
+
+
+PREDICATES
+----------
+
+PROCEDUREP name
+PROCEDURE? name
+
+	outputs TRUE if the input is the name of a procedure.
+
+PRIMITIVEP name
+PRIMITIVE? name
+
+	outputs TRUE if the input is the name of a primitive procedure
+	(one built into Logo).  Note that some of the procedures
+	described in this document are library procedures, not primitives.
+
+DEFINEDP name
+DEFINED? name
+
+	outputs TRUE if the input is the name of a user-defined procedure,
+	including a library procedure.
+
+NAMEP name
+NAME? name
+
+	outputs TRUE if the input is the name of a variable.
+
+PLISTP name
+PLIST? name
+
+	outputs TRUE if the input is the name of a *nonempty* property list.
+	(In principle every word is the name of a property list; if you haven't
+	put any properties in it, PLIST of that name outputs an empty list,
+	rather than giving an error message.)
+
+
+QUERIES
+-------
+
+Note:  All procedures whose input is indicated as "contentslist" will
+accept a single word (taken as a procedure name), a list of words (taken
+as names of procedures), or a list of three lists as described under
+the CONTENTS command above.
+
+CONTENTS
+
+	outputs a "contents list," i.e., a list of three lists containing
+	names of defined procedures, variables, and property lists
+	respectively.  This list includes all unburied named items in
+	the workspace.
+
+BURIED
+
+	outputs a contents list including all buried named items in
+	the workspace.
+
+TRACED
+
+	outputs a contents list including all traced named items in
+	the workspace.
+
+STEPPED
+
+	outputs a contents list including all stepped named items in
+	the workspace.
+
+PROCEDURES
+
+	outputs a list of the names of all unburied user-defined procedures
+	in the workspace.  Note that this is a list of names, not a
+	contents list.  (However, procedures that require a contents list
+	as input will accept this list.)
+
+PRIMITIVES
+
+	outputs a list of the names of all primitive procedures
+	in the workspace.  Note that this is a list of names, not a
+	contents list.  (However, procedures that require a contents list
+	as input will accept this list.)
+
+NAMES
+
+	outputs a contents list consisting of an empty list (indicating
+	no procedure names) followed by a list of all unburied variable
+	names in the workspace.
+
+PLISTS
+
+	outputs a contents list consisting of two empty lists (indicating
+	no procedures or variables) followed by a list of all unburied
+	nonempty property lists in the workspace.
+
+NAMELIST varname					(library procedure)
+NAMELIST varnamelist
+
+	outputs a contents list consisting of an empty list followed by
+	a list of the name or names given as input.  This is useful in
+	conjunction with workspace control procedures that require a contents
+	list as input.
+
+PLLIST plname						(library procedure)
+PLLIST plnamelist
+
+	outputs a contents list consisting of two empty lists followed by
+	a list of the name or names given as input.  This is useful in
+	conjunction with workspace control procedures that require a contents
+	list as input.
+
+ARITY procedurename
+
+	outputs a list of three numbers: the minimum, default, and maximum
+	number of inputs for the procedure whose name is the input.  It is an
+	error if there is no such procedure.  A maximum of -1 means that the
+	number of inputs is unlimited.
+
+NODES
+
+	outputs a list of two numbers.  The first represents the number of
+	nodes of memory currently in use.  The second shows the maximum
+	number of nodes that have been in use at any time since the last
+	invocation of NODES.  (A node is a small block of computer memory
+	as used by Logo.  Each number uses one node.  Each non-numeric
+	word uses one node, plus some non-node memory for the characters
+	in the word.  Each array takes one node, plus some non-node
+	memory, as well as the memory required by its elements.  Each
+	list requires one node per element, as well as the memory within
+	the elements.)  If you want to track the memory use of an
+	algorithm, it is best if you invoke GC at the beginning of each
+	iteration, since otherwise the maximum will include storage that
+	is unused but not yet collected.
+
+
+INSPECTION
+----------
+
+PRINTOUT contentslist
+PO contentslist
+
+	command.  Prints to the write stream the definitions of all
+	procedures, variables, and property lists named in the input
+	contents list.
+
+POALL							(library procedure)
+
+	command.  Prints all unburied definitions in the workspace.
+	Abbreviates PO CONTENTS.
+
+POPS							(library procedure)
+
+	command.  Prints the definitions of all unburied procedures in
+	the workspace.  Abbreviates PO PROCEDURES.
+
+PONS							(library procedure)
+
+	command.  Prints the definitions of all unburied variables in
+	the workspace.  Abbreviates PO NAMES.
+
+POPLS							(library procedure)
+
+	command.  Prints the contents of all unburied nonempty property
+	lists in the workspace.  Abbreviates PO PLISTS.
+
+PON varname						(library procedure)
+PON varnamelist
+
+	command.  Prints the definitions of the named variable(s).
+	Abbreviates PO NAMELIST varname(list).
+
+POPL plname						(library procedure)
+POPL plnamelist
+
+	command.  Prints the definitions of the named property list(s).
+	Abbreviates PO PLLIST plname(list).
+
+POT contentslist
+
+	command.  Prints the title lines of the named procedures and
+	the definitions of the named variables and property lists.
+	For property lists, the entire list is shown on one line
+	instead of as a series of PPROP instructions as in PO.
+
+POTS							(library procedure)
+
+	command.  Prints the title lines of all unburied procedures
+	in the workspace.  Abbreviates POT PROCEDURES.
+
+
+WORKSPACE CONTROL
+-----------------
+
+ERASE contentslist
+ER contentslist
+
+	command.  Erases from the workspace the procedures, variables,
+	and property lists named in the input.  Primitive procedures may
+	not be erased unless the variable REDEFP has the value TRUE.
+
+ERALL
+
+	command.  Erases all unburied procedures, variables, and property
+	lists from the workspace.  Abbreviates ERASE CONTENTS.
+
+ERPS
+
+	command.  Erases all unburied procedures from the workspace.
+	Abbreviates ERASE PROCEDURES.
+
+ERNS
+
+	command.  Erases all unburied variables from the workspace.
+	Abbreviates ERASE NAMES.
+
+ERPLS
+
+	command.  Erases all unburied property lists from the workspace.
+	Abbreviates ERASE PLISTS.
+
+ERN varname						(library procedure)
+ERN varnamelist
+
+	command.  Erases from the workspace the variable(s) named in the
+	input.  Abbreviates ERASE NAMELIST varname(list).
+
+ERPL plname						(library procedure)
+ERPL plnamelist
+
+	command.  Erases from the workspace the property list(s) named in the
+	input.  Abbreviates ERASE PLLIST plname(list).
+
+BURY contentslist
+
+	command.  Buries the procedures, variables, and property lists
+	named in the input.  A buried item is not included in the lists
+	output by CONTENTS, PROCEDURES, VARIABLES, and PLISTS, but is
+	included in the list output by BURIED.  By implication, buried
+	things are not printed by POALL or saved by SAVE.
+
+BURYALL							(library procedure)
+
+	command.  Abbreviates BURY CONTENTS.
+
+BURYNAME varname					(library procedure)
+BURYNAME varnamelist
+
+	command.  Abbreviates BURY NAMELIST varname(list).
+
+UNBURY contentslist
+
+	command.  Unburies the procedures, variables, and property lists
+	named in the input.  That is, the named items will be returned to
+	view in CONTENTS, etc.
+
+UNBURYALL						(library procedure)
+
+	command.  Abbreviates UNBURY BURIED.
+
+UNBURYNAME varname					(library procedure)
+UNBURYNAME varnamelist
+
+	command.  Abbreviates UNBURY NAMELIST varname(list).
+
+BURIEDP contentslist
+BURIED? contentslist
+
+	outputs TRUE if the first procedure, variable, or property list named
+	in the contents list is buried, FALSE if not.  Only the first thing in
+	the list is tested; the most common use will be with a word as input,
+	naming a procedure, but a contents list is allowed so that you can
+	BURIEDP [[] [VARIABLE]] or BURIEDP [[] [] [PROPLIST]].
+
+TRACE contentslist
+
+	command.  Marks the named items for tracing.  A message is printed
+	whenever a traced procedure is invoked, giving the actual input
+	values, and whenever a traced procedure STOPs or OUTPUTs.  A
+	message is printed whenever a new value is assigned to a traced
+	variable using MAKE.  A message is printed whenever a new property
+	is given to a traced property list using PPROP.
+
+UNTRACE contentslist
+
+	command.  Turns off tracing for the named items.
+
+TRACEDP contentslist
+TRACED? contentslist
+
+	outputs TRUE if the first procedure, variable, or property list named
+	in the contents list is traced, FALSE if not.  Only the first thing in
+	the list is tested; the most common use will be with a word as input,
+	naming a procedure, but a contents list is allowed so that you can
+	TRACEDP [[] [VARIABLE]] or TRACEDP [[] [] [PROPLIST]].
+
+STEP contentslist
+
+	command.  Marks the named items for stepping.  Whenever a stepped
+	procedure is invoked, each instruction line in the procedure body
+	is printed before being executed, and Logo waits for the user to
+	type a newline at the terminal.  A message is printed whenever a
+	stepped variable name is "shadowed" because a local variable of
+	the same name is created either as a procedure input or by the
+	LOCAL command.
+
+UNSTEP contentslist
+
+	command.  Turns off stepping for the named items.
+
+STEPPEDP contentslist
+STEPPED? contentslist
+
+	outputs TRUE if the first procedure, variable, or property list named
+	in the contents list is stepped, FALSE if not.  Only the first thing
+	in the list is tested; the most common use will be with a word as
+	input, naming a procedure, but a contents list is allowed so that you
+	can STEPPEDP [[] [VARIABLE]] or STEPPEDP [[] [] [PROPLIST]].
+
+EDIT contentslist
+ED contentslist
+(EDIT)
+(ED)
+
+	command.  If invoked with an input, EDIT writes the definitions
+	of the named items into a temporary file and edits that file, using
+	an editor that depends on the platform you're using.  In wxWidgets,
+	and in the MacOS Classic version, there is an editor built into Logo.
+	In the non-wxWidgets versions for Unix, MacOS X, Windows, and DOS,
+	Logo uses your favorite editor as determined by the EDITOR environment
+	variable.  If you don't have an EDITOR variable, edits the
+	definitions using jove.  If invoked without an input, EDIT edits
+	the same file left over from a previous EDIT or EDITFILE instruction.
+	When you leave the editor, Logo reads the revised definitions and
+	modifies the workspace accordingly.  It is not an error if the
+	input includes names for which there is no previous definition.
+
+	If there is a variable LOADNOISILY whose value is TRUE, then, after
+	leaving the editor, TO commands in the temporary file print "PROCNAME
+	defined" (where PROCNAME is the name of the procedure being defined);
+	if LOADNOISILY is FALSE or undefined, TO commands in the file are
+	carried out silently.
+
+	If there is an environment variable called TEMP, then Logo uses
+	its value as the directory in which to write the temporary file
+	used for editing.
+
+	Exceptionally, the EDIT command can be used without its default
+	input and without parentheses provided that nothing follows it on
+	the instruction line.
+
+EDITFILE filename
+
+	command.  Starts the Logo editor, like EDIT, but instead of editing
+	a temporary file it edits the file specified by the input.  When you
+	leave the editor, Logo reads the revised file, as for EDIT.
+	EDITFILE also remembers the filename, so that a subsequent EDIT
+	command with no input will re-edit the same file.
+
+	EDITFILE is intended as an alternative to LOAD and SAVE.  You can
+	maintain a workspace file yourself, controlling the order in which
+	definitions appear, maintaining comments in the file, and so on.
+
+EDALL							(library procedure)
+
+	command.  Abbreviates EDIT CONTENTS.
+
+EDPS							(library procedure)
+
+	command.  Abbreviates EDIT PROCEDURES.
+
+EDNS							(library procedure)
+
+	command.  Abbreviates EDIT NAMES.
+
+EDPLS							(library procedure)
+
+	command.  Abbreviates EDIT PLISTS.
+
+EDN varname						(library procedure)
+EDN varnamelist
+
+	command.  Abbreviates EDIT NAMELIST varname(list).
+
+EDPL plname						(library procedure)
+EDPL plnamelist
+
+	command.  Abbreviates EDIT PLLIST plname(list).
+
+SAVE filename
+
+	command.  Saves the definitions of all unburied procedures,
+	variables, and nonempty property lists in the named file.
+	Equivalent to
+
+			to save :filename
+			local "oldwriter
+			make "oldwriter writer
+			openwrite :filename
+			setwrite :filename
+			poall
+			setwrite :oldwriter
+			close :filename
+			end
+
+	Exceptionally, SAVE can be used with no input and without parentheses
+	if it is the last thing on the command line.  In this case, the
+	filename from the most recent LOAD or SAVE command will be used.  (It
+	is an error if there has been no previous LOAD or SAVE.)
+
+SAVEL contentslist filename				(library procedure)
+
+	command.  Saves the definitions of the procedures, variables, and
+	property lists specified by "contentslist" to the file named
+	"filename".
+
+LOAD filename
+
+	command.  Reads instructions from the named file and executes
+	them.  The file can include procedure definitions with TO, and
+	these are accepted even if a procedure by the same name already
+	exists.  If the file assigns a list value to a variable named
+	STARTUP, then that list is run as an instructionlist after the
+	file is loaded.  If there is a variable LOADNOISILY whose value
+	is TRUE, then TO commands in the file print "PROCNAME defined"
+	(where PROCNAME is the name of the procedure being defined); if
+	LOADNOISILY is FALSE or undefined, TO commands in the file are
+	carried out silently.
+
+CSLSLOAD name
+
+	command.  Loads the named file, like LOAD, but from the directory
+	containing the Computer Science Logo Style programs instead of the
+	current user's directory.
+
+HELP name
+(HELP)
+
+	command.  Prints information from the reference manual about
+	the primitive procedure named by the input.  With no input,
+	lists all the primitives about which help is available.
+	If there is an environment variable LOGOHELP, then its value
+	is taken as the directory in which to look for help files,
+	instead of the default help directory.
+
+	If HELP is called with the name of a defined procedure for which there
+	is no help file, it will print the title line of the procedure
+	followed by lines from the procedure body that start with semicolon,
+	stopping when a non-semicolon line is seen.
+
+	Exceptionally, the HELP command can be used without its default
+	input and without parentheses provided that nothing follows it on
+	the instruction line.
+
+SETEDITOR path
+
+	command.  Tells Logo to use the specified program as its editor
+	instead of the default editor.  The format of a path depends on your
+	operating system.
+
+SETLIBLOC path
+
+	command.  Tells Logo to use the specified directory as its library
+	instead of the default.  (Note that many Logo "primitive" procedures
+	are actually found in the library, so they may become unavailable if
+	your new library does not include them!)  The format of a path depends
+	on your operating system.
+
+SETHELPLOC path
+
+	command.  Tells Logo to look in the specified directory for the
+	information provided by the HELP command, instead of the default
+	directory.  The format of a path depends on your operating system.
+
+SETCSLSLOC path
+
+	command.  Tells Logo to use the specified directory for the CSLSLOAD
+	command, instead of the default directory.  The format of a path
+	depends on your operating system.
+
+SETTEMPLOC path
+
+	command.  Tells Logo to write editor temporary files in the specified
+	directory rather than in the default directory.  You must have write
+	permission for this directory.  The format of a path depends on your
+	operating system.
+
+GC
+(GC anything)
+
+	command.  Runs the garbage collector, reclaiming unused nodes.  Logo
+	does this when necessary anyway, but you may want to use this
+	command to control exactly when Logo does it.  In particular, the
+	numbers output by the NODES operation will not be very meaningful
+	unless garbage has been collected.  Another reason to use GC is that
+	a garbage collection takes a noticeable fraction of a second, and you
+	may want to schedule collections for times before or after some
+	time-critical animation.  If invoked with an input (of any value),
+	GC runs a full garbage collection, including GCTWA (Garbage Collect
+	Truly Worthless Atoms, which means that it removes from Logo's
+	memory words that used to be procedure or variable names but aren't
+	any more); without an input, GC does a generational garbage
+	collection, which means that only recently created nodes are
+	examined.  (The latter is usually good enough.)
+
+.SETSEGMENTSIZE num
+
+	command.  Sets the number of nodes that Logo allocates from the
+	operating system at once to num, which must be a positive integer.
+	The name is dotted because bad things will happen if you use a
+	number that's too small or too large for your computer.  The
+	initial value is 16,000 for most systems, but is smaller for
+	68000-based Macs.  Making it larger will speed up computations
+	(by reducing the number of garbage collections) at the cost of
+	allocating more memory than necessary.
+
+
+CONTROL STRUCTURES
+==================
+
+Note: in the following descriptions, an "instructionlist" can be a list
+or a word.  In the latter case, the word is parsed into list form before
+it is run.  Thus, RUN READWORD or RUN READLIST will work.  The former is
+slightly preferable because it allows for a continued line (with ~) that
+includes a comment (with ;) on the first line.
+
+A "tf" input must be the word TRUE, the word FALSE, or a list.  If it's a
+list, then it must be a Logo expression, which will be evaluated to produce
+a value that must be TRUE or FALSE.  The comparisons with TRUE and FALSE
+are always case-insensitive.
+
+A runlist can consist of either a single expression (that produces a value)
+or zero or more instructions (that do something, rather than output a value),
+depending on the context:
+
+	PRINT IFELSE :X<0 ["NEGATIVE] ["POSITIVE]  ; one value in each case
+	REPEAT 4 [PRINT "A PRINT "B]  ; two instructions
+
+
+RUN instructionlist
+
+	command or operation.  Runs the Logo instructions in the input
+	list; outputs if the list contains an expression that outputs.
+
+RUNRESULT instructionlist
+
+	runs the instructions in the input; outputs an empty list if
+	those instructions produce no output, or a list whose only
+	member is the output from running the input instructionlist.
+	Useful for inventing command-or-operation control structures:
+
+		local "result
+		make "result runresult [something]
+		if emptyp :result [stop]
+		output first :result
+
+REPEAT num instructionlist
+
+	command.  Runs the "instructionlist" repeatedly, "num" times.
+
+FOREVER instructionlist
+
+	command.  Runs the "instructionlist" repeatedly, until something
+	inside the instructionlist (such as STOP or THROW) makes it stop.
+
+REPCOUNT
+
+	outputs the repetition count of the innermost current REPEAT or
+	FOREVER, starting from 1.  If no REPEAT or FOREVER is active,
+	outputs -1.
+
+	The abbreviation # can be used for REPCOUNT unless the REPEAT is
+	inside the template input to a higher order procedure such as
+	FOREACH, in which case # has a different meaning.
+
+IF tf instructionlist
+(IF tf instructionlist1 instructionlist2)
+
+	command.  If the first input has the value TRUE, then IF runs
+	the second input.  If the first input has the value FALSE, then
+	IF does nothing.  (If given a third input, IF acts like IFELSE,
+	as described below.)  It is an error if the first input is not
+	either TRUE or FALSE.
+
+	For compatibility with earlier versions of Logo, if an IF
+	instruction is not enclosed in parentheses, but the first thing
+	on the instruction line after the second input expression is a
+	literal list (i.e., a list in square brackets), the IF is
+	treated as if it were IFELSE, but a warning message is given.
+	If this aberrant IF appears in a procedure body, the warning is
+	given only the first time the procedure is invoked in each Logo
+	session.
+
+IFELSE tf instructionlist1 instructionlist2
+
+	command or operation.  If the first input has the value TRUE, then
+	IFELSE runs the second input.  If the first input has the value FALSE,
+	then IFELSE runs the third input.  IFELSE outputs a value if the
+	instructionlist contains an expression that outputs a value.
+
+TEST tf
+
+	command.  Remembers its input, which must be TRUE or FALSE, for use
+	by later IFTRUE or IFFALSE instructions.  The effect of TEST is local
+	to the procedure in which it is used; any corresponding IFTRUE or
+	IFFALSE must be in the same procedure or a subprocedure.
+
+IFTRUE instructionlist
+IFT instructionlist
+
+	command.  Runs its input if the most recent TEST instruction had
+	a TRUE input.  The TEST must have been in the same procedure or a
+	superprocedure.
+
+IFFALSE instructionlist
+IFF instructionlist
+
+	command.  Runs its input if the most recent TEST instruction had
+	a FALSE input.  The TEST must have been in the same procedure or a
+	superprocedure.
+
+STOP
+
+	command.  Ends the running of the procedure in which it appears.
+	Control is returned to the context in which that procedure was
+	invoked.  The stopped procedure does not output a value.
+
+OUTPUT value
+OP value
+
+	command.  Ends the running of the procedure in which it appears.
+	That procedure outputs the value "value" to the context in which
+	it was invoked.  Don't be confused: OUTPUT itself is a command,
+	but the procedure that invokes OUTPUT is an operation.
+
+CATCH tag instructionlist
+
+	command or operation.  Runs its second input.  Outputs if that
+	instructionlist outputs.  If, while running the instructionlist,
+	a THROW instruction is executed with a tag equal to the first
+	input (case-insensitive comparison), then the running of the
+	instructionlist is terminated immediately.  In this case the CATCH
+	outputs if a value input is given to THROW.  The tag must be a word.
+
+	If the tag is the word ERROR, then any error condition that arises
+	during the running of the instructionlist has the effect of THROW
+	"ERROR instead of printing an error message and returning to
+	toplevel.  The CATCH does not output if an error is caught.  Also,
+	during the running of the instructionlist, the variable ERRACT is
+	temporarily unbound.  (If there is an error while ERRACT has a
+	value, that value is taken as an instructionlist to be run after
+	printing the error message.  Typically the value of ERRACT, if any,
+	is the list [PAUSE].)
+
+THROW tag
+(THROW tag value)
+
+	command.  Must be used within the scope of a CATCH with an equal
+	tag.  Ends the running of the instructionlist of the CATCH.  If
+	THROW is used with only one input, the corresponding CATCH does
+	not output a value.  If THROW is used with two inputs, the second
+	provides an output for the CATCH.
+
+	THROW "TOPLEVEL can be used to terminate all running procedures and
+	interactive pauses, and return to the toplevel instruction prompt.
+	Typing the system interrupt character (alt-S for wxWidgets; otherwise
+	normally control-C for Unix, control-Q for DOS, or command-period for
+	Mac) has the same effect.
+
+	THROW "ERROR can be used to generate an error condition.  If the
+	error is not caught, it prints a message (THROW "ERROR) with the
+	usual indication of where the error (in this case the THROW)
+	occurred.  If a second input is used along with a tag of ERROR,
+	that second input is used as the text of the error message
+	instead of the standard message.  Also, in this case, the location
+	indicated for the error will be, not the location of the THROW,
+	but the location where the procedure containing the THROW was
+	invoked.  This allows user-defined procedures to generate error
+	messages as if they were primitives.  Note: in this case the
+	corresponding CATCH "ERROR, if any, does not output, since the second
+	input to THROW is not considered a return value.
+
+	THROW "SYSTEM immediately leaves Logo, returning to the operating
+	system, without printing the usual parting message and without
+	deleting any editor temporary file written by EDIT.
+
+ERROR
+
+	outputs a list describing the error just caught, if any.  If there was
+	not an error caught since the last use of ERROR, the empty list will
+	be output.  The error list contains four members: an integer code
+	corresponding to the type of error, the text of the error message (as
+	a single word including spaces), the name of the procedure in which
+	the error occurred, and the instruction line on which the error
+	occurred.
+
+PAUSE
+
+	command or operation.  Enters an interactive pause.  The user is
+	prompted for instructions, as at toplevel, but with a prompt that
+	includes the name of the procedure in which PAUSE was invoked.
+	Local variables of that procedure are available during the pause.
+	PAUSE outputs if the pause is ended by a CONTINUE with an input.
+
+	If the variable ERRACT exists, and an error condition occurs, the
+	contents of that variable are run as an instructionlist.  Typically
+	ERRACT is given the value [PAUSE] so that an interactive pause will
+	be entered in the event of an error.  This allows the user to check
+	values of local variables at the time of the error.
+
+	Typing the system quit character (alt-S for wxWidgets; otherwise
+	normally control-\ for Unix, control-W for DOS, or command-comma for
+	Mac) will also enter a pause.
+
+CONTINUE value
+CO value
+(CONTINUE)
+(CO)
+
+	command.  Ends the current interactive pause, returning to the
+	context of the PAUSE invocation that began it.  If CONTINUE is
+	given an input, that value is used as the output from the PAUSE.
+	If not, the PAUSE does not output.
+
+	Exceptionally, the CONTINUE command can be used without its default
+	input and without parentheses provided that nothing follows it on
+	the instruction line.
+
+WAIT time
+
+	command.  Delays further execution for "time" 60ths of a second.
+	Also causes any buffered characters destined for the terminal to
+	be printed immediately.  WAIT 0 can be used to achieve this
+	buffer flushing without actually waiting.
+
+BYE
+
+	command.  Exits from Logo; returns to the operating system.
+
+.MAYBEOUTPUT value					(special form)
+
+	works like OUTPUT except that the expression that provides the
+	input value might not, in fact, output a value, in which case
+	the effect is like STOP.  This is intended for use in control
+	structure definitions, for cases in which you don't know whether
+	or not some expression produces a value.  Example:
+
+		to invoke :function [:inputs] 2
+		.maybeoutput apply :function :inputs
+		end
+
+		? (invoke "print "a "b "c)
+		a b c
+		? print (invoke "word "a "b "c)
+		abc
+
+	This is an alternative to RUNRESULT.  It's fast and easy to use,
+	at the cost of being an exception to Logo's evaluation rules.
+	(Ordinarily, it should be an error if the expression that's
+	supposed to provide an input to something doesn't have a value.)
+
+GOTO word
+
+	command.  Looks for a TAG command with the same input in the same
+	procedure, and continues running the procedure from the location of
+	that TAG.  It is meaningless to use GOTO outside of a procedure.
+
+TAG quoted.word
+
+	command.  Does nothing.  The input must be a literal word following
+	a quotation mark ("), not the result of a computation.  Tags are
+	used by the GOTO command.
+
+IGNORE value						(library procedure)
+
+	command.  Does nothing.  Used when an expression is evaluated for
+	a side effect and its actual value is unimportant.
+
+` list							(library procedure)
+
+	outputs a list equal to its input but with certain substitutions.
+	If a member of the input list is the word "," (comma) then the
+	following member should be an instructionlist that produces an
+	output when run.  That output value replaces the comma and the
+	instructionlist.  If a member of the input list is the word ",@"
+	(comma atsign) then the following member should be an instructionlist
+	that outputs a list when run.  The members of that list replace the
+	,@ and the instructionlist.  Example:
+
+		show `[foo baz ,[bf [a b c]] garply ,@[bf [a b c]]]
+
+	will print
+
+		[foo baz [b c] garply b c]
+
+	A word starting with , or ,@ is treated as if the rest of the word
+	were a one-word list, e.g., ,:FOO is equivalent to ,[:FOO].
+
+	A word starting with ", (quote comma) or :, (colon comma) becomes a
+	word starting with " or : but with the result of running the
+	substitution (or its first word, if the result is a list) replacing
+	what comes after the comma.
+
+	Backquotes can be nested.  Substitution is done only for commas at
+	the same depth as the backquote in which they are found:
+
+		? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f]
+		[a ` [b , [1+2] , [foo 4 d] e] f]
+
+		?make "name1 "x
+		?make "name2 "y
+		? show `[a `[b ,:,:name1 ,",:name2 d] e]
+		[a ` [b , [:x] , ["y] d] e]
+
+FOR forcontrol instructionlist				(library procedure)
+
+	command.  The first input must be a list containing three or four
+	members: (1) a word, which will be used as the name of a local
+	variable; (2) a word or list that will be evaluated as by RUN to
+	determine a number, the starting value of the variable; (3) a word
+	or list that will be evaluated to determine a number, the limit value
+	of the variable; (4) an optional word or list that will be evaluated
+	to determine the step size.  If the fourth member is missing, the
+	step size will be 1 or -1 depending on whether the limit value is
+	greater than or less than the starting value, respectively.
+
+	The second input is an instructionlist.  The effect of FOR is to run
+	that instructionlist repeatedly, assigning a new value to the control
+	variable (the one named by the first member of the forcontrol list)
+	each time.  First the starting value is assigned to the control
+	variable.  Then the value is compared to the limit value.  FOR is
+	complete when the sign of (current - limit) is the same as the sign
+	of the step size.  (If no explicit step size is provided, the
+	instructionlist is always run at least once.  An explicit step size
+	can lead to a zero-trip FOR, e.g., FOR [I 1 0 1] ...)  Otherwise, the
+	instructionlist is run, then the step is added to the current value
+	of the control variable and FOR returns to the comparison step.
+
+		? for [i 2 7 1.5] [print :i]
+		2
+		3.5
+		5
+		6.5
+		?
+
+DO.WHILE instructionlist tfexpression			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains TRUE.  Evaluates the first input
+	first, so the "instructionlist" is always run at least once.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+WHILE tfexpression instructionlist			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains TRUE.  Evaluates the first input
+	first, so the "instructionlist" may never be run at all.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+DO.UNTIL instructionlist tfexpression			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains FALSE.  Evaluates the first input
+	first, so the "instructionlist" is always run at least once.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+UNTIL tfexpression instructionlist			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains FALSE.  Evaluates the first input
+	first, so the "instructionlist" may never be run at all.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+CASE value clauses					(library procedure)
+
+	command or operation.  The second input is a list of lists (clauses);
+	each clause is a list whose first element is either a list of values
+	or the word ELSE and whose butfirst is a Logo expression or
+	instruction.  CASE examines the clauses in order.  If a clause begins
+	with the word ELSE (upper or lower case), then the butfirst of that
+	clause is evaluated and CASE outputs its value, if any.  If the first
+	input to CASE is a member of the first element of a clause, then the
+	butfirst of that clause is evaluated and CASE outputs its value, if
+	any.  If neither of these conditions is met, then CASE goes on to the
+	next clause.  If no clause is satisfied, CASE does nothing.  Example:
+
+		to vowelp :letter
+		output case :letter [ [[a e i o u] "true] [else "false] ]
+		end
+
+COND clauses						(library procedure)
+
+	command or operation.  The input is a list of lists (clauses); each
+	clause is a list whose first element is either an expression whose
+	value is TRUE or FALSE, or the word ELSE, and whose butfirst is a Logo
+	expression or instruction.  COND examines the clauses in order.  If a
+	clause begins with the word ELSE (upper or lower case), then the
+	butfirst of that clause is evaluated and CASE outputs its value, if
+	any.  Otherwise, the first element of the clause is evaluated; the
+	resulting value must be TRUE or FALSE.  If it's TRUE, then the
+	butfirst of that clause is evaluated and COND outputs its value, if
+	any.  If the value is FALSE, then COND goes on to the next clause.  If
+	no clause is satisfied, COND does nothing.  Example:
+
+		to evens :numbers	; select even numbers from a list
+		op cond [ [[emptyp :numbers] []]
+		          [[evenp first :numbers]  ; assuming EVENP is defined
+		           fput first :numbers evens butfirst :numbers]
+		          [else evens butfirst :numbers] ]
+		end
+
+
+TEMPLATE-BASED ITERATION
+------------------------
+
+The procedures in this section are iteration tools based on the idea of a
+"template."  This is a generalization of an instruction list or an
+expression list in which "slots" are provided for the tool to insert varying
+data.  Four different forms of template can be used.
+
+The most commonly used form for a template is "explicit-slot" form, or
+"question mark" form.  Example:
+
+	? show map [? * ?] [2 3 4 5]
+	[4 9 16 25]
+	?
+
+In this example, the MAP tool evaluated the template [? * ?] repeatedly,
+with each of the members of the data list [2 3 4 5] substituted in turn
+for the question marks.  The same value was used for every question mark
+in a given evaluation.  Some tools allow for more than one datum to be
+substituted in parallel; in these cases the slots are indicated by ?1 for
+the first datum, ?2 for the second, and so on:
+
+	? show (map [(word ?1 ?2 ?1)] [a b c] [d e f])
+	[ada beb cfc]
+	?
+
+If the template wishes to compute the datum number, the form (? 1) is
+equivalent to ?1, so (? ?1) means the datum whose number is given in
+datum number 1.  Some tools allow additional slot designations, as shown
+in the individual descriptions.
+
+The second form of template is the "named-procedure" form.  If the template
+is a word rather than a list, it is taken as the name of a procedure.  That
+procedure must accept a number of inputs equal to the number of parallel
+data slots provided by the tool; the procedure is applied to all of the
+available data in order.  That is, if data ?1 through ?3 are available,
+the template "PROC is equivalent to [PROC ?1 ?2 ?3].
+
+	? show (map "word [a b c] [d e f])
+	[ad be cf]
+	?
+
+	to dotprod :a :b	; vector dot product
+	op apply "sum (map "product :a :b)
+	end
+
+The third form of template is "named-slot" or "lambda" form.  This form is
+indicated by a template list containing more than one member, whose first
+member is itself a list.  The first member is taken as a list of names;
+local variables are created with those names and given the available data
+in order as their values.  The number of names must equal the number of
+available data.  This form is needed primarily when one iteration tool must
+be used within the template list of another, and the ? notation would be
+ambiguous in the inner template.  Example:
+
+	to matmul :m1 :m2 [:tm2 transpose :m2]	; multiply two matrices
+	output map [[row] map [[col] dotprod :row :col] :tm2] :m1
+	end
+
+The fourth form is "procedure text" form, a variant of lambda form.  In this
+form, the template list contains at least two members, all of which are
+lists.  This is the form used by the DEFINE and TEXT primitives, and APPLY
+accepts it so that the text of a defined procedure can be used as a template.
+
+Note:  The fourth form of template is interpreted differently from the
+others, in that Logo considers it to be an independent defined procedure
+for the purposes of OUTPUT and STOP.  For example, the following two
+instructions are identical:
+
+	? print apply [[x] :x+3] [5]
+	8
+	? print apply [[x] [output :x+3]] [5]
+	8
+
+although the first instruction is in named-slot form and the second is
+in procedure-text form.  The named-slot form can be understood as telling
+Logo to evaluate the expression :x+3 in place of the entire invocation of
+apply, with the variable x temporarily given the value 5.  The procedure-text
+form can be understood as invoking the procedure
+
+	to foo :x
+	output :x+3
+	end
+
+with input 5, but without actually giving the procedure a name.  If
+the use of OUTPUT were interchanged in these two examples, we'd get errors:
+
+	? print apply [[x] output :x+3] [5]
+	Can only use output inside a procedure
+	? print apply [[x] [:x+3]] [5]
+	You don't say what to do with 8
+
+The named-slot form can be used with STOP or OUTPUT inside a procedure,
+to stop the enclosing procedure.
+
+
+The following iteration tools are extended versions of the ones in Appendix
+B of the book _Computer_Science_Logo_Style,_Volume_3:_Advanced_Topics_ by
+Brian Harvey [MIT Press, 1987].  The extensions are primarily to allow for
+variable numbers of inputs.
+
+
+APPLY template inputlist
+
+	command or operation.  Runs the "template," filling its slots with
+	the members of "inputlist."  The number of members in "inputlist"
+	must be an acceptable number of slots for "template."  It is
+	illegal to apply the primitive TO as a template, but anything else
+	is okay.  APPLY outputs what "template" outputs, if anything.
+
+INVOKE template input					(library procedure)
+(INVOKE template input1 input2 ...)
+
+	command or operation.  Exactly like APPLY except that the inputs
+	are provided as separate expressions rather than in a list.
+
+FOREACH data template					(library procedure)
+(FOREACH data1 data2 ... template)
+
+	command.  Evaluates the template list repeatedly, once for each
+	member of the data list.  If more than one data list are given,
+	each of them must be the same length.  (The data inputs can be
+	words, in which case the template is evaluated once for each
+	character.)
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].  If multiple parallel slots
+	are used, then (?REST 1) goes with ?1, etc.
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+MAP template data					(library procedure)
+(MAP template data1 data2 ...)
+
+	outputs a word or list, depending on the type of the data input,
+	of the same length as that data input.  (If more than one data
+	input are given, the output is of the same type as data1.)  Each
+	member of the output is the result of evaluating the template
+	list, filling the slots with the corresponding member(s) of the
+	data input(s).  (All data inputs must be the same length.)  In the
+	case of a word output, the results of the template evaluation must
+	be words, and they are concatenated with WORD.
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].  If multiple parallel slots
+	are used, then (?REST 1) goes with ?1, etc.
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+MAP.SE template data					(library procedure)
+(MAP.SE template data1 data2 ...)
+
+	outputs a list formed by evaluating the template list repeatedly
+	and concatenating the results using SENTENCE.  That is, the
+	members of the output are the members of the results of the
+	evaluations.  The output list might, therefore, be of a different
+	length from that of the data input(s).  (If the result of an
+	evaluation is the empty list, it contributes nothing to the final
+	output.)  The data inputs may be words or lists.
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].  If multiple parallel slots
+	are used, then (?REST 1) goes with ?1, etc.
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+FILTER tftemplate data					(library procedure)
+
+	outputs a word or list, depending on the type of the data input,
+	containing a subset of the members (for a list) or characters (for
+	a word) of the input.  The template is evaluated once for each
+	member or character of the data, and it must produce a TRUE or
+	FALSE value.  If the value is TRUE, then the corresponding input
+	constituent is included in the output.
+
+		? print filter "vowelp "elephant
+		eea
+		?
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+FIND tftemplate data					(library procedure)
+
+	outputs the first constituent of the data input (the first member
+	of a list, or the first character of a word) for which the value
+	produced by evaluating the template with that consituent in its
+	slot is TRUE.  If there is no such constituent, the empty list
+	is output.
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+REDUCE template data					(library procedure)
+
+	outputs the result of applying the template to accumulate the
+	members of the data input.  The template must be a two-slot
+	function.  Typically it is an associative function name like SUM.
+	If the data input has only one constituent (member in a list or
+	character in a word), the output is that consituent.  Otherwise,
+	the template is first applied with ?1 filled with the next-to-last
+	consitient and ?2 with the last constituent.  Then, if there are
+	more constituents, the template is applied with ?1 filled with the
+	next constituent to the left and ?2 with the result from the
+	previous evaluation.  This process continues until all constituents
+	have been used.  The data input may not be empty.
+
+	Note: If the template is, like SUM, the name of a procedure that is
+	capable of accepting arbitrarily many inputs, it is more efficient
+	to use APPLY instead of REDUCE.  The latter is good for associative
+	procedures that have been written to accept exactly two inputs:
+
+		to max :a :b
+		output ifelse :a > :b [:a] [:b]
+		end
+
+		print reduce "max [...]
+
+	Alternatively, REDUCE can be used to write MAX as a procedure
+	that accepts any number of inputs, as SUM does:
+
+		to max [:inputs] 2
+		if emptyp :inputs ~
+		   [(throw "error [not enough inputs to max])]
+		output reduce [ifelse ?1 > ?2 [?1] [?2]] :inputs
+		end
+
+CROSSMAP template listlist				(library procedure)
+(CROSSMAP template data1 data2 ...)
+
+	outputs a list containing the results of template evaluations.
+	Each data list contributes to a slot in the template; the number
+	of slots is equal to the number of data list inputs.  As a special
+	case, if only one data list input is given, that list is taken as
+	a list of data lists, and each of its members contributes values
+	to a slot.  CROSSMAP differs from MAP in that instead of taking
+	members from the data inputs in parallel, it takes all possible
+	combinations of members of data inputs, which need not be the same
+	length.
+
+		? show (crossmap [word ?1 ?2] [a b c] [1 2 3 4])
+		[a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4]
+		?
+
+	For compatibility with the version in the first edition of CSLS,
+	CROSSMAP templates may use the notation :1 instead of ?1 to indicate
+	slots.
+
+CASCADE endtest template startvalue			(library procedure)
+(CASCADE endtest tmp1 sv1 tmp2 sv2 ...)
+(CASCADE endtest tmp1 sv1 tmp2 sv2 ... finaltemplate)
+
+	outputs the result of applying a template (or several templates,
+	as explained below) repeatedly, with a given value filling the
+	slot the first time, and the result of each application filling
+	the slot for the following application.
+
+	In the simplest case, CASCADE has three inputs.  The second input
+	is a one-slot expression template.  That template is evaluated
+	some number of times (perhaps zero).  On the first evaluation,
+	the slot is filled with the third input; on subsequent evaluations,
+	the slot is filled with the result of the previous evaluation.
+	The number of evaluations is determined by the first input.  This
+	can be either a nonnegative integer, in which case the template is
+	evaluated that many times, or a predicate expression template, in
+	which case it is evaluated (with the same slot filler that will be
+	used for the evaluation of the second input) repeatedly, and the
+	CASCADE evaluation continues as long as the predicate value is
+	FALSE.  (In other words, the predicate template indicates the
+	condition for stopping.)
+
+	If the template is evaluated zero times, the output from CASCADE
+	is the third (startvalue) input.  Otherwise, the output is the
+	value produced by the last template evaluation.
+
+	CASCADE templates may include the symbol # to represent the number
+	of times the template has been evaluated.  This slot is filled with
+	1 for the first evaluation, 2 for the second, and so on.
+
+		? show cascade 5 [lput # ?] []
+		[1 2 3 4 5]
+		? show cascade [vowelp first ?] [bf ?] "spring
+		ing
+		? show cascade 5 [# * ?] 1
+		120
+		?
+
+	Several cascaded results can be computed in parallel by providing
+	additional template-startvalue pairs as inputs to CASCADE.  In this
+	case, all templates (including the endtest template, if used) are
+	multi-slot, with the number of slots equal to the number of pairs of
+	inputs.  In each round of evaluations, ?2, for example, represents the
+	result of evaluating the second template in the previous round.  If
+	the total number of inputs (including the first endtest input) is odd,
+	then the output from CASCADE is the final value of the first template.
+	If the total number of inputs is even, then the last input is a
+	template that is evaluated once, after the end test is satisfied, to
+	determine the output from CASCADE.
+
+		to fibonacci :n
+		output (cascade :n [?1 + ?2] 1 [?1] 0)
+		end
+
+		to piglatin :word
+		output (cascade [vowelp first ?] ~
+				[word bf ? first ?] ~
+				:word ~
+				[word ? "ay])
+		end
+
+CASCADE.2 endtest temp1 startval1 temp2 startval2	(library procedure)
+
+	outputs the result of invoking CASCADE with the same inputs.
+	The only difference is that the default number of inputs is
+	five instead of three.
+
+TRANSFER endtest template inbasket			(library procedure)
+
+	outputs the result of repeated evaluation of the template.
+	The template is evaluated once for each member of the list
+	"inbasket."  TRANSFER maintains an "outbasket" that is
+	initially the empty list.  After each evaluation of the
+	template, the resulting value becomes the new outbasket.
+
+	In the template, the symbol ?IN represents the current member
+	from the inbasket; the symbol ?OUT represents the entire
+	current outbasket.  Other slot symbols should not be used.
+
+	If the first (endtest) input is an empty list, evaluation
+	continues until all inbasket members have been used.  If not,
+	the first input must be a predicate expression template, and
+	evaluation continues until either that template's value is TRUE
+	or the inbasket is used up.
+
+
+MACROS
+======
+
+.MACRO procname :input1 :input2 ...				(special form)
+.DEFMACRO procname text
+
+	A macro is a special kind of procedure whose output is evaluated
+	as Logo instructions in the context of the macro's caller.
+	.MACRO is exactly like TO except that the new procedure becomes
+	a macro; .DEFMACRO is exactly like DEFINE with the same exception.
+
+	Macros are useful for inventing new control structures comparable
+	to REPEAT, IF, and so on.  Such control structures can almost, but
+	not quite, be duplicated by ordinary Logo procedures.  For example,
+	here is an ordinary procedure version of REPEAT:
+
+		to my.repeat :num :instructions
+		if :num=0 [stop]
+		run :instructions
+		my.repeat :num-1 :instructions
+		end
+
+	This version works fine for most purposes, e.g.,
+
+		my.repeat 5 [print "hello]
+
+	But it doesn't work if the instructions to be carried out include
+	OUTPUT, STOP, or LOCAL.  For example, consider this procedure:
+
+		to example
+		print [Guess my secret word.  You get three guesses.]
+		repeat 3 [type "|?? | ~
+			  if readword = "secret [pr "Right! stop]]
+		print [Sorry, the word was "secret"!]
+		end
+
+	This procedure works as written, but if MY.REPEAT is used instead
+	of REPEAT, it won't work because the STOP will stop MY.REPEAT
+	instead of stopping EXAMPLE as desired.
+
+	The solution is to make MY.REPEAT a macro.  Instead of actually
+	carrying out the computation, a macro must return a list containing
+	Logo instructions.  The contents of that list are evaluated as if
+	they appeared in place of the call to the macro.  Here's a macro
+	version of REPEAT:
+
+		.macro my.repeat :num :instructions
+		if :num=0 [output []]
+		output sentence :instructions ~
+				(list "my.repeat :num-1 :instructions)
+		end
+
+	Every macro is an operation -- it must always output something.
+	Even in the base case, MY.REPEAT outputs an empty instruction
+	list.  To show how MY.REPEAT works, let's take the example
+
+		my.repeat 5 [print "hello]
+
+	For this example, MY.REPEAT will output the instruction list
+
+		[print "hello my.repeat 4 [print "hello]]
+
+	Logo then executes these instructions in place of the original
+	invocation of MY.REPEAT; this prints "hello" once and invokes
+	another repetition.
+
+	The technique just shown, although fairly easy to understand,
+	has the defect of slowness because each repetition has to
+	construct an instruction list for evaluation.  Another approach
+	is to make MY.REPEAT a macro that works just like the non-macro
+	version unless the instructions to be repeated include OUTPUT
+	or STOP:
+
+		.macro my.repeat :num :instructions
+		catch "repeat.catchtag ~
+		      [op repeat.done runresult [repeat1 :num :instructions]]
+		op []
+		end
+
+		to repeat1 :num :instructions
+		if :num=0 [throw "repeat.catchtag]
+		run :instructions
+		.maybeoutput repeat1 :num-1 :instructions
+		end
+
+		to repeat.done :repeat.result
+		if emptyp :repeat.result [op [stop]]
+		op list "output quoted first :repeat.result
+		end
+
+	If the instructions do not include STOP or OUTPUT, then REPEAT1 will
+	reach its base case and invoke THROW.  As a result, MY.REPEAT's last
+	instruction line will output an empty list, so the evaluation of the
+	macro result by the caller will do nothing.  But if a STOP or OUTPUT
+	happens, then REPEAT.DONE will output a STOP or OUTPUT instruction
+	that will be executed in the caller's context.
+
+	The macro-defining commands have names starting with a dot because
+	macros are an advanced feature of Logo; it's easy to get in trouble
+	by defining a macro that doesn't terminate, or by failing to
+	construct the instruction list properly.
+
+	Lisp users should note that Logo macros are NOT special forms.
+	That is, the inputs to the macro are evaluated normally, as they
+	would be for any other Logo procedure.  It's only the output from
+	the macro that's handled unusually.
+
+	Here's another example:
+
+		.macro localmake :name :value
+		output (list "local		~
+			     word "" :name	~
+			     "apply		~
+			     ""make		~
+			     (list :name :value))
+		end
+
+	It's used this way:
+
+		to try
+		localmake "garply "hello
+		print :garply
+		end
+
+	LOCALMAKE outputs the list
+
+		[local "garply apply "make [garply hello]]
+
+	The reason for the use of APPLY is to avoid having to decide
+	whether or not the second input to MAKE requires a quotation
+	mark before it.  (In this case it would -- MAKE "GARPLY "HELLO --
+	but the quotation mark would be wrong if the value were a list.)
+
+	It's often convenient to use the ` function to construct the
+	instruction list:
+
+		.macro localmake :name :value
+		op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
+		end
+
+	On the other hand, ` is pretty slow, since it's tree recursive and
+	written in Logo.
+
+MACROP name
+MACRO? name
+
+	outputs TRUE if its input is the name of a macro.
+
+MACROEXPAND expr					(library procedure)
+
+	takes as its input a Logo expression that invokes a macro (that is,
+	one that begins with the name of a macro) and outputs the the Logo
+	expression into which the macro would translate the input expression.
+
+
+		.macro localmake :name :value
+		op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
+		end
+
+		? show macroexpand [localmake "pi 3.14159]
+		[local "pi apply "make [pi 3.14159]]
+
+
+ERROR PROCESSING
+================
+
+If an error occurs, Logo takes the following steps.  First, if there is
+an available variable named ERRACT, Logo takes its value as an instructionlist
+and runs the instructions.  The operation ERROR may be used within the
+instructions (once) to examine the error condition.  If the instructionlist
+invokes PAUSE, the error message is printed before the pause happens.
+Certain errors are "recoverable"; for one of those errors, if the
+instructionlist outputs a value, that value is used in place of the
+expression that caused the error.  (If ERRACT invokes PAUSE and the user then
+invokes CONTINUE with an input, that input becomes the output from PAUSE and
+therefore the output from the ERRACT instructionlist.)
+
+It is possible for an ERRACT instructionlist to produce an inappropriate value
+or no value where one is needed.  As a result, the same error condition could
+recur forever because of this mechanism.  To avoid that danger, if the same
+error condition occurs twice in a row from an ERRACT instructionlist without
+user interaction, the message "Erract loop" is printed and control returns
+to toplevel.  "Without user interaction" means that if ERRACT invokes PAUSE and
+the user provides an incorrect value, this loop prevention mechanism does not
+take effect and the user gets to try again.
+
+During the running of the ERRACT instructionlist, ERRACT is locally unbound,
+so an error in the ERRACT instructions themselves will not cause a loop.  In
+particular, an error during a pause will not cause a pause-within-a-pause
+unless the user reassigns the value [PAUSE] to ERRACT during the pause.  But
+such an error will not return to toplevel; it will remain within the original
+pause loop.
+
+If there is no available ERRACT value, Logo handles the error by generating
+an internal THROW "ERROR.  (A user program can also generate an error
+condition deliberately by invoking THROW.)  If this throw is not caught by
+a CATCH "ERROR in the user program, it is eventually caught either by the
+toplevel instruction loop or by a pause loop, which prints the error message.
+An invocation of CATCH "ERROR in a user program locally unbinds ERRACT, so
+the effect is that whichever of ERRACT and CATCH "ERROR is more local will
+take precedence.
+
+If a floating point overflow occurs during an arithmetic operation, or a
+two-input mathematical function (like POWER) is invoked with an illegal
+combination of inputs, the "doesn't like" message refers to the second
+operand, but should be taken as meaning the combination.
+
+
+ERROR CODES
+-----------
+
+Here are the numeric codes that appear as the first member of the list
+output by ERROR when an error is caught, with the corresponding messages.
+Some messages may have two different codes depending on whether or not
+the error is recoverable (that is, a substitute value can be provided
+through the ERRACT mechanism) in the specific context.  Some messages are
+warnings rather than errors; these will not be caught.  Errors 0 and 32 are
+so bad that Logo exits immediately.
+
+  0	Fatal internal error (can't be caught)
+  1	Out of memory
+  2	Stack overflow
+  3	Turtle out of bounds
+  4	PROC doesn't like DATUM as input (not recoverable)
+  5	PROC didn't output to PROC
+  6	Not enough inputs to PROC
+  7	PROC doesn't like DATUM as input (recoverable)
+  8	Too much inside ()'s
+  9	You don't say what to do with DATUM
+ 10	')' not found
+ 11	VAR has no value
+ 12	Unexpected ')'
+ 13	I don't know how to PROC (recoverable)
+ 14	Can't find catch tag for THROWTAG
+ 15	PROC is already defined
+ 16	Stopped
+ 17	Already dribbling
+ 18	File system error
+ 19	Assuming you mean IFELSE, not IF (warning only)
+ 20	VAR shadowed by local in procedure call (warning only)
+ 21	Throw "Error
+ 22	PROC is a primitive
+ 23	Can't use TO inside a procedure
+ 24	I don't know how to PROC (not recoverable)
+ 25	IFTRUE/IFFALSE without TEST
+ 26	Unexpected ']'
+ 27	Unexpected '}'
+ 28	Couldn't initialize graphics
+ 29	Macro returned VALUE instead of a list
+ 30	You don't say what to do with VALUE
+ 31	Can only use STOP or OUTPUT inside a procedure
+ 32	APPLY doesn't like BADTHING as input
+ 33	END inside multi-line instruction
+ 34	Really out of memory (can't be caught)
+ 35	user-generated error message (THROW "ERROR [message])
+ 36	END inside multi-line instruction
+ 37	Bad default expression for optional input: EXPR
+ 38	Can't use OUTPUT or STOP inside RUNRESULT
+ 39 	Assuming you meant 'FD 100', not FD100 (or similar)
+ 40	I can't open file FILENAME
+ 41	File FILENAME already open
+ 42	File FILENAME not open
+ 43	Runlist [EXPR EXPR] has more than one expression.
+
+
+SPECIAL VARIABLES
+=================
+
+Logo takes special action if any of the following variable names exists.
+They follow the normal scoping rules, so a procedure can locally set one of
+them to limit the scope of its effect.  Initially, no variables exist except
+for ALLOWGETSET, CASEIGNOREDP, and UNBURYONEDIT, which are TRUE and buried.
+
+ALLOWGETSET						(variable)
+
+	if TRUE, indicates that an attempt to use a procedure that doesn't
+	exist should be taken as an implicit getter or setter procedure
+	(setter if the first three letters of the name are SET) for a variable
+	of the same name (without the SET if appropriate).
+
+BUTTONACT						(variable)
+
+	if nonempty, should be an instruction list that will be evaluated
+	whenever a mouse button is pressed.  Note that the user may have
+	released the button before the instructions are evaluated.  BUTTON
+	will still output which button was most recently pressed.  CLICKPOS
+	will output the position of the mouse cursor at the moment the
+	button was pressed; this may be different from MOUSEPOS if the
+	user moves the mouse after clicking.
+
+	Note that it's possible for the user to press a button during the
+	evaluation of the instruction list.  If this would confuse your
+	program, prevent it by temporarily setting BUTTONACT to the empty
+	list.  One easy way to do that is the following:
+
+		make "buttonact [button.action]
+
+		to button.action [:buttonact []]
+		... ; whatever you want the button to do
+		end
+
+CASEIGNOREDP						(variable)
+
+	if TRUE, indicates that lower case and upper case letters should be
+	considered equal by EQUALP, BEFOREP, MEMBERP, etc.  Logo initially
+	makes this variable TRUE, and buries it.
+
+COMMANDLINE						(variable)
+
+	contains any text appearing after a hyphen on the command line
+	used to start Logo.
+
+ERRACT							(variable)
+
+	an instructionlist that will be run in the event of an error.
+	Typically has the value [PAUSE] to allow interactive debugging.
+
+FULLPRINTP						(variable)
+
+	if TRUE, then words that were created using backslash or vertical bar
+	(to include characters that would otherwise not be treated as part of
+	a word) are printed with the backslashes or vertical bars shown, so
+	that the printed result could be re-read by Logo to produce the same
+	value.  If FULLPRINTP is TRUE then the empty word (however it was
+	created) prints as ||.  (Otherwise it prints as nothing at all.)
+
+KEYACT							(variable)
+
+	if nonempty, should be an instruction list that will be evaluated
+	whenever a key is pressed on the keyboard.  The instruction list
+	can use READCHAR to find out what key was pressed.  Note that only
+	keys that produce characters qualify; pressing SHIFT or CONTROL
+	alone will not cause KEYACT to be evaluated.
+
+	Note that it's possible for the user to press a key during the
+	evaluation of the instruction list.  If this would confuse your
+	program, prevent it by temporarily setting KEYACT to the empty
+	list.  One easy way to do that is the following:
+
+		make "keyact [key.action]
+
+		to key.action [:keyact []]
+		... ; whatever you want the key to do
+		end
+
+LOADNOISILY						(variable)
+
+	if TRUE, prints the names of procedures defined when loading
+	from a file (including the temporary file made by EDIT).
+
+PRINTDEPTHLIMIT						(variable)
+
+	if a nonnegative integer, indicates the maximum depth of sublist
+	structure that will be printed by PRINT, etc.
+
+PRINTWIDTHLIMIT						(variable)
+
+	if a nonnegative integer, indicates the maximum number of members
+	in any one list that will be printed by PRINT, etc.
+
+REDEFP							(variable)
+
+	if TRUE, allows primitives to be erased (ERASE) or redefined (COPYDEF).
+
+STARTUP							(variable)
+
+	if assigned a list value in a file loaded by LOAD, that value is
+	run as an instructionlist after the loading.
+
+UNBURYONEDIT						(variable)
+
+	if TRUE, causes any procedure defined during EDIT or LOAD to be
+	unburied, so that it will be saved by a later SAVE.  Files that
+	want to define and bury procedures must do it in that order.
+
+USEALTERNATENAMES					(variable)
+
+	if TRUE, causes Logo to generate non-English words (from the
+	Messages file) instead of TRUE, FALSE, END, etc.
+
+
+Logo provides the following buried variables that can be used by programs:
+
+LOGOVERSION						(variable)
+
+	a real number indicating the Logo version number, e.g., 5.5
+
+LOGOPLATFORM						(variable)
+
+	one of the following words: wxWidgets, X11, Windows, or
+	Unix-Nographics.
+
+
+
+INTERNATIONALIZATION
+====================
+
+Berkeley Logo has limited support for non-English-speaking users.
+Alas, there is no Unicode support, and high-bit-on ASCII codes work in
+some contexts but not others.
+
+If you want to translate Berkeley Logo for use with another language,
+there are three main things you have to do:
+	1. Primitive names
+	2. Error (and other) messages
+	3. Documentation
+
+For primitive names, the easiest thing is to provide a startup file that
+defines aliases for the English primitive names, using COPYDEF:
+	COPYDEF "AVANT "FORWARD
+This should take care of it, unless your language's name for one primitive
+is spelled like the English name of a different primitive.  In that case
+you have to turn REDEFP on and be sure to copy the non-conflicting name
+before overwriting the conflicting one!
+
+"Primitives" that are actually in the Logo library, of course, can just
+be replaced or augmented with native-language-named Logo procedures and
+filenames.
+
+Of course Logo programs will still not look like your native language if
+the word order is dramatically different, especially if you don't put
+verbs before their objects.
+
+For error messages, there is a file named Messages in the logolib directory
+with texts of messages, one per line.  You can replace this with a file for
+your own language.  Do not add, delete, or reorder lines; Logo finds messages
+by line number.  The sequences %p, %s, and %t in these messages represent
+variable parts of the message and should not be translated.  (%p PRINTs
+the variable part, while %s SHOWs it -- that is, the difference is about
+whether or not brackets are shown surrounding a list.  %t means that the
+variable part is a C text string rather than a Logo object.)  If you want to
+change the order of two variable parts (no reorderable message has more than
+two), you would for example replace the line
+	%p doesn't like %s as input
+with
+	%+s is a lousy input to %p
+The plus sign tells the message printer to reverse the order; you must
+reverse the order of %p and %s, if both are used, to match.  The plus
+sign goes just after the first percent sign in the message, which might
+not be at the beginning of the line.  The sequence \n in a message
+represents a newline; don't be fooled into thinking that the "n" is part
+of the following word.
+
+Some messages appear twice in the file; this isn't a mistake.  The two
+spaces before "to" in "I don't know how  to" aren't a mistake either.
+The message containing just "%p" is for user-provided error messages
+in THROW "ERROR.  The message "  in %s\n%s" is the part of all error
+messages that indicates where the error occurred if it was inside a
+procedure; you might want to change the word "in" to your language.
+"%s defined\n" is what LOAD prints for each procedure defined if
+the variable LOADNOISILY is TRUE.  "to %p\nend\n\n" is what EDIT puts in the
+temporary file if you ask to edit a procedure that isn't already defined.
+
+Also in the Messages file are lines containing only one word each; the
+first of these is the word "true".  Some of these words are recognized by
+Logo in user input; some are generated by Logo; some are both.  For example,
+the words TRUE and FALSE are recognized as Boolean values by IF and IFELSE,
+and are also generated by Logo as outputs from the primitive predicates
+such as EQUALP.  The word END is recognized as the end of a procedure
+definition, and may be generated when Logo reconstructs a procedure body
+for PO or EDIT.  I've used capital letters in this paragraph for easier
+reading, but the words in the Messages file should be in lower case.
+
+If you replace these with non-English words, Logo will *recognize* both the
+English names and your alternate names.  For example, if you replace the
+word "true" with "vrai" then Logo will understand both of these:
+	IF "TRUE [PRINT "YES]
+	IF "VRAI [PRINT "YES]
+
+The variable UseAlternateNames determines whether Logo will *generate*
+other-language names -- for example, whether predicate functions return
+the other-language alternates for TRUE and FALSE.  This variable is FALSE by
+default, meaning that the English words will be generated.
+
+You might wish to have English-named predicate functions generate English TRUE
+and FALSE, while other-language-named predicates generate the alternate
+words.  This can be done by leaving UseAlternateNames false, and instead of
+defining the other-language predicates with COPYDEF, do it this way:
+
+	to french.boolean :bool
+	if equalp :bool "true [output "vrai]
+	if equalp :bool "false [output "faux]
+	output :bool	; shouldn't happen
+	end
+
+	to make.french.predicate :french :english :arity
+	define :french `[[[inputs] ,[:arity]]
+	                 [output french.boolean
+				    apply ,[word "" :english] :inputs]]
+	end
+
+	? make.french.predicate "egal? "equal? 2
+	? pr egal? 3 4
+	faux
+	? pr egal? 4 4
+	vrai
+	? pr equal? 3 4
+	false
+	? pr equal? 4 4
+	true
+
+The third input to make.french.predicate is the number of inputs that the
+predicate expects.  This solution isn't quite perfect because the infix
+predicates (=, <, >) will still output in English.  If you want them to
+generate alternate-language words, set UseAlternateNames to TRUE instead.
+
+Some of the words in this section of the Messages file are names of Logo
+primitives (OUTPUT, STOP, GOTO, TAG, IF, IFELSE, TO, .MACRO).  To translate
+these names, you must use COPYDEF as described earlier, in addition to
+changing the names in Messages.  You should be consistent in these two steps.
+Don't forget the period in ".macro"!
+
+For documentation, there are two kinds: this manual and the help files.
+The latter are generated automatically from this manual if you have a
+Unix system, so in that case you need only translate this manual,
+maintaining the format.  (The automatic helpfile generator notices
+things like capital letters, tabs, hyphens, and equal signs at the
+beginnings of lines.)  The program makehelp.c may require modification
+because a few of the primitive names are special cases (e.g., LOG10 is
+the only name with digits included).
+
+If you don't have Unix tools, you can just translate each helpfile
+individually.  A period in a primitive name is represented as a D in
+the filename; there are no files for question marks because the HELP
+command looks for the file named after the corresponding primitive
+that ends in P.
diff --git a/js/games/nluqo.github.io/~bh/elogo.html b/js/games/nluqo.github.io/~bh/elogo.html
new file mode 100644
index 0000000..b24b355
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/elogo.html
@@ -0,0 +1,452 @@
+<HTML>
+<HEAD>
+<TITLE>The Logo language and the Logo style</TITLE>
+</HEAD>
+<BODY>
+<H1>Symbolic Programming vs. Software Engineering --
+Fun vs. Professionalism --
+Are These the Same Question?
+</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>I was asked to talk about "the role of Logo-like learning of programming in
+computer science education."  The trouble is that I'm not sure I know what
+"Logo-like" means.  It's an interesting word; as soon as we hear it, we all
+feel as if we know more or less what the person who says it means.  We don't
+have the same urge to interrupt that we would if someone said, for example,
+"recursion-like."  But do we really understand each other?  It gets a little
+fuzzy, for me, when I think about it in more detail.
+
+<H2>What is a Logo-Like Language?</H2>
+
+<P>Let me give a couple of examples.  First, I notice that in the conference
+announcement, the programming language ISETL is considered to be Logo-like.
+But in 1976, Seymour Papert dismissed APL, which is in many ways similar in
+spirit to ISETL, by referring to "languages of the BASIC/APL/FORTRAN family"
+[Pap76].  Logo, APL, and ISETL are all interactive languages that support
+recursive functions and are designed around mathematical ideas rather than
+around computer hardware capabilities.  Logo is different from the other two
+in that its mathematics is meant to appeal to young kids, while both APL and
+ISETL present a more conventional, adult mathematics.  What has changed to
+make APL non-Logo-like in 1976 but ISETL Logo-like in 1993?
+
+<P>As a second example, I'm not sure that my own work, even when I use Logo,
+is really "Logo-like."  In Seymour's new book he characterizes the spirit
+of Logo as a promotion of Concrete Operational thinking from an interim
+stage of development, one that should be discarded as soon as possible, to a
+mode of thinking that is at least as valuable as Formal or abstract
+reasoning, even in adulthood.  [Pap93]
+
+<P>When I read that, I was reminded of the history of the Logo IF notation.
+The early dialects of Logo, up to the MIT Logo for the Apple and its
+Terrapin descendents, use a BASIC-like IF-THEN notation:
+
+<P><CODE>IF :X < 0 THEN PRINT "NEGATIVE</CODE>
+
+<P>I was part of the design team for Apple Logo, the first LCSI product, and I
+was, as much as anyone, responsible for the shift to the notation in which
+IF is a procedure with two arguments, a true-or-false value and a list of
+instructions:
+
+<P><CODE>IF :X < 0 [PRINT "NEGATIVE]</CODE>
+
+<P>Our argument was that Logo should have a single, uniform rule for evaluating
+expressions:  Every expression consists of the name of a procedure, followed
+by some number of expressions that provide the arguments.  Logo evaluates
+those subexpressions, then invokes the named procedure with their values as
+its argument values.  The advantage of the uniform notation is that it paves
+the way to user-defined control structures like
+
+<P><CODE>WHILE [:X < 0] [PRINT :X MAKE "X :X+5]</CODE>
+
+<P>But there's no question that the LCSI syntax requires some explanation
+for beginning Logo programmers.  By making this change, have we put general
+rules -- abstract thinking -- above the concrete specificity of IF/THEN?
+Was this a non-Logo-like change?  LCSI is Seymour's company, and they still
+use the newer IF syntax.
+
+<H2>What is Logo-Like Learning?</H2>
+
+<P>Both of these examples raise the question of what constitutes a Logo-like
+language.  I was asked to address a somewhat different question, about
+Logo-like learning.  But I'm just as confused about what that means.  Let me
+describe two of my own experiences as a teacher, and let's ask to what
+extent each of them is "Logo-like."
+
+<P>The experience I enjoyed most, and of which I'm proudest, was running a
+computer lab at the Lincoln-Sudbury Regional High School, in Massachusetts,
+from 1979 to 1982.  It was never completely clear what I was supposed to
+teach.  The principal, who came from a business background, talked about
+"data processing."  Some of the other teachers had picked up on the recently
+invented phrase "computer literacy."  Computer science as a high school
+subject didn't really exist yet; I was myself most interested in computer
+programming, especially systems programming.  The students, too, had a broad
+range of interests and expectations when they signed up for a computer
+course.
+
+<P>At first I tried offering different courses for students with different
+levels of interest, but I soon learned that most students didn't really know
+what they wanted until they had some experience within the courses.
+(Remember that personal computers had just barely been invented, and most
+students had no idea what it meant to use a computer, or to program one.)
+I ended up using a self-paced structure, in which there was one course for
+everyone, but each student could design his or her own curriculum within
+broad limits.  Logo programming was one of the options.  Every beginner was
+required to learn a little Logo and a little word processing; beyond that,
+anything was allowed.
+
+<P>We had a Unix-based timesharing system.  At that time, Unix provided
+programming languages and application software far in advance of anything
+available on personal computers, such as the Apple II and the Atari 800.
+Partly because of Unix, and partly because I was spending much of my own
+time on system software development, the kids soon got the idea that the
+adult programming language was C, and so that's what all of the really
+interested students used.  C is about as far from a Logo-like language as
+you can get!  The C programmer deals very directly with issues of data
+representation within a computer, such as word length and memory allocation.
+
+<P>On the other hand, what felt "Logo-like" about this situation was that the
+kids were engaged entirely in real work, using the computer for their own
+goals and not jumping through assigned hoops.  (Some students took on the
+task of helping with the school's administrative computing; this work was
+somewhat less self-directed, but even more real, than the student-initiated
+projects.)  A lot of effort went into video games, using the limited
+character-based graphics of the VT-100 terminals.  One student wrote an
+EMACS-like text editor, called JOVE, that's still widely used at Unix sites.
+Not all students took to programming, but many more learned to use the word
+processing facility for their papers for other classes.  (One year I had
+three or four students who were also taking a chemistry class, in which the
+teacher had said they could bring one page of notes into the final exam.
+These students collaborated on designing and printing a page, using the
+smallest available font, to cram in all their notes!)
+
+<P>One reason that Logo itself wasn't popular among these students was the
+technical limitations of the facility.  Graphics terminals were very
+expensive in those days.  We did have a few Atari 800 computers that we used
+as graphics terminals (Atari Logo hadn't been invented yet), but they could
+only handle 40-column text, so they weren't good for much other than
+graphics.  The Logo interpreter we cobbled together for Unix was very slow.
+There was no hardcopy graphics capability.  We did also have some Terrapin
+floor turtles, but they were unreliable.
+
+<P>Another Logo-like aspect, however, was the social interaction in the lab.
+There was no formal class time; people would come and go to use the machine
+or just to hang out.  An organization of students took responsibility for
+running the lab, and its members were given keys to the room so that they
+could use the machine without supervision evenings and weekends.  (Nothing
+was ever stolen, and there was very little breakage.)  Kids set up their own
+working partnerships; more experienced kids taught newcomers.  Most of my
+effort went into this meta-curriculum rather than into teaching programming.
+It didn't always go smoothly; there were fights, violations of privacy, and
+the like.  But we all saw these problems as community problems, not just as
+something for me, the teacher, to deal with.
+
+<P>(To make this focus on community sound a bit more serious, and perhaps more
+"Logo-like," let me discuss it in Piagetian terms for one paragraph.  By
+high school age, kids are supposed to be at the highest stage of cognitive
+development, the Formal Operational stage.  In a certain sense, there is
+nothing more for them to learn, cognitively.  On the other hand, high school
+kids are still far from the top of the scale in moral development.  So it
+makes sense that issues of community and responsibility should be central to
+their education.)
+
+<P>To sum up, my high school computer lab felt to me very much a Logo-like
+learning environment, although Logo itself was a minor component, and
+although many of its characteristics are ones that Seymour Papert lists
+as non-Logo-like: the equipment was concentrated in one room, the
+curricular focus was on computing rather than on math or other areas,
+and the style of work was primarily the formal, abstract, goal-directed
+style that Seymour criticizes as male-oriented.
+
+<P>I currently teach undergraduates at the University of California at
+Berkeley.  Our introductory computer science course was developed at MIT
+[Abe85]; one of the developers is Hal Abelson, a Logo old-timer who led the
+first microcomputer Logo development projects for the TI 99/4 and the Apple
+II.  The course uses Scheme, a dialect of Lisp that's similar to Logo in many
+ways.  (At Berkeley we've even modified Scheme to add the Logo word and
+sentence primitives, so that our students can write Logo-like language
+processing programs.)
+
+<P>Is this course Logo-like?  How I feel about that question depends on my
+standard of comparison.  In a recent paper [Har91] I compare the Abelson and
+Sussman course with more traditional, Pascal-based, software engineering
+courses; by that standard, our course feels very Logo-like indeed.  The
+traditional course is full of commandments about programming style, telling
+students what they should and shouldn't do.  The traditional course must
+spend a lot of time on programming language syntax; our (dare I say)
+Logo-like language has a simple syntax that takes hardly any instructional
+time.  Students work on programming projects that are designed to illuminate
+big ideas in computer science: ideas that help the students write programs,
+rather than abstract theoretical ones.
+
+<P>But compared to my high school experience, this course doesn't feel
+Logo-like at all.  The style is very different, first of all.  I give
+lectures to groups of 300 students.  Then the students go to the computer
+lab to do their assigned projects, but I'm generally not in the lab with
+them.  (We do have teaching assistants in the lab at scheduled hours.)
+The projects are assigned, rather than student-initiated.
+
+<P>In the six years I've been at Berkeley, I've taken some small steps toward
+a learning environment that feels slightly more Logo-like.  For example,
+we used to assign weekly homework with exercises from the textbook.  Now I
+assign the exercises, but don't collect them, so that it's clear to the
+students that the exercises are for their own benefit and not for evaluation
+purposes.  I've instituted cooperative learning, redesigning the programming
+projects to be done by groups rather than by individual students.  These are
+very tiny steps to be discussing at a Logo conference!  But they go very
+much against the grain of the context within which I teach.  The introductory
+course is part of a curriculum ladder, and later courses depend on
+"covering" the curriculum.  The students, in these bad economic times, tend
+to be much more worried about competing for jobs than about learning.
+
+<P>The irony in all this, as we'd expect from our Logo experience, is that the
+students who end up doing best, even in the job market, are the ones who can
+find the courage to forget about jobs and grades and jumping through hoops,
+and treat my course as if it were a more Logo-like environment, getting
+excited about the new ideas and pushing beyond the required work to
+invent and explore new programming techniques.
+
+<P>When I was an undergraduate myself, I was lucky enough to fall in with
+the gang at the MIT Artificial Intelligence Lab, which was for me the
+perfect prototype of a Logo-like environment even before there was Logo.
+On the one hand, everyone was engaged in real work, pushing the state of the
+art in computing, but on the other hand, nobody felt any pressure about it.
+It was all for fun; you could try anything, and if it didn't work out, you
+just tried something else.  (But don't forget that the hacker spirit at that
+lab is also the prototype of the style of work that Papert and Turkle call
+androcentric.)
+
+<H2>How are the Two Related?</H2>
+
+<P>After this long preamble, I think I'm ready to talk about the question in
+the title of this paper.  There are two different ways of looking at a
+computer science lab that both seem connected somehow to the Logo-like scale.
+The more obvious one is about style of work; as I've been saying, from that
+perspective, my high school lab felt extremely Logo-like, and my university
+course doesn't.  This is the question that I've inadequately represented as
+"Fun vs. Professionalism" in my title.
+
+<P>The other is the more technical question about curriculum
+and programming language.  There is a very sharp distinction between the
+software engineering approach and what I think of as the artificial
+intelligence approach.  In the software engineering approach, students are
+being trained primarily to be disciplined in their programming style, so
+that their code can easily fit in with other people's code.  The curriculum
+is full of rules; the programming language used is always one with strong
+typing and similar restrictive rules.  Software engineers talk about object
+oriented programming, for example, primarily as an advance in information
+hiding:  An OOP language is one in which procedures as well as data have
+very tightly limited scopes.  The AI approach replaces this moralistic tone
+with the cultivation of a sense of wonder at the ways in which thinking
+harder about programming can pay off in increased expressiveness.  In this
+approach, there isn't one correct way to program, but rather a world full of
+programming styles and structures, each one appropriate for certain kinds of
+problems.  On this view, for example, object oriented programming is about a
+metaphor, expressing a kind of parallelism in which each datum has its own
+intelligence, rather than about discipline.
+
+<P>This division, the one I've called "Symbolic Programming vs. Software
+Engineering," is fundamentally about the philosophy of computer science.
+It seems quite different from the question about style of work, but I think
+I can find some similarities.
+
+<P>One difference between a Logo microworld and an ordinary piece of
+educational software is that in the Logo version, the program itself is
+available for inspection and modification, not a black box.  In the study of
+computer science, a programming language is itself a microworld.  That's why
+the Lisp tradition of introducing even beginners to the workings of the Lisp
+interpreter is Logo-like:  By examining and modifying the interpreter, we
+turn the Lisp microworld into a glass box instead of a black box.
+
+<P>A crucial part of a Logo classroom is that the learners have permission to
+explore using their own individual styles.  There isn't just one right way
+to program.  Similarly, in the symbolic programming approach to teaching
+computer science, there is no orthodoxy about top-down structured
+programming.  Top-down is one fine approach, but so is tool-building without
+a specific goal in view.
+
+<P>Symbolic languages, and languages with relaxed attitudes toward data types,
+allow for programming projects about sentence generation, carrying on
+conversations, the automated psychotherapist, and so on.  These projects are
+very much in the Logo tradition, and in contrast with the heavy emphasis on
+numeric computation that's typical of the software engineering languages.
+
+<H2>Logo-Like Languages Revisited</H2>
+
+<P>Finding these examples in which the technical details of a programming
+language and a curriculum seem to be connected with working in the Logo
+spirit gives me the courage to return to the question of languages and hope
+that in so doing I'm still addressing the question that was given to me.
+
+<P>In my 1982 <CITE>Byte</CITE> article, I listed several characteristics that seemed to
+make Logo special. [Har82]  Let me go through the list and comment on where
+we stand in programming languages today.
+
+<P><STRONG>Procedural.</STRONG> We seem to have won this battle.  Even
+BASIC, in its modern dialects, allows a modular program structure.  In fact,
+procedural languages are now the right wing of language design, in contrast
+with newer approaches such as functional, object-oriented, and logic
+programming.  Some recent versions of Logo address the issue of parallelism,
+although that newer Logo technology is not yet, I think, widely understood
+among the people actually using Logo in schools.
+
+<P>The issue today that corresponds to the one about procedural programming
+languages a decade ago is that many people don't want to deal with languages
+at all.  Instead, modern software provides a graphical user interface, with
+mice, buttons, menus, and so on.  Even Logo has not ignored this trend;
+LogoWriter on the Macintosh is full of immediate-mode graphical controls for
+things like moving and turning the turtle by hand.  I think the battle we
+have to fight is to maintain the position that immediate-mode control isn't
+enough, because it doesn't allow for the abstraction of regularities and
+patterns of work.  There must be a way to create control structures that can
+carry out the same operations that can be performed graphically.
+
+<P><STRONG>Interactive.</STRONG> This is a crucial issue, and the terms of
+the debate have changed dramatically in recent years.  Originally, there was
+a clear-cut distinction between interactive languages such as Logo, Lisp,
+and BASIC, and non-interactive languages like C and Pascal.  The style of
+work in the non-interactive languages was awful.  Programmers had to write
+their programs in an environment entirely separate from the language itself,
+then go through a compilation process, and finally run the program, often
+with no runtime support for debugging or modifying the program.  Their
+excuse was that a compiled program runs much faster than an interpreted one,
+and indeed the Logo interpreters of that time were unpleasantly slow.
+
+<P>The characteristics of the underlying languages have not changed.  But
+today's Pascal or C programmer works with an integrated development system.
+There is a text editor that understands the syntax of the particular
+language, so that it can check the form of a program as you write it.  There
+is interactive debugging, generally using a window system effectively so
+that the debugging information is visually separate from the output of the
+program itself.  You still can't walk up to a C compiler and ask it to print
+2+2, and yet today's C programmers are likely to complain that a Logo
+programmer suffers from an insufficiently interactive working environment!
+For myself, I still find interaction with the actual programming language
+more powerful than these auxiliary interactive tools, but I'm not sure
+whether that's just because I'm accustomed to an old-fashioned style of work.
+It can certainly be argued that commercially available versions of Logo have
+moved backward in their provisions for debugging support; Apple Logo allowed
+the user to enable an automatic PAUSE in case of an error, but LogoWriter
+doesn't.
+
+<P><STRONG>Recursive.</STRONG> In the early Logo work, learning about
+recursion was a crucial step in intellectual development.  Ideas like the
+little person model of procedure invocation were invented mainly to help in
+understanding recursion.  In one sense, this battle seems to be behind us;
+every modern programming language allows recursion.  But the conventional
+wisdom in computer science education is that recursion is too costly for
+ordinary use; students are taught to prefer iterative language mechanisms.
+Meanwhile, except for drawing fractals, Logo users rarely use recursion in a
+way that couldn't be handled by conventional iterative language constructs.
+(Indeed, part of my technical work has been the introduction of iterative
+constructs to Logo.)  I think it's still worth remembering that recursion is
+a single mechanism with remarkable expressive power.  For example, these
+days it's easier to draw a circle in a canned drawing program than in Logo,
+because the canned program has a dedicated circle feature; but the drawing
+program can't use its circle feature to draw spirals or stars.
+
+<P><STRONG>List Processing.</STRONG> Logo is still out in front on this
+point.  Even other dialects of Lisp don't make the manipulation of words and
+sentences as convenient as it is in Logo.  If you want to conjugate a verb
+or take the plural of a noun, Logo is the language of choice.  On the other
+hand, I think it's still true that most actual Logo users consider list
+processing to be arcane and difficult.  LogoWriter fans often prefer to
+manipulate text by carrying out a sequence of text editing commands on the
+representation of the text on the screen, rather than apply recursive
+functions to the text taken as data.  My hope is that a good collection of
+higher-order functions like MAP and FILTER can make list processing seem
+more palatable.
+
+<P><STRONG>Untyped.</STRONG> This is probably where you'll find the most
+heated arguments between symbolic programming enthusiasts and software
+engineers.  The lack of type declarations in Logo, and in Lisp generally,
+makes programming enormously easier to learn; the software engineers,
+though, think it's sinful.  The real argument for typed variables is that
+the compiler can produce more efficient programs, but the theoretical
+argument is that restricting a variable to a particular type makes for more
+disciplined programming.  (It also makes for ludicrous user interfaces, in
+cases where the natural thing is to read numbers until the user says
+something like "DONE" to indicate the end of the numbers.  Instead, the
+typed languages make the user type something like "9999" or "-1" to indicate
+the end.)  Some computer scientists will say that the advent of object
+oriented programming has settled this question in favor of strong typing,
+but the example of Object Logo shows that that isn't so.
+
+<P><STRONG>Extensible.</STRONG> We are beginning to win this battle when it
+comes to application software.  Many large programs these days include a
+"scripting language," such as Hypertalk as the scripting language for
+Hypercard.  But mainstream programming languages are not generally viewed as
+bases for building language extensions, except in the sense that you can
+write a full interpreter or compiler from scratch.  This property is still
+very important in Logo practice, because it's the technical basis for
+microworlds.  Any Logo programmer (not just the implementors at the software
+companies) can develop an extended Logo with extra primitives for some
+microworld.
+
+<P><STRONG>Interesting Applications.</STRONG> New applications are invented
+very fast these days.  Logo is in the lead in some cases (robotics, with
+Lego-Logo), hustling to catch up in others (MIDI support recently added to
+Object Logo), and not really in the running for some (real-time animation,
+unless you have a massively parallel computer on which to run *Logo).  The
+proliferation of special-purpose software tuned to each of these application
+areas raises the question of whether we can reasonably expect any
+general-purpose programming language to be a good match in every case.  In
+the old days, the appeal of Logo programming wasn't so much the act of
+programming itself as the results you could tease out of a computer; today
+you can get more spectacular results without programming at all.  This is
+why there has been a vast decrease in the amount of time spent on
+programming in schools in the past few years; students are using application
+programs instead.  Is this good or bad?  In a way the issue is similar to
+the one that we argued about when Sprites were introduced in TI Logo:  "It's
+too easy to get pretty pictures on the screen in immediate mode, so kids
+won't learn to think procedurally."
+
+<P><STRONG>User-Friendly.</STRONG> In the old days we made a big fuss about
+things like the text of error messages and the names of primitives.  This
+tradition is still alive in Logo; the switch from OUTPUT to REPORT in
+LogoWriter is an example.  But a new generation of computer users accustomed
+to point-and-click interfaces would question the user-friendliness of any
+Logo environment.  I think we have to admit that Logo syntax, although
+better than Pascal, is still far from transparent.  Can we develop more
+compelling notations without sacrificing the essence of programming?  I
+guess this is what Boxer is about, in part.
+
+<P><STRONG>No Threshold, No Ceiling.</STRONG> We are starting to see a
+division of the Logo using community.  Products like LogoWriter are
+deliberately aimed at the young kids who make up most of Logo's actual
+audience.  Object Logo is a high-end version for more advanced programmers.
+I've found it necessary to implement my own version, Berkeley Logo, just so
+that there will be a more or less unchanging interpreter for the language
+used in my books.  In principle I suppose this is a good thing, because it
+allows us to extend the limits of Logo usability in both directions.  But I
+wonder whether Logo's rather small audience can support so many separate
+development teams.
+
+<P>To sum up, some of the technical issues that seemed important a decade ago
+in distinguishing Logo from other languages are no longer at issue, such as
+procedural organization and recursion.  Others burn as brightly as ever:
+list processing and untyped variables.  Most interestingly, others have
+changed into different issues, especially the ones about user interfaces,
+such as the definition of interactiveness.
+
+<H2>References</H2>
+
+<P>Abelson, Harold, and Gerald Jay Sussman with Julie Sussman. <CITE>Structure
+and Interpretation of Computer Programs</CITE>, MIT Press/McGraw-Hill, 1985.
+
+<P>Harvey, Brian. "Why Logo?"  <CITE>Byte</CITE>, vol. 7, no. 8, August, 1982.
+
+<P>Harvey, Brian. "<A
+HREF="bridge.ps">Symbolic Programming vs. the A.P. Curriculum</A>," <CITE>The
+Computing Teacher</CITE>, vol. 18, no. 5, February, 1991.
+
+<P>Papert, Seymour.  "An Evaluative Study of Modern Technology in
+Education," MIT Logo Memo 26, June, 1976.
+
+<P>Papert, Seymour.  <CITE>The Children's Machine</CITE>, Basic Books, 1993.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/four.html b/js/games/nluqo.github.io/~bh/four.html
new file mode 100644
index 0000000..1faf496
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/four.html
@@ -0,0 +1,197 @@
+<HTML>
+<HEAD>
+<TITLE>Abstracts for Four Papers I'm Gonna Write Someday</TITLE>
+</HEAD>
+<BODY>
+<H1>Abstracts for Four Papers I'm Gonna Write Someday</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+
+<P>Copyright (C) 1989 by Brian Harvey.  Permission is hereby granted to anyone
+to reproduce this paper, provided that it is reproduced in its entirety,
+without editing, and including this notice.
+
+
+<H2>I.  A Professional Ethics Course Wouldn't Have Helped Robert Morris</H2>
+
+<P>In recent months everyone with an axe to grind has been using the November
+Internet Worm as a grindstone.  Security freaks call for more security;
+freedom freaks call for less security; decentralists call for less reliance
+on computer systems; antimilitarists call for less military reliance on
+computers; manufacturers of security devices call for people to buy their
+products.  Regrettably, some people at CPSR meetings are jumping on the
+bandwagon and using this incident to argue for professional ethics classes.
+
+<P>I'm all for professional ethics classes.  But I don't think such a class at
+Cornell would have prevented this incident.  Such classes should, and
+generally do, examine issues that are morally difficult for professionals
+working in the field.  What would an ethics course for computer scientists
+be about?  Probably a major focus, for example, would be on the extent of
+military funding of computer science research.  This is a question of real
+importance not only for working professionals but for the graduate students
+who would be enrolled in the course, who may not like working on weapons
+research but who do want research assistantships.  If 80% of all computer
+science research is funded by the DoD, this poses a problem for antiwar
+computer scientists.
+
+<P>Would a computer science ethics course deal with privacy?  Probably, but
+I hope not at the level of simple exhortations to respect it.  If I were
+teaching such a course, I'd begin by calling the assumptions about
+privacy into question.  For example, let's say the police want to build
+a spiffy data base system to keep track of criminals.  What's so bad about
+that?  I do think it's bad, often, but I don't think it's obvious why.  I
+think that the answer requires a lot of specific historical knowledge about
+the political role of the police in the United States, and the recurring
+real abuses of police power.
+
+<P>If you asked Robert Morris whether computer professionals should respect
+people's privacy, I bet he'd say yes, sincerely.  He would then go on to
+say that the Internet worm wasn't an invasion of privacy, but "just a joke."
+I propose to take this claim seriously.  I argue that the relevant ethical
+issue is this:  Playing practical jokes on one's friends is different from
+playing practical jokes on strangers.  It's not that one is always okay and
+the other always not okay, but the standards are different.  Practical jokes
+are about trust and testing trust.  The degree of trust one can expect from
+friends is higher than the degree it's reasonable to expect from strangers.
+This would be a terrific issue to raise in an ethics class for 12-year-olds.
+(I'm not being sarcastic; when I was a 12-year-old I attended a school with
+required ethics classes.)  It's unlikely that a teacher of graduate students
+would think to raise it.
+
+<P>I believe it is a serious problem in our society that adolescence commonly
+lasts into the mid-20s and beyond.  The reasons have to do with a lack of
+serious adult values, the commercial glorification of youth, a tight economy
+in which adult life often truly is bleak and joyless, state-sponsored
+lotteries, and many other things.  Professional ethics classes, though, do
+not address this problem.
+
+
+<H2>II.  Moral Dilemmas are not Ethics</H2>
+
+<P>The model for professional ethics courses is medical ethics courses.  The
+latter often revolve around dilemmas, that is, around issues that are
+genuinely controversial among honest, well-motivated doctors.  Abortion,
+euthanasia, whether to offer an honest diagnosis if you think it'll hurt
+the patient's health: all of these questions in which life and death are
+literally at stake are no easier for ethical philosophers than for medical
+practitioners.
+
+<P>The purpose of a medical ethics course is not to encourage doctors to be
+ethical.  That is taken for granted, as a precondition of the course.
+Nor is the purpose of the course to call attention to obscure ethical
+questions.  Every medical student knows about these questions, as does
+everyone who reads newspapers.  The purpose of the course is to provide
+the students with knowledge of the range of arguments that have been made
+about the difficult questions, so that they do not begin their careers with
+one-sided views out of ignorance of alternatives.
+
+<P>In computer science our situation is not like that of the medical profession.
+Among our colleagues the very idea of social responsibility is open to
+question.  "First, do no harm" is not controversial among doctors, but
+some computer programmers are perfectly comfortable building the tools for
+arbitrageurs and other social parasites.  "Suppose your employer orders you
+to release a product known to have bugs because the deadline is approaching..."
+This is an ethical dilemma?  It wouldn't be, in a profession with a sense of
+ethics.
+
+<P>The medical ethics course is useful as an adjunct to the real ethical
+education of medical students, which happens in hospital wards.  Everyone
+involved understands that the course is an adjunct.  Everyone understands
+that ethics is about empathy, human respect, and courage more than it's
+about intellectual resolution of moral puzzles.
+
+<P>In computer science, solving puzzles is central to our work.  It is all too
+easy to see social responsibility as just another kind of puzzle, to be
+solved by the same techniques of formal reasoning we use with other puzzles.
+A dilemma-based computer ethics course too easily lets us off the hook.
+Instead our ethics courses must be about ethics!  That is, they must force
+students to confront the existence of good and evil, to choose between
+selfishness and community spirit.  Very few computer scientists explicitly
+choose evil, but many prefer to pretend that there is no choice to make.
+
+
+<H2>III.  There Is Nothing that Everyone Needs to Know about Computers</H2>
+
+<P>I have been arguing for several years with people who believe that to be
+employable, one must be "computer literate" -- skilled in some aspect or
+other of computer use.  In the context of social responsibility there
+seems to be a different argument, asserting that one cannot be an effective
+citizen in a democracy without a technical understanding of the political
+issues involving computers.  How will people know which way to vote on
+Star Wars, if they don't understand programming methodology?
+
+<P>This version of the "computer literacy" argument is also nonsense.  It's
+a losing battle.  Computers are not the only technology that comes to the
+attention of voters.  Freon, oil spills, nuclear power, genetic engineering,
+the prime interest rate, the use of standardized tests that may or may not
+discriminate against some group in college admissions, research on animals,
+potential AIDS drugs, biochemical versus psychodynamic approaches to mental
+illness, teaching foreign-born students in English or in their native
+languages, what the Founding Fathers really meant about bearing arms: are
+the voters to be "literate" about all of these?
+
+<P>How, in fact, do I decide to believe the scientists who tell me that people
+evolved from animals, and not the ones who tell me that nuclear power is
+safe?  I have no technical knowledge about either issue.  Supposing that I
+were forced to take "biology literacy" and "nuclear power literacy" courses;
+how would I decide whether or not to trust the teachers of those courses?
+The answer is that my beliefs are based on nontechnical aspects of the
+issues.  For example, I know that there is money to be made in nuclear power,
+but I don't see anyone profiting from the theory of evolution.  I know that
+the supposedly neutral Nuclear Regulatory Commission conspired with the
+plant owners to withhold information about the Three Mile Island failure;
+I don't know of any such scandal among evolution theorists.  I know that
+the nuclear power industry got Congress to pass a law exempting them from
+civil damage suits, and I understand what this means about their own
+confidence in their operations.  I know that the spokespeople for evolution
+include exemplary human beings like Stephen Jay Gould, who also finds time
+in his schedule to work against racism; those who speak for nuclear power
+are more likely to be sleazeballs who also argue for nuclear weapons.
+
+<P>What the voters need is "political literacy": knowing how to read the
+newspaper without technical knowledge of the subject under discussion.
+They need the intellectual weapon of class analysis.  They need the
+commitment to remember last year's scandals to help them understand
+this year's.  They need the sophistication to understand dialectical
+tension, in which two contradictory views can both be aspects of the
+truth, without dissolving into relativism, in which everything and nothing
+is true.
+
+
+<H2>IV.  Ethics is Learned in the Laboratory</H2>
+
+<P>What is the policy about game-playing at your school's computer lab?
+Some students want to play computer games.  Other students (perhaps the
+same students at another time) want to get their assigned work done.  Does
+some adult facility manager decide the rule?  (No games 8am to 11pm, let's
+say.)  Then, do paid adult staff members police the rule?  Or are students
+part of the process of setting the rule and enforcing it?
+
+<P>What happens when a student shows an interest in developing system
+software?  Is s/he encouraged?  Given access to source files?  Allowed
+to install the new version for general use?  Or informed that students
+can't be trusted to write software lest it be full of trapdoors?
+
+<P>Is the computer lab always open?  Is it closed at night because there's no
+money for staff to prevent equipment theft?  Is there a way students could
+organize cooperatively to staff the lab?  Are they encouraged to do so?
+
+<P>When one student complains about another student violating the privacy of
+his or her files, how is the issue resolved?  (What about faculty or staff
+violating the privacy of student files?  Is that an issue?)
+
+<P>The computer lab is the best place to begin professional education in
+social responsibility.  The crucial point is to build a sense of
+community.  Faculty should be part of this community also, but decisions
+about things like game policy should be truly democratic.  It's the students
+who face the consequences, and they can understand the issues.
+
+<P>(I guess I am arguing for Carol Gilligan's relationship-based view of
+moral development, as against Lawrence Kohlberg's rule-based view, which
+is embodied in the presentation of moral dilemmas in ethics classes.)
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/freedom.html b/js/games/nluqo.github.io/~bh/freedom.html
new file mode 100644
index 0000000..49a5d04
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/freedom.html
@@ -0,0 +1,295 @@
+<HTML>
+<HEAD>
+<TITLE>Using Computers for Educational Freedom</TITLE>
+</HEAD>
+<BODY>
+<H1>Using Computers for Educational Freedom</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>[This article is adapted from a talk given by the author at the Second
+Annual Computer Conference at Lesley College, May 3, 1980.]
+
+<P>The computer is fast becoming an educational cure-all; depending on which
+expert you consult, it can teach problem-solving skills, teach basic
+arithmetic by making drill fun, replace the teacher, augment the teacher,
+or provide experiential learning.  Given all these possibilities, it's
+hard to establish priorities when setting up a computer facility.  The way
+to choose what to do first, from among the many exciting possibilities, is
+to start with a clear idea of your overall goals.
+
+<P>I would like to suggest one possible goal, and consider its practical
+implications.  The goal is summed up in this statement by Ted Nelson:
+<EM>``The purpose of computers is human freedom.''</EM>
+[From <CITE>The Computer Lib Pledge</CITE> (c) 1978 Ted Nelson.]
+That's pretty vague, as it stands.  Let me say first that it doesn't mean
+<EM>not</EM> to think about other goals.  It does, though, establish priorities
+in buying equipment and in spending time on development of the facility.  We
+have set up a computer facility at Lincoln-Sudbury Regional High School
+(we bought a Digital Equipment Corporation PDP-11/70 in 1979), and
+our choices will help explain what I understand by this goal.
+
+<P>The word ``freedom'' means many different things in different contexts.  For
+the purposes of this discussion, though, I want to consider two fairly
+narrow components of freedom: <EM>variety</EM> and <EM>initiative</EM>.
+
+<H2>Variety: Activities vs. Tools</H2>
+
+<P>It makes no sense to talk about freedom for students unless they have
+choices to make.  And as Jonathan Kozol points out, they have to be
+<EM>significant</EM> choices--deciding between tuna fish and peanut butter
+in the cafeteria doesn't count.
+
+<P>Probably the first thing which comes to mind under the heading of variety
+is a variety of activities, as in the open classroom approach.  In the
+context of computer education, we can provide a variety of game programs
+for student use, and a variety of suggested programming projects.  This
+kind of variety is an obviously worthwhile step, but I think that the
+computer allows a much more profound step toward freedom: a variety of
+<EM>tools</EM>.
+
+<P>You can go to the store and buy a ``computer game'' with a name like
+Electronic Football.  The game implies one specific activity.  If it's
+a good game, you may play it often.  But if you get bored with the
+activity, the device is useless to you.  Alternatively, you can buy a
+screwdriver.  This tool is not limited to one activity; in fact, it
+doesn't suggest an activity at all.  That is, you don't say ``I think
+I'll go play with my screwdriver now.''  Instead, you say ``I think I'll
+fix that loose hinge now,'' and you reach for your screwdriver without
+thinking about it.
+
+<P>It may be overstating the case to say that the Electronic Football game
+actually decreases its owner's freedom, but certainly a good assortment
+of tools is much more conducive to free behavior.  The computer lends
+itself to creating such a toolkit.  Here
+are some of the tools we offer:
+
+<UL>
+<LI>The <EM>turtle</EM> is a small robot which moves on the
+floor under computer control.  It also has headlights and a horn.  It
+lends itself to many different
+activities: it can be taught to dance; it can draw pictures with the pen
+in its belly; it can be sent across the room to attack one's friend at another
+terminal; using its touch sensors, it can be taught to maneuver around
+obstacles or to escape from mazes.
+
+<LI>We have a Diablo printer, a typewriter-like device which allows variable
+character spacing.  With suitable software tools, it can be used to print
+papers with justified margins, boldface, underlining, and automatic
+hyphenation.  This tool was originally envisioned as an aid to the writing
+of English or history papers.  However, students have come up with several
+unanticipated uses for this tool.  Our school newspaper, the <EM>Promethean</EM>,
+is using it to typeset their articles.  This activity is one in which a
+group of students with no direct interest in computers is using the machine
+to further what <EM>is</EM> their direct interest: putting out a
+newspaper.  Another activity is the creation of computer graphics, by
+printing closely spaced dots.  The first such project was done by a student who
+typed in the necessary sequence of
+dots and spaces by hand, with no programming involved; later projects have
+become more sophisticated.
+
+<LI>The primary means of communication with the computer are our VT-100 display
+terminals.  These are not graphics terminals, in the sense that it is not
+possible to draw a smooth curve on their screens.  They were intended simply
+as text display terminals, and one of our most important software tools is a
+display-oriented text editor which exploits their capabilities.  The chore of
+entering information into the computer is made infinitely easier with good
+display software, compared to the more common line-oriented hardcopy editors.
+But the VT-100 also has a ``graphics character set'' which allows lines, blocks,
+and a few other special symbols to be displayed in place of text.  I've been
+spoiled by the powerful graphics terminals at university research centers,
+and the limited graphics of the VT-100 was beneath my notice.  But several
+students have used the VT-100 to program PDP-11 timesharing versions of some
+of the standard personal computer video games, such as Breakout and Asteroids,
+and Conway's mathematical game of Life.  Writing such a game is both more
+educational and more fun than simply playing one which somebody else programmed.
+But even for the other students who play these games, it is better that they
+are programmed by a fellow student and not by a wizard off in a distant
+castle.  The program is available for inspection, and the authors are available
+for questioning.
+
+<LI>We have five Atari 800 personal computers, which we use as graphics
+terminals.  The same commands which move the robot turtles across the
+floor can be used to draw pictures by moving a ``display turtle'' across
+the TV screen.  A special 6502 machine language program for the Atari
+processes display commands sent from the central PDP-11 system.  The
+Ataris are used as terminals, rather than as independent computers, so
+that students can use the powerful Logo programming language, which is
+not available for the Atari itself.
+
+<LI>The Unix
+operating system we use on the PDP-11 provides literally hundreds
+of software tools, small and large.  At the small end are things like a
+program to print a file, going over each line twice, to get readable output
+from a hardcopy terminal with a weak ribbon.  At the large end are the
+programming languages, of which more later.  In the middle are the document
+formatter, an automatic spelling checker with a large dictionary, the text
+editor mentioned earlier, a sort program, and a utility program which extracts
+from a data file all lines containing a user-specified text string.  As an
+example of the importance of these tools, one of the computer center ``regulars''
+two years ago was
+also very interested in the newly-formed school radio station.  He wanted
+to use the computer to maintain a catalog of the radio station's record
+collection.  He envisioned a major programming project to develop programs to
+allow typein of record titles, recording artists, and so on; to produce lists
+sorted by title, by artist, or by record company; and to find out whether a
+particular record, or any record by a particular artist, is in the catalog.  I
+pointed out that
+the existing text editor, sort program, and text-matching utility are
+sufficient without additional programming.  A sequence of two or three commands
+to the existing programs can be written in a minute or two.  Also, the operating
+system allows such a sequence of commands to be written in a file, and given
+a name, defining a new command.  This facility makes it easy for other students
+to use the record catalog without knowing the details of operation of the
+utility programs.
+
+<P>The example is important because it illustrates the point that a student
+with a well-equipped toolkit can accomplish tasks of practical interest, which
+might otherwise seem impossible to non-wizards.  <EM>Good tools expand kids'
+view of the possible.</EM>  This point ties the technical issue of a variety of
+tools to the more political, or psychological, question of initiative.  The
+connection will be discussed further below.
+</UL>
+
+<P>The most powerful of software tools is the programming language.  A student
+who can program is truly free to use the computer in ways not anticipated by
+a teacher or operating system designer.  The choice of programming language
+has a profound effect on the range of problems within the student's grasp;
+some languages are more powerful than others, and also some are more
+conducive than others to a programming style which will make large problems
+comprehensible to mere human beings.  For beginning programming students, we
+use the Logo language.  This language, developed specifically as a teaching
+language at MIT and at Bolt Beranek and Newman, Inc., is simple and interactive,
+like BASIC, but also allows the power of list processing and recursive
+procedures, like the LISP language from which many of its ideas came.  The
+beginning programmer can type in a simple command for immediate execution
+(PRINT 2+2) or store a sequence
+of commands as a named procedure for later
+use.  A complex problem can be divided naturally into sub-problems, each
+solved by a sub-procedure of the main program.  A procedure can also use
+<EM>itself</EM> as a sub-procedure.  The language contains provisions for
+interesting problem domains like graphics (through the turtle commands
+mentioned earlier) and language processing (for example, translating a
+sentence into Pig Latin).
+
+<P>Other languages we use are APL, Pascal, C, and LISP.  APL is used by the
+Mathematics Department not to teach programming <EM>per se</EM>, but to provide
+as a tool to students what amounts to a calculator which understands algebra.
+The language hides many of the problems of control structure which are
+prominent in more conventional languages, and emphasizes instead mathematical
+concepts like functions, vectors, and matrices.  Pascal is quickly becoming
+a very popular teaching language because it is available on many microcomputers
+and is designed to foster the Structured Programming style.  I think it suffers
+as an initial teaching language from the fact that it is not interactive; the
+student must learn to cope with details of text editors, files, and operating
+systems before writing even the simplest Pascal program.  However, it is a
+marvelous <EM>second</EM> language for the student who has mastered these details,
+because it calls attention to issues of data types and storage allocation which
+are hidden in an interactive language with dynamic allocation, like Logo.  [1994
+addendum:  I can't believe I said that!] The
+C language is much like Pascal in its design, but it has the added benefit that
+most of the Unix operating system software itself is written in C, so a student
+who is curious about the inner workings of the software can read the actual
+programs after learning C.  Finally, LISP is one of the most powerful of
+languages, used widely in Computer Science research.  It provides a worthwhile
+challenge to our advanced students, and has been used in one formal course on
+Computational Linguistics.
+
+<P>Finally, an important role for the teacher in all this is as a sort of human
+tool; he is a consultant on ways and means, rather than an initiator of
+activities for students.  I spend my time helping individual students debug
+their programs, rather than lecturing to a large group.  I also encourage
+students to use one another as consultants and as tutors.
+
+<H2>Initiative: a Political Issue</H2>
+
+<P>Educational freedom means, first of all, that students can make significant
+choices from a variety of alternatives.  But if the choices are always made
+from a list invented by a teacher, the freedom is of a very limited sort.  The
+example of using the computer to typeset the <EM>Promethean</EM> illustrates
+a very different sort of choice, in which
+students meet <EM>their own
+needs</EM> (the newspaper is an extracurricular activity, not a course) using
+the computer as a tool.  That's what initiative means.
+
+<P>There is a clear relationship between this notion of initiative and the
+availability of a variety of tools.  The more traditional variety of
+activities encourages what might be called ``passive freedom''; students are
+free to choose, but not free to initiate.  In Paulo Freire's terms, students
+are still <EM>objects</EM> of an education provided by their teachers.  But a
+variety of tools encourages students to become the <EM>subjects</EM>--the
+actors rather than the acted-upon--of their own education.
+
+<P>Any attempt to make initiative a guiding principle in teaching will
+confront two psychological barriers: first, it is hard for <EM>adults</EM> to
+<EM>permit</EM> student initiative; second, it is hard for <EM>students</EM>
+to <EM>accept</EM> the
+burden, an unusual one in a high school, if we encourage them to take
+initiative.
+
+<P>Many of the experts who write articles or talk at conferences about the use
+of computers in education give the impression that simply introducing
+computers to the classroom will automatically lead to increased freedom for
+learners.  The truth, I think, is that the use of computers can go either
+way.  When Ted Nelson says ``The purpose of computers is human freedom,'' he
+really means that that is what the purpose <EM>should be</EM>.  In practice, most
+computers are better described as dedicated to human slavery!  The computers
+at the IRS check up on income tax cheaters; the ones at the bank send you
+bills (or your paycheck, which is more pleasant than a bill but a more
+important form of economic slavery).  More sophisticated research computers
+at the universities are used to study pictures of Vietnamese jungles to help
+figure out where to drop the napalm.  Similarly, many
+computers in schools are still used exclusively for administrative computing;
+students don't get near them.  If students do use the computers, it is often
+only for teacher-directed drill and practice, no matter how cleverly disguised
+as a game.  Better uses of the technology are possible,
+but they aren't inevitable.
+
+<P>Consider an analogy.  Most teachers probably agree, in principle, with the
+idea of educational freedom.  Students learn best through intrinsic motivation,
+not through force.  What you learn under pressure doesn't last past the exam.
+Everyone says these things, and yet almost all teachers continue to give
+grades.  Why?  ``It's required''; ``The colleges need grades''; ``The parents
+wouldn't stand for it''; ``It's the way things are.''  In short, the reasons
+for grades are political.  The same political reasons make educational
+freedom through computers a difficult goal.  If students are left to their
+own devices to initiate projects, how do we evaluate them?  How do we know
+they aren't just wasting time?  Remember, many school computers are funded
+through federal grants, and the feds always insist on evaluation of the
+program.  That means coopting the computer into the usual school routine
+of assignments initiated and evaluated by teachers.
+
+<P>An even more frustrating barrier is that the students themselves are not
+accustomed to being without instructions from an adult.  Many students
+will find valuable projects on their own, but many more will have to be
+weaned away slowly from dependence on explicit assignments.  One of my early
+students taught himself four different programming
+languages, and learned a great deal about issues of programming
+style and structure in his senior year.  He'll probably
+learn less about computers in four
+years of college.  But he told me every day that I'm a terrible teacher,
+because I didn't <EM>make</EM> him learn anything.  I didn't stand in front of
+the room and impart information, I didn't send in skip slips if he didn't
+show up, and I didn't punish him when he acted obnoxious.  Well, it's not
+much fun to hear all this.  It was tempting to say ``OK, if that's what you
+want, sit down and shut up!''  But I doubt if the most effective classroom
+manager in the world could teach this student as much in a year as he
+learned on his own--he would start directing his efforts into a
+power struggle.
+
+<P>What does all this mean as a guide to action?  Well, our computer was
+installed for a full year before I started working on curriculum materials
+or organizing a course structure.  I spent that year collecting and
+building tools, and kids spent the year learning on their own, or by
+asking questions.  Two years later, we have a computer course in operation
+based on self-paced curriculum units, with no grades and with many
+different options in the actual course content.  And about 50 kids have
+keys to the computer center, and use it evenings and weekends without
+adult supervision.  The path from there to here was far from smooth,
+but it's been exciting.
+
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/futoshiki.png b/js/games/nluqo.github.io/~bh/futoshiki.png
new file mode 100644
index 0000000..024feb8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/futoshiki.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/gary.html b/js/games/nluqo.github.io/~bh/gary.html
new file mode 100644
index 0000000..e2c8989
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/gary.html
@@ -0,0 +1,326 @@
+<HTML>
+<HEAD>
+<TITLE>The Role of Logo in Secondary and Post-Secondary Computer Science</TITLE>
+</HEAD>
+<BODY>
+<H1>The Role of Logo in Secondary and Post-Secondary Computer Science</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+
+<P>First of all, what do we mean by "computer science"?  I take it that we are
+talking about the study of computing as a thing of interest in itself, not
+the use of computers for practical work or the use of computers in teaching
+some other piece of curriculum.  Beyond these generalities, I think it makes
+a big difference whether we're talking about high school or university level.
+
+<H2>High School Computer Science</H2>
+
+<P>Why should a high school student study computing?  Let me start with a
+negative answer:  I don't think it has anything to do with job training.
+More specifically, the computer-related jobs for which one can be hired
+directly from high school are not computer <EM>science</EM> jobs; they're data
+entry jobs, perhaps technician jobs, perhaps sales jobs.  The students who
+want those jobs need practical experience with computers, but computer
+science is something different.
+
+<P>I see two purposes for the study of computer science in high school.  One is
+that it provides the basis for a kind of intellectual apprenticeship.  It
+happens that the process of programming a computer is very appealing to many
+kids; by taking that process seriously, they experience the sort of
+commitment and pursuit of excellence that other kids get from team sports,
+from the school newspaper, and so on.  The appeal of programming is that a
+student can achieve real results, using the computer for some real purpose.
+We as teachers should be happy to encourage our students in this pursuit
+because along the way they learn about formal language, about refining a
+rough solution (debugging), about engineering decisions, and many other good
+lessons.
+
+<P>A second, more specific reason for high school computer science is that it
+works as a kind of applied mathematics.  (Of course this is precisely what
+Logo people say about the use of Logo by younger children; I'm just
+extending that idea to older learners.)  A programming language is a formal
+system in the same way that Euclid's axioms are a formal system; the
+difference is that the programming language is executable.  Programming can
+be an area of application for ordinary school mathematics, too.  For example,
+to implement a turtle graphics system requires an understanding of analytic
+geometry and trigonometry.
+
+<P>What does this imply about the content of high school computer science?
+Since our task is to engender in students the excitement of a scientific
+enterprise, and not to prepare them for immediate employment as computer 
+programmers, I believe that the curriculum must be firmly rooted in what
+actually appeals to kids: practical programming projects.  This means that
+both the strict programming discipline of the software engineering approach
+and the formal reasoning of theoretical computer science must not be
+emphasized, if indeed they are present in the curriculum at all.  In fact,
+there really is no curriculum!  I mean that there is no particular fact or
+skill that every high school computer science student must master.  It's
+fine if each student pursues a unique direction and ends up with very
+unbalanced learning; that can be corrected later.
+
+<P>Should every student study computer science?  I don't think so.  Of course
+every student should know how to use computers!  But that's not what a
+computer science course is about, and I don't think it's what any course
+should be about.  Students should learn to use computational tools along the
+way, as they write papers in English class or collect data in physics class.
+I would go further:  I think that probably every student should learn
+something of computer programming, in math class, because writing programs
+is one good way to study mathematical ideas.  But the intense study of
+computing for its own sake is not necessary for everyone.
+
+<P>At the same time, I do think that every student should have the opportunity
+to study computer science.  In the United States right now, a combination of
+economic austerity and political reaction has substantially reduced the
+opportunities for public school students to take elective subjects of any
+kind.  Every topic is either required or not offered for lack of budget.
+That's a disaster; it means that every kid must fit a single mold.  Computer
+kids should study computer science!
+
+<P>(If we wait for kids to self-select, we'll probably end up exacerbating
+the underrepresentation of women in computer science.  I think we should
+exert ourselves to solve that problem, but I don't think that requiring
+high school computer science for everyone is part of the solution.)
+
+<H2>University Computer Science</H2>
+
+<P>At the university level, the situation is different, because we <EM>are</EM>
+training people for jobs as computer programmers or as research computer
+scientists.  Therefore, it does make sense to plan a detailed curriculum
+for those students who choose this career training.  I think it should still
+be clear that the purpose of computer science is to be able to write better
+computer programs, but theory and discipline do have a place.  The trick is
+to strike a balance, so that the student retains the sense of empowerment
+from high school, learning the necessary skills without feeling that the
+skills have taken over from the goal of solving practical problems.
+
+<P>A university computer science department may also offer courses in computer
+programming for students from other majors.  In those courses, I think the
+focus should not be so much on practical programming skill as on
+understanding what programming is like.  A physicist, for example, who needs
+a program written should probably hire a programmer.  But the purpose of the
+programming course, for the physicist, is to come away with a better sense
+of what computers can reasonably be expected to do, and what kinds of things
+the programmer needs to know about the task in order to do a good job.
+Also, of course, even for these older learners, programming can just be a
+lot of fun!  The course for non-computer-science majors should respect that
+sense of fun.
+
+<H2>Logo and Computer Science</H2>
+
+<P>Now we can talk about Logo.  I'll consider a Logo-based approach to computer
+science in contrast to three other possible approaches.  (Ten years ago, one
+of them would have been BASIC, but I think that battle has been won.  I'd
+like to say that we won it, but actually the Pascal people won it for us.
+Even today's BASIC isn't much like the one we fought against, and even the
+newer versions of BASIC aren't widely used in serious computer science.)
+
+<H2>Logo versus Pascal</H2>
+
+<P>I've written a paper about this dichotomy [Har91], so I'll just summarize it
+here.  Behind Pascal (and its descendents, such as Modula) is the idea that
+the main purpose of computer science education is to teach students to
+restrict themselves to a certain style of programming that lends itself to
+large-scale collaboration and is defensive against certain kinds of bugs.
+People who accept this idea choose restrictive languages like Pascal; they
+also use the word "should" a lot in their teaching.  Behind Logo (and other
+dialects of Lisp) is a very different idea:  Both languages and education
+should open doors, not close them.  Students should learn many powerful
+techniques, not one single technique for all problems.  The programming
+language should keep track of the boring details, so that the programmer
+can concentrate on the interesting aspects of the problem at hand.
+
+<P>At the high school level, it seems to me that our side is clearly in the
+right.  Everyone bemoans the fact that not enough young people are
+interested in science; clearly, we should take an approach that will turn
+them on, instead of off.  Also, since programming in a high-level language
+like Logo is so much easier than using a low-level language like Pascal,
+Logo lends itself to more advanced projects.  For example, the third volume
+of my _Computer Science Logo Style_ series includes a Pascal compiler
+written in Logo.  I think this program is within the grasp of a bright high
+school student.  A Logo interpreter in Pascal would be a much larger
+program, and therefore a much harder project.  Although this goes against
+the images of the two languages, I would argue that Logo is more appropriate
+for serious work, while Pascal is more appropriate to toy problems.
+
+<P>Why is this view not held more widely?  I think two things stand in the way.
+One of them is the general preference of schools for curriculum-based
+learning rather than project-based learning.  There isn't a lot of computer
+science curriculum in Logo!  (Someone should write some competition for my
+books.)  If we use Logo to teach computer science, it's not just to
+substitute one language for another in a traditional teaching environment.
+We choose Logo because we want to see student-initiated projects; our
+classrooms may look like utter chaos to the administrators.
+
+<P>The second problem is more technical.  Logo has traditionally been available
+only in slow, interpreted implementations, with weak input/output facilities.
+(Logo provides great support for certain special input/output devices, such
+as Lego blocks, but not general file handling.)  Object Logo, with a fast
+compiler and good support for windows, menus, and so on, is a big step in
+the right direction.  It's really the only Logo around in which students can
+write computationally demanding programs and expect fast results.  We need
+more such implementations, but the market isn't there; Paradigm is barely
+staying afloat.  I don't know what to do about this chicken and egg problem.
+
+<P>What about Logo versus Pascal at the university level?  Here the argument is
+harder, because many people think students who are being trained for real
+jobs must learn the languages that those jobs require.  These days that
+means C, not Pascal, but C and Pascal are more or less identical.  I think
+a case can be made for the other side:  A professional programmer should be
+able to learn any language in an hour or so, and therefore it's not
+necessary that the first language studied be the most popular one.  Instead,
+the first language should be one that lends itself to studying the large
+issues, by imposing as few low-level details as possible.  But this will be
+a very hard sell.
+
+<P>Of course there is continuing demand for Logo at the university level in
+courses intended for teacher training, and also it's not so hard to make the
+case for Logo in the programming courses for non-computer-science majors in
+general.
+
+<H2>Logo versus Visual Programming</H2>
+
+<P>A new contender among programming languages is the category of visual or
+iconic languages.  This broad category includes "programming by example"
+systems used in some application programs, immediate-mode iconic control
+systems with no real stored-program capability, and programming languages
+that include more or less elaborate visual interfaces, such as Visual Basic.
+
+<P>In a way, this new group of tools has taken over the position formerly
+occupied by BASIC.  One way to look at those old arguments is to imagine a
+continuum.  At one end, the BASIC end, is a language that's easy for a
+beginner but with absolutely no attempt at sophisticated program structure;
+at the other end, the Pascal end, is a language with a lot of formal
+structure that's impossible to use.  In this model, Logo occupies a middle
+position, trying to provide both easy access for beginners and enough
+control mechanisms to grow with the learner.  Visual programming, like the
+old BASIC, emphasizes the needs of the beginner.
+
+<P>Visual programming is a tremendously appealing idea.  These days, powerful
+personal computers can carry out complex graphics designs and animations; a
+beginner can control this power with very little investment in learning a
+new vocabulary.  The trouble is that iconic programming sweeps under the rug
+precisely the ideas that are central to computer science: control
+structures, naming, scope, data abstraction, and so on.
+
+<P>In fact this needn't be an either-or choice.  Some elements of visual
+programming have found their way into recent dialects of Logo.  For example,
+Object Logo allows for programmable menu bars and dialog windows; although
+Object Logo is not itself a visual programming language, therefore, it can
+serve as the basis for creating one.  LogoWriter on the Macintosh has
+immediate-mode controls for the turtle heading and position.  (It would be
+nice if these operations could be used in a programming-by-example mode so
+that the corresponding Logo instructions would be added to some procedure.)
+The new Microworlds version extends the visual appeal with easy access to
+parallelism.  George Mills, at the Digital Equipment Corporation, has
+embedded my Berkeley Logo interpreter in a graphical interface under
+Microsoft Windows, thereby creating a language with the flavor of Visual
+Basic but with the power of Logo inside it.
+
+<H2>Logo versus Scheme</H2>
+
+<P>More within the family, so to speak, is Scheme, the most interesting rival
+to Logo as a language for computer science.  Scheme has several advantages.
+Some of them are external to the language itself:  People take it seriously,
+because it doesn't have Logo's reputation as a language for little kids; and
+the best computer science book ever written uses Scheme [Abe85].
+
+<P>Scheme also has some advantages within the language itself.  Its fully
+parenthesized, consistently prefix syntax is more uniform and easier to
+parse.  (Logo's compromise syntax is supposed to be more comfortable for
+human beings, but in my old age I no longer believe this; I find it easier
+to read a Scheme program than to read a Logo program.  All those parentheses
+help, especially when supported by a text editor that automates the proper
+indentation.)  Scheme, unlike Logo, has true first-class procedures.  (In
+Logo, the <EM>name</EM> of a procedure can be used as an argument to something, but
+not the procedure itself.  Logo doesn't have nameless procedures.)  Very
+fast compiled versions of Scheme are available, partly because Scheme's
+lexical scope is easier for a compiler than Logo's dynamic scope (this is
+why Object Logo uses lexical scope) and partly because the people who know
+how to write good compilers are more interested in Scheme than in Logo.
+
+<P>There are two ways in which I think Logo still has an edge.  One is the word
+and sentence operations.  Instead of words, Scheme has a lower-level
+(therefore more efficiently matched to computer hardware, but harder to use)
+system with separate data types for characters, symbols, numbers, and
+strings.  It is possible to implement an extension to Scheme that closely
+approximates the Logo word approach, at some efficiency cost.  Indeed, a new
+Scheme-based text of which I am co-author does exactly this.  [Har94]
+
+<P>Logo's other advantage, but a controversial one and a mixed blessing, is
+dynamic scope.  Virtually every computer scientist would disagree with me
+about this, and would consider dynamic scope a weakness.  Here are their
+arguments:
+
+<OL>
+<LI>
+A lexically scoped language can be compiled more efficiently.
+I agree with this one, although the same could be said for many
+ways in which Lisp dialects value high-level programming over
+ease of compilation.
+<LI>
+Lexical scope is necessary to support Scheme's first-class
+procedures.  This one is also true.  On the other hand, even in
+Scheme, not every programming project requires the use of
+first-class procedures -- otherwise we wouldn't be able to do
+anything in Logo!
+<LI>
+Lexical scope prevents "name capture" bugs, in which a procedure
+written to use a global variable, for example, may unexpectedly find
+itself using some other procedure's local variable instead.  I don't
+give much weight to this argument, although it's the first one that
+most computer scientists would mention.  It's true, but it's a
+Pascal-like argument: Let's weaken the language because a stronger
+language allows the programmer to make mistakes.
+</OL>
+
+<P>And here are my arguments in favor of dynamic scope:
+
+<OL>
+<LI>
+Debugging is easier, especially for beginners.  In Logo, it's
+possible to ask for an automatic <CODE>PAUSE</CODE> in case of an error.  The
+result is that you see the error message, you get a Logo prompt,
+but the values of all relevant local variables are straightforwardly
+available for examination or modification.  In a lexically scoped
+language, the usual situation is that you have to use a special
+debugging language, different from the language in which you wrote
+your program, and you have to have a very advanced understanding of
+how the language interpreter works in order to find the information
+you need.
+<LI>
+Dynamic scope allows for first-class expressions, so a Logo
+programmer can invent new control structures like
+<CODE>WHILE</CODE> or <CODE>FOR</CODE>.
+This feature serves a purpose similar to that of first-class
+procedures in Scheme.  Scheme's approach is more general, but
+Logo's approach is probably easier for a beginning computer
+science student to understand.
+</OL>
+
+<P>My guess is that at the university level, instructors with a Logo-like
+approach to education will choose Scheme; indeed, I myself have done so
+at Berkeley.  For high school students, I think the choice is less clear.
+Neither Scheme nor Logo is widely used in secondary education.  In
+communities in which students all learn Logo in elementary school, it's
+relatively easy to use Logo for high school computer science because the
+kids already know the language.  That may be enough of an advantage to
+keep Logo alive in that market.
+
+<H2>References</H2>
+
+<P>Abelson, Harold, and Gerald Jay Sussman with Julie Sussman. <CITE>Structure and
+Interpretation of Computer Programs</CITE>, MIT Press/McGraw-Hill, 1985.
+
+<P>Harvey, Brian. "<A
+HREF="bridge.ps">Symbolic Programming vs. the A.P. Curriculum</A>," <CITE>The
+Computing Teacher</CITE>, vol. 18, no. 5, February, 1991.
+
+<P>Harvey, Brian, and Matthew Wright. <CITE><A 
+HREF="simply-toc.html">Simply Scheme: Introducing Computer
+Science</A></CITE>, MIT Press, 1994.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/grad05.html b/js/games/nluqo.github.io/~bh/grad05.html
new file mode 100644
index 0000000..1441a1e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/grad05.html
@@ -0,0 +1,138 @@
+<HTML>
+<HEAD>
+<TITLE>Speech at UCB CS Graduation, 2005</TITLE>
+</HEAD>
+<BODY>
+<H1>Speech at UCB CS Graduation, 2005</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>Congratulations -- you made it!
+
+<P>When I was younger, I, like many other kids, daydreamed about starting a rock
+and roll band, and becoming the warmup act for the Beatles on tour.  But today
+I'm in basically that situation, and I find that being the warmup act for Ivan
+Sutherland is actually kind of intimidating.  So I'll be brief.
+
+<P>In a little while, our department chair will stand here and symbolically
+introduce you, the graduating class, to the world.  "Here they are, world,
+this year's crop of new computer scientists!"  The job of the graduation
+speakers is the opposite: we're supposed to introduce the world -- "the real
+world," as we say in college -- to you.
+
+<P>Technically, it's an exciting world, full of adventure, glory, and danger,
+just like the movies.  People talk about "nano-bio-info-science," a grand
+unification of engineering disciplines.  I'm old enough to feel really
+impatient, waiting for those cholesterol-eating nano-bots they keep promising
+to send through my bloodstream soon.  But the dangers are worrying; research
+shows that at least some carbon nanoparticles are poisonous to fish.  As you
+live out your careers, I hope you'll responsibly pursue the glory without
+ignoring the danger.  All in all, though, I'm proud to present you with the
+world of technological opportunity.
+
+<P>I'm having a harder time working up the appropriate enthusiasm for the
+parts of the real world <em>outside</em> the research lab.  This world we're
+giving you is a fixer-upper, I'm afraid.
+
+<P>On March 11 there was a long article in the LA Times on the theme that college
+degrees just aren't the career guarantee they used to be.  The good news for
+you is that Berkeley computer science graduates are still in demand.  The bad
+news is that, to quote the article, "industries are transforming at a rapid
+pace as they adjust to intense competition, technological change, and other
+pressures.  That means skilled jobs can quickly become obsolete, while others
+are outsourced.  Educated workers are increasingly subject to the job
+insecurities and disruptions usually plaguing blue-collar laborers, but
+various factors make it even harder for some educated workers to get back into
+the workforce quickly.  Though a college education is still one of a worker's
+best assets, it's no guarantee that a worker's skills will match demands of a
+shifting job market."
+
+<P>Well, there are two ways to think about this: the competitive way and the
+cooperative way.  The competitive way is to think, "the article is about
+college graduates in general, not about Berkeley computer science graduates in
+particular."  You have a leg up in terms of what you already know, and we like
+to think that you're also better prepared than most to keep learning new
+skills as the world changes.  (Just as one example, we've done our best not to
+let you tie yourselves to any one programming language.)  But the cooperative
+way to think about it is to ask yourselves <em>why</em> the world has to be
+organized as a shark pool.  It wasn't always, you know; when I graduated from
+college, none of my classmates <em>worried</em> about how to protect themselves
+against possible future unemployment.
+
+<P>I also have an Associated Press article from May 13, just over a week ago,
+reporting the last day of hearings at the Kansas Board of Education as they
+prepare to modify their state's science curriculum to require the teaching
+of creationism.  "State and national science groups led by the American
+Association for the Advancement of Science boycotted the public hearings,
+saying they were rigged against evolution."  This is the board that has
+already, six years ago, removed evolution from the required biology
+curriculum; now they're taking the next step.
+
+<P>Don't just take this as a joke about the backwardness of Kansas.  They've gone
+furthest down this road, so far, but the attack on science and rationality is
+happening in many states and at the federal level.  The federal ban on stem
+cell research is one current way in which this religious intolerance affects
+that action-movie nano-bio-info future I promised you.
+
+<P>And don't get me started about the state of civil liberties in the United
+States today.  When I was your age, we '60s radicals, who'd grown up secure in
+the protection of the Bill of Rights, often expressed contempt for what we
+called liberal values -- in those days, that phrase was an attack from the
+left, not from the right.  I said I'd be brief today, so I won't drag you
+through the complete list of all the things you already know about secret
+"disappearances," torture, so-called "renditions" of prisoners by CIA agents
+to countries that practice torture openly, FBI infiltration of pacifist
+antiwar groups, and so on.  The news reports from this country today are like
+the ones we found incomprehensible from places like Chile 40 years ago.
+
+<P>You're going to find yourselves in the thick of this problem in your careers.
+The modern surveillance state depends critically on the technology we invent,
+things like database mining, speech recognition, the "smart dust" project here
+at Berkeley.  Your Cal student ID, the one that lets you into Soda Hall at
+night without even leaving your wallet, uses a technology called RFID -- radio
+frequency identification -- that allows anyone near you to read your
+identifying information invisibly.  The US government now plans to put RFID
+tags in passports, so that Americans traveling abroad can be picked out easily
+in the crowd by terrorists or identity thieves.
+
+<P>And then there's global warming.
+
+<P>So, we're leaving you a world sadly in need of repair.  As usual, it's up to
+the young to fix the mistakes of their elders.  What can you do about it?
+
+<P>First, of course, work responsibly.  These days one of the trendiest places to
+work is Google.  They've become a verb, the ultimate mark of success for a
+company, by providing a tremendous service, connecting people with
+information.  They're also a huge privacy menace, collecting information
+dossiers on all of us that are meant for the relatively benign purpose of
+advertising, but will also, I'm betting, turn out to have worse implications
+in our rapidly developing police state.  Make sure you do work that you can be
+unambiguously proud about.
+
+<P>Second, don't buy into the hyper-competitive ideology of our time.  Don't take
+it as obvious, for example, that your retirement or your health care should
+depend on your skills in the stock market.  Don't think that to be a patriot
+you have to be contemptuous of the rest of the world.  Don't think that
+terrorism is okay if it's US soldiers, or American-trained foreign allies,
+doing it.  Don't think that extremist Islam is any worse than extremist
+Christianity.
+
+<P>Perhaps you can use your professional skills to help -- help in a
+deliberate way, I mean, <em>not</em> just rely on the idea that all technical
+progress will eventually become social progress.  For example, four years ago
+some people I know started an organization called Privaterra.  What they do is
+bring privacy technologies such as encryption to groups working for human
+rights in countries where privacy may be a life-or-death need.
+
+<P>And finally, do some small thing to improve the world right around you.  I've
+been volunteering at a Berkeley elementary school.  It's fun because the kids
+are cute and friendly and innocent, but it's frustrating because all that
+structure of grades and tests makes it hard to learn and hard to teach.  But
+just this past Thursday I finally got one particular fourth-grade kid to
+multiply two-digit numbers successfully, and I'm still feeling the glow from
+that.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/hacker.html b/js/games/nluqo.github.io/~bh/hacker.html
new file mode 100644
index 0000000..0bc724d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/hacker.html
@@ -0,0 +1,182 @@
+<HTML>
+<HEAD>
+<TITLE>What is a Hacker?</TITLE>
+</HEAD>
+<BODY>
+<H1>What is a Hacker?</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>In one sense it's silly to argue about the ``true'' meaning of a word.  A
+word means whatever people use it to mean.  I am not the Academie
+Fran&ccedil;aise; I can't force <CITE>Newsweek</CITE> to use the word ``hacker''
+according to my official definition.
+
+<P>Still, understanding the etymological history of the word ``hacker''
+may help in understanding the current social situation.
+
+<P>The concept of hacking entered the computer culture at the Massachusetts
+Institute of Technology in the 1960s.  Popular opinion at MIT posited
+that there are two kinds of students, tools and hackers.  A ``tool''
+is someone who attends class regularly, is always to be found in the
+library when no class is meeting, and gets straight As.  A ``hacker''
+is the opposite: someone who never goes to class, who in fact sleeps
+all day, and who spends the night pursuing recreational activities
+rather than studying.  There was thought to be no middle ground.
+
+<P>What does this have to do with computers?  Originally, nothing.
+But there are standards for success as a hacker, just as grades form
+a standard for success as a tool.  The true hacker can't just sit
+around all night; he must pursue some hobby with dedication and flair.
+It can be telephones, or railroads (model, real, or both), or science
+fiction fandom, or ham radio, or broadcast radio.  It can be more
+than one of these.  Or it can be computers.  [In 1986, the word
+``hacker'' is generally used among MIT students to refer not to
+computer hackers but to building hackers, people who explore roofs and
+tunnels where they're not supposed to be.]
+
+<P>A ``computer hacker,'' then, is someone who lives and breathes
+computers, who knows all about computers, who can get a computer to
+do anything.  Equally important, though, is the hacker's attitude.
+Computer programming must be a <EM>hobby</EM>, something done for fun, not
+out of a sense of duty or for the money.  (It's okay to make money,
+but that can't be the reason for hacking.)
+
+<P>A hacker is an aesthete.
+
+<P>There are specialties within computer hacking.  An algorithm
+hacker knows all about the best algorithm for any problem.  A system
+hacker knows about designing and maintaining operating systems.  And
+a ``password hacker'' knows how to find out someone else's password.
+That's what <CITE>Newsweek</CITE> should be calling them.
+
+<P>Someone who sets out to crack the security of a system for financial gain is
+not a hacker at all.  It's not that a hacker can't be a thief, but a hacker
+can't be a <EM>professional</EM> thief.  A hacker must be fundamentally an
+amateur, even though hackers can get paid for their expertise.  A password
+hacker whose primary interest is in learning how the system works doesn't
+therefore necessarily refrain from stealing information or services, but
+someone whose primary interest is in stealing isn't a hacker.  It's a matter
+of emphasis.
+
+<H2>Ethics and Aesthetics</H2>
+
+<P>Throughout most of the history of the human race, right and wrong were
+relatively easy concepts.  Each person was born into a particular social
+role, in a particular society, and what to do in any situation was part of
+the traditional meaning of the role.  This social destiny was backed up by
+the authority of church or state.
+
+<P>This simple view of ethics was destroyed about 200 years ago,
+most notably by Immanuel Kant (1724-1804).  Kant is in many ways the
+inventor of the 20th Century.  He rejected the ethical force of tradition,
+and created the modern idea of autonomy.  Along with this radical
+idea, he introduced the centrality of rational thought as both the
+glory and the obligation of human beings.  There is a paradox in Kant:
+Each person makes free, autonomous choices, unfettered by outside
+authority, and yet each person is compelled by the demands of rationality
+to accept Kant's ethical principle, the Categorical Imperative.  This
+principle is based on the idea that what is ethical for an individual
+must be generalizable to everyone.
+
+<P>Modern cognitive psychology is based on Kant's ideas.  Central
+to the functioning of the mind, most people now believe, is information
+processing and rational argument.  Even emotions, for many psychologists,
+are a kind of theorem based on reasoning from data.  Kohlberg's theory
+of moral development interprets
+moral weakness as cognitive weakness, the inability to understand
+sophisticated moral reasoning, rather than as a failure of will. 
+Disputed questions of ethics, like abortion, are debated as if they
+were questions of fact, subject to rational proof.
+
+<P>Since Kant, many philosophers have refined his work, and many
+others have disagreed with it.  For our purpose, understanding what
+a hacker is, we must consider one of the latter, S&ouml;ren Kierkegaard
+(1813-1855).  A Christian who hated the established churches, Kierkegaard
+accepted Kant's radical idea of personal autonomy.  But he rejected
+Kant's conclusion that a rational person is necessarily compelled
+to follow ethical principles.  In the book <CITE>Either-Or</CITE> he presents a
+dialogue between two people.  One of them accepts Kant's ethical point
+of view.  The other takes an aesthetic point of view: what's important
+in life is immediate experience.
+
+<BLOCKQUOTE>
+<P>The choice between the ethical and the aesthetic
+is not the choice between good and evil, it is the choice
+whether or not to choose in terms of good and evil.  At the
+heart of the aesthetic way of life, as Kierkegaard characterises
+it, is the attempt to lose the self in the immediacy of present
+experience.  The paradigm of aesthetic expression is the romantic
+lover who is immersed in his own passion.  By contrast the
+paradigm of the ethical is marriage, a state of commitment
+and obligation through time, in which the present is bound
+by the past and to the future.  Each of the two ways of life
+is informed by different concepts, incompatible attitudes,
+rival premises.  [MacIntyre, p. 39]
+</BLOCKQUOTE>
+
+<P>Kierkegaard's point is that no rational argument can convince us to
+follow the ethical path.  That decision is a radically free choice.
+He is not, himself, neutral about it; he wants us to choose the ethical.
+But he wants us to understand that we do have a real choice to make.
+The basis of his own choice, of course, was Christian faith.  That's
+why he sees a need for religious conviction even in the post-Kantian
+world.  But the ethical choice can also be based on a secular humanist
+faith.
+
+<P>A lesson on the history of philosophy may seem out of place in
+a position paper by a computer scientist about a pragmatic problem.
+But Kierkegaard, who lived a century before the electronic computer,
+gave us the most profound understanding of what a hacker is.  A hacker
+is an aesthete.
+
+<P>The life of a true hacker is episodic, rather than planned. 
+Hackers create ``hacks.''  A hack can be anything from a practical joke
+to a brilliant new computer program.  (VisiCalc was a great hack.
+Its imitators are not hacks.)  But whatever it is, a good hack must
+be aesthetically perfect.  If it's a joke, it must be a complete one.
+If you decide to turn someone's dorm room upside-down, it's not enough
+to epoxy the furniture to the ceiling.  You must also epoxy the pieces
+of paper to the desk.
+
+<P>Steven Levy, in the book <CITE>Hackers</CITE>, talks at length about what
+he calls the ``hacker ethic.''  This phrase is very misleading.  What
+he has discovered is the Hacker Aesthetic, the standards for art criticism
+of hacks.  For example, when Richard Stallman says that information
+should be given out freely, his opinion is not based on a notion of
+property as theft, which (right or wrong) would be an ethical position.
+His argument is that keeping information secret is <EM>inefficient</EM>; it
+leads to unaesthetic duplication of effort.
+
+<P>The original hackers at MIT-AI were mostly undergraduates, in
+their late teens or early twenties.  The aesthetic viewpoint is quite
+appropriate to people of that age.  An epic tale of passionate love
+between 20-year-olds can be very moving.  A tale of passionate love
+between 40-year-olds is more likely to be comic.  To embrace the aesthetic
+life is <EM>not</EM> to embrace evil; hackers need not be enemies of society. 
+They are young and immature, and should be protected for their own
+sake as well as ours.
+
+<P>In practical terms, the problem of providing moral education to hackers is
+the same as the problem of moral education in general.  Real people are not
+wholly ethical or wholly aesthetic; they shift from one viewpoint to
+another.  (They may not recognize the shifts.  That's why Levy says
+``ethic'' when talking about an aesthetic.)  Some tasks in moral education
+are to raise the self-awareness of the young, to encourage their developing
+ethical viewpoint, and to point out gently and lovingly the situations in
+which their aesthetic impulses work against their ethical standards.
+
+
+<H2>Reference</H2>
+
+<P>MacIntyre, Alasdair.  <CITE>After Virtue</CITE>.  Notre Dame, Indiana:
+University of Notre Dame Press, 1981.
+
+<P>Note: This is an appendix to
+"<A HREF="hackers.html">Computer Hacking and Ethics</A>," a position
+paper I wrote for the ACM Select Panel on Hacking in 1985.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/hackers.html b/js/games/nluqo.github.io/~bh/hackers.html
new file mode 100644
index 0000000..a2348fd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/hackers.html
@@ -0,0 +1,417 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Hacking and Ethics</TITLE>
+</HEAD>
+<BODY>
+<H1>Computer Hacking and Ethics</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>[A slightly different version of this paper was written for the
+``Panel on Hacking'' held by the Association for Computing Machinery in
+April, 1985.  Thanks to Batya Friedman, Donn Parker, and Carter Sanders for
+their comments on early drafts.]
+
+<BLOCKQUOTE>
+<P>[Neal Patrick] said he and his friends, who named
+themselves the ``414s'' after the Milwaukee area code, did not
+intend to do any damage and did not realize they were doing
+anything unethical or illegal.  In fact, when asked [at a
+Congressional subcommittee hearing] at what point he questioned
+the ethics of his actions, he answered, ``Once the FBI knocked
+on the door.''
+
+<P>-- "`Common Sense' Urged on Computer Break-Ins,"
+26 Sept 83; Copyright 1983 New York Times News Service
+</BLOCKQUOTE>
+
+
+<P>It's no secret that a mature sense of ethics is something a person
+develops over time.  Parents are supposed to exercise authority over their
+children because the children are not expected to know how to make certain
+decisions for themselves.  We have a juvenile court system separate from the
+adult criminal court system because we believe that a young person is not
+<EM>capable</EM> of criminal intent in the same sense that an adult is
+capable of it.
+
+<P>Within this century, the obvious idea that the ethical sense
+of an adolescent isn't the same as that of an adult has become the
+focus of scientific research.  Psychologists have entered a field
+once left to philosophers: moral development.  The best-known attempt
+to formalize this development is probably the six-stage theory of
+Harvard psychologist Lawrence Kohlberg.  Here is his description of
+Stage 3, the Interpersonal Concordance or ``Good Boy-Nice Girl'' Orientation:
+
+<BLOCKQUOTE>
+<P>Good behavior is that which pleases or helps
+others and is approved by them.  There is much conformity
+to stereotypical images of what is majority or ``natural'' behavior.
+Behavior is frequently judged by intention--the judgment ``he
+means well'' becomes important for the first time.  One earns
+approval by being ``nice.'' [Kohlberg, p. 18]
+</BLOCKQUOTE>
+
+<P>Is Neal Patrick at this third stage of moral development?  He seems
+to judge his own actions in terms of intention.  From the perspective
+of the stage theory, we can see this as an improvement over ``Our mistake
+was to get caught'' or ``What have those computer companies done for
+me,'' responses that would be typical of the earlier stages.
+
+<P>I don't mean to give too much weight to the specifics of the third stage.
+It's not scientifically valid to assign Patrick to a developmental stage on
+the basis of one quoted sentence.  Also, not every researcher accepts
+Kohlberg's stages.  But the important point is that Patrick is
+<EM>roughly</EM> at the stage of moral development appropriate to his age.  He is
+not some new kind of monster spawned by computer technology; he's a kid with
+all the strengths and weaknesses we expect from kids in other situations.
+
+<P>Compare a bunch of adolescents breaking into a computer system
+with another bunch of kids hot-wiring a car for a joyride.  The latter
+would probably argue, with complete sincerity, that they were doing
+no harm, because the owner of the car recovered his property afterward.
+They didn't keep or sell it.  It's a ``naughty'' prank to borrow someone's
+property in that way, but not really serious.
+
+<P>These hypothetical car thieves would be wrong, of course, in
+making that argument.  They might lack the sensitivity needed to give
+weight to the victim's feelings of manipulation, of fear, of anger.
+They may not understand how the experience of such a random attack
+can leave a person feeling a profound loss of order and safety in
+the world--the feeling that leads half our population to hail Bernhard
+Goetz as a hero to be emulated.  Some adolescents don't have the empathy
+to see beyond the issue of loss of property.  Some may show empathy
+in certain situations but not in others.
+
+<P>The point is that the computer raises no new issue, ethical or
+pragmatic.  The password hacker who says ``we aren't hurting anything
+by looking around'' is exactly analogous to the joyrider saying ``we
+aren't stealing the car permanently.''
+
+<P>(The two cases need not seem analogous to an adolescent.  There
+may be many computer abusers who would never break into a car for
+a joyride, but who don't understand that breaking into a computer
+account raises the same ethical issues.  But the analogy still holds
+for us as adults.)
+
+<P>The professional car thief and the teenaged joyrider are both social
+problems, but they're <EM>different</EM> problems.  To confuse the two--to
+treat the teenager like a career criminal--would be a disastrously
+self-fulfilling prophecy.
+
+<P>In the context of computer systems, there is a similar dichotomy.  There are
+some career criminals who steal by electronic means.  This small group poses
+a large problem for society, but it's not a new one.  Thieves are thieves.
+Just as banks use special armored cars, they must also develop special
+armored computer systems.  But the rest of us don't use armored cars for
+routine transportation, and we don't need armored computer systems for
+routine communication either.  (Of course there is a large middle ground
+between heavy security and no security at all.  My purpose here is not to
+decide exactly what security measures are appropriate for any particular
+computer system.  Instead, I just want to make it clear that, while in this
+paper I'm not trying to address the problem of professional criminals, I'm
+not trying to deny that there is such a problem either.)
+
+<P>There is also a middle ground between the young person who happens to break
+unimportant rules in the innocent exercise of intellectual curiosity and the
+hardened criminal.  Consider the hypothetical case of a young man whose
+girlfriend moves to Australia for a year, and so he builds himself a blue
+box (a device used to place long distance telephone calls without paying for
+them) and uses it to chat with her for an hour every other day.  This is not
+intellectual curiosity, nor is it a deliberate, long-term choice of a life
+of crime.  Instead, this hypothetical adolescent, probably normally honest,
+has stepped over a line without really noticing it, because his mind is
+focused on something else.  It would be inappropriate, I think, to pat him
+on the head and tell him how clever he is, and equally inappropriate to
+throw him in prison.  What we must do is call his attention to the
+inconsistency between his activities and, most likely, his own moral
+standards.
+
+<H2>Two Models for Moral Direction</H2>
+
+<P>What to do about it?  Saying that the problems of computer ethics
+are like other ethical problems doesn't solve them.  Many approaches
+are possible.  We are starting to hear among computer experts the
+same debates we've heard for centuries among criminologists: prevention,
+deterrence, retribution, cure?
+
+<P>Among all the possible approaches, it may be instructive to consider
+two strongly opposed ones: first, control of the technology, and second,
+moral training.  As examples of these approaches, compare the registration
+of automobiles with instruction in karate.
+
+<P>Automobile registration is certainly a good idea in helping the
+police control professional crime.  As thieves have learned to steal
+cars for their parts, rather than to sell whole, the technology of
+registration has had to grow more sophisticated: we now see serial
+numbers on each major component, not just on the door frame.  But
+registration doesn't help against joyriders.
+
+<P>Other technological security measures can help.  Steering column
+locks have made joyriding harder, but not impossible.  Many adolescents
+are expert locksmiths, not because they're dishonest but because locks
+and keys pose a technical challenge much like that of passwords in
+a computer system.  Also, increased security has made the consequences
+of juvenile car theft more serious, because the easiest way to defeat
+a steering column lock is to destroy it by brute force.
+
+<P>The example of karate instruction shows a very different approach
+to the problem of adolescent moral limitations.  Instead of using
+technology to limit the power of young people, this second approach
+deliberately empowers them.  Skill in karate is a deadly weapon; to
+give that weapon to a young person is an affirmation of trust rather
+than suspicion.
+
+<P>Why do karate classes for kids work?  Why don't they lead to
+an epidemic of juvenile murders?  This paper can't present a definitive
+answer.  But I want to suggest some possibilities and use them to draw
+analogies for computer education.
+
+<P>One probable reason is that every person responds to his or her
+situation.  If I know you're trusting me with something important,
+I'll try to live up to your trust.  If I sense that you consider me
+untrustworthy, I may decide that I might as well live up to your low
+expectations.
+
+<P>Another vital reason, though, is that the technical instruction
+in karate techniques is part of a larger initiation into a certain
+culture and its rules.  Karate schools don't begin by telling novices,
+``Here's how to kill someone.'' They begin with simple, less dangerous
+techniques; the criteria for advancement include <EM>control</EM> and
+self-discipline as well as knowledge of particular moves.  Instructors
+emphasize that karate is an art that should not be abused.  Students learn
+to demonstrate punches and kicks without injury by stopping just short of
+contact with the opponent's body.
+
+<H2>Empowerment in Computer Education</H2>
+
+<P>How can we <EM>teach</EM> young computer enthusiasts to be responsible
+members of the electronic community, without defining them as criminals?
+The analogy of karate instruction suggests that the answer is to combine
+ethical training with real empowerment.  To turn this broad slogan
+into a practical program requires several changes in our approach
+to educational computing and to computing in general.
+
+<BLOCKQUOTE>
+<P>Growth, like any ongoing function, requires adequate
+objects in the environment to meet the needs and capacities
+of the growing child, boy, youth, and young man, until he
+can better choose and make his own environment.  It is not
+a ``psychological'' question of poor influences and bad attitudes,
+but an objective question of real opportunities for worthwhile
+experience....  Thwarted, or starved, in the important objects
+proper to young capacities, the boys and young men naturally
+find or invent deviant objects for themselves; this is the
+beautiful shaping power of our human nature.  Their choices
+and inventions are rarely charming, usually stupid, and often
+disastrous; we cannot expect average kids to deviate with
+genius. [Goodman, pp. 12-13]
+</BLOCKQUOTE>
+
+<P>Paul Goodman was discussing traditional juvenile delinquents, not
+password hackers.  But the problem is fundamentally the same.  How
+can we provide a worthwhile culture for young computer enthusiasts
+to grow into?
+
+<P><STRONG>1.  Serious adult models.</STRONG>  In karate instruction, discipline
+is not only for novices.  The adult instructors follow the same discipline
+themselves.  The ethical principles taught to beginners are taken
+seriously in the adult community.  As a result, young students don't
+see the discipline of karate as an arbitrary imposition on them; they
+see it as part of what it means to be a full member of the community.
+
+<P>In the computer culture, adults rarely take seriously the idea of belonging
+to a community.  The social ideal is the self-serving entrepreneur.  Our
+heros are the ones who become millionaires by doing a slick marketing job on
+yet another spreadsheet program.  (When my high school programming students
+discovered that I actually knew how to program a computer, many of them
+decided I was crazy.  Why should anyone want to teach when he could make
+more money programming?)  In this context, why should any young person
+listen to our moral lecturing?
+
+<P>Fundamentally what is needed is personal action by each individual
+computer professional.  But we can act as a society to
+encourage this individual commitment.  We can urge our colleagues
+to devote part of their time to <EM>pro bono publico</EM> activities, like
+other professionals.  We can give special public recognition to computer
+professionals who choose a life of disinterested public service over
+the quest for personal gain.  Some corporations allow their employees
+paid sabbatical leave for public service work; we should encourage
+this policy.
+
+<P><STRONG>2.  Access to real power.</STRONG>  Another important part of the karate
+analogy is that there are not two kinds of karate, one for adults
+and one for kids.  What beginners learn may be elementary, but it's
+a start down the same road traveled by experts.  The community into
+which young karate students are welcomed is the real, adult community.
+That's not how things work with computers.  How many adult computer
+scientists put up with CP/M, BASIC, and floppy disks?  The technology
+available to most young people is not a simpler version of what experts
+use; it's a completely separate, more arcane, fundamentally less powerful
+medium.  That medium--the programming languages, the file storage,
+the editing tools, and so on--is simply inadequate to challenging
+intellectual work.
+
+<P>The community of computer professionals has come to take for
+granted easy access to electronic communication with colleagues anywhere
+in the world.  Those of us lucky enough to be on the Arpanet have
+instantaneous communication supported by taxpayers.  Even the less
+fortunate who communicate over dialup networks like uucp, though,
+have the cost of their mail supported by computing facilities other
+than their own; the general agreement among even competing private
+businesses to forward one another's mail is a remarkable example of
+disinterested cooperation.  Some of this mail traffic is serious business.
+But some of it is also ``junk mail'' like sf-lovers (for science fiction
+enthusiasts) and human-nets.  Is it surprising that young computer
+enthusiasts want a slice of the pie too?
+
+<P>Adolescents are excluded not only from access to equipment but
+also from access to ideas.  The password hackers' preoccupation with
+magic words and magic numbers is harmful to <EM>themselves</EM> as well as
+to the rest of us; it's an intellectual dead end that gives them no
+real insight into computer science.  They learn a bag of isolated
+tricks rather than powerful ideas that extend to solving other kinds
+of problems.  Instead of just telling them what's forbidden, we would
+do better to show them the path to our own understanding of algorithms,
+formal theory of computation, and so on.  We all know you can't program
+well in BASIC; why do we allow manufacturers to inflict it on children?
+
+<P>To take positive steps toward this goal requires action on two fronts,
+access to technology and access to ideas.  The latter requires training high
+school teachers who are themselves qualified computer programmers.  In the
+long run, this means paying teachers salaries competitive with industry
+standards.  That's a matter for government action.  Another approach may be
+to promote active cooperation between university computer science
+departments and high schools.  Perhaps college faculty and graduate students
+could contribute some of their time to the local high schools.  (This is not
+a new idea; outside experts are donating time to secondary schools to help
+teach other areas of science.  Such partnership brings its own problems,
+because both the goals and the techniques of college teaching are different
+from those of high school teaching.  Still, this collaboration has sometimes
+been fruitful.)
+
+<P>The problem of access to equipment is economically more difficult,
+but it's getting easier.  The availability of 32-bit microprocessors
+means that serious computational power should be affordable in the
+near future.  Equipment manufacturers should
+take the high school market seriously, as an investment in future
+technical workers.  Another approach is for interested educators to
+establish regional computing centers for adolescents, not part of
+a particular school, where kids can come on their own time.  Economies
+of scale may allow such centers to provide state-of-the-art equipment
+that a single high school couldn't justify economically.
+
+<P><STRONG>3.  Apprenticeship: challenging problems and access to expertise.</STRONG>
+The karate student is given not only access to a body of knowledge,
+but also the personal attention of a master in the field.  The instructor
+is responsible for the moral development of his students as well as
+their technical skill.  He steers them in the direction of challenges
+appropriate to each one's progress, and his own expertise is available
+to help the learner.
+
+<P>For many years, the MIT Artificial Intelligence Laboratory ran a computer
+system with no passwords and no file protection at all.  (It was pressure
+from their Defense Department funding agency, not internal needs, that
+forced them to implement a password scheme.)  Even now, the laboratory has a
+liberal ``tourist'' policy: anyone can have an account, provided that
+someone at the laboratory is willing to be his or her mentor.  The
+philosophy behind this policy is that most ``malicious'' computer abuse is
+the result of ignorance, misunderstanding, and thoughtlessness, rather than
+truly malign intent.  With a particular person responsible for each new
+user, tourists learn to share the values of the community.  They are taught
+that the vulnerability of MIT's system is a price researchers pay willingly
+for the open exchange of information that that vulnerability allows.
+Treated as legitimate members of the community, even young tourists quickly
+learn to act responsibly toward the group.
+
+<P>Not every computer facility can be expected to share the vision
+of MIT-AI.  Certainly the computers that control the missiles and
+the banking transactions should not be so open to visitors.  But a
+typical large company has several computers, not all equally sensitive.
+Many could allow access to young people in their communities in the
+evenings, especially if some of their professional staff members are
+interested in serving as volunteer mentors.  It's the mentor/apprentice
+relationship that makes all the difference.  Just giving a kid an
+account on your machine may be asking for trouble, but making a friend
+of the kid is a good investment.
+
+<P>In particular, universities often treat their undergraduate student users
+like irresponsible children.  Undergraduates are generally second-class
+citizens, with limited access to the school's computing resources, including
+human resources (faculty).  Universities should allow undergraduates to
+function as true members of serious research teams, as graduate students
+do.  This policy would provide both access to faculty mentors and
+challenging, useful tasks.
+
+<P>For secondary schools, the issue is partly one of curriculum.  Too many
+teenagers are taught (not only in the schools but also in the magazines)
+that true computer expertise means knowing what number to <CODE>POKE</CODE>
+into what address in order to change the color of the screen on some brand
+of microcomputer.  Such learning is not intellectually challenging.  It does
+not lead to a feeling of fruitful apprenticeship.
+
+<P><STRONG>4.  A safe arena for moral experimentation.</STRONG> The
+beginning karate student might be afraid to try his or her skill with a
+fellow student, lest he or she injure or be injured.  But it's safe to fight
+a match with a black belt instructor.  ``I won't hurt you,'' says the
+instructor, ``and I won't let you hurt me.'' To allow for safe sparring
+between students, classes begin with half-speed motions and no body contact
+allowed.  Later they may progress to rules that allow light body contact but
+no contact to the opponent's head.  These rules allow students to feel safe
+as they experiment and develop their skills.
+
+<P>Young people have a similar need for safety in moral experimentation.
+One of the reasons for the appeal of role-playing games like Dungeons
+and Dragons is that a player can say ``I'm going to be a thief,'' or
+``I'm going to be evil,'' trying on these roles without actually harming
+anyone.  Similarly, a good school should be a place where students
+feel safe, a kind of ``ethics laboratory.''
+
+<P>Neal Patrick's first exposure to an ethical dilemma should not
+have involved the FBI.  He should have confronted the issue of information
+privacy while using a computer system in his school.  He could have
+learned how his antisocial acts hurt and angered the legitimate users
+of the system, without risking really serious trouble for himself
+or for anyone else.  For one thing, it's hard for a young person to
+understand the chain of reasoning from the abstract corporate owner
+of a computer system to the actual human beings whose lives are affected
+when that system breaks down.  It's easier to understand the issues
+when the users are one's friends and classmates, and the social effects
+of malicious password hacking are immediately apparent.
+
+<P>(None of this is meant to excuse Patrick or the other 414s. 
+Neither ignorance of the law nor misunderstanding the ethical issues
+is accepted in our culture as an excuse for lawbreaking.  But I am not
+writing for a court of law meeting to settle Patrick's guilt or innocence.
+The question for us is how, as a society, we can act to make the next
+generation of teenagers less likely to paint themselves into this
+particular corner.)
+
+<P>As a practical matter, what's needed to build an ethics laboratory
+for computing students has already been recommended in another context:
+adequate computing power to support a user community, as opposed to
+a bunch of isolated, independent microcomputer users.  Whether this
+means timesharing or a network of personal computers with a shared
+file server is a technical question beyond the scope of this paper.
+But sharing is essential.  The ethical issues of a living community
+don't arise in the context of isolated individuals using microcomputers
+separately with no communication among them.  (If we do not fill this need,
+we leave a void that in practice is filled by ``pirate'' bulletin boards
+that build a sort of outlaw community around illegal computing activities.)
+
+<H2>Appendix A: <A HREF="hacker.html">What is a Hacker?</A></H2>
+
+<H2>Appendix B: <A HREF="lsrhs.html">A Case Study</A></H2>
+
+<H2>References</H2>
+
+<P>Goodman, Paul.  <CITE>Growing Up Absurd</CITE>.  New York: Random House, 1960.
+
+<P>Kohlberg, Lawrence.  <CITE>Essays on Moral Development, volume 1: The
+Philosophy of Moral Development<CITE>.  New York: Harper &amp; Row, 1981.
+
+
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/heath.html b/js/games/nluqo.github.io/~bh/heath.html
new file mode 100644
index 0000000..accaa0c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/heath.html
@@ -0,0 +1,42 @@
+<HTML>
+<HEAD>
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<TITLE>Heath</TITLE>
+</HEAD>
+<BODY>
+
+<p>December, 2015 <img src="heath/Heath2016.JPG">
+
+<!-- <P>California, November 2010 <IMG SRC="heath/red-heath.jpg"> -->
+
+<!-- <P>California, December 2011 <IMG SRC="smallHeath.jpg"> -->
+
+<!-- <P>California, July 2008 <IMG SRC="heath/heath08.jpg"> -->
+
+<!-- <P>California, July 2007 <IMG SRC="heath/Heath-Sauls.jpg"> -->
+
+<!-- <P>Maine, December 2004 <IMG SRC="heath/cropped-heath.jpg"> -->
+
+<!-- <P>California, March 2003 <IMG SRC="heath/mar03.jpg"> -->
+
+<!-- <P>California, March 2003 <IMG SRC="heath/mar03-close.jpg"> -->
+
+<!-- <P>California, March 2003 <IMG SRC="heath/mar03-car.jpg"> -->
+
+<!-- <P>California, August 2002 <IMG SRC="heath/heath02.jpg"> -->
+
+<!-- <P>California, September 2001 <IMG SRC="heath/heath901.jpg"> -->
+
+<!-- <P>California, September 2000 <IMG SRC="heath/heath6.jpg"> -->
+
+<!-- <P>Brussels, Jan 2000 <IMG SRC="heath/heath1.jpg"> -->
+
+<!-- <P>Maine, July 1999 <IMG SRC="heath/heath.jpg"> -->
+
+<!-- <P>Maine, August 2000 <IMG SRC="heath/heath3.jpg"> -->
+
+<!-- <P>California, October, 2000 <IMG SRC="heath/heath5.jpg"> -->
+
+<!-- <P>California, spring 2001 <IMG SRC="heath/ht.jpg"> -->
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/heath/Heath2016.JPG b/js/games/nluqo.github.io/~bh/heath/Heath2016.JPG
new file mode 100644
index 0000000..a14af79
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/heath/Heath2016.JPG
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ifsnecc.ps b/js/games/nluqo.github.io/~bh/ifsnecc.ps
new file mode 100644
index 0000000..a772759
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ifsnecc.ps
@@ -0,0 +1,1408 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
+%%Title: ifsnecc.dvi
+%%Pages: 15 1
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%%BeginProcSet: tex.pro
+/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
+load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
+isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
+round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
+N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
+/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
+/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
+/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
+/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
+array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
+B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
+setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
+length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
+ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
+/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
+N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
+dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
+ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
+ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
+imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
+put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
+div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
+known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
+showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
+array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
+/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
+/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
+7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
+TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
+-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
+moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
+S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
+/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
+}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
+a}B /bos{/SS save N}B /eos{clear SS restore}B end
+%%EndProcSet
+TeXDict begin 1095 300 300 @start /Fa 2 56 df<00000004000000000200000000020000
+00000100000000008000000000400000000020FFFFFFFFFCFFFFFFFFFC00000000200000000040
+0000000080000000010000000002000000000200000000040026107D922D>33
+D<C0C0C0C0C0C0C0E0E0C0C0C0C0C0C0C003107D9200>55 D E /Fb 2 104
+df<001E0033007700760070007000E000E00FFE00E000E001C001C001C001C001C001C0038003
+80038003800380070007006600E600CC007800101C7D9512>102 D<01F3030F060F0C071C0E38
+0E380E380E301C301C301C383C18780FB8003800386070E070C1E07F8010147E8D12>I
+E /Fc 1 51 df<1F0021C040E080E0C070E070407000F000E000E001C001800300060004000810
+101020303FE07FE0FFE00C157E9412>50 D E /Fd 7 122 df<00FFFFE000000F007800000F00
+1C00000F000E00000F000700001E000700001E000380001E000380001E000380003C000380003C
+000380003C000380003C000380007800078000780007800078000780007800078000F0000F0000
+F0000F0000F0000E0000F0001E0001E0001C0001E0003C0001E000380001E000700003C000E000
+03C001C00003C003800003C007000007803C0000FFFFF00000211F7E9E26>68
+D<00FFFFFF000F000E000F0006000F0002000F0002001E0002001E0002001E0002001E0002003C
+0004003C0400003C0400003C04000078080000781800007FF8000078180000F0100000F0100000
+F0100000F0100001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000
+07C00000FFFE0000201F7E9E1D>70 D<00FF803FF0000F800780000F800200000BC00200000BC0
+02000013C004000011E004000011E004000011E004000020F008000020F008000020F808000020
+780800004078100000403C100000403C100000403C100000801E200000801E200000801E200000
+800F200001000F400001000F4000010007C000010007C000020007800002000380000200038000
+06000380000F00010000FFE0010000241F7E9E25>78 D<00007C0000CE00019E00039E00030C00
+0700000700000700000700000E00000E00000E0000FFF0000E00000E00001C00001C00001C0000
+1C00001C0000380000380000380000380000380000700000700000700000700000700000E00000
+E00000E00000E00000C00001C000318000798000F300006200003C000017297E9F16>102
+D<001E3000713800E0F001C0700380700780700700E00F00E00F00E00F00E01E01C01E01C01E01
+C01E01C01E03801E03800E07800E0B8006170001E700000700000700000E00000E00300E00781C
+00F038006070003FC000151D809316>I<03C1C00C62201034701038F02038F020386040700000
+700000700000700000E00000E00000E00000E02061C040F1C040F1C080E2C080446300383C0014
+147E931A>120 D<0F00601180702180E021C0E041C0E04380E08381C00701C00701C00701C00E
+03800E03800E03800E03800E07000C07000C07000E0F00061E0003EE00000E00000E00001C0078
+180078380070700060600021C0001F0000141D7E9316>I E /Fe 36 94
+df<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D0E7B9C18>34
+D<007000F001E003C007800F001E001C00380038007000700070007000E000E000E000E000E000
+E000E000E0007000700070007000380038001C001E000F00078003C001F000F000700C24799F18
+>40 D<6000F00078003C001E000F000780038001C001C000E000E000E000E00070007000700070
+007000700070007000E000E000E000E001C001C0038007800F001E003C007800F00060000C247C
+9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000
+E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F
+000FFE0007FC0001F000131C7E9B18>48 D<01800380038007800F803F80FF80FB804380038003
+80038003800380038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B
+18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C0
+0001C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E0
+7FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001
+C00003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0F000
+E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F00003F0000770000
+770000E70001E70001C7000387000787000707000E07001E07003C0700380700780700F00700FF
+FFF8FFFFF8FFFFF8000700000700000700000700000700000700007FF000FFF8007FF0151C7F9B
+18>I<1FFF803FFF803FFF803800003800003800003800003800003800003800003800003BF800
+3FFE003FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C07003C07C0F80
+3FFF001FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03C03801803800
+00700000700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000
+E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>I<3078FCFC783000000000
+000000003078FCFC78300614779318>58 D<0FF0003FFC007FFF00700F00F00380F00380600780
+000F00003E00007C0001F00001E00003C00003C00003C00003C00003C000038000000000000000
+00000000000000000003800007C00007C00007C000038000111C7D9B18>63
+D<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E
+000306000707000707000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07
+F0FF8FF87F07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E0
+1C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C0070
+1C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07
+E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E00000E000
+00E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B18
+>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C
+00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807F
+FF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C0000
+1C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C0038
+1C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00
+E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C
+001C1C001C00001C00001C00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18
+>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E0
+0000E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00F
+FFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C0
+1C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C0
+1C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18
+>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
+00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E00707F
+FFF0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8E
+E03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800
+E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D
+81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C
+39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B
+18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380
+E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F00
+7FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00
+701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00
+001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF0078
+0F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
+0380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00001C0000
+1E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F801C03801C03C0
+1C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07001C03801C0380
+1C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>I<03F3801FFF
+803FFF807C0F80700780E00380E00380E00380E000007000007800003F00001FF00007FE0000FF
+00000F800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F8
+00131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E0703800700000700000700000
+700000700000700000700000700000700000700000700000700000700000700000700000700000
+700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C0070
+1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
+1C00701C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07
+F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F07800707000707000707
+00070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000F8000070
+00151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E03800E03800E038
+00E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D
+8D800D05800F07800F07800E0380151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E0380
+0F0780070700070700038E00038E0001DC0001DC0001DC0000F80000F800007000007000007000
+00700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>89
+D<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
+E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18
+>91 D<FFF8FFF8FFF8003800380038003800380038003800380038003800380038003800380038
+003800380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F
+9F18>93 D E /Ff 44 122 df<1C3C3C3C3C040408081020204080060E7D840E>44
+D<7FF0FFE07FE00C037D8A10>I<000200020006000E003C00DC031C001C003800380038003800
+7000700070007000E000E000E000E001C001C001C001C003800380038003800780FFF80F1E7B9D
+17>49 D<001F800060E00080700100300200380420380420380410380420700460700380600000
+E00001C000030000FE00001C00000600000700000780000780000780300780780780780780F00F
+00800F00401E00401C0040380020E0001F8000151F7C9D17>51 D<070F1F1F0E00000000000000
+00000070F8F8F0E008147B930E>58 D<00000200000006000000060000000E0000001E0000001E
+0000003F0000002F0000004F0000004F0000008F0000010F0000010F0000020F0000020F000004
+0F00000C0F0000080F0000100F0000100F0000200F80003FFF800040078000C007800080078001
+000780010007800200078002000780060007801E000F80FF807FF81D207E9F22>65
+D<01FFFFC0001E00F0001E0078001E0038001E003C003C003C003C003C003C003C003C003C0078
+007800780078007800F0007801E000F0078000FFFE0000F00F8000F003C001E001C001E001E001
+E001E001E001E003C001E003C001E003C001E003C001C0078003C00780078007800F0007801E00
+0F007800FFFFE0001E1F7D9E20>I<0000FE0200078186001C004C0038003C0060003C00C0001C
+01C0001803800018070000180F0000181E0000101E0000103C0000003C00000078000000780000
+007800000078000000F0000000F0000000F0000000F0000000F000008070000080700000807000
+01003800010038000200180004000C001800060020000381C00000FE00001F217A9F21>I<01FF
+FF80001E00E0001E0070001E0038001E001C003C001C003C000E003C000E003C000E0078000E00
+78000E0078000E0078000E00F0001E00F0001E00F0001E00F0001E01E0003C01E0003C01E0003C
+01E0007803C0007003C0007003C000E003C001C0078001C00780038007800E0007801C000F0070
+00FFFFC0001F1F7D9E22>I<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C00
+04003C0004003C00040078080800780800007808000078180000F0300000FFF00000F0300000F0
+300001E0200001E0200001E0200001E0001003C0002003C0002003C0004003C000400780008007
+80018007800100078007000F001F00FFFFFE001F1F7D9E1F>I<01FFFFFC001E0038001E001800
+1E0008001E0008003C0008003C0008003C0008003C000800780010007808000078080000780800
+00F0100000F0300000FFF00000F0300001E0200001E0200001E0200001E0200003C0000003C000
+0003C0000003C00000078000000780000007800000078000000F800000FFF800001E1F7D9E1E>
+I<0000FC040007030C001C00980030007800E0007801C000380380003003800030070000300E00
+00301E0000201E0000203C0000003C00000078000000780000007800000078000000F0000000F0
+00FFF0F0000780F0000780F0000F0070000F0070000F0070000F0070001E0038001E0018003E00
+1C002E000E00CC000383040000FC00001E217A9F23>I<01FFF0001F00001E00001E00001E0000
+3C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F00001E00001
+E00001E00001E00003C00003C00003C00003C0000780000780000780000780000F8000FFF80014
+1F7D9E12>73 D<001FFF0000F80000F00000F00000F00001E00001E00001E00001E00003C00003
+C00003C00003C0000780000780000780000780000F00000F00000F00000F00001E00001E00301E
+00781E00F83C00F83C00F0780080700040E00021C0001F000018207D9E18>I<01FFF800001F00
+00001E0000001E0000001E0000003C0000003C0000003C0000003C000000780000007800000078
+00000078000000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0008003
+C0010003C0010003C0030003C00200078006000780060007800C0007801C000F007800FFFFF800
+191F7D9E1D>76 D<01FE00007FC0001E0000FC00001E0000F80000170001780000170001780000
+270002F00000270004F00000270004F00000270008F00000470009E00000470011E00000470021
+E00000470021E00000870043C00000838043C00000838083C00000838083C00001038107800001
+03820780000103820780000103840780000203840F00000203880F00000203900F00000203900F
+00000401E01E00000401E01E00000401C01E00000C01801E00001C01803E0000FF8103FFC0002A
+1F7D9E29>I<01FF007FE0001F000F00001F0004000017800400001780040000278008000023C0
+08000023C008000023C008000041E010000041E010000041F010000040F010000080F020000080
+7820000080782000008078200001003C400001003C400001003C400001001E400002001E800002
+001E800002000F800002000F800004000F0000040007000004000700000C000700001C00020000
+FF80020000231F7D9E22>I<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C00
+3C003C003C003C003C0078007800780078007800F0007800E000F003C000F00F0000FFFC0000F0
+000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C000000780000007
+80000007800000078000000F800000FFF000001E1F7D9E1F>80 D<0007E040001C18C000300580
+0060038000C0038001C00180018001000380010003800100038001000380000003C0000003C000
+0003F8000001FF800001FFE000007FF000001FF0000001F8000000780000007800000038000000
+380020003800200038002000300060007000600060006000E0007000C000E8038000C606000081
+F800001A217D9F1A>83 D<0FFFFFF01E0780E0180780201007802020078020200F0020600F0020
+400F0020400F0020801E0040001E0000001E0000001E0000003C0000003C0000003C0000003C00
+000078000000780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0
+000001E0000001E0000003E00000FFFF00001C1F789E21>I<00F1800389C00707800E03801C03
+803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C
+40308C800F070013147C9317>97 D<07803F8007000700070007000E000E000E000E001C001C00
+1CF01D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F
+0010207B9F15>I<007E0001C1000300800E07801E07801C07003C0200780000780000780000F0
+0000F00000F00000F00000F0000070010070020030040018380007C00011147C9315>I<000078
+0003F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1C00389C0
+0707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40
+F01C40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C013C013802780C7B
+F07C00F000F000F000F0007000700170023804183807C010147C9315>I<00007800019C00033C
+00033C000718000700000700000E00000E00000E00000E00000E0001FFE0001C00001C00001C00
+001C0000380000380000380000380000380000700000700000700000700000700000700000E000
+00E00000E00000E00000C00001C00001C0000180003180007B0000F300006600003C0000162982
+9F0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C03C03803C03
+803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00001C00001C00301C
+00783800F0700060E0003F8000141D7E9315>I<01E0000FE00001C00001C00001C00001C00003
+8000038000038000038000070000070000071E000763000E81800F01C00E01C00E01C01C03801C
+03801C03801C0380380700380700380700380E10700E20700C20701C20700C40E00CC060070014
+207D9F17>I<00C001E001E001C000000000000000000000000000000E00330023004380430047
+0087000E000E000E001C001C001C003840388030807080310033001C000B1F7C9E0E>I<000180
+0003C00003C0000380000000000000000000000000000000000000000000003C00004600008700
+008700010700010700020E00000E00000E00000E00001C00001C00001C00001C00003800003800
+00380000380000700000700000700000700000E00000E00030E00079C000F180006300003C0000
+1228829E0E>I<01E0000FE00001C00001C00001C00001C0000380000380000380000380000700
+000700000703C00704200E08E00E11E00E21E00E40C01C80001D00001E00001FC00038E0003870
+00387000383840707080707080707080703100E03100601E0013207D9F15>I<03C01FC0038003
+800380038007000700070007000E000E000E000E001C001C001C001C0038003800380038007000
+700070007100E200E200E200E200640038000A207C9F0C>I<1C0F80F0002630C318004740640C
+004780680E004700700E004700700E008E00E01C000E00E01C000E00E01C000E00E01C001C01C0
+38001C01C038001C01C038001C01C0708038038071003803806100380380E10038038062007007
+006600300300380021147C9325>I<1C0F802630C04740604780604700704700708E00E00E00E0
+0E00E00E00E01C01C01C01C01C01C01C03843803883803083807083803107003303001C016147C
+931A>I<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003
+C0F003C0F00780F00700700F00700E0030180018700007C00013147C9317>I<01C1E002621804
+741C04781C04701E04701E08E01E00E01E00E01E00E01E01C03C01C03C01C03C01C03803807803
+80700380E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C0000FF
+C000171D809317>I<1C1E002661004783804787804707804703008E00000E00000E00000E0000
+1C00001C00001C00001C000038000038000038000038000070000030000011147C9313>114
+D<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF00CF00CE00840102060
+1F8010147D9313>I<018001C0038003800380038007000700FFF007000E000E000E000E001C00
+1C001C001C003800380038003820704070407080708031001E000C1C7C9B0F>I<0E00C03300E0
+2301C04381C04301C04701C08703800E03800E03800E03801C07001C07001C07001C07101C0E20
+180E20180E201C1E200C264007C38014147C9318>I<0E03803307802307C04383C04301C04700
+C08700800E00800E00800E00801C01001C01001C01001C02001C02001C04001C04001C08000E30
+0003C00012147C9315>I<0E00C1C03300E3C02301C3E04381C1E04301C0E04701C06087038040
+0E0380400E0380400E0380401C0700801C0700801C0700801C0701001C0701001C0602001C0F02
+000C0F04000E13080003E1F0001B147C931E>I<0383800CC4401068E01071E02071E02070C040
+E00000E00000E00000E00001C00001C00001C00001C040638080F38080F38100E5810084C60078
+780013147D9315>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E0380
+1C07001C07001C07001C07001C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800
+F03800F07000E06000C0C0004380003E0000131D7C9316>I E /Fg 84 125
+df<001F83E000F06E3001C078780380F8780300F0300700700007007000070070000700700007
+0070000700700007007000FFFFFF80070070000700700007007000070070000700700007007000
+070070000700700007007000070070000700700007007000070070000700700007007000070070
+0007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E0
+070000070000070000070000070000070000FFFFE00700E00700E00700E00700E00700E00700E0
+0700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FC3FE
+1720809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700
+E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
+E00700E00700E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F0
+4F040001C07C06000380F80F000300F00F000700F00F0007007000000700700000070070000007
+0070000007007000000700700000FFFFFFFF000700700700070070070007007007000700700700
+070070070007007007000700700700070070070007007007000700700700070070070007007007
+000700700700070070070007007007000700700700070070070007007007007FE3FE3FF0242080
+9F26>I<001F81FF0000F06F070001C07C0F000380F80F000300F0070007007007000700700700
+07007007000700700700070070070007007007000700700700FFFFFFFF00070070070007007007
+000700700700070070070007007007000700700700070070070007007007000700700700070070
+070007007007000700700700070070070007007007000700700700070070070007007007000700
+7007007FE3FE3FF02420809F26>I<70F8F8F8F8F8F8F870707070707070707070202020202000
+0000000070F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A040204020402080408041008
+1008201040200F0E7E9F17>I<70F8FCFC74040404080810102040060E7C9F0D>39
+D<0020004000800100020006000C000C00180018003000300030007000600060006000E000E000
+E000E000E000E000E000E000E000E000E000E0006000600060007000300030003000180018000C
+000C000600020001000080004000200B2E7DA112>I<800040002000100008000C000600060003
+00030001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E0
+00E000C000C000C001C001800180018003000300060006000C00080010002000400080000B2E7D
+A112>I<70F8FCFC74040404080810102040060E7C840D>44 D<FFC0FFC00A027F8A0F>I<70F8F8
+F87005057C840D>I<000100030003000600060006000C000C000C001800180018003000300030
+00600060006000C000C000C00180018001800300030003000600060006000C000C000C00180018
+001800300030003000600060006000C000C000C000102D7DA117>I<03F0000E1C001C0E001806
+00380700700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
+C0F003C0F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C
+0003F000121F7E9D17>I<018003800F80F3800380038003800380038003800380038003800380
+0380038003800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<
+03F0000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780
+000780000F00000E00001C0000380000700000600000C0000180000300000600400C0040180040
+1000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F807807807807
+80380F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F000007800007
+800007C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17
+>I<000600000600000E00000E00001E00002E00002E00004E00008E00008E00010E00020E0002
+0E00040E00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E0000
+0E00000E00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE000100000
+10000010000010000010000010000011F000161C00180E001007001007800003800003800003C0
+0003C00003C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E
+9D17>I<007C000182000701000E03800C07801C0780380300380000780000700000700000F1F0
+00F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C07003
+803803803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF8040
+010080020080020080040000080000080000100000200000200000400000400000C00000C00001
+C00001800003800003800003800003800007800007800007800007800007800007800007800003
+0000121F7D9D17>I<03F0000C0C00100600300300200180600180600180600180700180780300
+3E03003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0
+C000C0C000C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C
+00380600380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007
+C03807C0180BC00E13C003E3C0000380000380000380000700300700780600780E00700C002018
+001070000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>
+I<70F8F8F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<7FFF
+FFE0FFFFFFF00000000000000000000000000000000000000000000000000000000000000000FF
+FFFFF07FFFFFE01C0C7D9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C0
+01800180010003000200020002000200020002000000000000000000000007000F800F800F8007
+000E207D9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0000009
+E0000009E0000009E0000010F0000010F0000010F00000207800002078000020780000403C0000
+403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F000200078002000780
+02000780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E
+0007801F0007800F0007800F8007800F8007800F8007800F8007800F8007800F0007801F000780
+1E0007803C0007FFF00007803C0007801E0007800F0007800F8007800780078007C0078007C007
+8007C0078007C0078007C00780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E
+20>I<000FC040007030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C0
+7C0000407C00004078000040F8000000F8000000F8000000F8000000F8000000F8000000F80000
+00F8000000F8000000780000007C0000407C0000403C0000401C0000401E0000800E0000800700
+01000380020001C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E000780
+070007800380078003C0078001E0078001E0078001F0078000F0078000F0078000F8078000F807
+8000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F0078000F0
+078001E0078001E0078003C0078003800780070007800E000F803C00FFFFE0001D1F7E9E23>I<
+FFFFFF000F800F0007800300078003000780010007800180078000800780008007800080078080
+800780800007808000078080000781800007FF8000078180000780800007808000078080000780
+8000078000200780002007800020078000400780004007800040078000C0078000C0078001800F
+800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F000780030007800300078001000780018007
+800080078000800780008007800080078080000780800007808000078080000781800007FF8000
+078180000780800007808000078080000780800007800000078000000780000007800000078000
+000780000007800000078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004
+E0038002E0070001E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F800
+0000F8000000F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C
+0001E03C0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820
+000FE0001E217D9F24>I<FFF8FFF80F800F8007800F0007800F0007800F0007800F0007800F00
+07800F0007800F0007800F0007800F0007800F0007800F0007800F0007FFFF0007800F0007800F
+0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
+0F0007800F0007800F000F800F80FFF8FFF81D1F7E9E22>I<FFFC0FC007800780078007800780
+078007800780078007800780078007800780078007800780078007800780078007800780078007
+80078007800FC0FFFC0E1F7F9E10>I<0FFFC0007C00003C00003C00003C00003C00003C00003C
+00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
+00003C00003C00203C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17
+>I<FFFC0FFC0FC003E00780018007800100078002000780040007800800078010000780200007
+80400007808000078100000783000007878000078F80000793C0000791E00007A1E00007C0F000
+0780F0000780780007803C0007803C0007801E0007801E0007800F000780078007800780078007
+C00FC007E0FFFC3FFC1E1F7E9E23>I<FFFE000FC0000780000780000780000780000780000780
+000780000780000780000780000780000780000780000780000780000780000780000780000780
+0207800207800207800207800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>I<FF
+80001FF80F80001F800780001F0005C0002F0005C0002F0005C0002F0004E0004F0004E0004F00
+0470008F000470008F000470008F000438010F000438010F000438010F00041C020F00041C020F
+00041C020F00040E040F00040E040F00040E040F000407080F000407080F000407080F00040390
+0F000403900F000401E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F
+7E9E2A>I<FF803FF807C007C007C0038005E0010005E0010004F001000478010004780100043C
+0100043C0100041E0100040F0100040F010004078100040781000403C1000401E1000401E10004
+00F1000400F1000400790004003D0004003D0004001F0004001F0004000F000400070004000700
+0E0003001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E000F000F00
+0E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001
+F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C00
+03C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23
+>I<FFFFE0000F80780007801C0007801E0007800F0007800F8007800F8007800F8007800F8007
+800F8007800F8007800F0007801E0007801C000780780007FFE000078000000780000007800000
+078000000780000007800000078000000780000007800000078000000780000007800000078000
+000FC00000FFFC0000191F7E9E1F>I<001F800000F0F00001C0380007801E000F000F000E0007
+001E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0F800
+01F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C0003E03C0003C03C
+0F03C01E1087800E2047000F204F0007A03E0001E0380000F0F010001FB0100000301000003830
+0000387000003FF000001FE000001FE000000FC0000007801C297D9F23>I<FFFF80000F80F000
+0780780007803C0007801E0007801E0007801F0007801F0007801F0007801F0007801E0007801E
+0007803C00078078000780F00007FF80000781C0000780E0000780F00007807000078078000780
+78000780780007807C0007807C0007807C0007807C0407807E0407803E040FC01E08FFFC0F1000
+0003E01E207E9E21>I<07E0800C1980100780300380600180600180E00180E00080E00080E000
+80F00000F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001
+C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7F
+FFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010
+000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
+00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F
+800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C0078003800780010007800100078001000780
+010007800100078001000780010007800100078001000780010007800100078001000780010007
+800100078001000780010007800100078001000780010007800100078001000380020003800200
+01C0020001C0040000E008000070180000382000000FC0001D207E9E22>I<FFF003FE1F8000F8
+0F0000600F800060078000400780004003C0008003C0008003C0008001E0010001E0010001F001
+0000F0020000F0020000F806000078040000780400003C0800003C0800003C0800001E1000001E
+1000001F3000000F2000000F20000007C0000007C0000007C00000038000000380000003800000
+0100001F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F00078001000F0007C001
+00078007C00200078007C00200078007C0020003C009E0040003C009E0040003C009E0040003E0
+10F00C0001E010F0080001E010F0080001F02078080000F02078100000F02078100000F0403C10
+000078403C20000078403C20000078C03E2000003C801E4000003C801E4000003C801E4000001F
+000F8000001F000F8000001F000F8000001E00078000000E00070000000E00070000000C000300
+000004000200002C207F9E2F>I<FFF003FF1F8000F80F8000600780004007C0004003E0008001
+E0008001F0010000F0030000F80200007C0400003C0400003E0800001E0800001F1000000FB000
+0007A0000007C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0
+000003C0000003C0000003C0000007C000007FFE00201F7F9E22>89 D<7FFFF87C00F87000F060
+01E04001E0C003C0C003C0800780800F80800F00001E00001E00003C00003C0000780000F80000
+F00001E00001E00003C00403C0040780040F80040F000C1E000C1E00083C00183C0018780038F8
+01F8FFFFF8161F7D9E1C>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>I<0804100820102010402040208040
+80408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06060606060606060606060606060606
+06060606060606060606060606060606060606060606060606FEFE072D7FA10D>I<1FE0003030
+00781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F00E10F00E
+10F00E10F01E10781E103867200F83C014147E9317>97 D<0E0000FE00000E00000E00000E0000
+0E00000E00000E00000E00000E00000E00000E00000E3E000EC3800F01C00F00E00E00E00E0070
+0E00700E00780E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D01C00CC300
+083E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F000700070
+00380138011C020E0C03F010147E9314>I<000380003F80000380000380000380000380000380
+00038000038000038000038000038003E380061B801C0780380380380380700380700380F00380
+F00380F00380F00380F00380F003807003807003803803803807801C07800E1B8003E3F815207E
+9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F000
+00F000007000007000003800801800800C010007060001F80011147F9314>I<007C00C6018F03
+8F07060700070007000700070007000700FFF00700070007000700070007000700070007000700
+070007000700070007000700070007007FF01020809F0E>I<0000E003E3300E3C301C1C30380E
+00780F00780F00780F00780F00780F00380E001C1C001E380033E0002000002000003000003000
+003FFE001FFF800FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003FC
+00141F7F9417>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E
+00000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E
+01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E00
+1E001C000000000000000000000000000E007E000E000E000E000E000E000E000E000E000E000E
+000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E00000000000
+00000000000000007007F000F00070007000700070007000700070007000700070007000700070
+007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000FE0000
+0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03C00E0300
+0E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E000E07000E0780
+0E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E000E000E000E000E00
+0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
+000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C000F00F00E000F00F00E000E00
+E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E
+00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326
+>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
+01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C0380
+3801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C0
+3801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00
+700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E3E
+000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I<03E08006
+19801C05803C0780380380780380700380F00380F00380F00380F00380F00380F0038070038078
+03803803803807801C0B800E138003E38000038000038000038000038000038000038000038000
+0380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E000E
+000E000E000E000E000E00FFE00F147F9312>I<1F9030704030C010C010C010E00078007F803F
+E00FF00070803880188018C018C018E030D0608F800D147E9312>I<020002000200060006000E
+000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E080E080E08
+0610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01
+C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319
+>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001C40001
+C40001EC0000E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C0780701C
+0300601C0380200E0380400E0380400E03C0400707C0800704C0800704E0800388610003887100
+03C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E147F9321>I<
+7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C00007C00004E00
+0087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF83F81E01E01C00C00E00
+800E00800E008007010007010003820003820003820001C40001C40001EC0000E80000E8000070
+00007000007000002000002000004000004000004000F08000F08000F100006200003C0000151D
+7F9318>I<3FFF380E200E201C40384078407000E001E001C00380078007010E011E011C033802
+7006700EFFFE10147F9314>I<FFFFFC1601808C17>I<FFFFFFFFFFF02C01808C2D>I
+E /Fh 45 122 df<000FF01FC000007FF8FFF00000F81FE0780001E03F80F80003E07F80F80007
+C07F00F80007C07F00F80007C03F00700007C01F00000007C01F00000007C01F00000007C01F03
+FC00FFFFFFFFFC00FFFFFFFFFC0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007
+C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F00
+7C0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F007C003FF8FFE3FF803F
+F8FFE3FF802920809F2C>14 D<FFF0FFF0FFF0FFF00C047F8B11>45 D<387CFEFEFE7C3807077C
+860F>I<00E00001E0000FE000FFE000F3E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
+0003E00003E000FFFF80FFFF80111D7C9C1A>49 D<01FC0007FF000F07801E03C01C01E03C01E0
+3C01E03E01E03F01E03FC3C01FE3801FFF000FFE0007FF8007FFC01FFFE03C3FF0780FF07803F8
+F001F8F000F8F00078F00078F000707800707C00E03E03C00FFF8003FC00151D7E9C1A>56
+D<387CFEFEFE7C38000000000000387CFEFEFE7C3807147C930F>58 D<0000E000000000E00000
+0001F000000001F000000001F000000003F800000003F800000006FC00000006FC0000000EFE00
+00000C7E0000000C7E000000183F000000183F000000303F800000301F800000701FC00000600F
+C00000600FC00000C007E00000FFFFE00001FFFFF000018003F000018003F000030001F8000300
+01F800060001FC00060000FC000E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65
+D<FFFFFE00FFFFFFC007C007E007C003F007C001F807C001FC07C001FC07C001FC07C001FC07C0
+01FC07C001F807C003F807C007F007C00FE007FFFF8007FFFFC007C003F007C001F807C001FC07
+C000FC07C000FE07C000FE07C000FE07C000FE07C000FE07C000FC07C001FC07C003F807C007F0
+FFFFFFE0FFFFFF001F1F7E9E25>I<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC0001E
+1F80001E3F00000E3F00000E7F0000067E0000067E000006FE000000FE000000FE000000FE0000
+00FE000000FE000000FE0000007E0000007E0000067F0000063F0000063F00000C1F80000C0FC0
+001807E0003803F0007000FE01C0003FFF800007FC001F1F7D9E26>I<FFFFFE0000FFFFFFC000
+07E007F00007E001F80007E000FC0007E0007E0007E0003F0007E0003F0007E0001F8007E0001F
+8007E0001F8007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E000
+1FC007E0001FC007E0001FC007E0001F8007E0001F8007E0001F8007E0003F0007E0003F0007E0
+007E0007E000FC0007E001F80007E007F000FFFFFFC000FFFFFE0000221F7E9E28>I<FFFFFFE0
+FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E0003007E0603007E060
+3007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0E00007E0600007E0600C07E0
+600C07E0000C07E0001807E0001807E0001807E0003807E0007807E000F807E003F0FFFFFFF0FF
+FFFFF01E1F7E9E22>I<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007
+E0003007E0003007E0603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E000
+07E0E00007E0600007E0600007E0600007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E00000FFFF8000FFFF80001C1F7E9E21>I<FFFFFFFF07E007E007E007E007E007
+E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
+07E007E0FFFFFFFF101F7E9E14>73 D<FFFF8000FFFF800007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
+000007E0000007E0000007E0000007E000C007E000C007E000C007E001C007E001C007E001C007
+E0038007E0038007E00F8007E01F80FFFFFF80FFFFFF801A1F7E9E1F>76
+D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006F80000DF0006F80000DF00067C
+00019F00067C00019F00063E00031F00063E00031F00061F00061F00061F00061F00060F800C1F
+00060F800C1F000607C0181F000607C0181F000607C0181F000603E0301F000603E0301F000601
+F0601F000601F0601F000600F8C01F000600F8C01F0006007D801F0006007D801F0006003F001F
+0006003F001F0006003F001F0006001E001F00FFF01E03FFF8FFF00C03FFF82D1F7E9E32>I<FF
+E000FFF0FFF000FFF007F000060007F800060006FC000600067E000600063F000600063F800600
+061F800600060FC006000607E006000603F006000601F806000601FC06000600FC060006007E06
+0006003F060006001F860006001FC60006000FE600060007E600060003F600060001FE00060000
+FE00060000FE000600007E000600003E000600001E000600000E00FFF0000600FFF0000600241F
+7E9E29>I<001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F0000F83F0000FC7F00
+00FE7E00007E7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE
+00007FFE00007F7E00007E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F80FC003F007E007E0
+01F81F8000FFFF00001FF800201F7D9E27>I<FFFFFE00FFFFFF8007E00FE007E003F007E001F8
+07E001F807E001FC07E001FC07E001FC07E001FC07E001FC07E001F807E001F807E003F007E00F
+E007FFFF8007FFFE0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
+000007E0000007E0000007E0000007E00000FFFF0000FFFF00001E1F7E9E24>I<03FC080FFF38
+1E03F83800F8700078700038F00038F00018F00018F80000FC00007FC0007FFE003FFF801FFFE0
+0FFFF007FFF000FFF80007F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F80070
+FE01E0E7FFC081FF00161F7D9E1D>83 D<7FFFFFFC7FFFFFFC7C07E07C7007E01C6007E00C6007
+E00CE007E00EC007E006C007E006C007E006C007E0060007E0000007E0000007E0000007E00000
+07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E00003FFFFC003FFFFC01F1E7E9D24>I<FFFF01FFE0FFFF01FFE007E0
+000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007
+E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C00
+07E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0003E000180001F00018
+0001F000300000F8006000007E03C000001FFF80000003FC0000231F7E9E28>I<07FC001FFF00
+3F0F803F07C03F03E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0
+F803E0FC05E07E0DE03FF8FE0FE07E17147F9319>97 D<FF0000FF00001F00001F00001F00001F
+00001F00001F00001F00001F00001F00001F00001F1FC01F7FF01FE0F81F807C1F007E1F003E1F
+003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F003E1F007C1F807C1EC1F81C7FE018
+1F8018207E9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000
+FC0000FC0000FC00007C00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<0007
+F80007F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F801F8F80FFE
+F81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87C00
+F87E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>I<01FE0007FF800F83C01E01E03E00F07C
+00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00003E00181E00180F807007
+FFE000FF8015147F9318>I<001F8000FFC001F3E003E7E003C7E007C7E007C3C007C00007C000
+07C00007C00007C000FFFC00FFFC0007C00007C00007C00007C00007C00007C00007C00007C000
+07C00007C00007C00007C00007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC
+3C07FFFE0F079E1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC001800
+001800001C00001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E78003C7800
+3C3F01F80FFFE001FF00171E7F931A>I<FF0000FF00001F00001F00001F00001F00001F00001F
+00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0F81F80F81F00F81F00F81F00F81F
+00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18207D9F
+1D>I<1C003E007F007F007F003E001C00000000000000000000000000FF00FF001F001F001F00
+1F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA00E>I<0038
+007C00FE00FE00FE007C003800000000000000000000000001FE01FE003E003E003E003E003E00
+3E003E003E003E003E003E003E003E003E003E003E003E003E003E003E303E783EFC3CFC7C7878
+3FF01FC00F2A83A010>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F
+00001F00001F00001F01FE1F01FE1F00F01F00C01F03801F07001F0C001F18001F7C001FFC001F
+9E001F0F001E0F801E07C01E03C01E01E01E01F01E00F8FFC3FFFFC3FF18207E9F1C>I<FF00FF
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
+1F001F001F001F001F001F001F001F001F00FFE0FFE00B207E9F0E>I<FE0FE03F80FE1FF07FC0
+1E70F9C3E01E407D01F01E807E01F01F807E01F01F007C01F01F007C01F01F007C01F01F007C01
+F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C
+01F0FFE3FF8FFEFFE3FF8FFE27147D932C>I<FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F00
+F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3
+FF18147D931D>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC
+007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<FF1FC0
+FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E
+1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F00001F00001F00001F0000
+FFE000FFE000181D7E931D>I<FE3E00FE7F801ECFC01E8FC01E8FC01F8FC01F03001F00001F00
+001F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00012147E9316
+>114 D<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F006F8
+1EFFFCC7F010147E9315>I<01800180018003800380038007800F803F80FFFCFFFC0F800F800F
+800F800F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C14>I<FF
+07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
+00F81F00F81F01F81F01F80F06F807FCFF03F8FF18147D931D>I<FFE07F80FFE07F801F001C00
+0F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9C00000F980
+0000FF8000007F0000007F0000003E0000003E0000001C0000001C000019147F931C>I<FFE7FE
+1FE0FFE7FE1FE01F00F003001F00F803000F80F806000F80F8060007C1BC0C0007C1BC0C0007C1
+BE0C0003E31E180003E31E180001F60F300001F60F300001F60FB00000FC07E00000FC07E00000
+7803C000007803C000007803C000003001800023147F9326>I<FFE1FF00FFE1FF000F80700007
+C0E00007E0C00003E1800001F3800000FF0000007E0000003E0000003F0000007F8000006F8000
+00C7C0000183E0000381F0000701F8000E00FC00FF81FF80FF81FF8019147F931C>I<FFE07F80
+FFE07F801F001C000F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C0
+0001F9C00000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C00000018
+00000018000078300000FC300000FC600000C0E00000E1C000007F8000001E000000191D7F931C
+>I E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300
+TeXDict begin 
+%%EndSetup
+%%Page: 1 1
+bop 717 45 a Fh(Bey)o(ond)17 b(Programming:)194 100 y(A)g(Tw)o(o-Summer)f
+(Computer)h(Science)i(Institute)f(for)f(Secondary)h(T)l(eac)o(hers)841
+209 y Fg(Brian)e(Harv)o(ey)643 264 y(Univ)o(ersit)o(y)g(of)f(California,)g
+(Berk)o(eley)888 414 y(Abstract)91 564 y(1992)k(marks)h(the)h(fourth)f
+(summer)h(of)f(the)h(Institute)g(for)f(Secondary)h(Mathematics)g(and)f
+(Computer)0 659 y(Science)15 b(Education)g(\(IFSMA)o(CSE\),)d(an)h(NSF-sp)q
+(onsored)h(program)f(for)g(high)h(sc)o(ho)q(ol)g(teac)o(hers)f(held)i(at)e
+(Ken)o(t)0 755 y(State)20 b(Univ)o(ersit)o(y)l(.)36 b(The)21
+b(program)e(is)i(divided)h(in)o(to)f(separate)f(strands)g(for)f(mathematics)h
+(and)h(computer)0 850 y(science;)16 b(this)g(pap)q(er)g(describ)q(es)g(the)g
+(computer)f(science)i(strand.)91 945 y(In)12 b(its)g(\014rst)g(three)g(y)o
+(ears,)f(IFSMA)o(CSE)h(has)f(serv)o(ed)h(ab)q(out)g(240)f(participan)o(ts,)i
+(including)h(90)d(in)i(computer)0 1041 y(science.)21 b(It)15
+b(has,)g(therefore,)f(had)h(a)f(visible)j(impact)e(in)h(Ohio)g(and)f(the)g
+(neigh)o(b)q(oring)h(states,)d(esp)q(ecially)18 b(since)0 1136
+y(one)13 b(comp)q(onen)o(t)h(of)f(the)g(Institute)h(is)g(an)f(In)o(terv)o
+(ening)h(Y)l(ear)g(Pro)s(ject)e(in)i(whic)o(h)g(participan)o(ts)g(bring)g
+(the)f(ideas)0 1232 y(of)i(the)g(Institute)g(bac)o(k)g(to)g(their)g
+(colleagues)i(through)d(inservice)j(w)o(orkshops,)d(lo)q(cal)i(curriculum)h
+(design,)f(and)0 1327 y(demonstration)f(teac)o(hing.)20 b(\(P)o(articipan)o
+(ts)15 b(attend)g(the)g(Institute)h(during)g(t)o(w)o(o)e(consecutiv)o(e)i
+(summers.\))91 1423 y(IFSMA)o(CSE)g(is)h(b)q(oth)f(tec)o(hnically)i(and)f(p)q
+(edagogically)h(inno)o(v)m(ativ)o(e.)23 b(Its)17 b(curriculum)h(go)q(es)e
+(far)f(b)q(ey)o(ond)0 1518 y(what)20 b(is)i(usually)g(exp)q(ected)h(of)d
+(high)i(sc)o(ho)q(ol)g(teac)o(hers)e(\(or)h(their)g(studen)o(ts\);)i(in)f
+(computer)f(science,)j(par-)0 1614 y(ticipan)o(ts)18 b(study)g(b)q(oth)g
+(functional)h(programming)e(\(in)h(Logo\))f(and)h(pro)q(cedural)h
+(programming)e(\(in)h(P)o(ascal\))0 1709 y(paradigms,)c(and)g(suc)o(h)g(adv)m
+(anced)h(computer)f(science)h(topics)f(as)g(automata)e(theory)i(and)g
+(compiler)h(construc-)0 1805 y(tion.)30 b(Our)18 b(high)i(exp)q(ectations)f
+(are)f(made)g(realistic)i(b)o(y)e(the)h(hea)o(vy)f(use)h(of)f(exp)q(erien)o
+(tial)i(and)f(co)q(op)q(erativ)o(e)0 1900 y(learning)j(tec)o(hniques.)36
+b(P)o(articipan)o(ts)20 b(learn)h(b)o(y)g(exp)q(erimen)o(t,)h(rather)e(than)g
+(b)o(y)g(listening)i(to)e(lectures.)36 b(In)0 1995 y(the)20
+b(mathematics)f(strands)g(as)g(w)o(ell)i(as)e(in)h(computer)g(science,)i(w)o
+(e)d(emphasize)i(the)f(use)f(of)h(programming)0 2091 y(languages)15
+b(as)g(op)q(en-ended)i(exp)q(erimen)o(tal)g(media,)e(rather)g(than)g(more)g
+(sp)q(eci\014c)i(\\coursew)o(are.")91 2186 y(In)f(addition)i(to)d(describing)
+j(w)o(a)o(ys)d(in)h(whic)o(h)h(IFSMA)o(CSE)f(has)g(b)q(een)h(successful,)g
+(this)f(pap)q(er)h(discusses)0 2282 y(t)o(w)o(o)j(ongoing)g(problems.)38
+b(One)21 b(is)h(the)f(di\016cult)o(y)h(that)e(participan)o(ts)h(ha)o(v)o(e)g
+(with)g(the)g(idea)g(of)g(functional)0 2377 y(ob)s(jects;)12
+b(another)f(is)h(the)g(tenacit)o(y)f(with)h(whic)o(h)h(man)o(y)e(participan)o
+(ts')h(abstract)e(educational)j(theories)f(prev)o(en)o(t)0
+2473 y(them)j(from)g(observing)g(their)h(o)o(wn)f(learning)h(exp)q(eriences)h
+(clearly)l(.)964 2779 y(1)p eop
+%%Page: 2 2
+bop 717 45 a Fh(Bey)o(ond)17 b(Programming:)194 100 y(A)g(Tw)o(o-Summer)f
+(Computer)h(Science)i(Institute)f(for)f(Secondary)h(T)l(eac)o(hers)91
+237 y Fg(The)c(Institute)h(for)e(Secondary)h(Mathematics)g(and)g(Computer)f
+(Science)j(Education)f(\(IFSMA)o(CSE\))e(is)h(a)0 333 y(summer)f(program)e
+(for)h(high)i(sc)o(ho)q(ol)f(teac)o(hers)f(that)g(has)g(b)q(een)i(funded)g(b)
+o(y)e(the)h(National)g(Science)i(F)l(oundation)0 428 y(for)f(three)i(groups)e
+(of)h(participan)o(ts)g(o)o(v)o(er)g(four)f(summers.)20 b(\(Eac)o(h)15
+b(participan)o(t)g(attends)g(the)g(program)f(during)0 524 y(t)o(w)o(o)i
+(consecutiv)o(e)i(summers.\))26 b(It)17 b(is)h(held)g(at)f(Ken)o(t)g(State)g
+(Univ)o(ersit)o(y)l(,)i(in)f(Ken)o(t,)f(Ohio.)27 b(P)o(articipan)o(ts)17
+b(ha)o(v)o(e)0 619 y(b)q(een)i(c)o(hosen)f(mainly)g(from)f(Ohio)i(and)e(its)h
+(neigh)o(b)q(oring)h(states,)e(although)h(a)f(few)h(ha)o(v)o(e)f(come)h(from)
+e(as)i(far)0 715 y(a)o(w)o(a)o(y)13 b(as)i(Alask)m(a)g(and)g(P)o(ago)f(P)o
+(ago.)k(The)d(Institute's)g(am)o(bitious)g(and)g(inno)o(v)m(ativ)o(e)h
+(program)e(has)h(attracted)e(a)0 810 y(w)o(ell-kno)o(wn,)h(in)o(ternational)g
+(facult)o(y)f(that)f(includes)k(high)e(sc)o(ho)q(ol)f(teac)o(hers)g(as)g(w)o
+(ell)h(as)e(univ)o(ersit)o(y)i(professors.)91 905 y(IFSMA)o(CSE)21
+b(Directors)f(Ed)i(Dubinsky)g(\(Purdue)f(Univ)o(ersit)o(y\))g(and)h(Olaf)f
+(Stac)o(k)o(elb)q(erg)h(\(Ken)o(t)e(State)0 1001 y(Univ)o(ersit)o(y\))d(b)q
+(egan)f(planning)i(for)e(the)g(Institute)h(in)g(1986)e(and)i(organized)g(a)f
+(planning)i(conference)f(in)g(July)l(,)0 1096 y(1987.)h(The)d(\014rst)f
+(group)g(of)g(participan)o(ts)h(b)q(egan)g(attending)g(the)f(Institute)h(in)h
+(the)e(summer)g(of)g(1989.)19 b(Here)14 b(is)0 1192 y(ho)o(w)h(one)g(funding)
+h(prop)q(osal)g(describ)q(ed)h(the)e(needs)h(that)f(IFSMA)o(CSE)g(w)o(as)f
+(designed)j(to)d(meet:)200 1313 y Fh(New)j(sophistication)k(in)d(the)g
+(curriculum.)j Fg(The)15 b(traditional)i(sub)s(ject)e(matter)f(of)h(sec-)109
+1385 y(ondary)h(mathematics)h(has)f(follo)o(w)o(ed)h(a)g(narro)o(w)e(path)i
+(leading)h(to)e(the)h(calculus.)26 b(Not)16 b(only)h(has)109
+1458 y(computer)c(science)h(raised)f(new)f(in)o(terest)h(in)g(some)g
+(classical)h(mathematical)e(topics)h(not)f(curren)o(tly)109
+1531 y(in)k(the)g(curriculum,)h(but)e(other)g(areas)g(within)i(mathematics)e
+(\(discrete)h(mathematics,)f(abstract)109 1604 y(algebra,)f(statistics,)h
+(fractal)f(geometry\))f(ha)o(v)o(e)h(risen)i(from)d(obscurit)o(y)i(to)f(new)h
+(imp)q(ortance.)20 b(Sec-)109 1676 y(ondary)15 b(teac)o(hers)g(are)g(often)g
+(un)o(trained)h(in)g(these)f(areas.)200 1776 y Fh(New)e(metho)q(ds)h(of)f
+(teac)o(hing.)20 b Fg(Organizations)12 b(suc)o(h)g(as)f(the)h(National)g
+(Council)h(of)f(T)l(eac)o(h-)109 1849 y(ers)g(of)f(Mathematics)h(\(NCTM\))f
+(and)h(the)g(Mathematical)g(Asso)q(ciation)g(of)g(America)g(\(MAA\))f(ha)o(v)
+o(e)109 1922 y(concluded)16 b(that)e(the)g(traditional)h(approac)o(h)f(to)g
+(p)q(edagogy)g(in)h(mathematics)f(has)g(had)g(to)q(o)g(m)o(uc)o(h)109
+1995 y(emphasis)22 b(on)g(memorization)g(of)f(facts)g(and)h(algorithms,)h
+(and)f(not)f(enough)h(of)f(the)h(\015a)o(v)o(or)e(of)109 2067
+y(ho)o(w)c(mathematics)g(is)h(done)g(and)g(ho)o(w)f(it)g(is)h(used.)25
+b(IFSMA)o(CSE)16 b(emphasizes)i(learner-cen)o(tered)109 2140
+y(activities)f(rather)d(than)h(lectures)h(as)f(the)g(primary)h(st)o(yle)f(of)
+g(p)q(edagogy)l(.)200 2240 y Fh(New)24 b(uses)g(of)h(tec)o(hnology)l(.)39
+b Fg(Computers)21 b(and)h(graphing)g(calculators)g(are)f(b)q(ecoming)109
+2313 y(widely)g(a)o(v)m(ailable)f(in)g(sc)o(ho)q(ols.)32 b(T)l(eac)o(hers)19
+b(require)h(training)g(in)f(these)h(tec)o(hnologies,)g(including)109
+2385 y(general-purp)q(ose)12 b(soft)o(w)o(are)c(suc)o(h)j(as)f(spreadsheets,)
+h(soft)o(w)o(are)d(pac)o(k)m(ages)j(designed)g(sp)q(eci\014cally)i(for)109
+2458 y(education,)h(and)g(new)g(programming)f(languages)h(designed)h(for)e
+(use)h(in)g(mathematics)f(education.)91 2575 y(Eac)o(h)f(participan)o(t)i
+(attends)e(IFSMA)o(CSE)h(for)f(t)o(w)o(o)f(consecutiv)o(e)j(summer)e
+(sessions,)i(eac)o(h)e(of)h(whic)o(h)g(is)g(six)0 2670 y(w)o(eeks)f(long.)20
+b(The)12 b(academic)h(da)o(y)g(includes)h(four)e(90-min)o(ute)h(p)q(erio)q
+(ds.)20 b(T)o(ypically)l(,)15 b(a)d(participan)o(t)h(sp)q(ends)g(t)o(w)o(o)
+964 2779 y(2)p eop
+%%Page: 3 3
+bop 0 45 a Fg(of)14 b(those)h(p)q(erio)q(ds)h(in)g(formal)e(class)i
+(meetings,)f(while)h(the)f(other)f(t)o(w)o(o)g(p)q(erio)q(ds)i(are)f(a)o(v)m
+(ailable)h(for)e(w)o(ork)g(in)i(the)0 141 y(computer)g(labs.)22
+b(\(W)l(e)15 b(use)i(sev)o(eral)e(labs,)i(some)e(con)o(taining)i(net)o(w)o
+(ork)o(ed)d(Apple)k(Macin)o(tosh)d(computers)h(and)0 236 y(the)e(others)f
+(using)i(net)o(w)o(ork)o(ed)d(IBM)i(PS/2)g(computers.\))19
+b(Ev)o(enings)14 b(are)f(for)g(reading,)i(recreation,)f(additional)0
+332 y(lab)i(time,)f(and)g(sc)o(heduled)i(guest)e(sp)q(eak)o(ers)g(and)h
+(similar)g(ev)o(en)o(ts.)91 431 y(The)f(division)h(of)e(the)h(da)o(y)f(b)q
+(et)o(w)o(een)g(formal)g(class)h(meetings)g(and)g(op)q(en)g(lab)g(times)g(ma)
+o(y)e(b)q(e)j(misleading,)0 526 y(b)q(ecause)h(ev)o(en)f(during)h(formal)f
+(classes)g(w)o(e)g(try)g(to)f(dev)o(ote)h(as)f(m)o(uc)o(h)h(time)h(as)e(p)q
+(ossible)j(to)e(collab)q(orativ)o(e)g(lab)0 622 y(w)o(ork)j(rather)h(than)h
+(to)e(lectures)j(or)e(demonstrations.)35 b(The)20 b(di\013erence)i(is)f(that)
+f(during)h(the)g(formal)f(class)0 717 y(sessions)d(all)g(mem)o(b)q(ers)f(of)g
+(a)g(class)h(are)f(presen)o(t)g(at)g(the)g(same)g(time,)h(along)f(with)h(a)f
+(facult)o(y)g(mem)o(b)q(er.)24 b(\(This)0 813 y(ideal)15 b(of)e(lab-based)i
+(classw)o(ork)f(is)g(not)f(p)q(erfectly)i(met.)k(A)14 b(few)g(of)f(the)h
+(IFSMA)o(CSE)f(classes)i(ha)o(v)o(e)e(relied)i(more)0 908 y(hea)o(vily)k(on)f
+(lectures)h(than)e(w)o(e'd)h(lik)o(e,)h(and)f(ev)o(en)h(in)f(the)g(most)f
+(exp)q(erien)o(tial)j(class)f(there)f(is)g(an)g(o)q(ccasional)0
+1004 y(summary)i(lecture.)36 b(But)20 b(w)o(e)h(try)e(to)h(in)o(tro)q(duce)h
+(new)g(concepts)g(through)f(\\guided)h(disco)o(v)o(ery")f(exercises,)0
+1099 y(sa)o(ving)15 b(the)g(lectures)h(for)f Ff(after)20 b
+Fg(the)c(exploration.\))91 1198 y(The)f(participan)o(ts)h(are)e(divided)k(in)
+o(to)d(mathematics)g(and)g(computer)g(science)h(strands.)k(In)15
+b(the)h(\014rst)e(t)o(w)o(o)0 1293 y(IFSMA)o(CSE)f(classes,)h(there)f(w)o
+(ere)g(t)o(w)o(o)f(mathematics)i(strands,)e(one)i(fo)q(cusing)g(on)f(new)h
+(topics)g(in)g(mathemat-)0 1389 y(ics,)h(and)g(the)f(other)h(on)f(the)h(use)g
+(of)f(computer)g(tec)o(hnology)h(in)h(learning)f(mathematics.)20
+b(These)15 b(w)o(ere)f(merged)0 1484 y(for)f(the)h(third)h(class,)f(starting)
+f(in)i(1991,)e(b)o(y)g(com)o(bining)j(courses)d(from)h(the)g(t)o(w)o(o)e
+(curricula.)21 b(The)14 b(IFSMA)o(CSE)0 1580 y(computer)g(science)i
+(curriculum)g(has)f(main)o(tained)g(the)f(same)g(general)h(structure)f(for)g
+(all)h(classes,)g(although)f(of)0 1675 y(course)h(some)g(of)g(the)g(details)h
+(ha)o(v)o(e)f(c)o(hanged.)91 1774 y(I)h(w)o(as)e(part)h(of)g(the)h(design)g
+(group)f(for)g(the)h(computer)f(science)i(strand)e(at)g(the)g(1987)g
+(planning)i(meeting,)0 1870 y(and)e(ha)o(v)o(e)g(taugh)o(t)f(ab)q(out)g(half)
+i(of)e(the)h(courses)g(in)h(that)e(strand)h(at)f(the)h(Institute.)20
+b(In)c(1990)e(I)h(w)o(as)f(app)q(oin)o(ted)0 1965 y(an)h(asso)q(ciate)g
+(director)h(of)f(IFSMA)o(CSE.)0 2094 y Fh(The)j(Computer)f(Science)h(Strand)
+91 2193 y Fg(Tw)o(o)13 b(o)o(v)o(erall)i(p)q(oin)o(ts)g(of)e(view)i(can)g(b)q
+(e)g(distinguished)i(in)e(computer)f(science)i(education)f([Harv)o(ey)l(,)f
+(1991].)0 2288 y(The)h(mainstream)f Ff(softwar)n(e)i(engine)n(ering)h
+Fg(approac)o(h)d(is)i(exempli\014ed)h(b)o(y)e(the)g(Computer)f(Science)j(Adv)
+m(anced)0 2384 y(Placemen)o(t)22 b(exam,)g(whic)o(h)g(emphasizes)h(sequen)o
+(tial,)h(pro)q(cedural)e(programming)f(metho)q(dology)h(and)f(top-)0
+2479 y(do)o(wn)16 b(design.)25 b(Courses)16 b(follo)o(wing)i(this)f(approac)o
+(h)f(are)g(t)o(ypically)i(taugh)o(t)e(using)h(P)o(ascal)f(or)g(Mo)q(dula-2.)
+25 b(An)0 2575 y(alternativ)o(e)16 b(view,)g(using)h Ff(symb)n(olic)f(pr)n(o)
+n(gr)n(amming)j Fg(ideas,)e(w)o(as)e(pioneered)i(at)e(the)h(Massac)o(h)o
+(usetts)e(Institute)0 2670 y(of)21 b(T)l(ec)o(hnology)h([Ab)q(elson)g(and)f
+(Sussman,)i(1985])c(and)j(emphasizes)g(functional)h(programming)d(st)o(yle)i
+(and)964 2779 y(3)p eop
+%%Page: 4 4
+bop 0 45 a Fg(in)o(teractiv)o(e)18 b(dev)o(elopmen)o(t.)26
+b(Courses)17 b(using)h(the)f(second)g(approac)o(h)g(are)g(often)g(taugh)o(t)f
+(in)i(Sc)o(heme)g(or)e(some)0 141 y(other)f(dialect)h(of)f(Lisp.)91
+236 y(In)k(designing)i(the)e(IFSMA)o(CSE)g(computer)g(science)h(curriculum,)i
+(the)d(participan)o(ts)g(at)f(the)h(planning)0 332 y(meeting)14
+b(w)o(an)o(ted)g(to)f(ensure)i(that)e(b)q(oth)h(approac)o(hes)g(w)o(ould)g(b)
+q(e)h(represen)o(ted.)20 b(\(Our)14 b(o)o(wn)f(p)q(ersonal)i(leanings)0
+427 y(w)o(ere)i(mixed.\))25 b(As)17 b(a)g(result,)h(Institute)f(participan)o
+(ts)h(tak)o(e)e(t)o(w)o(o)g(in)o(tro)q(ductory)g(programming)h(courses,)g
+(one)0 523 y(eac)o(h)k(summer;)i(the)e(\014rst)g(is)g(Logo-based)g(and)h(the)
+f(second)g(uses)g(P)o(ascal.)37 b(W)l(e)21 b(c)o(hose)g(Logo)g(rather)f(than)
+0 618 y(Sc)o(heme)14 b(to)e(represen)o(t)i(the)f(sym)o(b)q(olic)h
+(programming)f(approac)o(h)f(partly)i(b)q(ecause)g(the)f(Ab)q(elson)h(and)g
+(Sussman)0 714 y(text)f(is)i(more)e(adv)m(anced)i(than)f(what)f(w)o(e)g(w)o
+(an)o(ted)h(for)f(an)h(in)o(tro)q(ductory)f(high)i(sc)o(ho)q(ol)f(course;)g
+(partly)g(b)q(ecause)0 809 y(Logo)k(is)g(more)g(generally)h(kno)o(wn)f(in)h
+(sc)o(ho)q(ols;)h(and)e(partly)g(b)q(ecause)h(w)o(e)f(had)h(an)f(appropriate)
+g(Logo-based)0 905 y(text)d(a)o(v)m(ailable)i([Harv)o(ey)l(,)d(1985].)91
+1000 y(Eac)o(h)20 b(programming)f(course)i(extends)f(b)q(ey)o(ond)h(the)f
+(usual)h(high)g(sc)o(ho)q(ol)g(lev)o(el)g(of)f(sophistication,)i(al-)0
+1095 y(though)17 b(w)o(e)f(think)i(that)e(they)h(are)f(not)h(b)q(ey)o(ond)g
+(the)g(abilities)i(of)d(high)i(sc)o(ho)q(ol)f(studen)o(ts.)25
+b(The)17 b(Logo)f(course)0 1191 y(includes)i(v)o(ery)e(little)h(of)e(the)h
+(traditional)h(turtle)f(graphics)g(activities,)h(fo)q(cusing)g(instead)f(on)g
+(functional)h(pro-)0 1286 y(gramming)f(and)g(list)h(pro)q(cessing.)24
+b(Adv)m(anced)18 b(ideas)e(suc)o(h)h(as)f(recursion)h(and)f(higher-order)h
+(functions)g(\(that)0 1382 y(is,)e(functions)h(that)e(op)q(erate)h(on)g
+(other)g(functions)h(as)e(data\))g(are)h(c)o(hallenging)i(to)d(the)h
+(participan)o(ts,)g(but)h(once)0 1477 y(learned,)23 b(they)f(allo)o(w)f
+(complicated)i(problems)f(to)e(b)q(e)i(solv)o(ed)g(elegan)o(tly)g(and)f(with)
+h(minimal)h(e\013ort.)37 b(F)l(or)0 1573 y(example,)16 b(consider)g(this)f
+(short)g(program)f(in)i(the)f(Berk)o(eley)h(Logo)f(dialect:)0
+1679 y Fe(TO)24 b(CHOOSE)f(:MENU)g([:SOFAR)g([]])0 1734 y(IF)h(EMPTYP)f
+(:MENU)g([PRINT)g(:SOFAR)g(STOP])0 1788 y(FOREACH)g(FIRST)g(:MENU)g
+([\(CHOOSE)g(BUTFIRST)g(:MENU)g(SENTENCE)g(:SOFAR)g(?\)])0
+1843 y(END)0 1950 y Fg(This)12 b(pro)q(cedure)g(con)o(tains)g(only)g(t)o(w)o
+(o)e(instruction)i(lines,)h(but)f(it)f(uses)h(b)q(oth)f(recursion)h(\(the)g
+(pro)q(cedure)g Fe(CHOOSE)0 2045 y Fg(is)h(in)o(v)o(ok)o(ed)f(within)i
+(itself)t(\))e(and)h(the)f(higher-order)h(to)q(ol)g Fe(FOREACH)e
+Fg(\(applying)j(an)e(instruction)h(to)f(eac)o(h)g(elemen)o(t)0
+2141 y(of)i(a)g(list\))h(to)f(solv)o(e)g(a)g(tree-structured)h(problem.)20
+b(When)15 b(in)o(v)o(ok)o(ed)g(with)f(a)h(\\men)o(u")f(of)g(indep)q(enden)o
+(t)i(c)o(hoices,)0 2236 y(it)f(prin)o(ts)h(ev)o(ery)f(p)q(ossible)i(com)o
+(bination)f(of)f(c)o(hoices,)g(lik)o(e)i(this:)0 2343 y Fe(?)24
+b(CHOOSE)f([[SMALL)g(MEDIUM)g(LARGE])g([VANILLA)g([RUM)g(RAISIN])g(GINGER)g
+(RASPBERRY])239 2397 y([CONE)g(CUP]])0 2452 y(SMALL)g(VANILLA)g(CONE)0
+2506 y(SMALL)g(VANILLA)g(CUP)0 2561 y(SMALL)g(RUM)h(RAISIN)f(CONE)0
+2615 y(SMALL)g(RUM)h(RAISIN)f(CUP)0 2670 y(SMALL)g(GINGER)g(CONE)964
+2779 y Fg(4)p eop
+%%Page: 5 5
+bop 0 45 a Fe(SMALL)23 b(GINGER)g(CUP)0 100 y(SMALL)g(RASPBERRY)g(CONE)0
+155 y(SMALL)g(RASPBERRY)g(CUP)0 209 y(MEDIUM)g(VANILLA)g(CONE)0
+264 y(MEDIUM)g(VANILLA)g(CUP)0 318 y(MEDIUM)g(RUM)g(RAISIN)h(CONE)0
+373 y(MEDIUM)f(RUM)g(RAISIN)h(CUP)0 427 y(MEDIUM)f(GINGER)g(CONE)0
+482 y(MEDIUM)g(GINGER)g(CUP)0 536 y(MEDIUM)g(RASPBERRY)g(CONE)0
+591 y(MEDIUM)g(RASPBERRY)g(CUP)0 645 y(LARGE)g(VANILLA)g(CONE)0
+700 y(LARGE)g(VANILLA)g(CUP)0 755 y(LARGE)g(RUM)h(RAISIN)f(CONE)0
+809 y(LARGE)g(RUM)h(RAISIN)f(CUP)0 864 y(LARGE)g(GINGER)g(CONE)0
+918 y(LARGE)g(GINGER)g(CUP)0 973 y(LARGE)g(RASPBERRY)g(CONE)0
+1027 y(LARGE)g(RASPBERRY)g(CUP)0 1139 y Fg(\(In)15 b(dialects)h(of)e(Logo)g
+(other)g(than)g(Berk)o(eley)i(Logo)e(and)g(Ob)s(ject)h(Logo,)f(the)g
+Fe(FOREACH)g Fg(to)q(ol)g(is)h(not)g(automati-)0 1234 y(cally)h(pro)o(vided,)
+g(but)f(it)h(can)f(b)q(e)h(written)f(in)h(Logo.\))91 1332 y(The)j(P)o
+(ascal-based)h(course)g(in)g(the)f(second)h(summer)f(is)h(divided)h(in)o(to)f
+(t)o(w)o(o)e(three-w)o(eek)h(comp)q(onen)o(ts.)0 1427 y(The)13
+b(\014rst)f(is)h(an)g(in)o(tro)q(duction)g(to)f(the)h(P)o(ascal)g(language)f
+(comparable)h(in)h(scop)q(e)f(to)f(the)h(Adv)m(anced)h(Placemen)o(t)0
+1523 y(course.)21 b(The)16 b(second)g(is)g(a)f(course)h(on)f(algorithms)h
+(and)g(data)f(structures,)g(roughly)g(lik)o(e)i(the)f(t)o(ypical)g(\\CS)g(2")
+0 1618 y(undergraduate)i(course.)29 b(\(F)l(or)18 b(example,)h(last)f
+(summer's)g(o\013ering)g(used)h(the)f(con)o(v)o(ex)g(h)o(ull)i(problem)f(as)f
+(its)0 1714 y(\014rst)g(lab)q(oratory)f(assignmen)o(t.)28 b(This)19
+b(is)g(the)f(problem)h(of)e(\014nding)j(whic)o(h)f(p)q(oin)o(ts,)f(out)g(of)g
+(an)g(arbitrary)f(set)0 1809 y(of)f(p)q(oin)o(ts)h(c)o(hosen)g(in)g(the)g
+(plane,)h(w)o(ould)f(b)q(e)g(touc)o(hed)g(b)o(y)f(a)h(rubb)q(er)g(band)g
+(that)f(w)o(as)g(stretc)o(hed)g(around)h(the)0 1904 y(en)o(tire)j(set)f(and)g
+(then)g(allo)o(w)o(ed)h(to)f(con)o(tract.\))30 b(It)19 b(ma)o(y)g(seem)g
+(remark)m(able)h(to)e(co)o(v)o(er)h(the)g(A.P)l(.)g(syllabus)h(in)0
+2000 y(three)14 b(w)o(eeks,)f(but)h(the)f(participan)o(ts)h(are)g(w)o(orking)
+f(full-time)i(on)f(computer)f(science,)i(and)f(they)g(ha)o(v)o(e)f(already)0
+2095 y(had)i(an)g(adv)m(anced)h(Logo)e(programming)h(course)g(the)g(previous)
+g(y)o(ear.)20 b(The)15 b(algorithms)g(course)g(is)g(taugh)o(t)f(b)o(y)0
+2191 y(Selim)k(Akl,)f(a)f(professor)g(at)g(Queen's)h(Univ)o(ersit)o(y)g(in)h
+(On)o(tario)e(and)h(the)f(author)g(of)g(three)h(texts)f(in)h(the)g(area)0
+2286 y(of)h(algorithms)g([Akl,)h(1985;)g(Akl,)g(1989;)g(Akl,)g(1992].)28
+b(The)19 b(in)o(tro)q(duction)g(to)f(P)o(ascal)g(has)g(b)q(een)i(taugh)o(t)d
+(b)o(y)0 2382 y(Mic)o(hael)f(Levy)l(,)g(professor)e(at)h(the)g(Univ)o(ersit)o
+(y)h(of)f(Victoria,)h(and)f(b)o(y)g(Darrell)h(T)l(urnidge,)g(an)f(Assistan)o
+(t)g(Dean)0 2477 y(of)g(Arts)f(and)i(Sciences)h(at)d(Ken)o(t)i(State)e(Univ)o
+(ersit)o(y)i(and)g(an)f(asso)q(ciate)g(director)g(of)g(IFSMA)o(CSE.)91
+2575 y(Eac)o(h)h(summer's)g(programming)g(course)g(runs)h(in)g(parallel)h
+(with)e(a)g(second)h(course)g(in)g(whic)o(h)g(program-)0 2670
+y(ming)g(is)f(not)g(the)g(fo)q(cus,)g(although)g(programming)g(ma)o(y)f(b)q
+(e)i(used)f(as)g(a)g(learning)h(to)q(ol.)23 b(The)16 b(\014rst)f(summer's)964
+2779 y(5)p eop
+%%Page: 6 6
+bop 0 45 a Fg(course)15 b(is)g(ab)q(out)g(the)g(use)g(of)g(computing)g(in)h
+(sc)o(ho)q(ols)f(outside)g(of)g(computer)g(science)h(prop)q(er.)k(This)c
+(course)e(is)0 141 y(o\013ered)i(b)q(ecause)h(a)e(high)i(sc)o(ho)q(ol's)f
+(computer)g(science)i(teac)o(her)e(is)g(lik)o(ely)i(also)e(to)f(b)q(e)i(the)f
+(computing)h(exp)q(ert)0 236 y(who)11 b(is)h(consulted)h(ab)q(out)e(ev)o(ery)
+g(asp)q(ect)h(of)f(educational)h(computing.)20 b(This)12 b(is)f(the)h(course)
+f(in)i(the)e(IFSMA)o(CSE)0 332 y(computer)16 b(science)i(strand)e(that)f(has)
+h(c)o(hanged)h(most)e(o)o(v)o(er)g(the)i(three)f(summers)g(in)h(resp)q(onse)g
+(to)e(pragmatic)0 427 y(needs.)32 b(As)19 b(originally)i(designed,)f(the)g
+(course)f(had)g(t)o(w)o(o)e(three-w)o(eek)i(sections.)32 b(The)19
+b(\014rst)g(w)o(as)f(ab)q(out)h(the)0 523 y(tec)o(hnical)g(\\n)o(uts)e(and)h
+(b)q(olts")g(of)f(using)i(computers:)e(w)o(ord)g(pro)q(cessing,)i
+(spreadsheets,)f(and)g(so)f(on,)h(as)f(w)o(ell)0 618 y(as)e(hin)o(ts)h(ab)q
+(out)g(c)o(ho)q(osing)g(hardw)o(are,)e(net)o(w)o(orking,)h(and)h(similar)g
+(issues.)22 b(The)16 b(second)g(three)g(w)o(eeks)f(w)o(as)g(an)0
+714 y(o)o(v)o(erview)j(of)g(the)g(use)g(of)g(computing)g(throughout)g(the)g
+(curriculum,)i(com)o(bining)g(general)e(readings)h(with)f(a)0
+809 y(sampler)e(of)e(activities)j(from)d(v)m(arious)i(discipline)q(s.)91
+928 y(This)k(original)h(design)g(has)f(c)o(hanged)g(for)f(t)o(w)o(o)g
+(reasons.)33 b(The)21 b(\014rst)e(w)o(as)g(that)g(the)h(\\n)o(uts)g(and)g(b)q
+(olts")0 1024 y(w)o(ork)f(turned)h(out)f(to)g(b)q(e)h(so)f(p)q(opular)i(that)
+d(participan)o(ts)i(in)h(the)e(mathematics)h(strands)f(w)o(an)o(ted)g(to)g
+(tak)o(e)0 1119 y(the)g(course)f(also.)31 b(It)18 b(is)i(taugh)o(t)d(b)o(y)i
+(Bill)i(Hun)o(t,)e(a)f(Macin)o(tosh)g(virtuoso,)h(who)g(is)g(Director)f(of)h
+(T)l(ec)o(hnology)0 1215 y(for)d(the)g(Ma)o(y\014eld,)h(Ohio)h(Cit)o(y)e(Sc)o
+(ho)q(ols)h(and)g(a)f(winner)h(of)f(the)h(Presiden)o(tial)h(Aw)o(ard)e(for)g
+(Excellence)j(in)e(the)0 1310 y(T)l(eac)o(hing)j(of)e(Mathematics.)31
+b(T)l(o)19 b(mak)o(e)f(Bill's)j(w)o(orkshop)d(a)o(v)m(ailable)i(to)f(all)h
+(participan)o(ts,)g(starting)e(in)i(the)0 1405 y(second)c(summer)f(it)g(w)o
+(as)g(mo)o(v)o(ed)f(in)o(to)h(the)h(ev)o(ening)g(program.)91
+1525 y(The)j(second)g(half)g(of)g(the)f(original)i(design)g(w)o(as)e
+(expanded)i(to)e(\014ll)i(part)e(of)g(the)h(hole)h(th)o(us)e(left)h(in)h(the)
+0 1620 y(computer)15 b(science)i(sc)o(hedule.)22 b(The)16 b(course)f(is)h
+(taugh)o(t)e(b)o(y)i(P)o(aul)f(Golden)o(b)q(erg,)h(who)f(has)g(taugh)o(t)g
+(at)f(all)j(lev)o(els)0 1715 y(from)11 b(second)i(grade)e(through)h(graduate)
+f(sc)o(ho)q(ol)h(and)g(is)g(no)o(w)g(a)f(Senior)i(Scien)o(tist)g(at)e
+(Education)i(Dev)o(elopmen)o(t)0 1811 y(Cen)o(ter)k(in)h(Massac)o(h)o
+(usetts.)25 b(P)o(aul)17 b(has)h(enric)o(hed)g(the)g(course)f(in)h(t)o(w)o(o)
+e(w)o(a)o(ys.)25 b(First,)18 b(he)f(is)h(himself)h(a)e(dev)o(el-)0
+1906 y(op)q(er)d(of)f(computer-based)h(curriculum)h(in)f(sev)o(eral)g(areas,)
+f(including)j(sp)q(ecial)f(education)g([Golden)o(b)q(erg,)e(1979;)0
+2002 y(Golden)o(b)q(erg,)h(et.)19 b(al.,)14 b(1984],)e(linguistics)k([Golden)
+o(b)q(erg)d(and)h(F)l(eurzeig,)g(1987],)e(and)i(fractal)f(geometry)g([Gold-)0
+2097 y(en)o(b)q(erg,)i(1989].)k(Second,)d(as)f(an)h(exp)q(erienced)i(pro)q
+(cess)d(group)g(leader)i(with)e(psyc)o(ho)q(dynamic)i(training,)f(P)o(aul)0
+2193 y(has)h(in)o(tro)q(duced)g(a)g(group)f(discussion)i(comp)q(onen)o(t)f
+(to)f(the)h(course.)24 b(He)17 b(divides)i(the)e(participan)o(ts)g(in)o(to)f
+(t)o(w)o(o)0 2288 y(groups)g(of)f(15;)h(while)h(one)g(group)e(is)i(w)o
+(orking)f(indep)q(enden)o(tly)j(in)d(the)h(computer)f(lab,)g(the)g(other)g
+(is)g(meeting)0 2384 y(with)h(P)o(aul)f(for)g(a)g(wide-ranging)h(discussion)h
+(of)e(participan)o(ts')h(concerns)g(ab)q(out)f(educational)h(issues.)25
+b(These)0 2479 y(discussions)20 b(ha)o(v)o(e)e(no)h(predetermined)h(agenda,)f
+(and)g(their)g(c)o(haracter)f(has)g(b)q(een)i(v)o(ery)e(di\013eren)o(t)h
+(from)f(one)0 2575 y(group)c(to)g(another,)g(but)h(they)g(are)f(alw)o(a)o(ys)
+g(strongly)g(connected)i(with)f(other)f(parts)g(of)g(the)h(IFSMA)o(CSE)f
+(pro-)0 2670 y(gram)h(and)h(help)i(participan)o(ts)e(understand)h(more)e
+(fully)j(the)e(p)q(edagogic)h(implications)h(of)d(their)i(exp)q(eriences)964
+2779 y(6)p eop
+%%Page: 7 7
+bop 0 45 a Fg(as)15 b(learners)h(for)e(their)i(later)f(w)o(ork)f(as)h(teac)o
+(hers.)91 145 y(The)e(non-programming)f(course)h(in)h(the)f(second)g(summer)g
+(is)g(a)g(sampler)g(of)f(topics)h(in)h(computer)f(science,)0
+241 y(including)g(automata)c(theory)l(,)i(discrete)g(mathematics,)g
+(programming)f(languages,)h(and)f(arti\014cial)i(in)o(telligence)0
+336 y([Harv)o(ey)l(,)i(1987].)k(The)d(rationale)g(for)f(this)h(course)g(is)g
+(that)f(man)o(y)g(studen)o(ts)g(lea)o(v)o(e)h(high)h(sc)o(ho)q(ol)f(thinking)
+h(that)0 432 y(a)g(computer)h(scien)o(tist)h(is)f(someone)g(who)f(kno)o(ws)g
+(t)o(w)o(o)g(dozen)h(programming)f(languages,)h(and)g(with)g(no)g(idea)0
+527 y(ab)q(out)c(the)g(range)f(of)h(topics)g(they'll)h(meet)f(in)h(college.)
+20 b(As)13 b(in)h(IFSMA)o(CSE's)e(mathematics)h(courses,)g(the)g(goal)0
+622 y(is)18 b(to)f(use)h(the)g(computer)g(as)f(a)g(medium)i(that)e(allo)o(ws)
+h(an)g(exp)q(erimen)o(tal)h(approac)o(h)e(to)g(otherwise)h(abstract)0
+718 y(ideas.)31 b(F)l(or)18 b(example,)i(participan)o(ts)f(explore)g
+(automata)e(theory)h(using)i(t)o(w)o(o)d(computer)i(programs,)f(one)g(of)0
+813 y(whic)o(h)e(sim)o(ulates)g(a)f(\014nite)h(state)e(mac)o(hine,)i(while)g
+(the)f(other)g(translates)g(a)g(regular)g(expression)h(in)o(to)f(a)g
+(\014nite)0 909 y(state)g(mac)o(hine.)21 b(Before)16 b(there)f(is)h(an)o(y)f
+(in)o(tro)q(duction)i(of)e(tec)o(hnical)i(v)o(o)q(cabulary)l(,)e(participan)o
+(ts)h(use)g(the)f(FSM)0 1004 y(sim)o(ulator)k(to)f(pla)o(y)h(a)g(sort)f(of)g
+(\\guess)h(m)o(y)f(rule")i(game)e(in)i(whic)o(h)f(the)g(rules)h(sp)q(ecify)g
+(allo)o(w)o(able)g(strings)e(of)0 1100 y(letters)e(using)h(only)g(the)f
+(letters)g(A,)g(B,)g(and)g(C.)f(\(One)i(p)q(ossible)h(rule)f(is)f(that)g(the)
+g(string)g(m)o(ust)g(start)e(with)j(A)0 1195 y(and)d(end)h(with)g(C.\))e(FSM)
+g(notation)h(is)h(in)o(tro)q(duced)g(as)f(a)g(w)o(a)o(y)f(to)g(express)h(the)
+h(game)e(rules)i(in)g(an)f(algorithmic)0 1291 y(form|one)h(that)g(a)f
+(computer)i(can)f(use)g(directly)i(to)e(c)o(hec)o(k)g(whether)g(a)g(giv)o(en)
+h(string)f(follo)o(ws)g(a)g(giv)o(en)h(rule.)0 1421 y Fh(Success)h(with)h
+(Exp)q(erien)o(tial)h(Learning)91 1520 y Fg(The)11 b(Adv)m(anced)h(T)l(opics)
+g(course)f(includes)i(t)o(w)o(o)c(asp)q(ects)i(of)g(programming)f(languages.)
+18 b(There)12 b(is)f(a)f(section)0 1616 y(ab)q(out)18 b(language)g(design,)i
+(in)f(whic)o(h)g(tec)o(hnical)h(issues)f(suc)o(h)f(as)g(scop)q(e)h(of)f(v)m
+(ariables)h(and)g(call)g(b)o(y)f(reference)0 1711 y(are)i(considered)h(in)g
+(the)g(con)o(text)e(of)h(a)g(comparison)g(b)q(et)o(w)o(een)h(Logo)e(and)i(P)o
+(ascal.)34 b(A)21 b(second)f(section,)i(on)0 1807 y(compiler)c(construction,)
+f(is)g(illustrated)h(with)g(a)e(recursiv)o(e)h(descen)o(t)h(compiler)g(for)e
+(P)o(ascal)g(written)h(in)h(Logo.)0 1902 y(\(The)h(ob)s(ject)g(language,)h
+(in)o(to)g(whic)o(h)g(a)f(P)o(ascal)g(program)f(is)i(translated,)g(is)g(also)
+f(Logo.)32 b(This)20 b(mak)o(es)f(the)0 1998 y(compiler)c(somewhat)e
+(unrealistic)j(but)d(also)h(k)o(eeps)g(it)g(p)q(ortable)g(and)g(mak)o(es)g
+(it)g(p)q(ossible)h(to)e(discuss)i(fron)o(t-end)0 2093 y(parsing)g(issues)h
+(without)g(ha)o(ving)f(to)g(learn)g(ab)q(out)h(nativ)o(e)f(mac)o(hine)h
+(languages.\))91 2193 y(I)k(ha)o(v)o(e)f(taugh)o(t)g(this)h(course)f(t)o
+(wice)h(at)f(IFSMA)o(CSE.)g(The)h(\014rst)f(time,)h(I)g(hadn't)g(managed)f
+(to)g(in)o(v)o(en)o(t)0 2288 y(exp)q(erimen)o(ts)i(for)e(the)h(participan)o
+(ts)g(to)f(use)h(in)h(exploring)g(the)f(ideas.)34 b(In)20 b(fact,)g(I)g
+(didn't)h(think)f(an)o(y)g(suc)o(h)0 2384 y(activities)d(w)o(ere)e(p)q
+(ossible)j(for)d(the)h(\014rst)f(part,)g(on)h(language)g(design.)22
+b(I)17 b(did)f(ha)o(v)o(e)g(ideas)g(for)f(activities)i(in)g(the)0
+2479 y(second)i(part,)e(but)i(those)f(ideas)g(w)o(ere)g(mostly)g(extensions)h
+(to)e(the)i(already-written)f(P)o(ascal)g(compiler,)i(and)0
+2575 y(required)14 b(that)f(the)g(participan)o(ts)h(already)f(understand)h
+(the)f(structure)g(of)g(the)g(program.)18 b(Therefore,)13 b(I)h(ended)0
+2670 y(up)k(doing)f(a)g(lot)g(of)g(lecturing)h(during)g(those)f(w)o(eeks.)26
+b(The)17 b(participan)o(ts,)h(who)f(had)g(felt)g(quite)h(comfortable)964
+2779 y(7)p eop
+%%Page: 8 8
+bop 0 45 a Fg(with)15 b(automata)e(theory)i(and)g(discrete)g(mathematics)g(b)
+q(ecause)h(of)e(the)h(activit)o(y-based)g(approac)o(h,)g(ended)g(up)0
+141 y(feeling)i(that)d(the)h(topic)h(of)f(programming)f(languages)i(w)o(as)e
+(to)q(o)h(hard)g(for)f(them.)91 245 y(The)g(second)g(summer,)g(b)q(efore)g
+(an)o(y)f(discussion)j(of)d(programming)g(language)h(design,)h(I)f(ga)o(v)o
+(e)f(the)h(partic-)0 341 y(ipan)o(ts)f(the)g(follo)o(wing)h(assignmen)o(t:)19
+b(\\W)l(rite)13 b(programs)f(for)g(eac)o(h)h(of)g(the)g(follo)o(wing)h(in)g
+(as)f(man)o(y)f(languages)h(as)0 436 y(p)q(ossible.)21 b(F)l(eel)15
+b(free)e(to)h(consult)g(with)g(other)f(p)q(eople)i(who)f(kno)o(w)f(these)h
+(languages)g(b)q(etter)f(than)h(y)o(ou)f(do.)20 b(Y)l(ou)0
+532 y(should)c(at)e(least)h(b)q(e)h(able)f(to)g(do)g(Logo)f(and)h(P)o(ascal;)
+g(other)f(p)q(ossibilities)k(are)d(Sc)o(heme,)g(ISETL,)g(and)h(BASIC.)0
+627 y(Some)f(programs)f(ma)o(y)h(turn)g(out)g(to)f(b)q(e)i(imp)q(ossible)i
+(in)e(some)e(languages.")196 709 y(1.)20 b(Mergesort)14 b(an)h(arra)o(y)f(or)
+h(a)f(list)i(of)f(n)o(um)o(b)q(ers.)196 790 y(2.)20 b(Sh)o(u\017e)c(an)f
+(arra)o(y)f(or)g(a)h(list)h(of)f(n)o(um)o(b)q(ers.)196 872
+y(3.)20 b(Exc)o(hange)15 b(the)g(v)m(alues)i(of)e(t)o(w)o(o)e(v)m(ariables.)
+196 953 y(4.)20 b(T)l(ak)o(e)15 b(a)g(function)h Fd(F)21 b
+Fg(as)15 b(input;)h(output)f(the)g(function)h(that)f(computes)g
+Fd(F)6 b Fg(\()p Fd(F)g Fg(\()p Fd(x)p Fg(\)\))15 b(for)g(input)h
+Fd(x)p Fg(.)196 1035 y(5.)k(Compute)15 b(all)h(the)f(prime)h(n)o(um)o(b)q
+(ers)g(less)g(than)f(an)g(input)h Fd(N)5 b Fg(.)19 b(\(Output)d(an)f(arra)o
+(y)f(or)g(a)h(list.\))196 1116 y(6.)20 b(Compute)15 b(all)h(the)f(factors)f
+(of)h(an)g(input)i Fd(N)5 b Fg(.)91 1221 y(P)o(articipan)o(ts)11
+b(w)o(ere)f(already)i(familiar)f(with)h(Logo)e(\(a)g(list-based)j(language\))
+d(and)h(P)o(ascal)g(\(an)g(arra)o(y-based)0 1316 y(language\).)24
+b(ISETL)18 b(is)f(a)f(functional)i(language)f(with)g(a)g(notation)f(designed)
+i(to)e(b)q(e)i(v)o(ery)e(close)h(to)f(standard)0 1411 y(mathematical)g
+(notation,)g(in)g(whic)o(h)h(the)f(main)h(data)e(aggregate)g(is)h(the)g
+Ff(set)p Fg(,)f(essen)o(tially)j(an)e(unordered)h(list.)0 1507
+y(ISETL)d(is)f(not)f(taugh)o(t)g(in)i(the)f(computer)g(science)h(strand,)f
+(but)g(is)g(hea)o(vily)h(used)g(in)f(the)g(mathematics)g(strand,)0
+1602 y(so)g(the)g(CS)g(participan)o(ts)g(w)o(ere)g(encouraged)g(to)f(consult)
+i(their)f(friends)h(in)g(the)f(other)g(group.)19 b(Sc)o(heme)13
+b(had)g(not)0 1698 y(previously)k(b)q(een)g(used)f(b)o(y)f(either)h(strand,)f
+(but)h(it)g(w)o(as)f(installed)i(on)f(the)f(computer)h(net)o(w)o(ork)e(for)h
+(this)h(w)o(eek)0 1793 y(and)f(I)h(used)g(t)o(w)o(o)e(class)h(sessions)h(to)e
+(demonstrate)h(it)g(and)h(encourage)f(the)g(participan)o(ts)h(to)e(pla)o(y)i
+(with)f(it.)91 1898 y(P)o(articipan)o(ts)e(v)m(aried)i(widely)g(in)f(the)g
+(degree)g(to)f(whic)o(h)h(they)g(completed)g(the)g(assignmen)o(t,)f(whic)o(h)
+h(called)0 1993 y(for)d(six)h(programs)f(in)h(eac)o(h)g(of)f(\014v)o(e)h
+(languages.)19 b(But)12 b(one)f(of)h(the)f(great)g(virtues)h(of)f(the)h(exp)q
+(erimen)o(tal)h(approac)o(h)0 2088 y(is)19 b(that)g(it)g(isn't)g(necessary)g
+(for)f(a)g(learner)i(to)e(complete)i(assignmen)o(ts!)30 b(An)o(y)19
+b(participan)o(t)h(who)e(made)h(an)o(y)0 2184 y(serious)d(e\013ort)e(at)h
+(all)i(quic)o(kly)g(sa)o(w)d(that)h(only)h(languages)g(with)g(\014rst-class)g
+(functions,)g(suc)o(h)f(as)h(Sc)o(heme)g(and)0 2279 y(ISETL,)j(allo)o(w)g
+(the)f(fourth)g(problem)h(to)f(b)q(e)h(solv)o(ed.)30 b(Most)18
+b(participan)o(ts|ev)o(en)i(if)f(their)g(programs)e(nev)o(er)0
+2375 y(w)o(ork)o(ed|sa)o(w)11 b(that)g(lists)i(are)e(easier)h(to)g(mergesort)
+f(than)g(arra)o(ys,)g(but)h(arra)o(ys)f(are)g(easier)i(to)e(sh)o(u\017e.)19
+b(Filtering)0 2470 y(problems)d(suc)o(h)f(as)f(the)i(last)e(t)o(w)o(o)g(are)h
+(naturally)g(expressed)h(\\all)g(at)e(once")h(in)h(languages)f(with)g
+(higher-order)0 2566 y(functions,)h(but)f(are)g(expressed)h(as)f(iterativ)o
+(e)g(lo)q(ops)h(in)g(languages)f(that)f(emphasize)j(iteration.)91
+2670 y(A)12 b(similar)h(activit)o(y-\014rst)f(approac)o(h)g(also)g(rescued)h
+(the)f(compiler)h(unit.)20 b(I)12 b(had)g(originally)i(c)o(hosen)f(to)e(w)o
+(ork)964 2779 y(8)p eop
+%%Page: 9 9
+bop 0 45 a Fg(with)13 b(a)f(P)o(ascal)g(compiler)h(in)h(order)e(to)f
+(demonstrate)h(the)g(nature)h(of)f(lexical)i(scop)q(e.)19 b(But)13
+b(the)f(v)o(ery)g(complexit)o(y)0 141 y(of)k(this)i(issue,)g(and)f(the)g
+(corresp)q(onding)h(recursiv)o(e)f(structure)g(of)f(the)h(compiler,)i(made)e
+(this)g(a)f(bad)i(starting)0 236 y(p)q(oin)o(t)d(for)e(an)h(activit)o(y)g
+(approac)o(h;)g(the)g(participan)o(ts)h(w)o(ould)f(nev)o(er)g(ha)o(v)o(e)g
+(written)g(a)g(P)o(ascal)g(compiler)h(from)e(a)0 332 y(blank)i(start.)j
+(Instead,)c(w)o(e)g(b)q(egan)g(the)g(w)o(eek)f(b)o(y)h(taking)g(on)g(the)g
+(easier)g(task)f(of)g(a)h(BASIC)h(compiler.)20 b(BASIC)0 427
+y(is)e(structurally)g(simple)h(b)q(ecause)f(eac)o(h)g(instruction)g(line)h(b)
+q(egins)g(\(not)e(coun)o(ting)g(the)h(line)h(n)o(um)o(b)q(er\))e(with)h(a)0
+523 y(k)o(eyw)o(ord)f(\(suc)o(h)g(as)g Fe(LET)g Fg(or)f Fe(PRINT)p
+Fg(\))h(that)f(sp)q(eci\014es)j(the)f(kind)g(of)f(instruction)h(on)f(the)h
+(line.)27 b(The)18 b(computer)0 618 y(lab)e(w)o(as)g(arranged)f(as)g(\014v)o
+(e)h(large)g(clusters)h(of)e(tables,)h(eac)o(h)g(with)h(ab)q(out)e(six)i
+(participan)o(ts.)22 b(I)16 b(assigned)h(eac)o(h)0 714 y(group)e(a)g
+(statemen)o(t)f(t)o(yp)q(e,)h(and)g(told)h(them)f(to)f(write)i(a)f(pro)q
+(cedure)h(that)e(w)o(ould)i(tak)o(e)e(a)h(BASIC)h(instruction)0
+809 y(line)21 b(as)e(its)h(input,)h(and)f(w)o(ould)g(de\014ne)h(a)e(Logo)g
+(pro)q(cedure)h(to)f(carry)g(out)g(the)h(instruction.)34 b(W)l(e)19
+b(deferred)0 905 y(un)o(til)e(later)f(the)h(top-lev)o(el)g(structure)f(that)f
+(w)o(ould)i(in)o(v)o(ok)o(e)f(their)h(pro)q(cedures)g(and)f(assem)o(ble)h
+(the)f(completed)0 1000 y(program.)j(\(As)14 b(it)h(turned)g(out,)f(I)i
+(decided)g(to)f(write)g(this)g(part)f(m)o(yself)h(b)q(ecause)h(it)f(in)o(v)o
+(olv)o(ed)h(a)e(few)h(anno)o(ying)0 1095 y(tec)o(hnical)i(issues)f(and)f(no)g
+(real)h(in)o(tellectual)h(ones.\))91 1215 y(In)c(a)g(w)o(eek)f(of)h(w)o(ork,)
+e(w)o(e)i(nev)o(er)g(did)g(put)g(together)f(a)h(complete)g(compiler.)20
+b(But)13 b(the)g(participan)o(ts)g(all)h(had)0 1310 y(to)h(w)o(ork)g(out)g
+(sev)o(eral)h(issues)g(in)h(their)f(understanding)h(of)e(ho)o(w)g(to)g(write)
+h(one.)21 b(The)16 b(biggest)g(issue)h(w)o(as)d(their)0 1405
+y(tendency)i(to)f(confuse)g(the)h(v)m(ariables)g(that)f(are)g(part)f(of)h
+(the)g(compiler)i(itself)f(with)f(v)m(ariables)i(that)d(b)q(elong)j(to)0
+1501 y(the)h(compiled)h(program.)26 b(This)18 b(confusion)h(w)o(ork)o(ed)d(b)
+q(oth)i(w)o(a)o(ys;)f(they)h(w)o(ould)g(try)f(to)g(examine)h(during)h(the)0
+1596 y(compilation)c(pro)q(cess)e(v)m(ariables)i(that)e(w)o(ouldn't)g(exist)h
+(un)o(til)g(the)g(program)e(w)o(as)h(run,)g(but)h(they)f(also)g(put)h(in)o
+(to)0 1692 y(the)g(compiled)i(co)q(de)f(references)f(to)g(v)m(ariables)h
+(within)g(the)f(compiler.)21 b(Ev)o(ery)14 b(group)f(did)j(adv)m(ance)e
+(their)h(w)o(ork)0 1787 y(to)g(the)g(p)q(oin)o(t)h(at)f(whic)o(h)h(this)g
+(confusion)g(w)o(as)e(clari\014ed.)22 b(The)16 b(issue)g(is)g(a)f(profound)h
+(one.)k(A)15 b(compiler)i(breaks)0 1883 y(do)o(wn)e(the)g(simplistic)j(w)o
+(all)d(b)q(et)o(w)o(een)h(program)e(and)h(data)g(in)h(the)f(minds)h(of)f(b)q
+(eginning)i(programmers.)91 2002 y(Another)c(issue)h(that)f(came)g(up)h(in)g
+(the)g(participan)o(ts')f(w)o(ork)g(w)o(as)f(tok)o(enization.)20
+b(The)13 b(tok)o(enization)h(rules)0 2097 y(for)j(Logo)f(are)h(v)o(ery)g
+(similar)i(to)d(those)h(of)g(BASIC;)h(for)f(example,)h(the)f(arithmetic)h(op)
+q(erators)e(are)h(tok)o(ens)g(in)0 2193 y(themselv)o(es.)j(But)14
+b(there)g(are)f(a)h(few)g(di\013erences.)20 b(The)14 b(most)g(imp)q(ortan)o
+(t)f(turned)h(out)g(to)f(b)q(e)h(that)g(the)g(comma)0 2288
+y(is)h(a)g(delimiter)i(in)e(BASIC)h(but)f(not)f(in)i(Logo.)j(The)c(groups)g
+(w)o(orking)f(on)h(the)g Fe(INPUT)f Fg(and)h Fe(PRINT)f Fg(statemen)o(ts)0
+2384 y(quic)o(kly)k(got)e(b)q(ogged)h(do)o(wn)g(in)g(trying)g(to)f(extract)g
+(commas)g(from)g(w)o(ords.)24 b(I)18 b(suggested)e(that)g(these)h(groups)0
+2479 y(split)e(their)g(e\013orts;)e(one)h(subgroup)g(w)o(ould)g(compile)i
+(the)e(statemen)o(ts)f(assuming)h(that)g(an)o(y)f(comma)h(w)o(ould)g(b)q(e)0
+2575 y(seen)h(as)e(a)h(separate)g(w)o(ord)f(just)h(as)g(a)g(plus)h(sign)f(w)o
+(ould)h(b)q(e,)g(while)g(the)f(other)g(subgroup)g(w)o(ork)o(ed)g(only)g(on)h
+(this)0 2670 y(tok)o(enization)h(task.)j(Later,)14 b(in)i(a)f(discussion)i
+(with)e(the)h(en)o(tire)f(class,)g(w)o(e)g(all)h(agreed)f(that)g(it)g(w)o
+(ould)h(b)q(e)f(more)964 2779 y(9)p eop
+%%Page: 10 10
+bop 0 45 a Fg(sensible)21 b(to)d(design)i(the)e(compiler)i(in)g(a)f(w)o(a)o
+(y)e(that)h(made)h(tok)o(enization)g(an)g(en)o(tirely)h(separate)e(task,)h
+(done)0 141 y(uniformly)d(for)f(all)h(statemen)o(t)e(t)o(yp)q(es,)h(rather)f
+(than)i(as)e(a)h(subtask)g(of)g(compiling)i(eac)o(h)e(statemen)o(t)f(t)o(yp)q
+(e.)91 239 y(Although)e(w)o(e)f(nev)o(er)h(did)g(examine)h(the)e(P)o(ascal)g
+(compiler)i(from)e(the)g(textb)q(o)q(ok)h(in)g(an)o(y)f(detail,)i(the)f
+(partic-)0 335 y(ipan)o(ts')k(exp)q(erience)i(struggling)e(with)g
+(compile-time)i(v)o(ersus)e(run-time)g(v)m(ariables)i(w)o(as)d(enough)h
+(preparation)0 430 y(so)i(that)f(I)h(could)h(tell)g(them)f(ab)q(out)g(the)g
+(implications)i(of)d(lexical)j(scoping)f(rules)f(ev)o(en)h(though)e(they)h
+(didn't)0 526 y(w)o(ork)g(out)g(the)h(actual)g(pro)q(cess)h(of)e(implemen)o
+(ting)j(those)d(rules.)32 b(Had)19 b(w)o(e)g(had)g(more)f(time,)i(I)f(w)o
+(ould)g(ha)o(v)o(e)0 621 y(tried)f(to)e(in)o(tro)q(duce)j(scoping,)f(to)q(o,)
+e(through)h(activities.)28 b(But)17 b(the)g(lecture)i(that)d(I)i(ga)o(v)o(e)e
+(as)h(a)g(shortcut)g(w)o(as)0 717 y(v)m(astly)f(more)f(successful)i(than)e(a)
+g(similar)i(lecture)f(the)g(previous)g(summer)g(to)e(participan)o(ts)i(who)g
+(hadn't)f(had)0 812 y(the)g(activit)o(y)h(of)e(struggling)i(to)f(write)g(a)g
+(BASIC)h(compiler.)0 940 y Fh(The)i(Di\016cult)o(y)g(of)f(Understanding)i(F)l
+(unction)f(as)f(Ob)s(ject)91 1038 y Fg(The)e(idea)g(of)g Ff(function)i
+Fg(is)f(cen)o(tral)f(to)f(mathematics,)g(and)h(cen)o(tral)g(to)f(the)h
+(mathematics)f(curriculum)j(at)0 1134 y(IFSMA)o(CSE.)11 b(Less)h(ob)o
+(viously)l(,)i(it)e(has)f(turned)i(out)e(also)h(to)f(b)q(e)h(cen)o(tral)g(to)
+f(the)h(computer)g(science)h(curriculum.)91 1232 y(Studen)o(ts)g(notoriously)
+h(ha)o(v)o(e)f(trouble)h(understanding)g(functions.)20 b(F)l(or)13
+b(example,)h(this)g(trouble)f(is)h(at)f(the)0 1328 y(ro)q(ot)f(of)h(their)h
+(di\016cult)o(y)g(in)g(freshman)f(calculus.)21 b(Mathematics)13
+b(educators)g(ha)o(v)o(e)g(fo)q(cused)h(m)o(uc)o(h)f(researc)o(h)g(on)0
+1423 y(illuminating)18 b(functions.)i(It)15 b(app)q(ears)g(that)f
+(mathematicians)h(understand)g(functions)h(in)f(at)f(least)h(t)o(w)o(o)e(w)o
+(a)o(ys,)0 1519 y(one)i(of)g(whic)o(h)h(is)g(m)o(uc)o(h)f(harder)g(than)g
+(the)h(other)e([Dubinsky)l(,)i(1991].)91 1617 y(The)h(easier)g(lev)o(el)h(of)
+e(understanding)i(is)g(that)e(of)g Ff(function)h(as)h(pr)n(o)n(c)n(ess)p
+Fg(.)23 b(This)17 b(is)g(the)g(view)h(exempli\014ed)0 1712
+y(b)o(y)d(the)g(\\function)h(mac)o(hine")g(of)e(high)i(sc)o(ho)q(ol)g
+(algebra,)f(the)g(meat)f(grinder)i(that)f(accepts)g(n)o(um)o(b)q(ers)g
+(through)0 1808 y(a)g(funnel)i(at)d(the)i(top)f(and)g(cranks)g(out)g(other)g
+(n)o(um)o(b)q(ers)h(through)e(a)h(c)o(h)o(ute)h(at)e(the)i(b)q(ottom.)j
+Ff(Comp)n(osition)d(of)0 1903 y(functions)21 b Fg(can)d(b)q(e)h(understo)q(o)
+q(d)g(as)f(ho)q(oking)h(the)f(output)g(c)o(h)o(ute)g(of)g(one)h(mac)o(hine)g
+(to)e(the)h(input)i(funnel)f(of)0 1999 y(another.)25 b(In)18
+b(this)f(view,)h(the)g(\\real)f(things")g(that)f(w)o(e)h(manipulate)h(are)f
+(the)g(n)o(um)o(b)q(ers;)h(functions)g(are)f(w)o(a)o(ys)0 2094
+y(in)e(whic)o(h)h(w)o(e)e(manipulate)i(those)f(things.)20 b(This)15
+b(view)g(of)g(functions)g(is)g(straigh)o(tforw)o(ardly)e(mo)q(deled)j
+(through)0 2190 y(pro)q(cedures)f(in)f(a)f(programming)g(language.)20
+b(\(In)14 b(fact,)f(man)o(y)g(languages)h(use)g(the)g(w)o(ord)f(\\function")h
+(to)f(name)0 2285 y(suc)o(h)h(pro)q(cedures.\))20 b(Consider)14
+b(the)g(common)g(metaphor)f(in)i(whic)o(h)f(a)g(pro)q(cedure)g(is)h(describ)q
+(ed)g(as)f(a)f(recip)q(e;)j(it)0 2381 y(is)h(p)q(erfectly)g(clear)g(that)f
+(the)g(\\real)h(things")f(that)g(w)o(e)g(eat)g(are)g(the)h(ingredien)o(ts,)g
+(not)f(the)h(recip)q(e)g(itself.)25 b(Y)l(ou)0 2476 y(can't)14
+b(eat)g(a)g(recip)q(e,)h(nor)g(can)f(y)o(ou)g(eat)g(the)g(sequence)i(of)e
+(steps)g(\(turning)h(on)f(the)h(sto)o(v)o(e,)e(and)h(so)g(on\))g(that)g(the)0
+2572 y(recip)q(e)j(tells)f(us)f(to)g(p)q(erform.)91 2670 y(The)21
+b(second)g(lev)o(el)i(requires)e(us)g(to)f(understand)i Ff(function)f(as)g
+(obje)n(ct)p Fg(.)36 b(In)22 b(this)f(view,)i(functions)e(are)952
+2779 y(10)p eop
+%%Page: 11 11
+bop 0 45 a Fg(promoted)12 b(to)g(\\real)h(things")g(that)f(can)h(themselv)o
+(es)h(b)q(e)f(manipulated.)21 b(In)13 b(calculus,)i Ff(derivative)h
+Fg(is)e(a)e(function)0 141 y(whose)17 b(domain)h(and)g(range)f(are)g
+(functions.)27 b(If)17 b(w)o(e)g(represen)o(t)h(this)f(function)i(as)d
+Fd(D)q Fg(,)i(w)o(e)f(ma)o(y)f(lo)q(osely)j(write)0 236 y(that)c
+Fd(D)q Fg(\()p Fd(x)182 220 y Fc(2)202 236 y Fg(\))e(=)h(2)p
+Fd(x)h Fg(but)h(this)g(notation)f(is)h(misleading)i(b)q(ecause)e
+Fd(x)1167 220 y Fc(2)1203 236 y Fg(and)g(2)p Fd(x)f Fg(are)h(expressions)g
+(that)f(represen)o(t)0 332 y(n)o(um)o(b)q(ers.)20 b(W)l(e)15
+b(really)i(mean)e(something)g(lik)o(e)748 484 y Fd(D)q Fg(\()p
+Fd(x)855 456 y Fb(f)843 484 y Fa(7!)e Fd(x)927 466 y Fc(2)947
+484 y Fg(\))g(=)g(\()p Fd(y)1093 456 y Fb(g)1080 484 y Fa(7!)g
+Fg(2)p Fd(y)r Fg(\))0 637 y(\(I)h(ha)o(v)o(e)f(giv)o(en)h(the)g(function)h
+Fd(g)g Fg(a)e(di\013eren)o(t)h(formal)f(parameter)g(to)h(emphasize)g(that)g
+(this)g(form)o(ula)f(is)h(ab)q(out)g Fd(f)0 732 y Fg(and)h
+Fd(g)r Fg(,)g(not)f(ab)q(out)i Fd(x)f Fg(or)f Fd(y)r Fg(.\))20
+b(If)c(w)o(e)e(w)o(an)o(t)h(to)f(represen)o(t)h(the)h(function)g
+Fd(D)g Fg(as)f(a)g(mac)o(hine,)g(it)h(can't)f(b)q(e)h(a)f(meat)0
+828 y(grinder,)20 b(but)g(rather)e(a)h(\\metal)g(grinder")g(that)g(tak)o(es)f
+(meat)g(grinders|not)i(the)f(v)m(alues)i(output)d(b)o(y)i(meat)0
+923 y(grinders,)f(but)f(the)g(mac)o(hines)g(themselv)o(es|in)i(its)e(input)h
+(funnel.)30 b(Although)18 b(w)o(e)g(are)f(still)j(understanding)0
+1019 y(the)12 b Ff(higher-or)n(der)18 b Fg(function)13 b Fd(D)g
+Fg(as)f(a)g(pro)q(cess,)h(w)o(e)f(m)o(ust)f(no)o(w)h(understand)h(the)f
+(functions)h Fd(f)k Fg(and)c Fd(g)g Fg(as)f(ob)s(jects.)91
+1117 y(In)j(Logo)f(programming)f(the)i(di\016cult)o(y)g(ab)q(out)g(function)g
+(as)f(ob)s(ject)f(\014rst)h(arises)h(in)g(using)g(the)f Fe(IF)g
+Fg(pro)q(ce-)0 1212 y(dure)i(for)e(conditional)j(execution.)k(In)16
+b(the)f(instruction)0 1322 y Fe(IF)24 b(EQUALP)f(:VALUE)g(3)g([PRINT)g
+("THREE])0 1434 y Fg(wh)o(y)16 b(are)h(there)f(brac)o(k)o(ets)g(around)h(the)
+g Fe(PRINT)e Fg(instruction)j(but)f(not)f(around)h(the)f Fe(EQUALP)g
+Fg(expression?)26 b(W)l(e)0 1530 y(tell)20 b(Logo)f(b)q(eginners)h(that)f
+(things)g(within)h(brac)o(k)o(ets)e(are)h(literal)h(text,)g(while)g(things)g
+(not)e(in)i(brac)o(k)o(ets)e(are)0 1625 y(requests)d(to)g(carry)f(out)h(pro)q
+(cedures:)0 1735 y Fe(?)24 b(PRINT)f([SUM)g(2)h(3])0 1790 y(SUM)f(2)h(3)0
+1844 y(?)g(PRINT)f(SUM)g(2)h(3)0 1899 y(5)0 2011 y Fg(When)16
+b(they)f(meet)g Fe(IF)p Fg(,)f(these)i(b)q(eginners)h(w)o(an)o(t)d(to)g(sa)o
+(y)0 2121 y Fe(IF)24 b(EQUALP)f(:VALUE)g(3)g(PRINT)h("THREE)109
+b Fg(or)0 2176 y Fe(IF)24 b([EQUALP)e(:VALUE)i(3])f([PRINT)g("THREE])0
+2288 y Fg(Although)c(this)f(presen)o(ts)g(itself)i(as)d(a)h(syn)o(tactic)g
+(question,)h(ab)q(out)g(brac)o(k)o(ets,)e(it's)h(really)h(a)f(problem)h(ab)q
+(out)0 2384 y(functions)d(as)g(ob)s(jects.)k Fe(IF)c Fg(is)g(a)f
+(higher-order)h(pro)q(cedure.)22 b(Its)16 b(\014rst)f(input)i(is)f
+Ff(not)k Fg(a)15 b(function,)h(but)g(rather)f(a)0 2479 y Fe(TRUE)d
+Fg(or)g Fe(FALSE)g Fg(v)m(alue.)20 b(But)12 b(its)h(second)g(input)h
+Ff(is)h Fg(a)d(function,)i(in)f(the)g(form)e(of)h(a)h(Logo)f(instruction.)20
+b(The)12 b(\014rst)0 2575 y(incorrect)19 b(form)f(ab)q(o)o(v)o(e)f(w)o(ould)i
+(in)o(v)o(ok)o(e)g Fe(PRINT)p Fg(,)e(actually)i(prin)o(ting)g(the)g(w)o(ord)f
+Fe(THREE)p Fg(,)f(b)q(efore)i(in)o(v)o(oking)g Fe(IF)p Fg(.)0
+2670 y(The)f(second)g(incorrect)g(form)e(w)o(ould)i(put)g(the)f(expression)i
+Fe(EQUALP)k(:VALUE)g(3)17 b Fg(in)i Fe(IF)p Fg('s)d(\014rst)h(input)i
+(funnel,)952 2779 y(11)p eop
+%%Page: 12 12
+bop 0 45 a Fg(instead)16 b(of)f(supplying)j Fe(IF)d Fg(with)h(the)g(true)f
+(or)g(false)h(v)m(alue)h(that)e(results)h(from)e(in)o(v)o(oking)j
+Fe(EQUALP)p Fg(.)d(Sa)o(ying)i(the)0 141 y(same)c(thing)h(in)h(di\013eren)o
+(t)e(w)o(ords,)g(w)o(e)h(are)f(using)h Fe(EQUALP)f Fg(as)g(a)g
+(function-as-pro)q(cess,)i(but)f(w)o(e)f(are)g(using)i Fe(PRINT)0
+236 y Fg(as)h(a)g(function-as-ob)s(ject.)91 337 y(This)22 b(di\016cult)o(y)h
+(arises)f(in)g(Logo)g(programming)f(b)q(ecause)h(Logo)f(treats)g
+Fe(IF)g Fg(as)h(a)f(pro)q(cedure)h(that)f(is)0 433 y(syn)o(tactically)16
+b(lik)o(e)g(an)o(y)f(other.)k(It)c(requires)h(t)o(w)o(o)e(inputs,)h(a)g
+(true-false)g(v)m(alue)i(and)e(a)f(function.)21 b(But)15 b(the)g(idea)0
+528 y(of)e(a)g(functional)h(ob)s(ject)f(is)h(so)f(hard)g(for)g(man)o(y)g(p)q
+(eople)h(to)f(learn)h(that)e(some)h(dialects)i(of)e(Logo)g(a)o(v)o(oid)g(the)
+g(issue)0 623 y(b)o(y)h(making)f Fe(IF)g Fg(a)h(sp)q(ecial)h(syn)o(tactic)f
+(construction,)f(unlik)o(e)j(ev)o(erything)e(else)g(in)h(the)e(language,)h
+(lo)q(oking)g(more)0 719 y(lik)o(e)i(the)g Fe(IF)e Fg(statemen)o(ts)h(of)f
+(other)h(languages:)0 830 y Fe(IF)24 b(EQUALP)f(:VALUE)g(3)g(THEN)h(PRINT)f
+("THREE)0 946 y Fg(This)13 b(gets)f(past)f(the)i(immediate)g(h)o(urdle,)g
+(but)g(it)f(misses)h(the)f(c)o(hance)h(to)e(teac)o(h)h(a)g(v)m(aluable)i
+(lesson.)20 b(F)l(unctional)0 1041 y(ob)s(jects,)14 b(once)i(understo)q(o)q
+(d,)f(add)g(great)g(expressiv)o(e)h(p)q(o)o(w)o(er)e(to)h(a)g(language.)20
+b(F)l(or)14 b(example,)i(w)o(e)f(can)g(write)g(in)0 1137 y(Logo)g(a)f
+(higher-order)i(function)g(called)h Fe(MAP)d Fg(that)h(applies)h(an)o(y)f
+(function)h(to)e(eac)o(h)i(of)e(the)h(elemen)o(ts)h(of)f(a)g(list:)0
+1248 y Fe(?)24 b(SHOW)f(MAP)g("SQUARE)g([4)h(5)g(6)f(10])0
+1302 y([16)g(25)h(36)g(100])0 1418 y Fg(\(The)17 b Fe(FOREACH)f
+Fg(pro)q(cedure)i(used)f(in)h(an)f(earlier)h(example)g(is)f(a)g(similar)h
+(higher-order)g(to)q(ol.\))25 b Fe(MAP)16 b Fg(p)q(erforms)0
+1514 y(\\all)21 b(at)g(once")g(computations)f(that)g(w)o(ould)i(otherwise)f
+(require)g(some)g(sort)f(of)g(lo)q(oping)i(mec)o(hanism)g(with)0
+1609 y(auxiliary)h(v)m(ariables.)40 b(But)22 b(wh)o(y)f(is)h(the)g(function)g
+(name)g Fe(SQUARE)f Fg(quoted?)39 b(Ordinarily)24 b(w)o(e)d(quote)h(data)0
+1705 y(w)o(ords,)15 b(not)h(pro)q(cedures.)24 b(This)17 b(is)g(exactly)f(the)
+h(same)f(issue)h(that)e Fe(IF)h Fg(raised;)h(the)g(\014rst)e(input)j(to)d
+Fe(MAP)h Fg(is)h(the)0 1800 y Fe(SQUARE)d Fg(function)i(itself,)f(not)g(the)f
+(result)i(of)e(squaring)h(something.)20 b(The)15 b(particular)h(details)g(of)
+e(punctuation)0 1896 y(are)j(sp)q(eci\014c)i(to)e(Logo,)g(but)g(an)o(y)g
+(language)h(that)e(allo)o(ws)i(higher-order)g(functions)g(needs)g(some)f
+(notation)g(to)0 1991 y(distinguish)d(the)f(in)o(v)o(o)q(cation)g(of)f(a)g
+(pro)q(cedure)h(\(the)f(use)h(of)f(a)g(function)h(as)f(pro)q(cess\))h(from)e
+(the)i(pro)q(cedure)g(itself)0 2087 y(\(function)j(as)f(ob)s(ject\).)91
+2187 y(The)c(same)g(broad)g(issue)g(comes)g(up)h(di\013eren)o(tly)g(in)f
+(studying)h(compilers.)20 b(Here)11 b(the)g(problem)h(has)e(nothing)0
+2283 y(to)h(do)g(with)h(syn)o(tax.)18 b(It)12 b(presen)o(ts)f(itself)i(v)o
+(ery)e(directly:)20 b(W)l(e)11 b(are)h(w)o(orking)f(with)h(some)f(pro)q
+(cedures,)i(the)e(ones)h(in)0 2378 y(the)k(compiler)g(itself,)g(that)f(w)o(e)
+g(think)h(of)f(purely)i(as)e(pro)q(cess.)21 b(Other)15 b(pro)q(cedures,)h
+(the)g(ones)f(in)i(the)e(program)0 2474 y(that)j(is)i(b)q(eing)h(compiled,)g
+(m)o(ust)e(b)q(e)h(considered)g(as)f(ob)s(jects)f(during)j(the)e(compilation)
+h(pro)q(cess,)g(but)g(then)0 2569 y(m)o(ysteriously)c(represen)o(t)f(a)g(pro)
+q(cess)g(when)h(the)f(compiled)i(program)d(is)i(executed.)91
+2670 y(Higher-order)c(functions)f(are)g(to)q(ols)g(whose)g(usefulness)h(is)g
+(to)q(o)e(great)g(to)h(pass)f(up,)i(and)f(y)o(et)g(our)g(exp)q(erience)952
+2779 y(12)p eop
+%%Page: 13 13
+bop 0 45 a Fg(with)13 b(the)f(IFSMA)o(CSE)g(participan)o(ts)h(sho)o(ws)f
+(that)f(the)i(underlying)h(ideas)f(are)f(surprisingly)i(di\016cult)g(to)e
+(learn.)0 141 y(W)l(e)f(kno)o(w)f(some)h(w)o(a)o(ys)e(to)h(b)q(egin;)j(for)e
+(example,)h(turtle)f(graphics)g(pro)s(jects)f(can)h(mak)o(e)f(the)h(issue)g
+(more)g(concrete)0 236 y([Zazkis)k(and)g(Leron,)h(1990].)i(This)e(is)f(an)h
+(ongoing)f(area)f(of)h(researc)o(h)g(among)g(the)g(IFSMA)o(CSE)g(facult)o(y)l
+(.)0 366 y Fh(Educational)20 b(Mythology)e(v)o(ersus)d(Exp)q(erience)91
+466 y Fg(The)e(\014nal)g(topic)g(in)h(the)e(Adv)m(anced)i(T)l(opics)g(course)
+e(is)h(arti\014cial)h(in)o(telligence.)22 b(I)13 b(ga)o(v)o(e)f(the)g
+(participan)o(ts)h(a)0 561 y(program)g(called)i(Studen)o(t)f(to)f(in)o(v)o
+(estigate.)20 b(This)14 b(program,)f(m)o(y)g(translation)h(in)o(to)g(Logo)f
+(of)g(Daniel)i(Bobro)o(w's)0 657 y(original)20 b(1964)e(Lisp)i(v)o(ersion,)g
+(solv)o(es)g(algebra)f(w)o(ord)f(problems)i(b)o(y)f(using)h(pattern)e(matc)o
+(hing)h(to)g(turn)g(the)0 752 y(English)c(sen)o(tences)g(in)o(to)f
+(equations.)20 b(The)14 b(program,)f(t)o(ypical)i(of)f(AI)g(pro)s(jects)g
+(bac)o(k)g(then,)g(solv)o(es)g(an)g(impres-)0 848 y(siv)o(e)i(v)m(ariet)o(y)g
+(of)f(problems)i(but)f(also)f(fails)i(on)f(an)f(ev)o(en)h(wider)h(v)m(ariet)o
+(y)l(.)22 b(It)15 b(\\understands")h(certain)g(sen)o(tence)0
+943 y(structures)i(but)g(not)f(others.)28 b(I)18 b(had)g(ask)o(ed)g(the)g
+(participan)o(ts)g(to)g(try)f(out)h(problems)g(of)g(their)g(o)o(wn.)28
+b(If)18 b(the)0 1039 y(program)d(failed)i(to)e(solv)o(e)g(a)h(problem,)g(I)g
+(ask)o(ed)g(them)f(to)g(try)g(to)g(\014gure)h(out)g(ho)o(w)f(the)h(program)e
+(w)o(ould)i(ha)o(v)o(e)0 1134 y(to)f(b)q(e)i(mo)q(di\014ed)g(to)e(succeed.)23
+b(In)17 b(retrosp)q(ect,)e(this)h(w)o(as)f(to)q(o)g(hard)h(an)g(assignmen)o
+(t,)g(b)q(ecause)g(Studen)o(t)h(has)e(a)0 1230 y(v)o(ery)g(complicated)h
+(structure)f(and)h(a)f(w)o(eek)g(w)o(as)f(to)q(o)h(short)f(a)h(time)h(to)e
+(allo)o(w)i(its)f(exploration.)91 1329 y(On)j(the)g(next-to-last)f(da)o(y)h
+(of)f(the)g(Institute,)i(a)e(few)h(of)f(the)h(participan)o(ts)g(w)o(ere)f(w)o
+(orking)g(on)h(Studen)o(t,)0 1425 y(others)f(w)o(ere)h(doing)g(their)g(P)o
+(ascal)g(homew)o(ork,)f(and)h(others)f(w)o(ere)g(ha)o(ving)h(con)o(v)o
+(ersations.)27 b(A)o(t)17 b(one)h(p)q(oin)o(t)g(a)0 1520 y(few)c(of)g(the)h
+(side)g(con)o(v)o(ersations)f(got)g(quite)h(b)q(oisterous,)f(creating)h(an)f
+(atmosphere)g(in)i(whic)o(h)f(it)g(w)o(as)e(hard)i(for)0 1616
+y(an)o(y)o(one)h(to)f(w)o(ork.)22 b(I)16 b(got)f(angry)h(and)g(let)g(the)h
+(participan)o(ts)f(kno)o(w)g(it,)g(in)o(viting)h(those)f(who)g(w)o(eren't)f
+(w)o(orking)0 1711 y(to)g(lea)o(v)o(e)g(but)g(insisting)i(that)e(they)g(not)g
+(prev)o(en)o(t)g(others)f(from)h(w)o(orking.)91 1811 y(The)h(next)g(da)o(y)l
+(,)g(i.e.,)f(the)i(last)e(da)o(y)h(of)f(the)h(Institute,)h(P)o(aul)f(Golden)o
+(b)q(erg)h(in)o(vited)g(me)f(to)f(visit)i(his)g(class)0 1906
+y(session)d(with)g(the)f(\014rst-y)o(ear)g(participan)o(ts.)20
+b(They)14 b(had)f(had)h(a)f(discussion)i(ab)q(out)f(grades,)f(and)h(he)f(w)o
+(as)g(ab)q(out)0 2002 y(to)f(hand)h(out)g(a)f(p)q(osition)i(pap)q(er)f(he'd)g
+(written)g(o)o(v)o(ernigh)o(t)f(on)h(the)f(sub)s(ject.)19 b(\(Of)13
+b(course)g(w)o(e)f(don't)g(giv)o(e)h(grades)0 2097 y(at)h(IFSMA)o(CSE,)g(and)
+g(the)h(participan)o(ts)g(all)g(agree)g(that)e(it)i(w)o(ould)g(ruin)g(the)g
+(exp)q(erience)i(for)d(them)g(if)h(w)o(e)f(did,)0 2193 y(but)19
+b(man)o(y)g(feel)h(that)e(high)i(sc)o(ho)q(ol)f(studen)o(ts)g(are)g
+(di\013eren)o(t)g(from)f(themselv)o(es)i(and)f(need)h(grades.\))30
+b(P)o(aul's)0 2288 y(pap)q(er)15 b(suggested)g(some)f(w)o(a)o(ys)g(in)h(whic)
+o(h)h(grades)e(can)h(b)q(e)g(giv)o(en)g(to)f(reduce)i(their)f(harmfulness)g
+(and,)g(in)g(some)0 2384 y(cases,)i(ev)o(en)h(allo)o(w)g(grades)f(to)f(con)o
+(tribute)i(to)f(the)g(learning)i(pro)q(cess.)27 b(He)17 b(though)o(t)g(that)g
+(I)g(w)o(ould)h(consider)0 2479 y(this)13 b(\\a)e(sellout")i(\(his)g(w)o
+(ords\))e(and)i(w)o(an)o(ted)e(me)i(to)e(presen)o(t)i(m)o(y)e(o)o(wn)h
+(views.)20 b(What)11 b(I)i(said,)g(in)g(brief,)g(w)o(as)f(that)0
+2575 y(dealing)17 b(with)f(grades)f(is)h(just)g(lik)o(e)h(an)o(y)e(other)g
+(tension)i(b)q(et)o(w)o(een)f(reform)e(and)i(rev)o(olution,)g(and)g(that)f(I)
+h(think)0 2670 y(reforms)g(are)h(\014ne,)h(and)g(ev)o(en)f(necessary)l(,)h
+(as)e(long)i(as)f(w)o(e)g(design)h(our)f(reforms)f(while)j(k)o(eeping)f(in)g
+(mind)g(the)952 2779 y(13)p eop
+%%Page: 14 14
+bop 0 45 a Fg(rev)o(olution)14 b(that)e(w)o(e)h Ff(r)n(e)n(al)r(ly)k
+Fg(w)o(an)o(t.)h(\(I)13 b(don't)g(exp)q(ect)h(that)f(sen)o(tence)h(to)e(b)q
+(e)i(con)o(vincing;)h(the)f(argumen)o(t)e(ab)q(out)0 141 y(reform)i(and)i
+(rev)o(olution)g(isn't)f(the)g(p)q(oin)o(t)h(I)f(w)o(an)o(t)g(to)f(mak)o(e)h
+(here,)g(but)g(rather)g(part)g(of)f(the)i(bac)o(kground.\))91
+242 y(A)o(t)e(this)h(p)q(oin)o(t)g(one)g(of)f(the)g(participan)o(ts)h(said)g
+(to)f(me,)h(\\Don't)e(y)o(ou)h(think)h(that)f(if)h(y)o(ou)g(ga)o(v)o(e)e
+(grades)h(y)o(ou)0 337 y(w)o(ouldn't)h(ha)o(v)o(e)g(had)g(that)g(trouble)g
+(with)h(the)f(second-y)o(ear)h(participan)o(ts)f(y)o(esterda)o(y?")91
+438 y(After)e(getting)h(o)o(v)o(er)f(m)o(y)h(\(naiv)o(e\))f(surprise)i(that)e
+(this)i(story)e(had)h(reac)o(hed)g(the)g(IFSMA)o(CSE)g(gossip)g(mill,)0
+533 y(I)i(ga)o(v)o(e)f(t)o(w)o(o)g(replies.)23 b(The)16 b(\014rst)g(w)o(as)f
+(that)g(ev)o(en)h(if)h(I)f(could)h(ha)o(v)o(e)e(\\main)o(tained)i
+(discipline")i(b)o(y)d(force,)f(whic)o(h)0 629 y(is)20 b(what)f(she)g(w)o(as)
+g(suggesting,)h(the)f(cost)g(w)o(ould)h(b)q(e)g(to)q(o)e(great.)32
+b(I)20 b(w)o(ouldn't)f(trade)g(six)h(w)o(eeks)f(of)g(fearless)0
+724 y(exploration)d(of)g(di\016cult)h(ideas)g(for)e(one)h(da)o(y)g(of)f
+(decorum.)22 b(My)16 b(second)g(reply)h(w)o(as)e(a)g(question:)22
+b(\\Ha)o(v)o(e)15 b(y)o(ou)0 820 y(ev)o(er)g(taugh)o(t)f(seniors?")91
+920 y(\\Y)l(es.")91 1021 y(\\Do)g(y)o(ou)h(giv)o(e)h(them)f(grades?")91
+1122 y(\\Y)l(es.")91 1222 y(\\Do)f(the)i(grades)e(prev)o(en)o(t)h(them)g
+(from)g(ha)o(ving)g(senioritis)i(on)e(the)g(next-to-last)g(da)o(y?")91
+1323 y(\\Are)g(y)o(ou)g(kidding?)22 b(They)16 b(get)e(senioritis)j(in)f(No)o
+(v)o(em)o(b)q(er!")91 1424 y(This)21 b(participan)o(t)f Ff(knows)k
+Fg(that)19 b(y)o(ou)h(can't)g(main)o(tain)g(order)g(in)h(a)f(classro)q(om)g
+(b)o(y)g(using)h(grades)f(as)f(a)0 1519 y(w)o(eap)q(on,)13
+b(from)g(her)h(o)o(wn)f(teac)o(hing)h(exp)q(erience.)21 b(She)14
+b Ff(knows)j Fg(that)c(she)g(herself,)i(at)e(IFSMA)o(CSE,)g(w)o(orks)f(hard)0
+1615 y(and)19 b(learns)g(rapidly)h(and)f(deeply)h(in)g(an)f(atmosphere)f
+(without)h(grades,)g(and)g(that)f(if)h(w)o(e)f(ga)o(v)o(e)g(grades)h(she)0
+1710 y(w)o(ould)13 b(b)q(e)h(more)e(afraid)h(to)f(c)o(hallenge)i(herself.)20
+b(But)13 b(she)g(also)g(\\kno)o(ws")e(that)h(studen)o(ts)h(w)o(on't)e(learn)j
+(an)o(ything)0 1806 y(if)20 b(y)o(ou)e(don't)h(force)g(them)g(to.)31
+b(That)18 b(last)h(bit)h(of)f(kno)o(wledge)g(do)q(es)h Ff(not)j
+Fg(come)c(from)f(her)i(exp)q(erience;)j(she)0 1901 y(learned)16
+b(it)g(from)e(gossip)h(in)h(the)g(sta\013)e(ro)q(om,)g(or)h(during)h(her)f
+(training,)h(or)e(from)h(the)g(newspap)q(er.)91 2002 y(In)23
+b(designing)h(IFSMA)o(CSE)e(w)o(e)g(knew)h(from)e(the)i(b)q(eginning)h(that)e
+(the)h(tec)o(hnical)g(con)o(ten)o(t)f(and)h(the)0 2097 y(p)q(edagogic)18
+b(con)o(ten)o(t)e(w)o(ere)h(equally)h(imp)q(ortan)o(t.)25 b(Just)17
+b(as)f(w)o(e)h(teac)o(h)g(the)g(tec)o(hnical)h(ideas)g(not)e(b)o(y)h
+(lecturing,)0 2193 y(but)c(b)o(y)g(participan)o(t)h(exploration,)g(w)o(e)f
+(also)g(feel)h(that)e(w)o(e)h(can)g(teac)o(h)g(our)g(p)q(edagogic)h(ideas)g
+(b)q(est)f(b)o(y)g(example.)0 2288 y(Still,)19 b(w)o(e)f(\014nd)g(that)e
+(it's)i(imp)q(ortan)o(t)f(to)f(mak)o(e)h(explicit,)j(rep)q(eatedly)l(,)f
+(that)e(w)o(e)g(are)g(mo)q(deling)i(an)e(approac)o(h)0 2384
+y(to)d(teac)o(hing)g(and)h(learning)g(that)f(will)h(w)o(ork)f(for)f(the)i
+(participan)o(ts)f(and)h(their)f(o)o(wn)g(studen)o(ts.)20 b(Man)o(y)13
+b(of)h(them)0 2479 y(\014nd)k(our)g(metho)q(ds)f(congenial,)i(but)f(man)o(y)f
+(are)g(v)o(ery)g(reluctan)o(t)h(to)f(apply)h(their)g(o)o(wn)f(observ)m(ation)
+h(of)f(their)0 2575 y(o)o(wn)f(learning)j(to)d(the)h(situation)g(at)g(home.)
+25 b(This)18 b(fear|a)e(strong)g(w)o(ord,)h(but)g(appropriate|is)h(another)e
+(of)0 2670 y(the)f(di\016culties)j(with)d(whic)o(h)h(w)o(e)f(are)g(still)i
+(struggling)e(at)g(IFSMA)o(CSE.)952 2779 y(14)p eop
+%%Page: 15 15
+bop 0 45 a Fh(Ac)o(kno)o(wledgmen)o(ts)91 141 y Fg(The)13 b(IFSMA)o(CSE)g
+(facult)o(y)f(are)h(all)h(profound)f(think)o(ers)g(ab)q(out)f(b)q(oth)h
+(education)h(and)f(mathematics,)g(and)0 236 y(m)o(y)g(w)o(ork)f(with)i(them)f
+(has)g(b)q(een)h(a)f(terri\014c)h(in)o(tellectual)i(stim)o(ulation.)k(The)13
+b(p)q(eople)i(whose)e(insigh)o(ts)h(are)f(most)0 332 y(visible)k(in)f(this)g
+(pap)q(er)g(are)f(Al)g(Cuo)q(co,)g(Ed)h(Dubinsky)l(,)g(P)o(aul)f(Golden)o(b)q
+(erg,)h(and)f(Uri)h(Leron.)0 455 y Fh(Bibliograph)o(y)0 541
+y Fg(Ab)q(elson,)k(Harold,)e(and)h(Gerald)g(Ja)o(y)f(Sussman.)g
+Ff(Structur)n(e)i(and)g(Interpr)n(etation)e(of)i(Computer)g(Pr)n(o)n(gr)n
+(ams)p Fg(,)91 595 y(MIT)15 b(Press,)g(1985.)0 682 y(Akl,)g(Selim.)i
+Ff(Par)n(al)r(lel)e(Sorting)h(A)o(lgorithms)p Fg(,)e(Academic)j(Press,)d
+(1985.)0 768 y(Akl,)h(Selim.)i Ff(The)f(Design)f(and)i(A)o(nalysis)d(of)i
+(Par)n(al)r(lel)g(A)o(lgorithms)p Fg(,)e(Pren)o(tice)i(Hall,)g(1989.)0
+855 y(Akl,)f(Selim.)i Ff(Par)n(al)r(lel)e(Computational)i(Ge)n(ometry)p
+Fg(,)e(Pren)o(tice)h(Hall,)g(1992.)0 941 y(Dubinsky)l(,)g(Ed.)e
+(\\Constructiv)o(e)h(Asp)q(ects)g(of)g(Re\015ectiv)o(e)h(Abstraction)f(in)h
+(Adv)m(anced)g(Mathematical)f(Think-)91 995 y(ing,")g(in)h(L.)f(P)l(.)g
+(Ste\013e)g(\(ed.\),)g Ff(Epistemolo)n(gic)n(al)g(F)m(oundations)g(of)i
+(Mathematic)n(al)f(Exp)n(erienc)n(e)p Fg(,)e(Springer-)91 1050
+y(V)l(erlag,)h(1991.)0 1136 y(Golden)o(b)q(erg,)g(E.)g(P)o(aul.)g
+Ff(Sp)n(e)n(cial)g(T)m(e)n(chnolo)n(gy)g(for)h(Sp)n(e)n(cial)f(Childr)n(en)p
+Fg(,)f(Univ)o(ersit)o(y)i(P)o(ark)e(Press,)h(1979.)0 1223 y(Golden)o(b)q
+(erg,)f(E.)f(P)o(aul,)g(Susan)h(Jo)g(Russell,)h(Cyn)o(thia)e(J.)h(Carter,)e
+(et)h(al.)h Ff(Computers,)h(Educ)n(ation)g(and)f(Sp)n(e)n(cial)91
+1277 y(Ne)n(e)n(ds)p Fg(,)f(Addison-W)l(esley)l(,)18 b(1984.)0
+1364 y(Golden)o(b)q(erg,)d(E.)g(P)o(aul,)g(and)h(W)l(allace)g(F)l(eurzeig.)g
+Ff(Exploring)f(L)n(anguage)h(with)h(L)n(o)n(go)p Fg(,)d(MIT)h(Press,)f(1987.)
+0 1450 y(Golden)o(b)q(erg,)h(E.)e(P)o(aul.)h(\\Seeing)i(Beaut)o(y)e(in)h
+(Mathematics:)e(Using)i(F)l(ractal)f(Geometry)f(to)h(Build)i(a)e(Spirit)h(of)
+91 1505 y(Mathematical)g(Inquiry)l(,")h Ff(Journal)g(of)h(Mathematic)n(al)f
+(Behavior)p Fg(,)g Fh(8)p Fg(,)f(169{204,)d(1989.)0 1591 y(Harv)o(ey)l(,)19
+b(Brian.)h Ff(Computer)h(Scienc)n(e)e(L)n(o)n(go)h(Style,)g(volume)h(1:)f
+(Interme)n(diate)g(Pr)n(o)n(gr)n(amming)p Fg(,)f(MIT)h(Press,)91
+1645 y(1985.)0 1732 y(Harv)o(ey)l(,)15 b(Brian.)g Ff(Computer)i(Scienc)n(e)e
+(L)n(o)n(go)g(Style,)g(volume)i(3:)f(A)n(dvanc)n(e)n(d)f(T)m(opics)p
+Fg(,)f(MIT)h(Press,)g(1987.)0 1818 y(Harv)o(ey)l(,)f(Brian.)g(\\Sym)o(b)q
+(olic)i(Programming)d(vs.)h(the)h(A.P)l(.)e(Curriculum,")j
+Ff(The)f(Computing)g(T)m(e)n(acher)p Fg(,)e Fh(18)p Fg(,)i(5,)91
+1873 y(F)l(ebruary)l(,)g(1991.)0 1959 y(Zazkis,)h(Rina,)g(and)g(Uri)g(Leron.)
+g(\\Implemen)o(ting)h(P)o(o)o(w)o(erful)e(Ideas|The)i(Case)f(of)f(R)o(UN",)h
+Ff(L)n(o)n(go)g(Exchange)p Fg(,)91 2014 y Fh(8)p Fg(,)f(8,)f(April,)j(1990.)
+952 2779 y(15)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/js/games/nluqo.github.io/~bh/index.html b/js/games/nluqo.github.io/~bh/index.html
new file mode 100644
index 0000000..c240421
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/index.html
@@ -0,0 +1,419 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE> HomePage for Brian Harvey (bh@cs.Berkeley.EDU) </TITLE>
+<link rel="shortcut icon" href="http://www.cs.berkeley.edu/~bh/favicon.png" type="image/png">
+<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@600&family=Public+Sans:wght@300&display=swap" rel="stylesheet">
+</HEAD>
+<BODY>
+<P>
+<TABLE WIDTH="100%"><TR><TD VALIGN=TOP>
+  <table width=450px><tr><td valign=top>
+      <table width=220px><tr><td>
+      <IMG width=220px SRC="new-bh.jpg" ALT="">
+      </td></tr><tr><td align="center">then</td></tr></table>
+    </td>
+    <td valign=top>
+      <table width=220px><tr><td>
+      <IMG width=220px SRC="beard.jpg" ALT="">
+      </td></tr><tr><td align="center">now</td></tr></table>
+    </TD>
+  </tr></table></td>
+<TD VALIGN=TOP><LIT><font size=6><b>Brian Harvey</b></font><br>
+<A HREF="http://www.cs.berkeley.edu">Computer Science Division</A><BR>
+<A HREF="http://www.berkeley.edu">University of California at Berkeley</A><BR>
+784 <A HREF="http://www.cs.berkeley.edu/~sequin/soda/soda.html">Soda Hall</A> / 510 917-7828<BR>
+<A HREF="mailto:bh@cs.berkeley.edu"><CODE>bh@cs.berkeley.edu</CODE></A><BR>
+(he/him/hey, you)<br>
+<BR>
+BS, <A HREF="http://www-math.mit.edu/">Mathematics</A>,
+<A HREF="http://web.mit.edu/">MIT</A>, 1969<BR>
+MS, <A HREF="http://www-cs.stanford.edu/">Computer Science</A>,
+<A HREF="http://www.stanford.edu/">Stanford</A>, 1975<BR>
+PhD, <A HREF="http://www-gse.berkeley.edu/program/SESAME/sesame.html">Science
+and Mathematics</A><BR>
+ &#160; &#160; &#160; &#160; &#160;   <A HREF="http://www-gse.berkeley.edu/">Education</A>,
+<A HREF="http://www.berkeley.edu">Berkeley</A>, 1985<BR>
+MA, Clinical Psychology,<BR>
+ &#160; &#160; &#160; &#160; &#160;   <A HREF="http://www.newcollege.edu/">New College of California</A>, 1990<BR>
+</LIT></TD></TR></TABLE>
+
+Take a look at <A HREF="heath.html"> my son Heath</A>.
+
+<P>I'm a &quot;Senior Lecturer with Security of Employment Emeritus,&quot;
+which means that they paid me to teach full-time (not to do research), but was
+essentially tenured, even though I'm not supposed to call it that.
+(But since nobody outside the University of California has any idea what
+that title means, I'm allowed to call myself a "Teaching Professor Emeritus"
+instead.  Research faculty at some other UC campuses don't allow this for
+their teaching faculty, because they're
+afraid people might think we're like them and they'll get cooties.)
+I am retired as of July 1, 2013.  But I'm continuing to work on various
+education-related projects at the University.
+
+<P>I taught many of the lower division (freshman and sophomore)
+<A HREF="http://www.eecs.berkeley.edu/Courses/">computer science courses</A>
+at Berkeley, as well as one called <A HREF="195-syllabus">Social
+Implications of Computing</A> and
+occasionally others.I'm (still) faculty advisor of the
+<A HREF="http://www.csua.berkeley.edu/">Computer Science
+Undergraduate Association</A> and of the
+<A HREF="http://www.ocf.berkeley.edu/">Open Computing Facility</A>.
+
+<table><tr><td>
+You can see
+<A HREF="https://archive.org/details/ucberkeley-webcast-PL3E89002AA9B9879E">videos</A>
+of my course
+CS&nbsp;61A,
+<CITE>Structure and Interpretation of Computer Programs</CITE>,
+based on the amazing
+<A HREF="http://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html">textbook</A>
+of the same name, still, after 50 years, the best computer science
+book in the world.  My lecture notes, sample exams, and other course documents
+are preserved <a href="61a-pages">here</a>.  The videos are archived off campus
+because they're not captioned and the campus is required to caption any videos
+they present to the world.  I am pleased and honored that people are still
+discovering my course online and pursuing it with interest, even without
+gold stars for completing it.
+<td><img src="sicp-small.jpg">&nbsp;&nbsp;
+</tr></table>
+
+
+<P>I'm also interested in the use of computers in
+pre-college education; I used to be a <A HREF="lsrhs.html">high school</A>
+teacher, and was involved in the development of the Logo programming
+language.  More recently I've been helping develop the Snap<i>!</i> language
+(see below).
+<!-- And since 2004 I've been volunteering in a local elementary school. -->
+
+<P><A href="lastlect.mov">Brian's Last Lecture</A>
+(Quicktime) (download it to watch; don't try to stream it in the browser)
+
+<HR>
+
+<P><table>
+<tr><td align=left valign=center><img src="byob/bh/Logo5.png" height=150px>
+<td>&nbsp;
+<td align=left valign=center><img src="byob/bh/forscript.gif" height=150px>
+<td align=center valign=center><img src="byob/bh/arrow3.gif" height=50px>
+<td align=center valign=center><img src="byob/bh/forexample.gif" height=100px>
+<td align=right valign=center><img src="byob/bh/arrow3.gif" height=50px>
+<td align=right valign=center><img src="byob/bh/fortalking.gif">
+</tr></table>
+
+<P><TABLE><TR><TD>Build Your Own Blocks
+(<A HREF="http://snap.berkeley.edu"><img src="byob/bh/Logo5.png" 
+alt="Snap!" height=30px></A>
+a/k/a <A HREF="http://snap.berkeley.edu">BYOB</A>) is an extended version of
+<A HREF="http://scratch.mit.edu">Scratch</A>, a
+drag-and-drop programming language for kids from MIT.
+I've been working on it with Jens M&ouml;nig, adding
+<A HREF="BYOB.pdf">higher order functions</A> and true object
+inheritance for first-class sprites, to
+support an undergraduate-level
+introductory computer science course.  We have
+<A HREF="http://inst.eecs.berkeley.edu/~cs10">established such a course</A>
+at Berkeley, and are working on spreading it to other colleges and high
+schools through teacher preparation and support efforts.
+
+<P>This project really excites me &mdash; sneaking the ideas of Scheme
+into the visual metaphor of Scratch!<br />(<img src="ring.png"> at
+the right is &lambda;.)<br />
+Recently we also snuck in the vector and matrix functions of APL. :)
+<TD><TABLE>
+<TR><TD><IMG SRC="simplemap.png"></TR>
+<TR><TD><IMG SRC="mapsquare.png"></TR>
+</TABLE></TR></TABLE>
+
+<HR>
+
+<table><tr><td>
+<img src="bjc/bh/bjc200.png">&nbsp;&nbsp;
+<td><i>The <a href="bjc/index.html">Beauty and Joy of Computing</a></i> is
+Berkeley's computer science course for non-majors, and also, in somewhat
+different form, a <a href="http://bjc.edc.org">high school</a> CS course
+intended for a wide audience, including the kids who have not traditionally
+viewed themselves as CS nerds.  In addition to programming in Snap<i>!</i>, it
+includes a strong component of the social implications of computing.  The high
+school version is being developed in collaboration with <a
+href="http://edc.org">EDC</a>, a nonprofit R&amp;D company with long
+experience developing K-12 curricula.  It is College Board endorsed as meeting
+the requirements for the new AP <a href="http://csprinciples.org">CS
+Principles</a> exam.</tr></table>
+
+<HR>
+
+<H1>Berkeley Logo (UCBLogo)</H1>
+
+<TABLE><TR><TD valign="center">
+Berkeley Logo (<A HREF="usermanual">download manual as text</A>)
+(<A HREF="downloads/ucblogo.pdf">download manual as PDF</A>)
+(<A HREF="announce">download readme</A>)
+is a freeware interpreter that I wrote along with
+several students.  (Major contributors are Daniel van Blerkom, Khang Dao,
+Michael Katz, Douglas Orleans, and Sanford Owings.)
+
+<p>News!  UCBLogo development has been taken over by wonderful chief volunteer
+Josh Cogliati and bunches of other volunteers:
+dmalec, Barak A. Pearlmutter, janekr, hosiet, reinerh, atehwa, kilobyte, pahihu
+
+<p>The newest source tree is here:<br />
+<a href="https://github.com/jrincayc/ucblogo-code">https://github.com/jrincayc/ucblogo-code</a>.
+You can file bug reports in its issue tracker at Github.</p>
+<TD valign="center"><IMG SRC="ucblogo3.gif"></TABLE>
+
+<p>The current version is 6.2.2, posted 29 Dec 2021.</p>
+
+<p>Click here to retrieve
+the <STRONG>complete distribution</STRONG> archive for
+<A HREF="downloads/ucblogo.tar.gz">Unix/Linux</A>,
+<A HREF="downloads/UCBLogo.dmg">MacOS X</A>,
+or <A HREF="downloads/ucbwlogosetup.exe">Windows</A>,
+complete with C source code.
+
+<P>Here are links to version 5.3 for frozen platforms
+<A HREF="downloads/blogo.exe">DOS</A>
+or <A HREF="downloads/ucblogo.sea.hqx">Mac pre-OS X</A>.
+A version for the One Laptop Per Child XO is
+<A HREF="downloads/ucblogo-4.xo">here</A>.
+
+<p>(If you think Logo is just a graphics
+language for little kids, check out a
+<A HREF="logo-sample.html">sample program</A>
+that should impress you.)
+
+<P>Also consider David Costanzo's
+<A HREF="http://fmslogo.sourceforge.net/">FMSLogo</A>, an
+updated version of George Mills' MSWLogo,
+a multimedia-enhanced version for MS Windows based on Berkeley Logo.
+Or Andreas Micheler's
+<A HREF="http://aucblogo.org">aUCBLogo</A>,
+a rewrite and enhancement of UCBLogo.
+
+<P> Here are links to <A HREF="other-logos.html">other versions of Logo</A>.
+
+<P><SMALL>If you got here by Googling "logo" and are looking for someone to
+design a logotype (an identifying symbol) for your organization, you're in the
+wrong place.  This is the Logo computer programming language for
+learners!</SMALL>
+
+<P>
+<A NAME="CSLS"><TABLE WIDTH="100%"><TR><TD VALIGN=TOP>
+<A HREF="v1-toc2.html"><IMG SRC="csls1.jpg" ALT="v1 cover"></A></TD><TD VALIGN=TOP>
+<A HREF="v2-toc2.html"><IMG SRC="csls2.jpg" ALT="v2 cover"></A></TD><TD VALIGN=TOP>
+<A HREF="v3-toc2.html"><IMG SRC="csls3.jpg" ALT="v3 cover"></A></TD><TD VALIGN="center">
+(The beautiful cover art<BR>
+is by <A HREF="http://www.jonrife.com/">Jon Rife</A>.)
+</TD></TR></TABLE>
+
+<P>Now <STRONG>FREE</STRONG> for personal use:  The second edition of
+<CITE>Computer Science Logo Style</CITE>, a three-volume series intended
+mainly for teenagers and their teachers, or for adults who aren't professional
+programmers.  You can look at the tables of contents and <U><STRONG>complete
+downloadable PDFs</STRONG></U> and browsable HTML versions of
+
+<UL>
+<LI><CITE><A HREF="v1-toc2.html"><i>Symbolic Computing</i></A></CITE>,
+a Logo programming text that concentrates on natural language
+processing rather than the graphics most people associate with Logo.
+<LI><CITE><A HREF="v2-toc2.html">Advanced Techniques</A></CITE>,
+in which discussions of more advanced Logo features alternate with
+sample projects using those features, with commentary on the
+structure and style of each.
+<LI><CITE><A HREF="v3-toc2.html">Beyond Programming</A></CITE>,
+brief introductions to six college-level computer science topics.
+</UL>
+
+<EM>Note:  These books are still in copyright, and in print.  They are
+posted here for your personal use, not for resale or redistribution.
+Thanks!</EM>
+
+<P>MIT Press web pages for <CITE>Computer Science Logo Style</CITE>
+<a href="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">v1</a>
+<a href="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">v2</a>
+<a href="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">v3</a>
+
+<P>
+<DIV align="center">
+<TABLE    border="3" cellspacing="2" cellpadding="2" >
+<caption align="bottom" style="font: bold 14pt/12pt sans-serif">Logo Users Ring</caption>
+<TR>
+<TD bgcolor="#e6e7c9" align="right">
+<B>
+<a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=prev" target="_top">Previous</a>
+</b>
+</td>
+<TD bgcolor="#e6e7c9" align="right">
+ <a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=prev5" target="_top">5</a>
+</td>
+<TD bgcolor="#e6e7c9" rowspan=4>
+
+<img SRC="tshirt.jpg" width="200"  HEIGHT="121" ALT="Logo Spoken Here: Ring Home" BORDER=0 USEMAP="#logoring">
+<MAP NAME="logoring">
+<AREA SHAPE=RECT COORDS="0,0,40,15" HREF="http://www.ringsurf.com/netring?ring=logoring;action=addform" target="_top" ALT="Join">
+<AREA SHAPE=RECT COORDS="140,0,200,20" HREF="http://www.ringsurf.com/netring?ring=logoring;action=stats" target="_top" ALT="Statistics">
+<AREA SHAPE=RECT COORDS="0,15,199,122" HREF="http://www.ringsurf.com/netring?ring=logoring;action=home" target="_top" ALT="Ring Home">
+</map>
+</td>
+</tr>
+<TR>
+<TD bgcolor="#e6e7c9" align="right">
+<B>
+<a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=next" target="_top">Next</a>
+</b>
+</td>
+<TD bgcolor="#e6e7c9" align="right">
+<a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=next5" target="_top">5</a>
+</td>
+</tr>
+<TR>
+<TD bgcolor="#e6e7c9" colspan="2" align="right">
+<B>
+<a href="http://www.ringsurf.com/netring?ring=logoring;action=rand" target="_top">Random
+Site</a>
+</b>
+</td>
+</tr>
+<TR>
+<TD bgcolor="#e6e7c9" colspan="2" align="right">
+<B> 
+<a href="http://www.ringsurf.com/netring?ring=logoring;action=list" target="_top">List Sites</a>
+</b>
+</td>
+</tr>
+</table>
+</div>
+
+<HR>
+
+<P>
+<TABLE WIDTH="100%"><TR><TD VALIGN=TOP>
+Now <STRONG>FREE</STRONG> for personal use:  The second edition of
+<A HREF="ss-toc2.html">
+<CITE>Simply Scheme: Introducing Computer Science</CITE></A>,
+written with my colleague
+<A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew Wright</A>.
+The book is intended for college-level non-CS majors and
+for students who intend to major in CS but whose high school programming
+background hasn't prepared them for our first course for majors.<BR>
+<BR>
+The second edition was published in 1999.<BR>
+<BR>
+You can look at <U><STRONG>complete
+downloadable PDFs</STRONG></U> and browsable HTML versions of
+the chapters.
+<BR><BR>
+<EM>Note:  This book is still in copyright, and in print.  It is
+posted here for your personal use, not for resale or redistribution.
+Thanks!</EM>
+<BR><BR>
+</TD><TD><A HREF="ss-toc2.html"><IMG SRC="simply.jpg" ALT="cover art"></A>
+</TD></TR></TABLE>
+
+<P>Here are the <A HREF="ftp://ftp.cs.berkeley.edu/pub/scheme">
+program files</A> for use with the book (or by
+<A HREF="downloads/simply"> HTTP</A>).
+
+<P><A HREF="http://mitpress.mit.edu/books/simply-scheme-second-edition">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+
+<HR>
+
+<P>I've written several <A HREF="papers.html">papers about
+computers and education</A>.
+
+<HR>
+
+<P>I'm a member of
+the <A HREF="http://www.exploratorium.edu/">Exploratorium</A>,
+the <A HREF="http://eff.org">Electronic
+Frontier Foundation</A>,
+<A HREF="http://progfree.org/">the League for Programming Freedom</A>, and <A
+HREF="http://www.aclu.org/">the
+American Civil Liberties Union</A>.
+Other organizations I support include the
+<A HREF="http://epic.org">Electronic Privacy Information Center</A>,
+the <a href="http://bfhp.org">Berkeley Food and Housing Project</a>,
+the <a href="http://ecfs.org">Ethical Culture Fieldston School</a>,
+and <a href="http://campwinnarainbow.org">Camp Winnarainbow</a>.
+(The latter group are not membership organizations, hence the grouping.)
+
+<H3>So, what do you do for fun, Brian?</H3>
+
+<UL>
+<LI>I visit the <A HREF="http://www.exploratorium.edu/">Exploratorium</A>,
+the world's best museum.
+<LI>I watch the <A
+HREF="http://www.cs.cmu.edu/afs/cs.cmu.edu/user/clamen/misc/tv/Animaniacs/Animaniacs.html">
+Animaniacs</A>, the only good thing on television.  (The original ones, not
+the 2020 Hulu reboot, which is just okay.)
+<LI>I listen to 1964-1968 British rock, especially the 
+<A HREF="http://www.recmusicbeatles.com/">Beatles</A>.
+<LI>I read <A HREF="http://www.peterdickinson.com">Peter Dickinson</A> books,
+both his adult mystery novels and his books for children.
+<LI>I eat Chinese food.
+<LI>I collect <A HREF="art.html">art</A>,
+<A HREF="masks.html">masks</A>, and
+<a href="https://karakuribox-webshop.com/">Karakuri puzzle boxes.</li>
+<li align=middle><table align=middle><tr>
+<td align=middle><a align=middle href="https://thenib.com/"><img width="450px"
+align=middle src="webcomics/nib-logo.jpg"></a>&nbsp;</td>
+<td>presents new political cartoons daily M-F, by great cartoonists such as
+<a href="https://www.patreon.com/keefknight/posts">Keith Knight</a>,
+<a href="https://www.patreon.com/rubenbolling/posts">Ruben Bolling</a>,
+<a href="https://www.patreon.com/jensorensen">Jen Sorensen</a>,
+<a href="https://thismodernworld.com/">Tom Tomorrow</a>,
+<a href="https://mattbors.com/">Matt Bors</a>,
+and <a href="https://www.mikedawsoncomics.com/">Mike Dawson</a>.
+(Links are to their patreon pages or equivalent.)</td>
+</tr></table></li>
+<li><a href="http://www.websudoku.com"><img height="300px" width="300px"
+align=middle src="sudoku.png"></a>, 
+<a href="https://www.kenkenpuzzle.com/"><img height="300px" width="300px"
+align=middle src="kenken.png"></a>,
+<a href="https://www.futoshiki.org/"><img height="300px" width="300px"
+align=middle src="futoshiki.png"></a>.</li>
+<LI>How come all the best webcomics are about girls?<br />
+<a href="http://www.kiwiblitz.com/comic/"><img width="468px" src="webcomics/kiwi-blitz.png"></a>
+<a href="http://www.girlgeniusonline.com/comic.php"><img width="468px" src="webcomics/girlgenius.jpg"></a>
+<a href="http://www.sleeplessdomain.com/comic/">
+<img src="webcomics/sleepless.jpg" width="300px"></a>
+<br />But lately I've really gotten hooked:<br />
+<a href="http://www.casualvillain.com/Unsounded/comic/ch01/ch01_01.html">
+<img width="468px" src="webcomics/unsounded.jpg"></a>
+<a href="https://www.prophecyofthecircle.com/"><img width="468px" src="webcomics/prophecy-circle.png"></a>
+<a href="https://www.gunnerkrigg.com/"><img width="150px" src="webcomics/g-court.png"></a>
+<a href="http://giftscomic.com/"><img width="468px" height="61px" src="webcomics/gifts-ice.jpg"></a>
+<a href="https://www.trippingoveryou.com/comic/"><img width="468px" src="webcomics/tripping-over-you.png"></a>
+<a href="http://www.sandraandwoo.com/gaia/"><img width="468px" height="61px" src="webcomics/gaia-ha-02stretched.png"></a>
+<a href="http://www.twindragonscomic.com/"><img width="468px" src="webcomics/twin-dragons.png"></a>
+<a href="https://www.awakencomic.com/"><img width="468px" height="61px" src="webcomics/awaken.jpg"></a>
+<a href="https://replaycomic.com/"><img width="468px" src="webcomics/replay.jpg"></a>
+<a href="https://centralia2050.com/"><img width="468px" src="webcomics/centralia.png"></a>
+<a href="https://twokinds.keenspot.com/"><img width="468px" src="webcomics/twokinds.png"></a>
+<a href="https://existentialcomics.com/"><img width="280px" src="webcomics/existentialism.png"></a><br />
+<a href="http://www.white-noise-comic.com/"><img width="220px" src="webcomics/white-noise.png"></a>
+&nbsp;<a href="https://www.ctccomic.com/comic"><img width="234px" src="webcomics/countdown.png"></a>
+<br />And of course I read the classics:<br />
+<a href="https://www.washingtonpost.com/doonesbury/"><img width="280px" src="webcomics/doonesbury.png"></a>
+<a href="https://xkcd.com/"><img  src="webcomics/xkcd.png"></a>
+<a href="https://foxtrot.com/"><img width="300px" src="webcomics/foxtrot.png"></a>
+<a href="https://www.smbc-comics.com/"><img width="330px" src="webcomics/smbc.png"></a>
+<a href="https://questionablecontent.net/"><img width="290px" src="webcomics/qc.png"></a>
+</li>
+</UL>
+
+<P>Check out the <A HREF="http://www.anu.edu.au/polsci/marx/marx.html">Marxism
+page</A> and the <A HREF="http://www.marxists.org/">Marxists Internet
+Archive</A>.
+
+<P>Check out the <A HREF="turkey.html">world's best turkey
+stuffing recipe</A>.
+
+<P>
+<ADDRESS>
+<CODE>bh@cs.berkeley.edu</CODE>
+<img src="http://www.cs.Berkeley.EDU/People/Faculty/Images/harvey.small.gif" ALT="">
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/kenken.png b/js/games/nluqo.github.io/~bh/kenken.png
new file mode 100644
index 0000000..27bf324
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/kenken.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/logic-code/backtrack.lg b/js/games/nluqo.github.io/~bh/logic-code/backtrack.lg
new file mode 100644
index 0000000..fe8749c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/logic-code/backtrack.lg
@@ -0,0 +1,42 @@
+;;; Solve logic problems by pure backtracking
+
+
+to track :lists :tests
+foreach first :lists [make ? array count bf :lists]
+catch "tracked [track1 first :lists bf :lists 1]
+end
+
+to track1 :master :others :index
+if emptyp :others [tracktest stop]
+track2 :master first :others bf :others
+end
+
+to track2 :names :these :those
+if emptyp :these [track1 :master :those :index+1 stop]
+foreach :these [setitem :index thing first :names ?
+                track2 bf :names remove ? :these :those]
+end
+
+to tracktest
+foreach :tests [if not run ? [stop]]
+foreach :master [pr se ? arraytolist thing ?]
+throw "tracked
+end
+
+to is :this :that
+if memberp :this :master [output memberp :that thing :this]
+if memberp :that :master [output memberp :this thing :that]
+localmake "who find [memberp :this thing ?] :master
+output memberp :that thing :who
+end
+
+
+to differ :things
+if emptyp bf :things [op "true]
+op and (differ1 first :things bf :things) (differ bf :things)
+end
+
+to differ1 :this :those
+foreach :those [if is :this ? [output "false]]
+output "true
+end
diff --git a/js/games/nluqo.github.io/~bh/logic-code/hybrid.lg b/js/games/nluqo.github.io/~bh/logic-code/hybrid.lg
new file mode 100644
index 0000000..4ab033f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/logic-code/hybrid.lg
@@ -0,0 +1,256 @@
+;;; Logic problem inference system
+;;; Hybrid version: inference and backtracking
+
+;; If you wrote procedure FOO to solve a problem in the inference
+;; version, say SOLVE [FOO] to solve it in this version!
+
+;; MAKE "SHORT "TRUE to eliminate printing new facts
+;; MAKE "LONG "TRUE to add printing new implications
+
+to solve :problem
+if not namep "short [localmake "short "false]
+if not namep "long [localmake "long "false]
+localmake "indent 0
+localmake "message runresult [catch "contradiction :problem]
+if not emptyp :message [print :message]
+end
+
+;; Establish categories
+
+to category :category.name :members
+print (list "category :category.name :members)
+if not namep "categories [make "categories []]
+make "categories lput :category.name :categories
+make :category.name :members
+foreach :members [pprop ? "category :category.name]
+end
+
+;; Verify and falsify matches
+
+to verify :a :b
+settruth :a :b "true
+end
+
+to falsify :a :b
+settruth :a :b "false
+end
+
+to settruth :a :b :truth.value
+if equalp (gprop :a "category) (gprop :b "category) [stop]
+localmake "oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw "contradiction (sentence [inconsistency in settruth]
+                                    :a :b :truth.value))]
+if not :short [indent print (list :a :b "-> :truth.value)]
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply "settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word "find not :truth.value) (list :a :b)
+foreach (gprop :a "true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a "false) [falsify ? :b]
+                 pprop :a (gprop :b "category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+
+to findfalse :a :b
+foreach (filter [not equalp get ? :b "true] peers :a) ~
+        [falsify ? :b]
+end
+
+to findtrue :a :b
+if equalp (count peers :a) (1+falses :a :b) ~
+   [verify (find [not equalp get ? :b "false] peers :a)
+           :b]
+end
+
+to falses :a :b
+output count filter [equalp "false get ? :b] peers :a
+end
+
+to peers :a
+output thing gprop :a "category
+end
+
+to indent
+repeat :indent [type "| |]
+end
+
+;; Common types of clues
+
+to differ :list
+print (list "differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+
+to neighbor :this :that :lineup
+falsify :this :that
+implies :this first :lineup "true :that first bf :lineup "true
+implies :that first :lineup "true :this first bf :lineup "true
+implies :this last :lineup "true :that last bl :lineup "true
+implies :that last :lineup "true :this last bl :lineup "true
+neighbor1 :lineup count :lineup
+end
+
+to neighbor1 :lineup :count
+if :count=0 [stop]
+foreach (bf bf bf :lineup) [
+  implies :this first bf :lineup "true :that ? "false
+  implies :that first bf :lineup "true :this ? "false
+]
+neighbor1 (lput first :lineup bf :lineup) :count-1
+end
+
+to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+;; Remember conditional linkages
+
+to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake "old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+localmake "old2 get :who2 :what2
+if equalp :old2 :truth2 [stop]
+if equalp :old2 (not :truth2) [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list (not :truth1) :who2 :what2 :truth2) :old1 ~
+   [settruth :who2 :what2 :truth2  stop]
+if memberp (list (not :truth1) :what2 :who2 :truth2) :old1 ~
+   [settruth :who2 :what2 :truth2  stop]
+if :long [indent
+          pr (se "|(| :who1 :what1 :truth1 "-> :who2 :what2 :truth2 "|)|)]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+store :who2 :what2 ~
+      fput (list (not :truth2) :who1 :what1 (not :truth1)) :old2
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "true
+implies :who2 :what2 "true :who1 :what1 "true
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "false
+implies :who1 :what1 "false :who2 :what2 "true
+end
+;; Interface to property list mechanism
+
+to get :a :b
+output gprop :a :b
+end
+
+to store :a :b :val
+pprop :a :b :val
+pprop :b :a :val
+end
+
+;; Backtrack if necessary
+
+to solution
+localmake "stack []
+localmake "size (count thing first :categories)
+localmake "number (count :categories)-1
+catch "solved [try.solution]
+end
+
+to try.solution
+if solvedp [print [] print.solution throw "solved]
+foreach get.assumptions ~
+        [if not wordp (get first ? last ?)
+            [save.state
+             localmake "indent :indent+2
+             make "message runresult [catch "contradiction [make.assumption ?
+                                                            try.solution]]
+             if not emptyp :message [indent print :message]
+             indent print (sentence "Assumption ? "failed)
+             restore.state 
+             make "indent :indent-2
+             if not emptyp :message [falsify first ? last ?]
+             if solvedp [print [] print.solution throw "solved]]]
+end
+
+to solvedp
+foreach thing first :categories [if not equalp :number count gprop ? "true
+                                    [output "false]]
+output "true
+end
+
+to save.state
+push "stack map [list ? plist ?] map.se "thing :categories
+end
+
+to restore.state
+erpls
+foreach pop "stack [setplist first ? last ?]
+end
+
+to setplist :name :list
+if emptyp :list [stop]
+pprop :name first :list first butfirst :list
+setplist :name butfirst butfirst :list
+end
+
+to get.assumptions
+localmake "array array :size
+foreach (thing first :categories) ~
+        [[this] foreach (butfirst :categories)
+                [[that] assume]]
+op map.se [item ? :array] iseq 1 :size
+end
+
+to assume ;; implicit arguments THIS (an individual) and THAT (a category)
+if wordp gprop :this :that [stop]
+localmake "tries filter [not wordp gprop :this ?] thing :that
+localmake "slot count :tries
+foreach :tries [setitem :slot :array fput (list :this ?) (item :slot :array)]
+end
+
+to make.assumption :assume
+print [] indent print sentence "Assuming :assume
+verify first :assume last :assume
+end
+;; Print the solution
+
+to print.solution
+foreach thing first :categories [solve1 ? butfirst :categories]
+end
+
+to solve1 :who :order
+type :who
+foreach :order [type "| |   type gprop :who ?]
+print []
+end
+
+;; Get rid of old problem data
+
+to cleanup
+if not namep "categories [stop]
+ern :categories
+ern "categories
+erpls
+end
diff --git a/js/games/nluqo.github.io/~bh/logic-code/meta.lg b/js/games/nluqo.github.io/~bh/logic-code/meta.lg
new file mode 100644
index 0000000..c5912db
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/logic-code/meta.lg
@@ -0,0 +1,206 @@
+;;; Logic problem inference system
+;;; Meta-inference rule version
+
+;; Establish categories
+
+to category :category.name :members
+print (list "category :category.name :members)
+if not namep "categories [make "categories []]
+make "categories lput :category.name :categories
+make :category.name :members
+foreach :members [pprop ? "category :category.name]
+end
+
+;; Verify and falsify matches
+
+to verify :a :b
+settruth :a :b "true
+end
+
+to falsify :a :b
+settruth :a :b "false
+end
+
+to settruth :a :b :truth.value
+if equalp (gprop :a "category) (gprop :b "category) [stop]
+localmake "oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw "error (sentence [inconsistency in settruth]
+                            :a :b :truth.value))]
+print (list :a :b "-> :truth.value)
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply "settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word "find not :truth.value) (list :a :b)
+foreach (gprop :a "true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a "false) [falsify ? :b]
+                 pprop :a (gprop :b "category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+
+to findfalse :a :b
+foreach (filter [not equalp get ? :b "true] peers :a) ~
+        [falsify ? :b]
+end
+
+to findtrue :a :b
+if equalp (count peers :a) (1+falses :a :b) ~
+   [verify (find [not equalp get ? :b "false] peers :a)
+           :b]
+end
+
+to falses :a :b
+output count filter [equalp "false get ? :b] peers :a
+end
+
+to peers :a
+output thing gprop :a "category
+end
+
+;; Common types of clues
+
+to differ :list
+print (list "differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+
+to neighbor :this :that :lineup
+falsify :this :that
+implies :this first :lineup "true :that first bf :lineup "true
+implies :that first :lineup "true :this first bf :lineup "true
+implies :this last :lineup "true :that last bl :lineup "true
+implies :that last :lineup "true :this last bl :lineup "true
+neighbor1 :lineup count :lineup
+end
+
+to neighbor1 :lineup :count
+if :count=0 [stop]
+foreach (bf bf bf :lineup) [
+  implies :this first bf :lineup "true :that ? "false
+  implies :that first bf :lineup "true :this ? "false
+]
+neighbor1 (lput first :lineup bf :lineup) :count-1
+end
+
+to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+;; Remember conditional linkages
+
+to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+if equalp (gprop :who1 "category) (gprop :what1 "category) [stop]
+if equalp (gprop :who2 "category) (gprop :what2 "category) [stop]
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+
+to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake "old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 :truth2) :old1 [stop]
+if memberp (list :truth1 :what2 :who2 :truth2) :old1 [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+if :truth2 [foreach (remove :who2 peers :who2)
+                    [implies :who1 :what1 :truth1 ? :what2 "false]
+            foreach (remove :what2 peers :what2)
+                    [implies :who1 :what1 :truth1 :who2 ? "false]]
+if not :truth2 [implies2 :what2 (remove :who2 peers :who2)
+                implies2 :who2 (remove :what2 peers :what2)]
+foreach (gprop :who2 "true) ~
+        [implies :who1 :what1 :truth1 ? :what2 :truth2]
+foreach (gprop :what2 "true) ~
+        [implies :who1 :what1 :truth1 :who2 ? :truth2]
+if :truth2 ~
+   [foreach (gprop :who2 "false)
+            [implies :who1 :what1 :truth1 ? :what2 "false]
+    foreach (gprop :what2 "false)
+            [implies :who1 :what1 :truth1 :who2 ? "false]]
+end
+
+to implies2 :one :others
+localmake "left filter [not (or memberp (list :truth1 :one ? "false) :old1
+                                memberp (list :truth1 ? :one "false) :old1
+                                (and :truth1
+                                     (or (and equalp ? :who1
+                                              equalp gprop :what1 "category
+                                                     gprop :one "category)
+                                         (and equalp ? :what1
+                                              equalp gprop :who1 "category
+                                                     gprop :one "category))
+                                     (not or equalp :one :who1 
+                                             equalp :one :what1))
+                                equalp get :one ? "false)] ~
+                       :others
+if emptyp :left [settruth :who1 :what1 (not :truth1) stop]
+if emptyp butfirst :left ~
+   [implies :who1 :what1 :truth1 :one first :left "true]
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "true
+implies :who2 :what2 "true :who1 :what1 "true
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "false
+implies :who1 :what1 "false :who2 :what2 "true
+end
+
+;; Interface to property list mechanism
+
+to get :a :b
+output gprop :a :b
+end
+
+to store :a :b :val
+pprop :a :b :val
+pprop :b :a :val
+end
+
+;; Print the solution
+
+to solution
+foreach thing first :categories [solve1 ? butfirst :categories]
+end
+
+to solve1 :who :order
+type :who
+foreach :order [type "| |   type gprop :who ?]
+print []
+end
+
+;; Get rid of old problem data
+
+to cleanup
+if not namep "categories [stop]
+ern :categories
+ern "categories
+erpls
+end
diff --git a/js/games/nluqo.github.io/~bh/logic.html b/js/games/nluqo.github.io/~bh/logic.html
new file mode 100644
index 0000000..2f762c4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/logic.html
@@ -0,0 +1,703 @@
+<HTML>
+<HEAD>
+<TITLE>Reasoning with Computers</TITLE>
+</HEAD>
+<BODY>
+<H1>Reasoning with Computers</H1>
+
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>``Intelligent agents'' are said to be right around the corner; some products
+are already available.  These programs are supposed to watch you work, make
+inferences about your preferred style, and automate repetitive tasks.  They
+will sift through all the nonsense on the World Wide Web and find only those
+items you'll really want to read.  They'll be teammates or opponents in
+computer games.
+
+<P>How can computer programs make inferences?  I chose logic puzzles as a
+testbed for experimentation.  Logic puzzles are a relatively easy test case
+because each puzzle forms a ``closed world''; we know in advance all the
+possible names, ages, house colors, or whatever characteristics the puzzle
+asks us to match up.  There is no new computer science here.  I am more or
+less recapitulating the early history of computer inference systems.  But
+educationally that may be more helpful than the complexities of the most
+modern attempts.
+
+<H2>An Inference System for One Logic Puzzle</H2>
+
+<P>I first worked on this project when I wrote the third volume of <I>Computer
+Science Logo Style</I> (MIT Press, 1987).  In that volume the task I set for
+myself was to introduce some of the topics in the undergraduate computer
+science curriculum to a younger audience, and to illustrate the ideas with
+Logo programs rather than with formal proofs.  I wanted to discuss logic as
+part of discrete mathematics, and thought of logic puzzles as the task for
+an illustrative Logo program.
+
+<P>The program I wrote solved only one logic puzzle, taken from <I>Mind
+Benders</I> Book B-2, by Anita Harnadek (Critical Thinking Press, 1978):
+
+<BLOCKQUOTE>
+<P>A cub reporter interviewed four people.  He was very careless, however.
+Each statement he wrote was half right and half wrong.  He went back and
+interviewed the people again.  And again, each statement he wrote was
+half right and half wrong.  From the information below, can you
+straighten out the mess?
+
+<P>The first names were Jane, Larry, Opal, and Perry.  The last names were
+Irving, King, Mendle, and Nathan.  The ages were 32, 38, 45, and 55.  The
+occupations were drafter, pilot, police sergeant, and test car driver.
+
+<P>On the first interview, he wrote these statements, one from each person:
+
+<UL>
+<LI>1. Jane: ``My name is Irving, and I'm 45.''
+<LI>2. King: ``I'm Perry and I drive test cars.''
+<LI>3. Larry: ``I'm a police sergeant and I'm 45.''
+<LI>4. Nathan: ``I'm a drafter, and I'm 38.''
+</UL>
+
+<P>On the second interview, he wrote these statements, one from each person:
+
+<UL>
+<LI>5. Mendle: ``I'm a pilot, and my name is Larry.''
+<LI>6. Jane: ``I'm a pilot, and I'm 45.''
+<LI>7. Opal: ``I'm 55 and I drive test cars.''
+<LI>8. Nathan: ``I'm 38 and I drive test cars.''
+</UL>
+</BLOCKQUOTE>
+
+<P>This puzzle includes four <I>categories</I>: first name, last name, job,
+and age.  In each category there are four <I>individuals</I>; for example, the
+first name individuals are Jane, Larry, Opal, and Perry.
+
+<P>For every possible pairing of individuals in different categories (for
+example, Jane and pilot), the program keeps track of what it knows about
+whether or not they go together.  Initially it knows nothing, but, for
+example, after the first interview the program knows that Jane is not King,
+since the four statements are from different people.
+
+<P>For any given pairing, the program can know nothing, can know that the two
+individuals <I>are</I> the same, or can know that the two individuals <I>are
+not</I> the same.  But there is also a fourth, perhaps more interesting,
+situation.  After the first interview, the program does not know whether or
+not Jane and Irving are the same person, nor whether Jane and age 45 are the
+same person.  But it does know that if one of these is true, the other must be
+false, and vice versa.  This fact is represented as a <I>link</I> between the
+Jane-Irving pair and the Jane-45 pair.
+
+<P>The program works by making <I>assertions</I> based on the puzzle statement.
+From the first interview we get the following assertions:
+
+
+<UL>
+<LI>Jane-King is false.
+<LI>Jane-Nathan is false.
+<LI>Larry-King is false.
+<LI>Larry-Nathan is false.
+<LI>Jane-Irving is linked to Jane-45.
+<LI>King-Perry is linked to King-driver.
+<LI>Larry-sergeant is linked to Larry-45.
+<LI>Nathan-drafter is linked to Nathan-38.
+</UL>
+
+<P>As each assertion is recorded in the database, the program tries to use
+<I>rules of inference</I> to draw conclusions from the new assertion and the
+assertions already recorded.  Here are the rules:
+
+<UL>
+<LI>Elimination rule:  If the X-Y pairs are false for all but one
+individual Y in a given category, then the remaining possibility
+must be true.
+
+<LI>Uniqueness rule:  If some X-Y pair is true, then every other X-Z pair
+must be false if Z is in the same category as Y.
+
+<LI>Transitive rules:  If X-Y is true, and Y-Z is true, then X-Z must
+also be true.  If X-Y is true, and Y-Z is false, then X-Z must be
+false.
+
+<LI>Link falsification:  If X-Y is linked to Z-W, and we learn that X-Y
+is true, then Z-W must be false.
+
+<LI>Link verification:  If X-Y is linked to Z-W, and we learn that X-Y
+is false, then Z-W must be true.
+</UL>
+
+<P>For each new assertion, there are only a finite number of possible
+inferences using these rules.  If we assert that X-Y is true, then the
+program must check the uniqueness rule for each other individual in the same
+category as X, and for each other individual in the same category as Y.  It
+must check the transitive rules for the other known pairs involving X or Y.
+And if there was already a link involving X-Y, then it must apply the link
+falsification rule.
+
+<P>Similarly, if we assert that X-Y is false, then the program must check the
+elimination rule, the second transitive rule, and the link verification rule.
+
+<H2>An Inference System for Many Logic Puzzles</H2>
+
+<P>This first program worked fine for this particular puzzle, but couldn't
+handle other puzzles.  The most obvious problem was that the link
+verification and link falsification rules apply only to this puzzle.  (The
+other three rules apply to any logic puzzle.)
+
+<P>In preparing the second edition of <I>Computer Science Logo Style</I> (MIT
+Press, 1997), I decided to generalize these link rules.  In Anita Harnadek's
+puzzle, two pairs are linked only through mutual exclusion; exactly one of the
+pairs must be true.  More generally, two pairs might be linked by an
+<I>implication</I>:
+
+<BLOCKQUOTE>
+If X-Y is true/false, then Z-W must be true/false.
+</BLOCKQUOTE>
+
+<P>So each link in the first program became two implications in the second
+version.  For example:
+
+<BLOCKQUOTE>
+If Jane-Irving is true, then Jane-45 must be false.<BR>
+If Jane-Irving is false, then Jane-45 must be true.
+</BLOCKQUOTE>
+
+<P>These two implications are logically independent; one cannot be derived from
+the other.
+
+<P>Once the program (reproduced in appendix A) (or
+<A HREF="https://people.eecs.berkeley.edu/~bh/logic-code/infer.lg">download it</A>) can record implications, we
+replace the link falsification and link verification rules with three new
+rules about implications:
+
+<UL>
+<LI>Contrapositive rule:  If P implies Q, then not-Q implies not-P.
+
+<LI>Implication rule (modus ponens):  If P implies Q, and P is true,
+then Q must be true.
+
+<LI>Contradiction rule:  If P implies Q, and P also implies not-Q, then
+P must be false.
+</UL>
+
+<P>In these rules, P and Q represent statements about the truth or falsehood of
+a pair, e.g., ``Jane-Irving is false.''
+
+<P>The modified program can solve not only Anita Harnadek's puzzle but also
+several others that I tried, taken from a Dell puzzle book.
+
+<H2>Backtracking</H2>
+
+<P>By coincidence, my work on the second edition of <I>Computer Science Logo
+Style</I> happened at about the same time that Harold Abelson, Gerald Jay
+Sussman, and Julie Sussman were working on the second edition of their
+brilliant text, <I>Structure and Interpretation of Computer Programs</I> (MIT
+Press, 1996).  Their second edition introduced several new topics, one of
+which was -- here's the coincidence -- logic puzzles.  I tried out my
+program on their example puzzles, such as this one:
+
+<BLOCKQUOTE>
+<P>Five schoolgirls sat for an examination.  Their parents -- so they
+thought -- showed an undue degree of interest in the result.  They
+therefore agreed that, in writing home about the examination, each girl
+should make one true statement and one untrue one.  The following are
+the relevant passages from their letters:
+
+<UL>
+<LI>Betty: ``Kitty was second in the examination.  I was only third.''
+<LI>Ethel: ``You'll be glad to hear that I was on top.  Joan was second.''
+<LI>Joan: ``I was third, and poor old Ethel was bottom.''
+<LI>Kitty: ``I came out second.  Mary was only fourth.''
+<LI>Mary: ``I was fourth.  Top place was taken by Betty.''
+</UL>
+
+<P>What in fact was the order in which the five girls were placed?
+</BLOCKQUOTE>
+
+<P>Since this puzzle is very similar in form to the other one, with paired true
+and false statements, I thought my program would solve it easily.  Here is
+how I represented the puzzle in Logo:
+
+<PRE>
+to exam
+cleanup
+category "person [Betty Ethel Joan Kitty Mary]
+category "place [1 2 3 4 5]
+xor "Kitty 2 "Betty 3
+xor "Ethel 1 "Joan 2
+xor "Joan 3 "Ethel 5
+xor "Kitty 2 "Mary 4
+xor "Mary 4 "Betty 1
+print []
+solution
+end
+</PRE>
+
+To my dismay, my program was unable to discover any facts at all from this
+puzzle!
+
+<P>The program used by Abelson and Sussman does not work by making inferences
+from known facts.  Instead, it works by <I>backtracking</I>: trying every
+possible combination of names with places, and rejecting the ones that lead
+to a contradiction.  This is more of a ``brute force'' approach; many possible
+combinations must be tried.  (In this example, there are 120 possibilities,
+five factorial.)
+
+<P>A Logo version of the backtracking program is in appendix B (or
+<A HREF="logic-code/backtrack.lg">download it</A>).  Here is how
+the program can be used to solve the examination puzzle:
+
+<PRE>
+to exam
+track [[Betty Ethel Joan Kitty Mary] [1 2 3 4 5]] ~
+      [[not equalp (is "Kitty 2) (is "Betty 3)]
+       [not equalp (is "Ethel 1) (is "Joan 2)]
+       [not equalp (is "Joan 3) (is "Ethel 5)]
+       [not equalp (is "Kitty 2) (is "Mary 4)]
+       [not equalp (is "Mary 4) (is "Betty 1)]]
+end
+</PRE>
+
+<P>The general backtracking procedure TRACK takes two inputs.  The first is a
+list of lists, one for each category, naming the individuals in that
+category.  (The categories themselves don't have names in this program.)
+The second input is also a list of lists, each of which is a Logo expression
+whose value must be TRUE for a correct solution.  The tests use a predicate
+procedure IS that takes two inputs and outputs true if they correspond to
+the same person in the particular proposed combination that the program is
+trying.
+
+<P>The backtracking procedure can also be used to solve the earlier puzzle
+about the cub reporter:
+
+<PRE>
+to cub.reporter
+track [[Jane Larry Opal Perry]
+       [Irving King Mendle Nathan]
+       [32 38 45 55]
+       [drafter pilot sergeant driver]] ~
+      [[differ [Jane King Larry Nathan]]
+       [says "Jane "Irving 45]
+       [says "King "Perry "driver]
+       [says "Larry "sergeant 45]
+       [says "Nathan "drafter 38]
+       [differ [Mendle Jane Opal Nathan]]
+       [says "Mendle "pilot "Larry]
+       [says "Jane "pilot 45]
+       [says "Opal 55 "driver]
+       [says "Nathan 38 "driver]]
+end
+
+to differ :things
+if emptyp bf :things [op "true]
+op and (differ1 first :things bf :things) (differ bf :things)
+end
+
+to differ1 :this :those
+foreach :those [if is :this ? [output "false]]
+output "true
+end
+
+to says :who :one :two
+output not equalp (is :who :one) (is :who :two)
+end
+</PRE>
+
+<P>I wrote the backtracking solution to this puzzle using the same names DIFFER
+and SAYS for the procedures that embody the facts of the puzzle, but they
+are not the same DIFFER and SAYS that are used in the original version.  The
+originals add assertions to a database; these are predicates that output
+TRUE if the current combination satisfies the condition.
+
+<P>The trouble with the backtracking solution to the cub reporter puzzle is
+that it's quite slow.  There are 13,824 possible arrangements of first
+names, last names, jobs, and ages.  (There are 24 possible combinations of
+first and last names, times 24 combinations of name and job, times 24
+combinations of name and age.)  The program might get lucky and find a
+solution on its first try, but on average it will have to examine half of
+the possible combinations before finding a solution.
+
+<H2>Repairing the Inference System</H2>
+
+<P>Why couldn't my inference program solve the examination puzzle?  One crucial
+difference between the two puzzles discussed here is that the first includes
+some direct assertions, such as the fact that Jane-King is false.  The
+second puzzle tells us no actual facts; it's entirely implications.  As a
+result, the implication rule (modus ponens) can't infer any facts.
+
+<P>If we don't have enough facts, we have to get more mileage out of the
+implications.  Each of the inference rules for assertions gives rise to a
+corresponding rule for implications:
+
+<UL>
+<LI>Meta-elimination rules:  If P implies that the X-Y pair is false for
+all but one individual Y in a given category, then P implies that
+the remaining possibility must be true.  If P implies that the X-Y
+pair is false for <I>every</I> Y in a given category, then P is false.
+
+<LI>Meta-uniqueness rule:  If P implies that some X-Y pair is true, then
+P implies that every other X-Z pair must be false if Z is in the
+same category as Y.
+
+<LI>Meta-transitive rules:  If P implies that X-Y is true, and if Y-Z is
+true, then P also implies that X-Z is true.  If P implies that X-Y
+is true, and if Y-Z is false, then P implies that X-Z is false.
+</UL>
+
+<P>When the inference program is modified to include these new rules (appendix
+C) (or <A HREF="logic-code/meta.lg">download it</A>), it can solve the
+examination puzzle as well as the cub reporter puzzle.  The cost is that the
+solution is <I>very</I> slow, even for the original puzzle, because the new
+rules allow the program to infer many new implications, each of which must be
+tested in later steps to see if it, combined with new information, allows yet
+another implication to be inferred.
+
+<P>I discovered this example as I was working on the final draft of my books.
+Should I include the modified program?  In the end, I decided not to change
+the printed version, because the modified version is so slow even for easy
+puzzles.  The original version does work for most of the puzzles I found
+in puzzle books; the difficulty of published puzzles is limited by the fact
+that mere human beings must be able to solve them!
+
+<H2>Implications Unleashed</H2>
+
+<P>Even the modified version of the program does not make every possible
+inference from implications.  For example, I included these rules:
+
+<UL>
+<LI>Meta-transitive rules:  If P implies that X-Y is true, and if Y-Z is
+true, then P also implies that X-Z is true.  If P implies that X-Y
+is true, and if Y-Z is false, then P implies that X-Z is false.
+</UL>
+
+but I didn't include these:
+
+<UL>
+<LI>Meta-meta-transitive rules:  If P implies that X-Y is true, and if P
+implies that Y-Z is true, then P also implies that X-Z is true.  If
+P implies that X-Y is true, and if P implies that Y-Z is false, then
+P implies that X-Z is false.
+
+<LI>All bases covered rule:  If P implies Q, and not-P implies Q, then
+Q must be true.
+
+<LI>Meta-meta-meta-transitive rules:  If P implies that X-Y is true, and
+if Q implies that Y-Z is true, then P and Q together imply that X-Z
+is true.  If P implies that X-Y is true, and if Q implies that Y-Z
+is false, then P and Q together imply that X-Z is false.
+</UL>
+
+<P>Also, my program can only accept implications about basic assertions.  That
+is, if P and Q are statements such as ``X-Y is true'' or ``Z-W is false'' then
+I can represent the implication ``P implies Q,'' but my program has no way to
+represent an implication such as ``(P implies Q) implies R.''
+
+<P>In fact, it's because of the limitation on the assertions that can be
+represented in this program that I need so many rules.  A general inference
+system won't have transitive rules at all, meta- or not.  Instead it will
+represent assertions in a more general way so that
+
+<BLOCKQUOTE>
+for any x, y, and z, is(x,y) and is(y,z) implies is(x,z)
+</BLOCKQUOTE>
+
+can be represented as an assertion, not as a rule.  In such a system, the
+number of rules needed is much smaller.  In effect, I've again fallen into the
+same trap that led me to have the link falsification and link verification
+rules in the first version of the program.  I eliminated the need for those
+rules by allowing my program to represent implications as well as basic facts.
+But I'm still limited to implications tied to a particular X-Y pair.  What I
+can't represent in an assertion is the ``for any x, y, and z'' part of this
+transitive property.  A system like mine, in which assertions are about
+specific individuals, is a <I>propositional</I> logic.  One in which I can say
+``for any x'' is a <I>predicate</I> logic.
+
+<P>My original program, which could only record basic assertions except for one
+ad hoc kludge for links, could truly discover every possible inference from
+the facts it was given.  But once we introduce the idea of implications,
+there is no bound on the number of possible inferences.  To write a
+practical program, we must draw a line somewhere, and decline to make
+inferences that are too complicated.
+
+<H2>Forward and Backward Chaining</H2>
+
+<P>My program works by starting with the known facts and inferring as many new
+facts as it can.  This approach is called ``forward chaining.''  Most
+practical inference systems today use ``backward chaining'':  The program
+starts with a question, such as ``What is Jane's last name,'' and looks for
+known facts that might help answer that question.  In practice this can
+effectively limit the number of dead-end chains of inference that the
+program follows.
+
+<H2>Inference Versus Backtracking</H2>
+
+<P>Backtracking works best for puzzles with few categories, because increasing
+the number of categories dramatically increases the number of possible
+combinations that must be tested.  But a backtracking program is not much
+affected by the nature of the information given by the puzzle.  By contrast,
+inference works best for puzzles that include plenty of basic facts in the
+information given, but an inference program is not much affected by the
+number of categories.  Each approach has strengths and weaknesses.
+
+<P>How do <I>people</I> solve logic puzzles?  We often use a combination of
+the two methods.  We generally start by making inferences, but if we get
+stuck, we switch to a backtracking approach.  Backtracking works well if
+inferences have already ruled out most of the possible solutions, so that
+there aren't as many left to test.  Computer inference systems have also been
+written using this hybrid technique.  Such a program is harder to write,
+because it's not easy to specify precise rules to decide when to switch from
+inference to backtracking, and because the program's data structures must
+accommodate both techniques.  The advantage is that solutions can be found
+quickly for a wide range of problems.
+
+<P>[Addendum:  Since publishing this, I've written a hybrid program, which
+you can <A HREF="logic-code/hybrid.lg">download</A>.]
+
+<H2>Appendix A:  The Inference Program</H2>
+
+<PRE>
+;; Establish categories
+
+to category :category.name :members
+print (list "category :category.name :members)
+if not namep "categories [make "categories []]
+make "categories lput :category.name :categories
+make :category.name :members
+foreach :members [pprop ? "category :category.name]
+end
+
+;; Verify and falsify matches
+
+to verify :a :b
+settruth :a :b "true
+end
+
+to falsify :a :b
+settruth :a :b "false
+end
+
+to settruth :a :b :truth.value
+if equalp (gprop :a "category) (gprop :b "category) [stop]
+localmake "oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw "error (sentence [inconsistency in settruth]
+                            :a :b :truth.value))]
+print (list :a :b "-> :truth.value)
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply "settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word "find not :truth.value) (list :a :b)
+foreach (gprop :a "true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a "false) [falsify ? :b]
+                 pprop :a (gprop :b "category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+
+to findfalse :a :b
+foreach (filter [not equalp get ? :b "true] peers :a) ~
+        [falsify ? :b]
+end
+
+to findtrue :a :b
+if equalp (count peers :a) (1+falses :a :b) ~
+   [verify (find [not equalp get ? :b "false] peers :a)
+           :b]
+end
+
+to falses :a :b
+output count filter [equalp "false get ? :b] peers :a
+end
+
+to peers :a
+output thing gprop :a "category
+end
+
+;; Common types of clues
+
+to differ :list
+print (list "differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+
+to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+;; Remember conditional linkages
+
+to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+
+to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake "old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "true
+implies :who2 :what2 "true :who1 :what1 "true
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "false
+implies :who1 :what1 "false :who2 :what2 "true
+end
+
+;; Interface to property list mechanism
+
+to get :a :b
+output gprop :a :b
+end
+
+to store :a :b :val
+pprop :a :b :val
+pprop :b :a :val
+end
+
+;; Print the solution
+
+to solution
+foreach thing first :categories [solve1 ? butfirst :categories]
+end
+
+to solve1 :who :order
+type :who
+foreach :order [type "| |   type gprop :who ?]
+print []
+end
+
+;; Get rid of old problem data
+
+to cleanup
+if not namep "categories [stop]
+ern :categories
+ern "categories
+erpls
+end
+</PRE>
+
+<H2>Appendix B: The Backtracking Program</H2>
+
+<PRE>
+to track :lists :tests
+foreach first :lists [make ? array count bf :lists]
+catch "tracked [track1 first :lists bf :lists 1]
+end
+
+to track1 :master :others :index
+if emptyp :others [tracktest stop]
+track2 :master first :others bf :others
+end
+
+to track2 :names :these :those
+if emptyp :these [track1 :master :those :index+1 stop]
+foreach :these [setitem :index thing first :names ?
+                track2 bf :names remove ? :these :those]
+end
+
+to tracktest
+foreach :tests [if not run ? [stop]]
+foreach :master [pr se ? arraytolist thing ?]
+throw "tracked
+end
+
+to is :this :that
+if memberp :this :master [output memberp :that thing :this]
+if memberp :that :master [output memberp :this thing :that]
+localmake "who find [memberp :this thing ?] :master
+output memberp :that thing :who
+end
+</PRE>
+
+<H2>Appendix C: The Enhanced Inference System</H2>
+
+<P>Only the procedures changed from the version in appendix A are given here:
+
+<PRE>
+to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+if equalp (gprop :who1 "category) (gprop :what1 "category) [stop]
+if equalp (gprop :who2 "category) (gprop :what2 "category) [stop]
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+
+to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake "old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 :truth2) :old1 [stop]
+if memberp (list :truth1 :what2 :who2 :truth2) :old1 [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+if :truth2 [foreach (remove :who2 peers :who2)
+                    [implies :who1 :what1 :truth1 ? :what2 "false]
+            foreach (remove :what2 peers :what2)
+                    [implies :who1 :what1 :truth1 :who2 ? "false]]
+if not :truth2 [implies2 :what2 (remove :who2 peers :who2)
+                implies2 :who2 (remove :what2 peers :what2)]
+foreach (gprop :who2 "true) ~
+        [implies :who1 :what1 :truth1 ? :what2 :truth2]
+foreach (gprop :what2 "true) ~
+        [implies :who1 :what1 :truth1 :who2 ? :truth2]
+if :truth2 ~
+   [foreach (gprop :who2 "false)
+            [implies :who1 :what1 :truth1 ? :what2 "false]
+    foreach (gprop :what2 "false)
+            [implies :who1 :what1 :truth1 :who2 ? "false]]
+end
+
+to implies2 :one :others
+localmake "left filter [not (or memberp (list :truth1 :one ? "false) :old1
+                                memberp (list :truth1 ? :one "false) :old1
+                                (and :truth1
+                                     (or (and equalp ? :who1
+                                              equalp gprop :what1 "category
+                                                     gprop :one "category)
+                                         (and equalp ? :what1
+                                              equalp gprop :who1 "category
+                                                     gprop :one "category))
+                                     (not or equalp :one :who1 
+                                             equalp :one :what1))
+                                equalp get :one ? "false)] ~
+                       :others
+if emptyp :left [settruth :who1 :what1 (not :truth1) stop]
+if emptyp butfirst :left ~
+   [implies :who1 :what1 :truth1 :one first :left "true]
+end
+</PRE>
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/logo-sample.html b/js/games/nluqo.github.io/~bh/logo-sample.html
new file mode 100644
index 0000000..bffecdd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/logo-sample.html
@@ -0,0 +1,69 @@
+<HTML>
+<HEAD>
+<TITLE>Sample Logo program</TITLE>
+</HEAD>
+<BODY>
+<H1>Sample Logo program</H1>
+
+<P>Here is a short but complete program in Berkeley Logo:
+
+<PRE>
+to choices :menu [:sofar []]
+if emptyp :menu [print :sofar stop]
+foreach first :menu [(choices butfirst :menu sentence :sofar ?)]
+end
+</PRE>
+
+<P>And here's how you use it.  You type
+
+<PRE>
+choices [[small medium large]
+         [vanilla [ultra chocolate] lychee [rum raisin] ginger]
+         [cone cup]]
+</PRE>
+
+<P>and Logo replies
+
+<PRE>
+small vanilla cone
+small vanilla cup
+small ultra chocolate cone
+small ultra chocolate cup
+small lychee cone
+small lychee cup
+small rum raisin cone
+small rum raisin cup
+small ginger cone
+small ginger cup
+medium vanilla cone
+medium vanilla cup
+medium ultra chocolate cone
+medium ultra chocolate cup
+medium lychee cone
+medium lychee cup
+medium rum raisin cone
+medium rum raisin cup
+medium ginger cone
+medium ginger cup
+large vanilla cone
+large vanilla cup
+large ultra chocolate cone
+large ultra chocolate cup
+large lychee cone
+large lychee cup
+large rum raisin cone
+large rum raisin cup
+large ginger cone
+large ginger cup
+</PRE>
+
+<P>The program doesn't have anything about the size of the menu
+built in.  You can use any number of categories, and any number of
+possibilities in each category.  Let's see you do <EM>that</EM> in
+four lines of Java!
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/logo.html b/js/games/nluqo.github.io/~bh/logo.html
new file mode 100644
index 0000000..f026238
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/logo.html
@@ -0,0 +1,157 @@
+<html>
+<head>
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<TITLE> Berkeley Logo (UCBLogo) </TITLE>
+<link rel="shortcut icon" href="http://www.cs.BERKELEY.edu/~bh/ucblogo.png" type="image/png">
+</HEAD>
+<BODY>
+<P>
+
+<H1>Berkeley Logo (UCBLogo)</H1>
+
+<TABLE><TR><TD valign="center">
+Berkeley Logo (<A HREF="usermanual">download manual as text</A>)
+(<A HREF="downloads/ucblogo.pdf">download manual as PDF</A>)
+(<A HREF="announce">download readme</A>)
+is a freeware interpreter that I wrote along with
+several students.  (Major contributors are Daniel van Blerkom, Khang Dao,
+Michael Katz, Douglas Orleans, and Sanford Owings.)
+
+<p>News!  UCBLogo development has been taken over by wonderful chief volunteer
+Josh Cogliati and bunches of other volunteers:
+dmalec, Barak A. Pearlmutter, janekr, hosiet, reinerh, atehwa, kilobyte, pahihu
+
+<p>The newest source tree is here:<br />
+<a href="https://github.com/jrincayc/ucblogo-code">https://github.com/jrincayc/ucblogo-code</a>.
+You can file bug reports in its issue tracker at Github.</p>
+<TD valign="center"><IMG SRC="ucblogo3.gif"></TABLE>
+
+<p>The current version is 6.2.2, posted 29 Dec 2021.</p>
+
+<p>Click here to retrieve
+the <STRONG>complete distribution</STRONG> archive for
+<A HREF="downloads/ucblogo.tar.gz">Unix/Linux</A>,
+<A HREF="downloads/UCBLogo.dmg">MacOS X</A>,
+or <A HREF="https://people.eecs.berkeley.edu/~bh/downloads/ucblogosetup.exe">Windows</A>,
+complete with C/C++ source code.
+
+<P>Here are links to version 5.3 for frozen platforms
+<A HREF="downloads/blogo.exe">DOS</A>
+or <A HREF="downloads/ucblogo.sea.hqx">Mac pre-OS X</A>.
+A version for the One Laptop Per Child XO is
+<A HREF="downloads/ucblogo-4.xo">here</A>.
+
+<p>(If you think Logo is just a graphics
+language for little kids, check out a
+<A HREF="logo-sample.html">sample program</A>
+that should impress you.)
+
+<P>Also consider David Costanzo's
+<A HREF="http://fmslogo.sourceforge.net/">FMSLogo</A>, an
+updated version of George Mills' MSWLogo,
+a multimedia-enhanced version for MS Windows based on Berkeley Logo.
+Or Andreas Micheler's
+<A HREF="http://aucblogo.org">aUCBLogo</A>,
+a rewrite and enhancement of UCBLogo.
+
+<P> Here are links to <A HREF="other-logos.html">other versions of Logo</A>.
+
+<P><SMALL>If you got here by Googling "logo" and are looking for someone to
+design a logotype (an identifying symbol) for your organization, you're in the
+wrong place.  This is the Logo computer programming language for
+learners!</SMALL>
+
+<P>
+<A NAME="CSLS"><TABLE WIDTH="100%"><TR><TD VALIGN=TOP>
+<A HREF="v1-toc2.html"><IMG SRC="csls1.jpg" ALT="v1 cover"></A></TD><TD VALIGN=TOP>
+<A HREF="v2-toc2.html"><IMG SRC="csls2.jpg" ALT="v2 cover"></A></TD><TD VALIGN=TOP>
+<A HREF="v3-toc2.html"><IMG SRC="csls3.jpg" ALT="v3 cover"></A></TD><TD VALIGN="center">
+(The beautiful cover art<BR>
+is by <A HREF="http://www.jonrife.com/">Jon Rife</A>.)
+</TD></TR></TABLE>
+
+<P>Now <STRONG>FREE</STRONG> for personal use:  The second edition of
+<CITE>Computer Science Logo Style</CITE>, a three-volume series intended
+mainly for teenagers and their teachers, or for adults who aren't professional
+programmers.  You can look at the tables of contents and <U><STRONG>complete
+downloadable PDFs</STRONG></U> and browsable HTML versions of
+
+<UL>
+<LI><CITE><A HREF="v1-toc2.html"><i>Symbolic Computing</i></A></CITE>,
+a Logo programming text that concentrates on natural language
+processing rather than the graphics most people associate with Logo.
+<LI><CITE><A HREF="v2-toc2.html">Advanced Techniques</A></CITE>,
+in which discussions of more advanced Logo features alternate with
+sample projects using those features, with commentary on the
+structure and style of each.
+<LI><CITE><A HREF="v3-toc2.html">Beyond Programming</A></CITE>,
+brief introductions to six college-level computer science topics.
+</UL>
+
+<EM>Note:  These books are still in copyright, and in print.  They are
+posted here for your personal use, not for resale or redistribution.
+Thanks!</EM>
+
+<P>MIT Press web pages for <CITE>Computer Science Logo Style</CITE>
+<a href="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">v1</a>
+<a href="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">v2</a>
+<a href="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">v3</a>
+
+<P>
+<DIV align="center">
+<TABLE    border="3" cellspacing="2" cellpadding="2" >
+<caption align="bottom" style="font: bold 14pt/12pt sans-serif">Logo Users Ring</caption>
+<TR>
+<TD bgcolor="#e6e7c9" align="right">
+<B>
+<a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=prev" target="_top">Previous</a>
+</b>
+</td>
+<TD bgcolor="#e6e7c9" align="right">
+ <a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=prev5" target="_top">5</a>
+</td>
+<TD bgcolor="#e6e7c9" rowspan=4>
+
+<img SRC="tshirt.jpg" width="200"  HEIGHT="121" ALT="Logo Spoken Here: Ring Home" BORDER=0 USEMAP="#logoring">
+<MAP NAME="logoring">
+<AREA SHAPE=RECT COORDS="0,0,40,15" HREF="http://www.ringsurf.com/netring?ring=logoring;action=addform" target="_top" ALT="Join">
+<AREA SHAPE=RECT COORDS="140,0,200,20" HREF="http://www.ringsurf.com/netring?ring=logoring;action=stats" target="_top" ALT="Statistics">
+<AREA SHAPE=RECT COORDS="0,15,199,122" HREF="http://www.ringsurf.com/netring?ring=logoring;action=home" target="_top" ALT="Ring Home">
+</map>
+</td>
+</tr>
+<TR>
+<TD bgcolor="#e6e7c9" align="right">
+<B>
+<a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=next" target="_top">Next</a>
+</b>
+</td>
+<TD bgcolor="#e6e7c9" align="right">
+<a href="http://www.ringsurf.com/netring?ring=logoring;id=83;action=next5" target="_top">5</a>
+</td>
+</tr>
+<TR>
+<TD bgcolor="#e6e7c9" colspan="2" align="right">
+<B>
+<a href="http://www.ringsurf.com/netring?ring=logoring;action=rand" target="_top">Random
+Site</a>
+</b>
+</td>
+</tr>
+<TR>
+<TD bgcolor="#e6e7c9" colspan="2" align="right">
+<B> 
+<a href="http://www.ringsurf.com/netring?ring=logoring;action=list" target="_top">List Sites</a>
+</b>
+</td>
+</tr>
+</table>
+</div>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/lsrhs.html b/js/games/nluqo.github.io/~bh/lsrhs.html
new file mode 100644
index 0000000..bcb2ede
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/lsrhs.html
@@ -0,0 +1,107 @@
+<HTML>
+<HEAD>
+<TITLE>Case Study: LSRHS</TITLE>
+</HEAD>
+<BODY>
+<H1>A Case Study:</H1>
+<H1>The Lincoln-Sudbury Regional High School</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>The Lincoln-Sudbury Regional High School is a four-year public
+high school in Sudbury, Massachusetts.  I was Computer Director there
+from 1979 to 1982.  Before 1979 there was a computer (a PDP-8) in
+the school, run by the math department.  The two math teachers who
+were most involved had proposed the creation of a separate computer
+department, partly to attract kids who didn't think of themselves
+as mathematically inclined, and partly because they couldn't both
+give the computer facility the attention it needed and also do the
+rest of their jobs.
+
+<P>My own learning about computers took place mainly at the Artificial
+Intelligence laboratories of MIT and Stanford.  I decided to create
+an environment at the high school that would be as similar as possible
+to those labs.  To me this meant a powerful computer system, with
+lots of software tools, an informal community spirit, and not much
+formal curriculum.
+
+<P>I installed a PDP-11/70 running version 7 Unix.  The cost of
+the machine was paid 75% by a contribution from Digital Equipment
+Corporation and 25% by a special bond issue approved by the school
+committee.  Lincoln-Sudbury is a Unix source licensee; we were an
+alpha test site for 2.9BSD, the PDP-11 version of Berkeley Unix. 
+The installation, testing, and debugging of this new system was carried
+out entirely by students.
+
+<P>The administration of the facility is carried out by the Computer
+Center Users Society, a group of about 50 students and teachers. 
+Members have keys to the computer center, and may use the facility
+evenings and weekends without adult supervision.  Students also use
+the computer from home via modems.
+
+<P>In the early days of the new computer, many students took an
+individualistic approach to it.  Some students sought power and status
+by writing game-playing programs, and including in the program a list
+of their enemies, who weren't allowed to play the game.  Later, as
+the computer users became more of a community, students came to realize
+that a more profound kind of status comes from being a helpful expert,
+encouraging younger students to learn rather than standing in their
+way.  This change was the result of discussions among students;
+I did no lecturing on the subject.
+
+<P>The results of allowing unsupervised students in the room have
+been better than most people would predict, although not perfect.
+No equipment has been stolen or damaged in the evenings, but there
+has been damage to furniture through rough use.  A couch was destroyed
+because its pillows were used too often as swords.  Litter is a recurring
+problem; the room gets so messy that the students themselves complain,
+but sometimes they don't exert themselves to do anything about it.
+
+<P>What about password hacking?  Well, there is some.  The first
+time a student asked me how to turn off echoing to a terminal, I suspected
+that what he wanted was to write a login simulator, but I encouraged
+the project as one that provided a strong motivation to learn.  I
+thought that the reaction of other students, when the project became
+public knowledge, would be enough to control password hackers.  I
+was a little too optimistic; it took a good deal of struggle to make
+the point.  The problem is a recurring one, partly because every year
+brings a new batch of unsocialized freshmen.  But a strong deterrent
+is the fact that students aspire to ``superuser'' status, that is, a
+privileged account given to system administrators.  Superuser candidates
+must be accepted both by the existing superusers, to ensure their
+technical competence, and by the entire CCUS membership, to ensure
+that they are trusted by the community.  The students who have the
+skill and interest to be potential password hackers are also the ones
+who want to keep the trust of their colleagues.
+
+<P>Software maintenance and development is a challenge bearing much
+more intellectual fruit than password hacking, anyway.  Many Lincoln-Sudbury
+students have written software that is distributed through Usenix
+and widely used outside the school.  The most outstanding example
+is JOVE, an EMACS-like text editor written by
+Jonathan Payne while
+he was a student there.
+
+<P>Although I'm no longer at Lincoln-Sudbury, the facility still
+exists.  (As I write this, the PDP-11 has just been replaced by a
+Vax; it's not yet clear what changes in the social structure of the facility
+will result.)  [1994 addendum:  Alas, it's now a roomful of Macs.
+But at least they teach the kids Object Logo.]
+It has all the same problems of malicious users that any
+computer does, but the problems lead to profound moral education when
+the villains and the victims are all fellow-students, friends, and
+professional colleagues.  Putting the burden of dealing with these
+problems on the students themselves is a powerful educational force.
+
+<P>Note: This is an appendix to
+"<A HREF="hackers.html">Computer Hacking and Ethics</A>," a position
+paper I wrote for the ACM Select Panel on Hacking in 1985.
+
+<P>A longer paper about Lincoln-Sudbury is
+<A HREF="freedom.html">"Using Computers for Educational Freedom"</A>,
+a talk I gave at Lesley College in 1980.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/mapsquare.png b/js/games/nluqo.github.io/~bh/mapsquare.png
new file mode 100644
index 0000000..d95b7a3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/mapsquare.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks.html b/js/games/nluqo.github.io/~bh/masks.html
new file mode 100644
index 0000000..874dabf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks.html
@@ -0,0 +1,24 @@
+<HTML>
+<HEAD>
+<TITLE>My Mask Collection</TITLE>
+</HEAD>
+<BODY>
+<H1>My Mask Collection</H1>
+
+<P>I also collect novelty masks, like these:
+
+<P><IMG SRC="masks/wizard.jpg">&#160; &#160;
+<IMG SRC="masks/camel.jpg">&#160; &#160;
+<IMG SRC="masks/fossil.jpg">&#160; &#160;
+<IMG SRC="masks/atomic.jpg">&#160; &#160;
+
+<P><IMG SRC="masks/bug.jpg">&#160; &#160;
+<IMG SRC="masks/dork.jpg">&#160; &#160;
+<IMG SRC="masks/death.jpg">&#160; &#160;
+<IMG SRC="masks/fuzzy.jpg">&#160; &#160;
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/masks/atomic.jpg b/js/games/nluqo.github.io/~bh/masks/atomic.jpg
new file mode 100644
index 0000000..076b2d3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/atomic.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks/bug.jpg b/js/games/nluqo.github.io/~bh/masks/bug.jpg
new file mode 100644
index 0000000..590f87a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/bug.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks/camel.jpg b/js/games/nluqo.github.io/~bh/masks/camel.jpg
new file mode 100644
index 0000000..28babc4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/camel.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks/death.jpg b/js/games/nluqo.github.io/~bh/masks/death.jpg
new file mode 100644
index 0000000..29d701d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/death.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks/dork.jpg b/js/games/nluqo.github.io/~bh/masks/dork.jpg
new file mode 100644
index 0000000..ff047e9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/dork.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks/fossil.jpg b/js/games/nluqo.github.io/~bh/masks/fossil.jpg
new file mode 100644
index 0000000..a8fd87c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/fossil.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks/fuzzy.jpg b/js/games/nluqo.github.io/~bh/masks/fuzzy.jpg
new file mode 100644
index 0000000..6284cc3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/fuzzy.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/masks/wizard.jpg b/js/games/nluqo.github.io/~bh/masks/wizard.jpg
new file mode 100644
index 0000000..950aafc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/masks/wizard.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/mitp.jpg b/js/games/nluqo.github.io/~bh/mitp.jpg
new file mode 100644
index 0000000..e58d1e9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/mitp.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/multi.html b/js/games/nluqo.github.io/~bh/multi.html
new file mode 100644
index 0000000..b9c8341
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/multi.html
@@ -0,0 +1,164 @@
+<HTML>
+<HEAD>
+<TITLE>Against Multimedia</TITLE>
+</HEAD>
+<BODY>
+<H1>Against Multimedia</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>About 15 years ago, at the dawn of the personal computer era,
+I attended a talk by one of the early leaders in educational
+computing.  The Votrax voice response unit had just been
+introduced, and he was very excited about it.  To demonstrate
+the potential of this early multimedia technology, he first
+showed a standard, boring arithmetic drill program.  The
+program presented a problem on the screen, the student would
+type in an answer, and the program would either announce that
+the answer was correct, and go on to the next problem, or
+announce that the answer was wrong, and repeat the same problem.
+
+<P>The speaker "improved" this program by using the voice response
+unit to give messages such as "that's still wrong, but you're
+getting warmer" for incorrect answers.  The machine was able to
+control the tone and syllable emphasis enough to present these
+hints in an amusing fashion, and most of the audience was quite
+entranced by this new technology.
+
+<P>Unfortunately, the modified program's standard for "warmer" or
+"colder" was nothing more sophisticated than the numerical
+distance between the student's answer and the correct answer.
+So, for example, if the problem was 6 times 8, and the student
+first answered 42 (confusing this problem with the nearby
+6 times 7), then answered 47 (a ridiculous answer), the program
+would congratulate the student for getting "warmer."  The result
+is that the program was turned into a "guess my number" game,
+and the idea of learning arithmetic was lost!
+
+<P>Of course, the voice technology could have been used in more helpful ways
+(for example, the program could have recognized common errors and given
+messages such as "No, 42 is 6 times 7, not 6 times 8"), but the point of the
+example is that this otherwise intelligent designer of educational software,
+who would never have thought to use "warmer" and "colder" in the program's
+printed messages, was so mesmerized by the new technology that he wasn't
+thinking at all about the educational issues.
+
+<P>Now move forward a dozen years.  The new technology is laser disc
+and CD-ROM.  A leading multimedia researcher at Apple Computer
+demonstrates educational applications; one example is a program
+to teach physics students about levers.  On the computer screen
+is a depiction of a see-saw.  Using the mouse, the student can
+position three children, of different weights, at various positions
+on the see-saw.  The goal for the student is to get it to balance.
+The see-saw is held in the horizontal position until the student
+finishes placing the three children; then the student clicks a
+button to release it.  This is where the multimedia part comes in:
+The developers have videotaped three actual children, with the
+correct weight ratios, at all possible integer positions along
+the length of an actual see-saw.  If the student has put two children
+at the same position, the actual children are seen in each other's
+lap, or on each other's shoulders.  It's fun to watch.
+
+<P>Now imagine you're a student using this program.  You've positioned
+two children arbitrarily, and you're trying to figure out where to
+put the third child so that the see-saw will balance.  Most likely,
+the correct position is not at an integer distance!  This wouldn't
+be a problem for the computer simulation alone, without the video
+enhancement, but in fact the program had to be written to allow only
+integer positions, because that's all they videotaped.
+
+<P>What these examples have in common is that in their eagerness to use
+the latest technology, both developers have actually made their programs
+worse, from a pedagogic point of view.  Multimedia is limiting!  You
+end up tailoring your work to the demands of the medium, rather than
+the other way around.
+
+<P>Multimedia is limiting in another way, also.  Because good video is
+difficult and expensive to produce, the range of ideas available is
+restricted.  One of the prototypical educational applications of
+multimedia is to ask students to prepare a report on Martin Luther King
+in which they use multimedia software to select and arrange excerpts
+from available videodiscs.  But the Martin Luther King presented by
+Time-Life and by ABC News is the "I have a dream" integrationist,
+the pacifist, the martyr -- not the socialist, not the angry militant,
+not the multifaceted King that students could find in books.  The
+videos don't emphasize the FBI's spying on King's sexual activities,
+nor the recent accusations of plagiarism in King's scholarly works.
+Similarly, the ABC videos on the Gulf War are based essentially on
+information provided by the United States government, some of which
+has been shown to be inaccurate.
+
+<P>Do all of these examples merely reflect the immaturity of the technology,
+rather than inherent weakness?  Perhaps, but only if slick, professional
+video production will someday be as easy as computer programming is now.  As
+long as it takes dozens of skilled technicians to produce television shows,
+the literature of multimedia will be limited.  Of course there are better
+examples, such as the "Voyage of the Mimi" project developed at Bank Street
+College.  (This project centered around a weekly broadcast TV show in which
+the protagonists explored the world by boat; the broadcasts were supplemented
+with a range of written material, interactive computer programs, and
+classroom activities.)  But that project took years to produce, using
+federal research funds.  And the result only teaches specific lessons; it's
+not open-ended in the way that programs like Geometric Supposer (which
+allows learners to perform geometric constructions on the screen; measure
+the resulting lengths, angles, and areas; hypothesize general rules; and
+test the hypotheses by repeating the construction with different starting
+shapes), or programming languages like Logo (a dialect of Lisp designed
+specifically for children learning mathematics, with simplified syntax and
+with a variety of mathematical "microworlds" to explore, of which the best
+known is turtle graphics), are open-ended.  Therefore, the payoff for all
+that money is quite limited, compared to non-multimedia computer software
+development.
+
+<P>It <EM>is</EM> possible to use multimedia technology in a more open-ended
+way.  <A HREF="http://www.wired.com/wired/archive/2.04/sigg.kids.html">Coco
+Conn</A>, for example, has done some spectacular work with kids and video, in
+which the kids themselves plan and carry out the entire project, operating the
+cameras and the video editors.  If there is any promise at all in educational
+multimedia, I think it's in that style of work.  But it hasn't happened on a
+large scale because it requires both expensive equipment and a lot of skilled
+adult support.  Even then, the kids' work probably won't be as slick as
+professionally made video, so we may find that students will be tempted to
+stick with the professional work rather than make their own, just as interest
+in computer programming has declined because of the wide availability of slick
+programs with graphical interfaces.
+
+<P>Because multimedia revolves around video, it shares many of the
+questionable properties of broadcast television: the emphasis on
+visually strong news such as violence and disasters, the short
+attention span, the focus on celebrities.  People have argued for
+many years about whether these things are necessary implications
+of television, but even programs like Nova that attempt to be
+somewhat scholarly use the quick-cut style, and show the faces of
+Nobel laureates talking while the soundtrack gives us the simplified
+platitudes of a narrator.  The more honest media enthusiasts don't
+even deny that a diet of television works against literacy; instead,
+they're proud of it, describing print literacy as obsolete in the
+light of the new "media literacy."
+
+<P>Like much of the "information superhighway" that's been in the news
+recently, multimedia provides the illusion of interactivity, in which
+the user's control extends merely to a selection among professionally
+prepared alternatives.  Selecting images from an ABC News video is
+essentially similar to the idea of the "electronic town meeting," in
+which TV watchers can vote on choices presented by Al Gore and Ross
+Perot.  In a <EM>real</EM> town meeting, the decision-makers are the same
+people who carry out the discussion and who invent the choices.
+The electronic version is deeply antidemocratic.
+
+<P>Why don't the same arguments apply to any educational use of computer
+technology?  My answer is that in some cases they <EM>do</EM> apply.  The kind
+of computer technology that presents a learner with multiple-choice
+tests, or with "Computer-Managed Instruction," is indeed just as
+limiting as multimedia technology.  But computers lend themselves to
+a different style of work, one in which learners are presented with
+tools rather than with constraints.  Word processing, spreadsheets,
+calculators, and drawing programs can help learners explore and present
+their own ideas.  Most flexible of all is a programming language, in
+which learners can invent their own tools.  So far, at least, multimedia
+is a much less accessible medium.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/new-bh.jpg b/js/games/nluqo.github.io/~bh/new-bh.jpg
new file mode 100644
index 0000000..58affae
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/new-bh.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/noss.ps b/js/games/nluqo.github.io/~bh/noss.ps
new file mode 100644
index 0000000..78baaaa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/noss.ps
@@ -0,0 +1,2386 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software
+%%Title: noss.dvi
+%%Pages: 24
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 612 792
+%%EndComments
+%DVIPSCommandLine: dvips noss.dvi -o noss.ps
+%DVIPSParameters: dpi=300, comments removed
+%DVIPSSource:  TeX output 1994.07.21:1329
+%%BeginProcSet: tex.pro
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
+/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
+mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
+ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
+isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
+hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
+TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get
+round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{
+statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0
+0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn
+begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X
+array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo
+setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx
+FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{
+pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}
+B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup
+length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B
+/ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp
+0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2
+index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff
+ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
+ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{
+ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn
+/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1
+sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D
+}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0
+moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage
+userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
+known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
+/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for
+65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0
+0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
+{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7
+getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false}
+ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley
+false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley
+scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0
+ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta
+0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
+B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{
+3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p
+-1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{
+3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1095 300 300
+(/home/anarres/g/users/bh/papers/noss.dvi) @start /Fa
+1 111 df<383C004CC7004F03004E03009C07001C07001C07001C0E00380E00380E4038
+1C40381C80700C80300700120E7E8D16>110 D E /Fb 4 52 df<0FC018603030703860
+186018E01CE01CE01CE01CE01CE01CE01CE01CE01CE01C60187038303018600FC00E157F
+9412>48 D<03000700FF0007000700070007000700070007000700070007000700070007
+0007000700070007007FF00C157E9412>I<1F0021C040E080E0C070E070407000F000E0
+00E001C001800300060004000810101020303FE07FE0FFE00C157E9412>I<0FC0306060
+707078703800780070007000E007C0006000780038003C003CE03CE03CC038407830600F
+C00E157F9412>I E /Fc 12 121 df<70F8F8F87005057C840D>58
+D<70F8FCFC74040404080810102040060E7C840D>I<E0000000780000001E0000000780
+000001E0000000780000001C0000000700000003C0000000F00000003C0000000F000000
+03C0000003C000000F0000003C000000F0000003C00000070000001C00000078000001E0
+0000078000001E00000078000000E00000001A1A7C9723>62 D<00000200000006000000
+0E0000000E0000001E0000001F0000002F0000002F0000004F0000008F0000008F000001
+0F0000010F0000020F0000040F0000040F0000080F800008078000100780002007800020
+0780007FFF800040078000800780018007800100078002000780020007C0040003C00C00
+03C01E0007C0FF807FFC1E207E9F22>65 D<00FFFFE0000F0078000F003C000F001C000F
+001E001E001E001E001E001E001E001E001E003C003C003C003C003C0078003C00F00078
+03C0007FFF80007803C0007801E000F000F000F000F000F000F000F0007001E000F001E0
+00F001E000F001E000E003C001E003C003C003C0038003C00F0007801E00FFFFF0001F1F
+7E9E22>I<0000FE0200078186001C004C0038003C0060003C00C0001C01C00018038000
+18070000180F0000181E0000101E0000103C0000003C0000007800000078000000780000
+0078000000F0000000F0000000F0000000F0000000F00000807000008070000080700001
+003800010038000200180004000C001800060020000381C00000FE00001F217E9F21>I<
+00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E00
+F00E00F00E10F01C20F01C20703C20705C40308C400F078014147E9318>97
+D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
+0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207E9F14>I<
+00007C0000CE00019E00039E00030C000700000700000700000700000E00000E00000E00
+00FFF0000E00000E00001C00001C00001C00001C00001C00003800003800003800003800
+00380000700000700000700000700000700000E00000E00000E00000E00000C00001C000
+318000798000F300006200003C000017297E9F16>102 D<001E3000713800E0F001C070
+0380700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03801E0380
+0E07800E0B8006170001E700000700000700000E00000E00300E00781C00F03800607000
+3FC000151D809316>I<1E07802318C023A06043C0704380704380708700E00700E00700
+E00700E00E01C00E01C00E01C00E03821C03841C07041C07081C03083803101801E01714
+7E931B>110 D<03C1C00C62201034701038F02038F02038604070000070000070000070
+0000E00000E00000E00000E02061C040F1C040F1C080E2C080446300383C0014147E931A
+>120 D E /Fd 72 121 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070
+F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E038E038E038E038E038
+E03860300D0E7B9C18>I<030600078F00078F00078F00078F00078F00078F007FFFC0FF
+FFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07F
+FFC01E3C001E3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>I<387C7C7E3E0E
+0E0E1C1C38F8F0C0070E789B18>39 D<007000F001E003C007800F001E001C0038003800
+7000700070007000E000E000E000E000E000E000E000E000700070007000700038003800
+1C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C001E000F0007
+80038001C001C000E000E000E000E00070007000700070007000700070007000E000E000
+E000E001C001C0038007800F001E003C007800F00060000C247C9F18>I<01C00001C000
+01C00001C000C1C180F1C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80
+F1C780C1C18001C00001C00001C00001C00011147D9718>I<00600000F00000F00000F0
+0000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F0
+0000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7CF860080C7885
+18>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<3078FCFC78300606778518>I<0003
+00000780000780000F80000F00001F00001E00001E00003E00003C00007C000078000078
+0000F80000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F00
+001F00001E00003E00003C00003C00007C0000780000F80000F00000F000006000001124
+7D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E0
+00E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C038
+03801C07001F1F000FFE0007FC0001F000131C7E9B18>I<01800380038007800F803F80
+FF80FB804380038003800380038003800380038003800380038003800380038003800380
+03807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0E001C0F000E0
+F000E06000E00000E00000E00001C00001C00003C0000780000F00001E00003C00007800
+00F00001E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8
+001FFE003FFF007807807803C07801C03001C00001C00003C0000380000F0003FF0003FE
+0003FF000007800003C00001C00000E00000E00000E0F000E0F000E0F001C0F003C07C07
+803FFF001FFE0003F800131C7E9B18>I<001F00003F0000770000770000E70001E70001
+C7000387000787000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FF
+FFF8000700000700000700000700000700000700007FF000FFF8007FF0151C7F9B18>I<
+1FFF803FFF803FFF803800003800003800003800003800003800003800003800003BF800
+3FFE003FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C07003C0
+7C0F803FFF001FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03
+C0380180380000700000700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000
+E0F000E07000E07000E07000E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18
+>I<E00000FFFFE0FFFFE0FFFFE0E003C0E00780000700000E00001E00001C0000380000
+380000700000700000E00000E00000E00001C00001C00001C00001C00003C00003800003
+8000038000038000038000038000038000131D7E9C18>I<03F8000FFE001FFF003E0F80
+3803807001C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C0780
+7001C0F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800
+131C7E9B18>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001
+E0E001E07001E07803E03C0FE01FFFE00FFEE003F0E00000E00001C00001C00001C03003
+80780780780F00783E003FFC001FF00007C000131C7E9B18>I<3078FCFC783000000000
+000000003078FCFC78300614779318>I<183C7E7E3C180000000000000000183C7E7E3E
+1E0E1C3C78F060071A789318>I<000300000780001F80003F00007E0001FC0003F00007
+E0001FC0003F00007E0000FC0000FC00007E00003F00001FC00007E00003F00001FC0000
+7E00003F00001F8000078000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000
+000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<0FF0003FFC007FFF
+00700F00F00380F00380600780000F00003E00007C0001F00001E00003C00003C00003C0
+0003C00003C00003800000000000000000000000000000000003800007C00007C00007C0
+00038000111C7D9B18>63 D<00700000F80000F80000D80000D80001DC0001DC0001DC00
+018C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF80
+0FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65
+D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07
+C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00
+E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C
+01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E00000E00000E0
+00007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B
+18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C0070
+1C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C01C0
+1C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00
+701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
+001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C
+7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C
+1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C
+00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC0
+1C03C03803C03801C07001C07001C0700000E00000E00000E00000E00000E00000E00FF0
+E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0
+141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01
+C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01
+C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001
+C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
+C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807F
+FF00111C7D9B18>I<01FFC003FFC001FFC0000E00000E00000E00000E00000E00000E00
+000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
+000E00F00E00F00E00F03C007FFC003FF0000FC000121C7D9B18>I<7F07F0FF87F87F07
+F01C03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0001DF0001DF0001FB8
+001FB8001F1C001E1C001C0E001C0E001C07001C07001C03801C03801C01C07F03F0FF87
+F87F03F0151C7F9B18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E
+00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
+00700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8
+FE03F83B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE0
+38D8E038D8E038F8E03870E03870E03800E03800E03800E03800E03800E03800E0FE03F8
+FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1
+C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19
+C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003F
+FE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E00380E0
+0380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F007F
+FF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C0070
+1C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C0000
+1C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8
+003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E003
+80E00380E00380E00380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F
+007FFF003FFE000FFC00001C00001E00000E00000F0000070000070011227D9B18>I<7F
+F800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801F
+FF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C
+039C7F01F8FF81F87F00F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380
+E00380E00380E000007000007800003F00001FF00007FE0000FF00000F800003C00001C0
+0000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>
+I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E070380070000070000070000070000070
+000070000070000070000070000070000070000070000070000070000070000070000070
+0000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C
+00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
+00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B
+18>I<FF07F8FF07F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E0380
+0F0780070700070700070700070700038E00038E00038E00038E00018C0001DC0001DC00
+01DC0000D80000F80000F800007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000
+707000703800E03800E03800E03800E03800E038F8E038F8E039DCE039DCE019DCC019DC
+C019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C
+7F9B18>I<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F80001
+F80000F00000F00000700000F00000F80001F80001DC00039E00038E00070F000707000E
+07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C0
+1E03C00E03800F0780070700070700038E00038E0001DC0001DC0001DC0000F80000F800
+00700000700000700000700000700000700000700000700000700001FC0003FE0001FC00
+151C7F9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E0
+00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
+00FFF8FFF8FFF80D24779F18>91 D<FFF8FFF8FFF8003800380038003800380038003800
+380038003800380038003800380038003800380038003800380038003800380038003800
+380038003800380038FFF8FFF8FFF80D247F9F18>93 D<1FE0003FF8007FFC00781E0030
+0E0000070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F0078
+1F003FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00
+000E00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00
+380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18
+>I<01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E0
+0000E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80
+003F80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F80
+700780700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F80
+1FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F003807807003807003
+80E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF
+0001FC0012147D9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E
+3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E
+00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>104
+D<03800007C00007C00007C0000380000000000000000000000000007FC000FFC0007FC0
+0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
+0001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<7FE000FFE0007FE00000E00000
+E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
+E00000E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC013
+1C7E9B18>108 D<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C00
+1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
+1C1C1C007F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F
+80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
+00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C0
+7001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF00
+0FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00
+380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E
+000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318
+>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C00003800003800003800003
+80000380000380000380000380000380007FFE00FFFF007FFE0015147F9318>114
+D<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE00001F
+00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01800003
+80000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003
+80000380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013
+197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
+0E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318>
+I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9
+C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>119
+D<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F00000F8
+0001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I
+E /Fe 2 3 df<FFFFFFC0FFFFFFC01A027C8B23>0 D<400004C0000C6000183000301800
+600C00C006018003030001860000CC0000780000300000300000780000CC000186000303
+000601800C00C0180060300030600018C0000C40000416187A9623>2
+D E /Ff 3 27 df<00000C0000180000300000600000C00001C000038000070000060000
+0E00001C00001C0000380000700000700000E00000E00001E00001C00003C00003800003
+80000780000700000700000F00000E00000E00001E00001E00001C00003C00003C00003C
+00003C0000380000780000780000780000780000780000780000780000700000F00000F0
+0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
+0000F00000F00000F00000F00000F00000F0000070000078000078000078000078000078
+00007800007800003800003C00003C00003C00003C00001C00001E00001E00000E00000E
+00000F000007000007000007800003800003800003C00001C00001E00000E00000E00000
+7000007000003800001C00001C00000E000006000007000003800001C00000C000006000
+003000001800000C166C778121>18 D<C000006000003000001800000C00000E00000700
+0003800001800001C00000E00000E000007000003800003800001C00001C00001E00000E
+00000F000007000007000007800003800003800003C00001C00001C00001E00001E00000
+E00000F00000F00000F00000F00000700000780000780000780000780000780000780000
+7800003800003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000
+3C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000380000780000
+780000780000780000780000780000780000700000F00000F00000F00000F00000E00001
+E00001E00001C00001C00003C0000380000380000780000700000700000F00000E00001E
+00001C00001C0000380000380000700000E00000E00001C0000180000380000700000E00
+000C0000180000300000600000C00000166C7F8121>I<0000380000780001F00003C000
+0780000F00001E00001E00003C00003C0000780000780000780000780000780000780000
+780000780000780000780000780000780000780000780000780000780000780000780000
+780000780000780000780000780000780000780000780000780000780000780000780000
+780000780000780000780000F00000F00001E00001E00003C0000780000F00001E000078
+0000F00000F000007800001E00000F000007800003C00001E00001E00000F00000F00000
+780000780000780000780000780000780000780000780000780000780000780000780000
+780000780000780000780000780000780000780000780000780000780000780000780000
+7800007800007800007800007800007800007800007800007800007800003C00003C0000
+1E00001E00000F000007800003C00001F0000078000038156C7A8122>26
+D E /Fg 41 122 df<00003FE00000E01000018038000380780003007800070030000700
+000007000000070000000E0000000E0000000E000000FFFFE0000E00E0001C01C0001C01
+C0001C01C0001C01C0001C03800038038000380380003803800038070000380700007007
+000070071000700E2000700E2000700E2000E00E2000E0064000E0038000E0000000C000
+0001C0000001C000003180000079800000F3000000620000003C0000001D29829F1A>12
+D<1C3C3C3C3C040408081020204080060E7D840E>44 D<7FF0FFE07FE00C037D8A10>I<
+0007C0001C200030200060E000C1E00181E00380C00700000F00000E00001E00001E7800
+1D84003E06003E07003C07007C0780780780780780780780700F00700F00F00F00F00E00
+F01E00701C00601C0070380030700010C0000F8000131F7B9D17>54
+D<001F000061800080C00100600300600600600600600600600E00C00F00800F818007C3
+0007E40003F80001F80003FC00047E00183F00300F00200700600700C00300C00300C003
+00800600800600C00C00C008004030003060001F8000131F7B9D17>56
+D<00000200000006000000060000000E0000001E0000001E0000003F0000002F0000004F
+0000004F0000008F0000010F0000010F0000020F0000020F0000040F00000C0F0000080F
+0000100F0000100F0000200F80003FFF800040078000C007800080078001000780010007
+800200078002000780060007801E000F80FF807FF81D207E9F22>65
+D<0000FE0200078186001C004C0038003C0060003C00C0001C01C0001803800018070000
+180F0000181E0000101E0000103C0000003C000000780000007800000078000000780000
+00F0000000F0000000F0000000F0000000F0000080700000807000008070000100380001
+0038000200180004000C001800060020000381C00000FE00001F217A9F21>67
+D<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C0004003C0004003C00
+040078080800780800007808000078180000F0300000FFF00000F0300000F0300001E020
+0001E0200001E0200001E0001003C0002003C0002003C0004003C0004007800080078001
+8007800100078007000F001F00FFFFFE001F1F7D9E1F>69 D<01FFF0001F00001E00001E
+00001E00003C00003C00003C00003C0000780000780000780000780000F00000F00000F0
+0000F00001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780
+000780000F8000FFF800141F7D9E12>73 D<01FFF800001F0000001E0000001E0000001E
+0000003C0000003C0000003C0000003C00000078000000780000007800000078000000F0
+000000F0000000F0000000F0000001E0000001E0000001E0000001E0008003C0010003C0
+010003C0030003C00200078006000780060007800C0007801C000F007800FFFFF800191F
+7D9E1D>76 D<01FE00007FC0001E0000FC00001E0000F800001700017800001700017800
+00270002F00000270004F00000270004F00000270008F00000470009E00000470011E000
+00470021E00000470021E00000870043C00000838043C00000838083C00000838083C000
+0103810780000103820780000103820780000103840780000203840F00000203880F0000
+0203900F00000203900F00000401E01E00000401E01E00000401C01E00000C01801E0000
+1C01803E0000FF8103FFC0002A1F7D9E29>I<01FFFF80001E00E0001E0070001E003800
+1E003C003C003C003C003C003C003C003C003C0078007800780078007800F0007800E000
+F003C000F00F0000FFFC0000F0000001E0000001E0000001E0000001E0000003C0000003
+C0000003C0000003C00000078000000780000007800000078000000F800000FFF000001E
+1F7D9E1F>80 D<0007E040001C18C0003005800060038000C0038001C001800180010003
+80010003800100038001000380000003C0000003C0000003F8000001FF800001FFE00000
+7FF000001FF0000001F80000007800000078000000380000003800200038002000380020
+00300060007000600060006000E0007000C000E8038000C606000081F800001A217D9F1A
+>83 D<0FFFFFF01E0780E0180780201007802020078020200F0020600F0020400F002040
+0F0020801E0040001E0000001E0000001E0000003C0000003C0000003C0000003C000000
+78000000780000007800000078000000F0000000F0000000F0000000F0000001E0000001
+E0000001E0000001E0000003E00000FFFF00001C1F789E21>I<001FC0001FC000180000
+180000300000300000300000300000600000600000600000600000C00000C00000C00000
+C00001800001800001800001800003000003000003000003000006000006000006000006
+00000C00000C00000C00000C000018000018000018000018000030000030000030000030
+00006000006000006000007F0000FE0000122D7EA10E>91 D<001FC0001FC00000C00000
+C00001800001800001800001800003000003000003000003000006000006000006000006
+00000C00000C00000C00000C000018000018000018000018000030000030000030000030
+0000600000600000600000600000C00000C00000C00000C0000180000180000180000180
+000300000300000300007F0000FE0000122D82A10E>93 D<00F1800389C00707800E0380
+1C03803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40
+703C40705C40308C800F070013147C9317>97 D<07803F8007000700070007000E000E00
+0E000E001C001C001CF01D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01C
+E03CE038607060E031C01F0010207B9F15>I<007E0001C1000300800E07801E07801C07
+003C0200780000780000780000F00000F00000F00000F00000F000007001007002003004
+0018380007C00011147C9315>I<0000780003F80000700000700000700000700000E000
+00E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C038038070078
+0700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F
+070015207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F000F000F000F0
+007000700170023804183807C010147C9315>I<00007800019C00033C00033C00071800
+0700000700000E00000E00000E00000E00000E0001FFE0001C00001C00001C00001C0000
+380000380000380000380000380000700000700000700000700000700000700000E00000
+E00000E00000E00000C00001C00001C0000180003180007B0000F300006600003C000016
+29829F0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C0
+3C03803C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00
+001C00001C00301C00783800F0700060E0003F8000141D7E9315>I<01E0000FE00001C0
+0001C00001C00001C000038000038000038000038000070000070000071E000763000E81
+800F01C00E01C00E01C01C03801C03801C03801C0380380700380700380700380E10700E
+20700C20701C20700C40E00CC060070014207D9F17>I<00C001E001E001C00000000000
+0000000000000000000E003300230043804300470087000E000E000E001C001C001C0038
+40388030807080310033001C000B1F7C9E0E>I<0001800003C00003C000038000000000
+0000000000000000000000000000000000003C0000460000870000870001070001070002
+0E00000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000
+700000700000700000700000E00000E00030E00079C000F180006300003C00001228829E
+0E>I<01E0000FE00001C00001C00001C00001C000038000038000038000038000070000
+0700000703C00704200E08E00E11E00E21E00E40C01C80001D00001E00001FC00038E000
+387000387000383840707080707080707080703100E03100601E0013207D9F15>I<03C0
+1FC0038003800380038007000700070007000E000E000E000E001C001C001C001C003800
+3800380038007000700070007100E200E200E200E200640038000A207C9F0C>I<1C0F80
+F0002630C318004740640C004780680E004700700E004700700E008E00E01C000E00E01C
+000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C070803803807100
+3803806100380380E10038038062007007006600300300380021147C9325>I<1C0F8026
+30C04740604780604700704700708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C
+03843803883803083807083803107003303001C016147C931A>I<007C0001C300030180
+0E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700
+700F00700E0030180018700007C00013147C9317>I<01C1E002621804741C04781C0470
+1E04701E08E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380780380700380
+E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C0000FFC0
+00171D809317>I<00F0400388C00705800E03801C03803C038038070078070078070078
+0700F00E00F00E00F00E00F00E00F01C00F01C00703C00705C0030B8000F380000380000
+380000700000700000700000700000E00000E0000FFE00121D7C9315>I<1C1E00266100
+4783804787804707804703008E00000E00000E00000E00001C00001C00001C00001C0000
+38000038000038000038000070000030000011147C9313>I<00FC030206010C030C070C
+060C000F800FF007F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<
+018001C0038003800380038007000700FFF007000E000E000E000E001C001C001C001C00
+3800380038003820704070407080708031001E000C1C7C9B0F>I<0E00C03300E02301C0
+4381C04301C04701C08703800E03800E03800E03801C07001C07001C07001C07101C0E20
+180E20180E201C1E200C264007C38014147C9318>I<0E03803307802307C04383C04301
+C04700C08700800E00800E00800E00801C01001C01001C01001C02001C02001C04001C04
+001C08000E300003C00012147C9315>I<0E00C1C03300E3C02301C3E04381C1E04301C0
+E04701C060870380400E0380400E0380400E0380401C0700801C0700801C0700801C0701
+001C0701001C0602001C0F02000C0F04000E13080003E1F0001B147C931E>I<0383800C
+C4401068E01071E02071E02070C040E00000E00000E00000E00001C00001C00001C00001
+C040638080F38080F38100E5810084C60078780013147D9315>I<0E00C03300E02301C0
+4381C04301C04701C08703800E03800E03800E03801C07001C07001C07001C07001C0E00
+180E00180E001C1E000C3C0007DC00001C00001C00003800F03800F07000E06000C0C000
+4380003E0000131D7C9316>I E /Fh 80 124 df<001F83E000F06E3001C078780380F8
+780300F03007007000070070000700700007007000070070000700700007007000FFFFFF
+800700700007007000070070000700700007007000070070000700700007007000070070
+000700700007007000070070000700700007007000070070000700700007007000070070
+007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E00700000700
+00070000070000070000070000FFFFE00700E00700E00700E00700E00700E00700E00700
+E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FC3
+FE1720809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700E00700E007
+00E00700E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E007
+00E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE1720809F
+19>I<001F81F80000F04F040001C07C06000380F80F000300F00F000700F00F00070070
+000007007000000700700000070070000007007000000700700000FFFFFFFF0007007007
+000700700700070070070007007007000700700700070070070007007007000700700700
+070070070007007007000700700700070070070007007007000700700700070070070007
+00700700070070070007007007007FE3FE3FF02420809F26>I<70F8F8F8F8F8F8F87070
+70707070707070702020202020000000000070F8F8F87005217CA00D>33
+D<7038F87CFC7EFC7E743A0402040204020804080410081008201040200F0E7E9F17>I<
+70F8FCFC74040404080810102040060E7C9F0D>39 D<0020004000800100020006000C00
+0C00180018003000300030007000600060006000E000E000E000E000E000E000E000E000
+E000E000E000E0006000600060007000300030003000180018000C000C00060002000100
+0080004000200B2E7DA112>I<800040002000100008000C000600060003000300018001
+80018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000
+C000C000C001C001800180018003000300060006000C00080010002000400080000B2E7D
+A112>I<0006000000060000000600000006000000060000000600000006000000060000
+00060000000600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF0
+000600000006000000060000000600000006000000060000000600000006000000060000
+0006000000060000000600000006000000060000000600001C207D9A23>43
+D<70F8FCFC74040404080810102040060E7C840D>I<FFC0FFC00A027F8A0F>I<70F8F8F8
+7005057C840D>I<03F0000E1C001C0E00180600380700700380700380700380700380F0
+03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
+03C07003807003807003807807803807001806001C0E000E1C0003F000121F7E9D17>48
+D<018003800F80F380038003800380038003800380038003800380038003800380038003
+80038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C
+1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C000078000
+0780000F00000E00001C0000380000700000600000C0000180000300000600400C004018
+00401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F80
+780780780780380F80000F80000F00000F00000E00001C0000380003F000003C00000E00
+000F000007800007800007C02007C0F807C0F807C0F807C0F00780400780400F00200E00
+1C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E
+00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E00400E
+00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17
+>I<1803001FFE001FFC001FF8001FE00010000010000010000010000010000010000011
+F000161C00180E001007001007800003800003800003C00003C00003C07003C0F003C0F0
+03C0E00380400380400700200600100E000C380003E000121F7E9D17>I<007C00018200
+0701000E03800C07801C0780380300380000780000700000700000F1F000F21C00F40600
+F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0700380380380
+3807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF804001
+0080020080020080040000080000080000100000200000200000400000400000C00000C0
+0001C0000180000380000380000380000380000780000780000780000780000780000780
+00078000030000121F7D9D17>I<03F0000C0C0010060030030020018060018060018060
+01807001807803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F8060
+03804001C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F00012
+1F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003C0
+F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C0000380000380
+000380000700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8
+F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F870000000000000
+0000000070F0F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF0000000
+0000000000000000000000000000000000000000000000000000000000FFFFFFF07FFFFF
+E01C0C7D9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C0018001
+80010003000200020002000200020002000000000000000000000007000F800F800F8007
+000E207D9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0
+000009E0000009E0000009E0000010F0000010F0000010F0000020780000207800002078
+0000403C0000403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F
+00020007800200078002000780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65
+D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F8007800F8007800F
+8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007801E0007800F
+0007800F8007800780078007C0078007C0078007C0078007C0078007C00780078007800F
+8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0
+038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040
+F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
+780000007C0000407C0000403C0000401C0000401E0000800E0000800700010003800200
+01C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E000780070007
+800380078003C0078001E0078001E0078001F0078000F0078000F0078000F8078000F807
+8000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F007
+8000F0078001E0078001E0078003C0078003800780070007800E000F803C00FFFFE0001D
+1F7E9E23>I<FFFFFF000F800F0007800300078003000780010007800180078000800780
+008007800080078080800780800007808000078080000781800007FF8000078180000780
+800007808000078080000780800007800020078000200780002007800040078000400780
+0040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F
+000780030007800300078001000780018007800080078000800780008007800080078080
+000780800007808000078080000781800007FF8000078180000780800007808000078080
+000780800007800000078000000780000007800000078000000780000007800000078000
+000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001E0
+0F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F8000000
+F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E0
+3C0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820
+000FE0001E217D9F24>I<FFF8FFF80F800F8007800F0007800F0007800F0007800F0007
+800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007FFFF0007
+800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
+800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F7E9E22>I<FFFC
+0FC007800780078007800780078007800780078007800780078007800780078007800780
+07800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>I<0FFFC0007C
+00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C
+00003C00003C00003C00003C00003C00003C00003C00003C00003C00203C00F83C00F83C
+00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFE000FC00007800007
+800007800007800007800007800007800007800007800007800007800007800007800007
+800007800007800007800007800007800207800207800207800207800607800407800407
+800C07801C0F807CFFFFFC171F7E9E1C>76 D<FF80001FF80F80001F800780001F0005C0
+002F0005C0002F0005C0002F0004E0004F0004E0004F000470008F000470008F00047000
+8F000438010F000438010F000438010F00041C020F00041C020F00041C020F00040E040F
+00040E040F00040E040F000407080F000407080F000407080F000403900F000403900F00
+0401E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F7E9E2A>
+I<FF803FF807C007C007C0038005E0010005E0010004F001000478010004780100043C01
+00043C0100041E0100040F0100040F010004078100040781000403C1000401E1000401E1
+000400F1000400F1000400790004003D0004003D0004001F0004001F0004000F00040007
+00040007000E0003001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C03800
+07801E000F000F000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0
+F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0
+780001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E00
+01C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80780007801C0007801E0007
+800F0007800F8007800F8007800F8007800F8007800F8007800F8007800F0007801E0007
+801C000780780007FFE00007800000078000000780000007800000078000000780000007
+8000000780000007800000078000000780000007800000078000000FC00000FFFC000019
+1F7E9E1F>I<FFFF80000F80F0000780780007803C0007801E0007801E0007801F000780
+1F0007801F0007801F0007801E0007801E0007803C00078078000780F00007FF80000781
+C0000780E0000780F0000780700007807800078078000780780007807C0007807C000780
+7C0007807C0407807E0407803E040FC01E08FFFC0F10000003E01E207E9E21>82
+D<07E0800C1980100780300380600180600180E00180E00080E00080E00080F00000F000
+007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C08001
+C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7F
+FFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F001080
+0F0010000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
+0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
+0F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C0078003800780
+010007800100078001000780010007800100078001000780010007800100078001000780
+010007800100078001000780010007800100078001000780010007800100078001000780
+01000780010007800100038002000380020001C0020001C0040000E00800007018000038
+2000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F80006007800040078000
+4003C0008003C0008003C0008001E0010001E0010001F0010000F0020000F0020000F806
+000078040000780400003C0800003C0800003C0800001E1000001E1000001F3000000F20
+00000F20000007C0000007C0000007C000000380000003800000038000000100001F207F
+9E22>I<FFF07FF81FF01F800FC007C00F00078003800F00078001000F0007C001000780
+07C00200078007C00200078007C0020003C009E0040003C009E0040003C009E0040003E0
+10F00C0001E010F0080001E010F0080001F02078080000F02078100000F02078100000F0
+403C10000078403C20000078403C20000078C03E2000003C801E4000003C801E4000003C
+801E4000001F000F8000001F000F8000001F000F8000001E00078000000E00070000000E
+00070000000C000300000004000200002C207F9E2F>I<FFF003FF1F8000F80F80006007
+80004007C0004003E0008001E0008001F0010000F0030000F80200007C0400003C040000
+3E0800001E0800001F1000000FB0000007A0000007C0000003C0000003C0000003C00000
+03C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000007C00000
+7FFE00201F7F9E22>89 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
+C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
+D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<
+FEFE06060606060606060606060606060606060606060606060606060606060606060606
+06060606060606FEFE072D7FA10D>I<081020204040808080B8FCFC7C38060E7D9F0D>
+96 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00
+380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>I<0E00
+00FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E
+000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00780E00
+780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C1C1E38
+1E380C70007000F000F000F000F000F000F00070007000380138011C020E0C03F010147E
+9314>I<000380003F800003800003800003800003800003800003800003800003800003
+8000038003E380061B801C0780380380380380700380700380F00380F00380F00380F003
+80F00380F003807003807003803803803807801C07800E1B8003E3F815207E9F19>I<03
+F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F00000F0
+00007000007000003800801800800C010007060001F80011147F9314>I<007C00C6018F
+038F07060700070007000700070007000700FFF007000700070007000700070007000700
+07000700070007000700070007000700070007007FF01020809F0E>I<0000E003E3300E
+3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033E00020
+00002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C00030C0
+00306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E0000
+0E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C00F01C0
+0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
+0E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C0000000000000000000000
+00000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
+0E000E00FFC00A1F809E0C>I<00E001F001F001F000E000000000000000000000000000
+7007F000F000700070007000700070007000700070007000700070007000700070007000
+70007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000FE00000E00
+000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03C00E03
+000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E000E07
+000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E000E
+000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
+000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C
+000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
+0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E
+00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C00F01C0
+0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
+0E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C07000E07000
+E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C0380070E
+0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E00780E
+00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E3E000E
+00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I<03E080
+0619801C05803C0780380380780380700380F00380F00380F00380F00380F00380F00380
+7003807803803803803807801C0B800E138003E380000380000380000380000380000380
+000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E
+000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030704030
+C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F800D14
+7E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E000E000E
+000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E01C0FE
+1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
+01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>I<FF83F81E01E01C00C0
+0E00800E00800E008007010007010003820003820003820001C40001C40001EC0000E800
+00E80000700000700000700000200015147F9318>I<FF9FE1FC3C0780701C0300601C03
+80200E0380400E0380400E03C0400707C0800704C0800704E080038861000388710003C8
+730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E147F9321>
+I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C00007C
+00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF83F81E
+01E01C00C00E00800E00800E008007010007010003820003820003820001C40001C40001
+EC0000E80000E800007000007000007000002000002000004000004000004000F08000F0
+8000F100006200003C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E0
+01C00380078007010E011E011C0338027006700EFFFE10147F9314>I<FFFFFC1601808C
+17>I E /Fi 43 122 df<387CFEFFFF7F3B030306060E0C18702008107C860F>44
+D<FFF0FFF0FFF0FFF00C047F8B11>I<387CFEFEFE7C38000000000000387CFEFEFE7C38
+07147C930F>58 D<07F8001FFE00381F80780F80FC0FC0FC0FC0FC0FC0780FC0301F8000
+1F00003E00007C0000700000E00000E00000C00000C00000C00000C00000C00000C00000
+000000000000000000000001C00003E00007F00007F00007F00003E00001C00012207D9F
+19>63 D<0000E000000000E000000001F000000001F000000001F000000003F800000003
+F800000006FC00000006FC0000000EFE0000000C7E0000000C7E000000183F000000183F
+000000303F800000301F800000701FC00000600FC00000600FC00000C007E00000FFFFE0
+0001FFFFF000018003F000018003F000030001F800030001F800060001FC00060000FC00
+0E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 D<FFFFFE00FFFFFFC007C007E007
+C003F007C001F807C001FC07C001FC07C001FC07C001FC07C001FC07C001F807C003F807
+C007F007C00FE007FFFF8007FFFFC007C003F007C001F807C001FC07C000FC07C000FE07
+C000FE07C000FE07C000FE07C000FE07C000FC07C001FC07C003F807C007F0FFFFFFE0FF
+FFFF001F1F7E9E25>I<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC0001E1F80
+001E3F00000E3F00000E7F0000067E0000067E000006FE000000FE000000FE000000FE00
+0000FE000000FE000000FE0000007E0000007E0000067F0000063F0000063F00000C1F80
+000C0FC0001807E0003803F0007000FE01C0003FFF800007FC001F1F7D9E26>I<FFFFFE
+0000FFFFFFC00007E007F00007E001F80007E000FC0007E0007E0007E0003F0007E0003F
+0007E0001F8007E0001F8007E0001F8007E0001FC007E0001FC007E0001FC007E0001FC0
+07E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001F8007E0001F8007
+E0001F8007E0003F0007E0003F0007E0007E0007E000FC0007E001F80007E007F000FFFF
+FFC000FFFFFE0000221F7E9E28>I<FFFFFFE0FFFFFFE007E007E007E001E007E000E007
+E0006007E0007007E0003007E0003007E0603007E0603007E0600007E0E00007E1E00007
+FFE00007FFE00007E1E00007E0E00007E0600007E0600C07E0600C07E0000C07E0001807
+E0001807E0001807E0003807E0007807E000F807E003F0FFFFFFF0FFFFFFF01E1F7E9E22
+>I<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E0
+003007E0603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0
+E00007E0600007E0600007E0600007E0000007E0000007E0000007E0000007E0000007E0
+000007E0000007E00000FFFF8000FFFF80001C1F7E9E21>I<FFFF0FFFF0FFFF0FFFF007
+E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0
+007E0007E0007E0007E0007E0007E0007E0007E0007E0007FFFFFE0007FFFFFE0007E000
+7E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E
+0007E0007E0007E0007E0007E0007E0007E0007E0007E0007E00FFFF0FFFF0FFFF0FFFF0
+241F7E9E29>72 D<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E007E0
+07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF101F
+7E9E14>I<FFFF8000FFFF800007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000
+0007E0000007E0000007E000C007E000C007E000C007E001C007E001C007E001C007E003
+8007E0038007E00F8007E01F80FFFFFF80FFFFFF801A1F7E9E1F>76
+D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006F80000DF0006F80000DF
+00067C00019F00067C00019F00063E00031F00063E00031F00061F00061F00061F00061F
+00060F800C1F00060F800C1F000607C0181F000607C0181F000607C0181F000603E0301F
+000603E0301F000601F0601F000601F0601F000600F8C01F000600F8C01F0006007D801F
+0006007D801F0006003F001F0006003F001F0006003F001F0006001E001F00FFF01E03FF
+F8FFF00C03FFF82D1F7E9E32>I<FFFFFE00FFFFFF8007E00FE007E003F007E001F807E0
+01F807E001FC07E001FC07E001FC07E001FC07E001FC07E001F807E001F807E003F007E0
+0FE007FFFF8007FFFE0007E0000007E0000007E0000007E0000007E0000007E0000007E0
+000007E0000007E0000007E0000007E0000007E00000FFFF0000FFFF00001E1F7E9E24>
+80 D<FFFFF80000FFFFFF000007E01FC00007E007E00007E003F00007E003F00007E003
+F80007E003F80007E003F80007E003F80007E003F00007E003F00007E007E00007E01FC0
+0007FFFF000007FFFC000007E03E000007E01F000007E00F800007E00F800007E00FC000
+07E00FC00007E00FC00007E00FE00007E00FE00007E00FE00007E00FE03007E007F03007
+E003F860FFFF01FFC0FFFF007F80241F7E9E27>82 D<03FC080FFF381E03F83800F87000
+78700038F00038F00018F00018F80000FC00007FC0007FFE003FFF801FFFE00FFFF007FF
+F000FFF80007F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F80070FE01
+E0E7FFC081FF00161F7D9E1D>I<7FFFFFFC7FFFFFFC7C07E07C7007E01C6007E00C6007
+E00CE007E00EC007E006C007E006C007E006C007E0060007E0000007E0000007E0000007
+E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
+E0000007E0000007E0000007E0000007E00003FFFFC003FFFFC01F1E7E9D24>I<FFFF01
+FFE0FFFF01FFE007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C
+0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C00
+07E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007E0000C0007
+E0000C0007E0000C0003E000180001F000180001F000300000F8006000007E03C000001F
+FF80000003FC0000231F7E9E28>I<FFFE0FFFC0FFE0FFFE0FFFC0FFE00FC000FC000E00
+0FE000FC000E0007E000FE000C0007E000FE000C0003F000FE00180003F001FF00180003
+F001BF00180001F801BF00300001F8031F80300001FC031F80700000FC031F80600000FC
+060FC06000007E060FC0C000007E0E0FE0C000007E0C07E0C000003F0C07E18000003F18
+03F18000003F9803F38000001F9803F30000001FB001FB0000000FF001FE0000000FF001
+FE0000000FE000FE00000007E000FC00000007C0007C00000007C0007C00000003C00078
+00000003800038000000018000300000331F7F9E36>87 D<07FC001FFF003F0F803F07C0
+3F03E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0
+FC05E07E0DE03FF8FE0FE07E17147F9319>97 D<FF0000FF00001F00001F00001F00001F
+00001F00001F00001F00001F00001F00001F00001F1FC01F7FF01FE0F81F807C1F007E1F
+003E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F003E1F007C1F807C1E
+C1F81C7FE0181F8018207E9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300
+FC0000FC0000FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F81C007FF00
+01FC0013147E9317>I<0007F80007F80000F80000F80000F80000F80000F80000F80000
+F80000F80000F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00
+F8FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF1820
+7E9F1D>I<01FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC
+0000FC0000FC00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>I<
+001F8000FFC001F3E003E7E003C7E007C7E007C3C007C00007C00007C00007C00007C000
+FFFC00FFFC0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000
+07C00007C00007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC3C07FF
+FE0F079E1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC001800
+001800001C00001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E7800
+3C78003C3F01F80FFFE001FF00171E7F931A>I<FF0000FF00001F00001F00001F00001F
+00001F00001F00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0F81F80F81F
+00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
+00F8FFE3FFFFE3FF18207D9F1D>I<1C003E007F007F007F003E001C0000000000000000
+0000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+001F001F00FFE0FFE00B217EA00E>I<FF0000FF00001F00001F00001F00001F00001F00
+001F00001F00001F00001F00001F00001F01FE1F01FE1F00F01F00C01F03801F07001F0C
+001F18001F7C001FFC001F9E001F0F001E0F801E07C01E03C01E01E01E01F01E00F8FFC3
+FFFFC3FF18207E9F1C>107 D<FF00FF001F001F001F001F001F001F001F001F001F001F
+001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
+00FFE0FFE00B207E9F0E>I<FE0FE03F80FE1FF07FC01E70F9C3E01E407D01F01E807E01
+F01F807E01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0
+1F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFF
+E3FF8FFE27147D932C>I<FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F00F81F00F81F
+00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18
+147D931D>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007E
+FC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>
+I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F00
+3F1F003F1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F00
+001F00001F00001F0000FFE000FFE000181D7E931D>I<01F81807FE381F87783F01F83E
+01F87E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F87E00F83F
+01F81F87F80FFEF803F8F80000F80000F80000F80000F80000F80000F80000F80007FF00
+07FF181D7E931C>I<FE3E00FE7F801ECFC01E8FC01E8FC01F8FC01F03001F00001F0000
+1F00001F00001F00001F00001F00001F00001F00001F00001F0000FFF000FFF00012147E
+9316>I<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007
+F006F81EFFFCC7F010147E9315>I<01800180018003800380038007800F803F80FFFCFF
+FC0F800F800F800F800F800F800F800F800F800F800F860F860F860F860F8607CC03F801
+F00F1D7F9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
+00F81F00F81F00F81F00F81F00F81F00F81F01F81F01F80F06F807FCFF03F8FF18147D93
+1D>I<FFE07F80FFE07F801F001C000F8018000F80180007C0300007C0300003E0600003
+E0600001F0C00001F0C00001F9C00000F9800000FF8000007F0000007F0000003E000000
+3E0000001C0000001C000019147F931C>I<FFE1FF00FFE1FF000F80700007C0E00007E0
+C00003E1800001F3800000FF0000007E0000003E0000003F0000007F8000006F800000C7
+C0000183E0000381F0000701F8000E00FC00FF81FF80FF81FF8019147F931C>120
+D<FFE07F80FFE07F801F001C000F8018000F80180007C0300007C0300003E0600003E060
+0001F0C00001F0C00001F9C00000F9800000FF8000007F0000007F0000003E0000003E00
+00001C0000001C0000001800000018000078300000FC300000FC600000C0E00000E1C000
+007F8000001E000000191D7F931C>I E /Fj 13 119 df<00003FC0000000003FC00000
+00003FC0000000007FE0000000007FE0000000007FE000000000FBF000000000FBF00000
+0000FBF000000001F3F800000001F1F800000001F1F800000003F1FC00000003E1FC0000
+0003E0FC00000007E0FE00000007C0FE00000007C07E0000000FC07F0000000FC07F0000
+000F807F0000001F803F8000001F803F8000001F003F8000003F001FC000003F001FC000
+003E001FC000007E000FE000007E000FE000007C000FE00000FC0007F00000FC0007F000
+00F80007F00001F80003F80001F80003F80001FFFFFFF80003FFFFFFFC0003FFFFFFFC00
+03FFFFFFFC0007FFFFFFFE0007E00000FE0007E00000FE000FC00000FF000FC000007F00
+0FC000007F001F8000003F801F8000003F801F8000003F803F0000001FC03F0000001FC0
+3F0000001FC07E0000000FE07E0000000FE07C0000000FE0FC00000007F02C377EB631>
+65 D<FFFFFC0000FFFFFFC000FFFFFFF000FFFFFFF800FFFFFFFE00FE0007FF00FE0000
+FF80FE00003FC0FE00001FC0FE00000FE0FE00000FE0FE000007E0FE000007F0FE000007
+F0FE000007F0FE000007F0FE000007F0FE000007F0FE000007E0FE00000FE0FE00000FE0
+FE00001FC0FE00003FC0FE0000FF80FE0007FF00FFFFFFFE00FFFFFFF800FFFFFFF000FF
+FFFFC000FFFFFF0000FE003F8000FE003F8000FE001FC000FE001FC000FE000FE000FE00
+07E000FE0007F000FE0003F000FE0003F800FE0001FC00FE0001FC00FE0000FE00FE0000
+FE00FE00007F00FE00007F00FE00003F80FE00003F80FE00001FC0FE00000FC0FE00000F
+E0FE000007F0FE000007F0FE000003F8FE000003F8FE000001FC263779B630>82
+D<000FF800007FFF0001FFFFC003FFFFE007FFFFE00FF00FE01FC001C01F8000C03F0000
+003F0000007E0000007E0000007E000000FC000000FC000000FC000000FC000000FC0000
+00FC000000FC000000FC0000007E0000007E0000007E0000003F0000003F0000201F8000
+E01FC003E00FF00FE007FFFFE003FFFFE001FFFFC0007FFE00000FF0001B227DA121>99
+D<000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001
+F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001
+F8000001F8000001F8000001F8003F81F801FFE1F803FFF9F807FFFFF80FFFFFF81FF81F
+F81FE007F83F8003F83F0001F87F0001F87E0001F87E0001F8FE0001F8FC0001F8FC0001
+F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FE0001F87E0001F87E0001
+F87F0001F83F0003F83F8007F81FC00FF81FF03FF80FFFFFF807FFFDF803FFF9F801FFE1
+F8007F01F81D377DB626>I<001FE000007FF80001FFFE0003FFFF0007FFFF800FF03F80
+1FC01FC01F8007C03F0007E03F0003E07E0003E07E0001F07FFFFFF0FFFFFFF0FFFFFFF0
+FFFFFFF0FFFFFFF0FC000000FC000000FC000000FC0000007C0000007E0000007E000000
+3F0000003F8000001FC000101FE000F00FF807F007FFFFF003FFFFF000FFFFE0007FFF00
+000FF8001C227EA121>I<001F801F0000FFF1FF0001FFFFFF8003FFFFFF8007FFFFFF80
+0FE07F00001FC03F80001F801F80001F801F80003F000FC0003F000FC0003F000FC0003F
+000FC0003F000FC0003F000FC0001F801F80001F801F80001FC03F80000FE07F00000FFF
+FE00000FFFFC00001FFFF800001EFFF000001E1F8000003E000000003E000000003E0000
+00001F000000001FFFFE00001FFFFFC0000FFFFFF0000FFFFFF8001FFFFFFC003FFFFFFC
+007F0003FE007E0000FE00FE00007F00FC00003F00FC00003F00FC00003F00FC00003F00
+FE00007F007F0000FE007F8001FE003FF00FFC001FFFFFF8000FFFFFF00003FFFFC00000
+FFFF0000001FF8000021327EA125>103 D<FEFEFEFEFEFEFE0000000000000000000000
+007E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E07
+357CB411>105 D<FC07F800FC3FFE00FC7FFF00FDFFFF80FFFFFFC0FFE07FC0FF801FC0
+FF000FE0FF0007E0FE0007E0FE0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0
+FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0
+FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0
+1B227BA126>110 D<000FF000007FFE0000FFFF0003FFFFC007FFFFE00FF81FF01FE007
+F81F8001F83F0000FC3F0000FC7E00007E7E00007E7C00003EFC00003FFC00003FFC0000
+3FFC00003FFC00003FFC00003FFC00003FFC00003F7E00007E7E00007E7E00007E3F0000
+FC3F8001FC1FC003F81FE007F80FF81FF007FFFFE003FFFFC000FFFF00007FFE00000FF0
+0020227EA125>I<FC03C0FC1FC0FC3FC0FCFFC0FDFFC0FFFC00FFF000FFC000FF8000FF
+0000FF0000FE0000FE0000FE0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
+0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC
+000012227BA119>114 D<01FF8007FFF01FFFFC3FFFFC3FFFFC7F00F87E0018FC0000FC
+0000FC0000FC0000FE00007F00007FF0003FFF001FFFC00FFFF007FFF801FFFC001FFE00
+01FE00007F00003F00003F00003F40003F60003F78007EFF01FEFFFFFCFFFFFC7FFFF00F
+FFE001FF0018227EA11C>I<FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0
+FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0
+FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0
+FC0007E0FC000FE0FC001FE0FC003FE0FF00FFE07FFFFFE07FFFF7E03FFFE7E01FFF87E0
+0FF807E01B227BA126>117 D<FC00007E7E0000FC7E0000FC7E0000FC3F0001F83F0001
+F83F8001F81F8003F01F8003F01FC003F00FC007E00FC007E00FE007E007E00FC007E00F
+C007F00FC003F01F8003F01F8001F01F0001F83F0001F83F0000F83E0000FC7E0000FC7E
+00007C7C00007C7C00007EFC00003EF800003EF800003EF800001FF000001FF000001FF0
+00000FE0001F227FA122>I E end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 680 55 a Fj(Avoiding)26 b(Recursion)820 141 y
+Fi(Brian)18 b(Harv)o(ey)590 199 y(Univ)o(ersit)o(y)f(of)g(California,)i
+(Berk)o(eley)91 317 y Fh(It)11 b(is)h(traditional)f(to)g(understand)g
+(a)g(computer)g(program)f(as)h(a)g Fg(se)n(quenc)n(e)i
+Fh(of)d(instructions.)20 b(The)11 b(computer)0 375 y(carries)h(out)g
+(these)h(instructions)g(one)f(after)f(another.)19 b(V)l(arious)12
+b Fg(c)n(ontr)n(ol)h(structur)n(es)j Fh(allo)o(w)c(the)h(programmer)e
+(to)0 433 y(c)o(hange)16 b(the)g(order)g(in)g(whic)o(h)h(these)f
+(instructions)h(are)f(carried)g(out;)g(there)g(are)f(conditional)j
+(structures)e(that)0 491 y(allo)o(w)c(a)g(c)o(hoice)h(b)q(et)o(w)o(een)
+f(subsequences,)i(and)f(lo)q(oping)g(structures)f(that)f(allo)o(w)h
+(the)g(rep)q(etition)i(of)d(a)h(sequence.)91 553 y(In)f(con)o(trast)e
+(to)h(this)h(idea)h(of)e(sequen)o(tial)i(programming)e(there)h(is)g(a)f
+(more)g(recen)o(t)h(mo)q(del)g(called)i Fg(functional)0
+611 y(pr)n(o)n(gr)n(amming)18 b Fh([Bac)o(kus,)c(1978;)f(Allen,)j
+(1984;)d(Ab)q(elson,)i(1985].)k(In)14 b(this)h(approac)o(h,)f(a)g
+(program)f(is)i(view)o(ed)g(as)0 669 y(a)c(collection)j(of)d
+(mathematical)g(functions,)i(whic)o(h)f(can)g(b)q(e)g(applied)h(to)e
+(argumen)o(ts)g(and)h(comp)q(osed)f(with)h(other)0 727
+y(functions)17 b(to)f(create)g(more)g(complicated)h(functions.)24
+b(The)17 b(emphasis)g(is)g(on)f(the)g(input-output)i(b)q(eha)o(vior)e
+(of)0 785 y(a)i(function,)h(rather)e(than)h(on)g(the)g(sequence)i(of)d
+(ev)o(en)o(ts)h(b)o(y)g(whic)o(h)h(the)f(computer)g(determines)h(the)f
+(output)0 843 y(v)m(alue.)i(Programming)10 b(languages)i(suc)o(h)g(as)f
+(LISP)l(,)h(Logo,)g(and)g(APL)g(emphasize)g(the)g(functional)h(mo)q
+(del,)f(while)0 901 y(BASIC,)k(P)o(ascal,)e(and)i(C)f(emphasize)h(the)f
+(sequen)o(tial)i(view.)j(\(This)15 b(division)j(is)d(not)g(absolute;)g
+(an)o(y)g(program)0 960 y(can)f(b)q(e)h(written)f(in)h(an)o(y)e
+(language,)h(more)g(or)f(less.)20 b(But)15 b(eac)o(h)f(language)g
+(encourages)g(a)f(certain)i(natural)f(st)o(yle)0 1018
+y(of)h(programming.\))91 1080 y(In)23 b(this)g(pap)q(er)g(I)g(b)q(egin)
+h(b)o(y)e(arguing)h(that)f(functional)h(programming)f(is)h(not)f(only)i
+(more)e(p)q(o)o(w)o(erful)0 1138 y(tec)o(hnically)d(but)e(also)g(more)g
+(sensible)h(p)q(edagogically)l(,)h(esp)q(ecially)h(when)d(computer)g
+(programming)g(is)g(to)f(b)q(e)0 1196 y(used)j(as)e(a)h(v)o(ehicle)h
+(for)f(teac)o(hing)g(mathematical)g(ideas.)29 b(Wh)o(y)l(,)18
+b(then,)h(is)f(secondary)g(sc)o(ho)q(ol)h(programming)0
+1254 y(done)14 b(almost)f(exclusiv)o(ely)j(in)e(BASIC)g(and)g(P)o
+(ascal?)20 b(Wh)o(y)13 b(not)g(Logo?)19 b(Although)14
+b(there)g(are)f(sev)o(eral)h(answ)o(ers)0 1312 y(to)h(this)h(question,)
+f(I)h(w)o(an)o(t)f(to)f(fo)q(cus)i(atten)o(tion)f(on)g(one)h(tec)o
+(hnical)h(reason:)j(T)l(eac)o(hers)15 b(are)g(put)h(o\013)e(b)o(y)i
+(Logo's)0 1370 y(hea)o(vy)j(reliance)j(on)d(recursion)i(as)e(the)g
+(principal)j(con)o(trol)e(mec)o(hanism.)33 b(I)20 b(shall)h(discuss)g
+(the)e(relationship)0 1428 y(b)q(et)o(w)o(een)e(functional)g
+(programming)f(and)h(recursion,)g(sho)o(w)f(ho)o(w)g(the)h(t)o(w)o(o)e
+(can)i(b)q(e)g(separated,)f(and)h(suggest)0 1486 y(sp)q(eci\014c)g
+(approac)o(hes)e(to)g(sample)g(mathematical)h(programming)e(problems.)
+91 1548 y(Recursion)19 b(is)f(itself)g(an)g(in)o(teresting)g
+(mathematical)g(idea,)g(b)q(ecause)h(of)e(its)g(connection)i(with)f
+(pro)q(of)f(b)o(y)0 1606 y(induction.)30 b(I)19 b(don't)e(mean)h(to)f
+(suggest)h(that)f(mathematics)h(teac)o(hers)g(should)h(wish)f(to)g(a)o
+(v)o(oid)f(recursion)i(in)0 1664 y(ev)o(ery)12 b(situation.)19
+b(Indeed,)14 b(later)f(w)o(e'll)g(consider)g(examples)g(\(e.g.,)e
+(computing)i(the)f(determinan)o(t)h(of)f(a)g(matrix\))0
+1723 y(for)i(whic)o(h)h(the)g(use)f(of)g(recursion)h(is)g(naturally)g
+(connected)h(with)f(the)f(task.)19 b(Logo)14 b(is,)h(of)f(course,)g(an)
+g(excellen)o(t)0 1781 y(v)o(ehicle)j(for)d(the)h(study)f(of)h
+(recursion)g(when)h(that)e(is)h(desired.)21 b(But)15
+b(not)f(ev)o(ery)h(topic)g(is)g(inheren)o(tly)i(recursiv)o(e,)0
+1839 y(and)c(the)g(v)m(alue)h(of)e(functional)i(programming)f(will)h(b)
+q(e)g(enhanced)g(if)f(the)g(issue)h(of)e(recursion)i(can)f(b)q(e)g
+(separated)0 1897 y(from)h(that)h(of)g(functions.)0 2013
+y Fi(Sequen)o(tial)j(and)g(F)l(unctional)i(Programming)91
+2130 y Fh(Consider)c(the)f(problem)h(of)f(adding)h(t)o(w)o(o)d
+(matrices:)666 2199 y Ff(\022)707 2236 y Fh(2)45 b(3)g(4)707
+2291 y(5)g(6)g(7)873 2199 y Ff(\023)917 2263 y Fh(+)962
+2199 y Ff(\022)1010 2236 y Fh(87)62 b(0)57 b(14)1003
+2291 y Fe(\000)p Fh(6)46 b(28)56 b(9)1251 2199 y Ff(\023)0
+2380 y Fh(The)12 b(result)g(is)h(a)e(matrix)h(with)g(the)g(same)g(shap)
+q(e)g(as)g(the)g(t)o(w)o(o)e(addends.)20 b(Eac)o(h)11
+b(elemen)o(t)i(of)f(the)g(result)g(is)g(formed)0 2438
+y(b)o(y)j(adding)i(the)e(corresp)q(onding)h(elemen)o(ts)h(of)e(the)g
+(addends;)h(in)g(sequen)o(tial)h(programming)e(this)h(leads)g(to)e(six)
+0 2496 y(assignmen)o(t)h(instructions,)h(whic)o(h)g(can)f(b)q(e)h
+(arranged)f(in)h(t)o(w)o(o)e(nested)i(lo)q(ops)g(to)e(re\015ect)i(the)f
+(t)o(w)o(o-dimensional)0 2554 y(structure)h(of)g(the)h(matrix.)24
+b(F)l(or)16 b(no)o(w)g(let's)g(ignore)h(the)g(matter)e(of)h(reading)h
+(these)g(particular)g(n)o(um)o(b)q(ers)g(in)o(to)0 2612
+y(the)c(computer,)h(and)f(supp)q(ose)h(w)o(e)f(ha)o(v)o(e)g(t)o(w)o(o)f
+(arra)o(ys)g Fd(A)h Fh(and)g Fd(B)g Fh(con)o(taining)h(the)g(addends.)
+20 b(A)13 b(BASIC)h(program)0 2670 y(to)h(add)g(these)g(matrices)h
+(migh)o(t)f(b)q(e)g(written)h(as)e(follo)o(ws.)964 2779
+y(1)p eop
+%%Page: 2 2
+2 1 bop 0 45 a Fd(10)24 b(DIMENSION)e(A\(2,3\),)h(B\(2,3\),)g(C\(2,3\))
+0 104 y(20)h(FOR)f(I)h(=)f(1)h(TO)g(2)0 162 y(30)71 b(FOR)24
+b(J)f(=)h(1)g(TO)g(3)0 220 y(40)119 b(C\(I,J\))23 b(=)h(A\(I,J\))f(+)h
+(B\(I,J\))0 278 y(50)71 b(NEXT)24 b(J)0 336 y(60)g(NEXT)f(I)0
+394 y(70)h(END)0 474 y Fh(This)c(is)g(a)f(simple)i(enough)e(program.)32
+b(It)19 b(has)g(t)o(w)o(o)f(main)i(w)o(eaknesses.)32
+b(One)20 b(has)g(to)e(do)i(with)f(the)h(use)f(of)0 532
+y(arra)o(ys)h(to)g(represen)o(t)h(the)h(matrices.)37
+b(The)22 b(problem)f(is)h(that)e(the)i(particular)f(dimensions,)j(t)o
+(w)o(o)c(ro)o(ws)g(b)o(y)0 590 y(three)d(columns,)h(m)o(ust)e(b)q(e)i
+(built)g(in)o(to)f(the)g(program,)f(b)q(oth)h(in)g(the)g(arra)o(y)f
+(declarations)h(and)h(in)f(the)g(con)o(trol)0 648 y(structures)f(\(the)
+g Fd(FOR)g Fh(statemen)o(ts\))f(that)g(con)o(trol)i(the)f(sequence)h
+(of)f(ev)o(en)o(ts.)23 b(The)17 b(second)g(w)o(eakness)f(is)h(that)0
+706 y(this)h(program)f(exp)q(ects)i(to)e(\014nd)i(its)f(data)f(in)i
+(\014xed)g(places,)g(the)f(arra)o(ys)f Fd(A)h Fh(and)g
+Fd(B)p Fh(,)f(and)h(lea)o(v)o(es)h(its)f(result)g(in)0
+765 y(a)f(third)g(predetermined)i(lo)q(cation)e Fd(C)p
+Fh(.)g(This)g(is)h(\014ne)f(if)h(w)o(e)e(only)i(w)o(an)o(t)d(to)i
+(compute)g Fc(A)11 b Fh(+)h Fc(B)r Fh(,)17 b(but)g(what)g(if)g(w)o(e)0
+823 y(w)o(an)o(t)f(to)h(solv)o(e)h(a)f(sligh)o(tly)h(di\013eren)o(t)g
+(problem,)g(lik)o(e)h Fc(A)12 b Fh(+)g(2)p Fc(B)r Fh(?)27
+b(What)17 b(if)h(w)o(e)f(w)o(an)o(t)g(to)f(c)o(hec)o(k)i(that)f
+(addition)0 881 y(of)g(matrices)h(is)g(truly)f(comm)o(utativ)o(e,)g(b)o
+(y)h(adding)g(\014rst)f Fc(A)12 b Fh(+)g Fc(B)20 b Fh(and)e(then)g
+Fc(B)c Fh(+)e Fc(A)p Fh(?)28 b(Or,)18 b(ha)o(ving)g(computed)0
+939 y Fc(C)g Fh(as)d(the)g(sum)h(of)f Fc(A)g Fh(and)h
+Fc(B)r Fh(,)f(what)g(if)h(w)o(e)f(w)o(an)o(t)f(to)h(use)h(that)e
+(result)i(as)f(part)g(of)g(a)g(larger)g(computation,)g(lik)o(e)0
+997 y Fc(C)e Fh(+)d Fc(B)r Fh(?)22 b(In)16 b(eac)o(h)f(case)g(w)o(e)g
+(ha)o(v)o(e)g(to)f(rewrite)i(the)f(program.)91 1063 y(A)j(b)q(etter)g
+(in)o(teractiv)o(e)g(system)f(for)g(studen)o(ts)h(to)f(use)h(in)h
+(exploring)g(matrix)e(arithmetic)i(w)o(ould)f(supply)0
+1121 y(functions)e(whose)f(domain)h(and)f(range)g(are)g(matrices.)20
+b(W)l(e)15 b(should)h(b)q(e)g(able)g(to)f(en)o(ter)g(instructions)h
+(lik)o(e)0 1198 y Fd(PRINT)23 b(ADD\(A,B\))0 1256 y(PRINT)g(ADD\(A,)g
+(ADD\(B,B\)\))0 1314 y(LET)g(C)h(=)g(ADD\(A,B\))0 1372
+y(PRINT)f(ADD\(C,B\))0 1430 y(IF)h(ADD\(A,B\))e(=)i(ADD\(B,A\))f(THEN)g
+(PRINT)g("IT'S)h(COMMUTATIVE.")0 1510 y Fh(\(In)18 b(this)g(fanciful)h
+(example)g(I)f(am)g(using)g(the)g(syn)o(tax)f(of)g(BASIC,)h(but)g
+(asking)g(for)g(computations)f(that)g(are)0 1568 y(b)q(ey)o(ond)22
+b(the)g(p)q(o)o(w)o(ers)f(of)g(most)g(v)o(ersions)h(of)f(BASIC.)h(Man)o
+(y)f(v)o(ersions)h(do)g(allo)o(w)g(this)g(sort)f(of)g(functional)0
+1626 y(notation,)14 b(but)i(only)g(for)e(certain)i(functions)g(of)e
+(single)j(n)o(um)o(b)q(ers,)e(not)g(arra)o(y-v)m(alued)g(functions.\))
+91 1692 y(Although)k(functions)g(are)e(one)i(of)e(the)i(cen)o(tral)f
+(ideas)h(of)e(mathematics,)i(they)f(are)g(not)f(limited)j(to)e(the)0
+1750 y(narro)o(w)c(sc)o(ho)q(ol)i(v)o(ersion)f(of)g(mathematics)g(as)g
+(\\stu\013)f(ab)q(out)h(n)o(um)o(b)q(ers.")20 b(Consider)c(the)f
+(functions)0 1827 y(plural\(b)q(o)o(x\))h(=)f(b)q(o)o(xes)0
+1885 y(F)l(renc)o(h\(b)q(o)q(ok\))g(=)h(livre)0 1943
+y(capital\(England\))g(=)g(London)0 2001 y(A)o(tomicW)l(eigh)o(t\(silv)
+o(er\))g(=)f(107.87)0 2081 y(I)i(shall)i(resist)e(the)g(temptation)g
+(to)f(explore)i(p)q(ossible)h(p)q(edagogic)e(uses)h(of)e(functional)j
+(programming)d(in)i(the)0 2139 y(areas)g(suggested)h(b)o(y)g(these)g
+(simple)h(functions.)32 b(A)18 b(serious)i(e\013ort)d(to)i(translate)f
+(English)i(in)o(to)f(F)l(renc)o(h,)h(for)0 2198 y(example,)d(w)o(ould)g
+(need)g(m)o(uc)o(h)g(more)f(sophistication)h(than)g(the)f(w)o
+(ord-for-w)o(ord)f(translation)i(function)g(illus-)0
+2256 y(trated)i(ab)q(o)o(v)o(e.)35 b(The)20 b(p)q(oin)o(t)g(is)h(that)e
+(no)h(matter)f(what)h(a)g(computation)g(is)g(ab)q(out,)h(the)f(abilit)o
+(y)i(to)d(de\014ne,)0 2314 y(in)o(v)o(ok)o(e,)c(and)g(comp)q(ose)g
+(functions)h(is)g(a)f(natural)g(and)h(con)o(v)o(enien)o(t)f(to)q(ol.)91
+2380 y(Computer)h(scien)o(tists)i(are)e(excited)i(ab)q(out)e
+(functional)i(programming)e(for)g(reasons)g(unconnected)j(with)0
+2438 y(p)q(edagogy)l(.)43 b(T)l(o)23 b(a)f(computer)h(scien)o(tist,)i
+(what)e(distinguishes)i(this)e(metho)q(dology)g(from)f(traditional)i
+(ap-)0 2496 y(proac)o(hes)14 b(is)h(that)e(a)h(function)h(has)f(no)g
+(\\side)g(e\013ects.")19 b(That)14 b(is,)g(when)h(a)f(programmer)f
+(asks)g(for)h(the)g(v)m(alue)h(of)0 2554 y Fc(f)5 b Fh(\(7\))14
+b(the)h(v)m(alue)h(returned)f(is)g(alw)o(a)o(ys)f(the)h(same.)20
+b(This)15 b(computation)g(do)q(es)g(not)f(cause)h(a)g(p)q(ermanen)o(t)g
+(c)o(hange)0 2612 y(in)f(the)f(computer's)g(memory)f(that)h(migh)o(t)g
+(a\013ect)f(later)h(computations.)19 b(\(F)l(or)13 b(example,)h(there)f
+(are)g(no)g(assign-)0 2670 y(men)o(ts)h(to)f(global)i(v)m(ariables.\))
+21 b(This)14 b(is)h(imp)q(ortan)o(t)f(for)f(t)o(w)o(o)g(reasons.)19
+b(First,)14 b(it)g(is)h(easier)f(to)g(carry)g(out)f(formal)964
+2779 y(2)p eop
+%%Page: 3 3
+3 2 bop 0 45 a Fh(reasoning)14 b(ab)q(out)g(a)g(program)e(without)i
+(side)h(e\013ects.)k(One)c(branc)o(h)f(of)g(computer)g(science)h(is)g
+(concerned)g(with)0 104 y(program)g Fg(veri\014c)n(ation)s
+Fh(:)h(the)h(attempt)e(to)h(pro)o(vide)h(formal)f(pro)q(of)g(of)g(the)h
+(correctness)f(of)g(a)h(program.)22 b(F)l(unc-)0 162
+y(tional)14 b(programs)f(lend)i(themselv)o(es)g(to)e(this)h(attempt)f
+(more)h(readily)h(than)f(traditional)g(sequen)o(tial)h(programs)0
+220 y(that)20 b(are)g(hea)o(vily)i(dep)q(enden)o(t)g(on)e(long-term)h
+(v)m(ariable)h(assignmen)o(t.)36 b(Second,)22 b(if)f(the)g(computation)
+f(of)g(a)0 278 y(function)15 b(has)g(no)f(side)i(e\013ects,)e(then)h
+(it)f(mak)o(es)g(no)h(di\013erence)h(whic)o(h)f(of)f(t)o(w)o(o)f
+(desired)j(computations)f(is)g(done)0 336 y(\014rst;)i(eac)o(h)g(is)g
+(guaran)o(teed)f(to)g(b)q(e)i(indep)q(enden)o(t)h(of)d(the)h(other.)25
+b(Recen)o(t)17 b(dev)o(elopmen)o(ts)g(in)h(computer)f(hard-)0
+394 y(w)o(are)f(include)k Fg(p)n(ar)n(al)r(lel)h Fh(pro)q(cessors,)c
+(in)h(whic)o(h)g(the)f(t)o(w)o(o)f(computations)h(migh)o(t)g(actually)h
+(tak)o(e)e(place)i(at)f(the)0 452 y(same)c(time.)19 b(F)l(unctional)14
+b(programs)e(can)h(easily)h(tak)o(e)e(adv)m(an)o(tage)g(of)h(this)g
+(parallelism;)j(traditional)d(programs)0 510 y(require)j(detailed)h
+(analysis)f(b)q(efore)f(an)o(y)g(subtask)g(can)g(b)q(e)h(split)g(o\013)
+f(for)f(parallel)j(computation.)91 576 y(F)l(or)c(our)g(p)q(edagogic)h
+(purp)q(oses,)h(ho)o(w)o(ev)o(er,)d(the)i(imp)q(ortan)o(t)f(p)q(oin)o
+(ts)h(ab)q(out)g(functional)g(programming)f(are)0 634
+y(di\013eren)o(t.)22 b(A)15 b(studen)o(t)h(who)f(w)o(an)o(ted)g(to)g
+(use)h(the)g(BASIC)h(instructions)f(sho)o(wn)f(ab)q(o)o(v)o(e)h(to)f
+(add)h(t)o(w)o(o)e(matrices)0 693 y(in)i(a)f(larger)f(program)g(w)o
+(ould)i(ha)o(v)o(e)e(to)h(remem)o(b)q(er)g(that)f(the)h(result)h(is)f
+(in)h(the)f(arra)o(y)f Fd(C)g Fh(and)i(write)f(the)g(rest)f(of)0
+751 y(the)k(program)e(accordingly)l(.)29 b(Tw)o(o)16
+b(suc)o(h)i(addition)h(problems)f(with)g(di\013eren)o(t)g(matrices)g(w)
+o(ould)g(require)g(t)o(w)o(o)0 809 y(copies)g(of)f(the)g(instructions)h
+(or)f(reuse)g(of)g(the)g(same)g(arra)o(ys)f(for)g(di\013eren)o(t)i
+(purp)q(oses.)26 b(A)17 b(function)h(that)f(can)0 867
+y(b)q(e)f(applied)h(to)e(an)o(y)g(t)o(w)o(o)f(matrices,)h(and)g(whose)g
+(return)h(v)m(alue)g(can)g(b)q(e)g(used)f(as)g(part)g(of)g(a)g(larger)g
+(expression)0 925 y(instead)h(of)g(b)q(eing)h(tied)f(to)f(a)h(sp)q
+(eci\014c)h(result)f(arra)o(y)l(,)f(allo)o(ws)h(the)g(studen)o(t)f(to)g
+(think)i(ab)q(out)e(the)h(mathematics)0 983 y(instead)g(of)f(tripping)h
+(o)o(v)o(er)e(the)i(programming)e(language.)0 1104 y
+Fi(First-Class)k(Data)g(Aggregates)91 1224 y Fh(Consider)i(no)o(w)f
+(the)h(problem)g(of)f(en)o(tering)i(the)e(actual)h(matrix)f(v)m(alues)i
+(in)o(to)f(the)f(program.)33 b(In)20 b(most)0 1283 y(programming)14
+b(languages,)g(the)g(facilities)i(for)e(dealing)h(with)g(individual)i
+(n)o(um)o(b)q(ers)e(\(scalars\))e(are)h(m)o(uc)o(h)g(more)0
+1341 y(\015exible)23 b(than)f(the)f(facilities)i(for)e(arra)o(ys.)37
+b(It)21 b(is)h(as)f(if)h(n)o(um)o(b)q(ers)g(are)f(\\real)g(things")g
+(while)i(collections)g(of)0 1399 y(n)o(um)o(b)q(ers)15
+b(are)g(less)h(real.)k(F)l(or)14 b(example,)i(in)f(BASIC)h(or)f(P)o
+(ascal)f(a)h(scalar)g(constan)o(t)f(can)h(b)q(e)h(directly)g(assigned)0
+1457 y(to)f(a)f(v)m(ariable)j(\()p Fd(X)23 b(=)h(3)p
+Fh(\))15 b(or)g(can)g(b)q(e)h(part)e(of)h(a)g(larger)g(expression)h(\()
+p Fd(X)23 b(=)h(Y+3)p Fh(\),)14 b(but)i(y)o(ou)e(can't)h(sa)o(y)0
+1534 y Fd(A)24 b(=)f(2,3,4,5,6,7)0 1614 y Fh(to)c(assign)h(a)f(v)m
+(alue)i(to)e(an)g(en)o(tire)h(arra)o(y)e(at)h(once.)34
+b(Instead,)20 b(getting)g(this)g(v)m(alue)h(in)o(to)e(the)h(computer)f
+(is)h(a)0 1672 y(sequence)c(of)f(ev)o(en)o(ts)g(in)h(itself:)0
+1749 y Fd(10)24 b(DIMENSION)e(A\(2,3\))0 1807 y(20)i(FOR)f(I)h(=)f(1)h
+(TO)g(2)0 1865 y(30)71 b(FOR)24 b(J)f(=)h(1)g(TO)g(3)0
+1924 y(40)119 b(READ)23 b(A\(I,J\))0 1982 y(50)71 b(NEXT)24
+b(J)0 2040 y(60)g(NEXT)f(I)0 2098 y(70)h(DATA)f(2,3,4,5,6,7)0
+2156 y(80)h(END)91 2236 y Fh(Logo's)16 b(list)h(pro)q(cessing)h(mak)o
+(es)e(matrix)h(manipulation)h(m)o(uc)o(h)f(more)f(con)o(v)o(enien)o(t.)
+25 b(F)l(or)17 b(one)g(thing,)g(the)0 2295 y(size)e(of)f(a)g(list)h
+(need)g(not)e(b)q(e)i(declared)g(in)g(adv)m(ance;)g(w)o(e)f(can)g
+(write)h(matrix)e(functions)i(that)f(w)o(ork)f(on)h(matrices)0
+2353 y(of)i(an)o(y)f(size)i(or)e(shap)q(e.)23 b(Also,)16
+b(a)g(list)h(is)f(a)g(\\\014rst-class")f(en)o(tit)o(y:)21
+b(Lik)o(e)c(a)f(n)o(um)o(b)q(er,)g(it)g(can)g(b)q(e)h(used)f(as)g(part)
+f(of)0 2411 y(an)h(expression,)g(as)g(an)g(input)h(to)e(or)h(output)f
+(from)g(a)h(function,)h(as)e(the)h(v)m(alue)h(assigned)g(to)e(a)h(v)m
+(ariable,)h(or)e(as)0 2469 y(something)g(to)g(b)q(e)h(read)f(or)g(prin)
+o(ted.)91 2535 y(W)l(e'll)i(represen)o(t)g(a)f(matrix)g(as)h(a)f(list)h
+(of)f(lists.)25 b(Eac)o(h)17 b(of)f(the)g(sublists)i(will)g(b)q(e)g
+(one)e(ro)o(w)g(of)g(the)h(matrix.)0 2593 y(W)l(e)e(can)h(solv)o(e)f
+(the)g(addition)i(problem)e(p)q(osed)h(ab)q(o)o(v)o(e)f(b)o(y)g
+(assigning)h(matrix)f(v)m(alues)h(to)f(v)m(ariables:)0
+2670 y Fd(MAKE)23 b("A)h([[2)f(3)h(4])g([5)f(6)h(7]])964
+2779 y Fh(3)p eop
+%%Page: 4 4
+4 3 bop 0 45 a Fd(MAKE)23 b("B)h([[87)f(0)h(14])f([-6)h(28)f(9]])0
+104 y(SHOW)g(ADD)h(:A)f(:B)0 177 y Fh(or)15 b(w)o(e)g(can)g(use)g(the)h
+(matrix)f(v)m(alues)h(directly)g(as)f(inputs)h(to)f(the)g(addition)i
+(function:)0 254 y Fd(SHOW)23 b(ADD)h([[2)f(3)h(4])g([5)f(6)h(7]])47
+b([[87)23 b(0)h(14])g([-6)f(28)h(9]])0 327 y Fh(The)13
+b(brac)o(k)o(ets)f(that)g(delimit)i(the)f(sublists)h(mak)o(e)e(the)h(t)
+o(w)o(o-b)o(y-three)f(shap)q(e)h(of)f(the)h(matrix)f(immediately)i
+(clear)0 385 y(to)h(a)f(h)o(uman)i(reader)f(as)g(w)o(ell)h(as)f(to)f
+(the)h(computer)h(program.)0 500 y Fi(Adding)i(Matrices)f(in)h(Logo)91
+614 y Fh(I)12 b(ha)o(v)o(e)g(indicated)h(some)f(of)f(the)h(reasons)f
+(wh)o(y)h(Logo)f(is)i(a)e(go)q(o)q(d)h(language)g(in)h(whic)o(h)f(to)g
+(add)g(matrices,)g(but)0 672 y(I)h(ha)o(v)o(e)g(not)f(y)o(et)h(gotten)f
+(around)h(to)f(writing)h(the)g(actual)g(program.)18 b(I)c(shall)g(no)o
+(w)e(do)h(so,)g(in)g(a)g(traditional)g(Logo)0 730 y(st)o(yle.)25
+b(The)17 b(t)o(w)o(o-dimensional)h(nature)f(of)f(a)h(matrix)f(is)h
+(re\015ected)h(in)g(a)e(t)o(w)o(o-pro)q(cedure)h(program)f(structure.)0
+788 y(The)g(top-lev)o(el)h(pro)q(cedure)g(go)q(es)f(through)g(the)g(t)o
+(w)o(o)f(input)i(matrices)f(ro)o(w)f(b)o(y)h(ro)o(w,)f(adding)i(pairs)f
+(of)g(ro)o(ws)f(to)0 846 y(pro)q(duce)h(a)g(ro)o(w)e(of)h(the)h
+(result.)21 b(The)16 b(subpro)q(cedure)h(that)e(adds)g(a)h(ro)o(w)e
+(has)i(the)f(same)h(general)g(structure;)f(it)0 904 y(go)q(es)i
+(through)h(t)o(w)o(o)e(v)o(ectors)h(\(that's)f(what)h(a)h(ro)o(w)e(of)i
+(a)f(matrix)g(is\))h(elemen)o(t)h(b)o(y)e(elemen)o(t,)i(adding)f(pairs)
+g(of)0 962 y(n)o(um)o(b)q(ers.)0 1039 y Fd(TO)24 b(MATRIX.ADD)e(:M1)i
+(:M2)24 1097 y(IF)f(EMPTYP)g(:M1)h([OUTPUT)f([]])24 1155
+y(OUTPUT)g(FPUT)g(\(VECTOR.ADD)g(FIRST)g(:M1)g(FIRST)g(:M2\))310
+1213 y(\(MATRIX.ADD)g(BUTFIRST)f(:M1)i(BUTFIRST)f(:M2\))0
+1271 y(END)0 1387 y(TO)h(VECTOR.ADD)e(:V1)i(:V2)24 1446
+y(IF)f(EMPTYP)g(:V1)h([OUTPUT)f([]])24 1504 y(OUTPUT)g(FPUT)g(\(SUM)h
+(FIRST)f(:V1)g(FIRST)g(:V2\))310 1562 y(\(VECTOR.ADD)g(BUTFIRST)f(:V1)i
+(BUTFIRST)f(:V2\))0 1620 y(END)0 1693 y Fh(I'v)o(e)f(called)i(the)f
+(top-lev)o(el)g(pro)q(cedure)g Fd(MATRIX.ADD)e Fh(rather)h(than)g(just)
+g Fd(ADD)g Fh(to)g(mak)o(e)f(sure)i(there)f(is)h(no)0
+1751 y(confusion)17 b(ab)q(out)g(whic)o(h)g(is)g(whic)o(h.)24
+b(The)17 b(pro)q(cedure)g Fd(SUM)f Fh(that's)g(used)h(b)o(y)f
+Fd(VECTOR.ADD)f Fh(is)i(Logo's)f(built-in)0 1810 y(addition)g(function)
+g(for)f(scalars.)0 1886 y Fd(?)24 b(SHOW)f(MATRIX.ADD)g([[2)g(3)h(4])f
+([5)h(6)g(7]])47 b([[87)23 b(0)h(14])f([-6)h(28)f(9]])0
+1944 y([[89)g(3)h(18])f([-1)h(34)g(16]])91 2018 y Fh(These)d(pro)q
+(cedures)g(are)g Fg(r)n(e)n(cursive)p Fh(.)35 b(That)20
+b(is,)i(eac)o(h)e(of)h(them)f(includes)j(an)d(in)o(v)o(o)q(cation)h(of)
+g(the)f(same)0 2076 y(function)h(applied)g(to)f(di\013eren)o(t)g
+(inputs.)35 b(De\014ning)21 b(a)e(function)i(in)g(terms)e(of)g(itself)i
+(is)f(a)g(familiar)h(tric)o(k)f(to)0 2134 y(mathematicians:)678
+2265 y Fc(n)p Fh(!)12 b(=)778 2200 y Ff(\032)820 2236
+y Fh(1)259 b(if)15 b Fc(n)e Fh(=)g(0;)820 2291 y Fc(n)d
+Fe(\002)h Fh(\()p Fc(n)f Fe(\000)g Fh(1\)!)45 b(if)15
+b Fc(n)e(>)g Fh(0.)0 2378 y(But)i(mathematicians)h(also)f(kno)o(w)f
+(that)g(it's)h(hard)g(to)g(get)f(studen)o(ts)h(to)g(understand)g(these)
+g(inductiv)o(e)i(de\014ni-)0 2436 y(tions)e(at)g(\014rst.)91
+2496 y(There)k(are)f(man)o(y)h(reasons)f(wh)o(y)g(Logo)h(is)g(not)f
+(widely)j(used)e(in)g(teac)o(hing)h(mathematical)f(topics)g(suc)o(h)0
+2554 y(as)i(matrix)f(arithmetic.)38 b(BASIC)22 b(is)g(p)q(opular)f(b)q
+(ecause)h(it)g(often)e(comes)h(free)g(with)h(p)q(ersonal)f(computers.)0
+2612 y(P)o(ascal)d(is)g(p)q(opular,)h(in)g(the)f(United)h(States,)e(b)q
+(ecause)i(of)f(the)g(Adv)m(anced)h(Placemen)o(t)f(Exam)g(in)g(Computer)
+0 2670 y(Science.)24 b(Logo,)16 b(b)q(ecause)h(of)e(its)i(widespread)g
+(use)f(in)h(elemen)o(tary)f(sc)o(ho)q(ols,)g(has)g(an)g(undeserv)o(ed)h
+(but)f(nearly)964 2779 y(4)p eop
+%%Page: 5 5
+5 4 bop 0 45 a Fh(univ)o(ersal)20 b(reputation)f(as)f(a)g(language)h
+(suitable)h Fg(only)i Fh(for)c(v)o(ery)h(y)o(oung)f(studen)o(ts)h
+(doing)g(trivial)h(problems.)0 104 y(Man)o(y)12 b(p)q(eople)h(b)q
+(eliev)o(e)h(that)e(Logo)g(can)g(only)h(do)f(graphics,)h(lik)o(e)g(a)f
+(pain)o(t)g(program.)18 b(But)12 b(ev)o(en)h(p)q(eople)h(who)e(see)0
+162 y(past)17 b(these)g(misunderstandings)i(often)e(consider)h(Logo)e
+(list)i(pro)q(cessing)g(di\016cult)h(b)q(ecause)f(of)f(the)g(frequen)o
+(t)0 220 y(use)f(of)e(recursion.)91 280 y(Wh)o(y)20 b(is)h(a)f
+(recursiv)o(e)i(de\014nition)g(needed)g(here?)37 b(Later)20
+b(I)h(shall)h(suggest)e(that)g(the)g(use)h(of)f(recursion)0
+338 y(is)i Fg(not)j Fh(truly)d(necessary;)i(b)o(y)d(pro)o(viding)i(a)e
+(larger)g(functional)h(programming)f(\\to)q(olkit")g(w)o(e)g(can)h
+(express)0 396 y(the)e(desired)h(computation)f(without)g(writing)h
+(self-referen)o(tial)h(pro)q(cedures.)35 b(Still,)22
+b(there)f(is)f(a)g(connection)0 455 y(b)q(et)o(w)o(een)14
+b(the)f(functional)i(approac)o(h)e(and)g(the)h(use)g(of)f(recursion.)20
+b(T)l(o)13 b(simplify)i(the)f(discussion,)h(let's)e(consider)0
+513 y(the)j(subpro)q(cedure)i Fd(VECTOR.ADD)p Fh(.)c(The)i(sequen)o
+(tial)h(view)g(of)f(programming)f(w)o(ould)i(express)f(the)g(job)g(of)g
+(this)0 571 y(pro)q(cedure)g(as)f(a)g(sequence)h(of)f(ev)o(en)o(ts,)f
+(one)i(for)e(eac)o(h)i(elemen)o(t)g(of)e(the)i(result)f(v)o(ector:)0
+647 y Fd(LET)23 b(C\(1\))h(=)f(A\(1\))h(+)g(B\(1\))0
+705 y(LET)f(C\(2\))h(=)f(A\(2\))h(+)g(B\(2\))0 763 y(LET)f(C\(3\))h(=)f
+(A\(3\))h(+)g(B\(3\))0 838 y Fh(In)15 b(this)f(illustration)h(I)g(am)e
+(supp)q(osing)i(that)f(w)o(e)f(are)h(adding)h(v)o(ectors)e(of)g(length)
+i(three.)k(Sequen)o(tial)d(program-)0 896 y(ming)j(languages)g
+(generally)h(pro)o(vide)f(a)f(lo)q(oping)i(mec)o(hanism)f(so)f(that)g
+(a)h(string)f(of)g(similar)i(ev)o(en)o(ts)f(can)f(b)q(e)0
+954 y(enco)q(ded)f(without)e(explicit)i(rep)q(etition:)0
+1030 y Fd(FOR)23 b(I=1)h(TO)f(3)0 1088 y(LET)g(C\(I\))h(=)f(A\(I\))h(+)
+g(B\(I\))0 1147 y(NEXT)f(I)0 1221 y Fh(In)18 b(the)g(functional)h
+(programming)e(mo)q(del,)i(w)o(e)e(are)h(trying)g(to)f(get)g(a)o(w)o(a)
+o(y)f(from)h(this)h(idea)h(of)e(a)g(sequence)i(of)0 1279
+y(ev)o(en)o(ts.)k(F)l(or)15 b(one)i(thing,)f(w)o(e)g(ha)o(v)o(e)g(no)g
+(predetermined)i(place,)f(lik)o(e)g(the)f(arra)o(y)f
+Fd(C)h Fh(in)h(the)g(sequen)o(tial)g(v)o(ersion,)0 1337
+y(to)d(put)h(the)f(result.)21 b(Still,)16 b(it's)e(p)q(ossible)i(to)e
+(express)h(the)g(output)f(v)m(alue)i(in)g(terms)e(of)g(comp)q(osition)h
+(of)g(built-in)0 1395 y(functions.)20 b(W)l(e)12 b(m)o(ust)f(use)i(the)
+f(addition)h(function)g Fd(SUM)p Fh(,)e(but)h(also)g(functions)h(that)f
+(select)h(particular)f(elemen)o(ts)0 1453 y(from)i(a)h(v)o(ector)g(or)g
+(com)o(bine)h(elemen)o(ts)f(in)o(to)h(a)e(new)i(v)o(ector:)0
+1530 y Fd(TO)24 b(VECTOR.ADD)e(:V1)i(:V2)24 1588 y(OUTPUT)f(\(LIST)g
+(\(SUM)g(ITEM)h(1)f(:V1)h(ITEM)f(1)h(:V2\))334 1646 y(\(SUM)f(ITEM)h(2)
+f(:V1)h(ITEM)f(2)h(:V2\))334 1704 y(\(SUM)f(ITEM)h(3)f(:V1)h(ITEM)f(3)h
+(:V2\)\))0 1762 y(END)0 1837 y Fh(Again,)13 b(in)g(this)g(illustration)
+h(I)f(am)f(assuming)h(three-elemen)o(t)h(v)o(ectors.)k(I'v)o(e)12
+b(used)i(the)e(built-in)j(function)f Fd(ITEM)0 1895 y
+Fh(to)k(select)h(one)g(elemen)o(t)g(from)f(a)g(v)o(ector)g(and)g(the)h
+(function)g Fd(LIST)f Fh(to)g(com)o(bine)h(sev)o(eral)g(elemen)o(ts)g
+(in)o(to)g(one)0 1953 y(v)o(ector.)f(\(I'v)o(e)13 b(formatted)f(this)i
+(pro)q(cedure)g(to)e(indicate)j(the)e(groupings)h(clearly)g(but)f(in)h
+(most)f(micro)q(computer)0 2011 y(v)o(ersions)i(of)g(Logo)g(the)g
+Fd(OUTPUT)f Fh(instruction)j(m)o(ust)d(b)q(e)i(en)o(tered)g(as)e(a)h
+(single,)h(long)g(line.\))91 2071 y(The)f(di\016cult)o(y)g(comes)g(in)g
+(generalizing)h(this)f(de\014nition)h(to)e(w)o(ork)g(with)g(v)o(ectors)
+g(of)g(an)o(y)g(length.)20 b(F)l(ormal)0 2129 y(mathematical)15
+b(notation)g(has)g(no)g(trouble)h(with)467 2249 y(\()p
+Fc(a)509 2256 y Fb(1)529 2249 y Fc(;)8 b(a)574 2256 y
+Fb(2)594 2249 y Fc(;)g(a)639 2256 y Fb(3)658 2249 y Fh(\))i(+)h(\()p
+Fc(b)770 2256 y Fb(1)789 2249 y Fc(;)d(b)830 2256 y Fb(2)849
+2249 y Fc(;)g(b)890 2256 y Fb(3)909 2249 y Fh(\))13 b(=)g(\()p
+Fc(a)1030 2256 y Fb(1)1060 2249 y Fh(+)d Fc(b)1125 2256
+y Fb(1)1145 2249 y Fc(;)e(a)1190 2256 y Fb(2)1220 2249
+y Fh(+)i Fc(b)1285 2256 y Fb(2)1305 2249 y Fc(;)e(a)1350
+2256 y Fb(3)1380 2249 y Fh(+)i Fc(b)1445 2256 y Fb(3)1465
+2249 y Fh(\))0 2342 y(but)15 b(when)h(w)o(e)f(w)o(an)o(t)f(to)h
+(generalize)h(w)o(e)f(m)o(ust)g(resort)f(to)h(ellipses:)479
+2461 y(\()p Fc(a)521 2468 y Fb(1)542 2461 y Fc(;)8 b(:)g(:)g(:)t(;)g(a)
+667 2468 y Fa(n)691 2461 y Fh(\))i(+)h(\()p Fc(b)803
+2468 y Fb(1)822 2461 y Fc(;)d(:)g(:)g(:)d(;)j(b)944 2468
+y Fa(n)967 2461 y Fh(\))13 b(=)g(\()p Fc(a)1088 2468
+y Fb(1)1118 2461 y Fh(+)d Fc(b)1183 2468 y Fb(1)1203
+2461 y Fc(;)e(:)g(:)g(:)d(;)j(a)1329 2468 y Fa(n)1363
+2461 y Fh(+)j Fc(b)1429 2468 y Fa(n)1453 2461 y Fh(\))0
+2554 y(This)16 b(notation)g(is)g(ok)m(a)o(y)f(on)h(pap)q(er)g(but)g
+(not)g(quite)g(what)f(w)o(e)h(w)o(an)o(t)e(for)i(a)f(computer)h
+(program.)k(The)c(mathe-)0 2612 y(matician's)e(solution)g(is)g(an)f
+(inductiv)o(e)j(de\014nition:)21 b(Imagine)14 b(that)f(w)o(e)g(kno)o(w)
+g(ho)o(w)g(to)g(add)g Fc(n)p Fh(-elemen)o(t)i(v)o(ectors,)0
+2670 y(and)20 b(use)g(that)f(to)g(de\014ne)i(addition)g(of)e(v)o
+(ectors)g(with)h Fc(n)13 b Fh(+)h(1)19 b(elemen)o(ts.)34
+b(T)l(o)20 b(do)g(this)g(w)o(e)f(need)i(a)e(function)964
+2779 y(5)p eop
+%%Page: 6 6
+6 5 bop 0 45 a Fh(\\adjoin")16 b(that)g(tak)o(es)f(a)h(n)o(um)o(b)q(er)
+h(and)g(a)f(v)o(ector)f(as)h(inputs,)i(giving)f(as)f(its)g(output)g(a)h
+(sligh)o(tly)g(longer)g(v)o(ector)0 104 y(including)h(the)d(new)h(n)o
+(um)o(b)q(er.)k(Then)c(w)o(e)f(can)g(sa)o(y)456 226 y(adjoin\()p
+Fc(a)620 233 y Fb(0)640 226 y Fc(;)8 b Fi(a)p Fh(\))i(+)g(adjoin\()p
+Fc(b)919 233 y Fb(0)939 226 y Fc(;)e Fi(b)p Fh(\))k(=)h(adjoin\()p
+Fc(a)1231 233 y Fb(0)1261 226 y Fh(+)e Fc(b)1327 233
+y Fb(0)1347 226 y Fc(;)d Fi(a)h Fh(+)i Fi(b)p Fh(\))0
+323 y(The)16 b(Logo)f(equiv)m(alen)o(t)i(of)e(adjoin)h(is)g(called)h
+Fd(FPUT)p Fh(,)e(for)f(\\\014rst)h(put.")21 b(It)15 b(tak)o(es)g(t)o(w)
+o(o)f(inputs.)22 b(The)16 b(\014rst)f(can)g(b)q(e)0 381
+y(an)o(ything,)f(but)g(the)h(second)f(m)o(ust)g(b)q(e)h(a)e(list.)21
+b(The)14 b(output)g(is)h(a)f(new)g(list)h(consisting)g(of)f(the)g(old)g
+(list)h(with)g(the)0 439 y(new)f(thing)h(put)f(in)h(fron)o(t.)j(T)l
+(aking)c(apart)f(a)h(v)o(ector)f(is)i(accomplished)h(with)e(the)g
+(functions)h Fd(FIRST)p Fh(,)d(to)i(extract)0 497 y(the)k(\014rst)g
+(elemen)o(t)i(of)e(a)g(list,)h(and)g Fd(BUTFIRST)p Fh(,)e(whose)h
+(output)g(is)h(a)f(list)h(equal)g(to)f(its)h(input)g(with)g(the)f
+(\014rst)0 555 y(elemen)o(t)e(remo)o(v)o(ed.)91 618 y(The)g(recursiv)o
+(e)h(de\014nition)h(of)e Fd(VECTOR.ADD)p Fh(,)e(then,)i(expresses)h
+(the)f(sum)g(of)g(its)g(input)h(v)o(ectors)f(in)h(terms)0
+676 y(of)i(the)g(sum)g(of)g(t)o(w)o(o)f(smaller)i(v)o(ectors,)f(namely)
+g(the)h Fd(BUTFIRST)p Fh(s)e(of)g(the)i(inputs,)g(with)g(one)f(extra)g
+(n)o(um)o(b)q(er)0 734 y(adjoined,)12 b(namely)g(the)f(ordinary)g(n)o
+(umeric)h(sum)f(of)f(the)h Fd(FIRST)g Fh(elemen)o(ts)g(of)g(eac)o(h)g
+(v)o(ector.)18 b(Lik)o(e)12 b(an)o(y)e(inductiv)o(e)0
+792 y(de\014nition,)18 b(it)f(needs)g(a)f(base)h(case.)24
+b(This)17 b(one)f(sa)o(ys)g(that)g(the)g(sum)h(of)f(t)o(w)o(o)f
+(zero-length)i(\(empt)o(y\))f(v)o(ectors)f(is)0 850 y(the)i(empt)o(y)f
+(v)o(ector.)22 b(The)17 b(analysis)g(of)f Fd(MATRIX.ADD)f
+Fh(is)i(similar,)h(except)f(that)e(a)h(matrix)g(is)h(a)g(list)g(of)f(v)
+o(ectors)0 909 y(rather)f(than)g(a)g(list)h(of)e(n)o(um)o(b)q(ers.)0
+1026 y Fi(Wh)o(y)j(Is)g(Recursion)g(Hard?)91 1144 y Fh(There)12
+b(are)g(sev)o(eral)h(asp)q(ects)f(to)g(the)g(di\016cult)o(y)i(that)d
+(studen)o(ts)h(ha)o(v)o(e)g(in)h(coming)g(to)e(understand)i(recursiv)o
+(e)0 1202 y(programming)i(st)o(yle.)23 b(One)17 b(of)e(these)h(is)h
+(also)f(found)g(in)h(learning)g(to)f(accept)g(inductiv)o(e)i(pro)q
+(ofs:)d(the)h(sense)g(of)0 1260 y(unfairness)d(in)h(an)o(y)e
+(self-referen)o(tial)i(de\014nition.)21 b(\\Y)l(ou're)12
+b(assuming)h(what)f(y)o(ou're)g(supp)q(osed)h(to)f(b)q(e)i(pro)o
+(ving!")0 1318 y(But)h(in)h(some)f(w)o(a)o(ys)f(the)i(di\016cult)o(y)g
+(is)g(greater)e(in)i(the)f(case)h(of)e(programming.)91
+1382 y(An)19 b(inductiv)o(e)i(pro)q(of)e(can)h(b)q(e)g(presen)o(ted)f
+(\\ground)g(up.")33 b(W)l(e)19 b(sho)o(w)g(explicitly)j(that)c(the)h
+(theorem)g(is)0 1440 y(true)d(for)g Fc(n)e Fh(=)h(1.)23
+b(Then,)16 b(b)o(y)h(the)f(inductiv)o(e)i(step,)e(w)o(e)g(can)g(see)h
+(that)f(it)g(m)o(ust)g(b)q(e)h(true)f(for)f Fc(n)g Fh(=)g(2.)22
+b(Then,)17 b(b)o(y)0 1498 y(induction)f(again,)e(it)g(m)o(ust)f(also)h
+(b)q(e)h(true)f(for)f Fc(n)g Fh(=)g(3.)19 b(The)14 b(adv)m(an)o(tage)g
+(of)f(this)i(p)q(ersp)q(ectiv)o(e)g(is)g(that)e(eac)o(h)h(step)0
+1556 y(is)h(tak)o(en)f(from)g(a)g(\014rm)h(fo)q(oting,)f(with)h
+(nothing)g(hanging)g(in)h(the)e(air.)20 b(That)14 b(is,)h(b)o(y)f(the)h
+(time)g(w)o(e)f(consider)i(the)0 1614 y(case)f Fc(n)e
+Fh(=)g(3)i(w)o(e)g(are)g(completely)h(satis\014ed)g(that)f(the)g
+(theorem)g(has)g(b)q(een)h(demonstrated)f(for)f Fc(n)f
+Fh(=)g(2.)91 1677 y(By)19 b(con)o(trast,)f(in)i(the)f(programming)f
+(con)o(text)h(the)g(more)f(usual)i(situation)g(is)f(that)f(w)o(e)h(ha)o
+(v)o(e)g(to)f(w)o(ork)0 1735 y(bac)o(kw)o(ards.)h(F)l(or)13
+b(example,)h(w)o(e)g(are)f(presen)o(ted)i(with)f(a)f(pair)i(of)e
+(three-elemen)o(t)i(v)o(ectors)e(to)g(add.)20 b(That)13
+b(is)h(our)0 1793 y(starting)i(p)q(oin)o(t.)23 b(W)l(e)16
+b(then)h(sa)o(y)l(,)e(\\w)o(e)h(could)h(do)f(this)h(if)f(w)o(e)g(knew)h
+(ho)o(w)e(to)h(add)g(t)o(w)o(o-elemen)o(t)g(v)o(ectors.")22
+b(The)0 1852 y(initial)16 b(problem)e(m)o(ust)f(b)q(e)i(susp)q(ended)g
+(while)h(w)o(e)d(consider)i(this)f(subproblem.)21 b(By)13
+b(the)h(time)g(w)o(e)g(get)f(do)o(wn)h(to)0 1910 y(the)g(base)h(case)f
+(there)g(are)g(three)h(suc)o(h)f(susp)q(ended)i(problems.)k(This)15
+b(state)f(of)f(a\013airs)h(is)h(a)f(c)o(hallenge)i(not)d(only)0
+1968 y(to)g(our)h(faith)f(but)h(to)f(our)h(memory)l(.)19
+b(It)14 b(is)g(v)o(ery)f(easy)h(to)f(lose)h(the)g(thread)f(of)h(con)o
+(texts)f(in)h(whic)o(h)h(subproblems)0 2026 y(arose.)27
+b(The)18 b(di\013erence)h(b)q(et)o(w)o(een)f(the)g(pro)q(of)f(and)h
+(the)g(program)f(arises)h(b)q(ecause)h(in)f(the)g(pro)q(of)f(w)o(e)h
+(are)f(not)0 2084 y(sp)q(eci\014cally)f(concerned)e(with)g(an)o(y)f
+(concrete)g(example;)i(the)e(goal)g(is)h(a)f(general)h(truth,)e(and)i
+(it)f(mak)o(es)g(as)g(m)o(uc)o(h)0 2142 y(sense)19 b(to)f(start)f
+(small)i(as)f(not.)29 b(But)18 b(w)o(e)g(wrote)g(the)g(program)g(b)q
+(ecause)h(w)o(e)f(w)o(an)o(ted)g(to)g(solv)o(e)g(a)g(particular)0
+2200 y(problem,)e(and)f(most)f(often)h(not)g(a)g(trivial)h(base-case)g
+(problem.)91 2263 y(F)l(or)21 b(teac)o(hing)i(purp)q(oses,)h(it)e(is)g
+(p)q(ossible)i(to)e(in)o(tro)q(duce)h(recursion)f(from)g(the)g(ground)g
+(up.)41 b(W)l(e)22 b(can)0 2321 y(in)o(tro)q(duce)15
+b(a)f(general)h(problem,)g(then)g(decide)h(to)e(start)f(b)o(y)h
+(solving)h(the)g(simplest)g(p)q(ossible)h(case.)k(This)15
+b(is)g(the)0 2380 y(metho)q(d)e(I)f(prefer)h(in)g(m)o(y)f(o)o(wn)g
+(teac)o(hing.)20 b(The)12 b(adv)m(an)o(tage)g(is)h(that)f(it)h(a)o(v)o
+(oids)f(the)g(sense)h(of)f(hanging)h(in)g(midair,)0 2438
+y(but)i(there)g(are)g(t)o(w)o(o)f(costs.)19 b(First,)14
+b(it)i(means)f(that)f(the)h(use)h(of)e(recursion)i(can't)f(b)q(e)g
+(motiv)m(ated)h(b)o(y)f(a)f(problem)0 2496 y(that)h(really)i(arises)f
+(in)h(class;)f(suc)o(h)g(problems)g(w)o(on't)f(b)q(e)i(so)e(simple.)23
+b(Second,)17 b(although)f(the)g(studen)o(ts)f(don't)0
+2554 y(feel)e(strained,)g(they)f(do)g(feel)h(fo)q(olish)g(during)g(the)
+f(b)q(eginning)i(stages)d(of)h(the)g(explanation.)20
+b(The)12 b(recursiv)o(e)h(st)o(yle)0 2612 y(seems)k(lik)o(e)i(an)e(o)o
+(v)o(erly)g(complicated)i(approac)o(h)e(to)f(suc)o(h)i(simple)h
+(problems.)27 b(Then)17 b(the)h(more)f(complicated)0
+2670 y(cases)e(can)g(feel)i(lik)o(e)f(rabbits)f(suddenly)i(pulled)h
+(from)c(a)h(hat.)964 2779 y(6)p eop
+%%Page: 7 7
+7 6 bop 91 45 a Fh(Another)12 b(problem)g(in)h(learning)g(recursion)g
+(is)f(faced)h(b)o(y)e(studen)o(ts)h(who)g(ha)o(v)o(e)f(previous)i(exp)q
+(erience)h(in)f(the)0 104 y(sequen)o(tial)k(programming)f(st)o(yle.)22
+b(They)17 b(are)e(strongly)h(tempted)g(to)g(in)o(terpret)g(the)g
+(recursiv)o(e)h(in)o(v)o(o)q(cation)f(as)0 162 y(a)e(lo)q(op,)g(an)g
+(instruction)h(to)f(\\do)f(it)i(again.")k(That)14 b(in)o(terpretation)g
+(can)g(sometimes)g(w)o(ork)f(for)h(recursiv)o(e)g(Logo)0
+220 y(commands)j(\(programs)g(with)h(side-e\013ect)g(instructions\),)h
+(but)e(is)i(almost)e(nev)o(er)h(appropriate)f(for)g(recursiv)o(e)0
+278 y(op)q(erations)h(\(functions)h(that)e(return)h(v)m(alues,)i(lik)o
+(e)f Fd(VECTOR.ADD)p Fh(\).)d(The)i(actual)g(sequence)i(of)d(ev)o(en)o
+(ts)h(in)h(the)0 336 y(computer)14 b(is)g(not)f(what)g(these)h(studen)o
+(ts)f(w)o(ould)h(predict,)h(in)f(whic)o(h)h(the)f(\014rst)f(in)o(v)o(o)
+q(cation)h(computes)g(the)f(\014rst)0 394 y(elemen)o(t,)19
+b(then)f(the)g(second)g(tak)o(es)f(o)o(v)o(er.)27 b(It)18
+b(w)o(ould)g(b)q(e)h(more)e(nearly)i(accurate)e(to)h(sa)o(y)f(that)g
+(the)h(sequence)0 452 y(happ)q(ens)h(bac)o(kw)o(ards;)e(the)h(\014rst)f
+(in)o(v)o(o)q(cation)i(can't)e(do)g(its)h(job)g(un)o(til)g(the)g
+(second)g(is)h(complete,)f(and)g(so)f(on.)0 510 y(So)e(it)h(is)f(the)h
+Fg(last)j Fh(in)o(v)o(o)q(cation,)c(the)g(one)h(for)e(the)h(base)h
+(case,)e(that)h(really)h(happ)q(ens)g(\014rst!)91 591
+y(A)c(problem)g(related)h(to)e(the)h(\\do)f(it)h(again")g
+(misunderstanding)i(concerns)e(the)g(nature)g(of)f(lo)q(cal)i(v)m
+(ariables.)0 649 y(In)h(a)g(lo)q(op,)g(suc)o(h)g(as)g(the)f
+Fd(FOR)p Fh({)p Fd(NEXT)g Fh(examples)h(seen)h(earlier,)f(there)g(is)h
+(one)e(single)j(lo)q(op)e(v)m(ariable)h(whose)f(v)m(alue)0
+707 y(k)o(eeps)j(c)o(hanging.)25 b(In)18 b(a)e(recursiv)o(e)i(pro)q
+(cedure,)f(the)g(relev)m(an)o(t)h(v)m(ariable)g(names)f(\(the)f(pro)q
+(cedure)i(inputs,)g(lik)o(e)0 765 y Fd(V1)d Fh(and)g
+Fd(V2)p Fh(\))g(do)g(not)g(corresp)q(ond)g(to)g(a)g(single)h(b)q(o)o(x)
+g(in)o(to)f(whic)o(h)h(c)o(hanging)g(v)m(alues)g(are)f(placed.)21
+b(Rather,)15 b(eac)o(h)0 823 y(in)o(v)o(o)q(cation)i(of)f(the)g(pro)q
+(cedure)h(creates)f(a)g(new)h(set)f(of)g(v)m(ariables.)24
+b(Sev)o(eral)17 b(suc)o(h)g(v)m(ariables)g(can)g(exist)f(at)g(the)0
+881 y(same)g(time.)24 b(Studen)o(ts)16 b(ha)o(v)o(e)g(to)g(w)o(ork)g
+(out)g(ho)o(w)g(the)g(program)f(decides)j(whic)o(h)f(v)m(ariable)h(to)e
+(use)h(when)g(suc)o(h)0 939 y(a)e(name)g(app)q(ears)g(in)h(an)g
+(instruction.)0 1074 y Fi(F)l(unctional)j(Programming)e(Without)i
+(Recursion)91 1209 y Fh(One)g(language)f(sp)q(eci\014cally)j(designed)e
+(for)e(matrix)h(manipulation)h(is)g(APL.)f(T)l(o)f(add)i(t)o(w)o(o)d
+(matrices)i(in)0 1267 y(APL,)e(w)o(e)g(can)g(simply)i(use)e(the)h
+(built-in)h Fd(+)e Fh(op)q(eration.)23 b(Addition)18
+b(in)f(APL)g(is)f(de\014ned)i(to)e(w)o(ork)f(for)g(scalars,)0
+1325 y(v)o(ectors,)k(matrices,)g(or)f(higher-dimensional)k(arra)o(ys.)
+30 b(The)19 b(APL)g(programmer)f(a)o(v)o(oids)h(b)q(oth)g(lo)q(oping)h
+(and)0 1383 y(recursion.)37 b(\(Of)21 b(course)g(there)g(is)g(some)g
+(kind)g(of)g(rep)q(etition)h(going)f(on)f(b)q(ehind)j(the)e(scenes,)h
+(if)g(the)f(APL)0 1441 y(program)13 b(is)i(running)g(on)f(a)g(con)o(v)o
+(en)o(tional)h(computer)f(that)g(can)g(only)h(p)q(erform)f(one)g
+(arithmetic)h(op)q(eration)g(at)0 1499 y(a)j(time.)28
+b(But)18 b(this)h(rep)q(etition)g(is)f(in)o(visible)j(to)d(the)g
+(programmer,)f(just)g(as)h(ev)o(ery)g(language)g(mak)o(es)g(certain)0
+1557 y(details)e(in)o(visible.\))91 1638 y(APL)h(encourages)f(a)h
+(functional)g(programming)f(st)o(yle.)24 b(The)17 b(addition)g(op)q
+(erator)f(is)h(a)f(function;)i(it)f(can)0 1696 y(b)q(e)i(comp)q(osed)g
+(with)f(other)g(functions)h(to)f(build)i(new,)f(more)e(complex)j
+(functions.)29 b(Because)19 b(the)g(primitiv)o(e)0 1754
+y(functions)g(all)h(w)o(ork)d(on)h(arra)o(ys)f(as)h(w)o(ell)i(as)e
+(scalars,)h(man)o(y)f(problems)h(can)f(b)q(e)h(solv)o(ed)g(using)g
+(\\one-liners,")0 1812 y(programs)e(with)h(no)g(visible)j(con)o(trol)c
+(structures)h(at)f(all.)30 b(There)18 b(is)h(no)f(lo)q(oping)h
+(construct)f(in)h(APL.)f(When)0 1870 y(a)d(con)o(trol)g(mec)o(hanism)g
+(is)h(needed,)g(the)f(APL)g(programmer)f(can)h(c)o(ho)q(ose)g(b)q(et)o
+(w)o(een)h(t)o(w)o(o)e(extremes,)g(Logo-lik)o(e)0 1928
+y(recursion)i(and)g(an)f(unstructured)h(\\goto")e(op)q(eration.)21
+b(But)16 b(man)o(y)f(mathematical)h(problems)g(can)f(b)q(e)i(solv)o(ed)
+0 1986 y(without)e(raising)h(the)f(issue)h(of)f(con)o(trol,)g(whic)o(h)
+h(is)f(adv)m(an)o(tageous)g(for)g(a)f(math)h(teac)o(her.)91
+2067 y(Unfortunately)l(,)20 b(APL)g(is)g(not)f(widely)i(a)o(v)m
+(ailable.)34 b(The)20 b(largest)f(obstacle)g(is)h(that)f(it)h(uses)f(a)
+g(notation)0 2125 y(v)o(ery)14 b(close)i(to)e(that)g(of)g(ordinary)h
+(mathematics,)f(full)j(of)d(Greek)g(letters)h(and)g(other)g(strange)f
+(sym)o(b)q(ols.)20 b(These)0 2183 y(are)d(not)h(part)f(of)g(the)h
+(standard)f(computer)g(c)o(haracter)g(set,)h(and)g(sp)q(ecial)h(hardw)o
+(are)e(is)h(required)h(to)e(displa)o(y)0 2241 y(them.)29
+b(\(Indeed,)20 b(there)f(aren't)e(enough)i(k)o(eys)f(ev)o(en)h(on)f
+(the)g(APL)h(k)o(eyb)q(oard.)29 b(Some)19 b(sym)o(b)q(ols)f(are)g
+(formed)0 2299 y(b)o(y)d(o)o(v)o(erprin)o(ting)g(t)o(w)o(o)f(other)g
+(sym)o(b)q(ols.)20 b(This)c(approac)o(h)f(w)o(as)f(designed)i(for)f
+(hardcop)o(y)g(computer)g(terminals,)0 2357 y(whic)o(h)i(bac)o(kspace)g
+(and)f(o)o(v)o(erprin)o(t)g(naturally)l(.)25 b(It)16
+b(isn't)h(suitable)g(for)f(most)g(curren)o(t)g(displa)o(y)h(devices,)h
+(whic)o(h)0 2415 y(allo)o(w)d(only)h(one)g(c)o(haracter)e(in)i(an)o(y)f
+(screen)h(p)q(osition.\))91 2496 y(Can)h(w)o(e)h(use,)g(in)h(Logo,)e
+(the)h(APL)g(idea)g(of)g(op)q(erating)g(on)f(a)h(v)o(ector)f(or)g
+(matrix)g(\\all)h(at)g(once,")g(rather)0 2554 y(than)12
+b(explicitly)j(manipulating)e(eac)o(h)g(elemen)o(t)f(individual)q(ly?)
+23 b(T)l(o)q(ols)12 b(for)g(this)g(programming)g(metaphor)f(ha)o(v)o(e)
+0 2612 y(long)17 b(b)q(een)h(part)e(of)h(LISP)l(,)h(Logo's)e(paren)o(t)
+g(language.)25 b(It)17 b(is)h(an)e(easy)h(matter)f(to)g(extend)i(Logo)e
+(\(b)o(y)g(writing)0 2670 y(pro)q(cedures)g(in)g(Logo)f(and)g(loading)h
+(them)f(for)g(studen)o(ts\))g(with)g(suc)o(h)h(to)q(ols.)964
+2779 y(7)p eop
+%%Page: 8 8
+8 7 bop 0 45 a Fi(Av)o(oiding)17 b(Recursion)h(in)g(Logo)91
+176 y Fh(Let)d(me)h(b)q(egin)g(b)o(y)f(de\014ning)i(a)e(few)g(simple)i
+(arithmetic)e(pro)q(cedures.)0 254 y Fd(TO)24 b(SQUARE)f(:X)24
+312 y(OUTPUT)g(:X)g(*)h(:X)0 370 y(END)0 486 y(TO)g(NEXT)f(:X)24
+544 y(OUTPUT)g(:X)g(+)h(1)0 602 y(END)0 718 y(TO)g(DOUBLE)f(:X)24
+777 y(OUTPUT)g(:X)g(*)h(2)0 835 y(END)0 926 y Fh(No)o(w)15
+b(consider)h(these)f(in)o(teractions)h(with)f(Logo:)0
+1003 y Fd(?)24 b(SHOW)f(MAP)g("SQUARE)g([2)h(3)g(4)f(5])0
+1062 y([4)h(9)f(16)h(25])0 1120 y(?)g(SHOW)f(MAP)g("NEXT)h([7)f(8)h(9])
+0 1178 y([8)g(9)f(10])0 1236 y(?)h(SHOW)f(MAP)g("DOUBLE)g([5)h(3)g(20)f
+(6)h(1])0 1294 y([10)f(6)h(40)g(12)f(2])0 1385 y Fh(The)18
+b(pro)q(cedures)g Fd(SQUARE)f Fh(and)g(so)g(on)h(are)f(de\014ned)h(to)f
+(op)q(erate)h(on)f(scalars.)26 b(The)18 b(general)g(to)q(ol)f(called)i
+Fd(MAP)0 1443 y Fh(allo)o(ws)c(these)h(functions)g(to)e(w)o(ork)h(on)g
+(v)o(ectors,)f(b)o(y)h(arranging)g(to)f(apply)i(a)f(function)h(to)f
+(eac)o(h)g(elemen)o(t)h(of)f(the)0 1501 y(v)o(ector.)k(The)c(output)f
+(from)g Fd(MAP)g Fh(is)i(another)e(v)o(ector)g(with)h(the)f(same)h(n)o
+(um)o(b)q(er)g(of)f(elemen)o(ts,)h(but)g(with)g(v)m(alues)0
+1559 y(computed)h(b)o(y)f(the)g(function)h(b)q(eing)h(mapp)q(ed.)91
+1635 y(Logo)c(is)g(an)g(extensible)i(language.)k(This)14
+b(means)f(that)f(a)h(user-de\014ned)i(pro)q(cedure)f(is)f(in)o(v)o(ok)o
+(ed)h(in)g(exactly)0 1693 y(the)22 b(same)f(w)o(a)o(y)f(as)h(a)h
+(primitiv)o(e)g(pro)q(cedure.)40 b Fd(MAP)21 b Fh(happ)q(ens)i(not)e
+(to)g(b)q(e)h(a)f(Logo)g(primitiv)o(e,)j(but)e(if)g(it)f(is)0
+1751 y(included)d(in)e(a)f(startup)g(\014le)h(it)g(can)f(b)q(e)h
+(presen)o(ted)g(to)f(studen)o(ts)g(just)g(as)g(if)h(it)f(w)o(ere)g(a)g
+(primitiv)o(e.)22 b(Its)15 b(purp)q(ose)0 1809 y(is)i(immediately)h
+(clear,)f(and)g(should)h(presen)o(t)e(no)h(conceptual)g(problems)h(to)e
+(studen)o(ts.)23 b(The)17 b(same)f(idea)i(can)0 1868
+y(b)q(e)e(extended)g(to)f(functions)h(of)e(t)o(w)o(o)g(inputs:)0
+1945 y Fd(?)24 b(SHOW)f(MAP.2)g("SUM)h([1)f(2)h(3])f([40)h(50)f(60])0
+2003 y([41)g(52)h(63])0 2062 y(?)g(SHOW)f(MAP.2)g("PRODUCT)g([5)h(6])f
+([7)h(8])0 2120 y([35)f(48])0 2178 y(?)h(SHOW)f(MAP.2)g("EQUALP)g([1)h
+(4)f(6)h(7])g([30)f(4)h(5)g(9])0 2236 y([FALSE)f(TRUE)g(FALSE)h(FALSE])
+0 2327 y(MAP.2)18 b Fh(requires)h(three)f(inputs,)h(a)f(function)h(and)
+g(t)o(w)o(o)e(lists.)29 b(The)19 b(t)o(w)o(o)e(lists)i(m)o(ust)f(ha)o
+(v)o(e)f(the)i(same)f(length,)0 2385 y(and)d(the)h(output)f(will)i(ha)o
+(v)o(e)d(that)h(length)h(also.)91 2461 y(W)l(e)f(are)g(no)o(w)g(in)h(a)
+f(p)q(osition)h(to)e(return)i(to)e(the)h(problem)h(of)f(matrix)g
+(addition)h(with)g(whic)o(h)g(w)o(e)f(b)q(egan:)0 2539
+y Fd(TO)24 b(MATRIX.ADD)e(:M1)i(:M2)24 2597 y(OUTPUT)f(MAP.2)g
+("VECTOR.ADD)f(:M1)i(:M2)0 2655 y(END)964 2779 y Fh(8)p
+eop
+%%Page: 9 9
+9 8 bop 0 45 a Fd(TO)24 b(VECTOR.ADD)e(:V1)i(:V2)24 104
+y(OUTPUT)f(MAP.2)g("SUM)g(:V1)h(:V2)0 162 y(END)0 240
+y Fh(That's)19 b(it!)35 b(I)21 b(\014nd)f(this)h(v)o(ersion)f(simpler)i
+(than)e(the)g(original)h(BASIC)g(program)e(with)i(nested)f
+Fd(FOR)g Fh(lo)q(ops.)0 298 y(There)14 b(are)g(no)g(auxiliary)h(v)m
+(ariables)g Fd(I)f Fh(and)g Fd(J)p Fh(;)f(there)h(is)h(no)f(need)g(to)g
+(build)i(the)e(size)h(or)e(shap)q(e)h(of)g(the)g(matrices)0
+356 y(in)o(to)h(the)h(pro)q(cedures.)21 b(Once)16 b(the)f(general)h
+(idea)g(of)f Fd(MAP)g Fh(is)g(understo)q(o)q(d,)h(its)f(application)i
+(to)e(this)g(problem)h(is)0 414 y(straigh)o(tforw)o(ard.)91
+478 y(The)f Fd(MAP)g Fh(and)g Fd(MAP.2)f Fh(pro)q(cedures)i(themselv)o
+(es)f(are,)g(naturally)l(,)g(a)g(little)h(more)f(complicated.)21
+b(They)15 b(are)0 536 y(de\014ned)g(recursiv)o(ely)l(,)f(using)g(some)f
+(of)g(the)g(more)g(adv)m(anced)h(capabilities)i(of)c(Logo.)19
+b(If)14 b(studen)o(ts)f(\(or)f(teac)o(hers!\))0 594 y(w)o(an)o(t)j(to)g
+(understand)h(the)g(inner)g(w)o(orkings)g(of)f(these)h(to)q(ols,)f
+(they)h(m)o(ust)f(face)g(the)h(c)o(hallenge)h(of)f(recursion.)22
+b(I)0 652 y(think)13 b(this)f(is)g(\014ne;)i(p)q(eople)f(who)e(are)h
+(in)o(terested)g(in)h(programming)e(m)o(ust,)h(ev)o(en)o(tually)l(,)h
+(understand)g(recursion.)0 711 y(The)h(p)q(oin)o(t)h(is)f(that)g(that)f
+(understanding)i(no)f(longer)g(has)g(to)g(come)g(\014rst.)19
+b(The)14 b(mathematics)g(can)g(b)q(e)h(studied)0 769
+y(and)h(the)f(programming)g(issues)h(can)g(b)q(e)g(p)q(ostp)q(oned.)22
+b(\(The)15 b(Logo)g(de\014nitions)j(of)d(all)h(the)g(to)q(ols)f(presen)
+o(ted)h(in)0 827 y(this)g(pap)q(er)f(are)g(collected)i(in)f(an)f(app)q
+(endix.\))0 945 y Fi(T)l(emplates)91 1064 y Fh(One)j(problem)h(with)e
+(the)h(mapping)g(to)q(ols)g(as)f(I'v)o(e)h(presen)o(ted)g(them)f(ab)q
+(o)o(v)o(e)g(is)h(that)f(w)o(e)h(m)o(ust)f(de\014ne)h(a)0
+1122 y(named)i(scalar)f(function)h(in)g(order)f(to)g(use)g(that)g(name)
+g(as)g(an)g(input)h(to)f Fd(MAP)p Fh(.)g(F)l(or)f(example,)j(when)f(I)f
+(\014rst)0 1180 y(in)o(tro)q(duced)e Fd(MAP)p Fh(,)d(I)i(had)f(to)g
+(detour)g(through)g(de\014nitions)i(of)e Fd(SQUARE)p
+Fh(,)f Fd(NEXT)p Fh(,)g(and)i Fd(DOUBLE)e Fh(in)j(order)e(to)f(ha)o(v)o
+(e)0 1238 y(something)22 b(to)f(map)h(o)o(v)o(er)f(the)h(v)o(ectors)f
+(in)h(the)g(examples.)41 b(It's)21 b(not)h(so)f(bad)h(to)f(ha)o(v)o(e)h
+(names)g(for)f(these)0 1296 y(functions,)16 b(since)h(the)f(functions)g
+(are)f(useful)i(in)g(themselv)o(es)f(and)g(the)f(names)h(are)f
+(sensible.)23 b(But)16 b(sometimes)0 1354 y(w)o(e)g(need)i(an)f
+Fg(ad)h(ho)n(c)h Fh(function)f(just)e(for)g(one)h(particular)g(mapping)
+h(op)q(eration.)25 b(The)16 b(problem)i(will)g(b)q(ecome)0
+1413 y(clearer)e(if)f(w)o(e)g(consider)h(an)g(example.)91
+1477 y(W)l(e)f(w)o(ould)h(lik)o(e)g(to)e(b)q(e)i(able)g(to)e(m)o
+(ultiply)j(a)e(matrix)g(b)o(y)g(a)g(scalar.)k(That)c(is,)g(w)o(e)g(w)o
+(an)o(t)f(to)g(b)q(e)i(able)g(to)f(sa)o(y)0 1553 y Fd(?)24
+b(SHOW)f(MATRIX.SCALE)f(3)i([[1)f(2)h(3])g([4)f(5)h(6]])0
+1612 y([[3)f(6)h(9])g([12)f(15)h(18]])0 1690 y Fh(The)19
+b(function)g Fd(MATRIX.SCALE)e Fh(\(I'm)h(sa)o(ving)h(the)g(name)f
+Fd(MULTIPLY)g Fh(for)g(m)o(ultiplication)j(of)d(a)g(matrix)h(b)o(y)f(a)
+0 1748 y(matrix\))e(tak)o(es)f(t)o(w)o(o)g(inputs,)i(a)g(n)o(um)o(b)q
+(er)f(and)h(a)f(matrix.)23 b(Its)16 b(output)g(is)h(a)f(matrix)g(with)h
+(the)f(same)g(shap)q(e)h(as)0 1806 y(the)e(input,)h(but)f(with)h(eac)o
+(h)f(elemen)o(t)h(m)o(ultiplied)i(b)o(y)d(the)h(n)o(um)o(b)q(er.)91
+1870 y(It)f(ma)o(y)g(b)q(e)h(tempting)f(to)g(write)g
+Fd(MATRIX.SCALE)e Fh(as)i(follo)o(ws:)0 1947 y Fd(TO)24
+b(MATRIX.SCALE)e(:NUM)h(:MAT)477 b(;)24 b(incorrect!)24
+2005 y(OUTPUT)f(MAP.2)g("VECTOR.SCALE)f(:NUM)h(:MAT)0
+2063 y(END)0 2179 y(TO)h(VECTOR.SCALE)e(:NUM)h(:VEC)24
+2237 y(OUTPUT)g(MAP.2)g("PRODUCT)g(:NUM)g(:VEC)0 2295
+y(END)0 2374 y Fh(This)d(lo)q(oks)f(lik)o(e)h(a)f(straigh)o(tforw)o
+(ard)e(application)k(of)e(the)g(same)g(ideas)h(w)o(e)f(used)g(in)h
+Fd(MATRIX.ADD)p Fh(,)e(but)h(the)0 2432 y(parallel)f(do)q(esn't)e(w)o
+(ork.)22 b(The)17 b(problem)g(is)f(that)g Fd(MAP.2)f
+Fh(requires)i(t)o(w)o(o)e Fg(lists)k Fh(of)d(equal)h(length)g(so)f
+(that)f(it)i(can)0 2490 y(inductiv)o(ely)e(step)e(through)f(them,)h
+(applying)h(the)e(function)i(input)g(to)e(pairs)g(of)h(elemen)o(ts.)19
+b(Here)13 b(w)o(e)g(are)f(trying)0 2548 y(to)j(use)g(a)g(single)h(n)o
+(um)o(b)q(er)g Fd(:NUM)f Fh(rep)q(eatedly)l(.)91 2612
+y(There)e(is)h(really)g(only)g(one)f(matrix)g(input)h(in)g(this)f
+(problem,)h(not)f(t)o(w)o(o,)f(and)h(so)g(w)o(e)g(need)h(a)e(solution)i
+(using)0 2670 y Fd(MAP)p Fh(,)g(not)h Fd(MAP.2)p Fh(.)k(It)d(w)o(ould)f
+(b)q(e)h(easy)f(enough)h(to)e(do)h(this)h(for)e(an)o(y)h(sp)q(eci\014c)
+i(scale)f(factor:)964 2779 y(9)p eop
+%%Page: 10 10
+10 9 bop 0 45 a Fd(TO)24 b(TIMES3)f(:X)24 104 y(OUTPUT)g(3)h(*)f(:X)0
+162 y(END)0 278 y(TO)h(MATRIX.SCALE3)e(:MAT)24 336 y(OUTPUT)h(MAP)g
+("VECTOR.SCALE3)f(:MAT)0 394 y(END)0 510 y(TO)i(VECTOR.SCALE3)e(:VEC)24
+568 y(OUTPUT)h(MAP)g("TIMES3)g(:VEC)0 626 y(END)0 713
+y Fh(But)16 b(it's)f(not)g(ob)o(vious)h(ho)o(w)f(to)g(generalize)i
+(this)f(in)o(to)g(the)f(desired)i Fd(MATRIX.SCALE)d Fh(function.)22
+b(W)l(e'd)15 b(ha)o(v)o(e)h(to)0 771 y(b)q(e)g(able)g(to)e(in)o(v)o(en)
+o(t)i(the)f(functions)h(lik)o(e)g Fd(TIMES3)f Fh(\\on)g(the)g(\015y)l
+(.")91 842 y(The)f(problem)h(w)o(e)f(are)g(exp)q(eriencing)j(here)e
+(turns)f(out)g(to)g(b)q(e)h(similar)g(to)f(the)g(problem)h(that)f
+(encouraged)0 900 y(us)h(to)f(switc)o(h)g(from)g(BASIC)h(to)f(Logo)g
+(as)h(the)f(medium)i(for)e(matrix)g(manipulation.)21
+b(In)15 b(BASIC,)g(w)o(e)f(couldn't)0 958 y(compute)22
+b(the)g(sum)h(of)e(t)o(w)o(o)g(matrices)h(without)g(putting)h(the)f
+(result)g(in)h(a)f(sp)q(eci\014c)i(named)e(arra)o(y)f
+Fd(C)p Fh(.)h(An)0 1016 y(arra)o(y)e(couldn't)h(exist)h(as)f(a)f(real)i
+(ob)s(ject)e(on)h(its)h(o)o(wn,)f(without)g(a)g(name.)38
+b(Logo)20 b(lists,)j(b)o(y)e(con)o(trast,)g(are)0 1074
+y(\014rst-class)16 b(ob)s(jects)f(that)f(can)i(b)q(e)g(en)o(tered)g
+(directly)h(as)e(argumen)o(ts)g(to)g(functions)h(lik)o(e)h
+Fd(MATRIX.ADD)d Fh(without)0 1133 y(the)k(in)o(termediate)g(step)g(of)f
+(assigning)i(them)e(as)h(the)f(v)m(alue)i(of)e(a)h(named)g(v)m
+(ariable.)28 b(What)17 b(w)o(e)h(need)g(no)o(w)f(is)0
+1191 y Fg(\014rst-class)e(functions)p Fh(.)k(W)l(e)c(w)o(an)o(t)f(to)h
+(b)q(e)h(able)g(to)e(sa)o(y)h(\\the)g(function)h(3)f(times)g
+Fc(x)p Fh(")g(as)g(an)g(input)h(to)f Fd(MAP)p Fh(.)91
+1262 y(First-class)i(functions)h(are)e(one)i(of)e(the)h(cen)o(tral)g
+(ideas)h(of)e(LISP)l(,)i(the)f(language)g(from)f(whic)o(h)i(Logo)f(w)o
+(as)0 1320 y(dev)o(elop)q(ed.)33 b(Logo)19 b(itself)h(do)q(es)g(not)f
+(include)i(LISP's)f(mec)o(hanism)g(for)e(this)i(purp)q(ose,)g(but)g(it)
+f(do)q(es)h(include)0 1378 y(other)13 b(mec)o(hanisms)i(that)e(allo)o
+(w)h(us)g(to)f(implemen)o(t)i(\014rst-class)f(functions)g(within)h
+(Logo.)k(W)l(e)14 b(can)g(put)g(a)f(Logo)0 1436 y(expression)j(in)g(a)f
+(list,)h(lik)o(e)0 1514 y Fd([3)24 b(*)f(:X])0 1600 y
+Fh(and)16 b(then)g(w)o(e)f(can)h(ask)f(Logo)g(to)g Fd(RUN)g
+Fh(the)h(list.)21 b(That)15 b(is,)h(the)g(function)g
+Fd(RUN)f Fh(tak)o(es)g(an)h(expression)g(list)h(as)e(its)0
+1658 y(input,)h(and)f(giv)o(es)h(the)f(v)m(alue)h(of)f(the)g
+(expression)h(as)f(its)h(output.)91 1729 y(It)f(ma)o(y)g(seem)g(that)f
+(this)i(is)g(all)g(w)o(e)f(need.)21 b(W)l(e)15 b(could)h(write)0
+1807 y Fd(OUTPUT)23 b(MAP)g([3)h(*)g(:X])f(:VEC)0 1893
+y Fh(instead)16 b(of)0 1970 y Fd(OUTPUT)23 b(MAP)g("TIMES3)g(:VEC)0
+2056 y Fh(and)14 b(just)g(design)h(the)f Fd(MAP)f Fh(pro)q(cedure)i(so)
+f(that)f(it)h(runs)h(the)f(expression)g(list)h(for)f(eac)o(h)g(elemen)o
+(t)g(of)g(the)g(v)o(ector.)0 2115 y(This)f(is)h(almost)e(the)h(righ)o
+(t)g(thing,)g(but)g(there)g(is)g(a)g(mathematical)g(confusion)g(in)o(v)
+o(olv)o(ed.)20 b(An)13 b(expression)h(is)f(not)0 2173
+y(the)g(same)g(thing)g(as)f(a)h(function.)20 b(In)13
+b(mathematical)g(notation,)g(w)o(e)f(don't)h(sa)o(y)f
+Fc(f)18 b Fh(=)13 b(3)p Fc(x)p Fh(;)g(w)o(e)f(sa)o(y)g
+Fc(f)5 b Fh(\()p Fc(x)p Fh(\))13 b(=)g(3)p Fc(x)p Fh(.)18
+b(In)0 2231 y(this)12 b(particular)g(example)g(the)g(di\013erence)h(ma)
+o(y)d(not)h(seem)h(imp)q(ortan)o(t;)g Fc(x)f Fh(is)h(the)g(only)g(v)m
+(ariable)h(around,)f(and)f(so)0 2289 y(it's)h(ob)o(vious)g(what)g(is)g
+(mean)o(t.)19 b(But)12 b(consider)h(the)f(di\013erence)i(b)q(et)o(w)o
+(een)e Fc(f)5 b Fh(\()p Fc(a;)j(b)p Fh(\))j(=)i(2)p Fc(a)t
+Fh(+)t Fc(b)f Fh(and)g Fc(g)r Fh(\()p Fc(b;)c(a)p Fh(\))i(=)j(2)p
+Fc(a)t Fh(+)t Fc(b)p Fh(.)0 2347 y(These)g(t)o(w)o(o)e(functions)i(are)
+g(not)f(equiv)m(alen)o(t,)i(ev)o(en)f(though)g(they)f(are)g(de\014ned)i
+(b)o(y)f(the)f(same)h(expression)g(2)p Fc(a)5 b Fh(+)g
+Fc(b)p Fh(.)91 2418 y(A)15 b(similar)g(naming)g(problem)h(arises)f(in)g
+(the)g Fd(SCALE)f Fh(problem.)20 b(If)15 b(w)o(e)f(just)h(w)o(an)o(t)e
+(to)h(scale)i(b)o(y)e(3,)g(then)h(w)o(e)0 2476 y(could)h(sa)o(y)f(that)
+f(there's)h(only)h(one)f(v)m(ariable)i(around.)j(But)15
+b(w)o(e)g(are)g(going)g(to)f(w)o(an)o(t)h(to)f(write)h(something)h(lik)
+o(e)0 2554 y Fd(TO)24 b(VECTOR.SCALE)e(:NUM)h(:VEC)24
+2612 y(OUTPUT)g(MAP)g([:NUM)h(*)f(:X])h(:VEC)0 2670 y(END)952
+2779 y Fh(10)p eop
+%%Page: 11 11
+11 10 bop 0 45 a Fh(In)15 b(this)g(situation)f(it's)g(not)g(ob)o(vious)
+h(ho)o(w)f Fd(MAP)f Fh(should)j(kno)o(w)d(that)h(the)g(v)m(ariable)i
+Fd(NUM)e Fh(has)g(a)g(particular)h(v)m(alue)0 104 y(assigned)i(to)f(it)
+g(externally)l(,)i(while)g(the)e(v)m(ariable)i Fd(X)e
+Fh(is)h(the)f(one)g(in)o(to)h(whic)o(h)g(it)g(should)g(plug)g(the)f
+(elemen)o(ts)h(of)0 162 y(the)h(v)o(ector.)27 b(The)18
+b(traditional)h(LISP)g(solution)g(is)f(to)f(represen)o(t)h(a)g
+(function)h(as)e(a)h Fg(lamb)n(da)g(expr)n(ession)j Fh(that)0
+220 y(con)o(tains)11 b(the)h(names)f(of)g(the)g(input)h(v)m(ariables)h
+(as)e(w)o(ell)h(as)f(the)g(de\014ning)i(expression.)19
+b(So)11 b(in)h(LISP)h(w)o(e)e(migh)o(t)g(sa)o(y)0 295
+y Fd(\(DEFINE)23 b(F)h(\(LAMBDA)f(\(A)g(B\))h(\(+)f(\(*)h(2)g(A\))f
+(B\)\)\))0 353 y(\(DEFINE)g(G)h(\(LAMBDA)f(\(B)g(A\))h(\(+)f(\(*)h(2)g
+(A\))f(B\)\)\))0 424 y Fh(\(LISP)14 b(uses)g(pre\014x)g(form)e
+Fd(\(*)24 b(2)g(A\))13 b Fh(rather)g(than)g(in\014x)i(form)d
+Fd(\(2)24 b(*)g(A\))13 b Fh(to)g(represen)o(t)g(arithmetic)h(op)q
+(erations.)0 482 y(But)i(the)g(imp)q(ortan)o(t)g(p)q(oin)o(t)h(for)e
+(our)h(purp)q(oses)h(is)g(to)e(notice)i(the)f(di\013erence)i(b)q(et)o
+(w)o(een)e Fd(F)g Fh(and)g Fd(G)p Fh(,)g(namely)h(the)0
+541 y(list)f(of)f(parameter)f(names)h(follo)o(wing)h(the)g(w)o(ord)e
+Fd(LAMBDA)p Fh(.\))91 599 y(It)h(w)o(ould)h(b)q(e)g(p)q(ossible)h(to)d
+(in)o(v)o(en)o(t)h(this)h(precise)g(mec)o(hanism)g(for)f(Logo.)k(Then)d
+(w)o(e)f(could)h(sa)o(y)0 674 y Fd(TO)24 b(VECTOR.SCALE)e(:NUM)h(:VEC)
+24 732 y(OUTPUT)g(MAP)g([LAMBDA)g([X])h([3)f(*)h(:X]])f(:VEC)0
+790 y(END)0 861 y Fh(The)17 b(trouble)g(is)h(that)e(this)h(notation)f
+(seems)h(needlessly)i(obtrusiv)o(e.)25 b(If)17 b(w)o(e)g(presen)o(t)f
+(this)i(to)e(studen)o(ts,)g(their)0 919 y(atten)o(tion)k(will)i(b)q(e)f
+(fo)q(cused)g(on)f(the)h(meaning)g(of)f(the)g(notation,)h(rather)f
+(than)g(on)h(matrix)f(arithmetic.)36 b(I)0 978 y(w)o(an)o(ted)13
+b(to)g(\014nd)i(a)e(b)q(etter)h(alternativ)o(e.)20 b(A)14
+b(quic)o(k-and-dirt)o(y)h(solution)g(w)o(ould)f(b)q(e)g(to)g(sa)o(y)f
+(that)g(the)h(parameter)0 1036 y(to)i(ev)o(ery)g(function)h(m)o(ust)f
+(b)q(e)h(called)g Fd(X)p Fh(;)f(for)g(t)o(w)o(o-input)g(functions)h(w)o
+(e)f(could)h(reserv)o(e)g Fd(X)f Fh(and)g Fd(Y)p Fh(.)g(That)g(w)o
+(ould)0 1094 y(w)o(ork,)g(but)g(it)h(seems)g(ugly)g(to)f(me.)24
+b(It)17 b(w)o(ould)g(prev)o(en)o(t)f(the)h(use)g(of)f(those)g(names)h
+(for)f(other)g(purp)q(oses.)25 b(\(F)l(or)0 1152 y(example,)16
+b(what)e(if)i(I'd)f(w)o(an)o(ted)g(to)g(call)h(the)f(scale)h(factor)e
+Fd(X)h Fh(instead)h(of)f Fd(NUM)p Fh(?\))91 1210 y(I)k(to)q(ok)f(m)o(y)
+h(inspiration)h(from)e(an)h(earlier)h(problem)f(in)h(mathematics)f
+(education)h(that)e(seems)h(closely)0 1268 y(related.)h(Some)14
+b(of)f(the)h(early)g(New)g(Math)g(exp)q(erimen)o(ters)g(w)o(an)o(ted)g
+(to)f(use)h(algebraic)h(ideas)f(with)h(elemen)o(tary)0
+1326 y(sc)o(ho)q(ol)h(studen)o(ts,)e(presen)o(ting)i(v)o(ery)f(simple)i
+(equations)e(lik)o(e)881 1442 y Fc(x)10 b Fh(+)h(3)h(=)h(7)0
+1529 y(They)f(found)h(that)e(the)h(underlying)i(idea)f(of)f(\\what)f
+(plus)i(three)f(is)h(sev)o(en?")f(w)o(asn't)f(to)q(o)h(di\016cult,)h
+(but)g(that)e(the)0 1587 y Fc(x)i Fh(notation)f(w)o(as)g(a)g(problem)h
+(for)f(some)h(studen)o(ts.)19 b(Their)13 b(solution)g(w)o(as)f(to)g
+(presen)o(t)h(the)f(equation)i(in)f(the)g(form)p 855
+1656 79 2 v 855 1729 2 73 v 932 1729 V 855 1731 79 2
+v 944 1704 a(+)d(3)j(=)g(7)0 1796 y(P)o(edagogically)l(,)k(the)f(b)q(o)
+o(x)h(seems)f(to)f(suggest)h(\\this)g(is)h(a)f(slot)g(to)g(b)q(e)h
+(\014lled")g(without)g(raising)f(the)h(di\016culties)0
+1854 y(ab)q(out)e(names)h(and)f(v)m(alues)i(that)d(studen)o(ts)h
+(\014nd)i(with)e Fc(x)p Fh(.)21 b(Unfortunately)15 b(there)h(is)f(no)h
+(b)q(o)o(x)f(c)o(haracter)g(in)h(the)0 1912 y(ASCI)q(I)j(sequence,)h
+(but)e(I)g(w)o(an)o(ted)f(to)h(come)g(as)f(close)i(as)e(p)q(ossible)j
+(to)d(this)i(ideal)g(of)f(a)f(graphically)j(ob)o(vious)0
+1970 y(slot)15 b(indication.)22 b(My)15 b(solution)h(w)o(as)e(to)h(use)
+g(a)g(question)h(mark:)0 2046 y Fd(?)24 b(SHOW)f(MAP)g([3)h(*)g(?])f
+([2)h(3)g(4])0 2104 y([6)g(9)f(12])0 2162 y(?)h(SHOW)f(MAP)g([?)h(*)g
+(?])f([2)h(3)g(4)f(5])0 2220 y([4)h(9)f(16)h(25])0 2278
+y(?)g(SHOW)f(MAP)g([IFELSE)g(\(?)h(<)g(0\))f([-?])h([?]])f([2)h(-3)f
+(12)h(0)f(-14])0 2336 y([2)h(3)f(12)h(0)g(14])0 2407
+y Fh(An)15 b(expression)i(list)f(with)f(a)g(question)h(mark)e(slot)h
+(to)g(b)q(e)h(\014lled)h(is)f(called)g(an)g(expression)g
+Fg(template)p Fh(.)91 2465 y(W)l(e)f(can)h(no)o(w)e(solv)o(e)i(the)f
+Fd(SCALE)f Fh(problem:)0 2541 y Fd(TO)24 b(MATRIX.SCALE)e(:NUM)h(:MAT)
+24 2599 y(OUTPUT)g(MAP)g([VECTOR.SCALE)f(:NUM)i(?])f(:MAT)0
+2657 y(END)952 2779 y Fh(11)p eop
+%%Page: 12 12
+12 11 bop 0 45 a Fd(TO)24 b(VECTOR.SCALE)e(:NUM)h(:VEC)24
+104 y(OUTPUT)g(MAP)g([:NUM)h(*)f(?])h(:VEC)0 162 y(END)91
+240 y Fh(W)l(e)15 b(ha)o(v)o(e)f(redesigned)i Fd(MAP)f
+Fh(to)f(accept)h(templates)g(instead)g(of)g(named)g(functions.)20
+b(What)15 b(ab)q(out)f Fd(MAP.2)p Fh(?)0 298 y(W)l(e)h(need)h(a)f(w)o
+(a)o(y)f(to)h(express)g(templates)h(with)f(t)o(w)o(o)f(slots.)20
+b(My)15 b(solution)h(is)f(to)g(name)g(the)g(slots)g Fd(?1)g
+Fh(and)h Fd(?2)p Fh(.)0 375 y Fd(?)24 b(SHOW)f(MAP.2)g([?2)h(-)f(?1])h
+([1)f(2)h(3])g([15)f(20)h(30])0 433 y([14)f(18)h(27])0
+511 y Fh(This)12 b(do)q(esn't)g(seem)g(quite)g(so)g(comp)q(elling)i(as)
+d(the)h(unadorned)g(question)h(mark,)e(just)g(as)h(New)g(Math)f
+(equations)0 569 y(with)j(b)q(o)o(xes)f(and)g(triangles)h(seem)f(more)g
+(cluttered)h(and)f(less)h(ob)o(vious)g(than)f(the)g(ones)g(with)h(only)
+f(b)q(o)o(xes.)20 b(Still,)0 627 y(the)15 b(notation)g(clearly)h
+(indicates)h(whic)o(h)f(slot)f(is)h(whic)o(h.)91 691
+y(By)f(the)g(w)o(a)o(y)l(,)f(are)h(y)o(ou)g(tired)h(of)e(ha)o(ving)i
+(to)e(write)h Fd(MATRIX)g Fh(and)g Fd(VECTOR)f Fh(v)o(ersions)i(of)e
+(ev)o(erything,)h(when)0 749 y(y)o(ou)i(really)h(only)g(care)g(ab)q
+(out)f(the)g(matrix)g(v)o(ersion?)28 b(Y)l(ou)18 b(can)f(in)o(v)o(en)o
+(t)h(t)o(w)o(o-lev)o(el)f(mapping)h(to)q(ols)g(that)e(will)0
+807 y(allo)o(w)f(direct)h(de\014nition)h(of)e(the)g(matrix)g
+(functions.)0 884 y Fd(TO)24 b(MMAP)f(:FN)g(:MAT)358
+b(;)23 b(matrix)h(map)24 942 y(OUTPUT)f(MAP)g([MAP)h(:FN)f(?])h(:MAT)0
+1000 y(END)0 1116 y(TO)g(MMAP.2)f(:FN)g(:M1)h(:M2)24
+1174 y(OUTPUT)f(MAP.2)g([MAP.2)g(:FN)h(?1)f(?2])h(:M1)f(:M2)0
+1232 y(END)0 1349 y(TO)h(ADD)f(:M1)g(:M2)24 1407 y(OUTPUT)g(MMAP.2)g
+([?1)g(+)h(?2])g(:M1)f(:M2)0 1465 y(END)0 1581 y(TO)h(SCALE)f(:NUM)g
+(:MAT)24 1639 y(OUTPUT)g(MMAP)g([:NUM)g(*)h(?])g(:MAT)0
+1697 y(END)0 1775 y Fh(The)19 b(de\014nitions)i(of)d
+Fd(ADD)h Fh(and)g Fd(SCALE)f Fh(no)o(w)h(em)o(b)q(o)q(dy)g(the)g
+(mathematical)h(ideas)f(quite)h(directly)l(,)h(with)e(v)o(ery)0
+1833 y(little)c(programming)e(language)h(noise.)20 b(Y)l(ou)14
+b(ma)o(y)f(\014nd)i(the)f(de\014nitions)h(of)f Fd(MMAP)f
+Fh(and)h Fd(MMAP.2)f Fh(a)g(little)i(tric)o(ky)l(,)0
+1891 y(but)i(the)f(structure)g(of)g(nested)h Fd(MAP)p
+Fh(s)f(is)h(exactly)g(analogous)f(to)g(the)g(nested)h
+Fd(FOR)p Fh(s)f(in)i(the)e(sequen)o(tial)i(v)o(ersion)0
+1950 y(of)d(matrix)g(programming.)0 2068 y Fi(More)i(F)l(unctional)i
+(Programming)e(T)l(o)q(ols)91 2187 y Fh(I)h(w)o(ould)g(lik)o(e)h(to)e
+(de\014ne)i(an)f(exp)q(onen)o(tiation)h(function.)28
+b(That)17 b(is,)i(I)f(w)o(an)o(t)f(to)g(tak)o(e)g(a)g(giv)o(en)h(base)g
+(to)f(a)0 2245 y(giv)o(en)d(p)q(o)o(w)o(er,)f(using)i(rep)q(eated)f(m)o
+(ultiplication.)21 b(\(The)14 b(p)q(o)o(w)o(er)f(m)o(ust,)g(of)g
+(course,)h(b)q(e)g(a)g(nonnegativ)o(e)f(in)o(teger.\))0
+2303 y(This)21 b(is)h(an)f(example)g(of)g(comp)q(osition)g(of)g
+(functions,)h(in)g(whic)o(h)g(the)e(function)i Fd([?)i(*)f(:BASE])d
+Fh(is)i(in)o(v)o(ok)o(ed)0 2361 y Fd(:EXP)16 b Fh(times,)g(with)h(the)f
+(result)g(from)g(one)g(in)o(v)o(o)q(cation)h(\014lling)h(the)f(slot)f
+(for)f(the)i(next)f(in)o(v)o(o)q(cation.)23 b(\(The)16
+b(\014rst)0 2419 y(in)o(v)o(o)q(cation)g(is)f(done)h(with)g(1)e(in)i
+(the)g(slot.\))0 2496 y Fd(TO)24 b(POWER)f(:BASE)g(:EXP)24
+2554 y(OUTPUT)g(CASCADE)g(:EXP)g([?)h(*)f(:BASE])g(1)0
+2612 y(END)952 2779 y Fh(12)p eop
+%%Page: 13 13
+13 12 bop 0 45 a Fd(?)24 b(SHOW)f(POWER)g(2)h(5)0 104
+y(32)91 186 y(CASCADE)18 b Fh(is)j(a)e(to)q(ol)g(for)g(rep)q(eated)h
+(comp)q(osition)h(of)e(a)g(function)i(with)e(itself.)34
+b(It)20 b(tak)o(es)f(three)g(inputs.)0 244 y(First)13
+b(is)g(a)g(n)o(um)o(b)q(er)g(sa)o(ying)g(ho)o(w)f(man)o(y)h(times)g(w)o
+(e)g(w)o(an)o(t)e(to)i(in)o(v)o(ok)o(e)g(the)g(function.)20
+b(Second)13 b(comes)g(a)g(template)0 302 y(indicating)i(what)e(the)h
+(function)g(is.)20 b(Third)15 b(is)f(the)f(initial)j(v)m(alue)f(used)f
+(to)f(\014ll)i(the)e(slot)h(in)g(the)g(\014rst)f(in)o(v)o(o)q(cation.)0
+361 y(As)f(another)g(example)g(of)g(its)g(use,)h(here)f(is)h(Newton's)e
+(metho)q(d)h(to)g(appro)o(ximate)f(the)h(square)g(ro)q(ot)f(of)h(a)g(n)
+o(um)o(b)q(er)0 419 y(b)o(y)j(rep)q(eated)h(comp)q(osition)g(of)f(a)g
+(function:)0 496 y Fd(TO)24 b(NSQRT)f(:X)24 554 y(OUTPUT)g(CASCADE)g
+(10)g([\(?)h(+)g(\(:X/?\)\)/2])e(1)0 612 y(END)0 695
+y Fh(Newton's)13 b(appro)o(ximation)g(function)h(tak)o(es)e(the)h(a)o
+(v)o(erage)g(of)f(the)i(previous)g(guess)f(and)g(the)h(quotien)o(t)f
+(of)g Fc(x)g Fh(and)0 753 y(the)18 b(guess.)27 b(In)19
+b(this)f(pro)q(cedure)h(w)o(e)e(start)g(with)h(an)g(initial)i(guess)d
+(of)h(1)f(and)h(w)o(e)g(apply)g(the)g(appro)o(ximation)0
+811 y(function)f(10)e(times.)23 b(This)17 b(constan)o(t)e(n)o(um)o(b)q
+(er)h(of)g(in)o(v)o(o)q(cations)g(is)h(to)q(o)e(simple;)j(few)o(er)d
+(in)o(v)o(o)q(cations)i(w)o(ould)f(do)0 869 y(for)i(small)h(v)m(alues)g
+(of)f Fc(x)p Fh(,)h(while)g(more)f(are)g(needed)i(to)d(get)h(a)g(go)q
+(o)q(d)g(appro)o(ximation)h(for)e(large)i(v)m(alues.)30
+b(\(F)l(or)0 927 y(example,)18 b(try)f Fd(NSQRT)f Fh(of)h(a)f
+(million.\))28 b(T)l(o)17 b(\014x)g(this)g(problem,)h
+Fd(CASCADE)e Fh(accepts)i(as)e(its)i(\014rst)e(input)i(either)g(a)0
+985 y(n)o(um)o(b)q(er)d(or)f(a)g Fg(pr)n(e)n(dic)n(ate)h(template)p
+Fh(,)g(that)e(is,)i(an)g(expression)g(template)g(whose)f(v)m(alue)i(is)
+f Fd(TRUE)e Fh(or)h Fd(FALSE)p Fh(.)g(The)0 1043 y(rep)q(eated)i(comp)q
+(osition)g(con)o(tin)o(ues)g(un)o(til)g(the)f(v)m(alue)i(of)d(the)i
+(predicate)g(template)f(is)h Fd(TRUE)p Fh(.)0 1120 y
+Fd(TO)24 b(NSQRT)f(:X)24 1178 y(OUTPUT)g(CASCADE)g([LESSP)g(ABS)g(\(:X)
+h(-)f(?*?\))h(0.00000001])e([\(?)i(+)f(\(:X/?\)\)/2])g(1)0
+1236 y(END)0 1353 y(TO)h(ABS)f(:X)24 1411 y(OUTPUT)g(IFELSE)g(:X<0)g
+([-:X])g([:X])0 1469 y(END)91 1552 y Fh(It)15 b(is)h(sometimes)f(con)o
+(v)o(enien)o(t)h(for)e(the)h(function)h(b)q(eing)h(cascaded)e(to)g(kno)
+o(w)f(ho)o(w)h(man)o(y)g(times)g(it's)g(b)q(een)0 1610
+y(in)o(v)o(ok)o(ed)g(so)g(far.)k(F)l(or)14 b(example,)h(the)g
+(factorial)g(function)h(is)f(lik)o(e)h(the)f(p)q(o)o(w)o(er)g(function)
+g(except)h(that)e(eac)o(h)h(new)0 1668 y(m)o(ultiplication)22
+b(is)e(b)o(y)f(a)h(larger)f(n)o(um)o(b)q(er,)h(instead)h(of)e(alw)o(a)o
+(ys)f(b)o(y)i(the)f(same)h Fd(:BASE)p Fh(.)e(Therefore,)i
+Fd(CASCADE)0 1726 y Fh(templates)15 b(can)h(include)h(another)e(sp)q
+(ecial)i(sym)o(b)q(ol,)e Fd(#)p Fh(,)g(indicating)i(the)e(n)o(um)o(b)q
+(er)h(of)f(in)o(v)o(o)q(cations.)0 1803 y Fd(TO)24 b(FACTORIAL)e(:N)24
+1861 y(OUTPUT)h(CASCADE)g(:N)g([?)h(*)g(#])f(1)0 1919
+y(END)0 2002 y Fh(The)14 b(template)h(is)g(\014rst)e(in)o(v)o(ok)o(ed)i
+(with)f(1)g(in)h(the)g(question)f(mark)g(slot)g(\(b)q(ecause)h(the)f
+(third)h(input)g(to)f Fd(CASCADE)0 2060 y Fh(is)h(1\))f(and)h(also)g(1)
+f(in)i(the)e(n)o(um)o(b)q(er)h(sign)g(slot)g(\(b)q(ecause)g(this)g(is)h
+(the)e(\014rst)h(in)o(v)o(o)q(cation\).)k(The)c(result)g(is)h(1.)j
+(Next)0 2118 y(time,)c Fd(?)20 b Fh(is)c(1)f(b)q(ecause)h(that's)e(the)
+h(result)h(of)f(the)g(\014rst)g(in)o(v)o(o)q(cation,)g(but)g
+Fd(#)g Fh(is)h(2.)k(The)15 b(third)h(time,)f Fd(?)20
+b Fh(is)c(2)f(and)0 2176 y Fd(#)g Fh(is)h(3.)91 2244
+y(The)22 b(function)g(b)q(eing)h(cascaded)e(is)h(not)g(limited)h(to)e
+(a)g(scalar)g(domain)h(or)f(range.)38 b(W)l(e)22 b(can)f(use)h(list)0
+2302 y(pro)q(cessing)16 b(op)q(erations)f(to)g(generate)g(the)g(v)o
+(ector)g(of)f(all)j(the)e(in)o(tegers)g(from)g(1)f(to)h
+Fc(n)p Fh(:)0 2380 y Fd(TO)24 b(FROM1TO)e(:N)24 2438
+y(OUTPUT)h(CASCADE)g(:N)g([LPUT)h(#)f(?])h([])0 2496
+y(END)0 2612 y(?)g(SHOW)f(FROM1TO)g(5)0 2670 y([1)h(2)f(3)h(4)g(5])952
+2779 y Fh(13)p eop
+%%Page: 14 14
+14 13 bop 0 45 a Fh(Here)18 b(the)g(initial)i(v)m(alue)g(is)e(an)g
+(empt)o(y)g(v)o(ector,)f(and)h(eac)o(h)g(in)o(v)o(o)q(cation)h(of)f
+(the)g(template)g(app)q(ends)h(the)f(next)0 104 y(in)o(teger)c(in)h
+(sequence.)21 b(\()p Fd(LPUT)13 b Fh(means)g(\\last)h(put";)g(it's)g
+(lik)o(e)h Fd(FPUT)e Fh(except)i(that)e(the)h(new)g(elemen)o(t)h(is)f
+(adjoined)0 162 y(on)h(the)g(righ)o(t)g(instead)h(of)f(on)g(the)g
+(left.\))91 224 y(Just)g(as)g(there)g(is)h(a)f Fd(MAP.2)f
+Fh(for)h(t)o(w)o(o-input)g(functions,)g(w)o(e)g(sometimes)h(need)g
+Fd(CASCADE.2)e Fh(for)g(t)o(w)o(o-input)0 282 y(functions.)25
+b(The)17 b(parallel)h(is)f(not)f(exact,)g(ho)o(w)o(ev)o(er.)24
+b(In)17 b(this)g(con)o(text)f(w)o(e)g(need)i(not)e(only)h(t)o(w)o(o)e
+(initial)k(inputs)0 340 y(but)f(also)f(t)o(w)o(o)f(functions,)j(one)f
+(to)f(sp)q(ecify)i(the)e(next)h(v)m(alue)h(of)e Fd(?1)g
+Fh(and)h(one)g(to)f(giv)o(e)g(the)h(next)g(v)m(alue)g(of)g
+Fd(?2)p Fh(.)0 398 y Fd(CASCADE.2)c Fh(therefore)h(tak)o(es)f(\014v)o
+(e)i(inputs:)0 475 y Fd(CASCADE.2)23 b(end.test)f(template.1)h
+(initial.1)g(template.2)f(initial.2)0 551 y Fh(F)l(or)15
+b(example,)g(here)h(is)g(ho)o(w)e(to)h(compute)g(the)g
+Fc(n)p Fh(th)h(Fib)q(onacci)g(n)o(um)o(b)q(er:)0 628
+y Fd(TO)24 b(FIB)f(:N)24 686 y(OUTPUT)g(CASCADE.2)g(:N-1)g([?1)g(+)h
+(?2])f(1)h([?1])g(0)0 744 y(END)0 820 y Fh(The)15 b(\014nal)h(output)f
+(from)g Fd(CASCADE.2)f Fh(is)i(the)f(\014nal)h(v)m(alue)g(of)f
+Fd(?1)p Fh(.)91 882 y(Because)i(I'm)f(presen)o(ting)h(so)f(man)o(y)g
+(examples)h(so)f(brie\015y)l(,)h(I'm)f(afraid)h(the)f(o)o(v)o(erall)g
+(p)q(oin)o(t)h(is)g(in)g(danger)0 940 y(of)e(b)q(eing)h(lost,)f(so)g
+(let)h(me)f(tak)o(e)g(a)g(momen)o(t)f(to)h(review)h(where)f(w)o(e)g
+(are.)20 b(I)15 b(started)g(b)o(y)g(presen)o(ting)h(the)f(idea)h(of)0
+998 y(functional)g(programming,)f(in)h(whic)o(h)g(the)f(fo)q(cus)h(is)f
+(on)g(the)h(input-output)g(b)q(eha)o(vior)g(of)e(a)h(pro)q(cedure)i
+(rather)0 1057 y(than)i(on)g(the)g(exact)f(sequence)i(of)f(ev)o(en)o
+(ts)f(through)h(whic)o(h)h(the)f(computer)g(pro)q(duces)g(the)g
+(desired)i(output.)0 1115 y(I)i(suggested)g(that)f(functional)h
+(programming)f(is)i(m)o(uc)o(h)e(b)q(etter)h(suited)h(to)e(mathematics)
+g(teac)o(hing)h(than)0 1173 y(traditional,)c(sequen)o(tial)g
+(programming.)27 b(If)18 b(this)g(is)g(true,)g(teac)o(hers)g(should)g
+(prefer)g(a)g(functional)h(language)0 1231 y(lik)o(e)13
+b(Logo)e(rather)g(than)g(a)g(sequen)o(tial)i(one)f(lik)o(e)g(BASIC)h
+(or)e(P)o(ascal.)18 b(One)13 b(stum)o(bling)f(blo)q(c)o(k)g(has)g(b)q
+(een)g(the)g(need)0 1289 y(to)h(teac)o(h)h(recursion)h(in)g(order)f(to)
+g(program)f(ev)o(en)h(the)g(simplest)i(mathematical)e(ideas,)h(but)f
+(this)g(obstacle)h(can)0 1347 y(b)q(e)g(a)o(v)o(oided)g(b)o(y)g(pro)o
+(viding)h(to)q(ols)e(that)g(are)h(the)g(functional)h(analog)e(to)g(the)
+h(lo)q(oping)h(construct)e(in)i(sequen)o(tial)0 1405
+y(programming.)91 1467 y(So)c(far)g(I)h(ha)o(v)o(e)f(in)o(tro)q(duced)h
+(t)o(w)o(o)e(suc)o(h)i(to)q(ols,)g Fd(MAP)f Fh(and)g
+Fd(CASCADE)p Fh(,)f(in)j(one-input)f(and)g(t)o(w)o(o-input)f(v)o
+(ersions.)0 1525 y(With)g(this)h(small)f(to)q(olkit)h(I)f(ha)o(v)o(e)g
+(b)q(een)h(able)f(to)g(write)g(pro)q(cedures)h(that)e(are)h(not)f
+(self-referen)o(tial)j(for)d(a)h(v)m(ariet)o(y)0 1584
+y(of)18 b(mathematical)h(functions.)32 b(In)20 b(m)o(y)e(exp)q
+(erience,)k(studen)o(ts)c(quic)o(kly)j(understand)e Fd(MAP)g
+Fh(with)g(hardly)g(an)o(y)0 1642 y(explanation,)e(and)f(can)h(use)f(it)
+h(correctly)f(themselv)o(es.)24 b Fd(CASCADE)15 b Fh(is)i(a)f(little)h
+(harder,)f(p)q(erhaps)h(just)f(b)q(ecause)0 1700 y(it)h(has)f(more)g
+(inputs)h(and)g(the)g(pro)q(cedures)g(are)f(therefore)g(harder)h(to)f
+(read.)23 b(But)17 b(the)f(e\013ort)g(to)f(understand)0
+1758 y(the)f(metaphor)f(b)q(ehind)i Fd(CASCADE)e Fh(\(comp)q(osing)g(a)
+g(function)i(with)e(itself)t(\))h(pa)o(ys)f(o\013)g(in)h(more)f
+(expressiv)o(e)h(p)q(o)o(w)o(er)0 1816 y(than)j(studen)o(ts)g(of)g
+(traditional)g(languages)g(get)g(from)f(similar)j(e\013ort)d(put)h(in)o
+(to)g Fd(FOR)p Fh(,)f Fd(WHILE)p Fh(,)g Fd(UNTIL)p Fh(,)g(and)h(so)0
+1874 y(on.)j(I)15 b(no)o(w)g(w)o(an)o(t)f(to)h(in)o(tro)q(duce)h(t)o(w)
+o(o)e(more)h(functional)h(programming)e(to)q(ols.)91
+1936 y(W)l(e)22 b(w)o(an)o(t)f(to)h(tak)o(e)f(the)i(dot)f(pro)q(duct)g
+(of)g(t)o(w)o(o)f(v)o(ectors.)40 b(T)l(o)22 b(do)g(this,)i(w)o(e)e(m)o
+(ust)g(m)o(ultiply)i(pairs)e(of)0 1994 y(corresp)q(onding)15
+b(elemen)o(ts,)f(and)h(then)f(add)g(up)h(all)f(the)h(pro)q(ducts.)k
+(The)c(\014rst)e(part)h(of)f(this)i(is)f(clearly)h(a)f(job)g(for)0
+2052 y Fd(MAP.2)p Fh(,)g(but)h(w)o(e)g(need)h(a)f(to)q(ol)g(for)g(the)g
+(second)h(part.)0 2129 y Fd(?)24 b(SHOW)f(REDUCE)g("SUM)g([2)h(3)g(4])0
+2187 y(9)0 2245 y(?)g(SHOW)f(REDUCE)g("PRODUCT)g([2)g(3)h(4])0
+2303 y(24)0 2419 y(TO)g(DOTPROD)e(:V1)i(:V2)24 2478 y(OUTPUT)f(REDUCE)g
+("SUM)g(\(MAP.2)g("PRODUCT)g(:V1)h(:V2\))0 2536 y(END)0
+2612 y Fh(Because)12 b(the)f(function)h(I)g(w)o(an)o(t)e(to)h(map)g(o)o
+(v)o(er)g(the)g(t)o(w)o(o)f(v)o(ectors)g(happ)q(ens)j(to)d(b)q(e)i
+(included)i(as)d(a)g(Logo)g(primitiv)o(e,)0 2670 y(I'v)o(e)i(just)f
+(giv)o(en)h Fd(MAP.2)f Fh(its)h(name,)g(as)f(I)h(did)h(in)f(the)g
+(earliest)g(examples,)h(instead)f(of)f(a)h(template)f(with)h(question)
+952 2779 y(14)p eop
+%%Page: 15 15
+15 14 bop 0 45 a Fh(marks.)19 b(W)l(e'll)14 b(write)f(these)h(to)q(ols)
+f(so)g(that)f(either)i(form)f(is)h(allo)o(w)o(ed.)19
+b Fd(REDUCE)p Fh(,)12 b(the)i(new)f(to)q(ol)h(in)g(this)f(example,)0
+104 y(tak)o(es)i(a)h(t)o(w)o(o-input)g(asso)q(ciativ)o(e)g(function)h
+(and)f(applies)i(it)e(to)f(all)i(the)f(elemen)o(ts)h(of)e(the)h
+(indicated)i(list.)23 b(\(W)l(e)0 162 y(insist)14 b(that)e(the)h
+(function)h(b)q(e)f(asso)q(ciativ)o(e)h(to)e(a)o(v)o(oid)g(questions)i
+(ab)q(out)f(the)g(precise)h(grouping)f(of)f(the)h(elemen)o(ts)0
+220 y(of)i(the)g(list.\))91 298 y(It)c(ma)o(y)f(b)q(e)i(time)f(for)g(a)
+g(reminder)h(that)e(functional)i(programming)f(to)q(ols)f(can)i(b)q(e)f
+(applied)i(to)e(non-n)o(umeric)0 356 y(computation)k(as)g(w)o(ell:)0
+434 y Fd(TO)24 b(ACRONYM)e(:NAME)24 492 y(OUTPUT)h(REDUCE)g("WORD)g
+(MAP)h("FIRST)f(:NAME)0 550 y(END)0 666 y(?)h(SHOW)f(ACRONYM)g
+([AMERICAN)g(CIVIL)g(LIBERTIES)f(UNION])0 724 y(ACLU)0
+840 y(TO)i(PIGLATIN)e(:WORD)24 898 y(OUTPUT)h(WORD)g(\(CASCADE)g
+([MEMBERP)g(FIRST)g(?)h("AEIOU])525 956 y([WORD)f(BUTFIRST)g(?)h(FIRST)
+f(?])525 1015 y(:WORD\))310 1073 y("AY)0 1131 y(END)0
+1247 y(?)h(SHOW)f(PIGLATIN)g("SPAGHETTI)0 1305 y(AGHETTISPAY)91
+1398 y Fh(The)14 b(last)f(to)q(ol)h(is)g(used)g(to)f(select)h(a)f
+(subset)h(of)f(the)h(mem)o(b)q(ers)f(of)h(a)f(list,)h(based)g(on)f(a)h
+(predicate)g(template:)0 1476 y Fd(?)24 b(SHOW)f(FILTER)g([EQUALP)g
+(\(REMAINDER)f(?)i(2\))g(0])f([1)h(2)g(3)f(4)h(5])0 1534
+y([2)g(4])0 1592 y(?)g(SHOW)f(FILTER)g([EQUALP)g(\(SQRT)g(?\))h(\(INT)f
+(SQRT)g(?\)])h([1)f(2)h(3)g(4)g(5])0 1650 y([1)g(4])0
+1744 y Fh(Supp)q(ose)17 b(w)o(e)e(w)o(an)o(t)g(to)g(kno)o(w)g(if)i(a)e
+(n)o(um)o(b)q(er)h Fc(n)g Fh(is)g(p)q(erfect.)22 b(W)l(e)16
+b(need)h(to)e(\014nd)h(all)h(the)f(factors)f(of)g Fc(n)p
+Fh(,)h(then)g(add)0 1802 y(them)f(up:)0 1880 y Fd(TO)24
+b(PERFECT?)e(:N)24 1938 y(OUTPUT)h(EQUALP)g(:N)358 1996
+y(REDUCE)g("SUM)525 2054 y(FILTER)g([EQUALP)g(\(REMAINDER)f(:N)i(?\))g
+(0])692 2112 y(FROM1TO)f(:N-1)0 2170 y(END)0 2286 y(?)h(SHOW)f
+(PERFECT?)g(6)0 2344 y(TRUE)0 2403 y(?)h(SHOW)f(PERFECT?)g(7)0
+2461 y(FALSE)0 2554 y Fh(In)18 b(this)g(pro)q(cedure,)g
+Fd(FROM1TO)f Fh(giv)o(es)g(us)h(a)f(list)h(of)f(all)i(the)e(n)o(um)o(b)
+q(ers)h(that)e(migh)o(t)i(b)q(e)g(factors)e(of)h Fc(n)p
+Fh(.)27 b Fd(FILTER)0 2612 y Fh(selects)12 b(the)g(ones)f(that)g
+(actually)h(are)g(factors,)e(b)o(y)i(c)o(hec)o(king)g(the)g(remainder)g
+(of)f(dividing)j Fc(n)d Fh(b)o(y)h(eac)o(h)f(candidate.)0
+2670 y Fd(REDUCE)j Fh(adds)i(all)g(the)f(factors,)f(and)h
+Fd(EQUALP)g Fh(c)o(hec)o(ks)g(whether)g(the)h(sum)f(is)g(equal)h(to)f
+Fc(n)p Fh(.)952 2779 y(15)p eop
+%%Page: 16 16
+16 15 bop 91 45 a Fh(Y)l(ou)15 b(ma)o(y)g(b)q(e)h(w)o(ondering)g(if)f
+(there)h(will)h(b)q(e)f Fd(REDUCE.2)e Fh(and)h Fd(FILTER.2)f
+Fh(pro)q(cedures.)21 b(It)16 b(turns)f(out)g(that)0 104
+y(these)e(w)o(ould)h(not)e(b)q(e)i(meaningful.)20 b(F)l(unctions)14
+b(can)f(ha)o(v)o(e)g(more)f(than)h(one)g(input,)h(but)f(they)g(are)g
+(only)h(allo)o(w)o(ed)0 162 y(one)19 b(output.)31 b(If)19
+b(w)o(e)f(tried)i(to)e(select)h(elemen)o(ts)h(from)e(t)o(w)o(o)f(lists)
+j(in)g(parallel,)h(w)o(e)d(w)o(ould)h(end)h(up)f(with)g(t)o(w)o(o)0
+220 y(sublists.)i(Whic)o(h)16 b(w)o(ould)g(w)o(e)e(output?)0
+347 y Fi(Some)j(Problems)g(Really)h(Are)f(Recursiv)o(e)91
+475 y Fh(Supp)q(ose)23 b(w)o(e)f(w)o(an)o(t)f(to)g(\014nd)i(the)f
+(determinan)o(t)g(of)f(a)h(square)g(matrix.)40 b(The)22
+b(w)o(ell-kno)o(wn)h(algorithm)0 533 y(requires)c(us)g(to)f(select)h(a)
+f(single)i(ro)o(w)d(or)h(column)i(of)e(the)g(matrix,)h(then)g(for)e
+(eac)o(h)i(elemen)o(t)g(of)f(that)g(ro)o(w)f(or)0 591
+y(column)d(w)o(e)f(m)o(ust)f(compute)h Fg(the)i(determinant)f(of)23
+b Fh(a)13 b(submatrix)g(formed)g(b)o(y)g(remo)o(ving)g(the)g(ro)o(w)f
+(and)h(column)0 649 y(con)o(taining)19 b(that)f(elemen)o(t.)29
+b(\(Then)19 b(w)o(e)f(m)o(ultiply)h(b)o(y)g(plus)g(or)f(min)o(us)g(the)
+h(elemen)o(t,)g(and)g(then)f(w)o(e)g(add)g(up)0 707 y(all)f(the)f
+(results,)g(but)g(those)f(are)h(the)g(easy)f(parts.\))21
+b(The)16 b(w)o(ords)f(in)i(italics)g(are)e(a)h(self-referen)o(tial)h
+(part)e(of)h(the)0 765 y(de\014nition)g(of)d(the)h(determinan)o(t.)19
+b(The)14 b(use)h(of)e(recursion)h(to)g(solv)o(e)f(this)i(problem)f(is)g
+(not)g(an)g(acciden)o(tal)h(result)0 823 y(of)g(missing)h(features)f
+(in)h(the)f(programming)g(language.)20 b(It's)14 b(a)h(naturally)h
+(recursiv)o(e)g(problem.)91 896 y(It)e(will)h(turn)e(out)g(to)g(b)q(e)i
+(easiest)e(if)h(w)o(e)g(c)o(ho)q(ose)f(the)h(leftmost)f(column)h(of)g
+(the)f(matrix)g(as)h(the)f(one)h(to)f(treat)0 954 y(sp)q(ecially)l(.)23
+b(If)16 b(w)o(e)f(c)o(hose)h(the)f(top)h(ro)o(w,)e(whic)o(h)i(w)o(ould)
+g(b)q(e)g(more)f(traditional,)h(then)g(for)f(eac)o(h)g(elemen)o(t)i(of)
+e(that)0 1012 y(ro)o(w)f(w)o(e)h(m)o(ust)g(extract)f(a)h(submatrix)h
+(in)g(whic)o(h)g(its)f(column)i(is)e(remo)o(v)o(ed.)20
+b(If)15 b(w)o(e)g(start)f(with)i(a)f(column,)h(then)0
+1070 y(for)f(eac)o(h)i(of)e(its)h(elemen)o(ts)h(the)f(submatrix)g(is)h
+(found)f(b)o(y)g(remo)o(ving)g(a)g(ro)o(w.)21 b(The)16
+b(latter)g(op)q(eration)g(is)h(easier,)0 1128 y(since)f(w)o(e)f(store)g
+(matrices)g(as)g(lists)h(of)e(ro)o(ws.)19 b(The)d(left)f(column)h(of)f
+(a)g(matrix)g(is)h(found)f(with)h(the)f(expression)0
+1206 y Fd(MAP)23 b("FIRST)g(:MATRIX)0 1294 y Fh(whic)o(h)16
+b(selects)g(the)f(\014rst)g(elemen)o(t)h(of)f(eac)o(h)g(ro)o(w.)k
+(Similarly)l(,)e(the)e(expression)0 1371 y Fd(MAP)23
+b("BUTFIRST)g(:MATRIX)0 1459 y Fh(returns)15 b(a)g(\(non-square\))f
+(matrix)h(with)g(the)h(\014rst)e(column)i(eliminated.)22
+b(This)16 b(latter)f(matrix)f(will)j(b)q(e)f(used)f(as)0
+1517 y(the)g(basis)h(from)e(whic)o(h)i(ro)o(ws)f(will)h(b)q(e)g
+(eliminated)i(to)c(form)h(eac)o(h)g(submatrix.)0 1595
+y Fd(TO)24 b(DET)f(:MATRIX)24 1653 y(IF)g(EMPTYP)g(BUTFIRST)g(:MATRIX)g
+([OUTPUT)g(FIRST)g(FIRST)g(:MATRIX])71 b(;)24 b(base)f(case,)g(1x1)24
+1711 y(LOCAL)g("RIGHTPART)24 1769 y(MAKE)g("RIGHTPART)g(MAP)g
+("BUTFIRST)g(:MATRIX)500 b(;)24 b(all)f(but)h(1st)f(col)24
+1827 y(OUTPUT)g(REDUCE)g("SUM)358 1885 y(MAP)g([\(PRODUCT)g(?)h(\(SIGN)
+f(#\))h(\(DET)f(ALLBUT)g(#)h(:RIGHTPART\)\)])453 1943
+y(MAP)g("FIRST)f(:MATRIX)0 2001 y(END)0 2117 y(TO)h(ALLBUT)f(:N)g(:MAT)
+1002 b(;)24 b(all)f(but)h(nth)f(row)24 2176 y(OUTPUT)g(FILTER)g([NOT)g
+(EQUALP)g(#)h(:N])f(:MAT)0 2234 y(END)0 2350 y(TO)h(SIGN)f(:N)24
+2408 y(OUTPUT)g(IFELSE)g(\(EQUALP)g(REMAINDER)f(:N)i(2)g(0\))f([-1])h
+([1])0 2466 y(END)0 2554 y Fh(Ev)o(en)17 b(though)g(recursion)g(is)h
+(necessary)f(in)g(this)h(problem,)f(I'v)o(e)g(con)o(tin)o(ued)h(to)e
+(use)h(the)g(non-recursiv)o(e)h(func-)0 2612 y(tional)h(to)q(ols)f
+(wherev)o(er)g(p)q(ossible.)30 b(T)l(o)18 b(mak)o(e)f(this)i(w)o(ork,)e
+(I)h(had)h(to)e(extend)i(the)f Fd(#)g Fh(notation)f(in)i(templates,)0
+2670 y(whic)o(h)d(I)g(originally)h(in)o(tended)f(only)g(for)e
+Fd(CASCADE)p Fh(,)g(to)h(w)o(ork)f(in)i Fd(MAP)f Fh(and)g
+Fd(FILTER)g Fh(also.)952 2779 y(16)p eop
+%%Page: 17 17
+17 16 bop 91 45 a Fh(Since)20 b Fd(DET)d Fh(is)i(de\014ned)h(recursiv)o
+(ely)l(,)g(it)e(m)o(ust)g(ha)o(v)o(e)g(a)g(base)g(case.)29
+b(In)19 b(this)f(problem,)i(the)e(base)g(case)g(is)0
+104 y(that)13 b(the)i(determinan)o(t)f(of)g(a)g(matrix)g(with)g(one)g
+(ro)o(w)g(and)g(one)g(column)h(is)g(the)f(single)i(n)o(um)o(b)q(er)e
+(in)h(the)g(matrix.)0 162 y(W)l(e)20 b(sa)o(y)e Fd(FIRST)24
+b(FIRST)18 b Fh(b)q(ecause)j(the)e(n)o(um)o(b)q(er)h(is)g(the)g
+(\014rst)f(elemen)o(t)h(of)f(the)h(\014rst)f(ro)o(w.)31
+b(F)l(or)19 b(other)g(cases,)0 220 y(the)d(program)f(is)i(more)e
+(complicated.)24 b(First)16 b(w)o(e)g(create)f(a)h(lo)q(cal)h(v)m
+(ariable)h Fd(RIGHTPART)d Fh(and)h(assign)g(to)g(it)g(the)0
+278 y(non-square)e(matrix)f(with)h(the)g(\014rst)f(column)h(of)f(the)h
+(original)h(matrix)e(remo)o(v)o(ed.)19 b(The)14 b(reason)f(for)g(this)h
+(step)f(is)0 336 y(to)f(a)o(v)o(oid)h(rep)q(etitiv)o(e)g(computation)g
+(of)f(the)h(same)g(matrix)f(for)g(ev)o(ery)h(ro)o(w,)f(whic)o(h)h(w)o
+(ould)g(result)g(if)h(w)o(e)e(just)g(said)24 413 y Fd(OUTPUT)23
+b(REDUCE)g("SUM)358 471 y(MAP)g([\(PRODUCT)g(?)h(\(SIGN)f(#\))h(\(DET)f
+(ALLBUT)g(#)h(MAP)f("BUTFIRST)g(:MATRIX\)\)])453 529
+y(MAP)h("FIRST)f(:MATRIX)0 612 y Fh(without)14 b(using)i(the)e(extra)g
+(v)m(ariable.)21 b(No)o(w)14 b(w)o(e)g(can)g(pic)o(k)i(apart)d(the)i
+(long)f Fd(OUTPUT)g Fh(instruction)h(to)f(see)h(ho)o(w)f(it)0
+670 y(em)o(b)q(o)q(dies)j(the)e(de\014nition.)22 b(W)l(e)15
+b(kno)o(w)g(from)f(the)i(use)f(of)g Fd(REDUCE)g Fh(that)f(w)o(e)h(are)g
+(going)h(to)e(compute)i(a)f(list)h(full)0 728 y(of)f(n)o(um)o(b)q(ers)g
+(and)h(then)f(add)h(up)f(the)g(n)o(um)o(b)q(ers.)21 b(What)14
+b(is)i(the)f(list?)22 b(W)l(ell,)16 b(it's)f(computed)g(b)o(y)0
+805 y Fd(MAP)23 b([...])h(MAP)f("FIRST)g(:MATRIX)0 888
+y Fh(whic)o(h)18 b(means)e(\\compute)h(some)f(function)i(of)e(eac)o(h)h
+(elemen)o(t)h(of)e(the)h(\014rst)f(column)i(of)e(the)h(matrix.")24
+b(So)17 b(far,)0 946 y(so)h(go)q(o)q(d.)30 b(What)18
+b(function)i(do)e(w)o(e)g(compute)h(for)f(eac)o(h)h(elemen)o(t)g(of)f
+(the)h(\014rst)f(column?)32 b(It's)18 b(a)g(pro)q(duct)h(of)0
+1004 y(three)14 b(factors:)e(the)i(elemen)o(t)g(itself,)h(either)g(p)q
+(ositiv)o(e)f(or)f(negativ)o(e)h(1)g(dep)q(ending)i(on)d(whic)o(h)i
+(elemen)o(t)g(it)f(is,)g(and)0 1062 y(the)h(determinan)o(t)g(of)f(a)g
+(submatrix.)20 b(That)14 b(submatrix)h(is)g(computed)g(b)o(y)g
+(selecting)h(all)f(but)g(a)g(particular)g(ro)o(w)0 1120
+y(from)f(the)i(matrix)f Fd(:RIGHTPART)p Fh(.)91 1189
+y(This)k(is)f(a)g(complicated)i(problem,)f(and)f(the)g(complexit)o(y)h
+(of)f(the)g(pro)q(cedure)h(re\015ects)g(that.)28 b(Still,)20
+b(the)0 1247 y(use)d(of)f(functional)i(programming)d(has)i(allo)o(w)o
+(ed)g(us)f(to)g(solv)o(e)h(the)f(problem)h(without)g(in)o(tro)q(ducing)
+h(auxiliary)0 1305 y(index)e(v)m(ariables.)22 b(The)15
+b(pro)q(cedure)h(exactly)g(re\015ects)f(the)g(structure)g(of)g(the)g
+(de\014nition)i(of)e(determinan)o(t.)91 1373 y(Since)21
+b(w)o(e)f(can't)f(a)o(v)o(oid)g(recursion)i(in)f(the)g(de\014nition)i
+(of)d Fd(DET)p Fh(,)g(it)h(migh)o(t)g(b)q(e)g(w)o(orth)o(while)g(to)f
+(compare)0 1431 y(this)e(v)o(ersion)g(with)g(the)g(w)o(a)o(y)e(it)i(w)o
+(ould)g(traditionally)h(b)q(e)g(written)e(in)i(Logo,)e(relying)i(ev)o
+(en)f(more)f(hea)o(vily)i(on)0 1489 y(recursion:)0 1566
+y Fd(TO)24 b(DET)f(:MATRIX)24 1624 y(IF)g(EMPTYP)g(BUTFIRST)g(:MATRIX)g
+([OUTPUT)g(FIRST)g(FIRST)g(:MATRIX])24 1682 y(OUTPUT)g(DET1)g(\(FIRSTS)
+g(:MATRIX\))g(\(BUTFIRSTS)f(:MATRIX\))h(1)h(1)0 1741
+y(END)0 1857 y(TO)g(DET1)f(:COL)g(:REST)g(:N)h(:SIGN)24
+1915 y(IF)f(EMPTYP)g(:COL)h([OUTPUT)f(0])24 1973 y(OUTPUT)g(SUM)g
+(\(PRODUCT)g(\(FIRST)g(:COL\))g(:SIGN)h(\(DET)f(ALLBUT)g(:N)g
+(:REST\)\))286 2031 y(\(DET1)h(\(BUTFIRST)e(:COL\))h(:REST)h(:N+1)f
+(-:SIGN\))0 2089 y(END)0 2205 y(TO)h(FIRSTS)f(:LIST)24
+2263 y(IF)g(EMPTYP)g(:LIST)h([OUTPUT)f([]])24 2321 y(OUTPUT)g(FPUT)g
+(\(FIRST)g(FIRST)g(:LIST\))g(\(FIRSTS)g(BUTFIRST)g(:LIST\))0
+2380 y(END)0 2496 y(TO)h(BUTFIRSTS)e(:LIST)24 2554 y(IF)h(EMPTYP)g
+(:LIST)h([OUTPUT)f([]])24 2612 y(OUTPUT)g(FPUT)g(\(BUTFIRST)g(FIRST)g
+(:LIST\))g(\(BUTFIRSTS)g(BUTFIRST)f(:LIST\))0 2670 y(END)952
+2779 y Fh(17)p eop
+%%Page: 18 18
+18 17 bop 0 104 a Fd(TO)24 b(ALLBUT)f(:N)g(:LIST)24 162
+y(IF)g(:N=1)h([OUTPUT)f(BUTFIRST)f(:LIST])24 220 y(OUTPUT)h(FPUT)g
+(\(FIRST)g(:LIST\))g(\(ALLBUT)g(:N-1)h(BUTFIRST)e(:LIST\))0
+278 y(END)0 352 y Fh(T)l(o)c(someone)h(familiar)h(with)f(recursion,)h
+(the)f(pro)q(cedures)g Fd(DET)g Fh(and)f Fd(DET1)h Fh(in)g(this)g(v)o
+(ersion)g(ma)o(y)f(seem)h(less)0 410 y(in)o(timidating)f(than)f(the)g
+(earlier)h(v)o(ersion.)24 b(It)17 b(w)o(ould)g(b)q(e)h(p)q(ossible)g
+(to)e(compromise,)h(using)h Fd(MAP)e Fh(and)h Fd(FILTER)0
+468 y Fh(to)d(de\014ne)i Fd(FIRSTS)p Fh(,)e Fd(BUTFIRSTS)p
+Fh(,)g(and)h Fd(ALLBUT)f Fh(as)g(in)i(the)f(\014rst)g(v)o(ersion,)g
+(but)g(using)h Fd(DET)e Fh(and)h Fd(DET1)g Fh(from)f(the)0
+526 y(second)i(v)o(ersion.)91 587 y(On)22 b(the)g(other)f(hand,)j(to)d
+(a)g(reader)h(who)f(is)h(not)g(in)o(timidated)h(b)o(y)f(the)f(\014rst)h
+(v)o(ersion,)h(it)f(mak)o(es)f(the)0 645 y(structure)16
+b(of)h Fd(DET)f Fh(more)g(plainly)i(apparen)o(t.)24 b(In)17
+b(the)g(second)g(v)o(ersion,)g(the)g(fact)f(that)g(the)g(determinan)o
+(t)h(is)g(a)0 703 y(sum)g(of)g(pro)q(ducts)h(is)g(buried)h(inside)g
+Fd(DET1)p Fh(,)e(and)g(y)o(ou)g(ha)o(v)o(e)g(to)g(notice)h(that)f(one)g
+(of)g(the)g(inputs)i(to)d Fd(SUM)h Fh(is)h(a)0 761 y(recursiv)o(e)e
+(call)g(in)g(order)f(to)g(see)g(that)g(sev)o(eral)g(pro)q(ducts)h(will)
+g(b)q(e)g(added.)21 b(The)15 b(\014rst)g(v)o(ersion)h(sa)o(ys)0
+837 y Fd(OUTPUT)23 b(REDUCE)g("SUM)g(MAP)h([\(PRODUCT)e(...)0
+912 y Fh(righ)o(t)15 b(up)h(fron)o(t.)91 972 y(Computing)i(the)g
+(determinan)o(t)g(is)g(a)f(hard)h(problem,)h(and)f(the)f(program)g
+(will)i(b)q(e)g(complex)f(no)g(matter)0 1030 y(ho)o(w)13
+b(it's)h(written.)20 b(Here)14 b(is)h(an)e(easier)i(problem)g(that)e
+(is)h(still)i(most)d(con)o(v)o(enien)o(t)h(in)h(recursiv)o(e)g(form:)e
+(compute)0 1088 y(the)i(transp)q(ose)g(of)f(a)h(matrix.)k(That)c(is,)g
+(in)o(terc)o(hange)g(the)g(ro)o(ws)f(and)h(the)g(columns.)21
+b(The)15 b(tric)o(k)g(is)g(to)f(see)i(that)0 1146 y(the)h(\014rst)g(ro)
+o(w)g(of)f(the)i(output)f(will)i(b)q(e)f(the)f(\014rst)g(column)h(of)f
+(the)g(input,)h(while)h(the)f(remaining)g(ro)o(ws)e(of)h(the)0
+1204 y(output)e(will)i(b)q(e)f(the)f Fg(tr)n(ansp)n(ose)g(of)25
+b Fh(the)15 b(remaining)i(columns.)0 1281 y Fd(TO)24
+b(TRANSPOSE)e(:MAT)24 1339 y(IF)h(EMPTYP)g(FIRST)h(:MAT)f([OUTPUT)g
+([]])24 1397 y(OUTPUT)g(FPUT)g(\(MAP)h("FIRST)f(:MAT\))g(\(TRANSPOSE)f
+(MAP)i("BUTFIRST)e(:MAT\))0 1455 y(END)0 1571 y(?)i(SHOW)f(TRANSPOSE)g
+([[1)g(2)h(3])f([4)h(5)g(6]])0 1629 y([[1)f(4])h([2)g(5])f([3)h(6]])91
+1704 y Fh(As)17 b(a)h(third)g(example)g(in)g(whic)o(h)h(recursion)f(is)
+g(helpful,)i(let's)d(return)h(to)f(the)g(question)h(of)f
+Fd(MATRIX.ADD)0 1762 y Fh(and)h Fd(VECTOR.ADD)p Fh(.)d(My)j(\014rst)f
+(implemen)o(tation)i(de\014nes)f(one)g(in)g(terms)f(of)g(the)h(other.)
+26 b(Later,)18 b(b)o(y)f(in)o(v)o(en)o(ting)0 1820 y(a)g(sp)q(ecial)h
+(to)q(ol)f(for)g(t)o(w)o(o-dimensional)g(mapping,)h(I)f(w)o(as)f(able)i
+(to)e(de\014ne)i(the)g(matrix)e(v)o(ersion)h(directly)l(.)27
+b(But)0 1878 y(no)o(w)16 b(supp)q(ose)i(that)e(I)i(w)o(an)o(t)e(to)g(b)
+q(e)i(able)f(to)g(add)g(v)o(ectors,)f(matrices,)h(and)g(ev)o(en)h(m)o
+(ulti-dimensional)i(arra)o(ys.)0 1936 y(I)e(don't)f(w)o(an)o(t)f(to)h
+(ha)o(v)o(e)h(to)e(de\014ne)j(a)e(separate)g Fd(ADD)h
+Fh(pro)q(cedure)g(for)f(ev)o(ery)g(p)q(ossible)j(dimension.)28
+b(Instead,)19 b(I)0 1994 y(w)o(an)o(t)14 b(one)h Fd(ADD)g
+Fh(pro)q(cedure)h(that)f(will)i(w)o(ork)d(on)h(scalars,)g(v)o(ectors,)f
+(matrices,)h(or)f(an)o(y)h(other)g(arra)o(y)l(.)0 2071
+y Fd(TO)24 b(ADD)f(:A)h(:B)24 2129 y(IF)f(NUMBERP)g(:A)h([OUTPUT)f(:A)g
+(+)h(:B])24 2187 y(OUTPUT)f(MAP.2)g("ADD)g(:A)h(:B)0
+2245 y(END)0 2319 y Fh(This)15 b(pro)q(cedure)g(extends)g(the)f
+(pattern)g(of)g(v)o(ector)f(and)i(matrix)f(addition)h(to)f(an)o(y)g(n)o
+(um)o(b)q(er)g(of)g(dimensions)i(b)o(y)0 2377 y(mapping)g
+Fg(itself)24 b Fh(o)o(v)o(er)14 b(its)h(inputs!)91 2438
+y(P)o(erhaps)d(it's)h(time)g(for)f(another)h(review)g(of)f(our)h
+(journey)g(so)f(far.)19 b(In)13 b(principle,)j(there)d(is)g(no)g(need)g
+(for)f(an)o(y)0 2496 y(con)o(trol)17 b(mec)o(hanism)g(other)f(than)h
+(recursion)h(in)f(a)g(programming)f(language.)25 b(An)o(y)17
+b(problem)g(can)g(b)q(e)h(solv)o(ed)0 2554 y(using)d(recursiv)o(e)h
+(pro)q(cedures,)f(without)f(explicit)j(lo)q(oping)f(mec)o(hanisms.)k
+(Ho)o(w)o(ev)o(er,)13 b(the)i(idea)g(of)f(recursion)h(is)0
+2612 y(hard)h(for)f(b)q(eginning)j(studen)o(ts,)e(so)f(in)i(order)f(to)
+f(mak)o(e)g(functional)i(programming)e(practical,)i(it's)f(helpful)i
+(to)0 2670 y(pro)o(vide)g(to)q(ols)f(that)f(are)h(analogous)f(to)h(lo)q
+(oping)h(constructs)f(but)g(consisten)o(t)g(with)h(the)f(functional)h
+(st)o(yle.)26 b(I)952 2779 y(18)p eop
+%%Page: 19 19
+19 18 bop 0 45 a Fh(ha)o(v)o(e)13 b(sho)o(wn)g(four)g(suc)o(h)h(to)q
+(ols:)f Fd(MAP)p Fh(,)g Fd(CASCADE)p Fh(,)f Fd(REDUCE)p
+Fh(,)g(and)i Fd(FILTER)p Fh(.)e(These)i(to)q(ols)f(are)g(adequate)h
+(for)e(man)o(y)0 104 y(problems,)j(but)g(not)f(for)f(all)j(problems.)k
+(If)15 b(a)f(problem)h(is)g(fundamen)o(tally)h(self-referen)o(tial,)g
+(then)e(the)h(studen)o(t)0 162 y(m)o(ust)g(understand)g(recursiv)o(e)h
+(programming)f(to)f(solv)o(e)i(it.)0 279 y Fi(Con)o(tin)o(uing)i(Dev)o
+(elopmen)o(t)91 397 y Fh(Un)o(til)f(the)e(writing)i(of)e(this)h(pap)q
+(er)g(I)g(had)g(nev)o(er)g(written)g(a)g(determinan)o(t)f(pro)q
+(cedure.)23 b(This)16 b(is)h(the)e(\014rst)0 455 y(example)i(I'v)o(e)f
+(found)g(in)h(whic)o(h)g Fd(MAP)f Fh(and)g Fd(FILTER)f
+Fh(templates)h(need)h(the)f Fd(#)g Fh(mec)o(hanism)h(to)e(let)i(the)f
+(function)0 513 y(kno)o(w)g(the)g(p)q(osition)i(of)e(its)g(argumen)o(t)
+g(in)h(the)g(original)g(input)h(list.)24 b(The)17 b(pro)q(cedure)g
+(de\014nitions)h(at)e(the)g(end)0 571 y(of)d(the)h(pap)q(er,)g
+(therefore,)f(are)h(somewhat)f(di\013eren)o(t)g(from)g(earlier)i
+(published)h(v)o(ersions.)k(Because)14 b(these)g(to)q(ols)0
+629 y(are)j(language)h(extensions)g(written)g(in)g(Logo)f(itself,)i(I)f
+(can)g(mak)o(e)f(this)h(c)o(hange)g(without)f(ha)o(ving)h(to)f(rewrite)
+0 688 y(the)g(Logo)g(in)o(terpreter.)27 b(Other)18 b(teac)o(hers)f(can)
+g(also)h(in)o(v)o(en)o(t)f(their)h(o)o(wn)f(to)q(ols,)h(so)f(that)f
+(their)i(studen)o(ts)f(ha)o(v)o(e)0 746 y(exactly)i(the)g(necessary)f
+(to)q(ols)h(for)f(whatev)o(er)g(pro)s(jects)g(are)g(relev)m(an)o(t)h
+(to)f(their)h(topic.)30 b(F)l(or)18 b(example,)i(for)e(a)0
+804 y(computer-based)j(linguistics)j(course)c([Golden)o(b)q(erg,)j
+(1987])c(P)o(aul)i(Golden)o(b)q(erg)h(in)o(v)o(en)o(ted)f(a)f(to)q(ol)h
+(to)f(mak)o(e)0 862 y(systematic)15 b(c)o(hanges)g(in)h(the)f(sp)q
+(elling)j(of)d(a)g(w)o(ord:)0 939 y Fd(?)24 b(SHOW)f(REPLACE)g([M)h(O])
+f([P)h(A])f("MOMMY)0 997 y(PAPPY)0 1074 y Fh(The)14 b(\014rst)g(input)h
+(is)g(a)f(list)h(of)f(letters)g(to)g(lo)q(ok)g(for)g(in)h(the)f(w)o
+(ord,)f(and)i(the)f(second)h(input)g(is)f(a)g(same-length)h(list)0
+1132 y(of)g(replacemen)o(ts.)91 1195 y(Recen)o(tly)21
+b(I)f(ha)o(v)o(e)g(found)g(m)o(yself,)h(in)g(certain)g(situations,)g(w)
+o(an)o(ting)e(something)h(more)g(lik)o(e)h(the)f(LISP)0
+1253 y(lam)o(b)q(da)14 b(notation,)g(with)g(explicit)i(names)d(for)h
+(the)g(slots)f(in)i(the)f(template.)19 b(F)l(or)13 b(example,)i(here)f
+(is)h(a)e(program)0 1311 y(to)i(m)o(ultiply)h(t)o(w)o(o)e(matrices:)0
+1388 y Fd(TO)24 b(MULTIPLY)e(:A)i(:B)24 1446 y(LOCAL)f("TB)24
+1504 y(MAKE)g("TB)h(TRANSPOSE)e(:B)24 1562 y(OUTPUT)h(MAP)g([MULROW)g
+(?)h(:TB])f(:A)0 1620 y(END)0 1737 y(TO)h(MULROW)f(:ROWA)g(:TB)24
+1795 y(OUTPUT)g(MAP)g([DOTPROD)g(:ROWA)g(?])h(:TB)0 1853
+y(END)0 1930 y Fh(Eac)o(h)16 b(elemen)o(t)g(of)f(the)h(pro)q(duct)g(is)
+h(the)e(dot)h(pro)q(duct)g(of)f(a)h(ro)o(w)e(of)i Fd(:A)f
+Fh(and)h(a)f(column)i(of)e Fd(:B)p Fh(.)g(\(The)h(program)0
+1988 y(uses)g Fd(TRANSPOSE)e Fh(b)q(ecause)j(w)o(e)e(store)g(matrices)h
+(b)o(y)g(ro)o(ws,)e(and)i(a)f(ro)o(w)g(of)g(the)h(transp)q(ose)f(is)i
+(a)e(column)i(of)e(the)0 2046 y(original)g(matrix.\))k(The)14
+b(subpro)q(cedure)h Fd(MULROW)e Fh(computes)h(a)f(single)j(ro)o(w)d(of)
+g(the)h(answ)o(er;)f(the)h(en)o(tire)h(answ)o(er)0 2104
+y(is)h(found)f(b)o(y)g(mapping)h Fd(MULROW)f Fh(o)o(v)o(er)f(the)h(ro)o
+(ws)f(of)h(the)g(\014rst)g(input)h(matrix.)91 2167 y(I)f(don't)g(lik)o
+(e)h(ha)o(ving)g(to)e(ha)o(v)o(e)h(the)g(auxiliary)h(pro)q(cedure)h
+Fd(MULROW)p Fh(.)c(I'd)j(rather)e(use)i(t)o(w)o(o)e(nested)h
+Fd(MAP)p Fh(s,)f(as)0 2226 y(in)i(the)f Fd(MMAP)g Fh(to)q(ol.)20
+b(But)15 b(if)h(I)f(try)g(that,)f(I)i(end)f(up)h(with)g(the)f
+(instruction)0 2302 y Fd(OUTPUT)23 b(MAP)g([MAP)h([DOTPROD)f(?)g(?])h
+(:TB])f(:A)0 2380 y Fh(One)17 b(of)f(those)f(question)i(marks)f(refers)
+g(to)f(the)h(slot)g(in)h(the)f(inner)i(template,)e(while)h(the)g(other)
+e(refers)h(to)g(the)0 2438 y(slot)d(in)i(the)e(outer)g(one.)20
+b(This)14 b(can't)f(w)o(ork.)18 b(\(Nor)13 b(w)o(ould)g(it)h(help)h(to)
+e(use)h Fd(?1)f Fh(and)g Fd(?2)p Fh(.)19 b(W)l(e)14 b(aren't)e(using)j
+Fd(MAP.2)0 2496 y Fh(to)h(map)h(o)o(v)o(er)f(t)o(w)o(o)f(lists)j(in)f
+(parallel;)i(w)o(e're)d(using)i(the)f(single-slot)h Fd(MAP)e
+Fh(t)o(wice.\))25 b(T)l(o)16 b(disam)o(biguate)h(the)g(t)o(w)o(o)0
+2554 y(slots,)g(I)g(ha)o(v)o(e)g(to)f(b)q(e)i(able)g(to)e(giv)o(e)h
+(eac)o(h)g(one)h(a)e(name)h(explicitly)l(.)29 b(The)17
+b(notation)f(do)q(esn't)h(actually)h(require)0 2612 y(the)d(w)o(ord)f
+Fd(LAMBDA)p Fh(,)g(whic)o(h)i(LISP)g(uses)f(for)g(historical)h
+(reasons;)e(if)h(the)g(\014rst)g(thing)g(in)h(a)f(template)g(is)h(a)e
+(list)i(in)0 2670 y(square)f(brac)o(k)o(ets,)f(I)i(w)o(an)o(t)e(to)g
+(tak)o(e)h(that)f(as)h(a)g(list)h(of)f(names)g(of)g(slots.)k(Then)d(I)g
+(can)f(sa)o(y)952 2779 y(19)p eop
+%%Page: 20 20
+20 19 bop 0 45 a Fd(OUTPUT)23 b(MAP)g([[ROWA])g(MAP)h([[COLB])f
+(DOTPROD)g(:ROWA)g(:COLB])g(:TB])g(:A)0 118 y Fh(I)16
+b(ha)o(v)o(e)e(written)i(to)q(ols)f(that)f(accept)i(this)f(format,)f
+(but)h(I)h(ha)o(v)o(en't)e(y)o(et)h(tried)g(teac)o(hing)h(it)f(to)g(an)
+o(y)o(one.)91 176 y(Another)j(anno)o(y)o(ance)g(I'd)g(lik)o(e)h(to)e
+(eliminate)j(is)f(the)f(need)h(for)e(separate)g(pro)q(cedures)i
+Fd(MAP)f Fh(and)g Fd(MAP.2)p Fh(.)0 235 y(What)d(if)i(I)f(w)o(an)o(t)f
+(to)g(map)h(a)g(three-input)h(function)g(o)o(v)o(er)e(three)h(lists)h
+(of)e(inputs?)24 b(I'd)16 b(lik)o(e)h(a)f(single)h Fd(MAP)f
+Fh(that)0 293 y(can)d(tak)o(e)g(an)o(y)g(n)o(um)o(b)q(er)h(of)e
+(inputs,)j(just)e(as)g(certain)g(Logo)g(primitiv)o(es)i(do,)e(inside)i
+(paren)o(theses.)k(This)14 b(c)o(hange,)0 351 y(unfortunately)l(,)k(do)
+q(es)f(require)h(mo)q(di\014cations)g(to)f(the)g(Logo)g(in)o
+(terpreter.)26 b(One)18 b(published)h(v)o(ersion)f(of)e(Logo)0
+409 y(\(Ob)s(ject)h(Logo,)h(for)f(the)h(Macin)o(tosh,)g(dev)o(elop)q
+(ed)h(b)o(y)f(Coral)f(Soft)o(w)o(are)f(and)i(no)o(w)g(o)o(wned)f(b)o(y)
+h(Apple\))h(allo)o(ws)0 467 y(user-de\014ned)j(pro)q(cedures)g(with)f
+(v)m(ariable)h(n)o(um)o(b)q(ers)f(of)f(inputs.)38 b(I)21
+b(hop)q(e)g(the)g(idea)g(is)h(extended)f(to)f(other)0
+525 y(dialects.)0 638 y Fi(T)l(eac)o(hing)e(Exp)q(erience)91
+751 y Fh(When)13 b(I)f(published)j(the)d(\014rst)g(v)o(olume)h(of)f
+Fg(Computer)i(Scienc)n(e)e(L)n(o)n(go)h(Style)h Fh([Harv)o(ey)l(,)e
+(1985],)f(I)i(in)o(tro)q(duced)0 809 y(mapping)j(to)q(ols)g(near)f(the)
+h(end)h(of)e(the)h(b)q(o)q(ok,)f Fg(after)21 b Fh(the)16
+b(reader)f(w)o(as)g(familiar)i(with)f(recursion,)g(b)q(ecause)g(m)o(y)0
+868 y(emphasis)k(w)o(as)f(on)g(the)h(implemen)o(tation)g(of)f(the)h(to)
+q(ols.)33 b(I)19 b(w)o(an)o(ted)g(to)g(mak)o(e)g(the)g(p)q(oin)o(t)h
+(that)f(Logo)g(is)h(an)0 926 y(extensible)g(language)e(b)o(y)f(sho)o
+(wing)h(ho)o(w)g(to)f(extend)h(it.)28 b(I)18 b(had)g(considered)i(in)o
+(tro)q(ducing)f(the)f(to)q(ols)f(earlier,)0 984 y(without)f(sho)o(wing)
+g(their)h(de\014nitions,)g(to)f(allo)o(w)g(readers)g(to)f(write)h(in)o
+(teresting)h(functional)g(programs)e(in)i(the)0 1042
+y(early)f(c)o(hapters.)23 b(What)15 b(dissuaded)j(me,)e(at)g(that)f
+(time,)h(w)o(as)g(that)f(I)i(w)o(as)e(trying)h(to)g(mak)o(e)f(the)i(b)q
+(o)q(ok)f(usable)0 1100 y(without)g(a)f(teac)o(her)h(b)o(y)g(readers)f
+(who)h(migh)o(t)f(ha)o(v)o(e)h(an)o(y)f(of)h(half)g(a)f(dozen)i(v)o
+(ersions)f(of)f(Logo)g(at)g(home.)22 b(Eac)o(h)0 1158
+y(dialect)h(is)e(sligh)o(tly)i(di\013eren)o(t)e(from)g(the)g(others.)38
+b(I)22 b(felt)g(that)e(I)i(couldn't)g(use)g(to)q(ol)f(pro)q(cedures)h
+(unless)h(I)0 1216 y(pro)o(vided)16 b(the)f(de\014nitions)i(on)e(disk)o
+(ette,)g(and)h(that)e(seemed)i(lik)o(e)g(to)q(o)f(m)o(uc)o(h)g
+(trouble.)91 1275 y(As)20 b(it)h(turned)g(out,)g(the)g(biggest)g
+(complain)o(t)g(I)g(heard)g(from)f(p)q(eople)i(who)e(taugh)o(t)g
+(courses)g(based)h(on)0 1333 y(that)13 b(b)q(o)q(ok)h(w)o(as)f(ab)q
+(out)h(the)g(di\016cult)o(y)h(their)f(studen)o(ts)g(had)g(in)h(the)f(c)
+o(hapter)f(on)h(recursiv)o(e)h(op)q(erations.)k(Their)0
+1391 y(confusion)13 b(w)o(as)d(not)i(only)g(ab)q(out)f(recursion,)i
+(but)f(ab)q(out)g(the)f(more)h(fundamen)o(tal)g(issue)g(of)g(writing)g
+(op)q(erations)0 1449 y(at)17 b(all.)28 b(They)17 b(w)o(ere)g
+(uncomfortable)h(with)g Fd(OUTPUT)f Fh(and)g(with)h(list)g
+(manipulation.)29 b(The)17 b(reason)h(for)e(this,)j(I)0
+1507 y(decided,)j(w)o(as)d(that)f(un)o(til)j(that)e(c)o(hapter)g(they)h
+(had)f(had)h(v)o(ery)f(little)i(practice)f(writing)g(op)q(erations)g
+(at)e(all.)0 1565 y(Without)f(recursion,)i(the)e(n)o(um)o(b)q(er)h(of)f
+(in)o(teresting)h(functions)g(y)o(ou)f(can)g(compute)h(is)g(small.)27
+b(By)17 b(presen)o(ting)0 1623 y(to)q(ols)22 b(lik)o(e)i
+Fd(MAP)e Fh(earlier,)j(it)d(w)o(ould)h(b)q(e)g(p)q(ossible)h(to)e
+(presen)o(t)h(more)f(and)g(b)q(etter)h(examples)g(of)f(functional)0
+1681 y(programming)15 b(in)h(the)f(early)g(c)o(hapters.)91
+1740 y(In)g(the)g(fall)h(semester)f(of)f(1988)g(I)h(taugh)o(t)f(a)h
+(Logo)f(programming)h(course)f(to)h(a)f(small)i(group)f(of)f(Berk)o
+(eley)0 1798 y(undergraduates)19 b(using)g(this)g(approac)o(h.)30
+b(I)19 b(ha)o(v)o(e)f(not)h(revised)g(the)g(b)q(o)q(ok,)g(but)g(in)g
+(the)g(early)g(w)o(eeks)g(of)f(the)0 1856 y(course)c(I)g(supplemen)o
+(ted)i(it)e(with)h(handouts)f(and)g(class)g(discussion)i(sho)o(wing)e
+(the)g(mapping)h(to)q(ols.)k(\(The)14 b(to)q(ol)0 1914
+y(pro)q(cedures)f(I)g(used)g(w)o(ere)f(the)h(v)o(ersions)g(in)g([Harv)o
+(ey)l(,)f(1987],)f(sligh)o(tly)j(di\013eren)o(t)e(from)g(the)g(ones)h
+(in)g(this)g(pap)q(er.\))0 1972 y(My)e(exp)q(erience)i(w)o(as)e(that)f
+(the)h(studen)o(ts)g(w)o(ere,)h(as)f(exp)q(ected,)h(easily)h(able)f(to)
+e(apply)i(functional)h(programming)0 2030 y(ideas)k(to)e(problems)h
+(that)g(could)h(b)q(e)f(solv)o(ed)g(without)g(recursion.)23
+b(Their)17 b(early)f(e\013orts)f(could)i(fo)q(cus)f(on)g(what)0
+2089 y(it)k(means)g(for)f(a)h(pro)q(cedure)h(to)e(output)h(a)g(v)m
+(alue,)i(without)d(b)q(eing)j(confused)e(b)o(y)g(the)g(additional)i
+(issues)e(of)0 2147 y(self-reference.)h(On)15 b(the)g(other)f(hand,)h
+(I)g(had)f(hop)q(ed)i(that)d(with)i(this)g(basis)g(they)g(w)o(ould)g
+(\014nd)g(recursion)g(itself)0 2205 y(easy)i(when)h(w)o(e)f(got)f(to)h
+(it;)h(in)g(that)f(resp)q(ect)g(I)h(w)o(as)e(disapp)q(oin)o(ted.)28
+b(Recursion)19 b(w)o(as)d(still)j(a)e(big)h(h)o(urdle.)27
+b(By)0 2263 y(the)19 b(end)h(of)e(the)h(semester)g(almost)g(all)h(of)e
+(the)h(studen)o(ts)g(could)h(understand)g(recursiv)o(e)f(pro)q(cedures)
+h(that)f(I)0 2321 y(presen)o(ted,)c(but)h(not)e(all)j(could)f(reliably)
+h(write)e(their)h(o)o(wn)e(recursiv)o(e)i(pro)q(cedures.)91
+2380 y(One)i(mistak)o(e)g(that)f(I)h(made)g(w)o(as)f(to)g(try)g(to)h
+(motiv)m(ate)f(the)h(use)g(of)g(recursion)g(b)o(y)g(starting)f(with)h
+(quite)0 2438 y(complicated)e(examples)g(that)e(couldn't)i(b)q(e)g
+(done)f(using)h(the)f(iterativ)o(e)g(to)q(ols)g(the)g(studen)o(ts)g
+(already)h(knew.)k(I)0 2496 y(w)o(as)12 b(o)o(v)o(erreacting)h(to)g
+(the)g(an)o(ticipated)h(question,)g(\\wh)o(y)f(don't)g(w)o(e)g(just)f
+(use)i Fd(MAP)p Fh(?")f(I)h(w)o(ould)f(no)o(w)g(b)q(egin)i(with)0
+2554 y(simpler)g(examples)g(and)g(announce)g(b)o(y)f(\014at)f(that)h
+(the)g(iterativ)o(e)g(to)q(ols)g(ma)o(y)g(not)g(b)q(e)g(used)h(this)g
+(w)o(eek.)k(I)c(w)o(ould)0 2612 y(explain)g(that)f(they)f(are)h(going)g
+(to)f(learn)h(ho)o(w)g(things)g(lik)o(e)h Fd(MAP)e Fh(can)h(b)q(e)h
+(written)e(in)i(Logo,)e(and)h(to)f(understand)0 2670
+y(that,)i(they)h(ha)o(v)o(e)f(to)g(pretend)i(that)e Fd(MAP)g
+Fh(isn't)h(a)o(v)m(ailable.)23 b(\(By)16 b(the)g(w)o(a)o(y)l(,)f(I)h
+(ha)o(v)o(e)f(of)h(course)g(done)g(something)952 2779
+y(20)p eop
+%%Page: 21 21
+21 20 bop 0 45 a Fh(similar)16 b(in)g(this)f(pap)q(er,)g(in)g(the)g
+(section)h(that)e(explains)i(wh)o(y)f(recursion)g(is)h(still)g
+(sometimes)f(necessary)l(.)20 b(But)15 b(I)0 104 y(trust)f(that)h(the)g
+(reader)g(is)h(not)f(new)g(to)g(Logo)g(and)g(has)g(already)h(seen)f
+(simpler)i(examples)f(of)f(recursion.\))91 162 y(Man)o(y)10
+b(Logo)h(teac)o(hers)g(ha)o(v)o(e)g(noticed)h(that)f(studen)o(ts)g
+(\014nd)h(recursiv)o(e)g(op)q(erations)f(more)g(di\016cult)i(than)e
+(the)0 220 y(command-hea)o(vy)16 b(st)o(yle)h(of)e(programming)h(used)h
+(in)g(turtle)f(graphics)h(applications.)25 b(Some)16
+b(ha)o(v)o(e)g(resp)q(onded)0 278 y(b)o(y)h(restricting)h(their)f(Logo)
+g(teac)o(hing)g(to)g(graphics.)26 b(Others,)17 b(w)o(an)o(ting)g(to)f
+(preserv)o(e)h(the)g(abilit)o(y)i(to)d(explore)0 336
+y(natural)21 b(language)g(issues,)h(ha)o(v)o(e)e(in)o(tro)q(duced)i(w)o
+(ord)e(pro)q(cessing)i(commands)e(in)o(to)h(Logo)f(so)h(that)f(English)
+0 394 y(text)c(can)g(b)q(e)h(pro)q(cessed)g(in)g(the)f(easier)h
+(command-hea)o(vy)f(st)o(yle.)23 b(\(See,)16 b(for)g(example,)h([T)l
+(emp)q(el,)g(1986])e(for)g(a)0 452 y(description)f(of)f(this)g(approac)
+o(h)f(in)i(LogoW)l(riter.\))k(I)13 b(am)g(un)o(willing)i(to)d(withhold)
+i(from)e(studen)o(ts)h(the)g(p)q(o)o(w)o(erful)0 510
+y(idea)k(of)f(functional)h(programming;)f(the)g(w)o(ork)f(describ)q(ed)
+j(here)f(is)f(an)h(attempt)e(to)g(preserv)o(e)i(the)f(functional)0
+568 y(st)o(yle)g(while)h(allo)o(wing)g(studen)o(ts)f(to)f(tak)o(e)g
+(smaller)i(steps)f(than)f(the)h(enormous)g(in)o(tellectual)i(leap)f
+(that)e(seems)0 626 y(to)g(b)q(e)g(required)i(in)f(mo)o(ving)f(from)f
+(commands)h(directly)i(in)o(to)e(recursiv)o(e)h(op)q(erations.)0
+848 y Fi(App)q(endix:)23 b(The)18 b(Implemen)o(tation)91
+961 y Fh(Resist)f(the)g(temptation)f(to)g(use)g(shorter)g(v)m(ariable)i
+(names)e(in)i(these)e(pro)q(cedures.)25 b(It's)16 b(imp)q(ortan)o(t)g
+(that)0 1019 y(these)g(names)f(b)q(e)h(di\013eren)o(t)g(from)f(an)o(y)g
+(v)m(ariable)i(names)e(used)h(in)g(other)g(parts)e(of)h(the)h(program)e
+(that)h(in)o(v)o(ok)o(es)0 1077 y(these)g(to)q(ols.)0
+1180 y Fd(TO)24 b(MAP)f(:MAP.TEMPLATE)f(:TEMPLATE.LIST)24
+1239 y(OUTPUT)h(MAP1)g(PREPARE.TEMPLATE)f(:MAP.TEMPLATE)g
+(:TEMPLATE.LIST)g(1)0 1297 y(END)0 1413 y(TO)i(MAP1)f(:MAP.TEMPLATE)f
+(:TEMPLATE.LIST)g(:TEMPLATE.NUMBER)24 1471 y(IF)h(EMPTYP)g
+(:TEMPLATE.LIST)f([OUTPUT)h([]])24 1529 y(LOCAL)g("TEMPLATE.VAR)24
+1587 y(MAKE)g("TEMPLATE.VAR)f(FIRST)h(:TEMPLATE.LIST)24
+1645 y(OUTPUT)g(FPUT)g(\(RUN)h(:MAP.TEMPLATE\))310 1703
+y(\(MAP1)f(:MAP.TEMPLATE)f(\(BF)i(:TEMPLATE.LIST\))e
+(1+:TEMPLATE.NUMBER\))0 1761 y(END)0 1878 y(TO)i(PREPARE.TEMPLATE)d
+(:TEMPLATE)24 1936 y(IF)i(LISTP)h(:TEMPLATE)e([OUTPUT)h(:TEMPLATE])24
+1994 y(OUTPUT)g(SENTENCE)g(:TEMPLATE)f("?)0 2052 y(END)0
+2168 y(TO)i(?)24 2226 y(OUTPUT)f(:TEMPLATE.VAR)0 2284
+y(END)0 2400 y(TO)h(#)24 2458 y(OUTPUT)f(:TEMPLATE.NUMBER)0
+2517 y(END)952 2779 y Fh(21)p eop
+%%Page: 22 22
+22 21 bop 0 45 a Fd(TO)24 b(MAP.2)f(:MAP.TEMPLATE)f(:TEMPLATE.LIST1)g
+(:TEMPLATE.LIST2)24 104 y(OUTPUT)h(MAP.21)g(PREPARE.TEMPLATE.2)e
+(:MAP.TEMPLATE)358 162 y(:TEMPLATE.LIST1)h(:TEMPLATE.LIST2)g(1)0
+220 y(END)0 336 y(TO)i(MAP.21)f(:MAP.TEMPLATE)f(:TEMPLATE.LIST1)g
+(:TEMPLATE.LIST2)f(:TEMPLATE.NUMBER)24 394 y(IF)i(EMPTYP)g
+(:TEMPLATE.LIST1)f([OUTPUT)h([]])24 452 y(LOCAL)g([TEMPLATE.VAR1)f
+(TEMPLATE.VAR2])24 510 y(MAKE)h("TEMPLATE.VAR1)f(FIRST)h
+(:TEMPLATE.LIST1)24 568 y(MAKE)g("TEMPLATE.VAR2)f(FIRST)h
+(:TEMPLATE.LIST2)24 626 y(OUTPUT)g(FPUT)g(\(RUN)h(:MAP.TEMPLATE\))310
+684 y(\(MAP.21)f(:MAP.TEMPLATE)f(\(BF)i(:TEMPLATE.LIST1\))501
+743 y(\(BF)g(:TEMPLATE.LIST2\))d(1+:TEMPLATE.NUMBER\))0
+801 y(END)0 917 y(TO)j(PREPARE.TEMPLATE.2)d(:TEMPLATE)24
+975 y(IF)i(LISTP)h(:TEMPLATE)e([OUTPUT)h(:TEMPLATE])24
+1033 y(OUTPUT)g(SENTENCE)g(:TEMPLATE)f([?1)i(?2])0 1091
+y(END)0 1207 y(TO)g(?1)24 1265 y(OUTPUT)f(:TEMPLATE.VAR1)0
+1323 y(END)0 1440 y(TO)h(?2)24 1498 y(OUTPUT)f(:TEMPLATE.VAR2)0
+1556 y(END)0 1672 y(TO)h(CASCADE)e(:CASCADE.LIMIT)g(:CASCADE.TEMPLATE)g
+(:TEMPLATE.VAR)24 1730 y(OUTPUT)h(CASCADE1)g(PREPARE.LIMIT)f
+(:CASCADE.LIMIT)406 1788 y(PREPARE.TEMPLATE)f(:CASCADE.TEMPLATE)406
+1846 y(:TEMPLATE.VAR)h(1)0 1904 y(END)0 2021 y(TO)i(CASCADE1)e
+(:CASCADE.LIMIT)g(:CASCADE.TEMPLATE)g(:TEMPLATE.VAR)g(:TEMPLATE.NUMBER)
+24 2079 y(IF)h(\(RUN)h(:CASCADE.LIMIT\))e([OUTPUT)g(:TEMPLATE.VAR])24
+2137 y(OUTPUT)h(CASCADE1)g(:CASCADE.LIMIT)f(:CASCADE.TEMPLATE)406
+2195 y(\(RUN)h(:CASCADE.TEMPLATE\))e(1+:TEMPLATE.NUMBER)0
+2253 y(END)0 2369 y(TO)j(PREPARE.LIMIT)e(:LIMIT)24 2427
+y(IF)h(NUMBERP)g(:LIMIT)g([OUTPUT)g(SENTENCE)g([GREATERP)g
+(:TEMPLATE.NUMBER])e(:LIMIT])24 2485 y(OUTPUT)i(PREPARE.TEMPLATE)f
+(:LIMIT)0 2543 y(END)952 2779 y Fh(22)p eop
+%%Page: 23 23
+23 22 bop 0 46 a Fd(TO)24 b(CASCADE.2)e(:CASCADE.LIMIT)g
+(:CASCADE.TEMPLATE1)g(:TEMPLATE.VAR1)668 104 y(:CASCADE.TEMPLATE2)g
+(:TEMPLATE.VAR2)24 162 y(OUTPUT)h(CASCADE.21)f(PREPARE.LIMIT.2)g
+(:CASCADE.LIMIT)453 220 y(PREPARE.TEMPLATE.2)g(:CASCADE.TEMPLATE1)f
+(:TEMPLATE.VAR1)453 278 y(PREPARE.TEMPLATE.2)h(:CASCADE.TEMPLATE2)f
+(:TEMPLATE.VAR2)h(1)0 336 y(END)0 444 y(TO)i(CASCADE.21)e
+(:CASCADE.LIMIT)g(:CASCADE.TEMPLATE1)f(:TEMPLATE.VAR1)692
+502 y(:CASCADE.TEMPLATE2)g(:TEMPLATE.VAR2)h(:TEMPLATE.NUMBER)24
+560 y(IF)h(\(RUN)h(:CASCADE.LIMIT\))e([OUTPUT)g(:TEMPLATE.VAR1])24
+618 y(OUTPUT)h(CASCADE.21)f(:CASCADE.LIMIT)453 676 y
+(:CASCADE.TEMPLATE1)g(\(RUN)h(:CASCADE.TEMPLATE1\))453
+734 y(:CASCADE.TEMPLATE2)f(\(RUN)h(:CASCADE.TEMPLATE2\))453
+792 y(1+:TEMPLATE.NUMBER)0 850 y(END)0 957 y(TO)h(PREPARE.LIMIT.2)d
+(:LIMIT)24 1015 y(IF)i(NUMBERP)g(:LIMIT)g([OUTPUT)g(SENTENCE)g
+([GREATERP)g(:TEMPLATE.NUMBER])e(:LIMIT])24 1073 y(OUTPUT)i
+(PREPARE.TEMPLATE.2)e(:LIMIT)0 1132 y(END)0 1239 y(TO)j(REDUCE)f
+(:REDUCE.TEMPLATE)e(:TEMPLATE.LIST)24 1297 y(OUTPUT)i(REDUCE1)g
+(PREPARE.TEMPLATE.2)e(:REDUCE.TEMPLATE)h(:TEMPLATE.LIST)0
+1355 y(END)0 1462 y(TO)i(REDUCE1)e(:REDUCE.TEMPLATE)g(:TEMPLATE.LIST)24
+1520 y(IF)h(EMPTYP)g(BUTFIRST)g(:TEMPLATE.LIST)f([OUTPUT)h(FIRST)g
+(:TEMPLATE.LIST])24 1578 y(LOCAL)g([TEMPLATE.VAR1)f(TEMPLATE.VAR2])24
+1636 y(MAKE)h("TEMPLATE.VAR1)f(FIRST)h(:TEMPLATE.LIST)24
+1694 y(MAKE)g("TEMPLATE.VAR2)f(REDUCE1)h(:REDUCE.TEMPLATE)f(BUTFIRST)g
+(:TEMPLATE.LIST)24 1752 y(OUTPUT)h(RUN)g(:REDUCE.TEMPLATE)0
+1810 y(END)0 1918 y(TO)h(FILTER)f(:FILTER.TEMPLATE)e(:TEMPLATE.LIST)24
+1976 y(OUTPUT)i(FILTER1)g(PREPARE.TEMPLATE)e(:FILTER.TEMPLATE)h
+(:TEMPLATE.LIST)g(1)0 2034 y(END)0 2141 y(TO)i(FILTER1)e
+(:FILTER.TEMPLATE)g(:TEMPLATE.LIST)g(:TEMPLATE.NUMBER)24
+2199 y(IF)h(EMPTYP)g(:TEMPLATE.LIST)f([OUTPUT)h([]])24
+2257 y(LOCAL)g("TEMPLATE.VAR)24 2315 y(MAKE)g("TEMPLATE.VAR)f(FIRST)h
+(:TEMPLATE.LIST)24 2373 y(IF)g(\(RUN)h(:FILTER.TEMPLATE\))95
+2431 y([OUTPUT)f(FPUT)h(:TEMPLATE.VAR)406 2489 y(FILTER1)f
+(:FILTER.TEMPLATE)e(BF)j(:TEMPLATE.LIST)597 2547 y(1+:TEMPLATE.NUMBER])
+24 2606 y(OUTPUT)f(FILTER1)g(:FILTER.TEMPLATE)e(BF)j(:TEMPLATE.LIST)e
+(1+:TEMPLATE.NUMBER)0 2664 y(END)952 2779 y Fh(23)p eop
+%%Page: 24 24
+24 23 bop 0 45 a Fi(References)0 190 y Fh(Ab)q(elson)16
+b(H.)e(and)g(Sussman)g(G.)g(1985:)f Fg(Structur)n(e)j(and)f(interpr)n
+(etation)g(of)h(c)n(omputer)g(pr)n(o)n(gr)n(ams)p Fh(.)j(Cam)o(bridge:)
+91 248 y(MIT)c(Press.)0 338 y(Allen)k(J.,)f(Da)o(vis)f(R.,)h(and)g
+(Johnson)g(J.)f(1984:)f Fg(Thinking)h(ab)n(out)i([TLC])e(L)n(o)n(go)p
+Fh(.)26 b(New)17 b(Y)l(ork:)g(Holt,)h(Rinehart)91 396
+y(and)d(Winston.)0 486 y(Bac)o(kus)i(J.)g(1978:)f(`Can)g(programming)h
+(b)q(e)h(lib)q(erated)g(from)f(the)g(v)o(on)g(Neumann)h(st)o(yle?')26
+b Fg(Communic)n(ations)91 544 y(of)16 b(the)h(A)o(CM)p
+Fh(,)d(21,)g(613{641.)0 634 y(Golden)o(b)q(erg)i(E.)f(P)l(.)g(and)g(F)l
+(eurzeig)h(W.)e(1987:)g Fg(Exploring)i(language)g(with)h(L)n(o)n(go)p
+Fh(.)i(Cam)o(bridge:)c(MIT)g(Press.)0 724 y(Harv)o(ey)g(B.)g
+Fg(Computer)i(scienc)n(e)d(L)n(o)n(go)i(style)p Fh(.)j(Cam)o(bridge:)c
+(MIT)g(Press.)91 782 y(1985:)k(V)l(olume)d(1:)j Fg(Interme)n(diate)d
+(pr)n(o)n(gr)n(amming)p Fh(.)91 840 y(1986:)j(V)l(olume)d(2:)j
+Fg(Pr)n(oje)n(cts,)d(styles,)f(and)h(te)n(chniques)p
+Fh(.)91 898 y(1987:)j(V)l(olume)d(3:)j Fg(A)n(dvanc)n(e)n(d)c(topics)p
+Fh(.)0 988 y(T)l(emp)q(el)i(M.)f(and)g(Mic)o(haud)g(N.)g(1986:)e(`Bey)o
+(ond)i(T)l(urtle)h(Graphics?')23 b Fg(L)n(o)n(go)16 b(86)h(Pr)n(o)n(c)n
+(e)n(e)n(dings)p Fh(,)c(Massac)o(h)o(usetts)91 1046 y(Institute)j(of)f
+(T)l(ec)o(hnology)l(.)952 2779 y(24)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/js/games/nluqo.github.io/~bh/obsolete.html b/js/games/nluqo.github.io/~bh/obsolete.html
new file mode 100644
index 0000000..5b63902
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/obsolete.html
@@ -0,0 +1,270 @@
+<HTML>
+<HEAD>
+<TITLE>Is Programming Obsolete?</TITLE>
+</HEAD>
+<BODY>
+<H1>Is Programming Obsolete?</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>My topic, the role of programming in computer-using education, is the
+intersection of two broader topics: the role of programming in computer use
+generally, and the goals and objectives behind the use of computers in
+education.
+
+<P>The first personal computers came with a BASIC interpreter, and with little
+or no other software.  Of necessity, anyone who wanted to use a computer
+programmed it.  The question for educators was not "Should students program
+the computer or use it in some other way," but rather, "Should we spend the
+money on computers for the students to program?"  When computers were
+brought into schools, the typical result is that some kids were deeply
+engaged in programming them, while others ignored them.
+
+<P>Soon teachers and others began to develop computer programs intended to
+teach specific lessons.  These programs ranged from drill and practice to
+simulations.  The early programs were narrowly focused; each program taught
+one lesson.  This was the context in which Logo became famous when its
+developers argued for preferring programming as a student activity over the
+use of drill programs and the like, on the grounds that programming engages
+the mind in mathematical activity; students who program in Logo would <EM>do</EM>
+mathematics, rather than merely <EM>learn about</EM> it.
+
+<P>Today the situation is very different.  The Macintosh was the first personal
+computer to be sold without a programming language at all; instead the first
+Macs came with a word processor and a painting program.  Software has become
+a giant industry, with many choices available in all categories.  People
+expect to use computers without programming them; programming is seen as a
+task for experts.
+
+<P>Another factor in the changing view of programming is the increasing
+complexity and sophistication of user interfaces.  Commercial software has a
+professional "look and feel" that the old homebrew BASIC programs can't
+match.  Kids expect arcade-quality animation and a graphical user interface.
+The programs that they can write themselves don't meet that standard.
+
+<P>These are the roots of the current conventional wisdom that programming, as
+an activity for students, is obsolete.
+
+<H2>But It's Not!</H2>
+
+<H3>1.  People want to program.</H3>
+
+<P>If you ask most computer users, they'll tell you that they don't want to
+program.  The word "programming" has come to connote something horribly
+complicated, beyond the ability of most people.  But the people who say they
+don't want to program are wrong.  The proof is that they buy "macro"
+languages, such as QuickKeys.  These are abysmally poor programming
+languages, in which the notation is based on keystrokes and mouse clicks
+rather than on the desired program functions, and yet people put up with
+their awfulness because they are <EM>so desperate</EM> to program their computers!
+They don't express their desperation in those terms; they say that they
+merely want the computer to carry out their tasks, which aren't exactly the
+ones built into the commercial software.  But teaching a computer to carry
+out a desired task is precisely what "programming" really means.
+
+<P>Macro languages are awkward because they are retrofitted into a system
+designed to prevent programming.  In recent years, the computer system
+designers have begun to recognize users' passionate desire to program, and
+have developed programming languages that are better integrated with their
+overall systems.  The first example was Hypertalk, the programming language
+within the Hypercard application program.  Unfortunately, Apple was so
+terrified that their customers would be scared away by the phrase
+"programming language" that they made two bad mistakes with Hypertalk.  The
+first, which I find very revealing, was that in the first release of
+Hypercard the programming language was hidden.  Users had to take the
+trouble to declare themselves expert before they could even look at, let
+alone write, Hypertalk programs.  The second mistake was to think that the
+way to make a language easy for beginners is to make it "English-like."
+This is the same mistake that led to the design of COBOL a generation ago,
+one more illustration of the old saw about repeating the mistakes of history.
+
+<P>Still, Hypercard was a big success, precisely because it acknowledged the
+desire of users to program their computers.  In the world of education,
+we've seen a new flowering of educational Hypercard programs written by
+teachers and students, similar to the earlier explosions of educational
+programming in BASIC and in Logo.  And better languages have followed; Apple
+has finally introduced Apple Events, which makes most Macintosh software
+extensible, and Microsoft has introduced Visual BASIC to make the PC
+programmable by its users.  Word processing programs such as Microsoft Word
+have added extension languages, and so have spreadsheet and database
+programs.  But many of these ad hoc languages, such as DBASE for database
+programming, are badly designed and lack essential capabilities.
+
+<H3>2.  Learning isn't just curriculum.</H3>
+
+<P>Everyone likes to quote the remark that "education is what's left after you
+forget everything you learned," but we sometimes evaluate educational
+computing plans as if that weren't true, as if what's important were the
+specific facts.  Schools spend fortunes on enormous catalogs of programs,
+each of which imparts one lesson.  But the best, most enduring examples of
+educational software are the ones that allow students to create the lesson
+themselves -- in other words, the ones in which the learner programs the
+computer.
+
+<P>This doesn't have to mean that the student works in a general-purpose
+programming language.  Some of the best educational software consists of
+special-purpose languages, such as Geometric Supposer and its descendents
+like Geometer's Sketchpad.  The design of special-purpose programming
+languages for educational use has a long history.  One very early, well
+known example is Rocky's Boots, a (visual!) programming language for
+propositional logic.  The IBM "Writing to Read" package, while not really a
+programming language, follows a similar approach, in that the learner is
+encouraged to create something -- in this case, an English text -- rather
+than merely to take in knowledge and regurgitate it on demand.  In all of
+these cases, learning to program isn't the goal; the goal is to learn
+geometry, or logic, or reading skills.  But programming isn't a distraction!
+It helps in the learning, and it helps make the learning endure for the
+student.
+
+<H3>3.  Learner-centered computing.</H3>
+
+<P>Here are two examples, at different age levels, of using computer
+programming to teach other subjects in a learner-centered way.
+
+<P>The first is an investigation into English grammar, suitable for upper
+elementary grades.  Instead of learning abstract definitions for the parts
+of speech ("A noun is a person, place, or thing" and so on), students can
+discover for themselves which words fit into what roles in a sentence, by
+constructing a sentence-generation program in Logo.  (This activity is
+inspired by _Exploring Languge with Logo_ by E. Paul Goldenberg and
+Wallace Feurzeig.)
+
+<PRE>
+to sent
+output (sentence nounphrase verbphrase)
+end
+
+to nounphrase
+output (sentence "the adjective noun)
+end
+
+to verbphrase
+output (sentence verb nounphrase)
+end
+
+to noun
+output pick [girl boy elephant zebra giraffe clown]
+end
+
+to adjective
+output pick [big happy little funny silly]
+end
+
+to verb
+output pick [hugs punches likes visits]
+end
+
+? print sent
+THE FUNNY CLOWN HUGS THE HAPPY ZEBRA
+
+? print sent
+THE LITTLE GIRAFFE PUNCHES THE SILLY BOY
+</PRE>
+
+(This program would not be presented to students by the teacher.  Rather,
+the students would build up to it themselves.  Perhaps the teacher would
+present a much simpler program, for example, one that generates sentences
+such as FRED RUNS or SUSAN SMILES.  This is an open-ended project; the
+program can be extended to generate many different sentence structures.)
+
+<P>The second example is for college undergraduates learning abstract algebra.
+These procedures are written in ISETL, a language designed specifically to
+resemble formal mathematical notation.  They come from an algebra course
+taught by Uri Leron.  The procedures model the definition of a <EM>group</EM>, a
+mathematical structure made up of a set S and an operation o that satisfy
+certain requirements.  Those requirements are tested by the procedures:
+
+<PRE>
+is_closed := func(S,o);
+  return
+    forall a,b in S |
+      a .o b in S;
+  end;
+
+is_associative := func(S,o);
+  return
+    forall a,b,c in S |
+      (a .o b) .o c = a .o (b .o c);
+  end;
+
+has_identity := func(S,o);
+  return
+    exists e in S |
+      (forall a in S | e .o a = a);
+  end;
+
+identity := func(S,o);
+  return
+    choose e in S |
+      (forall a in S | e .o a = a);
+  end;
+
+has_inverses := func(S,o);
+  local e; e := identity(S,o);
+  return
+    is_defined(e) and
+	forall a in S |
+      (exists a' in S | a' .o a = e);
+  end;
+</PRE>
+
+<P>I choose this advanced example to make the point that the difficulties of a
+ten-year-old learning the parts of speech is not so different from those of
+a twenty-year-old studying mathematics.  In both cases, the curriculum
+consists of a series of technical terms (adjective in one case, associative
+in the other) and their meanings.  If a teacher recites defnitions for these
+terms, the student can easily be confused or forget them later.  But if each
+learner develops the ideas through experimentation, they are more likely to
+form a coherent framework.  Programming languages are a vehicle for that
+experimentation.
+
+<H2>GUIs Versus Programming?</H2>
+
+<P>In the popular culture, a distinction is made between computer systems for
+programmers (DOS, Unix) and computer systems for non-programmers (Macintosh,
+Windows).  Fans of the latter category are the ones who most strongly
+suggest that programming is obsolete as an activity for learners.
+
+<P>The dichotomy is false.  The best software <EM>combines</EM> a graphical user
+interface with a powerful extension language.  In the early days of Logo, the
+slogan was "No threshold, no ceiling."  In modern vocabulary, this same idea
+is still relevant:  "Simple things should be simple, and difficult things
+should be possible."
+
+<P>Here are my criteria for good interface design:
+
+<P>1.  Commonly-used capabilities of the program should be accessible through
+graphical controls (by clicking on a button or moving a slider, for example)
+without programming.
+
+<P>2.  Anything that can be done with a graphical control must also be doable
+from within a program in the extension language.
+
+<P>3.  The algorithm for each graphical control should be accessible and
+modifiable using the extension language.
+
+<P>4.  It should be possible for the user to install new graphical controls,
+with functions specified in the extension language.
+
+<P>5.  The extension language should be a real, well designed programming
+language, not an ad hoc kludge.  It should provide the capabilities of
+serious modern languages, such as dynamic memory allocation, functional
+programming, and object-oriented programming.
+
+<P>There are a few examples of such hybrid programs.  AutoCAD, a program used
+by circuit designers, has a graphical interface with Lisp as an extension
+language.  Michael Eisenberg has developed SchemePaint, a painting program
+with a conventional graphical interface backed up with Scheme as the
+extension language.  For example, the SchemePaint user can define new
+brushes to add to the program's tool palette.  Microworlds, the latest
+product from Logo Computer Systems, Inc., is an animated paint program with
+user extensions programmable in Logo.
+
+<P>As programs like these become more and more common, will the people who use
+them think of themselves as programmers?  No doubt some will and some won't,
+but the ones who do will get the most benefit from their tools.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/other-logos.html b/js/games/nluqo.github.io/~bh/other-logos.html
new file mode 100644
index 0000000..d8e41ce
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/other-logos.html
@@ -0,0 +1,73 @@
+<HTML>
+<HEAD>
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<TITLE>Other Versions of Logo</TITLE>
+<link rel="shortcut icon" href="http://www.cs.BERKELEY.edu/~bh/ucblogo.png" type="image/png">
+</HEAD>
+<BODY>
+<P>
+
+<H1>Other Versions of Logo</H1>
+
+<H2>Versions Derived from Berkeley Logo</H2>
+
+<P>David Costanzo's <A HREF="http://fmslogo.sourceforge.net/">FMSLogo</A>, an
+updated version of MSWLogo, a Windows-only version with multimedia and other
+enhancements.
+
+<P>Andreas Micheler's
+<A HREF="http://www.physik.uni-augsburg.de/~micheler/">aUCBLogo</A>,
+a rewrite and enhancement of UCBLogo.
+
+<P><A HREF="http://e-slate.cti.gr">E-Slate<A>, from the National Kapodistrian
+University of Athens, is a collection of tools for authoring educational
+microworlds, using a visual dataflow model, with
+a derivative of UCBLogo as one of the tools.
+
+<H2>Other Free Versions of Logo</H2>
+
+<P>Pavel Boytchev's <A HREF="http://www.elica.net">ELICA</A>, an
+object-oriented redesign of Logo.
+
+<P>MIT's <A HREF="http://education.mit.edu/starlogo/">StarLogo</A>, a massively
+parallel (thousands of turtles) dialect for modeling decentralized systems.
+
+<P>Uri Wilensky's <A HREF="http://ccl.northwestern.edu/netlogo/">NetLogo</A>,
+an offshoot of StarLogo.
+
+<P>MIT's <A HREF="http://scratch.mit.edu/">Scratch</A>, an experimental
+drag-and-drop turtle programming environment.
+
+<H2>Commercial Versions of Logo</H2>
+
+<P>All of the following include multimedia capabilities.
+
+<P><A HREF="http://www.logo.com/imagine/">Imagine</A>, from Comenius
+University, an innovative object-oriented Logo featuring multicomputer
+collaboration over the Internet.
+
+<P><A HREF="http://www.microworlds.com/">Microworlds</A>, from Logo Computer
+Systems, Inc., the company founded by Seymour Papert to continue Logo
+development.
+
+<P><A HREF="http://www.terrapinlogo.com/">Terrapin Logo</A>, with an
+extensive collection of supporting print materials including project ideas
+and curriculum materials.
+
+<H2>Other Programming Environments for Kids</H2>
+
+<P>Alan Kay's <A HREF="http://www.squeak.org/">Squeak</A>, a multimedia
+environment based on Smalltalk, the original object-oriented programming
+language.
+
+<p><b>And last but not least, our own wonderful block-based language
+<a href="https://snap.berkeley.edu">Snap<i>!</i></a>, Scheme (call/cc!) disguised 
+as Scratch.</b></p>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/papers.html b/js/games/nluqo.github.io/~bh/papers.html
new file mode 100644
index 0000000..6d30f1a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/papers.html
@@ -0,0 +1,143 @@
+<HTML>
+<HEAD>
+<TITLE>papers on computers and education</TITLE>
+</HEAD>
+<BODY>
+<H1>Papers on computers and education</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<UL>
+
+<LI><a href="HOPL.pdf">History of Logo</a> (C. Solomon et al.)  I'm one of eight
+listed authors and a cast of thousands who helped with this paper for the ACM
+History of Programming Languages journal and conference.
+
+<LI><a href="snap/baby3.pdf">"Why Do We Have to Learn This Baby Language?"</a>.
+An answer to high school students in the Beauty and Joy of Computing course
+who complain about having to use what they think is just the Scratch they
+learned when they were eight.
+
+<LI><A HREF="BJC.pdf">"The Beauty and Joy of Computing: Computer Science for
+Everyone"</A>, Constructionism 2012, Athens.  About the development of CS 10,
+Berkeley's new CS breadth course for non-majors.
+
+<LI><A HREF="sicp.html">Why <cite>Structure and Interpretation of
+Computer Programs</cite> matters</A>  In 2011, to celebrate the 150th
+anniversary of MIT, the <i>Boston Globe</i> made a list of the most
+important MIT innovations, and they asked me to explain the importance
+of SICP.  This is what I sent them.
+
+<LI><A HREF="BYOB.pdf">"Bringing 'No Ceiling' to Scratch: Can One Language
+Serve Kids and Computer Scientists?"</A> (with Jens M&ouml;nig, a talk at the
+Constructionism 2010 conference in Paris).  Scratch is the brilliant
+grandchild of Logo, from the MIT Media Lab, that uses drag-and-drop visual
+programming to achieve, truly at last, the "no threshold" half of Logo's
+famous promise, combined with a half-million-strong social network of kid
+programmers sharing projects and working collaboratively.  But Scratch
+deliberately drops the "no ceiling" part.  How hard would it be to do both
+at once?  Not hard at all, we think, if we remember Lisp's core idea of
+procedure as data.  <A HREF="https://people.eecs.berkeley.edu/~bh/byob">BYOB</A> (Build Your Own Blocks) is an
+experimental implementation of this goal.
+<LI><A HREF="grad05.html">"Speech at UCB CS Graduation, 2005"</A>At
+Berkeley every department has its own graduation ceremony.  At the one
+for the Computer Science majors in the College of Letters and Science,
+there are a bunch of student speakers, then a faculty speaker, and then
+a famous-outsider speaker.  This year I gave the faculty speech, about
+the sorry state of the world.
+<LI><A HREF="alliance.html">"Harmful to Children?  The <CITE>Alliance
+for Childhood</CITE> Report"</A> (a talk at the 2001 EuroLogo conference
+in Linz).  A first pass at a response to <CITE>Fool's Gold,</CITE> a
+report condemning the use of computers in primary education.  Some of
+the points in the report are as applicable to Logo as to other forms of
+educational computing, but Logo escapes from other criticisms in the report.
+<LI><A HREF="logic.html">"Reasoning with Computers"</A> (a talk at the
+1997 EuroLogo conference in Budapest).  One of the programming projects
+I used in my Logo-based computer science books is a program that solves
+logic puzzles.  This paper explores different approaches to such puzzles
+(inference and backtracking) and how the program could be extended.
+There are general purpose inference systems far more advanced, but this
+limited program may make the ideas more accessible to a beginner.
+<LI><A HREF="capitalist.html">"Logo: Capitalist Tool?"</A> (a talk at
+the 1995 EuroLogo conference in Birmingham).  A recent development at
+the MIT Logo lab has been Mitch Resnick's program StarLogo, a version
+featuring extreme parallelism (thousands of turtles).  Results from
+this very good technical work have been used as the basis for what I
+consider dubious analogies, in Resnick's own book and in Seymour Papert's
+latest book, that purport to prove the joys of "free"-market capitalism.
+Here I debunk those analogies.
+<LI><A HREF="obsolete.html">"Is Programming Obsolete?"</A> (A talk I've
+given at a few conferences in 1994.)  No, it isn't, even though there's
+slick "courseware" available these days.
+<LI><A HREF="multi.html">"Against Multimedia"</A> (Computer Professionals
+for Social Responsibility newsletter, 1994), in which I explain why it's
+all a bad idea.
+<LI><A HREF="elogo.html">"Symbolic Programming vs. Software Engineering--Fun
+vs. Professionalism--Are These the Same Question?"</A> (a talk at the 1993
+EuroLogo conference in Athens).  Sorry about the long title; they asked me
+for a title before I'd decided what to talk about!  It turned out to be about
+the word "Logo-like" that people use these days to describe an enormous range
+of educational environments.  I consider what makes Logo Logo, and some of
+the different ways in which things can be like or unlike that.
+<LI><A HREF="gary.html">"The Role of Logo in Secondary and Post-Secondary
+Computer Science"</A> (a talk at the 1993 International Logo Conference
+in Melbourne).  What language should we use to teach computer science?
+I compare Logo with its competitors: Scheme, Pascal, and visual languages
+such as Visual Basic and (in a different way) Hypertalk.
+<LI><A HREF="noss.ps">"Avoiding Recursion"</A> (in <CITE>Learning
+Mathematics and Logo</CITE>, Celia Hoyles
+and Richard Noss, editors, MIT Press, 1992).  Functional languages
+such as Logo and Scheme generally use recursion as the main control
+mechanism, rather than iterative constructs such as <CODE>while</CODE>
+and <CODE>for</CODE>.  Many beginning programmers find the idea of
+recursion difficult, and that gives these languages a bad reputation.
+Here I suggest that the use of higher-order procedures can allow a
+wide range of interesting programs to be written before the learner
+must confront the challenge of recursion.
+<LI><A HREF="ifsnecc.ps">"Beyond Programming: A Two-Summer
+Computer Science Institute for Secondary Teachers"</A> (a talk at the 1992
+National Educational Computing Conference in Dallas).  From 1989 to 1992
+I taught high school teachers Logo and computer science
+in a summer program at Kent State University.  The program was heavy on
+experiential learning; the talk describes some of the technical and
+pedagogic issues that arose.
+<LI><A HREF="bridge.html">"Symbolic Programming vs. the AP Curriculum"</A>
+(in <CITE>The Computing Teacher</CITE>, 1991).  I argue that learning
+to program should be fun, not primarily focused on avoiding errors; that
+can come later.
+<LI><A HREF="four.html">"Abstracts for Four Papers
+I'm Gonna Write Someday"</A>.  The 1989 national convention of
+Computer Professionals for Social Responsibility came just after
+the famous Internet worm that disabled all the computers in the world
+for a day or so.  There was a lot of discussion about it, as you
+might imagine.  I thought that a lot of people's ideas about moral
+education were naive, and this is a collection of musings that I
+wrote for CPSR members.
+<LI><A HREF="hackers.html">"Computer Hacking and Ethics"</A>, a
+position paper I brought to an ACM `Select Panel on Hacking' in
+1985.  I argue that moral development is different from
+locking the door and throwing away the key.  This paper has
+two appendices:
+<UL>
+<LI><A HREF="hacker.html">What is a Hacker?</A>  The word was
+a compliment until <CITE>Newsweek</CITE> took it over.
+<LI><A HREF="lsrhs.html">A Case Study</A> A description of the
+computer lab I set up at the Lincoln-Sudbury Regional High School.
+</UL>
+<LI><A HREF="stop.html">"Stop Saying `Computer Literacy'!"</A>,
+a (badly edited) version of which was published in <CITE>Classroom
+Computer News</CITE> in 1983.  During the first wave of hysteria to
+get computers into schools and homes, I argued that that wasn't going
+to make everyone rich.  And phrases like "computer literacy" and
+"media literacy" and so on weaken the original, important meaning
+of the word "literacy."
+<LI><A HREF="freedom.html">"Using Computers for Educational Freedom"</A>,
+a talk I gave at Lesley College in 1980.  It's about the philosophy
+behind the way I set up my high school computer lab: giving kids keys
+to the room and root access and stuff.
+</UL>
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/part1.html b/js/games/nluqo.github.io/~bh/part1.html
new file mode 100644
index 0000000..5391611
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/part1.html
@@ -0,0 +1,66 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme part I introduction</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Introduction: Functions</H1>
+
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>The purpose of these introductory pages before each part of the book is to
+call attention to a big idea that runs through all the work of several
+chapters.  In the chapters themselves, the big idea may sometimes be hidden
+from view because of the technical details that we need to make the idea
+work.  If you ever feel lost in the forest, you might want to refer back
+here.
+
+<P>In these first two chapters, our goal is to introduce the Scheme programming
+language and the idea of using <EM>functions</EM> as the building blocks of a
+computation.
+
+<P>The first chapter is a collection of short Scheme programs, presented to
+show off what Scheme can do.  We'll try to explain enough of the mechanism
+so that you don't feel completely mystified, but we'll defer the
+details until later.  Our goal is not for you to feel that you could
+re-create these programs, but rather that you get a sense of what
+<EM>kinds</EM> of programs we'll be working with.
+
+<P>The second chapter explores functions in some detail.  Traditionally,
+computer programs are built out of <EM>actions:</EM> First do this, then do
+that, and finally print the results.  Each step in the program <EM>does</EM>
+something.  Functional programming is different, in that we are less
+concerned with actions and more concerned with values.
+
+<P>For example, if you have a pocket calculator with a square root button, you
+could enter the number 3, push the button, and you'll see something like
+1.732050808 in the display.  How does the calculator know?  There are
+several possible processes that the calculator could carry out.  One
+process, for example, is to make a guess, square it, see if the result is
+too big or too small, and use that information to make a closer guess.
+That's a sequence of actions.  But ordinarily you don't care what actions
+the calculator takes; what interests you is that you want to apply the
+square root <EM>function</EM> to the <EM>argument</EM> 3, and get back a
+<EM>value.</EM> We're going to focus on this business of functions, arguments,
+and result values.
+
+<P>Don't think that functions have to involve numbers.  We'll be working with
+functions like "first name," "plural," and "acronym." These functions
+have words and sentences as their arguments and values.
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/part2.html b/js/games/nluqo.github.io/~bh/part2.html
new file mode 100644
index 0000000..2a411dd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/part2.html
@@ -0,0 +1,66 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme part II introduction</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Composition of Functions</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>The big idea in this part of the book is deceptively simple.  It's that we
+can take the value returned by one function and use it as an argument to
+another function.  By "hooking up" two functions in this way, we invent a
+new, third function.  For example, let's say we have a function that adds
+the letter <CODE>s</CODE> to the end of a word:
+
+<P><EM>add-s</EM>("<CODE>run</CODE>") = "<CODE>runs</CODE>"
+
+<P>and another function that puts two words together into a sentence:
+
+<P><EM>sentence</EM>("<CODE>day</CODE>", "<CODE>tripper</CODE>") =
+"<CODE>day tripper</CODE>"
+
+<P>We can combine these to create a new function that represents the
+third person singular form of a verb:
+
+<P><EM>third-person</EM>(verb) = <EM>sentence</EM>("<CODE>she</CODE>",
+<EM>add-s</EM>(verb))
+
+<P>That general formula looks like this when applied to a particular
+verb:
+
+<P><EM>third-person</EM>("<CODE>sing</CODE>") = "<CODE>she sings</CODE>"
+
+<P>The way we say it in Scheme is
+
+<PRE>
+(define (third-person verb)
+  (sentence 'she (add-s verb)))
+</PRE>
+
+<P>(When we give an example like this at the beginning of a part,
+don't worry about the fact that you don't recognize the notation.  The
+example is meant as a preview of what you'll learn in the coming chapters.)
+
+<P>We know that this idea probably doesn't look like much of a big deal to
+you.  It seems obvious.  Nevertheless, it will turn out that we can express
+a wide variety of computational algorithms by linking functions together in
+this way.  This linking is what we mean by
+"functional programming."
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/part3.html b/js/games/nluqo.github.io/~bh/part3.html
new file mode 100644
index 0000000..080d96e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/part3.html
@@ -0,0 +1,93 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme part III introduction</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Functions as Data</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>By now you're accustomed to the idea of expressing a computational process
+in terms of the function whose value you want to compute, rather than in
+terms of a sequence of actions.  But you probably think of a function (or
+the procedure that embodies it) as something very different from the words,
+sentences, numbers, or other data that serve as arguments to the functions.
+It's like the distinction between verbs and nouns in English:  A verb
+represents something <EM>to do,</EM> while a noun represents something
+<EM>that is.</EM>
+
+<P>In this part of the book our goal is to overturn that distinction.
+
+<P>Like many big ideas, this one seems simple at first.  All we're saying is
+that a function can have <EM>functions</EM> as its domain or range.  One
+artificially simple example that you've seen earlier was the
+<CODE>number-of-arguments</CODE> function in Chapter 2.  That function
+takes a function as argument and returns a number.  It's not so different
+from <CODE>count</CODE>, which takes a word or sentence as argument and returns a
+number.
+
+<P>But you'll see that this idea leads to an enormous rise in the length and
+complexity of the processes you can express in a short procedure, because
+now a process can give rise to several other processes.  A typical example
+is the <CODE>acronym</CODE> procedure that we introduced in Chapter 1 and
+will examine now in more detail.  Instead of applying the <CODE>first</CODE>
+procedure to a single word, we use <CODE>first</CODE> as an argument to a procedure,
+<CODE>every</CODE>, that automatically applies it to every word of a sentence.  A
+single <CODE>every</CODE> process gives rise to several <CODE>first</CODE> processes.
+
+<P>The same idea of function as data allows us to write procedures that create
+and return new procedures.  At the beginning of Part II we showed a Scheme
+representation of a function that computes the third person singular of a
+verb.  Now, to illustrate the idea of function as data, we'll show how to
+represent in Scheme a function <CODE>make-conjugator</CODE> whose range is <EM>the
+whole family</EM> of verb-conjugation functions:
+
+<PRE>
+(define (make-conjugator prefix ending)
+  (lambda (verb) (sentence prefix (word verb ending))))
+</PRE>
+
+<P>Never mind the notation for now; the idea to think about is that
+we can use <CODE>make-conjugator</CODE> to create many functions similar to the
+<CODE>third-person</CODE> example of the Part II introduction:
+
+<PRE>
+> (define third-person (make-conjugator 'she 's))
+
+> (third-person 'program)
+(SHE PROGRAMS)
+
+> (define third-person-plural-past (make-conjugator 'they 'ed))
+
+> (third-person-plural-past 'play)
+(THEY PLAYED)
+
+> (define second-person-future-perfect
+    (make-conjugator '(you will have) 'ed))
+
+> (second-person-future-perfect 'laugh)
+(YOU WILL HAVE LAUGHED)
+</PRE>
+
+<P>We'll explore only a tiny fraction of the area opened up by the idea of
+allowing a program as data.  Further down the same road is the study of
+<EM>compilers</EM> and <EM>interpreters,</EM> the programs that translate your
+programs into instructions that computers can carry out.  A Scheme
+compiler is essentially a function whose domain is Scheme programs.
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/part5.html b/js/games/nluqo.github.io/~bh/part5.html
new file mode 100644
index 0000000..85453e7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/part5.html
@@ -0,0 +1,75 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme part V introduction</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Abstraction</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>We've really been talking about abstraction all along.  Whenever you find
+yourself performing several similar computations, such as
+
+<PRE>
+> (sentence 'she (word 'run 's))
+(SHE RUNS)
+
+> (sentence 'she (word 'walk 's))
+(SHE WALKS)
+
+> (sentence 'she (word 'program 's))
+(SHE PROGRAMS)
+</PRE>
+
+and you capture the similarity in a procedure
+
+<PRE>
+(define (third-person verb)
+  (sentence 'she (word verb 's)))
+</PRE>
+
+<P>you're <EM>abstracting</EM> the pattern of the computation by
+expressing it in a form that leaves out the particular verb in any one
+instance.
+
+<P>In the preface we said that our approach to computer science is to teach you
+to think in larger chunks, so that you can fit larger problems in your mind
+at once; "abstraction" is the technical name for that chunking process.
+
+<P>In this part of the book we take a closer look at two specific kinds of
+abstraction.  One is <EM>data abstraction,</EM> which means the invention of
+new data types.  The other is the implementation of <EM>higher-order
+functions,</EM> an important category of the same process abstraction of which
+<CODE>third-person</CODE> is a trivial example.
+
+<P>Until now we've used words and sentences as though they were part of the
+natural order of things.  Now we'll discover that Scheme sentences exist
+only in our minds and take shape through the use of constructors and
+selectors (<CODE>sentence</CODE>, <CODE>first</CODE>, and so on) that we wrote.  The
+implementation of sentences is based on a more fundamental data type called
+<EM>lists.</EM> Then we'll see how lists can be used to invent another
+in-our-minds data type, <EM>trees.</EM>  (The technical term for an invented
+data type is an <EM>abstract</EM> data type.)
+
+<P>You already know how higher-order functions can express many computational
+processes in a very compact form.  Now we focus our attention on the
+higher-order <EM>procedures</EM> that implement those functions, exploring
+the mechanics by which we create these process abstractions.
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/part6.html b/js/games/nluqo.github.io/~bh/part6.html
new file mode 100644
index 0000000..47b8702
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/part6.html
@@ -0,0 +1,95 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme part VI introduction</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Sequential Programming</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>The three big ideas in this part are <EM>effect, sequence,</EM> and <EM>state.</EM>
+
+<P>Until now, we've been doing functional programming, where the focus is on
+functions and their return values.  Invoking a function is like asking a
+question: "What's two plus two?" In this part of the book we're going to
+talk about giving commands to the computer as well as asking it questions.
+That is, we'll invoke procedures that tell Scheme to <EM>do</EM> something,
+such as <CODE>wash-the-dishes</CODE>.  (Unfortunately, the Scheme standard
+leaves out this primitive.)  Instead of merely computing a value, such a
+procedure has an <EM>effect,</EM> an action that changes something.
+
+<P>Once we're thinking about actions, it's very natural to consider
+a <EM>sequence</EM> of actions.  First cooking dinner, then eating, and then washing
+the dishes is one sequence.  First eating, then washing the dishes, and then
+cooking is a much less sensible sequence.
+
+<P>Although these ideas of sequence and effect are coming near the end of our
+book, they're the ideas with which almost every introduction to programming
+begins. Most books compare a program to a recipe or a sequence of
+instructions, along the lines of
+
+<PRE>
+to go-to-work
+  get-dressed
+  eat-breakfast
+  catch-the-bus
+</PRE>
+
+<P>This sequential programming style is simple and natural, and it does
+a good job of modeling computations in which the problem concerns
+a sequence of events.  If you're writing an airline reservation system, a
+sequential program with <CODE>reserve-seat</CODE> and <CODE>issue-ticket</CODE> commands
+makes sense.  But if you want to know the acronym of a phrase, that's
+not inherently sequential, and a question-asking approach is best.
+
+<P>Some actions that Scheme can take affect the "outside" world, such as
+printing something on the computer screen.  But Scheme can also carry out
+internal actions, invisible outside the computer, but changing the
+environment in which Scheme itself carries out computations.  Defining a new
+variable with <CODE>define</CODE> is an example; before the definition, Scheme
+wouldn't understand what that name means, but once the definition has been
+made, the name can be used in evaluating later expressions.  Scheme's
+knowledge about the leftover effects of past computations is called
+its <EM>state.</EM> The third big idea in this part of the book is that we can write
+programs that maintain state information and use it to determine their
+results.
+
+<P>Like sequence, the notion of state contradicts functional programming.
+Earlier in the book, we emphasized that every time a function is invoked
+with the same arguments, it must return the same value.  But a procedure
+whose returned value depends on state--on the past history of the
+computation--might return a different value on each invocation, even with
+identical arguments.
+
+<P>We'll explore several situations in which effects,
+sequence, and state are useful:
+
+<UL>
+<LI>Interactive, question-and-answer programs that involve keyboard input
+while the computation is in progress;
+<LI>Programs that must read and write long-term data file storage;
+<LI>Computations that <EM>model</EM> an actual sequence of events in time
+and use the state of the program to model information about the state of
+the simulated events.
+</UL>
+
+<P>After introducing Scheme's mechanisms for sequential programming, we'll use
+those mechanisms to implement versions of two commonly used types of
+business computer applications, a spreadsheet and a database program.
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/part7.html b/js/games/nluqo.github.io/~bh/part7.html
new file mode 100644
index 0000000..61bfbc7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/part7.html
@@ -0,0 +1,39 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme part VII introduction</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Conclusion: Computer Science</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>This is the end of the technical material in this book.  We've
+explored the big ideas of composition of functions, functions as data,
+recursion, abstraction, and sequential programming.  As a review, you might
+enjoy rereading Chapter 1 to see how the formerly mysterious
+examples now make sense.
+
+<P>This book is intended both as a standalone programming course for people
+whose main interest is in something else and as preparation for those who
+intend to continue studying computer science.  The final chapter is directed
+mainly at the latter group, to tell them what to expect.  We confess,
+though, to the hope that some of the former may have enjoyed this experience
+enough to be lured into further study.  If you're in that category, you'll
+be particularly interested in a preview of coming attractions.
+
+<P><A HREF="simply-toc.html">(back to Table of Contents)</A>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/pdf/ssch00.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch00.pdf
new file mode 100644
index 0000000..d2e44f9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch00.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch01.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch01.pdf
new file mode 100644
index 0000000..fa40b57
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch01.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch02.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch02.pdf
new file mode 100644
index 0000000..3629a0e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch02.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch03.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch03.pdf
new file mode 100644
index 0000000..d2bd2f8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch03.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch04.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch04.pdf
new file mode 100644
index 0000000..e04d796
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch04.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch05.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch05.pdf
new file mode 100644
index 0000000..2f71223
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch05.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch06.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch06.pdf
new file mode 100644
index 0000000..5c1ffe6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch06.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch07.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch07.pdf
new file mode 100644
index 0000000..8ac5108
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch07.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch08.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch08.pdf
new file mode 100644
index 0000000..f66c42d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch08.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch09.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch09.pdf
new file mode 100644
index 0000000..dc351b4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch09.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch10.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch10.pdf
new file mode 100644
index 0000000..506ec2c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch10.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch11.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch11.pdf
new file mode 100644
index 0000000..230b9cc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch11.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch12.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch12.pdf
new file mode 100644
index 0000000..ee8b7c2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch12.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch13.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch13.pdf
new file mode 100644
index 0000000..ddcc7d4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch13.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch14.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch14.pdf
new file mode 100644
index 0000000..e65a2e2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch14.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch15.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch15.pdf
new file mode 100644
index 0000000..66147c6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch15.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch16.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch16.pdf
new file mode 100644
index 0000000..c8e5c14
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch16.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch17.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch17.pdf
new file mode 100644
index 0000000..aec7ffe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch17.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch18.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch18.pdf
new file mode 100644
index 0000000..47932cd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch18.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch19.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch19.pdf
new file mode 100644
index 0000000..c836519
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch19.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch20.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch20.pdf
new file mode 100644
index 0000000..21a16ae
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch20.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch21.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch21.pdf
new file mode 100644
index 0000000..3bcb4d6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch21.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch22.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch22.pdf
new file mode 100644
index 0000000..4715708
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch22.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch23.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch23.pdf
new file mode 100644
index 0000000..a13b6c8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch23.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch24.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch24.pdf
new file mode 100644
index 0000000..c03ac9c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch24.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch25.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch25.pdf
new file mode 100644
index 0000000..dccddec
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch25.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch26.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch26.pdf
new file mode 100644
index 0000000..b850591
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch26.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/ssch27.pdf b/js/games/nluqo.github.io/~bh/pdf/ssch27.pdf
new file mode 100644
index 0000000..8cd816a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/ssch27.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch00.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch00.pdf
new file mode 100644
index 0000000..f4e4ea9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch00.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch01.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch01.pdf
new file mode 100644
index 0000000..5a51595
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch01.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch02.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch02.pdf
new file mode 100644
index 0000000..d6adb7c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch02.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch03.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch03.pdf
new file mode 100644
index 0000000..e39b076
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch03.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch04.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch04.pdf
new file mode 100644
index 0000000..bf6e25c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch04.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch05.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch05.pdf
new file mode 100644
index 0000000..a00f292
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch05.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch06.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch06.pdf
new file mode 100644
index 0000000..23eaa8b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch06.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch07.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch07.pdf
new file mode 100644
index 0000000..78be424
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch07.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch08.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch08.pdf
new file mode 100644
index 0000000..0850998
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch08.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch09.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch09.pdf
new file mode 100644
index 0000000..8f531fd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch09.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch10.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch10.pdf
new file mode 100644
index 0000000..d91dd76
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch10.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch11.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch11.pdf
new file mode 100644
index 0000000..adb24f9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch11.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch12.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch12.pdf
new file mode 100644
index 0000000..801e7ec
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch12.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch13.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch13.pdf
new file mode 100644
index 0000000..e6018a5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch13.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch14.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch14.pdf
new file mode 100644
index 0000000..8d5e415
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch14.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch15.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch15.pdf
new file mode 100644
index 0000000..4052643
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch15.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v1ch16.pdf b/js/games/nluqo.github.io/~bh/pdf/v1ch16.pdf
new file mode 100644
index 0000000..a4bdd96
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v1ch16.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch00.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch00.pdf
new file mode 100644
index 0000000..ea37c83
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch00.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch01.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch01.pdf
new file mode 100644
index 0000000..65bdfbf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch01.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch02.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch02.pdf
new file mode 100644
index 0000000..f4a87c6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch02.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch03.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch03.pdf
new file mode 100644
index 0000000..e8531dd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch03.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch04.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch04.pdf
new file mode 100644
index 0000000..32d60e4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch04.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch05.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch05.pdf
new file mode 100644
index 0000000..e145ec1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch05.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch06.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch06.pdf
new file mode 100644
index 0000000..da77e68
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch06.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch07.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch07.pdf
new file mode 100644
index 0000000..8b47fa6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch07.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch08.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch08.pdf
new file mode 100644
index 0000000..0ffaf31
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch08.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch09.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch09.pdf
new file mode 100644
index 0000000..db13aea
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch09.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch10.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch10.pdf
new file mode 100644
index 0000000..5ecc00e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch10.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch11.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch11.pdf
new file mode 100644
index 0000000..72c2555
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch11.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch12.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch12.pdf
new file mode 100644
index 0000000..8620b41
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch12.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch13.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch13.pdf
new file mode 100644
index 0000000..aa6e25c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch13.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v2ch14.pdf b/js/games/nluqo.github.io/~bh/pdf/v2ch14.pdf
new file mode 100644
index 0000000..ecf69f7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v2ch14.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch00.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch00.pdf
new file mode 100644
index 0000000..7a52b86
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch00.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch01.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch01.pdf
new file mode 100644
index 0000000..11f71e6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch01.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch02.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch02.pdf
new file mode 100644
index 0000000..a7cc85d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch02.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch03.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch03.pdf
new file mode 100644
index 0000000..4062c5b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch03.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch04.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch04.pdf
new file mode 100644
index 0000000..d9cee63
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch04.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch05.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch05.pdf
new file mode 100644
index 0000000..f93b722
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch05.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch06.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch06.pdf
new file mode 100644
index 0000000..93e83b6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch06.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/pdf/v3ch07.pdf b/js/games/nluqo.github.io/~bh/pdf/v3ch07.pdf
new file mode 100644
index 0000000..7aa9c31
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/pdf/v3ch07.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ring.png b/js/games/nluqo.github.io/~bh/ring.png
new file mode 100644
index 0000000..735d541
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ring.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/sicp-small.jpg b/js/games/nluqo.github.io/~bh/sicp-small.jpg
new file mode 100644
index 0000000..c72a60e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/sicp-small.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/sicp.html b/js/games/nluqo.github.io/~bh/sicp.html
new file mode 100644
index 0000000..94ed2d4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/sicp.html
@@ -0,0 +1,128 @@
+<HTML>
+<HEAD>
+<TITLE>Why <cite>Structure and Interpretation of Computer Programs</cite> matters</TITLE>
+</HEAD>
+<BODY>
+<H1>Why <cite>Structure and Interpretation of Computer Programs</cite> matters</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>In 2011, to celebrate the 150th anniversary of MIT, the <i>Boston Globe</i>
+made a list of the most important innovations developed there.  They asked me
+to explain the importance of <i>SICP,</i> and this is what I sent them:
+
+<P>&nbsp;
+
+<P>SICP was revolutionary in many different ways.  Most importantly, it
+dramatically raised the bar for the intellectual content of introductory
+computer science.  Before SICP, the first CS course was almost always
+entirely filled with learning the details of some programming language.
+SICP is about standing back from the details to learn big-picture ways
+to think about the programming process.  It focused attention on the
+central idea of <i>abstraction</i> -- finding general patterns from specific
+problems and building software tools that embody each pattern.  It made
+heavy use of the idea of <i>functions as data</i>, an idea that's hard to learn
+initially, but immensely powerful once learned.  (This is the same idea,
+in a different form, that makes freshman calculus so notoriously hard even
+for students who've done well in earlier math classes.)  It fit into the
+first CS course three different <i>programming paradigms</i> (functional,
+object oriented, and declarative), when most other courses didn't even
+really discuss even one paradigm.
+
+<P>Another revolution was the choice of Scheme as the programming language.
+To this day, most introductions to computer science use whatever is the
+"hot" language of the moment: from Pascal to C to C++ to Java to Python.
+Scheme has never been widely used in industry, but it's the perfect
+language for an introduction to CS.  For one thing, it has a very simple,
+uniform notation for everything.  Other languages have one notation for
+variable assignment, another notation for conditional execution, two or
+three more for looping, and yet another for function calls.  Courses that
+teach those languages spend at least half their time just on learning the
+notation.  In my SICP-based course at Berkeley, we spend the first hour
+on notation and that's all we need; for the rest of the semester we're
+learning ideas, not syntax.  Also, despite (or because of) its simplicity,
+Scheme is a very versatile language, making it possible for us to examine
+those three programming paradigms and, in particular, letting us see how
+object oriented programming is implemented, so OOP languages don't seem
+like magic to our students.  Scheme is a dialect of Lisp, so it's great
+at handling functions as data, but it's a stripped-down version compared
+to the ones more commonly used for professional programming, with a
+minimum of bells and whistles.  It was very brave of Abelson and Sussman
+to teach their introductory course in the best possible language <i>for
+teaching</i>, paying no attention to complaints that all the jobs were in
+some other language.  Once you learned the big ideas, they thought, and
+this is my experience also, learning another programming language isn't
+a big deal; it's a chore for a weekend.  I tell my students, "the language
+in which you'll spend most of your working life hasn't been invented yet,
+so we can't teach it to you.  Instead we have to give you the skills you
+need to learn new languages as they appear."
+
+<P>Finally, SICP was firmly optimistic about what a college freshman can be
+expected to accomplish.  SICP students write interpreters for programming
+languages, ordinarily considered more appropriate for juniors or seniors.
+The text itself isn't easy reading; it has none of the sidebars and colored
+boxes and interesting pictures that typify the modern textbook aimed at
+students with low attention spans.  There are no redundant exercises; each
+exercise teaches an important new idea.  It uses big words.  But it repays a
+close reading; every sentence matters.
+
+<P>Statistically, SICP-based courses have been a small minority.  But the book
+has had an influence beyond that minority.  It inspired a number of later
+textbooks whose authors consciously tried to live up to SICP's standard.  The
+use of Scheme as a language for learners has been extended by others over a
+range from middle school to graduate school.  Even the more mainstream courses
+have become sensitive to the idea of programming paradigms, although most of
+them concentrate on object oriented programming.  The idea that computer
+science should be about ideas, not entirely about programming practice, has
+since widened to include non-technical ideas about the context and social
+implications of computing.
+
+<P>SICP itself has had a longevity that's very unusual for introductory CS
+textbooks.  Usually, a book lasts only as long as the language fad to which it
+is attached.  SICP has been going strong for over 25 years and shows no sign
+of going out of print.  Computing has changed enormously over that time, from
+giant mainframe computers to personal computers to the Internet on cell
+phones.  And yet the big ideas behind these changes remain the same, and they
+are well captured by SICP.
+
+<P>I've been teaching a SICP-based course since 1987.  The course has changed
+incrementally over that time; we've added sections on parallelism, concurrency
+control, user interface design, and the client/server paradigm.  But it's
+still essentially the same course.  Every five years or so, someone on the
+faculty suggests that our first course should use language X instead; each
+time, I say "when someone writes the best computer science book in the world
+using language X, that'll be fine" and so far the faculty have always voted to
+stay with the SICP course.  We'll find out pretty soon whether the course can
+survive my own retirement.
+
+<ul><li>(Footnote: Nope.  Berkeley's new first course for majors uses Python,
+with lecture notes that try to keep the ideas (and some of the text) of SICP.)
+</ul>
+
+<P>The discussion has been sharper recently because MIT underwent a major
+redesign of their lower division EECS curriculum.  People outside MIT tend to
+summarize that redesign as "MIT decided to switch to Python," but that's not a
+perceptive description.  What MIT decided was to move from a curriculum
+organized around topics (programming paradigms, then circuits, then signal
+processing, then architecture) to a curriculum organized around applications
+(let's build and program a robot; let's build and program a cell phone).
+<i>Everything</i> about their courses had to be reorganized; the choice of
+programming language was the least of those decisions.  Their new approach is
+harder to teach; for one thing, each course requires a partnership of
+Electrical Engineering faculty and Computer Science faculty.  Perhaps in time
+the applications-first approach will spark a revolution as profound as the one
+that followed SICP, but it hasn't happened yet.
+
+<P>In my experience, relatively few students appreciate how much they're
+learning in my course while they're in it.  But in surveys of all our
+CS students, it turns out to be among the most popular courses in
+retrospect, and I regularly get visits and emails from long-gone students
+to tell me about how they're using in their work ideas that they thought
+were impractical ivory-tower notions as students.  The invention of the
+MapReduce software for data parallelism at Google, based on functional
+programming ideas, has helped eliminate that ivory-tower reputation.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/simplemap.png b/js/games/nluqo.github.io/~bh/simplemap.png
new file mode 100644
index 0000000..baf738c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/simplemap.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/simply-toc b/js/games/nluqo.github.io/~bh/simply-toc
new file mode 100644
index 0000000..f8af9e9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/simply-toc
@@ -0,0 +1,449 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme contents</TITLE>
+<link rel="shortcut icon" href="http://www.cs.berkeley.edu/~bh/simply.png" type="image/png">
+</HEAD>
+<BODY>
+<H1><CITE>Simply Scheme:<BR>Introducing Computer Science</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE>
+
+<P><TABLE><TR><TD><A HREF="ss/foreword.html"><H3>Foreword</H3></A>
+<TD>by Hal Abelson</TABLE>
+
+<H3><A HREF="https://people.eecs.berkeley.edu/~bh/ss/preface">Preface</A></H3>
+<UL>
+<LI>One Big Idea: Symbolic Programming
+<LI>Lisp and Radical Computer Science
+<LI>Who Should Read This Book
+<LI>How to Read This Book
+</UL>
+
+<H3><A HREF="ss/instructor.html">To the Instructor</A></H3>
+<UL>
+<LI>Lists and Sentences
+<LI>Sentences and Words
+<LI>Overloading in the Text Abstraction
+<LI>Higher-Order Procedures, Lambda, and Recursion
+<LI>Mutators and Environments
+</UL>
+
+<H3><A HREF="ss/ack.html">Acknowledgments</A></H3>
+
+<P><EM>(Note: The links on the Part headings below point to the
+introductions to the major parts of the book, each introducing one
+"big idea."  Each introduction is about a page of text.)</EM>
+
+<A HREF="part1.html"><H2>Part I. Introduction: Functions</H2></A>
+
+<H3>1. Showing Off Scheme</H3>
+<UL>
+<LI>Talking to Scheme
+<LI>Recovering from Typing Errors
+<LI>Exiting Scheme
+<LI>More Examples
+<LI>Example: Acronyms
+<LI>Example: Pig Latin
+<LI>Example: Ice Cream Choices
+<LI>Example: Combinations from a Set
+<LI>Example: Factorial
+<LI>Play with the Procedures
+</UL>
+
+<H3>2. Functions</H3>
+<UL>
+<LI>Arithmetic
+<LI>Words
+<LI>Domain and Range
+<LI>More Types: Sentences and Booleans
+<LI>Our Favorite Type: Functions
+<LI>Play with It
+<LI>Thinking about What You've Done
+</UL>
+
+<A HREF="part2.html"><H2>Part II. Composition of Functions</H2></A>
+
+<H3>3. Expressions</H3>
+<UL>
+<LI>Little People
+<LI>Result Replacement
+<LI>Plumbing Diagrams
+<LI>Pitfalls
+</UL>
+
+<H3>4. Defining Your Own Procedures</H3>
+<UL>
+<LI>How to Define a Procedure
+<LI>Special Forms
+<LI>Functions and Procedures
+<LI>Argument Names versus Argument Values
+<LI>Procedure as Generalization
+<LI>Composability
+<LI>The Substitution Model
+<LI>Pitfalls
+</UL>
+
+<H3>5. Words and Sentences</H3>
+<UL>
+<LI>Selectors
+<LI>Constructors
+<LI>First-Class Words and Sentences
+<LI>Pitfalls
+</UL>
+
+<H3>6. True and False</H3>
+<UL>
+<LI>Predicates
+<LI>Using Predicates
+<LI><CODE>If</CODE> Is a Special Form
+<LI>So Are <CODE>And</CODE> and <CODE>Or</CODE>
+<LI>Everything That Isn't False Is True
+<LI>Decisions, Decisions, Decisions
+<LI><CODE>If</CODE> Is Composable
+<LI>Pitfalls
+</UL>
+
+<H3>7. Variables</H3>
+<UL>
+<LI>How Little People Do Variables
+<LI>Global and Local Variables
+<LI>The Truth about Substitution
+<LI><CODE>Let</CODE>
+<LI>Pitfalls
+</UL>
+
+<A HREF="part3.html"><H2>Part III. Functions as Data</H2></A>
+
+<H3>8. Higher-Order Functions</H3>
+<UL>
+<LI><CODE>Every</CODE>
+<LI>A Pause for Reflection
+<LI><CODE>Keep</CODE>
+<LI><CODE>Accumulate</CODE>
+<LI>Combining Higher-Order Functions
+<LI>Choosing the Right Tool
+<LI>First-Class Functions and First-Class Sentences
+<LI><CODE>Repeated</CODE>
+<LI>Pitfalls
+</UL>
+
+<H3>9. Lambda</H3>
+<UL>
+<LI>Procedures That Return Procedures
+<LI>The Truth about <CODE>Define</CODE>
+<LI>The Truth about <CODE>Let</CODE>
+<LI>Name Conflicts
+<LI>Named and Unnamed Functions
+<LI>Pitfalls
+</UL>
+
+<H3>Project: Scoring Bridge Hands</H3>
+
+<H3>10. Example: Tic-Tac-Toe</H3>
+<UL>
+<LI>A Warning
+<LI>Technical Terms in Tic-Tac-Toe
+<LI>Thinking about the Program Structure
+<LI>The First Step: Triples
+<LI>Finding the Triples
+<LI>Using <CODE>Every</CODE> with Two-Argument Procedures
+<LI>Can the Computer Win on This Move?
+<LI>If So, in Which Square?
+<LI>Second Verse, Same as the First
+<LI>Now the Strategy Gets Complicated
+<LI>Finding the Pivots
+<LI>Taking the Offensive
+<LI>Leftovers
+<LI>Complete Program Listing
+</UL>
+
+<A HREF="https://people.eecs.berkeley.edu/~bh/part4.html"><H2>Part IV. Recursion</H2></A>
+
+<H3>11. Introduction to Recursion</H3>
+<UL>
+<LI>A Separate Procedure for Each Length
+<LI>Use What You Have to Get What You Need
+<LI>Notice That They're All the Same
+<LI>Notice That They're Almost All the Same
+<LI>Base Cases and Recursive Calls
+<LI>Pig Latin
+<LI>Problems for You to Try
+<LI>Our Solutions
+<LI>Pitfalls
+</UL>
+
+<H3>12. The Leap of Faith</H3>
+<UL>
+<LI>From the Combining Method to the Leap of Faith
+<LI>Example: <CODE>Reverse</CODE>
+<LI>The Leap of Faith
+<LI>The Base Case
+<LI>Example: <CODE>Factorial</CODE>
+<LI>Likely Guesses for Smaller Subproblems
+<LI>Example: <CODE>Downup</CODE>
+<LI>Example: <CODE>Evens</CODE>
+<LI>Simplifying Base Cases
+<LI>Pitfalls
+</UL>
+
+<H3>13. How Recursion Works</H3>
+<UL>
+<LI>Little People and Recursion
+<LI>Tracing
+<LI>Pitfalls
+</UL>
+
+<H3>14. Common Patterns in Recursive Procedures</H3>
+<UL>
+<LI>The <CODE>Every</CODE> Pattern
+<LI>The <CODE>Keep</CODE> Pattern
+<LI>The <CODE>Accumulate</CODE> Pattern
+<LI>Combining Patterns
+<LI>Helper Procedures
+<LI>How to Use Recursive Patterns
+<LI>Problems That Don't Follow Patterns
+<LI>Pitfalls
+</UL>
+
+<H3>Project: Spelling Names of Huge Numbers</H3>
+
+<H3>15. Advanced Recursion</H3>
+<UL>
+<LI>Example: <CODE>Sort</CODE>
+<LI>Example: <CODE>From-Binary</CODE>
+<LI>Example: <CODE>Mergesort</CODE>
+<LI>Example: <CODE>Subsets</CODE>
+<LI>Pitfalls
+</UL>
+
+<H3>Project: Scoring Poker Hands</H3>
+<UL>
+<LI>Extra Work for Hotshots
+</UL>
+
+<H3>16. Example: Pattern Matcher</H3>
+<UL>
+<LI>Problem Description
+<LI>Implementation: When Are Two Sentences Equal?
+<LI>When Are Two Sentences Nearly Equal?
+<LI>Matching with Alternatives
+<LI>Backtracking
+<LI>Matching Several Words
+<LI>Combining the Placeholders
+<LI>Naming the Matched Text
+<LI>The Final Version
+<LI>Abstract Data Types
+<LI>Backtracking and <CODE>Known-Values</CODE>
+<LI>How We Wrote It
+<LI>Complete Program Listing
+</UL>
+
+<A HREF="part5.html"><H2>Part V. Abstraction</H2></A>
+
+<H3>17. Lists</H3>
+<UL>
+<LI>Selectors and Constructors
+<LI>Programming with Lists
+<LI>The Truth about Sentences
+<LI>Higher-Order Functions
+<LI>Other Primitives for Lists
+<LI>Association Lists
+<LI>Functions That Take Variable Numbers of Arguments
+<LI>Recursion on Arbitrary Structured Lists
+<LI>Pitfalls
+</UL>
+
+<H3>18. Trees</H3>
+<UL>
+<LI>Example: The World
+<LI>How Big Is My Tree?
+<LI>Mutual Recursion
+<LI>Searching for a Datum in the Tree
+<LI>Locating a Datum in the Tree
+<LI>Representing Trees as Lists
+<LI>Abstract Data Types
+<LI>An Advanced Example: Parsing Arithmetic Expressions
+<LI>Pitfalls
+</UL>
+
+<H3>19. Implementing Higher-Order Functions</H3>
+<UL>
+<LI>Generalizing Patterns
+<LI>The <CODE>Every</CODE> Pattern Revisited
+<LI>The Difference between <CODE>Map</CODE> and <CODE>Every</CODE>
+<LI><CODE>Filter</CODE>
+<LI><CODE>Accumulate</CODE> and <CODE>Reduce</CODE>
+<LI>Robustness
+<LI>Higher-Order Functions for Structured Lists
+<LI>The Zero-Trip Do Loop
+<LI>Pitfalls
+</UL>
+
+<A HREF="part6.html"><H2>Part VI. Sequential Programming</H2></A>
+
+<H3>20. Input and Output</H3>
+<UL>
+<LI>Printing
+<LI>Side Effects and Sequencing
+<LI>The <CODE>Begin</CODE> Special Form
+<LI>This Isn't Functional Programming
+<LI>Not Moving to the Next Line
+<LI>Strings
+<LI>A Higher-Order Procedure for Sequencing
+<LI>Tic-Tac-Toe Revisited
+<LI>Accepting User Input
+<LI>Aesthetic Board Display
+<LI>Reading and Writing Normal Text
+<LI>Formatted Text
+<LI>Sequential Programming and Order of Evaluation
+<LI>Pitfalls
+</UL>
+
+<H3>21. Example: The <CODE>Functions</CODE> Program</H3>
+<UL>
+<LI>The Main Loop
+<LI>The Difference between a Procedure and Its Name
+<LI>The Association List of Functions
+<LI>Domain Checking
+<LI>Intentionally Confusing a Function with Its Name
+<LI>More on Higher-Order Functions
+<LI>More Robustness
+<LI>Complete Program Listing
+</UL>
+
+<H3>22. Files</H3>
+<UL>
+<LI>Ports
+<LI>Writing Files for People to Read
+<LI>Using a File as a Database
+<LI>Transforming the Lines of a File
+<LI>Justifying Text
+<LI>Preserving Spacing of Text from Files
+<LI>Merging Two Files
+<LI>Writing Files for Scheme to Read
+<LI>Pitfalls
+</UL>
+
+<H3>23. Vectors</H3>
+<UL>
+<LI>The Indy 500
+<LI>Vectors
+<LI>Using Vectors in Programs
+<LI>Non-Functional Procedures and State
+<LI>Shuffling a Deck
+<LI>More Vector Tools
+<LI>The Vector Pattern of Recursion
+<LI>Vectors versus Lists
+<LI>State, Sequence, and Effects
+<LI>Pitfalls
+</UL>
+
+<H3>24. Example: A Spreadsheet Program</H3>
+<UL>
+<LI>Limitations of Our Spreadsheet
+<LI>Spreadsheet Commands
+<LI>Moving the Selection
+<LI>Putting Values in Cells
+<LI>Formulas
+<LI>Displaying Formula Values
+<LI>Loading Spreadsheet Commands from a File
+<LI>Application Programs and Abstraction
+</UL>
+
+<H3>25. Implementing the Spreadsheet Program</H3>
+<UL>
+<LI>Cells, Cell Names, and Cell IDs
+<LI>The Command Processor
+<LI>Cell Selection Commands
+<LI>The <CODE>Load</CODE> Command
+<LI>The <CODE>Put</CODE> Command
+<LI>The Formula Translator
+<LI>The Dependency Manager
+<LI>The Expression Evaluator
+<LI>The Screen Printer
+<LI>The Cell Manager
+<LI>Complete Program Listing
+</UL>
+
+<H3>Project: A Database Program</H3>
+<UL>
+<LI>A Sample Session with Our Database
+<LI>How Databases Are Stored Internally
+<LI>The Current Database
+<LI>Implementing the Database Program Commands
+<LI>Additions to the Program
+<LI>Extra Work for Hotshots
+</UL>
+
+<A HREF="part7.html"><H2>Part VII. Conclusion: Computer Science</H2></A>
+
+<H3>26. What's Next?</H3>
+<UL>
+<LI>The Best Computer Science Book
+<LI>Beyond <CITE>SICP</CITE>
+<LI>Standard Scheme
+<LI>Last Words
+</UL>
+
+<H2>Appendices</H2>
+
+<H3>A. Running Scheme</H3>
+<UL>
+<LI>The Program Development Cycle
+<LI>Integrated Editing
+<LI>Getting Our Programs
+<LI>Tuning Our Programs for Your System
+<LI>Loading Our Programs
+<LI>Versions of Scheme
+<LI>Scheme Standards
+</UL>
+
+<H3>B. Common Lisp</H3>
+<UL>
+<LI>Why Common Lisp Exists
+<LI>Defining Procedures and Variables
+<LI>The Naming Convention for Predicates
+<LI>No Words or Sentences
+<LI>True and False
+<LI>Files
+<LI>Arrays
+<LI>Equivalents to Scheme Primitives
+<LI>A Separate Name Space for Procedures
+<LI><CODE>Lambda</CODE>
+<LI>More about <CODE>Function</CODE>
+<LI>Writing Higher-Order Procedures
+</UL>
+
+<H3>C. Scheme Initialization File</H3>
+
+<H3>D. GNU General Public License</H3>
+<H3>Credits</H3>
+<H3>Alphabetical Table of Scheme Primitives</H3>
+<H3>Glossary</H3>
+<H3>Index of Defined Procedures</H3>
+<H3>General Index</H3>
+
+<P>
+<A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+<BR>
+<ADDRESS>
+<A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew Wright</A>,
+<CODE>matt@cnmat.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/simply-toc.html b/js/games/nluqo.github.io/~bh/simply-toc.html
new file mode 100644
index 0000000..f8af9e9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/simply-toc.html
@@ -0,0 +1,449 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme contents</TITLE>
+<link rel="shortcut icon" href="http://www.cs.berkeley.edu/~bh/simply.png" type="image/png">
+</HEAD>
+<BODY>
+<H1><CITE>Simply Scheme:<BR>Introducing Computer Science</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE>
+
+<P><TABLE><TR><TD><A HREF="ss/foreword.html"><H3>Foreword</H3></A>
+<TD>by Hal Abelson</TABLE>
+
+<H3><A HREF="https://people.eecs.berkeley.edu/~bh/ss/preface">Preface</A></H3>
+<UL>
+<LI>One Big Idea: Symbolic Programming
+<LI>Lisp and Radical Computer Science
+<LI>Who Should Read This Book
+<LI>How to Read This Book
+</UL>
+
+<H3><A HREF="ss/instructor.html">To the Instructor</A></H3>
+<UL>
+<LI>Lists and Sentences
+<LI>Sentences and Words
+<LI>Overloading in the Text Abstraction
+<LI>Higher-Order Procedures, Lambda, and Recursion
+<LI>Mutators and Environments
+</UL>
+
+<H3><A HREF="ss/ack.html">Acknowledgments</A></H3>
+
+<P><EM>(Note: The links on the Part headings below point to the
+introductions to the major parts of the book, each introducing one
+"big idea."  Each introduction is about a page of text.)</EM>
+
+<A HREF="part1.html"><H2>Part I. Introduction: Functions</H2></A>
+
+<H3>1. Showing Off Scheme</H3>
+<UL>
+<LI>Talking to Scheme
+<LI>Recovering from Typing Errors
+<LI>Exiting Scheme
+<LI>More Examples
+<LI>Example: Acronyms
+<LI>Example: Pig Latin
+<LI>Example: Ice Cream Choices
+<LI>Example: Combinations from a Set
+<LI>Example: Factorial
+<LI>Play with the Procedures
+</UL>
+
+<H3>2. Functions</H3>
+<UL>
+<LI>Arithmetic
+<LI>Words
+<LI>Domain and Range
+<LI>More Types: Sentences and Booleans
+<LI>Our Favorite Type: Functions
+<LI>Play with It
+<LI>Thinking about What You've Done
+</UL>
+
+<A HREF="part2.html"><H2>Part II. Composition of Functions</H2></A>
+
+<H3>3. Expressions</H3>
+<UL>
+<LI>Little People
+<LI>Result Replacement
+<LI>Plumbing Diagrams
+<LI>Pitfalls
+</UL>
+
+<H3>4. Defining Your Own Procedures</H3>
+<UL>
+<LI>How to Define a Procedure
+<LI>Special Forms
+<LI>Functions and Procedures
+<LI>Argument Names versus Argument Values
+<LI>Procedure as Generalization
+<LI>Composability
+<LI>The Substitution Model
+<LI>Pitfalls
+</UL>
+
+<H3>5. Words and Sentences</H3>
+<UL>
+<LI>Selectors
+<LI>Constructors
+<LI>First-Class Words and Sentences
+<LI>Pitfalls
+</UL>
+
+<H3>6. True and False</H3>
+<UL>
+<LI>Predicates
+<LI>Using Predicates
+<LI><CODE>If</CODE> Is a Special Form
+<LI>So Are <CODE>And</CODE> and <CODE>Or</CODE>
+<LI>Everything That Isn't False Is True
+<LI>Decisions, Decisions, Decisions
+<LI><CODE>If</CODE> Is Composable
+<LI>Pitfalls
+</UL>
+
+<H3>7. Variables</H3>
+<UL>
+<LI>How Little People Do Variables
+<LI>Global and Local Variables
+<LI>The Truth about Substitution
+<LI><CODE>Let</CODE>
+<LI>Pitfalls
+</UL>
+
+<A HREF="part3.html"><H2>Part III. Functions as Data</H2></A>
+
+<H3>8. Higher-Order Functions</H3>
+<UL>
+<LI><CODE>Every</CODE>
+<LI>A Pause for Reflection
+<LI><CODE>Keep</CODE>
+<LI><CODE>Accumulate</CODE>
+<LI>Combining Higher-Order Functions
+<LI>Choosing the Right Tool
+<LI>First-Class Functions and First-Class Sentences
+<LI><CODE>Repeated</CODE>
+<LI>Pitfalls
+</UL>
+
+<H3>9. Lambda</H3>
+<UL>
+<LI>Procedures That Return Procedures
+<LI>The Truth about <CODE>Define</CODE>
+<LI>The Truth about <CODE>Let</CODE>
+<LI>Name Conflicts
+<LI>Named and Unnamed Functions
+<LI>Pitfalls
+</UL>
+
+<H3>Project: Scoring Bridge Hands</H3>
+
+<H3>10. Example: Tic-Tac-Toe</H3>
+<UL>
+<LI>A Warning
+<LI>Technical Terms in Tic-Tac-Toe
+<LI>Thinking about the Program Structure
+<LI>The First Step: Triples
+<LI>Finding the Triples
+<LI>Using <CODE>Every</CODE> with Two-Argument Procedures
+<LI>Can the Computer Win on This Move?
+<LI>If So, in Which Square?
+<LI>Second Verse, Same as the First
+<LI>Now the Strategy Gets Complicated
+<LI>Finding the Pivots
+<LI>Taking the Offensive
+<LI>Leftovers
+<LI>Complete Program Listing
+</UL>
+
+<A HREF="https://people.eecs.berkeley.edu/~bh/part4.html"><H2>Part IV. Recursion</H2></A>
+
+<H3>11. Introduction to Recursion</H3>
+<UL>
+<LI>A Separate Procedure for Each Length
+<LI>Use What You Have to Get What You Need
+<LI>Notice That They're All the Same
+<LI>Notice That They're Almost All the Same
+<LI>Base Cases and Recursive Calls
+<LI>Pig Latin
+<LI>Problems for You to Try
+<LI>Our Solutions
+<LI>Pitfalls
+</UL>
+
+<H3>12. The Leap of Faith</H3>
+<UL>
+<LI>From the Combining Method to the Leap of Faith
+<LI>Example: <CODE>Reverse</CODE>
+<LI>The Leap of Faith
+<LI>The Base Case
+<LI>Example: <CODE>Factorial</CODE>
+<LI>Likely Guesses for Smaller Subproblems
+<LI>Example: <CODE>Downup</CODE>
+<LI>Example: <CODE>Evens</CODE>
+<LI>Simplifying Base Cases
+<LI>Pitfalls
+</UL>
+
+<H3>13. How Recursion Works</H3>
+<UL>
+<LI>Little People and Recursion
+<LI>Tracing
+<LI>Pitfalls
+</UL>
+
+<H3>14. Common Patterns in Recursive Procedures</H3>
+<UL>
+<LI>The <CODE>Every</CODE> Pattern
+<LI>The <CODE>Keep</CODE> Pattern
+<LI>The <CODE>Accumulate</CODE> Pattern
+<LI>Combining Patterns
+<LI>Helper Procedures
+<LI>How to Use Recursive Patterns
+<LI>Problems That Don't Follow Patterns
+<LI>Pitfalls
+</UL>
+
+<H3>Project: Spelling Names of Huge Numbers</H3>
+
+<H3>15. Advanced Recursion</H3>
+<UL>
+<LI>Example: <CODE>Sort</CODE>
+<LI>Example: <CODE>From-Binary</CODE>
+<LI>Example: <CODE>Mergesort</CODE>
+<LI>Example: <CODE>Subsets</CODE>
+<LI>Pitfalls
+</UL>
+
+<H3>Project: Scoring Poker Hands</H3>
+<UL>
+<LI>Extra Work for Hotshots
+</UL>
+
+<H3>16. Example: Pattern Matcher</H3>
+<UL>
+<LI>Problem Description
+<LI>Implementation: When Are Two Sentences Equal?
+<LI>When Are Two Sentences Nearly Equal?
+<LI>Matching with Alternatives
+<LI>Backtracking
+<LI>Matching Several Words
+<LI>Combining the Placeholders
+<LI>Naming the Matched Text
+<LI>The Final Version
+<LI>Abstract Data Types
+<LI>Backtracking and <CODE>Known-Values</CODE>
+<LI>How We Wrote It
+<LI>Complete Program Listing
+</UL>
+
+<A HREF="part5.html"><H2>Part V. Abstraction</H2></A>
+
+<H3>17. Lists</H3>
+<UL>
+<LI>Selectors and Constructors
+<LI>Programming with Lists
+<LI>The Truth about Sentences
+<LI>Higher-Order Functions
+<LI>Other Primitives for Lists
+<LI>Association Lists
+<LI>Functions That Take Variable Numbers of Arguments
+<LI>Recursion on Arbitrary Structured Lists
+<LI>Pitfalls
+</UL>
+
+<H3>18. Trees</H3>
+<UL>
+<LI>Example: The World
+<LI>How Big Is My Tree?
+<LI>Mutual Recursion
+<LI>Searching for a Datum in the Tree
+<LI>Locating a Datum in the Tree
+<LI>Representing Trees as Lists
+<LI>Abstract Data Types
+<LI>An Advanced Example: Parsing Arithmetic Expressions
+<LI>Pitfalls
+</UL>
+
+<H3>19. Implementing Higher-Order Functions</H3>
+<UL>
+<LI>Generalizing Patterns
+<LI>The <CODE>Every</CODE> Pattern Revisited
+<LI>The Difference between <CODE>Map</CODE> and <CODE>Every</CODE>
+<LI><CODE>Filter</CODE>
+<LI><CODE>Accumulate</CODE> and <CODE>Reduce</CODE>
+<LI>Robustness
+<LI>Higher-Order Functions for Structured Lists
+<LI>The Zero-Trip Do Loop
+<LI>Pitfalls
+</UL>
+
+<A HREF="part6.html"><H2>Part VI. Sequential Programming</H2></A>
+
+<H3>20. Input and Output</H3>
+<UL>
+<LI>Printing
+<LI>Side Effects and Sequencing
+<LI>The <CODE>Begin</CODE> Special Form
+<LI>This Isn't Functional Programming
+<LI>Not Moving to the Next Line
+<LI>Strings
+<LI>A Higher-Order Procedure for Sequencing
+<LI>Tic-Tac-Toe Revisited
+<LI>Accepting User Input
+<LI>Aesthetic Board Display
+<LI>Reading and Writing Normal Text
+<LI>Formatted Text
+<LI>Sequential Programming and Order of Evaluation
+<LI>Pitfalls
+</UL>
+
+<H3>21. Example: The <CODE>Functions</CODE> Program</H3>
+<UL>
+<LI>The Main Loop
+<LI>The Difference between a Procedure and Its Name
+<LI>The Association List of Functions
+<LI>Domain Checking
+<LI>Intentionally Confusing a Function with Its Name
+<LI>More on Higher-Order Functions
+<LI>More Robustness
+<LI>Complete Program Listing
+</UL>
+
+<H3>22. Files</H3>
+<UL>
+<LI>Ports
+<LI>Writing Files for People to Read
+<LI>Using a File as a Database
+<LI>Transforming the Lines of a File
+<LI>Justifying Text
+<LI>Preserving Spacing of Text from Files
+<LI>Merging Two Files
+<LI>Writing Files for Scheme to Read
+<LI>Pitfalls
+</UL>
+
+<H3>23. Vectors</H3>
+<UL>
+<LI>The Indy 500
+<LI>Vectors
+<LI>Using Vectors in Programs
+<LI>Non-Functional Procedures and State
+<LI>Shuffling a Deck
+<LI>More Vector Tools
+<LI>The Vector Pattern of Recursion
+<LI>Vectors versus Lists
+<LI>State, Sequence, and Effects
+<LI>Pitfalls
+</UL>
+
+<H3>24. Example: A Spreadsheet Program</H3>
+<UL>
+<LI>Limitations of Our Spreadsheet
+<LI>Spreadsheet Commands
+<LI>Moving the Selection
+<LI>Putting Values in Cells
+<LI>Formulas
+<LI>Displaying Formula Values
+<LI>Loading Spreadsheet Commands from a File
+<LI>Application Programs and Abstraction
+</UL>
+
+<H3>25. Implementing the Spreadsheet Program</H3>
+<UL>
+<LI>Cells, Cell Names, and Cell IDs
+<LI>The Command Processor
+<LI>Cell Selection Commands
+<LI>The <CODE>Load</CODE> Command
+<LI>The <CODE>Put</CODE> Command
+<LI>The Formula Translator
+<LI>The Dependency Manager
+<LI>The Expression Evaluator
+<LI>The Screen Printer
+<LI>The Cell Manager
+<LI>Complete Program Listing
+</UL>
+
+<H3>Project: A Database Program</H3>
+<UL>
+<LI>A Sample Session with Our Database
+<LI>How Databases Are Stored Internally
+<LI>The Current Database
+<LI>Implementing the Database Program Commands
+<LI>Additions to the Program
+<LI>Extra Work for Hotshots
+</UL>
+
+<A HREF="part7.html"><H2>Part VII. Conclusion: Computer Science</H2></A>
+
+<H3>26. What's Next?</H3>
+<UL>
+<LI>The Best Computer Science Book
+<LI>Beyond <CITE>SICP</CITE>
+<LI>Standard Scheme
+<LI>Last Words
+</UL>
+
+<H2>Appendices</H2>
+
+<H3>A. Running Scheme</H3>
+<UL>
+<LI>The Program Development Cycle
+<LI>Integrated Editing
+<LI>Getting Our Programs
+<LI>Tuning Our Programs for Your System
+<LI>Loading Our Programs
+<LI>Versions of Scheme
+<LI>Scheme Standards
+</UL>
+
+<H3>B. Common Lisp</H3>
+<UL>
+<LI>Why Common Lisp Exists
+<LI>Defining Procedures and Variables
+<LI>The Naming Convention for Predicates
+<LI>No Words or Sentences
+<LI>True and False
+<LI>Files
+<LI>Arrays
+<LI>Equivalents to Scheme Primitives
+<LI>A Separate Name Space for Procedures
+<LI><CODE>Lambda</CODE>
+<LI>More about <CODE>Function</CODE>
+<LI>Writing Higher-Order Procedures
+</UL>
+
+<H3>C. Scheme Initialization File</H3>
+
+<H3>D. GNU General Public License</H3>
+<H3>Credits</H3>
+<H3>Alphabetical Table of Scheme Primitives</H3>
+<H3>Glossary</H3>
+<H3>Index of Defined Procedures</H3>
+<H3>General Index</H3>
+
+<P>
+<A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+<BR>
+<ADDRESS>
+<A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew Wright</A>,
+<CODE>matt@cnmat.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/simply.jpg b/js/games/nluqo.github.io/~bh/simply.jpg
new file mode 100644
index 0000000..d3566a2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/simply.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/snap/baby3.pdf b/js/games/nluqo.github.io/~bh/snap/baby3.pdf
new file mode 100644
index 0000000..3a666b9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/snap/baby3.pdf
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/accountant.jpg b/js/games/nluqo.github.io/~bh/ss-pics/accountant.jpg
new file mode 100644
index 0000000..4a80d61
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/accountant.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/accumulate.jpg b/js/games/nluqo.github.io/~bh/ss-pics/accumulate.jpg
new file mode 100644
index 0000000..9242cd6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/accumulate.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/alonzo.jpg b/js/games/nluqo.github.io/~bh/ss-pics/alonzo.jpg
new file mode 100644
index 0000000..4359922
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/alonzo.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/annotated.jpg b/js/games/nluqo.github.io/~bh/ss-pics/annotated.jpg
new file mode 100644
index 0000000..f539a71
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/annotated.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/append.jpg b/js/games/nluqo.github.io/~bh/ss-pics/append.jpg
new file mode 100644
index 0000000..e45a788
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/append.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/britain.jpg b/js/games/nluqo.github.io/~bh/ss-pics/britain.jpg
new file mode 100644
index 0000000..fc9599c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/britain.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/bucket.jpg b/js/games/nluqo.github.io/~bh/ss-pics/bucket.jpg
new file mode 100644
index 0000000..0a04c92
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/bucket.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/cons.jpg b/js/games/nluqo.github.io/~bh/ss-pics/cons.jpg
new file mode 100644
index 0000000..06158c5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/cons.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/curvedarrow.jpg b/js/games/nluqo.github.io/~bh/ss-pics/curvedarrow.jpg
new file mode 100644
index 0000000..13483be
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/curvedarrow.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/dataflow.jpg b/js/games/nluqo.github.io/~bh/ss-pics/dataflow.jpg
new file mode 100644
index 0000000..099e4d5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/dataflow.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/definition.jpg b/js/games/nluqo.github.io/~bh/ss-pics/definition.jpg
new file mode 100644
index 0000000..0936225
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/definition.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/elves.jpg b/js/games/nluqo.github.io/~bh/ss-pics/elves.jpg
new file mode 100644
index 0000000..2ea708b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/elves.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/every.jpg b/js/games/nluqo.github.io/~bh/ss-pics/every.jpg
new file mode 100644
index 0000000..61c2be7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/every.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/farside.jpg b/js/games/nluqo.github.io/~bh/ss-pics/farside.jpg
new file mode 100644
index 0000000..16aee6c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/farside.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/files.jpg b/js/games/nluqo.github.io/~bh/ss-pics/files.jpg
new file mode 100644
index 0000000..b6fb1aa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/files.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/firsttree.jpg b/js/games/nluqo.github.io/~bh/ss-pics/firsttree.jpg
new file mode 100644
index 0000000..56480a2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/firsttree.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/fish.jpg b/js/games/nluqo.github.io/~bh/ss-pics/fish.jpg
new file mode 100644
index 0000000..ebe90aa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/fish.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/fourplus.jpg b/js/games/nluqo.github.io/~bh/ss-pics/fourplus.jpg
new file mode 100644
index 0000000..9ac494c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/fourplus.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/fractal.jpg b/js/games/nluqo.github.io/~bh/ss-pics/fractal.jpg
new file mode 100644
index 0000000..83d2ffa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/fractal.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/function.jpg b/js/games/nluqo.github.io/~bh/ss-pics/function.jpg
new file mode 100644
index 0000000..9419abb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/function.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/gallery.jpg b/js/games/nluqo.github.io/~bh/ss-pics/gallery.jpg
new file mode 100644
index 0000000..0af95b2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/gallery.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/hands.jpg b/js/games/nluqo.github.io/~bh/ss-pics/hands.jpg
new file mode 100644
index 0000000..e99cf08
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/hands.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/hare.jpg b/js/games/nluqo.github.io/~bh/ss-pics/hare.jpg
new file mode 100644
index 0000000..1d4c803
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/hare.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/hortense.jpg b/js/games/nluqo.github.io/~bh/ss-pics/hortense.jpg
new file mode 100644
index 0000000..9af5b97
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/hortense.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/io.jpg b/js/games/nluqo.github.io/~bh/ss-pics/io.jpg
new file mode 100644
index 0000000..193673c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/io.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/keep.jpg b/js/games/nluqo.github.io/~bh/ss-pics/keep.jpg
new file mode 100644
index 0000000..df70770
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/keep.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/list.jpg b/js/games/nluqo.github.io/~bh/ss-pics/list.jpg
new file mode 100644
index 0000000..e17be28
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/list.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/lockers.jpg b/js/games/nluqo.github.io/~bh/ss-pics/lockers.jpg
new file mode 100644
index 0000000..802d28f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/lockers.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/mirrors.jpg b/js/games/nluqo.github.io/~bh/ss-pics/mirrors.jpg
new file mode 100644
index 0000000..50eac71
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/mirrors.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/mondrian.jpg b/js/games/nluqo.github.io/~bh/ss-pics/mondrian.jpg
new file mode 100644
index 0000000..c371b7d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/mondrian.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/oz.jpg b/js/games/nluqo.github.io/~bh/ss-pics/oz.jpg
new file mode 100644
index 0000000..f3e8b26
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/oz.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse0.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse0.jpg
new file mode 100644
index 0000000..618ca43
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse0.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse1.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse1.jpg
new file mode 100644
index 0000000..38f1037
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse2.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse2.jpg
new file mode 100644
index 0000000..9ea47a8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse3.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse3.jpg
new file mode 100644
index 0000000..16b681d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse3.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse4.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse4.jpg
new file mode 100644
index 0000000..f7a2271
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse4.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse5.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse5.jpg
new file mode 100644
index 0000000..0382391
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse5.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse6.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse6.jpg
new file mode 100644
index 0000000..7483d51
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse6.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse7.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse7.jpg
new file mode 100644
index 0000000..e78d844
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse7.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/parse8.jpg b/js/games/nluqo.github.io/~bh/ss-pics/parse8.jpg
new file mode 100644
index 0000000..5588e5d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/parse8.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/patterns.jpg b/js/games/nluqo.github.io/~bh/ss-pics/patterns.jpg
new file mode 100644
index 0000000..fa4fb5a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/patterns.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/pig.jpg b/js/games/nluqo.github.io/~bh/ss-pics/pig.jpg
new file mode 100644
index 0000000..b952f95
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/pig.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/plot3d.jpg b/js/games/nluqo.github.io/~bh/ss-pics/plot3d.jpg
new file mode 100644
index 0000000..b4e60b5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/plot3d.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/plowshare.jpg b/js/games/nluqo.github.io/~bh/ss-pics/plowshare.jpg
new file mode 100644
index 0000000..4ebfb64
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/plowshare.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/plugboard.jpg b/js/games/nluqo.github.io/~bh/ss-pics/plugboard.jpg
new file mode 100644
index 0000000..8681ab6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/plugboard.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/plumbing.jpg b/js/games/nluqo.github.io/~bh/ss-pics/plumbing.jpg
new file mode 100644
index 0000000..2c12470
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/plumbing.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/polly.jpg b/js/games/nluqo.github.io/~bh/ss-pics/polly.jpg
new file mode 100644
index 0000000..8ddc197
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/polly.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/santa.jpg b/js/games/nluqo.github.io/~bh/ss-pics/santa.jpg
new file mode 100644
index 0000000..c342759
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/santa.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/sicp.jpg b/js/games/nluqo.github.io/~bh/ss-pics/sicp.jpg
new file mode 100644
index 0000000..e4c7c51
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/sicp.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/spread.jpg b/js/games/nluqo.github.io/~bh/ss-pics/spread.jpg
new file mode 100644
index 0000000..2eee7d2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/spread.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/srini.jpg b/js/games/nluqo.github.io/~bh/ss-pics/srini.jpg
new file mode 100644
index 0000000..f554bf7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/srini.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/tinker.jpg b/js/games/nluqo.github.io/~bh/ss-pics/tinker.jpg
new file mode 100644
index 0000000..bb56087
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/tinker.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/tree.jpg b/js/games/nluqo.github.io/~bh/ss-pics/tree.jpg
new file mode 100644
index 0000000..0cf2d82
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/tree.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/trombone.jpg b/js/games/nluqo.github.io/~bh/ss-pics/trombone.jpg
new file mode 100644
index 0000000..d855ec4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/trombone.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/tweedle.jpg b/js/games/nluqo.github.io/~bh/ss-pics/tweedle.jpg
new file mode 100644
index 0000000..5f710cc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/tweedle.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/uparrow.jpg b/js/games/nluqo.github.io/~bh/ss-pics/uparrow.jpg
new file mode 100644
index 0000000..f2fa5c4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/uparrow.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-pics/world.jpg b/js/games/nluqo.github.io/~bh/ss-pics/world.jpg
new file mode 100644
index 0000000..0702364
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-pics/world.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ss-toc2.html b/js/games/nluqo.github.io/~bh/ss-toc2.html
new file mode 100644
index 0000000..b0b0917
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss-toc2.html
@@ -0,0 +1,708 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science</TITLE>
+</HEAD>
+<BODY>
+<H1><EM>Simply Scheme: Introducing Computer Science</EM></H1>
+<H3>2/e Copyright (C) 1999 MIT</H3>
+<H1>Table of Contents</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>Stanford University</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="pdf/ssch00.pdf">Download PDF frontmatter</A>
+<TR><TD align="right">[no back]
+chapter thread <A HREF="ssch0/foreword.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Below this short table of contents is an expanded table of contents
+including sections within each chapter.  Click on the chapter name
+to jump down.  You can also download the complete text of each chapter
+in PDF format for elegant printing, or browse the HTML version.
+
+Part introductions are included in the PDF of the following chapter.
+Projects are included in the PDF of the preceding chapter.
+
+<P><EM>Note:  This book is still in copyright, and in print.  It is
+posted here for your personal use, not for resale or redistribution.
+Thanks!</EM>
+
+<UL>
+<LI><A HREF="ss-toc2.html#foreword">Foreword</A> by
+<A HREF="http://groups.csail.mit.edu/mac/users/hal/hal.html">Hal Abelson</A>
+(<A HREF="pdf/ssch00.pdf">frontmatter in PDF</A>)
+(<A HREF="ssch0/foreword.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#preface">Preface</A>
+(<A HREF="ssch0/preface.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#instructor">To the Instructor</A>
+(<A HREF="ssch0/instructor.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#ack">Acknowledgements</A>
+(<A HREF="ssch0/ack.html">HTML</A>)
+<LI>I. <A HREF="ss-toc2.html#part1">Introduction: Functions</A>
+(<A HREF="ssch1/part1.html">HTML</A>)
+<UL>
+<LI>1. <A HREF="ss-toc2.html#showing">Showing Off Scheme</A>
+(<A HREF="pdf/ssch01.pdf">PDF</A>)
+(<A HREF="ssch1/showing.html">HTML</A>)
+<LI>2. <A HREF="ss-toc2.html#functions">Functions</A>
+(<A HREF="pdf/ssch02.pdf">PDF</A>)
+(<A HREF="ssch2/functions.html">HTML</A>)
+</UL>
+<LI>II. <A HREF="ss-toc2.html#part2">Composition of Functions</A>
+(<A HREF="ssch3/part2.html">HTML</A>)
+<UL>
+<LI>3. <A HREF="ss-toc2.html#people">Expressions</A>
+(<A HREF="pdf/ssch03.pdf">PDF</A>)
+(<A HREF="ssch3/people.html">HTML</A>)
+<LI>4. <A HREF="ss-toc2.html#defining">Defining Your Own Procedures</A>
+(<A HREF="pdf/ssch04.pdf">PDF</A>)
+(<A HREF="ssch4/defining.html">HTML</A>)
+<LI>5. <A HREF="ss-toc2.html#words">Words and Sentences</A>
+(<A HREF="pdf/ssch05.pdf">PDF</A>)
+(<A HREF="ssch5/words.html">HTML</A>)
+<LI>6. <A HREF="ss-toc2.html#true">True and False</A>
+(<A HREF="pdf/ssch06.pdf">PDF</A>)
+(<A HREF="ssch6/true.html">HTML</A>)
+<LI>7. <A HREF="ss-toc2.html#variables">Variables</A>
+(<A HREF="pdf/ssch07.pdf">PDF</A>)
+(<A HREF="ssch7/variables.html">HTML</A>)
+</UL>
+<LI>III. <A HREF="ss-toc2.html#part3">Functions as Data</A>
+(<A HREF="ssch8/part3.html">HTML</A>)
+<UL>
+<LI>8. <A HREF="ss-toc2.html#higher">Higher-Order Functions</A>
+(<A HREF="pdf/ssch08.pdf">PDF</A>)
+(<A HREF="ssch8/higher.html">HTML</A>)
+<LI>9. <A HREF="ss-toc2.html#lambda">Lambda</A>
+(<A HREF="pdf/ssch09.pdf">PDF</A>)
+(<A HREF="ssch9/lambda.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#bridge">Project: Scoring Bridge Hands</A>
+(<A HREF="ssch9/bridge.html">HTML</A>)
+<LI>10. <A HREF="ss-toc2.html#ttt">Example: Tic-Tac-Toe</A>
+(<A HREF="pdf/ssch10.pdf">PDF</A>)
+(<A HREF="ssch10/ttt.html">HTML</A>)
+</UL>
+<LI>IV. <A HREF="ss-toc2.html#part4">Recursion</A>
+(<A HREF="ssch11/part4.html">HTML</A>)
+<UL>
+<LI>11. <A HREF="ss-toc2.html#recursion">Introduction to Recursion</A>
+(<A HREF="pdf/ssch11.pdf">PDF</A>)
+(<A HREF="ssch11/recursion.html">HTML</A>)
+<LI>12. <A HREF="ss-toc2.html#leap">The Leap of Faith</A>
+(<A HREF="pdf/ssch12.pdf">PDF</A>)
+(<A HREF="ssch12/leap.html">HTML</A>)
+<LI>13. <A HREF="ss-toc2.html#convince-recur">How Recursion Works</A>
+(<A HREF="pdf/ssch13.pdf">PDF</A>)
+(<A HREF="ssch13/convince-recur.html">HTML</A>)
+<LI>14. <A HREF="ss-toc2.html#recur-patterns">Common Patterns in Recursive Procedures</A>
+(<A HREF="pdf/ssch14.pdf">PDF</A>)
+(<A HREF="ssch14/recur-patterns.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#number-name">Project: Spelling Names of Huge Numbers</A>
+(<A HREF="ssch14/number-name.html">HTML</A>)
+<LI>15. <A HREF="ss-toc2.html#adv-recur">Advanced Recursion</A>
+(<A HREF="pdf/ssch15.pdf">PDF</A>)
+(<A HREF="ssch15/adv-recur.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#poker">Project: Scoring Poker Hands</A>
+(<A HREF="ssch15/poker.html">HTML</A>)
+<LI>16. <A HREF="ss-toc2.html#match">Example: Pattern Matcher</A>
+(<A HREF="pdf/ssch16.pdf">PDF</A>)
+(<A HREF="ssch16/match.html">HTML</A>)
+</UL>
+<LI>V. <A HREF="ss-toc2.html#part5">Abstraction</A>
+(<A HREF="ssch17/part5.html">HTML</A>)
+<UL>
+<LI>17. <A HREF="ss-toc2.html#lists">Lists</A>
+(<A HREF="pdf/ssch17.pdf">PDF</A>)
+(<A HREF="ssch17/lists.html">HTML</A>)
+<LI>18. <A HREF="ss-toc2.html#trees">Trees</A>
+(<A HREF="pdf/ssch18.pdf">PDF</A>)
+(<A HREF="ssch18/trees.html">HTML</A>)
+<LI>19. <A HREF="ss-toc2.html#implement-hof">Implementing Higher-Order Functions</A>
+(<A HREF="pdf/ssch19.pdf">PDF</A>)
+(<A HREF="ssch19/implement-hof.html">HTML</A>)
+</UL>
+<LI>VI. <A HREF="ss-toc2.html#part6">Sequential Programming</A>
+(<A HREF="ssch20/part6.html">HTML</A>)
+<UL>
+<LI>20. <A HREF="ss-toc2.html#io">Input and Output</A>
+(<A HREF="pdf/ssch20.pdf">PDF</A>)
+(<A HREF="ssch20/io.html">HTML</A>)
+<LI>21. <A HREF="ss-toc2.html#functions-implement">Example: The <CODE>Functions</CODE> Program</A>
+(<A HREF="pdf/ssch21.pdf">PDF</A>)
+(<A HREF="ssch21/functions-implement.html">HTML</A>)
+<LI>22. <A HREF="ss-toc2.html#files">Files</A>
+(<A HREF="pdf/ssch22.pdf">PDF</A>)
+(<A HREF="ssch22/files.html">HTML</A>)
+<LI>23. <A HREF="ss-toc2.html#vectors">Vectors</A>
+(<A HREF="pdf/ssch23.pdf">PDF</A>)
+(<A HREF="ssch23/vectors.html">HTML</A>)
+<LI>24. <A HREF="ss-toc2.html#spread">Example: A Spreadsheet Program</A>
+(<A HREF="pdf/ssch24.pdf">PDF</A>)
+(<A HREF="ssch24/spread.html">HTML</A>)
+<LI>25. <A HREF="ss-toc2.html#spread-implement">Implementing the Spreadsheet Program</A>
+(<A HREF="pdf/ssch25.pdf">PDF</A>)
+(<A HREF="ssch25/spread-implement.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#database">Project: A Database Program</A>
+(<A HREF="ssch25/database.html">HTML</A>)
+</UL>
+<LI>VII. <A HREF="ss-toc2.html#part7">Conclusion: Computer Science</A>
+(<A HREF="ssch26/part7.html">HTML</A>)
+<UL>
+<LI>26. <A HREF="ss-toc2.html#preview">What's Next?</A>
+(<A HREF="pdf/ssch26.pdf">PDF</A>)
+(<A HREF="ssch26/preview.html">HTML</A>)
+</UL>
+<LI>Appendices
+<UL>
+<LI>A. <A HREF="ss-toc2.html#appendix-running">Running Scheme</A>
+(<A HREF="pdf/ssch27.pdf">backmatter in PDF</A>)
+(<A HREF="ssch27/appendix-running.html">HTML</A>)
+<LI>B. <A HREF="ss-toc2.html#appendix-cl">Common Lisp</A>
+(<A HREF="ssch27/appendix-cl.html">HTML</A>)
+<LI>C. <A HREF="ss-toc2.html#appendix-simply">Scheme Initialization File</A>
+(<A HREF="ssch27/appendix-simply.html">HTML</A>)
+<LI>D. <A HREF="ss-toc2.html#appendix-gpl">GNU General Public License</A>
+(<A HREF="ssch27/appendix-gpl.html">HTML</A>)
+</UL>
+<LI><A HREF="ss-toc2.html#credits">Credits</A>
+(<A HREF="ssch27/credits.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#appendix-funlist">Alphabetical Table of Scheme Primitives</A>
+(<A HREF="ssch27/appendix-funlist.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#glossary">Glossary</A>
+(<A HREF="ssch27/glossary.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#appuindex">Index of Defined Procedures</A>
+(<A HREF="ssch27/appuindex.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#appindex">General Index</A>
+(<A HREF="ssch27/appindex.html">HTML</A>)
+<LI><A HREF="ss-toc2.html#category">Table of Scheme Primitives by Category</A>
+(<A HREF="ssch27/category.html">HTML</A>)
+</UL>
+<P><BR>
+<HR>
+<P><BR>
+
+<TABLE><TR><TD><H3><A name="foreword">Foreword</A> by
+<A HREF="http://groups.csail.mit.edu/mac/users/hal/hal.html">Hal Abelson</A>
+</H3><TD>
+(<A HREF="pdf/ssch00.pdf">frontmatter in PDF</A>)
+(<A HREF="ssch0/foreword.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3><A name="preface">Preface</A></H3><TD>
+(<A HREF="ssch0/preface.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>One Big Idea: Symbolic Programming
+<LI>Lisp and Radical Computer Science
+<LI>Who Should Read This Book
+<LI>How to Read This Book
+</UL>
+<TABLE><TR><TD><H3><A name="instructor">To the Instructor</A></H3><TD>
+(<A HREF="ssch0/instructor.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Lists and Sentences
+<LI>Sentences and Words
+<LI>Overloading in the Text Abstraction
+<LI>Higher-Order Procedures, Lambda, and Recursion
+<LI>Mutators and Environments
+</UL>
+<TABLE><TR><TD><H3><A name="ack">Acknowledgements</A></H3><TD>
+(<A HREF="ssch0/ack.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H2>I. <A name="part1">Introduction: Functions</A></H2><TD>
+(<A HREF="ssch1/part1.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>1. <A name="showing">Showing Off Scheme</A></H3><TD>
+(<A HREF="pdf/ssch01.pdf">PDF</A>)
+(<A HREF="ssch1/showing.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Talking to Scheme
+<LI>Recovering from Typing Errors
+<LI>Exiting Scheme
+<LI>More Examples
+<LI>Example: Acronyms
+<LI>Example: Pig Latin
+<LI>Example: Ice Cream Choices
+<LI>Example: Combinations from a Set
+<LI>Example: Factorial
+<LI>Play with the Procedures
+</UL>
+<TABLE><TR><TD><H3>2. <A name="functions">Functions</A></H3><TD>
+(<A HREF="pdf/ssch02.pdf">PDF</A>)
+(<A HREF="ssch2/functions.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Arithmetic
+<LI>Words
+<LI>Domain and Range
+<LI>More Types: Sentences and Booleans
+<LI>Our Favorite Type: Functions
+<LI>Play with It
+<LI>Thinking about What You've Done
+</UL>
+<TABLE><TR><TD><H2>II. <A name="part2">Composition of Functions</A></H2><TD>
+(<A HREF="ssch3/part2.html">HTML</A>)
+
+</TABLE>
+<TABLE><TR><TD><H3>3. <A name="people">Expressions</A></H3><TD>
+(<A HREF="pdf/ssch03.pdf">PDF</A>)
+(<A HREF="ssch3/people.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Little People
+<LI>Result Replacement
+<LI>Plumbing Diagrams
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>4. <A name="defining">Defining Your Own Procedures</A></H3><TD>
+(<A HREF="pdf/ssch04.pdf">PDF</A>)
+(<A HREF="ssch4/defining.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>How to Define a Procedure
+<LI>Special Forms
+<LI>Functions and Procedures
+<LI>Argument Names versus Argument Values
+<LI>Procedure as Generalization
+<LI>Composability
+<LI>The Substitution Model
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>5. <A name="words">Words and Sentences</A></H3><TD>
+(<A HREF="pdf/ssch05.pdf">PDF</A>)
+(<A HREF="ssch5/words.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Selectors
+<LI>Constructors
+<LI>First-Class Words and Sentences
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>6. <A name="true">True and False</A></H3><TD>
+(<A HREF="pdf/ssch06.pdf">PDF</A>)
+(<A HREF="ssch6/true.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Predicates
+<LI>Using Predicates
+<LI><CODE>If</CODE> Is a Special Form
+<LI>So Are <CODE>And</CODE> and <CODE>Or</CODE>
+<LI>Everything That Isn't False Is True
+<LI>Decisions, Decisions, Decisions
+<LI><CODE>If</CODE> Is Composable
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>7. <A name="variables">Variables</A></H3><TD>
+(<A HREF="pdf/ssch07.pdf">PDF</A>)
+(<A HREF="ssch7/variables.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>How Little People Do Variables
+<LI>Global and Local Variables
+<LI>The Truth about Substitution
+<LI><CODE>Let</CODE>
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H2>III. <A name="part3">Functions as Data</A></H2><TD>
+(<A HREF="ssch8/part3.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>8. <A name="higher">Higher-Order Functions</A></H3><TD>
+(<A HREF="pdf/ssch08.pdf">PDF</A>)
+(<A HREF="ssch8/higher.html">HTML</A>)
+</TABLE>
+<UL>
+<LI><CODE>Every</CODE>
+<LI>A Pause for Reflection
+<LI><CODE>Keep</CODE>
+<LI><CODE>Accumulate</CODE>
+<LI>Combining Higher-Order Functions
+<LI>Choosing the Right Tool
+<LI>First-Class Functions and First-Class Sentences
+<LI><CODE>Repeated</CODE>
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>9. <A name="lambda">Lambda</A></H3><TD>
+(<A HREF="pdf/ssch09.pdf">PDF</A>)
+(<A HREF="ssch9/lambda.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Procedures That Return Procedures
+<LI>The Truth about <CODE>Define</CODE>
+<LI>The Truth about <CODE>Let</CODE>
+<LI>Name Conflicts
+<LI>Named and Unnamed Functions
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3><A name="bridge">Project: Scoring Bridge Hands</A></H3><TD>
+(<A HREF="ssch9/bridge.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>10. <A name="ttt">Example: Tic-Tac-Toe</A></H3><TD>
+(<A HREF="pdf/ssch10.pdf">PDF</A>)
+(<A HREF="ssch10/ttt.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>A Warning
+<LI>Technical Terms in Tic-Tac-Toe
+<LI>Thinking about the Program Structure
+<LI>The First Step: Triples
+<LI>Finding the Triples
+<LI>Using <CODE>Every</CODE> with Two-Argument Procedures
+<LI>Can the Computer Win on This Move?
+<LI>If So, in Which Square?
+<LI>Second Verse, Same as the First
+<LI>Now the Strategy Gets Complicated
+<LI>Finding the Pivots
+<LI>Taking the Offensive
+<LI>Leftovers
+<LI>Complete Program Listing
+</UL>
+<TABLE><TR><TD><H2>IV. <A name="part4">Recursion</A></H2><TD>
+(<A HREF="ssch11/part4.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>11. <A name="recursion">Introduction to Recursion</A></H3><TD>
+(<A HREF="pdf/ssch11.pdf">PDF</A>)
+(<A HREF="ssch11/recursion.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>A Separate Procedure for Each Length
+<LI>Use What You Have to Get What You Need
+<LI>Notice That They're All the Same
+<LI>Notice That They're Almost All the Same
+<LI>Base Cases and Recursive Calls
+<LI>Pig Latin
+<LI>Problems for You to Try
+<LI>Our Solutions
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>12. <A name="leap">The Leap of Faith</A></H3><TD>
+(<A HREF="pdf/ssch12.pdf">PDF</A>)
+(<A HREF="ssch12/leap.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>From the Combining Method to the Leap of Faith
+<LI>Example: <CODE>Reverse</CODE>
+<LI>The Leap of Faith
+<LI>The Base Case
+<LI>Example: <CODE>Factorial</CODE>
+<LI>Likely Guesses for Smaller Subproblems
+<LI>Example: <CODE>Downup</CODE>
+<LI>Example: <CODE>Evens</CODE>
+<LI>Simplifying Base Cases
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>13. <A name="convince-recur">How Recursion Works</A></H3><TD>
+(<A HREF="pdf/ssch13.pdf">PDF</A>)
+(<A HREF="ssch13/convince-recur.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Little People and Recursion
+<LI>Tracing
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>14. <A name="recur-patterns">Common Patterns in Recursive Procedures</A></H3><TD>
+(<A HREF="pdf/ssch14.pdf">PDF</A>)
+(<A HREF="ssch14/recur-patterns.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>The <CODE>Every</CODE> Pattern
+<LI>The <CODE>Keep</CODE> Pattern
+<LI>The <CODE>Accumulate</CODE> Pattern
+<LI>Combining Patterns
+<LI>Helper Procedures
+<LI>How to Use Recursive Patterns
+<LI>Problems That Don't Follow Patterns
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3><A name="number-name">Project: Spelling Names of Huge Numbers</A></H3><TD>
+(<A HREF="ssch14/number-name.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>15. <A name="adv-recur">Advanced Recursion</A></H3><TD>
+(<A HREF="pdf/ssch15.pdf">PDF</A>)
+(<A HREF="ssch15/adv-recur.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Example: <CODE>Sort</CODE>
+<LI>Example: <CODE>From-Binary</CODE>
+<LI>Example: <CODE>Mergesort</CODE>
+<LI>Example: <CODE>Subsets</CODE>
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3><A name="poker">Project: Scoring Poker Hands</A></H3><TD>
+(<A HREF="ssch15/poker.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Extra Work for Hotshots
+</UL>
+<TABLE><TR><TD><H3>16. <A name="match">Example: Pattern Matcher</A></H3><TD>
+(<A HREF="pdf/ssch16.pdf">PDF</A>)
+(<A HREF="ssch16/match.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Problem Description
+<LI>Implementation: When Are Two Sentences Equal?
+<LI>When Are Two Sentences Nearly Equal?
+<LI>Matching with Alternatives
+<LI>Backtracking
+<LI>Matching Several Words
+<LI>Combining the Placeholders
+<LI>Naming the Matched Text
+<LI>The Final Version
+<LI>Abstract Data Types
+<LI>Backtracking and <CODE>Known-Values</CODE>
+<LI>How We Wrote It
+<LI>Complete Program Listing
+</UL>
+<TABLE><TR><TD><H2>V. <A name="part5">Abstraction</A></H2><TD>
+(<A HREF="ssch17/part5.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>17. <A name="lists">Lists</A></H3><TD>
+(<A HREF="pdf/ssch17.pdf">PDF</A>)
+(<A HREF="ssch17/lists.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Selectors and Constructors
+<LI>Programming with Lists
+<LI>The Truth about Sentences
+<LI>Higher-Order Functions
+<LI>Other Primitives for Lists
+<LI>Association Lists
+<LI>Functions That Take Variable Numbers of Arguments
+<LI>Recursion on Arbitrary Structured Lists
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>18. <A name="trees">Trees</A></H3><TD>
+(<A HREF="pdf/ssch18.pdf">PDF</A>)
+(<A HREF="ssch18/trees.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Example: The World
+<LI>How Big Is My Tree?
+<LI>Mutual Recursion
+<LI>Searching for a Datum in the Tree
+<LI>Locating a Datum in the Tree
+<LI>Representing Trees as Lists
+<LI>Abstract Data Types
+<LI>An Advanced Example: Parsing Arithmetic Expressions
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>19. <A name="implement-hof">Implementing Higher-Order Functions</A></H3><TD>
+(<A HREF="pdf/ssch19.pdf">PDF</A>)
+(<A HREF="ssch19/implement-hof.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Generalizing Patterns
+<LI>The <CODE>Every</CODE> Pattern Revisited
+<LI>The Difference between <CODE>Map</CODE> and <CODE>Every</CODE>
+<LI><CODE>Filter</CODE>
+<LI><CODE>Accumulate</CODE> and <CODE>Reduce</CODE>
+<LI>Robustness
+<LI>Higher-Order Functions for Structured Lists
+<LI>The Zero-Trip Do Loop
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H2>VI. <A name="part6">Sequential Programming</A></H2><TD>
+(<A HREF="ssch20/part6.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>20. <A name="io">Input and Output</A></H3><TD>
+(<A HREF="pdf/ssch20.pdf">PDF</A>)
+(<A HREF="ssch20/io.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Printing
+<LI>Side Effects and Sequencing
+<LI>The <CODE>Begin</CODE> Special Form
+<LI>This Isn't Functional Programming
+<LI>Not Moving to the Next Line
+<LI>Strings
+<LI>A Higher-Order Procedure for Sequencing
+<LI>Tic-Tac-Toe Revisited
+<LI>Accepting User Input
+<LI>Aesthetic Board Display
+<LI>Reading and Writing Normal Text
+<LI>Formatted Text
+<LI>Sequential Programming and Order of Evaluation
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>21. <A name="functions-implement">Example: The <CODE>Functions</CODE> Program</A></H3><TD>
+(<A HREF="pdf/ssch21.pdf">PDF</A>)
+(<A HREF="ssch21/functions-implement.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>The Main Loop
+<LI>The Difference between a Procedure and Its Name
+<LI>The Association List of Functions
+<LI>Domain Checking
+<LI>Intentionally Confusing a Function with Its Name
+<LI>More on Higher-Order Functions
+<LI>More Robustness
+<LI>Complete Program Listing
+</UL>
+<TABLE><TR><TD><H3>22. <A name="files">Files</A></H3><TD>
+(<A HREF="pdf/ssch22.pdf">PDF</A>)
+(<A HREF="ssch22/files.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Ports
+<LI>Writing Files for People to Read
+<LI>Using a File as a Database
+<LI>Transforming the Lines of a File
+<LI>Justifying Text
+<LI>Preserving Spacing of Text from Files
+<LI>Merging Two Files
+<LI>Writing Files for Scheme to Read
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>23. <A name="vectors">Vectors</A></H3><TD>
+(<A HREF="pdf/ssch23.pdf">PDF</A>)
+(<A HREF="ssch23/vectors.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>The Indy 500
+<LI>Vectors
+<LI>Using Vectors in Programs
+<LI>Non-Functional Procedures and State
+<LI>Shuffling a Deck
+<LI>More Vector Tools
+<LI>The Vector Pattern of Recursion
+<LI>Vectors versus Lists
+<LI>State, Sequence, and Effects
+<LI>Pitfalls
+</UL>
+<TABLE><TR><TD><H3>24. <A name="spread">Example: A Spreadsheet Program</A></H3><TD>
+(<A HREF="pdf/ssch24.pdf">PDF</A>)
+(<A HREF="ssch24/spread.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Limitations of Our Spreadsheet
+<LI>Spreadsheet Commands
+<LI>Moving the Selection
+<LI>Putting Values in Cells
+<LI>Formulas
+<LI>Displaying Formula Values
+<LI>Loading Spreadsheet Commands from a File
+<LI>Application Programs and Abstraction
+</UL>
+<TABLE><TR><TD><H3>25. <A name="spread-implement">Implementing the Spreadsheet Program</A></H3><TD>
+(<A HREF="pdf/ssch25.pdf">PDF</A>)
+(<A HREF="ssch25/spread-implement.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Cells, Cell Names, and Cell IDs
+<LI>The Command Processor
+<LI>Cell Selection Commands
+<LI>The <CODE>Load</CODE> Command
+<LI>The <CODE>Put</CODE> Command
+<LI>The Formula Translator
+<LI>The Dependency Manager
+<LI>The Expression Evaluator
+<LI>The Screen Printer
+<LI>The Cell Manager
+<LI>Complete Program Listing
+</UL>
+<TABLE><TR><TD><H3><A name="database">Project: A Database Program</A></H3><TD>
+(<A HREF="ssch25/database.html">HTML</A>)
+
+</TABLE>
+<UL>
+<LI>A Sample Session with Our Database
+<LI>How Databases Are Stored Internally
+<LI>The Current Database
+<LI>Implementing the Database Program Commands
+<LI>Additions to the Program
+<LI>Extra Work for Hotshots
+</UL>
+<TABLE><TR><TD><H2>VII. <A name="part7">Conclusion: Computer Science</A></H2><TD>
+(<A HREF="ssch26/part7.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>26. <A name="preview">What's Next?</A></H3><TD>
+(<A HREF="pdf/ssch26.pdf">PDF</A>)
+(<A HREF="ssch26/preview.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>The Best Computer Science Book
+<LI>Beyond <EM>SICP</EM>
+<LI>Standard Scheme
+<LI>Last Words
+</UL>
+<H2>Appendices</H2>
+</TABLE>
+<TABLE><TR><TD><H3>A. <A name="appendix-running">Running Scheme</A></H3><TD>
+(<A HREF="pdf/ssch27.pdf">backmatter in PDF</A>)
+(<A HREF="ssch27/appendix-running.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>The Program Development Cycle
+<LI>Integrated Editing
+<LI>Getting Our Programs
+<LI>Tuning Our Programs for Your System
+<LI>Loading Our Programs
+<LI>Versions of Scheme
+<LI>Scheme Standards
+</UL>
+<TABLE><TR><TD><H3>B. <A name="appendix-cl">Common Lisp</A></H3><TD>
+(<A HREF="ssch27/appendix-cl.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>Why Common Lisp Exists
+<LI>Defining Procedures and Variables
+<LI>The Naming Convention for Predicates
+<LI>No Words or Sentences
+<LI>True and False
+<LI>Files
+<LI>Arrays
+<LI>Equivalents to Scheme Primitives
+<LI>A Separate Name Space for Procedures
+<LI><CODE>Lambda</CODE>
+<LI>More about <CODE>Function</CODE>
+<LI>Writing Higher-Order Procedures
+</UL>
+<TABLE><TR><TD><H3>C. <A name="appendix-simply">Scheme Initialization File</A></H3><TD>
+(<A HREF="ssch27/appendix-simply.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3>D. <A name="appendix-gpl">GNU General Public License</A></H3><TD>
+(<A HREF="ssch27/appendix-gpl.html">HTML</A>)
+
+</TABLE>
+<TABLE><TR><TD><H3><A name="credits">Credits</A></H3><TD>
+(<A HREF="ssch27/credits.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3><A name="appendix-funlist">Alphabetical Table of Scheme Primitives</A></H3><TD>
+(<A HREF="ssch27/appendix-funlist.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3><A name="glossary">Glossary</A></H3><TD>
+(<A HREF="ssch27/glossary.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3><A name="appuindex">Index of Defined Procedures</A></H3><TD>
+(<A HREF="ssch27/appuindex.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3><A name="appindex">General Index</A></H3><TD>
+(<A HREF="ssch27/appindex.html">HTML</A>)
+</TABLE>
+<TABLE><TR><TD><H3><A name="category">Table of Scheme Primitives by Category</A></H3><TD>
+(<A HREF="ssch27/category.html">HTML</A>)
+</TABLE>
+
+<P><BR>
+<HR>
+<P><BR>
+<P>
+[no back]
+chapter thread <A HREF="ssch0/foreword.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ss/ack.html b/js/games/nluqo.github.io/~bh/ss/ack.html
new file mode 100644
index 0000000..105146d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss/ack.html
@@ -0,0 +1,97 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme Acknowledgments</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Acknowledgments</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="../simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="../simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>Obviously our greatest debt is to Harold Abelson,
+Gerald Jay Sussman, and Julie Sussman.  They have
+inspired us and taught us, and gave birth to the movement to which we are
+minor contributors.  Julie carefully read what we thought was the final
+draft, made thousands of suggestions, both small and large, improved the
+book enormously, and set us back two months.  Hal encouraged us, read early
+drafts, and also made this a better book than we could have created on our
+own.
+
+<P> 
+Mike Clancy, Ed Dubinsky, Dan Friedman, and
+Tessa Harvey also read drafts and made detailed and very helpful
+suggestions for improvement.  Mike contributed many exercises.
+(We didn't take their advice about everything, though, so they get none of
+the blame for anything you don't like here.)
+
+<P>Terry Ehling and everyone at the MIT Press have given this
+project the benefit of their enthusiasm and their technical support.  We're
+happy to be working with them.
+
+<P>The Computer Science Division at the University of California, Berkeley,
+allowed us to teach a special section of the CS 3 course using the first
+draft of this book.  The book now in your hands is much better because of
+that experience.  We thank Annika Rogers, our teaching assistant
+in the course, and also the thirty students who served not merely as guinea
+pigs but as collaborators in pinning down the weak points in our
+explanations.
+
+<P>Some of the ideas in this book, especially the different approaches to
+recursion, are taken from Brian's earlier Logo-based
+textbook.<SUP>*</SUP>
+Many of our explanatory metaphors, especially the &quot;little people&quot; model,
+were invented by members of the Logo community.  We also took the word and
+sentence data types from Logo.  Although this book doesn't use Logo itself,
+we tried to write it in the Logo spirit.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP><EM>Computer Science Logo Style, volume 1:
+Intermediate Programming,</EM> MIT Press, 1985.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>We wrote much of this book during the summer of 1992, while we were on the
+faculty of the Institute for Secondary Mathematics and Computer Science
+Education, an inservice teacher training program at Kent State University.
+Several of our IFSMACSE colleagues contributed to our ideas both about
+computer science and about teaching; we are especially indebted to
+Ed Dubinsky and Uri Leron.
+
+<P>We stole the idea of a &quot;pitfalls&quot; section at the end of each chapter from
+Dave Patterson and John Hennessy.
+
+<P>We stole some of the ideas for illustrations from Douglas
+Hofstadter's wonderful <EM>Godel, Escher, Bach.</EM>
+
+<P>David Zabel helped with the preparation of the program diskettes,
+especially with compiling SCM for the PC.
+
+<P>We conclude this list with an acknowledgment of each other.  Because of the
+difference in our ages, it may occur to some readers to suspect that we
+contributed unequally to this book--either that Matt did all the work and
+Brian just lent his name and status to impress publishers, or that Brian had
+all the ideas and Matt did the typing.  Neither of these is true.  Almost
+everything in the book was written with both of us in front of the computer,
+arguing out every paragraph.  When we did split up to write some sections
+separately, each of us read and criticized the other's work.  (We're a
+little surprised that we still like each other, after all the arguments!)
+Luckily we both like the Beatles,
+Chinese food, and ice cream, so we had a common ground for
+programming examples.  But when you see an example about
+Bill Frisell, you can be pretty sure it's Matt's writing, and when
+the example is about Dave Dee, Dozy, Beaky, Mick, and Tich, it's probably
+Brian's.
+
+<P><A HREF="../simply-toc.html">(back to Table of Contents)</A>
+
+</HTML>
+
diff --git a/js/games/nluqo.github.io/~bh/ss/foreword.html b/js/games/nluqo.github.io/~bh/ss/foreword.html
new file mode 100644
index 0000000..b678405
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss/foreword.html
@@ -0,0 +1,107 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme Foreword</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Foreword</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="../simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley<BR>
+Foreword by Hal Abelson</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="../simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>One of the best ways to stifle the growth of an idea is to enshrine it
+in an educational curriculum.  The textbook publishers, certification
+panels, professional organizations, the folks who write the college
+entrance exams--once they've settled on an approach, they
+become frozen in a straitjacket of interlocking constraints that
+thwarts the ability to evolve.  So it is common that students learn
+the &quot;modern&quot; geography of countries that no longer exist and
+practice using logarithm tables when calculators have made tables
+obsolete.  And in computer science, beginning courses are trapped in
+an approach that was already ten years out of date by the time it was
+canonized in the mid 80s, when the College Entrance Examination Board
+adopted an advanced placement exam based on Pascal.
+
+<P>This book points the way out of the trap.  It emphasizes programming
+as a way to express ideas, rather than just a way to get computers to
+perform tasks.
+
+<P>Julie and Gerry Sussman and I are flattered that Harvey and Wright
+characterize their revolutionary introduction to computer science as a
+&quot;prequel&quot; to our text <EM>Structure and Interpretation of Computer
+Programs.</EM>  When we were writing <EM>SICP,</EM> we often drew upon
+the words of the great American computer scientist Alan Perlis
+(1922-1990).  Perlis was one of the designers of the Algol
+programming language, which, beginning in 1958, established the
+tradition of formalism and precision that Pascal embodies.  Here's
+what Perlis had to say about this tradition in 1975,
+nine years <EM>before</EM> the start of the AP exam:
+
+<P><BLOCKQUOTE>
+Algol is a blight.  You can't have fun with Algol.  Algol is a code
+that now belongs in a plumber's union.  It helps you design correct
+structures that don't collapse, but it doesn't have any fun in it.
+There are no pleasures in writing Algol programs.  It's a labor of
+necessity, a preoccupation with the details of tedium.
+</BLOCKQUOTE>
+
+<P>Harvey and Wright's introduction to computing emerges from a different
+intellectual heritage, one rooted in research in artificial
+intelligence and the programming language Lisp.  In approaching
+computing through this book, you'll focus on two essential techniques.
+
+<P>First is the notion of <EM>symbolic programming.</EM>  This means that
+you deal not only with numbers and letters, but with structured
+collections of data--a word is a list of characters, a sentence is a
+list of words, a paragraph is a list of sentences, a story is a list
+of paragraphs, and so on.  You assemble things in terms of natural
+parts, rather than always viewing data in terms of its tiniest pieces.
+It's the difference between saying &quot;find the fifth character of the
+third word in the sentence&quot; and &quot;scan the sentence until you pass
+two spaces, then scan past four more characters, and return the next
+character.&quot;
+
+<P>The second technique is to work with <EM>higher-order functions.</EM>
+That means that you don't only write programs, but rather you <EM>write
+programs that write programs,</EM> so you can bootstrap your methods
+into more powerful methods.
+
+<P>These two techniques belong at center stage in any beginning
+programming course, which is exactly where Harvey and Wright put them.
+The underlying principle in both cases is that you work with general
+parts that you extend and combine in flexible ways, rather than tiny
+fragments that you fit together into rigid structures.
+
+<P>You should come to this introduction to computing ready to think about
+ideas rather than details of syntax, ready to design your own
+languages rather than to memorize the rules of languages other people
+have designed.  This kind of activity changes your outlook not only on
+programming, but on any area where design plays an important role,
+because you learn to appreciate the relations among parts rather than
+always fixating on the individual pieces.  To quote Alan Perlis again,
+
+<P><BLOCKQUOTE>
+You begin to think in terms of patterns and idioms and phrases, and no
+longer pick up a trowel and some cement and lay things down brick by
+brick.  The Great Wall, standing for centuries, is a monument.  But
+building it must have been a bore.
+</BLOCKQUOTE>
+
+<P>Hal Abelson
+<BR>Cambridge, MA
+
+<P><A HREF="../simply-toc.html">(back to Table of Contents)</A>
+
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ss/instructor.html b/js/games/nluqo.github.io/~bh/ss/instructor.html
new file mode 100644
index 0000000..6bb2a0f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ss/instructor.html
@@ -0,0 +1,202 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: To the Instructor</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE> 2/e Copyright (C) 1999 MIT
+<H1>To the Instructor</H1>
+
+<TABLE><TR><TD>
+<P><IMG SRC="../simply.jpg" ALT="cover photo">
+<TD valign="center">
+<CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR><A HREF="http://www.cnmat.berkeley.edu/~matt">Matthew
+Wright</A><BR>University of California, Berkeley</CITE>
+<BR><BR><A HREF="http://www-mitpress.mit.edu/book-home.tcl?isbn=0262082810">MIT
+Press web page for Simply Scheme</A>
+</TABLE>
+
+<P><A HREF="../simply-toc.html">(back to Table of Contents)</A>
+
+<HR>
+
+<P>The language that we use in this book isn't exactly standard Scheme.  We've
+provided several extensions that may seem unusual to an experienced Scheme
+programmer.  This may make the book feel weird at first, but there's a
+pedagogic reason for each extension.
+
+<P>Along with our slightly strange version of Scheme, our book has a slightly
+unusual order of topics.  Several ideas that are introduced very early in
+the typical Scheme-based text are delayed in ours, most notably recursion.
+Quite a few people have looked at our table of contents, noted some
+particular big idea of computer science, and remarked, &quot;I can't believe
+you wait so long before getting to <EM>such and such</EM>!&quot;
+
+<P>In this preface for instructors, we describe and explain the unusual
+elements of our approach.  Other teaching issues, including the timing and
+ordering of topics, are discussed in the Instructor's Manual.
+
+<P><H2>Lists and Sentences</H2>
+
+<P>The chapter named &quot;Lists&quot; in this book is Chapter 17, about halfway
+through the book.  But really we use lists much earlier than that, almost
+from the beginning.
+
+<P>Teachers of Lisp have always had trouble deciding when and how to introduce
+lists.  The advantage of an early introduction is that students can then
+write interesting symbolic programs instead of boring numeric ones.  The
+disadvantage is that students must struggle with the complexity of the
+implementation, such as the asymmetry between the two ends of a list, while
+still also struggling with the idea of composition of functions and Lisp's
+prefix notation.
+
+<P>We prefer to have it both ways.  We want to spare beginning students the
+risk of accidentally constructing ill-formed lists such as
+
+<P><PRE>((((() . D) . C) . B) . A)
+</PRE>
+
+<P>but we also want to write natural-language programs from the
+beginning of the book.  Our solution is to borrow from Logo the idea of a
+<EM>sentence</EM> abstract data type.<SUP>*</SUP> Sentences are
+guaranteed to be flat, proper lists, and they appear to be symmetrical to
+the user of the abstraction.  (That is, it's as easy to ask for the last
+word of a sentence as to ask for the first word.)  The <CODE>sentence</CODE>
+constructor accepts either a word or a sentence in any argument position.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Speaking of abstraction, even
+though that's the name of Part V, we do make an occasion in each of the
+earlier parts to talk about abstraction as examples come up.</SMALL></BLOCKQUOTE></SMALL><P>We defer <EM>structured</EM> lists until we have higher-order functions and
+recursion, the tools we need to be able to use the structure
+effectively.<SUP>*</SUP> A
+structured list can be understood as a tree, and Lisp programmers generally
+use that understanding implicitly.  We create an explicit abstract data type
+for trees and use it for a thorough exploration of tree structure, without
+reference to the implementation of trees.  We then explicitly connect the
+usual informal tree recursion on structured lists to our more formal version.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Even then, we take lists as a primitive data type.  We
+don't teach about pairs or improper lists, except as a potential pitfall.</SMALL></BLOCKQUOTE></SMALL><P><H2>Sentences and Words</H2>
+
+<P>We haven't said what a <EM>word</EM> is.  Scheme includes separate data types
+for characters, symbols, strings, and numbers.  We want to be able to
+dissect words into letters, just as we can dissect sentences into words, so
+that we can write programs like <CODE>plural</CODE> and <CODE>pig-latin</CODE>.  Orthodox
+Scheme style would use strings for such purposes, but we want a sentence to
+look <CODE>(like this)</CODE> and not <CODE>(&quot;like&quot; &quot;this&quot;)</CODE>.  We've arranged that
+in most contexts symbols, strings, and numbers can be used interchangeably;
+our readers never see Scheme characters at all.<SUP>*</SUP>
+Although a word made of letters is represented internally as a symbol, while
+a word made of digits is represented as a number, above the abstraction line
+they're both words.  (A word that standard Scheme won't accept as a symbol
+nor as a number is represented as a string.)
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Scheme's primitive
+I/O facility gives you the choice of expressions or characters.  Instead of
+using <CODE>read-char</CODE>, we invent <CODE>read-line</CODE>, which reads a line as a
+sentence, and <CODE>read-string</CODE>, which returns the line as one long word.</SMALL></BLOCKQUOTE></SMALL><P>There is an efficiency cost to treating both words and sentences as abstract
+aggregates, since it's slow to disassemble a sentence from right to left and
+slow to disassemble a word in either direction.  Many simple procedures that
+seem linear actually behave quadratically.  Luckily, words aren't usually
+very long, and the applications we undertake in the early chapters don't use
+large amounts of data in any form.  We write our large projects as
+efficiently as we can without making the programs unreadable, but we
+generally don't make a fuss about it.  Near the end of the book we discuss
+explicitly the efficient use of data structures.
+
+<P><H2>Overloading in the Text Abstraction</H2>
+
+<P>Even though computers represent numbers internally in many different ways
+(fixed point, bignum, floating point, exact rational, complex), when people
+visit mathland, they expect to meet numbers there, and they expect that all
+the numbers will understand how to add, subtract, multiply, and divide with
+each other.  (The exception is dividing by zero, but that's because of the
+inherent rules of mathematics, not because of the separation of numbers into
+categories by representation format.)
+
+<P>We feel the same way about visiting textland.  We expect to meet English
+text there.  It takes the form of words and sentences.  The operations that
+text understands include <CODE>first</CODE>, <CODE>last</CODE>, <CODE>butfirst</CODE>, and <CODE>
+butlast</CODE> to divide the text into its component parts.  You can't divide an
+empty word or sentence into parts, but it's just as natural to divide a word
+into letters as to divide a sentence into words.  (The ideas of mathland and
+textland, as well as the details of the word and sentence procedures, come
+from Logo.)
+
+<P>Some people who are accustomed to Scheme's view of data types consider <CODE>
+first</CODE> to be badly &quot;overloaded&quot;; they feel that a procedure that selects an
+element from a list shouldn't also extract a letter from a symbol.  Some of
+them would prefer that we use <CODE>car</CODE> for lists, use <CODE>substring</CODE> for
+strings, and not disassemble symbols at all.  Others want us to define <CODE>
+word-first</CODE> and <CODE>sentence-first</CODE>.
+
+<P>To us, <CODE>word-first</CODE> and <CODE>sentence-first</CODE> sound no less awkward than
+<CODE>fixnum-+</CODE> and <CODE>bignum-+</CODE>.  Everyone agrees that it's reasonable to
+overload the name <CODE>+</CODE> because the purposes are so similar.  Our students
+find it just as reasonable that <CODE>first</CODE> works for words as well as for
+sentences; they don't get confused by this.
+
+<P>As for the inviolability of symbols--the wall between names and data--we
+are following an older Lisp tradition, in which it was commonplace to <CODE>
+explode</CODE> symbols and to construct new names within a program.  Practically
+speaking, all that prevents us from representing words as strings is that
+Scheme requires quotation marks around them.  But in any case, the
+abstraction we're presenting is that the data we're dissecting are neither
+strings nor symbols, but words.
+
+<P><H2>Higher-Order Procedures, Lambda, and Recursion</H2>
+
+<P>Scheme relies on procedure invocation as virtually its only control
+mechanism.  In order to write interesting programs, a Scheme user must
+understand at least one of two hard ideas: recursion or procedure as object
+(in order to use higher-order procedures).  We believe that higher-order
+procedures are easier to learn, especially because we begin in Chapter
+8 by applying them only to named procedures.  Using a named procedure
+as an argument to another procedure is the way to use procedures as objects
+that's least upsetting to a beginner.  After the reader is comfortable with
+higher-order procedures, we introduce <CODE>lambda</CODE>; after that we introduce
+recursion.  We do the tic-tac-toe example with higher-order procedures and
+<CODE>lambda</CODE>, but not recursion.
+
+<P>When we get to recursion, we begin with an example of embedded recursion.
+Many books begin with the simplest possible recursive procedure, which turns
+out to be a simple sequential recursion, or even a tail recursion.  We feel
+that starting with such examples allows students to invent the &quot;go back&quot;
+model of recursion as looping.
+
+<P><H2>Mutators and Environments</H2>
+
+<P>One of the most unusual characteristics of this book is that there is no
+assignment to variables in it.  The reason we avoid <CODE>set!</CODE> is that the
+environment model of evaluation is very hard for most students.  We use a
+pure substitution model throughout most of the book.  (With the background
+they get from this book, students should be ready for the environment model
+when they see a rigorous presentation, as they will, for example, in Chapter
+3 of <EM>SICP.</EM>)
+
+<P>As the last topic in the book, we do introduce a form of mutation, namely
+<CODE>vector-set!</CODE>.  Mutation of vectors is less problematic than mutation of
+lists, because lists naturally share storage.  You really have to go out of
+your way to get two pointers to the same vector.<SUP>*</SUP> Mutation of data
+structures is less problematic than assignment to variables because it
+separates the issue of mutation from the issues of binding and scope.  Using
+vectors raises no new questions about the evaluation process, so we present
+mutation without reference to any formal model of evaluation.  We
+acknowledge that we're on thin ice here, but it seems to work for our
+students.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>We don't talk about
+<CODE>eq?</CODE> at all.  We're careful to write our programs in such a way that
+the issue of identity doesn't arise for the reader.</SMALL></BLOCKQUOTE></SMALL><P>In effect, our model of mutation is the &quot;shoebox&quot; model that you'd find in
+a mainstream programming language text.  Before we get to mutation, we use
+input/output programming to introduce the ideas of effect and sequence;
+assigning a value to a vector element introduces the important idea of
+state.  We use the sequential model to write two more or less practical
+programs, a spreadsheet and a database system.  A more traditional approach
+to assignment in Scheme would be to build an object-oriented language
+extension, but the use of local state variables would definitely force us to
+pay attention to environments.
+
+<P><A HREF="../simply-toc.html">(back to Table of Contents)</A>
+
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch0/ack.html b/js/games/nluqo.github.io/~bh/ssch0/ack.html
new file mode 100644
index 0000000..7c99711
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch0/ack.html
@@ -0,0 +1,122 @@
+<P>
+
+<P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme:Acknowledgments</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Acknowledgments</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="instructor.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch1/part1.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>Obviously our greatest debt is to Harold Abelson,
+Gerald Jay Sussman, and Julie Sussman.  They have
+inspired us and taught us, and gave birth to the movement to which we are
+minor contributors.  Julie carefully read what we thought was the final
+draft, made thousands of suggestions, both small and large, improved the
+book enormously, and set us back two months.  Hal encouraged us, read early
+drafts, and also made this a better book than we could have created on our
+own.
+
+<P> 
+Mike Clancy, Ed Dubinsky, Dan Friedman,
+Tessa Harvey, and Yehuda Katz
+also read drafts and made detailed and very helpful
+suggestions for improvement.  Mike contributed many exercises.
+(We didn't take their advice about everything, though, so they get none of
+the blame for anything you don't like here.)
+
+<P>
+Terry Ehling, Bob Prior, and everyone at the MIT
+Press have given this project the benefit of their enthusiasm and their
+technical support.  We're happy to be working with them.
+
+<P>The Computer Science Division at the University of California, Berkeley,
+allowed us to teach a special section of the CS 3 course using the first
+draft of this book.  The book now in your hands is much better because of
+that experience.  We thank Annika Rogers, our teaching assistant
+in the course, and also the thirty students who served not merely as guinea
+pigs but as collaborators in pinning down the weak points in our
+explanations.
+
+<P>Some of the ideas in this book, especially the different approaches to
+recursion, are taken from Brian's earlier Logo-based
+textbook.<A NAME="text1" HREF="ack.html#ft1">[1]</A>
+Many of our explanatory metaphors, especially the &quot;little people&quot; model,
+were invented by members of the Logo community.  We also took the word and
+sentence data types from Logo.  Although this book doesn't use Logo itself,
+we tried to write it in the Logo spirit.
+
+<P>We wrote much of this book during the summer of 1992, while we were on the
+faculty of the Institute for Secondary Mathematics and Computer Science
+Education, an inservice teacher training program at Kent State University.
+Several of our IFSMACSE colleagues contributed to our ideas both about
+computer science and about teaching; we are especially indebted to
+Ed Dubinsky and Uri Leron.
+
+<P>We stole the idea of a &quot;pitfalls&quot; section at the end of each chapter from
+Dave Patterson and John Hennessy.
+
+
+
+<P>We stole some of the ideas for illustrations from Douglas
+Hofstadter's wonderful <EM>Godel, Escher, Bach.</EM>
+
+
+<P>David Zabel helped us get software ready for students,
+
+especially with compiling SCM for the PC.
+
+<P>We conclude this list with an acknowledgment of each other.  Because of the
+difference in our ages, it may occur to some readers to suspect that we
+contributed unequally to this book&mdash;either that Matt did all the work and
+Brian just lent his name and status to impress publishers, or that Brian had
+all the ideas and Matt did the typing.  Neither of these is true.  Almost
+everything in the book was written with both of us in front of the computer,
+arguing out every paragraph.  When we did split up to write some sections
+separately, each of us read and criticized the other's work.  (We're a
+little surprised that we still like each other, after all the arguments!)
+Luckily we both like the Beatles,
+Chinese food, and ice cream, so we had a common ground for
+programming examples.  But when you see an example about
+Bill Frisell, you can be pretty sure it's Matt's writing, and when
+the example is about Dave Dee, Dozy, Beaky, Mick, and Tich, it's probably
+
+Brian's.
+
+<P>
+
+<A NAME="ft1" HREF="ack.html#text1">[1]</A> <EM>Computer Science Logo Style, volume 1:
+Intermediate Programming,</EM> MIT Press, 1985.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="instructor.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch1/part1.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch0/foreword.html b/js/games/nluqo.github.io/~bh/ssch0/foreword.html
new file mode 100644
index 0000000..2a531c3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch0/foreword.html
@@ -0,0 +1,142 @@
+<P>
+
+<P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme:Foreword</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Foreword</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right">[no back]
+chapter thread <A HREF="preface.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>
+
+<P>One of the best ways to stifle the growth of an idea is to enshrine it
+in an educational curriculum.  The textbook publishers, certification
+panels, professional organizations, the folks who write the college
+entrance exams&mdash;once they've settled on an approach, they
+become frozen in a straitjacket of interlocking constraints that
+thwarts the ability to evolve.  So it is common that students learn
+the &quot;modern&quot; geography of countries that no longer exist and
+practice using logarithm tables when calculators have made tables
+obsolete.  And in computer science, beginning courses are trapped in
+an approach that was already ten years out of date by the time it was
+canonized in the mid-1980s, when the College Entrance Examination Board
+adopted an advanced placement exam based on Pascal.<A NAME="text1" HREF="foreword.html#ft1">[1]</A>
+
+<P>This book points the way out of the trap.  It emphasizes programming
+as a way to express ideas, rather than just a way to get computers to
+perform tasks.
+
+<P>Julie and Gerry Sussman and I are flattered that Harvey and Wright
+characterize their revolutionary introduction to computer science as a
+&quot;prequel&quot; to our text <EM>Structure and Interpretation of Computer
+Programs.</EM>  When we were writing <EM>SICP,</EM> we often drew upon
+the words of the great American computer scientist Alan Perlis
+(1922-1990).  Perlis was one of the designers of the Algol
+programming language, which, beginning in 1958, established the
+tradition of formalism and precision that Pascal embodies.  Here's
+what Perlis had to say about this tradition in 1975,
+nine years <EM>before</EM> the start of the AP exam:
+
+<P><BLOCKQUOTE>
+
+Algol is a blight.  You can't have fun with Algol.  Algol is a code
+that now belongs in a plumber's union.  It helps you design correct
+structures that don't collapse, but it doesn't have any fun in it.
+There are no pleasures in writing Algol programs.  It's a labor of
+necessity, a preoccupation with the details of tedium.
+
+</BLOCKQUOTE>
+
+<P>Harvey and Wright's introduction to computing emerges from a different
+intellectual heritage, one rooted in research in artificial
+intelligence and the programming language Lisp.  In approaching
+computing through this book, you'll focus on two essential techniques.
+
+<P>First is the notion of <EM>symbolic programming.</EM>  This means that
+you deal not only with numbers and letters, but with structured
+collections of data&mdash;a word is a list of characters, a sentence is a
+list of words, a paragraph is a list of sentences, a story is a list
+of paragraphs, and so on.  You assemble things in terms of natural
+parts, rather than always viewing data in terms of its tiniest pieces.
+It's the difference between saying &quot;find the fifth character of the
+third word in the sentence&quot; and &quot;scan the sentence until you pass
+two spaces, then scan past four more characters, and return the next
+character.&quot;
+
+<P>The second technique is to work with <EM>higher-order functions.</EM>
+That means that you don't only write programs, but rather you <EM>
+write programs that write programs,</EM> so you can bootstrap your methods
+into more powerful methods.
+
+<P>These two techniques belong at center stage in any beginning
+programming course, which is exactly where Harvey and Wright put them.
+The underlying principle in both cases is that you work with general
+parts that you extend and combine in flexible ways, rather than tiny
+fragments that you fit together into rigid structures.
+
+<P>You should come to this introduction to computing ready to think about
+ideas rather than details of syntax, ready to design your own
+languages rather than to memorize the rules of languages other people
+have designed.  This kind of activity changes your outlook not only on
+programming, but on any area where design plays an important role,
+because you learn to appreciate the relations among parts rather than
+always fixating on the individual pieces.  To quote Alan Perlis again,
+
+<P><BLOCKQUOTE>
+
+You begin to think in terms of patterns and idioms and phrases, and no
+longer pick up a trowel and some cement and lay things down brick by
+brick.  The Great Wall, standing for centuries, is a monument.  But
+building it must have been a bore.
+
+</BLOCKQUOTE>
+
+<P><P>
+
+<P>
+
+<P>Hal Abelson
+
+<P>Cambridge, MA
+
+<P>
+
+<P>
+
+<A NAME="ft1" HREF="foreword.html#text1">[1]</A> Since Hal
+wrote this Foreword, they've switched the AP exam to use Java, but
+the principle is the same.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+[no back]
+chapter thread <A HREF="preface.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch0/instructor.html b/js/games/nluqo.github.io/~bh/ssch0/instructor.html
new file mode 100644
index 0000000..0dafa73
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch0/instructor.html
@@ -0,0 +1,232 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme:To the Instructor</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>To the Instructor</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>The language that we use in this book isn't exactly standard Scheme.  We've
+provided several extensions that may seem unusual to an experienced Scheme
+programmer.  This may make the book feel weird at first, but there's a
+pedagogic reason for each extension.
+
+<P>Along with our slightly strange version of Scheme, our book has a slightly
+unusual order of topics.  Several ideas that are introduced very early in
+the typical Scheme-based text are delayed in ours, most notably recursion.
+Quite a few people have looked at our table of contents, noted some
+particular big idea of computer science, and remarked, &quot;I can't believe
+you wait so long before getting to <EM>such and such</EM>!&quot;
+
+<P>In this preface for instructors, we describe and explain the unusual
+elements of our approach.  Other teaching issues, including the timing and
+ordering of topics, are discussed in the Instructor's Manual.
+
+<P><H2>Lists and Sentences</H2>
+
+<P>The chapter named &quot;Lists&quot; in this book is Chapter 17, about halfway
+through the book.  But really we use lists much earlier than that, almost
+from the beginning.
+
+<P>Teachers of Lisp have always had trouble deciding when and how to introduce
+lists.  The advantage of an early introduction is that students can then
+write interesting symbolic programs instead of boring numeric ones.  The
+disadvantage is that students must struggle with the complexity of the
+implementation, such as the asymmetry between the two ends of a list, while
+still also struggling with the idea of composition of functions and Lisp's
+prefix notation.
+
+<P>We prefer to have it both ways.  We want to spare beginning students the
+risk of accidentally constructing ill-formed lists such as
+
+<P><PRE>((((() . D) . C) . B) . A)
+</PRE>
+
+<P>but we also want to write natural-language programs from the
+beginning of the book.  Our solution is to borrow from Logo the idea of a
+<EM>sentence</EM> abstract data type.<A NAME="text1" HREF="instructor.html#ft1">[1]</A> Sentences are
+guaranteed to be flat, proper lists, and they appear to be symmetrical to
+the user of the abstraction.  (That is, it's as easy to ask for the last
+word of a sentence as to ask for the first word.)  The <CODE>sentence</CODE>
+constructor accepts either a word or a sentence in any argument position.
+
+<P>We defer <EM>structured</EM> lists until we have higher-order functions and
+recursion, the tools we need to be able to use the structure
+effectively.<A NAME="text2" HREF="instructor.html#ft2">[2]</A> A
+structured list can be understood as a tree, and Lisp programmers generally
+use that understanding implicitly.  After introducing <CODE>car</CODE>-<CODE>cdr</CODE>
+recursion, we present an explicit abstract data type for trees, without
+reference to its implementation.  Then we make the connection between these
+formal trees and the name &quot;tree recursion&quot; used for structured lists
+generally.  But Chapter 18 can be omitted, if the instructor finds
+the tree ADT unnecessary, and the reader of Chapter 17 will still
+be able to use structured lists.
+
+<P><H2>Sentences and Words</H2>
+
+<P>We haven't said what a <EM>word</EM> is.  Scheme includes separate data types
+for characters, symbols, strings, and numbers.  We want to be able to
+dissect words into letters, just as we can dissect sentences into words, so
+that we can write programs like <CODE>plural</CODE> and <CODE>pig-latin</CODE>.  Orthodox
+Scheme style would use strings for such purposes, but we want a sentence to
+look <CODE>(like this)</CODE> and not <CODE>(&quot;like&quot; &quot;this&quot;)</CODE>.  We've arranged that
+in most contexts symbols, strings, and numbers can be used interchangeably;
+our readers never see Scheme characters at all.<A NAME="text3" HREF="instructor.html#ft3">[3]</A>
+Although a word made of letters is represented internally as a symbol, while
+a word made of digits is represented as a number, above the abstraction line
+they're both words.  (A word that standard Scheme won't accept as a symbol
+nor as a number is represented as a string.)
+
+<P>There is an efficiency cost to treating both words and sentences as abstract
+aggregates, since it's slow to disassemble a sentence from right to left and
+slow to disassemble a word in either direction.  Many simple procedures that
+seem linear actually behave quadratically.  Luckily, words aren't usually
+very long, and the applications we undertake in the early chapters don't use
+large amounts of data in any form.  We write our large projects as
+efficiently as we can without making the programs unreadable, but we
+generally don't make a fuss about it.  Near the end of the book we discuss
+explicitly the efficient use of data structures.
+
+<P><H2>Overloading in the Text Abstraction</H2>
+
+<P>Even though computers represent numbers internally in many different ways
+(fixed point, bignum, floating point, exact rational, complex), when people
+visit mathland, they expect to meet numbers there, and they expect that all
+the numbers will understand how to add, subtract, multiply, and divide with
+each other.  (The exception is dividing by zero, but that's because of the
+inherent rules of mathematics, not because of the separation of numbers into
+categories by representation format.)
+
+<P>We feel the same way about visiting textland.  We expect to meet English
+text there.  It takes the form of words and sentences.  The operations that
+text understands include <CODE>first</CODE>, <CODE>last</CODE>, <CODE>butfirst</CODE>, and <CODE>
+butlast</CODE> to divide the text into its component parts.  You can't divide an
+empty word or sentence into parts, but it's just as natural to divide a word
+into letters as to divide a sentence into words.  (The ideas of mathland and
+textland, as well as the details of the word and sentence procedures, come
+from Logo.)
+
+<P>Some people who are accustomed to Scheme's view of data types consider <CODE>
+first</CODE> to be badly &quot;overloaded&quot;; they feel that a procedure that selects an
+element from a list shouldn't also extract a letter from a symbol.  Some of
+them would prefer that we use <CODE>car</CODE> for lists, use <CODE>substring</CODE> for
+strings, and not disassemble symbols at all.  Others want us to define <CODE>
+word-first</CODE> and <CODE>sentence-first</CODE>.
+
+<P>To us, <CODE>word-first</CODE> and <CODE>sentence-first</CODE> sound no less awkward than
+<CODE>fixnum-+</CODE> and <CODE>bignum-+</CODE>.  Everyone agrees that it's reasonable to
+overload the name <CODE>+</CODE> because the purposes are so similar.  Our students
+find it just as reasonable that <CODE>first</CODE> works for words as well as for
+sentences; they don't get confused by this.
+
+<P>As for the inviolability of symbols&mdash;the wall between names and data&mdash;we
+are following an older Lisp tradition, in which it was commonplace to <CODE>
+explode</CODE> symbols and to construct new names within a program.  Practically
+speaking, all that prevents us from representing words as strings is that
+Scheme requires quotation marks around them.  But in any case, the
+abstraction we're presenting is that the data we're dissecting are neither
+strings nor symbols, but words.
+
+<P><H2>Higher-Order Procedures, Lambda, and Recursion</H2>
+
+<P>Scheme relies on procedure invocation as virtually its only control
+mechanism.  In order to write interesting programs, a Scheme user must
+understand at least one of two hard ideas: recursion or procedure as object
+(in order to use higher-order procedures).  We believe that higher-order
+procedures are easier to learn, especially because we begin in Chapter
+8 by applying them only to named procedures.  Using a named procedure
+as an argument to another procedure is the way to use procedures as objects
+that's least upsetting to a beginner.  After the reader is comfortable with
+higher-order procedures, we introduce <CODE>lambda</CODE>; after that we introduce
+recursion.  We do the tic-tac-toe example with higher-order procedures and
+<CODE>lambda</CODE>, but not recursion.
+
+<P>In this edition, however, we have made the necessary minor revisions so that
+an instructor who prefers to begin with recursion can assign Part IV before
+Part III.
+
+<P>When we get to recursion, we begin with an example of embedded recursion.
+Many books begin with the simplest possible recursive procedure, which turns
+out to be a simple sequential recursion, or even a tail recursion.  We feel
+that starting with such examples allows students to invent the &quot;go back&quot;
+model of recursion as looping.
+
+<P><H2>Mutators and Environments</H2>
+
+<P>One of the most unusual characteristics of this book is that there is no
+assignment to variables in it.  The reason we avoid <CODE>set!</CODE> is that the
+environment model of evaluation is very hard for most students.  We use a
+pure substitution model throughout most of the book.  (With the background
+they get from this book, students should be ready for the environment model
+when they see a rigorous presentation, as they will, for example, in Chapter
+3 of <EM>SICP.</EM>)
+
+<P>As the last topic in the book, we do introduce a form of mutation, namely
+<CODE>vector-set!</CODE>.  Mutation of vectors is less problematic than mutation of
+lists, because lists naturally share storage.  You really have to go out of
+your way to get two pointers to the same vector.<A NAME="text4" HREF="instructor.html#ft4">[4]</A> Mutation of data
+structures is less problematic than assignment to variables because it
+separates the issue of mutation from the issues of binding and scope.  Using
+vectors raises no new questions about the evaluation process, so we present
+mutation without reference to any formal model of evaluation.  We
+acknowledge that we're on thin ice here, but it seems to work for our
+students.
+
+<P>In effect, our model of mutation is the &quot;shoebox&quot; model that you'd find in
+a mainstream programming language text.  Before we get to mutation, we use
+input/output programming to introduce the ideas of effect and sequence;
+assigning a value to a vector element introduces the important idea of
+state.  We use the sequential model to write two more or less practical
+programs, a spreadsheet and a database system.  A more traditional approach
+to assignment in Scheme would be to build an object-oriented language
+extension, but the use of local state variables would definitely force us to
+pay attention to environments.
+
+<P>
+
+<A NAME="ft1" HREF="instructor.html#text1">[1]</A> Speaking of abstraction, even
+though that's the name of Part V, we do make an occasion in each of the
+earlier parts to talk about abstraction as examples come up.<P>
+<A NAME="ft2" HREF="instructor.html#text2">[2]</A> Even then, we take lists as a primitive data type.  We
+don't teach about pairs or improper lists, except as a potential pitfall.<P>
+<A NAME="ft3" HREF="instructor.html#text3">[3]</A> Scheme's primitive
+I/O facility gives you the choice of expressions or characters.  Instead of
+using <CODE>read-char</CODE>, we invent <CODE>read-line</CODE>, which reads a line as a
+sentence, and <CODE>read-string</CODE>, which returns the line as one long word.<P>
+<A NAME="ft4" HREF="instructor.html#text4">[4]</A> We don't talk about
+<CODE>eq?</CODE> at all.  We're careful to write our programs in such a way that
+the issue of identity doesn't arise for the reader.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch0/preface.html b/js/games/nluqo.github.io/~bh/ssch0/preface.html
new file mode 100644
index 0000000..7c367d1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch0/preface.html
@@ -0,0 +1,413 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme:Preface</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Preface</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="foreword.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="instructor.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>There are two schools of thought about teaching computer science.  We might
+caricature the two views this way:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>The conservative view:</STRONG> Computer programs have become too large and
+complex to encompass in a human mind.  Therefore, the job of computer
+science education is to teach people how to discipline their work in such a
+way that 500 mediocre programmers can join together and produce a program
+that correctly meets its specification.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>The radical view:</STRONG> Computer programs have become too large and
+complex to encompass in a human mind.  Therefore, the job of computer
+science education is to teach people how to expand their minds so that the
+programs <EM>can</EM> fit, by learning to think in a vocabulary of larger,
+more powerful, more flexible ideas than the obvious ones.  Each unit of
+programming thought must have a big payoff in the capabilities of the
+program.
+
+</TABLE><P>
+
+<P>Of course nobody would admit to endorsing the first approach as we've
+described it.  Yet many introductory programming courses seem to spend half
+their time on obscure rules of the programming language (semicolons go
+<EM>between</EM> the instructions in Pascal, but <EM>after</EM> each
+instruction in C) and the other half on stylistic commandments (thou shalt
+comment each procedure with its preconditions and postconditions; thou shalt
+not use <CODE>goto</CODE>).  In an article that was <EM>not</EM> intended as a
+caricature, the noted computer scientist Edsger Dijkstra argues that
+beginning computer science students <EM>should not be allowed to use
+computers,</EM> lest they learn to debug their programs interactively instead of
+writing programs that can be proven correct by formal methods before
+testing.<A NAME="text1" HREF="preface.html#ft1">[1]</A>
+
+<P>If you are about to be a student in an introductory computer science course,
+you may already be an experienced programmer of your home computer, or
+instead you may have only a vague idea of what you're getting into.  Perhaps
+you suspect that programming a computer is like programming a VCR: 
+entering endless obscure numeric codes.  Even if you're already a computer
+programmer, you may not yet have a clear idea of what computer <EM>
+science</EM> means.  In either case, what we want to do in this book is put
+our best foot forward&mdash;introduce you to some new ideas, get you excited,
+rather than mold you into a disciplined soldier of the programming army.
+
+<P>In order to understand the big ideas, though, we'll also have to expend some
+effort on technical details; studying computer science without writing
+computer programs is like trying to study German grammar without learning
+any of the words in the language.  But we'll try to keep the ideas in view
+while struggling with the details, and we hope you'll remember them too.
+
+<P><H2>One Big Idea: Symbolic Programming</H2>
+
+<P>We said that our approach to teaching computer science emphasizes big
+ideas.  Our explanation of symbolic programming in the following
+
+paragraphs is in part just an illustration of that approach.  But we chose
+this particular example for another reason also.  Scheme, the programming
+language used in this book, is an unusual choice for an introductory
+computer science course.  You may wonder why we didn't use a more
+traditional language, such as Pascal, Modula-2, or C.  Our discussion of
+symbolic programming is the beginning of an answer to that question.
+
+<P>Originally computers were about numbers.  Scientists used them to solve
+equations; businesses used them to compute the payroll and the inventory.
+We were rescued from this boring state of affairs mainly by researchers in
+<EM>artificial intelligence&mdash;</EM>people who wanted to get
+computers to think more nearly the way people do, about ideas in general
+rather than just numbers.
+
+<P>What does it mean to represent <EM>ideas</EM> in a computer?  Here's a simple
+example:  We want to teach the computer to answer the question, &quot;Was
+so-and-so a Beatle?&quot; We can't quite ask the question in English; in this
+book we interact with the computer using Scheme.  Our interactions will look
+like this:
+
+<P><P>
+You type: <CODE>(beatle? 'paul)</CODE>
+<P>Computer replies: <CODE>#t</CODE> (computerese for &quot;true&quot;)
+<P>
+<P>You type: <CODE>(beatle? 'elvis)</CODE>
+<P>Computer replies: <CODE>#f</CODE> (&quot;false&quot;)
+<P>
+<P>
+
+<P>Here's the program that does the job:
+
+<P><PRE>(define (beatle? person)
+  (member? person '(john paul george ringo)))
+</PRE>
+
+<P>If you examine this program with a (metaphoric) magnifying glass,
+you'll find that it's really still full of numbers.  In fact, each letter or
+punctuation character is represented in the computer by its own unique
+number.<A NAME="text2" HREF="preface.html#ft2">[2]</A>But the point
+of the example is that you don't have to know that!  When you see
+
+<P><PRE>(john paul george ringo)
+</PRE>
+
+<P>you don't have to worry about the numbers that represent the
+letters inside the computer; all you have to know is that you're seeing a
+<EM>sentence</EM> made up of four <EM>words.</EM>  Our programming
+language hides the underlying mechanism and lets us think in terms more
+appropriate to the problem we're trying to solve.  That hiding of details is
+called <EM>abstraction,</EM> one of the big ideas in this book.
+
+<P>
+
+<P>Programming with words and sentences is an example of
+symbolic programming.  In 1960 John McCarthy invented the
+Lisp programming language to handle symbolic computations like this
+one.  Our programming language, Scheme, is a modern dialect of Lisp.
+
+<P><H2>Lisp and Radical Computer Science</H2>
+
+<P>Symbolic programming is one aspect of the reason why we like to teach
+computer science using Scheme instead of a more traditional language.  More
+generally, Lisp (and therefore Scheme) was designed to support what we've
+called the radical view of computer science.  In this view, computer science
+is about tools for expressing ideas.  Symbolic programming allows <EM>the
+computer</EM> to express ideas; other aspects of Lisp's design help <EM>the
+programmer</EM> express ideas conveniently.  Sometimes that goal
+comes in conflict with the conservative computer scientist's goal of
+protection against errors.
+
+<P>Here's an example.  We want to tell our computer, &quot;To square a number,
+multiply it by itself.&quot; In Scheme we can say
+
+<P><PRE>(define (square num)
+  (* num num))
+</PRE>
+
+<P>The asterisk represents multiplication, and is followed by the
+two operands&mdash;in this case, both the same number.  This short program works
+for any number, of course, as we can see in the following dialogue.  (The
+lines with <CODE>&gt;</CODE> in front are the ones you type.)
+
+<P><PRE>&gt; (square 4)
+16
+&gt; (square 3.14)
+9.8596
+&gt; (square -0.3)
+0.09
+</PRE>
+
+<P>But the proponents of the 500-mediocre-programmer
+school<A NAME="text3" HREF="preface.html#ft3">[3]</A> think this straightforward approach
+is sinful.  &quot;What!&quot; they cry. &quot;You haven't said whether <CODE>num</CODE>
+is a whole number or a number with a decimal fraction!&quot; They're
+afraid that you might write the <CODE>square</CODE> program with whole
+numbers in mind, and then apply it to a decimal fraction <EM>by
+mistake.</EM> If you're on a team with 499 other programmers, it's easy
+to have failures of communication so that one programmer uses
+another's program in unintended ways.
+
+<P>To avoid that danger, they want you to write these two separate programs:
+
+<P><PRE>function SquareOfWholeNumber(num: integer): integer;
+  begin
+    SquareOfWholeNumber := num * num
+  end;
+
+function SquareOfDecimalNumber(num: real): real;
+  begin
+    SquareOfDecimalNumber := num * num
+  end;
+</PRE>
+
+<P>Isn't this silly?  Why do they pick this particular distinction
+(whole numbers and decimals) to worry about?  Why not positive and negative
+numbers, for example?  Why not odd and even numbers?
+
+<P>That two-separate-program example is written in the Pascal language.
+Pascal was designed by Niklaus Wirth, one of the leaders of the
+structured programming school, specifically to <EM>force</EM> programming
+students to write programs that fit conservative ideas about programming
+style and technique; you can't write a program in Pascal at all unless you
+write it in the approved style.  Naturally, this language has been very
+popular with school teachers.<A NAME="text4" HREF="preface.html#ft4">[4]</A> That's why, as
+we write this in 1993, the overwhelming majority of introductory computer
+science classes are taught using Pascal, even though no professional
+programmer would be caught dead using it.<A NAME="text5" HREF="preface.html#ft5">[5]</A>
+
+<P>
+
+<P>For fourteen years after the introduction of Pascal in 1970, its hegemony in
+computer science education was essentially unchallenged.  But in 1984, two
+professors at the Massachusetts Institute of Technology and a programmer
+at Bolt, Beranek and Newman (a commercial research lab) published
+the Scheme-based <EM>Structure and Interpretation of Computer Programs</EM>
+(Harold Abelson and Gerald Jay Sussman with
+Julie Sussman, MIT Press/McGraw-Hill).  That ground-breaking text
+brought the artificial intelligence approach to a wide audience for the
+first time.  We (Brian and Matt) have been teaching their course together
+for several years.  Each time, we learn something new.
+
+<P>The only trouble with <EM>SICP</EM> is that it was written for MIT students,
+all of whom love science and are quite comfortable with formal mathematics.
+Also, most of the students who use <EM>SICP</EM> at MIT have already learned
+to program computers before they begin.  As a result, many other schools
+have found the book too challenging for a beginning course.  We believe that
+everyone who is seriously interested in computer science must read <EM>
+SICP</EM> eventually.  Our book is a <EM>prequel;</EM> it's meant to teach you
+what you need to know in order to read that book
+successfully.<A NAME="text6" HREF="preface.html#ft6">[6]</A> Generally
+speaking, our primary goal in Parts I-V has been preparation for <EM>
+SICP,</EM> while the focus of Part VI is to connect the course with the kinds
+of programming used in &quot;real world&quot; application programs like spreadsheets
+and databases.  (These are the last example and the last project in the
+book.)
+
+<P><H2>Who Should Read This Book</H2>
+
+<P>This book is intended as an introduction to computer programming and to
+computer science for two kinds of students.
+
+<P>For those whose main interest is in some other field, we provide a
+self-contained, one-semester experience with computer programming in a
+language with a minimum of complicated notation, so that students can
+quickly come in contact with high-level ideas about algorithms, functions,
+and recursion.  The book ends with the implementation of a spreadsheet
+program and a database program, so it complements a computer application
+course in which the commercial versions of such programs are used.
+
+<P>For those who intend to continue the study of computer science but who have
+no prior programming experience, we offer a preparatory course, less intense
+than a traditional CS 1 but not limited to programming technique; we give
+the flavor of computer science ideas that will be studied in more depth later
+in the curriculum.  We also include an extensive discussion of recursion,
+which is a stumbling block for many beginning students.
+
+<P>The course at Berkeley for which we wrote this book includes both categories
+of students.  About 90% of the first-year students who intend to major in
+computer science have already had a programming course in high school, and
+most of them begin with <EM>SICP.</EM> The other 10% are advised to take
+this course first.  But many of the students in this course aren't computer
+science majors.  A few other departments (business administration and
+architecture are the main ones) have a specific computer course requirement,
+and all students must meet a broader &quot;quantitative reasoning&quot; requirement;
+our course satisfies these requirements.  Finally, some students come just
+out of curiosity about computers.
+
+<P>We assume that you have never programmed a computer.  On the other hand, we
+do assume that you can <EM>use</EM> a computer; we don't talk about how to
+turn it on, how to edit text, and so on, because those details are too
+different from one computer model to another.  If you've never used a
+computer before, you may wish to spend a few days with a book written
+specifically for your machine that will introduce you to its operation.
+It won't take more than a few days, because you don't have to be an expert
+before you read our book.  As long as you can start up the Scheme interpreter
+and correct your typing mistakes, you're ready.
+
+<P>We assume that you're not a mathematics lover.  (If you are, you might be
+ready to read <EM>SICP</EM> right away.)  The earlier example about squaring
+a number is about as advanced as we get.  And of course you don't have to do
+any arithmetic at all; computers are good at that.  You'll learn how to <EM>
+tell</EM> the computer to do arithmetic, but that's no harder than using a
+pocket calculator.  Most of our programming examples are concerned with
+words and sentences rather than with numbers.  A typical example is to get
+Scheme to figure out the plural form of a noun.  Usually that means putting
+an &quot;s&quot; on the end, but not quite always.  (What's the plural of &quot;French
+fry&quot;?)
+
+<P><H2>How to Read This Book</H2>
+
+<P>Do the exercises!  Whenever we teach programming, we always get students who
+say, &quot;When I read the book it all makes sense, but on the exams, when you
+ask me to write a program, I never know where to start.&quot; Computer science
+is two things: a bunch of big ideas, as we've been saying, and also a
+skill.  You can't learn the skill by watching.
+
+<P>Do the exercises on a computer!  It's not good enough to solve the exercises
+on paper, even if you feel sure your solution is correct.  Maybe it's 99%
+correct but there's some little detail you've overlooked.  When you run such
+a program, you won't get 99% of the answer you wanted.  By trying the
+exercise on the computer, you get unambiguous feedback.  If your program is
+correct, you get the response you expected.  If not, not.	
+
+<P>Don't feel bad if you don't get things right the first time.  Even the most
+experienced programmers have to <EM>debug</EM> their programs&mdash;that is, fix
+the parts that don't work.  In fact, an important part of what you'll learn
+from the exercises is the <EM>process</EM> of debugging your
+solutions.  It would be too bad if all of your programs in this course
+worked the first time, because that would let you avoid the practice in
+debugging that you'll certainly need when you write more complicated
+programs later.  Also, don't be afraid or ashamed to ask for help if you get
+stuck.  That, too, is part of the working style of professional programmers.
+
+<P>In some of the chapters, we've divided the exercises into two categories,
+&quot;boring&quot; and &quot;real.&quot; The boring exercises ask you to work through
+examples mechanically, to make sure you understand the rules.  The
+real exercises ask you to <EM>invent</EM> something, usually a small
+computer program, but sometimes an explanation of some situation that we
+present.  (In some chapters, the exercises are just labeled &quot;exercises,&quot;
+which means that they're all considered &quot;real.&quot;) We don't intend that the
+boring exercises be handed in; the idea is for you to do as many of them as
+you need to make sure you understand the mechanics of whatever topic you're
+learning.
+
+<P>Occasionally we introduce some idea with a simplified explanation, saving
+the whole truth for later.  We warn you when we do this.  Also, we sometimes
+write preliminary, partial, or incorrect example programs, and we always
+flag these with a comment like
+
+<P><PRE>(define (something foo baz)                  ;; first version
+  )
+</PRE>
+
+<P>When we introduce technical terms, we sometimes mention the
+origin of the word, if it's not obvious, to help prevent the terminology
+from seeming arbitrary.
+
+<P>This book starts easy but gets harder, in two different ways.  One is that we
+spend some time teaching you the basics of Scheme before we get to two
+hard big ideas, namely, function as object and recursion.  The
+earlier chapters are short and simple.  You may get the idea that the whole
+book will be trivial.  You'll change your mind in Parts III and IV.
+
+<P>The other kind of difficulty in the book is that it includes long
+programming examples and projects.  (&quot;Examples&quot; are programs we write and
+describe; &quot;projects&quot; are programs we ask you to write.)  Writing a long
+program is quite different from writing a short one.  Each small piece may
+be easy, but fitting them together and remembering all of them at once is a
+challenge.  The examples and projects get longer as the book progresses, but
+even the first example, tic-tac-toe, is much longer and more complex than
+anything that comes before it.
+
+<P>As the text explains more fully later, in this book we use some extensions
+
+
+to the standard Scheme language&mdash;features that we implemented ourselves, as
+Scheme programs.  If you are using this book in a course, your instructor
+will provide our programs for you, and you don't have to worry about it.
+But if you're reading the book on your own, you'll need to follow the
+instructions in Appendix A.
+
+<P>There are several reference documents at the end of the book.  If you
+don't understand a technical term in the text, try the Glossary for a
+short definition, or the General Index to find the more complete
+explanation in the text.  If you've forgotten how to use a particular
+Scheme primitive procedure, look in the Alphabetical Table
+of Scheme Primitives, or in the General Index.  If you've
+forgotten the name of the relevant primitive, refer to the inside
+back cover, where all the primitive procedures are listed by
+category.  Some of our example programs make reference to procedures
+that were defined earlier, either in another example or in an
+exercise.  If you're reading an example program and it refers to some
+procedure that's defined elsewhere, you can find that other procedure
+in the Index of Defined Procedures.
+
+<P>
+
+<A NAME="ft1" HREF="preface.html#text1">[1]</A> &quot;On the Cruelty of Really Teaching Computer Science,&quot;
+<EM>Communications of the ACM,</EM> vol. 32, no. 12, December, 1989.<P>
+<A NAME="ft2" HREF="preface.html#text2">[2]</A> The left parenthesis is 40, for example, and the letter
+<CODE>d</CODE> is 100.  If it were a capital <CODE>D</CODE> it would be 68.<P>
+<A NAME="ft3" HREF="preface.html#text3">[3]</A> Their own names for their approach are <EM>
+structured programming</EM> and <EM>
+software engineering.</EM><P>
+<A NAME="ft4" HREF="preface.html#text4">[4]</A> Of course, <EM>your</EM> teacher isn't
+an uptight authoritarian, or you wouldn't be using our book!<P>
+<A NAME="ft5" HREF="preface.html#text5">[5]</A> Okay, we're exaggerating.
+But even Professor Wirth himself has found Pascal so restrictive that he had
+to design more flexible languages&mdash;although not flexible enough&mdash;called
+Modula and Oberon.<P>
+<A NAME="ft6" HREF="preface.html#text6">[6]</A> As the ideas pioneered by <EM>SICP</EM> have
+spread, we are starting to see other intellectually respectable
+introductions to computer science that are meant as alternatives to <EM>
+SICP.</EM> In particular, we should acknowledge <EM>Scheme and the Art of
+Programming</EM> (George Springer and
+Daniel P. Friedman, MIT Press/McGraw-Hill, 1989) as a recognized
+classic.  We believe our book will serve as preparation for theirs, too.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="foreword.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="instructor.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch1/part1.html b/js/games/nluqo.github.io/~bh/ssch1/part1.html
new file mode 100644
index 0000000..6b80283
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch1/part1.html
@@ -0,0 +1,84 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science, Part 1: Introduction: Functions</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Part I</H2>
+<H1>Introduction: Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="showing.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR><BIG>
+
+<P>The purpose of these introductory pages before each part of the book is to
+call attention to a big idea that runs through all the work of several
+chapters.  In the chapters themselves, the big idea may sometimes be hidden
+from view because of the technical details that we need to make the idea
+work.  If you ever feel lost in the forest, you might want to refer back
+here.
+
+<P>In these first two chapters, our goal is to introduce the Scheme programming
+language and the idea of using <EM>functions</EM> as the building blocks of a
+computation.
+
+<P>The first chapter is a collection of short Scheme programs, presented to
+show off what Scheme can do.  We'll try to explain enough of the mechanism
+so that you don't feel completely mystified, but we'll defer the
+details until later.  Our goal is not for you to feel that you could
+re-create these programs, but rather that you get a sense of what <EM>kinds</EM> of programs we'll be working with.
+
+<P>The second chapter explores functions in some detail.  Traditionally,
+computer programs are built out of <EM>actions:</EM> First do this, then do
+that, and finally print the results.  Each step in the program <EM>does</EM>
+something.  Functional programming is different, in that we are less
+concerned with actions and more concerned with values.
+
+<P>For example, if you have a pocket calculator with a square root button, you
+could enter the number 3, push the button, and you'll see something like
+1.732050808 in the display.  How does the calculator know?  There are
+several possible processes that the calculator could carry out.  One
+process, for example, is to make a guess, square it, see if the result is
+too big or too small, and use that information to make a closer guess.
+That's a sequence of actions.  But ordinarily you don't care what actions
+the calculator takes;
+what interests you is that you want to apply the
+square root <EM>function</EM> to the <EM>argument</EM> 3, and get back a <EM>value.</EM> We're going to focus on this business of functions, arguments, and
+result values.
+
+<P>Don't think that functions have to involve numbers.  We'll be working with
+functions like &quot;first name,&quot; &quot;plural,&quot; and &quot;acronym.&quot; These functions
+have words and sentences as their arguments and values.
+
+<P>
+</BIG>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="showing.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch1/showing b/js/games/nluqo.github.io/~bh/ssch1/showing
new file mode 100644
index 0000000..22546ef
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch1/showing
@@ -0,0 +1,533 @@
+\input bkmacs
+% \photo{Scheme-Brained Hare}{\pagetag{\hare}\poop{Polly Jordan drawing}}
+\photo{Scheme-Brained Hare}{\pagetag{\hare}
+\pspicture{4in}{hare}{hare}{\TrimTop{60pt}\TrimRight{15pt}}}
+\chapter{Showing Off Scheme}
+\chaptag{\showing}
+
+We are going to use the programming language Scheme to teach you some big
+ideas in computer science.  The ideas are mostly about {\it
+\bkidx{control of}{complexity}---\/}that is, about how to develop a
+large computer program without being swamped in details.
+
+For example, once you've solved part of the large problem, you can give that
+partial solution a {\it name\/} and then you can use the named subprogram as
+if it were an indivisible operation, just like the ones that are built into
+the computer.  Thereafter, you can forget about the details of that
+subprogram.  This is the beginning of the idea of {\it \idx{abstraction},\/}
+which we'll discuss in more depth throughout the book.
+
+The big ideas are what this book is about, but first we're going to
+introduce you to Scheme.  (Scheme is a dialect of Lisp, a family of computer
+programming languages invented for computing with words, sentences, and
+ideas instead of just numbers.)
+
+\subhd{Talking to Scheme}
+
+The incantations to get Scheme running will be different for each model of
+computer.  Appendix A talks about these details; you can look up the
+particular version of Scheme that you're using.  That appendix will also
+tell you how to load the file {\tt simply.scm}, which you need to make the
+examples in this book work.
+
+When Scheme has started up and is ready for you to interact with it,
+you'll see a message on the screen, something like this:
+
+{\prgex%
+Welcome to XYZ Brand Scheme.
+>
+}
+
+\noindent The {\tt >} is a {\it \idx{prompt},\/} Scheme's way of telling you
+that it's ready for you to type something.  Scheme is an {\it interactive\/}
+programming language.  In other words, you type a request to Scheme, then
+Scheme prints the answer, and then you get another prompt.  Try it out:
+
+{\prgex%
+> \pmb{6}
+6
+}
+
+\noindent We just asked Scheme, ``What is 6?'' and Scheme told us that 6 is
+6.  Most of the time we ask harder questions:
+
+{\prgex%
+> \pmb{(+ 4 7)}
+11
+> \pmb{(- 23 5)}
+18
+> \pmb{(+ 5 6 7 8)}
+26
+}
+
+\noindent Whenever something you type to Scheme is enclosed in parentheses,
+\justidx{parentheses, for procedure invocation}
+it indicates a request to carry out a {\it \idx{procedure}.\/} (We'll define
+``procedure'' more formally later, but for now it means something that
+Scheme knows how to do.  A procedure tells Scheme how to compute
+a particular function.)  The first thing inside the parentheses indicates
+what procedure to use; the others are {\it \idx{argument}s,\/} i.e., values
+that are used as data by the procedure.
+
+Scheme has non-numeric procedures, too:
+
+{\prgex%
+> \pmb{(word 'comp 'uter)}
+COMPUTER
+}
+
+\noindent (If this last example gives an error message saying
+that Scheme doesn't understand the name {\tt word}, it means that you
+didn't load the file {\tt simply.scm}.  Consult Appendix A.)
+
+In these first examples, we've shown what you type in {\tt \pmb{boldface}} and
+what the computer responds in {\tt lightface}.  Hereafter, we will rely on
+the prompt characters to help you figure out who's talking on which line.
+
+For the most part, Scheme doesn't care about whether you type in UPPER CASE
+or lower case.  For the examples in this book, we'll assume that you always
+type in lower case and that the computer prints in upper case.  Your Scheme
+might print in lower case; it doesn't matter.
+
+\subhd{Recovering from Typing Errors}
+
+Don't worry if you make a mistake typing these examples in; you can just try
+again.  One of the great things about interactive programming languages is
+that you can experiment in them.
+
+The parentheses and single quote marks are important; don't leave them out.
+If Scheme seems to be ignoring you, try typing a bunch of right parentheses,
+{\tt ))))))}, and hitting the {\tt return} or {\tt enter} key.  (That's
+because Scheme doesn't do anything until you've closed all the parentheses
+you've opened, so if you have an extra left parenthesis, you can keep typing
+forever with no response.)
+
+Another problem you might encounter is seeing a long message that you don't
+understand and then finding yourself with something other than a Scheme
+prompt.  This happens when Scheme considers what you typed as an
+\justidx{error messages}
+error.  Here's an example; for now, never mind exactly why this is an
+error.  We just want to talk about the result:
+
+{\prgex%
+> (+ 2 a)
+
+Unbound variable a
+;Package: (user)
+
+2 Error->
+}
+
+\noindent The exact form of the message you get will depend on the version
+of Scheme that you're using.  For now, the important point is that some
+versions deal with errors by leaving you talking to a {\it \idx{debugger}\/}
+instead of to Scheme itself.  The debugger may have a completely different
+language.  It's meant to help you figure out what's wrong in a large program
+you've written.  For a beginner, though, it's more likely to get in the way.
+Read the documentation for your particular Scheme dialect to learn how to
+escape from the debugger.  (In some versions you don't get trapped in a
+debugger when you make an error, so this problem may not arise.)
+
+\vskip 12pt
+% kludge to prevent repagination on last-minute 2/e fix.
+
+\subhd{Exiting Scheme}
+
+Although there's no official standard way to exit Scheme, most versions
+use the notation
+
+{\prgex%
+> (\prgidx{exit})
+}
+
+\noindent for this purpose.  If you type in some of the examples that
+follow and then exit from Scheme, what you type won't be remembered the
+next time you use Scheme.  (Appendix A talks about how to use a text editor
+along with Scheme to make a permanent record of your work.)
+
+\subhd{More Examples}
+
+We're about to show you a few examples of (we hope) interesting programs in
+Scheme.  Play with them!  Type them into your computer and try invoking them
+with different data.  Again, don't worry too much if something doesn't
+work---it probably just means that you left out a parenthesis, or some such
+thing.
+
+While you're going through these examples, see how much you can figure out
+for yourself about how they work.  In particular, try guessing what the
+names of procedures, such as {\tt first} and {\tt keep}, mean.  Some of them
+will probably be obvious, some of them harder.  The point isn't to see how
+smart you are, but to get you thinking about the {\it kinds\/} of things you
+want to be able to do in a computer program.  Later on we'll go through
+these examples in excruciating detail and tell you the official meanings of all
+the pieces.
+
+Besides learning the {\it vocabulary\/} of Scheme, another point of
+this activity is to give you a feeling for the ways in which we put these
+names together in a program.  Every programming language has its own flavor.
+For example, if you've programmed before in other languages, you may be
+surprised not to find anything that says {\tt print} in these examples.
+
+On the other hand, some of these examples are programs that we won't
+expect you to understand fully until most of the way through this
+book.  So don't worry if something doesn't make sense; just try to
+get some of the flavor of Scheme programming.
+
+\subhd{Example:\ Acronyms}
+
+Here's our first new program.  So far we have just been using procedures
+built into Scheme: {\tt +}, {\tt -}, and {\tt word}.  When you first start
+up Scheme, it knows 100--200 procedures.  These are called {\it primitive\/}
+\justidx{procedure, primitive}
+\justidx{primitive procedure}
+\justidx{procedure, compound}
+\justidx{compound procedure}
+procedures.  Programming in Scheme means defining new procedures, called
+{\it compound\/} procedures.  Right now we're going to invent one that finds
+the acronym for a title:
+
+{\prgexskipamount=10pt\prgexbaselineamount=10.5pt
+{\prgex%
+(define (\ufun{acronym} phrase)
+  (accumulate word (every first phrase)))
+
+> (acronym '(american civil liberties union))
+ACLU
+
+> (acronym '(reduced instruction set computer))
+RISC
+
+> (acronym '(quod erat demonstrandum))
+QED
+}
+
+Did you have trouble figuring out what all the pieces do in the {\tt
+acronym} procedure?  Try these examples:
+
+{\prgex%
+> (first 'american)
+A
+
+> (every first '(american civil liberties union))
+(A C L U)
+
+> (accumulate word '(a c l u))
+ACLU
+}
+
+Notice that this simple {\tt acronym} program doesn't always do exactly what
+you might expect:
+
+{\prgex%
+> (acronym '(united states of america))
+USOA
+}
+
+\noindent We can rewrite the program to leave out certain words:
+
+{\prgex%
+(define (\ufun{acronym} phrase)
+  (accumulate word (every first (keep real-word? phrase))))
+
+(define (\ufun{real-word?} wd)
+  (not (member? wd '(a the an in of and for to with))))
+
+> (acronym '(united states of america))
+USA
+
+> (acronym '(structure and interpretation of computer programs))
+SICP
+
+> (acronym '(association for computing machinery))
+ACM
+
+> (real-word? 'structure)
+#T
+
+> (real-word? 'of)
+#F\pgfoot
+
+> (keep real-word? '(united network command for law and enforcement))
+(UNITED NETWORK COMMAND LAW ENFORCEMENT)
+}
+\vfootnt{In some versions of Scheme you might see {\tt ()} instead
+of {\tt \#F}.}
+} %%% skip kludge
+
+\subhd{Example:\ Pig Latin}
+
+Our next example translates a word into \bkidx{Pig}{Latin}.\footnt{Pig
+Latin is a not-very-secret secret language that many little kids learn.
+Each word is translated by moving all the initial consonants to the end of
+the word, and adding ``ay'' at the end.  It's usually spoken rather than
+written, but that's a little harder to do on a computer.}
+
+\pagetag{\pig}
+% \picture{1.9in}{Pig speaking Latin}
+% ingualay atinalay orcinapay
+\pspicture{1.9in}{pig}{pig}{\TrimBoundingBox{14pt}}
+
+{\let\goodbreak=\relax\prgex%
+(define (\ufun{pigl} wd)
+  (if (member? (first wd) 'aeiou)
+      (word wd 'ay)
+      (pigl (word (butfirst wd) (first wd)))))
+
+> (pigl 'spaghetti)
+AGHETTISPAY
+
+> (pigl 'ok)
+OKAY
+}\penalty10000\vskip 6pt
+(By the way, if you've used other programming languages before, don't fall
+\justidx{lines of a program}
+into the trap of thinking that each line of the {\tt pigl} definition is a
+``statement'' and that the\penalty-10000 statements\penalty-200\ are executed one after the other.
+That's not how it works in Scheme.  The entire thing is a single expression,
+and what counts is the grouping with parentheses.  Starting a new line is no
+different from a space between words as far as Scheme is concerned.  We
+could have defined {\tt pigl} on one humongous line and it would mean the
+same thing.  Also, Scheme doesn't care about how we've indented the lines so
+\justidx{indentation in a program}
+that subexpressions line up under each other.  We do that only to make the
+program more readable for human beings.)
+
+The procedure follows one of two possible paths, depending on whether the
+first letter of the given word is a vowel.  If so, {\tt pigl} just adds
+the letters {\tt ay} at the end:
+
+{\prgex%
+> (pigl 'elephant)
+ELEPHANTAY
+}
+
+The following examples might make it a little more clear how the
+starting-consonant case works:
+
+{\prgex%
+> (first 'spaghetti)
+S
+
+> (butfirst 'spaghetti)
+PAGHETTI
+
+> (word 'paghetti 's)
+PAGHETTIS
+
+> (define (\ufun{rotate} wd)
+    (word (butfirst wd) (first wd)))
+
+> (rotate 'spaghetti)
+PAGHETTIS
+
+> (rotate 'paghettis)
+AGHETTISP
+
+> (pigl 'aghettisp)
+AGHETTISPAY
+}
+
+You've seen {\tt every} before, in the {\tt acronym} example, but we haven't
+told you what it does.  Try to guess what Scheme will respond when you type
+this:
+
+{\prgex%
+(every pigl '(the ballad of john and yoko))
+}
+
+\subhd{Example:\ Ice Cream Choices}
+
+\vskip-2pt
+Here's a somewhat more complicated program, but still pretty short
+considering what it accomplishes:
+
+\vskip-2pt
+{\prgex\blskip8%
+(define (\ufun{choices} menu)
+  (if (null? menu)
+      '(())
+      (let ((smaller (choices (cdr menu))))
+	(reduce append
+		(map (lambda (item) (prepend-every item smaller))
+		     (car menu))))))
+
+(define (\ufun{prepend-every} item lst)
+  (map (lambda (choice) (se item choice)) lst))
+
+> (choices '((small medium large)
+	     (vanilla (ultra chocolate) (rum raisin) ginger)
+	     (cone cup)))
+((SMALL VANILLA CONE)
+ (SMALL VANILLA CUP)
+ (SMALL ULTRA CHOCOLATE CONE)
+ (SMALL ULTRA CHOCOLATE CUP)
+ (SMALL RUM RAISIN CONE)
+ (SMALL RUM RAISIN CUP)
+ (SMALL GINGER CONE)
+ (SMALL GINGER CUP)
+ (MEDIUM VANILLA CONE)
+ (MEDIUM VANILLA CUP)
+ (MEDIUM ULTRA CHOCOLATE CONE)
+ (MEDIUM ULTRA CHOCOLATE CUP)
+ (MEDIUM RUM RAISIN CONE)
+ (MEDIUM RUM RAISIN CUP)
+ (MEDIUM GINGER CONE)
+ (MEDIUM GINGER CUP)
+ (LARGE VANILLA CONE)
+ (LARGE VANILLA CUP)
+ (LARGE ULTRA CHOCOLATE CONE)
+ (LARGE ULTRA CHOCOLATE CUP)
+ (LARGE RUM RAISIN CONE)
+ (LARGE RUM RAISIN CUP)
+ (LARGE GINGER CONE)
+ (LARGE GINGER CUP))
+}
+
+\noindent Notice that in writing the program we didn't have to say how
+many menu categories there are, or how many choices in each category.
+This one program will work with any menu---try it out yourself.
+
+\subhd{Example:\ Combinations from a Set}
+
+Here's a more mathematical example.  We want to know all the possible
+combinations of, let's say, three things from a list of five possibilities.
+For example, we want to know all the teams of three people that can
+be chosen from a group of five people.  ``Dozy, Beaky, and Tich'' counts as
+the same team as ``Beaky, Tich, and Dozy''; the order within a team doesn't
+matter.
+
+Although this will be a pretty short program, it's more complicated than it
+looks.  We don't expect you to be able to figure out the \idx{algorithm}
+yet.\footnt{What's an {\it algorithm\/}?  It's a method for solving a
+problem.  The usual analogy is to a recipe in cooking, although you'll see
+throughout this book that we want to get away from the aspect of that
+analogy that emphasizes the {\it sequential\/} nature of a recipe---first do
+this, then do that, etc.  There can be more than one algorithm to solve the
+same problem.} Instead, we just want you to marvel at Scheme's ability to
+express difficult techniques succinctly.
+
+{\prgex%
+(define (\ufun{combinations} size set)
+  (cond ((= size 0) '(()))
+	((empty? set) '())
+	(else (append (prepend-every (first set)
+				     (combinations (- size 1)
+						   (butfirst set)))
+		      (combinations size (butfirst set))))))
+
+> (combinations 3 '(a b c d e))
+((A B C) (A B D) (A B E) (A C D) (A C E)
+ (A D E) (B C D) (B C E) (B D E) (C D E))
+
+> (combinations 2 '(john paul george ringo))
+((JOHN PAUL) (JOHN GEORGE) (JOHN RINGO)
+ (PAUL GEORGE) (PAUL RINGO) (GEORGE RINGO))
+}
+
+\noindent (If you're trying to figure out the algorithm despite our warning,
+here's a hint:  All the combinations of three letters shown above can be
+divided into two groups.  The first group consists of the ones that start
+with the letter {\tt A} and contain two more letters; the second group has
+three letters not including {\tt A}.  The procedure finds these two groups
+separately and combines them into one.  If you want to try to understand all
+the pieces, try playing with them separately, as we encouraged you to do
+with the {\tt pigl} and {\tt acronym} procedures.)
+
+If you've taken a probability course, you know that there is a formula for the
+{\it number\/} of possible combinations.  The most
+traditional use of computers is to work through such formulas and compute
+numbers.  However, not all problems are numeric.
+Lisp, the programming language family of which Scheme is a member, is
+unusual in its emphasis on {\it symbolic\/} computing.  In this example,
+listing the actual combinations instead of just counting them is part of the
+flavor of \swapidx{symbolic}{computing}, along with our earlier examples about
+\justidx{symbolic programming}
+\justidx{programming, symbolic}
+manipulating words and phrases.  We'll try to avoid numeric
+problems when possible, because symbolic computing is more fun
+for most people.
+
+\subhd{Example:\ Factorial}
+
+Scheme can handle numbers, too.  The \idx{factorial} of $n$ (usually written
+in mathematical notation as $n!$) is the product of all the numbers from 1 to
+$n$:
+\justufun{factorial}
+
+{\prgex\prgexpenalty=0%
+(define (factorial n)
+  (if (= n 0)
+      1
+      (* n (factorial (- n 1)))))
+
+> (factorial 4)
+24
+
+> (factorial 1000)
+4023872600770937735437024339230039857193748642107146325437999104299385
+1239862902059204420848696940480047998861019719605863166687299480855890
+1323829669944590997424504087073759918823627727188732519779505950995276
+1208749754624970436014182780946464962910563938874378864873371191810458
+2578364784997701247663288983595573543251318532395846307555740911426241
+7474349347553428646576611667797396668820291207379143853719588249808126
+8678383745597317461360853795345242215865932019280908782973084313928444
+0328123155861103697680135730421616874760967587134831202547858932076716
+9132448426236131412508780208000261683151027341827977704784635868170164
+3650241536913982812648102130927612448963599287051149649754199093422215
+6683257208082133318611681155361583654698404670897560290095053761647584
+7728421889679646244945160765353408198901385442487984959953319101723355
+5566021394503997362807501378376153071277619268490343526252000158885351
+4733161170210396817592151090778801939317811419454525722386554146106289
+2187960223838971476088506276862967146674697562911234082439208160153780
+8898939645182632436716167621791689097799119037540312746222899880051954
+4441428201218736174599264295658174662830295557029902432415318161721046
+5832036786906117260158783520751516284225540265170483304226143974286933
+0616908979684825901254583271682264580665267699586526822728070757813918
+5817888965220816434834482599326604336766017699961283186078838615027946
+5955131156552036093988180612138558600301435694527224206344631797460594
+6825731037900840244324384656572450144028218852524709351906209290231364
+9327349756551395872055965422874977401141334696271542284586237738753823
+0483865688976461927383814900140767310446640259899490222221765904339901
+8860185665264850617997023561938970178600408118897299183110211712298459
+0164192106888438712185564612496079872290851929681937238864261483965738
+2291123125024186649353143970137428531926649875337218940694281434118520
+1580141233448280150513996942901534830776445690990731524332782882698646
+0278986432113908350621709500259738986355427719674282224875758676575234
+4220207573630569498825087968928162753848863396909959826280956121450994
+8717012445164612603790293091208890869420285106401821543994571568059418
+7274899809425474217358240106367740459574178516082923013535808184009699
+6372524230560855903700624271243416909004153690105933983835777939410970
+0277534720000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+}
+
+\noindent If this doesn't work because your computer is too small, try a
+more reasonably sized example, such as the factorial of 200.
+
+\subhd{Play with the Procedures}
+
+This chapter has introduced a lot of new ideas at once, leaving out all the
+details.  Our hope has been to convey the {\it flavor\/} of Scheme
+programming, before we get into Chapter 2, which is full of those missing
+details.  But you can't absorb the flavor just by reading;
+take some time out to play with these examples before you go on.
+
+\esubhd{Exercises}
+
+{\exercise  Do 20 push-ups.}
+
+{\exercise
+Calculate 1000 factorial by hand and see if the computer got the right
+answer.}
+
+{\exercise
+Create a file called {\tt acronym.scm} containing our acronym program, using
+the text editor provided for use with your version of Scheme.  Load the file
+into Scheme and run the program.  Produce a transcript file called {\tt
+acronym.log}, showing your interaction with Scheme as you test the program
+several times, and print it.
+}
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch1/showing.html b/js/games/nluqo.github.io/~bh/ssch1/showing.html
new file mode 100644
index 0000000..5cd02c5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch1/showing.html
@@ -0,0 +1,549 @@
+<P>
+
+<P><A NAME="hare"></A>
+<CENTER><IMG SRC="../ss-pics/hare.jpg" ALT="figure: hare"></CENTER><P><CENTER>Scheme-Brained Hare
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 1: Showing Off Scheme</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 1</H2>
+<H1>Showing Off Scheme</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch2/functions.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We are going to use the programming language Scheme to teach you some big
+ideas in computer science.  The ideas are mostly about <EM><A NAME="g1"></A><A NAME="g2"></A>control of complexity&mdash;</EM>that is, about how to develop a
+large computer program without being swamped in details.
+
+<P>For example, once you've solved part of the large problem, you can give that
+partial solution a <EM>name</EM> and then you can use the named subprogram as
+if it were an indivisible operation, just like the ones that are built into
+the computer.  Thereafter, you can forget about the details of that
+subprogram.  This is the beginning of the idea of <EM>abstraction,</EM>
+which we'll discuss in more depth throughout the book.
+
+<P>The big ideas are what this book is about, but first we're going to
+introduce you to Scheme.  (Scheme is a dialect of Lisp, a family of computer
+programming languages invented for computing with words, sentences, and
+ideas instead of just numbers.)
+
+<P><H2>Talking to Scheme</H2>
+
+<P>The incantations to get Scheme running will be different for each model of
+computer.  Appendix A talks about these details; you can look up the
+particular version of Scheme that you're using.  That appendix will also
+tell you how to load the file <CODE>simply.scm</CODE>, which you need to make the
+examples in this book work.
+
+<P>When Scheme has started up and is ready for you to interact with it,
+you'll see a message on the screen, something like this:
+
+<P><PRE>Welcome to XYZ Brand Scheme.
+>
+</PRE>
+
+<P>The <CODE>&gt;</CODE> is a <EM>prompt,</EM> Scheme's way of telling you
+that it's ready for you to type something.  Scheme is an <EM>interactive</EM>
+programming language.  In other words, you type a request to Scheme, then
+Scheme prints the answer, and then you get another prompt.  Try it out:
+
+<P><PRE>&gt; <B>6</B>
+6
+</PRE>
+
+<P>We just asked Scheme, &quot;What is 6?&quot; and Scheme told us that 6 is
+6.  Most of the time we ask harder questions:
+
+<P><PRE>&gt; <B>(+ 4 7)</B>
+11
+&gt; <B>(- 23 5)</B>
+18
+&gt; <B>(+ 5 6 7 8)</B>
+26
+</PRE>
+
+<P>Whenever something you type to Scheme is enclosed in parentheses,
+<A NAME="g3"></A>
+it indicates a request to carry out a <EM>procedure.</EM> (We'll define
+&quot;procedure&quot; more formally later, but for now it means something that
+Scheme knows how to do.  A procedure tells Scheme how to compute
+a particular function.)  The first thing inside the parentheses indicates
+what procedure to use; the others are <EM>arguments,</EM> i.e., values
+that are used as data by the procedure.
+
+<P>Scheme has non-numeric procedures, too:
+
+<P><PRE>&gt; <B>(word 'comp 'uter)</B>
+COMPUTER
+</PRE>
+
+<P>(If this last example gives an error message saying
+that Scheme doesn't understand the name <CODE>word</CODE>, it means that you
+didn't load the file <CODE>simply.scm</CODE>.  Consult Appendix A.)
+
+<P>In these first examples, we've shown what you type in <CODE><B>boldface</B></CODE> and
+what the computer responds in <CODE>lightface</CODE>.  Hereafter, we will rely on
+the prompt characters to help you figure out who's talking on which line.
+
+<P>For the most part, Scheme doesn't care about whether you type in UPPER CASE
+or lower case.  For the examples in this book, we'll assume that you always
+type in lower case and that the computer prints in upper case.  Your Scheme
+might print in lower case; it doesn't matter.
+
+<P><H2>Recovering from Typing Errors</H2>
+
+<P>Don't worry if you make a mistake typing these examples in; you can just try
+again.  One of the great things about interactive programming languages is
+that you can experiment in them.
+
+<P>The parentheses and single quote marks are important; don't leave them out.
+If Scheme seems to be ignoring you, try typing a bunch of right parentheses,
+<CODE>))))))</CODE>, and hitting the <CODE>return</CODE> or <CODE>enter</CODE> key.  (That's
+because Scheme doesn't do anything until you've closed all the parentheses
+you've opened, so if you have an extra left parenthesis, you can keep typing
+forever with no response.)
+
+<P>Another problem you might encounter is seeing a long message that you don't
+understand and then finding yourself with something other than a Scheme
+prompt.  This happens when Scheme considers what you typed as an
+<A NAME="g4"></A>
+error.  Here's an example; for now, never mind exactly why this is an
+error.  We just want to talk about the result:
+
+<P><PRE>&gt; (+ 2 a)
+
+Unbound variable a
+;Package: (user)
+
+2 Error->
+</PRE>
+
+<P>The exact form of the message you get will depend on the version
+of Scheme that you're using.  For now, the important point is that some
+versions deal with errors by leaving you talking to a <EM>debugger</EM>
+instead of to Scheme itself.  The debugger may have a completely different
+language.  It's meant to help you figure out what's wrong in a large program
+you've written.  For a beginner, though, it's more likely to get in the way.
+Read the documentation for your particular Scheme dialect to learn how to
+escape from the debugger.  (In some versions you don't get trapped in a
+debugger when you make an error, so this problem may not arise.)
+
+<P>
+
+<P><H2>Exiting Scheme</H2>
+
+<P>Although there's no official standard way to exit Scheme, most versions
+use the notation
+
+<P><PRE>&gt; (<A NAME="g5"></A>exit)
+</PRE>
+
+<P>for this purpose.  If you type in some of the examples that
+follow and then exit from Scheme, what you type won't be remembered the
+next time you use Scheme.  (Appendix A talks about how to use a text editor
+along with Scheme to make a permanent record of your work.)
+
+<P><H2>More Examples</H2>
+
+<P>We're about to show you a few examples of (we hope) interesting programs in
+Scheme.  Play with them!  Type them into your computer and try invoking them
+with different data.  Again, don't worry too much if something doesn't
+work&mdash;it probably just means that you left out a parenthesis, or some such
+thing.
+
+<P>While you're going through these examples, see how much you can figure out
+for yourself about how they work.  In particular, try guessing what the
+names of procedures, such as <CODE>first</CODE> and <CODE>keep</CODE>, mean.  Some of them
+will probably be obvious, some of them harder.  The point isn't to see how
+smart you are, but to get you thinking about the <EM>kinds</EM> of things you
+want to be able to do in a computer program.  Later on we'll go through
+these examples in excruciating detail and tell you the official meanings of all
+the pieces.
+
+<P>Besides learning the <EM>vocabulary</EM> of Scheme, another point of
+this activity is to give you a feeling for the ways in which we put these
+names together in a program.  Every programming language has its own flavor.
+For example, if you've programmed before in other languages, you may be
+surprised not to find anything that says <CODE>print</CODE> in these examples.
+
+<P>On the other hand, some of these examples are programs that we won't
+expect you to understand fully until most of the way through this
+book.  So don't worry if something doesn't make sense; just try to
+get some of the flavor of Scheme programming.
+
+<P><H2>Example: Acronyms</H2>
+
+<P>Here's our first new program.  So far we have just been using procedures
+built into Scheme: <CODE>+</CODE>, <CODE>-</CODE>, and <CODE>word</CODE>.  When you first start
+up Scheme, it knows 100-200 procedures.  These are called <EM>primitive</EM>
+<A NAME="g6"></A>
+<A NAME="g7"></A>
+<A NAME="g8"></A>
+<A NAME="g9"></A>
+procedures.  Programming in Scheme means defining new procedures, called
+<EM>compound</EM> procedures.  Right now we're going to invent one that finds
+the acronym for a title:
+
+<P><PRE>(define (<A NAME="g10"></A>acronym phrase)
+  (accumulate word (every first phrase)))
+
+&gt; (acronym '(american civil liberties union))
+ACLU
+
+&gt; (acronym '(reduced instruction set computer))
+RISC
+
+&gt; (acronym '(quod erat demonstrandum))
+QED
+</PRE>
+
+<P>Did you have trouble figuring out what all the pieces do in the <CODE>acronym</CODE> procedure?  Try these examples:
+
+<P><PRE>&gt; (first 'american)
+A
+
+&gt; (every first '(american civil liberties union))
+(A C L U)
+
+&gt; (accumulate word '(a c l u))
+ACLU
+</PRE>
+
+<P>Notice that this simple <CODE>acronym</CODE> program doesn't always do exactly what
+you might expect:
+
+<P><PRE>&gt; (acronym '(united states of america))
+USOA
+</PRE>
+
+<P>We can rewrite the program to leave out certain words:
+
+<P><PRE>(define (<A NAME="g11"></A>acronym phrase)
+  (accumulate word (every first (keep real-word? phrase))))
+
+(define (<A NAME="g12"></A>real-word? wd)
+  (not (member? wd '(a the an in of and for to with))))
+
+&gt; (acronym '(united states of america))
+USA
+
+&gt; (acronym '(structure and interpretation of computer programs))
+SICP
+
+&gt; (acronym '(association for computing machinery))
+ACM
+
+&gt; (real-word? 'structure)
+#T
+
+&gt; (real-word? 'of)
+#F<A NAME="text1" HREF="showing.html#ft1">[1]</A>
+&gt; (keep real-word? '(united network command for law and enforcement))
+(UNITED NETWORK COMMAND LAW ENFORCEMENT)
+</PRE>
+
+ 
+<H2>Example: Pig Latin</H2>
+
+<P>Our next example translates a word into <A NAME="g13"></A><A NAME="g14"></A>Pig Latin.<A NAME="text2" HREF="showing.html#ft2">[2]</A>
+
+<P><A NAME="pig"></A>
+<CENTER><IMG SRC="../ss-pics/pig.jpg" ALT="figure: pig"></CENTER>
+
+<P><PRE>(define (<A NAME="g15"></A>pigl wd)
+  (if (member? (first wd) 'aeiou)
+      (word wd 'ay)
+      (pigl (word (butfirst wd) (first wd)))))
+
+&gt; (pigl 'spaghetti)
+AGHETTISPAY
+
+&gt; (pigl 'ok)
+OKAY
+</PRE>
+(By the way, if you've used other programming languages before, don't fall
+<A NAME="g16"></A>
+<A NAME="g17"></A>
+into the trap of thinking that each line of the <CODE>pigl</CODE> definition is a
+&quot;statement&quot; and that they are executed one after the other.
+That's not how it works in Scheme.  The entire thing is a single expression,
+and what counts is the grouping with parentheses.  Starting a new line is no
+different from a space between words as far as Scheme is concerned.  We
+could have defined <CODE>pigl</CODE> on one humongous line and it would mean the
+same thing.  Also, Scheme doesn't care about how we've indented the lines so
+that subexpressions line up under each other.  We do that only to make the
+program more readable for human beings.)
+
+<P>The procedure follows one of two possible paths, depending on whether the
+first letter of the given word is a vowel.  If so, <CODE>pigl</CODE> just adds
+the letters <CODE>ay</CODE> at the end:
+
+<P><PRE>&gt; (pigl 'elephant)
+ELEPHANTAY
+</PRE>
+
+<P>The following examples might make it a little more clear how the
+starting-consonant case works:
+
+<P><PRE>&gt; (first 'spaghetti)
+S
+
+&gt; (butfirst 'spaghetti)
+PAGHETTI
+
+&gt; (word 'paghetti 's)
+PAGHETTIS
+
+&gt; (define (<A NAME="g18"></A>rotate wd)
+    (word (butfirst wd) (first wd)))
+
+&gt; (rotate 'spaghetti)
+PAGHETTIS
+
+&gt; (rotate 'paghettis)
+AGHETTISP
+
+&gt; (pigl 'aghettisp)
+AGHETTISPAY
+</PRE>
+
+<P>You've seen <CODE>every</CODE> before, in the <CODE>acronym</CODE> example, but we haven't
+told you what it does.  Try to guess what Scheme will respond when you type
+this:
+
+<P><PRE>(every pigl '(the ballad of john and yoko))
+</PRE>
+
+<P><H2>Example: Ice Cream Choices</H2>
+
+<P>
+Here's a somewhat more complicated program, but still pretty short
+considering what it accomplishes:
+
+<P>
+<PRE>(define (<A NAME="g19"></A>choices menu)
+  (if (null? menu)
+      '(())
+      (let ((smaller (choices (cdr menu))))
+	(reduce append
+		(map (lambda (item) (prepend-every item smaller))
+		     (car menu))))))
+
+(define (<A NAME="g20"></A>prepend-every item lst)
+  (map (lambda (choice) (se item choice)) lst))
+
+&gt; (choices '((small medium large)
+	     (vanilla (ultra chocolate) (rum raisin) ginger)
+	     (cone cup)))
+((SMALL VANILLA CONE)
+ (SMALL VANILLA CUP)
+ (SMALL ULTRA CHOCOLATE CONE)
+ (SMALL ULTRA CHOCOLATE CUP)
+ (SMALL RUM RAISIN CONE)
+ (SMALL RUM RAISIN CUP)
+ (SMALL GINGER CONE)
+ (SMALL GINGER CUP)
+ (MEDIUM VANILLA CONE)
+ (MEDIUM VANILLA CUP)
+ (MEDIUM ULTRA CHOCOLATE CONE)
+ (MEDIUM ULTRA CHOCOLATE CUP)
+ (MEDIUM RUM RAISIN CONE)
+ (MEDIUM RUM RAISIN CUP)
+ (MEDIUM GINGER CONE)
+ (MEDIUM GINGER CUP)
+ (LARGE VANILLA CONE)
+ (LARGE VANILLA CUP)
+ (LARGE ULTRA CHOCOLATE CONE)
+ (LARGE ULTRA CHOCOLATE CUP)
+ (LARGE RUM RAISIN CONE)
+ (LARGE RUM RAISIN CUP)
+ (LARGE GINGER CONE)
+ (LARGE GINGER CUP))
+</PRE>
+
+<P>Notice that in writing the program we didn't have to say how
+many menu categories there are, or how many choices in each category.
+This one program will work with any menu&mdash;try it out yourself.
+
+<P><H2>Example: Combinations from a Set</H2>
+
+<P>Here's a more mathematical example.  We want to know all the possible
+combinations of, let's say, three things from a list of five possibilities.
+For example, we want to know all the teams of three people that can
+be chosen from a group of five people.  &quot;Dozy, Beaky, and Tich&quot; counts as
+the same team as &quot;Beaky, Tich, and Dozy&quot;; the order within a team doesn't
+matter.
+
+<P>Although this will be a pretty short program, it's more complicated than it
+looks.  We don't expect you to be able to figure out the algorithm
+yet.<A NAME="text3" HREF="showing.html#ft3">[3]</A> Instead, we just want you to marvel at Scheme's ability to
+express difficult techniques succinctly.
+
+<P><PRE>(define (<A NAME="g21"></A>combinations size set)
+  (cond ((= size 0) '(()))
+	((empty? set) '())
+	(else (append (prepend-every (first set)
+				     (combinations (- size 1)
+						   (butfirst set)))
+		      (combinations size (butfirst set))))))
+
+&gt; (combinations 3 '(a b c d e))
+((A B C) (A B D) (A B E) (A C D) (A C E)
+ (A D E) (B C D) (B C E) (B D E) (C D E))
+
+&gt; (combinations 2 '(john paul george ringo))
+((JOHN PAUL) (JOHN GEORGE) (JOHN RINGO)
+ (PAUL GEORGE) (PAUL RINGO) (GEORGE RINGO))
+</PRE>
+
+<P>(If you're trying to figure out the algorithm despite our warning,
+here's a hint:  All the combinations of three letters shown above can be
+divided into two groups.  The first group consists of the ones that start
+with the letter <CODE>A</CODE> and contain two more letters; the second group has
+three letters not including <CODE>A</CODE>.  The procedure finds these two groups
+separately and combines them into one.  If you want to try to understand all
+the pieces, try playing with them separately, as we encouraged you to do
+with the <CODE>pigl</CODE> and <CODE>acronym</CODE> procedures.)
+
+<P>If you've taken a probability course, you know that there is a formula for the
+<EM>number</EM> of possible combinations.  The most
+traditional use of computers is to work through such formulas and compute
+numbers.  However, not all problems are numeric.
+Lisp, the programming language family of which Scheme is a member, is
+unusual in its emphasis on <EM>symbolic</EM> computing.  In this example,
+listing the actual combinations instead of just counting them is part of the
+flavor of <A NAME="g22"></A>symbolic computing, along with our earlier examples about
+<A NAME="g23"></A>
+<A NAME="g24"></A>
+manipulating words and phrases.  We'll try to avoid numeric
+problems when possible, because symbolic computing is more fun
+for most people.
+
+<P><H2>Example: Factorial</H2>
+
+<P>Scheme can handle numbers, too.  The factorial of <EM>n</EM> (usually written
+in mathematical notation as <EM>n</EM>!) is the product of all the numbers from 1 to
+<EM>n</EM>:
+<A NAME="g25"></A>
+
+<P><PRE>(define (factorial n)
+  (if (= n 0)
+      1
+      (* n (factorial (- n 1)))))
+
+&gt; (factorial 4)
+24
+
+&gt; (factorial 1000)
+4023872600770937735437024339230039857193748642107146325437999104299385
+1239862902059204420848696940480047998861019719605863166687299480855890
+1323829669944590997424504087073759918823627727188732519779505950995276
+1208749754624970436014182780946464962910563938874378864873371191810458
+2578364784997701247663288983595573543251318532395846307555740911426241
+7474349347553428646576611667797396668820291207379143853719588249808126
+8678383745597317461360853795345242215865932019280908782973084313928444
+0328123155861103697680135730421616874760967587134831202547858932076716
+9132448426236131412508780208000261683151027341827977704784635868170164
+3650241536913982812648102130927612448963599287051149649754199093422215
+6683257208082133318611681155361583654698404670897560290095053761647584
+7728421889679646244945160765353408198901385442487984959953319101723355
+5566021394503997362807501378376153071277619268490343526252000158885351
+4733161170210396817592151090778801939317811419454525722386554146106289
+2187960223838971476088506276862967146674697562911234082439208160153780
+8898939645182632436716167621791689097799119037540312746222899880051954
+4441428201218736174599264295658174662830295557029902432415318161721046
+5832036786906117260158783520751516284225540265170483304226143974286933
+0616908979684825901254583271682264580665267699586526822728070757813918
+5817888965220816434834482599326604336766017699961283186078838615027946
+5955131156552036093988180612138558600301435694527224206344631797460594
+6825731037900840244324384656572450144028218852524709351906209290231364
+9327349756551395872055965422874977401141334696271542284586237738753823
+0483865688976461927383814900140767310446640259899490222221765904339901
+8860185665264850617997023561938970178600408118897299183110211712298459
+0164192106888438712185564612496079872290851929681937238864261483965738
+2291123125024186649353143970137428531926649875337218940694281434118520
+1580141233448280150513996942901534830776445690990731524332782882698646
+0278986432113908350621709500259738986355427719674282224875758676575234
+4220207573630569498825087968928162753848863396909959826280956121450994
+8717012445164612603790293091208890869420285106401821543994571568059418
+7274899809425474217358240106367740459574178516082923013535808184009699
+6372524230560855903700624271243416909004153690105933983835777939410970
+0277534720000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000
+</PRE>
+
+<P>If this doesn't work because your computer is too small, try a
+more reasonably sized example, such as the factorial of 200.
+
+<P><H2>Play with the Procedures</H2>
+
+<P>This chapter has introduced a lot of new ideas at once, leaving out all the
+details.  Our hope has been to convey the <EM>flavor</EM> of Scheme
+programming, before we get into Chapter 2, which is full of those missing
+details.  But you can't absorb the flavor just by reading;
+take some time out to play with these examples before you go on.
+
+<P><H2>Exercises</H2>
+
+<P><B>1.1</B>&nbsp;&nbsp; Do 20 push-ups.
+
+<P><B>1.2</B>&nbsp;&nbsp;Calculate 1000 factorial by hand and see if the computer got the right
+answer.
+
+<P><B>1.3</B>&nbsp;&nbsp;Create a file called <CODE>acronym.scm</CODE> containing our acronym program, using
+the text editor provided for use with your version of Scheme.  Load the file
+into Scheme and run the program.  Produce a transcript file called <CODE>acronym.log</CODE>, showing your interaction with Scheme as you test the program
+several times, and print it.
+
+
+<P>
+<HR>
+<A NAME="ft1" HREF="showing.html#text1">[1]</A> In some versions of Scheme you might see <CODE>()</CODE> instead
+of <CODE>#F</CODE>.<P>
+<A NAME="ft2" HREF="showing.html#text2">[2]</A> Pig
+Latin is a not-very-secret secret language that many little kids learn.
+Each word is translated by moving all the initial consonants to the end of
+the word, and adding &quot;ay&quot; at the end.  It's usually spoken rather than
+written, but that's a little harder to do on a computer.<P>
+<A NAME="ft3" HREF="showing.html#text3">[3]</A> What's an <EM>algorithm</EM>?  It's a method for solving a
+problem.  The usual analogy is to a recipe in cooking, although you'll see
+throughout this book that we want to get away from the aspect of that
+analogy that emphasizes the <EM>sequential</EM> nature of a recipe&mdash;first do
+this, then do that, etc.  There can be more than one algorithm to solve the
+same problem.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch2/functions.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch10/ttt b/js/games/nluqo.github.io/~bh/ssch10/ttt
new file mode 100644
index 0000000..85f731e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch10/ttt
@@ -0,0 +1,1127 @@
+\input bkmacs
+\pagetag{\tttttm}\photo{This computer, built of Tinker-Toy parts, plays
+tic-tac-toe.}{\pspicture{4in}{tinker}{tinker}{\TrimLeft{60pt}}}
+\chapter{Example: Tic-Tac-Toe}
+\chaptag{\ttt}
+\catcode`\_=12
+
+Now that you've learned about higher-order functions, we're going to look at
+a large example that uses them extensively.  Using the
+techniques you've learned so far, we're going to write a program that plays
+perfect tic-tac-toe.
+
+You can load our program into Scheme by typing
+
+{\prgex%
+(load "ttt.scm")
+}
+
+\noindent (See Appendix A if this doesn't work for you.)
+
+\subhd{A Warning}
+
+Programs don't always come out right the first time.  One of our goals in
+this chapter is to show you how a program is developed, so we're presenting
+early versions of procedures.  These include some mistakes that we made, and
+also some after-the-fact simplifications to make our explanations
+easier.  If you type in these early versions, they won't work.  We will show
+you how we corrected these ``bugs'' and also will present a complete, correct
+version at the end of the chapter.
+
+To indicate the unfinished versions of procedures, we'll use comments like
+``first version'' or ``not really part of game.''
+
+\subhd{Technical Terms in Tic-Tac-Toe}
+
+We'll number the squares of the board this way:
+
+{\ttboard123456789}
+
+We'll call a partially filled-in board a ``\idx{position}.''
+
+\ttboard__o_xox_x
+
+To the computer, the same position will be represented by the word {\ttx
+__o_xox_x}.  The nine letters of the word correspond to squares one through
+nine of the board.  (We're thinking ahead to the possibility of using {\tt
+item} to extract the $n$th square of a given position.)
+
+\subhd{Thinking about the Program Structure}
+
+Our top-level procedure, {\tt ttt}, will return the computer's next move 
+given the current position.  It takes two arguments:\ the current position
+and whether the computer is playing X or O.  If the computer is O and the
+board looks like the one above, then we'd invoke {\tt ttt} like this:
+
+{\prgex%
+(\ufun{ttt} '__o_xox_x 'o)
+}
+
+Here is a sample game:
+
+{\prgex%
+> (ttt '____x____ 'o)                   ; Human goes first in square 5
+1                                       ; Computer moves in square 1
+> (ttt 'o__xx____ 'o)                   ; Human moves in square 4
+6                                       ; Computer blocks in square 6
+> (ttt 'o_xxxo___ 'o)                   ; Human moves in square 3
+7                                       ; Computer blocks again
+> (ttt 'o_xxxoox_ 'o)
+2
+}
+
+This is not a complete game program!  Later, when we talk about input and
+output, you'll see how to write an interactive program that displays the
+board pictorially, asks the player where to move, and so on.  For now, we'll
+just write the {\it \idx{strategy}\/} procedure that chooses the next
+move.  As a paying customer, you wouldn't be satisfied with this
+partial program, but from the programmer's point of view, this is the more
+interesting part.
+
+Let's plan the computer's strategy in English before we start writing a
+computer program.  How do {\it you\/} play tic-tac-toe?  You have several
+strategy rules in your head, some of which are more urgent than others.  For
+example, if you can win on this move, then you just do it without thinking
+about anything else.  But if there isn't anything that immediate, you
+consider less urgent questions, such as how this move might affect what
+happens two moves later.
+
+So we'll represent this set of rules by a giant {\tt cond} expression:
+
+{\prgex%
+(define (ttt position me)                    ;; first version
+  (cond ((i-can-win?)
+         (choose-winning-move))
+        ((opponent-can-win?)
+         (block-opponent-win))
+        ((i-can-win-next-time?)
+         (prepare-win))
+        (else (whatever))))
+}
+
+We're imagining many helper procedures.  {\tt I-can-win?}\ will look at the
+board and tell if the computer has an immediate winning move. If so, {\tt
+choose-winning-move} will find that particular move.  {\tt
+Opponent-can-win?}\ returns true if the human player has an immediate
+winning move.  {\tt Block-opponent-win} will return a move that prevents the
+computer's opponent from winning, and so on.
+
+We didn't actually start by writing this definition of {\tt ttt}.  The
+particular names of helper procedures are just guesses, because we haven't
+yet planned the tic-tac-toe strategy in detail.  But we did know that this
+would be the overall structure of our program.  This big picture doesn't
+automatically tell us what to do next; different programmers might fill in
+the details differently.  But it's a framework to keep in mind during the
+rest of the job.
+
+Our first practical step was to think about the {\it
+\bkidx{data}{structure}s\/} in our program.  A data structure is a way of
+organizing several pieces of information into a big chunk.  For example, a
+sentence is a data structure that combines several words in a sequence (that
+is, in left-to-right order).
+
+In the first, handwavy version of {\tt ttt}, the strategy procedures like
+{\tt i-can-win?}\ are called with no arguments, but of course we knew they
+would need some information about the board position.  We began by thinking
+about how to represent that information within the program.
+
+\subhd{The First Step: Triples}
+
+A person looking at a tic-tac-toe board looks at the rows, columns, and
+diagonals.  The question ``do I have a winning move?'' is equivalent to the
+question ``are there three squares in a line such that two of them are mine
+and the last one is blank?''  In fact, nothing else matters about the game
+besides these potential winning combinations.
+
+There are eight potential winning combinations:\ three rows, three
+columns, and two diagonals.  Consider the combination containing the three
+squares 1, 5, and 9.  If it contains both an {\tt x} and an {\tt o} then
+nobody can win with this combination and there's nothing to think about.
+But if it contains two {\tt x}s and a free square, we're very interested in
+the combination.  What we want to know in particular is which square is
+free, since we want to move in that square to win or block.
+
+More generally, the only squares whose {\it numbers\/} we care about are the
+ones we might want to move into, namely, the free ones.  So the only
+interesting information about a square is whether it has an {\tt x} or an
+{\tt o}, and if not, what its number is.
+
+The information that 1, 5, 9 is a potential winning combination and the
+information that square 1 contains an {\tt x}, square 5 is empty, and square
+{\tt 9} contains another {\tt x} can be combined into the single word {\tt
+x5x}.  Looking at this word we can see immediately that there are two {\tt
+x}s in this ``\idx{triple}'' and that the free square is square 5.  So when we
+want to know about a three-square combination, we will turn it into a
+triple of that form.
+
+Here's a sample board position:
+
+\ttboard_xo_x_o__
+
+\noindent and here is a sentence of all of its triples:
+
+{\prgex%
+(1xo 4x6 o89 14o xx8 o69 1x9 oxo)
+}
+
+Take a minute to convince yourself that this sentence really does tell you
+everything you need to know about the corresponding board position.  Once
+our strategy procedure finds the triples for a board position, it's never
+going to look at the original position again.
+
+This technique of converting data from one form to another so that it can be
+manipulated more easily is an important idea in computer science.  There are
+really three \idx{representation}s of the same thing.  There's this picture:
+
+\ttboard_xo_x_o__
+
+\noindent as well as the word {\tt _xo_x_o__} and the sentence {\tt (1xo 4x6
+o89 14o xx8 o69 1x9 oxo)}.  All three of these formats have the same
+information but are convenient in different ways.  The pictorial form is
+convenient because it makes sense to the person who's playing tic-tac-toe.
+Unfortunately, you can't type that picture into a computer, so we need a
+different format, the word {\tt _xo_x_o__}, which contains the {\it
+contents\/} of the nine squares in the picture, but without the lines
+separating the squares and without the two-dimensional shape.
+
+The third format, the sentence, is quite {\it inconvenient\/} for human
+beings.  You'd never want to think about a tic-tac-toe board that way
+yourself, because the sentence doesn't have the visual simplicity that lets
+you take in a tic-tac-toe position at a glance.  But the sentence of triples
+is the most convenient representation for our program.  {\tt Ttt} will have
+to answer questions like ``can {\tt x} win on the next move?'' To do that, it
+will have to consider an equivalent but more detailed question:  ``For each
+of the eight possible winning combinations, can {\tt x} complete that
+combination on the next move?'' It doesn't really matter whether a
+combination is a row or a column; what does matter is that each of the eight
+combinations be readily available for inspection by the program.  The
+sentence-of-triples representation obscures part of the available
+information (which combination is where) to emphasize another part (making
+the eight combinations explicit, instead of implicit in the nine boxes of
+the diagram).
+
+The representation of fractions as ``mixed numerals,'' such as $2 {1 \over 3}$,
+and as ``improper fractions,'' such as $7 \over 3$, is a non-programming
+example of this idea about multiple representations.  A mixed numeral makes
+it easier for a person to tell how big the number is, but an improper
+fraction makes arithmetic easier.
+
+\subhd{Finding the Triples}
+
+We said that we would combine the current board position with the
+numbers of the squares in the eight potential winning combinations in order
+to compute the things we're calling triples.  That was our first task in
+writing the program.
+
+Our program will start with this sentence of all the winning combinations:
+
+{\prgex%
+(123 456 789 147 258 369 159 357)
+}
+
+\noindent and a position word such as {\tt _xo_x_o__}; it will return a
+sentence of triples such as
+
+{\prgex%
+(1xo 4x6 o89 14o xx8 o69 1x9 oxo)
+}
+
+All that's necessary is to replace some of the numbers with {\tt x}s and
+{\tt o}s.  This kind of word-by-word translation in a sentence is a good job
+for {\tt every}.
+
+{\prgex%
+(define (find-triples position)              ;; first version
+  (every substitute-triple '(123 456 789 147 258 369 159 357)))
+}
+
+We've made up a name {\tt substitute-triple} for a procedure we haven't
+written yet.  This is perfectly OK, as long as we write it before we try to
+invoke {\tt find-triples}.  The {\tt substitute-triple} function will take
+three digits, such as {\tt 258}, and return a triple, such as {\tt 2x8}:
+
+{\prgex%
+(define (substitute-triple combination)      ;; first version
+  (every substitute-letter combination))
+}
+
+\noindent This procedure uses {\tt every} to call {\tt substitute-letter} on
+all three letters.
+
+There's a small problem, though.  {\tt Every} always returns a sentence, and
+we want our triple to be a word.  For example, we want to turn the potential
+winning combination {\tt 258} into the word {\tt 2x8}, but {\tt every} would
+return the sentence {\tt (2~x~8)}.  So here's our next version of {\tt
+substitute-triple}:
+
+{\prgex%
+(define (substitute-triple combination)      ;; second version
+  (accumulate word (every substitute-letter combination)))
+}
+
+{\tt Substitute-letter} knows that letter number 3 of the word that
+represents the board corresponds to the contents of square 3 of the board.
+This means that it can just call {\tt item} with the given square number and
+the board to find out what's in that square.  If it's empty, we return the
+square number itself; otherwise we return the contents of the square.
+
+{\prgex%
+(define (substitute-letter square)           ;; first version
+  (if (equal? '_ (item square position))
+      square
+      (item square position)))
+}
+
+Whoops!  Do you see the problem?
+
+{\prgex%
+> (substitute-letter 5)
+ERROR: Variable POSITION is unbound.
+}
+
+\subhd{Using \ttpmb{Every} with Two-Argument Procedures}
+
+Our procedure only takes one argument, {\tt square}, but it needs to know
+the position so it can find out what's in the given square.  So here's the
+real {\tt substitute-letter}:
+
+{\prgex%
+(define (\ufun{substitute-letter} square position)
+  (if (equal? '_ (item square position))
+      square
+      (item square position)))
+
+> (substitute-letter 5 '_xo_x_o__)
+X
+
+> (substitute-letter 8 '_xo_x_o__)
+8
+}
+
+\noindent Now {\tt substitute-letter} can do its job, since it has access to
+the position.  But we'll have to modify {\tt substitute-triple} to invoke
+{\tt substitute-letter} with two arguments.
+
+This is a little tricky.  Let's look again at the way we're using {\tt
+substitute-letter} inside {\tt substitute-triple}:
+
+{\prgex%
+(define (substitute-triple combination)      ;; second version again
+  (accumulate word (every substitute-letter combination)))
+}
+
+\noindent By giving {\tt substitute-letter} another argument, we have made
+this formerly correct procedure incorrect.  The first argument to {\tt every}
+must be a function of one argument, not two.  This is exactly the kind of
+situation in which {\tt lambda} can help us:  We have a function of two
+arguments, and we need a function of one argument that does the same thing,
+but with one of the arguments fixed.
+
+The procedure returned by
+
+{\prgex%
+(lambda (square) (substitute-letter square position))
+}
+
+\noindent does exactly the right thing; it takes a square as its argument
+and returns the contents of the position at that square.
+
+Here's the final version of {\tt substitute-triple}:
+
+{\prgex%
+(define (\ufun{substitute-triple} combination position)
+  (accumulate word
+	      (every (lambda (square)
+		       (substitute-letter square position))
+		     combination)))
+
+> (substitute-triple 456 '_xo_x_o__)
+"4X6"
+
+> (substitute-triple 147 '_xo_x_o__)
+"14O"
+
+> (substitute-triple 357 '_xo_x_o__)
+OXO
+}
+
+\noindent As you can see, Scheme prints some of these words with
+double-quote marks.  The rule is that a word that isn't a number but begins
+with a digit must be double-quoted.  But in the finished program we're not
+going to print such words at all; we're just showing you the working of a
+helper procedure.  Similarly, in this chapter we'll show direct invocations
+of helper procedures in which some of the arguments are \idx{string}s, but a
+user of the overall program won't have to use this notation.
+
+We've fixed the {\tt substitute-letter} problem by giving {\tt
+substitute-triple} an extra argument, so we're going to have to go through
+the same process with {\tt find-triples}.  Here's the right version:
+
+{\prgex%
+(define (\ufun{find-triples} position)
+  (every (lambda (comb) (substitute-triple comb position))
+         '(123 456 789 147 258 369 159 357)))
+}
+
+\noindent It's the same trick.  {\tt Substitute-triple} is a procedure
+of two arguments.  We use {\tt lambda} to transform it into a procedure
+of one argument for use with {\tt every}.
+
+We've now finished {\tt find-triples}, one of the most important procedures in
+the game.
+
+{\prgex%
+> (find-triples '_xo_x_o__)
+("1XO" "4X6" O89 "14O" XX8 O69 "1X9" OXO)
+
+> (find-triples 'x_____oxo)
+(X23 456 OXO X4O "25X" "36O" X5O "35O")
+}
+
+Here again are the jobs of all three procedures we've written so far:
+
+\htstart
+<TABLE>
+<TR><TD><CODE>Substitute-letter&nbsp;&nbsp;</CODE>
+<TD>finds the letter in a single square.
+<TR><TD><CODE>Substitute-triple</CODE>
+<TD>finds all three leters corresponding to three squares.
+<TR><TD><CODE>Find-triples</CODE>
+<TD>finds all the letters in all eight winning combinations.
+</TABLE>
+\htend
+
+% \medskip
+% \def\tabRule{\noalign{\hrule}}
+% \def\two#1{\omit\span #1\hfil}
+% \noindent \vbox{\offinterlineskip
+% \baselineskip=12pt
+% \halign{\strut #\hfil & %function
+% \quad#\quad\hfil \cr%result
+% {\tt Substitute-letter}&finds the letter in a single square.\cr
+% {\tt Substitute-triple}&finds all three letters corresponding to
+% three squares.\cr
+% {\tt Find-triples}&finds all the letters in all eight winning
+% combinations.\cr
+% }}\hfil\medskip
+
+We've done all this because we think that the rest of the program can use
+the triples we've computed as data.  So we'll just compute the triples once
+for all the other procedures to use:
+
+{\prgex%
+(define (\ufun{ttt} position me)
+  (ttt-choose (find-triples position) me))
+
+(define (ttt-choose triples me)              ;; first version
+  (cond ((i-can-win? triples me)
+         (choose-winning-move triples me))
+        ((opponent-can-win? triples me)
+         (block-opponent-win triples me))
+        \ellipsis))
+}
+
+\subhd{Can the Computer Win on This Move?}
+
+The obvious next step is to write {\tt i-can-win?}, a procedure that should
+return {\tt \#t} if the computer can win on the current move---that is, if
+the computer already has two squares of a triple whose third square is empty.
+The triples {\tt x6x} and {\tt oo7} are examples.
+
+So we need a function that takes a word and a letter as arguments
+and counts how many times that letter appears in the word.  The
+{\tt appearances} primitive that we used in Chapter \functions\ (and
+that you re-implemented in Exercise \appear) will do the job:
+
+{\prgex%
+> (appearances 'o 'oo7)
+2
+
+> (appearances 'x 'oo7)
+0
+}
+
+The computer ``owns'' a triple if the computer's letter appears twice and
+the opponent's letter doesn't appear at all.  (The second condition is
+necessary to exclude cases like {\tt xxo}.)
+
+{\prgex%
+(define (\ufun{my-pair?} triple me)
+  (and (= (appearances me triple) 2)
+       (= (appearances (opponent me) triple) 0)))
+}
+
+Notice that we need a function {\tt opponent} that returns the opposite
+letter from ours.
+
+{\prgex%
+(define (\ufun{opponent} letter)
+  (if (equal? letter 'x) 'o 'x))
+
+> (opponent 'x)
+O
+
+> (opponent 'o)
+X
+
+> (my-pair? 'oo7 'o)
+#T
+
+> (my-pair? 'xo7 'o)
+#F
+
+> (my-pair? 'oox 'o)
+#F
+}
+
+Finally, the computer can win if it owns any of the triples:
+
+{\prgex%
+(define (i-can-win? triples me)                ;; first version
+  (not (empty?
+	(keep (lambda (triple) (my-pair? triple me))
+	      triples))))
+
+> (i-can-win? '("1xo" "4x6" o89 "14o" xx8 o69 "1x9" oxo) 'x)
+#T
+
+> (i-can-win? '("1xo" "4x6" o89 "14o" xx8 o69 "1x9" oxo) 'o)
+#F
+}
+
+\noindent By now you're accustomed to this trick with {\tt lambda}.  {\tt
+My-pair?}\ takes a triple and the computer's letter as arguments, but we
+want a function of one argument for use with {\tt keep}.
+
+\subhd{If So, in Which Square?}
+
+Suppose {\tt i-can-win?}\ returns {\tt \#t}.  We then have to find the
+particular square that will win the game for us.  This will involve a
+repetition of some of the same work we've already done:
+
+{\prgex%
+(define (choose-winning-move triples me)     ;; not really part of game
+  (keep number? (first (keep (lambda (triple) (my-pair? triple me))
+                             triples))))
+}
+
+\noindent We again use {\tt keep} to find the triples with two of the
+computer's letter, but this time we extract the number from the first such
+winning triple.
+
+We'd like to avoid this inefficiency.  As it turns out, generations of Lisp
+programmers have been in just this bind in the past, and so they've invented
+a \idx{kludge}\footnt{A kludge is a programming trick that doesn't follow
+the rules but works anyway somehow.  It doesn't rhyme with ``sludge''; it's
+more like ``clue'' followed by ``j'' as in ``Jim.''} to get around it.
+
+Remember we told you that everything other than {\tt \#f} counts as true?
+We'll take advantage of that by having a single procedure that returns the
+number of a winning square if one is available, or {\tt \#f} otherwise.  In
+Chapter \true\ we called such a procedure a ``semipredicate.'' The kludgy
+part is that \ttidx{cond} accepts a clause containing a single expression
+instead of the usual two expressions; if the expression has any true value,
+then {\tt cond} returns that value.  So we can say
+
+{\prgex%
+(define (ttt-choose triples me)              ;; second version
+  (cond ((i-can-win? triples me))
+        ((opponent-can-win? triples me))
+        \ellipsis))
+}
+
+\noindent where each {\tt cond} clause invokes a semipredicate.  We then
+modify {\tt i-can-win?}\ to have the desired behavior:
+
+{\prgex%
+(define (\ufun{i-can-win?} triples me)
+  (choose-win
+   (keep (lambda (triple) (my-pair? triple me))
+	 triples)))
+
+(define (\ufun{choose-win} winning-triples)
+  (if (empty? winning-triples)
+      #f
+      (keep number? (first winning-triples))))
+
+> (i-can-win? '("1xo" "4x6" o89 "14o" xx8 o69 "1x9" oxo) 'x)
+8
+
+> (i-can-win? '("1xo" "4x6" o89 "14o" xx8 o69 "1x9" oxo) 'o)
+#F
+}
+
+\vskip -5pt
+
+By this point, we're starting to see the structure of the overall program.
+There will be several procedures, similar to {\tt i-can-win?}, that will try
+to choose the next move.  {\tt I-can-win?} checks to see if the computer can
+win on this turn, another procedure will check to see if the computer should
+block the opponent's win next turn, and other procedures will check for
+other possibilities.  Each of these procedures will be what we've been
+calling ``semipredicates.'' That is to say, each will return the number of
+the square where the computer should move next, or {\tt \#f} if it can't
+decide.  All that's left is to figure out the rest of the computer's
+strategy and write more procedures like {\tt i-can-win?}.
+
+\backskipsubhd{Second Verse, Same as the First}{5}
+
+Now it's time to deal with the second possible strategy case:  The computer
+can't win on this move, but the opponent can win unless we block a triple
+right now.
+
+(What if the computer and the opponent both have immediate winning triples?
+In that case, we've already noticed the computer's win, and by winning the
+game we avoid having to think about blocking the opponent.)
+
+Once again, we have to go through the complicated business of finding
+triples that have two of the opponent's letter and none of the computer's
+letter---but it's already done!
+
+\vskip -2pt
+
+{\prgex%
+(define (\ufun{opponent-can-win?} triples me)
+  (i-can-win? triples (opponent me)))
+
+> (opponent-can-win? '("1xo" "4x6" o89 "14o" xx8 o69 "1x9" oxo) 'x)
+#F
+
+> (opponent-can-win? '("1xo" "4x6" o89 "14o" xx8 o69 "1x9" oxo) 'o)
+8
+}
+
+\vskip -2pt
+
+\penalty 10000
+
+\noindent Is that amazing or what?
+
+\goodbreak
+
+\subhd{Now the Strategy Gets Complicated}
+
+Since our goal here is to teach programming, rather than tic-tac-toe
+strategy, we're just going to explain the strategy we use and not give the
+history of how we developed it.
+
+The third step, after we check to see if either player can win on the next
+move, is to look for a situation in which a move that we make now will give
+rise to {\it two\/} winning triples next time.  Here's an example:
+
+\ttboard xo__x___o
+
+Neither {\tt x} nor {\tt o} can win on this move.  But if the computer is
+playing {\tt x}, moving in square 4 or square 7 will produce a situation
+with two winning triples.  For example, here's what happens if we move in
+square 7:
+
+\ttboard xo__x_x_o
+
+\noindent From this position, {\tt x} can win by moving either in square
+3 or in square 4.  It's {\tt o}'s turn, but {\tt o} can block only one of
+these two possibilities.  By contrast, if (in the earlier position) {\tt x}
+moves in square 3 or square 6, that would create a single winning triple for
+next time, but {\tt o} could block it.
+
+In other words, we want to find {\it two\/} triples in which one square is
+taken by the computer and the other two are free, with one free square
+shared between the two triples.  (In this example, we might find the two
+triples {\tt x47} and {\tt 3x7}; that would lead us to move in square 7, the
+one that these triples have in common.)  We'll call a situation like this a
+``\idx{fork},'' and we'll call the common square the ``\idx{pivot}.'' This
+isn't standard terminology; we just made up these terms to make it easier to
+talk about the strategy.
+
+In order to write the strategy procedure {\tt i-can-fork?}\ we assume that
+we'll need a procedure {\tt pivots} that returns a sentence of all pivots of
+forks currently available to the computer.  In this board, 4 and 7 are the
+pivots, so the {\tt pivots} procedure would return the sentence {\tt
+(4~7)}.  If we assume {\tt pivots}, then writing {\tt i-can-fork?}\ is
+straightforward:
+
+{\prgex%
+(define (\ufun{i-can-fork?} triples me)
+  (first-if-any (pivots triples me)))
+
+(define (\ufun{first-if-any} sent)
+  (if (empty? sent)
+      #f
+      (first sent)))
+}
+
+\subhd{Finding the Pivots}
+
+{\tt Pivots} should return a sentence containing the pivot numbers.  Here's
+the plan.  We'll start with the triples:
+
+{\prgex%
+(xo3 4x6 78o x47 ox8 36o xxo 3x7)
+}
+
+\noindent We {\tt keep} the ones that have an {\tt x} and two numbers:
+
+{\prgex%
+(4x6 x47 3x7)
+}
+
+\noindent We mash these into one huge word:
+
+{\prgex%
+4x6x473x7
+}
+
+\noindent We sort the digits from this word into nine ``buckets,'' one for
+each digit:
+
+{\prgex%
+("" "" 3 44 "" 6 77 "" "")
+}
+
+\noindent We see that there are no ones or twos, one three, two fours, and
+so on.  Now we can easily see that four and seven are the pivot squares.
+
+Let's write the procedures to carry out that plan.  {\tt Pivots} has to find
+all the triples with one computer-owned square and two free squares, and
+then it has to extract the square numbers that appear in more than one
+triple.
+
+{\prgex%
+(define (\ufun{pivots} triples me)
+  (repeated-numbers (keep (lambda (triple) (my-single? triple me))
+			  triples)))
+
+(define (\ufun{my-single?} triple me)
+  (and (= (appearances me triple) 1)
+       (= (appearances (opponent me) triple) 0)))
+
+> (my-single? "4x6" 'x)
+#T
+
+> (my-single? 'xo3 'x)
+#F
+
+> (keep (lambda (triple) (my-single? triple 'x))
+	(find-triples 'xo__x___o))
+("4X6" X47 "3X7")
+}
+
+\noindent {\tt My-single?}\ is just like {\tt my-pair?}\ except that it looks
+for one appearance of the letter instead of two.
+
+{\tt Repeated-numbers} takes a sentence of triples as its argument and has
+to return a sentence of all the numbers that appear in more than one
+triple.
+
+{\prgex%
+(define (\ufun{repeated-numbers} sent)
+  (every first
+         (keep (lambda (wd) (>= (count wd) 2))
+	       (sort-digits (accumulate word sent)))))
+}
+
+\noindent We're going to read this procedure inside-out, starting with the
+{\tt accumulate} and working outward.
+
+Why is it okay to {\tt accumulate word} the sentence?  Suppose that a number
+appears in two triples.  All we need to know is that number, not the
+particular triples through which we found it.  Therefore, instead of writing
+a program to look through several triples separately, we can just as well
+combine the triples into one long word, keep only the digits of that word,
+and simply look for the ones that appear more than once.
+
+{\prgex%
+> (accumulate word '("4x6" x47 "3x7"))
+"4X6X473X7"
+}
+
+We now have one long word, and we're looking for repeated digits.  Since
+this is a hard problem, let's start with the subproblem of finding all the
+copies of a particular digit.
+
+{\prgex%
+(define (\ufun{extract-digit} desired-digit wd)
+  (keep (lambda (wd-digit) (equal? wd-digit desired-digit)) wd))
+
+> (extract-digit 7 "4x6x473x7")
+77
+
+> (extract-digit 2 "4x6x473x7")
+""
+}
+
+Now we want a sentence where the first word is all the {\tt 1}s, the second
+word is all the {\tt 2}s, etc.  We could do it like this:
+
+{\prgex%
+(se (extract-digit 1 "4x6x473x7")
+    (extract-digit 2 "4x6x473x7")
+    (extract-digit 3 "4x6x473x7")
+    \ellipsis)
+}
+
+\noindent but that wouldn't be taking advantage of the power of computers to
+do that sort of repetitious work for us.  Instead, we'll use {\tt every}:
+
+{\prgex%
+(define (\ufun{sort-digits} number-word)
+  (every (lambda (digit) (extract-digit digit number-word))
+	 '(1 2 3 4 5 6 7 8 9)))
+}
+
+{\tt Sort-digits} takes a word full of numbers and returns a sentence whose
+first word is all the ones, second word is all the twos, etc.\footnt{Brian
+thinks this is a \idx{kludge}, but Matt thinks it's brilliant and elegant.}
+
+{\prgex%
+> (sort-digits 123456789147258369159357)
+(111 22 333 44 5555 66 777 88 999)
+
+> (sort-digits "4x6x473x7")
+("" "" 3 44 "" 6 77 "" "")
+}
+
+Let's look at {\tt repeated-numbers} again:
+
+{\prgex%
+(define (repeated-numbers sent)
+  (every first
+	 (keep (lambda (wd) (>= (count wd) 2))
+	       (sort-digits (accumulate word sent)))))
+
+> (repeated-numbers '("4x6" x47 "3x7"))
+(4 7)
+
+> (keep (lambda (wd) (>= (count wd) 2))
+	'("" "" 3 44 "" 6 77 "" ""))
+(44 77)
+
+> (every first '(44 77))
+(4 7)
+}
+
+This concludes the explanation of {\tt pivots}.  Remember that {\tt
+i-can-fork?}\ chooses the first pivot, if any, as the computer's move.
+
+\subhd{Taking the Offensive}
+
+Here's the final version of {\tt ttt-choose} with all the clauses shown:
+
+{\prgex%
+(define (\ufun{ttt-choose} triples me)
+  (cond ((i-can-win? triples me))
+        ((opponent-can-win? triples me))
+        ((i-can-fork? triples me))
+        ((i-can-advance? triples me))
+        (else (best-free-square triples))))
+}
+
+\noindent You already know about the first three possibilities.
+
+Just as the second possibility was the ``mirror image'' of the first
+(blocking an opponent's move of the same sort the computer just attempted), 
+it would make sense for the fourth possibility to be blocking the creation
+of a fork by the opponent.  That would be easy to do:
+
+{\prgex%
+(define (opponent-can-fork? triples me)      ;; not really part of game
+  (i-can-fork? triples (opponent me)))
+}
+
+Unfortunately, although the programming works, the strategy doesn't.  Maybe
+the opponent has {\it two\/} potential forks; we can block only one of
+them.  (Why isn't that a concern when blocking the opponent's wins?  It {\it
+is\/} a concern, but if we've allowed the situation to reach the point where
+there are two ways the opponent can win on the next move, it's too late to
+do anything about it.)
+
+Instead, our strategy is to go on the offensive.  If we can get two in a row
+on this move, then our opponent will be forced to block on the next move,
+instead of making a fork.  However, we want to make sure that we don't
+accidentally force the opponent {\it into\/} making a fork.
+
+Let's look at this board position again, but from {\tt o}'s point of view:
+
+\ttboard xo__x___o
+
+\noindent {\tt X}'s pivots are 4 and 7, as we discussed earlier; {\tt o}
+couldn't take both those squares.  Instead, look at the triples {\tt 369}
+and {\tt 789}, both of which are singles that belong to {\tt o}.  So {\tt o}
+should move in one of the squares 3, 6, 7, or 8, forcing {\tt x} to block
+instead of setting up the fork.  But {\tt o} {\it shouldn't\/} move in square
+8, like this:
+
+\ttboard xo__x__oo
+
+\noindent because that would force {\tt x} to block in square 7, setting up
+a fork!
+
+\ttboard xo__x_xoo
+
+The structure of the algorithm is much like that of the other strategy
+possibilities.  We use {\tt keep} to find the appropriate triples, take the
+first such triple if any, and then decide which of the two empty squares in
+that triple to move into.
+
+{\prgex%
+(define (\ufun{i-can-advance?} triples me)
+  (best-move (keep (lambda (triple) (my-single? triple me)) triples)
+             triples
+             me))
+
+(define (\ufun{best-move} my-triples all-triples me)
+  (if (empty? my-triples)
+      #f
+      (best-square (first my-triples) all-triples me)))
+}
+
+\noindent {\tt Best-move} does the same job as {\tt first-if-any}, which we
+saw earlier, except that it also invokes {\tt best-square} on the first
+triple if there is one.  
+
+Since we've already chosen the relevant triples before we get to {\tt
+best-move}, you may be wondering why it needs {\it all\/} the triples as an
+additional argument.  The answer is that {\tt best-square} is going to look
+at the board position from the opponent's point of view to look for forks.
+
+{\prgex%
+(define (\ufun{best-square} my-triple triples me)
+  (best-square-helper (pivots triples (opponent me))
+		      (keep number? my-triple)))
+
+(define (\ufun{best-square-helper} opponent-pivots pair)
+  (if (member? (first pair) opponent-pivots)
+      (first pair)
+      (last pair)))
+}
+
+We {\tt keep} the two numbers of the triple that we've already selected.  We
+also select the opponent's possible pivots from among all the triples.  If
+one of our two possible moves is a potential pivot for the opponent, that's
+the one we should move into, to block the fork.  Otherwise, we arbitrarily
+pick the second ({\tt last}) free square.
+
+{\prgex%
+> (best-square "78o" (find-triples 'xo__x___o) 'o)
+7
+
+> (best-square "36o" (find-triples 'xo__x___o) 'o)
+6
+
+> (best-move '("78o" "36o") (find-triples 'xo__x___o) 'o)
+7
+
+> (i-can-advance? (find-triples 'xo__x___o) 'o)
+7
+}
+
+What if {\it both\/} of the candidate squares are pivots for the opponent?
+In that case, we've picked a bad triple; moving in either square will make
+us lose.  As it turns out, this can occur only in a situation like the
+following:
+
+\ttboard x___o___x
+
+\noindent If we chose the triple {\tt 3o7}, then either move will force the
+opponent to set up a fork, so that we lose two moves later.  Luckily,
+though, we can instead choose a triple like {\tt 2o8}.  We can move in
+either of those squares and the game will end up a tie.
+
+In principle, we should analyze a candidate triple to see if both free
+squares create forks for the opponent.  But since we happen to know that
+this situation arises only on the diagonals, we can be lazier.  We just list
+the diagonals {\it last\/} in the procedure {\tt find-triples}.  Since we
+take the first available triple, this ensures that we won't take a diagonal
+if there are any other choices.\footnt{Matt thinks this is a
+\idx{kludge}, but Brian thinks it's brilliant and elegant.}
+
+\subhd{Leftovers}
+
+If all else fails, we just pick a square.  However, some squares are better
+than others.  The center square is part of four triples, the corner squares
+are each part of three, and the edge squares each a mere two.
+
+So we pick the center if it's free, then a corner, then an edge.
+
+{\prgex\prgexskipamount=10pt%
+(define (\ufun{best-free-square} triples)
+  (first-choice (accumulate word triples)
+		'(5 1 3 7 9 2 4 6 8)))
+
+(define (\ufun{first-choice} possibilities preferences)
+  (first (keep (lambda (square) (member? square possibilities))
+	       preferences)))
+
+> (first-choice 123456789147258369159357 '(5 1 3 7 9 2 4 6 8))
+5
+
+> (first-choice "1xo4x6o8914oxx8o691x9oxo" '(5 1 3 7 9 2 4 6 8))
+1
+
+> (best-free-square (find-triples '_________))
+5
+
+> (best-free-square (find-triples '____x____))
+1
+}
+
+\backskipsubhd{Complete Program Listing}{5}
+
+\medskip
+{\listingskipamount=10pt
+\listing{ttt.scm}}
+
+\esubhd{Exercises}
+
+{\exercise The {\tt ttt} procedure assumes that nobody has won the game
+yet.  What happens if you invoke {\tt ttt} with a board position in which
+some player has already won?  Try to figure it out by looking through the
+program before you run it.
+
+A complete tic-tac-toe program would need to stop when one of the two
+players wins.  Write a predicate {\tt \ufun{already-won?}}\ that takes a
+board position and a letter ({\tt x} or {\tt o}) as its arguments and returns
+{\tt \#t} if that player has already won.
+\extag{\tttwon}
+}
+
+\solution
+
+The {\tt ttt} procedure doesn't notice that someone has already
+won.  When someone wins, they make a triple {\tt xxx} or {\tt
+ooo}.  Since this triple doesn't have any free squares, the {\tt
+ttt} procedure isn't interested in it at all; the triple {\tt xxx}
+is treated the same as the triple {\tt oxx}.  If there are still
+free squares on the board, then the program picks a square as if
+the win hadn't happened.  But if the winning move filled the
+board, then the program crashes because of the same bug that
+affects tie games as described in Exercise 9.2.
+
+{\prgex%
+(define (already-won? position player)
+  (member? (word player player player)
+           (find-triples position)))
+}
+@
+
+{\exercise
+The program also doesn't notice when the game has ended in a tie, that is,
+when all nine squares are already filled.  What happens now if you ask it to
+move in this situation?
+
+Write a procedure {\tt \ufun{tie-game?}}\ that returns {\tt \#t} in this case.
+\extag{\ttttied}
+}
+
+\solution
+{\prgex%
+(define (tie-game? position)
+  (not (member? '_ position)))
+}
+
+As it stands in the book, the {\tt ttt} program generates an error if the
+board is full.  The functions {\tt i-can-win?}, {\tt i-can-fork?}, and {\tt
+i-can-advance?} all return {\tt #f} if the board is full.  {\tt
+Best-free-square} combines all the triples, none of which contain any
+numbers, into one long word, and passes this as the first argument to {\tt
+first-choice}.  None of the letters in {\tt possibilities} are numbers, so
+
+{\prgex%
+(keep (lambda (square) (member? square possibilities))
+      preferences)
+}
+
+\noindent is empty.  We generate an error in trying to take the {\tt first}
+of this empty sentence.
+@
+
+{\exercise
+A real human playing tic-tac-toe would look at a board like this:
+
+{\parindent=20pt
+
+\ttboard oxooxxxo_
+
+}
+
+\noindent and notice that it's a tie, rather than moving in square {\tt 9}.
+Modify {\tt tie-game?}\ from Exercise \ttttied\ to notice this situation and
+return {\tt \#t}.
+
+(Can you improve the program's ability to recognize ties even further?
+What about boards with two free squares?)
+}
+
+\solution
+{\prgex%
+(define (tie-game? position)
+  (empty? (keep winnable? (find-triples position))))
+
+(define (winnable? triple)
+  (or (not (member? 'x triple))
+      (not (member? 'o triple))))
+}
+
+\noindent (If you didn't think of looking at the triples, but instead
+tried to examine the position directly, the problem is a lot harder
+because it requires looking at several special cases, such as a board
+with no free squares, a board with one free square, and so on.)
+@
+
+{\exercise
+Here are some possible changes to the rules of tic-tac-toe:
+
+\smallskip
+{\parindent=1em\everypar={}
+\bb What if you could
+win a game by having three squares forming an L shape in a corner, such
+as squares 1, 2, and 4?
+
+\bb What if the diagonals didn't win?
+
+\bb What if you could win by having {\it four\/}
+squares in a corner, such as 1, 2, 4, and 5?
+
+}\smallskip
+
+Answer the following questions for each of these modifications separately:
+What would happen if we tried to implement the change merely by changing the
+quoted sentence of potential winning combinations in {\tt find-triples}?
+Would the program successfully follow the rules as modified?
+}
+
+\solution
+If the winning combinations were all still three squares, then none of the
+functions in the program would blow up.  There is a possible subtle strategy
+problem, though, because of the kludgy way in which {\tt best-move}
+relies on the ordering of triples in {\tt find-triples}.  It's important to make
+sure the best triples still come first.  This is the kind of bug that's very
+difficult to track down, because the problem has to do with the handling of
+pivots and  you'd never think that {\tt find-triples} was
+responsible for the pivot choosing algorithm.
+
+If the diagonals didn't win, then again nothing would break.  In
+fact, that would eliminate the program's reliance on keeping the
+triples in a particular order, because the case in which creating
+a fork can lose the game wouldn't exist.
+
+If a ``triple'' could have more than three squares in it, then lots of
+things would break.  For example, {\tt i-can-win?} depends on {\tt my-pair?},
+which has the number 2 built into it.
+@
+
+{\exercise
+Modify {\tt ttt} to play chess.
+}
+
+\solution
+{\prgex%
+(define (chess position me)
+  (if (= (random 1) 0)
+      '(i give up)
+      'checkmate!))
+}
+@
+
+\catcode`\_=8
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch10/ttt.html b/js/games/nluqo.github.io/~bh/ssch10/ttt.html
new file mode 100644
index 0000000..8913584
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch10/ttt.html
@@ -0,0 +1,1108 @@
+<P>
+<A NAME="tttttm"></A>
+<P><CENTER><IMG SRC="../ss-pics/tinker.jpg" ALT="figure: tinker"></CENTER><P><CENTER>This computer, built of Tinker-Toy parts, plays
+tic-tac-toe.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 10: Example: Tic-Tac-Toe</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 10</H2>
+<H1>Example: Tic-Tac-Toe</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch10.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch9/bridge.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch11/part4.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+
+<P>Now that you've learned about higher-order functions, we're going to look at
+a large example that uses them extensively.  Using the
+techniques you've learned so far, we're going to write a program that plays
+perfect tic-tac-toe.
+
+<P>You can load our program into Scheme by typing
+
+<P><PRE>(load &quot;ttt.scm&quot;)
+</PRE>
+
+<P>(See Appendix A if this doesn't work for you.)
+
+<P><H2>A Warning</H2>
+
+<P>Programs don't always come out right the first time.  One of our goals in
+this chapter is to show you how a program is developed, so we're presenting
+early versions of procedures.  These include some mistakes that we made, and
+also some after-the-fact simplifications to make our explanations
+easier.  If you type in these early versions, they won't work.  We will show
+you how we corrected these &quot;bugs&quot; and also will present a complete, correct
+version at the end of the chapter.
+
+<P>To indicate the unfinished versions of procedures, we'll use comments like
+&quot;first version&quot; or &quot;not really part of game.&quot;
+
+<P><H2>Technical Terms in Tic-Tac-Toe</H2>
+
+<P>We'll number the squares of the board this way:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>1<TD>2<TD>3<TR><TD>4<TD>5<TD>6<TR><TD>7<TD>8<TD>9</TABLE>&nbsp;
+
+<P>We'll call a partially filled-in board a &quot;position.&quot;
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD><TD><TD>o<TR><TD><TD>x<TD>o<TR><TD>x<TD><TD>x</TABLE>&nbsp;
+
+<P>To the computer, the same position will be represented by the word <CODE>__o_xox_x</CODE>.  The nine letters of the word correspond to squares one through
+nine of the board.  (We're thinking ahead to the possibility of using <CODE>item</CODE> to extract the <EM>n</EM>th square of a given position.)
+
+<P><H2>Thinking about the Program Structure</H2>
+
+<P>Our top-level procedure, <CODE>ttt</CODE>, will return the computer's next move 
+given the current position.  It takes two arguments: the current position
+and whether the computer is playing X or O.  If the computer is O and the
+board looks like the one above, then we'd invoke <CODE>ttt</CODE> like this:
+
+<P><PRE>(<A NAME="g1"></A>ttt '__o_xox_x 'o)
+</PRE>
+
+<P>Here is a sample game:
+
+<P><PRE>&gt; (ttt '____x____ 'o)                   ; Human goes first in square 5
+1                                       ; Computer moves in square 1
+&gt; (ttt 'o__xx____ 'o)                   ; Human moves in square 4
+6                                       ; Computer blocks in square 6
+&gt; (ttt 'o_xxxo___ 'o)                   ; Human moves in square 3
+7                                       ; Computer blocks again
+&gt; (ttt 'o_xxxoox_ 'o)
+2
+</PRE>
+
+<P>This is not a complete game program!  Later, when we talk about input and
+output, you'll see how to write an interactive program that displays the
+board pictorially, asks the player where to move, and so on.  For now, we'll
+just write the <EM>strategy</EM> procedure that chooses the next
+move.  As a paying customer, you wouldn't be satisfied with this
+partial program, but from the programmer's point of view, this is the more
+interesting part.
+
+<P>Let's plan the computer's strategy in English before we start writing a
+computer program.  How do <EM>you</EM> play tic-tac-toe?  You have several
+strategy rules in your head, some of which are more urgent than others.  For
+example, if you can win on this move, then you just do it without thinking
+about anything else.  But if there isn't anything that immediate, you
+consider less urgent questions, such as how this move might affect what
+happens two moves later.
+
+<P>So we'll represent this set of rules by a giant <CODE>cond</CODE> expression:
+
+<P><PRE>(define (ttt position me)                    ;; first version
+  (cond ((i-can-win?)
+         (choose-winning-move))
+        ((opponent-can-win?)
+         (block-opponent-win))
+        ((i-can-win-next-time?)
+         (prepare-win))
+        (else (whatever))))
+</PRE>
+
+<P>We're imagining many helper procedures.  <CODE>I-can-win?</CODE> will look at the
+board and tell if the computer has an immediate winning move. If so, <CODE>choose-winning-move</CODE> will find that particular move.  <CODE>Opponent-can-win?</CODE> returns true if the human player has an immediate
+winning move.  <CODE>Block-opponent-win</CODE> will return a move that prevents the
+computer's opponent from winning, and so on.
+
+<P>We didn't actually start by writing this definition of <CODE>ttt</CODE>.  The
+particular names of helper procedures are just guesses, because we haven't
+yet planned the tic-tac-toe strategy in detail.  But we did know that this
+would be the overall structure of our program.  This big picture doesn't
+automatically tell us what to do next; different programmers might fill in
+the details differently.  But it's a framework to keep in mind during the
+rest of the job.
+
+<P>Our first practical step was to think about the <EM><A NAME="g2"></A><A NAME="g3"></A>data structures</EM> in our program.  A data structure is a way of
+organizing several pieces of information into a big chunk.  For example, a
+sentence is a data structure that combines several words in a sequence (that
+is, in left-to-right order).
+
+<P>In the first, handwavy version of <CODE>ttt</CODE>, the strategy procedures like
+<CODE>i-can-win?</CODE> are called with no arguments, but of course we knew they
+would need some information about the board position.  We began by thinking
+about how to represent that information within the program.
+
+<P><H2>The First Step: Triples</H2>
+
+<P>A person looking at a tic-tac-toe board looks at the rows, columns, and
+diagonals.  The question &quot;do I have a winning move?&quot; is equivalent to the
+question &quot;are there three squares in a line such that two of them are mine
+and the last one is blank?&quot;  In fact, nothing else matters about the game
+besides these potential winning combinations.
+
+<P>There are eight potential winning combinations: three rows, three
+columns, and two diagonals.  Consider the combination containing the three
+squares 1, 5, and 9.  If it contains both an <CODE>x</CODE> and an <CODE>o</CODE> then
+nobody can win with this combination and there's nothing to think about.
+But if it contains two <CODE>x</CODE>s and a free square, we're very interested in
+the combination.  What we want to know in particular is which square is
+free, since we want to move in that square to win or block.
+
+<P>More generally, the only squares whose <EM>numbers</EM> we care about are the
+ones we might want to move into, namely, the free ones.  So the only
+interesting information about a square is whether it has an <CODE>x</CODE> or an
+<CODE>o</CODE>, and if not, what its number is.
+
+<P>The information that 1, 5, 9 is a potential winning combination and the
+information that square 1 contains an <CODE>x</CODE>, square 5 is empty, and square
+<CODE>9</CODE> contains another <CODE>x</CODE> can be combined into the single word <CODE>x5x</CODE>.  Looking at this word we can see immediately that there are two <CODE>x</CODE>s in this &quot;triple&quot; and that the free square is square 5.  So when we
+want to know about a three-square combination, we will turn it into a
+triple of that form.
+
+<P>Here's a sample board position:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD><TD>x<TD>o<TR><TD><TD>x<TD><TR><TD>o<TD><TD></TABLE>&nbsp;
+
+<P>and here is a sentence of all of its triples:
+
+<P><PRE>(1xo 4x6 o89 14o xx8 o69 1x9 oxo)
+</PRE>
+
+<P>Take a minute to convince yourself that this sentence really does tell you
+everything you need to know about the corresponding board position.  Once
+our strategy procedure finds the triples for a board position, it's never
+going to look at the original position again.
+
+<P>This technique of converting data from one form to another so that it can be
+manipulated more easily is an important idea in computer science.  There are
+really three representations of the same thing.  There's this picture:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD><TD>x<TD>o<TR><TD><TD>x<TD><TR><TD>o<TD><TD></TABLE>&nbsp;
+
+<P>as well as the word <CODE>_xo_x_o__</CODE> and the sentence <CODE>(1xo 4x6
+o89 14o xx8 o69 1x9 oxo)</CODE>.  All three of these formats have the same
+information but are convenient in different ways.  The pictorial form is
+convenient because it makes sense to the person who's playing tic-tac-toe.
+Unfortunately, you can't type that picture into a computer, so we need a
+different format, the word <CODE>_xo_x_o__</CODE>, which contains the <EM>contents</EM> of the nine squares in the picture, but without the lines
+separating the squares and without the two-dimensional shape.
+
+<P>The third format, the sentence, is quite <EM>inconvenient</EM> for human
+beings.  You'd never want to think about a tic-tac-toe board that way
+yourself, because the sentence doesn't have the visual simplicity that lets
+you take in a tic-tac-toe position at a glance.  But the sentence of triples
+is the most convenient representation for our program.  <CODE>Ttt</CODE> will have
+to answer questions like &quot;can <CODE>x</CODE> win on the next move?&quot; To do that, it
+will have to consider an equivalent but more detailed question:  &quot;For each
+of the eight possible winning combinations, can <CODE>x</CODE> complete that
+combination on the next move?&quot; It doesn't really matter whether a
+combination is a row or a column; what does matter is that each of the eight
+combinations be readily available for inspection by the program.  The
+sentence-of-triples representation obscures part of the available
+information (which combination is where) to emphasize another part (making
+the eight combinations explicit, instead of implicit in the nine boxes of
+the diagram).
+
+<P>The representation of fractions as &quot;mixed numerals,&quot; such as 2<SUP><SMALL><SMALL>1</SMALL></SMALL></SUP>/<SUB><SUB><SMALL>3</SMALL></SUB></SUB>,
+and as &quot;improper fractions,&quot; such as <SUP><SMALL><SMALL>7</SMALL></SMALL></SUP>/<SUB><SUB><SMALL>3</SMALL></SUB></SUB>, is a non-programming
+example of this idea about multiple representations.  A mixed numeral makes
+it easier for a person to tell how big the number is, but an improper
+fraction makes arithmetic easier.
+
+<P><H2>Finding the Triples</H2>
+
+<P>We said that we would combine the current board position with the
+numbers of the squares in the eight potential winning combinations in order
+to compute the things we're calling triples.  That was our first task in
+writing the program.
+
+<P>Our program will start with this sentence of all the winning combinations:
+
+<P><PRE>(123 456 789 147 258 369 159 357)
+</PRE>
+
+<P>and a position word such as <CODE>_xo_x_o__</CODE>; it will return a
+sentence of triples such as
+
+<P><PRE>(1xo 4x6 o89 14o xx8 o69 1x9 oxo)
+</PRE>
+
+<P>All that's necessary is to replace some of the numbers with <CODE>x</CODE>s and
+<CODE>o</CODE>s.  This kind of word-by-word translation in a sentence is a good job
+for <CODE>every</CODE>.
+
+<P><PRE>(define (find-triples position)              ;; first version
+  (every substitute-triple '(123 456 789 147 258 369 159 357)))
+</PRE>
+
+<P>We've made up a name <CODE>substitute-triple</CODE> for a procedure we haven't
+written yet.  This is perfectly OK, as long as we write it before we try to
+invoke <CODE>find-triples</CODE>.  The <CODE>substitute-triple</CODE> function will take
+three digits, such as <CODE>258</CODE>, and return a triple, such as <CODE>2x8</CODE>:
+
+<P><PRE>(define (substitute-triple combination)      ;; first version
+  (every substitute-letter combination))
+</PRE>
+
+<P>This procedure uses <CODE>every</CODE> to call <CODE>substitute-letter</CODE> on
+all three letters.
+
+<P>There's a small problem, though.  <CODE>Every</CODE> always returns a sentence, and
+we want our triple to be a word.  For example, we want to turn the potential
+winning combination <CODE>258</CODE> into the word <CODE>2x8</CODE>, but <CODE>every</CODE> would
+return the sentence <CODE>(2 x 8)</CODE>.  So here's our next version of <CODE>substitute-triple</CODE>:
+
+<P><PRE>(define (substitute-triple combination)      ;; second version
+  (accumulate word (every substitute-letter combination)))
+</PRE>
+
+<P><CODE>Substitute-letter</CODE> knows that letter number 3 of the word that
+represents the board corresponds to the contents of square 3 of the board.
+This means that it can just call <CODE>item</CODE> with the given square number and
+the board to find out what's in that square.  If it's empty, we return the
+square number itself; otherwise we return the contents of the square.
+
+<P><PRE>(define (substitute-letter square)           ;; first version
+  (if (equal? '_ (item square position))
+      square
+      (item square position)))
+</PRE>
+
+<P>Whoops!  Do you see the problem?
+
+<P><PRE>&gt; (substitute-letter 5)
+ERROR: Variable POSITION is unbound.
+</PRE>
+
+<P><H2>Using <CODE>Every</CODE> with Two-Argument Procedures</H2>
+
+<P>Our procedure only takes one argument, <CODE>square</CODE>, but it needs to know
+the position so it can find out what's in the given square.  So here's the
+real <CODE>substitute-letter</CODE>:
+
+<P><PRE>(define (<A NAME="g4"></A>substitute-letter square position)
+  (if (equal? '_ (item square position))
+      square
+      (item square position)))
+
+&gt; (substitute-letter 5 '_xo_x_o__)
+X
+
+&gt; (substitute-letter 8 '_xo_x_o__)
+8
+</PRE>
+
+<P>Now <CODE>substitute-letter</CODE> can do its job, since it has access to
+the position.  But we'll have to modify <CODE>substitute-triple</CODE> to invoke
+<CODE>substitute-letter</CODE> with two arguments.
+
+<P>This is a little tricky.  Let's look again at the way we're using <CODE>substitute-letter</CODE> inside <CODE>substitute-triple</CODE>:
+
+<P><PRE>(define (substitute-triple combination)      ;; second version again
+  (accumulate word (every substitute-letter combination)))
+</PRE>
+
+<P>By giving <CODE>substitute-letter</CODE> another argument, we have made
+this formerly correct procedure incorrect.  The first argument to <CODE>every</CODE>
+must be a function of one argument, not two.  This is exactly the kind of
+situation in which <CODE>lambda</CODE> can help us:  We have a function of two
+arguments, and we need a function of one argument that does the same thing,
+but with one of the arguments fixed.
+
+<P>The procedure returned by
+
+<P><PRE>(lambda (square) (substitute-letter square position))
+</PRE>
+
+<P>does exactly the right thing; it takes a square as its argument
+and returns the contents of the position at that square.
+
+<P>Here's the final version of <CODE>substitute-triple</CODE>:
+
+<P><PRE>(define (<A NAME="g5"></A>substitute-triple combination position)
+  (accumulate word
+	      (every (lambda (square)
+		       (substitute-letter square position))
+		     combination)))
+
+&gt; (substitute-triple 456 '_xo_x_o__)
+&quot;4X6"
+
+&gt; (substitute-triple 147 '_xo_x_o__)
+&quot;14O"
+
+&gt; (substitute-triple 357 '_xo_x_o__)
+OXO
+</PRE>
+
+<P>As you can see, Scheme prints some of these words with
+double-quote marks.  The rule is that a word that isn't a number but begins
+with a digit must be double-quoted.  But in the finished program we're not
+going to print such words at all; we're just showing you the working of a
+helper procedure.  Similarly, in this chapter we'll show direct invocations
+of helper procedures in which some of the arguments are strings, but a
+user of the overall program won't have to use this notation.
+
+<P>We've fixed the <CODE>substitute-letter</CODE> problem by giving <CODE>substitute-triple</CODE> an extra argument, so we're going to have to go through
+the same process with <CODE>find-triples</CODE>.  Here's the right version:
+
+<P><PRE>(define (<A NAME="g6"></A>find-triples position)
+  (every (lambda (comb) (substitute-triple comb position))
+         '(123 456 789 147 258 369 159 357)))
+</PRE>
+
+<P>It's the same trick.  <CODE>Substitute-triple</CODE> is a procedure
+of two arguments.  We use <CODE>lambda</CODE> to transform it into a procedure
+of one argument for use with <CODE>every</CODE>.
+
+<P>We've now finished <CODE>find-triples</CODE>, one of the most important procedures in
+the game.
+
+<P><PRE>&gt; (find-triples '_xo_x_o__)
+(&quot;1XO&quot; &quot;4X6&quot; O89 &quot;14O&quot; XX8 O69 &quot;1X9&quot; OXO)
+
+&gt; (find-triples 'x_____oxo)
+(X23 456 OXO X4O &quot;25X&quot; &quot;36O&quot; X5O &quot;35O&quot;)
+</PRE>
+
+<P>Here again are the jobs of all three procedures we've written so far:
+
+<P><TABLE>
+<TR><TD><CODE>Substitute-letter&nbsp;&nbsp;</CODE>
+<TD>finds the letter in a single square.
+<TR><TD><CODE>Substitute-triple</CODE>
+<TD>finds all three leters corresponding to three squares.
+<TR><TD><CODE>Find-triples</CODE>
+<TD>finds all the letters in all eight winning combinations.
+</TABLE>
+
+
+<P>We've done all this because we think that the rest of the program can use
+the triples we've computed as data.  So we'll just compute the triples once
+for all the other procedures to use:
+
+<P><PRE>(define (<A NAME="g7"></A>ttt position me)
+  (ttt-choose (find-triples position) me))
+
+(define (ttt-choose triples me)              ;; first version
+  (cond ((i-can-win? triples me)
+         (choose-winning-move triples me))
+        ((opponent-can-win? triples me)
+         (block-opponent-win triples me))
+        &hellip;))
+</PRE>
+
+<P><H2>Can the Computer Win on This Move?</H2>
+
+<P>The obvious next step is to write <CODE>i-can-win?</CODE>, a procedure that should
+return <CODE>#t</CODE> if the computer can win on the current move&mdash;that is, if
+the computer already has two squares of a triple whose third square is empty.
+The triples <CODE>x6x</CODE> and <CODE>oo7</CODE> are examples.
+
+<P>So we need a function that takes a word and a letter as arguments
+and counts how many times that letter appears in the word.  The
+<CODE>appearances</CODE> primitive that we used in Chapter 2 (and
+that you re-implemented in Exercise <A HREF="../ssch9/lambda.html#appear">9.10</A>) will do the job:
+
+<P><PRE>&gt; (appearances 'o 'oo7)
+2
+
+&gt; (appearances 'x 'oo7)
+0
+</PRE>
+
+<P>The computer &quot;owns&quot; a triple if the computer's letter appears twice and
+the opponent's letter doesn't appear at all.  (The second condition is
+necessary to exclude cases like <CODE>xxo</CODE>.)
+
+<P><PRE>(define (<A NAME="g8"></A>my-pair? triple me)
+  (and (= (appearances me triple) 2)
+       (= (appearances (opponent me) triple) 0)))
+</PRE>
+
+<P>Notice that we need a function <CODE>opponent</CODE> that returns the opposite
+letter from ours.
+
+<P><PRE>(define (<A NAME="g9"></A>opponent letter)
+  (if (equal? letter 'x) 'o 'x))
+
+&gt; (opponent 'x)
+O
+
+&gt; (opponent 'o)
+X
+
+&gt; (my-pair? 'oo7 'o)
+#T
+
+&gt; (my-pair? 'xo7 'o)
+#F
+
+&gt; (my-pair? 'oox 'o)
+#F
+</PRE>
+
+<P>Finally, the computer can win if it owns any of the triples:
+
+<P><PRE>(define (i-can-win? triples me)                ;; first version
+  (not (empty?
+	(keep (lambda (triple) (my-pair? triple me))
+	      triples))))
+
+&gt; (i-can-win? '(&quot;1xo&quot; &quot;4x6&quot; o89 &quot;14o&quot; xx8 o69 &quot;1x9&quot; oxo) 'x)
+#T
+
+&gt; (i-can-win? '(&quot;1xo&quot; &quot;4x6&quot; o89 &quot;14o&quot; xx8 o69 &quot;1x9&quot; oxo) 'o)
+#F
+</PRE>
+
+<P>By now you're accustomed to this trick with <CODE>lambda</CODE>.  <CODE>My-pair?</CODE> takes a triple and the computer's letter as arguments, but we
+want a function of one argument for use with <CODE>keep</CODE>.
+
+<P><H2>If So, in Which Square?</H2>
+
+<P>Suppose <CODE>i-can-win?</CODE> returns <CODE>#t</CODE>.  We then have to find the
+particular square that will win the game for us.  This will involve a
+repetition of some of the same work we've already done:
+
+<P><PRE>(define (choose-winning-move triples me)     ;; not really part of game
+  (keep number? (first (keep (lambda (triple) (my-pair? triple me))
+                             triples))))
+</PRE>
+
+<P>We again use <CODE>keep</CODE> to find the triples with two of the
+computer's letter, but this time we extract the number from the first such
+winning triple.
+
+<P>We'd like to avoid this inefficiency.  As it turns out, generations of Lisp
+programmers have been in just this bind in the past, and so they've invented
+a kludge<A NAME="text1" HREF="ttt.html#ft1">[1]</A> to get around it.
+
+<P>Remember we told you that everything other than <CODE>#f</CODE> counts as true?
+We'll take advantage of that by having a single procedure that returns the
+number of a winning square if one is available, or <CODE>#f</CODE> otherwise.  In
+Chapter 6 we called such a procedure a &quot;semipredicate.&quot; The kludgy
+part is that <A NAME="g10"></A><CODE>cond</CODE> accepts a clause containing a single expression
+instead of the usual two expressions; if the expression has any true value,
+then <CODE>cond</CODE> returns that value.  So we can say
+
+<P><PRE>(define (ttt-choose triples me)              ;; second version
+  (cond ((i-can-win? triples me))
+        ((opponent-can-win? triples me))
+        &hellip;))
+</PRE>
+
+<P>where each <CODE>cond</CODE> clause invokes a semipredicate.  We then
+modify <CODE>i-can-win?</CODE> to have the desired behavior:
+
+<P><PRE>(define (<A NAME="g11"></A>i-can-win? triples me)
+  (choose-win
+   (keep (lambda (triple) (my-pair? triple me))
+	 triples)))
+
+(define (<A NAME="g12"></A>choose-win winning-triples)
+  (if (empty? winning-triples)
+      #f
+      (keep number? (first winning-triples))))
+
+&gt; (i-can-win? '(&quot;1xo&quot; &quot;4x6&quot; o89 &quot;14o&quot; xx8 o69 &quot;1x9&quot; oxo) 'x)
+8
+
+&gt; (i-can-win? '(&quot;1xo&quot; &quot;4x6&quot; o89 &quot;14o&quot; xx8 o69 &quot;1x9&quot; oxo) 'o)
+#F
+</PRE>
+
+<P>
+
+<P>By this point, we're starting to see the structure of the overall program.
+There will be several procedures, similar to <CODE>i-can-win?</CODE>, that will try
+to choose the next move.  <CODE>I-can-win?</CODE> checks to see if the computer can
+win on this turn, another procedure will check to see if the computer should
+block the opponent's win next turn, and other procedures will check for
+other possibilities.  Each of these procedures will be what we've been
+calling &quot;semipredicates.&quot; That is to say, each will return the number of
+the square where the computer should move next, or <CODE>#f</CODE> if it can't
+decide.  All that's left is to figure out the rest of the computer's
+strategy and write more procedures like <CODE>i-can-win?</CODE>.
+
+<P><H2>Second Verse, Same as the First</H2>
+
+<P>Now it's time to deal with the second possible strategy case:  The computer
+can't win on this move, but the opponent can win unless we block a triple
+right now.
+
+<P>(What if the computer and the opponent both have immediate winning triples?
+In that case, we've already noticed the computer's win, and by winning the
+game we avoid having to think about blocking the opponent.)
+
+<P>Once again, we have to go through the complicated business of finding
+triples that have two of the opponent's letter and none of the computer's
+letter&mdash;but it's already done!
+
+<P>
+
+<P><PRE>(define (<A NAME="g13"></A>opponent-can-win? triples me)
+  (i-can-win? triples (opponent me)))
+
+&gt; (opponent-can-win? '(&quot;1xo&quot; &quot;4x6&quot; o89 &quot;14o&quot; xx8 o69 &quot;1x9&quot; oxo) 'x)
+#F
+
+&gt; (opponent-can-win? '(&quot;1xo&quot; &quot;4x6&quot; o89 &quot;14o&quot; xx8 o69 &quot;1x9&quot; oxo) 'o)
+8
+</PRE>
+
+<P>
+
+<P>
+
+<P>Is that amazing or what?
+
+<P>
+<H2>Now the Strategy Gets Complicated</H2>
+
+<P>Since our goal here is to teach programming, rather than tic-tac-toe
+strategy, we're just going to explain the strategy we use and not give the
+history of how we developed it.
+
+<P>The third step, after we check to see if either player can win on the next
+move, is to look for a situation in which a move that we make now will give
+rise to <EM>two</EM> winning triples next time.  Here's an example:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>x<TD>o<TD><TR><TD><TD>x<TD><TR><TD><TD><TD>o</TABLE>&nbsp;
+
+<P>Neither <CODE>x</CODE> nor <CODE>o</CODE> can win on this move.  But if the computer is
+playing <CODE>x</CODE>, moving in square 4 or square 7 will produce a situation
+with two winning triples.  For example, here's what happens if we move in
+square 7:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>x<TD>o<TD><TR><TD><TD>x<TD><TR><TD>x<TD><TD>o</TABLE>&nbsp;
+
+<P>From this position, <CODE>x</CODE> can win by moving either in square
+3 or in square 4.  It's <CODE>o</CODE>'s turn, but <CODE>o</CODE> can block only one of
+these two possibilities.  By contrast, if (in the earlier position) <CODE>x</CODE>
+moves in square 3 or square 6, that would create a single winning triple for
+next time, but <CODE>o</CODE> could block it.
+
+<P>In other words, we want to find <EM>two</EM> triples in which one square is
+taken by the computer and the other two are free, with one free square
+shared between the two triples.  (In this example, we might find the two
+triples <CODE>x47</CODE> and <CODE>3x7</CODE>; that would lead us to move in square 7, the
+one that these triples have in common.)  We'll call a situation like this a
+&quot;fork,&quot; and we'll call the common square the &quot;pivot.&quot; This
+isn't standard terminology; we just made up these terms to make it easier to
+talk about the strategy.
+
+<P>In order to write the strategy procedure <CODE>i-can-fork?</CODE> we assume that
+we'll need a procedure <CODE>pivots</CODE> that returns a sentence of all pivots of
+forks currently available to the computer.  In this board, 4 and 7 are the
+pivots, so the <CODE>pivots</CODE> procedure would return the sentence <CODE>(4 7)</CODE>.  If we assume <CODE>pivots</CODE>, then writing <CODE>i-can-fork?</CODE> is
+straightforward:
+
+<P><PRE>(define (<A NAME="g14"></A>i-can-fork? triples me)
+  (first-if-any (pivots triples me)))
+
+(define (<A NAME="g15"></A>first-if-any sent)
+  (if (empty? sent)
+      #f
+      (first sent)))
+</PRE>
+
+<P><H2>Finding the Pivots</H2>
+
+<P><CODE>Pivots</CODE> should return a sentence containing the pivot numbers.  Here's
+the plan.  We'll start with the triples:
+
+<P><PRE>(xo3 4x6 78o x47 ox8 36o xxo 3x7)
+</PRE>
+
+<P>We <CODE>keep</CODE> the ones that have an <CODE>x</CODE> and two numbers:
+
+<P><PRE>(4x6 x47 3x7)
+</PRE>
+
+<P>We mash these into one huge word:
+
+<P><PRE>4x6x473x7
+</PRE>
+
+<P>We sort the digits from this word into nine &quot;buckets,&quot; one for
+each digit:
+
+<P><PRE>(&quot;&quot; &quot;&quot; 3 44 &quot;&quot; 6 77 &quot;&quot; &quot;&quot;)
+</PRE>
+
+<P>We see that there are no ones or twos, one three, two fours, and
+so on.  Now we can easily see that four and seven are the pivot squares.
+
+<P>Let's write the procedures to carry out that plan.  <CODE>Pivots</CODE> has to find
+all the triples with one computer-owned square and two free squares, and
+then it has to extract the square numbers that appear in more than one
+triple.
+
+<P><PRE>(define (<A NAME="g16"></A>pivots triples me)
+  (repeated-numbers (keep (lambda (triple) (my-single? triple me))
+			  triples)))
+
+(define (<A NAME="g17"></A>my-single? triple me)
+  (and (= (appearances me triple) 1)
+       (= (appearances (opponent me) triple) 0)))
+
+&gt; (my-single? &quot;4x6&quot; 'x)
+#T
+
+&gt; (my-single? 'xo3 'x)
+#F
+
+&gt; (keep (lambda (triple) (my-single? triple 'x))
+	(find-triples 'xo__x___o))
+(&quot;4X6&quot; X47 &quot;3X7&quot;)
+</PRE>
+
+<P><CODE>My-single?</CODE> is just like <CODE>my-pair?</CODE> except that it looks
+for one appearance of the letter instead of two.
+
+<P><CODE>Repeated-numbers</CODE> takes a sentence of triples as its argument and has
+to return a sentence of all the numbers that appear in more than one
+triple.
+
+<P><PRE>(define (<A NAME="g18"></A>repeated-numbers sent)
+  (every first
+         (keep (lambda (wd) (&gt;= (count wd) 2))
+	       (sort-digits (accumulate word sent)))))
+</PRE>
+
+<P>We're going to read this procedure inside-out, starting with the
+<CODE>accumulate</CODE> and working outward.
+
+<P>Why is it okay to <CODE>accumulate word</CODE> the sentence?  Suppose that a number
+appears in two triples.  All we need to know is that number, not the
+particular triples through which we found it.  Therefore, instead of writing
+a program to look through several triples separately, we can just as well
+combine the triples into one long word, keep only the digits of that word,
+and simply look for the ones that appear more than once.
+
+<P><PRE>&gt; (accumulate word '(&quot;4x6&quot; x47 &quot;3x7&quot;))
+&quot;4X6X473X7"
+</PRE>
+
+<P>We now have one long word, and we're looking for repeated digits.  Since
+this is a hard problem, let's start with the subproblem of finding all the
+copies of a particular digit.
+
+<P><PRE>(define (<A NAME="g19"></A>extract-digit desired-digit wd)
+  (keep (lambda (wd-digit) (equal? wd-digit desired-digit)) wd))
+
+&gt; (extract-digit 7 &quot;4x6x473x7&quot;)
+77
+
+&gt; (extract-digit 2 &quot;4x6x473x7&quot;)
+&quot;"
+</PRE>
+
+<P>Now we want a sentence where the first word is all the <CODE>1</CODE>s, the second
+word is all the <CODE>2</CODE>s, etc.  We could do it like this:
+
+<P><PRE>(se (extract-digit 1 &quot;4x6x473x7&quot;)
+    (extract-digit 2 &quot;4x6x473x7&quot;)
+    (extract-digit 3 &quot;4x6x473x7&quot;)
+    &hellip;)
+</PRE>
+
+<P>but that wouldn't be taking advantage of the power of computers to
+do that sort of repetitious work for us.  Instead, we'll use <CODE>every</CODE>:
+
+<P><PRE>(define (<A NAME="g20"></A>sort-digits number-word)
+  (every (lambda (digit) (extract-digit digit number-word))
+	 '(1 2 3 4 5 6 7 8 9)))
+</PRE>
+
+<P><CODE>Sort-digits</CODE> takes a word full of numbers and returns a sentence whose
+first word is all the ones, second word is all the twos, etc.<A NAME="text2" HREF="ttt.html#ft2">[2]</A>
+
+<P><PRE>&gt; (sort-digits 123456789147258369159357)
+(111 22 333 44 5555 66 777 88 999)
+
+&gt; (sort-digits &quot;4x6x473x7&quot;)
+(&quot;&quot; &quot;&quot; 3 44 &quot;&quot; 6 77 &quot;&quot; &quot;&quot;)
+</PRE>
+
+<P>Let's look at <CODE>repeated-numbers</CODE> again:
+
+<P><PRE>(define (repeated-numbers sent)
+  (every first
+	 (keep (lambda (wd) (&gt;= (count wd) 2))
+	       (sort-digits (accumulate word sent)))))
+
+&gt; (repeated-numbers '(&quot;4x6&quot; x47 &quot;3x7&quot;))
+(4 7)
+
+&gt; (keep (lambda (wd) (&gt;= (count wd) 2))
+	'(&quot;&quot; &quot;&quot; 3 44 &quot;&quot; 6 77 &quot;&quot; &quot;&quot;))
+(44 77)
+
+&gt; (every first '(44 77))
+(4 7)
+</PRE>
+
+<P>This concludes the explanation of <CODE>pivots</CODE>.  Remember that <CODE>i-can-fork?</CODE> chooses the first pivot, if any, as the computer's move.
+
+<P><H2>Taking the Offensive</H2>
+
+<P>Here's the final version of <CODE>ttt-choose</CODE> with all the clauses shown:
+
+<P><PRE>(define (<A NAME="g21"></A>ttt-choose triples me)
+  (cond ((i-can-win? triples me))
+        ((opponent-can-win? triples me))
+        ((i-can-fork? triples me))
+        ((i-can-advance? triples me))
+        (else (best-free-square triples))))
+</PRE>
+
+<P>You already know about the first three possibilities.
+
+<P>Just as the second possibility was the &quot;mirror image&quot; of the first
+(blocking an opponent's move of the same sort the computer just attempted), 
+it would make sense for the fourth possibility to be blocking the creation
+of a fork by the opponent.  That would be easy to do:
+
+<P><PRE>(define (opponent-can-fork? triples me)      ;; not really part of game
+  (i-can-fork? triples (opponent me)))
+</PRE>
+
+<P>Unfortunately, although the programming works, the strategy doesn't.  Maybe
+the opponent has <EM>two</EM> potential forks; we can block only one of
+them.  (Why isn't that a concern when blocking the opponent's wins?  It <EM>is</EM> a concern, but if we've allowed the situation to reach the point where
+there are two ways the opponent can win on the next move, it's too late to
+do anything about it.)
+
+<P>Instead, our strategy is to go on the offensive.  If we can get two in a row
+on this move, then our opponent will be forced to block on the next move,
+instead of making a fork.  However, we want to make sure that we don't
+accidentally force the opponent <EM>into</EM> making a fork.
+
+<P>Let's look at this board position again, but from <CODE>o</CODE>'s point of view:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>x<TD>o<TD><TR><TD><TD>x<TD><TR><TD><TD><TD>o</TABLE>&nbsp;
+
+<P><CODE>X</CODE>'s pivots are 4 and 7, as we discussed earlier; <CODE>o</CODE>
+couldn't take both those squares.  Instead, look at the triples <CODE>369</CODE>
+and <CODE>789</CODE>, both of which are singles that belong to <CODE>o</CODE>.  So <CODE>o</CODE>
+should move in one of the squares 3, 6, 7, or 8, forcing <CODE>x</CODE> to block
+instead of setting up the fork.  But <CODE>o</CODE> <EM>shouldn't</EM> move in square
+8, like this:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>x<TD>o<TD><TR><TD><TD>x<TD><TR><TD><TD>o<TD>o</TABLE>&nbsp;
+
+<P>because that would force <CODE>x</CODE> to block in square 7, setting up
+a fork!
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>x<TD>o<TD><TR><TD><TD>x<TD><TR><TD>x<TD>o<TD>o</TABLE>&nbsp;
+
+<P>The structure of the algorithm is much like that of the other strategy
+possibilities.  We use <CODE>keep</CODE> to find the appropriate triples, take the
+first such triple if any, and then decide which of the two empty squares in
+that triple to move into.
+
+<P><PRE>(define (<A NAME="g22"></A>i-can-advance? triples me)
+  (best-move (keep (lambda (triple) (my-single? triple me)) triples)
+             triples
+             me))
+
+(define (<A NAME="g23"></A>best-move my-triples all-triples me)
+  (if (empty? my-triples)
+      #f
+      (best-square (first my-triples) all-triples me)))
+</PRE>
+
+<P><CODE>Best-move</CODE> does the same job as <CODE>first-if-any</CODE>, which we
+saw earlier, except that it also invokes <CODE>best-square</CODE> on the first
+triple if there is one.  
+
+<P>Since we've already chosen the relevant triples before we get to <CODE>best-move</CODE>, you may be wondering why it needs <EM>all</EM> the triples as an
+additional argument.  The answer is that <CODE>best-square</CODE> is going to look
+at the board position from the opponent's point of view to look for forks.
+
+<P><PRE>(define (<A NAME="g24"></A>best-square my-triple triples me)
+  (best-square-helper (pivots triples (opponent me))
+		      (keep number? my-triple)))
+
+(define (<A NAME="g25"></A>best-square-helper opponent-pivots pair)
+  (if (member? (first pair) opponent-pivots)
+      (first pair)
+      (last pair)))
+</PRE>
+
+<P>We <CODE>keep</CODE> the two numbers of the triple that we've already selected.  We
+also select the opponent's possible pivots from among all the triples.  If
+one of our two possible moves is a potential pivot for the opponent, that's
+the one we should move into, to block the fork.  Otherwise, we arbitrarily
+pick the second (<CODE>last</CODE>) free square.
+
+<P><PRE>&gt; (best-square &quot;78o&quot; (find-triples 'xo__x___o) 'o)
+7
+
+&gt; (best-square &quot;36o&quot; (find-triples 'xo__x___o) 'o)
+6
+
+&gt; (best-move '(&quot;78o&quot; &quot;36o&quot;) (find-triples 'xo__x___o) 'o)
+7
+
+&gt; (i-can-advance? (find-triples 'xo__x___o) 'o)
+7
+</PRE>
+
+<P>What if <EM>both</EM> of the candidate squares are pivots for the opponent?
+In that case, we've picked a bad triple; moving in either square will make
+us lose.  As it turns out, this can occur only in a situation like the
+following:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>x<TD><TD><TR><TD><TD>o<TD><TR><TD><TD><TD>x</TABLE>&nbsp;
+
+<P>If we chose the triple <CODE>3o7</CODE>, then either move will force the
+opponent to set up a fork, so that we lose two moves later.  Luckily,
+though, we can instead choose a triple like <CODE>2o8</CODE>.  We can move in
+either of those squares and the game will end up a tie.
+
+<P>In principle, we should analyze a candidate triple to see if both free
+squares create forks for the opponent.  But since we happen to know that
+this situation arises only on the diagonals, we can be lazier.  We just list
+the diagonals <EM>last</EM> in the procedure <CODE>find-triples</CODE>.  Since we
+take the first available triple, this ensures that we won't take a diagonal
+if there are any other choices.<A NAME="text3" HREF="ttt.html#ft3">[3]</A>
+
+<P><H2>Leftovers</H2>
+
+<P>If all else fails, we just pick a square.  However, some squares are better
+than others.  The center square is part of four triples, the corner squares
+are each part of three, and the edge squares each a mere two.
+
+<P>So we pick the center if it's free, then a corner, then an edge.
+
+<P><PRE>(define (<A NAME="g26"></A>best-free-square triples)
+  (first-choice (accumulate word triples)
+		'(5 1 3 7 9 2 4 6 8)))
+
+(define (<A NAME="g27"></A>first-choice possibilities preferences)
+  (first (keep (lambda (square) (member? square possibilities))
+	       preferences)))
+
+&gt; (first-choice 123456789147258369159357 '(5 1 3 7 9 2 4 6 8))
+5
+
+&gt; (first-choice &quot;1xo4x6o8914oxx8o691x9oxo&quot; '(5 1 3 7 9 2 4 6 8))
+1
+
+&gt; (best-free-square (find-triples '_________))
+5
+
+&gt; (best-free-square (find-triples '____x____))
+1
+</PRE>
+
+<P><H2>Complete Program Listing</H2>
+
+<P><P><P><PRE>
+;;; ttt.scm
+;;; Tic-Tac-Toe program
+
+(define (ttt position me)
+  (ttt-choose (find-triples position) me))
+
+(define (find-triples position)
+  (every (lambda (comb) (substitute-triple comb position))
+         '(123 456 789 147 258 369 159 357)))
+
+(define (substitute-triple combination position)
+  (accumulate word
+	      (every (lambda (square)
+		       (substitute-letter square position))
+		     combination) ))
+
+(define (substitute-letter square position)
+  (if (equal? '_ (item square position))
+      square
+      (item square position) ))
+
+(define (ttt-choose triples me)
+  (cond ((i-can-win? triples me))
+        ((opponent-can-win? triples me))
+        ((i-can-fork? triples me))
+        ((i-can-advance? triples me))
+        (else (best-free-square triples)) ))
+
+(define (i-can-win? triples me)
+  (choose-win
+   (keep (lambda (triple) (my-pair? triple me))
+         triples)))
+
+(define (my-pair? triple me)
+  (and (= (appearances me triple) 2)
+       (= (appearances (opponent me) triple) 0)))
+
+(define (opponent letter)
+  (if (equal? letter 'x) 'o 'x))
+
+(define (choose-win winning-triples)
+  (if (empty? winning-triples)
+      #f
+      (keep number? (first winning-triples)) ))
+
+(define (opponent-can-win? triples me)
+  (i-can-win? triples (opponent me)) )
+
+(define (i-can-fork? triples me)
+  (first-if-any (pivots triples me)) )
+
+(define (first-if-any sent)
+  (if (empty? sent)
+      #f
+      (first sent) ))
+
+(define (pivots triples me)
+  (repeated-numbers (keep (lambda (triple) (my-single? triple me))
+                          triples)))
+
+(define (my-single? triple me)
+  (and (= (appearances me triple) 1)
+       (= (appearances (opponent me) triple) 0)))
+
+(define (repeated-numbers sent)
+  (every first
+         (keep (lambda (wd) (>= (count wd) 2))
+               (sort-digits (accumulate word sent)) )))
+
+(define (sort-digits number-word)
+  (every (lambda (digit) (extract-digit digit number-word))
+         '(1 2 3 4 5 6 7 8 9) ))
+
+(define (extract-digit desired-digit wd)
+  (keep (lambda (wd-digit) (equal? wd-digit desired-digit)) wd))
+
+(define (i-can-advance? triples me)
+  (best-move (keep (lambda (triple) (my-single? triple me)) triples)
+             triples
+             me))
+
+(define (best-move my-triples all-triples me)
+  (if (empty? my-triples)
+      #f
+      (best-square (first my-triples) all-triples me) ))
+
+(define (best-square my-triple triples me)
+  (best-square-helper (pivots triples (opponent me))
+		      (keep number? my-triple)))
+
+(define (best-square-helper opponent-pivots pair)
+  (if (member? (first pair) opponent-pivots)
+      (first pair)
+      (last pair)))
+
+(define (best-free-square triples)
+  (first-choice (accumulate word triples)
+                '(5 1 3 7 9 2 4 6 8)))
+
+(define (first-choice possibilities preferences)
+  (first (keep (lambda (square) (member? square possibilities))
+               preferences)))
+</PRE><P>
+
+
+<P><H2>Exercises</H2>
+
+<P><B>10.1</B>&nbsp;&nbsp;The <CODE>ttt</CODE> procedure assumes that nobody has won the game
+yet.  What happens if you invoke <CODE>ttt</CODE> with a board position in which
+some player has already won?  Try to figure it out by looking through the
+program before you run it.
+
+<P>A complete tic-tac-toe program would need to stop when one of the two
+players wins.  Write a predicate <CODE><A NAME="g28"></A>already-won?</CODE> that takes a
+board position and a letter (<CODE>x</CODE> or <CODE>o</CODE>) as its arguments and returns
+<CODE>#t</CODE> if that player has already won.
+<A NAME="tttwon"></A>
+
+
+<P>
+<B>10.2</B>&nbsp;&nbsp;The program also doesn't notice when the game has ended in a tie, that is,
+when all nine squares are already filled.  What happens now if you ask it to
+move in this situation?
+
+<P>Write a procedure <CODE><A NAME="g29"></A>tie-game?</CODE> that returns <CODE>#t</CODE> in this case.
+<A NAME="ttttied"></A>
+
+
+<P>
+<B>10.3</B>&nbsp;&nbsp;A real human playing tic-tac-toe would look at a board like this:
+
+<P>
+&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD>o<TD>x<TD>o<TR><TD>o<TD>x<TD>x<TR><TD>x<TD>o<TD></TABLE>&nbsp;
+
+<P>
+
+<P>and notice that it's a tie, rather than moving in square <CODE>9</CODE>.
+Modify <CODE>tie-game?</CODE> from Exercise <A HREF="ttt.html#ttttied">10.2</A> to notice this situation and
+return <CODE>#t</CODE>.
+
+<P>(Can you improve the program's ability to recognize ties even further?
+What about boards with two free squares?)
+
+
+<P>
+<B>10.4</B>&nbsp;&nbsp;Here are some possible changes to the rules of tic-tac-toe:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">What if you could
+win a game by having three squares forming an L shape in a corner, such
+as squares 1, 2, and 4?
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">What if the diagonals didn't win?
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">What if you could win by having <EM>four</EM>
+squares in a corner, such as 1, 2, 4, and 5?
+
+</TABLE><P>
+Answer the following questions for each of these modifications separately:
+What would happen if we tried to implement the change merely by changing the
+quoted sentence of potential winning combinations in <CODE>find-triples</CODE>?
+Would the program successfully follow the rules as modified?
+
+
+<P>
+<B>10.5</B>&nbsp;&nbsp;Modify <CODE>ttt</CODE> to play chess.
+
+
+<P>
+
+
+<HR>
+<A NAME="ft1" HREF="ttt.html#text1">[1]</A> A kludge is a programming trick that doesn't follow
+the rules but works anyway somehow.  It doesn't rhyme with &quot;sludge&quot;; it's
+more like &quot;clue&quot; followed by &quot;j&quot; as in &quot;Jim.&quot;<P>
+<A NAME="ft2" HREF="ttt.html#text2">[2]</A> Brian
+thinks this is a kludge, but Matt thinks it's brilliant and elegant.<P>
+<A NAME="ft3" HREF="ttt.html#text3">[3]</A> Matt thinks this is a
+kludge, but Brian thinks it's brilliant and elegant.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch9/bridge.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch11/part4.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch11/part4.html b/js/games/nluqo.github.io/~bh/ssch11/part4.html
new file mode 100644
index 0000000..c99975d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch11/part4.html
@@ -0,0 +1,108 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science, Part 11: Recursion</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Part IV</H2>
+<H1>Recursion</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch11.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch10/ttt.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="recursion.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR><BIG>
+
+<P>By now you're very familiar with the idea of implementing a function by
+composing other functions.  In effect we are breaking down a large problem
+into smaller parts.  The idea of recursion&mdash;as usual, it sounds simpler
+than it actually is&mdash;is that one of the smaller parts can be the <EM>same</EM> function we are trying to implement.
+
+<P>At clothes stores they have arrangements with three mirrors hinged together.
+If you keep the side mirrors pointing outward, and you're standing in the
+right position, what you see is just three separate images of yourself, one
+face-on and two with profile views.  But if you turn the mirrors in toward
+each other, all of a sudden you see what looks like infinitely many
+images of yourself.  That's because each mirror reflects a scene that
+includes an image of the mirror itself.  This <EM>self-reference</EM> gives
+rise to the multiple images.
+
+<P>Recursion is the idea of self-reference applied to computer programs.
+Here's an example:
+
+<P><P>&quot;I'm thinking of a number between 1 and 20.&quot;
+
+<P>(Her number is between 1 and 20.  I'll guess the halfway point.)  &quot;10.&quot;
+
+<P>&quot;Too low.&quot;
+
+<P>(Hmm, her number is between 11 and 20.  I'll guess the halfway point.)  &quot;15.&quot;
+
+<P>&quot;Too high.&quot;
+
+<P>(That means her number is between 11 and 14.  I'll guess the halfway
+point.)  &quot;12.&quot;
+
+<P>&quot;Got it!&quot;
+
+<P>
+<P>
+We can write a procedure to do this:
+
+<P><PRE>(define (game low high)
+  (let ((guess (average low high)))
+    (cond ((too-low? guess) (game (+ guess 1) high))
+	  ((too-high? guess) (game low (- guess 1)))
+	  (else '(I win!)))))
+</PRE>
+
+<P>This isn't a complete program because we haven't written <CODE>too-low?</CODE> and <CODE>too-high?</CODE>.  But it illustrates the idea of a problem
+that contains a version of itself as a subproblem:  We're asked to find a
+secret number within a given range.  We make a guess, and if it's not the
+answer, we use that guess to create another problem in which the same
+secret number is known to be within a smaller range.  The self-reference
+of the problem description is expressed in Scheme by a procedure that
+invokes itself as a subprocedure.
+
+<P>Actually, this isn't the first time we've seen self-reference in this book.
+We defined &quot;expression&quot; in Chapter 3 self-referentially:  An
+expression is either atomic or composed of smaller expressions.
+
+<P>The idea of self-reference also comes up in some paradoxes:  Is the sentence
+&quot;This sentence is false&quot; true or false?  (If it's true, then it must also
+be false, since it says so; if it's false, then it must also be true, since
+that's the opposite of what it says.)  This idea also appears in the
+self-referential shapes called <EM>fractals</EM> that are used to produce
+realistic-looking waves, clouds, mountains, and coastlines in
+computer-generated graphics.
+
+<P>
+</BIG>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch10/ttt.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="recursion.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch11/recursion b/js/games/nluqo.github.io/~bh/ssch11/recursion
new file mode 100644
index 0000000..4c4d9b4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch11/recursion
@@ -0,0 +1,776 @@
+<P>
+
+<P><A NAME="gallery"></A><CENTER><IMG SRC="../ss-pics/gallery.jpg" ALT="figure: gallery"></CENTER><P><CENTER><EM>Print Gallery,</EM> by M. C. Escher (lithograph,
+1956)
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 11: Introduction to Recursion</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 11</H2>
+<H1>Introduction to Recursion</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch11.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch12/leap.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P><A NAME="swallow"></A>
+
+<P><TABLE>
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a fly.
+<TD>&nbsp;&nbsp;She swallowed the cat to catch the bird.
+<TR><TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TD>&nbsp;&nbsp;She swallowed the bird to catch the spider
+<TR><TD>&nbsp;&nbsp;Perhaps she'll die.
+<TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.&nbsp;&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a spider
+<TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TR><TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.
+<TD>&nbsp;&nbsp;Perhaps she'll die.
+<TR><TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TD>&nbsp;&nbsp;I know an old lady who swallowed a dog.
+<TR><TD>&nbsp;&nbsp;Perhaps she'll die.
+<TD>&nbsp;&nbsp;What a hog, to swallow a dog!
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;She swallowed the dog to catch the cat.
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a bird.
+<TD>&nbsp;&nbsp;She swallowed the cat to catch the bird.
+<TR><TD>&nbsp;&nbsp;How absurd, to swallow a bird!
+<TD>&nbsp;&nbsp;She swallowed the bird to catch the spider
+<TR><TD>&nbsp;&nbsp;She swallowed the bird to catch the spider
+<TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.
+<TR><TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.
+<TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TR><TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TR><TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TD>&nbsp;&nbsp;Perhaps she'll die.
+<TR><TD>&nbsp;&nbsp;Perhaps she'll die.
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;I know an old lady who swallowed a horse.
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a cat.
+<TD>&nbsp;&nbsp;She's dead of course!
+<TR><TD>&nbsp;&nbsp;Imagine that, to swallow a cat.
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;&nbsp;<TD>&nbsp;&nbsp;<TR><TD>&nbsp;&nbsp;&nbsp;<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;100 bottles of beer on the wall,
+<TD>&nbsp;&nbsp;98 bottles of beer on the wall,
+<TR><TD>&nbsp;&nbsp;100 bottles of beer.
+<TD>&nbsp;&nbsp;98 bottles of beer.
+<TR><TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TR><TD>&nbsp;&nbsp;99 bottles of beer on the wall.
+<TD>&nbsp;&nbsp;97 bottles of beer on the wall.
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;99 bottles of beer on the wall,
+<TD>&nbsp;&nbsp;97 bottles of beer on the wall,
+<TR><TD>&nbsp;&nbsp;99 bottles of beer.
+<TD>&nbsp;&nbsp;97 bottles of beer.
+<TR><TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TR><TD>&nbsp;&nbsp;98 bottles of beer on the wall.
+<TD>&nbsp;&nbsp;96 bottles of beer on the wall&hellip;
+</TABLE>
+<P>&nbsp;<P>
+
+
+<P>In the next few chapters we're going to talk about <EM>recursion:</EM> solving a big problem by reducing it to a similar,
+smaller subproblem.  Actually that's a little backward from the old lady in
+the song, who turned her little problem into a similar but <EM>bigger</EM>
+problem!  As the song warns us, this can be fatal.
+
+<P>Here's the first problem we'll solve.  We want a function that
+works like this:
+
+<P><PRE>&gt; (<A NAME="g1"></A>downup 'ringo)
+(RINGO RING RIN RI R RI RIN RING RINGO)
+
+&gt; (downup 'marsupial)
+(MARSUPIAL
+ MARSUPIA
+ MARSUPI
+ MARSUP
+ MARSU
+ MARS
+ MAR
+ MA
+ M
+ MA
+ MAR
+ MARS
+ MARSU
+ MARSUP
+ MARSUPI
+ MARSUPIA
+ MARSUPIAL)
+</PRE>
+
+<P>None of the tools that we've used so far will handle this problem.  It's not
+a &quot;compute this function for each letter of the word&quot; problem, for which
+we could use <CODE>every</CODE>.<A NAME="text1" HREF="recursion#ft1">[1]</A>  Rather, we have to think
+about the entire word in a rather complicated way.
+
+<P>We're going to solve this problem using recursion.  It turns out that the
+idea of recursion is both very powerful&mdash;we can solve a <EM>lot</EM> of
+problems using it&mdash;and rather tricky to understand.  That's why we're going
+to explain recursion several different ways in the coming chapters.  Even
+after you understand one of them, you'll probably find that thinking about
+recursion from another point of view enriches your ability to use this idea.
+The explanation in this chapter is based on the <EM>combining method.</EM>
+
+<P><H2>A Separate Procedure for Each Length</H2>
+
+<P>Since we don't yet know how to solve the <CODE>downup</CODE> problem in general,
+let's start with a particular case that we <EM>can</EM> solve.  We'll write a
+version of <CODE>downup</CODE> that works only for one-letter words:
+
+<P><PRE>(define (downup1 wd)
+  (se wd))
+
+&gt; (downup1 'a)
+(A)
+</PRE>
+
+<P>So far so good!  This isn't a very versatile program, but it does have the
+advantage of being easy to write.
+
+<P>Now let's see if we can do two-letter words:
+
+<P><PRE>(define (downup2 wd)
+  (se wd (first wd) wd))
+
+&gt; (downup2 'be)
+(BE B BE)
+</PRE>
+
+<P>Moving right along&hellip;
+<PRE>(define (downup3 wd)
+  (se wd
+      (bl wd)
+      (first wd)
+      (bl wd)
+      wd))
+
+&gt; (downup3 'foo)
+(FOO FO F FO FOO)
+</PRE>
+
+<P>We could continue along these lines, writing procedures <CODE>downup4</CODE> and so
+on.  If we knew that the longest word in English had 83 letters, we could
+write all of the single-length <CODE>downup</CODE>s up to <CODE>downup83</CODE>, and then
+write one overall <CODE>downup</CODE> procedure that would consist of an enormous
+<CODE>cond</CODE> with 83 clauses, one for each length.
+
+<P><H2>Use What You Have to Get What You Need</H2>
+
+<P>But that's a terrible idea.  We'd get really bored, and start making a lot
+of mistakes, if we tried to work up to <CODE>downup83</CODE> this way.
+
+<P>The next trick is to notice that the middle part of what <CODE>(downup3 'foo)</CODE> does is just like <CODE>(downup2 'fo)</CODE>:
+
+<P><CENTER><IMG SRC="../ss-pics/uparrow.jpg" ALT="figure: uparrow"></CENTER>
+
+<P>
+<P>So we can find the parts of <CODE>downup3</CODE> that are responsible for
+those three words:
+
+<P><CENTER><IMG SRC="../ss-pics/curvedarrow.jpg" ALT="figure: curvedarrow"></CENTER>
+
+<P>
+<P>and replace them with an invocation of <CODE>downup2</CODE>:
+
+<P><PRE>(define (downup3 wd)
+  (se wd (downup2 (bl wd)) wd))
+</PRE>
+
+<P>How about <CODE>downup4</CODE>?  Once we've had this great idea about using <CODE>downup2</CODE> to help with <CODE>downup3</CODE>, it's not hard to continue the pattern:
+
+<P><PRE>(define (downup4 wd)
+  (se wd (downup3 (bl wd)) wd))
+
+&gt; (downup4 'paul)
+(PAUL PAU PA P PA PAU PAUL)
+</PRE>
+
+<P>The reason we can fit the body of <CODE>downup4</CODE> on one line is that most of
+its work is done for it by <CODE>downup3</CODE>.  If we continued writing each new
+<CODE>downup</CODE> procedure independently, as we did in our first attempt at <CODE>downup3</CODE>, our procedures would be getting longer and longer.  But this new
+way avoids that.
+
+<P><PRE>(define (downup59 wd)
+  (se wd (downup58 (bl wd)) wd))
+</PRE>
+
+<P>Also, although it may be harder to notice, we can even rewrite <CODE>downup2</CODE>
+along the same lines:
+
+<P><PRE>(define (downup2 wd)
+  (se wd (downup1 (bl wd)) wd))
+</PRE>
+
+<P><H2>Notice That They're All the Same</H2>
+
+<P>Although <CODE>downup59</CODE> was easy to write, the problem is that it won't work
+unless we also define <CODE>downup58</CODE>, which in turn depends on <CODE>downup57</CODE>, and so on.  This is a lot of repetitive, duplicated, and
+redundant typing.  Since these procedures are all basically the same, what
+we'd like to do is combine them into a single procedure:
+
+<P><PRE>(define (downup wd)                          ;; first version
+  (se wd (downup (bl wd)) wd))
+</PRE>
+
+<P>Isn't this a great idea?  We've written one short procedure that
+serves as a kind of abbreviation for 59 other ones.
+
+<P><H2>Notice That They're Almost All the Same</H2>
+
+<P>Unfortunately, it doesn't work.
+
+<P><PRE>&gt; (downup 'toe)
+ERROR: Invalid argument to BUTLAST: &quot;"
+</PRE>
+
+<P>What's gone wrong here?  Not quite every numbered <CODE>downup</CODE> looks like
+
+<P><PRE>(define (downup<EM>n</EM> wd)
+  (se wd (downup<EM>n</EM>-<EM>1</EM> (bl wd)) wd))
+</PRE>
+
+<P>The only numbered <CODE>downup</CODE> that doesn't follow the pattern is <CODE>downup1</CODE>:
+
+<P><PRE>(define (downup1 wd)
+  (se wd))
+</PRE>
+
+<P>So if we collapse all the numbered <CODE>downup</CODE>s into a single procedure, we
+have to treat one-letter words as a special case:
+
+<P><PRE>(define (<A NAME="g2"></A>downup wd)
+  (if (= (count wd) 1)
+      (se wd)
+      (se wd (downup (bl wd)) wd)))
+
+&gt; (downup 'toe)
+(TOE TO T TO TOE)
+
+&gt; (downup 'banana)
+(BANANA BANAN BANA BAN BA B BA BAN BANA BANAN BANANA)
+</PRE>
+
+<P>This version of <CODE>downup</CODE> will work for any length word, from <CODE>a</CODE> to
+<CODE>pneumonoultramicroscopicsilicovolcanoconinosis</CODE><A NAME="text2" HREF="recursion#ft2">[2]</A> or beyond.
+
+<P><H2>Base Cases and Recursive Calls</H2>
+
+<P><CODE>Downup</CODE> illustrates the structure of every recursive procedure. There is
+a choice among expressions to evaluate:  At least one is a <EM>recursive</EM>
+<A NAME="g3"></A>
+<A NAME="g4"></A>
+case, in which the procedure (e.g., <CODE>downup</CODE>) itself is invoked with a
+smaller argument; at least one is a <EM>base</EM> case, that is, one that can
+be
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+solved without calling the procedure recursively.  For <CODE>downup</CODE>, the base
+case is a single-letter argument.
+
+<P>How can this possibly work?  We're defining <CODE>downup</CODE> in terms of <CODE>downup</CODE>.  In English class, if the teacher asks you to define &quot;around,&quot;
+you'd better not say, &quot;You know, <EM>around!</EM>&quot; But we appear to be
+doing just that.  We're telling Scheme:  &quot;In order to find <CODE>downup</CODE> of a
+word, find <CODE>downup</CODE> of another word.&quot;
+
+<P>The secret is that it's not just any old other word.  The new word is
+<EM>smaller</EM> than the word we were originally asked to <CODE>downup</CODE>.  So
+we're saying, &quot;In order to find <CODE>downup</CODE> of a word, find <CODE>downup</CODE>
+of a shorter word.&quot; We are posing a whole slew of <EM>subproblems</EM>
+asking for the <CODE>downup</CODE> of words smaller than the one we started with.
+So if someone asks us the <CODE>downup</CODE> of <CODE>happy</CODE>, along the way we have
+to compute the <CODE>downup</CODE>s of <CODE>happ</CODE>, <CODE>hap</CODE>, <CODE>ha</CODE>, and <CODE>h</CODE>.
+
+<P>A recursive procedure doesn't work unless every possible argument can
+eventually be reduced to some base case.  When we are asked for <CODE>downup</CODE>
+of <CODE>h</CODE>, the procedure just knows what to do without calling itself
+recursively.  
+
+<P>We've just said that there has to be a base case.  It's also important that
+each recursive call has to get us somehow closer to the base case.  For
+<CODE>downup</CODE>, &quot;closer&quot; means that in the recursive call we use a shorter
+word.  If we were computing a numeric function, the base case might be an
+argument of zero, and the recursive calls would use smaller numbers.
+
+<P><H2>Pig Latin</H2>
+
+<P>Let's take another example; we'll write the <A NAME="g7"></A><A NAME="g8"></A>Pig Latin procedure
+that we showed off in Chapter 1.  We're trying to take a word, move
+all the initial consonants to the end, and add &quot;ay.&quot;
+
+<P>The simplest case is that there are no initial consonants to move:
+
+<P><PRE>(define (pigl0 wd)
+  (word wd 'ay))
+
+&gt; (pigl0 'alabaster)
+ALABASTERAY
+</PRE>
+
+<P>(This will turn out to be the base case of our eventual
+recursive procedure.)
+
+<P>The next-simplest case is a word that starts with one consonant.  The
+obvious way to write this is
+
+<P><PRE>(define (pigl1 wd)                           ;; obvious version
+  (word (bf wd) (first wd) 'ay))
+
+&gt; (pigl1 'salami)
+ALAMISAY
+</PRE>
+
+<P>but, as in the <CODE>downup</CODE> example, we'd like to find a way to use
+<CODE>pigl0</CODE> in implementing <CODE>pigl1</CODE>.  This case isn't exactly like <CODE>downup</CODE>, because there isn't a piece of the return value that we can draw a
+box around to indicate that <CODE>pigl0</CODE> returns that piece.  Instead, <CODE>pigl0</CODE> puts the letters <CODE>ay</CODE> at the end of some word, and so does <CODE>pigl1</CODE>.  The difference is that <CODE>pigl1</CODE> puts <CODE>ay</CODE> at the end of
+a <EM>rearrangement</EM> of its argument word.  To make this point clearer,
+we'll rewrite <CODE>pigl1</CODE> in a way that separates the rearrangement from the
+<CODE>ay</CODE> addition:
+
+<P><PRE>(define (pigl1 wd)
+  (word (word (bf wd) (first wd))
+	'ay))
+
+&gt; (pigl1 'pastrami)
+ASTRAMIPAY
+</PRE>
+
+<P>Now we actually replace the <CODE>pigl0</CODE>-like part with an
+invocation.  We want to replace <CODE>(word <CODE><EM>something</EM></CODE> 'ay)</CODE> with
+<CODE>(pigl0 <CODE><EM>something</EM></CODE>)</CODE>.  If we use <CODE>pigl0</CODE> to attach the
+<CODE>ay</CODE> at the end, our new version of <CODE>pigl1</CODE> looks like this:
+
+<P><PRE>(define (pigl1 wd)
+  (pigl0 (word (bf wd) (first wd))))
+</PRE>
+
+<P>How about a word starting with two consonants?  By now we know that we're
+going to try to use <CODE>pigl1</CODE> as a helper procedure, so let's skip writing
+<CODE>pigl2</CODE> the long way.  We can just move the first consonant to the end
+of the word, and handle the result, a word with only one consonant in front,
+with <CODE>pigl1</CODE>:
+
+<P><PRE>(define (pigl2 wd)
+  (pigl1 (word (bf wd) (first wd))))
+
+&gt; (pigl2 'trample)
+AMPLETRAY
+</PRE>
+
+<P>For a three-initial-consonant word we move one letter to the end and call
+<CODE>pigl2</CODE>:
+
+<P><PRE>(define (pigl3 wd)
+  (pigl2 (word (bf wd) (first wd))))
+
+&gt; (pigl3 'chrome)
+OMECHRAY
+</PRE>
+
+<P>So how about a version that will work for any word?<A NAME="text3" HREF="recursion#ft3">[3]</A> The recursive case will involve taking the <CODE>pigl</CODE> of <CODE>(word (bf wd) (first wd))</CODE>, to match the pattern we found in
+<CODE>pigl1</CODE>, <CODE>pigl2</CODE>, and <CODE>pigl3</CODE>.  The base case will be a word
+that begins with a vowel, for which we'll just add <CODE>ay</CODE> on the end, as
+<CODE>pigl0</CODE> does:
+
+<P><PRE>(define (<A NAME="g9"></A>pigl wd)
+  (if (member? (first wd) 'aeiou)
+      (word wd 'ay)
+      (pigl (word (bf wd) (first wd)))))
+</PRE>
+
+<P>It's an unusual sense in which <CODE>pigl</CODE>'s recursive call poses a
+&quot;smaller&quot; subproblem.  If we're asked for the <CODE>pigl</CODE> of <CODE>scheme</CODE>,
+we construct a new word, <CODE>chemes</CODE>, and ask for <CODE>pigl</CODE> of that.  This
+doesn't seem like much progress.  We were asked to translate <CODE>scheme</CODE>, a
+six-letter word, into Pig Latin, and in order to do this we need to
+translate <CODE>chemes</CODE>, another six-letter word, into Pig Latin.
+
+<P>But actually this <EM>is</EM> progress, because for Pig Latin the base case
+isn't a one-letter word, but rather a word that starts with a vowel.
+<CODE>Scheme</CODE> has three consonants before the first vowel; <CODE>chemes</CODE> has
+only two consonants before the first vowel.
+
+<P><CODE>Chemes</CODE> doesn't begin with a vowel either, so we construct the word
+<CODE>hemesc</CODE> and try to <CODE>pigl</CODE> that.  In order to find <CODE>(pigl 'hemesc)</CODE> we need to know <CODE>(pigl 'emesch)</CODE>.  Since <CODE>emesch</CODE>
+<EM>does</EM> begin with a vowel, <CODE>pigl</CODE> returns <CODE>emeschay</CODE>. Once we
+know <CODE>(pigl 'emesch)</CODE>, we've thereby found the answer to our original
+question.
+
+<P><H2>Problems for You to Try</H2>
+
+<P>You've now seen two examples of recursive procedures that we developed using
+the combining method.  We started by writing special-case procedures to
+handle small problems of a particular size, then simplified the larger
+versions by using smaller versions as helper procedures.  Finally we
+combined all the nearly identical individual versions into a single
+recursive procedure, taking care to handle the base case separately.
+
+<P>Here are a couple of problems that can be solved with recursive procedures.
+Try them yourself before reading further.  Then we'll show you our solutions.
+
+<P><PRE>&gt; (<A NAME="g10"></A>explode 'dynamite)
+(D Y N A M I T E)
+
+&gt; (<A NAME="g11"></A>letter-pairs 'george)
+(GE EO OR RG GE)
+</PRE>
+
+<P><H2>Our Solutions</H2>
+
+<P>What's the smallest word we can <CODE>explode</CODE>?  There's no reason we
+can't explode an empty word:
+
+<P><PRE>(define (explode0 wd)
+  '())
+</PRE>
+
+<P>That wasn't very interesting, though.  It doesn't suggest a
+pattern that will apply to larger words.  Let's try a few larger cases:
+
+<P><PRE>(define (explode1 wd)
+  (se wd))
+
+(define (explode2 wd)
+  (se (first wd) (last wd)))
+
+(define (explode3 wd)
+  (se (first wd) (first (bf wd)) (last wd)))
+</PRE>
+
+<P>With <CODE>explode3</CODE> the procedure is starting to get complicated enough that
+we want to find a way to use <CODE>explode2</CODE> to help.  What <CODE>explode3</CODE>
+does is to pull three separate letters out of its argument word, and collect
+the three letters in a sentence.  Here's a sample:
+
+<P><PRE>&gt; (explode3 'tnt)
+(T N T)
+</PRE>
+
+<P><CODE>Explode2</CODE> pulls <EM>two</EM> letters out of a word and
+collects them in a sentence.  So we could let <CODE>explode2</CODE> deal with two
+of the letters of our three-letter argument, and handle the remaining letter
+separately:
+
+<P><PRE>(define (explode3 wd)
+  (se (first wd) (explode2 (bf wd))))
+</PRE>
+
+<P>We can use similar reasoning to define <CODE>explode4</CODE> in terms of
+<CODE>explode3</CODE>:
+
+<P><PRE>(define (explode4 wd)
+  (se (first wd) (explode3 (bf wd))))
+</PRE>
+
+<P>Now that we see the pattern, what's the base case?  Our first three
+numbered <CODE>explode</CODE>s are all different in shape from <CODE>explode3</CODE>,
+but now that we know what the pattern should be we'll find that we
+can write <CODE>explode2</CODE> in terms of <CODE>explode1</CODE>, and even <CODE>explode1</CODE>
+in terms of <CODE>explode0</CODE>:
+
+<P><PRE>(define (explode2 wd)
+  (se (first wd) (explode1 (bf wd))))
+
+(define (explode1 wd)
+  (se (first wd) (explode0 (bf wd))))
+</PRE>
+
+<P>We would never have thought to write <CODE>explode1</CODE> in that
+roundabout way, especially since <CODE>explode0</CODE> pays no attention to
+its argument, so computing the <CODE>butfirst</CODE> doesn't contribute
+anything to the result, but by following the pattern we can let the
+recursive case handle one-letter and two-letter words, so that only
+zero-letter words have to be special:
+
+<P><A NAME="explodepage"></A>
+<PRE>(define (explode wd)
+  (if (empty? wd)
+      '()
+      (se (first wd) (explode (bf wd)))))
+</PRE>
+
+<P>Now for <CODE>letter-pairs</CODE>.  What's the smallest word we can use as its
+argument?  Empty and one-letter words have no letter pairs in them:
+
+<P><PRE>(define (letter-pairs0 wd)
+  '())
+
+(define (letter-pairs1 wd)
+  '())
+</PRE>
+
+<P>This pattern is not very helpful.
+
+<P><PRE>(define (letter-pairs2 wd)
+  (se wd))
+
+(define (letter-pairs3 wd)
+  (se (bl wd) (bf wd)))
+
+(define (letter-pairs4 wd)
+  (se (bl (bl wd))
+      (bl (bf wd))
+      (bf (bf wd))))
+</PRE>
+
+<P>Again, we want to simplify <CODE>letter-pairs4</CODE> by using <CODE>letter-pairs3</CODE>
+to help.  The problem is similar to <CODE>explode</CODE>:  The value returned by
+<CODE>letter-pairs4</CODE> is a three-word sentence, and we can use <CODE>letter-pairs3</CODE> to generate two of those words.
+
+<P><PRE>&gt; (letter-pairs4 'nems)
+(NE <CODE STYLE="border:solid">EM MS</CODE>)
+</PRE>
+
+<P>This gives rise to the following procedure:
+
+<P><PRE>(define (letter-pairs4 wd)
+  (se (bl (bl wd))
+      (letter-pairs3 (bf wd))))
+</PRE>
+
+<P>Does this pattern work for defining <CODE>letter-pairs5</CODE> in terms of <CODE>letter-pairs4</CODE>?
+
+<P><PRE>(define (letter-pairs5 wd)                   ;; wrong
+  (se (bl (bl wd))
+      (letter-pairs4 (bf wd))))
+
+&gt; (letter-pairs5 'bagel)
+(BAG AG GE EL)
+</PRE>
+
+<P>The problem is that <CODE>(bl (bl wd))</CODE> means &quot;the first two letters of <CODE>wd</CODE>&quot; only when <CODE>wd</CODE> has four letters.  In order to be able to
+generalize the pattern, we need a way to ask for the first two letters of a
+word that works no matter how long the word is.  You wrote a procedure to
+solve this problem in Exercise :
+
+<P><PRE>(define (first-two wd)
+  (word (first wd) (first (bf wd))))
+</PRE>
+
+<P>Now we can use this for <CODE>letter-pairs4</CODE> and <CODE>letter-pairs5</CODE>:
+
+<P><PRE>(define (letter-pairs4 wd)
+  (se (first-two wd) (letter-pairs3 (bf wd))))
+
+(define (letter-pairs5 wd)
+  (se (first-two wd) (letter-pairs4 (bf wd))))
+</PRE>
+
+<P><EM>This</EM> pattern <EM>does</EM> generalize.
+
+<P><PRE>(define (letter-pairs wd)
+  (if (&lt;= (count wd) 1)
+      '()
+      (se (first-two wd)
+	  (letter-pairs (bf wd)))))
+</PRE>
+
+<P>Note that we treat two-letter and three-letter words as recursive
+cases and not as base cases.  Just as in the example of <CODE>explode</CODE>, we
+noticed that we could rewrite <CODE>letter-pairs2</CODE> and <CODE>letter-pairs3</CODE> to
+follow the same pattern as the larger cases:
+
+<P><PRE>(define (letter-pairs2 wd)
+  (se (first-two wd)
+      (letter-pairs1 (bf wd))))
+
+(define (letter-pairs3 wd)
+  (se (first-two wd)
+      (letter-pairs2 (bf wd))))
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>Every recursive procedure must include two parts: one or more recursive
+cases, in which the recursion reduces the size of the problem, and one or
+more base cases, in which the result is computable without recursion.  For
+example, our first attempt at <CODE>downup</CODE> fell into this pitfall because we
+had no base case.
+
+<P>Don't be too eager to write the recursive procedure.  As we showed
+in the <CODE>letter-pairs</CODE> example, what looks like a generalizable
+pattern may not be.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>11.1</B>&nbsp;&nbsp;Write <CODE>downup4</CODE> using only the word and sentence primitive procedures.
+
+
+<P>
+<B>11.2</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#countums">8.12</A>]<A NAME="text4" HREF="recursion#ft4">[4]</A>
+When you teach a class, people will get distracted if you say &quot;um&quot; too many
+times.  Write a <CODE><A NAME="g12"></A>count-ums</CODE> that counts the number of times &quot;um&quot;
+appears in a sentence:
+<A NAME="countumsrec"></A>
+
+<P><PRE>&gt; (count-ums
+   '(today um we are going to um talk about the combining um method))
+3
+</PRE>
+
+<P>Here are some special-case <CODE>count-ums</CODE>
+procedures for sentences of particular lengths:
+
+<P><PRE>(define (count-ums0 sent)
+  0)
+
+(define (count-ums1 sent)
+  (if (equal? 'um (first sent))
+      1
+      0))
+
+(define (count-ums2 sent)
+  (if (equal? 'um (first sent))
+      (+ 1 (count-ums1 (bf sent)))
+      (count-ums1 (bf sent))))
+
+(define (count-ums3 sent)
+  (if (equal? 'um (first sent))
+      (+ 1 (count-ums2 (bf sent)))
+      (count-ums2 (bf sent))))
+</PRE>
+
+<P>Write <CODE>count-ums</CODE> recursively.
+
+
+<P>
+<B>11.3</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#unspell">8.13</A>]
+Write a procedure <CODE><A NAME="g13"></A>phone-unspell</CODE> that takes a spelled version of
+a phone number, such as <CODE>POPCORN</CODE>, and returns the real phone number, in
+this case <CODE>7672676</CODE>.  You will need a helper procedure that
+translates a single letter into a digit:
+<A NAME="unspellrec"></A>
+
+<P><PRE>(define (unspell-letter letter)
+  (cond ((member? letter 'abc) 2)
+	((member? letter 'def) 3)
+	((member? letter 'ghi) 4)
+	((member? letter 'jkl) 5)
+	((member? letter 'mno) 6)
+	((member? letter 'prs) 7)
+	((member? letter 'tuv) 8)
+	((member? letter 'wxy) 9)
+	(else 0)))
+</PRE>
+
+<P>Here are some some special-case <CODE>phone-unspell</CODE> procedures:
+
+<P><PRE>(define (phone-unspell1 wd)
+  (unspell-letter wd))
+
+(define (phone-unspell2 wd)
+  (word (unspell-letter (first wd))
+	(unspell-letter (first (bf wd)))))
+
+(define (phone-unspell3 wd)
+  (word (unspell-letter (first wd))
+	(unspell-letter (first (bf wd)))
+	(unspell-letter (first (bf (bf wd))))))
+</PRE>
+
+<P>Write <CODE>phone-unspell</CODE> recursively.
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><STRONG>Use recursion to solve these problems, not higher order
+functions (Chapter 8)!</STRONG>
+
+<P><B>11.4</B>&nbsp;&nbsp;Who first said &quot;use what you have to get what you need&quot;?
+
+
+<P>
+<B>11.5</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g14"></A>initials</CODE> that takes a sentence as its
+argument and returns a sentence of the first letters in each of the
+sentence's words:
+
+<P><PRE>&gt; (initials '(if i needed someone))
+(I I N S)
+</PRE>
+
+<P>
+<B>11.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g15"></A>countdown</CODE> that works like this:
+
+<P><PRE>&gt; (countdown 10)
+(10 9 8 7 6 5 4 3 2 1 BLASTOFF!)
+
+&gt; (countdown 3)
+(3 2 1 BLASTOFF!)
+</PRE>
+
+<P>
+<B>11.7</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g16"></A>copies</CODE> that takes a number and a word as
+arguments and returns a sentence containing that many copies of the given
+word:
+<A NAME="copies"></A>
+
+<P><PRE>&gt; (copies 8 'spam)
+(SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM)
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="recursion#text1">[1]</A> If your instructor has asked you to read
+Part IV before Part III, ignore that sentence.<P>
+<A NAME="ft2" HREF="recursion#text2">[2]</A> It's a
+disease.  Coal miners get it.<P>
+<A NAME="ft3" HREF="recursion#text3">[3]</A> As it happens,
+there are no English words that start with more than four consonants.
+(There are only a few even with four; &quot;phthalate&quot; is one, and some others
+are people's names, such as &quot;Schneider.&quot;) So we could solve the problem
+without recursion by writing the specific procedures up to <CODE>pigl4</CODE> and
+then writing a five-way <CODE>cond</CODE> to choose the appropriate specific case.
+But as you will see, it's easier to solve the more general case!  A single
+recursive procedure, which can handle even nonexistent words with hundreds of
+initial consonants, is less effort than the conceptually simpler
+four-consonant version.<P>
+<A NAME="ft4" HREF="recursion#text4">[4]</A> Exercise <A HREF="../ssch8/higher.html#countums">8.12</A> in Part III asks you to solve this
+same problem using higher-order functions.  Here we are asking you to use
+recursion.  Whenever we pose the same problem in both parts, we'll
+cross-reference them in brackets as we did here.  When you see the problem
+for the second time, you might want to consult your first solution for ideas.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch12/leap.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch11/recursion.html b/js/games/nluqo.github.io/~bh/ssch11/recursion.html
new file mode 100644
index 0000000..293c8ad
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch11/recursion.html
@@ -0,0 +1,776 @@
+<P>
+
+<P><A NAME="gallery"></A><CENTER><IMG SRC="../ss-pics/gallery.jpg" ALT="figure: gallery"></CENTER><P><CENTER><EM>Print Gallery,</EM> by M. C. Escher (lithograph,
+1956)
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 11: Introduction to Recursion</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 11</H2>
+<H1>Introduction to Recursion</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch11.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch12/leap.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P><A NAME="swallow"></A>
+
+<P><TABLE>
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a fly.
+<TD>&nbsp;&nbsp;She swallowed the cat to catch the bird.
+<TR><TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TD>&nbsp;&nbsp;She swallowed the bird to catch the spider
+<TR><TD>&nbsp;&nbsp;Perhaps she'll die.
+<TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.&nbsp;&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a spider
+<TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TR><TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.
+<TD>&nbsp;&nbsp;Perhaps she'll die.
+<TR><TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TD>&nbsp;&nbsp;I know an old lady who swallowed a dog.
+<TR><TD>&nbsp;&nbsp;Perhaps she'll die.
+<TD>&nbsp;&nbsp;What a hog, to swallow a dog!
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;She swallowed the dog to catch the cat.
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a bird.
+<TD>&nbsp;&nbsp;She swallowed the cat to catch the bird.
+<TR><TD>&nbsp;&nbsp;How absurd, to swallow a bird!
+<TD>&nbsp;&nbsp;She swallowed the bird to catch the spider
+<TR><TD>&nbsp;&nbsp;She swallowed the bird to catch the spider
+<TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.
+<TR><TD>&nbsp;&nbsp;that wriggled and jiggled and tickled inside her.
+<TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TR><TD>&nbsp;&nbsp;She swallowed the spider to catch the fly.
+<TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TR><TD>&nbsp;&nbsp;I don't know why she swallowed the fly.
+<TD>&nbsp;&nbsp;Perhaps she'll die.
+<TR><TD>&nbsp;&nbsp;Perhaps she'll die.
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;I know an old lady who swallowed a horse.
+<TR><TD>&nbsp;&nbsp;I know an old lady who swallowed a cat.
+<TD>&nbsp;&nbsp;She's dead of course!
+<TR><TD>&nbsp;&nbsp;Imagine that, to swallow a cat.
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;&nbsp;<TD>&nbsp;&nbsp;<TR><TD>&nbsp;&nbsp;&nbsp;<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;100 bottles of beer on the wall,
+<TD>&nbsp;&nbsp;98 bottles of beer on the wall,
+<TR><TD>&nbsp;&nbsp;100 bottles of beer.
+<TD>&nbsp;&nbsp;98 bottles of beer.
+<TR><TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TR><TD>&nbsp;&nbsp;99 bottles of beer on the wall.
+<TD>&nbsp;&nbsp;97 bottles of beer on the wall.
+<TR><TD>&nbsp;&nbsp;
+<TD>&nbsp;&nbsp;
+<TR><TD>&nbsp;&nbsp;99 bottles of beer on the wall,
+<TD>&nbsp;&nbsp;97 bottles of beer on the wall,
+<TR><TD>&nbsp;&nbsp;99 bottles of beer.
+<TD>&nbsp;&nbsp;97 bottles of beer.
+<TR><TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TD>&nbsp;&nbsp;If one of those bottles should happen to fall,
+<TR><TD>&nbsp;&nbsp;98 bottles of beer on the wall.
+<TD>&nbsp;&nbsp;96 bottles of beer on the wall&hellip;
+</TABLE>
+<P>&nbsp;<P>
+
+
+<P>In the next few chapters we're going to talk about <EM>recursion:</EM> solving a big problem by reducing it to a similar,
+smaller subproblem.  Actually that's a little backward from the old lady in
+the song, who turned her little problem into a similar but <EM>bigger</EM>
+problem!  As the song warns us, this can be fatal.
+
+<P>Here's the first problem we'll solve.  We want a function that
+works like this:
+
+<P><PRE>&gt; (<A NAME="g1"></A>downup 'ringo)
+(RINGO RING RIN RI R RI RIN RING RINGO)
+
+&gt; (downup 'marsupial)
+(MARSUPIAL
+ MARSUPIA
+ MARSUPI
+ MARSUP
+ MARSU
+ MARS
+ MAR
+ MA
+ M
+ MA
+ MAR
+ MARS
+ MARSU
+ MARSUP
+ MARSUPI
+ MARSUPIA
+ MARSUPIAL)
+</PRE>
+
+<P>None of the tools that we've used so far will handle this problem.  It's not
+a &quot;compute this function for each letter of the word&quot; problem, for which
+we could use <CODE>every</CODE>.<A NAME="text1" HREF="recursion.html#ft1">[1]</A>  Rather, we have to think
+about the entire word in a rather complicated way.
+
+<P>We're going to solve this problem using recursion.  It turns out that the
+idea of recursion is both very powerful&mdash;we can solve a <EM>lot</EM> of
+problems using it&mdash;and rather tricky to understand.  That's why we're going
+to explain recursion several different ways in the coming chapters.  Even
+after you understand one of them, you'll probably find that thinking about
+recursion from another point of view enriches your ability to use this idea.
+The explanation in this chapter is based on the <EM>combining method.</EM>
+
+<P><H2>A Separate Procedure for Each Length</H2>
+
+<P>Since we don't yet know how to solve the <CODE>downup</CODE> problem in general,
+let's start with a particular case that we <EM>can</EM> solve.  We'll write a
+version of <CODE>downup</CODE> that works only for one-letter words:
+
+<P><PRE>(define (downup1 wd)
+  (se wd))
+
+&gt; (downup1 'a)
+(A)
+</PRE>
+
+<P>So far so good!  This isn't a very versatile program, but it does have the
+advantage of being easy to write.
+
+<P>Now let's see if we can do two-letter words:
+
+<P><PRE>(define (downup2 wd)
+  (se wd (first wd) wd))
+
+&gt; (downup2 'be)
+(BE B BE)
+</PRE>
+
+<P>Moving right along&hellip;
+<PRE>(define (downup3 wd)
+  (se wd
+      (bl wd)
+      (first wd)
+      (bl wd)
+      wd))
+
+&gt; (downup3 'foo)
+(FOO FO F FO FOO)
+</PRE>
+
+<P>We could continue along these lines, writing procedures <CODE>downup4</CODE> and so
+on.  If we knew that the longest word in English had 83 letters, we could
+write all of the single-length <CODE>downup</CODE>s up to <CODE>downup83</CODE>, and then
+write one overall <CODE>downup</CODE> procedure that would consist of an enormous
+<CODE>cond</CODE> with 83 clauses, one for each length.
+
+<P><H2>Use What You Have to Get What You Need</H2>
+
+<P>But that's a terrible idea.  We'd get really bored, and start making a lot
+of mistakes, if we tried to work up to <CODE>downup83</CODE> this way.
+
+<P>The next trick is to notice that the middle part of what <CODE>(downup3 'foo)</CODE> does is just like <CODE>(downup2 'fo)</CODE>:
+
+<P><CENTER><IMG SRC="../ss-pics/uparrow.jpg" ALT="figure: uparrow"></CENTER>
+
+<P>
+<P>So we can find the parts of <CODE>downup3</CODE> that are responsible for
+those three words:
+
+<P><CENTER><IMG SRC="../ss-pics/curvedarrow.jpg" ALT="figure: curvedarrow"></CENTER>
+
+<P>
+<P>and replace them with an invocation of <CODE>downup2</CODE>:
+
+<P><PRE>(define (downup3 wd)
+  (se wd (downup2 (bl wd)) wd))
+</PRE>
+
+<P>How about <CODE>downup4</CODE>?  Once we've had this great idea about using <CODE>downup2</CODE> to help with <CODE>downup3</CODE>, it's not hard to continue the pattern:
+
+<P><PRE>(define (downup4 wd)
+  (se wd (downup3 (bl wd)) wd))
+
+&gt; (downup4 'paul)
+(PAUL PAU PA P PA PAU PAUL)
+</PRE>
+
+<P>The reason we can fit the body of <CODE>downup4</CODE> on one line is that most of
+its work is done for it by <CODE>downup3</CODE>.  If we continued writing each new
+<CODE>downup</CODE> procedure independently, as we did in our first attempt at <CODE>downup3</CODE>, our procedures would be getting longer and longer.  But this new
+way avoids that.
+
+<P><PRE>(define (downup59 wd)
+  (se wd (downup58 (bl wd)) wd))
+</PRE>
+
+<P>Also, although it may be harder to notice, we can even rewrite <CODE>downup2</CODE>
+along the same lines:
+
+<P><PRE>(define (downup2 wd)
+  (se wd (downup1 (bl wd)) wd))
+</PRE>
+
+<P><H2>Notice That They're All the Same</H2>
+
+<P>Although <CODE>downup59</CODE> was easy to write, the problem is that it won't work
+unless we also define <CODE>downup58</CODE>, which in turn depends on <CODE>downup57</CODE>, and so on.  This is a lot of repetitive, duplicated, and
+redundant typing.  Since these procedures are all basically the same, what
+we'd like to do is combine them into a single procedure:
+
+<P><PRE>(define (downup wd)                          ;; first version
+  (se wd (downup (bl wd)) wd))
+</PRE>
+
+<P>Isn't this a great idea?  We've written one short procedure that
+serves as a kind of abbreviation for 59 other ones.
+
+<P><H2>Notice That They're Almost All the Same</H2>
+
+<P>Unfortunately, it doesn't work.
+
+<P><PRE>&gt; (downup 'toe)
+ERROR: Invalid argument to BUTLAST: &quot;"
+</PRE>
+
+<P>What's gone wrong here?  Not quite every numbered <CODE>downup</CODE> looks like
+
+<P><PRE>(define (downup<EM>n</EM> wd)
+  (se wd (downup<EM>n</EM>-<EM>1</EM> (bl wd)) wd))
+</PRE>
+
+<P>The only numbered <CODE>downup</CODE> that doesn't follow the pattern is <CODE>downup1</CODE>:
+
+<P><PRE>(define (downup1 wd)
+  (se wd))
+</PRE>
+
+<P>So if we collapse all the numbered <CODE>downup</CODE>s into a single procedure, we
+have to treat one-letter words as a special case:
+
+<P><PRE>(define (<A NAME="g2"></A>downup wd)
+  (if (= (count wd) 1)
+      (se wd)
+      (se wd (downup (bl wd)) wd)))
+
+&gt; (downup 'toe)
+(TOE TO T TO TOE)
+
+&gt; (downup 'banana)
+(BANANA BANAN BANA BAN BA B BA BAN BANA BANAN BANANA)
+</PRE>
+
+<P>This version of <CODE>downup</CODE> will work for any length word, from <CODE>a</CODE> to
+<CODE>pneumonoultramicroscopicsilicovolcanoconinosis</CODE><A NAME="text2" HREF="recursion.html#ft2">[2]</A> or beyond.
+
+<P><H2>Base Cases and Recursive Calls</H2>
+
+<P><CODE>Downup</CODE> illustrates the structure of every recursive procedure. There is
+a choice among expressions to evaluate:  At least one is a <EM>recursive</EM>
+<A NAME="g3"></A>
+<A NAME="g4"></A>
+case, in which the procedure (e.g., <CODE>downup</CODE>) itself is invoked with a
+smaller argument; at least one is a <EM>base</EM> case, that is, one that can
+be
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+solved without calling the procedure recursively.  For <CODE>downup</CODE>, the base
+case is a single-letter argument.
+
+<P>How can this possibly work?  We're defining <CODE>downup</CODE> in terms of <CODE>downup</CODE>.  In English class, if the teacher asks you to define &quot;around,&quot;
+you'd better not say, &quot;You know, <EM>around!</EM>&quot; But we appear to be
+doing just that.  We're telling Scheme:  &quot;In order to find <CODE>downup</CODE> of a
+word, find <CODE>downup</CODE> of another word.&quot;
+
+<P>The secret is that it's not just any old other word.  The new word is
+<EM>smaller</EM> than the word we were originally asked to <CODE>downup</CODE>.  So
+we're saying, &quot;In order to find <CODE>downup</CODE> of a word, find <CODE>downup</CODE>
+of a shorter word.&quot; We are posing a whole slew of <EM>subproblems</EM>
+asking for the <CODE>downup</CODE> of words smaller than the one we started with.
+So if someone asks us the <CODE>downup</CODE> of <CODE>happy</CODE>, along the way we have
+to compute the <CODE>downup</CODE>s of <CODE>happ</CODE>, <CODE>hap</CODE>, <CODE>ha</CODE>, and <CODE>h</CODE>.
+
+<P>A recursive procedure doesn't work unless every possible argument can
+eventually be reduced to some base case.  When we are asked for <CODE>downup</CODE>
+of <CODE>h</CODE>, the procedure just knows what to do without calling itself
+recursively.  
+
+<P>We've just said that there has to be a base case.  It's also important that
+each recursive call has to get us somehow closer to the base case.  For
+<CODE>downup</CODE>, &quot;closer&quot; means that in the recursive call we use a shorter
+word.  If we were computing a numeric function, the base case might be an
+argument of zero, and the recursive calls would use smaller numbers.
+
+<P><H2>Pig Latin</H2>
+
+<P>Let's take another example; we'll write the <A NAME="g7"></A><A NAME="g8"></A>Pig Latin procedure
+that we showed off in Chapter 1.  We're trying to take a word, move
+all the initial consonants to the end, and add &quot;ay.&quot;
+
+<P>The simplest case is that there are no initial consonants to move:
+
+<P><PRE>(define (pigl0 wd)
+  (word wd 'ay))
+
+&gt; (pigl0 'alabaster)
+ALABASTERAY
+</PRE>
+
+<P>(This will turn out to be the base case of our eventual
+recursive procedure.)
+
+<P>The next-simplest case is a word that starts with one consonant.  The
+obvious way to write this is
+
+<P><PRE>(define (pigl1 wd)                           ;; obvious version
+  (word (bf wd) (first wd) 'ay))
+
+&gt; (pigl1 'salami)
+ALAMISAY
+</PRE>
+
+<P>but, as in the <CODE>downup</CODE> example, we'd like to find a way to use
+<CODE>pigl0</CODE> in implementing <CODE>pigl1</CODE>.  This case isn't exactly like <CODE>downup</CODE>, because there isn't a piece of the return value that we can draw a
+box around to indicate that <CODE>pigl0</CODE> returns that piece.  Instead, <CODE>pigl0</CODE> puts the letters <CODE>ay</CODE> at the end of some word, and so does <CODE>pigl1</CODE>.  The difference is that <CODE>pigl1</CODE> puts <CODE>ay</CODE> at the end of
+a <EM>rearrangement</EM> of its argument word.  To make this point clearer,
+we'll rewrite <CODE>pigl1</CODE> in a way that separates the rearrangement from the
+<CODE>ay</CODE> addition:
+
+<P><PRE>(define (pigl1 wd)
+  (word (word (bf wd) (first wd))
+	'ay))
+
+&gt; (pigl1 'pastrami)
+ASTRAMIPAY
+</PRE>
+
+<P>Now we actually replace the <CODE>pigl0</CODE>-like part with an
+invocation.  We want to replace <CODE>(word <CODE><EM>something</EM></CODE> 'ay)</CODE> with
+<CODE>(pigl0 <CODE><EM>something</EM></CODE>)</CODE>.  If we use <CODE>pigl0</CODE> to attach the
+<CODE>ay</CODE> at the end, our new version of <CODE>pigl1</CODE> looks like this:
+
+<P><PRE>(define (pigl1 wd)
+  (pigl0 (word (bf wd) (first wd))))
+</PRE>
+
+<P>How about a word starting with two consonants?  By now we know that we're
+going to try to use <CODE>pigl1</CODE> as a helper procedure, so let's skip writing
+<CODE>pigl2</CODE> the long way.  We can just move the first consonant to the end
+of the word, and handle the result, a word with only one consonant in front,
+with <CODE>pigl1</CODE>:
+
+<P><PRE>(define (pigl2 wd)
+  (pigl1 (word (bf wd) (first wd))))
+
+&gt; (pigl2 'trample)
+AMPLETRAY
+</PRE>
+
+<P>For a three-initial-consonant word we move one letter to the end and call
+<CODE>pigl2</CODE>:
+
+<P><PRE>(define (pigl3 wd)
+  (pigl2 (word (bf wd) (first wd))))
+
+&gt; (pigl3 'chrome)
+OMECHRAY
+</PRE>
+
+<P>So how about a version that will work for any word?<A NAME="text3" HREF="recursion.html#ft3">[3]</A> The recursive case will involve taking the <CODE>pigl</CODE> of <CODE>(word (bf wd) (first wd))</CODE>, to match the pattern we found in
+<CODE>pigl1</CODE>, <CODE>pigl2</CODE>, and <CODE>pigl3</CODE>.  The base case will be a word
+that begins with a vowel, for which we'll just add <CODE>ay</CODE> on the end, as
+<CODE>pigl0</CODE> does:
+
+<P><PRE>(define (<A NAME="g9"></A>pigl wd)
+  (if (member? (first wd) 'aeiou)
+      (word wd 'ay)
+      (pigl (word (bf wd) (first wd)))))
+</PRE>
+
+<P>It's an unusual sense in which <CODE>pigl</CODE>'s recursive call poses a
+&quot;smaller&quot; subproblem.  If we're asked for the <CODE>pigl</CODE> of <CODE>scheme</CODE>,
+we construct a new word, <CODE>chemes</CODE>, and ask for <CODE>pigl</CODE> of that.  This
+doesn't seem like much progress.  We were asked to translate <CODE>scheme</CODE>, a
+six-letter word, into Pig Latin, and in order to do this we need to
+translate <CODE>chemes</CODE>, another six-letter word, into Pig Latin.
+
+<P>But actually this <EM>is</EM> progress, because for Pig Latin the base case
+isn't a one-letter word, but rather a word that starts with a vowel.
+<CODE>Scheme</CODE> has three consonants before the first vowel; <CODE>chemes</CODE> has
+only two consonants before the first vowel.
+
+<P><CODE>Chemes</CODE> doesn't begin with a vowel either, so we construct the word
+<CODE>hemesc</CODE> and try to <CODE>pigl</CODE> that.  In order to find <CODE>(pigl 'hemesc)</CODE> we need to know <CODE>(pigl 'emesch)</CODE>.  Since <CODE>emesch</CODE>
+<EM>does</EM> begin with a vowel, <CODE>pigl</CODE> returns <CODE>emeschay</CODE>. Once we
+know <CODE>(pigl 'emesch)</CODE>, we've thereby found the answer to our original
+question.
+
+<P><H2>Problems for You to Try</H2>
+
+<P>You've now seen two examples of recursive procedures that we developed using
+the combining method.  We started by writing special-case procedures to
+handle small problems of a particular size, then simplified the larger
+versions by using smaller versions as helper procedures.  Finally we
+combined all the nearly identical individual versions into a single
+recursive procedure, taking care to handle the base case separately.
+
+<P>Here are a couple of problems that can be solved with recursive procedures.
+Try them yourself before reading further.  Then we'll show you our solutions.
+
+<P><PRE>&gt; (<A NAME="g10"></A>explode 'dynamite)
+(D Y N A M I T E)
+
+&gt; (<A NAME="g11"></A>letter-pairs 'george)
+(GE EO OR RG GE)
+</PRE>
+
+<P><H2>Our Solutions</H2>
+
+<P>What's the smallest word we can <CODE>explode</CODE>?  There's no reason we
+can't explode an empty word:
+
+<P><PRE>(define (explode0 wd)
+  '())
+</PRE>
+
+<P>That wasn't very interesting, though.  It doesn't suggest a
+pattern that will apply to larger words.  Let's try a few larger cases:
+
+<P><PRE>(define (explode1 wd)
+  (se wd))
+
+(define (explode2 wd)
+  (se (first wd) (last wd)))
+
+(define (explode3 wd)
+  (se (first wd) (first (bf wd)) (last wd)))
+</PRE>
+
+<P>With <CODE>explode3</CODE> the procedure is starting to get complicated enough that
+we want to find a way to use <CODE>explode2</CODE> to help.  What <CODE>explode3</CODE>
+does is to pull three separate letters out of its argument word, and collect
+the three letters in a sentence.  Here's a sample:
+
+<P><PRE>&gt; (explode3 'tnt)
+(T N T)
+</PRE>
+
+<P><CODE>Explode2</CODE> pulls <EM>two</EM> letters out of a word and
+collects them in a sentence.  So we could let <CODE>explode2</CODE> deal with two
+of the letters of our three-letter argument, and handle the remaining letter
+separately:
+
+<P><PRE>(define (explode3 wd)
+  (se (first wd) (explode2 (bf wd))))
+</PRE>
+
+<P>We can use similar reasoning to define <CODE>explode4</CODE> in terms of
+<CODE>explode3</CODE>:
+
+<P><PRE>(define (explode4 wd)
+  (se (first wd) (explode3 (bf wd))))
+</PRE>
+
+<P>Now that we see the pattern, what's the base case?  Our first three
+numbered <CODE>explode</CODE>s are all different in shape from <CODE>explode3</CODE>,
+but now that we know what the pattern should be we'll find that we
+can write <CODE>explode2</CODE> in terms of <CODE>explode1</CODE>, and even <CODE>explode1</CODE>
+in terms of <CODE>explode0</CODE>:
+
+<P><PRE>(define (explode2 wd)
+  (se (first wd) (explode1 (bf wd))))
+
+(define (explode1 wd)
+  (se (first wd) (explode0 (bf wd))))
+</PRE>
+
+<P>We would never have thought to write <CODE>explode1</CODE> in that
+roundabout way, especially since <CODE>explode0</CODE> pays no attention to
+its argument, so computing the <CODE>butfirst</CODE> doesn't contribute
+anything to the result, but by following the pattern we can let the
+recursive case handle one-letter and two-letter words, so that only
+zero-letter words have to be special:
+
+<P><A NAME="explodepage"></A>
+<PRE>(define (explode wd)
+  (if (empty? wd)
+      '()
+      (se (first wd) (explode (bf wd)))))
+</PRE>
+
+<P>Now for <CODE>letter-pairs</CODE>.  What's the smallest word we can use as its
+argument?  Empty and one-letter words have no letter pairs in them:
+
+<P><PRE>(define (letter-pairs0 wd)
+  '())
+
+(define (letter-pairs1 wd)
+  '())
+</PRE>
+
+<P>This pattern is not very helpful.
+
+<P><PRE>(define (letter-pairs2 wd)
+  (se wd))
+
+(define (letter-pairs3 wd)
+  (se (bl wd) (bf wd)))
+
+(define (letter-pairs4 wd)
+  (se (bl (bl wd))
+      (bl (bf wd))
+      (bf (bf wd))))
+</PRE>
+
+<P>Again, we want to simplify <CODE>letter-pairs4</CODE> by using <CODE>letter-pairs3</CODE>
+to help.  The problem is similar to <CODE>explode</CODE>:  The value returned by
+<CODE>letter-pairs4</CODE> is a three-word sentence, and we can use <CODE>letter-pairs3</CODE> to generate two of those words.
+
+<P><PRE>&gt; (letter-pairs4 'nems)
+(NE <CODE STYLE="border:solid">EM MS</CODE>)
+</PRE>
+
+<P>This gives rise to the following procedure:
+
+<P><PRE>(define (letter-pairs4 wd)
+  (se (bl (bl wd))
+      (letter-pairs3 (bf wd))))
+</PRE>
+
+<P>Does this pattern work for defining <CODE>letter-pairs5</CODE> in terms of <CODE>letter-pairs4</CODE>?
+
+<P><PRE>(define (letter-pairs5 wd)                   ;; wrong
+  (se (bl (bl wd))
+      (letter-pairs4 (bf wd))))
+
+&gt; (letter-pairs5 'bagel)
+(BAG AG GE EL)
+</PRE>
+
+<P>The problem is that <CODE>(bl (bl wd))</CODE> means &quot;the first two letters of <CODE>wd</CODE>&quot; only when <CODE>wd</CODE> has four letters.  In order to be able to
+generalize the pattern, we need a way to ask for the first two letters of a
+word that works no matter how long the word is.  You wrote a procedure to
+solve this problem in Exercise :
+
+<P><PRE>(define (first-two wd)
+  (word (first wd) (first (bf wd))))
+</PRE>
+
+<P>Now we can use this for <CODE>letter-pairs4</CODE> and <CODE>letter-pairs5</CODE>:
+
+<P><PRE>(define (letter-pairs4 wd)
+  (se (first-two wd) (letter-pairs3 (bf wd))))
+
+(define (letter-pairs5 wd)
+  (se (first-two wd) (letter-pairs4 (bf wd))))
+</PRE>
+
+<P><EM>This</EM> pattern <EM>does</EM> generalize.
+
+<P><PRE>(define (letter-pairs wd)
+  (if (&lt;= (count wd) 1)
+      '()
+      (se (first-two wd)
+	  (letter-pairs (bf wd)))))
+</PRE>
+
+<P>Note that we treat two-letter and three-letter words as recursive
+cases and not as base cases.  Just as in the example of <CODE>explode</CODE>, we
+noticed that we could rewrite <CODE>letter-pairs2</CODE> and <CODE>letter-pairs3</CODE> to
+follow the same pattern as the larger cases:
+
+<P><PRE>(define (letter-pairs2 wd)
+  (se (first-two wd)
+      (letter-pairs1 (bf wd))))
+
+(define (letter-pairs3 wd)
+  (se (first-two wd)
+      (letter-pairs2 (bf wd))))
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>Every recursive procedure must include two parts: one or more recursive
+cases, in which the recursion reduces the size of the problem, and one or
+more base cases, in which the result is computable without recursion.  For
+example, our first attempt at <CODE>downup</CODE> fell into this pitfall because we
+had no base case.
+
+<P>Don't be too eager to write the recursive procedure.  As we showed
+in the <CODE>letter-pairs</CODE> example, what looks like a generalizable
+pattern may not be.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>11.1</B>&nbsp;&nbsp;Write <CODE>downup4</CODE> using only the word and sentence primitive procedures.
+
+
+<P>
+<B>11.2</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#countums">8.12</A>]<A NAME="text4" HREF="recursion.html#ft4">[4]</A>
+When you teach a class, people will get distracted if you say &quot;um&quot; too many
+times.  Write a <CODE><A NAME="g12"></A>count-ums</CODE> that counts the number of times &quot;um&quot;
+appears in a sentence:
+<A NAME="countumsrec"></A>
+
+<P><PRE>&gt; (count-ums
+   '(today um we are going to um talk about the combining um method))
+3
+</PRE>
+
+<P>Here are some special-case <CODE>count-ums</CODE>
+procedures for sentences of particular lengths:
+
+<P><PRE>(define (count-ums0 sent)
+  0)
+
+(define (count-ums1 sent)
+  (if (equal? 'um (first sent))
+      1
+      0))
+
+(define (count-ums2 sent)
+  (if (equal? 'um (first sent))
+      (+ 1 (count-ums1 (bf sent)))
+      (count-ums1 (bf sent))))
+
+(define (count-ums3 sent)
+  (if (equal? 'um (first sent))
+      (+ 1 (count-ums2 (bf sent)))
+      (count-ums2 (bf sent))))
+</PRE>
+
+<P>Write <CODE>count-ums</CODE> recursively.
+
+
+<P>
+<B>11.3</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#unspell">8.13</A>]
+Write a procedure <CODE><A NAME="g13"></A>phone-unspell</CODE> that takes a spelled version of
+a phone number, such as <CODE>POPCORN</CODE>, and returns the real phone number, in
+this case <CODE>7672676</CODE>.  You will need a helper procedure that
+translates a single letter into a digit:
+<A NAME="unspellrec"></A>
+
+<P><PRE>(define (unspell-letter letter)
+  (cond ((member? letter 'abc) 2)
+	((member? letter 'def) 3)
+	((member? letter 'ghi) 4)
+	((member? letter 'jkl) 5)
+	((member? letter 'mno) 6)
+	((member? letter 'prs) 7)
+	((member? letter 'tuv) 8)
+	((member? letter 'wxy) 9)
+	(else 0)))
+</PRE>
+
+<P>Here are some some special-case <CODE>phone-unspell</CODE> procedures:
+
+<P><PRE>(define (phone-unspell1 wd)
+  (unspell-letter wd))
+
+(define (phone-unspell2 wd)
+  (word (unspell-letter (first wd))
+	(unspell-letter (first (bf wd)))))
+
+(define (phone-unspell3 wd)
+  (word (unspell-letter (first wd))
+	(unspell-letter (first (bf wd)))
+	(unspell-letter (first (bf (bf wd))))))
+</PRE>
+
+<P>Write <CODE>phone-unspell</CODE> recursively.
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><STRONG>Use recursion to solve these problems, not higher order
+functions (Chapter 8)!</STRONG>
+
+<P><B>11.4</B>&nbsp;&nbsp;Who first said &quot;use what you have to get what you need&quot;?
+
+
+<P>
+<B>11.5</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g14"></A>initials</CODE> that takes a sentence as its
+argument and returns a sentence of the first letters in each of the
+sentence's words:
+
+<P><PRE>&gt; (initials '(if i needed someone))
+(I I N S)
+</PRE>
+
+<P>
+<B>11.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g15"></A>countdown</CODE> that works like this:
+
+<P><PRE>&gt; (countdown 10)
+(10 9 8 7 6 5 4 3 2 1 BLASTOFF!)
+
+&gt; (countdown 3)
+(3 2 1 BLASTOFF!)
+</PRE>
+
+<P>
+<B>11.7</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g16"></A>copies</CODE> that takes a number and a word as
+arguments and returns a sentence containing that many copies of the given
+word:
+<A NAME="copies"></A>
+
+<P><PRE>&gt; (copies 8 'spam)
+(SPAM SPAM SPAM SPAM SPAM SPAM SPAM SPAM)
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="recursion.html#text1">[1]</A> If your instructor has asked you to read
+Part IV before Part III, ignore that sentence.<P>
+<A NAME="ft2" HREF="recursion.html#text2">[2]</A> It's a
+disease.  Coal miners get it.<P>
+<A NAME="ft3" HREF="recursion.html#text3">[3]</A> As it happens,
+there are no English words that start with more than four consonants.
+(There are only a few even with four; &quot;phthalate&quot; is one, and some others
+are people's names, such as &quot;Schneider.&quot;) So we could solve the problem
+without recursion by writing the specific procedures up to <CODE>pigl4</CODE> and
+then writing a five-way <CODE>cond</CODE> to choose the appropriate specific case.
+But as you will see, it's easier to solve the more general case!  A single
+recursive procedure, which can handle even nonexistent words with hundreds of
+initial consonants, is less effort than the conceptually simpler
+four-consonant version.<P>
+<A NAME="ft4" HREF="recursion.html#text4">[4]</A> Exercise <A HREF="../ssch8/higher.html#countums">8.12</A> in Part III asks you to solve this
+same problem using higher-order functions.  Here we are asking you to use
+recursion.  Whenever we pose the same problem in both parts, we'll
+cross-reference them in brackets as we did here.  When you see the problem
+for the second time, you might want to consult your first solution for ideas.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch12/leap.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch12/leap b/js/games/nluqo.github.io/~bh/ssch12/leap
new file mode 100644
index 0000000..7ed6d0e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch12/leap
@@ -0,0 +1,860 @@
+<P>
+
+<P> <A NAME="hands"></A>
+<CENTER><IMG SRC="../ss-pics/hands.jpg" ALT="figure: hands"></CENTER><P><CENTER><EM>Drawing Hands,</EM> by M. C. Escher (lithograph,
+1948)
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 12: The Leap of Faith</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 12</H2>
+<H1>The Leap of Faith</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch12.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch11/recursion.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch13/convince-recur.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>In the combining method, we build up to a recursive procedure by writing a
+number of special-case nonrecursive procedures, starting with small arguments
+and working toward larger ones.  We find a generalizable way to use a
+smaller version in writing a larger one.  As a result, all our procedures
+end up looking nearly the same, so we combine them into one procedure.  
+
+<P>The combining method is a good way to begin thinking about recursion because
+each step of a solution is clearly justified by earlier steps.  The sequence
+of events by which we get from a problem statement to a Scheme procedure is
+clear and straightforward.  The disadvantage of the combining method,
+though, is that it involves a lot of drudgery, not all of which really helps
+toward the ultimate solution.  In this chapter we're going to develop a new
+method called <EM>the leap of faith</EM> that overcomes this difficulty.
+
+<P><H2>From the Combining Method to the Leap of Faith</H2>
+
+<P>Let's look again at the way we developed the <CODE>letter-pairs</CODE> procedure in
+the last chapter.  We went through several steps:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We wrote specific versions for zero-, one-, two-, and three-letter words.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We wrote <CODE>letter-pairs4</CODE>, decided it was too complicated, and looked
+for a way to use <CODE>letter-pairs3</CODE> to help.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Having rewritten <CODE>letter-pairs4</CODE>, we tried to write <CODE>letter-pairs5</CODE> using the same pattern.  Since it didn't quite work, we
+revised the pattern.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We generalized the pattern to write an unnumbered, recursive <CODE>letter-pairs</CODE>.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We checked to make sure that the recursive pattern would work for
+two-letter and three-letter words.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Since the pattern doesn't work for zero- or one-letter words, we made
+those the base cases.
+
+</TABLE>
+<P>
+Although we needed the lowest numbered procedures in order to make
+the entire collection of numbered procedures work, those low-numbered ones
+didn't contribute to the critical step of finding a generalizable pattern.
+Once you understand the idea of recursion, writing the individual procedures
+is wasted effort.
+
+<P>In the leap of faith method, we short-circuit this process in two ways.
+First, we don't bother thinking about small examples; we begin with, for
+example, a seven-letter word.  Second, we don't use our example to write a
+particular numbered procedure; we write the recursive version directly.
+
+<P><H2>Example: <CODE><B>Reverse</B></CODE></H2>
+
+<P>We're going to write, using the leap of faith method, a recursive procedure
+to reverse the letters of a word:
+
+<P><PRE>&gt; (reverse 'beatles)
+SELTAEB
+</PRE>
+
+<P>Is there a <CODE>reverse</CODE> of a smaller argument lurking within
+that return value?  Yes, many of them.  For example, <CODE>LTA</CODE> is the
+<CODE>reverse</CODE> of the word <CODE>ATL</CODE>.  But it will be most helpful if we
+find a smaller subproblem that's only <EM>slightly</EM> smaller.  (This idea
+corresponds to writing <CODE>letter-pairs7</CODE> using <CODE>letter-pairs6</CODE> in the
+combining method.)  The closest smaller subproblem to our original problem
+is to find the <CODE>reverse</CODE> of a word one letter shorter than <CODE>beatles</CODE>.
+
+<P><PRE>&gt; (reverse 'beatle)
+ELTAEB
+</PRE>
+
+<P>This result is pretty close to the answer we want for <CODE>reverse</CODE> of <CODE>beatles</CODE>.  What's the relationship between <CODE>ELTAEB</CODE>,
+the answer to the smaller problem, and <CODE>SELTAEB</CODE>, the answer to the
+entire problem?  There's one extra letter, <CODE>S</CODE>, at the beginning.  Where
+did the extra letter come from?  Obviously, it's the last letter of <CODE>beatles</CODE>.<A NAME="text1" HREF="leap#ft1">[1]</A>
+
+<P>This may seem like a sequence of trivial observations leading nowhere.  But
+as a result of this investigation, we can translate what we've learned
+directly into Scheme.  In English:  &quot;the <CODE>reverse</CODE> of a word consists
+of its last letter followed by the <CODE>reverse</CODE> of its <CODE>butlast</CODE>.&quot; In
+Scheme:
+
+<P><PRE>(define (reverse wd)                    ;; unfinished
+  (word (last wd)
+	(reverse (bl wd))))
+</PRE>
+
+<P><H2>The Leap of Faith</H2>
+
+<P>If we think of this Scheme fragment merely as a statement of a true fact
+about <CODE>reverse</CODE>, it's not very remarkable.  The amazing part is that
+this fragment is <EM>runnable!</EM><A NAME="text2" HREF="leap#ft2">[2]</A> It doesn't <EM>look</EM> runnable because it invokes itself as a
+helper procedure, and&mdash;if you haven't already been through the combining
+method&mdash;that looks as if it can't work.  &quot;How can you use <CODE>reverse</CODE>
+when you haven't written it yet?&quot;
+
+<P>The leap of faith method is the assumption that the procedure we're in the
+middle of writing already works.  That is, if we're thinking about writing a
+<CODE>reverse</CODE> procedure that can compute <CODE>(reverse 'paul)</CODE>, we
+assume that <CODE>(reverse 'aul)</CODE> will work.
+
+<P>Of course it's not <EM>really</EM> a leap of faith, in the sense of something
+accepted as miraculous but not understood.  The assumption is justified
+by our understanding of the combining method.  For example, we understand
+that the four-letter <CODE>reverse</CODE> is relying on the three-letter version of
+the problem, not really on itself, so there's no circular reasoning involved.
+And we know that if we had to, we could write <CODE>reverse1</CODE> through <CODE>reverse3</CODE> &quot;by hand.&quot;
+
+<P>The reason that our technique in this chapter may seem more mysterious than
+the combining method is that this time we are thinking about the problem
+top-down.  In the combining method, we had already written <CODE>whatever3</CODE>
+before we even raised the question of <CODE>whatever4</CODE>.  Now we start by
+thinking about the larger problem and assume that we can rely on the
+smaller one.  Again, we're entitled to that assumption because we've gone
+through the process from smaller to larger so many times already.
+
+<P>The leap of faith method, once you understand it, is faster than the
+combining method for writing new recursive procedures, because we can write
+the recursive solution immediately, without bothering with many individual
+cases.  The reason we showed you the combining method first is that the leap
+of faith method seems too much like magic, or like &quot;cheating,&quot; until
+you've seen several believable recursive programs.  The combining method is
+the way to learn about recursion; the leap of faith method is the way to
+write recursive procedures once you've learned.
+
+<P><H2>The Base Case</H2>
+
+<P>Of course, our definition of <CODE>reverse</CODE> isn't finished yet: As always, we
+need a base case.  But base cases are the easy part.  Base cases transform
+simple arguments into simple answers, and you can do that transformation in
+your head.
+
+<P>For example, what's the simplest argument to <CODE>reverse</CODE>?  If you
+answered &quot;a one-letter word&quot; then pick a one-letter word and decide what
+the result should be:
+
+<P><PRE>&gt; (reverse 'x)
+X
+</PRE>
+
+<P><CODE>reverse</CODE> of a one-letter word should just be that same word:
+
+<P><PRE>(define (reverse wd)
+  (if (= (count wd) 1)
+      wd
+      (word (last wd)
+	    (reverse (bl wd)))))
+</PRE>
+
+<P><H2>Example: <CODE><B>Factorial</B></CODE></H2>
+
+<P>We'll use the leap of faith method to solve another problem that
+we haven't already solved with the combining method.
+
+<P>The factorial of a number <EM>n</EM> is defined as 1&#x00d7;2&#x00d7;&#x00b7;&#x00b7;&#x00b7;&#x00d7;<EM>n</EM>.  So the factorial of 5 (written &quot;5!&quot;) is 1&#x00d7;2&#x00d7;3&#x00d7;4&#x00d7;5.  Suppose you want Scheme to figure out the factorial of
+some large number, such as 843.  You start from the definition:  843! is 1&#x00d7;2&#x00d7;&#x00b7;&#x00b7;&#x00b7;&#x00d7;842&#x00d7;843.  Now you have to look for
+another factorial problem whose answer will help us find the answer to
+843!.  You might notice that 2!, that is, 1&#x00d7;2, is part of 843!,
+but that doesn't help very much because there's no simple relationship
+between 2! and 843!.  A more fruitful observation would be that 842!
+is 1&#x00d7;&#x00b7;&#x00b7;&#x00b7;&#x00d7;842&mdash;that is, all but the last number in the
+product we're trying to compute.  So 843! = 843&#x00d7;842!.  In general,
+<EM>n</EM>! is <EM>n</EM>&#x00d7;(<EM>n</EM>-1)!.  We can embody this idea in a Scheme procedure:
+
+<P><PRE>(define (factorial n)                        ;; first version
+  (* n (factorial (- n 1))))
+</PRE>
+
+<P>Asking for (<EM>n</EM>-1)! is the leap of faith.  We're expressing an
+answer we don't know, 843!, in terms of another answer we don't know,
+842!.  But since 842! is a smaller, similar subproblem, we are confident
+that the same algorithm will find it.<A NAME="text3" HREF="leap#ft3">[3]</A>
+
+<P>Remember that in the <CODE>reverse</CODE> problem we mentioned that we could have
+chosen either the <CODE>butfirst</CODE> or the <CODE>butlast</CODE> of the argument as the
+smaller subproblem?  In the case of the <CODE>factorial</CODE> problem we don't
+have a similar choice.  If we tried to subdivide the problem as
+
+<P><P ALIGN="center">6! = 1&#x00d7;(2&#x00d7;3&#x00d7;4&#x00d7;5&#x00d7;6)</P>
+<P>
+
+then the part in
+parentheses would <EM>not</EM> be the factorial of a smaller
+number.<A NAME="text4" HREF="leap#ft4">[4]</A>
+
+<P>As the base case for <CODE>factorial</CODE>, we'll use 1! = 1.
+
+<P><PRE>(define (<A NAME="g1"></A>factorial n)
+  (if (= n 1)
+      1
+      (* n (factorial (- n 1)))))
+</PRE>
+
+<P><H2>Likely Guesses for Smaller Subproblems</H2>
+
+<P>To make the leap of faith method work, we have to find a smaller, similar
+subproblem whose solution will help solve the given problem.  How do we find
+such a smaller subproblem?
+
+<P>In the examples so far, we've generally found it by finding a smaller,
+similar <EM>return value</EM> within the return value we're trying to
+achieve.  Then we worked backward from the smaller solution to figure out
+what smaller argument would give us that value.  For example, here's how we
+solved the <CODE>reverse</CODE> problem:
+
+<P><TABLE><TR><TD>original argument<TD>&nbsp;&nbsp;<CODE>beatles</CODE>
+<TR><TD>desired return value<TD>&nbsp;&nbsp;<CODE>SELTAEB</CODE>
+<TR><TD>smaller return value<TD>&nbsp;&nbsp;<CODE>ELTAEB</CODE>
+<TR><TD>corresponding argument<TD>&nbsp;&nbsp;<CODE>beatle</CODE>
+<TR><TD>relationship of arguments
+<TD>&nbsp;&nbsp;<CODE>beatle </CODE>is<CODE> (bl 'beatles)</CODE>
+<TR><TD>Scheme expression<TD>&nbsp;&nbsp;<CODE>(word (last arg)
+<TR><TD>&nbsp;<TD>&nbsp;&nbsp;<CODE>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(reverse (bl arg)))
+</TABLE>
+
+
+<P>Similarly, we looked at the definition of 843! and noticed within it
+the factorial of a smaller number, 842.
+
+<P>But a smaller return value won't necessarily leap out at us in every case.
+If not, there are some likely guesses we can try.  For example, if the
+problem is about integers, it makes sense to try <EM>n</EM>&minus;1 as a smaller
+argument.  If the problem is about words or sentences, try the <CODE>butfirst</CODE> or the <CODE>butlast</CODE>.  (Often, as in the <CODE>reverse</CODE> example,
+either will be helpful.)  Once you've guessed at a smaller argument, see
+what the corresponding return value should be, then compare that with the
+original desired return value as we've described earlier.
+
+<P>In fact, these two argument-guessing techniques would have suggested the same
+subproblems that we ended up using in our two examples so far.  The reason we
+didn't teach these techniques from the beginning is that we don't want you
+to think they're essential parts of the leap of faith method.  These are
+just good guesses; they don't always work.  When they don't, you have to be
+prepared to think more flexibly.
+
+<P><H2>Example: <CODE><B>Downup</B></CODE></H2>
+
+<P>Here's how we might rewrite <CODE><A NAME="g2"></A>downup</CODE> using the leap of faith
+method.  Start by looking at the desired return value for a medium-sized
+example:
+
+<P><PRE>&gt; (downup 'paul)
+(PAUL PAU PA P PA PAU PAUL)
+</PRE>
+
+<P>Since this is a procedure whose argument is a word, we guess that
+the <CODE>butfirst</CODE> or the <CODE>butlast</CODE> might be helpful.
+
+<P><PRE>&gt; (downup 'aul)
+(AUL AU A AU AUL)
+
+&gt; (downup 'pau)
+(PAU PA P PA PAU)
+</PRE>
+
+<P>This is a case in which it matters which we choose; the solution for the
+<CODE>butfirst</CODE> of the original argument doesn't help, but the solution for
+the <CODE>butlast</CODE> is most of the solution for the original word.  All we
+have to do is add the original word itself at the beginning and end:
+
+<P><PRE>(define (downup wd)                          ;; no base case
+  (se wd (downup (bl wd)) wd))
+</PRE>
+
+<P>As before, this is missing the base case, but by now you know how
+to fill that in.
+
+<P><H2>Example: <CODE><B>Evens</B></CODE></H2>
+
+<P>Here's a case in which mindlessly guessing <CODE>butfirst</CODE> or <CODE>butlast</CODE>
+doesn't lead to a very good solution.  We want a procedure that takes a
+sentence as its argument and returns a sentence of the even-numbered words
+of the original sentence:
+
+<P><PRE>&gt; (<A NAME="g3"></A>evens '(i want to hold your hand))
+(WANT HOLD HAND)
+</PRE>
+
+<P>We look at <CODE>evens</CODE> of the <CODE>butfirst</CODE> and <CODE>butlast</CODE> of
+this sentence:
+
+<P><PRE>&gt; (evens '(want to hold your hand))
+(TO YOUR)
+
+&gt; (evens '(i want to hold your))
+(WANT HOLD)
+</PRE>
+
+<P><CODE>Butfirst</CODE> is clearly not helpful; it gives all the wrong
+words.  <CODE>Butlast</CODE> looks promising.  The relationship between <CODE>evens</CODE>
+of the bigger sentence and <CODE>evens</CODE> of the smaller sentence is that the
+last word of the larger sentence is missing from <CODE>evens</CODE> of the smaller
+sentence.
+
+<P><PRE>(define (losing-evens sent)                  ;; no base case
+  (se (losing-evens (bl sent))
+      (last sent)))
+</PRE>
+
+<P>For a base case, we'll take the empty sentence:
+
+<P><PRE>(define (losing-evens sent)
+  (if (empty? sent)
+      '()
+      (se (losing-evens (bl sent))
+	  (last sent))))
+
+&gt; (losing-evens '(i want to hold your hand))
+(I WANT TO HOLD YOUR HAND)
+</PRE>
+
+<P>This isn't quite right.
+
+<P>It's true that <CODE>evens</CODE> of <CODE>(i want to hold your hand)</CODE> is the same
+as <CODE>evens</CODE> of <CODE>(i want to hold your)</CODE> plus the word <CODE>hand</CODE> at
+the end.  But what about <CODE>evens</CODE> of <CODE>(i want to hold your)</CODE>?  By the
+reasoning we've been using, we would expect that to be <CODE>evens</CODE> of <CODE>(i want to hold)</CODE> plus the word <CODE>your</CODE>.  But since the word <CODE>your</CODE>
+is the fifth word of the argument sentence, it shouldn't be part of the
+result at all.  Here's how <CODE>evens</CODE> should work:
+
+<P><PRE>&gt; (evens '(i want to hold your))
+(WANT HOLD)
+
+&gt; (evens '(i want to hold))
+(WANT HOLD)
+</PRE>
+
+<P>When the sentence has an odd number of words, its <CODE>evens</CODE> is
+the same as the <CODE>evens</CODE> of its <CODE>butlast</CODE>.<A NAME="text5" HREF="leap#ft5">[5]</A> So here's our
+new procedure:
+
+<P><PRE>(define (evens sent)                         ;; better version
+  (cond ((empty? sent) '())
+	((odd? (count sent))
+	 (evens (bl sent)))
+	(else (se (evens (bl sent))
+		  (last sent)))))
+</PRE>
+
+<P>This version works, but it's more complicated than necessary.  What makes it
+complicated is that on each recursive call we switch between two kinds of
+problems: even-length and odd-length sentences.  If we dealt with the words
+two at a time, each recursive call would see the same kind of problem.
+
+<P>Once we've decided to go through the sentence two words at a time, we can
+reopen the question of whether to go right-to-left or left-to-right.  It
+will turn out that the latter gives us the simplest procedure:
+
+<P><PRE>(define (evens sent)                         ;; best version
+  (if (&lt;= (count sent) 1)
+      '()
+      (se (first (bf sent))
+	  (evens (bf (bf sent))))))
+</PRE>
+
+<P>Since we go through the sentence two words at a time, an
+odd-length argument sentence always gives rise to an odd-length recursive
+subproblem.  Therefore, it's not good enough to check for an empty sentence
+as the only base case.  We need to treat both the empty sentence and one-word
+sentences as base cases.
+
+<P><H2>Simplifying Base Cases</H2>
+<A NAME="basecasereduce"></A>
+<A NAME="g4"></A>
+<A NAME="g5"></A>
+
+<P>The leap of faith is mostly about recursive cases, not base cases.  In the
+examples in this chapter, we've picked base cases without talking about them
+much.  How do you pick a base case?
+
+<P>In general, we recommend using the smallest possible base case argument,
+because that usually leads to the simplest procedures.  For example,
+consider using the empty word, empty sentence, or zero instead of one-letter
+words, one-word sentences, or one.
+
+<P>How can you go about finding the simplest possible base case?  Our first
+example in this chapter was <CODE>reverse</CODE>.  We arbitrarily chose to use
+one-letter words as the base case:
+
+<P><PRE>(define (reverse wd)
+  (if (= (count wd) 1)
+      wd
+      (word (last wd)
+	    (reverse (bl wd)))))
+</PRE>
+
+<P>Suppose we want to consider whether a smaller base case would work.  One
+approach is to pick an argument that would be handled by the current base
+case, and see what would happen if we tried to let the recursive step handle
+it instead.  (To go along with this experiment, we pick a smaller base case,
+since the original base case should now be handled by the recursive step.)
+In this example, we pick a one-letter word, let's say <CODE>m</CODE>, and use that
+as the value of <CODE>wd</CODE> in the expression
+
+<P><PRE>(word (last wd)
+      (reverse (bl wd)))
+</PRE>
+
+<P>The result is
+
+<P><PRE>(word (last 'm)
+      (reverse (bl 'm)))
+</PRE>
+
+<P>which is the same as
+
+<P><PRE>(word 'm
+      (reverse &quot;&quot;))
+</PRE>
+
+<P>We want this to have as its value the word <CODE>M</CODE>.  This will
+work out provided that <CODE>(reverse &quot;&quot;)</CODE> has the empty word as its value.
+So we could rewrite the procedure this way:
+
+<P><PRE>(define (reverse wd)
+  (if (empty? wd)
+      &quot;"
+      (word (last word)
+	    (reverse (bl word)))))
+</PRE>
+
+<P>We were led to this empty-word base case by working downward from the needs
+of the one-letter case.  However, it's also important to ensure that the
+return value used for the empty word is the correct value, not only to make
+the recursion work, but for an empty word in its own right.  That is, we
+have to convince ourselves that <CODE>(reverse &quot;&quot;)</CODE> should return an empty
+word.  But it should; the <CODE>reverse</CODE> of any word is a word containing the
+same letters as the original word.  If the original has no letters, the <CODE>reverse</CODE> must have no letters also.  This exemplifies a general principle:
+Although we choose a base case argument for the sake of the recursive step,
+we must choose the corresponding return value for the sake of the argument
+itself, not just for the sake of the recursion.
+
+<P>We'll try the base case reduction technique on <CODE>downup</CODE>:
+
+<P><PRE>(define (downup wd)
+  (if (= (count wd) 1)
+      (se wd)
+      (se wd (downup (bl wd)) wd)))
+</PRE>
+
+<P>If we want to use the empty word as the base case, instead of
+one-letter words, then we have to ensure that the recursive case can return
+a correct answer for a one-letter word.  The behavior we want is
+
+<P><PRE>&gt; (downup 'a)
+(A)
+</PRE>
+
+<P>But if we substitute <CODE>'a</CODE> for <CODE>wd</CODE> in the recursive-case
+expression we get
+
+<P><PRE>(se 'a (downup &quot;&quot;) 'a)
+</PRE>
+
+<P>which will have two copies of the word <CODE>A</CODE> in its value no
+matter what value we give to <CODE>downup</CODE> of the empty word.  We can't
+avoid treating one-letter words as a base case.
+
+<P>In writing <CODE>factorial</CODE>, we used <CODE>1</CODE> as the base case.
+
+<P><PRE>(define (factorial n)
+  (if (= n 1)
+      1
+      (* n (factorial (- n 1)))))
+</PRE>
+
+<P>Our principle of base case reduction suggests that we try for <CODE>0</CODE>.  To do this, we substitute <CODE>1</CODE> for <CODE>n</CODE> in the recursive case
+expression:
+
+<P><PRE>(* 1 (factorial 0))
+</PRE>
+
+<P>We'd like this to have the value <CODE>1</CODE>; this will be true only
+if we define 0! = 1.  Now we can say
+
+<P><PRE>(define (factorial n)
+  (if (= n 0)
+      1
+      (* n (factorial (- n 1)))))
+</PRE>
+
+<P>In this case, the new procedure is no simpler than the previous
+version.  Its only advantage is that it handles a case, 0!, that
+mathematicians find useful.
+
+<P>Here's another example in which we can't reduce the base case to an empty
+word.  In Chapter 11 we used the combining method to write <CODE>letter-pairs</CODE>:
+
+<P><PRE>(define (letter-pairs wd)
+  (if (&lt;= (count wd) 1)
+      '()
+      (se (first-two wd)
+	  (letter-pairs (bf wd)))))
+
+(define (first-two wd)
+  (word (first wd) (first (bf wd))))
+</PRE>
+
+<P>It might occur to you that one-letter words could be handled
+by the recursive case, and the base case could then handle only the empty
+word.  But if you try to evaluate the expression for the recursive case
+as applied to a one-letter word, you find that
+
+<P><PRE>(first-two 'a)
+</PRE>
+
+<P>is equivalent to
+
+<P><PRE>(word (first 'a) (first (bf 'a)))
+</PRE>
+
+<P>which is an error.  There is no second letter of a one-letter
+word.  As soon as you see the expression <CODE>(first (bf wd))</CODE> within
+this program, you know that one-letter words must be part of the base case.
+The same kind of reasoning can be used in many problems; the base case must
+handle anything that's too small to fit the needs of the recursive case.
+
+<P>
+<H2>Pitfalls</H2>
+
+<P>One possible pitfall is a recursive case that doesn't make progress,
+that is, one that doesn't reduce the size of the problem in the recursive call.
+For example, let's say we're trying to write the procedure <CODE>down</CODE> that
+works this way:
+
+<P><PRE>&gt; (down 'town)
+(TOWN TOW TO T)
+</PRE>
+
+<P>Here's an incorrect attempt:
+
+<P><PRE>(define (down wd)                            ;; wrong!
+  (if (empty? wd)
+      '()
+      (se wd (down (first wd)))))
+</PRE>
+
+<P>The recursive call looks as if it reduces the size of the problem,
+but try it with an actual example.  What's <CODE>first</CODE> of the word <CODE>splat</CODE>?  What's <CODE>first</CODE> of that result?  What's <CODE>first</CODE> of <EM>that</EM> result?
+
+<P>A pitfall that sounds unlikely in the abstract but is actually
+surprisingly common is to try to do the second step of the procedure &quot;by
+hand&quot; instead of trusting the recursion to do it.  For example, here's
+another attempt at that <CODE>down</CODE> procedure:
+
+<P><PRE>(define (down wd)                            ;; incomplete
+  (se wd &hellip;))
+</PRE>
+
+<P>You know the first word in the result has to be the argument
+word.  Then what?  The next thing is the same word with its last letter
+missing:
+
+<P><PRE>(define (down wd)                            ;; wrong!
+  (se wd (bl wd) &hellip;))
+</PRE>
+
+<P>Instead of taking care of the entire rest of the problem with a
+recursive call, it's tempting to take only one more step, figuring out how
+to include the second word of the required solution.  But that approach
+won't get you to a general recursive solution.  Just take the first step
+and then trust the recursion for the rest:
+
+<P><PRE>(define (<A NAME="g6"></A>down wd)
+  (if (empty? wd)
+      '()
+      (se wd (down (bl wd)))))
+</PRE>
+
+<P>The value returned in the base case of your procedure must be in the
+range of the function you are representing.  If your function is supposed to
+return a number, it must return a number all the time, even in the base
+case.  You can use this idea to help you check the correctness of the
+base case expression.
+
+<P>For example, in <CODE>downup</CODE>, the base case returns <CODE>(se wd)</CODE> for the
+base case argument of a one-letter word.  How did we think to enclose the
+word in a sentence?  We know that in the recursive cases <CODE>downup</CODE> always
+returns a sentence, so that suggests to us that it must return a sentence in
+the base case also.
+
+<P>If your base case doesn't make sense in its own right, it probably
+means that you're trying to compensate for a mistake in the recursive case.
+
+<P>For example, suppose you've fallen into the pitfall of trying to handle the
+second word of a sentence by hand, and you've written the following
+procedure:
+
+<P><PRE>(define (square-sent sent)                   ;; wrong
+  (if (empty? sent)
+      '()
+      (se (square (first sent))
+	  (square (first (bf sent)))
+	  (square-sent (bf sent)))))
+
+&gt; (square-sent '(2 3))
+ERROR: Invalid argument to FIRST:  ()
+</PRE>
+
+<P>After some experimentation, you find that you can get this example
+to work by changing the base case:
+
+<P><PRE>(define (square-sent sent)                   ;; still wrong
+  (if (= (count sent) 1)
+      '()
+      (se (square (first sent))
+	  (square (first (bf sent)))
+	  (square-sent (bf sent)))))
+
+&gt; (square-sent '(2 3))
+(4 9)
+</PRE>
+
+<P>The trouble is that the base case doesn't make sense on its own:
+
+<P><PRE>&gt; (square-sent '(7))
+()
+</PRE>
+
+<P>In fact, this procedure doesn't work for any sentences of length
+other than two.  The moral is that it doesn't work to correct an error in the
+recursive case by introducing an absurd base case.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>12.1</B>&nbsp;&nbsp;Here is a definition of a procedure that returns the sum of the numbers in
+its argument sentence:
+
+<P><PRE>(define (addup nums)
+  (if (empty? (bf nums))
+      (first nums)
+      (+ (first nums) (addup (bf nums)))))
+</PRE>
+
+<P>Although this works, it could be simplified by changing the base
+case.  Do that.
+
+
+<P>
+<B>12.2</B>&nbsp;&nbsp;Fix the bug in the following definition:
+
+<P><PRE>(define (acronym sent)                       ;; wrong
+  (if (= (count sent) 1)
+      (first sent)
+      (word (first (first sent))
+	    (acronym (bf sent)))))
+</PRE>
+
+<P>
+<B>12.3</B>&nbsp;&nbsp;Can we reduce the <CODE>factorial</CODE> base case argument from <CODE>0</CODE> to <CODE>-1</CODE>?
+If so, show the resulting procedure.  If not, why not?
+
+<P>
+
+<P>
+<B>12.4</B>&nbsp;&nbsp;Here's the definition of a function <EM>f</EM>:
+
+<P><P><CENTER><IMG SRC="math1.gif" ALT="math display"></CENTER><P>
+
+<P>Implement <EM>f</EM> as a Scheme procedure.  What does <EM>f</EM> do?
+
+
+<P>
+
+<H2>Real Exercises</H2>
+
+<P><EM>Solve all of the following problems with recursive procedures.  If
+you've read Part III, do not use any higher-order functions such as <CODE>every</CODE>, <CODE>keep</CODE>, or <CODE>accumulate</CODE>.</EM>
+
+<P><B>12.5</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#exagg">8.8</A>]
+Write an <CODE><A NAME="g7"></A>exaggerate</CODE> procedure which exaggerates sentences:
+<A NAME="exaggrec"></A>
+
+<P><PRE>&gt; (exaggerate '(i ate 3 potstickers))
+(I ATE 6 POTSTICKERS)
+
+&gt; (exaggerate '(the chow fun is good here))
+(THE CHOW FUN IS GREAT HERE)
+</PRE>
+
+<P>It should double all the numbers in the sentence, and it should replace
+&quot;good&quot; with &quot;great,&quot; &quot;bad&quot; with &quot;terrible,&quot; and anything else you
+can think of.
+
+
+<P>
+<B>12.6</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#gpa">8.11</A>]
+Write a GPA procedure.  It should take a sentence of grades as its argument
+and return the corresponding grade point average:
+<A NAME="gparec"></A>
+
+<P><PRE>&gt; (<A NAME="g8"></A>gpa '(A A+ B+ B))
+3.67
+</PRE>
+
+<P>Hint: write a helper procedure <CODE><A NAME="g9"></A>base-grade</CODE> that takes
+a grade as argument and returns 0, 1, 2, 3, or 4, and another helper
+procedure <CODE>grade-modifier</CODE> that returns &minus;.33, 0, or .33, depending on
+whether the grade has a minus, a plus, or neither.
+
+
+<P>
+<B>12.7</B>&nbsp;&nbsp;Write a procedure <A NAME="g10"></A><CODE>spell-number</CODE> that spells out the digits of
+a number:
+
+<P><PRE>&gt; (spell-number 1971)
+(ONE NINE SEVEN ONE)
+</PRE>
+
+<P>Use this helper procedure:
+
+<P><PRE>(define (spell-digit digit)
+  (item (+ 1 digit)
+	'(zero one two three four five six seven eight nine)))
+</PRE>
+
+
+<P>
+<B>12.8</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g11"></A>numbers</CODE> that takes a sentence as its argument
+and returns another sentence containing only the numbers in the argument:
+
+<P><PRE>&gt; (numbers '(76 trombones and 110 cornets))
+(76 110)
+</PRE>
+
+<P>
+<B>12.9</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g12"></A>real-words</CODE> that takes a sentence as argument
+and returns all the &quot;real&quot; words of the sentence, using the same rule as
+the <CODE>real-word?</CODE> procedure from Chapter 1.
+
+
+<P>
+<B>12.10</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g13"></A>remove</CODE> that takes a word and a sentence as
+arguments and returns the same sentence, but with all copies of the given
+word removed:
+
+<P><PRE>&gt; (remove 'the '(the song love of the loved by the beatles))
+(SONG LOVE OF LOVED BY BEATLES)
+</PRE>
+
+<P>
+<B>12.11</B>&nbsp;&nbsp;Write the procedure <CODE>count</CODE>, which returns the number of words in a
+sentence or the number of letters in a word.
+
+
+<P>
+<B>12.12</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g14"></A>arabic</CODE> which converts Roman numerals into
+Arabic numerals:
+
+<P><PRE>&gt; (arabic 'MCMLXXI)
+1971
+
+&gt; (arabic 'MLXVI)
+1066
+</PRE>
+
+<P>You will probably find the <CODE>roman-value</CODE> procedure from Chapter
+6 helpful.  Don't forget that a letter can <EM>reduce</EM> the overall
+value if the letter that comes after it has a larger value, such as the <CODE>C</CODE> in <CODE>MCM</CODE>.
+
+
+<P>
+<B>12.13</B>&nbsp;&nbsp;Write a new version of the <CODE><A NAME="g15"></A>describe-time</CODE> procedure from Exercise
+.  Instead of returning a decimal number, it should behave like
+this:
+
+<P><PRE>&gt; (describe-time 22222)
+(6 HOURS 10 MINUTES 22 SECONDS)
+
+&gt; (describe-time 4967189641)
+(1 CENTURIES 57 YEARS 20 WEEKS 6 DAYS 8 HOURS 54 MINUTES 1 SECONDS)
+</PRE>
+
+<P>Can you make the program smart about saying <CODE>1 CENTURY</CODE> instead of
+<CODE>1 CENTURIES</CODE>?
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="leap#text1">[1]</A> There's also a relationship between <CODE>(reverse 'eatles)</CODE>
+and <CODE>(reverse 'beatles)</CODE>, with the extra letter <CODE>b</CODE> at the end.  We
+could take either of these subproblems as a starting point and end up with a
+working procedure.<P>
+<A NAME="ft2" HREF="leap#text2">[2]</A> Well, almost.  It needs a base
+case.<P>
+<A NAME="ft3" HREF="leap#text3">[3]</A> What makes us confident?  We
+imagine that we've worked on this problem using the combining method, so
+that we've written procedures like these:
+
+<P><PRE>(define (factorial1 n)
+  1)
+
+(define (factorial2 n)
+  (* 2 (factorial1 (- n 1))))
+
+(define (factorial3 n)
+  (* 3 (factorial2 (- n 1))))
+
+;; ...
+
+(define (factorial842 n)
+  (* 842 (factorial841 (- n 1))))
+</PRE>
+
+<P>and therefore we're entitled to use those lower-numbered versions
+in finding the factorial of 843.  We haven't actually written them, but we
+could have, and that's what justifies using them.  The reason we can take
+842! on faith is that 842 is smaller than 843; it's the smaller values
+that we're pretending we've already written. 
+<P>
+<A NAME="ft4" HREF="leap#text4">[4]</A> As it happens, the part in parentheses does equal the
+factorial of a number, 6 itself.  But expressing the solution for 6 in terms
+of the solution for 6 doesn't lead to a recursive procedure; we have to
+express this solution in terms of a <EM>smaller</EM> one.<P>
+<A NAME="ft5" HREF="leap#text5">[5]</A> It may feel
+strange that in the case of an odd-length sentence, the answer to the
+recursive subproblem is the same as the answer to the original problem,
+rather than a smaller answer.  But remember that it's the argument, not the
+return value, that has to get smaller in each recursive step.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch11/recursion.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch13/convince-recur.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch12/leap.html b/js/games/nluqo.github.io/~bh/ssch12/leap.html
new file mode 100644
index 0000000..298234d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch12/leap.html
@@ -0,0 +1,860 @@
+<P>
+
+<P> <A NAME="hands"></A>
+<CENTER><IMG SRC="../ss-pics/hands.jpg" ALT="figure: hands"></CENTER><P><CENTER><EM>Drawing Hands,</EM> by M. C. Escher (lithograph,
+1948)
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 12: The Leap of Faith</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 12</H2>
+<H1>The Leap of Faith</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch12.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch11/recursion.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch13/convince-recur.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>In the combining method, we build up to a recursive procedure by writing a
+number of special-case nonrecursive procedures, starting with small arguments
+and working toward larger ones.  We find a generalizable way to use a
+smaller version in writing a larger one.  As a result, all our procedures
+end up looking nearly the same, so we combine them into one procedure.  
+
+<P>The combining method is a good way to begin thinking about recursion because
+each step of a solution is clearly justified by earlier steps.  The sequence
+of events by which we get from a problem statement to a Scheme procedure is
+clear and straightforward.  The disadvantage of the combining method,
+though, is that it involves a lot of drudgery, not all of which really helps
+toward the ultimate solution.  In this chapter we're going to develop a new
+method called <EM>the leap of faith</EM> that overcomes this difficulty.
+
+<P><H2>From the Combining Method to the Leap of Faith</H2>
+
+<P>Let's look again at the way we developed the <CODE>letter-pairs</CODE> procedure in
+the last chapter.  We went through several steps:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We wrote specific versions for zero-, one-, two-, and three-letter words.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We wrote <CODE>letter-pairs4</CODE>, decided it was too complicated, and looked
+for a way to use <CODE>letter-pairs3</CODE> to help.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Having rewritten <CODE>letter-pairs4</CODE>, we tried to write <CODE>letter-pairs5</CODE> using the same pattern.  Since it didn't quite work, we
+revised the pattern.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We generalized the pattern to write an unnumbered, recursive <CODE>letter-pairs</CODE>.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">We checked to make sure that the recursive pattern would work for
+two-letter and three-letter words.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Since the pattern doesn't work for zero- or one-letter words, we made
+those the base cases.
+
+</TABLE>
+<P>
+Although we needed the lowest numbered procedures in order to make
+the entire collection of numbered procedures work, those low-numbered ones
+didn't contribute to the critical step of finding a generalizable pattern.
+Once you understand the idea of recursion, writing the individual procedures
+is wasted effort.
+
+<P>In the leap of faith method, we short-circuit this process in two ways.
+First, we don't bother thinking about small examples; we begin with, for
+example, a seven-letter word.  Second, we don't use our example to write a
+particular numbered procedure; we write the recursive version directly.
+
+<P><H2>Example: <CODE><B>Reverse</B></CODE></H2>
+
+<P>We're going to write, using the leap of faith method, a recursive procedure
+to reverse the letters of a word:
+
+<P><PRE>&gt; (reverse 'beatles)
+SELTAEB
+</PRE>
+
+<P>Is there a <CODE>reverse</CODE> of a smaller argument lurking within
+that return value?  Yes, many of them.  For example, <CODE>LTA</CODE> is the
+<CODE>reverse</CODE> of the word <CODE>ATL</CODE>.  But it will be most helpful if we
+find a smaller subproblem that's only <EM>slightly</EM> smaller.  (This idea
+corresponds to writing <CODE>letter-pairs7</CODE> using <CODE>letter-pairs6</CODE> in the
+combining method.)  The closest smaller subproblem to our original problem
+is to find the <CODE>reverse</CODE> of a word one letter shorter than <CODE>beatles</CODE>.
+
+<P><PRE>&gt; (reverse 'beatle)
+ELTAEB
+</PRE>
+
+<P>This result is pretty close to the answer we want for <CODE>reverse</CODE> of <CODE>beatles</CODE>.  What's the relationship between <CODE>ELTAEB</CODE>,
+the answer to the smaller problem, and <CODE>SELTAEB</CODE>, the answer to the
+entire problem?  There's one extra letter, <CODE>S</CODE>, at the beginning.  Where
+did the extra letter come from?  Obviously, it's the last letter of <CODE>beatles</CODE>.<A NAME="text1" HREF="leap.html#ft1">[1]</A>
+
+<P>This may seem like a sequence of trivial observations leading nowhere.  But
+as a result of this investigation, we can translate what we've learned
+directly into Scheme.  In English:  &quot;the <CODE>reverse</CODE> of a word consists
+of its last letter followed by the <CODE>reverse</CODE> of its <CODE>butlast</CODE>.&quot; In
+Scheme:
+
+<P><PRE>(define (reverse wd)                    ;; unfinished
+  (word (last wd)
+	(reverse (bl wd))))
+</PRE>
+
+<P><H2>The Leap of Faith</H2>
+
+<P>If we think of this Scheme fragment merely as a statement of a true fact
+about <CODE>reverse</CODE>, it's not very remarkable.  The amazing part is that
+this fragment is <EM>runnable!</EM><A NAME="text2" HREF="leap.html#ft2">[2]</A> It doesn't <EM>look</EM> runnable because it invokes itself as a
+helper procedure, and&mdash;if you haven't already been through the combining
+method&mdash;that looks as if it can't work.  &quot;How can you use <CODE>reverse</CODE>
+when you haven't written it yet?&quot;
+
+<P>The leap of faith method is the assumption that the procedure we're in the
+middle of writing already works.  That is, if we're thinking about writing a
+<CODE>reverse</CODE> procedure that can compute <CODE>(reverse 'paul)</CODE>, we
+assume that <CODE>(reverse 'aul)</CODE> will work.
+
+<P>Of course it's not <EM>really</EM> a leap of faith, in the sense of something
+accepted as miraculous but not understood.  The assumption is justified
+by our understanding of the combining method.  For example, we understand
+that the four-letter <CODE>reverse</CODE> is relying on the three-letter version of
+the problem, not really on itself, so there's no circular reasoning involved.
+And we know that if we had to, we could write <CODE>reverse1</CODE> through <CODE>reverse3</CODE> &quot;by hand.&quot;
+
+<P>The reason that our technique in this chapter may seem more mysterious than
+the combining method is that this time we are thinking about the problem
+top-down.  In the combining method, we had already written <CODE>whatever3</CODE>
+before we even raised the question of <CODE>whatever4</CODE>.  Now we start by
+thinking about the larger problem and assume that we can rely on the
+smaller one.  Again, we're entitled to that assumption because we've gone
+through the process from smaller to larger so many times already.
+
+<P>The leap of faith method, once you understand it, is faster than the
+combining method for writing new recursive procedures, because we can write
+the recursive solution immediately, without bothering with many individual
+cases.  The reason we showed you the combining method first is that the leap
+of faith method seems too much like magic, or like &quot;cheating,&quot; until
+you've seen several believable recursive programs.  The combining method is
+the way to learn about recursion; the leap of faith method is the way to
+write recursive procedures once you've learned.
+
+<P><H2>The Base Case</H2>
+
+<P>Of course, our definition of <CODE>reverse</CODE> isn't finished yet: As always, we
+need a base case.  But base cases are the easy part.  Base cases transform
+simple arguments into simple answers, and you can do that transformation in
+your head.
+
+<P>For example, what's the simplest argument to <CODE>reverse</CODE>?  If you
+answered &quot;a one-letter word&quot; then pick a one-letter word and decide what
+the result should be:
+
+<P><PRE>&gt; (reverse 'x)
+X
+</PRE>
+
+<P><CODE>reverse</CODE> of a one-letter word should just be that same word:
+
+<P><PRE>(define (reverse wd)
+  (if (= (count wd) 1)
+      wd
+      (word (last wd)
+	    (reverse (bl wd)))))
+</PRE>
+
+<P><H2>Example: <CODE><B>Factorial</B></CODE></H2>
+
+<P>We'll use the leap of faith method to solve another problem that
+we haven't already solved with the combining method.
+
+<P>The factorial of a number <EM>n</EM> is defined as 1&#x00d7;2&#x00d7;&#x00b7;&#x00b7;&#x00b7;&#x00d7;<EM>n</EM>.  So the factorial of 5 (written &quot;5!&quot;) is 1&#x00d7;2&#x00d7;3&#x00d7;4&#x00d7;5.  Suppose you want Scheme to figure out the factorial of
+some large number, such as 843.  You start from the definition:  843! is 1&#x00d7;2&#x00d7;&#x00b7;&#x00b7;&#x00b7;&#x00d7;842&#x00d7;843.  Now you have to look for
+another factorial problem whose answer will help us find the answer to
+843!.  You might notice that 2!, that is, 1&#x00d7;2, is part of 843!,
+but that doesn't help very much because there's no simple relationship
+between 2! and 843!.  A more fruitful observation would be that 842!
+is 1&#x00d7;&#x00b7;&#x00b7;&#x00b7;&#x00d7;842&mdash;that is, all but the last number in the
+product we're trying to compute.  So 843! = 843&#x00d7;842!.  In general,
+<EM>n</EM>! is <EM>n</EM>&#x00d7;(<EM>n</EM>-1)!.  We can embody this idea in a Scheme procedure:
+
+<P><PRE>(define (factorial n)                        ;; first version
+  (* n (factorial (- n 1))))
+</PRE>
+
+<P>Asking for (<EM>n</EM>-1)! is the leap of faith.  We're expressing an
+answer we don't know, 843!, in terms of another answer we don't know,
+842!.  But since 842! is a smaller, similar subproblem, we are confident
+that the same algorithm will find it.<A NAME="text3" HREF="leap.html#ft3">[3]</A>
+
+<P>Remember that in the <CODE>reverse</CODE> problem we mentioned that we could have
+chosen either the <CODE>butfirst</CODE> or the <CODE>butlast</CODE> of the argument as the
+smaller subproblem?  In the case of the <CODE>factorial</CODE> problem we don't
+have a similar choice.  If we tried to subdivide the problem as
+
+<P><P ALIGN="center">6! = 1&#x00d7;(2&#x00d7;3&#x00d7;4&#x00d7;5&#x00d7;6)</P>
+<P>
+
+then the part in
+parentheses would <EM>not</EM> be the factorial of a smaller
+number.<A NAME="text4" HREF="leap.html#ft4">[4]</A>
+
+<P>As the base case for <CODE>factorial</CODE>, we'll use 1! = 1.
+
+<P><PRE>(define (<A NAME="g1"></A>factorial n)
+  (if (= n 1)
+      1
+      (* n (factorial (- n 1)))))
+</PRE>
+
+<P><H2>Likely Guesses for Smaller Subproblems</H2>
+
+<P>To make the leap of faith method work, we have to find a smaller, similar
+subproblem whose solution will help solve the given problem.  How do we find
+such a smaller subproblem?
+
+<P>In the examples so far, we've generally found it by finding a smaller,
+similar <EM>return value</EM> within the return value we're trying to
+achieve.  Then we worked backward from the smaller solution to figure out
+what smaller argument would give us that value.  For example, here's how we
+solved the <CODE>reverse</CODE> problem:
+
+<P><TABLE><TR><TD>original argument<TD>&nbsp;&nbsp;<CODE>beatles</CODE>
+<TR><TD>desired return value<TD>&nbsp;&nbsp;<CODE>SELTAEB</CODE>
+<TR><TD>smaller return value<TD>&nbsp;&nbsp;<CODE>ELTAEB</CODE>
+<TR><TD>corresponding argument<TD>&nbsp;&nbsp;<CODE>beatle</CODE>
+<TR><TD>relationship of arguments
+<TD>&nbsp;&nbsp;<CODE>beatle </CODE>is<CODE> (bl 'beatles)</CODE>
+<TR><TD>Scheme expression<TD>&nbsp;&nbsp;<CODE>(word (last arg)
+<TR><TD>&nbsp;<TD>&nbsp;&nbsp;<CODE>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(reverse (bl arg)))
+</TABLE>
+
+
+<P>Similarly, we looked at the definition of 843! and noticed within it
+the factorial of a smaller number, 842.
+
+<P>But a smaller return value won't necessarily leap out at us in every case.
+If not, there are some likely guesses we can try.  For example, if the
+problem is about integers, it makes sense to try <EM>n</EM>&minus;1 as a smaller
+argument.  If the problem is about words or sentences, try the <CODE>butfirst</CODE> or the <CODE>butlast</CODE>.  (Often, as in the <CODE>reverse</CODE> example,
+either will be helpful.)  Once you've guessed at a smaller argument, see
+what the corresponding return value should be, then compare that with the
+original desired return value as we've described earlier.
+
+<P>In fact, these two argument-guessing techniques would have suggested the same
+subproblems that we ended up using in our two examples so far.  The reason we
+didn't teach these techniques from the beginning is that we don't want you
+to think they're essential parts of the leap of faith method.  These are
+just good guesses; they don't always work.  When they don't, you have to be
+prepared to think more flexibly.
+
+<P><H2>Example: <CODE><B>Downup</B></CODE></H2>
+
+<P>Here's how we might rewrite <CODE><A NAME="g2"></A>downup</CODE> using the leap of faith
+method.  Start by looking at the desired return value for a medium-sized
+example:
+
+<P><PRE>&gt; (downup 'paul)
+(PAUL PAU PA P PA PAU PAUL)
+</PRE>
+
+<P>Since this is a procedure whose argument is a word, we guess that
+the <CODE>butfirst</CODE> or the <CODE>butlast</CODE> might be helpful.
+
+<P><PRE>&gt; (downup 'aul)
+(AUL AU A AU AUL)
+
+&gt; (downup 'pau)
+(PAU PA P PA PAU)
+</PRE>
+
+<P>This is a case in which it matters which we choose; the solution for the
+<CODE>butfirst</CODE> of the original argument doesn't help, but the solution for
+the <CODE>butlast</CODE> is most of the solution for the original word.  All we
+have to do is add the original word itself at the beginning and end:
+
+<P><PRE>(define (downup wd)                          ;; no base case
+  (se wd (downup (bl wd)) wd))
+</PRE>
+
+<P>As before, this is missing the base case, but by now you know how
+to fill that in.
+
+<P><H2>Example: <CODE><B>Evens</B></CODE></H2>
+
+<P>Here's a case in which mindlessly guessing <CODE>butfirst</CODE> or <CODE>butlast</CODE>
+doesn't lead to a very good solution.  We want a procedure that takes a
+sentence as its argument and returns a sentence of the even-numbered words
+of the original sentence:
+
+<P><PRE>&gt; (<A NAME="g3"></A>evens '(i want to hold your hand))
+(WANT HOLD HAND)
+</PRE>
+
+<P>We look at <CODE>evens</CODE> of the <CODE>butfirst</CODE> and <CODE>butlast</CODE> of
+this sentence:
+
+<P><PRE>&gt; (evens '(want to hold your hand))
+(TO YOUR)
+
+&gt; (evens '(i want to hold your))
+(WANT HOLD)
+</PRE>
+
+<P><CODE>Butfirst</CODE> is clearly not helpful; it gives all the wrong
+words.  <CODE>Butlast</CODE> looks promising.  The relationship between <CODE>evens</CODE>
+of the bigger sentence and <CODE>evens</CODE> of the smaller sentence is that the
+last word of the larger sentence is missing from <CODE>evens</CODE> of the smaller
+sentence.
+
+<P><PRE>(define (losing-evens sent)                  ;; no base case
+  (se (losing-evens (bl sent))
+      (last sent)))
+</PRE>
+
+<P>For a base case, we'll take the empty sentence:
+
+<P><PRE>(define (losing-evens sent)
+  (if (empty? sent)
+      '()
+      (se (losing-evens (bl sent))
+	  (last sent))))
+
+&gt; (losing-evens '(i want to hold your hand))
+(I WANT TO HOLD YOUR HAND)
+</PRE>
+
+<P>This isn't quite right.
+
+<P>It's true that <CODE>evens</CODE> of <CODE>(i want to hold your hand)</CODE> is the same
+as <CODE>evens</CODE> of <CODE>(i want to hold your)</CODE> plus the word <CODE>hand</CODE> at
+the end.  But what about <CODE>evens</CODE> of <CODE>(i want to hold your)</CODE>?  By the
+reasoning we've been using, we would expect that to be <CODE>evens</CODE> of <CODE>(i want to hold)</CODE> plus the word <CODE>your</CODE>.  But since the word <CODE>your</CODE>
+is the fifth word of the argument sentence, it shouldn't be part of the
+result at all.  Here's how <CODE>evens</CODE> should work:
+
+<P><PRE>&gt; (evens '(i want to hold your))
+(WANT HOLD)
+
+&gt; (evens '(i want to hold))
+(WANT HOLD)
+</PRE>
+
+<P>When the sentence has an odd number of words, its <CODE>evens</CODE> is
+the same as the <CODE>evens</CODE> of its <CODE>butlast</CODE>.<A NAME="text5" HREF="leap.html#ft5">[5]</A> So here's our
+new procedure:
+
+<P><PRE>(define (evens sent)                         ;; better version
+  (cond ((empty? sent) '())
+	((odd? (count sent))
+	 (evens (bl sent)))
+	(else (se (evens (bl sent))
+		  (last sent)))))
+</PRE>
+
+<P>This version works, but it's more complicated than necessary.  What makes it
+complicated is that on each recursive call we switch between two kinds of
+problems: even-length and odd-length sentences.  If we dealt with the words
+two at a time, each recursive call would see the same kind of problem.
+
+<P>Once we've decided to go through the sentence two words at a time, we can
+reopen the question of whether to go right-to-left or left-to-right.  It
+will turn out that the latter gives us the simplest procedure:
+
+<P><PRE>(define (evens sent)                         ;; best version
+  (if (&lt;= (count sent) 1)
+      '()
+      (se (first (bf sent))
+	  (evens (bf (bf sent))))))
+</PRE>
+
+<P>Since we go through the sentence two words at a time, an
+odd-length argument sentence always gives rise to an odd-length recursive
+subproblem.  Therefore, it's not good enough to check for an empty sentence
+as the only base case.  We need to treat both the empty sentence and one-word
+sentences as base cases.
+
+<P><H2>Simplifying Base Cases</H2>
+<A NAME="basecasereduce"></A>
+<A NAME="g4"></A>
+<A NAME="g5"></A>
+
+<P>The leap of faith is mostly about recursive cases, not base cases.  In the
+examples in this chapter, we've picked base cases without talking about them
+much.  How do you pick a base case?
+
+<P>In general, we recommend using the smallest possible base case argument,
+because that usually leads to the simplest procedures.  For example,
+consider using the empty word, empty sentence, or zero instead of one-letter
+words, one-word sentences, or one.
+
+<P>How can you go about finding the simplest possible base case?  Our first
+example in this chapter was <CODE>reverse</CODE>.  We arbitrarily chose to use
+one-letter words as the base case:
+
+<P><PRE>(define (reverse wd)
+  (if (= (count wd) 1)
+      wd
+      (word (last wd)
+	    (reverse (bl wd)))))
+</PRE>
+
+<P>Suppose we want to consider whether a smaller base case would work.  One
+approach is to pick an argument that would be handled by the current base
+case, and see what would happen if we tried to let the recursive step handle
+it instead.  (To go along with this experiment, we pick a smaller base case,
+since the original base case should now be handled by the recursive step.)
+In this example, we pick a one-letter word, let's say <CODE>m</CODE>, and use that
+as the value of <CODE>wd</CODE> in the expression
+
+<P><PRE>(word (last wd)
+      (reverse (bl wd)))
+</PRE>
+
+<P>The result is
+
+<P><PRE>(word (last 'm)
+      (reverse (bl 'm)))
+</PRE>
+
+<P>which is the same as
+
+<P><PRE>(word 'm
+      (reverse &quot;&quot;))
+</PRE>
+
+<P>We want this to have as its value the word <CODE>M</CODE>.  This will
+work out provided that <CODE>(reverse &quot;&quot;)</CODE> has the empty word as its value.
+So we could rewrite the procedure this way:
+
+<P><PRE>(define (reverse wd)
+  (if (empty? wd)
+      &quot;"
+      (word (last word)
+	    (reverse (bl word)))))
+</PRE>
+
+<P>We were led to this empty-word base case by working downward from the needs
+of the one-letter case.  However, it's also important to ensure that the
+return value used for the empty word is the correct value, not only to make
+the recursion work, but for an empty word in its own right.  That is, we
+have to convince ourselves that <CODE>(reverse &quot;&quot;)</CODE> should return an empty
+word.  But it should; the <CODE>reverse</CODE> of any word is a word containing the
+same letters as the original word.  If the original has no letters, the <CODE>reverse</CODE> must have no letters also.  This exemplifies a general principle:
+Although we choose a base case argument for the sake of the recursive step,
+we must choose the corresponding return value for the sake of the argument
+itself, not just for the sake of the recursion.
+
+<P>We'll try the base case reduction technique on <CODE>downup</CODE>:
+
+<P><PRE>(define (downup wd)
+  (if (= (count wd) 1)
+      (se wd)
+      (se wd (downup (bl wd)) wd)))
+</PRE>
+
+<P>If we want to use the empty word as the base case, instead of
+one-letter words, then we have to ensure that the recursive case can return
+a correct answer for a one-letter word.  The behavior we want is
+
+<P><PRE>&gt; (downup 'a)
+(A)
+</PRE>
+
+<P>But if we substitute <CODE>'a</CODE> for <CODE>wd</CODE> in the recursive-case
+expression we get
+
+<P><PRE>(se 'a (downup &quot;&quot;) 'a)
+</PRE>
+
+<P>which will have two copies of the word <CODE>A</CODE> in its value no
+matter what value we give to <CODE>downup</CODE> of the empty word.  We can't
+avoid treating one-letter words as a base case.
+
+<P>In writing <CODE>factorial</CODE>, we used <CODE>1</CODE> as the base case.
+
+<P><PRE>(define (factorial n)
+  (if (= n 1)
+      1
+      (* n (factorial (- n 1)))))
+</PRE>
+
+<P>Our principle of base case reduction suggests that we try for <CODE>0</CODE>.  To do this, we substitute <CODE>1</CODE> for <CODE>n</CODE> in the recursive case
+expression:
+
+<P><PRE>(* 1 (factorial 0))
+</PRE>
+
+<P>We'd like this to have the value <CODE>1</CODE>; this will be true only
+if we define 0! = 1.  Now we can say
+
+<P><PRE>(define (factorial n)
+  (if (= n 0)
+      1
+      (* n (factorial (- n 1)))))
+</PRE>
+
+<P>In this case, the new procedure is no simpler than the previous
+version.  Its only advantage is that it handles a case, 0!, that
+mathematicians find useful.
+
+<P>Here's another example in which we can't reduce the base case to an empty
+word.  In Chapter 11 we used the combining method to write <CODE>letter-pairs</CODE>:
+
+<P><PRE>(define (letter-pairs wd)
+  (if (&lt;= (count wd) 1)
+      '()
+      (se (first-two wd)
+	  (letter-pairs (bf wd)))))
+
+(define (first-two wd)
+  (word (first wd) (first (bf wd))))
+</PRE>
+
+<P>It might occur to you that one-letter words could be handled
+by the recursive case, and the base case could then handle only the empty
+word.  But if you try to evaluate the expression for the recursive case
+as applied to a one-letter word, you find that
+
+<P><PRE>(first-two 'a)
+</PRE>
+
+<P>is equivalent to
+
+<P><PRE>(word (first 'a) (first (bf 'a)))
+</PRE>
+
+<P>which is an error.  There is no second letter of a one-letter
+word.  As soon as you see the expression <CODE>(first (bf wd))</CODE> within
+this program, you know that one-letter words must be part of the base case.
+The same kind of reasoning can be used in many problems; the base case must
+handle anything that's too small to fit the needs of the recursive case.
+
+<P>
+<H2>Pitfalls</H2>
+
+<P>One possible pitfall is a recursive case that doesn't make progress,
+that is, one that doesn't reduce the size of the problem in the recursive call.
+For example, let's say we're trying to write the procedure <CODE>down</CODE> that
+works this way:
+
+<P><PRE>&gt; (down 'town)
+(TOWN TOW TO T)
+</PRE>
+
+<P>Here's an incorrect attempt:
+
+<P><PRE>(define (down wd)                            ;; wrong!
+  (if (empty? wd)
+      '()
+      (se wd (down (first wd)))))
+</PRE>
+
+<P>The recursive call looks as if it reduces the size of the problem,
+but try it with an actual example.  What's <CODE>first</CODE> of the word <CODE>splat</CODE>?  What's <CODE>first</CODE> of that result?  What's <CODE>first</CODE> of <EM>that</EM> result?
+
+<P>A pitfall that sounds unlikely in the abstract but is actually
+surprisingly common is to try to do the second step of the procedure &quot;by
+hand&quot; instead of trusting the recursion to do it.  For example, here's
+another attempt at that <CODE>down</CODE> procedure:
+
+<P><PRE>(define (down wd)                            ;; incomplete
+  (se wd &hellip;))
+</PRE>
+
+<P>You know the first word in the result has to be the argument
+word.  Then what?  The next thing is the same word with its last letter
+missing:
+
+<P><PRE>(define (down wd)                            ;; wrong!
+  (se wd (bl wd) &hellip;))
+</PRE>
+
+<P>Instead of taking care of the entire rest of the problem with a
+recursive call, it's tempting to take only one more step, figuring out how
+to include the second word of the required solution.  But that approach
+won't get you to a general recursive solution.  Just take the first step
+and then trust the recursion for the rest:
+
+<P><PRE>(define (<A NAME="g6"></A>down wd)
+  (if (empty? wd)
+      '()
+      (se wd (down (bl wd)))))
+</PRE>
+
+<P>The value returned in the base case of your procedure must be in the
+range of the function you are representing.  If your function is supposed to
+return a number, it must return a number all the time, even in the base
+case.  You can use this idea to help you check the correctness of the
+base case expression.
+
+<P>For example, in <CODE>downup</CODE>, the base case returns <CODE>(se wd)</CODE> for the
+base case argument of a one-letter word.  How did we think to enclose the
+word in a sentence?  We know that in the recursive cases <CODE>downup</CODE> always
+returns a sentence, so that suggests to us that it must return a sentence in
+the base case also.
+
+<P>If your base case doesn't make sense in its own right, it probably
+means that you're trying to compensate for a mistake in the recursive case.
+
+<P>For example, suppose you've fallen into the pitfall of trying to handle the
+second word of a sentence by hand, and you've written the following
+procedure:
+
+<P><PRE>(define (square-sent sent)                   ;; wrong
+  (if (empty? sent)
+      '()
+      (se (square (first sent))
+	  (square (first (bf sent)))
+	  (square-sent (bf sent)))))
+
+&gt; (square-sent '(2 3))
+ERROR: Invalid argument to FIRST:  ()
+</PRE>
+
+<P>After some experimentation, you find that you can get this example
+to work by changing the base case:
+
+<P><PRE>(define (square-sent sent)                   ;; still wrong
+  (if (= (count sent) 1)
+      '()
+      (se (square (first sent))
+	  (square (first (bf sent)))
+	  (square-sent (bf sent)))))
+
+&gt; (square-sent '(2 3))
+(4 9)
+</PRE>
+
+<P>The trouble is that the base case doesn't make sense on its own:
+
+<P><PRE>&gt; (square-sent '(7))
+()
+</PRE>
+
+<P>In fact, this procedure doesn't work for any sentences of length
+other than two.  The moral is that it doesn't work to correct an error in the
+recursive case by introducing an absurd base case.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>12.1</B>&nbsp;&nbsp;Here is a definition of a procedure that returns the sum of the numbers in
+its argument sentence:
+
+<P><PRE>(define (addup nums)
+  (if (empty? (bf nums))
+      (first nums)
+      (+ (first nums) (addup (bf nums)))))
+</PRE>
+
+<P>Although this works, it could be simplified by changing the base
+case.  Do that.
+
+
+<P>
+<B>12.2</B>&nbsp;&nbsp;Fix the bug in the following definition:
+
+<P><PRE>(define (acronym sent)                       ;; wrong
+  (if (= (count sent) 1)
+      (first sent)
+      (word (first (first sent))
+	    (acronym (bf sent)))))
+</PRE>
+
+<P>
+<B>12.3</B>&nbsp;&nbsp;Can we reduce the <CODE>factorial</CODE> base case argument from <CODE>0</CODE> to <CODE>-1</CODE>?
+If so, show the resulting procedure.  If not, why not?
+
+<P>
+
+<P>
+<B>12.4</B>&nbsp;&nbsp;Here's the definition of a function <EM>f</EM>:
+
+<P><P><CENTER><IMG SRC="math1.gif" ALT="math display"></CENTER><P>
+
+<P>Implement <EM>f</EM> as a Scheme procedure.  What does <EM>f</EM> do?
+
+
+<P>
+
+<H2>Real Exercises</H2>
+
+<P><EM>Solve all of the following problems with recursive procedures.  If
+you've read Part III, do not use any higher-order functions such as <CODE>every</CODE>, <CODE>keep</CODE>, or <CODE>accumulate</CODE>.</EM>
+
+<P><B>12.5</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#exagg">8.8</A>]
+Write an <CODE><A NAME="g7"></A>exaggerate</CODE> procedure which exaggerates sentences:
+<A NAME="exaggrec"></A>
+
+<P><PRE>&gt; (exaggerate '(i ate 3 potstickers))
+(I ATE 6 POTSTICKERS)
+
+&gt; (exaggerate '(the chow fun is good here))
+(THE CHOW FUN IS GREAT HERE)
+</PRE>
+
+<P>It should double all the numbers in the sentence, and it should replace
+&quot;good&quot; with &quot;great,&quot; &quot;bad&quot; with &quot;terrible,&quot; and anything else you
+can think of.
+
+
+<P>
+<B>12.6</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#gpa">8.11</A>]
+Write a GPA procedure.  It should take a sentence of grades as its argument
+and return the corresponding grade point average:
+<A NAME="gparec"></A>
+
+<P><PRE>&gt; (<A NAME="g8"></A>gpa '(A A+ B+ B))
+3.67
+</PRE>
+
+<P>Hint: write a helper procedure <CODE><A NAME="g9"></A>base-grade</CODE> that takes
+a grade as argument and returns 0, 1, 2, 3, or 4, and another helper
+procedure <CODE>grade-modifier</CODE> that returns &minus;.33, 0, or .33, depending on
+whether the grade has a minus, a plus, or neither.
+
+
+<P>
+<B>12.7</B>&nbsp;&nbsp;Write a procedure <A NAME="g10"></A><CODE>spell-number</CODE> that spells out the digits of
+a number:
+
+<P><PRE>&gt; (spell-number 1971)
+(ONE NINE SEVEN ONE)
+</PRE>
+
+<P>Use this helper procedure:
+
+<P><PRE>(define (spell-digit digit)
+  (item (+ 1 digit)
+	'(zero one two three four five six seven eight nine)))
+</PRE>
+
+
+<P>
+<B>12.8</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g11"></A>numbers</CODE> that takes a sentence as its argument
+and returns another sentence containing only the numbers in the argument:
+
+<P><PRE>&gt; (numbers '(76 trombones and 110 cornets))
+(76 110)
+</PRE>
+
+<P>
+<B>12.9</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g12"></A>real-words</CODE> that takes a sentence as argument
+and returns all the &quot;real&quot; words of the sentence, using the same rule as
+the <CODE>real-word?</CODE> procedure from Chapter 1.
+
+
+<P>
+<B>12.10</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g13"></A>remove</CODE> that takes a word and a sentence as
+arguments and returns the same sentence, but with all copies of the given
+word removed:
+
+<P><PRE>&gt; (remove 'the '(the song love of the loved by the beatles))
+(SONG LOVE OF LOVED BY BEATLES)
+</PRE>
+
+<P>
+<B>12.11</B>&nbsp;&nbsp;Write the procedure <CODE>count</CODE>, which returns the number of words in a
+sentence or the number of letters in a word.
+
+
+<P>
+<B>12.12</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g14"></A>arabic</CODE> which converts Roman numerals into
+Arabic numerals:
+
+<P><PRE>&gt; (arabic 'MCMLXXI)
+1971
+
+&gt; (arabic 'MLXVI)
+1066
+</PRE>
+
+<P>You will probably find the <CODE>roman-value</CODE> procedure from Chapter
+6 helpful.  Don't forget that a letter can <EM>reduce</EM> the overall
+value if the letter that comes after it has a larger value, such as the <CODE>C</CODE> in <CODE>MCM</CODE>.
+
+
+<P>
+<B>12.13</B>&nbsp;&nbsp;Write a new version of the <CODE><A NAME="g15"></A>describe-time</CODE> procedure from Exercise
+.  Instead of returning a decimal number, it should behave like
+this:
+
+<P><PRE>&gt; (describe-time 22222)
+(6 HOURS 10 MINUTES 22 SECONDS)
+
+&gt; (describe-time 4967189641)
+(1 CENTURIES 57 YEARS 20 WEEKS 6 DAYS 8 HOURS 54 MINUTES 1 SECONDS)
+</PRE>
+
+<P>Can you make the program smart about saying <CODE>1 CENTURY</CODE> instead of
+<CODE>1 CENTURIES</CODE>?
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="leap.html#text1">[1]</A> There's also a relationship between <CODE>(reverse 'eatles)</CODE>
+and <CODE>(reverse 'beatles)</CODE>, with the extra letter <CODE>b</CODE> at the end.  We
+could take either of these subproblems as a starting point and end up with a
+working procedure.<P>
+<A NAME="ft2" HREF="leap.html#text2">[2]</A> Well, almost.  It needs a base
+case.<P>
+<A NAME="ft3" HREF="leap.html#text3">[3]</A> What makes us confident?  We
+imagine that we've worked on this problem using the combining method, so
+that we've written procedures like these:
+
+<P><PRE>(define (factorial1 n)
+  1)
+
+(define (factorial2 n)
+  (* 2 (factorial1 (- n 1))))
+
+(define (factorial3 n)
+  (* 3 (factorial2 (- n 1))))
+
+;; ...
+
+(define (factorial842 n)
+  (* 842 (factorial841 (- n 1))))
+</PRE>
+
+<P>and therefore we're entitled to use those lower-numbered versions
+in finding the factorial of 843.  We haven't actually written them, but we
+could have, and that's what justifies using them.  The reason we can take
+842! on faith is that 842 is smaller than 843; it's the smaller values
+that we're pretending we've already written. 
+<P>
+<A NAME="ft4" HREF="leap.html#text4">[4]</A> As it happens, the part in parentheses does equal the
+factorial of a number, 6 itself.  But expressing the solution for 6 in terms
+of the solution for 6 doesn't lead to a recursive procedure; we have to
+express this solution in terms of a <EM>smaller</EM> one.<P>
+<A NAME="ft5" HREF="leap.html#text5">[5]</A> It may feel
+strange that in the case of an odd-length sentence, the answer to the
+recursive subproblem is the same as the answer to the original problem,
+rather than a smaller answer.  But remember that it's the argument, not the
+return value, that has to get smaller in each recursive step.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch11/recursion.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch13/convince-recur.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch12/math1.gif b/js/games/nluqo.github.io/~bh/ssch12/math1.gif
new file mode 100644
index 0000000..a16c1aa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch12/math1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ssch13/convince-recur b/js/games/nluqo.github.io/~bh/ssch13/convince-recur
new file mode 100644
index 0000000..b505c53
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch13/convince-recur
@@ -0,0 +1,480 @@
+<P>
+
+<P><CENTER><IMG SRC="../ss-pics/mirrors.jpg" ALT="figure: mirrors"></CENTER><A NAME="mirrors"></A><P><CENTER>What's the base case?
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 13: How Recursion Works</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 13</H2>
+<H1>How Recursion Works</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch13.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch12/leap.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch14/recur-patterns.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>The last two chapters were about how to write recursive procedures.  This
+chapter is about how to <EM>believe in</EM> recursive procedures, and about
+understanding the process by which Scheme carries them out.
+
+<P><H2>Little People and Recursion</H2>
+
+<P>
+
+<P><A NAME="g1"></A>
+The crowning achievement of the little-people model
+is explaining recursion.  Remember that every time you call a procedure, a
+little person is hired to compute the result.  If you want to know <CODE>(+ 2 (+ 3 4))</CODE>, there are two separate plus specialists involved.
+
+<P>When we used the combining method, it was probably clear that it's okay
+for <CODE>downup3</CODE> to invoke <CODE>downup2</CODE>, and for <CODE>downup2</CODE> to invoke
+<CODE>downup1</CODE>.  But it probably felt like magic when we combined these
+numbered procedures into a single <CODE>downup</CODE> procedure that calls <EM>itself.</EM> You may have thought, &quot;How can <CODE>downup</CODE> do all the different
+tasks at once without getting confused?&quot; The little-people model answers
+this question by showing that tasks are done by procedure <EM>invocations,</EM> not by procedures.  Each little person handles one task,
+even though several little people are carrying out the same procedure.  The
+procedure is just a set of instructions; someone has to carry out the
+instructions.
+
+<P>So what happens when we want to know <CODE>(downup 'smile)</CODE>?  We hire Donna,
+a <CODE>downup</CODE> specialist, and she substitutes <CODE>smile</CODE> for <CODE>wd</CODE> in
+the body of <CODE>downup</CODE>, leaving her with
+
+<P><PRE>(if (= (count 'smile) 1)
+    (se 'smile)
+    (se 'smile (downup (bl 'smile)) 'smile)))
+</PRE>
+
+<P>We'll leave out the details about hiring the <CODE>if</CODE>, <CODE>=</CODE>, <CODE>count</CODE>,
+and <CODE>bl</CODE> specialists in this example, so Donna ends up with
+
+<P><PRE>(se 'smile (downup 'smil) 'smile)
+</PRE>
+
+<P>In order to evaluate this, Donna needs to know <CODE>(downup 'smil)</CODE>.  She hires David, another <CODE>downup</CODE> specialist, and
+waits for his answer.
+
+<P>David's <CODE>wd</CODE> is <CODE>smil</CODE>. He substitutes <CODE>smil</CODE> for <CODE>wd</CODE> in the
+body of <CODE>downup</CODE>, and <EM>he</EM> gets
+
+<P><PRE>(if (= (count 'smil) 1)
+    (se 'smil)
+    (se 'smil (downup (bl 'smil)) 'smil)))
+</PRE>
+
+<P>After some uninteresting work, David has
+
+<P><PRE>(se 'smil (downup 'smi) 'smil)
+</PRE>
+
+<P>and he hires Dennis to compute <CODE>(downup 'smi)</CODE>.  There are
+now three little people, all in the middle of some <CODE>downup</CODE> computation,
+and each of them is working on a different word.
+
+<P>Dennis substitutes <CODE>smi</CODE> for <CODE>wd</CODE>, and ends up with
+
+<P><PRE>(se 'smi (downup 'sm) 'smi)
+</PRE>
+
+<P>He hires Derek to compute <CODE>(downup 'sm)</CODE>.  Derek needs to
+compute
+
+<P><PRE>(se 'sm (downup 's) 'sm)
+</PRE>
+
+<P>Derek hires Dexter to find <CODE>downup</CODE> of <CODE>s</CODE>. Now we have to
+think carefully about the substitution again.  Dexter substitutes his
+actual argument, <CODE>s</CODE>, for his formal parameter <CODE>wd</CODE>, and ends up
+with
+
+<P><PRE>(if (= (count 's) 1)
+    (se 's)
+    (se 's (downup (bl 's)) 's)))
+</PRE>
+
+<P><CODE>Count</CODE> of <CODE>s</CODE> <EM>is</EM> 1.  So Dexter hires Simi,
+a <CODE>sentence</CODE> specialist, who returns <CODE>(s)</CODE>.  Dexter returns the same
+answer to Derek.
+
+<P>Derek, you will recall, is trying to compute
+
+<P><PRE>(se 'sm (downup 's) 'sm)
+</PRE>
+
+<P>and now he knows the value of <CODE>(downup 's)</CODE>.  So he hires
+Savita to compute
+
+<P><PRE>(se 'sm '(s) 'sm)
+</PRE>
+
+<P>and the answer is <CODE>(sm s sm)</CODE>.  Derek returns this answer to
+Dennis.  By the way, do you remember what question Derek was hired to
+answer?  Dennis wanted to know <CODE>(downup 'sm)</CODE>.  The answer Derek gave
+him was <CODE>(sm s sm)</CODE>, which <EM>is</EM> <CODE>downup</CODE> of <CODE>sm</CODE>.  Pretty
+neat, huh?
+<A NAME="g2"></A>
+<A NAME="g3"></A>
+<A NAME="g4"></A>
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+<CENTER><IMG SRC="../ss-pics/elves.jpg" ALT="figure: elves"></CENTER>
+
+<P>
+Dennis hires Sigrid to compute
+
+<P><PRE>(se 'smi '(sm s sm) 'smi)
+</PRE>
+
+<P>and returns <CODE>(smi sm s sm smi)</CODE> to David.  His answer is the
+correct value of <CODE>(downup 'smi)</CODE>.  David returns
+
+<P><PRE>(smil smi sm s sm smi smil)
+</PRE>
+
+<P>to Donna, who has been waiting all this time to evaluate
+
+<P><PRE>(se 'smile (downup 'smil) 'smile)
+</PRE>
+
+<P>Her waiting microseconds are over.  She hires a <CODE>sentence</CODE>
+specialist and returns
+
+<P><PRE>(smile smil smi sm s sm smi smil smile)
+</PRE>
+
+<P><P>
+If you have a group of friends whose names all start with &quot;D,&quot; you can try
+this out yourselves.  The rules of the game are pretty simple.  Remember
+that each one of you can have only one single value for <CODE>wd</CODE>.  Also,
+only one of you is in charge of the game at any point.  When you hire
+somebody, that new person is in charge of the game until he or she tells you
+the answer to his or her question.  If some of you have names that don't
+start with &quot;D,&quot; you can be specialists in <CODE>sentence</CODE> or <CODE>butlast</CODE>
+or something.  Play hard, play fair, nobody hurt.
+
+<P> 
+<H2>Tracing</H2>
+
+<P>The little-people model explains recursion very well, as long as you're
+willing to focus your attention on the job of one little person, taking the
+next little person's subtask as a &quot;black box&quot; that you assume is carried
+out correctly.  Your willingness to make that assumption is a necessary step
+in becoming truly comfortable with recursive programming.
+
+<P>Still, some people are very accustomed to a <EM>sequential</EM> model of
+computing.  In that model, there's only one computer, not a lot of little
+people, and that one computer has to carry out one step at a time.  If
+you're one of those people, you may find it hard to take the subtasks on
+faith.  You want to know exactly what happens when!  There's nothing wrong
+with such healthy scientific skepticism about recursion.
+
+<P>If you're a sequential thinker, you can <EM>trace</EM> procedures to get
+<A NAME="g7"></A>
+detailed information about the sequence of events.<A NAME="text1" HREF="convince-recur#ft1">[1]</A> But if
+you're happy with the way we've been talking about recursion up to now, and
+if you find that this section doesn't contribute to your
+understanding of recursion, don't worry about it.  Our experience
+shows that this way of thinking helps some people but not
+everybody.<A NAME="text2" HREF="convince-recur#ft2">[2]</A>
+Before we get to recursive procedures, let's just trace some nonrecursive
+ones:
+
+<P><PRE>(define (double wd) (word wd wd))
+
+&gt; (trace double)
+&gt; (double 'frozen)
+<SMALL><CODE>(double frozen)
+frozenfrozen
+</CODE></SMALL>FROZENFROZEN
+</PRE>
+
+<P>The argument to <CODE>trace</CODE> specifies a procedure.  When you
+invoke <CODE>trace</CODE>, that procedure becomes &quot;traced&quot;; this means that every time
+you invoke the procedure, Scheme will print out the name of the procedure
+and the actual arguments.  When the procedure returns a
+<A NAME="g8"></A>
+value, Scheme will print that value.<A NAME="text3" HREF="convince-recur#ft3">[3]</A>
+
+<P>Tracing isn't very interesting if we're just invoking a traced procedure
+once.  But look what happens when we trace a procedure that we're using
+more than once:
+
+<P><PRE>&gt; (double (double (double 'yum)))
+<SMALL><CODE>(double yum)
+yumyum
+(double yumyum)
+yumyumyumyum
+(double yumyumyumyum)
+yumyumyumyumyumyumyumyum
+</CODE></SMALL>
+YUMYUMYUMYUMYUMYUMYUMYUM
+</PRE>
+
+<P>This time, there were three separate
+invocations of <CODE>double</CODE>, and we saw each one as it happened.  First we
+<CODE>double</CODE>d <CODE>yum</CODE>, and the answer was <CODE>yumyum</CODE>. Then we <CODE>double</CODE>d <CODE>yumyum</CODE>, and so on.  Finally, after we invoked <CODE>double</CODE> for
+the last time, its result was printed by the read-eval-print loop.
+
+<P>
+<P>When you're finished investigating a procedure, you can turn off tracing by
+invoking <A NAME="g9"></A><CODE>untrace</CODE> with the procedure as argument:
+
+<P><PRE>&gt; (untrace double)
+</PRE>
+
+<P>Let's try tracing a recursive procedure:
+
+<P><PRE>(define (downup wd)
+  (if (= (count wd) 1)
+      (se wd)
+      (se wd (downup (bl wd)) wd)))
+
+&gt; (trace downup)
+
+&gt; (downup 'trace)
+<SMALL><CODE>(downup trace)
+|  (downup trac)
+|  |  (downup tra)
+|  |  |  (downup tr)
+|  |  |  |  (downup t)
+|  |  |  |  (t)
+|  |  |  (tr t tr)
+|  |  (tra tr t tr tra)
+|  (trac tra tr t tr tra trac)
+(trace trac tra tr t tr tra trac trace)
+</CODE></SMALL>(TRACE TRAC TRA TR T TR TRA TRAC TRACE)
+</PRE>
+
+<P>When a procedure calls itself recursively, depending on the
+<A NAME="g10"></A><A NAME="g11"></A>phase of the moon,<A NAME="text4" HREF="convince-recur#ft4">[4]</A> Scheme may indent the trace display to show the levels of
+procedure calling, and draw a line of vertical bars (&quot;<CODE>|</CODE>&quot;) from a
+procedure's invocation to its return value below.  This is so you can look at
+a procedure invocation and see what value it returned, or vice versa.
+
+<P>How does the trace help us understand what is going on in the recursion?
+First, by reading the trace results from top to bottom, you can see
+the actual sequence of events when the computer is carrying out your
+Scheme program.  For example, you can see that we start trying to figure
+out <CODE>(downup 'trace)</CODE>; the first thing printed is the line that says
+we're starting that computation.  But, before we get a result from that,
+four more <CODE>downup</CODE> computations have to begin.  The one that begins
+last finishes first, returning <CODE>(t)</CODE>; then another one returns a value;
+the one that started first is the last to return.
+
+<P>You can also read the trace horizontally instead of vertically, focusing
+on the levels of indentation.  If you do this, then instead of a sequence
+of independent events (such-and-such starts, such-and-such returns a value)
+you see the <EM>inclusion</EM> of processes within other ones.  The
+smallest <CODE>downup</CODE> invocation is entirely inside the next-smallest
+one, and so on.  The initial invocation of <CODE>downup</CODE> includes all of
+the others.
+
+<P>Perhaps you're thinking that <CODE>downup</CODE>'s pattern of inclusion is the only
+one possible for recursive procedures.  That is, perhaps you're thinking that
+every invocation includes exactly one smaller invocation, and <EM>that</EM>
+one includes a yet-smaller one, and so on.  But actually the pattern can be
+more complicated.  Here's an example.  The <EM><A NAME="g12"></A><A NAME="g13"></A>Fibonacci numbers</EM> are a sequence of numbers in which the first
+two numbers are 1 and each number after that is the sum of the two before
+it:
+
+<P><CENTER>1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...</CENTER>
+<P> (They're named after
+<A NAME="g14"></A>Leonardo Pisano.  You'd think they'd be called &quot;Pisano numbers,&quot;
+but Leonardo had a kind of alias, Leonardo Fibonacci, just to confuse
+people.)  Here's a procedure to compute the <EM>n</EM>th Fibonacci number:
+
+<P><PRE>(define (<A NAME="g15"></A>fib n)
+  (if (&lt;= n 2)
+      1
+      (+ (fib (- n 1))
+         (fib (- n 2)))))
+</PRE>
+
+<P>Here's a trace of computing the fourth Fibonacci number:
+
+<PRE>&gt; (fib 4)
+<SMALL><CODE>(fib 4)
+|  (fib 2)
+|  1
+|  (fib 3)
+|  |  (fib 1)
+|  |  1
+|  |  (fib 2)
+|  |  1
+|  2
+3
+</CODE></SMALL>3
+</PRE>
+
+<P>(By the way, this trace demonstrates that in the dialect of
+Scheme we used, the argument subexpressions of the <CODE>+</CODE> expression in
+<CODE>fib</CODE> are evaluated from right to left, because the smaller <CODE>fib</CODE>
+arguments come before the larger ones in the trace.)
+
+<P>As you can see, we still have invocations within other invocations, but the
+pattern is not as simple as in the <CODE>downup</CODE> case.  If you're having
+trouble making sense of this pattern, go back to thinking about the problem
+in terms of little people; who hires whom?
+
+<P>
+<P><H2>Pitfalls</H2>
+
+<P>Whenever you catch yourself using the words &quot;go back&quot; or &quot;goes
+back&quot; in describing how some procedure works, bite your tongue.  A recursive
+invocation isn't a going back; it's a separate process.  The model
+behind &quot;go back&quot; is that the same little person starts over again at the
+beginning of the procedure body.  What actually happens is that a new little
+person carries out the same procedure.  It's an important difference because
+when the second little person finishes, the first may still have more work
+to do.
+
+<P>For example, when we used little people to show the working of <CODE>downup</CODE>, Dennis computes the result <CODE>(smi sm s sm smi)</CODE> and returns that
+value to David; at that point, David still has work to do before returning
+his own result to Donna.
+
+<P>The <CODE>trace</CODE> mechanism doesn't work for <A NAME="g16"></A><A NAME="g17"></A>special forms.  For
+example, you can't say
+
+<P><PRE>(trace or)
+</PRE>
+
+<P>although you can, and often will, trace primitive procedures that
+aren't special forms.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>13.1</B>&nbsp;&nbsp;Trace the <CODE>explode</CODE> procedure from page <A HREF="../ssch11/recursion.html#explodepage">there</A> and invoke
+
+<P><PRE>(explode 'ape)
+</PRE>
+
+<P>How many recursive calls were there?  What were the arguments to each
+recursive call?  Turn in a transcript showing the <CODE>trace</CODE> listing.
+
+
+<P>
+<B>13.2</B>&nbsp;&nbsp;How many <CODE>pigl</CODE>-specialist little people are involved in evaluating
+the following expression?
+
+<P><PRE>(pigl 'throughout)
+</PRE>
+
+<P>What are their arguments and return values, and to whom does each
+give her result?
+
+
+<P>
+<B>13.3</B>&nbsp;&nbsp;Here is our first version of <CODE>downup</CODE> from Chapter 11.  It
+doesn't work because it has no base case.
+
+<P><PRE>(define (downup wd)
+  (se wd (downup (bl wd)) wd))
+
+&gt; (downup 'toe)
+ERROR: Invalid argument to BUTLAST: &quot;"
+</PRE>
+
+<P>Explain what goes wrong to generate that error.  In particular, why does
+Scheme try to take the <CODE>butlast</CODE> of an empty word?
+
+
+<P>
+<B>13.4</B>&nbsp;&nbsp;Here is a Scheme procedure that never finishes its job:
+
+<P><PRE>(define (forever n)
+  (if (= n 0)
+      1
+      (+ 1 (forever n))))
+</PRE>
+
+<P>Explain why it doesn't give any result.  (If you try to trace it,
+make sure you know how to make your version of Scheme stop what it's doing
+and give you another prompt.)
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>13.5</B>&nbsp;&nbsp;It may seem strange that there is one little person per <EM>invocation</EM>
+of a procedure, instead of just one little person per procedure.  For
+certain problems, the person-per-procedure model would work fine.
+
+<P>Consider, for example, this invocation of <CODE>pigl</CODE>:
+
+<P><PRE>&gt; (pigl 'prawn)
+AWNPRAY
+</PRE>
+
+<P>Suppose there were only one <CODE>pigl</CODE> specialist in the computer,
+named Patricia.  Alonzo hires Patricia and gives her the argument <CODE>prawn</CODE>.  She sees that it doesn't begin with a vowel, so she moves the first
+letter to the end, gets <CODE>rawnp</CODE>, and tries to <CODE>pigl</CODE> that.  Again, it
+doesn't begin with a vowel, so she moves another letter to the end and gets
+<CODE>awnpr</CODE>.  That <EM>does</EM> begin with a vowel, so she adds an <CODE>ay</CODE>,
+returning <CODE>awnpray</CODE> to Alonzo.
+
+<P>Nevertheless, this revised little-people model doesn't always work.  Show
+how it fails to explain what happens in the evaluation of
+
+<P><PRE>(downup 'smile)
+</PRE>
+
+
+<P>
+<B>13.6</B>&nbsp;&nbsp;As part of computing <CODE>(factorial 6)</CODE>, Scheme computes <CODE>(factorial 2)</CODE> and gets the answer <CODE>2</CODE>.  After Scheme gets that answer,
+how does it know what to do next?  
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="convince-recur#text1">[1]</A> Unfortunately,
+<CODE>trace</CODE> isn't part of the Scheme standard, so it doesn't behave the same
+way in every version of Scheme.<P>
+<A NAME="ft2" HREF="convince-recur#text2">[2]</A> Even if tracing doesn't help you with recursion,
+you'll find that it's a useful technique in debugging any procedure.<P>
+<A NAME="ft3" HREF="convince-recur#text3">[3]</A> In this example the return
+value was printed twice, because the procedure we traced was invoked directly
+at the Scheme prompt.  Its return value would have been printed once anyway,
+just because that's what Scheme always does.  It was printed another time
+because of the tracing.  In this book we've printed the trace-specific
+output in smaller type and lower-case to help you understand which is what,
+but of course on the actual computer you're on your own.<P>
+<A NAME="ft4" HREF="convince-recur#text4">[4]</A> That's computer science slang
+for &quot;depending on a number of factors that I consider too complicated to
+bother explaining&quot; or &quot;depending on a number of factors that I don't
+understand myself.&quot; Some computer systems automatically print the phase of
+the moon on program listings as an aid for programmers with
+&quot;POM-dependent&quot; programs.  What we meant in this case is that it depends
+both on your version of Scheme and on the exact form of your recursive
+procedure.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch12/leap.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch14/recur-patterns.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch13/convince-recur.html b/js/games/nluqo.github.io/~bh/ssch13/convince-recur.html
new file mode 100644
index 0000000..15e783c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch13/convince-recur.html
@@ -0,0 +1,480 @@
+<P>
+
+<P><CENTER><IMG SRC="../ss-pics/mirrors.jpg" ALT="figure: mirrors"></CENTER><A NAME="mirrors"></A><P><CENTER>What's the base case?
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 13: How Recursion Works</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 13</H2>
+<H1>How Recursion Works</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch13.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch12/leap.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch14/recur-patterns.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>The last two chapters were about how to write recursive procedures.  This
+chapter is about how to <EM>believe in</EM> recursive procedures, and about
+understanding the process by which Scheme carries them out.
+
+<P><H2>Little People and Recursion</H2>
+
+<P>
+
+<P><A NAME="g1"></A>
+The crowning achievement of the little-people model
+is explaining recursion.  Remember that every time you call a procedure, a
+little person is hired to compute the result.  If you want to know <CODE>(+ 2 (+ 3 4))</CODE>, there are two separate plus specialists involved.
+
+<P>When we used the combining method, it was probably clear that it's okay
+for <CODE>downup3</CODE> to invoke <CODE>downup2</CODE>, and for <CODE>downup2</CODE> to invoke
+<CODE>downup1</CODE>.  But it probably felt like magic when we combined these
+numbered procedures into a single <CODE>downup</CODE> procedure that calls <EM>itself.</EM> You may have thought, &quot;How can <CODE>downup</CODE> do all the different
+tasks at once without getting confused?&quot; The little-people model answers
+this question by showing that tasks are done by procedure <EM>invocations,</EM> not by procedures.  Each little person handles one task,
+even though several little people are carrying out the same procedure.  The
+procedure is just a set of instructions; someone has to carry out the
+instructions.
+
+<P>So what happens when we want to know <CODE>(downup 'smile)</CODE>?  We hire Donna,
+a <CODE>downup</CODE> specialist, and she substitutes <CODE>smile</CODE> for <CODE>wd</CODE> in
+the body of <CODE>downup</CODE>, leaving her with
+
+<P><PRE>(if (= (count 'smile) 1)
+    (se 'smile)
+    (se 'smile (downup (bl 'smile)) 'smile)))
+</PRE>
+
+<P>We'll leave out the details about hiring the <CODE>if</CODE>, <CODE>=</CODE>, <CODE>count</CODE>,
+and <CODE>bl</CODE> specialists in this example, so Donna ends up with
+
+<P><PRE>(se 'smile (downup 'smil) 'smile)
+</PRE>
+
+<P>In order to evaluate this, Donna needs to know <CODE>(downup 'smil)</CODE>.  She hires David, another <CODE>downup</CODE> specialist, and
+waits for his answer.
+
+<P>David's <CODE>wd</CODE> is <CODE>smil</CODE>. He substitutes <CODE>smil</CODE> for <CODE>wd</CODE> in the
+body of <CODE>downup</CODE>, and <EM>he</EM> gets
+
+<P><PRE>(if (= (count 'smil) 1)
+    (se 'smil)
+    (se 'smil (downup (bl 'smil)) 'smil)))
+</PRE>
+
+<P>After some uninteresting work, David has
+
+<P><PRE>(se 'smil (downup 'smi) 'smil)
+</PRE>
+
+<P>and he hires Dennis to compute <CODE>(downup 'smi)</CODE>.  There are
+now three little people, all in the middle of some <CODE>downup</CODE> computation,
+and each of them is working on a different word.
+
+<P>Dennis substitutes <CODE>smi</CODE> for <CODE>wd</CODE>, and ends up with
+
+<P><PRE>(se 'smi (downup 'sm) 'smi)
+</PRE>
+
+<P>He hires Derek to compute <CODE>(downup 'sm)</CODE>.  Derek needs to
+compute
+
+<P><PRE>(se 'sm (downup 's) 'sm)
+</PRE>
+
+<P>Derek hires Dexter to find <CODE>downup</CODE> of <CODE>s</CODE>. Now we have to
+think carefully about the substitution again.  Dexter substitutes his
+actual argument, <CODE>s</CODE>, for his formal parameter <CODE>wd</CODE>, and ends up
+with
+
+<P><PRE>(if (= (count 's) 1)
+    (se 's)
+    (se 's (downup (bl 's)) 's)))
+</PRE>
+
+<P><CODE>Count</CODE> of <CODE>s</CODE> <EM>is</EM> 1.  So Dexter hires Simi,
+a <CODE>sentence</CODE> specialist, who returns <CODE>(s)</CODE>.  Dexter returns the same
+answer to Derek.
+
+<P>Derek, you will recall, is trying to compute
+
+<P><PRE>(se 'sm (downup 's) 'sm)
+</PRE>
+
+<P>and now he knows the value of <CODE>(downup 's)</CODE>.  So he hires
+Savita to compute
+
+<P><PRE>(se 'sm '(s) 'sm)
+</PRE>
+
+<P>and the answer is <CODE>(sm s sm)</CODE>.  Derek returns this answer to
+Dennis.  By the way, do you remember what question Derek was hired to
+answer?  Dennis wanted to know <CODE>(downup 'sm)</CODE>.  The answer Derek gave
+him was <CODE>(sm s sm)</CODE>, which <EM>is</EM> <CODE>downup</CODE> of <CODE>sm</CODE>.  Pretty
+neat, huh?
+<A NAME="g2"></A>
+<A NAME="g3"></A>
+<A NAME="g4"></A>
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+<CENTER><IMG SRC="../ss-pics/elves.jpg" ALT="figure: elves"></CENTER>
+
+<P>
+Dennis hires Sigrid to compute
+
+<P><PRE>(se 'smi '(sm s sm) 'smi)
+</PRE>
+
+<P>and returns <CODE>(smi sm s sm smi)</CODE> to David.  His answer is the
+correct value of <CODE>(downup 'smi)</CODE>.  David returns
+
+<P><PRE>(smil smi sm s sm smi smil)
+</PRE>
+
+<P>to Donna, who has been waiting all this time to evaluate
+
+<P><PRE>(se 'smile (downup 'smil) 'smile)
+</PRE>
+
+<P>Her waiting microseconds are over.  She hires a <CODE>sentence</CODE>
+specialist and returns
+
+<P><PRE>(smile smil smi sm s sm smi smil smile)
+</PRE>
+
+<P><P>
+If you have a group of friends whose names all start with &quot;D,&quot; you can try
+this out yourselves.  The rules of the game are pretty simple.  Remember
+that each one of you can have only one single value for <CODE>wd</CODE>.  Also,
+only one of you is in charge of the game at any point.  When you hire
+somebody, that new person is in charge of the game until he or she tells you
+the answer to his or her question.  If some of you have names that don't
+start with &quot;D,&quot; you can be specialists in <CODE>sentence</CODE> or <CODE>butlast</CODE>
+or something.  Play hard, play fair, nobody hurt.
+
+<P> 
+<H2>Tracing</H2>
+
+<P>The little-people model explains recursion very well, as long as you're
+willing to focus your attention on the job of one little person, taking the
+next little person's subtask as a &quot;black box&quot; that you assume is carried
+out correctly.  Your willingness to make that assumption is a necessary step
+in becoming truly comfortable with recursive programming.
+
+<P>Still, some people are very accustomed to a <EM>sequential</EM> model of
+computing.  In that model, there's only one computer, not a lot of little
+people, and that one computer has to carry out one step at a time.  If
+you're one of those people, you may find it hard to take the subtasks on
+faith.  You want to know exactly what happens when!  There's nothing wrong
+with such healthy scientific skepticism about recursion.
+
+<P>If you're a sequential thinker, you can <EM>trace</EM> procedures to get
+<A NAME="g7"></A>
+detailed information about the sequence of events.<A NAME="text1" HREF="convince-recur.html#ft1">[1]</A> But if
+you're happy with the way we've been talking about recursion up to now, and
+if you find that this section doesn't contribute to your
+understanding of recursion, don't worry about it.  Our experience
+shows that this way of thinking helps some people but not
+everybody.<A NAME="text2" HREF="convince-recur.html#ft2">[2]</A>
+Before we get to recursive procedures, let's just trace some nonrecursive
+ones:
+
+<P><PRE>(define (double wd) (word wd wd))
+
+&gt; (trace double)
+&gt; (double 'frozen)
+<SMALL><CODE>(double frozen)
+frozenfrozen
+</CODE></SMALL>FROZENFROZEN
+</PRE>
+
+<P>The argument to <CODE>trace</CODE> specifies a procedure.  When you
+invoke <CODE>trace</CODE>, that procedure becomes &quot;traced&quot;; this means that every time
+you invoke the procedure, Scheme will print out the name of the procedure
+and the actual arguments.  When the procedure returns a
+<A NAME="g8"></A>
+value, Scheme will print that value.<A NAME="text3" HREF="convince-recur.html#ft3">[3]</A>
+
+<P>Tracing isn't very interesting if we're just invoking a traced procedure
+once.  But look what happens when we trace a procedure that we're using
+more than once:
+
+<P><PRE>&gt; (double (double (double 'yum)))
+<SMALL><CODE>(double yum)
+yumyum
+(double yumyum)
+yumyumyumyum
+(double yumyumyumyum)
+yumyumyumyumyumyumyumyum
+</CODE></SMALL>
+YUMYUMYUMYUMYUMYUMYUMYUM
+</PRE>
+
+<P>This time, there were three separate
+invocations of <CODE>double</CODE>, and we saw each one as it happened.  First we
+<CODE>double</CODE>d <CODE>yum</CODE>, and the answer was <CODE>yumyum</CODE>. Then we <CODE>double</CODE>d <CODE>yumyum</CODE>, and so on.  Finally, after we invoked <CODE>double</CODE> for
+the last time, its result was printed by the read-eval-print loop.
+
+<P>
+<P>When you're finished investigating a procedure, you can turn off tracing by
+invoking <A NAME="g9"></A><CODE>untrace</CODE> with the procedure as argument:
+
+<P><PRE>&gt; (untrace double)
+</PRE>
+
+<P>Let's try tracing a recursive procedure:
+
+<P><PRE>(define (downup wd)
+  (if (= (count wd) 1)
+      (se wd)
+      (se wd (downup (bl wd)) wd)))
+
+&gt; (trace downup)
+
+&gt; (downup 'trace)
+<SMALL><CODE>(downup trace)
+|  (downup trac)
+|  |  (downup tra)
+|  |  |  (downup tr)
+|  |  |  |  (downup t)
+|  |  |  |  (t)
+|  |  |  (tr t tr)
+|  |  (tra tr t tr tra)
+|  (trac tra tr t tr tra trac)
+(trace trac tra tr t tr tra trac trace)
+</CODE></SMALL>(TRACE TRAC TRA TR T TR TRA TRAC TRACE)
+</PRE>
+
+<P>When a procedure calls itself recursively, depending on the
+<A NAME="g10"></A><A NAME="g11"></A>phase of the moon,<A NAME="text4" HREF="convince-recur.html#ft4">[4]</A> Scheme may indent the trace display to show the levels of
+procedure calling, and draw a line of vertical bars (&quot;<CODE>|</CODE>&quot;) from a
+procedure's invocation to its return value below.  This is so you can look at
+a procedure invocation and see what value it returned, or vice versa.
+
+<P>How does the trace help us understand what is going on in the recursion?
+First, by reading the trace results from top to bottom, you can see
+the actual sequence of events when the computer is carrying out your
+Scheme program.  For example, you can see that we start trying to figure
+out <CODE>(downup 'trace)</CODE>; the first thing printed is the line that says
+we're starting that computation.  But, before we get a result from that,
+four more <CODE>downup</CODE> computations have to begin.  The one that begins
+last finishes first, returning <CODE>(t)</CODE>; then another one returns a value;
+the one that started first is the last to return.
+
+<P>You can also read the trace horizontally instead of vertically, focusing
+on the levels of indentation.  If you do this, then instead of a sequence
+of independent events (such-and-such starts, such-and-such returns a value)
+you see the <EM>inclusion</EM> of processes within other ones.  The
+smallest <CODE>downup</CODE> invocation is entirely inside the next-smallest
+one, and so on.  The initial invocation of <CODE>downup</CODE> includes all of
+the others.
+
+<P>Perhaps you're thinking that <CODE>downup</CODE>'s pattern of inclusion is the only
+one possible for recursive procedures.  That is, perhaps you're thinking that
+every invocation includes exactly one smaller invocation, and <EM>that</EM>
+one includes a yet-smaller one, and so on.  But actually the pattern can be
+more complicated.  Here's an example.  The <EM><A NAME="g12"></A><A NAME="g13"></A>Fibonacci numbers</EM> are a sequence of numbers in which the first
+two numbers are 1 and each number after that is the sum of the two before
+it:
+
+<P><CENTER>1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...</CENTER>
+<P> (They're named after
+<A NAME="g14"></A>Leonardo Pisano.  You'd think they'd be called &quot;Pisano numbers,&quot;
+but Leonardo had a kind of alias, Leonardo Fibonacci, just to confuse
+people.)  Here's a procedure to compute the <EM>n</EM>th Fibonacci number:
+
+<P><PRE>(define (<A NAME="g15"></A>fib n)
+  (if (&lt;= n 2)
+      1
+      (+ (fib (- n 1))
+         (fib (- n 2)))))
+</PRE>
+
+<P>Here's a trace of computing the fourth Fibonacci number:
+
+<PRE>&gt; (fib 4)
+<SMALL><CODE>(fib 4)
+|  (fib 2)
+|  1
+|  (fib 3)
+|  |  (fib 1)
+|  |  1
+|  |  (fib 2)
+|  |  1
+|  2
+3
+</CODE></SMALL>3
+</PRE>
+
+<P>(By the way, this trace demonstrates that in the dialect of
+Scheme we used, the argument subexpressions of the <CODE>+</CODE> expression in
+<CODE>fib</CODE> are evaluated from right to left, because the smaller <CODE>fib</CODE>
+arguments come before the larger ones in the trace.)
+
+<P>As you can see, we still have invocations within other invocations, but the
+pattern is not as simple as in the <CODE>downup</CODE> case.  If you're having
+trouble making sense of this pattern, go back to thinking about the problem
+in terms of little people; who hires whom?
+
+<P>
+<P><H2>Pitfalls</H2>
+
+<P>Whenever you catch yourself using the words &quot;go back&quot; or &quot;goes
+back&quot; in describing how some procedure works, bite your tongue.  A recursive
+invocation isn't a going back; it's a separate process.  The model
+behind &quot;go back&quot; is that the same little person starts over again at the
+beginning of the procedure body.  What actually happens is that a new little
+person carries out the same procedure.  It's an important difference because
+when the second little person finishes, the first may still have more work
+to do.
+
+<P>For example, when we used little people to show the working of <CODE>downup</CODE>, Dennis computes the result <CODE>(smi sm s sm smi)</CODE> and returns that
+value to David; at that point, David still has work to do before returning
+his own result to Donna.
+
+<P>The <CODE>trace</CODE> mechanism doesn't work for <A NAME="g16"></A><A NAME="g17"></A>special forms.  For
+example, you can't say
+
+<P><PRE>(trace or)
+</PRE>
+
+<P>although you can, and often will, trace primitive procedures that
+aren't special forms.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>13.1</B>&nbsp;&nbsp;Trace the <CODE>explode</CODE> procedure from page <A HREF="../ssch11/recursion.html#explodepage">there</A> and invoke
+
+<P><PRE>(explode 'ape)
+</PRE>
+
+<P>How many recursive calls were there?  What were the arguments to each
+recursive call?  Turn in a transcript showing the <CODE>trace</CODE> listing.
+
+
+<P>
+<B>13.2</B>&nbsp;&nbsp;How many <CODE>pigl</CODE>-specialist little people are involved in evaluating
+the following expression?
+
+<P><PRE>(pigl 'throughout)
+</PRE>
+
+<P>What are their arguments and return values, and to whom does each
+give her result?
+
+
+<P>
+<B>13.3</B>&nbsp;&nbsp;Here is our first version of <CODE>downup</CODE> from Chapter 11.  It
+doesn't work because it has no base case.
+
+<P><PRE>(define (downup wd)
+  (se wd (downup (bl wd)) wd))
+
+&gt; (downup 'toe)
+ERROR: Invalid argument to BUTLAST: &quot;"
+</PRE>
+
+<P>Explain what goes wrong to generate that error.  In particular, why does
+Scheme try to take the <CODE>butlast</CODE> of an empty word?
+
+
+<P>
+<B>13.4</B>&nbsp;&nbsp;Here is a Scheme procedure that never finishes its job:
+
+<P><PRE>(define (forever n)
+  (if (= n 0)
+      1
+      (+ 1 (forever n))))
+</PRE>
+
+<P>Explain why it doesn't give any result.  (If you try to trace it,
+make sure you know how to make your version of Scheme stop what it's doing
+and give you another prompt.)
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>13.5</B>&nbsp;&nbsp;It may seem strange that there is one little person per <EM>invocation</EM>
+of a procedure, instead of just one little person per procedure.  For
+certain problems, the person-per-procedure model would work fine.
+
+<P>Consider, for example, this invocation of <CODE>pigl</CODE>:
+
+<P><PRE>&gt; (pigl 'prawn)
+AWNPRAY
+</PRE>
+
+<P>Suppose there were only one <CODE>pigl</CODE> specialist in the computer,
+named Patricia.  Alonzo hires Patricia and gives her the argument <CODE>prawn</CODE>.  She sees that it doesn't begin with a vowel, so she moves the first
+letter to the end, gets <CODE>rawnp</CODE>, and tries to <CODE>pigl</CODE> that.  Again, it
+doesn't begin with a vowel, so she moves another letter to the end and gets
+<CODE>awnpr</CODE>.  That <EM>does</EM> begin with a vowel, so she adds an <CODE>ay</CODE>,
+returning <CODE>awnpray</CODE> to Alonzo.
+
+<P>Nevertheless, this revised little-people model doesn't always work.  Show
+how it fails to explain what happens in the evaluation of
+
+<P><PRE>(downup 'smile)
+</PRE>
+
+
+<P>
+<B>13.6</B>&nbsp;&nbsp;As part of computing <CODE>(factorial 6)</CODE>, Scheme computes <CODE>(factorial 2)</CODE> and gets the answer <CODE>2</CODE>.  After Scheme gets that answer,
+how does it know what to do next?  
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="convince-recur.html#text1">[1]</A> Unfortunately,
+<CODE>trace</CODE> isn't part of the Scheme standard, so it doesn't behave the same
+way in every version of Scheme.<P>
+<A NAME="ft2" HREF="convince-recur.html#text2">[2]</A> Even if tracing doesn't help you with recursion,
+you'll find that it's a useful technique in debugging any procedure.<P>
+<A NAME="ft3" HREF="convince-recur.html#text3">[3]</A> In this example the return
+value was printed twice, because the procedure we traced was invoked directly
+at the Scheme prompt.  Its return value would have been printed once anyway,
+just because that's what Scheme always does.  It was printed another time
+because of the tracing.  In this book we've printed the trace-specific
+output in smaller type and lower-case to help you understand which is what,
+but of course on the actual computer you're on your own.<P>
+<A NAME="ft4" HREF="convince-recur.html#text4">[4]</A> That's computer science slang
+for &quot;depending on a number of factors that I consider too complicated to
+bother explaining&quot; or &quot;depending on a number of factors that I don't
+understand myself.&quot; Some computer systems automatically print the phase of
+the moon on program listings as an aid for programmers with
+&quot;POM-dependent&quot; programs.  What we meant in this case is that it depends
+both on your version of Scheme and on the exact form of your recursive
+procedure.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch12/leap.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch14/recur-patterns.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch14/number-name b/js/games/nluqo.github.io/~bh/ssch14/number-name
new file mode 100644
index 0000000..bac8cd1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch14/number-name
@@ -0,0 +1,91 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme:Project: Spelling Names of Huge Numbers</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Project: Spelling Names of Huge Numbers</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="recur-patterns.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch15/adv-recur.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+
+
+<P>Write a procedure <CODE><A NAME="g1"></A>number-name</CODE> that takes a positive integer
+argument and returns a sentence containing that number spelled out in words:
+
+<P><PRE>&gt; (number-name 5513345)
+(FIVE MILLION FIVE HUNDRED THIRTEEN THOUSAND THREE HUNDRED FORTY FIVE)
+
+&gt; (number-name (factorial 20))
+(TWO QUINTILLION FOUR HUNDRED THIRTY TWO QUADRILLION NINE HUNDRED TWO
+ TRILLION EIGHT BILLION ONE HUNDRED SEVENTY SIX MILLION SIX HUNDRED
+ FORTY THOUSAND)
+</PRE>
+
+<P>There are some special cases you will need to consider:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Numbers in which some particular digit is zero
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Numbers like 1,000,529 in which an entire group of three digits is zero.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Numbers in the teens.
+
+</TABLE><P>
+
+<P>Here are two hints.  First, split the number into groups of three digits,
+going from right to left.  Also, use the sentence
+
+<P><PRE>'(thousand million billion trillion quadrillion quintillion
+  sextillion septillion octillion nonillion decillion)
+</PRE>
+
+<P>You can write this bottom-up or top-down.  To work bottom-up, pick a subtask
+and get that working before you tackle the overall structure of the
+problem.  For example, write a procedure that returns the word <CODE>FIFTEEN</CODE>
+given the argument <CODE>15</CODE>.
+
+<P>To work top-down, start by writing <CODE>number-name</CODE>, freely assuming the
+existence of whatever helper procedures you like.  You can begin debugging
+by writing <EM>stub</EM> procedures that fit into the overall program but
+don't really do their job correctly.  For example, as an intermediate stage
+you might end up with a program that works like this:
+
+<P><PRE>&gt; (number-name 1428425)                      ;; intermediate version
+(1 MILLION 428 THOUSAND 425)
+</PRE>
+
+
+<P>
+
+
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="recur-patterns.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch15/adv-recur.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch14/number-name.html b/js/games/nluqo.github.io/~bh/ssch14/number-name.html
new file mode 100644
index 0000000..bac8cd1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch14/number-name.html
@@ -0,0 +1,91 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme:Project: Spelling Names of Huge Numbers</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Project: Spelling Names of Huge Numbers</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="recur-patterns.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch15/adv-recur.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+
+
+<P>Write a procedure <CODE><A NAME="g1"></A>number-name</CODE> that takes a positive integer
+argument and returns a sentence containing that number spelled out in words:
+
+<P><PRE>&gt; (number-name 5513345)
+(FIVE MILLION FIVE HUNDRED THIRTEEN THOUSAND THREE HUNDRED FORTY FIVE)
+
+&gt; (number-name (factorial 20))
+(TWO QUINTILLION FOUR HUNDRED THIRTY TWO QUADRILLION NINE HUNDRED TWO
+ TRILLION EIGHT BILLION ONE HUNDRED SEVENTY SIX MILLION SIX HUNDRED
+ FORTY THOUSAND)
+</PRE>
+
+<P>There are some special cases you will need to consider:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Numbers in which some particular digit is zero
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Numbers like 1,000,529 in which an entire group of three digits is zero.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Numbers in the teens.
+
+</TABLE><P>
+
+<P>Here are two hints.  First, split the number into groups of three digits,
+going from right to left.  Also, use the sentence
+
+<P><PRE>'(thousand million billion trillion quadrillion quintillion
+  sextillion septillion octillion nonillion decillion)
+</PRE>
+
+<P>You can write this bottom-up or top-down.  To work bottom-up, pick a subtask
+and get that working before you tackle the overall structure of the
+problem.  For example, write a procedure that returns the word <CODE>FIFTEEN</CODE>
+given the argument <CODE>15</CODE>.
+
+<P>To work top-down, start by writing <CODE>number-name</CODE>, freely assuming the
+existence of whatever helper procedures you like.  You can begin debugging
+by writing <EM>stub</EM> procedures that fit into the overall program but
+don't really do their job correctly.  For example, as an intermediate stage
+you might end up with a program that works like this:
+
+<P><PRE>&gt; (number-name 1428425)                      ;; intermediate version
+(1 MILLION 428 THOUSAND 425)
+</PRE>
+
+
+<P>
+
+
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="recur-patterns.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch15/adv-recur.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch14/recur-patterns b/js/games/nluqo.github.io/~bh/ssch14/recur-patterns
new file mode 100644
index 0000000..cfdd3aa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch14/recur-patterns
@@ -0,0 +1,789 @@
+<P>
+
+<A NAME="fish"></A>
+<P><CENTER><IMG SRC="../ss-pics/fish.jpg" ALT="figure: fish"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 14: Common Patterns in Recursive Procedures</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 14</H2>
+<H1>Common Patterns in Recursive Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch13/convince-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="number-name.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P><A NAME="g1"></A>
+<A NAME="g2"></A>
+
+<P>
+<P>There are two ideas about how to solve programming problems.<A NAME="text1" HREF="recur-patterns#ft1">[1]</A> One idea is that programmers work mostly by
+recognizing categories of problems that come up repeatedly and remembering
+the solution that worked last time; therefore, programming students should
+learn a lot of program <EM>patterns,</EM> or <EM>templates,</EM> and fill
+in the blanks for each specific problem.  Another idea is that there are a
+few powerful principles in programming, and that if a learner understands
+the principles, they can be applied to <EM>any</EM> problem, even one that
+doesn't fit a familiar pattern.
+
+<P>Research suggests that an expert programmer, like an expert at any skill,
+<EM>does</EM> work mainly by recognizing patterns.  Nevertheless, we lean
+toward the powerful-principle idea.  The expert's memory is not full of
+arbitrary patterns; it's full of <EM>meaningful</EM> patterns, because the
+expert has gone through the process of struggling to reason out how each
+procedure works and how to write new procedures.
+
+<P>Still, we think it's worth pointing out a few patterns that are so common
+that you'll have seen several examples of each before you finish this book.
+Once you learn these patterns, you can write similar procedures almost
+automatically.  But there's an irony in learning patterns:  In Scheme, once
+you've identified a pattern, you can write a general-purpose procedure that
+handles all such cases without writing individual procedures for each
+situation.  Then you don't have to use the pattern any more!
+Chapter 8 presents several general pattern-handling procedures, called <EM>higher-order</EM> procedures.  In this chapter we'll
+consider the patterns corresponding to those higher-order procedures, and
+we'll use the names of those procedures to name the patterns.
+
+<P>What's the point of learning patterns if you can use higher-order procedures
+instead?  There are at least two points.  The first, as you'll see very
+soon, is that some problems <EM>almost</EM> follow one of the patterns; in
+that case, you can't use the corresponding higher-order procedure, which
+works only for problems that <EM>exactly</EM> follow the pattern.  But you
+can use your understanding of the pattern to help with these related
+problems.  The second point is that in Chapter 19 we'll show how the
+higher-order functions are themselves implemented using these recursive
+patterns.
+
+<P>This chapter isn't an official list of all important patterns; as you gain
+programming experience, you'll certainly add more patterns to your repertoire.
+
+<P><H2>The <CODE><B>Every</B></CODE> Pattern</H2>
+
+<P>Here's a procedure to square every number in a sentence of numbers:
+
+<P><PRE>(define (square-sent sent)
+  (if (empty? sent)
+      '()
+      (se (square (first sent))
+          (square-sent (bf sent)))))
+</PRE>
+
+<P>Here's a procedure to translate every word of a sentence into Pig Latin:
+
+<P><PRE>(define (pigl-sent sent)
+  (if (empty? sent)
+      '()
+      (se (pigl (first sent))
+          (pigl-sent (bf sent)))))
+</PRE>
+
+<P>The pattern here is pretty clear.  Our recursive case will do something
+straightforward to the <CODE>first</CODE> of the sentence, such as <CODE>square</CODE>ing it
+or <CODE>pigl</CODE>ing it, and we'll combine that with the result of a recursive
+call on the <CODE>butfirst</CODE> of the sentence.
+
+<P>The <CODE>letter-pairs</CODE> procedure that we wrote in Chapter 11 is
+an example of a procedure that follows the <CODE>every</CODE> pattern pretty
+closely, but not exactly.  The difference is that <CODE>letter-pairs</CODE> looks
+at its argument sentence two words at a time.
+
+<P><PRE>(define (<A NAME="g3"></A>letter-pairs wd)
+  (if (= (count wd) 1)
+      '()
+      (se (word (first wd) (first (bf wd)))
+          (letter-pairs (bf wd)))))
+</PRE>
+
+<P>Compare this with the earlier definition of <CODE>square-sent</CODE>.  The recursive case still uses <CODE>se</CODE> to combine one
+part of the result with a recursive call based on the <CODE>butfirst</CODE> of
+the argument, but here both the first letter and the second letter of the
+argument contribute to the first word of the result.  That's why the base
+case also has to be different; the recursive case requires at least two
+letters, so the base case is a one-letter word.<A NAME="text2" HREF="recur-patterns#ft2">[2]</A>
+
+<P>Let's solve a slightly different problem.  This time, we want to break the
+word down into <EM>non-overlapping</EM> pairs of letters, like this:
+
+<P><PRE>&gt; (disjoint-pairs 'tripoli)                  ;; the new problem
+(TR IP OL I)
+
+&gt; (letter-pairs 'tripoli)                    ;; compare the old one
+(TR RI IP PO OL LI)
+</PRE>
+
+<P>The main difference between these two functions is that in <CODE>disjoint-pairs</CODE> we eliminate two letters at once in the recursive call.  A
+second difference is that we have to deal with the special case of
+odd-length words.
+
+<P><PRE>(define (<A NAME="g4"></A>disjoint-pairs wd)
+  (cond ((empty? wd) '())
+	((= (count wd) 1) (se wd))
+	(else (se (word (first wd) (first (bf wd)))
+		  (disjoint-pairs (bf (bf wd)))))))
+</PRE>
+
+<P><H2>The <CODE><B>Keep</B></CODE> Pattern</H2>
+
+<P>In the <CODE>every</CODE> pattern, we collect the results of transforming each
+element of a word or sentence into something else.  This time we'll consider
+a different kind of problem: choosing some of the elements and forgetting
+about the others.  First, here is a procedure to select the three-letter
+words from a sentence:
+
+<P>
+<PRE>(define (keep-three-letter-words sent)
+  (cond ((empty? sent) '())
+        ((= (count (first sent)) 3)
+         (se (first sent) (keep-three-letter-words (bf sent))))
+        (else (keep-three-letter-words (bf sent)))))
+
+&gt; (keep-three-letter-words '(one two three four five six seven))
+(ONE TWO SIX)
+</PRE>
+
+<P> 
+Next, here is a procedure to select the vowels from a word:
+
+<P><PRE>(define (keep-vowels wd)
+  (cond ((empty? wd) &quot;&quot;)
+        ((vowel? (first wd))
+         (word (first wd) (keep-vowels (bf wd))))
+        (else (keep-vowels (bf wd)))))
+
+&gt; (keep-vowels 'napoleon)
+AOEO
+</PRE>
+
+<P>Let's look at the differences between the <CODE>every</CODE> pattern and the
+<A NAME="g5"></A><A NAME="g6"></A> pattern.  First of all, the <CODE>keep</CODE> procedures have three
+possible outcomes, instead of just two as in most <CODE>every</CODE>-like
+procedures.  In the <CODE>every</CODE> pattern, we only have to distinguish between
+the base case and the recursive case.  In the <CODE>keep</CODE> pattern, there is
+still a base case, but there are <EM>two</EM> recursive cases; we have to
+decide whether or not to keep the first available element in the return
+value.  When we do keep an element, we keep the element itself, not some
+function of the element.
+
+<P>As with the <CODE>every</CODE> pattern, there are situations that follow the <CODE>keep</CODE> pattern only approximately.  Suppose we want to look for doubled
+letters within a word:
+
+<P>
+<PRE>&gt; (doubles 'bookkeeper)
+OOKKEE
+
+&gt; (doubles 'mississippi)
+SSSSPP
+</PRE>
+
+<P>This isn't a pure <CODE>keep</CODE> pattern example because we can't
+decide whether to keep the first letter by looking at that letter alone; we
+have to examine two at a time.  But we can write a procedure using more or
+less the same pattern:
+
+<P><PRE>(define (<A NAME="g7"></A>doubles wd)
+  (cond ((= (count wd) 1) &quot;&quot;)
+        ((equal? (first wd) (first (bf wd)))
+         (word (first wd) (first (bf wd)) (doubles (bf (bf wd)))))
+        (else (doubles (bf wd)))))
+</PRE>
+
+<P>As in the <CODE>evens</CODE> example of Chapter 12, the base case of
+<CODE>doubles</CODE> is unusual, and one of the recursive calls chops off two
+letters at once in forming the smaller subproblem.  But the structure of the
+<CODE>cond</CODE> with a base case clause, a clause for keeping letters, and a
+clause for rejecting letters is maintained.
+
+<P><H2>The <CODE><B>Accumulate</B></CODE> Pattern</H2>
+
+<P>Here are two recursive procedures for functions that combine all of the
+elements of the argument into a single result:
+
+<P><PRE>(define (<A NAME="g8"></A>addup nums)
+  (if (empty? nums)
+      0
+      (+ (first nums) (addup (bf nums)))))
+
+(define (<A NAME="g9"></A>scrunch-words sent)
+  (if (empty? sent)
+      &quot;"
+      (word (first sent) (scrunch-words (bf sent)))))
+
+&gt; (addup '(8 3 6 1 10))
+28
+
+&gt; (scrunch-words '(ack now ledge able))
+ACKNOWLEDGEABLE
+</PRE>
+
+<P>What's the pattern?  We're using some combiner (<CODE>+</CODE> or <CODE>word</CODE>) to connect the word we're up to with the result of the recursive
+call.  The base case tests for an empty argument, but the base case return
+value must be the identity element of the combiner function.
+
+<P>If there is no identity element for the combiner, as in the case of <CODE>max</CODE>, we modify the pattern slightly:<A NAME="text3" HREF="recur-patterns#ft3">[3]</A>
+
+<P><PRE>(define (<A NAME="g10"></A>sent-max sent)
+  (if (= (count sent) 1)
+      (first sent)
+      (max (first sent)
+	   (sent-max (bf sent)))))
+</PRE>      
+
+<P><H2>Combining Patterns</H2>
+
+<P><PRE>(define (<A NAME="g11"></A>add-numbers sent)
+  (cond ((empty? sent) 0)
+	((number? (first sent))
+	 (+ (first sent) (add-numbers (bf sent))))
+	(else (add-numbers (bf sent)))))
+
+&gt; (add-numbers '(if 6 were 9))
+15
+</PRE>
+
+<P>This procedure combines aspects of <CODE>keep</CODE> with aspects of <CODE>accumulate</CODE>.  We want to do two things at once: get rid of the words that
+aren't numbers and compute the <EM>sum</EM> of those that are numbers.  (A
+simple <CODE>keep</CODE> would construct a sentence of them.)  <CODE>Add-numbers</CODE>
+looks exactly like the <CODE>keep</CODE> pattern, except that there's a funny
+combiner and a funny base case, which look more like <CODE>accumulate</CODE>.<A NAME="text4" HREF="recur-patterns#ft4">[4]</A>
+
+<P> 
+Here's an example that combines <CODE>every</CODE> and <CODE>keep</CODE>.  We want a
+procedure that takes a sentence as its argument and translates every word of
+the sentence into Pig Latin, but leaves out words that have no vowels,
+because the Pig Latin translator doesn't work for such words.  The procedure
+<CODE>safe-pigl</CODE> will be like a <CODE>keep</CODE> pattern in that it keeps only
+words that contain vowels, but like an <CODE>every</CODE> in that the result
+contains transformed versions of the selected words, rather than the words
+themselves.
+
+<P><PRE>(define (<A NAME="g12"></A>safe-pigl sent)
+  (cond ((empty? sent) '())
+	((has-vowel? (first sent))
+	 (se (pigl (first sent)) (safe-pigl (bf sent))))
+	(else (safe-pigl (bf sent)))))
+
+(define (<A NAME="g13"></A>has-vowel? wd)
+  (not (empty? (keep-vowels wd))))
+
+&gt; (safe-pigl '(my pet fly is named xyzzy))
+(ETPAY ISAY AMEDNAY)
+</PRE>
+
+<P>
+Finally, here's an example that combines all three patterns.  In Chapter
+1 we wrote (using higher-order procedures) the <CODE>acronym</CODE>
+procedure, which selects the &quot;real&quot; words of a sentence (the <CODE>keep</CODE>
+pattern), takes the first letter of each word (the <CODE>every</CODE> pattern), and
+combines these initial letters into a single word (the <CODE>accumulate</CODE>
+pattern).  In a recursive procedure we can carry out all three steps at once:
+
+<P><PRE>(define (<A NAME="g14"></A>acronym sent)
+  (cond ((empty? sent) &quot;&quot;)
+	((real-word? (first sent))
+	 (word (first (first sent))
+	       (acronym (bf sent))))
+	(else (acronym (bf sent)))))
+</PRE>
+
+<P>Don't become obsessed with trying to make every recursive problem fit one of
+the three patterns we've shown here.  As we said at the beginning of the
+chapter, what's most important is that you understand the principles of
+recursion in general, and understand how versatile recursion is.  The
+patterns are just special cases that happen to come up fairly often.
+
+<P><H2>Helper Procedures</H2>
+
+<P>Let's say we want a procedure <CODE>every-nth</CODE> that takes a number <EM>n</EM> and a
+sentence as arguments and selects every <EM>n</EM>th word from the sentence.
+
+<P><PRE>&gt; (every-nth 3 '(with a little help from my friends))
+(LITTLE MY)
+</PRE>
+
+<P>We get in trouble if we try to write this in the obvious way, as a sort of
+<CODE>keep</CODE> pattern.
+
+<P><PRE>(define (every-nth n sent)                   ;; wrong!
+  (cond ((empty? sent) '())
+        ((= n 1)
+         (se (first sent) (every-nth <STRONG><BIG>n</BIG></STRONG> (bf sent))))
+        (else (every-nth (- n 1) (bf sent)))))
+</PRE>
+
+<P>The problem is with the <CODE><B>n</B></CODE> that's in boldface.
+We're thinking that it's going to be the <CODE>n</CODE> of the <EM>original</EM>
+invocation of <CODE>every-nth</CODE>, that is, 3.  But in fact, we've already counted
+<CODE>n</CODE> down so that in this invocation its value is 1.  (Check out the first
+half of the same <CODE>cond</CODE> clause.)  This procedure will correctly skip the
+first two words but will keep all the words after that point.  That's
+because we're trying to remember two different numbers: the number we
+should always skip between kept words, and the number of words we still need
+to skip this time.
+
+<P> 
+If we're trying to remember two numbers, we need two names for them.  The
+way to achieve this is to have our official <CODE>every-nth</CODE> procedure call a
+<A NAME="g15"></A><A NAME="g16"></A>helper procedure that takes an extra argument and does the real work:
+
+<P><PRE>(define (<A NAME="g17"></A>every-nth n sent)
+  (every-nth-helper n n sent))
+
+(define (<A NAME="g18"></A>every-nth-helper interval remaining sent)
+  (cond ((empty? sent) '())
+        ((= remaining 1)
+         (se (first sent)
+             (every-nth-helper interval interval (bf sent))))
+        (else (every-nth-helper interval (- remaining 1) (bf sent)))))
+</PRE>
+
+<P>This procedure always calls itself recursively with the same value
+of <CODE>interval</CODE>, but with a different value of <CODE>remaining</CODE> each time.
+<CODE>Remaining</CODE> keeps getting smaller by one in each recursive call until it
+equals 1.  On that call, a word is kept for the return value, and we call
+<CODE>every-nth-helper</CODE> recursively with the value of <CODE>interval</CODE>, that is,
+the <EM>original</EM> value of <CODE>n</CODE>, as the new <CODE>remaining</CODE>.
+If you like, you can think of this combination of an <EM>initialization</EM>
+<A NAME="g19"></A>
+<A NAME="g20"></A>
+procedure and a <EM>helper</EM> procedure as another pattern for your
+collection.
+
+<P>
+<P><H2>How to Use Recursive Patterns</H2>
+
+<P>One way in which recursive patterns can be useful is if you think of them as
+templates with empty slots to fill in for a particular problem.  Here are
+template versions of the <CODE>every</CODE>, <CODE>keep</CODE>, and <CODE>accumulate</CODE>
+patterns as applied to sentences:
+
+<P><PRE>(define (<B>every-something</B> sent)
+  (if (empty? sent)
+      '()
+      (se (______ (first sent))
+	  (<B>every-something</B> (bf sent)))))
+
+(define (<B>keep-if-something</B> sent)
+  (cond ((empty? sent) '())
+	((______<STRONG><BIG>?</BIG></STRONG> (first sent))
+	 (se (first sent) (<B>keep-if-something</B> (bf sent))))
+	(else (<B>keep-if-something</B> (bf sent)))))
+</PRE>
+
+<P>
+<A NAME="keeptemplate"></A>
+<PRE>(define (<B>accumulate-somehow</B> sent)
+  (if (empty? sent)
+      ______
+      (______ (first sent)
+              (<B>accumulate-somehow</B> (bf sent)))))
+</PRE>
+
+<P>Suppose you're trying to write a procedure <CODE>first-number</CODE> that takes a
+sentence as its argument and returns the first number in that sentence, but
+returns the word <CODE>no-number</CODE> if there are no numbers in the argument.
+The first step is to make a guess about which pattern will be most useful.
+In this case the program should start with an entire sentence and select a
+portion of that sentence, namely one word.  Therefore, we start with the
+<CODE>keep</CODE> pattern.
+
+<P><PRE>(define (first-number sent)                  ;; first guess
+  (cond ((empty? sent) '())
+	((______ (first sent))
+	 (se (first sent) (first-number (bf sent))))
+	(else (first-number (bf sent)))))
+</PRE>
+
+<P>The next step is to fill in the blank.  Obviously, since we're looking for a
+number, <CODE>number?</CODE> goes in the blank.
+
+<P>The trouble is that this procedure returns <EM>all</EM> the numbers in the
+given sentence.  Now our job is to see how the pattern must be modified to
+do what we want.  The overall structure of the pattern is a <CODE>cond</CODE> with three clauses; we'll consider each clause separately.
+
+<P>What should the procedure return if <CODE>sent</CODE> is empty?  In that case,
+there is no first number in the sentence, so it should return <CODE>no-number</CODE>:
+
+<P><PRE>((empty? sent) <B>'no-number</B>)
+</PRE>
+
+<P>What if the first word of the sentence is a number?  The program should
+return just that number, ignoring the rest of the sentence:
+
+<P><PRE>((number? (first sent)) <B>(first sent)</B>)
+</PRE>
+
+<P>What if the first word of the sentence isn't a number?  The procedure must
+make a recursive call for the <CODE>butfirst</CODE>, and whatever that recursive
+call returns is the answer.  So the <CODE>else</CODE> clause does not have to be
+changed.
+
+<P>Here's the whole procedure:
+
+<P><PRE>(define (<A NAME="g21"></A>first-number sent)
+  (cond ((empty? sent) 'no-number)
+	((number? (first sent)) (first sent))
+	(else (first-number (bf sent)))))
+</PRE>
+
+<P>After filling in the blank in the <CODE>keep</CODE> pattern, we solved this problem
+by focusing on the details of the procedure definition.  We examined each
+piece of the definition to decide what changes were necessary.  Instead, we
+could have focused on the <EM>behavior</EM> of the procedure.  We would have
+found two ways in which the program didn't do what it was supposed to do:
+For an argument sentence containing numbers, it would return all of the
+numbers instead of just one of them.  For a sentence without numbers, it
+would return the empty sentence instead of <CODE>no-number</CODE>.  We would then
+have finished the job by <EM>debugging</EM> the procedure to fix each of these
+problems.  The final result would have been the same.
+
+<P> 
+<H2>Problems That Don't Follow Patterns</H2>
+
+<P>We want to write the procedure <CODE>sent-before?</CODE>, which takes two sentences
+as arguments and returns <CODE>#t</CODE> if the first comes alphabetically before
+the second.  The general idea is to compare the sentences word by word.  If
+the first words are different, then whichever is alphabetically earlier
+determines which sentence comes before the other.  If the first words are
+equal, we go on to compare the second words.<A NAME="text5" HREF="recur-patterns#ft5">[5]</A>
+
+<P><PRE>&gt; (sent-before? '(hold me tight) '(sun king))
+#T
+
+&gt; (sent-before? '(lovely rita) '(love you to))
+#F
+
+&gt; (sent-before? '(strawberry fields forever)
+		'(strawberry fields usually))
+#T
+</PRE>
+
+<P>Does this problem follow any of the patterns we've seen?  It's not an <CODE>every</CODE>, because the result isn't a sentence in which each word is a
+transformed version of a word in the arguments.  It's not a <CODE>keep</CODE>,
+because the result isn't a subset of the words in the arguments.  And it's
+not exactly an <CODE>accumulate</CODE>.  We do end up with a single true or
+false result, rather than a sentence full of results.  But in a typical <CODE>accumulate</CODE> problem, every word of the argument contributes to the solution.
+In this case only one word from each sentence determines the overall result.
+
+<P>On the other hand, this problem does have something in common with the <CODE>keep</CODE> pattern:  We know that on each invocation there will be three
+possibilities.  We might reach a base case (an empty sentence); if not, the
+first words of the argument sentences might or might not be relevant to the
+solution.
+
+<P>We'll have a structure similar to the usual <CODE>keep</CODE> pattern, except that
+there's no <CODE>se</CODE> involved; if we find unequal words, the problem is
+solved without further recursion.  Also, we have two arguments, and either
+of them might be empty.
+
+<P><PRE>(define (<A NAME="g22"></A>sent-before? sent1 sent2)
+  (cond ((empty? sent1) #t)
+	((empty? sent2) #f)
+	((before? (first sent1) (first sent2)) #t)
+	((before? (first sent2) (first sent1)) #f)
+	(else (sent-before? (bf sent1) (bf sent2)))))
+</PRE>
+
+<P>Although thinking about the <CODE>keep</CODE> pattern helped us to work
+out this solution, the result really doesn't look much like a <CODE>keep</CODE>.
+We had to invent most of the details by thinking about this particular
+problem, not by thinking about the pattern.
+
+<P>In the next chapter we'll look at examples of recursive procedures that are
+quite different from any of these patterns.  Remember, the patterns are a
+shortcut for many common problems, but don't learn the shortcut at the
+expense of the general technique.
+
+<P><H2>Pitfalls</H2>
+
+<P>Review the pitfalls from Chapter 12; they're still relevant.
+
+<P>
+<P>How do you test for the base case?  Most of the examples in this
+chapter have used <CODE>empty?</CODE>, and it's easy to fall into the habit of
+using that test without thinking.  But, for example, if the argument is a
+number, that's probably the wrong test.  Even when the argument is a
+sentence or a non-numeric word, it may not be empty in the base case, as in
+the Pig Latin example.  
+
+<P>
+A serious pitfall is failing to recognize a situation in which you need
+an extra variable and therefore need a helper procedure.  If at
+each step you need the entire original argument as well as the argument
+that's getting closer to the base case, you probably need a helper
+procedure.  For example, write a procedure <CODE>pairs</CODE> that takes a word as
+argument and returns a sentence of all possible two-letter words made of
+letters from the argument word, allowing duplicates, like this:
+
+<P><PRE>&gt; (pairs 'toy)
+(TT TO TY OT OO OY YT YO YY)
+</PRE>
+
+<P>
+
+<P>A simple pitfall, when using a helper procedure, is to write a recursive
+call in the helper that calls the main procedure instead of calling the
+helper.  (For example, what would have happened if we'd had <CODE>every-nth-helper</CODE> invoke <CODE>every-nth</CODE> instead of invoking itself?)
+
+<P>Some recursive procedures with more than one argument require more than
+one base case.  But some don't.  One pitfall is to leave out a necessary
+base case; another is to include something that looks like a base case but
+doesn't fit the structure of the program.
+
+<P>For example, the reason <CODE>sent-before?</CODE> needs two base cases is that on
+each recursive call, both <CODE>sent1</CODE> and <CODE>sent2</CODE> get smaller.  Either
+sentence might run out first, and the procedure should return different values
+in those two cases.
+
+<P>On the other hand, Exercise <A HREF="../ssch11/recursion.html#copies">11.7</A> asked you to write a procedure that has
+two arguments but needs only one base case:
+
+<P><PRE>(define (<A NAME="g23"></A>copies num wd)
+  (if (= num 0)
+      '()
+      (se wd (copies (- num 1) wd))))
+</PRE>
+
+<P>In this example, the <CODE>wd</CODE> argument <EM>doesn't</EM> get smaller
+from one invocation to the next.  It would be silly to test for <CODE>(empty? wd)</CODE>.
+
+<P>A noteworthy intermediate case is <CODE><A NAME="g24"></A>every-nth-helper</CODE>.  It does
+have two <CODE>cond</CODE> clauses that check for two different arguments reaching
+their smallest allowable values, but the <CODE>remaining</CODE> clause isn't a base
+case.  If <CODE>remaining</CODE> has the value 1, the procedure still invokes itself
+recursively.
+
+<P>The only general principle we can offer is that you have to think about what
+base cases are appropriate, not just routinely copy whatever worked last
+time.
+
+<P>
+<H2>Exercises</H2>
+
+<P>Classify each of these problems as a pattern (<CODE>every</CODE>, <CODE>keep</CODE>, or
+<CODE>accumulate</CODE>), if possible, and then write the procedure recursively.  In
+some cases we've given an example of invoking the procedure we want you to
+write, instead of describing it.
+
+<P><B>14.1</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g25"></A>remove-once 'morning '(good morning good morning))
+(GOOD GOOD MORNING)
+</PRE>
+
+<P>(It's okay if your solution removes the other <CODE>MORNING</CODE>
+instead, as long as it removes only one of them.)
+<A NAME="remonce"></A>
+
+  
+
+<P>
+<B>14.2</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g26"></A>up 'town)
+(T TO TOW TOWN)
+</PRE>
+
+<P>
+<B>14.3</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g27"></A>remdup '(ob la di ob la da))              ;; remove duplicates
+(OB LA DI DA)
+</PRE>
+
+<P><A NAME="remdup"></A>
+(It's okay if your procedure returns <CODE>(DI OB LA DA)</CODE> instead,
+as long as it removes all but one instance of each duplicated word.)
+
+
+<P>
+<P>
+<B>14.4</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g28"></A>odds '(i lost my little girl))
+(I MY GIRL)
+</PRE><A NAME="exodds"></A>
+
+<P>
+<B>14.5</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#lettcount">8.7</A>]
+Write a procedure <CODE><A NAME="g29"></A>letter-count</CODE> that takes a sentence as its
+argument and returns the total number of letters in the sentence:
+<A NAME="lettcrec"></A>
+
+<P><PRE>&gt; (letter-count '(fixing a hole))
+11
+</PRE>
+
+<P>
+<B>14.6</B>&nbsp;&nbsp;Write <CODE>member?</CODE>.
+
+
+<P>
+<B>14.7</B>&nbsp;&nbsp;Write <CODE>differences</CODE>, which takes a sentence of numbers as its argument
+and returns a sentence containing the differences between adjacent elements.
+(The length of the returned sentence is one less than that of the argument.)
+
+<P><PRE>&gt; (<A NAME="g30"></A>differences '(4 23 9 87 6 12))
+(19 -14 78 -81 6)
+</PRE>
+
+<P>
+<B>14.8</B>&nbsp;&nbsp;Write <CODE>expand</CODE>, which takes a sentence as its argument.  It returns
+a sentence similar to the argument, except that if a number appears in
+the argument, then the return value contains that many copies of the
+following word:
+
+<P><PRE>&gt; (expand '(4 calling birds 3 french hens))
+(CALLING CALLING CALLING CALLING BIRDS FRENCH FRENCH FRENCH HENS)
+
+&gt; (expand '(the 7 samurai))
+(THE SAMURAI SAMURAI SAMURAI SAMURAI SAMURAI SAMURAI SAMURAI)
+</PRE>
+
+<P>
+<B>14.9</B>&nbsp;&nbsp;Write a procedure called <CODE><A NAME="g31"></A>location</CODE> that takes two arguments, a
+word and a sentence.  It should return a number indicating where in the
+sentence that word can be found.  If the word isn't in the sentence, return
+<CODE>#f</CODE>.  If the word appears more than once, return the location of the
+first appearance.
+
+<P><PRE>&gt; (location 'me '(you never give me your money))
+4
+</PRE>
+
+<P>
+<B>14.10</B>&nbsp;&nbsp;Write the procedure <CODE><A NAME="g32"></A>count-adjacent-duplicates</CODE> that takes a
+sentence as an argument and returns the number of words in the sentence that
+are immediately followed by the same word:
+
+<P><PRE>&gt; (count-adjacent-duplicates '(y a b b a d a b b a d o o))
+3
+
+&gt; (count-adjacent-duplicates '(yeah yeah yeah))
+2
+</PRE>
+
+<P>
+<B>14.11</B>&nbsp;&nbsp;Write the procedure <CODE><A NAME="g33"></A>remove-adjacent-duplicates</CODE> that takes a
+sentence as argument and returns the same sentence but with any word that's
+immediately followed by the same word removed:
+
+<P><PRE>&gt; (remove-adjacent-duplicates '(y a b b a d a b b a d o o))
+(Y A B A D A B A D O)
+
+&gt; (remove-adjacent-duplicates '(yeah yeah yeah))
+(YEAH)
+</PRE>
+
+<P>
+<B>14.12</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g34"></A>progressive-squares?</CODE> that takes a sentence of
+numbers as its argument.  It should return <CODE>#t</CODE> if each number (other
+than the first) is the square of the number before it:
+
+<P><PRE>&gt; (progressive-squares? '(3 9 81 6561))
+#T
+
+&gt; (progressive-squares? '(25 36 49 64))
+#F
+</PRE>
+
+<P>
+<B>14.13</B>&nbsp;&nbsp;What does the <CODE>pigl</CODE> procedure from Chapter 11 do if you invoke
+it with a word like &quot;frzzmlpt&quot; that has no vowels?  Fix it so that it
+returns &quot;frzzmlptay.&quot;
+
+
+<P>
+<B>14.14</B>&nbsp;&nbsp;Write a predicate <CODE>same-shape?</CODE> that takes two sentences as arguments.
+It should return <CODE>#t</CODE> if two conditions are met:  The two sentences must
+have the same number of words, and each word of the first sentence must have
+the same number of letters as the word in the corresponding position in the
+second sentence.
+
+<P><PRE>&gt; (same-shape? '(the fool on the hill) '(you like me too much))
+#T
+
+&gt; (same-shape? '(the fool on the hill) '(and your bird can sing))
+#F
+</PRE>
+
+
+<P>
+<P>
+<B>14.15</B>&nbsp;&nbsp;<A NAME="mergeex"></A>
+Write <CODE><A NAME="g35"></A>merge</CODE>, a procedure that takes two sentences of numbers as
+arguments.  Each sentence must consist of numbers in increasing order.  <CODE>Merge</CODE> should return a single sentence containing all of the numbers, in
+order.  (We'll use this in the next chapter as part of a sorting algorithm.)
+
+<P><PRE>&gt; (merge '(4 7 18 40 99) '(3 6 9 12 24 36 50))
+(3 4 6 7 9 12 18 24 36 40 50 99)
+</PRE>
+
+<P>
+<B>14.16</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g36"></A>syllables</CODE> that takes a word as its argument
+and returns the number of syllables in the word, counted according to the
+following rule: the number of syllables is the number of vowels, except that
+a group of consecutive vowels counts as one.  For example, in the word
+&quot;soaring,&quot; the group &quot;oa&quot; represents one syllable and the vowel &quot;i&quot;
+represents a second one.
+
+<P>Be sure to choose test cases that expose likely failures of your procedure.
+For example, what if the word ends with a vowel?  What if it ends with two
+vowels in a row?  What if it has more than two consecutive vowels?
+
+<P>(Of course this rule isn't good enough.  It doesn't deal with things like
+silent &quot;e&quot;s that don't create a syllable (&quot;like&quot;), consecutive vowels
+that don't form a diphthong (&quot;cooperate&quot;), letters like &quot;y&quot; that are
+vowels only sometimes, etc.  If you get bored, see whether you can teach the
+program to recognize some of these special cases.)  
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="recur-patterns#text1">[1]</A> That's
+because there are two kinds of people: those who think there are two kinds
+of people, and those who don't.<P>
+<A NAME="ft2" HREF="recur-patterns#text2">[2]</A> If
+you've read Chapter 8, you know that you could implement <CODE>square-sent</CODE> and <CODE>pigl-sent</CODE> without recursion, using the <CODE>every</CODE>
+higher order function.  But try using <CODE>every</CODE> to implement <CODE>letter-pairs</CODE>; you'll find that you can't quite make it work.<P>
+<A NAME="ft3" HREF="recur-patterns#text3">[3]</A> Of course, if your version of
+Scheme has &minus;&infin;, you can use it as the
+return value for an empty sentence, instead of changing the pattern.<P>
+<A NAME="ft4" HREF="recur-patterns#text4">[4]</A> Here's the higher-order function version, from Chapter 8:
+
+<P><PRE>(define (add-numbers sent)
+  (accumulate + (keep number? sent)))
+</PRE>
+
+<P>The higher-order function version is more self-documenting and easier to
+write.  The recursive version, however, is slightly more efficient, because
+it avoids building up a sentence as an intermediate value only to discard it
+in the final result.  If we were writing this program for our own use, we'd
+probably choose the higher-order function version; but if we were dealing
+with sentences of length 10,000 instead of length 10, we'd pay more
+attention to efficiency.<P>
+<A NAME="ft5" HREF="recur-patterns#text5">[5]</A> Dictionaries use a
+different ordering rule, in which the sentences are treated as if they were
+single words, with the spaces removed.  By the dictionary rule, &quot;a c&quot; is
+treated as if it were &quot;ac&quot; and comes after &quot;ab&quot;; by our rule, &quot;a c&quot;
+comes before &quot;ab&quot; because we compare the first words (&quot;a&quot; and &quot;ab&quot;).<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch13/convince-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="number-name.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch14/recur-patterns.html b/js/games/nluqo.github.io/~bh/ssch14/recur-patterns.html
new file mode 100644
index 0000000..10e4fc4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch14/recur-patterns.html
@@ -0,0 +1,789 @@
+<P>
+
+<A NAME="fish"></A>
+<P><CENTER><IMG SRC="../ss-pics/fish.jpg" ALT="figure: fish"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 14: Common Patterns in Recursive Procedures</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 14</H2>
+<H1>Common Patterns in Recursive Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch13/convince-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="number-name.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P><A NAME="g1"></A>
+<A NAME="g2"></A>
+
+<P>
+<P>There are two ideas about how to solve programming problems.<A NAME="text1" HREF="recur-patterns.html#ft1">[1]</A> One idea is that programmers work mostly by
+recognizing categories of problems that come up repeatedly and remembering
+the solution that worked last time; therefore, programming students should
+learn a lot of program <EM>patterns,</EM> or <EM>templates,</EM> and fill
+in the blanks for each specific problem.  Another idea is that there are a
+few powerful principles in programming, and that if a learner understands
+the principles, they can be applied to <EM>any</EM> problem, even one that
+doesn't fit a familiar pattern.
+
+<P>Research suggests that an expert programmer, like an expert at any skill,
+<EM>does</EM> work mainly by recognizing patterns.  Nevertheless, we lean
+toward the powerful-principle idea.  The expert's memory is not full of
+arbitrary patterns; it's full of <EM>meaningful</EM> patterns, because the
+expert has gone through the process of struggling to reason out how each
+procedure works and how to write new procedures.
+
+<P>Still, we think it's worth pointing out a few patterns that are so common
+that you'll have seen several examples of each before you finish this book.
+Once you learn these patterns, you can write similar procedures almost
+automatically.  But there's an irony in learning patterns:  In Scheme, once
+you've identified a pattern, you can write a general-purpose procedure that
+handles all such cases without writing individual procedures for each
+situation.  Then you don't have to use the pattern any more!
+Chapter 8 presents several general pattern-handling procedures, called <EM>higher-order</EM> procedures.  In this chapter we'll
+consider the patterns corresponding to those higher-order procedures, and
+we'll use the names of those procedures to name the patterns.
+
+<P>What's the point of learning patterns if you can use higher-order procedures
+instead?  There are at least two points.  The first, as you'll see very
+soon, is that some problems <EM>almost</EM> follow one of the patterns; in
+that case, you can't use the corresponding higher-order procedure, which
+works only for problems that <EM>exactly</EM> follow the pattern.  But you
+can use your understanding of the pattern to help with these related
+problems.  The second point is that in Chapter 19 we'll show how the
+higher-order functions are themselves implemented using these recursive
+patterns.
+
+<P>This chapter isn't an official list of all important patterns; as you gain
+programming experience, you'll certainly add more patterns to your repertoire.
+
+<P><H2>The <CODE><B>Every</B></CODE> Pattern</H2>
+
+<P>Here's a procedure to square every number in a sentence of numbers:
+
+<P><PRE>(define (square-sent sent)
+  (if (empty? sent)
+      '()
+      (se (square (first sent))
+          (square-sent (bf sent)))))
+</PRE>
+
+<P>Here's a procedure to translate every word of a sentence into Pig Latin:
+
+<P><PRE>(define (pigl-sent sent)
+  (if (empty? sent)
+      '()
+      (se (pigl (first sent))
+          (pigl-sent (bf sent)))))
+</PRE>
+
+<P>The pattern here is pretty clear.  Our recursive case will do something
+straightforward to the <CODE>first</CODE> of the sentence, such as <CODE>square</CODE>ing it
+or <CODE>pigl</CODE>ing it, and we'll combine that with the result of a recursive
+call on the <CODE>butfirst</CODE> of the sentence.
+
+<P>The <CODE>letter-pairs</CODE> procedure that we wrote in Chapter 11 is
+an example of a procedure that follows the <CODE>every</CODE> pattern pretty
+closely, but not exactly.  The difference is that <CODE>letter-pairs</CODE> looks
+at its argument sentence two words at a time.
+
+<P><PRE>(define (<A NAME="g3"></A>letter-pairs wd)
+  (if (= (count wd) 1)
+      '()
+      (se (word (first wd) (first (bf wd)))
+          (letter-pairs (bf wd)))))
+</PRE>
+
+<P>Compare this with the earlier definition of <CODE>square-sent</CODE>.  The recursive case still uses <CODE>se</CODE> to combine one
+part of the result with a recursive call based on the <CODE>butfirst</CODE> of
+the argument, but here both the first letter and the second letter of the
+argument contribute to the first word of the result.  That's why the base
+case also has to be different; the recursive case requires at least two
+letters, so the base case is a one-letter word.<A NAME="text2" HREF="recur-patterns.html#ft2">[2]</A>
+
+<P>Let's solve a slightly different problem.  This time, we want to break the
+word down into <EM>non-overlapping</EM> pairs of letters, like this:
+
+<P><PRE>&gt; (disjoint-pairs 'tripoli)                  ;; the new problem
+(TR IP OL I)
+
+&gt; (letter-pairs 'tripoli)                    ;; compare the old one
+(TR RI IP PO OL LI)
+</PRE>
+
+<P>The main difference between these two functions is that in <CODE>disjoint-pairs</CODE> we eliminate two letters at once in the recursive call.  A
+second difference is that we have to deal with the special case of
+odd-length words.
+
+<P><PRE>(define (<A NAME="g4"></A>disjoint-pairs wd)
+  (cond ((empty? wd) '())
+	((= (count wd) 1) (se wd))
+	(else (se (word (first wd) (first (bf wd)))
+		  (disjoint-pairs (bf (bf wd)))))))
+</PRE>
+
+<P><H2>The <CODE><B>Keep</B></CODE> Pattern</H2>
+
+<P>In the <CODE>every</CODE> pattern, we collect the results of transforming each
+element of a word or sentence into something else.  This time we'll consider
+a different kind of problem: choosing some of the elements and forgetting
+about the others.  First, here is a procedure to select the three-letter
+words from a sentence:
+
+<P>
+<PRE>(define (keep-three-letter-words sent)
+  (cond ((empty? sent) '())
+        ((= (count (first sent)) 3)
+         (se (first sent) (keep-three-letter-words (bf sent))))
+        (else (keep-three-letter-words (bf sent)))))
+
+&gt; (keep-three-letter-words '(one two three four five six seven))
+(ONE TWO SIX)
+</PRE>
+
+<P> 
+Next, here is a procedure to select the vowels from a word:
+
+<P><PRE>(define (keep-vowels wd)
+  (cond ((empty? wd) &quot;&quot;)
+        ((vowel? (first wd))
+         (word (first wd) (keep-vowels (bf wd))))
+        (else (keep-vowels (bf wd)))))
+
+&gt; (keep-vowels 'napoleon)
+AOEO
+</PRE>
+
+<P>Let's look at the differences between the <CODE>every</CODE> pattern and the
+<A NAME="g5"></A><A NAME="g6"></A> pattern.  First of all, the <CODE>keep</CODE> procedures have three
+possible outcomes, instead of just two as in most <CODE>every</CODE>-like
+procedures.  In the <CODE>every</CODE> pattern, we only have to distinguish between
+the base case and the recursive case.  In the <CODE>keep</CODE> pattern, there is
+still a base case, but there are <EM>two</EM> recursive cases; we have to
+decide whether or not to keep the first available element in the return
+value.  When we do keep an element, we keep the element itself, not some
+function of the element.
+
+<P>As with the <CODE>every</CODE> pattern, there are situations that follow the <CODE>keep</CODE> pattern only approximately.  Suppose we want to look for doubled
+letters within a word:
+
+<P>
+<PRE>&gt; (doubles 'bookkeeper)
+OOKKEE
+
+&gt; (doubles 'mississippi)
+SSSSPP
+</PRE>
+
+<P>This isn't a pure <CODE>keep</CODE> pattern example because we can't
+decide whether to keep the first letter by looking at that letter alone; we
+have to examine two at a time.  But we can write a procedure using more or
+less the same pattern:
+
+<P><PRE>(define (<A NAME="g7"></A>doubles wd)
+  (cond ((= (count wd) 1) &quot;&quot;)
+        ((equal? (first wd) (first (bf wd)))
+         (word (first wd) (first (bf wd)) (doubles (bf (bf wd)))))
+        (else (doubles (bf wd)))))
+</PRE>
+
+<P>As in the <CODE>evens</CODE> example of Chapter 12, the base case of
+<CODE>doubles</CODE> is unusual, and one of the recursive calls chops off two
+letters at once in forming the smaller subproblem.  But the structure of the
+<CODE>cond</CODE> with a base case clause, a clause for keeping letters, and a
+clause for rejecting letters is maintained.
+
+<P><H2>The <CODE><B>Accumulate</B></CODE> Pattern</H2>
+
+<P>Here are two recursive procedures for functions that combine all of the
+elements of the argument into a single result:
+
+<P><PRE>(define (<A NAME="g8"></A>addup nums)
+  (if (empty? nums)
+      0
+      (+ (first nums) (addup (bf nums)))))
+
+(define (<A NAME="g9"></A>scrunch-words sent)
+  (if (empty? sent)
+      &quot;"
+      (word (first sent) (scrunch-words (bf sent)))))
+
+&gt; (addup '(8 3 6 1 10))
+28
+
+&gt; (scrunch-words '(ack now ledge able))
+ACKNOWLEDGEABLE
+</PRE>
+
+<P>What's the pattern?  We're using some combiner (<CODE>+</CODE> or <CODE>word</CODE>) to connect the word we're up to with the result of the recursive
+call.  The base case tests for an empty argument, but the base case return
+value must be the identity element of the combiner function.
+
+<P>If there is no identity element for the combiner, as in the case of <CODE>max</CODE>, we modify the pattern slightly:<A NAME="text3" HREF="recur-patterns.html#ft3">[3]</A>
+
+<P><PRE>(define (<A NAME="g10"></A>sent-max sent)
+  (if (= (count sent) 1)
+      (first sent)
+      (max (first sent)
+	   (sent-max (bf sent)))))
+</PRE>      
+
+<P><H2>Combining Patterns</H2>
+
+<P><PRE>(define (<A NAME="g11"></A>add-numbers sent)
+  (cond ((empty? sent) 0)
+	((number? (first sent))
+	 (+ (first sent) (add-numbers (bf sent))))
+	(else (add-numbers (bf sent)))))
+
+&gt; (add-numbers '(if 6 were 9))
+15
+</PRE>
+
+<P>This procedure combines aspects of <CODE>keep</CODE> with aspects of <CODE>accumulate</CODE>.  We want to do two things at once: get rid of the words that
+aren't numbers and compute the <EM>sum</EM> of those that are numbers.  (A
+simple <CODE>keep</CODE> would construct a sentence of them.)  <CODE>Add-numbers</CODE>
+looks exactly like the <CODE>keep</CODE> pattern, except that there's a funny
+combiner and a funny base case, which look more like <CODE>accumulate</CODE>.<A NAME="text4" HREF="recur-patterns.html#ft4">[4]</A>
+
+<P> 
+Here's an example that combines <CODE>every</CODE> and <CODE>keep</CODE>.  We want a
+procedure that takes a sentence as its argument and translates every word of
+the sentence into Pig Latin, but leaves out words that have no vowels,
+because the Pig Latin translator doesn't work for such words.  The procedure
+<CODE>safe-pigl</CODE> will be like a <CODE>keep</CODE> pattern in that it keeps only
+words that contain vowels, but like an <CODE>every</CODE> in that the result
+contains transformed versions of the selected words, rather than the words
+themselves.
+
+<P><PRE>(define (<A NAME="g12"></A>safe-pigl sent)
+  (cond ((empty? sent) '())
+	((has-vowel? (first sent))
+	 (se (pigl (first sent)) (safe-pigl (bf sent))))
+	(else (safe-pigl (bf sent)))))
+
+(define (<A NAME="g13"></A>has-vowel? wd)
+  (not (empty? (keep-vowels wd))))
+
+&gt; (safe-pigl '(my pet fly is named xyzzy))
+(ETPAY ISAY AMEDNAY)
+</PRE>
+
+<P>
+Finally, here's an example that combines all three patterns.  In Chapter
+1 we wrote (using higher-order procedures) the <CODE>acronym</CODE>
+procedure, which selects the &quot;real&quot; words of a sentence (the <CODE>keep</CODE>
+pattern), takes the first letter of each word (the <CODE>every</CODE> pattern), and
+combines these initial letters into a single word (the <CODE>accumulate</CODE>
+pattern).  In a recursive procedure we can carry out all three steps at once:
+
+<P><PRE>(define (<A NAME="g14"></A>acronym sent)
+  (cond ((empty? sent) &quot;&quot;)
+	((real-word? (first sent))
+	 (word (first (first sent))
+	       (acronym (bf sent))))
+	(else (acronym (bf sent)))))
+</PRE>
+
+<P>Don't become obsessed with trying to make every recursive problem fit one of
+the three patterns we've shown here.  As we said at the beginning of the
+chapter, what's most important is that you understand the principles of
+recursion in general, and understand how versatile recursion is.  The
+patterns are just special cases that happen to come up fairly often.
+
+<P><H2>Helper Procedures</H2>
+
+<P>Let's say we want a procedure <CODE>every-nth</CODE> that takes a number <EM>n</EM> and a
+sentence as arguments and selects every <EM>n</EM>th word from the sentence.
+
+<P><PRE>&gt; (every-nth 3 '(with a little help from my friends))
+(LITTLE MY)
+</PRE>
+
+<P>We get in trouble if we try to write this in the obvious way, as a sort of
+<CODE>keep</CODE> pattern.
+
+<P><PRE>(define (every-nth n sent)                   ;; wrong!
+  (cond ((empty? sent) '())
+        ((= n 1)
+         (se (first sent) (every-nth <STRONG><BIG>n</BIG></STRONG> (bf sent))))
+        (else (every-nth (- n 1) (bf sent)))))
+</PRE>
+
+<P>The problem is with the <CODE><B>n</B></CODE> that's in boldface.
+We're thinking that it's going to be the <CODE>n</CODE> of the <EM>original</EM>
+invocation of <CODE>every-nth</CODE>, that is, 3.  But in fact, we've already counted
+<CODE>n</CODE> down so that in this invocation its value is 1.  (Check out the first
+half of the same <CODE>cond</CODE> clause.)  This procedure will correctly skip the
+first two words but will keep all the words after that point.  That's
+because we're trying to remember two different numbers: the number we
+should always skip between kept words, and the number of words we still need
+to skip this time.
+
+<P> 
+If we're trying to remember two numbers, we need two names for them.  The
+way to achieve this is to have our official <CODE>every-nth</CODE> procedure call a
+<A NAME="g15"></A><A NAME="g16"></A>helper procedure that takes an extra argument and does the real work:
+
+<P><PRE>(define (<A NAME="g17"></A>every-nth n sent)
+  (every-nth-helper n n sent))
+
+(define (<A NAME="g18"></A>every-nth-helper interval remaining sent)
+  (cond ((empty? sent) '())
+        ((= remaining 1)
+         (se (first sent)
+             (every-nth-helper interval interval (bf sent))))
+        (else (every-nth-helper interval (- remaining 1) (bf sent)))))
+</PRE>
+
+<P>This procedure always calls itself recursively with the same value
+of <CODE>interval</CODE>, but with a different value of <CODE>remaining</CODE> each time.
+<CODE>Remaining</CODE> keeps getting smaller by one in each recursive call until it
+equals 1.  On that call, a word is kept for the return value, and we call
+<CODE>every-nth-helper</CODE> recursively with the value of <CODE>interval</CODE>, that is,
+the <EM>original</EM> value of <CODE>n</CODE>, as the new <CODE>remaining</CODE>.
+If you like, you can think of this combination of an <EM>initialization</EM>
+<A NAME="g19"></A>
+<A NAME="g20"></A>
+procedure and a <EM>helper</EM> procedure as another pattern for your
+collection.
+
+<P>
+<P><H2>How to Use Recursive Patterns</H2>
+
+<P>One way in which recursive patterns can be useful is if you think of them as
+templates with empty slots to fill in for a particular problem.  Here are
+template versions of the <CODE>every</CODE>, <CODE>keep</CODE>, and <CODE>accumulate</CODE>
+patterns as applied to sentences:
+
+<P><PRE>(define (<B>every-something</B> sent)
+  (if (empty? sent)
+      '()
+      (se (______ (first sent))
+	  (<B>every-something</B> (bf sent)))))
+
+(define (<B>keep-if-something</B> sent)
+  (cond ((empty? sent) '())
+	((______<STRONG><BIG>?</BIG></STRONG> (first sent))
+	 (se (first sent) (<B>keep-if-something</B> (bf sent))))
+	(else (<B>keep-if-something</B> (bf sent)))))
+</PRE>
+
+<P>
+<A NAME="keeptemplate"></A>
+<PRE>(define (<B>accumulate-somehow</B> sent)
+  (if (empty? sent)
+      ______
+      (______ (first sent)
+              (<B>accumulate-somehow</B> (bf sent)))))
+</PRE>
+
+<P>Suppose you're trying to write a procedure <CODE>first-number</CODE> that takes a
+sentence as its argument and returns the first number in that sentence, but
+returns the word <CODE>no-number</CODE> if there are no numbers in the argument.
+The first step is to make a guess about which pattern will be most useful.
+In this case the program should start with an entire sentence and select a
+portion of that sentence, namely one word.  Therefore, we start with the
+<CODE>keep</CODE> pattern.
+
+<P><PRE>(define (first-number sent)                  ;; first guess
+  (cond ((empty? sent) '())
+	((______ (first sent))
+	 (se (first sent) (first-number (bf sent))))
+	(else (first-number (bf sent)))))
+</PRE>
+
+<P>The next step is to fill in the blank.  Obviously, since we're looking for a
+number, <CODE>number?</CODE> goes in the blank.
+
+<P>The trouble is that this procedure returns <EM>all</EM> the numbers in the
+given sentence.  Now our job is to see how the pattern must be modified to
+do what we want.  The overall structure of the pattern is a <CODE>cond</CODE> with three clauses; we'll consider each clause separately.
+
+<P>What should the procedure return if <CODE>sent</CODE> is empty?  In that case,
+there is no first number in the sentence, so it should return <CODE>no-number</CODE>:
+
+<P><PRE>((empty? sent) <B>'no-number</B>)
+</PRE>
+
+<P>What if the first word of the sentence is a number?  The program should
+return just that number, ignoring the rest of the sentence:
+
+<P><PRE>((number? (first sent)) <B>(first sent)</B>)
+</PRE>
+
+<P>What if the first word of the sentence isn't a number?  The procedure must
+make a recursive call for the <CODE>butfirst</CODE>, and whatever that recursive
+call returns is the answer.  So the <CODE>else</CODE> clause does not have to be
+changed.
+
+<P>Here's the whole procedure:
+
+<P><PRE>(define (<A NAME="g21"></A>first-number sent)
+  (cond ((empty? sent) 'no-number)
+	((number? (first sent)) (first sent))
+	(else (first-number (bf sent)))))
+</PRE>
+
+<P>After filling in the blank in the <CODE>keep</CODE> pattern, we solved this problem
+by focusing on the details of the procedure definition.  We examined each
+piece of the definition to decide what changes were necessary.  Instead, we
+could have focused on the <EM>behavior</EM> of the procedure.  We would have
+found two ways in which the program didn't do what it was supposed to do:
+For an argument sentence containing numbers, it would return all of the
+numbers instead of just one of them.  For a sentence without numbers, it
+would return the empty sentence instead of <CODE>no-number</CODE>.  We would then
+have finished the job by <EM>debugging</EM> the procedure to fix each of these
+problems.  The final result would have been the same.
+
+<P> 
+<H2>Problems That Don't Follow Patterns</H2>
+
+<P>We want to write the procedure <CODE>sent-before?</CODE>, which takes two sentences
+as arguments and returns <CODE>#t</CODE> if the first comes alphabetically before
+the second.  The general idea is to compare the sentences word by word.  If
+the first words are different, then whichever is alphabetically earlier
+determines which sentence comes before the other.  If the first words are
+equal, we go on to compare the second words.<A NAME="text5" HREF="recur-patterns.html#ft5">[5]</A>
+
+<P><PRE>&gt; (sent-before? '(hold me tight) '(sun king))
+#T
+
+&gt; (sent-before? '(lovely rita) '(love you to))
+#F
+
+&gt; (sent-before? '(strawberry fields forever)
+		'(strawberry fields usually))
+#T
+</PRE>
+
+<P>Does this problem follow any of the patterns we've seen?  It's not an <CODE>every</CODE>, because the result isn't a sentence in which each word is a
+transformed version of a word in the arguments.  It's not a <CODE>keep</CODE>,
+because the result isn't a subset of the words in the arguments.  And it's
+not exactly an <CODE>accumulate</CODE>.  We do end up with a single true or
+false result, rather than a sentence full of results.  But in a typical <CODE>accumulate</CODE> problem, every word of the argument contributes to the solution.
+In this case only one word from each sentence determines the overall result.
+
+<P>On the other hand, this problem does have something in common with the <CODE>keep</CODE> pattern:  We know that on each invocation there will be three
+possibilities.  We might reach a base case (an empty sentence); if not, the
+first words of the argument sentences might or might not be relevant to the
+solution.
+
+<P>We'll have a structure similar to the usual <CODE>keep</CODE> pattern, except that
+there's no <CODE>se</CODE> involved; if we find unequal words, the problem is
+solved without further recursion.  Also, we have two arguments, and either
+of them might be empty.
+
+<P><PRE>(define (<A NAME="g22"></A>sent-before? sent1 sent2)
+  (cond ((empty? sent1) #t)
+	((empty? sent2) #f)
+	((before? (first sent1) (first sent2)) #t)
+	((before? (first sent2) (first sent1)) #f)
+	(else (sent-before? (bf sent1) (bf sent2)))))
+</PRE>
+
+<P>Although thinking about the <CODE>keep</CODE> pattern helped us to work
+out this solution, the result really doesn't look much like a <CODE>keep</CODE>.
+We had to invent most of the details by thinking about this particular
+problem, not by thinking about the pattern.
+
+<P>In the next chapter we'll look at examples of recursive procedures that are
+quite different from any of these patterns.  Remember, the patterns are a
+shortcut for many common problems, but don't learn the shortcut at the
+expense of the general technique.
+
+<P><H2>Pitfalls</H2>
+
+<P>Review the pitfalls from Chapter 12; they're still relevant.
+
+<P>
+<P>How do you test for the base case?  Most of the examples in this
+chapter have used <CODE>empty?</CODE>, and it's easy to fall into the habit of
+using that test without thinking.  But, for example, if the argument is a
+number, that's probably the wrong test.  Even when the argument is a
+sentence or a non-numeric word, it may not be empty in the base case, as in
+the Pig Latin example.  
+
+<P>
+A serious pitfall is failing to recognize a situation in which you need
+an extra variable and therefore need a helper procedure.  If at
+each step you need the entire original argument as well as the argument
+that's getting closer to the base case, you probably need a helper
+procedure.  For example, write a procedure <CODE>pairs</CODE> that takes a word as
+argument and returns a sentence of all possible two-letter words made of
+letters from the argument word, allowing duplicates, like this:
+
+<P><PRE>&gt; (pairs 'toy)
+(TT TO TY OT OO OY YT YO YY)
+</PRE>
+
+<P>
+
+<P>A simple pitfall, when using a helper procedure, is to write a recursive
+call in the helper that calls the main procedure instead of calling the
+helper.  (For example, what would have happened if we'd had <CODE>every-nth-helper</CODE> invoke <CODE>every-nth</CODE> instead of invoking itself?)
+
+<P>Some recursive procedures with more than one argument require more than
+one base case.  But some don't.  One pitfall is to leave out a necessary
+base case; another is to include something that looks like a base case but
+doesn't fit the structure of the program.
+
+<P>For example, the reason <CODE>sent-before?</CODE> needs two base cases is that on
+each recursive call, both <CODE>sent1</CODE> and <CODE>sent2</CODE> get smaller.  Either
+sentence might run out first, and the procedure should return different values
+in those two cases.
+
+<P>On the other hand, Exercise <A HREF="../ssch11/recursion.html#copies">11.7</A> asked you to write a procedure that has
+two arguments but needs only one base case:
+
+<P><PRE>(define (<A NAME="g23"></A>copies num wd)
+  (if (= num 0)
+      '()
+      (se wd (copies (- num 1) wd))))
+</PRE>
+
+<P>In this example, the <CODE>wd</CODE> argument <EM>doesn't</EM> get smaller
+from one invocation to the next.  It would be silly to test for <CODE>(empty? wd)</CODE>.
+
+<P>A noteworthy intermediate case is <CODE><A NAME="g24"></A>every-nth-helper</CODE>.  It does
+have two <CODE>cond</CODE> clauses that check for two different arguments reaching
+their smallest allowable values, but the <CODE>remaining</CODE> clause isn't a base
+case.  If <CODE>remaining</CODE> has the value 1, the procedure still invokes itself
+recursively.
+
+<P>The only general principle we can offer is that you have to think about what
+base cases are appropriate, not just routinely copy whatever worked last
+time.
+
+<P>
+<H2>Exercises</H2>
+
+<P>Classify each of these problems as a pattern (<CODE>every</CODE>, <CODE>keep</CODE>, or
+<CODE>accumulate</CODE>), if possible, and then write the procedure recursively.  In
+some cases we've given an example of invoking the procedure we want you to
+write, instead of describing it.
+
+<P><B>14.1</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g25"></A>remove-once 'morning '(good morning good morning))
+(GOOD GOOD MORNING)
+</PRE>
+
+<P>(It's okay if your solution removes the other <CODE>MORNING</CODE>
+instead, as long as it removes only one of them.)
+<A NAME="remonce"></A>
+
+  
+
+<P>
+<B>14.2</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g26"></A>up 'town)
+(T TO TOW TOWN)
+</PRE>
+
+<P>
+<B>14.3</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g27"></A>remdup '(ob la di ob la da))              ;; remove duplicates
+(OB LA DI DA)
+</PRE>
+
+<P><A NAME="remdup"></A>
+(It's okay if your procedure returns <CODE>(DI OB LA DA)</CODE> instead,
+as long as it removes all but one instance of each duplicated word.)
+
+
+<P>
+<P>
+<B>14.4</B>&nbsp;&nbsp;<PRE>&gt; (<A NAME="g28"></A>odds '(i lost my little girl))
+(I MY GIRL)
+</PRE><A NAME="exodds"></A>
+
+<P>
+<B>14.5</B>&nbsp;&nbsp;[<A HREF="../ssch8/higher.html#lettcount">8.7</A>]
+Write a procedure <CODE><A NAME="g29"></A>letter-count</CODE> that takes a sentence as its
+argument and returns the total number of letters in the sentence:
+<A NAME="lettcrec"></A>
+
+<P><PRE>&gt; (letter-count '(fixing a hole))
+11
+</PRE>
+
+<P>
+<B>14.6</B>&nbsp;&nbsp;Write <CODE>member?</CODE>.
+
+
+<P>
+<B>14.7</B>&nbsp;&nbsp;Write <CODE>differences</CODE>, which takes a sentence of numbers as its argument
+and returns a sentence containing the differences between adjacent elements.
+(The length of the returned sentence is one less than that of the argument.)
+
+<P><PRE>&gt; (<A NAME="g30"></A>differences '(4 23 9 87 6 12))
+(19 -14 78 -81 6)
+</PRE>
+
+<P>
+<B>14.8</B>&nbsp;&nbsp;Write <CODE>expand</CODE>, which takes a sentence as its argument.  It returns
+a sentence similar to the argument, except that if a number appears in
+the argument, then the return value contains that many copies of the
+following word:
+
+<P><PRE>&gt; (expand '(4 calling birds 3 french hens))
+(CALLING CALLING CALLING CALLING BIRDS FRENCH FRENCH FRENCH HENS)
+
+&gt; (expand '(the 7 samurai))
+(THE SAMURAI SAMURAI SAMURAI SAMURAI SAMURAI SAMURAI SAMURAI)
+</PRE>
+
+<P>
+<B>14.9</B>&nbsp;&nbsp;Write a procedure called <CODE><A NAME="g31"></A>location</CODE> that takes two arguments, a
+word and a sentence.  It should return a number indicating where in the
+sentence that word can be found.  If the word isn't in the sentence, return
+<CODE>#f</CODE>.  If the word appears more than once, return the location of the
+first appearance.
+
+<P><PRE>&gt; (location 'me '(you never give me your money))
+4
+</PRE>
+
+<P>
+<B>14.10</B>&nbsp;&nbsp;Write the procedure <CODE><A NAME="g32"></A>count-adjacent-duplicates</CODE> that takes a
+sentence as an argument and returns the number of words in the sentence that
+are immediately followed by the same word:
+
+<P><PRE>&gt; (count-adjacent-duplicates '(y a b b a d a b b a d o o))
+3
+
+&gt; (count-adjacent-duplicates '(yeah yeah yeah))
+2
+</PRE>
+
+<P>
+<B>14.11</B>&nbsp;&nbsp;Write the procedure <CODE><A NAME="g33"></A>remove-adjacent-duplicates</CODE> that takes a
+sentence as argument and returns the same sentence but with any word that's
+immediately followed by the same word removed:
+
+<P><PRE>&gt; (remove-adjacent-duplicates '(y a b b a d a b b a d o o))
+(Y A B A D A B A D O)
+
+&gt; (remove-adjacent-duplicates '(yeah yeah yeah))
+(YEAH)
+</PRE>
+
+<P>
+<B>14.12</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g34"></A>progressive-squares?</CODE> that takes a sentence of
+numbers as its argument.  It should return <CODE>#t</CODE> if each number (other
+than the first) is the square of the number before it:
+
+<P><PRE>&gt; (progressive-squares? '(3 9 81 6561))
+#T
+
+&gt; (progressive-squares? '(25 36 49 64))
+#F
+</PRE>
+
+<P>
+<B>14.13</B>&nbsp;&nbsp;What does the <CODE>pigl</CODE> procedure from Chapter 11 do if you invoke
+it with a word like &quot;frzzmlpt&quot; that has no vowels?  Fix it so that it
+returns &quot;frzzmlptay.&quot;
+
+
+<P>
+<B>14.14</B>&nbsp;&nbsp;Write a predicate <CODE>same-shape?</CODE> that takes two sentences as arguments.
+It should return <CODE>#t</CODE> if two conditions are met:  The two sentences must
+have the same number of words, and each word of the first sentence must have
+the same number of letters as the word in the corresponding position in the
+second sentence.
+
+<P><PRE>&gt; (same-shape? '(the fool on the hill) '(you like me too much))
+#T
+
+&gt; (same-shape? '(the fool on the hill) '(and your bird can sing))
+#F
+</PRE>
+
+
+<P>
+<P>
+<B>14.15</B>&nbsp;&nbsp;<A NAME="mergeex"></A>
+Write <CODE><A NAME="g35"></A>merge</CODE>, a procedure that takes two sentences of numbers as
+arguments.  Each sentence must consist of numbers in increasing order.  <CODE>Merge</CODE> should return a single sentence containing all of the numbers, in
+order.  (We'll use this in the next chapter as part of a sorting algorithm.)
+
+<P><PRE>&gt; (merge '(4 7 18 40 99) '(3 6 9 12 24 36 50))
+(3 4 6 7 9 12 18 24 36 40 50 99)
+</PRE>
+
+<P>
+<B>14.16</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g36"></A>syllables</CODE> that takes a word as its argument
+and returns the number of syllables in the word, counted according to the
+following rule: the number of syllables is the number of vowels, except that
+a group of consecutive vowels counts as one.  For example, in the word
+&quot;soaring,&quot; the group &quot;oa&quot; represents one syllable and the vowel &quot;i&quot;
+represents a second one.
+
+<P>Be sure to choose test cases that expose likely failures of your procedure.
+For example, what if the word ends with a vowel?  What if it ends with two
+vowels in a row?  What if it has more than two consecutive vowels?
+
+<P>(Of course this rule isn't good enough.  It doesn't deal with things like
+silent &quot;e&quot;s that don't create a syllable (&quot;like&quot;), consecutive vowels
+that don't form a diphthong (&quot;cooperate&quot;), letters like &quot;y&quot; that are
+vowels only sometimes, etc.  If you get bored, see whether you can teach the
+program to recognize some of these special cases.)  
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="recur-patterns.html#text1">[1]</A> That's
+because there are two kinds of people: those who think there are two kinds
+of people, and those who don't.<P>
+<A NAME="ft2" HREF="recur-patterns.html#text2">[2]</A> If
+you've read Chapter 8, you know that you could implement <CODE>square-sent</CODE> and <CODE>pigl-sent</CODE> without recursion, using the <CODE>every</CODE>
+higher order function.  But try using <CODE>every</CODE> to implement <CODE>letter-pairs</CODE>; you'll find that you can't quite make it work.<P>
+<A NAME="ft3" HREF="recur-patterns.html#text3">[3]</A> Of course, if your version of
+Scheme has &minus;&infin;, you can use it as the
+return value for an empty sentence, instead of changing the pattern.<P>
+<A NAME="ft4" HREF="recur-patterns.html#text4">[4]</A> Here's the higher-order function version, from Chapter 8:
+
+<P><PRE>(define (add-numbers sent)
+  (accumulate + (keep number? sent)))
+</PRE>
+
+<P>The higher-order function version is more self-documenting and easier to
+write.  The recursive version, however, is slightly more efficient, because
+it avoids building up a sentence as an intermediate value only to discard it
+in the final result.  If we were writing this program for our own use, we'd
+probably choose the higher-order function version; but if we were dealing
+with sentences of length 10,000 instead of length 10, we'd pay more
+attention to efficiency.<P>
+<A NAME="ft5" HREF="recur-patterns.html#text5">[5]</A> Dictionaries use a
+different ordering rule, in which the sentences are treated as if they were
+single words, with the spaces removed.  By the dictionary rule, &quot;a c&quot; is
+treated as if it were &quot;ac&quot; and comes after &quot;ab&quot;; by our rule, &quot;a c&quot;
+comes before &quot;ab&quot; because we compare the first words (&quot;a&quot; and &quot;ab&quot;).<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch13/convince-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="number-name.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch15/adv-recur b/js/games/nluqo.github.io/~bh/ssch15/adv-recur
new file mode 100644
index 0000000..d6444e3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch15/adv-recur
@@ -0,0 +1,553 @@
+<P>
+<A NAME="fractal"></A>
+<P><CENTER><IMG SRC="../ss-pics/fractal.jpg" ALT="figure: fractal"></CENTER><P><CENTER>Zoom in on some parts of a fractal and you'll see a miniature version
+of the whole thing.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 15: Advanced Recursion</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 15</H2>
+<H1>Advanced Recursion</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch15.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch14/number-name.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="poker.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>By now you've had a good deal of experience with straightforward recursive
+problems, and we hope you feel comfortable with them.  In this chapter, we
+present some more challenging problems.  But the same leap of faith method
+that we used for easier problems is still our basic approach.
+
+<P><H2>Example: <CODE>Sort</CODE></H2>
+
+<P>First we'll consider the example of sorting a sentence.  The argument
+will be any sentence; our procedure will return a sentence with the same
+words in alphabetical order.
+
+<P><PRE>&gt; (sort '(i wanna be your man))
+(BE I MAN WANNA YOUR)
+</PRE>
+
+<P>We'll use the <CODE>before?</CODE> primitive to decide if one word comes before
+another word alphabetically:
+
+<P><PRE>&gt; (before? 'starr 'best)
+#F
+</PRE>
+
+<P>How are we going to think about this problem recursively?  Suppose that
+we're given a sentence to sort.  A relatively easy subproblem is to find the
+word that ought to come first in the sorted sentence; we'll write <CODE>earliest-word</CODE> later to do this.
+
+<P>Once we've found that word, we just need to put it in front of the sorted
+version of the rest of the sentence.  This is our leap of faith:
+We're going to assume that we can already sort this smaller sentence.
+The algorithm we've described is called <EM>selection</EM> sort.
+
+<P>
+Another subproblem is to find the &quot;rest of the sentence&quot;&mdash;all the words
+except for the earliest.  But in Exercise <A HREF="../ssch14/recur-patterns.html#remonce">14.1</A> you wrote a function
+<CODE>remove-once</CODE> that takes a word and a sentence and returns the sentence
+with that word removed.  (We don't want to use <CODE>remove</CODE>, which removes
+all copies of the word, because our argument sentence might include the same
+word twice.)
+
+<P>Let's say in Scheme what we've figured out so far:
+
+<P><PRE>(define (sort sent)                          ;; unfinished
+  (se (earliest-word sent)
+      (sort (remove-once (earliest-word sent) sent))))
+</PRE>
+
+<P>We need to add a base case.  The smallest sentence is <CODE>()</CODE>,
+which is already sorted.
+
+<P><PRE>(define (<A NAME="g1"></A>sort sent)
+  (if (empty? sent)
+      '()
+      (se (earliest-word sent)
+	  (sort (remove-once (earliest-word sent) sent)))))
+</PRE>
+
+<P>We have one unfinished task: finding the earliest word of the argument.
+
+<P><PRE>(define (<A NAME="g2"></A>earliest-word sent)
+  (earliest-helper (first sent) (bf sent)))
+
+(define (earliest-helper so-far rest)
+  (cond ((empty? rest) so-far)
+	((before? so-far (first rest))
+	 (earliest-helper so-far (bf rest)))
+	(else (earliest-helper (first rest) (bf rest)))))<A NAME="text1" HREF="adv-recur#ft1">[1]</A></PRE>
+
+<P>
+
+<P>For your convenience, here's <CODE>remove-once</CODE>:
+<PRE>(define (<A NAME="g3"></A>remove-once wd sent)
+  (cond ((empty? sent) '())
+	((equal? wd (first sent)) (bf sent))
+	(else (se (first sent) (remove-once wd (bf sent))))))
+</PRE>
+
+<P> 
+<H2>Example: <CODE>From-Binary</CODE></H2>
+
+<P>
+
+<P>We want to take a word of ones and zeros, representing a
+<A NAME="g4"></A><A NAME="g5"></A>binary number, and compute the numeric value that it represents.
+Each binary digit (or <EM>bit</EM>) corresponds to a power of two, just as
+ordinary decimal digits represent powers of ten.  So the binary number 1101
+represents (1&times;8)+(1&times;4)+(0&times;2)+(1&times;1)&nbsp;=&nbsp;13.  We want to be able to say
+
+<P><PRE>&gt; (from-binary 1101)
+13
+
+&gt; (from-binary 111)
+7
+</PRE>
+
+
+<P>Where is the smaller, similar subproblem?  Probably the most obvious thing
+to try is our usual trick of dividing the argument into its <CODE>first</CODE> and
+its <CODE>butfirst</CODE>.  Suppose we divide the binary number <CODE>1101</CODE> that
+way.  We make the leap of faith by assuming that we can translate the
+butfirst, <CODE>101</CODE>, into its binary value 5.  What do we have to add for
+the leftmost <CODE>1</CODE>?  It contributes 8 to the total, because it's three
+bits away from the right end of the number, so it must be multiplied by
+2<SUP><SMALL>3</SMALL></SUP>.  We could write this idea as follows:
+
+<P><PRE>(define (from-binary bits)                   ;; incomplete 
+  (+ (* (first bits) (expt 2 (count (bf bits))))
+     (from-binary (bf bits))))
+</PRE>
+
+<P>That is, we multiply the <CODE>first</CODE> bit by a power of two
+depending on the number of bits remaining, then we add that
+to the result of the recursive call.
+
+<P>As usual, we have written the algorithm for the recursive case before
+figuring out the base case.  But it's pretty easy; a number with no bits (an
+empty word) has the value zero.<A NAME="text2" HREF="adv-recur#ft2">[2]</A>
+
+<P><PRE>(define (<A NAME="g6"></A>from-binary bits)
+  (if (empty? bits)
+      0
+      (+ (* (first bits) (expt 2 (count (bf bits))))
+         (from-binary (bf bits)))))
+</PRE>
+
+<P>Although this procedure is correct, it's worth noting that a more efficient
+version can be written by dissecting the number from right to left.  As
+you'll see, we can then avoid the calls to <CODE>expt</CODE>, which are expensive
+because we have to do more multiplication than should be necessary.
+
+<P>Suppose we want to find the value of the binary number <CODE>1101</CODE>.  The <CODE>butlast</CODE> of this number, <CODE>110</CODE>, has the value six.  To get the value of
+the entire number, we double the six (because <CODE>1100</CODE> would have the value
+12, just as in ordinary decimal numbers 430 is ten times 43) and then add the
+rightmost bit to get 13.  Here's the new version:
+
+<P><PRE>(define (<A NAME="g7"></A>from-binary bits)
+  (if (empty? bits)
+      0
+      (+ (* (from-binary (bl bits)) 2)
+         (last bits))))
+</PRE>
+
+<P>This version may look a little unusual.  We usually combine the value
+returned by the recursive call with some function of the current element.
+This time, we are combining the current element itself with a function of
+the recursive return value.  You may want to trace this procedure to see how
+the intermediate return values contribute to the final result.
+
+<P><H2>Example: <CODE>Mergesort</CODE></H2>
+
+<P>Let's go back to the problem of sorting a sentence.  It turns out that
+sorting one element at a time, as in selection sort, isn't the fastest
+possible approach.  One of the fastest sorting algorithms is called <EM>mergesort,</EM> and it works like this: In order to mergesort a
+sentence, divide the sentence into two equal halves and recursively sort
+each half.  Then take the two sorted subsentences and <EM>merge</EM> them
+together, that is, create one long sorted sentence that contains all the words
+of the two halves.  The base case is that an empty sentence or a one-word
+sentence is already sorted.
+
+<P><PRE>(define (<A NAME="g8"></A>mergesort sent)
+  (if (&lt;= (count sent) 1)
+      sent
+      (merge (mergesort (one-half sent))
+             (mergesort (other-half sent)))))
+</PRE>
+
+<P>The leap of faith here is the idea that we can magically <CODE>mergesort</CODE>
+the halves of the sentence.  If you try to trace this through step by step,
+or wonder exactly what happens at what time, then this algorithm may be very
+confusing.  But if you just <EM>believe</EM> that the recursive calls will do
+exactly the right thing, then it's much easier to understand this program.
+The key point is that if the two smaller pieces have already been sorted,
+it's pretty easy to merge them while keeping the result in order.
+
+<P>We still need some helper procedures.  You wrote <CODE>merge</CODE> in Exercise
+<A HREF="../ssch14/recur-patterns.html#mergeex">14.15</A>.  It uses the following technique: Compare the first words of the
+two sentences.  Let's say the first word of the sentence on the left is
+smaller.  Then the first word of the return value is the first word of the
+sentence on the left.  The rest of the return value comes from recursively
+merging the <CODE>butfirst</CODE> of the left sentence with the entire right
+sentence.  (It's precisely the opposite of this if the first word of the
+other sentence is smaller.)  
+
+<P><PRE>(define (<A NAME="g9"></A>merge left right)
+  (cond ((empty? left) right)
+	((empty? right) left)
+	((before? (first left) (first right))
+	 (se (first left) (merge (bf left) right)))
+	(else (se (first right) (merge left (bf right))))))
+</PRE>
+
+<P>Now we have to write <CODE>one-half</CODE> and <CODE>other-half</CODE>.  One of the
+easiest ways to do this is to have <CODE>one-half</CODE> return the elements in
+odd-numbered positions, and have <CODE>other-half</CODE> return the elements in
+even-numbered positions.  These are the same as the procedures <CODE>odds</CODE>
+(from Exercise <A HREF="../ssch14/recur-patterns.html#exodds">14.4</A>) and <CODE>evens</CODE> (from Chapter 12).
+
+<P><PRE>(define (<A NAME="g10"></A>one-half sent)
+  (if (&lt;= (count sent) 1)
+      sent
+      (se (first sent) (one-half (bf (bf sent))))))
+
+(define (<A NAME="g11"></A>other-half sent)
+  (if (&lt;= (count sent) 1)
+      '()
+      (se (first (bf sent)) (other-half (bf (bf sent))))))
+</PRE>
+
+<P><H2>Example: <CODE>Subsets</CODE></H2>
+
+<P>We're now going to attack a much harder problem.  We want to know all the
+subsets of the letters of a word&mdash;that is, words that can be formed
+from the original word by crossing out some (maybe zero) of the letters.  For
+example, if we start with a short word like <CODE>rat</CODE>, the subsets are <CODE>r</CODE>, <CODE>a</CODE>, <CODE>t</CODE>, <CODE>ra</CODE>, <CODE>rt</CODE>, <CODE>at</CODE>, <CODE>rat</CODE>, and the empty
+word (<CODE>&quot;&quot;</CODE>).  As the word gets longer, the number of subsets gets bigger
+very quickly.<A NAME="text3" HREF="adv-recur#ft3">[3]</A>
+
+<P>As with many problems about words, we'll try assuming that we can find the
+subsets of the <CODE>butfirst</CODE> of our word.  In other words, we're hoping to
+find a solution that will include an expression like
+
+<P><PRE>(subsets (bf wd))
+</PRE>
+
+<P>Let's actually take a four-letter word and look at its subsets.  We'll pick
+<CODE>brat</CODE>, because we already know the subsets of its <CODE>butfirst</CODE>.  Here
+are the subsets of <CODE>brat</CODE>:
+
+<P><PRE>&quot;&quot; b r a t br ba bt ra rt at bra brt bat rat brat
+</PRE>
+
+<P>You might notice that many of these subsets are also subsets of <CODE>rat</CODE>.
+In fact, if you think about it, <EM>all</EM> of the subsets of <CODE>rat</CODE> are
+also subsets of <CODE>brat</CODE>.  So the words in <CODE>(subsets 'rat)</CODE> are some
+of the words we need for <CODE>(subsets 'brat)</CODE>.
+
+<P>Let's separate those out and look at the ones left over:
+
+<P><TABLE><TR><TD><CODE>rat</CODE> subsets:
+<TD>&nbsp;&nbsp;<CODE>""<TD>&nbsp;<CODE>r</CODE>
+<TD>&nbsp;<CODE>a</CODE><TD>&nbsp;<CODE>t</CODE>
+<TD>&nbsp;<CODE>ra</CODE><TD>&nbsp;<CODE>rt</CODE>
+<TD>&nbsp;<CODE>at</CODE><TD>&nbsp;<CODE></CODE><TD>&nbsp;<CODE>rat</CODE>
+<TR><TD>others:
+<TD>&nbsp;&nbsp;<CODE>b</CODE><TD>&nbsp;<CODE>br</CODE>
+<TD>&nbsp;<CODE>ba</CODE><TD>&nbsp;<CODE>bt</CODE>
+<TD>&nbsp;<CODE>bra</CODE><TD>&nbsp;<CODE>brt</CODE>
+<TD>&nbsp;<CODE>bat</CODE><TD>&nbsp;<CODE></CODE><TD>&nbsp;<CODE>brat</CODE>
+</TABLE>
+
+
+<P><P>
+Right about now you're probably thinking, &quot;They've pulled a rabbit out of a
+hat, the way my math teacher always does.&quot; The words that aren't subsets of
+<CODE>rat</CODE> all start with <CODE>b</CODE>, followed by something that <EM>is</EM> a
+subset of <CODE>rat</CODE>.  You may be thinking that you never would have thought
+of that yourself.  But we're just following the method:  Look at the smaller
+case and see how it fits into the original problem.  It's not so different
+from what happened with <CODE>downup</CODE>.
+
+<P>Now all we have to do is figure out how to say in Scheme, &quot;Put a <CODE>b</CODE>
+in front of every word in this sentence.&quot;  This is a straightforward
+example of the <CODE>every</CODE> pattern:
+
+<P><PRE>(define (<A NAME="g12"></A>prepend-every letter sent)
+  (if (empty? sent)
+      '()
+      (se (word letter (first sent))
+	  (prepend-every letter (bf sent)))))
+</PRE>
+
+<P>The way we'll use this in <CODE>(subsets 'brat)</CODE> is
+
+<P><PRE>(prepend-every 'b (subsets 'rat))
+</PRE>
+
+<P>Of course in the general case we won't have <CODE>b</CODE> and <CODE>rat</CODE> in our
+program, but instead will refer to the formal parameter:
+
+<P><PRE>(define (subsets wd)                         ;; first version
+  (se (subsets (bf wd))
+      (prepend-every (first wd) (subsets (bf wd)))))
+</PRE>
+
+<P>We still need a base case.  By now you're accustomed to the idea of using an
+empty word as the base case.  It may be strange to think of the empty word
+as a set in the first place, let alone to try to find its subsets.  But a
+set of zero elements is a perfectly good set, and it's the smallest one
+possible.
+
+<P>The empty set has only one subset, the empty set itself.  What should
+<CODE>subsets</CODE> of the empty word return?  It's easy to make a mistake here
+and return the empty word itself.  But we want <CODE>subsets</CODE> to return a
+sentence, containing all the subsets, and we should stick with returning a
+sentence even in the simple case.<A NAME="text4" HREF="adv-recur#ft4">[4]</A> (This mistake would come from not thinking about
+the <EM>range</EM> of our function, which is sentences.  This is why we put
+so much effort into learning about domains and ranges in Chapter
+2.)  So we'll return a sentence containing one (empty) word to
+represent the one subset.
+
+<P><PRE>(define (subsets wd)                         ;; second version
+  (if (empty? wd)
+      (se &quot;&quot;)
+      (se (subsets (bf wd))
+          (prepend-every (first wd) (subsets (bf wd))))))
+</PRE>
+
+<P>This program is entirely correct.  Because it uses two identical recursive
+calls, however, it's a lot slower than necessary.  We can use <CODE>let</CODE> to
+do the recursive subproblem only once:<A NAME="text5" HREF="adv-recur#ft5">[5]</A>
+
+<P><PRE>(define (<A NAME="g13"></A>subsets wd)
+  (if (empty? wd)
+      (se &quot;&quot;)
+      (let ((smaller (subsets (bf wd))))
+        (se smaller
+            (prepend-every (first wd) smaller)))))
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>We've already mentioned the need to be careful about the value returned
+in the base case.  The <CODE>subsets</CODE> procedure is particularly error-prone
+because the correct value, a sentence containing the empty word, is quite
+unusual.  An empty subset isn't the same as no subsets at all!
+
+<P>Sometimes you write a recursive procedure with a correct recursive case
+and a reasonable base case, but the program still doesn't work.  The trouble
+may be that the base case doesn't quite catch all of the ways in which the
+problem can get smaller.  A second base case may be needed.  For example, in
+<CODE>mergesort</CODE>, why did we write the following line?
+
+<P><PRE>(&lt;= (count sent) 1)
+</PRE>
+
+<P>This tests for two base cases, empty sentences and one-word
+sentences, whereas in most other examples the base case is just an empty
+sentence.  Suppose the base case test were <CODE>(empty? sent)</CODE> and suppose we
+invoke <CODE>mergesort</CODE> with a one-word sentence, <CODE>(test)</CODE>.  We would end
+up trying to compute the expression
+
+<P><PRE>(merge (mergesort (one-half '(test)))
+       (mergesort (other-half '(test))))
+</PRE>
+
+<P>If you look back at the definitions of <CODE>one-half</CODE> and
+<CODE>other-half</CODE>, you'll see that this is equivalent to
+
+<P><PRE>(merge (mergesort '(test)) (mergesort '()))
+</PRE>
+
+<P>The first argument to <CODE>merge</CODE> is the same expression we
+started with!  Here is a situation in which the problem doesn't get smaller
+in a recursive call.  Although we've been trying to avoid complicated base
+cases, in this situation a straightforward base case isn't enough.  To avoid
+an infinite recursion, we must have two base cases.
+
+<P>Another example is the <CODE>fib</CODE> procedure from Chapter .  Suppose
+it were defined like this:
+
+<P><PRE>(define (fib n)                              ;; wrong!
+  (if (= n 1)
+      1
+      (+ (fib (- n 1))
+         (fib (- n 2)))))
+</PRE>
+
+<P>It would be easy to make this mistake, because everybody knows
+that in a recursion dealing with numbers, the base case is the smallest
+possible number.  But in <CODE>fib</CODE>, each computation depends on <EM>two</EM>
+smaller values, and we discover that we need two base cases.
+
+<P>The technique of recursion is often used to do something repetitively,
+but don't get the idea that the word &quot;recursion&quot; <EM>means</EM>
+repetition.  Recursion is a technique in which a procedure invokes itself.
+We do use recursion to solve repetitive problems, but don't confuse the
+method with the ends it achieves.  In particular, if you've programmed in
+other languages that have special-purpose looping mechanisms (the ones
+with names like <CODE>for</CODE> and <CODE>while</CODE>), those aren't recursive.
+Conversely, not every recursive procedure carries out a repetition.
+
+<P> 
+<H2>Exercises</H2>
+
+<P><B>15.1</B>&nbsp;&nbsp;Write a procedure <CODE>to-binary</CODE>:
+
+<P><PRE>&gt; (to-binary 9)
+1001
+
+&gt; (to-binary 23)
+10111
+</PRE>
+
+<P>
+<B>15.2</B>&nbsp;&nbsp;A &quot;palindrome&quot; is a sentence that reads the same backward as forward.
+Write a predicate <CODE>palindrome?</CODE> that takes a sentence as argument and
+decides whether it is a palindrome.  For example:
+
+<P><PRE>&gt; (palindrome? '(flee to me remote elf))
+#T
+
+&gt; (palindrome? '(flee to me remote control))
+#F
+</PRE>
+
+<P>Do not reverse any words or sentences in your solution.
+
+
+<P>
+<B>15.3</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g14"></A>substrings</CODE> that takes a word as its
+argument.  It should return a sentence containing all of the substrings of
+the argument.  A <EM>substring</EM> is a subset whose letters come
+consecutively in the original word.  For example, the word <CODE>bat</CODE> is a
+subset, but <EM>not</EM> a substring, of <CODE>brat</CODE>.
+<A NAME="substrings"></A>
+
+
+<P>
+<B>15.4</B>&nbsp;&nbsp;Write a predicate procedure <CODE><A NAME="g15"></A>substring?</CODE> that takes two words as
+arguments and returns <CODE>#t</CODE> if and only if the first word is a substring
+of the second.  (See Exercise <A HREF="adv-recur.html#substrings">15.3</A> for the definition of a
+substring.)
+
+<P>Be careful about cases in which you encounter a &quot;false start,&quot; like this:
+
+<P><PRE>&gt; (substring? 'ssip 'mississippi)
+#T
+</PRE>
+
+<P>and also about subsets that don't appear as consecutive letters
+in the second word:
+
+<P><PRE>&gt; (substring? 'misip 'mississippi)
+#F
+</PRE>
+
+<P>
+<B>15.5</B>&nbsp;&nbsp;Suppose you have a phone number, such as 223-5766, and you'd like to figure out
+a clever way to spell it in letters for your friends to remember.  Each
+digit corresponds to three possible letters.  For example, the digit 2
+corresponds to the letters A, B, and C.  Write a procedure that takes a
+number as argument and returns a sentence of all the possible spellings:
+
+<P><PRE>&gt; (<A NAME="g16"></A>phone-spell 2235766)
+(AADJPMM AADJPMN &hellip;CCFLSOO)
+</PRE>
+
+<P>(We're not showing you all 2187 words in this sentence.)  You may
+assume there are no zeros or ones in the number, since those don't have
+letters.
+
+<P>Hint:  This problem has a lot in common with the subsets example.
+
+
+<P>
+<B>15.6</B>&nbsp;&nbsp;Let's say a gladiator kills a roach.  If we want to talk about the roach, we
+say &quot;the roach the gladiator killed.&quot; But if we want to talk about the
+gladiator, we say &quot;the gladiator that killed the roach.&quot;
+
+<P>People are pretty good at understanding even rather long sentences
+as long as they're straightforward: &quot;This is the farmer who kept
+the cock that waked the priest that married the man that kissed the
+maiden that milked the cow that tossed the dog that worried the cat
+that killed the rat that ate the malt that lay in the house that
+Jack built.&quot; But even a short <EM>nested</EM> sentence is
+confusing:  &quot;This is the rat the cat the dog worried killed.&quot;
+Which rat was that?
+
+<P>Write a procedure <CODE><A NAME="g17"></A>unscramble</CODE> that takes a nested
+sentence as argument and returns a straightforward sentence about
+the same cast of characters:
+
+<P><PRE>&gt; (unscramble '(this is the roach the gladiator killed))
+(THIS IS THE GLADIATOR THAT KILLED THE ROACH)
+
+&gt; (unscramble '(this is the rat the cat the dog the boy the
+                     girl saw owned chased bit))
+(THIS IS THE GIRL THAT SAW THE BOY THAT OWNED THE DOG THAT
+      CHASED THE CAT THAT BIT THE RAT)
+</PRE>
+
+<P>You may assume that the argument has exactly the structure
+of these examples, with no special cases like &quot;that lay <EM>in</EM> the
+house&quot; or &quot;that <EM>Jack</EM> built.&quot;
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="adv-recur#text1">[1]</A> If you've read Part III, you might instead want to use <CODE>accumulate</CODE> for this purpose:
+
+<P><PRE>(define earliest-word sent)
+  (accumulate (lambda (wd1 wd2) (if (before? wd1 wd2) wd1 wd2))
+	      sent))
+</PRE><P>
+<A NAME="ft2" HREF="adv-recur#text2">[2]</A> A more straightforward base case
+would be a one-bit number, but we've reduced that to this more elegant base
+case, following the principle we discussed on page <A HREF="../ssch12/leap.html#basecasereduce">there</A>.<P>
+<A NAME="ft3" HREF="adv-recur#text3">[3]</A> Try writing down all the subsets of a five-letter word
+if you don't believe us.<P>
+<A NAME="ft4" HREF="adv-recur#text4">[4]</A> We discussed this point in a
+pitfall in Chapter 12.<P>
+<A NAME="ft5" HREF="adv-recur#text5">[5]</A> How come we're worrying about
+efficiency all of a sudden?  We really <EM>did</EM> pull this out of a hat.
+The thing is, it's a <EM>lot</EM> slower without the <CODE>let</CODE>.  Adding one
+letter to the length of a word doubles the time required to find its
+subsets; adding 10 letters multiplies the time by about 1000.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch14/number-name.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="poker.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch15/adv-recur.html b/js/games/nluqo.github.io/~bh/ssch15/adv-recur.html
new file mode 100644
index 0000000..c6a3bea
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch15/adv-recur.html
@@ -0,0 +1,553 @@
+<P>
+<A NAME="fractal"></A>
+<P><CENTER><IMG SRC="../ss-pics/fractal.jpg" ALT="figure: fractal"></CENTER><P><CENTER>Zoom in on some parts of a fractal and you'll see a miniature version
+of the whole thing.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 15: Advanced Recursion</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 15</H2>
+<H1>Advanced Recursion</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch15.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch14/number-name.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="poker.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>By now you've had a good deal of experience with straightforward recursive
+problems, and we hope you feel comfortable with them.  In this chapter, we
+present some more challenging problems.  But the same leap of faith method
+that we used for easier problems is still our basic approach.
+
+<P><H2>Example: <CODE>Sort</CODE></H2>
+
+<P>First we'll consider the example of sorting a sentence.  The argument
+will be any sentence; our procedure will return a sentence with the same
+words in alphabetical order.
+
+<P><PRE>&gt; (sort '(i wanna be your man))
+(BE I MAN WANNA YOUR)
+</PRE>
+
+<P>We'll use the <CODE>before?</CODE> primitive to decide if one word comes before
+another word alphabetically:
+
+<P><PRE>&gt; (before? 'starr 'best)
+#F
+</PRE>
+
+<P>How are we going to think about this problem recursively?  Suppose that
+we're given a sentence to sort.  A relatively easy subproblem is to find the
+word that ought to come first in the sorted sentence; we'll write <CODE>earliest-word</CODE> later to do this.
+
+<P>Once we've found that word, we just need to put it in front of the sorted
+version of the rest of the sentence.  This is our leap of faith:
+We're going to assume that we can already sort this smaller sentence.
+The algorithm we've described is called <EM>selection</EM> sort.
+
+<P>
+Another subproblem is to find the &quot;rest of the sentence&quot;&mdash;all the words
+except for the earliest.  But in Exercise <A HREF="../ssch14/recur-patterns.html#remonce">14.1</A> you wrote a function
+<CODE>remove-once</CODE> that takes a word and a sentence and returns the sentence
+with that word removed.  (We don't want to use <CODE>remove</CODE>, which removes
+all copies of the word, because our argument sentence might include the same
+word twice.)
+
+<P>Let's say in Scheme what we've figured out so far:
+
+<P><PRE>(define (sort sent)                          ;; unfinished
+  (se (earliest-word sent)
+      (sort (remove-once (earliest-word sent) sent))))
+</PRE>
+
+<P>We need to add a base case.  The smallest sentence is <CODE>()</CODE>,
+which is already sorted.
+
+<P><PRE>(define (<A NAME="g1"></A>sort sent)
+  (if (empty? sent)
+      '()
+      (se (earliest-word sent)
+	  (sort (remove-once (earliest-word sent) sent)))))
+</PRE>
+
+<P>We have one unfinished task: finding the earliest word of the argument.
+
+<P><PRE>(define (<A NAME="g2"></A>earliest-word sent)
+  (earliest-helper (first sent) (bf sent)))
+
+(define (earliest-helper so-far rest)
+  (cond ((empty? rest) so-far)
+	((before? so-far (first rest))
+	 (earliest-helper so-far (bf rest)))
+	(else (earliest-helper (first rest) (bf rest)))))<A NAME="text1" HREF="adv-recur.html#ft1">[1]</A></PRE>
+
+<P>
+
+<P>For your convenience, here's <CODE>remove-once</CODE>:
+<PRE>(define (<A NAME="g3"></A>remove-once wd sent)
+  (cond ((empty? sent) '())
+	((equal? wd (first sent)) (bf sent))
+	(else (se (first sent) (remove-once wd (bf sent))))))
+</PRE>
+
+<P> 
+<H2>Example: <CODE>From-Binary</CODE></H2>
+
+<P>
+
+<P>We want to take a word of ones and zeros, representing a
+<A NAME="g4"></A><A NAME="g5"></A>binary number, and compute the numeric value that it represents.
+Each binary digit (or <EM>bit</EM>) corresponds to a power of two, just as
+ordinary decimal digits represent powers of ten.  So the binary number 1101
+represents (1&times;8)+(1&times;4)+(0&times;2)+(1&times;1)&nbsp;=&nbsp;13.  We want to be able to say
+
+<P><PRE>&gt; (from-binary 1101)
+13
+
+&gt; (from-binary 111)
+7
+</PRE>
+
+
+<P>Where is the smaller, similar subproblem?  Probably the most obvious thing
+to try is our usual trick of dividing the argument into its <CODE>first</CODE> and
+its <CODE>butfirst</CODE>.  Suppose we divide the binary number <CODE>1101</CODE> that
+way.  We make the leap of faith by assuming that we can translate the
+butfirst, <CODE>101</CODE>, into its binary value 5.  What do we have to add for
+the leftmost <CODE>1</CODE>?  It contributes 8 to the total, because it's three
+bits away from the right end of the number, so it must be multiplied by
+2<SUP><SMALL>3</SMALL></SUP>.  We could write this idea as follows:
+
+<P><PRE>(define (from-binary bits)                   ;; incomplete 
+  (+ (* (first bits) (expt 2 (count (bf bits))))
+     (from-binary (bf bits))))
+</PRE>
+
+<P>That is, we multiply the <CODE>first</CODE> bit by a power of two
+depending on the number of bits remaining, then we add that
+to the result of the recursive call.
+
+<P>As usual, we have written the algorithm for the recursive case before
+figuring out the base case.  But it's pretty easy; a number with no bits (an
+empty word) has the value zero.<A NAME="text2" HREF="adv-recur.html#ft2">[2]</A>
+
+<P><PRE>(define (<A NAME="g6"></A>from-binary bits)
+  (if (empty? bits)
+      0
+      (+ (* (first bits) (expt 2 (count (bf bits))))
+         (from-binary (bf bits)))))
+</PRE>
+
+<P>Although this procedure is correct, it's worth noting that a more efficient
+version can be written by dissecting the number from right to left.  As
+you'll see, we can then avoid the calls to <CODE>expt</CODE>, which are expensive
+because we have to do more multiplication than should be necessary.
+
+<P>Suppose we want to find the value of the binary number <CODE>1101</CODE>.  The <CODE>butlast</CODE> of this number, <CODE>110</CODE>, has the value six.  To get the value of
+the entire number, we double the six (because <CODE>1100</CODE> would have the value
+12, just as in ordinary decimal numbers 430 is ten times 43) and then add the
+rightmost bit to get 13.  Here's the new version:
+
+<P><PRE>(define (<A NAME="g7"></A>from-binary bits)
+  (if (empty? bits)
+      0
+      (+ (* (from-binary (bl bits)) 2)
+         (last bits))))
+</PRE>
+
+<P>This version may look a little unusual.  We usually combine the value
+returned by the recursive call with some function of the current element.
+This time, we are combining the current element itself with a function of
+the recursive return value.  You may want to trace this procedure to see how
+the intermediate return values contribute to the final result.
+
+<P><H2>Example: <CODE>Mergesort</CODE></H2>
+
+<P>Let's go back to the problem of sorting a sentence.  It turns out that
+sorting one element at a time, as in selection sort, isn't the fastest
+possible approach.  One of the fastest sorting algorithms is called <EM>mergesort,</EM> and it works like this: In order to mergesort a
+sentence, divide the sentence into two equal halves and recursively sort
+each half.  Then take the two sorted subsentences and <EM>merge</EM> them
+together, that is, create one long sorted sentence that contains all the words
+of the two halves.  The base case is that an empty sentence or a one-word
+sentence is already sorted.
+
+<P><PRE>(define (<A NAME="g8"></A>mergesort sent)
+  (if (&lt;= (count sent) 1)
+      sent
+      (merge (mergesort (one-half sent))
+             (mergesort (other-half sent)))))
+</PRE>
+
+<P>The leap of faith here is the idea that we can magically <CODE>mergesort</CODE>
+the halves of the sentence.  If you try to trace this through step by step,
+or wonder exactly what happens at what time, then this algorithm may be very
+confusing.  But if you just <EM>believe</EM> that the recursive calls will do
+exactly the right thing, then it's much easier to understand this program.
+The key point is that if the two smaller pieces have already been sorted,
+it's pretty easy to merge them while keeping the result in order.
+
+<P>We still need some helper procedures.  You wrote <CODE>merge</CODE> in Exercise
+<A HREF="../ssch14/recur-patterns.html#mergeex">14.15</A>.  It uses the following technique: Compare the first words of the
+two sentences.  Let's say the first word of the sentence on the left is
+smaller.  Then the first word of the return value is the first word of the
+sentence on the left.  The rest of the return value comes from recursively
+merging the <CODE>butfirst</CODE> of the left sentence with the entire right
+sentence.  (It's precisely the opposite of this if the first word of the
+other sentence is smaller.)  
+
+<P><PRE>(define (<A NAME="g9"></A>merge left right)
+  (cond ((empty? left) right)
+	((empty? right) left)
+	((before? (first left) (first right))
+	 (se (first left) (merge (bf left) right)))
+	(else (se (first right) (merge left (bf right))))))
+</PRE>
+
+<P>Now we have to write <CODE>one-half</CODE> and <CODE>other-half</CODE>.  One of the
+easiest ways to do this is to have <CODE>one-half</CODE> return the elements in
+odd-numbered positions, and have <CODE>other-half</CODE> return the elements in
+even-numbered positions.  These are the same as the procedures <CODE>odds</CODE>
+(from Exercise <A HREF="../ssch14/recur-patterns.html#exodds">14.4</A>) and <CODE>evens</CODE> (from Chapter 12).
+
+<P><PRE>(define (<A NAME="g10"></A>one-half sent)
+  (if (&lt;= (count sent) 1)
+      sent
+      (se (first sent) (one-half (bf (bf sent))))))
+
+(define (<A NAME="g11"></A>other-half sent)
+  (if (&lt;= (count sent) 1)
+      '()
+      (se (first (bf sent)) (other-half (bf (bf sent))))))
+</PRE>
+
+<P><H2>Example: <CODE>Subsets</CODE></H2>
+
+<P>We're now going to attack a much harder problem.  We want to know all the
+subsets of the letters of a word&mdash;that is, words that can be formed
+from the original word by crossing out some (maybe zero) of the letters.  For
+example, if we start with a short word like <CODE>rat</CODE>, the subsets are <CODE>r</CODE>, <CODE>a</CODE>, <CODE>t</CODE>, <CODE>ra</CODE>, <CODE>rt</CODE>, <CODE>at</CODE>, <CODE>rat</CODE>, and the empty
+word (<CODE>&quot;&quot;</CODE>).  As the word gets longer, the number of subsets gets bigger
+very quickly.<A NAME="text3" HREF="adv-recur.html#ft3">[3]</A>
+
+<P>As with many problems about words, we'll try assuming that we can find the
+subsets of the <CODE>butfirst</CODE> of our word.  In other words, we're hoping to
+find a solution that will include an expression like
+
+<P><PRE>(subsets (bf wd))
+</PRE>
+
+<P>Let's actually take a four-letter word and look at its subsets.  We'll pick
+<CODE>brat</CODE>, because we already know the subsets of its <CODE>butfirst</CODE>.  Here
+are the subsets of <CODE>brat</CODE>:
+
+<P><PRE>&quot;&quot; b r a t br ba bt ra rt at bra brt bat rat brat
+</PRE>
+
+<P>You might notice that many of these subsets are also subsets of <CODE>rat</CODE>.
+In fact, if you think about it, <EM>all</EM> of the subsets of <CODE>rat</CODE> are
+also subsets of <CODE>brat</CODE>.  So the words in <CODE>(subsets 'rat)</CODE> are some
+of the words we need for <CODE>(subsets 'brat)</CODE>.
+
+<P>Let's separate those out and look at the ones left over:
+
+<P><TABLE><TR><TD><CODE>rat</CODE> subsets:
+<TD>&nbsp;&nbsp;<CODE>""<TD>&nbsp;<CODE>r</CODE>
+<TD>&nbsp;<CODE>a</CODE><TD>&nbsp;<CODE>t</CODE>
+<TD>&nbsp;<CODE>ra</CODE><TD>&nbsp;<CODE>rt</CODE>
+<TD>&nbsp;<CODE>at</CODE><TD>&nbsp;<CODE></CODE><TD>&nbsp;<CODE>rat</CODE>
+<TR><TD>others:
+<TD>&nbsp;&nbsp;<CODE>b</CODE><TD>&nbsp;<CODE>br</CODE>
+<TD>&nbsp;<CODE>ba</CODE><TD>&nbsp;<CODE>bt</CODE>
+<TD>&nbsp;<CODE>bra</CODE><TD>&nbsp;<CODE>brt</CODE>
+<TD>&nbsp;<CODE>bat</CODE><TD>&nbsp;<CODE></CODE><TD>&nbsp;<CODE>brat</CODE>
+</TABLE>
+
+
+<P><P>
+Right about now you're probably thinking, &quot;They've pulled a rabbit out of a
+hat, the way my math teacher always does.&quot; The words that aren't subsets of
+<CODE>rat</CODE> all start with <CODE>b</CODE>, followed by something that <EM>is</EM> a
+subset of <CODE>rat</CODE>.  You may be thinking that you never would have thought
+of that yourself.  But we're just following the method:  Look at the smaller
+case and see how it fits into the original problem.  It's not so different
+from what happened with <CODE>downup</CODE>.
+
+<P>Now all we have to do is figure out how to say in Scheme, &quot;Put a <CODE>b</CODE>
+in front of every word in this sentence.&quot;  This is a straightforward
+example of the <CODE>every</CODE> pattern:
+
+<P><PRE>(define (<A NAME="g12"></A>prepend-every letter sent)
+  (if (empty? sent)
+      '()
+      (se (word letter (first sent))
+	  (prepend-every letter (bf sent)))))
+</PRE>
+
+<P>The way we'll use this in <CODE>(subsets 'brat)</CODE> is
+
+<P><PRE>(prepend-every 'b (subsets 'rat))
+</PRE>
+
+<P>Of course in the general case we won't have <CODE>b</CODE> and <CODE>rat</CODE> in our
+program, but instead will refer to the formal parameter:
+
+<P><PRE>(define (subsets wd)                         ;; first version
+  (se (subsets (bf wd))
+      (prepend-every (first wd) (subsets (bf wd)))))
+</PRE>
+
+<P>We still need a base case.  By now you're accustomed to the idea of using an
+empty word as the base case.  It may be strange to think of the empty word
+as a set in the first place, let alone to try to find its subsets.  But a
+set of zero elements is a perfectly good set, and it's the smallest one
+possible.
+
+<P>The empty set has only one subset, the empty set itself.  What should
+<CODE>subsets</CODE> of the empty word return?  It's easy to make a mistake here
+and return the empty word itself.  But we want <CODE>subsets</CODE> to return a
+sentence, containing all the subsets, and we should stick with returning a
+sentence even in the simple case.<A NAME="text4" HREF="adv-recur.html#ft4">[4]</A> (This mistake would come from not thinking about
+the <EM>range</EM> of our function, which is sentences.  This is why we put
+so much effort into learning about domains and ranges in Chapter
+2.)  So we'll return a sentence containing one (empty) word to
+represent the one subset.
+
+<P><PRE>(define (subsets wd)                         ;; second version
+  (if (empty? wd)
+      (se &quot;&quot;)
+      (se (subsets (bf wd))
+          (prepend-every (first wd) (subsets (bf wd))))))
+</PRE>
+
+<P>This program is entirely correct.  Because it uses two identical recursive
+calls, however, it's a lot slower than necessary.  We can use <CODE>let</CODE> to
+do the recursive subproblem only once:<A NAME="text5" HREF="adv-recur.html#ft5">[5]</A>
+
+<P><PRE>(define (<A NAME="g13"></A>subsets wd)
+  (if (empty? wd)
+      (se &quot;&quot;)
+      (let ((smaller (subsets (bf wd))))
+        (se smaller
+            (prepend-every (first wd) smaller)))))
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>We've already mentioned the need to be careful about the value returned
+in the base case.  The <CODE>subsets</CODE> procedure is particularly error-prone
+because the correct value, a sentence containing the empty word, is quite
+unusual.  An empty subset isn't the same as no subsets at all!
+
+<P>Sometimes you write a recursive procedure with a correct recursive case
+and a reasonable base case, but the program still doesn't work.  The trouble
+may be that the base case doesn't quite catch all of the ways in which the
+problem can get smaller.  A second base case may be needed.  For example, in
+<CODE>mergesort</CODE>, why did we write the following line?
+
+<P><PRE>(&lt;= (count sent) 1)
+</PRE>
+
+<P>This tests for two base cases, empty sentences and one-word
+sentences, whereas in most other examples the base case is just an empty
+sentence.  Suppose the base case test were <CODE>(empty? sent)</CODE> and suppose we
+invoke <CODE>mergesort</CODE> with a one-word sentence, <CODE>(test)</CODE>.  We would end
+up trying to compute the expression
+
+<P><PRE>(merge (mergesort (one-half '(test)))
+       (mergesort (other-half '(test))))
+</PRE>
+
+<P>If you look back at the definitions of <CODE>one-half</CODE> and
+<CODE>other-half</CODE>, you'll see that this is equivalent to
+
+<P><PRE>(merge (mergesort '(test)) (mergesort '()))
+</PRE>
+
+<P>The first argument to <CODE>merge</CODE> is the same expression we
+started with!  Here is a situation in which the problem doesn't get smaller
+in a recursive call.  Although we've been trying to avoid complicated base
+cases, in this situation a straightforward base case isn't enough.  To avoid
+an infinite recursion, we must have two base cases.
+
+<P>Another example is the <CODE>fib</CODE> procedure from Chapter .  Suppose
+it were defined like this:
+
+<P><PRE>(define (fib n)                              ;; wrong!
+  (if (= n 1)
+      1
+      (+ (fib (- n 1))
+         (fib (- n 2)))))
+</PRE>
+
+<P>It would be easy to make this mistake, because everybody knows
+that in a recursion dealing with numbers, the base case is the smallest
+possible number.  But in <CODE>fib</CODE>, each computation depends on <EM>two</EM>
+smaller values, and we discover that we need two base cases.
+
+<P>The technique of recursion is often used to do something repetitively,
+but don't get the idea that the word &quot;recursion&quot; <EM>means</EM>
+repetition.  Recursion is a technique in which a procedure invokes itself.
+We do use recursion to solve repetitive problems, but don't confuse the
+method with the ends it achieves.  In particular, if you've programmed in
+other languages that have special-purpose looping mechanisms (the ones
+with names like <CODE>for</CODE> and <CODE>while</CODE>), those aren't recursive.
+Conversely, not every recursive procedure carries out a repetition.
+
+<P> 
+<H2>Exercises</H2>
+
+<P><B>15.1</B>&nbsp;&nbsp;Write a procedure <CODE>to-binary</CODE>:
+
+<P><PRE>&gt; (to-binary 9)
+1001
+
+&gt; (to-binary 23)
+10111
+</PRE>
+
+<P>
+<B>15.2</B>&nbsp;&nbsp;A &quot;palindrome&quot; is a sentence that reads the same backward as forward.
+Write a predicate <CODE>palindrome?</CODE> that takes a sentence as argument and
+decides whether it is a palindrome.  For example:
+
+<P><PRE>&gt; (palindrome? '(flee to me remote elf))
+#T
+
+&gt; (palindrome? '(flee to me remote control))
+#F
+</PRE>
+
+<P>Do not reverse any words or sentences in your solution.
+
+
+<P>
+<B>15.3</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g14"></A>substrings</CODE> that takes a word as its
+argument.  It should return a sentence containing all of the substrings of
+the argument.  A <EM>substring</EM> is a subset whose letters come
+consecutively in the original word.  For example, the word <CODE>bat</CODE> is a
+subset, but <EM>not</EM> a substring, of <CODE>brat</CODE>.
+<A NAME="substrings"></A>
+
+
+<P>
+<B>15.4</B>&nbsp;&nbsp;Write a predicate procedure <CODE><A NAME="g15"></A>substring?</CODE> that takes two words as
+arguments and returns <CODE>#t</CODE> if and only if the first word is a substring
+of the second.  (See Exercise <A HREF="adv-recur.html#substrings">15.3</A> for the definition of a
+substring.)
+
+<P>Be careful about cases in which you encounter a &quot;false start,&quot; like this:
+
+<P><PRE>&gt; (substring? 'ssip 'mississippi)
+#T
+</PRE>
+
+<P>and also about subsets that don't appear as consecutive letters
+in the second word:
+
+<P><PRE>&gt; (substring? 'misip 'mississippi)
+#F
+</PRE>
+
+<P>
+<B>15.5</B>&nbsp;&nbsp;Suppose you have a phone number, such as 223-5766, and you'd like to figure out
+a clever way to spell it in letters for your friends to remember.  Each
+digit corresponds to three possible letters.  For example, the digit 2
+corresponds to the letters A, B, and C.  Write a procedure that takes a
+number as argument and returns a sentence of all the possible spellings:
+
+<P><PRE>&gt; (<A NAME="g16"></A>phone-spell 2235766)
+(AADJPMM AADJPMN &hellip;CCFLSOO)
+</PRE>
+
+<P>(We're not showing you all 2187 words in this sentence.)  You may
+assume there are no zeros or ones in the number, since those don't have
+letters.
+
+<P>Hint:  This problem has a lot in common with the subsets example.
+
+
+<P>
+<B>15.6</B>&nbsp;&nbsp;Let's say a gladiator kills a roach.  If we want to talk about the roach, we
+say &quot;the roach the gladiator killed.&quot; But if we want to talk about the
+gladiator, we say &quot;the gladiator that killed the roach.&quot;
+
+<P>People are pretty good at understanding even rather long sentences
+as long as they're straightforward: &quot;This is the farmer who kept
+the cock that waked the priest that married the man that kissed the
+maiden that milked the cow that tossed the dog that worried the cat
+that killed the rat that ate the malt that lay in the house that
+Jack built.&quot; But even a short <EM>nested</EM> sentence is
+confusing:  &quot;This is the rat the cat the dog worried killed.&quot;
+Which rat was that?
+
+<P>Write a procedure <CODE><A NAME="g17"></A>unscramble</CODE> that takes a nested
+sentence as argument and returns a straightforward sentence about
+the same cast of characters:
+
+<P><PRE>&gt; (unscramble '(this is the roach the gladiator killed))
+(THIS IS THE GLADIATOR THAT KILLED THE ROACH)
+
+&gt; (unscramble '(this is the rat the cat the dog the boy the
+                     girl saw owned chased bit))
+(THIS IS THE GIRL THAT SAW THE BOY THAT OWNED THE DOG THAT
+      CHASED THE CAT THAT BIT THE RAT)
+</PRE>
+
+<P>You may assume that the argument has exactly the structure
+of these examples, with no special cases like &quot;that lay <EM>in</EM> the
+house&quot; or &quot;that <EM>Jack</EM> built.&quot;
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="adv-recur.html#text1">[1]</A> If you've read Part III, you might instead want to use <CODE>accumulate</CODE> for this purpose:
+
+<P><PRE>(define earliest-word sent)
+  (accumulate (lambda (wd1 wd2) (if (before? wd1 wd2) wd1 wd2))
+	      sent))
+</PRE><P>
+<A NAME="ft2" HREF="adv-recur.html#text2">[2]</A> A more straightforward base case
+would be a one-bit number, but we've reduced that to this more elegant base
+case, following the principle we discussed on page <A HREF="../ssch12/leap.html#basecasereduce">there</A>.<P>
+<A NAME="ft3" HREF="adv-recur.html#text3">[3]</A> Try writing down all the subsets of a five-letter word
+if you don't believe us.<P>
+<A NAME="ft4" HREF="adv-recur.html#text4">[4]</A> We discussed this point in a
+pitfall in Chapter 12.<P>
+<A NAME="ft5" HREF="adv-recur.html#text5">[5]</A> How come we're worrying about
+efficiency all of a sudden?  We really <EM>did</EM> pull this out of a hat.
+The thing is, it's a <EM>lot</EM> slower without the <CODE>let</CODE>.  Adding one
+letter to the length of a word doubles the time required to find its
+subsets; adding 10 letters multiplies the time by about 1000.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch14/number-name.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="poker.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch15/poker b/js/games/nluqo.github.io/~bh/ssch15/poker
new file mode 100644
index 0000000..043d8b2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch15/poker
@@ -0,0 +1,142 @@
+<P>
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme:Project: Scoring Poker Hands</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Project: Scoring Poker Hands</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch15.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="adv-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch16/match.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The idea of this project is to invent a procedure <CODE>poker-value</CODE>
+that works like this:
+
+<P><PRE>&gt; (<A NAME="g19"></A>poker-value '(h4 s4 c6 s6 c4))
+(FULL HOUSE - FOURS OVER SIXES)
+
+&gt; (poker-value '(h7 s3 c5 c4 d6))
+(SEVEN-HIGH STRAIGHT)
+
+&gt; (poker-value '(dq d10 dj da dk))
+(ROYAL FLUSH - DIAMONDS)
+
+&gt; (poker-value '(da d6 d3 c9 h6))
+(PAIR OF SIXES)
+</PRE>
+
+<P>As you can see, we are representing cards and hands just as in the
+Bridge project, except that poker hands have only five
+cards.<A NAME="text1" HREF="poker#ft1">[1]</A>
+
+<P>Here are the various kinds of poker hands, in decreasing order of value:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Royal flush: ten, jack, queen, king, and ace, all of the same suit
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Straight flush: five cards of sequential rank, all of the same suit
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Four of a kind: four cards of the same rank
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Full house: three cards of the same rank, and two of a second rank
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Flush: five cards of the same suit, not sequential rank
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Straight: five cards of sequential rank, not all of the same suit
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Three of a kind: three cards of the same rank, no other matches
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Two pair: two pairs of cards, of two different ranks
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pair: two cards of the same rank, no other matches
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Nothing: none of the above
+
+</TABLE>
+<P>
+An ace can be the lowest card of a straight (ace, 2, 3, 4, 5) or
+the highest card of a straight (ten, jack, queen, king, ace), but a straight
+can't &quot;wrap around&quot;; a hand with queen, king, ace, 2, 3 would be worthless
+(unless it's a flush).
+
+<P>Notice that most of the hand categories are either entirely about the ranks
+of the cards (pairs, straight, full house, etc.) or entirely about the
+suits (flush).  It's a good idea to begin your program by separating the
+rank information and the suit information.  To check for a straight flush or
+royal flush, you'll have to consider both kinds of information.
+
+<P>In what form do you want the suit information?  Really, all you need is a
+true or false value indicating whether or not the hand is a flush, because
+there aren't any poker categories like &quot;three of one suit and two of
+another.&quot;
+
+<P>What about ranks?  There are two kinds of hand categories involving ranks: 
+the ones about equal ranks (pairs, full house) and the ones about sequential
+ranks (straight).  You might therefore want the rank information in two
+forms.  A sentence containing all of the ranks in the hand, in sorted order,
+will make it easier to find a straight.  (You still have to be careful about
+aces.)
+
+<P>For the equal-rank categories, what you want is some data structure that
+will let you ask questions like &quot;are there three cards of the same rank
+in this hand?&quot;  We ended up using a representation like this:
+
+<P><PRE>&gt; (compute-ranks '(q 3 4 3 4))
+(ONE Q TWO 3 TWO 4)
+</PRE>
+
+<P>One slightly tricky aspect of this solution is that we spelled
+out the numbers of cards, <CODE>one</CODE> to <CODE>four</CODE>, instead of using the more
+obvious <CODE>(1 Q 2 3 2 4)</CODE>.  The reason, as you can probably tell just by
+looking at the latter version, is that it would lead to confusion between
+the names of the ranks, most of which are digits, and the numbers of
+occurrences, which are also digits.  More specifically, by spelling out the
+numbers of occurrences, we can use <CODE>member?</CODE> to ask easily if there is
+a three-of-a-kind rank in the hand.
+
+<P>You may find it easier to begin by writing a version that returns only the
+name of a category, such as <CODE>three of a kind</CODE>, and only after you get
+that to work, revise it to give more specific results such as <CODE>three
+sixes</CODE>.
+
+<P><H2>Extra Work for Hotshots</H2>
+
+<P>In some versions of poker, each player gets seven cards and can choose any
+five of the seven to make a hand.  How would it change your program if the
+argument were a sentence of seven cards?  (For example, in five-card poker
+there is only one possible category for a hand, but in seven-card you have
+to pick the best category that can be made from your cards.)  Fix your
+program so that it works for both five-card and seven-card hands.
+
+<P>Another possible modification to the program is to allow for playing with
+&quot;wild&quot; cards.  If you play with &quot;threes wild,&quot; it means that if there is
+a three in your hand you're allowed to pretend it's whatever card you like.
+For this modification, your program will require a second argument indicating
+which cards are wild.  (When you play with wild cards, there's the
+possibility of having five of a kind.  This beats a straight flush.)
+
+<P>
+
+
+
+<HR>
+<A NAME="ft1" HREF="poker#text1">[1]</A> Later on we'll think about seven-card variants of poker.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="adv-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch16/match.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch15/poker.html b/js/games/nluqo.github.io/~bh/ssch15/poker.html
new file mode 100644
index 0000000..828626a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch15/poker.html
@@ -0,0 +1,142 @@
+<P>
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme:Project: Scoring Poker Hands</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Project: Scoring Poker Hands</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch15.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="adv-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch16/match.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The idea of this project is to invent a procedure <CODE>poker-value</CODE>
+that works like this:
+
+<P><PRE>&gt; (<A NAME="g19"></A>poker-value '(h4 s4 c6 s6 c4))
+(FULL HOUSE - FOURS OVER SIXES)
+
+&gt; (poker-value '(h7 s3 c5 c4 d6))
+(SEVEN-HIGH STRAIGHT)
+
+&gt; (poker-value '(dq d10 dj da dk))
+(ROYAL FLUSH - DIAMONDS)
+
+&gt; (poker-value '(da d6 d3 c9 h6))
+(PAIR OF SIXES)
+</PRE>
+
+<P>As you can see, we are representing cards and hands just as in the
+Bridge project, except that poker hands have only five
+cards.<A NAME="text1" HREF="poker.html#ft1">[1]</A>
+
+<P>Here are the various kinds of poker hands, in decreasing order of value:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Royal flush: ten, jack, queen, king, and ace, all of the same suit
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Straight flush: five cards of sequential rank, all of the same suit
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Four of a kind: four cards of the same rank
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Full house: three cards of the same rank, and two of a second rank
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Flush: five cards of the same suit, not sequential rank
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Straight: five cards of sequential rank, not all of the same suit
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Three of a kind: three cards of the same rank, no other matches
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Two pair: two pairs of cards, of two different ranks
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pair: two cards of the same rank, no other matches
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Nothing: none of the above
+
+</TABLE>
+<P>
+An ace can be the lowest card of a straight (ace, 2, 3, 4, 5) or
+the highest card of a straight (ten, jack, queen, king, ace), but a straight
+can't &quot;wrap around&quot;; a hand with queen, king, ace, 2, 3 would be worthless
+(unless it's a flush).
+
+<P>Notice that most of the hand categories are either entirely about the ranks
+of the cards (pairs, straight, full house, etc.) or entirely about the
+suits (flush).  It's a good idea to begin your program by separating the
+rank information and the suit information.  To check for a straight flush or
+royal flush, you'll have to consider both kinds of information.
+
+<P>In what form do you want the suit information?  Really, all you need is a
+true or false value indicating whether or not the hand is a flush, because
+there aren't any poker categories like &quot;three of one suit and two of
+another.&quot;
+
+<P>What about ranks?  There are two kinds of hand categories involving ranks: 
+the ones about equal ranks (pairs, full house) and the ones about sequential
+ranks (straight).  You might therefore want the rank information in two
+forms.  A sentence containing all of the ranks in the hand, in sorted order,
+will make it easier to find a straight.  (You still have to be careful about
+aces.)
+
+<P>For the equal-rank categories, what you want is some data structure that
+will let you ask questions like &quot;are there three cards of the same rank
+in this hand?&quot;  We ended up using a representation like this:
+
+<P><PRE>&gt; (compute-ranks '(q 3 4 3 4))
+(ONE Q TWO 3 TWO 4)
+</PRE>
+
+<P>One slightly tricky aspect of this solution is that we spelled
+out the numbers of cards, <CODE>one</CODE> to <CODE>four</CODE>, instead of using the more
+obvious <CODE>(1 Q 2 3 2 4)</CODE>.  The reason, as you can probably tell just by
+looking at the latter version, is that it would lead to confusion between
+the names of the ranks, most of which are digits, and the numbers of
+occurrences, which are also digits.  More specifically, by spelling out the
+numbers of occurrences, we can use <CODE>member?</CODE> to ask easily if there is
+a three-of-a-kind rank in the hand.
+
+<P>You may find it easier to begin by writing a version that returns only the
+name of a category, such as <CODE>three of a kind</CODE>, and only after you get
+that to work, revise it to give more specific results such as <CODE>three
+sixes</CODE>.
+
+<P><H2>Extra Work for Hotshots</H2>
+
+<P>In some versions of poker, each player gets seven cards and can choose any
+five of the seven to make a hand.  How would it change your program if the
+argument were a sentence of seven cards?  (For example, in five-card poker
+there is only one possible category for a hand, but in seven-card you have
+to pick the best category that can be made from your cards.)  Fix your
+program so that it works for both five-card and seven-card hands.
+
+<P>Another possible modification to the program is to allow for playing with
+&quot;wild&quot; cards.  If you play with &quot;threes wild,&quot; it means that if there is
+a three in your hand you're allowed to pretend it's whatever card you like.
+For this modification, your program will require a second argument indicating
+which cards are wild.  (When you play with wild cards, there's the
+possibility of having five of a kind.  This beats a straight flush.)
+
+<P>
+
+
+
+<HR>
+<A NAME="ft1" HREF="poker.html#text1">[1]</A> Later on we'll think about seven-card variants of poker.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="adv-recur.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch16/match.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch16/match b/js/games/nluqo.github.io/~bh/ssch16/match
new file mode 100644
index 0000000..5ae4f6d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch16/match
@@ -0,0 +1,1399 @@
+<P>
+
+<P><A NAME="bongard"></A><CENTER><IMG SRC="../ss-pics/patterns.jpg" ALT="figure: patterns"></CENTER><P><CENTER>In each set, how do the ones on the left differ from the ones on the
+right?
+</CENTER><P>
+
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 16: Example: Pattern Matcher</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 16</H2>
+<H1>Example: Pattern Matcher</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch16.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch15/poker.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch17/part5.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>It's time for another extended example in which we use the Scheme tools
+we've been learning to accomplish something practical.  We'll start by
+describing how the program will work before we talk about how to implement
+it.
+
+<P>You can load our program into Scheme by typing
+
+<P><PRE>(load &quot;match.scm&quot;)
+</PRE>
+
+<P><H2>Problem Description</H2>
+
+<P>A <EM><A NAME="g1"></A><A NAME="g2"></A>pattern matcher</EM> is a commonly used procedure whose job is
+to compare a sentence to a range of possibilities.  An example may make this
+clear:
+
+<P><PRE>&gt; (match '(* me *) '(love me do))
+#T
+
+&gt; (match '(* me *) '(please please me))
+#T
+
+&gt; (match '(* me *) '(in my life))
+#F
+</PRE>
+
+<P>The first argument, <CODE>(* me *)</CODE>, is a <EM>pattern.</EM>  In the
+pattern, each asterisk (<CODE>*</CODE>) means &quot;any number of words, including no
+words at all.&quot; So the entire pattern matches any sentence that contains the
+word &quot;me&quot; anywhere within it.  You can think of <CODE>match</CODE> as a more
+general form of <CODE>equal?</CODE> in the sense that it compares two sentences
+and tells us whether they're the same, but with a broader meaning of &quot;the
+same.&quot;
+
+<P>Our pattern matcher will accept patterns more complicated than this first
+example.  There are four <EM>special characters</EM> that indicate
+unspecified parts of a pattern, depending on the number of words that should
+be allowed:
+
+<P><P><TABLE><TR><TH align="right" valign="top"><CODE>?</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">At most one word.
+<TR><TH align="right" valign="top"><CODE>!</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Exactly one word.
+<TR><TH align="right" valign="top"><CODE>&amp;</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">At least one word.
+<TR><TH align="right" valign="top"><CODE>*</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Any number of words.
+</TABLE>
+
+<P><P>These characters are meant to be somewhat mnemonic.  The question
+mark means &quot;maybe there's a word.&quot; The exclamation point means &quot;precisely
+one word!&quot; (And it's vertical, just like the digit 1, sort of.)  The
+ampersand, which ordinarily means &quot;and,&quot; indicates that we're matching a
+word and maybe more.  The asterisk doesn't have any mnemonic value, but it's
+what everyone uses for a general matching indicator anyway.
+
+<P>We can give a <EM>name</EM> to the collection of words that match an
+unspecified part of a pattern by including in the pattern a word that starts
+with one of the four special characters and continues with the name.  If the
+match succeeds, <CODE>match</CODE> will return a sentence containing these names
+and the corresponding values from the sentence:
+
+<P><PRE>&gt; (match '(*start me *end) '(love me do))
+(START LOVE ! END DO !)
+
+&gt; (match '(*start me *end) '(please please me))
+(START PLEASE PLEASE ! END !)
+
+&gt; (match '(mean mr mustard) '(mean mr mustard))
+()
+
+&gt; (match '(*start me *end) '(in my life))
+FAILED
+</PRE>
+
+<P>In these examples, you see that <CODE>match</CODE> doesn't really return
+<CODE>#t</CODE> or <CODE>#f</CODE>; the earlier set of examples showed a simplified
+picture.  In the first of the new examples, the special pattern word
+<CODE>*start</CODE> is allowed to match any number of words, as indicated by the
+asterisk.  In this case it turned out to match the single word &quot;love.&quot;
+<CODE>Match</CODE> returns a result that tells us which words of the sentence match
+the named special words in the pattern.  (We'll call one of these special
+pattern words a <EM>placeholder.</EM>) The exclamation points in the
+returned value are needed to separate one match from another.  (In the second
+example, the name <CODE>end</CODE> was matched by an empty set of words.)  In the
+third example, the match was successful, but since there were no
+placeholders the returned sentence was empty.  If the match is unsuccessful,
+<CODE>match</CODE> returns the word <CODE>failed</CODE>.<A NAME="text1" HREF="match#ft1">[1]</A>
+
+<P>If the same placeholder name appears more than once in the pattern, then it
+must be matched by the same word(s) in the sentence each time:
+
+<P><PRE>&gt; (match '(!twice !other !twice) '(cry baby cry))
+(TWICE CRY ! OTHER BABY !)
+
+&gt; (match '(!twice !other !twice) '(please please me))
+FAILED
+</PRE>
+
+<P>Some patterns might be matchable in more than one way.  For example, the
+invocation
+
+<P><PRE>&gt; (match '(*front *back) '(your mother should know))
+</PRE>
+
+<P>might return any of five different correct answers:
+
+<P><PRE>(FRONT YOUR MOTHER SHOULD KNOW ! BACK !)
+(FRONT YOUR MOTHER SHOULD ! BACK KNOW !)
+(FRONT YOUR MOTHER ! BACK SHOULD KNOW !)
+(FRONT YOUR ! BACK MOTHER SHOULD KNOW !)
+(FRONT ! BACK YOUR MOTHER SHOULD KNOW !)
+</PRE>
+
+<P>We arbitrarily decide that in such cases the first placeholder
+should match as many words as possible, so in this case <CODE>match</CODE> will
+actually return the first of these answers.
+
+<P>Before continuing, you might want to look at the first batch of exercises at
+the end of this chapter, which are about using the pattern matcher.  (The
+rest of the exercises are about the implementation, which we'll discuss
+next.)
+
+<P><H2>Implementation: When Are Two Sentences Equal?</H2>
+
+<P>Our approach to implementation will be to start with something we already
+know how to write: a predicate that tests whether two sentences are exactly
+equal.  We will add capabilities one at a time until we reach our goal.
+
+<P>Suppose that Scheme's primitive <CODE>equal?</CODE> function worked only for words
+and not for sentences.  We could write an equality tester for sentences,
+like this:
+
+<P><PRE>(define (<A NAME="g3"></A>sent-equal? sent1 sent2)
+  (cond ((empty? sent1)
+	 (empty? sent2))
+	((empty? sent2) #f)
+	((equal? (first sent1) (first sent2))
+	 (sent-equal? (bf sent1) (bf sent2)))
+	(else #f)))
+</PRE>
+
+<P>Two sentences are equal if each word in the first sentence is
+equal to the corresponding word in the second.  They're unequal if one
+sentence runs out of words before the other.
+
+<P>Why are we choosing to accept Scheme's primitive word comparison but rewrite
+the sentence comparison?  In our pattern matcher, a placeholder in the
+pattern corresponds to a group of words in the sentence.  There is no kind
+of placeholder that matches only part of a word.  (It would be possible to
+implement such placeholders, but we've chosen not to.)  Therefore, we will
+never need to ask whether a word is &quot;almost equal&quot; to another word.
+
+<P><H2>When Are Two Sentences Nearly Equal?</H2>
+
+<P>Pattern matching is just a more general form of this <CODE>sent-equal?</CODE> 
+procedure.  Let's write a very simple pattern matcher that knows only about
+the &quot;!&quot; special character and doesn't let us name the words
+that match the exclamation points in the pattern.  We'll call this one <CODE>match?</CODE> with a question mark because it returns just true or false.
+
+<P><PRE>(define (match? pattern sent)                ;; first version: ! only
+  (cond ((empty? pattern)
+	 (empty? sent))
+	((empty? sent) #f)
+	<U>((equal? (first pattern) '!)</U>
+	 <U>(match? (bf pattern) (bf sent)))</U>
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+</PRE>
+
+<P>This program is exactly the same as <CODE>sent-equal?</CODE>, except for
+the highlighted <CODE>cond</CODE> clause.  We are still comparing each word of the
+pattern with the corresponding word of the sentence, but now an exclamation
+mark in the pattern matches <EM>any</EM> word in the sentence.  (If <CODE>first</CODE> of <CODE>pattern</CODE> is an exclamation mark, we don't even look at <CODE>first</CODE> of <CODE>sent</CODE>.)
+
+<P>Our strategy in the next several sections will be to expand the pattern
+matcher by implementing the remaining special characters, then finally
+adding the ability to name the placeholders.  For now, when we say something
+like &quot;the <CODE>*</CODE> placeholder,&quot; we mean the placeholder consisting of the
+asterisk alone.  Later, after we add named placeholders, the same procedures
+will implement any placeholder that begins with an asterisk.
+
+<P><H2>Matching with Alternatives</H2>
+
+<P>The <CODE>!</CODE> matching is not much harder than <CODE>sent-equal?</CODE>, because
+it's still the case that one word of the pattern must match one word of the
+sentence.  When we introduce the <CODE>?</CODE> option, the structure of the
+program must be more complicated, because a question mark in the pattern
+might or might not be paired up with a word in the sentence.  In other
+words, the pattern and the sentence might match without being the same
+length.
+
+<P><PRE>(define (match? pattern sent)                ;; second version: ! and ?
+  (cond ((empty? pattern)
+	 (empty? sent))
+	<U>((equal? (first pattern) '?)</U>
+	 <U>(if (empty? sent)</U>
+	     <U>(match? (bf pattern) '())</U>
+	     <U>(or (match? (bf pattern) (bf sent))</U>
+		 <U>(match? (bf pattern) sent))))</U>
+	((empty? sent) #f)
+	((equal? (first pattern) '!)
+	 (match? (bf pattern) (bf sent)))
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+</PRE>
+
+<P>Note that the new <CODE>cond</CODE> clause comes <EM>before</EM> the check
+to see if <CODE>sent</CODE> is empty.  That's because <CODE>sent</CODE> might be empty and
+a pattern of <CODE>(?)</CODE> would still match it.  But if the sentence is empty,
+we know that the question mark doesn't match a word, so we just have to make
+sure that the <CODE>butfirst</CODE> of the pattern contains nothing but question
+marks.  (We don't have a predicate named <CODE>all-question-marks?</CODE>; instead,
+we use <CODE>match?</CODE> recursively to make this test.)
+
+<P>In general, a question mark in the pattern has to match either one word or
+zero words in the sentence.  How do we decide?  Our rule is that each
+placeholder should match as many words as possible, so we prefer to match
+one word if we can.  But allowing the question mark to match a word might
+prevent the rest of the pattern from matching the rest of the sentence.
+
+<P>Compare these two examples:
+
+<P><PRE>&gt; (match? '(? please me) '(please please me))
+#T
+
+&gt; (match? '(? please me) '(please me))
+#T
+</PRE>
+
+<P>In the first case, the first thing in the pattern is a question mark and the
+first thing in the sentence is &quot;please,&quot; and they match.  That leaves
+&quot;please me&quot; in the pattern to match &quot;please me&quot; in the sentence.
+
+<P>In the second case, we again have a question mark as the first thing in the
+pattern and &quot;please&quot; as the first thing in the sentence.  But this time,
+we had better not use up the &quot;please&quot; in the sentence, because that will
+only leave &quot;me&quot; to match &quot;please me.&quot; In this case the question mark has
+to match no words.
+
+<P>To you, these examples probably look obvious.  That's because you're a human
+being, and you can take in the entire pattern and the entire sentence all at
+once.  Scheme isn't as smart as you are; it has to compare words one pair at
+a time.  To Scheme, the processing of both examples begins with question
+mark as the first word of the pattern and &quot;please&quot; as the first word of
+the sentence.  The pattern matcher has to consider both cases.
+
+<P>How does the procedure consider both cases?  Look at the invocation of <CODE>or</CODE> by the <CODE>match?</CODE> procedure.  There are two alternatives; if either
+turns out true, the match succeeds.  One is that we try to match the
+question mark with the first word of the sentence just as we matched <CODE>!</CODE> in our earlier example&mdash;by making a recursive call on the <CODE>butfirst</CODE>s of the pattern and sentence.  If that returns true, then the
+question mark matches the first word.
+
+<P>The second alternative that can make the match succeed is a recursive call
+to <CODE>match?</CODE> on the <CODE>butfirst</CODE> of the pattern and the <EM>entire</EM>
+sentence; this corresponds to matching the <CODE>?</CODE> against
+nothing.<A NAME="text2" HREF="match#ft2">[2]</A>
+
+<P>Let's trace <CODE>match?</CODE> so that you can see how these two cases are
+handled differently by the program.
+
+<P><PRE>&gt; (trace match?)
+&gt; (match? '(? please me) '(please please me))
+<SMALL><CODE>(match? (? please me) (please please me))
+| (match? (please me) (please me))                Try matching <CODE>?</CODE> with <CODE>please</CODE>.
+|  |  (match? (me) (me))
+|  |  |  (match? () ())
+|  |  |  #t                                       It works!
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P><PRE>&gt; (match? '(? please me) '(please me))
+<SMALL><CODE>(match? (? please me) (please me))
+| (match? (please me) (me))                        Try matching <CODE>?</CODE> with <CODE>please</CODE>.
+|  #f                                              It doesn't work.
+| (match? (please me) (please me))                 This time, match <CODE>?</CODE> with nothing.
+|  |  (match? (me) (me))
+|  |  |  (match? () ())
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P><H2>Backtracking</H2>
+
+<P>The program structure that allows for two alternative routes to success has
+more profound implications than you may think at first.
+
+<P>When <CODE>match?</CODE> sees a question mark in the pattern, it has to decide
+whether or not to &quot;use up&quot; a word of the sentence by matching it with the
+question mark.  You might wonder, &quot;How does the question mark decide
+whether to take a word?&quot; The answer is that the decision isn't made &quot;by
+the question mark&quot;; there's nothing about the particular word that the
+question mark might match that helps with the decision!  Instead, the
+decision depends on matching what comes to the right of the question mark.
+
+<P>Compare this situation with the <CODE>keep</CODE> recursive pattern.  There, too,
+the procedure makes a decision about the first word of a sentence, and each
+alternative leads to a recursive call for the <CODE>butfirst</CODE>:
+
+<P><PRE>(cond ((empty? sent) '())
+      ((some-test? (first sent))
+       (se (first sent) <U>(recursive-call (bf sent))</U>))
+      (else <U>(recursive-call (bf sent))</U>))
+</PRE>
+
+<P>The difference is that in the <CODE>keep</CODE> pattern the choice
+between alternatives <EM>can</EM> be made just by looking at the immediate
+situation&mdash;the single word that might or might not be chosen; the decision
+doesn't depend on anything in the rest of the problem.  As a result, the
+choice has already been made before any recursive call happens.  Therefore,
+only one of the recursive calls is actually made, to make choices about the
+remaining words in the sentence.
+
+<P>In <CODE>match?</CODE>, by contrast, any particular invocation can't make its
+choice until it knows the result of a recursive invocation.  The result
+from the recursive call determines the choice made by the caller.
+
+<P>Here's a model that might help you think about this kind of recursion.  <CODE>Match?</CODE> sees a question mark in the pattern.  It makes a <EM>tentative</EM>
+decision that this question mark should match the first word of the
+sentence, and it uses a recursive invocation to see whether that decision
+allows the rest of the problem to be solved.  If so, the tentative choice
+was correct.  If not, <CODE>match?</CODE> tries an alternative decision that the
+question mark doesn't match a word.  This alternative is still tentative;
+another recursive call is needed to see if the rest of the pattern can
+succeed.  If not, the overall match fails.
+
+<P>This structure is called <EM>backtracking.</EM>
+
+<P>What if there are two question marks in the pattern?  Then there are <EM>four</EM> ways to match the overall pattern.  Both question marks can match a
+word, or only the first question mark, or only the second, or neither.  A
+pattern with several placeholders leads to even more alternatives.  A
+pattern with three question marks will have eight alternatives.  (All three
+match words, the first two do but the third doesn't, and so on.)  A pattern
+with 10 question marks will have 1024 alternatives.  How can <CODE>match?</CODE>
+try all these alternatives?  The procedure seems to make only one two-way
+choice; how can it accomplish a four-way or many-way decision?
+
+<P>The secret is the same as the usual secret of recursion:  Most of the work
+is done in recursive calls.  We take a leap of faith that recursive
+invocations will take care of the decisions concerning question marks later
+in the pattern.  Think about it using the backtracking model.  Let's suppose
+there are 10 question marks in the pattern.  When <CODE>match?</CODE> encounters
+the leftmost question mark, it makes a tentative decision to match the
+question mark with a word of the sentence.  To test whether this choice can
+work, <CODE>match?</CODE> invokes itself recursively on a pattern with nine
+question marks.  By the leap of faith, the recursive invocation will examine
+512 ways to match question marks with words&mdash;half of the total number.  If
+one of these 512 works, we're finished.  If not, the original <CODE>match?</CODE>
+invocation changes its tentative choice, deciding instead <EM>not</EM> to
+match its question mark (the leftmost one) with a word of the sentence.
+Another recursive call is made based on that decision, and that recursive
+call checks out the remaining 512 possibilities.
+
+<P>By the way, the program doesn't always have to try all of the different
+combinations of question marks matching or not matching words separately.
+For example, if the problem is
+
+<P><PRE>(match? '(a b ? ? ? ?) '(x y z w p q))
+</PRE>
+
+<P>then the very first comparison discovers that <CODE>a</CODE> is different
+from <CODE>x</CODE>, so none of the 16 possible arrangements about question marks
+matching or not matching words will make a difference.
+
+<P>Here are some traced examples involving patterns with two question marks, to
+show how the result of backtracking depends on the individual problem.
+
+<P><PRE>&gt; (match? '(? ? foo) '(bar foo))
+<SMALL><CODE>(match? (? ? foo) (bar foo))
+|  (match? (? foo) (foo))
+|  |  (match? (foo) ())
+|  |  #f
+|  |  (match? (foo) (foo))
+|  |  |  (match? () ())
+|  |  |  #t
+|  |  #t
+|  #t 
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P>In this first example, the first question mark tries to match the
+word <CODE>bar</CODE>, but it can't tell whether or not that match will succeed
+until the recursive call returns.  In the recursive call, the second
+question mark tries to match the word <CODE>foo</CODE>, and fails.  Then the
+second question mark tries again, this time matching nothing, and succeeds.
+Therefore, the first question mark can report success; it never has to try a
+recursive call in which it doesn't match a word.
+
+<P>In our second example, each question mark will have to try both alternatives,
+matching and then not matching a word, before the overall match succeeds.
+
+<P><PRE>&gt; (match? '(? ? foo bar) '(foo bar))
+<SMALL><CODE>(match? (? ? foo bar) (foo bar))
+|  (match? (? foo bar) (bar))
+|  |  (match? (foo bar) ())
+|  |  #f
+|  |  (match? (foo bar) (bar))
+|  |  #f
+|  #f
+|  (match? (? foo bar) (foo bar))
+|  |  (match? (foo bar) (bar))
+|  |  #f
+|  |  (match? (foo bar) (foo bar))
+|  |  |  (match? (bar) (bar))
+|  |  |  |  (match? () ())
+|  |  |  |  #t
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P>The first question mark tries to match the word <CODE>foo</CODE> in the
+sentence, leaving the pattern <CODE>(? foo bar)</CODE> to match <CODE>(bar)</CODE>.  The
+second question mark will try both matching and not matching a word, but
+neither succeeds.  Therefore, the first question mark tries again, this time
+not matching a word.  The second question mark first tries matching <CODE>foo</CODE>, and when that fails, tries not matching anything.  This last attempt is
+successful.
+
+<P>In the previous example, every question mark's first attempt failed.  The
+following example illustrates the opposite case, in which every question
+mark's first attempt succeeds.
+
+<P><PRE>&gt; (match? '(? ? baz) '(foo bar baz))
+<SMALL><CODE>(match? (? ? baz) (foo bar baz))
+|  (match? (? baz) (bar baz))
+|  |  (match? (baz) (baz))
+|  |  |  (match? () ())
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#t
+</PRE>
+
+<P>The first question mark matches <CODE>foo</CODE>; the second matches <CODE>bar</CODE>.
+
+<P>If the sentence is shorter than the pattern, we may end up trying to match a
+pattern against an empty sentence.  This is much easier than the general
+problem, because there aren't two alternatives; a question mark has no word
+in the sentence to match.
+
+<P><PRE>&gt; (match? '(? ? foo) '())
+<SMALL><CODE>(match? (? ? foo) ())
+|  (match? (? foo) ())
+|  |  (match? (foo) ())
+|  |  #f
+|  #f
+#f
+</CODE></SMALL>#f
+</PRE>
+
+<P>Each question mark knows right away that it had better not try to
+match a word, so we never have to backtrack.
+
+<P><H2>Matching Several Words</H2>
+
+<P>The next placeholder we'll implement is <CODE>*</CODE>.  The order in which we're
+implementing these placeholders was chosen so that each new version
+increases the variability in the number of words a placeholder can match.
+The <CODE>!</CODE> placeholder was very easy because it always matches exactly one
+word; it's hardly different at all from a non-placeholder in the pattern.
+Implementing <CODE>?</CODE> was more complicated because there were two
+alternatives to consider.  But for <CODE>*</CODE>, we might match any number of
+words, up to the entire rest of the sentence.
+
+<P>Our strategy will be a generalization of the <CODE>?</CODE> strategy:  Start with
+a &quot;greedy&quot; match, and then, if a recursive call tells us that the
+remaining part of the sentence can't match the rest of the pattern, try a
+less greedy match.
+
+<P>The difference between <CODE>?</CODE> and <CODE>*</CODE> is that <CODE>?</CODE> allows only two
+possible match lengths, zero and one.  Therefore, these two cases can be
+checked with two explicit subexpressions of an <CODE>or</CODE> expression.  In the
+more general case of <CODE>*</CODE>, any length is possible, so we can't check every
+possibility separately.  Instead, as in any problem of unknown size, we use
+recursion.  First we try the longest possible match; if that fails because
+the rest of the pattern can't be matched, a recursive call tries the
+next-longest match.  If we get all the way down to an empty match for the
+<CODE>*</CODE> and still can't match the rest of the pattern, then we return <CODE>#f</CODE>.
+
+<P><PRE>(define (match? pattern sent)              ;; third version: !, ?, and *
+  (cond ((empty? pattern)
+	 (empty? sent))
+	((equal? (first pattern) '?)
+	 (if (empty? sent)
+	     (match? (bf pattern) '())
+	     (or (match? (bf pattern) (bf sent))
+		 (match? (bf pattern) sent))))
+	<U>((equal? (first pattern) '*)</U>
+	 <U>(*-longest-match (bf pattern) sent))</U>
+	((empty? sent) #f)
+	((equal? (first pattern) '!)
+	 (match? (bf pattern) (bf sent)))
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+
+(define (*-longest-match pattern-rest sent)
+  (*-lm-helper pattern-rest sent '()))
+
+(define (*-lm-helper pattern-rest sent-matched sent-unmatched)
+  (cond ((match? pattern-rest sent-unmatched) #t)
+	((empty? sent-matched) #f)
+	(else (*-lm-helper pattern-rest
+			   (bl sent-matched)
+			   (se (last sent-matched) sent-unmatched)))))
+</PRE>
+
+<P>If an asterisk is found in the pattern, <CODE>match?</CODE> invokes <CODE>*-longest-match</CODE>, which carries out this backtracking approach.
+
+<P>The real work is done by <CODE>*-lm-helper</CODE>, which has three arguments.
+The first argument is the still-to-be-matched part of the pattern, following
+the <CODE>*</CODE> placeholder that we're trying to match now.  <CODE>Sent-matched</CODE>
+is the part of the sentence that we're considering as a candidate to match
+the <CODE>*</CODE> placeholder.  <CODE>Sent-unmatched</CODE> is the remainder of the
+sentence, following the words in <CODE>sent-matched</CODE>; it must match
+<CODE>pattern-rest</CODE>.
+
+<P>Since we're trying to find the longest possible match, <CODE>*-longest-match</CODE>
+chooses the entire sentence as the first attempt for <CODE>sent-matched</CODE>.
+Since <CODE>sent-matched</CODE> is using up the entire sentence, the initial value
+of <CODE>sent-unmatched</CODE> is empty.  The only job of <CODE>*-longest-match</CODE> is
+to invoke <CODE>*-lm-helper</CODE> with these initial arguments.  On each
+recursive invocation, <CODE>*-lm-helper</CODE> shortens <CODE>sent-matched</CODE> by one
+word and accordingly lengthens <CODE>sent-unmatched</CODE>.
+
+<P>Here's an example in which the <CODE>*</CODE> placeholder tries to match four
+words, then three words, and finally succeeds with two words:
+
+<P><PRE>&gt; (trace match? *-longest-match *-lm-helper)
+
+&gt; (match? '(* days night) '(a hard days night))
+<SMALL><CODE>(match? (* days night) (a hard days night))
+|  (*-longest-match (days night) (a hard days night))
+|  |  (*-lm-helper (days night) (a hard days night) ())
+|  |  |  (match? (days night) ())
+|  |  |  #f
+|  |  |  (*-lm-helper (days night) (a hard days) (night))
+|  |  |  |  (match? (days night) (night))
+|  |  |  |  #f
+|  |  |  |  (*-lm-helper (days night) (a hard) (days night))
+|  |  |  |  |  (match? (days night) (days night))
+|  |  |  |  |  |  (match? (night) (night))
+|  |  |  |  |  |  |  (match? () ())
+|  |  |  |  |  |  |  #t
+|  |  |  |  |  |  #t
+|  |  |  |  |  #t
+|  |  |  |  #t
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#t
+</PRE>
+
+<P><H2>Combining the Placeholders</H2>
+
+<P>We have one remaining placeholder, <CODE>&amp;</CODE>, which is much like <CODE>*</CODE>
+except that it fails unless it can match at least one word.  We could,
+therefore, write a <CODE>&amp;-longest-match</CODE> that would be identical to <CODE>*-longest-match</CODE> except for the base case of its helper procedure.  If <CODE>sent-matched</CODE> is empty, the result is <CODE>#f</CODE> even if it would be possible
+to match the rest of the pattern against the rest of the sentence.  (All we
+have to do is exchange the first two clauses of the <CODE>cond</CODE>.)
+
+<P><PRE>(define (&amp;-longest-match pattern-rest sent)
+  (&amp;-lm-helper pattern-rest sent '()))
+
+(define (&amp;-lm-helper pattern-rest sent-matched sent-unmatched)
+  (cond ((empty? sent-matched) #f)
+	((match? pattern-rest sent-unmatched) #t)
+	(else (&amp;-lm-helper pattern-rest
+			   (bl sent-matched)
+			   (se (last sent-matched) sent-unmatched)))))
+</PRE>
+
+<P>When two procedures are so similar, that's a clue that perhaps
+they could be combined into one.  We could look at the bodies of these two
+procedures to find a way to combine them textually.  But instead, let's step
+back and think about the meanings of the placeholders.
+
+<P>The reason that the procedures <CODE>*-longest-match</CODE> and <CODE>&amp;-longest-match</CODE> are so similar is that the two placeholders have almost
+identical meanings.  <CODE>*</CODE> means &quot;match as many words as possible&quot;;
+<CODE>&amp;</CODE> means &quot;match as many words as possible, but at least one.&quot; Once
+we're thinking in these terms, it's plausible to think of <CODE>?</CODE> as
+meaning &quot;match as many words as possible, but at most one.&quot; In fact,
+although this is a stretch, we can also describe <CODE>!</CODE> similarly: &quot;Match
+as many words as possible, but at least one, and at most one.&quot;
+
+<P><TABLE><TR><TH>Placeholder&nbsp;&nbsp;<TH>Minimum size&nbsp;&nbsp;
+<TH>Maximum size&nbsp;&nbsp;
+<TR><TD><CODE>*</CODE><TD>0<TD>no limit
+<TR><TD><CODE>&</CODE><TD>1<TD>no limit
+<TR><TD><CODE>?</CODE><TD>0<TD>1
+<TR><TD><CODE>!</CODE><TD>1<TD>1
+</TABLE>
+
+
+<P>We'll take advantage of this newly understood similarity to
+simplify the program by using a single algorithm for all placeholders.
+
+<P>How do we generalize <CODE>*-longest-match</CODE> and <CODE>&amp;-longest-match</CODE> to
+handle all four cases?  There are two kinds of generalization involved.
+We'll write a procedure <CODE>longest-match</CODE> that will have the same
+arguments as <CODE>*-longest-match</CODE>, plus two others, one for for the minimum
+size of the matched text and one for the maximum.
+
+<P>We'll specify the minimum size with a formal parameter <CODE>min</CODE>.  (The
+corresponding argument will always be 0 or 1.)  <CODE>Longest-match</CODE> will
+pass the value of <CODE>min</CODE> down to <CODE>lm-helper</CODE>, which will use it to
+reject potential matches that are too short.
+
+<P>Unfortunately, we can't use a number to specify the maximum size, because
+for <CODE>*</CODE> and <CODE>&amp;</CODE> there is no maximum.  Instead, <CODE>longest-match</CODE>
+has a formal parameter <CODE>max-one?</CODE> whose value is <CODE>#t</CODE> only for <CODE>?</CODE> and <CODE>!</CODE>.
+
+<P>Our earlier, special-case versions of <CODE>longest-match</CODE> were written for
+<CODE>*</CODE> and <CODE>&amp;</CODE>, the placeholders for which <CODE>max-one?</CODE> will be
+false.  For those placeholders, the new <CODE>longest-match</CODE> will be just
+like the earlier versions.  Our next task is to generalize <CODE>longest-match</CODE> so that it can handle the <CODE>#t</CODE> cases.
+
+<P>Think about the meaning of the <CODE>sent-matched</CODE> and <CODE>sent-unmatched</CODE>
+parameters in the <CODE>lm-helper</CODE> procedures.  <CODE>Sent-matched</CODE> means
+&quot;the longest part of the sentence that this placeholder is still allowed to
+match,&quot; while <CODE>sent-unmatched</CODE> contains whatever portion of the
+sentence has already been disqualified from being matched by the placeholder.
+
+<P>Consider the behavior of <CODE>*-longest-match</CODE> when an asterisk is at the
+beginning of a pattern that we're trying to match against a seven-word
+sentence.  Initially, <CODE>sent-matched</CODE> is the entire seven-word sentence,
+and <CODE>sent-unmatched</CODE> is empty.  Then, supposing that doesn't work, <CODE>sent-matched</CODE> is a six-word sentence, while <CODE>sent-unmatched</CODE> contains
+the remaining word.  This continues as long as no match succeeds until, near
+the end of <CODE>longest-match</CODE>'s job, <CODE>sent-matched</CODE> is a one-word
+sentence and <CODE>sent-unmatched</CODE> contains six words.  At this point, the
+longest possible match for the asterisk is a single word.
+
+<P>This situation is where we want to <EM>start</EM> in the case of the <CODE>?</CODE>
+and <CODE>!</CODE> placeholders.  So when we're trying to match one of these
+placeholders, our initialization procedure won't use the entire sentence as
+the initial value of <CODE>sent-matched</CODE>; rather, the initial value of <CODE>sent-matched</CODE> will be a one-word sentence, and <CODE>sent-unmatched</CODE> will
+contain the rest of the sentence.
+
+<P><PRE>(define (longest-match pattern-rest sent min max-one?)  ;; first version
+  (cond ((empty? sent)
+	 (and (= min 0) (match? pattern-rest sent)))
+	(max-one?
+	 (lm-helper pattern-rest (se (first sent)) (bf sent) min))
+	(else (lm-helper pattern-rest sent '() min))))
+
+(define (lm-helper pattern-rest sent-matched sent-unmatched min)
+  (cond ((&lt; (length sent-matched) min) #f)
+	((match? pattern-rest sent-unmatched) #t)
+	((empty? sent-matched) #f)
+	(else (lm-helper pattern-rest
+			 (bl sent-matched)
+			 (se (last sent-matched) sent-unmatched)
+			 min))))
+</PRE>
+
+<P>Now we can rewrite <CODE>match?</CODE> to use <CODE>longest-match</CODE>.  <CODE>Match?</CODE>
+will delegate the handling of all placeholders to a subprocedure <CODE>match-special</CODE> that will invoke <CODE>longest-match</CODE> with the correct values
+for <CODE>min</CODE> and <CODE>max-one?</CODE> according to the table.
+
+<P><PRE>(define (match? pattern sent)                          ;; fourth version
+  (cond ((empty? pattern)
+	 (empty? sent))
+	<U>((special? (first pattern))</U>
+	 <U>(match-special (first pattern) (bf pattern) sent))</U>
+	((empty? sent) #f)
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+
+(define (special? wd)                                  ;; first version
+  (member? wd '(* &amp; ? !)))
+
+(define (match-special placeholder pattern-rest sent)  ;; first version
+  (cond ((equal? placeholder '?)
+	 (longest-match pattern-rest sent 0 #t))
+	((equal? placeholder '!)
+	 (longest-match pattern-rest sent 1 #t))
+	((equal? placeholder '*)
+	 (longest-match pattern-rest sent 0 #f))
+	((equal? placeholder '&amp;)
+	 (longest-match pattern-rest sent 1 #f))))
+</PRE>
+
+<P><H2>Naming the Matched Text</H2>
+
+<P>So far we've worked out how to match the four kinds of placeholders and
+return a true or false value indicating whether a match is possible.  Our
+program is almost finished; all we need to make it useful is the
+facility that will let us find out <EM>which</EM> words in the sentence
+matched each placeholder in the pattern.
+
+<P>We don't have to change the overall structure of the program in order to
+make this work.  But most of the procedures in the pattern matcher will have
+to be given an additional argument, the database of placeholder names
+and values that have been matched so far.<A NAME="text3" HREF="match#ft3">[3]</A> The formal parameter <CODE>known-values</CODE> will hold
+this database.  Its value will be a sentence containing placeholder names
+followed by the corresponding words and an exclamation point to separate the
+entries, as in the examples earlier in the chapter.  When we begin the
+search for a match, we use an empty sentence as the initial <CODE>known-values</CODE>:
+
+<P><PRE>(define (match pattern sent)
+  (match-using-known-values pattern sent '()))
+
+(define (match-using-known-values pattern sent known-values)
+  &hellip;)
+</PRE>
+
+<P>As <CODE>match-using-known-values</CODE> matches the beginning of a
+pattern with the beginning of a sentence, it invokes itself recursively with
+an expanded <CODE>known-values</CODE> containing each newly matched placeholder.
+For example, in evaluating
+
+<P><PRE>(match '(!twice !other !twice) '(cry baby cry))
+</PRE>
+
+<P>the program will call <CODE>match-using-known-values</CODE> four times:
+
+<P><TABLE><TR><TH><CODE>pattern</CODE><TH><CODE>sent</CODE>
+<TH><CODE>known-values</CODE>
+<TR><TD><CODE>(!twice !other !twice)&nbsp;&nbsp;</CODE>
+<TD><CODE>(cry baby cry)&nbsp;&nbsp;</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>(!other !twice)</CODE>
+<TD><CODE>(baby cry)</CODE>
+<TD><CODE>(twice cry !)</CODE>
+<TR><TD><CODE>(!twice)</CODE>
+<TD><CODE>(cry)</CODE>
+<TD><CODE>(twice cry ! other baby !)</CODE>
+<TR><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TD><CODE>(twice cry ! other baby !)</CODE>
+</TABLE>
+
+
+<P>In the first invocation, we try to match <CODE>!twice</CODE> against some part of
+the sentence.  Since <CODE>!</CODE> matches exactly one word, the only possibility
+is to match the word <CODE>cry</CODE>.  The recursive invocation, therefore, is made
+with the first words of the pattern and sentence removed, but with the match
+between <CODE>twice</CODE> and <CODE>cry</CODE> added to the database.
+
+<P>Similarly, the second invocation matches <CODE>!other</CODE> with <CODE>baby</CODE> and
+causes a third invocation with shortened pattern and sentence but a longer
+database.
+
+<P>The third invocation is a little different because the pattern contains the
+placeholder <CODE>!twice</CODE>, but the name <CODE>twice</CODE> is already in the
+database.  Therefore, this placeholder can't match whatever word happens to
+be available; it must match the same word that it matched before.  (Our
+program will have to check for this situation.)  Luckily, the sentence does
+indeed contain the word <CODE>cry</CODE> at this position.
+
+<P>The final invocation reaches the base case of the recursion, because the
+pattern is empty.  The value that <CODE>match-using-known-values</CODE> returns is
+the database in this invocation.
+
+<P><H2>The Final Version</H2>
+
+<P>We're now ready to show you the final version of the program.  The program
+structure is much like what you've seen before; the main difference is the
+database of placeholder names and values.  The program must add entries to
+this database and must look for database entries that were added earlier.
+Here are the three most important procedures and how they are changed
+from the earlier version to implement this capability:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>match-using-known-values</CODE>, essentially the same as what was
+formerly named <CODE>match?</CODE> except for bookkeeping details.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>match-special</CODE>, similar to the old version, except that it must
+recognize the case of a placeholder whose name has already been seen.  In
+this case, the placeholder can match only the same words that it matched
+before.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>longest-match</CODE> and <CODE>lm-helper</CODE>, also similar to the old
+versions, except that they have the additional job of adding to the database the
+name and value of any placeholder that they match.
+
+</TABLE>
+
+<P>Here are the modified procedures.  Compare them to the previous
+versions.
+
+<P><PRE>(define (<A NAME="g4"></A>match pattern sent)
+  (match-using-known-values pattern sent '()))
+
+(define (<A NAME="g5"></A>match-using-known-values pattern sent known-values)
+  (cond ((empty? pattern)
+	 (if (empty? sent) known-values 'failed))
+	((special? (first pattern))
+	 (let ((placeholder (first pattern)))
+	   (match-special (first placeholder)
+			  (bf placeholder)
+			  (bf pattern)
+			  sent
+			  known-values)))
+	((empty? sent) 'failed)
+	((equal? (first pattern) (first sent))
+	 (match-using-known-values (bf pattern) (bf sent) known-values))
+	(else 'failed)))
+
+(define (<A NAME="g6"></A>match-special howmany name pattern-rest sent known-values)
+  (let ((old-value (lookup name known-values)))
+    (cond ((not (equal? old-value 'no-value))
+	   (if (length-ok? old-value howmany)
+	       (already-known-match
+		  old-value pattern-rest sent known-values)
+	       'failed))
+	  ((equal? howmany '?)
+	   (longest-match name pattern-rest sent 0 #t known-values))
+	  ((equal? howmany '!)
+	   (longest-match name pattern-rest sent 1 #t known-values))
+	  ((equal? howmany '*)
+	   (longest-match name pattern-rest sent 0 #f known-values))
+	  ((equal? howmany '&amp;)
+	   (longest-match name pattern-rest sent 1 #f known-values)))))
+
+(define (<A NAME="g7"></A>longest-match name pattern-rest sent min max-one? known-values)
+  (cond ((empty? sent)
+	 (if (= min 0)
+	     (match-using-known-values pattern-rest
+				       sent
+				       (add name '() known-values))
+	     'failed))
+	(max-one?
+	 (lm-helper name pattern-rest (se (first sent))
+		    (bf sent) min known-values))
+	(else (lm-helper name pattern-rest
+			 sent '() min known-values))))
+
+(define (<A NAME="g8"></A>lm-helper name pattern-rest
+		   sent-matched sent-unmatched min known-values)
+  (if (&lt; (length sent-matched) min)
+      'failed
+      (let ((tentative-result (match-using-known-values
+			       pattern-rest
+			       sent-unmatched
+			       (add name sent-matched known-values))))
+	(cond ((not (equal? tentative-result 'failed)) tentative-result)
+	      ((empty? sent-matched) 'failed)
+	      (else (lm-helper name
+			       pattern-rest
+			       (bl sent-matched)
+			       (se (last sent-matched) sent-unmatched)
+			       min
+			       known-values))))))
+</PRE>
+
+<P>We haven't listed all of the minor procedures that these procedures invoke.
+A complete listing is at the end of the chapter, but we hope that you have
+enough confidence about the overall program structure to be able to assume
+these small details will work.  In the next few paragraphs we discuss some
+of the ways in which the procedures shown here differ from the earlier
+versions.
+
+<P>In the invocation of <CODE>match-special</CODE> we found it convenient to split the
+placeholder into its first character, the one that tells how many words can
+be matched, and the butfirst, which is the name of the placeholder.
+
+<P>What happens if <CODE>match-special</CODE> finds that the name is already in the
+database?  In this situation, we don't have to try multiple possibilities
+for the number of words to match (the usual job of <CODE>longest-match</CODE>); the
+placeholder must match exactly the words that it matched before.  In this
+situation, three things must be true in order for the match to succeed:
+<A NAME="threematchconditions"></A>
+(1) The first words of the <CODE>sent</CODE> argument must match the old value
+stored in the database.  (2) The partial <CODE>pattern</CODE> that remains after
+this placeholder must match the rest of the <CODE>sent</CODE>.  (3) The old value
+must be consistent with the number of words permitted by the <CODE>howmany</CODE>
+part of the placeholder.  For example, if the pattern is
+
+<P><PRE>(*stuff and !stuff)
+</PRE>
+
+<P>and the database says that the placeholder <CODE>*stuff</CODE> was
+matched by three words from the sentence, then the second placeholder <CODE>!stuff</CODE> can't possibly be matched because it accepts only one word.  This
+third condition is actually checked first, by <CODE>length-ok?</CODE>, and if we
+pass that hurdle, the other two conditions are checked by <CODE>already-known-match</CODE>.
+
+<P>The only significant change to <CODE>longest-match</CODE> is that it invokes
+<CODE>add</CODE> to compute an expanded database with the newly found match added,
+and it uses the resulting database as an argument to <CODE>match-using-known-values</CODE>.
+
+<P><H2>Abstract Data Types</H2>
+
+<P>As you know, a database of known values is represented in this program as a
+sentence in which the entries are separated by exclamation points.  Where is
+this representation accomplished in the program you've seen?  There's
+nothing like
+
+<P><PRE>&hellip;(sentence old-known-values name value '!) &hellip;</PRE>
+
+<P>anywhere in the procedures we've shown.  Instead, the program makes
+reference to the database of known values through two procedure calls:
+
+<P><PRE>(lookup name known-values)                   ; in match-special
+(add name matched known-values)              ; in longest-match
+</PRE>
+
+<P>Only the procedures <CODE>lookup</CODE> and <CODE>add</CODE> manipulate the
+database of known values:
+
+<P><PRE>(define (<A NAME="g9"></A>lookup name known-values)
+  (cond ((empty? known-values) 'no-value)
+	((equal? (first known-values) name)
+	 (get-value (bf known-values)))
+	(else (lookup name (skip-value known-values)))))
+
+(define (<A NAME="g10"></A>get-value stuff)
+  (if (equal? (first stuff) '!)
+      '()
+      (se (first stuff) (get-value (bf stuff)))))
+
+(define (<A NAME="g11"></A>skip-value stuff)
+  (if (equal? (first stuff) '!)
+      (bf stuff)
+      (skip-value (bf stuff))))
+
+(define (<A NAME="g12"></A>add name value known-values)
+  (if (empty? name)
+      known-values
+      (se known-values name value '!)))
+</PRE>
+
+<P>These procedures are full of small details.  For example, it's a little
+tricky to extract the part of a sentence from a name to the next exclamation
+point.  It's convenient that we could write the more important procedures,
+such as <CODE>longest-match</CODE>, without filling them with these details.
+As far as <CODE>longest-match</CODE> knows, <CODE>lookup</CODE> and <CODE>add</CODE> could be
+Scheme primitive procedures.  In effect we've created a new data type, with
+<CODE>add</CODE> as its constructor and <CODE>lookup</CODE> as its selector.
+
+<P>Types such as these, that are invented by a programmer and aren't part of the
+Scheme language itself, are called <EM><A NAME="g13"></A><A NAME="g14"></A>abstract data types.</EM>
+<A NAME="g15"></A>
+<A NAME="g16"></A>
+Creating an abstract data type means drawing a barrier between an idea about
+some kind of information we want to model in a program and the particular
+mechanism that we use to represent the information.  In this case, the
+information is a collection of name-value associations, and the particular
+mechanism is a sentence with exclamation points and so on.  The pattern
+matcher doesn't think of the database as a sentence.  For example, it would
+be silly to translate the database into Pig Latin or find its acronym.
+
+<P>Just as we distinguish the <EM>primitive</EM> procedures that Scheme knows
+all along from the <EM>compound</EM> procedures that the Scheme programmer
+defines, we could use the names &quot;primitive data type&quot; for types such as
+numbers and Booleans that are built into Scheme and &quot;compound data type&quot;
+for ones that the programmer invents by defining selectors and constructors.
+But &quot;compound data type&quot; is a bit of a pun, because it also suggests a data
+type built out of smaller pieces, just as a compound expression is built of
+smaller expressions.  Perhaps that's why the name &quot;abstract data type&quot; has
+become generally accepted.  It's connected to the idea of abstraction
+that we introduced earlier, because in order to create an abstract data type,
+we must specify the selectors and constructors and give names to those
+patterns of computation.
+
+<P><H2>Backtracking and <CODE>Known-Values</CODE></H2>
+
+<P>What happens to the database in cases that require backtracking, where
+a particular recursive call might be &quot;on the wrong track&quot;?  Let's trace
+<CODE>match-using-known-values</CODE> and see what happens.  (We'll use the
+little-people model to discuss this example, and so we're annotating each
+invocation in the trace with the name of its little person.)
+
+<P><PRE>&gt; (trace match-using-known-values)
+&gt; (match '(*start me *end) '(love me do))<SMALL><CODE>
+(match-using-known-values (*start me *end) (love me do) ())          Martha
+|  (match-using-known-values (me *end) () (start love me do !))      Mercutio
+|  failed
+|  (match-using-known-values (me *end) (do) (start love me !))       Masayuki
+|  failed
+|  (match-using-known-values (me *end) (me do) (start love !))       Mohammad
+|  |  (match-using-known-values (*end) (do) (start love !))          Mae
+|  |  |  (match-using-known-values () () (start love ! end do !))    Merlin
+|  |  |  (start love ! end do !)
+|  |  (start love ! end do !)
+|  (start love ! end do !)
+(start love ! end do !)
+</CODE></SMALL>(START LOVE ! END DO !)
+</PRE>
+
+<P>Martha, the first little person shown, has an empty <CODE>known-values</CODE>.  She
+makes three attempts to match <CODE>*start</CODE> with parts of the sentence.  In
+each case, a little person is hired with the provisional match in his or her
+<CODE>known-values</CODE>.  (Actually, Martha does not directly hire Mercutio and
+the others.  Martha hires a <CODE>match-special</CODE> little person, who in turn
+hires a <CODE>longest-match</CODE> specialist, who hires an <CODE>lm-helper</CODE>
+specialist, who hires Mercutio.  But that added complexity isn't important
+for the point we're focusing on right now, namely, how backtracking can
+work.  Pretend Martha hires Mercutio.)
+
+<P>If you don't use the little-people model, but instead think about the
+program as if there were just one <CODE>known-values</CODE> variable, then the
+backtracking can indeed be very mysterious.  Once a provisional match is
+added to the database, how is it ever removed?  The answer is that it doesn't
+work that way.  There isn't a &quot;the&quot; database.  Instead, each little person
+has a separate database.  If an attempted match fails, the little person who
+reports the failure just stops working.  For example, Martha hires Mercutio
+to attempt a match in which the name <CODE>start</CODE> has the value <CODE>love me
+do</CODE>.  Mercutio is unable to complete the match, and reports failure.  It is
+Martha, not Mercutio, who then hires Masayuki to try another value for <CODE>start</CODE>.  Martha's database hasn't changed, so Martha gives Masayuki a
+database that reflects the new trial value but not the old one.
+
+<P>Not every hiring of a little person starts from an empty database.  When a
+match is partially successful, the continuation of the same attempt must
+benefit from the work that's already been done.  So, for example, when
+Mohammad hires Mae, and when Mae hires Merlin, each of them passes on an
+extended database, not an empty one.  Specifically, Mae gives Merlin the
+new match of the name <CODE>end</CODE> with the value <CODE>do</CODE>, but also the match
+of <CODE>start</CODE> with <CODE>love</CODE> that she was given by Mohammad.
+
+<P>So as you can see, we don't have to do anything special to keep track of our
+database when we backtrack; the structure of the recursion takes care of
+everything for free.
+
+<P><H2>How We Wrote It</H2>
+
+<P>For explanatory purposes we've chosen to present the pieces of this program
+in a different order from the one in which we actually wrote them.  We <EM>did</EM> implement the easy placeholders (<CODE>!</CODE> and <CODE>?</CODE>) before the
+harder ones.  But our program had provision for a database of names from the
+beginning.
+
+<P>There is no &quot;right&quot; way to approach a programming problem.  Our particular
+approach was determined partly by our past experience.  Each of us had
+written similar programs before, and we had preconceived ideas about the
+easy and hard parts.  You might well start at a different point.  For
+example, here is an elegant small program we'd both been shown by friends:
+
+<P><PRE>(define (match? pattern sent)
+  (cond ((empty? pattern) (empty? sent))
+	((empty? sent)
+	 (and (equal? (first pattern) '*) (match? (bf pattern) sent)))
+	((equal? (first pattern) '*)
+	 (or (match? pattern (bf sent))
+	     (match? (bf pattern) sent)))
+	(else (and (equal? (first pattern) (first sent))
+		   (match? (bf pattern) (bf sent))))))
+</PRE>
+
+<P>What's appealing about this is the funny symmetry of taking the
+<CODE>butfirst</CODE> of the pattern <EM>or</EM> of the sentence.  That's not
+something you'd naturally think of, probably, but once you've worked out how
+it can work, it affects your preconceptions when you set out to write a
+pattern matcher yourself.
+
+<P>Based on that inspiration, we might well have started with the hard cases
+(such as <CODE>*</CODE>), with the idea that once they're in place, the easy cases
+won't change the program structure much.
+
+<P><H2>Complete Program Listing</H2>
+
+<P><P><P><PRE>
+(define (match pattern sent)
+  (match-using-known-values pattern sent '()))
+
+(define (match-using-known-values pattern sent known-values)
+  (cond ((empty? pattern)
+	 (if (empty? sent) known-values 'failed))
+	((special? (first pattern))
+	 (let ((placeholder (first pattern)))
+	   (match-special (first placeholder)
+			  (bf placeholder)
+			  (bf pattern)
+			  sent
+			  known-values)))
+	((empty? sent) 'failed)
+	((equal? (first pattern) (first sent))
+	 (match-using-known-values (bf pattern) (bf sent) known-values))
+	(else 'failed)))
+
+(define (special? wd)
+  (member? (first wd) '(* & ? !)))
+
+(define (match-special howmany name pattern-rest sent known-values)
+  (let ((old-value (lookup name known-values)))
+    (cond ((not (equal? old-value 'no-value))
+	   (if (length-ok? old-value howmany)
+	       (already-known-match
+		  old-value pattern-rest sent known-values)
+	       'failed))
+	  ((equal? howmany '?)
+	   (longest-match name pattern-rest sent 0 #t known-values))
+	  ((equal? howmany '!)
+	   (longest-match name pattern-rest sent 1 #t known-values))
+	  ((equal? howmany '*)
+	   (longest-match name pattern-rest sent 0 #f known-values))
+	  ((equal? howmany '&)
+	   (longest-match name pattern-rest sent 1 #f known-values)))))
+
+(define (length-ok? value howmany)
+  (cond ((empty? value) (member? howmany '(? *)))
+	((not (empty? (bf value))) (member? howmany '(* &)))
+	(else #t)))
+
+(define (already-known-match value pattern-rest sent known-values)
+  (let ((unmatched (chop-leading-substring value sent)))
+    (if (not (equal? unmatched 'failed))
+	(match-using-known-values pattern-rest unmatched known-values)
+	'failed)))
+
+(define (chop-leading-substring value sent)
+  (cond ((empty? value) sent)
+	((empty? sent) 'failed)
+	((equal? (first value) (first sent))
+	 (chop-leading-substring (bf value) (bf sent)))
+	(else 'failed)))
+
+(define (longest-match name pattern-rest sent min max-one? known-values)
+  (cond ((empty? sent)
+	 (if (= min 0)
+	     (match-using-known-values pattern-rest
+				       sent
+				       (add name '() known-values))
+	     'failed))
+	(max-one?
+	 (lm-helper name pattern-rest (se (first sent))
+		    (bf sent) min known-values))
+	(else (lm-helper name pattern-rest
+			 sent '() min known-values))))
+
+(define (lm-helper name pattern-rest
+		   sent-matched sent-unmatched min known-values)
+  (if (< (length sent-matched) min)
+      'failed
+      (let ((tentative-result (match-using-known-values
+			       pattern-rest
+			       sent-unmatched
+			       (add name sent-matched known-values))))
+	(cond ((not (equal? tentative-result 'failed)) tentative-result)
+	      ((empty? sent-matched) 'failed)
+	      (else (lm-helper name
+			       pattern-rest
+			       (bl sent-matched)
+			       (se (last sent-matched) sent-unmatched)
+			       min
+			       known-values))))))
+
+;;; Known values database abstract data type
+
+(define (lookup name known-values)
+  (cond ((empty? known-values) 'no-value)
+	((equal? (first known-values) name)
+	 (get-value (bf known-values)))
+	(else (lookup name (skip-value known-values)))))
+
+(define (get-value stuff)
+  (if (equal? (first stuff) '!)
+      '()
+      (se (first stuff) (get-value (bf stuff)))))
+
+(define (skip-value stuff)
+  (if (equal? (first stuff) '!)
+      (bf stuff)
+      (skip-value (bf stuff))))
+
+(define (add name value known-values)
+  (if (empty? name)
+      known-values
+      (se known-values name value '!)))
+</PRE><P>
+
+
+<P><H2>Exercises about Using the Pattern Matcher</H2>
+
+<P><B>16.1</B>&nbsp;&nbsp;Design and test a pattern that matches any sentence containing the word <CODE>C</CODE> three times (not necessarily next to each other).
+
+
+<P>
+<B>16.2</B>&nbsp;&nbsp;Design and test a pattern that matches a sentence consisting of two copies
+of a smaller sentence, such as <CODE>(a b a b)</CODE>.
+
+
+<P>
+<B>16.3</B>&nbsp;&nbsp;Design and test a pattern that matches any sentence of no more than three
+words.
+
+
+<P>
+<B>16.4</B>&nbsp;&nbsp;Design and test a pattern that matches any sentence of at least three words.
+
+
+<P>
+<B>16.5</B>&nbsp;&nbsp;Show sentences of length 2, 3, and 4 that match the pattern
+
+<P><PRE>(*x *y *y *x)
+</PRE>
+
+<P>For each length, if no sentence can match the pattern, explain why
+not.
+
+
+<P>
+<B>16.6</B>&nbsp;&nbsp;Show sentences of length 2, 3, and 4 that match the pattern
+
+<P><PRE>(*x *y &amp;y &amp;x)
+</PRE>
+
+<P>For each length, if no sentence can match the pattern, explain why
+not.
+
+
+<P>
+<B>16.7</B>&nbsp;&nbsp;List <EM>all</EM> the sentences of length 6 or less, starting with <CODE>a b a</CODE>, that match the pattern
+
+<P><PRE>(*x *y *y *x)
+</PRE>
+
+
+<P>
+<H2>Exercises about Implementation</H2>
+
+<P><B>16.8</B>&nbsp;&nbsp;Explain how <CODE>longest-match</CODE> handles an empty sentence.
+
+
+<P>
+<B>16.9</B>&nbsp;&nbsp;Suppose the first <CODE>cond</CODE> clause in <CODE>match-using-known-values</CODE> were
+
+<P><PRE>((empty? pattern) known-values)
+</PRE>
+
+<P>Give an example of a pattern and sentence for which the modified
+program would give a different result from the original.
+
+
+<P>
+<B>16.10</B>&nbsp;&nbsp;What happens if the sentence argument&mdash;not the pattern&mdash;contains
+the word <CODE>*</CODE> somewhere?
+
+
+<P>
+<B>16.11</B>&nbsp;&nbsp;For each of the following examples, how many <CODE>match-using-known-values</CODE>
+little people are required?
+
+<P><PRE>(match '(from me to you) '(from me to you))
+(match '(*x *y *x) '(a b c a b))
+(match '(*x *y *z) '(a b c a b))
+(match '(*x hey *y bulldog *z) '(a hey b bulldog c))
+(match '(*x a b c d e f) '(a b c d e f))
+(match '(a b c d e f *x) '(a b c d e f))
+</PRE>
+
+<P>In general, what can you say about the characteristics that make a
+pattern easy or hard to match?
+
+
+<P>
+<B>16.12</B>&nbsp;&nbsp;Show a pattern with the following two properties:  (1) It has at least two
+placeholders.  (2) When you match it against any sentence, every invocation
+of <CODE>lookup</CODE> returns <CODE>no-value</CODE>.
+
+
+<P>
+<B>16.13</B>&nbsp;&nbsp;Show a pattern and a sentence that can be used as arguments to <CODE>match</CODE>
+so that <CODE>lookup</CODE> returns <CODE>(the beatles)</CODE> at some point during the
+match.
+
+
+<P>
+<B>16.14</B>&nbsp;&nbsp;Our program can still match patterns with unnamed placeholders.
+How would it affect the operation of the program if these unnamed
+placeholders were added to the database?  What part of the program keeps
+them from being added?
+
+
+<P>
+<B>16.15</B>&nbsp;&nbsp;Why don't <CODE>get-value</CODE> and <CODE>skip-value</CODE> check for an empty argument
+as the base case?
+
+
+<P>
+<B>16.16</B>&nbsp;&nbsp;Why didn't we write the first <CODE>cond</CODE> clause in <CODE>length-ok?</CODE> as
+the following?
+
+<P><PRE>((and (empty? value) (member? howmany '(? *))) #t)
+</PRE>
+
+<P>
+<B>16.17</B>&nbsp;&nbsp;Where in the program is the initial empty database of known values
+established?
+
+
+<P>
+<B>16.18</B>&nbsp;&nbsp;For the case of matching a placeholder name that's already been matched in
+this pattern, we said on page <A HREF="match.html#threematchconditions">there</A> that three conditions
+must be checked.  For each of the three, give a pattern and sentence that
+the program would incorrectly match if the condition were not checked.
+
+
+<P>
+<B>16.19</B>&nbsp;&nbsp;What will the following example do?
+
+<P><PRE>(match '(?x is *y !x) '(! is an exclamation point !))
+</PRE>
+
+<P>Can you suggest a way to fix this problem?
+
+
+<P>
+<B>16.20</B>&nbsp;&nbsp;Modify the pattern matcher so that a placeholder of the form <CODE>*15x</CODE> is like <CODE>*x</CODE> except that it can be matched only by exactly 15
+words.
+
+<P><PRE>&gt; (match '(*3front *back) '(your mother should know))
+(FRONT YOUR MOTHER SHOULD ! BACK KNOW !)
+</PRE>
+
+<P>
+<B>16.21</B>&nbsp;&nbsp;Modify the pattern matcher so that a <CODE>+</CODE> placeholder (with or without a
+name attached) matches only a number:
+
+<P><PRE>&gt; (match '(*front +middle *back) '(four score and 7 years ago))
+(FRONT FOUR SCORE AND ! MIDDLE 7 ! BACK YEARS AGO !)
+</PRE>
+
+<P>The <CODE>+</CODE> placeholder is otherwise like <CODE>!</CODE>&mdash;it must match
+exactly one word.
+
+
+<P>
+<B>16.22</B>&nbsp;&nbsp;Does your favorite text editor or word processor have a search command that
+allows you to search for patterns rather than only specific strings of
+characters?  Look into this and compare your editor's capabilities with
+that of our pattern matcher.
+
+
+<P>
+
+<P>
+<HR>
+<A NAME="ft1" HREF="match#text1">[1]</A> Why not return the
+sentence if successful or <CODE>#f</CODE> otherwise?  That would be fine in most
+versions of Scheme, but as we mentioned earlier, the empty sentence <CODE>()</CODE>
+is the same as the false value <CODE>#f</CODE> in some dialects.  In those
+Schemes, a successfully matched pattern with no named placeholders, for
+which the program should return an empty sentence, would be
+indistinguishable from an unmatched pattern.<P>
+<A NAME="ft2" HREF="match#text2">[2]</A> Actually, since <CODE>or</CODE> is a special form, Scheme avoids
+the need to try the second alternative if the first one succeeds.<P>
+<A NAME="ft3" HREF="match#text3">[3]</A> The word <EM>database</EM>
+has two possible meanings in computer science, a broad meaning and a narrow
+one.  The broad meaning, which we're using here, is a repository of
+information to which the program periodically adds new items for later
+retrieval.  The narrow meaning is a collection of information that's
+manipulated by a <EM>database program,</EM> which provides facilities for
+adding new information, modifying existing entries, selecting entries that
+match some specified criterion, and so on.  We'll see a database program
+near the end of the book.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch15/poker.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch17/part5.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch16/match.html b/js/games/nluqo.github.io/~bh/ssch16/match.html
new file mode 100644
index 0000000..922bee4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch16/match.html
@@ -0,0 +1,1399 @@
+<P>
+
+<P><A NAME="bongard"></A><CENTER><IMG SRC="../ss-pics/patterns.jpg" ALT="figure: patterns"></CENTER><P><CENTER>In each set, how do the ones on the left differ from the ones on the
+right?
+</CENTER><P>
+
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 16: Example: Pattern Matcher</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 16</H2>
+<H1>Example: Pattern Matcher</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch16.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch15/poker.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch17/part5.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>It's time for another extended example in which we use the Scheme tools
+we've been learning to accomplish something practical.  We'll start by
+describing how the program will work before we talk about how to implement
+it.
+
+<P>You can load our program into Scheme by typing
+
+<P><PRE>(load &quot;match.scm&quot;)
+</PRE>
+
+<P><H2>Problem Description</H2>
+
+<P>A <EM><A NAME="g1"></A><A NAME="g2"></A>pattern matcher</EM> is a commonly used procedure whose job is
+to compare a sentence to a range of possibilities.  An example may make this
+clear:
+
+<P><PRE>&gt; (match '(* me *) '(love me do))
+#T
+
+&gt; (match '(* me *) '(please please me))
+#T
+
+&gt; (match '(* me *) '(in my life))
+#F
+</PRE>
+
+<P>The first argument, <CODE>(* me *)</CODE>, is a <EM>pattern.</EM>  In the
+pattern, each asterisk (<CODE>*</CODE>) means &quot;any number of words, including no
+words at all.&quot; So the entire pattern matches any sentence that contains the
+word &quot;me&quot; anywhere within it.  You can think of <CODE>match</CODE> as a more
+general form of <CODE>equal?</CODE> in the sense that it compares two sentences
+and tells us whether they're the same, but with a broader meaning of &quot;the
+same.&quot;
+
+<P>Our pattern matcher will accept patterns more complicated than this first
+example.  There are four <EM>special characters</EM> that indicate
+unspecified parts of a pattern, depending on the number of words that should
+be allowed:
+
+<P><P><TABLE><TR><TH align="right" valign="top"><CODE>?</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">At most one word.
+<TR><TH align="right" valign="top"><CODE>!</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Exactly one word.
+<TR><TH align="right" valign="top"><CODE>&amp;</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">At least one word.
+<TR><TH align="right" valign="top"><CODE>*</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Any number of words.
+</TABLE>
+
+<P><P>These characters are meant to be somewhat mnemonic.  The question
+mark means &quot;maybe there's a word.&quot; The exclamation point means &quot;precisely
+one word!&quot; (And it's vertical, just like the digit 1, sort of.)  The
+ampersand, which ordinarily means &quot;and,&quot; indicates that we're matching a
+word and maybe more.  The asterisk doesn't have any mnemonic value, but it's
+what everyone uses for a general matching indicator anyway.
+
+<P>We can give a <EM>name</EM> to the collection of words that match an
+unspecified part of a pattern by including in the pattern a word that starts
+with one of the four special characters and continues with the name.  If the
+match succeeds, <CODE>match</CODE> will return a sentence containing these names
+and the corresponding values from the sentence:
+
+<P><PRE>&gt; (match '(*start me *end) '(love me do))
+(START LOVE ! END DO !)
+
+&gt; (match '(*start me *end) '(please please me))
+(START PLEASE PLEASE ! END !)
+
+&gt; (match '(mean mr mustard) '(mean mr mustard))
+()
+
+&gt; (match '(*start me *end) '(in my life))
+FAILED
+</PRE>
+
+<P>In these examples, you see that <CODE>match</CODE> doesn't really return
+<CODE>#t</CODE> or <CODE>#f</CODE>; the earlier set of examples showed a simplified
+picture.  In the first of the new examples, the special pattern word
+<CODE>*start</CODE> is allowed to match any number of words, as indicated by the
+asterisk.  In this case it turned out to match the single word &quot;love.&quot;
+<CODE>Match</CODE> returns a result that tells us which words of the sentence match
+the named special words in the pattern.  (We'll call one of these special
+pattern words a <EM>placeholder.</EM>) The exclamation points in the
+returned value are needed to separate one match from another.  (In the second
+example, the name <CODE>end</CODE> was matched by an empty set of words.)  In the
+third example, the match was successful, but since there were no
+placeholders the returned sentence was empty.  If the match is unsuccessful,
+<CODE>match</CODE> returns the word <CODE>failed</CODE>.<A NAME="text1" HREF="match.html#ft1">[1]</A>
+
+<P>If the same placeholder name appears more than once in the pattern, then it
+must be matched by the same word(s) in the sentence each time:
+
+<P><PRE>&gt; (match '(!twice !other !twice) '(cry baby cry))
+(TWICE CRY ! OTHER BABY !)
+
+&gt; (match '(!twice !other !twice) '(please please me))
+FAILED
+</PRE>
+
+<P>Some patterns might be matchable in more than one way.  For example, the
+invocation
+
+<P><PRE>&gt; (match '(*front *back) '(your mother should know))
+</PRE>
+
+<P>might return any of five different correct answers:
+
+<P><PRE>(FRONT YOUR MOTHER SHOULD KNOW ! BACK !)
+(FRONT YOUR MOTHER SHOULD ! BACK KNOW !)
+(FRONT YOUR MOTHER ! BACK SHOULD KNOW !)
+(FRONT YOUR ! BACK MOTHER SHOULD KNOW !)
+(FRONT ! BACK YOUR MOTHER SHOULD KNOW !)
+</PRE>
+
+<P>We arbitrarily decide that in such cases the first placeholder
+should match as many words as possible, so in this case <CODE>match</CODE> will
+actually return the first of these answers.
+
+<P>Before continuing, you might want to look at the first batch of exercises at
+the end of this chapter, which are about using the pattern matcher.  (The
+rest of the exercises are about the implementation, which we'll discuss
+next.)
+
+<P><H2>Implementation: When Are Two Sentences Equal?</H2>
+
+<P>Our approach to implementation will be to start with something we already
+know how to write: a predicate that tests whether two sentences are exactly
+equal.  We will add capabilities one at a time until we reach our goal.
+
+<P>Suppose that Scheme's primitive <CODE>equal?</CODE> function worked only for words
+and not for sentences.  We could write an equality tester for sentences,
+like this:
+
+<P><PRE>(define (<A NAME="g3"></A>sent-equal? sent1 sent2)
+  (cond ((empty? sent1)
+	 (empty? sent2))
+	((empty? sent2) #f)
+	((equal? (first sent1) (first sent2))
+	 (sent-equal? (bf sent1) (bf sent2)))
+	(else #f)))
+</PRE>
+
+<P>Two sentences are equal if each word in the first sentence is
+equal to the corresponding word in the second.  They're unequal if one
+sentence runs out of words before the other.
+
+<P>Why are we choosing to accept Scheme's primitive word comparison but rewrite
+the sentence comparison?  In our pattern matcher, a placeholder in the
+pattern corresponds to a group of words in the sentence.  There is no kind
+of placeholder that matches only part of a word.  (It would be possible to
+implement such placeholders, but we've chosen not to.)  Therefore, we will
+never need to ask whether a word is &quot;almost equal&quot; to another word.
+
+<P><H2>When Are Two Sentences Nearly Equal?</H2>
+
+<P>Pattern matching is just a more general form of this <CODE>sent-equal?</CODE> 
+procedure.  Let's write a very simple pattern matcher that knows only about
+the &quot;!&quot; special character and doesn't let us name the words
+that match the exclamation points in the pattern.  We'll call this one <CODE>match?</CODE> with a question mark because it returns just true or false.
+
+<P><PRE>(define (match? pattern sent)                ;; first version: ! only
+  (cond ((empty? pattern)
+	 (empty? sent))
+	((empty? sent) #f)
+	<U>((equal? (first pattern) '!)</U>
+	 <U>(match? (bf pattern) (bf sent)))</U>
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+</PRE>
+
+<P>This program is exactly the same as <CODE>sent-equal?</CODE>, except for
+the highlighted <CODE>cond</CODE> clause.  We are still comparing each word of the
+pattern with the corresponding word of the sentence, but now an exclamation
+mark in the pattern matches <EM>any</EM> word in the sentence.  (If <CODE>first</CODE> of <CODE>pattern</CODE> is an exclamation mark, we don't even look at <CODE>first</CODE> of <CODE>sent</CODE>.)
+
+<P>Our strategy in the next several sections will be to expand the pattern
+matcher by implementing the remaining special characters, then finally
+adding the ability to name the placeholders.  For now, when we say something
+like &quot;the <CODE>*</CODE> placeholder,&quot; we mean the placeholder consisting of the
+asterisk alone.  Later, after we add named placeholders, the same procedures
+will implement any placeholder that begins with an asterisk.
+
+<P><H2>Matching with Alternatives</H2>
+
+<P>The <CODE>!</CODE> matching is not much harder than <CODE>sent-equal?</CODE>, because
+it's still the case that one word of the pattern must match one word of the
+sentence.  When we introduce the <CODE>?</CODE> option, the structure of the
+program must be more complicated, because a question mark in the pattern
+might or might not be paired up with a word in the sentence.  In other
+words, the pattern and the sentence might match without being the same
+length.
+
+<P><PRE>(define (match? pattern sent)                ;; second version: ! and ?
+  (cond ((empty? pattern)
+	 (empty? sent))
+	<U>((equal? (first pattern) '?)</U>
+	 <U>(if (empty? sent)</U>
+	     <U>(match? (bf pattern) '())</U>
+	     <U>(or (match? (bf pattern) (bf sent))</U>
+		 <U>(match? (bf pattern) sent))))</U>
+	((empty? sent) #f)
+	((equal? (first pattern) '!)
+	 (match? (bf pattern) (bf sent)))
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+</PRE>
+
+<P>Note that the new <CODE>cond</CODE> clause comes <EM>before</EM> the check
+to see if <CODE>sent</CODE> is empty.  That's because <CODE>sent</CODE> might be empty and
+a pattern of <CODE>(?)</CODE> would still match it.  But if the sentence is empty,
+we know that the question mark doesn't match a word, so we just have to make
+sure that the <CODE>butfirst</CODE> of the pattern contains nothing but question
+marks.  (We don't have a predicate named <CODE>all-question-marks?</CODE>; instead,
+we use <CODE>match?</CODE> recursively to make this test.)
+
+<P>In general, a question mark in the pattern has to match either one word or
+zero words in the sentence.  How do we decide?  Our rule is that each
+placeholder should match as many words as possible, so we prefer to match
+one word if we can.  But allowing the question mark to match a word might
+prevent the rest of the pattern from matching the rest of the sentence.
+
+<P>Compare these two examples:
+
+<P><PRE>&gt; (match? '(? please me) '(please please me))
+#T
+
+&gt; (match? '(? please me) '(please me))
+#T
+</PRE>
+
+<P>In the first case, the first thing in the pattern is a question mark and the
+first thing in the sentence is &quot;please,&quot; and they match.  That leaves
+&quot;please me&quot; in the pattern to match &quot;please me&quot; in the sentence.
+
+<P>In the second case, we again have a question mark as the first thing in the
+pattern and &quot;please&quot; as the first thing in the sentence.  But this time,
+we had better not use up the &quot;please&quot; in the sentence, because that will
+only leave &quot;me&quot; to match &quot;please me.&quot; In this case the question mark has
+to match no words.
+
+<P>To you, these examples probably look obvious.  That's because you're a human
+being, and you can take in the entire pattern and the entire sentence all at
+once.  Scheme isn't as smart as you are; it has to compare words one pair at
+a time.  To Scheme, the processing of both examples begins with question
+mark as the first word of the pattern and &quot;please&quot; as the first word of
+the sentence.  The pattern matcher has to consider both cases.
+
+<P>How does the procedure consider both cases?  Look at the invocation of <CODE>or</CODE> by the <CODE>match?</CODE> procedure.  There are two alternatives; if either
+turns out true, the match succeeds.  One is that we try to match the
+question mark with the first word of the sentence just as we matched <CODE>!</CODE> in our earlier example&mdash;by making a recursive call on the <CODE>butfirst</CODE>s of the pattern and sentence.  If that returns true, then the
+question mark matches the first word.
+
+<P>The second alternative that can make the match succeed is a recursive call
+to <CODE>match?</CODE> on the <CODE>butfirst</CODE> of the pattern and the <EM>entire</EM>
+sentence; this corresponds to matching the <CODE>?</CODE> against
+nothing.<A NAME="text2" HREF="match.html#ft2">[2]</A>
+
+<P>Let's trace <CODE>match?</CODE> so that you can see how these two cases are
+handled differently by the program.
+
+<P><PRE>&gt; (trace match?)
+&gt; (match? '(? please me) '(please please me))
+<SMALL><CODE>(match? (? please me) (please please me))
+| (match? (please me) (please me))                Try matching <CODE>?</CODE> with <CODE>please</CODE>.
+|  |  (match? (me) (me))
+|  |  |  (match? () ())
+|  |  |  #t                                       It works!
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P><PRE>&gt; (match? '(? please me) '(please me))
+<SMALL><CODE>(match? (? please me) (please me))
+| (match? (please me) (me))                        Try matching <CODE>?</CODE> with <CODE>please</CODE>.
+|  #f                                              It doesn't work.
+| (match? (please me) (please me))                 This time, match <CODE>?</CODE> with nothing.
+|  |  (match? (me) (me))
+|  |  |  (match? () ())
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P><H2>Backtracking</H2>
+
+<P>The program structure that allows for two alternative routes to success has
+more profound implications than you may think at first.
+
+<P>When <CODE>match?</CODE> sees a question mark in the pattern, it has to decide
+whether or not to &quot;use up&quot; a word of the sentence by matching it with the
+question mark.  You might wonder, &quot;How does the question mark decide
+whether to take a word?&quot; The answer is that the decision isn't made &quot;by
+the question mark&quot;; there's nothing about the particular word that the
+question mark might match that helps with the decision!  Instead, the
+decision depends on matching what comes to the right of the question mark.
+
+<P>Compare this situation with the <CODE>keep</CODE> recursive pattern.  There, too,
+the procedure makes a decision about the first word of a sentence, and each
+alternative leads to a recursive call for the <CODE>butfirst</CODE>:
+
+<P><PRE>(cond ((empty? sent) '())
+      ((some-test? (first sent))
+       (se (first sent) <U>(recursive-call (bf sent))</U>))
+      (else <U>(recursive-call (bf sent))</U>))
+</PRE>
+
+<P>The difference is that in the <CODE>keep</CODE> pattern the choice
+between alternatives <EM>can</EM> be made just by looking at the immediate
+situation&mdash;the single word that might or might not be chosen; the decision
+doesn't depend on anything in the rest of the problem.  As a result, the
+choice has already been made before any recursive call happens.  Therefore,
+only one of the recursive calls is actually made, to make choices about the
+remaining words in the sentence.
+
+<P>In <CODE>match?</CODE>, by contrast, any particular invocation can't make its
+choice until it knows the result of a recursive invocation.  The result
+from the recursive call determines the choice made by the caller.
+
+<P>Here's a model that might help you think about this kind of recursion.  <CODE>Match?</CODE> sees a question mark in the pattern.  It makes a <EM>tentative</EM>
+decision that this question mark should match the first word of the
+sentence, and it uses a recursive invocation to see whether that decision
+allows the rest of the problem to be solved.  If so, the tentative choice
+was correct.  If not, <CODE>match?</CODE> tries an alternative decision that the
+question mark doesn't match a word.  This alternative is still tentative;
+another recursive call is needed to see if the rest of the pattern can
+succeed.  If not, the overall match fails.
+
+<P>This structure is called <EM>backtracking.</EM>
+
+<P>What if there are two question marks in the pattern?  Then there are <EM>four</EM> ways to match the overall pattern.  Both question marks can match a
+word, or only the first question mark, or only the second, or neither.  A
+pattern with several placeholders leads to even more alternatives.  A
+pattern with three question marks will have eight alternatives.  (All three
+match words, the first two do but the third doesn't, and so on.)  A pattern
+with 10 question marks will have 1024 alternatives.  How can <CODE>match?</CODE>
+try all these alternatives?  The procedure seems to make only one two-way
+choice; how can it accomplish a four-way or many-way decision?
+
+<P>The secret is the same as the usual secret of recursion:  Most of the work
+is done in recursive calls.  We take a leap of faith that recursive
+invocations will take care of the decisions concerning question marks later
+in the pattern.  Think about it using the backtracking model.  Let's suppose
+there are 10 question marks in the pattern.  When <CODE>match?</CODE> encounters
+the leftmost question mark, it makes a tentative decision to match the
+question mark with a word of the sentence.  To test whether this choice can
+work, <CODE>match?</CODE> invokes itself recursively on a pattern with nine
+question marks.  By the leap of faith, the recursive invocation will examine
+512 ways to match question marks with words&mdash;half of the total number.  If
+one of these 512 works, we're finished.  If not, the original <CODE>match?</CODE>
+invocation changes its tentative choice, deciding instead <EM>not</EM> to
+match its question mark (the leftmost one) with a word of the sentence.
+Another recursive call is made based on that decision, and that recursive
+call checks out the remaining 512 possibilities.
+
+<P>By the way, the program doesn't always have to try all of the different
+combinations of question marks matching or not matching words separately.
+For example, if the problem is
+
+<P><PRE>(match? '(a b ? ? ? ?) '(x y z w p q))
+</PRE>
+
+<P>then the very first comparison discovers that <CODE>a</CODE> is different
+from <CODE>x</CODE>, so none of the 16 possible arrangements about question marks
+matching or not matching words will make a difference.
+
+<P>Here are some traced examples involving patterns with two question marks, to
+show how the result of backtracking depends on the individual problem.
+
+<P><PRE>&gt; (match? '(? ? foo) '(bar foo))
+<SMALL><CODE>(match? (? ? foo) (bar foo))
+|  (match? (? foo) (foo))
+|  |  (match? (foo) ())
+|  |  #f
+|  |  (match? (foo) (foo))
+|  |  |  (match? () ())
+|  |  |  #t
+|  |  #t
+|  #t 
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P>In this first example, the first question mark tries to match the
+word <CODE>bar</CODE>, but it can't tell whether or not that match will succeed
+until the recursive call returns.  In the recursive call, the second
+question mark tries to match the word <CODE>foo</CODE>, and fails.  Then the
+second question mark tries again, this time matching nothing, and succeeds.
+Therefore, the first question mark can report success; it never has to try a
+recursive call in which it doesn't match a word.
+
+<P>In our second example, each question mark will have to try both alternatives,
+matching and then not matching a word, before the overall match succeeds.
+
+<P><PRE>&gt; (match? '(? ? foo bar) '(foo bar))
+<SMALL><CODE>(match? (? ? foo bar) (foo bar))
+|  (match? (? foo bar) (bar))
+|  |  (match? (foo bar) ())
+|  |  #f
+|  |  (match? (foo bar) (bar))
+|  |  #f
+|  #f
+|  (match? (? foo bar) (foo bar))
+|  |  (match? (foo bar) (bar))
+|  |  #f
+|  |  (match? (foo bar) (foo bar))
+|  |  |  (match? (bar) (bar))
+|  |  |  |  (match? () ())
+|  |  |  |  #t
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#T
+</PRE>
+
+<P>The first question mark tries to match the word <CODE>foo</CODE> in the
+sentence, leaving the pattern <CODE>(? foo bar)</CODE> to match <CODE>(bar)</CODE>.  The
+second question mark will try both matching and not matching a word, but
+neither succeeds.  Therefore, the first question mark tries again, this time
+not matching a word.  The second question mark first tries matching <CODE>foo</CODE>, and when that fails, tries not matching anything.  This last attempt is
+successful.
+
+<P>In the previous example, every question mark's first attempt failed.  The
+following example illustrates the opposite case, in which every question
+mark's first attempt succeeds.
+
+<P><PRE>&gt; (match? '(? ? baz) '(foo bar baz))
+<SMALL><CODE>(match? (? ? baz) (foo bar baz))
+|  (match? (? baz) (bar baz))
+|  |  (match? (baz) (baz))
+|  |  |  (match? () ())
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#t
+</PRE>
+
+<P>The first question mark matches <CODE>foo</CODE>; the second matches <CODE>bar</CODE>.
+
+<P>If the sentence is shorter than the pattern, we may end up trying to match a
+pattern against an empty sentence.  This is much easier than the general
+problem, because there aren't two alternatives; a question mark has no word
+in the sentence to match.
+
+<P><PRE>&gt; (match? '(? ? foo) '())
+<SMALL><CODE>(match? (? ? foo) ())
+|  (match? (? foo) ())
+|  |  (match? (foo) ())
+|  |  #f
+|  #f
+#f
+</CODE></SMALL>#f
+</PRE>
+
+<P>Each question mark knows right away that it had better not try to
+match a word, so we never have to backtrack.
+
+<P><H2>Matching Several Words</H2>
+
+<P>The next placeholder we'll implement is <CODE>*</CODE>.  The order in which we're
+implementing these placeholders was chosen so that each new version
+increases the variability in the number of words a placeholder can match.
+The <CODE>!</CODE> placeholder was very easy because it always matches exactly one
+word; it's hardly different at all from a non-placeholder in the pattern.
+Implementing <CODE>?</CODE> was more complicated because there were two
+alternatives to consider.  But for <CODE>*</CODE>, we might match any number of
+words, up to the entire rest of the sentence.
+
+<P>Our strategy will be a generalization of the <CODE>?</CODE> strategy:  Start with
+a &quot;greedy&quot; match, and then, if a recursive call tells us that the
+remaining part of the sentence can't match the rest of the pattern, try a
+less greedy match.
+
+<P>The difference between <CODE>?</CODE> and <CODE>*</CODE> is that <CODE>?</CODE> allows only two
+possible match lengths, zero and one.  Therefore, these two cases can be
+checked with two explicit subexpressions of an <CODE>or</CODE> expression.  In the
+more general case of <CODE>*</CODE>, any length is possible, so we can't check every
+possibility separately.  Instead, as in any problem of unknown size, we use
+recursion.  First we try the longest possible match; if that fails because
+the rest of the pattern can't be matched, a recursive call tries the
+next-longest match.  If we get all the way down to an empty match for the
+<CODE>*</CODE> and still can't match the rest of the pattern, then we return <CODE>#f</CODE>.
+
+<P><PRE>(define (match? pattern sent)              ;; third version: !, ?, and *
+  (cond ((empty? pattern)
+	 (empty? sent))
+	((equal? (first pattern) '?)
+	 (if (empty? sent)
+	     (match? (bf pattern) '())
+	     (or (match? (bf pattern) (bf sent))
+		 (match? (bf pattern) sent))))
+	<U>((equal? (first pattern) '*)</U>
+	 <U>(*-longest-match (bf pattern) sent))</U>
+	((empty? sent) #f)
+	((equal? (first pattern) '!)
+	 (match? (bf pattern) (bf sent)))
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+
+(define (*-longest-match pattern-rest sent)
+  (*-lm-helper pattern-rest sent '()))
+
+(define (*-lm-helper pattern-rest sent-matched sent-unmatched)
+  (cond ((match? pattern-rest sent-unmatched) #t)
+	((empty? sent-matched) #f)
+	(else (*-lm-helper pattern-rest
+			   (bl sent-matched)
+			   (se (last sent-matched) sent-unmatched)))))
+</PRE>
+
+<P>If an asterisk is found in the pattern, <CODE>match?</CODE> invokes <CODE>*-longest-match</CODE>, which carries out this backtracking approach.
+
+<P>The real work is done by <CODE>*-lm-helper</CODE>, which has three arguments.
+The first argument is the still-to-be-matched part of the pattern, following
+the <CODE>*</CODE> placeholder that we're trying to match now.  <CODE>Sent-matched</CODE>
+is the part of the sentence that we're considering as a candidate to match
+the <CODE>*</CODE> placeholder.  <CODE>Sent-unmatched</CODE> is the remainder of the
+sentence, following the words in <CODE>sent-matched</CODE>; it must match
+<CODE>pattern-rest</CODE>.
+
+<P>Since we're trying to find the longest possible match, <CODE>*-longest-match</CODE>
+chooses the entire sentence as the first attempt for <CODE>sent-matched</CODE>.
+Since <CODE>sent-matched</CODE> is using up the entire sentence, the initial value
+of <CODE>sent-unmatched</CODE> is empty.  The only job of <CODE>*-longest-match</CODE> is
+to invoke <CODE>*-lm-helper</CODE> with these initial arguments.  On each
+recursive invocation, <CODE>*-lm-helper</CODE> shortens <CODE>sent-matched</CODE> by one
+word and accordingly lengthens <CODE>sent-unmatched</CODE>.
+
+<P>Here's an example in which the <CODE>*</CODE> placeholder tries to match four
+words, then three words, and finally succeeds with two words:
+
+<P><PRE>&gt; (trace match? *-longest-match *-lm-helper)
+
+&gt; (match? '(* days night) '(a hard days night))
+<SMALL><CODE>(match? (* days night) (a hard days night))
+|  (*-longest-match (days night) (a hard days night))
+|  |  (*-lm-helper (days night) (a hard days night) ())
+|  |  |  (match? (days night) ())
+|  |  |  #f
+|  |  |  (*-lm-helper (days night) (a hard days) (night))
+|  |  |  |  (match? (days night) (night))
+|  |  |  |  #f
+|  |  |  |  (*-lm-helper (days night) (a hard) (days night))
+|  |  |  |  |  (match? (days night) (days night))
+|  |  |  |  |  |  (match? (night) (night))
+|  |  |  |  |  |  |  (match? () ())
+|  |  |  |  |  |  |  #t
+|  |  |  |  |  |  #t
+|  |  |  |  |  #t
+|  |  |  |  #t
+|  |  |  #t
+|  |  #t
+|  #t
+#t
+</CODE></SMALL>#t
+</PRE>
+
+<P><H2>Combining the Placeholders</H2>
+
+<P>We have one remaining placeholder, <CODE>&amp;</CODE>, which is much like <CODE>*</CODE>
+except that it fails unless it can match at least one word.  We could,
+therefore, write a <CODE>&amp;-longest-match</CODE> that would be identical to <CODE>*-longest-match</CODE> except for the base case of its helper procedure.  If <CODE>sent-matched</CODE> is empty, the result is <CODE>#f</CODE> even if it would be possible
+to match the rest of the pattern against the rest of the sentence.  (All we
+have to do is exchange the first two clauses of the <CODE>cond</CODE>.)
+
+<P><PRE>(define (&amp;-longest-match pattern-rest sent)
+  (&amp;-lm-helper pattern-rest sent '()))
+
+(define (&amp;-lm-helper pattern-rest sent-matched sent-unmatched)
+  (cond ((empty? sent-matched) #f)
+	((match? pattern-rest sent-unmatched) #t)
+	(else (&amp;-lm-helper pattern-rest
+			   (bl sent-matched)
+			   (se (last sent-matched) sent-unmatched)))))
+</PRE>
+
+<P>When two procedures are so similar, that's a clue that perhaps
+they could be combined into one.  We could look at the bodies of these two
+procedures to find a way to combine them textually.  But instead, let's step
+back and think about the meanings of the placeholders.
+
+<P>The reason that the procedures <CODE>*-longest-match</CODE> and <CODE>&amp;-longest-match</CODE> are so similar is that the two placeholders have almost
+identical meanings.  <CODE>*</CODE> means &quot;match as many words as possible&quot;;
+<CODE>&amp;</CODE> means &quot;match as many words as possible, but at least one.&quot; Once
+we're thinking in these terms, it's plausible to think of <CODE>?</CODE> as
+meaning &quot;match as many words as possible, but at most one.&quot; In fact,
+although this is a stretch, we can also describe <CODE>!</CODE> similarly: &quot;Match
+as many words as possible, but at least one, and at most one.&quot;
+
+<P><TABLE><TR><TH>Placeholder&nbsp;&nbsp;<TH>Minimum size&nbsp;&nbsp;
+<TH>Maximum size&nbsp;&nbsp;
+<TR><TD><CODE>*</CODE><TD>0<TD>no limit
+<TR><TD><CODE>&</CODE><TD>1<TD>no limit
+<TR><TD><CODE>?</CODE><TD>0<TD>1
+<TR><TD><CODE>!</CODE><TD>1<TD>1
+</TABLE>
+
+
+<P>We'll take advantage of this newly understood similarity to
+simplify the program by using a single algorithm for all placeholders.
+
+<P>How do we generalize <CODE>*-longest-match</CODE> and <CODE>&amp;-longest-match</CODE> to
+handle all four cases?  There are two kinds of generalization involved.
+We'll write a procedure <CODE>longest-match</CODE> that will have the same
+arguments as <CODE>*-longest-match</CODE>, plus two others, one for for the minimum
+size of the matched text and one for the maximum.
+
+<P>We'll specify the minimum size with a formal parameter <CODE>min</CODE>.  (The
+corresponding argument will always be 0 or 1.)  <CODE>Longest-match</CODE> will
+pass the value of <CODE>min</CODE> down to <CODE>lm-helper</CODE>, which will use it to
+reject potential matches that are too short.
+
+<P>Unfortunately, we can't use a number to specify the maximum size, because
+for <CODE>*</CODE> and <CODE>&amp;</CODE> there is no maximum.  Instead, <CODE>longest-match</CODE>
+has a formal parameter <CODE>max-one?</CODE> whose value is <CODE>#t</CODE> only for <CODE>?</CODE> and <CODE>!</CODE>.
+
+<P>Our earlier, special-case versions of <CODE>longest-match</CODE> were written for
+<CODE>*</CODE> and <CODE>&amp;</CODE>, the placeholders for which <CODE>max-one?</CODE> will be
+false.  For those placeholders, the new <CODE>longest-match</CODE> will be just
+like the earlier versions.  Our next task is to generalize <CODE>longest-match</CODE> so that it can handle the <CODE>#t</CODE> cases.
+
+<P>Think about the meaning of the <CODE>sent-matched</CODE> and <CODE>sent-unmatched</CODE>
+parameters in the <CODE>lm-helper</CODE> procedures.  <CODE>Sent-matched</CODE> means
+&quot;the longest part of the sentence that this placeholder is still allowed to
+match,&quot; while <CODE>sent-unmatched</CODE> contains whatever portion of the
+sentence has already been disqualified from being matched by the placeholder.
+
+<P>Consider the behavior of <CODE>*-longest-match</CODE> when an asterisk is at the
+beginning of a pattern that we're trying to match against a seven-word
+sentence.  Initially, <CODE>sent-matched</CODE> is the entire seven-word sentence,
+and <CODE>sent-unmatched</CODE> is empty.  Then, supposing that doesn't work, <CODE>sent-matched</CODE> is a six-word sentence, while <CODE>sent-unmatched</CODE> contains
+the remaining word.  This continues as long as no match succeeds until, near
+the end of <CODE>longest-match</CODE>'s job, <CODE>sent-matched</CODE> is a one-word
+sentence and <CODE>sent-unmatched</CODE> contains six words.  At this point, the
+longest possible match for the asterisk is a single word.
+
+<P>This situation is where we want to <EM>start</EM> in the case of the <CODE>?</CODE>
+and <CODE>!</CODE> placeholders.  So when we're trying to match one of these
+placeholders, our initialization procedure won't use the entire sentence as
+the initial value of <CODE>sent-matched</CODE>; rather, the initial value of <CODE>sent-matched</CODE> will be a one-word sentence, and <CODE>sent-unmatched</CODE> will
+contain the rest of the sentence.
+
+<P><PRE>(define (longest-match pattern-rest sent min max-one?)  ;; first version
+  (cond ((empty? sent)
+	 (and (= min 0) (match? pattern-rest sent)))
+	(max-one?
+	 (lm-helper pattern-rest (se (first sent)) (bf sent) min))
+	(else (lm-helper pattern-rest sent '() min))))
+
+(define (lm-helper pattern-rest sent-matched sent-unmatched min)
+  (cond ((&lt; (length sent-matched) min) #f)
+	((match? pattern-rest sent-unmatched) #t)
+	((empty? sent-matched) #f)
+	(else (lm-helper pattern-rest
+			 (bl sent-matched)
+			 (se (last sent-matched) sent-unmatched)
+			 min))))
+</PRE>
+
+<P>Now we can rewrite <CODE>match?</CODE> to use <CODE>longest-match</CODE>.  <CODE>Match?</CODE>
+will delegate the handling of all placeholders to a subprocedure <CODE>match-special</CODE> that will invoke <CODE>longest-match</CODE> with the correct values
+for <CODE>min</CODE> and <CODE>max-one?</CODE> according to the table.
+
+<P><PRE>(define (match? pattern sent)                          ;; fourth version
+  (cond ((empty? pattern)
+	 (empty? sent))
+	<U>((special? (first pattern))</U>
+	 <U>(match-special (first pattern) (bf pattern) sent))</U>
+	((empty? sent) #f)
+	((equal? (first pattern) (first sent))
+	 (match? (bf pattern) (bf sent)))
+	(else #f)))
+
+(define (special? wd)                                  ;; first version
+  (member? wd '(* &amp; ? !)))
+
+(define (match-special placeholder pattern-rest sent)  ;; first version
+  (cond ((equal? placeholder '?)
+	 (longest-match pattern-rest sent 0 #t))
+	((equal? placeholder '!)
+	 (longest-match pattern-rest sent 1 #t))
+	((equal? placeholder '*)
+	 (longest-match pattern-rest sent 0 #f))
+	((equal? placeholder '&amp;)
+	 (longest-match pattern-rest sent 1 #f))))
+</PRE>
+
+<P><H2>Naming the Matched Text</H2>
+
+<P>So far we've worked out how to match the four kinds of placeholders and
+return a true or false value indicating whether a match is possible.  Our
+program is almost finished; all we need to make it useful is the
+facility that will let us find out <EM>which</EM> words in the sentence
+matched each placeholder in the pattern.
+
+<P>We don't have to change the overall structure of the program in order to
+make this work.  But most of the procedures in the pattern matcher will have
+to be given an additional argument, the database of placeholder names
+and values that have been matched so far.<A NAME="text3" HREF="match.html#ft3">[3]</A> The formal parameter <CODE>known-values</CODE> will hold
+this database.  Its value will be a sentence containing placeholder names
+followed by the corresponding words and an exclamation point to separate the
+entries, as in the examples earlier in the chapter.  When we begin the
+search for a match, we use an empty sentence as the initial <CODE>known-values</CODE>:
+
+<P><PRE>(define (match pattern sent)
+  (match-using-known-values pattern sent '()))
+
+(define (match-using-known-values pattern sent known-values)
+  &hellip;)
+</PRE>
+
+<P>As <CODE>match-using-known-values</CODE> matches the beginning of a
+pattern with the beginning of a sentence, it invokes itself recursively with
+an expanded <CODE>known-values</CODE> containing each newly matched placeholder.
+For example, in evaluating
+
+<P><PRE>(match '(!twice !other !twice) '(cry baby cry))
+</PRE>
+
+<P>the program will call <CODE>match-using-known-values</CODE> four times:
+
+<P><TABLE><TR><TH><CODE>pattern</CODE><TH><CODE>sent</CODE>
+<TH><CODE>known-values</CODE>
+<TR><TD><CODE>(!twice !other !twice)&nbsp;&nbsp;</CODE>
+<TD><CODE>(cry baby cry)&nbsp;&nbsp;</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>(!other !twice)</CODE>
+<TD><CODE>(baby cry)</CODE>
+<TD><CODE>(twice cry !)</CODE>
+<TR><TD><CODE>(!twice)</CODE>
+<TD><CODE>(cry)</CODE>
+<TD><CODE>(twice cry ! other baby !)</CODE>
+<TR><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TD><CODE>(twice cry ! other baby !)</CODE>
+</TABLE>
+
+
+<P>In the first invocation, we try to match <CODE>!twice</CODE> against some part of
+the sentence.  Since <CODE>!</CODE> matches exactly one word, the only possibility
+is to match the word <CODE>cry</CODE>.  The recursive invocation, therefore, is made
+with the first words of the pattern and sentence removed, but with the match
+between <CODE>twice</CODE> and <CODE>cry</CODE> added to the database.
+
+<P>Similarly, the second invocation matches <CODE>!other</CODE> with <CODE>baby</CODE> and
+causes a third invocation with shortened pattern and sentence but a longer
+database.
+
+<P>The third invocation is a little different because the pattern contains the
+placeholder <CODE>!twice</CODE>, but the name <CODE>twice</CODE> is already in the
+database.  Therefore, this placeholder can't match whatever word happens to
+be available; it must match the same word that it matched before.  (Our
+program will have to check for this situation.)  Luckily, the sentence does
+indeed contain the word <CODE>cry</CODE> at this position.
+
+<P>The final invocation reaches the base case of the recursion, because the
+pattern is empty.  The value that <CODE>match-using-known-values</CODE> returns is
+the database in this invocation.
+
+<P><H2>The Final Version</H2>
+
+<P>We're now ready to show you the final version of the program.  The program
+structure is much like what you've seen before; the main difference is the
+database of placeholder names and values.  The program must add entries to
+this database and must look for database entries that were added earlier.
+Here are the three most important procedures and how they are changed
+from the earlier version to implement this capability:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>match-using-known-values</CODE>, essentially the same as what was
+formerly named <CODE>match?</CODE> except for bookkeeping details.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>match-special</CODE>, similar to the old version, except that it must
+recognize the case of a placeholder whose name has already been seen.  In
+this case, the placeholder can match only the same words that it matched
+before.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>longest-match</CODE> and <CODE>lm-helper</CODE>, also similar to the old
+versions, except that they have the additional job of adding to the database the
+name and value of any placeholder that they match.
+
+</TABLE>
+
+<P>Here are the modified procedures.  Compare them to the previous
+versions.
+
+<P><PRE>(define (<A NAME="g4"></A>match pattern sent)
+  (match-using-known-values pattern sent '()))
+
+(define (<A NAME="g5"></A>match-using-known-values pattern sent known-values)
+  (cond ((empty? pattern)
+	 (if (empty? sent) known-values 'failed))
+	((special? (first pattern))
+	 (let ((placeholder (first pattern)))
+	   (match-special (first placeholder)
+			  (bf placeholder)
+			  (bf pattern)
+			  sent
+			  known-values)))
+	((empty? sent) 'failed)
+	((equal? (first pattern) (first sent))
+	 (match-using-known-values (bf pattern) (bf sent) known-values))
+	(else 'failed)))
+
+(define (<A NAME="g6"></A>match-special howmany name pattern-rest sent known-values)
+  (let ((old-value (lookup name known-values)))
+    (cond ((not (equal? old-value 'no-value))
+	   (if (length-ok? old-value howmany)
+	       (already-known-match
+		  old-value pattern-rest sent known-values)
+	       'failed))
+	  ((equal? howmany '?)
+	   (longest-match name pattern-rest sent 0 #t known-values))
+	  ((equal? howmany '!)
+	   (longest-match name pattern-rest sent 1 #t known-values))
+	  ((equal? howmany '*)
+	   (longest-match name pattern-rest sent 0 #f known-values))
+	  ((equal? howmany '&amp;)
+	   (longest-match name pattern-rest sent 1 #f known-values)))))
+
+(define (<A NAME="g7"></A>longest-match name pattern-rest sent min max-one? known-values)
+  (cond ((empty? sent)
+	 (if (= min 0)
+	     (match-using-known-values pattern-rest
+				       sent
+				       (add name '() known-values))
+	     'failed))
+	(max-one?
+	 (lm-helper name pattern-rest (se (first sent))
+		    (bf sent) min known-values))
+	(else (lm-helper name pattern-rest
+			 sent '() min known-values))))
+
+(define (<A NAME="g8"></A>lm-helper name pattern-rest
+		   sent-matched sent-unmatched min known-values)
+  (if (&lt; (length sent-matched) min)
+      'failed
+      (let ((tentative-result (match-using-known-values
+			       pattern-rest
+			       sent-unmatched
+			       (add name sent-matched known-values))))
+	(cond ((not (equal? tentative-result 'failed)) tentative-result)
+	      ((empty? sent-matched) 'failed)
+	      (else (lm-helper name
+			       pattern-rest
+			       (bl sent-matched)
+			       (se (last sent-matched) sent-unmatched)
+			       min
+			       known-values))))))
+</PRE>
+
+<P>We haven't listed all of the minor procedures that these procedures invoke.
+A complete listing is at the end of the chapter, but we hope that you have
+enough confidence about the overall program structure to be able to assume
+these small details will work.  In the next few paragraphs we discuss some
+of the ways in which the procedures shown here differ from the earlier
+versions.
+
+<P>In the invocation of <CODE>match-special</CODE> we found it convenient to split the
+placeholder into its first character, the one that tells how many words can
+be matched, and the butfirst, which is the name of the placeholder.
+
+<P>What happens if <CODE>match-special</CODE> finds that the name is already in the
+database?  In this situation, we don't have to try multiple possibilities
+for the number of words to match (the usual job of <CODE>longest-match</CODE>); the
+placeholder must match exactly the words that it matched before.  In this
+situation, three things must be true in order for the match to succeed:
+<A NAME="threematchconditions"></A>
+(1) The first words of the <CODE>sent</CODE> argument must match the old value
+stored in the database.  (2) The partial <CODE>pattern</CODE> that remains after
+this placeholder must match the rest of the <CODE>sent</CODE>.  (3) The old value
+must be consistent with the number of words permitted by the <CODE>howmany</CODE>
+part of the placeholder.  For example, if the pattern is
+
+<P><PRE>(*stuff and !stuff)
+</PRE>
+
+<P>and the database says that the placeholder <CODE>*stuff</CODE> was
+matched by three words from the sentence, then the second placeholder <CODE>!stuff</CODE> can't possibly be matched because it accepts only one word.  This
+third condition is actually checked first, by <CODE>length-ok?</CODE>, and if we
+pass that hurdle, the other two conditions are checked by <CODE>already-known-match</CODE>.
+
+<P>The only significant change to <CODE>longest-match</CODE> is that it invokes
+<CODE>add</CODE> to compute an expanded database with the newly found match added,
+and it uses the resulting database as an argument to <CODE>match-using-known-values</CODE>.
+
+<P><H2>Abstract Data Types</H2>
+
+<P>As you know, a database of known values is represented in this program as a
+sentence in which the entries are separated by exclamation points.  Where is
+this representation accomplished in the program you've seen?  There's
+nothing like
+
+<P><PRE>&hellip;(sentence old-known-values name value '!) &hellip;</PRE>
+
+<P>anywhere in the procedures we've shown.  Instead, the program makes
+reference to the database of known values through two procedure calls:
+
+<P><PRE>(lookup name known-values)                   ; in match-special
+(add name matched known-values)              ; in longest-match
+</PRE>
+
+<P>Only the procedures <CODE>lookup</CODE> and <CODE>add</CODE> manipulate the
+database of known values:
+
+<P><PRE>(define (<A NAME="g9"></A>lookup name known-values)
+  (cond ((empty? known-values) 'no-value)
+	((equal? (first known-values) name)
+	 (get-value (bf known-values)))
+	(else (lookup name (skip-value known-values)))))
+
+(define (<A NAME="g10"></A>get-value stuff)
+  (if (equal? (first stuff) '!)
+      '()
+      (se (first stuff) (get-value (bf stuff)))))
+
+(define (<A NAME="g11"></A>skip-value stuff)
+  (if (equal? (first stuff) '!)
+      (bf stuff)
+      (skip-value (bf stuff))))
+
+(define (<A NAME="g12"></A>add name value known-values)
+  (if (empty? name)
+      known-values
+      (se known-values name value '!)))
+</PRE>
+
+<P>These procedures are full of small details.  For example, it's a little
+tricky to extract the part of a sentence from a name to the next exclamation
+point.  It's convenient that we could write the more important procedures,
+such as <CODE>longest-match</CODE>, without filling them with these details.
+As far as <CODE>longest-match</CODE> knows, <CODE>lookup</CODE> and <CODE>add</CODE> could be
+Scheme primitive procedures.  In effect we've created a new data type, with
+<CODE>add</CODE> as its constructor and <CODE>lookup</CODE> as its selector.
+
+<P>Types such as these, that are invented by a programmer and aren't part of the
+Scheme language itself, are called <EM><A NAME="g13"></A><A NAME="g14"></A>abstract data types.</EM>
+<A NAME="g15"></A>
+<A NAME="g16"></A>
+Creating an abstract data type means drawing a barrier between an idea about
+some kind of information we want to model in a program and the particular
+mechanism that we use to represent the information.  In this case, the
+information is a collection of name-value associations, and the particular
+mechanism is a sentence with exclamation points and so on.  The pattern
+matcher doesn't think of the database as a sentence.  For example, it would
+be silly to translate the database into Pig Latin or find its acronym.
+
+<P>Just as we distinguish the <EM>primitive</EM> procedures that Scheme knows
+all along from the <EM>compound</EM> procedures that the Scheme programmer
+defines, we could use the names &quot;primitive data type&quot; for types such as
+numbers and Booleans that are built into Scheme and &quot;compound data type&quot;
+for ones that the programmer invents by defining selectors and constructors.
+But &quot;compound data type&quot; is a bit of a pun, because it also suggests a data
+type built out of smaller pieces, just as a compound expression is built of
+smaller expressions.  Perhaps that's why the name &quot;abstract data type&quot; has
+become generally accepted.  It's connected to the idea of abstraction
+that we introduced earlier, because in order to create an abstract data type,
+we must specify the selectors and constructors and give names to those
+patterns of computation.
+
+<P><H2>Backtracking and <CODE>Known-Values</CODE></H2>
+
+<P>What happens to the database in cases that require backtracking, where
+a particular recursive call might be &quot;on the wrong track&quot;?  Let's trace
+<CODE>match-using-known-values</CODE> and see what happens.  (We'll use the
+little-people model to discuss this example, and so we're annotating each
+invocation in the trace with the name of its little person.)
+
+<P><PRE>&gt; (trace match-using-known-values)
+&gt; (match '(*start me *end) '(love me do))<SMALL><CODE>
+(match-using-known-values (*start me *end) (love me do) ())          Martha
+|  (match-using-known-values (me *end) () (start love me do !))      Mercutio
+|  failed
+|  (match-using-known-values (me *end) (do) (start love me !))       Masayuki
+|  failed
+|  (match-using-known-values (me *end) (me do) (start love !))       Mohammad
+|  |  (match-using-known-values (*end) (do) (start love !))          Mae
+|  |  |  (match-using-known-values () () (start love ! end do !))    Merlin
+|  |  |  (start love ! end do !)
+|  |  (start love ! end do !)
+|  (start love ! end do !)
+(start love ! end do !)
+</CODE></SMALL>(START LOVE ! END DO !)
+</PRE>
+
+<P>Martha, the first little person shown, has an empty <CODE>known-values</CODE>.  She
+makes three attempts to match <CODE>*start</CODE> with parts of the sentence.  In
+each case, a little person is hired with the provisional match in his or her
+<CODE>known-values</CODE>.  (Actually, Martha does not directly hire Mercutio and
+the others.  Martha hires a <CODE>match-special</CODE> little person, who in turn
+hires a <CODE>longest-match</CODE> specialist, who hires an <CODE>lm-helper</CODE>
+specialist, who hires Mercutio.  But that added complexity isn't important
+for the point we're focusing on right now, namely, how backtracking can
+work.  Pretend Martha hires Mercutio.)
+
+<P>If you don't use the little-people model, but instead think about the
+program as if there were just one <CODE>known-values</CODE> variable, then the
+backtracking can indeed be very mysterious.  Once a provisional match is
+added to the database, how is it ever removed?  The answer is that it doesn't
+work that way.  There isn't a &quot;the&quot; database.  Instead, each little person
+has a separate database.  If an attempted match fails, the little person who
+reports the failure just stops working.  For example, Martha hires Mercutio
+to attempt a match in which the name <CODE>start</CODE> has the value <CODE>love me
+do</CODE>.  Mercutio is unable to complete the match, and reports failure.  It is
+Martha, not Mercutio, who then hires Masayuki to try another value for <CODE>start</CODE>.  Martha's database hasn't changed, so Martha gives Masayuki a
+database that reflects the new trial value but not the old one.
+
+<P>Not every hiring of a little person starts from an empty database.  When a
+match is partially successful, the continuation of the same attempt must
+benefit from the work that's already been done.  So, for example, when
+Mohammad hires Mae, and when Mae hires Merlin, each of them passes on an
+extended database, not an empty one.  Specifically, Mae gives Merlin the
+new match of the name <CODE>end</CODE> with the value <CODE>do</CODE>, but also the match
+of <CODE>start</CODE> with <CODE>love</CODE> that she was given by Mohammad.
+
+<P>So as you can see, we don't have to do anything special to keep track of our
+database when we backtrack; the structure of the recursion takes care of
+everything for free.
+
+<P><H2>How We Wrote It</H2>
+
+<P>For explanatory purposes we've chosen to present the pieces of this program
+in a different order from the one in which we actually wrote them.  We <EM>did</EM> implement the easy placeholders (<CODE>!</CODE> and <CODE>?</CODE>) before the
+harder ones.  But our program had provision for a database of names from the
+beginning.
+
+<P>There is no &quot;right&quot; way to approach a programming problem.  Our particular
+approach was determined partly by our past experience.  Each of us had
+written similar programs before, and we had preconceived ideas about the
+easy and hard parts.  You might well start at a different point.  For
+example, here is an elegant small program we'd both been shown by friends:
+
+<P><PRE>(define (match? pattern sent)
+  (cond ((empty? pattern) (empty? sent))
+	((empty? sent)
+	 (and (equal? (first pattern) '*) (match? (bf pattern) sent)))
+	((equal? (first pattern) '*)
+	 (or (match? pattern (bf sent))
+	     (match? (bf pattern) sent)))
+	(else (and (equal? (first pattern) (first sent))
+		   (match? (bf pattern) (bf sent))))))
+</PRE>
+
+<P>What's appealing about this is the funny symmetry of taking the
+<CODE>butfirst</CODE> of the pattern <EM>or</EM> of the sentence.  That's not
+something you'd naturally think of, probably, but once you've worked out how
+it can work, it affects your preconceptions when you set out to write a
+pattern matcher yourself.
+
+<P>Based on that inspiration, we might well have started with the hard cases
+(such as <CODE>*</CODE>), with the idea that once they're in place, the easy cases
+won't change the program structure much.
+
+<P><H2>Complete Program Listing</H2>
+
+<P><P><P><PRE>
+(define (match pattern sent)
+  (match-using-known-values pattern sent '()))
+
+(define (match-using-known-values pattern sent known-values)
+  (cond ((empty? pattern)
+	 (if (empty? sent) known-values 'failed))
+	((special? (first pattern))
+	 (let ((placeholder (first pattern)))
+	   (match-special (first placeholder)
+			  (bf placeholder)
+			  (bf pattern)
+			  sent
+			  known-values)))
+	((empty? sent) 'failed)
+	((equal? (first pattern) (first sent))
+	 (match-using-known-values (bf pattern) (bf sent) known-values))
+	(else 'failed)))
+
+(define (special? wd)
+  (member? (first wd) '(* & ? !)))
+
+(define (match-special howmany name pattern-rest sent known-values)
+  (let ((old-value (lookup name known-values)))
+    (cond ((not (equal? old-value 'no-value))
+	   (if (length-ok? old-value howmany)
+	       (already-known-match
+		  old-value pattern-rest sent known-values)
+	       'failed))
+	  ((equal? howmany '?)
+	   (longest-match name pattern-rest sent 0 #t known-values))
+	  ((equal? howmany '!)
+	   (longest-match name pattern-rest sent 1 #t known-values))
+	  ((equal? howmany '*)
+	   (longest-match name pattern-rest sent 0 #f known-values))
+	  ((equal? howmany '&)
+	   (longest-match name pattern-rest sent 1 #f known-values)))))
+
+(define (length-ok? value howmany)
+  (cond ((empty? value) (member? howmany '(? *)))
+	((not (empty? (bf value))) (member? howmany '(* &)))
+	(else #t)))
+
+(define (already-known-match value pattern-rest sent known-values)
+  (let ((unmatched (chop-leading-substring value sent)))
+    (if (not (equal? unmatched 'failed))
+	(match-using-known-values pattern-rest unmatched known-values)
+	'failed)))
+
+(define (chop-leading-substring value sent)
+  (cond ((empty? value) sent)
+	((empty? sent) 'failed)
+	((equal? (first value) (first sent))
+	 (chop-leading-substring (bf value) (bf sent)))
+	(else 'failed)))
+
+(define (longest-match name pattern-rest sent min max-one? known-values)
+  (cond ((empty? sent)
+	 (if (= min 0)
+	     (match-using-known-values pattern-rest
+				       sent
+				       (add name '() known-values))
+	     'failed))
+	(max-one?
+	 (lm-helper name pattern-rest (se (first sent))
+		    (bf sent) min known-values))
+	(else (lm-helper name pattern-rest
+			 sent '() min known-values))))
+
+(define (lm-helper name pattern-rest
+		   sent-matched sent-unmatched min known-values)
+  (if (< (length sent-matched) min)
+      'failed
+      (let ((tentative-result (match-using-known-values
+			       pattern-rest
+			       sent-unmatched
+			       (add name sent-matched known-values))))
+	(cond ((not (equal? tentative-result 'failed)) tentative-result)
+	      ((empty? sent-matched) 'failed)
+	      (else (lm-helper name
+			       pattern-rest
+			       (bl sent-matched)
+			       (se (last sent-matched) sent-unmatched)
+			       min
+			       known-values))))))
+
+;;; Known values database abstract data type
+
+(define (lookup name known-values)
+  (cond ((empty? known-values) 'no-value)
+	((equal? (first known-values) name)
+	 (get-value (bf known-values)))
+	(else (lookup name (skip-value known-values)))))
+
+(define (get-value stuff)
+  (if (equal? (first stuff) '!)
+      '()
+      (se (first stuff) (get-value (bf stuff)))))
+
+(define (skip-value stuff)
+  (if (equal? (first stuff) '!)
+      (bf stuff)
+      (skip-value (bf stuff))))
+
+(define (add name value known-values)
+  (if (empty? name)
+      known-values
+      (se known-values name value '!)))
+</PRE><P>
+
+
+<P><H2>Exercises about Using the Pattern Matcher</H2>
+
+<P><B>16.1</B>&nbsp;&nbsp;Design and test a pattern that matches any sentence containing the word <CODE>C</CODE> three times (not necessarily next to each other).
+
+
+<P>
+<B>16.2</B>&nbsp;&nbsp;Design and test a pattern that matches a sentence consisting of two copies
+of a smaller sentence, such as <CODE>(a b a b)</CODE>.
+
+
+<P>
+<B>16.3</B>&nbsp;&nbsp;Design and test a pattern that matches any sentence of no more than three
+words.
+
+
+<P>
+<B>16.4</B>&nbsp;&nbsp;Design and test a pattern that matches any sentence of at least three words.
+
+
+<P>
+<B>16.5</B>&nbsp;&nbsp;Show sentences of length 2, 3, and 4 that match the pattern
+
+<P><PRE>(*x *y *y *x)
+</PRE>
+
+<P>For each length, if no sentence can match the pattern, explain why
+not.
+
+
+<P>
+<B>16.6</B>&nbsp;&nbsp;Show sentences of length 2, 3, and 4 that match the pattern
+
+<P><PRE>(*x *y &amp;y &amp;x)
+</PRE>
+
+<P>For each length, if no sentence can match the pattern, explain why
+not.
+
+
+<P>
+<B>16.7</B>&nbsp;&nbsp;List <EM>all</EM> the sentences of length 6 or less, starting with <CODE>a b a</CODE>, that match the pattern
+
+<P><PRE>(*x *y *y *x)
+</PRE>
+
+
+<P>
+<H2>Exercises about Implementation</H2>
+
+<P><B>16.8</B>&nbsp;&nbsp;Explain how <CODE>longest-match</CODE> handles an empty sentence.
+
+
+<P>
+<B>16.9</B>&nbsp;&nbsp;Suppose the first <CODE>cond</CODE> clause in <CODE>match-using-known-values</CODE> were
+
+<P><PRE>((empty? pattern) known-values)
+</PRE>
+
+<P>Give an example of a pattern and sentence for which the modified
+program would give a different result from the original.
+
+
+<P>
+<B>16.10</B>&nbsp;&nbsp;What happens if the sentence argument&mdash;not the pattern&mdash;contains
+the word <CODE>*</CODE> somewhere?
+
+
+<P>
+<B>16.11</B>&nbsp;&nbsp;For each of the following examples, how many <CODE>match-using-known-values</CODE>
+little people are required?
+
+<P><PRE>(match '(from me to you) '(from me to you))
+(match '(*x *y *x) '(a b c a b))
+(match '(*x *y *z) '(a b c a b))
+(match '(*x hey *y bulldog *z) '(a hey b bulldog c))
+(match '(*x a b c d e f) '(a b c d e f))
+(match '(a b c d e f *x) '(a b c d e f))
+</PRE>
+
+<P>In general, what can you say about the characteristics that make a
+pattern easy or hard to match?
+
+
+<P>
+<B>16.12</B>&nbsp;&nbsp;Show a pattern with the following two properties:  (1) It has at least two
+placeholders.  (2) When you match it against any sentence, every invocation
+of <CODE>lookup</CODE> returns <CODE>no-value</CODE>.
+
+
+<P>
+<B>16.13</B>&nbsp;&nbsp;Show a pattern and a sentence that can be used as arguments to <CODE>match</CODE>
+so that <CODE>lookup</CODE> returns <CODE>(the beatles)</CODE> at some point during the
+match.
+
+
+<P>
+<B>16.14</B>&nbsp;&nbsp;Our program can still match patterns with unnamed placeholders.
+How would it affect the operation of the program if these unnamed
+placeholders were added to the database?  What part of the program keeps
+them from being added?
+
+
+<P>
+<B>16.15</B>&nbsp;&nbsp;Why don't <CODE>get-value</CODE> and <CODE>skip-value</CODE> check for an empty argument
+as the base case?
+
+
+<P>
+<B>16.16</B>&nbsp;&nbsp;Why didn't we write the first <CODE>cond</CODE> clause in <CODE>length-ok?</CODE> as
+the following?
+
+<P><PRE>((and (empty? value) (member? howmany '(? *))) #t)
+</PRE>
+
+<P>
+<B>16.17</B>&nbsp;&nbsp;Where in the program is the initial empty database of known values
+established?
+
+
+<P>
+<B>16.18</B>&nbsp;&nbsp;For the case of matching a placeholder name that's already been matched in
+this pattern, we said on page <A HREF="match.html#threematchconditions">there</A> that three conditions
+must be checked.  For each of the three, give a pattern and sentence that
+the program would incorrectly match if the condition were not checked.
+
+
+<P>
+<B>16.19</B>&nbsp;&nbsp;What will the following example do?
+
+<P><PRE>(match '(?x is *y !x) '(! is an exclamation point !))
+</PRE>
+
+<P>Can you suggest a way to fix this problem?
+
+
+<P>
+<B>16.20</B>&nbsp;&nbsp;Modify the pattern matcher so that a placeholder of the form <CODE>*15x</CODE> is like <CODE>*x</CODE> except that it can be matched only by exactly 15
+words.
+
+<P><PRE>&gt; (match '(*3front *back) '(your mother should know))
+(FRONT YOUR MOTHER SHOULD ! BACK KNOW !)
+</PRE>
+
+<P>
+<B>16.21</B>&nbsp;&nbsp;Modify the pattern matcher so that a <CODE>+</CODE> placeholder (with or without a
+name attached) matches only a number:
+
+<P><PRE>&gt; (match '(*front +middle *back) '(four score and 7 years ago))
+(FRONT FOUR SCORE AND ! MIDDLE 7 ! BACK YEARS AGO !)
+</PRE>
+
+<P>The <CODE>+</CODE> placeholder is otherwise like <CODE>!</CODE>&mdash;it must match
+exactly one word.
+
+
+<P>
+<B>16.22</B>&nbsp;&nbsp;Does your favorite text editor or word processor have a search command that
+allows you to search for patterns rather than only specific strings of
+characters?  Look into this and compare your editor's capabilities with
+that of our pattern matcher.
+
+
+<P>
+
+<P>
+<HR>
+<A NAME="ft1" HREF="match.html#text1">[1]</A> Why not return the
+sentence if successful or <CODE>#f</CODE> otherwise?  That would be fine in most
+versions of Scheme, but as we mentioned earlier, the empty sentence <CODE>()</CODE>
+is the same as the false value <CODE>#f</CODE> in some dialects.  In those
+Schemes, a successfully matched pattern with no named placeholders, for
+which the program should return an empty sentence, would be
+indistinguishable from an unmatched pattern.<P>
+<A NAME="ft2" HREF="match.html#text2">[2]</A> Actually, since <CODE>or</CODE> is a special form, Scheme avoids
+the need to try the second alternative if the first one succeeds.<P>
+<A NAME="ft3" HREF="match.html#text3">[3]</A> The word <EM>database</EM>
+has two possible meanings in computer science, a broad meaning and a narrow
+one.  The broad meaning, which we're using here, is a repository of
+information to which the program periodically adds new items for later
+retrieval.  The narrow meaning is a collection of information that's
+manipulated by a <EM>database program,</EM> which provides facilities for
+adding new information, modifying existing entries, selecting entries that
+match some specified criterion, and so on.  We'll see a database program
+near the end of the book.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch15/poker.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch17/part5.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch17/lists b/js/games/nluqo.github.io/~bh/ssch17/lists
new file mode 100644
index 0000000..c0c3387
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch17/lists
@@ -0,0 +1,1109 @@
+<P>
+
+<A NAME="santa"></A>
+<P><CENTER><IMG SRC="../ss-pics/santa.jpg" ALT="figure: santa"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 17: Lists</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 17</H2>
+<H1>Lists</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch17.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch18/trees.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>Suppose we're using Scheme to model an ice cream shop.  We'll certainly need
+to know all the flavors that are available:
+
+<P><PRE>(vanilla ginger strawberry lychee raspberry mocha)
+</PRE>
+
+<P>For example, here's a procedure that models the behavior of
+the salesperson when you place an order:
+
+<P><PRE>(define (<A NAME="g1"></A>order flavor)
+  (if (member? flavor
+               '(vanilla ginger strawberry lychee raspberry mocha))
+      '(coming right up!)
+      (se '(sorry we have no) flavor)))
+</PRE>
+
+<P>But what happens if we want to sell a flavor like &quot;root beer fudge ripple&quot;
+or &quot;ultra chocolate&quot;?  We can't just put those words into a sentence of
+flavors, or our program will think that each word is a separate flavor.
+Beer ice cream doesn't sound very appealing.
+
+<P>What we need is a way to express a collection of items, each of which is
+itself a collection, like this:
+
+<P><PRE>(vanilla (ultra chocolate) (heath bar crunch) ginger (cherry garcia))
+</PRE>
+
+<P>This is meant to represent five flavors, two of which are named by
+single words, and the other three of which are named by sentences.
+
+<P>Luckily for us, Scheme provides exactly this capability.  The data structure
+we're using in this example is called a <EM>list.</EM> The difference
+between a sentence and a list is that the elements of a sentence must be
+words, whereas the elements of a list can be anything at all: words, <CODE>#t</CODE>, procedures, or other lists.  (A list that's an element of another list
+is called a <EM>sublist.</EM> We'll use the name <EM>structured</EM>
+<A NAME="g2"></A>
+<A NAME="g3"></A>
+list for a list that includes sublists.)
+
+<P>Another way to think about the difference between sentences and lists is that
+the definition of &quot;list&quot; is self-referential, because a list can include
+lists as elements.  The definition of &quot;sentence&quot; is not self-referential,
+because the elements of a sentence must be words.  We'll see that the
+self-referential nature of recursive procedures is vitally important in
+coping with lists.
+
+<P>Another example in which lists could be helpful is the pattern matcher.  We
+used sentences to hold <CODE>known-values</CODE> databases, such as this one:
+
+<P><PRE>(FRONT YOUR MOTHER ! BACK SHOULD KNOW !)
+</PRE>
+
+<P>This would be both easier for you to read and easier for programs
+to manipulate if we used list structure to indicate the grouping instead of
+exclamation points:
+
+<P><PRE>((FRONT (YOUR MOTHER)) (BACK (SHOULD KNOW)))
+</PRE>
+
+<P>We remarked when we introduced sentences that they're a feature we added to
+Scheme just for the sake of this book.  Lists, by contrast, are at the core
+of what Lisp has been about from its beginning.  (In fact the name &quot;Lisp&quot;
+stands for &quot;LISt Processing.&quot;)
+
+<P><H2>Selectors and Constructors</H2>
+
+<P>When we introduced words and sentences we had to provide ways to take them
+apart, such as <CODE>first</CODE>, and ways to put them together, such as <CODE>sentence</CODE>.  Now we'll tell you about the selectors and
+constructors for lists.
+
+<P>
+
+<P>The function to select the first element of a list is called
+<A NAME="g4"></A><CODE>car</CODE>.<A NAME="text1" HREF="lists#ft1">[1]</A> The function to select the
+portion of a list containing all but the first element is called
+<A NAME="g5"></A><CODE>cdr</CODE>, which is pronounced &quot;could-er.&quot; These are analogous to <CODE>first</CODE> and <CODE>butfirst</CODE> for words and sentences.
+
+<P>Of course, we can't extract pieces of a list that's empty, so we need a
+predicate that will check for an empty list.  It's called <A NAME="g6"></A><CODE>null?</CODE> and it
+returns <CODE>#t</CODE> for the empty list, <CODE>#f</CODE> for anything else.  This is
+the list equivalent of <CODE>empty?</CODE> for words and sentences.
+
+<P>There are two constructors for lists.  The function <A NAME="g7"></A><CODE>list</CODE> takes
+any number of arguments and returns a list with those arguments as its
+elements.
+
+<P><PRE>&gt; (list (+ 2 3) 'squash (= 2 2) (list 4 5) remainder 'zucchini)
+(5 SQUASH #T (4 5) #&lt;PROCEDURE&gt; ZUCCHINI)
+</PRE>
+
+<P>The other constructor, <A NAME="g8"></A><CODE>cons</CODE>, is used when you already have
+a list and you want to add one new element.  <CODE>Cons</CODE> takes two arguments,
+an element and a list (in that order), and returns a new list whose <CODE>car</CODE> is the first argument and whose <CODE>cdr</CODE> is the second.
+
+<P><PRE>&gt; (cons 'for '(no one))
+(FOR NO ONE)
+
+&gt; (cons 'julia '())
+(JULIA)
+</PRE>
+
+<P>There is also a function that combines the elements of two or more lists
+into a larger list:
+
+<P><PRE>&gt; (append '(get back) '(the word))
+(GET BACK THE WORD)
+</PRE>
+
+<P>It's important that you understand how <CODE>list</CODE>, <CODE>cons</CODE>,
+and <A NAME="g9"></A><CODE>append</CODE> differ from each other:
+
+<P><PRE>&gt; (list '(i am) '(the walrus))
+((I AM) (THE WALRUS))
+
+&gt; (cons '(i am) '(the walrus))
+((I AM) THE WALRUS)
+
+&gt; (append '(i am) '(the walrus))
+(I AM THE WALRUS)
+</PRE>
+
+<P>When <CODE>list</CODE> is invoked with two arguments, it considers them to be two
+proposed elements for a new two-element list.  <CODE>List</CODE> doesn't care
+whether the arguments are themselves lists, words, or anything else; it just
+creates a new list whose elements are the arguments.  In this case, it ends
+up with a list of two lists.
+
+<P> 
+<CODE>Cons</CODE> requires that its second argument be a list.<A NAME="text2" HREF="lists#ft2">[2]</A> <CODE>Cons</CODE> will extend that list to form a new list, one element
+longer than the original; the first element of the resulting list comes from
+the first argument to <CODE>cons</CODE>.  In other words, when you pass <CODE>cons</CODE>
+two arguments, you get back a list whose <CODE>car</CODE> is the first argument to
+<CODE>cons</CODE> and whose <CODE>cdr</CODE> is the second argument.
+
+<P>Thus, in this example, the three elements of the returned list consist
+of the first argument as one single element, followed by <EM>the elements
+of</EM> the second argument (in this case, two words).  (You may be wondering
+why anyone would want to use such a strange constructor instead of <CODE>list</CODE>.  The answer has to do with recursive procedures, but hang on for a few
+paragraphs and we'll show you an example, which will help more than any
+explanation we could give in English.)
+
+<P>Finally, <CODE>append</CODE> of two arguments uses the elements of <EM>both</EM>
+arguments as elements of its return value.
+
+<P>Pictorially, <CODE>list</CODE> creates a list whose elements are the arguments:
+
+<P><CENTER><IMG SRC="../ss-pics/list.jpg" ALT="figure: list"></CENTER>
+
+<P><CODE>Cons</CODE> creates an extension of its second argument with
+one new element:
+
+<P><CENTER><IMG SRC="../ss-pics/cons.jpg" ALT="figure: cons"></CENTER>
+
+<P><CODE>Append</CODE> creates a list whose elements are the <EM>elements
+of</EM> the arguments, which must be lists:
+
+<P><CENTER><IMG SRC="../ss-pics/append.jpg" ALT="figure: append"></CENTER>
+
+<P><H2>Programming with Lists</H2>
+
+<P><A NAME="praise"></A>
+<PRE>(define (<A NAME="g10"></A>praise flavors)
+  (if (null? flavors)
+      '()
+      (cons (se (car flavors) '(is delicious))
+	    (praise (cdr flavors)))))
+
+&gt; (praise '(ginger (ultra chocolate) lychee (rum raisin)))
+((GINGER IS DELICIOUS) (ULTRA CHOCOLATE IS DELICIOUS)
+ (LYCHEE IS DELICIOUS) (RUM RAISIN IS DELICIOUS))
+</PRE>
+
+<P>In this example our result is a <EM>list of sentences.</EM> That is,
+the result is a list that includes smaller lists as elements, but each of
+these smaller lists is a sentence, in which only words are allowed.  That's
+why we used the constructor <CODE>cons</CODE> for the overall list, but <CODE>se</CODE>
+for each sentence within the list.
+
+<P>This is the example worth a thousand words that we promised, to show why <CODE>cons</CODE> is useful.  <CODE>List</CODE> wouldn't work in this situation.  You can
+use <CODE>list</CODE> only when you know exactly how many elements will be in your
+complete list.  Here, we are writing a procedure that works for any number of
+elements, so we recursively build up the list, one element at a time.
+
+<P>In the following example we take advantage of structured lists to produce a
+translation dictionary.  The entire dictionary is a list; each element of
+the dictionary, a single translation, is a two-element list; and in some
+cases a translation may involve a phrase rather than a single word, so we
+can get three deep in lists.
+
+<P><PRE>(define (<A NAME="g11"></A>translate wd)
+  (lookup wd '((window fenetre) (book livre) (computer ordinateur)
+	       (house maison) (closed ferme) (pate pate) (liver foie)
+	       (faith foi) (weekend (fin de semaine))
+	       ((practical joke) attrape) (pal copain))))
+
+(define (<A NAME="g12"></A>lookup wd dictionary)
+  (cond ((null? dictionary) '(parlez-vous anglais?))
+	((equal? wd (car (car dictionary)))
+	 (car (cdr (car dictionary))))
+	(else (lookup wd (cdr dictionary)))))
+
+&gt; (translate 'computer)
+ORDINATEUR
+
+&gt; (translate '(practical joke))
+ATTRAPE
+
+&gt; (translate 'recursion)
+(PARLEZ-VOUS ANGLAIS?)
+</PRE>
+
+<P>By the way, this example will help us explain why those ridiculous names
+<CODE>car</CODE> and <CODE>cdr</CODE> haven't died out.  In this not-so-hard program we
+find ourselves saying
+
+<P><PRE>(car (cdr (car dictionary)))
+</PRE>
+
+<P>to refer to the French part of the first translation in the
+dictionary.  Let's go through that slowly.  <CODE>(Car dictionary)</CODE> gives us
+the first element of the dictionary, one English-French pairing.  <CODE>Cdr</CODE>
+of that first element is a one-element list, that is, all but the English word
+that's the first element of the pairing.  What we want isn't the one-element
+list but rather its only element, the French word, which is its <CODE>car</CODE>.
+
+<P>This <CODE>car</CODE> of <CODE>cdr</CODE> of <CODE>car</CODE> business is pretty lengthy and
+<A NAME="g13"></A>
+awkward.  But Scheme gives us a way to say it succinctly:
+
+<P><PRE>(cadar dictionary)
+</PRE>
+
+<P>In general, we're allowed to use names like <CODE>cddadr</CODE> up to
+four deep in <CODE>A</CODE>s and <CODE>D</CODE>s.  That one means
+<A NAME="cadr"></A>
+
+<P><PRE>(cdr (cdr (car (cdr something))))
+</PRE>
+
+<P>or in other words, take the <CODE>cdr</CODE> of the <CODE>cdr</CODE> of the <CODE>car</CODE> of the <CODE>cdr</CODE> of its argument.  Notice that the order of letters
+<CODE>A</CODE> and <CODE>D</CODE> follows the order in which you'd write the procedure
+names, but (as always) the procedure that's invoked first is the one on
+the right.  Don't make the mistake of reading <CODE>cadr</CODE> as meaning
+&quot;first take the <CODE>car</CODE> and then take the <CODE>cdr</CODE>.&quot; It means &quot;take
+the <CODE>car</CODE> of the <CODE>cdr</CODE>.&quot;
+
+<P>The most commonly used of these abbreviations are <A NAME="g14"></A><CODE>cadr</CODE>, which selects
+the second element of a list; <CODE>caddr</CODE>, which selects the third element;
+and <CODE>cadddr</CODE>, which selects the fourth.
+
+<P><H2>The Truth about Sentences</H2>
+
+<P>You've probably noticed that it's hard to distinguish between a sentence
+(which <EM>must</EM> be made up of words) and a list that <EM>happens</EM> to
+have words as its elements.
+
+<P>The fact is, sentences <EM>are</EM> lists.  You could take <CODE>car</CODE> of a
+sentence, for example, and it'd work fine.  Sentences are an
+<A NAME="g15"></A><A NAME="g16"></A>abstract data type represented by lists.  We created the sentence
+<A NAME="g17"></A>
+ADT by writing special selectors and constructors that provide a
+different way of using the same underlying machinery&mdash;a different
+interface, a different metaphor, a different point of view.
+
+<P>How does our sentence point of view differ from the built-in Scheme point of
+view using lists?  There are three differences:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">A sentence can contain only words, not sublists.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sentence selectors are symmetrical front-to-back.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sentences and words have the same selectors.
+
+</TABLE><P>
+All of these differences fit a common theme:  Words and sentences
+are meant to represent English text.  The three differences reflect three
+characteristics of English text:  First, text is made of sequences of words,
+not complicated structures with sublists.  Second, in manipulating text (for
+example, finding the plural of a noun) we need to look at the end of a word
+or sentence as often as at the beginning.  Third, since words and sentences
+work together so closely, it makes sense to use the same tools with both.  By
+contrast, from Scheme's ordinary point of view, an English sentence is just
+one particular case of a much more general data structure, whereas a
+symbol<A NAME="text3" HREF="lists#ft3">[3]</A> is something entirely
+different.
+
+<P>The constructors and selectors for sentences reflect these three
+differences.  For example, it so happens that Scheme represents lists in a
+way that makes it easy to find the first element, but harder to find the
+last one.  That's reflected in the fact that there are no primitive
+selectors for lists equivalent to <CODE>last</CODE> and <CODE>butlast</CODE> for
+sentences.  But we want <CODE>last</CODE> and <CODE>butlast</CODE> to be a part of the
+sentence package, so we have to write them in terms of the &quot;real&quot; Scheme
+list selectors.  (In the versions presented here, we are ignoring the issue
+of applying the selectors to words.)
+
+<P><PRE>(define (<A NAME="g18"></A>first sent)                         ;;; just for sentences
+  (car sent))
+
+(define (<A NAME="g19"></A>last sent)
+  (if (null? (cdr sent))
+      (car sent)
+      (last (cdr sent))))
+
+(define (<A NAME="g20"></A>butfirst sent)
+  (cdr sent))
+
+(define (<A NAME="g21"></A>butlast sent)
+  (if (null? (cdr sent))
+      '()
+      (cons (car sent) (butlast (cdr sent)))))
+</PRE>
+
+<P>If you look &quot;behind the curtain&quot; at the implementation, <CODE>last</CODE> is a lot more complicated than <CODE>first</CODE>.  But from the point of
+view of a sentence user, they're equally simple.
+
+<P>In Chapter 16 we used the pattern matcher's known-values database to
+introduce the idea of abstract data types.  In that example, the most
+important contribution of the ADT was to isolate the details of the
+implementation, so that the higher-level procedures could invoke <CODE>lookup</CODE> and <CODE>add</CODE> without the clutter of looking for exclamation
+points.  We did hint, though, that the ADT represents a shift in how the
+programmer thinks about the sentences that are used to represent databases;
+we don't take the acronym of a database, even though the database <EM>is</EM>
+a sentence and so it would be possible to apply the <CODE>acronym</CODE> procedure
+to it.  Now, in thinking about sentences, this idea of shift in viewpoint is
+more central.  Although sentences are represented as lists, they behave much
+like words, which are represented quite differently.<A NAME="text4" HREF="lists#ft4">[4]</A> Our sentence mechanism highlights the <EM>uses</EM> of
+sentences, rather than the implementation.
+
+<P><H2>Higher-Order Functions</H2>
+
+<P>The <A NAME="g22"></A><A NAME="g23"></A>higher-order functions that we've used until now work only for
+words and sentences.  But the <EM>idea</EM> of higher-order functions applies
+perfectly well to structured lists.  The official list versions of <CODE>every</CODE>, <CODE>keep</CODE>, and <CODE>accumulate</CODE> are called <CODE>map</CODE>, <CODE>filter</CODE>,
+and <CODE>reduce</CODE>.
+
+<P><CODE>Map</CODE> takes two arguments, a function and a list, and returns a list
+<A NAME="g24"></A>
+containing the result of applying the function to each element of the list.
+<A NAME="map"></A>
+
+<P><PRE>&gt; (map square '(9 8 7 6))
+(81 64 49 36)
+
+&gt; (map (lambda (x) (se x x)) '(rocky raccoon))
+((ROCKY ROCKY) (RACCOON RACCOON))
+
+&gt; (every (lambda (x) (se x x)) '(rocky raccoon))
+(ROCKY ROCKY RACCOON RACCOON)
+
+&gt; (map car '((john lennon) (paul mccartney)
+	     (george harrison) (ringo starr)))
+(JOHN PAUL GEORGE RINGO)
+
+&gt; (map even? '(9 8 7 6))
+(#F #T #F #T)
+
+&gt; (map (lambda (x) (word x x)) 'rain)
+ERROR - INVALID ARGUMENT TO MAP: RAIN
+</PRE>
+
+<P>The word &quot;map&quot; may seem strange for this function, but it comes
+from the mathematical study of functions, in which they talk about a <EM>mapping</EM> of the domain into the range.  In this terminology, one talks
+about &quot;mapping a function over a set&quot; (a set of argument values, that is),
+and Lispians have taken over the same vocabulary, except that we talk about
+mapping over lists instead of mapping over sets.  In any case, <CODE>map</CODE> is
+a genuine Scheme primitive, so it's the official grownup way to talk about
+an <CODE>every</CODE>-like higher-order function, and you'd better learn to like it.
+
+<P><CODE>Filter</CODE> also takes a function and a list as arguments; it returns a
+<A NAME="filter"></A>
+<A NAME="g25"></A>
+list containing only those elements of the argument list for which the
+function returns a true value.  This is the same as <CODE>keep</CODE>, except that
+the elements of the argument list may be sublists, and their structure is
+preserved in the result.
+
+<P><PRE>&gt; (filter (lambda (flavor) (member? 'swirl flavor))
+          '((rum raisin) (root beer swirl) (rocky road) (fudge swirl)))
+((ROOT BEER SWIRL) (FUDGE SWIRL))
+
+&gt; (filter word? '((ultra chocolate) ginger lychee (raspberry sherbet)))
+(GINGER LYCHEE)
+</PRE>
+
+<P><PRE>&gt; (filter (lambda (nums) (= (car nums) (cadr nums)))
+          '((2 3) (4 4) (5 6) (7 8) (9 9)))
+((4 4) (9 9))
+</PRE>
+
+<P><CODE>Filter</CODE> probably makes sense to you as a name; the metaphor
+of the air filter that allows air through but doesn't allow dirt, and so on,
+evokes something that passes some data and blocks other data.  The only
+problem with the name is that it doesn't tell you whether the elements for
+which the predicate function returns <CODE>#t</CODE> are filtered in or filtered
+out.  But you're already used to <CODE>keep</CODE>, and <CODE>filter</CODE> works
+the same way.  <CODE>Filter</CODE> is not a standard Scheme primitive, but it's a
+universal convention; everyone defines it the same way we do.
+
+<P><CODE>Reduce</CODE> is just like <CODE>accumulate</CODE> except that it works only on
+<A NAME="reduce"></A>
+<A NAME="g26"></A>
+lists, not on words.  Neither is a built-in Scheme primitive; both names are
+seen in the literature.  (The name &quot;reduce&quot; is official in the languages
+APL and Common Lisp, which do include this higher-order function as a primitive.)
+
+<P><PRE>&gt; (reduce * '(4 5 6))
+120
+
+&gt; (reduce (lambda (list1 list2) (list (+ (car list1) (car list2))
+                                      (+ (cadr list1) (cadr list2))))
+          '((1 2) (30 40) (500 600)))
+(531 642)
+</PRE>
+
+<P><H2>Other Primitives for Lists</H2>
+
+<P>The <A NAME="g27"></A><CODE>list?</CODE> predicate returns <CODE>#t</CODE> if its argument is a list, <CODE>#f</CODE> otherwise.
+
+<P>The predicate <CODE>equal?</CODE>, which we've discussed earlier as applied to
+words and sentences, also works for structured lists.
+
+<P>The predicate <CODE>member?</CODE>, which we used in one of the
+examples above, isn't a true Scheme primitive, but part of the word and
+sentence package.  (You can tell because it &quot;takes apart&quot; a word to look
+at its letters separately, something that Scheme doesn't ordinarily do.)
+Scheme does have a <A NAME="g28"></A><CODE>member</CODE> primitive without the question mark that's
+like <CODE>member?</CODE> except for two differences:  Its second argument must be
+a list (but can be a structured list); and instead of returning <CODE>#t</CODE> it
+returns the portion of the argument list starting with the element equal to
+the first argument.  This will be clearer with an example:
+
+<P>
+<PRE>&gt; (member 'd '(a b c d e f g))
+(D E F G)
+
+&gt; (member 'h '(a b c d e f g))
+#F
+</PRE>
+
+<P>This is the main example in Scheme of the semipredicate
+idea that we mentioned earlier in passing.  It doesn't have a question mark
+in its name because it returns values other than <CODE>#t</CODE> and <CODE>#f</CODE>,
+but it works as a predicate because any non-<CODE>#f</CODE> value is considered
+true.
+
+<P>The only word-and-sentence functions that we haven't already mentioned are
+<CODE>item</CODE> and <CODE>count</CODE>.  The list equivalent of <CODE>item</CODE> is called
+<CODE><A NAME="g29"></A><CODE>list-ref</CODE></CODE> (short for &quot;reference&quot;); it's different in that it
+counts items from zero instead of from one and takes its arguments in the
+other order:
+
+<P><PRE>&gt; (list-ref '(happiness is a warm gun) 3)
+WARM
+</PRE>
+
+<P>The list equivalent of <CODE>count</CODE> is called <A NAME="g30"></A><CODE>length</CODE>, and
+it's exactly the same except that it doesn't work on words.
+
+<P>
+<P><H2>Association Lists</H2>
+
+<P><A NAME="g31"></A>
+<A NAME="g32"></A>
+<A NAME="g33"></A>
+
+<P>An example earlier in this chapter was about translating from English to
+French.  This involved searching for an entry in a list by comparing the
+first element of each entry with the information we were looking for.  A
+list of names and corresponding values is called an <EM>association
+list,</EM> or an <EM>a-list.</EM> The Scheme primitive <CODE>assoc</CODE> looks up a
+name in an a-list:
+
+<P><PRE>&gt; (assoc 'george
+         '((john lennon) (paul mccartney)
+	   (george harrison) (ringo starr)))
+(GEORGE HARRISON)
+
+&gt; (assoc 'x '((i 1) (v 5) (x 10) (l 50) (c 100) (d 500) (m 1000)))
+(X 10)
+
+&gt; (assoc 'ringo '((mick jagger) (keith richards) (brian jones)
+                  (charlie watts) (bill wyman)))
+#F
+</PRE>
+
+<P> 
+<PRE>(define dictionary
+  '((window fenetre) (book livre) (computer ordinateur)
+    (house maison) (closed ferme) (pate pate) (liver foie)
+    (faith foi) (weekend (fin de semaine))
+    ((practical joke) attrape) (pal copain)))
+
+(define (<A NAME="g34"></A>translate wd)
+  (let ((record (assoc wd dictionary)))
+    (if record
+	(cadr record)
+	'(parlez-vous anglais?))))
+</PRE>
+
+<P><CODE>Assoc</CODE> returns <CODE>#f</CODE> if it can't find the entry you're
+looking for in your association list.  Our <CODE>translate</CODE> procedure
+checks for that possibility before using <CODE>cadr</CODE> to extract the French
+translation, which is the second element of an entry.
+
+<P><H2>Functions That Take Variable Numbers of Arguments</H2>
+
+<P><A NAME="g35"></A>
+<A NAME="g36"></A>
+
+<P>In the beginning of this book we told you about some Scheme procedures that
+can take any number of arguments, but you haven't yet learned how to write
+such procedures for yourself, because Scheme's mechanism for writing these
+procedures requires the use of lists.
+
+<P>Here's a procedure that takes one or more numbers as arguments and returns
+true if these numbers are in increasing order:
+
+<P><PRE>(define (<A NAME="g37"></A>increasing? number . rest-of-numbers)
+  (cond ((null? rest-of-numbers) #t)
+	((&gt; (car rest-of-numbers) number)
+	 (apply increasing? rest-of-numbers))
+	(else #f)))
+
+&gt; (increasing? 4 12 82)
+#T
+
+&gt; (increasing? 12 4 82 107)
+#F
+</PRE>
+
+<P>The first novelty to notice in this program is the dot in the first line.
+In listing the formal parameters of a procedure, you can use a dot just
+before the last parameter to mean that that parameter (<CODE>rest-of-numbers</CODE>
+in this case) represents any number of arguments, including zero.  The value
+that will be associated with this parameter when the procedure is invoked
+will be a list whose elements are the actual argument values.
+
+<P>In this example, you must invoke <CODE>increasing?</CODE> with at least one
+argument; that argument will be associated with the parameter <CODE>number</CODE>.
+If there are no more arguments, <CODE>rest-of-numbers</CODE> will be the empty
+list.  But if there are more arguments, <CODE>rest-of-numbers</CODE> will be a list
+of their values.  (In fact, these two cases are the same: <CODE>Rest-of-numbers</CODE> will be a list of all the remaining arguments, and if there
+are no such arguments, <CODE>rest-of-numbers</CODE> is a list with no elements.)
+
+<P>The other novelty in this example is the procedure <A NAME="g38"></A><CODE>apply</CODE>.  It takes
+two arguments, a procedure and a list.  <CODE>Apply</CODE> invokes the given
+procedure with the elements of the given list as its arguments, and returns
+whatever value the procedure returns.  Therefore, the following two
+expressions are equivalent:
+
+<P><PRE>(+ 3 4 5)
+(apply + '(3 4 5))
+</PRE>
+
+<P>We use <CODE>apply</CODE> in <CODE>increasing?</CODE> because we don't know how
+many arguments we'll need in its recursive invocation.  We can't just say
+
+<P><PRE>(increasing? rest-of-numbers)
+</PRE>
+
+<P>because that would give <CODE>increasing?</CODE> a list as its single
+argument, and it doesn't take lists as arguments&mdash;it takes numbers.  We
+want <EM>the numbers in the list</EM> to be the arguments.
+
+<P>We've used the name <CODE>rest-of-numbers</CODE> as the formal parameter to suggest
+&quot;the rest of the arguments,&quot; but that's not just an idea we made up.  A
+parameter that follows a dot and therefore represents a variable number of
+arguments is called a <EM><A NAME="g39"></A><A NAME="g40"></A>rest parameter.</EM>
+
+<P>Here's a table showing the values of <CODE>number</CODE> and <CODE>rest-of-numbers</CODE>
+in the recursive invocations of <CODE>increasing?</CODE> for the example
+
+<P><PRE>(increasing? 3 5 8 20 6 43 72)
+
+number    rest-of-numbers
+
+   3      (5 8 20 6 43 72)
+   5      (8 20 6 43 72)
+   8      (20 6 43 72)
+  20      (6 43 72)          (returns false at this point)
+</PRE>
+
+<P>In the <CODE>increasing?</CODE> example we've used one formal parameter
+before the dot, but you may use any number of such parameters, including zero.
+The number of formal parameters before the dot determines the <EM>minimum</EM> number of arguments that must be used when your procedure is
+invoked.  There can be only one formal parameter <EM>after</EM> the dot.
+
+<P><H2>Recursion on Arbitrary Structured Lists</H2>
+
+<P>Let's pretend we've stored this entire book in a gigantic Scheme list
+structure.  It's a list of chapters.  Each chapter is a list of sections.
+Each section is a list of paragraphs.  Each paragraph is a list of
+sentences, which are themselves lists of words.
+
+<P>Now we want to know how many times the word &quot;mathematicians&quot; appears in the
+book.  We could do it the incredibly boring way:
+
+<P><PRE>(define (appearances-in-book wd book)
+  (reduce + (map (lambda (chapter) (appearances-in-chapter wd chapter))
+		 book)))
+
+(define (appearances-in-chapter wd chapter)
+  (reduce + (map (lambda (section) (appearances-in-section wd section))
+		 chapter)))
+
+(define (appearances-in-section wd section)
+  (reduce + (map (lambda (paragraph)
+		   (appearances-in-paragraph wd paragraph))
+		 section)))
+
+(define (appearances-in-paragraph wd paragraph)
+  (reduce + (map (lambda (sent) (appearances-in-sentence wd sent))
+		 paragraph)))
+
+(define (appearances-in-sentence given-word sent)
+  (length (filter (lambda (sent-word) (equal? sent-word given-word))
+                  sent)))
+</PRE>
+
+<P>but that <EM>would</EM> be incredibly boring.
+
+<P>What we're going to do is similar to the reasoning we used in developing the
+idea of recursion in Chapter 11.  There, we wrote a family of
+procedures named <CODE>downup1</CODE>, <CODE>downup2</CODE>, and so on; we then noticed
+that most of these procedures looked almost identical, and &quot;collapsed&quot;
+them into a single recursive procedure.  In the same spirit, notice that all
+the <CODE>appearances-in-</CODE> procedures are very similar.  We can make them
+even more similar by rewriting the last one:
+
+<P><PRE>(define (appearances-in-sentence wd sent)
+  (reduce + (map (lambda (wd2) (appearances-in-word wd wd2))
+		 sent)))
+
+(define (appearances-in-word wd wd2)
+  (if (equal? wd wd2) 1 0))
+</PRE>
+
+<P>Now, just as before, we want to write a single procedure
+that combines all of these.
+
+<P>What's the base case?  Books, chapters, sections, paragraphs, and sentences
+are all lists of smaller units.  It's only when we get down to individual
+words that we have to do something different:
+
+<P><PRE>(define (deep-appearances wd structure)
+  (if (word? structure)
+      (if (equal? structure wd) 1 0)
+      (reduce +
+	      (map (lambda (sublist) (deep-appearances wd sublist))
+		   structure))))
+
+&gt; (deep-appearances
+   'the
+   '(((the man) in ((the) moon)) ate (the) potstickers))
+3
+
+&gt; (deep-appearances 'n '(lambda (n) (if (= n 0) 1 (* n (f (- n 1))))))
+4
+
+&gt; (deep-appearances 'mathematicians the-book-structure)
+7
+</PRE>
+
+<P>This is quite different from the recursive situations we've seen
+before.  What looks like a recursive call from <CODE>deep-appearances</CODE> to
+itself is actually inside an anonymous procedure that will be called
+<EM>repeatedly</EM> by <CODE>map</CODE>.  <CODE>Deep-appearances</CODE> doesn't just call
+itself once in the recursive case; it uses <CODE>map</CODE> to call itself for each
+element of <CODE>structure</CODE>.  Each of those calls returns a number; <CODE>map</CODE>
+returns a list of those numbers.  What we want is the sum of those numbers,
+and that's what <CODE>reduce</CODE> will give us.
+
+<P>This explains why <CODE>deep-appearances</CODE> must accept words as well as lists
+as the <CODE>structure</CODE> argument.  Consider a case like
+
+<P><PRE>(deep-appearances 'foo '((a) b))
+</PRE>
+
+<P>Since <CODE>structure</CODE> has two elements, <CODE>map</CODE> will call
+<CODE>deep-appearances</CODE> twice.  One of these calls uses the list <CODE>(a)</CODE> as
+the second argument, but the other call uses the word <CODE>b</CODE> as the second
+argument.
+
+<P>Of course, if <CODE>structure</CODE> is a word, we can't make recursive calls for
+its elements; that's why words are the base case for this recursion.  What
+should <CODE>deep-appearances</CODE> return for a word?  If it's the word we're
+looking for, that counts as one appearance.  If not, it counts as no
+appearances.
+
+<P>You're accustomed to seeing the empty list as the base case in a recursive
+list processing procedure.  Also, you're accustomed to thinking of the base
+case as the end of a <EM>complete</EM> problem; you've gone through all of
+the elements of a list, and there are no more elements to find.  In most
+problems, there is only one recursive invocation that turns out to be a base
+case.  But in using <CODE>deep-appearances</CODE>, there are <EM>many</EM>
+invocations for base cases&mdash;one for every word in the list structure.
+Reaching a base case doesn't mean that we've reached the end of the entire
+structure!  You might want to trace a short example to help you understand
+the sequence of events.
+
+<P>Although there's no official name for a structure made of lists of lists of
+&hellip; of lists, there <EM>is</EM> a common convention for naming
+procedures that deal with these structures; that's why we've called this
+procedure <CODE>deep-appearances</CODE>.  The word &quot;deep&quot; indicates that this
+procedure is just like a procedure to look for the number of appearances of
+a word in a list, except that it looks &quot;all the way down&quot; into the
+sub-sub-&sdot;&sdot;&sdot;-sublists instead of just looking at the elements of the top-level
+list.
+
+<P>This version of <CODE>deep-appearances</CODE>, in which higher-order procedures are
+used to deal with the sublists of a list, is a common programming
+style.  But for some problems, there's another way to organize the same
+basic program without higher-order procedures.  This other organization
+leads to very compact, but rather tricky, programs.  It's also a widely used
+style, so we want you to be able to recognize it.
+
+<P>Here's the idea.  We deal with the base case&mdash;words&mdash;just as before.  But
+for lists we do what we often do in trying to simplify a list problem:  We
+divide the list into its first element (its <CODE>car</CODE>) and all the rest of
+its elements (its <CODE>cdr</CODE>).  But in this case, the resulting program is a
+little tricky.  Ordinarily, a recursive program for lists makes a recursive
+call for the <CODE>cdr</CODE>, which is a list of the same kind as the whole
+argument, but does something non-recursive for the <CODE>car</CODE>, which is just
+one element of that list.  This time, the <CODE>car</CODE> of the kind of structured
+list-of-lists we're exploring may itself be a list-of-lists!  So we make a
+recursive call for it, as well:
+
+<P><PRE>(define (<A NAME="g41"></A>deep-appearances wd structure)
+  (cond ((equal? wd structure) 1)              ; base case: desired word
+        ((word? structure) 0)                  ; base case: other word
+        ((null? structure) 0)                  ; base case: empty list
+        (else (+ (deep-appearances wd (car structure))
+                 (deep-appearances wd (cdr structure))))))
+</PRE>
+
+<P>This procedure has two different kinds of base case.  The first
+two <CODE>cond</CODE> clauses are similar to the base case in the previous version
+of <CODE>deep-appearances</CODE>; they deal with a &quot;structure&quot; consisting of a
+single word.  If the structure is the word we're looking for, then the word
+appears once in it.  If the structure is some other word, then the word
+appears zero times.  The third clause is more like the base case of an
+ordinary list recursion; it deals with an empty list, in which case the word
+appears zero times in it.  (This still may not be the end of the entire
+structure used as the argument to the top-level invocation, but may instead
+be merely the end of a sublist within that structure.)
+
+<P>If we reach the <CODE>else</CODE> clause, then the structure is neither a word
+nor an empty list.  It must, therefore, be a non-empty list, with a <CODE>car</CODE>
+and a <CODE>cdr</CODE>.  The number of appearances in the entire structure
+of the word we're looking for is equal to the number of appearances in the
+<CODE>car</CODE> plus the number in the <CODE>cdr</CODE>.
+
+<P>In <CODE>deep-appearances</CODE> the desired result is a single number.  What if we
+want to build a new list-of-lists structure?  Having used <CODE>car</CODE> and <CODE>cdr</CODE> to disassemble a structure, we can use <CODE>cons</CODE> to build a new one.
+For example, we'll translate our entire book into Pig Latin:
+
+<P><PRE>(define (<A NAME="g42"></A>deep-pigl structure)
+  (cond ((word? structure) (pigl structure))
+	((null? structure) '())
+	(else (cons (deep-pigl (car structure))
+		    (deep-pigl (cdr structure))))))
+
+&gt; (deep-pigl '((this is (a structure of (words)) with)
+	       (a (peculiar) shape)))
+((ISTHAY ISAY (AAY UCTURESTRAY OFAY (ORDSWAY)) ITHWAY)
+ (AAY (ECULIARPAY) APESHAY))
+</PRE>
+
+<P>Compare <CODE>deep-pigl</CODE> with an <CODE>every</CODE>-pattern list recursion
+such as <CODE>praise</CODE> on page <A HREF="lists.html#praise">there</A>.  Both look like
+
+<P><PRE>(cons (<EM>something</EM> (car argument)) (<EM>something</EM> (cdr argument)))
+</PRE>
+
+<P>And yet these procedures are profoundly different.  <CODE>Praise</CODE>
+is a simple left-to-right walk through the elements of a sequence;
+<CODE>deep-pigl</CODE> dives in and out of sublists.  The difference is a result
+of the fact that <CODE>praise</CODE> does one recursive call, for the <CODE>cdr</CODE>,
+while <CODE>deep-pigl</CODE> does two, for the <CODE>car</CODE> as well as the <CODE>cdr</CODE>.
+The pattern exhibited by <CODE>deep-pigl</CODE> is called <CODE>car</CODE>-<CODE>cdr</CODE>
+recursion.  (Another name for it is &quot;tree recursion,&quot; for a reason we'll
+see in the next chapter.)
+
+<P><H2>Pitfalls</H2>
+
+<P>Just as we mentioned about the names <CODE>word</CODE> and <CODE>sentence</CODE>,
+resist the temptation to use <CODE>list</CODE> as a formal parameter.  We use
+<CODE>lst</CODE> instead, but other alternatives are capital <CODE>L</CODE> or <CODE>seq</CODE>
+(for &quot;sequence&quot;).
+
+<P>The list constructor <CODE>cons</CODE> does not treat its two arguments
+equivalently.  The second one must be the list you're trying to extend.
+There is no equally easy way to extend a list on the right (although you can
+put the new element into a one-element list and use <CODE>append</CODE>).  If you
+get the arguments backward, you're likely to get funny-looking results that
+aren't lists, such as
+
+<P><PRE>((3 . 2) . 1)
+</PRE>
+
+<P>The result you get when you <CODE>cons</CODE> onto something that isn't a
+list is called a <EM>pair.</EM>  It's sometimes called a &quot;dotted pair&quot;
+because of what it looks like when printed:
+
+<P><PRE>&gt; (cons 'a 'b)
+(A . B)
+</PRE>
+
+<P>It's just the printed representation that's dotted, however; the
+dot isn't part of the pair any more than the parentheses around a list are
+elements of the list.  Lists are made of pairs; that's why <CODE>cons</CODE> can
+construct lists.  But we're not going to talk about any pairs that <EM>aren't</EM> part of lists, so you don't have to think about them at all,
+except to know that if dots appear in your results you're <CODE>cons</CODE>ing
+backward.
+
+<P>Don't get confused between lists and sentences.  Sentences have no
+internal structure; the good aspect of this is that it's hard to make
+mistakes about building the structure, but the bad aspect is that you might
+need such a structure.  You can have lists whose elements are sentences, but
+it's confusing if you think of the same structure sometimes as a list and
+sometimes as a sentence.
+
+<P>In reading someone else's program, it's easy not to notice that a
+procedure is making two recursive calls instead of just one.  If you notice
+only the recursive call for the <CODE>cdr</CODE>, you might think you're looking at
+a sequential recursion.
+
+<P>If you're writing a procedure whose argument is a list-of-lists, it may
+feel funny to let it also accept a word as the argument value.  People
+therefore sometimes insist on a list as the argument, leading to an overly
+complicated base case.  If your base case test says
+
+<P><PRE>(word? (car structure))
+</PRE>
+
+<P>then think about whether you'd have a better-organized program
+if the base case were
+
+<P><PRE>(word? structure)
+</PRE>
+
+<P>Remember that in a deep-structure recursion you may need two base
+cases, one for reaching an element that isn't a sublist, and the other for
+an empty list, with no elements at all.  (Our <CODE>deep-appearances</CODE>
+procedure is an example.)  Don't forget the empty-list case.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>17.1</B>&nbsp;&nbsp;What will Scheme print in response to each of the following expressions?
+Try to figure it out in your head before you try it on the computer.
+
+<P><PRE>&gt; (car '(Rod Chris Colin Hugh Paul))
+
+&gt; (cadr '(Rod Chris Colin Hugh Paul))
+
+&gt; (cdr '(Rod Chris Colin Hugh Paul))
+
+&gt; (car 'Rod)
+
+&gt; (cons '(Rod Argent) '(Chris White))
+
+&gt; (append '(Rod Argent) '(Chris White))
+
+&gt; (list '(Rod Argent) '(Chris White))
+
+&gt; (caadr '((Rod Argent) (Chris White)
+           (Colin Blunstone) (Hugh Grundy) (Paul Atkinson)))
+
+&gt; (assoc 'Colin '((Rod Argent) (Chris White)
+		  (Colin Blunstone) (Hugh Grundy) (Paul Atkinson)))
+
+&gt; (assoc 'Argent '((Rod Argent) (Chris White)
+		   (Colin Blunstone) (Hugh Grundy) (Paul Atkinson)))
+</PRE>
+
+
+<P><B>17.2</B>&nbsp;&nbsp;For each of the following examples, write a procedure of two arguments
+that, when applied to the sample arguments, returns the sample result.
+Your procedures may not include any quoted data.
+
+<P><PRE>&gt; (f1 '(a b c) '(d e f))
+((B C D))
+
+&gt; (f2 '(a b c) '(d e f))
+((B C) E)
+
+&gt; (f3 '(a b c) '(d e f))
+(A B C A B C)
+
+&gt; (f4 '(a b c) '(d e f))
+((A D) (B C E F))
+</PRE>
+
+<P>
+<B>17.3</B>&nbsp;&nbsp;Describe the value returned by this invocation of <CODE>map</CODE>:
+
+<P><PRE>&gt; (map (lambda (x) (lambda (y) (+ x y))) '(1 2 3 4))
+</PRE>
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>17.4</B>&nbsp;&nbsp;Describe the result of calling the following procedure with a list as its
+argument.  (See if you can figure it out before you try it.)
+
+<P><PRE>(define (<A NAME="g43"></A>mystery lst)
+  (mystery-helper lst '()))
+
+(define (mystery-helper lst other)
+  (if (null? lst)
+      other
+      (mystery-helper (cdr lst) (cons (car lst) other))))
+</PRE>
+
+<P>
+<B>17.5</B>&nbsp;&nbsp;Here's a procedure that takes two numbers as arguments and returns
+whichever number is larger:
+
+<P><PRE>(define (<A NAME="g44"></A>max2 a b)
+  (if (&gt; b a) b a))
+</PRE>
+
+<P>Use <CODE>max2</CODE> to implement <CODE>max</CODE>, a procedure that takes
+one or more numeric arguments and returns the largest of them.
+
+
+<P>
+<B>17.6</B>&nbsp;&nbsp;Implement <CODE>append</CODE> using <CODE>car</CODE>, <CODE>cdr</CODE>, and <CODE>cons</CODE>.
+(Note: The built-in <CODE>append</CODE> can take any number of arguments.
+First write a version that accepts only two arguments.  Then,
+optionally, try to write a version that takes any number.)
+
+
+<P>
+<B>17.7</B>&nbsp;&nbsp;<CODE>Append</CODE> may remind you of <CODE>sentence</CODE>.  They're similar, except that
+<CODE>append</CODE> works only with lists as arguments, whereas <CODE>sentence</CODE> will
+accept words as well as lists.  Implement <CODE><A NAME="g45"></A>sentence</CODE> using <CODE>append</CODE>.  (Note: The built-in <CODE>sentence</CODE> can take any number of
+arguments.  First write a version that accepts only two
+arguments.  Then, optionally, try to write a version that takes any
+number.  Also, you don't have to worry about the error checking that the
+real <CODE>sentence</CODE> does.)
+
+
+<P>
+<B>17.8</B>&nbsp;&nbsp;Write <CODE>member</CODE>.
+
+
+<P>
+<B>17.9</B>&nbsp;&nbsp;Write <CODE>list-ref</CODE>.
+
+
+<P>
+<B>17.10</B>&nbsp;&nbsp;Write <CODE>length</CODE>.
+
+
+<P>
+<B>17.11</B>&nbsp;&nbsp;Write <CODE><A NAME="g46"></A>before-in-list?</CODE>, which takes a list and two elements of
+the list.  It should return <CODE>#t</CODE> if the second argument appears in the
+list argument before the third argument:
+
+<P><PRE>&gt; (before-in-list? '(back in the ussr) 'in 'ussr)
+#T
+
+&gt; (before-in-list? '(back in the ussr) 'the 'back)
+#F
+</PRE>
+
+<P>The procedure should also return <CODE>#f</CODE> if either of the supposed elements
+doesn't appear at all.
+
+
+<P>
+
+<B>17.12</B>&nbsp;&nbsp;Write a procedure called <CODE><A NAME="g47"></A>flatten</CODE> that takes as its argument a
+list, possibly including sublists, but whose ultimate building blocks are
+words (not Booleans or procedures).  It should return a sentence containing
+all the words of the list, in the order in which they appear in the original:
+
+<P><PRE>&gt; (flatten '(((a b) c (d e)) (f g) ((((h))) (i j) k)))
+(A B C D E F G H I J K)
+</PRE>
+
+<P>
+<B>17.13</B>&nbsp;&nbsp;Here is a procedure that counts the number of words anywhere within a
+structured list:
+
+<P><PRE>(define (deep-count lst)
+  (cond ((null? lst) 0)
+	((word? (car lst)) (+ 1 (deep-count (cdr lst))))
+	(else (+ (deep-count (car lst))
+		 (deep-count (cdr lst))))))
+</PRE>
+
+<P>Although this procedure works, it's more complicated than
+necessary.  Simplify it.
+
+
+<P>
+<B>17.14</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g48"></A>branch</CODE> that takes as arguments a list of
+numbers and a nested list structure.  It should be the list-of-lists equivalent
+of <CODE>item</CODE>, like this:
+
+<P><PRE>&gt; (branch '(3) '((a b) (c d) (e f) (g h)))
+(E F)
+
+&gt; (branch '(3 2) '((a b) (c d) (e f) (g h)))
+F
+
+&gt; (branch '(2 3 1 2) '((a b) ((c d) (e f) ((g h) (i j)) k) (l m)))
+H
+</PRE>
+
+<P>In the last example above, the second element of the list is
+
+<P><PRE>((C D) (E F) ((G H) (I J)) K)
+</PRE>
+
+<P>The third element of that smaller
+list is <CODE>((G H) (I J))</CODE>; the first element of that is <CODE>(G H)</CODE>; and
+the second element of <EM>that</EM> is just <CODE>H</CODE>.
+
+<P>
+
+<P>
+<B>17.15</B>&nbsp;&nbsp;Modify the pattern matcher to represent the <CODE>known-values</CODE> database as a
+list of two-element lists, as we suggested at the beginning of this chapter.
+
+
+<P>
+<B>17.16</B>&nbsp;&nbsp;Write a predicate <CODE><A NAME="g49"></A>valid-infix?</CODE> that takes a list as argument
+and returns <CODE>#t</CODE> if and only if the list is a legitimate infix
+arithmetic expression (alternating operands and operators, with
+parentheses&mdash;that is, sublists&mdash;allowed for grouping).
+
+<P><PRE>&gt; (valid-infix? '(4 + 3 * (5 - 2)))
+#T
+
+&gt; (valid-infix? '(4 + 3 * (5 2)))
+#F
+</PRE>
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="lists#text1">[1]</A> Don't even try to figure out a sensible reason for
+this name.  It's a leftover bit of history from the first computer on which
+Lisp was implemented.  It stands for &quot;contents of address register&quot; (at
+least that's what all the books say, although it's really the address <EM>portion</EM> of the accumulator register).  <CODE>Cdr</CODE>, coming up in the next
+sentence, stands for &quot;contents of decrement register.&quot; The names seem
+silly in the Lisp context, but that's because the Lisp people used these
+register components in ways the computer designers didn't intend.  Anyway,
+this is all very interesting to history buffs but irrelevant to our
+purposes.  We're just showing off that one of us is actually old enough to
+remember these antique computers first-hand.<P>
+<A NAME="ft2" HREF="lists#text2">[2]</A> This is
+not the whole story.  See the &quot;pitfalls&quot; section for a slightly expanded
+version.<P>
+<A NAME="ft3" HREF="lists#text3">[3]</A> As we said in Chapter 5, &quot;symbol&quot; is the official name
+for words that are neither strings nor numbers.<P>
+<A NAME="ft4" HREF="lists#text4">[4]</A> We implemented
+words by combining three data types that are primitive in Scheme: strings,
+symbols, and numbers.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch18/trees.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch17/lists.html b/js/games/nluqo.github.io/~bh/ssch17/lists.html
new file mode 100644
index 0000000..5561f66
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch17/lists.html
@@ -0,0 +1,1109 @@
+<P>
+
+<A NAME="santa"></A>
+<P><CENTER><IMG SRC="../ss-pics/santa.jpg" ALT="figure: santa"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 17: Lists</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 17</H2>
+<H1>Lists</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch17.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch18/trees.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>Suppose we're using Scheme to model an ice cream shop.  We'll certainly need
+to know all the flavors that are available:
+
+<P><PRE>(vanilla ginger strawberry lychee raspberry mocha)
+</PRE>
+
+<P>For example, here's a procedure that models the behavior of
+the salesperson when you place an order:
+
+<P><PRE>(define (<A NAME="g1"></A>order flavor)
+  (if (member? flavor
+               '(vanilla ginger strawberry lychee raspberry mocha))
+      '(coming right up!)
+      (se '(sorry we have no) flavor)))
+</PRE>
+
+<P>But what happens if we want to sell a flavor like &quot;root beer fudge ripple&quot;
+or &quot;ultra chocolate&quot;?  We can't just put those words into a sentence of
+flavors, or our program will think that each word is a separate flavor.
+Beer ice cream doesn't sound very appealing.
+
+<P>What we need is a way to express a collection of items, each of which is
+itself a collection, like this:
+
+<P><PRE>(vanilla (ultra chocolate) (heath bar crunch) ginger (cherry garcia))
+</PRE>
+
+<P>This is meant to represent five flavors, two of which are named by
+single words, and the other three of which are named by sentences.
+
+<P>Luckily for us, Scheme provides exactly this capability.  The data structure
+we're using in this example is called a <EM>list.</EM> The difference
+between a sentence and a list is that the elements of a sentence must be
+words, whereas the elements of a list can be anything at all: words, <CODE>#t</CODE>, procedures, or other lists.  (A list that's an element of another list
+is called a <EM>sublist.</EM> We'll use the name <EM>structured</EM>
+<A NAME="g2"></A>
+<A NAME="g3"></A>
+list for a list that includes sublists.)
+
+<P>Another way to think about the difference between sentences and lists is that
+the definition of &quot;list&quot; is self-referential, because a list can include
+lists as elements.  The definition of &quot;sentence&quot; is not self-referential,
+because the elements of a sentence must be words.  We'll see that the
+self-referential nature of recursive procedures is vitally important in
+coping with lists.
+
+<P>Another example in which lists could be helpful is the pattern matcher.  We
+used sentences to hold <CODE>known-values</CODE> databases, such as this one:
+
+<P><PRE>(FRONT YOUR MOTHER ! BACK SHOULD KNOW !)
+</PRE>
+
+<P>This would be both easier for you to read and easier for programs
+to manipulate if we used list structure to indicate the grouping instead of
+exclamation points:
+
+<P><PRE>((FRONT (YOUR MOTHER)) (BACK (SHOULD KNOW)))
+</PRE>
+
+<P>We remarked when we introduced sentences that they're a feature we added to
+Scheme just for the sake of this book.  Lists, by contrast, are at the core
+of what Lisp has been about from its beginning.  (In fact the name &quot;Lisp&quot;
+stands for &quot;LISt Processing.&quot;)
+
+<P><H2>Selectors and Constructors</H2>
+
+<P>When we introduced words and sentences we had to provide ways to take them
+apart, such as <CODE>first</CODE>, and ways to put them together, such as <CODE>sentence</CODE>.  Now we'll tell you about the selectors and
+constructors for lists.
+
+<P>
+
+<P>The function to select the first element of a list is called
+<A NAME="g4"></A><CODE>car</CODE>.<A NAME="text1" HREF="lists.html#ft1">[1]</A> The function to select the
+portion of a list containing all but the first element is called
+<A NAME="g5"></A><CODE>cdr</CODE>, which is pronounced &quot;could-er.&quot; These are analogous to <CODE>first</CODE> and <CODE>butfirst</CODE> for words and sentences.
+
+<P>Of course, we can't extract pieces of a list that's empty, so we need a
+predicate that will check for an empty list.  It's called <A NAME="g6"></A><CODE>null?</CODE> and it
+returns <CODE>#t</CODE> for the empty list, <CODE>#f</CODE> for anything else.  This is
+the list equivalent of <CODE>empty?</CODE> for words and sentences.
+
+<P>There are two constructors for lists.  The function <A NAME="g7"></A><CODE>list</CODE> takes
+any number of arguments and returns a list with those arguments as its
+elements.
+
+<P><PRE>&gt; (list (+ 2 3) 'squash (= 2 2) (list 4 5) remainder 'zucchini)
+(5 SQUASH #T (4 5) #&lt;PROCEDURE&gt; ZUCCHINI)
+</PRE>
+
+<P>The other constructor, <A NAME="g8"></A><CODE>cons</CODE>, is used when you already have
+a list and you want to add one new element.  <CODE>Cons</CODE> takes two arguments,
+an element and a list (in that order), and returns a new list whose <CODE>car</CODE> is the first argument and whose <CODE>cdr</CODE> is the second.
+
+<P><PRE>&gt; (cons 'for '(no one))
+(FOR NO ONE)
+
+&gt; (cons 'julia '())
+(JULIA)
+</PRE>
+
+<P>There is also a function that combines the elements of two or more lists
+into a larger list:
+
+<P><PRE>&gt; (append '(get back) '(the word))
+(GET BACK THE WORD)
+</PRE>
+
+<P>It's important that you understand how <CODE>list</CODE>, <CODE>cons</CODE>,
+and <A NAME="g9"></A><CODE>append</CODE> differ from each other:
+
+<P><PRE>&gt; (list '(i am) '(the walrus))
+((I AM) (THE WALRUS))
+
+&gt; (cons '(i am) '(the walrus))
+((I AM) THE WALRUS)
+
+&gt; (append '(i am) '(the walrus))
+(I AM THE WALRUS)
+</PRE>
+
+<P>When <CODE>list</CODE> is invoked with two arguments, it considers them to be two
+proposed elements for a new two-element list.  <CODE>List</CODE> doesn't care
+whether the arguments are themselves lists, words, or anything else; it just
+creates a new list whose elements are the arguments.  In this case, it ends
+up with a list of two lists.
+
+<P> 
+<CODE>Cons</CODE> requires that its second argument be a list.<A NAME="text2" HREF="lists.html#ft2">[2]</A> <CODE>Cons</CODE> will extend that list to form a new list, one element
+longer than the original; the first element of the resulting list comes from
+the first argument to <CODE>cons</CODE>.  In other words, when you pass <CODE>cons</CODE>
+two arguments, you get back a list whose <CODE>car</CODE> is the first argument to
+<CODE>cons</CODE> and whose <CODE>cdr</CODE> is the second argument.
+
+<P>Thus, in this example, the three elements of the returned list consist
+of the first argument as one single element, followed by <EM>the elements
+of</EM> the second argument (in this case, two words).  (You may be wondering
+why anyone would want to use such a strange constructor instead of <CODE>list</CODE>.  The answer has to do with recursive procedures, but hang on for a few
+paragraphs and we'll show you an example, which will help more than any
+explanation we could give in English.)
+
+<P>Finally, <CODE>append</CODE> of two arguments uses the elements of <EM>both</EM>
+arguments as elements of its return value.
+
+<P>Pictorially, <CODE>list</CODE> creates a list whose elements are the arguments:
+
+<P><CENTER><IMG SRC="../ss-pics/list.jpg" ALT="figure: list"></CENTER>
+
+<P><CODE>Cons</CODE> creates an extension of its second argument with
+one new element:
+
+<P><CENTER><IMG SRC="../ss-pics/cons.jpg" ALT="figure: cons"></CENTER>
+
+<P><CODE>Append</CODE> creates a list whose elements are the <EM>elements
+of</EM> the arguments, which must be lists:
+
+<P><CENTER><IMG SRC="../ss-pics/append.jpg" ALT="figure: append"></CENTER>
+
+<P><H2>Programming with Lists</H2>
+
+<P><A NAME="praise"></A>
+<PRE>(define (<A NAME="g10"></A>praise flavors)
+  (if (null? flavors)
+      '()
+      (cons (se (car flavors) '(is delicious))
+	    (praise (cdr flavors)))))
+
+&gt; (praise '(ginger (ultra chocolate) lychee (rum raisin)))
+((GINGER IS DELICIOUS) (ULTRA CHOCOLATE IS DELICIOUS)
+ (LYCHEE IS DELICIOUS) (RUM RAISIN IS DELICIOUS))
+</PRE>
+
+<P>In this example our result is a <EM>list of sentences.</EM> That is,
+the result is a list that includes smaller lists as elements, but each of
+these smaller lists is a sentence, in which only words are allowed.  That's
+why we used the constructor <CODE>cons</CODE> for the overall list, but <CODE>se</CODE>
+for each sentence within the list.
+
+<P>This is the example worth a thousand words that we promised, to show why <CODE>cons</CODE> is useful.  <CODE>List</CODE> wouldn't work in this situation.  You can
+use <CODE>list</CODE> only when you know exactly how many elements will be in your
+complete list.  Here, we are writing a procedure that works for any number of
+elements, so we recursively build up the list, one element at a time.
+
+<P>In the following example we take advantage of structured lists to produce a
+translation dictionary.  The entire dictionary is a list; each element of
+the dictionary, a single translation, is a two-element list; and in some
+cases a translation may involve a phrase rather than a single word, so we
+can get three deep in lists.
+
+<P><PRE>(define (<A NAME="g11"></A>translate wd)
+  (lookup wd '((window fenetre) (book livre) (computer ordinateur)
+	       (house maison) (closed ferme) (pate pate) (liver foie)
+	       (faith foi) (weekend (fin de semaine))
+	       ((practical joke) attrape) (pal copain))))
+
+(define (<A NAME="g12"></A>lookup wd dictionary)
+  (cond ((null? dictionary) '(parlez-vous anglais?))
+	((equal? wd (car (car dictionary)))
+	 (car (cdr (car dictionary))))
+	(else (lookup wd (cdr dictionary)))))
+
+&gt; (translate 'computer)
+ORDINATEUR
+
+&gt; (translate '(practical joke))
+ATTRAPE
+
+&gt; (translate 'recursion)
+(PARLEZ-VOUS ANGLAIS?)
+</PRE>
+
+<P>By the way, this example will help us explain why those ridiculous names
+<CODE>car</CODE> and <CODE>cdr</CODE> haven't died out.  In this not-so-hard program we
+find ourselves saying
+
+<P><PRE>(car (cdr (car dictionary)))
+</PRE>
+
+<P>to refer to the French part of the first translation in the
+dictionary.  Let's go through that slowly.  <CODE>(Car dictionary)</CODE> gives us
+the first element of the dictionary, one English-French pairing.  <CODE>Cdr</CODE>
+of that first element is a one-element list, that is, all but the English word
+that's the first element of the pairing.  What we want isn't the one-element
+list but rather its only element, the French word, which is its <CODE>car</CODE>.
+
+<P>This <CODE>car</CODE> of <CODE>cdr</CODE> of <CODE>car</CODE> business is pretty lengthy and
+<A NAME="g13"></A>
+awkward.  But Scheme gives us a way to say it succinctly:
+
+<P><PRE>(cadar dictionary)
+</PRE>
+
+<P>In general, we're allowed to use names like <CODE>cddadr</CODE> up to
+four deep in <CODE>A</CODE>s and <CODE>D</CODE>s.  That one means
+<A NAME="cadr"></A>
+
+<P><PRE>(cdr (cdr (car (cdr something))))
+</PRE>
+
+<P>or in other words, take the <CODE>cdr</CODE> of the <CODE>cdr</CODE> of the <CODE>car</CODE> of the <CODE>cdr</CODE> of its argument.  Notice that the order of letters
+<CODE>A</CODE> and <CODE>D</CODE> follows the order in which you'd write the procedure
+names, but (as always) the procedure that's invoked first is the one on
+the right.  Don't make the mistake of reading <CODE>cadr</CODE> as meaning
+&quot;first take the <CODE>car</CODE> and then take the <CODE>cdr</CODE>.&quot; It means &quot;take
+the <CODE>car</CODE> of the <CODE>cdr</CODE>.&quot;
+
+<P>The most commonly used of these abbreviations are <A NAME="g14"></A><CODE>cadr</CODE>, which selects
+the second element of a list; <CODE>caddr</CODE>, which selects the third element;
+and <CODE>cadddr</CODE>, which selects the fourth.
+
+<P><H2>The Truth about Sentences</H2>
+
+<P>You've probably noticed that it's hard to distinguish between a sentence
+(which <EM>must</EM> be made up of words) and a list that <EM>happens</EM> to
+have words as its elements.
+
+<P>The fact is, sentences <EM>are</EM> lists.  You could take <CODE>car</CODE> of a
+sentence, for example, and it'd work fine.  Sentences are an
+<A NAME="g15"></A><A NAME="g16"></A>abstract data type represented by lists.  We created the sentence
+<A NAME="g17"></A>
+ADT by writing special selectors and constructors that provide a
+different way of using the same underlying machinery&mdash;a different
+interface, a different metaphor, a different point of view.
+
+<P>How does our sentence point of view differ from the built-in Scheme point of
+view using lists?  There are three differences:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">A sentence can contain only words, not sublists.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sentence selectors are symmetrical front-to-back.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sentences and words have the same selectors.
+
+</TABLE><P>
+All of these differences fit a common theme:  Words and sentences
+are meant to represent English text.  The three differences reflect three
+characteristics of English text:  First, text is made of sequences of words,
+not complicated structures with sublists.  Second, in manipulating text (for
+example, finding the plural of a noun) we need to look at the end of a word
+or sentence as often as at the beginning.  Third, since words and sentences
+work together so closely, it makes sense to use the same tools with both.  By
+contrast, from Scheme's ordinary point of view, an English sentence is just
+one particular case of a much more general data structure, whereas a
+symbol<A NAME="text3" HREF="lists.html#ft3">[3]</A> is something entirely
+different.
+
+<P>The constructors and selectors for sentences reflect these three
+differences.  For example, it so happens that Scheme represents lists in a
+way that makes it easy to find the first element, but harder to find the
+last one.  That's reflected in the fact that there are no primitive
+selectors for lists equivalent to <CODE>last</CODE> and <CODE>butlast</CODE> for
+sentences.  But we want <CODE>last</CODE> and <CODE>butlast</CODE> to be a part of the
+sentence package, so we have to write them in terms of the &quot;real&quot; Scheme
+list selectors.  (In the versions presented here, we are ignoring the issue
+of applying the selectors to words.)
+
+<P><PRE>(define (<A NAME="g18"></A>first sent)                         ;;; just for sentences
+  (car sent))
+
+(define (<A NAME="g19"></A>last sent)
+  (if (null? (cdr sent))
+      (car sent)
+      (last (cdr sent))))
+
+(define (<A NAME="g20"></A>butfirst sent)
+  (cdr sent))
+
+(define (<A NAME="g21"></A>butlast sent)
+  (if (null? (cdr sent))
+      '()
+      (cons (car sent) (butlast (cdr sent)))))
+</PRE>
+
+<P>If you look &quot;behind the curtain&quot; at the implementation, <CODE>last</CODE> is a lot more complicated than <CODE>first</CODE>.  But from the point of
+view of a sentence user, they're equally simple.
+
+<P>In Chapter 16 we used the pattern matcher's known-values database to
+introduce the idea of abstract data types.  In that example, the most
+important contribution of the ADT was to isolate the details of the
+implementation, so that the higher-level procedures could invoke <CODE>lookup</CODE> and <CODE>add</CODE> without the clutter of looking for exclamation
+points.  We did hint, though, that the ADT represents a shift in how the
+programmer thinks about the sentences that are used to represent databases;
+we don't take the acronym of a database, even though the database <EM>is</EM>
+a sentence and so it would be possible to apply the <CODE>acronym</CODE> procedure
+to it.  Now, in thinking about sentences, this idea of shift in viewpoint is
+more central.  Although sentences are represented as lists, they behave much
+like words, which are represented quite differently.<A NAME="text4" HREF="lists.html#ft4">[4]</A> Our sentence mechanism highlights the <EM>uses</EM> of
+sentences, rather than the implementation.
+
+<P><H2>Higher-Order Functions</H2>
+
+<P>The <A NAME="g22"></A><A NAME="g23"></A>higher-order functions that we've used until now work only for
+words and sentences.  But the <EM>idea</EM> of higher-order functions applies
+perfectly well to structured lists.  The official list versions of <CODE>every</CODE>, <CODE>keep</CODE>, and <CODE>accumulate</CODE> are called <CODE>map</CODE>, <CODE>filter</CODE>,
+and <CODE>reduce</CODE>.
+
+<P><CODE>Map</CODE> takes two arguments, a function and a list, and returns a list
+<A NAME="g24"></A>
+containing the result of applying the function to each element of the list.
+<A NAME="map"></A>
+
+<P><PRE>&gt; (map square '(9 8 7 6))
+(81 64 49 36)
+
+&gt; (map (lambda (x) (se x x)) '(rocky raccoon))
+((ROCKY ROCKY) (RACCOON RACCOON))
+
+&gt; (every (lambda (x) (se x x)) '(rocky raccoon))
+(ROCKY ROCKY RACCOON RACCOON)
+
+&gt; (map car '((john lennon) (paul mccartney)
+	     (george harrison) (ringo starr)))
+(JOHN PAUL GEORGE RINGO)
+
+&gt; (map even? '(9 8 7 6))
+(#F #T #F #T)
+
+&gt; (map (lambda (x) (word x x)) 'rain)
+ERROR - INVALID ARGUMENT TO MAP: RAIN
+</PRE>
+
+<P>The word &quot;map&quot; may seem strange for this function, but it comes
+from the mathematical study of functions, in which they talk about a <EM>mapping</EM> of the domain into the range.  In this terminology, one talks
+about &quot;mapping a function over a set&quot; (a set of argument values, that is),
+and Lispians have taken over the same vocabulary, except that we talk about
+mapping over lists instead of mapping over sets.  In any case, <CODE>map</CODE> is
+a genuine Scheme primitive, so it's the official grownup way to talk about
+an <CODE>every</CODE>-like higher-order function, and you'd better learn to like it.
+
+<P><CODE>Filter</CODE> also takes a function and a list as arguments; it returns a
+<A NAME="filter"></A>
+<A NAME="g25"></A>
+list containing only those elements of the argument list for which the
+function returns a true value.  This is the same as <CODE>keep</CODE>, except that
+the elements of the argument list may be sublists, and their structure is
+preserved in the result.
+
+<P><PRE>&gt; (filter (lambda (flavor) (member? 'swirl flavor))
+          '((rum raisin) (root beer swirl) (rocky road) (fudge swirl)))
+((ROOT BEER SWIRL) (FUDGE SWIRL))
+
+&gt; (filter word? '((ultra chocolate) ginger lychee (raspberry sherbet)))
+(GINGER LYCHEE)
+</PRE>
+
+<P><PRE>&gt; (filter (lambda (nums) (= (car nums) (cadr nums)))
+          '((2 3) (4 4) (5 6) (7 8) (9 9)))
+((4 4) (9 9))
+</PRE>
+
+<P><CODE>Filter</CODE> probably makes sense to you as a name; the metaphor
+of the air filter that allows air through but doesn't allow dirt, and so on,
+evokes something that passes some data and blocks other data.  The only
+problem with the name is that it doesn't tell you whether the elements for
+which the predicate function returns <CODE>#t</CODE> are filtered in or filtered
+out.  But you're already used to <CODE>keep</CODE>, and <CODE>filter</CODE> works
+the same way.  <CODE>Filter</CODE> is not a standard Scheme primitive, but it's a
+universal convention; everyone defines it the same way we do.
+
+<P><CODE>Reduce</CODE> is just like <CODE>accumulate</CODE> except that it works only on
+<A NAME="reduce"></A>
+<A NAME="g26"></A>
+lists, not on words.  Neither is a built-in Scheme primitive; both names are
+seen in the literature.  (The name &quot;reduce&quot; is official in the languages
+APL and Common Lisp, which do include this higher-order function as a primitive.)
+
+<P><PRE>&gt; (reduce * '(4 5 6))
+120
+
+&gt; (reduce (lambda (list1 list2) (list (+ (car list1) (car list2))
+                                      (+ (cadr list1) (cadr list2))))
+          '((1 2) (30 40) (500 600)))
+(531 642)
+</PRE>
+
+<P><H2>Other Primitives for Lists</H2>
+
+<P>The <A NAME="g27"></A><CODE>list?</CODE> predicate returns <CODE>#t</CODE> if its argument is a list, <CODE>#f</CODE> otherwise.
+
+<P>The predicate <CODE>equal?</CODE>, which we've discussed earlier as applied to
+words and sentences, also works for structured lists.
+
+<P>The predicate <CODE>member?</CODE>, which we used in one of the
+examples above, isn't a true Scheme primitive, but part of the word and
+sentence package.  (You can tell because it &quot;takes apart&quot; a word to look
+at its letters separately, something that Scheme doesn't ordinarily do.)
+Scheme does have a <A NAME="g28"></A><CODE>member</CODE> primitive without the question mark that's
+like <CODE>member?</CODE> except for two differences:  Its second argument must be
+a list (but can be a structured list); and instead of returning <CODE>#t</CODE> it
+returns the portion of the argument list starting with the element equal to
+the first argument.  This will be clearer with an example:
+
+<P>
+<PRE>&gt; (member 'd '(a b c d e f g))
+(D E F G)
+
+&gt; (member 'h '(a b c d e f g))
+#F
+</PRE>
+
+<P>This is the main example in Scheme of the semipredicate
+idea that we mentioned earlier in passing.  It doesn't have a question mark
+in its name because it returns values other than <CODE>#t</CODE> and <CODE>#f</CODE>,
+but it works as a predicate because any non-<CODE>#f</CODE> value is considered
+true.
+
+<P>The only word-and-sentence functions that we haven't already mentioned are
+<CODE>item</CODE> and <CODE>count</CODE>.  The list equivalent of <CODE>item</CODE> is called
+<CODE><A NAME="g29"></A><CODE>list-ref</CODE></CODE> (short for &quot;reference&quot;); it's different in that it
+counts items from zero instead of from one and takes its arguments in the
+other order:
+
+<P><PRE>&gt; (list-ref '(happiness is a warm gun) 3)
+WARM
+</PRE>
+
+<P>The list equivalent of <CODE>count</CODE> is called <A NAME="g30"></A><CODE>length</CODE>, and
+it's exactly the same except that it doesn't work on words.
+
+<P>
+<P><H2>Association Lists</H2>
+
+<P><A NAME="g31"></A>
+<A NAME="g32"></A>
+<A NAME="g33"></A>
+
+<P>An example earlier in this chapter was about translating from English to
+French.  This involved searching for an entry in a list by comparing the
+first element of each entry with the information we were looking for.  A
+list of names and corresponding values is called an <EM>association
+list,</EM> or an <EM>a-list.</EM> The Scheme primitive <CODE>assoc</CODE> looks up a
+name in an a-list:
+
+<P><PRE>&gt; (assoc 'george
+         '((john lennon) (paul mccartney)
+	   (george harrison) (ringo starr)))
+(GEORGE HARRISON)
+
+&gt; (assoc 'x '((i 1) (v 5) (x 10) (l 50) (c 100) (d 500) (m 1000)))
+(X 10)
+
+&gt; (assoc 'ringo '((mick jagger) (keith richards) (brian jones)
+                  (charlie watts) (bill wyman)))
+#F
+</PRE>
+
+<P> 
+<PRE>(define dictionary
+  '((window fenetre) (book livre) (computer ordinateur)
+    (house maison) (closed ferme) (pate pate) (liver foie)
+    (faith foi) (weekend (fin de semaine))
+    ((practical joke) attrape) (pal copain)))
+
+(define (<A NAME="g34"></A>translate wd)
+  (let ((record (assoc wd dictionary)))
+    (if record
+	(cadr record)
+	'(parlez-vous anglais?))))
+</PRE>
+
+<P><CODE>Assoc</CODE> returns <CODE>#f</CODE> if it can't find the entry you're
+looking for in your association list.  Our <CODE>translate</CODE> procedure
+checks for that possibility before using <CODE>cadr</CODE> to extract the French
+translation, which is the second element of an entry.
+
+<P><H2>Functions That Take Variable Numbers of Arguments</H2>
+
+<P><A NAME="g35"></A>
+<A NAME="g36"></A>
+
+<P>In the beginning of this book we told you about some Scheme procedures that
+can take any number of arguments, but you haven't yet learned how to write
+such procedures for yourself, because Scheme's mechanism for writing these
+procedures requires the use of lists.
+
+<P>Here's a procedure that takes one or more numbers as arguments and returns
+true if these numbers are in increasing order:
+
+<P><PRE>(define (<A NAME="g37"></A>increasing? number . rest-of-numbers)
+  (cond ((null? rest-of-numbers) #t)
+	((&gt; (car rest-of-numbers) number)
+	 (apply increasing? rest-of-numbers))
+	(else #f)))
+
+&gt; (increasing? 4 12 82)
+#T
+
+&gt; (increasing? 12 4 82 107)
+#F
+</PRE>
+
+<P>The first novelty to notice in this program is the dot in the first line.
+In listing the formal parameters of a procedure, you can use a dot just
+before the last parameter to mean that that parameter (<CODE>rest-of-numbers</CODE>
+in this case) represents any number of arguments, including zero.  The value
+that will be associated with this parameter when the procedure is invoked
+will be a list whose elements are the actual argument values.
+
+<P>In this example, you must invoke <CODE>increasing?</CODE> with at least one
+argument; that argument will be associated with the parameter <CODE>number</CODE>.
+If there are no more arguments, <CODE>rest-of-numbers</CODE> will be the empty
+list.  But if there are more arguments, <CODE>rest-of-numbers</CODE> will be a list
+of their values.  (In fact, these two cases are the same: <CODE>Rest-of-numbers</CODE> will be a list of all the remaining arguments, and if there
+are no such arguments, <CODE>rest-of-numbers</CODE> is a list with no elements.)
+
+<P>The other novelty in this example is the procedure <A NAME="g38"></A><CODE>apply</CODE>.  It takes
+two arguments, a procedure and a list.  <CODE>Apply</CODE> invokes the given
+procedure with the elements of the given list as its arguments, and returns
+whatever value the procedure returns.  Therefore, the following two
+expressions are equivalent:
+
+<P><PRE>(+ 3 4 5)
+(apply + '(3 4 5))
+</PRE>
+
+<P>We use <CODE>apply</CODE> in <CODE>increasing?</CODE> because we don't know how
+many arguments we'll need in its recursive invocation.  We can't just say
+
+<P><PRE>(increasing? rest-of-numbers)
+</PRE>
+
+<P>because that would give <CODE>increasing?</CODE> a list as its single
+argument, and it doesn't take lists as arguments&mdash;it takes numbers.  We
+want <EM>the numbers in the list</EM> to be the arguments.
+
+<P>We've used the name <CODE>rest-of-numbers</CODE> as the formal parameter to suggest
+&quot;the rest of the arguments,&quot; but that's not just an idea we made up.  A
+parameter that follows a dot and therefore represents a variable number of
+arguments is called a <EM><A NAME="g39"></A><A NAME="g40"></A>rest parameter.</EM>
+
+<P>Here's a table showing the values of <CODE>number</CODE> and <CODE>rest-of-numbers</CODE>
+in the recursive invocations of <CODE>increasing?</CODE> for the example
+
+<P><PRE>(increasing? 3 5 8 20 6 43 72)
+
+number    rest-of-numbers
+
+   3      (5 8 20 6 43 72)
+   5      (8 20 6 43 72)
+   8      (20 6 43 72)
+  20      (6 43 72)          (returns false at this point)
+</PRE>
+
+<P>In the <CODE>increasing?</CODE> example we've used one formal parameter
+before the dot, but you may use any number of such parameters, including zero.
+The number of formal parameters before the dot determines the <EM>minimum</EM> number of arguments that must be used when your procedure is
+invoked.  There can be only one formal parameter <EM>after</EM> the dot.
+
+<P><H2>Recursion on Arbitrary Structured Lists</H2>
+
+<P>Let's pretend we've stored this entire book in a gigantic Scheme list
+structure.  It's a list of chapters.  Each chapter is a list of sections.
+Each section is a list of paragraphs.  Each paragraph is a list of
+sentences, which are themselves lists of words.
+
+<P>Now we want to know how many times the word &quot;mathematicians&quot; appears in the
+book.  We could do it the incredibly boring way:
+
+<P><PRE>(define (appearances-in-book wd book)
+  (reduce + (map (lambda (chapter) (appearances-in-chapter wd chapter))
+		 book)))
+
+(define (appearances-in-chapter wd chapter)
+  (reduce + (map (lambda (section) (appearances-in-section wd section))
+		 chapter)))
+
+(define (appearances-in-section wd section)
+  (reduce + (map (lambda (paragraph)
+		   (appearances-in-paragraph wd paragraph))
+		 section)))
+
+(define (appearances-in-paragraph wd paragraph)
+  (reduce + (map (lambda (sent) (appearances-in-sentence wd sent))
+		 paragraph)))
+
+(define (appearances-in-sentence given-word sent)
+  (length (filter (lambda (sent-word) (equal? sent-word given-word))
+                  sent)))
+</PRE>
+
+<P>but that <EM>would</EM> be incredibly boring.
+
+<P>What we're going to do is similar to the reasoning we used in developing the
+idea of recursion in Chapter 11.  There, we wrote a family of
+procedures named <CODE>downup1</CODE>, <CODE>downup2</CODE>, and so on; we then noticed
+that most of these procedures looked almost identical, and &quot;collapsed&quot;
+them into a single recursive procedure.  In the same spirit, notice that all
+the <CODE>appearances-in-</CODE> procedures are very similar.  We can make them
+even more similar by rewriting the last one:
+
+<P><PRE>(define (appearances-in-sentence wd sent)
+  (reduce + (map (lambda (wd2) (appearances-in-word wd wd2))
+		 sent)))
+
+(define (appearances-in-word wd wd2)
+  (if (equal? wd wd2) 1 0))
+</PRE>
+
+<P>Now, just as before, we want to write a single procedure
+that combines all of these.
+
+<P>What's the base case?  Books, chapters, sections, paragraphs, and sentences
+are all lists of smaller units.  It's only when we get down to individual
+words that we have to do something different:
+
+<P><PRE>(define (deep-appearances wd structure)
+  (if (word? structure)
+      (if (equal? structure wd) 1 0)
+      (reduce +
+	      (map (lambda (sublist) (deep-appearances wd sublist))
+		   structure))))
+
+&gt; (deep-appearances
+   'the
+   '(((the man) in ((the) moon)) ate (the) potstickers))
+3
+
+&gt; (deep-appearances 'n '(lambda (n) (if (= n 0) 1 (* n (f (- n 1))))))
+4
+
+&gt; (deep-appearances 'mathematicians the-book-structure)
+7
+</PRE>
+
+<P>This is quite different from the recursive situations we've seen
+before.  What looks like a recursive call from <CODE>deep-appearances</CODE> to
+itself is actually inside an anonymous procedure that will be called
+<EM>repeatedly</EM> by <CODE>map</CODE>.  <CODE>Deep-appearances</CODE> doesn't just call
+itself once in the recursive case; it uses <CODE>map</CODE> to call itself for each
+element of <CODE>structure</CODE>.  Each of those calls returns a number; <CODE>map</CODE>
+returns a list of those numbers.  What we want is the sum of those numbers,
+and that's what <CODE>reduce</CODE> will give us.
+
+<P>This explains why <CODE>deep-appearances</CODE> must accept words as well as lists
+as the <CODE>structure</CODE> argument.  Consider a case like
+
+<P><PRE>(deep-appearances 'foo '((a) b))
+</PRE>
+
+<P>Since <CODE>structure</CODE> has two elements, <CODE>map</CODE> will call
+<CODE>deep-appearances</CODE> twice.  One of these calls uses the list <CODE>(a)</CODE> as
+the second argument, but the other call uses the word <CODE>b</CODE> as the second
+argument.
+
+<P>Of course, if <CODE>structure</CODE> is a word, we can't make recursive calls for
+its elements; that's why words are the base case for this recursion.  What
+should <CODE>deep-appearances</CODE> return for a word?  If it's the word we're
+looking for, that counts as one appearance.  If not, it counts as no
+appearances.
+
+<P>You're accustomed to seeing the empty list as the base case in a recursive
+list processing procedure.  Also, you're accustomed to thinking of the base
+case as the end of a <EM>complete</EM> problem; you've gone through all of
+the elements of a list, and there are no more elements to find.  In most
+problems, there is only one recursive invocation that turns out to be a base
+case.  But in using <CODE>deep-appearances</CODE>, there are <EM>many</EM>
+invocations for base cases&mdash;one for every word in the list structure.
+Reaching a base case doesn't mean that we've reached the end of the entire
+structure!  You might want to trace a short example to help you understand
+the sequence of events.
+
+<P>Although there's no official name for a structure made of lists of lists of
+&hellip; of lists, there <EM>is</EM> a common convention for naming
+procedures that deal with these structures; that's why we've called this
+procedure <CODE>deep-appearances</CODE>.  The word &quot;deep&quot; indicates that this
+procedure is just like a procedure to look for the number of appearances of
+a word in a list, except that it looks &quot;all the way down&quot; into the
+sub-sub-&sdot;&sdot;&sdot;-sublists instead of just looking at the elements of the top-level
+list.
+
+<P>This version of <CODE>deep-appearances</CODE>, in which higher-order procedures are
+used to deal with the sublists of a list, is a common programming
+style.  But for some problems, there's another way to organize the same
+basic program without higher-order procedures.  This other organization
+leads to very compact, but rather tricky, programs.  It's also a widely used
+style, so we want you to be able to recognize it.
+
+<P>Here's the idea.  We deal with the base case&mdash;words&mdash;just as before.  But
+for lists we do what we often do in trying to simplify a list problem:  We
+divide the list into its first element (its <CODE>car</CODE>) and all the rest of
+its elements (its <CODE>cdr</CODE>).  But in this case, the resulting program is a
+little tricky.  Ordinarily, a recursive program for lists makes a recursive
+call for the <CODE>cdr</CODE>, which is a list of the same kind as the whole
+argument, but does something non-recursive for the <CODE>car</CODE>, which is just
+one element of that list.  This time, the <CODE>car</CODE> of the kind of structured
+list-of-lists we're exploring may itself be a list-of-lists!  So we make a
+recursive call for it, as well:
+
+<P><PRE>(define (<A NAME="g41"></A>deep-appearances wd structure)
+  (cond ((equal? wd structure) 1)              ; base case: desired word
+        ((word? structure) 0)                  ; base case: other word
+        ((null? structure) 0)                  ; base case: empty list
+        (else (+ (deep-appearances wd (car structure))
+                 (deep-appearances wd (cdr structure))))))
+</PRE>
+
+<P>This procedure has two different kinds of base case.  The first
+two <CODE>cond</CODE> clauses are similar to the base case in the previous version
+of <CODE>deep-appearances</CODE>; they deal with a &quot;structure&quot; consisting of a
+single word.  If the structure is the word we're looking for, then the word
+appears once in it.  If the structure is some other word, then the word
+appears zero times.  The third clause is more like the base case of an
+ordinary list recursion; it deals with an empty list, in which case the word
+appears zero times in it.  (This still may not be the end of the entire
+structure used as the argument to the top-level invocation, but may instead
+be merely the end of a sublist within that structure.)
+
+<P>If we reach the <CODE>else</CODE> clause, then the structure is neither a word
+nor an empty list.  It must, therefore, be a non-empty list, with a <CODE>car</CODE>
+and a <CODE>cdr</CODE>.  The number of appearances in the entire structure
+of the word we're looking for is equal to the number of appearances in the
+<CODE>car</CODE> plus the number in the <CODE>cdr</CODE>.
+
+<P>In <CODE>deep-appearances</CODE> the desired result is a single number.  What if we
+want to build a new list-of-lists structure?  Having used <CODE>car</CODE> and <CODE>cdr</CODE> to disassemble a structure, we can use <CODE>cons</CODE> to build a new one.
+For example, we'll translate our entire book into Pig Latin:
+
+<P><PRE>(define (<A NAME="g42"></A>deep-pigl structure)
+  (cond ((word? structure) (pigl structure))
+	((null? structure) '())
+	(else (cons (deep-pigl (car structure))
+		    (deep-pigl (cdr structure))))))
+
+&gt; (deep-pigl '((this is (a structure of (words)) with)
+	       (a (peculiar) shape)))
+((ISTHAY ISAY (AAY UCTURESTRAY OFAY (ORDSWAY)) ITHWAY)
+ (AAY (ECULIARPAY) APESHAY))
+</PRE>
+
+<P>Compare <CODE>deep-pigl</CODE> with an <CODE>every</CODE>-pattern list recursion
+such as <CODE>praise</CODE> on page <A HREF="lists.html#praise">there</A>.  Both look like
+
+<P><PRE>(cons (<EM>something</EM> (car argument)) (<EM>something</EM> (cdr argument)))
+</PRE>
+
+<P>And yet these procedures are profoundly different.  <CODE>Praise</CODE>
+is a simple left-to-right walk through the elements of a sequence;
+<CODE>deep-pigl</CODE> dives in and out of sublists.  The difference is a result
+of the fact that <CODE>praise</CODE> does one recursive call, for the <CODE>cdr</CODE>,
+while <CODE>deep-pigl</CODE> does two, for the <CODE>car</CODE> as well as the <CODE>cdr</CODE>.
+The pattern exhibited by <CODE>deep-pigl</CODE> is called <CODE>car</CODE>-<CODE>cdr</CODE>
+recursion.  (Another name for it is &quot;tree recursion,&quot; for a reason we'll
+see in the next chapter.)
+
+<P><H2>Pitfalls</H2>
+
+<P>Just as we mentioned about the names <CODE>word</CODE> and <CODE>sentence</CODE>,
+resist the temptation to use <CODE>list</CODE> as a formal parameter.  We use
+<CODE>lst</CODE> instead, but other alternatives are capital <CODE>L</CODE> or <CODE>seq</CODE>
+(for &quot;sequence&quot;).
+
+<P>The list constructor <CODE>cons</CODE> does not treat its two arguments
+equivalently.  The second one must be the list you're trying to extend.
+There is no equally easy way to extend a list on the right (although you can
+put the new element into a one-element list and use <CODE>append</CODE>).  If you
+get the arguments backward, you're likely to get funny-looking results that
+aren't lists, such as
+
+<P><PRE>((3 . 2) . 1)
+</PRE>
+
+<P>The result you get when you <CODE>cons</CODE> onto something that isn't a
+list is called a <EM>pair.</EM>  It's sometimes called a &quot;dotted pair&quot;
+because of what it looks like when printed:
+
+<P><PRE>&gt; (cons 'a 'b)
+(A . B)
+</PRE>
+
+<P>It's just the printed representation that's dotted, however; the
+dot isn't part of the pair any more than the parentheses around a list are
+elements of the list.  Lists are made of pairs; that's why <CODE>cons</CODE> can
+construct lists.  But we're not going to talk about any pairs that <EM>aren't</EM> part of lists, so you don't have to think about them at all,
+except to know that if dots appear in your results you're <CODE>cons</CODE>ing
+backward.
+
+<P>Don't get confused between lists and sentences.  Sentences have no
+internal structure; the good aspect of this is that it's hard to make
+mistakes about building the structure, but the bad aspect is that you might
+need such a structure.  You can have lists whose elements are sentences, but
+it's confusing if you think of the same structure sometimes as a list and
+sometimes as a sentence.
+
+<P>In reading someone else's program, it's easy not to notice that a
+procedure is making two recursive calls instead of just one.  If you notice
+only the recursive call for the <CODE>cdr</CODE>, you might think you're looking at
+a sequential recursion.
+
+<P>If you're writing a procedure whose argument is a list-of-lists, it may
+feel funny to let it also accept a word as the argument value.  People
+therefore sometimes insist on a list as the argument, leading to an overly
+complicated base case.  If your base case test says
+
+<P><PRE>(word? (car structure))
+</PRE>
+
+<P>then think about whether you'd have a better-organized program
+if the base case were
+
+<P><PRE>(word? structure)
+</PRE>
+
+<P>Remember that in a deep-structure recursion you may need two base
+cases, one for reaching an element that isn't a sublist, and the other for
+an empty list, with no elements at all.  (Our <CODE>deep-appearances</CODE>
+procedure is an example.)  Don't forget the empty-list case.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>17.1</B>&nbsp;&nbsp;What will Scheme print in response to each of the following expressions?
+Try to figure it out in your head before you try it on the computer.
+
+<P><PRE>&gt; (car '(Rod Chris Colin Hugh Paul))
+
+&gt; (cadr '(Rod Chris Colin Hugh Paul))
+
+&gt; (cdr '(Rod Chris Colin Hugh Paul))
+
+&gt; (car 'Rod)
+
+&gt; (cons '(Rod Argent) '(Chris White))
+
+&gt; (append '(Rod Argent) '(Chris White))
+
+&gt; (list '(Rod Argent) '(Chris White))
+
+&gt; (caadr '((Rod Argent) (Chris White)
+           (Colin Blunstone) (Hugh Grundy) (Paul Atkinson)))
+
+&gt; (assoc 'Colin '((Rod Argent) (Chris White)
+		  (Colin Blunstone) (Hugh Grundy) (Paul Atkinson)))
+
+&gt; (assoc 'Argent '((Rod Argent) (Chris White)
+		   (Colin Blunstone) (Hugh Grundy) (Paul Atkinson)))
+</PRE>
+
+
+<P><B>17.2</B>&nbsp;&nbsp;For each of the following examples, write a procedure of two arguments
+that, when applied to the sample arguments, returns the sample result.
+Your procedures may not include any quoted data.
+
+<P><PRE>&gt; (f1 '(a b c) '(d e f))
+((B C D))
+
+&gt; (f2 '(a b c) '(d e f))
+((B C) E)
+
+&gt; (f3 '(a b c) '(d e f))
+(A B C A B C)
+
+&gt; (f4 '(a b c) '(d e f))
+((A D) (B C E F))
+</PRE>
+
+<P>
+<B>17.3</B>&nbsp;&nbsp;Describe the value returned by this invocation of <CODE>map</CODE>:
+
+<P><PRE>&gt; (map (lambda (x) (lambda (y) (+ x y))) '(1 2 3 4))
+</PRE>
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>17.4</B>&nbsp;&nbsp;Describe the result of calling the following procedure with a list as its
+argument.  (See if you can figure it out before you try it.)
+
+<P><PRE>(define (<A NAME="g43"></A>mystery lst)
+  (mystery-helper lst '()))
+
+(define (mystery-helper lst other)
+  (if (null? lst)
+      other
+      (mystery-helper (cdr lst) (cons (car lst) other))))
+</PRE>
+
+<P>
+<B>17.5</B>&nbsp;&nbsp;Here's a procedure that takes two numbers as arguments and returns
+whichever number is larger:
+
+<P><PRE>(define (<A NAME="g44"></A>max2 a b)
+  (if (&gt; b a) b a))
+</PRE>
+
+<P>Use <CODE>max2</CODE> to implement <CODE>max</CODE>, a procedure that takes
+one or more numeric arguments and returns the largest of them.
+
+
+<P>
+<B>17.6</B>&nbsp;&nbsp;Implement <CODE>append</CODE> using <CODE>car</CODE>, <CODE>cdr</CODE>, and <CODE>cons</CODE>.
+(Note: The built-in <CODE>append</CODE> can take any number of arguments.
+First write a version that accepts only two arguments.  Then,
+optionally, try to write a version that takes any number.)
+
+
+<P>
+<B>17.7</B>&nbsp;&nbsp;<CODE>Append</CODE> may remind you of <CODE>sentence</CODE>.  They're similar, except that
+<CODE>append</CODE> works only with lists as arguments, whereas <CODE>sentence</CODE> will
+accept words as well as lists.  Implement <CODE><A NAME="g45"></A>sentence</CODE> using <CODE>append</CODE>.  (Note: The built-in <CODE>sentence</CODE> can take any number of
+arguments.  First write a version that accepts only two
+arguments.  Then, optionally, try to write a version that takes any
+number.  Also, you don't have to worry about the error checking that the
+real <CODE>sentence</CODE> does.)
+
+
+<P>
+<B>17.8</B>&nbsp;&nbsp;Write <CODE>member</CODE>.
+
+
+<P>
+<B>17.9</B>&nbsp;&nbsp;Write <CODE>list-ref</CODE>.
+
+
+<P>
+<B>17.10</B>&nbsp;&nbsp;Write <CODE>length</CODE>.
+
+
+<P>
+<B>17.11</B>&nbsp;&nbsp;Write <CODE><A NAME="g46"></A>before-in-list?</CODE>, which takes a list and two elements of
+the list.  It should return <CODE>#t</CODE> if the second argument appears in the
+list argument before the third argument:
+
+<P><PRE>&gt; (before-in-list? '(back in the ussr) 'in 'ussr)
+#T
+
+&gt; (before-in-list? '(back in the ussr) 'the 'back)
+#F
+</PRE>
+
+<P>The procedure should also return <CODE>#f</CODE> if either of the supposed elements
+doesn't appear at all.
+
+
+<P>
+
+<B>17.12</B>&nbsp;&nbsp;Write a procedure called <CODE><A NAME="g47"></A>flatten</CODE> that takes as its argument a
+list, possibly including sublists, but whose ultimate building blocks are
+words (not Booleans or procedures).  It should return a sentence containing
+all the words of the list, in the order in which they appear in the original:
+
+<P><PRE>&gt; (flatten '(((a b) c (d e)) (f g) ((((h))) (i j) k)))
+(A B C D E F G H I J K)
+</PRE>
+
+<P>
+<B>17.13</B>&nbsp;&nbsp;Here is a procedure that counts the number of words anywhere within a
+structured list:
+
+<P><PRE>(define (deep-count lst)
+  (cond ((null? lst) 0)
+	((word? (car lst)) (+ 1 (deep-count (cdr lst))))
+	(else (+ (deep-count (car lst))
+		 (deep-count (cdr lst))))))
+</PRE>
+
+<P>Although this procedure works, it's more complicated than
+necessary.  Simplify it.
+
+
+<P>
+<B>17.14</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g48"></A>branch</CODE> that takes as arguments a list of
+numbers and a nested list structure.  It should be the list-of-lists equivalent
+of <CODE>item</CODE>, like this:
+
+<P><PRE>&gt; (branch '(3) '((a b) (c d) (e f) (g h)))
+(E F)
+
+&gt; (branch '(3 2) '((a b) (c d) (e f) (g h)))
+F
+
+&gt; (branch '(2 3 1 2) '((a b) ((c d) (e f) ((g h) (i j)) k) (l m)))
+H
+</PRE>
+
+<P>In the last example above, the second element of the list is
+
+<P><PRE>((C D) (E F) ((G H) (I J)) K)
+</PRE>
+
+<P>The third element of that smaller
+list is <CODE>((G H) (I J))</CODE>; the first element of that is <CODE>(G H)</CODE>; and
+the second element of <EM>that</EM> is just <CODE>H</CODE>.
+
+<P>
+
+<P>
+<B>17.15</B>&nbsp;&nbsp;Modify the pattern matcher to represent the <CODE>known-values</CODE> database as a
+list of two-element lists, as we suggested at the beginning of this chapter.
+
+
+<P>
+<B>17.16</B>&nbsp;&nbsp;Write a predicate <CODE><A NAME="g49"></A>valid-infix?</CODE> that takes a list as argument
+and returns <CODE>#t</CODE> if and only if the list is a legitimate infix
+arithmetic expression (alternating operands and operators, with
+parentheses&mdash;that is, sublists&mdash;allowed for grouping).
+
+<P><PRE>&gt; (valid-infix? '(4 + 3 * (5 - 2)))
+#T
+
+&gt; (valid-infix? '(4 + 3 * (5 2)))
+#F
+</PRE>
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="lists.html#text1">[1]</A> Don't even try to figure out a sensible reason for
+this name.  It's a leftover bit of history from the first computer on which
+Lisp was implemented.  It stands for &quot;contents of address register&quot; (at
+least that's what all the books say, although it's really the address <EM>portion</EM> of the accumulator register).  <CODE>Cdr</CODE>, coming up in the next
+sentence, stands for &quot;contents of decrement register.&quot; The names seem
+silly in the Lisp context, but that's because the Lisp people used these
+register components in ways the computer designers didn't intend.  Anyway,
+this is all very interesting to history buffs but irrelevant to our
+purposes.  We're just showing off that one of us is actually old enough to
+remember these antique computers first-hand.<P>
+<A NAME="ft2" HREF="lists.html#text2">[2]</A> This is
+not the whole story.  See the &quot;pitfalls&quot; section for a slightly expanded
+version.<P>
+<A NAME="ft3" HREF="lists.html#text3">[3]</A> As we said in Chapter 5, &quot;symbol&quot; is the official name
+for words that are neither strings nor numbers.<P>
+<A NAME="ft4" HREF="lists.html#text4">[4]</A> We implemented
+words by combining three data types that are primitive in Scheme: strings,
+symbols, and numbers.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch18/trees.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch17/part5.html b/js/games/nluqo.github.io/~bh/ssch17/part5.html
new file mode 100644
index 0000000..de18e46
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch17/part5.html
@@ -0,0 +1,92 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science, Part 17: Abstraction</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Part V</H2>
+<H1>Abstraction</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch17.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch16/match.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="lists.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR><BIG>
+
+<P>We've really been talking about abstraction all along.  Whenever you find
+yourself performing several similar computations, such as
+
+<P><PRE>&gt; (sentence 'she (word 'run 's))
+(SHE RUNS)
+
+&gt; (sentence 'she (word 'walk 's))
+(SHE WALKS)
+
+&gt; (sentence 'she (word 'program 's))
+(SHE PROGRAMS)
+</PRE>
+
+<P>and you capture the similarity in a procedure
+
+<P><PRE>(define (third-person verb)
+  (sentence 'she (word verb 's)))
+</PRE>
+
+<P>you're <EM>abstracting</EM> the pattern of the computation by
+expressing it in a form that leaves out the particular verb in any one
+instance.
+
+<P>In the preface we said that our approach to computer science is to teach you
+to think in larger chunks, so that you can fit larger problems in your mind
+at once; &quot;abstraction&quot; is the technical name for that chunking process.
+
+<P>In this part of the book we take a closer look at two specific kinds of
+abstraction.  One is <EM>data abstraction,</EM> which means the invention of
+new data types.  The other is the implementation of <EM>higher-order
+functions,</EM> an important category of the same process abstraction of which
+<CODE>third-person</CODE> is a trivial example.
+
+<P>Until now we've used words and sentences as though they were part of the
+natural order of things.  Now we'll discover that Scheme sentences exist
+only in our minds and take shape through the use of constructors and
+selectors (<CODE>sentence</CODE>, <CODE>first</CODE>, and so on) that we wrote.  The
+implementation of sentences is based on a more fundamental data type called
+<EM>lists.</EM> Then we'll see how lists can be used to invent another
+in-our-minds data type, <EM>trees.</EM>  (The technical term for an invented
+data type is an <EM>abstract</EM> data type.)
+
+<P>You already know how higher-order functions can express many computational
+processes in a very compact form.  Now we focus our attention on the
+higher-order <EM>procedures</EM> that implement those functions, exploring
+the mechanics by which we create these process abstractions.
+
+<P>
+</BIG>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch16/match.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="lists.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch18/trees b/js/games/nluqo.github.io/~bh/ssch18/trees
new file mode 100644
index 0000000..a1b0aac
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch18/trees
@@ -0,0 +1,952 @@
+\input bkmacs
+\photo{{\it Apple Tree in Blossom,\/} Piet Mondrian
+(1912)}{\pagetag{\mondrian}\pspicture{4in}{mondrian}{mondrian}{\TrimBoundingBox{5pt}}}
+\chapter{Trees}
+\chaptag{\trees}
+
+The big advantage of full-featured lists over sentences is their ability to
+represent {\it structure\/} in our data by means of sublists.
+In this chapter we'll look at examples in which we use lists and sublists to
+represent two-dimensional information structures.  The kinds of structures
+we'll consider are called {\it \idx{tree}s\/} because they resemble trees in
+nature:
+
+\htstart
+<P><CENTER><IMG SRC="../ss-pics/firsttree.jpg" ALT="figure: firsttree">
+&nbsp;&nbsp;&nbsp;&nbsp;<IMG SRC="../ss-pics/tree.jpg" ALT="photo: tree">
+</CENTER>
+\htend
+
+
+% \pspicture{2in}{Computer Science Tree
+% and Real Tree}{firsttree}{\rlap{\hskip
+% 2truein\pspicture{1.5in}{tree}{tree}{}}\hSlide{-1.5truein}}
+
+\noindent The components of a tree are called {\it \idx{node}s.\/} At the
+top is the {\it \bkidx{root}{node}\/} of the tree; in the interior of the
+diagram there are {\it \bkidx{branch}{node}s;\/} at the bottom are the {\it
+\bkidx{leaf}{node}s,\/} from which no further branches extend.
+
+We're going to begin by considering a tree as an abstract data type, without
+thinking about how lists are used to represent trees.  For example, we'll
+construct trees using a procedure named {\tt make-node}, as if that were a
+Scheme primitive.  About halfway through the chapter, we'll explore the
+relationship between trees and lists.
+
+\goodbreak
+\subhd{Example:\ The World}
+
+Here is a tree that represents the world:
+
+\pspicture{3in}{The World Tree}{world}{\TrimBoundingBox{10pt}}
+
+Each node in the tree represents some region of the world.  Consider the
+node labeled ``Great Britain.''  There are two parts to this node:  The
+obvious part is the label itself, the name ``Great Britain.''  But
+the regions of the world that are included within Great Britain---that is,
+the nodes that are attached beneath Great Britain in the figure---are also part
+of this node.
+
+We say that every node has a {\it \idx{datum}\/} and zero or more {\it
+\idx{children}.\/}  For the moment, let's just say that the datum can be
+either a word or a sentence.  The children, if any, are themselves trees.
+Notice that this definition is recursive---a tree is made up of trees.
+(What's the base case?)
+
+This family metaphor is also part of the terminology of
+trees.\footnt{Contrariwise, the tree metaphor is also part of the
+terminology of families.} We say that a node is the {\it \idx{parent}\/} of
+another node, or that two nodes are {\it \idx{sibling}s.\/}  In more advanced
+treatments, you even hear things like ``grandparent'' and ``cousin,'' but we
+won't get into that.
+
+What happens when you prune an actual tree by cutting off a branch?
+The cut-off part is essentially a tree in itself, with a smaller trunk
+and fewer branches.  The metaphor isn't perfect because the cut-off part
+doesn't have roots, but still, we can stick the end in the ground and
+hope that the cut-off end will take root as a new tree.
+
+It's the same with a country in our example; each country is a branch node of
+the entire world tree, but also a tree in itself.  Depending on how you
+think about it, Great Britain can be either a component of the entire world
+or a collection of smaller locations.  So the branch node that represents
+Great Britain is the root node of a {\it \idx{subtree}\/} of the entire tree.
+
+\pspicture{2in}{The Great Britain Subtree}{britain}{\TrimTop{0.35truein}}
+
+What is a node?  It might seem natural to think of a node as being just the
+information in one of the circles in the diagram---that is, to think of a
+node as including only its datum.  In that way of thinking, each node would
+be separate from every other node, just as the words in a sentence are all
+separate elements.  However, it will be more useful to think of a node as a
+structure that includes everything below that circle also:\ the datum and the
+children.  So when we think of the node for Great Britain, we're thinking
+not only of the name ``Great Britain,'' but also of everything {\it
+in\/} Great Britain.  From this perspective, the root node of a tree
+includes the entire tree.  We might as well say that the node {\it is\/} the
+tree.
+
+The \idx{constructor} for a tree is actually the constructor for one node,
+its root node.  Our constructor for trees is therefore called
+{\tt \ttidx{make-node}}.  It takes two arguments:\ the datum and a (possibly
+empty) list of children.  As the following example shows, constructing what
+we think of as one tree requires the construction of many such nodes.
+
+{\prgex%
+(define world-tree                           ;; painful-to-type version
+  (make-node
+   'world
+   (list (make-node
+          'italy
+          (list (make-node 'venezia '())
+                (make-node 'riomaggiore '())
+                (make-node 'firenze '())
+                (make-node 'roma '())))
+         (make-node
+          '(united states)
+          (list (make-node 'california
+                           (list (make-node 'berkeley '())
+                                 (make-node '(san francisco) '())
+                                 (make-node 'gilroy '())))
+                (make-node 'massachusetts
+                           (list (make-node 'cambridge '())
+                                 (make-node 'amherst '())
+                                 (make-node 'sudbury '())))))))) 
+}
+
+\noindent You'll notice that we haven't defined all of the places shown
+in the figure.  That's because we got tired of doing all this typing;
+we're going to invent some abbreviations later.  For now, we'll take time
+out to show you the \idx{selector}s for trees.
+\justtt{datum}
+\justtt{children}
+
+{\prgex%
+> (datum world-tree)
+WORLD
+
+> (datum (car (children world-tree)))
+ITALY
+
+> (datum (car (children (cadr (children world-tree)))))
+CALIFORNIA
+
+> (datum (car (children (car (children
+			      (cadr (children world-tree)))))))
+BERKELEY
+}
+
+\noindent {\tt Datum} of a tree node returns the datum of that node.
+{\tt Children} of a node returns a list of the children of the node.
+(A list of trees is called a {\it \idx{forest}.\/})
+
+Here are some abbreviations to help us construct the world tree with less
+typing.  Unlike {\tt make-node}, {\tt datum}, and {\tt children}, which are
+intended to work on trees in general, these abbreviations were designed
+with the world tree specifically in mind:
+
+{\prgex%
+(define (\ufun{leaf} datum)
+  (make-node datum '()))
+
+(define (\ufun{cities} name-list)
+  (map leaf name-list))
+}
+
+\noindent With these abbreviations the world tree is somewhat easier to
+define:
+
+{\prgex%
+(define world-tree
+  (make-node
+   'world
+   (list (make-node
+          'italy
+          (cities '(venezia riomaggiore firenze roma)))
+         (make-node
+          '(united states)
+          (list (make-node
+                 'california
+                 (cities '(berkeley (san francisco) gilroy)))
+                (make-node
+                 'massachusetts
+                 (cities '(cambridge amherst sudbury)))
+                (make-node 'ohio (cities '(kent)))))
+         (make-node 'zimbabwe (cities '(harare hwange)))
+         (make-node 'china
+		    (cities '(beijing shanghai guangzhou suzhou)))
+         (make-node
+          '(great britain)
+          (list 
+           (make-node 'england (cities '(liverpool)))
+           (make-node 'scotland
+		      (cities '(edinburgh glasgow (gretna green))))
+           (make-node 'wales (cities '(abergavenny)))))
+         (make-node
+          'australia
+          (list
+           (make-node 'victoria (cities '(melbourne)))
+           (make-node '(new south wales) (cities '(sydney)))
+           (make-node 'queensland
+		      (cities '(cairns (port douglas))))))
+         (make-node 'honduras (cities '(tegucigalpa))))))
+}
+
+
+\subhd{How Big Is My Tree?}
+
+Now that we have the tree, how many cities are there in our world?
+
+{\prgex%
+(define (\ufun{count-leaves} tree)
+  (if (leaf? tree)
+      1
+      (reduce + (map count-leaves (children tree)))))
+
+(define (\ufun{leaf?} node)
+  (null? (children node)))
+
+> (count-leaves world-tree)
+27
+}
+
+At first glance, this may seem like a simple case of recursion, with
+{\tt count-leaves} calling {\tt count-leaves}.  But since what looks like a
+single recursive call is really a call to {\tt map}, it is equivalent to
+{\it several\/} recursive calls, one for each child of the given tree node.
+
+\backskipsubhd{Mutual Recursion}{4}
+{\advance\medskipamount by -2pt
+
+In Chapter \recpatt\ we wrote recursive
+procedures that were equivalent to using higher-order functions.  Let's do
+the same for {\tt count-leaves}.
+
+{\prgex%
+(define (\ufun{count-leaves} tree)
+  (if (leaf? tree)
+      1
+      (count-leaves-in-forest (children tree))))
+
+(define (\ufun{count-leaves-in-forest} forest)
+  (if (null? forest)
+      0
+      (+ (count-leaves (car forest))
+         (count-leaves-in-forest (cdr forest)))))
+}
+
+%%%%% kludge coming up %%%%%
+\hyphenchar\tentt=\count123
+\noindent Note that {\tt count-leaves} calls {\tt count-leaves-in-forest},
+and {\tt count-leaves-}\penalty-200{\tt in-}\penalty-200{\tt forest} calls
+{\tt count-leaves}.  This pattern is called {\it \bkidx{mutual}{recursion}.}
+
+\hyphenchar\tentt=-1
+Mutual recursion is often a useful technique for dealing with trees.  In the
+typical recursion we've seen before this chapter, we've moved sequentially
+through a list or sentence, with each recursive call taking us one step to
+the right.  In the following paragraphs we present three different models to
+help you think about how the shape of a tree gives rise to a mutual recursion.
+
+In the first model, we're going to think of {\tt count-leaves} as an
+initialization procedure, and {\tt count-leaves-in-forest} as its helper
+procedure.  Suppose we want to count the leaves of a tree.  Unless the
+argument is a very shallow\footnt{You probably think of trees as being short
+or tall.  But since our trees are upside-down, the convention is to call
+them shallow or deep.} tree, this will involve counting the leaves of all
+of the children of that tree.  What we want is a straightforward sequential
+recursion over the list of children.  But we're given the wrong argument:\
+the tree itself, not its list of children.  So we need an initialization
+procedure, {\tt count-leaves}, whose job is to extract the list of children
+and invoke a helper procedure, {\tt count-leaves-in-forest}, with that list
+as argument.
+
+The helper procedure follows the usual sequential list pattern:  Do
+something to the {\tt car} of the list, and recursively handle the {\tt cdr}
+of the list.  Now, what do we have to do to the {\tt car}?  In the usual
+sequential recursion, the {\tt car} of the list is something simple, such as
+a word.  What's special about trees is that here the {\tt car} is itself a
+tree, just like the entire data structure we started with.  Therefore, we
+must invoke a procedure whose domain is trees:\ {\tt count-leaves}.
+
+This model is built on two ideas.  One is the idea of the domain of a
+function; the reason we need two procedures is that we need one that takes a
+tree as its argument and one that takes a list of trees as its argument.
+The other idea is the leap of faith; we assume that the invocation of {\tt
+count-leaves} within {\tt count-leaves-in-forest} will correctly handle each
+child without tracing the exact sequence of events.
+
+The second model is easier to state but less rigorous.  Because of the
+two-dimensional nature of trees, in order to visit every node we have to be
+able to move in two different directions.  From a given node we have to be
+able to move {\it down\/} to its children, but from each child we must be
+able to move {\it across\/} to its next sibling.
+
+The job of {\tt count-leaves-in-forest} is to move from left to right
+through a list of children.  (It does this using the more familiar kind of
+recursion, in which it invokes itself directly.)  The downward motion
+happens in {\tt count-leaves}, which moves down one level by invoking {\tt
+children}.  How does the program move down more than one level?  At each
+level, {\tt count-leaves} is invoked recursively from {\tt
+count-leaves-in-forest}.
+
+The third model is also based on the two-dimensional nature of trees.
+Imagine for a moment that each node in the tree has at most one child.
+In that case, {\tt count-leaves} could move from the root down to the single
+leaf with a structure very similar to the actual procedure, but carrying out
+a sequential recursion:
+
+{\prgex%
+(define (count-leaf tree)
+  (if (leaf? tree)
+      1
+      (count-leaf (child tree))))
+}
+
+\noindent The trouble with this, of course, is that at each downward
+step there isn't a single ``next'' node.  Instead of a single path from the
+root to the leaf, there are multiple paths from the root to many leaves.
+To make our idea of downward motion through sequential recursion work in a
+real tree, at each level we must ``clone'' {\tt count-leaves} as many times
+as there are children.  {\tt Count-leaves-in-forest} is the factory that
+manufactures the clones.  It hires one {\tt count-leaves} little person for
+each child and accumulates their results.
+
+The key point in recursion on trees is that each child of a tree is itself a
+perfectly good tree.  This recursiveness in the nature of trees gives rise
+to a very recursive structure for programs that use trees.  The reason we
+say ``very'' recursive is that each invocation of {\tt count-leaves} causes
+not just one but several recursive invocations, one for each child, by way
+of {\tt count-leaves-in-forest}.
+
+In fact, we use the name {\it \bkidx{tree}{recursion}\/} for any situation
+in which a procedure invocation results in more than one recursive call,
+even if there isn't an argument that's a tree.  The computation of Fibonacci
+numbers from Chapter \convince\ is an example of a tree recursion with no
+tree.  The {\tt car}-{\tt cdr} recursions in Chapter~\lists\ are also
+tree recursions; any structured list-of-lists has a somewhat tree-like,
+two-dimensional character even though it doesn't use the formal mechanisms
+we're exploring in this chapter.
+The {\tt cdr} recursion is a ``horizontal'' one, moving from one element
+to another within the same list; the {\tt car} recursion is a ``vertical''
+one, exploring a sublist of the given list.
+
+
+\backskipsubhd{Searching for a Datum in the Tree}{5}
+
+Procedures that explore trees aren't always as simple as {\tt count-leaves}.
+We started with that example because we could write it using higher-order
+functions, so that you'd understand the structure of the problem before we
+had to take on the complexity of mutual recursion.  But many tree problems
+don't quite fit our higher-order functions.
+
+For example, let's write a predicate {\tt in-tree?}\ that takes the name of
+a place and a tree as arguments and tells whether or not that place is in the
+tree.  It {\it is\/} possible to make it work with {\tt filter}:
+
+{\prgex%
+(define (\ufun{in-tree?} place tree)
+  (or (equal? place (datum tree))
+      (not (null? (filter (lambda (subtree) (in-tree? place subtree))
+			  (children tree))))))
+}
+
+\noindent This awkward construction, however, also performs
+unnecessary computation.  If the place we're looking for happens to be in the
+first child of a node, {\tt filter} will nevertheless look in all the other
+children as well.  We can do better by replacing the use of {\tt filter}
+with a mutual recursion:
+
+{\prgex%
+(define (\ufun{in-tree?} place tree)
+  (or (equal? place (datum tree))
+      (in-forest? place (children tree))))
+
+(define (\ufun{in-forest?} place forest)
+  (if (null? forest)
+      #f
+      (or (in-tree? place (car forest))
+	  (in-forest? place (cdr forest)))))
+
+> (in-tree? 'abergavenny world-tree)
+\#T
+
+> (in-tree? 'abbenay world-tree)
+\#F
+
+> (in-tree? 'venezia (cadr (children world-tree)))
+\#F
+}
+
+Although any mutual recursion is a little tricky to read, the structure
+of this program does fit the way we'd describe the algorithm in
+English.  A place is in a tree if one of two conditions holds:\ the place is
+the datum at the root of the tree, or the place is (recursively) in one of
+the child trees of this tree.  That's what {\tt in-tree?}\ says.  As for
+{\tt in-forest?}, it says that a place is in one of a group of trees if
+the place is in the first tree, or if it's in one of the remaining trees.
+
+\subhd{Locating a Datum in the Tree}
+
+Our next project is similar to the previous one, but a little more
+intricate.  We'd like to be able to locate a city and find out all of
+the larger regions that enclose the city.  For example, we want to say
+
+{\prgex%
+> (locate 'berkeley world-tree)
+(WORLD (UNITED STATES) CALIFORNIA BERKELEY)
+}
+
+\noindent Instead of just getting a yes-or-no answer about whether a city is
+in the tree, we now want to find out {\it where\/} it is.
+
+The algorithm is recursive:  To look for Berkeley within the world, we need
+to be able to look for Berkeley within any subtree.  The {\tt world} node
+has several children (countries).  {\tt Locate} recursively asks each of
+those children to find a path to Berkeley.  All but one of the children
+return {\tt #f}, because they can't find Berkeley within their territory.
+But the {\tt (united~states)} node returns
+
+{\prgex%
+((UNITED STATES) CALIFORNIA BERKELEY)
+}
+
+\noindent To make a complete path, we just prepend the name of the current
+node, {\tt world}, to this path.  What happens when {\tt locate} tries to
+look for Berkeley in Australia?  Since all of Australia's children return
+{\tt #f}, there is no path to Berkeley from Australia, so {\tt locate}
+returns {\tt #f}.
+
+{\prgex%
+(define (\ufun{locate} city tree)
+  (if (equal? city (datum tree))
+      (list city)
+      (let ((subpath (locate-in-forest city (children tree))))
+        (if subpath
+            (cons (datum tree) subpath)
+            \#f))))
+
+(define (\ufun{locate-in-forest} city forest)
+  (if (null? forest)
+      #f
+      (or (locate city (car forest))
+	  (locate-in-forest city (cdr forest)))))
+}
+
+Compare the structure of {\tt locate} with that of {\tt in-tree?}.  The
+helper procedures {\tt in-forest?}\ and {\tt locate-in-forest} are almost
+identical.  The main procedures look different, because {\tt locate} has a
+harder job, but both of them check for two possibilities:  The city might be
+the datum of the argument node, or it might belong to one of the child trees.
+
+\subhd{Representing Trees as Lists}
+
+We've done a lot with trees, but we haven't yet talked about the way Scheme
+stores trees internally.  How do {\tt make-node}, {\tt datum}, and {\tt
+children} work?  It turns out to be very convenient to represent trees in
+terms of lists.
+
+{\prgex%
+(define (\ufun{make-node} datum children)
+  (cons datum children))
+
+(define (\ufun{datum} node)
+  (car node))
+
+(define (\ufun{children} node)
+  (cdr node))
+}
+
+\noindent In other words, a tree is a list whose first element is the datum
+and whose remaining elements are subtrees.
+
+\kludgect
+
+{\prgex%
+> world-tree
+(WORLD
+   (ITALY (VENEZIA) (RIOMAGGIORE) (FIRENZE) (ROMA))
+   ((UNITED STATES)
+    (CALIFORNIA (BERKELEY) ((SAN FRANCISCO)) (GILROY))
+    (MASSACHUSETTS (CAMBRIDGE) (AMHERST) (SUDBURY))
+    (OHIO (KENT)))
+   (ZIMBABWE (HARARE) (HWANGE))
+   (CHINA (BEIJING) (SHANGHAI) (GUANGSZHOU) (SUZHOW))
+   ((GREAT BRITAIN)
+    (ENGLAND (LIVERPOOL))
+    (SCOTLAND (EDINBURGH) (GLASGOW) ((GRETNA GREEN)))
+    (WALES (ABERGAVENNY)))
+   (AUSTRALIA
+    (VICTORIA (MELBOURNE))
+    ((NEW SOUTH WALES) (SYDNEY))
+    (QUEENSLAND (CAIRNS) ((PORT DOUGLAS))))
+   (HONDURAS (TEGUCIGALPA)))
+}
+
+{\prgex%
+> (car (children world-tree))
+(ITALY (VENEZIA) (RIOMAGGIORE) (FIRENZE) (ROMA))
+}
+
+Ordinarily, however, we're not going to print out trees in their entirety.
+As in the {\tt locate} example, we'll extract just some subset of the
+information and put it in a more readable form.
+
+\subhd{Abstract Data Types}
+
+The procedures {\tt make-node}, {\tt datum}, and {\tt children} define an
+\bkidx{abstract}{data type} for trees.  Using this ADT,
+\justidx{type, abstract}
+\justidx{ADT}
+we were able to write several useful procedures to manipulate trees before
+pinning down exactly how a tree is represented as a Scheme list.
+
+Although it would be possible to refer to the parts of a node by using {\tt
+car} and {\tt cdr} directly, your programs will be more readable if you use
+the ADT-specific selectors and constructors.  Consider this example:
+
+{\prgex%
+(in-tree? 'venezia (caddr world-tree))
+}
+
+\noindent What does {\tt caddr} mean in this context?  Is the {\tt caddr} of
+a tree a datum?  A child?  A forest?  Of course you could work it out by
+careful reasoning, but the form in which we presented this example
+originally was much clearer:
+
+{\prgex%
+(in-tree? 'venezia (cadr (children world-tree)))
+}
+
+\noindent Even better would be
+
+{\prgex%
+(in-tree? 'venezia (list-ref (children world-tree) 1))
+}
+
+Using the appropriate selectors and constructors is called {\it
+respecting\/} the data abstraction.  Failing to use the appropriate
+selectors and constructors is called a {\it \idx{data abstraction
+violation}.\/}
+
+Since we wrote the selectors and constructor for trees ourselves, we
+could have defined them to use some different representation:
+
+{\prgex%
+(define (make-node datum children)
+  (list 'the 'node 'with 'datum datum 'and 'children children))
+
+(define (datum node) (list-ref node 4))
+
+(define (children node) (list-ref node 7))
+}
+
+{\prgex%
+> (make-node 'italy (cities '(venezia riomaggiore firenze roma)))
+(THE NODE WITH DATUM ITALY AND CHILDREN
+     ((THE NODE WITH DATUM VENEZIA AND CHILDREN ())
+      (THE NODE WITH DATUM RIOMAGGIORE AND CHILDREN ())
+      (THE NODE WITH DATUM FIRENZE AND CHILDREN ())
+      (THE NODE WITH DATUM ROMA AND CHILDREN ())))
+}
+
+\noindent You might expect that this change in the representation would
+require changes to all the procedures we wrote earlier, such as {\tt
+count-leaves}.  But in fact, those procedures would continue to work
+perfectly because they don't see the representation.  (They respect the data
+abstraction.)  As long as {\tt datum} and {\tt children} find the right
+information, it doesn't matter how the trees are stored.  All that matters
+is that the constructors and selectors have to be compatible with each other.
+
+On the other hand, the example in this section in which we violated the data
+abstraction by using {\tt caddr} to find the second child of {\tt
+world-tree} would fail if we changed the representation.  Many cases like
+this one, in which formerly working programs failed after a change in
+representation, led programmers to use such moralistic terms as
+``respecting'' and ``violating'' data abstractions.\footnt{Another example
+of a data abstraction violation is in Chapter \match.  When {\tt match} creates
+an empty known-values database, we didn't use a constructor.  Instead, we
+merely used a quoted empty sentence:
+
+{\prgex%
+(define (match pattern sent)
+  (match-using-known-values pattern sent '()))
+}}
+
+} % medskipamount
+
+\subhd{An Advanced Example: Parsing Arithmetic Expressions}
+
+Consider the notation for arithmetic expressions.  Scheme uses {\it
+\justidx{prefix notation}
+\justidx{infix notation}
+prefix\/} notation:\ {\tt (+~3~4)}.  By contrast, people who aren't Scheme
+programmers generally represent arithmetic computations using an {\it
+infix\/} notation, in which the function symbol goes between two
+arguments:\ $3+4$.
+
+Our goal in this section is to translate an infix arithmetic expression into
+a tree representing the computation.  This translation process is called
+{\it parsing\/} the expression.  For example, we'll turn the expression
+
+\htstart
+<P><CENTER>4+3&times;7-5/(3+4)+6</CENTER><P>
+\htend
+% $$4+3 \times 7-5/(3+4)+6$$
+
+\noindent into the tree
+
+\pspicture{1.5in}{Arithmetic expression tree}{parse0}{}
+
+The point of using a tree is that it's going to be very easy to perform the
+computation once we have it in tree form.  In the original infix form, it's
+hard to know what to do first, because there are {\it precedence\/} rules
+that determine an implicit grouping:  Multiplication and division come
+before addition and subtraction; operations with the same precedence are
+done from left to right.  Our sample expression is equivalent to
+
+\htstart
+<P><CENTER>(((4 + (3 &times; 7)) - (5 / (3+4))) + 6)</CENTER><P>
+\htend
+% $$(((4 + (3 \times 7)) - (5 / (3+4))) + 6)$$
+
+\noindent In the tree representation, it's easy to see that the operations
+nearer the leaves are done first; the root node is the last operation,
+because it depends on the results of lower-level operations.
+
+Our program will take as its argument an infix arithmetic expression in the
+form of a list:
+
+{\prgex%
+> (parse '(4 + 3 * 7 - 5 / (3 + 4) + 6))
+}
+
+\noindent Each element of the list must be one of three things:\ a number;
+one of the four symbols {\tt +}, {\tt -}, {\tt *}, or {\tt /}; or a sublist
+(such as the three-element list {\tt (3~+~4)} in this example) satisfying
+the same rule.  (You can imagine that we're implementing a pocket
+calculator.  If we were implementing a computer programming language, then
+we'd also accept variable names as operands.  But we're not bothering with
+that complication because it doesn't really affect the part of the problem
+about turning the expression into a tree.)
+
+What makes this problem tricky is that we can't put the list elements into
+the tree as soon as we see them.  For example, the first three elements of
+our sample list are {\tt 4}, {\tt +}, and {\tt 3}.  It's tempting to build a
+subtree of those three elements:
+
+\pspicture{1in}{Tree for {\tt 4+3}}{fourplus}{}
+
+\noindent But if you compare this picture with the earlier picture of the
+correct tree, you'll see that the second argument to this {\tt +} invocation
+isn't the number {\tt 3}, but rather the subexpression {\tt 3~*~7}.
+
+By this reasoning you might think that we have to examine the entire
+expression before we can start building the tree.  But in fact we can
+sometimes build a subtree with confidence.  For example, when we see the
+minus sign in our sample expression, we can tell that the subexpression
+{\tt 3~*~7} that comes before it is complete, because {\tt *} has higher
+precedence than {\tt -} does.
+
+Here's the plan.  The program will examine its argument from left to right.
+Since the program can't finish processing each list element right away, it
+has to maintain information about the elements that have been examined but
+not entirely processed.  It's going to be easier to maintain that
+information in two parts:\ one list for still-pending operations and another
+for still-pending operands.  Here are the first steps in parsing our sample
+expression; the program examines the elements of the argument, putting
+numbers onto the operand list and operation symbols onto the operation
+list:\footnt{Actually, as we'll see shortly, the elements of the operand
+list are trees, so what we put in the operand list is a one-node tree whose
+datum is the number.}
+
+\def\tx{\TrimTop{0.25truein}}
+\pspicture{100pt}{parsing tree to queues}{parse1}{\tx}
+
+At this point, the program is looking at the {\tt *} operator in the infix
+expression.  If this newly seen operator had lower precedence than the {\tt
++} that's already at the head of the list of operations, then it would be
+time to carry out the {\tt +} operation by creating a tree with {\tt +} at
+the root and the first two operands in the list as its children.  Instead,
+since {\tt *} has higher precedence than {\tt +}, the program isn't ready to
+create a subtree but must instead add the {\tt *} to its operation list.
+
+\pspicture{52pt}{parsing tree to queues}{parse2}{\hSlide{-0.1truein}\tx}
+
+This time, the newly seen {\tt -} operation has lower precedence than the
+{\tt *} at the head of the operation list.  Therefore, it's time for the
+program to {\it handle\/} the {\tt *} operator, by making a subtree
+containing that operator and the first two elements of the operand list.
+This new subtree becomes the new first element of the operand list.
+
+\pspicture{52pt}{parsing tree to queues}{parse3}{\tx}
+
+Because the program decided to handle the waiting {\tt *} operator, it still
+hasn't moved the {\tt -} operator from the infix expression to the operator
+list.  Now the program must compare {\tt -} with the {\tt +} at the head of
+the list.  These two operators have the same precedence.  Since we want to
+carry out same-precedence operators from left to right, it's time to handle
+the {\tt +} operator.
+
+\pspicture{65pt}{parsing tree to queues}{parse4}{\hSlide{-0.35truein}\tx}
+
+Finally the program can move the {\tt -} operator onto the operator list.
+The next several steps are similar to ones we've already seen.
+
+{\hfuzz=30pt
+\pspicture{150pt}{parsing tree to queues}{parse5}{\hSlide{-0.25truein}\tx}
+}
+
+This is a new situation: The first unseen element of the infix expression is
+neither a number nor an operator, but a sublist.  We recursively {\tt parse}
+this subexpression, adding the resulting tree to the operand list.
+
+\pspicture{65pt}{parsing tree to queues}{parse6}{\hSlide{0.075truein}\tx\TrimRight{0.5in}\TrimLeft{0.5in}}
+
+Then we proceed as before, processing the {\tt /} because it has higher
+precedence than the {\tt +}, then the {\tt -} because it has the same
+priority as the {\tt +}, and so on.
+
+\pspicture{260pt}{parsing tree to queues}{parse7}{\tx}
+
+Once the program has examined every element of the infix expression, the
+operators remaining on the operator list must be handled.  In this case
+there is only one such operator.  Once the operators have all been handled,
+there should be one element remaining on the operand list; that element is
+the desired tree for the entire original expression.
+
+\pspicture{90pt}{parsing tree to queues}{parse8}{\hSlide{0.1truein}\tx}
+
+The following program implements this algorithm.  It works only for correctly
+formed infix expressions; if given an argument like {\tt (3~+~*)}, it'll give
+an incorrect result or a Scheme error.
+
+{\prgex%
+(define (\ufun{parse} expr)
+  (parse-helper expr '() '()))
+
+(define (parse-helper expr operators operands)
+  (cond ((null? expr)
+	 (if (null? operators)
+	     (car operands)
+	     (handle-op '() operators operands)))
+	((number? (car expr))
+	 (parse-helper (cdr expr)
+		       operators
+		       (cons (make-node (car expr) '()) operands)))
+	((list? (car expr))
+	 (parse-helper (cdr expr)
+		       operators
+		       (cons (parse (car expr)) operands)))
+	(else (if (or (null? operators)
+		      (> (precedence (car expr))
+			 (precedence (car operators))))
+		  (parse-helper (cdr expr)
+				(cons (car expr) operators)
+				operands)
+		  (handle-op expr operators operands)))))
+
+(define (handle-op expr operators operands)
+  (parse-helper expr
+		(cdr operators)
+		(cons (make-node (car operators)
+				 (list (cadr operands) (car operands)))
+		      (cddr operands))))
+
+(define (precedence oper)
+  (if (member? oper '(+ -)) 1 2))
+}
+
+We promised that after building the tree it would be easy to compute the
+value of the expression.  Here is the program to do that:
+
+{\prgex%
+(define (\ufun{compute} tree)
+  (if (number? (datum tree))
+      (datum tree)
+      ((function-named-by (datum tree))
+         (compute (car (children tree)))
+         (compute (cadr (children tree))))))
+
+(define (function-named-by oper)
+  (cond ((equal? oper '+) +)
+	((equal? oper '-) -)
+	((equal? oper '*) *)
+	((equal? oper '/) /)
+	(else (error "no such operator as" oper))))
+
+> (compute (parse '(4 + 3 * 7 - 5 / (3 + 4) + 6)))
+30.285714285714
+}
+
+\subhd{Pitfalls}
+
+\pit A leaf node is a perfectly good actual argument to a tree procedure,
+even though the picture of a leaf node doesn't look treeish because there
+aren't any branches.  A common mistake is to make the base case of the
+recursion be a node whose children are leaves, instead of a node that's a
+leaf itself.
+
+
+\pit The value returned by {\tt children} is not a tree, but a forest.  It's
+therefore not a suitable actual argument to a procedure that expects a tree.
+
+\esubhd{Exercises}
+
+{\exercise
+What does
+
+{\prgex%
+((SAN FRANCISCO))
+}
+
+\noindent mean in the printout of {\tt world-tree}?  Why two sets of
+parentheses?
+}
+
+
+\solution
+In general a tree node is a list whose {\tt car} is the datum and whose {\tt
+cdr} is a list of the children.  In the list {\tt ((SAN~FRANCISCO))}, the
+{\tt car} is {\tt (SAN~FRANCISCO)} and the {\tt cdr} is {\tt ()}.  So this is
+a leaf node, since the list of children is empty.  The inner parentheses
+indicate that the datum is a list; the outer ones group the datum with its
+(empty) children.
+@
+
+{\exercise
+Suppose we change the definition of the tree constructor so that it
+uses {\tt list} instead of {\tt cons}:
+
+{\prgex%
+(define (make-node datum children)
+  (list datum children))
+}
+
+How do we have to change the selectors so that everything still works?
+}
+
+\solution
+The only change necessary is
+
+{\prgex%
+(define children cadr)
+}
+
+\noindent that is, use {\tt cadr} instead of {\tt cdr}.
+@
+
+{\exercise
+Write {\tt \ufun{depth},} a procedure that takes a tree as argument and
+returns the largest number of nodes connected through parent-child links.
+That is, a leaf node has depth 1; a tree in which all the children of the
+root node are leaves has depth 2.  Our world tree has depth 4 (because the
+longest path from the root to a leaf is, for example, world, country, state,
+city).
+}
+
+\solution
+{\prgex%
+(define (depth tree)
+  (if (leaf? tree)
+      1
+      (+ 1 (reduce max (map depth (children tree))))))
+}
+@
+
+{\exercise
+Write {\tt \ufun{count-nodes}}, a procedure that takes a tree as argument
+and returns the total number of nodes in the tree.  (Earlier we counted the
+number of {\it leaf\/} nodes.)
+}
+
+\solution
+{\prgex%
+(define (count-nodes tree)
+  (+ 1 (reduce + (map count-nodes (children tree)))))
+}
+@
+
+{\exercise
+Write {\tt \ufun{prune}}, a procedure that takes a tree as argument and
+returns a copy of the tree, but with all the leaf nodes of the original tree
+removed.  (If the argument to {\tt prune} is a one-node tree, in which the
+root node has no children, then {\tt prune} should return {\tt \#f} because
+the result of removing the root node wouldn't be a tree.)
+}
+
+\solution
+The need to eliminate branches that turn out to have no children
+makes the solution a little inelegant.  Here's Brian's inelegant
+version:
+
+{\prgex%
+(define (prune tree)
+  (if (null? (children tree))
+      #f
+      (make-node (datum tree)
+		 (filter (lambda (x) x)
+			 (map prune (children tree))))))
+}
+
+\noindent and here's Matt's inelegant version:
+
+{\prgex%
+(define (prune any-tree)
+  (if (branch? any-tree)
+      (prune-branch any-tree)
+      #f))
+
+(define (prune-branch branch)
+  (make-node (datum branch)
+             (map prune-branch (filter branch? (children branch)))))
+
+(define (branch? node)
+  (not (null? (children node))))
+}
+@
+
+\vfill\eject
+
+{\exercise
+Write a program {\tt \ufun{parse-scheme}} that parses a Scheme arithmetic
+expression into the same kind of tree that {\tt parse} produces for infix
+expressions.  Assume that all procedure invocations in the Scheme expression
+have two arguments.
+
+The resulting tree should be a valid argument to {\tt compute}:
+
+{\prgex%
+> (compute (parse-scheme '(* (+ 4 3) 2)))
+14
+}
+
+\noindent (You can solve this problem without the restriction to
+two-argument invocations if you rewrite {\tt compute} so that it doesn't
+assume every branch node has two children.)
+}
+
+\solution
+The following procedure takes advantage of the fact that a valid
+Scheme expression may not be empty.  An ill-formed expression that
+includes an empty subexpression will cause this procedure to blow up.
+
+{\prgex%
+(define (parse-scheme expr)
+  (if (word? expr)
+      (make-node expr '())
+      (make-node (car expr) (map parse-scheme (cdr expr)))))
+}
+
+Here's the modification to {\tt compute} suggested in the exercise:
+
+{\prgex%
+(define (compute tree)
+  (if (number? (datum tree))
+      (datum tree)
+      (apply (function-named-by (datum tree))
+	     (map compute (children tree)))))
+}
+@
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch18/trees.html b/js/games/nluqo.github.io/~bh/ssch18/trees.html
new file mode 100644
index 0000000..3282cb2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch18/trees.html
@@ -0,0 +1,848 @@
+<P>
+
+<P><A NAME="mondrian"></A><CENTER><IMG SRC="../ss-pics/mondrian.jpg" ALT="figure: mondrian"></CENTER><P><CENTER><EM>Apple Tree in Blossom,</EM> Piet Mondrian
+(1912)
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 18: Trees</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 18</H2>
+<H1>Trees</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch18.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch17/lists.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch19/implement-hof.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>The big advantage of full-featured lists over sentences is their ability to
+represent <EM>structure</EM> in our data by means of sublists.
+In this chapter we'll look at examples in which we use lists and sublists to
+represent two-dimensional information structures.  The kinds of structures
+we'll consider are called <EM>trees</EM> because they resemble trees in
+nature:
+
+<P><P><CENTER><IMG SRC="../ss-pics/firsttree.jpg" ALT="figure: firsttree">
+&nbsp;&nbsp;&nbsp;&nbsp;<IMG SRC="../ss-pics/tree.jpg" ALT="photo: tree">
+</CENTER>
+
+
+<P>
+<P>The components of a tree are called <EM>nodes.</EM> At the
+top is the <EM><A NAME="g1"></A><A NAME="g2"></A>root node</EM> of the tree; in the interior of the
+diagram there are <EM><A NAME="g3"></A><A NAME="g4"></A>branch nodes;</EM> at the bottom are the <EM><A NAME="g5"></A><A NAME="g6"></A>leaf nodes,</EM> from which no further branches extend.
+
+<P>We're going to begin by considering a tree as an abstract data type, without
+thinking about how lists are used to represent trees.  For example, we'll
+construct trees using a procedure named <CODE>make-node</CODE>, as if that were a
+Scheme primitive.  About halfway through the chapter, we'll explore the
+relationship between trees and lists.
+
+<P><H2>Example: The World</H2>
+
+<P>Here is a tree that represents the world:
+
+<P><CENTER><IMG SRC="../ss-pics/world.jpg" ALT="figure: world"></CENTER>
+
+<P>Each node in the tree represents some region of the world.  Consider the
+node labeled &quot;Great Britain.&quot;  There are two parts to this node:  The
+obvious part is the label itself, the name &quot;Great Britain.&quot;  But
+the regions of the world that are included within Great Britain&mdash;that is,
+the nodes that are attached beneath Great Britain in the figure&mdash;are also part
+of this node.
+
+<P>We say that every node has a <EM>datum</EM> and zero or more <EM>children.</EM>  For the moment, let's just say that the datum can be
+either a word or a sentence.  The children, if any, are themselves trees.
+Notice that this definition is recursive&mdash;a tree is made up of trees.
+(What's the base case?)
+
+<P>This family metaphor is also part of the terminology of
+trees.<A NAME="text1" HREF="trees.html#ft1">[1]</A> We say that a node is the <EM>parent</EM> of
+another node, or that two nodes are <EM>siblings.</EM>  In more advanced
+treatments, you even hear things like &quot;grandparent&quot; and &quot;cousin,&quot; but we
+won't get into that.
+
+<P>What happens when you prune an actual tree by cutting off a branch?
+The cut-off part is essentially a tree in itself, with a smaller trunk
+and fewer branches.  The metaphor isn't perfect because the cut-off part
+doesn't have roots, but still, we can stick the end in the ground and
+hope that the cut-off end will take root as a new tree.
+
+<P>It's the same with a country in our example; each country is a branch node of
+the entire world tree, but also a tree in itself.  Depending on how you
+think about it, Great Britain can be either a component of the entire world
+or a collection of smaller locations.  So the branch node that represents
+Great Britain is the root node of a <EM>subtree</EM> of the entire tree.
+
+<P><CENTER><IMG SRC="../ss-pics/britain.jpg" ALT="figure: britain"></CENTER>
+
+<P>What is a node?  It might seem natural to think of a node as being just the
+information in one of the circles in the diagram&mdash;that is, to think of a
+node as including only its datum.  In that way of thinking, each node would
+be separate from every other node, just as the words in a sentence are all
+separate elements.  However, it will be more useful to think of a node as a
+structure that includes everything below that circle also: the datum and the
+children.  So when we think of the node for Great Britain, we're thinking
+not only of the name &quot;Great Britain,&quot; but also of everything <EM>in</EM> Great Britain.  From this perspective, the root node of a tree
+includes the entire tree.  We might as well say that the node <EM>is</EM> the
+tree.
+
+<P>The constructor for a tree is actually the constructor for one node,
+its root node.  Our constructor for trees is therefore called
+<CODE><A NAME="g7"></A><CODE>make-node</CODE></CODE>.  It takes two arguments: the datum and a (possibly
+empty) list of children.  As the following example shows, constructing what
+we think of as one tree requires the construction of many such nodes.
+
+<P><PRE>(define world-tree                           ;; painful-to-type version
+  (make-node
+   'world
+   (list (make-node
+          'italy
+          (list (make-node 'venezia '())
+                (make-node 'riomaggiore '())
+                (make-node 'firenze '())
+                (make-node 'roma '())))
+         (make-node
+          '(united states)
+          (list (make-node 'california
+                           (list (make-node 'berkeley '())
+                                 (make-node '(san francisco) '())
+                                 (make-node 'gilroy '())))
+                (make-node 'massachusetts
+                           (list (make-node 'cambridge '())
+                                 (make-node 'amherst '())
+                                 (make-node 'sudbury '())))))))) 
+</PRE>
+
+<P>You'll notice that we haven't defined all of the places shown
+in the figure.  That's because we got tired of doing all this typing;
+we're going to invent some abbreviations later.  For now, we'll take time
+out to show you the selectors for trees.
+<A NAME="g8"></A>
+<A NAME="g9"></A>
+
+<P><PRE>&gt; (datum world-tree)
+WORLD
+
+&gt; (datum (car (children world-tree)))
+ITALY
+
+&gt; (datum (car (children (cadr (children world-tree)))))
+CALIFORNIA
+
+&gt; (datum (car (children (car (children
+			      (cadr (children world-tree)))))))
+BERKELEY
+</PRE>
+
+<P><CODE>Datum</CODE> of a tree node returns the datum of that node.
+<CODE>Children</CODE> of a node returns a list of the children of the node.
+(A list of trees is called a <EM>forest.</EM>)
+
+<P>Here are some abbreviations to help us construct the world tree with less
+typing.  Unlike <CODE>make-node</CODE>, <CODE>datum</CODE>, and <CODE>children</CODE>, which are
+intended to work on trees in general, these abbreviations were designed
+with the world tree specifically in mind:
+
+<P><PRE>(define (<A NAME="g10"></A>leaf datum)
+  (make-node datum '()))
+
+(define (<A NAME="g11"></A>cities name-list)
+  (map leaf name-list))
+</PRE>
+
+<P>With these abbreviations the world tree is somewhat easier to
+define:
+
+<P><PRE>(define world-tree
+  (make-node
+   'world
+   (list (make-node
+          'italy
+          (cities '(venezia riomaggiore firenze roma)))
+         (make-node
+          '(united states)
+          (list (make-node
+                 'california
+                 (cities '(berkeley (san francisco) gilroy)))
+                (make-node
+                 'massachusetts
+                 (cities '(cambridge amherst sudbury)))
+                (make-node 'ohio (cities '(kent)))))
+         (make-node 'zimbabwe (cities '(harare hwange)))
+         (make-node 'china
+		    (cities '(beijing shanghai guangzhou suzhou)))
+         (make-node
+          '(great britain)
+          (list 
+           (make-node 'england (cities '(liverpool)))
+           (make-node 'scotland
+		      (cities '(edinburgh glasgow (gretna green))))
+           (make-node 'wales (cities '(abergavenny)))))
+         (make-node
+          'australia
+          (list
+           (make-node 'victoria (cities '(melbourne)))
+           (make-node '(new south wales) (cities '(sydney)))
+           (make-node 'queensland
+		      (cities '(cairns (port douglas))))))
+         (make-node 'honduras (cities '(tegucigalpa))))))
+</PRE>
+
+<P>
+<P><H2>How Big Is My Tree?</H2>
+
+<P>Now that we have the tree, how many cities are there in our world?
+
+<P><PRE>(define (<A NAME="g12"></A>count-leaves tree)
+  (if (leaf? tree)
+      1
+      (reduce + (map count-leaves (children tree)))))
+
+(define (<A NAME="g13"></A>leaf? node)
+  (null? (children node)))
+
+&gt; (count-leaves world-tree)
+27
+</PRE>
+
+<P>At first glance, this may seem like a simple case of recursion, with
+<CODE>count-leaves</CODE> calling <CODE>count-leaves</CODE>.  But since what looks like a
+single recursive call is really a call to <CODE>map</CODE>, it is equivalent to
+<EM>several</EM> recursive calls, one for each child of the given tree node.
+
+<P><H2>Mutual Recursion</H2>
+
+In Chapter 14 we wrote recursive
+procedures that were equivalent to using higher-order functions.  Let's do
+the same for <CODE>count-leaves</CODE>.
+
+<P><PRE>(define (<A NAME="g14"></A>count-leaves tree)
+  (if (leaf? tree)
+      1
+      (count-leaves-in-forest (children tree))))
+
+(define (<A NAME="g15"></A>count-leaves-in-forest forest)
+  (if (null? forest)
+      0
+      (+ (count-leaves (car forest))
+         (count-leaves-in-forest (cdr forest)))))
+</PRE>
+
+<P>Note that <CODE>count-leaves</CODE> calls <CODE>count-leaves-in-forest</CODE>,
+and <CODE>count-leaves-</CODE><CODE>in-</CODE><CODE>forest</CODE> calls
+<CODE>count-leaves</CODE>.  This pattern is called <EM><A NAME="g16"></A><A NAME="g17"></A>mutual recursion.</EM>
+
+<P>Mutual recursion is often a useful technique for dealing with trees.  In the
+typical recursion we've seen before this chapter, we've moved sequentially
+through a list or sentence, with each recursive call taking us one step to
+the right.  In the following paragraphs we present three different models to
+help you think about how the shape of a tree gives rise to a mutual recursion.
+
+<P>In the first model, we're going to think of <CODE>count-leaves</CODE> as an
+initialization procedure, and <CODE>count-leaves-in-forest</CODE> as its helper
+procedure.  Suppose we want to count the leaves of a tree.  Unless the
+argument is a very shallow<A NAME="text2" HREF="trees.html#ft2">[2]</A> tree, this will involve counting the leaves of all
+of the children of that tree.  What we want is a straightforward sequential
+recursion over the list of children.  But we're given the wrong argument: 
+the tree itself, not its list of children.  So we need an initialization
+procedure, <CODE>count-leaves</CODE>, whose job is to extract the list of children
+and invoke a helper procedure, <CODE>count-leaves-in-forest</CODE>, with that list
+as argument.
+
+<P>The helper procedure follows the usual sequential list pattern:  Do
+something to the <CODE>car</CODE> of the list, and recursively handle the <CODE>cdr</CODE>
+of the list.  Now, what do we have to do to the <CODE>car</CODE>?  In the usual
+sequential recursion, the <CODE>car</CODE> of the list is something simple, such as
+a word.  What's special about trees is that here the <CODE>car</CODE> is itself a
+tree, just like the entire data structure we started with.  Therefore, we
+must invoke a procedure whose domain is trees: <CODE>count-leaves</CODE>.
+
+<P>This model is built on two ideas.  One is the idea of the domain of a
+function; the reason we need two procedures is that we need one that takes a
+tree as its argument and one that takes a list of trees as its argument.
+The other idea is the leap of faith; we assume that the invocation of <CODE>count-leaves</CODE> within <CODE>count-leaves-in-forest</CODE> will correctly handle each
+child without tracing the exact sequence of events.
+
+<P>The second model is easier to state but less rigorous.  Because of the
+two-dimensional nature of trees, in order to visit every node we have to be
+able to move in two different directions.  From a given node we have to be
+able to move <EM>down</EM> to its children, but from each child we must be
+able to move <EM>across</EM> to its next sibling.
+
+<P>The job of <CODE>count-leaves-in-forest</CODE> is to move from left to right
+through a list of children.  (It does this using the more familiar kind of
+recursion, in which it invokes itself directly.)  The downward motion
+happens in <CODE>count-leaves</CODE>, which moves down one level by invoking <CODE>children</CODE>.  How does the program move down more than one level?  At each
+level, <CODE>count-leaves</CODE> is invoked recursively from <CODE>count-leaves-in-forest</CODE>.
+
+<P>The third model is also based on the two-dimensional nature of trees.
+Imagine for a moment that each node in the tree has at most one child.
+In that case, <CODE>count-leaves</CODE> could move from the root down to the single
+leaf with a structure very similar to the actual procedure, but carrying out
+a sequential recursion:
+
+<P><PRE>(define (count-leaf tree)
+  (if (leaf? tree)
+      1
+      (count-leaf (child tree))))
+</PRE>
+
+<P>The trouble with this, of course, is that at each downward
+step there isn't a single &quot;next&quot; node.  Instead of a single path from the
+root to the leaf, there are multiple paths from the root to many leaves.
+To make our idea of downward motion through sequential recursion work in a
+real tree, at each level we must &quot;clone&quot; <CODE>count-leaves</CODE> as many times
+as there are children.  <CODE>Count-leaves-in-forest</CODE> is the factory that
+manufactures the clones.  It hires one <CODE>count-leaves</CODE> little person for
+each child and accumulates their results.
+
+<P>The key point in recursion on trees is that each child of a tree is itself a
+perfectly good tree.  This recursiveness in the nature of trees gives rise
+to a very recursive structure for programs that use trees.  The reason we
+say &quot;very&quot; recursive is that each invocation of <CODE>count-leaves</CODE> causes
+not just one but several recursive invocations, one for each child, by way
+of <CODE>count-leaves-in-forest</CODE>.
+
+<P>In fact, we use the name <EM><A NAME="g18"></A><A NAME="g19"></A>tree recursion</EM> for any situation
+in which a procedure invocation results in more than one recursive call,
+even if there isn't an argument that's a tree.  The computation of Fibonacci
+numbers from Chapter 13 is an example of a tree recursion with no
+tree.  The <CODE>car</CODE>-<CODE>cdr</CODE> recursions in Chapter 17 are also
+tree recursions; any structured list-of-lists has a somewhat tree-like,
+two-dimensional character even though it doesn't use the formal mechanisms
+we're exploring in this chapter.
+The <CODE>cdr</CODE> recursion is a &quot;horizontal&quot; one, moving from one element
+to another within the same list; the <CODE>car</CODE> recursion is a &quot;vertical&quot;
+one, exploring a sublist of the given list.
+
+<P>
+<P><H2>Searching for a Datum in the Tree</H2>
+
+<P>Procedures that explore trees aren't always as simple as <CODE>count-leaves</CODE>.
+We started with that example because we could write it using higher-order
+functions, so that you'd understand the structure of the problem before we
+had to take on the complexity of mutual recursion.  But many tree problems
+don't quite fit our higher-order functions.
+
+<P>For example, let's write a predicate <CODE>in-tree?</CODE> that takes the name of
+a place and a tree as arguments and tells whether or not that place is in the
+tree.  It <EM>is</EM> possible to make it work with <CODE>filter</CODE>:
+
+<P><PRE>(define (<A NAME="g20"></A>in-tree? place tree)
+  (or (equal? place (datum tree))
+      (not (null? (filter (lambda (subtree) (in-tree? place subtree))
+			  (children tree))))))
+</PRE>
+
+<P>This awkward construction, however, also performs
+unnecessary computation.  If the place we're looking for happens to be in the
+first child of a node, <CODE>filter</CODE> will nevertheless look in all the other
+children as well.  We can do better by replacing the use of <CODE>filter</CODE>
+with a mutual recursion:
+
+<P><PRE>(define (<A NAME="g21"></A>in-tree? place tree)
+  (or (equal? place (datum tree))
+      (in-forest? place (children tree))))
+
+(define (<A NAME="g22"></A>in-forest? place forest)
+  (if (null? forest)
+      #f
+      (or (in-tree? place (car forest))
+	  (in-forest? place (cdr forest)))))
+
+&gt; (in-tree? 'abergavenny world-tree)
+#T
+
+&gt; (in-tree? 'abbenay world-tree)
+#F
+
+&gt; (in-tree? 'venezia (cadr (children world-tree)))
+#F
+</PRE>
+
+<P>Although any mutual recursion is a little tricky to read, the structure
+of this program does fit the way we'd describe the algorithm in
+English.  A place is in a tree if one of two conditions holds: the place is
+the datum at the root of the tree, or the place is (recursively) in one of
+the child trees of this tree.  That's what <CODE>in-tree?</CODE> says.  As for
+<CODE>in-forest?</CODE>, it says that a place is in one of a group of trees if
+the place is in the first tree, or if it's in one of the remaining trees.
+
+<P><H2>Locating a Datum in the Tree</H2>
+
+<P>Our next project is similar to the previous one, but a little more
+intricate.  We'd like to be able to locate a city and find out all of
+the larger regions that enclose the city.  For example, we want to say
+
+<P><PRE>&gt; (locate 'berkeley world-tree)
+(WORLD (UNITED STATES) CALIFORNIA BERKELEY)
+</PRE>
+
+<P>Instead of just getting a yes-or-no answer about whether a city is
+in the tree, we now want to find out <EM>where</EM> it is.
+
+<P>The algorithm is recursive:  To look for Berkeley within the world, we need
+to be able to look for Berkeley within any subtree.  The <CODE>world</CODE> node
+has several children (countries).  <CODE>Locate</CODE> recursively asks each of
+those children to find a path to Berkeley.  All but one of the children
+return <CODE>#f</CODE>, because they can't find Berkeley within their territory.
+But the <CODE>(united states)</CODE> node returns
+
+<P><PRE>((UNITED STATES) CALIFORNIA BERKELEY)
+</PRE>
+
+<P>To make a complete path, we just prepend the name of the current
+node, <CODE>world</CODE>, to this path.  What happens when <CODE>locate</CODE> tries to
+look for Berkeley in Australia?  Since all of Australia's children return
+<CODE>#f</CODE>, there is no path to Berkeley from Australia, so <CODE>locate</CODE>
+returns <CODE>#f</CODE>.
+
+<P><PRE>(define (<A NAME="g23"></A>locate city tree)
+  (if (equal? city (datum tree))
+      (list city)
+      (let ((subpath (locate-in-forest city (children tree))))
+        (if subpath
+            (cons (datum tree) subpath)
+            #f))))
+
+(define (<A NAME="g24"></A>locate-in-forest city forest)
+  (if (null? forest)
+      #f
+      (or (locate city (car forest))
+	  (locate-in-forest city (cdr forest)))))
+</PRE>
+
+<P>Compare the structure of <CODE>locate</CODE> with that of <CODE>in-tree?</CODE>.  The
+helper procedures <CODE>in-forest?</CODE> and <CODE>locate-in-forest</CODE> are almost
+identical.  The main procedures look different, because <CODE>locate</CODE> has a
+harder job, but both of them check for two possibilities:  The city might be
+the datum of the argument node, or it might belong to one of the child trees.
+
+<P><H2>Representing Trees as Lists</H2>
+
+<P>We've done a lot with trees, but we haven't yet talked about the way Scheme
+stores trees internally.  How do <CODE>make-node</CODE>, <CODE>datum</CODE>, and <CODE>children</CODE> work?  It turns out to be very convenient to represent trees in
+terms of lists.
+
+<P><PRE>(define (<A NAME="g25"></A>make-node datum children)
+  (cons datum children))
+
+(define (<A NAME="g26"></A>datum node)
+  (car node))
+
+(define (<A NAME="g27"></A>children node)
+  (cdr node))
+</PRE>
+
+<P>In other words, a tree is a list whose first element is the datum
+and whose remaining elements are subtrees.
+
+<P>
+<PRE>&gt; world-tree
+(WORLD
+   (ITALY (VENEZIA) (RIOMAGGIORE) (FIRENZE) (ROMA))
+   ((UNITED STATES)
+    (CALIFORNIA (BERKELEY) ((SAN FRANCISCO)) (GILROY))
+    (MASSACHUSETTS (CAMBRIDGE) (AMHERST) (SUDBURY))
+    (OHIO (KENT)))
+   (ZIMBABWE (HARARE) (HWANGE))
+   (CHINA (BEIJING) (SHANGHAI) (GUANGSZHOU) (SUZHOW))
+   ((GREAT BRITAIN)
+    (ENGLAND (LIVERPOOL))
+    (SCOTLAND (EDINBURGH) (GLASGOW) ((GRETNA GREEN)))
+    (WALES (ABERGAVENNY)))
+   (AUSTRALIA
+    (VICTORIA (MELBOURNE))
+    ((NEW SOUTH WALES) (SYDNEY))
+    (QUEENSLAND (CAIRNS) ((PORT DOUGLAS))))
+   (HONDURAS (TEGUCIGALPA)))
+</PRE>
+
+<P><PRE>&gt; (car (children world-tree))
+(ITALY (VENEZIA) (RIOMAGGIORE) (FIRENZE) (ROMA))
+</PRE>
+
+<P>Ordinarily, however, we're not going to print out trees in their entirety.
+As in the <CODE>locate</CODE> example, we'll extract just some subset of the
+information and put it in a more readable form.
+
+<P><H2>Abstract Data Types</H2>
+
+<P>The procedures <CODE>make-node</CODE>, <CODE>datum</CODE>, and <CODE>children</CODE> define an
+<A NAME="g28"></A><A NAME="g29"></A>abstract data type for trees.  Using this ADT,
+<A NAME="g30"></A>
+<A NAME="g31"></A>
+we were able to write several useful procedures to manipulate trees before
+pinning down exactly how a tree is represented as a Scheme list.
+
+<P>Although it would be possible to refer to the parts of a node by using <CODE>car</CODE> and <CODE>cdr</CODE> directly, your programs will be more readable if you use
+the ADT-specific selectors and constructors.  Consider this example:
+
+<P><PRE>(in-tree? 'venezia (caddr world-tree))
+</PRE>
+
+<P>What does <CODE>caddr</CODE> mean in this context?  Is the <CODE>caddr</CODE> of
+a tree a datum?  A child?  A forest?  Of course you could work it out by
+careful reasoning, but the form in which we presented this example
+originally was much clearer:
+
+<P><PRE>(in-tree? 'venezia (cadr (children world-tree)))
+</PRE>
+
+<P>Even better would be
+
+<P><PRE>(in-tree? 'venezia (list-ref (children world-tree) 1))
+</PRE>
+
+<P>Using the appropriate selectors and constructors is called <EM>respecting</EM> the data abstraction.  Failing to use the appropriate
+selectors and constructors is called a <EM>data abstraction
+violation.</EM>
+
+<P>Since we wrote the selectors and constructor for trees ourselves, we
+could have defined them to use some different representation:
+
+<P><PRE>(define (make-node datum children)
+  (list 'the 'node 'with 'datum datum 'and 'children children))
+
+(define (datum node) (list-ref node 4))
+
+(define (children node) (list-ref node 7))
+</PRE>
+
+<P><PRE>&gt; (make-node 'italy (cities '(venezia riomaggiore firenze roma)))
+(THE NODE WITH DATUM ITALY AND CHILDREN
+     ((THE NODE WITH DATUM VENEZIA AND CHILDREN ())
+      (THE NODE WITH DATUM RIOMAGGIORE AND CHILDREN ())
+      (THE NODE WITH DATUM FIRENZE AND CHILDREN ())
+      (THE NODE WITH DATUM ROMA AND CHILDREN ())))
+</PRE>
+
+<P>You might expect that this change in the representation would
+require changes to all the procedures we wrote earlier, such as <CODE>count-leaves</CODE>.  But in fact, those procedures would continue to work
+perfectly because they don't see the representation.  (They respect the data
+abstraction.)  As long as <CODE>datum</CODE> and <CODE>children</CODE> find the right
+information, it doesn't matter how the trees are stored.  All that matters
+is that the constructors and selectors have to be compatible with each other.
+
+<P>On the other hand, the example in this section in which we violated the data
+abstraction by using <CODE>caddr</CODE> to find the second child of <CODE>world-tree</CODE> would fail if we changed the representation.  Many cases like
+this one, in which formerly working programs failed after a change in
+representation, led programmers to use such moralistic terms as
+&quot;respecting&quot; and &quot;violating&quot; data abstractions.<A NAME="text3" HREF="trees.html#ft3">[3]</A>
+
+<P> 
+<H2>An Advanced Example: Parsing Arithmetic Expressions</H2>
+
+<P>Consider the notation for arithmetic expressions.  Scheme uses <EM><A NAME="g32"></A>
+<A NAME="g33"></A>
+prefix</EM> notation: <CODE>(+ 3 4)</CODE>.  By contrast, people who aren't Scheme
+programmers generally represent arithmetic computations using an <EM>infix</EM> notation, in which the function symbol goes between two
+arguments: 3+4.
+
+<P>Our goal in this section is to translate an infix arithmetic expression into
+a tree representing the computation.  This translation process is called
+<EM>parsing</EM> the expression.  For example, we'll turn the expression
+
+<P><P><CENTER>4+3&times;7-5/(3+4)+6</CENTER><P>
+
+into the tree
+
+<P><CENTER><IMG SRC="../ss-pics/parse0.jpg" ALT="figure: parse0"></CENTER>
+
+<P>The point of using a tree is that it's going to be very easy to perform the
+computation once we have it in tree form.  In the original infix form, it's
+hard to know what to do first, because there are <EM>precedence</EM> rules
+that determine an implicit grouping:  Multiplication and division come
+before addition and subtraction; operations with the same precedence are
+done from left to right.  Our sample expression is equivalent to
+
+<P><P><CENTER>(((4 + (3 &times; 7)) - (5 / (3+4))) + 6)</CENTER><P>
+
+In the tree representation, it's easy to see that the operations
+nearer the leaves are done first; the root node is the last operation,
+because it depends on the results of lower-level operations.
+
+<P>Our program will take as its argument an infix arithmetic expression in the
+form of a list:
+
+<P><PRE>&gt; (parse '(4 + 3 * 7 - 5 / (3 + 4) + 6))
+</PRE>
+
+<P>Each element of the list must be one of three things: a number;
+one of the four symbols <CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, or <CODE>/</CODE>; or a sublist
+(such as the three-element list <CODE>(3 + 4)</CODE> in this example) satisfying
+the same rule.  (You can imagine that we're implementing a pocket
+calculator.  If we were implementing a computer programming language, then
+we'd also accept variable names as operands.  But we're not bothering with
+that complication because it doesn't really affect the part of the problem
+about turning the expression into a tree.)
+
+<P>What makes this problem tricky is that we can't put the list elements into
+the tree as soon as we see them.  For example, the first three elements of
+our sample list are <CODE>4</CODE>, <CODE>+</CODE>, and <CODE>3</CODE>.  It's tempting to build a
+subtree of those three elements:
+
+<P><CENTER><IMG SRC="../ss-pics/fourplus.jpg" ALT="figure: fourplus"></CENTER>
+
+<P>But if you compare this picture with the earlier picture of the
+correct tree, you'll see that the second argument to this <CODE>+</CODE> invocation
+isn't the number <CODE>3</CODE>, but rather the subexpression <CODE>3 * 7</CODE>.
+
+<P>By this reasoning you might think that we have to examine the entire
+expression before we can start building the tree.  But in fact we can
+sometimes build a subtree with confidence.  For example, when we see the
+minus sign in our sample expression, we can tell that the subexpression
+<CODE>3 * 7</CODE> that comes before it is complete, because <CODE>*</CODE> has higher
+precedence than <CODE>-</CODE> does.
+
+<P>Here's the plan.  The program will examine its argument from left to right.
+Since the program can't finish processing each list element right away, it
+has to maintain information about the elements that have been examined but
+not entirely processed.  It's going to be easier to maintain that
+information in two parts: one list for still-pending operations and another
+for still-pending operands.  Here are the first steps in parsing our sample
+expression; the program examines the elements of the argument, putting
+numbers onto the operand list and operation symbols onto the operation
+list:<A NAME="text4" HREF="trees.html#ft4">[4]</A>
+
+<P>
+<CENTER><IMG SRC="../ss-pics/parse1.jpg" ALT="figure: parse1"></CENTER>
+
+<P>At this point, the program is looking at the <CODE>*</CODE> operator in the infix
+expression.  If this newly seen operator had lower precedence than the <CODE>+</CODE> that's already at the head of the list of operations, then it would be
+time to carry out the <CODE>+</CODE> operation by creating a tree with <CODE>+</CODE> at
+the root and the first two operands in the list as its children.  Instead,
+since <CODE>*</CODE> has higher precedence than <CODE>+</CODE>, the program isn't ready to
+create a subtree but must instead add the <CODE>*</CODE> to its operation list.
+
+<P><CENTER><IMG SRC="../ss-pics/parse2.jpg" ALT="figure: parse2"></CENTER>
+
+<P>This time, the newly seen <CODE>-</CODE> operation has lower precedence than the
+<CODE>*</CODE> at the head of the operation list.  Therefore, it's time for the
+program to <EM>handle</EM> the <CODE>*</CODE> operator, by making a subtree
+containing that operator and the first two elements of the operand list.
+This new subtree becomes the new first element of the operand list.
+
+<P><CENTER><IMG SRC="../ss-pics/parse3.jpg" ALT="figure: parse3"></CENTER>
+
+<P>Because the program decided to handle the waiting <CODE>*</CODE> operator, it still
+hasn't moved the <CODE>-</CODE> operator from the infix expression to the operator
+list.  Now the program must compare <CODE>-</CODE> with the <CODE>+</CODE> at the head of
+the list.  These two operators have the same precedence.  Since we want to
+carry out same-precedence operators from left to right, it's time to handle
+the <CODE>+</CODE> operator.
+
+<P><CENTER><IMG SRC="../ss-pics/parse4.jpg" ALT="figure: parse4"></CENTER>
+
+<P>Finally the program can move the <CODE>-</CODE> operator onto the operator list.
+The next several steps are similar to ones we've already seen.
+
+<P><CENTER><IMG SRC="../ss-pics/parse5.jpg" ALT="figure: parse5"></CENTER>
+
+
+<P>This is a new situation: The first unseen element of the infix expression is
+neither a number nor an operator, but a sublist.  We recursively <CODE>parse</CODE>
+this subexpression, adding the resulting tree to the operand list.
+
+<P><CENTER><IMG SRC="../ss-pics/parse6.jpg" ALT="figure: parse6"></CENTER>
+
+<P>Then we proceed as before, processing the <CODE>/</CODE> because it has higher
+precedence than the <CODE>+</CODE>, then the <CODE>-</CODE> because it has the same
+priority as the <CODE>+</CODE>, and so on.
+
+<P><CENTER><IMG SRC="../ss-pics/parse7.jpg" ALT="figure: parse7"></CENTER>
+
+<P>Once the program has examined every element of the infix expression, the
+operators remaining on the operator list must be handled.  In this case
+there is only one such operator.  Once the operators have all been handled,
+there should be one element remaining on the operand list; that element is
+the desired tree for the entire original expression.
+
+<P><CENTER><IMG SRC="../ss-pics/parse8.jpg" ALT="figure: parse8"></CENTER>
+
+<P>The following program implements this algorithm.  It works only for correctly
+formed infix expressions; if given an argument like <CODE>(3 + *)</CODE>, it'll give
+an incorrect result or a Scheme error.
+
+<P><PRE>(define (<A NAME="g34"></A>parse expr)
+  (parse-helper expr '() '()))
+
+(define (parse-helper expr operators operands)
+  (cond ((null? expr)
+	 (if (null? operators)
+	     (car operands)
+	     (handle-op '() operators operands)))
+	((number? (car expr))
+	 (parse-helper (cdr expr)
+		       operators
+		       (cons (make-node (car expr) '()) operands)))
+	((list? (car expr))
+	 (parse-helper (cdr expr)
+		       operators
+		       (cons (parse (car expr)) operands)))
+	(else (if (or (null? operators)
+		      (&gt; (precedence (car expr))
+			 (precedence (car operators))))
+		  (parse-helper (cdr expr)
+				(cons (car expr) operators)
+				operands)
+		  (handle-op expr operators operands)))))
+
+(define (handle-op expr operators operands)
+  (parse-helper expr
+		(cdr operators)
+		(cons (make-node (car operators)
+				 (list (cadr operands) (car operands)))
+		      (cddr operands))))
+
+(define (precedence oper)
+  (if (member? oper '(+ -)) 1 2))
+</PRE>
+
+<P>We promised that after building the tree it would be easy to compute the
+value of the expression.  Here is the program to do that:
+
+<P><PRE>(define (<A NAME="g35"></A>compute tree)
+  (if (number? (datum tree))
+      (datum tree)
+      ((function-named-by (datum tree))
+         (compute (car (children tree)))
+         (compute (cadr (children tree))))))
+
+(define (function-named-by oper)
+  (cond ((equal? oper '+) +)
+	((equal? oper '-) -)
+	((equal? oper '*) *)
+	((equal? oper '/) /)
+	(else (error &quot;no such operator as&quot; oper))))
+
+&gt; (compute (parse '(4 + 3 * 7 - 5 / (3 + 4) + 6)))
+30.285714285714
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>A leaf node is a perfectly good actual argument to a tree procedure,
+even though the picture of a leaf node doesn't look treeish because there
+aren't any branches.  A common mistake is to make the base case of the
+recursion be a node whose children are leaves, instead of a node that's a
+leaf itself.
+
+<P>
+<P>The value returned by <CODE>children</CODE> is not a tree, but a forest.  It's
+therefore not a suitable actual argument to a procedure that expects a tree.
+
+<P><H2>Exercises</H2>
+
+<P><B>18.1</B>&nbsp;&nbsp;What does
+
+<P><PRE>((SAN FRANCISCO))
+</PRE>
+
+<P>mean in the printout of <CODE>world-tree</CODE>?  Why two sets of
+parentheses?
+
+
+<P>
+<P>
+<B>18.2</B>&nbsp;&nbsp;Suppose we change the definition of the tree constructor so that it
+uses <CODE>list</CODE> instead of <CODE>cons</CODE>:
+
+<P><PRE>(define (make-node datum children)
+  (list datum children))
+</PRE>
+
+<P>How do we have to change the selectors so that everything still works?
+
+
+<P>
+<B>18.3</B>&nbsp;&nbsp;Write <CODE><A NAME="g36"></A>depth,</CODE> a procedure that takes a tree as argument and
+returns the largest number of nodes connected through parent-child links.
+That is, a leaf node has depth 1; a tree in which all the children of the
+root node are leaves has depth 2.  Our world tree has depth 4 (because the
+longest path from the root to a leaf is, for example, world, country, state,
+city).
+
+
+<P>
+<B>18.4</B>&nbsp;&nbsp;Write <CODE><A NAME="g37"></A>count-nodes</CODE>, a procedure that takes a tree as argument
+and returns the total number of nodes in the tree.  (Earlier we counted the
+number of <EM>leaf</EM> nodes.)
+
+
+<P>
+<B>18.5</B>&nbsp;&nbsp;Write <CODE><A NAME="g38"></A>prune</CODE>, a procedure that takes a tree as argument and
+returns a copy of the tree, but with all the leaf nodes of the original tree
+removed.  (If the argument to <CODE>prune</CODE> is a one-node tree, in which the
+root node has no children, then <CODE>prune</CODE> should return <CODE>#f</CODE> because
+the result of removing the root node wouldn't be a tree.)
+
+
+<P>
+
+<B>18.6</B>&nbsp;&nbsp;Write a program <CODE><A NAME="g39"></A>parse-scheme</CODE> that parses a Scheme arithmetic
+expression into the same kind of tree that <CODE>parse</CODE> produces for infix
+expressions.  Assume that all procedure invocations in the Scheme expression
+have two arguments.
+
+<P>The resulting tree should be a valid argument to <CODE>compute</CODE>:
+
+<P><PRE>&gt; (compute (parse-scheme '(* (+ 4 3) 2)))
+14
+</PRE>
+
+<P>(You can solve this problem without the restriction to
+two-argument invocations if you rewrite <CODE>compute</CODE> so that it doesn't
+assume every branch node has two children.)
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="trees.html#text1">[1]</A> Contrariwise, the tree metaphor is also part of the
+terminology of families.<P>
+<A NAME="ft2" HREF="trees.html#text2">[2]</A> You probably think of trees as being short
+or tall.  But since our trees are upside-down, the convention is to call
+them shallow or deep.<P>
+<A NAME="ft3" HREF="trees.html#text3">[3]</A> Another example
+of a data abstraction violation is in Chapter 16.  When <CODE>match</CODE> creates
+an empty known-values database, we didn't use a constructor.  Instead, we
+merely used a quoted empty sentence:
+
+<P><PRE>(define (match pattern sent)
+  (match-using-known-values pattern sent '()))
+</PRE><P>
+<A NAME="ft4" HREF="trees.html#text4">[4]</A> Actually, as we'll see shortly, the elements of the operand
+list are trees, so what we put in the operand list is a one-node tree whose
+datum is the number.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch17/lists.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch19/implement-hof.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch19/implement-hof b/js/games/nluqo.github.io/~bh/ssch19/implement-hof
new file mode 100644
index 0000000..fb954da
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch19/implement-hof
@@ -0,0 +1,604 @@
+<P>
+<A NAME="polly"></A>
+<P><P><CENTER><IMG SRC="../ss-pics/polly.jpg" ALT="figure: polly"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 19: Implementing Higher-Order Functions</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 19</H2>
+<H1>Implementing Higher-Order Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch19.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch18/trees.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch20/part6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>This chapter is about writing <EM><A NAME="g1"></A>higher-order procedures&mdash;</EM>that is, procedures that implement
+<A NAME="g2"></A><A NAME="g3"></A>higher-order functions.  We are going to study the implementation
+of <CODE>every</CODE>, <CODE>keep</CODE>, and so on.
+
+<P>Really there are no new techniques involved.  You know how to write
+recursive procedures that follow the <CODE>every</CODE> pattern, the <CODE>keep</CODE>
+pattern, and so on; it's a small additional step to generalize those
+<A NAME="g4"></A>
+patterns.  The truly important point made in this chapter is that you aren't
+limited to a fixed set of higher-order functions.  If you feel a need for a
+new one, you can implement it.
+
+<P><H2>Generalizing Patterns</H2>
+
+<P>In Chapter 14, we showed you the procedures <CODE>square-sent</CODE> and <CODE>pigl-sent</CODE>, which follow the <CODE>every</CODE> pattern of recursion.  In order to
+write the general tool, <CODE>every</CODE> itself, we have to
+<EM>generalize the pattern</EM> that those two have in common.
+
+<P>Before we get to writing higher-order procedures, let's look at a simpler
+case of generalizing patterns.
+
+<P>Suppose we want to find out the areas of several different kinds of
+shapes, given one linear dimension.  A straightforward way would be to do it
+like this:
+
+<P><PRE>(define pi 3.141592654)
+
+(define (<A NAME="g5"></A>square-area r) (* r r))
+
+(define (<A NAME="g6"></A>circle-area r) (* pi r r))
+
+(define (<A NAME="g7"></A>sphere-area r) (* 4 pi r r))
+
+(define (<A NAME="g8"></A>hexagon-area r) (* (sqrt 3) 1.5 r r))
+
+&gt; (square-area 6)
+36
+
+&gt; (circle-area 5)
+78.53981635
+</PRE>
+
+<P>This works fine, but it's somewhat tedious to define all four of
+these procedures, given that they're so similar.  Each one returns the square
+of its argument times some constant factor; the only difference is the
+constant factor.
+
+<P>We want to generalize the pattern that these four procedures
+exhibit.  Each of these procedures has a particular constant factor built in
+to its definition.  What we'd like instead is one single procedure that lets
+you choose a constant factor when you invoke it.  This new procedure will
+take a second argument besides the linear dimension <CODE>r</CODE> (the radius or
+side): a <CODE>shape</CODE> argument whose value is the desired constant factor.
+
+<P><PRE>(define (<A NAME="g9"></A>area shape r) (* shape r r))
+(define square 1)
+(define circle pi)
+(define sphere (* 4 pi))
+(define hexagon (* (sqrt 3) 1.5))
+
+&gt; (area sphere 7)
+615.752160184
+</PRE>
+
+<P>What's the point?  We started with several procedures.  Then we found that
+they had certain points of similarity and certain differences.  In order to
+write a single procedure that generalizes the points of similarity, we had to
+use an additional argument for each point of difference.  (In this example,
+there was only one point of difference.)
+
+<P>In fact, <EM>every</EM> procedure with arguments is a generalization in the
+same way.  Even <CODE>square-area</CODE>, which we presented as the special case
+to be generalized, is more general than these procedures:
+
+<P><PRE>(define (area-of-square-of-side-5)
+  (* 5 5))
+
+(define (area-of-square-of-side-6)
+  (* 6 6))
+</PRE>
+
+<P>These may seem too trivial to be taken seriously.  Indeed, nobody
+would write such procedures.  But it's possible to take the area of a
+particular size square without using a procedure at all, and then later
+discover that you need to deal with squares of several sizes.
+
+<P>This idea of using a procedure to generalize a pattern is part of the larger
+idea of abstraction that we've been discussing throughout the book.  We
+notice an algorithm that we need to use repeatedly, and so we separate the
+algorithm from any particular data values and give it a name.
+
+<P>The idea of generalization may seem obvious in the example about areas of
+squares.  But when we apply the same idea to generalizing over a function,
+rather than merely generalizing over a number, we gain the enormous
+expressive power of higher-order functions.
+
+<P><H2>The <CODE><B>Every</B></CODE> Pattern Revisited</H2>
+
+<P>Here again is the <CODE>every</CODE> template:
+
+<P><PRE>(define (<B>every-something</B> sent)
+  (if (empty? sent)
+      '()
+      (se (______ (first sent))
+	  (<B>every-something</B> (bf sent)))))
+</PRE>
+
+<P>You've been writing <CODE>every</CODE>-like procedures by filling in the
+blank with a specific function.  To generalize the pattern, we'll use the
+trick of adding an argument, as we discussed in the last section.
+
+<P><PRE>(define (<A NAME="g10"></A>every fn sent)
+  (if (empty? sent)
+      '()
+      (se (fn (first sent))
+          (every fn (bf sent)))))
+</PRE>
+
+<P>This is hardly any work at all for something that seemed as
+mysterious as <CODE>every</CODE> probably did when you first saw it.
+
+<P>Recall that <CODE>every</CODE> will also work if you pass it a word as its second
+argument.  The version shown here does indeed work for words, because <CODE>first</CODE> and <CODE>butfirst</CODE> work for words.  So probably &quot;<CODE>stuff</CODE>&quot; would
+be a better formal parameter than &quot;<CODE>sent</CODE>.&quot;  (The result from <CODE>every</CODE> is always a sentence, because <CODE>sentence</CODE> is used to construct the
+result.)
+
+<P>
+<P><H2>The Difference between <CODE><B>Map</B></CODE> and <CODE><B>Every</B></CODE></H2>
+
+<P>Here's the definition of the <CODE>map</CODE> procedure:
+
+<P><PRE>(define (<A NAME="g11"></A>map fn lst)
+  (if (null? lst)
+      '()
+      (cons (fn (car lst))
+            (map fn (cdr lst)))))
+</PRE>
+
+<P>The structure here is identical to that of <CODE>every</CODE>; the only
+difference is that we use <CODE>cons</CODE>, <CODE>car</CODE>, and <CODE>cdr</CODE> instead of
+<CODE>se</CODE>, <CODE>first</CODE>, and <CODE>butfirst</CODE>.
+
+<P>One implication of this is that you can't use <CODE>map</CODE> with a word, since
+it's an error to take the <CODE>car</CODE> of a word.  When is it advantageous
+to use <CODE>map</CODE> instead of <CODE>every</CODE>?  Suppose you're using <CODE>map</CODE>
+with a structured list, like this:
+
+<P><PRE>&gt; (map (lambda (flavor) (se flavor '(is great)))
+       '(ginger (ultra chocolate) pumpkin (rum raisin)))
+((GINGER IS GREAT) (ULTRA CHOCOLATE IS GREAT)
+ (PUMPKIN IS GREAT) (RUM RAISIN IS GREAT))
+</PRE>
+
+<P><PRE>&gt; (every (lambda (flavor) (se flavor '(is great)))
+	 '(ginger (ultra chocolate) pumpkin (rum raisin)))
+(GINGER IS GREAT ULTRA CHOCOLATE IS GREAT PUMPKIN IS GREAT
+ RUM RAISIN IS GREAT)
+</PRE>
+
+<P>Why does <CODE>map</CODE> preserve the structure of the sublists while <CODE>every</CODE>
+doesn't?  <CODE>Map</CODE> uses <CODE>cons</CODE> to combine the elements of the result,
+whereas <CODE>every</CODE> uses <CODE>sentence</CODE>:
+
+<P><PRE>&gt; (cons '(pumpkin is great)
+	(cons '(rum raisin is great)
+	      '()))
+((PUMPKIN IS GREAT) (RUM RAISIN IS GREAT))
+
+&gt; (se '(pumpkin is great)
+      (se '(rum raisin is great)
+	  '()))
+(PUMPKIN IS GREAT RUM RAISIN IS GREAT)
+</PRE>
+
+<P><H2><CODE><B>Filter</B></CODE></H2>
+
+<P>Here's the implementation of <A NAME="g12"></A><CODE>filter</CODE>:
+
+<P><PRE>(define (<A NAME="g13"></A>filter pred lst)
+  (cond ((null? lst) '())
+        ((pred (car lst))
+         (cons (car lst) (filter pred (cdr lst))))
+        (else (filter pred (cdr lst)))))
+</PRE>
+
+<P>Like <CODE>map</CODE>, this uses <CODE>cons</CODE> as the constructor so that it
+will work properly on structured lists.  We're leaving the definition of
+<CODE>keep</CODE>, the version for words and sentences, as an exercise.
+
+<P>(Aside from the difference between lists and sentences, this is just like
+the <CODE>keep</CODE> template on page <A HREF="../ssch14/recur-patterns.html#keeptemplate">there</A>.)
+
+<P><H2><CODE><B>Accumulate</B></CODE> and <CODE><B>Reduce</B></CODE></H2>
+
+<P>Here are the examples of the <A NAME="g14"></A><CODE>accumulate</CODE> pattern that we showed
+you before:
+
+<P><PRE>(define (addup nums)
+  (if (empty? nums)
+      0
+      (+ (first nums) (addup (bf nums)))))
+
+(define (scrunch-words sent)
+  (if (empty? sent)
+      &quot;"
+      (word (first sent) (scrunch-words (bf sent)))))
+</PRE>
+
+<P>What are the similarities and differences?  There are <EM>two</EM> important
+differences between these procedures: the combiners (<CODE>+</CODE> versus <CODE>word</CODE>) and the values returned in the base cases (zero versus the empty
+word).  According to what we said about generalizing patterns, you might
+expect that we'd need two extra arguments.  You'd invoke <CODE>three-arg-accumulate</CODE> like this:
+
+<P><PRE>&gt; (three-arg-accumulate + 0 '(6 7 8))
+21
+
+&gt; (three-arg-accumulate word &quot;&quot; '(come together))
+COMETOGETHER
+</PRE>
+
+<P>But we've actually defined <CODE>accumulate</CODE> and <A NAME="g15"></A><CODE>reduce</CODE> so
+that only two arguments are required, the procedure and the sentence or
+list.  We thought it would be too much trouble to have to provide the
+identity element all the time.  How did we manage to avoid it?
+
+<P>The trick is that in our <CODE>reduce</CODE> and <CODE>accumulate</CODE> the base case is
+a one-element argument, rather than an empty argument.  When we're down to
+one element in the argument, we just return that element:
+
+<P><PRE>(define (accumulate combiner stuff)          ;; first version
+  (if (empty? (bf stuff))
+      (first stuff)
+      (combiner (first stuff)
+		(accumulate combiner (bf stuff)))))
+</PRE>
+
+<P>This version is a simplification of the one we actually provide.
+What happens if <CODE>stuff</CODE> is empty?  This version blows up, since it tries
+to take the <CODE>butfirst</CODE> of <CODE>stuff</CODE> immediately.  Our final version
+has a specific check for empty arguments:
+
+<P><PRE>(define (<A NAME="g16"></A>accumulate combiner stuff)
+  (cond ((not (empty? stuff)) (real-accumulate combiner stuff))
+        ((member combiner (list + * word se append))
+         (combiner))
+        (else (error
+               &quot;Can't accumulate empty input with that combiner&quot;))))
+
+(define (<A NAME="g17"></A>real-accumulate combiner stuff)
+  (if (empty? (bf stuff))
+      (first stuff)
+      (combiner (first stuff) (real-accumulate combiner (bf stuff)))))
+</PRE>
+
+<P>This version works just like the earlier version as long as <CODE>stuff</CODE> isn't empty.  (<CODE>Reduce</CODE> is the same, except that it uses <CODE>null?</CODE>, <CODE>car</CODE>, and <CODE>cdr</CODE>.)
+
+<P>As we mentioned in Chapter 8, many of Scheme's primitive procedures
+return their identity element when invoked with no arguments.  We can take
+advantage of this; if <CODE>accumulate</CODE> is invoked with an empty second
+argument and one of the procedures <CODE>+</CODE>, <CODE>*</CODE>, <CODE>word</CODE>, <CODE>sentence</CODE>, <CODE>append</CODE> or <CODE>list</CODE>, we invoke the combiner with no
+arguments to produce the return value.
+
+<P>
+<P>On the other hand, if <CODE>accumulate</CODE>'s combiner argument is something like
+<CODE>(lambda (x y) (word x '- y))</CODE> or <CODE>max</CODE>, then there's nothing <CODE>accumulate</CODE> can return, so we give an error message.  (But it's a more
+descriptive error message than the first version; what message do you get
+when you call that first version with an empty second argument?)
+
+<P>It's somewhat of a kludge that we have to include in our procedure a
+list of the functions that can be called without arguments.  What we'd like
+to do is invoke the combiner and find out if that causes an error, but
+Scheme doesn't provide a mechanism for causing errors on purpose and
+recovering from them.  (Some dialects of Lisp do have that capability.)
+
+<P><H2>Robustness</H2>
+
+<P>Instead of providing a special error message for empty-argument cases
+that <CODE>accumulate</CODE> can't handle, we could have just let it blow up:
+
+<P><PRE>(define (accumulate combiner stuff)          ;; non-robust version
+  (if (not (empty? stuff))
+      (real-accumulate combiner stuff)
+      (combiner)))
+</PRE>
+
+<P>Some questions about programming have clear right and wrong answers&mdash;if your
+program doesn't work, it's wrong!  But the decision about whether to include
+the extra check for a procedure that's usable with an empty argument is a
+matter of judgment.
+
+<P>Here is the reasoning in favor of this simpler version:  In either version,
+the user who tries to evaluate an expression like
+
+<P><PRE>(accumulate max '())
+</PRE>
+
+<P>is going to get an error message.  In the longer version we've
+spent both our own programming effort and a little of the computer's time
+on every invocation just to give a <EM>different</EM> error message from the
+one that Scheme would have given anyway.  What's the point?
+
+<P>Here is the reasoning in favor of the longer version:  In practice, the
+empty-argument situation isn't going to arise because someone uses a quoted
+empty sentence; instead the second argument to <CODE>accumulate</CODE> will be some
+expression whose value happens to be empty under certain conditions.  The
+user will then have to debug the program that caused those conditions.
+Debugging is hard; we should make it easier for the user, if we can, by
+giving an error message that points clearly to the problem.
+
+<P>A program that behaves politely when given incorrect input is called <EM>robust.</EM> It's not always a matter of better or worse error
+messages.  For example, a program that reads input from a human user might
+offer the chance to try again if some input value is incorrect.  A robust
+program will also be alert for hardware problems, such as running out of
+space on a disk, or getting garbled information over a telephone connection
+to another machine because of noise on the line.
+
+<P>It's possible to pay either too little or too much attention to program
+robustness.  If you're a professional programmer, your employer will expect
+your programs to survive errors that are likely to happen.  On the other
+hand, your programs will be hard to read and debug if the error checking
+swamps the real work!  As a student, unless you are specifically asked to
+&quot;bulletproof&quot; your program, don't answer exam questions by writing
+procedures like this one:
+
+<P><PRE>(define (even? num)                          ;; silly example
+  (cond ((not (number? num)) (error &quot;Not a number.&quot;))
+        ((not (integer? num)) (error &quot;Not an integer.&quot;))
+        ((&lt; num 0) (error &quot;Argument must be positive.&quot;))
+        (else (= (remainder num 2) 0))))
+</PRE>
+
+<P>In the case of <CODE>accumulate</CODE>, we decided to be extra robust
+because we were writing a procedure for use in a beginning programming
+course.  If we were writing this tool just for our own use, we might have
+chosen the non-robust version.  Deciding how robust a program will be is a
+matter of taste.
+
+<P><H2>Higher-Order Functions for Structured Lists</H2>
+
+<P>We've given you a fairly standard set of higher-order functions, but there's
+no law that says these are the only ones.  Any time you notice yourself
+writing what feels like the same procedure over again, but with different
+details, consider inventing a higher-order function.
+
+<P>For example, here's a procedure we defined in Chapter 17.
+
+<P><PRE>(define (<A NAME="g18"></A>deep-pigl structure)
+  (cond ((word? structure) (pigl structure))
+	((null? structure) '())
+	(else (cons (deep-pigl (car structure))
+		    (deep-pigl (cdr structure))))))
+</PRE>
+
+<P>This procedure converts every word in a <A NAME="g19"></A><A NAME="g20"></A>structured list
+to Pig Latin.
+Suppose we have a structure full of numbers and we want to compute all of their
+squares.  We could write a specific procedure <CODE>deep-square</CODE>, but
+instead, we'll write a higher-order procedure:
+
+<P><PRE>(define (<A NAME="g21"></A>deep-map f structure)
+  (cond ((word? structure) (f structure))
+        ((null? structure) '())
+        (else (cons (deep-map f (car structure))
+                    (deep-map f (cdr structure))))))
+</PRE>
+
+<P><H2>The Zero-Trip Do Loop</H2>
+
+<P>The first programming language that provided a level of abstraction over the
+instructions understood directly by computer hardware was Fortran, a
+language that is still widely used today despite the advances in programming
+language design since then.  Fortran remains popular because of the enormous
+number of useful programs that have already been written in it; if an
+improvement is needed, it's easier to modify the Fortran program than to
+start again in some more modern language.
+
+<P>Fortran includes a control mechanism called <CODE>do</CODE>, a sort of higher-order
+procedure that carries out a computation repeatedly, as <CODE>every</CODE> does.
+But instead of carrying out the computation once for each element of a given
+collection of data (like the sentence argument to <CODE>every</CODE>), <CODE>do</CODE>
+performs a computation once for each integer in a range specified by its
+endpoints.  &quot;For every number between 4 and 16, do such-and-such.&quot;
+
+<P>What if you specify endpoints such that the starting value is greater than
+the ending value?  In the first implementation of Fortran, nobody thought
+very hard about this question, and they happened to implement <CODE>do</CODE> in
+such a way that if you specified a backward range, the computation was done
+once, for the given starting value, before Fortran noticed that it was past
+the ending value.
+
+<P>Twenty years later, a bunch of computer scientists argued that this behavior
+was wrong&mdash;that a <CODE>do</CODE> loop with its starting value greater than its
+ending value should not carry out its computation at all.  This proposal for
+a &quot;zero-trip <CODE>do</CODE> loop&quot; was strongly opposed by Fortran old-timers,
+not because of any principle but because of all the thousands of Fortran
+programs that had been written to rely on the one-trip behavior.
+
+<P>The point of this story is that the Fortran users had to debate the issue so
+heatedly because they are stuck with only the control mechanisms that are
+built into the language.  Fortran doesn't have the idea of function as data,
+so Fortran programmers can't write their own higher-order procedures.  But
+you, using the techniques of this chapter, can create precisely the control
+mechanism that you need for whatever problem you happen to be working on.
+
+<P><H2>Pitfalls</H2>
+
+<P>The most crucial point in inventing a higher-order function is to make
+sure that the pattern you have in mind really does generalize.  For example,
+if you want to write a higher-order function for structured data, what is the base
+case?  Will you use the tree abstract data type, or will you use <CODE>car</CODE>/<CODE>cdr</CODE>
+recursion?
+
+<P>When you generalize a pattern by adding a new argument (typically a
+procedure), be sure you add it to the recursive invocation(s) as well as to
+the formal parameter list!
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>19.1</B>&nbsp;&nbsp;What happens if you say the following?
+
+<P><PRE>(every cdr '((john lennon) (paul mccartney)
+	     (george harrison) (ringo starr)))
+</PRE>
+
+<P>How is this different from using <CODE>map</CODE>, and why?  How about <CODE>cadr</CODE> instead of <CODE>cdr</CODE>?
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>19.2</B>&nbsp;&nbsp;Write <CODE>keep</CODE>.  Don't forget that <CODE>keep</CODE> has to return a sentence if
+its second argument is a sentence, and a word if its second argument is a
+word.
+
+<P>(Hint: it might be useful to write a <CODE>combine</CODE> procedure that uses either
+<CODE>word</CODE> or <CODE>sentence</CODE> depending on the types of its arguments.)
+
+
+<P>
+<B>19.3</B>&nbsp;&nbsp;Write the three-argument version of <CODE>accumulate</CODE> that we described.
+
+<P><PRE>&gt; (three-arg-accumulate + 0 '(4 5 6))
+15
+
+&gt; (three-arg-accumulate + 0 '())
+0
+
+&gt; (three-arg-accumulate cons '() '(a b c d e))
+(A B C D E)
+</PRE>
+
+<P>
+<B>19.4</B>&nbsp;&nbsp;Our <CODE>accumulate</CODE> combines elements from right to left.  That is,
+
+<P><PRE>(accumulate - '(2 3 4 5))
+</PRE>
+
+<P>computes 2&minus;(3&minus;(4&minus;5)).  Write <CODE>left-accumulate</CODE>, which
+will compute ((2&minus;3)&minus;4)&minus;5 instead.  (The result will be the same for
+an operation such as <CODE>+</CODE>, for which grouping order doesn't matter, but
+will be different for <CODE>-</CODE>.)
+
+
+<P>
+<B>19.5</B>&nbsp;&nbsp;Rewrite the <CODE>true-for-all?</CODE> procedure from Exercise <A HREF="../ssch8/higher.html#trueforall">8.10</A>.
+Do not use <CODE>every</CODE>, <CODE>keep</CODE>, or <CODE>accumulate</CODE>.
+
+
+<P>
+<B>19.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g22"></A>true-for-any-pair?</CODE> that takes a predicate and a
+sentence as arguments.  The predicate must accept two words as its arguments.
+Your procedure should return <CODE>#t</CODE> if the argument predicate will return
+true for any two adjacent words in the sentence:
+<A NAME="exanypair"></A>
+
+<P><PRE>&gt; (true-for-any-pair? equal? '(a b c b a))
+#F
+
+&gt; (true-for-any-pair? equal? '(a b c c d))
+#T
+
+&gt; (true-for-any-pair? &lt; '(20 16 5 8 6))      ;; 5 is less than 8
+#T
+</PRE>
+
+<P>
+<B>19.7</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g23"></A>true-for-all-pairs?</CODE> that takes a predicate
+and a sentence as arguments.  The predicate must accept two words as its
+arguments.  Your procedure should return <CODE>#t</CODE> if the argument predicate
+will return true for <EM>every</EM> two adjacent words in the sentence:
+<A NAME="exallpairs"></A>
+
+<P><PRE>&gt; (true-for-all-pairs? equal? '(a b c c d))
+#F
+
+&gt; (true-for-all-pairs? equal? '(a a a a a))
+#T
+
+&gt; (true-for-all-pairs? &lt; '(20 16 5 8 6))
+#F
+
+&gt; (true-for-all-pairs? &lt; '(3 7 19 22 43))
+#T
+</PRE>
+
+<P>
+<B>19.8</B>&nbsp;&nbsp;Rewrite <CODE>true-for-all-pairs?</CODE> (Exercise <A HREF="implement-hof.html#exallpairs">19.7</A>) using <CODE>true-for-any-pair?</CODE> (Exercise <A HREF="implement-hof.html#exanypair">19.6</A>) as a helper procedure.  Don't use
+recursion in solving this problem (except for the recursion you've already
+used to write <CODE>true-for-any-pair?</CODE>).  Hint:  You'll find the <CODE>not</CODE>
+procedure helpful.
+
+
+<P>
+<B>19.9</B>&nbsp;&nbsp;Rewrite either of the sort procedures from Chapter 15 to take two
+arguments, a list and a predicate.  It should sort the elements of that list
+according to the given predicate:
+
+<P><PRE>&gt; (sort '(4 23 7 5 16 3) &lt;)
+(3 4 5 7 16 23)
+
+&gt; (sort '(4 23 7 5 16 3) &gt;)
+(23 16 7 5 4 3)
+
+&gt; (sort '(john paul george ringo) before?)
+(GEORGE JOHN PAUL RINGO)
+</PRE>
+
+<P>
+<B>19.10</B>&nbsp;&nbsp;Write <CODE>tree-map</CODE>, analogous to our <CODE>deep-map</CODE>, but for trees, using
+the <CODE>datum</CODE> and <CODE>children</CODE> selectors.
+
+
+<P>
+<B>19.11</B>&nbsp;&nbsp;Write <CODE>repeated</CODE>.  (This is a hard exercise!)
+
+
+<P>
+<B>19.12</B>&nbsp;&nbsp;Write <CODE>tree-reduce</CODE>.  You may assume that the combiner argument can
+be invoked with no arguments.
+
+<P><PRE>&gt; (tree-reduce
+   +
+   (make-node 3 (list (make-node 4 '())
+		      (make-node 7 '())
+		      (make-node 2 (list (make-node 3 '())
+					 (make-node 8 '()))))))
+27
+</PRE>
+
+<P>
+<B>19.13</B>&nbsp;&nbsp;Write <CODE>deep-reduce</CODE>, similar to <CODE>tree-reduce</CODE>, but for structured
+lists:
+
+<P><PRE>&gt; (deep-reduce word '(r ((a (m b) (l)) (e (r)))))
+RAMBLER
+</PRE>
+
+
+<P>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch18/trees.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch20/part6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch19/implement-hof.html b/js/games/nluqo.github.io/~bh/ssch19/implement-hof.html
new file mode 100644
index 0000000..fb954da
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch19/implement-hof.html
@@ -0,0 +1,604 @@
+<P>
+<A NAME="polly"></A>
+<P><P><CENTER><IMG SRC="../ss-pics/polly.jpg" ALT="figure: polly"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 19: Implementing Higher-Order Functions</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 19</H2>
+<H1>Implementing Higher-Order Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch19.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch18/trees.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch20/part6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>This chapter is about writing <EM><A NAME="g1"></A>higher-order procedures&mdash;</EM>that is, procedures that implement
+<A NAME="g2"></A><A NAME="g3"></A>higher-order functions.  We are going to study the implementation
+of <CODE>every</CODE>, <CODE>keep</CODE>, and so on.
+
+<P>Really there are no new techniques involved.  You know how to write
+recursive procedures that follow the <CODE>every</CODE> pattern, the <CODE>keep</CODE>
+pattern, and so on; it's a small additional step to generalize those
+<A NAME="g4"></A>
+patterns.  The truly important point made in this chapter is that you aren't
+limited to a fixed set of higher-order functions.  If you feel a need for a
+new one, you can implement it.
+
+<P><H2>Generalizing Patterns</H2>
+
+<P>In Chapter 14, we showed you the procedures <CODE>square-sent</CODE> and <CODE>pigl-sent</CODE>, which follow the <CODE>every</CODE> pattern of recursion.  In order to
+write the general tool, <CODE>every</CODE> itself, we have to
+<EM>generalize the pattern</EM> that those two have in common.
+
+<P>Before we get to writing higher-order procedures, let's look at a simpler
+case of generalizing patterns.
+
+<P>Suppose we want to find out the areas of several different kinds of
+shapes, given one linear dimension.  A straightforward way would be to do it
+like this:
+
+<P><PRE>(define pi 3.141592654)
+
+(define (<A NAME="g5"></A>square-area r) (* r r))
+
+(define (<A NAME="g6"></A>circle-area r) (* pi r r))
+
+(define (<A NAME="g7"></A>sphere-area r) (* 4 pi r r))
+
+(define (<A NAME="g8"></A>hexagon-area r) (* (sqrt 3) 1.5 r r))
+
+&gt; (square-area 6)
+36
+
+&gt; (circle-area 5)
+78.53981635
+</PRE>
+
+<P>This works fine, but it's somewhat tedious to define all four of
+these procedures, given that they're so similar.  Each one returns the square
+of its argument times some constant factor; the only difference is the
+constant factor.
+
+<P>We want to generalize the pattern that these four procedures
+exhibit.  Each of these procedures has a particular constant factor built in
+to its definition.  What we'd like instead is one single procedure that lets
+you choose a constant factor when you invoke it.  This new procedure will
+take a second argument besides the linear dimension <CODE>r</CODE> (the radius or
+side): a <CODE>shape</CODE> argument whose value is the desired constant factor.
+
+<P><PRE>(define (<A NAME="g9"></A>area shape r) (* shape r r))
+(define square 1)
+(define circle pi)
+(define sphere (* 4 pi))
+(define hexagon (* (sqrt 3) 1.5))
+
+&gt; (area sphere 7)
+615.752160184
+</PRE>
+
+<P>What's the point?  We started with several procedures.  Then we found that
+they had certain points of similarity and certain differences.  In order to
+write a single procedure that generalizes the points of similarity, we had to
+use an additional argument for each point of difference.  (In this example,
+there was only one point of difference.)
+
+<P>In fact, <EM>every</EM> procedure with arguments is a generalization in the
+same way.  Even <CODE>square-area</CODE>, which we presented as the special case
+to be generalized, is more general than these procedures:
+
+<P><PRE>(define (area-of-square-of-side-5)
+  (* 5 5))
+
+(define (area-of-square-of-side-6)
+  (* 6 6))
+</PRE>
+
+<P>These may seem too trivial to be taken seriously.  Indeed, nobody
+would write such procedures.  But it's possible to take the area of a
+particular size square without using a procedure at all, and then later
+discover that you need to deal with squares of several sizes.
+
+<P>This idea of using a procedure to generalize a pattern is part of the larger
+idea of abstraction that we've been discussing throughout the book.  We
+notice an algorithm that we need to use repeatedly, and so we separate the
+algorithm from any particular data values and give it a name.
+
+<P>The idea of generalization may seem obvious in the example about areas of
+squares.  But when we apply the same idea to generalizing over a function,
+rather than merely generalizing over a number, we gain the enormous
+expressive power of higher-order functions.
+
+<P><H2>The <CODE><B>Every</B></CODE> Pattern Revisited</H2>
+
+<P>Here again is the <CODE>every</CODE> template:
+
+<P><PRE>(define (<B>every-something</B> sent)
+  (if (empty? sent)
+      '()
+      (se (______ (first sent))
+	  (<B>every-something</B> (bf sent)))))
+</PRE>
+
+<P>You've been writing <CODE>every</CODE>-like procedures by filling in the
+blank with a specific function.  To generalize the pattern, we'll use the
+trick of adding an argument, as we discussed in the last section.
+
+<P><PRE>(define (<A NAME="g10"></A>every fn sent)
+  (if (empty? sent)
+      '()
+      (se (fn (first sent))
+          (every fn (bf sent)))))
+</PRE>
+
+<P>This is hardly any work at all for something that seemed as
+mysterious as <CODE>every</CODE> probably did when you first saw it.
+
+<P>Recall that <CODE>every</CODE> will also work if you pass it a word as its second
+argument.  The version shown here does indeed work for words, because <CODE>first</CODE> and <CODE>butfirst</CODE> work for words.  So probably &quot;<CODE>stuff</CODE>&quot; would
+be a better formal parameter than &quot;<CODE>sent</CODE>.&quot;  (The result from <CODE>every</CODE> is always a sentence, because <CODE>sentence</CODE> is used to construct the
+result.)
+
+<P>
+<P><H2>The Difference between <CODE><B>Map</B></CODE> and <CODE><B>Every</B></CODE></H2>
+
+<P>Here's the definition of the <CODE>map</CODE> procedure:
+
+<P><PRE>(define (<A NAME="g11"></A>map fn lst)
+  (if (null? lst)
+      '()
+      (cons (fn (car lst))
+            (map fn (cdr lst)))))
+</PRE>
+
+<P>The structure here is identical to that of <CODE>every</CODE>; the only
+difference is that we use <CODE>cons</CODE>, <CODE>car</CODE>, and <CODE>cdr</CODE> instead of
+<CODE>se</CODE>, <CODE>first</CODE>, and <CODE>butfirst</CODE>.
+
+<P>One implication of this is that you can't use <CODE>map</CODE> with a word, since
+it's an error to take the <CODE>car</CODE> of a word.  When is it advantageous
+to use <CODE>map</CODE> instead of <CODE>every</CODE>?  Suppose you're using <CODE>map</CODE>
+with a structured list, like this:
+
+<P><PRE>&gt; (map (lambda (flavor) (se flavor '(is great)))
+       '(ginger (ultra chocolate) pumpkin (rum raisin)))
+((GINGER IS GREAT) (ULTRA CHOCOLATE IS GREAT)
+ (PUMPKIN IS GREAT) (RUM RAISIN IS GREAT))
+</PRE>
+
+<P><PRE>&gt; (every (lambda (flavor) (se flavor '(is great)))
+	 '(ginger (ultra chocolate) pumpkin (rum raisin)))
+(GINGER IS GREAT ULTRA CHOCOLATE IS GREAT PUMPKIN IS GREAT
+ RUM RAISIN IS GREAT)
+</PRE>
+
+<P>Why does <CODE>map</CODE> preserve the structure of the sublists while <CODE>every</CODE>
+doesn't?  <CODE>Map</CODE> uses <CODE>cons</CODE> to combine the elements of the result,
+whereas <CODE>every</CODE> uses <CODE>sentence</CODE>:
+
+<P><PRE>&gt; (cons '(pumpkin is great)
+	(cons '(rum raisin is great)
+	      '()))
+((PUMPKIN IS GREAT) (RUM RAISIN IS GREAT))
+
+&gt; (se '(pumpkin is great)
+      (se '(rum raisin is great)
+	  '()))
+(PUMPKIN IS GREAT RUM RAISIN IS GREAT)
+</PRE>
+
+<P><H2><CODE><B>Filter</B></CODE></H2>
+
+<P>Here's the implementation of <A NAME="g12"></A><CODE>filter</CODE>:
+
+<P><PRE>(define (<A NAME="g13"></A>filter pred lst)
+  (cond ((null? lst) '())
+        ((pred (car lst))
+         (cons (car lst) (filter pred (cdr lst))))
+        (else (filter pred (cdr lst)))))
+</PRE>
+
+<P>Like <CODE>map</CODE>, this uses <CODE>cons</CODE> as the constructor so that it
+will work properly on structured lists.  We're leaving the definition of
+<CODE>keep</CODE>, the version for words and sentences, as an exercise.
+
+<P>(Aside from the difference between lists and sentences, this is just like
+the <CODE>keep</CODE> template on page <A HREF="../ssch14/recur-patterns.html#keeptemplate">there</A>.)
+
+<P><H2><CODE><B>Accumulate</B></CODE> and <CODE><B>Reduce</B></CODE></H2>
+
+<P>Here are the examples of the <A NAME="g14"></A><CODE>accumulate</CODE> pattern that we showed
+you before:
+
+<P><PRE>(define (addup nums)
+  (if (empty? nums)
+      0
+      (+ (first nums) (addup (bf nums)))))
+
+(define (scrunch-words sent)
+  (if (empty? sent)
+      &quot;"
+      (word (first sent) (scrunch-words (bf sent)))))
+</PRE>
+
+<P>What are the similarities and differences?  There are <EM>two</EM> important
+differences between these procedures: the combiners (<CODE>+</CODE> versus <CODE>word</CODE>) and the values returned in the base cases (zero versus the empty
+word).  According to what we said about generalizing patterns, you might
+expect that we'd need two extra arguments.  You'd invoke <CODE>three-arg-accumulate</CODE> like this:
+
+<P><PRE>&gt; (three-arg-accumulate + 0 '(6 7 8))
+21
+
+&gt; (three-arg-accumulate word &quot;&quot; '(come together))
+COMETOGETHER
+</PRE>
+
+<P>But we've actually defined <CODE>accumulate</CODE> and <A NAME="g15"></A><CODE>reduce</CODE> so
+that only two arguments are required, the procedure and the sentence or
+list.  We thought it would be too much trouble to have to provide the
+identity element all the time.  How did we manage to avoid it?
+
+<P>The trick is that in our <CODE>reduce</CODE> and <CODE>accumulate</CODE> the base case is
+a one-element argument, rather than an empty argument.  When we're down to
+one element in the argument, we just return that element:
+
+<P><PRE>(define (accumulate combiner stuff)          ;; first version
+  (if (empty? (bf stuff))
+      (first stuff)
+      (combiner (first stuff)
+		(accumulate combiner (bf stuff)))))
+</PRE>
+
+<P>This version is a simplification of the one we actually provide.
+What happens if <CODE>stuff</CODE> is empty?  This version blows up, since it tries
+to take the <CODE>butfirst</CODE> of <CODE>stuff</CODE> immediately.  Our final version
+has a specific check for empty arguments:
+
+<P><PRE>(define (<A NAME="g16"></A>accumulate combiner stuff)
+  (cond ((not (empty? stuff)) (real-accumulate combiner stuff))
+        ((member combiner (list + * word se append))
+         (combiner))
+        (else (error
+               &quot;Can't accumulate empty input with that combiner&quot;))))
+
+(define (<A NAME="g17"></A>real-accumulate combiner stuff)
+  (if (empty? (bf stuff))
+      (first stuff)
+      (combiner (first stuff) (real-accumulate combiner (bf stuff)))))
+</PRE>
+
+<P>This version works just like the earlier version as long as <CODE>stuff</CODE> isn't empty.  (<CODE>Reduce</CODE> is the same, except that it uses <CODE>null?</CODE>, <CODE>car</CODE>, and <CODE>cdr</CODE>.)
+
+<P>As we mentioned in Chapter 8, many of Scheme's primitive procedures
+return their identity element when invoked with no arguments.  We can take
+advantage of this; if <CODE>accumulate</CODE> is invoked with an empty second
+argument and one of the procedures <CODE>+</CODE>, <CODE>*</CODE>, <CODE>word</CODE>, <CODE>sentence</CODE>, <CODE>append</CODE> or <CODE>list</CODE>, we invoke the combiner with no
+arguments to produce the return value.
+
+<P>
+<P>On the other hand, if <CODE>accumulate</CODE>'s combiner argument is something like
+<CODE>(lambda (x y) (word x '- y))</CODE> or <CODE>max</CODE>, then there's nothing <CODE>accumulate</CODE> can return, so we give an error message.  (But it's a more
+descriptive error message than the first version; what message do you get
+when you call that first version with an empty second argument?)
+
+<P>It's somewhat of a kludge that we have to include in our procedure a
+list of the functions that can be called without arguments.  What we'd like
+to do is invoke the combiner and find out if that causes an error, but
+Scheme doesn't provide a mechanism for causing errors on purpose and
+recovering from them.  (Some dialects of Lisp do have that capability.)
+
+<P><H2>Robustness</H2>
+
+<P>Instead of providing a special error message for empty-argument cases
+that <CODE>accumulate</CODE> can't handle, we could have just let it blow up:
+
+<P><PRE>(define (accumulate combiner stuff)          ;; non-robust version
+  (if (not (empty? stuff))
+      (real-accumulate combiner stuff)
+      (combiner)))
+</PRE>
+
+<P>Some questions about programming have clear right and wrong answers&mdash;if your
+program doesn't work, it's wrong!  But the decision about whether to include
+the extra check for a procedure that's usable with an empty argument is a
+matter of judgment.
+
+<P>Here is the reasoning in favor of this simpler version:  In either version,
+the user who tries to evaluate an expression like
+
+<P><PRE>(accumulate max '())
+</PRE>
+
+<P>is going to get an error message.  In the longer version we've
+spent both our own programming effort and a little of the computer's time
+on every invocation just to give a <EM>different</EM> error message from the
+one that Scheme would have given anyway.  What's the point?
+
+<P>Here is the reasoning in favor of the longer version:  In practice, the
+empty-argument situation isn't going to arise because someone uses a quoted
+empty sentence; instead the second argument to <CODE>accumulate</CODE> will be some
+expression whose value happens to be empty under certain conditions.  The
+user will then have to debug the program that caused those conditions.
+Debugging is hard; we should make it easier for the user, if we can, by
+giving an error message that points clearly to the problem.
+
+<P>A program that behaves politely when given incorrect input is called <EM>robust.</EM> It's not always a matter of better or worse error
+messages.  For example, a program that reads input from a human user might
+offer the chance to try again if some input value is incorrect.  A robust
+program will also be alert for hardware problems, such as running out of
+space on a disk, or getting garbled information over a telephone connection
+to another machine because of noise on the line.
+
+<P>It's possible to pay either too little or too much attention to program
+robustness.  If you're a professional programmer, your employer will expect
+your programs to survive errors that are likely to happen.  On the other
+hand, your programs will be hard to read and debug if the error checking
+swamps the real work!  As a student, unless you are specifically asked to
+&quot;bulletproof&quot; your program, don't answer exam questions by writing
+procedures like this one:
+
+<P><PRE>(define (even? num)                          ;; silly example
+  (cond ((not (number? num)) (error &quot;Not a number.&quot;))
+        ((not (integer? num)) (error &quot;Not an integer.&quot;))
+        ((&lt; num 0) (error &quot;Argument must be positive.&quot;))
+        (else (= (remainder num 2) 0))))
+</PRE>
+
+<P>In the case of <CODE>accumulate</CODE>, we decided to be extra robust
+because we were writing a procedure for use in a beginning programming
+course.  If we were writing this tool just for our own use, we might have
+chosen the non-robust version.  Deciding how robust a program will be is a
+matter of taste.
+
+<P><H2>Higher-Order Functions for Structured Lists</H2>
+
+<P>We've given you a fairly standard set of higher-order functions, but there's
+no law that says these are the only ones.  Any time you notice yourself
+writing what feels like the same procedure over again, but with different
+details, consider inventing a higher-order function.
+
+<P>For example, here's a procedure we defined in Chapter 17.
+
+<P><PRE>(define (<A NAME="g18"></A>deep-pigl structure)
+  (cond ((word? structure) (pigl structure))
+	((null? structure) '())
+	(else (cons (deep-pigl (car structure))
+		    (deep-pigl (cdr structure))))))
+</PRE>
+
+<P>This procedure converts every word in a <A NAME="g19"></A><A NAME="g20"></A>structured list
+to Pig Latin.
+Suppose we have a structure full of numbers and we want to compute all of their
+squares.  We could write a specific procedure <CODE>deep-square</CODE>, but
+instead, we'll write a higher-order procedure:
+
+<P><PRE>(define (<A NAME="g21"></A>deep-map f structure)
+  (cond ((word? structure) (f structure))
+        ((null? structure) '())
+        (else (cons (deep-map f (car structure))
+                    (deep-map f (cdr structure))))))
+</PRE>
+
+<P><H2>The Zero-Trip Do Loop</H2>
+
+<P>The first programming language that provided a level of abstraction over the
+instructions understood directly by computer hardware was Fortran, a
+language that is still widely used today despite the advances in programming
+language design since then.  Fortran remains popular because of the enormous
+number of useful programs that have already been written in it; if an
+improvement is needed, it's easier to modify the Fortran program than to
+start again in some more modern language.
+
+<P>Fortran includes a control mechanism called <CODE>do</CODE>, a sort of higher-order
+procedure that carries out a computation repeatedly, as <CODE>every</CODE> does.
+But instead of carrying out the computation once for each element of a given
+collection of data (like the sentence argument to <CODE>every</CODE>), <CODE>do</CODE>
+performs a computation once for each integer in a range specified by its
+endpoints.  &quot;For every number between 4 and 16, do such-and-such.&quot;
+
+<P>What if you specify endpoints such that the starting value is greater than
+the ending value?  In the first implementation of Fortran, nobody thought
+very hard about this question, and they happened to implement <CODE>do</CODE> in
+such a way that if you specified a backward range, the computation was done
+once, for the given starting value, before Fortran noticed that it was past
+the ending value.
+
+<P>Twenty years later, a bunch of computer scientists argued that this behavior
+was wrong&mdash;that a <CODE>do</CODE> loop with its starting value greater than its
+ending value should not carry out its computation at all.  This proposal for
+a &quot;zero-trip <CODE>do</CODE> loop&quot; was strongly opposed by Fortran old-timers,
+not because of any principle but because of all the thousands of Fortran
+programs that had been written to rely on the one-trip behavior.
+
+<P>The point of this story is that the Fortran users had to debate the issue so
+heatedly because they are stuck with only the control mechanisms that are
+built into the language.  Fortran doesn't have the idea of function as data,
+so Fortran programmers can't write their own higher-order procedures.  But
+you, using the techniques of this chapter, can create precisely the control
+mechanism that you need for whatever problem you happen to be working on.
+
+<P><H2>Pitfalls</H2>
+
+<P>The most crucial point in inventing a higher-order function is to make
+sure that the pattern you have in mind really does generalize.  For example,
+if you want to write a higher-order function for structured data, what is the base
+case?  Will you use the tree abstract data type, or will you use <CODE>car</CODE>/<CODE>cdr</CODE>
+recursion?
+
+<P>When you generalize a pattern by adding a new argument (typically a
+procedure), be sure you add it to the recursive invocation(s) as well as to
+the formal parameter list!
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>19.1</B>&nbsp;&nbsp;What happens if you say the following?
+
+<P><PRE>(every cdr '((john lennon) (paul mccartney)
+	     (george harrison) (ringo starr)))
+</PRE>
+
+<P>How is this different from using <CODE>map</CODE>, and why?  How about <CODE>cadr</CODE> instead of <CODE>cdr</CODE>?
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>19.2</B>&nbsp;&nbsp;Write <CODE>keep</CODE>.  Don't forget that <CODE>keep</CODE> has to return a sentence if
+its second argument is a sentence, and a word if its second argument is a
+word.
+
+<P>(Hint: it might be useful to write a <CODE>combine</CODE> procedure that uses either
+<CODE>word</CODE> or <CODE>sentence</CODE> depending on the types of its arguments.)
+
+
+<P>
+<B>19.3</B>&nbsp;&nbsp;Write the three-argument version of <CODE>accumulate</CODE> that we described.
+
+<P><PRE>&gt; (three-arg-accumulate + 0 '(4 5 6))
+15
+
+&gt; (three-arg-accumulate + 0 '())
+0
+
+&gt; (three-arg-accumulate cons '() '(a b c d e))
+(A B C D E)
+</PRE>
+
+<P>
+<B>19.4</B>&nbsp;&nbsp;Our <CODE>accumulate</CODE> combines elements from right to left.  That is,
+
+<P><PRE>(accumulate - '(2 3 4 5))
+</PRE>
+
+<P>computes 2&minus;(3&minus;(4&minus;5)).  Write <CODE>left-accumulate</CODE>, which
+will compute ((2&minus;3)&minus;4)&minus;5 instead.  (The result will be the same for
+an operation such as <CODE>+</CODE>, for which grouping order doesn't matter, but
+will be different for <CODE>-</CODE>.)
+
+
+<P>
+<B>19.5</B>&nbsp;&nbsp;Rewrite the <CODE>true-for-all?</CODE> procedure from Exercise <A HREF="../ssch8/higher.html#trueforall">8.10</A>.
+Do not use <CODE>every</CODE>, <CODE>keep</CODE>, or <CODE>accumulate</CODE>.
+
+
+<P>
+<B>19.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g22"></A>true-for-any-pair?</CODE> that takes a predicate and a
+sentence as arguments.  The predicate must accept two words as its arguments.
+Your procedure should return <CODE>#t</CODE> if the argument predicate will return
+true for any two adjacent words in the sentence:
+<A NAME="exanypair"></A>
+
+<P><PRE>&gt; (true-for-any-pair? equal? '(a b c b a))
+#F
+
+&gt; (true-for-any-pair? equal? '(a b c c d))
+#T
+
+&gt; (true-for-any-pair? &lt; '(20 16 5 8 6))      ;; 5 is less than 8
+#T
+</PRE>
+
+<P>
+<B>19.7</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g23"></A>true-for-all-pairs?</CODE> that takes a predicate
+and a sentence as arguments.  The predicate must accept two words as its
+arguments.  Your procedure should return <CODE>#t</CODE> if the argument predicate
+will return true for <EM>every</EM> two adjacent words in the sentence:
+<A NAME="exallpairs"></A>
+
+<P><PRE>&gt; (true-for-all-pairs? equal? '(a b c c d))
+#F
+
+&gt; (true-for-all-pairs? equal? '(a a a a a))
+#T
+
+&gt; (true-for-all-pairs? &lt; '(20 16 5 8 6))
+#F
+
+&gt; (true-for-all-pairs? &lt; '(3 7 19 22 43))
+#T
+</PRE>
+
+<P>
+<B>19.8</B>&nbsp;&nbsp;Rewrite <CODE>true-for-all-pairs?</CODE> (Exercise <A HREF="implement-hof.html#exallpairs">19.7</A>) using <CODE>true-for-any-pair?</CODE> (Exercise <A HREF="implement-hof.html#exanypair">19.6</A>) as a helper procedure.  Don't use
+recursion in solving this problem (except for the recursion you've already
+used to write <CODE>true-for-any-pair?</CODE>).  Hint:  You'll find the <CODE>not</CODE>
+procedure helpful.
+
+
+<P>
+<B>19.9</B>&nbsp;&nbsp;Rewrite either of the sort procedures from Chapter 15 to take two
+arguments, a list and a predicate.  It should sort the elements of that list
+according to the given predicate:
+
+<P><PRE>&gt; (sort '(4 23 7 5 16 3) &lt;)
+(3 4 5 7 16 23)
+
+&gt; (sort '(4 23 7 5 16 3) &gt;)
+(23 16 7 5 4 3)
+
+&gt; (sort '(john paul george ringo) before?)
+(GEORGE JOHN PAUL RINGO)
+</PRE>
+
+<P>
+<B>19.10</B>&nbsp;&nbsp;Write <CODE>tree-map</CODE>, analogous to our <CODE>deep-map</CODE>, but for trees, using
+the <CODE>datum</CODE> and <CODE>children</CODE> selectors.
+
+
+<P>
+<B>19.11</B>&nbsp;&nbsp;Write <CODE>repeated</CODE>.  (This is a hard exercise!)
+
+
+<P>
+<B>19.12</B>&nbsp;&nbsp;Write <CODE>tree-reduce</CODE>.  You may assume that the combiner argument can
+be invoked with no arguments.
+
+<P><PRE>&gt; (tree-reduce
+   +
+   (make-node 3 (list (make-node 4 '())
+		      (make-node 7 '())
+		      (make-node 2 (list (make-node 3 '())
+					 (make-node 8 '()))))))
+27
+</PRE>
+
+<P>
+<B>19.13</B>&nbsp;&nbsp;Write <CODE>deep-reduce</CODE>, similar to <CODE>tree-reduce</CODE>, but for structured
+lists:
+
+<P><PRE>&gt; (deep-reduce word '(r ((a (m b) (l)) (e (r)))))
+RAMBLER
+</PRE>
+
+
+<P>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch18/trees.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch20/part6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch2/functions b/js/games/nluqo.github.io/~bh/ssch2/functions
new file mode 100644
index 0000000..19611ad
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch2/functions
@@ -0,0 +1,573 @@
+\input bkmacs
+\photo{The function $f(x,y)=\sin xy$ plotted by
+computer}{\pagetag{\graph}\pspicture{4in}{plot}{plot3d}{\TrimBoundingBox{8pt}}}
+\chapter{Functions}
+\chaptag{\functions}
+
+Throughout most of this book we're going to be using a technique called {\it
+\bkidx{functional}{programming}.\/} We can't give a complete definition of
+this term yet, but in this chapter we introduce the building block of
+functional programming, the {\it \idx{function}.\/}
+
+Basically we mean by ``function'' the same thing that your high school
+algebra teacher meant, except that our functions don't necessarily relate to
+numbers.  But the essential idea is just like the kind of function described
+by $f(x)=6x-2$.  In that example, $f$ is the name of a function; that
+function takes an {\it argument\/} called $x$, which is a number, and {\it
+\idx{return}s\/} some other number.
+
+In this chapter you are going to use the computer to explore functions,
+but you are {\it not\/} going to use the standard Scheme notation as in the
+rest of the book.  That's because, in this chapter, we want to separate the
+idea of functions from the complexities of programming language notation.
+For example, real Scheme notation lets you write expressions that involve
+more than one function, but in this chapter you can only use one at a time.
+
+To get into this chapter's special computer interface, first start
+running Scheme as you did in the first chapter, then type
+
+{\prgex%
+(load "functions.scm")
+}
+
+\noindent to tell Scheme to read the program you'll be using.  (If you have
+trouble loading the program, look in Appendix A for further information
+about {\tt load}.)  Then, to start the program, type
+
+{\prgex%
+(functions)
+}
+
+\noindent You'll then be able to carry out interactions like the
+following.\footnt{If you get no response at all after you type
+{\tt (functions)}, just press the Return or Enter key
+again.  Tell your instructor to read
+Appendix A to see how to fix this.} In the text below we've
+printed what {\it you\/} type in {\tt \pmb{boldface}} and what the {\it
+computer\/} types in {\tt lightface} printing:
+
+{\prgex%
+Function: \pmb{+}
+Argument: \pmb{3}
+Argument: \pmb{5}
+
+The result is: 8
+
+Function: \pmb{sqrt}
+Argument: \pmb{144}
+
+The result is: 12
+}
+
+\noindent As you can see, different functions can have different numbers of
+arguments.  In these examples we added two numbers, and we took the square
+root of one number.  However, every function gives exactly one result each
+time we use it.
+
+To leave the {\tt functions} program, type {\tt exit} when it asks for a
+function.
+
+\subhd{Arithmetic}
+
+Experiment with these \bkidx{arithmetic}{function}s: {\tt
++}, {\tt -}, {\tt *}, {\tt
+/}, {\tt sqrt}, {\tt
+quotient}, {\tt
+remainder}, {\tt
+random}, {\tt round}, {\tt max}, and {\tt expt}.
+Try different kinds of numbers, including integers and numbers with decimal
+fractions.  What if you try to divide by zero?  Throughout this chapter we
+are going to let you experiment with functions rather than just give you a
+long, boring list of how each one works.  (The boring list is available for
+reference on page \funlist.)
+
+Try these:
+
+\vskip -5pt
+{\prgex%
+Function: /
+Argument: 1
+Argument: 987654321987654321
+
+Function: remainder 
+Argument: 12
+Argument: -5
+
+Function: round
+Argument: 17.5
+}
+
+\noindent These are just a few suggestions.  Be creative; don't just type in
+our examples.
+
+\backskipsubhd{Words}{5}
+
+Not all Scheme functions deal with numbers.  A broader category of
+argument is the {\it \idx{word},\/} including numbers but also
+including English words like {\tt spaghetti} or {\tt xylophone}.
+Even a meaningless sequence of letters and digits such as {\tt
+glo87rp} is considered a word.\footnt{Certain punctuation characters
+can also be used in words, but let's defer the details until you've
+gotten to know the word functions with simpler examples.} Try these
+functions that accept words as arguments: {\tt first}, {\tt
+butfirst}, {\tt last}, {\tt butlast}, {\tt word}, and {\tt count}.
+What happens if you use a number as the argument to one of these?
+
+{\prgex\blskip{3}%
+Function: butfirst
+Argument: a
+
+Function: count
+Argument: 765432
+}
+
+So far most of our functions fall into one of two categories:\ the
+arithmetic functions, which require numbers as arguments and return a number
+as the result; and the word functions, which accept words as
+arguments and return a word as the result.  The one exception we've seen is
+{\tt count}.  What kind of argument does {\tt count} accept?  What kind of
+value does it return?  The technical term for ``a kind of data'' is a
+{\it \idx{type}.}
+
+In principle you could think of almost anything as a type, such as ``numbers
+that contain the digit {\tt 7}.'' Such {\it ad hoc\/} types are legitimate
+and sometimes useful, but there are also official types that Scheme knows
+about.  Types can overlap; for example, numbers are also considered words.
+
+{\prgex\blskip{3}%
+Function: word
+Argument: 3.14
+Argument: 1592654
+
+Function: +
+Argument: 6
+Argument: seven
+}
+
+\subhd{Domain and Range}
+
+The technical term for ``the things that a function accepts as an argument''
+is the {\it \idx{domain}\/} of the function.  The name for ``the things that
+a function returns'' is its {\it \idx{range}.\/}  So the domain of {\tt
+count} is words, and the range of {\tt count} is numbers (in fact,
+nonnegative integers).  This example shows that the range may not be exactly
+one of our standard data types; there is no ``nonnegative integer'' type in
+Scheme.
+
+How do you talk about the domain and range of a function?  You could say, for
+example, ``The {\tt cos} function has numbers as its domain and numbers
+between $-1$ and 1 as its range.'' Or, informally, you may also say ``{\tt
+Cos} takes a number as its argument and returns a number between $-1$ and
+1.''\footnt{Unless your version of Scheme has complex numbers.}
+
+For functions of two or more arguments, the language is a little less
+straightforward.  The informal version still works: ``{\tt Remainder} takes
+two integers as arguments and returns an integer.'' But you can't say ``The
+domain of {\tt remainder} is two integers,'' because the domain of a
+function is the {\it set\/} of all possible arguments, not just a statement
+about the characteristics of legal arguments.\footnt{Real mathematicians
+say, ``The domain of {\tt remainder} is the Cartesian cross product of the
+integers and the integers.'' In order to avoid that mouthful, we'll just use
+the informal wording.}
+
+(By the way, we're making certain simplifications in this chapter.  For
+example, Scheme's {\tt +}~function can actually accept any number of
+arguments, not just two.  But we don't want to go into all the bells and
+whistles at once, so we'll start with adding two numbers at a time.)
+
+Here are examples that illustrate the domains of some functions:
+
+{\prgex%
+Function: expt
+Argument: -3
+Argument: .5
+
+Function: expt
+Argument: -3
+Argument: -3
+
+Function: remainder
+Argument: 5
+Argument: 0
+}
+
+\subhd{More Types:\ Sentences and Booleans}
+
+We're going to introduce more data types, and more functions that include
+those types in their domain or range.  The next type is the {\it
+\idx{sentence}:\/}\ a bunch of words enclosed in parentheses, such as
+
+{\prgex%
+(all you need is love)
+}
+
+\noindent (Don't include any punctuation characters within the sentence.)
+Many of the functions that accept words in their domain will also accept
+sentences.  There is also a function {\tt sentence} that accepts words and
+sentences.  Try examples like {\tt butfirst} of a sentence.
+
+{\prgex%
+Function: sentence
+Argument: (when i get)
+Argument: home
+
+Function: butfirst
+Argument: (yer blues)
+
+Function: butlast
+Argument: ()
+}
+
+Other important functions are used to ask yes-or-no questions.  That is, the
+range of these functions contains only two values, one meaning ``true'' and
+the other meaning ``false.'' Try the numeric comparisons {\tt
+=}, {\tt <}, {\tt
+>}, {\tt <=}, and {\tt
+>=}, and the functions {\tt
+equal?}\ and {\tt
+member?}\ that work on words and sentences.  (The
+question mark is part of the name of the function.)  There are also
+functions {\tt and}, {\tt or},
+and {\tt not} whose domain and range are both
+true-false values.  The two values ``true'' and ``false'' are called {\it
+\idx{Boolean}s,\/} named after \swapidx{George}{Boole} (1815--1864), who
+developed the formal tools used for true-false values in mathematics.
+
+What good are these true-false values?  Often a program must choose between
+two options:  If the number is positive, do this; if negative, do that.
+Scheme has functions to make such choices based on true-false values.  For
+now, you can experiment with the {\tt if} function.  Its first argument must
+be true or false; the others can be anything.
+
+\subhd{Our Favorite Type: Functions}
+
+So far our data types include numbers, words, sentences, and Booleans.
+\justidx{function as data}
+Scheme has several more data types, but for now we'll just consider one
+more.  A {\it function\/} can be used as data.  Here's an example:
+
+{\prgex%
+Function: number-of-arguments
+Argument: equal?
+
+The result is: 2
+}
+
+\noindent The range of {\tt number-of-arguments} is nonnegative integers.  But
+its domain is {\it functions.\/}  For example, try using it as an argument to
+itself!
+
+If you've used other computer programming languages, it may seem strange
+to use a function---that is, a part of a computer program---as data.
+Most languages make a sharp distinction between program and data.  We'll
+soon see that the ability to treat functions as data helps make Scheme
+programming very powerful and convenient.
+
+Try these examples:
+
+{\prgex%
+Function: every
+Argument: first
+Argument: (the long and winding road)
+
+Function: keep
+Argument: vowel?
+Argument: constantinople
+}
+
+\noindent Think carefully about these.  You aren't applying the function
+{\tt first} to the sentence {\tt (the long and winding road)}; you're applying
+the function {\tt every} to a function and a sentence.
+
+Other functions that can be used with {\tt keep} include {\tt even?} and
+{\tt odd?}, whose domains are the integers, and {\tt number?}, whose domain
+is everything.
+
+\subhd{Play with It}
+
+If you've been reading the book but not trying things out on the computer as
+you go along, get to work!  Spend some time getting used to these ideas and
+thinking about them.  When you're done, read ahead.
+
+\subhd{Thinking about What You've Done}
+
+The idea of {\it function\/} is at the heart of both mathematics and
+computer science.  For example, when mathematicians want to think very
+formally about the system of numbers, they use functions to create the
+integers.  They say, let's suppose we have one number, called zero; then
+let's suppose we have the {\it function\/} given by $f(x)=x+1$.  By applying
+that function repeatedly, we can create $1=f(0)$, then $2=f(1)$, and so on.
+
+Functions are important in computer science because they give us a way to
+think about {\it process\/}---in simple English, a way to think about
+something happening, something changing.  A function embodies a {\it
+transformation\/} of information, taking in something we know and returning
+something we didn't know.  That's what computers do:  They transform
+information to produce new results.
+
+A lot of the mathematics taught in school is about numbers, but
+we've seen that functions don't have to be about numbers.  We've
+used functions of words and sentences, such as {\tt first}, and even
+functions of functions, such as {\tt keep}.  You can imagine functions
+that transform information of any kind at all, such as the function
+\hbox{French(window)=fen\^etre} or the function
+\hbox{capital(California)=Sacramento}.
+
+You've done a lot of thinking about the {\it domain\/} and {\it range\/}
+of functions.  You can add two numbers, but it doesn't make sense to add
+two words that aren't numbers.  Some two-argument functions have complicated
+domains because the acceptable values for one argument depend on the
+specific value used for the other one.  (The function {\tt expt} is an
+example; make sure you've tried both positive and negative numbers, and
+fractional as well as whole-number powers.)
+
+Part of the definition of a function is that you always get the same answer
+whenever you call a function with the same argument(s).  The value returned
+by the function, in other words, shouldn't change regardless of anything
+else you may have computed meanwhile.  One of the ``functions'' you've
+explored in this chapter isn't a real function according to this rule; which
+one?  The rule may seem too restrictive, and indeed it's often convenient to
+use the name ``function'' loosely for processes that can give different
+results in different circumstances.  But we'll see that sometimes it's
+important to stick with the strict definition and refrain from using
+processes that aren't truly functions.
+
+We've hinted at two different ways of thinking about functions.  The first
+is called {\it \idx{function as process}.\/} Here, a function is a rule that
+tells us how to transform some information into some other information.  The
+function is just a rule, not a thing in its own right.  The actual
+``things'' are the words or numbers or whatever the function manipulates.
+The second way of thinking is called {\it \idx{function as object}.\/}  In
+this view, a function is a perfectly good ``thing'' in itself.  We can use a
+function as an argument to another function, for example.  Research with
+college math students shows that this second idea is hard for
+most people, but it's worth the effort because you'll see that {\it
+\bkidx{higher-order}{function}s\/} (functions of functions) like {\tt keep}
+and {\tt every} can make programs much easier to write.
+
+As a homey analogy, think about a carrot peeler.  If we focus our attention
+on the carrots---which are, after all, what we want to eat---then the peeler
+just represents a process.  We are peeling carrots.  We are applying the
+function {\tt peel} to carrots.  It's the carrot that counts.  But we can
+also think about the peeler as a thing in its own right, when we clean it,
+or worry about whether its blade is sharp enough.
+
+\looseness=-1
+The big idea that we {\it haven't\/} explored in this chapter (although we
+used it a lot in Chapter \showing) is the {\it composition\/} of functions:\
+using the result from one function as an argument to another function.  It's
+a crucial idea; we write large programs by defining a bunch of small
+functions and then composing them with each other to produce the desired
+result.  We'll start doing that in the next chapter, where we return to
+real Scheme notation.
+
+\esubhd{Exercises}
+
+{\it Use the\/} {\tt functions} {\it program for all these exercises.}
+
+{\exercise
+In each line of the following table we've left out one piece of
+information.  Fill in the missing details.
+
+\smallskip
+\def\tabRule{\noalign{\hrule}}
+\def\two#1{\omit\span #1\hfil}
+\noindent \hfil \vbox{\offinterlineskip
+\baselineskip=12pt
+\halign{\strut \vrule\enspace\hfil#\hfil & %function
+\enspace\vrule\enspace\hfil#\hfil &%arg1
+\enspace\vrule\enspace\hfil#\hfil &%arg2
+\enspace\vrule\enspace\hfil#\hfil\enspace\vrule \cr%result
+\tabRule
+function&arg 1&arg 2&result\cr
+\tabRule
+\tabRule
+{\tt word}&{\tt now}&{\tt here}&\cr
+\tabRule
+{\tt sentence}&{\tt now}&{\tt here}&\cr
+\tabRule
+{\tt first}&{\tt blackbird}&none&\cr
+\tabRule
+{\tt first}&{\tt (blackbird)}&none&\cr
+\tabRule
+&{\tt 3}&{\tt 4}&{\tt 7}\cr
+\tabRule
+{\tt every}&&{\tt (thank you girl)}&{\tt (hank ou irl)}\cr
+\tabRule
+{\tt member?}&{\tt e}&{\tt aardvark}&\cr
+\tabRule
+{\tt member?}&{\tt the}&&{\tt \#t}\cr
+\tabRule
+{\tt keep}&{\tt vowel?}&{\tt (i will)}&\cr
+\tabRule
+{\tt keep}&{\tt vowel?}&&{\tt eieio}\pgfoot\cr
+\tabRule
+{\tt last}&{\tt ()}&none&\cr
+\tabRule
+&{\tt last}&{\tt (honey pie)}&{\tt (y e)}\cr
+\tabRule
+&&{\tt taxman}&{\tt aa}\cr
+\tabRule
+}}\hfil}
+\vfootnt{Yes, there is an English
+word.  It has to do with astronomy.}
+
+\solution
+
+{\prgex%
+NOWHERE
+(NOW HERE)
+B
+BLACKBIRD
++
+BUTFIRST
+#F
+(ANY SENTENCE CONTAINING THE WORD THE)
+(I)
+PERIHELION
+{\rm{}Domain error}
+EVERY
+KEEP VOWEL?
+}
+
+Note that the parentheses matter!  For example, {\tt (I)} is different from
+{\tt I}.
+@
+
+\goodbreak
+{\exercise 
+What is the domain of the {\tt vowel?}\ function?
+}
+
+\solution
+The domain of {\tt vowel?} is anything.  (The domain is the set of arguments for
+which the function is defined---that is, it doesn't give an error---not
+the set of arguments for which it returns {\tt #t}.)
+@
+
+{\exercise
+One of the functions you can use is called {\tt appearances}.  Experiment
+with it, and then describe fully its domain and range, and what it does.
+(Make sure to try lots of cases.  Hint: Think about its name.)
+}
+
+\solution
+Domain: {\tt appearances} takes two arguments.  The second argument can be
+any word or sentence.  If the second argument is a sentence, then the first
+can be any word.  If the second argument is a word, then the first must be a
+one-letter word.
+
+Range: Nonnegative integers.
+
+{\tt Appearances} returns the number of times that the first argument appears
+as an element of the second (as a word in the sentence, or as a letter in
+the word).
+@
+
+{\exercise
+One of the functions you can use is called {\tt item}.  Experiment
+with it, and then describe fully its domain and range, and what it does.
+}
+
+\solution
+Domain: {\tt Item} takes two arguments.  The second can be any nonempty word
+or sentence.  The first must be a positive integer less than or equal to the
+number of elements in the second argument.
+
+Range:  Words.  (If the second argument is a
+sentence, then {\tt item} returns a word.  If the second argument
+is a word, then {\tt item} returns a one-letter word.)
+
+{\tt Item} returns an element of its second argument (a letter of the word,
+or a word of the sentence) chosen according to the numeric first argument.
+If the first argument is $n$, then {\tt item} returns the $n$th element of the
+second argument.
+@
+
+\vskip1cm
+
+The following exercises ask for functions that meet certain criteria.  For
+your convenience, here are the functions in this chapter:  {\tt
++}, {\tt -}, {\tt /}, {\tt <=}, {\tt <}, {\tt =}, {\tt >=}, {\tt >}, {\tt
+and}, {\tt appearances}, {\tt butfirst}, {\tt butlast}, {\tt cos}, {\tt
+count}, {\tt equal?}, {\tt every}, {\tt even?}, {\tt expt}, {\tt first},
+{\tt if}, {\tt item}, {\tt keep}, {\tt last}, {\tt max}, {\tt member?}, {\tt
+not}, {\tt number?}, {\tt number-of-arguments}, {\tt odd?}, {\tt or}, {\tt
+quotient}, {\tt random}, {\tt remainder}, {\tt round}, {\tt sentence}, {\tt
+sqrt}, {\tt vowel?}, and {\tt word}.
+
+{\exercise 
+List the one-argument functions in this chapter for which the type of the
+return value is always different from the type of the argument.
+}
+
+\solution
+The domain of {\tt number-of-arguments} is functions, while the range is
+numbers.  The domain of {\tt even?} and {\tt odd?} is numbers, while
+their range is Booleans.
+
+@
+
+{\exercise 
+List the one-argument functions in this chapter for which the type of the
+return value is sometimes different from the type of the argument.}
+
+\solution
+In addition to the above:
+
+{\parskip=0pt\parindent=0pt\obeylines
+{\tt first}: Domain includes sentences, range is words.
+{\tt last}:  (Ditto).
+{\tt count}:  Domain includes sentences, range is numbers.
+{\tt round}: Domain is all numbers, range is just integers.
+
+}
+
+Also, most of the type predicates, such as {\tt number?} and
+{\tt vowel?}, accept anything as argument, but return only
+Booleans.
+@
+
+{\exercise
+\extag{\exoperator}
+Mathematicians sometimes use the term ``operator'' to mean a function of two
+arguments, both of the same type, that returns a result of the same type.
+Which of the functions you've seen in this chapter satisfy that definition?
+}
+
+\solution
+The operators in this chapter are {\tt +}, {\tt -}, {\tt *}, {\tt /}, {\tt
+and}, {\tt expt}, {\tt max}, {\tt min}, {\tt or}, {\tt quotient}, {\tt
+remainder}, and {\tt word}.
+
+You could also conceivably count {\tt equal?}, {\tt item},
+and {\tt sentence}.  For these functions, only {\it some\/} of the
+possible arguments are in the range.
+@
+
+{\exercise
+An operator $f$ is {\it commutative\/} if
+$f(a,b)=f(b,a)$ for all possible arguments $a$ and $b$.  For example,
+{\tt +} is commutative, but {\tt word} isn't.  Which of the
+operators from Exercise \exoperator\ are commutative?
+}
+
+\solution
+The commutative operators are {\tt +}, {\tt *}, {\tt and}, {\tt max}, {\tt
+min}, and {\tt or}.  {\tt Equal?} is also commutative, if you
+count it as an operator.
+@
+
+{\exercise
+An operator $f$ is {\it associative\/} if
+$f(f(a,b),c)=f(a,f(b,c))$ for all possible arguments $a$, $b$, and $c$.
+For example, {\tt *} is associative, but not {\tt /}.
+Which of the operators from Exercise \exoperator\ are associative?
+}
+
+\solution
+The associative operators are {\tt +}, {\tt *}, {\tt and}, {\tt max}, {\tt
+min}, {\tt or}, {\tt sentence}, and {\tt word}.
+@
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch2/functions.html b/js/games/nluqo.github.io/~bh/ssch2/functions.html
new file mode 100644
index 0000000..dd62b25
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch2/functions.html
@@ -0,0 +1,459 @@
+<P>
+
+<P><A NAME="graph"></A><CENTER><IMG SRC="../ss-pics/plot3d.jpg" ALT="figure: plot3d"></CENTER><P><CENTER>The function <EM>f</EM>(<EM>x,y</EM>)=sin <EM>xy</EM> plotted by
+computer
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 2: Functions</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 2</H2>
+<H1>Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch02.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch1/showing.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch3/part2.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>Throughout most of this book we're going to be using a technique called <EM><A NAME="g1"></A><A NAME="g2"></A>functional programming.</EM> We can't give a complete definition of
+this term yet, but in this chapter we introduce the building block of
+functional programming, the <EM>function.</EM>
+
+<P>Basically we mean by &quot;function&quot; the same thing that your high school
+algebra teacher meant, except that our functions don't necessarily relate to
+numbers.  But the essential idea is just like the kind of function described
+by <EM>f</EM>(<EM>x</EM>)=6<EM>x</EM>&minus;2.  In that example, <EM>f</EM> is the name of a function; that
+function takes an <EM>argument</EM> called <EM>x</EM>, which is a number, and <EM>returns</EM> some other number.
+
+<P>In this chapter you are going to use the computer to explore functions,
+but you are <EM>not</EM> going to use the standard Scheme notation as in the
+rest of the book.  That's because, in this chapter, we want to separate the
+idea of functions from the complexities of programming language notation.
+For example, real Scheme notation lets you write expressions that involve
+more than one function, but in this chapter you can only use one at a time.
+
+<P>To get into this chapter's special computer interface, first start
+running Scheme as you did in the first chapter, then type
+
+<P><PRE>(load &quot;functions.scm&quot;)
+</PRE>
+
+<P>to tell Scheme to read the program you'll be using.  (If you have
+trouble loading the program, look in Appendix A for further information
+about <CODE>load</CODE>.)  Then, to start the program, type
+
+<P><PRE>(functions)
+</PRE>
+
+<P>You'll then be able to carry out interactions like the
+following.<A NAME="text1" HREF="functions.html#ft1">[1]</A> In the text below we've
+printed what <EM>you</EM> type in <CODE><B>boldface</B></CODE> and what the <EM>computer</EM> types in <CODE>lightface</CODE> printing:
+
+<P><PRE>Function: <B>+</B>
+Argument: <B>3</B>
+Argument: <B>5</B>
+
+The result is: 8
+
+Function: <B>sqrt</B>
+Argument: <B>144</B>
+
+The result is: 12
+</PRE>
+
+<P>As you can see, different functions can have different numbers of
+arguments.  In these examples we added two numbers, and we took the square
+root of one number.  However, every function gives exactly one result each
+time we use it.
+
+<P>To leave the <CODE>functions</CODE> program, type <CODE>exit</CODE> when it asks for a
+function.
+
+<P><H2>Arithmetic</H2>
+
+<P>Experiment with these <A NAME="g3"></A><A NAME="g4"></A>arithmetic functions: <CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>, <CODE>sqrt</CODE>, <CODE>quotient</CODE>, <CODE>remainder</CODE>, <CODE>random</CODE>, <CODE>round</CODE>, <CODE>max</CODE>, and <CODE>expt</CODE>.
+Try different kinds of numbers, including integers and numbers with decimal
+fractions.  What if you try to divide by zero?  Throughout this chapter we
+are going to let you experiment with functions rather than just give you a
+long, boring list of how each one works.  (The boring list is available for
+reference on page <A HREF="../ssch27/appendix-funlist.html#funlist">funlist</A>.)
+
+<P>Try these:
+
+<P>
+<PRE>Function: /
+Argument: 1
+Argument: 987654321987654321
+
+Function: remainder 
+Argument: 12
+Argument: -5
+
+Function: round
+Argument: 17.5
+</PRE>
+
+<P>These are just a few suggestions.  Be creative; don't just type in
+our examples.
+
+<P><H2>Words</H2>
+
+<P>Not all Scheme functions deal with numbers.  A broader category of
+argument is the <EM>word,</EM> including numbers but also
+including English words like <CODE>spaghetti</CODE> or <CODE>xylophone</CODE>.
+Even a meaningless sequence of letters and digits such as <CODE>glo87rp</CODE> is considered a word.<A NAME="text2" HREF="functions.html#ft2">[2]</A> Try these
+functions that accept words as arguments: <CODE>first</CODE>, <CODE>butfirst</CODE>, <CODE>last</CODE>, <CODE>butlast</CODE>, <CODE>word</CODE>, and <CODE>count</CODE>.
+What happens if you use a number as the argument to one of these?
+
+<P><PRE>Function: butfirst
+Argument: a
+
+Function: count
+Argument: 765432
+</PRE>
+
+<P>So far most of our functions fall into one of two categories: the
+arithmetic functions, which require numbers as arguments and return a number
+as the result; and the word functions, which accept words as
+arguments and return a word as the result.  The one exception we've seen is
+<CODE>count</CODE>.  What kind of argument does <CODE>count</CODE> accept?  What kind of
+value does it return?  The technical term for &quot;a kind of data&quot; is a
+<EM>type.</EM>
+
+<P>In principle you could think of almost anything as a type, such as &quot;numbers
+that contain the digit <CODE>7</CODE>.&quot; Such <EM>ad hoc</EM> types are legitimate
+and sometimes useful, but there are also official types that Scheme knows
+about.  Types can overlap; for example, numbers are also considered words.
+
+<P><PRE>Function: word
+Argument: 3.14
+Argument: 1592654
+
+Function: +
+Argument: 6
+Argument: seven
+</PRE>
+
+<P><H2>Domain and Range</H2>
+
+<P>The technical term for &quot;the things that a function accepts as an argument&quot;
+is the <EM>domain</EM> of the function.  The name for &quot;the things that
+a function returns&quot; is its <EM>range.</EM>  So the domain of <CODE>count</CODE> is words, and the range of <CODE>count</CODE> is numbers (in fact,
+nonnegative integers).  This example shows that the range may not be exactly
+one of our standard data types; there is no &quot;nonnegative integer&quot; type in
+Scheme.
+
+<P>How do you talk about the domain and range of a function?  You could say, for
+example, &quot;The <CODE>cos</CODE> function has numbers as its domain and numbers
+between &minus;1 and 1 as its range.&quot; Or, informally, you may also say &quot;<CODE>Cos</CODE> takes a number as its argument and returns a number between &minus;1 and
+1.&quot;<A NAME="text3" HREF="functions.html#ft3">[3]</A>
+
+<P>For functions of two or more arguments, the language is a little less
+straightforward.  The informal version still works: &quot;<CODE>Remainder</CODE> takes
+two integers as arguments and returns an integer.&quot; But you can't say &quot;The
+domain of <CODE>remainder</CODE> is two integers,&quot; because the domain of a
+function is the <EM>set</EM> of all possible arguments, not just a statement
+about the characteristics of legal arguments.<A NAME="text4" HREF="functions.html#ft4">[4]</A>
+
+<P>(By the way, we're making certain simplifications in this chapter.  For
+example, Scheme's <CODE>+</CODE> function can actually accept any number of
+arguments, not just two.  But we don't want to go into all the bells and
+whistles at once, so we'll start with adding two numbers at a time.)
+
+<P>Here are examples that illustrate the domains of some functions:
+
+<P><PRE>Function: expt
+Argument: -3
+Argument: .5
+
+Function: expt
+Argument: -3
+Argument: -3
+
+Function: remainder
+Argument: 5
+Argument: 0
+</PRE>
+
+<P><H2>More Types: Sentences and Booleans</H2>
+
+<P>We're going to introduce more data types, and more functions that include
+those types in their domain or range.  The next type is the <EM>sentence:</EM> a bunch of words enclosed in parentheses, such as
+
+<P><PRE>(all you need is love)
+</PRE>
+
+<P>(Don't include any punctuation characters within the sentence.)
+Many of the functions that accept words in their domain will also accept
+sentences.  There is also a function <CODE>sentence</CODE> that accepts words and
+sentences.  Try examples like <CODE>butfirst</CODE> of a sentence.
+
+<P><PRE>Function: sentence
+Argument: (when i get)
+Argument: home
+
+Function: butfirst
+Argument: (yer blues)
+
+Function: butlast
+Argument: ()
+</PRE>
+
+<P>Other important functions are used to ask yes-or-no questions.  That is, the
+range of these functions contains only two values, one meaning &quot;true&quot; and
+the other meaning &quot;false.&quot; Try the numeric comparisons <CODE>=</CODE>, <CODE>&lt;</CODE>, <CODE>&gt;</CODE>, <CODE>&lt;=</CODE>, and <CODE>&gt;=</CODE>, and the functions <CODE>equal?</CODE> and <CODE>member?</CODE> that work on words and sentences.  (The
+question mark is part of the name of the function.)  There are also
+functions <CODE>and</CODE>, <CODE>or</CODE>,
+and <CODE>not</CODE> whose domain and range are both
+true-false values.  The two values &quot;true&quot; and &quot;false&quot; are called <EM>Booleans,</EM> named after <A NAME="g5"></A>George Boole (1815-1864), who
+developed the formal tools used for true-false values in mathematics.
+
+<P>What good are these true-false values?  Often a program must choose between
+two options:  If the number is positive, do this; if negative, do that.
+Scheme has functions to make such choices based on true-false values.  For
+now, you can experiment with the <CODE>if</CODE> function.  Its first argument must
+be true or false; the others can be anything.
+
+<P><H2>Our Favorite Type: Functions</H2>
+
+<P>So far our data types include numbers, words, sentences, and Booleans.
+<A NAME="g6"></A>
+Scheme has several more data types, but for now we'll just consider one
+more.  A <EM>function</EM> can be used as data.  Here's an example:
+
+<P><PRE>Function: number-of-arguments
+Argument: equal?
+
+The result is: 2
+</PRE>
+
+<P>The range of <CODE>number-of-arguments</CODE> is nonnegative integers.  But
+its domain is <EM>functions.</EM>  For example, try using it as an argument to
+itself!
+
+<P>If you've used other computer programming languages, it may seem strange
+to use a function&mdash;that is, a part of a computer program&mdash;as data.
+Most languages make a sharp distinction between program and data.  We'll
+soon see that the ability to treat functions as data helps make Scheme
+programming very powerful and convenient.
+
+<P>Try these examples:
+
+<P><PRE>Function: every
+Argument: first
+Argument: (the long and winding road)
+
+Function: keep
+Argument: vowel?
+Argument: constantinople
+</PRE>
+
+<P>Think carefully about these.  You aren't applying the function
+<CODE>first</CODE> to the sentence <CODE>(the long and winding road)</CODE>; you're applying
+the function <CODE>every</CODE> to a function and a sentence.
+
+<P>Other functions that can be used with <CODE>keep</CODE> include <CODE>even?</CODE> and
+<CODE>odd?</CODE>, whose domains are the integers, and <CODE>number?</CODE>, whose domain
+is everything.
+
+<P><H2>Play with It</H2>
+
+<P>If you've been reading the book but not trying things out on the computer as
+you go along, get to work!  Spend some time getting used to these ideas and
+thinking about them.  When you're done, read ahead.
+
+<P><H2>Thinking about What You've Done</H2>
+
+<P>The idea of <EM>function</EM> is at the heart of both mathematics and
+computer science.  For example, when mathematicians want to think very
+formally about the system of numbers, they use functions to create the
+integers.  They say, let's suppose we have one number, called zero; then
+let's suppose we have the <EM>function</EM> given by <EM>f</EM>(<EM>x</EM>)=<EM>x</EM>+1.  By applying
+that function repeatedly, we can create 1=<EM>f</EM>(0), then 2=<EM>f</EM>(1), and so on.
+
+<P>Functions are important in computer science because they give us a way to
+think about <EM>process</EM>&mdash;in simple English, a way to think about
+something happening, something changing.  A function embodies a <EM>transformation</EM> of information, taking in something we know and returning
+something we didn't know.  That's what computers do:  They transform
+information to produce new results.
+
+<P>A lot of the mathematics taught in school is about numbers, but
+we've seen that functions don't have to be about numbers.  We've
+used functions of words and sentences, such as <CODE>first</CODE>, and even
+functions of functions, such as <CODE>keep</CODE>.  You can imagine functions
+that transform information of any kind at all, such as the function
+French(window)=fen&ecirc;tre or the function
+capital(California)=Sacramento.
+
+<P>You've done a lot of thinking about the <EM>domain</EM> and <EM>range</EM>
+of functions.  You can add two numbers, but it doesn't make sense to add
+two words that aren't numbers.  Some two-argument functions have complicated
+domains because the acceptable values for one argument depend on the
+specific value used for the other one.  (The function <CODE>expt</CODE> is an
+example; make sure you've tried both positive and negative numbers, and
+fractional as well as whole-number powers.)
+
+<P>Part of the definition of a function is that you always get the same answer
+whenever you call a function with the same argument(s).  The value returned
+by the function, in other words, shouldn't change regardless of anything
+else you may have computed meanwhile.  One of the &quot;functions&quot; you've
+explored in this chapter isn't a real function according to this rule; which
+one?  The rule may seem too restrictive, and indeed it's often convenient to
+use the name &quot;function&quot; loosely for processes that can give different
+results in different circumstances.  But we'll see that sometimes it's
+important to stick with the strict definition and refrain from using
+processes that aren't truly functions.
+
+<P>We've hinted at two different ways of thinking about functions.  The first
+is called <EM>function as process.</EM> Here, a function is a rule that
+tells us how to transform some information into some other information.  The
+function is just a rule, not a thing in its own right.  The actual
+&quot;things&quot; are the words or numbers or whatever the function manipulates.
+The second way of thinking is called <EM>function as object.</EM>  In
+this view, a function is a perfectly good &quot;thing&quot; in itself.  We can use a
+function as an argument to another function, for example.  Research with
+college math students shows that this second idea is hard for
+most people, but it's worth the effort because you'll see that <EM><A NAME="g7"></A><A NAME="g8"></A>higher-order functions</EM> (functions of functions) like <CODE>keep</CODE>
+and <CODE>every</CODE> can make programs much easier to write.
+
+<P>As a homey analogy, think about a carrot peeler.  If we focus our attention
+on the carrots&mdash;which are, after all, what we want to eat&mdash;then the peeler
+just represents a process.  We are peeling carrots.  We are applying the
+function <CODE>peel</CODE> to carrots.  It's the carrot that counts.  But we can
+also think about the peeler as a thing in its own right, when we clean it,
+or worry about whether its blade is sharp enough.
+
+<P>The big idea that we <EM>haven't</EM> explored in this chapter (although we
+used it a lot in Chapter 1) is the <EM>composition</EM> of functions: 
+using the result from one function as an argument to another function.  It's
+a crucial idea; we write large programs by defining a bunch of small
+functions and then composing them with each other to produce the desired
+result.  We'll start doing that in the next chapter, where we return to
+real Scheme notation.
+
+<P><H2>Exercises</H2>
+
+<P><EM>Use the</EM> <CODE>functions</CODE> <EM>program for all these exercises.</EM>
+
+<P><B>2.1</B>&nbsp;&nbsp;In each line of the following table we've left out
+one piece of information.  Fill in the missing details.
+
+<P><P>
+
+<TABLE FRAME=BOX RULES=ALL>
+<TR><TH>function<TH>arg 1<TH>arg 2<TH>result
+<TR><TD><CODE>&nbsp;word</CODE><TD><CODE>&nbsp;now</CODE><TD><CODE>&nbsp;here</CODE>
+<TR><TD><CODE>&nbsp;sentence&nbsp;</CODE><TD><CODE>&nbsp;now</CODE><TD><CODE>&nbsp;here</CODE>
+<TR><TD><CODE>&nbsp;first</CODE><TD><CODE>&nbsp;blackbird</CODE><TD><CODE>&nbsp;</CODE>none
+<TR><TD><CODE>&nbsp;first</CODE><TD><CODE>&nbsp;(blackbird)&nbsp;</CODE><TD><CODE>&nbsp;</CODE>none
+<TR><TD><TD><CODE>&nbsp;3</CODE><TD><CODE>&nbsp;4</CODE><TD><CODE>&nbsp;7</CODE>
+<TR><TD><CODE>&nbsp;every</CODE><TD><TD><CODE>&nbsp;(thank you girl)&nbsp;</CODE><TD><CODE>&nbsp;(hank ou irl)&nbsp;</CODE>
+<TR><TD><CODE>&nbsp;member?</CODE><TD><CODE>&nbsp;e</CODE><TD><CODE>&nbsp;aardvark</CODE>
+<TR><TD><CODE>&nbsp;member?</CODE><TD><CODE>&nbsp;the</CODE><TD><TD><CODE>&nbsp;#t</CODE>
+<TR><TD><CODE>&nbsp;keep</CODE><TD><CODE>&nbsp;vowel?</CODE><TD><CODE>&nbsp;(i will)</CODE>
+<TR><TD><CODE>&nbsp;keep</CODE><TD><CODE>&nbsp;vowel?</CODE><TD><TD><CODE>&nbsp;eieio</CODE><A NAME="text5" HREF="functions.html#ft5">[5]</A>
+<TR><TD><CODE>&nbsp;last</CODE><TD><CODE>&nbsp;()</CODE><TD><CODE>&nbsp;</CODE>none<TD>
+<TR><TD><TD><CODE>&nbsp;last</CODE><TD><CODE>&nbsp;(honey pie)</CODE><TD><CODE>&nbsp;(y e)</CODE>
+<TR><TD><TD><TD><CODE>&nbsp;taxman</CODE><TD><CODE>&nbsp;aa</CODE>
+</TABLE>
+
+<P>
+<B>2.2</B>&nbsp;&nbsp;
+What is the domain of the <CODE>vowel?</CODE> function?
+
+
+<P>
+<B>2.3</B>&nbsp;&nbsp;One of the functions you can use is called <CODE>appearances</CODE>.  Experiment
+with it, and then describe fully its domain and range, and what it does.
+(Make sure to try lots of cases.  Hint: Think about its name.)
+
+
+<P>
+<B>2.4</B>&nbsp;&nbsp;One of the functions you can use is called <CODE>item</CODE>.  Experiment
+with it, and then describe fully its domain and range, and what it does.
+
+
+<P>
+
+The following exercises ask for functions that meet certain criteria.  For
+your convenience, here are the functions in this chapter:  <CODE>+</CODE>, <CODE>-</CODE>, <CODE>/</CODE>, <CODE>&lt;=</CODE>, <CODE>&lt;</CODE>, <CODE>=</CODE>, <CODE>&gt;=</CODE>, <CODE>&gt;</CODE>, <CODE>and</CODE>, <CODE>appearances</CODE>, <CODE>butfirst</CODE>, <CODE>butlast</CODE>, <CODE>cos</CODE>, <CODE>count</CODE>, <CODE>equal?</CODE>, <CODE>every</CODE>, <CODE>even?</CODE>, <CODE>expt</CODE>, <CODE>first</CODE>,
+<CODE>if</CODE>, <CODE>item</CODE>, <CODE>keep</CODE>, <CODE>last</CODE>, <CODE>max</CODE>, <CODE>member?</CODE>, <CODE>not</CODE>, <CODE>number?</CODE>, <CODE>number-of-arguments</CODE>, <CODE>odd?</CODE>, <CODE>or</CODE>, <CODE>quotient</CODE>, <CODE>random</CODE>, <CODE>remainder</CODE>, <CODE>round</CODE>, <CODE>sentence</CODE>, <CODE>sqrt</CODE>, <CODE>vowel?</CODE>, and <CODE>word</CODE>.
+
+<P><B>2.5</B>&nbsp;&nbsp;
+List the one-argument functions in this chapter for which the type of the
+return value is always different from the type of the argument.
+
+
+<P>
+<B>2.6</B>&nbsp;&nbsp;
+List the one-argument functions in this chapter for which the type of the
+return value is sometimes different from the type of the argument.
+
+<P>
+<B>2.7</B>&nbsp;&nbsp;<A NAME="exoperator"></A>
+Mathematicians sometimes use the term &quot;operator&quot; to mean a function of two
+arguments, both of the same type, that returns a result of the same type.
+Which of the functions you've seen in this chapter satisfy that definition?
+
+
+<P>
+<B>2.8</B>&nbsp;&nbsp;An operator <EM>f</EM> is <EM>commutative</EM> if
+<EM>f</EM>(<EM>a,b</EM>)=<EM>f</EM>(<EM>b,a</EM>) for all possible arguments <EM>A</EM> and <EM>B</EM>.  For example,
+<CODE>+</CODE> is commutative, but <CODE>word</CODE> isn't.  Which of the
+operators from Exercise 2.7 are commutative?
+
+
+<P>
+<B>2.9</B>&nbsp;&nbsp;An operator <EM>f</EM> is <EM>associative</EM> if
+<EM>f</EM>(<EM>f</EM>(<EM>a,b</EM>)<EM>,c</EM>)=<EM>f</EM>(<EM>a,f</EM>(<EM>f</EM>(<EM>b,c</EM>)) for all possible arguments <EM>A</EM>, <EM>B</EM>, and <EM>C</EM>.
+For example, <CODE>*</CODE> is associative, but not <CODE>/</CODE>.
+Which of the operators from Exercise 2.7 are associative?
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="functions.html#text1">[1]</A> If you get no response at all after you type
+<CODE>(functions)</CODE>, just press the Return or Enter key
+again.  Tell your instructor to read
+Appendix A to see how to fix this.<P>
+<A NAME="ft2" HREF="functions.html#text2">[2]</A> Certain punctuation characters
+can also be used in words, but let's defer the details until you've
+gotten to know the word functions with simpler examples.<P>
+<A NAME="ft3" HREF="functions.html#text3">[3]</A> Unless your version of Scheme has complex numbers.<P>
+<A NAME="ft4" HREF="functions.html#text4">[4]</A> Real mathematicians
+say, &quot;The domain of <CODE>remainder</CODE> is the Cartesian cross product of the
+integers and the integers.&quot; In order to avoid that mouthful, we'll just use
+the informal wording.<P>
+<A NAME="ft5" HREF="functions.html#text5">[5]</A> Yes, there is an English
+word.  It has to do with astronomy.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch1/showing.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch3/part2.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch20/io b/js/games/nluqo.github.io/~bh/ssch20/io
new file mode 100644
index 0000000..c5e9623
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch20/io
@@ -0,0 +1,1333 @@
+\input bkmacs
+\pagetag{\typing}
+\photo{}{\pspicture{4in}{io}{io}{}\vfill}
+\chapter{Input and Output}
+\chaptag{\io}
+
+
+In the tic-tac-toe project in Chapter \ttt, we didn't write a complete game
+program.  We wrote a {\it function\/} that took a board position and {\tt x}
+or {\tt o} as arguments, returning the next move.  We noted at the time that
+a complete game program would also need to carry on a {\it conversation\/}
+with the user.  Instead of computing and returning one single value, a
+\bkidx{conversational}{program} must carry out a sequence of events in time,
+reading information from the \idx{keyboard} and displaying other information
+on the \idx{screen}.
+
+Before we complete the tic-tac-toe project, we'll start by
+exploring Scheme's mechanisms for \bkidx{interactive}{programming}.
+
+\backskipsubhd{Printing}{5}
+\justidx{printing}
+
+Up until now, we've never told Scheme to print anything.  The programs we've
+written have computed values and returned them; we've relied on the
+\idx{read-eval-print loop} to print these values.\footnt{The only
+exception is that we've used {\tt trace}, which prints messages about
+the progress of a computation.}
+
+But let's say we want to write a program to print out all of the words to
+``99 Bottles of Beer on the Wall.'' We could implement a function to produce a
+humongous {\it list\/} of the lines of the song, like this:
+
+{\prgex%
+(define (bottles n)
+  (if (= n 0)
+      '()
+      (append (verse n)
+	      (bottles (- n 1)))))
+}
+
+{\medskipamount=4pt\prgexskipamount=9pt\prgexbaselineamount=10pt
+{\prgex%
+(define (verse n)
+  (list (cons n '(bottles of beer on the wall))
+	(cons n '(bottles of beer))
+	'(if one of those bottles should happen to fall)
+	(cons (- n 1) '(bottles of beer on the wall))
+	'()))
+
+> (bottles 3)
+((3 BOTTLES OF BEER ON THE WALL)
+ (3 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+ (2 BOTTLES OF BEER ON THE WALL)
+ ()
+ (2 BOTTLES OF BEER ON THE WALL)
+ (2 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+ (1 BOTTLES OF BEER ON THE WALL)
+ ()
+ (1 BOTTLES OF BEER ON THE WALL)
+ (1 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+ (0 BOTTLES OF BEER ON THE WALL)
+ ())
+}
+
+\noindent The problem is that we don't want a list.  All we
+want is to print out the lines of the song; storing them in a data structure
+is unnecessary and inefficient.  Also, some versions of Scheme would print
+the above list like this:
+
+{\prgex%
+((3 BOTTLES OF BEER ON THE WALL) (3 BOTTLES OF BEER) (IF ONE OF
+ THOSE BOTTLES SHOULD HAPPEN TO FALL) (2 BOTTLES OF BEER ON THE
+ WALL) () (2 BOTTLES OF BEER ON THE WALL) (2 BOTTLES OF BEER) (IF
+ ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL) (1 BOTTLES OF BEER ON
+ THE WALL) () (1 BOTTLES OF BEER ON THE WALL) (1 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL) (0 BOTTLES OF BEER
+ ON THE WALL) ())
+}
+
+\noindent or even all on one line.  We can't rely on Scheme's mechanism for
+printing lists if we want to be sure of a particular arrangement on the
+screen.
+
+Instead we'll write a program to {\it print\/} a verse, rather
+than return it in a list:
+\justtt{show}
+
+{\prgex%
+(define (\ufun{bottles} n)
+  (if (= n 0)
+      'burp
+      (begin (verse n)
+	     (bottles (- n 1)))))
+
+(define (\ufun{verse} n)
+  (show (cons n '(bottles of beer on the wall)))
+  (show (cons n '(bottles of beer)))
+  (show '(if one of those bottles should happen to fall))
+  (show (cons (- n 1) '(bottles of beer on the wall)))
+  (show '()))
+
+> (bottles 3)
+(3 BOTTLES OF BEER ON THE WALL)
+(3 BOTTLES OF BEER)
+(IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+(2 BOTTLES OF BEER ON THE WALL)
+()
+(2 BOTTLES OF BEER ON THE WALL)
+(2 BOTTLES OF BEER)
+(IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+(1 BOTTLES OF BEER ON THE WALL)
+()
+(1 BOTTLES OF BEER ON THE WALL)
+(1 BOTTLES OF BEER)
+(IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+(0 BOTTLES OF BEER ON THE WALL)
+()
+BURP
+}
+
+} % skip kludges
+
+\noindent Notice that Scheme doesn't print an outer set of parentheses.
+Each line was printed separately; there isn't one big list containing all of
+them.\footnt{We know that it's still not as beautiful as can be, because of
+the capital letters and parentheses, but we'll get to that later.}
+
+Why was ``burp''\ printed at the end?  Just because we're printing things
+explicitly doesn't mean that the read-eval-print loop stops functioning.  We
+typed the expression {\tt (bottles~3)}.  In the course of evaluating that
+expression, Scheme printed several lines for us.  But the {\it value\/} of
+the expression was the word {\tt burp}, because that's what {\tt bottles}
+returned.
+
+\subhd{Side Effects and Sequencing}
+
+How does our program work?  There are two new ideas here:\ {\it
+\bkidx{side}{effect}s\/} and {\it sequencing.}
+
+Until now, whenever we've invoked a procedure, our only goal has been to get
+a return value.  The procedures we've used compute and return a value, and do
+nothing else.  {\tt Show} is different.  Although every Scheme procedure
+returns a value, the Scheme language standard doesn't specify what
+value the printing procedures should return.\footnt{Suppose {\tt show}
+returns {\tt \#f} in your version of Scheme.  Then you might see
+
+{\prgex%
+> (show 7)
+7
+#F
+}
+
+\noindent But since the return value is unspecified, we try to write
+programs in such a way that we never use {\tt show}'s return value as the
+return value from our procedures.  That's why we return values like {\tt
+burp}.} Instead, we are interested in their side effects.  In other words,
+we invoke {\tt show} because we want it to {\it do\/} something, namely,
+print its argument on the screen.
+
+What exactly do we mean by ``side effect''?  The kinds of procedures that
+we've used before this chapter can compute values, invoke helper procedures,
+provide arguments to the helper procedures, and return a value.  There may be
+a lot of activity going on within the procedure, but the procedure
+affects the world outside of itself only by returning a value that some
+other procedure might use.  {\tt Show} affects the world outside of itself
+by putting something on the screen.  After {\tt show} has finished its
+work, someone who looks at the screen can tell that {\tt show} was
+used.\footnt{The term {\it side\/} effect is based on the idea that a
+procedure may have a useful return value as its main purpose and may also
+have an effect ``on the side.'' It's a misnomer to talk about the
+side effect of {\tt show}, since the effect is its main purpose.  But nobody
+ever says ``side return value''!}
+
+{\medskipamount=4pt\prgexskipamount=9pt\prgexbaselineamount=10pt
+\def\psate{\prgexskipamount=8pt}
+
+Here's an example to illustrate the difference between values and effects:
+
+{\prgex%
+(define (\ufun{effect} x)
+  (show x)
+  'done)
+
+(define (\ufun{value} x)
+  x)
+
+> (effect '(oh! darling))
+(OH! DARLING)
+DONE
+
+> (value '(oh! darling))
+(OH! DARLING)
+
+> (bf (effect '(oh! darling)))
+(OH! DARLING)
+ONE\psate
+
+> (bf (value '(oh! darling)))
+(DARLING)
+
+> (define (\ufun{lots-of-effect} x)
+    (effect x)
+    (effect x)
+    (effect x))
+
+> (define (\ufun{lots-of-value} x)
+    (value x)
+    (value x)
+    (value x))
+
+> (lots-of-effect '(oh! darling))
+(OH! DARLING)
+(OH! DARLING)
+(OH! DARLING)
+DONE
+
+> (lots-of-value '(oh! darling))
+(OH! DARLING)
+}
+
+} % skip kludge
+
+This example also demonstrates the second new idea,
+\idx{sequencing}:  Each of {\tt effect}, {\tt lots-of-effect},
+and {\tt lots-of-value} contains more than one expression in
+its body.  When you invoke such a procedure, Scheme evaluates all
+the expressions in the body, in order, and returns the value of the
+last one.\footnt{In Chapter \defining, we said that the body of a
+procedure was always one single expression.  We lied.  But as long
+as you don't use any procedures with side effects, it doesn't do you
+any good to evaluate more than one expression in a body.} This also
+works in the body of a {\tt let}, which is really the body of a
+procedure, and in each clause of a {\ttidx cond}.\footnt{For example:
+
+{\zfprgex%
+> (cond ((< 4 0)
+	 (show '(how interesting))
+	 (show '(4 is less than zero?))
+	 #f)
+	((> 4 0)
+	 (show '(more reasonable))
+	 (show '(4 really is more than zero))
+	 'value)
+	(else
+	 (show '(you mean 4=0?))
+	 #f))
+(MORE REASONABLE)
+(4 REALLY IS MORE THAN ZERO)
+VALUE}}
+
+When we invoked {\tt lots-of-value}, Scheme invoked {\tt value} three times;
+it discarded the values returned by the first two invocations, and returned
+the value from the third invocation.  Similarly, when we invoked {\tt
+lots-of-effect}, Scheme invoked {\tt effect} three times and returned the
+value from the third invocation.  But each invocation of {\tt effect} caused
+its argument to be printed by invoking {\tt show}.
+
+\subhd{The \ttpmb{Begin} Special Form}
+\pagetag{\beg}
+
+The {\tt lots-of-effect} procedure accomplished sequencing by having more
+than one expression in its body.  This works fine if the sequence of events
+that you want to perform is the entire body of a procedure.  But in {\tt
+bottles} we wanted to include a sequence as one of the alternatives in an
+{\tt if} construction.  We couldn't just say
+
+{\prgex%
+(define (bottles n)                          ;; wrong
+  (if (= n 0)
+      '()
+      (verse n)
+      (bottles (- n 1))))
+}
+
+\noindent because {\tt if} must have exactly three arguments.  Otherwise,
+how would {\tt if} know whether we meant {\tt (verse~n)} to be the second
+expression in the true case, or the first expression in the false case?
+
+Instead, to turn the sequence of expressions into a single expression, we
+use the \bkidx{special}{form} \ttidx{begin}.  It takes any number of
+arguments, evaluates them from left to right, and returns the value of the
+last one.
+
+{\prgex%
+(define bottles n)
+  (if (= n 0)
+      'burp
+      (begin (verse n)
+	     (bottles (- n 1)))))
+}
+
+\noindent (One way to think about sequences in procedure bodies is that
+every procedure body has an invisible {\tt begin} surrounding it.)
+
+\subhd{This Isn't Functional Programming}
+
+Sequencing and side effects are radical departures from the idea of
+\bkidx{functional}{programming}.  In fact, we'd like to reserve the name {\it
+function\/} for something that computes and returns one value, with no side
+effects.  ``Procedure'' is the general term for the thing that {\tt lambda}
+returns---an embodiment of an algorithm.  If the algorithm is the kind that
+computes and returns a single value without side effects, then we say that
+the procedure implements a function.\footnt{Sometimes people sloppily
+say that the procedure {\it is\/} a function.  In fact, you may hear people
+be {\it really\/} sloppy and call a non-functional procedure a function!}
+
+There is a certain kind of sequencing even in functional programming.  If
+you say
+
+{\prgex%
+(* (+ 3 4) (- 92 15))
+}
+
+\noindent it's clear that the addition has to happen before the
+multiplication, because the result of the addition provides one of the
+arguments to the multiplication.  What's new in the sequential programming
+style is the {\it emphasis\/} on sequence, and the fact that the expressions
+in the sequence are {\it independent\/} instead of contributing values to
+each other.  In this multiplication problem, for example, we don't care
+whether the addition happens before or after the subtraction.  If the
+addition and subtraction were in a sequence, we'd be using them for
+independent purposes:
+
+{\prgex%
+(begin
+ (show (+ 3 4))
+ (show (- 92 15)))
+}
+
+\noindent This is what we mean by being independent.  Neither expression
+helps in computing the other.  And the order matters because we can see
+the order in which the results are printed.
+
+\subhd{Not Moving to the Next Line}
+
+Each invocation of {\tt show} prints a separate line.  What if we
+want a program that prints several things on the same line, like this:
+
+{\prgex%
+> (begin (show-addition 3 4)
+	 (show-addition 6 8)
+	 'done)
+3+4=7
+6+8=14
+DONE
+}
+
+\noindent We use \ttidx{display}, which doesn't move to the next line after
+printing its argument:
+
+{\prgex%
+(define (\ufun{show-addition} x y)
+  (display x)
+  (display '+)
+  (display y)
+  (display '=)
+  (show (+ x y)))
+}
+
+\noindent (The last one is a {\tt show} because we {\it do\/} want to start
+a new line after it.)
+
+What if you just want to print a blank line?  You use \ttidx{newline}:
+
+{\prgex%
+(define (verse n)
+  (show (cons n '(bottles of beer on the wall)))
+  (show (cons n '(bottles of beer)))
+  (show '(if one of those bottles should happen to fall))
+  (show (cons (- n 1) '(bottles of beer on the wall)))
+  (newline))                                 ; replaces (show '())
+}
+
+In fact, {\tt show} isn't an official Scheme primitive; we wrote it
+in terms of {\tt display} and {\tt newline}.
+
+\subhd{Strings}
+
+Throughout the book we've occasionally used strings, that is, words enclosed in
+double-quote marks so that Scheme will permit the use of punctuation or other
+unusual characters.  Strings also preserve the case of letters, so they can
+be used to beautify our song even more.  Since {\it any\/} character can be
+in a \idx{string}, including spaces, the easiest thing to do in this case is
+to treat all the letters, spaces, and punctuation characters of each line of
+the song as one long word.  (If we wanted to be able to compute functions of
+the individual words in each line, that wouldn't be such a good idea.)
+
+{\prgex%
+(define (\ufun{verse} n)
+  (display n)
+  (show " bottles of beer on the wall,")
+  (display n)
+  (show " bottles of beer.")
+  (show "If one of those bottles should happen to fall,")
+  (display (- n 1))
+  (show " bottles of beer on the wall.")
+  (newline))
+}
+
+{\medskipamount=4pt\prgexskipamount=8pt\prgexbaselineamount=10pt
+{\prgex%
+> (verse 6)
+6 bottles of beer on the wall,
+6 bottles of beer.
+If one of those bottles should happen to fall,
+5 bottles of beer on the wall.
+
+#F                               ; or whatever is returned by (newline)
+}
+
+% \def\vb{\vispc\penalty 0{}}
+% \def\vb{\_}
+\def\vb{\ }
+\noindent It's strange to think of ``{\tt\vb bottles\vb of\vb
+beer\vb on\vb the\vb wall,}'' as a single word.  But the rule is that
+anything inside double quotes counts as a single word.  It doesn't have to
+be an English word.
+
+\backskipsubhd{A Higher-Order Procedure for Sequencing}{8}
+
+Sometimes we want to print each element of a list separately:
+
+{\prgex%
+(define (\ufun{show-list} lst)
+  (if (null? lst)
+      'done
+      (begin (show (car lst))
+	     (show-list (cdr lst)))))
+
+> (show-list '((dig a pony) (doctor robert) (for you blue)))
+(DIG A PONY)
+(DOCTOR ROBERT)
+(FOR YOU BLUE)
+DONE
+}
+
+Like other patterns of computation involving lists, this one can be
+abstracted into a higher-order procedure.  (We can't call it a
+``higher-order function'' because this one is for computations with side
+effects.)  The procedure {\tt \ttidx{for-each}} is part of standard Scheme:
+
+{\prgex%
+> (for-each show '((mean mr mustard) (no reply) (tell me why)))
+(MEAN MR MUSTARD)
+(NO REPLY)
+(TELL ME WHY)
+}
+
+\noindent The value returned by {\tt for-each} is unspecified.
+
+Why couldn't we just use {\tt map} for this purpose?  There are two reasons.
+One is just an efficiency issue:  {\tt Map} constructs a list containing the
+values returned by each of its sub-computations; in this example, it would
+be a list of three instances of the unspecified value returned by {\tt
+show}. But we aren't going to use that list for anything, so there's no
+point in constructing it.  The second reason is more serious.  In functional
+programming, the order of evaluation of subexpressions is unspecified.  For
+example, when we evaluate the expression
+
+{\prgex%
+(- (+ 4 5) (* 6 7))
+}
+
+\noindent we don't know whether the addition or the multiplication happens
+first.  Similarly, the order in which {\tt map} computes the results for
+each element is unspecified.  That's okay as long as the ultimately returned
+list of results is in the right order.  But when we are using side effects,
+we {\it do\/} care about the order of evaluation.  In this case, we want
+to make sure that the elements of the argument list are printed from left to
+right.  {\tt For-each} guarantees this ordering.
+
+\backskipsubhd{Tic-Tac-Toe Revisited}{8}
+
+We're working up toward playing a game of tic-tac-toe against the computer.
+But as a first step, let's have the computer play against itself.  What we
+already have is {\tt ttt}, a {\it strategy\/} function:\ one that takes a
+board position as argument (and also a letter {\tt x} or {\tt o}) and
+returns the chosen next move.  In order to play a game of tic-tac-toe, we
+need two players; to make it more interesting, each should have its own
+strategy.  So we'll write another one, quickly, that just moves in the first
+empty square it sees:
+
+{\prgex%
+(define (\ufun{stupid-ttt} position letter)
+  (location '_ position))
+
+(define (\ufun{location} letter word)
+  (if (equal? letter (first word))
+      1
+      (+ 1 (location letter (bf word)))))
+}
+
+Now we can write a program that takes two strategies as arguments and
+actually plays a game between them.
+
+{\prgex%
+(define (\ufun{play-ttt} x-strat o-strat)
+  (play-ttt-helper x-strat o-strat '_________ 'x))
+
+(define (\ufun{play-ttt-helper} x-strat o-strat position whose-turn)
+  (cond ((already-won? position (opponent whose-turn))
+	 (list (opponent whose-turn) 'wins!))
+	((tie-game? position) '(tie game))
+	(else (let ((square (if (equal? whose-turn 'x)
+				(x-strat position 'x)
+				(o-strat position 'o))))
+		(play-ttt-helper x-strat
+				 o-strat
+				 (add-move square whose-turn position)
+				 (opponent whose-turn))))))
+}
+} % skip kludge
+
+\noindent We use a helper procedure because we need to keep track of two
+pieces of information besides the strategy procedures:\ the current board
+position and whose turn it is ({\tt x} or {\tt o}).  The helper procedure
+is invoked recursively for each move.  First it checks whether the game
+is already over (won or tied).\footnt{You wrote the procedures {\tt
+already-won?}\ and {\tt tie-game?}\ in Exercises \tttwon\ and \ttttied:
+
+{\prgex%
+(define (\ufun{already-won?} position who)
+  (member? (word who who who)  (find-triples position)))
+
+(define (\ufun{tie-game?} position)
+  (not (member? '_ position)))
+}}
+If not, the helper procedure invokes the current player's strategy procedure,
+which returns the square number for the next move.  For the recursive call,
+the arguments are the same two strategies, the new position after the move,
+and the letter for the other player.
+
+We still need {\tt add-move}, the procedure that takes a square and an old
+position as arguments and returns the new position.
+
+{\prgex%
+(define (\ufun{add-move} square letter position)
+  (if (= square 1)
+      (word letter (bf position))
+      (word (first position)
+	    (add-move (- square 1) letter (bf position)))))
+
+> (play-ttt ttt stupid-ttt)
+(X WINS!)
+
+> (play-ttt stupid-ttt ttt)
+(O WINS!)
+}
+
+\subhd{Accepting User Input}
+
+The work we did in the last section was purely functional.  We didn't print
+anything (except the ultimate return value, as always) and we didn't
+have to read information from a human player, because there wasn't one.
+
+You might expect that the structure of an {\it interactive\/} game program
+would be very different, with a top-level procedure full of sequential
+operations.  But the fact is that we hardly have to change anything to turn
+this into an interactive game.  All we need is a new ``strategy'' procedure
+that asks the user where to move, instead of computing a move based on
+built-in rules.
+
+{\prgex%
+(define (\ufun{ask-user} position letter)
+  (print-position position)
+  (display letter)
+  (display "'s move: ")
+  (read))
+
+(define (print-position position)            ;; first version
+  (show position))
+}
+
+\noindent (Ultimately we're going to want a beautiful two-dimensional
+display of the current position, but we don't want to get distracted by that
+just now.  That's why we've written a trivial temporary version.)
+
+{\prgex%
+> (play-ttt ttt ask-user)
+____X____
+O'S MOVE: \pmb{1}
+O___XX___
+O'S MOVE: \pmb{4}
+O__OXXX__
+O'S MOVE: \pmb{3}
+OXOOXXX__
+O'S MOVE: \pmb{8}
+(TIE GAME)
+}
+
+\noindent What the user typed is just the single digits shown in boldface at
+the ends of the lines.
+
+What's new here is that we invoke the procedure \ttidx{read}.  It waits for
+you to type a Scheme expression, and returns that expression.  Don't
+be confused:  {\tt Read} does {\it not\/} evaluate what you type.  It
+returns exactly the same expression that you type:
+
+{\prgex%
+(define (\ufun{echo})
+  (display "What? ")
+  (let ((expr (read)))
+    (if (equal? expr 'stop)
+	'okay
+	(begin
+	 (show expr)
+	 (echo)))))
+}
+
+{\medskipamount=2pt\prgexskipamount=7.5pt\prgexbaselineamount=10pt
+{\prgex%
+> (echo)
+What? \pmb{hello}
+HELLO
+What? \pmb{(+ 2 3)}
+(+ 2 3)
+What? \pmb{(first (glass onion))}
+(FIRST (GLASS ONION))
+What? \pmb{stop}
+OKAY
+}
+
+\backskipsubhd{Aesthetic Board Display}{9}
+
+Here's our beautiful position printer:
+
+{%\setbox2=\hbox{{\ninett +}}\catcode`+=\active\def+{\lower1pt\copy2}
+
+{\prgex%
+(define (\ufun{print-position} position)
+  (print-row (subword position 1 3))
+  (show "-+-+-")
+  (print-row (subword position 4 6))
+  (show "-+-+-")
+  (print-row (subword position 7 9))
+  (newline))
+
+(define (\ufun{print-row} row)
+  (maybe-display (first row))
+  (display "|")
+  (maybe-display (first (bf row)))
+  (display "|")
+  (maybe-display (last row))
+  (newline))
+
+(define (\ufun{maybe-display} letter)
+  (if (not (equal? letter '_))
+      (display letter)
+      (display " ")))
+
+(define (\ufun{subword} wd start end)
+  ((repeated bf (- start 1))
+   ((repeated bl (- (count wd) end))
+    wd)))\pgfoot
+\nobreak}
+\nobreak\vfootnt{Alternate version:
+\def\fpskip{\vskip 5pt\relax}
+{\prgex\fprgexbaselineamount=9.5pt%
+(define (subword wd start end)
+  (cond ((> start 1) (subword (bf wd) (- start 1) (- end 1)))
+	((< end (count wd)) (subword (bl wd) start end))
+	(else wd)))
+}
+
+\noindent You can take your choice, depending on which you think is easier,
+recursion or higher-order functions.
+}
+} % skip kludge
+
+Here's how it works:
+
+{\prgex%
+> (print-position '_x_oo__xx)
+ |X| 
+-+-+-
+O|O| 
+-+-+-
+ |X|X
+}
+} %%%%%%%%% active + kludge %%%%%%%%%%%%%
+
+\subhd{Reading and Writing Normal Text}
+
+The {\tt read} procedure works fine as long as what you type looks like a
+Lisp program.  That is, it reads one expression at a time.  In the
+tic-tac-toe program the user types a single number, which is a Scheme
+expression, so {\tt read} works fine.  But what if we want to read more than
+one word?
+
+{\prgex%
+(define (music-critic)                       ;; first version
+  (show "What's your favorite Beatles song?")
+  (let ((song (read)))
+    (show (se "I like" song "too."))))
+
+> (music-critic)
+What's your favorite Beatles song?
+\pmb{She Loves You}
+(I like SHE too.)
+}
+
+\noindent If the user had typed the song title in parentheses, then it would
+have been a single Scheme expression and {\tt read} would have accepted it.
+But we don't want the users of our program to have to be typing parentheses
+all the time.
+
+Scheme also lets you read one character at a time.  This allows you to read
+any text, with no constraints on its format.  The disadvantage is that you
+find yourself putting a lot of effort into minor details.  We've provided a
+procedure {\tt \ttidx{read-line}} that reads one line of input and returns a
+sentence.  The words in that sentence will contain any punctuation
+characters that appear on the line, including parentheses, which are not
+interpreted as sublist delimiters by {\tt read-line}.  {\tt Read-line} also
+preserves the case of letters.
+
+{\prgex%
+(define (music-critic)                       ;; second version
+  (read-line)   ; See explanation on next page.
+  (show "What's your favorite Beatles song?")
+  (let ((song (read-line)))
+    (show (se "I like" song "too."))))
+
+> (music-critic)
+What's your favorite Beatles song?
+\pmb{She Loves You}
+(I like She Loves You too.)
+}
+
+\noindent Why do we call {\tt read-line} and ignore its result at the
+beginning of {\tt music-critic}?  It has to do with the interaction between
+{\tt read-line} and {\tt read}.  {\tt Read} treats what you type as a
+sequence of Scheme expressions; each invocation of {\tt read} reads one of
+them.  {\tt Read} pays no attention to formatting details, such as several
+consecutive spaces or line breaks.  If, for example, you type several
+expressions on the same line, it will take several invocations of {\tt read}
+to read them all.
+
+By contrast, {\tt read-line} treats what you type as a sequence of lines,
+reading one line per invocation, so it does pay attention to line breaks.
+
+Either of these ways to read input is sensible in itself, but if you mix
+the two, by invoking {\tt read} sometimes and {\tt read-line} sometimes in
+the same program, the results can be confusing.  Suppose you type a line
+containing an expression and your program invokes {\tt read} to read it.
+Since there might have been another expression on the line, {\tt read}
+doesn't advance to the next line until you ask for the next
+expression.  So if you now invoke {\tt read-line}, thinking that it will
+read another line from the keyboard, it will instead return an empty list,
+because what it sees is an empty line---what's left after {\tt read} uses up
+the expression you typed.
+
+You may be thinking, ``But {\tt music-critic} doesn't call {\tt read}!''
+That's true, but Scheme itself used {\tt read} to read the expression that
+you used to invoke {\tt music-critic}.  So the first invocation of {\tt
+read-line} is needed to skip over the spurious empty line.
+
+Our solution works only if {\tt music-critic} is invoked directly at a
+Scheme prompt.  If {\tt music-critic} were a subprocedure of some larger
+program that has already called {\tt read-line} before calling {\tt
+music-critic}, the extra {\tt read-line} in {\tt music-critic} would really
+read and ignore a useful line of text.
+
+If you write a procedure using {\tt read-line} that will sometimes be called
+directly and sometimes be used as a subprocedure, you can't include an extra
+{\tt read-line} call in it.  Instead, when you call your procedure directly
+from the Scheme prompt, you must say
+
+{\prgex%
+> (begin (read-line) (my-procedure))
+}
+
+Another technical detail about {\tt read-line} is that since
+it preserves the capitalization of words, its result may
+include strings, which will be shown in quotation marks if you return the
+value rather than {\tt show}ing it:
+
+{\prgex%
+(define (music-critic-return)
+  (read-line)
+  (show "What's your favorite Beatles song?")
+  (let ((song (read-line)))
+    (se "I like" song "too.")))
+
+> (music-critic-return)
+What's your favorite Beatles song?
+\pmb{She Loves You}
+("I like" "She" "Loves" "You" "too.")
+}
+
+We have also provided {\tt \ttidx{show-line},} which takes a sentence
+as argument.  It prints the sentence without surrounding parentheses,
+followed by a newline.  (Actually, it takes any list as argument; it prints
+all the parentheses except for the outer ones.)
+
+{\prgex%
+(define (\ufun{music-critic})
+  (read-line)
+  (show "What's your favorite Beatles song?")
+  (let ((song (read-line)))
+    (show-line (se "I like" song "too."))))
+
+> (music-critic)
+What's your favorite Beatles song?
+\pmb{She Loves You}
+I like She Loves You too.
+}
+
+The difference between {\tt show} and {\tt show-line} isn't
+crucial.  It's just a matter of a pair of parentheses.  The point is that
+{\tt read-line} and {\tt show-line} go together.  {\tt Read-line} reads a
+bunch of disconnected words and combines them into a sentence.  {\tt
+Show-line} takes a sentence and prints it as if it were a bunch of
+disconnected words.  Later, when we read and write files in Chapter
+\files, this ability to print in the same form in which we read will be
+important.
+
+\subhd{Formatted Text}
+
+We've been concentrating on the use of sequential programming with explicit
+\pagetag{\spformat}
+printing instructions for the sake of conversational programs.  Another
+common application of sequential printing is to display tabular information,
+such as columns of numbers.  The difficulty is to get the numbers to line up
+so that corresponding digits are in the same position, even when the numbers
+have very widely separated values.  The
+\ttidx{align} function can be used to convert a number to a printable word
+with a fixed number of positions before and after the decimal point:
+
+{\prgex%
+(define (square-root-table nums)
+  (if (null? nums)
+      'done
+      (begin (display (align (car nums) 7 1))
+	     (show (align (sqrt (car nums)) 10 5))
+	     (square-root-table (cdr nums)))))
+
+> (square-root-table '(7 8 9 10 20 98 99 100 101 1234 56789))
+    7.0   2.64575
+    8.0   2.82843
+    9.0   3.00000
+   10.0   3.16228
+   20.0   4.47214
+   98.0   9.89949
+   99.0   9.94987
+  100.0  10.00000
+  101.0  10.04988
+ 1234.0  35.12834
+56789.0 238.30443
+DONE
+}
+
+\noindent {\tt Align} takes three arguments.  The first is the value to be
+displayed.  The second is the width of the column in which it will be
+displayed; the returned value will be a word with that many characters in it.
+The third argument is the number of digits that should be displayed to the
+right of the decimal point.  (If this number is zero, then no decimal point
+will be displayed.)  The width must be great enough to include all the
+digits, as well as the decimal point and minus sign, if any.
+
+As the program example above indicates, {\tt align} does not print
+anything.  It's a function that returns a value suitable for printing with
+{\tt display} or {\tt show}.
+
+What if the number is too big to fit in the available space?
+
+{\prgex%
+> (align 12345679 4 0)
+"123+"
+}
+
+\noindent {\tt Align} returns a word containing the first few digits,
+as many as fit, ending with a plus sign to indicate that part of the value
+is missing.
+
+{\tt Align} can also be used to include non-numeric text in columns.  If
+the first argument is not a number, then only two arguments are needed; the
+second is the column width.  In this case {\tt align} returns a word with
+extra spaces at the right, if necessary, so that the argument word will
+appear at the left in its column:
+
+{\prgex%
+(define (\ufun{name-table} names)
+  (if (null? names)
+      'done
+      (begin (display (align (cadar names) 11))
+	     (show (caar names))
+	     (name-table (cdr names)))))
+
+> (name-table '((john lennon) (paul mccartney)
+		(george harrison) (ringo starr)))
+LENNON     JOHN
+MCCARTNEY  PAUL
+HARRISON   GEORGE
+STARR      RINGO
+DONE
+}
+
+\noindent As with numbers, if a non-numeric word won't fit in the allowed
+space, {\tt align} returns a partial word ending with a plus sign.
+
+This {\tt align} function is not part of standard Scheme.  Most programming
+languages, including some versions of Scheme, offer much more elaborate
+formatting capabilities with many alternate ways to represent both numbers
+and general text.  Our version is a minimal capability to show the flavor
+and to meet the needs of projects in this book.
+
+\subhd{Sequential Programming and Order of Evaluation}
+
+Our expanded tic-tac-toe program includes both functional and sequential
+parts.  The program computes its strategy functionally but uses sequences
+of commands to control the {\it \bkidx{user}{interface}\/} by alternately
+printing information to the screen and reading information from the keyboard.
+
+By adding sequential programming to our toolkit, we've increased our ability
+to write interactive programs.  But there is a cost that goes along with
+this benefit:  We now have to pay more attention to the order of events than
+we did in purely functional programs.
+
+The obvious concern about order of events is that sequences of {\tt show}
+expressions must come in the order in which we want them to appear, and {\tt
+read} expressions must fit into the sequence properly so that the user is
+asked for the right information at the right time.
+
+But there is another, less obvious issue about order of events.  When the
+evaluation of expressions can have side effects in addition to returning
+values, the order of evaluation of argument subexpressions becomes important.
+Here's an example to show what we mean.  Suppose we type the expression
+
+{\prgex%
+(list (+ 3 4) (- 10 2))
+}
+
+\noindent The answer, of course, is {\tt (7~8)}.  It doesn't matter whether
+Scheme computes the seven first (left to right) or the eight first (right to
+left).  But here's a similar example in which it {\it does\/} matter:
+
+{\prgex%
+(define (\ufun{show-and-return} x)
+  (show x)
+  x)
+
+> (list (show-and-return (+ 3 4)) (show-and-return (- 10 2)))
+8
+7
+(7 8)
+}
+
+\noindent The value that's ultimately returned, in this example, is the same
+as before.  But the two numeric values that go into the list are also
+printed separately, so we can see which is computed first.  (We've shown
+the case of right-to-left computation; your Scheme might be different.)
+
+Suppose you want to make sure that the seven prints first, regardless of
+which order your Scheme uses.  You could do this:
+
+{\prgex%
+> (let ((left (show-and-return (+ 3 4))))
+    (list left (show-and-return (- 10 2))))
+7
+8
+(7 8)
+}
+
+\noindent The expression in the body of a {\tt let} can't be evaluated until
+the {\tt let} variables (such as {\tt left}) have had their values computed.
+
+It's hard to imagine a practical use for the artificial {\tt
+show-and-return} procedure, but a similar situation arises whenever we use
+{\tt read}.  Suppose we want to write a procedure to ask a person for his or
+her full name, returning a two-element list containing the first and last
+name.  A natural mistake to make would be to write this procedure:
+
+{\prgex%
+(define (ask-for-name)                       ;; wrong
+  (show "Please type your first name, then your last name:")
+  (list (read) (read)))
+
+> (ask-for-name)
+Please type your first name, then your last name:
+\pmb{John
+Lennon}
+(LENNON JOHN)
+}
+
+\noindent What went wrong?  We happen to be using a version of Scheme that
+evaluates argument subexpressions from right to left.  Therefore, the word
+{\tt John} was read by the rightmost call to {\tt read}, which provided the
+second argument to {\tt list}.  The best solution is to use {\tt let} as we
+did above:
+
+{\prgex%
+(define (\ufun{ask-for-name})
+  (show "Please type your first name, then your last name:")
+  (let ((first-name (read)))
+    (list first-name (read))))
+}
+
+Even this example looks artificially simple, because of the two invocations
+of {\tt read} that are visibly right next to each other in the erroneous
+version.  But look at {\tt play-ttt-helper}.  The word {\tt read} doesn't
+appear in its body at all.  But when we invoke it using {\tt ask-user} as
+the strategy procedure for {\tt x}, the expression
+
+{\prgex%
+(x-strat position 'x)
+}
+
+\noindent hides an invocation of {\tt read}.  The structure of {\tt
+play-ttt-helper} includes a {\tt let} that controls the timing of that {\tt
+read}.  (As it turns out, in this particular case we could have gotten away
+with writing the program without {\tt let}.  The hidden invocation of {\tt
+read} is the only subexpression with a side effect, so there aren't two
+effects that might get out of order.  But we had to think carefully about
+the program to be sure of that.)
+
+\subhd{Pitfalls}
+
+\pit It's easy to get confused about what is printed explicitly by your
+\justidx{printing}
+program and what is printed by Scheme's read-eval-print loop.  Until now,
+{\it all\/} printing was of the second kind.  Here's an example that doesn't
+do anything very interesting but will help make the point clear:
+
+{\prgex%
+(define (name)
+  (display "MATT ")
+  'wright)
+
+> (name)
+MATT WRIGHT
+}
+
+\noindent At first glance it looks as if putting the word ``Matt'' inside a
+call to {\tt display} is unnecessary.  After all, the word {\tt wright} is
+printed even without using {\tt display}.  But watch this:
+
+{\prgex%
+> (bf (name))
+MATT RIGHT
+}
+
+\noindent Every time you invoke {\tt name}, whether or not as the entire
+expression used at a Scheme prompt, the word {\tt MATT} is printed.  But
+the word {\tt wright} is {\it returned,\/} and may or may not be printed
+depending on the context in which {\tt name} is invoked.
+
+\pit A sequence of expressions returns the value of the {\it last\/}
+expression.  If that isn't what you want, you must remember the value you
+want to return using {\tt let}:
+
+{\prgex%
+(let ((result (compute-this-first)))
+  (begin
+   (compute-this-second)
+   (compute-this-third)
+   result))
+}
+
+\pit Don't forget that the first call to {\tt read-line}, or any call to
+{\tt read-line} after a call to {\tt read}, will probably read the empty
+line that {\tt read} left behind.
+
+\pit Sometimes you want to use what the user typed more than once in your
+program.  But don't forget that {\tt read} has an effect as well as a return
+value.  Don't try to read the same expression twice:
+
+{\prgex%
+(define (ask-question question)              ;; wrong
+  (show question)
+  (cond ((equal? (read) 'yes) #t)
+	((equal? (read) 'no) #f)
+	(else (show "Please answer yes or no.")
+	      (ask-question question))))
+}
+
+\noindent If the answer is {\tt yes}, this procedure will work fine.  But if
+not, the second invocation of {\tt read} will read a second expression, not
+test the same expression again as intended.  To avoid this problem, invoke
+{\tt read} only once for each expression you want to read, and use {\tt let}
+to remember the result:
+
+{\prgex%
+(define (\ufun{ask-question} question)
+  (show question)
+  (let ((answer (read)))
+    (cond ((equal? answer 'yes) #t)
+	  ((equal? answer 'no) #f)
+	  (else (show "Please answer yes or no.")
+		(ask-question question)))))
+}
+
+\esubhd{Boring Exercises}
+
+{\exercise
+What happens when we evaluate the following expression?  What is printed,
+and what is the return value?  Try to figure it out in your head before you
+try it on the computer.
+
+{\prgex%
+(cond ((= 2 3) (show '(lady madonna)) '(i call your name))
+      ((< 2 3) (show '(the night before)) '(hello little girl))
+      (else '(p.s. i love you)))
+}}
+
+\solution
+{\tt (THE NIGHT BEFORE)} is printed.
+
+{\tt (HELLO LITTLE GIRL)} is returned.
+
+@
+
+{\exercise
+What does {\tt newline} return in your version of Scheme?
+}
+
+{\exercise
+Define {\tt show} in terms of {\tt newline} and {\tt display}.
+}
+
+\solution
+{\prgex%
+(define (show stuff)
+  (display stuff)
+  (newline))
+}
+@
+
+\esubhd{Real Exercises}
+
+{\exercise
+Write a program that carries on a conversation like the following example.
+What the user types is in boldface.
+
+{\prgex%
+> \pmb{(\ufun{converse})}
+Hello, I'm the computer.  What's your name? \pmb{Brian Harvey}
+Hi, Brian.  How are you? \pmb{I'm fine.}
+Glad to hear it.
+}}
+
+\solution
+
+Here's a boring version that's glad to hear anything about how you're
+doing.  Naturally you could make it do a lot more if you were so inclined.
+
+{\prgex%
+(define (converse)
+  (read-line)
+  (display "Hello, I'm the computer.  What's your name? ")
+  (let ((name (read-line)))
+    (display (word "Hi, " (first name) ".  How are you? "))
+    (read-line)
+    (show "Glad to hear it.")))
+}
+@
+
+{\exercise
+Our {\tt name-table} procedure uses a fixed width for the column containing
+the last names of the people in the argument list.  Suppose that instead of
+liking British-invasion music you are into late romantic Russian composers:
+
+{\prgex%
+> (name-table '((piotr tchaikovsky) (nicolay rimsky-korsakov)
+		(sergei rachmaninov) (modest musorgsky)))
+}
+
+\noindent Alternatively, perhaps you like jazz:
+
+{\prgex%
+> (name-table '((bill evans) (paul motian) (scott lefaro)))
+}
+
+\noindent Modify {\tt name-table} so that it figures out the longest last
+name in its argument list, adds two for spaces, and uses that number as the
+width of the first column.
+}
+
+\solution
+{\prgex%
+(define (name-table names)
+  (if (null? names)
+      'done
+      (nt-help names
+	       (+ 2 (reduce max (map (lambda (nm) (count (last nm)))
+				     names))))))
+
+(define (nt-help names width)
+  (if (null? names)
+      'done
+      (begin (display (align (cadar names) width))
+	     (show (caar names))
+	     (nt-help (cdr names) width))))
+}
+
+The {\tt null?} test in {\tt name-table} is needed only for the case
+in which the user gives an empty argument; the {\tt null?} test that
+serves as the base case for the recursion is the one in {\tt nt-help}.
+
+@
+
+{\exercise
+The procedure {\tt ask-user} isn't robust.  What happens if you type
+something that isn't a number, or isn't between 1 and 9?  Modify it to check
+that what the user types is a number between 1 and 9.  If not, it should
+print a message and ask the user to try again.
+}
+
+\solution
+The changed parts of the procedure are shown here in boldface.
+
+{\prgex%
+(define (ask-user position letter)
+  (print-position position)
+  (display letter)
+  (display "'s move: ")
+  \pmb{(let ((answer (read)))}
+    \pmb{(if (and (integer? answer) (>= answer 1) (<= answer 9))}
+	\pmb{answer}
+	\pmb{(begin (show "That's not a move, silly!")}
+	       \pmb{(ask-user position letter)))))}
+}
+@
+
+{\exercise
+Another problem with {\tt ask-user} is that it allows a user to request a
+square that isn't free.  If the user does this, what happens?  Fix {\tt
+ask-user} to ensure that this can't happen.
+}
+
+\solution
+If the user asks for a square that's already taken, the square will
+be reassigned to the user.  The following solution assumes that the
+previous exercise is also included.
+The changed parts of the procedure are shown here in boldface.
+
+
+{\prgex%
+(define (ask-user position letter)
+  (print-position position)
+  (display letter)
+  (display "'s move: ")
+  (let ((answer (read)))
+    \pmb{(cond ((not} (and (integer? answer) (>= answer 1) (<= answer 9)))
+	   (show "That's not a move, silly!")
+	   (ask-user position letter))
+	  \pmb{((not (equal? '_ (item answer position)))}
+	   \pmb{(show "That square is occupied.")}
+	   \pmb{(ask-user position letter))}
+	  \pmb{(else} answer))))
+}
+@
+
+{\exercise
+At the end of the game, if the computer wins or ties, you never find out
+which square it chose for its final move.  Modify the program to correct
+this.  (Notice that this exercise requires you to make {\tt play-ttt-helper}
+non-functional.)
+}
+
+\solution
+The changed parts of the procedure are shown here in boldface.
+
+{\prgex%
+(define (play-ttt-helper x-strat o-strat position whose-turn)
+  (cond ((already-won? position (opponent whose-turn))
+	 \pmb{(print-position position)}
+	 (list (opponent whose-turn) 'wins!))
+	((tie-game? position)
+	 \pmb{(print-position position)}
+	 '(tie game))
+	(else (let ((square (if (equal? whose-turn 'x)
+				(x-strat position 'x)
+				(o-strat position 'o))))
+		(play-ttt-helper x-strat
+				 o-strat
+				 (add-move square whose-turn position)
+				 (opponent whose-turn))))))
+}
+@
+
+{\exercise
+The way we invoke the game program isn't very user-friendly.  Write a
+procedure {\tt game} that asks you whether you wish to play {\tt x} or {\tt
+o}, then starts a game.  (By definition, {\tt x} plays first.)  Then write a
+procedure {\tt games} that allows you to keep playing repeatedly.  It
+can ask ``do you want to play again?''\ after each game.  (Make sure that
+the outcome of each game is still reported, and that the user can choose
+whether to play {\tt x} or {\tt o} before each game.)
+}
+
+\solution
+{\prgex%
+(define (game)
+  (display "Do you want to play X or O? ")
+  (let ((letter (read)))
+    (cond ((equal? letter 'x)
+	   (play-ttt ask-user ttt))
+	  ((equal? letter 'o)
+	   (play-ttt ttt ask-user))
+	  (else (show "Please type X or O!")
+		(game)))))
+
+(define (games)
+  (show (game))
+  (display "Do you want to play again (Y or N)? ")
+  (if (another?)
+      (games)
+      "Thank you for playing, have a day."))
+
+(define (another?)
+  (let ((letter (read)))
+    (cond ((equal? letter 'y) #t)
+	  ((equal? letter 'n) #f)
+	  (else (show "C'mon, Y or N!")
+		(another?)))))
+}
+
+{\tt Game} and {\tt games} both ask a question, and both include a
+check for invalid answers.  But {\tt game} is able to repeat the
+question itself, if the answer was invalid, whereas {\tt games}
+uses a helper procedure {\tt another?} to ask the question.  The
+reason for this difference is that {\tt games} plays a game before
+asking its question, whereas the question is the first thing in
+{\tt game}.  If {\tt games} were written as a single procedure,
+an invalid answer would result in playing another game before
+asking again.
+
+@
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch20/io.html b/js/games/nluqo.github.io/~bh/ssch20/io.html
new file mode 100644
index 0000000..0d04357
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch20/io.html
@@ -0,0 +1,1143 @@
+<P>
+
+<P><A NAME="typing"></A>
+<P><CENTER><IMG SRC="../ss-pics/io.jpg" ALT="figure: io"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 20: Input and Output</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 20</H2>
+<H1>Input and Output</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch20.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch21/functions-implement.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>
+<P>In the tic-tac-toe project in Chapter 10, we didn't write a complete game
+program.  We wrote a <EM>function</EM> that took a board position and <CODE>x</CODE>
+or <CODE>o</CODE> as arguments, returning the next move.  We noted at the time that
+a complete game program would also need to carry on a <EM>conversation</EM>
+with the user.  Instead of computing and returning one single value, a
+<A NAME="g1"></A><A NAME="g2"></A>conversational program must carry out a sequence of events in time,
+reading information from the keyboard and displaying other information
+on the screen.
+
+<P>Before we complete the tic-tac-toe project, we'll start by
+exploring Scheme's mechanisms for <A NAME="g3"></A><A NAME="g4"></A>interactive programming.
+
+<P><H2>Printing</H2>
+<A NAME="g5"></A>
+
+<P>Up until now, we've never told Scheme to print anything.  The programs we've
+written have computed values and returned them; we've relied on the
+read-eval-print loop to print these values.<A NAME="text1" HREF="io.html#ft1">[1]</A>
+
+<P>But let's say we want to write a program to print out all of the words to
+&quot;99 Bottles of Beer on the Wall.&quot; We could implement a function to produce a
+humongous <EM>list</EM> of the lines of the song, like this:
+
+<P><PRE>(define (bottles n)
+  (if (= n 0)
+      '()
+      (append (verse n)
+	      (bottles (- n 1)))))
+</PRE>
+
+<P><PRE>(define (verse n)
+  (list (cons n '(bottles of beer on the wall))
+	(cons n '(bottles of beer))
+	'(if one of those bottles should happen to fall)
+	(cons (- n 1) '(bottles of beer on the wall))
+	'()))
+
+&gt; (bottles 3)
+((3 BOTTLES OF BEER ON THE WALL)
+ (3 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+ (2 BOTTLES OF BEER ON THE WALL)
+ ()
+ (2 BOTTLES OF BEER ON THE WALL)
+ (2 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+ (1 BOTTLES OF BEER ON THE WALL)
+ ()
+ (1 BOTTLES OF BEER ON THE WALL)
+ (1 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+ (0 BOTTLES OF BEER ON THE WALL)
+ ())
+</PRE>
+
+<P>The problem is that we don't want a list.  All we
+want is to print out the lines of the song; storing them in a data structure
+is unnecessary and inefficient.  Also, some versions of Scheme would print
+the above list like this:
+
+<P><PRE>((3 BOTTLES OF BEER ON THE WALL) (3 BOTTLES OF BEER) (IF ONE OF
+ THOSE BOTTLES SHOULD HAPPEN TO FALL) (2 BOTTLES OF BEER ON THE
+ WALL) () (2 BOTTLES OF BEER ON THE WALL) (2 BOTTLES OF BEER) (IF
+ ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL) (1 BOTTLES OF BEER ON
+ THE WALL) () (1 BOTTLES OF BEER ON THE WALL) (1 BOTTLES OF BEER)
+ (IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL) (0 BOTTLES OF BEER
+ ON THE WALL) ())
+</PRE>
+
+<P>or even all on one line.  We can't rely on Scheme's mechanism for
+printing lists if we want to be sure of a particular arrangement on the
+screen.
+
+<P>Instead we'll write a program to <EM>print</EM> a verse, rather
+than return it in a list:
+<A NAME="g6"></A>
+
+<P><PRE>(define (<A NAME="g7"></A>bottles n)
+  (if (= n 0)
+      'burp
+      (begin (verse n)
+	     (bottles (- n 1)))))
+
+(define (<A NAME="g8"></A>verse n)
+  (show (cons n '(bottles of beer on the wall)))
+  (show (cons n '(bottles of beer)))
+  (show '(if one of those bottles should happen to fall))
+  (show (cons (- n 1) '(bottles of beer on the wall)))
+  (show '()))
+
+&gt; (bottles 3)
+(3 BOTTLES OF BEER ON THE WALL)
+(3 BOTTLES OF BEER)
+(IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+(2 BOTTLES OF BEER ON THE WALL)
+()
+(2 BOTTLES OF BEER ON THE WALL)
+(2 BOTTLES OF BEER)
+(IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+(1 BOTTLES OF BEER ON THE WALL)
+()
+(1 BOTTLES OF BEER ON THE WALL)
+(1 BOTTLES OF BEER)
+(IF ONE OF THOSE BOTTLES SHOULD HAPPEN TO FALL)
+(0 BOTTLES OF BEER ON THE WALL)
+()
+BURP
+</PRE>
+
+<P> 
+Notice that Scheme doesn't print an outer set of parentheses.
+Each line was printed separately; there isn't one big list containing all of
+them.<A NAME="text2" HREF="io.html#ft2">[2]</A>
+
+<P>Why was &quot;burp&quot; printed at the end?  Just because we're printing things
+explicitly doesn't mean that the read-eval-print loop stops functioning.  We
+typed the expression <CODE>(bottles 3)</CODE>.  In the course of evaluating that
+expression, Scheme printed several lines for us.  But the <EM>value</EM> of
+the expression was the word <CODE>burp</CODE>, because that's what <CODE>bottles</CODE>
+returned.
+
+<P><H2>Side Effects and Sequencing</H2>
+
+<P>How does our program work?  There are two new ideas here: <EM><A NAME="g9"></A><A NAME="g10"></A>side effects</EM> and <EM>sequencing.</EM>
+
+<P>Until now, whenever we've invoked a procedure, our only goal has been to get
+a return value.  The procedures we've used compute and return a value, and do
+nothing else.  <CODE>Show</CODE> is different.  Although every Scheme procedure
+returns a value, the Scheme language standard doesn't specify what
+value the printing procedures should return.<A NAME="text3" HREF="io.html#ft3">[3]</A> Instead, we are interested in their side effects.  In other words,
+we invoke <CODE>show</CODE> because we want it to <EM>do</EM> something, namely,
+print its argument on the screen.
+
+<P>What exactly do we mean by &quot;side effect&quot;?  The kinds of procedures that
+we've used before this chapter can compute values, invoke helper procedures,
+provide arguments to the helper procedures, and return a value.  There may be
+a lot of activity going on within the procedure, but the procedure
+affects the world outside of itself only by returning a value that some
+other procedure might use.  <CODE>Show</CODE> affects the world outside of itself
+by putting something on the screen.  After <CODE>show</CODE> has finished its
+work, someone who looks at the screen can tell that <CODE>show</CODE> was
+used.<A NAME="text4" HREF="io.html#ft4">[4]</A>
+
+<P>
+
+<P>Here's an example to illustrate the difference between values and effects:
+
+<P><PRE>(define (<A NAME="g11"></A>effect x)
+  (show x)
+  'done)
+
+(define (<A NAME="g12"></A>value x)
+  x)
+
+&gt; (effect '(oh! darling))
+(OH! DARLING)
+DONE
+
+&gt; (value '(oh! darling))
+(OH! DARLING)
+
+&gt; (bf (effect '(oh! darling)))
+(OH! DARLING)
+ONE
+&gt; (bf (value '(oh! darling)))
+(DARLING)
+
+&gt; (define (<A NAME="g13"></A>lots-of-effect x)
+    (effect x)
+    (effect x)
+    (effect x))
+
+&gt; (define (<A NAME="g14"></A>lots-of-value x)
+    (value x)
+    (value x)
+    (value x))
+
+&gt; (lots-of-effect '(oh! darling))
+(OH! DARLING)
+(OH! DARLING)
+(OH! DARLING)
+DONE
+
+&gt; (lots-of-value '(oh! darling))
+(OH! DARLING)
+</PRE>
+
+<P> 
+This example also demonstrates the second new idea,
+sequencing:  Each of <CODE>effect</CODE>, <CODE>lots-of-effect</CODE>,
+and <CODE>lots-of-value</CODE> contains more than one expression in
+its body.  When you invoke such a procedure, Scheme evaluates all
+the expressions in the body, in order, and returns the value of the
+last one.<A NAME="text5" HREF="io.html#ft5">[5]</A> This also
+works in the body of a <CODE>let</CODE>, which is really the body of a
+procedure, and in each clause of a <A NAME="g15"></A><CODE>cond</CODE>.<A NAME="text6" HREF="io.html#ft6">[6]</A>
+
+<P>When we invoked <CODE>lots-of-value</CODE>, Scheme invoked <CODE>value</CODE> three times;
+it discarded the values returned by the first two invocations, and returned
+the value from the third invocation.  Similarly, when we invoked <CODE>lots-of-effect</CODE>, Scheme invoked <CODE>effect</CODE> three times and returned the
+value from the third invocation.  But each invocation of <CODE>effect</CODE> caused
+its argument to be printed by invoking <CODE>show</CODE>.
+
+<P><H2>The <CODE><B>Begin</B></CODE> Special Form</H2>
+<A NAME="beg"></A>
+
+<P>The <CODE>lots-of-effect</CODE> procedure accomplished sequencing by having more
+than one expression in its body.  This works fine if the sequence of events
+that you want to perform is the entire body of a procedure.  But in <CODE>bottles</CODE> we wanted to include a sequence as one of the alternatives in an
+<CODE>if</CODE> construction.  We couldn't just say
+
+<P><PRE>(define (bottles n)                          ;; wrong
+  (if (= n 0)
+      '()
+      (verse n)
+      (bottles (- n 1))))
+</PRE>
+
+<P>because <CODE>if</CODE> must have exactly three arguments.  Otherwise,
+how would <CODE>if</CODE> know whether we meant <CODE>(verse n)</CODE> to be the second
+expression in the true case, or the first expression in the false case?
+
+<P>Instead, to turn the sequence of expressions into a single expression, we
+use the <A NAME="g16"></A><A NAME="g17"></A>special form <A NAME="g18"></A><CODE>begin</CODE>.  It takes any number of
+arguments, evaluates them from left to right, and returns the value of the
+last one.
+
+<P><PRE>(define bottles n)
+  (if (= n 0)
+      'burp
+      (begin (verse n)
+	     (bottles (- n 1)))))
+</PRE>
+
+<P>(One way to think about sequences in procedure bodies is that
+every procedure body has an invisible <CODE>begin</CODE> surrounding it.)
+
+<P><H2>This Isn't Functional Programming</H2>
+
+<P>Sequencing and side effects are radical departures from the idea of
+<A NAME="g19"></A><A NAME="g20"></A>functional programming.  In fact, we'd like to reserve the name <EM>function</EM> for something that computes and returns one value, with no side
+effects.  &quot;Procedure&quot; is the general term for the thing that <CODE>lambda</CODE>
+returns&mdash;an embodiment of an algorithm.  If the algorithm is the kind that
+computes and returns a single value without side effects, then we say that
+the procedure implements a function.<A NAME="text7" HREF="io.html#ft7">[7]</A>
+
+<P>There is a certain kind of sequencing even in functional programming.  If
+you say
+
+<P><PRE>(* (+ 3 4) (- 92 15))
+</PRE>
+
+<P>it's clear that the addition has to happen before the
+multiplication, because the result of the addition provides one of the
+arguments to the multiplication.  What's new in the sequential programming
+style is the <EM>emphasis</EM> on sequence, and the fact that the expressions
+in the sequence are <EM>independent</EM> instead of contributing values to
+each other.  In this multiplication problem, for example, we don't care
+whether the addition happens before or after the subtraction.  If the
+addition and subtraction were in a sequence, we'd be using them for
+independent purposes:
+
+<P><PRE>(begin
+ (show (+ 3 4))
+ (show (- 92 15)))
+</PRE>
+
+<P>This is what we mean by being independent.  Neither expression
+helps in computing the other.  And the order matters because we can see
+the order in which the results are printed.
+
+<P><H2>Not Moving to the Next Line</H2>
+
+<P>Each invocation of <CODE>show</CODE> prints a separate line.  What if we
+want a program that prints several things on the same line, like this:
+
+<P><PRE>&gt; (begin (show-addition 3 4)
+	 (show-addition 6 8)
+	 'done)
+3+4=7
+6+8=14
+DONE
+</PRE>
+
+<P>We use <A NAME="g21"></A><CODE>display</CODE>, which doesn't move to the next line after
+printing its argument:
+
+<P><PRE>(define (<A NAME="g22"></A>show-addition x y)
+  (display x)
+  (display '+)
+  (display y)
+  (display '=)
+  (show (+ x y)))
+</PRE>
+
+<P>(The last one is a <CODE>show</CODE> because we <EM>do</EM> want to start
+a new line after it.)
+
+<P>What if you just want to print a blank line?  You use <A NAME="g23"></A><CODE>newline</CODE>:
+
+<P><PRE>(define (verse n)
+  (show (cons n '(bottles of beer on the wall)))
+  (show (cons n '(bottles of beer)))
+  (show '(if one of those bottles should happen to fall))
+  (show (cons (- n 1) '(bottles of beer on the wall)))
+  (newline))                                 ; replaces (show '())
+</PRE>
+
+<P>In fact, <CODE>show</CODE> isn't an official Scheme primitive; we wrote it
+in terms of <CODE>display</CODE> and <CODE>newline</CODE>.
+
+<P><H2>Strings</H2>
+
+<P>Throughout the book we've occasionally used strings, that is, words enclosed in
+double-quote marks so that Scheme will permit the use of punctuation or other
+unusual characters.  Strings also preserve the case of letters, so they can
+be used to beautify our song even more.  Since <EM>any</EM> character can be
+in a string, including spaces, the easiest thing to do in this case is
+to treat all the letters, spaces, and punctuation characters of each line of
+the song as one long word.  (If we wanted to be able to compute functions of
+the individual words in each line, that wouldn't be such a good idea.)
+
+<P><PRE>(define (<A NAME="g24"></A>verse n)
+  (display n)
+  (show &quot; bottles of beer on the wall,&quot;)
+  (display n)
+  (show &quot; bottles of beer.&quot;)
+  (show &quot;If one of those bottles should happen to fall,&quot;)
+  (display (- n 1))
+  (show &quot; bottles of beer on the wall.&quot;)
+  (newline))
+</PRE>
+
+<P><PRE>&gt; (verse 6)
+6 bottles of beer on the wall,
+6 bottles of beer.
+If one of those bottles should happen to fall,
+5 bottles of beer on the wall.
+
+#F                               ; or whatever is returned by (newline)
+</PRE>
+
+<P>
+It's strange to think of &quot;<CODE>&nbsp;bottles&nbsp;of&nbsp;beer&nbsp;on&nbsp;the&nbsp;wall,</CODE>&quot; as a single word.  But the rule is that
+anything inside double quotes counts as a single word.  It doesn't have to
+be an English word.
+
+<P><H2>A Higher-Order Procedure for Sequencing</H2>
+
+<P>Sometimes we want to print each element of a list separately:
+
+<P><PRE>(define (<A NAME="g25"></A>show-list lst)
+  (if (null? lst)
+      'done
+      (begin (show (car lst))
+	     (show-list (cdr lst)))))
+
+&gt; (show-list '((dig a pony) (doctor robert) (for you blue)))
+(DIG A PONY)
+(DOCTOR ROBERT)
+(FOR YOU BLUE)
+DONE
+</PRE>
+
+<P>Like other patterns of computation involving lists, this one can be
+abstracted into a higher-order procedure.  (We can't call it a
+&quot;higher-order function&quot; because this one is for computations with side
+effects.)  The procedure <CODE><A NAME="g26"></A><CODE>for-each</CODE></CODE> is part of standard Scheme:
+
+<P><PRE>&gt; (for-each show '((mean mr mustard) (no reply) (tell me why)))
+(MEAN MR MUSTARD)
+(NO REPLY)
+(TELL ME WHY)
+</PRE>
+
+<P>The value returned by <CODE>for-each</CODE> is unspecified.
+
+<P>Why couldn't we just use <CODE>map</CODE> for this purpose?  There are two reasons.
+One is just an efficiency issue:  <CODE>Map</CODE> constructs a list containing the
+values returned by each of its sub-computations; in this example, it would
+be a list of three instances of the unspecified value returned by <CODE>show</CODE>. But we aren't going to use that list for anything, so there's no
+point in constructing it.  The second reason is more serious.  In functional
+programming, the order of evaluation of subexpressions is unspecified.  For
+example, when we evaluate the expression
+
+<P><PRE>(- (+ 4 5) (* 6 7))
+</PRE>
+
+<P>we don't know whether the addition or the multiplication happens
+first.  Similarly, the order in which <CODE>map</CODE> computes the results for
+each element is unspecified.  That's okay as long as the ultimately returned
+list of results is in the right order.  But when we are using side effects,
+we <EM>do</EM> care about the order of evaluation.  In this case, we want
+to make sure that the elements of the argument list are printed from left to
+right.  <CODE>For-each</CODE> guarantees this ordering.
+
+<P><H2>Tic-Tac-Toe Revisited</H2>
+
+<P>We're working up toward playing a game of tic-tac-toe against the computer.
+But as a first step, let's have the computer play against itself.  What we
+already have is <CODE>ttt</CODE>, a <EM>strategy</EM> function: one that takes a
+board position as argument (and also a letter <CODE>x</CODE> or <CODE>o</CODE>) and
+returns the chosen next move.  In order to play a game of tic-tac-toe, we
+need two players; to make it more interesting, each should have its own
+strategy.  So we'll write another one, quickly, that just moves in the first
+empty square it sees:
+
+<P><PRE>(define (<A NAME="g27"></A>stupid-ttt position letter)
+  (location '_ position))
+
+(define (<A NAME="g28"></A>location letter word)
+  (if (equal? letter (first word))
+      1
+      (+ 1 (location letter (bf word)))))
+</PRE>
+
+<P>Now we can write a program that takes two strategies as arguments and
+actually plays a game between them.
+
+<P><PRE>(define (<A NAME="g29"></A>play-ttt x-strat o-strat)
+  (play-ttt-helper x-strat o-strat '_________ 'x))
+
+(define (<A NAME="g30"></A>play-ttt-helper x-strat o-strat position whose-turn)
+  (cond ((already-won? position (opponent whose-turn))
+	 (list (opponent whose-turn) 'wins!))
+	((tie-game? position) '(tie game))
+	(else (let ((square (if (equal? whose-turn 'x)
+				(x-strat position 'x)
+				(o-strat position 'o))))
+		(play-ttt-helper x-strat
+				 o-strat
+				 (add-move square whose-turn position)
+				 (opponent whose-turn))))))
+</PRE>
+ 
+We use a helper procedure because we need to keep track of two
+pieces of information besides the strategy procedures: the current board
+position and whose turn it is (<CODE>x</CODE> or <CODE>o</CODE>).  The helper procedure
+is invoked recursively for each move.  First it checks whether the game
+is already over (won or tied).<A NAME="text8" HREF="io.html#ft8">[8]</A>
+If not, the helper procedure invokes the current player's strategy procedure,
+which returns the square number for the next move.  For the recursive call,
+the arguments are the same two strategies, the new position after the move,
+and the letter for the other player.
+
+<P>We still need <CODE>add-move</CODE>, the procedure that takes a square and an old
+position as arguments and returns the new position.
+
+<P><PRE>(define (<A NAME="g33"></A>add-move square letter position)
+  (if (= square 1)
+      (word letter (bf position))
+      (word (first position)
+	    (add-move (- square 1) letter (bf position)))))
+
+&gt; (play-ttt ttt stupid-ttt)
+(X WINS!)
+
+&gt; (play-ttt stupid-ttt ttt)
+(O WINS!)
+</PRE>
+
+<P><H2>Accepting User Input</H2>
+
+<P>The work we did in the last section was purely functional.  We didn't print
+anything (except the ultimate return value, as always) and we didn't
+have to read information from a human player, because there wasn't one.
+
+<P>You might expect that the structure of an <EM>interactive</EM> game program
+would be very different, with a top-level procedure full of sequential
+operations.  But the fact is that we hardly have to change anything to turn
+this into an interactive game.  All we need is a new &quot;strategy&quot; procedure
+that asks the user where to move, instead of computing a move based on
+built-in rules.
+
+<P><PRE>(define (<A NAME="g34"></A>ask-user position letter)
+  (print-position position)
+  (display letter)
+  (display &quot;'s move: &quot;)
+  (read))
+
+(define (print-position position)            ;; first version
+  (show position))
+</PRE>
+
+<P>(Ultimately we're going to want a beautiful two-dimensional
+display of the current position, but we don't want to get distracted by that
+just now.  That's why we've written a trivial temporary version.)
+
+<P><PRE>&gt; (play-ttt ttt ask-user)
+____X____
+O'S MOVE: <B>1</B>
+O___XX___
+O'S MOVE: <B>4</B>
+O__OXXX__
+O'S MOVE: <B>3</B>
+OXOOXXX__
+O'S MOVE: <B>8</B>
+(TIE GAME)
+</PRE>
+
+<P>What the user typed is just the single digits shown in boldface at
+the ends of the lines.
+
+<P>What's new here is that we invoke the procedure <A NAME="g35"></A><CODE>read</CODE>.  It waits for
+you to type a Scheme expression, and returns that expression.  Don't
+be confused:  <CODE>Read</CODE> does <EM>not</EM> evaluate what you type.  It
+returns exactly the same expression that you type:
+
+<P><PRE>(define (<A NAME="g36"></A>echo)
+  (display &quot;What? &quot;)
+  (let ((expr (read)))
+    (if (equal? expr 'stop)
+	'okay
+	(begin
+	 (show expr)
+	 (echo)))))
+</PRE>
+
+<P><PRE>&gt; (echo)
+What? <B>hello</B>
+HELLO
+What? <B>(+ 2 3)</B>
+(+ 2 3)
+What? <B>(first (glass onion))</B>
+(FIRST (GLASS ONION))
+What? <B>stop</B>
+OKAY
+</PRE>
+
+<P><H2>Aesthetic Board Display</H2>
+
+<P>Here's our beautiful position printer:
+
+<P>
+<PRE>(define (<A NAME="g37"></A>print-position position)
+  (print-row (subword position 1 3))
+  (show &quot;-+-+-&quot;)
+  (print-row (subword position 4 6))
+  (show &quot;-+-+-&quot;)
+  (print-row (subword position 7 9))
+  (newline))
+
+(define (<A NAME="g38"></A>print-row row)
+  (maybe-display (first row))
+  (display &quot;|&quot;)
+  (maybe-display (first (bf row)))
+  (display &quot;|&quot;)
+  (maybe-display (last row))
+  (newline))
+
+(define (<A NAME="g39"></A>maybe-display letter)
+  (if (not (equal? letter '_))
+      (display letter)
+      (display &quot; &quot;)))
+
+(define (<A NAME="g40"></A>subword wd start end)
+  ((repeated bf (- start 1))
+   ((repeated bl (- (count wd) end))
+    wd)))<A NAME="text9" HREF="io.html#ft9">[9]</A></PRE>
+
+ 
+Here's how it works:
+
+<P><PRE>&gt; (print-position '_x_oo__xx)
+ |X| 
+-+-+-
+O|O| 
+-+-+-
+ |X|X
+</PRE>
+ 
+<H2>Reading and Writing Normal Text</H2>
+
+<P>The <CODE>read</CODE> procedure works fine as long as what you type looks like a
+Lisp program.  That is, it reads one expression at a time.  In the
+tic-tac-toe program the user types a single number, which is a Scheme
+expression, so <CODE>read</CODE> works fine.  But what if we want to read more than
+one word?
+
+<P><PRE>(define (music-critic)                       ;; first version
+  (show &quot;What's your favorite Beatles song?&quot;)
+  (let ((song (read)))
+    (show (se &quot;I like&quot; song &quot;too.&quot;))))
+
+&gt; (music-critic)
+What's your favorite Beatles song?
+<B>She Loves You</B>
+(I like SHE too.)
+</PRE>
+
+<P>If the user had typed the song title in parentheses, then it would
+have been a single Scheme expression and <CODE>read</CODE> would have accepted it.
+But we don't want the users of our program to have to be typing parentheses
+all the time.
+
+<P>Scheme also lets you read one character at a time.  This allows you to read
+any text, with no constraints on its format.  The disadvantage is that you
+find yourself putting a lot of effort into minor details.  We've provided a
+procedure <CODE><A NAME="g41"></A><CODE>read-line</CODE></CODE> that reads one line of input and returns a
+sentence.  The words in that sentence will contain any punctuation
+characters that appear on the line, including parentheses, which are not
+interpreted as sublist delimiters by <CODE>read-line</CODE>.  <CODE>Read-line</CODE> also
+preserves the case of letters.
+
+<P><PRE>(define (music-critic)                       ;; second version
+  (read-line)   ; See explanation below.
+  (show &quot;What's your favorite Beatles song?&quot;)
+  (let ((song (read-line)))
+    (show (se &quot;I like&quot; song &quot;too.&quot;))))
+
+&gt; (music-critic)
+What's your favorite Beatles song?
+<B>She Loves You</B>
+(I like She Loves You too.)
+</PRE>
+
+<P>Why do we call <CODE>read-line</CODE> and ignore its result at the
+beginning of <CODE>music-critic</CODE>?  It has to do with the interaction between
+<CODE>read-line</CODE> and <CODE>read</CODE>.  <CODE>Read</CODE> treats what you type as a
+sequence of Scheme expressions; each invocation of <CODE>read</CODE> reads one of
+them.  <CODE>Read</CODE> pays no attention to formatting details, such as several
+consecutive spaces or line breaks.  If, for example, you type several
+expressions on the same line, it will take several invocations of <CODE>read</CODE>
+to read them all.
+
+<P>By contrast, <CODE>read-line</CODE> treats what you type as a sequence of lines,
+reading one line per invocation, so it does pay attention to line breaks.
+
+<P>Either of these ways to read input is sensible in itself, but if you mix
+the two, by invoking <CODE>read</CODE> sometimes and <CODE>read-line</CODE> sometimes in
+the same program, the results can be confusing.  Suppose you type a line
+containing an expression and your program invokes <CODE>read</CODE> to read it.
+Since there might have been another expression on the line, <CODE>read</CODE>
+doesn't advance to the next line until you ask for the next
+expression.  So if you now invoke <CODE>read-line</CODE>, thinking that it will
+read another line from the keyboard, it will instead return an empty list,
+because what it sees is an empty line&mdash;what's left after <CODE>read</CODE> uses up
+the expression you typed.
+
+<P>You may be thinking, &quot;But <CODE>music-critic</CODE> doesn't call <CODE>read</CODE>!&quot;
+That's true, but Scheme itself used <CODE>read</CODE> to read the expression that
+you used to invoke <CODE>music-critic</CODE>.  So the first invocation of <CODE>read-line</CODE> is needed to skip over the spurious empty line.
+
+<P>Our solution works only if <CODE>music-critic</CODE> is invoked directly at a
+Scheme prompt.  If <CODE>music-critic</CODE> were a subprocedure of some larger
+program that has already called <CODE>read-line</CODE> before calling <CODE>music-critic</CODE>, the extra <CODE>read-line</CODE> in <CODE>music-critic</CODE> would really
+read and ignore a useful line of text.
+
+<P>If you write a procedure using <CODE>read-line</CODE> that will sometimes be called
+directly and sometimes be used as a subprocedure, you can't include an extra
+<CODE>read-line</CODE> call in it.  Instead, when you call your procedure directly
+from the Scheme prompt, you must say
+
+<P><PRE>&gt; (begin (read-line) (my-procedure))
+</PRE>
+
+<P>Another technical detail about <CODE>read-line</CODE> is that since
+it preserves the capitalization of words, its result may
+include strings, which will be shown in quotation marks if you return the
+value rather than <CODE>show</CODE>ing it:
+
+<P><PRE>(define (music-critic-return)
+  (read-line)
+  (show &quot;What's your favorite Beatles song?&quot;)
+  (let ((song (read-line)))
+    (se &quot;I like&quot; song &quot;too.&quot;)))
+
+&gt; (music-critic-return)
+What's your favorite Beatles song?
+<B>She Loves You</B>
+(&quot;I like&quot; &quot;She&quot; &quot;Loves&quot; &quot;You&quot; &quot;too.&quot;)
+</PRE>
+
+<P>We have also provided <CODE><A NAME="g42"></A><CODE>show-line</CODE>,</CODE> which takes a sentence
+as argument.  It prints the sentence without surrounding parentheses,
+followed by a newline.  (Actually, it takes any list as argument; it prints
+all the parentheses except for the outer ones.)
+
+<P><PRE>(define (<A NAME="g43"></A>music-critic)
+  (read-line)
+  (show &quot;What's your favorite Beatles song?&quot;)
+  (let ((song (read-line)))
+    (show-line (se &quot;I like&quot; song &quot;too.&quot;))))
+
+&gt; (music-critic)
+What's your favorite Beatles song?
+<B>She Loves You</B>
+I like She Loves You too.
+</PRE>
+
+<P>The difference between <CODE>show</CODE> and <CODE>show-line</CODE> isn't
+crucial.  It's just a matter of a pair of parentheses.  The point is that
+<CODE>read-line</CODE> and <CODE>show-line</CODE> go together.  <CODE>Read-line</CODE> reads a
+bunch of disconnected words and combines them into a sentence.  <CODE>Show-line</CODE> takes a sentence and prints it as if it were a bunch of
+disconnected words.  Later, when we read and write files in Chapter
+22, this ability to print in the same form in which we read will be
+important.
+
+<P><H2>Formatted Text</H2>
+
+<P>We've been concentrating on the use of sequential programming with explicit
+<A NAME="spformat"></A>
+printing instructions for the sake of conversational programs.  Another
+common application of sequential printing is to display tabular information,
+such as columns of numbers.  The difficulty is to get the numbers to line up
+so that corresponding digits are in the same position, even when the numbers
+have very widely separated values.  The
+<A NAME="g44"></A><CODE>align</CODE> function can be used to convert a number to a printable word
+with a fixed number of positions before and after the decimal point:
+
+<P><PRE>(define (square-root-table nums)
+  (if (null? nums)
+      'done
+      (begin (display (align (car nums) 7 1))
+	     (show (align (sqrt (car nums)) 10 5))
+	     (square-root-table (cdr nums)))))
+
+&gt; (square-root-table '(7 8 9 10 20 98 99 100 101 1234 56789))
+    7.0   2.64575
+    8.0   2.82843
+    9.0   3.00000
+   10.0   3.16228
+   20.0   4.47214
+   98.0   9.89949
+   99.0   9.94987
+  100.0  10.00000
+  101.0  10.04988
+ 1234.0  35.12834
+56789.0 238.30443
+DONE
+</PRE>
+
+<P><CODE>Align</CODE> takes three arguments.  The first is the value to be
+displayed.  The second is the width of the column in which it will be
+displayed; the returned value will be a word with that many characters in it.
+The third argument is the number of digits that should be displayed to the
+right of the decimal point.  (If this number is zero, then no decimal point
+will be displayed.)  The width must be great enough to include all the
+digits, as well as the decimal point and minus sign, if any.
+
+<P>As the program example above indicates, <CODE>align</CODE> does not print
+anything.  It's a function that returns a value suitable for printing with
+<CODE>display</CODE> or <CODE>show</CODE>.
+
+<P>What if the number is too big to fit in the available space?
+
+<P><PRE>&gt; (align 12345679 4 0)
+&quot;123+"
+</PRE>
+
+<P><CODE>Align</CODE> returns a word containing the first few digits,
+as many as fit, ending with a plus sign to indicate that part of the value
+is missing.
+
+<P><CODE>Align</CODE> can also be used to include non-numeric text in columns.  If
+the first argument is not a number, then only two arguments are needed; the
+second is the column width.  In this case <CODE>align</CODE> returns a word with
+extra spaces at the right, if necessary, so that the argument word will
+appear at the left in its column:
+
+<P><PRE>(define (<A NAME="g45"></A>name-table names)
+  (if (null? names)
+      'done
+      (begin (display (align (cadar names) 11))
+	     (show (caar names))
+	     (name-table (cdr names)))))
+
+&gt; (name-table '((john lennon) (paul mccartney)
+		(george harrison) (ringo starr)))
+LENNON     JOHN
+MCCARTNEY  PAUL
+HARRISON   GEORGE
+STARR      RINGO
+DONE
+</PRE>
+
+<P>As with numbers, if a non-numeric word won't fit in the allowed
+space, <CODE>align</CODE> returns a partial word ending with a plus sign.
+
+<P>This <CODE>align</CODE> function is not part of standard Scheme.  Most programming
+languages, including some versions of Scheme, offer much more elaborate
+formatting capabilities with many alternate ways to represent both numbers
+and general text.  Our version is a minimal capability to show the flavor
+and to meet the needs of projects in this book.
+
+<P><H2>Sequential Programming and Order of Evaluation</H2>
+
+<P>Our expanded tic-tac-toe program includes both functional and sequential
+parts.  The program computes its strategy functionally but uses sequences
+of commands to control the <EM><A NAME="g46"></A><A NAME="g47"></A>user interface</EM> by alternately
+printing information to the screen and reading information from the keyboard.
+
+<P>By adding sequential programming to our toolkit, we've increased our ability
+to write interactive programs.  But there is a cost that goes along with
+this benefit:  We now have to pay more attention to the order of events than
+we did in purely functional programs.
+
+<P>The obvious concern about order of events is that sequences of <CODE>show</CODE>
+expressions must come in the order in which we want them to appear, and <CODE>read</CODE> expressions must fit into the sequence properly so that the user is
+asked for the right information at the right time.
+
+<P>But there is another, less obvious issue about order of events.  When the
+evaluation of expressions can have side effects in addition to returning
+values, the order of evaluation of argument subexpressions becomes important.
+Here's an example to show what we mean.  Suppose we type the expression
+
+<P><PRE>(list (+ 3 4) (- 10 2))
+</PRE>
+
+<P>The answer, of course, is <CODE>(7 8)</CODE>.  It doesn't matter whether
+Scheme computes the seven first (left to right) or the eight first (right to
+left).  But here's a similar example in which it <EM>does</EM> matter:
+
+<P><PRE>(define (<A NAME="g48"></A>show-and-return x)
+  (show x)
+  x)
+
+&gt; (list (show-and-return (+ 3 4)) (show-and-return (- 10 2)))
+8
+7
+(7 8)
+</PRE>
+
+<P>The value that's ultimately returned, in this example, is the same
+as before.  But the two numeric values that go into the list are also
+printed separately, so we can see which is computed first.  (We've shown
+the case of right-to-left computation; your Scheme might be different.)
+
+<P>Suppose you want to make sure that the seven prints first, regardless of
+which order your Scheme uses.  You could do this:
+
+<P><PRE>&gt; (let ((left (show-and-return (+ 3 4))))
+    (list left (show-and-return (- 10 2))))
+7
+8
+(7 8)
+</PRE>
+
+<P>The expression in the body of a <CODE>let</CODE> can't be evaluated until
+the <CODE>let</CODE> variables (such as <CODE>left</CODE>) have had their values computed.
+
+<P>It's hard to imagine a practical use for the artificial <CODE>show-and-return</CODE> procedure, but a similar situation arises whenever we use
+<CODE>read</CODE>.  Suppose we want to write a procedure to ask a person for his or
+her full name, returning a two-element list containing the first and last
+name.  A natural mistake to make would be to write this procedure:
+
+<P><PRE>(define (ask-for-name)                       ;; wrong
+  (show &quot;Please type your first name, then your last name:&quot;)
+  (list (read) (read)))
+
+&gt; (ask-for-name)
+Please type your first name, then your last name:
+<B>John
+Lennon</B>
+(LENNON JOHN)
+</PRE>
+
+<P>What went wrong?  We happen to be using a version of Scheme that
+evaluates argument subexpressions from right to left.  Therefore, the word
+<CODE>John</CODE> was read by the rightmost call to <CODE>read</CODE>, which provided the
+second argument to <CODE>list</CODE>.  The best solution is to use <CODE>let</CODE> as we
+did above:
+
+<P><PRE>(define (<A NAME="g49"></A>ask-for-name)
+  (show &quot;Please type your first name, then your last name:&quot;)
+  (let ((first-name (read)))
+    (list first-name (read))))
+</PRE>
+
+<P>Even this example looks artificially simple, because of the two invocations
+of <CODE>read</CODE> that are visibly right next to each other in the erroneous
+version.  But look at <CODE>play-ttt-helper</CODE>.  The word <CODE>read</CODE> doesn't
+appear in its body at all.  But when we invoke it using <CODE>ask-user</CODE> as
+the strategy procedure for <CODE>x</CODE>, the expression
+
+<P><PRE>(x-strat position 'x)
+</PRE>
+
+<P>hides an invocation of <CODE>read</CODE>.  The structure of <CODE>play-ttt-helper</CODE> includes a <CODE>let</CODE> that controls the timing of that <CODE>read</CODE>.  (As it turns out, in this particular case we could have gotten away
+with writing the program without <CODE>let</CODE>.  The hidden invocation of <CODE>read</CODE> is the only subexpression with a side effect, so there aren't two
+effects that might get out of order.  But we had to think carefully about
+the program to be sure of that.)
+
+<P><H2>Pitfalls</H2>
+
+<P>It's easy to get confused about what is printed explicitly by your
+<A NAME="g50"></A>
+program and what is printed by Scheme's read-eval-print loop.  Until now,
+<EM>all</EM> printing was of the second kind.  Here's an example that doesn't
+do anything very interesting but will help make the point clear:
+
+<P><PRE>(define (name)
+  (display &quot;MATT &quot;)
+  'wright)
+
+&gt; (name)
+MATT WRIGHT
+</PRE>
+
+<P>At first glance it looks as if putting the word &quot;Matt&quot; inside a
+call to <CODE>display</CODE> is unnecessary.  After all, the word <CODE>wright</CODE> is
+printed even without using <CODE>display</CODE>.  But watch this:
+
+<P><PRE>&gt; (bf (name))
+MATT RIGHT
+</PRE>
+
+<P>Every time you invoke <CODE>name</CODE>, whether or not as the entire
+expression used at a Scheme prompt, the word <CODE>MATT</CODE> is printed.  But
+the word <CODE>wright</CODE> is <EM>returned,</EM> and may or may not be printed
+depending on the context in which <CODE>name</CODE> is invoked.
+
+<P>A sequence of expressions returns the value of the <EM>last</EM>
+expression.  If that isn't what you want, you must remember the value you
+want to return using <CODE>let</CODE>:
+
+<P><PRE>(let ((result (compute-this-first)))
+  (begin
+   (compute-this-second)
+   (compute-this-third)
+   result))
+</PRE>
+
+<P>Don't forget that the first call to <CODE>read-line</CODE>, or any call to
+<CODE>read-line</CODE> after a call to <CODE>read</CODE>, will probably read the empty
+line that <CODE>read</CODE> left behind.
+
+<P>Sometimes you want to use what the user typed more than once in your
+program.  But don't forget that <CODE>read</CODE> has an effect as well as a return
+value.  Don't try to read the same expression twice:
+
+<P><PRE>(define (ask-question question)              ;; wrong
+  (show question)
+  (cond ((equal? (read) 'yes) #t)
+	((equal? (read) 'no) #f)
+	(else (show &quot;Please answer yes or no.&quot;)
+	      (ask-question question))))
+</PRE>
+
+<P>If the answer is <CODE>yes</CODE>, this procedure will work fine.  But if
+not, the second invocation of <CODE>read</CODE> will read a second expression, not
+test the same expression again as intended.  To avoid this problem, invoke
+<CODE>read</CODE> only once for each expression you want to read, and use <CODE>let</CODE>
+to remember the result:
+
+<P><PRE>(define (<A NAME="g51"></A>ask-question question)
+  (show question)
+  (let ((answer (read)))
+    (cond ((equal? answer 'yes) #t)
+	  ((equal? answer 'no) #f)
+	  (else (show &quot;Please answer yes or no.&quot;)
+		(ask-question question)))))
+</PRE>
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>20.1</B>&nbsp;&nbsp;What happens when we evaluate the following expression?  What is printed,
+and what is the return value?  Try to figure it out in your head before you
+try it on the computer.
+
+<P><PRE>(cond ((= 2 3) (show '(lady madonna)) '(i call your name))
+      ((&lt; 2 3) (show '(the night before)) '(hello little girl))
+      (else '(p.s. i love you)))
+</PRE>
+
+<P>
+<B>20.2</B>&nbsp;&nbsp;What does <CODE>newline</CODE> return in your version of Scheme?
+
+
+<P><B>20.3</B>&nbsp;&nbsp;Define <CODE>show</CODE> in terms of <CODE>newline</CODE> and <CODE>display</CODE>.
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>20.4</B>&nbsp;&nbsp;Write a program that carries on a conversation like the following example.
+What the user types is in boldface.
+
+<P><PRE>&gt; <B>(<A NAME="g52"></A>converse)</B>
+Hello, I'm the computer.  What's your name? <B>Brian Harvey</B>
+Hi, Brian.  How are you? <B>I'm fine.</B>
+Glad to hear it.
+</PRE>
+
+<P>
+<B>20.5</B>&nbsp;&nbsp;Our <CODE>name-table</CODE> procedure uses a fixed width for the column containing
+the last names of the people in the argument list.  Suppose that instead of
+liking British-invasion music you are into late romantic Russian composers:
+
+<P><PRE>&gt; (name-table '((piotr tchaikovsky) (nicolay rimsky-korsakov)
+		(sergei rachmaninov) (modest musorgsky)))
+</PRE>
+
+<P>Alternatively, perhaps you like jazz:
+
+<P><PRE>&gt; (name-table '((bill evans) (paul motian) (scott lefaro)))
+</PRE>
+
+<P>Modify <CODE>name-table</CODE> so that it figures out the longest last
+name in its argument list, adds two for spaces, and uses that number as the
+width of the first column.
+
+
+<P>
+<B>20.6</B>&nbsp;&nbsp;The procedure <CODE>ask-user</CODE> isn't robust.  What happens if you type
+something that isn't a number, or isn't between 1 and 9?  Modify it to check
+that what the user types is a number between 1 and 9.  If not, it should
+print a message and ask the user to try again.
+
+
+<P>
+<B>20.7</B>&nbsp;&nbsp;Another problem with <CODE>ask-user</CODE> is that it allows a user to request a
+square that isn't free.  If the user does this, what happens?  Fix <CODE>ask-user</CODE> to ensure that this can't happen.
+
+
+<P>
+<B>20.8</B>&nbsp;&nbsp;At the end of the game, if the computer wins or ties, you never find out
+which square it chose for its final move.  Modify the program to correct
+this.  (Notice that this exercise requires you to make <CODE>play-ttt-helper</CODE>
+non-functional.)
+
+
+<P>
+<B>20.9</B>&nbsp;&nbsp;The way we invoke the game program isn't very user-friendly.  Write a
+procedure <CODE>game</CODE> that asks you whether you wish to play <CODE>x</CODE> or <CODE>o</CODE>, then starts a game.  (By definition, <CODE>x</CODE> plays first.)  Then write a
+procedure <CODE>games</CODE> that allows you to keep playing repeatedly.  It
+can ask &quot;do you want to play again?&quot; after each game.  (Make sure that
+the outcome of each game is still reported, and that the user can choose
+whether to play <CODE>x</CODE> or <CODE>o</CODE> before each game.)
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="io.html#text1">[1]</A> The only
+exception is that we've used <CODE>trace</CODE>, which prints messages about
+the progress of a computation.<P>
+<A NAME="ft2" HREF="io.html#text2">[2]</A> We know that it's still not as beautiful as can be, because of
+the capital letters and parentheses, but we'll get to that later.<P>
+<A NAME="ft3" HREF="io.html#text3">[3]</A> Suppose <CODE>show</CODE>
+returns <CODE>#f</CODE> in your version of Scheme.  Then you might see
+
+<P><PRE>&gt; (show 7)
+7
+#F
+</PRE>
+
+<P>But since the return value is unspecified, we try to write
+programs in such a way that we never use <CODE>show</CODE>'s return value as the
+return value from our procedures.  That's why we return values like <CODE>burp</CODE>.<P>
+<A NAME="ft4" HREF="io.html#text4">[4]</A> The term <EM>side</EM> effect is based on the idea that a
+procedure may have a useful return value as its main purpose and may also
+have an effect &quot;on the side.&quot; It's a misnomer to talk about the
+side effect of <CODE>show</CODE>, since the effect is its main purpose.  But nobody
+ever says &quot;side return value&quot;!<P>
+<A NAME="ft5" HREF="io.html#text5">[5]</A> In Chapter 4, we said that the body of a
+procedure was always one single expression.  We lied.  But as long
+as you don't use any procedures with side effects, it doesn't do you
+any good to evaluate more than one expression in a body.<P>
+<A NAME="ft6" HREF="io.html#text6">[6]</A> For example:
+
+<P><PRE>&gt; (cond ((&lt; 4 0)
+	 (show '(how interesting))
+	 (show '(4 is less than zero?))
+	 #f)
+	((&gt; 4 0)
+	 (show '(more reasonable))
+	 (show '(4 really is more than zero))
+	 'value)
+	(else
+	 (show '(you mean 4=0?))
+	 #f))
+(MORE REASONABLE)
+(4 REALLY IS MORE THAN ZERO)
+VALUE</PRE><P>
+<A NAME="ft7" HREF="io.html#text7">[7]</A> Sometimes people sloppily
+say that the procedure <EM>is</EM> a function.  In fact, you may hear people
+be <EM>really</EM> sloppy and call a non-functional procedure a function!<P>
+<A NAME="ft8" HREF="io.html#text8">[8]</A> You wrote the procedures <CODE>already-won?</CODE> and <CODE>tie-game?</CODE> in Exercises <A HREF="../ssch10/ttt.html#tttwon">10.1</A> and <A HREF="../ssch10/ttt.html#ttttied">10.2</A>:
+
+<P><PRE>(define (<A NAME="g31"></A>already-won? position who)
+  (member? (word who who who)  (find-triples position)))
+
+(define (<A NAME="g32"></A>tie-game? position)
+  (not (member? '_ position)))
+</PRE><P>
+<A NAME="ft9" HREF="io.html#text9">[9]</A> Alternate version:
+
+<PRE>(define (subword wd start end)
+  (cond ((&gt; start 1) (subword (bf wd) (- start 1) (- end 1)))
+	((&lt; end (count wd)) (subword (bl wd) start end))
+	(else wd)))
+</PRE>
+
+<P>You can take your choice, depending on which you think is easier,
+recursion or higher-order functions.
+<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch21/functions-implement.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch20/part6.html b/js/games/nluqo.github.io/~bh/ssch20/part6.html
new file mode 100644
index 0000000..ac9eabe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch20/part6.html
@@ -0,0 +1,111 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science, Part 20: Sequential Programming</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Part VI</H2>
+<H1>Sequential Programming</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch20.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch19/implement-hof.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="io.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR><BIG>
+
+<P>The three big ideas in this part are <EM>effect, sequence,</EM> and <EM>state.</EM>
+
+<P>Until now, we've been doing functional programming, where the focus is on
+functions and their return values.  Invoking a function is like asking a
+question: &quot;What's two plus two?&quot; In this part of the book we're going to
+talk about giving commands to the computer as well as asking it questions.
+That is, we'll invoke procedures that tell Scheme to <EM>do</EM> something,
+such as <CODE>wash-the-dishes</CODE>.  (Unfortunately, the Scheme standard
+leaves out this primitive.)  Instead of merely computing a value, such a
+procedure has an <EM>effect,</EM> an action that changes something.
+
+<P>Once we're thinking about actions, it's very natural to consider a <EM>sequence</EM> of actions.  First cooking dinner, then eating, and then washing
+the dishes is one sequence.  First eating, then washing the dishes, and then
+cooking is a much less sensible sequence.
+
+<P>Although these ideas of sequence and effect are coming near the end of our
+book, they're the ideas with which almost every introduction to programming
+begins. Most books compare a program to a recipe or a sequence of
+instructions, along the lines of
+
+<P><PRE>to go-to-work
+  get-dressed
+  eat-breakfast
+  catch-the-bus
+</PRE>
+
+<P>This sequential programming style is simple and natural, and it does
+a good job of modeling computations in which the problem concerns
+a sequence of events.  If you're writing an airline reservation system, a
+sequential program with <CODE>reserve-seat</CODE> and <CODE>issue-ticket</CODE> commands
+makes sense.  But if you want to know the acronym of a phrase, that's
+not inherently sequential, and a question-asking approach is best.
+
+<P>Some actions that Scheme can take affect the &quot;outside&quot; world, such as
+printing something on the computer screen.  But Scheme can also carry out
+internal actions, invisible outside the computer, but changing the
+environment in which Scheme itself carries out computations.  Defining a new
+variable with <CODE>define</CODE> is an example; before the definition, Scheme
+wouldn't understand what that name means, but once the definition has been
+made, the name can be used in evaluating later expressions.  Scheme's
+knowledge about the leftover effects of past computations is called its <EM>state.</EM> The third big idea in this part of the book is that we can write
+programs that maintain state information and use it to determine their
+results.
+
+<P>Like sequence, the notion of state contradicts functional programming.
+Earlier in the book, we emphasized that every time a function is invoked
+with the same arguments, it must return the same value.  But a procedure
+whose returned value depends on state&mdash;on the past history of the
+computation&mdash;might return a different value on each invocation, even with
+identical arguments.
+
+<P>We'll explore several situations in which effects,
+sequence, and state are useful:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Interactive, question-and-answer programs that involve keyboard input
+while the computation is in progress;
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Programs that must read and write long-term data file storage;
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Computations that <EM>model</EM> an actual sequence of events in time
+and use the state of the program to model information about the state of
+the simulated events.
+
+</TABLE><P>
+After introducing Scheme's mechanisms for sequential programming, we'll use
+those mechanisms to implement versions of two commonly used types of
+business computer applications, a spreadsheet and a database program.
+
+<P>
+</BIG>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch19/implement-hof.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="io.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch21/functions-implement b/js/games/nluqo.github.io/~bh/ssch21/functions-implement
new file mode 100644
index 0000000..0661202
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch21/functions-implement
@@ -0,0 +1,1026 @@
+\input bkmacs
+\pagetag{\oz}
+\photo{Once you see how it works, it's not so mysterious.}{\pspicture{4in}{oz}{oz}{}}
+
+\let\ttfont=\twelvett
+\chapter{Example: The\/ {\ttfont Functions} Program}
+\chaptag{\fimp}
+\normaltext
+
+In Chapter \functions\ you used a program called \ttidx{functions} to explore
+some of Scheme's primitive functions.  Now we're going to go back to that
+program from the other point of view: instead of using the program to learn
+about functions, we're going to look at how the program works as an example
+of programming with input and output.
+
+\backskipsubhd{The Main Loop}{7}
+
+The {\tt functions} program is an infinite loop similar to Scheme's
+\idx{read-eval-print loop}.  It reads in a function name and some arguments,
+prints the result of applying that function to those arguments, and then
+does the whole thing over again.
+
+There are some complexities, though.  The {\tt functions} program keeps
+asking you for arguments until it has enough.  This means that the {\tt
+read} portion of the loop has to read a function name, figure out how many
+arguments that procedure takes, and then ask for the right number of
+arguments.  On the other hand, each argument is an implicitly quoted datum
+rather than an expression to be evaluated; the {\tt functions} evaluator
+avoids the recursive complexity of arbitrary subexpressions within
+expressions.  (That's why we wrote it:\ to focus attention on one function
+invocation at a time, rather than on the composition of functions.)
+Here's the main loop:
+
+{\prgex%
+(define (\ufun{functions-loop})
+  (let ((fn-name (get-fn)))
+    (if (equal? fn-name 'exit)
+	"Thanks for using FUNCTIONS!"
+	(let ((args (get-args (arg-count fn-name))))
+	  (if (not (in-domain? args fn-name))
+	      (show "Argument(s) not in domain.")
+	      (show-answer (apply (scheme-procedure fn-name) args)))
+	  (functions-loop)))))
+}
+
+\noindent This invokes a lot of helper procedures.  {\tt Arg-count} takes
+the name of a procedure as its argument and returns the number of arguments
+that the given procedure takes.  {\tt In-domain?} takes a list and the name
+of a procedure as arguments; it returns {\tt \#t} if the elements of the list
+are valid arguments to the given procedure.  {\tt Scheme-procedure} takes a
+name as its argument and returns the Scheme procedure with the given name.
+We'll get back to these helpers later.
+
+The other helper procedures are the ones that do the input and output.  The
+actual versions are more complicated because of error checking; we'll show
+them to you later.
+
+{\prgex%
+(define (get-fn)                             ;; first version
+  (display "Function: ")
+  (read))
+
+(define (\ufun{get-args} n)
+  (if (= n 0)
+      '()
+      (let ((first (get-arg)))
+	(cons first (get-args (- n 1))))))
+
+(define (get-arg)                            ;; first version
+  (display "Argument: ")
+  (read))
+
+(define (\ufun{show-answer} answer)
+  (newline)
+  (display "The result is: ")
+  (if (not answer)
+      (show "#F")
+      (show answer))
+  (newline))
+}
+
+\noindent (That weird {\tt if} expression in {\tt show-answer} is needed
+because in some old versions of Scheme the empty list means the same as {\tt
+\#f}.  We wanted to avoid raising this issue in Chapter \functions, so we
+just made sure that false values always printed as {\tt \#F}.)
+
+\subhd{The Difference between a Procedure and Its Name}
+
+You may be wondering why we didn't just say
+
+{\prgex%
+(show-answer (apply fn-name args))
+}
+
+\noindent in the definition of {\tt functions-loop}.  Remember that the value of
+the variable {\tt fn-name} comes from {\tt get-fn}, which invokes {\tt read}.
+Suppose you said
+
+{\medskipamount=3pt\prgexskipamount=10pt
+
+{\prgex%
+(define x (read))
+}
+
+\noindent and then typed
+
+{\prgex%
+(+ 2 3)
+}
+
+\noindent The value of {\tt x} would be the three element list {\tt
+(+~2~3)}, not the number five.
+
+Similarly, if you type ``butfirst,'' then read will return the {\it
+word\/} {\tt butfirst}, not the procedure of that name.  So we need a way to
+turn the name of a function into the procedure itself.
+
+\backskipsubhd{The Association List of Functions}{4}
+
+We accomplish this by creating a huge association list that contains
+all of the functions the program knows about.  Given a word, such as
+{\tt butfirst}, we need to know three things:
+
+\medskip
+{\parindent=1em\parskip=8pt
+\bb The Scheme procedure with that name (in this case, the {\tt butfirst}
+procedure).
+\bb The number of arguments required by the given procedure
+(one).\footnt{Some Scheme procedures can accept any number of arguments,
+but for the purposes of the {\tt functions} program we restrict these
+procedures to their most usual case, such as two arguments for~{\tt +}.}
+\bb The types of arguments required by the given procedure (one word or
+sentence, which must not be empty).
+
+}\medskip
+
+We need to know the number of arguments the procedure requires because the
+program prompts the user individually for each argument; it has to know how
+many to ask for.  Also, it needs to know the domain of each function so
+it can complain if the arguments you give it are not in the
+domain.\footnt{Scheme would complain all by itself, of course, but would
+then stop running the {\tt functions} program.  We want to catch the error
+before Scheme does, so that after seeing the error message you're still in
+{\tt functions}.  As we mentioned in Chapter \implhof, a program meant for
+beginners, such as the readers of Chapter \functions, should be
+especially robust.}
+
+This means that each entry in the association list is a list of four
+elements:
+% .  It looks like this:
+
+{\prgex%
+(define *the-functions*                      ;; partial listing
+  (list (list '* * 2 (lambda (x y) (and (number? x) (number? y))))
+	(list '+ + 2 (lambda (x y) (and (number? x) (number? y))))
+	(list 'and (lambda (x y) (and x y)) 2
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'equal? equal? 2 (lambda (x y) #t))
+	(list 'even? even? 1 integer?)
+	(list 'word word 2 (lambda (x y) (and (word? x) (word? y))))))
+}
+
+\noindent The real list is much longer, of course, but you get the
+idea.\footnt{Since {\tt and} is a special form, we can't just say
+
+{\prgex%
+(list 'and and 2 (lambda (x y) (and (boolean? x) (boolean? y))))
+}
+
+That's because special forms can't be elements of lists.  Instead, we have
+to create a normal procedure that can be put in a list but computes the same
+function as {\tt and}:
+
+{\prgex%
+(lambda (x y) (and x y))
+}
+
+\noindent We can get away with this because in the {\tt functions} program we
+don't care about argument evaluation, so it doesn't matter that {\tt and} is
+a special form.  We do the same thing for {\tt if} and {\tt or}.} It's a
+convention in Scheme programming that names of global variables used
+throughout a program are surrounded by {\tt *}asterisks{\tt *} to
+distinguish them from parameters of procedures.
+
+Here are the selector procedures for looking up information in this a-list:
+
+{\prgex%
+(define (\ufun{scheme-procedure} fn-name)
+  (cadr (assoc fn-name *the-functions*)))
+
+(define (\ufun{arg-count} fn-name)
+  (caddr (assoc fn-name *the-functions*)))
+
+(define (\ufun{type-predicate} fn-name)
+  (cadddr (assoc fn-name *the-functions*)))
+}
+
+\subhd{Domain Checking}
+
+} % skip kludge
+
+Note that we represent the domain of a procedure by another
+procedure.\footnt{The domain of a procedure is a set, and sets are generally
+represented in programs as lists.  You might think that we'd have to store,
+for example, a list of all the legal arguments to {\tt butfirst}.  But that
+would be impossible, since that list would have to be infinitely large.
+Instead, we can take advantage of the fact that the only use we make of this
+set is membership testing, that is, finding out whether a particular argument
+is in a function's domain.} Each domain-checking procedure, or {\it type
+predicate,\/} takes the same arguments as the procedure whose domain it
+checks.  For example, the type predicate for {\tt +} is
+
+{\prgex%
+(lambda (x y) (and (number? x) (number? y)))
+}
+
+\noindent The type predicate returns {\tt \#t} if its arguments
+are valid and {\tt \#f} otherwise.  So in the case of {\tt +}, any two
+numbers are valid inputs, but any other types of arguments aren't.
+
+Here's the {\tt in-domain?} predicate:
+
+{\prgex%
+(define (\ufun{in-domain?} args fn-name)
+  (apply (type-predicate fn-name) args))
+}
+
+Of course, certain type predicates are applicable to more than one
+procedure.  It would be silly to type
+
+{\prgex%
+(lambda (x y) (and (number? x) (number? y)))
+}
+
+\noindent for {\tt +}, {\tt -}, {\tt =}, and so on.  Instead, we give this
+function a name:
+
+{\prgex%
+(define (\ufun{two-numbers?} x y)
+  (and (number? x) (number? y)))
+}
+
+\noindent We then refer to the type predicate by name in the a-list:
+
+{\prgex%
+(define *the-functions*                     ;; partial listing, revised
+  (list (list '* * 2 two-numbers?)
+	(list '+ + 2 two-numbers?)
+	(list 'and (lambda (x y) (and x y)) 2
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'equal? equal? 2 (lambda (x y) #t))
+	(list 'even? even? 1 integer?)
+	(list 'word word 2 (lambda (x y) (and (word? x) (word? y))))))
+}
+
+Some of the type predicates are more complicated.  For example,
+here's the one for the {\tt member?} and {\tt appearances} functions:
+
+{\prgex%
+(define (\ufun{member-types-ok?} small big)
+  (and (word? small)
+       (or (sentence? big) (and (word? big) (= (count small) 1)))))
+}
+
+\noindent {\tt Item} also has a complicated domain:
+
+{\prgex%
+(lambda (n stuff)
+  (and (integer? n) (> n 0)
+       (word-or-sent? stuff) (<= n (count stuff))))
+}
+
+\noindent This invokes {\tt word-or-sent?}, which is itself the type
+predicate for the {\tt count} procedure:
+
+{\prgex%
+(define (word-or-sent? x)
+  (or (word? x) (sentence? x)))
+}
+
+On the other hand, some are less complicated.  {\tt Equal?} will accept any
+two arguments, so its type predicate is just
+
+{\prgex%
+(lambda (x y) #t)
+}
+
+The complete listing at the end of the chapter shows the details of all these
+procedures.  Note that the {\tt functions} program has a more restricted
+idea of domain than Scheme does.  For example, in Scheme
+
+{\prgex%
+(and 6 #t)
+}
+
+\noindent returns {\tt \#t} and does not generate an error.  But in
+the {\tt functions} program the argument {\tt 6} is considered out of the
+domain.\footnt{Why did we choose to restrict the domain?  We were trying
+to make the point that invoking a procedure makes sense only with appropriate
+arguments; that point is obscured by the complicating fact that Scheme
+interprets any non-{\tt \#f} value as true.  In the {\tt functions} program,
+where composition of functions is not allowed, there's no benefit to Scheme's
+more permissive rule.}
+
+If you don't like math, just ignore the domain predicates for the
+mathematical primitives; they involve facts about the domains of math
+functions that we don't expect you to know.\footnt{A reason that we
+restricted the domains of some mathematical functions is to protect
+ourselves from the fact that some version of Scheme support complex numbers
+while others do not.  We wanted to write one version of {\tt functions} that
+would work in either case; sometimes the easiest way to avoid possible
+problems was to restrict some function's domain.}
+
+\subhd{Intentionally Confusing a Function with Its Name}
+
+{\medskipamount=5pt\prgexskipamount=10pt
+
+Earlier we made a big deal about the difference between a procedure and its
+name, to make sure you wouldn't think you can apply the {\it word\/} {\tt
+butfirst} to arguments.  But the {\tt functions} program completely hides
+this distinction from the user:
+
+{\prgex%
+Function: count
+Argument: butlast
+
+The result is: 7
+
+Function: every
+Argument: butlast
+Argument: (helter skelter)
+
+The result is: (HELTE SKELTE)
+}
+
+When we give {\tt butlast} as an argument to {\tt count}, it's as if we'd said
+
+{\prgex%
+(count 'butlast)
+}
+
+\noindent In other words, it's taken as a word.  But when we give {\tt
+butlast} as an argument to {\tt every}, it's as if we'd said
+
+{\prgex%
+(every butlast '(helter skelter))
+}
+
+How can we treat some arguments as quoted and others not?  The way this
+works is that {\it everything\/} is considered a word or a sentence by the
+{\tt functions} program.  The higher-order functions {\tt every} and {\tt
+keep} are actually represented in the {\tt functions} implementation by
+Scheme procedures that take the {\it name\/} of a function as an argument,
+instead of a procedure itself as the ordinary versions do:
+
+{\prgex%
+(define (\ufun{named-every} fn-name list)
+  (every (scheme-procedure fn-name) list))
+
+(define (\ufun{named-keep} fn-name list)
+  (keep (scheme-procedure fn-name) list))
+
+> (every first '(another girl))
+(A G)
+> (named-every 'first '(another girl))
+(A G)
+> (every 'first '(another girl))
+ERROR: ATTEMPT TO APPLY NON-PROCEDURE FIRST
+}
+
+} % end skip kludge
+
+\noindent This illustration hides a subtle point.  When we invoked {\tt
+named-every} at a Scheme prompt, we had to quote the word {\tt first}
+that we used as its argument.  But when you run the {\tt functions} program,
+you don't quote anything.  The point is that {\tt functions} provides an
+evaluator that uses a different notation from Scheme's notation.  It may be
+clearer if we show an interaction with an imaginary version of {\tt
+functions} that {\it does\/} use Scheme notation:
+
+{\prgex%
+Function: first
+Non-Automatically-Quoted-Argument: 'datum
+
+The result is: D
+
+Function: first
+Non-Automatically-Quoted-Argument: datum
+
+ERROR: THE VARIABLE DATUM IS UNBOUND.
+}
+
+\noindent We didn't want to raise the issue of quoting at that early point
+in the book, so we wrote {\tt functions} so that {\it every\/} argument
+is automatically quoted.  Well, if that's the case, it's true even when
+we're invoking {\tt every}.  If you say
+
+{\prgex%
+Function: every
+Argument: first
+\ellipsis
+}
+
+\noindent then by the rules of the {\tt functions} program, that argument is
+the quoted word {\tt first}.  So {\tt named-every}, the procedure that
+pretends to be {\tt every} in the {\tt functions} world, has to ``un-quote''
+that argument by looking up the corresponding procedure.
+
+\subhd{More on Higher-Order Functions}
+
+One of the higher-order functions that you can use in the {\tt functions}
+program is called {\tt number-of-arguments}.  It takes a procedure (actually
+the name of a procedure, as we've just been saying) as argument and returns
+the number of arguments that that procedure accepts.  This example is
+unusual because there's no such function in Scheme.  (It would be
+complicated to define, for one thing, because some Scheme procedures can
+accept a variable number of arguments.  What should {\tt
+number-of-arguments} return for such a procedure?)
+
+The implementation of {\tt number-of-arguments} makes use of the same a-list
+of functions that the {\tt functions} evaluator itself uses.  Since the
+{\tt functions} program needs to know the number of arguments for every
+procedure anyway, it's hardly any extra effort to make that information
+available to the user.  We just add an entry to the a-list:
+
+{\prgex%
+(list '\ufun{number-of-arguments} arg-count 1 valid-fn-name?)
+}
+
+\noindent The type predicate merely has to check that the argument
+is found in the a-list of functions:
+
+{\prgex%
+(define (\ufun{valid-fn-name?} name)
+  (assoc name *the-functions*))
+}
+
+The type checking for the arguments to {\tt every} and {\tt keep} is
+unusually complicated because what's allowed as the second argument (the
+collection of data) depends on which function is used as the first argument.
+For example, it's illegal to compute
+
+{\prgex%
+(every square '(think for yourself))
+}
+
+\noindent even though either of those two arguments would be allowable if we
+changed the other one:
+
+{\prgex%
+> (every square '(3 4 5))
+(9 16 25)
+
+> (every first '(think for yourself))
+(T F Y)
+}
+
+The type-checking procedures for {\tt every} and {\tt keep} use a common
+subprocedure.  The one for {\tt every} is
+
+{\prgex%
+(lambda (fn stuff)
+  (hof-types-ok? fn stuff word-or-sent?))
+}
+
+\noindent and the one for {\tt keep} is
+
+{\prgex%
+(lambda (fn stuff)
+  (hof-types-ok? fn stuff boolean?))
+}
+
+\noindent The third argument specifies what types of results {\tt fn} must
+return when applied to the elements of {\tt stuff}.
+
+{\prgex%
+(define (hof-types-ok? fn-name stuff range-predicate)
+  (and (valid-fn-name? fn-name)
+       (= 1 (arg-count fn-name))
+       (word-or-sent? stuff)
+       (empty? (keep (lambda (element)
+		       (not ((type-predicate fn-name) element)))
+		     stuff))
+       (null? (filter (lambda (element)
+			(not (range-predicate element)))
+		      (map (scheme-procedure fn-name)
+			   (every (lambda (x) x) stuff))))))
+}
+
+\noindent This says that the function being used as the first argument must
+be a one-argument function (so you can't say, for example, {\tt every} of
+{\tt word} and something); also, {\it each element\/} of the second argument
+must be an acceptable argument to that function.  (If you {\tt keep} the
+unacceptable arguments, you get nothing.)  Finally, each invocation of the
+given function on an element of {\tt stuff} must return an object of the
+appropriate type:\ words or sentences for {\tt every}, true or false for
+{\tt keep}.\footnt{That last argument to {\tt and} is complicated.  The
+reason we use {\tt map} instead of {\tt every} is that the results of the
+invocations of {\tt fn} might not be words or sentences, so {\tt every}
+wouldn't accept them.  But {\tt map} has its own limitation:  It won't
+accept a word as the {\tt stuff} argument.  So we use {\tt every} to turn
+{\tt stuff} into a sentence---which, as you know, is really a list---and
+that's guaranteed to be acceptable to {\tt map}.  (This is an example of a
+situation in which respecting a data abstraction would be too horrible to
+contemplate.)}
+
+\subhd{More Robustness}
+
+The program we've shown you so far works fine, as long as the user
+never makes a mistake.  Because this program was written for absolute
+novices, we wanted to bend over backward to catch any kind of strange input
+they might give us.
+
+Using {\tt read} to accept user input has a number of disadvantages:
+
+\medskip
+{\parindent=1em
+\bb If the user enters an empty line, {\tt read} continues waiting silently
+for input.
+\bb If the user types an unmatched open parenthesis, {\tt read} continues
+reading forever.
+\bb If the user types two expressions on a line, the second one will be
+taken as a response to the question the {\tt functions} program hasn't asked
+yet.
+
+}\medskip
+
+\noindent We solve all these problems by using {\tt read-line} to read
+exactly one line, even if it's empty or ill-formed, and then checking
+explicitly for possible errors.
+
+{\tt Read-line} treats parentheses no differently from any other character.
+That's an advantage if the user enters mismatched or inappropriately nested
+parentheses.  However, if the user correctly enters a sentence as an
+argument to some function, {\tt read-line} will include the initial open
+parenthesis as the first character of the first word, and the final close
+parenthesis as the last character of the last word.  {\tt Get-arg} must
+correct for these extra characters.
+
+Similarly, {\tt read-line} treats number signs ({\tt #}) like any other
+character, so it doesn't recognize {\tt #t} and {\tt #f} as special values.
+Instead it reads them as the strings {\tt "#t"} and {\tt "#f"}.  {\tt
+Get-arg} calls {\tt booleanize} to convert those strings into Boolean values.
+
+{\prgex%
+(define (\ufun{get-arg})
+  (display "Argument: ")
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show "Please type an argument!")
+	   (get-arg))
+	  ((and (equal? "(" (first (first line)))
+		(equal? ")" (last (last line))))
+	   (let ((sent (remove-first-paren (remove-last-paren line))))
+	     (if (any-parens? sent)
+		 (begin (show "Sentences can't have parentheses inside.")
+			(get-arg))
+		 (map booleanize sent))))
+	  ((any-parens? line)
+	   (show "Bad parentheses")
+	   (get-arg))
+	  ((empty? (bf line)) (booleanize (first line)))
+	  (else (show "You typed more than one argument!  Try again.")
+		(get-arg)))))
+}
+
+\hyphenchar\tentt=\count123
+\noindent {\tt Get-arg} invokes {\tt any-parens?}, {\tt
+remove-first-paren}, {\tt remove-last-paren}, and {\tt booleanize}, whose
+meanings should be obvious from their names.  You can look up their
+definitions in the complete listing at the end of this chapter.
+
+\hyphenchar\tentt=-1
+{\tt Get-fn} is simpler than {\tt get-arg}, because there's no issue about
+parentheses, but it's still much more complicated than the original version,
+because of error checking.
+
+{\medskipamount=5pt
+
+{\prgex%
+(define (\ufun{get-fn})
+  (display "Function: ")
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show "Please type a function!")
+	   (get-fn))
+	  ((not (= (count line) 1))
+	   (show "You typed more than one thing!  Try again.")
+	   (get-fn))
+	  ((not (valid-fn-name? (first line)))
+	   (show "Sorry, that's not a function.")
+	   (get-fn))
+	  (else (first line)))))
+}
+
+\noindent This version of {\tt get-fn} uses {\tt valid-fn-name?} (which
+you've already seen) to ensure that what the user types is the name of a
+function we know about.
+
+There's a problem with using {\tt read-line}.  As we mentioned in a pitfall
+in Chapter \io, reading some input with {\tt read} and then reading the next
+input with {\tt read-line} results in {\tt read-line} returning an empty
+line left over by {\tt read}.  Although the {\tt functions} program doesn't
+use {\tt read}, Scheme itself used {\tt read} to read the {\tt (functions)}
+expression that started the program.  Therefore,
+{\tt get-fn}'s first attempt to read a function name will see an empty
+line.  To fix this problem, the {\tt functions} procedure has an
+extra invocation of {\tt read-line}:
+
+{\prgex%
+(define (functions)
+  (read-line)
+  (show "Welcome to the FUNCTIONS program.")
+  (functions-loop))
+}
+
+} % skip kludge
+
+\subhd{Complete Program Listing}
+
+\bigskip
+\listing{functions.scm}
+
+\esubhd{Exercises}
+
+{\medskipamount=4pt
+{\exercise
+The {\tt get-args} procedure has a {\tt let} that creates the variable {\tt
+first}, and then that variable is used only once inside the body of the {\tt
+let}.  Why doesn't it just say the following?
+
+{\prgex%
+(define (get-args n)
+  (if (= n 0)
+      '()
+      (cons (get-arg) (get-args (- n 1)))))
+}
+}
+
+\solution
+
+The {\tt let} is needed to ensure that the
+arguments in the returned list are in the correct order:
+
+Suppose that the user has chosen a two-argument function, so
+{\tt functions-loop} calls {\tt get-args} with the argument 2.
+{\tt Get-args} will ask
+the user for two arguments; suppose that the user types ``the''
+as the first response and ``beatles'' as the second response.  So {\tt
+get-args} {\it should\/} return the list {\tt (the~beatles)}.
+
+Let's trace what happens, using the little people model.  Glenda the {\tt
+get-args} specialist is hired, with {\tt n} being 2.  Since her {\tt n}
+isn't 0, she evaluates the {\tt cons} expression.
+
+Assume that in this version of Scheme the arguments to a
+procedure are evaluated from right to left.  The first thing that happens
+is that Glenda hires Gerry, another {\tt get-args} specialist, giving him
+an argument of 1.  (Later, Glenda will hire a {\tt get-arg} specialist, and
+then a {\tt cons} specialist.)
+
+Gerry's job is to get one argument.  We'll
+take a leap of faith and assume that he correctly reads the first expression
+the user typed, namely, the word {\tt the}.  So Gerry returns the list {\tt
+(the)}.
+
+Now Glenda hires a {\tt get-arg} specialist, who reads {\tt beatles} from
+the user.  Glenda then hires a {\tt cons} specialist to insert {\tt beatles}
+onto the front of {\tt (the)}, giving {\tt (beatles~the)} as her final
+answer.  But this is wrong!  Glenda's list is backwards; instead of
+returning {\tt (the~beatles)} she returned {\tt (beatles~the)}.
+
+The {\tt let} in the correct version of {\tt get-args} is to ensure that the
+call to {\tt read} happens {\it before\/} the recursive call, thus putting
+the elements into the list in the right order.
+
+@
+
+{\exercise
+The domain-checking function for {\tt equal?} is
+
+{\prgex%
+(lambda (x y) #t)
+}
+
+\noindent This seems silly; it's a function of two arguments that ignores
+both arguments and always returns {\tt \#t}.  Since we know ahead of time
+that the answer is {\tt \#t}, why won't it work to have {\tt equal?}'s entry
+in the a-list be
+
+{\prgex%
+(list 'equal? equal? 2 #t)
+}
+}
+\solution
+The {\tt functions} program uses the type-checking predicate by
+invoking it with the given arguments.  If the entry were {\tt #t}
+instead of a function, then invoking it would be an error.
+The relevant part of the program is {\tt in-domain?}:
+
+{\prgex%
+(define (in-domain? args fn-name)
+  (apply (type-predicate fn-name) args))
+}
+
+\noindent If an entry had {\tt #t} as the type ``predicate,'' then
+this would be equivalent to
+
+{\prgex%
+(apply #t args)
+}
+@
+} %%% kludge
+
+{\exercise
+Every time we want to know something about a function that the user typed
+in, such as its number of arguments or its domain-checking predicate, we
+have to do an {\tt assoc} in {\tt *the-functions*}.  That's inefficient.
+Instead, rewrite the program so that {\tt get-fn} returns a function's entry
+from the a-list, instead of just its name.  Then rename the variable {\tt
+fn-name} to {\tt fn-entry} in the {\tt functions-loop} procedure, and rewrite
+the selectors {\tt scheme-procedure}, {\tt arg-count}, and so on, so that
+they don't invoke {\tt assoc}.
+}
+
+\solution
+The changed parts of the program are shown here in boldface.
+
+{\prgex%
+(define (get-fn)
+  (display "Function: ")
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show "Please type a function!")
+	   (get-fn))
+	  ((not (= (count line) 1))
+	   (show "You typed more than one thing!  Try again.")
+	   (get-fn))
+	  ((not (valid-fn-name? (first line)))
+	   (show "Sorry, that's not a function.")
+	   (get-fn))
+	  (else \pmb{(assoc} (first line) \pmb{*the-functions)}))))
+
+(define (functions-loop)
+  (let ((\pmb{fn-entry} (get-fn)))
+    (if (equal? \pmb{(function-name fn-entry)} 'exit)
+	"Thanks for using FUNCTIONS!"
+	(let ((args (get-args (arg-count \pmb{fn-entry}))))
+	  (if (not (in-domain? args \pmb{fn-entry}))
+	     (show "Argument(s) not in domain.")
+	     (show-answer (apply (scheme-function \pmb{fn-entry}) args)))
+	  (functions-loop)))))
+
+(define (function-name \pmb{fn-entry})
+  (car \pmb{fn-entry}))
+
+(define (scheme-function \pmb{fn-entry})
+  (cadr \pmb{fn-entry}))
+
+(define (arg-count \pmb{fn-entry})
+  (caddr \pmb{fn-entry}))
+
+(define (type-predicate \pmb{fn-entry})
+  (cadddr \pmb{fn-entry}))
+}
+
+A new selector {\tt function-name} was needed to look for the use
+of the word {\tt exit} in place of a function name.
+@
+
+{\exercise
+Currently, the program always gives the message ``argument(s) not in
+domain'' when you try to apply a function to bad arguments.  Modify the
+program so that each record in {\tt *the-functions*} also contains a
+specific out-of-domain message like ``both arguments must be numbers,'' then
+modify {\tt functions} to look up and print this error message along with
+``argument(s) not in domain.''
+}
+
+\solution
+First we invent a new selector for the error message:
+
+{\prgex%
+(define (domain-error-message fn-name)
+  (car (cddddr (assoc fn-name *the-functions*))))
+}
+
+\noindent We can't just say {\tt caddddr} because those functions
+are only defined for up to four steps.  For elements this far into
+the list, it might be clearer to use {\tt list-ref}:
+
+{\prgex%
+(define (domain-error-message fn-name)
+  (list-ref (assoc fn-name *the-functions*) 4))
+}
+
+Now we use the more specific error message.  
+The changed parts of the procedure are shown here in boldface.
+
+{\prgex%
+(define (functions-loop)
+  (let ((fn-name (get-fn)))
+    (if (equal? fn-name 'exit)
+	"Thanks for using FUNCTIONS!"
+	(let ((args (get-args (arg-count fn-name))))
+	  (if (not (in-domain? args fn-name))
+	      \pmb{(begin} (show "Argument(s) not in domain:")
+		     \pmb{(show (domain-error-message fn-name)))}
+	      (show-answer (apply (scheme-function fn-name) args)))
+	  (functions-loop)))))
+}
+
+Of course we also must update the function list itself:
+
+{\prgex%
+(define *the-functions*
+  (list (list '* * 2 two-numbers? "Both arguments must be numbers.")
+	\ellipsis
+	(list 'butfirst butfirst 1 not-empty?
+	      "The argument must be a non-empty word or sentence.")
+	\ellipsis))
+}
+@
+
+\vfill\eject
+
+{\exercise
+Modify the program so that it prompts for the arguments this way:
+
+{\prgex%
+Function: if
+First Argument: #t
+Second Argument: paperback
+Third Argument: writer
+
+The result is: PAPERBACK
+}
+
+\noindent but if there's only one argument, the program shouldn't say {\tt
+First}:
+
+{\prgex%
+Function: sqrt
+Argument: 36
+
+The result is 6
+}}
+
+\solution 
+
+The easiest way is not to modify {\tt get-arg} at all:
+
+{\prgex%
+(define (get-args n)
+  (if (= n 1)
+      (list (get-arg))
+      (get-args-helper 1 n)))
+
+(define (get-args-helper this total)
+  (if (> this total)
+      '()
+      (begin (display (ordinal this))
+	     (display " ")
+	     (let ((first (get-arg)))
+	       (cons first (get-args-helper (+ this 1) total))))))
+
+(define (ordinal n)
+  (item n '("First" "Second" "Third" "Fourth" "Fifth")))
+}
+
+But it's a little bit of a kludge that {\tt get-args} prints half the prompt
+and {\tt get-arg} prints the other half.  Instead, we can have {\tt get-args}
+figure out what the argument prompt should be, and tell {\tt get-arg} what
+to print:
+
+{\prgex%
+(define (get-args n)
+  (if (= n 1)
+      (list (get-arg "Argument: "))
+      (get-args-helper 1 n)))
+
+(define (get-args-helper this total)
+  (if (> this total)
+      '()
+      (let ((first (get-arg (word (ordinal this) " Argument: "))))
+	(cons first (get-args-helper (+ this 1) total)))))
+
+(define (get-arg prompt)
+  (display prompt)
+  ;;{\rm everything else get-arg used to do$\ldots$}
+  )
+}
+@
+
+{\exercise
+The {\tt assoc} procedure might return {\tt \#f} instead of an a-list
+record.  How come it's okay for {\tt arg-count} to take the {\tt caddr} of
+{\tt assoc}'s return value if {\tt (caddr~\#f)} is an error?
+}
+
+\solution
+{\tt Get-fn} invokes {\tt valid-fn-name?} to check whether or not
+the requested function is in the a-list.  If not, {\tt get-fn} asks
+for another function name, so the selectors like {\tt arg-count}
+will never be invoked with this nonexistent name.
+@
+
+{\exercise
+Why is the domain-checking predicate for the {\tt word?} function
+
+{\prgex%
+(lambda (x) #t)
+}
+
+\noindent instead of the following procedure?
+
+{\prgex%
+(lambda (x) (word? x))
+}
+}
+
+\solution
+The domain of the {\tt word?} function is {\it anything,} not just words.
+Invoking the {\tt word?} predicate is like asking the question ``is this a
+word?'' You can ask that question about anything you like:  ``Is {\tt
+(1~2~3)} a word?'' --- ``No.'' ``Is {\tt \#t} a word?'' --- ``No.'' ``Is
+{\tt banana} a word?'' --- ``Yes.'' So {\it everything\/} is in the domain
+of {\tt word?}, and its domain-checking predicate always returns {\tt #t}.
+
+Not every predicate has a domain that includes every possible value.
+For example, the domain of the predicate {\tt even?} is just numbers;
+you can't ask Scheme the question ``is {\tt banana} even?''  Therefore,
+not every predicate will have
+
+{\prgex%
+(lambda (x) #t)
+}
+
+\noindent as its domain-checking function.  But even for {\tt even?}, it
+would be silly to use {\tt even?} itself as the domain-checking function.
+If the domain of a predicate included only those things for which the
+predicate is true, then that predicate could never return {\tt #f}!  That
+would make it a rather useless predicate.  There's a difference between
+asking Scheme a question to which it replies ``no'' and asking it a
+meaningless question.
+
+% Many people have trouble with the difference between getting back the answer
+% ``no'' to a question and asking a meaningless question.  If I say ``Is 5
+% even?'' the answer is no.  But if I ask ``Is {\tt elephant} even?'' it's a
+% meaningless question.  The domain of the {\tt even?} primitive is just
+% numbers.  On the other hand, the question ``Is such-and-such a word?'' is
+% never meaningless, no matter what object I'm asking the question about.
+
+@
+
+{\exercise
+What is the value of the following Scheme expression?
+
+{\prgex%
+(functions)
+}
+}
+
+
+\solution
+
+Invoking the expression {\tt (functions)} causes a lot of activity to occur,
+but the value of that expression is always the string {\tt "Thanks for using
+FUNCTIONS!"}
+
+The {\tt functions} procedure has two (or three) expressions in its body, so
+Scheme evaluates them all and returns the value of the last one.  In this
+case, the last one is a call to {\tt functions-loop}, so whatever {\tt
+functions-loop} returns, {\tt functions} will return that, too.
+
+{\tt Functions-loop} is recursive.  In the recursive case, there's a {\tt
+let} with two expressions, so Scheme evaluates them both and returns the
+value of the second one.  The second expression is a recursive call to {\tt
+functions-loop}, so whatever the recursive call returns is what the
+outer call will also return.  Thus, the string {\tt "Thanks for using
+FUNCTIONS!"}, returned by the base case, will be the return value from every
+single call to {\tt functions-loop}, including the first one, so it will
+also be the return value from {\tt functions}.
+
+@
+
+{\exercise
+We said in the recursion chapters that every recursive procedure has to have
+a base case and a recursive case, and that the recursive case has to somehow
+reduce the size of the problem, getting closer to the base case.  How does
+the recursive call in {\tt get-fn} reduce the size of the problem?
+}
+
+\solution
+
+Since {\tt get-fn} has no arguments, the recursive call is exactly the
+same as the original call, so the problem doesn't get smaller.  What
+saves us is that even the original problem {\it might\/} be solved
+without getting smaller at all, because it depends on the behavior of
+the human user of the program.  At each recursive invocation, the
+problem is this:  ``If the user enters a correct function, we're done.
+If not, try again.''  If the user makes a mistake, then the procedure
+calls itself recursively, with exactly the same problem.  And, indeed,
+this {\it can\/} be an infinite loop, if the user keeps typing incorrect
+functions.  But as soon as the user enters a correct function, the process
+will terminate.
+
+% A call to {\tt get-fn} looks like {\tt (get-fn)}, because the procedure
+% takes zero arguments.  So the recursive call, {\tt (get-fn)} is exactly the
+% same as the original call.  There are two ways to think about this.
+% 
+% The first is ``The size of the problem {\it doesn't\/} get smaller.'' Since
+% each call to {\tt get-fn} has the same arguments, the problem never changes,
+% and there's an infinite loop.  Indeed, if you invoke {\tt get-fn} and then
+% sit in front of the computer forever typing incorrect functions, the {\tt
+% get-fn} procedure will never return a value.
+% 
+% The second way to think about this is ``even though the arguments never
+% change, the state of the world changes between recursive calls, so
+% eventually the program will return a value.'' In this case, the progress
+% made by each recursive call is sort of bizarre:  after each time the user
+% incorrectly types the name of a function, he or she is more likely to get it
+% right the next time.
+
+@
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch21/functions-implement.html b/js/games/nluqo.github.io/~bh/ssch21/functions-implement.html
new file mode 100644
index 0000000..ce3c1b9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch21/functions-implement.html
@@ -0,0 +1,939 @@
+<P>
+<A NAME="oz"></A>
+<P><CENTER><IMG SRC="../ss-pics/oz.jpg" ALT="figure: oz"></CENTER><P><CENTER>Once you see how it works, it's not so mysterious.
+</CENTER><P>
+
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 21: Example: The Functions Program</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 21</H2>
+<H1>Example: The Functions Program</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch21.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch20/io.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch22/files.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+In Chapter 2 you used a program called <A NAME="g1"></A><CODE>functions</CODE> to explore
+some of Scheme's primitive functions.  Now we're going to go back to that
+program from the other point of view: instead of using the program to learn
+about functions, we're going to look at how the program works as an example
+of programming with input and output.
+
+<P><H2>The Main Loop</H2>
+
+<P>The <CODE>functions</CODE> program is an infinite loop similar to Scheme's
+read-eval-print loop.  It reads in a function name and some arguments,
+prints the result of applying that function to those arguments, and then
+does the whole thing over again.
+
+<P>There are some complexities, though.  The <CODE>functions</CODE> program keeps
+asking you for arguments until it has enough.  This means that the <CODE>read</CODE> portion of the loop has to read a function name, figure out how many
+arguments that procedure takes, and then ask for the right number of
+arguments.  On the other hand, each argument is an implicitly quoted datum
+rather than an expression to be evaluated; the <CODE>functions</CODE> evaluator
+avoids the recursive complexity of arbitrary subexpressions within
+expressions.  (That's why we wrote it: to focus attention on one function
+invocation at a time, rather than on the composition of functions.)
+Here's the main loop:
+
+<P><PRE>(define (<A NAME="g2"></A>functions-loop)
+  (let ((fn-name (get-fn)))
+    (if (equal? fn-name 'exit)
+	&quot;Thanks for using FUNCTIONS!"
+	(let ((args (get-args (arg-count fn-name))))
+	  (if (not (in-domain? args fn-name))
+	      (show &quot;Argument(s) not in domain.&quot;)
+	      (show-answer (apply (scheme-procedure fn-name) args)))
+	  (functions-loop)))))
+</PRE>
+
+<P>This invokes a lot of helper procedures.  <CODE>Arg-count</CODE> takes
+the name of a procedure as its argument and returns the number of arguments
+that the given procedure takes.  <CODE>In-domain?</CODE> takes a list and the name
+of a procedure as arguments; it returns <CODE>#t</CODE> if the elements of the list
+are valid arguments to the given procedure.  <CODE>Scheme-procedure</CODE> takes a
+name as its argument and returns the Scheme procedure with the given name.
+We'll get back to these helpers later.
+
+<P>The other helper procedures are the ones that do the input and output.  The
+actual versions are more complicated because of error checking; we'll show
+them to you later.
+
+<P><PRE>(define (get-fn)                             ;; first version
+  (display &quot;Function: &quot;)
+  (read))
+
+(define (<A NAME="g3"></A>get-args n)
+  (if (= n 0)
+      '()
+      (let ((first (get-arg)))
+	(cons first (get-args (- n 1))))))
+
+(define (get-arg)                            ;; first version
+  (display &quot;Argument: &quot;)
+  (read))
+
+(define (<A NAME="g4"></A>show-answer answer)
+  (newline)
+  (display &quot;The result is: &quot;)
+  (if (not answer)
+      (show &quot;#F&quot;)
+      (show answer))
+  (newline))
+</PRE>
+
+<P>(That weird <CODE>if</CODE> expression in <CODE>show-answer</CODE> is needed
+because in some old versions of Scheme the empty list means the same as <CODE>#f</CODE>.  We wanted to avoid raising this issue in Chapter 2, so we
+just made sure that false values always printed as <CODE>#F</CODE>.)
+
+<P><H2>The Difference between a Procedure and Its Name</H2>
+
+<P>You may be wondering why we didn't just say
+
+<P><PRE>(show-answer (apply fn-name args))
+</PRE>
+
+<P>in the definition of <CODE>functions-loop</CODE>.  Remember that the value of
+the variable <CODE>fn-name</CODE> comes from <CODE>get-fn</CODE>, which invokes <CODE>read</CODE>.
+Suppose you said
+
+<P>
+<PRE>(define x (read))
+</PRE>
+
+<P>and then typed
+
+<P><PRE>(+ 2 3)
+</PRE>
+
+<P>The value of <CODE>x</CODE> would be the three element list <CODE>(+ 2 3)</CODE>, not the number five.
+
+<P>Similarly, if you type &quot;butfirst,&quot; then read will return the <EM>word</EM> <CODE>butfirst</CODE>, not the procedure of that name.  So we need a way to
+turn the name of a function into the procedure itself.
+
+<P><H2>The Association List of Functions</H2>
+
+<P>We accomplish this by creating a huge association list that contains
+all of the functions the program knows about.  Given a word, such as
+<CODE>butfirst</CODE>, we need to know three things:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The Scheme procedure with that name (in this case, the <CODE>butfirst</CODE>
+procedure).
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The number of arguments required by the given procedure
+(one).<A NAME="text1" HREF="functions-implement.html#ft1">[1]</A>
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The types of arguments required by the given procedure (one word or
+sentence, which must not be empty).
+
+</TABLE><P>
+We need to know the number of arguments the procedure requires because the
+program prompts the user individually for each argument; it has to know how
+many to ask for.  Also, it needs to know the domain of each function so
+it can complain if the arguments you give it are not in the
+domain.<A NAME="text2" HREF="functions-implement.html#ft2">[2]</A>
+
+<P>This means that each entry in the association list is a list of four
+elements:
+
+<P><PRE>(define *the-functions*                      ;; partial listing
+  (list (list '* * 2 (lambda (x y) (and (number? x) (number? y))))
+	(list '+ + 2 (lambda (x y) (and (number? x) (number? y))))
+	(list 'and (lambda (x y) (and x y)) 2
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'equal? equal? 2 (lambda (x y) #t))
+	(list 'even? even? 1 integer?)
+	(list 'word word 2 (lambda (x y) (and (word? x) (word? y))))))
+</PRE>
+
+<P>The real list is much longer, of course, but you get the
+idea.<A NAME="text3" HREF="functions-implement.html#ft3">[3]</A> It's a
+convention in Scheme programming that names of global variables used
+throughout a program are surrounded by <CODE>*</CODE>asterisks<CODE>*</CODE> to
+distinguish them from parameters of procedures.
+
+<P>Here are the selector procedures for looking up information in this a-list:
+
+<P><PRE>(define (<A NAME="g5"></A>scheme-procedure fn-name)
+  (cadr (assoc fn-name *the-functions*)))
+
+(define (<A NAME="g6"></A>arg-count fn-name)
+  (caddr (assoc fn-name *the-functions*)))
+
+(define (<A NAME="g7"></A>type-predicate fn-name)
+  (cadddr (assoc fn-name *the-functions*)))
+</PRE>
+
+<P><H2>Domain Checking</H2>
+
+<P> 
+Note that we represent the domain of a procedure by another
+procedure.<A NAME="text4" HREF="functions-implement.html#ft4">[4]</A> Each domain-checking procedure, or <EM>type
+predicate,</EM> takes the same arguments as the procedure whose domain it
+checks.  For example, the type predicate for <CODE>+</CODE> is
+
+<P><PRE>(lambda (x y) (and (number? x) (number? y)))
+</PRE>
+
+<P>The type predicate returns <CODE>#t</CODE> if its arguments
+are valid and <CODE>#f</CODE> otherwise.  So in the case of <CODE>+</CODE>, any two
+numbers are valid inputs, but any other types of arguments aren't.
+
+<P>Here's the <CODE>in-domain?</CODE> predicate:
+
+<P><PRE>(define (<A NAME="g8"></A>in-domain? args fn-name)
+  (apply (type-predicate fn-name) args))
+</PRE>
+
+<P>Of course, certain type predicates are applicable to more than one
+procedure.  It would be silly to type
+
+<P><PRE>(lambda (x y) (and (number? x) (number? y)))
+</PRE>
+
+<P>for <CODE>+</CODE>, <CODE>-</CODE>, <CODE>=</CODE>, and so on.  Instead, we give this
+function a name:
+
+<P><PRE>(define (<A NAME="g9"></A>two-numbers? x y)
+  (and (number? x) (number? y)))
+</PRE>
+
+<P>We then refer to the type predicate by name in the a-list:
+
+<P><PRE>(define *the-functions*                     ;; partial listing, revised
+  (list (list '* * 2 two-numbers?)
+	(list '+ + 2 two-numbers?)
+	(list 'and (lambda (x y) (and x y)) 2
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'equal? equal? 2 (lambda (x y) #t))
+	(list 'even? even? 1 integer?)
+	(list 'word word 2 (lambda (x y) (and (word? x) (word? y))))))
+</PRE>
+
+<P>Some of the type predicates are more complicated.  For example,
+here's the one for the <CODE>member?</CODE> and <CODE>appearances</CODE> functions:
+
+<P><PRE>(define (<A NAME="g10"></A>member-types-ok? small big)
+  (and (word? small)
+       (or (sentence? big) (and (word? big) (= (count small) 1)))))
+</PRE>
+
+<P><CODE>Item</CODE> also has a complicated domain:
+
+<P><PRE>(lambda (n stuff)
+  (and (integer? n) (&gt; n 0)
+       (word-or-sent? stuff) (&lt;= n (count stuff))))
+</PRE>
+
+<P>This invokes <CODE>word-or-sent?</CODE>, which is itself the type
+predicate for the <CODE>count</CODE> procedure:
+
+<P><PRE>(define (word-or-sent? x)
+  (or (word? x) (sentence? x)))
+</PRE>
+
+<P>On the other hand, some are less complicated.  <CODE>Equal?</CODE> will accept any
+two arguments, so its type predicate is just
+
+<P><PRE>(lambda (x y) #t)
+</PRE>
+
+<P>The complete listing at the end of the chapter shows the details of all these
+procedures.  Note that the <CODE>functions</CODE> program has a more restricted
+idea of domain than Scheme does.  For example, in Scheme
+
+<P><PRE>(and 6 #t)
+</PRE>
+
+<P>returns <CODE>#t</CODE> and does not generate an error.  But in
+the <CODE>functions</CODE> program the argument <CODE>6</CODE> is considered out of the
+domain.<A NAME="text5" HREF="functions-implement.html#ft5">[5]</A>
+
+<P>If you don't like math, just ignore the domain predicates for the
+mathematical primitives; they involve facts about the domains of math
+functions that we don't expect you to know.<A NAME="text6" HREF="functions-implement.html#ft6">[6]</A>
+
+<P><H2>Intentionally Confusing a Function with Its Name</H2>
+
+<P>
+Earlier we made a big deal about the difference between a procedure and its
+name, to make sure you wouldn't think you can apply the <EM>word</EM> <CODE>butfirst</CODE> to arguments.  But the <CODE>functions</CODE> program completely hides
+this distinction from the user:
+
+<P><PRE>Function: count
+Argument: butlast
+
+The result is: 7
+
+Function: every
+Argument: butlast
+Argument: (helter skelter)
+
+The result is: (HELTE SKELTE)
+</PRE>
+
+<P>When we give <CODE>butlast</CODE> as an argument to <CODE>count</CODE>, it's as if we'd said
+
+<P><PRE>(count 'butlast)
+</PRE>
+
+<P>In other words, it's taken as a word.  But when we give <CODE>butlast</CODE> as an argument to <CODE>every</CODE>, it's as if we'd said
+
+<P><PRE>(every butlast '(helter skelter))
+</PRE>
+
+<P>How can we treat some arguments as quoted and others not?  The way this
+works is that <EM>everything</EM> is considered a word or a sentence by the
+<CODE>functions</CODE> program.  The higher-order functions <CODE>every</CODE> and <CODE>keep</CODE> are actually represented in the <CODE>functions</CODE> implementation by
+Scheme procedures that take the <EM>name</EM> of a function as an argument,
+instead of a procedure itself as the ordinary versions do:
+
+<P><PRE>(define (<A NAME="g11"></A>named-every fn-name list)
+  (every (scheme-procedure fn-name) list))
+
+(define (<A NAME="g12"></A>named-keep fn-name list)
+  (keep (scheme-procedure fn-name) list))
+
+&gt; (every first '(another girl))
+(A G)
+&gt; (named-every 'first '(another girl))
+(A G)
+&gt; (every 'first '(another girl))
+ERROR: ATTEMPT TO APPLY NON-PROCEDURE FIRST
+</PRE>
+
+<P> 
+This illustration hides a subtle point.  When we invoked <CODE>named-every</CODE> at a Scheme prompt, we had to quote the word <CODE>first</CODE>
+that we used as its argument.  But when you run the <CODE>functions</CODE> program,
+you don't quote anything.  The point is that <CODE>functions</CODE> provides an
+evaluator that uses a different notation from Scheme's notation.  It may be
+clearer if we show an interaction with an imaginary version of <CODE>functions</CODE> that <EM>does</EM> use Scheme notation:
+
+<P><PRE>Function: first
+Non-Automatically-Quoted-Argument: 'datum
+
+The result is: D
+
+Function: first
+Non-Automatically-Quoted-Argument: datum
+
+ERROR: THE VARIABLE DATUM IS UNBOUND.
+</PRE>
+
+<P>We didn't want to raise the issue of quoting at that early point
+in the book, so we wrote <CODE>functions</CODE> so that <EM>every</EM> argument
+is automatically quoted.  Well, if that's the case, it's true even when
+we're invoking <CODE>every</CODE>.  If you say
+
+<P><PRE>Function: every
+Argument: first
+&hellip;</PRE>
+
+<P>then by the rules of the <CODE>functions</CODE> program, that argument is
+the quoted word <CODE>first</CODE>.  So <CODE>named-every</CODE>, the procedure that
+pretends to be <CODE>every</CODE> in the <CODE>functions</CODE> world, has to &quot;un-quote&quot;
+that argument by looking up the corresponding procedure.
+
+<P><H2>More on Higher-Order Functions</H2>
+
+<P>One of the higher-order functions that you can use in the <CODE>functions</CODE>
+program is called <CODE>number-of-arguments</CODE>.  It takes a procedure (actually
+the name of a procedure, as we've just been saying) as argument and returns
+the number of arguments that that procedure accepts.  This example is
+unusual because there's no such function in Scheme.  (It would be
+complicated to define, for one thing, because some Scheme procedures can
+accept a variable number of arguments.  What should <CODE>number-of-arguments</CODE> return for such a procedure?)
+
+<P>The implementation of <CODE>number-of-arguments</CODE> makes use of the same a-list
+of functions that the <CODE>functions</CODE> evaluator itself uses.  Since the
+<CODE>functions</CODE> program needs to know the number of arguments for every
+procedure anyway, it's hardly any extra effort to make that information
+available to the user.  We just add an entry to the a-list:
+
+<P><PRE>(list '<A NAME="g13"></A>number-of-arguments arg-count 1 valid-fn-name?)
+</PRE>
+
+<P>The type predicate merely has to check that the argument
+is found in the a-list of functions:
+
+<P><PRE>(define (<A NAME="g14"></A>valid-fn-name? name)
+  (assoc name *the-functions*))
+</PRE>
+
+<P>The type checking for the arguments to <CODE>every</CODE> and <CODE>keep</CODE> is
+unusually complicated because what's allowed as the second argument (the
+collection of data) depends on which function is used as the first argument.
+For example, it's illegal to compute
+
+<P><PRE>(every square '(think for yourself))
+</PRE>
+
+<P>even though either of those two arguments would be allowable if we
+changed the other one:
+
+<P><PRE>&gt; (every square '(3 4 5))
+(9 16 25)
+
+&gt; (every first '(think for yourself))
+(T F Y)
+</PRE>
+
+<P>The type-checking procedures for <CODE>every</CODE> and <CODE>keep</CODE> use a common
+subprocedure.  The one for <CODE>every</CODE> is
+
+<P><PRE>(lambda (fn stuff)
+  (hof-types-ok? fn stuff word-or-sent?))
+</PRE>
+
+<P>and the one for <CODE>keep</CODE> is
+
+<P><PRE>(lambda (fn stuff)
+  (hof-types-ok? fn stuff boolean?))
+</PRE>
+
+<P>The third argument specifies what types of results <CODE>fn</CODE> must
+return when applied to the elements of <CODE>stuff</CODE>.
+
+<P><PRE>(define (hof-types-ok? fn-name stuff range-predicate)
+  (and (valid-fn-name? fn-name)
+       (= 1 (arg-count fn-name))
+       (word-or-sent? stuff)
+       (empty? (keep (lambda (element)
+		       (not ((type-predicate fn-name) element)))
+		     stuff))
+       (null? (filter (lambda (element)
+			(not (range-predicate element)))
+		      (map (scheme-procedure fn-name)
+			   (every (lambda (x) x) stuff))))))
+</PRE>
+
+<P>This says that the function being used as the first argument must
+be a one-argument function (so you can't say, for example, <CODE>every</CODE> of
+<CODE>word</CODE> and something); also, <EM>each element</EM> of the second argument
+must be an acceptable argument to that function.  (If you <CODE>keep</CODE> the
+unacceptable arguments, you get nothing.)  Finally, each invocation of the
+given function on an element of <CODE>stuff</CODE> must return an object of the
+appropriate type: words or sentences for <CODE>every</CODE>, true or false for
+<CODE>keep</CODE>.<A NAME="text7" HREF="functions-implement.html#ft7">[7]</A>
+
+<P><H2>More Robustness</H2>
+
+<P>The program we've shown you so far works fine, as long as the user
+never makes a mistake.  Because this program was written for absolute
+novices, we wanted to bend over backward to catch any kind of strange input
+they might give us.
+
+<P>Using <CODE>read</CODE> to accept user input has a number of disadvantages:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If the user enters an empty line, <CODE>read</CODE> continues waiting silently
+for input.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If the user types an unmatched open parenthesis, <CODE>read</CODE> continues
+reading forever.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If the user types two expressions on a line, the second one will be
+taken as a response to the question the <CODE>functions</CODE> program hasn't asked
+yet.
+
+</TABLE><P>
+We solve all these problems by using <CODE>read-line</CODE> to read
+exactly one line, even if it's empty or ill-formed, and then checking
+explicitly for possible errors.
+
+<P><CODE>Read-line</CODE> treats parentheses no differently from any other character.
+That's an advantage if the user enters mismatched or inappropriately nested
+parentheses.  However, if the user correctly enters a sentence as an
+argument to some function, <CODE>read-line</CODE> will include the initial open
+parenthesis as the first character of the first word, and the final close
+parenthesis as the last character of the last word.  <CODE>Get-arg</CODE> must
+correct for these extra characters.
+
+<P>Similarly, <CODE>read-line</CODE> treats number signs (<CODE>#</CODE>) like any other
+character, so it doesn't recognize <CODE>#t</CODE> and <CODE>#f</CODE> as special values.
+Instead it reads them as the strings <CODE>&quot;#t&quot;</CODE> and <CODE>&quot;#f&quot;</CODE>.  <CODE>Get-arg</CODE> calls <CODE>booleanize</CODE> to convert those strings into Boolean values.
+
+<P><PRE>(define (<A NAME="g15"></A>get-arg)
+  (display &quot;Argument: &quot;)
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show &quot;Please type an argument!&quot;)
+	   (get-arg))
+	  ((and (equal? &quot;(&quot; (first (first line)))
+		(equal? &quot;)&quot; (last (last line))))
+	   (let ((sent (remove-first-paren (remove-last-paren line))))
+	     (if (any-parens? sent)
+		 (begin (show &quot;Sentences can't have parentheses inside.&quot;)
+			(get-arg))
+		 (map booleanize sent))))
+	  ((any-parens? line)
+	   (show &quot;Bad parentheses&quot;)
+	   (get-arg))
+	  ((empty? (bf line)) (booleanize (first line)))
+	  (else (show &quot;You typed more than one argument!  Try again.&quot;)
+		(get-arg)))))
+</PRE>
+
+<P><CODE>Get-arg</CODE> invokes <CODE>any-parens?</CODE>, <CODE>remove-first-paren</CODE>, <CODE>remove-last-paren</CODE>, and <CODE>booleanize</CODE>, whose
+meanings should be obvious from their names.  You can look up their
+definitions in the complete listing at the end of this chapter.
+
+<P><CODE>Get-fn</CODE> is simpler than <CODE>get-arg</CODE>, because there's no issue about
+parentheses, but it's still much more complicated than the original version,
+because of error checking.
+
+<P>
+<PRE>(define (<A NAME="g16"></A>get-fn)
+  (display &quot;Function: &quot;)
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show &quot;Please type a function!&quot;)
+	   (get-fn))
+	  ((not (= (count line) 1))
+	   (show &quot;You typed more than one thing!  Try again.&quot;)
+	   (get-fn))
+	  ((not (valid-fn-name? (first line)))
+	   (show &quot;Sorry, that's not a function.&quot;)
+	   (get-fn))
+	  (else (first line)))))
+</PRE>
+
+<P>This version of <CODE>get-fn</CODE> uses <CODE>valid-fn-name?</CODE> (which
+you've already seen) to ensure that what the user types is the name of a
+function we know about.
+
+<P>There's a problem with using <CODE>read-line</CODE>.  As we mentioned in a pitfall
+in Chapter 20, reading some input with <CODE>read</CODE> and then reading the next
+input with <CODE>read-line</CODE> results in <CODE>read-line</CODE> returning an empty
+line left over by <CODE>read</CODE>.  Although the <CODE>functions</CODE> program doesn't
+use <CODE>read</CODE>, Scheme itself used <CODE>read</CODE> to read the <CODE>(functions)</CODE>
+expression that started the program.  Therefore,
+<CODE>get-fn</CODE>'s first attempt to read a function name will see an empty
+line.  To fix this problem, the <CODE>functions</CODE> procedure has an
+extra invocation of <CODE>read-line</CODE>:
+
+<P><PRE>(define (functions)
+  (read-line)
+  (show &quot;Welcome to the FUNCTIONS program.&quot;)
+  (functions-loop))
+</PRE>
+
+<P> 
+<H2>Complete Program Listing</H2>
+
+<P><P><P><PRE>
+;;; The functions program
+
+(define (functions)
+  ;; (read-line)
+  (show "Welcome to the FUNCTIONS program.")
+  (functions-loop))
+
+(define (functions-loop)
+  (let ((fn-name (get-fn)))
+    (if (equal? fn-name 'exit)
+	"Thanks for using FUNCTIONS!"
+	(let ((args (get-args (arg-count fn-name))))
+	  (if (not (in-domain? args fn-name))
+	     (show "Argument(s) not in domain.")
+	     (show-answer (apply (scheme-function fn-name) args)))
+	  (functions-loop)))))
+
+(define (get-fn)
+  (display "Function: ")
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show "Please type a function!")
+	   (get-fn))
+	  ((not (= (count line) 1))
+	   (show "You typed more than one thing!  Try again.")
+	   (get-fn))
+	  ((not (valid-fn-name? (first line)))
+	   (show "Sorry, that's not a function.")
+	   (get-fn))
+	  (else (first line)))))
+
+(define (get-arg)
+  (display "Argument: ")
+  (let ((line (read-line)))
+    (cond ((empty? line)
+	   (show "Please type an argument!")
+	   (get-arg))
+	  ((and (equal? "(" (first (first line)))
+		(equal? ")" (last (last line))))
+	   (let ((sent (remove-first-paren (remove-last-paren line))))
+	     (if (any-parens? sent)
+		 (begin
+		  (show "Sentences can't have parentheses inside.")
+		  (get-arg))
+		 (map booleanize sent))))
+	  ((any-parens? line)
+	   (show "Bad parentheses")
+	   (get-arg))
+	  ((empty? (bf line)) (booleanize (first line)))
+	  (else (show "You typed more than one argument!  Try again.")
+		(get-arg)))))
+
+(define (get-args n)
+  (if (= n 0)
+      '()
+      (let ((first (get-arg)))
+	(cons first (get-args (- n 1))))))
+
+(define (any-parens? line)
+  (let ((letters (accumulate word line)))
+    (or (member? "(" letters)
+	(member? ")" letters))))
+
+(define (remove-first-paren line)
+  (if (equal? (first line) "(")
+      (bf line)
+      (se (bf (first line)) (bf line))))
+
+(define (remove-last-paren line)
+  (if (equal? (last line) ")")
+      (bl line)
+      (se (bl line) (bl (last line)))))
+
+(define (booleanize x)
+  (cond ((equal? x "#t") #t)
+	((equal? x "#f") #f)
+	(else x)))
+
+(define (show-answer answer)
+  (newline)
+  (display "The result is: ")
+  (if (not answer)
+      (show "#F")
+      (show answer))
+  (newline))
+
+(define (scheme-function fn-name)
+  (cadr (assoc fn-name *the-functions*)))
+
+(define (arg-count fn-name)
+  (caddr (assoc fn-name *the-functions*)))
+
+(define (type-predicate fn-name)
+  (cadddr (assoc fn-name *the-functions*)))
+
+(define (in-domain? args fn-name)
+  (apply (type-predicate fn-name) args))
+
+
+;; Type predicates
+
+(define (word-or-sent? x)
+  (or (word? x) (sentence? x)))
+
+(define (not-empty? x)
+  (and (word-or-sent? x) (not (empty? x))))
+
+(define (two-numbers? x y)
+  (and (number? x) (number? y)))
+
+(define (two-reals? x y)
+  (and (real? x) (real? y)))
+
+(define (two-integers? x y)
+  (and (integer? x) (integer? y)))
+
+(define (can-divide? x y)
+  (and (number? x) (number? y) (not (= y 0))))
+
+(define (dividable-integers? x y)
+  (and (two-integers? x y) (not (= y 0))))
+
+(define (trig-range? x)
+  (and (number? x) (<= (abs x) 1)))
+
+(define (hof-types-ok? fn-name stuff range-predicate)
+  (and (valid-fn-name? fn-name)
+       (= 1 (arg-count fn-name))
+       (word-or-sent? stuff)
+       (empty? (keep (lambda (element)
+		       (not ((type-predicate fn-name) element)))
+		     stuff))
+       (null? (filter (lambda (element)
+			(not (range-predicate element)))
+		      (map (scheme-function fn-name)
+			   (every (lambda (x) x) stuff))))))
+
+(define (member-types-ok? small big)
+  (and (word? small)
+       (or (sentence? big) (and (word? big) (= (count small) 1)))))
+
+
+;; Names of functions as functions
+
+(define (named-every fn-name list)
+  (every (scheme-function fn-name) list))
+
+(define (named-keep fn-name list)
+  (keep (scheme-function fn-name) list))
+
+(define (valid-fn-name? name)
+  (assoc name *the-functions*))
+
+;; The list itself
+          
+(define *the-functions*
+  (list (list '* * 2 two-numbers?)
+	(list '+ + 2 two-numbers?)
+	(list '- - 2 two-numbers?)
+	(list '/ / 2 can-divide?)
+	(list '< < 2 two-reals?)
+	(list '<= <= 2 two-reals?)
+	(list '= = 2 two-numbers?)
+	(list '> > 2 two-reals?)
+	(list '>= >= 2 two-reals?)
+	(list 'abs abs 1 real?)
+	(list 'acos acos 1 trig-range?)
+	(list 'and (lambda (x y) (and x y)) 2 
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'appearances appearances 2 member-types-ok?)
+	(list 'asin asin 1 trig-range?)
+	(list 'atan atan 1 number?)
+	(list 'bf bf 1 not-empty?)
+	(list 'bl bl 1 not-empty?)
+	(list 'butfirst butfirst 1 not-empty?)
+	(list 'butlast butlast 1 not-empty?)
+	(list 'ceiling ceiling 1 real?)
+	(list 'cos cos 1 number?)
+	(list 'count count 1 word-or-sent?)
+	(list 'equal? equal? 2 (lambda (x y) #t))
+	(list 'even? even? 1 integer?)
+	(list 'every named-every 2
+	      (lambda (fn stuff)
+		(hof-types-ok? fn stuff word-or-sent?)))
+	(list 'exit '() 0 '())
+	   ; in case user applies number-of-arguments to exit
+	(list 'exp exp 1 number?)
+
+	(list 'expt expt 2
+	      (lambda (x y)
+		(and (number? x) (number? y)
+		     (or (not (real? x)) (>= x 0) (integer? y)))))
+	(list 'first first 1 not-empty?)
+	(list 'floor floor 1 real?)
+	(list 'gcd gcd 2 two-integers?)
+	(list 'if (lambda (pred yes no) (if pred yes no)) 3
+	      (lambda (pred yes no) (boolean? pred)))
+	(list 'item item 2
+	      (lambda (n stuff)
+		(and (integer? n) (> n 0)
+		     (word-or-sent? stuff) (<= n (count stuff)))))
+	(list 'keep named-keep 2
+	      (lambda (fn stuff)
+		(hof-types-ok? fn stuff boolean?)))
+	(list 'last last 1 not-empty?)
+	(list 'lcm lcm 2 two-integers?)
+	(list 'log log 1 (lambda (x) (and (number? x) (not (= x 0)))))
+	(list 'max max 2 two-reals?)
+	(list 'member? member? 2 member-types-ok?)
+	(list 'min min 2 two-reals?)
+	(list 'modulo modulo 2 dividable-integers?)
+	(list 'not not 1 boolean?)
+	(list 'number-of-arguments arg-count 1 valid-fn-name?)
+	(list 'odd? odd? 1 integer?)
+	(list 'or (lambda (x y) (or x y)) 2
+	      (lambda (x y) (and (boolean? x) (boolean? y))))
+	(list 'quotient quotient 2 dividable-integers?)
+	(list 'random random 1 (lambda (x) (and (integer? x) (> x 0))))
+	(list 'remainder remainder 2 dividable-integers?)
+	(list 'round round 1 real?)
+	(list 'se se 2
+	      (lambda (x y) (and (word-or-sent? x) (word-or-sent? y))))
+	(list 'sentence sentence 2
+	      (lambda (x y) (and (word-or-sent? x) (word-or-sent? y))))
+	(list 'sentence? sentence? 1 (lambda (x) #t))
+	(list 'sin sin 1 number?)
+	(list 'sqrt sqrt 1 (lambda (x) (and (real? x) (>= x 0))))
+	(list 'tan tan 1 number?)
+	(list 'truncate truncate 1 real?)
+	(list 'vowel? (lambda (x) (member? x '(a e i o u))) 1
+	      (lambda (x) #t))
+	(list 'word word 2 (lambda (x y) (and (word? x) (word? y))))
+	(list 'word? word? 1 (lambda (x) #t))))
+
+</PRE><P>
+
+
+<P><H2>Exercises</H2>
+
+<P><B>21.1</B>&nbsp;&nbsp;The <CODE>get-args</CODE> procedure has a <CODE>let</CODE> that creates the variable <CODE>first</CODE>, and then that variable is used only once inside the body of the <CODE>let</CODE>.  Why doesn't it just say the following?
+
+<P><PRE>(define (get-args n)
+  (if (= n 0)
+      '()
+      (cons (get-arg) (get-args (- n 1)))))
+</PRE>
+
+
+<P>
+<B>21.2</B>&nbsp;&nbsp;The domain-checking function for <CODE>equal?</CODE> is
+
+<P><PRE>(lambda (x y) #t)
+</PRE>
+
+<P>This seems silly; it's a function of two arguments that ignores
+both arguments and always returns <CODE>#t</CODE>.  Since we know ahead of time
+that the answer is <CODE>#t</CODE>, why won't it work to have <CODE>equal?</CODE>'s entry
+in the a-list be
+
+<P><PRE>(list 'equal? equal? 2 #t)
+</PRE>
+
+ 
+<B>21.3</B>&nbsp;&nbsp;Every time we want to know something about a function that the user typed
+in, such as its number of arguments or its domain-checking predicate, we
+have to do an <CODE>assoc</CODE> in <CODE>*the-functions*</CODE>.  That's inefficient.
+Instead, rewrite the program so that <CODE>get-fn</CODE> returns a function's entry
+from the a-list, instead of just its name.  Then rename the variable <CODE>fn-name</CODE> to <CODE>fn-entry</CODE> in the <CODE>functions-loop</CODE> procedure, and rewrite
+the selectors <CODE>scheme-procedure</CODE>, <CODE>arg-count</CODE>, and so on, so that
+they don't invoke <CODE>assoc</CODE>.
+
+
+<P>
+<B>21.4</B>&nbsp;&nbsp;Currently, the program always gives the message &quot;argument(s) not in
+domain&quot; when you try to apply a function to bad arguments.  Modify the
+program so that each record in <CODE>*the-functions*</CODE> also contains a
+specific out-of-domain message like &quot;both arguments must be numbers,&quot; then
+modify <CODE>functions</CODE> to look up and print this error message along with
+&quot;argument(s) not in domain.&quot;
+
+
+<P>
+
+<B>21.5</B>&nbsp;&nbsp;Modify the program so that it prompts for the arguments this way:
+
+<P><PRE>Function: if
+First Argument: #t
+Second Argument: paperback
+Third Argument: writer
+
+The result is: PAPERBACK
+</PRE>
+
+<P>but if there's only one argument, the program shouldn't say <CODE>First</CODE>:
+
+<P><PRE>Function: sqrt
+Argument: 36
+
+The result is 6
+</PRE>
+
+<P>
+<B>21.6</B>&nbsp;&nbsp;The <CODE>assoc</CODE> procedure might return <CODE>#f</CODE> instead of an a-list
+record.  How come it's okay for <CODE>arg-count</CODE> to take the <CODE>caddr</CODE> of
+<CODE>assoc</CODE>'s return value if <CODE>(caddr #f)</CODE> is an error?
+
+
+<P>
+<B>21.7</B>&nbsp;&nbsp;Why is the domain-checking predicate for the <CODE>word?</CODE> function
+
+<P><PRE>(lambda (x) #t)
+</PRE>
+
+<P>instead of the following procedure?
+
+<P><PRE>(lambda (x) (word? x))
+</PRE>
+
+
+<P>
+<B>21.8</B>&nbsp;&nbsp;What is the value of the following Scheme expression?
+
+<P><PRE>(functions)
+</PRE>
+
+
+<P>
+<P>
+<B>21.9</B>&nbsp;&nbsp;We said in the recursion chapters that every recursive procedure has to have
+a base case and a recursive case, and that the recursive case has to somehow
+reduce the size of the problem, getting closer to the base case.  How does
+the recursive call in <CODE>get-fn</CODE> reduce the size of the problem?
+
+
+<P>
+<HR>
+<A NAME="ft1" HREF="functions-implement.html#text1">[1]</A> Some Scheme procedures can accept any number of arguments,
+but for the purposes of the <CODE>functions</CODE> program we restrict these
+procedures to their most usual case, such as two arguments for <CODE>+</CODE>.<P>
+<A NAME="ft2" HREF="functions-implement.html#text2">[2]</A> Scheme would complain all by itself, of course, but would
+then stop running the <CODE>functions</CODE> program.  We want to catch the error
+before Scheme does, so that after seeing the error message you're still in
+<CODE>functions</CODE>.  As we mentioned in Chapter 19, a program meant for
+beginners, such as the readers of Chapter 2, should be
+especially robust.<P>
+<A NAME="ft3" HREF="functions-implement.html#text3">[3]</A> Since <CODE>and</CODE> is a special form, we can't just say
+
+<P><PRE>(list 'and and 2 (lambda (x y) (and (boolean? x) (boolean? y))))
+</PRE>
+
+<P>That's because special forms can't be elements of lists.  Instead, we have
+to create a normal procedure that can be put in a list but computes the same
+function as <CODE>and</CODE>:
+
+<P><PRE>(lambda (x y) (and x y))
+</PRE>
+
+<P>We can get away with this because in the <CODE>functions</CODE> program we
+don't care about argument evaluation, so it doesn't matter that <CODE>and</CODE> is
+a special form.  We do the same thing for <CODE>if</CODE> and <CODE>or</CODE>.<P>
+<A NAME="ft4" HREF="functions-implement.html#text4">[4]</A> The domain of a procedure is a set, and sets are generally
+represented in programs as lists.  You might think that we'd have to store,
+for example, a list of all the legal arguments to <CODE>butfirst</CODE>.  But that
+would be impossible, since that list would have to be infinitely large.
+Instead, we can take advantage of the fact that the only use we make of this
+set is membership testing, that is, finding out whether a particular argument
+is in a function's domain.<P>
+<A NAME="ft5" HREF="functions-implement.html#text5">[5]</A> Why did we choose to restrict the domain?  We were trying
+to make the point that invoking a procedure makes sense only with appropriate
+arguments; that point is obscured by the complicating fact that Scheme
+interprets any non-<CODE>#f</CODE> value as true.  In the <CODE>functions</CODE> program,
+where composition of functions is not allowed, there's no benefit to Scheme's
+more permissive rule.<P>
+<A NAME="ft6" HREF="functions-implement.html#text6">[6]</A> A reason that we
+restricted the domains of some mathematical functions is to protect
+ourselves from the fact that some version of Scheme support complex numbers
+while others do not.  We wanted to write one version of <CODE>functions</CODE> that
+would work in either case; sometimes the easiest way to avoid possible
+problems was to restrict some function's domain.<P>
+<A NAME="ft7" HREF="functions-implement.html#text7">[7]</A> That last argument to <CODE>and</CODE> is complicated.  The
+reason we use <CODE>map</CODE> instead of <CODE>every</CODE> is that the results of the
+invocations of <CODE>fn</CODE> might not be words or sentences, so <CODE>every</CODE>
+wouldn't accept them.  But <CODE>map</CODE> has its own limitation:  It won't
+accept a word as the <CODE>stuff</CODE> argument.  So we use <CODE>every</CODE> to turn
+<CODE>stuff</CODE> into a sentence&mdash;which, as you know, is really a list&mdash;and
+that's guaranteed to be acceptable to <CODE>map</CODE>.  (This is an example of a
+situation in which respecting a data abstraction would be too horrible to
+contemplate.)<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch20/io.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch22/files.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch22/files b/js/games/nluqo.github.io/~bh/ssch22/files
new file mode 100644
index 0000000..ed2c840
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch22/files
@@ -0,0 +1,875 @@
+<P>
+
+<P><A NAME="cabinets"></A>
+<P><CENTER><IMG SRC="../ss-pics/files.jpg" ALT="figure: files"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 22: Files</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 22</H2>
+<H1>Files</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch22.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch21/functions-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch23/vectors.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We learned in Chapter 20 how to read from the keyboard and write to the
+screen.  The same procedures (<A NAME="g1"></A><CODE>read</CODE>, <CODE><A NAME="g2"></A><CODE>read-line</CODE></CODE>,
+<A NAME="g3"></A><CODE>display</CODE>, <A NAME="g4"></A><CODE>show</CODE>, <CODE><A NAME="g5"></A><CODE>show-line</CODE></CODE>, and
+<A NAME="g6"></A><CODE>newline</CODE>) can also be used to read and write <A NAME="g7"></A><A NAME="g8"></A>data files on
+the disk.
+
+<P><H2>Ports</H2>
+
+<P>Imagine a complicated program that reads a little bit of data at a time from
+a lot of different files.  For example, soon we will write a program to
+merge two files the way we merged two sentences in <CODE>mergesort</CODE> in Chapter
+15.  In order to make this work, each invocation of <CODE>read</CODE> must
+specify which file to read from this time.  Similarly, we might want to
+direct output among several files.
+
+<P>Each of the input/output procedures can take an extra argument to specify a
+file:
+
+<P><PRE>(show '(across the universe) file1)
+(show-line '(penny lane) file2)
+(read file3)
+</PRE>
+
+<P>What are <CODE>file1</CODE> and so on?  You might think that the natural
+thing would be for them to be words, that is, the names of files.
+
+<P>It happens not to work that way.  Instead, before you can use a file, you
+have to <EM>open</EM> it.  If you want to read a file, the system has to
+check that the file exists.  If you want to write a file, the system has to
+create a new, empty file.  The Scheme procedures that open a file return a
+<EM>port,</EM> which is what Scheme uses to remember the file you opened.
+Ports are useful only as arguments to the input/output procedures.  Here's
+an example:
+
+<P><PRE>&gt; (let ((port (<A NAME="g9"></A>open-output-file &quot;songs&quot;)))
+    (<A NAME="g10"></A>show '(all my loving) port)
+    (show '(ticket to ride) port)
+    (show '(martha my dear) port)
+    (<A NAME="g11"></A>close-output-port port))
+</PRE>
+
+<P>(<CODE>Close-output-port</CODE>, like <CODE>define</CODE>, has an unspecified
+return value that we're not going to include in the examples.)
+
+<P>We've created a file named <CODE>songs</CODE> and put three expressions, each on
+its own line, in that file.  Notice that nothing appeared on the screen when
+we called <CODE>show</CODE>.  Because we used a port argument to <CODE>show</CODE>, the
+output went into the file.  Here's what's in the file:
+
+<P><PRE>(ALL MY LOVING)
+(TICKET TO RIDE)
+(MARTHA MY DEAR)
+</PRE>
+
+<P>The example illustrates two more details about using files that we haven't
+mentioned before: First, the name of a file must be given in double-quote
+marks.  Second, when you're finished using a file, you have to <EM>close</EM>
+the port associated with it.  (This is very important.  On some systems,
+if you forget to close the port, the file disappears.)
+
+<P>The file is now permanent.  If we were to exit from Scheme, we could read
+the file in a word processor or any other program.  But let's read it using
+Scheme:
+
+<P><PRE>(define in (<A NAME="g12"></A>open-input-file &quot;songs&quot;))
+
+&gt; (read in)
+(ALL MY LOVING)
+
+&gt; (read in)
+(TICKET TO RIDE)
+
+&gt; (read in)
+(MARTHA MY DEAR)
+
+&gt; (<A NAME="g13"></A>close-input-port in)
+</PRE>
+
+<P>(In this illustration, we've used a global variable to hold the
+port because we wanted to show the results of reading the file step by
+step.  In a real program, we'd generally use a <CODE>let</CODE> structure like the
+one we used to write the file.  Now that we've closed the port, the variable
+<CODE>in</CODE> contains a port that can no longer be used.)
+
+<P><H2>Writing Files for People to Read</H2>
+
+<P>
+A file full of sentences in parentheses is a natural representation for
+information that will be used by a Scheme program, but it may seem awkward
+if the file will be read by human beings.  We could use <CODE>show-line</CODE>
+instead of <CODE>show</CODE> to create a file, still with one song title per line,
+but without the parentheses:
+
+<P><PRE>&gt; (let ((port (open-output-file &quot;songs2&quot;)))
+    (show-line '(all my loving) port)
+    (show-line '(ticket to ride) port)
+    (show-line '(martha my dear) port)
+    (close-output-port port))
+</PRE>
+
+<P>The file <CODE>songs2</CODE> will contain
+
+<P><PRE>ALL MY LOVING
+TICKET TO RIDE
+MARTHA MY DEAR
+</PRE>
+
+<P>What should we do if we want to read this file back into Scheme?  We must
+read the file a line at a time, with <CODE>read-line</CODE>.  In effect, <CODE>read-line</CODE> treats the breaks between lines as if they were parentheses:
+
+<P><PRE>(define in (open-input-file &quot;songs2&quot;))
+
+&gt; (read-line in)
+(ALL MY LOVING)
+
+&gt; (close-input-port in)
+</PRE>
+
+<P>(Notice that we don't have to read the entire file before closing
+the port.  If we open the file again later, we start over again from the
+beginning.)
+
+<P> 
+As far as Scheme is concerned, the result of writing the file with <CODE>show-line</CODE> and reading it with <CODE>read-line</CODE> was the same as that of
+writing it with <CODE>show</CODE> and reading it with <CODE>read</CODE>.  The difference
+is that without parentheses the file itself is more &quot;user-friendly&quot; for
+someone who reads it outside of Scheme.<A NAME="text1" HREF="files#ft1">[1]</A>
+
+<P><H2>Using a File as a Database</H2>
+
+<P>It's not very interesting merely to read the file line by line.  Instead,
+let's use it as a very small database in which we can look up songs by
+number.  (For only three songs, it would be more realistic and more
+convenient to keep them in a list and look them up with <CODE>list-ref</CODE>.
+Pretend that this file has 3000 songs, too many for you to want to keep
+them all at once in your computer's memory.)
+
+<P><PRE>(define (<A NAME="g14"></A>get-song n)
+  (let ((port (open-input-file &quot;songs2&quot;)))
+    (skip-songs (- n 1) port)
+    (let ((answer (read-line port)))
+      (close-input-port port)
+      answer)))
+
+(define (<A NAME="g15"></A>skip-songs n port)
+  (if (= n 0)
+      'done
+      (begin (read-line port)
+	     (skip-songs (- n 1) port))))
+
+&gt; (get-song 2)      
+(TICKET TO RIDE)
+</PRE>
+
+<P>When we invoke <CODE>read-line</CODE> in <CODE>skip-songs</CODE>, we pay no
+attention to the value it returns.  Remember that the values of all but the
+last expression in a sequence are discarded.  <CODE>Read</CODE> and <CODE>read-line</CODE>
+are the first procedures we've seen that have both a useful return value and
+a useful side effect&mdash;moving forward in the file.
+
+<P><CODE>Skip-songs</CODE> returns the word <CODE>done</CODE> when it's finished.  We don't
+do anything with that return value, and there's no particular reason why we
+chose that word.  But every Scheme procedure has to return <EM>something,</EM>
+and this was as good as anything.
+
+<P>What if we asked for a song number greater than three?  In other words, what
+if we read beyond the end of the file?  In that case, <CODE>read</CODE> will return
+a special value called an <EM><A NAME="g16"></A><A NAME="g17"></A>end-of-file object.</EM> The only
+useful thing to do with that value is to test for it.  Our next sample
+program reads an entire file and prints it to the screen:
+
+<P><PRE>(define (<A NAME="g18"></A>print-file name)
+  (let ((port (open-input-file name)))
+    (print-file-helper port)
+    (close-input-port port)
+    'done))
+
+(define (print-file-helper port)             ;; first version
+  (let ((stuff (read-line port)))
+    (if (<A NAME="g19"></A>eof-object? stuff)
+	'done
+	(begin (show-line stuff)
+	       (print-file-helper port)))))
+
+&gt; (print-file &quot;songs&quot;)
+ALL MY LOVING
+TICKET TO RIDE
+MARTHA MY DEAR
+DONE
+</PRE>
+
+<P>Did you notice that each recursive call in <CODE>print-file-helper</CODE> has
+exactly the same argument as the one before?  How does the problem get
+smaller?  (Up to now, recursive calls have involved something like the <CODE>butfirst</CODE> of an old argument, or one less than an old number.)  When we're
+reading a file, the sense in which the problem gets smaller at each
+invocation is that we're getting closer to the end of the file.  You don't
+<CODE>butfirst</CODE> the port; reading it makes the unread portion of the file
+smaller as a side effect.
+
+<P><H2>Transforming the Lines of a File</H2>
+
+<P>Often we want to transform a file one line at a time.  That is, we want to
+copy lines from an input file to an output file, but instead of copying the
+lines exactly, we want each output line to be a <EM>function</EM> of the
+corresponding input line.  Here are some examples: We have a file full of
+text and we want to <EM>justify</EM> the output so that every line is exactly
+the same length, as in a book.  We have a file of students' names and
+grades, and we want a summary with the students' total and average scores.
+We have a file with people's first and last names, and we want to rearrange
+them to be last-name-first.
+
+<P>We'll write a procedure <A NAME="g20"></A><CODE>file-map</CODE>, analogous to <CODE>map</CODE> but for files.
+It will take three arguments:  The first will be a procedure whose domain and
+range are sentences; the second will be the name of the input file; the
+third will be the name of the output file.
+
+<P>Of course, this isn't exactly like the way <CODE>map</CODE> works&mdash;if it were
+exactly analogous, it would take only two arguments, the procedure and the
+<EM>contents</EM> of a file.  But one of the important features of files is
+that they let us handle amounts of information that are too big to fit all
+at once in the computer's memory.  Another feature is that once we write a
+file, it's there permanently, until we erase it.  So instead of having a
+<CODE>file-map</CODE> <EM>function</EM> that returns the contents of the new file,
+we have a procedure that writes its result to the disk.
+
+<P>
+<PRE>(define (<A NAME="g21"></A>file-map fn inname outname)
+  (let ((inport (open-input-file inname))
+	(outport (open-output-file outname)))
+    (file-map-helper fn inport outport)
+    (close-input-port inport)
+    (close-output-port outport)
+    'done))
+
+(define (<A NAME="g22"></A>file-map-helper fn inport outport)
+  (let ((line (read-line inport)))
+    (if (eof-object? line)
+	'done
+	(begin (show-line (fn line) outport)
+	       (file-map-helper fn inport outport)))))
+</PRE>
+
+<P>Compare this program with the earlier <CODE>print-file</CODE> example.  The two are
+almost identical.  One difference is that now the output goes to a file instead
+of to the screen; the other is that we apply the function <CODE>fn</CODE> to each
+line before doing the output.  But that small change vastly increases the
+generality of our program.  We've performed our usual trick of generalizing a
+<A NAME="g23"></A>
+pattern by adding a procedure argument, and instead of a program that
+carries out one specific task (printing the contents of a file), we have a
+tool that can be used to create many programs.
+
+<P>We'll start with an easy example: putting the last name first in a file
+full of names.  That is, if we start with an input file named <CODE>dddbmt</CODE>
+that contains
+
+<P><PRE>David Harmon
+Trevor Davies
+John Dymond
+Michael Wilson
+Ian Amey
+</PRE>
+
+<P>we want the output file to contain
+
+<P><PRE>Harmon, David
+Davies, Trevor
+Dymond, John
+Wilson, Michael
+Amey, Ian
+</PRE>
+
+<P>Since we are using <CODE>file-map</CODE> to handle our progress through the file,
+all we have to write is a procedure that takes a sentence (one name) as its
+argument and returns the same name but with the last word moved to the front
+and with a comma added:
+<PRE>(define (<A NAME="g24"></A>lastfirst name)
+  (se (word (last name) &quot;,&quot;) (bl name)))
+</PRE>
+
+<P>We use <CODE>butlast</CODE> rather than <CODE>first</CODE> in case someone in
+the file has a middle name.
+
+<P>To use this procedure we call <CODE>file-map</CODE> like this:
+
+<P><PRE>&gt; (file-map lastfirst &quot;dddbmt&quot; &quot;dddbmt-reversed&quot;)
+DONE
+</PRE>
+
+<P> Although you don't see the results on the screen, you can 
+
+<P><PRE>&gt; (print-file &quot;dddbmt-reversed&quot;)
+</PRE>
+
+<P>to see that we got the results we wanted.
+
+<P>Our next example is averaging grades.  Suppose the file <CODE>grades</CODE>
+contains this text:
+
+<P><PRE>John 88 92 100 75 95
+Paul 90 91 85 80 91
+George 85 87 90 72 96
+Ringo 95 84 88 87 87
+</PRE>
+
+<P>The output we want is:
+
+<P><PRE>John total: 450 average: 90
+Paul total: 437 average: 87.4
+George total: 430 average: 86
+Ringo total: 441 average: 88.2
+</PRE>
+
+<P>Here's the program:
+
+<P><PRE>(define (<A NAME="g25"></A>process-grades line)
+  (se (first line)
+      &quot;total:"
+      (accumulate + (bf line))
+      &quot;average:"
+      (/ (accumulate + (bf line))
+	 (count (bf line)))))
+
+&gt; (file-map process-grades &quot;grades&quot; &quot;results&quot;)
+</PRE>
+
+<P>As before, you can
+
+<P><PRE>&gt; (print-file &quot;results&quot;)
+</PRE>
+
+<P>to see that we got the results we wanted.
+
+<P> 
+<H2>Justifying Text</H2>
+
+<P>Many word-processing programs <EM>justify</EM> text; that is, they insert
+extra space between words so that every line reaches exactly to the right
+margin.  We can do that using <CODE>file-map</CODE>.
+
+<P>Let's suppose we have a file <CODE>r5rs</CODE>, written in some text editor, that
+looks like this:
+
+<P><PRE>Programming languages should be designed not by
+piling feature on top of feature, but by
+removing the weaknesses and restrictions that
+make additional features appear necessary.
+Scheme demonstrates that a very small number of
+rules for forming expressions, with no
+restrictions on how they are composed, suffice
+to form a practical and efficient programming
+language that is flexible enough to support most
+of the major programming paradigms in use today.
+</PRE>
+
+<P>(This is the first paragraph of the <EM>Revised<SUP><SMALL>5</SMALL></SUP> Report on
+the Algorithmic Language Scheme,</EM> edited by <A NAME="g26"></A>William Clinger
+and <A NAME="g27"></A>Jonathan Rees.)
+
+<P>Here is what the result should be if we justify our <CODE>r5rs</CODE> text:
+
+<P><PRE>Programming languages should be  designed  not  by
+piling  feature  on  top  of   feature,   but   by
+removing  the  weaknesses  and  restrictions  that
+make   additional   features   appear   necessary.
+Scheme demonstrates that a very  small  number  of
+rules   for   forming   expressions,    with    no
+restrictions on how  they  are  composed,  suffice
+to form  a  practical  and  efficient  programming
+language that is flexible enough to  support  most
+of the major programming paradigms in  use  today.
+</PRE>
+
+<P>The tricky part is that ordinarily we don't control the spaces that appear
+when a sentence is printed.  We just make sure the words are right, and we
+get one space between words automatically.  The solution used in this
+program is that each line of the output file is constructed as a single long
+word, including space characters that we place explicitly within it.  (Since
+<CODE>show-line</CODE> requires a sentence as its argument, our procedure will
+actually return a one-word sentence.  In the following program, <CODE>pad</CODE>
+constructs the word, and <CODE>justify</CODE> makes a one-word sentence containing
+it.)
+
+<P>This program, although short, is much harder to understand than most of
+our short examples.  There is no big new idea involved; instead, there are a
+number of unexciting but necessary details.  How many spaces between words?
+Do some words get more space than others?  The program structure is messy
+because the problem itself is messy.  Although it will be hard to read and
+understand, this program is a more realistic example of input/output
+programming than the cleanly structured examples we've shown until now.
+
+<P><CODE>Justify</CODE> takes two arguments, the line of text (a sentence) and a
+number indicating the desired width (how many characters).  Here's the
+algorithm:  First the program computes the total number of characters the
+sentence would take up without adding extras.  That's the job of <CODE>char-count</CODE>, which adds up the lengths of all the words, and adds to that
+the <EM>n</EM>&minus;1 spaces between words.  <CODE>Extra-spaces</CODE> subtracts that length
+from the desired line width to get the number of extra spaces we need.
+
+<P>The hard part of the job is done by <CODE>pad</CODE>.  It's invoked with three
+arguments: the part of the line not yet processed, the number of
+opportunities there are to insert extra spaces in that part of the line
+(that is, the number of words minus one), and the number of extra spaces that
+the program still needs to insert.  The number of extra spaces to insert
+<EM>this time</EM> is the integer quotient of the number <CODE>pad</CODE> wants to
+insert and the number of chances it'll have.  That is, if there are five
+words on the line, there are four places where <CODE>pad</CODE> can insert extra
+space.  If it needs to insert nine spaces altogether, then it should insert
+9/4 or two spaces at the first opportunity.  (Are you worried about the
+remainder?  It will turn out that <CODE>pad</CODE> doesn't lose any spaces because
+it takes the quotient over again for each word break.  The base case is that
+the number of remaining word breaks (the divisor) is one, so there will be
+no remainder, and all the leftover extra spaces will be inserted at the last
+word break.)
+
+<P><PRE>(define (<A NAME="g28"></A>justify line width)
+  (if (&lt; (count line) 2)
+      line
+      (se (pad line
+	       (- (count line) 1)
+	       (extra-spaces width (char-count line))))))
+
+(define (<A NAME="g29"></A>char-count line)
+  (+ (accumulate + (every count line))      ; letters within words
+     (- (count line) 1)))                   ; plus spaces between words
+
+(define (<A NAME="g30"></A>extra-spaces width chars)
+  (if (&gt; chars width)
+      0                                     ; none if already too wide
+      (- width chars)))
+
+(define (<A NAME="g31"></A>pad line chances needed)
+  (if (= chances 0)                         ; only one word in line
+      (first line)
+      (let ((extra (quotient needed chances)))
+	(word (first line)
+	      (spaces (+ extra 1))
+	      (pad (bf line) (- chances 1) (- needed extra))))))
+
+(define (<A NAME="g32"></A>spaces n)
+  (if (= n 0)
+      &quot;"
+      (word &quot; &quot; (spaces (- n 1)))))
+</PRE>
+
+<P>Because <CODE>justify</CODE> takes two arguments, we have to decide what line width
+we want to give it.  Here's how to make each line take 50 characters:
+
+<P><PRE>&gt; (file-map (lambda (sent) (justify sent 50)) &quot;r5rs&quot; &quot;r5rs-just&quot;)
+</PRE>
+
+<P><H2>Preserving Spacing of Text from Files</H2>
+
+<P>If we try to print the file <CODE>r5rs-just</CODE> from the previous section using
+<CODE>print-file</CODE>, it'll look exactly like <CODE>r5rs</CODE>.  That's because <CODE>read-line</CODE> doesn't preserve consecutive spaces in the lines that it reads.
+<CODE>Read-line</CODE> cares only where each word (consisting of non-space
+characters) begins and ends; it pays no attention to how many spaces come
+between any two words.  The lines
+
+<P><PRE>All     My          Loving
+</PRE>
+
+<P>and
+
+<P><PRE>All My Loving
+</PRE>
+
+<P>are the same, as far as <CODE>read-line</CODE> tells you.
+
+<P>For situations in which we do care about spacing, we have another way to
+read a line from a file.  The procedure <A NAME="g33"></A><CODE>read-string</CODE> reads all of the
+characters on a line, returning a single word that contains all of them,
+spaces included:<A NAME="text2" HREF="files#ft2">[2]</A>
+
+<P>
+<PRE>&gt; (define inport (open-input-file &quot;r5rs-just&quot;))
+
+&gt; (read-string inport)
+&quot;Programming languages should be  designed  not  by"
+
+&gt; (read-string inport)
+&quot;piling  feature  on  top  of   feature,   but   by"
+
+&gt; (close-input-port inport)
+</PRE>
+
+<P>
+<P>We can use <CODE>read-string</CODE> to rewrite <CODE>print-file</CODE> so that it makes
+an exact copy of the input file:
+
+<P><PRE>(define (<A NAME="g34"></A>print-file-helper port)
+  (let ((stuff (read-string port)))
+    (if (eof-object? stuff)
+	'done
+	(begin (show stuff)
+	       (print-file-helper port)))))
+</PRE>
+
+<P>(We only had to change the helper procedure.)
+
+<P> 
+<H2>Merging Two Files</H2>
+
+<P>Suppose you have two files of people's names.  Each file has been sorted
+in alphabetical order.  You want to combine them to form a single file,
+still in order.  (If this sounds unrealistic, it isn't.  Programs that sort
+very large amounts of information can't always fit it all in memory at
+once, so they read in as much as fits, sort it, and write a file.  Then
+they read and sort another chunk.  At the end of this process, the program
+is left with several sorted partial files, and it has to merge those
+files to get the overall result.)
+
+<P>The algorithm for merging files is exactly the same as the one we used for
+merging sentences in the <CODE>mergesort</CODE> program of Chapter 15.  The
+only difference is that the items to be sorted come from reading ports
+instead of from <CODE>first</CODE>ing a sentence.
+
+<P><PRE>(define (<A NAME="g35"></A>filemerge file1 file2 outfile)
+  (let ((p1 (open-input-file file1))
+	(p2 (open-input-file file2))
+	(outp (open-output-file outfile)))
+    (filemerge-helper p1 p2 outp (read-string p1) (read-string p2))
+    (close-output-port outp)
+    (close-input-port p1)
+    (close-input-port p2)
+    'done))
+
+(define (<A NAME="g36"></A>filemerge-helper p1 p2 outp line1 line2)
+  (cond ((eof-object? line1) (merge-copy line2 p2 outp))
+	((eof-object? line2) (merge-copy line1 p1 outp))
+	((before? line1 line2)
+	 (show line1 outp)
+	 (filemerge-helper p1 p2 outp (read-string p1) line2))
+	(else (show line2 outp)
+	      (filemerge-helper p1 p2 outp line1 (read-string p2)))))
+
+(define (<A NAME="g37"></A>merge-copy line inp outp)
+  (if (eof-object? line)
+      #f
+      (begin (show line outp)
+	     (merge-copy (read-string inp) inp outp))))
+</PRE>
+
+<P>You might think, comparing <CODE>filemerge-helper</CODE> with such earlier examples
+as <CODE>print-file-helper</CODE> and <CODE>file-map-helper</CODE>, that it would make
+more sense for <CODE>filemerge-helper</CODE> to take just the three ports as
+arguments and work like this:
+
+<P><PRE>(define (filemerge-helper p1 p2 outp)        ;; wrong
+  (let ((line1 (read-string p1))
+	(line2 (read-string p2)))
+    (cond ((eof-object? line1) (merge-copy p2 outp))
+	  ((eof-object? line2) (merge-copy p1 outp))
+	  ((before? line1 line2)
+	   (show line1 outp)
+	   (filemerge-helper p1 p2 outp))
+	  (else (show line2 outp)
+		(filemerge-helper p1 p2 outp)))))
+</PRE>
+
+<P>Unfortunately, this won't work.  Suppose that the first line of <CODE>file2</CODE>
+comes before the first line of <CODE>file1</CODE>.  This program correctly writes
+the first line of <CODE>file2</CODE> to the output file, as we expect.  But what
+about the first line of <CODE>file1</CODE>?  Since we called <CODE>read-string</CODE> on
+<CODE>file1</CODE>, we've &quot;gobbled&quot;<A NAME="text3" HREF="files#ft3">[3]</A> that line, but we're not yet ready to write it to the output.
+
+<P>In each invocation of <CODE>filemerge-helper</CODE>, only one line is written to
+the output file, so unless we want to lose information, we'd better read
+only one line.  This means that we can't call <CODE>read-string</CODE> twice on each
+recursive call.  One of the lines has to be handed down from one invocation
+to the next.  (That is, it has to be an argument to the recursive call.)
+Since we don't know in advance <EM>which</EM> line to keep, the easiest
+solution is to hand down both lines.
+
+<P>Therefore, <CODE>filemerge-helper</CODE> also takes as arguments the first line of
+each file that hasn't yet been written to the output.  When we first call
+<CODE>filemerge-helper</CODE> from <CODE>filemerge</CODE>, we read the first line of each
+file to provide the initial values of these arguments.  Then, on each
+recursive call, <CODE>filemerge-helper</CODE> calls <CODE>read-string</CODE> only once.
+
+<P><H2>Writing Files for Scheme to Read</H2>
+
+<P>You may be thinking that the three file-reading procedures we've shown, <CODE>read</CODE>, <CODE>read-line</CODE>, and <CODE>read-string</CODE>, have been getting better and
+better.  <CODE>Read</CODE> ignores case and forces you to have parentheses in your
+file.  <CODE>Read-line</CODE> fixes those problems, but it loses spacing information.
+<CODE>Read-string</CODE> can read anything and always gets it right.
+
+<P>But there's a cost to the generality of <CODE>read-string</CODE>; it can read any
+file, but it loses <EM>structure</EM> information.  For example, when we
+processed a file of people's names with <CODE>file-map</CODE>, we used this
+function:
+
+<P><PRE>(define (lastfirst name)
+  (se (word (last name) &quot;,&quot;) (bl name)))
+</PRE>
+
+<P>It's easy to break a name into its components if you have the name
+in the form of a sentence, with the words separated already.  But if we had
+read each line with <CODE>read-string</CODE>, <CODE>last</CODE> of a line would have been
+the last letter, not the last name.
+
+<P>The <CODE>lastfirst</CODE> example illustrates why you might want to use <CODE>read-line</CODE> rather than <CODE>read-string</CODE>: <CODE>Read-line</CODE> &quot;understands&quot;
+spaces.  Here's an example in which the even more structured <CODE>read</CODE> is
+appropriate.  We have a file of Beatles songs and the albums on which they
+appear:
+
+<P><PRE>((love me do) (please please me))
+((do you want to know a secret?) (please please me))
+((think for yourself) (rubber soul))
+((your mother should know) (magical mystery tour))
+</PRE>
+
+<P>Each line of this file contains two pieces of information: a song
+title and an album title.  If each line contained only the words of the two
+titles, as in
+
+<P><PRE>love me do please please me
+</PRE>
+
+<P>how would we know where the song title stops and the album title
+starts?  The natural way to represent this grouping information is to use
+the mechanism Scheme provides for grouping, namely, list structure.
+
+<P>If we use <CODE>read-line</CODE> to read the file, we'll lose the list structure;
+it will return a sentence containing words like <CODE>&quot;((love&quot;</CODE>.  <CODE>Read</CODE>,
+however, will do what we want.
+
+<P>How did we create this file in the first place?  We just used one <CODE>show</CODE>
+per line of the file, like this:
+
+<P><PRE>&gt; (show '((love me do) (please please me)) port)
+</PRE>
+
+<P>But what about the movie soundtracks?  We're going to have to come to terms
+with the apostrophe in &quot;A Hard Day's Night.&quot;
+
+<P>The straightforward solution is to put <CODE>day's</CODE> in a string:
+
+<P><PRE>(show '((and i love her) (a hard &quot;day's&quot; night)) port)
+</PRE>
+
+<P>The corresponding line in the file will look like this:
+
+<P><PRE>((AND I LOVE HER) (A HARD day's NIGHT))
+</PRE>
+
+<P>This result is actually even worse than it looks, because when we
+try to <CODE>read</CODE> the line back, the <CODE>'s</CODE> will be expanded into <CODE>(quote s)</CODE> in most versions of Scheme.  Using a string made it possible for
+us to get an apostrophe into Scheme.  If the word <CODE>day's</CODE> were inside
+quotation marks in the file, then <CODE>read</CODE> would understand our intentions.
+
+<P>Why aren't there double quotes in the file?  All of the printing
+procedures we've seen so far assume that whatever you're printing is
+intended to be read by people.  Therefore, they try to minimize
+distracting notation such as double-quote marks.  But, as we've
+discovered, if you're writing a file to be read by Scheme, then you
+do want enough notation so that Scheme can tell what the original
+object was.
+
+<P><CODE>Write</CODE> is a printing procedure just like <CODE>display</CODE>, except that it
+<A NAME="spwrite"></A>
+includes quote marks around strings:<A NAME="text4" HREF="files#ft4">[4]</A>
+
+<P><PRE>&gt; (write '(a hard &quot;day's&quot; night))
+(A HARD &quot;day's&quot; NIGHT)
+</PRE>
+
+<P>Once we're using strings, and since we're not extracting individual words
+from the titles, we might as well represent each title as one string:
+
+<P><PRE>&gt; (write '(&quot;And I Love Her&quot; &quot;A Hard Day's Night&quot;) port)
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>One pitfall crucial to avoid when using files is that if there is an
+error in your program, it might blow up and return you to the Scheme prompt
+without closing the open files.  If you fix the program and try to run it
+again, you may get a message like &quot;file busy&quot; because the operating system
+of your computer may not allow you to open the same file on two ports at
+once.  Even worse, if you exit from Scheme without closing all your ports,
+on some computers you may find that you have unreadable files thereafter.
+
+<P>To help cope with this problem, we've provided a procedure <CODE><A NAME="g39"></A><CODE>close-all-ports</CODE></CODE> that can be invoked to close every port that you've
+opened since starting Scheme.  This procedure works only in our modified
+Scheme, but it can help you out of trouble while you're learning.
+
+<P>Be sure you don't open or close a file within a recursive procedure,
+if you intend to do it only once.  That's why most of the programs in
+this chapter have the structure of a procedure that opens files, calls a
+recursive helper, and then closes the files.
+
+<P>As we explained in the <CODE>filemerge</CODE> example, you can't read the same
+line twice.  Be sure your program remembers each line in a variable as long
+as it's needed.
+
+<P><H2>Exercises</H2>
+
+<P><B>22.1</B>&nbsp;&nbsp;Write a <CODE><A NAME="g40"></A>concatenate</CODE> procedure that takes two arguments: a list
+of names of input files, and one name for an output file.  The procedure
+should copy all of the input files, in order, into the output file.
+
+
+<P>
+<B>22.2</B>&nbsp;&nbsp;Write a procedure to count the number of lines in a file.  It should
+take the filename as argument and return the number.
+
+
+<P>
+<B>22.3</B>&nbsp;&nbsp;Write a procedure to count the number of words in a file.  It should
+take the filename as argument and return the number.
+
+
+<P>
+<B>22.4</B>&nbsp;&nbsp;Write a procedure to count the number of characters in a file, including
+space characters.  It should take the filename as argument and return the
+number.
+
+
+<P>
+<B>22.5</B>&nbsp;&nbsp;Write a procedure that copies an input file to an output file but
+eliminates multiple consecutive copies of the same line.  That is, if
+the input file contains the lines
+
+<P><PRE>John Lennon
+Paul McCartney
+Paul McCartney
+George Harrison
+
+
+Paul McCartney
+Ringo Starr
+</PRE>
+
+<P>then the output file should contain
+
+<P><PRE>John Lennon
+Paul McCartney
+George Harrison
+
+Paul McCartney
+Ringo Starr
+</PRE>
+
+<P>
+<B>22.6</B>&nbsp;&nbsp;Write a <CODE><A NAME="g41"></A>lookup</CODE> procedure that takes as arguments a filename and
+a word.  The procedure should print (on the screen, not into another file)
+only those lines from the input file that include the chosen word.
+
+
+<P>
+<B>22.7</B>&nbsp;&nbsp;Write a <CODE><A NAME="g42"></A>page</CODE> procedure that takes a filename as argument and
+prints the file a screenful at a time.  Assume that a screen can fit 24
+lines; your procedure should print 23 lines of the file and then a prompt
+message, and then wait for the user to enter a (probably empty) line.  It
+should then print the most recent line from the file again (so that the user
+will see some overlap between screenfuls) and 22 more lines, and so on until
+the file ends.
+
+
+<P>
+<B>22.8</B>&nbsp;&nbsp;A common operation in a database program is to <EM>join</EM> two
+databases, that is, to create a new database combining the information from the
+two given ones.  There has to be some piece of information in common between
+the two databases.  For example, suppose we have a class roster database in
+which each record includes a student's name, student ID number, and computer
+account name, like this:
+<A NAME="join"></A>
+
+<P><PRE>((john alec entwistle) 04397 john)
+((keith moon) 09382 kmoon)
+((peter townshend) 10428 pete)
+((roger daltrey) 01025 roger)
+</PRE>
+
+<P>We also have a grade database in which each student's grades
+are stored according to computer account name:
+
+<P><PRE>(john 87 90 76 68 95)
+(kmoon 80 88 95 77 89)
+(pete 100 92 80 65 72)
+(roger 85 96 83 62 74)
+</PRE>
+
+<P>We want to create a combined database like this:
+
+<P><PRE>((john alec entwistle) 04397 john 87 90 76 68 95)
+((keith moon) 09382 kmoon 80 88 95 77 89)
+((peter townshend) 10428 pete 100 92 80 65 72)
+((roger daltrey) 01025 roger 85 96 83 62 74)
+</PRE>
+
+<P>in which the information from the roster and grade databases has
+been combined for each account name.
+
+<P>Write a program <CODE><A NAME="g43"></A>join</CODE> that takes five arguments: two input
+filenames, two numbers indicating the position of the item within each
+record that should overlap between the files, and an output filename.  For
+our example, we'd say
+
+<P><PRE>&gt; (join &quot;class-roster&quot; &quot;grades&quot; 3 1 &quot;combined-file&quot;)
+</PRE>
+
+<P>In our example, both files are in alphabetical order of computer account
+name, the account name is a word, and the same account name never appears
+more than once in each file.  In general, you may assume that these
+conditions hold for the item that the two files have in common.  Your
+program should <EM>not</EM> assume that every item in one file also appears
+in the other.  A line should be written in the output file only for the
+items that do appear in both files.  
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="files#text1">[1]</A> Another difference, not
+apparent in this example, is that <CODE>show</CODE> and <CODE>read</CODE> can handle
+structured lists.  <CODE>Show-line</CODE> can print a structured list, leaving off
+only the outermost parentheses, but <CODE>read-line</CODE> will treat any
+parentheses in the file as ordinary characters; it always returns a
+sentence.<P>
+<A NAME="ft2" HREF="files#text2">[2]</A> Like all the input and output primitives, <CODE>read-string</CODE> can be invoked with or without a port argument.<P>
+<A NAME="ft3" HREF="files#text3">[3]</A> Computer programmers really talk
+this way.<P>
+<A NAME="ft4" HREF="files#text4">[4]</A> There are other kinds of data
+that <A NAME="g38"></A><CODE>write</CODE> prints differently from <CODE>display</CODE>, but we don't
+use them in
+this book.  The general rule is that <CODE>display</CODE> formats the output for
+human readers, while <CODE>write</CODE> ensures that Scheme can reread the
+information unambiguously.  <CODE>Show</CODE> and <CODE>show-line</CODE> are extensions
+that we wrote using <CODE>display</CODE>.  We could have written <CODE>show-in-write-format</CODE>,
+for example, but happened not to need it.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch21/functions-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch23/vectors.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch22/files.html b/js/games/nluqo.github.io/~bh/ssch22/files.html
new file mode 100644
index 0000000..8e85ab1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch22/files.html
@@ -0,0 +1,875 @@
+<P>
+
+<P><A NAME="cabinets"></A>
+<P><CENTER><IMG SRC="../ss-pics/files.jpg" ALT="figure: files"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 22: Files</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 22</H2>
+<H1>Files</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch22.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch21/functions-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch23/vectors.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We learned in Chapter 20 how to read from the keyboard and write to the
+screen.  The same procedures (<A NAME="g1"></A><CODE>read</CODE>, <CODE><A NAME="g2"></A><CODE>read-line</CODE></CODE>,
+<A NAME="g3"></A><CODE>display</CODE>, <A NAME="g4"></A><CODE>show</CODE>, <CODE><A NAME="g5"></A><CODE>show-line</CODE></CODE>, and
+<A NAME="g6"></A><CODE>newline</CODE>) can also be used to read and write <A NAME="g7"></A><A NAME="g8"></A>data files on
+the disk.
+
+<P><H2>Ports</H2>
+
+<P>Imagine a complicated program that reads a little bit of data at a time from
+a lot of different files.  For example, soon we will write a program to
+merge two files the way we merged two sentences in <CODE>mergesort</CODE> in Chapter
+15.  In order to make this work, each invocation of <CODE>read</CODE> must
+specify which file to read from this time.  Similarly, we might want to
+direct output among several files.
+
+<P>Each of the input/output procedures can take an extra argument to specify a
+file:
+
+<P><PRE>(show '(across the universe) file1)
+(show-line '(penny lane) file2)
+(read file3)
+</PRE>
+
+<P>What are <CODE>file1</CODE> and so on?  You might think that the natural
+thing would be for them to be words, that is, the names of files.
+
+<P>It happens not to work that way.  Instead, before you can use a file, you
+have to <EM>open</EM> it.  If you want to read a file, the system has to
+check that the file exists.  If you want to write a file, the system has to
+create a new, empty file.  The Scheme procedures that open a file return a
+<EM>port,</EM> which is what Scheme uses to remember the file you opened.
+Ports are useful only as arguments to the input/output procedures.  Here's
+an example:
+
+<P><PRE>&gt; (let ((port (<A NAME="g9"></A>open-output-file &quot;songs&quot;)))
+    (<A NAME="g10"></A>show '(all my loving) port)
+    (show '(ticket to ride) port)
+    (show '(martha my dear) port)
+    (<A NAME="g11"></A>close-output-port port))
+</PRE>
+
+<P>(<CODE>Close-output-port</CODE>, like <CODE>define</CODE>, has an unspecified
+return value that we're not going to include in the examples.)
+
+<P>We've created a file named <CODE>songs</CODE> and put three expressions, each on
+its own line, in that file.  Notice that nothing appeared on the screen when
+we called <CODE>show</CODE>.  Because we used a port argument to <CODE>show</CODE>, the
+output went into the file.  Here's what's in the file:
+
+<P><PRE>(ALL MY LOVING)
+(TICKET TO RIDE)
+(MARTHA MY DEAR)
+</PRE>
+
+<P>The example illustrates two more details about using files that we haven't
+mentioned before: First, the name of a file must be given in double-quote
+marks.  Second, when you're finished using a file, you have to <EM>close</EM>
+the port associated with it.  (This is very important.  On some systems,
+if you forget to close the port, the file disappears.)
+
+<P>The file is now permanent.  If we were to exit from Scheme, we could read
+the file in a word processor or any other program.  But let's read it using
+Scheme:
+
+<P><PRE>(define in (<A NAME="g12"></A>open-input-file &quot;songs&quot;))
+
+&gt; (read in)
+(ALL MY LOVING)
+
+&gt; (read in)
+(TICKET TO RIDE)
+
+&gt; (read in)
+(MARTHA MY DEAR)
+
+&gt; (<A NAME="g13"></A>close-input-port in)
+</PRE>
+
+<P>(In this illustration, we've used a global variable to hold the
+port because we wanted to show the results of reading the file step by
+step.  In a real program, we'd generally use a <CODE>let</CODE> structure like the
+one we used to write the file.  Now that we've closed the port, the variable
+<CODE>in</CODE> contains a port that can no longer be used.)
+
+<P><H2>Writing Files for People to Read</H2>
+
+<P>
+A file full of sentences in parentheses is a natural representation for
+information that will be used by a Scheme program, but it may seem awkward
+if the file will be read by human beings.  We could use <CODE>show-line</CODE>
+instead of <CODE>show</CODE> to create a file, still with one song title per line,
+but without the parentheses:
+
+<P><PRE>&gt; (let ((port (open-output-file &quot;songs2&quot;)))
+    (show-line '(all my loving) port)
+    (show-line '(ticket to ride) port)
+    (show-line '(martha my dear) port)
+    (close-output-port port))
+</PRE>
+
+<P>The file <CODE>songs2</CODE> will contain
+
+<P><PRE>ALL MY LOVING
+TICKET TO RIDE
+MARTHA MY DEAR
+</PRE>
+
+<P>What should we do if we want to read this file back into Scheme?  We must
+read the file a line at a time, with <CODE>read-line</CODE>.  In effect, <CODE>read-line</CODE> treats the breaks between lines as if they were parentheses:
+
+<P><PRE>(define in (open-input-file &quot;songs2&quot;))
+
+&gt; (read-line in)
+(ALL MY LOVING)
+
+&gt; (close-input-port in)
+</PRE>
+
+<P>(Notice that we don't have to read the entire file before closing
+the port.  If we open the file again later, we start over again from the
+beginning.)
+
+<P> 
+As far as Scheme is concerned, the result of writing the file with <CODE>show-line</CODE> and reading it with <CODE>read-line</CODE> was the same as that of
+writing it with <CODE>show</CODE> and reading it with <CODE>read</CODE>.  The difference
+is that without parentheses the file itself is more &quot;user-friendly&quot; for
+someone who reads it outside of Scheme.<A NAME="text1" HREF="files.html#ft1">[1]</A>
+
+<P><H2>Using a File as a Database</H2>
+
+<P>It's not very interesting merely to read the file line by line.  Instead,
+let's use it as a very small database in which we can look up songs by
+number.  (For only three songs, it would be more realistic and more
+convenient to keep them in a list and look them up with <CODE>list-ref</CODE>.
+Pretend that this file has 3000 songs, too many for you to want to keep
+them all at once in your computer's memory.)
+
+<P><PRE>(define (<A NAME="g14"></A>get-song n)
+  (let ((port (open-input-file &quot;songs2&quot;)))
+    (skip-songs (- n 1) port)
+    (let ((answer (read-line port)))
+      (close-input-port port)
+      answer)))
+
+(define (<A NAME="g15"></A>skip-songs n port)
+  (if (= n 0)
+      'done
+      (begin (read-line port)
+	     (skip-songs (- n 1) port))))
+
+&gt; (get-song 2)      
+(TICKET TO RIDE)
+</PRE>
+
+<P>When we invoke <CODE>read-line</CODE> in <CODE>skip-songs</CODE>, we pay no
+attention to the value it returns.  Remember that the values of all but the
+last expression in a sequence are discarded.  <CODE>Read</CODE> and <CODE>read-line</CODE>
+are the first procedures we've seen that have both a useful return value and
+a useful side effect&mdash;moving forward in the file.
+
+<P><CODE>Skip-songs</CODE> returns the word <CODE>done</CODE> when it's finished.  We don't
+do anything with that return value, and there's no particular reason why we
+chose that word.  But every Scheme procedure has to return <EM>something,</EM>
+and this was as good as anything.
+
+<P>What if we asked for a song number greater than three?  In other words, what
+if we read beyond the end of the file?  In that case, <CODE>read</CODE> will return
+a special value called an <EM><A NAME="g16"></A><A NAME="g17"></A>end-of-file object.</EM> The only
+useful thing to do with that value is to test for it.  Our next sample
+program reads an entire file and prints it to the screen:
+
+<P><PRE>(define (<A NAME="g18"></A>print-file name)
+  (let ((port (open-input-file name)))
+    (print-file-helper port)
+    (close-input-port port)
+    'done))
+
+(define (print-file-helper port)             ;; first version
+  (let ((stuff (read-line port)))
+    (if (<A NAME="g19"></A>eof-object? stuff)
+	'done
+	(begin (show-line stuff)
+	       (print-file-helper port)))))
+
+&gt; (print-file &quot;songs&quot;)
+ALL MY LOVING
+TICKET TO RIDE
+MARTHA MY DEAR
+DONE
+</PRE>
+
+<P>Did you notice that each recursive call in <CODE>print-file-helper</CODE> has
+exactly the same argument as the one before?  How does the problem get
+smaller?  (Up to now, recursive calls have involved something like the <CODE>butfirst</CODE> of an old argument, or one less than an old number.)  When we're
+reading a file, the sense in which the problem gets smaller at each
+invocation is that we're getting closer to the end of the file.  You don't
+<CODE>butfirst</CODE> the port; reading it makes the unread portion of the file
+smaller as a side effect.
+
+<P><H2>Transforming the Lines of a File</H2>
+
+<P>Often we want to transform a file one line at a time.  That is, we want to
+copy lines from an input file to an output file, but instead of copying the
+lines exactly, we want each output line to be a <EM>function</EM> of the
+corresponding input line.  Here are some examples: We have a file full of
+text and we want to <EM>justify</EM> the output so that every line is exactly
+the same length, as in a book.  We have a file of students' names and
+grades, and we want a summary with the students' total and average scores.
+We have a file with people's first and last names, and we want to rearrange
+them to be last-name-first.
+
+<P>We'll write a procedure <A NAME="g20"></A><CODE>file-map</CODE>, analogous to <CODE>map</CODE> but for files.
+It will take three arguments:  The first will be a procedure whose domain and
+range are sentences; the second will be the name of the input file; the
+third will be the name of the output file.
+
+<P>Of course, this isn't exactly like the way <CODE>map</CODE> works&mdash;if it were
+exactly analogous, it would take only two arguments, the procedure and the
+<EM>contents</EM> of a file.  But one of the important features of files is
+that they let us handle amounts of information that are too big to fit all
+at once in the computer's memory.  Another feature is that once we write a
+file, it's there permanently, until we erase it.  So instead of having a
+<CODE>file-map</CODE> <EM>function</EM> that returns the contents of the new file,
+we have a procedure that writes its result to the disk.
+
+<P>
+<PRE>(define (<A NAME="g21"></A>file-map fn inname outname)
+  (let ((inport (open-input-file inname))
+	(outport (open-output-file outname)))
+    (file-map-helper fn inport outport)
+    (close-input-port inport)
+    (close-output-port outport)
+    'done))
+
+(define (<A NAME="g22"></A>file-map-helper fn inport outport)
+  (let ((line (read-line inport)))
+    (if (eof-object? line)
+	'done
+	(begin (show-line (fn line) outport)
+	       (file-map-helper fn inport outport)))))
+</PRE>
+
+<P>Compare this program with the earlier <CODE>print-file</CODE> example.  The two are
+almost identical.  One difference is that now the output goes to a file instead
+of to the screen; the other is that we apply the function <CODE>fn</CODE> to each
+line before doing the output.  But that small change vastly increases the
+generality of our program.  We've performed our usual trick of generalizing a
+<A NAME="g23"></A>
+pattern by adding a procedure argument, and instead of a program that
+carries out one specific task (printing the contents of a file), we have a
+tool that can be used to create many programs.
+
+<P>We'll start with an easy example: putting the last name first in a file
+full of names.  That is, if we start with an input file named <CODE>dddbmt</CODE>
+that contains
+
+<P><PRE>David Harmon
+Trevor Davies
+John Dymond
+Michael Wilson
+Ian Amey
+</PRE>
+
+<P>we want the output file to contain
+
+<P><PRE>Harmon, David
+Davies, Trevor
+Dymond, John
+Wilson, Michael
+Amey, Ian
+</PRE>
+
+<P>Since we are using <CODE>file-map</CODE> to handle our progress through the file,
+all we have to write is a procedure that takes a sentence (one name) as its
+argument and returns the same name but with the last word moved to the front
+and with a comma added:
+<PRE>(define (<A NAME="g24"></A>lastfirst name)
+  (se (word (last name) &quot;,&quot;) (bl name)))
+</PRE>
+
+<P>We use <CODE>butlast</CODE> rather than <CODE>first</CODE> in case someone in
+the file has a middle name.
+
+<P>To use this procedure we call <CODE>file-map</CODE> like this:
+
+<P><PRE>&gt; (file-map lastfirst &quot;dddbmt&quot; &quot;dddbmt-reversed&quot;)
+DONE
+</PRE>
+
+<P> Although you don't see the results on the screen, you can 
+
+<P><PRE>&gt; (print-file &quot;dddbmt-reversed&quot;)
+</PRE>
+
+<P>to see that we got the results we wanted.
+
+<P>Our next example is averaging grades.  Suppose the file <CODE>grades</CODE>
+contains this text:
+
+<P><PRE>John 88 92 100 75 95
+Paul 90 91 85 80 91
+George 85 87 90 72 96
+Ringo 95 84 88 87 87
+</PRE>
+
+<P>The output we want is:
+
+<P><PRE>John total: 450 average: 90
+Paul total: 437 average: 87.4
+George total: 430 average: 86
+Ringo total: 441 average: 88.2
+</PRE>
+
+<P>Here's the program:
+
+<P><PRE>(define (<A NAME="g25"></A>process-grades line)
+  (se (first line)
+      &quot;total:"
+      (accumulate + (bf line))
+      &quot;average:"
+      (/ (accumulate + (bf line))
+	 (count (bf line)))))
+
+&gt; (file-map process-grades &quot;grades&quot; &quot;results&quot;)
+</PRE>
+
+<P>As before, you can
+
+<P><PRE>&gt; (print-file &quot;results&quot;)
+</PRE>
+
+<P>to see that we got the results we wanted.
+
+<P> 
+<H2>Justifying Text</H2>
+
+<P>Many word-processing programs <EM>justify</EM> text; that is, they insert
+extra space between words so that every line reaches exactly to the right
+margin.  We can do that using <CODE>file-map</CODE>.
+
+<P>Let's suppose we have a file <CODE>r5rs</CODE>, written in some text editor, that
+looks like this:
+
+<P><PRE>Programming languages should be designed not by
+piling feature on top of feature, but by
+removing the weaknesses and restrictions that
+make additional features appear necessary.
+Scheme demonstrates that a very small number of
+rules for forming expressions, with no
+restrictions on how they are composed, suffice
+to form a practical and efficient programming
+language that is flexible enough to support most
+of the major programming paradigms in use today.
+</PRE>
+
+<P>(This is the first paragraph of the <EM>Revised<SUP><SMALL>5</SMALL></SUP> Report on
+the Algorithmic Language Scheme,</EM> edited by <A NAME="g26"></A>William Clinger
+and <A NAME="g27"></A>Jonathan Rees.)
+
+<P>Here is what the result should be if we justify our <CODE>r5rs</CODE> text:
+
+<P><PRE>Programming languages should be  designed  not  by
+piling  feature  on  top  of   feature,   but   by
+removing  the  weaknesses  and  restrictions  that
+make   additional   features   appear   necessary.
+Scheme demonstrates that a very  small  number  of
+rules   for   forming   expressions,    with    no
+restrictions on how  they  are  composed,  suffice
+to form  a  practical  and  efficient  programming
+language that is flexible enough to  support  most
+of the major programming paradigms in  use  today.
+</PRE>
+
+<P>The tricky part is that ordinarily we don't control the spaces that appear
+when a sentence is printed.  We just make sure the words are right, and we
+get one space between words automatically.  The solution used in this
+program is that each line of the output file is constructed as a single long
+word, including space characters that we place explicitly within it.  (Since
+<CODE>show-line</CODE> requires a sentence as its argument, our procedure will
+actually return a one-word sentence.  In the following program, <CODE>pad</CODE>
+constructs the word, and <CODE>justify</CODE> makes a one-word sentence containing
+it.)
+
+<P>This program, although short, is much harder to understand than most of
+our short examples.  There is no big new idea involved; instead, there are a
+number of unexciting but necessary details.  How many spaces between words?
+Do some words get more space than others?  The program structure is messy
+because the problem itself is messy.  Although it will be hard to read and
+understand, this program is a more realistic example of input/output
+programming than the cleanly structured examples we've shown until now.
+
+<P><CODE>Justify</CODE> takes two arguments, the line of text (a sentence) and a
+number indicating the desired width (how many characters).  Here's the
+algorithm:  First the program computes the total number of characters the
+sentence would take up without adding extras.  That's the job of <CODE>char-count</CODE>, which adds up the lengths of all the words, and adds to that
+the <EM>n</EM>&minus;1 spaces between words.  <CODE>Extra-spaces</CODE> subtracts that length
+from the desired line width to get the number of extra spaces we need.
+
+<P>The hard part of the job is done by <CODE>pad</CODE>.  It's invoked with three
+arguments: the part of the line not yet processed, the number of
+opportunities there are to insert extra spaces in that part of the line
+(that is, the number of words minus one), and the number of extra spaces that
+the program still needs to insert.  The number of extra spaces to insert
+<EM>this time</EM> is the integer quotient of the number <CODE>pad</CODE> wants to
+insert and the number of chances it'll have.  That is, if there are five
+words on the line, there are four places where <CODE>pad</CODE> can insert extra
+space.  If it needs to insert nine spaces altogether, then it should insert
+9/4 or two spaces at the first opportunity.  (Are you worried about the
+remainder?  It will turn out that <CODE>pad</CODE> doesn't lose any spaces because
+it takes the quotient over again for each word break.  The base case is that
+the number of remaining word breaks (the divisor) is one, so there will be
+no remainder, and all the leftover extra spaces will be inserted at the last
+word break.)
+
+<P><PRE>(define (<A NAME="g28"></A>justify line width)
+  (if (&lt; (count line) 2)
+      line
+      (se (pad line
+	       (- (count line) 1)
+	       (extra-spaces width (char-count line))))))
+
+(define (<A NAME="g29"></A>char-count line)
+  (+ (accumulate + (every count line))      ; letters within words
+     (- (count line) 1)))                   ; plus spaces between words
+
+(define (<A NAME="g30"></A>extra-spaces width chars)
+  (if (&gt; chars width)
+      0                                     ; none if already too wide
+      (- width chars)))
+
+(define (<A NAME="g31"></A>pad line chances needed)
+  (if (= chances 0)                         ; only one word in line
+      (first line)
+      (let ((extra (quotient needed chances)))
+	(word (first line)
+	      (spaces (+ extra 1))
+	      (pad (bf line) (- chances 1) (- needed extra))))))
+
+(define (<A NAME="g32"></A>spaces n)
+  (if (= n 0)
+      &quot;"
+      (word &quot; &quot; (spaces (- n 1)))))
+</PRE>
+
+<P>Because <CODE>justify</CODE> takes two arguments, we have to decide what line width
+we want to give it.  Here's how to make each line take 50 characters:
+
+<P><PRE>&gt; (file-map (lambda (sent) (justify sent 50)) &quot;r5rs&quot; &quot;r5rs-just&quot;)
+</PRE>
+
+<P><H2>Preserving Spacing of Text from Files</H2>
+
+<P>If we try to print the file <CODE>r5rs-just</CODE> from the previous section using
+<CODE>print-file</CODE>, it'll look exactly like <CODE>r5rs</CODE>.  That's because <CODE>read-line</CODE> doesn't preserve consecutive spaces in the lines that it reads.
+<CODE>Read-line</CODE> cares only where each word (consisting of non-space
+characters) begins and ends; it pays no attention to how many spaces come
+between any two words.  The lines
+
+<P><PRE>All     My          Loving
+</PRE>
+
+<P>and
+
+<P><PRE>All My Loving
+</PRE>
+
+<P>are the same, as far as <CODE>read-line</CODE> tells you.
+
+<P>For situations in which we do care about spacing, we have another way to
+read a line from a file.  The procedure <A NAME="g33"></A><CODE>read-string</CODE> reads all of the
+characters on a line, returning a single word that contains all of them,
+spaces included:<A NAME="text2" HREF="files.html#ft2">[2]</A>
+
+<P>
+<PRE>&gt; (define inport (open-input-file &quot;r5rs-just&quot;))
+
+&gt; (read-string inport)
+&quot;Programming languages should be  designed  not  by"
+
+&gt; (read-string inport)
+&quot;piling  feature  on  top  of   feature,   but   by"
+
+&gt; (close-input-port inport)
+</PRE>
+
+<P>
+<P>We can use <CODE>read-string</CODE> to rewrite <CODE>print-file</CODE> so that it makes
+an exact copy of the input file:
+
+<P><PRE>(define (<A NAME="g34"></A>print-file-helper port)
+  (let ((stuff (read-string port)))
+    (if (eof-object? stuff)
+	'done
+	(begin (show stuff)
+	       (print-file-helper port)))))
+</PRE>
+
+<P>(We only had to change the helper procedure.)
+
+<P> 
+<H2>Merging Two Files</H2>
+
+<P>Suppose you have two files of people's names.  Each file has been sorted
+in alphabetical order.  You want to combine them to form a single file,
+still in order.  (If this sounds unrealistic, it isn't.  Programs that sort
+very large amounts of information can't always fit it all in memory at
+once, so they read in as much as fits, sort it, and write a file.  Then
+they read and sort another chunk.  At the end of this process, the program
+is left with several sorted partial files, and it has to merge those
+files to get the overall result.)
+
+<P>The algorithm for merging files is exactly the same as the one we used for
+merging sentences in the <CODE>mergesort</CODE> program of Chapter 15.  The
+only difference is that the items to be sorted come from reading ports
+instead of from <CODE>first</CODE>ing a sentence.
+
+<P><PRE>(define (<A NAME="g35"></A>filemerge file1 file2 outfile)
+  (let ((p1 (open-input-file file1))
+	(p2 (open-input-file file2))
+	(outp (open-output-file outfile)))
+    (filemerge-helper p1 p2 outp (read-string p1) (read-string p2))
+    (close-output-port outp)
+    (close-input-port p1)
+    (close-input-port p2)
+    'done))
+
+(define (<A NAME="g36"></A>filemerge-helper p1 p2 outp line1 line2)
+  (cond ((eof-object? line1) (merge-copy line2 p2 outp))
+	((eof-object? line2) (merge-copy line1 p1 outp))
+	((before? line1 line2)
+	 (show line1 outp)
+	 (filemerge-helper p1 p2 outp (read-string p1) line2))
+	(else (show line2 outp)
+	      (filemerge-helper p1 p2 outp line1 (read-string p2)))))
+
+(define (<A NAME="g37"></A>merge-copy line inp outp)
+  (if (eof-object? line)
+      #f
+      (begin (show line outp)
+	     (merge-copy (read-string inp) inp outp))))
+</PRE>
+
+<P>You might think, comparing <CODE>filemerge-helper</CODE> with such earlier examples
+as <CODE>print-file-helper</CODE> and <CODE>file-map-helper</CODE>, that it would make
+more sense for <CODE>filemerge-helper</CODE> to take just the three ports as
+arguments and work like this:
+
+<P><PRE>(define (filemerge-helper p1 p2 outp)        ;; wrong
+  (let ((line1 (read-string p1))
+	(line2 (read-string p2)))
+    (cond ((eof-object? line1) (merge-copy p2 outp))
+	  ((eof-object? line2) (merge-copy p1 outp))
+	  ((before? line1 line2)
+	   (show line1 outp)
+	   (filemerge-helper p1 p2 outp))
+	  (else (show line2 outp)
+		(filemerge-helper p1 p2 outp)))))
+</PRE>
+
+<P>Unfortunately, this won't work.  Suppose that the first line of <CODE>file2</CODE>
+comes before the first line of <CODE>file1</CODE>.  This program correctly writes
+the first line of <CODE>file2</CODE> to the output file, as we expect.  But what
+about the first line of <CODE>file1</CODE>?  Since we called <CODE>read-string</CODE> on
+<CODE>file1</CODE>, we've &quot;gobbled&quot;<A NAME="text3" HREF="files.html#ft3">[3]</A> that line, but we're not yet ready to write it to the output.
+
+<P>In each invocation of <CODE>filemerge-helper</CODE>, only one line is written to
+the output file, so unless we want to lose information, we'd better read
+only one line.  This means that we can't call <CODE>read-string</CODE> twice on each
+recursive call.  One of the lines has to be handed down from one invocation
+to the next.  (That is, it has to be an argument to the recursive call.)
+Since we don't know in advance <EM>which</EM> line to keep, the easiest
+solution is to hand down both lines.
+
+<P>Therefore, <CODE>filemerge-helper</CODE> also takes as arguments the first line of
+each file that hasn't yet been written to the output.  When we first call
+<CODE>filemerge-helper</CODE> from <CODE>filemerge</CODE>, we read the first line of each
+file to provide the initial values of these arguments.  Then, on each
+recursive call, <CODE>filemerge-helper</CODE> calls <CODE>read-string</CODE> only once.
+
+<P><H2>Writing Files for Scheme to Read</H2>
+
+<P>You may be thinking that the three file-reading procedures we've shown, <CODE>read</CODE>, <CODE>read-line</CODE>, and <CODE>read-string</CODE>, have been getting better and
+better.  <CODE>Read</CODE> ignores case and forces you to have parentheses in your
+file.  <CODE>Read-line</CODE> fixes those problems, but it loses spacing information.
+<CODE>Read-string</CODE> can read anything and always gets it right.
+
+<P>But there's a cost to the generality of <CODE>read-string</CODE>; it can read any
+file, but it loses <EM>structure</EM> information.  For example, when we
+processed a file of people's names with <CODE>file-map</CODE>, we used this
+function:
+
+<P><PRE>(define (lastfirst name)
+  (se (word (last name) &quot;,&quot;) (bl name)))
+</PRE>
+
+<P>It's easy to break a name into its components if you have the name
+in the form of a sentence, with the words separated already.  But if we had
+read each line with <CODE>read-string</CODE>, <CODE>last</CODE> of a line would have been
+the last letter, not the last name.
+
+<P>The <CODE>lastfirst</CODE> example illustrates why you might want to use <CODE>read-line</CODE> rather than <CODE>read-string</CODE>: <CODE>Read-line</CODE> &quot;understands&quot;
+spaces.  Here's an example in which the even more structured <CODE>read</CODE> is
+appropriate.  We have a file of Beatles songs and the albums on which they
+appear:
+
+<P><PRE>((love me do) (please please me))
+((do you want to know a secret?) (please please me))
+((think for yourself) (rubber soul))
+((your mother should know) (magical mystery tour))
+</PRE>
+
+<P>Each line of this file contains two pieces of information: a song
+title and an album title.  If each line contained only the words of the two
+titles, as in
+
+<P><PRE>love me do please please me
+</PRE>
+
+<P>how would we know where the song title stops and the album title
+starts?  The natural way to represent this grouping information is to use
+the mechanism Scheme provides for grouping, namely, list structure.
+
+<P>If we use <CODE>read-line</CODE> to read the file, we'll lose the list structure;
+it will return a sentence containing words like <CODE>&quot;((love&quot;</CODE>.  <CODE>Read</CODE>,
+however, will do what we want.
+
+<P>How did we create this file in the first place?  We just used one <CODE>show</CODE>
+per line of the file, like this:
+
+<P><PRE>&gt; (show '((love me do) (please please me)) port)
+</PRE>
+
+<P>But what about the movie soundtracks?  We're going to have to come to terms
+with the apostrophe in &quot;A Hard Day's Night.&quot;
+
+<P>The straightforward solution is to put <CODE>day's</CODE> in a string:
+
+<P><PRE>(show '((and i love her) (a hard &quot;day's&quot; night)) port)
+</PRE>
+
+<P>The corresponding line in the file will look like this:
+
+<P><PRE>((AND I LOVE HER) (A HARD day's NIGHT))
+</PRE>
+
+<P>This result is actually even worse than it looks, because when we
+try to <CODE>read</CODE> the line back, the <CODE>'s</CODE> will be expanded into <CODE>(quote s)</CODE> in most versions of Scheme.  Using a string made it possible for
+us to get an apostrophe into Scheme.  If the word <CODE>day's</CODE> were inside
+quotation marks in the file, then <CODE>read</CODE> would understand our intentions.
+
+<P>Why aren't there double quotes in the file?  All of the printing
+procedures we've seen so far assume that whatever you're printing is
+intended to be read by people.  Therefore, they try to minimize
+distracting notation such as double-quote marks.  But, as we've
+discovered, if you're writing a file to be read by Scheme, then you
+do want enough notation so that Scheme can tell what the original
+object was.
+
+<P><CODE>Write</CODE> is a printing procedure just like <CODE>display</CODE>, except that it
+<A NAME="spwrite"></A>
+includes quote marks around strings:<A NAME="text4" HREF="files.html#ft4">[4]</A>
+
+<P><PRE>&gt; (write '(a hard &quot;day's&quot; night))
+(A HARD &quot;day's&quot; NIGHT)
+</PRE>
+
+<P>Once we're using strings, and since we're not extracting individual words
+from the titles, we might as well represent each title as one string:
+
+<P><PRE>&gt; (write '(&quot;And I Love Her&quot; &quot;A Hard Day's Night&quot;) port)
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>One pitfall crucial to avoid when using files is that if there is an
+error in your program, it might blow up and return you to the Scheme prompt
+without closing the open files.  If you fix the program and try to run it
+again, you may get a message like &quot;file busy&quot; because the operating system
+of your computer may not allow you to open the same file on two ports at
+once.  Even worse, if you exit from Scheme without closing all your ports,
+on some computers you may find that you have unreadable files thereafter.
+
+<P>To help cope with this problem, we've provided a procedure <CODE><A NAME="g39"></A><CODE>close-all-ports</CODE></CODE> that can be invoked to close every port that you've
+opened since starting Scheme.  This procedure works only in our modified
+Scheme, but it can help you out of trouble while you're learning.
+
+<P>Be sure you don't open or close a file within a recursive procedure,
+if you intend to do it only once.  That's why most of the programs in
+this chapter have the structure of a procedure that opens files, calls a
+recursive helper, and then closes the files.
+
+<P>As we explained in the <CODE>filemerge</CODE> example, you can't read the same
+line twice.  Be sure your program remembers each line in a variable as long
+as it's needed.
+
+<P><H2>Exercises</H2>
+
+<P><B>22.1</B>&nbsp;&nbsp;Write a <CODE><A NAME="g40"></A>concatenate</CODE> procedure that takes two arguments: a list
+of names of input files, and one name for an output file.  The procedure
+should copy all of the input files, in order, into the output file.
+
+
+<P>
+<B>22.2</B>&nbsp;&nbsp;Write a procedure to count the number of lines in a file.  It should
+take the filename as argument and return the number.
+
+
+<P>
+<B>22.3</B>&nbsp;&nbsp;Write a procedure to count the number of words in a file.  It should
+take the filename as argument and return the number.
+
+
+<P>
+<B>22.4</B>&nbsp;&nbsp;Write a procedure to count the number of characters in a file, including
+space characters.  It should take the filename as argument and return the
+number.
+
+
+<P>
+<B>22.5</B>&nbsp;&nbsp;Write a procedure that copies an input file to an output file but
+eliminates multiple consecutive copies of the same line.  That is, if
+the input file contains the lines
+
+<P><PRE>John Lennon
+Paul McCartney
+Paul McCartney
+George Harrison
+
+
+Paul McCartney
+Ringo Starr
+</PRE>
+
+<P>then the output file should contain
+
+<P><PRE>John Lennon
+Paul McCartney
+George Harrison
+
+Paul McCartney
+Ringo Starr
+</PRE>
+
+<P>
+<B>22.6</B>&nbsp;&nbsp;Write a <CODE><A NAME="g41"></A>lookup</CODE> procedure that takes as arguments a filename and
+a word.  The procedure should print (on the screen, not into another file)
+only those lines from the input file that include the chosen word.
+
+
+<P>
+<B>22.7</B>&nbsp;&nbsp;Write a <CODE><A NAME="g42"></A>page</CODE> procedure that takes a filename as argument and
+prints the file a screenful at a time.  Assume that a screen can fit 24
+lines; your procedure should print 23 lines of the file and then a prompt
+message, and then wait for the user to enter a (probably empty) line.  It
+should then print the most recent line from the file again (so that the user
+will see some overlap between screenfuls) and 22 more lines, and so on until
+the file ends.
+
+
+<P>
+<B>22.8</B>&nbsp;&nbsp;A common operation in a database program is to <EM>join</EM> two
+databases, that is, to create a new database combining the information from the
+two given ones.  There has to be some piece of information in common between
+the two databases.  For example, suppose we have a class roster database in
+which each record includes a student's name, student ID number, and computer
+account name, like this:
+<A NAME="join"></A>
+
+<P><PRE>((john alec entwistle) 04397 john)
+((keith moon) 09382 kmoon)
+((peter townshend) 10428 pete)
+((roger daltrey) 01025 roger)
+</PRE>
+
+<P>We also have a grade database in which each student's grades
+are stored according to computer account name:
+
+<P><PRE>(john 87 90 76 68 95)
+(kmoon 80 88 95 77 89)
+(pete 100 92 80 65 72)
+(roger 85 96 83 62 74)
+</PRE>
+
+<P>We want to create a combined database like this:
+
+<P><PRE>((john alec entwistle) 04397 john 87 90 76 68 95)
+((keith moon) 09382 kmoon 80 88 95 77 89)
+((peter townshend) 10428 pete 100 92 80 65 72)
+((roger daltrey) 01025 roger 85 96 83 62 74)
+</PRE>
+
+<P>in which the information from the roster and grade databases has
+been combined for each account name.
+
+<P>Write a program <CODE><A NAME="g43"></A>join</CODE> that takes five arguments: two input
+filenames, two numbers indicating the position of the item within each
+record that should overlap between the files, and an output filename.  For
+our example, we'd say
+
+<P><PRE>&gt; (join &quot;class-roster&quot; &quot;grades&quot; 3 1 &quot;combined-file&quot;)
+</PRE>
+
+<P>In our example, both files are in alphabetical order of computer account
+name, the account name is a word, and the same account name never appears
+more than once in each file.  In general, you may assume that these
+conditions hold for the item that the two files have in common.  Your
+program should <EM>not</EM> assume that every item in one file also appears
+in the other.  A line should be written in the output file only for the
+items that do appear in both files.  
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="files.html#text1">[1]</A> Another difference, not
+apparent in this example, is that <CODE>show</CODE> and <CODE>read</CODE> can handle
+structured lists.  <CODE>Show-line</CODE> can print a structured list, leaving off
+only the outermost parentheses, but <CODE>read-line</CODE> will treat any
+parentheses in the file as ordinary characters; it always returns a
+sentence.<P>
+<A NAME="ft2" HREF="files.html#text2">[2]</A> Like all the input and output primitives, <CODE>read-string</CODE> can be invoked with or without a port argument.<P>
+<A NAME="ft3" HREF="files.html#text3">[3]</A> Computer programmers really talk
+this way.<P>
+<A NAME="ft4" HREF="files.html#text4">[4]</A> There are other kinds of data
+that <A NAME="g38"></A><CODE>write</CODE> prints differently from <CODE>display</CODE>, but we don't
+use them in
+this book.  The general rule is that <CODE>display</CODE> formats the output for
+human readers, while <CODE>write</CODE> ensures that Scheme can reread the
+information unambiguously.  <CODE>Show</CODE> and <CODE>show-line</CODE> are extensions
+that we wrote using <CODE>display</CODE>.  We could have written <CODE>show-in-write-format</CODE>,
+for example, but happened not to need it.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch21/functions-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch23/vectors.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch23/vectors b/js/games/nluqo.github.io/~bh/ssch23/vectors
new file mode 100644
index 0000000..dcd6504
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch23/vectors
@@ -0,0 +1,925 @@
+<P>
+
+<P><CENTER><IMG SRC="../ss-pics/lockers.jpg" ALT="figure: lockers"></CENTER><A NAME="lockers"></A><P><CENTER>A row of boxes
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 23: Vectors</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 23</H2>
+<H1>Vectors</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch23.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch22/files.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch24/spread.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>So far all the programs we've written in this book have had no memory of the
+past history of the computation.  We invoke a function with certain
+arguments, and we get back a value that depends only on those arguments.
+Compare this with the operation of Scheme itself:
+
+<P><PRE>&gt; (foo 3)
+ERROR: FOO HAS NO VALUE
+
+&gt; (define (foo x)
+    (word x x))
+
+&gt; (foo 3)
+33
+</PRE>
+
+<P>Scheme <EM>remembers</EM> that you have defined <CODE>foo</CODE>, so its response to
+the very same expression is different the second time.  Scheme maintains a
+record of certain results of its past interaction with you; in particular,
+Scheme remembers the global variables that you have defined.  This record is
+called its <EM>state.</EM>
+
+<P>Most of the programs that people use routinely are full of state; your text
+editor, for example, remembers all the characters in your file.  In this
+chapter you will learn how to write programs with state.
+
+<P><H2>The Indy 500</H2>
+
+<P>The Indianapolis 500 is an annual 500-mile automobile race, famous among
+people who like that sort of thing.  It's held at the Indianapolis Motor
+<A NAME="g1"></A>
+Speedway, a racetrack in Indianapolis, Indiana.  (Indiana is better known as
+the home of Dan Friedman, the coauthor of some good books about Scheme.)
+The racetrack is 2&frac12; miles long, so, as you might imagine, the
+racers have to complete 200 laps in order to finish the race.  This means
+that someone has to keep track of how many laps each car has completed so
+far.
+
+<P>Let's write a program to help this person keep count.  Each car has a
+number, and the count person will invoke the procedure <CODE>lap</CODE> with that
+number as argument every time a car completes a lap.  The procedure will
+return the number of laps that that car has completed altogether:
+
+<P><PRE>&gt; (lap 87)
+1
+
+&gt; (lap 64)
+1
+
+&gt; (lap 17)
+1
+
+&gt; (lap 64)
+2
+
+&gt; (lap 64)
+3
+</PRE>
+
+<P>(Car 64 managed to complete three laps before the other cars
+completed two because the others had flat tires.)  Note that we typed
+the expression <CODE>(lap 64)</CODE> three times and got three different answers.
+<CODE>Lap</CODE> isn't a function!  A function has to return the same answer
+whenever it's invoked with the same arguments.
+
+<P><H2>Vectors</H2>
+
+<P>The point of this chapter is to show how procedures like <CODE>lap</CODE> can be
+written.  To accomplish this, we're going to use a data structure called a
+<EM>vector.</EM> (You may have seen something similar in other
+programming languages under the name &quot;array.&quot;)
+
+<P>A vector is, in effect, a row of boxes into which values can be put.  Each
+vector has a fixed number of boxes; when you create a vector, you have to say
+how many boxes you want.  Once a vector is created, there are two things you
+can do with it:  You can put a new value into a box (replacing any old value
+that might have been there), or you can examine the value in a box.  The
+boxes are numbered, starting with zero.
+
+<P><PRE>&gt; (define v (<A NAME="g2"></A>make-vector 5))
+
+&gt; (<A NAME="g3"></A>vector-set! v 0 'shoe)
+
+&gt; (vector-set! v 3 'bread)
+
+&gt; (vector-set! v 2 '(savoy truffle))
+
+&gt; (<A NAME="g4"></A>vector-ref v 3)
+BREAD
+</PRE>
+
+<P>There are several details to note here.  When we invoke <CODE>make-vector</CODE> we
+give it one argument, the number of boxes we want the vector to have.  (In
+this example, there are five boxes, numbered 0 through 4.  There is no
+box 5.)  When we create the vector, there is nothing in any of the
+boxes.<A NAME="text1" HREF="vectors#ft1">[1]</A>
+
+<P>We put things in boxes using the <CODE>vector-set!</CODE> procedure.  The
+exclamation point in its name, indicates that this is a <EM>mutator</EM>&mdash;a procedure that changes the value of some previously
+created data structure.  The exclamation point is pronounced &quot;bang,&quot; as in
+&quot;vector set bang.&quot; (Scheme actually has several such mutators, including
+mutators for lists, but this is the only one we'll use in this book.
+A procedure that modifies its argument is also called <EM>destructive.</EM>) The arguments to <CODE>vector-set!</CODE> are the vector, the
+number of the box (the <EM>index</EM>), and the desired new value.  Like <CODE>define</CODE>, <CODE>vector-set!</CODE> returns an unspecified value.
+
+<P>We examine the contents of a box using <CODE>vector-ref</CODE>, which takes two
+arguments, the vector and an index.  <CODE>Vector-ref</CODE> is similar to <CODE>list-ref</CODE>, except that it operates on vectors instead of lists.
+
+<P>We can change the contents of a box that already has something in it.
+
+<P><PRE>&gt; (vector-set! v 3 'jewel)
+
+&gt; (vector-ref v 3)
+JEWEL
+</PRE>
+
+<P>The old value of box 3, <CODE>bread</CODE>, is no longer there.  It's
+been replaced by the new value.
+
+<P><PRE>&gt; (vector-set! v 1 741)
+
+&gt; (vector-set! v 4 #t)
+
+&gt; v
+#(SHOE 741 (SAVOY TRUFFLE) JEWEL #T)
+</PRE>
+
+<P>Once the vector is completely full, we can print its value.  Scheme
+prints vectors in a format like that of lists, except that there is a number
+sign (<CODE>#</CODE>) before the open parenthesis.  If you ever have need for a
+constant vector (one that you're not going to mutate), you can quote it
+using the same notation:
+
+<P><PRE>&gt; (vector-ref '#(a b c d) 2)
+C
+</PRE>
+
+<P><H2>Using Vectors in Programs</H2>
+
+<P>To implement our <CODE>lap</CODE> procedure, we'll keep its state information, the
+lap counts, in a vector.  We'll use the car number as the index into the
+vector.  It's not enough to create the vector; we have to make sure that
+each box has a zero as its initial value.
+
+<P><PRE>(define *lap-vector* (make-vector 100))
+
+(define (<A NAME="g5"></A>initialize-lap-vector index)
+  (if (&lt; index 0)
+      'done
+      (begin (vector-set! *lap-vector* index 0)
+	     (initialize-lap-vector (- index 1)))))
+
+&gt; (initialize-lap-vector 99)
+DONE
+</PRE>
+
+<P>We've created a global variable whose value is the vector.  We
+used a recursive procedure to put a zero into each box of the
+vector.<A NAME="text2" HREF="vectors#ft2">[2]</A> Note that the
+vector is of length 100, but its largest index is 99.  Also, the base case
+of the recursion is that the index is less than zero, not equal to zero as
+in many earlier examples.  That's because zero is a valid index.
+
+<P>Now that we have the vector, we can write <CODE>lap</CODE>.
+
+<P><PRE>(define (<A NAME="g6"></A>lap car-number)
+  (vector-set! *lap-vector*
+	       car-number
+	       (+ (vector-ref *lap-vector* car-number) 1))
+  (vector-ref *lap-vector* car-number))
+</PRE>
+
+<P>Remember that a procedure body can include more than one
+expression.  When the procedure is invoked, the expressions will be
+evaluated in order.  The value returned by the procedure is the value of the
+last expression (in this case, the second one).
+
+<P><CODE>Lap</CODE> has both a return value and a side effect.  The job of the first
+expression is to carry out that side effect, that is, to add 1 to the lap
+count for the specified car.  The second expression looks at the value we
+just put in a box to determine the return value.
+
+<P><H2>Non-Functional Procedures and State</H2>
+
+<P>We remarked earlier that <CODE>lap</CODE> isn't a function because invoking it
+twice with the same argument doesn't return the same value both
+times.<A NAME="text3" HREF="vectors#ft3">[3]</A>
+
+<P>It's not a coincidence that <CODE>lap</CODE> also violates functional programming
+by maintaining state information.  Any procedure whose return value is not a
+function of its arguments (that is, whose return value is not always the
+same for any particular arguments) must depend on knowledge of what has
+happened in the past.  After all, computers don't pull results out of the
+air; if the result of a computation doesn't depend entirely on the arguments
+we give, then it must depend on some other information available to the
+program.
+
+<P>Suppose somebody asks you, &quot;Car 54 has just completed a lap; how many has it
+completed in all?&quot; You can't answer that question with only the information
+in the question itself; you have to remember earlier events in the race.  By
+contrast, if someone asks you, &quot;What's the plural of `book'?&quot; what has
+happened in the past doesn't matter at all.
+
+<P>The connection between non-functional procedures and state also applies to
+non-functional Scheme primitives.  The <CODE>read</CODE> procedure, for example,
+returns different results when you invoke it repeatedly with the same
+argument because it remembers how far it's gotten in the file.  That's why
+the argument is a port instead of a file name: A port is an abstract data
+type that includes, among other things, this piece of state.  (If you're
+reading from the keyboard, the state is in the person doing the typing.)
+
+<P>A more surprising example is the <A NAME="g7"></A><CODE>random</CODE> procedure that you met in
+Chapter 2. <CODE>Random</CODE> isn't a function because it doesn't always
+return the same value when called with the same argument.  How does <CODE>random</CODE> compute its result?  Some versions of <CODE>random</CODE> compute a number
+that's based on the current time (in tiny units like milliseconds so you
+don't get the same answer from two calls in quick succession).  How does
+your computer know the time?  Every so often some procedure (or some
+hardware device) adds 1 to a remembered value, the number of milliseconds
+since midnight.  That's state, and <CODE>random</CODE> relies on it.
+
+<P>The most commonly used algorithm for random numbers is a little trickier;
+each time you invoke <CODE>random</CODE>, the result is a function of <EM>the
+result from the last time you invoked it.</EM>  (The procedure is pretty
+complicated; typically the old number is multiplied by some large, carefully
+chosen constant, and only the middle digits of the product are kept.)  Each
+time you invoke <CODE>random</CODE>, the returned value is stashed away somehow so
+that the next invocation can remember it.  That's state too.
+
+<P>Just because a procedure remembers something doesn't necessarily make it
+stateful.  <EM>Every</EM> procedure remembers the arguments with which it was
+invoked, while it's running.  Otherwise the arguments wouldn't be able to
+affect the computation.  A procedure whose result depends only on its
+arguments (the ones used in the current invocation) is functional.  The
+procedure is non-functional if it depends on something outside of its
+current arguments.  It's that sort of &quot;long-term&quot; memory that we consider
+to be state.
+
+<P>In particular, a procedure that uses <CODE>let</CODE> isn't stateful merely because
+the body of the <CODE>let</CODE> remembers the values of the variables created by the
+<CODE>let</CODE>.  Once <CODE>let</CODE> returns a value, the variables that it created no
+longer exist.  You couldn't use <CODE>let</CODE>, for example, to carry out the
+kind of remembering that <CODE>random</CODE> needs.  <CODE>Let</CODE> doesn't remember a
+value <EM>between</EM> invocations, just during a single invocation.
+
+<P><H2>Shuffling a Deck</H2>
+
+<P>One of the advantages of the vector data structure is that it allows
+elements to be rearranged.  As an example, we'll create and shuffle a
+deck of cards.
+
+<P>We'll start with a procedure <CODE>card-list</CODE> that returns a list of all the
+cards, in standard order:
+
+<P><PRE>(define (<A NAME="g8"></A>card-list)
+  (reduce append
+	  (map (lambda (suit) (map (lambda (rank) (word suit rank))
+				   '(a 2 3 4 5 6 7 8 9 10 j q k)))
+	       '(h s d c))))
+
+&gt; (card-list)
+(HA H2 H3 H4 H5 H6 H7 H8 H9 H10 HJ HQ HK 
+ SA S2 S3 S4 S5 S6 S7 S8 S9 S10 SJ SQ SK 
+ DA D2 D3 D4 D5 D6 D7 D8 D9 D10 DJ DQ DK 
+ CA C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK)
+</PRE>
+
+<P>In writing <CODE>card-list</CODE>, we need <CODE>reduce append</CODE> because the result
+from the outer invocation of <CODE>map</CODE> is a list of lists: <CODE>((HA H2 &hellip;) (SA &hellip;) &hellip;)</CODE>.<A NAME="text4" HREF="vectors#ft4">[4]</A>
+
+<P>Each time we want a new deck of cards, we start with this list of 52 cards,
+copy the list into a vector, and shuffle that vector.  We'll use the Scheme
+primitive <CODE><A NAME="g9"></A><CODE>list-&gt;vector</CODE></CODE>, which takes a list as argument and
+returns a vector of the same length, with the boxes initialized to the
+corresponding elements of the list. (There is also a procedure <CODE><A NAME="g10"></A><CODE>vector-&gt;list</CODE></CODE> that does the reverse.  The characters <CODE>-&gt;</CODE> in
+these function names are meant to look like an arrow
+(&rarr;); this is a Scheme convention for functions
+that convert information from one data type to another.)
+
+<P><PRE>(define (<A NAME="g11"></A>make-deck)
+  (shuffle! (list-&gt;vector (card-list)) 51))
+
+(define (<A NAME="g12"></A>shuffle! deck index)
+  (if (&lt; index 0)
+      deck
+      (begin (vector-swap! deck index (random (+ index 1)))
+	     (shuffle! deck (- index 1)))))
+
+(define (<A NAME="g13"></A>vector-swap! vector index1 index2)
+  (let ((temp (vector-ref vector index1)))
+    (vector-set! vector index1 (vector-ref vector index2))
+    (vector-set! vector index2 temp)))
+</PRE>
+
+<P>
+<P>Now, each time we call <CODE>make-deck</CODE>, we get a randomly shuffled
+vector of cards:
+
+<P><PRE>&gt; (make-deck)
+#(C4 SA C7 DA S4 D9 SQ H4 C10 D5 H9 S10 D6
+  S9 CA C9 S2 H7 S5 H6 D7 HK S7 C3 C2 C6
+  HJ SK CQ CJ D4 SJ D8 S8 HA C5 DK D3 HQ
+  D10 H8 DJ C8 H2 H5 H3 CK S3 DQ S6 D2 H10)
+
+&gt; (make-deck)
+#(CQ H7 D10 D5 S8 C7 H10 SQ H4 H3 D8 C9 S7
+  SK DK S6 DA D4 C6 HQ D6 S2 H5 CA H2 HJ
+  CK D7 H6 HA CJ C4 SJ HK SA C2 D2 S4 DQ
+  S5 C10 H9 D9 C5 D3 DJ C3 S9 S3 C8 S10 H8)
+</PRE>
+
+<P>How does the shuffling algorithm work?  Conceptually it's not complicated,
+but there are some implementation details that make the actual procedures a
+little tricky.  The general idea is this:  We want all the cards shuffled
+into a random order.  So we choose any card at random, and make it the first
+card.  We're then left with a one-card-smaller deck to shuffle, and we do
+that by recursion.  (This algorithm is similar to selection sort from
+Chapter 15, except that we select a random card each time instead of
+selecting the smallest value.)
+
+<P>The details that complicate this algorithm have to do with the fact that
+we're using a vector, in which it's easy to change the value in one
+particular position, but it's not easy to do what would otherwise be the
+most natural thing:  If you had a handful of actual cards and wanted to move
+one of them to the front, you'd slide the other cards over to make room.
+There's no &quot;sliding over&quot; in a vector.  Instead we use a trick; we happen
+to have an empty slot, the one from which we removed the randomly chosen
+card, so instead of moving several cards, we just move the one card that was
+originally at the front into that slot.  In other words, we exchange two
+cards, the randomly chosen one and the one that used to be in front.
+
+<P>Second, there's nothing comparable to <CODE>cdr</CODE> to provide a
+one-card-smaller vector to the recursive invocation.  Instead, we must use
+the entire vector and also provide an additional <CODE>index</CODE> argument, a
+number that keeps track of how many cards remain to be shuffled.  It's
+simplest if each recursive invocation is responsible for the range of cards
+from position <CODE>0</CODE> to position <CODE>index</CODE> of the vector, and therefore
+the program actually moves each randomly selected card to the <EM>end</EM> of
+the remaining portion of the deck.
+
+<P><H2>More Vector Tools</H2>
+
+<P>If you want to make a vector with only a few boxes, and you know in advance
+what values you want in those boxes, you can use the constructor
+<A NAME="g14"></A><CODE>vector</CODE>.  Like <CODE>list</CODE>, it takes any number of arguments and
+returns a vector containing those arguments as elements:
+
+<P><PRE>&gt; (define beatles (vector 'john 'paul 'george 'pete))
+
+&gt; (vector-set! beatles 3 'ringo)
+
+&gt; beatles
+#(JOHN PAUL GEORGE RINGO)
+</PRE>
+
+<P>The procedure <A NAME="g15"></A><CODE>vector-length</CODE> takes a vector as argument and returns the
+number of boxes in the vector.
+
+<P><PRE>&gt; (vector-length beatles)
+4
+</PRE>
+
+<P>The predicate <CODE>equal?</CODE>, which we've used with words and lists, also
+accepts vectors as arguments.  Two vectors are equal if they are the same
+size and all their corresponding elements are equal.  (A list and a vector
+are never equal, even if their elements are equal.)
+
+<P>Finally, the predicate <A NAME="g16"></A><CODE>vector?</CODE> takes anything as argument and returns
+<CODE>#t</CODE> if and only if its argument is a vector.
+
+<P><H2>The Vector Pattern of Recursion</H2>
+
+<P>Here are two procedures that you've seen earlier in this chapter, which do
+something to each element of a vector:
+
+<P><PRE>(define (initialize-lap-vector index)
+  (if (&lt; index 0)
+      'done
+      (begin (vector-set! *lap-vector* index 0)
+	     (initialize-lap-vector (- index 1)))))
+
+(define (shuffle! deck index)
+  (if (&lt; index 0)
+      deck
+      (begin (vector-swap! deck index (random (+ index 1)))
+	     (shuffle! deck (- index 1)))))
+</PRE>
+
+<P>These procedures have a similar structure, like the similarities we found in
+other recursive patterns.  Both of these procedures take an index as an
+argument, and both have
+
+<P><PRE>(&lt; index 0)
+</PRE>
+
+<P>as their base case.  Also, both have, as their recursive case, a
+<CODE>begin</CODE> in which the first action does something to the vector element
+selected by the current index, and the second action is a recursive call
+with the index decreased by one.  These procedures are initially called with
+the largest possible index value.
+
+<P>In some cases it's more convenient to count the index upward from zero:
+
+<P><PRE>(define (<A NAME="g17"></A>list-&gt;vector lst)
+  (l-&gt;v-helper (make-vector (length lst)) lst 0))
+
+(define (l-&gt;v-helper vec lst index)
+  (if (= index (vector-length vec))
+      vec
+      (begin (vector-set! vec index (car lst))
+	     (l-&gt;v-helper vec (cdr lst) (+ index 1)))))
+</PRE>
+
+<P>Since lists are naturally processed from left to right (using
+<CODE>car</CODE> and <CODE>cdr</CODE>), this program must process the vector from left to
+right also.
+
+<P><H2>Vectors versus Lists</H2>
+
+<P>Since we introduced vectors to provide mutability, you may have the
+impression that mutability is the main difference between vectors and
+lists.  Actually, lists are mutable too, although the issues are more
+complicated; that's why we haven't used list mutation in this book.
+
+<P>The most important difference between lists and vectors is that each
+kind of aggregate lends itself to a different style of programming, because
+some operations are faster than others in each.  List programming is
+characterized by two operations: dividing a list into its first element and
+all the rest, and sticking one new element onto the front of a list.  Vector
+programming is characterized by selecting elements in any order, from a
+collection whose size is set permanently when the vector is created.
+
+<P>To make these rather vague descriptions more concrete, here are two
+procedures, one of which squares every number in a list, and the other of
+which squares every number in a vector:
+
+<P><PRE>(define (list-square numbers)
+  (if (null? numbers)
+      '()
+      (cons (square (car numbers))
+	    (list-square (cdr numbers)))))
+
+(define (vector-square numbers)
+  (vec-sq-helper (make-vector (vector-length numbers))
+		 numbers
+		 (- (vector-length numbers) 1)))
+
+(define (vec-sq-helper new old index)
+  (if (&lt; index 0)
+      new
+      (begin (vector-set! new index (square (vector-ref old index)))
+	     (vec-sq-helper new old (- index 1)))))
+</PRE>
+
+<P>In the list version, the intermediate stages of the algorithm
+deal with lists that are smaller than the original argument.  Each recursive
+invocation &quot;strips off&quot; one element of its argument and &quot;glues on&quot; one
+extra element in its return value.  In the vector version, the returned
+vector is created, at full size, as the first step in the algorithm; its
+component parts are filled in as the program proceeds.
+
+<P>This example can plausibly be done with either vectors or lists, so we've
+used it to compare the two techniques.  But some algorithms fit most
+naturally with one kind of aggregate and would be awkward and slow using
+the other kind.  The swapping of pairs of elements in the shuffling
+algorithm would be much harder using lists, while mergesort would be harder
+using vectors.
+
+<P>The best way to understand these differences in style is to know the
+operations that are most efficient for each kind of aggregate.  In each
+case, there are certain operations that can be done in one small unit of
+time, regardless of the number of elements in the aggregate, while other
+operations take more time for more elements.  The <EM>constant time</EM>
+operations for lists are <CODE>cons</CODE>, <CODE>car</CODE>, <CODE>cdr</CODE>, and <CODE>null?</CODE>;
+the ones for vectors are <CODE>vector-ref</CODE>, <CODE>vector-set!</CODE>, and <CODE>vector-length</CODE>.<A NAME="text5" HREF="vectors#ft5">[5]</A>  And if you reread the
+squaring programs, you'll find that these are precisely the operations
+they use.
+
+<P>We might have used <CODE>list-ref</CODE> in the list version, but we didn't, and
+Scheme programmers usually don't, because we know that it would be slower.
+Similarly, we could implement something like <CODE>cdr</CODE> for vectors, but that
+would be slow, too, since it would have to make a one-smaller vector and
+copy the elements one at a time.  There are two possible morals to this
+story, and they're both true:  First, programmers invent and learn the
+algorithms that make sense for whatever data structure is available.  Thus
+we have well-known programming patterns, such as the <CODE>filter</CODE> pattern,
+appropriate for lists, and different patterns appropriate for vectors.
+Second, programmers choose which data structure to use depending on what
+algorithms they need.  If you want to shuffle cards, use a vector, but if
+you want to split the deck into a bunch of variable-size piles, lists might
+be more appropriate.  In general, vectors are good at selecting elements in
+arbitrary order from a fixed-size collection; lists are good only at
+selecting elements strictly from left to right, but they can vary in size.
+
+<P>In this book, despite what we're saying here about efficiency, we've
+generally tried to present algorithms in the way that's easiest to
+understand, even when we know that there's a faster way.  For example, we've
+shown several recursive procedures in which the base case test was
+
+<P><PRE>(= (count sent) 1)
+</PRE>
+
+<P>If we were writing the program for practical use, rather than for
+a book, we would have written
+
+<P><PRE>(empty? (butfirst sent))
+</PRE>
+
+<P>because we know that <CODE>empty?</CODE> and <CODE>butfirst</CODE> are both
+constant time operations (because for sentences they're implemented as
+<CODE>null?</CODE> and <CODE>cdr</CODE>), while <CODE>count</CODE> takes a long time for large
+sentences.  But the version using <CODE>count</CODE> makes the intent
+clearer.<A NAME="text6" HREF="vectors#ft6">[6]</A>
+
+<P><H2>State, Sequence, and Effects</H2>
+
+<P>Effects, sequence, and state are three sides of the same
+coin.<A NAME="text7" HREF="vectors#ft7">[7]</A>
+
+<P>In Chapter 20 we explained the connection between effect (printing
+something on the screen) and sequence: It matters what you print first.
+We also noted that there's no benefit to a sequence of expressions unless
+those expressions produce an effect, since the values returned by all but
+the last expression are discarded.
+
+<P>In this chapter we've seen another connection.  The way our vector programs
+maintain state information is by carrying out effects, namely, <CODE>vector-set!</CODE> invocations.  Actually, <EM>every</EM> effect changes some kind
+of state; if not in Scheme's memory, then on the computer screen or in a
+file.
+
+<P>The final connection to be made is between state and sequence.  Once a
+program maintains state, it matters whether some computation is carried out
+before or after another computation that changes the state.  The example at
+the beginning of this chapter in which an expression had different results
+before and after defining a variable illustrates this point.  As another
+example, if we evaluate <CODE>(lap 1)</CODE> 200 times and <CODE>(lap 2)</CODE> 200 times,
+the program's determination of the winner of the race depends on whether the
+last evaluation of <CODE>(lap 1)</CODE> comes before or after the last invocation
+of <CODE>(lap 2)</CODE>.
+
+<P>Because these three ideas are so closely connected, the names <EM>sequential programming</EM> (emphasizing sequence) and <EM><A NAME="g18"></A><A NAME="g19"></A>imperative programming</EM> (emphasizing effect) are both used to
+refer to a style of programming that uses all three.  This style is in
+contrast with functional programming, which, as you know, uses none of them.
+
+<P>Although functional and sequential programming are, in a sense, opposites,
+it's perfectly possible to use both styles within one program, as we pointed
+out in the tic-tac-toe program of Chapter 20.  We'll show more such hybrid
+programs in the following chapters.
+
+<P><H2>Pitfalls</H2>
+
+<P>Don't forget that the first element of a vector is number zero, and
+there is no element whose index number is equal to the length of the
+vector.  (Although these points are equally true for lists, it doesn't often
+matter, because we rarely select the elements of a list by number.)  In
+particular, in a vector recursion, if zero is the base case, then there's
+probably still one element left to process.
+
+<P>Try the following experiment:
+
+<P><PRE>&gt; (define dessert (vector 'chocolate 'sundae))
+&gt; (define two-desserts (list dessert dessert))
+&gt; (vector-set! (car two-desserts) 1 'shake)
+&gt; two-desserts
+(#(CHOCOLATE SHAKE) #(CHOCOLATE SHAKE))
+</PRE>
+
+<P>You might have expected that after asking to change one word in
+<CODE>two-desserts</CODE>, the result would be
+
+<P><PRE>(#(CHOCOLATE SHAKE) #(CHOCOLATE SUNDAE))
+</PRE>
+
+<P>However, because of the way we created <CODE>two-desserts</CODE>, both of
+its elements are the <EM>same</EM> vector.  If you think of a list as a
+collection of things, it's strange to imagine the very same thing in two
+different places, but that's the situation.  If you want to have two separate
+vectors that happen to have the same values in their elements, but are
+individually mutable, you'd have to say
+
+<P><PRE>&gt; (define two-desserts (list (vector 'chocolate 'sundae)
+			     (vector 'chocolate 'sundae)))
+&gt; (vector-set! (car two-desserts) 1 'shake)
+&gt; two-desserts
+(#(CHOCOLATE SHAKE) #(CHOCOLATE SUNDAE))
+</PRE>
+
+<P>Each invocation of <CODE>vector</CODE> or <CODE>make-vector</CODE> creates a
+new, independent vector.
+
+<P><H2>Exercises</H2>
+
+<P>
+
+<P><EM>Do not solve any of the following exercises by converting a
+vector to a list, using list procedures, and then converting the result back
+to a vector.</EM>
+
+<P><B>23.1</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g20"></A>sum-vector</CODE> that takes a vector full of
+numbers as its argument and returns the sum of all the numbers:
+
+<P><PRE>&gt; (sum-vector '#(6 7 8))
+21
+</PRE>
+
+
+<P>
+<B>23.2</B>&nbsp;&nbsp;Some versions of Scheme provide a procedure <A NAME="g21"></A><CODE>vector-fill!</CODE> that takes a
+vector and anything as its two arguments.  It replaces every element of the
+vector with the second argument, like this:
+
+<P><PRE>&gt; (define vec (vector 'one 'two 'three 'four))
+
+&gt; vec
+#(one two three four)
+
+&gt; (<A NAME="g22"></A>vector-fill! vec 'yeah)
+
+&gt; vec
+#(yeah yeah yeah yeah)
+</PRE>
+
+<P>Write <CODE>vector-fill!</CODE>.  (It doesn't matter what value it
+returns.)
+
+
+<P>
+<B>23.3</B>&nbsp;&nbsp;Write a function <CODE><A NAME="g23"></A>vector-append</CODE> that works just like regular <CODE>append</CODE>, but for vectors:
+
+<P><PRE>&gt; (vector-append '#(not a) '#(second time))
+#(not a second time)
+</PRE>
+
+
+<P>
+<B>23.4</B>&nbsp;&nbsp;Write <CODE>vector-&gt;list</CODE>.
+
+
+<P>
+<B>23.5</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g24"></A>vector-map</CODE> that takes two arguments, a
+function and a vector, and returns a new vector in which each box contains
+the result of applying the function to the corresponding element of the
+argument vector.
+
+
+<P>
+<B>23.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g25"></A>vector-map!</CODE> that takes two arguments, a
+function and a vector, and modifies the argument vector by replacing each
+element with the result of applying the function to that element.  Your
+procedure should return the same vector.
+
+
+<P>
+<B>23.7</B>&nbsp;&nbsp;Could you write <CODE>vector-filter</CODE>?  How about <CODE>vector-filter!</CODE>?
+Explain the issues involved.
+
+
+<P>
+<B>23.8</B>&nbsp;&nbsp;Modify the <CODE>lap</CODE> procedure to print &quot;Car 34 wins!&quot; when car 34
+completes its 200th lap.  (A harder but more correct modification is
+to print the message only if no other car has completed 200 laps.)
+
+
+<P>
+<B>23.9</B>&nbsp;&nbsp;<A NAME="itstrivial"></A>
+Write a procedure <CODE><A NAME="g26"></A>leader</CODE> that says which car is in the lead
+right now.
+
+
+<P>
+<B>23.10</B>&nbsp;&nbsp;Why doesn't this solution to Exercise <A HREF="vectors.html#itstrivial">23.9</A> work?
+
+<P><PRE>(define (leader)
+  (leader-helper 0 1))
+
+(define (leader-helper leader index)
+  (cond ((= index 100) leader)
+	((&gt; (lap index) (lap leader))
+	 (leader-helper index (+ index 1)))
+	(else (leader-helper leader (+ index 1)))))
+</PRE>
+
+
+<P>
+<B>23.11</B>&nbsp;&nbsp;In some restaurants, the servers use computer terminals to keep track of
+what each table has ordered.  Every time you order more food, the server
+enters your order into the computer.  When you're ready for the check, the
+computer prints your bill.
+
+<P>You're going to write two procedures, <CODE><A NAME="g27"></A>order</CODE> and <CODE><A NAME="g28"></A>bill.</CODE> <CODE>Order</CODE> takes a table number and an item as arguments and
+adds the cost of that item to that table's bill.  <CODE>Bill</CODE> takes a table
+number as its argument, returns the amount owed by that table, and resets
+the table for the next customers.  (Your <CODE>order</CODE> procedure can examine a
+global variable <CODE>*menu*</CODE> to find the price of each item.)
+
+<P><PRE>&gt; (order 3 'potstickers)
+
+&gt; (order 3 'wor-won-ton)
+
+&gt; (order 5 'egg-rolls)
+
+&gt; (order 3 'shin-shin-special-prawns)
+
+&gt; (bill 3)
+13.85
+
+&gt; (bill 5)
+2.75
+</PRE>
+
+
+<P>
+<B>23.12</B>&nbsp;&nbsp;Rewrite selection sort (from Chapter 15) to sort a vector.  This can
+be done in a way similar to the procedure for shuffling a deck:  Find
+the smallest element of the vector and exchange it (using <CODE>vector-swap!</CODE>) with the value in the first box.  Then find the smallest
+element not including the first box, and exchange that with the second box,
+and so on.  For example, suppose we have a vector of numbers:
+
+<P><PRE>#(23 4 18 7 95 60)
+</PRE>
+
+<P>Your program should transform the vector through these
+intermediate stages:
+
+<P><PRE>#(4 23 18 7 95 60)   ; exchange 4 with 23
+#(4 7 18 23 95 60)   ; exchange 7 with 23
+#(4 7 18 23 95 60)   ; exchange 18 with itself
+#(4 7 18 23 95 60)   ; exchange 23 with itself
+#(4 7 18 23 60 95)   ; exchange 60 with 95
+</PRE>
+
+
+<P>
+<B>23.13</B>&nbsp;&nbsp;Why doesn't this work?
+
+<P><PRE>(define (vector-swap! vector index1 index2)
+  (vector-set! vector index1 (vector-ref vector index2))
+  (vector-set! vector index2 (vector-ref vector index1)))
+</PRE>
+
+
+<P>
+<B>23.14</B>&nbsp;&nbsp;Implement a two-dimensional version of vectors.  (We'll call one of these
+structures a <EM>matrix.</EM>) The implementation will use a vector of
+vectors.  For example, a three-by-five matrix will be a three-element
+vector, in which each of the elements is a five-element vector.  Here's
+how it should work:
+<A NAME="twodimvect"></A>
+
+<P><PRE>&gt; (define m (make-matrix 3 5))
+
+&gt; (matrix-set! m 2 1 '(her majesty))
+
+&gt; (matrix-ref m 2 1)
+(HER MAJESTY)
+</PRE>
+
+<P>
+<B>23.15</B>&nbsp;&nbsp;Generalize Exercise <A HREF="vectors.html#twodimvect">23.14</A> by implementing an <EM>array</EM>
+structure that can have any number of dimensions.  Instead of taking two
+numbers as index arguments, as the matrix procedures do, the array
+procedures will take one argument, a <EM>list</EM> of numbers.  The number of
+numbers is the number of dimensions, and it will be constant for any particular
+array.  For example, here is a three-dimensional array (4&times;5&times;6):
+<A NAME="arrays"></A>
+
+<P><PRE>&gt; (define a1 (make-array '(4 5 6)))
+
+&gt; (array-set! a1 '(3 2 3) '(the end))
+</PRE>
+
+<P>
+<B>23.16</B>&nbsp;&nbsp;We want to reimplement sentences as vectors instead of lists.
+
+<P>(a) Write versions of <CODE>sentence</CODE>, <CODE>empty?</CODE>, <CODE>first</CODE>,
+<CODE>butfirst</CODE>, <CODE>last</CODE>, and <CODE>butlast</CODE> that use vectors.  Your
+selectors need only work for sentences, not for words.
+
+<P><PRE>&gt; (sentence 'a 'b 'c)
+#(A B C)
+
+&gt; (butfirst (sentence 'a 'b 'c))
+#(B C)
+</PRE>
+
+<P>(You don't have to make these procedures work on lists as well as
+vectors!)
+
+<P>(b) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.
+
+<P><PRE>(define (praise stuff)
+  (sentence stuff '(is good)))
+</PRE>
+
+<P>(c) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.
+
+<P><PRE>(define (praise stuff)
+  (sentence stuff 'rules!))
+</PRE>
+
+<P>(d) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.  If so, is there some
+optional rewriting that would improve its performance?
+
+<P><PRE>(define (item n sent)
+  (if (= n 1)
+      (first sent)
+      (item (- n 1) (butfirst sent))))
+</PRE>
+
+<P>
+<P>(e) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.  If so, is there some
+optional rewriting that would improve its performance?
+
+<P><PRE>(define (every fn sent)
+  (if (empty? sent)
+      sent
+      (sentence (fn (first sent))
+		(every fn (butfirst sent)))))
+</PRE>
+
+<P>(f) In what ways does using vectors to implement sentences affect
+the speed of the selectors and constructor?  Why do you think we chose to
+use lists?
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="vectors#text1">[1]</A> The Scheme standard says that the initial contents of the
+boxes is &quot;unspecified.&quot; That means that the result depends on the
+particular version of Scheme you're using.  It's a bad idea to try to
+examine the contents of a box before putting something in it.<P>
+<A NAME="ft2" HREF="vectors#text2">[2]</A> In some versions of Scheme, <CODE>make-vector</CODE> can take an
+optional argument specifying an initial value to put in every box.  In those
+versions, we could just say
+
+<P><PRE>(define *lap-vector* (make-vector 100 0))
+</PRE>
+
+<P>without having to use the initialization procedure.<P>
+<A NAME="ft3" HREF="vectors#text3">[3]</A> That's what we mean by &quot;non-functional,&quot; not that it doesn't
+work!<P>
+<A NAME="ft4" HREF="vectors#text4">[4]</A> We could get around
+this problem in a different way:
+
+<P><PRE>(define (card-list)
+  (every (lambda (suit) (every (lambda (rank) (word suit rank))
+			       '(a 2 3 4 5 6 7 8 9 10 j q k)))
+	 '(h s d c)))
+</PRE>
+
+<P>In this version, we're taking advantage of the fact that our
+sentence data type was defined in a way that prevents the creation of
+sublists.  A sentence of cards is a good representation for the deck.
+However, with this approach we are mixing up the list and sentence data
+types, because later we're going to invoke <CODE>list-&gt;vector</CODE> with this deck
+of cards as its argument.  If we use sentence tools such as <CODE>every</CODE> to
+create the deck, then the procedure <CODE>card-list</CODE> should really be called
+<CODE>card-sentence</CODE>.
+
+<P>What difference does it make?  The <CODE>every</CODE> version works fine, as long
+as sentences are implemented as lists, so that <CODE>list-&gt;vector</CODE> can be
+applied to a sentence.  But the point about abstract data types such as
+sentences is to avoid making assumptions about their implementation.  If
+for some reason we decided to change the internal representation of
+sentences, then <CODE>list-&gt;vector</CODE> could no longer be applied to a sentence.
+Strictly speaking, if we're going to use this trick, we need a separate
+conversion procedure <CODE>sentence-&gt;vector</CODE>.
+
+<P>Of course, if you don't mind a little typing, you can avoid this whole issue
+by having a quoted list of all 52 cards built into the definition of <CODE>card-list</CODE>.
+<P>
+<A NAME="ft5" HREF="vectors#text5">[5]</A> Where did this information come from?  Just take our
+word for it.  In later courses you'll study how vectors and lists are
+implemented, and then there will be reasons.<P>
+<A NAME="ft6" HREF="vectors#text6">[6]</A> For words, it turns out, the <CODE>count</CODE> version is faster,
+because words behave more like vectors than like lists.<P>
+<A NAME="ft7" HREF="vectors#text7">[7]</A> &hellip; to coin a phrase.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch22/files.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch24/spread.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch23/vectors.html b/js/games/nluqo.github.io/~bh/ssch23/vectors.html
new file mode 100644
index 0000000..9dc1c40
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch23/vectors.html
@@ -0,0 +1,925 @@
+<P>
+
+<P><CENTER><IMG SRC="../ss-pics/lockers.jpg" ALT="figure: lockers"></CENTER><A NAME="lockers"></A><P><CENTER>A row of boxes
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 23: Vectors</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 23</H2>
+<H1>Vectors</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch23.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch22/files.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch24/spread.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>So far all the programs we've written in this book have had no memory of the
+past history of the computation.  We invoke a function with certain
+arguments, and we get back a value that depends only on those arguments.
+Compare this with the operation of Scheme itself:
+
+<P><PRE>&gt; (foo 3)
+ERROR: FOO HAS NO VALUE
+
+&gt; (define (foo x)
+    (word x x))
+
+&gt; (foo 3)
+33
+</PRE>
+
+<P>Scheme <EM>remembers</EM> that you have defined <CODE>foo</CODE>, so its response to
+the very same expression is different the second time.  Scheme maintains a
+record of certain results of its past interaction with you; in particular,
+Scheme remembers the global variables that you have defined.  This record is
+called its <EM>state.</EM>
+
+<P>Most of the programs that people use routinely are full of state; your text
+editor, for example, remembers all the characters in your file.  In this
+chapter you will learn how to write programs with state.
+
+<P><H2>The Indy 500</H2>
+
+<P>The Indianapolis 500 is an annual 500-mile automobile race, famous among
+people who like that sort of thing.  It's held at the Indianapolis Motor
+<A NAME="g1"></A>
+Speedway, a racetrack in Indianapolis, Indiana.  (Indiana is better known as
+the home of Dan Friedman, the coauthor of some good books about Scheme.)
+The racetrack is 2&frac12; miles long, so, as you might imagine, the
+racers have to complete 200 laps in order to finish the race.  This means
+that someone has to keep track of how many laps each car has completed so
+far.
+
+<P>Let's write a program to help this person keep count.  Each car has a
+number, and the count person will invoke the procedure <CODE>lap</CODE> with that
+number as argument every time a car completes a lap.  The procedure will
+return the number of laps that that car has completed altogether:
+
+<P><PRE>&gt; (lap 87)
+1
+
+&gt; (lap 64)
+1
+
+&gt; (lap 17)
+1
+
+&gt; (lap 64)
+2
+
+&gt; (lap 64)
+3
+</PRE>
+
+<P>(Car 64 managed to complete three laps before the other cars
+completed two because the others had flat tires.)  Note that we typed
+the expression <CODE>(lap 64)</CODE> three times and got three different answers.
+<CODE>Lap</CODE> isn't a function!  A function has to return the same answer
+whenever it's invoked with the same arguments.
+
+<P><H2>Vectors</H2>
+
+<P>The point of this chapter is to show how procedures like <CODE>lap</CODE> can be
+written.  To accomplish this, we're going to use a data structure called a
+<EM>vector.</EM> (You may have seen something similar in other
+programming languages under the name &quot;array.&quot;)
+
+<P>A vector is, in effect, a row of boxes into which values can be put.  Each
+vector has a fixed number of boxes; when you create a vector, you have to say
+how many boxes you want.  Once a vector is created, there are two things you
+can do with it:  You can put a new value into a box (replacing any old value
+that might have been there), or you can examine the value in a box.  The
+boxes are numbered, starting with zero.
+
+<P><PRE>&gt; (define v (<A NAME="g2"></A>make-vector 5))
+
+&gt; (<A NAME="g3"></A>vector-set! v 0 'shoe)
+
+&gt; (vector-set! v 3 'bread)
+
+&gt; (vector-set! v 2 '(savoy truffle))
+
+&gt; (<A NAME="g4"></A>vector-ref v 3)
+BREAD
+</PRE>
+
+<P>There are several details to note here.  When we invoke <CODE>make-vector</CODE> we
+give it one argument, the number of boxes we want the vector to have.  (In
+this example, there are five boxes, numbered 0 through 4.  There is no
+box 5.)  When we create the vector, there is nothing in any of the
+boxes.<A NAME="text1" HREF="vectors.html#ft1">[1]</A>
+
+<P>We put things in boxes using the <CODE>vector-set!</CODE> procedure.  The
+exclamation point in its name, indicates that this is a <EM>mutator</EM>&mdash;a procedure that changes the value of some previously
+created data structure.  The exclamation point is pronounced &quot;bang,&quot; as in
+&quot;vector set bang.&quot; (Scheme actually has several such mutators, including
+mutators for lists, but this is the only one we'll use in this book.
+A procedure that modifies its argument is also called <EM>destructive.</EM>) The arguments to <CODE>vector-set!</CODE> are the vector, the
+number of the box (the <EM>index</EM>), and the desired new value.  Like <CODE>define</CODE>, <CODE>vector-set!</CODE> returns an unspecified value.
+
+<P>We examine the contents of a box using <CODE>vector-ref</CODE>, which takes two
+arguments, the vector and an index.  <CODE>Vector-ref</CODE> is similar to <CODE>list-ref</CODE>, except that it operates on vectors instead of lists.
+
+<P>We can change the contents of a box that already has something in it.
+
+<P><PRE>&gt; (vector-set! v 3 'jewel)
+
+&gt; (vector-ref v 3)
+JEWEL
+</PRE>
+
+<P>The old value of box 3, <CODE>bread</CODE>, is no longer there.  It's
+been replaced by the new value.
+
+<P><PRE>&gt; (vector-set! v 1 741)
+
+&gt; (vector-set! v 4 #t)
+
+&gt; v
+#(SHOE 741 (SAVOY TRUFFLE) JEWEL #T)
+</PRE>
+
+<P>Once the vector is completely full, we can print its value.  Scheme
+prints vectors in a format like that of lists, except that there is a number
+sign (<CODE>#</CODE>) before the open parenthesis.  If you ever have need for a
+constant vector (one that you're not going to mutate), you can quote it
+using the same notation:
+
+<P><PRE>&gt; (vector-ref '#(a b c d) 2)
+C
+</PRE>
+
+<P><H2>Using Vectors in Programs</H2>
+
+<P>To implement our <CODE>lap</CODE> procedure, we'll keep its state information, the
+lap counts, in a vector.  We'll use the car number as the index into the
+vector.  It's not enough to create the vector; we have to make sure that
+each box has a zero as its initial value.
+
+<P><PRE>(define *lap-vector* (make-vector 100))
+
+(define (<A NAME="g5"></A>initialize-lap-vector index)
+  (if (&lt; index 0)
+      'done
+      (begin (vector-set! *lap-vector* index 0)
+	     (initialize-lap-vector (- index 1)))))
+
+&gt; (initialize-lap-vector 99)
+DONE
+</PRE>
+
+<P>We've created a global variable whose value is the vector.  We
+used a recursive procedure to put a zero into each box of the
+vector.<A NAME="text2" HREF="vectors.html#ft2">[2]</A> Note that the
+vector is of length 100, but its largest index is 99.  Also, the base case
+of the recursion is that the index is less than zero, not equal to zero as
+in many earlier examples.  That's because zero is a valid index.
+
+<P>Now that we have the vector, we can write <CODE>lap</CODE>.
+
+<P><PRE>(define (<A NAME="g6"></A>lap car-number)
+  (vector-set! *lap-vector*
+	       car-number
+	       (+ (vector-ref *lap-vector* car-number) 1))
+  (vector-ref *lap-vector* car-number))
+</PRE>
+
+<P>Remember that a procedure body can include more than one
+expression.  When the procedure is invoked, the expressions will be
+evaluated in order.  The value returned by the procedure is the value of the
+last expression (in this case, the second one).
+
+<P><CODE>Lap</CODE> has both a return value and a side effect.  The job of the first
+expression is to carry out that side effect, that is, to add 1 to the lap
+count for the specified car.  The second expression looks at the value we
+just put in a box to determine the return value.
+
+<P><H2>Non-Functional Procedures and State</H2>
+
+<P>We remarked earlier that <CODE>lap</CODE> isn't a function because invoking it
+twice with the same argument doesn't return the same value both
+times.<A NAME="text3" HREF="vectors.html#ft3">[3]</A>
+
+<P>It's not a coincidence that <CODE>lap</CODE> also violates functional programming
+by maintaining state information.  Any procedure whose return value is not a
+function of its arguments (that is, whose return value is not always the
+same for any particular arguments) must depend on knowledge of what has
+happened in the past.  After all, computers don't pull results out of the
+air; if the result of a computation doesn't depend entirely on the arguments
+we give, then it must depend on some other information available to the
+program.
+
+<P>Suppose somebody asks you, &quot;Car 54 has just completed a lap; how many has it
+completed in all?&quot; You can't answer that question with only the information
+in the question itself; you have to remember earlier events in the race.  By
+contrast, if someone asks you, &quot;What's the plural of `book'?&quot; what has
+happened in the past doesn't matter at all.
+
+<P>The connection between non-functional procedures and state also applies to
+non-functional Scheme primitives.  The <CODE>read</CODE> procedure, for example,
+returns different results when you invoke it repeatedly with the same
+argument because it remembers how far it's gotten in the file.  That's why
+the argument is a port instead of a file name: A port is an abstract data
+type that includes, among other things, this piece of state.  (If you're
+reading from the keyboard, the state is in the person doing the typing.)
+
+<P>A more surprising example is the <A NAME="g7"></A><CODE>random</CODE> procedure that you met in
+Chapter 2. <CODE>Random</CODE> isn't a function because it doesn't always
+return the same value when called with the same argument.  How does <CODE>random</CODE> compute its result?  Some versions of <CODE>random</CODE> compute a number
+that's based on the current time (in tiny units like milliseconds so you
+don't get the same answer from two calls in quick succession).  How does
+your computer know the time?  Every so often some procedure (or some
+hardware device) adds 1 to a remembered value, the number of milliseconds
+since midnight.  That's state, and <CODE>random</CODE> relies on it.
+
+<P>The most commonly used algorithm for random numbers is a little trickier;
+each time you invoke <CODE>random</CODE>, the result is a function of <EM>the
+result from the last time you invoked it.</EM>  (The procedure is pretty
+complicated; typically the old number is multiplied by some large, carefully
+chosen constant, and only the middle digits of the product are kept.)  Each
+time you invoke <CODE>random</CODE>, the returned value is stashed away somehow so
+that the next invocation can remember it.  That's state too.
+
+<P>Just because a procedure remembers something doesn't necessarily make it
+stateful.  <EM>Every</EM> procedure remembers the arguments with which it was
+invoked, while it's running.  Otherwise the arguments wouldn't be able to
+affect the computation.  A procedure whose result depends only on its
+arguments (the ones used in the current invocation) is functional.  The
+procedure is non-functional if it depends on something outside of its
+current arguments.  It's that sort of &quot;long-term&quot; memory that we consider
+to be state.
+
+<P>In particular, a procedure that uses <CODE>let</CODE> isn't stateful merely because
+the body of the <CODE>let</CODE> remembers the values of the variables created by the
+<CODE>let</CODE>.  Once <CODE>let</CODE> returns a value, the variables that it created no
+longer exist.  You couldn't use <CODE>let</CODE>, for example, to carry out the
+kind of remembering that <CODE>random</CODE> needs.  <CODE>Let</CODE> doesn't remember a
+value <EM>between</EM> invocations, just during a single invocation.
+
+<P><H2>Shuffling a Deck</H2>
+
+<P>One of the advantages of the vector data structure is that it allows
+elements to be rearranged.  As an example, we'll create and shuffle a
+deck of cards.
+
+<P>We'll start with a procedure <CODE>card-list</CODE> that returns a list of all the
+cards, in standard order:
+
+<P><PRE>(define (<A NAME="g8"></A>card-list)
+  (reduce append
+	  (map (lambda (suit) (map (lambda (rank) (word suit rank))
+				   '(a 2 3 4 5 6 7 8 9 10 j q k)))
+	       '(h s d c))))
+
+&gt; (card-list)
+(HA H2 H3 H4 H5 H6 H7 H8 H9 H10 HJ HQ HK 
+ SA S2 S3 S4 S5 S6 S7 S8 S9 S10 SJ SQ SK 
+ DA D2 D3 D4 D5 D6 D7 D8 D9 D10 DJ DQ DK 
+ CA C2 C3 C4 C5 C6 C7 C8 C9 C10 CJ CQ CK)
+</PRE>
+
+<P>In writing <CODE>card-list</CODE>, we need <CODE>reduce append</CODE> because the result
+from the outer invocation of <CODE>map</CODE> is a list of lists: <CODE>((HA H2 &hellip;) (SA &hellip;) &hellip;)</CODE>.<A NAME="text4" HREF="vectors.html#ft4">[4]</A>
+
+<P>Each time we want a new deck of cards, we start with this list of 52 cards,
+copy the list into a vector, and shuffle that vector.  We'll use the Scheme
+primitive <CODE><A NAME="g9"></A><CODE>list-&gt;vector</CODE></CODE>, which takes a list as argument and
+returns a vector of the same length, with the boxes initialized to the
+corresponding elements of the list. (There is also a procedure <CODE><A NAME="g10"></A><CODE>vector-&gt;list</CODE></CODE> that does the reverse.  The characters <CODE>-&gt;</CODE> in
+these function names are meant to look like an arrow
+(&rarr;); this is a Scheme convention for functions
+that convert information from one data type to another.)
+
+<P><PRE>(define (<A NAME="g11"></A>make-deck)
+  (shuffle! (list-&gt;vector (card-list)) 51))
+
+(define (<A NAME="g12"></A>shuffle! deck index)
+  (if (&lt; index 0)
+      deck
+      (begin (vector-swap! deck index (random (+ index 1)))
+	     (shuffle! deck (- index 1)))))
+
+(define (<A NAME="g13"></A>vector-swap! vector index1 index2)
+  (let ((temp (vector-ref vector index1)))
+    (vector-set! vector index1 (vector-ref vector index2))
+    (vector-set! vector index2 temp)))
+</PRE>
+
+<P>
+<P>Now, each time we call <CODE>make-deck</CODE>, we get a randomly shuffled
+vector of cards:
+
+<P><PRE>&gt; (make-deck)
+#(C4 SA C7 DA S4 D9 SQ H4 C10 D5 H9 S10 D6
+  S9 CA C9 S2 H7 S5 H6 D7 HK S7 C3 C2 C6
+  HJ SK CQ CJ D4 SJ D8 S8 HA C5 DK D3 HQ
+  D10 H8 DJ C8 H2 H5 H3 CK S3 DQ S6 D2 H10)
+
+&gt; (make-deck)
+#(CQ H7 D10 D5 S8 C7 H10 SQ H4 H3 D8 C9 S7
+  SK DK S6 DA D4 C6 HQ D6 S2 H5 CA H2 HJ
+  CK D7 H6 HA CJ C4 SJ HK SA C2 D2 S4 DQ
+  S5 C10 H9 D9 C5 D3 DJ C3 S9 S3 C8 S10 H8)
+</PRE>
+
+<P>How does the shuffling algorithm work?  Conceptually it's not complicated,
+but there are some implementation details that make the actual procedures a
+little tricky.  The general idea is this:  We want all the cards shuffled
+into a random order.  So we choose any card at random, and make it the first
+card.  We're then left with a one-card-smaller deck to shuffle, and we do
+that by recursion.  (This algorithm is similar to selection sort from
+Chapter 15, except that we select a random card each time instead of
+selecting the smallest value.)
+
+<P>The details that complicate this algorithm have to do with the fact that
+we're using a vector, in which it's easy to change the value in one
+particular position, but it's not easy to do what would otherwise be the
+most natural thing:  If you had a handful of actual cards and wanted to move
+one of them to the front, you'd slide the other cards over to make room.
+There's no &quot;sliding over&quot; in a vector.  Instead we use a trick; we happen
+to have an empty slot, the one from which we removed the randomly chosen
+card, so instead of moving several cards, we just move the one card that was
+originally at the front into that slot.  In other words, we exchange two
+cards, the randomly chosen one and the one that used to be in front.
+
+<P>Second, there's nothing comparable to <CODE>cdr</CODE> to provide a
+one-card-smaller vector to the recursive invocation.  Instead, we must use
+the entire vector and also provide an additional <CODE>index</CODE> argument, a
+number that keeps track of how many cards remain to be shuffled.  It's
+simplest if each recursive invocation is responsible for the range of cards
+from position <CODE>0</CODE> to position <CODE>index</CODE> of the vector, and therefore
+the program actually moves each randomly selected card to the <EM>end</EM> of
+the remaining portion of the deck.
+
+<P><H2>More Vector Tools</H2>
+
+<P>If you want to make a vector with only a few boxes, and you know in advance
+what values you want in those boxes, you can use the constructor
+<A NAME="g14"></A><CODE>vector</CODE>.  Like <CODE>list</CODE>, it takes any number of arguments and
+returns a vector containing those arguments as elements:
+
+<P><PRE>&gt; (define beatles (vector 'john 'paul 'george 'pete))
+
+&gt; (vector-set! beatles 3 'ringo)
+
+&gt; beatles
+#(JOHN PAUL GEORGE RINGO)
+</PRE>
+
+<P>The procedure <A NAME="g15"></A><CODE>vector-length</CODE> takes a vector as argument and returns the
+number of boxes in the vector.
+
+<P><PRE>&gt; (vector-length beatles)
+4
+</PRE>
+
+<P>The predicate <CODE>equal?</CODE>, which we've used with words and lists, also
+accepts vectors as arguments.  Two vectors are equal if they are the same
+size and all their corresponding elements are equal.  (A list and a vector
+are never equal, even if their elements are equal.)
+
+<P>Finally, the predicate <A NAME="g16"></A><CODE>vector?</CODE> takes anything as argument and returns
+<CODE>#t</CODE> if and only if its argument is a vector.
+
+<P><H2>The Vector Pattern of Recursion</H2>
+
+<P>Here are two procedures that you've seen earlier in this chapter, which do
+something to each element of a vector:
+
+<P><PRE>(define (initialize-lap-vector index)
+  (if (&lt; index 0)
+      'done
+      (begin (vector-set! *lap-vector* index 0)
+	     (initialize-lap-vector (- index 1)))))
+
+(define (shuffle! deck index)
+  (if (&lt; index 0)
+      deck
+      (begin (vector-swap! deck index (random (+ index 1)))
+	     (shuffle! deck (- index 1)))))
+</PRE>
+
+<P>These procedures have a similar structure, like the similarities we found in
+other recursive patterns.  Both of these procedures take an index as an
+argument, and both have
+
+<P><PRE>(&lt; index 0)
+</PRE>
+
+<P>as their base case.  Also, both have, as their recursive case, a
+<CODE>begin</CODE> in which the first action does something to the vector element
+selected by the current index, and the second action is a recursive call
+with the index decreased by one.  These procedures are initially called with
+the largest possible index value.
+
+<P>In some cases it's more convenient to count the index upward from zero:
+
+<P><PRE>(define (<A NAME="g17"></A>list-&gt;vector lst)
+  (l-&gt;v-helper (make-vector (length lst)) lst 0))
+
+(define (l-&gt;v-helper vec lst index)
+  (if (= index (vector-length vec))
+      vec
+      (begin (vector-set! vec index (car lst))
+	     (l-&gt;v-helper vec (cdr lst) (+ index 1)))))
+</PRE>
+
+<P>Since lists are naturally processed from left to right (using
+<CODE>car</CODE> and <CODE>cdr</CODE>), this program must process the vector from left to
+right also.
+
+<P><H2>Vectors versus Lists</H2>
+
+<P>Since we introduced vectors to provide mutability, you may have the
+impression that mutability is the main difference between vectors and
+lists.  Actually, lists are mutable too, although the issues are more
+complicated; that's why we haven't used list mutation in this book.
+
+<P>The most important difference between lists and vectors is that each
+kind of aggregate lends itself to a different style of programming, because
+some operations are faster than others in each.  List programming is
+characterized by two operations: dividing a list into its first element and
+all the rest, and sticking one new element onto the front of a list.  Vector
+programming is characterized by selecting elements in any order, from a
+collection whose size is set permanently when the vector is created.
+
+<P>To make these rather vague descriptions more concrete, here are two
+procedures, one of which squares every number in a list, and the other of
+which squares every number in a vector:
+
+<P><PRE>(define (list-square numbers)
+  (if (null? numbers)
+      '()
+      (cons (square (car numbers))
+	    (list-square (cdr numbers)))))
+
+(define (vector-square numbers)
+  (vec-sq-helper (make-vector (vector-length numbers))
+		 numbers
+		 (- (vector-length numbers) 1)))
+
+(define (vec-sq-helper new old index)
+  (if (&lt; index 0)
+      new
+      (begin (vector-set! new index (square (vector-ref old index)))
+	     (vec-sq-helper new old (- index 1)))))
+</PRE>
+
+<P>In the list version, the intermediate stages of the algorithm
+deal with lists that are smaller than the original argument.  Each recursive
+invocation &quot;strips off&quot; one element of its argument and &quot;glues on&quot; one
+extra element in its return value.  In the vector version, the returned
+vector is created, at full size, as the first step in the algorithm; its
+component parts are filled in as the program proceeds.
+
+<P>This example can plausibly be done with either vectors or lists, so we've
+used it to compare the two techniques.  But some algorithms fit most
+naturally with one kind of aggregate and would be awkward and slow using
+the other kind.  The swapping of pairs of elements in the shuffling
+algorithm would be much harder using lists, while mergesort would be harder
+using vectors.
+
+<P>The best way to understand these differences in style is to know the
+operations that are most efficient for each kind of aggregate.  In each
+case, there are certain operations that can be done in one small unit of
+time, regardless of the number of elements in the aggregate, while other
+operations take more time for more elements.  The <EM>constant time</EM>
+operations for lists are <CODE>cons</CODE>, <CODE>car</CODE>, <CODE>cdr</CODE>, and <CODE>null?</CODE>;
+the ones for vectors are <CODE>vector-ref</CODE>, <CODE>vector-set!</CODE>, and <CODE>vector-length</CODE>.<A NAME="text5" HREF="vectors.html#ft5">[5]</A>  And if you reread the
+squaring programs, you'll find that these are precisely the operations
+they use.
+
+<P>We might have used <CODE>list-ref</CODE> in the list version, but we didn't, and
+Scheme programmers usually don't, because we know that it would be slower.
+Similarly, we could implement something like <CODE>cdr</CODE> for vectors, but that
+would be slow, too, since it would have to make a one-smaller vector and
+copy the elements one at a time.  There are two possible morals to this
+story, and they're both true:  First, programmers invent and learn the
+algorithms that make sense for whatever data structure is available.  Thus
+we have well-known programming patterns, such as the <CODE>filter</CODE> pattern,
+appropriate for lists, and different patterns appropriate for vectors.
+Second, programmers choose which data structure to use depending on what
+algorithms they need.  If you want to shuffle cards, use a vector, but if
+you want to split the deck into a bunch of variable-size piles, lists might
+be more appropriate.  In general, vectors are good at selecting elements in
+arbitrary order from a fixed-size collection; lists are good only at
+selecting elements strictly from left to right, but they can vary in size.
+
+<P>In this book, despite what we're saying here about efficiency, we've
+generally tried to present algorithms in the way that's easiest to
+understand, even when we know that there's a faster way.  For example, we've
+shown several recursive procedures in which the base case test was
+
+<P><PRE>(= (count sent) 1)
+</PRE>
+
+<P>If we were writing the program for practical use, rather than for
+a book, we would have written
+
+<P><PRE>(empty? (butfirst sent))
+</PRE>
+
+<P>because we know that <CODE>empty?</CODE> and <CODE>butfirst</CODE> are both
+constant time operations (because for sentences they're implemented as
+<CODE>null?</CODE> and <CODE>cdr</CODE>), while <CODE>count</CODE> takes a long time for large
+sentences.  But the version using <CODE>count</CODE> makes the intent
+clearer.<A NAME="text6" HREF="vectors.html#ft6">[6]</A>
+
+<P><H2>State, Sequence, and Effects</H2>
+
+<P>Effects, sequence, and state are three sides of the same
+coin.<A NAME="text7" HREF="vectors.html#ft7">[7]</A>
+
+<P>In Chapter 20 we explained the connection between effect (printing
+something on the screen) and sequence: It matters what you print first.
+We also noted that there's no benefit to a sequence of expressions unless
+those expressions produce an effect, since the values returned by all but
+the last expression are discarded.
+
+<P>In this chapter we've seen another connection.  The way our vector programs
+maintain state information is by carrying out effects, namely, <CODE>vector-set!</CODE> invocations.  Actually, <EM>every</EM> effect changes some kind
+of state; if not in Scheme's memory, then on the computer screen or in a
+file.
+
+<P>The final connection to be made is between state and sequence.  Once a
+program maintains state, it matters whether some computation is carried out
+before or after another computation that changes the state.  The example at
+the beginning of this chapter in which an expression had different results
+before and after defining a variable illustrates this point.  As another
+example, if we evaluate <CODE>(lap 1)</CODE> 200 times and <CODE>(lap 2)</CODE> 200 times,
+the program's determination of the winner of the race depends on whether the
+last evaluation of <CODE>(lap 1)</CODE> comes before or after the last invocation
+of <CODE>(lap 2)</CODE>.
+
+<P>Because these three ideas are so closely connected, the names <EM>sequential programming</EM> (emphasizing sequence) and <EM><A NAME="g18"></A><A NAME="g19"></A>imperative programming</EM> (emphasizing effect) are both used to
+refer to a style of programming that uses all three.  This style is in
+contrast with functional programming, which, as you know, uses none of them.
+
+<P>Although functional and sequential programming are, in a sense, opposites,
+it's perfectly possible to use both styles within one program, as we pointed
+out in the tic-tac-toe program of Chapter 20.  We'll show more such hybrid
+programs in the following chapters.
+
+<P><H2>Pitfalls</H2>
+
+<P>Don't forget that the first element of a vector is number zero, and
+there is no element whose index number is equal to the length of the
+vector.  (Although these points are equally true for lists, it doesn't often
+matter, because we rarely select the elements of a list by number.)  In
+particular, in a vector recursion, if zero is the base case, then there's
+probably still one element left to process.
+
+<P>Try the following experiment:
+
+<P><PRE>&gt; (define dessert (vector 'chocolate 'sundae))
+&gt; (define two-desserts (list dessert dessert))
+&gt; (vector-set! (car two-desserts) 1 'shake)
+&gt; two-desserts
+(#(CHOCOLATE SHAKE) #(CHOCOLATE SHAKE))
+</PRE>
+
+<P>You might have expected that after asking to change one word in
+<CODE>two-desserts</CODE>, the result would be
+
+<P><PRE>(#(CHOCOLATE SHAKE) #(CHOCOLATE SUNDAE))
+</PRE>
+
+<P>However, because of the way we created <CODE>two-desserts</CODE>, both of
+its elements are the <EM>same</EM> vector.  If you think of a list as a
+collection of things, it's strange to imagine the very same thing in two
+different places, but that's the situation.  If you want to have two separate
+vectors that happen to have the same values in their elements, but are
+individually mutable, you'd have to say
+
+<P><PRE>&gt; (define two-desserts (list (vector 'chocolate 'sundae)
+			     (vector 'chocolate 'sundae)))
+&gt; (vector-set! (car two-desserts) 1 'shake)
+&gt; two-desserts
+(#(CHOCOLATE SHAKE) #(CHOCOLATE SUNDAE))
+</PRE>
+
+<P>Each invocation of <CODE>vector</CODE> or <CODE>make-vector</CODE> creates a
+new, independent vector.
+
+<P><H2>Exercises</H2>
+
+<P>
+
+<P><EM>Do not solve any of the following exercises by converting a
+vector to a list, using list procedures, and then converting the result back
+to a vector.</EM>
+
+<P><B>23.1</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g20"></A>sum-vector</CODE> that takes a vector full of
+numbers as its argument and returns the sum of all the numbers:
+
+<P><PRE>&gt; (sum-vector '#(6 7 8))
+21
+</PRE>
+
+
+<P>
+<B>23.2</B>&nbsp;&nbsp;Some versions of Scheme provide a procedure <A NAME="g21"></A><CODE>vector-fill!</CODE> that takes a
+vector and anything as its two arguments.  It replaces every element of the
+vector with the second argument, like this:
+
+<P><PRE>&gt; (define vec (vector 'one 'two 'three 'four))
+
+&gt; vec
+#(one two three four)
+
+&gt; (<A NAME="g22"></A>vector-fill! vec 'yeah)
+
+&gt; vec
+#(yeah yeah yeah yeah)
+</PRE>
+
+<P>Write <CODE>vector-fill!</CODE>.  (It doesn't matter what value it
+returns.)
+
+
+<P>
+<B>23.3</B>&nbsp;&nbsp;Write a function <CODE><A NAME="g23"></A>vector-append</CODE> that works just like regular <CODE>append</CODE>, but for vectors:
+
+<P><PRE>&gt; (vector-append '#(not a) '#(second time))
+#(not a second time)
+</PRE>
+
+
+<P>
+<B>23.4</B>&nbsp;&nbsp;Write <CODE>vector-&gt;list</CODE>.
+
+
+<P>
+<B>23.5</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g24"></A>vector-map</CODE> that takes two arguments, a
+function and a vector, and returns a new vector in which each box contains
+the result of applying the function to the corresponding element of the
+argument vector.
+
+
+<P>
+<B>23.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g25"></A>vector-map!</CODE> that takes two arguments, a
+function and a vector, and modifies the argument vector by replacing each
+element with the result of applying the function to that element.  Your
+procedure should return the same vector.
+
+
+<P>
+<B>23.7</B>&nbsp;&nbsp;Could you write <CODE>vector-filter</CODE>?  How about <CODE>vector-filter!</CODE>?
+Explain the issues involved.
+
+
+<P>
+<B>23.8</B>&nbsp;&nbsp;Modify the <CODE>lap</CODE> procedure to print &quot;Car 34 wins!&quot; when car 34
+completes its 200th lap.  (A harder but more correct modification is
+to print the message only if no other car has completed 200 laps.)
+
+
+<P>
+<B>23.9</B>&nbsp;&nbsp;<A NAME="itstrivial"></A>
+Write a procedure <CODE><A NAME="g26"></A>leader</CODE> that says which car is in the lead
+right now.
+
+
+<P>
+<B>23.10</B>&nbsp;&nbsp;Why doesn't this solution to Exercise <A HREF="vectors.html#itstrivial">23.9</A> work?
+
+<P><PRE>(define (leader)
+  (leader-helper 0 1))
+
+(define (leader-helper leader index)
+  (cond ((= index 100) leader)
+	((&gt; (lap index) (lap leader))
+	 (leader-helper index (+ index 1)))
+	(else (leader-helper leader (+ index 1)))))
+</PRE>
+
+
+<P>
+<B>23.11</B>&nbsp;&nbsp;In some restaurants, the servers use computer terminals to keep track of
+what each table has ordered.  Every time you order more food, the server
+enters your order into the computer.  When you're ready for the check, the
+computer prints your bill.
+
+<P>You're going to write two procedures, <CODE><A NAME="g27"></A>order</CODE> and <CODE><A NAME="g28"></A>bill.</CODE> <CODE>Order</CODE> takes a table number and an item as arguments and
+adds the cost of that item to that table's bill.  <CODE>Bill</CODE> takes a table
+number as its argument, returns the amount owed by that table, and resets
+the table for the next customers.  (Your <CODE>order</CODE> procedure can examine a
+global variable <CODE>*menu*</CODE> to find the price of each item.)
+
+<P><PRE>&gt; (order 3 'potstickers)
+
+&gt; (order 3 'wor-won-ton)
+
+&gt; (order 5 'egg-rolls)
+
+&gt; (order 3 'shin-shin-special-prawns)
+
+&gt; (bill 3)
+13.85
+
+&gt; (bill 5)
+2.75
+</PRE>
+
+
+<P>
+<B>23.12</B>&nbsp;&nbsp;Rewrite selection sort (from Chapter 15) to sort a vector.  This can
+be done in a way similar to the procedure for shuffling a deck:  Find
+the smallest element of the vector and exchange it (using <CODE>vector-swap!</CODE>) with the value in the first box.  Then find the smallest
+element not including the first box, and exchange that with the second box,
+and so on.  For example, suppose we have a vector of numbers:
+
+<P><PRE>#(23 4 18 7 95 60)
+</PRE>
+
+<P>Your program should transform the vector through these
+intermediate stages:
+
+<P><PRE>#(4 23 18 7 95 60)   ; exchange 4 with 23
+#(4 7 18 23 95 60)   ; exchange 7 with 23
+#(4 7 18 23 95 60)   ; exchange 18 with itself
+#(4 7 18 23 95 60)   ; exchange 23 with itself
+#(4 7 18 23 60 95)   ; exchange 60 with 95
+</PRE>
+
+
+<P>
+<B>23.13</B>&nbsp;&nbsp;Why doesn't this work?
+
+<P><PRE>(define (vector-swap! vector index1 index2)
+  (vector-set! vector index1 (vector-ref vector index2))
+  (vector-set! vector index2 (vector-ref vector index1)))
+</PRE>
+
+
+<P>
+<B>23.14</B>&nbsp;&nbsp;Implement a two-dimensional version of vectors.  (We'll call one of these
+structures a <EM>matrix.</EM>) The implementation will use a vector of
+vectors.  For example, a three-by-five matrix will be a three-element
+vector, in which each of the elements is a five-element vector.  Here's
+how it should work:
+<A NAME="twodimvect"></A>
+
+<P><PRE>&gt; (define m (make-matrix 3 5))
+
+&gt; (matrix-set! m 2 1 '(her majesty))
+
+&gt; (matrix-ref m 2 1)
+(HER MAJESTY)
+</PRE>
+
+<P>
+<B>23.15</B>&nbsp;&nbsp;Generalize Exercise <A HREF="vectors.html#twodimvect">23.14</A> by implementing an <EM>array</EM>
+structure that can have any number of dimensions.  Instead of taking two
+numbers as index arguments, as the matrix procedures do, the array
+procedures will take one argument, a <EM>list</EM> of numbers.  The number of
+numbers is the number of dimensions, and it will be constant for any particular
+array.  For example, here is a three-dimensional array (4&times;5&times;6):
+<A NAME="arrays"></A>
+
+<P><PRE>&gt; (define a1 (make-array '(4 5 6)))
+
+&gt; (array-set! a1 '(3 2 3) '(the end))
+</PRE>
+
+<P>
+<B>23.16</B>&nbsp;&nbsp;We want to reimplement sentences as vectors instead of lists.
+
+<P>(a) Write versions of <CODE>sentence</CODE>, <CODE>empty?</CODE>, <CODE>first</CODE>,
+<CODE>butfirst</CODE>, <CODE>last</CODE>, and <CODE>butlast</CODE> that use vectors.  Your
+selectors need only work for sentences, not for words.
+
+<P><PRE>&gt; (sentence 'a 'b 'c)
+#(A B C)
+
+&gt; (butfirst (sentence 'a 'b 'c))
+#(B C)
+</PRE>
+
+<P>(You don't have to make these procedures work on lists as well as
+vectors!)
+
+<P>(b) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.
+
+<P><PRE>(define (praise stuff)
+  (sentence stuff '(is good)))
+</PRE>
+
+<P>(c) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.
+
+<P><PRE>(define (praise stuff)
+  (sentence stuff 'rules!))
+</PRE>
+
+<P>(d) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.  If so, is there some
+optional rewriting that would improve its performance?
+
+<P><PRE>(define (item n sent)
+  (if (= n 1)
+      (first sent)
+      (item (- n 1) (butfirst sent))))
+</PRE>
+
+<P>
+<P>(e) Does the following program still work with the new
+implementation of sentences?  If not, fix the program.  If so, is there some
+optional rewriting that would improve its performance?
+
+<P><PRE>(define (every fn sent)
+  (if (empty? sent)
+      sent
+      (sentence (fn (first sent))
+		(every fn (butfirst sent)))))
+</PRE>
+
+<P>(f) In what ways does using vectors to implement sentences affect
+the speed of the selectors and constructor?  Why do you think we chose to
+use lists?
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="vectors.html#text1">[1]</A> The Scheme standard says that the initial contents of the
+boxes is &quot;unspecified.&quot; That means that the result depends on the
+particular version of Scheme you're using.  It's a bad idea to try to
+examine the contents of a box before putting something in it.<P>
+<A NAME="ft2" HREF="vectors.html#text2">[2]</A> In some versions of Scheme, <CODE>make-vector</CODE> can take an
+optional argument specifying an initial value to put in every box.  In those
+versions, we could just say
+
+<P><PRE>(define *lap-vector* (make-vector 100 0))
+</PRE>
+
+<P>without having to use the initialization procedure.<P>
+<A NAME="ft3" HREF="vectors.html#text3">[3]</A> That's what we mean by &quot;non-functional,&quot; not that it doesn't
+work!<P>
+<A NAME="ft4" HREF="vectors.html#text4">[4]</A> We could get around
+this problem in a different way:
+
+<P><PRE>(define (card-list)
+  (every (lambda (suit) (every (lambda (rank) (word suit rank))
+			       '(a 2 3 4 5 6 7 8 9 10 j q k)))
+	 '(h s d c)))
+</PRE>
+
+<P>In this version, we're taking advantage of the fact that our
+sentence data type was defined in a way that prevents the creation of
+sublists.  A sentence of cards is a good representation for the deck.
+However, with this approach we are mixing up the list and sentence data
+types, because later we're going to invoke <CODE>list-&gt;vector</CODE> with this deck
+of cards as its argument.  If we use sentence tools such as <CODE>every</CODE> to
+create the deck, then the procedure <CODE>card-list</CODE> should really be called
+<CODE>card-sentence</CODE>.
+
+<P>What difference does it make?  The <CODE>every</CODE> version works fine, as long
+as sentences are implemented as lists, so that <CODE>list-&gt;vector</CODE> can be
+applied to a sentence.  But the point about abstract data types such as
+sentences is to avoid making assumptions about their implementation.  If
+for some reason we decided to change the internal representation of
+sentences, then <CODE>list-&gt;vector</CODE> could no longer be applied to a sentence.
+Strictly speaking, if we're going to use this trick, we need a separate
+conversion procedure <CODE>sentence-&gt;vector</CODE>.
+
+<P>Of course, if you don't mind a little typing, you can avoid this whole issue
+by having a quoted list of all 52 cards built into the definition of <CODE>card-list</CODE>.
+<P>
+<A NAME="ft5" HREF="vectors.html#text5">[5]</A> Where did this information come from?  Just take our
+word for it.  In later courses you'll study how vectors and lists are
+implemented, and then there will be reasons.<P>
+<A NAME="ft6" HREF="vectors.html#text6">[6]</A> For words, it turns out, the <CODE>count</CODE> version is faster,
+because words behave more like vectors than like lists.<P>
+<A NAME="ft7" HREF="vectors.html#text7">[7]</A> &hellip; to coin a phrase.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch22/files.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch24/spread.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch24/spread.html b/js/games/nluqo.github.io/~bh/ssch24/spread.html
new file mode 100644
index 0000000..4587d70
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch24/spread.html
@@ -0,0 +1,592 @@
+<P>
+
+<P>
+<CENTER><IMG SRC="../ss-pics/spread.jpg" ALT="figure: spread"></CENTER><A NAME="excel"></A><P><CENTER>Spreadsheet display from Microsoft
+Excel
+</CENTER><P>
+
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 24: Example: A Spreadsheet Program</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 24</H2>
+<H1>Example: A Spreadsheet Program</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch24.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch23/vectors.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch25/spread-implement.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>Until now, you may have felt that the programs you've been writing in Scheme
+don't act like other computer programs you've used.  In this chapter and the
+next, we're going to tie together almost everything you've learned so far to
+write a <EM>spreadsheet</EM> program, just like the ones accountants use.
+
+<P>This chapter describes the operation of the spreadsheet program, as a user
+manual would.  The next chapter explains how the program is implemented in
+Scheme.
+
+<P>You can load our program into Scheme by typing
+
+<P><PRE>(load &quot;spread.scm&quot;)
+</PRE>
+
+<P>To start the program, invoke the procedure <CODE>spreadsheet</CODE> with no
+arguments; to quit the spreadsheet program, type <CODE>exit</CODE>.
+
+<P>
+<P>A spreadsheet is a program that displays information in two dimensions on
+the screen.  It can also compute some of the information automatically.  Below
+is an example of a display from our spreadsheet program.  The
+display is a rectangle of information with six columns and 20 rows.  The
+intersection of a row with a column is called a <EM>cell;</EM> for
+example, the cell <CODE>c4</CODE> contains the number 6500.  The column letters
+(<CODE>a</CODE> through <CODE>f</CODE>) and row numbers are provided by the spreadsheet
+program, as is the information on the bottom few lines, which we'll talk
+about later.  (The <CODE>??</CODE> at the very bottom is the spreadsheet prompt;
+you type commands on that line.)  We typed most of the entries in the cells,
+using commands such as
+
+<P><PRE>(put 6500 c4)
+</PRE>
+
+<P>
+<PRE>    -----a----  -----b----  -----c----  -----d----  -----e----  -----f----
+ 1  NAME        NUMBER      PRICE       GROSS       DISCOUNT    NET
+ 2  Widget           40.00        1.27       50.80        0.00       50.80
+ 3  Thingo          203.00       14.95 &gt;   3034.85&lt;      15.00     2579.62
+ 4  Computer          1.00     6500.00     6500.00        8.00     5980.00
+ 5  Yacht           300.00   200000.00  60000000.+        0.00  60000000.+
+ 6
+ 7
+ 8
+ 9  TOTALS      60009585.+              60008610.+
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+d3:  3034.85
+(* b3 c3)
+??
+</PRE>
+
+<P>What's most useful about a spreadsheet is its ability to compute some of the
+cell values itself.  For example, every number in column <CODE>d</CODE> is the
+product of the numbers in columns <CODE>b</CODE> and <CODE>c</CODE> of the same row.
+Instead of putting a particular number in a particular cell, we put a <EM>formula</EM> in all the cells of the column at once.<A NAME="text1" HREF="spread.html#ft1">[1]</A> This implies that when we change the value of one cell, other
+cells will be updated automatically.  For example, if we put the number 5
+into cell <CODE>b4</CODE>, the spreadsheet will look like this:
+
+<P>
+<PRE>    -----a----  -----b----  -----c----  -----d----  -----e----  -----f----
+ 1  NAME        NUMBER      PRICE       GROSS       DISCOUNT    NET
+ 2  Widget           40.00        1.27       50.80        0.00       50.80
+ 3  Thingo          203.00       14.95 &gt;   3034.85&lt;      15.00     2579.62
+ 4  Computer          5.00     6500.00    32500.00        8.00    29900.00
+ 5  Yacht           300.00   200000.00  60000000.+        0.00  60000000.+
+ 6
+ 7
+ 8
+ 9  TOTALS      60035585.+              60032530.+
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+d3:  3034.85
+(* b3 c3)
+??
+</PRE>
+
+<P>In addition to cell <CODE>b4</CODE>, the spreadsheet program has changed
+the values in <CODE>d4</CODE>, <CODE>f4</CODE>, <CODE>d9</CODE>, and <CODE>f9</CODE>.
+
+<P>One detail we haven't mentioned so far is that at any moment there is one
+<EM>selected</EM> cell.  Right now cell <CODE>d3</CODE> is selected.  You can tell
+that because of the arrowheads surrounding it in the display, like this:
+
+<P><PRE>&gt;   3034.85<
+</PRE>
+
+<P>Also, the lines
+
+<P><PRE>d3:  3034.85
+(* b3 c3)
+</PRE>
+
+<P>at the bottom of the screen mean that cell <CODE>d3</CODE> is selected,
+its value is <CODE>3034.85</CODE>, and its formula is <CODE>(* b3 c3)</CODE>.
+
+<P><H2>Limitations of Our Spreadsheet</H2>
+
+<P>In commercial spreadsheet programs, you generally select a cell with arrow
+keys or by clicking on it with a mouse.  The highlighted cell is typically
+displayed in inverse video, and there might be thin lines drawn in a grid on
+the screen to separate the cells.
+
+<P>Our program leaves all this out for two reasons.  First, details like this
+don't add very much to what you learn from studying the program, but they
+take a disproportionate effort to get exactly right.  Second, the facilities
+needed in Scheme to control screen graphics are specific to each model of
+computer.  We couldn't write a single program that would work in all versions
+of Scheme.  (A program that works in all versions is called <EM>portable.</EM>)
+
+<P>Similarly, our program prints an entire new screenful of information after
+every command.  A better program would change only the parts of the screen
+for which the corresponding values have changed.  But there is no uniform
+way to ask Scheme to print at a particular position on the screen; some
+versions of Scheme can do that, but not using standard procedures.
+
+<P>Also, of course, if you spend $500 on a spreadsheet program, it will have
+hundreds of bells and whistles, such as graphing, printing your spreadsheet
+on paper, changing the widths of columns, and undoing the last command you
+typed.  But each of those is a straightforward extension.  We didn't write
+them all because there are only two of us and we're not getting paid
+enough!  You'll add some features as exercises.
+
+<P><H2>Spreadsheet Commands</H2>
+
+<P>When you begin the spreadsheet program, you will see an empty grid and a
+prompt at the bottom of the screen.
+
+<P>Most spreadsheet programs are controlled using single-keystroke commands (or
+equivalent mouse clicks).  That's another thing we can't do entirely
+portably in Scheme.  We've tried to compromise by including one-letter
+command names in our program, but you do have to type the <CODE>return</CODE> or
+<CODE>enter</CODE> key after each command.  The single-letter commands are for
+simple operations, such as selecting a cell one position up, down, left, or
+right from the previously selected cell.
+
+<P>For more complicated commands, such as entering values, a longer notation
+is obviously required.  In our program we use a notation that looks very
+much like that of a Scheme program:  A command consists of a name and some
+arguments, all enclosed in parentheses.  However, the spreadsheet commands
+are <EM>not</EM> Scheme expressions.  In particular, the arguments are not
+evaluated as they would be in Scheme.  For example, earlier we said
+
+<P><PRE>(put 6500 c4)
+</PRE>
+
+<P>If this were a Scheme expression, we would have had to quote the
+second argument:
+
+<P><PRE>(put 6500 'c4)                               ;; wrong!
+</PRE>
+
+<P><H2>Moving the Selection</H2>
+
+<P>There are four one-letter commands to move to a new selected cell:
+
+<P>
+<P><TABLE><TR><TH>Command Name&nbsp;&nbsp;<TH>Meaning
+<TR><TR><TD><CODE>f</CODE><TD>move Forward (right)
+<TR><TD><CODE>b</CODE><TD>move Back (left)
+<TR><TD><CODE>n</CODE><TD>move to Next line (down)
+<TR><TD><CODE>p</CODE><TD>move to Previous line (up)
+</TABLE>
+
+(These command names are taken from EMACS, the industry
+standard text editor.)
+
+<P>If you want to move one step, you can just type the letter <CODE>f</CODE>, <CODE>b</CODE>,
+<CODE>n</CODE>, or <CODE>p</CODE> on a line by itself.  If you want to move farther, you
+can invoke the same commands in Scheme notation, with the distance to move
+as an argument:
+
+<P><PRE>?? (f 4)
+</PRE>
+
+<P>Another way to move the selection is to choose a particular cell by name.
+The command for this is called <CODE>select</CODE>:
+
+<P><PRE>(select e12)
+</PRE>
+
+<P>The spreadsheet grid includes columns <CODE>a</CODE> through <CODE>z</CODE> and rows <CODE>1</CODE> through <CODE>30</CODE>.  Not all of it can fit on the screen at once.  If you
+select a cell that's not shown on the screen, then the program will shift
+the entire screen display so that the rows and columns shown will include
+the newly selected cell.
+
+<P><H2>Putting Values in Cells</H2>
+
+<P>As we've already seen, the <CODE>put</CODE> command is used to put a value in a
+particular cell.  It can be used with either one or two arguments.  The
+first (or only) argument is a value.  If there is a second argument, it is
+the (unquoted) name of the desired cell.  If not, the currently selected
+cell will be used.
+
+<P>A value can be a number or a quoted word.  (As in Scheme programming, most
+words can be quoted using the single-quote notation <CODE>'word</CODE>, but words
+that include spaces, mixed-case letters, or some punctuation characters must
+be quoted using the double-quote string notation <CODE>&quot;Widget&quot;</CODE>.)
+However, non-numeric words are used only as labels; they can't provide
+values for formulas that compute values in other cells.
+
+<P>The program displays numbers differently from labels.  If the value in a
+cell is a number, it is displayed at the right edge of its cell, and it is
+shown with two digits following the decimal point.  (Look again at the
+screen samples earlier in this chapter.)  If the value is a non-numeric word,
+it is displayed at the left edge of its cell.
+
+<P>If the value is too wide to fit in the cell (that is, more than ten
+characters wide), then the program prints the first nine characters followed
+by a plus sign (<CODE>+</CODE>) to indicate that there is more information than is
+visible.  (If you want to see the full value in such a cell, select it and
+look at the bottom of the screen.)
+
+<P>To erase the value from a cell, you can put an empty list <CODE>()</CODE> in it.
+With this one exception, lists are not allowed as cell values.
+
+<P>It's possible to put a value in an entire row or column, instead of just one
+cell.  To do this, use the row number or the column letter as the second
+argument to <CODE>put</CODE>.  Here's an example:
+
+<P><PRE>(put 'peter d)
+</PRE>
+
+<P>This command will put the word <CODE>peter</CODE> into all the cells in
+column <CODE>d</CODE>.  (Remember that not all the cells are visible at once, but
+even the invisible ones are affected.  Cells <CODE>d1</CODE> through <CODE>d30</CODE> are
+given values by this command.)
+
+<P>What happens if you ask to fill an entire row or column at once, but some of
+the cells already have values?  In this case, only the vacant cells will be
+affected.  The only exception is that if the <EM>value</EM> you are using is
+the empty list, indicating that you want to erase old values, then the
+entire row or column is affected.  (So if you put a formula in an entire row
+or column and then change your mind, you must erase the old one before you
+can install a new one.)
+
+<P><H2>Formulas</H2>
+
+<P>We mentioned earlier that the value of one cell can be made to depend on the
+values of other cells.  This, too, is done using the <CODE>put</CODE> command.  The
+difference is that instead of putting a constant value into a cell, you can
+put a formula in the cell.  Here's an example:
+
+<P><PRE>(put (+ b3 c5) d6)
+</PRE>
+
+<P>This command says that the value in cell <CODE>d6</CODE> should be the
+sum of the values in <CODE>b3</CODE> and <CODE>c5</CODE>.  The command may or may not have
+any immediately visible effect; it depends on whether those two cells
+already have values.  If so, a value will immediately appear in <CODE>d6</CODE>;
+if not, nothing happens until you put values into <CODE>b3</CODE> and <CODE>c5</CODE>.
+
+<P>If you erase the value in a cell, then any cells that depend on it are
+also erased.  For example, if you erase the value in <CODE>b3</CODE>, then the
+value in <CODE>d6</CODE> will disappear also.
+
+<P>So far we've seen only one example of a formula; it asks for the sum of
+two cells.  Formulas, like Scheme expressions, can include invocations of
+functions with sub-formulas as the arguments.
+
+<P><PRE>(put (* d6 (+ b4 92)) a3)
+</PRE>
+
+<P>The &quot;atomic&quot; formulas are constants (numbers or quoted words)
+and cell references (such as <CODE>b4</CODE> in our example).
+
+<P>Not every Scheme function can be used in a formula.  Most important, there
+is no <CODE>lambda</CODE> in the spreadsheet language, so you can't invent your own
+functions.  Also, since formulas can be based only on numbers, only the
+numeric functions can be used.
+
+<P>Although we've presented the idea of putting a formula in a cell separately
+from the idea of putting a value in a cell, a value is really just a
+particularly simple formula.  The program makes no distinction internally
+between these two cases.  (Since a constant formula doesn't depend on any
+other cells, its value is always displayed right away.)
+
+<P>We mentioned that a value can be <CODE>put</CODE> into an entire row or column at
+once.  The same is true of formulas in general.  But this capability gives
+rise to a slight complication.  The typical situation is that each cell in
+the row or column should be computed using the same algorithm, but based on
+different values.  For example, in the spreadsheet at the beginning of the
+chapter, every cell in column <CODE>d</CODE> is the product of a cell in column
+<CODE>b</CODE> and a cell in column <CODE>c</CODE>, but not the <EM>same</EM> cell for
+every row.  If we used a formula like
+
+<P><PRE>(put (* b2 c2) d)
+</PRE>
+
+<P>then every cell in column <CODE>d</CODE> would have the value <CODE>50.80</CODE>.
+Instead we want the equivalent of
+
+<P><PRE>(put (* b2 c2) d2)
+(put (* b3 c3) d3)
+(put (* b4 c4) d4)
+</PRE>
+
+<P>and so on.  The spreadsheet program meets this need by providing
+a notation for cells that indicates position relative to the cell being
+computed, rather than by name.  In our case we could say
+
+<P><PRE>(put (* (cell b) (cell c)) d)
+</PRE>
+
+<P><CODE>Cell</CODE> can take one or two arguments.  In this example we've used the
+one-argument version.  The argument must be either a letter, to indicate a
+column, or a number between 1 and 30, to indicate a row.  Whichever
+dimension (row or column) is <EM>not</EM> specified by the argument will be
+the same as that of the cell being computed.  So, for example, if we are
+computing a value for cell <CODE>d5</CODE>, then <CODE>(cell b)</CODE> refers to cell <CODE>b5</CODE>, but <CODE>(cell 12)</CODE> would refer to cell <CODE>d12</CODE>.
+
+<P>The one-argument form of <CODE>cell</CODE> is adequate for many situations, but not
+if you want a cell to depend on one that's both in a different row and in a
+different column.  For example, suppose you wanted to compute the change
+of a number across various columns, like this:
+
+<P>
+<P><PRE>    -----a----  -----b----  -----c----  -----d----  -----e----  -----f----
+ 1  MONTH       January     February    March       April       May
+ 2  PRICE            70.00       74.00       79.00       76.50       81.00
+ 3  CHANGE                        4.00        5.00       -2.50        4.50
+</PRE>
+
+<P>
+<P>The value of cell <CODE>d3</CODE>, for example, is a function of the
+values of cells <CODE>d2</CODE> and <CODE>c2</CODE>.
+
+<P>To create this spreadsheet, we said
+
+<P><PRE>(put (- (cell 2) (cell &lt;1 2)) 3)
+</PRE>
+
+<P>The first appearance of <CODE>cell</CODE> asks for the value of the cell
+immediately above the one being calculated.  (That is, it asks for the cell
+in row 2 of the same column.)  But the one-argument notation doesn't allow
+us to ask for the cell above and to the left.
+
+<P>In the two-argument version, the first argument determines the column and
+the second determines the row.  Each argument can take any of several
+forms.  It can be a letter (for the column) or number (for the row), to
+indicate a specific column or row.  It can be an asterisk (<CODE>*</CODE>) to
+indicate the same column or row as the cell being calculated.  Finally,
+either argument can take the form <CODE>&lt;3</CODE> to indicate a cell three before
+the one being calculated (above or to the left, depending on whether this is
+the row or column argument) or <CODE>&gt;5</CODE> to indicate a cell five after this
+one (below or to the right).
+
+<P>So any of the following formulas would have let us calculate the change in
+this example:
+
+<P><PRE>(put (- (cell 2) (cell &lt;1 2)) 3)
+
+(put (- (cell 2) (cell &lt;1 &lt;1)) 3)
+
+(put (- (cell * 2) (cell &lt;1 2)) 3)
+
+(put (- (cell * &lt;1) (cell &lt;1 2)) 3)
+
+(put (- (cell &lt;0 &lt;1) (cell &lt;1 &lt;1)) 3)
+</PRE>
+
+<P>When a formula is put into every cell in a particular row or column, it may
+not be immediately computable for all those cells.  The value for each cell
+will depend on the values of the cells to which the formula refers, and some
+of those cells may not have values.  (If a cell has a non-numeric value,
+that's the same as not having a value at all for this purpose.)  New values
+are computed only for those cells for which the formula is computable.  For
+example, cell <CODE>b3</CODE> in the monthly change display has the formula <CODE>(- b2 a2)</CODE>, but the value of cell <CODE>a2</CODE> is the label <CODE>PRICE</CODE>, so no
+value is computed for <CODE>b3</CODE>.
+
+<P><H2>Displaying Formula Values</H2>
+
+<P>Formulas can be used in two ways.  We've seen that a formula can be
+associated with a cell, so that changes to one cell can automatically
+recompute the value of another.  You can also type a formula directly
+to the spreadsheet prompt, in which case the value of the formula will
+be shown at the bottom of the screen.  In a formula used in this way,
+cell references relative to &quot;the cell being computed&quot; refer instead to the
+selected cell.
+
+<P><H2>Loading Spreadsheet Commands from a File</H2>
+
+<P>Sometimes you use a series of several spreadsheet commands to set up some
+computation.  For example, we had to use several commands such as
+
+<P><PRE>(put &quot;Thingo&quot; a3)
+</PRE>
+
+<P>to set up the sample spreadsheet displays at the beginning of this
+chapter.
+
+<P>If you want to avoid retyping such a series of commands, you can put the
+commands in a file using a text editor.  Then, in the spreadsheet program,
+use the command
+
+<P><PRE>(load &quot;<EM>filename</EM>&quot;)
+</PRE>
+
+<P>This looks just like Scheme's <CODE>load</CODE> (on purpose), but it's
+not the same thing; the file that it loads must contain spreadsheet
+commands, not Scheme expressions.  It will list the commands from the file
+as it carries them out.
+
+<P><H2>Application Programs and Abstraction</H2>
+
+<P>We've talked throughout this book about the importance of abstraction,
+the act of giving a name to some process or structure.  Writing an
+application program can be seen as the ultimate in abstraction.  The user of
+the program is encouraged to think in a vocabulary that reflects the tasks
+for which the program is used, rather than the steps by which the program
+does its work.  Some of these names are explicitly used to control the
+program, either by typing commands or by selecting named choices from a
+menu.  Our spreadsheet program, for example, uses the name <CODE>put</CODE> for the
+task of putting a formula into a cell.  The algorithm used by the <CODE>put</CODE>
+command is quite complicated, but the user's picture of the command is
+simple.  Other names are not explicitly used to control the program;
+instead, they give the user a <EM>metaphor</EM> with which to think
+about the work of the program.  For example, in describing the operation of
+our spreadsheet program, we've talked about rows, columns, cells, and
+formulas.  Introducing this vocabulary in our program <EM>documentation</EM>
+is just as much an abstraction as introducing new procedures in the program
+itself.
+
+<P>In the past we've used procedural abstraction to achieve <EM>generalization</EM> of an algorithm, moving from specific instances to a
+more universal capability, especially when we implemented the higher-order
+functions.  If you've used application programs, though, you've probably
+noticed that in a different sense the abstraction in the program <EM>loses</EM> generality.  For example, a formula in our spreadsheet program can
+operate only on data that are in cells.  The same formula, expressed as a
+Scheme procedure, can get its arguments from anywhere: from reading a file,
+from the keyboard, from a global variable, or from the result of invoking
+some other procedure.
+
+<P>An application program doesn't have to be less general than a programming
+language.  The best application programs are <EM>extensible.</EM> Broadly
+speaking, this means that the programmer has made it possible for the user
+to add capabilities to the program, or modify existing capabilities.  This
+broad idea of extensibility can take many forms in practice.  Some
+kinds of extensibility are more flexible than others; some are easier to use
+than others.  Here are a few examples:
+
+<P>Commercial spreadsheet programs have grown in extensibility.  We mentioned
+that our spreadsheet program allows the user to express a function only as a
+formula attached to a cell.  Modern commercial programs allow the user to
+define a procedure, similar in spirit to a Scheme procedure, that can then
+be used in formulas.
+
+<P>Our program, on the other hand, is extensible in a different sense:  We
+provide the Scheme programs that implement the spreadsheet in a form that
+users can read and modify.  In the next chapter, in fact, you'll be asked to
+extend our spreadsheet.  Most commercial programs are provided in a form
+that computers can read, but people can't.  The provision of human-readable
+programs is an extremely flexible form of extensibility, but not necessarily
+an easy one, since you have to know how to program to take advantage of it.
+
+<P>We have written much of this book using a home computer as a remote terminal
+to a larger computer at work.  The telecommunication program we're using,
+called <EM>Zterm,</EM> has dozens of options.  We can set frivolous things
+like the screen color and the sound used to attract our attention; we can
+set serious things like the file transfer protocol used to &quot;download&quot; a
+chapter for printing at home.  The program has a directory of telephone
+numbers for different computers we use, and we can set the technical details
+of the connection separately for each number.  It's very easy to customize
+the program in all of these ways, because it uses a mouse-driven graphical
+interface.  But the interface is inflexible.  For example, although the
+screen can display thousands of colors, only eight are available in Zterm.
+More important, if we think of an entirely new feature that would require
+a modification to the program, there's no way we can do it.  This program's
+extensibility is the opposite of that in our spreadsheet:  It's very easy
+to use, but limited in flexibility.
+
+<P>We started by saying that the abstraction in an application program runs the
+risk of limiting the program's generality, but that this risk can be
+countered by paying attention to the goal of <EM>extensibility.</EM> The ultimate form of extensibility is to
+provide the full capabilities of a programming language to the user of the
+application program.  This can be done by inventing a special-purpose
+language for one particular application, such as the <EM>Hypertalk</EM>
+language that's used only in the <EM>Hypercard</EM> application program.  Alternatively, the application
+programmer can take advantage of an existing general-purpose language by
+making it available within the program.  You'll see an example soon, in the
+database project, which the user controls by typing expressions at a Scheme
+prompt.  The EMACS text editor is a better-known example that includes a
+Lisp interpreter.
+
+<P><H2>Exercises</H2>
+
+<P>
+
+<P><P>For each of the following exercises, the information to hand in is
+the sequence of spreadsheet commands you used to carry out the assignment.
+You will find the <CODE>load</CODE> command helpful in these exercises.
+
+<P><B>24.1</B>&nbsp;&nbsp;Set up a spreadsheet to keep track of the grades in a course.  Each column
+should be an assignment; each row should be a student.  The last column
+should add the grade points from the individual assignments.  You can make
+predictions about your grades on future assignments
+and see what overall numeric grade each prediction gives you.
+
+
+<P>
+<B>24.2</B>&nbsp;&nbsp;Make a table of tax and tip amounts for a range of possible costs at a
+restaurant.  Column <CODE>a</CODE> should contain the pre-tax amounts, starting at
+50 cents and increasing by 50 cents per row.  (Do this without entering each
+row separately!)  Column <CODE>b</CODE> should compute the tax, based on your
+state's tax rate.  Column <CODE>c</CODE> should compute the 15% tip.  Column <CODE>d</CODE> should add columns <CODE>a</CODE> through <CODE>c</CODE> to get the total cost of the
+meal.  Column <CODE>e</CODE> should contain the same total cost, rounded up to the
+next whole dollar amount.
+
+
+<P>
+<B>24.3</B>&nbsp;&nbsp;Make a spreadsheet containing the values from Pascal's triangle:  Each
+element should be the sum of the number immediately above it and the
+number immediately to its left, except that all of column <CODE>a</CODE> should have
+the value 1, and all of row 1 should have the value 1.
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="spread.html#text1">[1]</A> We did it by
+saying
+
+<P><PRE>(put (* (cell b) (cell c)) d)
+</PRE>
+
+<P>but we aren't going to talk about the details of formulas for a
+while longer.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch23/vectors.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch25/spread-implement.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch25/database b/js/games/nluqo.github.io/~bh/ssch25/database
new file mode 100644
index 0000000..fb6e0fa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch25/database
@@ -0,0 +1,880 @@
+<P>
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme:Project: A Database Program</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Project: A Database Program</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch25.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="spread-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch26/part7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>A <EM>database</EM> is a large file with lots of related data in it.
+For example, you might have a database of your local Chinese restaurants,
+listing their names, their addresses, and how good their potstickers are,
+like this:<A NAME="text0" HREF="database#ft0">[0]</A>
+
+<P><PRE>Name:           Address:                  City:           Potstickers:
+
+Cal's           1866 Euclid               Berkeley        nondescript
+Hunan           924 Sansome               San Francisco   none
+Mary Chung's    464 Massachusetts Avenue  Cambridge       great
+Shin Shin       1715 Solano Avenue        Berkeley        awesome
+TC Garden       2507 Hearst Avenue        Berkeley        doughy
+Yet Wah         2140 Clement              San Francisco   fantastic
+</PRE>
+
+<P>There are six <EM>records</EM> in this database, one for each restaurant.
+Each record contains four pieces of information; we say that the
+database has four <EM>fields.</EM>
+
+<P>A <EM>database program</EM> is a program that can create, store, modify, and
+examine databases.  At the very least, a database program must let you
+create new databases, enter records, and save the database to a file.  More
+sophisticated operations involve sorting the records in a database by a
+particular field, printing out the contents of the database, counting the
+number of records that satisfy a certain condition, taking statistics such as
+averages, and so on.
+
+<P>There are many commercial database programs available; our version will have
+some of the flavor of more sophisticated programs while leaving out a lot of
+the details.
+
+<P><H2>A Sample Session with Our Database</H2>
+
+<P>Most database programs come with their own programming language built in.
+Our database program will use Scheme itself as the language; you will be able
+to perform database commands by invoking Scheme procedures at the Scheme
+prompt.  Here is a sample session with our program:
+
+<P><PRE>&gt; (load &quot;database.scm&quot;)
+#F
+&gt; (new-db &quot;albums&quot; '(artist title year brian-likes?))
+CREATED
+</PRE>
+
+<P>First we loaded the database program, then we created a new
+database called <CODE>&quot;albums&quot;</CODE><A NAME="text1" HREF="database#ft1">[1]</A> with four fields.<A NAME="text2" HREF="database#ft2">[2]</A>
+Let's enter some data:
+
+<P><PRE>&gt; (insert)
+Value for ARTIST--&gt; (the beatles)
+Value for TITLE--&gt; &quot;A Hard Day's Night"
+Value for YEAR--&gt; 1964
+Value for BRIAN-LIKES?--&gt; #t
+Insert another? yes
+Value for ARTIST--&gt; (the zombies)
+Value for TITLE--&gt; &quot;Odessey and Oracle"
+Value for YEAR--&gt; 1967
+Value for BRIAN-LIKES?--&gt; #t
+Insert another? y
+Value for ARTIST--&gt; (frank zappa)
+Value for TITLE--&gt; &quot;Hot Rats"
+Value for YEAR--&gt; 1970
+Value for BRIAN-LIKES?--&gt; #f
+Insert another? y
+Value for ARTIST--&gt; (the beatles)
+Value for TITLE--&gt; &quot;Rubber Soul"
+Value for YEAR--&gt; 1965
+Value for BRIAN-LIKES?--&gt; #t
+Insert another? no
+INSERTED
+</PRE>
+
+<P>(We used strings for the album titles but sentences for the
+artists, partly because one of the titles has an apostrophe in it, but
+mainly just to demonstrate that fields can contain any data type.)
+
+<P>At this point we start demonstrating features that aren't actually in the
+version of the program that we've provided.  You will implement these
+features in this project.  We're showing them now as if the project were
+finished to convey the overall flavor of how the program should work.
+
+<P>We can print out the information in a database, and count the number of
+records:<A NAME="text3" HREF="database#ft3">[3]</A>
+
+<P><PRE>&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+LISTED
+&gt; (count-db)
+4
+</PRE>
+
+<P>We can insert new records into the database later on:
+
+<P><PRE>&gt; (insert)
+Value for ARTIST--&gt; (the bill frisell band)
+Value for TITLE--&gt; &quot;Where in the World?"
+Value for YEAR--&gt; 1991
+Value for BRIAN-LIKES?--&gt; #f
+Insert another? no
+INSERTED
+</PRE>
+
+<P>We can sort the records of the database, basing the sorting order on a
+particular field:
+
+<P><PRE>&gt; (sort-on 'year)
+YEAR
+
+&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 5
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+</PRE>
+
+<P>We can change the information in a record:
+
+<P><PRE>&gt; (edit-record 1)
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+Edit which field?  title
+New value for TITLE--&gt; &quot;A Hard Day's Night (original soundtrack)"
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+Edit which field?  #f
+EDITED
+</PRE>
+
+<P>(The <CODE>edit-record</CODE> procedure takes a record number as its
+argument.  In this case, we wanted the first record.  Also, the way you stop
+editing a record is by entering <CODE>#f</CODE> as the field name.)
+
+<P>Finally, we can save a database to a file and retrieve it later:
+
+<P><PRE>&gt; (save-db)
+SAVED
+
+&gt; (load-db &quot;albums&quot;)
+LOADED
+</PRE>
+
+<P><H2>How Databases Are Stored Internally</H2>
+
+<P>Our program will store a database as a vector of three elements: the file
+name associated with the database, a list of the names of the fields of the
+database, and a list of records in the database.
+
+<P>Each record of the database is itself a vector, containing values for
+the various fields.  (So the length of a record vector depends on the number
+of fields in the database.)
+
+<P>Why is each record a vector, but the collection of records a
+list?  Records have to be vectors because they are mutable; the <CODE>edit</CODE>
+command lets you change the value of a field for a record.  But there is no
+command to replace an entire record with a new one, so the list of records
+doesn't have to be mutable.
+
+<P>An advantage of storing the records in a list instead of a vector is that
+it's easy to insert new records.  If you've got a new record and a list of
+the old records, you simply <CODE>cons</CODE> the new record onto the old ones, and
+that's the new list.  You need to mutate the vector that represents the
+entire database to contain this new list instead of the old one, but you
+don't need to mutate the list itself.
+
+<P>Here's the <CODE>albums</CODE> database we created, as it looks to Scheme:
+
+<P><PRE>#(&quot;albums"
+  (ARTIST TITLE YEAR BRIAN-LIKES?)
+  (#((THE BEATLES) &quot;A Hard Day's Night (original soundtrack)&quot; 1964 #T)
+   #((THE BEATLES) &quot;Rubber Soul&quot; 1965 #T)
+   #((THE ZOMBIES) &quot;Odessey and Oracle&quot; 1967 #T)
+   #((FRANK ZAPPA) &quot;Hot Rats&quot; 1970 #F)
+   #((THE BILL FRISELL BAND) &quot;Where in the World?&quot; 1991 #F)))
+</PRE>
+
+<P>We'll treat databases as an abstract data type; here is how we implement it:
+
+<P><PRE>;;; The database ADT: a filename, list of fields and list of records
+
+(define (<A NAME="g1"></A>make-db filename fields records)
+  (vector filename fields records))
+
+(define (<A NAME="g2"></A>db-filename db)
+  (vector-ref db 0))
+
+(define (<A NAME="g3"></A>db-set-filename! db filename)
+  (vector-set! db 0 filename))
+
+(define (<A NAME="g4"></A>db-fields db)
+  (vector-ref db 1))
+
+(define (<A NAME="g5"></A>db-set-fields! db fields)
+  (vector-set! db 1 fields))
+
+(define (<A NAME="g6"></A>db-records db)
+  (vector-ref db 2))
+
+(define (<A NAME="g7"></A>db-set-records! db records)
+  (vector-set! db 2 records))
+</PRE>
+
+<P><H2>The Current Database</H2>
+
+<P>The database program works on one database at a time.  Every command
+implicitly refers to the current database.  Since the program might
+switch to a new database, it has to keep the current database in a
+vector that it can mutate if necessary.  For now, the current
+database is the only state information that the program keeps, so
+it's stored in a vector of length one.  If there is no current
+database (for example, when you start the database program), the
+value <CODE>#f</CODE> is stored in this vector:
+
+<P><PRE>(define current-state (vector #f))
+
+(define (<A NAME="g8"></A>no-db?)
+  (not (vector-ref current-state 0)))
+
+(define (<A NAME="g9"></A>current-db)
+  (if (no-db?)
+      (error &quot;No current database!&quot;)
+      (vector-ref current-state 0)))
+
+(define (<A NAME="g10"></A>set-current-db! db)
+  (vector-set! current-state 0 db))
+
+(define (<A NAME="g11"></A>current-fields)
+  (db-fields (current-db)))
+</PRE>
+
+<P><H2>Implementing the Database Program Commands</H2>
+
+<P>Once we have the basic structure of the database program, the work consists
+of inventing the various database operations.  Here is the <CODE>new-db</CODE>
+procedure:
+
+<P><PRE>(define (<A NAME="g12"></A>new-db filename fields)
+  (set-current-db! (make-db filename fields '()))
+  'created)
+</PRE>
+
+<P>(Remember that when you first create a database there are no
+records in it.)
+
+<P>Here's the <CODE>insert</CODE> procedure:
+
+<P><PRE>(define (<A NAME="g13"></A>insert)
+  (let ((new-record (get-record)))
+    (db-insert new-record (current-db)))
+  (if (ask &quot;Insert another? &quot;)
+      (insert)
+      'inserted))
+
+(define (<A NAME="g14"></A>db-insert record db)
+  (db-set-records! db (cons record (db-records db))))
+
+(define (<A NAME="g15"></A>get-record)
+  (get-record-loop 0
+		   (make-vector (length (current-fields)))
+		   (current-fields)))
+
+(define (<A NAME="g16"></A>get-record-loop which-field record fields)
+  (if (null? fields)
+      record
+      (begin (display &quot;Value for &quot;)
+	     (display (car fields))
+	     (display &quot;--&gt; &quot;)
+	     (vector-set! record which-field (read))
+	     (get-record-loop (+ which-field 1) record (cdr fields)))))
+
+(define (<A NAME="g17"></A>ask question)
+  (display question)
+  (let ((answer (read)))
+    (cond ((equal? (first answer) 'y) #t)
+	  ((equal? (first answer) 'n) #f)
+	  (else (show &quot;Please type Y or N.&quot;)
+		(ask question)))))
+</PRE>
+
+<P><H2>Additions to the Program</H2>
+
+<P>The database program we've shown so far has the structure of a more
+sophisticated program, but it's missing almost every feature you'd want it
+to have.  Some of the following additions are ones that we've demonstrated,
+but for which we haven't provided an implementation; others are introduced
+here for the first time.
+
+<P>In all of these additions, think about possible error conditions and how to
+handle them.  Try to find a balance between failing even on errors that are
+very likely to occur and having an entirely safe program that has more error
+checking than actual content.
+
+<H3><CODE>Count-db</CODE></H3>
+
+<P>Implement the <CODE><A NAME="g18"></A>count-db</CODE> procedure.  It should take no arguments,
+and it should return the number of records in the current database.
+
+<H3><CODE>List-db</CODE></H3>
+
+<P>Implement the <CODE><A NAME="g19"></A>list-db</CODE> procedure.  It should take no arguments,
+and it should print the current database in the format shown earlier.
+
+<H3><CODE>Edit-record</CODE></H3>
+
+<P>Implement <CODE><A NAME="g20"></A>edit-record,</CODE> which takes a number between one and the
+number of records in the current database as its argument.  It should allow
+the user to interactively edit the given record of the current database, as
+shown earlier.
+
+<H3><CODE>Save-db</CODE> and </CODE>Load-db</CODE></H3>
+
+<P>Write <CODE><A NAME="g21"></A>save-db</CODE> and <CODE><A NAME="g22"></A>load-db.</CODE> <CODE>Save-db</CODE> should
+take no arguments and should save the current database into a file with the
+name that was given when the database was created.  Make sure to save the
+field names as well as the information in the records.
+
+<P><CODE>Load-db</CODE> should take one argument, the filename of the database you
+want to load.  It should replace the current database with the one in the
+specified file.  (Needless to say, it should expect files to be in the
+format that <CODE>save-db</CODE> creates.)
+
+<P>In order to save information to a file in a form that Scheme will be able to
+read back later, you will need to use the <CODE>write</CODE> procedure instead of
+<CODE>display</CODE> or <CODE>show</CODE>, as discussed in Chapter 22.
+
+<H3><CODE>Clear-current-db!</CODE></H3>
+
+<P>The <CODE>new-db</CODE> and <CODE>load-db</CODE> procedures change the current database.
+<CODE>New-db</CODE> creates a new, blank database, while <CODE>load-db</CODE> reads in an
+old database from a file.  In both cases, the program just throws out
+the current database.  If you forgot to save it, you could lose a lot of
+work.
+
+<P>Write a procedure <CODE><A NAME="g23"></A>clear-current-db!</CODE> that clears the current
+database.  If there is no current database, <CODE>clear-current-db!</CODE> should
+do nothing.  Otherwise, it should ask the user whether to save the
+database, and if so it should call <CODE>save-db</CODE>.
+
+<P>Modify <CODE>new-db</CODE> and <CODE>load-db</CODE> to invoke <CODE>clear-current-db!</CODE>.
+
+<H3><CODE>Get</CODE></H3>
+
+<P>Many of the kinds of things that you would want to do to a database involve
+looking up the information in a record by the field name.  For example, the
+user might want to list only the artists and titles of the album
+database, or sort it by year, or list only the albums that Brian likes.
+
+<P>But this isn't totally straightforward, since a record doesn't contain any
+information about names of fields.  It doesn't make sense to ask what value
+the <CODE>price</CODE> field has in the record
+
+<P><PRE>#(SPROCKET 15 23 17 2)
+</PRE>
+
+<P>without knowing the names of the fields of the current database
+and their order.
+
+<P>Write a procedure <CODE><A NAME="g24"></A>get</CODE> that takes two arguments, a field name
+and a record, and returns the given field of the given record.  It should
+work by looking up the field name in the list of field names of the current
+database.
+
+<P><PRE>&gt; (get 'title '#((the zombies) &quot;Odessey and Oracle&quot; 1967 #t))
+&quot;Odessey and Oracle"
+</PRE>
+
+<P><CODE>Get</CODE> can be thought of as a selector for the record data type.  To
+continue the implementation of a record ADT, write a constructor <CODE>blank-record</CODE> that takes no arguments and returns a record with no values in
+its fields.  (Why doesn't <CODE>blank-record</CODE> need any arguments?)  Finally,
+write the mutator <CODE>record-set!</CODE> that takes three arguments: a field
+name, a record, and a new value for the corresponding field.
+
+<P>Modify the rest of the database program to use this ADT instead of directly
+manipulating the records as vectors.
+
+<H3><CODE>Sort</CODE></H3>
+
+<P>Write a <CODE><A NAME="g25"></A>sort</CODE> command that takes a predicate as its argument and
+sorts the database according to that predicate.  The predicate should take
+two records as arguments and return <CODE>#t</CODE> if the first record belongs
+before the second one, or <CODE>#f</CODE> otherwise.  Here's an example:
+
+<P><PRE>&gt; (sort (lambda (r1 r2) (before? (get 'title r1) (get 'title r2))))
+SORTED
+
+&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 5
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+
+&gt; (sort (lambda (r1 r2) (&lt; (get 'year r1) (get 'year r2))))
+SORTED
+
+&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 5
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+</PRE>
+
+<P>Note: Don't invent a sorting algorithm for this problem.  You can
+just use one of the sorting procedures from Chapter 15 and modify it
+slightly to sort a list of records instead of a sentence of words.
+
+<H3><CODE>Sort-on-by</CODE></H3>
+
+<P>Although <CODE>sort</CODE> is a very general-purpose tool, the way that you have
+to specify how to sort the database is cumbersome.  Write a procedure
+<CODE>sort-on-by</CODE> that takes two arguments, the name of a field and a
+predicate.  It should invoke <CODE>sort</CODE> with an appropriate predicate to
+achieve the desired sort.  For example, you could say
+
+<P><PRE>(sort-on-by 'title before?)
+</PRE>
+
+<P>and
+
+<P><PRE>(sort-on-by 'year &lt;)
+</PRE>
+
+<P>instead of the two <CODE>sort</CODE> examples we showed earlier.
+
+<H3><CODE>Generic-before?</CODE></H3>
+
+<P>The next improvement is to eliminate the need to specify a predicate
+explicitly.  Write a procedure <CODE><A NAME="g26"></A>generic-before?</CODE> that takes two
+arguments of any types and returns <CODE>#t</CODE> if the first comes before the
+second.  The meaning of &quot;before&quot; depends on the types of the arguments:
+
+<P>If the arguments are numbers, <CODE>generic-before?</CODE> should use <CODE>&lt;</CODE>.
+If the arguments are words that aren't numbers, then <CODE>generic-before?</CODE> 
+should use <CODE>before?</CODE> to make the comparison.
+
+<P>What if the arguments are lists?  For example, suppose you want to sort on
+the <CODE>artist</CODE> field in the albums example.  The way to compare two lists
+is element by element, just as in the <CODE>sent-before?</CODE> procedure in
+Chapter 14.
+
+<P><PRE>&gt; (generic-before? '(magical mystery tour) '(yellow submarine))
+#T
+&gt; (generic-before? '(is that you?) '(before we were born))
+#F
+&gt; (generic-before? '(bass desires) '(bass desires second sight))
+#T
+</PRE>
+
+<P>But <CODE>generic-before?</CODE> should also work for structured lists:
+
+<P><PRE>&gt; (generic-before? '(norwegian wood (this bird has flown))
+		   '(norwegian wood (tastes so good)))
+#F
+</PRE>
+
+<P>What if the two arguments are of different types?  If you're comparing a
+number and a non-numeric word, compare them alphabetically.  If you're
+comparing a word to a list, treat the word as a one-word list, like
+this:
+
+<P><PRE>&gt; (generic-before? '(in line) 'rambler)
+#T
+
+&gt; (generic-before? '(news for lulu) 'cobra)
+#F
+</PRE>
+
+<H3><CODE>Sort-on</CODE></H3>
+
+<P>Now write <CODE><A NAME="g27"></A>sort-on</CODE>, which takes the name of a field as its
+argument and sorts the current database on that field, using <CODE>generic-before?</CODE> as the comparison predicate.
+
+<H3><CODE>Add-field</CODE></H3>
+
+<P>Sometimes you discover that you don't have enough fields in your database.
+Write a procedure <CODE><A NAME="g28"></A>add-field</CODE> that takes two arguments: the
+name of a new field and an initial value for that field.  <CODE>Add-field</CODE> 
+should modify the current database to include the new field.  Any existing
+records in the database should be given the indicated initial value for the
+field.  Here's an example:
+
+<P><PRE>&gt; (add-field 'category 'rock)
+ADDED
+
+&gt; (edit-record 5)
+CATEGORY: ROCK
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+Edit which field?  category
+New value for CATEGORY--&gt; jazz
+CATEGORY: JAZZ
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+Edit which field?  #f
+EDITED
+
+&gt; (list-db)
+RECORD 1
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 3
+CATEGORY: ROCK
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+CATEGORY: ROCK
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 5
+CATEGORY: JAZZ
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+</PRE>
+
+<P>If you like, you can write <CODE>add-field</CODE> so that it will accept either
+one or two arguments.  If given only one argument, it should use <CODE>#f</CODE>
+as the default field value.
+
+<P>Note: We said earlier that each record is a vector but the
+collection of records is a list because we generally want to mutate fields
+in a record, but not add new ones, whereas we generally want to add new
+records, but not replace existing ones completely.  This problem is an
+exception; we're asking you to add an element to a vector.  To do this,
+you'll have to create a new, longer vector for each record.  Your program
+will probably run slowly as a result.  This is okay because adding fields to
+an existing database is very unusual.  Commercial database programs are also
+slow at this; now you know why.
+
+<P>You can't solve this problem in a way that respects the current version of
+the record ADT.  Think about trying to turn the record
+
+<P><PRE>#((THE BEATLES) &quot;Rubber Soul&quot; 1965 #T)
+</PRE>
+
+<P>into the record
+
+<P><PRE>#(ROCK (THE BEATLES) &quot;Rubber Soul&quot; 1965 #T)
+</PRE>
+
+<P>It seems simple enough: Make a new record of the correct size, and fill in
+all the values of the old fields from the old record.  But does this happen
+before or after you change the list of current fields in the database?  If
+before, you can't call <CODE>blank-record</CODE> to create a new record of the
+correct size.  If after, you can't call <CODE>get</CODE> to extract the field values
+of the old record, because the field names have changed.
+
+<P>There are (at least) three solutions to this dilemma.  One is to abandon the
+record ADT, since it's turning out to be more trouble than it's worth.
+Using the underlying vector tools, it would be easy to transform old-field
+records into new-field records.
+
+<P>The second solution is to create another constructor for records, <CODE>adjoin-field</CODE>.  <CODE>Adjoin-field</CODE> would take a record and a new
+field value, and would be analogous to <CODE>cons</CODE>.
+
+<P>The last solution is the most complicated, but perhaps the most elegant.
+The reason our ADT doesn't work is that <CODE>get</CODE>, <CODE>record-set!</CODE>, and
+<CODE>blank-record</CODE> don't just get information from their arguments; they
+also examine the current fields of the database.  You could write a new ADT
+implementation in which each procedure took a list of fields as an extra
+argument. Then <CODE>get</CODE>, <CODE>record-set!</CODE>, and <CODE>blank-record</CODE> could be
+implemented in this style:
+
+<P><PRE>(define (get fieldname record)
+  (get-with-these-fields fieldname record (current-fields)))
+</PRE>
+
+<P><CODE>Add-field</CODE> could use the underlying ADT, and the rest of the
+program could continue to use the existing version.
+
+<P>We've put a lot of effort into figuring out how to design this small part of
+the overall project.  Earlier we showed you examples in which using an ADT
+made it <EM>easy</EM> to modify a program; those were realistic, but it's
+also realistic that sometimes making an ADT work can add to the effort.
+
+<H3><CODE>Save-selection</CODE></H3>
+
+<P>Write a <CODE>save-selection</CODE> procedure that's similar to <CODE>save-db</CODE> but
+saves only the currently selected records.  It should take a file name as
+its argument.
+
+<H3><CODE>Merge-db</CODE></H3>
+
+<P>One of the most powerful operations on a database is to merge it with
+another database.  Write a procedure <CODE><A NAME="g29"></A>merge-db</CODE> that takes two
+arguments: the file name of another database and the name of a field that
+the given database has in common with the current database.  Both databases
+(the current one and the one specified) must already be sorted by the given
+field.
+
+<P>The effect of the <CODE>merge-db</CODE> command is to add fields from the specified 
+database to the records of the current database.  For example, suppose you
+had a database called <CODE>&quot;bands&quot;</CODE> with the following information:
+
+<P><PRE>Artist:                   Members:
+(rush)                    (geddy alex neil)
+(the beatles)             (john paul george ringo)
+(the bill frisell band)   (bill hank kermit joey)     
+(the zombies)             (rod chris colin hugh paul)
+</PRE>
+
+<P>You should be able to do the following (assuming <CODE>&quot;albums&quot;</CODE> is
+the current database):
+
+<P><PRE>&gt; (sort-on 'artist)
+ARTIST
+
+&gt; (merge-db &quot;bands&quot; 'artist)
+MERGED
+
+&gt; (list-db)
+RECORD 1
+CATEGORY: ROCK
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+MEMBERS: #F
+
+RECORD 2
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+MEMBERS: (JOHN PAUL GEORGE RINGO)
+
+RECORD 3
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+MEMBERS: (JOHN PAUL GEORGE RINGO)
+
+RECORD 4
+CATEGORY: JAZZ
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+MEMBERS: (BILL HANK KERMIT JOEY)
+
+RECORD 5
+CATEGORY: ROCK
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+MEMBERS: (ROD CHRIS COLIN HUGH PAUL)
+
+LISTED
+</PRE>
+
+<P>Since there was no entry for Frank Zappa in the <CODE>&quot;bands&quot;</CODE> database, the <CODE>members</CODE> field was given the default value <CODE>#f</CODE>.  If there are two or more records in the specified database with the
+same value for the given field, just take the information from the first one.
+
+<P>(By the way, this problem has a lot in common with the <CODE>join</CODE> procedure
+from Exercise <A HREF="../ssch22/files.html#join">22.8</A>.)
+
+<P>This is a complicated problem, so we're giving a hint:
+
+<P><PRE>(define (merge-db other-name common-field)
+  (let ((other-db (read-db-from-disk other-name))
+	(original-fields (current-fields)))
+    (set-current-fields! (merge-fields original-fields
+ 				       (db-fields other-db)))
+    (set-current-records! (merge-db-helper original-fields
+					   (current-records)
+					   (db-fields other-db)
+					   (db-records other-db)
+					   common-field))))
+</PRE>
+
+<P>This procedure shows one possible overall structure
+for the program.  You can fill in the structure by writing the
+necessary subprocedures.  (If you prefer to start with a different
+overall design, that's fine too.)  Our earlier suggestion about
+writing a <CODE>get-with-these-fields</CODE> procedure is relevant here also.
+
+<P>
+<H2>Extra Work for Hotshots</H2>
+
+<P>Compare your program to a real database program and see if you can add some
+of its features.  For example, many database programs have primitive
+facilities for averaging the value of a field over certain records.  Another
+feature you might want to try to implement is two-dimensional printing,
+in which each column is a field and each row is a record.
+
+<P>
+<HR>
+<A NAME="ft0" HREF="database#text0">[0]</A> [online-only footnote] Alas, two of these
+restaurants are no more.  If you're in the Cal's vicinity, you'll have to
+settle for TC Garden; if you're in the Shin Shin vicinity, try Kirin,
+1767 Solano Ave.<P>
+<A NAME="ft1" HREF="database#text1">[1]</A> The double-quote marks are
+necessary because <CODE>albums</CODE> will be used as a filename when we save the
+database to a file.<P>
+<A NAME="ft2" HREF="database#text2">[2]</A> We don't need a
+<CODE>matt-likes?</CODE> field because Matt likes all the albums in this database.<P>
+<A NAME="ft3" HREF="database#text3">[3]</A> Readers who are old enough to remember the days before
+compact discs may be disturbed by the ambiguity of the word &quot;record,&quot;
+which could mean either a database record or a phonograph record.  Luckily,
+in our example it doesn't matter, because each database record represents
+a phonograph record.  But we intend the word &quot;record&quot; to mean a database
+record; we'll say &quot;album&quot; if we mean the musical kind.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="spread-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch26/part7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch25/database.html b/js/games/nluqo.github.io/~bh/ssch25/database.html
new file mode 100644
index 0000000..7f84e3d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch25/database.html
@@ -0,0 +1,880 @@
+<P>
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme:Project: A Database Program</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Project: A Database Program</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch25.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="spread-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch26/part7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>A <EM>database</EM> is a large file with lots of related data in it.
+For example, you might have a database of your local Chinese restaurants,
+listing their names, their addresses, and how good their potstickers are,
+like this:<A NAME="text0" HREF="database.html#ft0">[0]</A>
+
+<P><PRE>Name:           Address:                  City:           Potstickers:
+
+Cal's           1866 Euclid               Berkeley        nondescript
+Hunan           924 Sansome               San Francisco   none
+Mary Chung's    464 Massachusetts Avenue  Cambridge       great
+Shin Shin       1715 Solano Avenue        Berkeley        awesome
+TC Garden       2507 Hearst Avenue        Berkeley        doughy
+Yet Wah         2140 Clement              San Francisco   fantastic
+</PRE>
+
+<P>There are six <EM>records</EM> in this database, one for each restaurant.
+Each record contains four pieces of information; we say that the
+database has four <EM>fields.</EM>
+
+<P>A <EM>database program</EM> is a program that can create, store, modify, and
+examine databases.  At the very least, a database program must let you
+create new databases, enter records, and save the database to a file.  More
+sophisticated operations involve sorting the records in a database by a
+particular field, printing out the contents of the database, counting the
+number of records that satisfy a certain condition, taking statistics such as
+averages, and so on.
+
+<P>There are many commercial database programs available; our version will have
+some of the flavor of more sophisticated programs while leaving out a lot of
+the details.
+
+<P><H2>A Sample Session with Our Database</H2>
+
+<P>Most database programs come with their own programming language built in.
+Our database program will use Scheme itself as the language; you will be able
+to perform database commands by invoking Scheme procedures at the Scheme
+prompt.  Here is a sample session with our program:
+
+<P><PRE>&gt; (load &quot;database.scm&quot;)
+#F
+&gt; (new-db &quot;albums&quot; '(artist title year brian-likes?))
+CREATED
+</PRE>
+
+<P>First we loaded the database program, then we created a new
+database called <CODE>&quot;albums&quot;</CODE><A NAME="text1" HREF="database.html#ft1">[1]</A> with four fields.<A NAME="text2" HREF="database.html#ft2">[2]</A>
+Let's enter some data:
+
+<P><PRE>&gt; (insert)
+Value for ARTIST--&gt; (the beatles)
+Value for TITLE--&gt; &quot;A Hard Day's Night"
+Value for YEAR--&gt; 1964
+Value for BRIAN-LIKES?--&gt; #t
+Insert another? yes
+Value for ARTIST--&gt; (the zombies)
+Value for TITLE--&gt; &quot;Odessey and Oracle"
+Value for YEAR--&gt; 1967
+Value for BRIAN-LIKES?--&gt; #t
+Insert another? y
+Value for ARTIST--&gt; (frank zappa)
+Value for TITLE--&gt; &quot;Hot Rats"
+Value for YEAR--&gt; 1970
+Value for BRIAN-LIKES?--&gt; #f
+Insert another? y
+Value for ARTIST--&gt; (the beatles)
+Value for TITLE--&gt; &quot;Rubber Soul"
+Value for YEAR--&gt; 1965
+Value for BRIAN-LIKES?--&gt; #t
+Insert another? no
+INSERTED
+</PRE>
+
+<P>(We used strings for the album titles but sentences for the
+artists, partly because one of the titles has an apostrophe in it, but
+mainly just to demonstrate that fields can contain any data type.)
+
+<P>At this point we start demonstrating features that aren't actually in the
+version of the program that we've provided.  You will implement these
+features in this project.  We're showing them now as if the project were
+finished to convey the overall flavor of how the program should work.
+
+<P>We can print out the information in a database, and count the number of
+records:<A NAME="text3" HREF="database.html#ft3">[3]</A>
+
+<P><PRE>&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+LISTED
+&gt; (count-db)
+4
+</PRE>
+
+<P>We can insert new records into the database later on:
+
+<P><PRE>&gt; (insert)
+Value for ARTIST--&gt; (the bill frisell band)
+Value for TITLE--&gt; &quot;Where in the World?"
+Value for YEAR--&gt; 1991
+Value for BRIAN-LIKES?--&gt; #f
+Insert another? no
+INSERTED
+</PRE>
+
+<P>We can sort the records of the database, basing the sorting order on a
+particular field:
+
+<P><PRE>&gt; (sort-on 'year)
+YEAR
+
+&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 5
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+</PRE>
+
+<P>We can change the information in a record:
+
+<P><PRE>&gt; (edit-record 1)
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+Edit which field?  title
+New value for TITLE--&gt; &quot;A Hard Day's Night (original soundtrack)"
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+Edit which field?  #f
+EDITED
+</PRE>
+
+<P>(The <CODE>edit-record</CODE> procedure takes a record number as its
+argument.  In this case, we wanted the first record.  Also, the way you stop
+editing a record is by entering <CODE>#f</CODE> as the field name.)
+
+<P>Finally, we can save a database to a file and retrieve it later:
+
+<P><PRE>&gt; (save-db)
+SAVED
+
+&gt; (load-db &quot;albums&quot;)
+LOADED
+</PRE>
+
+<P><H2>How Databases Are Stored Internally</H2>
+
+<P>Our program will store a database as a vector of three elements: the file
+name associated with the database, a list of the names of the fields of the
+database, and a list of records in the database.
+
+<P>Each record of the database is itself a vector, containing values for
+the various fields.  (So the length of a record vector depends on the number
+of fields in the database.)
+
+<P>Why is each record a vector, but the collection of records a
+list?  Records have to be vectors because they are mutable; the <CODE>edit</CODE>
+command lets you change the value of a field for a record.  But there is no
+command to replace an entire record with a new one, so the list of records
+doesn't have to be mutable.
+
+<P>An advantage of storing the records in a list instead of a vector is that
+it's easy to insert new records.  If you've got a new record and a list of
+the old records, you simply <CODE>cons</CODE> the new record onto the old ones, and
+that's the new list.  You need to mutate the vector that represents the
+entire database to contain this new list instead of the old one, but you
+don't need to mutate the list itself.
+
+<P>Here's the <CODE>albums</CODE> database we created, as it looks to Scheme:
+
+<P><PRE>#(&quot;albums"
+  (ARTIST TITLE YEAR BRIAN-LIKES?)
+  (#((THE BEATLES) &quot;A Hard Day's Night (original soundtrack)&quot; 1964 #T)
+   #((THE BEATLES) &quot;Rubber Soul&quot; 1965 #T)
+   #((THE ZOMBIES) &quot;Odessey and Oracle&quot; 1967 #T)
+   #((FRANK ZAPPA) &quot;Hot Rats&quot; 1970 #F)
+   #((THE BILL FRISELL BAND) &quot;Where in the World?&quot; 1991 #F)))
+</PRE>
+
+<P>We'll treat databases as an abstract data type; here is how we implement it:
+
+<P><PRE>;;; The database ADT: a filename, list of fields and list of records
+
+(define (<A NAME="g1"></A>make-db filename fields records)
+  (vector filename fields records))
+
+(define (<A NAME="g2"></A>db-filename db)
+  (vector-ref db 0))
+
+(define (<A NAME="g3"></A>db-set-filename! db filename)
+  (vector-set! db 0 filename))
+
+(define (<A NAME="g4"></A>db-fields db)
+  (vector-ref db 1))
+
+(define (<A NAME="g5"></A>db-set-fields! db fields)
+  (vector-set! db 1 fields))
+
+(define (<A NAME="g6"></A>db-records db)
+  (vector-ref db 2))
+
+(define (<A NAME="g7"></A>db-set-records! db records)
+  (vector-set! db 2 records))
+</PRE>
+
+<P><H2>The Current Database</H2>
+
+<P>The database program works on one database at a time.  Every command
+implicitly refers to the current database.  Since the program might
+switch to a new database, it has to keep the current database in a
+vector that it can mutate if necessary.  For now, the current
+database is the only state information that the program keeps, so
+it's stored in a vector of length one.  If there is no current
+database (for example, when you start the database program), the
+value <CODE>#f</CODE> is stored in this vector:
+
+<P><PRE>(define current-state (vector #f))
+
+(define (<A NAME="g8"></A>no-db?)
+  (not (vector-ref current-state 0)))
+
+(define (<A NAME="g9"></A>current-db)
+  (if (no-db?)
+      (error &quot;No current database!&quot;)
+      (vector-ref current-state 0)))
+
+(define (<A NAME="g10"></A>set-current-db! db)
+  (vector-set! current-state 0 db))
+
+(define (<A NAME="g11"></A>current-fields)
+  (db-fields (current-db)))
+</PRE>
+
+<P><H2>Implementing the Database Program Commands</H2>
+
+<P>Once we have the basic structure of the database program, the work consists
+of inventing the various database operations.  Here is the <CODE>new-db</CODE>
+procedure:
+
+<P><PRE>(define (<A NAME="g12"></A>new-db filename fields)
+  (set-current-db! (make-db filename fields '()))
+  'created)
+</PRE>
+
+<P>(Remember that when you first create a database there are no
+records in it.)
+
+<P>Here's the <CODE>insert</CODE> procedure:
+
+<P><PRE>(define (<A NAME="g13"></A>insert)
+  (let ((new-record (get-record)))
+    (db-insert new-record (current-db)))
+  (if (ask &quot;Insert another? &quot;)
+      (insert)
+      'inserted))
+
+(define (<A NAME="g14"></A>db-insert record db)
+  (db-set-records! db (cons record (db-records db))))
+
+(define (<A NAME="g15"></A>get-record)
+  (get-record-loop 0
+		   (make-vector (length (current-fields)))
+		   (current-fields)))
+
+(define (<A NAME="g16"></A>get-record-loop which-field record fields)
+  (if (null? fields)
+      record
+      (begin (display &quot;Value for &quot;)
+	     (display (car fields))
+	     (display &quot;--&gt; &quot;)
+	     (vector-set! record which-field (read))
+	     (get-record-loop (+ which-field 1) record (cdr fields)))))
+
+(define (<A NAME="g17"></A>ask question)
+  (display question)
+  (let ((answer (read)))
+    (cond ((equal? (first answer) 'y) #t)
+	  ((equal? (first answer) 'n) #f)
+	  (else (show &quot;Please type Y or N.&quot;)
+		(ask question)))))
+</PRE>
+
+<P><H2>Additions to the Program</H2>
+
+<P>The database program we've shown so far has the structure of a more
+sophisticated program, but it's missing almost every feature you'd want it
+to have.  Some of the following additions are ones that we've demonstrated,
+but for which we haven't provided an implementation; others are introduced
+here for the first time.
+
+<P>In all of these additions, think about possible error conditions and how to
+handle them.  Try to find a balance between failing even on errors that are
+very likely to occur and having an entirely safe program that has more error
+checking than actual content.
+
+<H3><CODE>Count-db</CODE></H3>
+
+<P>Implement the <CODE><A NAME="g18"></A>count-db</CODE> procedure.  It should take no arguments,
+and it should return the number of records in the current database.
+
+<H3><CODE>List-db</CODE></H3>
+
+<P>Implement the <CODE><A NAME="g19"></A>list-db</CODE> procedure.  It should take no arguments,
+and it should print the current database in the format shown earlier.
+
+<H3><CODE>Edit-record</CODE></H3>
+
+<P>Implement <CODE><A NAME="g20"></A>edit-record,</CODE> which takes a number between one and the
+number of records in the current database as its argument.  It should allow
+the user to interactively edit the given record of the current database, as
+shown earlier.
+
+<H3><CODE>Save-db</CODE> and </CODE>Load-db</CODE></H3>
+
+<P>Write <CODE><A NAME="g21"></A>save-db</CODE> and <CODE><A NAME="g22"></A>load-db.</CODE> <CODE>Save-db</CODE> should
+take no arguments and should save the current database into a file with the
+name that was given when the database was created.  Make sure to save the
+field names as well as the information in the records.
+
+<P><CODE>Load-db</CODE> should take one argument, the filename of the database you
+want to load.  It should replace the current database with the one in the
+specified file.  (Needless to say, it should expect files to be in the
+format that <CODE>save-db</CODE> creates.)
+
+<P>In order to save information to a file in a form that Scheme will be able to
+read back later, you will need to use the <CODE>write</CODE> procedure instead of
+<CODE>display</CODE> or <CODE>show</CODE>, as discussed in Chapter 22.
+
+<H3><CODE>Clear-current-db!</CODE></H3>
+
+<P>The <CODE>new-db</CODE> and <CODE>load-db</CODE> procedures change the current database.
+<CODE>New-db</CODE> creates a new, blank database, while <CODE>load-db</CODE> reads in an
+old database from a file.  In both cases, the program just throws out
+the current database.  If you forgot to save it, you could lose a lot of
+work.
+
+<P>Write a procedure <CODE><A NAME="g23"></A>clear-current-db!</CODE> that clears the current
+database.  If there is no current database, <CODE>clear-current-db!</CODE> should
+do nothing.  Otherwise, it should ask the user whether to save the
+database, and if so it should call <CODE>save-db</CODE>.
+
+<P>Modify <CODE>new-db</CODE> and <CODE>load-db</CODE> to invoke <CODE>clear-current-db!</CODE>.
+
+<H3><CODE>Get</CODE></H3>
+
+<P>Many of the kinds of things that you would want to do to a database involve
+looking up the information in a record by the field name.  For example, the
+user might want to list only the artists and titles of the album
+database, or sort it by year, or list only the albums that Brian likes.
+
+<P>But this isn't totally straightforward, since a record doesn't contain any
+information about names of fields.  It doesn't make sense to ask what value
+the <CODE>price</CODE> field has in the record
+
+<P><PRE>#(SPROCKET 15 23 17 2)
+</PRE>
+
+<P>without knowing the names of the fields of the current database
+and their order.
+
+<P>Write a procedure <CODE><A NAME="g24"></A>get</CODE> that takes two arguments, a field name
+and a record, and returns the given field of the given record.  It should
+work by looking up the field name in the list of field names of the current
+database.
+
+<P><PRE>&gt; (get 'title '#((the zombies) &quot;Odessey and Oracle&quot; 1967 #t))
+&quot;Odessey and Oracle"
+</PRE>
+
+<P><CODE>Get</CODE> can be thought of as a selector for the record data type.  To
+continue the implementation of a record ADT, write a constructor <CODE>blank-record</CODE> that takes no arguments and returns a record with no values in
+its fields.  (Why doesn't <CODE>blank-record</CODE> need any arguments?)  Finally,
+write the mutator <CODE>record-set!</CODE> that takes three arguments: a field
+name, a record, and a new value for the corresponding field.
+
+<P>Modify the rest of the database program to use this ADT instead of directly
+manipulating the records as vectors.
+
+<H3><CODE>Sort</CODE></H3>
+
+<P>Write a <CODE><A NAME="g25"></A>sort</CODE> command that takes a predicate as its argument and
+sorts the database according to that predicate.  The predicate should take
+two records as arguments and return <CODE>#t</CODE> if the first record belongs
+before the second one, or <CODE>#f</CODE> otherwise.  Here's an example:
+
+<P><PRE>&gt; (sort (lambda (r1 r2) (before? (get 'title r1) (get 'title r2))))
+SORTED
+
+&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 5
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+
+&gt; (sort (lambda (r1 r2) (&lt; (get 'year r1) (get 'year r2))))
+SORTED
+
+&gt; (list-db)
+RECORD 1
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 3
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 5
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+</PRE>
+
+<P>Note: Don't invent a sorting algorithm for this problem.  You can
+just use one of the sorting procedures from Chapter 15 and modify it
+slightly to sort a list of records instead of a sentence of words.
+
+<H3><CODE>Sort-on-by</CODE></H3>
+
+<P>Although <CODE>sort</CODE> is a very general-purpose tool, the way that you have
+to specify how to sort the database is cumbersome.  Write a procedure
+<CODE>sort-on-by</CODE> that takes two arguments, the name of a field and a
+predicate.  It should invoke <CODE>sort</CODE> with an appropriate predicate to
+achieve the desired sort.  For example, you could say
+
+<P><PRE>(sort-on-by 'title before?)
+</PRE>
+
+<P>and
+
+<P><PRE>(sort-on-by 'year &lt;)
+</PRE>
+
+<P>instead of the two <CODE>sort</CODE> examples we showed earlier.
+
+<H3><CODE>Generic-before?</CODE></H3>
+
+<P>The next improvement is to eliminate the need to specify a predicate
+explicitly.  Write a procedure <CODE><A NAME="g26"></A>generic-before?</CODE> that takes two
+arguments of any types and returns <CODE>#t</CODE> if the first comes before the
+second.  The meaning of &quot;before&quot; depends on the types of the arguments:
+
+<P>If the arguments are numbers, <CODE>generic-before?</CODE> should use <CODE>&lt;</CODE>.
+If the arguments are words that aren't numbers, then <CODE>generic-before?</CODE> 
+should use <CODE>before?</CODE> to make the comparison.
+
+<P>What if the arguments are lists?  For example, suppose you want to sort on
+the <CODE>artist</CODE> field in the albums example.  The way to compare two lists
+is element by element, just as in the <CODE>sent-before?</CODE> procedure in
+Chapter 14.
+
+<P><PRE>&gt; (generic-before? '(magical mystery tour) '(yellow submarine))
+#T
+&gt; (generic-before? '(is that you?) '(before we were born))
+#F
+&gt; (generic-before? '(bass desires) '(bass desires second sight))
+#T
+</PRE>
+
+<P>But <CODE>generic-before?</CODE> should also work for structured lists:
+
+<P><PRE>&gt; (generic-before? '(norwegian wood (this bird has flown))
+		   '(norwegian wood (tastes so good)))
+#F
+</PRE>
+
+<P>What if the two arguments are of different types?  If you're comparing a
+number and a non-numeric word, compare them alphabetically.  If you're
+comparing a word to a list, treat the word as a one-word list, like
+this:
+
+<P><PRE>&gt; (generic-before? '(in line) 'rambler)
+#T
+
+&gt; (generic-before? '(news for lulu) 'cobra)
+#F
+</PRE>
+
+<H3><CODE>Sort-on</CODE></H3>
+
+<P>Now write <CODE><A NAME="g27"></A>sort-on</CODE>, which takes the name of a field as its
+argument and sorts the current database on that field, using <CODE>generic-before?</CODE> as the comparison predicate.
+
+<H3><CODE>Add-field</CODE></H3>
+
+<P>Sometimes you discover that you don't have enough fields in your database.
+Write a procedure <CODE><A NAME="g28"></A>add-field</CODE> that takes two arguments: the
+name of a new field and an initial value for that field.  <CODE>Add-field</CODE> 
+should modify the current database to include the new field.  Any existing
+records in the database should be given the indicated initial value for the
+field.  Here's an example:
+
+<P><PRE>&gt; (add-field 'category 'rock)
+ADDED
+
+&gt; (edit-record 5)
+CATEGORY: ROCK
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+Edit which field?  category
+New value for CATEGORY--&gt; jazz
+CATEGORY: JAZZ
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+Edit which field?  #f
+EDITED
+
+&gt; (list-db)
+RECORD 1
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+
+RECORD 2
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+
+RECORD 3
+CATEGORY: ROCK
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+
+RECORD 4
+CATEGORY: ROCK
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+
+RECORD 5
+CATEGORY: JAZZ
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+
+LISTED
+</PRE>
+
+<P>If you like, you can write <CODE>add-field</CODE> so that it will accept either
+one or two arguments.  If given only one argument, it should use <CODE>#f</CODE>
+as the default field value.
+
+<P>Note: We said earlier that each record is a vector but the
+collection of records is a list because we generally want to mutate fields
+in a record, but not add new ones, whereas we generally want to add new
+records, but not replace existing ones completely.  This problem is an
+exception; we're asking you to add an element to a vector.  To do this,
+you'll have to create a new, longer vector for each record.  Your program
+will probably run slowly as a result.  This is okay because adding fields to
+an existing database is very unusual.  Commercial database programs are also
+slow at this; now you know why.
+
+<P>You can't solve this problem in a way that respects the current version of
+the record ADT.  Think about trying to turn the record
+
+<P><PRE>#((THE BEATLES) &quot;Rubber Soul&quot; 1965 #T)
+</PRE>
+
+<P>into the record
+
+<P><PRE>#(ROCK (THE BEATLES) &quot;Rubber Soul&quot; 1965 #T)
+</PRE>
+
+<P>It seems simple enough: Make a new record of the correct size, and fill in
+all the values of the old fields from the old record.  But does this happen
+before or after you change the list of current fields in the database?  If
+before, you can't call <CODE>blank-record</CODE> to create a new record of the
+correct size.  If after, you can't call <CODE>get</CODE> to extract the field values
+of the old record, because the field names have changed.
+
+<P>There are (at least) three solutions to this dilemma.  One is to abandon the
+record ADT, since it's turning out to be more trouble than it's worth.
+Using the underlying vector tools, it would be easy to transform old-field
+records into new-field records.
+
+<P>The second solution is to create another constructor for records, <CODE>adjoin-field</CODE>.  <CODE>Adjoin-field</CODE> would take a record and a new
+field value, and would be analogous to <CODE>cons</CODE>.
+
+<P>The last solution is the most complicated, but perhaps the most elegant.
+The reason our ADT doesn't work is that <CODE>get</CODE>, <CODE>record-set!</CODE>, and
+<CODE>blank-record</CODE> don't just get information from their arguments; they
+also examine the current fields of the database.  You could write a new ADT
+implementation in which each procedure took a list of fields as an extra
+argument. Then <CODE>get</CODE>, <CODE>record-set!</CODE>, and <CODE>blank-record</CODE> could be
+implemented in this style:
+
+<P><PRE>(define (get fieldname record)
+  (get-with-these-fields fieldname record (current-fields)))
+</PRE>
+
+<P><CODE>Add-field</CODE> could use the underlying ADT, and the rest of the
+program could continue to use the existing version.
+
+<P>We've put a lot of effort into figuring out how to design this small part of
+the overall project.  Earlier we showed you examples in which using an ADT
+made it <EM>easy</EM> to modify a program; those were realistic, but it's
+also realistic that sometimes making an ADT work can add to the effort.
+
+<H3><CODE>Save-selection</CODE></H3>
+
+<P>Write a <CODE>save-selection</CODE> procedure that's similar to <CODE>save-db</CODE> but
+saves only the currently selected records.  It should take a file name as
+its argument.
+
+<H3><CODE>Merge-db</CODE></H3>
+
+<P>One of the most powerful operations on a database is to merge it with
+another database.  Write a procedure <CODE><A NAME="g29"></A>merge-db</CODE> that takes two
+arguments: the file name of another database and the name of a field that
+the given database has in common with the current database.  Both databases
+(the current one and the one specified) must already be sorted by the given
+field.
+
+<P>The effect of the <CODE>merge-db</CODE> command is to add fields from the specified 
+database to the records of the current database.  For example, suppose you
+had a database called <CODE>&quot;bands&quot;</CODE> with the following information:
+
+<P><PRE>Artist:                   Members:
+(rush)                    (geddy alex neil)
+(the beatles)             (john paul george ringo)
+(the bill frisell band)   (bill hank kermit joey)     
+(the zombies)             (rod chris colin hugh paul)
+</PRE>
+
+<P>You should be able to do the following (assuming <CODE>&quot;albums&quot;</CODE> is
+the current database):
+
+<P><PRE>&gt; (sort-on 'artist)
+ARTIST
+
+&gt; (merge-db &quot;bands&quot; 'artist)
+MERGED
+
+&gt; (list-db)
+RECORD 1
+CATEGORY: ROCK
+ARTIST: (FRANK ZAPPA)
+TITLE: Hot Rats
+YEAR: 1970
+BRIAN-LIKES?: #F
+MEMBERS: #F
+
+RECORD 2
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: A Hard Day's Night (original soundtrack)
+YEAR: 1964
+BRIAN-LIKES?: #T
+MEMBERS: (JOHN PAUL GEORGE RINGO)
+
+RECORD 3
+CATEGORY: ROCK
+ARTIST: (THE BEATLES)
+TITLE: Rubber Soul
+YEAR: 1965
+BRIAN-LIKES?: #T
+MEMBERS: (JOHN PAUL GEORGE RINGO)
+
+RECORD 4
+CATEGORY: JAZZ
+ARTIST: (THE BILL FRISELL BAND)
+TITLE: Where in the World?
+YEAR: 1991
+BRIAN-LIKES?: #F
+MEMBERS: (BILL HANK KERMIT JOEY)
+
+RECORD 5
+CATEGORY: ROCK
+ARTIST: (THE ZOMBIES)
+TITLE: Odessey and Oracle
+YEAR: 1967
+BRIAN-LIKES?: #T
+MEMBERS: (ROD CHRIS COLIN HUGH PAUL)
+
+LISTED
+</PRE>
+
+<P>Since there was no entry for Frank Zappa in the <CODE>&quot;bands&quot;</CODE> database, the <CODE>members</CODE> field was given the default value <CODE>#f</CODE>.  If there are two or more records in the specified database with the
+same value for the given field, just take the information from the first one.
+
+<P>(By the way, this problem has a lot in common with the <CODE>join</CODE> procedure
+from Exercise <A HREF="../ssch22/files.html#join">22.8</A>.)
+
+<P>This is a complicated problem, so we're giving a hint:
+
+<P><PRE>(define (merge-db other-name common-field)
+  (let ((other-db (read-db-from-disk other-name))
+	(original-fields (current-fields)))
+    (set-current-fields! (merge-fields original-fields
+ 				       (db-fields other-db)))
+    (set-current-records! (merge-db-helper original-fields
+					   (current-records)
+					   (db-fields other-db)
+					   (db-records other-db)
+					   common-field))))
+</PRE>
+
+<P>This procedure shows one possible overall structure
+for the program.  You can fill in the structure by writing the
+necessary subprocedures.  (If you prefer to start with a different
+overall design, that's fine too.)  Our earlier suggestion about
+writing a <CODE>get-with-these-fields</CODE> procedure is relevant here also.
+
+<P>
+<H2>Extra Work for Hotshots</H2>
+
+<P>Compare your program to a real database program and see if you can add some
+of its features.  For example, many database programs have primitive
+facilities for averaging the value of a field over certain records.  Another
+feature you might want to try to implement is two-dimensional printing,
+in which each column is a field and each row is a record.
+
+<P>
+<HR>
+<A NAME="ft0" HREF="database.html#text0">[0]</A> [online-only footnote] Alas, two of these
+restaurants are no more.  If you're in the Cal's vicinity, you'll have to
+settle for TC Garden; if you're in the Shin Shin vicinity, try Kirin,
+1767 Solano Ave.<P>
+<A NAME="ft1" HREF="database.html#text1">[1]</A> The double-quote marks are
+necessary because <CODE>albums</CODE> will be used as a filename when we save the
+database to a file.<P>
+<A NAME="ft2" HREF="database.html#text2">[2]</A> We don't need a
+<CODE>matt-likes?</CODE> field because Matt likes all the albums in this database.<P>
+<A NAME="ft3" HREF="database.html#text3">[3]</A> Readers who are old enough to remember the days before
+compact discs may be disturbed by the ambiguity of the word &quot;record,&quot;
+which could mean either a database record or a phonograph record.  Luckily,
+in our example it doesn't matter, because each database record represents
+a phonograph record.  But we intend the word &quot;record&quot; to mean a database
+record; we'll say &quot;album&quot; if we mean the musical kind.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="spread-implement.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch26/part7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch25/spread-implement b/js/games/nluqo.github.io/~bh/ssch25/spread-implement
new file mode 100644
index 0000000..dfc7d41
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch25/spread-implement
@@ -0,0 +1,1835 @@
+<P>
+
+<P><A NAME="accountant"></A><CENTER><IMG SRC="../ss-pics/accountant.jpg" ALT="figure: accountant"></CENTER><P><CENTER>They did spreadsheets by hand in the old
+days.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 25: Implementing the Spreadsheet Program</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 25</H2>
+<H1>Implementing the Spreadsheet Program</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch25.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch24/spread.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="database.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This is a big program and you can't keep it all in your head at once.  In
+this chapter, we'll discuss different parts of the program separately.  For
+example, while we're talking about the screen display procedures, we'll just
+take the rest of the program for granted.  We'll assume that we can ask for
+the value in a cell, and some other part of the program will ensure that we
+can find it out.
+
+<P>Our division of the program includes these parts:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The command processor, which reads user commands and oversees their
+execution.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The specific commands: cell selection commands, <CODE>load</CODE>, and <CODE>put</CODE>.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The formula translator, which turns a formula into an <EM>expression</EM>
+by translating relative cell positions to specific cells.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The dependency manager, which keeps track of which cells' expressions
+depend on which other cells.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The expression evaluator.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The screen printer.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The cell management procedures, which store and retrieve cell
+information for the rest of the program.
+
+</TABLE>
+<P>
+
+<P>The diagram below shows the interconnections among these seven
+parts of the program by showing what information they have to provide for
+each other.
+
+<P><CENTER><IMG SRC="../ss-pics/dataflow.jpg" ALT="figure: dataflow"></CENTER>
+
+<P>(The arrows that <EM>aren't</EM> in the diagram convey as much
+information as the ones that are.  For example, since there is no arrow from
+the evaluator to the printer, we know that when the spreadsheet program
+redisplays the screen, the values printed are found directly in the data
+structure; no new computation of formulas is needed.)
+
+<P><H2>Cells, Cell Names, and Cell IDs</H2>
+
+<P>The spreadsheet program does its work by manipulating cells.  In this
+section we introduce three abstract data types having to do with cells.
+Before we jump into the spreadsheet procedures themselves, we must introduce
+these three types, which are used throughout the program.
+
+<P>Each cell is a data structure that contains various pieces of information,
+including its value and other things that we'll talk about later.  Just as
+these cells are arranged in a two-dimensional pattern on the screen, they
+are kept within the program in a two-dimensional data structure: a vector
+of vectors.
+
+<P>The elements of a vector are selected by number, using <CODE>vector-ref</CODE>.
+Therefore, if we're looking for a particular cell, such as <CODE>c5</CODE>, what
+the program really wants to know is that this cell is in column 3, row
+5.<A NAME="text1" HREF="spread-implement#ft1">[1]</A> If the program refers to cells by
+name, then there will be several occasions for it to split the word <CODE>c5</CODE>
+into its pieces <CODE>c</CODE> and <CODE>5</CODE>, and to convert the letter <CODE>c</CODE> into
+the number 3.  These operations are fairly slow.  To avoid carrying them out
+repeatedly, the spreadsheet program identifies cells internally using a form
+that's invisible to the person using the program, called a &quot;cell ID.&quot;
+
+<P><A NAME="g1"></A>
+<A NAME="g2"></A>
+Therefore, there are three different <A NAME="g3"></A><A NAME="g4"></A>abstract data types in the
+program that have to do with cells: cell names, such as <CODE>c5</CODE>; cell IDs;
+and cells themselves.  We've chosen to represent cell IDs as three-element
+lists like this one:
+
+<P><PRE>(id 3 5)
+</PRE>
+
+
+<P>but you won't see much evidence of that fact within the program
+because we've implemented selectors and constructors for all of these three
+types.  The representation includes the word <CODE>id</CODE> because one facility
+that the program needs is the ability to determine whether some datum is or
+is not a cell ID.  The predicate <CODE>cell-id?</CODE> looks for a list whose first
+element is <CODE>id</CODE>.
+
+<P>The selectors for cell IDs are <CODE>id-row</CODE> and <CODE>id-col</CODE>; both take a
+cell ID as argument and return a number.  The constructor, <CODE>make-id</CODE>,
+takes a column number (not a letter) and a row number as arguments.
+
+<P>When the program recognizes a cell name typed by the user, it calls <CODE>cell-name-&gt;id</CODE> to translate the name to an ID, and only the ID is stored for
+later use.
+
+<P>(These application-specific ADTs are similar to the database of known values
+in the pattern matcher, as opposed to more general-purpose ADTs like
+trees and sentences.)
+
+<P><H2>The Command Processor</H2>
+
+<P>Here's the core of the command processor:
+
+<P><PRE>(define (<A NAME="g5"></A>command-loop)
+  (print-screen)
+  (let ((command-or-formula (read)))
+    (if (equal? command-or-formula 'exit)
+	&quot;Bye!"
+	(begin (process-command command-or-formula)
+	       (command-loop)))))
+</PRE>
+
+<P>This short program runs until the user types <CODE>exit</CODE>, because
+it invokes itself as its last step.  During each invocation, it prints the
+current spreadsheet display, uses <CODE>read</CODE> to read a command, and
+carries out whatever actions that command requires.  Those actions probably
+change something in the spreadsheet data, so the next cycle has to redisplay
+the modified data before accepting another command.
+
+<P><CODE>Print-screen</CODE> is a large chunk of the program and will be discussed
+in its own section.
+
+<P>How does <CODE>process-command</CODE> work?  It looks for the command name (a word
+such as <CODE>put</CODE>) in its list of known commands.  The commands are kept in an
+association list, like this:
+
+<P><PRE>((p &hellip;) (n &hellip;) (b &hellip;) (f &hellip;) (select &hellip;) (put &hellip;) (load &hellip;))
+</PRE>
+
+<P>Each of these sublists contains two elements: the name and the
+procedure that carries out the command.  We'll see shortly how these
+procedures are invoked.
+
+<P>Looking for the command name is a little tricky because in the spreadsheet
+language a command can be invoked either by typing its name inside
+parentheses with arguments, as in Scheme, or by typing the name alone,
+without parentheses, which Scheme wouldn't interpret as a request to invoke
+a procedure.  For example, the argument to <CODE>process-command</CODE> might be a
+list, such as <CODE>(f 3)</CODE>, or just a word, such as <CODE>f</CODE>.  A third case is
+that the argument might not be one of these commands at all, but instead
+might be a formula, just like one that could be used to determine the value
+in a cell.  <CODE>Process-command</CODE> must recognize these three cases:
+
+<P><PRE>(define (<A NAME="g6"></A>process-command command-or-formula)
+  (cond ((and (list? command-or-formula)
+	      (command? (car command-or-formula)))
+	 (execute-command command-or-formula))
+	((command? command-or-formula)
+	 (execute-command (list command-or-formula 1)))
+	(else (exhibit (ss-eval (pin-down command-or-formula
+					  (selection-cell-id)))))))
+</PRE>
+
+<P>The <CODE>command?</CODE> predicate tells whether its argument is one of
+the command names in the list.  As you can see, if a command name is used
+without parentheses, <CODE>process-command</CODE> pretends that it was given an
+argument of <CODE>1</CODE>.
+
+<P><CODE>Execute-command</CODE> looks up the command name in the list of commands,
+then applies the associated procedure to the arguments, if any:
+
+<P>
+<PRE>(define (<A NAME="g7"></A>execute-command command)
+  (apply (get-command (car command))
+	 (cdr command)))
+</PRE>
+
+<P>The <CODE>else</CODE> clause in <CODE>process-command</CODE>, which handles the case
+of a formula typed instead of a command, invokes several procedures
+that you haven't seen yet.  We'll explain them when we get to the section of
+the program that manipulates formulas.  The only one that's used just for
+command processing is <CODE>exhibit</CODE>:
+
+<P><PRE>(define (<A NAME="g8"></A>exhibit val)
+  (show val)
+  (show &quot;Type RETURN to redraw screen&quot;)
+  (read-line)
+  (read-line))
+</PRE>
+
+<P>This prints a value on the screen, gives the user a chance to read
+it, and then, when the user is ready, returns to processing commands.  (This
+will entail redrawing the spreadsheet display; that's why we have to wait for
+the user to hit return.)  The reason that we invoke <CODE>read-line</CODE> twice is
+that the call to <CODE>read</CODE> from <CODE>command-loop</CODE> reads the spreadsheet
+formula you typed but doesn't advance to the next line.  Therefore, the
+first <CODE>read-line</CODE> invocation gobbles that empty line; the second call to
+<CODE>read-line</CODE> reads the (probably empty) line that the user typed in
+response to the prompting message.<A NAME="text2" HREF="spread-implement#ft2">[2]</A>
+
+<P><H2>Cell Selection Commands</H2>
+
+<P>Several commands have to do with selecting a cell.  We'll show just one
+typical procedure, the one that carries out the <CODE>p</CODE> (previous row)
+command:
+
+<P><PRE>(define (<A NAME="g9"></A>prev-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (&lt; (- row delta) 1)
+	(error &quot;Already at top.&quot;)
+	(set-selected-row! (- row delta)))))
+
+(define (<A NAME="g10"></A>set-selected-row! new-row)
+  (select-id! (make-id (id-column (selection-cell-id)) new-row)))
+
+(define (<A NAME="g11"></A>select-id! id)
+  (set-selection-cell-id! id)
+  (adjust-screen-boundaries))
+</PRE>
+ 
+<CODE>Prev-row</CODE> must ensure that the selected cell is within the
+legal boundaries.  Since <CODE>prev-row</CODE> only moves upward, it has to check
+only that we don't go beyond row 1.  (<CODE>Next-row</CODE> will instead check that
+we don't go beyond row 30 in the other direction.) 
+
+<P><CODE>Adjust-screen-boundaries</CODE> checks for the situation in which the newly
+selected cell, although within the bounds of the spreadsheet, is not within
+the portion currently visible on the screen.  In that case the visible
+portion is shifted to include the selected cell.  (The procedure is
+straightforward and uninteresting, so we're not showing it here.  You can
+see it in the complete listing of the spreadsheet program at the end of this
+chapter.)
+
+<P><CODE>Selection-cell-id</CODE> is a procedure that returns the cell ID of the
+cell that's currently selected.  Similarly, <CODE>set-selection-cell-id!</CODE> sets the
+current selection.  There are comparable procedures <CODE>screen-corner-cell-id</CODE> and <CODE>set-screen-corner-cell-id!</CODE> to keep track of
+which cell should be in the upper left corner of the screen display.  There
+is a vector named <CODE>*special-cells*</CODE> that holds these two cell IDs; you
+can see the details in the complete program listing.
+
+<P>
+<H2>The <CODE><B>Load</B></CODE> Command</H2>
+
+<P>Loading commands from files is easy.  The <CODE>command-loop</CODE> procedure,
+which carries out commands from the keyboard, repeatedly reads a command
+with <CODE>read</CODE> and invokes <CODE>process-command</CODE> to carry it out.  To load
+commands from a file, we want to do exactly the same thing, except that we
+read from a file instead of from the keyboard:
+
+<P><PRE>(define (spreadsheet-load filename)
+  (let ((port (open-input-file filename)))
+    (sl-helper port)
+    (close-input-port port)))
+
+(define (sl-helper port)
+  (let ((command (read port)))
+    (if (eof-object? command)
+	'done
+	(begin (show command)
+	       (process-command command)
+	       (sl-helper port)))))
+</PRE>
+
+<P><H2>The <CODE><B>Put</B></CODE> Command</H2>
+
+<P>The <CODE>put</CODE> command takes two arguments, a formula and a place to put it.
+The second of these can specify either a single cell or an entire row or
+column.  (If there is no second argument, then a single cell, namely the
+selected cell, is implied.)  <CODE>Put</CODE> invokes <CODE>put-formula-in-cell</CODE>
+either once or several times, as needed.  If only a single cell is involved,
+then <CODE>put</CODE> calls <CODE>put-formula-in-cell</CODE> directly.  If a row or column
+is specified, then <CODE>put</CODE> uses the auxiliary procedure <CODE>put-all-cells-in-row</CODE> or <CODE>put-all-cells-in-col</CODE> as an intermediary.
+
+<P><PRE>(define (<A NAME="g12"></A>put formula . where)
+  (cond ((null? where)
+	 (put-formula-in-cell formula (selection-cell-id)))
+	((cell-name? (car where))
+	 (put-formula-in-cell formula (cell-name-&gt;id (car where))))
+	((number? (car where))
+	 (put-all-cells-in-row formula (car where)))
+	((letter? (car where))
+	 (put-all-cells-in-col formula (letter-&gt;number (car where))))
+	(else (error &quot;Put it where?&quot;))))
+</PRE>
+
+<P>The only tricky part of this is the first line.  <CODE>Put</CODE> can be
+invoked with either one or two arguments.  Therefore, the dot notation is
+used to allow a variable number of arguments; the parameter <CODE>where</CODE> will
+have as its value not the second argument itself, but a list that either
+contains the second argument or is empty.  Thus, if there is a second
+argument, <CODE>put</CODE> refers to it as <CODE>(car where)</CODE>.
+
+<P><PRE>(define (<A NAME="g13"></A>put-all-cells-in-row formula row)
+  (put-all-helper formula (lambda (col) (make-id col row)) 1 26))
+
+(define (<A NAME="g14"></A>put-all-cells-in-col formula col)
+  (put-all-helper formula (lambda (row) (make-id col row)) 1 30))
+
+(define (<A NAME="g15"></A>put-all-helper formula id-maker this max)
+  (if (&gt; this max)
+      'done
+      (begin (try-putting formula (id-maker this))
+	     (put-all-helper formula id-maker (+ 1 this) max))))
+
+(define (<A NAME="g16"></A>try-putting formula id)
+  (if (or (null? (cell-value id)) (null? formula))
+      (put-formula-in-cell formula id)
+      'do-nothing))
+</PRE>
+
+<P><CODE>Put-all-cells-in-row</CODE> and <CODE>put-all-cells-in-col</CODE> invoke
+<CODE>put-all-helper</CODE>, which repeatedly puts the formula into a
+cell.<A NAME="text3" HREF="spread-implement#ft3">[3]</A> <CODE>Put-all-helper</CODE> is a typical sequential recursion:  Do
+something for this element, and recur for the remaining elements.  The
+difference is that &quot;this element&quot; means a cell ID that combines one
+constant index with one index that varies with each recursive call.  How are
+those two indices combined?  What differs between filling a row and filling
+a column is the <EM>function</EM> used to compute each cell ID.
+
+<P>The substitution model explains how the <CODE>lambda</CODE> expressions used as
+arguments to <CODE>put-all-helper</CODE> implement this idea.  Suppose we are
+putting a formula into every cell in row 4.  Then <CODE>put-all-cells-in-row</CODE>
+will be invoked with the value <CODE>4</CODE> substituted for the parameter <CODE>row</CODE>.  After this substitution, the body is
+
+<P><PRE>(put-all-helper formula (lambda (col) (make-id col 4)) 1 26)
+</PRE>
+
+<P>The <CODE>lambda</CODE> expression creates a procedure that takes a
+column number as argument and returns a cell ID for the cell in row 4 and
+that column.  This is just what <CODE>put-all-helper</CODE> needs.  It invokes the
+procedure with the varying column number as its argument to get the proper
+cell ID.
+
+<P><CODE>Put-all-helper</CODE> doesn't directly invoke <CODE>put-formula-in-cell</CODE>.  The
+reason is that if a particular cell already has a value, then the new
+formula isn't used for that particular cell, unless the formula is empty.
+That is, you can erase an entire row or column at once, but a non-empty
+formula affects only cells that were empty before this command.  <CODE>Try-putting</CODE> decides whether or not to put the formula into each possible
+cell.  (In <CODE>try-putting</CODE>, the third argument to <CODE>if</CODE> could be
+anything; we're interested only in what happens if the condition is true.)
+
+<P>All that's left is, finally, to put the formula into a cell:
+
+<P><PRE>(define (<A NAME="g17"></A>put-formula-in-cell formula id)
+  (put-expr (pin-down formula id) id))
+</PRE>
+
+<P>The two new procedures seen here, <CODE>pin-down</CODE> and <CODE>put-expr</CODE>, are both large sections of the program and are described in the
+next two sections of this chapter.
+
+<P><H2>The Formula Translator</H2>
+
+<P>Suppose the user has said
+
+<P><PRE>(put (* (cell b) (cell c)) d)
+</PRE>
+
+<P>The <CODE>put</CODE> procedure puts this formula into each cell of column
+<CODE>d</CODE> by repeatedly calling <CODE>put-formula-in-cell</CODE>; as an example,
+let's concentrate on cell <CODE>d4</CODE>.
+
+<P>The purpose of the formula is that later we're going to use it to compute a
+value for <CODE>d4</CODE>.  For that purpose, we will need to multiply two
+particular numbers together: the ones in cells <CODE>b4</CODE> and <CODE>c4</CODE>.
+Although the same formula applies to cell <CODE>d5</CODE>, the particular numbers
+multiplied together will be found in different places.  So instead of
+storing the same general formula in every <CODE>d</CODE> cell, what we'd really
+like to store in <CODE>d4</CODE> is something that refers specifically to <CODE>b4</CODE> and <CODE>c4</CODE>.
+
+<P>We'll use the term &quot;expression&quot; for a formula whose cell references have
+been replaced by specific cell IDs.  We started with the idea that we wanted
+to put a formula into a cell; we've refined that idea so that we now want to
+put an expression into the cell.  This goal has two parts:  We must
+translate the formula (as given to us by the user in the <CODE>put</CODE> command)
+to an expression, and we must store that expression in the cell data
+structure.  These two subtasks are handled by <CODE>pin-down</CODE>, discussed in
+this section, and by <CODE>put-expr</CODE>, discussed in the next section.  <CODE>Pin-down</CODE> is entirely functional; the only modification to the spreadsheet
+program's state in this process is carried out by <CODE>put-expr</CODE>.
+
+<P>We'll refer to the process of translating a formula to an expression as
+&quot;pinning down&quot; the formula; the procedure <CODE>pin-down</CODE> carries out this
+process.  It's called &quot;pinning down&quot; because we start with a <EM>general</EM> formula and end up with a <EM>specific</EM> expression.  <CODE>Pin-down</CODE> takes two arguments: The first is, of course, a formula; the
+second is the ID of the cell that will be used as the reference point for
+relative cell positions.  In the context of the <CODE>put</CODE> command, the
+reference point is the cell into which we'll put the expression.  But <CODE>pin-down</CODE> doesn't think about putting anything anywhere; its job is to
+translate a formula (containing relative cell locations) into an expression
+(containing only absolute cell IDs).<A NAME="text4" HREF="spread-implement#ft4">[4]</A> <CODE>Pin-down</CODE> needs a reference point
+as a way to understand the notation <CODE>&lt;3</CODE>, which means &quot;three
+cells before the reference point.&quot;
+
+<P>Let's go back to the specific example.  <CODE>Put-formula-in-cell</CODE> will invoke
+
+<P><PRE>(pin-down '(* (cell b) (cell c)) 'd4)
+</PRE>
+
+<P>and <CODE>pin-down</CODE> will return the expression
+
+<P><PRE>(* (id 2 4) (id 3 4))
+</PRE>
+
+<P>The overall structure of this problem is tree recursive.  That's because a
+formula can be arbitrarily complicated, with sublists of sublists, just like
+a Scheme expression:
+
+<P><PRE>(put (+ (* (cell b) (cell c)) (- (cell 2&lt; 3&gt;) 6)) f)
+</PRE>
+
+<P>Here's <CODE>pin-down</CODE>:
+
+<P><PRE>(define (<A NAME="g18"></A>pin-down formula id)
+  (cond ((cell-name? formula) (cell-name-&gt;id formula))
+	((word? formula) formula)
+	((null? formula) '())
+	((equal? (car formula) 'cell)
+	 (pin-down-cell (cdr formula) id))
+	(else (bound-check
+	       (map (lambda (subformula) (pin-down subformula id))
+		    formula)))))
+</PRE>
+
+
+<P>The base cases of the tree recursion are specific cell names, such
+as <CODE>c3</CODE>; other words, such as numbers and procedure names, which are
+unaffected by <CODE>pin-down</CODE>; null formulas, which indicate that the user is
+erasing the contents of a cell; and sublists that start with the word <CODE>cell</CODE>.  The first three of these are trivial; the fourth, which we will
+describe shortly, is the important case.  If a formula is not one of these
+four base cases, then it's a compound expression.  In that case, we have to
+pin down all of the subexpressions individually.  (We basically <CODE>map</CODE>
+<CODE>pin-down</CODE> over the formula.  That's what makes this process tree
+recursive.)
+
+<P>One complication is that the pinned-down formula might refer to nonexistent
+cells.  For example, saying
+
+<P><PRE>(put (+ (cell 2&lt; 3&lt;) 1) d)
+</PRE>
+
+<P>refers to cells in column <CODE>b</CODE> (two to the left of <CODE>d</CODE>)
+three rows above the current row.  That works for a cell such as <CODE>d7</CODE>,
+referring to cell <CODE>b4</CODE>, but not for <CODE>d2</CODE>, which has no row that's
+three above it.  (There is no row <CODE>-1</CODE>.)   So our program must refrain
+from pinning down this formula for cells <CODE>d1</CODE>, <CODE>d2</CODE>, and <CODE>d3</CODE>.
+<CODE>Pin-down</CODE> will instead return the word <CODE>out-of-bounds</CODE> to signal
+this situation.
+
+<P>The case of a nonexistent cell is discovered by <CODE>pin-down-cell</CODE> at the
+base of a tree recursion.  The <CODE>out-of-bounds</CODE> signal must be returned
+not only by the base case but by the initial invocation of <CODE>pin-down</CODE>.
+That's why <CODE>bound-check</CODE> is used to ensure that if any part of a formula
+is out of bounds, the entire formula will also be considered out of bounds:
+
+<P><PRE>(define (<A NAME="g19"></A>bound-check form)
+  (if (member 'out-of-bounds form)
+      'out-of-bounds
+      form))
+</PRE>
+
+<P>When a formula contains a <CODE>(cell &hellip;)</CODE> sublist, the procedure <CODE>pin-down-cell</CODE> is invoked to translate that notation into a cell ID.
+
+<P>The arguments to <CODE>pin-down-cell</CODE> are a list of the &quot;arguments&quot; of the
+<CODE>cell</CODE> sublist and the reference point's cell ID.  (The word
+&quot;arguments&quot; is in quotation marks because the word <CODE>cell</CODE> doesn't
+represent a Scheme procedure, even though the parenthesized notation looks
+like an invocation.  In a way, the special treatment of <CODE>cell</CODE> by <CODE>pin-down</CODE> is analogous to the treatment of special forms, such as <CODE>cond</CODE>,
+by the Scheme evaluator.)
+
+<P>There can be one or two of these &quot;arguments&quot; to <CODE>cell</CODE>.  A single
+argument is either a number, indicating a row, or a letter, indicating a
+column.  Two arguments specify both a column and a row, in that order:
+
+<P><PRE>(define (<A NAME="g20"></A>pin-down-cell args reference-id)
+  (cond ((null? args)
+	 (error &quot;Bad cell specification: (cell)&quot;))
+	((null? (cdr args))
+	 (cond ((number? (car args))         ; they chose a row
+		(make-id (id-column reference-id) (car args)))
+	       ((letter? (car args))         ; they chose a column
+		(make-id (letter-&gt;number (car args))
+			 (id-row reference-id)))
+	       (else (error &quot;Bad cell specification:"
+			    (cons 'cell args)))))
+	(else
+	 (let ((col (pin-down-col (car args) (id-column reference-id)))
+	       (row (pin-down-row (cadr args) (id-row reference-id))))
+	   (if (and (&gt;= col 1) (&lt;= col 26) (&gt;= row 1) (&lt;= row 30))
+	       (make-id col row)
+	       'out-of-bounds)))))
+</PRE>
+
+<P>In the two-argument case, the job of <CODE>pin-down-col</CODE> and <CODE>pin-down-row</CODE> is to understand notations like <CODE>&lt;3</CODE> for relative
+rows and columns:
+
+<P><PRE>(define (pin-down-col new old)
+  (cond ((equal? new '*) old)
+	((equal? (first new) '&gt;) (+ old (bf new)))
+	((equal? (first new) '&lt;) (- old (bf new)))
+	((letter? new) (letter-&gt;number new))
+	(else (error &quot;What column?&quot;))))
+
+(define (pin-down-row new old)
+  (cond ((number? new) new)
+	((equal? new '*) old)
+	((equal? (first new) '&gt;) (+ old (bf new)))
+	((equal? (first new) '&lt;) (- old (bf new)))
+	(else (error &quot;What row?&quot;))))
+</PRE>
+
+<P><H2>The Dependency Manager</H2>
+
+<P>The remaining part of the <CODE>put</CODE> command is <CODE>put-expr</CODE>, which actually
+stores the translated expression in the cell data structure.  You might
+imagine that putting an expression into a cell would require nothing more
+than invoking a mutator, like this:
+
+<P><PRE>(define (put-expr expr cell)                 ;; wrong
+  (set-cell-expr! cell expr))
+</PRE>
+
+<P>The trouble is that adding an expression to a cell might have many
+consequences beyond the mutation itself.  For example, suppose we say
+
+<P><PRE>(put (+ a3 b2) c4)
+</PRE>
+
+<P>If cells <CODE>a3</CODE> and <CODE>b2</CODE> already have values, we can't just
+put the formula into <CODE>c4</CODE>; we must also compute its value and put that
+value into <CODE>c4</CODE>.
+
+<P>Also, once <CODE>c4</CODE> has a value, that could trigger the computation of
+some other cell's value.  If we've previously said
+
+<P><PRE>(put (+ a3 c4) b5)
+</PRE>
+
+<P>then we're now able to compute a value for <CODE>b5</CODE> because both
+of the cells that it depends on have values.
+
+<P>All this implies that what's inside a cell is more than just an expression, or
+even an expression and a value.  Each cell needs to know which other cells it
+depends on for its value, and also which other cells depend on it.
+
+<P><A NAME="g21"></A>
+<A NAME="g22"></A>
+Our program represents each cell as a four-element vector.  Each cell
+includes a value, an expression, a list of <EM>parents</EM> (the cells that it
+depends on), and a list of <EM>children</EM> (the cells that depend on it).
+The latter two lists contain cell IDs.  So our example cell <CODE>c4</CODE> might
+look like this:
+
+<P><PRE>#(12
+  (+ (id 1 3) (id 2 2))
+  ((id 1 3) (id 2 2))
+  ((id 2 5)))
+</PRE>
+
+<P>In a simpler case, suppose we put a value into a cell that nothing
+depends on, by saying, for example,
+
+<P><PRE>(put 6 a1)
+</PRE>
+
+<P>Then cell <CODE>a1</CODE> would contain
+
+<P><PRE>#(6 6 () ())
+</PRE>
+
+<P>(Remember that a value is just a very simple formula.)
+
+<P>There are selectors <CODE>cell-value</CODE> and so on that take a cell ID as
+argument, and mutators <CODE>set-cell-value!</CODE> and so on that take a cell ID
+and a new value as arguments.  There's also the constructor <CODE>make-cell</CODE>,
+but it's called only at the beginning of the program, when the 780 cells in
+the spreadsheet are created at once.
+
+<P>When a cell is given a new expression, several things change:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The new expression becomes the cell's expression, of course.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The cells mentioned in the expression become the parents of this cell.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">This cell becomes a child of the cells mentioned in the expression.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If all the parents have values, the value of this cell is computed.
+
+</TABLE><P>
+Some of these changes are simple, but others are complicated.  For example,
+it's not enough to tell the cell's new parents that the cell is now their child
+(the third task).  First we have to tell the cell's <EM>old</EM> parents that this cell <EM>isn't</EM> their child any more.  That
+has to be done before we forget the cell's old parents.
+
+<P>Here is an example.  (In the following tables, we represent the data structures
+as if cells were represented by their names, even though really their IDs
+are used.  We've done this to make the example more readable.)  Suppose that
+we have five cells set up like this:
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>(a2)</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE>(a2 b2)</CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ a1 b1)</CODE><TD><CODE>25</CODE>
+<TD><CODE>(a1 b1)</CODE><TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>If we now enter the spreadsheet command
+
+<P><PRE>(put (+ b1 c1) a2)
+</PRE>
+
+<P>the program must first remove <CODE>a2</CODE> from the children of its
+old parents (changes are shown in boldface):
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE><STRONG><BIG>()</BIG></STRONG></CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE><STRONG><BIG>(b2)</BIG></STRONG></CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ a1 b1)</CODE><TD><CODE>25</CODE>
+<TD><CODE>(a1 b1)</CODE><TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Then the program can change the expression and compute a new list of
+parents:
+
+<P>
+<TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>()</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE><STRONG><BIG>(+ b1 c1)</BIG></STRONG></CODE>
+<TD><CODE>25</CODE><TD><CODE><STRONG><BIG>(b1 c1)</BIG></STRONG></CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Next it can tell the new parents to add <CODE>a2</CODE> as a
+child, and can compute <CODE>a2</CODE>'s new value:
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>()</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE><STRONG><BIG>(a2 b2)</BIG></STRONG></CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE><STRONG><BIG>(a2)</BIG></STRONG></CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ b1 c1)</CODE>
+<TD><CODE><STRONG><BIG>13</BIG></STRONG></CODE><TD><CODE>(b1 c1)</CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Changing <CODE>a2</CODE>'s value affects the values of all of its
+children, and also its grandchildren and so on (except that in this example
+there are no grandchildren):
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>()</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE>(a2 b2)</CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>(a2)</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ b1 c1)</CODE>
+<TD><CODE>13</CODE><TD><CODE>(b1 c1)</CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE>
+<TD><CODE><STRONG><BIG>18</BIG></STRONG></CODE><TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Now that we've considered an example, here is the main procedure that
+oversees all these tasks:
+
+<P><PRE>(define (<A NAME="g23"></A>put-expr expr-or-out-of-bounds id)
+  (let ((expr (if (equal? expr-or-out-of-bounds 'out-of-bounds)
+		  '()
+		  expr-or-out-of-bounds)))
+    (for-each (lambda (old-parent)
+		(set-cell-children!
+		 old-parent
+		 (remove id (cell-children old-parent))))
+	      (cell-parents id))
+    (set-cell-expr! id expr)
+    (set-cell-parents! id (remdup (extract-ids expr)))
+    (for-each (lambda (new-parent)
+		(set-cell-children!
+		 new-parent
+		 (cons id (cell-children new-parent))))
+	      (cell-parents id))
+    (figure id)))
+</PRE>
+ 
+Remember that <CODE>put-expr</CODE>'s first argument is the return value
+from <CODE>pin-down</CODE>, so it might be the word <CODE>out-of-bounds</CODE> instead of
+an expression.  In this case, we store an empty list as the expression,
+indicating that there is no active expression for this cell.
+
+<P>Within the body of the <CODE>let</CODE> there are five Scheme expressions, each of
+which carries out one of the tasks we've listed.  The first expression tells
+the cell's former parents that the cell is no longer their child.  The second
+expression stores the expression in the cell.
+
+<P>The third Scheme expression invokes <CODE>extract-ids</CODE> to find all the cell
+ids used in <CODE>expr</CODE>, removes any duplicates, and establishes those
+identified cells as the argument cell's parents.  (You wrote <CODE>remdup</CODE> in
+Exercise <A HREF="../ssch14/recur-patterns.html#remdup">14.3</A>.)  For example, if the <CODE>expr</CODE> is
+
+<P><PRE>(+ (id 4 2) (* (id 1 3) (id 1 3)))
+</PRE>
+
+<P>then <CODE>extract-ids</CODE> will return the list
+
+<P><PRE>((id 4 2) (id 1 3) (id 1 3))
+</PRE>
+
+<P>and <CODE>remdup</CODE> of that will be
+
+<P><PRE>((id 4 2) (id 1 3))
+</PRE>
+
+<P>The fourth expression in the <CODE>let</CODE> tells each of the new parents to
+consider the argument cell as its child.  The fifth expression may or may
+not compute a new value for this cell.  (As we'll see in a moment, that
+process is a little complicated.)
+
+<P>Two of these steps require closer examination.  Here is the procedure used
+in the third step:
+
+<P><PRE>(define (<A NAME="g24"></A>extract-ids expr)
+  (cond ((id? expr) (list expr))
+	((word? expr) '())
+	((null? expr) '())
+	(else (append (extract-ids (car expr))
+		      (extract-ids (cdr expr))))))
+</PRE>
+
+<P>This is a tree recursion.  The first three <CODE>cond</CODE> clauses are
+base cases; cell IDs are included in the returned list, while other words
+are ignored.  For compound expressions, we use the trick of making recursive
+calls on the <CODE>car</CODE> and <CODE>cdr</CODE> of the list.  We combine the results
+with <CODE>append</CODE> because <CODE>extract-ids</CODE> must return a flat list of
+cell IDs, not a cheap tree.
+
+<P>The fifth step in <CODE>put-expr</CODE> is complicated because, as we saw in the
+example, changing the value of one cell may require us to recompute the
+value of other cells:
+
+<P><PRE>(define (<A NAME="g25"></A>figure id)
+  (cond ((null? (cell-expr id)) (setvalue id '()))
+	((all-evaluated? (cell-parents id))
+	 (setvalue id (ss-eval (cell-expr id))))
+	(else (setvalue id '()))))
+
+(define (<A NAME="g26"></A>all-evaluated? ids)
+  (cond ((null? ids) #t)
+	((not (number? (cell-value (car ids)))) #f)
+	(else (all-evaluated? (cdr ids)))))
+
+(define (<A NAME="g27"></A>setvalue id value)
+  (let ((old (cell-value id)))
+    (set-cell-value! id value)
+    (if (not (equal? old value))
+	(for-each figure (cell-children id))
+	'do-nothing)))
+</PRE>
+
+<P><CODE>Figure</CODE> is invoked for the cell whose expression we've just
+changed.  If there is no expression (that is, if we've changed it to an empty
+expression or to an out-of-bounds one), then <CODE>figure</CODE> will remove any old
+value that might be left over from a previous expression.  If there is an
+expression, then <CODE>figure</CODE> will compute and save a new value, but only if
+all of this cell's parents have numeric values.  If any parent doesn't have
+a value, or if its value is a non-numeric label, then <CODE>figure</CODE> has to
+remove the value from this cell.
+
+<P><CODE>Setvalue</CODE> actually puts the new value in the cell.  It first looks up
+the old value.  If the new and old values are different, then all of the
+children of this cell must be re-<CODE>figure</CODE>d.  This, too, is a tree
+recursion because there might be several children, and each of them might
+have several children.
+
+<P>We haven't yet explained how <CODE>ss-eval</CODE> actually computes the value from
+the expression.  That's the subject of the next major part of the program.
+
+<P><H2>The Expression Evaluator</H2>
+
+<P><CODE>Figure</CODE> invokes <CODE>ss-eval</CODE> to convert a cell's expression into its
+value.  Also, we've seen earlier that <CODE>process-command</CODE> uses <CODE>ss-eval</CODE> to evaluate an expression that the user types in response to a
+spreadsheet prompt.  (That is, <CODE>ss-eval</CODE> is invoked if what the user
+types isn't one of the special commands recognized by <CODE>process-command</CODE>
+itself.)
+
+<P>The <CODE>ss</CODE> in <CODE>ss-eval</CODE> stands for &quot;spreadsheet&quot;; it distinguishes
+this procedure from <A NAME="g28"></A><CODE>eval</CODE>, a primitive procedure that evaluates
+Scheme expressions.  As it turns out, <CODE>ss-eval</CODE>'s algorithm is
+similar in many ways to that of Scheme's <CODE>eval</CODE>, although <CODE>ss-eval</CODE>
+is much simpler in other ways.  The experience you already have with
+Scheme's expression evaluation will help you understand the spreadsheet's.
+
+<P>Scheme's evaluator takes an expression and computes the corresponding value.
+The expressions look quite different from the values, but there are
+well-defined rules (the ones we studied in Chapter 3) to translate
+expressions to values.  In the spreadsheet language, as in Scheme, an
+expression can be one of three things:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a constant expression (a number or quoted word), whose value is itself.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a variable (a cell ID, in the case of the spreadsheet language).
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a procedure invocation enclosed in parentheses.
+
+</TABLE><P>
+The spreadsheet language is simpler than Scheme for three main reasons.
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">There are no special forms such as <CODE>if</CODE> or <CODE>define</CODE>.<A NAME="text5" HREF="spread-implement#ft5">[5]</A>
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The only variables, the cell IDs, are global; in Scheme, much of the
+complexity of evaluation has to do with variables that are local to
+procedures (i.e., formal parameters).
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The only procedures are primitives, so there is no need to evaluate
+procedure bodies.
+
+</TABLE><P>
+The structure of <CODE>ss-eval</CODE> is a <CODE>cond</CODE> whose clauses handle the 
+three types of expressions.  Constants and variables are easy;
+invocations require recursively evaluating the arguments before the
+procedure can be invoked.
+
+<P><PRE>(define (<A NAME="g29"></A>ss-eval expr)
+  (cond ((number? expr) expr)
+	((quoted? expr) (quoted-value expr))
+	((id? expr) (cell-value expr))
+	((invocation? expr)
+	 (apply (get-function (car expr))
+		(map ss-eval (cdr expr))))
+	(else (error &quot;Invalid expression:&quot; expr))))
+</PRE>
+
+<P>The value of a number is itself; the value of a quoted word is the word
+without the quotation mark.  (Actually, by the time <CODE>ss-eval</CODE> sees a
+quoted word, Scheme has translated the <CODE>'abc</CODE> notation into <CODE>(quote abc)</CODE> and that's what we deal with here.  Also, double-quoted strings
+look different to the program from single-quoted words.)
+
+<P><PRE>(define (<A NAME="g30"></A>quoted? expr)
+  (or (string? expr)
+      (and (list? expr) (equal? (car expr) 'quote))))
+
+(define (<A NAME="g31"></A>quoted-value expr)
+  (if (string? expr)
+      expr
+      (cadr expr)))
+</PRE>
+
+<P>The third clause checks for a cell ID; the value of such an
+expression is the value stored in the corresponding cell.
+
+<P>If an expression is none of those things, it had better be a function
+invocation, that is, a list.  In that case, <CODE>ss-eval</CODE> has to do three
+things:  It looks up the function name in a table (as we did earlier for
+spreadsheet commands); it recursively evaluates all the argument
+subexpressions; and then it can invoke <CODE>apply</CODE> to apply the procedure to
+the argument values.
+
+<P><CODE>Get-function</CODE> looks up a function name in the name-to-function
+association list and returns the corresponding Scheme procedure.  Thus, only
+the functions included in the list can be used in spreadsheet formulas.
+
+<P>The entire expression evaluator, including <CODE>ss-eval</CODE> and its helper
+procedures, is functional.  Like the formula translator, it doesn't change
+the state of the spreadsheet.
+
+<P><H2>The Screen Printer</H2>
+
+<P>The procedures that print the spreadsheet on the screen are straightforward
+but full of details.  Much of the work here goes into those details.
+
+<P>As we mentioned earlier, a better spreadsheet program wouldn't redraw the
+entire screen for each command but would change only  the parts of the
+screen that were affected by the previous command.  However, Scheme does not
+include a standard way to control the positioning of text on the screen, so
+we're stuck with this approach.
+
+<P><PRE>(define (<A NAME="g32"></A>print-screen)
+  (newline)
+  (newline)
+  (newline)
+  (show-column-labels (id-column (screen-corner-cell-id)))
+  (show-rows 20
+	     (id-column (screen-corner-cell-id))
+	     (id-row (screen-corner-cell-id)))
+  (display-cell-name (selection-cell-id))
+  (show (cell-value (selection-cell-id)))
+  (display-expression (cell-expr (selection-cell-id)))
+  (newline)
+  (display &quot;?? &quot;))
+</PRE>
+
+<P><CODE>Screen-corner-cell-id</CODE> returns the ID of the cell that
+should be shown in the top left corner of the display; <CODE>selection-cell-id</CODE> returns the ID of the selected cell.
+
+<P><CODE>Show-column-labels</CODE> prints the first row of the display, the one with
+the column letters.  <CODE>Show-rows</CODE> is a sequential recursion that prints
+the actual rows of the spreadsheet, starting with the row number of the <CODE>screen-corner</CODE> cell and continuing for 20 rows.  (There are 30 rows in the
+entire spreadsheet, but they don't all fit on the screen at once.)  The rest
+of the procedure displays the value and expression of the selected cell at
+the bottom of the screen and prompts for the next command.
+
+<P>Why isn't <CODE>display-expression</CODE> just <CODE>display</CODE>?
+Remember that the spreadsheet stores expressions in a form like
+
+<P><PRE>(+ (id 2 5) (id 6 3))
+</PRE>
+
+<P>but the user wants to see
+
+<P><PRE>(+ b5 f3)
+</PRE>
+
+<P><CODE>Display-expression</CODE> is yet another tree recursion over
+expressions.  Just as <CODE>pin-down</CODE> translates cell names into cell IDs,
+<CODE>display-expression</CODE> translates IDs back into names.  (But <CODE>display-expression</CODE> prints as it goes along, instead of reconstructing and
+returning a list.)  The definition of <CODE>display-expression</CODE>, along with
+the remaining details of printing, can be seen in the full program listing
+at the end of this chapter.
+
+<P>Just to give the flavor of those details, here is the part that displays
+the rectangular array of cell values.  <CODE>Show-rows</CODE> is a sequential
+recursion in which each invocation prints an entire row.  It does so by
+invoking <CODE>show-row</CODE>, another sequential recursion, in which each
+invocation prints a single cell value.
+
+<P><PRE>(define (show-rows to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	 (display (align row 2 0))
+	 (display &quot; &quot;)
+	 (show-row 6 col row)
+	 (newline)
+	 (show-rows (- to-go 1) col (+ row 1)))))
+
+(define (show-row to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	   (display (if (selected-indices? col row) &quot;&gt;&quot; &quot; &quot;))
+	   (display-value (cell-value-from-indices col row))
+	   (display (if (selected-indices? col row) &quot;&lt;&quot; &quot; &quot;))
+	   (show-row (- to-go 1) (+ 1 col) row))))
+
+(define (selected-indices? col row)
+  (and (= col (id-column (selection-cell-id)))
+       (= row (id-row (selection-cell-id)))))
+</PRE>
+
+<P>Why didn't we write <CODE>show-row</CODE> in the following way?
+
+<P><PRE>(define (show-row to-go col row)             ;; alternate version
+  (cond ((= to-go 0) 'done)
+	(else
+	 (let ((id (make-id col row)))
+	   (display (if (equal? id (selection-cell-id)) &quot;&gt;&quot; &quot; &quot;))
+	   (display-value (cell-value id))
+	   (display (if (equal? id (selection-cell-id)) &quot;&lt;&quot; &quot; &quot;))
+	   (show-row (- to-go 1) (+ 1 col) row)))))
+</PRE>
+
+<P>That would have worked fine and would have been a little clearer.
+In fact, we did write <CODE>show-row</CODE> this way originally.  But it's a little
+time-consuming to construct an ID, and <CODE>show-row</CODE> is called 120 times
+whenever <CODE>print-screen</CODE> is used.  Since printing the screen was
+annoyingly slow, we sped things up as much as we could, even at the cost of
+this kludge.
+
+<P><H2>The Cell Manager</H2>
+
+<P>The program keeps information about the current status of the spreadsheet
+cells in a vector called <CODE>*the-spreadsheet-array*</CODE>.  It contains all of
+the 780 cells that make up the spreadsheet (30 rows of 26 columns).  It's
+not a vector of length 780; rather, it's a vector of length 30, each of whose
+elements is itself a vector of length 26.  In other words, each element of
+the spreadsheet array is a vector representing one row of the spreadsheet.
+(Each element of <EM>those</EM> vectors is one cell, which, as you recall, is
+represented as a vector of length four.  So the spreadsheet array is a
+vector of vectors of vectors!)
+
+<P>The selectors for the parts of a cell take the cell's ID as argument and
+return one of the four elements of the cell vector.  Each must therefore be
+implemented as two steps:  We must find the cell vector, given its ID; and
+we must then select an element from the cell vector.  The first step is
+handled by the selector <CODE>cell-structure</CODE> that takes a cell ID as
+argument:
+
+<P><PRE>(define (<A NAME="g33"></A>cell-structure id)
+  (global-array-lookup (id-column id)
+		       (id-row id)))
+
+(define (<A NAME="g34"></A>global-array-lookup col row)
+  (if (and (&lt;= row 30) (&lt;= col 26))
+      (vector-ref (vector-ref *the-spreadsheet-array* (- row 1))
+		  (- col 1))
+      (error &quot;Out of bounds&quot;)))
+</PRE>
+
+<P><CODE>Global-array-lookup</CODE> makes sure the desired cell exists.
+It also compensates for the fact that Scheme vectors begin with element
+number zero, while our spreadsheet begins with row and column number one.
+Two invocations of <CODE>vector-ref</CODE> are needed, one to select an entire row
+and the next to select a cell within that row.
+
+<P>Selectors and mutators for the parts of a cell are written using
+<CODE>cell-structure</CODE>:
+
+<P><PRE>(define (<A NAME="g35"></A>cell-value id)
+  (vector-ref (cell-structure id) 0))
+
+(define (<A NAME="g36"></A>set-cell-value! id val)
+  (vector-set! (cell-structure id) 0 val))
+
+(define (<A NAME="g37"></A>cell-expr id)
+  (vector-ref (cell-structure id) 1))
+
+(define (<A NAME="g38"></A>set-cell-expr! id val)
+  (vector-set! (cell-structure id) 1 val))
+
+(define (<A NAME="g39"></A>cell-parents id)
+  (vector-ref (cell-structure id) 2))
+
+(define (<A NAME="g40"></A>set-cell-parents! id val)
+  (vector-set! (cell-structure id) 2 val))
+
+(define (<A NAME="g41"></A>cell-children id)
+  (vector-ref (cell-structure id) 3))
+
+(define (<A NAME="g42"></A>set-cell-children! id val)
+  (vector-set! (cell-structure id) 3 val))
+</PRE>
+
+<P>The constructor is
+
+<P><PRE>(define (make-cell)
+  (vector '() '() '() '()))
+</PRE>
+
+<P>The spreadsheet program begins by invoking <CODE>init-array</CODE> to set up this
+large array.  (Also, it sets the initial values of the selected cell and the
+screen corner.)
+
+<P><PRE>(define (<A NAME="g43"></A>spreadsheet)
+  (init-array)
+  (set-selection-cell-id! (make-id 1 1))
+  (set-screen-corner-cell-id! (make-id 1 1))
+  (command-loop))
+
+(define *the-spreadsheet-array* (make-vector 30))
+
+(define (<A NAME="g44"></A>init-array)
+  (fill-array-with-rows 29))
+
+(define (<A NAME="g45"></A>fill-array-with-rows n)
+  (if (&lt; n 0)
+      'done
+      (begin (vector-set! *the-spreadsheet-array* n (make-vector 26))
+	     (fill-row-with-cells
+	      (vector-ref *the-spreadsheet-array* n) 25)
+	     (fill-array-with-rows (- n 1)))))
+
+(define (<A NAME="g46"></A>fill-row-with-cells vec n)
+  (if (&lt; n 0)
+      'done
+      (begin (vector-set! vec n (make-cell))
+	     (fill-row-with-cells vec (- n 1)))))
+</PRE>
+
+<P>
+<P>That's the end of the project, apart from some straightforward procedures
+such as <CODE>letter-&gt;number</CODE> that you can look up in the complete listing
+if you're interested.
+
+<P><H2>Complete Program Listing</H2>
+
+<P><P><P><PRE>
+(define (spreadsheet)
+  (init-array)
+  (set-selection-cell-id! (make-id 1 1))
+  (set-screen-corner-cell-id! (make-id 1 1))
+  (command-loop))
+
+(define (command-loop)
+  (print-screen)
+  (let ((command-or-formula (read)))
+    (if (equal? command-or-formula 'exit)
+	"Bye!"
+	(begin (process-command command-or-formula)
+	       (command-loop)))))
+
+(define (process-command command-or-formula)
+  (cond ((and (list? command-or-formula)
+	      (command? (car command-or-formula)))
+	 (execute-command command-or-formula))
+	((command? command-or-formula)
+	 (execute-command (list command-or-formula 1)))
+	(else (exhibit (ss-eval (pin-down command-or-formula
+					  (selection-cell-id)))))))
+
+(define (execute-command command)
+  (apply (get-command (car command))
+	 (cdr command)))
+
+(define (exhibit val)
+  (show val)
+  (show "Type RETURN to redraw screen")
+  (read-line)
+  (read-line))
+
+
+;;; Commands
+
+;; Cell selection commands: F, B, N, P, and SELECT
+
+(define (prev-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (< (- row delta) 1)
+	(error "Already at top.")
+	(set-selected-row! (- row delta)))))
+
+(define (next-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (> (+ row delta) 30)
+	(error "Already at bottom.")
+	(set-selected-row! (+ row delta)))))
+
+(define (prev-col delta)
+  (let ((col (id-column (selection-cell-id))))
+    (if (< (- col delta) 1)
+	(error "Already at left.")
+	(set-selected-column! (- col delta)))))
+
+(define (next-col delta)
+  (let ((col (id-column (selection-cell-id))))
+    (if (> (+ col delta) 26)
+	(error "Already at right.")
+	(set-selected-column! (+ col delta)))))
+
+(define (set-selected-row! new-row)
+  (select-id! (make-id (id-column (selection-cell-id)) new-row)))
+
+(define (set-selected-column! new-column)
+  (select-id! (make-id new-column (id-row (selection-cell-id)))))
+
+(define (select-id! id)
+  (set-selection-cell-id! id)
+  (adjust-screen-boundaries))
+
+(define (select cell-name)
+  (select-id! (cell-name->id cell-name)))
+
+(define (adjust-screen-boundaries)
+  (let ((row (id-row (selection-cell-id)))
+	(col (id-column (selection-cell-id))))
+    (if (< row (id-row (screen-corner-cell-id)))
+	(set-corner-row! row)
+	'do-nothing)
+    (if (>= row (+ (id-row (screen-corner-cell-id)) 20))
+	(set-corner-row! (- row 19))
+	'do-nothing)
+    (if (< col (id-column (screen-corner-cell-id)))
+	(set-corner-column! col)
+	'do-nothing)
+    (if (>= col (+ (id-column (screen-corner-cell-id)) 6))
+	(set-corner-column! (- col 5))
+	'do-nothing)))
+
+(define (set-corner-row! new-row)
+  (set-screen-corner-cell-id!
+   (make-id (id-column (screen-corner-cell-id)) new-row)))
+
+(define (set-corner-column! new-column)
+  (set-screen-corner-cell-id!
+   (make-id new-column (id-row (screen-corner-cell-id)))))
+
+
+;; LOAD
+
+(define (spreadsheet-load filename)
+  (let ((port (open-input-file filename)))
+    (sl-helper port)
+    (close-input-port port)))
+
+(define (sl-helper port)
+  (let ((command (read port)))
+    (if (eof-object? command)
+	'done
+	(begin (show command)
+	       (process-command command)
+	       (sl-helper port)))))
+
+
+;; PUT
+
+(define (put formula . where)
+  (cond ((null? where)
+	 (put-formula-in-cell formula (selection-cell-id)))
+	((cell-name? (car where))
+	 (put-formula-in-cell formula (cell-name->id (car where))))
+	((number? (car where))
+	 (put-all-cells-in-row formula (car where)))
+	((letter? (car where))
+	 (put-all-cells-in-col formula (letter->number (car where))))
+	(else (error "Put it where?"))))
+
+(define (put-all-cells-in-row formula row)
+  (put-all-helper formula (lambda (col) (make-id col row)) 1 26))
+
+(define (put-all-cells-in-col formula col)
+  (put-all-helper formula (lambda (row) (make-id col row)) 1 30))
+
+(define (put-all-helper formula id-maker this max)
+  (if (> this max)
+      'done
+      (begin (try-putting formula (id-maker this))
+	     (put-all-helper formula id-maker (+ 1 this) max))))
+
+(define (try-putting formula id)
+  (if (or (null? (cell-value id)) (null? formula))
+      (put-formula-in-cell formula id)
+      'do-nothing))
+
+(define (put-formula-in-cell formula id)
+  (put-expr (pin-down formula id) id))
+
+
+;;; The Association List of Commands
+
+(define (command? name)
+  (assoc name *the-commands*))
+
+(define (get-command name)
+  (let ((result (assoc name *the-commands*)))
+    (if (not result)
+	#f
+	(cadr result))))
+
+(define *the-commands*
+  (list (list 'p prev-row)
+	(list 'n next-row)
+	(list 'b prev-col)
+	(list 'f next-col)
+	(list 'select select)
+	(list 'put put)
+	(list 'load spreadsheet-load)))
+
+
+;;; Pinning Down Formulas Into Expressions
+
+(define (pin-down formula id)
+  (cond ((cell-name? formula) (cell-name->id formula))
+	((word? formula) formula)
+	((null? formula) '())
+	((equal? (car formula) 'cell)
+	 (pin-down-cell (cdr formula) id))
+	(else (bound-check
+	       (map (lambda (subformula) (pin-down subformula id))
+		    formula)))))
+
+(define (bound-check form)
+  (if (member 'out-of-bounds form)
+      'out-of-bounds
+      form))
+
+(define (pin-down-cell args reference-id)
+  (cond ((null? args)
+	 (error "Bad cell specification: (cell)"))
+	((null? (cdr args))
+	 (cond ((number? (car args))         ; they chose a row
+		(make-id (id-column reference-id) (car args)))
+	       ((letter? (car args))         ; they chose a column
+		(make-id (letter->number (car args))
+			 (id-row reference-id)))
+	       (else (error "Bad cell specification:"
+			    (cons 'cell args)))))
+	(else
+	 (let ((col (pin-down-col (car args) (id-column reference-id)))
+	       (row (pin-down-row (cadr args) (id-row reference-id))))
+	   (if (and (>= col 1) (<= col 26) (>= row 1) (<= row 30))
+	       (make-id col row)
+	       'out-of-bounds)))))
+
+(define (pin-down-col new old)
+  (cond ((equal? new '*) old)
+	((equal? (first new) '>) (+ old (bf new)))
+	((equal? (first new) '<) (- old (bf new)))
+	((letter? new) (letter->number new))
+	(else (error "What column?"))))
+
+(define (pin-down-row new old)
+  (cond ((number? new) new)
+	((equal? new '*) old)
+	((equal? (first new) '>) (+ old (bf new)))
+	((equal? (first new) '<) (- old (bf new)))
+	(else (error "What row?"))))
+
+
+;;; Dependency Management
+
+(define (put-expr expr-or-out-of-bounds id)
+  (let ((expr (if (equal? expr-or-out-of-bounds 'out-of-bounds)
+		  '()
+		  expr-or-out-of-bounds)))
+    (for-each (lambda (old-parent)
+		(set-cell-children!
+		 old-parent
+		 (remove id (cell-children old-parent))))
+	      (cell-parents id))
+    (set-cell-expr! id expr)
+    (set-cell-parents! id (remdup (extract-ids expr)))
+    (for-each (lambda (new-parent)
+		(set-cell-children!
+		 new-parent
+		 (cons id (cell-children new-parent))))
+	      (cell-parents id))
+    (figure id)))
+
+(define (extract-ids expr)
+  (cond ((id? expr) (list expr))
+	((word? expr) '())
+	((null? expr) '())
+	(else (append (extract-ids (car expr))
+		      (extract-ids (cdr expr))))))
+
+(define (figure id)
+  (cond ((null? (cell-expr id)) (setvalue id '()))
+	((all-evaluated? (cell-parents id))
+	 (setvalue id (ss-eval (cell-expr id))))
+	(else (setvalue id '()))))
+
+(define (all-evaluated? ids)
+  (cond ((null? ids) #t)
+	((not (number? (cell-value (car ids)))) #f)
+	(else (all-evaluated? (cdr ids)))))
+
+(define (setvalue id value)
+  (let ((old (cell-value id)))
+    (set-cell-value! id value)
+    (if (not (equal? old value))
+	(for-each figure (cell-children id))
+	'do-nothing)))
+
+
+;;; Evaluating Expressions
+
+(define (ss-eval expr)
+  (cond ((number? expr) expr)
+	((quoted? expr) (quoted-value expr))
+	((id? expr) (cell-value expr))
+	((invocation? expr)
+	 (apply (get-function (car expr))
+		(map ss-eval (cdr expr))))
+	(else (error "Invalid expression:" expr))))
+
+(define (quoted? expr)
+  (or (string? expr)
+      (and (list? expr) (equal? (car expr) 'quote))))
+
+(define (quoted-value expr)
+  (if (string? expr)
+      expr
+      (cadr expr)))
+
+(define (invocation? expr)
+  (list? expr))
+
+(define (get-function name)
+  (let ((result (assoc name *the-functions*)))
+    (if (not result)
+	(error "No such function: " name)
+	(cadr result))))
+
+(define *the-functions*
+  (list (list '* *)
+	(list '+ +)
+	(list '- -)
+	(list '/ /)
+	(list 'abs abs)
+	(list 'acos acos)
+	(list 'asin asin)
+	(list 'atan atan)
+	(list 'ceiling ceiling)
+	(list 'cos cos)
+	(list 'count count)
+	(list 'exp exp)
+	(list 'expt expt)
+	(list 'floor floor)
+	(list 'gcd gcd)
+	(list 'lcm lcm)
+	(list 'log log)
+	(list 'max max)
+	(list 'min min)
+	(list 'modulo modulo)
+	(list 'quotient quotient)
+	(list 'remainder remainder)
+	(list 'round round)
+	(list 'sin sin)
+	(list 'sqrt sqrt)
+	(list 'tan tan)
+	(list 'truncate truncate)))
+
+;;; Printing the Screen
+
+(define (print-screen)
+  (newline)
+  (newline)
+  (newline)
+  (show-column-labels (id-column (screen-corner-cell-id)))
+  (show-rows 20
+	     (id-column (screen-corner-cell-id))
+	     (id-row (screen-corner-cell-id)))
+  (display-cell-name (selection-cell-id))
+  (display ":  ")
+  (show (cell-value (selection-cell-id)))
+  (display-expression (cell-expr (selection-cell-id)))
+  (newline)
+  (display "?? "))
+
+(define (display-cell-name id)
+  (display (number->letter (id-column id)))
+  (display (id-row id)))
+
+(define (show-column-labels col-number)
+  (display "  ")
+  (show-label 6 col-number)
+  (newline))
+
+(define (show-label to-go this-col-number)
+  (cond ((= to-go 0) '())
+	(else
+	 (display "  -----")
+	 (display (number->letter this-col-number))
+	 (display "----")
+	 (show-label (- to-go 1) (+ 1 this-col-number)))))
+
+(define (show-rows to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	 (display (align row 2 0))
+	 (display " ")
+	 (show-row 6 col row)
+	 (newline)
+	 (show-rows (- to-go 1) col (+ row 1)))))
+
+(define (show-row to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	   (display (if (selected-indices? col row) ">" " "))
+	   (display-value (cell-value-from-indices col row))
+	   (display (if (selected-indices? col row) "<" " "))
+	   (show-row (- to-go 1) (+ 1 col) row))))
+
+(define (selected-indices? col row)
+  (and (= col (id-column (selection-cell-id)))
+       (= row (id-row (selection-cell-id)))))
+
+(define (display-value val)
+  (display (align (if (null? val) "" val) 10 2)))
+
+(define (display-expression expr)
+  (cond ((null? expr) (display '()))
+	((quoted? expr) (display (quoted-value expr)))
+	((word? expr) (display expr))
+	((id? expr)
+	 (display-cell-name expr))
+	(else (display-invocation expr))))
+
+(define (display-invocation expr)
+  (display "(")
+  (display-expression (car expr))
+  (for-each (lambda (subexpr)
+	      (display " ")
+	      (display-expression subexpr))
+	    (cdr expr))
+  (display ")"))
+      
+
+;;; Abstract Data Types
+
+;; Special cells: the selected cell and the screen corner
+
+(define *special-cells* (make-vector 2))
+
+(define (selection-cell-id)
+  (vector-ref *special-cells* 0))
+
+(define (set-selection-cell-id! new-id)
+  (vector-set! *special-cells* 0 new-id))
+
+(define (screen-corner-cell-id)
+  (vector-ref *special-cells* 1))
+
+(define (set-screen-corner-cell-id! new-id)
+  (vector-set! *special-cells* 1 new-id))
+
+
+;; Cell names
+
+(define (cell-name? expr)
+  (and (word? expr)
+       (letter? (first expr))
+       (number? (bf expr))))
+
+(define (cell-name-column cell-name)
+  (letter->number (first cell-name)))
+
+(define (cell-name-row cell-name)
+  (bf cell-name))
+
+(define (cell-name->id cell-name)
+  (make-id (cell-name-column cell-name)
+	   (cell-name-row cell-name)))
+	
+;; Cell IDs
+
+(define (make-id col row)
+  (list 'id col row))
+
+(define (id-column id)
+  (cadr id))
+
+(define (id-row id)
+  (caddr id))
+
+(define (id? x)
+  (and (list? x)
+       (not (null? x))
+       (equal? 'id (car x))))
+
+;; Cells
+
+(define (make-cell)
+  (vector '() '() '() '()))
+
+(define (cell-value id)
+  (vector-ref (cell-structure id) 0))
+
+(define (cell-value-from-indices col row)
+  (vector-ref (cell-structure-from-indices col row) 0))
+
+(define (cell-expr id)
+  (vector-ref (cell-structure id) 1))
+
+(define (cell-parents id)
+  (vector-ref (cell-structure id) 2))
+
+(define (cell-children id)
+  (vector-ref (cell-structure id) 3))
+
+(define (set-cell-value! id val)
+  (vector-set! (cell-structure id) 0 val))
+
+(define (set-cell-expr! id val)
+  (vector-set! (cell-structure id) 1 val))
+
+(define (set-cell-parents! id val)
+  (vector-set! (cell-structure id) 2 val))
+
+(define (set-cell-children! id val)
+  (vector-set! (cell-structure id) 3 val))
+
+(define (cell-structure id)
+  (global-array-lookup (id-column id)
+		       (id-row id)))
+
+(define (cell-structure-from-indices col row)
+  (global-array-lookup col row))
+
+(define *the-spreadsheet-array* (make-vector 30))
+
+(define (global-array-lookup col row)
+  (if (and (<= row 30) (<= col 26))
+      (vector-ref (vector-ref *the-spreadsheet-array* (- row 1))
+		  (- col 1))
+      (error "Out of bounds")))
+
+(define (init-array)
+  (fill-array-with-rows 29))
+
+(define (fill-array-with-rows n)
+  (if (< n 0)
+      'done
+      (begin (vector-set! *the-spreadsheet-array* n (make-vector 26))
+	     (fill-row-with-cells
+	      (vector-ref *the-spreadsheet-array* n) 25)
+	     (fill-array-with-rows (- n 1)))))
+
+(define (fill-row-with-cells vec n)
+  (if (< n 0)
+      'done
+      (begin (vector-set! vec n (make-cell))
+	     (fill-row-with-cells vec (- n 1)))))
+
+;;; Utility Functions
+
+(define alphabet
+  '#(a b c d e f g h i j k l m n o p q r s t u v w x y z))
+
+(define (letter? something)
+  (and (word? something)
+       (= 1 (count something))
+       (vector-member something alphabet)))
+
+(define (number->letter num)
+  (vector-ref alphabet (- num 1)))
+
+(define (letter->number letter)
+  (+ (vector-member letter alphabet) 1))
+
+(define (vector-member thing vector)
+  (vector-member-helper thing vector 0))
+
+(define (vector-member-helper thing vector index)
+  (cond ((= index (vector-length vector)) #f)
+	((equal? thing (vector-ref vector index)) index)
+	(else (vector-member-helper thing vector (+ 1 index)))))
+
+(define (remdup lst)
+  (cond ((null? lst) '())
+	((member (car lst) (cdr lst))
+	 (remdup (cdr lst)))
+	(else (cons (car lst) (remdup (cdr lst))))))
+
+(define (remove bad-item lst)
+  (filter (lambda (item) (not (equal? item bad-item)))
+	  lst))
+</PRE><P>
+
+
+
+<P><H2>Exercises</H2>
+
+<P><B>25.1</B>&nbsp;&nbsp;The &quot;magic numbers&quot; 26 and 30 (and some numbers derived from
+them) appear many times in the text of this program.  It's easy to imagine
+wanting more rows or columns.
+
+<P>Create global variables <CODE>total-cols</CODE> and <CODE>total-rows</CODE> with values 26
+and 30 respectively.  Then modify the spreadsheet program to refer to these
+variables rather than to the numbers 26 and 30 directly.  When you're done,
+redefine <CODE>total-rows</CODE> to be 40 and see if it works.
+
+
+<P>
+<B>25.2</B>&nbsp;&nbsp;Suggest a way to notate columns beyond <CODE>z</CODE>.  What procedures would have
+to change to accommodate this?
+
+
+<P>
+<B>25.3</B>&nbsp;&nbsp;Modify the program so that the spreadsheet array is kept as a single vector
+of 780 elements, instead of a vector of 30 vectors of 26 vectors.  What
+procedures do you have to change to make this work?  (It shouldn't be very
+many.)
+
+
+<P>
+<B>25.4</B>&nbsp;&nbsp;The procedures <CODE>get-function</CODE> and <CODE>get-command</CODE> are almost identical
+in structure; both look for an argument in an association list.  They
+differ, however, in their handling of the situation in which the argument is
+not present in the list.  Why?
+
+
+<P>
+<B>25.5</B>&nbsp;&nbsp;The reason we had to include the word <CODE>id</CODE> in each cell ID was so we
+would be able to distinguish a list representing a cell ID from a list of
+some other kind in an expression.  Another way to distinguish cell IDs would
+be to represent them as vectors, since vectors do not otherwise appear
+within expressions.  Change the implementation of cell IDs from
+three-element lists to two-element vectors:
+
+<P><PRE>&gt; (make-id 4 2)
+#(4 2)
+</PRE>
+
+<P>Make sure the rest of the program still works.
+
+
+<P>
+<B>25.6</B>&nbsp;&nbsp;The <CODE>put</CODE> command can be used to label a cell by using a quoted word
+as the &quot;formula.&quot; How does that work?  For example, how is such a formula
+translated into an expression?  How is that expression evaluated?  What if
+the labeled cell has children?
+
+
+<P>
+<B>25.7</B>&nbsp;&nbsp;Add commands to move the &quot;window&quot; of cells displayed on the screen
+without changing the selected cell.  (There are a lot of possible user
+interfaces for this feature; pick anything reasonable.)
+
+
+<P>
+<B>25.8</B>&nbsp;&nbsp;Modify the <CODE>put</CODE> command so that after doing its work it prints
+
+<P><PRE>14 cells modified
+</PRE>
+
+<P>(but, of course, using the actual number of cells modified
+instead of 14).  This number may not be the entire length of a row or column
+because <CODE>put</CODE> doesn't change an existing formula in a cell when you ask
+it to set an entire row or column.
+
+
+<P>
+<B>25.9</B>&nbsp;&nbsp;Modify the program so that each column remembers the number of digits that
+should be displayed after the decimal point (currently always 2).  Add a
+command to set this value for a specified column.  And, of course, modify
+<CODE>print-screen</CODE> to use this information.
+
+
+<P>
+<B>25.10</B>&nbsp;&nbsp;Add an <CODE>undo</CODE> command, which causes the effect of the previous command
+to be nullified.  That is, if the previous command was a cell selection
+command, <CODE>undo</CODE> will return to the previously selected cell.  If the
+previous command was a <CODE>put</CODE>, <CODE>undo</CODE> will re-<CODE>put</CODE> the previous
+expressions in every affected cell.  You don't need to undo <CODE>load</CODE> or
+<CODE>exit</CODE> commands.  To do this, you'll need to modify the way the other
+commands work.
+
+
+<P>
+<B>25.11</B>&nbsp;&nbsp;Add an <CODE>accumulate</CODE> procedure that can be used as a function in
+formulas.  Instead of specifying a sequence of cells explicitly, in a
+formula like
+
+<P><PRE>(put (+ c2 c3 c4 c5 c6 c7) c10)
+</PRE>
+
+<P>we want to be able to say
+
+<P><PRE>(put (accumulate + c2 c7) c10)
+</PRE>
+
+<P>In general, the two cell names should be taken as corners of a
+rectangle, all of whose cells should be included, so these two commands
+are equivalent:
+
+<P><PRE>(put (accumulate * a3 c5) d7)
+(put (* a3 b3 c3 a4 b4 c4 a5 b5 c5) d7)
+</PRE>
+
+<P>Modify <CODE>pin-down</CODE> to convert the <CODE>accumulate</CODE> form into
+the corresponding spelled-out form.
+
+
+<P>
+<B>25.12</B>&nbsp;&nbsp;Add variable-width columns to the spreadsheet.  There should be a command to
+set the print width of a column.  This may mean that the spreadsheet can
+display more or fewer than six columns.
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="spread-implement#text1">[1]</A> The vector elements are numbered from zero, but we number rows and
+columns from one, subtracting one in the selector that actually extracts
+information from the array of cells.<P>
+<A NAME="ft2" HREF="spread-implement#text2">[2]</A> Not every version of Scheme has
+this behavior.  If you find that you have to hit <CODE>return</CODE> twice after exhibiting
+the value of a formula, take out one of the <CODE>read-line</CODE> invocations.<P>
+<A NAME="ft3" HREF="spread-implement#text3">[3]</A> We originally wrote two separate helper procedures for the two
+cases, like this:
+
+<P><PRE>(define (put-all-cells-in-row formula row)
+  (row-helper formula 1 26 row))
+
+(define (row-helper formula this-col max-col row)
+  (if (&gt; this-col max-col)
+      'done
+      (begin (try-putting formula <B>(make-id this-col row)</B>)
+	     (row-helper formula (+ this-col 1) max-col row))))
+
+(define (put-all-cells-in-col formula col)
+  (column-helper formula 1 30 col))
+
+(define (column-helper formula this-row max-row col)
+  (if (&gt; this-row max-row)
+      'done
+      (begin (try-putting formula <B>(make-id col this-row)</B>)
+	     (column-helper formula (+ this-row 1) max-row col))))
+</PRE>
+
+<P>but the procedures were so similar that we decided to generalize the
+pattern.<P>
+<A NAME="ft4" HREF="spread-implement#text4">[4]</A> In fact, <CODE>process-command</CODE>
+also invokes <CODE>pin-down</CODE> when the user types a formula in place of a
+command.  In that situation, the result doesn't go into a cell but is
+immediately evaluated and printed.<P>
+<A NAME="ft5" HREF="spread-implement#text5">[5]</A> You can
+think of the <CODE>cell</CODE> notation in generalized formulas as a kind of
+special form, but <CODE>pin-down</CODE> has turned those into specific cell IDs
+before the formula is eligible for evaluation as an expression.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch24/spread.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="database.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch25/spread-implement.html b/js/games/nluqo.github.io/~bh/ssch25/spread-implement.html
new file mode 100644
index 0000000..58ec819
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch25/spread-implement.html
@@ -0,0 +1,1835 @@
+<P>
+
+<P><A NAME="accountant"></A><CENTER><IMG SRC="../ss-pics/accountant.jpg" ALT="figure: accountant"></CENTER><P><CENTER>They did spreadsheets by hand in the old
+days.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 25: Implementing the Spreadsheet Program</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 25</H2>
+<H1>Implementing the Spreadsheet Program</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch25.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch24/spread.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="database.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This is a big program and you can't keep it all in your head at once.  In
+this chapter, we'll discuss different parts of the program separately.  For
+example, while we're talking about the screen display procedures, we'll just
+take the rest of the program for granted.  We'll assume that we can ask for
+the value in a cell, and some other part of the program will ensure that we
+can find it out.
+
+<P>Our division of the program includes these parts:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The command processor, which reads user commands and oversees their
+execution.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The specific commands: cell selection commands, <CODE>load</CODE>, and <CODE>put</CODE>.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The formula translator, which turns a formula into an <EM>expression</EM>
+by translating relative cell positions to specific cells.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The dependency manager, which keeps track of which cells' expressions
+depend on which other cells.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The expression evaluator.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The screen printer.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The cell management procedures, which store and retrieve cell
+information for the rest of the program.
+
+</TABLE>
+<P>
+
+<P>The diagram below shows the interconnections among these seven
+parts of the program by showing what information they have to provide for
+each other.
+
+<P><CENTER><IMG SRC="../ss-pics/dataflow.jpg" ALT="figure: dataflow"></CENTER>
+
+<P>(The arrows that <EM>aren't</EM> in the diagram convey as much
+information as the ones that are.  For example, since there is no arrow from
+the evaluator to the printer, we know that when the spreadsheet program
+redisplays the screen, the values printed are found directly in the data
+structure; no new computation of formulas is needed.)
+
+<P><H2>Cells, Cell Names, and Cell IDs</H2>
+
+<P>The spreadsheet program does its work by manipulating cells.  In this
+section we introduce three abstract data types having to do with cells.
+Before we jump into the spreadsheet procedures themselves, we must introduce
+these three types, which are used throughout the program.
+
+<P>Each cell is a data structure that contains various pieces of information,
+including its value and other things that we'll talk about later.  Just as
+these cells are arranged in a two-dimensional pattern on the screen, they
+are kept within the program in a two-dimensional data structure: a vector
+of vectors.
+
+<P>The elements of a vector are selected by number, using <CODE>vector-ref</CODE>.
+Therefore, if we're looking for a particular cell, such as <CODE>c5</CODE>, what
+the program really wants to know is that this cell is in column 3, row
+5.<A NAME="text1" HREF="spread-implement.html#ft1">[1]</A> If the program refers to cells by
+name, then there will be several occasions for it to split the word <CODE>c5</CODE>
+into its pieces <CODE>c</CODE> and <CODE>5</CODE>, and to convert the letter <CODE>c</CODE> into
+the number 3.  These operations are fairly slow.  To avoid carrying them out
+repeatedly, the spreadsheet program identifies cells internally using a form
+that's invisible to the person using the program, called a &quot;cell ID.&quot;
+
+<P><A NAME="g1"></A>
+<A NAME="g2"></A>
+Therefore, there are three different <A NAME="g3"></A><A NAME="g4"></A>abstract data types in the
+program that have to do with cells: cell names, such as <CODE>c5</CODE>; cell IDs;
+and cells themselves.  We've chosen to represent cell IDs as three-element
+lists like this one:
+
+<P><PRE>(id 3 5)
+</PRE>
+
+
+<P>but you won't see much evidence of that fact within the program
+because we've implemented selectors and constructors for all of these three
+types.  The representation includes the word <CODE>id</CODE> because one facility
+that the program needs is the ability to determine whether some datum is or
+is not a cell ID.  The predicate <CODE>cell-id?</CODE> looks for a list whose first
+element is <CODE>id</CODE>.
+
+<P>The selectors for cell IDs are <CODE>id-row</CODE> and <CODE>id-col</CODE>; both take a
+cell ID as argument and return a number.  The constructor, <CODE>make-id</CODE>,
+takes a column number (not a letter) and a row number as arguments.
+
+<P>When the program recognizes a cell name typed by the user, it calls <CODE>cell-name-&gt;id</CODE> to translate the name to an ID, and only the ID is stored for
+later use.
+
+<P>(These application-specific ADTs are similar to the database of known values
+in the pattern matcher, as opposed to more general-purpose ADTs like
+trees and sentences.)
+
+<P><H2>The Command Processor</H2>
+
+<P>Here's the core of the command processor:
+
+<P><PRE>(define (<A NAME="g5"></A>command-loop)
+  (print-screen)
+  (let ((command-or-formula (read)))
+    (if (equal? command-or-formula 'exit)
+	&quot;Bye!"
+	(begin (process-command command-or-formula)
+	       (command-loop)))))
+</PRE>
+
+<P>This short program runs until the user types <CODE>exit</CODE>, because
+it invokes itself as its last step.  During each invocation, it prints the
+current spreadsheet display, uses <CODE>read</CODE> to read a command, and
+carries out whatever actions that command requires.  Those actions probably
+change something in the spreadsheet data, so the next cycle has to redisplay
+the modified data before accepting another command.
+
+<P><CODE>Print-screen</CODE> is a large chunk of the program and will be discussed
+in its own section.
+
+<P>How does <CODE>process-command</CODE> work?  It looks for the command name (a word
+such as <CODE>put</CODE>) in its list of known commands.  The commands are kept in an
+association list, like this:
+
+<P><PRE>((p &hellip;) (n &hellip;) (b &hellip;) (f &hellip;) (select &hellip;) (put &hellip;) (load &hellip;))
+</PRE>
+
+<P>Each of these sublists contains two elements: the name and the
+procedure that carries out the command.  We'll see shortly how these
+procedures are invoked.
+
+<P>Looking for the command name is a little tricky because in the spreadsheet
+language a command can be invoked either by typing its name inside
+parentheses with arguments, as in Scheme, or by typing the name alone,
+without parentheses, which Scheme wouldn't interpret as a request to invoke
+a procedure.  For example, the argument to <CODE>process-command</CODE> might be a
+list, such as <CODE>(f 3)</CODE>, or just a word, such as <CODE>f</CODE>.  A third case is
+that the argument might not be one of these commands at all, but instead
+might be a formula, just like one that could be used to determine the value
+in a cell.  <CODE>Process-command</CODE> must recognize these three cases:
+
+<P><PRE>(define (<A NAME="g6"></A>process-command command-or-formula)
+  (cond ((and (list? command-or-formula)
+	      (command? (car command-or-formula)))
+	 (execute-command command-or-formula))
+	((command? command-or-formula)
+	 (execute-command (list command-or-formula 1)))
+	(else (exhibit (ss-eval (pin-down command-or-formula
+					  (selection-cell-id)))))))
+</PRE>
+
+<P>The <CODE>command?</CODE> predicate tells whether its argument is one of
+the command names in the list.  As you can see, if a command name is used
+without parentheses, <CODE>process-command</CODE> pretends that it was given an
+argument of <CODE>1</CODE>.
+
+<P><CODE>Execute-command</CODE> looks up the command name in the list of commands,
+then applies the associated procedure to the arguments, if any:
+
+<P>
+<PRE>(define (<A NAME="g7"></A>execute-command command)
+  (apply (get-command (car command))
+	 (cdr command)))
+</PRE>
+
+<P>The <CODE>else</CODE> clause in <CODE>process-command</CODE>, which handles the case
+of a formula typed instead of a command, invokes several procedures
+that you haven't seen yet.  We'll explain them when we get to the section of
+the program that manipulates formulas.  The only one that's used just for
+command processing is <CODE>exhibit</CODE>:
+
+<P><PRE>(define (<A NAME="g8"></A>exhibit val)
+  (show val)
+  (show &quot;Type RETURN to redraw screen&quot;)
+  (read-line)
+  (read-line))
+</PRE>
+
+<P>This prints a value on the screen, gives the user a chance to read
+it, and then, when the user is ready, returns to processing commands.  (This
+will entail redrawing the spreadsheet display; that's why we have to wait for
+the user to hit return.)  The reason that we invoke <CODE>read-line</CODE> twice is
+that the call to <CODE>read</CODE> from <CODE>command-loop</CODE> reads the spreadsheet
+formula you typed but doesn't advance to the next line.  Therefore, the
+first <CODE>read-line</CODE> invocation gobbles that empty line; the second call to
+<CODE>read-line</CODE> reads the (probably empty) line that the user typed in
+response to the prompting message.<A NAME="text2" HREF="spread-implement.html#ft2">[2]</A>
+
+<P><H2>Cell Selection Commands</H2>
+
+<P>Several commands have to do with selecting a cell.  We'll show just one
+typical procedure, the one that carries out the <CODE>p</CODE> (previous row)
+command:
+
+<P><PRE>(define (<A NAME="g9"></A>prev-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (&lt; (- row delta) 1)
+	(error &quot;Already at top.&quot;)
+	(set-selected-row! (- row delta)))))
+
+(define (<A NAME="g10"></A>set-selected-row! new-row)
+  (select-id! (make-id (id-column (selection-cell-id)) new-row)))
+
+(define (<A NAME="g11"></A>select-id! id)
+  (set-selection-cell-id! id)
+  (adjust-screen-boundaries))
+</PRE>
+ 
+<CODE>Prev-row</CODE> must ensure that the selected cell is within the
+legal boundaries.  Since <CODE>prev-row</CODE> only moves upward, it has to check
+only that we don't go beyond row 1.  (<CODE>Next-row</CODE> will instead check that
+we don't go beyond row 30 in the other direction.) 
+
+<P><CODE>Adjust-screen-boundaries</CODE> checks for the situation in which the newly
+selected cell, although within the bounds of the spreadsheet, is not within
+the portion currently visible on the screen.  In that case the visible
+portion is shifted to include the selected cell.  (The procedure is
+straightforward and uninteresting, so we're not showing it here.  You can
+see it in the complete listing of the spreadsheet program at the end of this
+chapter.)
+
+<P><CODE>Selection-cell-id</CODE> is a procedure that returns the cell ID of the
+cell that's currently selected.  Similarly, <CODE>set-selection-cell-id!</CODE> sets the
+current selection.  There are comparable procedures <CODE>screen-corner-cell-id</CODE> and <CODE>set-screen-corner-cell-id!</CODE> to keep track of
+which cell should be in the upper left corner of the screen display.  There
+is a vector named <CODE>*special-cells*</CODE> that holds these two cell IDs; you
+can see the details in the complete program listing.
+
+<P>
+<H2>The <CODE><B>Load</B></CODE> Command</H2>
+
+<P>Loading commands from files is easy.  The <CODE>command-loop</CODE> procedure,
+which carries out commands from the keyboard, repeatedly reads a command
+with <CODE>read</CODE> and invokes <CODE>process-command</CODE> to carry it out.  To load
+commands from a file, we want to do exactly the same thing, except that we
+read from a file instead of from the keyboard:
+
+<P><PRE>(define (spreadsheet-load filename)
+  (let ((port (open-input-file filename)))
+    (sl-helper port)
+    (close-input-port port)))
+
+(define (sl-helper port)
+  (let ((command (read port)))
+    (if (eof-object? command)
+	'done
+	(begin (show command)
+	       (process-command command)
+	       (sl-helper port)))))
+</PRE>
+
+<P><H2>The <CODE><B>Put</B></CODE> Command</H2>
+
+<P>The <CODE>put</CODE> command takes two arguments, a formula and a place to put it.
+The second of these can specify either a single cell or an entire row or
+column.  (If there is no second argument, then a single cell, namely the
+selected cell, is implied.)  <CODE>Put</CODE> invokes <CODE>put-formula-in-cell</CODE>
+either once or several times, as needed.  If only a single cell is involved,
+then <CODE>put</CODE> calls <CODE>put-formula-in-cell</CODE> directly.  If a row or column
+is specified, then <CODE>put</CODE> uses the auxiliary procedure <CODE>put-all-cells-in-row</CODE> or <CODE>put-all-cells-in-col</CODE> as an intermediary.
+
+<P><PRE>(define (<A NAME="g12"></A>put formula . where)
+  (cond ((null? where)
+	 (put-formula-in-cell formula (selection-cell-id)))
+	((cell-name? (car where))
+	 (put-formula-in-cell formula (cell-name-&gt;id (car where))))
+	((number? (car where))
+	 (put-all-cells-in-row formula (car where)))
+	((letter? (car where))
+	 (put-all-cells-in-col formula (letter-&gt;number (car where))))
+	(else (error &quot;Put it where?&quot;))))
+</PRE>
+
+<P>The only tricky part of this is the first line.  <CODE>Put</CODE> can be
+invoked with either one or two arguments.  Therefore, the dot notation is
+used to allow a variable number of arguments; the parameter <CODE>where</CODE> will
+have as its value not the second argument itself, but a list that either
+contains the second argument or is empty.  Thus, if there is a second
+argument, <CODE>put</CODE> refers to it as <CODE>(car where)</CODE>.
+
+<P><PRE>(define (<A NAME="g13"></A>put-all-cells-in-row formula row)
+  (put-all-helper formula (lambda (col) (make-id col row)) 1 26))
+
+(define (<A NAME="g14"></A>put-all-cells-in-col formula col)
+  (put-all-helper formula (lambda (row) (make-id col row)) 1 30))
+
+(define (<A NAME="g15"></A>put-all-helper formula id-maker this max)
+  (if (&gt; this max)
+      'done
+      (begin (try-putting formula (id-maker this))
+	     (put-all-helper formula id-maker (+ 1 this) max))))
+
+(define (<A NAME="g16"></A>try-putting formula id)
+  (if (or (null? (cell-value id)) (null? formula))
+      (put-formula-in-cell formula id)
+      'do-nothing))
+</PRE>
+
+<P><CODE>Put-all-cells-in-row</CODE> and <CODE>put-all-cells-in-col</CODE> invoke
+<CODE>put-all-helper</CODE>, which repeatedly puts the formula into a
+cell.<A NAME="text3" HREF="spread-implement.html#ft3">[3]</A> <CODE>Put-all-helper</CODE> is a typical sequential recursion:  Do
+something for this element, and recur for the remaining elements.  The
+difference is that &quot;this element&quot; means a cell ID that combines one
+constant index with one index that varies with each recursive call.  How are
+those two indices combined?  What differs between filling a row and filling
+a column is the <EM>function</EM> used to compute each cell ID.
+
+<P>The substitution model explains how the <CODE>lambda</CODE> expressions used as
+arguments to <CODE>put-all-helper</CODE> implement this idea.  Suppose we are
+putting a formula into every cell in row 4.  Then <CODE>put-all-cells-in-row</CODE>
+will be invoked with the value <CODE>4</CODE> substituted for the parameter <CODE>row</CODE>.  After this substitution, the body is
+
+<P><PRE>(put-all-helper formula (lambda (col) (make-id col 4)) 1 26)
+</PRE>
+
+<P>The <CODE>lambda</CODE> expression creates a procedure that takes a
+column number as argument and returns a cell ID for the cell in row 4 and
+that column.  This is just what <CODE>put-all-helper</CODE> needs.  It invokes the
+procedure with the varying column number as its argument to get the proper
+cell ID.
+
+<P><CODE>Put-all-helper</CODE> doesn't directly invoke <CODE>put-formula-in-cell</CODE>.  The
+reason is that if a particular cell already has a value, then the new
+formula isn't used for that particular cell, unless the formula is empty.
+That is, you can erase an entire row or column at once, but a non-empty
+formula affects only cells that were empty before this command.  <CODE>Try-putting</CODE> decides whether or not to put the formula into each possible
+cell.  (In <CODE>try-putting</CODE>, the third argument to <CODE>if</CODE> could be
+anything; we're interested only in what happens if the condition is true.)
+
+<P>All that's left is, finally, to put the formula into a cell:
+
+<P><PRE>(define (<A NAME="g17"></A>put-formula-in-cell formula id)
+  (put-expr (pin-down formula id) id))
+</PRE>
+
+<P>The two new procedures seen here, <CODE>pin-down</CODE> and <CODE>put-expr</CODE>, are both large sections of the program and are described in the
+next two sections of this chapter.
+
+<P><H2>The Formula Translator</H2>
+
+<P>Suppose the user has said
+
+<P><PRE>(put (* (cell b) (cell c)) d)
+</PRE>
+
+<P>The <CODE>put</CODE> procedure puts this formula into each cell of column
+<CODE>d</CODE> by repeatedly calling <CODE>put-formula-in-cell</CODE>; as an example,
+let's concentrate on cell <CODE>d4</CODE>.
+
+<P>The purpose of the formula is that later we're going to use it to compute a
+value for <CODE>d4</CODE>.  For that purpose, we will need to multiply two
+particular numbers together: the ones in cells <CODE>b4</CODE> and <CODE>c4</CODE>.
+Although the same formula applies to cell <CODE>d5</CODE>, the particular numbers
+multiplied together will be found in different places.  So instead of
+storing the same general formula in every <CODE>d</CODE> cell, what we'd really
+like to store in <CODE>d4</CODE> is something that refers specifically to <CODE>b4</CODE> and <CODE>c4</CODE>.
+
+<P>We'll use the term &quot;expression&quot; for a formula whose cell references have
+been replaced by specific cell IDs.  We started with the idea that we wanted
+to put a formula into a cell; we've refined that idea so that we now want to
+put an expression into the cell.  This goal has two parts:  We must
+translate the formula (as given to us by the user in the <CODE>put</CODE> command)
+to an expression, and we must store that expression in the cell data
+structure.  These two subtasks are handled by <CODE>pin-down</CODE>, discussed in
+this section, and by <CODE>put-expr</CODE>, discussed in the next section.  <CODE>Pin-down</CODE> is entirely functional; the only modification to the spreadsheet
+program's state in this process is carried out by <CODE>put-expr</CODE>.
+
+<P>We'll refer to the process of translating a formula to an expression as
+&quot;pinning down&quot; the formula; the procedure <CODE>pin-down</CODE> carries out this
+process.  It's called &quot;pinning down&quot; because we start with a <EM>general</EM> formula and end up with a <EM>specific</EM> expression.  <CODE>Pin-down</CODE> takes two arguments: The first is, of course, a formula; the
+second is the ID of the cell that will be used as the reference point for
+relative cell positions.  In the context of the <CODE>put</CODE> command, the
+reference point is the cell into which we'll put the expression.  But <CODE>pin-down</CODE> doesn't think about putting anything anywhere; its job is to
+translate a formula (containing relative cell locations) into an expression
+(containing only absolute cell IDs).<A NAME="text4" HREF="spread-implement.html#ft4">[4]</A> <CODE>Pin-down</CODE> needs a reference point
+as a way to understand the notation <CODE>&lt;3</CODE>, which means &quot;three
+cells before the reference point.&quot;
+
+<P>Let's go back to the specific example.  <CODE>Put-formula-in-cell</CODE> will invoke
+
+<P><PRE>(pin-down '(* (cell b) (cell c)) 'd4)
+</PRE>
+
+<P>and <CODE>pin-down</CODE> will return the expression
+
+<P><PRE>(* (id 2 4) (id 3 4))
+</PRE>
+
+<P>The overall structure of this problem is tree recursive.  That's because a
+formula can be arbitrarily complicated, with sublists of sublists, just like
+a Scheme expression:
+
+<P><PRE>(put (+ (* (cell b) (cell c)) (- (cell 2&lt; 3&gt;) 6)) f)
+</PRE>
+
+<P>Here's <CODE>pin-down</CODE>:
+
+<P><PRE>(define (<A NAME="g18"></A>pin-down formula id)
+  (cond ((cell-name? formula) (cell-name-&gt;id formula))
+	((word? formula) formula)
+	((null? formula) '())
+	((equal? (car formula) 'cell)
+	 (pin-down-cell (cdr formula) id))
+	(else (bound-check
+	       (map (lambda (subformula) (pin-down subformula id))
+		    formula)))))
+</PRE>
+
+
+<P>The base cases of the tree recursion are specific cell names, such
+as <CODE>c3</CODE>; other words, such as numbers and procedure names, which are
+unaffected by <CODE>pin-down</CODE>; null formulas, which indicate that the user is
+erasing the contents of a cell; and sublists that start with the word <CODE>cell</CODE>.  The first three of these are trivial; the fourth, which we will
+describe shortly, is the important case.  If a formula is not one of these
+four base cases, then it's a compound expression.  In that case, we have to
+pin down all of the subexpressions individually.  (We basically <CODE>map</CODE>
+<CODE>pin-down</CODE> over the formula.  That's what makes this process tree
+recursive.)
+
+<P>One complication is that the pinned-down formula might refer to nonexistent
+cells.  For example, saying
+
+<P><PRE>(put (+ (cell 2&lt; 3&lt;) 1) d)
+</PRE>
+
+<P>refers to cells in column <CODE>b</CODE> (two to the left of <CODE>d</CODE>)
+three rows above the current row.  That works for a cell such as <CODE>d7</CODE>,
+referring to cell <CODE>b4</CODE>, but not for <CODE>d2</CODE>, which has no row that's
+three above it.  (There is no row <CODE>-1</CODE>.)   So our program must refrain
+from pinning down this formula for cells <CODE>d1</CODE>, <CODE>d2</CODE>, and <CODE>d3</CODE>.
+<CODE>Pin-down</CODE> will instead return the word <CODE>out-of-bounds</CODE> to signal
+this situation.
+
+<P>The case of a nonexistent cell is discovered by <CODE>pin-down-cell</CODE> at the
+base of a tree recursion.  The <CODE>out-of-bounds</CODE> signal must be returned
+not only by the base case but by the initial invocation of <CODE>pin-down</CODE>.
+That's why <CODE>bound-check</CODE> is used to ensure that if any part of a formula
+is out of bounds, the entire formula will also be considered out of bounds:
+
+<P><PRE>(define (<A NAME="g19"></A>bound-check form)
+  (if (member 'out-of-bounds form)
+      'out-of-bounds
+      form))
+</PRE>
+
+<P>When a formula contains a <CODE>(cell &hellip;)</CODE> sublist, the procedure <CODE>pin-down-cell</CODE> is invoked to translate that notation into a cell ID.
+
+<P>The arguments to <CODE>pin-down-cell</CODE> are a list of the &quot;arguments&quot; of the
+<CODE>cell</CODE> sublist and the reference point's cell ID.  (The word
+&quot;arguments&quot; is in quotation marks because the word <CODE>cell</CODE> doesn't
+represent a Scheme procedure, even though the parenthesized notation looks
+like an invocation.  In a way, the special treatment of <CODE>cell</CODE> by <CODE>pin-down</CODE> is analogous to the treatment of special forms, such as <CODE>cond</CODE>,
+by the Scheme evaluator.)
+
+<P>There can be one or two of these &quot;arguments&quot; to <CODE>cell</CODE>.  A single
+argument is either a number, indicating a row, or a letter, indicating a
+column.  Two arguments specify both a column and a row, in that order:
+
+<P><PRE>(define (<A NAME="g20"></A>pin-down-cell args reference-id)
+  (cond ((null? args)
+	 (error &quot;Bad cell specification: (cell)&quot;))
+	((null? (cdr args))
+	 (cond ((number? (car args))         ; they chose a row
+		(make-id (id-column reference-id) (car args)))
+	       ((letter? (car args))         ; they chose a column
+		(make-id (letter-&gt;number (car args))
+			 (id-row reference-id)))
+	       (else (error &quot;Bad cell specification:"
+			    (cons 'cell args)))))
+	(else
+	 (let ((col (pin-down-col (car args) (id-column reference-id)))
+	       (row (pin-down-row (cadr args) (id-row reference-id))))
+	   (if (and (&gt;= col 1) (&lt;= col 26) (&gt;= row 1) (&lt;= row 30))
+	       (make-id col row)
+	       'out-of-bounds)))))
+</PRE>
+
+<P>In the two-argument case, the job of <CODE>pin-down-col</CODE> and <CODE>pin-down-row</CODE> is to understand notations like <CODE>&lt;3</CODE> for relative
+rows and columns:
+
+<P><PRE>(define (pin-down-col new old)
+  (cond ((equal? new '*) old)
+	((equal? (first new) '&gt;) (+ old (bf new)))
+	((equal? (first new) '&lt;) (- old (bf new)))
+	((letter? new) (letter-&gt;number new))
+	(else (error &quot;What column?&quot;))))
+
+(define (pin-down-row new old)
+  (cond ((number? new) new)
+	((equal? new '*) old)
+	((equal? (first new) '&gt;) (+ old (bf new)))
+	((equal? (first new) '&lt;) (- old (bf new)))
+	(else (error &quot;What row?&quot;))))
+</PRE>
+
+<P><H2>The Dependency Manager</H2>
+
+<P>The remaining part of the <CODE>put</CODE> command is <CODE>put-expr</CODE>, which actually
+stores the translated expression in the cell data structure.  You might
+imagine that putting an expression into a cell would require nothing more
+than invoking a mutator, like this:
+
+<P><PRE>(define (put-expr expr cell)                 ;; wrong
+  (set-cell-expr! cell expr))
+</PRE>
+
+<P>The trouble is that adding an expression to a cell might have many
+consequences beyond the mutation itself.  For example, suppose we say
+
+<P><PRE>(put (+ a3 b2) c4)
+</PRE>
+
+<P>If cells <CODE>a3</CODE> and <CODE>b2</CODE> already have values, we can't just
+put the formula into <CODE>c4</CODE>; we must also compute its value and put that
+value into <CODE>c4</CODE>.
+
+<P>Also, once <CODE>c4</CODE> has a value, that could trigger the computation of
+some other cell's value.  If we've previously said
+
+<P><PRE>(put (+ a3 c4) b5)
+</PRE>
+
+<P>then we're now able to compute a value for <CODE>b5</CODE> because both
+of the cells that it depends on have values.
+
+<P>All this implies that what's inside a cell is more than just an expression, or
+even an expression and a value.  Each cell needs to know which other cells it
+depends on for its value, and also which other cells depend on it.
+
+<P><A NAME="g21"></A>
+<A NAME="g22"></A>
+Our program represents each cell as a four-element vector.  Each cell
+includes a value, an expression, a list of <EM>parents</EM> (the cells that it
+depends on), and a list of <EM>children</EM> (the cells that depend on it).
+The latter two lists contain cell IDs.  So our example cell <CODE>c4</CODE> might
+look like this:
+
+<P><PRE>#(12
+  (+ (id 1 3) (id 2 2))
+  ((id 1 3) (id 2 2))
+  ((id 2 5)))
+</PRE>
+
+<P>In a simpler case, suppose we put a value into a cell that nothing
+depends on, by saying, for example,
+
+<P><PRE>(put 6 a1)
+</PRE>
+
+<P>Then cell <CODE>a1</CODE> would contain
+
+<P><PRE>#(6 6 () ())
+</PRE>
+
+<P>(Remember that a value is just a very simple formula.)
+
+<P>There are selectors <CODE>cell-value</CODE> and so on that take a cell ID as
+argument, and mutators <CODE>set-cell-value!</CODE> and so on that take a cell ID
+and a new value as arguments.  There's also the constructor <CODE>make-cell</CODE>,
+but it's called only at the beginning of the program, when the 780 cells in
+the spreadsheet are created at once.
+
+<P>When a cell is given a new expression, several things change:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The new expression becomes the cell's expression, of course.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The cells mentioned in the expression become the parents of this cell.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">This cell becomes a child of the cells mentioned in the expression.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If all the parents have values, the value of this cell is computed.
+
+</TABLE><P>
+Some of these changes are simple, but others are complicated.  For example,
+it's not enough to tell the cell's new parents that the cell is now their child
+(the third task).  First we have to tell the cell's <EM>old</EM> parents that this cell <EM>isn't</EM> their child any more.  That
+has to be done before we forget the cell's old parents.
+
+<P>Here is an example.  (In the following tables, we represent the data structures
+as if cells were represented by their names, even though really their IDs
+are used.  We've done this to make the example more readable.)  Suppose that
+we have five cells set up like this:
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>(a2)</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE>(a2 b2)</CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ a1 b1)</CODE><TD><CODE>25</CODE>
+<TD><CODE>(a1 b1)</CODE><TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>If we now enter the spreadsheet command
+
+<P><PRE>(put (+ b1 c1) a2)
+</PRE>
+
+<P>the program must first remove <CODE>a2</CODE> from the children of its
+old parents (changes are shown in boldface):
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE><STRONG><BIG>()</BIG></STRONG></CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE><STRONG><BIG>(b2)</BIG></STRONG></CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ a1 b1)</CODE><TD><CODE>25</CODE>
+<TD><CODE>(a1 b1)</CODE><TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Then the program can change the expression and compute a new list of
+parents:
+
+<P>
+<TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>()</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>()</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE><STRONG><BIG>(+ b1 c1)</BIG></STRONG></CODE>
+<TD><CODE>25</CODE><TD><CODE><STRONG><BIG>(b1 c1)</BIG></STRONG></CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Next it can tell the new parents to add <CODE>a2</CODE> as a
+child, and can compute <CODE>a2</CODE>'s new value:
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>()</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE><STRONG><BIG>(a2 b2)</BIG></STRONG></CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE><STRONG><BIG>(a2)</BIG></STRONG></CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ b1 c1)</CODE>
+<TD><CODE><STRONG><BIG>13</BIG></STRONG></CODE><TD><CODE>(b1 c1)</CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE><TD><CODE>30</CODE>
+<TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Changing <CODE>a2</CODE>'s value affects the values of all of its
+children, and also its grandchildren and so on (except that in this example
+there are no grandchildren):
+
+<P><TABLE><TR><TH>cell&nbsp;&nbsp;<TH>expression&nbsp;&nbsp;<TH>value&nbsp;&nbsp;
+<TH>parents&nbsp;&nbsp;<TH>children
+<TR><TD>&nbsp;&nbsp;<TR><TD><CODE>a1</CODE><TD><CODE>20</CODE>
+<TD><CODE>20</CODE><TD><CODE>()</CODE><TD><CODE>()</CODE>
+<TR><TD><CODE>b1</CODE><TD><CODE>5</CODE><TD><CODE>5</CODE><TD><CODE>()</CODE>
+<TD><CODE>(a2 b2)</CODE>
+<TR><TD><CODE>c1</CODE><TD><CODE>8</CODE><TD><CODE>8</CODE><TD><CODE>()</CODE>
+<TD><CODE>(a2)</CODE>
+<TR><TD><CODE>a2</CODE><TD><CODE>(+ b1 c1)</CODE>
+<TD><CODE>13</CODE><TD><CODE>(b1 c1)</CODE>
+<TD><CODE>(b2)</CODE>
+<TR><TD><CODE>b2</CODE><TD><CODE>(+ a2 b1)</CODE>
+<TD><CODE><STRONG><BIG>18</BIG></STRONG></CODE><TD><CODE>(a2 b1)</CODE><TD><CODE>()</CODE>
+</TABLE>
+
+
+<P>Now that we've considered an example, here is the main procedure that
+oversees all these tasks:
+
+<P><PRE>(define (<A NAME="g23"></A>put-expr expr-or-out-of-bounds id)
+  (let ((expr (if (equal? expr-or-out-of-bounds 'out-of-bounds)
+		  '()
+		  expr-or-out-of-bounds)))
+    (for-each (lambda (old-parent)
+		(set-cell-children!
+		 old-parent
+		 (remove id (cell-children old-parent))))
+	      (cell-parents id))
+    (set-cell-expr! id expr)
+    (set-cell-parents! id (remdup (extract-ids expr)))
+    (for-each (lambda (new-parent)
+		(set-cell-children!
+		 new-parent
+		 (cons id (cell-children new-parent))))
+	      (cell-parents id))
+    (figure id)))
+</PRE>
+ 
+Remember that <CODE>put-expr</CODE>'s first argument is the return value
+from <CODE>pin-down</CODE>, so it might be the word <CODE>out-of-bounds</CODE> instead of
+an expression.  In this case, we store an empty list as the expression,
+indicating that there is no active expression for this cell.
+
+<P>Within the body of the <CODE>let</CODE> there are five Scheme expressions, each of
+which carries out one of the tasks we've listed.  The first expression tells
+the cell's former parents that the cell is no longer their child.  The second
+expression stores the expression in the cell.
+
+<P>The third Scheme expression invokes <CODE>extract-ids</CODE> to find all the cell
+ids used in <CODE>expr</CODE>, removes any duplicates, and establishes those
+identified cells as the argument cell's parents.  (You wrote <CODE>remdup</CODE> in
+Exercise <A HREF="../ssch14/recur-patterns.html#remdup">14.3</A>.)  For example, if the <CODE>expr</CODE> is
+
+<P><PRE>(+ (id 4 2) (* (id 1 3) (id 1 3)))
+</PRE>
+
+<P>then <CODE>extract-ids</CODE> will return the list
+
+<P><PRE>((id 4 2) (id 1 3) (id 1 3))
+</PRE>
+
+<P>and <CODE>remdup</CODE> of that will be
+
+<P><PRE>((id 4 2) (id 1 3))
+</PRE>
+
+<P>The fourth expression in the <CODE>let</CODE> tells each of the new parents to
+consider the argument cell as its child.  The fifth expression may or may
+not compute a new value for this cell.  (As we'll see in a moment, that
+process is a little complicated.)
+
+<P>Two of these steps require closer examination.  Here is the procedure used
+in the third step:
+
+<P><PRE>(define (<A NAME="g24"></A>extract-ids expr)
+  (cond ((id? expr) (list expr))
+	((word? expr) '())
+	((null? expr) '())
+	(else (append (extract-ids (car expr))
+		      (extract-ids (cdr expr))))))
+</PRE>
+
+<P>This is a tree recursion.  The first three <CODE>cond</CODE> clauses are
+base cases; cell IDs are included in the returned list, while other words
+are ignored.  For compound expressions, we use the trick of making recursive
+calls on the <CODE>car</CODE> and <CODE>cdr</CODE> of the list.  We combine the results
+with <CODE>append</CODE> because <CODE>extract-ids</CODE> must return a flat list of
+cell IDs, not a cheap tree.
+
+<P>The fifth step in <CODE>put-expr</CODE> is complicated because, as we saw in the
+example, changing the value of one cell may require us to recompute the
+value of other cells:
+
+<P><PRE>(define (<A NAME="g25"></A>figure id)
+  (cond ((null? (cell-expr id)) (setvalue id '()))
+	((all-evaluated? (cell-parents id))
+	 (setvalue id (ss-eval (cell-expr id))))
+	(else (setvalue id '()))))
+
+(define (<A NAME="g26"></A>all-evaluated? ids)
+  (cond ((null? ids) #t)
+	((not (number? (cell-value (car ids)))) #f)
+	(else (all-evaluated? (cdr ids)))))
+
+(define (<A NAME="g27"></A>setvalue id value)
+  (let ((old (cell-value id)))
+    (set-cell-value! id value)
+    (if (not (equal? old value))
+	(for-each figure (cell-children id))
+	'do-nothing)))
+</PRE>
+
+<P><CODE>Figure</CODE> is invoked for the cell whose expression we've just
+changed.  If there is no expression (that is, if we've changed it to an empty
+expression or to an out-of-bounds one), then <CODE>figure</CODE> will remove any old
+value that might be left over from a previous expression.  If there is an
+expression, then <CODE>figure</CODE> will compute and save a new value, but only if
+all of this cell's parents have numeric values.  If any parent doesn't have
+a value, or if its value is a non-numeric label, then <CODE>figure</CODE> has to
+remove the value from this cell.
+
+<P><CODE>Setvalue</CODE> actually puts the new value in the cell.  It first looks up
+the old value.  If the new and old values are different, then all of the
+children of this cell must be re-<CODE>figure</CODE>d.  This, too, is a tree
+recursion because there might be several children, and each of them might
+have several children.
+
+<P>We haven't yet explained how <CODE>ss-eval</CODE> actually computes the value from
+the expression.  That's the subject of the next major part of the program.
+
+<P><H2>The Expression Evaluator</H2>
+
+<P><CODE>Figure</CODE> invokes <CODE>ss-eval</CODE> to convert a cell's expression into its
+value.  Also, we've seen earlier that <CODE>process-command</CODE> uses <CODE>ss-eval</CODE> to evaluate an expression that the user types in response to a
+spreadsheet prompt.  (That is, <CODE>ss-eval</CODE> is invoked if what the user
+types isn't one of the special commands recognized by <CODE>process-command</CODE>
+itself.)
+
+<P>The <CODE>ss</CODE> in <CODE>ss-eval</CODE> stands for &quot;spreadsheet&quot;; it distinguishes
+this procedure from <A NAME="g28"></A><CODE>eval</CODE>, a primitive procedure that evaluates
+Scheme expressions.  As it turns out, <CODE>ss-eval</CODE>'s algorithm is
+similar in many ways to that of Scheme's <CODE>eval</CODE>, although <CODE>ss-eval</CODE>
+is much simpler in other ways.  The experience you already have with
+Scheme's expression evaluation will help you understand the spreadsheet's.
+
+<P>Scheme's evaluator takes an expression and computes the corresponding value.
+The expressions look quite different from the values, but there are
+well-defined rules (the ones we studied in Chapter 3) to translate
+expressions to values.  In the spreadsheet language, as in Scheme, an
+expression can be one of three things:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a constant expression (a number or quoted word), whose value is itself.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a variable (a cell ID, in the case of the spreadsheet language).
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a procedure invocation enclosed in parentheses.
+
+</TABLE><P>
+The spreadsheet language is simpler than Scheme for three main reasons.
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">There are no special forms such as <CODE>if</CODE> or <CODE>define</CODE>.<A NAME="text5" HREF="spread-implement.html#ft5">[5]</A>
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The only variables, the cell IDs, are global; in Scheme, much of the
+complexity of evaluation has to do with variables that are local to
+procedures (i.e., formal parameters).
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The only procedures are primitives, so there is no need to evaluate
+procedure bodies.
+
+</TABLE><P>
+The structure of <CODE>ss-eval</CODE> is a <CODE>cond</CODE> whose clauses handle the 
+three types of expressions.  Constants and variables are easy;
+invocations require recursively evaluating the arguments before the
+procedure can be invoked.
+
+<P><PRE>(define (<A NAME="g29"></A>ss-eval expr)
+  (cond ((number? expr) expr)
+	((quoted? expr) (quoted-value expr))
+	((id? expr) (cell-value expr))
+	((invocation? expr)
+	 (apply (get-function (car expr))
+		(map ss-eval (cdr expr))))
+	(else (error &quot;Invalid expression:&quot; expr))))
+</PRE>
+
+<P>The value of a number is itself; the value of a quoted word is the word
+without the quotation mark.  (Actually, by the time <CODE>ss-eval</CODE> sees a
+quoted word, Scheme has translated the <CODE>'abc</CODE> notation into <CODE>(quote abc)</CODE> and that's what we deal with here.  Also, double-quoted strings
+look different to the program from single-quoted words.)
+
+<P><PRE>(define (<A NAME="g30"></A>quoted? expr)
+  (or (string? expr)
+      (and (list? expr) (equal? (car expr) 'quote))))
+
+(define (<A NAME="g31"></A>quoted-value expr)
+  (if (string? expr)
+      expr
+      (cadr expr)))
+</PRE>
+
+<P>The third clause checks for a cell ID; the value of such an
+expression is the value stored in the corresponding cell.
+
+<P>If an expression is none of those things, it had better be a function
+invocation, that is, a list.  In that case, <CODE>ss-eval</CODE> has to do three
+things:  It looks up the function name in a table (as we did earlier for
+spreadsheet commands); it recursively evaluates all the argument
+subexpressions; and then it can invoke <CODE>apply</CODE> to apply the procedure to
+the argument values.
+
+<P><CODE>Get-function</CODE> looks up a function name in the name-to-function
+association list and returns the corresponding Scheme procedure.  Thus, only
+the functions included in the list can be used in spreadsheet formulas.
+
+<P>The entire expression evaluator, including <CODE>ss-eval</CODE> and its helper
+procedures, is functional.  Like the formula translator, it doesn't change
+the state of the spreadsheet.
+
+<P><H2>The Screen Printer</H2>
+
+<P>The procedures that print the spreadsheet on the screen are straightforward
+but full of details.  Much of the work here goes into those details.
+
+<P>As we mentioned earlier, a better spreadsheet program wouldn't redraw the
+entire screen for each command but would change only  the parts of the
+screen that were affected by the previous command.  However, Scheme does not
+include a standard way to control the positioning of text on the screen, so
+we're stuck with this approach.
+
+<P><PRE>(define (<A NAME="g32"></A>print-screen)
+  (newline)
+  (newline)
+  (newline)
+  (show-column-labels (id-column (screen-corner-cell-id)))
+  (show-rows 20
+	     (id-column (screen-corner-cell-id))
+	     (id-row (screen-corner-cell-id)))
+  (display-cell-name (selection-cell-id))
+  (show (cell-value (selection-cell-id)))
+  (display-expression (cell-expr (selection-cell-id)))
+  (newline)
+  (display &quot;?? &quot;))
+</PRE>
+
+<P><CODE>Screen-corner-cell-id</CODE> returns the ID of the cell that
+should be shown in the top left corner of the display; <CODE>selection-cell-id</CODE> returns the ID of the selected cell.
+
+<P><CODE>Show-column-labels</CODE> prints the first row of the display, the one with
+the column letters.  <CODE>Show-rows</CODE> is a sequential recursion that prints
+the actual rows of the spreadsheet, starting with the row number of the <CODE>screen-corner</CODE> cell and continuing for 20 rows.  (There are 30 rows in the
+entire spreadsheet, but they don't all fit on the screen at once.)  The rest
+of the procedure displays the value and expression of the selected cell at
+the bottom of the screen and prompts for the next command.
+
+<P>Why isn't <CODE>display-expression</CODE> just <CODE>display</CODE>?
+Remember that the spreadsheet stores expressions in a form like
+
+<P><PRE>(+ (id 2 5) (id 6 3))
+</PRE>
+
+<P>but the user wants to see
+
+<P><PRE>(+ b5 f3)
+</PRE>
+
+<P><CODE>Display-expression</CODE> is yet another tree recursion over
+expressions.  Just as <CODE>pin-down</CODE> translates cell names into cell IDs,
+<CODE>display-expression</CODE> translates IDs back into names.  (But <CODE>display-expression</CODE> prints as it goes along, instead of reconstructing and
+returning a list.)  The definition of <CODE>display-expression</CODE>, along with
+the remaining details of printing, can be seen in the full program listing
+at the end of this chapter.
+
+<P>Just to give the flavor of those details, here is the part that displays
+the rectangular array of cell values.  <CODE>Show-rows</CODE> is a sequential
+recursion in which each invocation prints an entire row.  It does so by
+invoking <CODE>show-row</CODE>, another sequential recursion, in which each
+invocation prints a single cell value.
+
+<P><PRE>(define (show-rows to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	 (display (align row 2 0))
+	 (display &quot; &quot;)
+	 (show-row 6 col row)
+	 (newline)
+	 (show-rows (- to-go 1) col (+ row 1)))))
+
+(define (show-row to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	   (display (if (selected-indices? col row) &quot;&gt;&quot; &quot; &quot;))
+	   (display-value (cell-value-from-indices col row))
+	   (display (if (selected-indices? col row) &quot;&lt;&quot; &quot; &quot;))
+	   (show-row (- to-go 1) (+ 1 col) row))))
+
+(define (selected-indices? col row)
+  (and (= col (id-column (selection-cell-id)))
+       (= row (id-row (selection-cell-id)))))
+</PRE>
+
+<P>Why didn't we write <CODE>show-row</CODE> in the following way?
+
+<P><PRE>(define (show-row to-go col row)             ;; alternate version
+  (cond ((= to-go 0) 'done)
+	(else
+	 (let ((id (make-id col row)))
+	   (display (if (equal? id (selection-cell-id)) &quot;&gt;&quot; &quot; &quot;))
+	   (display-value (cell-value id))
+	   (display (if (equal? id (selection-cell-id)) &quot;&lt;&quot; &quot; &quot;))
+	   (show-row (- to-go 1) (+ 1 col) row)))))
+</PRE>
+
+<P>That would have worked fine and would have been a little clearer.
+In fact, we did write <CODE>show-row</CODE> this way originally.  But it's a little
+time-consuming to construct an ID, and <CODE>show-row</CODE> is called 120 times
+whenever <CODE>print-screen</CODE> is used.  Since printing the screen was
+annoyingly slow, we sped things up as much as we could, even at the cost of
+this kludge.
+
+<P><H2>The Cell Manager</H2>
+
+<P>The program keeps information about the current status of the spreadsheet
+cells in a vector called <CODE>*the-spreadsheet-array*</CODE>.  It contains all of
+the 780 cells that make up the spreadsheet (30 rows of 26 columns).  It's
+not a vector of length 780; rather, it's a vector of length 30, each of whose
+elements is itself a vector of length 26.  In other words, each element of
+the spreadsheet array is a vector representing one row of the spreadsheet.
+(Each element of <EM>those</EM> vectors is one cell, which, as you recall, is
+represented as a vector of length four.  So the spreadsheet array is a
+vector of vectors of vectors!)
+
+<P>The selectors for the parts of a cell take the cell's ID as argument and
+return one of the four elements of the cell vector.  Each must therefore be
+implemented as two steps:  We must find the cell vector, given its ID; and
+we must then select an element from the cell vector.  The first step is
+handled by the selector <CODE>cell-structure</CODE> that takes a cell ID as
+argument:
+
+<P><PRE>(define (<A NAME="g33"></A>cell-structure id)
+  (global-array-lookup (id-column id)
+		       (id-row id)))
+
+(define (<A NAME="g34"></A>global-array-lookup col row)
+  (if (and (&lt;= row 30) (&lt;= col 26))
+      (vector-ref (vector-ref *the-spreadsheet-array* (- row 1))
+		  (- col 1))
+      (error &quot;Out of bounds&quot;)))
+</PRE>
+
+<P><CODE>Global-array-lookup</CODE> makes sure the desired cell exists.
+It also compensates for the fact that Scheme vectors begin with element
+number zero, while our spreadsheet begins with row and column number one.
+Two invocations of <CODE>vector-ref</CODE> are needed, one to select an entire row
+and the next to select a cell within that row.
+
+<P>Selectors and mutators for the parts of a cell are written using
+<CODE>cell-structure</CODE>:
+
+<P><PRE>(define (<A NAME="g35"></A>cell-value id)
+  (vector-ref (cell-structure id) 0))
+
+(define (<A NAME="g36"></A>set-cell-value! id val)
+  (vector-set! (cell-structure id) 0 val))
+
+(define (<A NAME="g37"></A>cell-expr id)
+  (vector-ref (cell-structure id) 1))
+
+(define (<A NAME="g38"></A>set-cell-expr! id val)
+  (vector-set! (cell-structure id) 1 val))
+
+(define (<A NAME="g39"></A>cell-parents id)
+  (vector-ref (cell-structure id) 2))
+
+(define (<A NAME="g40"></A>set-cell-parents! id val)
+  (vector-set! (cell-structure id) 2 val))
+
+(define (<A NAME="g41"></A>cell-children id)
+  (vector-ref (cell-structure id) 3))
+
+(define (<A NAME="g42"></A>set-cell-children! id val)
+  (vector-set! (cell-structure id) 3 val))
+</PRE>
+
+<P>The constructor is
+
+<P><PRE>(define (make-cell)
+  (vector '() '() '() '()))
+</PRE>
+
+<P>The spreadsheet program begins by invoking <CODE>init-array</CODE> to set up this
+large array.  (Also, it sets the initial values of the selected cell and the
+screen corner.)
+
+<P><PRE>(define (<A NAME="g43"></A>spreadsheet)
+  (init-array)
+  (set-selection-cell-id! (make-id 1 1))
+  (set-screen-corner-cell-id! (make-id 1 1))
+  (command-loop))
+
+(define *the-spreadsheet-array* (make-vector 30))
+
+(define (<A NAME="g44"></A>init-array)
+  (fill-array-with-rows 29))
+
+(define (<A NAME="g45"></A>fill-array-with-rows n)
+  (if (&lt; n 0)
+      'done
+      (begin (vector-set! *the-spreadsheet-array* n (make-vector 26))
+	     (fill-row-with-cells
+	      (vector-ref *the-spreadsheet-array* n) 25)
+	     (fill-array-with-rows (- n 1)))))
+
+(define (<A NAME="g46"></A>fill-row-with-cells vec n)
+  (if (&lt; n 0)
+      'done
+      (begin (vector-set! vec n (make-cell))
+	     (fill-row-with-cells vec (- n 1)))))
+</PRE>
+
+<P>
+<P>That's the end of the project, apart from some straightforward procedures
+such as <CODE>letter-&gt;number</CODE> that you can look up in the complete listing
+if you're interested.
+
+<P><H2>Complete Program Listing</H2>
+
+<P><P><P><PRE>
+(define (spreadsheet)
+  (init-array)
+  (set-selection-cell-id! (make-id 1 1))
+  (set-screen-corner-cell-id! (make-id 1 1))
+  (command-loop))
+
+(define (command-loop)
+  (print-screen)
+  (let ((command-or-formula (read)))
+    (if (equal? command-or-formula 'exit)
+	"Bye!"
+	(begin (process-command command-or-formula)
+	       (command-loop)))))
+
+(define (process-command command-or-formula)
+  (cond ((and (list? command-or-formula)
+	      (command? (car command-or-formula)))
+	 (execute-command command-or-formula))
+	((command? command-or-formula)
+	 (execute-command (list command-or-formula 1)))
+	(else (exhibit (ss-eval (pin-down command-or-formula
+					  (selection-cell-id)))))))
+
+(define (execute-command command)
+  (apply (get-command (car command))
+	 (cdr command)))
+
+(define (exhibit val)
+  (show val)
+  (show "Type RETURN to redraw screen")
+  (read-line)
+  (read-line))
+
+
+;;; Commands
+
+;; Cell selection commands: F, B, N, P, and SELECT
+
+(define (prev-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (< (- row delta) 1)
+	(error "Already at top.")
+	(set-selected-row! (- row delta)))))
+
+(define (next-row delta)
+  (let ((row (id-row (selection-cell-id))))
+    (if (> (+ row delta) 30)
+	(error "Already at bottom.")
+	(set-selected-row! (+ row delta)))))
+
+(define (prev-col delta)
+  (let ((col (id-column (selection-cell-id))))
+    (if (< (- col delta) 1)
+	(error "Already at left.")
+	(set-selected-column! (- col delta)))))
+
+(define (next-col delta)
+  (let ((col (id-column (selection-cell-id))))
+    (if (> (+ col delta) 26)
+	(error "Already at right.")
+	(set-selected-column! (+ col delta)))))
+
+(define (set-selected-row! new-row)
+  (select-id! (make-id (id-column (selection-cell-id)) new-row)))
+
+(define (set-selected-column! new-column)
+  (select-id! (make-id new-column (id-row (selection-cell-id)))))
+
+(define (select-id! id)
+  (set-selection-cell-id! id)
+  (adjust-screen-boundaries))
+
+(define (select cell-name)
+  (select-id! (cell-name->id cell-name)))
+
+(define (adjust-screen-boundaries)
+  (let ((row (id-row (selection-cell-id)))
+	(col (id-column (selection-cell-id))))
+    (if (< row (id-row (screen-corner-cell-id)))
+	(set-corner-row! row)
+	'do-nothing)
+    (if (>= row (+ (id-row (screen-corner-cell-id)) 20))
+	(set-corner-row! (- row 19))
+	'do-nothing)
+    (if (< col (id-column (screen-corner-cell-id)))
+	(set-corner-column! col)
+	'do-nothing)
+    (if (>= col (+ (id-column (screen-corner-cell-id)) 6))
+	(set-corner-column! (- col 5))
+	'do-nothing)))
+
+(define (set-corner-row! new-row)
+  (set-screen-corner-cell-id!
+   (make-id (id-column (screen-corner-cell-id)) new-row)))
+
+(define (set-corner-column! new-column)
+  (set-screen-corner-cell-id!
+   (make-id new-column (id-row (screen-corner-cell-id)))))
+
+
+;; LOAD
+
+(define (spreadsheet-load filename)
+  (let ((port (open-input-file filename)))
+    (sl-helper port)
+    (close-input-port port)))
+
+(define (sl-helper port)
+  (let ((command (read port)))
+    (if (eof-object? command)
+	'done
+	(begin (show command)
+	       (process-command command)
+	       (sl-helper port)))))
+
+
+;; PUT
+
+(define (put formula . where)
+  (cond ((null? where)
+	 (put-formula-in-cell formula (selection-cell-id)))
+	((cell-name? (car where))
+	 (put-formula-in-cell formula (cell-name->id (car where))))
+	((number? (car where))
+	 (put-all-cells-in-row formula (car where)))
+	((letter? (car where))
+	 (put-all-cells-in-col formula (letter->number (car where))))
+	(else (error "Put it where?"))))
+
+(define (put-all-cells-in-row formula row)
+  (put-all-helper formula (lambda (col) (make-id col row)) 1 26))
+
+(define (put-all-cells-in-col formula col)
+  (put-all-helper formula (lambda (row) (make-id col row)) 1 30))
+
+(define (put-all-helper formula id-maker this max)
+  (if (> this max)
+      'done
+      (begin (try-putting formula (id-maker this))
+	     (put-all-helper formula id-maker (+ 1 this) max))))
+
+(define (try-putting formula id)
+  (if (or (null? (cell-value id)) (null? formula))
+      (put-formula-in-cell formula id)
+      'do-nothing))
+
+(define (put-formula-in-cell formula id)
+  (put-expr (pin-down formula id) id))
+
+
+;;; The Association List of Commands
+
+(define (command? name)
+  (assoc name *the-commands*))
+
+(define (get-command name)
+  (let ((result (assoc name *the-commands*)))
+    (if (not result)
+	#f
+	(cadr result))))
+
+(define *the-commands*
+  (list (list 'p prev-row)
+	(list 'n next-row)
+	(list 'b prev-col)
+	(list 'f next-col)
+	(list 'select select)
+	(list 'put put)
+	(list 'load spreadsheet-load)))
+
+
+;;; Pinning Down Formulas Into Expressions
+
+(define (pin-down formula id)
+  (cond ((cell-name? formula) (cell-name->id formula))
+	((word? formula) formula)
+	((null? formula) '())
+	((equal? (car formula) 'cell)
+	 (pin-down-cell (cdr formula) id))
+	(else (bound-check
+	       (map (lambda (subformula) (pin-down subformula id))
+		    formula)))))
+
+(define (bound-check form)
+  (if (member 'out-of-bounds form)
+      'out-of-bounds
+      form))
+
+(define (pin-down-cell args reference-id)
+  (cond ((null? args)
+	 (error "Bad cell specification: (cell)"))
+	((null? (cdr args))
+	 (cond ((number? (car args))         ; they chose a row
+		(make-id (id-column reference-id) (car args)))
+	       ((letter? (car args))         ; they chose a column
+		(make-id (letter->number (car args))
+			 (id-row reference-id)))
+	       (else (error "Bad cell specification:"
+			    (cons 'cell args)))))
+	(else
+	 (let ((col (pin-down-col (car args) (id-column reference-id)))
+	       (row (pin-down-row (cadr args) (id-row reference-id))))
+	   (if (and (>= col 1) (<= col 26) (>= row 1) (<= row 30))
+	       (make-id col row)
+	       'out-of-bounds)))))
+
+(define (pin-down-col new old)
+  (cond ((equal? new '*) old)
+	((equal? (first new) '>) (+ old (bf new)))
+	((equal? (first new) '<) (- old (bf new)))
+	((letter? new) (letter->number new))
+	(else (error "What column?"))))
+
+(define (pin-down-row new old)
+  (cond ((number? new) new)
+	((equal? new '*) old)
+	((equal? (first new) '>) (+ old (bf new)))
+	((equal? (first new) '<) (- old (bf new)))
+	(else (error "What row?"))))
+
+
+;;; Dependency Management
+
+(define (put-expr expr-or-out-of-bounds id)
+  (let ((expr (if (equal? expr-or-out-of-bounds 'out-of-bounds)
+		  '()
+		  expr-or-out-of-bounds)))
+    (for-each (lambda (old-parent)
+		(set-cell-children!
+		 old-parent
+		 (remove id (cell-children old-parent))))
+	      (cell-parents id))
+    (set-cell-expr! id expr)
+    (set-cell-parents! id (remdup (extract-ids expr)))
+    (for-each (lambda (new-parent)
+		(set-cell-children!
+		 new-parent
+		 (cons id (cell-children new-parent))))
+	      (cell-parents id))
+    (figure id)))
+
+(define (extract-ids expr)
+  (cond ((id? expr) (list expr))
+	((word? expr) '())
+	((null? expr) '())
+	(else (append (extract-ids (car expr))
+		      (extract-ids (cdr expr))))))
+
+(define (figure id)
+  (cond ((null? (cell-expr id)) (setvalue id '()))
+	((all-evaluated? (cell-parents id))
+	 (setvalue id (ss-eval (cell-expr id))))
+	(else (setvalue id '()))))
+
+(define (all-evaluated? ids)
+  (cond ((null? ids) #t)
+	((not (number? (cell-value (car ids)))) #f)
+	(else (all-evaluated? (cdr ids)))))
+
+(define (setvalue id value)
+  (let ((old (cell-value id)))
+    (set-cell-value! id value)
+    (if (not (equal? old value))
+	(for-each figure (cell-children id))
+	'do-nothing)))
+
+
+;;; Evaluating Expressions
+
+(define (ss-eval expr)
+  (cond ((number? expr) expr)
+	((quoted? expr) (quoted-value expr))
+	((id? expr) (cell-value expr))
+	((invocation? expr)
+	 (apply (get-function (car expr))
+		(map ss-eval (cdr expr))))
+	(else (error "Invalid expression:" expr))))
+
+(define (quoted? expr)
+  (or (string? expr)
+      (and (list? expr) (equal? (car expr) 'quote))))
+
+(define (quoted-value expr)
+  (if (string? expr)
+      expr
+      (cadr expr)))
+
+(define (invocation? expr)
+  (list? expr))
+
+(define (get-function name)
+  (let ((result (assoc name *the-functions*)))
+    (if (not result)
+	(error "No such function: " name)
+	(cadr result))))
+
+(define *the-functions*
+  (list (list '* *)
+	(list '+ +)
+	(list '- -)
+	(list '/ /)
+	(list 'abs abs)
+	(list 'acos acos)
+	(list 'asin asin)
+	(list 'atan atan)
+	(list 'ceiling ceiling)
+	(list 'cos cos)
+	(list 'count count)
+	(list 'exp exp)
+	(list 'expt expt)
+	(list 'floor floor)
+	(list 'gcd gcd)
+	(list 'lcm lcm)
+	(list 'log log)
+	(list 'max max)
+	(list 'min min)
+	(list 'modulo modulo)
+	(list 'quotient quotient)
+	(list 'remainder remainder)
+	(list 'round round)
+	(list 'sin sin)
+	(list 'sqrt sqrt)
+	(list 'tan tan)
+	(list 'truncate truncate)))
+
+;;; Printing the Screen
+
+(define (print-screen)
+  (newline)
+  (newline)
+  (newline)
+  (show-column-labels (id-column (screen-corner-cell-id)))
+  (show-rows 20
+	     (id-column (screen-corner-cell-id))
+	     (id-row (screen-corner-cell-id)))
+  (display-cell-name (selection-cell-id))
+  (display ":  ")
+  (show (cell-value (selection-cell-id)))
+  (display-expression (cell-expr (selection-cell-id)))
+  (newline)
+  (display "?? "))
+
+(define (display-cell-name id)
+  (display (number->letter (id-column id)))
+  (display (id-row id)))
+
+(define (show-column-labels col-number)
+  (display "  ")
+  (show-label 6 col-number)
+  (newline))
+
+(define (show-label to-go this-col-number)
+  (cond ((= to-go 0) '())
+	(else
+	 (display "  -----")
+	 (display (number->letter this-col-number))
+	 (display "----")
+	 (show-label (- to-go 1) (+ 1 this-col-number)))))
+
+(define (show-rows to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	 (display (align row 2 0))
+	 (display " ")
+	 (show-row 6 col row)
+	 (newline)
+	 (show-rows (- to-go 1) col (+ row 1)))))
+
+(define (show-row to-go col row)
+  (cond ((= to-go 0) 'done)
+	(else
+	   (display (if (selected-indices? col row) ">" " "))
+	   (display-value (cell-value-from-indices col row))
+	   (display (if (selected-indices? col row) "<" " "))
+	   (show-row (- to-go 1) (+ 1 col) row))))
+
+(define (selected-indices? col row)
+  (and (= col (id-column (selection-cell-id)))
+       (= row (id-row (selection-cell-id)))))
+
+(define (display-value val)
+  (display (align (if (null? val) "" val) 10 2)))
+
+(define (display-expression expr)
+  (cond ((null? expr) (display '()))
+	((quoted? expr) (display (quoted-value expr)))
+	((word? expr) (display expr))
+	((id? expr)
+	 (display-cell-name expr))
+	(else (display-invocation expr))))
+
+(define (display-invocation expr)
+  (display "(")
+  (display-expression (car expr))
+  (for-each (lambda (subexpr)
+	      (display " ")
+	      (display-expression subexpr))
+	    (cdr expr))
+  (display ")"))
+      
+
+;;; Abstract Data Types
+
+;; Special cells: the selected cell and the screen corner
+
+(define *special-cells* (make-vector 2))
+
+(define (selection-cell-id)
+  (vector-ref *special-cells* 0))
+
+(define (set-selection-cell-id! new-id)
+  (vector-set! *special-cells* 0 new-id))
+
+(define (screen-corner-cell-id)
+  (vector-ref *special-cells* 1))
+
+(define (set-screen-corner-cell-id! new-id)
+  (vector-set! *special-cells* 1 new-id))
+
+
+;; Cell names
+
+(define (cell-name? expr)
+  (and (word? expr)
+       (letter? (first expr))
+       (number? (bf expr))))
+
+(define (cell-name-column cell-name)
+  (letter->number (first cell-name)))
+
+(define (cell-name-row cell-name)
+  (bf cell-name))
+
+(define (cell-name->id cell-name)
+  (make-id (cell-name-column cell-name)
+	   (cell-name-row cell-name)))
+	
+;; Cell IDs
+
+(define (make-id col row)
+  (list 'id col row))
+
+(define (id-column id)
+  (cadr id))
+
+(define (id-row id)
+  (caddr id))
+
+(define (id? x)
+  (and (list? x)
+       (not (null? x))
+       (equal? 'id (car x))))
+
+;; Cells
+
+(define (make-cell)
+  (vector '() '() '() '()))
+
+(define (cell-value id)
+  (vector-ref (cell-structure id) 0))
+
+(define (cell-value-from-indices col row)
+  (vector-ref (cell-structure-from-indices col row) 0))
+
+(define (cell-expr id)
+  (vector-ref (cell-structure id) 1))
+
+(define (cell-parents id)
+  (vector-ref (cell-structure id) 2))
+
+(define (cell-children id)
+  (vector-ref (cell-structure id) 3))
+
+(define (set-cell-value! id val)
+  (vector-set! (cell-structure id) 0 val))
+
+(define (set-cell-expr! id val)
+  (vector-set! (cell-structure id) 1 val))
+
+(define (set-cell-parents! id val)
+  (vector-set! (cell-structure id) 2 val))
+
+(define (set-cell-children! id val)
+  (vector-set! (cell-structure id) 3 val))
+
+(define (cell-structure id)
+  (global-array-lookup (id-column id)
+		       (id-row id)))
+
+(define (cell-structure-from-indices col row)
+  (global-array-lookup col row))
+
+(define *the-spreadsheet-array* (make-vector 30))
+
+(define (global-array-lookup col row)
+  (if (and (<= row 30) (<= col 26))
+      (vector-ref (vector-ref *the-spreadsheet-array* (- row 1))
+		  (- col 1))
+      (error "Out of bounds")))
+
+(define (init-array)
+  (fill-array-with-rows 29))
+
+(define (fill-array-with-rows n)
+  (if (< n 0)
+      'done
+      (begin (vector-set! *the-spreadsheet-array* n (make-vector 26))
+	     (fill-row-with-cells
+	      (vector-ref *the-spreadsheet-array* n) 25)
+	     (fill-array-with-rows (- n 1)))))
+
+(define (fill-row-with-cells vec n)
+  (if (< n 0)
+      'done
+      (begin (vector-set! vec n (make-cell))
+	     (fill-row-with-cells vec (- n 1)))))
+
+;;; Utility Functions
+
+(define alphabet
+  '#(a b c d e f g h i j k l m n o p q r s t u v w x y z))
+
+(define (letter? something)
+  (and (word? something)
+       (= 1 (count something))
+       (vector-member something alphabet)))
+
+(define (number->letter num)
+  (vector-ref alphabet (- num 1)))
+
+(define (letter->number letter)
+  (+ (vector-member letter alphabet) 1))
+
+(define (vector-member thing vector)
+  (vector-member-helper thing vector 0))
+
+(define (vector-member-helper thing vector index)
+  (cond ((= index (vector-length vector)) #f)
+	((equal? thing (vector-ref vector index)) index)
+	(else (vector-member-helper thing vector (+ 1 index)))))
+
+(define (remdup lst)
+  (cond ((null? lst) '())
+	((member (car lst) (cdr lst))
+	 (remdup (cdr lst)))
+	(else (cons (car lst) (remdup (cdr lst))))))
+
+(define (remove bad-item lst)
+  (filter (lambda (item) (not (equal? item bad-item)))
+	  lst))
+</PRE><P>
+
+
+
+<P><H2>Exercises</H2>
+
+<P><B>25.1</B>&nbsp;&nbsp;The &quot;magic numbers&quot; 26 and 30 (and some numbers derived from
+them) appear many times in the text of this program.  It's easy to imagine
+wanting more rows or columns.
+
+<P>Create global variables <CODE>total-cols</CODE> and <CODE>total-rows</CODE> with values 26
+and 30 respectively.  Then modify the spreadsheet program to refer to these
+variables rather than to the numbers 26 and 30 directly.  When you're done,
+redefine <CODE>total-rows</CODE> to be 40 and see if it works.
+
+
+<P>
+<B>25.2</B>&nbsp;&nbsp;Suggest a way to notate columns beyond <CODE>z</CODE>.  What procedures would have
+to change to accommodate this?
+
+
+<P>
+<B>25.3</B>&nbsp;&nbsp;Modify the program so that the spreadsheet array is kept as a single vector
+of 780 elements, instead of a vector of 30 vectors of 26 vectors.  What
+procedures do you have to change to make this work?  (It shouldn't be very
+many.)
+
+
+<P>
+<B>25.4</B>&nbsp;&nbsp;The procedures <CODE>get-function</CODE> and <CODE>get-command</CODE> are almost identical
+in structure; both look for an argument in an association list.  They
+differ, however, in their handling of the situation in which the argument is
+not present in the list.  Why?
+
+
+<P>
+<B>25.5</B>&nbsp;&nbsp;The reason we had to include the word <CODE>id</CODE> in each cell ID was so we
+would be able to distinguish a list representing a cell ID from a list of
+some other kind in an expression.  Another way to distinguish cell IDs would
+be to represent them as vectors, since vectors do not otherwise appear
+within expressions.  Change the implementation of cell IDs from
+three-element lists to two-element vectors:
+
+<P><PRE>&gt; (make-id 4 2)
+#(4 2)
+</PRE>
+
+<P>Make sure the rest of the program still works.
+
+
+<P>
+<B>25.6</B>&nbsp;&nbsp;The <CODE>put</CODE> command can be used to label a cell by using a quoted word
+as the &quot;formula.&quot; How does that work?  For example, how is such a formula
+translated into an expression?  How is that expression evaluated?  What if
+the labeled cell has children?
+
+
+<P>
+<B>25.7</B>&nbsp;&nbsp;Add commands to move the &quot;window&quot; of cells displayed on the screen
+without changing the selected cell.  (There are a lot of possible user
+interfaces for this feature; pick anything reasonable.)
+
+
+<P>
+<B>25.8</B>&nbsp;&nbsp;Modify the <CODE>put</CODE> command so that after doing its work it prints
+
+<P><PRE>14 cells modified
+</PRE>
+
+<P>(but, of course, using the actual number of cells modified
+instead of 14).  This number may not be the entire length of a row or column
+because <CODE>put</CODE> doesn't change an existing formula in a cell when you ask
+it to set an entire row or column.
+
+
+<P>
+<B>25.9</B>&nbsp;&nbsp;Modify the program so that each column remembers the number of digits that
+should be displayed after the decimal point (currently always 2).  Add a
+command to set this value for a specified column.  And, of course, modify
+<CODE>print-screen</CODE> to use this information.
+
+
+<P>
+<B>25.10</B>&nbsp;&nbsp;Add an <CODE>undo</CODE> command, which causes the effect of the previous command
+to be nullified.  That is, if the previous command was a cell selection
+command, <CODE>undo</CODE> will return to the previously selected cell.  If the
+previous command was a <CODE>put</CODE>, <CODE>undo</CODE> will re-<CODE>put</CODE> the previous
+expressions in every affected cell.  You don't need to undo <CODE>load</CODE> or
+<CODE>exit</CODE> commands.  To do this, you'll need to modify the way the other
+commands work.
+
+
+<P>
+<B>25.11</B>&nbsp;&nbsp;Add an <CODE>accumulate</CODE> procedure that can be used as a function in
+formulas.  Instead of specifying a sequence of cells explicitly, in a
+formula like
+
+<P><PRE>(put (+ c2 c3 c4 c5 c6 c7) c10)
+</PRE>
+
+<P>we want to be able to say
+
+<P><PRE>(put (accumulate + c2 c7) c10)
+</PRE>
+
+<P>In general, the two cell names should be taken as corners of a
+rectangle, all of whose cells should be included, so these two commands
+are equivalent:
+
+<P><PRE>(put (accumulate * a3 c5) d7)
+(put (* a3 b3 c3 a4 b4 c4 a5 b5 c5) d7)
+</PRE>
+
+<P>Modify <CODE>pin-down</CODE> to convert the <CODE>accumulate</CODE> form into
+the corresponding spelled-out form.
+
+
+<P>
+<B>25.12</B>&nbsp;&nbsp;Add variable-width columns to the spreadsheet.  There should be a command to
+set the print width of a column.  This may mean that the spreadsheet can
+display more or fewer than six columns.
+
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="spread-implement.html#text1">[1]</A> The vector elements are numbered from zero, but we number rows and
+columns from one, subtracting one in the selector that actually extracts
+information from the array of cells.<P>
+<A NAME="ft2" HREF="spread-implement.html#text2">[2]</A> Not every version of Scheme has
+this behavior.  If you find that you have to hit <CODE>return</CODE> twice after exhibiting
+the value of a formula, take out one of the <CODE>read-line</CODE> invocations.<P>
+<A NAME="ft3" HREF="spread-implement.html#text3">[3]</A> We originally wrote two separate helper procedures for the two
+cases, like this:
+
+<P><PRE>(define (put-all-cells-in-row formula row)
+  (row-helper formula 1 26 row))
+
+(define (row-helper formula this-col max-col row)
+  (if (&gt; this-col max-col)
+      'done
+      (begin (try-putting formula <B>(make-id this-col row)</B>)
+	     (row-helper formula (+ this-col 1) max-col row))))
+
+(define (put-all-cells-in-col formula col)
+  (column-helper formula 1 30 col))
+
+(define (column-helper formula this-row max-row col)
+  (if (&gt; this-row max-row)
+      'done
+      (begin (try-putting formula <B>(make-id col this-row)</B>)
+	     (column-helper formula (+ this-row 1) max-row col))))
+</PRE>
+
+<P>but the procedures were so similar that we decided to generalize the
+pattern.<P>
+<A NAME="ft4" HREF="spread-implement.html#text4">[4]</A> In fact, <CODE>process-command</CODE>
+also invokes <CODE>pin-down</CODE> when the user types a formula in place of a
+command.  In that situation, the result doesn't go into a cell but is
+immediately evaluated and printed.<P>
+<A NAME="ft5" HREF="spread-implement.html#text5">[5]</A> You can
+think of the <CODE>cell</CODE> notation in generalized formulas as a kind of
+special form, but <CODE>pin-down</CODE> has turned those into specific cell IDs
+before the formula is eligible for evaluation as an expression.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch24/spread.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="database.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch26/part7.html b/js/games/nluqo.github.io/~bh/ssch26/part7.html
new file mode 100644
index 0000000..0b0fe31
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch26/part7.html
@@ -0,0 +1,60 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science, Part 26: Conclusion: Computer Science</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Part VII</H2>
+<H1>Conclusion: Computer Science</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch26.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch25/database.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="preview.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR><BIG>
+
+<P>This is the end of the technical material in this book.  We've
+explored the big ideas of composition of functions, functions as data,
+recursion, abstraction, and sequential programming.  As a review, you might
+enjoy rereading Chapter 1 to see how the formerly mysterious
+examples now make sense.
+
+<P>This book is intended both as a standalone programming course for people
+whose main interest is in something else and as preparation for those who
+intend to continue studying computer science.  The final chapter is directed
+mainly at the latter group, to tell them what to expect.  We confess,
+though, to the hope that some of the former may have enjoyed this experience
+enough to be lured into further study.  If you're in that category, you'll
+be particularly interested in a preview of coming attractions.
+
+<P>
+
+</BIG>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch25/database.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="preview.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch26/preview b/js/games/nluqo.github.io/~bh/ssch26/preview
new file mode 100644
index 0000000..24e71bc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch26/preview
@@ -0,0 +1,231 @@
+\input bkmacs
+\bigskip
+\photo{}{\pspicture{4in}{sicp}{sicp}{\TrimBoundingBox{40pt}}\vfill}
+\chapter{What's Next?}
+\chaptag{\preview}
+
+We've concluded this introduction to computer science with two examples of
+``real world'' programming---spreadsheets and databases.  What may have
+seemed like a pointless game near the beginning of the book allowed us to
+write these serious programs.
+
+But we've only begun to explore the ideas that make up computer science.
+If you're interested in learning more, where do you go from here?
+
+\subhd{The Best Computer Science Book}
+
+The next step is to read \itidx{Structure and Interpretation of Computer
+Programs} by \swapidx{Harold}{Abelson} and \swapidx{Gerald Jay}{Sussman}
+with \swapidx{Julie}{Sussman} (MIT Press/McGraw-Hill, Second Edition,
+1996).  Our book was inspired by theirs, and our main goal in writing this
+book has been to prepare you for that one.  If you're a student and your
+school offers a course based on {\it SICP,\/} take it!  If not, read the
+book on your own.
+
+The big organizing idea of {\it SICP\/} is \idx{abstraction}.  We've used
+this idea in several ways.  We've talked about {\it data abstraction\/} such
+as inventing the sentence and tree data types.  We've also invented more
+specialized data types, such as positions in the tic-tac-toe program and
+cells in the spreadsheet program.  We've discussed how higher-order
+procedures abstract a pattern of computation by using an extra argument to
+represent the function that's abstracted out.
+
+What we've done in this book covers most of the main ideas in about the first
+hundred pages of {\it SICP.\/} But don't skip over those pages.  In the
+footnotes alone you'll find ideas about numerical analysis, cryptography,
+epistemology (the study of what it means to know something), number theory,
+programming language design, and the analysis of algorithms.
+
+Because there {\it is\/} some overlap between what we teach and what they
+teach, you may think at first that you can breeze through a course based on
+{\it SICP.\/} Don't fall into that trap; even from the beginning there will
+be some ideas that are new to you, and after about four weeks it will {\it
+all\/} be new to you.
+
+The core ideas of this book are in the first chapter of {\it SICP:\/}
+functions, recursion, the substitution model, and higher-order functions.
+The second chapter is about lists and data abstraction, extending the ladder
+of data abstractions in both directions.  (That is, in our book, lists are
+the fundamental data type used to construct the {\it sentence\/} and {\it
+tree\/} abstract data types.  In {\it SICP\/} you first learn that lists
+themselves are built of an even more fundamental type, the {\it pairs\/}
+that we mentioned in a pitfall in Chapter \lists.  Then you learn about
+several more abstract data types that can be built out of lists.)  The idea
+of data abstraction extends beyond inventing new types. For example, {\it
+SICP\/} uses data structures not only to contain passive information but
+also to control the algorithms used in a computation.  You got a taste of
+this in the a-list of functions in the {\tt functions} program.
+
+The third chapter of {\it SICP\/} is largely about non-functional
+programming, a topic we only begin in this book.  Specifically, {\it
+SICP\/} introduces object-oriented programming, a very popular technique in
+which the dichotomy between ``smart'' procedures and passive data is broken
+down.  Instead of a single program controlling the computation, there are
+many {\it objects\/} that contain both algorithms and data; each object acts
+independently of the others.  (This is a metaphor; there is still one
+computer implementing all this activity.  The point is that the programmer
+is able to think in terms of the metaphor, and the mechanism that simulates
+the independent objects is hidden behind the object abstraction.)
+
+You may have forgotten by now that {\it SICP\/} stands for {\it Structure
+and Interpretation of Computer Programs.\/} We've been talking about the
+``structure'' part:\ how a program is organized to reflect the algorithm it
+implements.  The ``interpretation'' half of the book explains how a
+programming language like Scheme really works---how a computer understands
+the program and carries out the activities that the program requests.  The
+centerpiece of the interpretation part of the book is the Scheme interpreter
+in the fourth chapter,
+a program that takes any other Scheme program as its data and does
+what that program specifies.  (The {\tt compute} procedure that evaluates
+arithmetic expression trees in Chapter \trees\ and the {\tt ss-eval}
+procedure in our spreadsheet program give a hint of what the {\it SICP\/}
+Scheme evaluator is like.)  The book goes on to implement different
+programming languages and illustrate a variety of implementation techniques.
+Finally, the fifth chapter introduces the study of machine organization:\ how
+computer hardware carries out a program.
+
+\subhd{Beyond {\it SICP\/}}
+
+Computer science can be broadly divided into three areas:\ software,
+hardware, and theory.  (Of course not everyone will agree with our division
+in detail.)  This book is about software.  {\it SICP\/} is also mostly about
+software, although it introduces some ideas from the other two areas.  More
+advanced computer science courses will concentrate on one particular area.
+
+Software includes programming languages, operating systems, and application
+programs.  You know what a programming language is; there are courses on
+language design questions (why one language is different from another) and
+implementation (for example, how to write a Scheme
+interpreter).\footnt{Many beginners think that studying computer science
+means learning a lot of different programming languages.  Perhaps you start
+with BASIC, then you learn Pascal, then C, and so on.  That's not
+true.  The crucial ideas in computer science can be expressed in any modern
+language; it's unusual for a computer science student to be taught more than
+two languages throughout college.} An operating system is a program
+that maintains disk file structures and allows different programs to run on
+a computer without interfering with each other.  Application programming
+techniques studied in computer science courses include database management,
+graphics programming, user interfaces, and artificial intelligence.
+
+The study of computer hardware ranges from physical principles, through the
+workings of electronic components such as transistors, to large-scale
+circuits such as memories and adders, to the design of actual computers.  This
+is a range of levels of abstraction, just as there are levels of abstraction
+in programming.  At the higher levels of abstraction, you can think of an
+electronic circuit as a perfect representation of some function that it
+implements; that is, the signals coming out the output wires are functions
+of the signals coming in at the input wires.  At a lower level of
+abstraction, you have to think about the limitations of physical devices.
+(For example, a device may fail if its output is attached to the inputs of
+too many other devices.  It's as if you could use the return value from
+a function only a certain number of times.)
+
+Theoretical computer science is a kind of applied mathematics.  It includes
+analysis of algorithms, which is the study of how fast one program runs
+compared to another.  (We touched on this topic when we mentioned that the
+simple selection sort is slower than the more complicated mergesort.
+Analysis of algorithms provides the tools to show exactly how much slower.)
+Theoreticians also study problems that can't be solved by any computer
+program at all; the most famous example is the {\it halting problem\/} of
+determining in finite time whether some other program would run forever.
+{\it Automata theory\/} is the study of simplified pseudo-computers to prove
+theorems about the capabilities of computers in general.
+
+A few topics don't fit readily into one of our three groups, such as {\it
+numerical analysis,\/} the study of how computers do arithmetic to ensure
+that the algorithms used really give correct results.  This field involves
+aspects of programming, hardware design, and mathematics.  {\it Robotics\/}
+involves artificial intelligence programming techniques along with
+electrical and mechanical engineering.
+
+\backskipsubhd{Standard Scheme}{8}
+
+{\blskip{2}
+
+As we've mentioned, this book uses a lot of ``primitive'' procedures that
+aren't part of standard Scheme.  These are procedures we wrote in
+Scheme and included in the file {\tt simply.scm}, which is listed in
+Appendix C\null.
+
+When you use Scheme in some other context, it probably won't come with these
+procedures included.  There are three things you can do about this:
+
+\medskip
+{\parindent=1em
+\bb Learn to love standard Scheme.  That means not using the word and
+sentence functions, not using our implementation of trees, not using our
+higher-order procedures ({\tt map} and {\tt for-each} are the only standard
+ones), and not using {\tt read-line}, {\tt read-string}, {\tt show}, {\tt
+show-line}, {\tt align}, or {\tt close-all-ports}.  Also, you may find it
+necessary to use data types we haven't fully explained:\ characters,
+strings, and pairs.
+\bb Load our {\tt simply.scm} and continue to work in the style we've used
+in this book.  The advantage is that (in our humble opinion) we've provided
+some very convenient facilities.  The disadvantage is that other Scheme
+programmers won't understand your programs unless they've read our book.
+\bb Develop your own collection of tools to match the kind of programming
+you're doing in the new situations that come up.  You can start with some
+of ours and add new procedures that you invent.
+
+}
+
+Actually, all three of these are good ideas.  If you are going to continue
+working with Scheme, you'll certainly need to know what's in the standard and
+what's an extension to the language.  After a while you're bound to develop
+a collection of tools that fit with your own preferred programming style.
+And sometimes {\tt butfirst} will be just what you need for some project.
+
+You may be curious about the {\it implementation\/} of our tool procedures.
+You've already seen some of them, such as the higher-order procedures whose
+implementation is described in Chapter \implhof.  The input/output procedures
+({\tt show} and its friends) are straightforward once you've learned about
+the character data type.  But you'll find that the implementation of words
+is quite complicated.  Not only did we have to write the obvious {\tt word},
+{\tt first}, and so on, but we also had to rewrite all of the arithmetic
+procedures so they work on words like {\tt "007"} as well as ordinary numbers.
+
+There are two documents that specify exactly what makes up standard Scheme.
+The first is updated fairly frequently to reflect ongoing experimentation in
+the language design.  As we go to press, the most recent edition is called
+the {\it Revised\/${}^5$ Report on the Algorithmic Language Scheme.\/} The
+second document is meant to provide a more stable basis for people who
+depend on a language that's guaranteed not to become obsolete; it's IEEE
+Standard 1178-1990, {\it IEEE Standard for the Scheme Programming
+Language,\/} published by the Institute of Electrical and Electronic
+Engineers in 1991.  Appendix A tells you how to find both documents.
+
+\backskipsubhd{Last Words}{8}
+
+It's hard to wrap up something like this without sounding preachy.  Perhaps
+you'll forgive us this one section since we've been so cool all
+through the rest of the book.
+
+We thought of two general points that we want to leave you with.  First, in
+our teaching experience at Berkeley we've seen many students learn the ideas
+of functional programming in Scheme, then seem to forget all the ideas when
+they use another programming language, such as C.  Part of the skill of a
+computer scientist is to see past surface differences in notation and
+understand, for example, that if the best way to solve some problem in Scheme
+is with a recursive procedure, then it's probably the best way in C, too.
+
+The second point is that it's very easy to get a narrow technical education,
+learn lots of great ideas about computer science, and still have a hard time
+dealing with the rest of reality.  The utilitarian way to put it is that when
+you work as a computer programmer it's rare that you can just sit in your
+corner and write programs.  Instead, you have to cooperate with other people
+on a team project; you have to write documentation both for other
+programmers and for the people who will eventually use your program; you have
+to talk with customers and find out what they really want the program to do,
+before you write it.  For all these reasons you have to work at developing
+communication skills just as much as you work at your programming skills.
+But the utilitarian argument is just our sneaky way of convincing
+you; the truth is that we want you to know about things that have nothing to
+do with your technical work.  Matt majored in music along with computer
+science; Brian has a degree in clinical psychology.  After you read Abelson
+and Sussman, go on to read Freud and Marx.
+\justidx{Freud, Sigmund}
+\justidx{Marx, Karl}
+
+} % skip kludge
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch26/preview.html b/js/games/nluqo.github.io/~bh/ssch26/preview.html
new file mode 100644
index 0000000..7815d18
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch26/preview.html
@@ -0,0 +1,262 @@
+<P>
+
+<P><P><CENTER><IMG SRC="../ss-pics/sicp.jpg" ALT="figure: sicp"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 26: What's Next?</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 26</H2>
+<H1>What's Next?</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch26.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch27/appendix-running.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We've concluded this introduction to computer science with two examples of
+&quot;real world&quot; programming&mdash;spreadsheets and databases.  What may have
+seemed like a pointless game near the beginning of the book allowed us to
+write these serious programs.
+
+<P>But we've only begun to explore the ideas that make up computer science.
+If you're interested in learning more, where do you go from here?
+
+<P><H2>The Best Computer Science Book</H2>
+
+<P>The next step is to read <A NAME="g1"></A><EM>Structure and Interpretation of Computer
+Programs</EM> by <A NAME="g2"></A>Harold Abelson and <A NAME="g3"></A>Gerald Jay Sussman
+with <A NAME="g4"></A>Julie Sussman (MIT Press/McGraw-Hill, Second Edition,
+1996).  Our book was inspired by theirs, and our main goal in writing this
+book has been to prepare you for that one.  If you're a student and your
+school offers a course based on <EM>SICP,</EM> take it!  If not, read the
+book on your own.
+
+<P>The big organizing idea of <EM>SICP</EM> is abstraction.  We've used
+this idea in several ways.  We've talked about <EM>data abstraction</EM> such
+as inventing the sentence and tree data types.  We've also invented more
+specialized data types, such as positions in the tic-tac-toe program and
+cells in the spreadsheet program.  We've discussed how higher-order
+procedures abstract a pattern of computation by using an extra argument to
+represent the function that's abstracted out.
+
+<P>What we've done in this book covers most of the main ideas in about the first
+hundred pages of <EM>SICP.</EM> But don't skip over those pages.  In the
+footnotes alone you'll find ideas about numerical analysis, cryptography,
+epistemology (the study of what it means to know something), number theory,
+programming language design, and the analysis of algorithms.
+
+<P>Because there <EM>is</EM> some overlap between what we teach and what they
+teach, you may think at first that you can breeze through a course based on
+<EM>SICP.</EM> Don't fall into that trap; even from the beginning there will
+be some ideas that are new to you, and after about four weeks it will <EM>all</EM> be new to you.
+
+<P>The core ideas of this book are in the first chapter of <EM>SICP:</EM>
+functions, recursion, the substitution model, and higher-order functions.
+The second chapter is about lists and data abstraction, extending the ladder
+of data abstractions in both directions.  (That is, in our book, lists are
+the fundamental data type used to construct the <EM>sentence</EM> and <EM>tree</EM> abstract data types.  In <EM>SICP</EM> you first learn that lists
+themselves are built of an even more fundamental type, the <EM>pairs</EM>
+that we mentioned in a pitfall in Chapter 17.  Then you learn about
+several more abstract data types that can be built out of lists.)  The idea
+of data abstraction extends beyond inventing new types. For example, <EM>SICP</EM> uses data structures not only to contain passive information but
+also to control the algorithms used in a computation.  You got a taste of
+this in the a-list of functions in the <CODE>functions</CODE> program.
+
+<P>The third chapter of <EM>SICP</EM> is largely about non-functional
+programming, a topic we only begin in this book.  Specifically, <EM>SICP</EM> introduces object-oriented programming, a very popular technique in
+which the dichotomy between &quot;smart&quot; procedures and passive data is broken
+down.  Instead of a single program controlling the computation, there are
+many <EM>objects</EM> that contain both algorithms and data; each object acts
+independently of the others.  (This is a metaphor; there is still one
+computer implementing all this activity.  The point is that the programmer
+is able to think in terms of the metaphor, and the mechanism that simulates
+the independent objects is hidden behind the object abstraction.)
+
+<P>You may have forgotten by now that <EM>SICP</EM> stands for <EM>Structure
+and Interpretation of Computer Programs.</EM> We've been talking about the
+&quot;structure&quot; part: how a program is organized to reflect the algorithm it
+implements.  The &quot;interpretation&quot; half of the book explains how a
+programming language like Scheme really works&mdash;how a computer understands
+the program and carries out the activities that the program requests.  The
+centerpiece of the interpretation part of the book is the Scheme interpreter
+in the fourth chapter,
+a program that takes any other Scheme program as its data and does
+what that program specifies.  (The <CODE>compute</CODE> procedure that evaluates
+arithmetic expression trees in Chapter 18 and the <CODE>ss-eval</CODE>
+procedure in our spreadsheet program give a hint of what the <EM>SICP</EM>
+Scheme evaluator is like.)  The book goes on to implement different
+programming languages and illustrate a variety of implementation techniques.
+Finally, the fifth chapter introduces the study of machine organization: how
+computer hardware carries out a program.
+
+<P><H2>Beyond <EM>SICP</EM></H2>
+
+<P>Computer science can be broadly divided into three areas: software,
+hardware, and theory.  (Of course not everyone will agree with our division
+in detail.)  This book is about software.  <EM>SICP</EM> is also mostly about
+software, although it introduces some ideas from the other two areas.  More
+advanced computer science courses will concentrate on one particular area.
+
+<P>Software includes programming languages, operating systems, and application
+programs.  You know what a programming language is; there are courses on
+language design questions (why one language is different from another) and
+implementation (for example, how to write a Scheme
+interpreter).<A NAME="text1" HREF="preview.html#ft1">[1]</A> An operating system is a program
+that maintains disk file structures and allows different programs to run on
+a computer without interfering with each other.  Application programming
+techniques studied in computer science courses include database management,
+graphics programming, user interfaces, and artificial intelligence.
+
+<P>The study of computer hardware ranges from physical principles, through the
+workings of electronic components such as transistors, to large-scale
+circuits such as memories and adders, to the design of actual computers.  This
+is a range of levels of abstraction, just as there are levels of abstraction
+in programming.  At the higher levels of abstraction, you can think of an
+electronic circuit as a perfect representation of some function that it
+implements; that is, the signals coming out the output wires are functions
+of the signals coming in at the input wires.  At a lower level of
+abstraction, you have to think about the limitations of physical devices.
+(For example, a device may fail if its output is attached to the inputs of
+too many other devices.  It's as if you could use the return value from
+a function only a certain number of times.)
+
+<P>Theoretical computer science is a kind of applied mathematics.  It includes
+analysis of algorithms, which is the study of how fast one program runs
+compared to another.  (We touched on this topic when we mentioned that the
+simple selection sort is slower than the more complicated mergesort.
+Analysis of algorithms provides the tools to show exactly how much slower.)
+Theoreticians also study problems that can't be solved by any computer
+program at all; the most famous example is the <EM>halting problem</EM> of
+determining in finite time whether some other program would run forever.
+<EM>Automata theory</EM> is the study of simplified pseudo-computers to prove
+theorems about the capabilities of computers in general.
+
+<P>A few topics don't fit readily into one of our three groups, such as <EM>numerical analysis,</EM> the study of how computers do arithmetic to ensure
+that the algorithms used really give correct results.  This field involves
+aspects of programming, hardware design, and mathematics.  <EM>Robotics</EM>
+involves artificial intelligence programming techniques along with
+electrical and mechanical engineering.
+
+<P><H2>Standard Scheme</H2>
+
+<P>
+
+<P>As we've mentioned, this book uses a lot of &quot;primitive&quot; procedures that
+aren't part of standard Scheme.  These are procedures we wrote in
+Scheme and included in the file <CODE>simply.scm</CODE>, which is listed in
+Appendix C.
+
+<P>When you use Scheme in some other context, it probably won't come with these
+procedures included.  There are three things you can do about this:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Learn to love standard Scheme.  That means not using the word and
+sentence functions, not using our implementation of trees, not using our
+higher-order procedures (<CODE>map</CODE> and <CODE>for-each</CODE> are the only standard
+ones), and not using <CODE>read-line</CODE>, <CODE>read-string</CODE>, <CODE>show</CODE>, <CODE>show-line</CODE>, <CODE>align</CODE>, or <CODE>close-all-ports</CODE>.  Also, you may find it
+necessary to use data types we haven't fully explained: characters,
+strings, and pairs.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Load our <CODE>simply.scm</CODE> and continue to work in the style we've used
+in this book.  The advantage is that (in our humble opinion) we've provided
+some very convenient facilities.  The disadvantage is that other Scheme
+programmers won't understand your programs unless they've read our book.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Develop your own collection of tools to match the kind of programming
+you're doing in the new situations that come up.  You can start with some
+of ours and add new procedures that you invent.
+
+</TABLE>
+
+<P>Actually, all three of these are good ideas.  If you are going to continue
+working with Scheme, you'll certainly need to know what's in the standard and
+what's an extension to the language.  After a while you're bound to develop
+a collection of tools that fit with your own preferred programming style.
+And sometimes <CODE>butfirst</CODE> will be just what you need for some project.
+
+<P>You may be curious about the <EM>implementation</EM> of our tool procedures.
+You've already seen some of them, such as the higher-order procedures whose
+implementation is described in Chapter 19.  The input/output procedures
+(<CODE>show</CODE> and its friends) are straightforward once you've learned about
+the character data type.  But you'll find that the implementation of words
+is quite complicated.  Not only did we have to write the obvious <CODE>word</CODE>,
+<CODE>first</CODE>, and so on, but we also had to rewrite all of the arithmetic
+procedures so they work on words like <CODE>&quot;007&quot;</CODE> as well as ordinary numbers.
+
+<P>There are two documents that specify exactly what makes up standard Scheme.
+The first is updated fairly frequently to reflect ongoing experimentation in
+the language design.  As we go to press, the most recent edition is called
+the <EM>Revised<SUP><SMALL>5</SMALL></SUP> Report on the Algorithmic Language Scheme.</EM> The
+second document is meant to provide a more stable basis for people who
+depend on a language that's guaranteed not to become obsolete; it's IEEE
+Standard 1178-1990, <EM>IEEE Standard for the Scheme Programming
+Language,</EM> published by the Institute of Electrical and Electronic
+Engineers in 1991.  Appendix A tells you how to find both documents.
+
+<P><H2>Last Words</H2>
+
+<P>It's hard to wrap up something like this without sounding preachy.  Perhaps
+you'll forgive us this one section since we've been so cool all
+through the rest of the book.
+
+<P>We thought of two general points that we want to leave you with.  First, in
+our teaching experience at Berkeley we've seen many students learn the ideas
+of functional programming in Scheme, then seem to forget all the ideas when
+they use another programming language, such as C.  Part of the skill of a
+computer scientist is to see past surface differences in notation and
+understand, for example, that if the best way to solve some problem in Scheme
+is with a recursive procedure, then it's probably the best way in C, too.
+
+<P>The second point is that it's very easy to get a narrow technical education,
+learn lots of great ideas about computer science, and still have a hard time
+dealing with the rest of reality.  The utilitarian way to put it is that when
+you work as a computer programmer it's rare that you can just sit in your
+corner and write programs.  Instead, you have to cooperate with other people
+on a team project; you have to write documentation both for other
+programmers and for the people who will eventually use your program; you have
+to talk with customers and find out what they really want the program to do,
+before you write it.  For all these reasons you have to work at developing
+communication skills just as much as you work at your programming skills.
+But the utilitarian argument is just our sneaky way of convincing
+you; the truth is that we want you to know about things that have nothing to
+do with your technical work.  Matt majored in music along with computer
+science; Brian has a degree in clinical psychology.  After you read Abelson
+and Sussman, go on to read Freud and Marx.
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+
+<P> 
+
+<HR>
+<A NAME="ft1" HREF="preview.html#text1">[1]</A> Many beginners think that studying computer science
+means learning a lot of different programming languages.  Perhaps you start
+with BASIC, then you learn Pascal, then C, and so on.  That's not
+true.  The crucial ideas in computer science can be expressed in any modern
+language; it's unusual for a computer science student to be taught more than
+two languages throughout college.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch27/appendix-running.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appendix-cl.html b/js/games/nluqo.github.io/~bh/ssch27/appendix-cl.html
new file mode 100644
index 0000000..f4dc775
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appendix-cl.html
@@ -0,0 +1,523 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme Appendix B: Common Lisp</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Appendix B</H2>
+<H1>Common Lisp</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appendix-running.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-simply.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The two most popular dialects of Lisp are Scheme and Common Lisp.  This
+appendix, which assumes that you have finished the rest of this book,
+describes the most important differences between Scheme and Common Lisp so
+that you will be able to use Common Lisp if you need to.  Common Lisp is the
+most popular language among Artificial Intelligence researchers, so AI
+courses often use Common Lisp.
+
+<P><H2>Why Common Lisp Exists</H2>
+
+<P>Since the beginning of Lisp, many versions of the language were developed.
+Each dialect reflected different ideas about the most important capabilities
+to include in the language.  This diversity made Lisp an exciting arena for
+research, but it also meant that a Lisp program written for one dialect
+couldn't be used elsewhere.
+
+<P>In 1984, a group of Lisp developers decided to define a version of Lisp that
+would combine the capabilities of all their favorite dialects, so that in
+the future they would all use the same language; thus the name &quot;Common&quot;
+Lisp.  Common Lisp was not the first attempt at a universal Lisp dialect,
+but it was more successful than earlier efforts.  In 1985 a revision of the
+language was begun under the aegis of ANSI, the American National Standards
+Institute.  This ANSI sponsorship gave Common Lisp an official status that
+has contributed to its growing acceptance.
+
+<P>Since Common Lisp was designed by combining the capabilities of many earlier
+dialects, it's an enormous language with nearly 1000 primitives, including
+versions of several programs in this book.  There is a primitive <CODE>sort</CODE>
+procedure, a procedure like <CODE>number-name</CODE> that spells numbers in
+English, and a <CODE>substitute</CODE> procedure identical to the one you wrote in
+an exercise, to name a few.
+
+<P>If you're writing your own programs in Common Lisp, you can ignore all the
+extra features and just use the capabilities you already know from Scheme.
+If you're trying to read someone else's Common Lisp program, we expect that
+you will have to look up many primitive procedures in a reference manual.
+
+<P><H2>Defining Procedures and Variables</H2>
+
+<P>One minor difference between Scheme and Common Lisp is in the way procedures
+are defined.  In Common Lisp,
+
+<P><PRE>(defun square (x)
+  (* x x))
+</PRE>
+
+<P>means the same as Scheme's
+
+<P><PRE>(define (square x)
+  (* x x))
+</PRE>
+
+<P>In Scheme, <CODE>define</CODE> is used both for procedures and for variables whose
+values aren't procedures.  In Common Lisp, procedures are given names by a
+mechanism separate from the general variable mechanism; <CODE>defun</CODE> is only
+for procedures.  To define a variable, use <CODE>defvar</CODE>:
+
+<P><PRE>common-lisp&gt; (defvar x 6)
+6
+
+common-lisp&gt; x
+6
+</PRE>
+
+<P>In Common Lisp, <CODE>defvar</CODE> returns the name of the variable you
+define.  If a variable has already been defined, <CODE>defvar</CODE> will not
+change its value; for that you must use <CODE>setq</CODE>.
+
+<P><H2>The Naming Convention for Predicates</H2>
+
+<P>In Common Lisp, names of predicate procedures end in a &quot;<CODE>p</CODE>&quot; (for
+&quot;predicate&quot;) instead of a question mark.  Unfortunately, this convention
+isn't followed strictly.  For example, Common Lisp's version of the <CODE>null?</CODE> predicate is just &quot;<CODE>null</CODE>,&quot; not &quot;<CODE>nullp</CODE>.&quot;
+
+<P><H2>No Words or Sentences</H2>
+
+<P>We've mentioned that Scheme doesn't really have words and
+sentences built in; neither does Common Lisp.  So none of the following
+procedures have Common Lisp equivalents: <CODE>accumulate</CODE>, <CODE>appearances</CODE>, <CODE>before?</CODE>, <CODE>bf</CODE>, <CODE>bl</CODE>, <CODE>butfirst</CODE>, <CODE>butlast</CODE>, <CODE>count</CODE>, <CODE>empty?</CODE>, <CODE>every</CODE>, <CODE>first</CODE>, <CODE>item</CODE>,
+<CODE>keep</CODE>, <CODE>last</CODE>, <CODE>member?</CODE>, <CODE>se</CODE>, <CODE>sentence</CODE>, <CODE>word</CODE>,
+and <CODE>word?</CODE>.  (Common Lisp does have lists, though, and list-related
+procedures such as <CODE>map</CODE>, <CODE>reduce</CODE>, <CODE>append</CODE>, and so on <EM>do</EM>
+have equivalents.)
+
+<P><H2>True and False</H2>
+
+<P>Common Lisp doesn't have the Boolean values <CODE>#t</CODE> and <CODE>#f</CODE>.
+Instead, it has a single false value, <CODE>nil</CODE>, which is also the empty
+list.
+
+<P><PRE>common-lisp&gt; (= 2 3)
+NIL
+
+common-lisp&gt; (cdr '(one-word-list))
+NIL
+
+common-lisp&gt; '()
+NIL
+</PRE>
+
+<P><CODE>Nil</CODE> is a strange beast in Common Lisp.  It isn't a variable with the
+empty list as its value; it's a special self-evaluating symbol.  There is
+also <CODE>t</CODE>, a self-evaluating symbol with a true value.
+
+<P><PRE>common-lisp&gt; 'nil
+NIL
+
+common-lisp&gt; nil
+NIL
+
+common-lisp&gt; t
+T
+</PRE>
+
+<P>Like Scheme, Common Lisp treats every non-false (i.e., non-<CODE>nil</CODE>) value
+as true.  But be careful; in Common Lisp
+
+<P><PRE>common-lisp&gt; (if (cdr '(one-word-list)) 'yes 'no)
+</PRE>
+
+<P>has the value <CODE>NO</CODE>, because the empty list is <CODE>nil</CODE>.
+
+<P>In Common Lisp's <CODE>cond</CODE>, there is no equivalent to <CODE>else</CODE>; Common
+Lisp programmers instead use <CODE>t</CODE> as the condition for their last clause,
+like this:
+
+<P><PRE>(defun sign (n)
+  (cond ((&gt; n 0) 'positive)
+	((= n 0) 'zero)
+	(t 'negative)))
+</PRE>
+
+<P><H2>Files</H2>
+
+<P>Common Lisp's mechanism for dealing with files is trivially different from
+Scheme's.  What Scheme calls &quot;ports,&quot; Common Lisp calls &quot;streams.&quot; Also,
+there is only one procedure for opening streams; the direction is specified
+this way:
+
+<P><PRE>common-lisp&gt; (defvar out-stream (open &quot;outfile&quot; :direction :output))
+#&lt;OUTPUT STREAM &quot;outfile&quot;>
+
+common-lisp&gt; (close out-stream)
+T
+
+common-lisp&gt; (defvar in-stream (open &quot;infile&quot; :direction :input))
+#&lt;INPUT STREAM &quot;infile&quot;>
+
+common-lisp&gt; (close in-stream)
+T
+</PRE>
+
+<P>Note that the <CODE>close</CODE> procedure closes both input streams and
+output streams.
+
+<P>To <CODE>read</CODE> from an input stream, you must invoke <CODE>read</CODE> with three
+arguments:
+
+<P><PRE>common-lisp&gt; (read stream nil <EM>anything</EM>)
+</PRE>
+
+<P>The <CODE>nil</CODE> indicates that reaching the end of the file should
+not be an error.  If <CODE>read</CODE> does reach the end of the file, instead of
+returning a special end-of-file object it returns its third argument.
+It's possible to choose any value as the indicator for reaching the end
+of the file:
+
+<P><PRE>(let ((next (read stream nil 'xyzzy)))
+  (if (equalp next 'xyzzy)
+      'done
+      (do-something next)))
+</PRE>
+
+<P>It's important to choose an end-of-file indicator that couldn't
+otherwise appear as a value in the file.
+
+<P><H2>Arrays</H2>
+
+<P>In Common Lisp, vectors are just a special case of the multidimensional <EM>array</EM> data type that you invented in Exercise <A HREF="../ssch23/vectors.html#arrays">23.15</A>.  There are quite a
+few differences between Common Lisp arrays and Scheme vectors, none very
+difficult, but too numerous to describe here.  If you need to use arrays,
+read about them in a Common Lisp book.
+
+<P><H2>Equivalents to Scheme Primitives</H2>
+
+<P>Other than the word and sentence procedures, here is a table of the
+Scheme primitives from the table on page <A HREF="appendix-funlist.html#funlist">funlist</A> that have
+different names, slightly different behavior, or do not exist at all
+in Common Lisp.  Scheme procedures not in this list (other than the
+word and sentence ones) can be used identically in Common Lisp.
+
+<P>
+<P><TABLE>
+<TR><TH>Scheme<TH>Common Lisp
+<TR><TD><CODE>align</CODE>
+<TD>Common Lisp's <CODE>format</CODE> primitive has a similar purpose
+<TR><TD><CODE>begin</CODE>
+<TD><CODE>progn</CODE>
+<TR><TD><CODE>boolean?</CODE>
+<TD>Doesn't exist; see the section in this appendix about true and
+false values.
+<TR><TD><CODE>c...r</CODE>
+<TD>The same, but <CODE>(c...r nil)</CODE> is <CODE>nil</CODE> instead
+of an error.
+<TR><TD><CODE>children</CODE>
+<TD>You can use our version from Chapter 18.
+<TR><TD><CODE>close-...-port</CODE>
+<TD><CODE>close</CODE>
+<TR><TD><CODE>close-all-ports</CODE>&nbsp;&nbsp;&nbsp;
+<TD>Doesn't exist.
+<TR><TD><CODE>cond</CODE>
+<TD>The same, except for <CODE>else</CODE>; use <CODE>t</CODE> instead.
+<TR><TD><CODE>datum</CODE>
+<TD>You can use our version from Chapter 18.
+<TR><TD><CODE>define</CODE>
+<TD>Either <CODE>defun</CODE>, for procedure, or
+<CODE>defvar</CODE>, otherwise.
+<TR><TD><CODE>display</CODE>
+<TD><CODE>princ</CODE>
+<TR><TD><CODE>eof-object?</CODE>
+<TD>See the section on files.
+<TR><TD><CODE>equal?</CODE>
+<TD><CODE>equalp</CODE>
+<TR><TD><CODE>even?</CODE>
+<TD><CODE>evenp</CODE>
+<TR><TD><CODE>filter</CODE>
+<TD><CODE>remove-if-not</CODE>
+<TR><TD><CODE>for-each</CODE>
+<TD><CODE>mapc</CODE>
+<TR><TD><CODE>integer?</CODE>
+<TD><CODE>integerp</CODE>
+<TR><TD><CODE>lambda</CODE>
+<TD>Discussed later in this appendix.
+<TR><TD><CODE>list?</CODE>
+<TD><CODE>listp</CODE>, except that <CODE>listp</CODE> also returns true
+for improper lists.
+<TR><TD><CODE>list-ref</CODE>
+<TD><CODE>nth</CODE>, except that the arguments come in reverse order.
+<TR><TD><CODE>list->vector</CODE>
+<TD>See the section about arrays.
+<TR><TD><CODE>make-node</CODE>
+<TD>You can use our version from Chapter 18.
+<TR><TD><CODE>make-vector</CODE>
+<TD>See the section about arrays.
+<TR><TD><CODE>map</CODE>
+<TD><CODE>mapcar</CODE>
+<TR><TD><CODE>newline</CODE>
+<TD><CODE>terpri</CODE>
+<TR><TD><CODE>null?</CODE>
+<TD><CODE>null</CODE>
+<TR><TD><CODE>number?</CODE>
+<TD><CODE>numberp</CODE>
+<TR><TD><CODE>odd?</CODE>
+<TD><CODE>oddp</CODE>
+<TR><TD><CODE>open-...-file</CODE>
+<TD>See the section on files.
+<TR><TD><CODE>procedure?</CODE>
+<TD><CODE>functionp</CODE>
+<TR><TD><CODE>quotient</CODE>
+<TD><CODE>truncate</CODE>
+<TR><TD><CODE>read</CODE>
+<TD>Identical except for end of file.  See the section on files.
+<TR><TD><CODE>read-line</CODE>
+<TD>Doesn't exist.  (Common Lisp's <CODE>read-line</CODE> is like our
+<CODE>read-string</CODE>.)
+<TR><TD><CODE>read-string</CODE>
+<TD><CODE>read-line</CODE>
+<TR><TD><CODE>reduce</CODE>
+<TD>The same, but computes <CODE>(f (f a b) c)</CODE> instead of
+<CODE>(f a (f b c))</CODE>
+<TR><TD><CODE>remainder</CODE>
+<TD><CODE>rem</CODE>
+<TR><TD><CODE>repeated</CODE>
+<TD>Doesn't exist.
+<TR><TD><CODE>show</CODE>
+<TD><CODE>Doesn't exist but easy to write.</CODE>
+<TR><TD><CODE>show-line</CODE>
+<TD><CODE>Doesn't exist.</CODE>
+<TR><TD><CODE>vector-</CODE><I>anything</I>
+<TD>See the section about arrays.
+<TR><TD><CODE>write</CODE>
+<TD><CODE>prin1</CODE>
+</TABLE><P>
+
+
+<P><H2>A Separate Name Space for Procedures</H2>
+
+<P>All of the differences noted in this table are fairly minor ones, in the
+sense that the translation needed to account for these differences requires
+little more than renaming.  There is one major conceptual difference between
+the two languages, however, in the way they treat names of procedures.
+Common Lisp allows a procedure and a variable to have the same name.  For
+example, the program
+
+<P><PRE>(defun three-copies (list)
+  (list list list list))
+</PRE>
+
+<P>is perfectly legal.
+
+<P><PRE>common-lisp&gt; (three-copies '(drive my car))
+((DRIVE MY CAR) (DRIVE MY CAR) (DRIVE MY CAR))
+</PRE>
+
+<P>How can Common Lisp tell that one of the <CODE>list</CODE>s means the primitive
+procedure, but the other ones mean the formal parameter?  Symbols in the
+first position in a list (right after an open parenthesis) are taken
+to be names of globally defined procedures.
+
+<P>In Chapter 7 we introduced the image of a blackboard with all the
+global variables written on it, which all the Scheme little people can see.
+In Common Lisp, there are <EM>two</EM> blackboards: one for global
+variables, just as in Scheme, and another one for procedures.  The procedure
+blackboard contains the primitive procedures and the procedures you define
+with <CODE>defun</CODE>.  Names in the first position of an expression are looked
+up on the procedure blackboard.
+
+<P>Therefore, the names of procedures are not variables and cannot be used as
+actual argument expressions:
+
+<P><PRE>common-lisp&gt; (sqrt 144)
+12
+
+common-lisp&gt; (mapcar sqrt '(9 16 25 36))
+ERROR: The variable SQRT is unbound.
+</PRE>
+
+<P>(Common Lisp's equivalent of <CODE>map</CODE> is named <CODE>mapcar</CODE>.)
+
+<P>How, then, do you tell Common Lisp that you want to use the procedure named
+<CODE>sqrt</CODE> as data?  You must use the <CODE>function</CODE> special
+form.<A NAME="text1" HREF="appendix-cl.html#ft1">[1]</A>
+
+<P><PRE>common-lisp&gt; (function sqrt)
+#&lt;PROCEDURE>
+
+common-lisp&gt; (mapcar (function sqrt) '(9 16 25 36))
+(3 4 5 6)
+</PRE>
+
+<P><CODE>Function</CODE>'s job is to look up names on the procedure
+blackboard.  (<CODE>Function</CODE> actually has a more general definition, as
+you'll see in a few paragraphs.)
+
+<P><H2><CODE><B>Lambda</B></CODE></H2>
+
+<P>In Common Lisp, as in Scheme, procedures can be named or unnamed.  Just as
+procedure names in Common Lisp are meaningful only in certain contexts, so
+are <CODE>lambda</CODE> expressions.  They make sense at the beginning of an
+expression:
+
+<P><PRE>common-lisp&gt; ((lambda (x) (* x x)) 4)
+16
+</PRE>
+
+<P>or as the argument to <CODE>function</CODE>:
+
+<P><PRE>common-lisp&gt; (function (lambda (x) (* x x)))
+#&lt;PROCEDURE>
+
+common-lisp&gt; (mapcar (function (lambda (x) (* x x))) '(3 4 5 6))
+(9 16 25 36)
+</PRE>
+
+<P>but they're meaningless on their own:
+
+<P><PRE>common-lisp&gt; (lambda (x) (* x x))
+ERROR: LAMBDA is not a function
+
+common-lisp&gt; (mapcar (lambda (x) (* x x)) '(3 4 5 6))
+ERROR: LAMBDA is not a function
+</PRE>
+
+<P><H2>More about <CODE><B>Function</B></CODE></H2>
+
+<P>The official rule is that <CODE>function</CODE> returns the &quot;functional
+interpretation&quot; of its argument.  If the argument is a symbol, that means
+looking up the procedure associated with that name.  If the argument is a
+<CODE>lambda</CODE> expression, it means creating a new procedure.  <CODE>Function</CODE>
+uses the same rule that's used to interpret the first element of a procedure
+invocation.
+
+<P>Since <CODE>function</CODE> is a very commonly used special form, it has an
+abbreviation:
+
+<P><PRE>common-lisp&gt; (mapcar #'(lambda (x) (* x x)) '(3 4 5 6))
+(9 16 25 36)
+
+common-lisp&gt; (mapcar #'cdr '((hey jude) (eleanor rigby) (yes it is)))
+((JUDE) (RIGBY) (IT IS))
+</PRE>
+
+<P>Don't confuse
+
+<P><PRE>#'(lambda (x) (* x x))
+</PRE>
+
+<P>with
+
+<P><PRE>'#(lambda (x) (* x x))
+</PRE>
+
+<P>The first of these is a function that squares its argument; the
+second is an array containing three elements.
+
+<P>It's unfortunate that the abbreviation for <CODE>function</CODE> contains a single
+quote mark, because the job of <CODE>function</CODE> is nothing like the job of
+<CODE>quote</CODE>.  You'll just have to get used to the &quot;hashquote&quot; notation.
+
+<P><H2>Writing Higher-Order Procedures</H2>
+
+<P>Think about this attempted translation of the <CODE>map</CODE> procedure:
+
+<P><PRE>(defun map (fn lst)                          ;; wrong!
+  (if (null lst)
+      '()
+      (cons (fn (car lst))
+	    (map fn (cdr lst)))))
+</PRE>
+
+<P>(In Common Lisp, <CODE>null</CODE> is one of the predicates whose names
+don't end in &quot;p.&quot; Otherwise, this is the same program we showed you in
+Chapter 19, except for the <CODE>defun</CODE>, of course.)
+
+<P>According to our rule about names in the front of a list, this procedure
+doesn't work.  Think about what happens when we say
+
+<P><PRE>(map #'square '(1 2 3 4 5))
+</PRE>
+
+<P>According to the substitution model, the parameters <CODE>fn</CODE> and
+<CODE>lst</CODE> are replaced in the body with <CODE>#'square</CODE> and <CODE>'(1 2 3 4 5)</CODE>.  But Common Lisp makes an exception for the first
+element of a compound expression.  It uses the procedure blackboard instead
+of substitution:
+
+<P><PRE>(if (null '(1 2 3 4 5))
+    '()
+    (cons (fn (car '(1 2 3 4 5))
+	  (map #'square (cdr '(1 2 3 4 5))))))
+</PRE>
+
+<P>Note that one of the appearances of <CODE>fn</CODE> was left unchanged.
+Since there is no global procedure named <CODE>fn</CODE>, this program will produce
+an error:
+
+<P><PRE>common-lisp&gt; (map #'square '(1 2 3 4 5))
+ERROR: FN is not a procedure.
+</PRE>
+
+<P>How, then, do you write higher-order procedures in Common Lisp?  The answer is
+that you must use <CODE>funcall</CODE>:
+
+<P><PRE>(defun map (fn lst)
+  (if (null lst)
+      '()
+      (cons (funcall fn (car lst))
+	    (map fn (cdr lst)))))
+</PRE>
+
+<P><CODE>Funcall</CODE> takes one or more arguments.  The first is a
+procedure and the rest are arguments for that procedure.  It applies that
+procedure to the given arguments.<A NAME="text2" HREF="appendix-cl.html#ft2">[2]</A> Since <CODE>fn</CODE> is no longer
+at the beginning of a compound expression, the corresponding argument,
+<CODE>#'square</CODE>, is substituted for it.
+
+<P>
+<HR>
+<A NAME="ft1" HREF="appendix-cl.html#text1">[1]</A> Common Lisp uses the word &quot;function&quot; to mean &quot;procedure,&quot;
+whether or not the procedure implements a function.<P>
+<A NAME="ft2" HREF="appendix-cl.html#text2">[2]</A> This is a lot like <CODE>apply</CODE>,
+you may have noticed.  Look at the difference:
+
+<P><PRE>common-lisp&gt; (funcall #'+ 1 2 3)
+6
+
+common-lisp&gt; (apply #'+ '(1 2 3))
+6
+</PRE>
+
+<P>In the first case, each argument to <CODE>+</CODE> is a separate argument to <CODE>funcall</CODE>.  In the second case, a list of the arguments to <CODE>+</CODE> is a
+single argument to <CODE>apply</CODE>.  <CODE>Apply</CODE> always takes exactly two
+arguments, the procedure and the argument list.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="appendix-running.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-simply.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appendix-funlist b/js/games/nluqo.github.io/~bh/ssch27/appendix-funlist
new file mode 100644
index 0000000..de57179
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appendix-funlist
@@ -0,0 +1,170 @@
+\input bkmacs
+\setpart{\null}
+\aprojchap{Alphabetical Table of Scheme Primitives}
+\setpart{Alphabetical Table of Scheme Primitives}
+\pagetag{\funlist}
+
+{\leftskip=0pt
+This table does not represent the complete Scheme language.  It includes the
+nonstandard Scheme primitives that we use in this book, and it omits many
+standard ones that are not needed here.
+
+}
+
+\justtt{*}
+\justtt{+}
+\justtt{-}
+\justtt{/}
+\justtt{ceiling}
+\justtt{cos}
+\justtt{error}
+\justtt{even?}
+\justtt{expt}
+\justtt{floor}
+\justtt{integer?}
+\justtt{load}
+\justtt{log}
+\justtt{max}
+\justtt{min}
+\justtt{odd?}
+\justtt{procedure?}
+\justtt{quotient}
+\justtt{random}
+\justtt{remainder}
+\justtt{round}
+\justtt{sin}
+\justtt{sqrt}
+\htstart
+<TABLE>
+<TR><TD><CODE>'</CODE>
+<TD>Abbreviation for <CODE>(quote</CODE> &hellip;<CODE>)</CODE>.
+<TR><TD><CODE>*</CODE><TD>Multiply numbers.
+<TR><TD><CODE>+</CODE><TD>Add numbers.
+<TR><TD><CODE>-</CODE><TD>Subtract numbers.
+<TR><TD><CODE>/</CODE><TD>Divide numbers.
+<TR><TD><CODE><</CODE><TD>Is the first argument less than the second?
+<TR><TD><CODE><=</CODE><TD>Is the first argument less than or equal to the second?
+<TR><TD><CODE>=</CODE><TD>Are two numbers equal? (Like <CODE>equal?</CODE> but works only for numbers).
+<TR><TD><CODE>></CODE><TD>Is the first argument greater than the second?
+<TR><TD><CODE>>=</CODE><TD>Is the first argument greater than or equal to the second?
+<TR><TD><CODE>abs</CODE><TD>Return the absolute value of the argument.
+<TR><TD><CODE>accumulate</CODE><TD>Apply a combining function to all elements
+(see <A HREF="../ssch8/higher.html#accum">here</A>).
+<TR><TD><CODE>align</CODE><TD>Return a string spaced to a given width (see <A
+HREF="../ssch20/io.html#spformat">here</A>).
+<TR><TD><CODE>and</CODE><TD>(Special form) Are all of the arguments true values (i.e., not <CODE>#f</CODE>)?
+<TR><TD><CODE>appearances</CODE><TD>Return the number of times the first argument is in the second.
+<TR><TD><CODE>append</CODE><TD>Return a list containing the elements of the argument lists.
+<TR><TD><CODE>apply</CODE><TD>Apply a function to the arguments in a list.
+<TR><TD><CODE>assoc</CODE><TD>Return association list entry matching key.
+<TR><TD><CODE>before?</CODE><TD>Does the first argument come alphabetically before the second?
+<TR><TD><CODE>begin</CODE><TD>(Special form) Carry out a sequence of
+instructions (see <A HREF="../ssch20/io.html#beg">here</A>).
+<TR><TD><CODE>bf</CODE><TD>Abbreviation for <CODE>butfirst</CODE>.
+<TR><TD><CODE>bl</CODE><TD>Abbreviation for <CODE>butlast</CODE>.
+<TR><TD><CODE>boolean?</CODE><TD>Return true if the argument is <CODE>#t</CODE> or <CODE>#f</CODE>.
+<TR><TD><CODE>butfirst</CODE><TD>Return all but the first letter of a word, or word of a sentence.
+<TR><TD><CODE>butlast</CODE><TD>Return all but the last letter of a word, or word of a sentence.
+<TR><TD><CODE>c...r</CODE><TD>Combinations of <CODE>car</CODE> and
+<CODE>cdr</CODE> (see <A HREF="../ssch17/lists.html#cadr">here</A>).
+<TR><TD><CODE>car</CODE><TD>Return the first element of a list.
+<TR><TD><CODE>cdr</CODE><TD>Return all but the first element of a list.
+<TR><TD><CODE>ceiling</CODE><TD>Round a number up to the nearest integer.
+<TR><TD><CODE>children</CODE><TD>Return a list of the children of a tree node.
+<TR><TD><CODE>close-all-ports</CODE><TD>Close all open input and output ports.
+<TR><TD><CODE>close-input-port</CODE><TD>Close an input port.
+<TR><TD><CODE>close-output-port</CODE><TD>Close an output port.
+<TR><TD><CODE>cond</CODE><TD>(Special form) Choose among several alternatives
+(see <A HREF="../ssch6/true.html#cond">here</A>).
+<TR><TD><CODE>cons</CODE><TD>Prepend an element to a list.
+<TR><TD><CODE>cos</CODE><TD>Return the cosine of a number (from trigonometry).
+<TR><TD><CODE>count</CODE><TD>Return the number of letters in a word or number of words in a sentence.
+<TR><TD><CODE>datum</CODE><TD>Return the datum of a tree node.
+<TR><TD><CODE>define</CODE><TD>(Special form) Create a global name (for a procedure or other value).
+<TR><TD><CODE>display</CODE><TD>Print the argument without starting a new line.
+<TR><TD><CODE>empty?</CODE><TD>Is the argument empty, i.e., the empty word <CODE>""</CODE> or the empty sentence <CODE>()</CODE>?
+<TR><TD><CODE>eof-object?</CODE><TD>Is the argument an end-of-file object?
+<TR><TD><CODE>equal?</CODE><TD>Are the two arguments the same thing?
+<TR><TD><CODE>error</CODE><TD>Print an error message and return to the Scheme prompt.
+<TR><TD><CODE>even?</CODE><TD>Is the argument an even integer?
+<TR><TD><CODE>every</CODE><TD>Apply a function to each element of a word or
+sentence (see <A HREF="../ssch8/higher.html#every">here</A>).
+<TR><TD><CODE>expt</CODE><TD>Raise the first argument to the power of the second.
+<TR><TD><CODE>filter</CODE><TD>Select a subset of a list (see <A
+HREF="../ssch17/lists.html#filter">here</A>).
+<TR><TD><CODE>first</CODE><TD>Return first letter of a word, or first word of a sentence.
+<TR><TD><CODE>floor</CODE><TD>Round a number down to the nearest integer.
+<TR><TD><CODE>for-each</CODE><TD>Perform a computation for each element of a list.
+<TR><TD><CODE>if</CODE><TD>(Special form) Choose between two alternatives (see
+<A HREF="../ssch6/true.html#spif">here</A>).
+<TR><TD><CODE>integer?</CODE><TD>Is the argument an integer?
+<TR><TD><CODE>item</CODE><TD>Return the $n$th letter of a word, or $n$th word of a sentence.
+<TR><TD><CODE>keep</CODE><TD>Select a subset of a word or sentence (see <A
+HREF="../ssch8/higher.html#keep">here</A>).
+<TR><TD><CODE>lambda</CODE><TD>(Special form) Create a new procedure (see Chapter \lambchop).
+<TR><TD><CODE>last</CODE><TD>Return last letter of a word, or last word of a sentence.
+<TR><TD><CODE>length</CODE><TD>Return the number of elements in a list.
+<TR><TD><CODE>let</CODE><TD>(Special form) Give temporary names to values (see
+<A HREF="../ssch7/variables.html#splet">here</A>).
+<TR><TD><CODE>list</CODE><TD>Return a list containing the arguments.
+<TR><TD><CODE>list->vector</CODE><TD>Return a vector with the same elements as the list.
+<TR><TD><CODE>list-ref</CODE><TD>Select an element from a list (counting from zero).
+<TR><TD><CODE>list?</CODE><TD>Is the argument a list?
+<TR><TD><CODE>load</CODE><TD>Read a program file into Scheme.
+<TR><TD><CODE>log</CODE><TD>Return the logarithm of a number.
+<TR><TD><CODE>make-node</CODE><TD>Create a new node of a tree.
+<TR><TD><CODE>make-vector</CODE><TD>Create a new vector of the given length.
+<TR><TD><CODE>map</CODE><TD>Apply a function to each element of a list (see <A
+HREF="../ssch17/lists.html#map">here</A>).
+<TR><TD><CODE>max</CODE><TD>Return the largest of the arguments.
+<TR><TD><CODE>member</CODE><TD>Return subset of a list starting with selected element, or <CODE>#f</CODE>.
+<TR><TD><CODE>member?</CODE><TD>Is the first argument an element of the
+second? (see <A HREF="../ssch6/true.html#memq">here</A>).
+<TR><TD><CODE>min</CODE><TD>Return the smallest of the arguments.
+<TR><TD><CODE>newline</CODE><TD>Go to a new line of printing.
+<TR><TD><CODE>not</CODE><TD>Return <CODE>#t</CODE> if argument is <CODE>#f</CODE>; return <CODE>#f</CODE> otherwise.
+<TR><TD><CODE>null?</CODE><TD>Is the argument the empty list?
+<TR><TD><CODE>number?</CODE><TD>Is the argument a number?
+<TR><TD><CODE>odd?</CODE><TD>Is the argument an odd integer?
+<TR><TD><CODE>open-input-file</CODE><TD>Open a file for reading, return a port.
+<TR><TD><CODE>open-output-file</CODE><TD>Open a file for writing, return a port.
+<TR><TD><CODE>or</CODE><TD>(Special form) Are any of the arguments true values (i.e., not <CODE>#f</CODE>)?
+<TR><TD><CODE>procedure?</CODE><TD>Is the argument a procedure?
+<TR><TD><CODE>quote</CODE><TD>(Special form) Return the argument, unevaluated
+(see <A HREF="../ssch5/words.html#spquote">here</A>).
+<TR><TD><CODE>quotient</CODE><TD>Divide numbers, but round down to integer.
+<TR><TD><CODE>random</CODE><TD>Return a random number &ge; 0 and smaller than the argument.
+<TR><TD><CODE>read</CODE><TD>Read an expression from the keyboard (or a file).
+<TR><TD><CODE>read-line</CODE><TD>Read a line from the keyboard (or a file), returning a sentence.
+<TR><TD><CODE>read-string</CODE><TD>Read a line from the keyboard (or a file), returning a string.
+<TR><TD><CODE>reduce</CODE><TD>Apply a combining function to all elements of
+list (see <A HREF="../ssch17/lists.html#reduce">here</A>).
+<TR><TD><CODE>remainder</CODE><TD>Return the remainder from dividing the first number by the second.
+<TR><TD><CODE>repeated</CODE><TD>Return the function described by
+<I>f</I>(<I>f</I>(&sdot;&sdot;&sdot;(<I>f</I>(<I>x</I>)))) (see <A
+HREF="../ssch8/higher.html#repeated">here</A>).
+<TR><TD><CODE>round</CODE><TD>Round a number to the nearest integer.
+<TR><TD><CODE>se</CODE><TD>Abbreviation for <CODE>sentence</CODE>.
+<TR><TD><CODE>sentence</CODE><TD>Join the arguments together into a big sentence.
+<TR><TD><CODE>sentence?</CODE><TD>Is the argument a sentence?
+<TR><TD><CODE>show</CODE><TD>Print the argument and start a new line.
+<TR><TD><CODE>show-line</CODE><TD>Show the argument sentence without surrounding parentheses.
+<TR><TD><CODE>sin</CODE><TD>Return the sine of a number (from trigonometry).
+<TR><TD><CODE>sqrt</CODE><TD>Return the square root of a number.
+<TR><TD><CODE>square</CODE><TD>Not a primitive!  <CODE>(define (square x) (* x x))</CODE>
+<TR><TD><CODE>trace</CODE><TD>Report on all future invocations of a procedure.
+<TR><TD><CODE>untrace</CODE><TD>Undo the effect of <CODE>trace</CODE>.
+<TR><TD><CODE>vector</CODE><TD>Create a vector with the arguments as elements.
+<TR><TD><CODE>vector->list</CODE><TD>Return a list with the same elements as the vector.
+<TR><TD><CODE>vector-length</CODE><TD>Return the number of elements in a vector.
+<TR><TD><CODE>vector-ref</CODE><TD>Return an element of a vector (counting from zero).
+<TR><TD><CODE>vector-set!</CODE><TD>Replace an element in a vector.
+<TR><TD><CODE>vector?</CODE><TD>Is the argument a vector?
+<TR><TD><CODE>vowel?</CODE><TD>Not a primitive!  <CODE>(define (vowel? x) (member? x '(a e i o u)))</CODE>
+<TR><TD><CODE>word</CODE><TD>Joins words into one big word.
+<TR><TD><CODE>word?</CODE><TD>Is the argument a word?  (Note: numbers are words.)
+<TR><TD><CODE>write</CODE><TD>Print the argument in machine-readable form (see
+<A HREF="../ssch22/files.html#spwrite">here</A>).
+</TABLE>
+\htend
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appendix-funlist.html b/js/games/nluqo.github.io/~bh/ssch27/appendix-funlist.html
new file mode 100644
index 0000000..d53f51c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appendix-funlist.html
@@ -0,0 +1,182 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Alphabetical Table of Scheme Primitives</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Alphabetical Table of Scheme Primitives</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="credits.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="glossary.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<A NAME="funlist"></A>
+
+<P>This table does not represent the complete Scheme language.  It includes the
+nonstandard Scheme primitives that we use in this book, and it omits many
+standard ones that are not needed here.
+
+<P>
+
+<P><TABLE>
+<TR><TD><CODE>'</CODE>
+<TD>Abbreviation for <CODE>(quote</CODE> &hellip;<CODE>)</CODE>.
+<TR><TD><A NAME="g202"></A><CODE>*</CODE><TD>Multiply numbers.
+<TR><TD><A NAME="g203"></A><CODE>+</CODE><TD>Add numbers.
+<TR><TD><A NAME="g204"></A><CODE>-</CODE><TD>Subtract numbers.
+<TR><TD><A NAME="g205"></A><CODE>/</CODE><TD>Divide numbers.
+<TR><TD><CODE><</CODE><TD>Is the first argument less than the second?
+<TR><TD><CODE><=</CODE><TD>Is the first argument less than or equal to the second?
+<TR><TD><CODE>=</CODE><TD>Are two numbers equal? (Like <CODE>equal?</CODE> but works only for numbers).
+<TR><TD><CODE>></CODE><TD>Is the first argument greater than the second?
+<TR><TD><CODE>>=</CODE><TD>Is the first argument greater than or equal to the second?
+<TR><TD><CODE>abs</CODE><TD>Return the absolute value of the argument.
+<TR><TD><CODE>accumulate</CODE><TD>Apply a combining function to all elements
+(see <A HREF="../ssch8/higher.html#accum">here</A>).
+<TR><TD><CODE>align</CODE><TD>Return a string spaced to a given width (see <A
+HREF="../ssch20/io.html#spformat">here</A>).
+<TR><TD><CODE>and</CODE><TD>(Special form) Are all of the arguments true values (i.e., not <CODE>#f</CODE>)?
+<TR><TD><CODE>appearances</CODE><TD>Return the number of times the first argument is in the second.
+<TR><TD><CODE>append</CODE><TD>Return a list containing the elements of the argument lists.
+<TR><TD><CODE>apply</CODE><TD>Apply a function to the arguments in a list.
+<TR><TD><CODE>assoc</CODE><TD>Return association list entry matching key.
+<TR><TD><CODE>before?</CODE><TD>Does the first argument come alphabetically before the second?
+<TR><TD><CODE>begin</CODE><TD>(Special form) Carry out a sequence of
+instructions (see <A HREF="../ssch20/io.html#beg">here</A>).
+<TR><TD><CODE>bf</CODE><TD>Abbreviation for <CODE>butfirst</CODE>.
+<TR><TD><CODE>bl</CODE><TD>Abbreviation for <CODE>butlast</CODE>.
+<TR><TD><CODE>boolean?</CODE><TD>Return true if the argument is <CODE>#t</CODE> or <CODE>#f</CODE>.
+<TR><TD><CODE>butfirst</CODE><TD>Return all but the first letter of a word, or word of a sentence.
+<TR><TD><CODE>butlast</CODE><TD>Return all but the last letter of a word, or word of a sentence.
+<TR><TD><CODE>c...r</CODE><TD>Combinations of <CODE>car</CODE> and
+<CODE>cdr</CODE> (see <A HREF="../ssch17/lists.html#cadr">here</A>).
+<TR><TD><CODE>car</CODE><TD>Return the first element of a list.
+<TR><TD><CODE>cdr</CODE><TD>Return all but the first element of a list.
+<TR><TD><A NAME="g206"></A><CODE>ceiling</CODE><TD>Round a number up to the nearest integer.
+<TR><TD><CODE>children</CODE><TD>Return a list of the children of a tree node.
+<TR><TD><CODE>close-all-ports</CODE><TD>Close all open input and output ports.
+<TR><TD><CODE>close-input-port</CODE><TD>Close an input port.
+<TR><TD><CODE>close-output-port</CODE><TD>Close an output port.
+<TR><TD><CODE>cond</CODE><TD>(Special form) Choose among several alternatives
+(see <A HREF="../ssch6/true.html#cond">here</A>).
+<TR><TD><CODE>cons</CODE><TD>Prepend an element to a list.
+<TR><TD><A NAME="g207"></A><CODE>cos</CODE><TD>Return the cosine of a number (from trigonometry).
+<TR><TD><CODE>count</CODE><TD>Return the number of letters in a word or number of words in a sentence.
+<TR><TD><CODE>datum</CODE><TD>Return the datum of a tree node.
+<TR><TD><CODE>define</CODE><TD>(Special form) Create a global name (for a procedure or other value).
+<TR><TD><CODE>display</CODE><TD>Print the argument without starting a new line.
+<TR><TD><CODE>empty?</CODE><TD>Is the argument empty, i.e., the empty word <CODE>""</CODE> or the empty sentence <CODE>()</CODE>?
+<TR><TD><CODE>eof-object?</CODE><TD>Is the argument an end-of-file object?
+<TR><TD><CODE>equal?</CODE><TD>Are the two arguments the same thing?
+<TR><TD><A NAME="g208"></A><CODE>error</CODE><TD>Print an error message and return to the Scheme prompt.
+<TR><TD><A NAME="g209"></A><CODE>even?</CODE><TD>Is the argument an even integer?
+<TR><TD><CODE>every</CODE><TD>Apply a function to each element of a word or
+sentence (see <A HREF="../ssch8/higher.html#every">here</A>).
+<TR><TD><A NAME="g210"></A><CODE>expt</CODE><TD>Raise the first argument to the power of the second.
+<TR><TD><CODE>filter</CODE><TD>Select a subset of a list (see <A
+HREF="../ssch17/lists.html#filter">here</A>).
+<TR><TD><CODE>first</CODE><TD>Return first letter of a word, or first word of a sentence.
+<TR><TD><A NAME="g211"></A><CODE>floor</CODE><TD>Round a number down to the nearest integer.
+<TR><TD><CODE>for-each</CODE><TD>Perform a computation for each element of a list.
+<TR><TD><CODE>if</CODE><TD>(Special form) Choose between two alternatives (see
+<A HREF="../ssch6/true.html#spif">here</A>).
+<TR><TD><A NAME="g212"></A><CODE>integer?</CODE><TD>Is the argument an integer?
+<TR><TD><CODE>item</CODE><TD>Return the $n$th letter of a word, or $n$th word of a sentence.
+<TR><TD><CODE>keep</CODE><TD>Select a subset of a word or sentence (see <A
+HREF="../ssch8/higher.html#keep">here</A>).
+<TR><TD><CODE>lambda</CODE><TD>(Special form) Create a new procedure (see Chapter \lambchop).
+<TR><TD><CODE>last</CODE><TD>Return last letter of a word, or last word of a sentence.
+<TR><TD><CODE>length</CODE><TD>Return the number of elements in a list.
+<TR><TD><CODE>let</CODE><TD>(Special form) Give temporary names to values (see
+<A HREF="../ssch7/variables.html#splet">here</A>).
+<TR><TD><CODE>list</CODE><TD>Return a list containing the arguments.
+<TR><TD><CODE>list->vector</CODE><TD>Return a vector with the same elements as the list.
+<TR><TD><CODE>list-ref</CODE><TD>Select an element from a list (counting from zero).
+<TR><TD><CODE>list?</CODE><TD>Is the argument a list?
+<TR><TD><A NAME="g213"></A><CODE>load</CODE><TD>Read a program file into Scheme.
+<TR><TD><A NAME="g214"></A><CODE>log</CODE><TD>Return the logarithm of a number.
+<TR><TD><CODE>make-node</CODE><TD>Create a new node of a tree.
+<TR><TD><CODE>make-vector</CODE><TD>Create a new vector of the given length.
+<TR><TD><CODE>map</CODE><TD>Apply a function to each element of a list (see <A
+HREF="../ssch17/lists.html#map">here</A>).
+<TR><TD><A NAME="g215"></A><CODE>max</CODE><TD>Return the largest of the arguments.
+<TR><TD><CODE>member</CODE><TD>Return subset of a list starting with selected element, or <CODE>#f</CODE>.
+<TR><TD><CODE>member?</CODE><TD>Is the first argument an element of the
+second? (see <A HREF="../ssch6/true.html#memq">here</A>).
+<TR><TD><A NAME="g216"></A><CODE>min</CODE><TD>Return the smallest of the arguments.
+<TR><TD><CODE>newline</CODE><TD>Go to a new line of printing.
+<TR><TD><CODE>not</CODE><TD>Return <CODE>#t</CODE> if argument is <CODE>#f</CODE>; return <CODE>#f</CODE> otherwise.
+<TR><TD><CODE>null?</CODE><TD>Is the argument the empty list?
+<TR><TD><CODE>number?</CODE><TD>Is the argument a number?
+<TR><TD><A NAME="g217"></A><CODE>odd?</CODE><TD>Is the argument an odd integer?
+<TR><TD><CODE>open-input-file</CODE><TD>Open a file for reading, return a port.
+<TR><TD><CODE>open-output-file</CODE><TD>Open a file for writing, return a port.
+<TR><TD><CODE>or</CODE><TD>(Special form) Are any of the arguments true values (i.e., not <CODE>#f</CODE>)?
+<TR><TD><A NAME="g218"></A><CODE>procedure?</CODE><TD>Is the argument a procedure?
+<TR><TD><CODE>quote</CODE><TD>(Special form) Return the argument, unevaluated
+(see <A HREF="../ssch5/words.html#spquote">here</A>).
+<TR><TD><A NAME="g219"></A><CODE>quotient</CODE><TD>Divide numbers, but round down to integer.
+<TR><TD><A NAME="g220"></A><CODE>random</CODE><TD>Return a random number &ge; 0 and smaller than the argument.
+<TR><TD><CODE>read</CODE><TD>Read an expression from the keyboard (or a file).
+<TR><TD><CODE>read-line</CODE><TD>Read a line from the keyboard (or a file), returning a sentence.
+<TR><TD><CODE>read-string</CODE><TD>Read a line from the keyboard (or a file), returning a string.
+<TR><TD><CODE>reduce</CODE><TD>Apply a combining function to all elements of
+list (see <A HREF="../ssch17/lists.html#reduce">here</A>).
+<TR><TD><A NAME="g221"></A><CODE>remainder</CODE><TD>Return the remainder from dividing the first number by the second.
+<TR><TD><CODE>repeated</CODE><TD>Return the function described by
+<I>f</I>(<I>f</I>(&sdot;&sdot;&sdot;(<I>f</I>(<I>x</I>)))) (see <A
+HREF="../ssch8/higher.html#repeated">here</A>).
+<TR><TD><A NAME="g222"></A><CODE>round</CODE><TD>Round a number to the nearest integer.
+<TR><TD><CODE>se</CODE><TD>Abbreviation for <CODE>sentence</CODE>.
+<TR><TD><CODE>sentence</CODE><TD>Join the arguments together into a big sentence.
+<TR><TD><CODE>sentence?</CODE><TD>Is the argument a sentence?
+<TR><TD><CODE>show</CODE><TD>Print the argument and start a new line.
+<TR><TD><CODE>show-line</CODE><TD>Show the argument sentence without surrounding parentheses.
+<TR><TD><A NAME="g223"></A><CODE>sin</CODE><TD>Return the sine of a number (from trigonometry).
+<TR><TD><A NAME="g224"></A><CODE>sqrt</CODE><TD>Return the square root of a number.
+<TR><TD><CODE>square</CODE><TD>Not a primitive!  <CODE>(define (square x) (* x x))</CODE>
+<TR><TD><CODE>trace</CODE><TD>Report on all future invocations of a procedure.
+<TR><TD><CODE>untrace</CODE><TD>Undo the effect of <CODE>trace</CODE>.
+<TR><TD><CODE>vector</CODE><TD>Create a vector with the arguments as elements.
+<TR><TD><CODE>vector->list</CODE><TD>Return a list with the same elements as the vector.
+<TR><TD><CODE>vector-length</CODE><TD>Return the number of elements in a vector.
+<TR><TD><CODE>vector-ref</CODE><TD>Return an element of a vector (counting from zero).
+<TR><TD><CODE>vector-set!</CODE><TD>Replace an element in a vector.
+<TR><TD><CODE>vector?</CODE><TD>Is the argument a vector?
+<TR><TD><CODE>vowel?</CODE><TD>Not a primitive!  <CODE>(define (vowel? x) (member? x '(a e i o u)))</CODE>
+<TR><TD><CODE>word</CODE><TD>Joins words into one big word.
+<TR><TD><CODE>word?</CODE><TD>Is the argument a word?  (Note: numbers are words.)
+<TR><TD><CODE>write</CODE><TD>Print the argument in machine-readable form (see
+<A HREF="../ssch22/files.html#spwrite">here</A>).
+</TABLE>
+
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="credits.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="glossary.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appendix-gpl.html b/js/games/nluqo.github.io/~bh/ssch27/appendix-gpl.html
new file mode 100644
index 0000000..f44cd42
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appendix-gpl.html
@@ -0,0 +1,403 @@
+<P>
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme Appendix D: GNU General Public License</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Appendix D</H2>
+<H1>GNU General Public License</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appendix-simply.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="credits.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The following software license, written by the Free Software
+Foundation, applies to the Scheme programs in this book.  We chose to use
+this license in order to encourage the free sharing of software&mdash;our own
+and, we hope, yours.
+
+<P><CENTER>GNU GENERAL PUBLIC LICENSE</CENTER>
+<CENTER>Version 2, June 1991</CENTER>
+<P>
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+
+<P>675 Mass Ave, Cambridge, MA 02139, USA
+<P>Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+<P><CENTER>Preamble</CENTER>
+<P>The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software&mdash;to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+<P>When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+<P>To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+<P>For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+<P>We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+<P>Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+<P>Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+<P>The precise terms and conditions for copying, distribution and
+modification follow.
+
+<P><CENTER>GNU GENERAL PUBLIC LICENSE</CENTER>
+<P><CENTER>TERMS AND CONDITIONS FOR COPYING,</CENTER>
+<CENTER>DISTRIBUTION AND MODIFICATION</CENTER>
+<P>
+0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The &quot;Program&quot;, below,
+refers to any such program or work, and a &quot;work based on the Program&quot;
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term &quot;modification&quot;.)  Each licensee is addressed as &quot;you&quot;.
+
+<P>Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+<P>1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+<P>You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+<P>2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+<P><BLOCKQUOTE>a) You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+<P>b) You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+
+<P>c) If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License.  (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+
+<P></BLOCKQUOTE>
+
+<P>These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+<P>Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+<P>In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+<P>3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+<P><BLOCKQUOTE>a) Accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,
+
+<P>b) Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+<P>c) Accompany it with the information you received as to the offer
+to distribute corresponding source code.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+
+<P></BLOCKQUOTE>
+
+<P>The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+<P>If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+<P>4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+<P>5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+<P>6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+<P>7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program
+by all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+<P>If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+<P>It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+<P>This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+<P>8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+<P>9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+<P>Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and &quot;any
+later version&quot;, you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+<P>10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+<P><P><CENTER>NO WARRANTY</CENTER>
+<P>
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD
+THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+<P>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+<P><CENTER>END OF TERMS AND CONDITIONS</CENTER>
+
+<P><P><CENTER>How to Apply These Terms to Your New Programs</CENTER>
+<P>
+If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+<P>To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the &quot;copyright&quot; line and a pointer to where the full notice is found.
+
+<P><PRE>&lt;one line to give the program's name
+  and a brief idea of what it does.>
+Copyright (C) 19yy  &lt;name of author>
+
+This program is free software; you can
+redistribute it and/or modify it under the terms
+of the GNU General Public License as published
+by the Free Software Foundation; either version
+2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it
+will be useful, but WITHOUT ANY WARRANTY;
+without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.  See the GNU General Public License for
+more details.
+
+You should have received a copy of the GNU
+General Public License along with this program;
+if not, write to the Free Software Foundation,
+Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+</PRE>
+
+<P>Also add information on how to contact you by electronic and paper mail.
+
+<P>If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+<P><PRE>Gnomovision version 69,
+Copyright (C) 19yy name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for
+details type `show w'.  This is free software, and
+you are welcome to redistribute it under certain
+conditions; type `show c' for details.
+</PRE>
+
+<P>The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items&mdash;whatever suits your program.
+
+<P>You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a &quot;copyright disclaimer&quot; for the program, if
+necessary.  Here is a sample; alter the names:
+
+<P><PRE>Yoyodyne, Inc., hereby disclaims all copyright
+interest in the program `Gnomovision' (which makes
+passes at compilers) written by James Hacker.
+
+&lt;signature of Ty Coon&gt;, 1 April 1989
+Ty Coon, President of Vice
+</PRE>
+
+<P>This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+<P>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="appendix-simply.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="credits.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appendix-running.html b/js/games/nluqo.github.io/~bh/ssch27/appendix-running.html
new file mode 100644
index 0000000..a52f9e8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appendix-running.html
@@ -0,0 +1,426 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme Appendix A: Running Scheme</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Appendix A</H2>
+<H1>Running Scheme</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch26/preview.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-cl.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The precise incantations needed to start Scheme depend on the particular
+version you're using and the model of computer and operating system you have.
+It's beyond the scope of this book to teach you the first steps in using a
+computer; we assume you've already used other programs, if not Scheme.
+But in this appendix we suggest a few general ideas and point out some
+knotty details.
+
+<P>One thing that beginners often forget is that a computer generally has many
+different programs available, and each one has its own capabilities and its
+own method of operation.  If you think of yourself as interacting with &quot;the
+computer,&quot; you're likely to try to use a command suitable for one program
+when you're actually using a different program.  In learning to program in
+Scheme, you'll probably use at least three programs: Scheme itself, the
+operating system's <EM>shell</EM> (which is callled <EM>finder</EM> on the
+Macintosh and <EM>explorer</EM> on Windows), and a text editor.  (The text
+editor may be part of the Scheme package or it may be an entirely separate
+program.)  The shell allows you to run other programs, such as a printing
+utility or an electronic mail reader.
+
+<P>If you say <CODE>(+ 2 3)</CODE> to your text editor, it won't respond by printing
+<CODE>5</CODE>.  Instead, it will insert the seven characters that you typed into
+the file that you're editing.  If you type the same thing to Scheme, it will
+evaluate the expression.
+
+<P><H2>The Program Development Cycle</H2>
+
+<P>Scheme is an interactive language:  You can write a program by typing
+its definition directly into the Scheme interpreter.  This ability
+to interact with Scheme is a great advantage for one-time
+calculations and for exploratory work, but it's not the best
+approach for the systematic development of a large program.
+
+<P>There are two issues to consider.  First, when writing a large program, you
+generally don't get it perfect the first time.  You make both typing errors
+and program logic errors, and so you must be able to revise a definition.
+Typing directly to Scheme, the only way to make such a revision is to retype
+the entire definition.  Second, Scheme does not provide a mechanism to save
+your work in a permanent file.
+
+<P>For these reasons, programs are generally typed into another program, a text
+editor, rather than directly at the Scheme prompt.  As we'll explain in the
+next section, there are several ways in which an editing program can be <EM>integrated</EM> with Scheme, so that the work you do in the editor can be
+communicated easily to Scheme.  But the distinction between Scheme and the
+editor is easiest to understand if we start by considering the worst possible
+situation, in which the two are not integrated.
+
+<P>Imagine, therefore, that you have two separate programs available on
+your computer.  One program is a Scheme interpreter.  When you start
+Scheme, you may see some initial message, and then you see a prompt,
+which is a signal from Scheme that it's ready for you to type
+something.  In this book we've used the character &quot;<CODE>&gt;</CODE>&quot; as the
+prompt.  Then, as we explain in the text, you can type an
+expression, and Scheme will compute and print the value:
+
+<P><PRE>&gt; (+ 2 3)
+5
+</PRE>
+
+<P>Your other program is a text editor.  This might be a
+general-purpose word processing program, with facilities for
+fancy text formatting, or it might be an editor intended
+specifically for computer programs.  Many editors &quot;know&quot; about
+Lisp programs and have helpful features, such as automatic
+indentation, selection of complete expressions, and showing you the
+matching open parenthesis when you type a close parenthesis.
+
+<P>To write a program, you use the editor.  Although you are typing
+Scheme expressions, you're not talking to Scheme itself, and so the
+expressions are not evaluated as you type them.  Instead, they just
+appear on the screen like any other text.  When you're ready to try
+out your program, you tell the editor to save the text in a file.
+(The command to save the program text is the same as it would be for
+any other text; we assume that you already know how to use the
+editor on your computer.)  You can give the file any name you want,
+although many people like to use names like <CODE><EM>something</EM></CODE><CODE>.scm</CODE> to make it easy to recognize files that contain Scheme
+programs.
+
+<P>Now you switch from the editor to Scheme.  To read your program file into
+Scheme, you enter the expression
+
+<P><PRE>(load &quot;<EM>something</EM>.scm&quot;)
+</PRE>
+
+<P>This tells Scheme to read expressions from the specified
+file.<A NAME="text1" HREF="appendix-running.html#ft1">[1]</A>
+
+<P>Once Scheme has read the program definitions from your file, you
+can continue typing expressions to Scheme in order to test your
+program.  If this testing uncovers an error, you will want to
+change some definition.  Instead of typing the changed definition
+directly into Scheme, which would only make a temporary change in
+your program, you switch back to the editor and make the change in
+your program file.  Then switch back to Scheme, and <CODE>load</CODE> the
+corrected file.
+
+<P>This sequence of steps&mdash;edit a file, make changes, save the
+file, switch to Scheme, load the file, test the program, find an
+error&mdash;is called a &quot;development cycle&quot; because what comes
+after &quot;find an error&quot; is editing the file, beginning another
+round of the same steps.
+
+<P><H2>Integrated Editing</H2>
+
+<P>The development process can become much more convenient if Scheme and the
+editor &quot;know about&quot; each other.  For example, instead of having to reload
+an entire file when you change one procedure definition, it's faster if your
+editor can tell Scheme just the one new definition.  There are three general
+approaches to this integration:  First, the editor can be in overall charge,
+with the Scheme interpreter running under control of the editor.  Second,
+Scheme can be in charge, with the editor running under Scheme's
+supervision.  Third, Scheme and the editor can be separate programs, both
+running under control of a third program, such as a window system, that
+allows information to be transferred between them.
+
+<P>If you're using a Unix system, you will be able to take a
+separate editor program and run Scheme from within that editor.
+The editor can copy any part of your program into the running
+Scheme, as if you had typed it to Scheme yourself.  We use Jove,
+a free, small, fast version of EMACS.  Most people use the more
+featureful GNU version of EMACS, which is installed on most Unix
+systems and available at <CODE>ftp://prep.ai.mit.edu/pub/gnu/</CODE> and
+many mirror sites for download.
+
+<P>If you're using a Macintosh or Windows version of Scheme, it will probably
+come with its own text editor and instructions on how to use it.  These
+editors typically provide standard word-processing features such as cut and
+paste, search and replace, and saving files.  Also, they typically have a
+way to ask Scheme to evaluate an expression directly from the editor.
+
+<P>If you're using SCM under DOS, you should read the section &quot;Editing
+Scheme Code&quot; in the <CODE>README</CODE> file that comes with the SCM
+distribution.  It will explain that editing can be done in different
+ways depending on the precise software available to you.  You can
+buy a DOS editor that works like the Unix editors, or you can ask
+SCM to start a separate editor program while SCM remains active.
+
+<P>Finally, if you're running Scheme under Windows or another windowing
+operating system (like X or the Macintosh Finder), you can run any editor in
+another window and use the cut and paste facility to transfer information
+between the editor and Scheme.  
+
+<P><H2>Getting Our Programs</H2>
+
+<P>This book uses some programs that we wrote in Scheme.  You'll want these
+files available to you while reading the book:
+
+<P><TABLE>
+<TR><TD><CODE>simply.scm</CODE>
+<TD>extended Scheme primitives
+<TR><TD><CODE>functions.scm</CODE>&nbsp;&nbsp;&nbsp;
+<TD>the <CODE>functions</CODE> program of Chapters 2 and 21
+<TR><TD><CODE>ttt.scm</CODE>
+<TD>the tic-tac-toe example from Chapter 10
+<TR><TD><CODE>match.scm</CODE>
+<TD>the pattern matcher example from Chapter 16
+<TR><TD><CODE>spread.scm</CODE>
+<TD>the spreadsheet program example from Chapter 24
+<TR><TD><CODE>database.scm</CODE>
+<TD>the beginning of the database project
+<TR><TD><CODE>copyleft</CODE>
+<TD>the GNU General Public License (see Appendix D)
+</TABLE><P>
+
+In particular, the file <CODE>simply.scm</CODE> must be loaded into Scheme to allow
+anything in the book to work.  Some Scheme systems allow you to load such a
+&quot;startup&quot; file permanently, so that it'll be there automatically from then
+on.  In other versions of Scheme, you must say
+
+<P><PRE>(load &quot;simply.scm&quot;)
+</PRE>
+
+<P>at the beginning of every Scheme session.
+
+<P>There are three ways to get these program files:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If you have access to the Internet, 
+the most recent versions of all these files can be found at
+<CODE>ftp://anarres.cs.berkeley.edu/pub/scheme/</CODE>
+
+</TABLE>
+<P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If you know someone who already has these files, you may copy them
+and distribute them freely.  (The programs are copyrighted but are provided
+under a license that allows unlimited redistribution on a nonprofit
+basis; see Appendix D.)
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If you're stranded on a desert island with nothing but a computer and a
+copy of this book, you can type them in yourself; complete listings for all 
+six programs, plus the GNU Public License, appear in the text of the book.
+
+</TABLE><P>
+
+<P><H2>Tuning Our Programs for Your System</H2>
+
+<P>Almost all of the programs we distribute with this book will work
+without modification in the popular versions of Scheme.  We've
+included &quot;defensive&quot; procedures that allow our programs to work
+even in versions that don't conform to current Scheme standards
+in various ways.  However, there are a few details that we
+couldn't make uniform in all versions.
+
+<P>1.  Many versions of Scheme include a <CODE>random</CODE> procedure to generate
+random numbers, but the standard does not require it, and so we've provided
+one just in case.  If your Scheme includes a primitive <CODE>random</CODE>, it's
+probably better than the one we provide, because we have no way to choose
+a different starting value in each Scheme session.
+
+<P>Before loading <CODE>simply.scm</CODE> into Scheme, do the following experiment:
+
+<P><PRE>&gt; (random 5)
+</PRE>
+
+<P>If you get an error message, do nothing.  If you get a random
+number as the result, edit <CODE>simply.scm</CODE> and remove the definition of
+<CODE>random</CODE>.
+
+<P>2.  Do the following experiment:
+
+<P><PRE>&gt; (error &quot;Your error is&quot; &quot;string&quot;)
+</PRE>
+
+<P>If the message you get doesn't include quotation marks around the
+word <CODE>string</CODE>, then do nothing.  But if you do see <CODE>&quot;string&quot;</CODE> with
+quotation marks, edit <CODE>simply.scm</CODE> and change the definition of
+<CODE>error-printform</CODE> to
+
+<P><PRE>(define (error-printform x) x)
+</PRE>
+
+<P>3.  Although the Scheme standard says that the <CODE>read</CODE>
+procedure should not read the newline character following an
+expression that it reads, some old versions of Scheme get this wrong.
+
+<P>After loading <CODE>simply.scm</CODE>, do the following experiment:
+
+<P><PRE>&gt; (read-line)
+</PRE>
+
+<P>End the line with the <CODE>return</CODE> or <CODE>enter</CODE> key
+(whichever is appropriate in your version of Scheme) as usual,
+but don't type a second <CODE>return</CODE> or <CODE>enter</CODE> yet.  If
+Scheme prints <CODE>()</CODE> right away, skip this paragraph; your
+version of Scheme behaves correctly.  If, on the other hand,
+nothing happens, type another <CODE>return</CODE> or <CODE>enter</CODE>.  In
+this case you must edit <CODE>functions.scm</CODE> and remove the
+invocation of <CODE>read-line</CODE> on the first line of the body of
+the <CODE>functions</CODE> procedure.
+
+<P>4.  There is a substantial loss of efficiency in treating strings of
+digits as numbers in some contexts and as text in other contexts.  When
+we're treating 1024 as text, we want to be able to take its <CODE>butfirst</CODE>,
+which should be 024.  But in Scheme, <CODE>024</CODE> is the same as <CODE>24</CODE>, so
+instead <CODE>butfirst</CODE> returns a string:
+
+<P><PRE>&gt; (butfirst 1024)
+&quot;024"
+</PRE>
+
+<P>Yet we want to be able to do arithmetic on this value:
+
+<P><PRE>&gt; (+ 3 (butfirst 1024))
+27
+</PRE>
+
+<P>To accomplish this, we redefine all of Scheme's arithmetic
+procedures to accept strings of digits and convert them to numbers.  This
+redefinition slows down all arithmetic, not just arithmetic on strange
+numbers, and it's only rarely important to the programs we write.
+Therefore, we've provided a way to turn this part of the package off and on
+again.  If your programs run too slowly, try saying
+
+<P><PRE>&gt; (strings-are-numbers #f)
+</PRE>
+
+<P>If you find that some program doesn't work because it tries to do
+arithmetic on a digit string and gets an error message, you can say
+
+<P><PRE>&gt; (strings-are-numbers #t)
+</PRE>
+
+<P>to restore the original behavior of our programs.  We recommend
+that you leave <CODE>strings-are-numbers</CODE> true while exploring the first few
+chapters, so that the behavior of the word data type will be consistent.
+When you get to the large example programs, you may want to change to false.
+
+<P><H2>Loading Our Programs</H2>
+
+<P>Scheme's <CODE>load</CODE> procedure doesn't scan your entire disk looking for the
+file you want to load.  Instead, it only looks in one particular directory
+(DOS/Unix) or folder (Macintosh/Windows).  If you want to load our programs,
+you have to make sure that Scheme can find them.
+
+<P>The first way to accomplish this is to give the full &quot;path&quot; as part of the
+argument to <CODE>load</CODE>.  Here are some examples:<A NAME="text2" HREF="appendix-running.html#ft2">[2]</A>
+
+<P><PRE>UNIX-SCHEME&gt; (load &quot;/usr/people/matt/scheme-stuff/simply.scm&quot;)
+
+WINDOWS-SCHEME&gt; (load &quot;c:\\scheme\\simply.scm&quot;)
+
+MAC-SCHEME&gt; (load &quot;Hard Disk:Scheme Folder:simply.scm&quot;)
+</PRE>
+
+<P>Under Unix, directories in a path are separated by forward slash
+characters.  Under Windows and DOS, directories are separated by backward slash
+characters, which have a special meaning to
+Scheme.  So you must use double
+backslashes as in our example above.  On a Macintosh, you separate the parts of
+a path with colons.  (However, most versions of Scheme for the Macintosh
+or Windows
+have a load command in one of the menus that opens a standard file
+selection dialog box, so you can use that instead.)
+
+<P>The other possibility is to put the files in the place where your version of
+Scheme looks for them.  In many versions of Scheme, <CODE>load</CODE> looks
+for files in the folder that contains the Scheme program itself.  Put our
+files in that folder.
+
+<P>On Unix, the default loading directory is whatever directory you're in at
+the moment.  If you want to work on different projects in different
+directories, there's no way to make it so that <CODE>load</CODE> will always find
+our files.  (But see our suggestion about writing <CODE>book-load</CODE>.)
+
+<P><H2>Versions of Scheme</H2>
+
+<P>There are lots of them, both free and commercial.  Three places to
+look for pointers are
+
+<P><PRE>http://swissnet.ai.mit.edu/scheme-home.html
+http://www.schemers.org
+http://www.cs.indiana.edu/scheme-repository
+</PRE>
+
+<P>In general, there are four things you should be sure to learn about
+whatever version of Scheme you choose:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Most versions of Scheme include a <EM>debugger</EM> to help you find
+program errors.  If you call a primitive with an argument not in
+its domain, for example, Scheme will start the debugger, which will have
+features to let you find out where in your program the error occurred.
+These debuggers vary greatly among versions of Scheme.  The first thing
+you should learn is how to <EM>leave</EM> the debugger, so you can get
+back to a Scheme prompt!
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Many versions of Scheme will read an <EM>initialization file</EM> if
+you create one.  That is, when you start Scheme, it will look for a file
+of a particular name (something like <CODE>init.scm</CODE>, but not usually
+exactly that), and if there is such a file, Scheme will <CODE>load</CODE> it
+automatically.  You can copy our <CODE>simply.scm</CODE> file to the proper
+filename for your version, and you'll have our added primitives available
+every time you start Scheme.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Most versions of Scheme provide a <CODE>trace</CODE> capability, but the
+format of the trace results are quite different from one version to
+another.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">If you are using a Macintosh, one thing to watch out for is that some
+versions of Scheme expect you to use the ENTER key at the end of an
+expression, while others expect you to use the RETURN key.
+
+</TABLE>
+
+<P><H2>Scheme Standards</H2>
+
+<P>The Web sites listed above will provide the latest version of the <EM>Revised<SUP><SMALL><I>n</I></SMALL></SUP> Report on the Algorithmic Language Scheme.</EM>  You can
+get the document in either Postscript or HTML format.
+
+<P>IEEE Standard 1178-1990, <EM>IEEE Standard for the Scheme Programming
+Language,</EM> may be ordered from IEEE by calling 1-800-678-IEEE or
+908-981-1393 or writing IEEE Service Center, 445 Hoes Lane, P.O. Box 1331,
+Piscataway, NJ 08855-1331, and using order number SH14209 ($28 for IEEE
+members, $40 for others).  ISBN 1-55937-125-0.
+
+<P>
+<HR>
+<A NAME="ft1" HREF="appendix-running.html#text1">[1]</A> If you see an error message about &quot;end of file&quot; or &quot;EOF,&quot; it
+probably means that the file you are trying to load contains unbalanced
+parentheses; you have started an expression with a left parenthesis, and the
+file ended before Scheme saw a matching right parenthesis.<P>
+<A NAME="ft2" HREF="appendix-running.html#text2">[2]</A> Suggestion for
+instructors: when we teach this class, we define a procedure like
+
+<P><PRE>(define (book-load filename)
+  (load (string-append &quot;/usr/cs3/progs-from-book/&quot; filename)))
+</PRE>
+
+<P>so that students can just say
+
+<P><PRE>(book-load &quot;functions.scm&quot;)
+</PRE><P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch26/preview.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-cl.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appendix-simply b/js/games/nluqo.github.io/~bh/ssch27/appendix-simply
new file mode 100644
index 0000000..9bd8236
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appendix-simply
@@ -0,0 +1,14 @@
+\input bkmacs
+% \makewide
+\appendix{C}{Scheme Initialization File}
+
+Many of the procedures we talk about in this book aren't part of standard
+Scheme; we wrote them ourselves.  Here is a listing of the definitions of
+those procedures.
+\justidx{Scheme, extensions to}
+\justidx{extensions to Scheme}
+
+\bigskip
+\listingtiny{simply.scm}
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appendix-simply.html b/js/games/nluqo.github.io/~bh/ssch27/appendix-simply.html
new file mode 100644
index 0000000..7e466a5
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appendix-simply.html
@@ -0,0 +1,965 @@
+<P>
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme Appendix C: Scheme Initialization File</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Appendix C</H2>
+<H1>Scheme Initialization File</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appendix-cl.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-gpl.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Many of the procedures we talk about in this book aren't part of standard
+Scheme; we wrote them ourselves.  Here is a listing of the definitions of
+those procedures.
+<A NAME="g15"></A>
+<A NAME="g16"></A>
+
+<P><P><P><PRE>
+;;; simply.scm version 3.13 (8/11/98)
+
+;;; This file uses Scheme features we don't talk about in _Simply_Scheme_.
+;;; Read at your own risk.
+
+(if (equal? 'foo (symbol->string 'foo))
+    (error "Simply.scm already loaded!!")
+    #f)
+
+;; Make number->string remove leading "+" if necessary
+
+(if (char=? #\+ (string-ref (number->string 1.0) 0))
+    (let ((old-ns number->string) (char=? char=?) (string-ref string-ref)
+	  (substring substring) (string-length string-length))
+      (set! number->string
+	    (lambda args
+	      (let ((result (apply old-ns args)))
+		(if (char=? #\+ (string-ref result 0))
+		    (substring result 1 (string-length result))
+		    result)))))
+    'no-problem)
+
+(define number->string
+  (let ((old-ns number->string) (string? string?))
+    (lambda args
+      (if (string? (car args))
+	  (car args)
+	  (apply old-ns args)))))
+
+;; Get strings in error messages to print nicely (especially "")
+
+(define whoops
+  (let ((string? string?) (string-append string-append)	(error error)
+	(cons cons) (map map) (apply apply))
+    (define (error-printform x)
+      (if (string? x)
+	  (string-append "\"" x "\"")
+	  x))
+    (lambda (string . args)
+      (apply error (cons string (map error-printform args))))))
+
+
+;; ROUND returns an inexact integer if its argument is inexact,
+;; but we think it should always return an exact integer.
+;; (It matters because some Schemes print inexact integers as "+1.0".)
+;; The (exact 1) test is for PC Scheme, in which nothing is exact.
+(if (and (inexact? (round (sqrt 2))) (exact? 1))
+    (let ((old-round round) (inexact->exact inexact->exact))
+      (set! round
+	    (lambda (number)
+	      (inexact->exact (old-round number)))))
+    'no-problem)
+
+;; Remainder and quotient blow up if their argument isn't an integer.
+;; Unfortunately, in SCM, (* 365.25 24 60 60) *isn't* an integer.
+
+(if (inexact? (* .25 4))
+    (let ((rem remainder) (quo quotient) (inexact->exact inexact->exact)
+	  (integer? integer?))
+      (set! remainder
+	    (lambda (x y)
+	      (rem (if (integer? x) (inexact->exact x) x)
+		   (if (integer? y) (inexact->exact y) y))))
+      (set! quotient
+	    (lambda (x y)
+	      (quo (if (integer? x) (inexact->exact x) x)
+		   (if (integer? y) (inexact->exact y) y)))))
+    'done)
+
+
+;; Random
+;; If your version of Scheme has RANDOM, you should take this out.
+;; (It gives the same sequence of random numbers every time.) 
+
+(define random
+  (let ((*seed* 1) (quotient quotient) (modulo modulo) (+ +) (- -) (* *) (> >))
+    (lambda (x)
+      (let* ((hi (quotient *seed* 127773))
+	     (low (modulo *seed* 127773))
+	     (test (- (* 16807 low) (* 2836 hi))))
+	(if (> test 0)
+	    (set! *seed* test)
+	    (set! *seed* (+ test 2147483647))))
+      (modulo *seed* x))))
+
+
+;;; Logo-style word/sentence implementation
+
+(define word?
+  (let ((number? number?) (symbol? symbol?) (string? string?))
+    (lambda (x)
+      (or (symbol? x) (number? x) (string? x)))))
+
+(define sentence?
+  (let ((null? null?) (pair? pair?) (word? word?) (car car) (cdr cdr))
+    (define (list-of-words? l)
+      (cond ((null? l) #t)
+	    ((pair? l)
+	     (and (word? (car l)) (list-of-words? (cdr l))))
+	    (else #f)))
+    list-of-words?))
+
+(define empty?
+  (let ((null? null?) (string? string?) (string=? string=?))
+    (lambda (x)
+      (or (null? x)
+	  (and (string? x) (string=? x ""))))))
+
+
+(define char-rank
+  ;; 0 Letter in good case or special initial
+  ;; 1 ., + or -
+  ;; 2 Digit
+  ;; 3 Letter in bad case or weird character
+  (let ((*the-char-ranks* (make-vector 256 3))
+	(= =) (+ +) (string-ref string-ref) (string-length string-length)
+	(vector-set! vector-set!) (char->integer char->integer)
+	(symbol->string symbol->string) (vector-ref vector-ref))
+    (define (rank-string str rank)
+      (define (helper i len)
+	(if (= i len)
+	    'done
+	    (begin (vector-set! *the-char-ranks*
+				(char->integer (string-ref str i))
+				rank)
+		   (helper (+ i 1) len))))
+      (helper 0 (string-length str)))
+    (rank-string (symbol->string 'abcdefghijklmnopqrstuvwxyz) 0)
+    (rank-string "!$%&*/:<=>?~_^" 0)
+    (rank-string "+-." 1)
+    (rank-string "0123456789" 2)
+    (lambda (char)		    ;; value of char-rank
+      (vector-ref *the-char-ranks* (char->integer char)))))
+
+(define string->word
+  (let ((= =) (<= <=) (+ +) (- -) (char-rank char-rank) (string-ref string-ref)
+	(string-length string-length) (string=? string=?) (not not)
+	(char=? char=?) (string->number string->number)
+	(string->symbol string->symbol))
+    (lambda (string)
+      (define (subsequents? string i length)
+	(cond ((= i length) #t)
+	      ((<= (char-rank (string-ref string i)) 2)
+	       (subsequents? string (+ i 1) length))
+	      (else #f)))
+      (define (special-id? string)
+	(or (string=? string "+")
+	    (string=? string "-")
+	    (string=? string "...")))
+      (define (ok-symbol? string)
+	(if (string=? string "")
+	    #f
+	    (let ((rank1 (char-rank (string-ref string 0))))
+	      (cond ((= rank1 0) (subsequents? string 1 (string-length string)))
+		    ((= rank1 1) (special-id? string))
+		    (else #f)))))
+
+      (define (nn-helper string i len seen-point?)
+	(cond ((= i len)
+	       (if seen-point?
+		   (not (char=? (string-ref string (- len 1)) #\0))
+		   #t))
+	      ((char=? #\. (string-ref string i))
+	       (cond (seen-point? #f)
+		     ((= (+ i 2) len) #t)  ; Accepts "23.0"
+		     (else (nn-helper string (+ i 1) len #t))))
+	      ((= 2 (char-rank (string-ref string i)))
+	       (nn-helper string (+ i 1) len seen-point?))
+	      (else #f)))
+      (define (narrow-number? string)
+	(if (string=? string "")
+	    #f
+	    (let* ((c0 (string-ref string 0))
+		   (start 0)
+		   (len (string-length string))
+		   (cn (string-ref string (- len 1))))
+	      (if (and (char=? c0 #\-) (not (= len 1)))
+		  (begin
+		   (set! start 1)
+		   (set! c0 (string-ref string 1)))
+		  #f)
+	      (cond ((not (= (char-rank cn) 2)) #f)  ; Rejects "-" among others
+		    ((char=? c0 #\.) #f)
+		    ((char=? c0 #\0)
+		     (cond ((= len 1) #t)  ; Accepts "0" but not "-0"
+			   ((= len 2) #f)  ; Rejects "-0" and "03"
+			   ((char=? (string-ref string (+ start 1)) #\.)
+			    (nn-helper string (+ start 2) len #t))
+			   (else #f)))
+		    (else (nn-helper string start len #f)))))) 
+
+      ;; The body of string->word:
+      (cond ((narrow-number? string) (string->number string))
+	    ((ok-symbol? string) (string->symbol string))
+	    (else string)))))
+
+(define char->word
+  (let ((= =) (char-rank char-rank) (make-string make-string) (char=? char=?)
+        (string->symbol string->symbol) (string->number string->number))
+    (lambda (char)
+      (let ((rank (char-rank char))
+	    (string (make-string 1 char)))
+	(cond ((= rank 0) (string->symbol string))
+	      ((= rank 2) (string->number string))
+	      ((char=? char #\+) '+)
+	      ((char=? char #\-) '-)
+	      (else string))))))
+
+(define word->string
+  (let ((number? number?) (string? string?) (number->string number->string)
+	(symbol->string symbol->string))
+    (lambda (wd)
+      (cond ((string? wd) wd)
+	    ((number? wd) (number->string wd))
+	    (else (symbol->string wd))))))
+
+(define count
+  (let ((word? word?) (string-length string-length)
+	(word->string word->string) (length length))
+    (lambda (stuff)
+      (if (word? stuff)
+	  (string-length (word->string stuff))
+	  (length stuff)))))
+
+(define word
+  (let ((string->word string->word) (apply apply) (string-append string-append)
+	(map map) (word? word?) (word->string word->string) (whoops whoops))
+    (lambda x
+      (string->word
+       (apply string-append
+	      (map (lambda (arg)
+		     (if (word? arg)
+			 (word->string arg)
+			 (whoops "Invalid argument to WORD: " arg)))
+		   x))))))
+
+(define se
+  (let ((pair? pair?) (null? null?) (word? word?) (car car) (cons cons)
+	(cdr cdr) (whoops whoops))
+    (define (paranoid-append a original-a b)
+      (cond ((null? a) b)
+	    ((word? (car a))
+	     (cons (car a) (paranoid-append (cdr a) original-a b)))
+	    (else (whoops "Argument to SENTENCE not a word or sentence"
+			 original-a ))))
+    (define (combine-two a b)                ;; Note: b is always a list
+      (cond ((pair? a) (paranoid-append a a b))
+	    ((null? a) b)
+	    ((word? a) (cons a b))
+	    (else (whoops "Argument to SENTENCE not a word or sentence:" a))))
+    ;; Helper function so recursive calls don't show up in TRACE
+    (define (real-se args)
+      (if (null? args)
+	  '()
+	  (combine-two (car args) (real-se (cdr args)))))
+    (lambda args
+      (real-se args))))
+
+(define sentence se)
+
+(define first
+  (let ((pair? pair?) (char->word char->word) (string-ref string-ref)
+	(word->string word->string) (car car) (empty? empty?)
+	(whoops whoops) (word? word?))
+    (define (word-first wd)
+      (char->word (string-ref (word->string wd) 0)))
+    (lambda (x)
+      (cond ((pair? x) (car x))
+	    ((empty? x) (whoops "Invalid argument to FIRST: " x))
+	    ((word? x) (word-first x))
+	    (else (whoops "Invalid argument to FIRST: " x))))))
+
+(define last
+  (let ((pair? pair?) (- -) (word->string word->string) (char->word char->word)
+	(string-ref string-ref) (string-length string-length) (empty? empty?)
+	(cdr cdr) (car car) (whoops whoops) (word? word?))
+    (define (word-last wd)
+      (let ((s (word->string wd)))
+	(char->word (string-ref s (- (string-length s) 1)))))
+    (define (list-last lst)      
+      (if (empty? (cdr lst))
+	  (car lst)
+	  (list-last (cdr lst))))
+    (lambda (x)
+      (cond ((pair? x) (list-last x))
+	    ((empty? x) (whoops "Invalid argument to LAST: " x))
+	    ((word? x) (word-last x))
+	    (else (whoops "Invalid argument to LAST: " x))))))
+
+(define bf
+  (let ((pair? pair?) (substring substring) (string-length string-length)
+	(string->word string->word) (word->string word->string) (cdr cdr)
+	(empty? empty?) (whoops whoops) (word? word?))
+    (define string-bf
+      (lambda (s)
+      (substring s 1 (string-length s))))
+    (define (word-bf wd)
+      (string->word (string-bf (word->string wd))))
+    (lambda (x)
+      (cond ((pair? x) (cdr x))
+	    ((empty? x) (whoops "Invalid argument to BUTFIRST: " x))
+	    ((word? x) (word-bf x))
+	    (else (whoops "Invalid argument to BUTFIRST: " x))))))
+
+(define butfirst bf)
+
+(define bl
+  (let ((pair? pair?) (- -) (cdr cdr) (cons cons) (car car) (substring substring)
+	(string-length string-length) (string->word string->word)
+	(word->string word->string) (empty? empty?) (whoops whoops) (word? word?))
+    (define (list-bl list)
+      (if (null? (cdr list))
+	  '()
+	  (cons (car list) (list-bl (cdr list)))))
+    (define (string-bl s)
+      (substring s 0 (- (string-length s) 1)))  
+    (define (word-bl wd)
+      (string->word (string-bl (word->string wd))))
+    (lambda (x)
+      (cond ((pair? x) (list-bl x))
+	    ((empty? x) (whoops "Invalid argument to BUTLAST: " x))
+	    ((word? x) (word-bl x))
+	    (else (whoops "Invalid argument to BUTLAST: " x))))))
+
+(define butlast bl)
+
+(define item
+  (let ((> >) (- -) (< <) (integer? integer?) (list-ref list-ref)
+	(char->word char->word) (string-ref string-ref)
+	(word->string word->string) (not not) (whoops whoops)
+	(count count) (word? word?) (list? list?))
+    (define (word-item n wd)
+      (char->word (string-ref (word->string wd) (- n 1))))
+    (lambda (n stuff)
+      (cond ((not (integer? n))
+	     (whoops "Invalid first argument to ITEM (must be an integer): "
+		     n))
+	    ((< n 1)
+	     (whoops "Invalid first argument to ITEM (must be positive): "
+		     n))
+	    ((> n (count stuff))
+	     (whoops "No such item: " n stuff))
+	    ((word? stuff) (word-item n stuff))
+	    ((list? stuff) (list-ref stuff (- n 1)))
+	    (else (whoops "Invalid second argument to ITEM: " stuff))))))
+
+(define equal?
+  ;; Note that EQUAL? assumes strings are numbers.
+  ;; (strings-are-numbers #f) doesn't change this behavior.
+  (let ((vector-length vector-length) (= =) (vector-ref vector-ref)
+	(+ +) (string? string?) (symbol? symbol?) (null? null?) (pair? pair?)
+	(car car) (cdr cdr) (eq? eq?) (string=? string=?)
+	(symbol->string symbol->string) (number? number?)
+	(string->word string->word) (vector? vector?) (eqv? eqv?))
+    (define (vector-equal? v1 v2)
+      (let ((len1 (vector-length v1))
+	    (len2 (vector-length v2)))
+	(define (helper i)
+	  (if (= i len1)
+	      #t
+	      (and (equal? (vector-ref v1 i) (vector-ref v2 i))
+		   (helper (+ i 1)))))
+	(if (= len1 len2)
+	    (helper 0)
+	    #f)))
+    (lambda (x y)
+      (cond ((null? x) (null? y))
+	    ((null? y) #f)
+	    ((pair? x)
+	     (and (pair? y)
+		  (equal? (car x) (car y))
+		  (equal? (cdr x) (cdr y))))
+	    ((pair? y) #f)
+	    ((symbol? x)
+	     (or (and (symbol? y) (eq? x y))
+		 (and (string? y) (string=? (symbol->string x) y))))
+	    ((symbol? y)
+	     (and (string? x) (string=? x (symbol->string y))))
+	    ((number? x)
+	     (or (and (number? y) (= x y))
+		 (and (string? y)
+		      (let ((possible-num (string->word y)))
+			(and (number? possible-num)
+			     (= x possible-num))))))
+	    ((number? y)
+	     (and (string? x)
+		  (let ((possible-num (string->word x)))
+		    (and (number? possible-num)
+			 (= possible-num y)))))
+	    ((string? x) (and (string? y) (string=? x y)))
+	    ((string? y) #f)
+	    ((vector? x) (and (vector? y) (vector-equal? x y)))
+	    ((vector? y) #f)
+	    (else (eqv? x y))))))
+
+(define member?
+  (let ((> >) (- -) (< <) (null? null?) (symbol? symbol?) (eq? eq?) (car car)
+	(not not) (symbol->string symbol->string) (string=? string=?)
+	(cdr cdr) (equal? equal?) (word->string word->string)
+	(string-length string-length) (whoops whoops) (string-ref string-ref)
+	(char=? char=?) (list? list?) (number? number?) (empty? empty?)
+	(word? word?) (string? string?))
+    (define (symbol-in-list? symbol string lst)
+      (cond ((null? lst) #f)
+	    ((and (symbol? (car lst))
+		  (eq? symbol (car lst))))
+	    ((string? (car lst))
+	     (cond ((not string)
+		    (symbol-in-list? symbol (symbol->string symbol) lst))
+		   ((string=? string (car lst)) #t)
+		   (else (symbol-in-list? symbol string (cdr lst)))))
+	    (else (symbol-in-list? symbol string (cdr lst)))))
+    (define (word-in-list? wd lst)
+      (cond ((null? lst) #f)
+	    ((equal? wd (car lst)) #t)
+	    (else (word-in-list? wd (cdr lst)))))
+    (define (word-in-word? small big)
+      (let ((one-letter-str (word->string small)))
+	(if (> (string-length one-letter-str) 1)
+	    (whoops "Invalid arguments to MEMBER?: " small big)
+	    (let ((big-str (word->string big)))
+	      (char-in-string? (string-ref one-letter-str 0)
+			       big-str
+			       (- (string-length big-str) 1))))))
+    (define (char-in-string? char string i)
+      (cond ((< i 0) #f)
+	    ((char=? char (string-ref string i)) #t)
+	    (else (char-in-string? char string (- i 1)))))
+    (lambda (x stuff)
+      (cond ((empty? stuff) #f)
+	    ((word? stuff) (word-in-word? x stuff))
+	    ((not (list? stuff))
+	     (whoops "Invalid second argument to MEMBER?: " stuff))
+	    ((symbol? x) (symbol-in-list? x #f stuff))
+	    ((or (number? x) (string? x))
+	     (word-in-list? x stuff))
+	    (else (whoops "Invalid first argument to MEMBER?: " x))))))
+
+(define before?
+  (let ((not not) (word? word?) (whoops whoops) (string&lt;? string&lt;?)
+	(word->string word->string))
+    (lambda (wd1 wd2)
+      (cond ((not (word? wd1))
+	     (whoops "Invalid first argument to BEFORE? (not a word): " wd1))
+	    ((not (word? wd2))
+	     (whoops "Invalid second argument to BEFORE? (not a word): " wd2))
+	    (else (string&lt;? (word->string wd1) (word->string wd2)))))))
+
+
+;;; Higher Order Functions
+
+(define filter
+  (let ((null? null?) (car car) (cons cons) (cdr cdr) (not not)
+	(procedure? procedure?) (whoops whoops) (list? list?))
+    (lambda (pred l)
+      ;; Helper function so recursive calls don't show up in TRACE
+      (define (real-filter l)
+	(cond ((null? l) '())
+	      ((pred (car l))
+	       (cons (car l) (real-filter (cdr l))))
+	      (else (real-filter (cdr l)))))
+      (cond ((not (procedure? pred))
+	     (whoops "Invalid first argument to FILTER (not a procedure): "
+		     pred))
+	    ((not (list? l))
+	     (whoops "Invalid second argument to FILTER (not a list): " l))
+	    (else (real-filter l))))))
+
+(define keep
+  (let ((+ +) (= =) (pair? pair?) (substring substring)
+	(char->word char->word) (string-ref string-ref)
+	(string-set! string-set!) (word->string word->string)
+	(string-length string-length) (string->word string->word)
+	(make-string make-string) (procedure? procedure?)
+	(whoops whoops) (word? word?) (null? null?))
+    (lambda (pred w-or-s)
+      (define (keep-string in i out out-len len)
+	(cond ((= i len) (substring out 0 out-len))
+	      ((pred (char->word (string-ref in i)))
+	       (string-set! out out-len (string-ref in i))
+	       (keep-string in (+ i 1) out (+ out-len 1) len))
+	      (else (keep-string in (+ i 1) out out-len len))))
+      (define (keep-word wd)
+	(let* ((string (word->string wd))
+	       (len (string-length string)))
+	  (string->word
+	   (keep-string string 0 (make-string len) 0 len))))
+      (cond ((not (procedure? pred))
+	     (whoops "Invalid first argument to KEEP (not a procedure): "
+		    pred))
+	    ((pair? w-or-s) (filter pred w-or-s))
+	    ((word? w-or-s) (keep-word w-or-s))
+	    ((null? w-or-s) '())
+	    (else
+	     (whoops "Bad second argument to KEEP (not a word or sentence): "
+		     w-or-s))))))
+
+(define appearances
+  (let ((count count) (keep keep) (equal? equal?))
+    (lambda (item aggregate)
+      (count (keep (lambda (element) (equal? item element)) aggregate)))))
+
+(define every
+  (let ((= =) (+ +) (se se) (char->word char->word) (string-ref string-ref)
+	(empty? empty?) (first first) (bf bf) (not not) (procedure? procedure?)
+	(whoops whoops) (word? word?) (word->string word->string)
+	(string-length string-length))
+    (lambda (fn stuff)
+      (define (string-every string i length)
+	(if (= i length)
+	    '()
+	    (se (fn (char->word (string-ref string i)))
+		(string-every string (+ i 1) length))))
+      (define (sent-every sent)
+	;; This proc. can't be optimized or else it will break the
+	;; exercise where we ask them to reimplement sentences as
+	;; vectors and then see if every still works.
+	(if (empty? sent)
+	    sent		; Can't be '() or exercise breaks.
+	    (se (fn (first sent))    
+		(sent-every (bf sent)))))
+      (cond ((not (procedure? fn))
+	     (whoops "Invalid first argument to EVERY (not a procedure):"
+		     fn))
+	    ((word? stuff)
+	     (let ((string (word->string stuff)))
+	       (string-every string 0 (string-length string))))
+	    (else (sent-every stuff))))))
+
+(define accumulate
+  (let ((not not) (empty? empty?) (bf bf) (first first) (procedure? procedure?)
+	(whoops whoops) (member member) (list list))
+    (lambda (combiner stuff)
+      (define (real-accumulate stuff)
+	(if (empty? (bf stuff))
+	    (first stuff)
+	    (combiner (first stuff) (real-accumulate (bf stuff)))))
+      (cond ((not (procedure? combiner))
+	     (whoops "Invalid first argument to ACCUMULATE (not a procedure):"
+		     combiner))
+	    ((not (empty? stuff)) (real-accumulate stuff))
+	    ((member combiner (list + * word se)) (combiner))
+	    (else
+	     (whoops "Can't accumulate empty input with that combiner"))))))
+
+(define reduce
+  (let ((null? null?) (cdr cdr) (car car) (not not) (procedure? procedure?)
+	(whoops whoops) (member member) (list list))
+    (lambda (combiner stuff)
+      (define (real-reduce stuff)
+	(if (null? (cdr stuff))
+	    (car stuff)
+	    (combiner (car stuff) (real-reduce (cdr stuff)))))
+      (cond ((not (procedure? combiner))
+	     (whoops "Invalid first argument to REDUCE (not a procedure):"
+		     combiner))
+	    ((not (null? stuff)) (real-reduce stuff))
+	    ((member combiner (list + * word se append)) (combiner))
+	    (else (whoops "Can't reduce empty input with that combiner"))))))
+
+(define repeated
+  (let ((= =) (- -))
+    (lambda (fn number)
+      (if (= number 0)
+	  (lambda (x) x)
+	  (lambda (x)
+	    ((repeated fn (- number 1)) (fn x)))))))
+
+
+;; Tree stuff
+(define make-node cons)
+(define datum car)
+(define children cdr)
+
+
+;; I/O
+        
+(define show
+  (let ((= =) (length length) (display display) (car car) (newline newline)
+	(not not) (output-port? output-port?) (apply apply) (whoops whoops))
+    (lambda args
+      (cond
+       ((= (length args) 1)
+	(display (car args))
+	(newline))
+       ((= (length args) 2)
+	(if (not (output-port? (car (cdr args))))
+	    (whoops "Invalid second argument to SHOW (not an output port): "
+		    (car (cdr args))))
+	(apply display args)
+	(newline (car (cdr args))))
+       (else (whoops "Incorrect number of arguments to procedure SHOW"))))))
+
+(define show-line
+  (let ((>= >=) (length length) (whoops whoops) (null? null?)
+	(current-output-port current-output-port) (car car) (not not)
+	(list? list?) (display display) (for-each for-each) (cdr cdr)
+	(newline newline))
+    (lambda (line . args)
+      (if (>= (length args) 2)
+	  (whoops "Too many arguments to show-line")
+	  (let ((port (if (null? args) (current-output-port) (car args))))
+	    (cond ((not (list? line))
+		   (whoops "Invalid argument to SHOW-LINE (not a list):" line))
+		  ((null? line) #f)
+		  (else
+		   (display (car line) port)
+		   (for-each (lambda (wd) (display " " port) (display wd port))
+			     (cdr line))))
+	    (newline port))))))
+
+(define read-string
+  (let ((read-char read-char) (eqv? eqv?) (apply apply)
+	(string-append string-append) (substring substring) (reverse reverse)
+	(cons cons) (>= >=) (+ +) (string-set! string-set!) (length length)
+	(whoops whoops) (null? null?) (current-input-port current-input-port)
+	(car car) (cdr cdr) (eof-object? eof-object?) (list list)
+	(make-string make-string) (peek-char peek-char))
+    (define (read-string-helper chars all-length chunk-length port)
+      (let ((char (read-char port))
+	    (string (car chars)))
+	(cond ((or (eof-object? char) (eqv? char #\newline))
+	       (apply string-append
+		      (reverse
+		       (cons
+			(substring (car chars) 0 chunk-length)
+			(cdr chars)))))
+	      ((>= chunk-length 80)
+	       (let ((newstring (make-string 80)))
+		 (string-set! newstring 0 char)
+		 (read-string-helper (cons newstring chars)
+				     (+ all-length 1)
+				     1
+				     port)))
+	      (else
+	       (string-set! string chunk-length char)
+	       (read-string-helper chars
+				   (+ all-length 1)
+				   (+ chunk-length 1)
+				   port)))))
+    (lambda args
+      (if (>= (length args) 2)
+	  (whoops "Too many arguments to read-string")
+	  (let ((port (if (null? args) (current-input-port) (car args))))
+	    (if (eof-object? (peek-char port))
+		(read-char port)
+		(read-string-helper (list (make-string 80)) 0 0 port)))))))
+
+(define read-line
+  (let ((= =) (list list) (string->word string->word) (substring substring)
+	(char-whitespace? char-whitespace?) (string-ref string-ref)
+	(+ +) (string-length string-length) (apply apply)
+	(read-string read-string))
+    (lambda args
+      (define (tokenize string)
+	(define (helper i start len)
+	  (cond ((= i len)
+		 (if (= i start)
+		     '()
+		     (list (string->word (substring string start i)))))
+		((char-whitespace? (string-ref string i))
+		 (if (= i start)
+		     (helper (+ i 1) (+ i 1) len)
+		     (cons (string->word (substring string start i))
+			   (helper (+ i 1) (+ i 1) len))))
+		(else (helper (+ i 1) start len))))
+        (if (eof-object? string)
+            string
+            (helper 0 0 (string-length string))))
+      (tokenize (apply read-string args)))))
+
+(define *the-open-inports* '())
+(define *the-open-outports* '())
+
+(define align
+  (let ((< <) (abs abs) (* *) (expt expt) (>= >=) (- -) (+ +) (= =)
+	(null? null?) (car car) (round round) (number->string number->string)
+	(string-length string-length) (string-append string-append)
+	(make-string make-string) (substring substring)
+	(string-set! string-set!) (number? number?)
+	(word->string word->string))
+    (lambda (obj width . rest)
+      (define (align-number obj width rest)
+	(let* ((sign (< obj 0))
+	       (num (abs obj))
+	       (prec (if (null? rest) 0 (car rest)))
+	       (big (round (* num (expt 10 prec))))
+	       (cvt0 (number->string big))
+	       (cvt (if (< num 1) (string-append "0" cvt0) cvt0))
+	       (pos-str (if (>= (string-length cvt0) prec)
+			    cvt
+			    (string-append
+			     (make-string (- prec (string-length cvt0)) #\0)
+			     cvt)))
+	       (string (if sign (string-append "-" pos-str) pos-str))
+	       (length (+ (string-length string)
+			  (if (= prec 0) 0 1)))
+	       (left (- length (+ 1 prec)))
+	       (result (if (= prec 0)
+			   string
+			   (string-append
+			    (substring string 0 left)
+			    "."
+			    (substring string left (- length 1))))))
+	  (cond ((= length width) result)
+		((< length width)
+		 (string-append (make-string (- width length) #\space) result))
+		(else (let ((new (substring result 0 width)))
+			(string-set! new (- width 1) #\+)
+			new)))))
+      (define (align-word string)
+	(let ((length (string-length string)))
+	  (cond ((= length width) string)
+		((< length width)
+		 (string-append string (make-string (- width length) #\space)))
+		(else (let ((new (substring string 0 width)))
+			(string-set! new (- width 1) #\+)
+			new)))))
+      (if (number? obj)
+	  (align-number obj width rest)
+	  (align-word (word->string obj))))))
+
+(define open-output-file
+  (let ((oof open-output-file) (cons cons))
+    (lambda (filename)
+      (let ((port (oof filename)))
+	(set! *the-open-outports* (cons port *the-open-outports*))
+	port))))
+
+(define open-input-file
+  (let ((oif open-input-file) (cons cons))
+    (lambda (filename)
+      (let ((port (oif filename)))
+	(set! *the-open-inports* (cons port *the-open-inports*))
+	port))))
+
+(define remove!
+  (let ((null? null?) (cdr cdr) (eq? eq?) (set-cdr! set-cdr!) (car car))
+    (lambda (thing lst)
+      (define (r! prev)
+	(cond ((null? (cdr prev)) lst)
+	      ((eq? thing (car (cdr prev)))
+	       (set-cdr! prev (cdr (cdr prev)))
+	       lst)
+	      (else (r! (cdr prev)))))
+      (cond ((null? lst) lst)
+	    ((eq? thing (car lst)) (cdr lst))
+	    (else (r! lst))))))
+
+(define close-input-port
+  (let ((cip close-input-port) (remove! remove!))
+    (lambda (port)
+      (set! *the-open-inports* (remove! port *the-open-inports*))
+      (cip port))))
+
+(define close-output-port
+  (let ((cop close-output-port) (remove! remove!))
+    (lambda (port)
+      (set! *the-open-outports* (remove! port *the-open-outports*))
+      (cop port))))
+
+(define close-all-ports
+  (let ((for-each for-each)
+	(close-input-port close-input-port)
+	(close-output-port close-output-port))
+    (lambda ()
+      (for-each close-input-port *the-open-inports*)
+      (for-each close-output-port *the-open-outports*)
+      'closed)))
+
+;; Make arithmetic work on numbers in string form:
+(define maybe-num
+  (let ((string? string?) (string->number string->number))
+    (lambda (arg)
+      (if (string? arg)
+	  (let ((num (string->number arg)))
+	    (if num num arg))
+	  arg))))
+
+(define logoize
+  (let ((apply apply) (map map) (maybe-num maybe-num))
+    (lambda (fn)
+      (lambda args
+	(apply fn (map maybe-num args))))))
+
+;; special case versions of logoize, since (lambda args ...) is expensive
+(define logoize-1
+  (let ((maybe-num maybe-num))
+    (lambda (fn)
+      (lambda (x) (fn (maybe-num x))))))
+
+(define logoize-2
+  (let ((maybe-num maybe-num))
+    (lambda (fn)
+      (lambda (x y) (fn (maybe-num x) (maybe-num y))))))
+
+(define strings-are-numbers
+  (let ((are-they? #f)
+        (real-* *) (real-+ +) (real-- -) (real-/ /) (real-< <)
+        (real-<= <=) (real-= =) (real-> >) (real->= >=) (real-abs abs)
+        (real-acos acos) (real-asin asin) (real-atan atan)
+        (real-ceiling ceiling) (real-cos cos) (real-even? even?)
+        (real-exp exp) (real-expt expt) (real-floor floor) (real-align align)
+        (real-gcd gcd) (real-integer? integer?) (real-item item)
+        (real-lcm lcm) (real-list-ref list-ref) (real-log log)
+        (real-make-vector make-vector) (real-max max) (real-min min)
+        (real-modulo modulo) (real-negative? negative?)
+        (real-number? number?) (real-odd? odd?) (real-positive? positive?)
+        (real-quotient quotient) (real-random random) (real-remainder remainder)
+        (real-repeated repeated) (real-round round) (real-sin sin)
+        (real-sqrt sqrt) (real-tan tan) (real-truncate truncate)
+        (real-vector-ref vector-ref) (real-vector-set! vector-set!)
+        (real-zero? zero?) (maybe-num maybe-num) (number->string number->string)
+	(cons cons) (car car) (cdr cdr) (eq? eq?) (show show) (logoize logoize)
+	(logoize-1 logoize-1) (logoize-2 logoize-2) (not not) (whoops whoops))
+
+    (lambda (yesno)
+      (cond ((and are-they? (eq? yesno #t))
+	     (show "Strings are already numbers"))
+	    ((eq? yesno #t)
+	     (set! are-they? #t)
+	     (set! * (logoize real-*))
+	     (set! + (logoize real-+))
+	     (set! - (logoize real--))
+	     (set! / (logoize real-/))
+	     (set! < (logoize real-<))
+	     (set! <= (logoize real-<=))
+	     (set! = (logoize real-=))
+	     (set! > (logoize real->))
+	     (set! >= (logoize real->=))
+	     (set! abs (logoize-1 real-abs))
+	     (set! acos (logoize-1 real-acos))
+	     (set! asin (logoize-1 real-asin))
+	     (set! atan (logoize real-atan))
+	     (set! ceiling (logoize-1 real-ceiling))
+	     (set! cos (logoize-1 real-cos))
+	     (set! even? (logoize-1 real-even?))
+	     (set! exp (logoize-1 real-exp))
+	     (set! expt (logoize-2 real-expt))
+	     (set! floor (logoize-1 real-floor))
+	     (set! align (logoize align))
+	     (set! gcd (logoize real-gcd))
+	     (set! integer? (logoize-1 real-integer?))
+	     (set! item (lambda (n stuff)
+			  (real-item (maybe-num n) stuff)))
+	     (set! lcm (logoize real-lcm))
+	     (set! list-ref (lambda (lst k) 
+			      (real-list-ref lst (maybe-num k))))
+	     (set! log (logoize-1 real-log))
+	     (set! max (logoize real-max))
+	     (set! min (logoize real-min))
+	     (set! modulo (logoize-2 real-modulo))
+	     (set! negative? (logoize-1 real-negative?))
+	     (set! number? (logoize-1 real-number?))
+	     (set! odd? (logoize-1 real-odd?))
+	     (set! positive? (logoize-1 real-positive?))
+	     (set! quotient (logoize-2 real-quotient))
+	     (set! random (logoize real-random))
+	     (set! remainder (logoize-2 real-remainder))
+	     (set! round (logoize-1 real-round))
+	     (set! sin (logoize-1 real-sin))
+	     (set! sqrt (logoize-1 real-sqrt))
+
+	     (set! tan (logoize-1 real-tan))
+	     (set! truncate (logoize-1 real-truncate))
+	     (set! zero? (logoize-1 real-zero?))
+	     (set! vector-ref
+		   (lambda (vec i) (real-vector-ref vec (maybe-num i))))
+	     (set! vector-set!
+		   (lambda (vec i val)
+		     (real-vector-set! vec (maybe-num i) val)))
+	     (set! make-vector
+		   (lambda (num . args)
+		     (apply real-make-vector (cons (maybe-num num)
+						   args))))
+	     (set! list-ref
+		   (lambda (lst i) (real-list-ref lst (maybe-num i))))
+	     (set! repeated
+		   (lambda (fn n) (real-repeated fn (maybe-num n)))))
+	    ((and (not are-they?) (not yesno))
+	     (show "Strings are already not numbers"))
+	    ((not yesno)
+	     (set! are-they? #f) (set! * real-*) (set! + real-+)
+	     (set! - real--) (set! / real-/) (set! < real-<)
+	     (set! <= real-<=) (set! = real-=) (set! > real->)
+	     (set! >= real->=) (set! abs real-abs) (set! acos real-acos)
+	     (set! asin real-asin) (set! atan real-atan)
+	     (set! ceiling real-ceiling) (set! cos real-cos)
+	     (set! even? real-even?)
+	     (set! exp real-exp) (set! expt real-expt)
+	     (set! floor real-floor) (set! align real-align)
+	     (set! gcd real-gcd) (set! integer? real-integer?)
+	     (set! item real-item)
+	     (set! lcm real-lcm) (set! list-ref real-list-ref)
+	     (set! log real-log) (set! max real-max) (set! min real-min)
+	     (set! modulo real-modulo) (set! odd? real-odd?)
+	     (set! quotient real-quotient) (set! random real-random)
+	     (set! remainder real-remainder) (set! round real-round)
+	     (set! sin real-sin) (set! sqrt real-sqrt) (set! tan real-tan)
+	     (set! truncate real-truncate) (set! zero? real-zero?)
+	     (set! positive? real-positive?) (set! negative? real-negative?)
+	     (set! number? real-number?) (set! vector-ref real-vector-ref)
+	     (set! vector-set! real-vector-set!)
+	     (set! make-vector real-make-vector)
+	     (set! list-ref real-list-ref) (set! item real-item)
+	     (set! repeated real-repeated))
+	    (else (whoops "Strings-are-numbers: give a #t or a #f")))
+	    are-they?)))
+
+
+;; By default, strings are numbers:
+(strings-are-numbers #t)
+</PRE><P>
+
+
+<P>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="appendix-cl.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-gpl.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appindex.html b/js/games/nluqo.github.io/~bh/ssch27/appindex.html
new file mode 100644
index 0000000..0e3f689
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appindex.html
@@ -0,0 +1,360 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: General Index</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>General Index</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="category.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>This index contains technical terms and primitive procedures.  Other sources
+of information are the index of defined procedures, which contains
+procedures whose definitions are in the text and procedures that you are
+asked to write as exercises; the glossary, which defines many technical
+terms; and the Alphabetical Table of Scheme Primitives on page <A HREF="appendix-funlist.html#funlist">funlist</A>.
+
+<P><BR>
+<A HREF="appindex.html#A">A</A> <A HREF="appindex.html#B">B</A> <A HREF="appindex.html#C">C</A> <A HREF="appindex.html#D">D</A> <A HREF="appindex.html#E">E</A> <A HREF="appindex.html#F">F</A> <A HREF="appindex.html#G">G</A> <A HREF="appindex.html#H">H</A> <A HREF="appindex.html#I">I</A> J <A HREF="appindex.html#K">K</A> <A HREF="appindex.html#L">L</A> <A HREF="appindex.html#M">M</A> <A HREF="appindex.html#N">N</A> <A HREF="appindex.html#O">O</A> <A HREF="appindex.html#P">P</A> <A HREF="appindex.html#Q">Q</A> <A HREF="appindex.html#R">R</A> <A HREF="appindex.html#S">S</A> <A HREF="appindex.html#T">T</A> <A HREF="appindex.html#U">U</A> <A HREF="appindex.html#V">V</A> <A HREF="appindex.html#W">W</A> X Y Z
+
+<P><BR>
+<CODE>#f</CODE> <A HREF="../ssch6/true#g66">Ch6</A><BR>
+<CODE>#t</CODE> <A HREF="../ssch6/true#g65">Ch6</A><BR>
+<CODE>'</CODE> <A HREF="../ssch5/words#g5">Ch5</A><BR>
+<CODE>*</CODE> <A HREF="appendix-funlist#g202">FunList</A><BR>
+<CODE>+</CODE> <A HREF="appendix-funlist#g203">FunList</A><BR>
+<CODE>-</CODE> <A HREF="../ssch6/true#g83">Ch6</A>, <A HREF="appendix-funlist#g204">FunList</A><BR>
+<CODE>/</CODE> <A HREF="appendix-funlist#g205">FunList</A><BR>
+<CODE>&lt;</CODE> <A HREF="../ssch6/true#g73">Ch6</A><BR>
+<CODE>&lt;=</CODE> <A HREF="../ssch6/true#g75">Ch6</A><BR>
+<CODE>=</CODE> <A HREF="../ssch6/true#g71">Ch6</A><BR>
+<CODE>&gt;</CODE> <A HREF="../ssch6/true#g72">Ch6</A><BR>
+<CODE>&gt;=</CODE> <A HREF="../ssch6/true#g74">Ch6</A><BR>
+<A NAME="A"></A>
+Abelson, Harold <A HREF="../ssch13/convince-recur#g2">Ch13</A>, <A HREF="../ssch26/preview#g2">Ch26</A><BR>
+<CODE>abs</CODE> <A HREF="../ssch6/true#g84">Ch6</A><BR>
+abstract data type <A HREF="../ssch16/match#g13">Ch16</A>, <A HREF="../ssch17/lists#g15">Ch17</A>, <A HREF="../ssch18/trees#g28">Ch18</A>, <A HREF="../ssch25/spread-implement#g3">Ch25</A><BR>
+<CODE>accumulate</CODE> <A HREF="../ssch8/higher#g20">Ch8</A>, <A HREF="../ssch8/higher#g29">Ch8</A>, <A HREF="../ssch19/implement-hof#g14">Ch19</A><BR>
+actual argument <A HREF="../ssch4/defining#g10">Ch4</A><BR>
+actual argument expression <A HREF="../ssch4/defining#g12">Ch4</A><BR>
+actual argument value <A HREF="../ssch4/defining#g14">Ch4</A><BR>
+ADT <A HREF="../ssch16/match#g16">Ch16</A>, <A HREF="../ssch18/trees#g31">Ch18</A>, <A HREF="../ssch25/spread-implement#g2">Ch25</A><BR>
+<CODE>align</CODE> <A HREF="../ssch20/io#g44">Ch20</A><BR>
+<CODE>and</CODE> <A HREF="../ssch6/true#g87">Ch6</A>, <A HREF="../ssch6/true#g96">Ch6</A><BR>
+<CODE>append</CODE> <A HREF="../ssch17/lists#g9">Ch17</A><BR>
+<CODE>apply</CODE> <A HREF="../ssch17/lists#g38">Ch17</A><BR>
+argument, actual <A HREF="../ssch4/defining#g11">Ch4</A><BR>
+arguments, variable number of <A HREF="../ssch17/lists#g36">Ch17</A><BR>
+arithmetic function <A HREF="../ssch2/functions#g3">Ch2</A><BR>
+<CODE>assoc</CODE> <A HREF="../ssch17/lists#g33">Ch17</A><BR>
+association list <A HREF="../ssch17/lists#g31">Ch17</A><BR>
+atomic expression <A HREF="../ssch3/people#g1">Ch3</A><BR>
+<A NAME="B"></A>
+base case <A HREF="../ssch11/recursion#g5">Ch11</A><BR>
+base cases, simplifying <A HREF="../ssch12/leap#g5">Ch12</A><BR>
+<CODE>before?</CODE> <A HREF="../ssch6/true#g76">Ch6</A><BR>
+<CODE>begin</CODE> <A HREF="../ssch20/io#g18">Ch20</A><BR>
+<CODE>bf</CODE> <A HREF="../ssch5/words#g20">Ch5</A><BR>
+binary number <A HREF="../ssch15/adv-recur#g4">Ch15</A><BR>
+<CODE>bl</CODE> <A HREF="../ssch5/words#g21">Ch5</A><BR>
+Bonne, Rose <A HREF="credits#g39">Credits</A><BR>
+<CODE>boolean?</CODE> <A HREF="../ssch6/true#g79">Ch6</A><BR>
+Boole, George <A HREF="../ssch2/functions#g5">Ch2</A><BR>
+branch node <A HREF="../ssch18/trees#g3">Ch18</A><BR>
+bridge points <A HREF="../ssch9/bridge#g1">ProjBridge</A><BR>
+<CODE>butfirst</CODE> <A HREF="../ssch5/words#g10">Ch5</A><BR>
+<CODE>butlast</CODE> <A HREF="../ssch5/words#g12">Ch5</A><BR>
+<A NAME="C"></A>
+<CODE>cadr</CODE> <A HREF="../ssch17/lists#g14">Ch17</A><BR>
+<CODE>car</CODE> <A HREF="../ssch17/lists#g4">Ch17</A><BR>
+Carroll, Lewis <A HREF="../ssch4/defining#g7">Ch4</A>, <A HREF="credits#g37">Credits</A><BR>
+case, base <A HREF="../ssch11/recursion#g6">Ch11</A><BR>
+case, recursive <A HREF="../ssch11/recursion#g4">Ch11</A><BR>
+<CODE>cdr</CODE> <A HREF="../ssch17/lists#g5">Ch17</A><BR>
+<CODE>ceiling</CODE> <A HREF="appendix-funlist#g206">FunList</A><BR>
+chalkboard model <A HREF="../ssch7/variables#g8">Ch7</A><BR>
+child (in spreadsheet program) <A HREF="../ssch25/spread-implement#g22">Ch25</A><BR>
+<CODE>children</CODE> <A HREF="../ssch18/trees#g9">Ch18</A><BR>
+clause, cond <A HREF="../ssch6/true#g105">Ch6</A><BR>
+Clinger, William <A HREF="../ssch22/files#g26">Ch22</A><BR>
+<CODE>close-all-ports</CODE> <A HREF="../ssch22/files#g39">Ch22</A><BR>
+<CODE>close-input-port</CODE> <A HREF="../ssch22/files#g13">Ch22</A><BR>
+<CODE>close-output-port</CODE> <A HREF="../ssch22/files#g11">Ch22</A><BR>
+complexity, control of <A HREF="../ssch1/showing#g2">Ch1</A><BR>
+composition of functions <A HREF="../ssch3/part2#g1">Part2</A>, <A HREF="../ssch4/defining#g18">Ch4</A><BR>
+compound expression <A HREF="../ssch3/people#g3">Ch3</A>, <A HREF="../ssch3/people#g7">Ch3</A><BR>
+compound procedure <A HREF="../ssch1/showing#g9">Ch1</A><BR>
+computing, symbolic <A HREF="../ssch1/showing#g22">Ch1</A><BR>
+cond clause <A HREF="../ssch6/true#g104">Ch6</A><BR>
+<CODE>cond</CODE> <A HREF="../ssch6/true#g101">Ch6</A>, <A HREF="../ssch10/ttt#g10">Ch10</A>, <A HREF="../ssch20/io#g15">Ch20</A><BR>
+<CODE>cons</CODE> <A HREF="../ssch17/lists#g8">Ch17</A><BR>
+constant, named <A HREF="../ssch7/variables#g3">Ch7</A><BR>
+control of complexity <A HREF="../ssch1/showing#g1">Ch1</A><BR>
+conversational program <A HREF="../ssch20/io#g1">Ch20</A><BR>
+<CODE>cos</CODE> <A HREF="appendix-funlist#g207">FunList</A><BR>
+<CODE>count</CODE> <A HREF="../ssch8/higher#g23">Ch8</A><BR>
+<CODE>c...r</CODE> <A HREF="../ssch17/lists#g13">Ch17</A><BR>
+<A NAME="D"></A>
+data file <A HREF="../ssch22/files#g7">Ch22</A><BR>
+data structure <A HREF="../ssch10/ttt#g2">Ch10</A><BR>
+data type, abstract <A HREF="../ssch16/match#g14">Ch16</A>, <A HREF="../ssch17/lists#g16">Ch17</A>, <A HREF="../ssch18/trees#g29">Ch18</A>, <A HREF="../ssch25/spread-implement#g4">Ch25</A><BR>
+<CODE>datum</CODE> <A HREF="../ssch18/trees#g8">Ch18</A><BR>
+<CODE>define</CODE> <A HREF="../ssch4/defining#g2">Ch4</A>, <A HREF="../ssch9/lambda#g10">Ch9</A><BR>
+definition, global <A HREF="../ssch9/lambda#g14">Ch9</A><BR>
+diagram, plumbing <A HREF="../ssch3/people#g15">Ch3</A>, <A HREF="../ssch3/people#g19">Ch3</A><BR>
+<CODE>display</CODE> <A HREF="../ssch20/io#g21">Ch20</A>, <A HREF="../ssch22/files#g3">Ch22</A><BR>
+Dodgson, Charles <A HREF="credits#g38">Credits</A><BR>
+<A NAME="E"></A>
+effect, side <A HREF="../ssch20/io#g10">Ch20</A><BR>
+<CODE>else</CODE> <A HREF="../ssch6/true#g106">Ch6</A><BR>
+<CODE>empty?</CODE> <A HREF="../ssch6/true#g77">Ch6</A><BR>
+empty sentence <A HREF="../ssch5/words#g14">Ch5</A>, <A HREF="../ssch6/true#g67">Ch6</A><BR>
+end-of-file object <A HREF="../ssch22/files#g16">Ch22</A><BR>
+<CODE>eof-object?</CODE> <A HREF="../ssch22/files#g19">Ch22</A><BR>
+<CODE>equal?</CODE> <A HREF="../ssch6/true#g69">Ch6</A><BR>
+<CODE>error</CODE> <A HREF="appendix-funlist#g208">FunList</A><BR>
+error messages <A HREF="../ssch1/showing#g4">Ch1</A><BR>
+<CODE>eval</CODE> <A HREF="../ssch25/spread-implement#g28">Ch25</A><BR>
+evaluation, order of <A HREF="../ssch3/people#g8">Ch3</A>, <A HREF="../ssch3/people#g12">Ch3</A><BR>
+<CODE>even?</CODE> <A HREF="appendix-funlist#g209">FunList</A><BR>
+<CODE>every</CODE> <A HREF="../ssch8/higher#g3">Ch8</A>, <A HREF="../ssch8/higher#g27">Ch8</A><BR>
+exclusive, mutually <A HREF="../ssch6/true#g109">Ch6</A><BR>
+<CODE>exit</CODE> <A HREF="../ssch1/showing#g5">Ch1</A><BR>
+expression, actual argument <A HREF="../ssch4/defining#g13">Ch4</A><BR>
+expression, atomic <A HREF="../ssch3/people#g2">Ch3</A>, <A HREF="../ssch3/people#g6">Ch3</A><BR>
+expression, compound <A HREF="../ssch3/people#g4">Ch3</A>, <A HREF="../ssch3/people#g8">Ch3</A><BR>
+expression, self-evaluating <A HREF="../ssch3/people#g5">Ch3</A>, <A HREF="../ssch3/people#g9">Ch3</A>, <A HREF="../ssch5/words#g17">Ch5</A>, <A HREF="../ssch5/words#g26">Ch5</A><BR>
+<CODE>expt</CODE> <A HREF="appendix-funlist#g210">FunList</A><BR>
+extensions to Scheme <A HREF="../ssch5/words#g8">Ch5</A>, <A HREF="appendix-simply#g16">InitFile</A><BR>
+<A NAME="F"></A>
+Fibonacci numbers <A HREF="../ssch13/convince-recur#g12">Ch13</A><BR>
+file, data <A HREF="../ssch22/files#g8">Ch22</A><BR>
+<CODE>file-map</CODE> <A HREF="../ssch22/files#g20">Ch22</A><BR>
+<CODE>filter</CODE> <A HREF="../ssch17/lists#g25">Ch17</A>, <A HREF="../ssch19/implement-hof#g12">Ch19</A><BR>
+<CODE>first</CODE> <A HREF="../ssch5/words#g9">Ch5</A><BR>
+<CODE>floor</CODE> <A HREF="appendix-funlist#g211">FunList</A><BR>
+<CODE>for-each</CODE> <A HREF="../ssch20/io#g26">Ch20</A><BR>
+formal parameter <A HREF="../ssch4/defining#g8">Ch4</A><BR>
+form, special <A HREF="../ssch4/defining#g4">Ch4</A>, <A HREF="../ssch5/words#g4">Ch5</A>, <A HREF="../ssch6/true#g100">Ch6</A>, <A HREF="../ssch6/true#g92">Ch6</A>, <A HREF="../ssch6/true#g95">Ch6</A>, <A HREF="../ssch7/variables#g15">Ch7</A>, <A HREF="../ssch9/lambda#g5">Ch9</A>, <A HREF="../ssch13/convince-recur#g17">Ch13</A>, <A HREF="../ssch20/io#g17">Ch20</A><BR>
+Freud, Sigmund <A HREF="../ssch26/preview#g5">Ch26</A><BR>
+Friedman, Daniel P. <A HREF="../ssch23/vectors#g1">Ch23</A><BR>
+functional programming <A HREF="../ssch2/functions#g1">Ch2</A>, <A HREF="../ssch3/part2#g3">Part2</A>, <A HREF="../ssch7/variables#g4">Ch7</A>, <A HREF="../ssch20/io#g19">Ch20</A><BR>
+function, arithmetic <A HREF="../ssch2/functions#g4">Ch2</A><BR>
+function as argument <A HREF="../ssch8/higher#g5">Ch8</A><BR>
+function as data <A HREF="../ssch2/functions#g6">Ch2</A><BR>
+function composition <A HREF="../ssch3/part2#g2">Part2</A>, <A HREF="../ssch4/defining#g19">Ch4</A><BR>
+function, higher-order <A HREF="../ssch2/functions#g8">Ch2</A>, <A HREF="../ssch8/higher#g13">Ch8</A>, <A HREF="../ssch17/lists#g23">Ch17</A>, <A HREF="../ssch19/implement-hof#g3">Ch19</A><BR>
+function machine <A HREF="../ssch3/people#g12">Ch3</A>, <A HREF="../ssch3/people#g16">Ch3</A>, <A HREF="../ssch8/higher#g14">Ch8</A><BR>
+<CODE>functions</CODE> <A HREF="../ssch21/functions-implement#g1">Ch21</A><BR>
+function, unnamed <A HREF="../ssch9/lambda#g17">Ch9</A><BR>
+function vs. procedure <A HREF="../ssch4/defining#g6">Ch4</A>, <A HREF="../ssch8/higher#g8">Ch8</A><BR>
+<A NAME="G"></A>
+generalization <A HREF="../ssch4/defining#g16">Ch4</A>, <A HREF="../ssch19/implement-hof#g4">Ch19</A>, <A HREF="../ssch22/files#g23">Ch22</A><BR>
+global variable <A HREF="../ssch9/lambda#g12">Ch9</A><BR>
+<A NAME="H"></A>
+Harvey, Brian <A HREF="../ssch13/convince-recur#g5">Ch13</A><BR>
+helper procedure <A HREF="../ssch14/recur-patterns#g15">Ch14</A><BR>
+higher-order function <A HREF="../ssch2/functions#g7">Ch2</A>, <A HREF="../ssch8/higher#g12">Ch8</A>, <A HREF="../ssch17/lists#g22">Ch17</A>, <A HREF="../ssch19/implement-hof#g2">Ch19</A><BR>
+<A NAME="I"></A>
+<CODE>if</CODE> <A HREF="../ssch6/true#g64">Ch6</A>, <A HREF="../ssch6/true#g90">Ch6</A><BR>
+imperative programming <A HREF="../ssch23/vectors#g18">Ch23</A><BR>
+indentation <A HREF="../ssch1/showing#g17">Ch1</A>, <A HREF="../ssch3/people#g16">Ch3</A><BR>
+infix notation <A HREF="../ssch18/trees#g33">Ch18</A><BR>
+initialization procedure <A HREF="../ssch14/recur-patterns#g19">Ch14</A><BR>
+<CODE>integer?</CODE> <A HREF="appendix-funlist#g212">FunList</A><BR>
+interactive programming <A HREF="../ssch20/io#g3">Ch20</A><BR>
+interface, user <A HREF="../ssch20/io#g47">Ch20</A><BR>
+<CODE>item</CODE> <A HREF="../ssch8/higher#g32">Ch8</A><BR>
+<A NAME="K"></A>
+<CODE>keep</CODE> <A HREF="../ssch8/higher#g16">Ch8</A>, <A HREF="../ssch8/higher#g28">Ch8</A><BR>
+<CODE>keep</CODE> pattern <A HREF="../ssch14/recur-patterns#g5">Ch14</A><BR>
+<A NAME="L"></A>
+<CODE>lambda</CODE> <A HREF="../ssch9/lambda#g1">Ch9</A><BR>
+<CODE>last</CODE> <A HREF="../ssch5/words#g11">Ch5</A><BR>
+Latin, Pig <A HREF="../ssch1/showing#g14">Ch1</A>, <A HREF="../ssch11/recursion#g8">Ch11</A><BR>
+leaf node <A HREF="../ssch18/trees#g5">Ch18</A><BR>
+<CODE>length</CODE> <A HREF="../ssch17/lists#g30">Ch17</A><BR>
+<CODE>let</CODE> <A HREF="../ssch7/variables#g13">Ch7</A><BR>
+lines of a program <A HREF="../ssch1/showing#g16">Ch1</A><BR>
+list, association <A HREF="../ssch17/lists#g32">Ch17</A><BR>
+<CODE>list</CODE> <A HREF="../ssch17/lists#g7">Ch17</A><BR>
+<CODE>list?</CODE> <A HREF="../ssch17/lists#g27">Ch17</A><BR>
+<CODE>list-&gt;vector</CODE> <A HREF="../ssch23/vectors#g9">Ch23</A><BR>
+<CODE>list-ref</CODE> <A HREF="../ssch17/lists#g29">Ch17</A><BR>
+list, structured <A HREF="../ssch17/lists#g2">Ch17</A>, <A HREF="../ssch19/implement-hof#g20">Ch19</A><BR>
+little people <A HREF="../ssch7/variables#g6">Ch7</A>, <A HREF="../ssch13/convince-recur#g1">Ch13</A><BR>
+<CODE>load</CODE> <A HREF="appendix-funlist#g213">FunList</A><BR>
+local variable <A HREF="../ssch7/variables#g10">Ch7</A><BR>
+<CODE>log</CODE> <A HREF="appendix-funlist#g214">FunList</A><BR>
+<A NAME="M"></A>
+machine, function <A HREF="../ssch3/people#g13">Ch3</A>, <A HREF="../ssch3/people#g17">Ch3</A>, <A HREF="../ssch8/higher#g15">Ch8</A><BR>
+<CODE>make-node</CODE> <A HREF="../ssch18/trees#g7">Ch18</A><BR>
+<CODE>make-vector</CODE> <A HREF="../ssch23/vectors#g2">Ch23</A><BR>
+Manilow, Barry <A HREF="../ssch5/words#g1">Ch5</A><BR>
+<CODE>map</CODE> <A HREF="../ssch17/lists#g24">Ch17</A><BR>
+Marx, Karl <A HREF="../ssch26/preview#g6">Ch26</A><BR>
+matcher, pattern <A HREF="../ssch16/match#g2">Ch16</A><BR>
+<CODE>max</CODE> <A HREF="appendix-funlist#g215">FunList</A><BR>
+<CODE>member</CODE> <A HREF="../ssch17/lists#g28">Ch17</A><BR>
+<CODE>member?</CODE> <A HREF="../ssch6/true#g70">Ch6</A>, <A HREF="../ssch6/true#g110">Ch6</A><BR>
+Mills, Alan <A HREF="credits#g40">Credits</A><BR>
+<CODE>min</CODE> <A HREF="appendix-funlist#g216">FunList</A><BR>
+model, chalkboard <A HREF="../ssch7/variables#g9">Ch7</A><BR>
+moon, phase of the <A HREF="../ssch13/convince-recur#g11">Ch13</A><BR>
+mutually exclusive <A HREF="../ssch6/true#g108">Ch6</A><BR>
+mutual recursion <A HREF="../ssch18/trees#g16">Ch18</A><BR>
+<A NAME="N"></A>
+named constant <A HREF="../ssch7/variables#g2">Ch7</A><BR>
+naming a value <A HREF="../ssch7/variables#g1">Ch7</A>, <A HREF="../ssch9/lambda#g9">Ch9</A><BR>
+<CODE>newline</CODE> <A HREF="../ssch20/io#g23">Ch20</A>, <A HREF="../ssch22/files#g6">Ch22</A><BR>
+node, branch <A HREF="../ssch18/trees#g4">Ch18</A><BR>
+node, leaf <A HREF="../ssch18/trees#g6">Ch18</A><BR>
+node, root <A HREF="../ssch18/trees#g2">Ch18</A><BR>
+<CODE>not</CODE> <A HREF="../ssch6/true#g88">Ch6</A><BR>
+<CODE>null?</CODE> <A HREF="../ssch17/lists#g6">Ch17</A><BR>
+number, binary <A HREF="../ssch15/adv-recur#g5">Ch15</A><BR>
+<CODE>number?</CODE> <A HREF="../ssch6/true#g78">Ch6</A><BR>
+numbers, Fibonacci <A HREF="../ssch13/convince-recur#g13">Ch13</A><BR>
+<A NAME="O"></A>
+object, end-of-file <A HREF="../ssch22/files#g17">Ch22</A><BR>
+<CODE>odd?</CODE> <A HREF="appendix-funlist#g217">FunList</A><BR>
+<CODE>open-input-file</CODE> <A HREF="../ssch22/files#g12">Ch22</A><BR>
+<CODE>open-output-file</CODE> <A HREF="../ssch22/files#g9">Ch22</A><BR>
+<CODE>or</CODE> <A HREF="../ssch6/true#g93">Ch6</A><BR>
+order of evaluation <A HREF="../ssch3/people#g7">Ch3</A>, <A HREF="../ssch3/people#g11">Ch3</A><BR>
+<A NAME="P"></A>
+parameter, formal <A HREF="../ssch4/defining#g9">Ch4</A><BR>
+parameter, rest <A HREF="../ssch17/lists#g40">Ch17</A><BR>
+parentheses, for cond clauses <A HREF="../ssch6/true#g103">Ch6</A><BR>
+parentheses, for let variables <A HREF="../ssch7/variables#g17">Ch7</A><BR>
+parentheses, for procedure invocation <A HREF="../ssch1/showing#g3">Ch1</A>, <A HREF="../ssch3/people#g9">Ch3</A>, <A HREF="../ssch3/people#g13">Ch3</A>, <A HREF="../ssch8/higher#g37">Ch8</A><BR>
+parent (in spreadsheet program) <A HREF="../ssch25/spread-implement#g21">Ch25</A><BR>
+pattern: <CODE>keep</CODE> <A HREF="../ssch14/recur-patterns#g6">Ch14</A><BR>
+pattern matcher <A HREF="../ssch16/match#g1">Ch16</A><BR>
+pattern, recursive <A HREF="../ssch14/recur-patterns#g2">Ch14</A><BR>
+phase of the moon <A HREF="../ssch13/convince-recur#g10">Ch13</A><BR>
+Pig Latin <A HREF="../ssch1/showing#g13">Ch1</A>, <A HREF="../ssch11/recursion#g7">Ch11</A><BR>
+Pisano, Leonardo <A HREF="../ssch13/convince-recur#g14">Ch13</A><BR>
+plumbing diagram <A HREF="../ssch3/people#g14">Ch3</A>, <A HREF="../ssch3/people#g18">Ch3</A><BR>
+points, bridge <A HREF="../ssch9/bridge#g2">ProjBridge</A><BR>
+prefix notation <A HREF="../ssch18/trees#g32">Ch18</A><BR>
+primitive procedure <A HREF="../ssch1/showing#g7">Ch1</A><BR>
+printed twice, return value <A HREF="../ssch13/convince-recur#g8">Ch13</A><BR>
+printing <A HREF="../ssch20/io#g5">Ch20</A>, <A HREF="../ssch20/io#g50">Ch20</A><BR>
+procedure as argument <A HREF="../ssch8/higher#g6">Ch8</A><BR>
+procedure, compound <A HREF="../ssch1/showing#g8">Ch1</A><BR>
+procedure, helper <A HREF="../ssch14/recur-patterns#g16">Ch14</A><BR>
+procedure, higher-order <A HREF="../ssch19/implement-hof#g1">Ch19</A><BR>
+procedure, initialization <A HREF="../ssch14/recur-patterns#g20">Ch14</A><BR>
+procedure, primitive <A HREF="../ssch1/showing#g6">Ch1</A><BR>
+<CODE>procedure?</CODE> <A HREF="appendix-funlist#g218">FunList</A><BR>
+procedure vs. function <A HREF="../ssch4/defining#g5">Ch4</A>, <A HREF="../ssch8/higher#g7">Ch8</A><BR>
+program, conversational <A HREF="../ssch20/io#g2">Ch20</A><BR>
+programming, functional <A HREF="../ssch2/functions#g2">Ch2</A>, <A HREF="../ssch3/part2#g4">Part2</A>, <A HREF="../ssch7/variables#g5">Ch7</A>, <A HREF="../ssch20/io#g20">Ch20</A><BR>
+programming, imperative <A HREF="../ssch23/vectors#g19">Ch23</A><BR>
+programming, interactive <A HREF="../ssch20/io#g4">Ch20</A><BR>
+programming, symbolic <A HREF="../ssch1/showing#g24">Ch1</A><BR>
+<A NAME="Q"></A>
+quotation marks, double <A HREF="../ssch5/words#g6">Ch5</A><BR>
+<CODE>quote</CODE> <A HREF="../ssch5/words#g2">Ch5</A><BR>
+<CODE>quotient</CODE> <A HREF="appendix-funlist#g219">FunList</A><BR>
+<A NAME="R"></A>
+<CODE>random</CODE> <A HREF="../ssch23/vectors#g7">Ch23</A>, <A HREF="appendix-funlist#g220">FunList</A><BR>
+<CODE>read</CODE> <A HREF="../ssch20/io#g35">Ch20</A>, <A HREF="../ssch22/files#g1">Ch22</A><BR>
+<CODE>read-line</CODE> <A HREF="../ssch20/io#g41">Ch20</A>, <A HREF="../ssch22/files#g2">Ch22</A><BR>
+<CODE>read-string</CODE> <A HREF="../ssch22/files#g33">Ch22</A><BR>
+recursion&nbsp;&nbsp;&nbsp;<EM>see</EM> recursion<BR>
+recursion, mutual <A HREF="../ssch18/trees#g17">Ch18</A><BR>
+recursion, tree <A HREF="../ssch18/trees#g19">Ch18</A><BR>
+recursive case <A HREF="../ssch11/recursion#g3">Ch11</A><BR>
+recursive pattern <A HREF="../ssch14/recur-patterns#g1">Ch14</A><BR>
+<CODE>reduce</CODE> <A HREF="../ssch17/lists#g26">Ch17</A>, <A HREF="../ssch19/implement-hof#g15">Ch19</A><BR>
+Rees, Jonathan <A HREF="../ssch22/files#g27">Ch22</A><BR>
+<CODE>remainder</CODE> <A HREF="appendix-funlist#g221">FunList</A><BR>
+<CODE>repeated</CODE> <A HREF="../ssch8/higher#g30">Ch8</A><BR>
+replacement, result <A HREF="../ssch3/people#g11">Ch3</A>, <A HREF="../ssch3/people#g15">Ch3</A><BR>
+rest parameter <A HREF="../ssch17/lists#g39">Ch17</A><BR>
+result replacement <A HREF="../ssch3/people#g10">Ch3</A>, <A HREF="../ssch3/people#g14">Ch3</A><BR>
+root node <A HREF="../ssch18/trees#g1">Ch18</A><BR>
+<CODE>round</CODE> <A HREF="appendix-funlist#g222">FunList</A><BR>
+<A NAME="S"></A>
+Scheme, extensions to <A HREF="../ssch5/words#g7">Ch5</A>, <A HREF="appendix-simply#g15">InitFile</A><BR>
+<CODE>se</CODE> <A HREF="../ssch5/words#g24">Ch5</A><BR>
+self-evaluating expression <A HREF="../ssch3/people#g6">Ch3</A>, <A HREF="../ssch3/people#g10">Ch3</A>, <A HREF="../ssch5/words#g18">Ch5</A>, <A HREF="../ssch5/words#g25">Ch5</A><BR>
+<CODE>sentence</CODE> <A HREF="../ssch5/words#g23">Ch5</A><BR>
+<CODE>sentence?</CODE> <A HREF="../ssch6/true#g81">Ch6</A><BR>
+sentence, empty <A HREF="../ssch5/words#g15">Ch5</A>, <A HREF="../ssch6/true#g68">Ch6</A><BR>
+<CODE>show</CODE> <A HREF="../ssch20/io#g6">Ch20</A>, <A HREF="../ssch22/files#g4">Ch22</A>, <A HREF="../ssch22/files#g10">Ch22</A><BR>
+<CODE>show-line</CODE> <A HREF="../ssch20/io#g42">Ch20</A>, <A HREF="../ssch22/files#g5">Ch22</A><BR>
+side effect <A HREF="../ssch20/io#g9">Ch20</A><BR>
+simplifying base cases <A HREF="../ssch12/leap#g4">Ch12</A><BR>
+<CODE>sin</CODE> <A HREF="appendix-funlist#g223">FunList</A><BR>
+special form <A HREF="../ssch4/defining#g3">Ch4</A>, <A HREF="../ssch5/words#g3">Ch5</A>, <A HREF="../ssch6/true#g91">Ch6</A>, <A HREF="../ssch6/true#g94">Ch6</A>, <A HREF="../ssch6/true#g99">Ch6</A>, <A HREF="../ssch7/variables#g14">Ch7</A>, <A HREF="../ssch9/lambda#g4">Ch9</A>, <A HREF="../ssch13/convince-recur#g16">Ch13</A>, <A HREF="../ssch20/io#g16">Ch20</A><BR>
+<CODE>sqrt</CODE> <A HREF="appendix-funlist#g224">FunList</A><BR>
+string <A HREF="../ssch5/words#g19">Ch5</A><BR>
+<EM>Structure and Interpretation of Computer Programs</EM> <A HREF="../ssch26/preview#g1">Ch26</A><BR>
+structure, data <A HREF="../ssch10/ttt#g3">Ch10</A><BR>
+structured list <A HREF="../ssch17/lists#g3">Ch17</A>, <A HREF="../ssch19/implement-hof#g19">Ch19</A><BR>
+substitution <A HREF="../ssch7/variables#g12">Ch7</A><BR>
+substitution model and global variables <A HREF="../ssch9/lambda#g11">Ch9</A><BR>
+Sussman, Gerald Jay <A HREF="../ssch13/convince-recur#g3">Ch13</A>, <A HREF="../ssch26/preview#g3">Ch26</A><BR>
+Sussman, Julie <A HREF="../ssch13/convince-recur#g4">Ch13</A>, <A HREF="../ssch26/preview#g4">Ch26</A><BR>
+symbolic programming <A HREF="../ssch1/showing#g23">Ch1</A><BR>
+<A NAME="T"></A>
+<CODE>trace</CODE> <A HREF="../ssch13/convince-recur#g7">Ch13</A><BR>
+tree recursion <A HREF="../ssch18/trees#g18">Ch18</A><BR>
+type, abstract <A HREF="../ssch16/match#g15">Ch16</A>, <A HREF="../ssch17/lists#g17">Ch17</A>, <A HREF="../ssch18/trees#g30">Ch18</A>, <A HREF="../ssch25/spread-implement#g1">Ch25</A><BR>
+<A NAME="U"></A>
+unnamed function <A HREF="../ssch9/lambda#g18">Ch9</A><BR>
+<CODE>untrace</CODE> <A HREF="../ssch13/convince-recur#g9">Ch13</A><BR>
+user interface <A HREF="../ssch20/io#g46">Ch20</A><BR>
+<A NAME="V"></A>
+value, actual argument <A HREF="../ssch4/defining#g15">Ch4</A><BR>
+variable, global <A HREF="../ssch9/lambda#g13">Ch9</A><BR>
+variable, local <A HREF="../ssch7/variables#g11">Ch7</A><BR>
+variable number of arguments <A HREF="../ssch17/lists#g35">Ch17</A><BR>
+<CODE>vector</CODE> <A HREF="../ssch23/vectors#g14">Ch23</A><BR>
+<CODE>vector?</CODE> <A HREF="../ssch23/vectors#g16">Ch23</A><BR>
+<CODE>vector-fill!</CODE> <A HREF="../ssch23/vectors#g21">Ch23</A><BR>
+<CODE>vector-&gt;list</CODE> <A HREF="../ssch23/vectors#g10">Ch23</A><BR>
+<CODE>vector-length</CODE> <A HREF="../ssch23/vectors#g15">Ch23</A><BR>
+<CODE>vector-ref</CODE> <A HREF="../ssch23/vectors#g4">Ch23</A><BR>
+<CODE>vector-set!</CODE> <A HREF="../ssch23/vectors#g3">Ch23</A><BR>
+<A NAME="W"></A>
+<CODE>word</CODE> <A HREF="../ssch5/words#g22">Ch5</A><BR>
+<CODE>word?</CODE> <A HREF="../ssch6/true#g80">Ch6</A><BR>
+word, empty <A HREF="../ssch5/words#g16">Ch5</A><BR>
+Wright, Matthew <A HREF="../ssch13/convince-recur#g6">Ch13</A><BR>
+<CODE>write</CODE> <A HREF="../ssch22/files#g38">Ch22</A>
+
+
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="category.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/appuindex.html b/js/games/nluqo.github.io/~bh/ssch27/appuindex.html
new file mode 100644
index 0000000..379b907
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/appuindex.html
@@ -0,0 +1,474 @@
+<P>
+
+<P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Index of Defined Procedures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Index of Defined Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="glossary.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>This index contains example procedures whose definitions are in the text and
+procedures that you are asked to write as exercises.  (The exercises are
+marked as such in the index.)  Other sources of information are the general
+index, which contains technical terms and primitive procedures (for which
+there is no Scheme definition); the glossary, which defines many technical
+terms; and the Alphabetical Table of Scheme Primitives on page <A HREF="appendix-funlist.html#funlist">funlist</A>.
+
+<P><BR>
+<A HREF="appuindex.html#A">A</A> <A HREF="appuindex.html#B">B</A> <A HREF="appuindex.html#C">C</A> <A HREF="appuindex.html#D">D</A> <A HREF="appuindex.html#E">E</A> <A HREF="appuindex.html#F">F</A> <A HREF="appuindex.html#G">G</A> <A HREF="appuindex.html#H">H</A> <A HREF="appuindex.html#I">I</A> <A HREF="appuindex.html#J">J</A> <A HREF="appuindex.html#K">K</A> <A HREF="appuindex.html#L">L</A> <A HREF="appuindex.html#M">M</A> <A HREF="appuindex.html#N">N</A> <A HREF="appuindex.html#O">O</A> <A HREF="appuindex.html#P">P</A> <A HREF="appuindex.html#Q">Q</A> <A HREF="appuindex.html#R">R</A> <A HREF="appuindex.html#S">S</A> <A HREF="appuindex.html#T">T</A> <A HREF="appuindex.html#U">U</A> <A HREF="appuindex.html#V">V</A> <A HREF="appuindex.html#W">W</A> X Y Z
+
+<P><BR>
+<A NAME="A"></A>
+<CODE>abs</CODE> <A HREF="../ssch6/true#g82">Ch6</A><BR>
+<CODE>accumulate</CODE> <A HREF="../ssch19/implement-hof#g16">Ch19</A><BR>
+<CODE>acronym</CODE> <A HREF="../ssch1/showing#g10">Ch1</A>, <A HREF="../ssch1/showing#g11">Ch1</A>, <A HREF="../ssch8/higher#g26">Ch8</A>, <A HREF="../ssch14/recur-patterns#g14">Ch14</A><BR>
+<CODE>add</CODE> <A HREF="../ssch16/match#g12">Ch16</A><BR>
+<CODE>add-field</CODE> <A HREF="../ssch25/database#g28">ProjDB</A><BR>
+<CODE>add-move</CODE> <A HREF="../ssch20/io#g33">Ch20</A><BR>
+<CODE>add-numbers</CODE> <A HREF="../ssch8/higher#g22">Ch8</A>, <A HREF="../ssch14/recur-patterns#g11">Ch14</A><BR>
+<CODE>add-three</CODE> <A HREF="../ssch9/lambda#g2">Ch9</A><BR>
+<CODE>add-three-to-each</CODE> <A HREF="../ssch9/lambda#g3">Ch9</A><BR>
+<CODE>addup</CODE> <A HREF="../ssch14/recur-patterns#g8">Ch14</A><BR>
+<CODE>all-evaluated?</CODE> <A HREF="../ssch25/spread-implement#g26">Ch25</A><BR>
+<CODE>already-won?</CODE> <A HREF="../ssch20/io#g31">Ch20</A><BR>
+<CODE>already-won?</CODE> (exercise) <A HREF="../ssch10/ttt#g28">Ch10</A><BR>
+<CODE>always-one</CODE> <A HREF="../ssch8/higher#g24">Ch8</A><BR>
+<CODE>amazify</CODE> (exercise) <A HREF="../ssch8/higher#g42">Ch8</A><BR>
+<CODE>american-time</CODE> (exercise) <A HREF="../ssch6/true#g115">Ch6</A><BR>
+<CODE>any-numbers?</CODE> <A HREF="../ssch8/higher#g34">Ch8</A><BR>
+<CODE>aplize</CODE> (exercise) <A HREF="../ssch9/lambda#g43">Ch9</A><BR>
+<CODE>apl-sqrt</CODE> (exercise) <A HREF="../ssch9/lambda#g44">Ch9</A><BR>
+<CODE>appearances</CODE> (exercise) <A HREF="../ssch9/lambda#g35">Ch9</A><BR>
+<CODE>arabic</CODE> (exercise) <A HREF="../ssch12/leap#g14">Ch12</A><BR>
+<CODE>area</CODE> <A HREF="../ssch19/implement-hof#g9">Ch19</A><BR>
+<CODE>arg-count</CODE> <A HREF="../ssch21/functions-implement#g6">Ch21</A><BR>
+<CODE>ask</CODE> <A HREF="../ssch25/database#g17">ProjDB</A><BR>
+<CODE>ask-for-name</CODE> <A HREF="../ssch20/io#g49">Ch20</A><BR>
+<CODE>ask-question</CODE> <A HREF="../ssch20/io#g51">Ch20</A><BR>
+<CODE>ask-user</CODE> <A HREF="../ssch20/io#g34">Ch20</A><BR>
+<CODE>average</CODE> <A HREF="../ssch4/defining#g17">Ch4</A><BR>
+<A NAME="B"></A>
+<CODE>backwards</CODE> <A HREF="../ssch9/lambda#g24">Ch9</A><BR>
+<CODE>base-grade</CODE> (exercise) <A HREF="../ssch8/higher#g48">Ch8</A>, <A HREF="../ssch12/leap#g9">Ch12</A><BR>
+<CODE>beatle-number</CODE> <A HREF="../ssch8/higher#g36">Ch8</A><BR>
+<CODE>before-in-list?</CODE> (exercise) <A HREF="../ssch17/lists#g46">Ch17</A><BR>
+<CODE>best-free-square</CODE> <A HREF="../ssch10/ttt#g26">Ch10</A><BR>
+<CODE>best-move</CODE> <A HREF="../ssch10/ttt#g23">Ch10</A><BR>
+<CODE>best-square</CODE> <A HREF="../ssch10/ttt#g24">Ch10</A><BR>
+<CODE>best-square-helper</CODE> <A HREF="../ssch10/ttt#g25">Ch10</A><BR>
+<CODE>bill</CODE> (exercise) <A HREF="../ssch23/vectors#g28">Ch23</A><BR>
+<CODE>bottles</CODE> <A HREF="../ssch20/io#g7">Ch20</A><BR>
+<CODE>bound-check</CODE> <A HREF="../ssch25/spread-implement#g19">Ch25</A><BR>
+<CODE>branch</CODE> (exercise) <A HREF="../ssch17/lists#g48">Ch17</A><BR>
+<CODE>bridge-val</CODE> <A HREF="../ssch9/bridge#g9">ProjBridge</A><BR>
+<CODE>butfirst</CODE> <A HREF="../ssch17/lists#g20">Ch17</A><BR>
+<CODE>butlast</CODE> <A HREF="../ssch17/lists#g21">Ch17</A><BR>
+<CODE>buzz</CODE> <A HREF="../ssch6/true#g85">Ch6</A><BR>
+<A NAME="C"></A>
+<CODE>card-list</CODE> <A HREF="../ssch23/vectors#g8">Ch23</A><BR>
+<CODE>card-val</CODE> <A HREF="../ssch9/bridge#g3">ProjBridge</A><BR>
+<CODE>cell-children</CODE> <A HREF="../ssch25/spread-implement#g41">Ch25</A><BR>
+<CODE>cell-expr</CODE> <A HREF="../ssch25/spread-implement#g37">Ch25</A><BR>
+<CODE>cell-parents</CODE> <A HREF="../ssch25/spread-implement#g39">Ch25</A><BR>
+<CODE>cell-structure</CODE> <A HREF="../ssch25/spread-implement#g33">Ch25</A><BR>
+<CODE>cell-value</CODE> <A HREF="../ssch25/spread-implement#g35">Ch25</A><BR>
+<CODE>char-count</CODE> <A HREF="../ssch22/files#g29">Ch22</A><BR>
+<CODE>children</CODE> <A HREF="../ssch18/trees#g27">Ch18</A><BR>
+<CODE>choices</CODE> <A HREF="../ssch1/showing#g19">Ch1</A><BR>
+<CODE>choose-beatles</CODE> (exercise) <A HREF="../ssch8/higher#g38">Ch8</A><BR>
+<CODE>choose-win</CODE> <A HREF="../ssch10/ttt#g12">Ch10</A><BR>
+<CODE>circle-area</CODE> <A HREF="../ssch9/lambda#g20">Ch9</A>, <A HREF="../ssch19/implement-hof#g6">Ch19</A><BR>
+<CODE>circumference</CODE> <A HREF="../ssch9/lambda#g21">Ch9</A><BR>
+<CODE>cities</CODE> <A HREF="../ssch18/trees#g11">Ch18</A><BR>
+<CODE>clear-current-db!</CODE> <A HREF="../ssch25/database#g23">ProjDB</A><BR>
+<CODE>combinations</CODE> <A HREF="../ssch1/showing#g21">Ch1</A><BR>
+<CODE>command-loop</CODE> <A HREF="../ssch25/spread-implement#g5">Ch25</A><BR>
+<CODE>common-words</CODE> (exercise) <A HREF="../ssch9/lambda#g34">Ch9</A><BR>
+<CODE>compose</CODE> (exercise) <A HREF="../ssch9/lambda#g38">Ch9</A><BR>
+<CODE>compute</CODE> <A HREF="../ssch18/trees#g35">Ch18</A><BR>
+<CODE>concatenate</CODE> (exercise) <A HREF="../ssch22/files#g40">Ch22</A><BR>
+<CODE>converse</CODE> (exercise) <A HREF="../ssch20/io#g52">Ch20</A><BR>
+<CODE>copies</CODE> <A HREF="../ssch14/recur-patterns#g23">Ch14</A><BR>
+<CODE>copies</CODE> (exercise) <A HREF="../ssch11/recursion#g16">Ch11</A><BR>
+<CODE>count-adjacent-duplicates</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g32">Ch14</A><BR>
+<CODE>count</CODE> <A HREF="../ssch8/higher#g25">Ch8</A><BR>
+<CODE>count-db</CODE> <A HREF="../ssch25/database#g18">ProjDB</A><BR>
+<CODE>countdown</CODE> (exercise) <A HREF="../ssch11/recursion#g15">Ch11</A><BR>
+<CODE>count-leaves</CODE> <A HREF="../ssch18/trees#g12">Ch18</A>, <A HREF="../ssch18/trees#g14">Ch18</A><BR>
+<CODE>count-leaves-in-forest</CODE> <A HREF="../ssch18/trees#g15">Ch18</A><BR>
+<CODE>count-nodes</CODE> (exercise) <A HREF="../ssch18/trees#g37">Ch18</A><BR>
+<CODE>count-suit</CODE> <A HREF="../ssch9/bridge#g5">ProjBridge</A><BR>
+<CODE>count-ums</CODE> (exercise) <A HREF="../ssch8/higher#g49">Ch8</A>, <A HREF="../ssch11/recursion#g12">Ch11</A><BR>
+<CODE>current-db</CODE> <A HREF="../ssch25/database#g9">ProjDB</A><BR>
+<CODE>current-fields</CODE> <A HREF="../ssch25/database#g11">ProjDB</A><BR>
+<A NAME="D"></A>
+<CODE>datum</CODE> <A HREF="../ssch18/trees#g26">Ch18</A><BR>
+<CODE>db-fields</CODE> <A HREF="../ssch25/database#g4">ProjDB</A><BR>
+<CODE>db-filename</CODE> <A HREF="../ssch25/database#g2">ProjDB</A><BR>
+<CODE>db-insert</CODE> <A HREF="../ssch25/database#g14">ProjDB</A><BR>
+<CODE>db-records</CODE> <A HREF="../ssch25/database#g6">ProjDB</A><BR>
+<CODE>db-set-fields!</CODE> <A HREF="../ssch25/database#g5">ProjDB</A><BR>
+<CODE>db-set-filename!</CODE> <A HREF="../ssch25/database#g3">ProjDB</A><BR>
+<CODE>db-set-records!</CODE> <A HREF="../ssch25/database#g7">ProjDB</A><BR>
+<CODE>deep-appearances</CODE> <A HREF="../ssch17/lists#g41">Ch17</A><BR>
+<CODE>deep-map</CODE> <A HREF="../ssch19/implement-hof#g21">Ch19</A><BR>
+<CODE>deep-pigl</CODE> <A HREF="../ssch17/lists#g42">Ch17</A>, <A HREF="../ssch19/implement-hof#g18">Ch19</A><BR>
+<CODE>depth</CODE> (exercise) <A HREF="../ssch18/trees#g36">Ch18</A><BR>
+<CODE>describe</CODE> (exercise) <A HREF="../ssch9/lambda#g29">Ch9</A><BR>
+<CODE>describe-time</CODE> (exercise) <A HREF="../ssch6/true#g124">Ch6</A>, <A HREF="../ssch12/leap#g15">Ch12</A><BR>
+<CODE>differences</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g30">Ch14</A><BR>
+<CODE>disjoint-pairs</CODE> <A HREF="../ssch14/recur-patterns#g4">Ch14</A><BR>
+<CODE>divisible?</CODE> <A HREF="../ssch6/true#g86">Ch6</A><BR>
+<CODE>double</CODE> <A HREF="../ssch8/higher#g10">Ch8</A>, <A HREF="../ssch8/higher#g31">Ch8</A><BR>
+<CODE>doubles</CODE> <A HREF="../ssch14/recur-patterns#g7">Ch14</A><BR>
+<CODE>down</CODE> <A HREF="../ssch12/leap#g6">Ch12</A><BR>
+<CODE>downup</CODE> <A HREF="../ssch11/recursion#g1">Ch11</A>, <A HREF="../ssch11/recursion#g2">Ch11</A>, <A HREF="../ssch12/leap#g2">Ch12</A><BR>
+<A NAME="E"></A>
+<CODE>earliest-word</CODE> <A HREF="../ssch15/adv-recur#g2">Ch15</A><BR>
+<CODE>echo</CODE> <A HREF="../ssch20/io#g36">Ch20</A><BR>
+<CODE>edit-record</CODE> <A HREF="../ssch25/database#g20">ProjDB</A><BR>
+<CODE>effect</CODE> <A HREF="../ssch20/io#g11">Ch20</A><BR>
+<CODE>ends-e?</CODE> <A HREF="../ssch8/higher#g17">Ch8</A><BR>
+<CODE>ends</CODE> (exercise) <A HREF="../ssch5/words#g32">Ch5</A><BR>
+<CODE>ends-vowel?</CODE> (exercise) <A HREF="../ssch8/higher#g39">Ch8</A><BR>
+<CODE>european-time</CODE> (exercise) <A HREF="../ssch6/true#g114">Ch6</A><BR>
+<CODE>even-count?</CODE> (exercise) <A HREF="../ssch8/higher#g40">Ch8</A><BR>
+<CODE>evens</CODE> <A HREF="../ssch12/leap#g3">Ch12</A><BR>
+<CODE>every</CODE> <A HREF="../ssch19/implement-hof#g10">Ch19</A><BR>
+<CODE>every-nth</CODE> <A HREF="../ssch14/recur-patterns#g17">Ch14</A><BR>
+<CODE>every-nth-helper</CODE> <A HREF="../ssch14/recur-patterns#g18">Ch14</A>, <A HREF="../ssch14/recur-patterns#g24">Ch14</A><BR>
+<CODE>exaggerate</CODE> (exercise) <A HREF="../ssch8/higher#g45">Ch8</A>, <A HREF="../ssch12/leap#g7">Ch12</A><BR>
+<CODE>execute-command</CODE> <A HREF="../ssch25/spread-implement#g7">Ch25</A><BR>
+<CODE>exhibit</CODE> <A HREF="../ssch25/spread-implement#g8">Ch25</A><BR>
+<CODE>explode</CODE> <A HREF="../ssch11/recursion#g10">Ch11</A><BR>
+<CODE>extract-digit</CODE> <A HREF="../ssch10/ttt#g19">Ch10</A><BR>
+<CODE>extract-ids</CODE> <A HREF="../ssch25/spread-implement#g24">Ch25</A><BR>
+<CODE>extra-spaces</CODE> <A HREF="../ssch22/files#g30">Ch22</A><BR>
+<A NAME="F"></A>
+<CODE>factorial</CODE> <A HREF="../ssch1/showing#g25">Ch1</A>, <A HREF="../ssch12/leap#g1">Ch12</A><BR>
+<CODE>fib</CODE> <A HREF="../ssch13/convince-recur#g15">Ch13</A><BR>
+<CODE>figure</CODE> <A HREF="../ssch25/spread-implement#g25">Ch25</A><BR>
+<CODE>file-map</CODE> <A HREF="../ssch22/files#g21">Ch22</A><BR>
+<CODE>file-map-helper</CODE> <A HREF="../ssch22/files#g22">Ch22</A><BR>
+<CODE>filemerge</CODE> <A HREF="../ssch22/files#g35">Ch22</A><BR>
+<CODE>filemerge-helper</CODE> <A HREF="../ssch22/files#g36">Ch22</A><BR>
+<CODE>fill-array-with-rows</CODE> <A HREF="../ssch25/spread-implement#g45">Ch25</A><BR>
+<CODE>fill-row-with-cells</CODE> <A HREF="../ssch25/spread-implement#g46">Ch25</A><BR>
+<CODE>filter</CODE> <A HREF="../ssch19/implement-hof#g13">Ch19</A><BR>
+<CODE>find-triples</CODE> <A HREF="../ssch10/ttt#g6">Ch10</A><BR>
+<CODE>first-choice</CODE> <A HREF="../ssch10/ttt#g27">Ch10</A><BR>
+<CODE>first</CODE> <A HREF="../ssch17/lists#g18">Ch17</A><BR>
+<CODE>first-if-any</CODE> <A HREF="../ssch10/ttt#g15">Ch10</A><BR>
+<CODE>first-last</CODE> (exercise) <A HREF="../ssch9/lambda#g37">Ch9</A><BR>
+<CODE>first-letters</CODE> <A HREF="../ssch8/higher#g4">Ch8</A><BR>
+<CODE>first-number</CODE> <A HREF="../ssch14/recur-patterns#g21">Ch14</A><BR>
+<CODE>first-two</CODE> (exercise) <A HREF="../ssch5/words#g28">Ch5</A><BR>
+<CODE>flatten</CODE> (exercise) <A HREF="../ssch17/lists#g47">Ch17</A><BR>
+<CODE>flip</CODE> <A HREF="../ssch9/lambda#g8">Ch9</A><BR>
+<CODE>fourth-power</CODE> <A HREF="../ssch9/lambda#g16">Ch9</A><BR>
+<CODE>from-binary</CODE> <A HREF="../ssch15/adv-recur#g6">Ch15</A>, <A HREF="../ssch15/adv-recur#g7">Ch15</A><BR>
+<CODE>functions-loop</CODE> <A HREF="../ssch21/functions-implement#g2">Ch21</A><BR>
+<A NAME="G"></A>
+<CODE>generic-before?</CODE> <A HREF="../ssch25/database#g26">ProjDB</A><BR>
+<CODE>gertrude</CODE> (exercise) <A HREF="../ssch7/variables#g18">Ch7</A><BR>
+<CODE>get</CODE> <A HREF="../ssch25/database#g24">ProjDB</A><BR>
+<CODE>get-arg</CODE> <A HREF="../ssch21/functions-implement#g15">Ch21</A><BR>
+<CODE>get-args</CODE> <A HREF="../ssch21/functions-implement#g3">Ch21</A><BR>
+<CODE>get-fn</CODE> <A HREF="../ssch21/functions-implement#g16">Ch21</A><BR>
+<CODE>get-record</CODE> <A HREF="../ssch25/database#g15">ProjDB</A><BR>
+<CODE>get-record-loop</CODE> <A HREF="../ssch25/database#g16">ProjDB</A><BR>
+<CODE>get-song</CODE> <A HREF="../ssch22/files#g14">Ch22</A><BR>
+<CODE>get-value</CODE> <A HREF="../ssch16/match#g10">Ch16</A><BR>
+<CODE>global-array-lookup</CODE> <A HREF="../ssch25/spread-implement#g34">Ch25</A><BR>
+<CODE>gpa</CODE> (exercise) <A HREF="../ssch8/higher#g47">Ch8</A>, <A HREF="../ssch12/leap#g8">Ch12</A><BR>
+<CODE>greet</CODE> <A HREF="../ssch6/true#g63">Ch6</A><BR>
+<CODE>greet</CODE> (exercise) <A HREF="../ssch6/true#g123">Ch6</A><BR>
+<A NAME="H"></A>
+<CODE>hand-dist-points</CODE> <A HREF="../ssch9/bridge#g8">ProjBridge</A><BR>
+<CODE>hang</CODE> (exercise) <A HREF="../ssch9/lambda#g32">Ch9</A><BR>
+<CODE>hang-letter</CODE> (exercise) <A HREF="../ssch9/lambda#g33">Ch9</A><BR>
+<CODE>has-vowel?</CODE> <A HREF="../ssch14/recur-patterns#g13">Ch14</A><BR>
+<CODE>hexagon-area</CODE> <A HREF="../ssch19/implement-hof#g8">Ch19</A><BR>
+<CODE>high-card-points</CODE> <A HREF="../ssch9/bridge#g4">ProjBridge</A><BR>
+<CODE>hyphenate</CODE> <A HREF="../ssch8/higher#g21">Ch8</A><BR>
+<CODE>hypotenuse</CODE> <A HREF="../ssch4/defining#g20">Ch4</A>, <A HREF="../ssch7/variables#g7">Ch7</A><BR>
+<A NAME="I"></A>
+<CODE>i-can-advance?</CODE> <A HREF="../ssch10/ttt#g22">Ch10</A><BR>
+<CODE>i-can-fork?</CODE> <A HREF="../ssch10/ttt#g14">Ch10</A><BR>
+<CODE>i-can-win?</CODE> <A HREF="../ssch10/ttt#g11">Ch10</A><BR>
+<CODE>increasing?</CODE> <A HREF="../ssch17/lists#g37">Ch17</A><BR>
+<CODE>indef-article</CODE> (exercise) <A HREF="../ssch6/true#g118">Ch6</A><BR>
+<CODE>in-domain?</CODE> <A HREF="../ssch21/functions-implement#g8">Ch21</A><BR>
+<CODE>in-forest?</CODE> <A HREF="../ssch18/trees#g22">Ch18</A><BR>
+<CODE>init-array</CODE> <A HREF="../ssch25/spread-implement#g44">Ch25</A><BR>
+<CODE>initialize-lap-vector</CODE> <A HREF="../ssch23/vectors#g5">Ch23</A><BR>
+<CODE>initials</CODE> (exercise) <A HREF="../ssch11/recursion#g14">Ch11</A><BR>
+<CODE>insert</CODE> <A HREF="../ssch25/database#g13">ProjDB</A><BR>
+<CODE>insert-and</CODE> (exercise) <A HREF="../ssch5/words#g33">Ch5</A><BR>
+<CODE>integer-quotient</CODE> <A HREF="../ssch6/true#g98">Ch6</A><BR>
+<CODE>in-tree?</CODE> <A HREF="../ssch18/trees#g20">Ch18</A>, <A HREF="../ssch18/trees#g21">Ch18</A><BR>
+<CODE>item</CODE> <A HREF="../ssch8/higher#g33">Ch8</A><BR>
+<A NAME="J"></A>
+<CODE>join</CODE> (exercise) <A HREF="../ssch22/files#g43">Ch22</A><BR>
+<CODE>justify</CODE> <A HREF="../ssch22/files#g28">Ch22</A><BR>
+<A NAME="K"></A>
+<CODE>keeper</CODE> <A HREF="../ssch9/lambda#g26">Ch9</A><BR>
+<CODE>keep-h</CODE> <A HREF="../ssch9/lambda#g25">Ch9</A><BR>
+<CODE>knight</CODE> (exercise) <A HREF="../ssch5/words#g31">Ch5</A><BR>
+<A NAME="L"></A>
+<CODE>lap</CODE> <A HREF="../ssch23/vectors#g6">Ch23</A><BR>
+<CODE>last</CODE> <A HREF="../ssch17/lists#g19">Ch17</A><BR>
+<CODE>lastfirst</CODE> <A HREF="../ssch22/files#g24">Ch22</A><BR>
+<CODE>leader</CODE> (exercise) <A HREF="../ssch23/vectors#g26">Ch23</A><BR>
+<CODE>leaf</CODE> <A HREF="../ssch18/trees#g10">Ch18</A><BR>
+<CODE>leaf?</CODE> <A HREF="../ssch18/trees#g13">Ch18</A><BR>
+<CODE>let-it-be</CODE> (exercise) <A HREF="../ssch9/lambda#g27">Ch9</A><BR>
+<CODE>letter-count</CODE> (exercise) <A HREF="../ssch8/higher#g44">Ch8</A>, <A HREF="../ssch14/recur-patterns#g29">Ch14</A><BR>
+<CODE>letter-pairs</CODE> <A HREF="../ssch11/recursion#g11">Ch11</A>, <A HREF="../ssch14/recur-patterns#g3">Ch14</A><BR>
+<CODE>letterwords</CODE> (exercise) <A HREF="../ssch9/lambda#g31">Ch9</A><BR>
+<CODE>list-db</CODE> <A HREF="../ssch25/database#g19">ProjDB</A><BR>
+<CODE>list-&gt;vector</CODE> <A HREF="../ssch23/vectors#g17">Ch23</A><BR>
+<CODE>lm-helper</CODE> <A HREF="../ssch16/match#g8">Ch16</A><BR>
+<CODE>load-db</CODE> <A HREF="../ssch25/database#g22">ProjDB</A><BR>
+<CODE>locate</CODE> <A HREF="../ssch18/trees#g23">Ch18</A><BR>
+<CODE>locate-in-forest</CODE> <A HREF="../ssch18/trees#g24">Ch18</A><BR>
+<CODE>location</CODE> <A HREF="../ssch20/io#g28">Ch20</A><BR>
+<CODE>location</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g31">Ch14</A><BR>
+<CODE>longest-match</CODE> <A HREF="../ssch16/match#g7">Ch16</A><BR>
+<CODE>lookup</CODE> <A HREF="../ssch16/match#g9">Ch16</A>, <A HREF="../ssch17/lists#g12">Ch17</A><BR>
+<CODE>lookup</CODE> (exercise) <A HREF="../ssch22/files#g41">Ch22</A><BR>
+<CODE>lots-of-effect</CODE> <A HREF="../ssch20/io#g13">Ch20</A><BR>
+<CODE>lots-of-value</CODE> <A HREF="../ssch20/io#g14">Ch20</A><BR>
+<A NAME="M"></A>
+<CODE>make-adder</CODE> <A HREF="../ssch9/lambda#g6">Ch9</A><BR>
+<CODE>make-db</CODE> <A HREF="../ssch25/database#g1">ProjDB</A><BR>
+<CODE>make-deck</CODE> <A HREF="../ssch23/vectors#g11">Ch23</A><BR>
+<CODE>make-node</CODE> <A HREF="../ssch18/trees#g25">Ch18</A><BR>
+<CODE>map</CODE> <A HREF="../ssch19/implement-hof#g11">Ch19</A><BR>
+<CODE>match</CODE> <A HREF="../ssch16/match#g4">Ch16</A><BR>
+<CODE>match-special</CODE> <A HREF="../ssch16/match#g6">Ch16</A><BR>
+<CODE>match-using-known-values</CODE> <A HREF="../ssch16/match#g5">Ch16</A><BR>
+<CODE>max2</CODE> (exercise) <A HREF="../ssch17/lists#g44">Ch17</A><BR>
+<CODE>maybe-display</CODE> <A HREF="../ssch20/io#g39">Ch20</A><BR>
+<CODE>member-types-ok?</CODE> <A HREF="../ssch21/functions-implement#g10">Ch21</A><BR>
+<CODE>merge</CODE> <A HREF="../ssch15/adv-recur#g9">Ch15</A><BR>
+<CODE>merge</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g35">Ch14</A><BR>
+<CODE>merge-copy</CODE> <A HREF="../ssch22/files#g37">Ch22</A><BR>
+<CODE>merge-db</CODE> <A HREF="../ssch25/database#g29">ProjDB</A><BR>
+<CODE>mergesort</CODE> <A HREF="../ssch15/adv-recur#g8">Ch15</A><BR>
+<CODE>middle-names</CODE> (exercise) <A HREF="../ssch5/words#g34">Ch5</A><BR>
+<CODE>music-critic</CODE> <A HREF="../ssch20/io#g43">Ch20</A><BR>
+<CODE>my-pair?</CODE> <A HREF="../ssch10/ttt#g8">Ch10</A><BR>
+<CODE>my-single?</CODE> <A HREF="../ssch10/ttt#g17">Ch10</A><BR>
+<CODE>mystery</CODE> (exercise) <A HREF="../ssch17/lists#g43">Ch17</A><BR>
+<A NAME="N"></A>
+<CODE>named-every</CODE> <A HREF="../ssch21/functions-implement#g11">Ch21</A><BR>
+<CODE>named-keep</CODE> <A HREF="../ssch21/functions-implement#g12">Ch21</A><BR>
+<CODE>name-table</CODE> <A HREF="../ssch20/io#g45">Ch20</A><BR>
+<CODE>new-db</CODE> <A HREF="../ssch25/database#g12">ProjDB</A><BR>
+<CODE>no-db?</CODE> <A HREF="../ssch25/database#g8">ProjDB</A><BR>
+<CODE>number-name</CODE> <A HREF="../ssch14/number-name#g1">ProjSpell</A><BR>
+<CODE>number-of-arguments</CODE> <A HREF="../ssch21/functions-implement#g13">Ch21</A><BR>
+<CODE>numbers</CODE> (exercise) <A HREF="../ssch12/leap#g11">Ch12</A><BR>
+<CODE>num-divisible-by-4?</CODE> <A HREF="../ssch6/true#g97">Ch6</A><BR>
+<A NAME="O"></A>
+<CODE>odds</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g28">Ch14</A><BR>
+<CODE>one-half</CODE> <A HREF="../ssch15/adv-recur#g10">Ch15</A><BR>
+<CODE>opponent-can-win?</CODE> <A HREF="../ssch10/ttt#g13">Ch10</A><BR>
+<CODE>opponent</CODE> <A HREF="../ssch10/ttt#g9">Ch10</A><BR>
+<CODE>order</CODE> <A HREF="../ssch17/lists#g1">Ch17</A><BR>
+<CODE>order</CODE> (exercise) <A HREF="../ssch23/vectors#g27">Ch23</A><BR>
+<CODE>other-half</CODE> <A HREF="../ssch15/adv-recur#g11">Ch15</A><BR>
+<A NAME="P"></A>
+<CODE>pad</CODE> <A HREF="../ssch22/files#g31">Ch22</A><BR>
+<CODE>page</CODE> (exercise) <A HREF="../ssch22/files#g42">Ch22</A><BR>
+<CODE>parse</CODE> <A HREF="../ssch18/trees#g34">Ch18</A><BR>
+<CODE>parse-scheme</CODE> (exercise) <A HREF="../ssch18/trees#g39">Ch18</A><BR>
+<CODE>phone-spell</CODE> (exercise) <A HREF="../ssch15/adv-recur#g16">Ch15</A><BR>
+<CODE>phone-unspell</CODE> (exercise) <A HREF="../ssch8/higher#g50">Ch8</A>, <A HREF="../ssch11/recursion#g13">Ch11</A><BR>
+<CODE>pi</CODE> <A HREF="../ssch9/lambda#g19">Ch9</A><BR>
+<CODE>pigl</CODE> <A HREF="../ssch1/showing#g15">Ch1</A>, <A HREF="../ssch11/recursion#g9">Ch11</A><BR>
+<CODE>pin-down</CODE> <A HREF="../ssch25/spread-implement#g18">Ch25</A><BR>
+<CODE>pin-down-cell</CODE> <A HREF="../ssch25/spread-implement#g20">Ch25</A><BR>
+<CODE>pivots</CODE> <A HREF="../ssch10/ttt#g16">Ch10</A><BR>
+<CODE>play-ttt</CODE> <A HREF="../ssch20/io#g29">Ch20</A><BR>
+<CODE>play-ttt-helper</CODE> <A HREF="../ssch20/io#g30">Ch20</A><BR>
+<CODE>plural</CODE> <A HREF="../ssch6/true#g89">Ch6</A>, <A HREF="../ssch8/higher#g9">Ch8</A><BR>
+<CODE>plural</CODE> (exercise) <A HREF="../ssch6/true#g122">Ch6</A><BR>
+<CODE>poker-value</CODE> <A HREF="../ssch15/poker#g18">ProjPoker</A>, <A HREF="../ssch15/poker#g19">ProjPoker</A><BR>
+<CODE>praise</CODE> <A HREF="../ssch17/lists#g10">Ch17</A><BR>
+<CODE>prepend-every</CODE> <A HREF="../ssch1/showing#g20">Ch1</A>, <A HREF="../ssch15/adv-recur#g12">Ch15</A><BR>
+<CODE>prev-row</CODE> <A HREF="../ssch25/spread-implement#g9">Ch25</A><BR>
+<CODE>print-file</CODE> <A HREF="../ssch22/files#g18">Ch22</A><BR>
+<CODE>print-file-helper</CODE> <A HREF="../ssch22/files#g34">Ch22</A><BR>
+<CODE>print-position</CODE> <A HREF="../ssch20/io#g37">Ch20</A><BR>
+<CODE>print-row</CODE> <A HREF="../ssch20/io#g38">Ch20</A><BR>
+<CODE>print-screen</CODE> <A HREF="../ssch25/spread-implement#g32">Ch25</A><BR>
+<CODE>process-command</CODE> <A HREF="../ssch25/spread-implement#g6">Ch25</A><BR>
+<CODE>process-grades</CODE> <A HREF="../ssch22/files#g25">Ch22</A><BR>
+<CODE>progressive-squares?</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g34">Ch14</A><BR>
+<CODE>prune</CODE> (exercise) <A HREF="../ssch18/trees#g38">Ch18</A><BR>
+<CODE>put-all-cells-in-col</CODE> <A HREF="../ssch25/spread-implement#g14">Ch25</A><BR>
+<CODE>put-all-cells-in-row</CODE> <A HREF="../ssch25/spread-implement#g13">Ch25</A><BR>
+<CODE>put-all-helper</CODE> <A HREF="../ssch25/spread-implement#g15">Ch25</A><BR>
+<CODE>put</CODE> <A HREF="../ssch25/spread-implement#g12">Ch25</A><BR>
+<CODE>put-expr</CODE> <A HREF="../ssch25/spread-implement#g23">Ch25</A><BR>
+<CODE>put-formula-in-cell</CODE> <A HREF="../ssch25/spread-implement#g17">Ch25</A><BR>
+<A NAME="Q"></A>
+<CODE>query</CODE> (exercise) <A HREF="../ssch5/words#g35">Ch5</A><BR>
+<CODE>quoted?</CODE> <A HREF="../ssch25/spread-implement#g30">Ch25</A><BR>
+<CODE>quoted-value</CODE> <A HREF="../ssch25/spread-implement#g31">Ch25</A><BR>
+<A NAME="R"></A>
+<CODE>real-accumulate</CODE> <A HREF="../ssch19/implement-hof#g17">Ch19</A><BR>
+<CODE>real-word?</CODE> <A HREF="../ssch1/showing#g12">Ch1</A>, <A HREF="../ssch8/higher#g19">Ch8</A><BR>
+<CODE>real-words</CODE> (exercise) <A HREF="../ssch12/leap#g12">Ch12</A><BR>
+<CODE>remdup</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g27">Ch14</A><BR>
+<CODE>remove</CODE> (exercise) <A HREF="../ssch12/leap#g13">Ch12</A><BR>
+<CODE>remove-adjacent-duplicates</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g33">Ch14</A><BR>
+<CODE>remove-once</CODE> <A HREF="../ssch15/adv-recur#g3">Ch15</A><BR>
+<CODE>remove-once</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g25">Ch14</A><BR>
+<CODE>repeated-numbers</CODE> <A HREF="../ssch10/ttt#g18">Ch10</A><BR>
+<CODE>roman-value</CODE> <A HREF="../ssch6/true#g102">Ch6</A><BR>
+<CODE>roots</CODE> <A HREF="../ssch7/variables#g16">Ch7</A><BR>
+<CODE>rotate</CODE> <A HREF="../ssch1/showing#g18">Ch1</A><BR>
+<A NAME="S"></A>
+<CODE>safe-pigl</CODE> <A HREF="../ssch14/recur-patterns#g12">Ch14</A><BR>
+<CODE>safe-sqrt</CODE> (exercise) <A HREF="../ssch9/lambda#g42">Ch9</A><BR>
+<CODE>same-arg-twice</CODE> <A HREF="../ssch9/lambda#g7">Ch9</A><BR>
+<CODE>save-db</CODE> <A HREF="../ssch25/database#g21">ProjDB</A><BR>
+<CODE>scheme-procedure</CODE> <A HREF="../ssch21/functions-implement#g5">Ch21</A><BR>
+<CODE>scrunch-words</CODE> <A HREF="../ssch14/recur-patterns#g9">Ch14</A><BR>
+<CODE>second</CODE> <A HREF="../ssch5/words#g13">Ch5</A><BR>
+<CODE>second</CODE> (exercise) <A HREF="../ssch9/lambda#g39">Ch9</A><BR>
+<CODE>select-id!</CODE> <A HREF="../ssch25/spread-implement#g11">Ch25</A><BR>
+<CODE>sent-before?</CODE> <A HREF="../ssch14/recur-patterns#g22">Ch14</A><BR>
+<CODE>sentence</CODE> (exercise) <A HREF="../ssch17/lists#g45">Ch17</A><BR>
+<CODE>sentence-version</CODE> (exercise) <A HREF="../ssch9/lambda#g30">Ch9</A><BR>
+<CODE>sent-equal?</CODE> <A HREF="../ssch16/match#g3">Ch16</A><BR>
+<CODE>sent-max</CODE> <A HREF="../ssch14/recur-patterns#g10">Ch14</A><BR>
+<CODE>sent-of-first-two</CODE> <A HREF="../ssch8/higher#g11">Ch8</A><BR>
+<CODE>set-cell-children!</CODE> <A HREF="../ssch25/spread-implement#g42">Ch25</A><BR>
+<CODE>set-cell-expr!</CODE> <A HREF="../ssch25/spread-implement#g38">Ch25</A><BR>
+<CODE>set-cell-parents!</CODE> <A HREF="../ssch25/spread-implement#g40">Ch25</A><BR>
+<CODE>set-cell-value!</CODE> <A HREF="../ssch25/spread-implement#g36">Ch25</A><BR>
+<CODE>set-current-db!</CODE> <A HREF="../ssch25/database#g10">ProjDB</A><BR>
+<CODE>set-selected-row!</CODE> <A HREF="../ssch25/spread-implement#g10">Ch25</A><BR>
+<CODE>setvalue</CODE> <A HREF="../ssch25/spread-implement#g27">Ch25</A><BR>
+<CODE>show-addition</CODE> <A HREF="../ssch20/io#g22">Ch20</A><BR>
+<CODE>show-and-return</CODE> <A HREF="../ssch20/io#g48">Ch20</A><BR>
+<CODE>show-answer</CODE> <A HREF="../ssch21/functions-implement#g4">Ch21</A><BR>
+<CODE>show-list</CODE> <A HREF="../ssch20/io#g25">Ch20</A><BR>
+<CODE>shuffle!</CODE> <A HREF="../ssch23/vectors#g12">Ch23</A><BR>
+<CODE>sign</CODE> (exercise) <A HREF="../ssch6/true#g112">Ch6</A><BR>
+<CODE>skip-songs</CODE> <A HREF="../ssch22/files#g15">Ch22</A><BR>
+<CODE>skip-value</CODE> <A HREF="../ssch16/match#g11">Ch16</A><BR>
+<CODE>sort2</CODE> (exercise) <A HREF="../ssch6/true#g120">Ch6</A><BR>
+<CODE>sort</CODE> <A HREF="../ssch15/adv-recur#g1">Ch15</A>, <A HREF="../ssch25/database#g25">ProjDB</A><BR>
+<CODE>sort-digits</CODE> <A HREF="../ssch10/ttt#g20">Ch10</A><BR>
+<CODE>sort-on</CODE> <A HREF="../ssch25/database#g27">ProjDB</A><BR>
+<CODE>spaces</CODE> <A HREF="../ssch22/files#g32">Ch22</A><BR>
+<CODE>spell-digit</CODE> <A HREF="../ssch8/higher#g35">Ch8</A><BR>
+<CODE>spell-number</CODE> (exercise) <A HREF="../ssch12/leap#g10">Ch12</A><BR>
+<CODE>sphere-area</CODE> <A HREF="../ssch19/implement-hof#g7">Ch19</A><BR>
+<CODE>sphere-surface-area</CODE> <A HREF="../ssch9/lambda#g22">Ch9</A><BR>
+<CODE>sphere-volume</CODE> <A HREF="../ssch9/lambda#g23">Ch9</A><BR>
+<CODE>spreadsheet</CODE> <A HREF="../ssch25/spread-implement#g43">Ch25</A><BR>
+<CODE>square-area</CODE> <A HREF="../ssch19/implement-hof#g5">Ch19</A><BR>
+<CODE>square</CODE> <A HREF="../ssch4/defining#g1">Ch4</A>, <A HREF="../ssch9/lambda#g15">Ch9</A><BR>
+<CODE>ss-eval</CODE> <A HREF="../ssch25/spread-implement#g29">Ch25</A><BR>
+<CODE>stupid-ttt</CODE> <A HREF="../ssch20/io#g27">Ch20</A><BR>
+<CODE>subsets</CODE> <A HREF="../ssch15/adv-recur#g13">Ch15</A><BR>
+<CODE>substitute</CODE> (exercise) <A HREF="../ssch9/lambda#g40">Ch9</A><BR>
+<CODE>substitute-letter</CODE> <A HREF="../ssch10/ttt#g4">Ch10</A><BR>
+<CODE>substitute-triple</CODE> <A HREF="../ssch10/ttt#g5">Ch10</A><BR>
+<CODE>substring?</CODE> (exercise) <A HREF="../ssch15/adv-recur#g15">Ch15</A><BR>
+<CODE>substrings</CODE> (exercise) <A HREF="../ssch15/adv-recur#g14">Ch15</A><BR>
+<CODE>subword</CODE> <A HREF="../ssch20/io#g40">Ch20</A><BR>
+<CODE>subword</CODE> (exercise) <A HREF="../ssch8/higher#g51">Ch8</A><BR>
+<CODE>suit-counts</CODE> <A HREF="../ssch9/bridge#g6">ProjBridge</A><BR>
+<CODE>suit-dist-points</CODE> <A HREF="../ssch9/bridge#g7">ProjBridge</A><BR>
+<CODE>sum-square</CODE> (exercise) <A HREF="../ssch7/variables#g20">Ch7</A><BR>
+<CODE>sum-vector</CODE> (exercise) <A HREF="../ssch23/vectors#g20">Ch23</A><BR>
+<CODE>superlative</CODE> (exercise) <A HREF="../ssch7/variables#g19">Ch7</A><BR>
+<CODE>syllables</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g36">Ch14</A><BR>
+<A NAME="T"></A>
+<CODE>teen?</CODE> (exercise) <A HREF="../ssch6/true#g116">Ch6</A><BR>
+<CODE>third</CODE> (exercise) <A HREF="../ssch5/words#g27">Ch5</A><BR>
+<CODE>third-person-singular</CODE> (exercise) <A HREF="../ssch6/true#g111">Ch6</A><BR>
+<CODE>thismany</CODE> (exercise) <A HREF="../ssch6/true#g119">Ch6</A><BR>
+<CODE>three-firsts</CODE> <A HREF="../ssch8/higher#g2">Ch8</A><BR>
+<CODE>tie-game?</CODE> <A HREF="../ssch20/io#g32">Ch20</A><BR>
+<CODE>tie-game?</CODE> (exercise) <A HREF="../ssch10/ttt#g29">Ch10</A><BR>
+<CODE>transform-beatles</CODE> (exercise) <A HREF="../ssch8/higher#g41">Ch8</A><BR>
+<CODE>translate</CODE> <A HREF="../ssch17/lists#g11">Ch17</A>, <A HREF="../ssch17/lists#g34">Ch17</A><BR>
+<CODE>truefalse</CODE> <A HREF="../ssch6/true#g107">Ch6</A><BR>
+<CODE>true-for-all?</CODE> (exercise) <A HREF="../ssch8/higher#g46">Ch8</A><BR>
+<CODE>true-for-all-pairs?</CODE> (exercise) <A HREF="../ssch19/implement-hof#g23">Ch19</A><BR>
+<CODE>true-for-any-pair?</CODE> (exercise) <A HREF="../ssch19/implement-hof#g22">Ch19</A><BR>
+<CODE>try-putting</CODE> <A HREF="../ssch25/spread-implement#g16">Ch25</A><BR>
+<CODE>ttt</CODE> <A HREF="../ssch10/ttt#g1">Ch10</A>, <A HREF="../ssch10/ttt#g7">Ch10</A><BR>
+<CODE>ttt-choose</CODE> <A HREF="../ssch10/ttt#g21">Ch10</A><BR>
+<CODE>two-first</CODE> (exercise) <A HREF="../ssch5/words#g29">Ch5</A><BR>
+<CODE>two-firsts</CODE> <A HREF="../ssch8/higher#g1">Ch8</A><BR>
+<CODE>two-first-sent</CODE> (exercise) <A HREF="../ssch5/words#g30">Ch5</A><BR>
+<CODE>two-numbers?</CODE> <A HREF="../ssch21/functions-implement#g9">Ch21</A><BR>
+<CODE>type-check</CODE> (exercise) <A HREF="../ssch9/lambda#g41">Ch9</A><BR>
+<CODE>type-of</CODE> (exercise) <A HREF="../ssch6/true#g117">Ch6</A><BR>
+<CODE>type-predicate</CODE> <A HREF="../ssch21/functions-implement#g7">Ch21</A><BR>
+<A NAME="U"></A>
+<CODE>unabbrev</CODE> (exercise) <A HREF="../ssch9/lambda#g36">Ch9</A><BR>
+<CODE>unscramble</CODE> (exercise) <A HREF="../ssch15/adv-recur#g17">Ch15</A><BR>
+<CODE>up</CODE> (exercise) <A HREF="../ssch14/recur-patterns#g26">Ch14</A><BR>
+<CODE>utensil</CODE> (exercise) <A HREF="../ssch6/true#g113">Ch6</A><BR>
+<A NAME="V"></A>
+<CODE>valid-date?</CODE> (exercise) <A HREF="../ssch6/true#g121">Ch6</A><BR>
+<CODE>valid-fn-name?</CODE> <A HREF="../ssch21/functions-implement#g14">Ch21</A><BR>
+<CODE>valid-infix?</CODE> (exercise) <A HREF="../ssch17/lists#g49">Ch17</A><BR>
+<CODE>value</CODE> <A HREF="../ssch20/io#g12">Ch20</A><BR>
+<CODE>vector-append</CODE> (exercise) <A HREF="../ssch23/vectors#g23">Ch23</A><BR>
+<CODE>vector-fill!</CODE> (exercise) <A HREF="../ssch23/vectors#g22">Ch23</A><BR>
+<CODE>vector-map</CODE> (exercise) <A HREF="../ssch23/vectors#g24">Ch23</A><BR>
+<CODE>vector-map!</CODE> (exercise) <A HREF="../ssch23/vectors#g25">Ch23</A><BR>
+<CODE>vector-swap!</CODE> <A HREF="../ssch23/vectors#g13">Ch23</A><BR>
+<CODE>verse</CODE> <A HREF="../ssch20/io#g24">Ch20</A>, <A HREF="../ssch20/io#g8">Ch20</A><BR>
+<CODE>vowel?</CODE> <A HREF="../ssch8/higher#g18">Ch8</A><BR>
+<A NAME="W"></A>
+<CODE>who</CODE> (exercise) <A HREF="../ssch9/lambda#g28">Ch9</A><BR>
+<CODE>words</CODE> (exercise) <A HREF="../ssch8/higher#g43">Ch8</A>
+
+
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="glossary.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/category.html b/js/games/nluqo.github.io/~bh/ssch27/category.html
new file mode 100644
index 0000000..6f0332b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/category.html
@@ -0,0 +1,161 @@
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Table of Scheme Primitives by Category</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Table of Scheme Primitives by Category</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/ssch26/appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Use this table if you've forgotten the name of a primitive.  Then
+look in the index to find more about how to use the primitive.
+
+<P><SUP>*</SUP> Not part of standard Scheme
+
+<H2>Words and Sentences</H2>
+<P><CODE>appearances</CODE><SUP>*</SUP><CODE>
+<BR>before?</CODE><SUP>*</SUP><CODE>
+<BR>butfirst (bf)</CODE><SUP>*</SUP><CODE>
+<BR>butlast (bl)</CODE><SUP>*</SUP><CODE>
+<BR>count</CODE><SUP>*</SUP><CODE>
+<BR>empty?</CODE><SUP>*</SUP><CODE>
+<BR>equal?</CODE><SUP>*</SUP><CODE>
+<BR>first</CODE><SUP>*</SUP><CODE>
+<BR>item</CODE><SUP>*</SUP><CODE>
+<BR>last</CODE><SUP>*</SUP><CODE>
+<BR>member?</CODE><SUP>*</SUP><CODE>
+<BR>quote
+<BR>sentence (se)</CODE><SUP>*</SUP><CODE>
+<BR>sentence?</CODE><SUP>*</SUP><CODE>
+<BR>word</CODE><SUP>*</SUP><CODE>
+<BR>word?</CODE><SUP>*</SUP>
+</CODE><H2>Lists</H2>
+<P><CODE>append
+<BR>assoc
+<BR>car
+<BR>cdr
+<BR>c...r
+<BR>cons
+<BR>filter</CODE><SUP>*</SUP><CODE>
+<BR>for-each
+<BR>length
+<BR>list
+<BR>list?
+<BR>list-ref
+<BR>map
+<BR>member
+<BR>null?
+<BR>reduce</CODE><SUP>*</SUP>
+<H2>Trees</H2>
+<P><CODE>children</CODE><SUP>*</SUP><CODE>
+<BR>datum</CODE><SUP>*</SUP><CODE>
+<BR>make-node</CODE><SUP>*</SUP>
+<H2>Arithmetic</H2>
+<P><CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, <CODE>/</CODE>
+<BR><CODE>&lt;</CODE>, <CODE>&lt;=</CODE>, <CODE>=</CODE>, <CODE>&gt;</CODE>, <CODE>&gt;=</CODE>
+<BR><CODE>abs
+<BR>ceiling
+<BR>cos
+<BR>even?
+<BR>expt
+<BR>floor
+<BR>integer?
+<BR>log
+<BR>max
+<BR>min
+<BR>number?
+<BR>odd?
+<BR>quotient
+<BR>random
+<BR>remainder
+<BR>round
+<BR>sin
+<BR>sqrt
+</CODE><H2>True and False</H2>
+<P><CODE>and
+<BR>boolean?
+<BR>cond
+<BR>if
+<BR>not
+<BR>or
+</CODE><H2>Variables</H2>
+<P><CODE>define
+<BR>let
+</CODE><H2>Vectors</H2>
+<P><CODE>list-&gt;vector
+<BR>make-vector
+<BR>vector
+<BR>vector?
+<BR>vector-length
+<BR>vector-&gt;list
+<BR>vector-ref
+<BR>vector-set!
+</CODE><H2>Procedures</H2>
+<P><CODE>apply
+<BR>lambda
+<BR>procedure?
+</CODE><H2>Higher-OrderProcedures</H2>
+<P><CODE>accumulate</CODE><SUP>*</SUP><CODE>
+<BR>every</CODE><SUP>*</SUP><CODE>
+<BR>filter</CODE><SUP>*</SUP><CODE>
+<BR>for-each
+<BR>keep</CODE><SUP>*</SUP><CODE>
+<BR>map
+<BR>reduce</CODE><SUP>*</SUP><CODE>
+<BR>repeated</CODE><SUP>*</SUP>
+<H2>Control</H2>
+<P><CODE>begin
+<BR>error
+<BR>load
+<BR>trace
+<BR>untrace
+</CODE><H2>Input/Output</H2>
+<P><CODE>align</CODE><SUP>*</SUP><CODE>
+<BR>display
+<BR>newline
+<BR>read
+<BR>read-line</CODE><SUP>*</SUP><CODE>
+<BR>read-string</CODE><SUP>*</SUP><CODE>
+<BR>show</CODE><SUP>*</SUP><CODE>
+<BR>show-line</CODE><SUP>*</SUP><CODE>
+<BR>write
+</CODE><H2>Files and Ports</H2>
+<P><CODE>close-all-ports</CODE><SUP>*</SUP><CODE>
+<BR>close-input-port
+<BR>close-output-port
+<BR>eof-object?
+<BR>open-input-file
+<BR>open-output-file
+<P>
+
+<P><SUP>*</SUP> Not part of standard Scheme
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="appindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/credits b/js/games/nluqo.github.io/~bh/ssch27/credits
new file mode 100644
index 0000000..b602616
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/credits
@@ -0,0 +1,78 @@
+\input bkmacs
+
+\setpart{\null}
+\aprojchap{Credits}
+\setpart{Credits}
+
+{\parindent=0pt
+
+Many of the examples in this book revolve around titles of songs, especially
+\idx{Beatles} songs.  Since titles aren't covered by copyright, we didn't
+need official permission for this, but nevertheless we want to acknowledge
+the debt we owe to the great musicians who've added so much pleasure to our
+lives.  The use of their names here does not mean that they've endorsed our
+work; rather, we mean to show our respect for them.
+
+
+
+The cover and
+the illustrations on pages \hare, \pig, \crank\ (top), \plowshares, \srini,
+\sheba, \fish, and \santa\ were drawn by Polly Jordan.
+
+The illustration on page \graph\ was drawn using Mathematica${}^{TM}$.
+
+The illustrations on pages \bucket, \dumdee, \typing,
+\cabinets, and \accountant\ appear courtesy of 
+the Bettmann Archive.
+
+The illustration on page \plugboard\ appears courtesy of the Computer Museum,
+Boston. Photograph by Ben G.
+
+The quotations on pages \alice\ and
+\dumdee\ are from {\it Through the
+Looking-Glass, and What Alice Found There,\/} by \swapidx{Lewis}{Carroll}
+(Macmillan, 1871).
+\justidx{Dodgson, Charles}
+
+The Far Side cartoons on page \larson\ are reprinted by permission of
+Chronicle Features, San Francisco, CA.  All rights reserved.
+
+The photograph on page \alonzo\ appears courtesy of UCLA, Department
+of Philosophy.
+
+The photograph on page \tttttm\ appears courtesy of the Computer
+Museum, Boston.
+
+The photograph on page \trombone\ appears courtesy of UPI/Bettmann.
+
+The illustration on page \gallery\ is {\it Printgallery,\/} by M. C.
+Escher.  \copyright\ 1956 M. C. Escher Foundation--Baarn--Holland.
+
+The quotation on page \swallow\ (top) is from ``I Know an Old
+Lady,'' a traditional song of which a recent version is copyright
+\copyright\ 1952, 1954 by \swapidx{Rose}{Bonne} (words) and
+\swapidx{Alan}{Mills} (music).
+
+The illustration on page \hands\ is {\it Drawing~Hands,\/} by M. C.
+Escher.  \copyright\ 1948 M. C. Escher Foundation--Baarn--Holland.
+
+The illustration on page \fractal\ is reprinted with permission from
+Michael Barnsley, {\it Fractals Everywhere,\/} Academic Press, 1988,
+page 319.
+
+The illustration on page \bongard\ is reprinted from page 234 of M.
+Bongard, {\it Pattern Recognition,\/} Spartan Books, 1970.
+
+The illustration on page \mondrian\ is {\it Flowering Apple Tree,\/}
+by Piet Mondrian, 1912.  Courtesy of Collection Haags
+Gemeentemuseum, The Hague.
+
+The illustration on page \polly\ is a photograph by Ben G.
+
+The illustration on page \oz\ is from {\it The~Wizard~of~Oz,\/}
+\copyright\ 1939. Courtesy of Turner Home Entertainment.
+
+%% The illustration on page \excel\ was drawn using Microsoft Excel${}^{TM}$.
+
+}
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch27/credits.html b/js/games/nluqo.github.io/~bh/ssch27/credits.html
new file mode 100644
index 0000000..2e2b217
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/credits.html
@@ -0,0 +1,117 @@
+<P>
+
+<P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Credits</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Credits</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appendix-gpl.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-funlist.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>
+Many of the examples in this book revolve around titles of songs, especially
+Beatles songs.  Since titles aren't covered by copyright, we didn't
+need official permission for this, but nevertheless we want to acknowledge
+the debt we owe to the great musicians who've added so much pleasure to our
+lives.  The use of their names here does not mean that they've endorsed our
+work; rather, we mean to show our respect for them.
+
+<P>
+<P>
+<P>The cover and
+the illustrations on pages <A HREF="../ssch1/showing.html#hare">there</A>, <A HREF="../ssch1/showing.html#pig">there</A>,
+<A HREF="../ssch3/people.html#crank">there</A>,
+<A HREF="../ssch7/variables.html#srini">there</A>,
+<A HREF="../ssch7/variables.html#sheba">there</A>,
+<A HREF="../ssch8/higher.html#plowshares">there</A>,
+<A HREF="../ssch14/recur-patterns.html#fish">there</A>, and <A HREF="../ssch17/lists.html#santa">there</A> were drawn by Polly Jordan.
+
+<P>The illustration on page <A HREF="../ssch2/functions.html#graph">there</A> was drawn using Mathematica<SUP><SMALL>TM</SMALL></SUP>.
+
+<P>The illustrations on pages <A HREF="../ssch3/people.html#bucket">there</A>, <A HREF="../ssch6/true.html#dumdee">there</A>, <A HREF="../ssch20/io.html#typing">there</A>,
+<A HREF="../ssch22/files.html#cabinets">there</A>, and <A HREF="../ssch25/spread-implement.html#accountant">there</A> appear courtesy of 
+the Bettmann Archive.
+
+<P>The illustration on page <A HREF="../ssch4/defining.html#plugboard">there</A> appears courtesy of the Computer Museum,
+Boston. Photograph by Ben G.
+
+<P>The quotations on pages <A HREF="../ssch4/defining.html#alice">there</A> and
+<A HREF="../ssch6/true.html#dumdee">there</A> are from <EM>Through the
+Looking-Glass, and What Alice Found There,</EM> by <A NAME="g37"></A><A NAME="g38"></A>Lewis Carroll
+(Macmillan, 1871).
+
+<P>The Far Side cartoons on page <A HREF="../ssch5/words.html#larson">there</A> are reprinted by permission of
+Chronicle Features, San Francisco, CA.  All rights reserved.
+
+<P>The photograph on page <A HREF="../ssch9/lambda.html#alonzo">there</A> appears courtesy of UCLA, Department
+of Philosophy.
+
+<P>The photograph on page <A HREF="../ssch10/ttt.html#tttttm">there</A> appears courtesy of the Computer
+Museum, Boston.
+
+<P>The photograph on page <A HREF="../ssch7/variables.html#trombone">there</A> appears courtesy of UPI/Bettmann.
+
+<P>The illustration on page <A HREF="../ssch11/recursion.html#gallery">there</A> is <EM>Printgallery,</EM> by M. C.
+Escher.  &copy; 1956 M. C. Escher Foundation-Baarn-Holland.
+
+<P>The quotation on page <A HREF="../ssch11/recursion.html#swallow">there</A> (top) is from &quot;I Know an Old
+Lady,&quot; a traditional song of which a recent version is copyright
+&copy; 1952, 1954 by <A NAME="g39"></A>Rose Bonne (words) and
+<A NAME="g40"></A>Alan Mills (music).
+
+<P>The illustration on page <A HREF="../ssch12/leap.html#hands">there</A> is <EM>Drawing Hands,</EM> by M. C.
+Escher.  &copy; 1948 M. C. Escher Foundation-Baarn-Holland.
+
+<P>The illustration on page <A HREF="../ssch15/adv-recur.html#fractal">there</A> is reprinted with permission from
+Michael Barnsley, <EM>Fractals Everywhere,</EM> Academic Press, 1988,
+page 319.
+
+<P>The illustration on page <A HREF="../ssch16/match.html#bongard">there</A> is reprinted from page 234 of M.
+Bongard, <EM>Pattern Recognition,</EM> Spartan Books, 1970.
+
+<P>The illustration on page <A HREF="../ssch18/trees.html#mondrian">there</A> is <EM>Flowering Apple Tree,</EM>
+by Piet Mondrian, 1912.  Courtesy of Collection Haags
+Gemeentemuseum, The Hague.
+
+<P>The illustration on page <A HREF="../ssch19/implement-hof.html#polly">there</A> is a photograph by Ben G.
+
+<P>The illustration on page <A HREF="../ssch21/functions-implement.html#oz">there</A> is from <EM>The Wizard of Oz,</EM>
+&copy; 1939. Courtesy of Turner Home Entertainment.
+
+<P>
+<P>
+
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="appendix-gpl.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-funlist.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch27/glossary.html b/js/games/nluqo.github.io/~bh/ssch27/glossary.html
new file mode 100644
index 0000000..23fedfe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch27/glossary.html
@@ -0,0 +1,433 @@
+<P>
+
+<P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Glossary</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Glossary</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch27.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appendix-funlist.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>
+<STRONG>ADT:&nbsp;&nbsp;&nbsp;</STRONG> See <EM>abstract data type.</EM>
+
+<P><STRONG>a-list:&nbsp;&nbsp;&nbsp;</STRONG> Synonym for <EM>association list.</EM>
+
+<P><STRONG>abstract data type:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>type</EM> that isn't provided
+automatically by Scheme, but that the programmer invents.  In order to
+create an abstract data type, a programmer must define <EM>selectors</EM> and
+<EM>constructors</EM> for that type, and possibly also <EM>mutators.</EM>
+
+<P><STRONG>abstraction:&nbsp;&nbsp;&nbsp;</STRONG> An approach to complex problems in which the solution
+is built in layers.  The structures needed to solve the problem (algorithms
+and data structures) are implemented using lower-level capabilities and given
+names that can then be used as if they were primitive facilities.
+
+<P><STRONG>actual argument expression:&nbsp;&nbsp;&nbsp;</STRONG> An expression that produces an actual
+argument value.  In <CODE>(+ 2 (* 3 5))</CODE>, the subexpression <CODE>(* 3 5)</CODE> is
+an actual argument expression, since it provides an argument for the
+invocation of <CODE>+</CODE>.
+
+<P><STRONG>actual argument value:&nbsp;&nbsp;&nbsp;</STRONG> A value used as an argument to a
+procedure.  For example, in the expression <CODE>(+ 2 (* 3 5))</CODE>, the number
+<CODE>15</CODE> is an actual argument value.
+
+<P><STRONG>aggregate:&nbsp;&nbsp;&nbsp;</STRONG> An object that consists of a number of other objects.
+For example, a sentence is an aggregate whose elements are words.  Lists and
+vectors are also aggregates.  A word can be thought of, for some purposes,
+as an aggregate whose elements are one-letter words.
+
+<P><STRONG>algorithm:&nbsp;&nbsp;&nbsp;</STRONG> A method for solving a problem.  A computer program
+is the expression of an algorithm in a particular programming language; the
+same algorithm might also be expressed in a different language.
+
+<P><STRONG>apply:&nbsp;&nbsp;&nbsp;</STRONG> To <EM>invoke</EM> a procedure with arguments. For example,
+&quot;Apply the procedure <CODE>+</CODE> to the arguments <CODE>3</CODE> and <CODE>4</CODE>.&quot;
+
+<P><STRONG>argument:&nbsp;&nbsp;&nbsp;</STRONG> A datum provided to a procedure.  For example, in
+<CODE>(square 13)</CODE>, <CODE>13</CODE> is the argument to <CODE>square</CODE>.
+
+<P><STRONG>association list:&nbsp;&nbsp;&nbsp;</STRONG> A list in which each element contains a <EM>name</EM> and a corresponding <EM>value.</EM>  The list is used to look up a
+value, given a name.
+
+<P><STRONG>atomic expression:&nbsp;&nbsp;&nbsp;</STRONG> An expression that isn't composed of
+smaller pieces.
+
+<P><STRONG>backtracking:&nbsp;&nbsp;&nbsp;</STRONG> A programming technique in which the program tries
+one possible solution to a problem, but tries a different solution if the
+first isn't successful.
+
+<P><STRONG>base case:&nbsp;&nbsp;&nbsp;</STRONG> In a recursive procedure, the part that solves the
+smallest possible version of the problem without needing a recursive
+invocation.
+
+<P><STRONG>body:&nbsp;&nbsp;&nbsp;</STRONG> An expression, part of the definition of a procedure, that
+is evaluated when that procedure is invoked.  For example, in
+
+<P><PRE>(define (square x) 
+  (* x x))
+</PRE>
+
+<P>the expression <CODE>(* x x)</CODE> is the body of the <CODE>square</CODE>
+procedure.
+
+<P><STRONG>Boolean:&nbsp;&nbsp;&nbsp;</STRONG> The value <CODE>#t</CODE>, meaning &quot;true,&quot; or <CODE>#f</CODE>,
+meaning &quot;false.&quot;
+
+<P><STRONG>branch node:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>tree node</EM> with <EM>children.</EM> The
+opposite of a <EM>leaf node.</EM>
+
+<P><STRONG>bug:&nbsp;&nbsp;&nbsp;</STRONG> An error in a program.  This word did <EM>not</EM> originate
+with Grace Hopper finding an actual insect inside a malfunctioning computer;
+she may have done so, but the terminology predates computers by centuries.
+
+<P><STRONG>call:&nbsp;&nbsp;&nbsp;</STRONG> Synonym for <EM>invoke.</EM>
+
+<P><STRONG>cell:&nbsp;&nbsp;&nbsp;</STRONG> One location in a <EM>spreadsheet.</EM>
+
+<P><STRONG>children:&nbsp;&nbsp;&nbsp;</STRONG> The <EM>nodes</EM> directly under this one, in a <EM>tree.</EM> (See also <EM>siblings</EM> and <EM>parent.</EM>)
+
+<P><STRONG>composition of functions:&nbsp;&nbsp;&nbsp;</STRONG> Using the value returned by a function
+as an argument to another.  In the expression <CODE>(+ 2 (* 3 5))</CODE>, the value
+returned by the <CODE>*</CODE> function is used as an argument to the <CODE>+</CODE>
+function.
+
+<P><STRONG>compound expression:&nbsp;&nbsp;&nbsp;</STRONG> An expression that contains subexpressions.
+Opposite of <EM>atomic expression.</EM>
+
+<P><STRONG>compound procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that a programmer defines.  This
+is the opposite of a <EM>primitive</EM> procedure.
+
+<P><STRONG>constructor:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that returns a new object of a certain
+type.  For example, the <CODE>word</CODE> procedure is a constructor that takes
+words as arguments and returns a new word.  See also <EM>selector</EM>, <EM>mutator</EM>, and <EM>abstract data type.</EM>
+
+<P><STRONG>data abstraction:&nbsp;&nbsp;&nbsp;</STRONG> The invention of <EM>abstract data types.</EM>
+
+<P><STRONG>data structure:&nbsp;&nbsp;&nbsp;</STRONG> A mechanism through which several pieces of
+information are combined into one larger unit.  The most appropriate
+mechanism will depend on the ways in which the small pieces are used in
+the program, for example, sequentially or in arbitrary order.
+
+<P><STRONG>database program:&nbsp;&nbsp;&nbsp;</STRONG> A program that maintains an organized collection
+of data, with facilities to modify or delete old entries, add new entries,
+and select certain entries for display.
+
+<P><STRONG>datum:&nbsp;&nbsp;&nbsp;</STRONG> The piece of information stored in each node
+of a tree.
+
+<P><STRONG>debugging:&nbsp;&nbsp;&nbsp;</STRONG> The process by which a programmer finds and corrects
+mistakes in a program.  No interesting program works the first time;
+debugging is a skill to develop, not something to be ashamed of.
+
+<P><STRONG>destructive:&nbsp;&nbsp;&nbsp;</STRONG> A destructive procedure is one that modifies its
+arguments.  Since the only data type in this book that can be modified is
+the vector, all destructive procedures call <CODE>vector-set!</CODE>.
+
+<P><STRONG>domain:&nbsp;&nbsp;&nbsp;</STRONG> The set of all legal arguments to a function.  For
+example, the domain of the <CODE>count</CODE> function is the set of all sentences
+and all words.
+
+<P><STRONG>effect:&nbsp;&nbsp;&nbsp;</STRONG> Something a procedure does other than return a
+value.  For example, a procedure might create a file on disk, or print
+something to the screen, or change the contents of a vector.
+
+<P><STRONG>empty sentence:&nbsp;&nbsp;&nbsp;</STRONG> The sentence <CODE>()</CODE>, which has no words in it.
+
+<P><STRONG>empty word:&nbsp;&nbsp;&nbsp;</STRONG> The word <CODE>&quot;&quot;</CODE>, which has no letters in it.
+
+<P><STRONG>end-of-file object:&nbsp;&nbsp;&nbsp;</STRONG> What the file-reading procedures return if
+asked to read a file with no more unread data.
+
+<P><STRONG>expression:&nbsp;&nbsp;&nbsp;</STRONG> The representation in Scheme notation of a request to
+perform a computation.  An expression is either an <EM>atomic expression,</EM>
+such as <CODE>345</CODE> or <CODE>x</CODE>, or a <EM>compound expression</EM> consisting of
+one or more subexpressions enclosed in parentheses, such as <CODE>(+ 3 4)</CODE>.
+
+<P><STRONG>field:&nbsp;&nbsp;&nbsp;</STRONG> A single component of a database <EM>record.</EM> For
+example, &quot;title&quot; is a field in our example database of albums.
+
+<P><STRONG>first-class data:&nbsp;&nbsp;&nbsp;</STRONG> Data with the following four properties:
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be the argument to a procedure.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be the return value from a procedure.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be given a name.
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">It can be part of a data aggregate.
+
+</TABLE>
+In Scheme, words, lists, sentences, trees, vectors, ports,
+end-of-file objects, Booleans, and procedures are all first-class.
+
+<P><STRONG>forest:&nbsp;&nbsp;&nbsp;</STRONG> A list of <EM>trees.</EM>
+
+<P><STRONG>formal parameter:&nbsp;&nbsp;&nbsp;</STRONG> In a procedure definition, the name given to
+refer to an argument.  In
+
+<P><PRE>(define (square x) 
+  (* x x))</PRE><CODE>x</CODE> is the formal parameter.  (Note that this is not the same
+thing as an actual argument!  When we invoke <CODE>square</CODE> later, the
+argument will be a number, such as 5.  The parameter is the <EM>name</EM> for
+that number, not the number itself.)
+<STRONG>function:&nbsp;&nbsp;&nbsp;</STRONG> A transformation of information that associates a
+<EM>return value</EM> with some number of <EM>argument values.</EM> There may
+be many different <EM>algorithms</EM> that compute the same function; the
+function itself is the relationship between argument values and return
+value, no matter how it may be implemented.
+
+<P><STRONG>functional programming:&nbsp;&nbsp;&nbsp;</STRONG> A style of programming in which programs
+are expressed as compositions of functions, emphasizing their arguments and
+return values.  Compare to <EM>sequential programming.</EM>
+
+<P><STRONG>global variable:&nbsp;&nbsp;&nbsp;</STRONG> A variable created with <CODE>define</CODE>, which has
+meaning everywhere in the program.  The opposite of a <EM>local
+variable.</EM>
+
+<P><STRONG>helper procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that exists to help another
+procedure do its work.  Normally, a user does not invoke a helper procedure
+directly.  Instead, the user invokes a top-level procedure, which invokes
+the helper procedure to assist it in coming up with the answer.
+
+<P><STRONG>higher-order procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure whose domain or range
+includes other procedures.
+
+<P><STRONG>index:&nbsp;&nbsp;&nbsp;</STRONG> A number used to select one of the elements of a vector.
+
+<P><STRONG>initialization procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that doesn't do any work
+except to invoke a <EM>helper procedure</EM> with appropriate argument
+values.
+
+<P><STRONG>interactive:&nbsp;&nbsp;&nbsp;</STRONG> An interactive program or programming language does
+its work in response to messages typed by the user at a keyboard (or perhaps
+indicated with a pointing device like a mouse).  Each message from the user
+causes the program to respond in some way.  By contrast, a non-interactive
+program works with input data that have been prepared in advance.
+
+<P><STRONG>invoke:&nbsp;&nbsp;&nbsp;</STRONG> To ask a procedure to do its work and come up with a
+return value.  For example, &quot;Invoke the <CODE>+</CODE> procedure,&quot; or &quot;Invoke
+the <CODE>+</CODE> procedure with the arguments <CODE>3</CODE> and <CODE>4</CODE>.&quot;
+
+<P><STRONG>keyword:&nbsp;&nbsp;&nbsp;</STRONG> The name of a <EM>special form.</EM>
+
+<P><STRONG>kludge:&nbsp;&nbsp;&nbsp;</STRONG> A method that gets the job done but isn't very elegant.
+Usually the result is a program that can't be extended the next time a new
+feature is needed.
+
+<P><STRONG>leaf node:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>tree node</EM> with no <EM>children.</EM> The
+opposite of a <EM>branch node.</EM>
+
+<P><STRONG>leap of faith:&nbsp;&nbsp;&nbsp;</STRONG> A method for understanding recursion in which you
+say to yourself, &quot;I'm going to assume that the recursive call always returns
+the right answer,&quot; and then use the answer from the recursive call to produce
+the answer to the entire problem.
+
+<P><STRONG>list:&nbsp;&nbsp;&nbsp;</STRONG> A data aggregate containing elements that may
+be of any type.
+
+<P><STRONG>local variable:&nbsp;&nbsp;&nbsp;</STRONG> A variable that associates a formal parameter
+name with an actual argument value.  It's &quot;local&quot; because the variable
+exists only within one procedure invocation.  (This includes variables
+created by <CODE>let</CODE>.)  This is the opposite of a <EM>global variable.</EM>
+
+<P>
+<P><STRONG>mutable:&nbsp;&nbsp;&nbsp;</STRONG> A data structure is mutable if its contents can change.
+
+<P><STRONG>mutator:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that changes the value of a data object.  In
+this book, the only mutable data objects we use are vectors, so every
+mutator is implemented using <CODE>vector-set!</CODE>.  See also <EM>selector,</EM>
+<EM>constructor,</EM> and <EM>abstract data type.</EM>
+
+<P><STRONG>mutual recursion:&nbsp;&nbsp;&nbsp;</STRONG> The program structure in which one procedure
+invokes another, and the second invokes the first.
+
+<P><STRONG>node:&nbsp;&nbsp;&nbsp;</STRONG> An element of a <EM>tree.</EM> A node has a <EM>datum</EM>
+and zero or more <EM>children.</EM>
+
+<P><STRONG>parent:&nbsp;&nbsp;&nbsp;</STRONG> The node above this one, in a <EM>tree.</EM> (See also <EM>children</EM> and <EM>siblings.</EM>)
+
+<P><STRONG>pattern matcher:&nbsp;&nbsp;&nbsp;</STRONG> A program that takes a pattern and a piece of
+data as inputs and says whether or not that piece of data is one that
+the pattern describes.  We present a pattern matcher in Chapter 16.
+
+<P><STRONG>plumbing diagram:&nbsp;&nbsp;&nbsp;</STRONG> A pictorial representation of the composition
+of functions, with the return value from one procedure connected to an
+argument intake of another.
+
+<P><STRONG>port:&nbsp;&nbsp;&nbsp;</STRONG> An object that Scheme uses to keep track of a file that
+is currently open for reading or writing.
+
+<P><STRONG>portable:&nbsp;&nbsp;&nbsp;</STRONG> A portable program is one that can be run in more than
+one version of Scheme or on more than one computer.
+
+<P><STRONG>potsticker:&nbsp;&nbsp;&nbsp;</STRONG> A Chinese dumpling stuffed with meat and vegetables,
+first steamed and then pan-fried, or sometimes first pan-fried and then
+simmered in water added to the pan.
+
+<P><STRONG>predicate:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that always returns a <EM>Boolean</EM>
+value.  By convention, Scheme predicates have names like &quot;<CODE>equal?</CODE>&quot; that
+end in a question mark.
+
+<P><STRONG>primitive procedure:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that is already defined when a
+Scheme session begins.  By contrast, a <EM>compound</EM> procedure is one
+that the programmer defines in Scheme.
+
+<P><STRONG>procedure:&nbsp;&nbsp;&nbsp;</STRONG> The expression of an algorithm in Scheme notation.
+
+<P><STRONG>prompt:&nbsp;&nbsp;&nbsp;</STRONG> A character or characters that an interactive program
+prints to tell the user that it's ready for the user to type something.  In
+many versions of Scheme, the prompt is a <CODE>&gt;</CODE> character.
+
+<P><STRONG>random access:&nbsp;&nbsp;&nbsp;</STRONG> A data structure allows random access if the time
+required to locate an element of the structure is independent of its
+position within the structure.
+
+<P><STRONG>range:&nbsp;&nbsp;&nbsp;</STRONG> The set of all possible return values from a function.  For
+example, the range of the <CODE>count</CODE> function is the set of non-negative
+integers.
+
+<P><STRONG>read-eval-print loop:&nbsp;&nbsp;&nbsp;</STRONG> The overall structure of a Scheme
+interpreter.  It <EM>reads</EM> an expression from the keyboard, <EM>evaluates</EM> the expression by invoking procedures, etc., and <EM>prints</EM>
+the resulting value.  The same process repeats forever.
+
+<P><STRONG>record:&nbsp;&nbsp;&nbsp;</STRONG> One complete entry in a database.  For example, one album
+in our database of albums.  A record contains several <EM>fields.</EM>
+
+<P><STRONG>recursion:&nbsp;&nbsp;&nbsp;</STRONG> Solving a big problem by reducing it to smaller
+problems of the same kind.  If something is defined recursively, then it's
+defined in terms of itself.  See <EM>recursion.</EM>
+
+<P><STRONG>recursive case:&nbsp;&nbsp;&nbsp;</STRONG> In a recursive procedure, the part that requires a
+recursive invocation.  The opposite of the <EM>base case.</EM>
+
+<P><STRONG>rest parameter:&nbsp;&nbsp;&nbsp;</STRONG> A parameter that represents a variable number of
+arguments.  In the formal parameter list <CODE>(a b . x)</CODE>, <CODE>x</CODE> is a
+rest parameter.
+
+<P><STRONG>result replacement:&nbsp;&nbsp;&nbsp;</STRONG> A technique people can use to figure out the
+value of a complicated Scheme expression by rewriting the expression
+repeatedly, each time replacing some small subexpression with a
+simpler expression that has the same value,
+until all that's left is a single quoted or self-evaluating value.
+
+<P><STRONG>robust:&nbsp;&nbsp;&nbsp;</STRONG> Able to function despite user errors.  Robust programs
+check for likely errors and recover from them gracefully.
+
+<P><STRONG>root node:&nbsp;&nbsp;&nbsp;</STRONG> The <EM>node</EM> at the very top of a <EM>tree.</EM>
+
+<P><STRONG>selector:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that takes an object as its argument and
+returns some part of that object.  For example, the selector <CODE>first</CODE>
+takes a word or sentence as argument and returns the first letter of the
+word or first word of the sentence.  See also <EM>constructor,</EM> <EM>mutator,</EM> and <EM>abstract data type.</EM>
+
+<P><STRONG>self-evaluating:&nbsp;&nbsp;&nbsp;</STRONG> An expression is self-evaluating if, when
+evaluated, it has as its value the expression itself.  Numbers, Booleans, and
+strings are the only self-evaluating objects we use in this book.
+
+<P><STRONG>semipredicate:&nbsp;&nbsp;&nbsp;</STRONG> A procedure that answers a yes-no question by
+returning <CODE>#f</CODE> for &quot;no,&quot; but instead of returning <CODE>#t</CODE> for
+&quot;yes,&quot; it returns some additional piece of information.  The primitive
+<CODE>member</CODE> procedure is a good example of a semipredicate.
+(&quot;Semipredicate&quot; isn't a common term; we made it up for this book.)
+
+<P><STRONG>sequencing:&nbsp;&nbsp;&nbsp;</STRONG> Evaluating two or more expressions one after the
+other, for the sake of their <EM>effects.</EM>
+
+<P><STRONG>sequential programming:&nbsp;&nbsp;&nbsp;</STRONG> A style of programming in which
+programs say, &quot;First do this, then do that, then do that other thing.&quot;
+(Compare to <EM>functional programming.</EM>)
+
+<P><STRONG>siblings:&nbsp;&nbsp;&nbsp;</STRONG> Two <EM>nodes</EM> of a <EM>tree</EM> that are the
+children of the same node.  (See also <EM>children</EM> and <EM>parent.</EM>)
+
+<P><STRONG>side effect:&nbsp;&nbsp;&nbsp;</STRONG> See <EM>effect.</EM>
+
+<P><STRONG>special form:&nbsp;&nbsp;&nbsp;</STRONG> A Scheme expression that begins with a <EM>keyword</EM> and is evaluated using a special rule.  In particular, some of
+the subexpressions might not be evaluated.  The keywords used in this book
+are <CODE>and</CODE>, <CODE>begin</CODE>, <CODE>cond</CODE>, <CODE>define</CODE>, <CODE>if</CODE>, <CODE>lambda</CODE>, <CODE>let</CODE>, <CODE>or</CODE>, and <CODE>quote</CODE>.  (The keyword itself is also
+sometimes called a special form.)
+
+<P><STRONG>spreadsheet program:&nbsp;&nbsp;&nbsp;</STRONG> A program that maintains a two-dimensional
+display of data can compute some elements automatically, based on the
+values of other elements.
+
+<P><STRONG>state:&nbsp;&nbsp;&nbsp;</STRONG> A program's memory of what has happened in the past.
+
+<P><STRONG>string:&nbsp;&nbsp;&nbsp;</STRONG> A <EM>word</EM> delimited by double-quote
+marks, such as <CODE>&quot;A Hard Day's Night&quot;</CODE> or <CODE>&quot;000123&quot;</CODE>.
+
+<P><STRONG>structured list:&nbsp;&nbsp;&nbsp;</STRONG> A list with <EM>sublists.</EM>
+
+<P><STRONG>subexpression:&nbsp;&nbsp;&nbsp;</STRONG> An element of a <EM>compound expression.</EM> For
+example, the expression <CODE>(+ (* 2 3) 4)</CODE> has three subexpressions: <CODE>+</CODE>, <CODE>(* 2 3)</CODE>, and <CODE>4</CODE>.
+
+<P><STRONG>sublist:&nbsp;&nbsp;&nbsp;</STRONG> An element of a list that is itself a smaller list.  For
+example, <CODE>(c d)</CODE> is a sublist of the list <CODE>(a b (c d) e)</CODE>.
+
+<P><STRONG>substitution model:&nbsp;&nbsp;&nbsp;</STRONG> The way we've explained how Scheme evaluates
+function invocations.  According to the substitution model, when a compound
+procedure is invoked, Scheme goes through the body of that procedure and
+replaces every copy of a formal parameter with the corresponding actual
+argument value.  Then Scheme evaluates the resulting expression.
+
+<P><STRONG>subtree:&nbsp;&nbsp;&nbsp;</STRONG> A tree that is part of a larger tree.
+
+<P><STRONG>symbol:&nbsp;&nbsp;&nbsp;</STRONG> A word that isn't a number or a string.
+
+<P><STRONG>symbolic computing:&nbsp;&nbsp;&nbsp;</STRONG> Computing that is about words, sentences, and
+ideas instead of just numbers.
+
+<P>
+<P><STRONG>tree:&nbsp;&nbsp;&nbsp;</STRONG> A two-dimensional data structure used to represent
+hierarchical information.
+
+<P><STRONG>tree recursion:&nbsp;&nbsp;&nbsp;</STRONG> A form of recursion in which a procedure calls
+itself recursively more than one time in each level of the recursion.
+
+<P><STRONG>type:&nbsp;&nbsp;&nbsp;</STRONG> A category of data.  For example, words, sentences,
+Booleans, and procedures are types.  Some types overlap: All numbers are
+also words, for example.
+
+<P>
+<P><STRONG>variable:&nbsp;&nbsp;&nbsp;</STRONG> A connection between a name and a value.  Variables can
+be <EM>global</EM> or <EM>local.</EM>
+
+<P><STRONG>vector:&nbsp;&nbsp;&nbsp;</STRONG> A primitive data structure that is mutable and allows
+random access.
+
+<P><STRONG>word:&nbsp;&nbsp;&nbsp;</STRONG> A sequence of characters, including letters, digits, or
+punctuation.  Numbers are a special case of words.
+
+<P>
+
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="appendix-funlist.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch3/part2 b/js/games/nluqo.github.io/~bh/ssch3/part2
new file mode 100644
index 0000000..6a78f0e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch3/part2
@@ -0,0 +1,57 @@
+\input bkmacs
+
+\part{Composition of Functions}
+\justidx{composition of functions}
+\justidx{function composition}
+
+The big idea in this part of the book is deceptively simple.  It's that we
+can take the value returned by one function and use it as an argument to
+another function.  By ``hooking up'' two functions in this way, we invent a
+new, third function.  For example, let's say we have a function that adds
+the letter {\tt s} to the end of a word:
+
+\smallskip
+\centerline{{\it add-s\/}(``{\tt run}'') = ``{\tt runs}''}
+\smallskip
+
+\noindent and another function that puts two words together into a sentence:
+
+\smallskip
+\centerline{{\it sentence\/}(``{\tt day}'', ``{\tt tripper}'') = ``{\tt
+day tripper}''}
+\smallskip
+
+\noindent We can combine these to create a new function that represents the
+third person singular form of a verb:
+
+\smallskip
+\centerline{{\it third-person\/}(verb) = {\it sentence\/}(``{\tt
+she}'', {\it add-s\/}(verb))}
+\smallskip
+
+\noindent That general formula looks like this when applied to a particular
+verb:
+
+\smallskip
+\centerline{{\it third-person\/}(``{\tt sing}'') = ``{\tt she sings}''}
+\smallskip
+
+\noindent The way we say it in Scheme is
+
+{\prgex%
+(define (third-person verb)
+  (sentence 'she (add-s verb)))
+}
+
+\noindent (When we give an example like this at the beginning of a part,
+don't worry about the fact that you don't recognize the notation.  The
+example is meant as a preview of what you'll learn in the coming chapters.)
+\vfill\eject
+
+We know that this idea probably doesn't look like much of a big deal to
+you.  It seems obvious.  Nevertheless, it will turn out that we can express
+a wide variety of computational algorithms by linking functions together in
+this way.  This linking is what we mean by
+``\bkidx{functional}{programming}.''
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch3/part2.html b/js/games/nluqo.github.io/~bh/ssch3/part2.html
new file mode 100644
index 0000000..519a345
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch3/part2.html
@@ -0,0 +1,85 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science, Part 3: Composition of Functions</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Part II</H2>
+<H1>Composition of Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch03.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch2/functions.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="people.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR><BIG>
+<A NAME="g1"></A>
+<A NAME="g2"></A>
+
+<P>The big idea in this part of the book is deceptively simple.  It's that we
+can take the value returned by one function and use it as an argument to
+another function.  By &ldquo;hooking up&rdquo; two functions in this way, we invent a
+new, third function.  For example, let's say we have a function that adds
+the letter <CODE>s</CODE> to the end of a word:
+
+<P><P><CENTER><EM>add-s</EM>(&ldquo;<CODE>run</CODE>&rdquo;) = &ldquo;<CODE>runs</CODE>&rdquo;</CENTER>
+<P>
+and another function that puts two words together into a sentence:
+
+<P><P><CENTER><EM>sentence</EM>(&ldquo;<CODE>day</CODE>&rdquo;, &ldquo;<CODE>tripper</CODE>&rdquo;) = &ldquo;<CODE>day tripper</CODE>&rdquo;</CENTER>
+<P>
+We can combine these to create a new function that represents the
+third person singular form of a verb:
+
+<P><P><CENTER><EM>third-person</EM>(verb) = <EM>sentence</EM>(&ldquo;<CODE>she</CODE>&rdquo;, <EM>add-s</EM>(verb))</CENTER>
+<P>
+That general formula looks like this when applied to a particular
+verb:
+
+<P><P><CENTER><EM>third-person</EM>(&ldquo;<CODE>sing</CODE>&rdquo;) = &ldquo;<CODE>she sings</CODE>&rdquo;</CENTER>
+<P>
+The way we say it in Scheme is
+
+<P><PRE>(define (third-person verb)
+  (sentence 'she (add-s verb)))
+</PRE>
+
+<P>(When we give an example like this at the beginning of a part,
+don't worry about the fact that you don't recognize the notation.  The
+example is meant as a preview of what you'll learn in the coming chapters.)
+
+We know that this idea probably doesn't look like much of a big deal to
+you.  It seems obvious.  Nevertheless, it will turn out that we can express
+a wide variety of computational algorithms by linking functions together in
+this way.  This linking is what we mean by
+&ldquo;<A NAME="g3"></A><A NAME="g4"></A>functional programming.&rdquo;
+
+<P>
+</BIG>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch2/functions.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="people.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch3/people b/js/games/nluqo.github.io/~bh/ssch3/people
new file mode 100644
index 0000000..5e02f9e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch3/people
@@ -0,0 +1,566 @@
+\input bkmacs
+\photo{In a bucket brigade, each person hands a result to the
+next.}{\pagetag{\bucket}\pspicture{4in}{bucket}{bucket}{\TrimBoundingBox{8pt}}}
+\chapter{Expressions}
+\chaptag{\people}
+
+The interaction between you and Scheme is called the
+``\idx{read-eval-print loop}.'' Scheme reads what you type, {\it evaluates\/}
+it, and prints the answer, and then does the same thing over again.  We're
+emphasizing the word ``evaluates'' because the essence of understanding
+Scheme is knowing what it means to evaluate something.
+
+Each question you type is called an {\it \idx{expression}.}\footnt{In
+other programming languages, the name for what you type might be a
+``command'' or an ``instruction.'' The name ``expression'' is meant to
+emphasize that we are talking about the notation in which you ask the
+question, as distinct from the idea in your head, just as in English you
+express an idea in words.  Also, in Scheme we are more often asking
+questions rather than telling the computer to take some action.} The
+expression can be a single value, such as {\tt 26}, or something more
+complicated in parentheses, such as {\tt (+ 14 7)}.  The first kind of
+expression is called an {\it atom\/} (or {\it
+\bkidx{atomic}{expression}\/}), while the second kind of expression is
+called a {\it \bkidx{compound}{expression},\/} because it's made out of the
+smaller expressions {\tt +}, {\tt 14}, and {\tt 7}.  The metaphor is from
+chemistry, where atoms of single elements are combined to form chemical
+compounds.  We sometimes call the expressions within a compound expression
+its {\it \idx{subexpression}s.}
+
+Compound expressions tell Scheme to ``do'' a procedure.  This idea is so
+important that it has a lot of names.  You can {\it call\/} a procedure; you
+can {\it invoke\/} a procedure; or you can {\it apply\/} a procedure to some
+numbers or other values.  All of these mean the same thing.
+
+If you've programmed before in some other language, you're probably
+accustomed to the idea of several different types of statements for
+different purposes.  For example, a ``print statement'' may look very
+different from an ``assignment statement.'' In Scheme, everything is done by
+calling procedures, just as we've been doing here.  Whatever you want to do,
+there's only one notation:\ the compound expression.
+
+Notice that we said a compound expression contains expressions.  This means
+that you can't understand what an expression is until you already understand
+what an expression is.  This sort of circularity comes up again and again
+and again and again\footnt{and again} in Scheme programming.  How do
+you ever get a handle on this self-referential idea?  The secret is that
+there has to be some simple kind of expression that {\it doesn't\/} have
+smaller expressions inside it---the atomic expressions.
+
+It's easy to understand an expression that just contains one number.
+Numbers are {\it self-evaluating;\/} that is, when you evaluate a
+\justidx{expression, self-evaluating}
+\justidx{self-evaluating expression}
+number, you just get the same number back.
+
+Once you understand {\it numbers,\/} you can understand {\it expressions
+that add up\/} numbers.  And once you understand {\it those\/} expressions,
+you can use that knowledge to figure out {\it expressions that add up\/}
+expressions-that-add-up-numbers.  Then \ellipsis\ and so on.  In practice, you
+don't usually think about all these levels of complexity separately.  You
+just think, ``I know what a number is, and I know what it means to add up
+{\it any\/} expressions.''
+
+{\advance\medskipamount by -3pt
+
+So, for example, to understand the expression
+
+{\prgex%
+(+ (+ 2 3) (+ 4 5))
+}
+
+\noindent you must first understand {\tt 2} and {\tt 3} as self-evaluating
+numbers, then understand {\tt (+~2~3)} as an expression that adds those
+numbers, then understand how the sum, 5, contributes to the overall
+expression.
+
+} % medskipamount
+
+By the way, in ordinary arithmetic you've gotten used to the idea that
+parentheses can be optional; $3+4\times 5$ means the same as $3+(4\times 5)$.
+But in Scheme, parentheses are {\it never\/} optional.  Every procedure call
+must be enclosed in parentheses.
+
+\subhd{Little People}
+
+You may not have realized it, but inside your computer there are thousands
+of \idx{little people}.  Each of them is a specialist in one particular
+Scheme procedure.  The head little person, Alonzo, is in charge of the
+read-eval-print loop.
+
+{\advance\medskipamount by -3pt
+
+When you enter an expression, such as
+
+{\prgex%
+(- (+ 5 8) (+ 2 4))
+}
+
+\noindent Alonzo reads it, hires other little people to help him evaluate
+it, and finally prints {\tt 7}, its value.  We're going to focus on the
+evaluation step.
+
+} % medskipamount
+
+Three little people work together to evaluate the expression:\ a minus person
+and two plus people.  (To make this account easier to read, we're using the
+ordinary English words ``minus'' and ``plus'' to refer to the procedures
+whose Scheme names are {\tt -} and {\tt +}.  Don't be confused by this and
+try to type {\tt minus} to Scheme.)
+
+Since the overall expression is a subtraction, Alonzo hires Alice, the first
+available minus specialist.  Here's how the little people evaluate the
+expression:
+
+\medskip
+{\parindent=1em
+\bb Alice wants to be given some numbers, so before she can do any work, she
+complains to Alonzo that she wants to know which numbers to subtract.
+
+\bb Alonzo looks at the subexpressions that should provide Alice's
+arguments, namely, {\tt (+~5~8)} and {\tt (+~2~4)}.  Since both of these are
+addition problems, Alonzo hires two plus specialists, Bernie and Cordelia,
+and tells them to report their results to Alice.
+
+\bb The first plus person, Bernie, also wants some numbers, so he asks
+Alonzo for them.
+
+\bb Alonzo looks at the subexpressions of {\tt (+~5~8)} that should provide
+Bernie's arguments, namely, {\tt 5} and {\tt 8}.  Since these are both
+atomic, Alonzo can give them directly to Bernie.
+
+\bb Bernie adds his arguments, {\tt 5} and {\tt 8}, to get {\tt 13}.  He
+does this in his head---we don't have to worry about how he knows how to
+add; that's his job.
+
+\bb The second plus person, Cordelia, wants some arguments; Alonzo looks at
+the subexpressions of {\tt (+~2~4)} and gives the {\tt 2} and {\tt 4} to
+Cordelia.  She adds them, getting {\tt 6}.
+
+\bb Bernie and Cordelia hand their results to the waiting Alice, who can now
+subtract them to get {\tt 7}.  She hands that result to Alonzo, who prints
+it.
+
+}\medskip
+
+How does Alonzo know what's the argument to what?  That's what the grouping
+of subexpressions with parentheses is about.  Since the plus expressions are
+inside the minus expression, the plus people have to give their results to
+the minus person.
+
+We've made it seem as if Bernie does his work before Cordelia does hers.  In
+fact, the {\it \bkidx{order of}{evaluation}\/} of the argument subexpressions
+is not specified in Scheme; different implementations may do it in different
+orders.  In particular, Cordelia might do her work before Bernie, or they
+might even do their work at the same time, if we're using a {\it parallel
+processing\/} computer.  However, it {\it is\/} important that both Bernie
+and Cordelia finish their work before Alice can do hers.
+
+The entire call to {\tt -} is itself a single expression; it could be a
+part of an even larger expression:
+
+{\prgex%
+> (* (- (+ 5 8) (+ 2 4))
+     (/ 10 2))
+35
+}
+
+\noindent This says to multiply the numbers 7 and 5, except that instead of
+saying 7 and 5 explicitly, we wrote expressions whose values are 7 and 5.
+(By the way, we would say that the above expression has three
+subexpressions, the {\tt *} and the two arguments.  The argument
+subexpressions, in turn, have their own subexpressions.  However, these
+sub-subexpressions, such as {\tt (+~5~8)}, don't count as
+subexpressions of the whole thing.)
+
+We can express this organization of little people more formally.  If
+an expression is atomic, Scheme just knows the value.\footnt{We'll
+explain this part in more detail later.} Otherwise, it is a compound
+expression, so Scheme first evaluates all the subexpressions (in some
+unspecified order) and then applies the value of the first one,
+which had better be a procedure, to the values of the rest of them.
+Those other subexpressions are the \idx{argument}s.
+
+We can use this rule to evaluate arbitrarily complex expressions, and
+Scheme won't get confused.  No matter how long the expression is, it's made
+up of smaller subexpressions to which the same rule applies.
+Look at this long, messy example:
+\justidx{parentheses, for procedure invocation}
+
+{\advance\medskipamount by -1pt
+{\prgex%
+> (+ (* 2 (/ 14 7) 3)
+     (/ (* (- (* 3 5) 3) (+ 1 1))
+        (- (* 4 3) (* 3 2)))
+     (- 15 18))
+13
+}
+
+Scheme understands this by looking for the subexpressions of the overall
+expression, like this:
+
+{\prgex%
+(+ (\ellipsis)
+   (\ellipsis         ; One of them takes two lines but you can tell by
+      \ellipsis)     ; matching parentheses that they're one expression.
+   (\ellipsis))
+}
+
+\noindent (Scheme ignores everything to the right of a \idx{semicolon}, so
+semicolons can be used to indicate \idx{comments}, as above.)
+
+} % medskipamount
+
+Notice that in the example above we asked {\tt +} to add {\it three\/}
+numbers.  In the {\tt functions} program of Chapter~\functions\ we
+pretended that every Scheme function accepts a fixed number of arguments,
+but actually, some functions can accept any number.  These include {\tt +},
+{\tt *}, {\tt word}, and {\tt sentence}.
+
+\subhd{Result Replacement}
+
+\justidx{result replacement}
+\justidx{replacement, result}
+Since a little person can't do his or her job until all of the necessary
+subexpressions have been evaluated by other little people, we can ``fast
+forward'' this process by skipping the parts about ``Alice waits for Bernie
+and Cordelia'' and starting with the completion of the smaller tasks by the
+lesser little people.
+
+To keep track of which result goes into which larger computation, you can
+write down a complicated expression and then {\it rewrite\/} it repeatedly,
+each time replacing some small expression with a simpler expression
+that has the same value.
+
+{\prgex%
+(+ (* \zboxit{(- 10 7)} (+ 4 1)) (- 15 (/ 12 3)) 17)
+(+ (* 3        \zboxit{(+ 4 1)}) (- 15 (/ 12 3)) 17)
+(+ \zboxit{(* 3        5      )} (- 15 (/ 12 3)) 17)
+(+ 15                   (- 15 \zboxit{(/ 12 3)}) 17)
+(+ 15                   \zboxit{(- 15 4       )} 17)
+\zboxit{(+ 15                   11              17)}
+43
+}
+
+\noindent In each line of the diagram, the boxed expression
+is the one that will be replaced with its value on the following line.
+
+If you like, you can save some steps by evaluating {\it several\/} small
+expressions from one line to the next:
+
+{\prgex%
+(+ (* \zboxit{(- 10 7)} \zboxit{(+ 4 1)}) (- 15 \zboxit{(/ 12 3)}) 17)
+(+ \zboxit{(* 3        5      )} \zboxit{(- 15 4       )} 17)
+\zboxit{(+ 15                   11              17)}
+43
+}
+
+\subhd{Plumbing Diagrams}
+
+Some people find it helpful to look at a pictorial form of the connections
+among subexpressions.  You can think of each procedure as a machine, like the
+\justidx{function machine}
+\justidx{machine, function}
+ones they drew on the chalkboard in junior high school.  
+
+\pspicture{1.4in}{function}{function}{}
+
+Each machine has some number of input hoppers on the top and one chute at the
+bottom.  You put something in each hopper, turn the crank, and something else
+comes out the bottom.  For a complicated expression, you hook up the output
+chute of one machine to the input hopper of another.  These combinations are
+called ``plumbing diagrams.'' Let's look at the \bkidx{plumbing}{diagram}
+for {\tt (- (+ 5 8) (+ 2 4))}:
+\pagetag{\crank}  %% Matt thinks this is a kludge but Brian...
+
+\pspicture{2.5in}{Plumbing Diagram}{plumbing}{\TrimTop{0.5truein}}
+
+You can annotate the diagram by indicating the actual information that flows
+through each pipe.  Here's how that would look for this expression:
+
+\pspicture{2.5in}{Annotated Plumbing Diagram}{annotated}{\TrimTop{0.5truein}
+\TrimBottom{0.15truein}}
+
+\subhd{Pitfalls}
+
+\pit One of the biggest problems that beginning Lisp programmers have comes
+from trying to read a program from left to right, rather than thinking about
+it in terms of expressions and subexpressions.  For example,
+
+{\prgex%
+(square (cos 3))
+}
+
+\noindent {\it doesn't\/} mean ``square three, then take the cosine of
+the answer you get.'' Instead, as you know, it means that the argument to
+{\tt square} is the return value from {\tt (cos~3)}.
+
+\pit Another big problem that people have is thinking that Scheme cares
+about the spaces, tabs, line breaks, and other ``white space'' in their
+Scheme programs.  We've been indenting our expressions to illustrate the way
+that subexpressions line up underneath each other.  But to Scheme,
+\justidx{indentation}
+
+{\prgex%
+(+ (* 2 (/ 14 7) 3) (/ (* (- (* 3 5) 3) (+ 1
+1)) (- (* 4 3) (* 3 2))) (- 15 18))
+}
+
+\noindent means the same thing as
+
+{\prgex%
+(+ (* 2 (/ 14 7) 3)
+   (/ (* (- (* 3 5) 3) (+ 1 1))
+      (- (* 4 3) (* 3 2)))
+   (- 15 18))
+}
+
+\noindent So in this expression:
+
+{\prgex%
+(+ (* 3 (sqrt 49)                            ;; weirdly formatted
+   (/ 12 4)))
+}
+
+\noindent there aren't two arguments to {\tt +}, even though it looks that
+way if you think about the indenting.  What Scheme does is look at the
+parentheses, and if you examine these carefully, you'll see that there are
+three arguments to {\tt *}:\ the atom {\tt 3}, the compound expression {\tt
+(sqrt~49)}, and the compound expression {\tt (/~12~4)}.  (And there's only one
+argument to {\tt +}.)
+
+\pit A consequence of Scheme's not caring about white space is that when you
+hit the return key, Scheme might not do anything.  If you're in the middle
+of an expression, Scheme waits until you're done typing the entire thing
+before it evaluates what you've typed.  This is fine if your program is
+correct, but if you type this in:
+
+{\prgex%
+(+ (* 3 4)
+   (/ 8 2)                              ; note missing right paren
+}
+
+\noindent then {\it nothing\/} will happen.  Even if you type forever, until
+you close the open parenthesis next to the {\tt +} sign, Scheme will still
+be reading an expression.  So if Scheme seems to be ignoring you, try typing
+a zillion close \idx{parentheses}.  (You'll probably get an error message about
+too many parentheses, but after that, Scheme should start paying attention
+again.)
+
+\pit You might get into the same sort of trouble if you have a double-quote
+mark ({\tt "}) in your program.  Everything inside a pair of quotation marks
+is treated as one single {\it \idx{string}.\/} We'll explain more about
+strings later.  For now, if your program has a stray quotation mark, like
+this:
+
+{\prgex%
+(+ (* 3 " 4)                            ; note extra quote mark
+   (/ 8 2))
+}
+
+\noindent then you can get into the same predicament of typing and having
+Scheme ignore you.  (Once you type the second quotation mark, you may still
+need some close parentheses, since the ones you type inside a string
+don't count.)
+
+\pit One other way that Scheme might seem to be ignoring you comes from the
+fact that you don't get a new Scheme prompt until you type in an expression
+and it's evaluated.  So if you just hit the {\tt return} or {\tt enter} key
+without typing anything, most versions of Scheme won't print a new prompt.
+
+\esubhd{Boring Exercises}
+
+{\exercise
+Translate the arithmetic expressions $(3+4) \times 5$ and $3+(4 \times 5)$
+into Scheme expressions, and into plumbing diagrams.
+}
+
+\solution
+$(3+4) \times 5$ becomes {\tt (*~(+~3~4)~5)} and $3+(4 \times 5)$ becomes
+{\tt (+~3~(*~4~5))}.
+
+Here are the plumbing diagrams:
+
+\pspicture{1.5in}{Plumbing diagram}{ex3.1}{\TrimTop{0.5truein}}
+@
+
+{\exercise
+How many little people does Alonzo hire in evaluating each
+of the following expressions:
+ 
+{\prgex%
+(+ 3 (* 4 5) (- 10 4))
+ 
+(+ (* (- (/ 8 2) 1) 5) 2)
+ 
+(* (+ (- 3 (/ 4 2))
+      (sin (* 3 2))
+      (- 8 (sqrt 5)))
+   (- (/ 2 3)
+      4))
+}}
+
+\solution
+The number of little people is equal to the number of functions invoked,
+i.e., 3, 4, and 10 for the three examples.
+@
+
+{\exercise
+Each of the expressions in the previous exercise is compound.  How many
+subexpressions (not including subexpressions of subexpressions) does each
+one have?
+
+For example,
+
+{\prgex%
+(* (- 1 (+ 3 4)) 8)
+}
+
+\noindent has three subexpressions; you wouldn't count {\tt (+~3~4)}.
+}
+
+\solution
+4, 3, and 3.  Remember that the name of the function is one of the
+subexpressions!  So for the first expression the four
+subexpressions are:
+
+{\prgex%
++
+3
+(* 4 5)
+(- 10 4)
+}
+@
+
+ 
+{\exercise
+Five little people are hired in evaluating the following expression:
+ 
+{\prgex%
+(+ (* 3 (- 4 7))
+   (- 8 (- 3 5)))
+}
+ 
+Give each little person a name and list her specialty, the argument values
+she receives, her return value, and the name of the little person to whom
+she tells her result.  }
+
+\solution
+Working from inside out:
+
+{\parskip=0pt\parindent=0pt
+Marvin's specialty is {\tt -}, gets arguments {\tt 4} and {\tt 7}, returns
+{\tt -3} to Tenar.
+
+Tenar's specialty is {\tt *}, gets arguments {\tt 3} and {\tt -3}, returns
+{\tt -9} to Piemur.
+
+Malvina's specialty is {\tt -}, gets arguments {\tt 3} and {\tt 5}, returns
+{\tt -2} to Manfred.
+
+Manfred's specialty is {\tt -}, gets arguments {\tt 8} and {\tt -2}, returns
+{\tt 10} to Piemur.
+
+Piemur's specialty is {\tt +}, gets arguments {\tt -9} and {\tt 10}, returns
+{\tt 1} to Alonzo.
+
+}
+@
+
+{\exercise
+Evaluate each of the following expressions using the result replacement
+technique:
+
+{\prgex%
+(sqrt (+ 6 (* 5 2)))
+
+(+ (+ (+ 1 2) 3) 4)
+}
+}
+
+\solution
+{\prgex%
+(sqrt (+ 6 (* 5 2)))
+(sqrt (+ 6 10))
+(sqrt 16)
+4
+
+(+ (+ (+ 1 2) 3) 4)
+(+ (+ 3 3) 4)
+(+ 6 4)
+10
+}
+@
+
+{\exercise
+Draw a plumbing diagram for each of the following expressions:
+ 
+{\prgex%
+(+ 3 4 5 6 7)
+ 
+(+ (+ 3 4) (+ 5 6 7))
+ 
+(+ (+ 3 (+ 4 5) 6) 7)
+}}
+
+\solution
+\pspicture{1.5in}{Plumbing diagrams}{ex3.6}{\TrimTop{1.5truein}}
+@
+
+{\exercise
+What value is returned by {\tt (/ 1 3)} in your version of
+Scheme?  (Some Schemes return a decimal fraction like {\tt 0.33333}, while
+others have exact fractional values like {\tt 1/3} built in.)
+}
+
+{\exercise
+Which of the functions that you explored in Chapter \functions\ will
+accept variable numbers of arguments?
+}
+
+\solution
+All the following functions take an arbitrary number of arguments:
+{\tt *}, {\tt +}, {\tt <=}, {\tt <}, {\tt =}, {\tt >=}, {\tt >}, {\tt and},
+{\tt max}, {\tt min}, {\tt or}, {\tt sentence}, and {\tt word}.
+
+Also, {\tt -} and {\tt /} take variable numbers of arguments in some
+versions of Scheme.
+@
+
+\esubhd{Real Exercises}
+
+{\exercise
+The expression {\tt (+~8~2)} has the value {\tt 10}.  It is a compound
+expression made up of three atoms.  For this problem, write five other
+Scheme expressions whose values are also the number ten:
+ 
+\medskip
+{\parindent=1em
+\bb An atom
+
+\bb Another compound expression made up of three atoms
+
+\bb A compound expression made up of four atoms
+
+\bb A compound expression made up of an atom and two compound subexpressions
+
+\bb Any other kind of expression
+
+}\medskip
+}
+
+\solution
+{\parindent=1em
+\bb {\tt 10} is the only possible answer.
+\bb {\tt (+ 4 6)}, or any appropriate two-argument function with atomic
+arguments.
+\bb {\tt (+ 2 3 5)}, or any appropriate three-argument function with atomic
+arguments.
+\bb {\tt (* (+ 1 1) (- 9 4))}, or any two-argument function whose arguments
+are provided by function calls.
+\bb {\tt (sqrt 100)}, or many more complicated possibilities.
+
+}
+@
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch3/people.html b/js/games/nluqo.github.io/~bh/ssch3/people.html
new file mode 100644
index 0000000..a4d75ab
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch3/people.html
@@ -0,0 +1,486 @@
+<P>
+
+<P><A NAME="bucket"></A><CENTER><IMG SRC="../ss-pics/bucket.jpg" ALT="figure: bucket"></CENTER><P><CENTER>In a bucket brigade, each person hands a result to the
+next.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 3: Expressions</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 3</H2>
+<H1>Expressions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch03.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch4/defining.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>The interaction between you and Scheme is called the
+&quot;read-eval-print loop.&quot; Scheme reads what you type, <EM>evaluates</EM>
+it, and prints the answer, and then does the same thing over again.  We're
+emphasizing the word &quot;evaluates&quot; because the essence of understanding
+Scheme is knowing what it means to evaluate something.
+
+<P>Each question you type is called an <EM>expression.</EM><A NAME="text1" HREF="people.html#ft1">[1]</A> The
+expression can be a single value, such as <CODE>26</CODE>, or something more
+complicated in parentheses, such as <CODE>(+ 14 7)</CODE>.  The first kind of
+expression is called an <EM>atom</EM> (or <EM><A NAME="g1"></A><A NAME="g2"></A>atomic expression</EM>), while the second kind of expression is
+called a <EM><A NAME="g3"></A><A NAME="g4"></A>compound expression,</EM> because it's made out of the
+smaller expressions <CODE>+</CODE>, <CODE>14</CODE>, and <CODE>7</CODE>.  The metaphor is from
+chemistry, where atoms of single elements are combined to form chemical
+compounds.  We sometimes call the expressions within a compound expression
+its <EM>subexpressions.</EM>
+
+<P>Compound expressions tell Scheme to &quot;do&quot; a procedure.  This idea is so
+important that it has a lot of names.  You can <EM>call</EM> a procedure; you
+can <EM>invoke</EM> a procedure; or you can <EM>apply</EM> a procedure to some
+numbers or other values.  All of these mean the same thing.
+
+<P>If you've programmed before in some other language, you're probably
+accustomed to the idea of several different types of statements for
+different purposes.  For example, a &quot;print statement&quot; may look very
+different from an &quot;assignment statement.&quot; In Scheme, everything is done by
+calling procedures, just as we've been doing here.  Whatever you want to do,
+there's only one notation: the compound expression.
+
+<P>Notice that we said a compound expression contains expressions.  This means
+that you can't understand what an expression is until you already understand
+what an expression is.  This sort of circularity comes up again and again
+and again and again<A NAME="text2" HREF="people.html#ft2">[2]</A> in Scheme programming.  How do
+you ever get a handle on this self-referential idea?  The secret is that
+there has to be some simple kind of expression that <EM>doesn't</EM> have
+smaller expressions inside it&mdash;the atomic expressions.
+
+<P>It's easy to understand an expression that just contains one number.
+Numbers are <EM>self-evaluating;</EM> that is, when you evaluate a
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+number, you just get the same number back.
+
+<P>Once you understand <EM>numbers,</EM> you can understand <EM>expressions
+that add up</EM> numbers.  And once you understand <EM>those</EM> expressions,
+you can use that knowledge to figure out <EM>expressions that add up</EM>
+expressions-that-add-up-numbers.  Then  and so on.  In practice, you
+don't usually think about all these levels of complexity separately.  You
+just think, &quot;I know what a number is, and I know what it means to add up
+<EM>any</EM> expressions.&quot;
+
+<P>
+So, for example, to understand the expression
+
+<P><PRE>(+ (+ 2 3) (+ 4 5))
+</PRE>
+
+<P>you must first understand <CODE>2</CODE> and <CODE>3</CODE> as self-evaluating
+numbers, then understand <CODE>(+ 2 3)</CODE> as an expression that adds those
+numbers, then understand how the sum, 5, contributes to the overall
+expression.
+
+<P> 
+By the way, in ordinary arithmetic you've gotten used to the idea that
+parentheses can be optional; 3+4&times;5 means the same as 3+(4&times;5).
+But in Scheme, parentheses are <EM>never</EM> optional.  Every procedure call
+must be enclosed in parentheses.
+
+<P><H2>Little People</H2>
+
+<P>You may not have realized it, but inside your computer there are thousands
+of little people.  Each of them is a specialist in one particular
+Scheme procedure.  The head little person, Alonzo, is in charge of the
+read-eval-print loop.
+
+<P>
+When you enter an expression, such as
+
+<P><PRE>(- (+ 5 8) (+ 2 4))
+</PRE>
+
+<P>Alonzo reads it, hires other little people to help him evaluate
+it, and finally prints <CODE>7</CODE>, its value.  We're going to focus on the
+evaluation step.
+
+<P> 
+Three little people work together to evaluate the expression: a minus person
+and two plus people.  (To make this account easier to read, we're using the
+ordinary English words &quot;minus&quot; and &quot;plus&quot; to refer to the procedures
+whose Scheme names are <CODE>-</CODE> and <CODE>+</CODE>.  Don't be confused by this and
+try to type <CODE>minus</CODE> to Scheme.)
+
+<P>Since the overall expression is a subtraction, Alonzo hires Alice, the first
+available minus specialist.  Here's how the little people evaluate the
+expression:
+
+<P><P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Alice wants to be given some numbers, so before she can do any work, she
+complains to Alonzo that she wants to know which numbers to subtract.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Alonzo looks at the subexpressions that should provide Alice's
+arguments, namely, <CODE>(+ 5 8)</CODE> and <CODE>(+ 2 4)</CODE>.  Since both of these are
+addition problems, Alonzo hires two plus specialists, Bernie and Cordelia,
+and tells them to report their results to Alice.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The first plus person, Bernie, also wants some numbers, so he asks
+Alonzo for them.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Alonzo looks at the subexpressions of <CODE>(+ 5 8)</CODE> that should provide
+Bernie's arguments, namely, <CODE>5</CODE> and <CODE>8</CODE>.  Since these are both
+atomic, Alonzo can give them directly to Bernie.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Bernie adds his arguments, <CODE>5</CODE> and <CODE>8</CODE>, to get <CODE>13</CODE>.  He
+does this in his head&mdash;we don't have to worry about how he knows how to
+add; that's his job.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The second plus person, Cordelia, wants some arguments; Alonzo looks at
+the subexpressions of <CODE>(+ 2 4)</CODE> and gives the <CODE>2</CODE> and <CODE>4</CODE> to
+Cordelia.  She adds them, getting <CODE>6</CODE>.
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Bernie and Cordelia hand their results to the waiting Alice, who can now
+subtract them to get <CODE>7</CODE>.  She hands that result to Alonzo, who prints
+it.
+
+</TABLE><P>
+How does Alonzo know what's the argument to what?  That's what the grouping
+of subexpressions with parentheses is about.  Since the plus expressions are
+inside the minus expression, the plus people have to give their results to
+the minus person.
+
+<P>We've made it seem as if Bernie does his work before Cordelia does hers.  In
+fact, the <EM><A NAME="g7"></A><A NAME="g8"></A>order of evaluation</EM> of the argument subexpressions
+is not specified in Scheme; different implementations may do it in different
+orders.  In particular, Cordelia might do her work before Bernie, or they
+might even do their work at the same time, if we're using a <EM>parallel
+processing</EM> computer.  However, it <EM>is</EM> important that both Bernie
+and Cordelia finish their work before Alice can do hers.
+
+<P>The entire call to <CODE>-</CODE> is itself a single expression; it could be a
+part of an even larger expression:
+
+<P><PRE>&gt; (* (- (+ 5 8) (+ 2 4))
+     (/ 10 2))
+35
+</PRE>
+
+<P>This says to multiply the numbers 7 and 5, except that instead of
+saying 7 and 5 explicitly, we wrote expressions whose values are 7 and 5.
+(By the way, we would say that the above expression has three
+subexpressions, the <CODE>*</CODE> and the two arguments.  The argument
+subexpressions, in turn, have their own subexpressions.  However, these
+sub-subexpressions, such as <CODE>(+ 5 8)</CODE>, don't count as
+subexpressions of the whole thing.)
+
+<P>We can express this organization of little people more formally.  If
+an expression is atomic, Scheme just knows the value.<A NAME="text3" HREF="people.html#ft3">[3]</A> Otherwise, it is a compound
+expression, so Scheme first evaluates all the subexpressions (in some
+unspecified order) and then applies the value of the first one,
+which had better be a procedure, to the values of the rest of them.
+Those other subexpressions are the arguments.
+
+<P>We can use this rule to evaluate arbitrarily complex expressions, and
+Scheme won't get confused.  No matter how long the expression is, it's made
+up of smaller subexpressions to which the same rule applies.
+Look at this long, messy example:
+<A NAME="g9"></A>
+
+<P><PRE>&gt; (+ (* 2 (/ 14 7) 3)
+     (/ (* (- (* 3 5) 3) (+ 1 1))
+        (- (* 4 3) (* 3 2)))
+     (- 15 18))
+13
+</PRE>
+
+<P>Scheme understands this by looking for the subexpressions of the overall
+expression, like this:
+
+<P><PRE>(+ ()
+   (        ; One of them takes two lines but you can tell by
+      )     ; matching parentheses that they're one expression.
+   ())
+</PRE>
+
+<P>(Scheme ignores everything to the right of a semicolon, so
+semicolons can be used to indicate comments, as above.)
+
+<P> 
+Notice that in the example above we asked <CODE>+</CODE> to add <EM>three</EM>
+numbers.  In the <CODE>functions</CODE> program of Chapter 2 we
+pretended that every Scheme function accepts a fixed number of arguments,
+but actually, some functions can accept any number.  These include <CODE>+</CODE>,
+<CODE>*</CODE>, <CODE>word</CODE>, and <CODE>sentence</CODE>.
+
+<P><H2>Result Replacement</H2>
+
+<P><A NAME="g10"></A>
+<A NAME="g11"></A>
+Since a little person can't do his or her job until all of the necessary
+subexpressions have been evaluated by other little people, we can &quot;fast
+forward&quot; this process by skipping the parts about &quot;Alice waits for Bernie
+and Cordelia&quot; and starting with the completion of the smaller tasks by the
+lesser little people.
+
+<P>To keep track of which result goes into which larger computation, you can
+write down a complicated expression and then <EM>rewrite</EM> it repeatedly,
+each time replacing some small expression with a simpler expression
+that has the same value.
+
+<P><PRE>(+ (* <CODE STYLE="border:solid">(- 10 7)</code> (+ 4 1)) (- 15 (/ 12 3)) 17)
+(+ (* 3        <CODE STYLE="border:solid">(+ 4 1)</code>) (- 15 (/ 12 3)) 17)
+(+ <CODE STYLE="border:solid">(* 3        5      )</code> (- 15 (/ 12 3)) 17)
+(+ 15                   (- 15 <CODE STYLE="border:solid">(/ 12 3)</code>) 17)
+(+ 15                   <CODE STYLE="border:solid">(- 15 4       )</code> 17)
+<CODE STYLE="border:solid">(+ 15                   11              17)</code>
+43
+</PRE>
+
+<P>In each line of the diagram, the boxed expression
+is the one that will be replaced with its value on the following line.
+
+<P>If you like, you can save some steps by evaluating <EM>several</EM> small
+expressions from one line to the next:
+
+<P><PRE>(+ (* <CODE STYLE="border:solid">(- 10 7)</code> <CODE STYLE="border:solid">(+ 4 1)</code>) (- 15 <CODE STYLE="border:solid">(/ 12 3)</code>) 17)
+(+ <CODE STYLE="border:solid">(* 3        5      )</code> <CODE STYLE="border:solid">(- 15 4       )</code> 17)
+<CODE STYLE="border:solid">(+ 15                   11              17)</code>
+43
+</PRE>
+
+<P><H2>Plumbing Diagrams</H2>
+<A NAME="crank"></A>  
+
+<P>Some people find it helpful to look at a pictorial form of the connections
+among subexpressions.  You can think of each procedure as a machine, like the
+<A NAME="g12"></A>
+<A NAME="g13"></A>
+ones they drew on the chalkboard in junior high school.  
+
+<P><CENTER><IMG SRC="../ss-pics/function.jpg" ALT="figure: function"></CENTER>
+
+<P>Each machine has some number of input hoppers on the top and one chute at the
+bottom.  You put something in each hopper, turn the crank, and something else
+comes out the bottom.  For a complicated expression, you hook up the output
+chute of one machine to the input hopper of another.  These combinations are
+called &quot;plumbing diagrams.&quot; Let's look at the <A NAME="g14"></A><A NAME="g15"></A>plumbing diagram
+for <CODE>(- (+ 5 8) (+ 2 4))</CODE>:
+<CENTER><IMG SRC="../ss-pics/plumbing.jpg" ALT="figure: plumbing"></CENTER>
+
+<P>You can annotate the diagram by indicating the actual information that flows
+through each pipe.  Here's how that would look for this expression:
+
+<P><CENTER><IMG SRC="../ss-pics/annotated.jpg" ALT="figure: annotated"></CENTER>
+
+<P><H2>Pitfalls</H2>
+
+<P>One of the biggest problems that beginning Lisp programmers have comes
+from trying to read a program from left to right, rather than thinking about
+it in terms of expressions and subexpressions.  For example,
+
+<P><PRE>(square (cos 3))
+</PRE>
+
+<P><EM>doesn't</EM> mean &quot;square three, then take the cosine of
+the answer you get.&quot; Instead, as you know, it means that the argument to
+<CODE>square</CODE> is the return value from <CODE>(cos 3)</CODE>.
+
+<P>Another big problem that people have is thinking that Scheme cares
+about the spaces, tabs, line breaks, and other &quot;white space&quot; in their
+Scheme programs.  We've been indenting our expressions to illustrate the way
+that subexpressions line up underneath each other.  But to Scheme,
+<A NAME="g16"></A>
+
+<P><PRE>(+ (* 2 (/ 14 7) 3) (/ (* (- (* 3 5) 3) (+ 1
+1)) (- (* 4 3) (* 3 2))) (- 15 18))
+</PRE>
+
+<P>means the same thing as
+
+<P><PRE>(+ (* 2 (/ 14 7) 3)
+   (/ (* (- (* 3 5) 3) (+ 1 1))
+      (- (* 4 3) (* 3 2)))
+   (- 15 18))
+</PRE>
+
+<P>So in this expression:
+
+<P><PRE>(+ (* 3 (sqrt 49)                            ;; weirdly formatted
+   (/ 12 4)))
+</PRE>
+
+<P>there aren't two arguments to <CODE>+</CODE>, even though it looks that
+way if you think about the indenting.  What Scheme does is look at the
+parentheses, and if you examine these carefully, you'll see that there are
+three arguments to <CODE>*</CODE>: the atom <CODE>3</CODE>, the compound expression <CODE>(sqrt 49)</CODE>, and the compound expression <CODE>(/ 12 4)</CODE>.  (And there's only one
+argument to <CODE>+</CODE>.)
+
+<P>A consequence of Scheme's not caring about white space is that when you
+hit the return key, Scheme might not do anything.  If you're in the middle
+of an expression, Scheme waits until you're done typing the entire thing
+before it evaluates what you've typed.  This is fine if your program is
+correct, but if you type this in:
+
+<P><PRE>(+ (* 3 4)
+   (/ 8 2)                              ; note missing right paren
+</PRE>
+
+<P>then <EM>nothing</EM> will happen.  Even if you type forever, until
+you close the open parenthesis next to the <CODE>+</CODE> sign, Scheme will still
+be reading an expression.  So if Scheme seems to be ignoring you, try typing
+a zillion close parentheses.  (You'll probably get an error message about
+too many parentheses, but after that, Scheme should start paying attention
+again.)
+
+<P>You might get into the same sort of trouble if you have a double-quote
+mark (<CODE>&quot;</CODE>) in your program.  Everything inside a pair of quotation marks
+is treated as one single <EM>string.</EM> We'll explain more about
+strings later.  For now, if your program has a stray quotation mark, like
+this:
+
+<P><PRE>(+ (* 3 &quot; 4)                            ; note extra quote mark
+   (/ 8 2))
+</PRE>
+
+<P>then you can get into the same predicament of typing and having
+Scheme ignore you.  (Once you type the second quotation mark, you may still
+need some close parentheses, since the ones you type inside a string
+don't count.)
+
+<P>One other way that Scheme might seem to be ignoring you comes from the
+fact that you don't get a new Scheme prompt until you type in an expression
+and it's evaluated.  So if you just hit the <CODE>return</CODE> or <CODE>enter</CODE> key
+without typing anything, most versions of Scheme won't print a new prompt.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>3.1</B>&nbsp;&nbsp;Translate the arithmetic expressions (3+4)&times;5 and 3+(4&times;5)
+into Scheme expressions, and into plumbing diagrams.
+
+
+<P>
+<B>3.2</B>&nbsp;&nbsp;How many little people does Alonzo hire in evaluating each
+of the following expressions:
+ 
+<PRE>(+ 3 (* 4 5) (- 10 4))
+ 
+(+ (* (- (/ 8 2) 1) 5) 2)
+ 
+(* (+ (- 3 (/ 4 2))
+      (sin (* 3 2))
+      (- 8 (sqrt 5)))
+   (- (/ 2 3)
+      4))
+</PRE>
+
+<P>
+<B>3.3</B>&nbsp;&nbsp;Each of the expressions in the previous exercise is compound.  How many
+subexpressions (not including subexpressions of subexpressions) does each
+one have?
+
+<P>For example,
+
+<P><PRE>(* (- 1 (+ 3 4)) 8)
+</PRE>
+
+<P>has three subexpressions; you wouldn't count <CODE>(+ 3 4)</CODE>.
+
+
+<P>
+ 
+<B>3.4</B>&nbsp;&nbsp;Five little people are hired in evaluating the following expression:
+ 
+<PRE>(+ (* 3 (- 4 7))
+   (- 8 (- 3 5)))
+</PRE>
+ 
+Give each little person a name and list her specialty, the argument values
+she receives, her return value, and the name of the little person to whom
+she tells her result.  
+
+<P>
+<B>3.5</B>&nbsp;&nbsp;Evaluate each of the following expressions using the result replacement
+technique:
+
+<P><PRE>(sqrt (+ 6 (* 5 2)))
+
+(+ (+ (+ 1 2) 3) 4)
+</PRE>
+
+
+<P>
+<B>3.6</B>&nbsp;&nbsp;Draw a plumbing diagram for each of the following expressions:
+ 
+<PRE>(+ 3 4 5 6 7)
+ 
+(+ (+ 3 4) (+ 5 6 7))
+ 
+(+ (+ 3 (+ 4 5) 6) 7)
+</PRE>
+
+<P>
+<B>3.7</B>&nbsp;&nbsp;What value is returned by <CODE>(/ 1 3)</CODE> in your version of
+Scheme?  (Some Schemes return a decimal fraction like <CODE>0.33333</CODE>, while
+others have exact fractional values like <CODE>1/3</CODE> built in.)
+
+
+<P><B>3.8</B>&nbsp;&nbsp;Which of the functions that you explored in Chapter 2 will
+accept variable numbers of arguments?
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>3.9</B>&nbsp;&nbsp;The expression <CODE>(+ 8 2)</CODE> has the value <CODE>10</CODE>.  It is a compound
+expression made up of three atoms.  For this problem, write five other
+Scheme expressions whose values are also the number ten:
+ 
+<P><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">An atom
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Another compound expression made up of three atoms
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">A compound expression made up of four atoms
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">A compound expression made up of an atom and two compound subexpressions
+
+</TABLE><TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Any other kind of expression
+
+</TABLE><P>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="people.html#text1">[1]</A> In
+other programming languages, the name for what you type might be a
+&quot;command&quot; or an &quot;instruction.&quot; The name &quot;expression&quot; is meant to
+emphasize that we are talking about the notation in which you ask the
+question, as distinct from the idea in your head, just as in English you
+express an idea in words.  Also, in Scheme we are more often asking
+questions rather than telling the computer to take some action.<P>
+<A NAME="ft2" HREF="people.html#text2">[2]</A> and again<P>
+<A NAME="ft3" HREF="people.html#text3">[3]</A> We'll
+explain this part in more detail later.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch4/defining.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch4/defining b/js/games/nluqo.github.io/~bh/ssch4/defining
new file mode 100644
index 0000000..fe3a1d2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch4/defining
@@ -0,0 +1,754 @@
+<P>
+<A NAME="plugboard"></A>
+<P>
+<CENTER><IMG SRC="../ss-pics/plugboard.jpg" ALT="figure: plugboard"></CENTER><P><CENTER>In the old days, they &quot;defined procedures&quot; like this.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 4: Defining Your Own Procedures</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 4</H2>
+<H1>Defining Your Own Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch04.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch3/people.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch5/words.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>Until now we've been using procedures that Scheme already knows when you
+begin working with it.  In this chapter you'll find out how to create
+new procedures.
+
+<P><H2>How to Define a Procedure</H2>
+
+<P>A Scheme program consists of one or more <EM>procedures.</EM> A procedure is
+a description of the process by which a computer can work out some result
+that we want.  Here's how to define a procedure that returns the square of
+its argument:
+
+<P><PRE>(define (<A NAME="g1"></A>square x)
+  (* x x))
+</PRE>
+
+<P>(The value returned by <A NAME="g2"></A><CODE>define</CODE> may differ depending on the
+version of Scheme you're using.  Many versions return the name of the
+procedure you're defining, but others return something else.  It doesn't
+matter, because when you use <CODE>define</CODE> you aren't interested in the
+returned value, but rather in the fact that Scheme remembers the new
+definition for later use.)
+
+<P>This is the definition of a procedure called <CODE>square</CODE>.  <CODE>Square</CODE>
+takes one argument, a number, and it returns the square of that number.
+Once you have defined <CODE>square</CODE>, you can use it just the same way as you
+use primitive procedures:
+
+<P><PRE>&gt; (square 7)
+49
+
+&gt; (+ 10 (square 2))
+14
+
+&gt; (square (square 3))
+81
+</PRE>
+
+<P>This procedure definition has four parts.  The first is the word <CODE>define</CODE>, which indicates that you are defining something.  The second and
+third come together inside parentheses: the name that you want to give the
+procedure and the name(s) you want to use for its argument(s).  This
+arrangement was chosen by the designers of Scheme because it looks like the
+form in which the procedure will be invoked.  That is, <CODE>(square x)</CODE> looks
+like <CODE>(square 7)</CODE>.  The fourth part of the definition is the <EM>body:</EM> an expression whose value provides the function's return value.
+
+<P><CENTER><IMG SRC="../ss-pics/definition.jpg" ALT="figure: definition"></CENTER>
+
+<P><H2>Special Forms</H2>
+
+<P><CODE>Define</CODE> is a <EM><A NAME="g3"></A><A NAME="g4"></A>special form,</EM> an exception to the
+evaluation rule we've been going on about.<A NAME="text1" HREF="defining#ft1">[1]</A> Usually, an expression represents a procedure invocation, so
+the general rule is that Scheme first evaluates all the subexpressions, and
+then applies the resulting procedure to the resulting argument values.  The
+specialness of special forms is that Scheme <EM>doesn't</EM> evaluate all the
+subexpressions.  Instead, each special form has its own particular
+evaluation rule.  For example, when we defined <CODE>square</CODE>, no
+part of the definition was evaluated: not <CODE>square</CODE>, not <CODE>x</CODE>, and
+not <CODE>(* x x)</CODE>.  It wouldn't make sense to evaluate <CODE>(square x)</CODE>
+because you can't invoke the <CODE>square</CODE> procedure before you define it!
+
+<P>It would be possible to describe special forms using the following model:
+&quot;Certain procedures want their arguments unevaluated, and Scheme recognizes
+them.  After refraining from evaluating <CODE>define</CODE>'s arguments, for
+example, Scheme invokes the <CODE>define</CODE> procedure with those unevaluated
+arguments.&quot; But in fact the designers of Scheme chose to think about it
+differently.  The entire special form that starts with <CODE>define</CODE> is just a
+completely different kind of thing from a procedure call.  In Scheme there
+is no procedure named <CODE>define</CODE>.  In fact, <CODE>define</CODE> is not the name
+of anything at all:
+
+<P><PRE>&gt; +
+#&lt;PRIMITIVE PROCEDURE +>
+
+&gt; define
+ERROR - INVALID CONTEXT FOR KEYWORD DEFINE
+</PRE>
+
+<P>Nevertheless, in this book, unless it's really important to make
+the distinction, we'll talk as if there were a procedure called <CODE>define</CODE>.
+For example, we'll talk about &quot;<CODE>define</CODE>'s arguments&quot; and &quot;the value
+returned by <CODE>define</CODE>&quot; and &quot;invoking <CODE>define</CODE>.&quot;
+
+<P><H2>Functions and Procedures</H2>
+
+<P>Throughout most of this book, our procedures will describe processes that
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+compute <EM>functions.</EM> A function is a connection between some values
+you already know and a new value you want to find out.  For example, the
+<EM>square</EM> function takes a number, such as 8, as its input value and
+returns another number, 64 in this case, as its output value.  The <EM>plural</EM> function takes a noun, such as &quot;computer,&quot; and returns another
+word, &quot;computers&quot; in this example.  The technical term for the function's
+input value is its <EM>argument.</EM> A function may take more than one
+argument; for example, the <CODE>remainder</CODE> function takes two arguments,
+such as 12 and 5.  It returns one value, the remainder on dividing the first
+argument by the second (in this case, 2).
+
+<P>We said earlier that a procedure is &quot;a description of the process by which
+a computer can work out some result that we want.&quot; What do we mean by <EM>process</EM>?  Consider these two definitions:
+
+<P><P><P><CENTER><EM>f</EM>(<EM>x</EM>)=3<EM>x</EM>+12<BR>
+<EM>g</EM>(<EM>x</EM>)=3(<EM>x</EM>+4)<P></CENTER>
+
+The two definitions call for different arithmetic operations.  For
+example, to compute <EM>f</EM>(8) we'd multiply 8 by 3, then add 12 to the result.
+To compute <EM>g</EM>(8), we'd add 4 to 8, then multiply the result by 3.  But we
+get the same answer, 36, either way.  These two equations describe different
+<EM>processes,</EM> but they compute the same <EM>function.</EM> The function
+is just the association between the starting value(s) and the resulting
+value, no matter how that result is computed.  In Scheme we could say
+
+<P><PRE>(define (f x)
+  (+ (* 3 x) 12))
+
+(define (g x)
+  (* 3 (+ x 4)))
+</PRE>
+
+<P>and we'd say that <CODE>f</CODE> and <CODE>g</CODE> are two procedures that
+represent the same function.
+
+<P>In real life, functions are not always represented by procedures.  We could
+represent a function by a <EM>table</EM> showing all its possible values,
+like this:
+
+<P><P><CENTER><TABLE><TR><TD>Alabama<TD>&nbsp;&nbsp;&nbsp;Montgomery
+<TR><TD>Alaska<TD>&nbsp;&nbsp;&nbsp;Juneau
+<TR><TD>Arizona<TD>&nbsp;&nbsp;&nbsp;Phoenix
+<TR><TD>Arkansas<TD>&nbsp;&nbsp;&nbsp;Little Rock
+<TR><TD>California<TD>&nbsp;&nbsp;&nbsp;Sacramento
+<TR><TD>&hellip;<TD>&nbsp;&nbsp;&nbsp;&hellip;</TABLE></CENTER>
+
+This table represents the State Capital function; we haven't shown
+all the lines of the complete table, but we could.  There are only a finite
+number of U.S. states.  Numeric functions can also be represented by <EM>graphs,</EM> as you probably learned in high school algebra.  In this book our
+focus is on the representation of functions by procedures.  The only reason
+for showing you this table example is to clarify what we mean when we say
+that a function <EM>is represented by</EM> a procedure, rather than that a
+function <EM>is</EM> the procedure.
+
+<P>We'll say &quot;the procedure <CODE>f</CODE>&quot; when we want to discuss the operations
+we're telling Scheme to carry out.  We'll say &quot;the function represented by
+<CODE>f</CODE>&quot; when our attention is focused on the value returned, rather than
+on the mechanism.  (But we'll often abbreviate that lengthy second phrase
+with &quot;the function <CODE>f</CODE>&quot; unless the context is especially
+confusing.)<A NAME="text2" HREF="defining#ft2">[2]</A>
+
+<P><H2>Argument Names versus Argument Values</H2>
+
+<P><P><A NAME="alice"></A>
+<BLOCKQUOTE>
+
+<P>&quot;It's long,&quot; said the Knight, &quot;but it's very, <EM>very</EM> beautiful.
+Everybody that hears me sing it&mdash;either it brings the <EM>tears</EM> into
+their eyes, or else&mdash;&quot;
+
+<P>&quot;Or else what?&quot; said Alice, for the Knight had made a sudden pause.
+
+<P>&ldquo;Or else it doesn't, you know.  The name of the song is called &lsquo;<EM>Haddock's Eyes.</EM>&rsquo;&thinsp;&rdquo;
+
+<P>&quot;Oh, that's the name of the song, is it?&quot; Alice said, trying to feel
+interested.
+
+<P>&quot;No, you don't understand,&quot; the Knight said, looking a little vexed.
+&ldquo;That's what the name is <EM>called.</EM> The name really is &lsquo;<EM>The Aged
+Aged Man.</EM>&rsquo&thinsp;&rdquo;
+
+<P>&ldquo;Then I ought to have said &lsquo;That's what the <EM>song</EM> is called&rsquo;?&rdquo; 
+Alice corrected herself.
+
+<P>&ldquo;No, you oughtn't; that's quite another thing!  The <EM>song</EM> is called
+&lsquo<EM>Ways And Means</EM>&rsquo: but that's only what it's <EM>called,</EM> you
+know!&rdquo;
+
+<P>&quot;Well, what <EM>is</EM> the song, then?&quot; said Alice, who was by this time
+completely bewildered.
+
+<P>&quot;I was coming to that,&quot; the Knight said.  &ldquo;The song really is &lsquo<EM>A-sitting On A Gate</EM>&rsquo;: and the tune's my own invention.&rdquo;
+
+<P><A NAME="g7"></A>Lewis Carroll, <EM>Through the Looking-Glass, and What
+Alice Found There</EM>
+
+<P></BLOCKQUOTE><P>
+Notice that when we <EM>defined</EM> the <CODE>square</CODE> procedure we gave a <EM>name,</EM> <CODE>x</CODE>, for its argument.  By contrast, when we <EM>invoked</EM>
+<CODE>square</CODE> we provided a <EM>value</EM> for the argument (e.g., <CODE>7</CODE>).
+The word <CODE>x</CODE> is a &quot;place holder&quot; in the definition that stands for
+whatever value you use when you call the procedure.  So you can read the
+definition of <CODE>square</CODE> as saying, &quot;In order to <CODE>square</CODE> a number,
+multiply <EM>that number</EM> by <EM>that number.</EM>&quot; The name <CODE>x</CODE>
+holds the place of the particular number that you mean.
+
+<P>Be sure you understand this distinction between defining a procedure and
+calling it.  A procedure represents a general technique that can be applied
+to many specific cases.  We don't want to build any particular case into the
+procedure definition; we want the definition to express the general nature of
+the technique.  You wouldn't want a procedure that only knew how to take the
+square of 7.  But when you actually get around to using <CODE>square</CODE>, you have
+to be specific about which number you're squaring.
+
+<P>The name for the name of an argument (whew!) is <EM><A NAME="g8"></A><A NAME="g9"></A>formal parameter.</EM> In our <CODE>square</CODE> example, <CODE>x</CODE>
+is the formal parameter.  (You may hear people say either &quot;formal&quot;
+alone or &quot;parameter&quot; alone when they're feeling lazy.)  The
+technical term for the actual value of the argument is the <EM><A NAME="g10"></A><A NAME="g11"></A>actual argument.</EM> In a case like
+
+<P>
+<PRE>(square (+ 5 9))
+</PRE>
+
+
+<P>
+you may want to distinguish the <EM><A NAME="g12"></A><A NAME="g13"></A>actual argument expression</EM> <CODE>(+ 5 9)</CODE> from the <EM><A NAME="g14"></A><A NAME="g15"></A>actual argument value</EM> 14.  Most of the time it's perfectly clear
+what you mean, and you just say &quot;argument&quot; for all of these things, but
+right now when you're learning these ideas it's important to be able to talk
+more precisely.
+
+<P>
+The <CODE>square</CODE> procedure takes one argument.  If a procedure requires more
+than one argument, then the question arises, which actual argument goes with
+which formal parameter?  The answer is that they go in the order in which
+you write them, like this:
+
+<P><PRE>(define (f a b)
+  (+ (* 3 a) b))
+
+&gt; (f 5 8)
+23
+
+&gt; (f 8 5)
+29
+</PRE>
+
+<P><H2>Procedure as Generalization</H2>
+<A NAME="g16"></A>
+
+<P>What's the average of 17 and 25?  To answer this question you could add the
+two numbers, getting 42, and divide that by two, getting 21.  You could ask
+Scheme to do this for you:
+
+<P><PRE>&gt; (/ (+ 17 25) 2)
+21
+</PRE>
+
+<P>What's the average of 14 and 68?
+
+<P><PRE>&gt; (/ (+ 14 68) 2)
+41
+</PRE>
+
+<P>Once you understand the technique, you could answer any such question by
+typing an expression of the form
+
+<P><PRE>(/ (+  ______  ______ ) 2)
+</PRE>
+
+<P>to Scheme.
+
+<P>But if you're going to be faced with more such problems, an obvious next
+step is to <EM>generalize</EM> the technique by defining a procedure:
+
+<P><PRE>(define (<A NAME="g17"></A>average a b)
+  (/ (+ a b) 2))
+</PRE>
+
+<P>With this definition, you can think about the next problem that
+comes along in terms of the problem itself, rather than in terms of the
+steps required for its solution:
+
+<P><PRE>&gt; (average 27 4)
+15.5
+</PRE>
+
+<P>This is an example of what we meant when we defined
+&quot;abstraction&quot; as noticing a pattern and giving it a name.
+It's not so different from the naming of such patterns in English;
+when someone invented the name &quot;average&quot; it was, probably, after
+noticing that it was often useful to find the value halfway between
+two other values.
+
+<P>This naming process is more important than it sounds, because once we have a
+name for some idea, we can use that idea without thinking about its pieces.
+For example, suppose that you want to know not only the average of some
+numbers but also a measure of whether the numbers are clumped together close
+to the average, or widely spread out.  Statisticians have developed the
+&quot;standard deviation&quot; as a measure of this second property.  You'd rather
+not have to think about this mysterious formula:
+
+<P><P><CENTER><IMG SRC="math1.gif" ALT="math display"></CENTER><P>
+
+<P>but you'd be happy to use a procedure <CODE>standard-deviation</CODE>
+that you found in a collection of statistical programs.
+
+<P>After all, there's no law of nature that says computers automatically know
+how to add or subtract.  You could imagine having to instruct Scheme to
+compute the sum of two large numbers digit by digit, the way you did in
+elementary school.  But instead someone has &quot;taught&quot; your computer how to
+add before you get to it, giving this technique the name <CODE>+</CODE> so that you
+can ask for the sum of two numbers without thinking about the steps required.
+By inventing <CODE>average</CODE> or <CODE>standard-deviation</CODE> we are extending the
+repertoire of computations that you can ask for without concerning yourself
+with the details.
+
+<P><H2>Composability</H2>
+
+<P>We've suggested that a procedure you define, such as <CODE>average</CODE>, is
+<A NAME="g18"></A>
+<A NAME="g19"></A>
+essentially similar to one that's built into Scheme, such as <CODE>+</CODE>.
+In particular, the rules for building expressions are the same whether
+the building blocks are primitive procedures or defined procedures.
+
+<P><PRE>&gt; (average (+ 10 8) (* 3 5))
+16.5
+
+&gt; (average (average 2 3) (average 4 5))
+3.5
+
+&gt; (sqrt (average 143 145))
+12
+</PRE>
+
+<P>Any return value can be used as an end in itself, as the return
+value from <CODE>sqrt</CODE> was used in the last of these examples, or it can
+provide an argument to another procedure, as the return value from
+<CODE>*</CODE> was used in the first of these examples.
+
+<P>These small examples may seem arbitrary, but the same idea, composition of
+functions, is the basis for all Scheme programming.  For example, the
+complicated formula we gave for standard deviation requires computing the
+squares of several numbers.  So if we were to write a <CODE>standard-deviation</CODE> procedure, it would invoke <CODE>square</CODE>.
+
+<P><H2>The Substitution Model</H2>
+
+<P>We've paid a lot of attention to the details of formal parameters and actual
+arguments, but we've been a little handwavy<A NAME="text3" HREF="defining#ft3">[3]</A> about how a procedure actually computes a value when you invoke it.
+
+<P>We're going to explain what happens when you invoke a user-defined procedure.
+Every explanation is a story.  No story tells the entire truth, because there
+are always some details left out.  A <EM>model</EM> is a story that
+has just enough detail to help you understand whatever it's trying to explain
+but not so much detail that you can't see the forest for the trees.
+
+<P>Today's story is about the <EM>substitution</EM> model.  When a
+procedure is invoked, the goal is to carry out the computation described in
+its body.  The problem is that the body is written in terms of the formal
+parameters, while the computation has to use the actual argument values.  So
+what Scheme needs is a way to associate actual argument values with formal
+parameters.  It does this by making a new copy of the body of the procedure,
+in which it substitutes the argument values for every appearance of the
+formal parameters, and then evaluating the resulting expression.  So, if
+you've defined <CODE>square</CODE> with 
+
+<P><PRE>(define (square x)
+  (* x x))
+</PRE>
+
+<P>then the body of <CODE>square</CODE> is <CODE>(* x x)</CODE>.  When you want to
+know the square of a particular number, as in <CODE>(square 5)</CODE>, Scheme
+substitutes the 5 for <CODE>x</CODE> everywhere in the body of square and evaluates
+the expression.  In other words, Scheme takes
+
+<P><PRE>(* x x)
+</PRE>
+
+<P>then does the substitution, getting
+
+<P><PRE>(* 5 5)
+</PRE>
+
+<P>and then evaluates that expression, getting 25.
+
+<P>If you just type <CODE>(* x x)</CODE> into Scheme, you will get an error message
+complaining that <CODE>x</CODE> doesn't mean anything.  Only after the substitution
+does this become a meaningful expression.
+
+<P>By the way, when we talk about &quot;substituting into the body,&quot; we don't mean
+that the procedure's definition is changed in any permanent way.  The body of
+the procedure doesn't change; what happens, as we said before, is that Scheme
+constructs a new expression that looks like the body, except for the
+substitutions.<A NAME="text4" HREF="defining#ft4">[4]</A>
+
+<P>There are little people who specialize in <CODE>square</CODE>, just as there
+are little people who specialize in <CODE>+</CODE> and <CODE>*</CODE>.  The difference is
+that the little people who do primitive procedures can do the work &quot;in their
+head,&quot; all at once.  The little people who carry out user-defined procedures
+have to go through this substitution business we're talking about here.
+Then they hire other little people to help evaluate the resulting expression,
+just as Alonzo hires people to help him evaluate the expressions you type
+directly to Scheme.
+
+<P>Let's say Sam, a little person who specializes in <CODE>square</CODE>, has been
+asked to compute <CODE>(square 6)</CODE>.  Sam carries out the substitution, and is
+left with the expression <CODE>(* 6 6)</CODE> to evaluate.  Sam then hires Tessa, a
+multiplication specialist, to evaluate this new expression.  Tessa tells Sam
+that her answer is 36, and, because the multiplication is the entire problem
+to be solved, this is Sam's answer also.
+
+<P>Here's another example:
+
+<P><PRE>(define (<A NAME="g20"></A>hypotenuse a b)
+  (sqrt (+ (square a) (square b))))
+
+&gt; (hypotenuse 5 12)
+</PRE>
+
+<P> Suppose Alonzo hires Harry to compute this expression.
+Harry must first substitute the actual argument values (5 and 12) into the
+body of <CODE>hypotenuse</CODE>:
+
+<P><PRE>(sqrt (+ (square 5) (square 12)))
+</PRE>
+
+<P>Now he evaluates that expression, just as Alonzo would evaluate it
+if you typed it at a Scheme prompt.  That is, Harry hires four little
+people: one <CODE>sqrt</CODE> expert, one <CODE>+</CODE> expert, and two <CODE>square</CODE>
+experts.<A NAME="text5" HREF="defining#ft5">[5]</A> In particular, some little
+person has to evaluate <CODE>(square 5)</CODE>, by substituting 5 for <CODE>x</CODE> in
+the body of <CODE>square</CODE>, as in the earlier example.  Similarly, we
+substitute 12 for <CODE>x</CODE> in order to evaluate <CODE>(square 12)</CODE>:
+
+<P><PRE>(hypotenuse 5 12)                   ; substitute into HYPOTENUSE body
+(sqrt (+ (square 5) (square 12)))   ; substitute for (SQUARE 5)
+         (* 5 5)
+         25
+(sqrt (+ 25         (square 12)))   ; substitute for (SQUARE 12)
+                    (* 12 12)
+                    144
+(sqrt (+ 25         144))
+      (+ 25         144)            ; combine the results as before
+      169
+(sqrt 169)
+13
+</PRE>
+
+<P>Don't forget, in the heady rush of learning about the substitution
+model, what you already knew from before:  Each piece of this computation is
+done by a little person, and some other little person is waiting for the
+result.  In other words, the substitution model tells us how <EM>each
+compound procedure</EM> is carried out, but doesn't change our picture of the
+way in which procedure invocations are <EM>composed</EM> into larger
+expressions.
+
+<P><H2>Pitfalls</H2>
+
+<P>Don't forget that a function can have only <EM>one</EM> return value.
+For example, here's a program that's supposed to return the sum of the
+squares of its two arguments:
+
+<P><PRE>(define (sum-of-squares x y)                 ;; wrong!
+  (square x)
+  (square y))
+</PRE>
+
+<P>The problem is that the body of this procedure has two expressions,
+instead of just one.  As it turns out, Scheme just ignores the value of the
+first expression in cases like this, and returns the value of the last one.
+What the programmer wants is the <EM>sum</EM> of these two values, so the
+procedure should say
+
+<P><PRE>(define (sum-of-squares x y)
+  (+ (square x)
+     (square y)))
+</PRE>
+
+<P>Another pitfall comes from thinking that a procedure call changes the
+value of a parameter.  Here's a faulty program that's supposed to compute
+the function described by <EM>f</EM>(<EM>x</EM>)=3<EM>x</EM>+10:
+
+<P><PRE>(define (f x)                                ;; wrong!
+  (* x 3)
+  (+ x 10))
+</PRE>
+
+<P>Again, the first expression has no effect and Scheme will just
+return the value <EM>x</EM>+10.<A NAME="text6" HREF="defining#ft6">[6]</A>
+
+<P>A very common pitfall in Scheme comes from choosing the name of
+a procedure as a parameter.  It doesn't come up very often with
+procedures like the ones in this chapter whose domains and ranges
+are both numbers, but it will be more likely later.  If you have a
+program like this:
+
+<P><PRE>(define (square x)
+  (* x x))
+
+(define (area square)                        ;; wrong!
+  (square square))
+</PRE>
+
+<P>then you'll get in trouble when you invoke the procedure, for
+example, by saying <CODE>(area 8)</CODE>.  The <CODE>area</CODE> little person will
+substitute <CODE>8</CODE> for <CODE>square</CODE> everywhere in the procedure definition,
+leaving you with the expression <CODE>(8 8)</CODE> to evaluate.  That expression
+would mean to apply the procedure <CODE>8</CODE> to the argument <CODE>8</CODE>, but
+<CODE>8</CODE> isn't a procedure, so an error message results.
+
+<P>It isn't a problem if the formal parameter is the name of a procedure that
+you don't use inside the body.  The problem arises when you try to use the
+same name, e.g., <CODE>square</CODE>, with two meanings within a single procedure.
+But special forms are an exception; you can never use the name of a special
+form as a parameter.
+
+<P>A similar problem about name conflicts comes up if you try to
+use a keyword (the name of a special form, such as <CODE>define</CODE>) as
+some other kind of name&mdash;either a formal parameter or the name of a
+procedure you're defining.  We're listing this separately because the
+result is likely to be different.  Instead of getting the wrong value
+substituted, as above, you'll probably see a special error message
+along the lines of &quot;improper use of keyword.&quot;
+
+<P>Formal parameters <EM>must</EM> be words.  Some people try to write
+procedures that have compound expressions as the formal parameters, like this:
+
+<P><PRE>(define (f (+ 3 x) y)                        ;; wrong!
+  (* x y))
+</PRE>
+
+<P>Remember that the job of the procedure definition is only to
+provide a <EM>name</EM> for the argument.  The <EM>actual</EM> argument isn't
+pinned down until you invoke the procedure.  People who write programs like
+the one above are trying to make the procedure definition do some of the job
+of the procedure invocation.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>4.1</B>&nbsp;&nbsp;Consider this procedure:
+
+<P><PRE>(define (ho-hum x y)
+  (+ x (* 2 y)))
+</PRE>
+
+<P>Show the substitution that occurs when you evaluate 
+
+<P><PRE>(ho-hum 8 12)
+</PRE>
+
+<P>
+<B>4.2</B>&nbsp;&nbsp;Given the following procedure:
+
+<P><PRE>(define (yawn x)
+  (+ 3 (* x 2)))
+</PRE>
+
+<P>list all the little people that are involved in evaluating
+
+<P><PRE>(yawn (/ 8 2))
+</PRE>
+
+<P>(Give their names, their specialties, their arguments,
+who hires them, and what they do with their answers.)
+
+
+<P>
+<B>4.3</B>&nbsp;&nbsp;Here are some procedure definitions.  For each one, describe the function in
+English, show a sample invocation, and show the result of that invocation.
+
+<P><PRE>(define (f x y) (- y x))
+
+(define (identity x) x)
+
+(define (three x) 3)
+
+(define (seven) 7)
+
+(define (magic n)
+  (- (/ (+ (+ (* 3 n)
+              13)
+           (- n 1))
+        4)
+     3))
+</PRE>
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>4.4</B>&nbsp;&nbsp;Each of the following procedure definitions has an error of some kind.
+Say what's wrong and why, and fix it:
+
+<P><PRE>(define (sphere-volume r)
+  (* (/ 4 3) 3.141592654)
+  (* r r r))
+
+(define (next x)
+  (x + 1))
+
+(define (square)
+  (* x x))
+
+(define (triangle-area triangle)
+  (* 0.5 base height))
+
+(define (sum-of-squares (square x) (square y))
+  (+ (square x) (square y)))
+</PRE>
+
+
+<P>
+<B>4.5</B>&nbsp;&nbsp;Write a procedure to convert a temperature from Fahrenheit to Celsius, and
+another to convert in the other direction.  The two formulas
+are <EM>F</EM>=<SUP><SMALL><SMALL>9</SMALL></SMALL></SUP>&frasl;<SUB><SMALL><SMALL>5</SMALL></SMALL></SUB><EM>C</EM>+32 and <EM>C</EM>=<SUP><SMALL>5</SMALL></SUP>&frasl;<SUB><SMALL>9</SMALL></SUB>(<EM>F</EM>-32).
+
+
+<P>
+<B>4.6</B>&nbsp;&nbsp;Define a procedure <CODE>fourth</CODE> that computes the fourth power of its
+argument.  Do this two ways, first using the multiplication function,
+and then using <CODE>square</CODE> and not (directly) using multiplication.
+
+
+<P>
+<B>4.7</B>&nbsp;&nbsp;Write a procedure that computes the absolute value of its argument by
+finding the square root of the square of the argument.
+
+
+<P>
+<B>4.8</B>&nbsp;&nbsp;&quot;Scientific notation&quot; is a way to represent very small or very large
+numbers by combining a medium-sized number with a power of 10.  For example,
+5&times;10<SUP><SMALL>7</SMALL></SUP> represents the number 50000000, while 3.26&times;10<SUP><SMALL>-9</SMALL></SUP>
+represents 0.00000000326 in scientific notation.  Write a procedure
+<CODE>scientific</CODE> that takes two arguments, a number and an exponent of 10,
+and returns the corresponding value:
+
+<P><PRE>&gt; (scientific 7 3)
+7000
+
+&gt; (scientific 42 -5)
+0.00042
+</PRE>
+
+<P>Some versions of Scheme represent fractions in <EM>a</EM>/<EM>b</EM> form, and
+some use scientific notation, so you might see <CODE>21/50000</CODE> or <CODE>4.2E-4</CODE>
+as the result of the last example instead of <CODE>0.00042</CODE>, but these are
+the same value.
+
+<P>(A harder problem for hotshots:  Can you write procedures that go in the
+other direction?  So you'd have
+
+<P><PRE>&gt; (sci-coefficient 7000)
+7
+
+&gt; (sci-exponent 7000)
+3
+</PRE>
+
+<P>You might find the primitive procedures <CODE>log</CODE> and <CODE>floor</CODE> helpful.)
+
+
+<P>
+<B>4.9</B>&nbsp;&nbsp;Define a procedure <CODE>discount</CODE> that takes two arguments: an item's
+initial price and a percentage discount.  It should return the new price:
+
+<P><PRE>&gt; (discount 10 5)
+9.50
+
+&gt; (discount 29.90 50)
+14.95
+</PRE>
+
+<P>
+<B>4.10</B>&nbsp;&nbsp;Write a procedure to compute the tip you should leave at a restaurant.  It
+should take the total bill as its argument and return the amount of the
+tip.  It should tip by 15%, but it should know to round up so that the
+total amount of money you leave (tip plus original bill) is a whole number
+of dollars.  (Use the <CODE>ceiling</CODE> procedure to round up.)
+
+<P><PRE>&gt; (tip 19.98)
+3.02
+
+&gt; (tip 29.23)
+4.77
+
+&gt; (tip 7.54)
+1.46
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="defining#text1">[1]</A> Technically, the entire
+expression <CODE>(define (square x) &hellip)</CODE> is the special form; the word <CODE>define</CODE> itself is called a <EM>keyword</EM>.  But in fact Lispians are
+almost always loose about this distinction and say &quot;<CODE>define</CODE> is a
+special form,&quot; just as we've done here.  The word &quot;form&quot; is an archaic
+synonym for &quot;expression,&quot; so &quot;special form&quot; just means &quot;special
+expression.&quot;<P>
+<A NAME="ft2" HREF="defining#text2">[2]</A> Also, we'll sometimes use the terms &quot;domain&quot; and
+&quot;range&quot; when we're talking about procedures, although technically, only
+functions have domains and ranges.<P>
+<A NAME="ft3" HREF="defining#text3">[3]</A> You know, that's
+when you wave your hands around in the air instead of explaining what you
+mean.<P>
+<A NAME="ft4" HREF="defining#text4">[4]</A> You may be thinking that this is rather an
+inefficient way to do things&mdash;all this copying and replacement before you
+can actually compute anything.  Perhaps you're afraid that your Scheme
+programs will run very slowly as a result.  Don't worry.  It really
+happens in a different way, but the effect is the same except for the
+speed.<P>
+<A NAME="ft5" HREF="defining#text5">[5]</A> Until we started defining our own procedures in this
+chapter, all of the little people were hired by Alonzo, because all
+expressions were typed directly to a Scheme prompt.  Now expressions can
+come from the bodies of procedures, and so the little people needed to
+compute those expressions are hired by the little person who's computing
+that procedure.  Notice also that each little person <EM>reports to</EM>
+another little person, not necessarily the one who <EM>hired</EM> her.  In
+this case, if Harry hires Shari for <CODE>sqrt</CODE>, Paul for <CODE>+</CODE>, and Slim
+and Sydney for the two <CODE>square</CODE>s, then Slim reports to Paul, not to
+Harry.  Only Shari reports directly to Harry.<P>
+<A NAME="ft6" HREF="defining#text6">[6]</A> This is especially problematic for people
+who used to program in a language like Pascal or BASIC, where you say things
+like &quot;<CODE>X = X * 3</CODE>&quot; all the time.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch3/people.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch5/words.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch4/defining.html b/js/games/nluqo.github.io/~bh/ssch4/defining.html
new file mode 100644
index 0000000..4dbef0b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch4/defining.html
@@ -0,0 +1,754 @@
+<P>
+<A NAME="plugboard"></A>
+<P>
+<CENTER><IMG SRC="../ss-pics/plugboard.jpg" ALT="figure: plugboard"></CENTER><P><CENTER>In the old days, they &quot;defined procedures&quot; like this.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 4: Defining Your Own Procedures</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 4</H2>
+<H1>Defining Your Own Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch04.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch3/people.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch5/words.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>Until now we've been using procedures that Scheme already knows when you
+begin working with it.  In this chapter you'll find out how to create
+new procedures.
+
+<P><H2>How to Define a Procedure</H2>
+
+<P>A Scheme program consists of one or more <EM>procedures.</EM> A procedure is
+a description of the process by which a computer can work out some result
+that we want.  Here's how to define a procedure that returns the square of
+its argument:
+
+<P><PRE>(define (<A NAME="g1"></A>square x)
+  (* x x))
+</PRE>
+
+<P>(The value returned by <A NAME="g2"></A><CODE>define</CODE> may differ depending on the
+version of Scheme you're using.  Many versions return the name of the
+procedure you're defining, but others return something else.  It doesn't
+matter, because when you use <CODE>define</CODE> you aren't interested in the
+returned value, but rather in the fact that Scheme remembers the new
+definition for later use.)
+
+<P>This is the definition of a procedure called <CODE>square</CODE>.  <CODE>Square</CODE>
+takes one argument, a number, and it returns the square of that number.
+Once you have defined <CODE>square</CODE>, you can use it just the same way as you
+use primitive procedures:
+
+<P><PRE>&gt; (square 7)
+49
+
+&gt; (+ 10 (square 2))
+14
+
+&gt; (square (square 3))
+81
+</PRE>
+
+<P>This procedure definition has four parts.  The first is the word <CODE>define</CODE>, which indicates that you are defining something.  The second and
+third come together inside parentheses: the name that you want to give the
+procedure and the name(s) you want to use for its argument(s).  This
+arrangement was chosen by the designers of Scheme because it looks like the
+form in which the procedure will be invoked.  That is, <CODE>(square x)</CODE> looks
+like <CODE>(square 7)</CODE>.  The fourth part of the definition is the <EM>body:</EM> an expression whose value provides the function's return value.
+
+<P><CENTER><IMG SRC="../ss-pics/definition.jpg" ALT="figure: definition"></CENTER>
+
+<P><H2>Special Forms</H2>
+
+<P><CODE>Define</CODE> is a <EM><A NAME="g3"></A><A NAME="g4"></A>special form,</EM> an exception to the
+evaluation rule we've been going on about.<A NAME="text1" HREF="defining.html#ft1">[1]</A> Usually, an expression represents a procedure invocation, so
+the general rule is that Scheme first evaluates all the subexpressions, and
+then applies the resulting procedure to the resulting argument values.  The
+specialness of special forms is that Scheme <EM>doesn't</EM> evaluate all the
+subexpressions.  Instead, each special form has its own particular
+evaluation rule.  For example, when we defined <CODE>square</CODE>, no
+part of the definition was evaluated: not <CODE>square</CODE>, not <CODE>x</CODE>, and
+not <CODE>(* x x)</CODE>.  It wouldn't make sense to evaluate <CODE>(square x)</CODE>
+because you can't invoke the <CODE>square</CODE> procedure before you define it!
+
+<P>It would be possible to describe special forms using the following model:
+&quot;Certain procedures want their arguments unevaluated, and Scheme recognizes
+them.  After refraining from evaluating <CODE>define</CODE>'s arguments, for
+example, Scheme invokes the <CODE>define</CODE> procedure with those unevaluated
+arguments.&quot; But in fact the designers of Scheme chose to think about it
+differently.  The entire special form that starts with <CODE>define</CODE> is just a
+completely different kind of thing from a procedure call.  In Scheme there
+is no procedure named <CODE>define</CODE>.  In fact, <CODE>define</CODE> is not the name
+of anything at all:
+
+<P><PRE>&gt; +
+#&lt;PRIMITIVE PROCEDURE +>
+
+&gt; define
+ERROR - INVALID CONTEXT FOR KEYWORD DEFINE
+</PRE>
+
+<P>Nevertheless, in this book, unless it's really important to make
+the distinction, we'll talk as if there were a procedure called <CODE>define</CODE>.
+For example, we'll talk about &quot;<CODE>define</CODE>'s arguments&quot; and &quot;the value
+returned by <CODE>define</CODE>&quot; and &quot;invoking <CODE>define</CODE>.&quot;
+
+<P><H2>Functions and Procedures</H2>
+
+<P>Throughout most of this book, our procedures will describe processes that
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+compute <EM>functions.</EM> A function is a connection between some values
+you already know and a new value you want to find out.  For example, the
+<EM>square</EM> function takes a number, such as 8, as its input value and
+returns another number, 64 in this case, as its output value.  The <EM>plural</EM> function takes a noun, such as &quot;computer,&quot; and returns another
+word, &quot;computers&quot; in this example.  The technical term for the function's
+input value is its <EM>argument.</EM> A function may take more than one
+argument; for example, the <CODE>remainder</CODE> function takes two arguments,
+such as 12 and 5.  It returns one value, the remainder on dividing the first
+argument by the second (in this case, 2).
+
+<P>We said earlier that a procedure is &quot;a description of the process by which
+a computer can work out some result that we want.&quot; What do we mean by <EM>process</EM>?  Consider these two definitions:
+
+<P><P><P><CENTER><EM>f</EM>(<EM>x</EM>)=3<EM>x</EM>+12<BR>
+<EM>g</EM>(<EM>x</EM>)=3(<EM>x</EM>+4)<P></CENTER>
+
+The two definitions call for different arithmetic operations.  For
+example, to compute <EM>f</EM>(8) we'd multiply 8 by 3, then add 12 to the result.
+To compute <EM>g</EM>(8), we'd add 4 to 8, then multiply the result by 3.  But we
+get the same answer, 36, either way.  These two equations describe different
+<EM>processes,</EM> but they compute the same <EM>function.</EM> The function
+is just the association between the starting value(s) and the resulting
+value, no matter how that result is computed.  In Scheme we could say
+
+<P><PRE>(define (f x)
+  (+ (* 3 x) 12))
+
+(define (g x)
+  (* 3 (+ x 4)))
+</PRE>
+
+<P>and we'd say that <CODE>f</CODE> and <CODE>g</CODE> are two procedures that
+represent the same function.
+
+<P>In real life, functions are not always represented by procedures.  We could
+represent a function by a <EM>table</EM> showing all its possible values,
+like this:
+
+<P><P><CENTER><TABLE><TR><TD>Alabama<TD>&nbsp;&nbsp;&nbsp;Montgomery
+<TR><TD>Alaska<TD>&nbsp;&nbsp;&nbsp;Juneau
+<TR><TD>Arizona<TD>&nbsp;&nbsp;&nbsp;Phoenix
+<TR><TD>Arkansas<TD>&nbsp;&nbsp;&nbsp;Little Rock
+<TR><TD>California<TD>&nbsp;&nbsp;&nbsp;Sacramento
+<TR><TD>&hellip;<TD>&nbsp;&nbsp;&nbsp;&hellip;</TABLE></CENTER>
+
+This table represents the State Capital function; we haven't shown
+all the lines of the complete table, but we could.  There are only a finite
+number of U.S. states.  Numeric functions can also be represented by <EM>graphs,</EM> as you probably learned in high school algebra.  In this book our
+focus is on the representation of functions by procedures.  The only reason
+for showing you this table example is to clarify what we mean when we say
+that a function <EM>is represented by</EM> a procedure, rather than that a
+function <EM>is</EM> the procedure.
+
+<P>We'll say &quot;the procedure <CODE>f</CODE>&quot; when we want to discuss the operations
+we're telling Scheme to carry out.  We'll say &quot;the function represented by
+<CODE>f</CODE>&quot; when our attention is focused on the value returned, rather than
+on the mechanism.  (But we'll often abbreviate that lengthy second phrase
+with &quot;the function <CODE>f</CODE>&quot; unless the context is especially
+confusing.)<A NAME="text2" HREF="defining.html#ft2">[2]</A>
+
+<P><H2>Argument Names versus Argument Values</H2>
+
+<P><P><A NAME="alice"></A>
+<BLOCKQUOTE>
+
+<P>&quot;It's long,&quot; said the Knight, &quot;but it's very, <EM>very</EM> beautiful.
+Everybody that hears me sing it&mdash;either it brings the <EM>tears</EM> into
+their eyes, or else&mdash;&quot;
+
+<P>&quot;Or else what?&quot; said Alice, for the Knight had made a sudden pause.
+
+<P>&ldquo;Or else it doesn't, you know.  The name of the song is called &lsquo;<EM>Haddock's Eyes.</EM>&rsquo;&thinsp;&rdquo;
+
+<P>&quot;Oh, that's the name of the song, is it?&quot; Alice said, trying to feel
+interested.
+
+<P>&quot;No, you don't understand,&quot; the Knight said, looking a little vexed.
+&ldquo;That's what the name is <EM>called.</EM> The name really is &lsquo;<EM>The Aged
+Aged Man.</EM>&rsquo&thinsp;&rdquo;
+
+<P>&ldquo;Then I ought to have said &lsquo;That's what the <EM>song</EM> is called&rsquo;?&rdquo; 
+Alice corrected herself.
+
+<P>&ldquo;No, you oughtn't; that's quite another thing!  The <EM>song</EM> is called
+&lsquo<EM>Ways And Means</EM>&rsquo: but that's only what it's <EM>called,</EM> you
+know!&rdquo;
+
+<P>&quot;Well, what <EM>is</EM> the song, then?&quot; said Alice, who was by this time
+completely bewildered.
+
+<P>&quot;I was coming to that,&quot; the Knight said.  &ldquo;The song really is &lsquo<EM>A-sitting On A Gate</EM>&rsquo;: and the tune's my own invention.&rdquo;
+
+<P><A NAME="g7"></A>Lewis Carroll, <EM>Through the Looking-Glass, and What
+Alice Found There</EM>
+
+<P></BLOCKQUOTE><P>
+Notice that when we <EM>defined</EM> the <CODE>square</CODE> procedure we gave a <EM>name,</EM> <CODE>x</CODE>, for its argument.  By contrast, when we <EM>invoked</EM>
+<CODE>square</CODE> we provided a <EM>value</EM> for the argument (e.g., <CODE>7</CODE>).
+The word <CODE>x</CODE> is a &quot;place holder&quot; in the definition that stands for
+whatever value you use when you call the procedure.  So you can read the
+definition of <CODE>square</CODE> as saying, &quot;In order to <CODE>square</CODE> a number,
+multiply <EM>that number</EM> by <EM>that number.</EM>&quot; The name <CODE>x</CODE>
+holds the place of the particular number that you mean.
+
+<P>Be sure you understand this distinction between defining a procedure and
+calling it.  A procedure represents a general technique that can be applied
+to many specific cases.  We don't want to build any particular case into the
+procedure definition; we want the definition to express the general nature of
+the technique.  You wouldn't want a procedure that only knew how to take the
+square of 7.  But when you actually get around to using <CODE>square</CODE>, you have
+to be specific about which number you're squaring.
+
+<P>The name for the name of an argument (whew!) is <EM><A NAME="g8"></A><A NAME="g9"></A>formal parameter.</EM> In our <CODE>square</CODE> example, <CODE>x</CODE>
+is the formal parameter.  (You may hear people say either &quot;formal&quot;
+alone or &quot;parameter&quot; alone when they're feeling lazy.)  The
+technical term for the actual value of the argument is the <EM><A NAME="g10"></A><A NAME="g11"></A>actual argument.</EM> In a case like
+
+<P>
+<PRE>(square (+ 5 9))
+</PRE>
+
+
+<P>
+you may want to distinguish the <EM><A NAME="g12"></A><A NAME="g13"></A>actual argument expression</EM> <CODE>(+ 5 9)</CODE> from the <EM><A NAME="g14"></A><A NAME="g15"></A>actual argument value</EM> 14.  Most of the time it's perfectly clear
+what you mean, and you just say &quot;argument&quot; for all of these things, but
+right now when you're learning these ideas it's important to be able to talk
+more precisely.
+
+<P>
+The <CODE>square</CODE> procedure takes one argument.  If a procedure requires more
+than one argument, then the question arises, which actual argument goes with
+which formal parameter?  The answer is that they go in the order in which
+you write them, like this:
+
+<P><PRE>(define (f a b)
+  (+ (* 3 a) b))
+
+&gt; (f 5 8)
+23
+
+&gt; (f 8 5)
+29
+</PRE>
+
+<P><H2>Procedure as Generalization</H2>
+<A NAME="g16"></A>
+
+<P>What's the average of 17 and 25?  To answer this question you could add the
+two numbers, getting 42, and divide that by two, getting 21.  You could ask
+Scheme to do this for you:
+
+<P><PRE>&gt; (/ (+ 17 25) 2)
+21
+</PRE>
+
+<P>What's the average of 14 and 68?
+
+<P><PRE>&gt; (/ (+ 14 68) 2)
+41
+</PRE>
+
+<P>Once you understand the technique, you could answer any such question by
+typing an expression of the form
+
+<P><PRE>(/ (+  ______  ______ ) 2)
+</PRE>
+
+<P>to Scheme.
+
+<P>But if you're going to be faced with more such problems, an obvious next
+step is to <EM>generalize</EM> the technique by defining a procedure:
+
+<P><PRE>(define (<A NAME="g17"></A>average a b)
+  (/ (+ a b) 2))
+</PRE>
+
+<P>With this definition, you can think about the next problem that
+comes along in terms of the problem itself, rather than in terms of the
+steps required for its solution:
+
+<P><PRE>&gt; (average 27 4)
+15.5
+</PRE>
+
+<P>This is an example of what we meant when we defined
+&quot;abstraction&quot; as noticing a pattern and giving it a name.
+It's not so different from the naming of such patterns in English;
+when someone invented the name &quot;average&quot; it was, probably, after
+noticing that it was often useful to find the value halfway between
+two other values.
+
+<P>This naming process is more important than it sounds, because once we have a
+name for some idea, we can use that idea without thinking about its pieces.
+For example, suppose that you want to know not only the average of some
+numbers but also a measure of whether the numbers are clumped together close
+to the average, or widely spread out.  Statisticians have developed the
+&quot;standard deviation&quot; as a measure of this second property.  You'd rather
+not have to think about this mysterious formula:
+
+<P><P><CENTER><IMG SRC="math1.gif" ALT="math display"></CENTER><P>
+
+<P>but you'd be happy to use a procedure <CODE>standard-deviation</CODE>
+that you found in a collection of statistical programs.
+
+<P>After all, there's no law of nature that says computers automatically know
+how to add or subtract.  You could imagine having to instruct Scheme to
+compute the sum of two large numbers digit by digit, the way you did in
+elementary school.  But instead someone has &quot;taught&quot; your computer how to
+add before you get to it, giving this technique the name <CODE>+</CODE> so that you
+can ask for the sum of two numbers without thinking about the steps required.
+By inventing <CODE>average</CODE> or <CODE>standard-deviation</CODE> we are extending the
+repertoire of computations that you can ask for without concerning yourself
+with the details.
+
+<P><H2>Composability</H2>
+
+<P>We've suggested that a procedure you define, such as <CODE>average</CODE>, is
+<A NAME="g18"></A>
+<A NAME="g19"></A>
+essentially similar to one that's built into Scheme, such as <CODE>+</CODE>.
+In particular, the rules for building expressions are the same whether
+the building blocks are primitive procedures or defined procedures.
+
+<P><PRE>&gt; (average (+ 10 8) (* 3 5))
+16.5
+
+&gt; (average (average 2 3) (average 4 5))
+3.5
+
+&gt; (sqrt (average 143 145))
+12
+</PRE>
+
+<P>Any return value can be used as an end in itself, as the return
+value from <CODE>sqrt</CODE> was used in the last of these examples, or it can
+provide an argument to another procedure, as the return value from
+<CODE>*</CODE> was used in the first of these examples.
+
+<P>These small examples may seem arbitrary, but the same idea, composition of
+functions, is the basis for all Scheme programming.  For example, the
+complicated formula we gave for standard deviation requires computing the
+squares of several numbers.  So if we were to write a <CODE>standard-deviation</CODE> procedure, it would invoke <CODE>square</CODE>.
+
+<P><H2>The Substitution Model</H2>
+
+<P>We've paid a lot of attention to the details of formal parameters and actual
+arguments, but we've been a little handwavy<A NAME="text3" HREF="defining.html#ft3">[3]</A> about how a procedure actually computes a value when you invoke it.
+
+<P>We're going to explain what happens when you invoke a user-defined procedure.
+Every explanation is a story.  No story tells the entire truth, because there
+are always some details left out.  A <EM>model</EM> is a story that
+has just enough detail to help you understand whatever it's trying to explain
+but not so much detail that you can't see the forest for the trees.
+
+<P>Today's story is about the <EM>substitution</EM> model.  When a
+procedure is invoked, the goal is to carry out the computation described in
+its body.  The problem is that the body is written in terms of the formal
+parameters, while the computation has to use the actual argument values.  So
+what Scheme needs is a way to associate actual argument values with formal
+parameters.  It does this by making a new copy of the body of the procedure,
+in which it substitutes the argument values for every appearance of the
+formal parameters, and then evaluating the resulting expression.  So, if
+you've defined <CODE>square</CODE> with 
+
+<P><PRE>(define (square x)
+  (* x x))
+</PRE>
+
+<P>then the body of <CODE>square</CODE> is <CODE>(* x x)</CODE>.  When you want to
+know the square of a particular number, as in <CODE>(square 5)</CODE>, Scheme
+substitutes the 5 for <CODE>x</CODE> everywhere in the body of square and evaluates
+the expression.  In other words, Scheme takes
+
+<P><PRE>(* x x)
+</PRE>
+
+<P>then does the substitution, getting
+
+<P><PRE>(* 5 5)
+</PRE>
+
+<P>and then evaluates that expression, getting 25.
+
+<P>If you just type <CODE>(* x x)</CODE> into Scheme, you will get an error message
+complaining that <CODE>x</CODE> doesn't mean anything.  Only after the substitution
+does this become a meaningful expression.
+
+<P>By the way, when we talk about &quot;substituting into the body,&quot; we don't mean
+that the procedure's definition is changed in any permanent way.  The body of
+the procedure doesn't change; what happens, as we said before, is that Scheme
+constructs a new expression that looks like the body, except for the
+substitutions.<A NAME="text4" HREF="defining.html#ft4">[4]</A>
+
+<P>There are little people who specialize in <CODE>square</CODE>, just as there
+are little people who specialize in <CODE>+</CODE> and <CODE>*</CODE>.  The difference is
+that the little people who do primitive procedures can do the work &quot;in their
+head,&quot; all at once.  The little people who carry out user-defined procedures
+have to go through this substitution business we're talking about here.
+Then they hire other little people to help evaluate the resulting expression,
+just as Alonzo hires people to help him evaluate the expressions you type
+directly to Scheme.
+
+<P>Let's say Sam, a little person who specializes in <CODE>square</CODE>, has been
+asked to compute <CODE>(square 6)</CODE>.  Sam carries out the substitution, and is
+left with the expression <CODE>(* 6 6)</CODE> to evaluate.  Sam then hires Tessa, a
+multiplication specialist, to evaluate this new expression.  Tessa tells Sam
+that her answer is 36, and, because the multiplication is the entire problem
+to be solved, this is Sam's answer also.
+
+<P>Here's another example:
+
+<P><PRE>(define (<A NAME="g20"></A>hypotenuse a b)
+  (sqrt (+ (square a) (square b))))
+
+&gt; (hypotenuse 5 12)
+</PRE>
+
+<P> Suppose Alonzo hires Harry to compute this expression.
+Harry must first substitute the actual argument values (5 and 12) into the
+body of <CODE>hypotenuse</CODE>:
+
+<P><PRE>(sqrt (+ (square 5) (square 12)))
+</PRE>
+
+<P>Now he evaluates that expression, just as Alonzo would evaluate it
+if you typed it at a Scheme prompt.  That is, Harry hires four little
+people: one <CODE>sqrt</CODE> expert, one <CODE>+</CODE> expert, and two <CODE>square</CODE>
+experts.<A NAME="text5" HREF="defining.html#ft5">[5]</A> In particular, some little
+person has to evaluate <CODE>(square 5)</CODE>, by substituting 5 for <CODE>x</CODE> in
+the body of <CODE>square</CODE>, as in the earlier example.  Similarly, we
+substitute 12 for <CODE>x</CODE> in order to evaluate <CODE>(square 12)</CODE>:
+
+<P><PRE>(hypotenuse 5 12)                   ; substitute into HYPOTENUSE body
+(sqrt (+ (square 5) (square 12)))   ; substitute for (SQUARE 5)
+         (* 5 5)
+         25
+(sqrt (+ 25         (square 12)))   ; substitute for (SQUARE 12)
+                    (* 12 12)
+                    144
+(sqrt (+ 25         144))
+      (+ 25         144)            ; combine the results as before
+      169
+(sqrt 169)
+13
+</PRE>
+
+<P>Don't forget, in the heady rush of learning about the substitution
+model, what you already knew from before:  Each piece of this computation is
+done by a little person, and some other little person is waiting for the
+result.  In other words, the substitution model tells us how <EM>each
+compound procedure</EM> is carried out, but doesn't change our picture of the
+way in which procedure invocations are <EM>composed</EM> into larger
+expressions.
+
+<P><H2>Pitfalls</H2>
+
+<P>Don't forget that a function can have only <EM>one</EM> return value.
+For example, here's a program that's supposed to return the sum of the
+squares of its two arguments:
+
+<P><PRE>(define (sum-of-squares x y)                 ;; wrong!
+  (square x)
+  (square y))
+</PRE>
+
+<P>The problem is that the body of this procedure has two expressions,
+instead of just one.  As it turns out, Scheme just ignores the value of the
+first expression in cases like this, and returns the value of the last one.
+What the programmer wants is the <EM>sum</EM> of these two values, so the
+procedure should say
+
+<P><PRE>(define (sum-of-squares x y)
+  (+ (square x)
+     (square y)))
+</PRE>
+
+<P>Another pitfall comes from thinking that a procedure call changes the
+value of a parameter.  Here's a faulty program that's supposed to compute
+the function described by <EM>f</EM>(<EM>x</EM>)=3<EM>x</EM>+10:
+
+<P><PRE>(define (f x)                                ;; wrong!
+  (* x 3)
+  (+ x 10))
+</PRE>
+
+<P>Again, the first expression has no effect and Scheme will just
+return the value <EM>x</EM>+10.<A NAME="text6" HREF="defining.html#ft6">[6]</A>
+
+<P>A very common pitfall in Scheme comes from choosing the name of
+a procedure as a parameter.  It doesn't come up very often with
+procedures like the ones in this chapter whose domains and ranges
+are both numbers, but it will be more likely later.  If you have a
+program like this:
+
+<P><PRE>(define (square x)
+  (* x x))
+
+(define (area square)                        ;; wrong!
+  (square square))
+</PRE>
+
+<P>then you'll get in trouble when you invoke the procedure, for
+example, by saying <CODE>(area 8)</CODE>.  The <CODE>area</CODE> little person will
+substitute <CODE>8</CODE> for <CODE>square</CODE> everywhere in the procedure definition,
+leaving you with the expression <CODE>(8 8)</CODE> to evaluate.  That expression
+would mean to apply the procedure <CODE>8</CODE> to the argument <CODE>8</CODE>, but
+<CODE>8</CODE> isn't a procedure, so an error message results.
+
+<P>It isn't a problem if the formal parameter is the name of a procedure that
+you don't use inside the body.  The problem arises when you try to use the
+same name, e.g., <CODE>square</CODE>, with two meanings within a single procedure.
+But special forms are an exception; you can never use the name of a special
+form as a parameter.
+
+<P>A similar problem about name conflicts comes up if you try to
+use a keyword (the name of a special form, such as <CODE>define</CODE>) as
+some other kind of name&mdash;either a formal parameter or the name of a
+procedure you're defining.  We're listing this separately because the
+result is likely to be different.  Instead of getting the wrong value
+substituted, as above, you'll probably see a special error message
+along the lines of &quot;improper use of keyword.&quot;
+
+<P>Formal parameters <EM>must</EM> be words.  Some people try to write
+procedures that have compound expressions as the formal parameters, like this:
+
+<P><PRE>(define (f (+ 3 x) y)                        ;; wrong!
+  (* x y))
+</PRE>
+
+<P>Remember that the job of the procedure definition is only to
+provide a <EM>name</EM> for the argument.  The <EM>actual</EM> argument isn't
+pinned down until you invoke the procedure.  People who write programs like
+the one above are trying to make the procedure definition do some of the job
+of the procedure invocation.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>4.1</B>&nbsp;&nbsp;Consider this procedure:
+
+<P><PRE>(define (ho-hum x y)
+  (+ x (* 2 y)))
+</PRE>
+
+<P>Show the substitution that occurs when you evaluate 
+
+<P><PRE>(ho-hum 8 12)
+</PRE>
+
+<P>
+<B>4.2</B>&nbsp;&nbsp;Given the following procedure:
+
+<P><PRE>(define (yawn x)
+  (+ 3 (* x 2)))
+</PRE>
+
+<P>list all the little people that are involved in evaluating
+
+<P><PRE>(yawn (/ 8 2))
+</PRE>
+
+<P>(Give their names, their specialties, their arguments,
+who hires them, and what they do with their answers.)
+
+
+<P>
+<B>4.3</B>&nbsp;&nbsp;Here are some procedure definitions.  For each one, describe the function in
+English, show a sample invocation, and show the result of that invocation.
+
+<P><PRE>(define (f x y) (- y x))
+
+(define (identity x) x)
+
+(define (three x) 3)
+
+(define (seven) 7)
+
+(define (magic n)
+  (- (/ (+ (+ (* 3 n)
+              13)
+           (- n 1))
+        4)
+     3))
+</PRE>
+
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>4.4</B>&nbsp;&nbsp;Each of the following procedure definitions has an error of some kind.
+Say what's wrong and why, and fix it:
+
+<P><PRE>(define (sphere-volume r)
+  (* (/ 4 3) 3.141592654)
+  (* r r r))
+
+(define (next x)
+  (x + 1))
+
+(define (square)
+  (* x x))
+
+(define (triangle-area triangle)
+  (* 0.5 base height))
+
+(define (sum-of-squares (square x) (square y))
+  (+ (square x) (square y)))
+</PRE>
+
+
+<P>
+<B>4.5</B>&nbsp;&nbsp;Write a procedure to convert a temperature from Fahrenheit to Celsius, and
+another to convert in the other direction.  The two formulas
+are <EM>F</EM>=<SUP><SMALL><SMALL>9</SMALL></SMALL></SUP>&frasl;<SUB><SMALL><SMALL>5</SMALL></SMALL></SUB><EM>C</EM>+32 and <EM>C</EM>=<SUP><SMALL>5</SMALL></SUP>&frasl;<SUB><SMALL>9</SMALL></SUB>(<EM>F</EM>-32).
+
+
+<P>
+<B>4.6</B>&nbsp;&nbsp;Define a procedure <CODE>fourth</CODE> that computes the fourth power of its
+argument.  Do this two ways, first using the multiplication function,
+and then using <CODE>square</CODE> and not (directly) using multiplication.
+
+
+<P>
+<B>4.7</B>&nbsp;&nbsp;Write a procedure that computes the absolute value of its argument by
+finding the square root of the square of the argument.
+
+
+<P>
+<B>4.8</B>&nbsp;&nbsp;&quot;Scientific notation&quot; is a way to represent very small or very large
+numbers by combining a medium-sized number with a power of 10.  For example,
+5&times;10<SUP><SMALL>7</SMALL></SUP> represents the number 50000000, while 3.26&times;10<SUP><SMALL>-9</SMALL></SUP>
+represents 0.00000000326 in scientific notation.  Write a procedure
+<CODE>scientific</CODE> that takes two arguments, a number and an exponent of 10,
+and returns the corresponding value:
+
+<P><PRE>&gt; (scientific 7 3)
+7000
+
+&gt; (scientific 42 -5)
+0.00042
+</PRE>
+
+<P>Some versions of Scheme represent fractions in <EM>a</EM>/<EM>b</EM> form, and
+some use scientific notation, so you might see <CODE>21/50000</CODE> or <CODE>4.2E-4</CODE>
+as the result of the last example instead of <CODE>0.00042</CODE>, but these are
+the same value.
+
+<P>(A harder problem for hotshots:  Can you write procedures that go in the
+other direction?  So you'd have
+
+<P><PRE>&gt; (sci-coefficient 7000)
+7
+
+&gt; (sci-exponent 7000)
+3
+</PRE>
+
+<P>You might find the primitive procedures <CODE>log</CODE> and <CODE>floor</CODE> helpful.)
+
+
+<P>
+<B>4.9</B>&nbsp;&nbsp;Define a procedure <CODE>discount</CODE> that takes two arguments: an item's
+initial price and a percentage discount.  It should return the new price:
+
+<P><PRE>&gt; (discount 10 5)
+9.50
+
+&gt; (discount 29.90 50)
+14.95
+</PRE>
+
+<P>
+<B>4.10</B>&nbsp;&nbsp;Write a procedure to compute the tip you should leave at a restaurant.  It
+should take the total bill as its argument and return the amount of the
+tip.  It should tip by 15%, but it should know to round up so that the
+total amount of money you leave (tip plus original bill) is a whole number
+of dollars.  (Use the <CODE>ceiling</CODE> procedure to round up.)
+
+<P><PRE>&gt; (tip 19.98)
+3.02
+
+&gt; (tip 29.23)
+4.77
+
+&gt; (tip 7.54)
+1.46
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="defining.html#text1">[1]</A> Technically, the entire
+expression <CODE>(define (square x) &hellip)</CODE> is the special form; the word <CODE>define</CODE> itself is called a <EM>keyword</EM>.  But in fact Lispians are
+almost always loose about this distinction and say &quot;<CODE>define</CODE> is a
+special form,&quot; just as we've done here.  The word &quot;form&quot; is an archaic
+synonym for &quot;expression,&quot; so &quot;special form&quot; just means &quot;special
+expression.&quot;<P>
+<A NAME="ft2" HREF="defining.html#text2">[2]</A> Also, we'll sometimes use the terms &quot;domain&quot; and
+&quot;range&quot; when we're talking about procedures, although technically, only
+functions have domains and ranges.<P>
+<A NAME="ft3" HREF="defining.html#text3">[3]</A> You know, that's
+when you wave your hands around in the air instead of explaining what you
+mean.<P>
+<A NAME="ft4" HREF="defining.html#text4">[4]</A> You may be thinking that this is rather an
+inefficient way to do things&mdash;all this copying and replacement before you
+can actually compute anything.  Perhaps you're afraid that your Scheme
+programs will run very slowly as a result.  Don't worry.  It really
+happens in a different way, but the effect is the same except for the
+speed.<P>
+<A NAME="ft5" HREF="defining.html#text5">[5]</A> Until we started defining our own procedures in this
+chapter, all of the little people were hired by Alonzo, because all
+expressions were typed directly to a Scheme prompt.  Now expressions can
+come from the bodies of procedures, and so the little people needed to
+compute those expressions are hired by the little person who's computing
+that procedure.  Notice also that each little person <EM>reports to</EM>
+another little person, not necessarily the one who <EM>hired</EM> her.  In
+this case, if Harry hires Shari for <CODE>sqrt</CODE>, Paul for <CODE>+</CODE>, and Slim
+and Sydney for the two <CODE>square</CODE>s, then Slim reports to Paul, not to
+Harry.  Only Shari reports directly to Harry.<P>
+<A NAME="ft6" HREF="defining.html#text6">[6]</A> This is especially problematic for people
+who used to program in a language like Pascal or BASIC, where you say things
+like &quot;<CODE>X = X * 3</CODE>&quot; all the time.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch3/people.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch5/words.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch4/math1.gif b/js/games/nluqo.github.io/~bh/ssch4/math1.gif
new file mode 100644
index 0000000..fcba365
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch4/math1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ssch5/words b/js/games/nluqo.github.io/~bh/ssch5/words
new file mode 100644
index 0000000..86ec8e1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch5/words
@@ -0,0 +1,661 @@
+<P>
+
+<P><A NAME="larson"></A>
+<P><CENTER><IMG SRC="../ss-pics/farside.jpg" ALT="figure: farside"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 5: Words and Sentences</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 5</H2>
+<H1>Words and Sentences</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch4/defining.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch6/true.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We started out, in Part I, with examples about acronyms and so on, but since
+then we've been working with numbery old numbers.  That's because the
+discussions about evaluation and procedure definition were complicated
+enough without introducing extra ideas at the same time.  But now we're
+ready to get back to symbolic programming.
+
+<P>As we mentioned in Chapter 3, everything that you type into Scheme is
+evaluated and the resulting value is printed out.  Let's say you want to use
+&quot;square&quot; as a word in your program.  For example, you want your program to
+solve the problem, &quot;Give me an adjective that describes
+<A NAME="g1"></A>Barry Manilow.&quot; If you just type <CODE>square</CODE> into Scheme, you
+will find out that <CODE>square</CODE> is a procedure:
+
+<P><PRE>&gt; square
+#&lt;PROCEDURE>
+</PRE>
+
+<P>(Different versions of Scheme will have different ways of printing
+out procedures.)
+
+<P>What you need is a way to say that you want to use the word &quot;<CODE>square</CODE>&quot;
+<EM>itself,</EM> rather than the <EM>value</EM> of that word, as an
+expression.  The way to do this is to use <A NAME="g2"></A><CODE>quote</CODE>:
+<A NAME="spquote"></A>
+
+<P><PRE>&gt; (quote square)
+SQUARE
+
+&gt; (quote (tomorrow never knows))
+(TOMORROW NEVER KNOWS)
+
+&gt; (quote (things we said today))
+(THINGS WE SAID TODAY)
+</PRE>
+
+<P><CODE>Quote</CODE> is a <A NAME="g3"></A><A NAME="g4"></A>special form, since its argument isn't evaluated.
+Instead, it just returns the argument as is.
+
+<P>Scheme programmers use <CODE>quote</CODE> a lot, so there is an abbreviation for it:
+
+<P><PRE>&gt; 'square
+SQUARE
+
+&gt; '(old brown shoe)
+(old brown shoe)
+</PRE>
+
+<P>(Since Scheme uses the apostrophe as an abbreviation for <CODE><A NAME="g5"></A>
+quote</CODE>, you can't use one as an ordinary punctuation mark in a sentence.
+That's why we've been avoiding titles like <CODE>(can't buy me love)</CODE>.
+To Scheme this would mean <CODE>(can (quote t) buy me
+love)</CODE>!)<A NAME="text1" HREF="words#ft1">[1]</A>
+
+<P>This idea of quoting, although it may seem arbitrary in the context of
+computer programming, is actually quite familiar from ordinary English.
+What is a book?  It's a bunch of pieces of paper, with printing on them,
+bound together.  What is &quot;a book&quot;?  It's a noun phrase, made up of an article
+and a noun.  See?  Similarly, what's 2+3?  It's five.  What's &quot;2+3&quot;?
+It's an arithmetic formula.  When you see words inside quotation marks, you
+understand that you're supposed to think about the words themselves; you
+don't evaluate what they mean.  Scheme is the same way.
+
+<P>(It's no accident that kids who make jokes like
+
+<P><P><BLOCKQUOTE>Matt:  &quot;Say your name.&quot;
+
+<P>Brian:  &quot;Your name.&quot;
+
+<P></BLOCKQUOTE>
+
+<P><P>grow up to be computer programmers.  The difference between a
+thing and its name is one of the important ideas that programmers need to
+understand.)
+
+<P><H2>Selectors</H2>
+
+<P>So far all we've done with words and sentences is quote them.  To do more
+interesting work, we need tools for two kinds of operations:  We have to be
+able to take them apart, and we have to be able to put them
+together.<A NAME="text2" HREF="words#ft2">[2]</A> We'll start with
+the take-apart tools; the technical term for them is <EM>selectors.</EM>
+
+<P><PRE>&gt; (first 'something)
+S
+
+&gt; (first '(eight days a week))
+EIGHT
+
+&gt; (first 910)
+9
+
+&gt; (last 'something)
+G
+
+&gt; (last '(eight days a week))
+WEEK
+
+&gt; (last 910)
+0
+
+&gt; (butfirst 'something)
+OMETHING
+
+&gt; (butfirst '(eight days a week))
+(DAYS A WEEK)
+
+&gt; (butfirst 910)
+10
+
+&gt; (butlast 'something)
+SOMETHIN
+
+&gt; (butlast '(eight days a week))
+(EIGHT DAYS A)
+
+&gt; (butlast 910)
+91
+</PRE>
+
+<P>Notice that the <A NAME="g9"></A><CODE>first</CODE> of a sentence is a word, while the
+<CODE>first</CODE> of a word is a letter.  (But there's no separate data type
+called &quot;letter&quot;; a letter is the same as a one-letter word.)  The
+<A NAME="g10"></A><CODE>butfirst</CODE> of a sentence is a sentence, and the <CODE>butfirst</CODE> of a
+word is a word.  The corresponding rules hold for <A NAME="g11"></A><CODE>last</CODE> and
+<A NAME="g12"></A><CODE>butlast</CODE>.
+
+<P>The names <CODE>butfirst</CODE> and <CODE>butlast</CODE> aren't meant to describe ways to
+sled; they abbreviate &quot;all <CODE>but</CODE> the <CODE>first</CODE>&quot; and &quot;all <CODE>but</CODE>
+the <CODE>last</CODE>.&quot;
+
+<P>You may be wondering why we're given ways to find the first and last
+elements but not the 42nd element.  It turns out that the ones we have are
+enough, since we can use these primitive selectors to define others:
+
+<P>
+<PRE>(define (<A NAME="g13"></A>second thing)
+  (first (butfirst thing)))
+
+&gt; (second '(like dreamers do))
+DREAMERS
+
+&gt; (second 'michelle)
+I
+</PRE>
+
+<P>
+
+<P>There is, however, a primitive selector <CODE>item</CODE> that takes
+two arguments, a number <EM>n</EM> and a word or sentence, and returns the <EM>n</EM>th
+element of the second argument.
+
+<P>
+<PRE>&gt; (item 4 '(being for the benefit of mister kite!))
+BENEFIT
+
+&gt; (item 4 'benefit)
+E
+</PRE>
+
+
+<P>Don't forget that a sentence containing exactly one word is different from
+the word itself, and selectors operate on the two differently:
+
+<P>
+<PRE>&gt; (first 'because)
+B
+
+&gt; (first '(because))
+BECAUSE
+</PRE>
+
+<P>
+<PRE>&gt; (butfirst 'because)
+ECAUSE
+
+<A NAME="g14"></A><A NAME="g15"></A>&gt; (butfirst '(because))
+()
+</PRE>
+
+<P>The value of that last expression is the <EM>empty sentence.</EM>  You can tell it's a sentence because of the
+parentheses, and you can tell it's empty because there's nothing between
+them.
+
+<P><PRE>&gt; (butfirst 'a)
+&quot;"
+
+&gt; (butfirst 1024)
+&quot;024"
+</PRE>
+
+<P>As these examples show, sometimes <CODE>butfirst</CODE> returns a word
+that has to have double-quote marks around it.  The first example
+shows the <EM><A NAME="g16"></A>empty word,</EM> while the second shows a number
+that's not in its ordinary form.  (Its numeric value is 24, but you don't
+usually see a zero in front.)
+
+<P><PRE>&gt; 024
+24
+
+&gt; &quot;024"
+&quot;024"
+</PRE>
+
+<P>We're going to try to avoid printing these funny words.  But don't
+be surprised if you see one as the return value from one of the selectors
+for words.  (Notice that you don't have to put a single quote in front of
+the double quotes.  Strings are self-evaluating, just as numbers are.)
+<A NAME="g17"></A>
+<A NAME="g18"></A>
+<A NAME="g19"></A>
+
+<P>Since <CODE>butfirst</CODE> and <CODE>butlast</CODE> are so hard to type, there are
+abbreviations <A NAME="g20"></A><CODE>bf</CODE> and <A NAME="g21"></A><CODE>bl</CODE>.  You can figure out which is which.
+
+<P><H2>Constructors</H2>
+
+<P>Functions for putting things together are called <EM>constructors.</EM>
+For now, we just have two of them: <A NAME="g22"></A><CODE>word</CODE> and <A NAME="g23"></A><CODE>sentence</CODE>.  <CODE>Word</CODE> takes any number of words as arguments and joins them all together
+into one humongous word:
+
+<P><PRE>&gt; (word 'ses 'qui 'pe 'da 'lian 'ism)
+SESQUIPEDALIANISM
+
+&gt; (word 'now 'here)
+NOWHERE
+
+&gt; (word 35 893)
+35893
+</PRE>
+
+<P><CODE>Sentence</CODE> is similar, but slightly different, since it can take both 
+words and sentences as arguments:
+
+<P><PRE>&gt;  (sentence 'carry 'that 'weight)
+(CARRY THAT WEIGHT)
+
+&gt; (sentence '(john paul) '(george ringo))
+(JOHN PAUL GEORGE RINGO)
+</PRE>
+
+<P><CODE>Sentence</CODE> is also too hard to type, so there's the
+abbreviation <A NAME="g24"></A><CODE>se</CODE>.
+
+<P><PRE>&gt; (se '(one plus one) 'makes 2)
+(ONE PLUS ONE MAKES 2)
+</PRE>
+
+<P>By the way, why did we have to quote <CODE>makes</CODE> in the last example, but
+not <CODE>2</CODE>?  It's because numbers are self-evaluating, as we said
+<A NAME="g25"></A>
+<A NAME="g26"></A>
+in Chapter 3.  We have to quote <CODE>makes</CODE> because otherwise Scheme
+would look for something named <CODE>makes</CODE> instead of using the word
+itself.  But numbers can't be the names of things; they represent
+themselves.  (In fact, you could quote the <CODE>2</CODE> and it wouldn't make any
+difference&mdash;do you see why?)
+
+<P><H2>First-Class Words and Sentences</H2>
+
+<P>If Scheme isn't your first programming language, you're probably accustomed
+to dealing with English text on a computer quite differently.  Many other
+languages treat a sentence, for example, as simply a collection (a
+&quot;string&quot;) of <EM>characters</EM> such as letters, spaces, and punctuation.
+Those languages don't help you maintain the two-level nature of English
+text, in which a sentence is composed of words, and a word is composed of
+letters.
+
+<P>Historically, computers just dealt with numbers.  You could add two numbers,
+move a number from one place in the computer's memory to another place, and
+so on.  Since each instruction in the computer's native <EM>machine
+language</EM> couldn't process anything larger than a number, programmers
+developed the attitude that a single number is a &quot;real thing&quot; while
+anything more complicated has to be considered as a collection of things,
+rather than as a single thing in itself.
+
+<P>The computer represents a text character as a single number.  In many
+programming languages, therefore, a character is a &quot;real thing,&quot; but
+a word or sentence is understood only as a collection of these
+character-code numbers.
+
+<P>But this isn't the way in which human beings normally think about their own
+language.  To you, a word isn't primarily a string of characters (although
+it may temporarily seem like one if you're competing in a spelling bee).
+It's more like a single unit of meaning.  Similarly, a sentence is a
+linguistic structure whose parts are words, not letters and spaces.
+
+<P>A programming language should let you express your ideas in terms that match
+<EM>your</EM> way of thinking, not the computer's way.  Technically, we say
+that words and sentences should be <EM>first-class data</EM> in our
+language.  This means that a sentence, for example, can be an argument to a
+procedure; it can be the value returned by a procedure; we can give it a name;
+and we can build aggregates whose elements are sentences.  So far we've seen
+how to do the first two of these.  We'll finish the job in Chapter
+7 (on <EM>variables</EM>) and Chapter 17 (on <EM>lists</EM>).
+
+<P><H2>Pitfalls</H2>
+
+<P>We've been avoiding apostrophes in our words and sentences because
+they're abbreviations for the <CODE>quote</CODE> special form.  You must also avoid
+periods, commas, semicolons, quotation marks, vertical bars, and, of course,
+parentheses, since all of these have special meanings in Scheme.  You may,
+however, use question marks and exclamation points.
+
+<P>Although we've already mentioned the need to avoid names of primitives
+when choosing formal parameters, we want to remind you specifically about the
+names <CODE>word</CODE> and <CODE>sentence</CODE>.  These are often very tempting formal
+parameters, because many procedures have words or sentences as their
+domains.  Unfortunately, if you choose these names for parameters, you won't
+be able to use the corresponding procedures within your definition.
+
+<P><PRE>(define (plural word)                        ;; wrong!
+  (word word 's))
+
+&gt; (plural 'george)
+ERROR: GEORGE isn't a procedure
+</PRE>
+
+<P>The result of substitution was not, as you might think,
+
+<P><PRE>(word 'george 's)
+</PRE>
+
+<P>but rather
+
+<P><PRE>('george 'george 's)
+</PRE>
+
+<P>We've been using <CODE>wd</CODE> and <CODE>sent</CODE> as formal parameters
+instead of <CODE>word</CODE> and <CODE>sentence</CODE>, and we recommend that practice.
+
+<P>There's a difference between a word and a single-word sentence.  For
+example, people often fall into the trap of thinking that the <CODE>butfirst</CODE>
+of a two-word sentence such as <CODE>(sexy sadie)</CODE> is the second word, but it's
+not.  It's a one-word-long sentence.  For example, its <CODE>count</CODE> is one,
+not five.<A NAME="text3" HREF="words#ft3">[3]</A>
+
+<P><PRE>&gt; (bf '(sexy sadie))
+(SADIE)
+
+&gt; (first (bf '(sexy sadie)))
+SADIE
+</PRE>
+
+<P>We mentioned earlier that sometimes Scheme has to put double-quote marks
+around words.  Just ignore them; don't get upset if your procedure returns
+<CODE>&quot;6-of-hearts&quot;</CODE> instead of just <CODE>6-of-hearts</CODE>.
+
+<P><CODE>Quote</CODE> doesn't mean &quot;print.&quot; Some people look at interactions
+like this:
+
+<P><PRE>&gt; '(good night)
+(GOOD NIGHT)
+</PRE>
+
+<P>and think that the quotation mark was an instruction telling
+Scheme to print what comes after it.  Actually, Scheme <EM>always</EM> prints
+the value of each expression you type, as part of the read-eval-print loop.
+In this case, the value of the entire expression is the subexpression that's
+being quoted, namely, the sentence <CODE>(good night)</CODE>.  That value wouldn't
+be printed if the quotation were part of some larger expression:
+
+<P><PRE>&gt; (bf '(good night))
+(NIGHT)
+</PRE>
+
+<P>If you see an error message like
+
+<P><PRE>&gt; (+ 3 (bf 1075))
+ERROR: INVALID ARGUMENT TO +: &quot;075"
+</PRE>
+
+<P>try entering the expression
+
+<P><PRE>&gt; (strings-are-numbers #t)
+OKAY
+</PRE>
+
+<P>and try again.  (The extension to Scheme that allows arithmetic
+operations to work on nonstandard numbers like <CODE>&quot;075&quot;</CODE> makes ordinary
+arithmetic slower than usual.  So we've provided a way to turn the extension
+on and off.  Invoking <CODE>strings-are-numbers</CODE> with the argument <CODE>#f</CODE>
+turns off the extension.)<A NAME="text4" HREF="words#ft4">[4]</A>
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>5.1</B>&nbsp;&nbsp;What values are printed when you type these expressions to Scheme?  (Figure
+it out in your head before you try it on the computer.)
+
+<P><PRE>(sentence 'I '(me mine))
+
+(sentence '() '(is empty))
+
+(word '23 '45)
+
+(se '23 '45)
+
+(bf 'a)
+
+(bf '(aye))
+
+(count (first '(maggie mae)))
+
+(se &quot;&quot; '() &quot;&quot; '())
+
+(count (se &quot;&quot; '() &quot;&quot; '()))
+</PRE>
+
+<P><B>5.2</B>&nbsp;&nbsp;For each of the following examples, write a procedure of two arguments
+that, when applied to the sample arguments, returns the sample result.
+Your procedures may not include any quoted data.
+
+<P><PRE>&gt; (f1 '(a b c) '(d e f))
+(B C D E)
+
+&gt; (f2 '(a b c) '(d e f))
+(B C D E AF)
+
+&gt; (f3 '(a b c) '(d e f))
+(A B C A B C)
+
+&gt; (f4 '(a b c) '(d e f))
+BE
+</PRE>
+
+<P>
+<B>5.3</B>&nbsp;&nbsp;Explain the difference in meaning between <CODE>(first 'mezzanine)</CODE> and
+<CODE>(first '(mezzanine))</CODE>.
+
+
+<P>
+<B>5.4</B>&nbsp;&nbsp;Explain the difference between the two expressions <CODE>(first (square 7))</CODE> and
+<CODE>(first '(square 7))</CODE>.
+
+
+<P>
+<B>5.5</B>&nbsp;&nbsp;Explain the difference between <CODE>(word 'a 'b 'c)</CODE> and <CODE>(se 'a 'b 'c)</CODE>.
+
+
+<P>
+<B>5.6</B>&nbsp;&nbsp;Explain the difference between <CODE>(bf 'zabadak)</CODE> and <CODE>(butfirst
+'zabadak)</CODE>.  
+
+<P>
+<B>5.7</B>&nbsp;&nbsp;Explain the difference between <CODE>(bf 'x)</CODE> and <CODE>(butfirst '(x))</CODE>.
+
+
+<P>
+<B>5.8</B>&nbsp;&nbsp;Which of the following are legal Scheme sentences?
+
+<P><PRE>(here, there and everywhere)
+(help!)
+(all i've got to do)
+(you know my name (look up the number))
+</PRE>
+
+
+<P>
+
+<B>5.9</B>&nbsp;&nbsp;Figure out what values each of the following will return <EM>before</EM>
+you try them on the computer:
+
+<P><PRE>(se (word (bl (bl (first '(make a))))
+          (bf (bf (last '(baseball mitt)))))
+    (word (first 'with) (bl (bl (bl (bl 'rigidly))))
+          (first 'held) (first (bf 'stitches))))
+
+(se (word (bl (bl 'bring)) 'a (last 'clean))
+    (word (bl (last '(baseball hat))) (last 'for) (bl (bl 'very))
+	  (last (first '(sunny days)))))
+</PRE>
+
+<P><B>5.10</B>&nbsp;&nbsp;What kinds of argument can you give <CODE>butfirst</CODE> so that it
+returns a word?  A sentence?
+
+
+<P>
+<B>5.11</B>&nbsp;&nbsp;What kinds of argument can you give <CODE>last</CODE> so that it returns a word?  A
+sentence?
+
+
+<P>
+<B>5.12</B>&nbsp;&nbsp;Which of the functions <CODE>first</CODE>, <CODE>last</CODE>, <CODE>butfirst</CODE>, and
+<CODE>butlast</CODE> can return an empty word?  For what arguments?  What about
+returning an empty sentence?
+
+
+<P>
+
+
+<H2>Real Exercises</H2>
+
+<P><B>5.13</B>&nbsp;&nbsp;What does <CODE>'</CODE>&thinsp;<CODE>'banana</CODE> stand for?
+
+<P>What is <CODE>(first '</CODE>&thinsp;<CODE>'banana)</CODE> and why?
+
+
+<P>
+<B>5.14</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g27"></A>third</CODE> that selects the third letter of a word
+(or the third word of a sentence).
+
+
+<P>
+<B>5.15</B>&nbsp;&nbsp;<A NAME="firsttwo"></A>
+Write a procedure <CODE><A NAME="g28"></A>first-two</CODE> that takes a word as its argument,
+returning a two-letter word containing the first two letters of the argument.
+
+<P><PRE>&gt; (first-two 'ambulatory)
+AM
+</PRE>
+
+
+<P>
+
+<B>5.16</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g29"></A>two-first</CODE> that takes two words as arguments,
+returning a two-letter word containing the first letters of the two
+arguments.
+
+<P><PRE>&gt; (two-first 'brian 'epstein)
+BE
+</PRE>
+
+<P>Now write a procedure <CODE><A NAME="g30"></A>two-first-sent</CODE> that takes a two-word
+sentence as argument, returning a two-letter word containing the first
+letters of the two words.
+
+<P><PRE>&gt; (two-first-sent '(brian epstein))
+BE
+</PRE>
+
+
+<P>
+
+<B>5.17</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g31"></A>knight</CODE> that takes a person's name as its
+argument and returns the name with &quot;Sir&quot; in front of it.
+
+<P>
+
+<P><PRE>&gt; (knight '(david wessel))
+(SIR DAVID WESSEL)
+</PRE>
+
+
+<P>
+
+<B>5.18</B>&nbsp;&nbsp;Try the following and explain the result:
+
+<P><PRE>(define (<A NAME="g32"></A>ends word)
+  (word (first word) (last word)))
+
+&gt; (ends 'john)
+</PRE>
+
+<P>
+<B>5.19</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g33"></A>insert-and</CODE> that takes a sentence of items and
+returns a new sentence with an &quot;and&quot; in the right place:
+
+<P><PRE>&gt; (insert-and '(john bill wayne fred joey))
+(JOHN BILL WAYNE FRED AND JOEY)
+</PRE>
+
+<P>
+
+<B>5.20</B>&nbsp;&nbsp;Define a procedure to find somebody's middle names:
+
+<P><PRE>
+&gt; (<A NAME="g34"></A>middle-names '(james paul mccartney))
+(PAUL)
+
+&gt; (middle-names '(john ronald raoul tolkien))
+(RONALD RAOUL)
+
+&gt; (middle-names '(bugs bunny))
+()
+
+&gt; (middle-names '(peter blair denis bernard noone))
+(BLAIR DENIS BERNARD)
+</PRE>
+
+<P>
+<B>5.21</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g35"></A>query</CODE> that turns a statement into a question
+by swapping the first two words and adding a question mark to the last word:
+
+<P><PRE>&gt; (query '(you are experienced))
+(ARE YOU EXPERIENCED?)
+
+&gt; (query '(i should have known better))
+(SHOULD I HAVE KNOWN BETTER?)
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="words#text1">[1]</A> Actually, it <EM>is</EM> possible to put punctuation
+inside words as long as the entire word is enclosed in double-quote
+marks, like this:
+<A NAME="g6"></A>
+
+<P><PRE>&gt; '(&quot;can't&quot; buy me love)
+(&quot;can't&quot; BUY ME LOVE)
+</PRE>
+
+<P>Words like that are called <EM>strings.</EM> We're not going
+to use them in any examples until almost the end of the book.  Stay away from
+punctuation and you won't get in trouble.  However, question marks and
+exclamation points are okay.  (Ordinary words, the ones that are neither
+strings nor numbers, are officially called <EM>symbols.</EM>)<P>
+<A NAME="ft2" HREF="words#text2">[2]</A><A NAME="g7"></A>
+<A NAME="g8"></A> The procedures we're about to show you are not part of
+standard, official Scheme.  Scheme does provide ways to do these things, but
+the regular ways are somewhat more complicated and error-prone for
+beginners.  We've provided a simpler way to do symbolic computing, using
+ideas developed as part of the Logo programming language.<P>
+<A NAME="ft3" HREF="words#text3">[3]</A> You met <CODE>count</CODE> in Chapter 2.  It takes a word
+or sentence as its argument, returning either the number of letters in the
+word or the number of words in the sentence.<P>
+<A NAME="ft4" HREF="words#text4">[4]</A> See Appendix A for a fuller explanation.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch4/defining.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch6/true.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch5/words.html b/js/games/nluqo.github.io/~bh/ssch5/words.html
new file mode 100644
index 0000000..a6e1536
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch5/words.html
@@ -0,0 +1,661 @@
+<P>
+
+<P><A NAME="larson"></A>
+<P><CENTER><IMG SRC="../ss-pics/farside.jpg" ALT="figure: farside"></CENTER>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 5: Words and Sentences</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 5</H2>
+<H1>Words and Sentences</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch4/defining.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch6/true.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We started out, in Part I, with examples about acronyms and so on, but since
+then we've been working with numbery old numbers.  That's because the
+discussions about evaluation and procedure definition were complicated
+enough without introducing extra ideas at the same time.  But now we're
+ready to get back to symbolic programming.
+
+<P>As we mentioned in Chapter 3, everything that you type into Scheme is
+evaluated and the resulting value is printed out.  Let's say you want to use
+&quot;square&quot; as a word in your program.  For example, you want your program to
+solve the problem, &quot;Give me an adjective that describes
+<A NAME="g1"></A>Barry Manilow.&quot; If you just type <CODE>square</CODE> into Scheme, you
+will find out that <CODE>square</CODE> is a procedure:
+
+<P><PRE>&gt; square
+#&lt;PROCEDURE>
+</PRE>
+
+<P>(Different versions of Scheme will have different ways of printing
+out procedures.)
+
+<P>What you need is a way to say that you want to use the word &quot;<CODE>square</CODE>&quot;
+<EM>itself,</EM> rather than the <EM>value</EM> of that word, as an
+expression.  The way to do this is to use <A NAME="g2"></A><CODE>quote</CODE>:
+<A NAME="spquote"></A>
+
+<P><PRE>&gt; (quote square)
+SQUARE
+
+&gt; (quote (tomorrow never knows))
+(TOMORROW NEVER KNOWS)
+
+&gt; (quote (things we said today))
+(THINGS WE SAID TODAY)
+</PRE>
+
+<P><CODE>Quote</CODE> is a <A NAME="g3"></A><A NAME="g4"></A>special form, since its argument isn't evaluated.
+Instead, it just returns the argument as is.
+
+<P>Scheme programmers use <CODE>quote</CODE> a lot, so there is an abbreviation for it:
+
+<P><PRE>&gt; 'square
+SQUARE
+
+&gt; '(old brown shoe)
+(old brown shoe)
+</PRE>
+
+<P>(Since Scheme uses the apostrophe as an abbreviation for <CODE><A NAME="g5"></A>
+quote</CODE>, you can't use one as an ordinary punctuation mark in a sentence.
+That's why we've been avoiding titles like <CODE>(can't buy me love)</CODE>.
+To Scheme this would mean <CODE>(can (quote t) buy me
+love)</CODE>!)<A NAME="text1" HREF="words.html#ft1">[1]</A>
+
+<P>This idea of quoting, although it may seem arbitrary in the context of
+computer programming, is actually quite familiar from ordinary English.
+What is a book?  It's a bunch of pieces of paper, with printing on them,
+bound together.  What is &quot;a book&quot;?  It's a noun phrase, made up of an article
+and a noun.  See?  Similarly, what's 2+3?  It's five.  What's &quot;2+3&quot;?
+It's an arithmetic formula.  When you see words inside quotation marks, you
+understand that you're supposed to think about the words themselves; you
+don't evaluate what they mean.  Scheme is the same way.
+
+<P>(It's no accident that kids who make jokes like
+
+<P><P><BLOCKQUOTE>Matt:  &quot;Say your name.&quot;
+
+<P>Brian:  &quot;Your name.&quot;
+
+<P></BLOCKQUOTE>
+
+<P><P>grow up to be computer programmers.  The difference between a
+thing and its name is one of the important ideas that programmers need to
+understand.)
+
+<P><H2>Selectors</H2>
+
+<P>So far all we've done with words and sentences is quote them.  To do more
+interesting work, we need tools for two kinds of operations:  We have to be
+able to take them apart, and we have to be able to put them
+together.<A NAME="text2" HREF="words.html#ft2">[2]</A> We'll start with
+the take-apart tools; the technical term for them is <EM>selectors.</EM>
+
+<P><PRE>&gt; (first 'something)
+S
+
+&gt; (first '(eight days a week))
+EIGHT
+
+&gt; (first 910)
+9
+
+&gt; (last 'something)
+G
+
+&gt; (last '(eight days a week))
+WEEK
+
+&gt; (last 910)
+0
+
+&gt; (butfirst 'something)
+OMETHING
+
+&gt; (butfirst '(eight days a week))
+(DAYS A WEEK)
+
+&gt; (butfirst 910)
+10
+
+&gt; (butlast 'something)
+SOMETHIN
+
+&gt; (butlast '(eight days a week))
+(EIGHT DAYS A)
+
+&gt; (butlast 910)
+91
+</PRE>
+
+<P>Notice that the <A NAME="g9"></A><CODE>first</CODE> of a sentence is a word, while the
+<CODE>first</CODE> of a word is a letter.  (But there's no separate data type
+called &quot;letter&quot;; a letter is the same as a one-letter word.)  The
+<A NAME="g10"></A><CODE>butfirst</CODE> of a sentence is a sentence, and the <CODE>butfirst</CODE> of a
+word is a word.  The corresponding rules hold for <A NAME="g11"></A><CODE>last</CODE> and
+<A NAME="g12"></A><CODE>butlast</CODE>.
+
+<P>The names <CODE>butfirst</CODE> and <CODE>butlast</CODE> aren't meant to describe ways to
+sled; they abbreviate &quot;all <CODE>but</CODE> the <CODE>first</CODE>&quot; and &quot;all <CODE>but</CODE>
+the <CODE>last</CODE>.&quot;
+
+<P>You may be wondering why we're given ways to find the first and last
+elements but not the 42nd element.  It turns out that the ones we have are
+enough, since we can use these primitive selectors to define others:
+
+<P>
+<PRE>(define (<A NAME="g13"></A>second thing)
+  (first (butfirst thing)))
+
+&gt; (second '(like dreamers do))
+DREAMERS
+
+&gt; (second 'michelle)
+I
+</PRE>
+
+<P>
+
+<P>There is, however, a primitive selector <CODE>item</CODE> that takes
+two arguments, a number <EM>n</EM> and a word or sentence, and returns the <EM>n</EM>th
+element of the second argument.
+
+<P>
+<PRE>&gt; (item 4 '(being for the benefit of mister kite!))
+BENEFIT
+
+&gt; (item 4 'benefit)
+E
+</PRE>
+
+
+<P>Don't forget that a sentence containing exactly one word is different from
+the word itself, and selectors operate on the two differently:
+
+<P>
+<PRE>&gt; (first 'because)
+B
+
+&gt; (first '(because))
+BECAUSE
+</PRE>
+
+<P>
+<PRE>&gt; (butfirst 'because)
+ECAUSE
+
+<A NAME="g14"></A><A NAME="g15"></A>&gt; (butfirst '(because))
+()
+</PRE>
+
+<P>The value of that last expression is the <EM>empty sentence.</EM>  You can tell it's a sentence because of the
+parentheses, and you can tell it's empty because there's nothing between
+them.
+
+<P><PRE>&gt; (butfirst 'a)
+&quot;"
+
+&gt; (butfirst 1024)
+&quot;024"
+</PRE>
+
+<P>As these examples show, sometimes <CODE>butfirst</CODE> returns a word
+that has to have double-quote marks around it.  The first example
+shows the <EM><A NAME="g16"></A>empty word,</EM> while the second shows a number
+that's not in its ordinary form.  (Its numeric value is 24, but you don't
+usually see a zero in front.)
+
+<P><PRE>&gt; 024
+24
+
+&gt; &quot;024"
+&quot;024"
+</PRE>
+
+<P>We're going to try to avoid printing these funny words.  But don't
+be surprised if you see one as the return value from one of the selectors
+for words.  (Notice that you don't have to put a single quote in front of
+the double quotes.  Strings are self-evaluating, just as numbers are.)
+<A NAME="g17"></A>
+<A NAME="g18"></A>
+<A NAME="g19"></A>
+
+<P>Since <CODE>butfirst</CODE> and <CODE>butlast</CODE> are so hard to type, there are
+abbreviations <A NAME="g20"></A><CODE>bf</CODE> and <A NAME="g21"></A><CODE>bl</CODE>.  You can figure out which is which.
+
+<P><H2>Constructors</H2>
+
+<P>Functions for putting things together are called <EM>constructors.</EM>
+For now, we just have two of them: <A NAME="g22"></A><CODE>word</CODE> and <A NAME="g23"></A><CODE>sentence</CODE>.  <CODE>Word</CODE> takes any number of words as arguments and joins them all together
+into one humongous word:
+
+<P><PRE>&gt; (word 'ses 'qui 'pe 'da 'lian 'ism)
+SESQUIPEDALIANISM
+
+&gt; (word 'now 'here)
+NOWHERE
+
+&gt; (word 35 893)
+35893
+</PRE>
+
+<P><CODE>Sentence</CODE> is similar, but slightly different, since it can take both 
+words and sentences as arguments:
+
+<P><PRE>&gt;  (sentence 'carry 'that 'weight)
+(CARRY THAT WEIGHT)
+
+&gt; (sentence '(john paul) '(george ringo))
+(JOHN PAUL GEORGE RINGO)
+</PRE>
+
+<P><CODE>Sentence</CODE> is also too hard to type, so there's the
+abbreviation <A NAME="g24"></A><CODE>se</CODE>.
+
+<P><PRE>&gt; (se '(one plus one) 'makes 2)
+(ONE PLUS ONE MAKES 2)
+</PRE>
+
+<P>By the way, why did we have to quote <CODE>makes</CODE> in the last example, but
+not <CODE>2</CODE>?  It's because numbers are self-evaluating, as we said
+<A NAME="g25"></A>
+<A NAME="g26"></A>
+in Chapter 3.  We have to quote <CODE>makes</CODE> because otherwise Scheme
+would look for something named <CODE>makes</CODE> instead of using the word
+itself.  But numbers can't be the names of things; they represent
+themselves.  (In fact, you could quote the <CODE>2</CODE> and it wouldn't make any
+difference&mdash;do you see why?)
+
+<P><H2>First-Class Words and Sentences</H2>
+
+<P>If Scheme isn't your first programming language, you're probably accustomed
+to dealing with English text on a computer quite differently.  Many other
+languages treat a sentence, for example, as simply a collection (a
+&quot;string&quot;) of <EM>characters</EM> such as letters, spaces, and punctuation.
+Those languages don't help you maintain the two-level nature of English
+text, in which a sentence is composed of words, and a word is composed of
+letters.
+
+<P>Historically, computers just dealt with numbers.  You could add two numbers,
+move a number from one place in the computer's memory to another place, and
+so on.  Since each instruction in the computer's native <EM>machine
+language</EM> couldn't process anything larger than a number, programmers
+developed the attitude that a single number is a &quot;real thing&quot; while
+anything more complicated has to be considered as a collection of things,
+rather than as a single thing in itself.
+
+<P>The computer represents a text character as a single number.  In many
+programming languages, therefore, a character is a &quot;real thing,&quot; but
+a word or sentence is understood only as a collection of these
+character-code numbers.
+
+<P>But this isn't the way in which human beings normally think about their own
+language.  To you, a word isn't primarily a string of characters (although
+it may temporarily seem like one if you're competing in a spelling bee).
+It's more like a single unit of meaning.  Similarly, a sentence is a
+linguistic structure whose parts are words, not letters and spaces.
+
+<P>A programming language should let you express your ideas in terms that match
+<EM>your</EM> way of thinking, not the computer's way.  Technically, we say
+that words and sentences should be <EM>first-class data</EM> in our
+language.  This means that a sentence, for example, can be an argument to a
+procedure; it can be the value returned by a procedure; we can give it a name;
+and we can build aggregates whose elements are sentences.  So far we've seen
+how to do the first two of these.  We'll finish the job in Chapter
+7 (on <EM>variables</EM>) and Chapter 17 (on <EM>lists</EM>).
+
+<P><H2>Pitfalls</H2>
+
+<P>We've been avoiding apostrophes in our words and sentences because
+they're abbreviations for the <CODE>quote</CODE> special form.  You must also avoid
+periods, commas, semicolons, quotation marks, vertical bars, and, of course,
+parentheses, since all of these have special meanings in Scheme.  You may,
+however, use question marks and exclamation points.
+
+<P>Although we've already mentioned the need to avoid names of primitives
+when choosing formal parameters, we want to remind you specifically about the
+names <CODE>word</CODE> and <CODE>sentence</CODE>.  These are often very tempting formal
+parameters, because many procedures have words or sentences as their
+domains.  Unfortunately, if you choose these names for parameters, you won't
+be able to use the corresponding procedures within your definition.
+
+<P><PRE>(define (plural word)                        ;; wrong!
+  (word word 's))
+
+&gt; (plural 'george)
+ERROR: GEORGE isn't a procedure
+</PRE>
+
+<P>The result of substitution was not, as you might think,
+
+<P><PRE>(word 'george 's)
+</PRE>
+
+<P>but rather
+
+<P><PRE>('george 'george 's)
+</PRE>
+
+<P>We've been using <CODE>wd</CODE> and <CODE>sent</CODE> as formal parameters
+instead of <CODE>word</CODE> and <CODE>sentence</CODE>, and we recommend that practice.
+
+<P>There's a difference between a word and a single-word sentence.  For
+example, people often fall into the trap of thinking that the <CODE>butfirst</CODE>
+of a two-word sentence such as <CODE>(sexy sadie)</CODE> is the second word, but it's
+not.  It's a one-word-long sentence.  For example, its <CODE>count</CODE> is one,
+not five.<A NAME="text3" HREF="words.html#ft3">[3]</A>
+
+<P><PRE>&gt; (bf '(sexy sadie))
+(SADIE)
+
+&gt; (first (bf '(sexy sadie)))
+SADIE
+</PRE>
+
+<P>We mentioned earlier that sometimes Scheme has to put double-quote marks
+around words.  Just ignore them; don't get upset if your procedure returns
+<CODE>&quot;6-of-hearts&quot;</CODE> instead of just <CODE>6-of-hearts</CODE>.
+
+<P><CODE>Quote</CODE> doesn't mean &quot;print.&quot; Some people look at interactions
+like this:
+
+<P><PRE>&gt; '(good night)
+(GOOD NIGHT)
+</PRE>
+
+<P>and think that the quotation mark was an instruction telling
+Scheme to print what comes after it.  Actually, Scheme <EM>always</EM> prints
+the value of each expression you type, as part of the read-eval-print loop.
+In this case, the value of the entire expression is the subexpression that's
+being quoted, namely, the sentence <CODE>(good night)</CODE>.  That value wouldn't
+be printed if the quotation were part of some larger expression:
+
+<P><PRE>&gt; (bf '(good night))
+(NIGHT)
+</PRE>
+
+<P>If you see an error message like
+
+<P><PRE>&gt; (+ 3 (bf 1075))
+ERROR: INVALID ARGUMENT TO +: &quot;075"
+</PRE>
+
+<P>try entering the expression
+
+<P><PRE>&gt; (strings-are-numbers #t)
+OKAY
+</PRE>
+
+<P>and try again.  (The extension to Scheme that allows arithmetic
+operations to work on nonstandard numbers like <CODE>&quot;075&quot;</CODE> makes ordinary
+arithmetic slower than usual.  So we've provided a way to turn the extension
+on and off.  Invoking <CODE>strings-are-numbers</CODE> with the argument <CODE>#f</CODE>
+turns off the extension.)<A NAME="text4" HREF="words.html#ft4">[4]</A>
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>5.1</B>&nbsp;&nbsp;What values are printed when you type these expressions to Scheme?  (Figure
+it out in your head before you try it on the computer.)
+
+<P><PRE>(sentence 'I '(me mine))
+
+(sentence '() '(is empty))
+
+(word '23 '45)
+
+(se '23 '45)
+
+(bf 'a)
+
+(bf '(aye))
+
+(count (first '(maggie mae)))
+
+(se &quot;&quot; '() &quot;&quot; '())
+
+(count (se &quot;&quot; '() &quot;&quot; '()))
+</PRE>
+
+<P><B>5.2</B>&nbsp;&nbsp;For each of the following examples, write a procedure of two arguments
+that, when applied to the sample arguments, returns the sample result.
+Your procedures may not include any quoted data.
+
+<P><PRE>&gt; (f1 '(a b c) '(d e f))
+(B C D E)
+
+&gt; (f2 '(a b c) '(d e f))
+(B C D E AF)
+
+&gt; (f3 '(a b c) '(d e f))
+(A B C A B C)
+
+&gt; (f4 '(a b c) '(d e f))
+BE
+</PRE>
+
+<P>
+<B>5.3</B>&nbsp;&nbsp;Explain the difference in meaning between <CODE>(first 'mezzanine)</CODE> and
+<CODE>(first '(mezzanine))</CODE>.
+
+
+<P>
+<B>5.4</B>&nbsp;&nbsp;Explain the difference between the two expressions <CODE>(first (square 7))</CODE> and
+<CODE>(first '(square 7))</CODE>.
+
+
+<P>
+<B>5.5</B>&nbsp;&nbsp;Explain the difference between <CODE>(word 'a 'b 'c)</CODE> and <CODE>(se 'a 'b 'c)</CODE>.
+
+
+<P>
+<B>5.6</B>&nbsp;&nbsp;Explain the difference between <CODE>(bf 'zabadak)</CODE> and <CODE>(butfirst
+'zabadak)</CODE>.  
+
+<P>
+<B>5.7</B>&nbsp;&nbsp;Explain the difference between <CODE>(bf 'x)</CODE> and <CODE>(butfirst '(x))</CODE>.
+
+
+<P>
+<B>5.8</B>&nbsp;&nbsp;Which of the following are legal Scheme sentences?
+
+<P><PRE>(here, there and everywhere)
+(help!)
+(all i've got to do)
+(you know my name (look up the number))
+</PRE>
+
+
+<P>
+
+<B>5.9</B>&nbsp;&nbsp;Figure out what values each of the following will return <EM>before</EM>
+you try them on the computer:
+
+<P><PRE>(se (word (bl (bl (first '(make a))))
+          (bf (bf (last '(baseball mitt)))))
+    (word (first 'with) (bl (bl (bl (bl 'rigidly))))
+          (first 'held) (first (bf 'stitches))))
+
+(se (word (bl (bl 'bring)) 'a (last 'clean))
+    (word (bl (last '(baseball hat))) (last 'for) (bl (bl 'very))
+	  (last (first '(sunny days)))))
+</PRE>
+
+<P><B>5.10</B>&nbsp;&nbsp;What kinds of argument can you give <CODE>butfirst</CODE> so that it
+returns a word?  A sentence?
+
+
+<P>
+<B>5.11</B>&nbsp;&nbsp;What kinds of argument can you give <CODE>last</CODE> so that it returns a word?  A
+sentence?
+
+
+<P>
+<B>5.12</B>&nbsp;&nbsp;Which of the functions <CODE>first</CODE>, <CODE>last</CODE>, <CODE>butfirst</CODE>, and
+<CODE>butlast</CODE> can return an empty word?  For what arguments?  What about
+returning an empty sentence?
+
+
+<P>
+
+
+<H2>Real Exercises</H2>
+
+<P><B>5.13</B>&nbsp;&nbsp;What does <CODE>'</CODE>&thinsp;<CODE>'banana</CODE> stand for?
+
+<P>What is <CODE>(first '</CODE>&thinsp;<CODE>'banana)</CODE> and why?
+
+
+<P>
+<B>5.14</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g27"></A>third</CODE> that selects the third letter of a word
+(or the third word of a sentence).
+
+
+<P>
+<B>5.15</B>&nbsp;&nbsp;<A NAME="firsttwo"></A>
+Write a procedure <CODE><A NAME="g28"></A>first-two</CODE> that takes a word as its argument,
+returning a two-letter word containing the first two letters of the argument.
+
+<P><PRE>&gt; (first-two 'ambulatory)
+AM
+</PRE>
+
+
+<P>
+
+<B>5.16</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g29"></A>two-first</CODE> that takes two words as arguments,
+returning a two-letter word containing the first letters of the two
+arguments.
+
+<P><PRE>&gt; (two-first 'brian 'epstein)
+BE
+</PRE>
+
+<P>Now write a procedure <CODE><A NAME="g30"></A>two-first-sent</CODE> that takes a two-word
+sentence as argument, returning a two-letter word containing the first
+letters of the two words.
+
+<P><PRE>&gt; (two-first-sent '(brian epstein))
+BE
+</PRE>
+
+
+<P>
+
+<B>5.17</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g31"></A>knight</CODE> that takes a person's name as its
+argument and returns the name with &quot;Sir&quot; in front of it.
+
+<P>
+
+<P><PRE>&gt; (knight '(david wessel))
+(SIR DAVID WESSEL)
+</PRE>
+
+
+<P>
+
+<B>5.18</B>&nbsp;&nbsp;Try the following and explain the result:
+
+<P><PRE>(define (<A NAME="g32"></A>ends word)
+  (word (first word) (last word)))
+
+&gt; (ends 'john)
+</PRE>
+
+<P>
+<B>5.19</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g33"></A>insert-and</CODE> that takes a sentence of items and
+returns a new sentence with an &quot;and&quot; in the right place:
+
+<P><PRE>&gt; (insert-and '(john bill wayne fred joey))
+(JOHN BILL WAYNE FRED AND JOEY)
+</PRE>
+
+<P>
+
+<B>5.20</B>&nbsp;&nbsp;Define a procedure to find somebody's middle names:
+
+<P><PRE>
+&gt; (<A NAME="g34"></A>middle-names '(james paul mccartney))
+(PAUL)
+
+&gt; (middle-names '(john ronald raoul tolkien))
+(RONALD RAOUL)
+
+&gt; (middle-names '(bugs bunny))
+()
+
+&gt; (middle-names '(peter blair denis bernard noone))
+(BLAIR DENIS BERNARD)
+</PRE>
+
+<P>
+<B>5.21</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g35"></A>query</CODE> that turns a statement into a question
+by swapping the first two words and adding a question mark to the last word:
+
+<P><PRE>&gt; (query '(you are experienced))
+(ARE YOU EXPERIENCED?)
+
+&gt; (query '(i should have known better))
+(SHOULD I HAVE KNOWN BETTER?)
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="words.html#text1">[1]</A> Actually, it <EM>is</EM> possible to put punctuation
+inside words as long as the entire word is enclosed in double-quote
+marks, like this:
+<A NAME="g6"></A>
+
+<P><PRE>&gt; '(&quot;can't&quot; buy me love)
+(&quot;can't&quot; BUY ME LOVE)
+</PRE>
+
+<P>Words like that are called <EM>strings.</EM> We're not going
+to use them in any examples until almost the end of the book.  Stay away from
+punctuation and you won't get in trouble.  However, question marks and
+exclamation points are okay.  (Ordinary words, the ones that are neither
+strings nor numbers, are officially called <EM>symbols.</EM>)<P>
+<A NAME="ft2" HREF="words.html#text2">[2]</A><A NAME="g7"></A>
+<A NAME="g8"></A> The procedures we're about to show you are not part of
+standard, official Scheme.  Scheme does provide ways to do these things, but
+the regular ways are somewhat more complicated and error-prone for
+beginners.  We've provided a simpler way to do symbolic computing, using
+ideas developed as part of the Logo programming language.<P>
+<A NAME="ft3" HREF="words.html#text3">[3]</A> You met <CODE>count</CODE> in Chapter 2.  It takes a word
+or sentence as its argument, returning either the number of letters in the
+word or the number of words in the sentence.<P>
+<A NAME="ft4" HREF="words.html#text4">[4]</A> See Appendix A for a fuller explanation.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch4/defining.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch6/true.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch6/true b/js/games/nluqo.github.io/~bh/ssch6/true
new file mode 100644
index 0000000..a5c360c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch6/true
@@ -0,0 +1,892 @@
+<P>
+<A NAME="dumdee"></A>
+<P><CENTER><IMG SRC="../ss-pics/tweedle.jpg" ALT="figure: tweedle"></CENTER><P><CENTER>&quot;Contrariwise,&quot; continued Tweedledee, &quot;if it was so,
+it might be; and if it were so, it would be; but as it isn't, it ain't.
+That's logic.&quot;
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 6: True and False</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 6</H2>
+<H1>True and False</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch5/words.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch7/variables.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We still need one more thing before we can write more interesting programs: 
+the ability to make decisions.  Scheme has a way to say &quot;if this is true,
+then do this thing, otherwise do something else.&quot;
+
+<P>Here's a procedure that greets a person:
+
+<P><PRE>(define (<A NAME="g63"></A>greet name)
+  (if (equal? (first name) 'professor)
+      (se '(i hope i am not bothering you) 'professor (last name))
+      (se '(good to see you) (first name))))
+
+&gt; (greet '(matt wright))
+(GOOD TO SEE YOU MATT)
+
+&gt; (greet '(professor harold abelson))
+(I HOPE I AM NOT BOTHERING YOU PROFESSOR ABELSON)
+</PRE>
+
+<P>The program greets a person by checking to see if that person is a
+professor.  If so, it says, &quot;I hope I am not bothering you&quot; and then the
+professor's name.  But if it's a regular person, the program just says,
+&quot;Good to see you,&quot; and then the person's first name.
+
+<P><CODE>If</CODE> takes three arguments.  The first has to be either true or
+false.
+<A NAME="spif"></A>
+<A NAME="g64"></A>
+(We'll talk in a moment about exactly what true and false look like to
+Scheme.)  In the above example, the first word of the person's name might or
+might not be equal to the word &quot;Professor.&quot; The second and third arguments
+are expressions; one or the other of them is evaluated depending on the
+first argument.  The value of the entire <CODE>if</CODE> expression is the value of
+either the second or the third argument.
+
+<P>
+You learned in Chapter 2 that Scheme includes a special data type
+called <EM>Booleans</EM> to represent true or false
+values.  There are just two of them: <A NAME="g65"></A><CODE>#t</CODE> for &quot;true&quot; and
+<A NAME="g66"></A><CODE>#f</CODE> for &quot;false.&quot;<A NAME="dumbfalse"></A><A NAME="text1" HREF="true#ft1">[1]</A>
+
+<P>We said that the first argument to <CODE>if</CODE> has to be true or false.  Of
+course, it would be silly to say
+
+<P>
+
+<P><PRE>&gt; (if #t (+ 4 5) (* 2 7))
+9
+</PRE>
+
+<P>
+because what's the point of using <CODE>if</CODE> if we already know
+which branch will be followed?  Instead, as in the <CODE>greet</CODE> example, we call
+some procedure whose return value will be either true or false, depending on
+the particular arguments we give it.
+
+<P><H2>Predicates</H2>
+
+<P>A function that returns either <CODE>#t</CODE> or <CODE>#f</CODE> is called a <EM>predicate.</EM><A NAME="text2" HREF="true#ft2">[2]</A> You've
+already seen the <A NAME="g69"></A><CODE>equal?</CODE> predicate.  It takes two arguments, which
+can be of any type, and returns <CODE>#t</CODE> if the two arguments are the same
+value, or <CODE>#f</CODE> if they're different.  It's a convention in Scheme that
+the names of predicates end with a question mark, but that's just a
+convention.  Here are some other useful predicates:
+
+<P>
+<PRE>&gt; (member? 'mick '(dave dee dozy beaky mick and tich))
+#T
+&gt; (member? 'mick '(john paul george ringo))
+#F
+&gt; (member? 'e 'truly)
+#F
+</PRE>
+
+<P>
+<PRE>&gt; (member? 'y 'truly)
+#T
+&gt; (= 3 4)
+#F
+&gt; (= 67 67)
+#T
+&gt; (&gt; 98 97)
+#T
+&gt; (before? 'zorn 'coleman)
+#F
+&gt; (before? 'pete 'ringo)
+#T
+&gt; (empty? '(abbey road))
+#F
+&gt; (empty? '())
+#T
+&gt; (empty? 'hi)
+#F
+&gt; (empty? (bf (bf 'hi)))
+#T
+&gt; (empty? &quot;&quot;)
+#T
+</PRE>
+
+<P>
+
+<P><CODE>Member?</CODE> takes two arguments; it checks to see if the first
+<A NAME="memq"></A>
+<A NAME="g70"></A>
+one is a member of the second.  The <A NAME="g71"></A><CODE>=</CODE>, <A NAME="g72"></A><CODE>&gt;</CODE>, <A NAME="g73"></A><CODE>&lt;</CODE>,
+<A NAME="g74"></A><CODE>&gt;=</CODE>, and <A NAME="g75"></A><CODE>&lt;=</CODE> functions take two numbers as arguments and do the
+obvious comparisons.  (By the way, these are exceptions to the convention about
+question marks.)  <CODE>Before?</CODE> is like <CODE>&lt;</CODE>, but it compares two words
+<A NAME="g76"></A>
+alphabetically.  <CODE>Empty?</CODE> checks to see if its argument
+<A NAME="g77"></A>
+is either the empty word or the empty sentence.
+
+<P>
+
+<P>Why do we have both <CODE>equal?</CODE> and <CODE>=</CODE> in Scheme?  The first of these
+works on any kind of Scheme data, while the second is defined only for
+numbers.  You could get away with always using <CODE>equal?</CODE>, but the more
+specific form makes your program more self-explanatory; people reading the
+program know right away that you're comparing numbers.
+
+<P>
+
+<P>There are also several predicates that can be used to test the type of their
+argument:
+
+<P>
+
+<P><PRE>&gt; (<A NAME="g78"></A>number? 'three)
+#F
+&gt; (number? 74)
+#T
+&gt; (<A NAME="g79"></A>boolean? #f)
+#T
+&gt; (boolean? '(the beatles))
+#F
+</PRE>
+
+<P>
+<PRE>&gt; (boolean? 234)
+#F
+&gt; (boolean? #t)
+#T
+&gt; (<A NAME="g80"></A>word? 'flying)
+#T
+&gt; (word? '(dig it))
+#F
+&gt; (word? 87)
+#T
+&gt; (<A NAME="g81"></A>sentence? 'wait)
+#F
+&gt; (sentence? '(what goes on))
+#T
+</PRE>
+
+<P>Of course, we can also define new predicates:
+
+<P>
+
+<P><PRE>(define (vowel? letter)
+  (member? letter 'aeiou))
+
+(define (positive? number)
+  (&gt; number 0))
+</PRE>
+
+<P><H2>Using Predicates</H2>
+
+<P>Here's a procedure that returns the absolute value of a number:
+
+<P>
+
+<P><PRE>(define (<A NAME="g82"></A>abs num)
+  (if (&lt; num 0)
+      (- num)
+      num))
+</PRE>
+
+<P>
+
+<P>(If you call <A NAME="g83"></A><CODE>-</CODE> with just one argument, it returns the
+negative of that argument.)  Scheme actually provides <A NAME="g84"></A><CODE>abs</CODE> as a
+primitive procedure, but we can redefine it.
+
+<P>Do you remember how to play buzz?  You're all sitting around the campfire
+and you go around the circle counting up from one.  Each person says a
+number.  If your number is divisible by seven or if one of its digits is a
+seven, then instead of calling out your number, you say &quot;buzz.&quot;
+
+<P><PRE>(define (<A NAME="g85"></A>buzz num)
+  (if (or (divisible? num 7) (member? 7 num))
+      'buzz
+      num))
+
+(define (<A NAME="g86"></A>divisible? big little)
+  (= (remainder big little) 0))
+</PRE>
+
+<P><CODE>Or</CODE> can take any number of arguments, each of which must be
+true or false.  It returns true if any of its arguments are true, that is, if
+the first argument is true <EM>or</EM> the second argument is true <EM>or</EM>&hellip  (<CODE>Remainder</CODE>, as you know, takes two integers and tells
+you what the remainder is when you divide the first by the second.  If the
+remainder is zero, the first number is divisible by the second.)
+
+<P><CODE>Or</CODE> is one of three functions in Scheme that combine true or false
+values to produce another true or false value.  <CODE>And</CODE> returns true if
+<A NAME="g87"></A> all of its arguments are true, that is, the first <EM>and</EM>
+second <EM>and</EM>&hellip  Finally, there's a function <A NAME="g88"></A><CODE>not</CODE> that
+takes exactly one argument, returning true if that argument is false and
+vice versa.
+
+<P>In the last example, the procedure we really wanted to write was <CODE>buzz</CODE>,
+but we found it useful to define <CODE>divisible?</CODE> also.  It's quite common
+that the easiest way to solve some problem is to write a <EM>helper
+procedure</EM> to do part of the work.  In this case the helper procedure
+computes a function that's meaningful in itself, but sometimes you'll want
+to write procedures with names like <CODE>buzz-helper</CODE> that are useful only
+in the context of one particular problem.
+
+<P>Let's write a program that takes a word as its argument and returns the
+plural of that word.  Our first version will just put an &quot;s&quot; on the end:
+
+<P><PRE>(define (plural wd)
+  (word wd 's))
+
+&gt; (plural 'beatle)
+BEATLES
+
+&gt; (plural 'computer)
+COMPUTERS
+
+&gt; (plural 'fly)
+FLYS
+</PRE>
+
+<P>This works for most words, but not those that end in &quot;y.&quot; Here's
+version two:
+
+<P><PRE>(define (<A NAME="g89"></A>plural wd)
+  (if (equal? (last wd) 'y)
+      (word (bl wd) 'ies)
+      (word wd 's)))
+</PRE>
+
+<P>This isn't exactly right either; it thinks that the plural of
+&quot;boy&quot; is &quot;boies.&quot; We'll ask you to add some more rules in Exercise
+<A HREF="true.html#plurex">6.12</A>.
+
+<P><H2><CODE>If</CODE> Is a Special Form</H2>
+
+<P>There are a few subtleties that we haven't told you about yet.  First of
+all, <A NAME="g90"></A><CODE>if</CODE> is a <A NAME="g91"></A><A NAME="g92"></A>special form.  Remember that we're going to
+need the value of only one of its last two arguments.  It would be wasteful
+for Scheme to evaluate the other one.  So if you say
+
+<P><PRE>(if (= 3 3)
+    'sure
+    (factorial 1000))
+</PRE>
+
+<P><CODE>if</CODE> won't compute the factorial of 1000 before returning
+<CODE>sure</CODE>.
+
+<P>The rule is that <CODE>if</CODE> always evaluates its first argument.  If the value
+of that argument is true, then <CODE>if</CODE> evaluates its second argument and
+returns its value.  If the value of the first argument is false, then <CODE>if</CODE> evaluates its third argument and returns that value.
+
+<P><H2>So Are <CODE>And</CODE> and <CODE>Or</CODE></H2>
+
+<P><CODE>And</CODE> and <A NAME="g93"></A><CODE>or</CODE> are also <A NAME="g94"></A><A NAME="g95"></A>special forms.  They evaluate
+<A NAME="g96"></A> their arguments in order from left to right<A NAME="text3" HREF="true#ft3">[3]</A> and stop as soon as they can.  For <CODE>or</CODE>, this means
+returning true as soon as any of the arguments is true.  <CODE>And</CODE> returns
+false as soon as any argument is false.  This turns out to be useful in
+cases like the following:
+
+<P><PRE>(define (divisible? big small)
+  (= (remainder big small) 0))
+
+(define (<A NAME="g97"></A>num-divisible-by-4? x)
+  (and (number? x) (divisible? x 4)))
+
+&gt; (num-divisible-by-4? 16)
+#T
+
+&gt; (num-divisible-by-4? 6)
+#F
+
+&gt; (num-divisible-by-4? 'aardvark)
+#F
+
+&gt; (divisible? 'aardvark 4)
+ERROR: AARDVARK IS NOT A NUMBER
+</PRE>
+
+<P>We want to see if <CODE>x</CODE> is a number, and, if so, if it's
+divisible by <CODE>4</CODE>.  It would be an error to apply <CODE>divisible?</CODE> to a
+nonnumber.  If <CODE>and</CODE> were an ordinary procedure, the two tests (<CODE>number?</CODE> and <CODE>divisible?</CODE>) would both be evaluated before we would
+have a chance to pay attention to the result of the first one.  Instead, if
+<CODE>x</CODE> turns out not to be a number, our procedure will return <CODE>#f</CODE>
+without trying to divide it by <CODE>4</CODE>.
+
+<P><H2>Everything That Isn't False Is True</H2>
+
+<P><CODE>#T</CODE> isn't the only true value.  In fact, <EM>every</EM> value is
+considered true except for <CODE>#f</CODE>.
+
+<P><PRE>&gt; (if (+ 3 4) 'yes 'no)
+YES
+</PRE>
+
+<P>This allows us to have <EM>semipredicates</EM> that give
+slightly more information than just true or false.  For example, we can
+write an integer quotient procedure.  That is to say, our procedure will
+divide its first argument by the second, but only if the first is evenly
+divisible by the second.  If not, our procedure will return <CODE>#f</CODE>.
+
+<P><PRE>(define (<A NAME="g98"></A>integer-quotient big little)
+  (if (divisible? big little)
+      (/ big little)
+      #f))
+
+&gt; (integer-quotient 27 3)
+9
+
+&gt; (integer-quotient 12 5)
+#F
+</PRE>
+
+<P><CODE>And</CODE> and <CODE>or</CODE> are also semipredicates.  We've already explained
+that <CODE>or</CODE> returns a true result as soon as it evaluates a true
+argument.  The particular true value that <CODE>or</CODE> returns is the value of
+that first true argument:
+
+<P><PRE>&gt; (or #f 3 #f 4)
+3
+</PRE>
+
+<P><CODE>And</CODE> returns a true value only if all of its arguments are
+true.  In that case, it returns the value of the last argument:
+
+<P><PRE>&gt; (and 1 2 3 4 5)
+5
+</PRE>
+
+<P>As an example in which this behavior is useful, we can rewrite
+<CODE>integer-quotient</CODE> more tersely:
+
+<P><PRE>(define (integer-quotient big little)        ;; alternate version
+  (and (divisible? big little)
+       (/ big little)))
+</PRE>
+
+<P><H2>Decisions, Decisions, Decisions</H2>
+
+<P><CODE>If</CODE> is great for an either-or choice.  But sometimes there are several
+possibilities to consider:
+
+<P><PRE>(define (roman-value letter)
+  (if (equal? letter 'i)
+      1
+      (if (equal? letter 'v)
+          5
+          (if (equal? letter 'x)
+              10
+              (if (equal? letter 'l)
+                  50
+                  (if (equal? letter 'c)
+                      100
+                      (if (equal? letter 'd)
+                          500
+                          (if (equal? letter 'm)
+                              1000
+                              'huh?))))))))
+</PRE>
+
+<P>That's pretty hideous.  Scheme provides a shorthand notation for
+situations like this in which you have to choose from among several
+possibilities: the <A NAME="g99"></A><A NAME="g100"></A>special form <A NAME="g101"></A><CODE>cond</CODE>.
+<A NAME="cond"></A>
+
+<P><PRE>(define (<A NAME="g102"></A>roman-value letter)
+  (cond ((equal? letter 'i) 1)
+        ((equal? letter 'v) 5)
+        ((equal? letter 'x) 10)
+        ((equal? letter 'l) 50)
+        ((equal? letter 'c) 100)
+        ((equal? letter 'd) 500)
+        ((equal? letter 'm) 1000)
+        (else 'huh?)))
+</PRE>
+
+<P>The tricky thing about <CODE>cond</CODE> is that it doesn't use parentheses in quite
+<A NAME="g103"></A> the same way as the rest
+of Scheme.  Ordinarily, parentheses mean procedure invocation.  In <CODE>cond</CODE>, <EM>most</EM> of the parentheses still mean that, but <EM>some</EM> of
+them are used to group pairs of tests and results.  We've reproduced the
+same <CODE>cond</CODE> expression below, indicating the funny ones in boldface.
+
+<P><PRE>(define (roman-value letter)
+  (cond <STRONG><BIG>(</BIG></STRONG>(equal? letter 'i) 1<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'v) 5<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'x) 10<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'l) 50<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'c) 100<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'd) 500<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'm) 1000<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>else 'huh?<STRONG><BIG>)</BIG></STRONG> ))
+</PRE>
+
+<P><CODE>Cond</CODE> takes any number of arguments, each of which is <EM>two
+expressions</EM> inside a pair of parentheses.  Each argument is called a <EM><A NAME="g104"></A><A NAME="g105"></A>cond clause.</EM> In the example above, one typical clause is
+
+<P><PRE><STRONG><BIG>(</BIG></STRONG>(equal? letter 'l) 50<STRONG><BIG>)</BIG></STRONG>
+</PRE>
+
+<P>The outermost parentheses on that line enclose two expressions.
+The first of the two expressions (the <EM>condition</EM>) is taken as
+true or false, just like the first argument to <CODE>if</CODE>.  The second
+expression of each pair (the <EM>consequent</EM>) is a candidate for
+the return value of the entire <CODE>cond</CODE> invocation.
+
+<P><CODE>Cond</CODE> examines its arguments from left to right.  Remember that since
+<CODE>cond</CODE> is a special form, its arguments are not evaluated ahead of time.
+For each argument, <CODE>cond</CODE> evaluates the first of the two expressions
+within the argument.  If that value turns out to be true, then <CODE>cond</CODE>
+evaluates the second expression in the same argument, and returns that value
+without examining any further arguments.  But if the value is false, then
+<CODE>cond</CODE> does <EM>not</EM> evaluate the second expression; instead, it goes
+on to the next argument.
+
+<P>By convention, the last argument always starts with the word <A NAME="g106"></A><CODE>else</CODE>
+instead of an expression.  You can think of this as representing a true
+value, but <CODE>else</CODE> doesn't mean true in any other context; you're only
+allowed to use it as the condition of the last clause of a <CODE>cond</CODE>.<A NAME="text4" HREF="true#ft4">[4]</A>
+
+<P>Don't get into bad habits of thinking about the appearance of
+<CODE>cond</CODE> clauses in terms of &quot;two parentheses in a row.&quot;
+That's often the case, but not always.  For example, here is a procedure that
+translates Scheme true or false values (<CODE>#t</CODE> and <CODE>#f</CODE>)
+into more human-readable words <CODE>true</CODE> and <CODE>false</CODE>.
+
+<P><PRE>(define (<A NAME="g107"></A>truefalse value)
+  (cond (value 'true)
+	(else 'false)))
+
+&gt; (truefalse (= 2 (+ 1 1)))
+TRUE
+
+&gt; (truefalse (= 5 (+ 2 2)))
+FALSE
+</PRE>
+
+<P>When a <CODE>cond</CODE> tests several possible conditions, they might not
+be <A NAME="g108"></A><A NAME="g109"></A>mutually exclusive.<A NAME="text5"
+HREF="true#ft5">[5]</A> This can be either a source of error or an advantage in
+writing efficient programs.  The trick is to make the <EM>most
+restrictive</EM> test first.  For example, it would be an error to say
+
+<P><PRE>(cond ((number? (first sent)) &hellip)           ;; wrong
+      ((empty? sent) &hellip)
+      &hellip)
+</PRE>
+
+<P>because the first test only makes sense once you've already
+established that there <EM>is</EM> a first word of the sentence.
+On the other hand, you don't have to say
+
+<P><PRE>(cond ((empty? sent) &hellip)
+      ((and (not (empty? sent)) (number? (first sent))) &hellip)
+      &hellip)
+</PRE>
+
+<P>because you've already established that the sentence is nonempty
+if you get as far as the second clause.
+
+<P><H2><CODE>If</CODE> Is Composable</H2>
+
+<P>Suppose we want to write a <CODE>greet</CODE> procedure that works like this:
+
+<P><PRE>&gt; (greet '(brian epstein))
+(PLEASED TO MEET YOU BRIAN - HOW ARE YOU?)
+
+&gt; (greet '(professor donald knuth))
+(PLEASED TO MEET YOU PROFESSOR KNUTH - HOW ARE YOU?)
+</PRE>
+
+<P>The response of the program in these two cases is almost the same;
+the only difference is in the form of the person's name.
+
+<P>This procedure could be written in two ways:
+
+<P><PRE>(define (greet name)
+  (if (equal? (first name) 'professor)
+      (se '(pleased to meet you)
+	  'professor
+	  (last name)
+	  '(- how are you?))
+      (se '(pleased to meet you)
+	  (first name)
+	  '(- how are you?))))
+
+(define (greet name)
+  (se '(pleased to meet you)
+      (if (equal? (first name) 'professor)
+	  (se 'professor (last name))
+	  (first name))
+      '(- how are you?)))
+</PRE>
+
+<P>The second version avoids repeating the common parts of the
+response by using <CODE>if</CODE> within a larger expression.
+
+<P>Some people find it counterintuitive to use <CODE>if</CODE> as we did in the second
+version.  Perhaps the reason is that in some other programming languages,
+<CODE>if</CODE> is a &quot;command&quot; instead of a function like any other.  A mechanism
+that selects one part of a program to run, and leaves out another part, may
+seem too important to be a mere argument subexpression.  But in Scheme, the
+value returned by <EM>every</EM> function can be used as part of a larger
+expression.<A NAME="text6" HREF="true#ft6">[6]</A>
+
+<P>We aren't saying anything new here.  We've already explained the idea of
+composition of functions, and we're just making the same point again about
+<CODE>if</CODE>.  But we've learned that many students expect <CODE>if</CODE> to be an
+exception, so we're taking the opportunity to emphasize the point: There are
+no exceptions to this rule.
+
+<P><H2>Pitfalls</H2>
+
+<P>The biggest pitfall in this chapter is the unusual notation of <CODE>cond</CODE>.  Keeping track of the parentheses that mean function invocation, as
+usual, and the parentheses that just group the parts of a <CODE>cond</CODE> clause
+is tricky until you get accustomed to it.
+
+<P>Many people also have trouble with the asymmetry of the <A NAME="g110"></A><CODE>member?</CODE>
+predicate.  The first argument is something small; the second is something
+big.  (The order of arguments is the same as the order of a typical English
+sentence about membership:  &quot;Is Mick a member of the Beatles?&quot;)
+It seems pretty obvious when you look at an example in which both
+arguments are quoted constant values, but you can get in trouble when you
+define a procedure and use its parameters as the arguments to <CODE>member?</CODE>.
+Compare writing a procedure that says, &quot;does the letter E appear in this
+word?&quot; with one that says, &quot;is this letter a vowel?&quot;
+
+<P>Many people try to use <CODE>and</CODE> and <CODE>or</CODE> with the full flexibility
+of the corresponding English words.  Alas, Scheme is not English.  For
+example, suppose you want to know whether the argument to a procedure is
+either the word <CODE>yes</CODE> or the word <CODE>no</CODE>.  You can't say
+
+<P>
+<PRE>(equal? argument (or 'yes 'no))              ; wrong!
+</PRE>
+
+<P>This sounds promising:  &quot;Is the <CODE>argument</CODE> <CODE>equal</CODE> to
+the word <CODE>yes</CODE> <CODE>or</CODE> the word <CODE>no</CODE>?&quot; But the arguments to <CODE>or</CODE> must be true-or-false values, not things you want to check for equality
+with something else.  You have to make two separate equality tests:
+
+<P><PRE>(or (equal? argument 'yes) (equal? argument 'no))
+</PRE>
+
+<P>In this particular case, you could also solve the problem by saying
+
+<P><PRE>(member? argument '(yes no))
+</PRE>
+
+<P>but the question of trying to use <CODE>or</CODE> as if it were English
+comes up in other cases for which <CODE>member?</CODE> won't help.
+
+<P>This isn't exactly a pitfall, because it won't stop your program from
+working, but programs like
+
+<P><PRE>(define (odd? n)
+  (if (not (even? n)) #t #f))
+</PRE>
+
+<P>are redundant.  Instead, you could just say
+
+<P><PRE>(define (odd? n)
+  (not (even? n)))
+</PRE>
+
+<P>since the value of <CODE>(not (even? n))</CODE> is already <CODE>#t</CODE> or
+<CODE>#f</CODE>.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>6.1</B>&nbsp;&nbsp;What values are printed when you type these expressions to Scheme?  (Figure
+it out in your head before you try it on the computer.)
+
+<P><PRE>(cond ((= 3 4) '(this boy))
+      ((&lt; 2 5) '(nowhere man))
+      (else '(two of us)))
+
+(cond (empty? 3)
+      (square 7)
+      (else 9))
+
+(define (<A NAME="g111"></A>third-person-singular verb)
+  (cond ((equal? verb 'be) 'is)
+        ((equal? (last verb) 'o) (word verb 'es))
+        (else (word verb 's))))
+
+(third-person-singular 'go)
+</PRE>
+
+
+<P> 
+
+<B>6.2</B>&nbsp;&nbsp;What values are printed when you type these expressions to Scheme?  (Figure
+it out in your head before you try it on the computer.)
+
+<P><PRE>(or #f #f #f #t)
+
+(and #f #f #f #t)
+
+(or (= 2 3) (= 4 3))
+
+(not #f)
+
+(or (not (= 2 3)) (= 4 3))
+
+(or (and (= 2 3) (= 3 3)) (and (&lt; 2 3) (&lt; 3 4)))
+</PRE>
+
+<P><B>6.3</B>&nbsp;&nbsp;Rewrite the following procedure using a <CODE>cond</CODE> instead of the <CODE>if</CODE>s:
+
+<P><PRE>(define (<A NAME="g112"></A>sign number)
+  (if (&lt; number 0)
+      'negative
+      (if (= number 0)
+	  'zero
+	  'positive)))
+</PRE>
+
+<P>
+<B>6.4</B>&nbsp;&nbsp;Rewrite the following procedure using an <CODE>if</CODE> instead of the <CODE>cond</CODE>:
+
+<P><PRE>(define (<A NAME="g113"></A>utensil meal)
+  (cond ((equal? meal 'chinese) 'chopsticks)
+	(else 'fork)))
+</PRE>
+
+<P>
+<P>
+<H2>Real Exercises</H2>
+<P>
+Note: Writing helper procedures may be useful in solving some of these
+problems.
+
+<P><B>6.5</B>&nbsp;&nbsp;Write a procedure <A NAME="g114"></A><CODE>european-time</CODE> to convert a time from American
+AM/PM notation into European 24-hour notation.  Also
+write <A NAME="g115"></A><CODE>american-time</CODE>, which does the opposite:
+
+<P><PRE>&gt; (european-time '(8 am))
+8
+
+&gt; (european-time '(4 pm))
+16
+
+&gt; (american-time 21)
+(9 PM)
+
+&gt; (american-time 12)
+(12 PM)
+
+&gt; (european-time '(12 am))
+24
+</PRE>
+
+<P>Getting noon and midnight right is tricky.
+
+
+<P>
+<B>6.6</B>&nbsp;&nbsp;Write a predicate <A NAME="g116"></A><CODE>teen?</CODE> that returns true if its argument is between
+13 and 19.
+
+
+<P>
+<B>6.7</B>&nbsp;&nbsp;Write a procedure <A NAME="g117"></A><CODE>type-of</CODE> that takes anything as its argument and
+returns one of the words <CODE>word</CODE>, <CODE>sentence</CODE>, <CODE>number</CODE>, or
+<CODE>boolean</CODE>:
+
+<P><PRE>&gt; (type-of '(getting better))
+SENTENCE
+
+&gt; (type-of 'revolution)
+WORD
+
+&gt; (type-of (= 3 3))
+BOOLEAN
+</PRE>
+
+<P>(Even though numbers are words, your procedure should return <CODE>number</CODE> if its argument is a number.)
+
+<P>Feel free to check for more specific types, such as &quot;positive integer,&quot;
+if you are so inclined.
+
+
+<P>
+<B>6.8</B>&nbsp;&nbsp;Write a procedure <A NAME="g118"></A><CODE>indef-article</CODE> that works like this:
+<PRE>&gt; (indef-article 'beatle)
+(A BEATLE)
+
+&gt; (indef-article 'album)
+(AN ALBUM)
+</PRE>
+
+<P>Don't worry about silent initial consonants like the <CODE>h</CODE> in <CODE>hour</CODE>.
+
+
+<P>
+<B>6.9</B>&nbsp;&nbsp;Sometimes you must choose the singular or the plural of a word:  <CODE>1 book</CODE> but <CODE>2 books</CODE>.  Write a procedure <A NAME="g119"></A><CODE>thismany</CODE> that takes
+two arguments, a number and a singular noun, and combines them appropriately:
+
+<P><PRE>&gt; (thismany 1 'partridge)
+(1 PARTRIDGE)
+
+&gt; (thismany 3 'french-hen)
+(3 FRENCH-HENS)
+</PRE>
+
+
+<P>
+<P>
+<B>6.10</B>&nbsp;&nbsp;Write a procedure <A NAME="g120"></A><CODE>sort2</CODE> that takes as its argument a sentence
+containing two numbers.  It should return a sentence containing the same two
+numbers, but in ascending order:
+
+<P><PRE>&gt; (sort2 '(5 7))
+(5 7)
+
+&gt; (sort2 '(7 5))
+(5 7)
+</PRE>
+
+<P>
+<B>6.11</B>&nbsp;&nbsp;Write a predicate <A NAME="g121"></A><CODE>valid-date?</CODE> that takes three numbers as arguments,
+representing a month, a day of the month, and a year.  Your procedure should
+return <CODE>#t</CODE> if the numbers represent a valid date (e.g., it isn't the
+31st of September).  February has 29 days if the year is divisible by 4,
+except that if the year is divisible by 100 it must also be divisible by 400.
+
+<P><PRE>&gt; (valid-date? 10 4 1949)
+#T
+
+&gt; (valid-date? 20 4 1776)
+#F
+
+&gt; (valid-date? 5 0 1992)
+#F
+
+&gt; (valid-date? 2 29 1900)
+#F
+
+&gt; (valid-date? 2 29 2000)
+#T
+</PRE>
+
+<P>
+<B>6.12</B>&nbsp;&nbsp;Make <A NAME="g122"></A><CODE>plural</CODE> handle correctly words that end in <CODE>y</CODE> but have a
+vowel before the <CODE>y</CODE>, such as <CODE>boy</CODE>.  Then teach it about words that
+end in <CODE>x</CODE> (box).  What other special cases can you find?
+
+<P><A NAME="plurex"></A>
+
+
+<P>
+<B>6.13</B>&nbsp;&nbsp;Write a better <A NAME="g123"></A><CODE>greet</CODE> procedure that understands as many different
+kinds of names as you can think of:
+
+<P><PRE>&gt; (greet '(john lennon))
+(HELLO JOHN)
+
+&gt; (greet '(dr marie curie))
+(HELLO DR CURIE)
+
+&gt; (greet '(dr martin luther king jr))
+(HELLO DR KING)
+
+&gt; (greet '(queen elizabeth))
+(HELLO YOUR MAJESTY)
+
+&gt; (greet '(david livingstone))
+(DR LIVINGSTONE I PRESUME?)
+</PRE>
+
+
+<P>
+<B>6.14</B>&nbsp;&nbsp;Write a procedure <A NAME="g124"></A><CODE>describe-time</CODE> that takes a number of seconds as its
+argument and returns a more useful description of that amount of time:
+<A NAME="desctime"></A>
+
+<P><PRE>&gt; (describe-time 45)
+(45 SECONDS)
+
+&gt; (describe-time 930)
+(15.5 MINUTES)
+
+&gt; (describe-time 30000000000)
+(9.506426344208686 CENTURIES)
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="true#text1">[1]</A> In <EM>some</EM>
+versions of Scheme, the <A NAME="g67"></A><A NAME="g68"></A>empty sentence is considered false.  That
+is, <CODE>()</CODE> and <CODE>#f</CODE> may be the same thing.  The reason that we can't
+be definite about this point is that older versions of Scheme follow the
+traditional Lisp usage, in which the empty sentence is false, but since then
+a standardization committee has come along and insisted that the two values
+should be different.  In this book we'll consider them as different, but
+we'll try to avoid examples in which it matters.  The main point is that you
+shouldn't be surprised if you see something like this:
+
+<P><PRE>&gt; (= 3 4)
+()
+</PRE>
+
+<P>in the particular implementation of Scheme that you're using.
+<P>
+<A NAME="ft2" HREF="true#text2">[2]</A> Why is it called that?  Think about an English
+sentence, such as &quot;Ringo is a drummer.&quot; As you may remember from elementary
+school, &quot;Ringo&quot; is the <EM>subject</EM> of that sentence, and &quot;is a
+drummer&quot; is the <EM>predicate.</EM> That predicate could be truthfully
+attached to some subjects but not others.  For example, it's true of &quot;Neil
+Peart&quot; but not of &quot;George Harrison.&quot; So the predicate &quot;is a drummer&quot;
+can be thought of as a function whose value is true or false.<P>
+<A NAME="ft3" HREF="true#text3">[3]</A> Since you
+can start a new line in the middle of an expression, in some cases the
+arguments will be &quot;top to bottom&quot; rather than &quot;left to right,&quot; but don't
+forget that Scheme doesn't care about line breaks.  That's why Lisp
+programmers always talk as if their programs were written on one enormously
+long line.<P>
+<A NAME="ft4" HREF="true#text4">[4]</A> What if you don't use an <CODE>else</CODE>
+clause at all?  If none of the clauses has a true condition, then the return
+value is unspecified.  In other words, always use <CODE>else</CODE>.<P>
+<A NAME="ft5" HREF="true#text5">[5]</A> Conditions are mutually
+exclusive if only one of them can be true at a time.<P>
+<A NAME="ft6" HREF="true#text6">[6]</A> Strictly speaking, since the argument expressions to a
+special form aren't evaluated, <CODE>if</CODE> is a function whose domain is
+expressions, not their values.  But many special forms, including <CODE>if</CODE>,
+<CODE>and</CODE>, and <CODE>or</CODE>, are designed to act as if they were ordinary
+functions, the kind whose arguments Scheme evaluates in advance.  The only
+difference is that it is sometimes possible for Scheme to figure out the
+correct return value after evaluating only some of the arguments.  Most of
+the time we'll just talk about the domains and ranges of these special forms
+as if they were ordinary functions.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch5/words.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch7/variables.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch6/true.html b/js/games/nluqo.github.io/~bh/ssch6/true.html
new file mode 100644
index 0000000..66a31da
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch6/true.html
@@ -0,0 +1,892 @@
+<P>
+<A NAME="dumdee"></A>
+<P><CENTER><IMG SRC="../ss-pics/tweedle.jpg" ALT="figure: tweedle"></CENTER><P><CENTER>&quot;Contrariwise,&quot; continued Tweedledee, &quot;if it was so,
+it might be; and if it were so, it would be; but as it isn't, it ain't.
+That's logic.&quot;
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 6: True and False</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 6</H2>
+<H1>True and False</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch5/words.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch7/variables.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>We still need one more thing before we can write more interesting programs: 
+the ability to make decisions.  Scheme has a way to say &quot;if this is true,
+then do this thing, otherwise do something else.&quot;
+
+<P>Here's a procedure that greets a person:
+
+<P><PRE>(define (<A NAME="g63"></A>greet name)
+  (if (equal? (first name) 'professor)
+      (se '(i hope i am not bothering you) 'professor (last name))
+      (se '(good to see you) (first name))))
+
+&gt; (greet '(matt wright))
+(GOOD TO SEE YOU MATT)
+
+&gt; (greet '(professor harold abelson))
+(I HOPE I AM NOT BOTHERING YOU PROFESSOR ABELSON)
+</PRE>
+
+<P>The program greets a person by checking to see if that person is a
+professor.  If so, it says, &quot;I hope I am not bothering you&quot; and then the
+professor's name.  But if it's a regular person, the program just says,
+&quot;Good to see you,&quot; and then the person's first name.
+
+<P><CODE>If</CODE> takes three arguments.  The first has to be either true or
+false.
+<A NAME="spif"></A>
+<A NAME="g64"></A>
+(We'll talk in a moment about exactly what true and false look like to
+Scheme.)  In the above example, the first word of the person's name might or
+might not be equal to the word &quot;Professor.&quot; The second and third arguments
+are expressions; one or the other of them is evaluated depending on the
+first argument.  The value of the entire <CODE>if</CODE> expression is the value of
+either the second or the third argument.
+
+<P>
+You learned in Chapter 2 that Scheme includes a special data type
+called <EM>Booleans</EM> to represent true or false
+values.  There are just two of them: <A NAME="g65"></A><CODE>#t</CODE> for &quot;true&quot; and
+<A NAME="g66"></A><CODE>#f</CODE> for &quot;false.&quot;<A NAME="dumbfalse"></A><A NAME="text1" HREF="true.html#ft1">[1]</A>
+
+<P>We said that the first argument to <CODE>if</CODE> has to be true or false.  Of
+course, it would be silly to say
+
+<P>
+
+<P><PRE>&gt; (if #t (+ 4 5) (* 2 7))
+9
+</PRE>
+
+<P>
+because what's the point of using <CODE>if</CODE> if we already know
+which branch will be followed?  Instead, as in the <CODE>greet</CODE> example, we call
+some procedure whose return value will be either true or false, depending on
+the particular arguments we give it.
+
+<P><H2>Predicates</H2>
+
+<P>A function that returns either <CODE>#t</CODE> or <CODE>#f</CODE> is called a <EM>predicate.</EM><A NAME="text2" HREF="true.html#ft2">[2]</A> You've
+already seen the <A NAME="g69"></A><CODE>equal?</CODE> predicate.  It takes two arguments, which
+can be of any type, and returns <CODE>#t</CODE> if the two arguments are the same
+value, or <CODE>#f</CODE> if they're different.  It's a convention in Scheme that
+the names of predicates end with a question mark, but that's just a
+convention.  Here are some other useful predicates:
+
+<P>
+<PRE>&gt; (member? 'mick '(dave dee dozy beaky mick and tich))
+#T
+&gt; (member? 'mick '(john paul george ringo))
+#F
+&gt; (member? 'e 'truly)
+#F
+</PRE>
+
+<P>
+<PRE>&gt; (member? 'y 'truly)
+#T
+&gt; (= 3 4)
+#F
+&gt; (= 67 67)
+#T
+&gt; (&gt; 98 97)
+#T
+&gt; (before? 'zorn 'coleman)
+#F
+&gt; (before? 'pete 'ringo)
+#T
+&gt; (empty? '(abbey road))
+#F
+&gt; (empty? '())
+#T
+&gt; (empty? 'hi)
+#F
+&gt; (empty? (bf (bf 'hi)))
+#T
+&gt; (empty? &quot;&quot;)
+#T
+</PRE>
+
+<P>
+
+<P><CODE>Member?</CODE> takes two arguments; it checks to see if the first
+<A NAME="memq"></A>
+<A NAME="g70"></A>
+one is a member of the second.  The <A NAME="g71"></A><CODE>=</CODE>, <A NAME="g72"></A><CODE>&gt;</CODE>, <A NAME="g73"></A><CODE>&lt;</CODE>,
+<A NAME="g74"></A><CODE>&gt;=</CODE>, and <A NAME="g75"></A><CODE>&lt;=</CODE> functions take two numbers as arguments and do the
+obvious comparisons.  (By the way, these are exceptions to the convention about
+question marks.)  <CODE>Before?</CODE> is like <CODE>&lt;</CODE>, but it compares two words
+<A NAME="g76"></A>
+alphabetically.  <CODE>Empty?</CODE> checks to see if its argument
+<A NAME="g77"></A>
+is either the empty word or the empty sentence.
+
+<P>
+
+<P>Why do we have both <CODE>equal?</CODE> and <CODE>=</CODE> in Scheme?  The first of these
+works on any kind of Scheme data, while the second is defined only for
+numbers.  You could get away with always using <CODE>equal?</CODE>, but the more
+specific form makes your program more self-explanatory; people reading the
+program know right away that you're comparing numbers.
+
+<P>
+
+<P>There are also several predicates that can be used to test the type of their
+argument:
+
+<P>
+
+<P><PRE>&gt; (<A NAME="g78"></A>number? 'three)
+#F
+&gt; (number? 74)
+#T
+&gt; (<A NAME="g79"></A>boolean? #f)
+#T
+&gt; (boolean? '(the beatles))
+#F
+</PRE>
+
+<P>
+<PRE>&gt; (boolean? 234)
+#F
+&gt; (boolean? #t)
+#T
+&gt; (<A NAME="g80"></A>word? 'flying)
+#T
+&gt; (word? '(dig it))
+#F
+&gt; (word? 87)
+#T
+&gt; (<A NAME="g81"></A>sentence? 'wait)
+#F
+&gt; (sentence? '(what goes on))
+#T
+</PRE>
+
+<P>Of course, we can also define new predicates:
+
+<P>
+
+<P><PRE>(define (vowel? letter)
+  (member? letter 'aeiou))
+
+(define (positive? number)
+  (&gt; number 0))
+</PRE>
+
+<P><H2>Using Predicates</H2>
+
+<P>Here's a procedure that returns the absolute value of a number:
+
+<P>
+
+<P><PRE>(define (<A NAME="g82"></A>abs num)
+  (if (&lt; num 0)
+      (- num)
+      num))
+</PRE>
+
+<P>
+
+<P>(If you call <A NAME="g83"></A><CODE>-</CODE> with just one argument, it returns the
+negative of that argument.)  Scheme actually provides <A NAME="g84"></A><CODE>abs</CODE> as a
+primitive procedure, but we can redefine it.
+
+<P>Do you remember how to play buzz?  You're all sitting around the campfire
+and you go around the circle counting up from one.  Each person says a
+number.  If your number is divisible by seven or if one of its digits is a
+seven, then instead of calling out your number, you say &quot;buzz.&quot;
+
+<P><PRE>(define (<A NAME="g85"></A>buzz num)
+  (if (or (divisible? num 7) (member? 7 num))
+      'buzz
+      num))
+
+(define (<A NAME="g86"></A>divisible? big little)
+  (= (remainder big little) 0))
+</PRE>
+
+<P><CODE>Or</CODE> can take any number of arguments, each of which must be
+true or false.  It returns true if any of its arguments are true, that is, if
+the first argument is true <EM>or</EM> the second argument is true <EM>or</EM>&hellip  (<CODE>Remainder</CODE>, as you know, takes two integers and tells
+you what the remainder is when you divide the first by the second.  If the
+remainder is zero, the first number is divisible by the second.)
+
+<P><CODE>Or</CODE> is one of three functions in Scheme that combine true or false
+values to produce another true or false value.  <CODE>And</CODE> returns true if
+<A NAME="g87"></A> all of its arguments are true, that is, the first <EM>and</EM>
+second <EM>and</EM>&hellip  Finally, there's a function <A NAME="g88"></A><CODE>not</CODE> that
+takes exactly one argument, returning true if that argument is false and
+vice versa.
+
+<P>In the last example, the procedure we really wanted to write was <CODE>buzz</CODE>,
+but we found it useful to define <CODE>divisible?</CODE> also.  It's quite common
+that the easiest way to solve some problem is to write a <EM>helper
+procedure</EM> to do part of the work.  In this case the helper procedure
+computes a function that's meaningful in itself, but sometimes you'll want
+to write procedures with names like <CODE>buzz-helper</CODE> that are useful only
+in the context of one particular problem.
+
+<P>Let's write a program that takes a word as its argument and returns the
+plural of that word.  Our first version will just put an &quot;s&quot; on the end:
+
+<P><PRE>(define (plural wd)
+  (word wd 's))
+
+&gt; (plural 'beatle)
+BEATLES
+
+&gt; (plural 'computer)
+COMPUTERS
+
+&gt; (plural 'fly)
+FLYS
+</PRE>
+
+<P>This works for most words, but not those that end in &quot;y.&quot; Here's
+version two:
+
+<P><PRE>(define (<A NAME="g89"></A>plural wd)
+  (if (equal? (last wd) 'y)
+      (word (bl wd) 'ies)
+      (word wd 's)))
+</PRE>
+
+<P>This isn't exactly right either; it thinks that the plural of
+&quot;boy&quot; is &quot;boies.&quot; We'll ask you to add some more rules in Exercise
+<A HREF="true.html#plurex">6.12</A>.
+
+<P><H2><CODE>If</CODE> Is a Special Form</H2>
+
+<P>There are a few subtleties that we haven't told you about yet.  First of
+all, <A NAME="g90"></A><CODE>if</CODE> is a <A NAME="g91"></A><A NAME="g92"></A>special form.  Remember that we're going to
+need the value of only one of its last two arguments.  It would be wasteful
+for Scheme to evaluate the other one.  So if you say
+
+<P><PRE>(if (= 3 3)
+    'sure
+    (factorial 1000))
+</PRE>
+
+<P><CODE>if</CODE> won't compute the factorial of 1000 before returning
+<CODE>sure</CODE>.
+
+<P>The rule is that <CODE>if</CODE> always evaluates its first argument.  If the value
+of that argument is true, then <CODE>if</CODE> evaluates its second argument and
+returns its value.  If the value of the first argument is false, then <CODE>if</CODE> evaluates its third argument and returns that value.
+
+<P><H2>So Are <CODE>And</CODE> and <CODE>Or</CODE></H2>
+
+<P><CODE>And</CODE> and <A NAME="g93"></A><CODE>or</CODE> are also <A NAME="g94"></A><A NAME="g95"></A>special forms.  They evaluate
+<A NAME="g96"></A> their arguments in order from left to right<A NAME="text3" HREF="true.html#ft3">[3]</A> and stop as soon as they can.  For <CODE>or</CODE>, this means
+returning true as soon as any of the arguments is true.  <CODE>And</CODE> returns
+false as soon as any argument is false.  This turns out to be useful in
+cases like the following:
+
+<P><PRE>(define (divisible? big small)
+  (= (remainder big small) 0))
+
+(define (<A NAME="g97"></A>num-divisible-by-4? x)
+  (and (number? x) (divisible? x 4)))
+
+&gt; (num-divisible-by-4? 16)
+#T
+
+&gt; (num-divisible-by-4? 6)
+#F
+
+&gt; (num-divisible-by-4? 'aardvark)
+#F
+
+&gt; (divisible? 'aardvark 4)
+ERROR: AARDVARK IS NOT A NUMBER
+</PRE>
+
+<P>We want to see if <CODE>x</CODE> is a number, and, if so, if it's
+divisible by <CODE>4</CODE>.  It would be an error to apply <CODE>divisible?</CODE> to a
+nonnumber.  If <CODE>and</CODE> were an ordinary procedure, the two tests (<CODE>number?</CODE> and <CODE>divisible?</CODE>) would both be evaluated before we would
+have a chance to pay attention to the result of the first one.  Instead, if
+<CODE>x</CODE> turns out not to be a number, our procedure will return <CODE>#f</CODE>
+without trying to divide it by <CODE>4</CODE>.
+
+<P><H2>Everything That Isn't False Is True</H2>
+
+<P><CODE>#T</CODE> isn't the only true value.  In fact, <EM>every</EM> value is
+considered true except for <CODE>#f</CODE>.
+
+<P><PRE>&gt; (if (+ 3 4) 'yes 'no)
+YES
+</PRE>
+
+<P>This allows us to have <EM>semipredicates</EM> that give
+slightly more information than just true or false.  For example, we can
+write an integer quotient procedure.  That is to say, our procedure will
+divide its first argument by the second, but only if the first is evenly
+divisible by the second.  If not, our procedure will return <CODE>#f</CODE>.
+
+<P><PRE>(define (<A NAME="g98"></A>integer-quotient big little)
+  (if (divisible? big little)
+      (/ big little)
+      #f))
+
+&gt; (integer-quotient 27 3)
+9
+
+&gt; (integer-quotient 12 5)
+#F
+</PRE>
+
+<P><CODE>And</CODE> and <CODE>or</CODE> are also semipredicates.  We've already explained
+that <CODE>or</CODE> returns a true result as soon as it evaluates a true
+argument.  The particular true value that <CODE>or</CODE> returns is the value of
+that first true argument:
+
+<P><PRE>&gt; (or #f 3 #f 4)
+3
+</PRE>
+
+<P><CODE>And</CODE> returns a true value only if all of its arguments are
+true.  In that case, it returns the value of the last argument:
+
+<P><PRE>&gt; (and 1 2 3 4 5)
+5
+</PRE>
+
+<P>As an example in which this behavior is useful, we can rewrite
+<CODE>integer-quotient</CODE> more tersely:
+
+<P><PRE>(define (integer-quotient big little)        ;; alternate version
+  (and (divisible? big little)
+       (/ big little)))
+</PRE>
+
+<P><H2>Decisions, Decisions, Decisions</H2>
+
+<P><CODE>If</CODE> is great for an either-or choice.  But sometimes there are several
+possibilities to consider:
+
+<P><PRE>(define (roman-value letter)
+  (if (equal? letter 'i)
+      1
+      (if (equal? letter 'v)
+          5
+          (if (equal? letter 'x)
+              10
+              (if (equal? letter 'l)
+                  50
+                  (if (equal? letter 'c)
+                      100
+                      (if (equal? letter 'd)
+                          500
+                          (if (equal? letter 'm)
+                              1000
+                              'huh?))))))))
+</PRE>
+
+<P>That's pretty hideous.  Scheme provides a shorthand notation for
+situations like this in which you have to choose from among several
+possibilities: the <A NAME="g99"></A><A NAME="g100"></A>special form <A NAME="g101"></A><CODE>cond</CODE>.
+<A NAME="cond"></A>
+
+<P><PRE>(define (<A NAME="g102"></A>roman-value letter)
+  (cond ((equal? letter 'i) 1)
+        ((equal? letter 'v) 5)
+        ((equal? letter 'x) 10)
+        ((equal? letter 'l) 50)
+        ((equal? letter 'c) 100)
+        ((equal? letter 'd) 500)
+        ((equal? letter 'm) 1000)
+        (else 'huh?)))
+</PRE>
+
+<P>The tricky thing about <CODE>cond</CODE> is that it doesn't use parentheses in quite
+<A NAME="g103"></A> the same way as the rest
+of Scheme.  Ordinarily, parentheses mean procedure invocation.  In <CODE>cond</CODE>, <EM>most</EM> of the parentheses still mean that, but <EM>some</EM> of
+them are used to group pairs of tests and results.  We've reproduced the
+same <CODE>cond</CODE> expression below, indicating the funny ones in boldface.
+
+<P><PRE>(define (roman-value letter)
+  (cond <STRONG><BIG>(</BIG></STRONG>(equal? letter 'i) 1<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'v) 5<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'x) 10<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'l) 50<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'c) 100<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'd) 500<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>(equal? letter 'm) 1000<STRONG><BIG>)</BIG></STRONG>
+        <STRONG><BIG>(</BIG></STRONG>else 'huh?<STRONG><BIG>)</BIG></STRONG> ))
+</PRE>
+
+<P><CODE>Cond</CODE> takes any number of arguments, each of which is <EM>two
+expressions</EM> inside a pair of parentheses.  Each argument is called a <EM><A NAME="g104"></A><A NAME="g105"></A>cond clause.</EM> In the example above, one typical clause is
+
+<P><PRE><STRONG><BIG>(</BIG></STRONG>(equal? letter 'l) 50<STRONG><BIG>)</BIG></STRONG>
+</PRE>
+
+<P>The outermost parentheses on that line enclose two expressions.
+The first of the two expressions (the <EM>condition</EM>) is taken as
+true or false, just like the first argument to <CODE>if</CODE>.  The second
+expression of each pair (the <EM>consequent</EM>) is a candidate for
+the return value of the entire <CODE>cond</CODE> invocation.
+
+<P><CODE>Cond</CODE> examines its arguments from left to right.  Remember that since
+<CODE>cond</CODE> is a special form, its arguments are not evaluated ahead of time.
+For each argument, <CODE>cond</CODE> evaluates the first of the two expressions
+within the argument.  If that value turns out to be true, then <CODE>cond</CODE>
+evaluates the second expression in the same argument, and returns that value
+without examining any further arguments.  But if the value is false, then
+<CODE>cond</CODE> does <EM>not</EM> evaluate the second expression; instead, it goes
+on to the next argument.
+
+<P>By convention, the last argument always starts with the word <A NAME="g106"></A><CODE>else</CODE>
+instead of an expression.  You can think of this as representing a true
+value, but <CODE>else</CODE> doesn't mean true in any other context; you're only
+allowed to use it as the condition of the last clause of a <CODE>cond</CODE>.<A NAME="text4" HREF="true.html#ft4">[4]</A>
+
+<P>Don't get into bad habits of thinking about the appearance of
+<CODE>cond</CODE> clauses in terms of &quot;two parentheses in a row.&quot;
+That's often the case, but not always.  For example, here is a procedure that
+translates Scheme true or false values (<CODE>#t</CODE> and <CODE>#f</CODE>)
+into more human-readable words <CODE>true</CODE> and <CODE>false</CODE>.
+
+<P><PRE>(define (<A NAME="g107"></A>truefalse value)
+  (cond (value 'true)
+	(else 'false)))
+
+&gt; (truefalse (= 2 (+ 1 1)))
+TRUE
+
+&gt; (truefalse (= 5 (+ 2 2)))
+FALSE
+</PRE>
+
+<P>When a <CODE>cond</CODE> tests several possible conditions, they might not
+be <A NAME="g108"></A><A NAME="g109"></A>mutually exclusive.<A NAME="text5"
+HREF="true.html#ft5">[5]</A> This can be either a source of error or an advantage in
+writing efficient programs.  The trick is to make the <EM>most
+restrictive</EM> test first.  For example, it would be an error to say
+
+<P><PRE>(cond ((number? (first sent)) &hellip)           ;; wrong
+      ((empty? sent) &hellip)
+      &hellip)
+</PRE>
+
+<P>because the first test only makes sense once you've already
+established that there <EM>is</EM> a first word of the sentence.
+On the other hand, you don't have to say
+
+<P><PRE>(cond ((empty? sent) &hellip)
+      ((and (not (empty? sent)) (number? (first sent))) &hellip)
+      &hellip)
+</PRE>
+
+<P>because you've already established that the sentence is nonempty
+if you get as far as the second clause.
+
+<P><H2><CODE>If</CODE> Is Composable</H2>
+
+<P>Suppose we want to write a <CODE>greet</CODE> procedure that works like this:
+
+<P><PRE>&gt; (greet '(brian epstein))
+(PLEASED TO MEET YOU BRIAN - HOW ARE YOU?)
+
+&gt; (greet '(professor donald knuth))
+(PLEASED TO MEET YOU PROFESSOR KNUTH - HOW ARE YOU?)
+</PRE>
+
+<P>The response of the program in these two cases is almost the same;
+the only difference is in the form of the person's name.
+
+<P>This procedure could be written in two ways:
+
+<P><PRE>(define (greet name)
+  (if (equal? (first name) 'professor)
+      (se '(pleased to meet you)
+	  'professor
+	  (last name)
+	  '(- how are you?))
+      (se '(pleased to meet you)
+	  (first name)
+	  '(- how are you?))))
+
+(define (greet name)
+  (se '(pleased to meet you)
+      (if (equal? (first name) 'professor)
+	  (se 'professor (last name))
+	  (first name))
+      '(- how are you?)))
+</PRE>
+
+<P>The second version avoids repeating the common parts of the
+response by using <CODE>if</CODE> within a larger expression.
+
+<P>Some people find it counterintuitive to use <CODE>if</CODE> as we did in the second
+version.  Perhaps the reason is that in some other programming languages,
+<CODE>if</CODE> is a &quot;command&quot; instead of a function like any other.  A mechanism
+that selects one part of a program to run, and leaves out another part, may
+seem too important to be a mere argument subexpression.  But in Scheme, the
+value returned by <EM>every</EM> function can be used as part of a larger
+expression.<A NAME="text6" HREF="true.html#ft6">[6]</A>
+
+<P>We aren't saying anything new here.  We've already explained the idea of
+composition of functions, and we're just making the same point again about
+<CODE>if</CODE>.  But we've learned that many students expect <CODE>if</CODE> to be an
+exception, so we're taking the opportunity to emphasize the point: There are
+no exceptions to this rule.
+
+<P><H2>Pitfalls</H2>
+
+<P>The biggest pitfall in this chapter is the unusual notation of <CODE>cond</CODE>.  Keeping track of the parentheses that mean function invocation, as
+usual, and the parentheses that just group the parts of a <CODE>cond</CODE> clause
+is tricky until you get accustomed to it.
+
+<P>Many people also have trouble with the asymmetry of the <A NAME="g110"></A><CODE>member?</CODE>
+predicate.  The first argument is something small; the second is something
+big.  (The order of arguments is the same as the order of a typical English
+sentence about membership:  &quot;Is Mick a member of the Beatles?&quot;)
+It seems pretty obvious when you look at an example in which both
+arguments are quoted constant values, but you can get in trouble when you
+define a procedure and use its parameters as the arguments to <CODE>member?</CODE>.
+Compare writing a procedure that says, &quot;does the letter E appear in this
+word?&quot; with one that says, &quot;is this letter a vowel?&quot;
+
+<P>Many people try to use <CODE>and</CODE> and <CODE>or</CODE> with the full flexibility
+of the corresponding English words.  Alas, Scheme is not English.  For
+example, suppose you want to know whether the argument to a procedure is
+either the word <CODE>yes</CODE> or the word <CODE>no</CODE>.  You can't say
+
+<P>
+<PRE>(equal? argument (or 'yes 'no))              ; wrong!
+</PRE>
+
+<P>This sounds promising:  &quot;Is the <CODE>argument</CODE> <CODE>equal</CODE> to
+the word <CODE>yes</CODE> <CODE>or</CODE> the word <CODE>no</CODE>?&quot; But the arguments to <CODE>or</CODE> must be true-or-false values, not things you want to check for equality
+with something else.  You have to make two separate equality tests:
+
+<P><PRE>(or (equal? argument 'yes) (equal? argument 'no))
+</PRE>
+
+<P>In this particular case, you could also solve the problem by saying
+
+<P><PRE>(member? argument '(yes no))
+</PRE>
+
+<P>but the question of trying to use <CODE>or</CODE> as if it were English
+comes up in other cases for which <CODE>member?</CODE> won't help.
+
+<P>This isn't exactly a pitfall, because it won't stop your program from
+working, but programs like
+
+<P><PRE>(define (odd? n)
+  (if (not (even? n)) #t #f))
+</PRE>
+
+<P>are redundant.  Instead, you could just say
+
+<P><PRE>(define (odd? n)
+  (not (even? n)))
+</PRE>
+
+<P>since the value of <CODE>(not (even? n))</CODE> is already <CODE>#t</CODE> or
+<CODE>#f</CODE>.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>6.1</B>&nbsp;&nbsp;What values are printed when you type these expressions to Scheme?  (Figure
+it out in your head before you try it on the computer.)
+
+<P><PRE>(cond ((= 3 4) '(this boy))
+      ((&lt; 2 5) '(nowhere man))
+      (else '(two of us)))
+
+(cond (empty? 3)
+      (square 7)
+      (else 9))
+
+(define (<A NAME="g111"></A>third-person-singular verb)
+  (cond ((equal? verb 'be) 'is)
+        ((equal? (last verb) 'o) (word verb 'es))
+        (else (word verb 's))))
+
+(third-person-singular 'go)
+</PRE>
+
+
+<P> 
+
+<B>6.2</B>&nbsp;&nbsp;What values are printed when you type these expressions to Scheme?  (Figure
+it out in your head before you try it on the computer.)
+
+<P><PRE>(or #f #f #f #t)
+
+(and #f #f #f #t)
+
+(or (= 2 3) (= 4 3))
+
+(not #f)
+
+(or (not (= 2 3)) (= 4 3))
+
+(or (and (= 2 3) (= 3 3)) (and (&lt; 2 3) (&lt; 3 4)))
+</PRE>
+
+<P><B>6.3</B>&nbsp;&nbsp;Rewrite the following procedure using a <CODE>cond</CODE> instead of the <CODE>if</CODE>s:
+
+<P><PRE>(define (<A NAME="g112"></A>sign number)
+  (if (&lt; number 0)
+      'negative
+      (if (= number 0)
+	  'zero
+	  'positive)))
+</PRE>
+
+<P>
+<B>6.4</B>&nbsp;&nbsp;Rewrite the following procedure using an <CODE>if</CODE> instead of the <CODE>cond</CODE>:
+
+<P><PRE>(define (<A NAME="g113"></A>utensil meal)
+  (cond ((equal? meal 'chinese) 'chopsticks)
+	(else 'fork)))
+</PRE>
+
+<P>
+<P>
+<H2>Real Exercises</H2>
+<P>
+Note: Writing helper procedures may be useful in solving some of these
+problems.
+
+<P><B>6.5</B>&nbsp;&nbsp;Write a procedure <A NAME="g114"></A><CODE>european-time</CODE> to convert a time from American
+AM/PM notation into European 24-hour notation.  Also
+write <A NAME="g115"></A><CODE>american-time</CODE>, which does the opposite:
+
+<P><PRE>&gt; (european-time '(8 am))
+8
+
+&gt; (european-time '(4 pm))
+16
+
+&gt; (american-time 21)
+(9 PM)
+
+&gt; (american-time 12)
+(12 PM)
+
+&gt; (european-time '(12 am))
+24
+</PRE>
+
+<P>Getting noon and midnight right is tricky.
+
+
+<P>
+<B>6.6</B>&nbsp;&nbsp;Write a predicate <A NAME="g116"></A><CODE>teen?</CODE> that returns true if its argument is between
+13 and 19.
+
+
+<P>
+<B>6.7</B>&nbsp;&nbsp;Write a procedure <A NAME="g117"></A><CODE>type-of</CODE> that takes anything as its argument and
+returns one of the words <CODE>word</CODE>, <CODE>sentence</CODE>, <CODE>number</CODE>, or
+<CODE>boolean</CODE>:
+
+<P><PRE>&gt; (type-of '(getting better))
+SENTENCE
+
+&gt; (type-of 'revolution)
+WORD
+
+&gt; (type-of (= 3 3))
+BOOLEAN
+</PRE>
+
+<P>(Even though numbers are words, your procedure should return <CODE>number</CODE> if its argument is a number.)
+
+<P>Feel free to check for more specific types, such as &quot;positive integer,&quot;
+if you are so inclined.
+
+
+<P>
+<B>6.8</B>&nbsp;&nbsp;Write a procedure <A NAME="g118"></A><CODE>indef-article</CODE> that works like this:
+<PRE>&gt; (indef-article 'beatle)
+(A BEATLE)
+
+&gt; (indef-article 'album)
+(AN ALBUM)
+</PRE>
+
+<P>Don't worry about silent initial consonants like the <CODE>h</CODE> in <CODE>hour</CODE>.
+
+
+<P>
+<B>6.9</B>&nbsp;&nbsp;Sometimes you must choose the singular or the plural of a word:  <CODE>1 book</CODE> but <CODE>2 books</CODE>.  Write a procedure <A NAME="g119"></A><CODE>thismany</CODE> that takes
+two arguments, a number and a singular noun, and combines them appropriately:
+
+<P><PRE>&gt; (thismany 1 'partridge)
+(1 PARTRIDGE)
+
+&gt; (thismany 3 'french-hen)
+(3 FRENCH-HENS)
+</PRE>
+
+
+<P>
+<P>
+<B>6.10</B>&nbsp;&nbsp;Write a procedure <A NAME="g120"></A><CODE>sort2</CODE> that takes as its argument a sentence
+containing two numbers.  It should return a sentence containing the same two
+numbers, but in ascending order:
+
+<P><PRE>&gt; (sort2 '(5 7))
+(5 7)
+
+&gt; (sort2 '(7 5))
+(5 7)
+</PRE>
+
+<P>
+<B>6.11</B>&nbsp;&nbsp;Write a predicate <A NAME="g121"></A><CODE>valid-date?</CODE> that takes three numbers as arguments,
+representing a month, a day of the month, and a year.  Your procedure should
+return <CODE>#t</CODE> if the numbers represent a valid date (e.g., it isn't the
+31st of September).  February has 29 days if the year is divisible by 4,
+except that if the year is divisible by 100 it must also be divisible by 400.
+
+<P><PRE>&gt; (valid-date? 10 4 1949)
+#T
+
+&gt; (valid-date? 20 4 1776)
+#F
+
+&gt; (valid-date? 5 0 1992)
+#F
+
+&gt; (valid-date? 2 29 1900)
+#F
+
+&gt; (valid-date? 2 29 2000)
+#T
+</PRE>
+
+<P>
+<B>6.12</B>&nbsp;&nbsp;Make <A NAME="g122"></A><CODE>plural</CODE> handle correctly words that end in <CODE>y</CODE> but have a
+vowel before the <CODE>y</CODE>, such as <CODE>boy</CODE>.  Then teach it about words that
+end in <CODE>x</CODE> (box).  What other special cases can you find?
+
+<P><A NAME="plurex"></A>
+
+
+<P>
+<B>6.13</B>&nbsp;&nbsp;Write a better <A NAME="g123"></A><CODE>greet</CODE> procedure that understands as many different
+kinds of names as you can think of:
+
+<P><PRE>&gt; (greet '(john lennon))
+(HELLO JOHN)
+
+&gt; (greet '(dr marie curie))
+(HELLO DR CURIE)
+
+&gt; (greet '(dr martin luther king jr))
+(HELLO DR KING)
+
+&gt; (greet '(queen elizabeth))
+(HELLO YOUR MAJESTY)
+
+&gt; (greet '(david livingstone))
+(DR LIVINGSTONE I PRESUME?)
+</PRE>
+
+
+<P>
+<B>6.14</B>&nbsp;&nbsp;Write a procedure <A NAME="g124"></A><CODE>describe-time</CODE> that takes a number of seconds as its
+argument and returns a more useful description of that amount of time:
+<A NAME="desctime"></A>
+
+<P><PRE>&gt; (describe-time 45)
+(45 SECONDS)
+
+&gt; (describe-time 930)
+(15.5 MINUTES)
+
+&gt; (describe-time 30000000000)
+(9.506426344208686 CENTURIES)
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="true.html#text1">[1]</A> In <EM>some</EM>
+versions of Scheme, the <A NAME="g67"></A><A NAME="g68"></A>empty sentence is considered false.  That
+is, <CODE>()</CODE> and <CODE>#f</CODE> may be the same thing.  The reason that we can't
+be definite about this point is that older versions of Scheme follow the
+traditional Lisp usage, in which the empty sentence is false, but since then
+a standardization committee has come along and insisted that the two values
+should be different.  In this book we'll consider them as different, but
+we'll try to avoid examples in which it matters.  The main point is that you
+shouldn't be surprised if you see something like this:
+
+<P><PRE>&gt; (= 3 4)
+()
+</PRE>
+
+<P>in the particular implementation of Scheme that you're using.
+<P>
+<A NAME="ft2" HREF="true.html#text2">[2]</A> Why is it called that?  Think about an English
+sentence, such as &quot;Ringo is a drummer.&quot; As you may remember from elementary
+school, &quot;Ringo&quot; is the <EM>subject</EM> of that sentence, and &quot;is a
+drummer&quot; is the <EM>predicate.</EM> That predicate could be truthfully
+attached to some subjects but not others.  For example, it's true of &quot;Neil
+Peart&quot; but not of &quot;George Harrison.&quot; So the predicate &quot;is a drummer&quot;
+can be thought of as a function whose value is true or false.<P>
+<A NAME="ft3" HREF="true.html#text3">[3]</A> Since you
+can start a new line in the middle of an expression, in some cases the
+arguments will be &quot;top to bottom&quot; rather than &quot;left to right,&quot; but don't
+forget that Scheme doesn't care about line breaks.  That's why Lisp
+programmers always talk as if their programs were written on one enormously
+long line.<P>
+<A NAME="ft4" HREF="true.html#text4">[4]</A> What if you don't use an <CODE>else</CODE>
+clause at all?  If none of the clauses has a true condition, then the return
+value is unspecified.  In other words, always use <CODE>else</CODE>.<P>
+<A NAME="ft5" HREF="true.html#text5">[5]</A> Conditions are mutually
+exclusive if only one of them can be true at a time.<P>
+<A NAME="ft6" HREF="true.html#text6">[6]</A> Strictly speaking, since the argument expressions to a
+special form aren't evaluated, <CODE>if</CODE> is a function whose domain is
+expressions, not their values.  But many special forms, including <CODE>if</CODE>,
+<CODE>and</CODE>, and <CODE>or</CODE>, are designed to act as if they were ordinary
+functions, the kind whose arguments Scheme evaluates in advance.  The only
+difference is that it is sometimes possible for Scheme to figure out the
+correct return value after evaluating only some of the arguments.  Most of
+the time we'll just talk about the domains and ranges of these special forms
+as if they were ordinary functions.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch5/words.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch7/variables.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch7/math1.gif b/js/games/nluqo.github.io/~bh/ssch7/math1.gif
new file mode 100644
index 0000000..2219c38
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch7/math1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ssch7/variables b/js/games/nluqo.github.io/~bh/ssch7/variables
new file mode 100644
index 0000000..1586502
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch7/variables
@@ -0,0 +1,534 @@
+\input bkmacs
+\photo{Trombone players produce different pitches partly
+by varying the length of a tube.}{\pagetag{\trombone}\pspicture{4in}{trombone}{trombone}{}}
+\chapter{Variables}
+\chaptag{\variables}
+
+A {\it \idx{variable}\/} is a connection between a name and a
+\justidx{naming a value} value.\footnt{The term ``variable'' is used by
+computer scientists to mean several subtly different things.  For example,
+some people use ``variable'' to mean just a holder for a value, without a
+name.  But what we said is what {\it we\/} mean by ``variable.''} That
+sounds simple enough, but some complexities arise in practice.  To avoid
+confusion later, we'll spend some time now looking at the idea of
+``variable'' in more detail.
+
+The name {\it variable\/} comes from algebra.  Many people are introduced to
+variables in high school algebra classes, where the emphasis is on solving
+equations.  ``If $x^{\kern0.5pt 3}-8=0$, what is the value of $x$?'' In
+problems like these, although we call $x$ a variable, it's really a {\it
+\bkidx{named}{constant}!\/} In this particular problem, $x$ has the
+value~2.  In any such problem, at first we don't know the value of $x$, but
+we understand that it does have some particular value, and that value isn't
+going to change in the middle of the problem.
+
+In functional programming, what we mean by ``variable'' is like a named
+constant in mathematics.  Since a variable is the connection between a name
+and a value, a formal parameter in a procedure definition isn't a variable;
+it's just a name.  But when we invoke the procedure with a particular
+argument, that name is associated with a value, and a variable is created.
+If we invoke the procedure again, a {\it new\/} variable is created, perhaps
+with a different value.
+
+There are two possible sources of confusion about this.  One is that you may
+have programmed before in a programming language like BASIC or Pascal, in
+which a variable often {\it does\/} get a new value, even after it's already
+had a previous value assigned to it.  Programs in those languages tend to be
+full of things like ``{\tt X~=~X~+~1}.'' Back in Chapter \functions\ we told
+you that this book is about something called
+``\bkidx{functional}{programming},'' but we haven't yet explained exactly
+what that means.  (Of course we {\it have\/} introduced a lot of functions,
+and that is an important part of it.)  Part of what we mean by functional
+programming is that once a variable exists, we aren't going to {\it
+change\/} the value of that variable.  
+
+The other possible source of confusion is that in Scheme, unlike the
+situation in algebra, we may have more than one variable with the same name
+at the same time.  That's because we may invoke one procedure, and the body
+of that procedure may invoke another procedure, and each of them might use the
+same formal parameter name.  There might be one variable named {\tt x} with
+the value 7, and another variable named {\tt x} with the value 51, at the
+same time.  The pitfall to avoid is thinking ``{\tt x} has changed its value
+from 7 to 51.''
+
+As an analogy, imagine that you are at a party along with Mick Jagger, Mick
+Wilson, Mick Avory, and Mick Dolenz.  If you're having a conversation with
+one of them, the name ``Mick'' means a particular person to you.  If you
+notice someone else talking with a different Mick, you wouldn't think ``Mick
+has become a different person.'' Instead, you'd think ``there are several
+people here all with the name Mick.''
+
+\subhd{How Little People Do Variables}
+
+\justidx{little people} You can understand variables in terms of the
+little-people model.  A variable, in this model, is the association in the
+little person's mind between a formal parameter (name) and the actual
+argument (value) she was given.  When we want to know {\tt (square~5)}, we
+hire Srini and tell him his argument is 5.  Srini therefore substitutes 5
+for {\tt x} in the body of {\tt square}.  Later, when we want to know the
+square of 6, we hire Samantha and tell her that her argument is 6.  Srini and
+Samantha have two different variables, both named {\tt x}.
+
+\pagetag{\srini}
+% \picture{2.3in}{Srini and Samantha}
+\pspicture{2.3in}{srini}{srini}{\TrimBoundingBox{8pt}}
+
+Srini and Samantha do their work separately, one after the other.  But
+in a more complicated example, there could even be more than
+one value called {\tt x} at the same time:
+
+{\prgex%
+(define (square x) (* x x))
+
+(define (\ufun{hypotenuse} x y)
+  (sqrt (+ (square x) (square y))))
+
+> (hypotenuse 3 4)
+5
+}
+
+\noindent Consider the situation when we've hired Hortense to evaluate that
+expression.  Hortense associates the name {\tt x} with the value 3 (and also
+the name {\tt y} with the value 4, but we're going to pay attention to {\tt
+x}).  She has to compute two {\tt square}s.  She hires Solomon to compute
+{\tt (square~3)}.  Solomon associates the name {\tt x} with the value 3.
+This happens to be the same as Hortense's value, but it's still a separate
+variable that could have had a different value---as we see when Hortense
+hires Sheba to compute {\tt (square~4)}.  Now, simultaneously, Hortense
+thinks {\tt x} is 3 and Sheba thinks {\tt x} is 4.
+
+\pagetag{\sheba}
+% \picture{2.3in}{Hortense and Sheba}
+\pspicture{2.3in}{hortense}{hortense}{\TrimBoundingBox{8pt}}
+
+(Remember that we said a variable is a connection between a name and a
+value.  So {\tt x} isn't a variable!  The association of the name {\tt x}
+with the value 5 is a variable.  The reason we're being so fussy about this
+terminology is that it helps clarify the case in which several variables
+have the same name.  But in practice people are generally sloppy about this
+fine point; we can usually get away with saying ``{\tt x} is a variable''
+when we mean ``there is some variable whose name is {\tt x}.'')
+
+Another important point about the way little people do variables is that
+they can't read each others' minds.  In particular, they don't know about
+the values of the local variables that belong to the little people who
+hired them.  For example, the following attempt to compute the value 10
+won't work:
+
+{\prgex%
+(define (f x)
+  (g 6))
+
+(define (g y)
+  (+ x y))
+
+> (f 4)
+ERROR -- VARIABLE X IS UNBOUND.
+}
+
+\noindent We hire Franz to compute {\tt (f 4)}.  He associates {\tt x} with
+4 and evaluates {\tt (g~6)} by hiring Gloria.  Gloria associates {\tt y}
+with 6, but she doesn't have any value for {\tt x}, so she's in trouble.
+The solution is for Franz to tell Gloria that {\tt x} is {\tt 4}:
+
+{\prgex%
+(define (f x)
+  (g x 6))
+
+(define (g x y)
+  (+ x y))
+
+> (f 4)
+10
+}
+
+\subhd{Global and Local Variables}
+
+Until now, we've been using two very different kinds of naming.  We have
+names for procedures, which are created permanently by {\tt define} and are
+usable throughout our programs; and we have names for procedure arguments,
+which are associated with values temporarily when we call a
+procedure and are usable only inside that procedure.
+
+These two kinds of naming seem to be different in every way.  One is for
+procedures, one for data; the one for procedures makes a permanent, global
+name, while the one for data makes a temporary, local name.  That picture
+does reflect the way that procedures and other data are {\it usually\/} used,
+but we'll see that really there is only one kind of naming.  The
+boundaries can be crossed:  Procedures can be arguments to other
+procedures, and any kind of data
+can have a permanent, global name.  Right now we'll look at that last
+point, about global variables.
+
+Just as we've been using {\tt define} to associate names with procedures
+globally, we can also use it for other kinds of data:
+
+{\prgex%
+> (define pi 3.141592654)
+
+> (+ pi 5)
+8.141592654
+
+> (define song '(I am the walrus))
+
+> (last song)
+WALRUS
+}
+
+Once defined, a global variable can be used anywhere, just as a defined
+procedure can be used anywhere.  (In fact, defining a procedure creates a
+variable whose value is the procedure.  Just as {\tt pi} is the name of a
+variable whose value is 3.141592654, {\tt last} is the name of a variable
+whose value is a primitive procedure.  We'll come back to this
+point in Chapter~\lambchop.)  When the name of a global variable
+appears in an expression, the corresponding value must be substituted, just
+as actual argument values are substituted for formal parameters.
+
+When a little person is hired to carry out a compound procedure, his or her
+first step is to substitute actual argument values for formal parameters in
+the body.  The same little person substitutes values for global variable
+names also.  (What if there is a global variable whose name happens to be
+used as a formal parameter in this procedure?  Scheme's rule is that the
+formal parameter takes precedence, but even though Scheme knows what to do,
+conflicts like this make your program harder to read.)
+
+How does this little person know what values to substitute for global
+variable names?  What makes a variable ``global'' in the little-people model
+is that {\it every\/} little person knows its value.  You can imagine that
+there's a big chalkboard, with all the global definitions written on it, that
+all the little people can see.
+\justidx{chalkboard model}
+\justidx{model, chalkboard}
+If you prefer, you could imagine that whenever a global variable is defined,
+the {\tt define} specialist climbs up a huge ladder, picks up a megaphone,
+and yells something like ``Now hear this!  {\tt Pi} is 3.141592654!''
+
+The association of a formal parameter (a name) with an actual argument (a
+value) is called a {\it \bkidx{local}{variable}.}
+
+It's awkward to have to say ``Harry associates the value 7 with the name
+{\tt foo}'' all the time.  Most of the time we just say ``{\tt foo} has the
+value 7,'' paying no attention to whether this association is in some
+particular little person's head or if everybody knows it.
+
+\subhd{The Truth about Substitution}
+
+We said earlier in a footnote that Scheme doesn't actually do all the
+copying and substituting we've been talking about.  What actually happens is
+\justidx{substitution}
+more like our model of global variables, in which there is a chalkboard
+somewhere that associates names with values---except that instead of making
+a new copy of every expression with values substituted for names, Scheme
+works with the original expression and looks up the value for each
+name at the moment when that value is needed.  To make local variables work,
+there are several chalkboards:\ a global one and one for each little person.
+
+The fully detailed model of variables using several chalkboards is what many
+people find hardest about learning Scheme.  That's why we've chosen to use
+the simpler \idx{substitution model}.\footnt{The reason that all of our
+examples work with the substitution model is that this book uses only
+functional programming, in the sense that we never change the value of a
+variable.  If we started doing the {\tt X~=~X~+~1} style of programming, we
+would need the more complicated \idx{chalkboard model}.}
+
+\subhd{\ttpmb{Let}}
+
+We're going to write a procedure that solves quadratic equations.  (We know
+this is the prototypical boring programming problem, but it illustrates
+clearly the point we're about to make.)
+
+We'll use the \idx{quadratic formula} that you learned in high school
+algebra class:
+
+$$ ax^2+bx+c=0 \quad {\rm when} \quad x = {-b \pm \sqrt{b^2-4ac} \over 2a} $$
+
+{\prgex%
+(define (roots a b c)
+  (se (/ (+ (- b) (sqrt (- (* b b) (* 4 a c))))
+         (* 2 a))
+      (/ (- (- b) (sqrt (- (* b b) (* 4 a c))))
+         (* 2 a))))
+}
+
+Since there are two possible solutions, we return a sentence containing two
+numbers.  This procedure works fine,\footnt{That is, it works if the equation
+has real roots, or if your version of Scheme has complex numbers.  Also, the
+limited precision with which computers can represent irrational numbers can
+make this particular algorithm give wrong answers in practice even though
+it's correct in theory.} but it does have the disadvantage of repeating a
+lot of the work.  It computes the square root part of the formula twice.
+We'd like to avoid that inefficiency.
+
+One thing we can do is to compute the square root and use that as the
+actual argument to a helper procedure that does the rest of the job:
+
+{\prgex%
+(define (roots a b c)
+  (roots1 a b c (sqrt (- (* b b) (* 4 a c)))))
+
+(define (roots1 a b c discriminant)
+  (se (/ (+ (- b) discriminant) (* 2 a))
+      (/ (- (- b) discriminant) (* 2 a))))
+}
+
+\noindent This version evaluates the square root only once.  The resulting
+value is used as the argument named {\tt discriminant} in {\tt roots1}.
+
+We've solved the problem we posed for ourselves initially:\ avoiding the
+redundant computation of the discriminant (the square-root part of the
+formula).  The cost, though, is that we had to define an auxiliary procedure
+{\tt roots1} that doesn't make much sense on its own.  (That is, you'd never
+invoke {\tt roots1} for its own sake; only {\tt roots} uses it.)
+
+Scheme provides a notation to express a computation of this kind more
+\pagetag{\splet}
+conveniently.  It's called \ttidx{let}:
+
+{\prgex%
+(define (roots a b c)
+  (let ((discriminant (sqrt (- (* b b) (* 4 a c)))))
+    (se (/ (+ (- b) discriminant) (* 2 a))
+        (/ (- (- b) discriminant) (* 2 a)))))
+}
+
+\noindent Our new program is just an abbreviation for the previous version:
+In effect, it creates a temporary procedure just like {\tt roots1}, but
+without a name, and invokes it with the specified argument value.  But the
+{\tt let} notation rearranges things so that we can say, in the right order,
+``let the variable {\tt discriminant} have the value {\tt (sqrt\ellipsis)}\
+and, using that variable, compute the body.''
+
+{\tt Let} is a \bkidx{special}{form} that takes two arguments.  The first is
+a sequence of name-value pairs enclosed in parentheses.  (In this example,
+there is only one name-value pair.)  The second argument, the {\it body\/}
+of the {\tt let}, is the expression to evaluate.
+
+{\advance\medskipamount by -3pt
+
+Now that we have this notation, we can use it with more than one name-value
+connection to eliminate even more redundant computation:
+
+{\prgex%
+(define (\ufun{roots} a b c)
+  (let ((discriminant (sqrt (- (* b b) (* 4 a c))))
+        (minus-b (- b))
+        (two-a (* 2 a)))
+    (se (/ (+ minus-b discriminant) two-a)
+        (/ (- minus-b discriminant) two-a))))
+}
+
+\noindent In this example, the first argument to {\tt let} includes three
+name-value pairs.  It's as if we'd defined and invoked a procedure like
+the following:
+
+{\prgex%
+(define (roots1 discriminant minus-b two-a) ...)
+}
+
+Like {\tt cond}, {\tt let} uses parentheses both with the usual meaning
+(invoking a procedure) and to group sub-arguments that belong together.  This
+\justidx{parentheses, for {\ttfont let} variables}
+grouping happens in two ways.  Parentheses are used to group a name and the
+expression that provides its value.  Also, an additional pair of parentheses
+surrounds the entire collection of name-value pairs.
+
+
+\subhd{Pitfalls}
+
+\pit If you've programmed before in other languages, you may be accustomed
+to a style of programming in which you {\it change\/} the value of a
+variable by assigning it a new value.  You may be tempted to write
+
+{\prgex%
+> (define x (+ x 3))                         ;; no-no
+}
+
+\noindent Although some versions of Scheme do allow such redefinitions, so
+that you can correct errors in your procedures, they're not strictly legal.
+A definition is meant to be {\it permanent\/} in functional programming.
+(Scheme does include other mechanisms for non-functional programming, but
+we're not studying them in this book because once you allow reassignment you
+need a more complex model of the evaluation process.)
+
+\pit When you create more than one temporary variable at once using {\tt
+let}, all of the expressions that provide the values are computed before any
+of the variables are created.  Therefore, you can't have one expression
+depend on another:
+
+{\prgex%
+> (let ((a (+ 4 7))                          ;; wrong!
+	(b (* a 5)))
+    (+ a b))
+}
+
+\noindent Don't think that {\tt a} gets the value 11 and therefore {\tt b}
+gets the value 55.  That {\tt let} expression is equivalent to defining a
+helper procedure
+
+{\prgex%
+(define (helper a b)
+  (+ a b))
+}
+
+and then invoking it:
+
+{\prgex%
+(helper (+ 4 7) (* a 5))
+}
+
+\noindent The argument expressions, as always, are evaluated {\it before\/}
+the function is invoked.  The expression {\tt (*~a~5)} will be evaluated
+using the {\it global\/} value of {\tt a}, if there is one.  If not, an
+error will result.  If you want to use {\tt a} in computing {\tt b}, you
+must say
+
+{\prgex%
+> (let ((a (+ 4 7)))
+    (let ((b (* a 5)))
+      (+ a b)))
+66
+}
+
+\pit {\tt Let}'s notation is tricky because, like {\tt cond}, it uses
+parentheses that don't mean procedure invocation.  Don't teach yourself magic
+formulas like ``two open parentheses before the {\tt let} variable and three
+close parentheses at the end of its value.'' Instead, think about the
+overall structure:
+
+{\prgex%
+(let {\rm{}variables} {\rm{}body})
+}
+
+\noindent {\tt Let} takes exactly two arguments.  The first argument to {\tt
+let} is one or more name-value groupings, all in parentheses:
+
+{\prgex%
+((name1 value1) (name2 value2) (name3 value3) \ellipsis)
+}
+
+\noindent Each {\tt name} is a single word; each {\tt value} can be any
+expression, usually a procedure invocation.  If it's a procedure invocation,
+then parentheses are used with their usual meaning.
+
+The second argument to {\tt let} is the expression to be evaluated using
+those variables.
+
+Now put all the pieces together:
+
+{\prgex%
+(let \pmbig{((}name1 (fn1 arg1)\pmbig{)}
+     \pmbig{ (}name2 (fn2 arg2)\pmbig{)}
+     \pmbig{ (}name3 (fn3 arg3)\pmbig{))}
+  body)
+}
+
+} % medskipamount
+
+\esubhd{Boring Exercises}
+
+{\exercise
+The following procedure does some redundant computation.
+
+{\prgex%
+(define (\ufun{gertrude} wd)
+  (se (if (vowel? (first wd)) 'an 'a)
+      wd
+      'is
+      (if (vowel? (first wd)) 'an 'a)
+      wd
+      'is
+      (if (vowel? (first wd)) 'an 'a)
+      wd))
+
+> (gertrude 'rose)
+(A ROSE IS A ROSE IS A ROSE)
+
+> (gertrude 'iguana)
+(AN IGUANA IS AN IGUANA IS AN IGUANA)
+}
+
+\noindent Use {\tt let} to avoid the redundant work.
+}
+
+\solution
+Here are two possible solutions:
+
+{\prgex%
+(define (gertrude wd)
+  (let ((article (if (vowel? (first wd)) 'an 'a)))
+    (se article wd 'is article wd 'is article wd)))
+
+(define (gertrude wd)
+  (let ((phrase (se (if (vowel? (first wd)) 'an 'a) wd)))
+    (se phrase 'is phrase 'is phrase)))
+}
+@
+
+{\exercise
+Put in the missing parentheses:
+
+{\prgex%
+> (let pi 3.14159
+       pie 'lemon meringue
+    se 'pi is pi 'but pie is pie)
+(PI IS 3.14159 BUT PIE IS LEMON MERINGUE)
+}}
+
+\solution
+{\prgex%
+(let ((pi 3.14159)
+      (pie '(lemon meringue)))
+  (se '(pi is) pi '(but pie is) pie))
+}
+@
+
+\esubhd{Real Exercises}
+
+{\exercise
+The following program doesn't work.  Why not?  Fix it.
+
+{\prgex%
+(define (\ufun{superlative} adjective word)
+  (se (word adjective 'est) word))
+}
+
+\noindent It's supposed to work like this:
+
+{\prgex%
+> (superlative 'dumb 'exercise)
+(DUMBEST EXERCISE)
+}}
+
+\solution
+The body of {\tt superlative} tries to invoke the {\tt word} function, but
+since {\tt word} is a formal parameter to {\tt superlative}, it loses its
+meaning as the {\tt word} function.
+
+{\prgex%
+(define (superlative adjective wd)
+  (se (word adjective 'est) wd))
+}
+@
+
+{\exercise
+What does this procedure do?  Explain how it manages to work.
+
+{\prgex%
+(define (\ufun{sum-square} a b)
+  (let ((+ *)
+        (* +))
+    (* (+ a a) (+ b b))))
+}}
+
+\solution
+This function temporarily makes {\tt +} stand for the multiplication function
+and {\tt *} stand for the addition function, and then evaluates the
+expression {\tt (*~(+~a~a)~(+~b~b))}.  Since {\tt +} is the multiplication
+function, {\tt (+~a~a)} and {\tt (+~b~b)} take the squares of a and b, and
+since {\tt *} is addition, we add the squares together.
+
+This procedure does on purpose what the one in the previous
+exercise does by accident.
+@
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch7/variables.html b/js/games/nluqo.github.io/~bh/ssch7/variables.html
new file mode 100644
index 0000000..9c09572
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch7/variables.html
@@ -0,0 +1,505 @@
+<P>
+
+<P><A NAME="trombone"></A><CENTER><IMG SRC="../ss-pics/trombone.jpg" ALT="figure: trombone"></CENTER><P><CENTER>Trombone players produce different pitches partly
+by varying the length of a tube.
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 7: Variables</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 7</H2>
+<H1>Variables</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch6/true.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch8/part3.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>A <EM>variable</EM> is a connection between a name and a
+<A NAME="g1"></A> value.<A NAME="text1" HREF="variables.html#ft1">[1]</A> That
+sounds simple enough, but some complexities arise in practice.  To avoid
+confusion later, we'll spend some time now looking at the idea of
+&quot;variable&quot; in more detail.
+
+<P>The name <EM>variable</EM> comes from algebra.  Many people are introduced to
+variables in high school algebra classes, where the emphasis is on solving
+equations.  &quot;If <EM>x</EM><SUP>3</SUP>&minus;8=0, what is the value of <EM>x</EM>?&quot; In
+problems like these, although we call <EM>x</EM> a variable, it's really a <EM><A NAME="g2"></A><A NAME="g3"></A>named constant!</EM> In this particular problem, <EM>x</EM> has the
+value 2.  In any such problem, at first we don't know the value of <EM>x</EM>, but
+we understand that it does have some particular value, and that value isn't
+going to change in the middle of the problem.
+
+<P>In functional programming, what we mean by &quot;variable&quot; is like a named
+constant in mathematics.  Since a variable is the connection between a name
+and a value, a formal parameter in a procedure definition isn't a variable;
+it's just a name.  But when we invoke the procedure with a particular
+argument, that name is associated with a value, and a variable is created.
+If we invoke the procedure again, a <EM>new</EM> variable is created, perhaps
+with a different value.
+
+<P>There are two possible sources of confusion about this.  One is that you may
+have programmed before in a programming language like BASIC or Pascal, in
+which a variable often <EM>does</EM> get a new value, even after it's already
+had a previous value assigned to it.  Programs in those languages tend to be
+full of things like &quot;<CODE>X = X + 1</CODE>.&quot; Back in Chapter 2 we told
+you that this book is about something called
+&quot;<A NAME="g4"></A><A NAME="g5"></A>functional programming,&quot; but we haven't yet explained exactly
+what that means.  (Of course we <EM>have</EM> introduced a lot of functions,
+and that is an important part of it.)  Part of what we mean by functional
+programming is that once a variable exists, we aren't going to <EM>change</EM> the value of that variable.  
+
+<P>The other possible source of confusion is that in Scheme, unlike the
+situation in algebra, we may have more than one variable with the same name
+at the same time.  That's because we may invoke one procedure, and the body
+of that procedure may invoke another procedure, and each of them might use the
+same formal parameter name.  There might be one variable named <CODE>x</CODE> with
+the value 7, and another variable named <CODE>x</CODE> with the value 51, at the
+same time.  The pitfall to avoid is thinking &quot;<CODE>x</CODE> has changed its value
+from 7 to 51.&quot;
+
+<P>As an analogy, imagine that you are at a party along with Mick Jagger, Mick
+Wilson, Mick Avory, and Mick Dolenz.  If you're having a conversation with
+one of them, the name &quot;Mick&quot; means a particular person to you.  If you
+notice someone else talking with a different Mick, you wouldn't think &quot;Mick
+has become a different person.&quot; Instead, you'd think &quot;there are several
+people here all with the name Mick.&quot;
+
+<P><H2>How Little People Do Variables</H2>
+
+<P><A NAME="g6"></A> You can understand variables in terms of the
+little-people model.  A variable, in this model, is the association in the
+little person's mind between a formal parameter (name) and the actual
+argument (value) she was given.  When we want to know <CODE>(square 5)</CODE>, we
+hire Srini and tell him his argument is 5.  Srini therefore substitutes 5
+for <CODE>x</CODE> in the body of <CODE>square</CODE>.  Later, when we want to know the
+square of 6, we hire Samantha and tell her that her argument is 6.  Srini and
+Samantha have two different variables, both named <CODE>x</CODE>.
+
+<P><A NAME="srini"></A>
+<CENTER><IMG SRC="../ss-pics/srini.jpg" ALT="figure: srini"></CENTER>
+
+<P>Srini and Samantha do their work separately, one after the other.  But
+in a more complicated example, there could even be more than
+one value called <CODE>x</CODE> at the same time:
+
+<P><PRE>(define (square x) (* x x))
+
+(define (<A NAME="g7"></A>hypotenuse x y)
+  (sqrt (+ (square x) (square y))))
+
+&gt; (hypotenuse 3 4)
+5
+</PRE>
+
+<P>Consider the situation when we've hired Hortense to evaluate that
+expression.  Hortense associates the name <CODE>x</CODE> with the value 3 (and also
+the name <CODE>y</CODE> with the value 4, but we're going to pay attention to <CODE>x</CODE>).  She has to compute two <CODE>square</CODE>s.  She hires Solomon to compute
+<CODE>(square 3)</CODE>.  Solomon associates the name <CODE>x</CODE> with the value 3.
+This happens to be the same as Hortense's value, but it's still a separate
+variable that could have had a different value&mdash;as we see when Hortense
+hires Sheba to compute <CODE>(square 4)</CODE>.  Now, simultaneously, Hortense
+thinks <CODE>x</CODE> is 3 and Sheba thinks <CODE>x</CODE> is 4.
+
+<P><A NAME="sheba"></A>
+<CENTER><IMG SRC="../ss-pics/hortense.jpg" ALT="figure: hortense"></CENTER>
+
+<P>(Remember that we said a variable is a connection between a name and a
+value.  So <CODE>x</CODE> isn't a variable!  The association of the name <CODE>x</CODE>
+with the value 5 is a variable.  The reason we're being so fussy about this
+terminology is that it helps clarify the case in which several variables
+have the same name.  But in practice people are generally sloppy about this
+fine point; we can usually get away with saying &quot;<CODE>x</CODE> is a variable&quot;
+when we mean &quot;there is some variable whose name is <CODE>x</CODE>.&quot;)
+
+<P>Another important point about the way little people do variables is that
+they can't read each others' minds.  In particular, they don't know about
+the values of the local variables that belong to the little people who
+hired them.  For example, the following attempt to compute the value 10
+won't work:
+
+<P><PRE>(define (f x)
+  (g 6))
+
+(define (g y)
+  (+ x y))
+
+&gt; (f 4)
+ERROR - VARIABLE X IS UNBOUND.
+</PRE>
+
+<P>We hire Franz to compute <CODE>(f 4)</CODE>.  He associates <CODE>x</CODE> with
+4 and evaluates <CODE>(g 6)</CODE> by hiring Gloria.  Gloria associates <CODE>y</CODE>
+with 6, but she doesn't have any value for <CODE>x</CODE>, so she's in trouble.
+The solution is for Franz to tell Gloria that <CODE>x</CODE> is <CODE>4</CODE>:
+
+<P><PRE>(define (f x)
+  (g x 6))
+
+(define (g x y)
+  (+ x y))
+
+&gt; (f 4)
+10
+</PRE>
+
+<P><H2>Global and Local Variables</H2>
+
+<P>Until now, we've been using two very different kinds of naming.  We have
+names for procedures, which are created permanently by <CODE>define</CODE> and are
+usable throughout our programs; and we have names for procedure arguments,
+which are associated with values temporarily when we call a
+procedure and are usable only inside that procedure.
+
+<P>These two kinds of naming seem to be different in every way.  One is for
+procedures, one for data; the one for procedures makes a permanent, global
+name, while the one for data makes a temporary, local name.  That picture
+does reflect the way that procedures and other data are <EM>usually</EM> used,
+but we'll see that really there is only one kind of naming.  The
+boundaries can be crossed:  Procedures can be arguments to other
+procedures, and any kind of data
+can have a permanent, global name.  Right now we'll look at that last
+point, about global variables.
+
+<P>Just as we've been using <CODE>define</CODE> to associate names with procedures
+globally, we can also use it for other kinds of data:
+
+<P><PRE>&gt; (define pi 3.141592654)
+
+&gt; (+ pi 5)
+8.141592654
+
+&gt; (define song '(I am the walrus))
+
+&gt; (last song)
+WALRUS
+</PRE>
+
+<P>Once defined, a global variable can be used anywhere, just as a defined
+procedure can be used anywhere.  (In fact, defining a procedure creates a
+variable whose value is the procedure.  Just as <CODE>pi</CODE> is the name of a
+variable whose value is 3.141592654, <CODE>last</CODE> is the name of a variable
+whose value is a primitive procedure.  We'll come back to this
+point in Chapter 9.)  When the name of a global variable
+appears in an expression, the corresponding value must be substituted, just
+as actual argument values are substituted for formal parameters.
+
+<P>When a little person is hired to carry out a compound procedure, his or her
+first step is to substitute actual argument values for formal parameters in
+the body.  The same little person substitutes values for global variable
+names also.  (What if there is a global variable whose name happens to be
+used as a formal parameter in this procedure?  Scheme's rule is that the
+formal parameter takes precedence, but even though Scheme knows what to do,
+conflicts like this make your program harder to read.)
+
+<P>How does this little person know what values to substitute for global
+variable names?
+<A NAME="g8"></A>
+<A NAME="g9"></A>
+What makes a variable &quot;global&quot; in the little-people model
+is that <EM>every</EM> little person knows its value.  You can imagine that
+there's a big chalkboard, with all the global definitions written on it, that
+all the little people can see.
+If you prefer, you could imagine that whenever a global variable is defined,
+the <CODE>define</CODE> specialist climbs up a huge ladder, picks up a megaphone,
+and yells something like &quot;Now hear this!  <CODE>Pi</CODE> is 3.141592654!&quot;
+
+<P>The association of a formal parameter (a name) with an actual argument (a
+value) is called a <EM><A NAME="g10"></A><A NAME="g11"></A>local variable.</EM>
+
+<P>It's awkward to have to say &quot;Harry associates the value 7 with the name
+<CODE>foo</CODE>&quot; all the time.  Most of the time we just say &quot;<CODE>foo</CODE> has the
+value 7,&quot; paying no attention to whether this association is in some
+particular little person's head or if everybody knows it.
+
+<P><H2>The Truth about Substitution</H2>
+
+<P>We said earlier in a footnote that Scheme doesn't actually do all the
+copying and substituting we've been talking about.  What actually happens is
+<A NAME="g12"></A>
+more like our model of global variables, in which there is a chalkboard
+somewhere that associates names with values&mdash;except that instead of making
+a new copy of every expression with values substituted for names, Scheme
+works with the original expression and looks up the value for each
+name at the moment when that value is needed.  To make local variables work,
+there are several chalkboards: a global one and one for each little person.
+
+<P>The fully detailed model of variables using several chalkboards is what many
+people find hardest about learning Scheme.  That's why we've chosen to use
+the simpler substitution model.<A NAME="text2" HREF="variables.html#ft2">[2]</A>
+
+<P><H2><CODE>Let</CODE></H2>
+
+<P>We're going to write a procedure that solves quadratic equations.  (We know
+this is the prototypical boring programming problem, but it illustrates
+clearly the point we're about to make.)
+
+<P>We'll use the quadratic formula that you learned in high school
+algebra class:
+
+<P><P><CENTER><IMG SRC="math1.gif" ALT="math display"></CENTER><P>
+
+<P><PRE>(define (roots a b c)
+  (se (/ (+ (- b) (sqrt (- (* b b) (* 4 a c))))
+         (* 2 a))
+      (/ (- (- b) (sqrt (- (* b b) (* 4 a c))))
+         (* 2 a))))
+</PRE>
+
+<P>Since there are two possible solutions, we return a sentence containing two
+numbers.  This procedure works fine,<A NAME="text3" HREF="variables.html#ft3">[3]</A> but it does have the disadvantage of repeating a
+lot of the work.  It computes the square root part of the formula twice.
+We'd like to avoid that inefficiency.
+
+<P>One thing we can do is to compute the square root and use that as the
+actual argument to a helper procedure that does the rest of the job:
+
+<P><PRE>(define (roots a b c)
+  (roots1 a b c (sqrt (- (* b b) (* 4 a c)))))
+
+(define (roots1 a b c discriminant)
+  (se (/ (+ (- b) discriminant) (* 2 a))
+      (/ (- (- b) discriminant) (* 2 a))))
+</PRE>
+
+<P>This version evaluates the square root only once.  The resulting
+value is used as the argument named <CODE>discriminant</CODE> in <CODE>roots1</CODE>.
+
+<P>We've solved the problem we posed for ourselves initially: avoiding the
+redundant computation of the discriminant (the square-root part of the
+formula).  The cost, though, is that we had to define an auxiliary procedure
+<CODE>roots1</CODE> that doesn't make much sense on its own.  (That is, you'd never
+invoke <CODE>roots1</CODE> for its own sake; only <CODE>roots</CODE> uses it.)
+
+<P>Scheme provides a notation to express a computation of this kind more
+<A NAME="splet"></A>
+conveniently.  It's called <A NAME="g13"></A><CODE>let</CODE>:
+
+<P><PRE>(define (roots a b c)
+  (let ((discriminant (sqrt (- (* b b) (* 4 a c)))))
+    (se (/ (+ (- b) discriminant) (* 2 a))
+        (/ (- (- b) discriminant) (* 2 a)))))
+</PRE>
+
+<P>Our new program is just an abbreviation for the previous version:
+In effect, it creates a temporary procedure just like <CODE>roots1</CODE>, but
+without a name, and invokes it with the specified argument value.  But the
+<CODE>let</CODE> notation rearranges things so that we can say, in the right order,
+&quot;let the variable <CODE>discriminant</CODE> have the value <CODE>(sqrt&hellip)</CODE> 
+and, using that variable, compute the body.&quot;
+
+<P><CODE>Let</CODE> is a <A NAME="g14"></A><A NAME="g15"></A>special form that takes two arguments.  The first is
+a sequence of name-value pairs enclosed in parentheses.  (In this example,
+there is only one name-value pair.)  The second argument, the <EM>body</EM>
+of the <CODE>let</CODE>, is the expression to evaluate.
+
+<P>
+Now that we have this notation, we can use it with more than one name-value
+connection to eliminate even more redundant computation:
+
+<P><PRE>(define (<A NAME="g16"></A>roots a b c)
+  (let ((discriminant (sqrt (- (* b b) (* 4 a c))))
+        (minus-b (- b))
+        (two-a (* 2 a)))
+    (se (/ (+ minus-b discriminant) two-a)
+        (/ (- minus-b discriminant) two-a))))
+</PRE>
+
+<P>In this example, the first argument to <CODE>let</CODE> includes three
+name-value pairs.  It's as if we'd defined and invoked a procedure like
+the following:
+
+<P><PRE>(define (roots1 discriminant minus-b two-a) ...)
+</PRE>
+
+<P>Like <CODE>cond</CODE>, <CODE>let</CODE> uses parentheses both with the usual meaning
+(invoking a procedure) and to group sub-arguments that belong together.  This
+<A NAME="g17"></A>
+grouping happens in two ways.  Parentheses are used to group a name and the
+expression that provides its value.  Also, an additional pair of parentheses
+surrounds the entire collection of name-value pairs.
+
+<P>
+<P><H2>Pitfalls</H2>
+
+<P>If you've programmed before in other languages, you may be accustomed
+to a style of programming in which you <EM>change</EM> the value of a
+variable by assigning it a new value.  You may be tempted to write
+
+<P><PRE>&gt; (define x (+ x 3))                         ;; no-no
+</PRE>
+
+<P>Although some versions of Scheme do allow such redefinitions, so
+that you can correct errors in your procedures, they're not strictly legal.
+A definition is meant to be <EM>permanent</EM> in functional programming.
+(Scheme does include other mechanisms for non-functional programming, but
+we're not studying them in this book because once you allow reassignment you
+need a more complex model of the evaluation process.)
+
+<P>When you create more than one temporary variable at once using <CODE>let</CODE>, all of the expressions that provide the values are computed before any
+of the variables are created.  Therefore, you can't have one expression
+depend on another:
+
+<P><PRE>&gt; (let ((a (+ 4 7))                          ;; wrong!
+	(b (* a 5)))
+    (+ a b))
+</PRE>
+
+<P>Don't think that <CODE>a</CODE> gets the value 11 and therefore <CODE>b</CODE>
+gets the value 55.  That <CODE>let</CODE> expression is equivalent to defining a
+helper procedure
+
+<P><PRE>(define (helper a b)
+  (+ a b))
+</PRE>
+
+<P>and then invoking it:
+
+<P><PRE>(helper (+ 4 7) (* a 5))
+</PRE>
+
+<P>The argument expressions, as always, are evaluated <EM>before</EM>
+the function is invoked.  The expression <CODE>(* a 5)</CODE> will be evaluated
+using the <EM>global</EM> value of <CODE>a</CODE>, if there is one.  If not, an
+error will result.  If you want to use <CODE>a</CODE> in computing <CODE>b</CODE>, you
+must say
+
+<P><PRE>&gt; (let ((a (+ 4 7)))
+    (let ((b (* a 5)))
+      (+ a b)))
+66
+</PRE>
+
+<P><CODE>Let</CODE>'s notation is tricky because, like <CODE>cond</CODE>, it uses
+parentheses that don't mean procedure invocation.  Don't teach yourself magic
+formulas like &quot;two open parentheses before the <CODE>let</CODE> variable and three
+close parentheses at the end of its value.&quot; Instead, think about the
+overall structure:
+
+<P><PRE>(let variables body)
+</PRE>
+
+<P><CODE>Let</CODE> takes exactly two arguments.  The first argument to <CODE>let</CODE> is one or more name-value groupings, all in parentheses:
+
+<P><PRE>((name1 value1) (name2 value2) (name3 value3) &hellip)
+</PRE>
+
+<P>Each <CODE>name</CODE> is a single word; each <CODE>value</CODE> can be any
+expression, usually a procedure invocation.  If it's a procedure invocation,
+then parentheses are used with their usual meaning.
+
+<P>The second argument to <CODE>let</CODE> is the expression to be evaluated using
+those variables.
+
+<P>Now put all the pieces together:
+
+<P><PRE>(let <STRONG><BIG>((</BIG></STRONG>name1 (fn1 arg1)<STRONG><BIG>)</BIG></STRONG>
+     <STRONG><BIG> (</BIG></STRONG>name2 (fn2 arg2)<STRONG><BIG>)</BIG></STRONG>
+     <STRONG><BIG> (</BIG></STRONG>name3 (fn3 arg3)<STRONG><BIG>))</BIG></STRONG>
+  body)
+</PRE>
+
+<P> 
+<H2>Boring Exercises</H2>
+
+<P><B>7.1</B>&nbsp;&nbsp;The following procedure does some redundant computation.
+
+<P><PRE>(define (<A NAME="g18"></A>gertrude wd)
+  (se (if (vowel? (first wd)) 'an 'a)
+      wd
+      'is
+      (if (vowel? (first wd)) 'an 'a)
+      wd
+      'is
+      (if (vowel? (first wd)) 'an 'a)
+      wd))
+
+&gt; (gertrude 'rose)
+(A ROSE IS A ROSE IS A ROSE)
+
+&gt; (gertrude 'iguana)
+(AN IGUANA IS AN IGUANA IS AN IGUANA)
+</PRE>
+
+<P>Use <CODE>let</CODE> to avoid the redundant work.
+
+
+<P>
+<B>7.2</B>&nbsp;&nbsp;Put in the missing parentheses:
+
+<P><PRE>&gt; (let pi 3.14159
+       pie 'lemon meringue
+    se 'pi is pi 'but pie is pie)
+(PI IS 3.14159 BUT PIE IS LEMON MERINGUE)
+</PRE>
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>7.3</B>&nbsp;&nbsp;The following program doesn't work.  Why not?  Fix it.
+
+<P><PRE>(define (<A NAME="g19"></A>superlative adjective word)
+  (se (word adjective 'est) word))
+</PRE>
+
+<P>It's supposed to work like this:
+
+<P><PRE>&gt; (superlative 'dumb 'exercise)
+(DUMBEST EXERCISE)
+</PRE>
+
+<P>
+<B>7.4</B>&nbsp;&nbsp;What does this procedure do?  Explain how it manages to work.
+
+<P><PRE>(define (<A NAME="g20"></A>sum-square a b)
+  (let ((+ *)
+        (* +))
+    (* (+ a a) (+ b b))))
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="variables.html#text1">[1]</A> The term &quot;variable&quot; is used by
+computer scientists to mean several subtly different things.  For example,
+some people use &quot;variable&quot; to mean just a holder for a value, without a
+name.  But what we said is what <EM>we</EM> mean by &quot;variable.&quot;<P>
+<A NAME="ft2" HREF="variables.html#text2">[2]</A> The reason that all of our
+examples work with the substitution model is that this book uses only
+functional programming, in the sense that we never change the value of a
+variable.  If we started doing the <CODE>X = X + 1</CODE> style of programming, we
+would need the more complicated chalkboard model.<P>
+<A NAME="ft3" HREF="variables.html#text3">[3]</A> That is, it works if the equation
+has real roots, or if your version of Scheme has complex numbers.  Also, the
+limited precision with which computers can represent irrational numbers can
+make this particular algorithm give wrong answers in practice even though
+it's correct in theory.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch6/true.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch8/part3.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch8/higher b/js/games/nluqo.github.io/~bh/ssch8/higher
new file mode 100644
index 0000000..b2f5fd8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch8/higher
@@ -0,0 +1,1108 @@
+<P>
+
+<P><A NAME="plowshares"></A>
+<CENTER><IMG SRC="../ss-pics/plowshare.jpg" ALT="figure: plowshare"></CENTER><P><CENTER>Turning function machines into plowshares
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 8: Higher-Order Functions</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 8</H2>
+<H1>Higher-Order Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch08.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch9/lambda.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P><EM>Note: If you read Part IV before this one, pretend you didn't; we are
+going to develop a different technique for solving similar problems.</EM>
+
+<P> 
+You can use the function <CODE>first</CODE> to find the first letter
+of a word.  What if you want to find the first letters of several words?  You
+did this in the first chapter, as part of the process of finding acronyms.
+
+<P> 
+To start with a simple case, suppose you have two words (that is, a sentence
+of length two).  You could apply the <CODE>first</CODE> procedure to each of them and
+combine the results:
+ 
+<PRE>(define (<A NAME="g1"></A>two-firsts sent)
+  (se (first (first sent))
+      (first (last sent))))
+ 
+&gt; (two-firsts '(john lennon))
+(J L)
+ 
+&gt; (two-firsts '(george harrison))
+(G H)
+</PRE>
+ 
+Similarly, here's the version for three words:
+ 
+<PRE>(define (<A NAME="g2"></A>three-firsts sent)
+  (se (first (first sent))
+      (first (first (bf sent)))
+      (first (last sent))))
+ 
+&gt; (three-firsts '(james paul mccartney))
+(J P M)
+</PRE>
+ 
+But this approach would get tiresome if you had a sentence of five
+words&mdash;you'd have to write a procedure specifically for the case of exactly
+five words, and that procedure would have five separate subexpressions to
+extract the first word, the second word, and so on.  Also, you don't
+want a separate procedure for every sentence length; you want one function
+that works no matter how long the sentence is.  Using the tools you've
+already learned about, the only possible way to do that would be pretty
+hideous:
+ 
+
+
+<P><PRE>(define (first-letters sent)
+  (cond ((= (count sent) 1) (one-first sent))
+        ((= (count sent) 2) (two-firsts sent))
+        ((= (count sent) 3) (three-firsts sent))
+        &hellip; and so on &hellip;))
+</PRE>
+
+<P>
+
+<P>But even this won't work because there's no way to say
+&quot;and so on&quot; in Scheme.  You could write a version that works for all
+sentences up to, let's say, length 23, but you'd be in trouble if someone
+tried to use your procedure on a 24-word sentence.
+
+<P><H2><CODE><B>Every</B></CODE></H2>
+<A NAME="every"></A>
+<A NAME="g3"></A>
+ 
+To write a better any-length first-letter procedure, you need to be able to say
+&quot;apply the function <CODE>first</CODE> to <EM>every</EM> word in the sentence, no
+matter how long the sentence is.&quot; Scheme provides a way to do
+this:<A NAME="text1" HREF="higher#ft1">[1]</A>
+ 
+<PRE>(define (<A NAME="g4"></A>first-letters sent)
+  (every first sent))
+ 
+&gt; (first-letters '(here comes the sun))
+(H C T S)
+ 
+&gt; (first-letters '(lucy in the sky with diamonds))
+(L I T S W D)
+</PRE>
+ 
+<CODE>Every</CODE> takes two arguments.  The second argument is a sentence, but the
+first is something new: a <EM>procedure</EM> used as an
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+<A NAME="g7"></A>
+<A NAME="g8"></A>
+argument to another procedure.<A NAME="text2" HREF="higher#ft2">[2]</A>  Notice that there are no parentheses around the word <CODE>first</CODE>
+in the body of <CODE>first-letters</CODE>!  By now you've gotten accustomed to
+seeing parentheses whenever you see the name of a function.  But parentheses
+indicate an <EM>invocation</EM> of a function, and we aren't invoking <CODE>first</CODE> here.  We're using <CODE>first</CODE>, the procedure itself, as an argument
+to <CODE>every</CODE>.
+
+<P><PRE>&gt; (every last '(while my guitar gently weeps))
+(E Y R Y S)
+ 
+&gt; (every - '(4 5 7 8 9))
+(-4 -5 -7 -8 -9)
+</PRE>
+ 
+These examples use <CODE>every</CODE> with primitive procedures, but of
+course you can also define procedures of your own and apply them to <CODE>every</CODE>
+word of a sentence:
+ 
+<PRE>(define (<A NAME="g9"></A>plural noun)
+  (if (equal? (last noun) 'y)
+      (word (bl noun) 'ies)
+      (word noun 's)))
+ 
+&gt; (every plural '(beatle turtle holly kink zombie))
+(BEATLES TURTLES HOLLIES KINKS ZOMBIES)
+</PRE>
+
+<P>You can also use a word as the second argument to <CODE>every</CODE>.  In this case,
+the first-argument procedure is applied to every letter of the word.  The
+results are collected in a sentence.
+
+<P><PRE>(define (<A NAME="g10"></A>double letter) (word letter letter))
+
+&gt; (every double 'girl)
+(GG II RR LL)
+
+&gt; (every square 547)
+(25 16 49)
+</PRE>
+
+<P>In all these examples so far, the first argument to <CODE>every</CODE> was a
+function that returned a <EM>word,</EM> and the value returned by <CODE>every</CODE>
+was a sentence containing all the returned words.
+The first argument to <CODE>every</CODE> can also be a function that returns a
+<EM>sentence.</EM>  In this case, <CODE>every</CODE> returns one long sentence:
+
+<P><PRE>(define (<A NAME="g11"></A>sent-of-first-two wd)
+  (se (first wd) (first (bf wd))))
+
+&gt; (every sent-of-first-two '(the inner light))
+(T H I N L I)
+
+&gt; (every sent-of-first-two '(tell me what you see))
+(T E M E W H Y O S E)
+
+&gt; (define (g wd)
+    (se (word 'with wd) 'you))
+
+&gt; (every g '(in out))
+(WITHIN YOU WITHOUT YOU)
+</PRE>
+
+<P>A function that takes another function as one of its arguments, as
+<CODE>every</CODE> does, is called a <EM><A NAME="g12"></A><A NAME="g13"></A>higher-order function.</EM>
+If we focus our attention on procedures, the mechanism through which
+Scheme computes functions, we think of <CODE>every</CODE> as a procedure
+that takes another procedure as an argument&mdash;a <EM>higher-order
+procedure.</EM>
+
+<P><H2>A Pause for Reflection</H2>
+
+<P>Earlier we used the metaphor of the &quot;<A NAME="g14"></A><A NAME="g15"></A>function machine,&quot; with a
+hopper at the top into which we throw data, and a chute at the
+bottom from which the result falls, like a meat grinder.  Well,
+<CODE>every</CODE> is a function machine into whose hopper we throw <EM>another
+function machine!</EM> Instead of a meat grinder, we have a metal
+grinder.<A NAME="text3" HREF="higher#ft3">[3]</A>
+
+<P>Do you see what an exciting idea this is?  We are accustomed to
+thinking of numbers and sentences as &quot;real things,&quot; while functions
+are less like things and more like activities.  As an analogy, think
+about cooking.  The real foods are the meats, vegetables, ice cream,
+and so on.  You can't eat a recipe, which is analogous to a
+function.  A recipe has to be applied to ingredients, and the result
+of carrying out the recipe is an edible meal.  It would seem weird
+if a recipe used other recipes as ingredients:  &ldquo;Preheat the oven
+to 350 and insert your <EM>Joy of Cooking.</EM>&rdquo; But in Scheme we
+can do just that.<A NAME="text4" HREF="higher#ft4">[4]</A>
+
+<P>Cooking your cookbook is unusual, but the general principle isn't.
+In some contexts we do treat recipes as things rather than as
+algorithms.  For example, people write recipes on cards and put them
+into a recipe file box.  Then they perform operations such as searching
+for a particular recipe, sorting the recipes by category (main dish,
+dessert, etc.), copying a recipe for a friend, and so on.  The same
+recipe is both a process (when we're cooking with it) and the object
+of a process (when we're filing it).
+
+<P><H2><CODE><B>Keep</B></CODE></H2>
+
+<P>Once we have this idea, we can use functions of functions to provide many
+different capabilities.
+<A NAME="keep"></A>
+
+<P> 
+For instance, the <A NAME="g16"></A><CODE>keep</CODE> function takes a predicate and a sentence as
+arguments.  It returns a sentence containing only the words of the argument
+sentence for which the predicate is true.
+ 
+<PRE>&gt; (keep even? '(1 2 3 4 5))
+(2 4)
+ 
+&gt; (define (<A NAME="g17"></A>ends-e? word) (equal? (last word) 'e))
+ 
+&gt; (keep ends-e? '(please put the salami above the blue elephant))
+(PLEASE THE ABOVE THE BLUE)
+ 
+&gt; (keep number? '(1 after 909))
+(1 909)
+</PRE>
+
+<P><CODE>Keep</CODE> will also accept a word as its second argument.  In this case, it
+applies the predicate to every letter of the word and returns another word:
+
+<P><PRE>&gt; (keep number? 'zonk23hey9)
+239
+
+&gt; (define (<A NAME="g18"></A>vowel? letter) (member? letter '(a e i o u)))
+
+&gt; (keep vowel? 'piggies)
+IIE
+</PRE>
+
+<P>When we used <CODE>every</CODE> to select the first letters of words
+earlier, we found the first letters even of uninteresting words such
+as &quot;the.&quot; We're working toward an acronym procedure, and for that
+purpose we'd like to be able to discard the boring words.
+ 
+<PRE>(define (<A NAME="g19"></A>real-word? wd)
+  (not (member? wd '(a the an in of and for to with))))
+
+&gt; (keep real-word? '(lucy in the sky with diamonds))
+(LUCY SKY DIAMONDS)
+
+&gt; (every first (keep real-word? '(lucy in the sky with diamonds)))
+(L S D)
+</PRE>
+
+<P><H2><CODE><B>Accumulate</B></CODE></H2>
+<A NAME="accum"></A>
+
+<P>In <CODE>every</CODE> and <CODE>keep</CODE>, each element of the second argument
+contributes <EM>independently</EM> to the overall result.  That is, <CODE>every</CODE> and <CODE>keep</CODE> apply a procedure to a single element at a time.  The
+overall result is a collection of individual results, with no interaction
+between elements of the argument.  This doesn't let us say things like &quot;Add
+up all the numbers in a sentence,&quot; where the desired output is a function
+of the entire argument sentence taken as a whole.  We can do this with a
+procedure named <A NAME="g20"></A><CODE>accumulate</CODE>.  <CODE>Accumulate</CODE> takes a procedure and
+a sentence as its arguments.  It applies that procedure to two of the words
+of the sentence.  Then it applies the procedure
+to the result we got back and another element of the sentence, and so on.
+It ends when it's combined all the words of the sentence into a single result.
+
+<P><PRE>&gt; (accumulate + '(6 3 4 -5 7 8 9))
+32
+ 
+&gt; (accumulate word '(a c l u))
+ACLU
+ 
+&gt; (accumulate max '(128 32 134 136))
+136
+ 
+&gt; (define (<A NAME="g21"></A>hyphenate word1 word2)
+    (word word1 '- word2))
+ 
+&gt; (accumulate hyphenate '(ob la di ob la da))
+OB-LA-DI-OB-LA-DA
+</PRE>
+
+<P>(In all of our examples in this section, the second argument
+contains at least two elements.  In the &quot;pitfalls&quot; section at the end of
+the chapter, we'll discuss what happens with smaller arguments.)
+
+<P><CODE>Accumulate</CODE> can also take a word as its second argument, using the
+letters as elements:
+
+<P><PRE>&gt; (accumulate + 781)
+16
+
+&gt; (accumulate sentence 'colin)
+(C O L I N)
+</PRE>
+
+<P> 
+<H2>Combining Higher-Order Functions</H2>
+ 
+What if we want to add up all the numbers in a sentence but ignore the words
+that aren't numbers?  First we <CODE>keep</CODE> the numbers in the sentence, then
+we <CODE>accumulate</CODE> the result with <CODE>+</CODE>.  It's easier to say in Scheme:
+ 
+<PRE>(define (<A NAME="g22"></A>add-numbers sent)
+  (accumulate + (keep number? sent)))
+ 
+&gt; (add-numbers '(4 calling birds 3 french hens 2 turtle doves))
+9
+ 
+&gt; (add-numbers '(1 for the money 2 for the show 3 to get ready
+		   and 4 to go))
+10
+</PRE>
+
+<P>We also have enough tools to write a version of the <A NAME="g23"></A><CODE>count</CODE> procedure,
+which finds the number of words in a sentence or the number of letters in a
+word.  First, we'll define a procedure <CODE>always-one</CODE> that returns 1 no
+matter what its argument is.  We'll <CODE>every always-one</CODE> over our argument
+sentence,<A NAME="text5" HREF="higher#ft5">[5]</A> which will result in a sentence of as
+many ones as there were words in the original sentence.  Then we can use
+<CODE>accumulate</CODE> with <CODE>+</CODE> to add up the ones.  This is a slightly
+roundabout approach; later we'll see a more natural way to find the <CODE>count</CODE> of a sentence.
+ 
+<PRE>(define (<A NAME="g24"></A>always-one arg)
+  1)
+
+(define (<A NAME="g25"></A>count sent)
+  (accumulate + (every always-one sent)))
+
+&gt; (count '(the continuing story of bungalow bill))
+6
+</PRE>
+ 
+You can now understand the <CODE>acronym</CODE> procedure from Chapter 1:
+ 
+<PRE>(define (<A NAME="g26"></A>acronym phrase)
+  (accumulate word (every first (keep real-word? phrase))))
+
+&gt; (acronym '(reduced instruction set computer))
+RISC
+
+&gt; (acronym '(structure and interpretation of computer programs))
+SICP
+</PRE>
+
+<A name="whichHOF">
+<P><H2>Choosing the Right Tool</H2>
+
+<P>So far you've seen three higher-order functions: <A NAME="g27"></A><CODE>every</CODE>,
+<A NAME="g28"></A><CODE>keep</CODE>, and <A NAME="g29"></A><CODE>accumulate</CODE>.  How do you decide which one to
+use for a particular problem?  
+
+<P><CODE>Every</CODE> transforms each element of a word or sentence individually.  The
+result sentence usually contains as many elements as the
+argument.<A NAME="text6" HREF="higher#ft6">[6]</A>
+
+<P><CENTER><IMG SRC="../ss-pics/every.jpg" ALT="figure: every"></CENTER>
+
+<P><CODE>Keep</CODE> selects certain elements of a word or sentence and discards the
+others.  The elements of the result are elements of the argument, without
+transformation, but the result may be smaller than the original.
+
+<P><CENTER><IMG SRC="../ss-pics/keep.jpg" ALT="figure: keep"></CENTER>
+
+<P><CODE>Accumulate</CODE> transforms the entire word or sentence into a single result
+by combining all of the elements in some way.
+
+<P><CENTER><IMG SRC="../ss-pics/accumulate.jpg" ALT="figure: accumulate"></CENTER>
+
+<P>These three pictures represent graphically the differences in the meanings
+of <CODE>every</CODE>, <CODE>keep</CODE>, and <CODE>accumulate</CODE>.  In the pictures, we're
+applying these higher-order procedures to sentences, but don't forget that
+we could have drawn similar pictures in which the higher-order procedures
+process the letters of a word.
+
+<P>Here's another way to compare these three higher-order functions:
+
+<P><P>
+<TABLE><THEAD><STRONG><TR><TH>function<TH>purpose<TH>first
+argument is a &hellip;</STRONG>
+<TBODY>
+<TR><TD><CODE>every</CODE><TD>transform&emsp;<TD>one-argument
+<EM>transforming</EM> function
+<TR><TD><CODE>keep</CODE><TD>select<TD>one-argument <EM>predicate</EM>
+function
+<TR><TD><CODE>accumulate</CODE>&emsp;<TD>combine<TD>two-argument
+<EM>combining</EM> function
+</TABLE>
+
+
+<P><P>
+To help you understand these differences, we'll look at specific examples
+using each of them, with each example followed by an equivalent computation
+done without the higher-order procedure.  Here is an example for <CODE>every</CODE>:
+
+<P><PRE>&gt; (every double 'girl)
+(GG II RR LL)
+
+&gt; (se (double 'g)
+      (double 'i)
+      (double 'r)
+      (double 'l))
+(GG II RR LL)
+</PRE>
+
+<P>
+
+<P>You can, if you like, think of the first of these expressions
+as abbreviating the second.
+
+<P>
+
+<P>An expression using <CODE>keep</CODE> can also be replaced with an expression that
+performs the same computation without using <CODE>keep</CODE>.  This time it's a
+little messier:
+
+<P>
+
+<P><PRE>&gt; (keep even? '(1 2 3 4 5))
+(2 4)
+
+&gt; (se (if (even? 1) 1 '())
+      (if (even? 2) 2 '())
+      (if (even? 3) 3 '())
+      (if (even? 4) 4 '())
+      (if (even? 5) 5 '()))
+(2 4)
+</PRE>
+
+<P>
+Here's how an <CODE>accumulate</CODE> can be expressed the long way:
+
+<P><PRE>&gt; (accumulate word '(a c l u))
+ACLU
+
+&gt; (word 'a (word 'c (word 'l 'u)))
+ACLU
+</PRE>
+
+<P>(Of course <CODE>word</CODE> will accept any number of arguments, so we
+could have computed the same result with all four letters as arguments to
+the same invocation.  But the version we've shown here indicates how
+<CODE>accumulate</CODE> actually works; it combines the elements one by one.)
+
+<P><H2>First-Class Functions and First-Class Sentences</H2>
+
+<P>If Scheme (or any dialect of Lisp) is your first programming language,
+having procedures that operate on entire sentences at once may not seem like
+a big deal.  But if you used to program in some lesser language, you're
+probably accustomed to writing something like <CODE>first-letters</CODE> as a <EM>loop</EM> in which you have some variable named <CODE>I</CODE> and you carry out some
+sequence of steps for <CODE>I=1</CODE>, <CODE>I=2</CODE>, and so on, until you get to <CODE>N</CODE>, the number of elements.  The use of higher-order functions allows us to
+express this problem all at once, rather than as a sequence of events.  Once
+you're accustomed to the Lisp way of thinking, you can tell yourself &quot;just
+take <CODE>every first</CODE> of the sentence,&quot; and that feels like a single step,
+not a complicated task.
+
+<P>Two aspects of Scheme combine to permit this mode of expression.  One,
+which we've mentioned earlier, is that sentences are first-class data.
+You can use an entire sentence as an argument to a procedure.  You can type a
+quoted sentence in, or you can compute a sentence by putting words together.
+
+<P>The second point is that functions are also first-class.  This lets us write
+a procedure like <CODE>pigl</CODE> that applies to a single word, and then
+combine that with <CODE>every</CODE> to translate an entire sentence to Pig Latin.
+If Scheme didn't have first-class functions, we couldn't have general-purpose
+tools like <CODE>keep</CODE> and <CODE>every</CODE>, because we couldn't say which
+function to extend to all of a sentence.  You'll see later that without <CODE>every</CODE> it would still be possible to write a specific <CODE>pigl-sent</CODE>
+procedure and separately write a <CODE>first-letters</CODE> procedure.  But the
+ability to use a procedure as argument to another procedure lets us <EM>generalize</EM> the idea of &quot;apply this function to every word of the
+sentence.&quot;
+
+<P><H2><CODE><B>Repeated</B></CODE></H2>
+
+<P>All the higher-order functions you've seen so far take functions as
+arguments, but none of them have functions as return values.  That is,
+we have machines that can take machines in their input hoppers, but now
+we'd like to think about machines that drop <EM>other machines</EM> out of
+their output chutes&mdash;machine factories, so to speak.
+<A NAME="repeated"></A>
+
+<P>In the following example, the procedure <A NAME="g30"></A><CODE>repeated</CODE> returns a procedure:
+ 
+<PRE>&gt; ((repeated bf 3) '(she came in through the bathroom window))
+(THROUGH THE BATHROOM WINDOW)
+ 
+&gt; ((repeated plural 4) 'computer)
+COMPUTERSSSS
+ 
+&gt; ((repeated square 2) 3)
+81
+ 
+&gt; (define (<A NAME="g31"></A>double sent)
+    (se sent sent))
+ 
+&gt; ((repeated double 3) '(banana))
+(BANANA BANANA BANANA BANANA BANANA BANANA BANANA BANANA)
+</PRE>
+ 
+The procedure <CODE>repeated</CODE> takes two arguments, a procedure and a number,
+and returns a new procedure.  The returned procedure is one that invokes the
+original procedure repeatedly.  For example, <CODE>(repeated bf 3)</CODE>
+returns a function that takes the butfirst of the butfirst of the
+butfirst of its argument.
+ 
+Notice that all our examples start with two open parentheses.  If we just
+invoked <CODE>repeated</CODE> at the Scheme prompt, we would get back a procedure,
+like this:
+ 
+<PRE>&gt; (repeated square 4)
+#&lt;PROCEDURE>
+</PRE>
+ 
+The procedure that we get back isn't very interesting by itself, so
+we invoke it, like this:
+ 
+<PRE>&gt; ((repeated square 4) 2)
+65536
+</PRE>
+ 
+To understand this expression, you must think carefully about its
+two subexpressions.  Two subexpressions?  Because there are two open
+parentheses next to each other, it would be easy to ignore one of them and
+therefore think of the expression as having four atomic subexpressions.  But
+in fact it has only two.  The first subexpression, <CODE>(repeated square 4)</CODE>, has a procedure as its value.  The second
+subexpression, <CODE>2</CODE>, has a number as its value.  The value of the entire
+expression comes from applying the procedure to the number.
+ 
+All along we've been saying that you evaluate a compound expression in two
+steps:  First, you evaluate all the subexpressions.  Then you apply the
+first value, which has to be a procedure, to the rest of the values.  But
+until now the first subexpression has always been just a single word, the
+name of a procedure.  Now we see that the first expression might be an
+invocation of a higher-order function, just as any of the argument
+subexpressions might be function invocations.
+ 
+We can use <CODE>repeated</CODE> to define <A NAME="g32"></A><CODE>item</CODE>, which returns a particular
+element of a sentence:
+ 
+<PRE>(define (<A NAME="g33"></A>item n sent)
+  (first ((repeated bf (- n 1)) sent)))
+ 
+&gt; (item 1 '(a day in the life))
+A
+ 
+&gt; (item 4 '(a day in the life))
+THE
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>Some people seem to fall in love with <CODE>every</CODE> and try to use it in
+all problems, even when <CODE>keep</CODE> or <CODE>accumulate</CODE> would be more
+appropriate.
+
+<P>If you find yourself using a predicate function as the first argument to
+<CODE>every</CODE>, you almost certainly mean to use <CODE>keep</CODE> instead.  For
+example, we want to write a procedure that determines whether any of the
+words in its argument sentence are numbers:
+
+<P><PRE>(define (any-numbers? sent)                  ;; wrong!
+  (accumulate or (every number? sent)))
+</PRE>
+
+<P>This is wrong for two reasons.  First, since Boolean values aren't words,
+they can't be members of sentences:
+
+<P><PRE>&gt; (sentence #T #F)
+ERROR: ARGUMENT TO SENTENCE NOT A WORD OR SENTENCE: #F
+
+&gt; (every number? '(a b 2 c 6))
+ERROR: ARGUMENT TO SENTENCE NOT A WORD OR SENTENCE: #T
+</PRE>
+
+<P>Second, even if you could have a sentence of Booleans, Scheme doesn't allow
+a special form, such as <CODE>or</CODE>, as the argument to a higher-order
+function.<A NAME="text7" HREF="higher#ft7">[7]</A> Depending on your version of Scheme,
+the incorrect <CODE>any-numbers?</CODE> procedure might give an error message about
+either of these two problems.
+
+<P>Instead of using <CODE>every</CODE>, select the numbers from the argument and count
+them:
+
+<P><PRE>(define (<A NAME="g34"></A>any-numbers? sent)
+  (not (empty? (keep number? sent))))
+</PRE>
+
+<P>The <CODE>keep</CODE> function always returns a result of the same type (i.e.,
+word or sentence) as its second argument.  This makes sense because if you're
+selecting a subset of the words of a sentence, you want to end up with a
+sentence; but if you're selecting a subset of the letters of a word, you
+want a word.  <CODE>Every</CODE>, on the other hand, always returns a sentence.
+You might think that it would make more sense for <CODE>every</CODE> to return a
+word when its second argument is a word.  Sometimes that <EM>is</EM> what you
+want, but sometimes not.  For example:
+
+<P><A NAME="spelldigit"></A>
+<PRE>(define (<A NAME="g35"></A>spell-digit digit)
+  (item (+ 1 digit)
+	'(zero one two three four five six seven eight nine)))
+
+&gt; (every spell-digit 1971)
+(ONE NINE SEVEN ONE)
+</PRE>
+
+<P>In the cases where you do want a word, you can just <CODE>accumulate word</CODE> the sentence that <CODE>every</CODE> returns.
+
+<P>
+<P>Remember that <CODE>every</CODE> expects its first argument to be a function of
+just one argument.  If you invoke <CODE>every</CODE> with a function such as <CODE>quotient</CODE>, which expects two arguments, you will get an error message from
+<CODE>quotient</CODE>, complaining that it only got one argument and wanted to get
+two.
+
+<P>Some people try to get around this by saying things like
+
+<P><PRE>(every (quotient 6) '(1 2 3))                ;; wrong!
+</PRE>
+
+<P>This is a sort of wishful thinking.  The intent is that Scheme
+should interpret the first argument to <CODE>every</CODE> as a fill-in-the-blank
+template, so that <CODE>every</CODE> will compute the values of
+
+<P><PRE>(quotient 6 1)
+(quotient 6 2)
+(quotient 6 3)
+</PRE>
+
+<P>But of course what Scheme really does is the same thing it always
+does:  It evaluates the argument expressions, then invokes <CODE>every</CODE>.  So
+Scheme will try to compute <CODE>(quotient 6)</CODE> and will give an error message.
+
+<P>We picked <CODE>quotient</CODE> for this example because it requires exactly two
+arguments.  Many Scheme primitives that ordinarily take two arguments,
+however, will accept only one.  Attempting the same wishful thinking with
+one of these procedures is still wrong, but the error message is different.
+For example, suppose you try to add 3 to each of several numbers this way:
+
+<P><PRE>(every (+ 3) '(1 2 3))                       ;; wrong!
+</PRE>
+
+<P>The first argument to <CODE>every</CODE> in this case isn't &quot;the
+procedure that adds 3,&quot; but the result returned by invoking <CODE>+</CODE> with
+the single argument <CODE>3</CODE>.  <CODE>(+ 3)</CODE> returns the number <CODE>3</CODE>, which
+isn't a procedure.  So you will get an error message like &quot;Attempt to apply
+non-procedure 3.&quot;
+
+<P>The idea behind this mistake&mdash;looking for a way to &quot;specialize&quot; a
+two-argument procedure by supplying one of the arguments in advance&mdash;is
+actually a good one.  In the next chapter we'll introduce a new mechanism
+that does allow such specialization.
+
+<P>If the procedure you use as the argument to <CODE>every</CODE> returns an empty
+sentence, then you may be surprised by the results:
+
+<P><PRE>(define (<A NAME="g36"></A>beatle-number n)
+  (if (or (&lt; n 1) (&gt; n 4))
+      '()
+      (item n '(john paul george ringo))))
+
+&gt; (beatle-number 3)
+GEORGE
+
+&gt; (beatle-number 5)
+()
+
+&gt; (every beatle-number '(2 8 4 0 1))
+(PAUL RINGO JOHN)
+</PRE>
+
+<P>What happened to the <CODE>8</CODE> and the <CODE>0</CODE>?  Pretend that <CODE>every</CODE> didn't exist, and you had to do it the hard way:
+
+<P><PRE>(se (beatle-number 2) (beatle-number 8) (beatle-number 4)
+    (beatle-number 0) (beatle-number 1))
+</PRE>
+
+<P>Using result replacement, we would get
+
+<P><PRE>(se 'paul '() 'ringo '() 'john)
+</PRE>
+
+<P>which is just <CODE>(PAUL RINGO JOHN)</CODE>.
+
+<P>On the other hand, if <CODE>every</CODE>'s argument procedure returns an empty <EM>word,</EM> it will appear in the result.
+
+<P><PRE>&gt; (every bf '(i need you))
+(&quot;&quot; EED OU)
+</PRE>
+
+<P>The sentence returned by <CODE>every</CODE> has three words in it: the
+empty word, <CODE>eed</CODE>, and <CODE>ou</CODE>.
+
+<P>Don't confuse 
+
+<P><PRE>(first '(one two three four))
+</PRE>
+
+<P>with
+
+<P><PRE>(every first '(one two three four))
+</PRE>
+
+<P>In the first case, we're applying the procedure <CODE>first</CODE> to a
+sentence; in the second, we're applying <CODE>first</CODE> four separate times,
+to each of the four words separately.
+
+<P>What happens if you use a one-word sentence or one-letter word as argument
+to <CODE>accumulate</CODE>?  It returns that word or that letter, without even
+invoking the given procedure.  This makes sense if you're using something
+like <CODE>+</CODE> or <CODE>max</CODE> as the accumulator, but it's disconcerting that
+
+<P><PRE>(accumulate se '(one-word))
+</PRE>
+
+<P>returns the <EM>word</EM> <CODE>one-word</CODE>.
+
+<P> 
+What happens if you give <CODE>accumulate</CODE> an empty sentence or word?
+<CODE>Accumulate</CODE> accepts empty arguments for some combiners, but not for
+others:
+
+<P><PRE>&gt; (accumulate + '())
+0
+
+&gt; (accumulate max '())
+ERROR: CAN'T ACCUMULATE EMPTY INPUT WITH THAT COMBINER
+</PRE>
+
+<P>The combiners that can be used with an empty sentence or word are
+<CODE>+</CODE>, <CODE>*</CODE>, <CODE>word</CODE>, and <CODE>sentence</CODE>.  <CODE>Accumulate</CODE> checks
+specifically for one of these combiners.
+
+<P>Why should these four procedures, and no others, be allowed to <CODE>accumulate</CODE> an empty sentence or word?  The difference between these and
+other combiners is that you can invoke them with no arguments, whereas <CODE>max</CODE>, for example, requires at least one number:
+
+<P><PRE>&gt; (+)
+0
+
+&gt; (max)
+ERROR: NOT ENOUGH ARGUMENTS TO #&lt;PROCEDURE&gt;.
+</PRE>
+
+<P><CODE>Accumulate</CODE> actually invokes the combiner with no arguments
+in order to find out what value to return for an empty sentence or word.
+We would have liked to implement <CODE>accumulate</CODE> so that <EM>any</EM>
+procedure that can be invoked with no arguments would be accepted as a
+combiner to accumulate the empty sentence or word.  Unfortunately, Scheme
+does not provide a way for a program to ask, &quot;How many arguments will this
+procedure accept?&quot; The best we could do was to build a particular set of
+zero-argument-okay combiners into the definition of <CODE>accumulate</CODE>.
+
+<P>Don't think that the returned value for an empty argument is always zero or
+empty.
+
+<P><PRE>&gt; (accumulate * '())
+1
+</PRE>
+
+<P>The explanation for this behavior is that any function that works
+with no arguments returns its <EM>identity element</EM> in that case.
+What's an identity element?  The function <CODE>+</CODE> has the identity element
+<CODE>0</CODE> because <CODE>(+</CODE> <EM>anything</EM> <CODE>0)</CODE> returns the <EM>anything.</EM> Similarly, the empty word is the identity element for <CODE>word</CODE>.  In general, a function's identity element has the property that when
+you invoke the function with the identity element and something else as
+arguments, the return value is the something else.  It's a Scheme convention
+that a procedure with an identity element returns that element when invoked
+with no arguments.<A NAME="text8" HREF="higher#ft8">[8]</A>
+
+<P>The use of two consecutive open parentheses to invoke the procedure
+<A NAME="g37"></A>
+returned by a procedure is a strange-looking notation:
+
+<P><PRE>((repeated bf 3) 987654)
+</PRE>
+
+<P>Don't confuse this with the similar-looking <CODE>cond</CODE> notation,
+in which the outer parentheses have a special meaning (delimiting a <CODE>cond</CODE> clause).  Here, the parentheses have their usual meaning.  The inner
+parentheses invoke the procedure <CODE>repeated</CODE> with arguments <CODE>bf</CODE> and
+<CODE>3</CODE>.  The value of that expression is a procedure.  It doesn't have a
+name, but for the purposes of this paragraph let's pretend it's called <CODE>bfthree</CODE>.  Then the outer parentheses are basically saying <CODE>(bfthree 987654)</CODE>; they apply the unnamed procedure to the argument <CODE>987654</CODE>.
+
+<P>In other words, there are two sets of parentheses because there are two
+functions being invoked: <CODE>repeated</CODE> and the function returned by
+<CODE>repeated</CODE>.  So don't say
+
+<P><PRE>(repeated bf 3 987654)                       ;; wrong
+</PRE>
+
+<P>just because it looks more familiar.  <CODE>Repeated</CODE> isn't a
+function of three arguments.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>8.1</B>&nbsp;&nbsp;What does Scheme return as the value of each of the following expressions?
+Figure it out for yourself before you try it on the computer.
+
+<P><PRE>
+&gt; (every last '(algebra purple spaghetti tomato gnu))
+
+&gt; (keep number? '(one two three four))
+
+&gt; (accumulate * '(6 7 13 0 9 42 17))
+
+&gt; (member? 'h (keep vowel? '(t h r o a t)))
+
+&gt; (every square (keep even? '(87 4 7 12 0 5)))
+
+&gt; (accumulate word (keep vowel? (every first '(and i love her))))
+
+&gt; ((repeated square 0) 25)
+
+&gt; (every (repeated bl 2) '(good day sunshine))
+</PRE>
+
+<P><B>8.2</B>&nbsp;&nbsp;Fill in the blanks in the following Scheme interactions:
+
+<P><PRE>&gt; (______ vowel? 'birthday)
+IA
+
+&gt; (______ first '(golden slumbers))
+(G S)
+
+&gt; (______ '(golden slumbers))
+GOLDEN
+
+&gt; (______ ______ '(little child))
+(E D)
+
+&gt; (______ ______ (______ ______ '(little child)))
+ED
+
+&gt; (______ + '(2 3 4 5))
+(2 3 4 5)
+
+&gt; (______ + '(2 3 4 5))
+14
+</PRE>
+
+<P>
+<B>8.3</B>&nbsp;&nbsp;Describe each of the following functions in English.  Make sure to include a
+description of the domain and range of each function.  Be as precise as
+possible; for example, &quot;the argument must be a function of one numeric
+argument&quot; is better than &quot;the argument must be a function.&quot;
+
+<P><PRE>(define (f a)
+  (keep even? a))
+
+(define (g b)
+  (every b '(blue jay way)))
+
+</PRE>
+
+<P>
+<PRE>(define (h c d)
+  (c (c d)))
+
+(define (i e)
+  (/ (accumulate + e) (count e)))
+
+accumulate
+
+sqrt
+
+repeated
+
+(repeated sqrt 3)
+
+(repeated even? 2)
+
+(repeated first 2)
+
+(repeated (repeated bf 3) 2)
+</PRE>
+
+<P>
+<P>
+<H2>Real Exercises</H2>
+<P>
+Note: Writing helper procedures may be useful in solving some of these
+problems.  <EM>If you read Part IV before this, do not use recursion
+in solving these problems; use higher order functions instead.</EM>
+
+<a name="hofex">
+
+<P><B>8.4</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g38"></A>choose-beatles</CODE> that takes a predicate
+function as its argument and returns a sentence of just those Beatles (John,
+Paul, George, and Ringo) that satisfy the predicate.  For example:
+
+<P><PRE>(define (<A NAME="g39"></A>ends-vowel? wd) (vowel? (last wd)))
+
+(define (<A NAME="g40"></A>even-count? wd) (even? (count wd)))
+
+&gt; (choose-beatles ends-vowel?)
+(GEORGE RINGO)
+
+&gt; (choose-beatles even-count?)
+(JOHN PAUL GEORGE)
+</PRE>
+
+<P>
+
+
+<P><B>8.5</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g41"></A>transform-beatles</CODE> that takes a procedure as an
+argument, applies it to each of the Beatles, and returns the results in a
+sentence:
+
+<P><PRE>(define (<A NAME="g42"></A>amazify name)
+  (word 'the-amazing- name))
+</PRE>
+
+<P>
+
+<P><PRE>&gt; (transform-beatles amazify)
+(THE-AMAZING-JOHN THE-AMAZING-PAUL THE-AMAZING-GEORGE
+ THE-AMAZING-RINGO)
+
+&gt; (transform-beatles butfirst)
+(OHN AUL EORGE INGO)
+</PRE>
+
+<P>
+
+<B>8.6</B>&nbsp;&nbsp;When you're talking to someone over a noisy radio connection, you sometimes
+have to spell out a word in order to get the other person to understand it.
+But names of letters aren't that easy to understand either, so there's a
+standard code in which each letter is represented by a particular word that
+starts with the letter.  For example, instead of &quot;B&quot; you say &quot;bravo.&quot;
+
+<P>Write a procedure <CODE><A NAME="g43"></A>words</CODE> that takes a word as its argument and
+returns a sentence of the names of the letters in the word:
+
+<P><PRE>&gt; (words 'cab)
+(CHARLIE ALPHA BRAVO)
+</PRE>
+
+<P>(You may make up your own names for the letters or look up the
+standard ones if you want.)
+
+<P>Hint: Start by writing a helper procedure that figures out the name for a
+single letter.
+
+
+<P>
+<B>8.7</B>&nbsp;&nbsp;[<A HREF="../ssch14/recur-patterns.html#lettcrec">14.5</A>]<A NAME="text9" HREF="higher#ft9">[9]</A>
+Write a procedure <CODE><A NAME="g44"></A>letter-count</CODE> that takes a sentence as its
+argument and returns the total number of letters in the sentence:
+<A NAME="lettcount"></A>
+
+<P><PRE>&gt; (letter-count '(fixing a hole))
+11
+</PRE>
+
+<P>
+<B>8.8</B>&nbsp;&nbsp;[<A HREF="../ssch12/leap.html#exaggrec">12.5</A>]
+Write an <CODE><A NAME="g45"></A>exaggerate</CODE> procedure which exaggerates sentences:
+<A NAME="exagg"></A>
+
+<P><PRE>&gt; (exaggerate '(i ate 3 potstickers))
+(I ATE 6 POTSTICKERS)
+
+&gt; (exaggerate '(the chow fun is good here))
+(THE CHOW FUN IS GREAT HERE)
+</PRE>
+
+<P>It should double all the numbers in the sentence, and it should replace
+&quot;good&quot; with &quot;great,&quot; &quot;bad&quot; with &quot;terrible,&quot; and anything else you
+can think of.  
+
+<P>
+<B>8.9</B>&nbsp;&nbsp;What procedure can you use as the first argument to <CODE>every</CODE> so that for
+any sentence used as the second argument, <CODE>every</CODE> returns that sentence?
+
+<P>What procedure can you use as the first argument to <CODE>keep</CODE> so that for
+any sentence used as the second argument, <CODE>keep</CODE> returns that sentence?
+
+<P>What procedure can you use as the first argument to <CODE>accumulate</CODE> so that
+for any sentence used as the second argument, <CODE>accumulate</CODE> returns that
+sentence?
+
+
+<P>
+<B>8.10</B>&nbsp;&nbsp;Write a predicate <CODE><A NAME="g46"></A>true-for-all?</CODE> that takes two arguments, a
+predicate procedure and a sentence.  It should return <CODE>#t</CODE> if the
+predicate argument returns true for <EM>every</EM> word in the sentence.
+<A NAME="trueforall"></A>
+
+<P><PRE>&gt; (true-for-all? even? '(2 4 6 8))
+#T
+
+&gt; (true-for-all? even? '(2 6 3 4))
+#F
+</PRE>
+
+<P>
+<B>8.11</B>&nbsp;&nbsp;[<A HREF="../ssch12/leap.html#gparec">12.6</A>]
+Write a GPA procedure.  It should take a sentence of grades as its argument
+and return the corresponding grade point average:
+<A NAME="gpa"></A>
+
+<P><PRE>&gt; (<A NAME="g47"></A>gpa '(A A+ B+ B))
+3.67
+</PRE>
+
+<P>Hint: write a helper procedure <CODE><A NAME="g48"></A>base-grade</CODE> that takes
+a grade as argument and returns 0, 1, 2, 3, or 4, and another helper
+procedure <CODE>grade-modifier</CODE> that returns &minus;.33, 0, or .33, depending on
+whether the grade has a minus, a plus, or neither.
+
+
+<P>
+<B>8.12</B>&nbsp;&nbsp;[<A HREF="../ssch11/recursion.html#countumsrec">11.2</A>]
+When you teach a class, people will get distracted if you say &quot;um&quot; too many
+times.  Write a <CODE><A NAME="g49"></A>count-ums</CODE> that counts the number of times &quot;um&quot;
+appears in a sentence:
+<A NAME="countums"></A>
+
+<P><PRE>&gt; (count-ums
+   '(today um we are going to um talk about functional um programming))
+3
+</PRE>
+
+<P>
+<B>8.13</B>&nbsp;&nbsp;[<A HREF="../ssch11/recursion.html#unspellrec">11.3</A>]
+Write a procedure <CODE><A NAME="g50"></A>phone-unspell</CODE> that takes a spelled version of
+a phone number, such as <CODE>POPCORN</CODE>, and returns the real phone number, in
+this case <CODE>7672676</CODE>.  You will need to write a helper procedure that
+uses an 8-way <CODE>cond</CODE> expression to translate a single letter into a
+digit.
+<A NAME="unspell"></A>
+
+
+<P>
+<B>8.14</B>&nbsp;&nbsp;Write the procedure <CODE><A NAME="g51"></A>subword</CODE> that takes three arguments: a
+word, a starting position number, and an ending position number.  It should
+return the subword containing only the letters between the specified
+positions:
+
+<P><PRE>&gt; (subword 'polythene 5 8)
+THEN
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="higher#text1">[1]</A> Like all the procedures in this book that deal with words and
+sentences, <CODE>every</CODE> and the other procedures in this chapter
+are part of our extensions to Scheme.  Later, in Chapter 17, we'll
+introduce the standard Scheme equivalents.<P>
+<A NAME="ft2" HREF="higher#text2">[2]</A> Talking about <CODE>every</CODE> strains our
+resolve to distinguish functions from the procedures that implement them.
+Is the argument to <CODE>every</CODE> a function or a procedure?  If we think of
+<CODE>every</CODE> itself as a procedure&mdash;that is, if we're focusing on how it
+does its job&mdash;then of course we must say that it does its job by repeatedly
+invoking the <EM>procedure</EM> that we supply as an argument.  But it's
+equally valid for us to focus attention on the function that the <CODE>every</CODE>
+procedure implements, and that function takes <EM>functions</EM> as
+arguments.<P>
+<A NAME="ft3" HREF="higher#text3">[3]</A> You can get in trouble mathematically by trying to define a
+function whose domain includes <EM>all</EM> functions, because applying such
+a function to itself can lead to a paradox.  In programming, the
+corresponding danger is that applying a higher-order procedure to <EM>itself</EM> might result in a program that runs forever.<P>
+<A NAME="ft4" HREF="higher#text4">[4]</A> Some recipes may seem to include other
+recipes, because they say things like &quot;add pesto (recipe on p. 
+12).&quot; But this is just composition of functions; the <EM>result</EM>
+of the pesto procedure is used as an argument to this recipe.  The
+pesto recipe itself is not an ingredient.<P>
+<A NAME="ft5" HREF="higher#text5">[5]</A> We mean, of course, &quot;We'll invoke <CODE>every</CODE> with the
+procedure <CODE>always-one</CODE> and our argument sentence as its two arguments.&quot;
+After you've been programming computers for a while, this sort of abuse of
+English will come naturally to you.<P>
+<A NAME="ft6" HREF="higher#text6">[6]</A> What we mean by &quot;usually&quot; is that <CODE>every</CODE> is most
+often used with an argument function that returns a single word.  If the
+function returns a sentence whose length might not be one, then the number
+of words in the overall result could be anything!<P>
+<A NAME="ft7" HREF="higher#text7">[7]</A> As we said in Chapter 4, special forms aren't
+procedures, and aren't first-class.<P>
+<A NAME="ft8" HREF="higher#text8">[8]</A> PC Scheme returns zero for an invocation of <CODE>max</CODE> with no arguments, but that's the wrong answer.  If anything, the
+answer would have to be &minus;&infin;.<P>
+<A NAME="ft9" HREF="higher#text9">[9]</A> Exercise <A HREF="../ssch14/recur-patterns.html#lettcrec">14.5</A> in Part IV asks you to solve this
+same problem using recursion.  Here we are asking you to use
+higher-order functions.  Whenever we pose the same problem in both parts, we'll
+cross-reference them in brackets as we did here.  When you see the problem
+for the second time, you might want to consult your first solution for ideas.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch9/lambda.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch8/higher.html b/js/games/nluqo.github.io/~bh/ssch8/higher.html
new file mode 100644
index 0000000..fb30412
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch8/higher.html
@@ -0,0 +1,1108 @@
+<P>
+
+<P><A NAME="plowshares"></A>
+<CENTER><IMG SRC="../ss-pics/plowshare.jpg" ALT="figure: plowshare"></CENTER><P><CENTER>Turning function machines into plowshares
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 8: Higher-Order Functions</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 8</H2>
+<H1>Higher-Order Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch08.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="part3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch9/lambda.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P><EM>Note: If you read Part IV before this one, pretend you didn't; we are
+going to develop a different technique for solving similar problems.</EM>
+
+<P> 
+You can use the function <CODE>first</CODE> to find the first letter
+of a word.  What if you want to find the first letters of several words?  You
+did this in the first chapter, as part of the process of finding acronyms.
+
+<P> 
+To start with a simple case, suppose you have two words (that is, a sentence
+of length two).  You could apply the <CODE>first</CODE> procedure to each of them and
+combine the results:
+ 
+<PRE>(define (<A NAME="g1"></A>two-firsts sent)
+  (se (first (first sent))
+      (first (last sent))))
+ 
+&gt; (two-firsts '(john lennon))
+(J L)
+ 
+&gt; (two-firsts '(george harrison))
+(G H)
+</PRE>
+ 
+Similarly, here's the version for three words:
+ 
+<PRE>(define (<A NAME="g2"></A>three-firsts sent)
+  (se (first (first sent))
+      (first (first (bf sent)))
+      (first (last sent))))
+ 
+&gt; (three-firsts '(james paul mccartney))
+(J P M)
+</PRE>
+ 
+But this approach would get tiresome if you had a sentence of five
+words&mdash;you'd have to write a procedure specifically for the case of exactly
+five words, and that procedure would have five separate subexpressions to
+extract the first word, the second word, and so on.  Also, you don't
+want a separate procedure for every sentence length; you want one function
+that works no matter how long the sentence is.  Using the tools you've
+already learned about, the only possible way to do that would be pretty
+hideous:
+ 
+
+
+<P><PRE>(define (first-letters sent)
+  (cond ((= (count sent) 1) (one-first sent))
+        ((= (count sent) 2) (two-firsts sent))
+        ((= (count sent) 3) (three-firsts sent))
+        &hellip; and so on &hellip;))
+</PRE>
+
+<P>
+
+<P>But even this won't work because there's no way to say
+&quot;and so on&quot; in Scheme.  You could write a version that works for all
+sentences up to, let's say, length 23, but you'd be in trouble if someone
+tried to use your procedure on a 24-word sentence.
+
+<P><H2><CODE><B>Every</B></CODE></H2>
+<A NAME="every"></A>
+<A NAME="g3"></A>
+ 
+To write a better any-length first-letter procedure, you need to be able to say
+&quot;apply the function <CODE>first</CODE> to <EM>every</EM> word in the sentence, no
+matter how long the sentence is.&quot; Scheme provides a way to do
+this:<A NAME="text1" HREF="higher.html#ft1">[1]</A>
+ 
+<PRE>(define (<A NAME="g4"></A>first-letters sent)
+  (every first sent))
+ 
+&gt; (first-letters '(here comes the sun))
+(H C T S)
+ 
+&gt; (first-letters '(lucy in the sky with diamonds))
+(L I T S W D)
+</PRE>
+ 
+<CODE>Every</CODE> takes two arguments.  The second argument is a sentence, but the
+first is something new: a <EM>procedure</EM> used as an
+<A NAME="g5"></A>
+<A NAME="g6"></A>
+<A NAME="g7"></A>
+<A NAME="g8"></A>
+argument to another procedure.<A NAME="text2" HREF="higher.html#ft2">[2]</A>  Notice that there are no parentheses around the word <CODE>first</CODE>
+in the body of <CODE>first-letters</CODE>!  By now you've gotten accustomed to
+seeing parentheses whenever you see the name of a function.  But parentheses
+indicate an <EM>invocation</EM> of a function, and we aren't invoking <CODE>first</CODE> here.  We're using <CODE>first</CODE>, the procedure itself, as an argument
+to <CODE>every</CODE>.
+
+<P><PRE>&gt; (every last '(while my guitar gently weeps))
+(E Y R Y S)
+ 
+&gt; (every - '(4 5 7 8 9))
+(-4 -5 -7 -8 -9)
+</PRE>
+ 
+These examples use <CODE>every</CODE> with primitive procedures, but of
+course you can also define procedures of your own and apply them to <CODE>every</CODE>
+word of a sentence:
+ 
+<PRE>(define (<A NAME="g9"></A>plural noun)
+  (if (equal? (last noun) 'y)
+      (word (bl noun) 'ies)
+      (word noun 's)))
+ 
+&gt; (every plural '(beatle turtle holly kink zombie))
+(BEATLES TURTLES HOLLIES KINKS ZOMBIES)
+</PRE>
+
+<P>You can also use a word as the second argument to <CODE>every</CODE>.  In this case,
+the first-argument procedure is applied to every letter of the word.  The
+results are collected in a sentence.
+
+<P><PRE>(define (<A NAME="g10"></A>double letter) (word letter letter))
+
+&gt; (every double 'girl)
+(GG II RR LL)
+
+&gt; (every square 547)
+(25 16 49)
+</PRE>
+
+<P>In all these examples so far, the first argument to <CODE>every</CODE> was a
+function that returned a <EM>word,</EM> and the value returned by <CODE>every</CODE>
+was a sentence containing all the returned words.
+The first argument to <CODE>every</CODE> can also be a function that returns a
+<EM>sentence.</EM>  In this case, <CODE>every</CODE> returns one long sentence:
+
+<P><PRE>(define (<A NAME="g11"></A>sent-of-first-two wd)
+  (se (first wd) (first (bf wd))))
+
+&gt; (every sent-of-first-two '(the inner light))
+(T H I N L I)
+
+&gt; (every sent-of-first-two '(tell me what you see))
+(T E M E W H Y O S E)
+
+&gt; (define (g wd)
+    (se (word 'with wd) 'you))
+
+&gt; (every g '(in out))
+(WITHIN YOU WITHOUT YOU)
+</PRE>
+
+<P>A function that takes another function as one of its arguments, as
+<CODE>every</CODE> does, is called a <EM><A NAME="g12"></A><A NAME="g13"></A>higher-order function.</EM>
+If we focus our attention on procedures, the mechanism through which
+Scheme computes functions, we think of <CODE>every</CODE> as a procedure
+that takes another procedure as an argument&mdash;a <EM>higher-order
+procedure.</EM>
+
+<P><H2>A Pause for Reflection</H2>
+
+<P>Earlier we used the metaphor of the &quot;<A NAME="g14"></A><A NAME="g15"></A>function machine,&quot; with a
+hopper at the top into which we throw data, and a chute at the
+bottom from which the result falls, like a meat grinder.  Well,
+<CODE>every</CODE> is a function machine into whose hopper we throw <EM>another
+function machine!</EM> Instead of a meat grinder, we have a metal
+grinder.<A NAME="text3" HREF="higher.html#ft3">[3]</A>
+
+<P>Do you see what an exciting idea this is?  We are accustomed to
+thinking of numbers and sentences as &quot;real things,&quot; while functions
+are less like things and more like activities.  As an analogy, think
+about cooking.  The real foods are the meats, vegetables, ice cream,
+and so on.  You can't eat a recipe, which is analogous to a
+function.  A recipe has to be applied to ingredients, and the result
+of carrying out the recipe is an edible meal.  It would seem weird
+if a recipe used other recipes as ingredients:  &ldquo;Preheat the oven
+to 350 and insert your <EM>Joy of Cooking.</EM>&rdquo; But in Scheme we
+can do just that.<A NAME="text4" HREF="higher.html#ft4">[4]</A>
+
+<P>Cooking your cookbook is unusual, but the general principle isn't.
+In some contexts we do treat recipes as things rather than as
+algorithms.  For example, people write recipes on cards and put them
+into a recipe file box.  Then they perform operations such as searching
+for a particular recipe, sorting the recipes by category (main dish,
+dessert, etc.), copying a recipe for a friend, and so on.  The same
+recipe is both a process (when we're cooking with it) and the object
+of a process (when we're filing it).
+
+<P><H2><CODE><B>Keep</B></CODE></H2>
+
+<P>Once we have this idea, we can use functions of functions to provide many
+different capabilities.
+<A NAME="keep"></A>
+
+<P> 
+For instance, the <A NAME="g16"></A><CODE>keep</CODE> function takes a predicate and a sentence as
+arguments.  It returns a sentence containing only the words of the argument
+sentence for which the predicate is true.
+ 
+<PRE>&gt; (keep even? '(1 2 3 4 5))
+(2 4)
+ 
+&gt; (define (<A NAME="g17"></A>ends-e? word) (equal? (last word) 'e))
+ 
+&gt; (keep ends-e? '(please put the salami above the blue elephant))
+(PLEASE THE ABOVE THE BLUE)
+ 
+&gt; (keep number? '(1 after 909))
+(1 909)
+</PRE>
+
+<P><CODE>Keep</CODE> will also accept a word as its second argument.  In this case, it
+applies the predicate to every letter of the word and returns another word:
+
+<P><PRE>&gt; (keep number? 'zonk23hey9)
+239
+
+&gt; (define (<A NAME="g18"></A>vowel? letter) (member? letter '(a e i o u)))
+
+&gt; (keep vowel? 'piggies)
+IIE
+</PRE>
+
+<P>When we used <CODE>every</CODE> to select the first letters of words
+earlier, we found the first letters even of uninteresting words such
+as &quot;the.&quot; We're working toward an acronym procedure, and for that
+purpose we'd like to be able to discard the boring words.
+ 
+<PRE>(define (<A NAME="g19"></A>real-word? wd)
+  (not (member? wd '(a the an in of and for to with))))
+
+&gt; (keep real-word? '(lucy in the sky with diamonds))
+(LUCY SKY DIAMONDS)
+
+&gt; (every first (keep real-word? '(lucy in the sky with diamonds)))
+(L S D)
+</PRE>
+
+<P><H2><CODE><B>Accumulate</B></CODE></H2>
+<A NAME="accum"></A>
+
+<P>In <CODE>every</CODE> and <CODE>keep</CODE>, each element of the second argument
+contributes <EM>independently</EM> to the overall result.  That is, <CODE>every</CODE> and <CODE>keep</CODE> apply a procedure to a single element at a time.  The
+overall result is a collection of individual results, with no interaction
+between elements of the argument.  This doesn't let us say things like &quot;Add
+up all the numbers in a sentence,&quot; where the desired output is a function
+of the entire argument sentence taken as a whole.  We can do this with a
+procedure named <A NAME="g20"></A><CODE>accumulate</CODE>.  <CODE>Accumulate</CODE> takes a procedure and
+a sentence as its arguments.  It applies that procedure to two of the words
+of the sentence.  Then it applies the procedure
+to the result we got back and another element of the sentence, and so on.
+It ends when it's combined all the words of the sentence into a single result.
+
+<P><PRE>&gt; (accumulate + '(6 3 4 -5 7 8 9))
+32
+ 
+&gt; (accumulate word '(a c l u))
+ACLU
+ 
+&gt; (accumulate max '(128 32 134 136))
+136
+ 
+&gt; (define (<A NAME="g21"></A>hyphenate word1 word2)
+    (word word1 '- word2))
+ 
+&gt; (accumulate hyphenate '(ob la di ob la da))
+OB-LA-DI-OB-LA-DA
+</PRE>
+
+<P>(In all of our examples in this section, the second argument
+contains at least two elements.  In the &quot;pitfalls&quot; section at the end of
+the chapter, we'll discuss what happens with smaller arguments.)
+
+<P><CODE>Accumulate</CODE> can also take a word as its second argument, using the
+letters as elements:
+
+<P><PRE>&gt; (accumulate + 781)
+16
+
+&gt; (accumulate sentence 'colin)
+(C O L I N)
+</PRE>
+
+<P> 
+<H2>Combining Higher-Order Functions</H2>
+ 
+What if we want to add up all the numbers in a sentence but ignore the words
+that aren't numbers?  First we <CODE>keep</CODE> the numbers in the sentence, then
+we <CODE>accumulate</CODE> the result with <CODE>+</CODE>.  It's easier to say in Scheme:
+ 
+<PRE>(define (<A NAME="g22"></A>add-numbers sent)
+  (accumulate + (keep number? sent)))
+ 
+&gt; (add-numbers '(4 calling birds 3 french hens 2 turtle doves))
+9
+ 
+&gt; (add-numbers '(1 for the money 2 for the show 3 to get ready
+		   and 4 to go))
+10
+</PRE>
+
+<P>We also have enough tools to write a version of the <A NAME="g23"></A><CODE>count</CODE> procedure,
+which finds the number of words in a sentence or the number of letters in a
+word.  First, we'll define a procedure <CODE>always-one</CODE> that returns 1 no
+matter what its argument is.  We'll <CODE>every always-one</CODE> over our argument
+sentence,<A NAME="text5" HREF="higher.html#ft5">[5]</A> which will result in a sentence of as
+many ones as there were words in the original sentence.  Then we can use
+<CODE>accumulate</CODE> with <CODE>+</CODE> to add up the ones.  This is a slightly
+roundabout approach; later we'll see a more natural way to find the <CODE>count</CODE> of a sentence.
+ 
+<PRE>(define (<A NAME="g24"></A>always-one arg)
+  1)
+
+(define (<A NAME="g25"></A>count sent)
+  (accumulate + (every always-one sent)))
+
+&gt; (count '(the continuing story of bungalow bill))
+6
+</PRE>
+ 
+You can now understand the <CODE>acronym</CODE> procedure from Chapter 1:
+ 
+<PRE>(define (<A NAME="g26"></A>acronym phrase)
+  (accumulate word (every first (keep real-word? phrase))))
+
+&gt; (acronym '(reduced instruction set computer))
+RISC
+
+&gt; (acronym '(structure and interpretation of computer programs))
+SICP
+</PRE>
+
+<A name="whichHOF">
+<P><H2>Choosing the Right Tool</H2>
+
+<P>So far you've seen three higher-order functions: <A NAME="g27"></A><CODE>every</CODE>,
+<A NAME="g28"></A><CODE>keep</CODE>, and <A NAME="g29"></A><CODE>accumulate</CODE>.  How do you decide which one to
+use for a particular problem?  
+
+<P><CODE>Every</CODE> transforms each element of a word or sentence individually.  The
+result sentence usually contains as many elements as the
+argument.<A NAME="text6" HREF="higher.html#ft6">[6]</A>
+
+<P><CENTER><IMG SRC="../ss-pics/every.jpg" ALT="figure: every"></CENTER>
+
+<P><CODE>Keep</CODE> selects certain elements of a word or sentence and discards the
+others.  The elements of the result are elements of the argument, without
+transformation, but the result may be smaller than the original.
+
+<P><CENTER><IMG SRC="../ss-pics/keep.jpg" ALT="figure: keep"></CENTER>
+
+<P><CODE>Accumulate</CODE> transforms the entire word or sentence into a single result
+by combining all of the elements in some way.
+
+<P><CENTER><IMG SRC="../ss-pics/accumulate.jpg" ALT="figure: accumulate"></CENTER>
+
+<P>These three pictures represent graphically the differences in the meanings
+of <CODE>every</CODE>, <CODE>keep</CODE>, and <CODE>accumulate</CODE>.  In the pictures, we're
+applying these higher-order procedures to sentences, but don't forget that
+we could have drawn similar pictures in which the higher-order procedures
+process the letters of a word.
+
+<P>Here's another way to compare these three higher-order functions:
+
+<P><P>
+<TABLE><THEAD><STRONG><TR><TH>function<TH>purpose<TH>first
+argument is a &hellip;</STRONG>
+<TBODY>
+<TR><TD><CODE>every</CODE><TD>transform&emsp;<TD>one-argument
+<EM>transforming</EM> function
+<TR><TD><CODE>keep</CODE><TD>select<TD>one-argument <EM>predicate</EM>
+function
+<TR><TD><CODE>accumulate</CODE>&emsp;<TD>combine<TD>two-argument
+<EM>combining</EM> function
+</TABLE>
+
+
+<P><P>
+To help you understand these differences, we'll look at specific examples
+using each of them, with each example followed by an equivalent computation
+done without the higher-order procedure.  Here is an example for <CODE>every</CODE>:
+
+<P><PRE>&gt; (every double 'girl)
+(GG II RR LL)
+
+&gt; (se (double 'g)
+      (double 'i)
+      (double 'r)
+      (double 'l))
+(GG II RR LL)
+</PRE>
+
+<P>
+
+<P>You can, if you like, think of the first of these expressions
+as abbreviating the second.
+
+<P>
+
+<P>An expression using <CODE>keep</CODE> can also be replaced with an expression that
+performs the same computation without using <CODE>keep</CODE>.  This time it's a
+little messier:
+
+<P>
+
+<P><PRE>&gt; (keep even? '(1 2 3 4 5))
+(2 4)
+
+&gt; (se (if (even? 1) 1 '())
+      (if (even? 2) 2 '())
+      (if (even? 3) 3 '())
+      (if (even? 4) 4 '())
+      (if (even? 5) 5 '()))
+(2 4)
+</PRE>
+
+<P>
+Here's how an <CODE>accumulate</CODE> can be expressed the long way:
+
+<P><PRE>&gt; (accumulate word '(a c l u))
+ACLU
+
+&gt; (word 'a (word 'c (word 'l 'u)))
+ACLU
+</PRE>
+
+<P>(Of course <CODE>word</CODE> will accept any number of arguments, so we
+could have computed the same result with all four letters as arguments to
+the same invocation.  But the version we've shown here indicates how
+<CODE>accumulate</CODE> actually works; it combines the elements one by one.)
+
+<P><H2>First-Class Functions and First-Class Sentences</H2>
+
+<P>If Scheme (or any dialect of Lisp) is your first programming language,
+having procedures that operate on entire sentences at once may not seem like
+a big deal.  But if you used to program in some lesser language, you're
+probably accustomed to writing something like <CODE>first-letters</CODE> as a <EM>loop</EM> in which you have some variable named <CODE>I</CODE> and you carry out some
+sequence of steps for <CODE>I=1</CODE>, <CODE>I=2</CODE>, and so on, until you get to <CODE>N</CODE>, the number of elements.  The use of higher-order functions allows us to
+express this problem all at once, rather than as a sequence of events.  Once
+you're accustomed to the Lisp way of thinking, you can tell yourself &quot;just
+take <CODE>every first</CODE> of the sentence,&quot; and that feels like a single step,
+not a complicated task.
+
+<P>Two aspects of Scheme combine to permit this mode of expression.  One,
+which we've mentioned earlier, is that sentences are first-class data.
+You can use an entire sentence as an argument to a procedure.  You can type a
+quoted sentence in, or you can compute a sentence by putting words together.
+
+<P>The second point is that functions are also first-class.  This lets us write
+a procedure like <CODE>pigl</CODE> that applies to a single word, and then
+combine that with <CODE>every</CODE> to translate an entire sentence to Pig Latin.
+If Scheme didn't have first-class functions, we couldn't have general-purpose
+tools like <CODE>keep</CODE> and <CODE>every</CODE>, because we couldn't say which
+function to extend to all of a sentence.  You'll see later that without <CODE>every</CODE> it would still be possible to write a specific <CODE>pigl-sent</CODE>
+procedure and separately write a <CODE>first-letters</CODE> procedure.  But the
+ability to use a procedure as argument to another procedure lets us <EM>generalize</EM> the idea of &quot;apply this function to every word of the
+sentence.&quot;
+
+<P><H2><CODE><B>Repeated</B></CODE></H2>
+
+<P>All the higher-order functions you've seen so far take functions as
+arguments, but none of them have functions as return values.  That is,
+we have machines that can take machines in their input hoppers, but now
+we'd like to think about machines that drop <EM>other machines</EM> out of
+their output chutes&mdash;machine factories, so to speak.
+<A NAME="repeated"></A>
+
+<P>In the following example, the procedure <A NAME="g30"></A><CODE>repeated</CODE> returns a procedure:
+ 
+<PRE>&gt; ((repeated bf 3) '(she came in through the bathroom window))
+(THROUGH THE BATHROOM WINDOW)
+ 
+&gt; ((repeated plural 4) 'computer)
+COMPUTERSSSS
+ 
+&gt; ((repeated square 2) 3)
+81
+ 
+&gt; (define (<A NAME="g31"></A>double sent)
+    (se sent sent))
+ 
+&gt; ((repeated double 3) '(banana))
+(BANANA BANANA BANANA BANANA BANANA BANANA BANANA BANANA)
+</PRE>
+ 
+The procedure <CODE>repeated</CODE> takes two arguments, a procedure and a number,
+and returns a new procedure.  The returned procedure is one that invokes the
+original procedure repeatedly.  For example, <CODE>(repeated bf 3)</CODE>
+returns a function that takes the butfirst of the butfirst of the
+butfirst of its argument.
+ 
+Notice that all our examples start with two open parentheses.  If we just
+invoked <CODE>repeated</CODE> at the Scheme prompt, we would get back a procedure,
+like this:
+ 
+<PRE>&gt; (repeated square 4)
+#&lt;PROCEDURE>
+</PRE>
+ 
+The procedure that we get back isn't very interesting by itself, so
+we invoke it, like this:
+ 
+<PRE>&gt; ((repeated square 4) 2)
+65536
+</PRE>
+ 
+To understand this expression, you must think carefully about its
+two subexpressions.  Two subexpressions?  Because there are two open
+parentheses next to each other, it would be easy to ignore one of them and
+therefore think of the expression as having four atomic subexpressions.  But
+in fact it has only two.  The first subexpression, <CODE>(repeated square 4)</CODE>, has a procedure as its value.  The second
+subexpression, <CODE>2</CODE>, has a number as its value.  The value of the entire
+expression comes from applying the procedure to the number.
+ 
+All along we've been saying that you evaluate a compound expression in two
+steps:  First, you evaluate all the subexpressions.  Then you apply the
+first value, which has to be a procedure, to the rest of the values.  But
+until now the first subexpression has always been just a single word, the
+name of a procedure.  Now we see that the first expression might be an
+invocation of a higher-order function, just as any of the argument
+subexpressions might be function invocations.
+ 
+We can use <CODE>repeated</CODE> to define <A NAME="g32"></A><CODE>item</CODE>, which returns a particular
+element of a sentence:
+ 
+<PRE>(define (<A NAME="g33"></A>item n sent)
+  (first ((repeated bf (- n 1)) sent)))
+ 
+&gt; (item 1 '(a day in the life))
+A
+ 
+&gt; (item 4 '(a day in the life))
+THE
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>Some people seem to fall in love with <CODE>every</CODE> and try to use it in
+all problems, even when <CODE>keep</CODE> or <CODE>accumulate</CODE> would be more
+appropriate.
+
+<P>If you find yourself using a predicate function as the first argument to
+<CODE>every</CODE>, you almost certainly mean to use <CODE>keep</CODE> instead.  For
+example, we want to write a procedure that determines whether any of the
+words in its argument sentence are numbers:
+
+<P><PRE>(define (any-numbers? sent)                  ;; wrong!
+  (accumulate or (every number? sent)))
+</PRE>
+
+<P>This is wrong for two reasons.  First, since Boolean values aren't words,
+they can't be members of sentences:
+
+<P><PRE>&gt; (sentence #T #F)
+ERROR: ARGUMENT TO SENTENCE NOT A WORD OR SENTENCE: #F
+
+&gt; (every number? '(a b 2 c 6))
+ERROR: ARGUMENT TO SENTENCE NOT A WORD OR SENTENCE: #T
+</PRE>
+
+<P>Second, even if you could have a sentence of Booleans, Scheme doesn't allow
+a special form, such as <CODE>or</CODE>, as the argument to a higher-order
+function.<A NAME="text7" HREF="higher.html#ft7">[7]</A> Depending on your version of Scheme,
+the incorrect <CODE>any-numbers?</CODE> procedure might give an error message about
+either of these two problems.
+
+<P>Instead of using <CODE>every</CODE>, select the numbers from the argument and count
+them:
+
+<P><PRE>(define (<A NAME="g34"></A>any-numbers? sent)
+  (not (empty? (keep number? sent))))
+</PRE>
+
+<P>The <CODE>keep</CODE> function always returns a result of the same type (i.e.,
+word or sentence) as its second argument.  This makes sense because if you're
+selecting a subset of the words of a sentence, you want to end up with a
+sentence; but if you're selecting a subset of the letters of a word, you
+want a word.  <CODE>Every</CODE>, on the other hand, always returns a sentence.
+You might think that it would make more sense for <CODE>every</CODE> to return a
+word when its second argument is a word.  Sometimes that <EM>is</EM> what you
+want, but sometimes not.  For example:
+
+<P><A NAME="spelldigit"></A>
+<PRE>(define (<A NAME="g35"></A>spell-digit digit)
+  (item (+ 1 digit)
+	'(zero one two three four five six seven eight nine)))
+
+&gt; (every spell-digit 1971)
+(ONE NINE SEVEN ONE)
+</PRE>
+
+<P>In the cases where you do want a word, you can just <CODE>accumulate word</CODE> the sentence that <CODE>every</CODE> returns.
+
+<P>
+<P>Remember that <CODE>every</CODE> expects its first argument to be a function of
+just one argument.  If you invoke <CODE>every</CODE> with a function such as <CODE>quotient</CODE>, which expects two arguments, you will get an error message from
+<CODE>quotient</CODE>, complaining that it only got one argument and wanted to get
+two.
+
+<P>Some people try to get around this by saying things like
+
+<P><PRE>(every (quotient 6) '(1 2 3))                ;; wrong!
+</PRE>
+
+<P>This is a sort of wishful thinking.  The intent is that Scheme
+should interpret the first argument to <CODE>every</CODE> as a fill-in-the-blank
+template, so that <CODE>every</CODE> will compute the values of
+
+<P><PRE>(quotient 6 1)
+(quotient 6 2)
+(quotient 6 3)
+</PRE>
+
+<P>But of course what Scheme really does is the same thing it always
+does:  It evaluates the argument expressions, then invokes <CODE>every</CODE>.  So
+Scheme will try to compute <CODE>(quotient 6)</CODE> and will give an error message.
+
+<P>We picked <CODE>quotient</CODE> for this example because it requires exactly two
+arguments.  Many Scheme primitives that ordinarily take two arguments,
+however, will accept only one.  Attempting the same wishful thinking with
+one of these procedures is still wrong, but the error message is different.
+For example, suppose you try to add 3 to each of several numbers this way:
+
+<P><PRE>(every (+ 3) '(1 2 3))                       ;; wrong!
+</PRE>
+
+<P>The first argument to <CODE>every</CODE> in this case isn't &quot;the
+procedure that adds 3,&quot; but the result returned by invoking <CODE>+</CODE> with
+the single argument <CODE>3</CODE>.  <CODE>(+ 3)</CODE> returns the number <CODE>3</CODE>, which
+isn't a procedure.  So you will get an error message like &quot;Attempt to apply
+non-procedure 3.&quot;
+
+<P>The idea behind this mistake&mdash;looking for a way to &quot;specialize&quot; a
+two-argument procedure by supplying one of the arguments in advance&mdash;is
+actually a good one.  In the next chapter we'll introduce a new mechanism
+that does allow such specialization.
+
+<P>If the procedure you use as the argument to <CODE>every</CODE> returns an empty
+sentence, then you may be surprised by the results:
+
+<P><PRE>(define (<A NAME="g36"></A>beatle-number n)
+  (if (or (&lt; n 1) (&gt; n 4))
+      '()
+      (item n '(john paul george ringo))))
+
+&gt; (beatle-number 3)
+GEORGE
+
+&gt; (beatle-number 5)
+()
+
+&gt; (every beatle-number '(2 8 4 0 1))
+(PAUL RINGO JOHN)
+</PRE>
+
+<P>What happened to the <CODE>8</CODE> and the <CODE>0</CODE>?  Pretend that <CODE>every</CODE> didn't exist, and you had to do it the hard way:
+
+<P><PRE>(se (beatle-number 2) (beatle-number 8) (beatle-number 4)
+    (beatle-number 0) (beatle-number 1))
+</PRE>
+
+<P>Using result replacement, we would get
+
+<P><PRE>(se 'paul '() 'ringo '() 'john)
+</PRE>
+
+<P>which is just <CODE>(PAUL RINGO JOHN)</CODE>.
+
+<P>On the other hand, if <CODE>every</CODE>'s argument procedure returns an empty <EM>word,</EM> it will appear in the result.
+
+<P><PRE>&gt; (every bf '(i need you))
+(&quot;&quot; EED OU)
+</PRE>
+
+<P>The sentence returned by <CODE>every</CODE> has three words in it: the
+empty word, <CODE>eed</CODE>, and <CODE>ou</CODE>.
+
+<P>Don't confuse 
+
+<P><PRE>(first '(one two three four))
+</PRE>
+
+<P>with
+
+<P><PRE>(every first '(one two three four))
+</PRE>
+
+<P>In the first case, we're applying the procedure <CODE>first</CODE> to a
+sentence; in the second, we're applying <CODE>first</CODE> four separate times,
+to each of the four words separately.
+
+<P>What happens if you use a one-word sentence or one-letter word as argument
+to <CODE>accumulate</CODE>?  It returns that word or that letter, without even
+invoking the given procedure.  This makes sense if you're using something
+like <CODE>+</CODE> or <CODE>max</CODE> as the accumulator, but it's disconcerting that
+
+<P><PRE>(accumulate se '(one-word))
+</PRE>
+
+<P>returns the <EM>word</EM> <CODE>one-word</CODE>.
+
+<P> 
+What happens if you give <CODE>accumulate</CODE> an empty sentence or word?
+<CODE>Accumulate</CODE> accepts empty arguments for some combiners, but not for
+others:
+
+<P><PRE>&gt; (accumulate + '())
+0
+
+&gt; (accumulate max '())
+ERROR: CAN'T ACCUMULATE EMPTY INPUT WITH THAT COMBINER
+</PRE>
+
+<P>The combiners that can be used with an empty sentence or word are
+<CODE>+</CODE>, <CODE>*</CODE>, <CODE>word</CODE>, and <CODE>sentence</CODE>.  <CODE>Accumulate</CODE> checks
+specifically for one of these combiners.
+
+<P>Why should these four procedures, and no others, be allowed to <CODE>accumulate</CODE> an empty sentence or word?  The difference between these and
+other combiners is that you can invoke them with no arguments, whereas <CODE>max</CODE>, for example, requires at least one number:
+
+<P><PRE>&gt; (+)
+0
+
+&gt; (max)
+ERROR: NOT ENOUGH ARGUMENTS TO #&lt;PROCEDURE&gt;.
+</PRE>
+
+<P><CODE>Accumulate</CODE> actually invokes the combiner with no arguments
+in order to find out what value to return for an empty sentence or word.
+We would have liked to implement <CODE>accumulate</CODE> so that <EM>any</EM>
+procedure that can be invoked with no arguments would be accepted as a
+combiner to accumulate the empty sentence or word.  Unfortunately, Scheme
+does not provide a way for a program to ask, &quot;How many arguments will this
+procedure accept?&quot; The best we could do was to build a particular set of
+zero-argument-okay combiners into the definition of <CODE>accumulate</CODE>.
+
+<P>Don't think that the returned value for an empty argument is always zero or
+empty.
+
+<P><PRE>&gt; (accumulate * '())
+1
+</PRE>
+
+<P>The explanation for this behavior is that any function that works
+with no arguments returns its <EM>identity element</EM> in that case.
+What's an identity element?  The function <CODE>+</CODE> has the identity element
+<CODE>0</CODE> because <CODE>(+</CODE> <EM>anything</EM> <CODE>0)</CODE> returns the <EM>anything.</EM> Similarly, the empty word is the identity element for <CODE>word</CODE>.  In general, a function's identity element has the property that when
+you invoke the function with the identity element and something else as
+arguments, the return value is the something else.  It's a Scheme convention
+that a procedure with an identity element returns that element when invoked
+with no arguments.<A NAME="text8" HREF="higher.html#ft8">[8]</A>
+
+<P>The use of two consecutive open parentheses to invoke the procedure
+<A NAME="g37"></A>
+returned by a procedure is a strange-looking notation:
+
+<P><PRE>((repeated bf 3) 987654)
+</PRE>
+
+<P>Don't confuse this with the similar-looking <CODE>cond</CODE> notation,
+in which the outer parentheses have a special meaning (delimiting a <CODE>cond</CODE> clause).  Here, the parentheses have their usual meaning.  The inner
+parentheses invoke the procedure <CODE>repeated</CODE> with arguments <CODE>bf</CODE> and
+<CODE>3</CODE>.  The value of that expression is a procedure.  It doesn't have a
+name, but for the purposes of this paragraph let's pretend it's called <CODE>bfthree</CODE>.  Then the outer parentheses are basically saying <CODE>(bfthree 987654)</CODE>; they apply the unnamed procedure to the argument <CODE>987654</CODE>.
+
+<P>In other words, there are two sets of parentheses because there are two
+functions being invoked: <CODE>repeated</CODE> and the function returned by
+<CODE>repeated</CODE>.  So don't say
+
+<P><PRE>(repeated bf 3 987654)                       ;; wrong
+</PRE>
+
+<P>just because it looks more familiar.  <CODE>Repeated</CODE> isn't a
+function of three arguments.
+
+<P><H2>Boring Exercises</H2>
+
+<P><B>8.1</B>&nbsp;&nbsp;What does Scheme return as the value of each of the following expressions?
+Figure it out for yourself before you try it on the computer.
+
+<P><PRE>
+&gt; (every last '(algebra purple spaghetti tomato gnu))
+
+&gt; (keep number? '(one two three four))
+
+&gt; (accumulate * '(6 7 13 0 9 42 17))
+
+&gt; (member? 'h (keep vowel? '(t h r o a t)))
+
+&gt; (every square (keep even? '(87 4 7 12 0 5)))
+
+&gt; (accumulate word (keep vowel? (every first '(and i love her))))
+
+&gt; ((repeated square 0) 25)
+
+&gt; (every (repeated bl 2) '(good day sunshine))
+</PRE>
+
+<P><B>8.2</B>&nbsp;&nbsp;Fill in the blanks in the following Scheme interactions:
+
+<P><PRE>&gt; (______ vowel? 'birthday)
+IA
+
+&gt; (______ first '(golden slumbers))
+(G S)
+
+&gt; (______ '(golden slumbers))
+GOLDEN
+
+&gt; (______ ______ '(little child))
+(E D)
+
+&gt; (______ ______ (______ ______ '(little child)))
+ED
+
+&gt; (______ + '(2 3 4 5))
+(2 3 4 5)
+
+&gt; (______ + '(2 3 4 5))
+14
+</PRE>
+
+<P>
+<B>8.3</B>&nbsp;&nbsp;Describe each of the following functions in English.  Make sure to include a
+description of the domain and range of each function.  Be as precise as
+possible; for example, &quot;the argument must be a function of one numeric
+argument&quot; is better than &quot;the argument must be a function.&quot;
+
+<P><PRE>(define (f a)
+  (keep even? a))
+
+(define (g b)
+  (every b '(blue jay way)))
+
+</PRE>
+
+<P>
+<PRE>(define (h c d)
+  (c (c d)))
+
+(define (i e)
+  (/ (accumulate + e) (count e)))
+
+accumulate
+
+sqrt
+
+repeated
+
+(repeated sqrt 3)
+
+(repeated even? 2)
+
+(repeated first 2)
+
+(repeated (repeated bf 3) 2)
+</PRE>
+
+<P>
+<P>
+<H2>Real Exercises</H2>
+<P>
+Note: Writing helper procedures may be useful in solving some of these
+problems.  <EM>If you read Part IV before this, do not use recursion
+in solving these problems; use higher order functions instead.</EM>
+
+<a name="hofex">
+
+<P><B>8.4</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g38"></A>choose-beatles</CODE> that takes a predicate
+function as its argument and returns a sentence of just those Beatles (John,
+Paul, George, and Ringo) that satisfy the predicate.  For example:
+
+<P><PRE>(define (<A NAME="g39"></A>ends-vowel? wd) (vowel? (last wd)))
+
+(define (<A NAME="g40"></A>even-count? wd) (even? (count wd)))
+
+&gt; (choose-beatles ends-vowel?)
+(GEORGE RINGO)
+
+&gt; (choose-beatles even-count?)
+(JOHN PAUL GEORGE)
+</PRE>
+
+<P>
+
+
+<P><B>8.5</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g41"></A>transform-beatles</CODE> that takes a procedure as an
+argument, applies it to each of the Beatles, and returns the results in a
+sentence:
+
+<P><PRE>(define (<A NAME="g42"></A>amazify name)
+  (word 'the-amazing- name))
+</PRE>
+
+<P>
+
+<P><PRE>&gt; (transform-beatles amazify)
+(THE-AMAZING-JOHN THE-AMAZING-PAUL THE-AMAZING-GEORGE
+ THE-AMAZING-RINGO)
+
+&gt; (transform-beatles butfirst)
+(OHN AUL EORGE INGO)
+</PRE>
+
+<P>
+
+<B>8.6</B>&nbsp;&nbsp;When you're talking to someone over a noisy radio connection, you sometimes
+have to spell out a word in order to get the other person to understand it.
+But names of letters aren't that easy to understand either, so there's a
+standard code in which each letter is represented by a particular word that
+starts with the letter.  For example, instead of &quot;B&quot; you say &quot;bravo.&quot;
+
+<P>Write a procedure <CODE><A NAME="g43"></A>words</CODE> that takes a word as its argument and
+returns a sentence of the names of the letters in the word:
+
+<P><PRE>&gt; (words 'cab)
+(CHARLIE ALPHA BRAVO)
+</PRE>
+
+<P>(You may make up your own names for the letters or look up the
+standard ones if you want.)
+
+<P>Hint: Start by writing a helper procedure that figures out the name for a
+single letter.
+
+
+<P>
+<B>8.7</B>&nbsp;&nbsp;[<A HREF="../ssch14/recur-patterns.html#lettcrec">14.5</A>]<A NAME="text9" HREF="higher.html#ft9">[9]</A>
+Write a procedure <CODE><A NAME="g44"></A>letter-count</CODE> that takes a sentence as its
+argument and returns the total number of letters in the sentence:
+<A NAME="lettcount"></A>
+
+<P><PRE>&gt; (letter-count '(fixing a hole))
+11
+</PRE>
+
+<P>
+<B>8.8</B>&nbsp;&nbsp;[<A HREF="../ssch12/leap.html#exaggrec">12.5</A>]
+Write an <CODE><A NAME="g45"></A>exaggerate</CODE> procedure which exaggerates sentences:
+<A NAME="exagg"></A>
+
+<P><PRE>&gt; (exaggerate '(i ate 3 potstickers))
+(I ATE 6 POTSTICKERS)
+
+&gt; (exaggerate '(the chow fun is good here))
+(THE CHOW FUN IS GREAT HERE)
+</PRE>
+
+<P>It should double all the numbers in the sentence, and it should replace
+&quot;good&quot; with &quot;great,&quot; &quot;bad&quot; with &quot;terrible,&quot; and anything else you
+can think of.  
+
+<P>
+<B>8.9</B>&nbsp;&nbsp;What procedure can you use as the first argument to <CODE>every</CODE> so that for
+any sentence used as the second argument, <CODE>every</CODE> returns that sentence?
+
+<P>What procedure can you use as the first argument to <CODE>keep</CODE> so that for
+any sentence used as the second argument, <CODE>keep</CODE> returns that sentence?
+
+<P>What procedure can you use as the first argument to <CODE>accumulate</CODE> so that
+for any sentence used as the second argument, <CODE>accumulate</CODE> returns that
+sentence?
+
+
+<P>
+<B>8.10</B>&nbsp;&nbsp;Write a predicate <CODE><A NAME="g46"></A>true-for-all?</CODE> that takes two arguments, a
+predicate procedure and a sentence.  It should return <CODE>#t</CODE> if the
+predicate argument returns true for <EM>every</EM> word in the sentence.
+<A NAME="trueforall"></A>
+
+<P><PRE>&gt; (true-for-all? even? '(2 4 6 8))
+#T
+
+&gt; (true-for-all? even? '(2 6 3 4))
+#F
+</PRE>
+
+<P>
+<B>8.11</B>&nbsp;&nbsp;[<A HREF="../ssch12/leap.html#gparec">12.6</A>]
+Write a GPA procedure.  It should take a sentence of grades as its argument
+and return the corresponding grade point average:
+<A NAME="gpa"></A>
+
+<P><PRE>&gt; (<A NAME="g47"></A>gpa '(A A+ B+ B))
+3.67
+</PRE>
+
+<P>Hint: write a helper procedure <CODE><A NAME="g48"></A>base-grade</CODE> that takes
+a grade as argument and returns 0, 1, 2, 3, or 4, and another helper
+procedure <CODE>grade-modifier</CODE> that returns &minus;.33, 0, or .33, depending on
+whether the grade has a minus, a plus, or neither.
+
+
+<P>
+<B>8.12</B>&nbsp;&nbsp;[<A HREF="../ssch11/recursion.html#countumsrec">11.2</A>]
+When you teach a class, people will get distracted if you say &quot;um&quot; too many
+times.  Write a <CODE><A NAME="g49"></A>count-ums</CODE> that counts the number of times &quot;um&quot;
+appears in a sentence:
+<A NAME="countums"></A>
+
+<P><PRE>&gt; (count-ums
+   '(today um we are going to um talk about functional um programming))
+3
+</PRE>
+
+<P>
+<B>8.13</B>&nbsp;&nbsp;[<A HREF="../ssch11/recursion.html#unspellrec">11.3</A>]
+Write a procedure <CODE><A NAME="g50"></A>phone-unspell</CODE> that takes a spelled version of
+a phone number, such as <CODE>POPCORN</CODE>, and returns the real phone number, in
+this case <CODE>7672676</CODE>.  You will need to write a helper procedure that
+uses an 8-way <CODE>cond</CODE> expression to translate a single letter into a
+digit.
+<A NAME="unspell"></A>
+
+
+<P>
+<B>8.14</B>&nbsp;&nbsp;Write the procedure <CODE><A NAME="g51"></A>subword</CODE> that takes three arguments: a
+word, a starting position number, and an ending position number.  It should
+return the subword containing only the letters between the specified
+positions:
+
+<P><PRE>&gt; (subword 'polythene 5 8)
+THEN
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="higher.html#text1">[1]</A> Like all the procedures in this book that deal with words and
+sentences, <CODE>every</CODE> and the other procedures in this chapter
+are part of our extensions to Scheme.  Later, in Chapter 17, we'll
+introduce the standard Scheme equivalents.<P>
+<A NAME="ft2" HREF="higher.html#text2">[2]</A> Talking about <CODE>every</CODE> strains our
+resolve to distinguish functions from the procedures that implement them.
+Is the argument to <CODE>every</CODE> a function or a procedure?  If we think of
+<CODE>every</CODE> itself as a procedure&mdash;that is, if we're focusing on how it
+does its job&mdash;then of course we must say that it does its job by repeatedly
+invoking the <EM>procedure</EM> that we supply as an argument.  But it's
+equally valid for us to focus attention on the function that the <CODE>every</CODE>
+procedure implements, and that function takes <EM>functions</EM> as
+arguments.<P>
+<A NAME="ft3" HREF="higher.html#text3">[3]</A> You can get in trouble mathematically by trying to define a
+function whose domain includes <EM>all</EM> functions, because applying such
+a function to itself can lead to a paradox.  In programming, the
+corresponding danger is that applying a higher-order procedure to <EM>itself</EM> might result in a program that runs forever.<P>
+<A NAME="ft4" HREF="higher.html#text4">[4]</A> Some recipes may seem to include other
+recipes, because they say things like &quot;add pesto (recipe on p. 
+12).&quot; But this is just composition of functions; the <EM>result</EM>
+of the pesto procedure is used as an argument to this recipe.  The
+pesto recipe itself is not an ingredient.<P>
+<A NAME="ft5" HREF="higher.html#text5">[5]</A> We mean, of course, &quot;We'll invoke <CODE>every</CODE> with the
+procedure <CODE>always-one</CODE> and our argument sentence as its two arguments.&quot;
+After you've been programming computers for a while, this sort of abuse of
+English will come naturally to you.<P>
+<A NAME="ft6" HREF="higher.html#text6">[6]</A> What we mean by &quot;usually&quot; is that <CODE>every</CODE> is most
+often used with an argument function that returns a single word.  If the
+function returns a sentence whose length might not be one, then the number
+of words in the overall result could be anything!<P>
+<A NAME="ft7" HREF="higher.html#text7">[7]</A> As we said in Chapter 4, special forms aren't
+procedures, and aren't first-class.<P>
+<A NAME="ft8" HREF="higher.html#text8">[8]</A> PC Scheme returns zero for an invocation of <CODE>max</CODE> with no arguments, but that's the wrong answer.  If anything, the
+answer would have to be &minus;&infin;.<P>
+<A NAME="ft9" HREF="higher.html#text9">[9]</A> Exercise <A HREF="../ssch14/recur-patterns.html#lettcrec">14.5</A> in Part IV asks you to solve this
+same problem using recursion.  Here we are asking you to use
+higher-order functions.  Whenever we pose the same problem in both parts, we'll
+cross-reference them in brackets as we did here.  When you see the problem
+for the second time, you might want to consult your first solution for ideas.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="part3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch9/lambda.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch8/part3.html b/js/games/nluqo.github.io/~bh/ssch8/part3.html
new file mode 100644
index 0000000..859a67b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch8/part3.html
@@ -0,0 +1,108 @@
+<P>
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science, Part 8: Functions as Data</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Part III</H2>
+<H1>Functions as Data</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch08.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch7/variables.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="higher.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR><BIG>
+
+<P>By now you're accustomed to the idea of expressing a computational process
+in terms of the function whose value you want to compute, rather than in
+terms of a sequence of actions.  But you probably think of a function (or
+the procedure that embodies it) as something very different from the words,
+sentences, numbers, or other data that serve as arguments to the functions.
+It's like the distinction between verbs and nouns in English:  A verb
+represents something <EM>to do,</EM> while a noun represents something <EM>that is.</EM>
+
+<P>In this part of the book our goal is to overturn that distinction.
+
+<P>Like many big ideas, this one seems simple at first.  All we're saying is
+that a function can have <EM>functions</EM> as its domain or range.  One
+artificially simple example that you've seen earlier was the
+<CODE>number-of-arguments</CODE> function in Chapter 2.  That function
+takes a function as argument and returns a number.  It's not so different
+from <CODE>count</CODE>, which takes a word or sentence as argument and returns a
+number.
+
+<P>But you'll see that this idea leads to an enormous rise in the length and
+complexity of the processes you can express in a short procedure, because
+now a process can give rise to several other processes.  A typical example
+is the <CODE>acronym</CODE> procedure that we introduced in Chapter 1 and
+will examine now in more detail.  Instead of applying the <CODE>first</CODE>
+procedure to a single word, we use <CODE>first</CODE> as an argument to a procedure,
+<CODE>every</CODE>, that automatically applies it to every word of a sentence.  A
+single <CODE>every</CODE> process gives rise to several <CODE>first</CODE> processes.
+
+<P>The same idea of function as data allows us to write procedures that create
+and return new procedures.  At the beginning of Part II we showed a Scheme
+representation of a function that computes the third person singular of a
+verb.  Now, to illustrate the idea of function as data, we'll show how to
+represent in Scheme a function <CODE>make-conjugator</CODE> whose range is <EM>the
+whole family</EM> of verb-conjugation functions:
+
+<P><PRE>(define (make-conjugator prefix ending)
+  (lambda (verb) (sentence prefix (word verb ending))))
+</PRE>
+
+<P>Never mind the notation for now; the idea to think about is that
+we can use <CODE>make-conjugator</CODE> to create many functions similar to the <CODE>third-person</CODE> example of the Part II introduction:
+
+<P><PRE>&gt; (define third-person (make-conjugator 'she 's))
+
+&gt; (third-person 'program)
+(SHE PROGRAMS)
+
+&gt; (define third-person-plural-past (make-conjugator 'they 'ed))
+
+&gt; (third-person-plural-past 'play)
+(THEY PLAYED)
+
+&gt; (define second-person-future-perfect
+    (make-conjugator '(you will have) 'ed))
+
+&gt; (second-person-future-perfect 'laugh)
+(YOU WILL HAVE LAUGHED)
+</PRE>
+
+<P>We'll explore only a tiny fraction of the area opened up by the idea of
+allowing a program as data.  Further down the same road is the study of <EM>compilers</EM> and <EM>interpreters,</EM> the programs that translate your
+programs into instructions that computers can carry out.  A Scheme
+compiler is essentially a function whose domain is Scheme programs.
+
+<P>
+</BIG>
+<HR>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch7/variables.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="higher.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch9/bridge b/js/games/nluqo.github.io/~bh/ssch9/bridge
new file mode 100644
index 0000000..6d4cede
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch9/bridge
@@ -0,0 +1,254 @@
+\input bkmacs
+\projchap{Project: Scoring Bridge Hands}
+\write\toc{\begingroup\blskip{1}} %%% ends in leap.tex
+
+At the beginning of a game of bridge, each player assigns a value to his or
+her hand by counting {\it points.\/}  Bridge players use these points in the
+first part of the game, the ``bidding,'' to decide how high to bid.  (A
+bid is a promise about how well you'll do in the rest of the game.  If you
+succeed in meeting your bid you win, and if you don't meet the bid, you
+lose.)  For example, if you have fewer than six points, you generally don't
+bid anything at all.
+
+You're going to write a computer program to look at a bridge hand and decide
+how many points it's worth.  You won't have to know anything about the rest
+of the game; we'll tell you the rules for counting points.
+
+A bridge hand contains thirteen cards.  Each ace in the hand is worth four
+\justidx{bridge points}
+\justidx{points, bridge}
+points, each king is worth three points, each queen two points, and each
+jack one.  The other cards, twos through tens, have no point value.
+So if your hand has two aces, a king, two jacks, and eight other
+cards, it's worth thirteen points.
+
+A bridge hand might also have some ``distribution'' points, which are points
+having to do with the distribution of the thirteen cards among the four
+suits.  If your hand has only two cards of a particular suit, then it is
+worth an extra point.  If it has a ``singleton,'' only one card of a
+particular suit, that's worth two extra points.  A ``void,'' no cards in a
+particular suit, is worth three points.
+
+In our program, we'll represent a card by a word like {\tt h5} (five of
+hearts) or {\tt dk} (king of diamonds).\footnt{Why not {\tt 5h}?  Scheme
+words that begin with a digit but aren't numbers have to be surrounded with
+double-quote marks.  Putting the suit first avoids that.} A hand will be a
+sentence of cards, like this:
+
+{\prgex%
+(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3)
+}
+
+This hand is worth 14 points:\ ace of spades (4), plus queen of hearts
+(2), plus jack of hearts (1), plus king of clubs (3), plus king of diamonds
+(3), plus one more for having only two clubs.
+
+To find the suit of a card, we take its {\tt first}, and to find the rank, we
+take the {\tt butfirst}.  (Why not the {\tt last}?)
+
+We have a particular program structure in mind.  We'll describe all of the
+procedures you need to write; if you turn each description into a working
+procedure, then you should have a complete program.  In writing each
+procedure, take advantage of the ones you've already written.  Our
+descriptions are ordered {\it \idx{bottom-up}\/}, which means that for each
+procedure you will already have written the helper procedures you need.
+(This ordering will help you write the project, but it means that we're
+beginning with small details.  If we were describing a project to help you
+understand its structure, we'd do it in {\it \idx{top-down}\/} order,
+starting with the most general procedures.  We'll do that in the next
+chapter, in which we present a tic-tac-toe program as a larger Scheme
+programming example.)
+
+\function{Card-val}
+
+Write a procedure {\tt \ufun{card-val}} that takes a single card as its
+argument and returns the value of that card.
+
+{\prgex%
+> (card-val 'cq)
+2
+
+> (card-val 's7)
+0
+
+> (card-val 'ha)
+4
+}
+
+\solution
+{\prgex%
+(define (card-val card)
+  (cond ((equal? (bf card) 'a) 4)
+	((equal? (bf card) 'k) 3)
+	((equal? (bf card) 'q) 2)
+	((equal? (bf card) 'j) 1)
+	(else 0)))
+}
+@
+
+\function{High-card-points}
+
+Write a procedure {\tt \ufun{high-card-points}} that takes a hand as its
+argument and returns the total number of points from high cards in the
+hand.  (This procedure does {\it not\/} count distribution points.)
+
+{\prgex%
+> (high-card-points '(sa s10 hq ck c4))
+9
+
+> (high-card-points '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+13
+}
+
+\solution
+{\prgex%
+(define (high-card-points hand)
+  (accumulate + (every card-val hand)))
+}
+@
+
+\function{Count-suit}
+
+Write a procedure {\tt \ufun{count-suit}} that takes a suit and a hand as
+arguments and returns the number of cards in the hand with the given suit.
+
+{\prgex%
+> (count-suit 's '(sa s10 hq ck c4))
+2
+
+> (count-suit 'c '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+2
+
+> (count-suit 'd '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+5
+}
+
+\solution
+{\prgex%
+(define (count-suit suit hand)
+  (count (keep (lambda (card) (equal? (first card) suit)) hand)))
+}
+
+Thinking about domain and range really helps in this problem;
+there are many ways to get confused about what to use as argument
+to which helper function.  In particular, it's important to
+distinguish among the data types suit, card, and hand.
+@
+
+\function{Suit-counts}
+
+Write a procedure {\tt \ufun{suit-counts}} that takes a hand as its argument
+and returns a sentence containing the number of spades, the number of hearts,
+the number of clubs, and the number of diamonds in the hand.
+
+{\prgex%
+> (suit-counts '(sa s10 hq ck c4))
+(2 1 2 0)
+
+> (suit-counts '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+(5 3 2 3)
+
+> (suit-counts '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+(5 1 2 5)
+}
+
+\solution
+{\prgex%
+(define (suit-counts hand)
+  (every (lambda (suit) (count-suit suit hand))
+	 '(s h c d)))
+}
+
+This solution is not obvious, because the second argument to
+{\tt every} is a constant, rather than one of the original
+arguments.  Students may find it easier to understand this
+less elegant alternative:
+
+{\prgex%
+(define (suit-counts hand)
+  (se (count-suit 's hand)
+      (count-suit 'h hand)
+      (count-suit 'c hand)
+      (count-suit 'd hand)))
+}
+@
+
+\function{Suit-dist-points}
+
+Write {\tt \ufun{suit-dist-points}} that takes a number as its argument,
+interpreting it as the number of cards in a suit.  The procedure should
+return the number of distribution points your hand gets for having that
+number of cards in a particular suit.
+
+{\prgex%
+> (suit-dist-points 2)
+1
+
+> (suit-dist-points 7)
+0
+
+> (suit-dist-points 0)
+3
+}
+
+\solution
+{\prgex%
+(define (suit-dist-points n)
+  (if (<= n 2)
+      (- 3 n)
+      0))
+}
+
+\noindent or, the slightly less elegant way:
+
+{\prgex%
+(define (suit-dist-points n)
+  (cond ((= n 0) 3)
+	((= n 1) 2)
+	((= n 2) 1)
+	(else 0)))
+}
+@
+
+\function{Hand-dist-points}
+
+Write {\tt \ufun{hand-dist-points}}, which takes a hand as its argument and
+returns the number of distribution points the hand is worth.
+
+{\prgex%
+> (hand-dist-points '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+1
+
+> (hand-dist-points '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+3
+}
+
+\solution
+{\prgex%
+(define (hand-dist-points hand)
+  (accumulate + (every suit-dist-points (suit-counts hand))))
+}
+@
+
+\function{Bridge-val}
+
+Write a procedure {\tt \ufun{bridge-val}} that takes a hand as its argument
+and returns the total number of points that the hand is worth.
+
+{\prgex%
+> (bridge-val '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+14
+
+> (bridge-val '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+8
+}
+
+\solution
+{\prgex%
+(define (bridge-val hand)
+  (+ (high-card-points hand)
+     (hand-dist-points hand)))
+}
+@
+
+\bye
diff --git a/js/games/nluqo.github.io/~bh/ssch9/bridge.html b/js/games/nluqo.github.io/~bh/ssch9/bridge.html
new file mode 100644
index 0000000..a523d27
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch9/bridge.html
@@ -0,0 +1,200 @@
+<P>
+
+<P><HTML>
+<HEAD>
+<TITLE>Simply Scheme:Project: Scoring Bridge Hands</TITLE>
+</HEAD>
+<BODY>
+<CITE>Simply Scheme</CITE>:
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H1>Project: Scoring Bridge Hands</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch09.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="lambda.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch10/ttt.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+ 
+At the beginning of a game of bridge, each player assigns a value to his or
+her hand by counting <EM>points.</EM>  Bridge players use these points in the
+first part of the game, the &quot;bidding,&quot; to decide how high to bid.  (A
+bid is a promise about how well you'll do in the rest of the game.  If you
+succeed in meeting your bid you win, and if you don't meet the bid, you
+lose.)  For example, if you have fewer than six points, you generally don't
+bid anything at all.
+
+<P>You're going to write a computer program to look at a bridge hand and decide
+how many points it's worth.  You won't have to know anything about the rest
+of the game; we'll tell you the rules for counting points.
+
+<P>A bridge hand contains thirteen cards.  Each ace in the hand is worth four
+<A NAME="g1"></A>
+<A NAME="g2"></A>
+points, each king is worth three points, each queen two points, and each
+jack one.  The other cards, twos through tens, have no point value.
+So if your hand has two aces, a king, two jacks, and eight other
+cards, it's worth thirteen points.
+
+<P>A bridge hand might also have some &quot;distribution&quot; points, which are points
+having to do with the distribution of the thirteen cards among the four
+suits.  If your hand has only two cards of a particular suit, then it is
+worth an extra point.  If it has a &quot;singleton,&quot; only one card of a
+particular suit, that's worth two extra points.  A &quot;void,&quot; no cards in a
+particular suit, is worth three points.
+
+<P>In our program, we'll represent a card by a word like <CODE>h5</CODE> (five of
+hearts) or <CODE>dk</CODE> (king of diamonds).<A NAME="text1" HREF="bridge.html#ft1">[1]</A> A hand will be a
+sentence of cards, like this:
+
+<P><PRE>(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3)
+</PRE>
+
+<P>This hand is worth 14 points: ace of spades (4), plus queen of hearts
+(2), plus jack of hearts (1), plus king of clubs (3), plus king of diamonds
+(3), plus one more for having only two clubs.
+
+<P>To find the suit of a card, we take its <CODE>first</CODE>, and to find the rank, we
+take the <CODE>butfirst</CODE>.  (Why not the <CODE>last</CODE>?)
+
+<P>We have a particular program structure in mind.  We'll describe all of the
+procedures you need to write; if you turn each description into a working
+procedure, then you should have a complete program.  In writing each
+procedure, take advantage of the ones you've already written.  Our
+descriptions are ordered <EM>bottom-up</EM>, which means that for each
+procedure you will already have written the helper procedures you need.
+(This ordering will help you write the project, but it means that we're
+beginning with small details.  If we were describing a project to help you
+understand its structure, we'd do it in <EM>top-down</EM> order,
+starting with the most general procedures.  We'll do that in the next
+chapter, in which we present a tic-tac-toe program as a larger Scheme
+programming example.)
+
+<H3><CODE>Card-val</CODE></H3>
+
+<P>Write a procedure <CODE><A NAME="g3"></A>card-val</CODE> that takes a single card as its
+argument and returns the value of that card.
+
+<P><PRE>&gt; (card-val 'cq)
+2
+
+&gt; (card-val 's7)
+0
+
+&gt; (card-val 'ha)
+4
+</PRE>
+
+<H3><CODE>High-card-points</CODE></H3>
+
+<P>Write a procedure <CODE><A NAME="g4"></A>high-card-points</CODE> that takes a hand as its
+argument and returns the total number of points from high cards in the
+hand.  (This procedure does <EM>not</EM> count distribution points.)
+
+<P><PRE>&gt; (high-card-points '(sa s10 hq ck c4))
+9
+
+&gt; (high-card-points '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+13
+</PRE>
+
+<H3><CODE>Count-suit</CODE></H3>
+
+<P>Write a procedure <CODE><A NAME="g5"></A>count-suit</CODE> that takes a suit and a hand as
+arguments and returns the number of cards in the hand with the given suit.
+
+<P><PRE>&gt; (count-suit 's '(sa s10 hq ck c4))
+2
+
+&gt; (count-suit 'c '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+2
+
+&gt; (count-suit 'd '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+5
+</PRE>
+
+<H3><CODE>Suit-counts</CODE></H3>
+
+<P>Write a procedure <CODE><A NAME="g6"></A>suit-counts</CODE> that takes a hand as its argument
+and returns a sentence containing the number of spades, the number of hearts,
+the number of clubs, and the number of diamonds in the hand.
+
+<P><PRE>&gt; (suit-counts '(sa s10 hq ck c4))
+(2 1 2 0)
+
+&gt; (suit-counts '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+(5 3 2 3)
+
+&gt; (suit-counts '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+(5 1 2 5)
+</PRE>
+
+<H3><CODE>Suit-dist-points</CODE></H3>
+
+<P>Write <CODE><A NAME="g7"></A>suit-dist-points</CODE> that takes a number as its argument,
+interpreting it as the number of cards in a suit.  The procedure should
+return the number of distribution points your hand gets for having that
+number of cards in a particular suit.
+
+<P><PRE>&gt; (suit-dist-points 2)
+1
+
+&gt; (suit-dist-points 7)
+0
+
+&gt; (suit-dist-points 0)
+3
+</PRE>
+
+<H3><CODE>Hand-dist-points</CODE></H3>
+
+<P>Write <CODE><A NAME="g8"></A>hand-dist-points</CODE>, which takes a hand as its argument and
+returns the number of distribution points the hand is worth.
+
+<P><PRE>&gt; (hand-dist-points '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+1
+
+&gt; (hand-dist-points '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+3
+</PRE>
+
+<H3><CODE>Bridge-val</CODE></H3>
+
+<P>Write a procedure <CODE><A NAME="g9"></A>bridge-val</CODE> that takes a hand as its argument
+and returns the total number of points that the hand is worth.
+
+<P><PRE>&gt; (bridge-val '(sa s10 s7 s6 s2 hq hj h9 ck c4 dk d9 d3))
+14
+
+&gt; (bridge-val '(h3 d7 sk s3 c10 dq d8 s9 s4 d10 c7 d4 s2))
+8
+</PRE>
+
+<P>
+
+<HR>
+<A NAME="ft1" HREF="bridge.html#text1">[1]</A> Why not <CODE>5h</CODE>?  Scheme
+words that begin with a digit but aren't numbers have to be surrounded with
+double-quote marks.  Putting the suit first avoids that.<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="lambda.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../ssch10/ttt.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch9/lambda b/js/games/nluqo.github.io/~bh/ssch9/lambda
new file mode 100644
index 0000000..6f89dfe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch9/lambda
@@ -0,0 +1,720 @@
+<P>
+<A NAME="alonzo"></A>
+<P>
+<CENTER><IMG SRC="../ss-pics/alonzo.jpg" ALT="figure: alonzo"></CENTER><P><CENTER>Alonzo Church
+<BR>inventor of lambda calculus
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 9: Lambda</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 9</H2>
+<H1>Lambda</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch09.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch8/higher.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="bridge.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<A NAME="g1"></A>
+
+<P>Let's say we want to add three to each of the numbers in a sentence.  Using
+the tools from Chapter 8, we would do it like this:
+
+<P><PRE>(define (<A NAME="g2"></A>add-three number)
+  (+ number 3))
+
+(define (<A NAME="g3"></A>add-three-to-each sent)
+  (every add-three sent))
+
+&gt; (add-three-to-each '(1 9 9 2))
+(4 12 12 5)
+</PRE>
+
+<P>It's slightly annoying to have to define a helper procedure <CODE>add-three</CODE> just so we can use it as the argument to <CODE>every</CODE>.  We're
+never going to use that procedure again, but we still have to come up with a
+name for it.  We'd like a general way to say &quot;here's the function I want
+you to use&quot; without having to give the procedure a name.  In other words,
+we want a general-purpose procedure-generating procedure!
+
+<P><CODE>Lambda</CODE> is the name of a special form that generates procedures.  It
+takes some information about the function you want to create as arguments
+and it returns the procedure.  It'll be easier to explain the details after
+you see an example.
+
+<P><PRE>(define (add-three-to-each sent)
+  (every <U>(lambda (number) (+ number 3))</U> sent))
+
+&gt; (add-three-to-each '(1 9 9 2))
+(4 12 12 5)
+</PRE>
+
+<P>The first argument to <CODE>every</CODE> is, in effect, the same procedure
+as the one we called <CODE>add-three</CODE> earlier, but now we can use it without
+giving it a name.  (Don't make the mistake of thinking that <CODE>lambda</CODE> is
+the argument to <CODE>every</CODE>.  The argument is <EM>the procedure returned
+by</EM> <CODE>lambda</CODE>.)
+
+<P>Perhaps you're wondering whether &quot;lambda&quot; spells something backward.
+Actually, it's the name of the Greek letter L, which looks like
+this: &lambda;.  It would probably be more sensible if <CODE>lambda</CODE>
+were named
+something like <CODE>make-procedure</CODE>, but the name <CODE>lambda</CODE> is
+traditional.<A NAME="text1" HREF="lambda#ft1">[1]</A>
+
+<P>Creating a procedure by using <CODE>lambda</CODE> is very much like creating one
+with <CODE>define</CODE>, as we've done up to this point, except that we don't
+specify a name.  When we create a procedure with <CODE>define</CODE>, we have to
+indicate the procedure's name, the names of its arguments (i.e., the formal
+parameters), and the expression that it computes (its body).  With <CODE>lambda</CODE> we still provide the last two of these three components.
+
+<P>As we said, <CODE>lambda</CODE> is a <A NAME="g4"></A><A NAME="g5"></A>special form.  This means, as you
+remember, that its arguments are not evaluated when you invoke it.  The
+first argument is a sentence containing the formal parameters; the second
+argument is the body.  What <CODE>lambda</CODE> returns is an unnamed procedure.
+You can invoke that procedure:
+
+<P><PRE>&gt; ((lambda (a b) (+ (* 2 a) b)) 5 6)
+16
+
+&gt; ((lambda (wd) (word (last wd) (first wd))) 'impish)
+HI
+</PRE>
+
+<P>In real life, though, you're not likely to create a procedure with <CODE>lambda</CODE> merely to invoke it once.  More often, we use <CODE>lambda</CODE> as in the
+first example in this chapter, to provide a procedure as argument to a
+higher-order function.  Here are some more examples:
+
+<P><PRE>&gt; (every (lambda (wd) (se (first wd) wd (last wd)))
+         '(only a northern song))
+(O ONLY Y A A A N NORTHERN N S SONG G)
+
+&gt; (keep (lambda (n) (member? 9 n)) '(4 81 909 781 1969 1776))
+(909 1969)
+
+&gt; (accumulate (lambda (this that)
+                (if (&gt; (count this) (count that)) this that))
+              '(wild honey pie))
+HONEY
+
+&gt; (keep (lambda (person) (member? person '(john paul george ringo)))
+        '(mick smokey paul diana bill geddy john yoko keith reparata))
+(PAUL JOHN)
+
+&gt; (keep (lambda (person) (member? 'e person))
+        '(mick smokey paul diana bill geddy john yoko keith reparata))
+(SMOKEY GEDDY KEITH REPARATA)
+</PRE>
+
+<P><H2>Procedures That Return Procedures</H2>
+
+<P>An even more powerful use of <CODE>lambda</CODE> is to provide the value returned
+by some procedure that you write.  Here's the classic example:
+
+<P><PRE>(define (<A NAME="g6"></A>make-adder num)
+  (lambda (x) (+ x num)))
+
+&gt; ((make-adder 4) 7)
+11
+
+&gt; (every (make-adder 6) '(2 4 8))
+(8 10 14)
+</PRE>
+
+<P>The value of the expression <CODE>(make-adder 4)</CODE> is a <EM>procedure,</EM> not a number.  That unnamed procedure is the one that adds 4 to
+its argument.  We can understand this by applying the substitution model to
+<CODE>make-adder</CODE>.  We substitute <CODE>4</CODE> for <CODE>num</CODE> in the body of <CODE>make-adder</CODE>; we end up with
+
+<P><PRE>(lambda (x) (+ x 4))
+</PRE>
+
+<P>and then we evaluate that expression to get the desired procedure.
+
+<P>Here's a procedure whose argument is a procedure:
+
+<P><PRE>(define (<A NAME="g7"></A>same-arg-twice fn)
+  (lambda (arg) (fn arg arg)))
+
+&gt; ((same-arg-twice word) 'hello)
+HELLOHELLO
+
+&gt; ((same-arg-twice *) 4)
+16
+</PRE>
+
+<P>When we evaluate <CODE>(same-arg-twice word)</CODE> we substitute the procedure
+<CODE>word</CODE> for the formal parameter <CODE>fn</CODE>, and the result is
+
+<P><PRE>(lambda (arg) (word arg arg))
+</PRE>
+
+<P>One more example:
+
+<P><PRE>(define (<A NAME="g8"></A>flip fn)
+  (lambda (a b) (fn b a)))
+
+&gt; ((flip -) 5 8)
+3
+
+&gt; ((flip se) 'goodbye 'hello)
+(HELLO GOODBYE)
+</PRE>
+
+<P><H2>The Truth about <CODE>Define</CODE></H2>
+
+<P>Remember how we said that creating a procedure with <CODE>lambda</CODE> was a lot
+<A NAME="g9"></A>
+like creating a procedure with <A NAME="g10"></A><CODE>define</CODE>?  That's because the notation
+we've been using with <CODE>define</CODE> is an abbreviation that combines two
+activities: creating a procedure and giving a name to something.
+
+<P>As you saw in Chapter 7, <CODE>define</CODE>'s real job is to give a name
+to some value:
+
+<P><PRE>&gt; (define pi 3.141592654)
+
+&gt; (* pi 10)
+31.41592654
+
+&gt; (define drummer '(ringo starr))
+
+&gt; (first drummer)
+RINGO
+</PRE>
+
+<P>
+When we say
+
+<P><PRE>(define (square x) (* x x))
+</PRE>
+
+<P>it's actually an abbreviation for
+
+<P><PRE>(define square (lambda (x) (* x x)))
+</PRE>
+
+<P>In this example, the job of <CODE>lambda</CODE> is to create a procedure
+that multiplies its argument by itself; the job of <CODE>define</CODE> is to name
+that procedure <CODE>square</CODE>.
+
+<P>In the past, without quite saying so, we've talked as if the name of a
+<A NAME="g11"></A>
+procedure were understood differently from other names in a program.  In
+thinking about an expression such as
+
+<P><PRE>(* x x)
+</PRE>
+
+<P>we've talked about substituting some actual value for the <CODE>x</CODE>
+but took the <CODE>*</CODE> for granted as meaning the multiplication function.
+
+<P>The truth is that we have to substitute a value for the <CODE>*</CODE> just as we
+do for the <CODE>x</CODE>.  It just happens that <CODE>*</CODE> has been predefined to
+have the multiplication procedure as its value.  This definition of <CODE>*</CODE>
+is <EM>global,</EM> like the definition of <CODE>pi</CODE> above.  &quot;Global&quot; means
+<A NAME="g12"></A>
+<A NAME="g13"></A>
+<A NAME="g14"></A>
+that it's not a formal parameter of a procedure, like <CODE>x</CODE> in <CODE>square</CODE>,
+but has a permanent value established by <CODE>define</CODE>.
+
+<P>When an expression is evaluated, every name in the expression must have some
+value substituted for it.  If the name is a formal parameter, then the
+corresponding actual argument value is substituted.  Otherwise, the name had
+better have a global definition, and <EM>that</EM> value is substituted.  It
+just so happens that Scheme has predefined a zillion names before you start
+working, and most of those are names of primitive procedures.
+
+<P>(By the way, this explains why when you make a typing mistake in the name of
+a procedure you might see an error message that refers to variables, such as
+&quot;variable <CODE>frist</CODE> not bound.&quot; You might expect it to say &quot;<CODE>frist</CODE>
+is not a procedure,&quot; but the problem is no different from that of any other
+name that has no associated value.)
+
+<P>Now that we know the whole truth about <CODE>define</CODE>, we can use it in
+combination with the function-creating functions in these past two chapters.
+
+<P><PRE>&gt; (define <A NAME="g15"></A>square (same-arg-twice *))
+
+&gt; (square 7)
+49
+
+&gt; (define <A NAME="g16"></A>fourth-power (repeated square 2))
+
+&gt; (fourth-power 5)
+625
+</PRE>
+
+<P> 
+<H2>The Truth about <CODE>Let</CODE></H2>
+
+<P>In Chapter 7 we introduced <CODE>let</CODE> as an abbreviation for the
+situation in which we would otherwise define a helper procedure in order to
+give names to commonly-used values in a calculation.  We started with
+
+<P><PRE>(define (roots a b c)
+  (roots1 a b c (sqrt (- (* b b) (* 4 a c)))))
+
+(define (roots1 a b c discriminant)
+  (se (/ (+ (- b) discriminant) (* 2 a))
+      (/ (- (- b) discriminant) (* 2 a))))
+</PRE>
+
+<P>and introduced the new notation
+
+<P><PRE>(define (roots a b c)
+  (let ((discriminant (sqrt (- (* b b) (* 4 a c)))))
+    (se (/ (+ (- b) discriminant) (* 2 a))
+        (/ (- (- b) discriminant) (* 2 a)))))
+</PRE>
+
+<P>to avoid creating an otherwise-useless named procedure.  But now
+that we know about unnamed procedures, we can see that <CODE>let</CODE> is merely
+an abbreviation for creating and invoking an anonymous procedure:
+
+<P><PRE>(define (roots a b c)
+  <STRONG><BIG>(</BIG></STRONG>(lambda (discriminant)
+     (se (/ (+ (- b) discriminant) (* 2 a))
+         (/ (- (- b) discriminant) (* 2 a))))
+   <STRONG><BIG>(sqrt (- (* b b) (* 4 a c))))</BIG></STRONG>)
+</PRE>
+
+<P>What's shown in boldface above is the part that invokes the
+procedure created by the lambda, including the actual argument expression.
+
+<P>Just as the notation to define a procedure with parentheses around its name
+is an abbreviation for a <CODE>define</CODE> and a <CODE>lambda</CODE>, the <CODE>let</CODE>
+notation is an abbreviation for a <CODE>lambda</CODE> and an invocation.
+
+<P><H2>Name Conflicts</H2>
+
+<P>When a procedure is created inside another procedure, what happens if you
+use the same formal parameter name in both?
+
+<P><PRE>(define (f x)
+  (lambda (x) (+ x 3)))
+</PRE>
+
+<P>Answer: Don't do it.
+
+<P>What actually happens is that the inner <CODE>x</CODE> wins; that's the one that is
+substituted into the body.  But if you find yourself in this situation, you
+are almost certainly doing something wrong, such as using nondescriptive
+names like <CODE>x</CODE> for your variables.
+
+<P><H2>Named and Unnamed Functions</H2>
+
+<P>Although you've been running across the idea of function since high school
+algebra, you've probably never seen an <EM>unnamed</EM> function until now.
+<A NAME="g17"></A>
+<A NAME="g18"></A>
+The high school function notation, <EM>g</EM>(<EM>x</EM>)=3<EM>x</EM>+8, requires you to
+give the function a name (<EM>g</EM> in this case) when you create it.  Most of the
+functions you know, both in math and in programming, have names, such as
+logarithm or <CODE>first</CODE>.<A NAME="text2" HREF="lambda#ft2">[2]</A>
+
+<P>When do you want to name a function, and when not?  It may help to think
+about an analogy with numbers.  Imagine if every Scheme number had to have a
+name before you could use it.  You'd have to say
+
+<P><PRE>&gt; (define three 3)
+&gt; (define four 4)
+&gt; (+ three four)
+7
+</PRE>
+
+<P>This is analogous to the way we've dealt with procedures until now,
+giving each one a name.  Sometimes it's much easier to use a number
+directly, and it's silly to have to give it a name.
+
+<P>But sometimes it isn't silly.  A common example that we've seen earlier is
+
+<P><PRE>(define <A NAME="g19"></A>pi 3.141592654)
+
+(define (<A NAME="g20"></A>circle-area radius)
+  (* pi radius radius))
+
+(define (<A NAME="g21"></A>circumference radius)
+  (* 2 pi radius))
+
+(define (<A NAME="g22"></A>sphere-surface-area radius)
+  (* 4 pi radius radius))                                
+
+(define (<A NAME="g23"></A>sphere-volume radius)
+  (* (/ 4 3) pi radius radius radius))
+</PRE>
+
+<P>If we couldn't give a name to the number 3.141592654, then we'd
+have to type it over and over again.  Apart from the extra typing, our
+programs would be harder to read and understand.  Giving &pi; a name makes
+the procedures more self-documenting.  (That is, someone else who reads our
+procedures will have an easier time understanding what we meant.)
+
+<P>It's the same with procedures.  If we're going to use a procedure more than
+once, and if there's a meaningful name for it that will help clarify the
+program, then we define the procedure with <CODE>define</CODE> and give it a name.
+
+<P><PRE>(define (square x) (* x x))
+</PRE>
+
+<P><CODE>Square</CODE> deserves a name both because we use it often and
+because there is a good traditional name for it that everyone understands.
+More important, by giving <CODE>square</CODE> a name, we are shifting attention
+from the process by which it works (invoking the multiplication procedure)
+to its <EM>purpose,</EM> computing the square of a number.  From now on we
+can think about squaring as though it were a Scheme primitive.  This idea of
+naming something and forgetting the details of its implementation is what
+we've been calling &quot;abstraction.&quot;
+
+<P>On the other hand, if we have an unimportant procedure that we're using only
+once, we might as well create it with <CODE>lambda</CODE> and without a name.
+
+<P><PRE>&gt; (every (lambda (x) (last (bl x))) '(all together now))
+(L E O)
+</PRE>
+
+<P>We could have defined this procedure with the name <CODE>next-to-last</CODE>, but if we're never going to use it again, why bother?
+
+<P>Here's an example in which we use an obscure unnamed function to help
+us define one that's worth naming:
+
+<P><PRE>(define (<A NAME="g24"></A>backwards wd) (accumulate (lambda (a b) (word b a)) wd))
+
+&gt; (backwards 'yesterday)
+YADRETSEY
+
+&gt; (every backwards '(i saw her standing there))
+(I WAS REH GNIDNATS EREHT)
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>It's very convenient that <CODE>define</CODE> has an abbreviated form to
+define a procedure using a hidden <CODE>lambda</CODE>, but because there are two
+notations that differ only subtly&mdash;one has an extra set of
+parentheses&mdash;you could use the wrong one by mistake.  If you say
+
+<P><PRE>(define (pi) 3.141592654)
+</PRE>
+
+<P>you're not defining a variable whose value is a number.  Instead
+the value of <CODE>pi</CODE> will be a <EM>procedure.</EM> It would then be an error
+to say
+
+<P><PRE>(* 2 pi)
+</PRE>
+
+<P>When should the body of your procedure be a <CODE>lambda</CODE> expression?
+It's easy to go overboard and say &quot;I'm writing a procedure so I guess I
+need <CODE>lambda</CODE>&quot; even when the procedure is supposed to return a word.
+
+<P>The secret is to remember the ideas of <EM>domain</EM> and <EM>range</EM> that
+we talked about in Chapter 2.  What is the range of the function
+you're writing?  Should it return a procedure?  If so, its body might be a
+<CODE>lambda</CODE> expression.  (It might instead be an invocation of a
+higher-order procedure, such as <CODE>repeated</CODE>, that returns a procedure.)
+If your procedure doesn't return a procedure, its body won't be a <CODE>lambda</CODE> expression.  (Of course your procedure might still use a <CODE>lambda</CODE>
+expression as an argument to some <EM>other</EM> procedure, such as <CODE>every</CODE>.)
+
+<P>For example, here is a procedure to keep the words of a sentence that contain
+the letter <CODE>h</CODE>.  The domain of the function is sentences, and its range
+is also sentences.  (That is, it takes a sentence as argument and returns a
+sentence as its value.)
+
+<P><PRE>(define (<A NAME="g25"></A>keep-h sent)
+  (keep (lambda (wd) (member? 'h wd)) sent))
+</PRE>
+
+<P>By contrast, here is a function of a letter that returns a
+<EM>procedure</EM> to keep words containing that letter.
+
+<P><PRE>(define (<A NAME="g26"></A>keeper letter)
+  (lambda (sent)
+    (keep (lambda (wd) (member? letter wd)) sent)))
+</PRE>
+
+<P>The procedure <CODE>keeper</CODE> has letters as its domain and procedures
+as its range.  The procedure <EM>returned by</EM> <CODE>keeper</CODE> has sentences
+as its domain and as its range, just as <CODE>keep-h</CODE> does.  In fact, we can
+use <CODE>keeper</CODE> to define <CODE>keep-h</CODE>:
+
+<P><PRE>(define keep-h (keeper 'h))
+</PRE>
+
+<P>Don't confuse the <EM>creation</EM> of a procedure with the <EM>invocation</EM> of one.  <CODE>Lambda</CODE> creates a procedure.  The procedure is
+invoked in response to an expression whose first subexpression represents
+that procedure.  That is, the first subexpression could be the <EM>name</EM>
+of the procedure, or it could be a <CODE>lambda</CODE> expression if you want to
+create a procedure and invoke it right away:
+
+<P><PRE>((lambda (x) (+ x 3)) 6)
+</PRE>
+
+<P>In particular, when you create a procedure, you specify its formal
+parameters&mdash;the <EM>names</EM> for its arguments.  When you invoke the
+procedure, you specify <EM>values</EM> for those arguments.  (In this example,
+the <CODE>lambda</CODE> expression includes the formal parameter <CODE>x</CODE>, but the
+invocation provides the actual argument <CODE>6</CODE>.)
+
+<P><H2>Boring Exercises</H2>
+
+<P>
+<B>9.1</B>&nbsp;&nbsp;What will Scheme print?  Figure it out yourself before you try it
+on the computer.
+
+<P><PRE>&gt; (lambda (x) (+ (* x 3) 4))
+
+&gt; ((lambda (x) (+ (* x 3) 4)) 10)
+
+&gt; (every (lambda (wd) (word (last wd) (bl wd)))
+         '(any time at all))
+
+&gt; ((lambda (x) (+ x 3)) 10 15)
+</PRE>
+
+<P>
+<B>9.2</B>&nbsp;&nbsp;Rewrite the following definitions so as to make the implicit <CODE>lambda</CODE>
+explicit.
+
+<P><PRE>(define (second stuff)
+  (first (bf stuff)))
+
+(define (make-adder num)
+  (lambda (x) (+ num x)))
+</PRE>
+
+<P>
+<B>9.3</B>&nbsp;&nbsp;What does this procedure do?
+
+<P><PRE>(define (<A NAME="g27"></A>let-it-be sent)
+  (accumulate (lambda (x y) y) sent))
+</PRE>
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>9.4</B>&nbsp;&nbsp;The following program doesn't work.  Why not?  Fix it.
+
+<P><PRE>(define (<A NAME="g28"></A>who sent)
+  (every describe '(pete roger john keith)))
+
+(define (<A NAME="g29"></A>describe person)
+  (se person sent))
+</PRE>
+
+<P>It's supposed to work like this:
+
+<P><PRE>&gt; (who '(sells out))
+(pete sells out roger sells out john sells out keith sells out)
+</PRE>
+
+<P>
+In each of the following exercises, write the procedure in terms of <CODE>lambda</CODE> and higher-order functions.  Do not use named helper procedures.
+If you've read Part IV, don't use recursion, either.
+
+<P><B>9.5</B>&nbsp;&nbsp;Write <CODE>prepend-every</CODE>:
+<A NAME="prependevery"></A>
+
+<P><PRE>&gt; (prepend-every 's '(he aid he aid))
+(SHE SAID SHE SAID)
+
+&gt; (prepend-every 'anti '(dote pasto gone body))
+(ANTIDOTE ANTIPASTO ANTIGONE ANTIBODY)
+</PRE>
+
+<P>
+<B>9.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g30"></A>sentence-version</CODE> that takes a function <EM>f</EM> as
+its argument and returns a function <EM>g</EM>.  <EM>f</EM> should take a single word as
+argument.  <EM>g</EM> should take a sentence as argument and return the sentence
+formed by applying <EM>f</EM> to each word of that argument.
+<A NAME="senver"></A>
+
+<P><PRE>&gt; ((sentence-version first) '(if i fell))
+(I I F)
+
+&gt; ((sentence-version square) '(8 2 4 6))
+(64 4 16 36)
+</PRE>
+
+<P>
+<B>9.7</B>&nbsp;&nbsp;Write a procedure called <CODE><A NAME="g31"></A>letterwords</CODE> that takes as its
+arguments a letter and a sentence.  It returns a sentence containing only
+those words from the argument sentence that contain the argument letter:
+<A NAME="letwds"></A>
+
+<P><PRE>&gt; (letterwords 'o '(got to get you into my life))
+(GOT TO YOU INTO)
+</PRE>
+
+
+<P>
+<B>9.8</B>&nbsp;&nbsp;Suppose we're writing a program to play hangman.  In this game one player
+has to guess a secret word chosen by the other player, one letter at a time.
+You're going to write just one small part of this program: a procedure that
+takes as arguments the secret word and the letters guessed so far, 
+returning the word in which the guessing progress is displayed by including
+all the guessed letters along with underscores for the not-yet-guessed ones:
+
+<P><PRE>&gt; (<A NAME="g32"></A>hang 'potsticker 'etaoi)
+_OT_TI__E_
+</PRE>
+
+<P>Hint: You'll find it helpful to use the following procedure that determines
+how to display a single letter:
+
+<P><PRE>(define (<A NAME="g33"></A>hang-letter letter guesses)
+  (if (member? letter guesses)
+      letter
+      '_))
+</PRE>
+
+<P>
+<B>9.9</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g34"></A>common-words</CODE> that takes two sentences as
+arguments and returns a sentence containing only those words that appear
+both in the first sentence and in the second sentence.
+<A NAME="commwds"></A>
+
+
+<P>
+<B>9.10</B>&nbsp;&nbsp;In Chapter 2 we used a function called <CODE>appearances</CODE> that returns
+the number of times its first argument appears as a member of its second
+argument.  Implement <CODE><A NAME="g35"></A>appearances</CODE>.
+<A NAME="appear"></A>
+
+
+<P>
+<B>9.11</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g36"></A>unabbrev</CODE> that takes two sentences as
+arguments.  It should return a sentence that's the same as the first
+sentence, except that any numbers in the original sentence should be
+replaced with words from the second sentence.  A number <CODE>2</CODE> in the first
+sentence should be replaced with the second word of the second sentence, a
+<CODE>6</CODE> with the sixth word, and so on.
+
+<P><PRE>&gt; (unabbrev '(john 1 wayne fred 4) '(bill hank kermit joey))
+(JOHN BILL WAYNE FRED JOEY)
+
+&gt; (unabbrev '(i 3 4 tell 2) '(do you want to know a secret?))
+(I WANT TO TELL YOU)
+</PRE>
+
+<P>
+<B>9.12</B>&nbsp;&nbsp;Write a procedure <CODE>first-last</CODE> whose argument will be a sentence.  It
+should return a sentence containing only those words in the argument
+sentence whose first and last letters are the same:
+
+<P><PRE>&gt; (<A NAME="g37"></A>first-last '(california ohio nebraska alabama alaska massachusetts))
+(OHIO ALABAMA ALASKA)
+</PRE>
+
+<P>
+<B>9.13</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g38"></A>compose</CODE> that takes two functions <EM>f</EM> and <EM>g</EM>
+as arguments.  It should return a new function, the composition of its input
+functions, which computes <EM>f</EM>(<EM>g</EM>(<EM>x</EM>)) when passed the argument <EM>x</EM>.
+
+<P><PRE>&gt; ((compose sqrt abs) -25)
+5
+
+&gt; (define <A NAME="g39"></A>second (compose first bf))
+
+&gt; (second '(higher order function))
+ORDER
+</PRE>
+
+<P>
+<B>9.14</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g40"></A>substitute</CODE> that takes three arguments, two
+words and a sentence.  It should return a version of the sentence, but with
+every instance of the second word replaced with the first word:
+
+<P><PRE>&gt; (substitute 'maybe 'yeah '(she loves you yeah yeah yeah))
+(SHE LOVES YOU MAYBE MAYBE MAYBE)
+</PRE>
+
+<P>
+<B>9.15</B>&nbsp;&nbsp;Many functions are applicable only to arguments in a certain domain and
+result in error messages if given arguments outside that domain.  For
+example, <CODE>sqrt</CODE> may require a nonnegative argument in a version of
+Scheme that doesn't include complex numbers.  (In <EM>any</EM> version of
+Scheme, <CODE>sqrt</CODE> will complain if its argument isn't a number at all!)
+Once a program gets an error message, it's impossible for that program to
+continue the computation.
+
+<P>Write a procedure <CODE><A NAME="g41"></A>type-check</CODE> that takes as arguments a
+one-argument procedure <CODE>f</CODE> and a one-argument predicate procedure <CODE>pred</CODE>.  <CODE>Type-check</CODE> should return a one-argument procedure that first
+applies <CODE>pred</CODE> to its argument; if that result is true, the procedure
+should return the value computed by applying <CODE>f</CODE> to the argument; if
+<CODE>pred</CODE> returns false, the new procedure should also return <CODE>#f</CODE>:
+
+<P><PRE>&gt; (define <A NAME="g42"></A>safe-sqrt (type-check sqrt number?))
+
+&gt; (safe-sqrt 16)
+4
+
+&gt; (safe-sqrt 'sarsaparilla)
+#F
+</PRE>
+
+<P>
+<B>9.16</B>&nbsp;&nbsp;In the language APL, most arithmetic functions can be applied either to a
+number, with the usual result, or to a <EM>vector</EM>&mdash;the APL name for a
+sentence of numbers&mdash;in which case the result is a new vector in which each
+element is the result of applying the function to the corresponding element
+of the argument.  For example, the function <CODE>sqrt</CODE> applied to <CODE>16</CODE>
+returns <CODE>4</CODE> as in Scheme, but <CODE>sqrt</CODE> can also be applied to a
+sentence such as <CODE>(16 49)</CODE> and it returns <CODE>(4 7)</CODE>.
+
+<P>Write a procedure <CODE><A NAME="g43"></A>aplize</CODE> that takes as its argument a
+one-argument procedure whose domain is numbers or words.  It should return
+an APLized procedure that also accepts sentences:
+
+<P><PRE>&gt; (define <A NAME="g44"></A>apl-sqrt (aplize sqrt))
+
+&gt; (apl-sqrt 36)
+6
+
+&gt; (apl-sqrt '(1 100 25 16))
+(1 10 5 4)
+</PRE>
+
+<P>
+<B>9.17</B>&nbsp;&nbsp;Write <CODE>keep</CODE> in terms of <CODE>every</CODE> and <CODE>accumulate</CODE>.
+
+
+<P>
+ 
+
+<HR>
+<A NAME="ft1" HREF="lambda#text1">[1]</A> It comes from a branch of mathematical logic called
+&quot;lambda calculus&quot; that's about the formal properties of functions.
+The inclusion of first-class functions in Lisp was inspired by this
+mathematical work, so Lisp borrowed the name <CODE>lambda</CODE>.<P>
+<A NAME="ft2" HREF="lambda#text2">[2]</A> Professional mathematicians do have a
+notation for unnamed functions, by the way.  They write (<EM>x</EM> &#x21a6; 3<EM>x</EM>+8).<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch8/higher.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="bridge.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ssch9/lambda.html b/js/games/nluqo.github.io/~bh/ssch9/lambda.html
new file mode 100644
index 0000000..2d55211
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ssch9/lambda.html
@@ -0,0 +1,720 @@
+<P>
+<A NAME="alonzo"></A>
+<P>
+<CENTER><IMG SRC="../ss-pics/alonzo.jpg" ALT="figure: alonzo"></CENTER><P><CENTER>Alonzo Church
+<BR>inventor of lambda calculus
+</CENTER><P>
+
+<HTML>
+<HEAD>
+<TITLE>Simply Scheme: Introducing Computer Science ch 9: Lambda</TITLE>
+</HEAD>
+<BODY>
+<HR>
+<CITE>Simply Scheme:</CITE>
+<CITE>Introducing Computer Science</CITE> 2/e Copyright (C) 1999 MIT
+<H2>Chapter 9</H2>
+<H1>Lambda</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../simply.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><CITE><A HREF="http://ccrma.stanford.edu/~matt">Matthew
+Wright</A><BR>University of California, Santa Barbara</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/ssch09.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../ss-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../ssch8/higher.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="bridge.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="http://mitpress.mit.edu/0262082810">MIT
+Press web page for <CITE>Simply Scheme</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<A NAME="g1"></A>
+
+<P>Let's say we want to add three to each of the numbers in a sentence.  Using
+the tools from Chapter 8, we would do it like this:
+
+<P><PRE>(define (<A NAME="g2"></A>add-three number)
+  (+ number 3))
+
+(define (<A NAME="g3"></A>add-three-to-each sent)
+  (every add-three sent))
+
+&gt; (add-three-to-each '(1 9 9 2))
+(4 12 12 5)
+</PRE>
+
+<P>It's slightly annoying to have to define a helper procedure <CODE>add-three</CODE> just so we can use it as the argument to <CODE>every</CODE>.  We're
+never going to use that procedure again, but we still have to come up with a
+name for it.  We'd like a general way to say &quot;here's the function I want
+you to use&quot; without having to give the procedure a name.  In other words,
+we want a general-purpose procedure-generating procedure!
+
+<P><CODE>Lambda</CODE> is the name of a special form that generates procedures.  It
+takes some information about the function you want to create as arguments
+and it returns the procedure.  It'll be easier to explain the details after
+you see an example.
+
+<P><PRE>(define (add-three-to-each sent)
+  (every <U>(lambda (number) (+ number 3))</U> sent))
+
+&gt; (add-three-to-each '(1 9 9 2))
+(4 12 12 5)
+</PRE>
+
+<P>The first argument to <CODE>every</CODE> is, in effect, the same procedure
+as the one we called <CODE>add-three</CODE> earlier, but now we can use it without
+giving it a name.  (Don't make the mistake of thinking that <CODE>lambda</CODE> is
+the argument to <CODE>every</CODE>.  The argument is <EM>the procedure returned
+by</EM> <CODE>lambda</CODE>.)
+
+<P>Perhaps you're wondering whether &quot;lambda&quot; spells something backward.
+Actually, it's the name of the Greek letter L, which looks like
+this: &lambda;.  It would probably be more sensible if <CODE>lambda</CODE>
+were named
+something like <CODE>make-procedure</CODE>, but the name <CODE>lambda</CODE> is
+traditional.<A NAME="text1" HREF="lambda.html#ft1">[1]</A>
+
+<P>Creating a procedure by using <CODE>lambda</CODE> is very much like creating one
+with <CODE>define</CODE>, as we've done up to this point, except that we don't
+specify a name.  When we create a procedure with <CODE>define</CODE>, we have to
+indicate the procedure's name, the names of its arguments (i.e., the formal
+parameters), and the expression that it computes (its body).  With <CODE>lambda</CODE> we still provide the last two of these three components.
+
+<P>As we said, <CODE>lambda</CODE> is a <A NAME="g4"></A><A NAME="g5"></A>special form.  This means, as you
+remember, that its arguments are not evaluated when you invoke it.  The
+first argument is a sentence containing the formal parameters; the second
+argument is the body.  What <CODE>lambda</CODE> returns is an unnamed procedure.
+You can invoke that procedure:
+
+<P><PRE>&gt; ((lambda (a b) (+ (* 2 a) b)) 5 6)
+16
+
+&gt; ((lambda (wd) (word (last wd) (first wd))) 'impish)
+HI
+</PRE>
+
+<P>In real life, though, you're not likely to create a procedure with <CODE>lambda</CODE> merely to invoke it once.  More often, we use <CODE>lambda</CODE> as in the
+first example in this chapter, to provide a procedure as argument to a
+higher-order function.  Here are some more examples:
+
+<P><PRE>&gt; (every (lambda (wd) (se (first wd) wd (last wd)))
+         '(only a northern song))
+(O ONLY Y A A A N NORTHERN N S SONG G)
+
+&gt; (keep (lambda (n) (member? 9 n)) '(4 81 909 781 1969 1776))
+(909 1969)
+
+&gt; (accumulate (lambda (this that)
+                (if (&gt; (count this) (count that)) this that))
+              '(wild honey pie))
+HONEY
+
+&gt; (keep (lambda (person) (member? person '(john paul george ringo)))
+        '(mick smokey paul diana bill geddy john yoko keith reparata))
+(PAUL JOHN)
+
+&gt; (keep (lambda (person) (member? 'e person))
+        '(mick smokey paul diana bill geddy john yoko keith reparata))
+(SMOKEY GEDDY KEITH REPARATA)
+</PRE>
+
+<P><H2>Procedures That Return Procedures</H2>
+
+<P>An even more powerful use of <CODE>lambda</CODE> is to provide the value returned
+by some procedure that you write.  Here's the classic example:
+
+<P><PRE>(define (<A NAME="g6"></A>make-adder num)
+  (lambda (x) (+ x num)))
+
+&gt; ((make-adder 4) 7)
+11
+
+&gt; (every (make-adder 6) '(2 4 8))
+(8 10 14)
+</PRE>
+
+<P>The value of the expression <CODE>(make-adder 4)</CODE> is a <EM>procedure,</EM> not a number.  That unnamed procedure is the one that adds 4 to
+its argument.  We can understand this by applying the substitution model to
+<CODE>make-adder</CODE>.  We substitute <CODE>4</CODE> for <CODE>num</CODE> in the body of <CODE>make-adder</CODE>; we end up with
+
+<P><PRE>(lambda (x) (+ x 4))
+</PRE>
+
+<P>and then we evaluate that expression to get the desired procedure.
+
+<P>Here's a procedure whose argument is a procedure:
+
+<P><PRE>(define (<A NAME="g7"></A>same-arg-twice fn)
+  (lambda (arg) (fn arg arg)))
+
+&gt; ((same-arg-twice word) 'hello)
+HELLOHELLO
+
+&gt; ((same-arg-twice *) 4)
+16
+</PRE>
+
+<P>When we evaluate <CODE>(same-arg-twice word)</CODE> we substitute the procedure
+<CODE>word</CODE> for the formal parameter <CODE>fn</CODE>, and the result is
+
+<P><PRE>(lambda (arg) (word arg arg))
+</PRE>
+
+<P>One more example:
+
+<P><PRE>(define (<A NAME="g8"></A>flip fn)
+  (lambda (a b) (fn b a)))
+
+&gt; ((flip -) 5 8)
+3
+
+&gt; ((flip se) 'goodbye 'hello)
+(HELLO GOODBYE)
+</PRE>
+
+<P><H2>The Truth about <CODE>Define</CODE></H2>
+
+<P>Remember how we said that creating a procedure with <CODE>lambda</CODE> was a lot
+<A NAME="g9"></A>
+like creating a procedure with <A NAME="g10"></A><CODE>define</CODE>?  That's because the notation
+we've been using with <CODE>define</CODE> is an abbreviation that combines two
+activities: creating a procedure and giving a name to something.
+
+<P>As you saw in Chapter 7, <CODE>define</CODE>'s real job is to give a name
+to some value:
+
+<P><PRE>&gt; (define pi 3.141592654)
+
+&gt; (* pi 10)
+31.41592654
+
+&gt; (define drummer '(ringo starr))
+
+&gt; (first drummer)
+RINGO
+</PRE>
+
+<P>
+When we say
+
+<P><PRE>(define (square x) (* x x))
+</PRE>
+
+<P>it's actually an abbreviation for
+
+<P><PRE>(define square (lambda (x) (* x x)))
+</PRE>
+
+<P>In this example, the job of <CODE>lambda</CODE> is to create a procedure
+that multiplies its argument by itself; the job of <CODE>define</CODE> is to name
+that procedure <CODE>square</CODE>.
+
+<P>In the past, without quite saying so, we've talked as if the name of a
+<A NAME="g11"></A>
+procedure were understood differently from other names in a program.  In
+thinking about an expression such as
+
+<P><PRE>(* x x)
+</PRE>
+
+<P>we've talked about substituting some actual value for the <CODE>x</CODE>
+but took the <CODE>*</CODE> for granted as meaning the multiplication function.
+
+<P>The truth is that we have to substitute a value for the <CODE>*</CODE> just as we
+do for the <CODE>x</CODE>.  It just happens that <CODE>*</CODE> has been predefined to
+have the multiplication procedure as its value.  This definition of <CODE>*</CODE>
+is <EM>global,</EM> like the definition of <CODE>pi</CODE> above.  &quot;Global&quot; means
+<A NAME="g12"></A>
+<A NAME="g13"></A>
+<A NAME="g14"></A>
+that it's not a formal parameter of a procedure, like <CODE>x</CODE> in <CODE>square</CODE>,
+but has a permanent value established by <CODE>define</CODE>.
+
+<P>When an expression is evaluated, every name in the expression must have some
+value substituted for it.  If the name is a formal parameter, then the
+corresponding actual argument value is substituted.  Otherwise, the name had
+better have a global definition, and <EM>that</EM> value is substituted.  It
+just so happens that Scheme has predefined a zillion names before you start
+working, and most of those are names of primitive procedures.
+
+<P>(By the way, this explains why when you make a typing mistake in the name of
+a procedure you might see an error message that refers to variables, such as
+&quot;variable <CODE>frist</CODE> not bound.&quot; You might expect it to say &quot;<CODE>frist</CODE>
+is not a procedure,&quot; but the problem is no different from that of any other
+name that has no associated value.)
+
+<P>Now that we know the whole truth about <CODE>define</CODE>, we can use it in
+combination with the function-creating functions in these past two chapters.
+
+<P><PRE>&gt; (define <A NAME="g15"></A>square (same-arg-twice *))
+
+&gt; (square 7)
+49
+
+&gt; (define <A NAME="g16"></A>fourth-power (repeated square 2))
+
+&gt; (fourth-power 5)
+625
+</PRE>
+
+<P> 
+<H2>The Truth about <CODE>Let</CODE></H2>
+
+<P>In Chapter 7 we introduced <CODE>let</CODE> as an abbreviation for the
+situation in which we would otherwise define a helper procedure in order to
+give names to commonly-used values in a calculation.  We started with
+
+<P><PRE>(define (roots a b c)
+  (roots1 a b c (sqrt (- (* b b) (* 4 a c)))))
+
+(define (roots1 a b c discriminant)
+  (se (/ (+ (- b) discriminant) (* 2 a))
+      (/ (- (- b) discriminant) (* 2 a))))
+</PRE>
+
+<P>and introduced the new notation
+
+<P><PRE>(define (roots a b c)
+  (let ((discriminant (sqrt (- (* b b) (* 4 a c)))))
+    (se (/ (+ (- b) discriminant) (* 2 a))
+        (/ (- (- b) discriminant) (* 2 a)))))
+</PRE>
+
+<P>to avoid creating an otherwise-useless named procedure.  But now
+that we know about unnamed procedures, we can see that <CODE>let</CODE> is merely
+an abbreviation for creating and invoking an anonymous procedure:
+
+<P><PRE>(define (roots a b c)
+  <STRONG><BIG>(</BIG></STRONG>(lambda (discriminant)
+     (se (/ (+ (- b) discriminant) (* 2 a))
+         (/ (- (- b) discriminant) (* 2 a))))
+   <STRONG><BIG>(sqrt (- (* b b) (* 4 a c))))</BIG></STRONG>)
+</PRE>
+
+<P>What's shown in boldface above is the part that invokes the
+procedure created by the lambda, including the actual argument expression.
+
+<P>Just as the notation to define a procedure with parentheses around its name
+is an abbreviation for a <CODE>define</CODE> and a <CODE>lambda</CODE>, the <CODE>let</CODE>
+notation is an abbreviation for a <CODE>lambda</CODE> and an invocation.
+
+<P><H2>Name Conflicts</H2>
+
+<P>When a procedure is created inside another procedure, what happens if you
+use the same formal parameter name in both?
+
+<P><PRE>(define (f x)
+  (lambda (x) (+ x 3)))
+</PRE>
+
+<P>Answer: Don't do it.
+
+<P>What actually happens is that the inner <CODE>x</CODE> wins; that's the one that is
+substituted into the body.  But if you find yourself in this situation, you
+are almost certainly doing something wrong, such as using nondescriptive
+names like <CODE>x</CODE> for your variables.
+
+<P><H2>Named and Unnamed Functions</H2>
+
+<P>Although you've been running across the idea of function since high school
+algebra, you've probably never seen an <EM>unnamed</EM> function until now.
+<A NAME="g17"></A>
+<A NAME="g18"></A>
+The high school function notation, <EM>g</EM>(<EM>x</EM>)=3<EM>x</EM>+8, requires you to
+give the function a name (<EM>g</EM> in this case) when you create it.  Most of the
+functions you know, both in math and in programming, have names, such as
+logarithm or <CODE>first</CODE>.<A NAME="text2" HREF="lambda.html#ft2">[2]</A>
+
+<P>When do you want to name a function, and when not?  It may help to think
+about an analogy with numbers.  Imagine if every Scheme number had to have a
+name before you could use it.  You'd have to say
+
+<P><PRE>&gt; (define three 3)
+&gt; (define four 4)
+&gt; (+ three four)
+7
+</PRE>
+
+<P>This is analogous to the way we've dealt with procedures until now,
+giving each one a name.  Sometimes it's much easier to use a number
+directly, and it's silly to have to give it a name.
+
+<P>But sometimes it isn't silly.  A common example that we've seen earlier is
+
+<P><PRE>(define <A NAME="g19"></A>pi 3.141592654)
+
+(define (<A NAME="g20"></A>circle-area radius)
+  (* pi radius radius))
+
+(define (<A NAME="g21"></A>circumference radius)
+  (* 2 pi radius))
+
+(define (<A NAME="g22"></A>sphere-surface-area radius)
+  (* 4 pi radius radius))                                
+
+(define (<A NAME="g23"></A>sphere-volume radius)
+  (* (/ 4 3) pi radius radius radius))
+</PRE>
+
+<P>If we couldn't give a name to the number 3.141592654, then we'd
+have to type it over and over again.  Apart from the extra typing, our
+programs would be harder to read and understand.  Giving &pi; a name makes
+the procedures more self-documenting.  (That is, someone else who reads our
+procedures will have an easier time understanding what we meant.)
+
+<P>It's the same with procedures.  If we're going to use a procedure more than
+once, and if there's a meaningful name for it that will help clarify the
+program, then we define the procedure with <CODE>define</CODE> and give it a name.
+
+<P><PRE>(define (square x) (* x x))
+</PRE>
+
+<P><CODE>Square</CODE> deserves a name both because we use it often and
+because there is a good traditional name for it that everyone understands.
+More important, by giving <CODE>square</CODE> a name, we are shifting attention
+from the process by which it works (invoking the multiplication procedure)
+to its <EM>purpose,</EM> computing the square of a number.  From now on we
+can think about squaring as though it were a Scheme primitive.  This idea of
+naming something and forgetting the details of its implementation is what
+we've been calling &quot;abstraction.&quot;
+
+<P>On the other hand, if we have an unimportant procedure that we're using only
+once, we might as well create it with <CODE>lambda</CODE> and without a name.
+
+<P><PRE>&gt; (every (lambda (x) (last (bl x))) '(all together now))
+(L E O)
+</PRE>
+
+<P>We could have defined this procedure with the name <CODE>next-to-last</CODE>, but if we're never going to use it again, why bother?
+
+<P>Here's an example in which we use an obscure unnamed function to help
+us define one that's worth naming:
+
+<P><PRE>(define (<A NAME="g24"></A>backwards wd) (accumulate (lambda (a b) (word b a)) wd))
+
+&gt; (backwards 'yesterday)
+YADRETSEY
+
+&gt; (every backwards '(i saw her standing there))
+(I WAS REH GNIDNATS EREHT)
+</PRE>
+
+<P><H2>Pitfalls</H2>
+
+<P>It's very convenient that <CODE>define</CODE> has an abbreviated form to
+define a procedure using a hidden <CODE>lambda</CODE>, but because there are two
+notations that differ only subtly&mdash;one has an extra set of
+parentheses&mdash;you could use the wrong one by mistake.  If you say
+
+<P><PRE>(define (pi) 3.141592654)
+</PRE>
+
+<P>you're not defining a variable whose value is a number.  Instead
+the value of <CODE>pi</CODE> will be a <EM>procedure.</EM> It would then be an error
+to say
+
+<P><PRE>(* 2 pi)
+</PRE>
+
+<P>When should the body of your procedure be a <CODE>lambda</CODE> expression?
+It's easy to go overboard and say &quot;I'm writing a procedure so I guess I
+need <CODE>lambda</CODE>&quot; even when the procedure is supposed to return a word.
+
+<P>The secret is to remember the ideas of <EM>domain</EM> and <EM>range</EM> that
+we talked about in Chapter 2.  What is the range of the function
+you're writing?  Should it return a procedure?  If so, its body might be a
+<CODE>lambda</CODE> expression.  (It might instead be an invocation of a
+higher-order procedure, such as <CODE>repeated</CODE>, that returns a procedure.)
+If your procedure doesn't return a procedure, its body won't be a <CODE>lambda</CODE> expression.  (Of course your procedure might still use a <CODE>lambda</CODE>
+expression as an argument to some <EM>other</EM> procedure, such as <CODE>every</CODE>.)
+
+<P>For example, here is a procedure to keep the words of a sentence that contain
+the letter <CODE>h</CODE>.  The domain of the function is sentences, and its range
+is also sentences.  (That is, it takes a sentence as argument and returns a
+sentence as its value.)
+
+<P><PRE>(define (<A NAME="g25"></A>keep-h sent)
+  (keep (lambda (wd) (member? 'h wd)) sent))
+</PRE>
+
+<P>By contrast, here is a function of a letter that returns a
+<EM>procedure</EM> to keep words containing that letter.
+
+<P><PRE>(define (<A NAME="g26"></A>keeper letter)
+  (lambda (sent)
+    (keep (lambda (wd) (member? letter wd)) sent)))
+</PRE>
+
+<P>The procedure <CODE>keeper</CODE> has letters as its domain and procedures
+as its range.  The procedure <EM>returned by</EM> <CODE>keeper</CODE> has sentences
+as its domain and as its range, just as <CODE>keep-h</CODE> does.  In fact, we can
+use <CODE>keeper</CODE> to define <CODE>keep-h</CODE>:
+
+<P><PRE>(define keep-h (keeper 'h))
+</PRE>
+
+<P>Don't confuse the <EM>creation</EM> of a procedure with the <EM>invocation</EM> of one.  <CODE>Lambda</CODE> creates a procedure.  The procedure is
+invoked in response to an expression whose first subexpression represents
+that procedure.  That is, the first subexpression could be the <EM>name</EM>
+of the procedure, or it could be a <CODE>lambda</CODE> expression if you want to
+create a procedure and invoke it right away:
+
+<P><PRE>((lambda (x) (+ x 3)) 6)
+</PRE>
+
+<P>In particular, when you create a procedure, you specify its formal
+parameters&mdash;the <EM>names</EM> for its arguments.  When you invoke the
+procedure, you specify <EM>values</EM> for those arguments.  (In this example,
+the <CODE>lambda</CODE> expression includes the formal parameter <CODE>x</CODE>, but the
+invocation provides the actual argument <CODE>6</CODE>.)
+
+<P><H2>Boring Exercises</H2>
+
+<P>
+<B>9.1</B>&nbsp;&nbsp;What will Scheme print?  Figure it out yourself before you try it
+on the computer.
+
+<P><PRE>&gt; (lambda (x) (+ (* x 3) 4))
+
+&gt; ((lambda (x) (+ (* x 3) 4)) 10)
+
+&gt; (every (lambda (wd) (word (last wd) (bl wd)))
+         '(any time at all))
+
+&gt; ((lambda (x) (+ x 3)) 10 15)
+</PRE>
+
+<P>
+<B>9.2</B>&nbsp;&nbsp;Rewrite the following definitions so as to make the implicit <CODE>lambda</CODE>
+explicit.
+
+<P><PRE>(define (second stuff)
+  (first (bf stuff)))
+
+(define (make-adder num)
+  (lambda (x) (+ num x)))
+</PRE>
+
+<P>
+<B>9.3</B>&nbsp;&nbsp;What does this procedure do?
+
+<P><PRE>(define (<A NAME="g27"></A>let-it-be sent)
+  (accumulate (lambda (x y) y) sent))
+</PRE>
+
+<P>
+<H2>Real Exercises</H2>
+
+<P><B>9.4</B>&nbsp;&nbsp;The following program doesn't work.  Why not?  Fix it.
+
+<P><PRE>(define (<A NAME="g28"></A>who sent)
+  (every describe '(pete roger john keith)))
+
+(define (<A NAME="g29"></A>describe person)
+  (se person sent))
+</PRE>
+
+<P>It's supposed to work like this:
+
+<P><PRE>&gt; (who '(sells out))
+(pete sells out roger sells out john sells out keith sells out)
+</PRE>
+
+<P>
+In each of the following exercises, write the procedure in terms of <CODE>lambda</CODE> and higher-order functions.  Do not use named helper procedures.
+If you've read Part IV, don't use recursion, either.
+
+<P><B>9.5</B>&nbsp;&nbsp;Write <CODE>prepend-every</CODE>:
+<A NAME="prependevery"></A>
+
+<P><PRE>&gt; (prepend-every 's '(he aid he aid))
+(SHE SAID SHE SAID)
+
+&gt; (prepend-every 'anti '(dote pasto gone body))
+(ANTIDOTE ANTIPASTO ANTIGONE ANTIBODY)
+</PRE>
+
+<P>
+<B>9.6</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g30"></A>sentence-version</CODE> that takes a function <EM>f</EM> as
+its argument and returns a function <EM>g</EM>.  <EM>f</EM> should take a single word as
+argument.  <EM>g</EM> should take a sentence as argument and return the sentence
+formed by applying <EM>f</EM> to each word of that argument.
+<A NAME="senver"></A>
+
+<P><PRE>&gt; ((sentence-version first) '(if i fell))
+(I I F)
+
+&gt; ((sentence-version square) '(8 2 4 6))
+(64 4 16 36)
+</PRE>
+
+<P>
+<B>9.7</B>&nbsp;&nbsp;Write a procedure called <CODE><A NAME="g31"></A>letterwords</CODE> that takes as its
+arguments a letter and a sentence.  It returns a sentence containing only
+those words from the argument sentence that contain the argument letter:
+<A NAME="letwds"></A>
+
+<P><PRE>&gt; (letterwords 'o '(got to get you into my life))
+(GOT TO YOU INTO)
+</PRE>
+
+
+<P>
+<B>9.8</B>&nbsp;&nbsp;Suppose we're writing a program to play hangman.  In this game one player
+has to guess a secret word chosen by the other player, one letter at a time.
+You're going to write just one small part of this program: a procedure that
+takes as arguments the secret word and the letters guessed so far, 
+returning the word in which the guessing progress is displayed by including
+all the guessed letters along with underscores for the not-yet-guessed ones:
+
+<P><PRE>&gt; (<A NAME="g32"></A>hang 'potsticker 'etaoi)
+_OT_TI__E_
+</PRE>
+
+<P>Hint: You'll find it helpful to use the following procedure that determines
+how to display a single letter:
+
+<P><PRE>(define (<A NAME="g33"></A>hang-letter letter guesses)
+  (if (member? letter guesses)
+      letter
+      '_))
+</PRE>
+
+<P>
+<B>9.9</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g34"></A>common-words</CODE> that takes two sentences as
+arguments and returns a sentence containing only those words that appear
+both in the first sentence and in the second sentence.
+<A NAME="commwds"></A>
+
+
+<P>
+<B>9.10</B>&nbsp;&nbsp;In Chapter 2 we used a function called <CODE>appearances</CODE> that returns
+the number of times its first argument appears as a member of its second
+argument.  Implement <CODE><A NAME="g35"></A>appearances</CODE>.
+<A NAME="appear"></A>
+
+
+<P>
+<B>9.11</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g36"></A>unabbrev</CODE> that takes two sentences as
+arguments.  It should return a sentence that's the same as the first
+sentence, except that any numbers in the original sentence should be
+replaced with words from the second sentence.  A number <CODE>2</CODE> in the first
+sentence should be replaced with the second word of the second sentence, a
+<CODE>6</CODE> with the sixth word, and so on.
+
+<P><PRE>&gt; (unabbrev '(john 1 wayne fred 4) '(bill hank kermit joey))
+(JOHN BILL WAYNE FRED JOEY)
+
+&gt; (unabbrev '(i 3 4 tell 2) '(do you want to know a secret?))
+(I WANT TO TELL YOU)
+</PRE>
+
+<P>
+<B>9.12</B>&nbsp;&nbsp;Write a procedure <CODE>first-last</CODE> whose argument will be a sentence.  It
+should return a sentence containing only those words in the argument
+sentence whose first and last letters are the same:
+
+<P><PRE>&gt; (<A NAME="g37"></A>first-last '(california ohio nebraska alabama alaska massachusetts))
+(OHIO ALABAMA ALASKA)
+</PRE>
+
+<P>
+<B>9.13</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g38"></A>compose</CODE> that takes two functions <EM>f</EM> and <EM>g</EM>
+as arguments.  It should return a new function, the composition of its input
+functions, which computes <EM>f</EM>(<EM>g</EM>(<EM>x</EM>)) when passed the argument <EM>x</EM>.
+
+<P><PRE>&gt; ((compose sqrt abs) -25)
+5
+
+&gt; (define <A NAME="g39"></A>second (compose first bf))
+
+&gt; (second '(higher order function))
+ORDER
+</PRE>
+
+<P>
+<B>9.14</B>&nbsp;&nbsp;Write a procedure <CODE><A NAME="g40"></A>substitute</CODE> that takes three arguments, two
+words and a sentence.  It should return a version of the sentence, but with
+every instance of the second word replaced with the first word:
+
+<P><PRE>&gt; (substitute 'maybe 'yeah '(she loves you yeah yeah yeah))
+(SHE LOVES YOU MAYBE MAYBE MAYBE)
+</PRE>
+
+<P>
+<B>9.15</B>&nbsp;&nbsp;Many functions are applicable only to arguments in a certain domain and
+result in error messages if given arguments outside that domain.  For
+example, <CODE>sqrt</CODE> may require a nonnegative argument in a version of
+Scheme that doesn't include complex numbers.  (In <EM>any</EM> version of
+Scheme, <CODE>sqrt</CODE> will complain if its argument isn't a number at all!)
+Once a program gets an error message, it's impossible for that program to
+continue the computation.
+
+<P>Write a procedure <CODE><A NAME="g41"></A>type-check</CODE> that takes as arguments a
+one-argument procedure <CODE>f</CODE> and a one-argument predicate procedure <CODE>pred</CODE>.  <CODE>Type-check</CODE> should return a one-argument procedure that first
+applies <CODE>pred</CODE> to its argument; if that result is true, the procedure
+should return the value computed by applying <CODE>f</CODE> to the argument; if
+<CODE>pred</CODE> returns false, the new procedure should also return <CODE>#f</CODE>:
+
+<P><PRE>&gt; (define <A NAME="g42"></A>safe-sqrt (type-check sqrt number?))
+
+&gt; (safe-sqrt 16)
+4
+
+&gt; (safe-sqrt 'sarsaparilla)
+#F
+</PRE>
+
+<P>
+<B>9.16</B>&nbsp;&nbsp;In the language APL, most arithmetic functions can be applied either to a
+number, with the usual result, or to a <EM>vector</EM>&mdash;the APL name for a
+sentence of numbers&mdash;in which case the result is a new vector in which each
+element is the result of applying the function to the corresponding element
+of the argument.  For example, the function <CODE>sqrt</CODE> applied to <CODE>16</CODE>
+returns <CODE>4</CODE> as in Scheme, but <CODE>sqrt</CODE> can also be applied to a
+sentence such as <CODE>(16 49)</CODE> and it returns <CODE>(4 7)</CODE>.
+
+<P>Write a procedure <CODE><A NAME="g43"></A>aplize</CODE> that takes as its argument a
+one-argument procedure whose domain is numbers or words.  It should return
+an APLized procedure that also accepts sentences:
+
+<P><PRE>&gt; (define <A NAME="g44"></A>apl-sqrt (aplize sqrt))
+
+&gt; (apl-sqrt 36)
+6
+
+&gt; (apl-sqrt '(1 100 25 16))
+(1 10 5 4)
+</PRE>
+
+<P>
+<B>9.17</B>&nbsp;&nbsp;Write <CODE>keep</CODE> in terms of <CODE>every</CODE> and <CODE>accumulate</CODE>.
+
+
+<P>
+ 
+
+<HR>
+<A NAME="ft1" HREF="lambda.html#text1">[1]</A> It comes from a branch of mathematical logic called
+&quot;lambda calculus&quot; that's about the formal properties of functions.
+The inclusion of first-class functions in Lisp was inspired by this
+mathematical work, so Lisp borrowed the name <CODE>lambda</CODE>.<P>
+<A NAME="ft2" HREF="lambda.html#text2">[2]</A> Professional mathematicians do have a
+notation for unnamed functions, by the way.  They write (<EM>x</EM> &#x21a6; 3<EM>x</EM>+8).<P>
+<P><A HREF="../ss-toc2.html">(back to Table of Contents)</A><P>
+<A HREF="../ssch8/higher.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="bridge.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/stop.html b/js/games/nluqo.github.io/~bh/stop.html
new file mode 100644
index 0000000..a827708
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/stop.html
@@ -0,0 +1,284 @@
+<HTML>
+<HEAD>
+<TITLE>Stop Saying ``Computer Literacy''!</TITLE>
+</HEAD>
+<BODY>
+<H1>Stop Saying ``Computer Literacy''!</H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P>[A version of this paper was published in <EM>Classroom Computer
+News</EM> in 1983.]
+
+
+<P>As computers become more widely used in schools, educators have invented
+many different ways to use them.  The different uses for computers
+are based on quite diverse models of what the purposes of computer
+education should be.  One very common approach is based on the notion
+of ``computer literacy'': the idea that there is some basic familiarity
+with computers which <EM>all</EM> students need in order to compete in
+the job market, or to be informed citizens.  The purpose of this paper
+is to question whether that notion is valid.
+
+<H2>The Importance of Metaphor</H2>
+
+<P>Several educators have questioned the specific details of particular
+``literacy'' plans, while accepting the overall concept.  ``Computer
+literacy doesn't mean X,'' they say, ``it means Y.''  For example,
+Arthur Luehrmann says, ``[C]omputer literacy must also mean the ability
+to <EM>do</EM> computing, and not merely to recognize, identify, or be
+aware of alleged facts about computing.''  (Luehrmann, 1981)  His
+argument is that a computer curriculum should give students actual
+programming experience, not just reading about computers in a book.
+But Luehrmann accepts the concept of computer literacy itself, the
+idea that there is <EM>something</EM> which every student must learn.
+He questions only the details of just what this something is.
+
+<P>What I would like to do is call into question the claim that there
+is anything about computers which belongs in the school experience
+of <EM>every</EM> student.  I agree with Luehrmann that programming can
+be a valuable experience.  But the word ``literacy'' means more than
+that; it means that everyone must have the experience in order to
+be able to function at all in society.
+
+<P>Many people, hearing me make this argument, have complained that it
+is foolish to argue about a word.  ``Call it something else,
+then, and let's get on with deciding what it should be.''  This complaint
+misses the point, and indeed could be said to prove the point.  People
+who have become accustomed to the ``literacy'' idea find it very difficult
+even to entertain the question of whether there is any universally
+required computer experience.
+
+<P>The trouble is that the word ``literacy'' is a magic word, which conjures
+up a very strong metaphor.  Literacy in its original sense, knowing
+how to read, really <EM>is</EM> universally required in our society.
+Any educator who suggested eliminating reading from the curriculum
+would be laughed at, if not tarred and feathered.  Merely to say the
+phrase ``computer literacy'' definitively answers a question which
+has not explicitly been asked.  It's like the classic ``When
+did you stop beating your wife,'' but harder to recognize because
+it is so widely used.
+
+<P>One practical result of the literacy metaphor is that many decisions about
+computer education have been made in a kind of panic.  Parents call up the
+school committee to ask why their children are not being trained for the
+vital computer job skill.  These parents may not know just what that skill
+is, and neither does the school committee.  But they do know that the
+private school down the road has computers.
+
+<H2>What Everyone Needs to Know</H2>
+
+<P>It's quite true that more and more jobs involve the use of computers.
+That's different from saying that these jobs involve computer
+<EM>expertise</EM>.  Let's look at some examples.
+
+<P>A good example of a computer-using job
+is that of selling hamburgers at McDonald's.
+That machine behind the counter which looks like a cash register is
+actually a computer terminal.  When you order a Quarter-pounder with
+cheese, instead of ringing up whatever the price is, the counter person
+pushes a button which says ``Quarter-pounder with cheese.'' 
+The computer displays the price, but it also keeps track of how many
+of this item are sitting under the heat lamps.  If they're running
+short, the computer tells the cooks in the back to make more.  The
+same computer can tell the manager to buy more hamburger buns at the
+right time.  It's a pretty sophisticated system, and helps make McDonald's
+a low-overhead operation.
+
+<P>Now, what does the person behind the McDonald's counter need to know
+about computers?  He only needs to know that when you ask for a
+Quarter-pounder with cheese, he should push the button which says
+``Quarter-pounder with cheese.''  That's it.  Nothing about input
+unit, output unit, processor, and memory; nothing about programming
+either.
+
+<P>Perhaps a more common example is that of computer word processing.
+The word processor involves a much more intimate interaction with
+the computer than selling hamburgers.  Still, the manufacturers of
+word processing systems take pains to <EM>hide</EM> the computer, to
+make the way you operate the machine as much as possible like operating
+an ordinary typewriter.  What skills does a word processing operator
+need?  For the most part, exactly the same skills a secretary needed
+before word processing: good spelling and punctuation, touch typing,
+being able to read the boss's handwriting.  What the computer adds
+is mostly a matter of pushing the ``paragraph'' button instead of
+the carriage return and the tab.
+
+<P>There are more specifically computer-related skills, of course, like
+threading the fanfold paper into the printer.  But that's the sort
+of thing which is done differently for each specific model, and which
+is part of a very specific job training program.  It isn't what you'd
+teach in a ``computer literacy'' course for everyone.
+
+<P>Perhaps the point really is that there are too many <EM>different</EM>
+computer-related skills to teach all of them to every student.  Using
+a spreadsheet program, for example, is very different from using a
+word processor.  Using a microprocessor-controlled automobile engine
+tester is very different from either.  Neither ``this is the return
+key'' nor actual programming will help much with any of those job
+activities.
+
+<H2>An Analogy</H2>
+
+<P>Virtually everyone in our society deals with automobiles.  Each of
+us would do well to know about what goes on under the hood, and many
+people do.  But many don't, and they function okay.  When the car
+breaks down, they call the AAA.  Some people drive in unusual conditions,
+far from help, and those people may need to be self-reliant in the
+field of automobile repair.  But it would be silly to require an auto
+mechanics course for every student.  It would be even sillier to require
+an ``automobile literacy'' course in which students read about cars
+without using one.  Many students do find driver training worthwhile,
+but even that isn't required.  Some people don't drive; some grow
+up on farms and start driving tractors long before the official driver
+training age; some are taught by their parents.
+
+<H2>Reasons for Computer Literacy</H2>
+
+<P>I think the notion of computer literacy grew up in the first place
+as an accident of history, because of the great speed with which computers
+have become important.  Curriculum developers are, by and large, 30
+or 40 or 50 years old.  They grew up in a world without computers.
+Suddenly, they have had to face up to a shocking change in the very
+nature of the world around them.  In inventing computer literacy courses,
+they have designed a curriculum <EM>for themselves</EM>, not for the
+kids who have grown up with Pacman, automated bank tellers, and bar
+code readers in the supermarket.
+
+<P>Another, more sophisticated reason is a confusion about the role of
+education in social mobility.  Many people think that by learning
+to program computers one can get a good job.  The problem with this
+idea is that what works for a few people stops working when everyone
+does it.  Many years ago, hardly anyone had a high school diploma.
+Those who did have one could get the cream of the jobs.  A few decades
+ago, about half the population of the United States graduated from
+high school.  They didn't get the very best jobs--by then, you needed
+a <EM>college</EM> diploma for that--but they did get decent and fairly
+secure jobs.  Now, almost everyone has a high school diploma, and
+it's worthless.
+
+<P>Similarly, the day of the matchbook-cover computer school as the route
+to riches is already over.  There are many openings for computer programmers,
+but the jobs go to people with Computer Science doctorates, preferably
+with experience.  There is still room for the programming entrepreneur,
+but the people who succeed in that role are not the product of computer
+literacy courses.  They are computer enthusiasts who do it <EM>because it's
+fun</EM>, not because it's homework.
+
+<P>I believe that the effect of the ``computer literacy'' movement will
+be the opposite of what is intended.  In the early days, when very
+few schools offered such courses, their alumni really did have a competitive
+edge in the job market.  But as we approach the day when every school
+offers ``literacy'' courses, a day eagerly sought by those who believe
+in the literacy metaphor, there will be more ``literates'' than jobs.
+Those who have taken the courses won't find easy jobs.  But those
+who <EM>haven't</EM> taken the courses will be completely out of luck.
+Ironically, the literacy metaphor will become self-fulfilling, not
+because there is any real need for such training, but because employers
+will start demanding it as a filter for job applicants, just as there
+is no <EM>real</EM> basis for requiring a high school diploma for many
+jobs today.
+
+<P>It used to be that computer companies like IBM ran their own training
+program for their employees.  A friend of my family was a high school
+dropout who was hired by IBM as a keypunch operator, and through IBM's
+training courses learned to program.  She is now a very successful
+senior programmer.  That sort of opportunity isn't available any more;
+you need both a diploma and data processing experience to get hired
+at IBM.  The poor and the black, who are disproportionately high school
+dropouts, will find one more barrier to employment as ``computer literacy''
+joins the list of school subjects which some people pass and some
+fail.
+
+<H2>Another Analogy</H2>
+
+<P>For a moment, forget about the idea of survival skills, like reading,
+and think instead about the high school newspaper.  Some kids work
+on the newspaper and some don't.  For those who do, it is an incredibly
+valuable experience.  The value is <EM>not</EM> realized only for those
+students who go on to become professional journalists.  Everyone who
+participates learns writing skills, critical thinking skills, and
+the subtler skills of meeting deadlines, getting the job done, depending
+on themselves instead of on some adult.  I would recommend the experience
+to any young person.
+
+<P>But those who don't join the newspaper staff aren't unemployable.
+There are other ways to learn the same skills.  Also, some people
+may not learn those skills at all, but may learn different skills,
+in a different setting, perhaps even out of school.
+
+<P>Now imagine that for some reason there grew up a national movement
+for ``journalism literacy.''  Need I describe the results?  Aside
+from the economic and political disaster I've already mentioned, the
+quality of the newspapers themselves would go down.  The learning
+experience would become a much less valuable one, intrinsically, job
+status aside.
+
+<H2>So What Should We Be Doing?</H2>
+
+<P>If computer literacy is the wrong idea, what's the right idea?
+
+<P>One right idea, I think, is suggested by the newspaper analogy.  The
+computer can be an appealing medium for learning for some students,
+without being forced upon every student.  Computers are a general-purpose
+tool; they may appeal to different students in different ways.  One
+student may like graphics and animation.  Another may like electronic
+mail.  Another may prefer video games.  The architecture and scheduling
+of a computer facility should encourage all these diverse uses.
+
+<P>Another right idea is to make the computer available to students as
+a serious tool, in their lives <EM>right now</EM>, not as something they'll
+need later.  Probably the most important example of this approach
+is word processing.  Students have to write many papers, for English
+teachers, history teachers, and so on.  Word processing can make the
+mechanics of this task much easier, encouraging second drafts.  Instead
+of setting up a required course, try just letting students know that
+this facility is available to them if they want it.  But provide enough
+printers to handle the load!
+
+<P>Finally, for students who are interested, the computer can be valuable
+not as narrow job training, but as a medium for developing problem-solving
+skills.  It can also be a medium for developing independence, since
+not every student need be doing the same programming project at the
+same time.  This educational use of computer <EM>programming</EM> is
+the central idea behind the Logo approach to computer education
+(Papert, 1980).
+
+<H2>Conclusion</H2>
+
+<P>What's in a name?  A great deal, when the name brings in a strong
+hidden assumption about the sociology and economics of the job market.
+``Computer literacy'' implies some skill or knowledge which is
+necessary for every person to be able to cope with the computer-centered
+society.  This implication leads to certain specific policy decisions
+about computer education; for example, it leads to spreading out the
+available computer time (of which there is never enough) among a very
+large number of students, some of whom aren't interested.  The ones
+who <EM>are</EM> interested then don't get enough time to pursue their
+interest in any meaningful way.
+
+<P>The model implied by the literacy metaphor is false.  There are
+<EM>no</EM> universally valuable computer skills, or universally important
+facts about computers.  Changing the definition of ``computer literacy''
+to contain more programming experience, or more study of social implications,
+or more study of binary numbers, is missing the point.
+
+<P>The bad drives out the good.  As more and more schools adopt the ``literacy''
+metaphor, other schools are under terrible pressure to go along. 
+The day will come when the metaphor becomes self-fulfilling.  To prevent
+that, we must decide explicitly to reject this model
+for computer education.
+
+
+<H2>References</H2>
+
+<P>Luehrmann, Arthur.  "Computer Literacy--What Should It Be?"
+<CITE>The Mathematics Teacher</CITE> vol 74 no 9, Dec 1981.
+
+<P>Papert, Seymour.  <CITE>Mindstorms: Children, Computers, and Powerful Ideas</CITE>
+Basic Books, 1980.
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/sudoku.png b/js/games/nluqo.github.io/~bh/sudoku.png
new file mode 100644
index 0000000..6d5fa10
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/sudoku.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/tshirt.jpg b/js/games/nluqo.github.io/~bh/tshirt.jpg
new file mode 100644
index 0000000..14f1c96
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/tshirt.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/turkey-long.txt b/js/games/nluqo.github.io/~bh/turkey-long.txt
new file mode 100644
index 0000000..47460b4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/turkey-long.txt
@@ -0,0 +1,146 @@
+			How to Cook a Turkey
+
+Rub the bird inside and out with salt and pepper.  In a stewpan put the
+chopped gizzard and the neck and heart, to which add one bay leaf, one
+teaspoon of paprika, a half teaspoon of coriander, a clove of garlic,
+four cups of water, and salt to taste.  Let this simmer while you go ahead
+with the dressing.
+
+Dice the apple, one orange, in a bowl and add to this bowl a large can of
+crushed pineapple, the grated rind of one half lemon, one can of drained
+water chestnuts, three tablespoons of chopped, preserved ginger.
+
+In another bowl put two teaspoons of Colman's mustard, two teaspoons of
+caraway seed, three teaspoons of celery seed, two teaspoons of poppy seed,
+two and a half teaspoons of oregano, one well-crushed large bay leaf, one
+teaspoon black pepper, one half teaspoon of mace, four tablespoons of
+well-chopped parsley, four or five finely minced cloves of garlic, four
+cloves, minus the heads and well chopped, one half teaspoon of turmeric,
+four large, well-chopped onions, six well-chopped stalks of celery, one half
+teaspoon marjoram, one half teaspoon savory (summer savory if you can get
+it), and one tablespoon of poultry seasoning.  Some like sage, some like
+thyme.  Nobody, apparently, objects to poultry seasoning, which, ironically,
+contains both.  Salt to taste.
+
+In another bowl dump three packages of bread crumbs, bought at a bakery.
+Add to this three quarters of a pound of ground veal and one quarter of a
+pound of ground fresh pork and a quarter of a pound of butter and all the
+fat (first rendered) you have been able to find and pry loose from the
+turkey.  Mix in each bowl the contents of each bowl.  When each bowl is well
+mixed, mix the three of them together.  And mix it well.  Mix it with your
+hands.  Mix it until your forearms and wrists ache.  Then mix it some more.
+Now toss it enough so that it isn't any longer a doughy mass.
+
+Stuff your turkey, but not too full.  Pretty full, though.  Stuff the neck
+and tie the end.  Skewer the bird.  Tie the strings.  Turn on your oven full
+force and let it get red hot.  Put your bird on the drip pan, or, best of
+all, breast down in a rack.  In a cup make a paste consisting of the yolks
+of two eggs, a teaspoon of Colman's mustard, a clove of minced garlic, a
+tablespoon of onion juice (run an onion through your chopper and catch the
+juice), a half teaspoon of salt, two pinches of cayenne pepper, a teaspoon
+of lemon juice, and enough sifted flour to make a stiff paste.  Take a
+pastry brush or an ordinary big paintbrush and stand by.
+
+Put your bird into the red-hot oven.  Let it brown all over.  Remove the
+turkey.  Turn your oven down to 325 degrees.  Now, while the turkey is
+sizzling hot, paint it completely all over with the paste.  Put it back in
+the oven.  The paste will have set in a few minutes.  Drag it out again.
+Paint every nook and cranny of it once more.  Put it back in the oven.  Keep
+doing this until you haven't any more paste left.
+
+To the giblet-neck-liver-heart gravy that has been simmering add one cup of
+cider.  Don't let it cook any more.  Stir it well.  Keep it warm on top of
+the oven.  This is your basting fluid.  Baste the bird every fifteen minutes!
+That means you will baste it from twelve to fifteen times.  After the bird
+has cooked about an hour and a half turn it on its stomach, back in the air,
+and let it cook in that position until the last fifteen minutes, when you
+restore it to its back again.  That is, unless you use a rack.  If you use a
+rack don't turn it on its back until the last half hour.  It ought to cook
+at least four hours and a half to five hours and a half.
+
+When you remove it the turkey will be dead black.  You will think, "My God!
+I have ruined it."  Be calm.  Take a tweezer and pry loose the paste coating.
+It will come off readily.  Beneath this burnt, harmless, now worthless shell
+the bird will be golden and dark brown, succulent, giddy-making with wild
+aromas, crisp and crunchable and crackling.  The meat beneath this crazing
+panorama of lip-wetting skin will be wet, juice will spurt from it in tiny
+fountains high as the handle of the fork plunged into it; the meat will be
+white, crammed with mocking flavor, delirious with things that rush over
+your palate and are drowned and gone as fast as you can swallow; cut a
+little of it with a spoon, it will spread on bread as eagerly and readily as
+soft wurst.
+
+You do not have to be a carver to eat this turkey; speak harshly to it and
+it will fall apart.
+
+This is the end of it.  All but the dressing.  No pen, unless it were filled
+with Thompson's gravy, can describe Thompson's dressing, and there is not
+paper enough in the world to contain the thoughts and adjectives it would
+set down, and not marble enough to serve for its monuments.
+
+------------------------------
+
+...  I always ran it just around Thanksgiving.  The first year that column
+ran, it was received with broad grins.  All my readers thought I was kidding.
+The second year a few tried it, the rest kept on grinning.  The third year
+there were more converts.  About the time of the fourth year, the Domestic
+Science Editor of the paper asked me if I wouldn't give a lecture on How to
+Cook a Turkey before a group of women in the paper's auditorium.  Naturally,
+feeling the way I feel about women and food, I said yes.  [This guy's
+political views are a little incorrect.  He's a Republican, too.  --BH]
+I was sorry later.  When I got on that damned rostrum and looked out at
+those bright, merry faces all gathered to see a mere man make a jerk of
+himself fooling around with stuff they felt belonged in a woman's province,
+it was all I could do to keep from nancing out and just making a joke of the
+whole thing.  But then I got kind of sore.  I was going to demonstrate a
+simplified method.  I decided to snow them under.  And the complex way of
+cooking a turkey is really something.  On the platform was a glistening
+stove, a table with every known appliance.  There was a cupboard full of a
+great many spices.  Not all the spices.  Just the ones a woman could
+understand and accept.  The moral ones.  I started calling for things.
+Each new thing I called for, the Domestic Science Editor would hand me, and
+everything she handed me brought out a howl of delight from the women.
+Finally I had the stuffing all made.  They subsided from their mad, Bacchic
+laughter long enough to howl for the stuff to be passed around.  Wanted to
+smell it and laugh some more, I guess.  I handed the bowl to the Domestic
+Science gal and she gave it to a woman in the first row.  They started to
+pass it around.  I went to work on the turkey.  Kind of a complicated deal,
+fixing the bird to receive the dressing.  Halfway through I noticed the
+place was kind of still.  I looked up and called for the bowl of stuffing.
+It came up to the platform in perfect silence.  It was empty.  They'd eaten
+it raw.
+
+I quit fixing the turkey, said a few words about how to complete the job,
+summed them all up in a stare, and went on out.  I'm not reciting a personal
+triumph.  I'm recounting a feminine defeat.  They just didn't have anything
+to say, and they weren't laughing any more.  They'd eaten that whole damned
+bowlful of dressing raw.  I'm not saying that by the next day they hadn't
+half of them squirmed virtuously out of it by deciding I was an immoral sort
+of person even to know about such goings on and God help the daughter of any
+woman who was allowed to go out with me.  And 40 per cent of the other half,
+prodded, would admit that it was a nice enough dish, all right, but nobody
+had time to spend on such heathen goings on and if I had to cook three meals
+a day I'd soon find out.  This latter darkling saying is the defense women
+have successfully opposed to fine cooking ever since they found they could
+work on a man's pity and get away with it.
+
+Anyway, next year a very decent percentage of those who read the "How to Cook
+a Turkey" column actually tried it out.  It was reprinted in a booklet by a
+publishing firm.  And subsequently Chryson's, a high-toned card and jewelry
+establishment, bought the right to publish it as a holiday booklet.
+
+The thing is, all this took five years.
+
+------------------------------
+
+    -- "Joe, the Wounded Tennis Player"  by Morton Thompson
+
+
+Apparently he was a newspaper columnist.  The book is his memoirs, with
+stories about his stories, published in 1945.  Craig Claiborne's version
+is basically the same except that he uses the rind of a whole lemon,
+uses ground cloves instead of telling you to grind your own, and adds
+sage and thyme (and basil and chili powder) as well as the poultry
+seasoning.  And he doesn't go through all that about how to roast the
+turkey, just about how to make the stuffing.  And he thinks the title
+of the book has "Wonderful" instead of "Wounded." :-)
diff --git a/js/games/nluqo.github.io/~bh/turkey.html b/js/games/nluqo.github.io/~bh/turkey.html
new file mode 100644
index 0000000..9cb8ce1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/turkey.html
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<TITLE>Morton Thompson's Turkey Stuffing</TITLE>
+</HEAD>
+<BODY>
+<H1>Morton Thompson's Turkey Stuffing</H1>
+
+
+<P>From the book "Joe, the Wounded Tennis Player" by Morton Thompson,
+adapted by Craig Claiborne in the NY Times.
+
+<P><a href="turkey-long.txt">See the original Morton Thompson version</a>,
+including his complicated but wonderful roasting technique.  Don't be too
+offended by the sexism in the article; he lived a long time ago.
+
+<PRE>
+1 apple, peeled, cored, and diced
+1 orange, peeled, seeded, and diced
+1 no. 2 can crushed pineapple, drained
+rind of one lemon, grated
+3 tablespoons chopped preserved ginger
+2 five-oz cans water chestnuts, drained and coarsely chopped
+2 teaspoons powdered mustard
+2 teaspoons caraway seeds
+3 teaspoons celery seeds
+2 teaspoons poppy seeds
+2 1/2 teaspoons oregano
+1 crushed bay leaf
+1/2 teaspoon mace
+1/4 teaspoon ground cloves
+1/2 teaspoon turmeric
+1/2 teaspoon marjoram
+1/2 teaspoon summer savory
+1 tablespoon poultry seasoning
+3/4 teaspoon sage
+3/4 teaspoon thyme
+1/2 teaspoon basil
+1/2 teaspoon chili powder
+1/4 cup finely chopped parsley
+5 cloves garlic, finely minced
+6 large ribs celery, chopped
+4 large onions, peeled and chopped
+5 dashes Tabasco sauce
+1 tablespoon salt
+6 cups fresh bread crumbs, or 3 packages bread crumbs
+3/4 pound ground veal
+1/2 pound ground fresh pork or sausage
+1/4 pound butter
+1 16-pound to 20-pound turkey
+</PRE>
+
+<P>In one bowl, combine the diced apple, orange, crushed pineapple,
+lemon rind, ginger, and chopped water chestnuts.  Mix well.
+
+<P>In a second (huge) bowl, combine all the herbs and spices, the
+parsley, garlic, celery, onions, Tabasco, and salt.  Toss well.
+
+<P>Add the remaining ingredients and the contents of the first bowl.
+Blend everything well with the fingers.  Stuff the turkey and
+skewer it.  Roast according to any standard recipe.  Any leftover
+stuffing may be frozen and used later for chickens, ducks, or
+another turkey.  [Or just cooked on the stove and mixed in --BH]
+
+<P><ADDRESS>
+<A HREF="index.html"><CODE>www.cs.berkeley.edu/~bh</CODE></A>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/ucblogo2-tiny.gif b/js/games/nluqo.github.io/~bh/ucblogo2-tiny.gif
new file mode 100644
index 0000000..1bc5588
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ucblogo2-tiny.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/ucblogo3.gif b/js/games/nluqo.github.io/~bh/ucblogo3.gif
new file mode 100644
index 0000000..51a2ba3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/ucblogo3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/usermanual b/js/games/nluqo.github.io/~bh/usermanual
new file mode 100644
index 0000000..94e839a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/usermanual
@@ -0,0 +1,4197 @@
+Berkeley Logo User Manual
+
+ *	Copyright (C) 1993 by the Regents of the University of California
+ *
+ *      This program is free software: you can redistribute it and/or modify
+ *      it under the terms of the GNU General Public License as published by
+ *      the Free Software Foundation, either version 3 of the License, or
+ *      (at your option) any later version.
+ *
+ *      This program is distributed in the hope that it will be useful,
+ *      but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *      GNU General Public License for more details.
+ *
+ *      You should have received a copy of the GNU General Public License
+ *      along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+This is a program that is still being written.  Many things are missing,
+including adequate documentation.  This manual assumes that you already know
+how to program in Logo, and merely presents the details of this new
+implementation.  Read _Computer_Science_Logo_Style,_Volume_1:_
+_Symbolic_Computing_ by Brian Harvey (MIT Press, 1997) for a tutorial
+on Logo programming with emphasis on symbolic computation.
+
+Here are the special features of this dialect of Logo:
+
+	Source file compatible among Unix, DOS, Windows, and Mac platforms.
+
+	Random-access arrays.
+
+	Variable number of inputs to user-defined procedures.
+
+	Mutators for list structure (dangerous).
+
+	Pause on error, and other improvements to error handling.
+
+	Comments and continuation lines; formatting is preserved when
+	procedure definitions are saved or edited.
+
+	Terrapin-style tokenization (e.g., [2+3] is a list with one member)
+	but LCSI-style syntax (no special forms except TO).  The best of
+	both worlds.
+
+	First-class instruction and expression templates (see APPLY).
+
+	Macros.
+
+Features *not* found in Berkeley Logo include robotics, music, GUIs, animation,
+parallelism, and multimedia.  For those, buy a commercial version.
+
+
+GETTER/SETTER VARIBLE SYNTAX
+============================
+
+Logo distinguishes PROCEDURES from VARIABLES.  A procedure is a set of
+instructions to carry out some computation; a variable is a named
+container that holds a data value such as a number, word, list, or array.
+
+In traditional Logo syntax, a non-numeric word typed without punctuation
+represents a request to invoke the procedure named by that word.  A word
+typed with a preceding quotation mark represents the word itself.  For
+example, in the instruction
+	PRINT FIRST "WORD
+the procedures named FIRST and PRINT are invoked, but the procedure
+named WORD is not invoked; the word W-O-R-D is the input to FIRST.
+
+What about variables?  There are two things one can do with a variable:
+give it a value, and find out its value.  To give a variable a value,
+Logo provides the primitive procedure MAKE, which requires two inputs:
+the name of the variable and the new value to be assigned.  The first
+input, the name of the variable, is just a word, and if (as is almost
+always the case) the programmer wants to assign a value to a specific
+variable whose name is known in advance, that input is quoted, just
+as any known specific word would be:
+	MAKE "MY.VAR FIRST "WORD
+gives the variable named MY.VAR the value W (the first letter of WORD).
+
+To find the value of a variable, Logo provides the primitive procedure
+THING, which takes a variable name as its input, and outputs the value
+of the accessible variable with that name.  Thus
+	PRINT THING "MY.VAR
+will print W (supposing the MAKE above has been done).  Since finding
+the value of a specific, known variable name is such a common operation,
+Logo also provides an abbreviated notation that combines THING with quote:
+	PRINT :MY.VAR
+The colon (which Logo old-timers pronounce "dots") replaces THING and "
+in the earlier version of the instruction.
+
+Newcomers to Logo often complain about the need for all this punctuation.
+In particular, Logo programmers who learned about dots and quotes without
+also learning about THING wonder why an instruction such as
+	MAKE "NEW.VAR :OLD.VAR
+uses two different punctuation marks to identify the two variables.
+(Having read the paragraphs above, you will understand that actually
+both variable names are quoted, but the procedure THING is invoked to
+find the value of OLD.VAR, since it's that value, not OLD.VAR's name,
+that MAKE needs to know.  It wouldn't make sense to ask for THING of
+NEW.VAR, since we haven't given NEW.VAR a value yet.)
+
+Although Logo's punctuation rules make sense once understood, they
+do form a barrier to entry for the Logo beginner.  Why, then, couldn't
+Logo be designed so that an unpunctuated word would represent a
+procedure if there is a procedure by that name, or a variable if
+there is a variable by that name?  Then we could say
+	PRINT MY.VAR
+and Logo would realize that MY.VAR is the name of a variable, not
+of a procedure.  The traditional reason not to use this convention
+is that Logo allows the same word to name a procedure and a variable
+at the same time.  This is most often important for words that name
+data types, as in the following procedure:
+	TO PLURAL :WORD
+	OUTPUT WORD :WORD "S
+	END
+Here the name WORD is a natural choice for the input to PLURAL, since
+it describes the kind of input that PLURAL expects.  Within the procedure,
+we use WORD to represent Logo's primitive procedure that combines two
+input words to form a new, longer word; we use :WORD to represent the
+variable containing the input, whatever actual word is given when
+PLURAL is invoked.
+	? PRINT PLURAL "COMPUTER
+	COMPUTERS
+
+However, if a Logo instruction includes an unquoted word that is *not*
+the name of a procedure, Logo could look for a variable of that name
+instead.  This would allow a "punctuationless" Logo, ** PROVIDED THAT
+USERS WHO WANT TO WORK WITHOUT COLONS FOR VARIABLES CHOOSE VARIABLE
+NAMES THAT ARE NOT ALSO PROCEDURE NAMES. **
+
+What about assigning a value to a variable?  Could we do without
+the quotation mark on MAKE's first input?  Alas, no.  Although the
+first input to MAKE is *usually* a constant, known variable name,
+sometimes it isn't, as in this example:
+	TO INCREMENT :VAR
+	MAKE :VAR (THING :VAR)+1	; Note: it's not "VAR here!
+	END
+
+	? MAKE "X 5
+	? INCREMENT "X
+	? PRINT :X
+	6
+The procedure INCREMENT takes a variable name as its input and
+changes the value of that variable.  In this example there are
+two variables; the variable whose name is VAR, and whose value
+is the word X; and the variable whose name is X and whose value
+changes from 5 to 6.  Suppose we changed the behavior of MAKE so
+that it took the word after MAKE as the name of the variable to
+change; we would be unable to write INCREMENT:
+	TO INCREMENT :VAR	; nonworking!
+	MAKE VAR (THING VAR)+1
+	END
+This would assign a new value to VAR, not to X.
+
+What we can do is to allow an *alternative* to MAKE, a "setter"
+procedure for a particular variable.  The notation will be
+	? SETFOO 7
+	? PRINT FOO
+	7
+SETFOO is a "setter procedure" that takes one input (in this case
+the input 7) and assigns its value to the variable named FOO.
+
+Berkeley Logo allows users to choose either the traditional notation,
+in which case the same name can be used both for a procedure and for
+a variable, or the getter/setter notation, in which variable FOO is
+set with SETFOO and examined with FOO, but the same name can't be
+used for procedure and variable.
+
+Here is how this choice is allowed:  Berkeley Logo uses traditional notation,
+with procedures distinct from variables.  However, if there is a variable
+named AllowGetSet whose value is TRUE (which there is, by default, when
+Logo starts up), then if a Logo instruction refers to a *nonexistent*
+procedure (so that the error message "I don't know how to ..." would result),
+Logo tries the following two steps:
+
+	1.  If the name is at least four characters long, and the first three
+	characters are the letters SET (upper or lower case), and if the name
+	is followed in the instruction by another value, and if the name
+	without the SET is the name of a variable that already exists, then
+	Logo will invoke MAKE with its first input being the name without the
+	SET, and its second input being the following value.
+
+	2.  If step 1's conditions are not met, but the name is the name of an
+	accessible variable, then Logo will invoke THING with that name as
+	input, to find the variable's value.
+
+Step 1 requires that the variable already exist so that misspellings of names
+of SETxxx primitives (e.g., SETHEADING) will still be caught, instead of
+silently creating a new variable.  The command GLOBAL can be used to create
+a variable without giving it a value.
+
+One final point:  The TO command in Logo has always been a special
+case; the rest of the line starting with TO is not evaluated as
+ordinary Logo expressions are.  In particular, the colons used to
+mark the names of inputs to the procedure do not cause THING to be
+invoked.  They are merely mnemonic aids, reminding the Logo user
+that these words are names of variables.  (Arguably, this nonstantard
+behavior of TO adds to Logo beginners' confusion about colons.)
+To a programmer using colonless variable references, the colons in
+the TO line are unnecessary and meaningless.  Berkeley Logo therefore
+makes the colons optional:
+	TO FOO :IN1 :IN2
+and
+	TO FOO IN1 IN2
+are both allowed.
+
+
+ENTERING AND LEAVING LOGO
+=========================
+
+The process to start Logo depends on your operating system:
+
+Unix:	 Type the word {\tt logo} to the shell.  (The directory in which
+	 you've installed Logo must be in your path.)
+
+DOS:	 Change directories to the one containing Logo (probably
+	 C:\UCBLOGO).  Then type UCBLOGO for the large memory
+	 version, or BL for the 640K version.
+
+Mac:	 Double-click on the LOGO icon within the "UCB Logo" folder.
+
+Windows: Double-click on the UCBWLOGO icon in the UCBLOGO folder.
+
+To leave Logo, enter the command "bye".
+
+On startup, Logo looks for a file named "startup.lg" in the system Logo
+library and, if found, loads it.  Then it looks for "startup.lg" in the
+user's home directory, or the current directory, depending on the operating
+system, and loads that.  These startup files can be used to predefine
+procedures, e.g., to provide non-English names for primitive procedures.
+
+Under Unix, DOS, or Windows, if you include one or more filenames on the
+command line when starting Logo, those files will be loaded before the
+interpreter starts reading commands from your terminal.  If you load a file
+that executes some program that includes a "bye" command, Logo will run that
+program and exit.  You can therefore write standalone programs in Logo and run
+them with shell/batch scripts.  To support this technique, Logo does not print
+its usual welcoming and parting messages if you give file arguments to the
+logo command.
+
+If a command line argument is just a hyphen, then all command line arguments
+after the hyphen are not taken as filenames, but are instead collected in a
+list, one word per argument; the buried variable COMMAND.LINE contains that
+list of arguments, or the empty list if there are none.  On my Linux system,
+if the first line of an executable shell script is
+#!/usr/local/bin/logo -
+(note the hyphen) then the script can be given command line arguments and
+they all end up in :COMMAND.LINE along with the script's path.  Experiment.
+
+If you type your interrupt character (see table below) Logo will stop what
+it's doing and return to toplevel, as if you did THROW "TOPLEVEL.  If you
+type your quit character Logo will pause as if you did PAUSE.
+
+               wxWidgets       Unix        DOS/Windows          Mac
+
+toplevel         alt-S    usually ctrl-C     ctrl-Q      command-. (period)
+
+pause            alt-P    usually ctrl-\     ctrl-W      command-, (comma)
+
+If you have an environment variable called LOGOLIB whose value is the name of
+a directory, then Logo will use that directory instead of the default
+library.  If you invoke a procedure that has not been defined, Logo first
+looks for a file in the current directory named proc.lg where "proc" is the
+procedure name in lower case letters.  If such a file exists, Logo loads
+that file.  If the missing procedure is still undefined, or if there is no
+such file, Logo then looks in the library directory for a file named proc
+(no ".lg") and, if it exists, loads it.  If neither file contains a
+definition for the procedure, then Logo signals an error.  Several
+procedures that are primitive in most versions of Logo are included in the
+default library, so if you use a different library you may want to include
+some or all of the default library in it.
+
+
+TOKENIZATION
+============
+
+Names of procedures, variables, and property lists are case-insensitive.  So
+are the special words END, TRUE, and FALSE.  Case of letters is preserved
+in everything you type, however.
+
+Within square brackets, words are delimited only by spaces and square
+brackets.  [2+3] is a list containing one word.  Note, however, that the
+Logo primitives that interpret such a list as a Logo instruction or
+expression (RUN, IF, etc.) reparse the list as if it had not been typed
+inside brackets.
+
+After a quotation mark outside square brackets, a word is delimited by
+a space, a square bracket, or a parenthesis.
+
+A word not after a quotation mark or inside square brackets is delimited
+by a space, a bracket, a parenthesis, or an infix operator +-*/=<>.  Note
+that words following colons are in this category.  Note that quote and
+colon are not delimiters.  Each infix operator character is a word in
+itself, except that the two-character sequences <= >= and <> (the latter
+meaning not-equal) with no intervening space are recognized as a single
+word.
+
+A word consisting of a question mark followed by a number (e.g., ?37),
+when runparsed (i.e., where a procedure name is expected), is treated
+as if it were the sequence
+
+	( ? 37 )
+
+making the number an input to the ? procedure.  (See the discussion of
+templates, below.)  This special treatment does not apply to words read
+as data, to words with a non-number following the question mark, or if
+the question mark is backslashed.
+
+A line (an instruction line or one read by READLIST or READWORD) can be
+continued onto the following line if its last character is a tilde (~).
+READWORD preserves the tilde and the newline; READLIST does not.
+
+Lines read with READRAWLINE are never continued.
+
+An instruction line or a line read by READLIST (but not by READWORD)
+is automatically continued to the next line, as if ended with a tilde,
+if there are unmatched brackets, parentheses, braces, or vertical bars
+pending.  However, it's an error if the continuation line contains
+only the word END; this is to prevent runaway procedure definitions.
+Lines eplicitly continued with a tilde avoid this restriction.
+
+If a line being typed interactively on the keyboard is continued, either
+with a tilde or automatically, Logo will display a tilde as a prompt
+character for the continuation line.
+
+A semicolon begins a comment in an instruction line.  Logo ignores
+characters from the semicolon to the end of the line.  A tilde as the
+last character still indicates a continuation line, but not a continuation
+of the comment.  For example, typing the instruction
+
+	print "abc;comment ~
+	def
+
+will print the word abcdef.  Semicolon has no special meaning in data
+lines read by READWORD or READLIST, but such a line can later be reparsed
+using RUNPARSE and then comments will be recognized.
+
+The two-character sequence #! at the beginning of a line also starts a
+comment.  Unix users can therefore write a file containing Logo commands,
+starting with the line
+
+	#! /usr/local/bin/logo
+
+(or wherever your Logo executable lives) and the file will be executable
+directly from the shell.
+
+To include an otherwise delimiting character (including semicolon or tilde)
+in a word, precede it with backslash (\).  If the last character of a line
+is a backslash, then the newline character following the backslash will be
+part of the last word on the line, and the line continues onto the following
+line.  To include a backslash in a word, use \\.  If the combination
+backslash-newline is entered at the terminal, Logo will issue a backslash as
+a prompt character for the continuation line.  All of this applies to data
+lines read with READWORD or READLIST as well as to instruction lines.
+
+A line read with READRAWLINE has no special quoting mechanism; both
+backslash and vertical bar (described below) are just ordinary characters.
+
+An alternative notation to include otherwise delimiting characters in words is
+to enclose a group of characters in vertical bars.  All characters between
+vertical bars are treated as if they were letters.  In data read with READWORD
+the vertical bars are preserved in the resulting word.  In data read with
+READLIST (or resulting from a PARSE or RUNPARSE of a word) the vertical bars
+do not appear explicitly; all potentially delimiting characters (including
+spaces, brackets, parentheses, and infix operators) appear unmarked, but
+tokenized as though they were letters.  Within vertical bars, backslash may
+still be used; the only characters that must be backslashed in this context
+are backslash and vertical bar themselves.
+
+Characters entered between vertical bars are forever special, even if the
+word or list containing them is later reparsed with PARSE or RUNPARSE.
+Characters typed after a backslash are treated somewhat differently:  When a
+quoted word containing a backslashed character is runparsed, the backslashed
+character loses its special quality and acts thereafter as if typed normally.
+This distinction is important only if you are building a Logo expression out
+of parts, to be RUN later, and want to use parentheses.  For example,
+
+	PRINT RUN (SE "\( 2 "+ 3 "\))
+
+will print 5, but
+
+	RUN (SE "MAKE ""|(| 2)
+
+will create a variable whose name is open-parenthesis.  (Each example would
+fail if vertical bars and backslashes were interchanged.)
+
+A character entered with backslash is EQUALP to the same character without the
+backslash, but can be distinguished by the VBARREDP predicate.  (However,
+VBARREDP returns TRUE only for characters for which special treatment is
+necessary: whitespace, parentheses, brackets, infix operators, backslash,
+vertical bar, tilde, quote, question mark, colon, and semicolon.)
+
+
+DATA STRUCTURE PRIMITIVES
+=========================
+
+CONSTRUCTORS
+------------
+
+WORD word1 word2
+(WORD word1 word2 word3 ...)
+
+	outputs a word formed by concatenating its inputs.
+
+LIST thing1 thing2
+(LIST thing1 thing2 thing3 ...)
+
+	outputs a list whose members are its inputs, which can be any
+	Logo datum (word, list, or array).
+
+SENTENCE thing1 thing2
+SE thing1 thing2
+(SENTENCE thing1 thing2 thing3 ...)
+(SE thing1 thing2 thing3 ...)
+
+	outputs a list whose members are its inputs, if those inputs are
+	not lists, or the members of its inputs, if those inputs are lists.
+
+FPUT thing list
+
+	outputs a list equal to its second input with one extra member,
+	the first input, at the beginning.  If the second input is a word,
+	then the first input must be a one-letter word, and FPUT is
+	equivalent to WORD.
+
+LPUT thing list
+
+	outputs a list equal to its second input with one extra member,
+	the first input, at the end.  If the second input is a word,
+	then the first input must be a one-letter word, and LPUT is
+	equivalent to WORD with its inputs in the other order.
+
+ARRAY size
+(ARRAY size origin)
+
+	outputs an array of "size" members (must be a positive integer),
+	each of which initially is an empty list.  Array members can be
+	selected with ITEM and changed with SETITEM.  The first member of
+	the array is member number 1 unless an "origin" input (must be an
+	integer) is given, in which case the first member of the array has
+	that number as its index.  (Typically 0 is used as the origin if
+	anything.)  Arrays are printed by PRINT and friends, and can be
+	typed in, inside curly braces; indicate an origin with {a b c}@0.
+
+MDARRAY sizelist					(library procedure)
+(MDARRAY sizelist origin)
+
+	outputs a multi-dimensional array.  The first input must be a list
+	of one or more positive integers.  The second input, if present,
+	must be a single integer that applies to every dimension of the array.
+	Ex: (MDARRAY [3 5] 0) outputs a two-dimensional array whose members
+	range from [0 0] to [2 4].
+
+LISTTOARRAY list
+(LISTTOARRAY list origin)
+
+	outputs an array of the same size as the input list, whose members
+	are the members of the input list.
+
+ARRAYTOLIST array
+
+	outputs a list whose members are the members of the input array.
+	The first member of the output is the first member of the array,
+	regardless of the array's origin.
+
+COMBINE thing1 thing2					(library procedure)
+
+	if thing2 is a word, outputs WORD thing1 thing2.  If thing2 is a list,
+	outputs FPUT thing1 thing2.
+
+REVERSE list						(library procedure)
+
+	outputs a list whose members are the members of the input list, in
+	reverse order.
+
+GENSYM							(library procedure)
+
+	outputs a unique word each time it's invoked.  The words are of the
+	form G1, G2, etc.
+
+
+SELECTORS
+---------
+
+FIRST thing
+
+	if the input is a word, outputs the first character of the word.
+	If the input is a list, outputs the first member of the list.
+	If the input is an array, outputs the origin of the array (that
+	is, the INDEX OF the first member of the array).
+
+FIRSTS list
+
+	outputs a list containing the FIRST of each member of the input
+	list.  It is an error if any member of the input list is empty.
+	(The input itself may be empty, in which case the output is also
+	empty.)  This could be written as
+
+		to firsts :list
+		output map "first :list
+		end
+
+	but is provided as a primitive in order to speed up the iteration
+	tools MAP, MAP.SE, and FOREACH.
+ 
+		to transpose :matrix
+		if emptyp first :matrix [op []]
+		op fput firsts :matrix transpose bfs :matrix
+		end
+
+LAST wordorlist
+
+	if the input is a word, outputs the last character of the word.
+	If the input is a list, outputs the last member of the list.
+
+BUTFIRST wordorlist
+BF wordorlist
+
+	if the input is a word, outputs a word containing all but the first
+	character of the input.  If the input is a list, outputs a list
+	containing all but the first member of the input.
+
+BUTFIRSTS list
+BFS list
+
+	outputs a list containing the BUTFIRST of each member of the input
+	list.  It is an error if any member of the input list is empty or an
+	array.  (The input itself may be empty, in which case the output is
+	also empty.)  This could be written as
+
+		to butfirsts :list
+		output map "butfirst :list
+		end
+
+	but is provided as a primitive in order to speed up the iteration
+	tools MAP, MAP.SE, and FOREACH.
+
+BUTLAST wordorlist
+BL wordorlist
+
+	if the input is a word, outputs a word containing all but the last
+	character of the input.  If the input is a list, outputs a list
+	containing all but the last member of the input.
+
+ITEM index thing
+
+	if the "thing" is a word, outputs the "index"th character of the
+	word.  If the "thing" is a list, outputs the "index"th member of
+	the list.  If the "thing" is an array, outputs the "index"th
+	member of the array.  "Index" starts at 1 for words and lists;
+	the starting index of an array is specified when the array is
+	created.
+
+MDITEM indexlist array					(library procedure)
+
+	outputs the member of the multidimensional "array" selected by
+	the list of numbers "indexlist".
+
+PICK list						(library procedure)
+
+	outputs a randomly chosen member of the input list.
+
+REMOVE thing list					(library procedure)
+
+	outputs a copy of "list" with every member equal to "thing" removed.
+
+REMDUP list						(library procedure)
+
+	outputs a copy of "list" with duplicate members removed.  If two or
+	more members of the input are equal, the rightmost of those members
+	is the one that remains in the output.
+
+QUOTED thing						(library procedure)
+
+	outputs its input, if a list; outputs its input with a quotation
+	mark prepended, if a word.
+
+
+MUTATORS
+--------
+
+SETITEM index array value
+
+	command.  Replaces the "index"th member of "array" with the new
+	"value".  Ensures that the resulting array is not circular, i.e.,
+	"value" may not be a list or array that contains "array".
+
+MDSETITEM indexlist array value				(library procedure)
+
+	command.  Replaces the member of "array" chosen by "indexlist"
+	with the new "value".
+
+.SETFIRST list value
+
+	command.  Changes the first member of "list" to be "value".
+
+	WARNING:  Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of .SETFIRST can
+	lead to circular list structures, which will get some Logo primitives
+	into infinite loops, and to unexpected changes to other data
+	structures that share storage with the list being modified.
+
+.SETBF list value
+
+	command.  Changes the butfirst of "list" to be "value".
+
+	WARNING: Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of .SETBF can
+	lead to circular list structures, which will get some Logo primitives
+	into infinite loops; unexpected changes to other data structures that
+	share storage with the list being modified; or to Logo crashes and
+	coredumps if the butfirst of a list is not itself a list.
+
+.SETITEM index array value
+
+	command.  Changes the "index"th member of "array" to be "value",
+	like SETITEM, but without checking for circularity.
+
+	WARNING: Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of .SETITEM
+	can lead to circular arrays, which will get some Logo primitives into
+	infinite loops.
+
+PUSH stackname thing					(library procedure)
+
+	command.  Adds the "thing" to the stack that is the value of the
+	variable whose name is "stackname".  This variable must have a list
+	as its value; the initial value should be the empty list.  New
+	members are added at the front of the list.
+
+POP stackname						(library procedure)
+
+	outputs the most recently PUSHed member of the stack that is the
+	value of the variable whose name is "stackname" and removes that
+	member from the stack.
+
+QUEUE queuename thing					(library procedure)
+
+	command.  Adds the "thing" to the queue that is the value of the
+	variable whose name is "queuename".  This variable must have a list
+	as its value; the initial value should be the empty list.  New
+	members are added at the back of the list.
+
+DEQUEUE queuename					(library procedure)
+
+	outputs the least recently QUEUEd member of the queue that is the
+	value of the variable whose name is "queuename" and removes that
+	member from the queue.
+
+
+PREDICATES
+----------
+
+WORDP thing
+WORD? thing
+
+	outputs TRUE if the input is a word, FALSE otherwise.
+
+LISTP thing
+LIST? thing
+
+	outputs TRUE if the input is a list, FALSE otherwise.
+
+ARRAYP thing
+ARRAY? thing
+
+	outputs TRUE if the input is an array, FALSE otherwise.
+
+EMPTYP thing
+EMPTY? thing
+
+	outputs TRUE if the input is the empty word or the empty list,
+	FALSE otherwise.
+
+EQUALP thing1 thing2
+EQUAL? thing1 thing2
+thing1 = thing2
+
+	outputs TRUE if the inputs are equal, FALSE otherwise.  Two numbers
+	are equal if they have the same numeric value.  Two non-numeric words
+	are equal if they contain the same characters in the same order.  If
+	there is a variable named CASEIGNOREDP whose value is TRUE, then an
+	upper case letter is considered the same as the corresponding lower
+	case letter.  (This is the case by default.)  Two lists are equal if
+	their members are equal.  An array is only equal to itself; two
+	separately created arrays are never equal even if their members are
+	equal.  (It is important to be able to know if two expressions have
+	the same array as their value because arrays are mutable; if, for
+	example, two variables have the same array as their values then
+	performing SETITEM on one of them will also change the other.)
+
+NOTEQUALP thing1 thing2
+NOTEQUAL? thing1 thing2
+thing1 <> thing2
+
+	outputs FALSE if the inputs are equal, TRUE otherwise.  See EQUALP
+	for the meaning of equality for different data types.
+
+BEFOREP word1 word2
+BEFORE? word1 word2
+
+	outputs TRUE if word1 comes before word2 in ASCII collating sequence
+	(for words of letters, in alphabetical order).  Case-sensitivity is
+	determined by the value of CASEIGNOREDP.  Note that if the inputs are
+	numbers, the result may not be the same as with LESSP; for example,
+	BEFOREP 3 12 is false because 3 collates after 1.
+
+.EQ thing1 thing2
+
+	outputs TRUE if its two inputs are the same datum, so that applying a
+	mutator to one will change the other as well.  Outputs FALSE otherwise,
+	even if the inputs are equal in value.
+	WARNING: Primitives whose names start with a period are DANGEROUS.
+	Their use by non-experts is not recommended.  The use of mutators
+	can lead to circular data structures, infinite loops, or Logo crashes.
+
+MEMBERP thing1 thing2
+MEMBER? thing1 thing2
+
+	if "thing2" is a list or an array, outputs TRUE if "thing1" is EQUALP
+	to a member of "thing2", FALSE otherwise.  If "thing2" is
+	a word, outputs TRUE if "thing1" is a one-character word EQUALP to a
+	character of "thing2", FALSE otherwise.
+
+SUBSTRINGP thing1 thing2
+SUBSTRING? thing1 thing2
+
+	if "thing1" or "thing2" is a list or an array, outputs FALSE.  If
+	"thing2" is a word, outputs TRUE if "thing1" is EQUALP to a
+	substring of "thing2", FALSE otherwise.
+
+NUMBERP thing
+NUMBER? thing
+
+	outputs TRUE if the input is a number, FALSE otherwise.
+
+VBARREDP char
+VBARRED? char
+BACKSLASHEDP char                               (library procedure)
+BACKSLASHED? char                               (library procedure)
+
+	outputs TRUE if the input character was originally entered into Logo
+	within vertical bars (|) to prevent its usual special syntactic
+	meaning, FALSE otherwise.  (Outputs TRUE only if the character is a
+	backslashed space, tab, newline, or one of ()[]+-*/=<>":;\~?| )
+
+	The names BACKSLASHEDP and BACKSLASHED? are included in the Logo
+	library for backward compatibility with the former names of this
+	primitive, although it does *not* output TRUE for characters
+	originally entered with backslashes.
+
+
+QUERIES
+-------
+
+COUNT thing
+
+	outputs the number of characters in the input, if the input is a word;
+	outputs the number of members in the input, if it is a list
+	or an array.  (For an array, this may or may not be the index of the
+	last member, depending on the array's origin.)
+
+ASCII char
+
+	outputs the integer (between 0 and 255) that represents the input
+	character in the ASCII code.  Interprets control characters as
+	representing vbarred punctuation, and returns the character code
+	for the corresponding punctuation character without vertical bars.
+	(Compare RAWASCII.)
+
+RAWASCII char
+
+	outputs the integer (between 0 and 255) that represents the input
+	character in the ASCII code.  Interprets control characters as
+	representing themselves.  To find out the ASCII code of an arbitrary
+	keystroke, use RAWASCII RC.
+
+CHAR int
+
+	outputs the character represented in the ASCII code by the input,
+	which must be an integer between 0 and 255.
+
+MEMBER thing1 thing2
+
+	if "thing2" is a word or list and if MEMBERP with these inputs would
+	output TRUE, outputs the portion of "thing2" from the first instance
+	of "thing1" to the end.  If MEMBERP would output FALSE, outputs the
+	empty word or list according to the type of "thing2".  It is an error
+	for "thing2" to be an array.
+
+LOWERCASE word
+
+	outputs a copy of the input word, but with all uppercase letters
+	changed to the corresponding lowercase letter.
+
+UPPERCASE word
+
+	outputs a copy of the input word, but with all lowercase letters
+	changed to the corresponding uppercase letter.
+
+STANDOUT thing
+
+	outputs a word that, when printed, will appear like the input but
+	displayed in standout mode (boldface, reverse video, or whatever your
+	version does for standout).  The word contains machine-specific
+	magic characters at the beginning and end; in between is the printed
+	form (as if displayed using TYPE) of the input.  The output is always
+	a word, even if the input is of some other type, but it may include
+	spaces and other formatting characters.  Note: a word output by
+	STANDOUT while Logo is running on one machine will probably not have
+	the desired effect if printed on another type of machine.
+
+	In the Macintosh classic version, the way that standout works is
+	incompatible with the use of characters whose ASCII code is greater
+	than 127.  Therefore, you have a choice to make:  The instruction
+		CANINVERSE 0
+	disables standout, but enables the display of ASCII codes above 127,
+	and the instruction
+		CANINVERSE 1
+	restores the default situation in which standout is enabled and the
+	extra graphic characters cannot be printed.
+
+PARSE word
+
+	outputs the list that would result if the input word were entered
+	in response to a READLIST operation.  That is, PARSE READWORD has
+	the same value as READLIST for the same characters read.
+
+RUNPARSE wordorlist
+
+	outputs the list that would result if the input word or list were
+	entered as an instruction line; characters such as infix operators
+	and parentheses are separate members of the output.  Note that
+	sublists of a runparsed list are not themselves runparsed.
+
+
+COMMUNICATION
+=============
+
+TRANSMITTERS
+------------
+
+Note:  If there is a variable named PRINTDEPTHLIMIT with a nonnegative
+integer value, then complex list and array structures will be printed
+only to the allowed depth.  That is, members of members of... of members
+will be allowed only so far.  The members omitted because
+they are just past the depth limit are indicated by an ellipsis for each
+one, so a too-deep list of two members will print as [... ...].
+
+If there is a variable named PRINTWIDTHLIMIT with a nonnegative integer
+value, then only the first so many members of any array or
+list will be printed.  A single ellipsis replaces all missing data
+within the structure.  The width limit also applies to the number of
+characters printed in a word, except that a PRINTWIDTHLIMIT between 0 and 9
+will be treated as if it were 10 when applied to words.  This limit
+applies not only to the top-level printed datum but to any substructures
+within it.
+
+If there is a variable named FULLPRINTP whose value is TRUE, then words that
+were created using backslash or vertical bar (to include characters that
+would otherwise not be treated as part of a word) are printed with the
+backslashes or vertical bars shown, so that the printed result could be
+re-read by Logo to produce the same value.  If FULLPRINTP is TRUE then
+the empty word (however it was created) prints as ||.  (Otherwise it prints
+as nothing at all.)
+
+PRINT thing
+PR thing
+(PRINT thing1 thing2 ...)
+(PR thing1 thing2 ...)
+
+	command.  Prints the input or inputs to the current write stream
+	(initially the screen).  All the inputs are printed on a single
+	line, separated by spaces, ending with a newline.  If an input is a
+	list, square brackets are not printed around it, but brackets are
+	printed around sublists.  Braces are always printed around arrays.
+
+TYPE thing
+(TYPE thing1 thing2 ...)
+
+	command.  Prints the input or inputs like PRINT, except that no
+	newline character is printed at the end and multiple inputs are not
+	separated by spaces.  Note: printing to the terminal is ordinarily
+	"line buffered"; that is, the characters you print using TYPE will
+	not actually appear on the screen until either a newline character
+	is printed (for example, by PRINT or SHOW) or Logo tries to read
+	from the keyboard (either at the request of your program or after an
+	instruction prompt).  This buffering makes the program much faster
+	than it would be if each character appeared immediately, and in most
+	cases the effect is not disconcerting.  To accommodate programs that
+	do a lot of positioned text display using TYPE, Logo will force
+	printing whenever SETCURSOR is invoked.  This solves most buffering
+	problems.  Still, on occasion you may find it necessary to force the
+	buffered characters to be printed explicitly; this can be done using
+	the WAIT command.  WAIT 0 will force printing without actually
+	waiting.
+
+SHOW thing
+(SHOW thing1 thing2 ...)
+
+	command.  Prints the input or inputs like PRINT, except that
+	if an input is a list it is printed inside square brackets.
+
+
+RECEIVERS
+---------
+
+READLIST
+RL
+
+	reads a line from the read stream (initially the keyboard) and
+	outputs that line as a list.  The line is separated into members as
+	though it were typed in square brackets in an instruction.  If the
+	read stream is a file, and the end of file is reached, READLIST
+	outputs the empty word (not the empty list).  READLIST processes
+	backslash, vertical bar, and tilde characters in the read stream;
+	the output list will not contain these characters but they will have
+	had their usual effect.  READLIST does not, however, treat semicolon
+	as a comment character.
+
+READWORD
+RW
+
+	reads a line from the read stream and outputs that line as a word.
+	The output is a single word even if the line contains spaces,
+	brackets, etc.  If the read stream is a file, and the end of file is
+	reached, READWORD outputs the empty list (not the empty word).
+	READWORD processes backslash, vertical bar, and tilde characters in
+	the read stream.  In the case of a tilde used for line continuation,
+	the output word DOES include the tilde and the newline characters, so
+	that the user program can tell exactly what the user entered.
+	Vertical bars in the line are also preserved in the output.
+	Backslash characters are not preserved in the output.
+
+READRAWLINE
+
+	reads a line from the read stream and outputs that line as a word.
+	The output is a single word even if the line contains spaces,
+	brackets, etc.  If the read stream is a file, and the end of file is
+	reached, READRAWLINE outputs the empty list (not the empty word).
+	READRAWLINE outputs the exact string of characters as they appear
+	in the line, with no special meaning for backslash, vertical bar,
+	tilde, or any other formatting characters.
+
+READCHAR
+RC
+
+	reads a single character from the read stream and outputs that
+	character as a word.  If the read stream is a file, and the end of
+	file is reached, READCHAR outputs the empty list (not the empty
+	word).  If the read stream is the keyboard, echoing is turned off
+	when READCHAR is invoked, and remains off until READLIST or READWORD
+	is invoked or a Logo prompt is printed.  Backslash, vertical bar,
+	and tilde characters have no special meaning in this context.
+
+READCHARS num
+RCS num
+
+	reads "num" characters from the read stream and outputs those
+	characters as a word.  If the read stream is a file, and the end of
+	file is reached, READCHARS outputs the empty list (not the empty
+	word).  If the read stream is a terminal, echoing is turned off
+	when READCHARS is invoked, and remains off until READLIST or READWORD
+	is invoked or a Logo prompt is printed.  Backslash, vertical bar,
+	and tilde characters have no special meaning in this context.
+
+SHELL command
+(SHELL command wordflag)
+
+	Under Unix, outputs the result of running "command" as a shell
+	command.  (The command is sent to /bin/sh, not csh or other
+	alternatives.)  If the command is a literal list in the instruction
+	line, and if you want a backslash character sent to the shell, you
+	must use \\ to get the backslash through Logo's reader intact.  The
+	output is a list containing one member for each line generated by
+	the shell command.  Ordinarily each such line is represented by a
+	list in the output, as though the line were read using READLIST.  If
+	a second input is given, regardless of the value of the input, each
+	line is represented by a word in the output as though it were read
+	with READWORD.  Example:
+
+			to dayofweek
+			output first first shell [date]
+			end
+
+	This is "first first" to extract the first word of the first (and
+	only) line of the shell output.
+
+	Under MacOS X, SHELL works as under Unix.  SHELL is not available
+	under Mac Classic.
+
+	Under DOS, SHELL is a command, not an operation; it sends its
+	input to a DOS command processor but does not collect the result
+	of the command.
+
+	Under Windows, the wxWidgets version of Logo behaves as under Unix (except
+	that DOS-style commands are understood; use "dir" rather than "ls").
+	The non-wxWidgets version behaves like the DOS version.
+
+
+FILE ACCESS
+-----------
+
+SETPREFIX string
+
+	command.  Sets a prefix that will be used as the implicit beginning
+	of filenames in OPENREAD, OPENWRITE, OPENAPPEND, OPENUPDATE, LOAD,
+	and SAVE commands.  Logo will put the appropriate separator
+	character (slash for Unix, backslash for DOS/Windows, colon for
+	MacOS Classic) between the prefix and the filename entered by the user.
+	The input to SETPREFIX must be a word, unless it is the empty list,
+	to indicate that there should be no prefix.
+
+PREFIX
+
+	outputs the current file prefix, or [] if there is no prefix.
+	See SETPREFIX.
+
+OPENREAD filename
+
+	command.  Opens the named file for reading.  The read position is
+	initially at the beginning of the file.
+
+OPENWRITE filename
+
+	command.  Opens the named file for writing.  If the file already
+	existed, the old version is deleted and a new, empty file created.
+
+	OPENWRITE, but not the other OPEN variants, will accept as input
+	a two-element list, in which the first element must be a variable
+	name, and the second must be a positive integer.  A character
+	buffer of the specified size will be created.  When a SETWRITE is
+	done with this same list (in the sense of .EQ, not a copy, so
+	you must do something like
+		? make "buf [foo 100]
+		? openwrite :buf
+		? setwrite :buf
+		    [...]
+		? close :buf
+	and not just
+		? openwrite [foo 100]
+		? setwrite [foo 100]
+	and so on), the printed characters are stored in the buffer;
+	when a CLOSE is done with the same list as input, the characters
+	from the buffer (treated as one long word, even if spaces and
+	newlines are included) become the value of the specified variable.
+
+OPENAPPEND filename
+
+	command.  Opens the named file for writing.  If the file already
+	exists, the write position is initially set to the end of the old
+	file, so that newly written data will be appended to it.
+
+OPENUPDATE filename
+
+	command.  Opens the named file for reading and writing.  The read and
+	write position is initially set to the end of the old file, if any.
+	Note: each open file has only one position, for both reading and
+	writing.  If a file opened for update is both READER and WRITER at
+	the same time, then SETREADPOS will also affect WRITEPOS and vice
+	versa.  Also, if you alternate reading and writing the same file,
+	you must SETREADPOS between a write and a read, and SETWRITEPOS
+	between a read and a write.
+
+CLOSE filename
+
+	command.  Closes the named file.  If the file was currently the
+	reader or writer, then the reader or writer is changed to the
+	keyboard or screen, as if SETREAD [] or SETWRITE [] had been done.
+
+ALLOPEN
+
+	outputs a list whose members are the names of all files currently open.
+	This list does not include the dribble file, if any.
+
+CLOSEALL						(library procedure)
+
+	command.  Closes all open files.  Abbreviates
+	FOREACH ALLOPEN [CLOSE ?]
+
+ERASEFILE filename
+ERF filename
+
+	command.  Erases (deletes, removes) the named file, which should not
+	currently be open.
+
+DRIBBLE filename
+
+	command.  Creates a new file whose name is the input, like OPENWRITE,
+	and begins recording in that file everything that is read from the
+	keyboard or written to the terminal.  That is, this writing is in
+	addition to the writing to WRITER.  The intent is to create a
+	transcript of a Logo session, including things like prompt
+	characters and interactions.
+
+NODRIBBLE
+
+	command.  Stops copying information into the dribble file, and
+	closes the file.
+
+SETREAD filename
+
+	command.  Makes the named file the read stream, used for READLIST,
+	etc.  The file must already be open with OPENREAD or OPENUPDATE.  If
+	the input is the empty list, then the read stream becomes the
+	keyboard, as usual.  Changing the read stream does not close the
+	file that was previously the read stream, so it is possible to
+	alternate between files.
+
+SETWRITE filename
+
+	command.  Makes the named file the write stream, used for PRINT,
+	etc.  The file must already be open with OPENWRITE, OPENAPPEND, or
+	OPENUPDATE.  If the input is the empty list, then the write stream
+	becomes the screen, as usual.  Changing the write stream does
+	not close the file that was previously the write stream, so it is
+	possible to alternate between files.
+
+	If the input is a list, then its first element must be a variable
+	name, and its second and last element must be a positive integer; a
+	buffer of that many characters will be allocated, and will become the
+	writestream.  If the same list (same in the .EQ sense, not a copy)
+	has been used as input to OPENWRITE, then the already-allocated
+	buffer will be used, and the writer can be changed to and from this
+	buffer, with all the characters accumulated as in a file.  When the
+	same list is used as input to CLOSE, the contents of the buffer
+	(as an unparsed word, which may contain newline characters) will
+	become the value of the named variable.  For compatibility with
+	earlier versions, if the list has not been opened when the SETWRITE
+	is done, it will be opened implicitly, but the first SETWRITE after
+	this one will implicitly close it, setting the variable and freeing
+	the allocated buffer.
+
+READER
+
+	outputs the name of the current read stream file, or the empty list
+	if the read stream is the terminal.
+
+WRITER
+
+	outputs the name of the current write stream file, or the empty list
+	if the write stream is the screen.
+
+SETREADPOS charpos
+
+	command.  Sets the file pointer of the read stream file so that the
+	next READLIST, etc., will begin reading at the "charpos"th character
+	in the file, counting from 0.  (That is, SETREADPOS 0 will start
+	reading from the beginning of the file.)  Meaningless if the read
+	stream is the screen.
+
+SETWRITEPOS charpos
+
+	command.  Sets the file pointer of the write stream file so that the
+	next PRINT, etc., will begin writing at the "charpos"th character
+	in the file, counting from 0.  (That is, SETWRITEPOS 0 will start
+	writing from the beginning of the file.)  Meaningless if the write
+	stream is the screen.
+
+READPOS
+
+	outputs the file position of the current read stream file.
+
+WRITEPOS
+
+	outputs the file position of the current write stream file.
+
+EOFP
+EOF?
+
+	predicate, outputs TRUE if there are no more characters to be
+	read in the read stream file, FALSE otherwise.
+
+FILEP filename
+FILE? filename						(library procedure)
+
+	predicate, outputs TRUE if a file of the specified name exists
+	and can be read, FALSE otherwise.
+
+
+TERMINAL ACCESS
+---------------
+
+KEYP
+KEY?
+
+	predicate, outputs TRUE if there are characters waiting to be
+	read from the read stream.  If the read stream is a file, this
+	is equivalent to NOT EOFP.  If the read stream is the terminal,
+	then echoing is turned off and the terminal is set to CBREAK
+	(character at a time instead of line at a time) mode.  It
+	remains in this mode until some line-mode reading is requested
+	(e.g., READLIST).  The Unix operating system forgets about any
+	pending characters when it switches modes, so the first KEYP
+	invocation will always output FALSE.
+
+CLEARTEXT
+CT
+
+	command.  Clears the text window.
+
+SETCURSOR vector
+
+	command.  The input is a list of two numbers, the x and y
+	coordinates of a text window position (origin in the upper left
+	corner, positive direction is southeast).  The text cursor
+	is moved to the requested position.  This command also forces
+	the immediate printing of any buffered characters.
+
+CURSOR
+
+	outputs a list containing the current x and y coordinates of
+	the text cursor.  Logo may get confused about the current
+	cursor position if, e.g., you type in a long line that wraps
+	around or your program prints escape codes that affect the
+	screen strangely.
+
+SETMARGINS vector
+
+	command.  The input must be a list of two numbers, as for
+	SETCURSOR.  The effect is to clear the screen and then arrange for
+	all further printing to be shifted down and to the right according
+	to the indicated margins.  Specifically, every time a newline
+	character is printed (explicitly or implicitly) Logo will type
+	x_margin spaces, and on every invocation of SETCURSOR the margins
+	will be added to the input x and y coordinates.  (CURSOR will report
+	the cursor position relative to the margins, so that this shift will
+	be invisible to Logo programs.)  The purpose of this command is to
+	accommodate the display of terminal screens in lecture halls with
+	inadequate TV monitors that miss the top and left edges of the
+	screen.
+
+SETTEXTCOLOR foreground background
+SETTC foreground background
+
+	command (wxWidgets only).  The inputs are color numbers, or RGB color
+	lists, as for turtle graphics.  The foreground and background colors
+	for the textscreen/splitscreen text window are changed to the given
+	values.  The change affects text already printed as well as future
+	text printing; there is only one text color for the entire window.
+
+	command (non-wxWidgets Windows and DOS extended only).  The inputs are
+	color numbers, as for turtle graphics.  Future printing to the text
+	window will use the specified colors for foreground (the characters
+	printed) and background (the space under those characters).  Using
+	STANDOUT will revert to the default text window colors.  In the DOS
+	extended (ucblogo.exe) version, colors in textscreen mode are limited
+	to numbers 0-7, and the coloring applies only to text printed by the
+	program, not to the echoing of text typed by the user.  Neither
+	limitation applies to the text portion of splitscreen mode, which is
+	actually drawn as graphics internally.
+
+INCREASEFONT
+DECREASEFONT
+
+	command (wxWidgets only).  Increase or decrease the size of the font
+	used in the text and edit windows to the next larger or smaller
+	available size.
+
+SETTEXTSIZE height
+
+	command (wxWidgets only).  Set the "point size" of the font used in
+	the text and edit windows to the given integer input.  The desired
+	size may not be available, in which case the nearest available size
+	will be used.  Note: There is only a slight correlation between these
+	integers and pixel sizes.  Our rough estimate is that the number of
+	pixels of height is about 1.5 times the point size, but it varies for
+	different fonts.  See SETLABELHEIGHT for a different approach used for
+	the graphics window.
+
+TEXTSIZE
+
+	(wxWidgets only) outputs the "point size" of the font used in the text
+	and edit windows.  See SETTEXTSIZE for a discussion of font sizing.
+	See LABELSIZE for a different approach used for the graphics window.
+
+SETFONT fontname
+
+	command (wxWidgets only).  Set the font family used in all windows
+	to the one named by the input.  Try 'Courier' or 'Monospace' as likely
+	possibilities.  Not all computers have the same fonts installed.  It's
+	a good idea to stick with monospace fonts (ones in which all
+	characters have the same width).
+
+SETTEXTFONT fontname
+
+	command (wxWidgets only).  Set the font family used in the text window
+	to the one named by the input.  Try 'Courier' or 'Monospace' as likely
+	possibilities.  Not all computers have the same fonts installed.  It's
+	a good idea to stick with monospace fonts (ones in which all
+	characters have the same width).
+
+
+FONT
+
+	(wxWidgets only) outputs the name of the font family used in all
+	windows.
+
+
+ARITHMETIC
+==========
+
+NUMERIC OPERATIONS
+------------------
+
+SUM num1 num2
+(SUM num1 num2 num3 ...)
+num1 + num2
+
+	outputs the sum of its inputs.
+
+DIFFERENCE num1 num2
+num1 - num2
+
+	outputs the difference of its inputs.  Minus sign means infix
+	difference in ambiguous contexts (when preceded by a complete
+	expression), unless it is preceded by a space and followed
+	by a nonspace.  (See also MINUS.)
+
+MINUS num
+- num
+
+	outputs the negative of its input.  Minus sign means unary minus if
+	the previous token is an infix operator or open parenthesis, or it is
+	preceded by a space and followed by a nonspace.  There is a difference
+	in binding strength between the two forms:
+
+		MINUS 3 + 4	means	-(3+4)
+		- 3 + 4		means	(-3)+4
+
+PRODUCT num1 num2
+(PRODUCT num1 num2 num3 ...)
+num1 * num2
+
+	outputs the product of its inputs.
+
+QUOTIENT num1 num2
+(QUOTIENT num)
+num1 / num2
+
+	outputs the quotient of its inputs.  The quotient of two integers
+	is an integer if and only if the dividend is a multiple of the divisor.
+	(In other words, QUOTIENT 5 2 is 2.5, not 2, but QUOTIENT 4 2 is
+	2, not 2.0 -- it does the right thing.)  With a single input,
+	QUOTIENT outputs the reciprocal of the input.
+
+REMAINDER num1 num2
+
+	outputs the remainder on dividing "num1" by "num2"; both must be
+	integers and the result is an integer with the same sign as num1.
+
+MODULO num1 num2
+
+	outputs the remainder on dividing "num1" by "num2"; both must be
+	integers and the result is an integer with the same sign as num2.
+
+INT num
+
+	outputs its input with fractional part removed, i.e., an integer
+	with the same sign as the input, whose absolute value is the
+	largest integer less than or equal to the absolute value of
+	the input.
+
+ROUND num
+
+	outputs the nearest integer to the input.
+
+SQRT num
+
+	outputs the square root of the input, which must be nonnegative.
+
+POWER num1 num2
+
+	outputs "num1" to the "num2" power.  If num1 is negative, then
+	num2 must be an integer.
+
+EXP num
+
+	outputs e (2.718281828+) to the input power.
+
+LOG10 num
+
+	outputs the common logarithm of the input.
+
+LN num
+
+	outputs the natural logarithm of the input.
+
+SIN degrees
+
+	outputs the sine of its input, which is taken in degrees.
+
+RADSIN radians
+
+	outputs the sine of its input, which is taken in radians.
+
+COS degrees
+
+	outputs the cosine of its input, which is taken in degrees.
+
+RADCOS radians
+
+	outputs the cosine of its input, which is taken in radians.
+
+ARCTAN num
+(ARCTAN x y)
+
+	outputs the arctangent, in degrees, of its input.  With two
+	inputs, outputs the arctangent of y/x, if x is nonzero, or
+	90 or -90 depending on the sign of y, if x is zero.
+
+RADARCTAN num
+(RADARCTAN x y)
+
+	outputs the arctangent, in radians, of its input.  With two
+	inputs, outputs the arctangent of y/x, if x is nonzero, or
+	pi/2 or -pi/2 depending on the sign of y, if x is zero.
+
+	The expression 2*(RADARCTAN 0 1) can be used to get the
+	value of pi.
+
+ISEQ from to						(library procedure)
+
+	outputs a list of the integers from FROM to TO, inclusive.
+
+		? show iseq 3 7
+		[3 4 5 6 7]
+		? show iseq 7 3
+		[7 6 5 4 3]
+
+RSEQ from to count					(library procedure)
+
+	outputs a list of COUNT equally spaced rational numbers
+	between FROM and TO, inclusive.
+
+		? show rseq 3 5 9
+		[3 3.25 3.5 3.75 4 4.25 4.5 4.75 5]
+		? show rseq 3 5 5
+		[3 3.5 4 4.5 5]
+
+
+PREDICATES
+----------
+
+LESSP num1 num2
+LESS? num1 num2
+num1 < num2
+
+	outputs TRUE if its first input is strictly less than its second.
+
+GREATERP num1 num2
+GREATER? num1 num2
+num1 > num2
+
+	outputs TRUE if its first input is strictly greater than its second.
+
+LESSEQUALP num1 num2
+LESSEQUAL? num1 num2
+num1 <= num2
+
+	outputs TRUE if its first input is less than or equal to its second.
+
+GREATEREQUALP num1 num2
+GREATEREQUAL? num1 num2
+num1 >= num2
+
+	outputs TRUE if its first input is greater than or equal to its second.
+
+
+RANDOM NUMBERS
+--------------
+RANDOM num
+(RANDOM start end)
+
+	with one input, outputs a random nonnegative integer less than its
+	input, which must be a positive integer.
+
+	With two inputs, RANDOM outputs a random integer greater than or
+	equal to the first input, and less than or equal to the second
+	input.  Both inputs must be integers, and the first must be less
+	than the second.  (RANDOM 0 9) is equivalent to RANDOM 10;
+	(RANDOM 3 8) is equivalent to (RANDOM 6)+3.
+
+RERANDOM
+(RERANDOM seed)
+
+	command.  Makes the results of RANDOM reproducible.  Ordinarily
+	the sequence of random numbers is different each time Logo is
+	used.  If you need the same sequence of pseudo-random numbers
+	repeatedly, e.g. to debug a program, say RERANDOM before the
+	first invocation of RANDOM.  If you need more than one repeatable
+	sequence, you can give RERANDOM an integer input; each possible
+	input selects a unique sequence of numbers.
+
+
+PRINT FORMATTING
+----------------
+
+FORM num width precision
+
+	outputs a word containing a printable representation of "num",
+	possibly preceded by spaces (and therefore not a number for
+	purposes of performing arithmetic operations), with at least
+	"width" characters, including exactly "precision" digits after
+	the decimal point.  (If "precision" is 0 then there will be no
+	decimal point in the output.)
+
+	As a debugging feature, (FORM num -1 format) will print the
+	floating point "num" according to the C printf "format", to allow
+
+		to hex :num
+		op form :num -1 "|%08X %08X|
+		end
+
+	to allow finding out the exact result of floating point operations.
+	The precise format needed may be machine-dependent.
+
+
+BITWISE OPERATIONS
+------------------
+
+BITAND num1 num2
+(BITAND num1 num2 num3 ...)
+
+	outputs the bitwise AND of its inputs, which must be integers.
+
+BITOR num1 num2
+(BITOR num1 num2 num3 ...)
+
+	outputs the bitwise OR of its inputs, which must be integers.
+
+BITXOR num1 num2
+(BITXOR num1 num2 num3 ...)
+
+	outputs the bitwise EXCLUSIVE OR of its inputs, which must be
+	integers.
+
+BITNOT num
+
+	outputs the bitwise NOT of its input, which must be an integer.
+
+ASHIFT num1 num2
+
+	outputs "num1" arithmetic-shifted to the left by "num2" bits.
+	If num2 is negative, the shift is to the right with sign
+	extension.  The inputs must be integers.
+
+LSHIFT num1 num2
+
+	outputs "num1" logical-shifted to the left by "num2" bits.
+	If num2 is negative, the shift is to the right with zero fill.
+	The inputs must be integers.
+
+
+LOGICAL OPERATIONS
+==================
+
+AND tf1 tf2
+(AND tf1 tf2 tf3 ...)
+
+	outputs TRUE if all inputs are TRUE, otherwise FALSE.  All inputs
+	must be TRUE or FALSE.  (Comparison is case-insensitive regardless
+	of the value of CASEIGNOREDP.  That is, "true" or "True" or "TRUE"
+	are all the same.)  An input can be a list, in which case it is
+	taken as an expression to run; that expression must produce a TRUE
+	or FALSE value.  List expressions are evaluated from left to right;
+	as soon as a FALSE value is found, the remaining inputs are not
+	examined.  Example:
+		MAKE "RESULT AND [NOT (:X = 0)] [(1 / :X) > .5]
+	to avoid the division by zero if the first part is false.
+
+OR tf1 tf2
+(OR tf1 tf2 tf3 ...)
+
+	outputs TRUE if any input is TRUE, otherwise FALSE.  All inputs
+	must be TRUE or FALSE.  (Comparison is case-insensitive regardless
+	of the value of CASEIGNOREDP.  That is, "true" or "True" or "TRUE"
+	are all the same.)  An input can be a list, in which case it is
+	taken as an expression to run; that expression must produce a TRUE
+	or FALSE value.  List expressions are evaluated from left to right;
+	as soon as a TRUE value is found, the remaining inputs are not
+	examined.  Example:
+		IF OR :X=0 [some.long.computation] [...]
+	to avoid the long computation if the first condition is met.
+
+NOT tf
+
+	outputs TRUE if the input is FALSE, and vice versa.  The input can be
+	a list, in which case it is taken as an expression to run; that
+	expression must produce a TRUE or FALSE value.
+
+
+GRAPHICS
+========
+
+Berkeley Logo provides traditional Logo turtle graphics with one turtle.
+Multiple turtles, dynamic turtles, and collision detection are not supported.
+This is the most hardware-dependent part of Logo; some features may exist
+on some machines but not others.  Nevertheless, the goal has been to make
+Logo programs as portable as possible, rather than to take fullest advantage
+of the capabilities of each machine.  In particular, Logo attempts to scale
+the screen so that turtle coordinates [-100 -100] and [100 100] fit on the
+graphics window, and so that the aspect ratio is 1:1.
+
+The center of the graphics window (which may or may not be the entire
+screen, depending on the machine used) is turtle location [0 0].  Positive
+X is to the right; positive Y is up.  Headings (angles) are measured in
+degrees clockwise from the positive Y axis.  (This differs from the common
+mathematical convention of measuring angles counterclockwise from the
+positive X axis.)  The turtle is represented as an isoceles triangle; the
+actual turtle position is at the midpoint of the base (the short side).
+However, the turtle is drawn one step behind its actual position, so that
+the display of the base of the turtle's triangle does not obscure a line
+drawn perpendicular to it (as would happen after drawing a square).
+
+Colors are, of course, hardware-dependent.  However, Logo provides partial
+hardware independence by interpreting color numbers 0 through 7 uniformly
+on all computers:
+
+	0  black	1  blue		2  green	3  cyan
+	4  red		5  magenta	6  yellow	7 white
+
+Where possible, Logo provides additional user-settable colors; how many
+are available depends on the hardware and operating system environment.
+If at least 16 colors are available, Logo tries to provide uniform
+initial settings for the colors 8-15:
+
+	 8  brown	 9  tan		10  forest	11  aqua
+	12  salmon	13  purple	14  orange	15  grey
+
+Logo begins with a black background and white pen.
+
+
+TURTLE MOTION
+-------------
+
+FORWARD dist
+FD dist
+
+	moves the turtle forward, in the direction that it's facing, by
+	the specified distance (measured in turtle steps).
+
+BACK dist
+BK dist
+
+	moves the turtle backward, i.e., exactly opposite to the direction
+	that it's facing, by the specified distance.  (The heading of the
+	turtle does not change.)
+
+LEFT degrees
+LT degrees
+
+	turns the turtle counterclockwise by the specified angle, measured
+	in degrees (1/360 of a circle).
+
+RIGHT degrees
+RT degrees
+
+	turns the turtle clockwise by the specified angle, measured in
+	degrees (1/360 of a circle).
+
+SETPOS pos
+
+	moves the turtle to an absolute position in the graphics window.  The
+	input is a list of two numbers, the X and Y coordinates.
+
+SETXY xcor ycor
+
+	moves the turtle to an absolute position in the graphics window.  The
+	two inputs are numbers, the X and Y coordinates.
+
+SETX xcor
+
+	moves the turtle horizontally from its old position to a new
+	absolute horizontal coordinate.  The input is the new X
+	coordinate.
+
+SETY ycor
+
+	moves the turtle vertically from its old position to a new
+	absolute vertical coordinate.  The input is the new Y
+	coordinate.
+
+SETHEADING degrees
+SETH degrees
+
+	turns the turtle to a new absolute heading.  The input is
+	a number, the heading in degrees clockwise from the positive
+	Y axis.
+
+HOME
+
+	moves the turtle to the center of the screen.  Equivalent to
+	SETPOS [0 0] SETHEADING 0.
+
+ARC angle radius
+
+	draws an arc of a circle, with the turtle at the center, with the
+	specified radius, starting at the turtle's heading and extending
+	clockwise through the specified angle.  The turtle does not move.
+
+TURTLE MOTION QUERIES
+---------------------
+
+POS
+
+	outputs the turtle's current position, as a list of two
+	numbers, the X and Y coordinates.
+
+XCOR							(library procedure)
+
+	outputs a number, the turtle's X coordinate.
+
+YCOR							(library procedure)
+
+	outputs a number, the turtle's Y coordinate.
+
+HEADING
+
+	outputs a number, the turtle's heading in degrees.
+
+TOWARDS pos
+
+	outputs a number, the heading at which the turtle should be
+	facing so that it would point from its current position to
+	the position given as the input.
+
+SCRUNCH
+
+	outputs a list containing two numbers, the X and Y scrunch
+	factors, as used by SETSCRUNCH.  (But note that SETSCRUNCH
+	takes two numbers as inputs, not one list of numbers.)
+
+
+TURTLE AND WINDOW CONTROL
+-------------------------
+
+SHOWTURTLE
+ST
+
+	makes the turtle visible.
+
+HIDETURTLE
+HT
+
+	makes the turtle invisible.  It's a good idea to do this while
+	you're in the middle of a complicated drawing, because hiding
+	the turtle speeds up the drawing substantially.
+
+CLEAN
+
+	erases all lines that the turtle has drawn on the graphics window.
+	The turtle's state (position, heading, pen mode, etc.) is not
+	changed.
+
+CLEARSCREEN
+CS
+
+	erases the graphics window and sends the turtle to its initial
+	position and heading.  Like HOME and CLEAN together.
+
+WRAP
+
+	tells the turtle to enter wrap mode:  From now on, if the turtle
+	is asked to move past the boundary of the graphics window, it
+	will "wrap around" and reappear at the opposite edge of the
+	window.  The top edge wraps to the bottom edge, while the left
+	edge wraps to the right edge.  (So the window is topologically
+	equivalent to a torus.)  This is the turtle's initial mode.
+	Compare WINDOW and FENCE.
+
+WINDOW
+
+	tells the turtle to enter window mode:  From now on, if the turtle
+	is asked to move past the boundary of the graphics window, it
+	will move offscreen.  The visible graphics window is considered
+	as just part of an infinite graphics plane; the turtle can be
+	anywhere on the plane.  (If you lose the turtle, HOME will bring
+	it back to the center of the window.)  Compare WRAP and FENCE.
+
+FENCE
+
+	tells the turtle to enter fence mode:  From now on, if the turtle
+	is asked to move past the boundary of the graphics window, it
+	will move as far as it can and then stop at the edge with an
+	"out of bounds" error message.  Compare WRAP and WINDOW.
+
+FILL
+
+	fills in a region of the graphics window containing the turtle
+	and bounded by lines that have been drawn earlier.  This is not
+	portable; it doesn't work for all machines, and may not work
+	exactly the same way on different machines.
+
+FILLED color instructions
+
+	runs the instructions, remembering all points visited by turtle
+	motion commands, starting *and ending* with the turtle's initial
+	position.  Then draws (ignoring penmode) the resulting polygon,
+	in the current pen color, filling the polygon with the given color,
+	which can be a color number or an RGB list.  The instruction list
+	cannot include another FILLED invocation.
+
+LABEL text
+
+	takes a word or list as input, and prints the input on the
+	graphics window, starting at the turtle's position.
+
+SETLABELHEIGHT height
+
+	command (wxWidgets only).  Takes a positive integer argument and tries
+	to set the font size so that the character height (including
+	descenders) is that many turtle steps.  This will be different from
+	the number of screen pixels if SETSCRUNCH has been used.  Also, note
+	that SETSCRUNCH changes the font size to try to preserve this height
+	in turtle steps.  Note that the query operation corresponding to this
+	command is LABELSIZE, not LABELHEIGHT, because it tells you the width
+	as well as the height of characters in the current font.
+
+TEXTSCREEN
+TS
+
+	rearranges the size and position of windows to maximize the
+	space available in the text window (the window used for
+	interaction with Logo).  The details differ among machines.
+	Compare SPLITSCREEN and FULLSCREEN.
+
+FULLSCREEN
+FS
+
+	rearranges the size and position of windows to maximize the space
+	available in the graphics window.  The details differ among machines.
+	Compare SPLITSCREEN and TEXTSCREEN.
+
+	Since there must be a text window to allow printing (including the
+	printing of the Logo prompt), Logo automatically switches from
+	fullscreen to splitscreen whenever anything is printed.
+
+	In the DOS version, switching from fullscreen to splitscreen loses the
+	part of the picture that's hidden by the text window.  [This design
+	decision follows from the scarcity of memory, so that the extra memory
+	to remember an invisible part of a drawing seems too expensive.]
+
+SPLITSCREEN
+SS
+
+	rearranges the size and position of windows to allow some room for
+	text interaction while also keeping most of the graphics window
+	visible.  The details differ among machines.  Compare TEXTSCREEN
+	and FULLSCREEN.
+
+SETSCRUNCH xscale yscale
+
+	adjusts the aspect ratio and scaling of the graphics display.
+	After this command is used, all further turtle motion will be
+	adjusted by multiplying the horizontal and vertical extent of
+	the motion by the two numbers given as inputs.  For example,
+	after the instruction "SETSCRUNCH 2 1" motion at a heading of
+	45 degrees will move twice as far horizontally as vertically.
+	If your squares don't come out square, try this.  (Alternatively,
+	you can deliberately misadjust the aspect ratio to draw an ellipse.)
+
+	In wxWidgets only, SETSCRUNCH also changes the size of the text font
+	used for the LABEL command to try to keep the height of characters
+	scaled with the vertical turtle step size.
+
+	For all modern computers For DOS machines, the scale factors are
+	initially set according to what the hardware claims the aspect ratio
+	is, but the hardware sometimes lies.  For DOS, the values set by
+	SETSCRUNCH are remembered in a file (called SCRUNCH.DAT) and are
+	automatically put into effect when a Logo session begins.
+
+REFRESH
+
+	(command) tells Logo to remember the turtle's motions so that they
+	can be used for high-resolution printing (wxWidgets) or to refresh
+	the graphics window if it is moved, resized, or overlayed
+	(non-wxWidgets).  This is the default.
+
+NOREFRESH
+
+	(command) tells Logo not to remember the turtle's motions, which may
+	be useful to save time and memory if your program is interactive or
+	animated, rather than drawing a static picture you'll want to print
+	later (wxWidgets).  In non-wxWidgets versions, using NOREFRESH may
+	prevent Logo from restoring the graphics image after the window is
+	moved, resized, or overlayed.
+
+
+TURTLE AND WINDOW QUERIES
+-------------------------
+
+SHOWNP
+SHOWN?
+
+	outputs TRUE if the turtle is shown (visible), FALSE if the
+	turtle is hidden.  See SHOWTURTLE and HIDETURTLE.
+
+SCREENMODE
+
+	outputs the word TEXTSCREEN, SPLITSCREEN, or FULLSCREEN depending
+	on the current screen mode.
+
+TURTLEMODE
+
+	outputs the word WRAP, FENCE, or WINDOW depending on the current
+	turtle mode.
+
+LABELSIZE
+
+	(wxWidgets only) outputs a list of two positive integers, the width
+	and height of characters displayed by LABEL measured in turtle steps
+	(which will be different from screen pixels if SETSCRUNCH has been
+	used).  There is no SETLABELSIZE because the width and height of a
+	font are not separately controllable, so the inverse of this operation
+	is SETLABELHEIGHT, which takes just one number for the desired height.
+
+
+PEN AND BACKGROUND CONTROL
+--------------------------
+
+The turtle carries a pen that can draw pictures.  At any time the pen
+can be UP (in which case moving the turtle does not change what's on the
+graphics screen) or DOWN (in which case the turtle leaves a trace).
+If the pen is down, it can operate in one of three modes: PAINT (so that it
+draws lines when the turtle moves), ERASE (so that it erases any lines
+that might have been drawn on or through that path earlier), or REVERSE
+(so that it inverts the status of each point along the turtle's path).
+
+PENDOWN
+PD
+
+	sets the pen's position to DOWN, without changing its mode.
+
+PENUP
+PU
+
+	sets the pen's position to UP, without changing its mode.
+
+PENPAINT
+PPT
+
+	sets the pen's position to DOWN and mode to PAINT.
+
+PENERASE
+PE
+
+	sets the pen's position to DOWN and mode to ERASE.
+
+PENREVERSE
+PX
+
+	sets the pen's position to DOWN and mode to REVERSE.
+	(This may interact in system-dependent ways with use of color.)
+
+SETPENCOLOR colornumber.or.rgblist
+SETPC colornumber.or.rgblist
+
+	sets the pen color to the given number, which must be a nonnegative
+	integer.  There are initial assignments for the first 16 colors:
+
+	 0  black	 1  blue	 2  green	 3  cyan
+	 4  red		 5  magenta	 6  yellow	 7 white
+	 8  brown	 9  tan		10  forest	11  aqua
+	12  salmon	13  purple	14  orange	15  grey
+
+	but other colors can be assigned to numbers by the PALETTE command.
+	Alternatively, sets the pen color to the given RGB values (a list of
+	three nonnegative numbers less than 100 specifying the percent
+	saturation of red, green, and blue in the desired color).
+
+SETPALETTE colornumber rgblist
+
+	sets the actual color corresponding to a given number, if allowed by
+	the hardware and operating system.  Colornumber must be an integer
+	greater than or equal to 8.  (Logo tries to keep the first 8 colors
+	constant.)  The second input is a list of three nonnegative numbers
+	less than 100 specifying the percent saturation of red, green, and
+	blue in the desired color.
+
+SETPENSIZE size
+
+	sets the thickness of the pen.  The input is either a single positive
+	integer or a list of two positive integers (for horizontal and
+	vertical thickness).  Some versions pay no attention to the second
+	number, but always have a square pen.
+
+SETPENPATTERN pattern
+
+	sets hardware-dependent pen characteristics.  This command is
+	not guaranteed compatible between implementations on different
+	machines.
+
+SETPEN list						(library procedure)
+
+	sets the pen's position, mode, thickness, and hardware-dependent
+	characteristics according to the information in the input list, which
+	should be taken from an earlier invocation of PEN.
+
+SETBACKGROUND colornumber.or.rgblist
+SETBG colornumber.or.rgblist
+
+	set the screen background color by slot number or RGB values.
+	See SETPENCOLOR for details.
+
+
+PEN QUERIES
+-----------
+
+PENDOWNP
+PENDOWN?
+
+	outputs TRUE if the pen is down, FALSE if it's up.
+
+PENMODE
+
+	outputs one of the words PAINT, ERASE, or REVERSE according to
+	the current pen mode.
+
+PENCOLOR
+PC
+
+	outputs a color number, a nonnegative integer that is associated with
+	a particular color, or a list of RGB values if such a list was used as
+	the most recent input to SETPENCOLOR.  There are initial assignments
+	for the first 16 colors:
+
+	 0  black	 1  blue	 2  green	 3  cyan
+	 4  red		 5  magenta	 6  yellow	 7 white
+	 8  brown	 9  tan		10  forest	11  aqua
+	12  salmon	13  purple	14  orange	15  grey
+
+	but other colors can be assigned to numbers by the PALETTE command.
+
+PALETTE colornumber
+
+	outputs a list of three nonnegative numbers less than 100 specifying
+	the percent saturation of red, green, and blue in the color associated
+	with the given number.
+
+PENSIZE
+
+
+	outputs a list of two positive integers, specifying the horizontal
+	and vertical thickness of the turtle pen.  (In some implementations,
+	including wxWidgets, the two numbers are always equal.)
+
+PENPATTERN
+
+	outputs system-specific pen information.
+
+PEN							(library procedure)
+
+	outputs a list containing the pen's position, mode, thickness, and
+	hardware-specific characteristics, for use by SETPEN.
+
+BACKGROUND
+BG
+
+	outputs the graphics background color, either as a slot number or
+	as an RGB list, whichever way it was set.  (See PENCOLOR.)
+
+
+SAVING AND LOADING PICTURES
+---------------------------
+
+SAVEPICT filename
+
+	command.  Writes a file with the specified name containing the
+	state of the graphics window, including any nonstandard color
+	palette settings, in Logo's internal format.  This picture can
+	be restored to the screen using LOADPICT.  The format is not
+	portable between platforms, nor is it readable by other programs.
+	See EPSPICT to export Logo graphics for other programs.
+
+LOADPICT filename
+
+	command.  Reads the specified file, which must have been
+	written by a SAVEPICT command, and restores the graphics
+	window and color palette settings to the values stored in
+	the file.  Any drawing previously on the screen is cleared.
+
+EPSPICT filename
+
+	command.  Writes a file with the specified name, containing
+	an Encapsulated Postscript (EPS) representation of the state
+	of the graphics window.  This file can be imported into other
+	programs that understand EPS format.  Restrictions: the
+	drawing cannot use FILL, PENERASE, or PENREVERSE; any
+	such instructions will be ignored in the translation to
+	Postscript form.
+
+
+MOUSE QUERIES
+-------------
+
+
+MOUSEPOS
+
+	outputs the coordinates of the mouse, provided that it's within the
+	graphics window, in turtle coordinates.  If the mouse is outside the
+	graphics window, then the last position within the window is returned.
+	Exception:  If a mouse button is pressed within the graphics window
+	and held while the mouse is dragged outside the window, the mouse's
+	position is returned as if the window were big enough to include it.
+
+CLICKPOS
+
+	outputs the coordinates that the mouse was at when a mouse button
+	was most recently pushed, provided that that position was within the
+	graphics window, in turtle coordinates.  (wxWidgets only)
+
+BUTTONP
+BUTTON?
+
+	outputs TRUE if a mouse button is down and the mouse is over the
+	graphics window.  Once the button is down, BUTTONP remains true until
+	the button is released, even if the mouse is dragged out of the
+	graphics window.
+
+BUTTON
+
+	outputs 0 if no mouse button has been pushed inside the Logo window
+	since the last call to BUTTON.  Otherwise, it outputs an integer
+	between 1 and 3 indicating which button was most recently pressed.
+	Ordinarily 1 means left, 2 means right, and 3 means center, but
+	operating systems may reconfigure these.
+
+
+
+WORKSPACE MANAGEMENT
+====================
+
+PROCEDURE DEFINITION
+--------------------
+
+TO procname :input1 :input2 ...				(special form)
+
+	command.  Prepares Logo to accept a procedure definition.  The
+	procedure will be named "procname" and there must not already
+	be a procedure by that name.  The inputs will be called "input1"
+	etc.  Any number of inputs are allowed, including none.  Names
+	of procedures and inputs are case-insensitive.
+
+	Unlike every other Logo procedure, TO takes as its inputs the
+	actual words typed in the instruction line, as if they were
+	all quoted, rather than the results of evaluating expressions
+	to provide the inputs.  (That's what "special form" means.)
+
+	This version of Logo allows variable numbers of inputs to a
+	procedure.  After the procedure name come four kinds of
+	things, *in this order*:
+
+	    1.   0 or more REQUIRED inputs    :FOO :FROBOZZ
+	    2.   0 or more OPTIONAL inputs    [:BAZ 87] [:THINGO 5+9]
+	    3.   0 or 1 REST input            [:GARPLY]
+	    4.   0 or 1 DEFAULT number        5
+
+	Every procedure has a MINIMUM, DEFAULT, and MAXIMUM
+	number of inputs.  (The latter can be infinite.)
+
+	The MINIMUM number of inputs is the number of required inputs,
+	which must come first.  A required input is indicated by the
+
+			:inputname
+
+	notation.
+
+	After all the required inputs can be zero or more optional inputs,
+	each of which is represented by the following notation:
+
+			[:inputname default.value.expression]
+
+	When the procedure is invoked, if actual inputs are not supplied
+	for these optional inputs, the default value expressions are
+	evaluated to set values for the corresponding input names.  The
+	inputs are processed from left to right, so a default value
+	expression can be based on earlier inputs.  Example:
+
+			to proc :inlist [:startvalue first :inlist]
+
+	If the procedure is invoked by saying
+
+			proc [a b c]
+
+	then the variable INLIST will have the value [A B C] and the
+	variable STARTVALUE will have the value A.  If the procedure
+	is invoked by saying
+
+			(proc [a b c] "x)
+
+	then INLIST will have the value [A B C] and STARTVALUE will
+	have the value X.
+
+	After all the required and optional input can come a single "rest"
+	input, represented by the following notation:
+
+			[:inputname]
+
+	This is a rest input rather than an optional input because there
+	is no default value expression.  There can be at most one rest
+	input.  When the procedure is invoked, the value of this inputname
+	will be a list containing all of the actual inputs provided that
+	were not used for required or optional inputs.  Example:
+
+			to proc :in1 [:in2 "foo] [:in3 "baz] [:in4]
+
+	If this procedure is invoked by saying
+
+			proc "x
+
+	then IN1 has the value X, IN2 has the value FOO, IN3 has the value
+	BAZ, and IN4 has the value [] (the empty list).  If it's invoked
+	by saying
+
+			(proc "a "b "c "d "e)
+
+	then IN1 has the value A, IN2 has the value B, IN3 has the value C,
+	and IN4 has the value [D E].
+
+	The MAXIMUM number of inputs for a procedure is infinite if a
+	rest input is given; otherwise, it is the number of required
+	inputs plus the number of optional inputs.
+
+	The DEFAULT number of inputs for a procedure, which is the number
+	of inputs that it will accept if its invocation is not enclosed
+	in parentheses, is ordinarily equal to the minimum number.  If
+	you want a different default number you can indicate that by
+	putting the desired default number as the last thing on the
+	TO line.  example:
+
+			to proc :in1 [:in2 "foo] [:in3] 3
+
+	This procedure has a minimum of one input, a default of three
+	inputs, and an infinite maximum.
+
+	Logo responds to the TO command by entering procedure definition
+	mode.  The prompt character changes from "?" to ">" and whatever
+	instructions you type become part of the definition until you
+	type a line containing only the word END.
+
+DEFINE procname text
+
+	command.  Defines a procedure with name "procname" and text "text".
+	If there is already a procedure with the same name, the new
+	definition replaces the old one.  The text input must be a list
+	whose members are lists.  The first member is a list of inputs;
+	it looks like a TO line but without the word TO, without the
+	procedure name, and without the colons before input names.  In
+	other words, the members of this first sublist are words for
+	the names of required inputs and lists for the names of optional
+	or rest inputs.  The remaining sublists of the text input make
+	up the body of the procedure, with one sublist for each instruction
+	line of the body.  (There is no END line in the text input.)
+	It is an error to redefine a primitive procedure unless the variable
+	REDEFP has the value TRUE.
+
+TEXT procname
+
+	outputs the text of the procedure named "procname" in the form
+	expected by DEFINE: a list of lists, the first of which describes
+	the inputs to the procedure and the rest of which are the lines of
+	its body.  The text does not reflect formatting information used
+	when the procedure was defined, such as continuation lines and
+	extra spaces.
+
+FULLTEXT procname
+
+	outputs a representation of the procedure "procname" in which
+	formatting information is preserved.  If the procedure was defined
+	with TO, EDIT, or LOAD, then the output is a list of words.  Each
+	word represents one entire line of the definition in the form
+	output by READWORD, including extra spaces and continuation lines.
+	The last member of the output represents the END line.  If the
+	procedure was defined with DEFINE, then the output is a list of
+	lists.  If these lists are printed, one per line, the result will
+	look like a definition using TO.  Note: the output from FULLTEXT
+	is not suitable for use as input to DEFINE!
+
+COPYDEF newname oldname
+
+	command.  Makes "newname" a procedure identical to "oldname".
+	The latter may be a primitive.  If "newname" was already defined,
+	its previous definition is lost.  If "newname" was already a
+	primitive, the redefinition is not permitted unless the variable
+	REDEFP has the value TRUE.
+
+	Note: dialects of Logo differ as to the order of inputs to COPYDEF.
+	This dialect uses "MAKE order," not "NAME order."
+
+
+VARIABLE DEFINITION
+-------------------
+
+MAKE varname value
+
+	command.  Assigns the value "value" to the variable named "varname",
+	which must be a word.  Variable names are case-insensitive.  If a
+	variable with the same name already exists, the value of that
+	variable is changed.  If not, a new global variable is created.
+
+NAME value varname					(library procedure)
+
+	command.  Same as MAKE but with the inputs in reverse order.
+
+LOCAL varname
+LOCAL varnamelist
+(LOCAL varname1 varname2 ...)
+
+	command.  Accepts as inputs one or more words, or a list of
+	words.  A variable is created for each of these words, with
+	that word as its name.  The variables are local to the
+	currently running procedure.  Logo variables follow dynamic
+	scope rules; a variable that is local to a procedure is
+	available to any subprocedure invoked by that procedure.
+	The variables created by LOCAL have no initial value; they
+	must be assigned a value (e.g., with MAKE) before the procedure
+	attempts to read their value.
+
+LOCALMAKE varname value				(library procedure)
+
+	command.  Makes the named variable local, like LOCAL, and
+	assigns it the given value, like MAKE.
+
+THING varname
+:quoted.varname
+
+	outputs the value of the variable whose name is the input.
+	If there is more than one such variable, the innermost local
+	variable of that name is chosen.  The colon notation is an
+	abbreviation not for THING but for the combination
+
+				thing "
+
+	so that :FOO means THING "FOO.
+
+GLOBAL varname
+GLOBAL varnamelist
+(GLOBAL varname1 varname2 ...)
+
+	command.  Accepts as inputs one or more words, or a list of
+	words.  A global variable is created for each of these words, with
+	that word as its name.  The only reason this is necessary is that
+	you might want to use the "setter" notation SETXYZ for a variable
+	XYZ that does not already have a value; GLOBAL "XYZ makes that legal.
+	Note: If there is currently a local variable of the same name, this
+	command does *not* make Logo use the global value instead of the
+	local one.
+
+
+PROPERTY LISTS
+--------------
+
+Note: Names of property lists are always case-insensitive.  Names of
+individual properties are case-sensitive or case-insensitive depending
+on the value of CASEIGNOREDP, which is TRUE by default.
+
+In principle, every possible name is the name of a property list, which
+is initially empty.  So Logo never gives a "no such property list" error,
+as it would for undefined procedure or variable names.  But the primitive
+procedures that deal with "all" property lists (CONTENTS, PLISTS, etc.)
+list only nonempty ones.  To "erase" a property list (see ERASE below)
+means to make it empty, removing all properties from it.
+
+PPROP plistname propname value
+
+	command.  Adds a property to the "plistname" property list
+	with name "propname" and value "value".
+
+GPROP plistname propname
+
+	outputs the value of the "propname" property in the "plistname"
+	property list, or the empty list if there is no such property.
+
+REMPROP plistname propname
+
+	command.  Removes the property named "propname" from the
+	property list named "plistname".
+
+PLIST plistname
+
+	outputs a list whose odd-numbered members are the names, and
+	whose even-numbered members are the values, of the properties
+	in the property list named "plistname".  The output is a copy
+	of the actual property list; changing properties later will not
+	magically change a list output earlier by PLIST.
+
+
+PREDICATES
+----------
+
+PROCEDUREP name
+PROCEDURE? name
+
+	outputs TRUE if the input is the name of a procedure.
+
+PRIMITIVEP name
+PRIMITIVE? name
+
+	outputs TRUE if the input is the name of a primitive procedure
+	(one built into Logo).  Note that some of the procedures
+	described in this document are library procedures, not primitives.
+
+DEFINEDP name
+DEFINED? name
+
+	outputs TRUE if the input is the name of a user-defined procedure,
+	including a library procedure.
+
+NAMEP name
+NAME? name
+
+	outputs TRUE if the input is the name of a variable.
+
+PLISTP name
+PLIST? name
+
+	outputs TRUE if the input is the name of a *nonempty* property list.
+	(In principle every word is the name of a property list; if you haven't
+	put any properties in it, PLIST of that name outputs an empty list,
+	rather than giving an error message.)
+
+
+QUERIES
+-------
+
+Note:  All procedures whose input is indicated as "contentslist" will
+accept a single word (taken as a procedure name), a list of words (taken
+as names of procedures), or a list of three lists as described under
+the CONTENTS command above.
+
+CONTENTS
+
+	outputs a "contents list," i.e., a list of three lists containing
+	names of defined procedures, variables, and property lists
+	respectively.  This list includes all unburied named items in
+	the workspace.
+
+BURIED
+
+	outputs a contents list including all buried named items in
+	the workspace.
+
+TRACED
+
+	outputs a contents list including all traced named items in
+	the workspace.
+
+STEPPED
+
+	outputs a contents list including all stepped named items in
+	the workspace.
+
+PROCEDURES
+
+	outputs a list of the names of all unburied user-defined procedures
+	in the workspace.  Note that this is a list of names, not a
+	contents list.  (However, procedures that require a contents list
+	as input will accept this list.)
+
+PRIMITIVES
+
+	outputs a list of the names of all primitive procedures
+	in the workspace.  Note that this is a list of names, not a
+	contents list.  (However, procedures that require a contents list
+	as input will accept this list.)
+
+NAMES
+
+	outputs a contents list consisting of an empty list (indicating
+	no procedure names) followed by a list of all unburied variable
+	names in the workspace.
+
+PLISTS
+
+	outputs a contents list consisting of two empty lists (indicating
+	no procedures or variables) followed by a list of all unburied
+	nonempty property lists in the workspace.
+
+NAMELIST varname					(library procedure)
+NAMELIST varnamelist
+
+	outputs a contents list consisting of an empty list followed by
+	a list of the name or names given as input.  This is useful in
+	conjunction with workspace control procedures that require a contents
+	list as input.
+
+PLLIST plname						(library procedure)
+PLLIST plnamelist
+
+	outputs a contents list consisting of two empty lists followed by
+	a list of the name or names given as input.  This is useful in
+	conjunction with workspace control procedures that require a contents
+	list as input.
+
+ARITY procedurename
+
+	outputs a list of three numbers: the minimum, default, and maximum
+	number of inputs for the procedure whose name is the input.  It is an
+	error if there is no such procedure.  A maximum of -1 means that the
+	number of inputs is unlimited.
+
+NODES
+
+	outputs a list of two numbers.  The first represents the number of
+	nodes of memory currently in use.  The second shows the maximum
+	number of nodes that have been in use at any time since the last
+	invocation of NODES.  (A node is a small block of computer memory
+	as used by Logo.  Each number uses one node.  Each non-numeric
+	word uses one node, plus some non-node memory for the characters
+	in the word.  Each array takes one node, plus some non-node
+	memory, as well as the memory required by its elements.  Each
+	list requires one node per element, as well as the memory within
+	the elements.)  If you want to track the memory use of an
+	algorithm, it is best if you invoke GC at the beginning of each
+	iteration, since otherwise the maximum will include storage that
+	is unused but not yet collected.
+
+
+INSPECTION
+----------
+
+PRINTOUT contentslist
+PO contentslist
+
+	command.  Prints to the write stream the definitions of all
+	procedures, variables, and property lists named in the input
+	contents list.
+
+POALL							(library procedure)
+
+	command.  Prints all unburied definitions in the workspace.
+	Abbreviates PO CONTENTS.
+
+POPS							(library procedure)
+
+	command.  Prints the definitions of all unburied procedures in
+	the workspace.  Abbreviates PO PROCEDURES.
+
+PONS							(library procedure)
+
+	command.  Prints the definitions of all unburied variables in
+	the workspace.  Abbreviates PO NAMES.
+
+POPLS							(library procedure)
+
+	command.  Prints the contents of all unburied nonempty property
+	lists in the workspace.  Abbreviates PO PLISTS.
+
+PON varname						(library procedure)
+PON varnamelist
+
+	command.  Prints the definitions of the named variable(s).
+	Abbreviates PO NAMELIST varname(list).
+
+POPL plname						(library procedure)
+POPL plnamelist
+
+	command.  Prints the definitions of the named property list(s).
+	Abbreviates PO PLLIST plname(list).
+
+POT contentslist
+
+	command.  Prints the title lines of the named procedures and
+	the definitions of the named variables and property lists.
+	For property lists, the entire list is shown on one line
+	instead of as a series of PPROP instructions as in PO.
+
+POTS							(library procedure)
+
+	command.  Prints the title lines of all unburied procedures
+	in the workspace.  Abbreviates POT PROCEDURES.
+
+
+WORKSPACE CONTROL
+-----------------
+
+ERASE contentslist
+ER contentslist
+
+	command.  Erases from the workspace the procedures, variables,
+	and property lists named in the input.  Primitive procedures may
+	not be erased unless the variable REDEFP has the value TRUE.
+
+ERALL
+
+	command.  Erases all unburied procedures, variables, and property
+	lists from the workspace.  Abbreviates ERASE CONTENTS.
+
+ERPS
+
+	command.  Erases all unburied procedures from the workspace.
+	Abbreviates ERASE PROCEDURES.
+
+ERNS
+
+	command.  Erases all unburied variables from the workspace.
+	Abbreviates ERASE NAMES.
+
+ERPLS
+
+	command.  Erases all unburied property lists from the workspace.
+	Abbreviates ERASE PLISTS.
+
+ERN varname						(library procedure)
+ERN varnamelist
+
+	command.  Erases from the workspace the variable(s) named in the
+	input.  Abbreviates ERASE NAMELIST varname(list).
+
+ERPL plname						(library procedure)
+ERPL plnamelist
+
+	command.  Erases from the workspace the property list(s) named in the
+	input.  Abbreviates ERASE PLLIST plname(list).
+
+BURY contentslist
+
+	command.  Buries the procedures, variables, and property lists
+	named in the input.  A buried item is not included in the lists
+	output by CONTENTS, PROCEDURES, VARIABLES, and PLISTS, but is
+	included in the list output by BURIED.  By implication, buried
+	things are not printed by POALL or saved by SAVE.
+
+BURYALL							(library procedure)
+
+	command.  Abbreviates BURY CONTENTS.
+
+BURYNAME varname					(library procedure)
+BURYNAME varnamelist
+
+	command.  Abbreviates BURY NAMELIST varname(list).
+
+UNBURY contentslist
+
+	command.  Unburies the procedures, variables, and property lists
+	named in the input.  That is, the named items will be returned to
+	view in CONTENTS, etc.
+
+UNBURYALL						(library procedure)
+
+	command.  Abbreviates UNBURY BURIED.
+
+UNBURYNAME varname					(library procedure)
+UNBURYNAME varnamelist
+
+	command.  Abbreviates UNBURY NAMELIST varname(list).
+
+BURIEDP contentslist
+BURIED? contentslist
+
+	outputs TRUE if the first procedure, variable, or property list named
+	in the contents list is buried, FALSE if not.  Only the first thing in
+	the list is tested; the most common use will be with a word as input,
+	naming a procedure, but a contents list is allowed so that you can
+	BURIEDP [[] [VARIABLE]] or BURIEDP [[] [] [PROPLIST]].
+
+TRACE contentslist
+
+	command.  Marks the named items for tracing.  A message is printed
+	whenever a traced procedure is invoked, giving the actual input
+	values, and whenever a traced procedure STOPs or OUTPUTs.  A
+	message is printed whenever a new value is assigned to a traced
+	variable using MAKE.  A message is printed whenever a new property
+	is given to a traced property list using PPROP.
+
+UNTRACE contentslist
+
+	command.  Turns off tracing for the named items.
+
+TRACEDP contentslist
+TRACED? contentslist
+
+	outputs TRUE if the first procedure, variable, or property list named
+	in the contents list is traced, FALSE if not.  Only the first thing in
+	the list is tested; the most common use will be with a word as input,
+	naming a procedure, but a contents list is allowed so that you can
+	TRACEDP [[] [VARIABLE]] or TRACEDP [[] [] [PROPLIST]].
+
+STEP contentslist
+
+	command.  Marks the named items for stepping.  Whenever a stepped
+	procedure is invoked, each instruction line in the procedure body
+	is printed before being executed, and Logo waits for the user to
+	type a newline at the terminal.  A message is printed whenever a
+	stepped variable name is "shadowed" because a local variable of
+	the same name is created either as a procedure input or by the
+	LOCAL command.
+
+UNSTEP contentslist
+
+	command.  Turns off stepping for the named items.
+
+STEPPEDP contentslist
+STEPPED? contentslist
+
+	outputs TRUE if the first procedure, variable, or property list named
+	in the contents list is stepped, FALSE if not.  Only the first thing
+	in the list is tested; the most common use will be with a word as
+	input, naming a procedure, but a contents list is allowed so that you
+	can STEPPEDP [[] [VARIABLE]] or STEPPEDP [[] [] [PROPLIST]].
+
+EDIT contentslist
+ED contentslist
+(EDIT)
+(ED)
+
+	command.  If invoked with an input, EDIT writes the definitions
+	of the named items into a temporary file and edits that file, using
+	an editor that depends on the platform you're using.  In wxWidgets,
+	and in the MacOS Classic version, there is an editor built into Logo.
+	In the non-wxWidgets versions for Unix, MacOS X, Windows, and DOS,
+	Logo uses your favorite editor as determined by the EDITOR environment
+	variable.  If you don't have an EDITOR variable, edits the
+	definitions using jove.  If invoked without an input, EDIT edits
+	the same file left over from a previous EDIT or EDITFILE instruction.
+	When you leave the editor, Logo reads the revised definitions and
+	modifies the workspace accordingly.  It is not an error if the
+	input includes names for which there is no previous definition.
+
+	If there is a variable LOADNOISILY whose value is TRUE, then, after
+	leaving the editor, TO commands in the temporary file print "PROCNAME
+	defined" (where PROCNAME is the name of the procedure being defined);
+	if LOADNOISILY is FALSE or undefined, TO commands in the file are
+	carried out silently.
+
+	If there is an environment variable called TEMP, then Logo uses
+	its value as the directory in which to write the temporary file
+	used for editing.
+
+	Exceptionally, the EDIT command can be used without its default
+	input and without parentheses provided that nothing follows it on
+	the instruction line.
+
+EDITFILE filename
+
+	command.  Starts the Logo editor, like EDIT, but instead of editing
+	a temporary file it edits the file specified by the input.  When you
+	leave the editor, Logo reads the revised file, as for EDIT.
+	EDITFILE also remembers the filename, so that a subsequent EDIT
+	command with no input will re-edit the same file.
+
+	EDITFILE is intended as an alternative to LOAD and SAVE.  You can
+	maintain a workspace file yourself, controlling the order in which
+	definitions appear, maintaining comments in the file, and so on.
+
+EDALL							(library procedure)
+
+	command.  Abbreviates EDIT CONTENTS.
+
+EDPS							(library procedure)
+
+	command.  Abbreviates EDIT PROCEDURES.
+
+EDNS							(library procedure)
+
+	command.  Abbreviates EDIT NAMES.
+
+EDPLS							(library procedure)
+
+	command.  Abbreviates EDIT PLISTS.
+
+EDN varname						(library procedure)
+EDN varnamelist
+
+	command.  Abbreviates EDIT NAMELIST varname(list).
+
+EDPL plname						(library procedure)
+EDPL plnamelist
+
+	command.  Abbreviates EDIT PLLIST plname(list).
+
+SAVE filename
+
+	command.  Saves the definitions of all unburied procedures,
+	variables, and nonempty property lists in the named file.
+	Equivalent to
+
+			to save :filename
+			local "oldwriter
+			make "oldwriter writer
+			openwrite :filename
+			setwrite :filename
+			poall
+			setwrite :oldwriter
+			close :filename
+			end
+
+	Exceptionally, SAVE can be used with no input and without parentheses
+	if it is the last thing on the command line.  In this case, the
+	filename from the most recent LOAD or SAVE command will be used.  (It
+	is an error if there has been no previous LOAD or SAVE.)
+
+SAVEL contentslist filename				(library procedure)
+
+	command.  Saves the definitions of the procedures, variables, and
+	property lists specified by "contentslist" to the file named
+	"filename".
+
+LOAD filename
+
+	command.  Reads instructions from the named file and executes
+	them.  The file can include procedure definitions with TO, and
+	these are accepted even if a procedure by the same name already
+	exists.  If the file assigns a list value to a variable named
+	STARTUP, then that list is run as an instructionlist after the
+	file is loaded.  If there is a variable LOADNOISILY whose value
+	is TRUE, then TO commands in the file print "PROCNAME defined"
+	(where PROCNAME is the name of the procedure being defined); if
+	LOADNOISILY is FALSE or undefined, TO commands in the file are
+	carried out silently.
+
+CSLSLOAD name
+
+	command.  Loads the named file, like LOAD, but from the directory
+	containing the Computer Science Logo Style programs instead of the
+	current user's directory.
+
+HELP name
+(HELP)
+
+	command.  Prints information from the reference manual about
+	the primitive procedure named by the input.  With no input,
+	lists all the primitives about which help is available.
+	If there is an environment variable LOGOHELP, then its value
+	is taken as the directory in which to look for help files,
+	instead of the default help directory.
+
+	If HELP is called with the name of a defined procedure for which there
+	is no help file, it will print the title line of the procedure
+	followed by lines from the procedure body that start with semicolon,
+	stopping when a non-semicolon line is seen.
+
+	Exceptionally, the HELP command can be used without its default
+	input and without parentheses provided that nothing follows it on
+	the instruction line.
+
+SETEDITOR path
+
+	command.  Tells Logo to use the specified program as its editor
+	instead of the default editor.  The format of a path depends on your
+	operating system.
+
+SETLIBLOC path
+
+	command.  Tells Logo to use the specified directory as its library
+	instead of the default.  (Note that many Logo "primitive" procedures
+	are actually found in the library, so they may become unavailable if
+	your new library does not include them!)  The format of a path depends
+	on your operating system.
+
+SETHELPLOC path
+
+	command.  Tells Logo to look in the specified directory for the
+	information provided by the HELP command, instead of the default
+	directory.  The format of a path depends on your operating system.
+
+SETCSLSLOC path
+
+	command.  Tells Logo to use the specified directory for the CSLSLOAD
+	command, instead of the default directory.  The format of a path
+	depends on your operating system.
+
+SETTEMPLOC path
+
+	command.  Tells Logo to write editor temporary files in the specified
+	directory rather than in the default directory.  You must have write
+	permission for this directory.  The format of a path depends on your
+	operating system.
+
+GC
+(GC anything)
+
+	command.  Runs the garbage collector, reclaiming unused nodes.  Logo
+	does this when necessary anyway, but you may want to use this
+	command to control exactly when Logo does it.  In particular, the
+	numbers output by the NODES operation will not be very meaningful
+	unless garbage has been collected.  Another reason to use GC is that
+	a garbage collection takes a noticeable fraction of a second, and you
+	may want to schedule collections for times before or after some
+	time-critical animation.  If invoked with an input (of any value),
+	GC runs a full garbage collection, including GCTWA (Garbage Collect
+	Truly Worthless Atoms, which means that it removes from Logo's
+	memory words that used to be procedure or variable names but aren't
+	any more); without an input, GC does a generational garbage
+	collection, which means that only recently created nodes are
+	examined.  (The latter is usually good enough.)
+
+.SETSEGMENTSIZE num
+
+	command.  Sets the number of nodes that Logo allocates from the
+	operating system at once to num, which must be a positive integer.
+	The name is dotted because bad things will happen if you use a
+	number that's too small or too large for your computer.  The
+	initial value is 16,000 for most systems, but is smaller for
+	68000-based Macs.  Making it larger will speed up computations
+	(by reducing the number of garbage collections) at the cost of
+	allocating more memory than necessary.
+
+
+CONTROL STRUCTURES
+==================
+
+Note: in the following descriptions, an "instructionlist" can be a list
+or a word.  In the latter case, the word is parsed into list form before
+it is run.  Thus, RUN READWORD or RUN READLIST will work.  The former is
+slightly preferable because it allows for a continued line (with ~) that
+includes a comment (with ;) on the first line.
+
+A "tf" input must be the word TRUE, the word FALSE, or a list.  If it's a
+list, then it must be a Logo expression, which will be evaluated to produce
+a value that must be TRUE or FALSE.  The comparisons with TRUE and FALSE
+are always case-insensitive.
+
+A runlist can consist of either a single expression (that produces a value)
+or zero or more instructions (that do something, rather than output a value),
+depending on the context:
+
+	PRINT IFELSE :X<0 ["NEGATIVE] ["POSITIVE]  ; one value in each case
+	REPEAT 4 [PRINT "A PRINT "B]  ; two instructions
+
+
+RUN instructionlist
+
+	command or operation.  Runs the Logo instructions in the input
+	list; outputs if the list contains an expression that outputs.
+
+RUNRESULT instructionlist
+
+	runs the instructions in the input; outputs an empty list if
+	those instructions produce no output, or a list whose only
+	member is the output from running the input instructionlist.
+	Useful for inventing command-or-operation control structures:
+
+		local "result
+		make "result runresult [something]
+		if emptyp :result [stop]
+		output first :result
+
+REPEAT num instructionlist
+
+	command.  Runs the "instructionlist" repeatedly, "num" times.
+
+FOREVER instructionlist
+
+	command.  Runs the "instructionlist" repeatedly, until something
+	inside the instructionlist (such as STOP or THROW) makes it stop.
+
+REPCOUNT
+
+	outputs the repetition count of the innermost current REPEAT or
+	FOREVER, starting from 1.  If no REPEAT or FOREVER is active,
+	outputs -1.
+
+	The abbreviation # can be used for REPCOUNT unless the REPEAT is
+	inside the template input to a higher order procedure such as
+	FOREACH, in which case # has a different meaning.
+
+IF tf instructionlist
+(IF tf instructionlist1 instructionlist2)
+
+	command.  If the first input has the value TRUE, then IF runs
+	the second input.  If the first input has the value FALSE, then
+	IF does nothing.  (If given a third input, IF acts like IFELSE,
+	as described below.)  It is an error if the first input is not
+	either TRUE or FALSE.
+
+	For compatibility with earlier versions of Logo, if an IF
+	instruction is not enclosed in parentheses, but the first thing
+	on the instruction line after the second input expression is a
+	literal list (i.e., a list in square brackets), the IF is
+	treated as if it were IFELSE, but a warning message is given.
+	If this aberrant IF appears in a procedure body, the warning is
+	given only the first time the procedure is invoked in each Logo
+	session.
+
+IFELSE tf instructionlist1 instructionlist2
+
+	command or operation.  If the first input has the value TRUE, then
+	IFELSE runs the second input.  If the first input has the value FALSE,
+	then IFELSE runs the third input.  IFELSE outputs a value if the
+	instructionlist contains an expression that outputs a value.
+
+TEST tf
+
+	command.  Remembers its input, which must be TRUE or FALSE, for use
+	by later IFTRUE or IFFALSE instructions.  The effect of TEST is local
+	to the procedure in which it is used; any corresponding IFTRUE or
+	IFFALSE must be in the same procedure or a subprocedure.
+
+IFTRUE instructionlist
+IFT instructionlist
+
+	command.  Runs its input if the most recent TEST instruction had
+	a TRUE input.  The TEST must have been in the same procedure or a
+	superprocedure.
+
+IFFALSE instructionlist
+IFF instructionlist
+
+	command.  Runs its input if the most recent TEST instruction had
+	a FALSE input.  The TEST must have been in the same procedure or a
+	superprocedure.
+
+STOP
+
+	command.  Ends the running of the procedure in which it appears.
+	Control is returned to the context in which that procedure was
+	invoked.  The stopped procedure does not output a value.
+
+OUTPUT value
+OP value
+
+	command.  Ends the running of the procedure in which it appears.
+	That procedure outputs the value "value" to the context in which
+	it was invoked.  Don't be confused: OUTPUT itself is a command,
+	but the procedure that invokes OUTPUT is an operation.
+
+CATCH tag instructionlist
+
+	command or operation.  Runs its second input.  Outputs if that
+	instructionlist outputs.  If, while running the instructionlist,
+	a THROW instruction is executed with a tag equal to the first
+	input (case-insensitive comparison), then the running of the
+	instructionlist is terminated immediately.  In this case the CATCH
+	outputs if a value input is given to THROW.  The tag must be a word.
+
+	If the tag is the word ERROR, then any error condition that arises
+	during the running of the instructionlist has the effect of THROW
+	"ERROR instead of printing an error message and returning to
+	toplevel.  The CATCH does not output if an error is caught.  Also,
+	during the running of the instructionlist, the variable ERRACT is
+	temporarily unbound.  (If there is an error while ERRACT has a
+	value, that value is taken as an instructionlist to be run after
+	printing the error message.  Typically the value of ERRACT, if any,
+	is the list [PAUSE].)
+
+THROW tag
+(THROW tag value)
+
+	command.  Must be used within the scope of a CATCH with an equal
+	tag.  Ends the running of the instructionlist of the CATCH.  If
+	THROW is used with only one input, the corresponding CATCH does
+	not output a value.  If THROW is used with two inputs, the second
+	provides an output for the CATCH.
+
+	THROW "TOPLEVEL can be used to terminate all running procedures and
+	interactive pauses, and return to the toplevel instruction prompt.
+	Typing the system interrupt character (alt-S for wxWidgets; otherwise
+	normally control-C for Unix, control-Q for DOS, or command-period for
+	Mac) has the same effect.
+
+	THROW "ERROR can be used to generate an error condition.  If the
+	error is not caught, it prints a message (THROW "ERROR) with the
+	usual indication of where the error (in this case the THROW)
+	occurred.  If a second input is used along with a tag of ERROR,
+	that second input is used as the text of the error message
+	instead of the standard message.  Also, in this case, the location
+	indicated for the error will be, not the location of the THROW,
+	but the location where the procedure containing the THROW was
+	invoked.  This allows user-defined procedures to generate error
+	messages as if they were primitives.  Note: in this case the
+	corresponding CATCH "ERROR, if any, does not output, since the second
+	input to THROW is not considered a return value.
+
+	THROW "SYSTEM immediately leaves Logo, returning to the operating
+	system, without printing the usual parting message and without
+	deleting any editor temporary file written by EDIT.
+
+ERROR
+
+	outputs a list describing the error just caught, if any.  If there was
+	not an error caught since the last use of ERROR, the empty list will
+	be output.  The error list contains four members: an integer code
+	corresponding to the type of error, the text of the error message (as
+	a single word including spaces), the name of the procedure in which
+	the error occurred, and the instruction line on which the error
+	occurred.
+
+PAUSE
+
+	command or operation.  Enters an interactive pause.  The user is
+	prompted for instructions, as at toplevel, but with a prompt that
+	includes the name of the procedure in which PAUSE was invoked.
+	Local variables of that procedure are available during the pause.
+	PAUSE outputs if the pause is ended by a CONTINUE with an input.
+
+	If the variable ERRACT exists, and an error condition occurs, the
+	contents of that variable are run as an instructionlist.  Typically
+	ERRACT is given the value [PAUSE] so that an interactive pause will
+	be entered in the event of an error.  This allows the user to check
+	values of local variables at the time of the error.
+
+	Typing the system quit character (alt-S for wxWidgets; otherwise
+	normally control-\ for Unix, control-W for DOS, or command-comma for
+	Mac) will also enter a pause.
+
+CONTINUE value
+CO value
+(CONTINUE)
+(CO)
+
+	command.  Ends the current interactive pause, returning to the
+	context of the PAUSE invocation that began it.  If CONTINUE is
+	given an input, that value is used as the output from the PAUSE.
+	If not, the PAUSE does not output.
+
+	Exceptionally, the CONTINUE command can be used without its default
+	input and without parentheses provided that nothing follows it on
+	the instruction line.
+
+WAIT time
+
+	command.  Delays further execution for "time" 60ths of a second.
+	Also causes any buffered characters destined for the terminal to
+	be printed immediately.  WAIT 0 can be used to achieve this
+	buffer flushing without actually waiting.
+
+BYE
+
+	command.  Exits from Logo; returns to the operating system.
+
+.MAYBEOUTPUT value					(special form)
+
+	works like OUTPUT except that the expression that provides the
+	input value might not, in fact, output a value, in which case
+	the effect is like STOP.  This is intended for use in control
+	structure definitions, for cases in which you don't know whether
+	or not some expression produces a value.  Example:
+
+		to invoke :function [:inputs] 2
+		.maybeoutput apply :function :inputs
+		end
+
+		? (invoke "print "a "b "c)
+		a b c
+		? print (invoke "word "a "b "c)
+		abc
+
+	This is an alternative to RUNRESULT.  It's fast and easy to use,
+	at the cost of being an exception to Logo's evaluation rules.
+	(Ordinarily, it should be an error if the expression that's
+	supposed to provide an input to something doesn't have a value.)
+
+GOTO word
+
+	command.  Looks for a TAG command with the same input in the same
+	procedure, and continues running the procedure from the location of
+	that TAG.  It is meaningless to use GOTO outside of a procedure.
+
+TAG quoted.word
+
+	command.  Does nothing.  The input must be a literal word following
+	a quotation mark ("), not the result of a computation.  Tags are
+	used by the GOTO command.
+
+IGNORE value						(library procedure)
+
+	command.  Does nothing.  Used when an expression is evaluated for
+	a side effect and its actual value is unimportant.
+
+` list							(library procedure)
+
+	outputs a list equal to its input but with certain substitutions.
+	If a member of the input list is the word "," (comma) then the
+	following member should be an instructionlist that produces an
+	output when run.  That output value replaces the comma and the
+	instructionlist.  If a member of the input list is the word ",@"
+	(comma atsign) then the following member should be an instructionlist
+	that outputs a list when run.  The members of that list replace the
+	,@ and the instructionlist.  Example:
+
+		show `[foo baz ,[bf [a b c]] garply ,@[bf [a b c]]]
+
+	will print
+
+		[foo baz [b c] garply b c]
+
+	A word starting with , or ,@ is treated as if the rest of the word
+	were a one-word list, e.g., ,:FOO is equivalent to ,[:FOO].
+
+	A word starting with ", (quote comma) or :, (colon comma) becomes a
+	word starting with " or : but with the result of running the
+	substitution (or its first word, if the result is a list) replacing
+	what comes after the comma.
+
+	Backquotes can be nested.  Substitution is done only for commas at
+	the same depth as the backquote in which they are found:
+
+		? show `[a `[b ,[1+2] ,[foo ,[1+3] d] e] f]
+		[a ` [b , [1+2] , [foo 4 d] e] f]
+
+		?make "name1 "x
+		?make "name2 "y
+		? show `[a `[b ,:,:name1 ,",:name2 d] e]
+		[a ` [b , [:x] , ["y] d] e]
+
+FOR forcontrol instructionlist				(library procedure)
+
+	command.  The first input must be a list containing three or four
+	members: (1) a word, which will be used as the name of a local
+	variable; (2) a word or list that will be evaluated as by RUN to
+	determine a number, the starting value of the variable; (3) a word
+	or list that will be evaluated to determine a number, the limit value
+	of the variable; (4) an optional word or list that will be evaluated
+	to determine the step size.  If the fourth member is missing, the
+	step size will be 1 or -1 depending on whether the limit value is
+	greater than or less than the starting value, respectively.
+
+	The second input is an instructionlist.  The effect of FOR is to run
+	that instructionlist repeatedly, assigning a new value to the control
+	variable (the one named by the first member of the forcontrol list)
+	each time.  First the starting value is assigned to the control
+	variable.  Then the value is compared to the limit value.  FOR is
+	complete when the sign of (current - limit) is the same as the sign
+	of the step size.  (If no explicit step size is provided, the
+	instructionlist is always run at least once.  An explicit step size
+	can lead to a zero-trip FOR, e.g., FOR [I 1 0 1] ...)  Otherwise, the
+	instructionlist is run, then the step is added to the current value
+	of the control variable and FOR returns to the comparison step.
+
+		? for [i 2 7 1.5] [print :i]
+		2
+		3.5
+		5
+		6.5
+		?
+
+DO.WHILE instructionlist tfexpression			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains TRUE.  Evaluates the first input
+	first, so the "instructionlist" is always run at least once.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+WHILE tfexpression instructionlist			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains TRUE.  Evaluates the first input
+	first, so the "instructionlist" may never be run at all.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+DO.UNTIL instructionlist tfexpression			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains FALSE.  Evaluates the first input
+	first, so the "instructionlist" is always run at least once.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+UNTIL tfexpression instructionlist			(library procedure)
+
+	command.  Repeatedly evaluates the "instructionlist" as long as the
+	evaluated "tfexpression" remains FALSE.  Evaluates the first input
+	first, so the "instructionlist" may never be run at all.  The
+	"tfexpression" must be an expressionlist whose value when evaluated
+	is TRUE or FALSE.
+
+CASE value clauses					(library procedure)
+
+	command or operation.  The second input is a list of lists (clauses);
+	each clause is a list whose first element is either a list of values
+	or the word ELSE and whose butfirst is a Logo expression or
+	instruction.  CASE examines the clauses in order.  If a clause begins
+	with the word ELSE (upper or lower case), then the butfirst of that
+	clause is evaluated and CASE outputs its value, if any.  If the first
+	input to CASE is a member of the first element of a clause, then the
+	butfirst of that clause is evaluated and CASE outputs its value, if
+	any.  If neither of these conditions is met, then CASE goes on to the
+	next clause.  If no clause is satisfied, CASE does nothing.  Example:
+
+		to vowelp :letter
+		output case :letter [ [[a e i o u] "true] [else "false] ]
+		end
+
+COND clauses						(library procedure)
+
+	command or operation.  The input is a list of lists (clauses); each
+	clause is a list whose first element is either an expression whose
+	value is TRUE or FALSE, or the word ELSE, and whose butfirst is a Logo
+	expression or instruction.  COND examines the clauses in order.  If a
+	clause begins with the word ELSE (upper or lower case), then the
+	butfirst of that clause is evaluated and CASE outputs its value, if
+	any.  Otherwise, the first element of the clause is evaluated; the
+	resulting value must be TRUE or FALSE.  If it's TRUE, then the
+	butfirst of that clause is evaluated and COND outputs its value, if
+	any.  If the value is FALSE, then COND goes on to the next clause.  If
+	no clause is satisfied, COND does nothing.  Example:
+
+		to evens :numbers	; select even numbers from a list
+		op cond [ [[emptyp :numbers] []]
+		          [[evenp first :numbers]  ; assuming EVENP is defined
+		           fput first :numbers evens butfirst :numbers]
+		          [else evens butfirst :numbers] ]
+		end
+
+
+TEMPLATE-BASED ITERATION
+------------------------
+
+The procedures in this section are iteration tools based on the idea of a
+"template."  This is a generalization of an instruction list or an
+expression list in which "slots" are provided for the tool to insert varying
+data.  Four different forms of template can be used.
+
+The most commonly used form for a template is "explicit-slot" form, or
+"question mark" form.  Example:
+
+	? show map [? * ?] [2 3 4 5]
+	[4 9 16 25]
+	?
+
+In this example, the MAP tool evaluated the template [? * ?] repeatedly,
+with each of the members of the data list [2 3 4 5] substituted in turn
+for the question marks.  The same value was used for every question mark
+in a given evaluation.  Some tools allow for more than one datum to be
+substituted in parallel; in these cases the slots are indicated by ?1 for
+the first datum, ?2 for the second, and so on:
+
+	? show (map [(word ?1 ?2 ?1)] [a b c] [d e f])
+	[ada beb cfc]
+	?
+
+If the template wishes to compute the datum number, the form (? 1) is
+equivalent to ?1, so (? ?1) means the datum whose number is given in
+datum number 1.  Some tools allow additional slot designations, as shown
+in the individual descriptions.
+
+The second form of template is the "named-procedure" form.  If the template
+is a word rather than a list, it is taken as the name of a procedure.  That
+procedure must accept a number of inputs equal to the number of parallel
+data slots provided by the tool; the procedure is applied to all of the
+available data in order.  That is, if data ?1 through ?3 are available,
+the template "PROC is equivalent to [PROC ?1 ?2 ?3].
+
+	? show (map "word [a b c] [d e f])
+	[ad be cf]
+	?
+
+	to dotprod :a :b	; vector dot product
+	op apply "sum (map "product :a :b)
+	end
+
+The third form of template is "named-slot" or "lambda" form.  This form is
+indicated by a template list containing more than one member, whose first
+member is itself a list.  The first member is taken as a list of names;
+local variables are created with those names and given the available data
+in order as their values.  The number of names must equal the number of
+available data.  This form is needed primarily when one iteration tool must
+be used within the template list of another, and the ? notation would be
+ambiguous in the inner template.  Example:
+
+	to matmul :m1 :m2 [:tm2 transpose :m2]	; multiply two matrices
+	output map [[row] map [[col] dotprod :row :col] :tm2] :m1
+	end
+
+The fourth form is "procedure text" form, a variant of lambda form.  In this
+form, the template list contains at least two members, all of which are
+lists.  This is the form used by the DEFINE and TEXT primitives, and APPLY
+accepts it so that the text of a defined procedure can be used as a template.
+
+Note:  The fourth form of template is interpreted differently from the
+others, in that Logo considers it to be an independent defined procedure
+for the purposes of OUTPUT and STOP.  For example, the following two
+instructions are identical:
+
+	? print apply [[x] :x+3] [5]
+	8
+	? print apply [[x] [output :x+3]] [5]
+	8
+
+although the first instruction is in named-slot form and the second is
+in procedure-text form.  The named-slot form can be understood as telling
+Logo to evaluate the expression :x+3 in place of the entire invocation of
+apply, with the variable x temporarily given the value 5.  The procedure-text
+form can be understood as invoking the procedure
+
+	to foo :x
+	output :x+3
+	end
+
+with input 5, but without actually giving the procedure a name.  If
+the use of OUTPUT were interchanged in these two examples, we'd get errors:
+
+	? print apply [[x] output :x+3] [5]
+	Can only use output inside a procedure
+	? print apply [[x] [:x+3]] [5]
+	You don't say what to do with 8
+
+The named-slot form can be used with STOP or OUTPUT inside a procedure,
+to stop the enclosing procedure.
+
+
+The following iteration tools are extended versions of the ones in Appendix
+B of the book _Computer_Science_Logo_Style,_Volume_3:_Advanced_Topics_ by
+Brian Harvey [MIT Press, 1987].  The extensions are primarily to allow for
+variable numbers of inputs.
+
+
+APPLY template inputlist
+
+	command or operation.  Runs the "template," filling its slots with
+	the members of "inputlist."  The number of members in "inputlist"
+	must be an acceptable number of slots for "template."  It is
+	illegal to apply the primitive TO as a template, but anything else
+	is okay.  APPLY outputs what "template" outputs, if anything.
+
+INVOKE template input					(library procedure)
+(INVOKE template input1 input2 ...)
+
+	command or operation.  Exactly like APPLY except that the inputs
+	are provided as separate expressions rather than in a list.
+
+FOREACH data template					(library procedure)
+(FOREACH data1 data2 ... template)
+
+	command.  Evaluates the template list repeatedly, once for each
+	member of the data list.  If more than one data list are given,
+	each of them must be the same length.  (The data inputs can be
+	words, in which case the template is evaluated once for each
+	character.)
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].  If multiple parallel slots
+	are used, then (?REST 1) goes with ?1, etc.
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+MAP template data					(library procedure)
+(MAP template data1 data2 ...)
+
+	outputs a word or list, depending on the type of the data input,
+	of the same length as that data input.  (If more than one data
+	input are given, the output is of the same type as data1.)  Each
+	member of the output is the result of evaluating the template
+	list, filling the slots with the corresponding member(s) of the
+	data input(s).  (All data inputs must be the same length.)  In the
+	case of a word output, the results of the template evaluation must
+	be words, and they are concatenated with WORD.
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].  If multiple parallel slots
+	are used, then (?REST 1) goes with ?1, etc.
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+MAP.SE template data					(library procedure)
+(MAP.SE template data1 data2 ...)
+
+	outputs a list formed by evaluating the template list repeatedly
+	and concatenating the results using SENTENCE.  That is, the
+	members of the output are the members of the results of the
+	evaluations.  The output list might, therefore, be of a different
+	length from that of the data input(s).  (If the result of an
+	evaluation is the empty list, it contributes nothing to the final
+	output.)  The data inputs may be words or lists.
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].  If multiple parallel slots
+	are used, then (?REST 1) goes with ?1, etc.
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+FILTER tftemplate data					(library procedure)
+
+	outputs a word or list, depending on the type of the data input,
+	containing a subset of the members (for a list) or characters (for
+	a word) of the input.  The template is evaluated once for each
+	member or character of the data, and it must produce a TRUE or
+	FALSE value.  If the value is TRUE, then the corresponding input
+	constituent is included in the output.
+
+		? print filter "vowelp "elephant
+		eea
+		?
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+FIND tftemplate data					(library procedure)
+
+	outputs the first constituent of the data input (the first member
+	of a list, or the first character of a word) for which the value
+	produced by evaluating the template with that consituent in its
+	slot is TRUE.  If there is no such constituent, the empty list
+	is output.
+
+	In a template, the symbol ?REST represents the portion of the
+	data input to the right of the member currently being used as
+	the ? slot-filler.  That is, if the data input is [A B C D E]
+	and the template is being evaluated with ? replaced by B, then
+	?REST would be replaced by [C D E].
+
+	In a template, the symbol # represents the position in the data
+	input of the member currently being used as the ? slot-filler.
+	That is, if the data input is [A B C D E] and the template is
+	being evaluated with ? replaced by B, then # would be replaced
+	by 2.
+
+REDUCE template data					(library procedure)
+
+	outputs the result of applying the template to accumulate the
+	members of the data input.  The template must be a two-slot
+	function.  Typically it is an associative function name like SUM.
+	If the data input has only one constituent (member in a list or
+	character in a word), the output is that consituent.  Otherwise,
+	the template is first applied with ?1 filled with the next-to-last
+	consitient and ?2 with the last constituent.  Then, if there are
+	more constituents, the template is applied with ?1 filled with the
+	next constituent to the left and ?2 with the result from the
+	previous evaluation.  This process continues until all constituents
+	have been used.  The data input may not be empty.
+
+	Note: If the template is, like SUM, the name of a procedure that is
+	capable of accepting arbitrarily many inputs, it is more efficient
+	to use APPLY instead of REDUCE.  The latter is good for associative
+	procedures that have been written to accept exactly two inputs:
+
+		to max :a :b
+		output ifelse :a > :b [:a] [:b]
+		end
+
+		print reduce "max [...]
+
+	Alternatively, REDUCE can be used to write MAX as a procedure
+	that accepts any number of inputs, as SUM does:
+
+		to max [:inputs] 2
+		if emptyp :inputs ~
+		   [(throw "error [not enough inputs to max])]
+		output reduce [ifelse ?1 > ?2 [?1] [?2]] :inputs
+		end
+
+CROSSMAP template listlist				(library procedure)
+(CROSSMAP template data1 data2 ...)
+
+	outputs a list containing the results of template evaluations.
+	Each data list contributes to a slot in the template; the number
+	of slots is equal to the number of data list inputs.  As a special
+	case, if only one data list input is given, that list is taken as
+	a list of data lists, and each of its members contributes values
+	to a slot.  CROSSMAP differs from MAP in that instead of taking
+	members from the data inputs in parallel, it takes all possible
+	combinations of members of data inputs, which need not be the same
+	length.
+
+		? show (crossmap [word ?1 ?2] [a b c] [1 2 3 4])
+		[a1 a2 a3 a4 b1 b2 b3 b4 c1 c2 c3 c4]
+		?
+
+	For compatibility with the version in the first edition of CSLS,
+	CROSSMAP templates may use the notation :1 instead of ?1 to indicate
+	slots.
+
+CASCADE endtest template startvalue			(library procedure)
+(CASCADE endtest tmp1 sv1 tmp2 sv2 ...)
+(CASCADE endtest tmp1 sv1 tmp2 sv2 ... finaltemplate)
+
+	outputs the result of applying a template (or several templates,
+	as explained below) repeatedly, with a given value filling the
+	slot the first time, and the result of each application filling
+	the slot for the following application.
+
+	In the simplest case, CASCADE has three inputs.  The second input
+	is a one-slot expression template.  That template is evaluated
+	some number of times (perhaps zero).  On the first evaluation,
+	the slot is filled with the third input; on subsequent evaluations,
+	the slot is filled with the result of the previous evaluation.
+	The number of evaluations is determined by the first input.  This
+	can be either a nonnegative integer, in which case the template is
+	evaluated that many times, or a predicate expression template, in
+	which case it is evaluated (with the same slot filler that will be
+	used for the evaluation of the second input) repeatedly, and the
+	CASCADE evaluation continues as long as the predicate value is
+	FALSE.  (In other words, the predicate template indicates the
+	condition for stopping.)
+
+	If the template is evaluated zero times, the output from CASCADE
+	is the third (startvalue) input.  Otherwise, the output is the
+	value produced by the last template evaluation.
+
+	CASCADE templates may include the symbol # to represent the number
+	of times the template has been evaluated.  This slot is filled with
+	1 for the first evaluation, 2 for the second, and so on.
+
+		? show cascade 5 [lput # ?] []
+		[1 2 3 4 5]
+		? show cascade [vowelp first ?] [bf ?] "spring
+		ing
+		? show cascade 5 [# * ?] 1
+		120
+		?
+
+	Several cascaded results can be computed in parallel by providing
+	additional template-startvalue pairs as inputs to CASCADE.  In this
+	case, all templates (including the endtest template, if used) are
+	multi-slot, with the number of slots equal to the number of pairs of
+	inputs.  In each round of evaluations, ?2, for example, represents the
+	result of evaluating the second template in the previous round.  If
+	the total number of inputs (including the first endtest input) is odd,
+	then the output from CASCADE is the final value of the first template.
+	If the total number of inputs is even, then the last input is a
+	template that is evaluated once, after the end test is satisfied, to
+	determine the output from CASCADE.
+
+		to fibonacci :n
+		output (cascade :n [?1 + ?2] 1 [?1] 0)
+		end
+
+		to piglatin :word
+		output (cascade [vowelp first ?] ~
+				[word bf ? first ?] ~
+				:word ~
+				[word ? "ay])
+		end
+
+CASCADE.2 endtest temp1 startval1 temp2 startval2	(library procedure)
+
+	outputs the result of invoking CASCADE with the same inputs.
+	The only difference is that the default number of inputs is
+	five instead of three.
+
+TRANSFER endtest template inbasket			(library procedure)
+
+	outputs the result of repeated evaluation of the template.
+	The template is evaluated once for each member of the list
+	"inbasket."  TRANSFER maintains an "outbasket" that is
+	initially the empty list.  After each evaluation of the
+	template, the resulting value becomes the new outbasket.
+
+	In the template, the symbol ?IN represents the current member
+	from the inbasket; the symbol ?OUT represents the entire
+	current outbasket.  Other slot symbols should not be used.
+
+	If the first (endtest) input is an empty list, evaluation
+	continues until all inbasket members have been used.  If not,
+	the first input must be a predicate expression template, and
+	evaluation continues until either that template's value is TRUE
+	or the inbasket is used up.
+
+
+MACROS
+======
+
+.MACRO procname :input1 :input2 ...				(special form)
+.DEFMACRO procname text
+
+	A macro is a special kind of procedure whose output is evaluated
+	as Logo instructions in the context of the macro's caller.
+	.MACRO is exactly like TO except that the new procedure becomes
+	a macro; .DEFMACRO is exactly like DEFINE with the same exception.
+
+	Macros are useful for inventing new control structures comparable
+	to REPEAT, IF, and so on.  Such control structures can almost, but
+	not quite, be duplicated by ordinary Logo procedures.  For example,
+	here is an ordinary procedure version of REPEAT:
+
+		to my.repeat :num :instructions
+		if :num=0 [stop]
+		run :instructions
+		my.repeat :num-1 :instructions
+		end
+
+	This version works fine for most purposes, e.g.,
+
+		my.repeat 5 [print "hello]
+
+	But it doesn't work if the instructions to be carried out include
+	OUTPUT, STOP, or LOCAL.  For example, consider this procedure:
+
+		to example
+		print [Guess my secret word.  You get three guesses.]
+		repeat 3 [type "|?? | ~
+			  if readword = "secret [pr "Right! stop]]
+		print [Sorry, the word was "secret"!]
+		end
+
+	This procedure works as written, but if MY.REPEAT is used instead
+	of REPEAT, it won't work because the STOP will stop MY.REPEAT
+	instead of stopping EXAMPLE as desired.
+
+	The solution is to make MY.REPEAT a macro.  Instead of actually
+	carrying out the computation, a macro must return a list containing
+	Logo instructions.  The contents of that list are evaluated as if
+	they appeared in place of the call to the macro.  Here's a macro
+	version of REPEAT:
+
+		.macro my.repeat :num :instructions
+		if :num=0 [output []]
+		output sentence :instructions ~
+				(list "my.repeat :num-1 :instructions)
+		end
+
+	Every macro is an operation -- it must always output something.
+	Even in the base case, MY.REPEAT outputs an empty instruction
+	list.  To show how MY.REPEAT works, let's take the example
+
+		my.repeat 5 [print "hello]
+
+	For this example, MY.REPEAT will output the instruction list
+
+		[print "hello my.repeat 4 [print "hello]]
+
+	Logo then executes these instructions in place of the original
+	invocation of MY.REPEAT; this prints "hello" once and invokes
+	another repetition.
+
+	The technique just shown, although fairly easy to understand,
+	has the defect of slowness because each repetition has to
+	construct an instruction list for evaluation.  Another approach
+	is to make MY.REPEAT a macro that works just like the non-macro
+	version unless the instructions to be repeated include OUTPUT
+	or STOP:
+
+		.macro my.repeat :num :instructions
+		catch "repeat.catchtag ~
+		      [op repeat.done runresult [repeat1 :num :instructions]]
+		op []
+		end
+
+		to repeat1 :num :instructions
+		if :num=0 [throw "repeat.catchtag]
+		run :instructions
+		.maybeoutput repeat1 :num-1 :instructions
+		end
+
+		to repeat.done :repeat.result
+		if emptyp :repeat.result [op [stop]]
+		op list "output quoted first :repeat.result
+		end
+
+	If the instructions do not include STOP or OUTPUT, then REPEAT1 will
+	reach its base case and invoke THROW.  As a result, MY.REPEAT's last
+	instruction line will output an empty list, so the evaluation of the
+	macro result by the caller will do nothing.  But if a STOP or OUTPUT
+	happens, then REPEAT.DONE will output a STOP or OUTPUT instruction
+	that will be executed in the caller's context.
+
+	The macro-defining commands have names starting with a dot because
+	macros are an advanced feature of Logo; it's easy to get in trouble
+	by defining a macro that doesn't terminate, or by failing to
+	construct the instruction list properly.
+
+	Lisp users should note that Logo macros are NOT special forms.
+	That is, the inputs to the macro are evaluated normally, as they
+	would be for any other Logo procedure.  It's only the output from
+	the macro that's handled unusually.
+
+	Here's another example:
+
+		.macro localmake :name :value
+		output (list "local		~
+			     word "" :name	~
+			     "apply		~
+			     ""make		~
+			     (list :name :value))
+		end
+
+	It's used this way:
+
+		to try
+		localmake "garply "hello
+		print :garply
+		end
+
+	LOCALMAKE outputs the list
+
+		[local "garply apply "make [garply hello]]
+
+	The reason for the use of APPLY is to avoid having to decide
+	whether or not the second input to MAKE requires a quotation
+	mark before it.  (In this case it would -- MAKE "GARPLY "HELLO --
+	but the quotation mark would be wrong if the value were a list.)
+
+	It's often convenient to use the ` function to construct the
+	instruction list:
+
+		.macro localmake :name :value
+		op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
+		end
+
+	On the other hand, ` is pretty slow, since it's tree recursive and
+	written in Logo.
+
+MACROP name
+MACRO? name
+
+	outputs TRUE if its input is the name of a macro.
+
+MACROEXPAND expr					(library procedure)
+
+	takes as its input a Logo expression that invokes a macro (that is,
+	one that begins with the name of a macro) and outputs the the Logo
+	expression into which the macro would translate the input expression.
+
+
+		.macro localmake :name :value
+		op `[local ,[word "" :name] apply "make [,[:name] ,[:value]]]
+		end
+
+		? show macroexpand [localmake "pi 3.14159]
+		[local "pi apply "make [pi 3.14159]]
+
+
+ERROR PROCESSING
+================
+
+If an error occurs, Logo takes the following steps.  First, if there is
+an available variable named ERRACT, Logo takes its value as an instructionlist
+and runs the instructions.  The operation ERROR may be used within the
+instructions (once) to examine the error condition.  If the instructionlist
+invokes PAUSE, the error message is printed before the pause happens.
+Certain errors are "recoverable"; for one of those errors, if the
+instructionlist outputs a value, that value is used in place of the
+expression that caused the error.  (If ERRACT invokes PAUSE and the user then
+invokes CONTINUE with an input, that input becomes the output from PAUSE and
+therefore the output from the ERRACT instructionlist.)
+
+It is possible for an ERRACT instructionlist to produce an inappropriate value
+or no value where one is needed.  As a result, the same error condition could
+recur forever because of this mechanism.  To avoid that danger, if the same
+error condition occurs twice in a row from an ERRACT instructionlist without
+user interaction, the message "Erract loop" is printed and control returns
+to toplevel.  "Without user interaction" means that if ERRACT invokes PAUSE and
+the user provides an incorrect value, this loop prevention mechanism does not
+take effect and the user gets to try again.
+
+During the running of the ERRACT instructionlist, ERRACT is locally unbound,
+so an error in the ERRACT instructions themselves will not cause a loop.  In
+particular, an error during a pause will not cause a pause-within-a-pause
+unless the user reassigns the value [PAUSE] to ERRACT during the pause.  But
+such an error will not return to toplevel; it will remain within the original
+pause loop.
+
+If there is no available ERRACT value, Logo handles the error by generating
+an internal THROW "ERROR.  (A user program can also generate an error
+condition deliberately by invoking THROW.)  If this throw is not caught by
+a CATCH "ERROR in the user program, it is eventually caught either by the
+toplevel instruction loop or by a pause loop, which prints the error message.
+An invocation of CATCH "ERROR in a user program locally unbinds ERRACT, so
+the effect is that whichever of ERRACT and CATCH "ERROR is more local will
+take precedence.
+
+If a floating point overflow occurs during an arithmetic operation, or a
+two-input mathematical function (like POWER) is invoked with an illegal
+combination of inputs, the "doesn't like" message refers to the second
+operand, but should be taken as meaning the combination.
+
+
+ERROR CODES
+-----------
+
+Here are the numeric codes that appear as the first member of the list
+output by ERROR when an error is caught, with the corresponding messages.
+Some messages may have two different codes depending on whether or not
+the error is recoverable (that is, a substitute value can be provided
+through the ERRACT mechanism) in the specific context.  Some messages are
+warnings rather than errors; these will not be caught.  Errors 0 and 32 are
+so bad that Logo exits immediately.
+
+  0	Fatal internal error (can't be caught)
+  1	Out of memory
+  2	Stack overflow
+  3	Turtle out of bounds
+  4	PROC doesn't like DATUM as input (not recoverable)
+  5	PROC didn't output to PROC
+  6	Not enough inputs to PROC
+  7	PROC doesn't like DATUM as input (recoverable)
+  8	Too much inside ()'s
+  9	You don't say what to do with DATUM
+ 10	')' not found
+ 11	VAR has no value
+ 12	Unexpected ')'
+ 13	I don't know how to PROC (recoverable)
+ 14	Can't find catch tag for THROWTAG
+ 15	PROC is already defined
+ 16	Stopped
+ 17	Already dribbling
+ 18	File system error
+ 19	Assuming you mean IFELSE, not IF (warning only)
+ 20	VAR shadowed by local in procedure call (warning only)
+ 21	Throw "Error
+ 22	PROC is a primitive
+ 23	Can't use TO inside a procedure
+ 24	I don't know how to PROC (not recoverable)
+ 25	IFTRUE/IFFALSE without TEST
+ 26	Unexpected ']'
+ 27	Unexpected '}'
+ 28	Couldn't initialize graphics
+ 29	Macro returned VALUE instead of a list
+ 30	You don't say what to do with VALUE
+ 31	Can only use STOP or OUTPUT inside a procedure
+ 32	APPLY doesn't like BADTHING as input
+ 33	END inside multi-line instruction
+ 34	Really out of memory (can't be caught)
+ 35	user-generated error message (THROW "ERROR [message])
+ 36	END inside multi-line instruction
+ 37	Bad default expression for optional input: EXPR
+ 38	Can't use OUTPUT or STOP inside RUNRESULT
+ 39 	Assuming you meant 'FD 100', not FD100 (or similar)
+ 40	I can't open file FILENAME
+ 41	File FILENAME already open
+ 42	File FILENAME not open
+ 43	Runlist [EXPR EXPR] has more than one expression.
+
+
+SPECIAL VARIABLES
+=================
+
+Logo takes special action if any of the following variable names exists.
+They follow the normal scoping rules, so a procedure can locally set one of
+them to limit the scope of its effect.  Initially, no variables exist except
+for ALLOWGETSET, CASEIGNOREDP, and UNBURYONEDIT, which are TRUE and buried.
+
+ALLOWGETSET						(variable)
+
+	if TRUE, indicates that an attempt to use a procedure that doesn't
+	exist should be taken as an implicit getter or setter procedure
+	(setter if the first three letters of the name are SET) for a variable
+	of the same name (without the SET if appropriate).
+
+BUTTONACT						(variable)
+
+	if nonempty, should be an instruction list that will be evaluated
+	whenever a mouse button is pressed.  Note that the user may have
+	released the button before the instructions are evaluated.  BUTTON
+	will still output which button was most recently pressed.  CLICKPOS
+	will output the position of the mouse cursor at the moment the
+	button was pressed; this may be different from MOUSEPOS if the
+	user moves the mouse after clicking.
+
+	Note that it's possible for the user to press a button during the
+	evaluation of the instruction list.  If this would confuse your
+	program, prevent it by temporarily setting BUTTONACT to the empty
+	list.  One easy way to do that is the following:
+
+		make "buttonact [button.action]
+
+		to button.action [:buttonact []]
+		... ; whatever you want the button to do
+		end
+
+CASEIGNOREDP						(variable)
+
+	if TRUE, indicates that lower case and upper case letters should be
+	considered equal by EQUALP, BEFOREP, MEMBERP, etc.  Logo initially
+	makes this variable TRUE, and buries it.
+
+COMMANDLINE						(variable)
+
+	contains any text appearing after a hyphen on the command line
+	used to start Logo.
+
+ERRACT							(variable)
+
+	an instructionlist that will be run in the event of an error.
+	Typically has the value [PAUSE] to allow interactive debugging.
+
+FULLPRINTP						(variable)
+
+	if TRUE, then words that were created using backslash or vertical bar
+	(to include characters that would otherwise not be treated as part of
+	a word) are printed with the backslashes or vertical bars shown, so
+	that the printed result could be re-read by Logo to produce the same
+	value.  If FULLPRINTP is TRUE then the empty word (however it was
+	created) prints as ||.  (Otherwise it prints as nothing at all.)
+
+KEYACT							(variable)
+
+	if nonempty, should be an instruction list that will be evaluated
+	whenever a key is pressed on the keyboard.  The instruction list
+	can use READCHAR to find out what key was pressed.  Note that only
+	keys that produce characters qualify; pressing SHIFT or CONTROL
+	alone will not cause KEYACT to be evaluated.
+
+	Note that it's possible for the user to press a key during the
+	evaluation of the instruction list.  If this would confuse your
+	program, prevent it by temporarily setting KEYACT to the empty
+	list.  One easy way to do that is the following:
+
+		make "keyact [key.action]
+
+		to key.action [:keyact []]
+		... ; whatever you want the key to do
+		end
+
+LOADNOISILY						(variable)
+
+	if TRUE, prints the names of procedures defined when loading
+	from a file (including the temporary file made by EDIT).
+
+PRINTDEPTHLIMIT						(variable)
+
+	if a nonnegative integer, indicates the maximum depth of sublist
+	structure that will be printed by PRINT, etc.
+
+PRINTWIDTHLIMIT						(variable)
+
+	if a nonnegative integer, indicates the maximum number of members
+	in any one list that will be printed by PRINT, etc.
+
+REDEFP							(variable)
+
+	if TRUE, allows primitives to be erased (ERASE) or redefined (COPYDEF).
+
+STARTUP							(variable)
+
+	if assigned a list value in a file loaded by LOAD, that value is
+	run as an instructionlist after the loading.
+
+UNBURYONEDIT						(variable)
+
+	if TRUE, causes any procedure defined during EDIT or LOAD to be
+	unburied, so that it will be saved by a later SAVE.  Files that
+	want to define and bury procedures must do it in that order.
+
+USEALTERNATENAMES					(variable)
+
+	if TRUE, causes Logo to generate non-English words (from the
+	Messages file) instead of TRUE, FALSE, END, etc.
+
+
+Logo provides the following buried variables that can be used by programs:
+
+LOGOVERSION						(variable)
+
+	a real number indicating the Logo version number, e.g., 5.5
+
+LOGOPLATFORM						(variable)
+
+	one of the following words: wxWidgets, X11, Windows, or
+	Unix-Nographics.
+
+
+
+INTERNATIONALIZATION
+====================
+
+Berkeley Logo has limited support for non-English-speaking users.
+Alas, there is no Unicode support, and high-bit-on ASCII codes work in
+some contexts but not others.
+
+If you want to translate Berkeley Logo for use with another language,
+there are three main things you have to do:
+	1. Primitive names
+	2. Error (and other) messages
+	3. Documentation
+
+For primitive names, the easiest thing is to provide a startup file that
+defines aliases for the English primitive names, using COPYDEF:
+	COPYDEF "AVANT "FORWARD
+This should take care of it, unless your language's name for one primitive
+is spelled like the English name of a different primitive.  In that case
+you have to turn REDEFP on and be sure to copy the non-conflicting name
+before overwriting the conflicting one!
+
+"Primitives" that are actually in the Logo library, of course, can just
+be replaced or augmented with native-language-named Logo procedures and
+filenames.
+
+Of course Logo programs will still not look like your native language if
+the word order is dramatically different, especially if you don't put
+verbs before their objects.
+
+For error messages, there is a file named Messages in the logolib directory
+with texts of messages, one per line.  You can replace this with a file for
+your own language.  Do not add, delete, or reorder lines; Logo finds messages
+by line number.  The sequences %p, %s, and %t in these messages represent
+variable parts of the message and should not be translated.  (%p PRINTs
+the variable part, while %s SHOWs it -- that is, the difference is about
+whether or not brackets are shown surrounding a list.  %t means that the
+variable part is a C text string rather than a Logo object.)  If you want to
+change the order of two variable parts (no reorderable message has more than
+two), you would for example replace the line
+	%p doesn't like %s as input
+with
+	%+s is a lousy input to %p
+The plus sign tells the message printer to reverse the order; you must
+reverse the order of %p and %s, if both are used, to match.  The plus
+sign goes just after the first percent sign in the message, which might
+not be at the beginning of the line.  The sequence \n in a message
+represents a newline; don't be fooled into thinking that the "n" is part
+of the following word.
+
+Some messages appear twice in the file; this isn't a mistake.  The two
+spaces before "to" in "I don't know how  to" aren't a mistake either.
+The message containing just "%p" is for user-provided error messages
+in THROW "ERROR.  The message "  in %s\n%s" is the part of all error
+messages that indicates where the error occurred if it was inside a
+procedure; you might want to change the word "in" to your language.
+"%s defined\n" is what LOAD prints for each procedure defined if
+the variable LOADNOISILY is TRUE.  "to %p\nend\n\n" is what EDIT puts in the
+temporary file if you ask to edit a procedure that isn't already defined.
+
+Also in the Messages file are lines containing only one word each; the
+first of these is the word "true".  Some of these words are recognized by
+Logo in user input; some are generated by Logo; some are both.  For example,
+the words TRUE and FALSE are recognized as Boolean values by IF and IFELSE,
+and are also generated by Logo as outputs from the primitive predicates
+such as EQUALP.  The word END is recognized as the end of a procedure
+definition, and may be generated when Logo reconstructs a procedure body
+for PO or EDIT.  I've used capital letters in this paragraph for easier
+reading, but the words in the Messages file should be in lower case.
+
+If you replace these with non-English words, Logo will *recognize* both the
+English names and your alternate names.  For example, if you replace the
+word "true" with "vrai" then Logo will understand both of these:
+	IF "TRUE [PRINT "YES]
+	IF "VRAI [PRINT "YES]
+
+The variable UseAlternateNames determines whether Logo will *generate*
+other-language names -- for example, whether predicate functions return
+the other-language alternates for TRUE and FALSE.  This variable is FALSE by
+default, meaning that the English words will be generated.
+
+You might wish to have English-named predicate functions generate English TRUE
+and FALSE, while other-language-named predicates generate the alternate
+words.  This can be done by leaving UseAlternateNames false, and instead of
+defining the other-language predicates with COPYDEF, do it this way:
+
+	to french.boolean :bool
+	if equalp :bool "true [output "vrai]
+	if equalp :bool "false [output "faux]
+	output :bool	; shouldn't happen
+	end
+
+	to make.french.predicate :french :english :arity
+	define :french `[[[inputs] ,[:arity]]
+	                 [output french.boolean
+				    apply ,[word "" :english] :inputs]]
+	end
+
+	? make.french.predicate "egal? "equal? 2
+	? pr egal? 3 4
+	faux
+	? pr egal? 4 4
+	vrai
+	? pr equal? 3 4
+	false
+	? pr equal? 4 4
+	true
+
+The third input to make.french.predicate is the number of inputs that the
+predicate expects.  This solution isn't quite perfect because the infix
+predicates (=, <, >) will still output in English.  If you want them to
+generate alternate-language words, set UseAlternateNames to TRUE instead.
+
+Some of the words in this section of the Messages file are names of Logo
+primitives (OUTPUT, STOP, GOTO, TAG, IF, IFELSE, TO, .MACRO).  To translate
+these names, you must use COPYDEF as described earlier, in addition to
+changing the names in Messages.  You should be consistent in these two steps.
+Don't forget the period in ".macro"!
+
+For documentation, there are two kinds: this manual and the help files.
+The latter are generated automatically from this manual if you have a
+Unix system, so in that case you need only translate this manual,
+maintaining the format.  (The automatic helpfile generator notices
+things like capital letters, tabs, hyphens, and equal signs at the
+beginnings of lines.)  The program makehelp.c may require modification
+because a few of the primitive names are special cases (e.g., LOG10 is
+the only name with digits included).
+
+If you don't have Unix tools, you can just translate each helpfile
+individually.  A period in a primitive name is represented as a D in
+the filename; there are no files for question marks because the HELP
+command looks for the file named after the corresponding primitive
+that ends in P.
diff --git a/js/games/nluqo.github.io/~bh/v1-toc2.html b/js/games/nluqo.github.io/~bh/v1-toc2.html
new file mode 100644
index 0000000..26dbf8e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1-toc2.html
@@ -0,0 +1,452 @@
+<HTML>
+<HEAD>
+<TITLE>Symbolic Computing contents</TITLE>
+<link rel="shortcut icon" href="http://www.cs.berkeley.edu/~bh/csls1-tiny.png" type="image/png">
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1><EM>Computer Science Logo Style</EM><BR>
+Volume 1: <EM>Symbolic Computing</EM></H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P><TABLE width="100%"><TR>
+<TD><IMG SRC="csls1.jpg">
+<TD><TABLE>
+<TR><TD align="right"><A HREF="v2-toc2.html">Volume 2: <CITE>Advanced Techniques</CITE></A>
+<IMG SRC="csls2-tiny.jpg">
+<TR><TD align="right"><A HREF="v3-toc2.html">Volume 3: <CITE>Beyond Programming</CITE></A>
+<IMG SRC="csls3-tiny.jpg">
+<TR><TD align="right"><A HREF="logo.html">Download Berkeley Logo (UCBLogo)</A>
+<IMG SRC="ucblogo2-tiny.gif">
+<TR><TD align="right"><A HREF="index.html">Brian's home page</A>
+<IMG SRC="bh-tiny.jpg">
+<TR><TD align="right">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+<IMG SRC="mitp.jpg">
+</TABLE></TABLE>
+
+<HR>
+
+<P>Below this short table of contents is an expanded table of contents
+including sections within each chapter.  Click on the chapter name
+to jump down.  You can also download the complete text of each chapter
+in PDF format for elegant printing, or browse the HTML version.
+
+<P><EM>Note:  These books are still in copyright, and in print.  They are
+posted here for your personal use, not for resale or redistribution.
+Thanks!</EM>
+
+<p>I don't know why suddenly everyone wants to translate this page to other
+languages, but here they are.  It's just this page, not the whole book.
+
+<p>
+<a href="http://www.azoft.com/people/seremina/edu/v1-toc2-romanian.html">View
+this
+page in Romanian</a> courtesy of <a href="http://www.azoft.com/">azoft</a>.
+<br><a href="http://cupegraf.com/blog/toc2/">Slovakian translation</a> courtesy
+of <a href="http://cupegraf.com">Gasper Halipovich</a>.
+<br><a href="*http://translate.coupofy.com/computer-science-logo-style/
+<http://translate.coupofy.com/computer-science-logo-style/>*">Vietnamese
+translation</a> courtesy of Julia Duong from <a href="http:/www.coupofy.com/
+">coupofy.com</a>.<br>
+<a href="http://search-sos.org/computer-science-logo-style-volume-1/">Russian
+Translation</a> Courtesy of <a href="http://search-sos.org/">Search-Sos</a>.
+
+<UL>
+<LI>Preface
+(<A HREF="pdf/v1ch00.pdf">frontmatter in PDF</A>)
+(<A HREF="v1ch0/preface.html">HTML</A>)
+<LI>Acknowledgements
+(<A HREF="v1ch0/ack.html">HTML</A>)
+<LI>1.  <A HREF="v1-toc2.html#ch1">Exploration</A>
+(<A HREF="pdf/v1ch01.pdf">PDF</A>)
+(<A HREF="v1ch1/explor.html">HTML</A>)
+<LI>2.  <A HREF="v1-toc2.html#ch2">Procedures</A>
+(<A HREF="pdf/v1ch02.pdf">PDF</A>)
+(<A HREF="v1ch2/proced.html">HTML</A>)
+<LI>3.  <A HREF="v1-toc2.html#ch3">Variables</A>
+(<A HREF="pdf/v1ch03.pdf">PDF</A>)
+(<A HREF="v1ch3/variab.html">HTML</A>)
+<LI>4.  <A HREF="v1-toc2.html#ch4">Predicates</A>
+(<A HREF="pdf/v1ch04.pdf">PDF</A>)
+(<A HREF="v1ch4/predic.html">HTML</A>)
+<LI>5.  <A HREF="v1-toc2.html#ch5">Functions of Functions</A>
+(<A HREF="pdf/v1ch05.pdf">PDF</A>)
+(<A HREF="v1ch5/hof.html">HTML</A>)
+<LI>6.  <A HREF="v1-toc2.html#ch6">Example: Tic-Tac-Toe</A>
+(<A HREF="pdf/v1ch06.pdf">PDF</A>)
+(<A HREF="v1ch6/ttt.html">HTML</A>)
+<LI>7.  <A HREF="v1-toc2.html#ch7">Introduction to Recursion</A>
+(<A HREF="pdf/v1ch07.pdf">PDF</A>)
+(<A HREF="v1ch7/recur1.html">HTML</A>)
+<LI>8.  <A HREF="v1-toc2.html#ch8">Practical Recursion: the Leap of Faith</A>
+(<A HREF="pdf/v1ch08.pdf">PDF</A>)
+(<A HREF="v1ch8/recur2.html">HTML</A>)
+<LI>9.  <A HREF="v1-toc2.html#ch9">How Recursion Works</A>
+(<A HREF="pdf/v1ch09.pdf">PDF</A>)
+(<A HREF="v1ch9/recur3.html">HTML</A>)
+<LI>10.  <A HREF="v1-toc2.html#ch10">Turtle Geometry</A>
+(<A HREF="pdf/v1ch10.pdf">PDF</A>)
+(<A HREF="v1ch10/turtle.html">HTML</A>)
+<LI>11.  <A HREF="v1-toc2.html#ch11">Recursive Operations</A>
+(<A HREF="pdf/v1ch11.pdf">PDF</A>)
+(<A HREF="v1ch11/recops.html">HTML</A>)
+<LI>12.  <A HREF="v1-toc2.html#ch12">Example: Playfair Cipher</A>
+(<A HREF="pdf/v1ch12.pdf">PDF</A>)
+(<A HREF="v1ch12/playfair.html">HTML</A>)
+<LI>13.  <A HREF="v1-toc2.html#ch13">Planning</A>
+(<A HREF="pdf/v1ch13.pdf">PDF</A>)
+(<A HREF="v1ch13/plan.html">HTML</A>)
+<LI>14.  <A HREF="v1-toc2.html#ch14">Example: Pitcher Problem Solver</A>
+(<A HREF="pdf/v1ch14.pdf">PDF</A>)
+(<A HREF="v1ch14/pour.html">HTML</A>)
+<LI>15.  <A HREF="v1-toc2.html#ch15">Debugging</A>
+(<A HREF="pdf/v1ch15.pdf">PDF</A>)
+(<A HREF="v1ch15/debug.html">HTML</A>)
+<LI>A.  Running Berkeley Logo
+(<A HREF="pdf/v1ch16.pdf">backmatter in PDF</A>)
+(<A HREF="v1ch16/versions.html">HTML</A>)
+<LI>B.  GNU General Public License
+(<A HREF="v1ch16/appendix-gpl.html">HTML</A>)
+<LI>Index of Defined Procedures
+(<A HREF="v1ch16/appuindex.html">HTML</A>)
+<LI>General Index
+(<A HREF="v1ch16/appindex.html">HTML</A>)
+</UL>
+
+<HR>
+
+<TABLE><TR><TD><H3>Preface</H3><TD>
+(<A HREF="pdf/v1ch00.pdf">frontmatter in PDF</A>)
+(<A HREF="v1ch0/preface.html">HTML</A>)
+</TABLE>
+<UL>
+<LI>The Intellectual Content of Computer Programming
+<LI>Computer Science Apprenticeship
+<LI>About the Second Edition
+<LI>Why Logo?
+<LI>Hardware and Software Requirements
+<LI>Words of Wisdom
+</UL>
+
+<TABLE><TR><TD><H3>Acknowledgements</H3><TD>
+(<A HREF="v1ch0/ack.html">HTML</A>)
+</TABLE>
+
+<TABLE><TR><TD><H3><A name="ch1">1.  Exploration</A></H3><TD>
+(<A HREF="pdf/v1ch01.pdf">PDF</A>)
+(<A HREF="v1ch1/explor.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Getting Acquainted with Logo...
+<LI>... in Two Senses
+<LI>Another Greeting
+<LI>Fooling Around
+<LI>A Slightly Longer Conversation
+<LI>A Sneaky Greeting
+<LI>A Quiz Program
+<LI>Saving Your Work
+<LI>About Chapter 2
+<LI>No Exercises
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch2">2.  Procedures</A></H3><TD>
+(<A HREF="pdf/v1ch02.pdf">PDF</A>)
+(<A HREF="v1ch2/proced.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Procedures and Instructions
+<LI>Technical Terms
+<LI>Evaluation
+<LI>Error Messages
+<LI>Commands and Operations
+<LI>Words and Lists
+<LI>How to Describe a Procedure
+<LI>Manipulating Words and Lists
+<LI><CODE>Print</CODE> and <CODE>Show</CODE>
+<LI>Order of Evaluation
+<LI>Special Forms of Evaluation
+<LI>Writing Your Own Procedures
+<LI>Editing Your Procedures
+<LI>Syntax and Semantics
+<LI>Parentheses and Plumbing Diagrams
+<LI>Nonsense Plumbing Diagrams
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch3">3.  Variables</A></H3><TD>
+(<A HREF="pdf/v1ch03.pdf">PDF</A>)
+(<A HREF="v1ch3/variab.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>User Procedures With Inputs
+<LI>What Kind of Container?
+<LI>An Abbreviation
+<LI>More Procedures
+<LI>An Aside on Variable Naming
+<LI>Don't Call It <CODE>X</CODE>
+<LI>Writing New Operations
+<LI>Scope of Variables
+<LI>The Little Person Metaphor
+<LI>Changing the Value of a Variable
+<LI>Global and Local Variables
+<LI>Indirect Assignment
+<LI>Functional Programming
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch4">4.  Predicates</A></H3><TD>
+(<A HREF="pdf/v1ch04.pdf">PDF</A>)
+(<A HREF="v1ch4/predic.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>True or False
+<LI>Defining Your Own Predicates
+<LI>Conditional Evaluation
+<LI>Choosing Between Alternatives
+<LI>Conditional Evaluation Another Way
+<LI>About Those Brackets
+<LI>Logical Connectives
+<LI><CODE>Ifelse</CODE> as an Operation
+<LI>Expression Lists and Plumbing Diagrams
+<LI>Stopping a Procedure
+<LI>Improving the Quiz Program
+<LI>Reporting Success to a Superprocedure
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch5">5.  Functions of Functions</A></H3><TD>
+(<A HREF="pdf/v1ch05.pdf">PDF</A>)
+(<A HREF="v1ch5/hof.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>The Problem: <CODE>Initials</CODE>
+<LI>One Solution: Numeric Iteration
+<LI>Critique of Numeric Iteration
+<LI>What's a Function?
+<LI>Functions of Functions: <CODE>Map</CODE>
+<LI>Higher Order Selection: <CODE>Filter</CODE>
+<LI>Many to One: <CODE>Reduce</Code>
+<LI>Choosing the Right Tool
+<LI>Anonymous Functions
+<LI>Higher Order Miscellany
+<LI>Repeated Invocation: <CODE>Cascade</CODE>
+<LI>A Mini-Project: Mastermind
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch6">6.  Example: Tic-Tac-Toe</A></H3><TD>
+(<A HREF="pdf/v1ch06.pdf">PDF</A>)
+(<A HREF="v1ch6/ttt.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This program plays the game of Tic Tac Toe against the user.  It follows a
+perfect strategy, so it always wins or ties.</I>
+
+<UL>
+<LI>The Project
+<LI>Strategy
+<LI>Program Structure and Modularity
+<LI>Data Representation
+<LI>Arrays
+<LI>Triples
+<LI>Variables in the Workspace
+<LI>The User Interface
+<LI>Implementing the Strategy Rules
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch7">7.  Introduction to Recursion</A></H3><TD>
+(<A HREF="pdf/v1ch07.pdf">PDF</A>)
+(<A HREF="v1ch7/recur1.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Starting Small
+<LI>Building Up
+<LI>Generalizing the Pattern
+<LI>What Went Wrong?
+<LI>The Stop Rule
+<LI>Local Variables
+<LI>More Examples
+<LI>Other Stop Rules
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch8">8.  Practical Recursion: the Leap of Faith</A></H3><TD>
+(<A HREF="pdf/v1ch08.pdf">PDF</A>)
+(<A HREF="v1ch8/recur2.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Recursive Patterns
+<LI>The Leap of Faith
+<LI>The Tower of Hanoi
+<LI>More Complicated Patterns
+<LI>A Mini-Project: Scrambled Sentences
+<LI>Procedure Patterns
+<LI>Tricky Stop Rules
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch9">9.  How Recursion Works</A></H3><TD>
+(<A HREF="pdf/v1ch09.pdf">PDF</A>)
+(<A HREF="v1ch9/recur3.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Little People and Recursion
+<LI>Tracing
+<LI>Level and Sequence
+<LI>Instruction Stepping
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch10">10.  Turtle Geometry</A></H3><TD>
+(<A HREF="pdf/v1ch10.pdf">PDF</A>)
+(<A HREF="v1ch10/turtle.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>A Review, or a Brief Introduction
+<LI>Local vs. Global Descriptions
+<LI>The Turtle's State
+<LI>Symmetry
+<LI>Fractals
+<LI>Further Reading
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch11">11.  Recursive Operations</A></H3><TD>
+(<A HREF="pdf/v1ch11.pdf">PDF</A>)
+(<A HREF="v1ch11/recops.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>A Simple Substitution Cipher
+<LI>More Procedure Patterns
+<LI>The <CODE>Filter</CODE> Pattern
+<LI>The <CODE>Reduce</CODE> Pattern
+<LI>The <CODE>Find</CODE> Pattern
+<LI>Numerical Operations: the <CODE>Cascade</CODE> Pattern
+<LI>Pig Latin
+<LI>A Mini-Project: Spelling Numbers
+<LI>Advanced Recursion: <CODE>Subsets</CODE>
+<LI>A Word About Tail Recursion
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch12">12.  Example: Playfair Cipher</A></H3><TD>
+(<A HREF="pdf/v1ch12.pdf">PDF</A>)
+(<A HREF="v1ch12/playfair.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This project demonstrates the use of a slightly complex cipher, in which a given
+letter in the original text is not always represented by the same letter in
+the coded version.</I>
+
+<UL>
+<LI>Data Redundancy
+<LI>Composition of Functions
+<LI>Conversational Front End
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch13">13.  Planning</A></H3><TD>
+(<A HREF="pdf/v1ch13.pdf">PDF</A>)
+(<A HREF="v1ch13/plan.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Structured Programming
+<LI>Critique of Structured Programming
+<LI>A Sample Project: Counting Poker Hands
+<LI>An Initialization Procedure
+<LI>Second Edition Second Thoughts
+<LI>Planning and Debugging
+<LI>Classifying Poker Hands
+<LI>Embellishments
+<LI>Putting the Project in a Context
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch14">14.  Example: Pitcher Problem Solver</A></H3><TD>
+(<A HREF="pdf/v1ch14.pdf">PDF</A>)
+(<A HREF="v1ch14/pour.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This program solves the category of problems in which you are given
+pitchers of certain sizes and asked to use them to measure a specified
+amount of water from a river.</I>
+
+<UL>
+<LI>Tree Search
+<LI>Depth-First and Breadth-First Searching
+<LI>Data Representation
+<LI>Abstract Data Types
+<LI><CODE>Sentence</CODE> as a Combiner
+<LI>Finding the Children of a Node
+<LI>Computing a New State
+<LI>More Data Abstraction
+<LI>Printing the Results
+<LI>Efficiency: What Really Matters?
+<LI>Avoiding Meaningless Pourings
+<LI>Eliminating Duplicate States
+<LI>Stopping the Program Early
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch15">15.  Debugging</A></H3><TD>
+(<A HREF="pdf/v1ch15.pdf">PDF</A>)
+(<A HREF="v1ch15/debug.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Using Error Messages
+<LI>Invalid Data
+<LI>Incorrect Results
+<LI>Tracing and Stepping
+<LI>Pausing
+<LI>Final Words of Wisdom
+</UL>
+
+<TABLE><TR><TD><H2>Appendices</H2><TD>
+(<A HREF="pdf/v1ch16.pdf">backmatter in PDF</A>)
+</TABLE>
+
+<TABLE><TR><TD><H3>A.  Running Berkeley Logo</H3><TD>
+(<A HREF="v1ch16/versions.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Getting Berkeley Logo
+<LI>Berkeley Logo for DOS Machines
+<LI>Berkeley Logo for the Macintosh
+<LI>Berkeley Logo for Unix
+</UL>
+
+<TABLE><TR><TD><H3>B.  GNU General Public License</H3><TD>
+(<A HREF="v1ch16/appendix-gpl.html">HTML</A>)
+</TABLE>
+
+<TABLE><TR><TD><H3>Index of Defined Procedures</H3><TD>
+(<A HREF="v1ch16/appuindex.html">HTML</A>)
+</TABLE>
+
+<TABLE><TR><TD><H3>General Index</H3><TD>
+(<A HREF="v1ch16/appindex.html">HTML</A>)
+</TABLE>
+
+<P><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch0/ack.html b/js/games/nluqo.github.io/~bh/v1ch0/ack.html
new file mode 100644
index 0000000..3fe3ab1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch0/ack.html
@@ -0,0 +1,113 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1:Acknowledgments</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Acknowledgments</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch1/v1ch1.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+The people who read and commented on early drafts of this book include
+Hal Abelson, Sharon Yoder,
+Michael Clancy, Jim Davis, Batya Friedman,
+Paul Goldenberg, Tessa Harvey,
+Phil Lewis, Margaret Minsky, and
+Cynthia Solomon.  I am especially grateful to Paul
+Goldenberg and Cindy Carter for their professional, financial, and
+emotional support during the months I spent as a guest in their home
+while working on this project, keeping them from their own work and
+tying up Paul's computer equipment.  This book wouldn't exist without
+them.  Special mention also goes to Hal Abelson, without whose support this
+book wouldn't have found a publisher.
+
+<P>The main ideas in this book, and some of the specific examples, first
+surfaced in the form of self-paced curriculum units for a programming
+class at the Lincoln-Sudbury Regional High School, in Sudbury,
+Massachusetts.  Alison Birch, Larry Davidson,
+and Phil Lewis were my
+colleagues there. (So, later, was Paul.) All of them helped debug the
+curriculum by finding mistakes and by pointing out
+the parts that were correct but incomprehensible.  Larry, especially,
+was my mentor and untiring collaborator, helping me survive my first
+real teaching job, even though he had his own work and wasn't
+officially part of the computer department at all.  I'm also grateful
+to the many students who served as guinea pigs for the curriculum, and
+to David Levington, then the
+district superintendent, who was generous
+with equipment and with administrative freedom in support of an
+untested idea.
+
+<P>My work at Lincoln-Sudbury would not have been possible without the
+strong support of computer scientists at the Massachusetts Institute
+of Technology, especially but not only the ones at the Logo Laboratory.
+Equipment grants from the Digital Equipment Corporation and from
+Atari, Inc., were also crucial to this work.
+
+<P>And thanks, also, to my faculty supervisors in the Graduate Group in
+Science and Mathematics Education, at the University of California at
+Berkeley, for their patience and understanding while I worked
+on this instead of my thesis.
+
+
+<P><H2>Second Edition</H2>
+
+<P>In 1992 one of my then-undergraduate students,
+<A HREF="http://www.cnmat.berkeley.edu/~matt">Matt Wright</A>, suggested that
+we collaborate on a textbook for Berkeley's introductory programming course
+for non-majors.  The book would use Scheme, the same language used in our
+first course for students in the computer science major, but would be based
+on the ideas in the first edition of this book.  The result of that
+collaboration, <EM><A HREF="../simply-toc">Simply Scheme</A>,</EM> was
+published in 1994.
+
+<P>In writing <EM>Simply Scheme,</EM> Matt and I reconsidered every detail of
+the presentation used in <EM>Computer Science Logo Style.</EM> We added a
+greater emphasis on higher order functions, and we completely reorganized
+the chapters on recursion.  Large example programs were added to the text,
+along with suggestions for student projects.
+
+<P>Most of the changes in this second edition were inspired by the work that
+Matt and I did together for the Scheme book.  In a few cases I have lifted
+entire paragraphs from it!  Matt also read early drafts of some of the new
+chapters in this edition, and this text benefits from his comments.
+
+<P>Berkeley Logo, the interpreter used in this edition, is a collective effort
+of many people, both at Berkeley and across the Internet.  My main debt in
+that project is to three former students: Dan van Blerkom, 
+Michael Katz, and Doug Orleans.
+At the risk of missing someone, I also want to acknowledge
+substantial contributions by Freeman Deutsch,
+Khang Dao, Fred Gilham, Yehuda Katz,
+George Mills, Sanford Owings,
+and Randy Sargent.
+
+<P>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch1/v1ch1.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch0/preface.html b/js/games/nluqo.github.io/~bh/v1ch0/preface.html
new file mode 100644
index 0000000..012a729
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch0/preface.html
@@ -0,0 +1,357 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1:Preface</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Preface</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right">[no back]
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This book isn't for everyone.
+
+<P>Not everyone needs to program computers.  There is a popular myth that
+if you aren't &quot;computer literate,&quot; whatever that means, then you'll
+flunk out of college, you'll never get a job, and you'll be poor and
+miserable all your life.  The myth is promoted by computer
+manufacturers, of course, and also by certain educators and writers.
+
+<P>The truth is that no matter how many people study computer programming
+in high school, there will still be only a certain number of
+programming jobs.  When you read about &quot;jobs in high-tech industry,&quot;
+they're talking mostly about manufacturing and sales jobs that are no
+better paid than any other manufacturing jobs.  (Often, these days,
+those jobs are exported to someplace like Taiwan where they pay
+pennies a day.) It's quite true that many jobs in the future will
+involve <EM>using</EM> computers, but the computers will be disguised.
+When you use a microwave oven, drive a recently built car, or play a
+video game, you're using a computer, but you didn't have to take a
+&quot;computer literacy&quot; course to learn how.  Even a computer that
+looks like a computer, as in a word processing system, can be mastered
+in an hour or two.
+
+<P>This book is for people who are interested in computer programming
+because it's fun.
+
+<P><H2>The Intellectual Content of Computer Programming</H2>
+
+<P>When I wrote the first edition of this book in 1984, I said that the study
+of computer programming was intellectually rewarding for young children in
+elementary school, and for computer science majors in college, but that high
+school students and adults studying on their own generally had an
+intellectually barren diet, full of technical details of some particular
+computer brand.
+
+<P>At about the same time I wrote those words, the College Board was
+introducing an Advanced Placement exam in computer science.  Since then, the
+AP course has become popular, and similar official or semi-official computer
+science curricula have been adopted in other countries as well.  Meanwhile,
+the computers available to ordinary people have become large enough and
+powerful enough to run serious programming languages, breaking the monopoly
+of BASIC.
+
+<P>So, the good news is that intellectually serious computer science is within
+the reach of just about everyone.  The bad news is that the curricula tend
+to be imitations of what is taught to beginning undergraduate computer
+science majors, and I think that's too rigid a starting point for
+independent learners, and especially for teenagers.
+
+<P>See, the wonderful thing about computer programming is that it <EM>is</EM>
+fun, perhaps not for everyone, but for very many people.  There aren't many
+mathematical activities that appeal so spontaneously.  Kids get caught up in
+the excitement of programming, in the same way that other kids (or maybe the
+same ones) get caught up in acting, in sports, in journalism (provided the
+paper isn't run by teachers), or in ham radio.  If schools get too serious
+about computer science, that spontaneous excitement can be lost.  I once
+heard a high school teacher say proudly that kids used to hang out in his
+computer lab at all hours, but since they introduced the computer science
+curriculum, the kids don't want to program so much because they've learned
+that programming is just a means to the end of understanding the
+curriculum.  No!  The ideas of computer science are a means to the end of
+getting computers to do what you want.
+
+<P><H2>Computer Science Apprenticeship</H2>
+
+<P>My goal in this series of books is to make the goals and methods of a
+serious computer scientist accessible, at an introductory level, to
+people who are interested in computer programming but are not computer
+science majors.  If you're an adult or teenaged hobbyist, or a teacher
+who wants to use the computer as an educational tool, you're
+definitely part of this audience.  I've taught these ideas to teachers
+and to high school students.  What I enjoy most is teaching high
+school freshmen who bring a love of programming into the class with
+them--the ones who are always tugging at my arm to tell me what they
+found in the latest <EM>Byte.</EM>
+
+<P>I said earlier that I think that for most people programming as job training
+is nonsense.  But if you happen to be interested in
+programming, studying it in some depth can be valuable for the same
+reasons that other people benefit from acting, music, or being a news
+reporter: it's a kind of intellectual apprenticeship.  You're learning
+the discipline of serious thinking and of taking pride in your work.
+In the case of computer programming, in particular, what you're
+learning is <EM>mathematical</EM> thinking, or <EM>formal</EM>
+thinking.  (If you like programming, but you hate mathematics, don't
+panic.  In that case it's not really mathematics you hate, it's
+school.  The programming you enjoy is much more like real mathematics
+than the stuff you get in most high school math classes.) In these books I
+try to encourage this sort of formal thinking by discussing
+programming in terms of general rules rather than as a bag of tricks.
+
+<P>When I wrote the first edition of this book, in 1984, it was controversial
+to suggest that not everyone has to learn to program.  I was accused of
+elitism, of wanting to keep computers as a tool for the rich, while
+condemning poorer students to dead-end jobs.  Today it's more common that
+I have to fight the opposite battle, trying to convince people why <EM>
+anyone</EM> should learn about computer programming.  After all, there is all
+that great software out there; instead of wasting time on programming,
+I'm told, kids should learn to use Microsoft Word or Adobe Illustrator
+or Macromind Director.  At the same time, kids who've grown up with intricate
+and beautifully illustrated video games are frustrated by the relatively
+primitive results of their own first efforts at programming.  A decade ago
+it was thrilling to be able to draw a square on a computer screen; today
+you can do that with two clicks of a mouse.
+
+<P>There are two reasons why you might still want to learn to program.  One is
+that more and more application programs have programming languages built in;
+you can customize the program's behavior if you learn to speak its
+&quot;extension&quot; language.  (One well-known example is the Hypertalk extension
+language for the Hypercard program; the one that has everyone excited as I'm
+writing this is the inclusion of the Java programming language as the
+extension language for the Netscape World Wide Web browser.)  But I think a
+more important reason is that programming--learning how to express a method
+for solving a problem in a formal language--can still be very empowering.
+It's not the same kind of fast-paced fun as playing a video game; it feels
+more like solving a crossword puzzle.
+
+<P>I've tried to make these books usable either with a teacher or on your
+own.  But since the ideas in these books are rather different from those of
+most computer science curricula, the odds are that you're reading this on
+your own.  (When I published the first edition, one exception was that this
+first volume was used fairly commonly in teacher training classes, for
+elementary school teachers who'd be using Logo in their work.)
+
+<P><H2>About the Second Edition</H2>
+
+<P>Three things have happened since the first edition of these books to warrant
+a revision.  The first is that I know more about computer science than I did
+then!  In this volume, the topics of recursion and functional programming
+are explained better than they were the first time; there is a new chapter on
+higher order functions early in the book.  There are similar improvements
+in the later volumes, too.
+
+<P>Second, I've learned from both my own and other people's experiences
+teaching these ideas.  I originally envisioned a style of work in which high
+school students would take a programming course in their first year, then
+spend several years working on independent projects, and perhaps take a more
+advanced computer science class senior year.  That's why I put all the
+programming language instruction in the first volume and all the project
+ideas in the second one.  In real life, most students don't spread out their
+programming experience in that way, and so the projects in the second volume
+didn't get a chance to inspire most readers.  In the second edition, I've
+mixed projects with language teaching.  This first volume teaches the core
+Logo capabilities that every programming student should know, along with
+sample projects illustrating both the technical details and the range of
+possibilities for your own projects.  The second volume, <EM>Advanced
+Techniques,</EM> teaches more
+advanced language features, along with larger and more intricate projects.
+
+<P>Volume three, <EM>Beyond Programming,</EM> is still a kind of
+sampler of a university computer science curriculum.  Each chapter is
+an introduction to a topic that you might study in more depth during a
+semester at college, if you go on to study computer science.  Some of
+the topics, like artificial intelligence, are about programming
+methods for particular applications.  Others, like automata theory,
+aren't how-to topics at all but provide a mathematical approach to
+understanding what programming is all about.  I haven't changed the
+table of contents, but most of the chapters have been drastically
+rewritten to improve both the technical content and the style of
+presentation.
+
+<P>The third reason for a second edition of these books is that the specific
+implementations of Logo that I used in 1984 are all obsolete.  (One of them,
+IBM Logo, is still available if you try very hard, but it's ridiculously
+expensive and most IBM sales offices seem to deny that it exists.)  The
+commercial Logo developers have moved toward products in which Logo is
+embedded in some point-and-click graphical application program, with more
+emphasis on shapes and colors, and less emphasis on programming itself.
+That's probably a good decision for their purposes, but not for mine.
+That's why this new edition is based on Berkeley Logo, a free implementation
+that I developed along with some of my students.  Berkeley Logo is available
+for Unix systems, DOS and Windows machines, and Macintosh, and the language is exactly
+the same on all platforms.  That means I don't have to clutter the text with
+footnotes like &quot;If you're using this kind of computer, type that instead.&quot;
+
+<P><H2>Why Logo?</H2>
+
+<P>Logo has been the victim of its own success in the elementary
+schools.  It has acquired a reputation as a trivial language for
+babies.  Why, then, do I use it as the basis for a series of books
+about serious computer science?  Why not Pascal or C++ instead?
+
+<P>The truth is that Logo is one of the most powerful programming
+language available for home computers.  (In 1984 I said &quot;by far the most
+powerful,&quot; but now home computers have become larger and Logo finally
+has some competition.)  It is a dialect of Lisp, the
+language used in the most advanced research projects in computer
+science, and especially in artificial intelligence.  Until recently,
+all of the <EM>books</EM> about Logo have been pretty trivial, and they
+tend to underscore the point by strewing cute pictures of turtles
+around.  But the cute pictures aren't the whole picture.
+
+<P>What does it mean for a language to be powerful?  It <EM>doesn't</EM>
+mean that you can write programs in a particular language that do things you
+can't do in some other language.  (In that sense, all languages are the
+same; if you can write a program in Logo, you can write it in Pascal
+or BASIC too, one way or another.  And vice versa.)  Instead, the power
+of a language is a way of measuring how much the language helps you
+concentrate on the actual problem you wanted to solve in the first
+place, rather than having to worry about the constraints of the language.
+
+<P>For example, in C, Pascal, Java, and all of the other languages derived
+originally from Fortran, the programmer has to be very explicit about
+what goes where in the computer's memory.  If you want to group 20
+numbers together as a unit, you must &quot;declare an array,&quot; saying in
+advance that there will be exactly 20 numbers in it.  If you change
+your mind later and want 21 numbers, too bad.  You also have to say
+in advance that this array will contain 20 integers, or perhaps 20
+numbers with fractions allowed, or perhaps 20 characters of text--but
+not some of each.  In Logo the entire process of storage allocation
+is <EM>automatic;</EM> if your program produces a list of 20 numbers,
+the space for that list is provided with no effort by you.  If, later,
+you want to add a 21st number, that's automatic also.
+
+<P>Another example is the <EM>syntax</EM> of a language, the rules for
+constructing legal instructions.  All the Fortran-derived languages
+have a dozen or so types of instructions, each with its own peculiar
+syntax.  For example, the BASIC <CODE>PRINT</CODE> statement requires a list
+of expressions you want printed.  If you separate expressions with
+commas, it means to print them one way; if you separate them with
+semicolons, that means something else.  But you aren't allowed to use
+semicolons in other kinds of statements that also require lists of
+expressions.  In Logo there is only one syntax, the one that invokes
+a procedure.
+
+<P>It's not an accident that Logo is more powerful than Pascal or C++;
+nor is it just that Logo's designers were smarter.  Fortran was
+invented before the mathematical basis of computer programming was
+well understood, so its design mostly reflects the capabilities (and
+the deficiencies) of the computers that happened to be available
+then.  The Fortran-based languages still have the same fundamental
+design, although some of its worst details have been patched over in
+the more recent versions like Java and C++.  More powerful languages are
+based on some particular mathematical model of computing and use that
+model in a consistent way.  For example, APL is based on the idea of
+matrix manipulation; Prolog is based on predicate calculus,
+a form of mathematical logic.  Logo, like Lisp,
+is based on the idea of composition of functions.
+
+<P>The trouble is that if you're just starting this book, you don't have
+the background yet to know what I'm talking about!  So for now, please
+just take my word for it that I'm not insulting you by asking you to
+use a &quot;baby&quot; language.  After you finish the book, come back and
+read this section again.
+
+<P>A big change since 1984 is that Logo is no longer the only member of the
+Lisp family available for home computers.  Another dialect, Scheme, has
+become popular in education.  Scheme has many virtues in its own right, but
+its popularity is also due in part to the fact that it's the language used
+in the best computer science book ever written: <EM>Structure and
+Interpretation of Computer Programs,</EM> by Harold Abelson and Gerald Jay
+Sussman with Julie Sussman (MIT Press/McGraw-Hill, 1985).  I have a foot in
+both camps, since I am co-author, with Matthew Wright, of <EM>Simply
+Scheme: Introducing Computer Science</EM> (MIT Press, 1994), which is sort of
+a Scheme version of the philosophy of this book.
+
+<P>The main difference between Scheme and Logo is that Scheme is more
+consistent in its use of functional programming style.  For example, in
+Scheme, every procedure is what Logo calls an operation--a procedure that
+returns a computed value for use by some other procedure.  Instead of
+writing a program as a sequence of instructions, as in Logo, the Scheme
+programmer writes a single expression whose complexity takes the form of
+composition of functions.
+
+<P>The Scheme approach is definitely more powerful and cleaner for writing
+advanced projects.  Its cost is that the Scheme learner must come to terms
+from the beginning with the difficult idea of function as object.  Logo is
+more of a compromise with the traditional, sequential programming style.
+That traditional style is limiting, in the end, but people seem to find it
+more natural at first.  My guess is that ultimately, Logo programmers who
+maintain their interest in computing will want to learn Scheme, but that
+there's still a place for Logo as a more informal starting point.
+
+<P><H2>Hardware and Software Requirements</H2>
+
+<P>The programs in this series of books are written using Berkeley Logo, a free
+interpreter that is available on diskette from the MIT Press or on the
+Internet.  (Details are in Appendix A.)  Berkeley Logo runs on Unix systems,
+DOS and Windows machines, and Macintosh.
+
+<P>Since Berkeley Logo is free, I recommend using it with this book, even if
+you have another version of Logo that you use for other purposes.  One of
+the frustrations I had in writing the first edition was dealing with all the
+trivial ways in which different Logo dialects differ.  (For example, if you
+want to add 2 and 3, can you say <CODE>2+3</CODE>, or do you have to put spaces
+around the plus sign?  Different dialects answer this question differently.)
+Nevertheless, the examples in this first volume should be workable in just
+about any Logo dialect with some effort in fixing syntactic differences.
+The later volumes in the series, though, depend on advanced features of
+Berkeley Logo that are missing from many other dialects.
+
+<P>The Berkeley Logo distribution includes the larger programs from these
+books.  When a program is available in a file, the filename is shown at
+the beginning of the chapter.  (There are only a few of these in the
+first volume, but more in later volumes.)
+
+<P><H2>Words of Wisdom</H2>
+
+<P>The trick in learning to program, as in any intellectual skill, is to
+find a balance between theory and practice.  This book provides the
+theory.  One mistake would be to read through it without ever touching
+a computer.  The other mistake would be to be so eager to get your
+hands on the keyboard that you just type in the examples and skip over
+the text.
+
+<P>There are no formal exercises at the ends of chapters.  That's because
+(1) I hate a school-like atmosphere; (2) you're supposed
+to be interested enough
+already to explore on your own; and (3) I think it's better to
+encourage your creativity by letting you invent your own exercises.
+However, at appropriate points in the text you'll find questions like
+&quot;What do you think would happen if you tried thus-and-such?&quot; and
+suggestions for programs you can write.  These questions and activities are
+indicated by this symbol: &raquo;.  You'll
+get more out of the book if you take these questions seriously.
+
+<P>If you're not part of a formal class, consider working with a friend.
+Not only will you keep each other from handwaving too much but it's
+more fun.
+
+<P>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P>[no back]
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch1/explor.html b/js/games/nluqo.github.io/~bh/v1ch1/explor.html
new file mode 100644
index 0000000..8b5682b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch1/explor.html
@@ -0,0 +1,449 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 1: Exploration</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Exploration</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The name Logo comes from the Greek word <EM>logos,</EM> which means
+&quot;word.&quot; In contrast to earlier programming languages, which
+emphasized arithmetic computation, Logo was designed to manipulate
+language--words and sentences.
+
+<P>Like any programming language, Logo is a general-purpose tool that
+can be approached in many ways.  Logo programming can be understood
+at different levels of sophistication.  It has been taught to
+four-year-olds and to college students.  Most of the books about
+Logo so far have been introductory books for young beginners, but <EM>
+this</EM> book is different.  It's for somewhat older learners,
+probably with some prior computer experience, although not
+necessarily Logo experience.
+
+<P>This book was written using the Berkeley Logo dialect, a version
+of Logo that's available at no cost for PCs, Macintoshes, and Unix
+systems.  Recent commercial Logo
+dialects have emphasized the control of real-time animation,
+robotics, and other such application areas, somewhat at the
+expense of more traditional Logo features designed to be useful
+in the development of larger and more complex programs.  Berkeley
+Logo follows the traditional design, so you may miss some
+&quot;bells and whistles&quot; that you associate with Logo from
+elementary school.  In fact, we'll hardly do any graphics
+in this book!
+
+<P>Some of the details you'll have to know in order to work with Logo
+depend on the particular kind of computer you're using.  This
+book assumes you already know some things about your computer:
+
+<UL>
+<LI> How to turn on your computer and start Logo
+<LI> How to type a command, ending with the RETURN key
+<LI> How to use control keys to correct typing mistakes
+<LI> How to use a text editing program
+</UL>
+
+<P>
+These points I've listed aren't actually part of the Logo
+<EM>language</EM> itself, but they're part of the Logo programming
+<EM>environment.</EM>  Appendix A has a brief guide to some of these
+machine-specific aspects, but if you've never used a computer before
+at all, start by working with some application programs
+to get the feel of the machine.
+
+<P>On the other hand, I'd like to pretend that you know nothing about
+the Logo language--the primitive procedures, the process of
+procedure definition, and so on--even if you've really used Logo
+in elementary school.  The reason for this pretense is
+that I want you to think about programming in what will probably be
+a new way.  The <EM>programs</EM> may not be new to you, but the <EM>
+vocabulary</EM> with which you think about them will be.  I'm warning
+you about this ahead of time because I don't want you to skip over
+the early chapters, thinking that you already know what's in them.
+
+<P>Okay, it's time to start Logo running on your computer.  You should
+then see a screen that says something like
+
+<P><PRE>Welcome to Berkeley Logo version 3.3
+?
+</PRE>
+
+<P>The question mark is Logo's <EM>prompt.</EM> When you
+see the question mark, it means that the computer is prepared for you
+to type in a Logo <EM>instruction</EM> and that Logo will carry
+out the instruction as soon as you finish it.
+
+<P>
+<H2>Getting Acquainted with Logo...</H2>
+
+<P>Right now, type this instruction:
+
+<P><PRE>repeat 50 [setcursor list random 75 random 20 type &quot;Hi]
+</PRE>
+
+<P>Remember that square brackets <CODE>[]</CODE> are different from
+parentheses <CODE>()</CODE>.  Also remember that it's important to put
+spaces between words.  However, it doesn't matter whether you use
+<CODE>UPPER CASE</CODE> or <CODE>lower case</CODE> letters in the words that Logo understands.
+
+<P>If all goes well, Logo will cheerfully greet you by scattering <CODE>
+Hi</CODE>s all over the screen.  If all doesn't go well, you probably
+misspelled something.  Take a look at what you typed, and try again.
+
+<P>Afterward, you can clear the screen by typing <CODE>cleartext</CODE> or
+its abbreviation <CODE>ct</CODE>.
+
+<P>
+<H2>... in Two Senses</H2>
+
+<P>I thought it would be appropriate to start exploring Logo by having
+it say hello.  You and Logo can get acquainted as you would with
+another person.
+
+<P>But, of course, the point of the exercise is to get acquainted with
+Logo in a more serious sense too.  You're seeing what a Logo
+instruction looks like and a little bit about what kinds of things
+Logo can do.  In this first chapter the kind of acquaintance I have
+in mind is relatively superficial.  I'm trying to get across a broad
+sense of Logo's flavor rather than a lot of details.  So I'm not
+explaining completely what we're doing here.  For that reason, the
+second chapter will repeat some of the same activities, but I'll
+give a more detailed discussion there.
+
+<P>Perhaps you've made Logo's acquaintance before, probably through the
+medium of turtle graphics.  In that first introduction you may have
+explored Logo's ability to manipulate text as well as graphics.  But
+maybe not.  Writing a book like this, it's not easy for me to carry
+on a conversation with someone I haven't met, so in this
+introduction I may be saying too much or too little for your
+individual situation.  I hope that by the second chapter you and the
+other readers will all be ready for the same discussion.
+
+<P>If you haven't used Logo before, or if you've used only the part of
+Logo that has to do with turtles, look at the instruction I asked
+you to type earlier.  Think about the different parts of that
+instruction, the words like <CODE>repeat</CODE> and <CODE>random</CODE> and <CODE>
+setcursor</CODE>.  Try to figure out what each one means.  Then see
+if you can figure out an experiment to decide if you've understood
+each word correctly!  Later, we'll go over all these details and
+you'll learn the &quot;official&quot; explanations.  But the kind of
+experimenting I'm suggesting isn't pointless.  This kind of
+exploration may raise questions in your mind, not just about the
+meanings of the Logo words but about how they're connected together
+in an instruction, or about <EM>why</EM> a word means just what it
+does rather than something a little different.
+
+<P><H2>Another Greeting</H2>
+
+<P>Here is a somewhat less &quot;scatterbrained&quot; greeting instruction:
+
+<P><PRE>repeat 20 [repeat random 30 [type &quot;Hi] print []]
+</PRE>
+
+<P>Try that one.  Compare it to the one we started with.
+Which do you like better?  Do you prefer random scattering, or
+orderly rows?  Perhaps this question will teach you something about
+your own personality!
+
+<P><H2>Fooling Around</H2>
+
+<P>Then again, maybe you think this is all silly.  If so, I'd like to
+try to convince you that there are some good, serious reasons for
+you to take a lighthearted approach to computer programming, no
+matter how serious your ultimate goals may be.
+
+<P>There are two aspects to learning how to program in a language like
+Logo.  One aspect is memorizing the vocabulary, just as in learning
+to speak French.  If you flip through the reference manual that came
+with your Logo,<SUP>*</SUP> you'll find that it's a sort of dictionary,
+translating each Logo word into a bunch of English words that
+explain it.  But the second aspect is to learn the &quot;feel&quot; of
+Logo.  What kinds of problems does Logo handle particularly well?
+What are the examples of programming <EM>style</EM> that correspond
+to the idioms of a human language?  What do you do when something
+doesn't work?
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>If you're using Berkeley Logo, it's in a file
+named <CODE>usermanual</CODE> (or <CODE>userman.ual</CODE> if you're
+using a DOS machine) that should be installed along with the Logo
+program.  The Berkeley Logo reference manual is also an appendix
+to Volume 2 of this series.</SMALL></BLOCKQUOTE></SMALL><P>It is by fooling around with Logo that you learn this second aspect
+of the language.  Starting with the second chapter of this book,
+we'll be going through plenty of dry, carefully analyzed fine points
+of Logo usage.  But as we progress, you should still be fooling
+around, on the computer, with the ideas in the chapters.
+
+<P>In fact, I think that that kind of intellectual play is the best
+reason for learning about computer programming in the first place.
+This is true whether you are a kid programming for the fun of it or
+an adult looking for a career change.  The most successful computer
+programmers aren't the ones who approach programming as a task they
+have to carry out in order to get their paychecks.  They're the ones
+for whom programming is a joyful game.  Just as a baseball diamond
+is a good medium in which you can exercise your body, the computer
+is a good medium in which you can exercise your mind.  That's the
+real virtue of the computer in education, not anything about job
+training or about arithmetic drill.
+
+<P><H2>A Slightly Longer Conversation</H2>
+
+<P>The Logo words such as <CODE>print</CODE> and <CODE>random</CODE> are the names of
+<EM>procedures,</EM> little pieces of computer program that are
+&quot;specialists&quot; in some particular task.  We are now going to add to
+Logo's repertoire by inventing a new procedure named <CODE>hi</CODE>.
+At the question mark prompt, start by typing this:
+
+<P><PRE>to hi
+</PRE>
+
+<P>The word <CODE>to</CODE> here is short for &quot;here's how to.&quot; The
+name is intended to suggest the <EM>metaphor</EM> that what
+you're doing when you write computer programs is to <EM>teach</EM>
+the computer a new skill.  Metaphors like this can be very helpful
+to you in understanding a new idea.  (Just ask any English
+teacher.)  I'll point out other metaphors from time to time.
+
+<P>Logo should have responded to this instruction by printing a
+different prompt character.  Instead of the question mark,
+you should now see a greater-than sign (<CODE>&gt;</CODE>) at the beginning
+of the line:
+
+<P><PRE>? <U>to hi</U>
+>
+</PRE>
+
+<P>(Whenever I show an interaction with the computer in this
+book, I'll show the part that you're supposed to type <CODE>
+<U>underlined</U></CODE>; what the computer prints in response is <CODE>not
+underlined</CODE>.
+But I won't underline when I'm only showing what you type and
+not a complete interaction.)  This new prompt means that Logo will
+not immediately carry out whatever instructions you type; instead
+Logo will remember these instructions as part of the new procedure
+<CODE>hi</CODE>.  Continue typing these lines:
+
+<P><PRE>print [Hi. What's your name?]
+print sentence [How are you,] word first readlist &quot;?
+ignore readlist
+print [That's nice.]
+end
+</PRE>
+
+<P>Again, be careful about the spaces and punctuation.  After
+the last line, the one that just says <CODE>end</CODE>, Logo should go back
+to the question mark prompt.  Now just type
+
+<P><PRE>hi
+</PRE>
+
+<P>on a line by itself.  You can carry on a short
+conversation with this program.  Here's what happened when I tried
+it.
+
+<P><PRE>? <U>hi</U>
+Hi. What's your name?
+<U>Brian Harvey</U>
+How are you, Brian?
+<U>I'm fine.</U>
+That's nice.
+</PRE>
+
+<P>If something unexpected happens when you try it, perhaps
+you made a typing mistake.  If you know how, you can fix such
+mistakes using the Logo editor.  If not, you'll have a chance to
+review that process later, but for now, just start over again but
+give the procedure a different name.  For example, you can say
+
+<P><PRE>to hi2
+</PRE>
+
+<P>for the second version of <CODE>hi</CODE>.
+
+<P>&raquo;This program pretends to be pretty smart.  It carries on a
+conversation with you in English.  But of course it isn't really
+smart.  If you say &quot;I feel terrible&quot; instead of &quot;I'm fine,&quot; the
+procedure cheerfully replies &quot;That's nice&quot; anyway.  How else can
+you mess up the program?  What programming tools would you need to
+be able to overcome the &quot;bugs&quot; in this program?
+
+<P>(When a paragraph starts with this symbol &raquo; it means that
+the paragraph asks you to invent something.  Often it will be a Logo
+program, but sometimes, as in this case, just answers to questions.  This is
+a good opportunity to take a break from reading, and check on your
+understanding of what you've read.)
+
+<P><H2>A Sneaky Greeting</H2>
+
+<P>This chapter started as a sort of pun in my mind--the one about
+getting acquainted.  How should I have Logo introduce itself?  I'm
+still playing with that idea.  Here's another version.
+
+<P><PRE>to start
+cleartext
+print [Welcome to Berkeley Logo version 3.3]
+type &quot;|? |
+process readlist
+type &quot;|? |
+wait 100
+print [Ha, ha, fooled you!!]
+end
+
+to process :instruction
+test emptyp :instruction
+iftrue [type &quot;|? | process readlist stop]
+iffalse [print sentence [|I don't know how  to|] first :instruction]
+end
+</PRE>
+
+<P>The vertical bars are used to tell Logo that you want to
+include space characters within a word.  (Ordinarily Logo pays no
+attention to extra spaces between words.)  This is the sort of
+grubby detail you may not want to bother with right now, but if you
+are a practical joker you may find it worth the effort.
+
+<P><H2>A Quiz Program</H2>
+
+<P>Before we get on to the next chapter, I'll just show you one more
+little program.  Try typing this in.  As before, you'll see
+greater-than prompts instead of question marks while you're doing
+it.
+
+<P>
+<PRE>to music.quiz
+print [Who is the greatest musician of all time?]
+if equalp readlist [John Lennon] [print [That's right!] stop]
+print [No, silly, it's John Lennon.]
+end
+</PRE>
+
+<P>You can try out this procedure by typing its name as an
+instruction.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>It has been suggested by some reviewers of the
+manuscript that there may be younger readers who don't know who John Lennon
+is.  Well, he's the father of Julian Lennon, an obscure rock star of the
+'80s, and he used to be in a rock group called the Quarrymen.  If you have
+trouble with some of the cultural references later in the book you'll have
+to research them yourself.</SMALL></BLOCKQUOTE></SMALL><P>&raquo;If you don't like my question, you could make up your own procedures
+that ask different questions.  Let's say you make up one called <CODE>
+sports.quiz</CODE> and another called <CODE>history.quiz</CODE>, each asking and
+answering one question.  You could then put them all together into one
+big quiz like this:
+
+<P><PRE>to total.quiz
+music.quiz
+sports.quiz
+history.quiz
+end
+</PRE>
+
+<P><H2>Saving Your Work</H2>
+
+<P>If you do write a collection of quiz procedures, you'll want to save
+them so that they'll still be available the next time you use Logo.
+Certainly you'll want to save the work you do in later chapters.
+You can ask Logo to record all of the definitions you've made as
+a <EM>workspace</EM> file using the <CODE>save</CODE> command.  For example,
+if you enter the instruction
+
+<P><PRE>save &quot;mystuff
+</PRE>
+
+<P>you are asking Logo to write a disk file called <CODE>mystuff</CODE>
+containing everything you've defined.  (The next time you use Logo, you can
+get back your definitions with the <CODE>load</CODE> command.)
+
+<P>Don't get confused about the difference between a <EM>procedure</EM> name
+and a <EM>workspace</EM> name.  Logo beginners sometimes think that <CODE>
+save</CODE> saves only a single procedure, the one whose name you tell it (in this
+example, a procedure named <CODE>mystuff</CODE>).  But the workspace file named
+<CODE>mystuff</CODE> will actually contain <EM>all</EM> the procedures you've defined.
+In fact, you probably don't have a procedure named <CODE>mystuff</CODE>.
+
+<P>The format for the name of a disk file will depend on the kind of computer
+you're using, whether you're writing to a hard disk or a floppy disk, and so
+on.  Just use whatever file name format your system requires in other
+programs, preceded by the quotation mark that tells Logo you're providing
+a word as the input to the <CODE>save</CODE> command.
+
+<P><H2>About Chapter 2</H2>
+
+<P>In this chapter the emphasis has been on <EM>doing</EM> things.  You've
+been playing around with some fairly intricate Logo instructions,
+and if you don't understand everything about the examples, don't
+let that worry you.
+
+<P>Chapter 2 has the opposite emphasis.  There is very little to do,
+and the examples will seem quite simple, perhaps even insultingly
+simple!  But the focus of the chapter is on <EM>understanding</EM> those
+simple examples in great detail.
+
+<P>Logo deserves its reputation as an easy-to-learn language, but it
+is also a very sophisticated one.  The ease with which Logo can be
+learned has lured many people into sloppy thinking habits that make
+it hard for them to grow beyond the most trivial programming.  By
+studying examples that seem easy on the surface, we can start exploring
+<EM>below</EM> the surface.  The important questions will not be ones
+like &quot;what does <CODE>print</CODE> do,&quot; but instead ones like &quot;what is going
+on <EM>inside</EM> the Logo interpreter when I type <CODE>print</CODE>?&quot;
+
+<P>Later chapters will strike more of a balance between things to do
+and things to think about.  If the pace seems slow in chapter 2, glance
+back at the table of contents to reassure yourself about how much
+territory we'll cover before the end of the book.  Then keep in mind
+that you'll need the ideas from chapter 2 in order to understand what
+comes later.
+
+<P><H2>No Exercises</H2>
+
+<P>This is the point in the chapter where you might be expecting a set
+of exercises:  Problem 1.1, get the computer to print your name.
+
+<P>There aren't any exercises--but not because you shouldn't try using
+Logo at this point.  The reason is that part of the challenge is for
+<EM>you</EM> to invent things to try, not just rely on me for your ideas.
+In each chapter there will be some sample procedures to illustrate
+the new information in the chapter.  You should try to invent programs
+that use those ideas.
+
+<P>But I hope it's clear by now that I don't want you to do this with
+a sense of duty.  You should play with the ideas in each chapter only
+to the extent that it's interesting and mind-stretching for you to
+do so.
+
+<P>In this chapter I really haven't yet told you any of the rules for
+putting together Logo instructions.  (I'll do that in Chapter 2.)
+So you shouldn't get discouraged or feel stupid if you don't get very
+far, right now, in playing with Logo.  It will be a few more chapters
+before you should expect to feel really <EM>confident</EM> about undertaking
+new projects of your own.  But you won't break anything by trying
+now.  Go ahead, fool around!
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch1/v1ch1.html b/js/games/nluqo.github.io/~bh/v1ch1/v1ch1.html
new file mode 100644
index 0000000..8b5682b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch1/v1ch1.html
@@ -0,0 +1,449 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 1: Exploration</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Exploration</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The name Logo comes from the Greek word <EM>logos,</EM> which means
+&quot;word.&quot; In contrast to earlier programming languages, which
+emphasized arithmetic computation, Logo was designed to manipulate
+language--words and sentences.
+
+<P>Like any programming language, Logo is a general-purpose tool that
+can be approached in many ways.  Logo programming can be understood
+at different levels of sophistication.  It has been taught to
+four-year-olds and to college students.  Most of the books about
+Logo so far have been introductory books for young beginners, but <EM>
+this</EM> book is different.  It's for somewhat older learners,
+probably with some prior computer experience, although not
+necessarily Logo experience.
+
+<P>This book was written using the Berkeley Logo dialect, a version
+of Logo that's available at no cost for PCs, Macintoshes, and Unix
+systems.  Recent commercial Logo
+dialects have emphasized the control of real-time animation,
+robotics, and other such application areas, somewhat at the
+expense of more traditional Logo features designed to be useful
+in the development of larger and more complex programs.  Berkeley
+Logo follows the traditional design, so you may miss some
+&quot;bells and whistles&quot; that you associate with Logo from
+elementary school.  In fact, we'll hardly do any graphics
+in this book!
+
+<P>Some of the details you'll have to know in order to work with Logo
+depend on the particular kind of computer you're using.  This
+book assumes you already know some things about your computer:
+
+<UL>
+<LI> How to turn on your computer and start Logo
+<LI> How to type a command, ending with the RETURN key
+<LI> How to use control keys to correct typing mistakes
+<LI> How to use a text editing program
+</UL>
+
+<P>
+These points I've listed aren't actually part of the Logo
+<EM>language</EM> itself, but they're part of the Logo programming
+<EM>environment.</EM>  Appendix A has a brief guide to some of these
+machine-specific aspects, but if you've never used a computer before
+at all, start by working with some application programs
+to get the feel of the machine.
+
+<P>On the other hand, I'd like to pretend that you know nothing about
+the Logo language--the primitive procedures, the process of
+procedure definition, and so on--even if you've really used Logo
+in elementary school.  The reason for this pretense is
+that I want you to think about programming in what will probably be
+a new way.  The <EM>programs</EM> may not be new to you, but the <EM>
+vocabulary</EM> with which you think about them will be.  I'm warning
+you about this ahead of time because I don't want you to skip over
+the early chapters, thinking that you already know what's in them.
+
+<P>Okay, it's time to start Logo running on your computer.  You should
+then see a screen that says something like
+
+<P><PRE>Welcome to Berkeley Logo version 3.3
+?
+</PRE>
+
+<P>The question mark is Logo's <EM>prompt.</EM> When you
+see the question mark, it means that the computer is prepared for you
+to type in a Logo <EM>instruction</EM> and that Logo will carry
+out the instruction as soon as you finish it.
+
+<P>
+<H2>Getting Acquainted with Logo...</H2>
+
+<P>Right now, type this instruction:
+
+<P><PRE>repeat 50 [setcursor list random 75 random 20 type &quot;Hi]
+</PRE>
+
+<P>Remember that square brackets <CODE>[]</CODE> are different from
+parentheses <CODE>()</CODE>.  Also remember that it's important to put
+spaces between words.  However, it doesn't matter whether you use
+<CODE>UPPER CASE</CODE> or <CODE>lower case</CODE> letters in the words that Logo understands.
+
+<P>If all goes well, Logo will cheerfully greet you by scattering <CODE>
+Hi</CODE>s all over the screen.  If all doesn't go well, you probably
+misspelled something.  Take a look at what you typed, and try again.
+
+<P>Afterward, you can clear the screen by typing <CODE>cleartext</CODE> or
+its abbreviation <CODE>ct</CODE>.
+
+<P>
+<H2>... in Two Senses</H2>
+
+<P>I thought it would be appropriate to start exploring Logo by having
+it say hello.  You and Logo can get acquainted as you would with
+another person.
+
+<P>But, of course, the point of the exercise is to get acquainted with
+Logo in a more serious sense too.  You're seeing what a Logo
+instruction looks like and a little bit about what kinds of things
+Logo can do.  In this first chapter the kind of acquaintance I have
+in mind is relatively superficial.  I'm trying to get across a broad
+sense of Logo's flavor rather than a lot of details.  So I'm not
+explaining completely what we're doing here.  For that reason, the
+second chapter will repeat some of the same activities, but I'll
+give a more detailed discussion there.
+
+<P>Perhaps you've made Logo's acquaintance before, probably through the
+medium of turtle graphics.  In that first introduction you may have
+explored Logo's ability to manipulate text as well as graphics.  But
+maybe not.  Writing a book like this, it's not easy for me to carry
+on a conversation with someone I haven't met, so in this
+introduction I may be saying too much or too little for your
+individual situation.  I hope that by the second chapter you and the
+other readers will all be ready for the same discussion.
+
+<P>If you haven't used Logo before, or if you've used only the part of
+Logo that has to do with turtles, look at the instruction I asked
+you to type earlier.  Think about the different parts of that
+instruction, the words like <CODE>repeat</CODE> and <CODE>random</CODE> and <CODE>
+setcursor</CODE>.  Try to figure out what each one means.  Then see
+if you can figure out an experiment to decide if you've understood
+each word correctly!  Later, we'll go over all these details and
+you'll learn the &quot;official&quot; explanations.  But the kind of
+experimenting I'm suggesting isn't pointless.  This kind of
+exploration may raise questions in your mind, not just about the
+meanings of the Logo words but about how they're connected together
+in an instruction, or about <EM>why</EM> a word means just what it
+does rather than something a little different.
+
+<P><H2>Another Greeting</H2>
+
+<P>Here is a somewhat less &quot;scatterbrained&quot; greeting instruction:
+
+<P><PRE>repeat 20 [repeat random 30 [type &quot;Hi] print []]
+</PRE>
+
+<P>Try that one.  Compare it to the one we started with.
+Which do you like better?  Do you prefer random scattering, or
+orderly rows?  Perhaps this question will teach you something about
+your own personality!
+
+<P><H2>Fooling Around</H2>
+
+<P>Then again, maybe you think this is all silly.  If so, I'd like to
+try to convince you that there are some good, serious reasons for
+you to take a lighthearted approach to computer programming, no
+matter how serious your ultimate goals may be.
+
+<P>There are two aspects to learning how to program in a language like
+Logo.  One aspect is memorizing the vocabulary, just as in learning
+to speak French.  If you flip through the reference manual that came
+with your Logo,<SUP>*</SUP> you'll find that it's a sort of dictionary,
+translating each Logo word into a bunch of English words that
+explain it.  But the second aspect is to learn the &quot;feel&quot; of
+Logo.  What kinds of problems does Logo handle particularly well?
+What are the examples of programming <EM>style</EM> that correspond
+to the idioms of a human language?  What do you do when something
+doesn't work?
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>If you're using Berkeley Logo, it's in a file
+named <CODE>usermanual</CODE> (or <CODE>userman.ual</CODE> if you're
+using a DOS machine) that should be installed along with the Logo
+program.  The Berkeley Logo reference manual is also an appendix
+to Volume 2 of this series.</SMALL></BLOCKQUOTE></SMALL><P>It is by fooling around with Logo that you learn this second aspect
+of the language.  Starting with the second chapter of this book,
+we'll be going through plenty of dry, carefully analyzed fine points
+of Logo usage.  But as we progress, you should still be fooling
+around, on the computer, with the ideas in the chapters.
+
+<P>In fact, I think that that kind of intellectual play is the best
+reason for learning about computer programming in the first place.
+This is true whether you are a kid programming for the fun of it or
+an adult looking for a career change.  The most successful computer
+programmers aren't the ones who approach programming as a task they
+have to carry out in order to get their paychecks.  They're the ones
+for whom programming is a joyful game.  Just as a baseball diamond
+is a good medium in which you can exercise your body, the computer
+is a good medium in which you can exercise your mind.  That's the
+real virtue of the computer in education, not anything about job
+training or about arithmetic drill.
+
+<P><H2>A Slightly Longer Conversation</H2>
+
+<P>The Logo words such as <CODE>print</CODE> and <CODE>random</CODE> are the names of
+<EM>procedures,</EM> little pieces of computer program that are
+&quot;specialists&quot; in some particular task.  We are now going to add to
+Logo's repertoire by inventing a new procedure named <CODE>hi</CODE>.
+At the question mark prompt, start by typing this:
+
+<P><PRE>to hi
+</PRE>
+
+<P>The word <CODE>to</CODE> here is short for &quot;here's how to.&quot; The
+name is intended to suggest the <EM>metaphor</EM> that what
+you're doing when you write computer programs is to <EM>teach</EM>
+the computer a new skill.  Metaphors like this can be very helpful
+to you in understanding a new idea.  (Just ask any English
+teacher.)  I'll point out other metaphors from time to time.
+
+<P>Logo should have responded to this instruction by printing a
+different prompt character.  Instead of the question mark,
+you should now see a greater-than sign (<CODE>&gt;</CODE>) at the beginning
+of the line:
+
+<P><PRE>? <U>to hi</U>
+>
+</PRE>
+
+<P>(Whenever I show an interaction with the computer in this
+book, I'll show the part that you're supposed to type <CODE>
+<U>underlined</U></CODE>; what the computer prints in response is <CODE>not
+underlined</CODE>.
+But I won't underline when I'm only showing what you type and
+not a complete interaction.)  This new prompt means that Logo will
+not immediately carry out whatever instructions you type; instead
+Logo will remember these instructions as part of the new procedure
+<CODE>hi</CODE>.  Continue typing these lines:
+
+<P><PRE>print [Hi. What's your name?]
+print sentence [How are you,] word first readlist &quot;?
+ignore readlist
+print [That's nice.]
+end
+</PRE>
+
+<P>Again, be careful about the spaces and punctuation.  After
+the last line, the one that just says <CODE>end</CODE>, Logo should go back
+to the question mark prompt.  Now just type
+
+<P><PRE>hi
+</PRE>
+
+<P>on a line by itself.  You can carry on a short
+conversation with this program.  Here's what happened when I tried
+it.
+
+<P><PRE>? <U>hi</U>
+Hi. What's your name?
+<U>Brian Harvey</U>
+How are you, Brian?
+<U>I'm fine.</U>
+That's nice.
+</PRE>
+
+<P>If something unexpected happens when you try it, perhaps
+you made a typing mistake.  If you know how, you can fix such
+mistakes using the Logo editor.  If not, you'll have a chance to
+review that process later, but for now, just start over again but
+give the procedure a different name.  For example, you can say
+
+<P><PRE>to hi2
+</PRE>
+
+<P>for the second version of <CODE>hi</CODE>.
+
+<P>&raquo;This program pretends to be pretty smart.  It carries on a
+conversation with you in English.  But of course it isn't really
+smart.  If you say &quot;I feel terrible&quot; instead of &quot;I'm fine,&quot; the
+procedure cheerfully replies &quot;That's nice&quot; anyway.  How else can
+you mess up the program?  What programming tools would you need to
+be able to overcome the &quot;bugs&quot; in this program?
+
+<P>(When a paragraph starts with this symbol &raquo; it means that
+the paragraph asks you to invent something.  Often it will be a Logo
+program, but sometimes, as in this case, just answers to questions.  This is
+a good opportunity to take a break from reading, and check on your
+understanding of what you've read.)
+
+<P><H2>A Sneaky Greeting</H2>
+
+<P>This chapter started as a sort of pun in my mind--the one about
+getting acquainted.  How should I have Logo introduce itself?  I'm
+still playing with that idea.  Here's another version.
+
+<P><PRE>to start
+cleartext
+print [Welcome to Berkeley Logo version 3.3]
+type &quot;|? |
+process readlist
+type &quot;|? |
+wait 100
+print [Ha, ha, fooled you!!]
+end
+
+to process :instruction
+test emptyp :instruction
+iftrue [type &quot;|? | process readlist stop]
+iffalse [print sentence [|I don't know how  to|] first :instruction]
+end
+</PRE>
+
+<P>The vertical bars are used to tell Logo that you want to
+include space characters within a word.  (Ordinarily Logo pays no
+attention to extra spaces between words.)  This is the sort of
+grubby detail you may not want to bother with right now, but if you
+are a practical joker you may find it worth the effort.
+
+<P><H2>A Quiz Program</H2>
+
+<P>Before we get on to the next chapter, I'll just show you one more
+little program.  Try typing this in.  As before, you'll see
+greater-than prompts instead of question marks while you're doing
+it.
+
+<P>
+<PRE>to music.quiz
+print [Who is the greatest musician of all time?]
+if equalp readlist [John Lennon] [print [That's right!] stop]
+print [No, silly, it's John Lennon.]
+end
+</PRE>
+
+<P>You can try out this procedure by typing its name as an
+instruction.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>It has been suggested by some reviewers of the
+manuscript that there may be younger readers who don't know who John Lennon
+is.  Well, he's the father of Julian Lennon, an obscure rock star of the
+'80s, and he used to be in a rock group called the Quarrymen.  If you have
+trouble with some of the cultural references later in the book you'll have
+to research them yourself.</SMALL></BLOCKQUOTE></SMALL><P>&raquo;If you don't like my question, you could make up your own procedures
+that ask different questions.  Let's say you make up one called <CODE>
+sports.quiz</CODE> and another called <CODE>history.quiz</CODE>, each asking and
+answering one question.  You could then put them all together into one
+big quiz like this:
+
+<P><PRE>to total.quiz
+music.quiz
+sports.quiz
+history.quiz
+end
+</PRE>
+
+<P><H2>Saving Your Work</H2>
+
+<P>If you do write a collection of quiz procedures, you'll want to save
+them so that they'll still be available the next time you use Logo.
+Certainly you'll want to save the work you do in later chapters.
+You can ask Logo to record all of the definitions you've made as
+a <EM>workspace</EM> file using the <CODE>save</CODE> command.  For example,
+if you enter the instruction
+
+<P><PRE>save &quot;mystuff
+</PRE>
+
+<P>you are asking Logo to write a disk file called <CODE>mystuff</CODE>
+containing everything you've defined.  (The next time you use Logo, you can
+get back your definitions with the <CODE>load</CODE> command.)
+
+<P>Don't get confused about the difference between a <EM>procedure</EM> name
+and a <EM>workspace</EM> name.  Logo beginners sometimes think that <CODE>
+save</CODE> saves only a single procedure, the one whose name you tell it (in this
+example, a procedure named <CODE>mystuff</CODE>).  But the workspace file named
+<CODE>mystuff</CODE> will actually contain <EM>all</EM> the procedures you've defined.
+In fact, you probably don't have a procedure named <CODE>mystuff</CODE>.
+
+<P>The format for the name of a disk file will depend on the kind of computer
+you're using, whether you're writing to a hard disk or a floppy disk, and so
+on.  Just use whatever file name format your system requires in other
+programs, preceded by the quotation mark that tells Logo you're providing
+a word as the input to the <CODE>save</CODE> command.
+
+<P><H2>About Chapter 2</H2>
+
+<P>In this chapter the emphasis has been on <EM>doing</EM> things.  You've
+been playing around with some fairly intricate Logo instructions,
+and if you don't understand everything about the examples, don't
+let that worry you.
+
+<P>Chapter 2 has the opposite emphasis.  There is very little to do,
+and the examples will seem quite simple, perhaps even insultingly
+simple!  But the focus of the chapter is on <EM>understanding</EM> those
+simple examples in great detail.
+
+<P>Logo deserves its reputation as an easy-to-learn language, but it
+is also a very sophisticated one.  The ease with which Logo can be
+learned has lured many people into sloppy thinking habits that make
+it hard for them to grow beyond the most trivial programming.  By
+studying examples that seem easy on the surface, we can start exploring
+<EM>below</EM> the surface.  The important questions will not be ones
+like &quot;what does <CODE>print</CODE> do,&quot; but instead ones like &quot;what is going
+on <EM>inside</EM> the Logo interpreter when I type <CODE>print</CODE>?&quot;
+
+<P>Later chapters will strike more of a balance between things to do
+and things to think about.  If the pace seems slow in chapter 2, glance
+back at the table of contents to reassure yourself about how much
+territory we'll cover before the end of the book.  Then keep in mind
+that you'll need the ideas from chapter 2 in order to understand what
+comes later.
+
+<P><H2>No Exercises</H2>
+
+<P>This is the point in the chapter where you might be expecting a set
+of exercises:  Problem 1.1, get the computer to print your name.
+
+<P>There aren't any exercises--but not because you shouldn't try using
+Logo at this point.  The reason is that part of the challenge is for
+<EM>you</EM> to invent things to try, not just rely on me for your ideas.
+In each chapter there will be some sample procedures to illustrate
+the new information in the chapter.  You should try to invent programs
+that use those ideas.
+
+<P>But I hope it's clear by now that I don't want you to do this with
+a sense of duty.  You should play with the ideas in each chapter only
+to the extent that it's interesting and mind-stretching for you to
+do so.
+
+<P>In this chapter I really haven't yet told you any of the rules for
+putting together Logo instructions.  (I'll do that in Chapter 2.)
+So you shouldn't get discouraged or feel stupid if you don't get very
+far, right now, in playing with Logo.  It will be a few more chapters
+before you should expect to feel really <EM>confident</EM> about undertaking
+new projects of your own.  But you won't break anything by trying
+now.  Go ahead, fool around!
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch10/cartesian.gif b/js/games/nluqo.github.io/~bh/v1ch10/cartesian.gif
new file mode 100644
index 0000000..265360e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/cartesian.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/dash14.gif b/js/games/nluqo.github.io/~bh/v1ch10/dash14.gif
new file mode 100644
index 0000000..3c61b6c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/dash14.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/fd80.gif b/js/games/nluqo.github.io/~bh/v1ch10/fd80.gif
new file mode 100644
index 0000000..306f8cf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/fd80.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/fingers.gif b/js/games/nluqo.github.io/~bh/v1ch10/fingers.gif
new file mode 100644
index 0000000..b27adf4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/fingers.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/flake.gif b/js/games/nluqo.github.io/~bh/v1ch10/flake.gif
new file mode 100644
index 0000000..a4a3696
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/flake.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/protect.gif b/js/games/nluqo.github.io/~bh/v1ch10/protect.gif
new file mode 100644
index 0000000..ac04117
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/protect.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/splittree.gif b/js/games/nluqo.github.io/~bh/v1ch10/splittree.gif
new file mode 100644
index 0000000..a0ef56f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/splittree.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/squaggle.gif b/js/games/nluqo.github.io/~bh/v1ch10/squaggle.gif
new file mode 100644
index 0000000..e7dbc7a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/squaggle.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/squiggle.gif b/js/games/nluqo.github.io/~bh/v1ch10/squiggle.gif
new file mode 100644
index 0000000..4669ccc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/squiggle.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/squirrel.gif b/js/games/nluqo.github.io/~bh/v1ch10/squirrel.gif
new file mode 100644
index 0000000..5981425
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/squirrel.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/turtle.html b/js/games/nluqo.github.io/~bh/v1ch10/turtle.html
new file mode 100644
index 0000000..6759b7f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/turtle.html
@@ -0,0 +1,790 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 10: Turtle Geometry</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Turtle Geometry</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch10.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch9/v1ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch11/v1ch11.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+Logo is best known as the language that introduced the <EM>turtle</EM>
+as a tool for computer graphics.  In fact, to many people, Logo and
+turtle graphics are synonymous.  Some computer companies have
+gotten away with
+selling products called &quot;Logo&quot; that provided nothing <EM>but</EM>
+turtle graphics, but if you bought a &quot;Logo&quot; that provided only the
+list processing primitives we've used so far, you'd probably feel
+cheated.
+
+<P>Historically, this idea that Logo is mainly turtle graphics is a
+mistake.  As I mentioned at the beginning of Chapter 1, Logo's name
+comes from the Greek word for <EM>word,</EM> because Logo was first
+designed as a language in which to manipulate language: words and
+sentences.  Still, turtle graphics has turned out to be a very
+powerful addition to Logo.  One reason is that any form of computer
+graphics is an attention-grabber.  But other programming languages had
+allowed graphics programming before Logo.  In this chapter we'll look
+at some of the reasons why <EM>turtle</EM> graphics, specifically, was
+such a major advance in programming technology.
+
+<P>This chapter can't be long enough to treat the possibilities of
+computer graphics fully.  My goal is merely to show you that the same
+ideas we've been using with words and lists are also
+fruitful in a very different problem domain.  Ideas like locality,
+modularity, and recursion appear here, too, although sometimes in
+different guises.
+
+<P><H2>A Review, or a Brief Introduction</H2>
+
+<P>I've been assuming that you've already been introduced to Logo turtle
+graphics, either in a school or by reading Logo
+tutorial books.  If not, perhaps
+you should read one of those books now.  But just in case, here is a
+very brief overview of the primitive procedures for turtle graphics.
+Although some versions of Logo allow more than one turtle, or allow
+<EM>dynamic</EM> turtles with programmable shapes and speeds, for now
+I'll only consider the traditional, single, static turtle.
+
+<P>Type the command <CODE>cs</CODE> (short for <CODE>clearscreen</CODE>), with no
+inputs.  The effect of this command is to initiate Logo's graphics
+capability.  A turtle will appear in the center of a graphics window.
+(Depending on which version of Logo you have, the turtle may look like an
+actual animal with a head and four legs or--as in Berkeley Logo--it may be
+represented as a triangle.) The turtle will be facing toward the top of the
+screen.  Any previous graphic drawing will be erased from the screen and
+from the computer's memory.
+
+<P>The crucial thing about the turtle, which distinguishes it from other
+metaphors for computer graphics, is that the turtle is pointing in a
+particular direction and can only move in that direction.  (It can
+move forward or back, like a car with reverse gear, but not sideways.)
+In order to draw in any other direction, the turtle must <EM>first</EM>
+turn so that it is facing in the new direction.  (In this respect it
+is unlike a car, which must turn and move at the same time.)
+
+<P>The primary means for moving the turtle is the <CODE>forward</CODE> command,
+abbreviated <CODE>fd</CODE>.  <CODE>Forward</CODE> takes one input, which must be a
+number.  The effect of <CODE>forward</CODE> is to move the turtle in the
+direction it's facing, through a distance specified by the input.  The
+unit of distance is the &quot;turtle step,&quot; a small distance that depends
+on the resolution of your computer's screen.  (Generally, one turtle
+step is the smallest line your computer can draw.  This is
+slightly oversimplified, though, because that smallest distance may be
+different in different directions.  But the size of a turtle step does
+<EM>not</EM> depend on the direction; it's always the same distance for
+any given computer.)  Try typing the command
+
+<P><TABLE><TR><TD>
+<PRE>
+forward 80                     
+</PRE><TD valign="center"><IMG SRC="fd80.gif" ALT="turtle figure"></TABLE>
+
+<P>Since the turtle was facing toward the top of the screen,
+that's the way it moved.  The turtle should now be higher on the
+screen, and there should be a line behind it indicating the path
+that it followed.
+
+<P>The first turtles were actual robots that rolled along the floor.
+They got the name &quot;turtle&quot; because of the
+hard shells surrounding their delicate electronic innards.  A robot
+turtle has a pen in its belly, which it can push down to the floor, or
+pull up inside itself.  When the pen is down, the turtle draws a trace
+of its motion along the floor.
+
+<P>
+<P>When talking about the screen turtle, it's customary to think of the
+screen as a kind of map, representing a horizontal floor.  Therefore,
+instead of referring to the screen directions as &quot;up,&quot; &quot;down,&quot;
+&quot;left,&quot; and &quot;right,&quot; we talk about the compass headings North,
+South, West, and East.  Your turtle is now facing North.  Besides
+fitting better with the turtle metaphor, this terminology avoids a
+possible confusion: the word &quot;left&quot; could mean either the <EM>
+turtle's</EM> left or the <EM>screen's</EM> left.  (They're the same
+direction right now, but they won't be the same after we turn the
+turtle.)  To avoid this problem, we use &quot;West&quot; for the left edge of
+the screen, and reserve the word &quot;left&quot; for the direction to the
+left of whichever way the turtle is facing.
+
+<P>Logo provides primitive commands to raise and lower the turtle's pen.
+The command <CODE>penup</CODE> (abbreviated <CODE>pu</CODE>) takes no inputs; its
+effect is to raise the pen.  In other words, after you use this
+command, any further turtle motion won't draw lines.  Try it now:
+
+<P><TABLE><TR><TD>
+<PRE>penup                          
+forward 30
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/pufd30.gif" ALT="turtle figure"></TABLE>
+
+<P>Similarly, the command <CODE>pendown</CODE> (<CODE>pd</CODE>) takes no
+inputs, and lowers the pen.  Here's a procedure you can try:
+
+<P><TABLE><TR><TD>
+<PRE>to dash :count
+repeat :count [penup forward 4 pendown forward 4]      
+end
+
+? <U>clearscreen dash 14</U>
+</PRE>
+<TD valign="center"><IMG SRC="dash14.gif" ALT="turtle figure"></TABLE>
+
+<P>The command <CODE>back</CODE> (or <CODE>bk</CODE>) takes one input, which must be a
+number.  The effect of <CODE>back</CODE> is to move the turtle backward by
+the distance used as its input.  (What do you think <CODE>fd</CODE> and <CODE>
+bk</CODE> will do if you give them noninteger inputs?  Zero inputs?
+Negative inputs?  Try these possibilities.  Then look up the commands
+in the reference manual for your version of Logo and see if the
+manual describes the commands fully.)
+
+<P>To turn the turtle, two other commands are provided.  <CODE>Left</CODE>
+(abbreviated <CODE>lt</CODE>) takes one input, which must be a number.  Its
+effect is to turn the turtle toward the <EM>turtle's</EM> own left.
+The angle through which the turtle turns is the input; angles are
+measured in degrees, so
+<CODE>left 360</CODE>
+will turn the turtle all the way around.  (In other words, that
+instruction has no real effect!)  Another way of saying that the turtle
+turns toward its own left is that it turns <EM>counterclockwise.</EM>
+The command <CODE>right</CODE> (or <CODE>rt</CODE>) is just like <CODE>left</CODE>, except
+that it turns the turtle clockwise, toward its own right.
+
+<P>&raquo;Clear the screen and try this, the classic beginning point of Logo
+turtle graphics:
+
+<P><PRE>repeat 4 [forward 100 right 90]
+</PRE>
+
+<P>This instruction tells Logo to draw four lines, each 100
+turtle steps long, and to turn 90 degrees between lines.  In other
+words, it draws a square.
+
+<P>There are many more turtle procedures provided in Logo, but these are
+the fundamental ones; with them you can go quite far in generating
+interesting computer graphics.  If you haven't had much experience
+with turtle graphics before, you might enjoy spending some time
+exploring the possibilities.  There are many introductory Logo
+turtle graphics books to help you.  Because that part of Logo
+programming is so thoroughly covered elsewhere, I'm not going to
+suggest graphics projects here.  Instead I want to go on to consider
+some of the deeper issues in computer programming that are
+illuminated by the turtle metaphor.
+
+<P><H2>Local vs. Global Descriptions</H2>
+
+<P>Earlier we considered the difference between <EM>local</EM> variables,
+which are available only within a particular procedure, and <EM>
+global</EM> variables, which are used throughout an entire project.
+I've tried to convince you that the use of local variables is a much
+more powerful programming style than one that relies on global
+variables for everything.  For one thing, local variables are
+essential to make recursion possible; in order for a single procedure
+to solve a large problem and a smaller subproblem simultaneously, each
+invocation of the procedure must have its own, independent variables.
+But even when recursion is not an issue, a complex program is much
+easier to read and understand if each procedure can be understood
+without thinking about the context in which it's used.
+
+<P>The turtle approach to computer graphics embodies the same principle of
+locality, in a different way.  The fact that the turtle motion
+commands (<CODE>forward</CODE> and <CODE>back</CODE>) and the turtle turning commands (<CODE>
+left</CODE> and <CODE>right</CODE>) are all <EM>turtle-relative</EM> means that a
+graphics procedure need not think about the larger picture.
+
+<P>To understand what that means, you should compare the turtle metaphor
+with the other metaphor that is commonly used in computer
+graphics: <EM>Cartesian coordinates.</EM>  This metaphor
+comes from analytic geometry,
+invented by Rene Descartes
+(1596-1650).  The word &quot;Cartesian&quot; is derived from his
+name.  Descartes' goal was to use the techniques of algebra in solving
+geometry problems by using <EM>numbers</EM> to describe <EM>points.</EM>
+In a two-dimensional plane, like your computer screen, you need two
+numbers to identify a point.  These numbers work like longitude and
+latitude in geography: One tells how far the point is to the left
+or right and the other tells how high up it is.
+
+<P><CENTER><IMG SRC="cartesian.gif" ALT="figure: cartesian"></CENTER>
+
+<P>
+This diagram shows a computer screen with a grid of horizontal and
+vertical lines drawn on it.  The point where the two heavy lines meet
+is called the <EM>origin;</EM> it is represented by the numbers
+<CODE>[0 0]</CODE>.  For other points the first number (the <EM>
+x-coordinate</EM>) is the horizontal distance from the origin to the
+point, and the second number (the <EM>y-coordinate</EM>) is the
+vertical distance from the origin to the point.  A positive
+x-coordinate means that the point is to the right of the origin; a
+negative x-coordinate means that the point is to the left of the
+origin.  Similarly, a positive y-coordinate means that the point is
+above the origin; a negative y-coordinate puts it below the origin.
+Logo does allow you to refer to points by their Cartesian coordinates,
+using a list of two numbers.  The origin is the point where the turtle
+starts when you clear the screen.
+
+<P>The primary tool for Cartesian-style graphics in Logo is the command
+<CODE>setpos</CODE> (for <CODE>set</CODE> <CODE>pos</CODE>ition).  <CODE>Setpos</CODE>
+requires one input, which must be a list of two numbers.  Its effect
+is to move the turtle to the point on the screen at those
+coordinates.  If the pen is down, the turtle draws a line as it moves,
+just as it does for <CODE>forward</CODE> and <CODE>back</CODE>.  Here is how you
+might draw a square using Cartesian graphics instead of turtle
+graphics:
+
+<P><PRE>clearscreen
+setpos [0 100]
+setpos [100 100]
+setpos [100 0]
+setpos [0 0]
+</PRE>
+
+<P>Do you see why I said that the Cartesian metaphor is global, like the
+use of global variables?  Each instruction in this square takes into
+account the turtle's position within the screen as a whole.  The
+&quot;point of view&quot; from which we draw the picture is that of an
+observer standing above the plane looking down on all of it.  This
+observer sees not only the turtle but also the edges and center of
+the screen as part of what is relevant to drawing each line.  By
+contrast, the turtle geometry metaphor adopts the point of view of the
+turtle itself; each line is drawn without regard to where the turtle
+is in global terms.
+
+<P>Using the turtle metaphor, we can draw our square (or any other figure
+we can program) anywhere on the screen at any orientation.  First
+I'll write a <CODE>square</CODE> command:
+
+<P><PRE>to square :size
+repeat 4 [forward :size right 90]
+end
+</PRE>
+
+<P>Now here's an example of how <CODE>square</CODE> can be used in
+different positions and orientations:
+
+<P><TABLE><TR><TD>
+<PRE>to face
+pendown square 100
+penup forward 20
+right 90
+forward 25
+pendown forward 50
+penup back 75
+left 90
+forward 65
+right 90
+forward 20
+pendown square 15
+penup forward 45
+pendown square 15                     
+penup back 15
+right 90
+forward 20
+left 45
+pendown square 20
+end
+</PRE><TD><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/face.gif" ALT="turtle figure"></TABLE>
+
+<P>The head and the eyes are upright squares; the nose is a
+square at an angle (a diamond).  To write this program using Cartesian
+graphics, you'd have to know the absolute coordinates of the corners
+of each of the squares.  To draw a square at an unusual angle, you'd
+need trigonometry to calculate the coordinates.
+
+<P>
+
+<P>&raquo;Here is another demonstration of the same point.  Clear the screen and
+type this instruction:
+
+<P><PRE>repeat 20 [pendown square 12 penup forward 20 right 18]
+</PRE>
+
+<P>You'll see squares drawn in several different orientations.
+This would not be a one-line program if you tried to do it using the
+Cartesian metaphor!
+
+<P>
+
+<P>
+<H2>The Turtle's State</H2>
+
+<P>From a turtle's-eye point of view, drawing an upright square is the
+same as drawing a diamond.  It's only from the global point of view,
+taking the borders of the screen into account, that there is a
+difference.
+
+<P>From the global point of view how can we think about that
+difference?  How do we describe what makes the same procedure
+sometimes draw one thing (an upright square) and sometimes another (a
+diamond)?  The answer, in the most general terms, is that the result
+of the <CODE>square</CODE> command depends on the past <EM>history</EM> of the
+turtle--its twists and turns before it got to wherever it may be
+now.  That is, the turtle has a sort of memory of past events.
+
+<P>But what matters is not actually the turtle's entire past history.
+All that counts is the turtle's current <EM>position</EM> and its
+current <EM>heading,</EM> no matter how it got there.  Those two things,
+the position and the heading, are called the turtle's <EM>state.</EM>
+It's a little like trying to solve a Rubik's Cube; you may have turned
+part of the cube 100 times already, but all that counts now is the
+current pattern of colors, not how you got there.
+
+<P>I've mentioned the <CODE>setpos</CODE> command, which sets the turtle's
+position.  There is also a command <CODE>setheading</CODE> (abbreviated
+<CODE>seth</CODE>) to set the
+heading.  <CODE>Setheading</CODE> takes one input, a number.  The effect is to turn
+the turtle so that it faces toward the compass heading specified by
+the number.  Zero represents North; the heading is measured in degrees
+clockwise from North.  (For example, East is 90; West is 270.) The
+compass heading is different from the system of angle measurement used
+in analytic geometry, in which angles are measured counterclockwise
+from East instead of clockwise from North.
+
+<P>In addition to commands that set the turtle's state, Logo provides
+operations to find out the state.  pos<CODE>Pos</CODE> is an operation
+with no inputs.  Its output is a list of two numbers, representing the
+turtle's current position.  heading<CODE>Heading</CODE> is also an
+operation with no inputs.  Its output is a number, representing the turtle's
+current heading.
+
+<P>Remember that when you use these state commands and operations, you're
+thinking in the global (Cartesian) style, not the local (turtle)
+style.  Global state is sometimes important, just as global variables
+are sometimes useful.  If you want to draw a picture containing three
+widgets, you might use <CODE>setpos</CODE> to get the turtle into position
+for each widget.  But the <CODE>widget</CODE> procedure, which draws each
+widget, probably shouldn't use <CODE>setpos</CODE>.  (You might also use
+<CODE>setpos</CODE> extensively in a situation in which the Cartesian
+metaphor is generally more appropriate than the turtle metaphor, like
+graphing a mathematical function.)  As in the case of global
+variables, you'll be most likely to overuse global graphics style if
+you're accustomed to BASIC computer graphics.  A good rule of
+thumb, if you're doing something turtleish and not graphing a function, is
+that you shouldn't use <CODE>setpos</CODE> with the pen down.
+
+<P>&raquo;Do you see why?
+
+<P>
+<H2>Symmetry</H2>
+
+<P>Very young children often begin playing with Logo simply by moving the
+turtle around at random.  The resulting pictures usually don't look
+very interesting.  You can recapture the days of your youth by
+alternating <CODE>forward</CODE> and <CODE>right</CODE> commands with arbitrary inputs.
+Here is a sample, which I've embodied in a procedure:
+
+<P><TABLE><TR><TD>
+<PRE>to squiggle
+forward 100
+right 135
+forward 40                        
+right 120
+forward 60
+right 15
+end
+</PRE><TD valign="center"><IMG SRC="squiggle.gif" ALT="turtle figure">
+</TABLE>
+
+<P>This isn't a very beautiful picture.  But
+something interesting happens when you keep squiggling repeatedly:
+
+<P><TABLE><TR><TD>
+<PRE>repeat 20 [squiggle]             
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/squiggle4.gif" ALT="turtle figure"></TABLE>
+
+<P>Instead of filling up the screen with hash, the turtle draws
+a symmetrical shape and repeats the same path over and over!  Let's
+try another example:
+
+<P><TABLE><TR><TD>
+<PRE>to squaggle
+forward 50
+right 150
+forward 60                       
+right 100
+forward 30
+right 90
+end
+</PRE><TD valign="center"><IMG SRC="squaggle.gif" ALT="turtle figure">
+</TABLE>
+
+<P><CODE>Squiggle</CODE> turns into a sort of fancy square when you repeat it;
+<CODE>squaggle</CODE> turns into an 18-pointed pinwheel.  Does every possible
+squiggle produce a repeating pattern this way?  Yes.  Sometimes you
+have to <CODE>repeat</CODE> the procedure many times, but essentially any
+combination of <CODE>forward</CODE> and <CODE>right</CODE> commands will eventually retrace
+its steps.  (There's one exception, which we'll talk about shortly.)
+
+<P>To see why repetition brings order out of chaos, we have to think
+about a simpler Logo graphics procedure that is probably very
+familiar to you:
+
+<P><PRE>to poly :size :angle
+forward :size
+right :angle
+poly :size :angle
+end
+</PRE>
+
+<P>Since this is a recursive procedure without a stop rule,
+it'll keep running forever.  You'll have to stop it by pressing the
+BREAK key, or command-period, or whatever your particular computer
+requires.  The procedure draws regular polygons; here are some
+examples to try:
+
+<P><PRE>poly 100 90
+poly 80 60
+poly 100 144
+</PRE>
+
+<P>A little thought (or some experimentation) will show you that
+the <CODE>size</CODE> input makes the
+picture larger or smaller but doesn't change its shape.  The shape is
+entirely controlled by the <CODE>angle</CODE> input.
+
+<P>&raquo;What angle would you pick to draw a triangle?  A pentagon?  How do you
+know?
+
+<P>The trick is to think about the turtle's state.  When you finish
+drawing a polygon, the turtle must return to its original position
+<EM>and its original heading</EM> in order to be ready to retrace the
+same path.  To return to its original heading, the turtle must turn
+through a complete circle, 360 degrees.  To draw a square, for
+example, the turtle must turn through 360 degrees in four turns, so
+each turn must be 360/4 or 90 degrees.  To draw a triangle, each turn
+must be 360/3 or 120 degrees.
+
+<P>&raquo;Now explain why an <CODE>angle</CODE> input of 144 draws a star!
+
+<P>Okay, back to our squiggles.  Earlier, I said that the only thing we
+have to remember from the turtle's past history is the change in its
+state.  It doesn't matter how that change came about.  When you draw a
+<CODE>squiggle</CODE>, the turtle moves through a certain distance and turns
+through a certain angle.  The fact that it took a
+roundabout path doesn't matter.  As it happens, <CODE>squiggle</CODE> turns
+right through 135+120+15 degrees, for a total of 270.  This is
+equivalent to turning left by 90 degrees.  That's why repeating <CODE>
+squiggle</CODE> draws something shaped like a square.
+
+<P><CENTER><IMG SRC="turtlestate.gif" ALT="figure: turtlestate"></CENTER>
+
+<P>&raquo;What about <CODE>squaggle</CODE>?  If repeating it draws a figure with
+18-fold symmetry, then its total turning should be 360/18 or 20 degrees.  Is
+it?
+
+<P>&raquo;Here's another bizarre shape.  See if you can predict what kind of
+symmetry it will show <EM>before</EM> you actually repeat it on the
+computer.
+
+<P><TABLE><TR><TD>
+<PRE>to squoggle
+forward 50
+right 70
+forward 10                       
+right 160
+forward 35
+right 58
+end
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/squoggle.gif" ALT="turtle figure">
+</TABLE>
+
+<P>Suppose you like the shape of <CODE>squiggle</CODE>, but you want to draw a
+completed picture that looks triangular (3-fold symmetry) instead of
+square (4-fold).  Can you do this?  Of course; you can simply change
+the last instruction of the <CODE>squiggle</CODE> procedure so that the total
+turning is 120 degrees instead of 90.  (Go ahead, try it.  Be careful
+about left and right.)
+
+<P>But it's rather an ugly process to have to edit <CODE>squiggle</CODE> in
+order to change not what a squiggle looks like but how the squiggles
+fit into a larger picture.  For one thing, it violates the idea of
+modularity.  <CODE>Squiggle</CODE>'s job should just be drawing a squiggle,
+and there should be another procedure, something like <CODE>poly</CODE>,
+that combines squiggles into a symmetrical pattern.  For another,
+people shouldn't have to do arithmetic; computers should do the
+arithmetic!
+
+<P>To clean up our act, I'm going to start by writing a procedure that
+can draw an arbitrary squiggle but without changing the turtle's
+heading.  It's called <CODE>protect.heading</CODE> because it protects the
+heading against change by the squiggle procedure.
+
+<P><PRE>to protect.heading :squig
+local &quot;oldheading
+make &quot;oldheading heading
+run :squig
+setheading :oldheading
+end
+</PRE>
+
+<P>This procedure demonstrates the use of <CODE>heading</CODE>
+and <CODE>setheading</CODE>.  We remember the turtle's initial heading
+in the local variable <CODE>oldheading</CODE>.  Then we carry out whatever squiggle
+procedure you specify as the input to <CODE>protect.heading</CODE>.  (The
+<CODE>run</CODE> command takes a Logo instruction list as input and evaluates
+it.)  Here is how you can use it:
+
+<P><PRE>protect.heading [squiggle]
+protect.heading [squaggle]
+</PRE>
+
+<P>Notice that what is drawn on the screen is the same as it
+would be if you invoked <CODE>squiggle</CODE> or <CODE>squaggle</CODE> directly; the
+difference is that the turtle's final heading is the same as its
+initial heading.
+
+<P><CENTER><IMG SRC="protect.gif" ALT="figure: protect"></CENTER>
+
+<P>
+
+<P>Now we can use <CODE>protect.heading</CODE> to write the decorated-<CODE>poly</CODE>
+procedure that will let us specify the kind of symmetry we want:
+
+<P><PRE>to spin :turns :command
+repeat :turns [protect.heading :command right 360/:turns]
+end
+</PRE>
+
+<P>&raquo;Try out <CODE>spin</CODE> with instructions like these:
+
+<P><TABLE><TR><TD>
+<PRE>spin 3 [squiggle]
+spin 5 [squiggle]
+spin 4 [squaggle]                   
+spin 6 [squoggle]
+spin 6 [fd 40 squoggle]
+spin 5 [pu fd 50 pd squaggle]
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/spin.gif" ALT="turtle figure">
+</TABLE>
+
+<P>Isn't that better?
+
+<P>I mentioned that there is an exception to the rule that every squiggle
+will eventually retrace its steps if you repeat it.  Here it is:
+
+<P><TABLE><TR><TD>
+<PRE>to squirrel
+forward 40
+right 90
+forward 10
+right 90
+forward 15                          
+right 90
+forward 20
+right 90
+end
+</PRE><TD valign="center"><IMG SRC="squirrel.gif" ALT="turtle figure">
+</TABLE>
+
+<P>&raquo;Try repeating <CODE>squirrel</CODE> 20 times.  You'll find that
+instead of turning around to its original position and heading, the
+turtle goes straight off into the distance.  Why?  (<CODE>Squiggle</CODE> had
+four-fold symmetry because its total turning was 90 degrees.  What is
+the total turning of <CODE>squirrel</CODE>?) Of course, if you use <CODE>
+squirrel</CODE> in the second input to <CODE>spin</CODE>, it will perform like the
+others, because <CODE>spin</CODE> controls the turtle's heading in that case.
+
+<P>I've been using random squiggles with silly names to make
+the point that by paying attention to symmetry, Logo <EM>can</EM> make
+a silk purse from a sow's ear.  But of course there is no reason not
+to apply <CODE>spin</CODE> to more carefully designed pieces.  Here's one I
+like:
+
+<P><TABLE><TR><TD>
+<PRE>to fingers :size
+penup forward 10 pendown
+right 5
+repeat 5 [forward :size right 170 forward :size left 170] 
+left 5                                                 
+penup back 10 pendown
+end
+
+spin 4 [fingers 50]
+spin 10 [fingers 30]
+</PRE><TD valign="center"><IMG SRC="fingers.gif" ALT="turtle figure">
+</TABLE>
+
+<P>
+<H2>Fractals</H2>
+
+<P>I'd like to write a procedure to draw this picture of a tree:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/tree.gif" ALT="figure: tree"></CENTER>
+
+<P>The trick is to identify this as a recursive problem.  Do
+you see the smaller-but-similar subproblems?  The tree consists of a
+trunk with two smaller trees attached.
+
+<P><CENTER><IMG SRC="splittree.gif" ALT="figure: splittree"></CENTER>
+
+<P>So a first approximation to the solution might look like this:
+
+<P><PRE>to tree :size
+forward :size
+left 20
+tree :size/2
+right 40
+tree :size/2
+end
+</PRE>
+
+<P>If you try running this procedure, you'll see that we still
+have some work to do.  But let me remind you that an unfinished
+procedure like this isn't a <EM>mistake;</EM> you shouldn't feel that
+you have to have every detail worked out before you first touch the
+keyboard.  The first obvious problem is that there is no stop rule, so
+the procedure keeps trying to draw smaller and smaller subtrees.  What
+should the limiting condition be?  In this case there is no obvious
+end, like the <CODE>butfirst</CODE> of a word becoming empty.
+
+<P>There are two approaches we could take to limiting the number of
+branches of the tree.  One approach would be to choose explicitly how
+deep we want to get in recursive invocations.  We could do this by
+adding another input, called <CODE>depth</CODE>, that will be the number of
+levels of recursion to allow:
+
+<P><PRE>to tree :depth :size
+if :depth=0 [stop]
+forward :size
+left 20
+tree (:depth-1) :size/2
+right 40
+tree (:depth-1) :size/2
+end
+</PRE>
+
+<P>The other approach would be to keep letting the branches get
+smaller until they go below a reasonable minimum:
+
+<P><PRE>to tree :size
+if :size&lt;4 [stop]
+forward :size
+left 20
+tree :size/2
+right 40
+tree :size/2
+end
+</PRE>
+
+<P>Either approach is reasonable.  I'll choose the second one
+just because it seems a little simpler.  The cost of that choice is
+somewhat less control over the final picture; I'm not sure if it'll
+have exactly the number of branches I originally planned.
+
+<P>The modified procedure does come to a halt now, but it still doesn't
+draw the tree I had in mind.  The problem is that this version of <CODE>
+tree</CODE> is not <EM>state-invariant:</EM> it doesn't leave the turtle with
+the same position and heading that it had originally.  That's
+important because when <CODE>tree</CODE> says
+
+<P><PRE>tree :size/2
+right 40
+tree :size/2
+</PRE>
+
+<P>the assumption is that at the end of the first smaller tree
+the turtle will be back at the top of the main trunk, in position to
+draw the second subtree.  We can fix the problem by making the turtle
+climb back down the trunk (of each subtree):
+
+<P><PRE>to tree :size
+if :size&lt;4 [stop]
+forward :size
+left 20
+tree :size/2
+right 40
+tree :size/2
+left 20
+back :size
+end
+</PRE>
+
+<P>Voila!  If you try <CODE>tree 50</CODE> you'll see something like the
+picture I had in mind.
+
+<P>You're probably thinking that this &quot;tree&quot; doesn't look very tree-like.
+There are several things wrong with it:  It's too symmetrical; it doesn't
+have enough branches; the branches should grow partway up the trunk as well
+as at the top.  But all of these problems can be solved by adding a few more
+steps to the procedure:
+
+<P><TABLE><TR><TD>
+<PRE>to tree :size
+if :size &lt; 5 [forward :size back :size stop]
+forward :size/3
+left 30 tree :size*2/3 right 30
+forward :size/6
+right 25 tree :size/2 left 25           
+forward :size/3
+right 25 tree :size/2 left 25
+forward :size/6
+back :size
+end
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/realtree.gif" ALT="turtle figure">
+</TABLE>
+
+<P>We can embellish the tree as much as we want.  The only
+requirement is that the procedure be state-invariant:  The turtle's final
+position and heading must be the same as its beginning position and heading.
+
+<P>
+
+<P>Because I chose to use a minimum length as the stopping condition, the
+shape of the tree depends on the size of its trunk.  That's slightly
+unusual in turtle graphics programs, which usually draw the same shape
+regardless of the size.
+
+<P>A recursively-defined shape (one that contains smaller versions of itself)
+is called a <EM>fractal.</EM> Until the 1970s, hardly anybody explored
+fractals except for kids learning Logo and a few recreational mathematicians.
+Today, however, fractals have become important becase movie producers are
+using computer graphics as an alternative to expensive sets and models for
+fancy special effects.  It turns out that programs like <CODE>tree</CODE> are the
+secret of drawing realistic clouds, mountains, and other natural
+backgrounds with a computer.
+
+<P>&raquo;If you want another challenging fractal project, try writing a program
+to produce these fractal snowflakes:
+
+<P><CENTER><IMG SRC="flake.gif" ALT="figure: flake"></CENTER>
+
+<P><H2>Further Reading</H2>
+
+<P>If you're interested in an intellectually rigorous exploration of
+turtle geometry, continuing along the lines I've started here,
+read
+<A HREF="http://mitpress.mit.edu/catalog/item/default.asp?sid=21C60546-CCA2-45E0-AA55-8E6BAC3EB07F&ttype=2&tid=7287"><EM>Turtle Geometry</EM></A>,
+Abelson and diSessa (MIT Press,
+1981).  I learned many of the things in this chapter from them.  It's
+a hard book but worth the effort.
+
+<P>The standard reference book on fractals is <EM>The Fractal Geometry
+of Nature,</EM> by Benoit Mandelbrot (W. H. Freeman, 1982).
+Dr. Mandelbrot gave fractals their name and was the first to see
+serious uses for them.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch9/v1ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch11/v1ch11.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch10/turtlestate.gif b/js/games/nluqo.github.io/~bh/v1ch10/turtlestate.gif
new file mode 100644
index 0000000..c0457bb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/turtlestate.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch10/v1ch10.html b/js/games/nluqo.github.io/~bh/v1ch10/v1ch10.html
new file mode 100644
index 0000000..6759b7f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch10/v1ch10.html
@@ -0,0 +1,790 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 10: Turtle Geometry</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Turtle Geometry</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch10.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch9/v1ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch11/v1ch11.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+Logo is best known as the language that introduced the <EM>turtle</EM>
+as a tool for computer graphics.  In fact, to many people, Logo and
+turtle graphics are synonymous.  Some computer companies have
+gotten away with
+selling products called &quot;Logo&quot; that provided nothing <EM>but</EM>
+turtle graphics, but if you bought a &quot;Logo&quot; that provided only the
+list processing primitives we've used so far, you'd probably feel
+cheated.
+
+<P>Historically, this idea that Logo is mainly turtle graphics is a
+mistake.  As I mentioned at the beginning of Chapter 1, Logo's name
+comes from the Greek word for <EM>word,</EM> because Logo was first
+designed as a language in which to manipulate language: words and
+sentences.  Still, turtle graphics has turned out to be a very
+powerful addition to Logo.  One reason is that any form of computer
+graphics is an attention-grabber.  But other programming languages had
+allowed graphics programming before Logo.  In this chapter we'll look
+at some of the reasons why <EM>turtle</EM> graphics, specifically, was
+such a major advance in programming technology.
+
+<P>This chapter can't be long enough to treat the possibilities of
+computer graphics fully.  My goal is merely to show you that the same
+ideas we've been using with words and lists are also
+fruitful in a very different problem domain.  Ideas like locality,
+modularity, and recursion appear here, too, although sometimes in
+different guises.
+
+<P><H2>A Review, or a Brief Introduction</H2>
+
+<P>I've been assuming that you've already been introduced to Logo turtle
+graphics, either in a school or by reading Logo
+tutorial books.  If not, perhaps
+you should read one of those books now.  But just in case, here is a
+very brief overview of the primitive procedures for turtle graphics.
+Although some versions of Logo allow more than one turtle, or allow
+<EM>dynamic</EM> turtles with programmable shapes and speeds, for now
+I'll only consider the traditional, single, static turtle.
+
+<P>Type the command <CODE>cs</CODE> (short for <CODE>clearscreen</CODE>), with no
+inputs.  The effect of this command is to initiate Logo's graphics
+capability.  A turtle will appear in the center of a graphics window.
+(Depending on which version of Logo you have, the turtle may look like an
+actual animal with a head and four legs or--as in Berkeley Logo--it may be
+represented as a triangle.) The turtle will be facing toward the top of the
+screen.  Any previous graphic drawing will be erased from the screen and
+from the computer's memory.
+
+<P>The crucial thing about the turtle, which distinguishes it from other
+metaphors for computer graphics, is that the turtle is pointing in a
+particular direction and can only move in that direction.  (It can
+move forward or back, like a car with reverse gear, but not sideways.)
+In order to draw in any other direction, the turtle must <EM>first</EM>
+turn so that it is facing in the new direction.  (In this respect it
+is unlike a car, which must turn and move at the same time.)
+
+<P>The primary means for moving the turtle is the <CODE>forward</CODE> command,
+abbreviated <CODE>fd</CODE>.  <CODE>Forward</CODE> takes one input, which must be a
+number.  The effect of <CODE>forward</CODE> is to move the turtle in the
+direction it's facing, through a distance specified by the input.  The
+unit of distance is the &quot;turtle step,&quot; a small distance that depends
+on the resolution of your computer's screen.  (Generally, one turtle
+step is the smallest line your computer can draw.  This is
+slightly oversimplified, though, because that smallest distance may be
+different in different directions.  But the size of a turtle step does
+<EM>not</EM> depend on the direction; it's always the same distance for
+any given computer.)  Try typing the command
+
+<P><TABLE><TR><TD>
+<PRE>
+forward 80                     
+</PRE><TD valign="center"><IMG SRC="fd80.gif" ALT="turtle figure"></TABLE>
+
+<P>Since the turtle was facing toward the top of the screen,
+that's the way it moved.  The turtle should now be higher on the
+screen, and there should be a line behind it indicating the path
+that it followed.
+
+<P>The first turtles were actual robots that rolled along the floor.
+They got the name &quot;turtle&quot; because of the
+hard shells surrounding their delicate electronic innards.  A robot
+turtle has a pen in its belly, which it can push down to the floor, or
+pull up inside itself.  When the pen is down, the turtle draws a trace
+of its motion along the floor.
+
+<P>
+<P>When talking about the screen turtle, it's customary to think of the
+screen as a kind of map, representing a horizontal floor.  Therefore,
+instead of referring to the screen directions as &quot;up,&quot; &quot;down,&quot;
+&quot;left,&quot; and &quot;right,&quot; we talk about the compass headings North,
+South, West, and East.  Your turtle is now facing North.  Besides
+fitting better with the turtle metaphor, this terminology avoids a
+possible confusion: the word &quot;left&quot; could mean either the <EM>
+turtle's</EM> left or the <EM>screen's</EM> left.  (They're the same
+direction right now, but they won't be the same after we turn the
+turtle.)  To avoid this problem, we use &quot;West&quot; for the left edge of
+the screen, and reserve the word &quot;left&quot; for the direction to the
+left of whichever way the turtle is facing.
+
+<P>Logo provides primitive commands to raise and lower the turtle's pen.
+The command <CODE>penup</CODE> (abbreviated <CODE>pu</CODE>) takes no inputs; its
+effect is to raise the pen.  In other words, after you use this
+command, any further turtle motion won't draw lines.  Try it now:
+
+<P><TABLE><TR><TD>
+<PRE>penup                          
+forward 30
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/pufd30.gif" ALT="turtle figure"></TABLE>
+
+<P>Similarly, the command <CODE>pendown</CODE> (<CODE>pd</CODE>) takes no
+inputs, and lowers the pen.  Here's a procedure you can try:
+
+<P><TABLE><TR><TD>
+<PRE>to dash :count
+repeat :count [penup forward 4 pendown forward 4]      
+end
+
+? <U>clearscreen dash 14</U>
+</PRE>
+<TD valign="center"><IMG SRC="dash14.gif" ALT="turtle figure"></TABLE>
+
+<P>The command <CODE>back</CODE> (or <CODE>bk</CODE>) takes one input, which must be a
+number.  The effect of <CODE>back</CODE> is to move the turtle backward by
+the distance used as its input.  (What do you think <CODE>fd</CODE> and <CODE>
+bk</CODE> will do if you give them noninteger inputs?  Zero inputs?
+Negative inputs?  Try these possibilities.  Then look up the commands
+in the reference manual for your version of Logo and see if the
+manual describes the commands fully.)
+
+<P>To turn the turtle, two other commands are provided.  <CODE>Left</CODE>
+(abbreviated <CODE>lt</CODE>) takes one input, which must be a number.  Its
+effect is to turn the turtle toward the <EM>turtle's</EM> own left.
+The angle through which the turtle turns is the input; angles are
+measured in degrees, so
+<CODE>left 360</CODE>
+will turn the turtle all the way around.  (In other words, that
+instruction has no real effect!)  Another way of saying that the turtle
+turns toward its own left is that it turns <EM>counterclockwise.</EM>
+The command <CODE>right</CODE> (or <CODE>rt</CODE>) is just like <CODE>left</CODE>, except
+that it turns the turtle clockwise, toward its own right.
+
+<P>&raquo;Clear the screen and try this, the classic beginning point of Logo
+turtle graphics:
+
+<P><PRE>repeat 4 [forward 100 right 90]
+</PRE>
+
+<P>This instruction tells Logo to draw four lines, each 100
+turtle steps long, and to turn 90 degrees between lines.  In other
+words, it draws a square.
+
+<P>There are many more turtle procedures provided in Logo, but these are
+the fundamental ones; with them you can go quite far in generating
+interesting computer graphics.  If you haven't had much experience
+with turtle graphics before, you might enjoy spending some time
+exploring the possibilities.  There are many introductory Logo
+turtle graphics books to help you.  Because that part of Logo
+programming is so thoroughly covered elsewhere, I'm not going to
+suggest graphics projects here.  Instead I want to go on to consider
+some of the deeper issues in computer programming that are
+illuminated by the turtle metaphor.
+
+<P><H2>Local vs. Global Descriptions</H2>
+
+<P>Earlier we considered the difference between <EM>local</EM> variables,
+which are available only within a particular procedure, and <EM>
+global</EM> variables, which are used throughout an entire project.
+I've tried to convince you that the use of local variables is a much
+more powerful programming style than one that relies on global
+variables for everything.  For one thing, local variables are
+essential to make recursion possible; in order for a single procedure
+to solve a large problem and a smaller subproblem simultaneously, each
+invocation of the procedure must have its own, independent variables.
+But even when recursion is not an issue, a complex program is much
+easier to read and understand if each procedure can be understood
+without thinking about the context in which it's used.
+
+<P>The turtle approach to computer graphics embodies the same principle of
+locality, in a different way.  The fact that the turtle motion
+commands (<CODE>forward</CODE> and <CODE>back</CODE>) and the turtle turning commands (<CODE>
+left</CODE> and <CODE>right</CODE>) are all <EM>turtle-relative</EM> means that a
+graphics procedure need not think about the larger picture.
+
+<P>To understand what that means, you should compare the turtle metaphor
+with the other metaphor that is commonly used in computer
+graphics: <EM>Cartesian coordinates.</EM>  This metaphor
+comes from analytic geometry,
+invented by Rene Descartes
+(1596-1650).  The word &quot;Cartesian&quot; is derived from his
+name.  Descartes' goal was to use the techniques of algebra in solving
+geometry problems by using <EM>numbers</EM> to describe <EM>points.</EM>
+In a two-dimensional plane, like your computer screen, you need two
+numbers to identify a point.  These numbers work like longitude and
+latitude in geography: One tells how far the point is to the left
+or right and the other tells how high up it is.
+
+<P><CENTER><IMG SRC="cartesian.gif" ALT="figure: cartesian"></CENTER>
+
+<P>
+This diagram shows a computer screen with a grid of horizontal and
+vertical lines drawn on it.  The point where the two heavy lines meet
+is called the <EM>origin;</EM> it is represented by the numbers
+<CODE>[0 0]</CODE>.  For other points the first number (the <EM>
+x-coordinate</EM>) is the horizontal distance from the origin to the
+point, and the second number (the <EM>y-coordinate</EM>) is the
+vertical distance from the origin to the point.  A positive
+x-coordinate means that the point is to the right of the origin; a
+negative x-coordinate means that the point is to the left of the
+origin.  Similarly, a positive y-coordinate means that the point is
+above the origin; a negative y-coordinate puts it below the origin.
+Logo does allow you to refer to points by their Cartesian coordinates,
+using a list of two numbers.  The origin is the point where the turtle
+starts when you clear the screen.
+
+<P>The primary tool for Cartesian-style graphics in Logo is the command
+<CODE>setpos</CODE> (for <CODE>set</CODE> <CODE>pos</CODE>ition).  <CODE>Setpos</CODE>
+requires one input, which must be a list of two numbers.  Its effect
+is to move the turtle to the point on the screen at those
+coordinates.  If the pen is down, the turtle draws a line as it moves,
+just as it does for <CODE>forward</CODE> and <CODE>back</CODE>.  Here is how you
+might draw a square using Cartesian graphics instead of turtle
+graphics:
+
+<P><PRE>clearscreen
+setpos [0 100]
+setpos [100 100]
+setpos [100 0]
+setpos [0 0]
+</PRE>
+
+<P>Do you see why I said that the Cartesian metaphor is global, like the
+use of global variables?  Each instruction in this square takes into
+account the turtle's position within the screen as a whole.  The
+&quot;point of view&quot; from which we draw the picture is that of an
+observer standing above the plane looking down on all of it.  This
+observer sees not only the turtle but also the edges and center of
+the screen as part of what is relevant to drawing each line.  By
+contrast, the turtle geometry metaphor adopts the point of view of the
+turtle itself; each line is drawn without regard to where the turtle
+is in global terms.
+
+<P>Using the turtle metaphor, we can draw our square (or any other figure
+we can program) anywhere on the screen at any orientation.  First
+I'll write a <CODE>square</CODE> command:
+
+<P><PRE>to square :size
+repeat 4 [forward :size right 90]
+end
+</PRE>
+
+<P>Now here's an example of how <CODE>square</CODE> can be used in
+different positions and orientations:
+
+<P><TABLE><TR><TD>
+<PRE>to face
+pendown square 100
+penup forward 20
+right 90
+forward 25
+pendown forward 50
+penup back 75
+left 90
+forward 65
+right 90
+forward 20
+pendown square 15
+penup forward 45
+pendown square 15                     
+penup back 15
+right 90
+forward 20
+left 45
+pendown square 20
+end
+</PRE><TD><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/face.gif" ALT="turtle figure"></TABLE>
+
+<P>The head and the eyes are upright squares; the nose is a
+square at an angle (a diamond).  To write this program using Cartesian
+graphics, you'd have to know the absolute coordinates of the corners
+of each of the squares.  To draw a square at an unusual angle, you'd
+need trigonometry to calculate the coordinates.
+
+<P>
+
+<P>&raquo;Here is another demonstration of the same point.  Clear the screen and
+type this instruction:
+
+<P><PRE>repeat 20 [pendown square 12 penup forward 20 right 18]
+</PRE>
+
+<P>You'll see squares drawn in several different orientations.
+This would not be a one-line program if you tried to do it using the
+Cartesian metaphor!
+
+<P>
+
+<P>
+<H2>The Turtle's State</H2>
+
+<P>From a turtle's-eye point of view, drawing an upright square is the
+same as drawing a diamond.  It's only from the global point of view,
+taking the borders of the screen into account, that there is a
+difference.
+
+<P>From the global point of view how can we think about that
+difference?  How do we describe what makes the same procedure
+sometimes draw one thing (an upright square) and sometimes another (a
+diamond)?  The answer, in the most general terms, is that the result
+of the <CODE>square</CODE> command depends on the past <EM>history</EM> of the
+turtle--its twists and turns before it got to wherever it may be
+now.  That is, the turtle has a sort of memory of past events.
+
+<P>But what matters is not actually the turtle's entire past history.
+All that counts is the turtle's current <EM>position</EM> and its
+current <EM>heading,</EM> no matter how it got there.  Those two things,
+the position and the heading, are called the turtle's <EM>state.</EM>
+It's a little like trying to solve a Rubik's Cube; you may have turned
+part of the cube 100 times already, but all that counts now is the
+current pattern of colors, not how you got there.
+
+<P>I've mentioned the <CODE>setpos</CODE> command, which sets the turtle's
+position.  There is also a command <CODE>setheading</CODE> (abbreviated
+<CODE>seth</CODE>) to set the
+heading.  <CODE>Setheading</CODE> takes one input, a number.  The effect is to turn
+the turtle so that it faces toward the compass heading specified by
+the number.  Zero represents North; the heading is measured in degrees
+clockwise from North.  (For example, East is 90; West is 270.) The
+compass heading is different from the system of angle measurement used
+in analytic geometry, in which angles are measured counterclockwise
+from East instead of clockwise from North.
+
+<P>In addition to commands that set the turtle's state, Logo provides
+operations to find out the state.  pos<CODE>Pos</CODE> is an operation
+with no inputs.  Its output is a list of two numbers, representing the
+turtle's current position.  heading<CODE>Heading</CODE> is also an
+operation with no inputs.  Its output is a number, representing the turtle's
+current heading.
+
+<P>Remember that when you use these state commands and operations, you're
+thinking in the global (Cartesian) style, not the local (turtle)
+style.  Global state is sometimes important, just as global variables
+are sometimes useful.  If you want to draw a picture containing three
+widgets, you might use <CODE>setpos</CODE> to get the turtle into position
+for each widget.  But the <CODE>widget</CODE> procedure, which draws each
+widget, probably shouldn't use <CODE>setpos</CODE>.  (You might also use
+<CODE>setpos</CODE> extensively in a situation in which the Cartesian
+metaphor is generally more appropriate than the turtle metaphor, like
+graphing a mathematical function.)  As in the case of global
+variables, you'll be most likely to overuse global graphics style if
+you're accustomed to BASIC computer graphics.  A good rule of
+thumb, if you're doing something turtleish and not graphing a function, is
+that you shouldn't use <CODE>setpos</CODE> with the pen down.
+
+<P>&raquo;Do you see why?
+
+<P>
+<H2>Symmetry</H2>
+
+<P>Very young children often begin playing with Logo simply by moving the
+turtle around at random.  The resulting pictures usually don't look
+very interesting.  You can recapture the days of your youth by
+alternating <CODE>forward</CODE> and <CODE>right</CODE> commands with arbitrary inputs.
+Here is a sample, which I've embodied in a procedure:
+
+<P><TABLE><TR><TD>
+<PRE>to squiggle
+forward 100
+right 135
+forward 40                        
+right 120
+forward 60
+right 15
+end
+</PRE><TD valign="center"><IMG SRC="squiggle.gif" ALT="turtle figure">
+</TABLE>
+
+<P>This isn't a very beautiful picture.  But
+something interesting happens when you keep squiggling repeatedly:
+
+<P><TABLE><TR><TD>
+<PRE>repeat 20 [squiggle]             
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/squiggle4.gif" ALT="turtle figure"></TABLE>
+
+<P>Instead of filling up the screen with hash, the turtle draws
+a symmetrical shape and repeats the same path over and over!  Let's
+try another example:
+
+<P><TABLE><TR><TD>
+<PRE>to squaggle
+forward 50
+right 150
+forward 60                       
+right 100
+forward 30
+right 90
+end
+</PRE><TD valign="center"><IMG SRC="squaggle.gif" ALT="turtle figure">
+</TABLE>
+
+<P><CODE>Squiggle</CODE> turns into a sort of fancy square when you repeat it;
+<CODE>squaggle</CODE> turns into an 18-pointed pinwheel.  Does every possible
+squiggle produce a repeating pattern this way?  Yes.  Sometimes you
+have to <CODE>repeat</CODE> the procedure many times, but essentially any
+combination of <CODE>forward</CODE> and <CODE>right</CODE> commands will eventually retrace
+its steps.  (There's one exception, which we'll talk about shortly.)
+
+<P>To see why repetition brings order out of chaos, we have to think
+about a simpler Logo graphics procedure that is probably very
+familiar to you:
+
+<P><PRE>to poly :size :angle
+forward :size
+right :angle
+poly :size :angle
+end
+</PRE>
+
+<P>Since this is a recursive procedure without a stop rule,
+it'll keep running forever.  You'll have to stop it by pressing the
+BREAK key, or command-period, or whatever your particular computer
+requires.  The procedure draws regular polygons; here are some
+examples to try:
+
+<P><PRE>poly 100 90
+poly 80 60
+poly 100 144
+</PRE>
+
+<P>A little thought (or some experimentation) will show you that
+the <CODE>size</CODE> input makes the
+picture larger or smaller but doesn't change its shape.  The shape is
+entirely controlled by the <CODE>angle</CODE> input.
+
+<P>&raquo;What angle would you pick to draw a triangle?  A pentagon?  How do you
+know?
+
+<P>The trick is to think about the turtle's state.  When you finish
+drawing a polygon, the turtle must return to its original position
+<EM>and its original heading</EM> in order to be ready to retrace the
+same path.  To return to its original heading, the turtle must turn
+through a complete circle, 360 degrees.  To draw a square, for
+example, the turtle must turn through 360 degrees in four turns, so
+each turn must be 360/4 or 90 degrees.  To draw a triangle, each turn
+must be 360/3 or 120 degrees.
+
+<P>&raquo;Now explain why an <CODE>angle</CODE> input of 144 draws a star!
+
+<P>Okay, back to our squiggles.  Earlier, I said that the only thing we
+have to remember from the turtle's past history is the change in its
+state.  It doesn't matter how that change came about.  When you draw a
+<CODE>squiggle</CODE>, the turtle moves through a certain distance and turns
+through a certain angle.  The fact that it took a
+roundabout path doesn't matter.  As it happens, <CODE>squiggle</CODE> turns
+right through 135+120+15 degrees, for a total of 270.  This is
+equivalent to turning left by 90 degrees.  That's why repeating <CODE>
+squiggle</CODE> draws something shaped like a square.
+
+<P><CENTER><IMG SRC="turtlestate.gif" ALT="figure: turtlestate"></CENTER>
+
+<P>&raquo;What about <CODE>squaggle</CODE>?  If repeating it draws a figure with
+18-fold symmetry, then its total turning should be 360/18 or 20 degrees.  Is
+it?
+
+<P>&raquo;Here's another bizarre shape.  See if you can predict what kind of
+symmetry it will show <EM>before</EM> you actually repeat it on the
+computer.
+
+<P><TABLE><TR><TD>
+<PRE>to squoggle
+forward 50
+right 70
+forward 10                       
+right 160
+forward 35
+right 58
+end
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/squoggle.gif" ALT="turtle figure">
+</TABLE>
+
+<P>Suppose you like the shape of <CODE>squiggle</CODE>, but you want to draw a
+completed picture that looks triangular (3-fold symmetry) instead of
+square (4-fold).  Can you do this?  Of course; you can simply change
+the last instruction of the <CODE>squiggle</CODE> procedure so that the total
+turning is 120 degrees instead of 90.  (Go ahead, try it.  Be careful
+about left and right.)
+
+<P>But it's rather an ugly process to have to edit <CODE>squiggle</CODE> in
+order to change not what a squiggle looks like but how the squiggles
+fit into a larger picture.  For one thing, it violates the idea of
+modularity.  <CODE>Squiggle</CODE>'s job should just be drawing a squiggle,
+and there should be another procedure, something like <CODE>poly</CODE>,
+that combines squiggles into a symmetrical pattern.  For another,
+people shouldn't have to do arithmetic; computers should do the
+arithmetic!
+
+<P>To clean up our act, I'm going to start by writing a procedure that
+can draw an arbitrary squiggle but without changing the turtle's
+heading.  It's called <CODE>protect.heading</CODE> because it protects the
+heading against change by the squiggle procedure.
+
+<P><PRE>to protect.heading :squig
+local &quot;oldheading
+make &quot;oldheading heading
+run :squig
+setheading :oldheading
+end
+</PRE>
+
+<P>This procedure demonstrates the use of <CODE>heading</CODE>
+and <CODE>setheading</CODE>.  We remember the turtle's initial heading
+in the local variable <CODE>oldheading</CODE>.  Then we carry out whatever squiggle
+procedure you specify as the input to <CODE>protect.heading</CODE>.  (The
+<CODE>run</CODE> command takes a Logo instruction list as input and evaluates
+it.)  Here is how you can use it:
+
+<P><PRE>protect.heading [squiggle]
+protect.heading [squaggle]
+</PRE>
+
+<P>Notice that what is drawn on the screen is the same as it
+would be if you invoked <CODE>squiggle</CODE> or <CODE>squaggle</CODE> directly; the
+difference is that the turtle's final heading is the same as its
+initial heading.
+
+<P><CENTER><IMG SRC="protect.gif" ALT="figure: protect"></CENTER>
+
+<P>
+
+<P>Now we can use <CODE>protect.heading</CODE> to write the decorated-<CODE>poly</CODE>
+procedure that will let us specify the kind of symmetry we want:
+
+<P><PRE>to spin :turns :command
+repeat :turns [protect.heading :command right 360/:turns]
+end
+</PRE>
+
+<P>&raquo;Try out <CODE>spin</CODE> with instructions like these:
+
+<P><TABLE><TR><TD>
+<PRE>spin 3 [squiggle]
+spin 5 [squiggle]
+spin 4 [squaggle]                   
+spin 6 [squoggle]
+spin 6 [fd 40 squoggle]
+spin 5 [pu fd 50 pd squaggle]
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/spin.gif" ALT="turtle figure">
+</TABLE>
+
+<P>Isn't that better?
+
+<P>I mentioned that there is an exception to the rule that every squiggle
+will eventually retrace its steps if you repeat it.  Here it is:
+
+<P><TABLE><TR><TD>
+<PRE>to squirrel
+forward 40
+right 90
+forward 10
+right 90
+forward 15                          
+right 90
+forward 20
+right 90
+end
+</PRE><TD valign="center"><IMG SRC="squirrel.gif" ALT="turtle figure">
+</TABLE>
+
+<P>&raquo;Try repeating <CODE>squirrel</CODE> 20 times.  You'll find that
+instead of turning around to its original position and heading, the
+turtle goes straight off into the distance.  Why?  (<CODE>Squiggle</CODE> had
+four-fold symmetry because its total turning was 90 degrees.  What is
+the total turning of <CODE>squirrel</CODE>?) Of course, if you use <CODE>
+squirrel</CODE> in the second input to <CODE>spin</CODE>, it will perform like the
+others, because <CODE>spin</CODE> controls the turtle's heading in that case.
+
+<P>I've been using random squiggles with silly names to make
+the point that by paying attention to symmetry, Logo <EM>can</EM> make
+a silk purse from a sow's ear.  But of course there is no reason not
+to apply <CODE>spin</CODE> to more carefully designed pieces.  Here's one I
+like:
+
+<P><TABLE><TR><TD>
+<PRE>to fingers :size
+penup forward 10 pendown
+right 5
+repeat 5 [forward :size right 170 forward :size left 170] 
+left 5                                                 
+penup back 10 pendown
+end
+
+spin 4 [fingers 50]
+spin 10 [fingers 30]
+</PRE><TD valign="center"><IMG SRC="fingers.gif" ALT="turtle figure">
+</TABLE>
+
+<P>
+<H2>Fractals</H2>
+
+<P>I'd like to write a procedure to draw this picture of a tree:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/tree.gif" ALT="figure: tree"></CENTER>
+
+<P>The trick is to identify this as a recursive problem.  Do
+you see the smaller-but-similar subproblems?  The tree consists of a
+trunk with two smaller trees attached.
+
+<P><CENTER><IMG SRC="splittree.gif" ALT="figure: splittree"></CENTER>
+
+<P>So a first approximation to the solution might look like this:
+
+<P><PRE>to tree :size
+forward :size
+left 20
+tree :size/2
+right 40
+tree :size/2
+end
+</PRE>
+
+<P>If you try running this procedure, you'll see that we still
+have some work to do.  But let me remind you that an unfinished
+procedure like this isn't a <EM>mistake;</EM> you shouldn't feel that
+you have to have every detail worked out before you first touch the
+keyboard.  The first obvious problem is that there is no stop rule, so
+the procedure keeps trying to draw smaller and smaller subtrees.  What
+should the limiting condition be?  In this case there is no obvious
+end, like the <CODE>butfirst</CODE> of a word becoming empty.
+
+<P>There are two approaches we could take to limiting the number of
+branches of the tree.  One approach would be to choose explicitly how
+deep we want to get in recursive invocations.  We could do this by
+adding another input, called <CODE>depth</CODE>, that will be the number of
+levels of recursion to allow:
+
+<P><PRE>to tree :depth :size
+if :depth=0 [stop]
+forward :size
+left 20
+tree (:depth-1) :size/2
+right 40
+tree (:depth-1) :size/2
+end
+</PRE>
+
+<P>The other approach would be to keep letting the branches get
+smaller until they go below a reasonable minimum:
+
+<P><PRE>to tree :size
+if :size&lt;4 [stop]
+forward :size
+left 20
+tree :size/2
+right 40
+tree :size/2
+end
+</PRE>
+
+<P>Either approach is reasonable.  I'll choose the second one
+just because it seems a little simpler.  The cost of that choice is
+somewhat less control over the final picture; I'm not sure if it'll
+have exactly the number of branches I originally planned.
+
+<P>The modified procedure does come to a halt now, but it still doesn't
+draw the tree I had in mind.  The problem is that this version of <CODE>
+tree</CODE> is not <EM>state-invariant:</EM> it doesn't leave the turtle with
+the same position and heading that it had originally.  That's
+important because when <CODE>tree</CODE> says
+
+<P><PRE>tree :size/2
+right 40
+tree :size/2
+</PRE>
+
+<P>the assumption is that at the end of the first smaller tree
+the turtle will be back at the top of the main trunk, in position to
+draw the second subtree.  We can fix the problem by making the turtle
+climb back down the trunk (of each subtree):
+
+<P><PRE>to tree :size
+if :size&lt;4 [stop]
+forward :size
+left 20
+tree :size/2
+right 40
+tree :size/2
+left 20
+back :size
+end
+</PRE>
+
+<P>Voila!  If you try <CODE>tree 50</CODE> you'll see something like the
+picture I had in mind.
+
+<P>You're probably thinking that this &quot;tree&quot; doesn't look very tree-like.
+There are several things wrong with it:  It's too symmetrical; it doesn't
+have enough branches; the branches should grow partway up the trunk as well
+as at the top.  But all of these problems can be solved by adding a few more
+steps to the procedure:
+
+<P><TABLE><TR><TD>
+<PRE>to tree :size
+if :size &lt; 5 [forward :size back :size stop]
+forward :size/3
+left 30 tree :size*2/3 right 30
+forward :size/6
+right 25 tree :size/2 left 25           
+forward :size/3
+right 25 tree :size/2 left 25
+forward :size/6
+back :size
+end
+</PRE><TD valign="center"><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch10/realtree.gif" ALT="turtle figure">
+</TABLE>
+
+<P>We can embellish the tree as much as we want.  The only
+requirement is that the procedure be state-invariant:  The turtle's final
+position and heading must be the same as its beginning position and heading.
+
+<P>
+
+<P>Because I chose to use a minimum length as the stopping condition, the
+shape of the tree depends on the size of its trunk.  That's slightly
+unusual in turtle graphics programs, which usually draw the same shape
+regardless of the size.
+
+<P>A recursively-defined shape (one that contains smaller versions of itself)
+is called a <EM>fractal.</EM> Until the 1970s, hardly anybody explored
+fractals except for kids learning Logo and a few recreational mathematicians.
+Today, however, fractals have become important becase movie producers are
+using computer graphics as an alternative to expensive sets and models for
+fancy special effects.  It turns out that programs like <CODE>tree</CODE> are the
+secret of drawing realistic clouds, mountains, and other natural
+backgrounds with a computer.
+
+<P>&raquo;If you want another challenging fractal project, try writing a program
+to produce these fractal snowflakes:
+
+<P><CENTER><IMG SRC="flake.gif" ALT="figure: flake"></CENTER>
+
+<P><H2>Further Reading</H2>
+
+<P>If you're interested in an intellectually rigorous exploration of
+turtle geometry, continuing along the lines I've started here,
+read
+<A HREF="http://mitpress.mit.edu/catalog/item/default.asp?sid=21C60546-CCA2-45E0-AA55-8E6BAC3EB07F&ttype=2&tid=7287"><EM>Turtle Geometry</EM></A>,
+Abelson and diSessa (MIT Press,
+1981).  I learned many of the things in this chapter from them.  It's
+a hard book but worth the effort.
+
+<P>The standard reference book on fractals is <EM>The Fractal Geometry
+of Nature,</EM> by Benoit Mandelbrot (W. H. Freeman, 1982).
+Dr. Mandelbrot gave fractals their name and was the first to see
+serious uses for them.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch9/v1ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch11/v1ch11.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch11/codelet.gif b/js/games/nluqo.github.io/~bh/v1ch11/codelet.gif
new file mode 100644
index 0000000..ad92446
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch11/codelet.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch11/fibonacci.gif b/js/games/nluqo.github.io/~bh/v1ch11/fibonacci.gif
new file mode 100644
index 0000000..bc6a4fd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch11/fibonacci.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch11/recops.html b/js/games/nluqo.github.io/~bh/v1ch11/recops.html
new file mode 100644
index 0000000..0c0d14d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch11/recops.html
@@ -0,0 +1,1237 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 11: Recursive Operations</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Recursive Operations</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch11.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch10/v1ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch12/v1ch12.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+So far, the recursive procedures we've seen have all been commands, not
+operations.  Remember that an operation is a procedure that has an <EM>
+output</EM> rather than an <EM>effect.</EM> In other words, an operation
+computes some value that is then used as the input to some other procedure.
+In the instruction
+
+<P>
+<PRE>print first &quot;hello
+</PRE>
+
+
+<P><CODE>print</CODE> is a command, because it does something: It prints its
+input (whatever that may be) on the screen.  But <CODE>first</CODE> is an
+operation, because it computes something: With the word <CODE>hello</CODE> as
+input, it computes the letter <CODE>h</CODE>, which is the first letter of
+the input.
+
+<P><H2>A Simple Substitution Cipher</H2>
+
+<P>
+
+
+I'm going to write a program to produce secret messages.  The program
+will take an ordinary English sentence (in the form of a Logo list)
+and change each letter into some other letter.  For example, we can
+decide to replace the letter E with the letter J every time it occurs
+in the message.  The program will need two inputs: the message
+and the correspondence between letters.  The latter will take the form
+of a word of 26 letters, representing the coded versions of the 26
+letters in alphabetical order.  For example, the word
+
+<P>
+<PRE>qwertyuiopasdfghjklzxcvbnm
+</PRE>
+
+
+<P>indicates that the letter A in the original text will be represented
+by Q in the secret version, B will be represented by W, and so on.
+
+<P>In order to encipher a sentence, we must go through it word by word.
+(Strictly speaking, what we're doing is called a <EM>cipher</EM> rather
+than a <EM>code</EM> because the latter is a system that substitutes
+something for an entire word at a time, like a foreign language,
+whereas we're substituting for a single letter at a time, like the
+Elvish alphabet in <EM>The Lord of the Rings.</EM>) In order to encipher
+a word we must go through it letter by letter.  So I'll begin by
+writing a procedure to translate a single letter to its coded form.
+
+<P>
+<PRE>to codelet :letter :code
+output codematch :letter &quot;abcdefghijklmnopqrstuvwxyz :code
+end
+
+to codematch :letter :clear :code
+if emptyp :clear [output :letter]        ; punctuation character
+if equalp :letter first :clear [output first :code]
+output codematch :letter butfirst :clear butfirst :code
+end
+</PRE>
+
+<P><CODE>Codelet</CODE> is an operation that takes two inputs.  The first input
+must be a single-letter word, and the second must be a code, that is,
+a word with the 26 letters of the alphabet rearranged.  The output
+from <CODE>codelet</CODE> is the enciphered version of the input letter.  (If
+the first input is a character other than a letter, such as a punctuation
+mark, then the output is the same as that input.)
+
+<P><CODE>Codelet</CODE> itself is a very simple procedure.  It simply passes its
+two inputs on to a subprocedure, <CODE>codematch</CODE>, along with another
+input that is the alphabet in normal order.  The idea is that <CODE>
+codematch</CODE> will compare the input letter to each of the letters in the
+regular alphabet; when it finds a match, it will output the letter in
+the corresponding position in the scrambled alphabet.  Be sure you
+understand the use of the <CODE>output</CODE> command in <CODE>codelet</CODE>; it
+says that whatever <CODE>codematch</CODE> outputs should become the output
+from <CODE>codelet</CODE> as well.
+
+<P>The job of <CODE>codematch</CODE> is to go through the alphabet, letter by
+letter, looking for the particular letter we're trying to encode.  The
+primary tool that Logo provides for looking at a single letter in a
+word is <CODE>first</CODE>.  So <CODE>codematch</CODE> uses <CODE>first</CODE> to compare
+its input letter with the first letter of the input alphabet:
+
+<P><PRE>if equalp :letter first :clear ...
+</PRE>
+
+<P>If the first input to <CODE>codematch</CODE> is the letter A, then <CODE>
+equalp</CODE> will output <CODE>true</CODE> and <CODE>codematch</CODE> will output the
+first letter of <CODE>:code</CODE> (Q in the example I gave earlier).  But
+suppose the first input isn't an A.  Then <CODE>codematch</CODE> has to solve
+a smaller subproblem: Find the input letter in the remaining 25
+letters of the alphabet.  Finding a smaller, similar subproblem means
+that we can use a recursive solution.  <CODE>Codematch</CODE> invokes itself,
+but for its second and third inputs it uses the <CODE>butfirst</CODE>s of the
+original inputs because the first letter of the alphabet (A) and its
+corresponding coded letter (Q) have already been rejected.
+
+<P>
+Here is a trace of an example of <CODE>codematch</CODE> at work, to help you
+understand what's going on.
+
+<P><PRE>codematch &quot;e &quot;abcdefghijklmnopqrstuvwxyz &quot;qwertyuiopasdfghjklzxcvbnm
+   codematch &quot;e &quot;bcdefghijklmnopqrstuvwxyz &quot;wertyuiopasdfghjklzxcvbnm
+      codematch &quot;e &quot;cdefghijklmnopqrstuvwxyz &quot;ertyuiopasdfghjklzxcvbnm
+         codematch &quot;e &quot;defghijklmnopqrstuvwxyz &quot;rtyuiopasdfghjklzxcvbnm
+            codematch &quot;e &quot;efghijklmnopqrstuvwxyz &quot;tyuiopasdfghjklzxcvbnm
+            codematch outputs &quot;t
+         codematch outputs &quot;t
+      codematch outputs &quot;t
+   codematch outputs &quot;t
+codematch outputs &quot;t
+</PRE>
+
+<P>The fifth, innermost invocation of <CODE>codematch</CODE> succeeds
+at matching its first input (the letter E) with the first letter of
+its second input.  That invocation therefore outputs the first letter
+of its third input, the letter T.  Each of the higher-level
+invocations outputs the same thing in turn.
+
+<P>The pattern of doing something to the <CODE>first</CODE> of an input, then
+invoking the same procedure recursively with the <CODE>butfirst</CODE> as the
+new input, is a familiar one from recursive commands.  If we only
+wanted to translate single letters, we could have written <CODE>
+codelet</CODE> and <CODE>codematch</CODE> as commands, like this:
+
+<P><PRE>to codelet :letter :code                        ;; command version
+codematch :letter &quot;abcdefghijklmnopqrstuvwxyz :code
+end
+
+to codematch :letter :clear :code               ;; command version
+if emptyp :clear [print :letter stop]
+if equalp :letter first :clear [print first :code stop]
+codematch :letter butfirst :clear butfirst :code
+end
+</PRE>
+
+<P>You may find this version a little easier to understand,
+because it's more like the recursive commands we've examined in the
+past.  But making <CODE>codelet</CODE> an operation is a much stronger
+technique.  Instead of being required to print the computed code
+letter, we can make that letter part of a larger computation.  In
+fact, we have to do that in order to encipher a complete word.  Each
+word is made up of letters, and the task of <CODE>codeword</CODE> will be to go
+through a word, letter by letter, using each letter as input to <CODE>
+codelet</CODE>.  The letters output by <CODE>codelet</CODE> must be combined into a
+new word, which will be the output from <CODE>codeword</CODE>.
+
+<P>We could write <CODE>codeword</CODE> using the higher order function <CODE>map</CODE>:
+
+<P><PRE>to codeword :word :code             ;; using higher order function
+output map [codelet ? :code] :word
+end
+</PRE>
+
+<P>But to help you learn how to write recursive operations, in this
+chapter we'll avoid higher order functions.  (As it turns out, <CODE>map</CODE>
+itself is a recursive operation, written using the techniques of this
+chapter.)
+
+<P>Recall the structure of a previous procedure that went through a word
+letter by letter:
+
+<P><PRE>to one.per.line :word
+if emptyp :word [stop]
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>Compare this to the structure of the recursive <CODE>codeword</CODE>:
+
+<P><PRE>to codeword :word :code
+if emptyp :word [output &quot;]
+output word (codelet first :word :code) (codeword butfirst :word :code)
+end
+</PRE>
+
+<P>There are many similarities. Both procedures have a
+stop rule that tests for an empty input.  Both do something to the <CODE>
+first</CODE> of the input (either <CODE>print</CODE> or <CODE>codelet</CODE>), and each
+invokes itself recursively on the <CODE>butfirst</CODE> of the input.
+(<CODE>Codeword</CODE> has an extra input for the code letters, but that
+doesn't really change the structure of the procedure.  If that's
+confusing to you, you could temporarily pretend that <CODE>code</CODE> is a
+global variable and eliminate it as an input.)
+
+<P>The differences have to do with the fact that <CODE>codeword</CODE> is an
+operation instead of a command.  The stop rule invokes <CODE>output</CODE>
+rather than <CODE>stop</CODE> and must therefore specify what is to be
+output when the stop condition is met.  (In this case, when the input
+word is empty, the output is also the empty word.) But the main thing
+is that the action step (the <CODE>print</CODE> in <CODE>one.per.line</CODE>) and
+the recursive call (the <CODE>one.per.line</CODE> instruction) are not two
+separate instructions in <CODE>codeword</CODE>.  Instead they are
+expressions (the two in parentheses) that are combined by <CODE>word</CODE>
+to form the complete output.  Here's a picture:
+
+<P><CENTER><IMG SRC="codelet.gif" ALT="figure: codelet"></CENTER>
+
+<P>Remember what you learned in Chapter 2 about the way in
+which Logo instructions are evaluated.  Consider the <CODE>output</CODE>
+instruction in <CODE>codeword</CODE>.  Before <CODE>output</CODE> can be invoked,
+Logo must evaluate its input.  That input comes from the output from
+<CODE>word</CODE>.  Before <CODE>word</CODE> can be invoked, Logo must evaluate <EM>
+its</EM> inputs.  There are two of them.  The first input to <CODE>word</CODE>
+is the expression
+
+<P><PRE>codelet first :word :code
+</PRE>
+
+<P>This expression computes the coded version of the first
+letter of the word we want to translate.  The second input to <CODE>
+word</CODE> is the expression
+
+<P><PRE>codeword butfirst :word :code
+</PRE>
+
+<P>This expression invokes <CODE>codeword</CODE> recursively, solving
+the smaller subproblem of translating a smaller word, one with the
+first letter removed.  When both of these computations are complete,
+<CODE>word</CODE> can combine the results to form the translation of the
+complete input word.  Then <CODE>output</CODE> can output that result.
+
+<P>Here's an example of how <CODE>codeword</CODE> is used.
+
+<P><PRE>? <U>print codeword &quot;hello &quot;qwertyuiopasdfghjklzxcvbnm</U>
+itssg
+</PRE>
+
+<P>Notice that we have to say <CODE>print</CODE>, not just start the
+instruction line with <CODE>codeword</CODE>; a complete instruction
+must have a command.  Suppose you had the idea of saving all that
+typing by changing the <CODE>output</CODE> instruction in <CODE>codeword</CODE> to a
+<CODE>print</CODE>.  What would happen?  The answer is that <CODE>codeword</CODE>
+wouldn't be able to invoke itself recursively as an operation.  (If
+you don't understand that, try it!) Also, it's generally a better idea
+to write an operation when you have to compute some result.
+That way, you aren't committed to printing the result; you can use it
+as part of a larger computation.
+
+<P>For example, right now I'd like to write a procedure <CODE>code</CODE> that
+translates an entire sentence into code.  Like <CODE>codeword</CODE>, it will
+be an operation with two inputs, the second of which is a code (a word
+of 26 scrambled letters).  The difference is that the first input will
+be a sentence instead of a word and the output will also be a sentence.
+
+<P>&raquo;Write <CODE>code</CODE> using a higher order function.  Then see if you can
+write an equivalent recursive version.
+
+<P>Just as <CODE>codeword</CODE> works by splitting up the word into letters,
+<CODE>code</CODE> will work by splitting up a sentence into words.  The
+structure will be very similar.  Here it is:
+
+<P><PRE>to code :sent :code
+if emptyp :sent [output []]
+output sentence (codeword first :sent :code) (code butfirst :sent :code)
+end
+</PRE>
+
+<P>The main differences are that <CODE>code</CODE> outputs the empty
+list, instead of the empty word, for an empty input and that <CODE>sentence</CODE>
+is used as the combining operation instead of <CODE>word</CODE>.
+Here's an example of <CODE>code</CODE> at work.
+
+<P><PRE>? <U>print code [meet at midnight, under the dock.] ~</U>
+             <U>&quot;qwertyuiopasdfghjklzxcvbnm</U>
+dttz qz dorfouiz, xfrtk zit rgea.
+</PRE>
+
+<P><H2>More Procedure Patterns</H2>
+
+<P><CODE>Code</CODE> and <CODE>codeword</CODE> are examples of a very common pattern in
+recursive operations:  They are like using <CODE>map</CODE> with a particular
+function.  Here is the pattern that they fit.
+
+<P><PRE><A NAME="map">to <U>procedure</U> :input</A>
+if emptyp :input [output :input]
+output <U>combiner</U> (<U>something</U> first :input) (<U>procedure</U> butfirst :input)
+end
+</PRE>
+
+<P>The <EM>combiner</EM> is often <CODE>word</CODE> or <CODE>sentence</CODE>,
+although others are possible.  In fact, when working with lists, the
+most common combiner is not <CODE>sentence</CODE> but another operation that
+we haven't used before, <CODE>fput</CODE> (First PUT).  <CODE>Fput</CODE> takes two
+inputs.  The first can be any datum, but the second must be a list.
+The output from <CODE>fput</CODE> is a list that is equal to the second
+input, except that the first input is inserted as a new first member.
+In other words the output from <CODE>fput</CODE> is a list whose <CODE>first</CODE>
+is the first input and whose <CODE>butfirst</CODE> is the second input.
+
+<P><PRE>? <U>show sentence [hee hee hee] [ho ho ho]</U>
+[hee hee hee ho ho ho]
+? <U>show fput [hee hee hee] [ho ho ho]</U>
+[[hee hee hee] ho ho ho]
+</PRE>
+
+<P><CODE>Fput</CODE> is a good combiner because the two things we want to
+combine are the <CODE>first</CODE> and the <CODE>butfirst</CODE> of a list, except that
+each has been modified in some way.  But the <EM>shape</EM> of the final
+result (a list of so many members) should be the same as the shape of the
+input, and that's what <CODE>fput</CODE> ensures.
+
+<P>When you're working with sentences--lists of words rather than lists
+of lists--<CODE>sentence</CODE> and <CODE>fput</CODE> will work equally well
+as the combiner.  For example, <CODE>code</CODE> could have been written
+using <CODE>fput</CODE> instead of <CODE>sentence</CODE>.  Not until some of
+the later examples, when we use tree-structured lists,
+will the choice really be important.
+
+<P>&raquo;<CODE>Fput</CODE> is actually a &quot;more primitive&quot; operation than <CODE>sentence</CODE>,
+in the sense that the Logo interpreter actually constructs lists by
+doing the internal equivalent of <CODE>fput</CODE>.  As an exercise, you
+might like to try writing your own versions of list combiners like
+<CODE>sentence</CODE> and <CODE>list</CODE> out of <CODE>fput</CODE>, <CODE>first</CODE>, and
+<CODE>butfirst</CODE>.  You should also be able to write <CODE>last</CODE> and <CODE>
+butlast</CODE> using only those three building blocks.  (Actually you'll
+also need <CODE>if</CODE>, <CODE>emptyp</CODE>, <CODE>wordp</CODE>, and <CODE>output</CODE>,
+but you won't need any other primitive combiners.)  Give your versions
+distinct names, such as <CODE>my.sentence</CODE>, since Logo won't let you
+redefine primitives.
+
+<P>&raquo;Another &quot;less primitive&quot; primitive is <CODE>lput</CODE>, an operation that
+takes two inputs.  As for <CODE>fput</CODE>, the first can be any datum but
+the second must be a list.  The output from <CODE>lput</CODE> is a list whose
+<CODE>last</CODE> is the first input and whose <CODE>butlast</CODE> is the second.
+Write <CODE>my-lput</CODE> using <CODE>fput</CODE> and the selectors <CODE>first</CODE> and
+<CODE>butfirst</CODE>.
+
+<P>It may seem silly to learn a recursive pattern for problems that can be
+solved using <CODE>map</CODE>.  But sometimes we run into a problem that's <EM>
+almost</EM> like a <CODE>map</CODE>, but not exactly.  For example, how would you
+write the following operation:
+
+<P><PRE>? <U>show pairup [now here after glow worm hole]</U>
+[nowhere hereafter afterglow glowworm wormhole]
+</PRE>
+
+<P>Instead of the usual <CODE>map</CODE>-like situation in which each word
+in the result is a function of one word of the input, this time each word of
+the result is a function of <EM>two</EM> neighboring input words.  <CODE>Map</CODE>
+won't solve this problem, but the <CODE>map</CODE>-like recursion pattern will.
+
+<P><PRE>to pairup :words
+if emptyp butfirst :words [output []]
+output (sentence (word first :words first butfirst :words)
+                 (pairup butfirst :words))
+end
+</PRE>
+
+<P>Compare this procedure with the <A HREF="recops.html#map">general pattern</A>;
+look for similarities and differences.
+
+<P>&raquo;One difference is in the test for the base case.  Why is the version
+in <CODE>pairup</CODE> different from the one in the pattern?
+
+<P>&raquo;Write an operation that interchanges pairs of words in a sentence,
+like this:
+
+<P><PRE>? <U>show swap [the rain in spain stays mainly on the plain]</U>
+[rain the spain in mainly stays the on plain]
+</PRE>
+
+<P>Don't forget to think about that leftover word in an odd-length
+sentence!
+
+<P><H2>The <CODE>Filter</CODE> Pattern</H2>
+
+<P>In Chapter 5 we saw this example:
+
+<P><PRE>? <U>show filter &quot;numberp [76 trombones, 4 calling birds, and 8 days]</U>
+[76 4 8]
+</PRE>
+
+<P>To write a recursive operation <CODE>numbers</CODE> with the same result,
+we must handle three cases: the base case, in which the input is empty; the
+case in which the first word of the input is a number; and the case in which
+the first word isn't a number.
+
+<P><PRE>to numbers :sent
+if emptyp :sent [output []]
+if numberp first :sent ~
+   [output sentence first :sent numbers butfirst :sent]
+output numbers butfirst :sent
+end
+
+? <U>show numbers [76 trombones, 4 calling birds, and 8 days]</U>
+[76 4 8]
+</PRE>
+
+<P>Here's the general <CODE>filter</CODE> pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output :input]
+if <U>predicate</U> first :input ~
+   [output <U>combiner</U> first :input <U>procedure</U> butfirst :input]
+output <U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>As in the case of the <CODE>map</CODE> pattern, this one is most useful
+in situations for which the higher order function won't quite do.
+
+<P>&raquo;Write an operation that looks for two equal words next to each other
+in a sentence, and outputs a sentence with one of them removed:
+
+<P><PRE>? <U>show unique [Paris in the the spring is a joy joy to behold.]</U>
+Paris in the spring is a joy to behold.
+</PRE>
+
+<P>What does your procedure do with <EM>three</EM> consecutive
+equal words?  What should it do?
+
+<P><H2>The <CODE>Reduce</CODE> Pattern</H2>
+
+<P>Other examples from Chapter 5 introduced the <CODE>reduce</CODE> higher
+order function.
+
+<P><PRE>? <U>show reduce &quot;word [C S L S]</U>
+CSLS
+? <U>show reduce &quot;sum [3 4 5 6]</U>
+18
+</PRE>
+
+<P>Recursive operations equivalent to these examples are very much
+like the <CODE>map</CODE> pattern except that the combiner function is applied to
+the members of the input directly, rather than to some function of the
+members of the input:
+
+<P><PRE>to wordify :sentence
+if emptyp :sentence [output &quot;]
+output word (first :sentence) (wordify butfirst :sentence)
+end
+
+to addup :numbers
+if emptyp :numbers [output 0]
+output sum (first :numbers) (addup butfirst :numbers)
+end
+</PRE>
+
+<P>What are the differences between these two examples?  There are two: the
+combiner used and the value output in the base case.  Here is the pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output <U>identity</U>]
+output <U>combiner</U> (first :input) (<U>procedure</U> butfirst :input)
+end
+</PRE>
+
+<P>The identity in this pattern depends on the combiner; it's
+the value that, when combined with something else, gives that something else
+unchanged as the result.  Thus, zero is the identity for <CODE>sum</CODE>, but the
+identity for <CODE>product</CODE> would be one.
+
+<P>&raquo;Write a <CODE>multiply</CODE> operation that takes a list of numbers as its
+input and returns the product of all the numbers.
+
+<P>&raquo;You can make your <CODE>multiply</CODE> procedure more efficient, in some
+situations, by having it notice when one of the numbers in the input list is
+zero.  In that case, you can output zero as the overall result without
+looking at any more numbers.  The resulting procedure will, in a sense,
+combine aspects of the <CODE>filter</CODE> and <CODE>reduce</CODE> patterns.
+
+<P><CODE>Addup</CODE> is one example of an important sub-category of <CODE>reduce</CODE>-like
+procedures in which the &quot;combining&quot;
+operation is arithmetic, usually <CODE>sum</CODE>.  The simplest example is a
+procedure equivalent to the primitive <CODE>count</CODE>, which counts the
+members of a list or the letters of a word:
+
+<P><PRE>to length :thing
+if emptyp :thing [output 0]
+output 1+length butfirst :thing
+end
+</PRE>
+
+<P>In this procedure, as usual, we can see the reduction of a
+problem to a smaller subproblem.  The length of any word or list is
+one more than the length of its <CODE>butfirst</CODE>.  Eventually this
+process of shortening the input will reduce it to emptiness; the
+length of an empty word or list is zero.
+
+<P>Although <CODE>count</CODE> is a primitive, there are more complicated
+counting situations in which not every member should be counted.  For
+example, here is a procedure to count the number of vowels in a word:
+
+<P><PRE>to vowelcount :word
+if emptyp :word [output 0]
+if vowelp first :word [output 1+vowelcount butfirst :word]
+output vowelcount butfirst :word
+end
+
+to vowelp :letter
+output memberp :letter [a e i o u]
+end
+</PRE>
+
+<P>(Actually, my predicate <CODE>vowelp</CODE> is somewhat
+oversimplified.  The letter Y is a vowel in certain positions in the
+word, and even some other letters can sometimes play the role of a
+vowel.  But this isn't a book on linguistics!)
+
+<P>You can see the similarities between <CODE>vowelcount</CODE> and <CODE>
+length</CODE>.  The difference is that, in effect, <CODE>length</CODE> uses a
+predicate that is always <CODE>true</CODE>, so it always carries out the
+instruction inside the <CODE>if</CODE>.  Here's the pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output 0]
+if <U>predicate</U> first :input [output 1+<U>procedure</U> butfirst :input]
+output <U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>&raquo;Try writing a procedure that will accept as
+input a word like <CODE>21,997.00</CODE> and output the number of digits
+before the decimal point.  (In this case the correct output is 5.)
+Don't assume that there <EM>is</EM> a decimal point; your program
+shouldn't blow up no matter what word it gets as input.
+
+<P>&raquo;Another counting problem is to output the position of a member in a
+list.  This operation is the inverse to <CODE>item</CODE>, a Logo primitive,
+which outputs the member at a given position
+number.  What I'm asking you to write is <CODE>index</CODE>, which works like
+this:
+
+<P><PRE>? <U>print index &quot;seven [four score and seven years ago]</U>
+4
+? <U>print index &quot;v &quot;aardvark</U>
+5
+</PRE>
+
+<P><H2>The <CODE>Find</CODE> Pattern</H2>
+
+<P>
+ A variation of the <CODE>filter</CODE> pattern
+is for <EM>selection</EM> operations: ones that pick a single element out of a
+list.  The general idea looks like this:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output :input]
+if <U>predicate</U> first :input [output <U>something</U> first :input]
+output <U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>There will generally be extra inputs to these procedures, to
+indicate the basis for selection.  For example, here is a program
+that translates English words into French.
+
+<P><PRE>to french :word
+output lookup :word [[book livre] [computer ordinateur] [window fenetre]]
+end
+
+to lookup :word :dictionary
+if emptyp :dictionary [output &quot;]
+if equalp :word first first :dictionary [output last first :dictionary]
+output lookup :word butfirst :dictionary
+end
+
+? <U>print french &quot;computer</U>
+ordinateur
+</PRE>
+
+<P>The expression
+
+<P><PRE>first first :dictionary
+</PRE>
+
+<P>selects the English word from the first word-pair in the list.
+Similarly,
+
+<P><PRE>last first :dictionary
+</PRE>
+
+<P>selects the French version of the same word.  (Of course, in
+reality, the word list in <CODE>french</CODE> would be much longer than the
+three word-pairs I've shown.)
+
+<P><CODE>Codematch</CODE>, in the example that started this chapter, follows
+the same pattern of selection.  The only difference is that there are
+two inputs that are <CODE>butfirst</CODE>ed in parallel.
+
+<P>
+Somewhat similar to the selection pattern is one for a recursive
+<EM>predicate;</EM> the difference is that instead of
+
+<P><PRE>output <U>something</U> first :input
+</PRE>
+
+<P>for a successful match, the procedure simply says
+
+<P><PRE>output &quot;true
+</PRE>
+
+<P>in that case.  This pattern is followed by predicates that
+ask a question like &quot;Does any member of the input do X?&quot; For
+example, suppose that instead of counting the vowels in a word, we
+just want to know whether or not there is a vowel.  Then we're asking
+the question &quot;Is any letter in this word a vowel?&quot; Here's how to
+find out.
+
+<P><PRE>to hasvowelp :word
+if emptyp :word [output &quot;false]
+if vowelp first :word [output &quot;true]
+output hasvowelp butfirst :word
+end
+</PRE>
+
+<P>A more realistic example is also somewhat more cluttered with extra
+inputs and sometimes extra end tests.  Here's a procedure that takes
+two words as input.  It outputs <CODE>true</CODE> if the first word comes
+before the second in the dictionary.
+
+<P><PRE>to sort.beforep :word1 :word2
+if emptyp :word1 [output &quot;true]
+if emptyp :word2 [output &quot;false]
+if (ascii first :word1) &lt; (ascii first :word2) [output &quot;true]
+if (ascii first :word1) &gt; (ascii first :word2) [output &quot;false]
+output sort.beforep butfirst :word1 butfirst :word2
+end
+</PRE>
+
+<P>The procedure will end on one of the <CODE>emptyp</CODE> tests if
+one of the input words is the beginning of the other, like <CODE>now</CODE>
+and <CODE>nowhere</CODE>.  Otherwise, the procedure ends when two letters are
+unequal.  The recursion step is followed when the beginning letters
+are equal.  (The operation <CODE>ascii</CODE> takes a one-character word as
+input, and outputs the numeric value for that character in the computer's
+coding system, which is called the American Standard Code for Information
+Interchange.)
+
+<P>A combination of the translation kind of operation and the selection
+kind is an operation that selects not one but several members of the
+input.  For example, you sometimes want to examine the words in a
+sentence in various ways but have trouble because the sentence
+includes punctuation as part of some words.  But the punctuation isn't
+<EM>really</EM> part of the word.  In Chapter 4, for instance, I
+defined a predicate <CODE>about.computersp</CODE> and gave this example of
+its use:
+
+<P><PRE>? <U>print about.computersp [this book is about programming]</U>
+true
+</PRE>
+
+<P>But if the example were part of a larger program, carrying
+on a conversation with a person, the person would probably have ended
+the sentence with a period.  The last word would then have been
+<CODE>programming.</CODE> (including the period).  That word, which is
+different from <CODE>programming</CODE> without the period, isn't in the
+procedure's list of relevant words, so it would have output <CODE>false</CODE>.
+The solution is to write a procedure that strips the punctuation from
+each word of a sentence.  Of course that's a straightforward case of
+the translation pattern, applying a subprocedure to each word of the
+sentence:
+
+<P><PRE>to strip :sent
+if emptyp :sent [output []]
+output sentence (strip.word first :sent) (strip butfirst :sent)
+end
+</PRE>
+
+<P><CODE>Strip.word</CODE>, though, is more interesting.  It must
+select only the letters from a word.
+
+<P><PRE>to strip.word :word
+if emptyp :word [output &quot;]
+if letterp first :word ~
+   [output word (first :word) (strip.word butfirst :word)]
+output strip.word butfirst :word
+end
+
+to letterp :char
+output or (inrangep (ascii :char) (ascii &quot;A) (ascii &quot;Z)) ~
+          (inrangep (ascii :char) (ascii &quot;a) (ascii &quot;z))
+end
+
+to inrangep :this :low :high
+output and (:this &gt; (:low-1)) (:this &lt; (:high+1))
+end
+</PRE>
+
+<P><CODE>Strip.word</CODE> is like the translation pattern in the use
+of the combining operation <CODE>word</CODE> in the middle instruction line.
+But it's also like the selection pattern in that there are two
+different choices of output, depending on the result of the predicate
+<CODE>letterp</CODE>.
+
+<P>&raquo;You might want to rewrite <CODE>about.computersp</CODE> so that it uses <CODE>
+strip</CODE>.  Consider an initialization procedure.
+
+<P>
+
+<H2>Numerical Operations: The <CODE>Cascade</CODE> Pattern</H2>
+
+<P>Certain mathematical functions are defined in terms of recursive
+calculations.  It used to be that computers were used <EM>only</EM> for
+numerical computation.  They're now much more versatile, as you've
+already seen, but sometimes the old numerical work is still important.
+
+<P>The classic example in this category is the <EM>factorial</EM>
+function.  The factorial of a positive integer is the product of all
+the integers from 1 up to that number.  The factorial of 5 is
+represented as
+5!
+so
+<P><CENTER>5! = 1 &times; 2 &times; 3 &times; 4 &times; 5</CENTER>
+
+<P>We can use <CODE>cascade</CODE> to carry out this computation:
+
+<P><PRE>to fact :n                       ;; cascade version
+output cascade :n [? * #] 1
+end
+
+? <U>print fact 5</U>
+120
+</PRE>
+
+<P>In this example I'm using a feature of <CODE>cascade</CODE> that we
+haven't seen before.  The template (the second input to <CODE>cascade</CODE>) may
+include a number sign (<CODE>#</CODE>) character, which represents the number of
+times the template has been repeated.  That is, it represents 1 the first
+time, 2 the second time, and so on.
+
+<P>Here is a recursive version of <CODE>fact</CODE> that takes one input, a
+positive integer, and outputs the factorial function of that number.
+The input can also be zero; the rule is that 0!=1.
+
+<P><PRE>to fact :n
+if :n=0 [output 1]
+output :n * fact :n-1
+end
+</PRE>
+
+<P>This procedure works because
+
+<P><CENTER>5! = 5 &times; 4!</CENTER>
+
+<P>That's
+another version of reducing a problem to a smaller subproblem.
+
+<P>&raquo;Chapter 5 gives the following example:
+
+<P><PRE>to power :base :exponent
+output cascade :exponent [? * :base] 1
+end
+</PRE>
+
+<P>Write a version of <CODE>power</CODE> using recursion instead of using
+<CODE>cascade</CODE>.
+
+<P>Another classic example, slightly more complicated, is the
+Fibonacci sequence.  Each number
+in the sequence is the sum of the two previous
+numbers; the first two numbers are 1.  So the sequence starts
+
+<P><CENTER>1, 1, 2, 3, 4, 5, 13, &hellip;</CENTER>
+
+<P>A formal definition of the sequence looks
+like this:
+<P><CENTER><IMG SRC="fibonacci.gif" ALT="math display"></CENTER>
+<P>Here's an operation <CODE>fib</CODE>
+that takes a number <EM>n</EM> as input and outputs <EM>F<SUB>n</SUB></EM>.
+
+<P><PRE>to fib :n
+if :n&lt;2 [output 1]
+output (fib :n-1)+(fib :n-2)
+end
+</PRE>
+
+<P>That procedure will work, but it's quite seriously
+inefficient.  The problem is that it ends up computing the same
+numbers over and over again.  To see why, here's a trace of what
+happens when you ask for <CODE>fib 4</CODE>:
+
+<P><PRE>fib 4
+  fib 3
+    fib 2
+      fib 1
+      fib 0
+    fib 1
+  fib 2
+    fib 1
+    fib 0
+</PRE>
+
+<P>Do you see the problem?  <CODE>fib 2</CODE> is computed twice, once
+because <CODE>fib 4</CODE> needs it directly and once because <CODE>fib 4</CODE>
+needs <CODE>fib 3</CODE> and <CODE>fib 3</CODE> needs <CODE>fib 2</CODE>.  Similarly, <CODE>
+fib 1</CODE> is computed three times.  As the input to <CODE>fib</CODE> gets
+bigger, this problem gets worse and worse.
+
+<P>It turns out that a much faster way to handle this problem is to
+compute a <EM>list</EM> of all the Fibonacci numbers up to the one we
+want.  Then each computation can take advantage of the work already
+done.  Here's what I mean:
+
+<P><PRE>to fiblist :n
+if :n&lt;2 [output [1 1]]
+output newfib fiblist :n-1
+end
+
+to newfib :list
+output fput (sum first :list first butfirst :list) :list
+end
+
+? <U>print fiblist 5</U>
+8 5 3 2 1 1
+</PRE>
+
+<P>We can then define a faster <CODE>fib</CODE> in terms of <CODE>
+fiblist</CODE>:
+
+<P><PRE>to fib :n
+output first fiblist :n
+end
+</PRE>
+
+<P>Convince yourself that the two versions of <CODE>fib</CODE> give
+the same outputs but that the second version is much faster.  I'm
+purposely not going through a detailed explanation of this example;
+you should use the analytical techniques you learned in Chapter 8.
+What problem is <CODE>fiblist</CODE> trying to solve?  What is the smaller
+subproblem?
+
+<P>The hallmark of numerical recursion is something like <CODE>:n-1</CODE> in the
+recursion step.  Sometimes this kind of recursion is combined with the <CODE>
+butfirst</CODE> style we've seen in most of the earlier examples.  Logo has a
+primitive operation called <CODE>item</CODE>, which takes two inputs.  The first is
+a positive integer, and the second is a list.  The output from <CODE>item</CODE> is
+the <EM>n</EM>th member of the list if the first input is <EM>n.</EM> (Earlier
+I suggested that you write <CODE>index</CODE>, the opposite of <CODE>item</CODE>.) If Logo
+didn't include <CODE>item</CODE>, here's how you could write it:
+
+<P><PRE>to item :n :list
+if equalp :n 1 [output first :list]
+output item :n-1 butfirst :list
+end
+</PRE>
+
+<P><H2>Pig Latin</H2>
+
+<P>When I was growing up, every kid learned a not-very-secret &quot;secret&quot;
+language called Pig Latin.  When I became a teacher, I was surprised
+to find out that kids apparently didn't learn it any more.  But
+more recently it seems to have come back into vogue.  Translating
+a sentence into Pig Latin is an interesting programming problem, so
+I'm going to teach it to you.
+
+<P>Here's how it works.  For each word take any consonants that are at
+the beginning (up to the first vowel) and move them to the
+end.  Then add &quot;ay&quot; at the end.  So &quot;hello&quot; becomes &quot;ellohay&quot;;
+&quot;through&quot; becomes &quot;oughthray&quot;; &quot;aardvark&quot; just becomes
+&quot;aardvarkay.&quot; (Pig Latin is meant to be spoken, not written.  You're
+supposed to practice so that you can do it and understand it really
+fast.)
+
+<P>By now you can write in your sleep the operation <CODE>
+piglatin</CODE>, which
+takes a sentence and outputs its translation into Pig Latin by going
+through the sentence applying a subprocedure <CODE>plword</CODE> to each
+word.  (It's just like <CODE>code</CODE>, only different.)
+It's <CODE>plword</CODE> that is the tricky part.  The stop rule is
+pretty straightforward:
+
+<P><PRE>if vowelp first :word [output word :word &quot;ay]
+</PRE>
+
+<P>If the first letter <EM>isn't</EM> a vowel, what we want to
+do is move that letter to the end and try again.  Here's the complete
+procedure.
+
+<P><PRE>to plword :word
+if vowelp first :word [output word :word &quot;ay]
+output plword word butfirst :word first :word
+end
+</PRE>
+
+<P>What makes this tricky is that the recursion step doesn't
+seem to make the problem smaller.  The word is still the same length
+after we move the first letter to the end.  This would look more like
+all the other examples if the recursion step were
+
+<P><PRE>output plword butfirst :word
+</PRE>
+
+<P>That would make the procedure easier to understand.
+Unfortunately it would also give the wrong answer.  What you have to
+see is that there <EM>is</EM> something that is getting smaller about
+the word, namely the &quot;distance&quot; from the beginning of the word to
+the first vowel.  Trace through a couple of examples to clarify this
+for yourself.
+
+<P>By the way, this will work better if you modify <CODE>vowelp</CODE> (which we
+defined earlier) so that <CODE>y</CODE> is considered a vowel.  You'll then
+get the wrong answer for a few strange words like <CODE>yarn</CODE>, but on
+the other hand, if you consider <CODE>y</CODE> a consonant, you'll get no
+answer at all for words like <CODE>try</CODE> in which <CODE>y</CODE> is the only
+vowel!  (Try it.  Do you understand what goes wrong?)
+
+<P>&raquo;Some people learned a different dialect of Pig Latin.  According to
+them, if the word starts with a vowel in the first place, you should
+add &quot;way&quot; at the end instead of just &quot;ay.&quot; Modify <CODE>plword</CODE> so
+that it speaks that dialect.  (I think the idea is that some words
+simply sound better with that rule.) Hint: You'll want an
+initialization procedure.
+
+<P>&raquo;The top-level procedure <CODE>piglatin</CODE>, which you wrote yourself, is a
+good candidate for careful thought about punctuation.  You don't want
+to see
+
+<P><PRE>? <U>print piglatin [what is he doing?]</U>
+atwhay isway ehay oing?day
+</PRE>
+
+<P>A good first attempt would be to modify <CODE>piglatin</CODE> to
+use <CODE>strip</CODE>, to get rid of the punctuation altogether.  But even
+better would be to remove the punctuation from each word, translate it
+to Pig Latin, then put the punctuation back!  Then we could get
+
+<P><PRE>atwhay isway ehay oingday?
+</PRE>
+
+<P>That's the right thing to do for punctuation at the end of a
+word, like a period or a comma.  On the other hand, the apostrophe
+inside a word like <CODE>isn't</CODE> should be treated just like a letter.
+
+<P>The project I'm proposing to you is a pretty tricky one.  Here's a
+hint.  Write an operation <CODE>endpunct</CODE> that takes a word as input
+and outputs a <EM>list</EM> of two words, first the &quot;real&quot; word
+full of letters, then any punctuation that might be at the end.  (The
+second word will be empty if there is no such punctuation.) Then your
+new <CODE>plword</CODE> can be an initialization procedure that invokes a
+subprocedure with <CODE>endpunct</CODE>'s output as its input.
+
+<P><H2>A Mini-project: Spelling Numbers</H2>
+
+<P>Write a procedure <CODE>number.name</CODE> that takes a positive integer
+input, and outputs a sentence containing that number spelled out in words:
+
+<P><PRE>? <U>print number.name 5513345</U>
+five million five hundred thirteen thousand three hundred forty five
+? <U>print number.name (fact 20)</U>
+two quintillion four hundred thirty two quadrillion nine hundred two
+trillion eight billion one hundred seventy six million six hundred
+forty thousand
+</PRE>
+
+<P>There are some special cases you will need to consider:
+
+<UL>
+<LI>Numbers in which some particular digit is zero.
+<LI>Numbers like 1,000,529 in which an entire group of three digits is zero.
+<LI>Numbers in the teens.
+</UL>
+
+
+<P>Here are two hints.  First, split the number into groups of three digits,
+going from right to left.  Also, use the sentence
+
+<P><PRE>[thousand million billion trillion quadrillion quintillion
+ sextillion septillion octillion nonillion decillion]
+</PRE>
+
+<P>You can write this bottom-up or top-down.  To work bottom-up, pick a subtask
+and get that working before you tackle the overall structure of the
+problem.  For example, write a procedure that returns the word <CODE>fifteen</CODE>
+given the argument <CODE>15</CODE>.
+
+<P>To work top-down, start by writing <CODE>number.name</CODE>, freely assuming the
+existence of whatever helper procedures you like.  You can begin debugging
+by writing <EM>stub</EM> procedures that fit into the overall program but
+don't really do their job correctly.  For example, as an intermediate stage
+you might end up with a program that works like this:
+
+<P><PRE>? <U>print number.name 1428425</U>           ;; intermediate version
+1 million 428 thousand 425
+</PRE>
+
+<P><H2>Advanced Recursion: <CODE>Subsets</CODE></H2>
+
+<P>We've seen that recursive operations can do the same jobs as higher order
+functions, and we've seen that recursive operations can do jobs that are
+similar to the higher order function patterns but not quite the same.  Now
+we'll see that recursive operations can do jobs that are quite outside the
+bounds of any of the higher order functions in Chapter 5.
+
+<P>I'd like to write an operation <CODE>subsets</CODE> that takes a word as input.
+Its output will be a sentence containing all the words that can be made
+using letters from the input word, in the same order, but not necessarily
+using all of them.  For example, the word <CODE>lit</CODE> counts as a subset of
+the word <CODE>lights</CODE>, but <CODE>hit</CODE> doesn't count because the letters are
+in the wrong order.  (Of course the procedure won't know which words are
+real English words, so <CODE>iht</CODE>, which has the same letters as <CODE>hit</CODE>
+in the right order, <EM>does</EM> count.)
+
+<P>&raquo;How many subsets does <CODE>lights</CODE> have?  Write them all down if
+you're not sure.  (Or perhaps you'd prefer to count the subsets of a shorter
+word, such as <CODE>word</CODE>, instead.)
+
+<P>A problem that follows the <CODE>map</CODE> pattern is one in which the size of the
+output is the same as the size of the input, because each member of the
+input gives rise to one member of the output.  A problem that follows the
+<CODE>filter</CODE> pattern is one in which the output is smaller than the input,
+because only some of the members are selected.  And the <CODE>reduce</CODE> pattern
+collapses all of the members of the input into one single result.  The
+<CODE>subsets</CODE> problem is quite different from any of these; its output will
+be much <EM>larger</EM> than its input.
+
+<P>If we can't rely on known patterns, we'll have to go back to first
+principles.  In Chapter 8 you learned to write recursive procedures by
+looking for a smaller, similar subproblem within the problem we're trying to
+solve.  What is a smaller subproblem that's similar to finding the subsets
+of <CODE>lights</CODE>?  How about finding the subsets of its butfirst?  This idea
+is the same one that's often worked for us before.  So imagine that we've
+already found all the subsets of <CODE>ights</CODE>.
+
+<P>Some of the subsets of <CODE>lights</CODE> <EM>are</EM> subsets of <CODE>ights</CODE>.
+Which ones aren't?  The missing subsets are the ones that start with the
+letter L.  What's more, the other letters in such a subset form a subset of
+<CODE>ights</CODE>.  For example, the word <CODE>lits</CODE> consists of the letter L
+followed by <CODE>its</CODE>, which is a subset of <CODE>ights</CODE>.
+
+<P><PRE>to subsets :word                   ;; incomplete
+local &quot;smaller
+make &quot;smaller subsets butfirst :word
+output sentence :smaller (map [word (first :word) ?] :smaller)
+end
+</PRE>
+
+<P>This procedure reflects the idea I've just tried to explain.  The
+subsets of a given word can be divided into two groups: the subsets of its
+butfirst, and those same subsets with the first letter of the word stuck on
+the front.
+
+<P>The procedure lacks a base case.  It's tempting to say that if the input is
+an empty word, then the output should be an empty sentence.  But that isn't
+quite right, because every word is a subset of itself, so in particular the
+empty word is a subset (the only subset) of itself.  We must output a
+sentence containing an empty word.  That's a little tricky to type, but we
+can represent a quoted empty word as <CODE>&quot;</CODE> and so a sentence containing an
+empty word is <CODE>(sentence &quot;)</CODE>.
+
+<P><PRE>to subsets :word
+if emptyp :word [output (sentence &quot;)]
+local &quot;smaller
+make &quot;smaller subsets butfirst :word
+output sentence :smaller (map [word (first :word) ?] :smaller)
+end
+</PRE>
+
+<P>Why did I use the local variable <CODE>smaller</CODE> and a <CODE>make</CODE>
+instruction?  It wasn't strictly necessary; I could have said
+
+<P><PRE>output sentence (subsets butfirst :word) ~
+                (map [word (first :word) ?] (subsets butfirst :word))
+</PRE>
+
+<P>The trouble is that this would have told Logo to compute the
+smaller similar subproblem twice instead of just once.  It may seem that
+that would make the program take twice as long, but in fact the problem is
+worse than that, because each smaller subproblem has a smaller subproblem of
+its own, and those would be computed four times--twice for each of the two
+computations of the first smaller subproblem!  As in the case of the
+Fibonacci sequence we studied earlier, avoiding the duplicated computation
+makes an enormous difference.
+
+<P>Problems like this one, in which the size of the output grows extremely
+quickly for small changes in the size of the input, tend to be harder to
+program than most.  Here are a couple of examples.  Like <CODE>subsets</CODE>, each
+of these has a fairly short procedure definition that hides a very complex
+computation.
+
+<P>&raquo;On telephone dials, most digits have letters associated
+with them.  In the United States, for example, the digit 5 is associated with
+the letters J, K, and L.  (The correspondence is somewhat different in
+other countries.)  You can use these letters to spell out words to make your
+phone number easier to remember.  For example, many years ago I had the
+phone number 492-6824, which spells I-WANT-BH.  Write a procedure that takes
+a number as its input, and outputs a sentence of all the words that that
+number can represent.  You may want to test the program using numbers of
+fewer than seven digits!
+
+<P>&raquo;In the game of Boggle<SUP><SMALL>TM</SMALL></SUP>, the object is to find words by connecting
+neighboring letters in a four by four array of letters.  For example, the
+array
+
+<P><PRE>BEZO
+URND
+AKAJ
+WEOE
+</PRE>
+
+<P>contains the words ZEBRA, DONE, and DARK, but not RADAR, because
+each letter can be used only once.  Write a predicate procedure that takes a
+word and an array of letters (in the form of a sentence with one word for
+each row) as inputs, and outputs <CODE>true</CODE> if and only if the given word
+can be found in the given array.
+
+<P><PRE>? <U>print findword &quot;zebra [bezo urnd akaj weoe]</U>
+true
+? <U>print findword &quot;radar [bezo urnd akaj weoe]</U>
+false
+</PRE>
+
+<P>
+<H2>A Word about Tail Recursion</H2>
+
+<P>What I want to talk about in the rest of this chapter isn't really
+very important, so you can skip it if you want.  But <EM>some</EM>
+people think it's important, so this is for those people.
+
+<P>Every procedure invocation takes up a certain amount of computer
+memory, while the procedure remains active, to hold things like local
+variables.  Since a recursive procedure can invoke itself many times,
+recursion is a fairly &quot;expensive&quot; technique to allow in a
+programming language.  It turns out that if the only
+recursion step in a procedure is the very last thing the procedure
+does, the interpreter can handle that procedure in a special way that
+uses memory more efficiently.  You can then use as many levels of
+recursive invocation as you want without running out of space.
+Such a procedure is called <EM>tail recursive.</EM>
+It doesn't make any difference to you as a programmer; it's just a
+matter of what's happening inside the Logo interpreter.
+
+<P>A tail recursive command is very easy to recognize; the last
+instruction is an invocation of the same procedure.  Tail recursive
+commands are quite common; here are a couple of examples we've seen
+before.
+
+<P><PRE>to one.per.line :thing
+if emptyp :thing [stop]
+print first :thing
+one.per.line butfirst :thing
+end
+
+to poly :size :angle
+forward :size
+right :angle
+poly :size :angle
+end
+</PRE>
+
+<P>The thing is, many people are confused about what constitutes a tail
+recursive operation.  It <EM>isn't</EM> one that is invoked
+recursively on the last instruction line!  Instead, the rule is that
+the recursive invocation must be used <EM>directly</EM> as the input
+to <CODE>output</CODE>, not as part of a larger computation.  For example,
+this is a tail recursive operation:
+
+<P><PRE>to lookup :word :dictionary
+if emptyp :dictionary [output &quot;]
+if equalp :word first first :dictionary [output last first :dictionary]
+output lookup :word butfirst :dictionary
+end
+</PRE>
+
+<P>But this is <EM>not</EM> tail recursive:
+
+<P><PRE>to length :thing
+if emptyp :thing [output 0]
+output 1+length butfirst :thing
+end
+</PRE>
+
+<P>It's that <CODE>1+</CODE> that makes the difference.
+
+<P>It's sometimes possible to change a nontail recursive operation into
+a tail recursive one by tricky programming.  For example, look again
+at <CODE>fact</CODE>:
+
+<P><PRE>to fact :n
+if :n=0 [output 1]
+output :n * fact :n-1
+end
+</PRE>
+
+<P>This is not tail recursive because the input to the final
+<CODE>output</CODE> comes from the multiplication, not directly from <CODE>
+fact</CODE>.  But here is a tail recursive version:
+
+<P><PRE>to fact :n
+output fact1 :n 1
+end
+
+to fact1 :n :product
+if :n=0 [output :product]
+output fact1 (:n-1) (:n*:product)
+end
+</PRE>
+
+<P>Indeed, this version can, in principle, compute the
+factorial of larger numbers than the simpler version without running
+out of memory.  In practice, though, the largest number that most
+computers can understand is less than the factorial of 70, and any
+computer will allow 70 levels of recursion without difficulty.  In
+fact, not every Logo interpreter bothers to recognize
+tail recursive operations.  It's a small point; I only mention it
+because some people <EM>both</EM> make a big fuss about tail recursion
+<EM>and</EM> misunderstand what it means!
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch10/v1ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch12/v1ch12.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch11/v1ch11.html b/js/games/nluqo.github.io/~bh/v1ch11/v1ch11.html
new file mode 100644
index 0000000..9e8fd44
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch11/v1ch11.html
@@ -0,0 +1,1237 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 11: Recursive Operations</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Recursive Operations</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch11.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch10/v1ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch12/v1ch12.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+So far, the recursive procedures we've seen have all been commands, not
+operations.  Remember that an operation is a procedure that has an <EM>
+output</EM> rather than an <EM>effect.</EM> In other words, an operation
+computes some value that is then used as the input to some other procedure.
+In the instruction
+
+<P>
+<PRE>print first &quot;hello
+</PRE>
+
+
+<P><CODE>print</CODE> is a command, because it does something: It prints its
+input (whatever that may be) on the screen.  But <CODE>first</CODE> is an
+operation, because it computes something: With the word <CODE>hello</CODE> as
+input, it computes the letter <CODE>h</CODE>, which is the first letter of
+the input.
+
+<P><H2>A Simple Substitution Cipher</H2>
+
+<P>
+
+
+I'm going to write a program to produce secret messages.  The program
+will take an ordinary English sentence (in the form of a Logo list)
+and change each letter into some other letter.  For example, we can
+decide to replace the letter E with the letter J every time it occurs
+in the message.  The program will need two inputs: the message
+and the correspondence between letters.  The latter will take the form
+of a word of 26 letters, representing the coded versions of the 26
+letters in alphabetical order.  For example, the word
+
+<P>
+<PRE>qwertyuiopasdfghjklzxcvbnm
+</PRE>
+
+
+<P>indicates that the letter A in the original text will be represented
+by Q in the secret version, B will be represented by W, and so on.
+
+<P>In order to encipher a sentence, we must go through it word by word.
+(Strictly speaking, what we're doing is called a <EM>cipher</EM> rather
+than a <EM>code</EM> because the latter is a system that substitutes
+something for an entire word at a time, like a foreign language,
+whereas we're substituting for a single letter at a time, like the
+Elvish alphabet in <EM>The Lord of the Rings.</EM>) In order to encipher
+a word we must go through it letter by letter.  So I'll begin by
+writing a procedure to translate a single letter to its coded form.
+
+<P>
+<PRE>to codelet :letter :code
+output codematch :letter &quot;abcdefghijklmnopqrstuvwxyz :code
+end
+
+to codematch :letter :clear :code
+if emptyp :clear [output :letter]        ; punctuation character
+if equalp :letter first :clear [output first :code]
+output codematch :letter butfirst :clear butfirst :code
+end
+</PRE>
+
+<P><CODE>Codelet</CODE> is an operation that takes two inputs.  The first input
+must be a single-letter word, and the second must be a code, that is,
+a word with the 26 letters of the alphabet rearranged.  The output
+from <CODE>codelet</CODE> is the enciphered version of the input letter.  (If
+the first input is a character other than a letter, such as a punctuation
+mark, then the output is the same as that input.)
+
+<P><CODE>Codelet</CODE> itself is a very simple procedure.  It simply passes its
+two inputs on to a subprocedure, <CODE>codematch</CODE>, along with another
+input that is the alphabet in normal order.  The idea is that <CODE>
+codematch</CODE> will compare the input letter to each of the letters in the
+regular alphabet; when it finds a match, it will output the letter in
+the corresponding position in the scrambled alphabet.  Be sure you
+understand the use of the <CODE>output</CODE> command in <CODE>codelet</CODE>; it
+says that whatever <CODE>codematch</CODE> outputs should become the output
+from <CODE>codelet</CODE> as well.
+
+<P>The job of <CODE>codematch</CODE> is to go through the alphabet, letter by
+letter, looking for the particular letter we're trying to encode.  The
+primary tool that Logo provides for looking at a single letter in a
+word is <CODE>first</CODE>.  So <CODE>codematch</CODE> uses <CODE>first</CODE> to compare
+its input letter with the first letter of the input alphabet:
+
+<P><PRE>if equalp :letter first :clear ...
+</PRE>
+
+<P>If the first input to <CODE>codematch</CODE> is the letter A, then <CODE>
+equalp</CODE> will output <CODE>true</CODE> and <CODE>codematch</CODE> will output the
+first letter of <CODE>:code</CODE> (Q in the example I gave earlier).  But
+suppose the first input isn't an A.  Then <CODE>codematch</CODE> has to solve
+a smaller subproblem: Find the input letter in the remaining 25
+letters of the alphabet.  Finding a smaller, similar subproblem means
+that we can use a recursive solution.  <CODE>Codematch</CODE> invokes itself,
+but for its second and third inputs it uses the <CODE>butfirst</CODE>s of the
+original inputs because the first letter of the alphabet (A) and its
+corresponding coded letter (Q) have already been rejected.
+
+<P>
+Here is a trace of an example of <CODE>codematch</CODE> at work, to help you
+understand what's going on.
+
+<P><PRE>codematch &quot;e &quot;abcdefghijklmnopqrstuvwxyz &quot;qwertyuiopasdfghjklzxcvbnm
+   codematch &quot;e &quot;bcdefghijklmnopqrstuvwxyz &quot;wertyuiopasdfghjklzxcvbnm
+      codematch &quot;e &quot;cdefghijklmnopqrstuvwxyz &quot;ertyuiopasdfghjklzxcvbnm
+         codematch &quot;e &quot;defghijklmnopqrstuvwxyz &quot;rtyuiopasdfghjklzxcvbnm
+            codematch &quot;e &quot;efghijklmnopqrstuvwxyz &quot;tyuiopasdfghjklzxcvbnm
+            codematch outputs &quot;t
+         codematch outputs &quot;t
+      codematch outputs &quot;t
+   codematch outputs &quot;t
+codematch outputs &quot;t
+</PRE>
+
+<P>The fifth, innermost invocation of <CODE>codematch</CODE> succeeds
+at matching its first input (the letter E) with the first letter of
+its second input.  That invocation therefore outputs the first letter
+of its third input, the letter T.  Each of the higher-level
+invocations outputs the same thing in turn.
+
+<P>The pattern of doing something to the <CODE>first</CODE> of an input, then
+invoking the same procedure recursively with the <CODE>butfirst</CODE> as the
+new input, is a familiar one from recursive commands.  If we only
+wanted to translate single letters, we could have written <CODE>
+codelet</CODE> and <CODE>codematch</CODE> as commands, like this:
+
+<P><PRE>to codelet :letter :code                        ;; command version
+codematch :letter &quot;abcdefghijklmnopqrstuvwxyz :code
+end
+
+to codematch :letter :clear :code               ;; command version
+if emptyp :clear [print :letter stop]
+if equalp :letter first :clear [print first :code stop]
+codematch :letter butfirst :clear butfirst :code
+end
+</PRE>
+
+<P>You may find this version a little easier to understand,
+because it's more like the recursive commands we've examined in the
+past.  But making <CODE>codelet</CODE> an operation is a much stronger
+technique.  Instead of being required to print the computed code
+letter, we can make that letter part of a larger computation.  In
+fact, we have to do that in order to encipher a complete word.  Each
+word is made up of letters, and the task of <CODE>codeword</CODE> will be to go
+through a word, letter by letter, using each letter as input to <CODE>
+codelet</CODE>.  The letters output by <CODE>codelet</CODE> must be combined into a
+new word, which will be the output from <CODE>codeword</CODE>.
+
+<P>We could write <CODE>codeword</CODE> using the higher order function <CODE>map</CODE>:
+
+<P><PRE>to codeword :word :code             ;; using higher order function
+output map [codelet ? :code] :word
+end
+</PRE>
+
+<P>But to help you learn how to write recursive operations, in this
+chapter we'll avoid higher order functions.  (As it turns out, <CODE>map</CODE>
+itself is a recursive operation, written using the techniques of this
+chapter.)
+
+<P>Recall the structure of a previous procedure that went through a word
+letter by letter:
+
+<P><PRE>to one.per.line :word
+if emptyp :word [stop]
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>Compare this to the structure of the recursive <CODE>codeword</CODE>:
+
+<P><PRE>to codeword :word :code
+if emptyp :word [output &quot;]
+output word (codelet first :word :code) (codeword butfirst :word :code)
+end
+</PRE>
+
+<P>There are many similarities. Both procedures have a
+stop rule that tests for an empty input.  Both do something to the <CODE>
+first</CODE> of the input (either <CODE>print</CODE> or <CODE>codelet</CODE>), and each
+invokes itself recursively on the <CODE>butfirst</CODE> of the input.
+(<CODE>Codeword</CODE> has an extra input for the code letters, but that
+doesn't really change the structure of the procedure.  If that's
+confusing to you, you could temporarily pretend that <CODE>code</CODE> is a
+global variable and eliminate it as an input.)
+
+<P>The differences have to do with the fact that <CODE>codeword</CODE> is an
+operation instead of a command.  The stop rule invokes <CODE>output</CODE>
+rather than <CODE>stop</CODE> and must therefore specify what is to be
+output when the stop condition is met.  (In this case, when the input
+word is empty, the output is also the empty word.) But the main thing
+is that the action step (the <CODE>print</CODE> in <CODE>one.per.line</CODE>) and
+the recursive call (the <CODE>one.per.line</CODE> instruction) are not two
+separate instructions in <CODE>codeword</CODE>.  Instead they are
+expressions (the two in parentheses) that are combined by <CODE>word</CODE>
+to form the complete output.  Here's a picture:
+
+<P><CENTER><IMG SRC="codelet.gif" ALT="figure: codelet"></CENTER>
+
+<P>Remember what you learned in Chapter 2 about the way in
+which Logo instructions are evaluated.  Consider the <CODE>output</CODE>
+instruction in <CODE>codeword</CODE>.  Before <CODE>output</CODE> can be invoked,
+Logo must evaluate its input.  That input comes from the output from
+<CODE>word</CODE>.  Before <CODE>word</CODE> can be invoked, Logo must evaluate <EM>
+its</EM> inputs.  There are two of them.  The first input to <CODE>word</CODE>
+is the expression
+
+<P><PRE>codelet first :word :code
+</PRE>
+
+<P>This expression computes the coded version of the first
+letter of the word we want to translate.  The second input to <CODE>
+word</CODE> is the expression
+
+<P><PRE>codeword butfirst :word :code
+</PRE>
+
+<P>This expression invokes <CODE>codeword</CODE> recursively, solving
+the smaller subproblem of translating a smaller word, one with the
+first letter removed.  When both of these computations are complete,
+<CODE>word</CODE> can combine the results to form the translation of the
+complete input word.  Then <CODE>output</CODE> can output that result.
+
+<P>Here's an example of how <CODE>codeword</CODE> is used.
+
+<P><PRE>? <U>print codeword &quot;hello &quot;qwertyuiopasdfghjklzxcvbnm</U>
+itssg
+</PRE>
+
+<P>Notice that we have to say <CODE>print</CODE>, not just start the
+instruction line with <CODE>codeword</CODE>; a complete instruction
+must have a command.  Suppose you had the idea of saving all that
+typing by changing the <CODE>output</CODE> instruction in <CODE>codeword</CODE> to a
+<CODE>print</CODE>.  What would happen?  The answer is that <CODE>codeword</CODE>
+wouldn't be able to invoke itself recursively as an operation.  (If
+you don't understand that, try it!) Also, it's generally a better idea
+to write an operation when you have to compute some result.
+That way, you aren't committed to printing the result; you can use it
+as part of a larger computation.
+
+<P>For example, right now I'd like to write a procedure <CODE>code</CODE> that
+translates an entire sentence into code.  Like <CODE>codeword</CODE>, it will
+be an operation with two inputs, the second of which is a code (a word
+of 26 scrambled letters).  The difference is that the first input will
+be a sentence instead of a word and the output will also be a sentence.
+
+<P>&raquo;Write <CODE>code</CODE> using a higher order function.  Then see if you can
+write an equivalent recursive version.
+
+<P>Just as <CODE>codeword</CODE> works by splitting up the word into letters,
+<CODE>code</CODE> will work by splitting up a sentence into words.  The
+structure will be very similar.  Here it is:
+
+<P><PRE>to code :sent :code
+if emptyp :sent [output []]
+output sentence (codeword first :sent :code) (code butfirst :sent :code)
+end
+</PRE>
+
+<P>The main differences are that <CODE>code</CODE> outputs the empty
+list, instead of the empty word, for an empty input and that <CODE>sentence</CODE>
+is used as the combining operation instead of <CODE>word</CODE>.
+Here's an example of <CODE>code</CODE> at work.
+
+<P><PRE>? <U>print code [meet at midnight, under the dock.] ~</U>
+             <U>&quot;qwertyuiopasdfghjklzxcvbnm</U>
+dttz qz dorfouiz, xfrtk zit rgea.
+</PRE>
+
+<P><H2>More Procedure Patterns</H2>
+
+<P><CODE>Code</CODE> and <CODE>codeword</CODE> are examples of a very common pattern in
+recursive operations:  They are like using <CODE>map</CODE> with a particular
+function.  Here is the pattern that they fit.
+
+<P><PRE><A NAME="map">to <U>procedure</U> :input</A>
+if emptyp :input [output :input]
+output <U>combiner</U> (<U>something</U> first :input) (<U>procedure</U> butfirst :input)
+end
+</PRE>
+
+<P>The <EM>combiner</EM> is often <CODE>word</CODE> or <CODE>sentence</CODE>,
+although others are possible.  In fact, when working with lists, the
+most common combiner is not <CODE>sentence</CODE> but another operation that
+we haven't used before, <CODE>fput</CODE> (First PUT).  <CODE>Fput</CODE> takes two
+inputs.  The first can be any datum, but the second must be a list.
+The output from <CODE>fput</CODE> is a list that is equal to the second
+input, except that the first input is inserted as a new first member.
+In other words the output from <CODE>fput</CODE> is a list whose <CODE>first</CODE>
+is the first input and whose <CODE>butfirst</CODE> is the second input.
+
+<P><PRE>? <U>show sentence [hee hee hee] [ho ho ho]</U>
+[hee hee hee ho ho ho]
+? <U>show fput [hee hee hee] [ho ho ho]</U>
+[[hee hee hee] ho ho ho]
+</PRE>
+
+<P><CODE>Fput</CODE> is a good combiner because the two things we want to
+combine are the <CODE>first</CODE> and the <CODE>butfirst</CODE> of a list, except that
+each has been modified in some way.  But the <EM>shape</EM> of the final
+result (a list of so many members) should be the same as the shape of the
+input, and that's what <CODE>fput</CODE> ensures.
+
+<P>When you're working with sentences--lists of words rather than lists
+of lists--<CODE>sentence</CODE> and <CODE>fput</CODE> will work equally well
+as the combiner.  For example, <CODE>code</CODE> could have been written
+using <CODE>fput</CODE> instead of <CODE>sentence</CODE>.  Not until some of
+the later examples, when we use tree-structured lists,
+will the choice really be important.
+
+<P>&raquo;<CODE>Fput</CODE> is actually a &quot;more primitive&quot; operation than <CODE>sentence</CODE>,
+in the sense that the Logo interpreter actually constructs lists by
+doing the internal equivalent of <CODE>fput</CODE>.  As an exercise, you
+might like to try writing your own versions of list combiners like
+<CODE>sentence</CODE> and <CODE>list</CODE> out of <CODE>fput</CODE>, <CODE>first</CODE>, and
+<CODE>butfirst</CODE>.  You should also be able to write <CODE>last</CODE> and <CODE>
+butlast</CODE> using only those three building blocks.  (Actually you'll
+also need <CODE>if</CODE>, <CODE>emptyp</CODE>, <CODE>wordp</CODE>, and <CODE>output</CODE>,
+but you won't need any other primitive combiners.)  Give your versions
+distinct names, such as <CODE>my.sentence</CODE>, since Logo won't let you
+redefine primitives.
+
+<P>&raquo;Another &quot;less primitive&quot; primitive is <CODE>lput</CODE>, an operation that
+takes two inputs.  As for <CODE>fput</CODE>, the first can be any datum but
+the second must be a list.  The output from <CODE>lput</CODE> is a list whose
+<CODE>last</CODE> is the first input and whose <CODE>butlast</CODE> is the second.
+Write <CODE>my-lput</CODE> using <CODE>fput</CODE> and the selectors <CODE>first</CODE> and
+<CODE>butfirst</CODE>.
+
+<P>It may seem silly to learn a recursive pattern for problems that can be
+solved using <CODE>map</CODE>.  But sometimes we run into a problem that's <EM>
+almost</EM> like a <CODE>map</CODE>, but not exactly.  For example, how would you
+write the following operation:
+
+<P><PRE>? <U>show pairup [now here after glow worm hole]</U>
+[nowhere hereafter afterglow glowworm wormhole]
+</PRE>
+
+<P>Instead of the usual <CODE>map</CODE>-like situation in which each word
+in the result is a function of one word of the input, this time each word of
+the result is a function of <EM>two</EM> neighboring input words.  <CODE>Map</CODE>
+won't solve this problem, but the <CODE>map</CODE>-like recursion pattern will.
+
+<P><PRE>to pairup :words
+if emptyp butfirst :words [output []]
+output (sentence (word first :words first butfirst :words)
+                 (pairup butfirst :words))
+end
+</PRE>
+
+<P>Compare this procedure with the <A HREF="v1ch11.html#map">general pattern</A>;
+look for similarities and differences.
+
+<P>&raquo;One difference is in the test for the base case.  Why is the version
+in <CODE>pairup</CODE> different from the one in the pattern?
+
+<P>&raquo;Write an operation that interchanges pairs of words in a sentence,
+like this:
+
+<P><PRE>? <U>show swap [the rain in spain stays mainly on the plain]</U>
+[rain the spain in mainly stays the on plain]
+</PRE>
+
+<P>Don't forget to think about that leftover word in an odd-length
+sentence!
+
+<P><H2>The <CODE>Filter</CODE> Pattern</H2>
+
+<P>In Chapter 5 we saw this example:
+
+<P><PRE>? <U>show filter &quot;numberp [76 trombones, 4 calling birds, and 8 days]</U>
+[76 4 8]
+</PRE>
+
+<P>To write a recursive operation <CODE>numbers</CODE> with the same result,
+we must handle three cases: the base case, in which the input is empty; the
+case in which the first word of the input is a number; and the case in which
+the first word isn't a number.
+
+<P><PRE>to numbers :sent
+if emptyp :sent [output []]
+if numberp first :sent ~
+   [output sentence first :sent numbers butfirst :sent]
+output numbers butfirst :sent
+end
+
+? <U>show numbers [76 trombones, 4 calling birds, and 8 days]</U>
+[76 4 8]
+</PRE>
+
+<P>Here's the general <CODE>filter</CODE> pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output :input]
+if <U>predicate</U> first :input ~
+   [output <U>combiner</U> first :input <U>procedure</U> butfirst :input]
+output <U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>As in the case of the <CODE>map</CODE> pattern, this one is most useful
+in situations for which the higher order function won't quite do.
+
+<P>&raquo;Write an operation that looks for two equal words next to each other
+in a sentence, and outputs a sentence with one of them removed:
+
+<P><PRE>? <U>show unique [Paris in the the spring is a joy joy to behold.]</U>
+Paris in the spring is a joy to behold.
+</PRE>
+
+<P>What does your procedure do with <EM>three</EM> consecutive
+equal words?  What should it do?
+
+<P><H2>The <CODE>Reduce</CODE> Pattern</H2>
+
+<P>Other examples from Chapter 5 introduced the <CODE>reduce</CODE> higher
+order function.
+
+<P><PRE>? <U>show reduce &quot;word [C S L S]</U>
+CSLS
+? <U>show reduce &quot;sum [3 4 5 6]</U>
+18
+</PRE>
+
+<P>Recursive operations equivalent to these examples are very much
+like the <CODE>map</CODE> pattern except that the combiner function is applied to
+the members of the input directly, rather than to some function of the
+members of the input:
+
+<P><PRE>to wordify :sentence
+if emptyp :sentence [output &quot;]
+output word (first :sentence) (wordify butfirst :sentence)
+end
+
+to addup :numbers
+if emptyp :numbers [output 0]
+output sum (first :numbers) (addup butfirst :numbers)
+end
+</PRE>
+
+<P>What are the differences between these two examples?  There are two: the
+combiner used and the value output in the base case.  Here is the pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output <U>identity</U>]
+output <U>combiner</U> (first :input) (<U>procedure</U> butfirst :input)
+end
+</PRE>
+
+<P>The identity in this pattern depends on the combiner; it's
+the value that, when combined with something else, gives that something else
+unchanged as the result.  Thus, zero is the identity for <CODE>sum</CODE>, but the
+identity for <CODE>product</CODE> would be one.
+
+<P>&raquo;Write a <CODE>multiply</CODE> operation that takes a list of numbers as its
+input and returns the product of all the numbers.
+
+<P>&raquo;You can make your <CODE>multiply</CODE> procedure more efficient, in some
+situations, by having it notice when one of the numbers in the input list is
+zero.  In that case, you can output zero as the overall result without
+looking at any more numbers.  The resulting procedure will, in a sense,
+combine aspects of the <CODE>filter</CODE> and <CODE>reduce</CODE> patterns.
+
+<P><CODE>Addup</CODE> is one example of an important sub-category of <CODE>reduce</CODE>-like
+procedures in which the &quot;combining&quot;
+operation is arithmetic, usually <CODE>sum</CODE>.  The simplest example is a
+procedure equivalent to the primitive <CODE>count</CODE>, which counts the
+members of a list or the letters of a word:
+
+<P><PRE>to length :thing
+if emptyp :thing [output 0]
+output 1+length butfirst :thing
+end
+</PRE>
+
+<P>In this procedure, as usual, we can see the reduction of a
+problem to a smaller subproblem.  The length of any word or list is
+one more than the length of its <CODE>butfirst</CODE>.  Eventually this
+process of shortening the input will reduce it to emptiness; the
+length of an empty word or list is zero.
+
+<P>Although <CODE>count</CODE> is a primitive, there are more complicated
+counting situations in which not every member should be counted.  For
+example, here is a procedure to count the number of vowels in a word:
+
+<P><PRE>to vowelcount :word
+if emptyp :word [output 0]
+if vowelp first :word [output 1+vowelcount butfirst :word]
+output vowelcount butfirst :word
+end
+
+to vowelp :letter
+output memberp :letter [a e i o u]
+end
+</PRE>
+
+<P>(Actually, my predicate <CODE>vowelp</CODE> is somewhat
+oversimplified.  The letter Y is a vowel in certain positions in the
+word, and even some other letters can sometimes play the role of a
+vowel.  But this isn't a book on linguistics!)
+
+<P>You can see the similarities between <CODE>vowelcount</CODE> and <CODE>
+length</CODE>.  The difference is that, in effect, <CODE>length</CODE> uses a
+predicate that is always <CODE>true</CODE>, so it always carries out the
+instruction inside the <CODE>if</CODE>.  Here's the pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output 0]
+if <U>predicate</U> first :input [output 1+<U>procedure</U> butfirst :input]
+output <U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>&raquo;Try writing a procedure that will accept as
+input a word like <CODE>21,997.00</CODE> and output the number of digits
+before the decimal point.  (In this case the correct output is 5.)
+Don't assume that there <EM>is</EM> a decimal point; your program
+shouldn't blow up no matter what word it gets as input.
+
+<P>&raquo;Another counting problem is to output the position of a member in a
+list.  This operation is the inverse to <CODE>item</CODE>, a Logo primitive,
+which outputs the member at a given position
+number.  What I'm asking you to write is <CODE>index</CODE>, which works like
+this:
+
+<P><PRE>? <U>print index &quot;seven [four score and seven years ago]</U>
+4
+? <U>print index &quot;v &quot;aardvark</U>
+5
+</PRE>
+
+<P><H2>The <CODE>Find</CODE> Pattern</H2>
+
+<P>
+ A variation of the <CODE>filter</CODE> pattern
+is for <EM>selection</EM> operations: ones that pick a single element out of a
+list.  The general idea looks like this:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [output :input]
+if <U>predicate</U> first :input [output <U>something</U> first :input]
+output <U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>There will generally be extra inputs to these procedures, to
+indicate the basis for selection.  For example, here is a program
+that translates English words into French.
+
+<P><PRE>to french :word
+output lookup :word [[book livre] [computer ordinateur] [window fenetre]]
+end
+
+to lookup :word :dictionary
+if emptyp :dictionary [output &quot;]
+if equalp :word first first :dictionary [output last first :dictionary]
+output lookup :word butfirst :dictionary
+end
+
+? <U>print french &quot;computer</U>
+ordinateur
+</PRE>
+
+<P>The expression
+
+<P><PRE>first first :dictionary
+</PRE>
+
+<P>selects the English word from the first word-pair in the list.
+Similarly,
+
+<P><PRE>last first :dictionary
+</PRE>
+
+<P>selects the French version of the same word.  (Of course, in
+reality, the word list in <CODE>french</CODE> would be much longer than the
+three word-pairs I've shown.)
+
+<P><CODE>Codematch</CODE>, in the example that started this chapter, follows
+the same pattern of selection.  The only difference is that there are
+two inputs that are <CODE>butfirst</CODE>ed in parallel.
+
+<P>
+Somewhat similar to the selection pattern is one for a recursive
+<EM>predicate;</EM> the difference is that instead of
+
+<P><PRE>output <U>something</U> first :input
+</PRE>
+
+<P>for a successful match, the procedure simply says
+
+<P><PRE>output &quot;true
+</PRE>
+
+<P>in that case.  This pattern is followed by predicates that
+ask a question like &quot;Does any member of the input do X?&quot; For
+example, suppose that instead of counting the vowels in a word, we
+just want to know whether or not there is a vowel.  Then we're asking
+the question &quot;Is any letter in this word a vowel?&quot; Here's how to
+find out.
+
+<P><PRE>to hasvowelp :word
+if emptyp :word [output &quot;false]
+if vowelp first :word [output &quot;true]
+output hasvowelp butfirst :word
+end
+</PRE>
+
+<P>A more realistic example is also somewhat more cluttered with extra
+inputs and sometimes extra end tests.  Here's a procedure that takes
+two words as input.  It outputs <CODE>true</CODE> if the first word comes
+before the second in the dictionary.
+
+<P><PRE>to sort.beforep :word1 :word2
+if emptyp :word1 [output &quot;true]
+if emptyp :word2 [output &quot;false]
+if (ascii first :word1) &lt; (ascii first :word2) [output &quot;true]
+if (ascii first :word1) &gt; (ascii first :word2) [output &quot;false]
+output sort.beforep butfirst :word1 butfirst :word2
+end
+</PRE>
+
+<P>The procedure will end on one of the <CODE>emptyp</CODE> tests if
+one of the input words is the beginning of the other, like <CODE>now</CODE>
+and <CODE>nowhere</CODE>.  Otherwise, the procedure ends when two letters are
+unequal.  The recursion step is followed when the beginning letters
+are equal.  (The operation <CODE>ascii</CODE> takes a one-character word as
+input, and outputs the numeric value for that character in the computer's
+coding system, which is called the American Standard Code for Information
+Interchange.)
+
+<P>A combination of the translation kind of operation and the selection
+kind is an operation that selects not one but several members of the
+input.  For example, you sometimes want to examine the words in a
+sentence in various ways but have trouble because the sentence
+includes punctuation as part of some words.  But the punctuation isn't
+<EM>really</EM> part of the word.  In Chapter 4, for instance, I
+defined a predicate <CODE>about.computersp</CODE> and gave this example of
+its use:
+
+<P><PRE>? <U>print about.computersp [this book is about programming]</U>
+true
+</PRE>
+
+<P>But if the example were part of a larger program, carrying
+on a conversation with a person, the person would probably have ended
+the sentence with a period.  The last word would then have been
+<CODE>programming.</CODE> (including the period).  That word, which is
+different from <CODE>programming</CODE> without the period, isn't in the
+procedure's list of relevant words, so it would have output <CODE>false</CODE>.
+The solution is to write a procedure that strips the punctuation from
+each word of a sentence.  Of course that's a straightforward case of
+the translation pattern, applying a subprocedure to each word of the
+sentence:
+
+<P><PRE>to strip :sent
+if emptyp :sent [output []]
+output sentence (strip.word first :sent) (strip butfirst :sent)
+end
+</PRE>
+
+<P><CODE>Strip.word</CODE>, though, is more interesting.  It must
+select only the letters from a word.
+
+<P><PRE>to strip.word :word
+if emptyp :word [output &quot;]
+if letterp first :word ~
+   [output word (first :word) (strip.word butfirst :word)]
+output strip.word butfirst :word
+end
+
+to letterp :char
+output or (inrangep (ascii :char) (ascii &quot;A) (ascii &quot;Z)) ~
+          (inrangep (ascii :char) (ascii &quot;a) (ascii &quot;z))
+end
+
+to inrangep :this :low :high
+output and (:this &gt; (:low-1)) (:this &lt; (:high+1))
+end
+</PRE>
+
+<P><CODE>Strip.word</CODE> is like the translation pattern in the use
+of the combining operation <CODE>word</CODE> in the middle instruction line.
+But it's also like the selection pattern in that there are two
+different choices of output, depending on the result of the predicate
+<CODE>letterp</CODE>.
+
+<P>&raquo;You might want to rewrite <CODE>about.computersp</CODE> so that it uses <CODE>
+strip</CODE>.  Consider an initialization procedure.
+
+<P>
+
+<H2>Numerical Operations: The <CODE>Cascade</CODE> Pattern</H2>
+
+<P>Certain mathematical functions are defined in terms of recursive
+calculations.  It used to be that computers were used <EM>only</EM> for
+numerical computation.  They're now much more versatile, as you've
+already seen, but sometimes the old numerical work is still important.
+
+<P>The classic example in this category is the <EM>factorial</EM>
+function.  The factorial of a positive integer is the product of all
+the integers from 1 up to that number.  The factorial of 5 is
+represented as
+5!
+so
+<P><CENTER>5! = 1 &times; 2 &times; 3 &times; 4 &times; 5</CENTER>
+
+<P>We can use <CODE>cascade</CODE> to carry out this computation:
+
+<P><PRE>to fact :n                       ;; cascade version
+output cascade :n [? * #] 1
+end
+
+? <U>print fact 5</U>
+120
+</PRE>
+
+<P>In this example I'm using a feature of <CODE>cascade</CODE> that we
+haven't seen before.  The template (the second input to <CODE>cascade</CODE>) may
+include a number sign (<CODE>#</CODE>) character, which represents the number of
+times the template has been repeated.  That is, it represents 1 the first
+time, 2 the second time, and so on.
+
+<P>Here is a recursive version of <CODE>fact</CODE> that takes one input, a
+positive integer, and outputs the factorial function of that number.
+The input can also be zero; the rule is that 0!=1.
+
+<P><PRE>to fact :n
+if :n=0 [output 1]
+output :n * fact :n-1
+end
+</PRE>
+
+<P>This procedure works because
+
+<P><CENTER>5! = 5 &times; 4!</CENTER>
+
+<P>That's
+another version of reducing a problem to a smaller subproblem.
+
+<P>&raquo;Chapter 5 gives the following example:
+
+<P><PRE>to power :base :exponent
+output cascade :exponent [? * :base] 1
+end
+</PRE>
+
+<P>Write a version of <CODE>power</CODE> using recursion instead of using
+<CODE>cascade</CODE>.
+
+<P>Another classic example, slightly more complicated, is the
+Fibonacci sequence.  Each number
+in the sequence is the sum of the two previous
+numbers; the first two numbers are 1.  So the sequence starts
+
+<P><CENTER>1, 1, 2, 3, 4, 5, 13, &hellip;</CENTER>
+
+<P>A formal definition of the sequence looks
+like this:
+<P><CENTER><IMG SRC="fibonacci.gif" ALT="math display"></CENTER>
+<P>Here's an operation <CODE>fib</CODE>
+that takes a number <EM>n</EM> as input and outputs <EM>F<SUB>n</SUB></EM>.
+
+<P><PRE>to fib :n
+if :n&lt;2 [output 1]
+output (fib :n-1)+(fib :n-2)
+end
+</PRE>
+
+<P>That procedure will work, but it's quite seriously
+inefficient.  The problem is that it ends up computing the same
+numbers over and over again.  To see why, here's a trace of what
+happens when you ask for <CODE>fib 4</CODE>:
+
+<P><PRE>fib 4
+  fib 3
+    fib 2
+      fib 1
+      fib 0
+    fib 1
+  fib 2
+    fib 1
+    fib 0
+</PRE>
+
+<P>Do you see the problem?  <CODE>fib 2</CODE> is computed twice, once
+because <CODE>fib 4</CODE> needs it directly and once because <CODE>fib 4</CODE>
+needs <CODE>fib 3</CODE> and <CODE>fib 3</CODE> needs <CODE>fib 2</CODE>.  Similarly, <CODE>
+fib 1</CODE> is computed three times.  As the input to <CODE>fib</CODE> gets
+bigger, this problem gets worse and worse.
+
+<P>It turns out that a much faster way to handle this problem is to
+compute a <EM>list</EM> of all the Fibonacci numbers up to the one we
+want.  Then each computation can take advantage of the work already
+done.  Here's what I mean:
+
+<P><PRE>to fiblist :n
+if :n&lt;2 [output [1 1]]
+output newfib fiblist :n-1
+end
+
+to newfib :list
+output fput (sum first :list first butfirst :list) :list
+end
+
+? <U>print fiblist 5</U>
+8 5 3 2 1 1
+</PRE>
+
+<P>We can then define a faster <CODE>fib</CODE> in terms of <CODE>
+fiblist</CODE>:
+
+<P><PRE>to fib :n
+output first fiblist :n
+end
+</PRE>
+
+<P>Convince yourself that the two versions of <CODE>fib</CODE> give
+the same outputs but that the second version is much faster.  I'm
+purposely not going through a detailed explanation of this example;
+you should use the analytical techniques you learned in Chapter 8.
+What problem is <CODE>fiblist</CODE> trying to solve?  What is the smaller
+subproblem?
+
+<P>The hallmark of numerical recursion is something like <CODE>:n-1</CODE> in the
+recursion step.  Sometimes this kind of recursion is combined with the <CODE>
+butfirst</CODE> style we've seen in most of the earlier examples.  Logo has a
+primitive operation called <CODE>item</CODE>, which takes two inputs.  The first is
+a positive integer, and the second is a list.  The output from <CODE>item</CODE> is
+the <EM>n</EM>th member of the list if the first input is <EM>n.</EM> (Earlier
+I suggested that you write <CODE>index</CODE>, the opposite of <CODE>item</CODE>.) If Logo
+didn't include <CODE>item</CODE>, here's how you could write it:
+
+<P><PRE>to item :n :list
+if equalp :n 1 [output first :list]
+output item :n-1 butfirst :list
+end
+</PRE>
+
+<P><H2>Pig Latin</H2>
+
+<P>When I was growing up, every kid learned a not-very-secret &quot;secret&quot;
+language called Pig Latin.  When I became a teacher, I was surprised
+to find out that kids apparently didn't learn it any more.  But
+more recently it seems to have come back into vogue.  Translating
+a sentence into Pig Latin is an interesting programming problem, so
+I'm going to teach it to you.
+
+<P>Here's how it works.  For each word take any consonants that are at
+the beginning (up to the first vowel) and move them to the
+end.  Then add &quot;ay&quot; at the end.  So &quot;hello&quot; becomes &quot;ellohay&quot;;
+&quot;through&quot; becomes &quot;oughthray&quot;; &quot;aardvark&quot; just becomes
+&quot;aardvarkay.&quot; (Pig Latin is meant to be spoken, not written.  You're
+supposed to practice so that you can do it and understand it really
+fast.)
+
+<P>By now you can write in your sleep the operation <CODE>
+piglatin</CODE>, which
+takes a sentence and outputs its translation into Pig Latin by going
+through the sentence applying a subprocedure <CODE>plword</CODE> to each
+word.  (It's just like <CODE>code</CODE>, only different.)
+It's <CODE>plword</CODE> that is the tricky part.  The stop rule is
+pretty straightforward:
+
+<P><PRE>if vowelp first :word [output word :word &quot;ay]
+</PRE>
+
+<P>If the first letter <EM>isn't</EM> a vowel, what we want to
+do is move that letter to the end and try again.  Here's the complete
+procedure.
+
+<P><PRE>to plword :word
+if vowelp first :word [output word :word &quot;ay]
+output plword word butfirst :word first :word
+end
+</PRE>
+
+<P>What makes this tricky is that the recursion step doesn't
+seem to make the problem smaller.  The word is still the same length
+after we move the first letter to the end.  This would look more like
+all the other examples if the recursion step were
+
+<P><PRE>output plword butfirst :word
+</PRE>
+
+<P>That would make the procedure easier to understand.
+Unfortunately it would also give the wrong answer.  What you have to
+see is that there <EM>is</EM> something that is getting smaller about
+the word, namely the &quot;distance&quot; from the beginning of the word to
+the first vowel.  Trace through a couple of examples to clarify this
+for yourself.
+
+<P>By the way, this will work better if you modify <CODE>vowelp</CODE> (which we
+defined earlier) so that <CODE>y</CODE> is considered a vowel.  You'll then
+get the wrong answer for a few strange words like <CODE>yarn</CODE>, but on
+the other hand, if you consider <CODE>y</CODE> a consonant, you'll get no
+answer at all for words like <CODE>try</CODE> in which <CODE>y</CODE> is the only
+vowel!  (Try it.  Do you understand what goes wrong?)
+
+<P>&raquo;Some people learned a different dialect of Pig Latin.  According to
+them, if the word starts with a vowel in the first place, you should
+add &quot;way&quot; at the end instead of just &quot;ay.&quot; Modify <CODE>plword</CODE> so
+that it speaks that dialect.  (I think the idea is that some words
+simply sound better with that rule.) Hint: You'll want an
+initialization procedure.
+
+<P>&raquo;The top-level procedure <CODE>piglatin</CODE>, which you wrote yourself, is a
+good candidate for careful thought about punctuation.  You don't want
+to see
+
+<P><PRE>? <U>print piglatin [what is he doing?]</U>
+atwhay isway ehay oing?day
+</PRE>
+
+<P>A good first attempt would be to modify <CODE>piglatin</CODE> to
+use <CODE>strip</CODE>, to get rid of the punctuation altogether.  But even
+better would be to remove the punctuation from each word, translate it
+to Pig Latin, then put the punctuation back!  Then we could get
+
+<P><PRE>atwhay isway ehay oingday?
+</PRE>
+
+<P>That's the right thing to do for punctuation at the end of a
+word, like a period or a comma.  On the other hand, the apostrophe
+inside a word like <CODE>isn't</CODE> should be treated just like a letter.
+
+<P>The project I'm proposing to you is a pretty tricky one.  Here's a
+hint.  Write an operation <CODE>endpunct</CODE> that takes a word as input
+and outputs a <EM>list</EM> of two words, first the &quot;real&quot; word
+full of letters, then any punctuation that might be at the end.  (The
+second word will be empty if there is no such punctuation.) Then your
+new <CODE>plword</CODE> can be an initialization procedure that invokes a
+subprocedure with <CODE>endpunct</CODE>'s output as its input.
+
+<P><H2>A Mini-project: Spelling Numbers</H2>
+
+<P>Write a procedure <CODE>number.name</CODE> that takes a positive integer
+input, and outputs a sentence containing that number spelled out in words:
+
+<P><PRE>? <U>print number.name 5513345</U>
+five million five hundred thirteen thousand three hundred forty five
+? <U>print number.name (fact 20)</U>
+two quintillion four hundred thirty two quadrillion nine hundred two
+trillion eight billion one hundred seventy six million six hundred
+forty thousand
+</PRE>
+
+<P>There are some special cases you will need to consider:
+
+<UL>
+<LI>Numbers in which some particular digit is zero.
+<LI>Numbers like 1,000,529 in which an entire group of three digits is zero.
+<LI>Numbers in the teens.
+</UL>
+
+
+<P>Here are two hints.  First, split the number into groups of three digits,
+going from right to left.  Also, use the sentence
+
+<P><PRE>[thousand million billion trillion quadrillion quintillion
+ sextillion septillion octillion nonillion decillion]
+</PRE>
+
+<P>You can write this bottom-up or top-down.  To work bottom-up, pick a subtask
+and get that working before you tackle the overall structure of the
+problem.  For example, write a procedure that returns the word <CODE>fifteen</CODE>
+given the argument <CODE>15</CODE>.
+
+<P>To work top-down, start by writing <CODE>number.name</CODE>, freely assuming the
+existence of whatever helper procedures you like.  You can begin debugging
+by writing <EM>stub</EM> procedures that fit into the overall program but
+don't really do their job correctly.  For example, as an intermediate stage
+you might end up with a program that works like this:
+
+<P><PRE>? <U>print number.name 1428425</U>           ;; intermediate version
+1 million 428 thousand 425
+</PRE>
+
+<P><H2>Advanced Recursion: <CODE>Subsets</CODE></H2>
+
+<P>We've seen that recursive operations can do the same jobs as higher order
+functions, and we've seen that recursive operations can do jobs that are
+similar to the higher order function patterns but not quite the same.  Now
+we'll see that recursive operations can do jobs that are quite outside the
+bounds of any of the higher order functions in Chapter 5.
+
+<P>I'd like to write an operation <CODE>subsets</CODE> that takes a word as input.
+Its output will be a sentence containing all the words that can be made
+using letters from the input word, in the same order, but not necessarily
+using all of them.  For example, the word <CODE>lit</CODE> counts as a subset of
+the word <CODE>lights</CODE>, but <CODE>hit</CODE> doesn't count because the letters are
+in the wrong order.  (Of course the procedure won't know which words are
+real English words, so <CODE>iht</CODE>, which has the same letters as <CODE>hit</CODE>
+in the right order, <EM>does</EM> count.)
+
+<P>&raquo;How many subsets does <CODE>lights</CODE> have?  Write them all down if
+you're not sure.  (Or perhaps you'd prefer to count the subsets of a shorter
+word, such as <CODE>word</CODE>, instead.)
+
+<P>A problem that follows the <CODE>map</CODE> pattern is one in which the size of the
+output is the same as the size of the input, because each member of the
+input gives rise to one member of the output.  A problem that follows the
+<CODE>filter</CODE> pattern is one in which the output is smaller than the input,
+because only some of the members are selected.  And the <CODE>reduce</CODE> pattern
+collapses all of the members of the input into one single result.  The
+<CODE>subsets</CODE> problem is quite different from any of these; its output will
+be much <EM>larger</EM> than its input.
+
+<P>If we can't rely on known patterns, we'll have to go back to first
+principles.  In Chapter 8 you learned to write recursive procedures by
+looking for a smaller, similar subproblem within the problem we're trying to
+solve.  What is a smaller subproblem that's similar to finding the subsets
+of <CODE>lights</CODE>?  How about finding the subsets of its butfirst?  This idea
+is the same one that's often worked for us before.  So imagine that we've
+already found all the subsets of <CODE>ights</CODE>.
+
+<P>Some of the subsets of <CODE>lights</CODE> <EM>are</EM> subsets of <CODE>ights</CODE>.
+Which ones aren't?  The missing subsets are the ones that start with the
+letter L.  What's more, the other letters in such a subset form a subset of
+<CODE>ights</CODE>.  For example, the word <CODE>lits</CODE> consists of the letter L
+followed by <CODE>its</CODE>, which is a subset of <CODE>ights</CODE>.
+
+<P><PRE>to subsets :word                   ;; incomplete
+local &quot;smaller
+make &quot;smaller subsets butfirst :word
+output sentence :smaller (map [word (first :word) ?] :smaller)
+end
+</PRE>
+
+<P>This procedure reflects the idea I've just tried to explain.  The
+subsets of a given word can be divided into two groups: the subsets of its
+butfirst, and those same subsets with the first letter of the word stuck on
+the front.
+
+<P>The procedure lacks a base case.  It's tempting to say that if the input is
+an empty word, then the output should be an empty sentence.  But that isn't
+quite right, because every word is a subset of itself, so in particular the
+empty word is a subset (the only subset) of itself.  We must output a
+sentence containing an empty word.  That's a little tricky to type, but we
+can represent a quoted empty word as <CODE>&quot;</CODE> and so a sentence containing an
+empty word is <CODE>(sentence &quot;)</CODE>.
+
+<P><PRE>to subsets :word
+if emptyp :word [output (sentence &quot;)]
+local &quot;smaller
+make &quot;smaller subsets butfirst :word
+output sentence :smaller (map [word (first :word) ?] :smaller)
+end
+</PRE>
+
+<P>Why did I use the local variable <CODE>smaller</CODE> and a <CODE>make</CODE>
+instruction?  It wasn't strictly necessary; I could have said
+
+<P><PRE>output sentence (subsets butfirst :word) ~
+                (map [word (first :word) ?] (subsets butfirst :word))
+</PRE>
+
+<P>The trouble is that this would have told Logo to compute the
+smaller similar subproblem twice instead of just once.  It may seem that
+that would make the program take twice as long, but in fact the problem is
+worse than that, because each smaller subproblem has a smaller subproblem of
+its own, and those would be computed four times--twice for each of the two
+computations of the first smaller subproblem!  As in the case of the
+Fibonacci sequence we studied earlier, avoiding the duplicated computation
+makes an enormous difference.
+
+<P>Problems like this one, in which the size of the output grows extremely
+quickly for small changes in the size of the input, tend to be harder to
+program than most.  Here are a couple of examples.  Like <CODE>subsets</CODE>, each
+of these has a fairly short procedure definition that hides a very complex
+computation.
+
+<P>&raquo;On telephone dials, most digits have letters associated
+with them.  In the United States, for example, the digit 5 is associated with
+the letters J, K, and L.  (The correspondence is somewhat different in
+other countries.)  You can use these letters to spell out words to make your
+phone number easier to remember.  For example, many years ago I had the
+phone number 492-6824, which spells I-WANT-BH.  Write a procedure that takes
+a number as its input, and outputs a sentence of all the words that that
+number can represent.  You may want to test the program using numbers of
+fewer than seven digits!
+
+<P>&raquo;In the game of Boggle<SUP><SMALL>TM</SMALL></SUP>, the object is to find words by connecting
+neighboring letters in a four by four array of letters.  For example, the
+array
+
+<P><PRE>BEZO
+URND
+AKAJ
+WEOE
+</PRE>
+
+<P>contains the words ZEBRA, DONE, and DARK, but not RADAR, because
+each letter can be used only once.  Write a predicate procedure that takes a
+word and an array of letters (in the form of a sentence with one word for
+each row) as inputs, and outputs <CODE>true</CODE> if and only if the given word
+can be found in the given array.
+
+<P><PRE>? <U>print findword &quot;zebra [bezo urnd akaj weoe]</U>
+true
+? <U>print findword &quot;radar [bezo urnd akaj weoe]</U>
+false
+</PRE>
+
+<P>
+<H2>A Word about Tail Recursion</H2>
+
+<P>What I want to talk about in the rest of this chapter isn't really
+very important, so you can skip it if you want.  But <EM>some</EM>
+people think it's important, so this is for those people.
+
+<P>Every procedure invocation takes up a certain amount of computer
+memory, while the procedure remains active, to hold things like local
+variables.  Since a recursive procedure can invoke itself many times,
+recursion is a fairly &quot;expensive&quot; technique to allow in a
+programming language.  It turns out that if the only
+recursion step in a procedure is the very last thing the procedure
+does, the interpreter can handle that procedure in a special way that
+uses memory more efficiently.  You can then use as many levels of
+recursive invocation as you want without running out of space.
+Such a procedure is called <EM>tail recursive.</EM>
+It doesn't make any difference to you as a programmer; it's just a
+matter of what's happening inside the Logo interpreter.
+
+<P>A tail recursive command is very easy to recognize; the last
+instruction is an invocation of the same procedure.  Tail recursive
+commands are quite common; here are a couple of examples we've seen
+before.
+
+<P><PRE>to one.per.line :thing
+if emptyp :thing [stop]
+print first :thing
+one.per.line butfirst :thing
+end
+
+to poly :size :angle
+forward :size
+right :angle
+poly :size :angle
+end
+</PRE>
+
+<P>The thing is, many people are confused about what constitutes a tail
+recursive operation.  It <EM>isn't</EM> one that is invoked
+recursively on the last instruction line!  Instead, the rule is that
+the recursive invocation must be used <EM>directly</EM> as the input
+to <CODE>output</CODE>, not as part of a larger computation.  For example,
+this is a tail recursive operation:
+
+<P><PRE>to lookup :word :dictionary
+if emptyp :dictionary [output &quot;]
+if equalp :word first first :dictionary [output last first :dictionary]
+output lookup :word butfirst :dictionary
+end
+</PRE>
+
+<P>But this is <EM>not</EM> tail recursive:
+
+<P><PRE>to length :thing
+if emptyp :thing [output 0]
+output 1+length butfirst :thing
+end
+</PRE>
+
+<P>It's that <CODE>1+</CODE> that makes the difference.
+
+<P>It's sometimes possible to change a nontail recursive operation into
+a tail recursive one by tricky programming.  For example, look again
+at <CODE>fact</CODE>:
+
+<P><PRE>to fact :n
+if :n=0 [output 1]
+output :n * fact :n-1
+end
+</PRE>
+
+<P>This is not tail recursive because the input to the final
+<CODE>output</CODE> comes from the multiplication, not directly from <CODE>
+fact</CODE>.  But here is a tail recursive version:
+
+<P><PRE>to fact :n
+output fact1 :n 1
+end
+
+to fact1 :n :product
+if :n=0 [output :product]
+output fact1 (:n-1) (:n*:product)
+end
+</PRE>
+
+<P>Indeed, this version can, in principle, compute the
+factorial of larger numbers than the simpler version without running
+out of memory.  In practice, though, the largest number that most
+computers can understand is less than the factorial of 70, and any
+computer will allow 70 levels of recursion without difficulty.  In
+fact, not every Logo interpreter bothers to recognize
+tail recursive operations.  It's a small point; I only mention it
+because some people <EM>both</EM> make a big fuss about tail recursion
+<EM>and</EM> misunderstand what it means!
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch10/v1ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch12/v1ch12.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch12/compose.gif b/js/games/nluqo.github.io/~bh/v1ch12/compose.gif
new file mode 100644
index 0000000..29c7a7d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch12/compose.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch12/playfair.html b/js/games/nluqo.github.io/~bh/v1ch12/playfair.html
new file mode 100644
index 0000000..827b018
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch12/playfair.html
@@ -0,0 +1,715 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 12: Example: Playfair Cipher</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Playfair Cipher</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch12.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch11/v1ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch13/v1ch13.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch12/playfair.lg"><CODE>playfair</CODE></A>
+
+<P>This project investigates a cipher that is somewhat more complicated than
+the simple substitution cipher of Chapter 11.  In the
+Playfair cipher, there is not a single translation of each letter
+of the alphabet; that is, you don't just decide that every B will be turned
+into an F.  Instead, <EM>pairs</EM> of letters are translated into other
+pairs of letters.
+
+<P>Here is how it works.  To start, pick a <EM>keyword</EM> that does not
+contain any letter more than once.  For example, I'll pick the word
+<CODE>keyword</CODE>.  Now write the letters of that word in the first squares of a
+five by five matrix:
+
+<P>
+<CENTER><TABLE rules="all" frame="box" border="3" noshade>
+<TR><TD align="center" height=30 width=30>K
+<TD align="center" height=30 width=30>E
+<TD align="center" height=30 width=30>Y
+<TD align="center" height=30 width=30>W
+<TD align="center" height=30 width=30>O
+<TR><TD align="center" height=30 width=30>R
+<TD align="center" height=30 width=30>D
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TR><TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TR><TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TR><TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+</TABLE></CENTER>
+
+<P>Then finish filling up the remaining squares of the matrix with the
+remaining letters of the alphabet, in alphabetical order.  Since there are
+26 letters and only 25 squares, we assign I and J to the same square.
+
+<P>
+<CENTER><TABLE rules="all" frame="box" border="3" noshade>
+<TR><TD align="center" height=30 width=30>K
+<TD align="center" height=30 width=30>E
+<TD align="center" height=30 width=30>Y
+<TD align="center" height=30 width=30>W
+<TD align="center" height=30 width=30>O
+<TR><TD align="center" height=30 width=30>R
+<TD align="center" height=30 width=30>D
+<TD align="center" height=30 width=30>A
+<TD align="center" height=30 width=30>B
+<TD align="center" height=30 width=30>C
+<TR><TD align="center" height=30 width=30>F
+<TD align="center" height=30 width=30>G
+<TD align="center" height=30 width=30>H
+<TD align="center" height=30 width=30>I J
+<TD align="center" height=30 width=30>L
+<TR><TD align="center" height=30 width=30>M
+<TD align="center" height=30 width=30>N
+<TD align="center" height=30 width=30>P
+<TD align="center" height=30 width=30>Q
+<TD align="center" height=30 width=30>S
+<TR><TD align="center" height=30 width=30>T
+<TD align="center" height=30 width=30>U
+<TD align="center" height=30 width=30>V
+<TD align="center" height=30 width=30>X
+<TD align="center" height=30 width=30>Z
+</TABLE></CENTER>
+
+<P>(Actually, when choosing the keyword, besides making sure that no
+letter appears twice you must make sure that I and J do not both appear.
+For example, <CODE>juice</CODE> wouldn't do as a keyword.)
+
+<P>To encipher a message, divide it into pairs of letters.  Pay no attention to
+punctuation or to spaces between words.  For example, the sentence &quot;Why,
+don't you?&quot; becomes
+
+<P><PRE>WH YD ON TY OU
+</PRE>
+
+<P>Now, find each pair of letters in the matrix you made earlier.
+Most pairs of letters will form two corners of a smaller square or rectangle
+within the matrix.  For example, in my matrix, the first pair of letters
+(<CODE>WH</CODE>) are at two corners of a two-by-three rectangle also containing
+<CODE>Y</CODE>, <CODE>A</CODE>, <CODE>B</CODE>, and <CODE>IJ</CODE>.  The enciphering of the pair
+<CODE>WH</CODE> is the pair at the two other corners of this rectangle, namely <CODE>
+YI</CODE>.  (I could also have chosen <CODE>YJ</CODE>, in this case.)  It's important to
+be consistent about the order of the new pair: the one that comes first is
+the one on the same <EM>row</EM> as the first of the original pair.  In this
+case, <CODE>Y</CODE> is on the same row as <CODE>W</CODE>.  We can continue to translate
+the remaining pairs of letters in the same way, ending up with
+
+<P><PRE>YI EA ES VK EZ
+</PRE>
+
+<P>Notice that the letter <CODE>Y</CODE> turned into <CODE>E</CODE> in the second
+pair of letters, but it turned into <CODE>K</CODE> in the fourth pair.
+
+<P>Part of the strategy for keeping a code secret is to hide even the <EM>
+kind</EM> of code being used.  Pairs of letters, to a cryptographer, are a
+dead giveaway that a Playfair cipher was used, so it's traditional to insert
+irrelevant spacing and punctuation in the actual written version of the
+message, like this:
+
+<P><PRE>Yie ae, svkez.
+</PRE>
+
+<P>Of course the recipient of the message, knowing how the message
+was encoded, ignores this spacing and punctuation.
+
+<P>As an illustration of some of the special cases that complicate this scheme,
+consider the message, &quot;Come to the window.&quot; First we divide it up into
+pairs:
+
+<P><PRE>CO ME TO TH EW IN DO W
+</PRE>
+
+<P>The first problem is that the message has an odd number of
+letters.  To solve this problem we simply add an extra letter at the end,
+generally <CODE>Q</CODE>.  In this example, the final <CODE>W</CODE> becomes a pair <CODE>
+WQ</CODE>.
+
+<P>If you look up the first pair of letters, <CODE>CO</CODE>, in my matrix, you'll
+find that they do not determine a rectangle, because they are in the same
+column.  (Strictly speaking, they <EM>do</EM> determine a one-by-two
+rectangle, but the two diagonals are the same, so that <CODE>CO</CODE> would be
+encoded as <CODE>CO</CODE> if we followed the usual rule.)  For two letters in the
+same column, the rule is to replace each letter by the one below it, so <CODE>
+CO</CODE> becomes <CODE>LC</CODE>.  (If one of the letters is at the end of the column,
+it is replaced by the top letter.  So, for example, <CODE>OZ</CODE> would become
+<CODE>CO</CODE>.)  Similarly, for two letters in the same row, each is replaced by
+the letter to its right.  We can now translate the entire message:
+
+<P><PRE>LC NK ZK VF YO GQ CE BX
+</PRE>
+
+<P>The pair <CODE>EW</CODE>, on a single row, has become <CODE>YO</CODE>; the final
+pair <CODE>WQ</CODE>, on a single column, has become <CODE>BX</CODE>.
+
+<P>The final exceptional case is the one in which the same letter appears twice
+in a pair.  For example, the phrase &quot;the big wheel&quot; divides into
+
+<P><PRE>TH EB IG WH EE LQ
+</PRE>
+
+<P>The pair <CODE>EE</CODE> is treated specially.  It could be translated
+into <CODE>YY</CODE> (treating it as two letters in the same row) or into <CODE>DD</CODE>
+(if you think of it as two letters in the same column).  Instead, though,
+the rule is to break up the pair by inserting a <CODE>Q</CODE> between the two
+letters.  This changes all the pairings after that one in the message.  The
+new version is
+
+<P><PRE>TH EB IG WH EQ EL
+</PRE>
+
+<P>This version can now be translated into
+
+<P><PRE>VF WD LH YJ WN OG
+</PRE>
+
+<P>(Notice that I chose to translate <CODE>WH</CODE> into <CODE>YJ</CODE> instead of into
+<CODE>YI</CODE>.  You should use some of each when coding a message.  A cipher with
+no <CODE>J</CODE>s at all, or one with a simple pattern of <CODE>I</CODE> and <CODE>J</CODE>
+alternating, is another giveaway that the Playfair cipher was used.)
+
+<P>What about the frequencies of letters in a Playfair-encoded message?  You
+can't simply say that the most common letters are likely to represent <CODE>
+E</CODE> or <CODE>T</CODE> or <CODE>A</CODE>, because a letter doesn't represent a single letter
+that way.  But it is still possible to say that a common letter in the coded
+version is likely to <EM>be on the same row</EM> as one of the frequent
+letters in English.  For example, here is a well-known text
+in Playfair-coded form:
+
+<P><PRE>ZK DW KC SE XM ZK DW VF RV LQ VF WN ED MZ LW QE GY VF KD XF MP WC GO
+BF MU GY QF UG ZK NZ IM GK FK GY ZS GQ LN DP AB BM CK OQ KL EZ KF DH
+YK ZN LK FK EU YK FK KZ RY YD FT PC HD GQ MZ CP YD KL KF EZ CI ON DP
+AC WK QS SY QL UN DU RU GY NS
+</PRE>
+
+<P>The most commonly occurring letters in this coded text are <CODE>K</CODE>
+(19 times), <CODE>F</CODE> (12 times), <CODE>D</CODE> and <CODE>Z</CODE> (tied at 11), and <CODE>
+Y</CODE> (10 times).  <CODE>K</CODE> is on the same row as both <CODE>E</CODE> and <CODE>O</CODE>, and
+can also represent <CODE>T</CODE> in the same-column case.  <CODE>Y</CODE> is also on the
+same row.  <CODE>F</CODE> can represent <CODE>I</CODE> (especially in the common pair <CODE>
+IT</CODE>); <CODE>D</CODE> can represent <CODE>A</CODE>; <CODE>Z</CODE> can represent <CODE>T</CODE>.  Of all
+the letters that might represent <CODE>E</CODE>, why should <CODE>K</CODE> and <CODE>Y</CODE> be
+the popular ones?  The answer is that they have common letters in their
+columns as well.  In order for <CODE>W</CODE> to represent <CODE>E</CODE>, for example,
+the other letter of the (cleartext) pair must be <CODE>B</CODE>, <CODE>I</CODE>, <CODE>J</CODE>,
+<CODE>Q</CODE>, or <CODE>X</CODE>.  Of these, only <CODE>I</CODE> is particularly common, and
+<CODE>Q</CODE> and <CODE>X</CODE> are downright rare.
+
+<P>If you were trying to break a Playfair cipher, one approach you might take
+would be to count the frequencies of <EM>pairs</EM> of letters.  For example,
+in the message above, the only pairs that occur more than twice are <CODE>
+GY</CODE>, four times, and <CODE>FK</CODE>, <CODE>VF</CODE>, and <CODE>ZK</CODE>, three times each.
+It's a good guess that each of these corresponds to a commonly occurring
+pair of letters in English text.  In fact, as it turns out, <CODE>GY</CODE>
+corresponds to <CODE>HE</CODE>, which is not only a word by itself but also part of
+<CODE>the</CODE>, <CODE>them</CODE>, <CODE>then</CODE>, and so on.  <CODE>VF</CODE> corresponds to <CODE>
+TH</CODE>, an extremely common pair; <CODE>ZK</CODE> corresponds to <CODE>TO</CODE>, which is
+again a word in itself as well as a constituent of many other words.  The
+other pair that occurs three times in the text, <CODE>FK</CODE>, corresponds to
+<CODE>RT</CODE>.  This is not such a common English pair, although it does come up
+in words like <CODE>worth</CODE>.  But it turns out that in the particular sample
+text I'm using, this pair of letters comes up mostly as parts of two words,
+as in the combination <CODE>or to</CODE>.
+
+<P>
+
+<P>If you want to know more about how to break a Playfair cipher, you can see
+an example in <EM>Have His Carcase</EM><EM>,</EM> a mystery novel by
+Dorothy L. Sayers.  In this project, I'm less ambitious: the
+program merely enciphers a message, given the keyword and the cleartext as
+inputs.  The first input to <CODE>playfair</CODE> must be a word, the keyword.  The
+second input must be a list of words, the text.  The keyword must meet the
+criterion of no duplicated letters, and the cleartext input must contain
+only words of letters, without punctuation.  Here is an example:
+
+<P><PRE>? <U>print playfair &quot;keyword [come to the window]</U>
+lcnkzkvfyogqcebx
+</PRE>
+
+<P><CODE>Playfair</CODE> is an operation whose output is a single word
+containing the enciphered letters of the original text.
+
+<P><H2>Data Redundancy</H2>
+
+
+
+<P>In writing this program, the first question I thought about was how to
+represent in a Logo program the matrix of letters used in the coding
+process.  The most natural structure is a two-dimensional array--that is,
+an array with five members, each of which is an array of five
+letters.<SUP>*</SUP> So if
+the keyword is <CODE>keyword</CODE> then the program will, in effect, do this:
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In the tic-tac-toe program, I used a one-dimensional array
+to represent the board, even though a tic-tac-toe board is drawn in two
+dimensions.  I could have used an array of three arrays of three numbers
+each, but that wouldn't really have fit with the way that program labels the
+board.  In tic-tac-toe, the nine squares are named 1 to 9.  You ask to move
+in square 8, for example, not in row 3, column 2.  But in the Playfair
+program, the row and column numbers are going to be very important.</SMALL></BLOCKQUOTE></SMALL><P><PRE>make &quot;matrix {{k e y w o} {r d a b c} {f g h i l}
+              {m n p q s} {t u v x z}}
+</PRE>
+
+<P>The position of a letter in the matrix is represented as a list of
+two numbers, the row and the column.  The Berkeley Logo procedure library
+includes an operation <CODE>mditem</CODE> that takes such a list as an input, along
+with a multi-dimensional array, and outputs the desired member:
+
+<P><PRE>to letter :rowcol
+output mditem :rowcol :matrix
+end
+</PRE>
+
+<P>(The actual procedure listed at the end of this section includes a
+slight complication to deal with the case of <CODE>I</CODE> and <CODE>J</CODE>, but that's
+not important right now.)
+
+<P>The Playfair process goes like this:  The program is given two letters.  It
+finds each letter in the matrix, determines each letter's row and column
+numbers, then rearranges those numbers to make new row and column numbers,
+then looks in the matrix again to find the corresponding letters.  For
+example, suppose we are given the keyword <CODE>keyword</CODE> and the letters <CODE>
+T</CODE> and <CODE>A</CODE>.  The first step is to translate <CODE>T</CODE> into the row and
+column list <CODE>[5 1]</CODE>, and to translate <CODE>A</CODE> into <CODE>[2 3]</CODE>.  Then
+the program must combine the row of one letter with the column of the other,
+giving the new lists <CODE>[5 3]</CODE> and <CODE>[2 1]</CODE>.  Finally, the <CODE>letter</CODE>
+procedure shown above will find the letters <CODE>V</CODE> and <CODE>R</CODE> in the
+matrix.
+
+<P><CODE>Letter</CODE> handles the last step of the translation process, but what about
+the first step?  We need the inverse operation of <CODE>letter</CODE>, one that
+takes a letter as input and provides its row and column.
+
+<P>It would be possible to write a <CODE>row.and.column</CODE> procedure that would
+examine each letter in the matrix until it located the desired letter.  But
+that procedure would be both slow and complicated.  Instead, I decided
+to keep <EM>redundant</EM> information about the matrix in the form of 26
+variables, one for each letter, each of which contains the coordinates of
+that letter.  That is, the variables take the form
+
+<P><PRE>make &quot;a [2 3]
+make &quot;w [1 4]
+make &quot;z [5 5]
+</PRE>
+
+<P>and so on.  (As in the case of the variable named <CODE>matrix</CODE>
+above, these <CODE>make</CODE> instructions are just illustrative.  The actual
+program does not contain explicit data for this particular matrix, using
+this particular keyword!)
+
+<P>The letter variables contain the same information as the variable <CODE>
+matrix</CODE>.  Strictly speaking, they are not needed.  By creating the redundant
+variables for the letters, I've made a <EM>space/time tradeoff;</EM>
+the extra variables take up room in the computer's memory, but the program
+runs faster.  One of the recurring concerns of a professional programmer is
+deciding which way to make such tradeoffs.  It depends on the amounts of
+space and time required and the amounts available.  In this case, the extra
+space required is really quite small, compared to the memory of a modern
+computer, so the decision is clear-cut.  For larger programming problems it
+is sometimes harder to decide.
+
+<P>
+<H2>Composition of Functions</H2>
+
+
+
+<P>Earlier I showed a <CODE>make</CODE> instruction to put a particular coding matrix
+into the variable <CODE>matrix</CODE>.  How does the program create a matrix for
+any keyword given as input?  Here are two of the relevant procedures:
+
+<P><PRE>to playfair :keyword :message
+local [matrix a b c d e f g h i j k l m n o p q r s t u v w x y z]
+<U>setkeyword jtoi lowercase :keyword</U>
+output encode (reduce &quot;word :message)
+end
+
+to setkeyword :word
+<U>make &quot;matrix reorder word :word (remove :word &quot;abcdefghiklmnopqrstuvwxyz)</U>
+make &quot;j :i
+end
+</PRE>
+
+<P>
+<P>The keyword that is provided by the user as one of the inputs to the
+toplevel procedure <CODE>playfair</CODE> goes through several stages as it is
+transformed into a matrix.
+
+<P>
+<CENTER><IMG SRC="compose.gif" ALT="figure: compose"></CENTER>
+
+
+<P>This <EM>dataflow</EM> diagram is very similar to a plumbing
+diagram from Chapter 2 turned on its side.  The format is a little
+different to put somewhat more emphasis on the inputs and outputs, so you
+can follow the &quot;flow&quot; of information through the arrows.
+
+<P>In English, here's what the diagram tells us.  The keyword given by the user
+must be converted to lower case letters.  (I could have chosen to use capital
+letters instead; the goal is to have some uniform convention.)  If the
+keyword happens to contain a <CODE>J</CODE>, it will be represented within the
+program as an <CODE>I</CODE> instead.  Then, to make the matrix, we combine (with
+<CODE>word</CODE>) two words: the keyword and the result of removing the keyword's
+letters from the alphabet (leaving out <CODE>J</CODE>).  Finally, that combined
+word must be rearranged into a five-by-five square.
+
+<P>
+The advantage of a view such as this one is that each of the small boxes
+in the diagram has a relatively simple task.  Indeed, <CODE>lowercase</CODE> and
+<CODE>word</CODE> are primitive operations in Berkeley Logo.  <CODE>Jtoi</CODE> is trivial:
+
+<P><PRE>to jtoi :word
+output map [ifelse equalp ? &quot;j [&quot;i] [?]] :word
+end
+</PRE>
+
+<P><CODE>Remove</CODE> is a straightforward recursive operation that
+outputs the result of removing one group of letters from another group
+of letters.
+
+<P><PRE>to remove :letters :string
+if emptyp :string [output &quot;]
+if memberp first :string :letters [output remove :letters bf :string]
+output word first :string remove :letters bf :string
+end
+</PRE>
+
+<P>The job of <CODE>reorder</CODE> is somewhat messier.  It must keep track
+of what row and column it's up to, so <CODE>reorder</CODE> is just an
+initialization procedure for the recursive helper <CODE>reorder1</CODE> that does
+the real work.  <CODE>Reorder</CODE> also creates the two-dimensional Logo array
+to provide another input to its helper procedure.
+
+<P><PRE>to reorder :string
+output reorder1 :string (mdarray [5 5]) 1 1
+end
+
+to reorder1 :string :array :row :column
+if :row=6 [output :array]
+if :column=6 [output reorder1 :string :array :row+1 1]
+mdsetitem (list :row :column) :array first :string
+make first :string (list :row :column)
+output reorder1 (butfirst :string) :array :row :column+1
+end
+</PRE>
+
+<P>If I were filling in a matrix by hand, instead of writing a computer 
+program, I'd use a very different approach.  I'd handle one letter at a
+time.  First I'd go through the keyword a letter at a time, stuffing each
+letter into the next available slot in the matrix.  (If necessary, I'd
+convert upper to lower case and <CODE>J</CODE> to <CODE>I</CODE> in the process.)
+Then I'd go through the alphabet a letter at a time, saying &quot;If this letter
+isn't in the keyword, then stuff it into the matrix.&quot;
+
+<P> 
+Many people would find it natural to use that same technique in writing
+a computer program, also:
+
+<P><PRE>to playfair :keyword :message           ;; sequential version
+local [matrix a b c d e f g h i j k l m n o p q r s t u v w x y z]
+<U>make &quot;matrix mdarray [5 5]</U>
+<U>local [row column]</U>
+<U>make &quot;row 1</U>
+<U>make &quot;column 1</U>
+<U>foreach :keyword [stuff jtoi lowercase ?]</U>
+<U>foreach &quot;abcdefghiklmnopqrstuvwxyz ~</U>
+        <U>[if not memberp ? jtoi :keyword [stuff ?]]</U>
+make &quot;j :i
+output encode (reduce &quot;word :message)
+end
+
+to stuff :letter
+mdsetitem (list :row :column) :matrix :letter
+make :letter (list :row :column)
+make &quot;column :column+1
+if :column=6 [make &quot;row :row+1  make &quot;column 1]
+end
+</PRE>
+
+<P>In this version, the first <CODE>foreach</CODE> instruction handles the letters of
+the keyword.  The second <CODE>foreach</CODE> instruction handles the rest of the
+alphabet.  The <CODE>not memberp</CODE> test handles the removal of the keyword
+letters from the alphabet.
+
+<P>My intent in writing this alternate version was to model my idea of how the
+problem would be solved without a computer, processing one letter at a time.
+So, for example, in the template
+
+<P><PRE>[stuff jtoi lowercase ?]
+</PRE>
+
+<P>it's worth noting that the operations <CODE>jtoi</CODE> and <CODE>
+lowercase</CODE> are being applied to single-letter inputs, even though those
+operations were designed to accept words of any length as a unit.  I
+cheated, though, by applying <CODE>jtoi</CODE> to the entire keyword in the
+second <CODE>foreach</CODE> instruction.  I was trying to make the program more
+readable; the honest version would be
+
+<P><PRE>foreach &quot;abcdefghiklmnopqrstuvwxyz ~
+        [if (ifelse equalp ? &quot;i
+                    [not (or (memberp &quot;i :keyword)
+                             (memberp &quot;j :keyword))]
+                    [not memberp ? :keyword])
+            [stuff ?]]
+</PRE>
+
+<P>Why am I subjecting you to this?  My point is that what may seem to be the
+most natural way to think about a problem--in this case, handling one
+letter at a time--may not be the easiest, most elegant, or most efficient
+programming solution.
+
+<P>What makes the dataflow-structured version of <CODE>playfair</CODE> possible is the
+use of <EM>operations</EM> in Logo, and the <EM>composition</EM> of these
+operations by using the output from one as the input to another.  This is an
+important technique, but one that doesn't seem to come naturally to everyone.
+If you're not accustomed to writing operations, I think it really pays to
+train yourself into that habit.
+
+<P><H2>Conversational Front End</H2>
+
+
+
+<P>It's inconvenient to type a long message into the computer in the form of an
+input to a procedure.  Another approach would be a <EM>conversational front
+end.</EM> This is a procedure that reads the cleartext message using <CODE>
+readlist</CODE>, perhaps accepting the message over several lines.  It's not hard
+to write:
+
+<P><PRE>to encode.big.message
+local [keyword cleartext]
+print [Welcome to the Playfair enciphering program.]
+print [What keyword would you like to use?]
+make &quot;keyword first readlist
+print [Now please enter your message, using as many lines as needed.]
+print [When you're done, enter a line containing only a period (.).]
+make &quot;cleartext []
+read.big.message
+print [Here is the enciphered version:]
+print []
+print playfair :keyword :cleartext
+end
+
+to read.big.message
+local &quot;line
+make &quot;line readlist
+if equalp :line [.] [stop]
+make &quot;cleartext sentence :cleartext :line
+read.big.message
+end
+</PRE>
+
+<P>Such a top-level procedure may be justified in a project like this, in which
+a very large block of text may be used as a datum.  But don't get carried
+away.  Programming languages that don't emphasize composition of functions
+encourage this sort of programming style, to the point where the part of the
+program that prompts the user and reads the data gets to be longer than the
+part that does the actual computation.  This preoccupation with verbose
+conversation between the program and the user is sometimes justified by the
+idea of &quot;good human engineering,&quot; but I don't think that's necessarily
+true.  To take an extreme case, consider the standard elementary school Logo
+procedure to draw a square:
+
+<P><PRE>to square :size
+repeat 4 [forward :size right 90]
+end
+</PRE>
+
+<P>Compare that to this &quot;human engineered&quot; version:
+
+<P><PRE>to square
+local &quot;size
+print [Brian's square program copyright 1985]
+print [What size square would you like me to draw?]
+make &quot;size first readlist
+repeat 4 [forward :size right 90]
+print [Thank you, please come again.]
+end
+</PRE>
+
+<P>Not only is the first version (in my opinion) much more pleasant
+to use, but it is also more powerful and flexible.  The second version can
+be used <EM>only</EM> as a top-level program, carrying on a conversation with
+a human user.  The first version can be run at top level, but it can also be
+used as a subprocedure of a more complicated drawing program.  If it's used
+at top level, some person types in a number, the size, as the input to <CODE>
+square</CODE> on the instruction line.  If it's used inside another procedure,
+that procedure can <EM>compute</EM> the input.
+
+<P><H2>Further Explorations</H2>
+
+<P>I haven't described the part of the program that actually transforms
+the message: the procedure <CODE>encode</CODE> and its subprocedures.  Read
+the listing at the end of the chapter, then answer these questions:
+
+<P>&raquo;Why does <CODE>encode</CODE> need two base cases?
+
+<P>&raquo;What purpose is served by the four invocations of <CODE>thing</CODE> at the
+beginning of procedure <CODE>paircode</CODE>?
+
+<P>Of course this program can be improved in many ways.
+
+<P>&raquo;One straightforward improvement to this program would be to
+&quot;bulletproof&quot; it so that it doesn't die with a Logo error message if, for
+example, the user provides a bad keyword.  (Instead, the program should give
+its own message, making it clear what the problem is.  It's better for the
+user to see
+
+<P><PRE>Keywords may not have any letter repeated.
+</PRE>
+
+<P>than
+
+<P><PRE>t has no value  in paircode
+</PRE>
+
+<P>after making that mistake.)  Also, what if the cleartext input
+contains words with characters other than letters?  The program should just
+ignore those characters and process the letters in the words correctly.
+
+<P>&raquo;Another fairly straightforward improvement would be to take the one
+long word output by <CODE>playfair</CODE> and turn it into a list of words with
+spacing and punctuation thrown in at random.  The goal is to have the result
+look more or less like an actual paragraph of English text, except for the
+scrambled letters.
+
+<P>Another direction would be to work on deciphering a Playfair-coded
+message.  There are two problems here: the easy one, in which you know what
+the keyword is, and the hard one, in which you know only that a Playfair
+cipher was used.
+
+<P>&raquo;The procedure <CODE>playfair</CODE> itself will almost work in
+the first case.  It would work perfectly were it not for the special cases
+of letters in the same row and column.  It's a simple modification to handle
+those cases correctly.  An interesting extension would be to try to restore
+the original spacing by using a dictionary to guess where words end.
+
+<P>&raquo;The much harder problem is to try to guess the keyword.  I mentioned
+earlier some ideas about the approaches you'd have to take, such as
+exploring the frequencies of use of pairs of letters.  If you want more
+advice, you'll have to study books on cryptography.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch11/v1ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch13/v1ch13.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<PRE>
+to playfair :keyword :message
+local [matrix a b c d e f g h i j k l m n o p q r s t u v w x y z]
+setkeyword jtoi lowercase :keyword
+output encode (reduce "word :message)
+end
+
+;; Prepare the code array
+
+to setkeyword :word
+make "matrix reorder word :word (remove :word "abcdefghiklmnopqrstuvwxyz)
+make "j :i
+end
+
+to remove :letters :string
+if emptyp :string [output "]
+if memberp first :string :letters [output remove :letters bf :string]
+output word first :string remove :letters bf :string
+end
+
+to reorder :string
+output reorder1 :string (mdarray [5 5]) 1 1
+end
+
+to reorder1 :string :array :row :column
+if :row=6 [output :array]
+if :column=6 [output reorder1 :string :array :row+1 1]
+mdsetitem (list :row :column) :array first :string
+make first :string (list :row :column)
+output reorder1 (butfirst :string) :array :row :column+1
+end
+
+;; Encode the message
+
+to encode :message
+if emptyp :message [output "]
+if emptyp butfirst :message [output paircode first :message "q]
+if equalp (jtoi first :message) (jtoi first butfirst :message) ~
+   [output word (paircode first :message "q) (encode butfirst :message)]
+output word (paircode first :message first butfirst :message) ~
+            (encode butfirst butfirst :message)
+end
+
+to paircode :one :two
+local [row1 column1 row2 column2]
+make "row1 first thing :one
+make "column1 last thing :one
+make "row2 first thing :two
+make "column2 last thing :two
+if :row1 = :row2 ~
+   [output letters (list :row1 rotate (:column1+1)) ~
+                   (list :row1 rotate (:column2+1))]
+if :column1 = :column2 ~
+   [output letters (list rotate (:row1+1) :column1)  ~
+                   (list rotate (:row2+1) :column1)]
+output letters (list :row1 :column2) (list :row2 :column1)
+end
+
+to rotate :index
+output ifelse :index = 6 [1] [:index]
+end
+
+to letters :one :two
+output word letter :one letter :two
+end
+
+to letter :rowcol
+output itoj mditem :rowcol :matrix
+end
+
+;; I and J conversion
+
+to jtoi :word
+output map [ifelse equalp ? "j ["i] [?]] :word
+end
+
+to itoj :letter
+if :letter = "i [if (random 3) = 0 [output "j]]
+output :letter
+end
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch11/v1ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch13/v1ch13.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch12/v1ch12.html b/js/games/nluqo.github.io/~bh/v1ch12/v1ch12.html
new file mode 100644
index 0000000..827b018
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch12/v1ch12.html
@@ -0,0 +1,715 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 12: Example: Playfair Cipher</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Playfair Cipher</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch12.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch11/v1ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch13/v1ch13.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch12/playfair.lg"><CODE>playfair</CODE></A>
+
+<P>This project investigates a cipher that is somewhat more complicated than
+the simple substitution cipher of Chapter 11.  In the
+Playfair cipher, there is not a single translation of each letter
+of the alphabet; that is, you don't just decide that every B will be turned
+into an F.  Instead, <EM>pairs</EM> of letters are translated into other
+pairs of letters.
+
+<P>Here is how it works.  To start, pick a <EM>keyword</EM> that does not
+contain any letter more than once.  For example, I'll pick the word
+<CODE>keyword</CODE>.  Now write the letters of that word in the first squares of a
+five by five matrix:
+
+<P>
+<CENTER><TABLE rules="all" frame="box" border="3" noshade>
+<TR><TD align="center" height=30 width=30>K
+<TD align="center" height=30 width=30>E
+<TD align="center" height=30 width=30>Y
+<TD align="center" height=30 width=30>W
+<TD align="center" height=30 width=30>O
+<TR><TD align="center" height=30 width=30>R
+<TD align="center" height=30 width=30>D
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TR><TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TR><TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TR><TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+<TD align="center" height=30 width=30> 
+</TABLE></CENTER>
+
+<P>Then finish filling up the remaining squares of the matrix with the
+remaining letters of the alphabet, in alphabetical order.  Since there are
+26 letters and only 25 squares, we assign I and J to the same square.
+
+<P>
+<CENTER><TABLE rules="all" frame="box" border="3" noshade>
+<TR><TD align="center" height=30 width=30>K
+<TD align="center" height=30 width=30>E
+<TD align="center" height=30 width=30>Y
+<TD align="center" height=30 width=30>W
+<TD align="center" height=30 width=30>O
+<TR><TD align="center" height=30 width=30>R
+<TD align="center" height=30 width=30>D
+<TD align="center" height=30 width=30>A
+<TD align="center" height=30 width=30>B
+<TD align="center" height=30 width=30>C
+<TR><TD align="center" height=30 width=30>F
+<TD align="center" height=30 width=30>G
+<TD align="center" height=30 width=30>H
+<TD align="center" height=30 width=30>I J
+<TD align="center" height=30 width=30>L
+<TR><TD align="center" height=30 width=30>M
+<TD align="center" height=30 width=30>N
+<TD align="center" height=30 width=30>P
+<TD align="center" height=30 width=30>Q
+<TD align="center" height=30 width=30>S
+<TR><TD align="center" height=30 width=30>T
+<TD align="center" height=30 width=30>U
+<TD align="center" height=30 width=30>V
+<TD align="center" height=30 width=30>X
+<TD align="center" height=30 width=30>Z
+</TABLE></CENTER>
+
+<P>(Actually, when choosing the keyword, besides making sure that no
+letter appears twice you must make sure that I and J do not both appear.
+For example, <CODE>juice</CODE> wouldn't do as a keyword.)
+
+<P>To encipher a message, divide it into pairs of letters.  Pay no attention to
+punctuation or to spaces between words.  For example, the sentence &quot;Why,
+don't you?&quot; becomes
+
+<P><PRE>WH YD ON TY OU
+</PRE>
+
+<P>Now, find each pair of letters in the matrix you made earlier.
+Most pairs of letters will form two corners of a smaller square or rectangle
+within the matrix.  For example, in my matrix, the first pair of letters
+(<CODE>WH</CODE>) are at two corners of a two-by-three rectangle also containing
+<CODE>Y</CODE>, <CODE>A</CODE>, <CODE>B</CODE>, and <CODE>IJ</CODE>.  The enciphering of the pair
+<CODE>WH</CODE> is the pair at the two other corners of this rectangle, namely <CODE>
+YI</CODE>.  (I could also have chosen <CODE>YJ</CODE>, in this case.)  It's important to
+be consistent about the order of the new pair: the one that comes first is
+the one on the same <EM>row</EM> as the first of the original pair.  In this
+case, <CODE>Y</CODE> is on the same row as <CODE>W</CODE>.  We can continue to translate
+the remaining pairs of letters in the same way, ending up with
+
+<P><PRE>YI EA ES VK EZ
+</PRE>
+
+<P>Notice that the letter <CODE>Y</CODE> turned into <CODE>E</CODE> in the second
+pair of letters, but it turned into <CODE>K</CODE> in the fourth pair.
+
+<P>Part of the strategy for keeping a code secret is to hide even the <EM>
+kind</EM> of code being used.  Pairs of letters, to a cryptographer, are a
+dead giveaway that a Playfair cipher was used, so it's traditional to insert
+irrelevant spacing and punctuation in the actual written version of the
+message, like this:
+
+<P><PRE>Yie ae, svkez.
+</PRE>
+
+<P>Of course the recipient of the message, knowing how the message
+was encoded, ignores this spacing and punctuation.
+
+<P>As an illustration of some of the special cases that complicate this scheme,
+consider the message, &quot;Come to the window.&quot; First we divide it up into
+pairs:
+
+<P><PRE>CO ME TO TH EW IN DO W
+</PRE>
+
+<P>The first problem is that the message has an odd number of
+letters.  To solve this problem we simply add an extra letter at the end,
+generally <CODE>Q</CODE>.  In this example, the final <CODE>W</CODE> becomes a pair <CODE>
+WQ</CODE>.
+
+<P>If you look up the first pair of letters, <CODE>CO</CODE>, in my matrix, you'll
+find that they do not determine a rectangle, because they are in the same
+column.  (Strictly speaking, they <EM>do</EM> determine a one-by-two
+rectangle, but the two diagonals are the same, so that <CODE>CO</CODE> would be
+encoded as <CODE>CO</CODE> if we followed the usual rule.)  For two letters in the
+same column, the rule is to replace each letter by the one below it, so <CODE>
+CO</CODE> becomes <CODE>LC</CODE>.  (If one of the letters is at the end of the column,
+it is replaced by the top letter.  So, for example, <CODE>OZ</CODE> would become
+<CODE>CO</CODE>.)  Similarly, for two letters in the same row, each is replaced by
+the letter to its right.  We can now translate the entire message:
+
+<P><PRE>LC NK ZK VF YO GQ CE BX
+</PRE>
+
+<P>The pair <CODE>EW</CODE>, on a single row, has become <CODE>YO</CODE>; the final
+pair <CODE>WQ</CODE>, on a single column, has become <CODE>BX</CODE>.
+
+<P>The final exceptional case is the one in which the same letter appears twice
+in a pair.  For example, the phrase &quot;the big wheel&quot; divides into
+
+<P><PRE>TH EB IG WH EE LQ
+</PRE>
+
+<P>The pair <CODE>EE</CODE> is treated specially.  It could be translated
+into <CODE>YY</CODE> (treating it as two letters in the same row) or into <CODE>DD</CODE>
+(if you think of it as two letters in the same column).  Instead, though,
+the rule is to break up the pair by inserting a <CODE>Q</CODE> between the two
+letters.  This changes all the pairings after that one in the message.  The
+new version is
+
+<P><PRE>TH EB IG WH EQ EL
+</PRE>
+
+<P>This version can now be translated into
+
+<P><PRE>VF WD LH YJ WN OG
+</PRE>
+
+<P>(Notice that I chose to translate <CODE>WH</CODE> into <CODE>YJ</CODE> instead of into
+<CODE>YI</CODE>.  You should use some of each when coding a message.  A cipher with
+no <CODE>J</CODE>s at all, or one with a simple pattern of <CODE>I</CODE> and <CODE>J</CODE>
+alternating, is another giveaway that the Playfair cipher was used.)
+
+<P>What about the frequencies of letters in a Playfair-encoded message?  You
+can't simply say that the most common letters are likely to represent <CODE>
+E</CODE> or <CODE>T</CODE> or <CODE>A</CODE>, because a letter doesn't represent a single letter
+that way.  But it is still possible to say that a common letter in the coded
+version is likely to <EM>be on the same row</EM> as one of the frequent
+letters in English.  For example, here is a well-known text
+in Playfair-coded form:
+
+<P><PRE>ZK DW KC SE XM ZK DW VF RV LQ VF WN ED MZ LW QE GY VF KD XF MP WC GO
+BF MU GY QF UG ZK NZ IM GK FK GY ZS GQ LN DP AB BM CK OQ KL EZ KF DH
+YK ZN LK FK EU YK FK KZ RY YD FT PC HD GQ MZ CP YD KL KF EZ CI ON DP
+AC WK QS SY QL UN DU RU GY NS
+</PRE>
+
+<P>The most commonly occurring letters in this coded text are <CODE>K</CODE>
+(19 times), <CODE>F</CODE> (12 times), <CODE>D</CODE> and <CODE>Z</CODE> (tied at 11), and <CODE>
+Y</CODE> (10 times).  <CODE>K</CODE> is on the same row as both <CODE>E</CODE> and <CODE>O</CODE>, and
+can also represent <CODE>T</CODE> in the same-column case.  <CODE>Y</CODE> is also on the
+same row.  <CODE>F</CODE> can represent <CODE>I</CODE> (especially in the common pair <CODE>
+IT</CODE>); <CODE>D</CODE> can represent <CODE>A</CODE>; <CODE>Z</CODE> can represent <CODE>T</CODE>.  Of all
+the letters that might represent <CODE>E</CODE>, why should <CODE>K</CODE> and <CODE>Y</CODE> be
+the popular ones?  The answer is that they have common letters in their
+columns as well.  In order for <CODE>W</CODE> to represent <CODE>E</CODE>, for example,
+the other letter of the (cleartext) pair must be <CODE>B</CODE>, <CODE>I</CODE>, <CODE>J</CODE>,
+<CODE>Q</CODE>, or <CODE>X</CODE>.  Of these, only <CODE>I</CODE> is particularly common, and
+<CODE>Q</CODE> and <CODE>X</CODE> are downright rare.
+
+<P>If you were trying to break a Playfair cipher, one approach you might take
+would be to count the frequencies of <EM>pairs</EM> of letters.  For example,
+in the message above, the only pairs that occur more than twice are <CODE>
+GY</CODE>, four times, and <CODE>FK</CODE>, <CODE>VF</CODE>, and <CODE>ZK</CODE>, three times each.
+It's a good guess that each of these corresponds to a commonly occurring
+pair of letters in English text.  In fact, as it turns out, <CODE>GY</CODE>
+corresponds to <CODE>HE</CODE>, which is not only a word by itself but also part of
+<CODE>the</CODE>, <CODE>them</CODE>, <CODE>then</CODE>, and so on.  <CODE>VF</CODE> corresponds to <CODE>
+TH</CODE>, an extremely common pair; <CODE>ZK</CODE> corresponds to <CODE>TO</CODE>, which is
+again a word in itself as well as a constituent of many other words.  The
+other pair that occurs three times in the text, <CODE>FK</CODE>, corresponds to
+<CODE>RT</CODE>.  This is not such a common English pair, although it does come up
+in words like <CODE>worth</CODE>.  But it turns out that in the particular sample
+text I'm using, this pair of letters comes up mostly as parts of two words,
+as in the combination <CODE>or to</CODE>.
+
+<P>
+
+<P>If you want to know more about how to break a Playfair cipher, you can see
+an example in <EM>Have His Carcase</EM><EM>,</EM> a mystery novel by
+Dorothy L. Sayers.  In this project, I'm less ambitious: the
+program merely enciphers a message, given the keyword and the cleartext as
+inputs.  The first input to <CODE>playfair</CODE> must be a word, the keyword.  The
+second input must be a list of words, the text.  The keyword must meet the
+criterion of no duplicated letters, and the cleartext input must contain
+only words of letters, without punctuation.  Here is an example:
+
+<P><PRE>? <U>print playfair &quot;keyword [come to the window]</U>
+lcnkzkvfyogqcebx
+</PRE>
+
+<P><CODE>Playfair</CODE> is an operation whose output is a single word
+containing the enciphered letters of the original text.
+
+<P><H2>Data Redundancy</H2>
+
+
+
+<P>In writing this program, the first question I thought about was how to
+represent in a Logo program the matrix of letters used in the coding
+process.  The most natural structure is a two-dimensional array--that is,
+an array with five members, each of which is an array of five
+letters.<SUP>*</SUP> So if
+the keyword is <CODE>keyword</CODE> then the program will, in effect, do this:
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In the tic-tac-toe program, I used a one-dimensional array
+to represent the board, even though a tic-tac-toe board is drawn in two
+dimensions.  I could have used an array of three arrays of three numbers
+each, but that wouldn't really have fit with the way that program labels the
+board.  In tic-tac-toe, the nine squares are named 1 to 9.  You ask to move
+in square 8, for example, not in row 3, column 2.  But in the Playfair
+program, the row and column numbers are going to be very important.</SMALL></BLOCKQUOTE></SMALL><P><PRE>make &quot;matrix {{k e y w o} {r d a b c} {f g h i l}
+              {m n p q s} {t u v x z}}
+</PRE>
+
+<P>The position of a letter in the matrix is represented as a list of
+two numbers, the row and the column.  The Berkeley Logo procedure library
+includes an operation <CODE>mditem</CODE> that takes such a list as an input, along
+with a multi-dimensional array, and outputs the desired member:
+
+<P><PRE>to letter :rowcol
+output mditem :rowcol :matrix
+end
+</PRE>
+
+<P>(The actual procedure listed at the end of this section includes a
+slight complication to deal with the case of <CODE>I</CODE> and <CODE>J</CODE>, but that's
+not important right now.)
+
+<P>The Playfair process goes like this:  The program is given two letters.  It
+finds each letter in the matrix, determines each letter's row and column
+numbers, then rearranges those numbers to make new row and column numbers,
+then looks in the matrix again to find the corresponding letters.  For
+example, suppose we are given the keyword <CODE>keyword</CODE> and the letters <CODE>
+T</CODE> and <CODE>A</CODE>.  The first step is to translate <CODE>T</CODE> into the row and
+column list <CODE>[5 1]</CODE>, and to translate <CODE>A</CODE> into <CODE>[2 3]</CODE>.  Then
+the program must combine the row of one letter with the column of the other,
+giving the new lists <CODE>[5 3]</CODE> and <CODE>[2 1]</CODE>.  Finally, the <CODE>letter</CODE>
+procedure shown above will find the letters <CODE>V</CODE> and <CODE>R</CODE> in the
+matrix.
+
+<P><CODE>Letter</CODE> handles the last step of the translation process, but what about
+the first step?  We need the inverse operation of <CODE>letter</CODE>, one that
+takes a letter as input and provides its row and column.
+
+<P>It would be possible to write a <CODE>row.and.column</CODE> procedure that would
+examine each letter in the matrix until it located the desired letter.  But
+that procedure would be both slow and complicated.  Instead, I decided
+to keep <EM>redundant</EM> information about the matrix in the form of 26
+variables, one for each letter, each of which contains the coordinates of
+that letter.  That is, the variables take the form
+
+<P><PRE>make &quot;a [2 3]
+make &quot;w [1 4]
+make &quot;z [5 5]
+</PRE>
+
+<P>and so on.  (As in the case of the variable named <CODE>matrix</CODE>
+above, these <CODE>make</CODE> instructions are just illustrative.  The actual
+program does not contain explicit data for this particular matrix, using
+this particular keyword!)
+
+<P>The letter variables contain the same information as the variable <CODE>
+matrix</CODE>.  Strictly speaking, they are not needed.  By creating the redundant
+variables for the letters, I've made a <EM>space/time tradeoff;</EM>
+the extra variables take up room in the computer's memory, but the program
+runs faster.  One of the recurring concerns of a professional programmer is
+deciding which way to make such tradeoffs.  It depends on the amounts of
+space and time required and the amounts available.  In this case, the extra
+space required is really quite small, compared to the memory of a modern
+computer, so the decision is clear-cut.  For larger programming problems it
+is sometimes harder to decide.
+
+<P>
+<H2>Composition of Functions</H2>
+
+
+
+<P>Earlier I showed a <CODE>make</CODE> instruction to put a particular coding matrix
+into the variable <CODE>matrix</CODE>.  How does the program create a matrix for
+any keyword given as input?  Here are two of the relevant procedures:
+
+<P><PRE>to playfair :keyword :message
+local [matrix a b c d e f g h i j k l m n o p q r s t u v w x y z]
+<U>setkeyword jtoi lowercase :keyword</U>
+output encode (reduce &quot;word :message)
+end
+
+to setkeyword :word
+<U>make &quot;matrix reorder word :word (remove :word &quot;abcdefghiklmnopqrstuvwxyz)</U>
+make &quot;j :i
+end
+</PRE>
+
+<P>
+<P>The keyword that is provided by the user as one of the inputs to the
+toplevel procedure <CODE>playfair</CODE> goes through several stages as it is
+transformed into a matrix.
+
+<P>
+<CENTER><IMG SRC="compose.gif" ALT="figure: compose"></CENTER>
+
+
+<P>This <EM>dataflow</EM> diagram is very similar to a plumbing
+diagram from Chapter 2 turned on its side.  The format is a little
+different to put somewhat more emphasis on the inputs and outputs, so you
+can follow the &quot;flow&quot; of information through the arrows.
+
+<P>In English, here's what the diagram tells us.  The keyword given by the user
+must be converted to lower case letters.  (I could have chosen to use capital
+letters instead; the goal is to have some uniform convention.)  If the
+keyword happens to contain a <CODE>J</CODE>, it will be represented within the
+program as an <CODE>I</CODE> instead.  Then, to make the matrix, we combine (with
+<CODE>word</CODE>) two words: the keyword and the result of removing the keyword's
+letters from the alphabet (leaving out <CODE>J</CODE>).  Finally, that combined
+word must be rearranged into a five-by-five square.
+
+<P>
+The advantage of a view such as this one is that each of the small boxes
+in the diagram has a relatively simple task.  Indeed, <CODE>lowercase</CODE> and
+<CODE>word</CODE> are primitive operations in Berkeley Logo.  <CODE>Jtoi</CODE> is trivial:
+
+<P><PRE>to jtoi :word
+output map [ifelse equalp ? &quot;j [&quot;i] [?]] :word
+end
+</PRE>
+
+<P><CODE>Remove</CODE> is a straightforward recursive operation that
+outputs the result of removing one group of letters from another group
+of letters.
+
+<P><PRE>to remove :letters :string
+if emptyp :string [output &quot;]
+if memberp first :string :letters [output remove :letters bf :string]
+output word first :string remove :letters bf :string
+end
+</PRE>
+
+<P>The job of <CODE>reorder</CODE> is somewhat messier.  It must keep track
+of what row and column it's up to, so <CODE>reorder</CODE> is just an
+initialization procedure for the recursive helper <CODE>reorder1</CODE> that does
+the real work.  <CODE>Reorder</CODE> also creates the two-dimensional Logo array
+to provide another input to its helper procedure.
+
+<P><PRE>to reorder :string
+output reorder1 :string (mdarray [5 5]) 1 1
+end
+
+to reorder1 :string :array :row :column
+if :row=6 [output :array]
+if :column=6 [output reorder1 :string :array :row+1 1]
+mdsetitem (list :row :column) :array first :string
+make first :string (list :row :column)
+output reorder1 (butfirst :string) :array :row :column+1
+end
+</PRE>
+
+<P>If I were filling in a matrix by hand, instead of writing a computer 
+program, I'd use a very different approach.  I'd handle one letter at a
+time.  First I'd go through the keyword a letter at a time, stuffing each
+letter into the next available slot in the matrix.  (If necessary, I'd
+convert upper to lower case and <CODE>J</CODE> to <CODE>I</CODE> in the process.)
+Then I'd go through the alphabet a letter at a time, saying &quot;If this letter
+isn't in the keyword, then stuff it into the matrix.&quot;
+
+<P> 
+Many people would find it natural to use that same technique in writing
+a computer program, also:
+
+<P><PRE>to playfair :keyword :message           ;; sequential version
+local [matrix a b c d e f g h i j k l m n o p q r s t u v w x y z]
+<U>make &quot;matrix mdarray [5 5]</U>
+<U>local [row column]</U>
+<U>make &quot;row 1</U>
+<U>make &quot;column 1</U>
+<U>foreach :keyword [stuff jtoi lowercase ?]</U>
+<U>foreach &quot;abcdefghiklmnopqrstuvwxyz ~</U>
+        <U>[if not memberp ? jtoi :keyword [stuff ?]]</U>
+make &quot;j :i
+output encode (reduce &quot;word :message)
+end
+
+to stuff :letter
+mdsetitem (list :row :column) :matrix :letter
+make :letter (list :row :column)
+make &quot;column :column+1
+if :column=6 [make &quot;row :row+1  make &quot;column 1]
+end
+</PRE>
+
+<P>In this version, the first <CODE>foreach</CODE> instruction handles the letters of
+the keyword.  The second <CODE>foreach</CODE> instruction handles the rest of the
+alphabet.  The <CODE>not memberp</CODE> test handles the removal of the keyword
+letters from the alphabet.
+
+<P>My intent in writing this alternate version was to model my idea of how the
+problem would be solved without a computer, processing one letter at a time.
+So, for example, in the template
+
+<P><PRE>[stuff jtoi lowercase ?]
+</PRE>
+
+<P>it's worth noting that the operations <CODE>jtoi</CODE> and <CODE>
+lowercase</CODE> are being applied to single-letter inputs, even though those
+operations were designed to accept words of any length as a unit.  I
+cheated, though, by applying <CODE>jtoi</CODE> to the entire keyword in the
+second <CODE>foreach</CODE> instruction.  I was trying to make the program more
+readable; the honest version would be
+
+<P><PRE>foreach &quot;abcdefghiklmnopqrstuvwxyz ~
+        [if (ifelse equalp ? &quot;i
+                    [not (or (memberp &quot;i :keyword)
+                             (memberp &quot;j :keyword))]
+                    [not memberp ? :keyword])
+            [stuff ?]]
+</PRE>
+
+<P>Why am I subjecting you to this?  My point is that what may seem to be the
+most natural way to think about a problem--in this case, handling one
+letter at a time--may not be the easiest, most elegant, or most efficient
+programming solution.
+
+<P>What makes the dataflow-structured version of <CODE>playfair</CODE> possible is the
+use of <EM>operations</EM> in Logo, and the <EM>composition</EM> of these
+operations by using the output from one as the input to another.  This is an
+important technique, but one that doesn't seem to come naturally to everyone.
+If you're not accustomed to writing operations, I think it really pays to
+train yourself into that habit.
+
+<P><H2>Conversational Front End</H2>
+
+
+
+<P>It's inconvenient to type a long message into the computer in the form of an
+input to a procedure.  Another approach would be a <EM>conversational front
+end.</EM> This is a procedure that reads the cleartext message using <CODE>
+readlist</CODE>, perhaps accepting the message over several lines.  It's not hard
+to write:
+
+<P><PRE>to encode.big.message
+local [keyword cleartext]
+print [Welcome to the Playfair enciphering program.]
+print [What keyword would you like to use?]
+make &quot;keyword first readlist
+print [Now please enter your message, using as many lines as needed.]
+print [When you're done, enter a line containing only a period (.).]
+make &quot;cleartext []
+read.big.message
+print [Here is the enciphered version:]
+print []
+print playfair :keyword :cleartext
+end
+
+to read.big.message
+local &quot;line
+make &quot;line readlist
+if equalp :line [.] [stop]
+make &quot;cleartext sentence :cleartext :line
+read.big.message
+end
+</PRE>
+
+<P>Such a top-level procedure may be justified in a project like this, in which
+a very large block of text may be used as a datum.  But don't get carried
+away.  Programming languages that don't emphasize composition of functions
+encourage this sort of programming style, to the point where the part of the
+program that prompts the user and reads the data gets to be longer than the
+part that does the actual computation.  This preoccupation with verbose
+conversation between the program and the user is sometimes justified by the
+idea of &quot;good human engineering,&quot; but I don't think that's necessarily
+true.  To take an extreme case, consider the standard elementary school Logo
+procedure to draw a square:
+
+<P><PRE>to square :size
+repeat 4 [forward :size right 90]
+end
+</PRE>
+
+<P>Compare that to this &quot;human engineered&quot; version:
+
+<P><PRE>to square
+local &quot;size
+print [Brian's square program copyright 1985]
+print [What size square would you like me to draw?]
+make &quot;size first readlist
+repeat 4 [forward :size right 90]
+print [Thank you, please come again.]
+end
+</PRE>
+
+<P>Not only is the first version (in my opinion) much more pleasant
+to use, but it is also more powerful and flexible.  The second version can
+be used <EM>only</EM> as a top-level program, carrying on a conversation with
+a human user.  The first version can be run at top level, but it can also be
+used as a subprocedure of a more complicated drawing program.  If it's used
+at top level, some person types in a number, the size, as the input to <CODE>
+square</CODE> on the instruction line.  If it's used inside another procedure,
+that procedure can <EM>compute</EM> the input.
+
+<P><H2>Further Explorations</H2>
+
+<P>I haven't described the part of the program that actually transforms
+the message: the procedure <CODE>encode</CODE> and its subprocedures.  Read
+the listing at the end of the chapter, then answer these questions:
+
+<P>&raquo;Why does <CODE>encode</CODE> need two base cases?
+
+<P>&raquo;What purpose is served by the four invocations of <CODE>thing</CODE> at the
+beginning of procedure <CODE>paircode</CODE>?
+
+<P>Of course this program can be improved in many ways.
+
+<P>&raquo;One straightforward improvement to this program would be to
+&quot;bulletproof&quot; it so that it doesn't die with a Logo error message if, for
+example, the user provides a bad keyword.  (Instead, the program should give
+its own message, making it clear what the problem is.  It's better for the
+user to see
+
+<P><PRE>Keywords may not have any letter repeated.
+</PRE>
+
+<P>than
+
+<P><PRE>t has no value  in paircode
+</PRE>
+
+<P>after making that mistake.)  Also, what if the cleartext input
+contains words with characters other than letters?  The program should just
+ignore those characters and process the letters in the words correctly.
+
+<P>&raquo;Another fairly straightforward improvement would be to take the one
+long word output by <CODE>playfair</CODE> and turn it into a list of words with
+spacing and punctuation thrown in at random.  The goal is to have the result
+look more or less like an actual paragraph of English text, except for the
+scrambled letters.
+
+<P>Another direction would be to work on deciphering a Playfair-coded
+message.  There are two problems here: the easy one, in which you know what
+the keyword is, and the hard one, in which you know only that a Playfair
+cipher was used.
+
+<P>&raquo;The procedure <CODE>playfair</CODE> itself will almost work in
+the first case.  It would work perfectly were it not for the special cases
+of letters in the same row and column.  It's a simple modification to handle
+those cases correctly.  An interesting extension would be to try to restore
+the original spacing by using a dictionary to guess where words end.
+
+<P>&raquo;The much harder problem is to try to guess the keyword.  I mentioned
+earlier some ideas about the approaches you'd have to take, such as
+exploring the frequencies of use of pairs of letters.  If you want more
+advice, you'll have to study books on cryptography.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch11/v1ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch13/v1ch13.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<PRE>
+to playfair :keyword :message
+local [matrix a b c d e f g h i j k l m n o p q r s t u v w x y z]
+setkeyword jtoi lowercase :keyword
+output encode (reduce "word :message)
+end
+
+;; Prepare the code array
+
+to setkeyword :word
+make "matrix reorder word :word (remove :word "abcdefghiklmnopqrstuvwxyz)
+make "j :i
+end
+
+to remove :letters :string
+if emptyp :string [output "]
+if memberp first :string :letters [output remove :letters bf :string]
+output word first :string remove :letters bf :string
+end
+
+to reorder :string
+output reorder1 :string (mdarray [5 5]) 1 1
+end
+
+to reorder1 :string :array :row :column
+if :row=6 [output :array]
+if :column=6 [output reorder1 :string :array :row+1 1]
+mdsetitem (list :row :column) :array first :string
+make first :string (list :row :column)
+output reorder1 (butfirst :string) :array :row :column+1
+end
+
+;; Encode the message
+
+to encode :message
+if emptyp :message [output "]
+if emptyp butfirst :message [output paircode first :message "q]
+if equalp (jtoi first :message) (jtoi first butfirst :message) ~
+   [output word (paircode first :message "q) (encode butfirst :message)]
+output word (paircode first :message first butfirst :message) ~
+            (encode butfirst butfirst :message)
+end
+
+to paircode :one :two
+local [row1 column1 row2 column2]
+make "row1 first thing :one
+make "column1 last thing :one
+make "row2 first thing :two
+make "column2 last thing :two
+if :row1 = :row2 ~
+   [output letters (list :row1 rotate (:column1+1)) ~
+                   (list :row1 rotate (:column2+1))]
+if :column1 = :column2 ~
+   [output letters (list rotate (:row1+1) :column1)  ~
+                   (list rotate (:row2+1) :column1)]
+output letters (list :row1 :column2) (list :row2 :column1)
+end
+
+to rotate :index
+output ifelse :index = 6 [1] [:index]
+end
+
+to letters :one :two
+output word letter :one letter :two
+end
+
+to letter :rowcol
+output itoj mditem :rowcol :matrix
+end
+
+;; I and J conversion
+
+to jtoi :word
+output map [ifelse equalp ? "j ["i] [?]] :word
+end
+
+to itoj :letter
+if :letter = "i [if (random 3) = 0 [output "j]]
+output :letter
+end
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch11/v1ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch13/v1ch13.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch13/plan.html b/js/games/nluqo.github.io/~bh/v1ch13/plan.html
new file mode 100644
index 0000000..caa7d7d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch13/plan.html
@@ -0,0 +1,1035 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 13: Planning</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Planning</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch13.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch12/v1ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch14/v1ch14.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="poker.lg"><CODE>poker</CODE></A>
+
+<P><CENTER><IMG SRC="ucb.jpg" ALT="figure: ucb"></CENTER>
+
+<P>The picture above shows some of the architecture on the University of
+California campus at Berkeley.  At the left of the picture is South
+Hall, one of the original campus buildings, with red brick, ivy, and
+many chimneys.  The white brick clock tower that dominates the center
+of the picture is Sather Tower, popularly called the Campanile after
+the building in Venice, Italy, on which it is modeled.  Just to its
+left is Evans Hall, the concrete fortress that houses the Mathematics
+Department.  Andrews Hall, at the very front of the picture,
+is a small, one-floor building with an unusually shaped roof.
+Stephens Hall, mostly hidden by the trees behind Andrews, is a
+yellow-green zigzag.
+
+<P>
+<CENTER><IMG SRC="su1.jpg" ALT="figure: su1"></CENTER>
+
+<P>
+<CENTER><IMG SRC="su2.jpg" ALT="figure: su2"></CENTER>
+
+<P>And here is a similar view of the Stanford University campus in
+Palo Alto, California.  Compared to the Berkeley buildings, the ones
+you see here look very uniform.  At the left in the first photo is
+a corner of the Quadrangle, the central building complex of the campus.
+The School of Education, down the path on the left, follows the same
+pattern of rough tan stone with a sloping orange roof.  The Meyer Library,
+at the rear of the photo, follows the same color scheme, even though it's
+obviously a more recent building.  The second photo shows the new School
+of Law.  In this building the architect has clearly worked to combine
+the same tan stone, orange roof theme with more modern details: the texture
+of the stone is more uniform and the arches are less ornate.
+
+Both of these campuses are the result of architectural planning, but
+they illustrate two different <EM>styles</EM> of planning.  The
+Stanford campus was planned <EM>top-down;</EM> first came an overall
+concept and then the details to fill in that concept.  The Berkeley
+campus was planned <EM>bottom-up;</EM> each new building was designed
+to fit its architect's idea of the immediate, local situation.  Some
+of the individual buildings are quite beautiful, but it's those
+buildings, rather than the campus as a unit, that attract attention.
+
+<P>(I'm oversimplifying, of course.  In a strictly top-down approach, the
+entire campus would be laid out on paper before any building was
+built.  Adding new buildings later, even if they're made to fit in
+with the old ones, means that the original plan was defective.
+Instead of patching it up, a top-down purist would have the architects
+begin all over again, allowing for more buildings from the beginning
+of the design process.  And in fact the original Berkeley campus was
+much more uniform than the campus today, but very rapid growth led to
+widespread changes in the original plan.  Still, the difference in
+architectural planning styles is striking and suggestive.)
+
+<P>The same two planning strategies are possible in computer
+programming.  Suppose you want to write a program to play
+tic-tac-toe, as I did in Chapter 6.  You can start by saying,
+&quot;Let's see if I can draw the board.&quot; You'd write a procedure to draw the
+four lines that make up the tic-tac-toe grid.  Then you might write
+procedures to draw an X and an O in the right size for the boxes you've
+made.  And so on.  That would be a bottom-up design.  Alternatively, you
+might start by deciding on the major tasks that your program will have to
+carry out.  You might then write a top-level procedure like this:
+
+<P><PRE>to ttt
+drawboard
+choose.x.o
+playgame
+end
+
+to playgame
+move &quot;x
+if winp &quot;x [stop]
+move &quot;o
+if winp &quot;o [stop]
+playgame
+end
+</PRE>
+
+<P>In writing <CODE>ttt</CODE> and <CODE>playgame</CODE>, I've freely used
+subprocedures that I haven't written yet.  Later I could fill in the
+gaps, writing procedures that will do exactly what's needed to fill
+their places in the main procedure.
+
+<P><H2>Structured Programming</H2>
+
+<P>In recent years the majority of computer scientists have adopted a
+school of thought called structured programming.  This
+phrase--the title of a 1972 book by O. J. Dahl,
+Edsger Dijkstra,
+and C. A. R. Hoare--describes an
+uncompromising top-down philosophy of programming.  Structured
+programming is more than just the top-down idea, though; it also
+includes rules for each step in the program development process.  For
+example, one potential problem with top-down programming is that it's
+hard to test a procedure you've written until its subprocedures are
+written also.  (By contrast, a subprocedure can be tested before its
+superprocedures are written.) Structured programming solves this
+problem by recommending the use of <EM>stubs</EM>--preliminary
+versions of the subprocedures that don't really do the job but
+provide some result that allows the higher-level procedures to be
+tested.  For example, an operation that hasn't been written yet might
+be replaced by a stub that always outputs zero, or the empty list, or
+some other simple, appropriate value.
+
+<P>More importantly, the structured programming approach tells us not to write
+any procedures at all until we've first written a detailed specification of
+the how the program should behave, and then a detailed plan of how it will
+be organized to achieve that goal.
+
+<P>The programming language Pascal was designed
+by Niklaus Wirth in 1970
+to promote a programming style and philosophy like that of
+structured programming.  Pascal is meant to teach
+a top-down structured style by providing just the tools needed
+for that approach but making it hard to program in other styles.
+The widespread use of Pascal in college programming courses reflects
+the popularity of the structured programming approach.
+
+<P>(As I am preparing the second edition of this book in 1995, Pascal
+is just beginning to lose ground as a teaching language; several competing
+schools of thought about programming have led to diverse language choices.
+The best known right now is the language C++, which exemplifies an <EM>
+object oriented</EM> approach to program structure.  Others are Ada and
+Modula, two languages more or less in the Pascal tradition, and Scheme,
+which is, like Logo, a dialect of Lisp and represents the artificial
+intelligence tradition.)
+
+<P><H2>Critique of Structured Programming</H2>
+
+<P>One area of computer science in which the top-down approach has not
+been accepted so enthusiastically is artificial intelligence.  AI
+researchers try to program computers to carry out ill-defined, complex
+tasks (playing chess is a prototypical example) for which there is no
+single, obvious method.  In that kind of research project you can't
+start by writing down on paper a complete specification of how the
+finished program will be organized.  Instead you start with a more or
+less vague idea, you try programming it, and then you play around with
+it to try to improve the results.  That's one reason why the majority
+of AI programs are written in Lisp, a language that is interactive,
+so it encourages you to &quot;program at the keyboard.&quot; Pascal, on the
+other hand, was designed to
+be a <EM>compiled</EM> language, in which you must write
+an entire program before you can carry out a single instruction.
+
+<P>Logo, a dialect of Lisp, was developed by artificial intelligence
+researchers.  Their idea was to see if they could use some of their
+experience with the problem of trying to get computers to think in
+order to help human beings learn to think more effectively--at least
+about certain kinds of problems.  You shouldn't be surprised,
+therefore, to learn that Logoites tend not to be enthusiastic about
+structured programming.
+
+<P>It's not that we're against planning.  On the contrary!  Planning is
+one of the most fundamental problem-solving skills.  But there are
+many kinds of planning.  The kind in which every part of your
+program's behavior is written down before you begin programming isn't
+very realistic in many contexts.  Even in the large-scale business or
+government projects that structured programmers like to talk about,
+it's very common that the ultimate users of a program change their
+minds about how it should work, once they have some experience with
+using it.  The wise programmer will anticipate these changing
+requirements in the original planning process.  Still, one never
+anticipates everything; a sensible person faced with an unexpected
+change in requirements will be flexible
+enough to modify the initial plan, not start all over again.  And it's
+even more true for people like you, who are just learning to program,
+that the &quot;goal&quot; of a programming project is exploratory rather than
+predetermined.
+
+<P>Sometimes human lives depend on the correct operation of a computer
+program.  In one famous example, just about the time that the first edition
+of this book was published, one person died and others were injured because
+the program controlling a medical X-ray machine gave patients massive
+overdoses of radiation.  Certainly, any programming techniques that can help
+prevent such accidents are valuable.  Still, the techniques applicable to
+life-or-death programming situations are not necessarily the best techniques
+for beginning learners, nor even for experienced researchers who are
+exploring a new area rather than writing production programs.
+
+<P><H2>A Sample Project: Counting Poker Hands</H2>
+
+<P>To make all this more concrete, I'd like to show you an actual planning
+process for a programming project.  I'm going to write a Logo program and
+tell you what I'm doing as I go along.  I am sitting at a rather crowded
+desk; on my left is a microcomputer running Logo, and on my right is the
+terminal with which I call up the large computer I use for text editing.
+I'll switch back and
+forth as I work.<SUP>*</SUP> Please understand
+that I'm not showing you the Official Logo Programming Style.  I'm showing
+you one way in which one Logo programmer approaches a particular project.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Home computers have become more
+powerful since I wrote that in 1984.  I can now run Logo in one window and
+edit the book in another window on the same computer.</SMALL></BLOCKQUOTE></SMALL><P>The project I have in mind is to announce the value of a poker hand.
+That is, the program should behave something like this:
+
+<P><PRE>? <U>pokerhand [3s qc 3d 3h qd]</U>
+full house (threes and queens)
+? <U>pokerhand [4c 7h 5d 3c 6d]</U>
+straight (seven high)
+? <U>pokerhand [2h 10d 5s 6s 10s]</U>
+pair of tens
+?
+</PRE>
+
+<P>In imagining this sample dialogue, I'm doing a kind of
+top-down planning.  I've specified, for example, the form in which I
+intend to represent a hand (a list of five cards) and a card (a word
+combining a rank from
+
+<P><PRE>[a 2 3 4 5 6 7 8 9 10 j q k]
+</PRE>
+
+<P>with a suit from
+
+<P><PRE>[h s d c]
+</PRE>
+
+<P>standing for hearts, spades, diamonds, and clubs).  I
+suppose that means that I've decided we're playing five-card draw
+poker rather than seven-card stud.  But later I may want to think
+again about that choice.  I've also written down a few of the specific
+messages the program can print, although I'm much less certain about
+these.  I may or may not actually bother with the details in
+parentheses, for example.
+
+<P>Okay, how will the program work?  I envision a series of tests for
+particular kinds of poker hands.  So in my head there is a vague
+procedure template like this:
+
+<P><PRE>to pokerhand :cards
+if royal.flushp :cards [print [royal flush] stop]
+if fourp :cards [print [four of a kind] stop]
+if straight.flushp :cards [print [straight flush] stop]
+...
+print [I suggest you fold.]
+end
+</PRE>
+
+<P>This isn't something I'm ready to type into my computer.
+I'm still thinking about how the details are likely to work out.  One
+thing that comes to mind is that, as it stands, there will be a great
+duplication of effort.  The test for a royal flush is just like the
+test for a straight flush, plus a particular special condition (ace
+high).  I shouldn't really make that test twice.  For that matter the
+test for a straight flush is the test for a straight combined with
+the test for a flush.  I shouldn't have another instruction starting
+<CODE>if straightp</CODE> repeating the same test.
+
+<P><H2>An Initialization Procedure</H2>
+
+<P>I also shouldn't read through the list representing the hand a million
+times, each time pulling out the rank without the suit or vice versa.
+It seems that I should begin by going through the hand <EM>once,</EM>
+extracting various kinds of information into a bunch of variables.
+I'll probably have <CODE>ranks</CODE> and <CODE>suits</CODE>, along with things like
+<CODE>pairs</CODE>, which will list the ranks that appear twice in the
+hand.  I'm not sure exactly what variables I'll need, but I am now
+impatient to start programming.  What I'm going to do is write an
+initialization procedure to set up all this information.
+
+<P>In revising this chapter for the second edition, I find that I have
+very different ideas about how to write this initialization procedure.  But
+I think that it's worthwhile, since this is a chapter about planning a
+program and not about the finished product, to preserve my original version
+and the reasoning that led me to write it.  In the next section I'll show
+another approach.
+
+<P><PRE>to poker.init :cards                  ;; first edition version
+make &quot;ranks []
+make &quot;suits []
+make &quot;pairs []
+make &quot;threes []
+make &quot;fours []
+read.cards :cards
+end
+</PRE>
+
+<P><CODE>Read.cards</CODE>, when I write it, will insert new members into the lists
+that <CODE>poker.init</CODE> sets up as empty lists.  Why <CODE>pairs</CODE>, <CODE>
+threes</CODE>, and <CODE>fours</CODE> but not, for example, <CODE>straights</CODE> and <CODE>
+flushes</CODE>?  Pairhood is a property of just part of a hand, whereas
+straighthood is a property of the entire hand.  It doesn't make sense to say
+that three of the five cards form a straight.  But the lists <CODE>:ranks</CODE>
+and <CODE>:suits</CODE> will help in determining whether the hand is a straight or
+a flush, respectively.  For instance, a flush is a hand in which there is
+only one suit, so if <CODE>:suits</CODE> turns out to be a list of length one, the
+hand is a flush.  A full house is a hand with one rank listed in <CODE>
+:threes</CODE> and another listed in <CODE>:pairs</CODE>.
+
+<P>I seem to be violating my own rules here, with all these explicit
+assignments to variables that are not made <CODE>local</CODE>.  But of
+course the whole point of an initialization procedure is that the
+variables will be used later by some other procedure, not this one or
+one of its subprocedures.  In a large project, it's typical for an
+initialization procedure to assign values to nonlocal variables.  If
+I'm being careful, when I get around to writing the top-level <CODE>
+pokerhand</CODE> I'll probably put <CODE>local</CODE> instructions for these
+variables there.
+
+<P>I can write <CODE>read.cards</CODE> without thinking about it at all, and I hope you
+can too.  It's one of the standard templates: &quot;Do something to each
+member of a list.&quot;
+
+<P><PRE>to read.cards :cards
+foreach :cards &quot;read.card
+end
+</PRE>
+
+<P>It's not obvious what goes inside <CODE>read.card</CODE>, but I can imagine
+some of the instructions.  So I'll start writing it anyway.
+
+<P><PRE>to read.card :card
+make &quot;ranks fput butlast :card :ranks
+make &quot;suits fput last :card :suits
+...
+</PRE>
+
+<P>Okay, time to do some thinking.  I can see that there are going to be
+a lot of those <CODE>make</CODE>, <CODE>fput</CODE> instructions.  I should have a
+subprocedure to handle it.
+
+<P><PRE>to read.card :card
+insert butlast :card &quot;ranks
+insert last :card &quot;suits
+...
+</PRE>
+
+<P>(By the way, do you see why I extract the rank of a card
+with <CODE>butlast</CODE> rather than <CODE>first</CODE>?  It wouldn't matter,
+except for the tens where the rank is two digits.  That is, the ten
+of spades is represented by the word <CODE>10s</CODE>.  The <CODE>first</CODE> of
+that word is the single digit <CODE>1</CODE>; its <CODE>butlast</CODE> is <CODE>10</CODE>,
+the number we really want.)  
+
+<P>I know that the second input to <CODE>insert</CODE> has to be the name of the
+variable (like <CODE>&quot;ranks</CODE>) and not the value of the variable (like <CODE>
+:ranks</CODE>) because I've used techniques like this before.  That input is going
+to be used, among other things, as the first input to a <CODE>make</CODE>
+invocation.  <CODE>Make</CODE> needs the <EM>name</EM> of the variable in order to
+be able to change its value.  Although this particular notation is specific
+to Logo, most programming languages have some way to distinguish between
+<EM>call by value</EM> (<CODE>:ranks</CODE>) and <EM>call by name</EM> (<CODE>&quot;ranks</CODE>)
+or some similar mechanism to handle the special cases in which a
+subprocedure must be able to modify a superprocedure's variable.
+
+<P>What about <CODE>pairs</CODE> and so on?  The idea is that if I've seen this
+particular rank before, I should insert it in <CODE>pairs</CODE>:
+
+<P><PRE>if memberp butlast :card :ranks [insert butlast :card &quot;pairs]
+</PRE>
+
+<P>But there's a bug.  If I put that instruction after the ones
+I've already written, the rank will <EM>always</EM> be found in <CODE>
+:ranks</CODE> because I've just put it there!  Instead I have to put this
+instruction <EM>before</EM> the one that inserts into <CODE>:ranks</CODE>.
+In fact, the same problem will arise with the other lists.  I have to
+start by testing <CODE>:threes</CODE> and inserting into <CODE>:fours</CODE>, and
+work my way down to <CODE>:ranks</CODE>.  This illustrates a general rule:
+<EM>Always make the most restrictive test first.</EM> I learned that
+rule through hours of debugging earlier projects; now I recognize the
+situation right away.  Here's the finished procedure:
+
+
+<P><PRE>to read.card :card
+insert last :card &quot;suits
+if memberp butlast :card :threes [insert butlast :card &quot;fours stop]
+if memberp butlast :card :pairs [insert butlast :card &quot;threes stop]
+if memberp butlast :card :ranks [insert butlast :card &quot;pairs stop]
+insert butlast :card &quot;ranks
+end
+</PRE>
+
+<P>The <CODE>stop</CODE> commands are just for efficiency.  Suppose
+I've found a particular rank three times already in this poker hand,
+and the card I'm looking at now is the fourth of the same rank.  Then
+the first <CODE>if</CODE> will succeed, since the rank was already a member
+of <CODE>:threes</CODE>.  If the <CODE>stop</CODE> command were omitted, I'd go on
+to the next <CODE>if</CODE> instruction, which would find the rank in <CODE>
+:pairs</CODE> and therefore insert it into <CODE>:threes</CODE>.  But that's
+unnecessary; if I've found the rank in <CODE>:threes</CODE>, there is no need
+to insert it there again!  In other words, if I'm
+about to insert this card in the list of <CODE>fours</CODE>, there is no need
+to check to see if it's in the lists of smaller runs of the same
+rank.  (Of course, it's sort of funny having <CODE>threes</CODE> and <CODE>
+fours</CODE> as lists, since there can't be more than one of them in a
+five-card poker hand!  But this structure makes the instructions
+pleasingly similar.)
+
+<P>I notice another potential bug.  When I add a rank to, for example,
+<CODE>:threes</CODE>, I don't remove it from <CODE>:pairs</CODE>.  So my data base
+will claim that I have a pair as well as three of a kind.  I could
+write a <CODE>remove</CODE> procedure analogous to <CODE>insert</CODE>, but my guess
+is that it won't be necessary.  If I follow the &quot;most restrictive
+test first&quot; principle later in the program, I'll know I have three of
+a kind before I ever look at <CODE>:pairs</CODE>.  If it turns out to be a
+problem later, I'll fix it then.
+
+<P>
+I'm slightly annoyed that this procedure computes <CODE>butlast :card</CODE> so
+many times.  Perhaps it should be
+
+<P><PRE>to read.card :card
+local &quot;rank
+make &quot;rank butlast :card
+...
+</PRE>
+
+<P>But in fact I haven't bothered making that change.
+
+<P>Finally, here is the missing subprocedure <CODE>insert</CODE>:
+
+<P><PRE>to insert :item :list
+if memberp :item thing :list [stop]
+make :list fput :item thing :list
+end
+</PRE>
+
+<P>The first instruction is there to ensure that nothing is
+added to the same list twice.  The <CODE>stop</CODE> commands I mentioned
+earlier ought to ensure the same thing, except for the list <CODE>
+:suits</CODE>.  But since I need the instruction for that case anyway, I'll
+take a &quot;belt and suspenders&quot; approach for all the lists.
+
+<P>The input that I've called <CODE>item</CODE> here used to be called <CODE>
+thing</CODE>, because I was thinking, &quot;Insert a thing into a list.&quot; But I
+found that using the procedure <CODE>thing</CODE> next to the variable <CODE>
+thing</CODE> looked too confusing to me, even though it wouldn't have
+bothered the Logo interpreter.
+
+<P>I hope you noticed that the second instruction starts with <CODE>make :list</CODE>
+rather than <CODE>make &quot;list</CODE>.  This is the indirect assignment technique
+that I mentioned briefly in Chapter 3.  Remember that the variable
+<CODE>list</CODE> contains the <EM>name</EM> of another variable, such as <CODE>
+threes</CODE>.  It is that second variable whose value is changed.
+For example,
+
+<P><PRE>insert butlast :card &quot;fours
+</PRE>
+
+<P>invokes <CODE>insert</CODE> with an input whose name is <CODE>list</CODE>
+and whose value is <CODE>fours</CODE>.  In this case, the <CODE>make</CODE>
+instruction inside <CODE>insert</CODE> is equivalent to
+
+<P><PRE>make &quot;fours fput :item thing &quot;fours
+</PRE>
+
+<P>or
+
+<P><PRE>make &quot;fours fput :item :fours
+</PRE>
+
+
+<P><H2>Second Edition Second Thoughts</H2>
+
+<P>I wrote the first edition using versions of Logo without higher order
+functions.  These functions can be written in Logo, and in fact I did write
+them later in the book, but I wasn't using them in this chapter.  But in
+retrospect, the style of creating a variable named <CODE>ranks</CODE> whose value
+is an empty list, and then adding the rank of each card by reassigning a new
+value to the variable, seems much harder to understand than this:
+
+<P><PRE>to poker.init :cards
+make &quot;ranks map &quot;butlast :cards
+make &quot;suits remdup map &quot;last :cards
+...
+</PRE>
+
+<P><CODE>Remdup</CODE> is an operation, primitive in Berkeley Logo, whose
+output is the same as its input, but with duplicate members removed.
+
+<P>As for <CODE>pairs</CODE>, <CODE>threes</CODE>, and <CODE>fours</CODE>, I think they are most
+easily replaced by an array that keeps track of the number of times each
+rank appears in the hand.
+
+<P><PRE>to poker.init :cards                         ;; second edition version
+make &quot;ranks map [ranknum butlast ?] :cards
+make &quot;suits remdup map &quot;last :cards
+make &quot;rankarray {0 0 0 0 0 0 0 0 0 0 0 0 0}
+foreach :ranks [setitem ? :rankarray (item ? :rankarray)+1]
+end
+
+to ranknum :rank                             ;; turn rank to number
+if :rank = &quot;a [output 1]
+if :rank = &quot;j [output 11]
+if :rank = &quot;q [output 12]
+if :rank = &quot;k [output 13]
+output :rank
+end
+</PRE>
+
+<P>Since I want to use the card's rank as an index into an array,
+I have to use a number from 1 to 13 to represent the ranks inside the
+program, even though the person using the program will still represent a
+rank in the more human-readable form of A for ace and so on.
+
+<P>
+
+<P>Where the first version of the program would test for four of a kind with
+
+<P><PRE>if not emptyp :fours ...
+</PRE>
+
+<P>this new version will say
+
+<P><PRE>if memberp 4 :rankarray ...
+</PRE>
+
+<P>Notice that my second thoughts are about low-level details of the program.
+I haven't changed my mind about the big idea, which is to have a procedure
+<CODE>poker.init</CODE> that examines the hand and converts the information into a
+format in which the rest of the program can use it more easily.  This is the
+same idea I used in the tic-tac-toe program of Chapter 6, in which I
+converted a human-readable &quot;position&quot; such as
+
+<P><PRE>{x o 3 x x 6 7 8 o}
+</PRE>
+
+<P>into an internal list of &quot;triples&quot;:
+
+<P><PRE>[xo3 xx6 78o xx7 ox8 36o xxo 3x7]
+</PRE>
+
+<P>From now on, I won't show two versions of every procedure.  I'll use the
+revised data representation, even though the chapter tells the story of
+how I wrote the older version of the program.
+
+<P><H2>Planning and Debugging</H2>
+
+<P>Ideally, according to structured programming, you should never have to
+do any debugging.  You should start with a complete, clear program
+specification.  Then you should use the approved style to translate
+that specification into a program.  Then you should be able to <EM>
+prove</EM> mathematically that your program is correct!  Debugging is a
+relic of the dark ages.
+
+<P>That's not the Logo approach.  I've already done some debugging in
+this project.  Programming is sort of like real life: you don't always
+get it right the first time.  Structured programmers don't get it
+right the first time either; the difference is that Logoites aren't
+embarrassed about it.  We think of debugging as part of the process of
+solving problems in general.
+
+<P>If you're a student in a school, the odds are that you aren't often
+encouraged to accept debugging as valuable.  When you hand in a paper
+or a quiz, the teacher doesn't point out errors and invite you to try
+again.  Instead he marks your errors in red ink and takes off points
+for them.  You're taught that your work has to be perfect the first
+time.  One of the strong contributions that computer programming in
+general, and Logo in particular, has made to education is to provide
+one context in which you are shown a more realistic approach to making
+and correcting mistakes.
+
+<P><H2>Classifying Poker Hands</H2>
+
+<P>The main thing remaining to be done in my project is the collection of
+predicates like <CODE>fourp</CODE> and <CODE>royal.flushp</CODE> to check for
+particular kinds of poker hands.  I decided to write some of the easy
+ones, namely the ones for multiples of the same rank.
+
+<P>
+
+<P><PRE>to fourp
+output memberp 4 :rankarray
+end
+
+to threep
+output memberp 3 :rankarray
+end
+
+to pairp
+output memberp 2 :rankarray
+end
+
+to full.housep
+output and threep pairp
+end
+</PRE>
+
+<P>These are all pretty obvious.  Notice, though, that one thing has
+changed since my initial idea: these procedures don't take <CODE>:cards</CODE> as
+an input.  They don't examine the poker hand directly; they
+examine the variables set up by the initialization procedure.
+
+<P>
+
+<P>Now I want to start putting all these pieces together, so I'm going to
+write a preliminary version of <CODE>pokerhand</CODE>.
+
+<P><PRE>to pokerhand :cards
+poker.init :cards
+if fourp [print [four of a kind] stop]
+if full.housep [print [full house] stop]
+if threep [print [three of a kind] stop]
+if pairp [print ifelse paircount = 1 [one pair] [two pairs] stop]
+print [something else]
+end
+
+to paircount
+output count locate 2 1
+end
+
+to locate :number :index
+if :index &gt; 13 [output []]
+if (item :index :rankarray) = :number ~
+   [output fput :index (locate :number :index+1)]
+output locate :number :index+1
+end
+</PRE>
+
+<P>If there's a pair, I can't simply use <CODE>memberp</CODE> to find out
+how many pairs are in the hand.  Instead, the procedure <CODE>locate</CODE> looks
+at each member of <CODE>:rankarray</CODE> and outputs a list of all the ranks of
+which there are exactly two cards in the hand.  For this purpose I could
+have had <CODE>locate</CODE> output the number of pairs, which would be a little
+easier than computing the list of ranks of pairs.  But I recall that I want
+to be able to say things like &quot;pair of sevens,&quot; and for that I'll need the
+actual ranks.
+
+<P>Let's try it:
+
+<P><PRE>? <U>pokerhand [ah 2c 4d 2s 6h]</U>
+I don't know how  to one  in pokerhand
+[if pairp [print ifelse paircount = 1 [one pair] [two pairs] stop]]
+</PRE>
+
+<P>Looks like a bug.  (This really happened; I'm not just making it
+up to be able to talk about debugging!)  The first step in solving a
+problem like this is to read the error message carefully.  This message
+tells me that when the error happened, the immediately active procedure was
+<CODE>pokerhand</CODE>.  So that's where I should look for a mistake.  (The exact
+form of the message will be different in different versions of Logo, but
+they'll all give you that piece of information.  In Berkeley Logo, the error
+message also includes the instruction line in which the error occurred.)  I
+then edited <CODE>pokerhand</CODE> and looked for the word <CODE>one</CODE>.  I found it
+in the list
+
+<P><PRE>[one pair]
+</PRE>
+
+<P>which is one of the inputs to an <CODE>ifelse</CODE> operation.  Aha!  The
+trouble is that <CODE>ifelse</CODE> <EM>evaluates</EM> whichever input is selected
+by its predicate input, so it's trying to evaluate that list as a
+Logo expression.  What I meant was this:
+
+<P><PRE>if pairp [print ifelse paircount = 1 [[one pair]] [[two pairs]] stop]
+</PRE>
+
+<P>Now it should evaluate <CODE>[[one pair]]</CODE> and come up with the
+value <CODE>[one pair]</CODE> to use as the input to <CODE>print</CODE>.  Let's try again:
+
+<P><PRE>? <U>pokerhand [ah 2c 4d 2s 6h]</U>
+one pair
+? <U>pokerhand [2h 5d 2s 2c 7d]</U>
+three of a kind
+? <U>pokerhand [2h 5d 2s 2c 5h]</U>
+full house
+? <U>pokerhand [3h 4h 5h 6h 7h]</U>
+something else
+</PRE>
+
+<P>So far so good, but of course there is more work to do.  We need to
+write <CODE>straightp</CODE>, <CODE>flushp</CODE>, and their combinations: straight
+flush and royal flush.  I think I shouldn't have an instruction in
+<CODE>pokerhand</CODE> testing <CODE>royal.flushp</CODE> as I originally planned;
+instead I should test for <CODE>straightp</CODE> and, if that's true, look
+for special cases within that.
+
+<P><PRE>to flushp
+output emptyp butfirst :suits
+end
+</PRE>
+
+<P>It's not so obvious how to write <CODE>straightp</CODE>.  Here's my
+plan:  First, find the lowest-rank card in the hand.  Then, in order to
+have a straight, the next four ranks must also be present in the hand.
+
+<P>&raquo;This isn't the only possible way to test for a straight; can you think
+of, and implement, another?
+
+<P><PRE>to straightp
+output nogap (reduce &quot;min :ranks) 5
+end
+
+to min :a :b
+output ifelse :a &lt; :b [:a] [:b]
+end
+
+to nogap :smallest :howmany
+if :howmany=0 [output &quot;true]
+if not equalp (item :smallest :rankarray) 1 [output &quot;false]
+output nogap :smallest+1 :howmany-1
+end
+</PRE>
+
+<P><CODE>Nogap</CODE> starts with the smallest rank in the hand and checks that there
+is exactly one card in each of that and the next four ranks.  It takes
+advantage of the fact that I'm representing ranks internally as numbers;
+it can just add 1 to a rank to get the next one in sequence.  If
+<CODE>:howmany</CODE> reaches zero, it means that we have indeed found all five
+consecutive ranks in the hand.  If one of the five desired ranks isn't in
+the hand, or if the hand has more than one card in any of the ranks, then
+the hand isn't a straight.
+
+<P>There is one problem with this approach.  The ace
+can be used either high card (10-J-Q-K-A) or low card (A-2-3-4-5) in a
+straight.  <CODE>Straightp</CODE> thinks that the ace can only be the low card.
+We'll fix that later.
+
+<P>Now let's try some other cases.  I've just added the line
+
+<P><PRE>if straightp [print [straight] stop]
+</PRE>
+
+<P>to <CODE>pokerhand</CODE>.  It doesn't much matter where I put that
+line, because there is no danger of a straight also being found as a
+multiple of any one rank.  This instruction will be changed,
+eventually, because we want to test for straight flush and so on.  But
+for now this will make it possible to debug <CODE>straightp</CODE>.
+
+<P><PRE>? <U>pokerhand [3h 6d 7h 5c 4d]</U>
+straight
+? <U>pokerhand [3h 6d 7h 5c 8d]</U>
+something else
+</PRE>
+
+<P>I picked those examples pretty much at random.  It's a good idea,
+when testing a procedure, to pick test cases &quot;near the boundaries&quot; of what
+the program is supposed to accept.  For example, what about an ace-low
+straight, or a king-high?  What about a hand in which &quot;the next four
+ranks&quot; don't exist, because the lowest card is a Jack?
+
+<P><PRE>? <U>pokerhand [ah 2d 3c 4c 5h]</U>
+straight
+? <U>pokerhand [9d 10c jh qh kh]</U>
+straight
+? <U>pokerhand [js jh qs qh kd]</U>
+two pairs
+</PRE>
+
+<P>(Actually, that last example may never invoke <CODE>
+straightp</CODE> at all, if the test for <CODE>pairp</CODE> comes first in <CODE>
+pokerhand</CODE>.)  Anyway, it
+looks okay.  I could try more examples but I think I believe it.  I
+now decide that the instruction I just put into <CODE>pokerhand</CODE> should
+be
+
+<P><PRE>if straightp [print ifelse flushp [[straight flush]] [[straight]] stop]
+</PRE>
+
+<P>and that it should be followed by
+
+<P><PRE>if flushp [print [flush] stop]
+</PRE>
+
+<P>(The <CODE>if flushp</CODE> instruction has to come second because
+of the principle of &quot;most restrictive first.&quot; If that test came first,
+a straight flush would be reported as just a flush.) Time for more
+tests:
+
+<P><PRE>? <U>pokerhand [3h 6h ah kh 7h]</U>
+flush
+? <U>pokerhand [3h 6h ad kh 7h]</U>
+something else
+? <U>pokerhand [3h 6h 4h 5h 7h]</U>
+straight flush
+? <U>pokerhand [3h 6h 4h 5s 7h]</U>
+straight
+</PRE>
+
+<P>Now it's time to solve the problem of the ace-high straight.
+It turns out to be easy; if the hand has an ace, then
+I can use <CODE>nogap</CODE>, the subprocedure of <CODE>straightp</CODE> that
+checks for consecutive ranks, to check for the four ranks from 10 to king.
+
+<P><PRE>to ace.highp
+if not equalp (item 1 :rankarray) 1 [output &quot;false]
+output nogap 10 4
+end
+</PRE>
+
+<P>That's the end of the categories of poker hands, but to put it all
+together requires a little editing of <CODE>pokerhand</CODE>:
+
+<P><PRE>to pokerhand :cards
+local [ranks suits rankarray]
+poker.init :cards
+if fourp [print [four of a kind] stop]
+if full.housep [print [full house] stop]
+if threep [print [three of a kind] stop]
+if pairp [print ifelse paircount = 1 [[one pair]] [[two pairs]] stop]
+if ace.highp [print ifelse flushp [[royal flush]] [[straight]] stop]
+if straightp [print ifelse flushp [[straight flush]] [[straight]] stop]
+if flushp [print [flush] stop]
+print [nothing!]
+end
+</PRE>
+
+<P><H2>Embellishments</H2>
+
+<P>I've now done more or less what I set out to do.  It took 14
+procedures.  I hope you have a feeling for the process of
+switching back and forth between thinking about a particular
+subproblem and thinking about the overall structure of the program.
+
+<P>I haven't done every detail of what I first suggested.  In particular,
+I don't have the information about particular ranks in what I print.
+I think perhaps that's more effort than this project seems worth to
+me.  (I'm not just being cute by saying &quot;to me&quot;; the point is that
+a real poker enthusiast might want to spend a lot of time on this
+program and make it as beautiful as possible.) But just to show how a
+completed program can be modified, I'll make it print things like
+<CODE>pair of sixes</CODE> instead of just <CODE>one pair</CODE>.
+
+<P>First I have to be able to find words like &quot;<CODE>sixes</CODE>&quot; starting
+with a rank indicator like <CODE>6</CODE>.
+
+<P><PRE>to plural :rank
+output item :rank [aces twos threes fours fives sixes
+                   sevens eights nines tens jacks queens kings]
+end
+</PRE>
+
+<P>The next step is to change one instruction in <CODE>pokerhand</CODE> to use
+this new tool:
+
+<P><PRE>if pairp [print ifelse paircount = 1
+                       [sentence [pair of] plural first locate 2 1]
+                       [[two pairs]]
+          stop]
+</PRE>
+
+<P>(If you were confused about the double square brackets
+around <CODE>one pair</CODE> and <CODE>two pairs</CODE> before, seeing this new
+version in which one of the possibilities is the output from a
+procedure, not a literal list, might help.)
+
+<P><PRE>? <U>pokerhand [ah 7s 3d 10c 7c]</U>
+pair of sevens
+</PRE>
+
+<P>&raquo;If you're motivated, you can modify the messages for other categories
+to include the specific rank information.  You might want to change
+&quot;<CODE>nothing</CODE>&quot; to &quot;<CODE>queen high</CODE>,&quot; for example.
+
+<P>&raquo;What if you wanted to use this program on a seven-card-stud hand?  In
+other words, instead of a list of five cards, you'd be given a list of
+seven, from which you'd have to pick the best five.  The main thing I
+can think of is that you'd have to be more careful about the order of
+the <CODE>if</CODE> instructions in <CODE>pokerhand</CODE>.  I've said that you can
+test <CODE>threep</CODE> either before or after <CODE>straightp</CODE> because they
+can't both be true.  But that's not the case for a seven-card hand:
+
+<P><PRE>[3h 3s 3d 4d 5s 6h 7c]
+</PRE>
+
+<P>If you try this challenge, make sure your program announces
+
+<P><PRE>[8s 9s 10s js qs kh ad]
+</PRE>
+
+<P>as a straight flush, not as an ace-high straight.
+
+<P><H2>Putting the Project in a Context</H2>
+
+<P>I wrote this program because I was looking for an example for this
+book that would be not too long, not too short.  That's kind of an
+artificial reason for starting a project.  In real life, if I wrote a
+program like this one, it would be part of a larger program that
+would actually <EM>play</EM> poker.
+
+<P>In that context the problem would become very different.  We wouldn't
+want merely to print the designation of a hand; we'd want to be able
+to compare several hands and announce a winner.  To do that, we'd have
+to attach something like a numerical ranking to the hand, which might
+become the output from <CODE>pokerhand</CODE>.  But it can't be just a single
+number; there are too many possible hands to have a list of all of
+them in rank order.  Instead, the ranking of a hand might be a list of
+numbers.  <CODE>[5 7 10]</CODE> might mean that the hand is a full house (I'm
+guessing that that would rank about fifth in value), with three sevens
+and two tens.  To compare two lists of numbers, compare their <CODE>
+first</CODE>s; if those are equal, go on to compare the next members.
+
+<P>The point is that I'm now back to something approaching top-down
+planning.  As the scale of the project becomes a lot bigger, that kind
+of advance planning seems necessary.  But this isn't really top-down
+because comparing two hands is just one subproblem of playing poker.
+Really, according to the top-down view, I should start by designing
+the top-level procedure <CODE>poker</CODE>.  Perhaps a first attempt might
+look like this:
+
+<P><PRE>to poker
+deal.cards
+bid
+draw.more.cards
+bid
+pokerhand
+end
+</PRE>
+
+<P>But it would be premature to type this into a computer.  We
+have to think about issues like these: Is the computer a player or
+does it just deal and bank for the other players?  How many people can
+play?  What is a good strategy for bidding?
+
+<P>In the end it might turn out that the <CODE>pokerhand</CODE> we've just
+written wouldn't fit into the larger project; it might have to be
+rewritten for that context.  To a structured programmer, the effort
+we've put in would then be wasted.  But I think that even if every
+procedure had to be edited, I'd benefit from having taken the time to
+understand how to solve this subproblem.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch12/v1ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch14/v1ch14.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<PRE>
+to pokerhand :cards
+local [ranks suits rankarray]
+poker.init :cards
+if fourp [print [four of a kind] stop]
+if full.housep [print [full house] stop]
+if threep [print [three of a kind] stop]
+if pairp [print ifelse paircount = 1 [[one pair]] [[two pairs]] stop]
+if ace.highp [print ifelse flushp [[royal flush]] [[straight]] stop]
+if straightp [print ifelse flushp [[straight flush]] [[straight]] stop]
+if flushp [print [flush] stop]
+print [nothing!]
+end
+
+to poker.init :cards
+make "ranks map [ranknum butlast ?] :cards
+make "suits remdup map "last :cards
+make "rankarray {0 0 0 0 0 0 0 0 0 0 0 0 0}
+foreach :ranks [setitem ? :rankarray (item ? :rankarray)+1]
+end
+
+to ranknum :rank
+if :rank = "a [output 1]
+if :rank = "j [output 11]
+if :rank = "q [output 12]
+if :rank = "k [output 13]
+output :rank
+end
+
+to fourp
+output memberp 4 :rankarray
+end
+
+to threep
+output memberp 3 :rankarray
+end
+
+to pairp
+output memberp 2 :rankarray
+end
+
+to full.housep
+output and threep pairp
+end
+
+to paircount
+output count locate 2 1
+end
+
+to locate :number :index
+if :index > 13 [output []]
+if (item :index :rankarray) = :number ~
+   [output fput :index (locate :number :index+1)]
+output locate :number :index+1
+end
+
+to flushp
+output emptyp butfirst :suits
+end
+
+to straightp
+output nogap (reduce "min :ranks) 5
+end
+
+to min :a :b
+output ifelse :a < :b [:a] [:b]
+end
+
+to nogap :smallest :howmany
+if :howmany=0 [output "true]
+if not equalp (item :smallest :rankarray) 1 [output "false]
+output nogap :smallest+1 :howmany-1
+end
+
+to ace.highp
+if not equalp (item 1 :rankarray) 1 [output "false]
+output nogap 10 4
+end
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch12/v1ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch14/v1ch14.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch13/poker.lg b/js/games/nluqo.github.io/~bh/v1ch13/poker.lg
new file mode 100644
index 0000000..17b642b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch13/poker.lg
@@ -0,0 +1,78 @@
+to pokerhand :cards
+local [ranks suits rankarray]
+poker.init :cards
+if fourp [print [four of a kind] stop]
+if full.housep [print [full house] stop]
+if threep [print [three of a kind] stop]
+if pairp [print ifelse paircount = 1 [[one pair]] [[two pairs]] stop]
+if ace.highp [print ifelse flushp [[royal flush]] [[straight]] stop]
+if straightp [print ifelse flushp [[straight flush]] [[straight]] stop]
+if flushp [print [flush] stop]
+print [nothing!]
+end
+
+to poker.init :cards
+make "ranks map [ranknum butlast ?] :cards
+make "suits remdup map "last :cards
+make "rankarray {0 0 0 0 0 0 0 0 0 0 0 0 0}
+foreach :ranks [setitem ? :rankarray (item ? :rankarray)+1]
+end
+
+to ranknum :rank
+if :rank = "a [output 1]
+if :rank = "j [output 11]
+if :rank = "q [output 12]
+if :rank = "k [output 13]
+output :rank
+end
+
+to fourp
+output memberp 4 :rankarray
+end
+
+to threep
+output memberp 3 :rankarray
+end
+
+to pairp
+output memberp 2 :rankarray
+end
+
+to full.housep
+output and threep pairp
+end
+
+to paircount
+output count locate 2 1
+end
+
+to locate :number :index
+if :index > 13 [output []]
+if (item :index :rankarray) = :number ~
+   [output fput :index (locate :number :index+1)]
+output locate :number :index+1
+end
+
+to flushp
+output emptyp butfirst :suits
+end
+
+to straightp
+output nogap (reduce "min :ranks) 5
+end
+
+to min :a :b
+output ifelse :a < :b [:a] [:b]
+end
+
+to nogap :smallest :howmany
+if :howmany=0 [output "true]
+if not equalp (item :smallest :rankarray) 1 [output "false]
+output nogap :smallest+1 :howmany-1
+end
+
+to ace.highp
+if not equalp (item 1 :rankarray) 1 [output "false]
+output nogap 10 4
+end
+
diff --git a/js/games/nluqo.github.io/~bh/v1ch13/su1.jpg b/js/games/nluqo.github.io/~bh/v1ch13/su1.jpg
new file mode 100644
index 0000000..4ffb22b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch13/su1.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch13/su2.jpg b/js/games/nluqo.github.io/~bh/v1ch13/su2.jpg
new file mode 100644
index 0000000..4dc9537
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch13/su2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch13/ucb.jpg b/js/games/nluqo.github.io/~bh/v1ch13/ucb.jpg
new file mode 100644
index 0000000..45c06cc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch13/ucb.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch13/v1ch13.html b/js/games/nluqo.github.io/~bh/v1ch13/v1ch13.html
new file mode 100644
index 0000000..caa7d7d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch13/v1ch13.html
@@ -0,0 +1,1035 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 13: Planning</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Planning</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch13.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch12/v1ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch14/v1ch14.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="poker.lg"><CODE>poker</CODE></A>
+
+<P><CENTER><IMG SRC="ucb.jpg" ALT="figure: ucb"></CENTER>
+
+<P>The picture above shows some of the architecture on the University of
+California campus at Berkeley.  At the left of the picture is South
+Hall, one of the original campus buildings, with red brick, ivy, and
+many chimneys.  The white brick clock tower that dominates the center
+of the picture is Sather Tower, popularly called the Campanile after
+the building in Venice, Italy, on which it is modeled.  Just to its
+left is Evans Hall, the concrete fortress that houses the Mathematics
+Department.  Andrews Hall, at the very front of the picture,
+is a small, one-floor building with an unusually shaped roof.
+Stephens Hall, mostly hidden by the trees behind Andrews, is a
+yellow-green zigzag.
+
+<P>
+<CENTER><IMG SRC="su1.jpg" ALT="figure: su1"></CENTER>
+
+<P>
+<CENTER><IMG SRC="su2.jpg" ALT="figure: su2"></CENTER>
+
+<P>And here is a similar view of the Stanford University campus in
+Palo Alto, California.  Compared to the Berkeley buildings, the ones
+you see here look very uniform.  At the left in the first photo is
+a corner of the Quadrangle, the central building complex of the campus.
+The School of Education, down the path on the left, follows the same
+pattern of rough tan stone with a sloping orange roof.  The Meyer Library,
+at the rear of the photo, follows the same color scheme, even though it's
+obviously a more recent building.  The second photo shows the new School
+of Law.  In this building the architect has clearly worked to combine
+the same tan stone, orange roof theme with more modern details: the texture
+of the stone is more uniform and the arches are less ornate.
+
+Both of these campuses are the result of architectural planning, but
+they illustrate two different <EM>styles</EM> of planning.  The
+Stanford campus was planned <EM>top-down;</EM> first came an overall
+concept and then the details to fill in that concept.  The Berkeley
+campus was planned <EM>bottom-up;</EM> each new building was designed
+to fit its architect's idea of the immediate, local situation.  Some
+of the individual buildings are quite beautiful, but it's those
+buildings, rather than the campus as a unit, that attract attention.
+
+<P>(I'm oversimplifying, of course.  In a strictly top-down approach, the
+entire campus would be laid out on paper before any building was
+built.  Adding new buildings later, even if they're made to fit in
+with the old ones, means that the original plan was defective.
+Instead of patching it up, a top-down purist would have the architects
+begin all over again, allowing for more buildings from the beginning
+of the design process.  And in fact the original Berkeley campus was
+much more uniform than the campus today, but very rapid growth led to
+widespread changes in the original plan.  Still, the difference in
+architectural planning styles is striking and suggestive.)
+
+<P>The same two planning strategies are possible in computer
+programming.  Suppose you want to write a program to play
+tic-tac-toe, as I did in Chapter 6.  You can start by saying,
+&quot;Let's see if I can draw the board.&quot; You'd write a procedure to draw the
+four lines that make up the tic-tac-toe grid.  Then you might write
+procedures to draw an X and an O in the right size for the boxes you've
+made.  And so on.  That would be a bottom-up design.  Alternatively, you
+might start by deciding on the major tasks that your program will have to
+carry out.  You might then write a top-level procedure like this:
+
+<P><PRE>to ttt
+drawboard
+choose.x.o
+playgame
+end
+
+to playgame
+move &quot;x
+if winp &quot;x [stop]
+move &quot;o
+if winp &quot;o [stop]
+playgame
+end
+</PRE>
+
+<P>In writing <CODE>ttt</CODE> and <CODE>playgame</CODE>, I've freely used
+subprocedures that I haven't written yet.  Later I could fill in the
+gaps, writing procedures that will do exactly what's needed to fill
+their places in the main procedure.
+
+<P><H2>Structured Programming</H2>
+
+<P>In recent years the majority of computer scientists have adopted a
+school of thought called structured programming.  This
+phrase--the title of a 1972 book by O. J. Dahl,
+Edsger Dijkstra,
+and C. A. R. Hoare--describes an
+uncompromising top-down philosophy of programming.  Structured
+programming is more than just the top-down idea, though; it also
+includes rules for each step in the program development process.  For
+example, one potential problem with top-down programming is that it's
+hard to test a procedure you've written until its subprocedures are
+written also.  (By contrast, a subprocedure can be tested before its
+superprocedures are written.) Structured programming solves this
+problem by recommending the use of <EM>stubs</EM>--preliminary
+versions of the subprocedures that don't really do the job but
+provide some result that allows the higher-level procedures to be
+tested.  For example, an operation that hasn't been written yet might
+be replaced by a stub that always outputs zero, or the empty list, or
+some other simple, appropriate value.
+
+<P>More importantly, the structured programming approach tells us not to write
+any procedures at all until we've first written a detailed specification of
+the how the program should behave, and then a detailed plan of how it will
+be organized to achieve that goal.
+
+<P>The programming language Pascal was designed
+by Niklaus Wirth in 1970
+to promote a programming style and philosophy like that of
+structured programming.  Pascal is meant to teach
+a top-down structured style by providing just the tools needed
+for that approach but making it hard to program in other styles.
+The widespread use of Pascal in college programming courses reflects
+the popularity of the structured programming approach.
+
+<P>(As I am preparing the second edition of this book in 1995, Pascal
+is just beginning to lose ground as a teaching language; several competing
+schools of thought about programming have led to diverse language choices.
+The best known right now is the language C++, which exemplifies an <EM>
+object oriented</EM> approach to program structure.  Others are Ada and
+Modula, two languages more or less in the Pascal tradition, and Scheme,
+which is, like Logo, a dialect of Lisp and represents the artificial
+intelligence tradition.)
+
+<P><H2>Critique of Structured Programming</H2>
+
+<P>One area of computer science in which the top-down approach has not
+been accepted so enthusiastically is artificial intelligence.  AI
+researchers try to program computers to carry out ill-defined, complex
+tasks (playing chess is a prototypical example) for which there is no
+single, obvious method.  In that kind of research project you can't
+start by writing down on paper a complete specification of how the
+finished program will be organized.  Instead you start with a more or
+less vague idea, you try programming it, and then you play around with
+it to try to improve the results.  That's one reason why the majority
+of AI programs are written in Lisp, a language that is interactive,
+so it encourages you to &quot;program at the keyboard.&quot; Pascal, on the
+other hand, was designed to
+be a <EM>compiled</EM> language, in which you must write
+an entire program before you can carry out a single instruction.
+
+<P>Logo, a dialect of Lisp, was developed by artificial intelligence
+researchers.  Their idea was to see if they could use some of their
+experience with the problem of trying to get computers to think in
+order to help human beings learn to think more effectively--at least
+about certain kinds of problems.  You shouldn't be surprised,
+therefore, to learn that Logoites tend not to be enthusiastic about
+structured programming.
+
+<P>It's not that we're against planning.  On the contrary!  Planning is
+one of the most fundamental problem-solving skills.  But there are
+many kinds of planning.  The kind in which every part of your
+program's behavior is written down before you begin programming isn't
+very realistic in many contexts.  Even in the large-scale business or
+government projects that structured programmers like to talk about,
+it's very common that the ultimate users of a program change their
+minds about how it should work, once they have some experience with
+using it.  The wise programmer will anticipate these changing
+requirements in the original planning process.  Still, one never
+anticipates everything; a sensible person faced with an unexpected
+change in requirements will be flexible
+enough to modify the initial plan, not start all over again.  And it's
+even more true for people like you, who are just learning to program,
+that the &quot;goal&quot; of a programming project is exploratory rather than
+predetermined.
+
+<P>Sometimes human lives depend on the correct operation of a computer
+program.  In one famous example, just about the time that the first edition
+of this book was published, one person died and others were injured because
+the program controlling a medical X-ray machine gave patients massive
+overdoses of radiation.  Certainly, any programming techniques that can help
+prevent such accidents are valuable.  Still, the techniques applicable to
+life-or-death programming situations are not necessarily the best techniques
+for beginning learners, nor even for experienced researchers who are
+exploring a new area rather than writing production programs.
+
+<P><H2>A Sample Project: Counting Poker Hands</H2>
+
+<P>To make all this more concrete, I'd like to show you an actual planning
+process for a programming project.  I'm going to write a Logo program and
+tell you what I'm doing as I go along.  I am sitting at a rather crowded
+desk; on my left is a microcomputer running Logo, and on my right is the
+terminal with which I call up the large computer I use for text editing.
+I'll switch back and
+forth as I work.<SUP>*</SUP> Please understand
+that I'm not showing you the Official Logo Programming Style.  I'm showing
+you one way in which one Logo programmer approaches a particular project.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Home computers have become more
+powerful since I wrote that in 1984.  I can now run Logo in one window and
+edit the book in another window on the same computer.</SMALL></BLOCKQUOTE></SMALL><P>The project I have in mind is to announce the value of a poker hand.
+That is, the program should behave something like this:
+
+<P><PRE>? <U>pokerhand [3s qc 3d 3h qd]</U>
+full house (threes and queens)
+? <U>pokerhand [4c 7h 5d 3c 6d]</U>
+straight (seven high)
+? <U>pokerhand [2h 10d 5s 6s 10s]</U>
+pair of tens
+?
+</PRE>
+
+<P>In imagining this sample dialogue, I'm doing a kind of
+top-down planning.  I've specified, for example, the form in which I
+intend to represent a hand (a list of five cards) and a card (a word
+combining a rank from
+
+<P><PRE>[a 2 3 4 5 6 7 8 9 10 j q k]
+</PRE>
+
+<P>with a suit from
+
+<P><PRE>[h s d c]
+</PRE>
+
+<P>standing for hearts, spades, diamonds, and clubs).  I
+suppose that means that I've decided we're playing five-card draw
+poker rather than seven-card stud.  But later I may want to think
+again about that choice.  I've also written down a few of the specific
+messages the program can print, although I'm much less certain about
+these.  I may or may not actually bother with the details in
+parentheses, for example.
+
+<P>Okay, how will the program work?  I envision a series of tests for
+particular kinds of poker hands.  So in my head there is a vague
+procedure template like this:
+
+<P><PRE>to pokerhand :cards
+if royal.flushp :cards [print [royal flush] stop]
+if fourp :cards [print [four of a kind] stop]
+if straight.flushp :cards [print [straight flush] stop]
+...
+print [I suggest you fold.]
+end
+</PRE>
+
+<P>This isn't something I'm ready to type into my computer.
+I'm still thinking about how the details are likely to work out.  One
+thing that comes to mind is that, as it stands, there will be a great
+duplication of effort.  The test for a royal flush is just like the
+test for a straight flush, plus a particular special condition (ace
+high).  I shouldn't really make that test twice.  For that matter the
+test for a straight flush is the test for a straight combined with
+the test for a flush.  I shouldn't have another instruction starting
+<CODE>if straightp</CODE> repeating the same test.
+
+<P><H2>An Initialization Procedure</H2>
+
+<P>I also shouldn't read through the list representing the hand a million
+times, each time pulling out the rank without the suit or vice versa.
+It seems that I should begin by going through the hand <EM>once,</EM>
+extracting various kinds of information into a bunch of variables.
+I'll probably have <CODE>ranks</CODE> and <CODE>suits</CODE>, along with things like
+<CODE>pairs</CODE>, which will list the ranks that appear twice in the
+hand.  I'm not sure exactly what variables I'll need, but I am now
+impatient to start programming.  What I'm going to do is write an
+initialization procedure to set up all this information.
+
+<P>In revising this chapter for the second edition, I find that I have
+very different ideas about how to write this initialization procedure.  But
+I think that it's worthwhile, since this is a chapter about planning a
+program and not about the finished product, to preserve my original version
+and the reasoning that led me to write it.  In the next section I'll show
+another approach.
+
+<P><PRE>to poker.init :cards                  ;; first edition version
+make &quot;ranks []
+make &quot;suits []
+make &quot;pairs []
+make &quot;threes []
+make &quot;fours []
+read.cards :cards
+end
+</PRE>
+
+<P><CODE>Read.cards</CODE>, when I write it, will insert new members into the lists
+that <CODE>poker.init</CODE> sets up as empty lists.  Why <CODE>pairs</CODE>, <CODE>
+threes</CODE>, and <CODE>fours</CODE> but not, for example, <CODE>straights</CODE> and <CODE>
+flushes</CODE>?  Pairhood is a property of just part of a hand, whereas
+straighthood is a property of the entire hand.  It doesn't make sense to say
+that three of the five cards form a straight.  But the lists <CODE>:ranks</CODE>
+and <CODE>:suits</CODE> will help in determining whether the hand is a straight or
+a flush, respectively.  For instance, a flush is a hand in which there is
+only one suit, so if <CODE>:suits</CODE> turns out to be a list of length one, the
+hand is a flush.  A full house is a hand with one rank listed in <CODE>
+:threes</CODE> and another listed in <CODE>:pairs</CODE>.
+
+<P>I seem to be violating my own rules here, with all these explicit
+assignments to variables that are not made <CODE>local</CODE>.  But of
+course the whole point of an initialization procedure is that the
+variables will be used later by some other procedure, not this one or
+one of its subprocedures.  In a large project, it's typical for an
+initialization procedure to assign values to nonlocal variables.  If
+I'm being careful, when I get around to writing the top-level <CODE>
+pokerhand</CODE> I'll probably put <CODE>local</CODE> instructions for these
+variables there.
+
+<P>I can write <CODE>read.cards</CODE> without thinking about it at all, and I hope you
+can too.  It's one of the standard templates: &quot;Do something to each
+member of a list.&quot;
+
+<P><PRE>to read.cards :cards
+foreach :cards &quot;read.card
+end
+</PRE>
+
+<P>It's not obvious what goes inside <CODE>read.card</CODE>, but I can imagine
+some of the instructions.  So I'll start writing it anyway.
+
+<P><PRE>to read.card :card
+make &quot;ranks fput butlast :card :ranks
+make &quot;suits fput last :card :suits
+...
+</PRE>
+
+<P>Okay, time to do some thinking.  I can see that there are going to be
+a lot of those <CODE>make</CODE>, <CODE>fput</CODE> instructions.  I should have a
+subprocedure to handle it.
+
+<P><PRE>to read.card :card
+insert butlast :card &quot;ranks
+insert last :card &quot;suits
+...
+</PRE>
+
+<P>(By the way, do you see why I extract the rank of a card
+with <CODE>butlast</CODE> rather than <CODE>first</CODE>?  It wouldn't matter,
+except for the tens where the rank is two digits.  That is, the ten
+of spades is represented by the word <CODE>10s</CODE>.  The <CODE>first</CODE> of
+that word is the single digit <CODE>1</CODE>; its <CODE>butlast</CODE> is <CODE>10</CODE>,
+the number we really want.)  
+
+<P>I know that the second input to <CODE>insert</CODE> has to be the name of the
+variable (like <CODE>&quot;ranks</CODE>) and not the value of the variable (like <CODE>
+:ranks</CODE>) because I've used techniques like this before.  That input is going
+to be used, among other things, as the first input to a <CODE>make</CODE>
+invocation.  <CODE>Make</CODE> needs the <EM>name</EM> of the variable in order to
+be able to change its value.  Although this particular notation is specific
+to Logo, most programming languages have some way to distinguish between
+<EM>call by value</EM> (<CODE>:ranks</CODE>) and <EM>call by name</EM> (<CODE>&quot;ranks</CODE>)
+or some similar mechanism to handle the special cases in which a
+subprocedure must be able to modify a superprocedure's variable.
+
+<P>What about <CODE>pairs</CODE> and so on?  The idea is that if I've seen this
+particular rank before, I should insert it in <CODE>pairs</CODE>:
+
+<P><PRE>if memberp butlast :card :ranks [insert butlast :card &quot;pairs]
+</PRE>
+
+<P>But there's a bug.  If I put that instruction after the ones
+I've already written, the rank will <EM>always</EM> be found in <CODE>
+:ranks</CODE> because I've just put it there!  Instead I have to put this
+instruction <EM>before</EM> the one that inserts into <CODE>:ranks</CODE>.
+In fact, the same problem will arise with the other lists.  I have to
+start by testing <CODE>:threes</CODE> and inserting into <CODE>:fours</CODE>, and
+work my way down to <CODE>:ranks</CODE>.  This illustrates a general rule:
+<EM>Always make the most restrictive test first.</EM> I learned that
+rule through hours of debugging earlier projects; now I recognize the
+situation right away.  Here's the finished procedure:
+
+
+<P><PRE>to read.card :card
+insert last :card &quot;suits
+if memberp butlast :card :threes [insert butlast :card &quot;fours stop]
+if memberp butlast :card :pairs [insert butlast :card &quot;threes stop]
+if memberp butlast :card :ranks [insert butlast :card &quot;pairs stop]
+insert butlast :card &quot;ranks
+end
+</PRE>
+
+<P>The <CODE>stop</CODE> commands are just for efficiency.  Suppose
+I've found a particular rank three times already in this poker hand,
+and the card I'm looking at now is the fourth of the same rank.  Then
+the first <CODE>if</CODE> will succeed, since the rank was already a member
+of <CODE>:threes</CODE>.  If the <CODE>stop</CODE> command were omitted, I'd go on
+to the next <CODE>if</CODE> instruction, which would find the rank in <CODE>
+:pairs</CODE> and therefore insert it into <CODE>:threes</CODE>.  But that's
+unnecessary; if I've found the rank in <CODE>:threes</CODE>, there is no need
+to insert it there again!  In other words, if I'm
+about to insert this card in the list of <CODE>fours</CODE>, there is no need
+to check to see if it's in the lists of smaller runs of the same
+rank.  (Of course, it's sort of funny having <CODE>threes</CODE> and <CODE>
+fours</CODE> as lists, since there can't be more than one of them in a
+five-card poker hand!  But this structure makes the instructions
+pleasingly similar.)
+
+<P>I notice another potential bug.  When I add a rank to, for example,
+<CODE>:threes</CODE>, I don't remove it from <CODE>:pairs</CODE>.  So my data base
+will claim that I have a pair as well as three of a kind.  I could
+write a <CODE>remove</CODE> procedure analogous to <CODE>insert</CODE>, but my guess
+is that it won't be necessary.  If I follow the &quot;most restrictive
+test first&quot; principle later in the program, I'll know I have three of
+a kind before I ever look at <CODE>:pairs</CODE>.  If it turns out to be a
+problem later, I'll fix it then.
+
+<P>
+I'm slightly annoyed that this procedure computes <CODE>butlast :card</CODE> so
+many times.  Perhaps it should be
+
+<P><PRE>to read.card :card
+local &quot;rank
+make &quot;rank butlast :card
+...
+</PRE>
+
+<P>But in fact I haven't bothered making that change.
+
+<P>Finally, here is the missing subprocedure <CODE>insert</CODE>:
+
+<P><PRE>to insert :item :list
+if memberp :item thing :list [stop]
+make :list fput :item thing :list
+end
+</PRE>
+
+<P>The first instruction is there to ensure that nothing is
+added to the same list twice.  The <CODE>stop</CODE> commands I mentioned
+earlier ought to ensure the same thing, except for the list <CODE>
+:suits</CODE>.  But since I need the instruction for that case anyway, I'll
+take a &quot;belt and suspenders&quot; approach for all the lists.
+
+<P>The input that I've called <CODE>item</CODE> here used to be called <CODE>
+thing</CODE>, because I was thinking, &quot;Insert a thing into a list.&quot; But I
+found that using the procedure <CODE>thing</CODE> next to the variable <CODE>
+thing</CODE> looked too confusing to me, even though it wouldn't have
+bothered the Logo interpreter.
+
+<P>I hope you noticed that the second instruction starts with <CODE>make :list</CODE>
+rather than <CODE>make &quot;list</CODE>.  This is the indirect assignment technique
+that I mentioned briefly in Chapter 3.  Remember that the variable
+<CODE>list</CODE> contains the <EM>name</EM> of another variable, such as <CODE>
+threes</CODE>.  It is that second variable whose value is changed.
+For example,
+
+<P><PRE>insert butlast :card &quot;fours
+</PRE>
+
+<P>invokes <CODE>insert</CODE> with an input whose name is <CODE>list</CODE>
+and whose value is <CODE>fours</CODE>.  In this case, the <CODE>make</CODE>
+instruction inside <CODE>insert</CODE> is equivalent to
+
+<P><PRE>make &quot;fours fput :item thing &quot;fours
+</PRE>
+
+<P>or
+
+<P><PRE>make &quot;fours fput :item :fours
+</PRE>
+
+
+<P><H2>Second Edition Second Thoughts</H2>
+
+<P>I wrote the first edition using versions of Logo without higher order
+functions.  These functions can be written in Logo, and in fact I did write
+them later in the book, but I wasn't using them in this chapter.  But in
+retrospect, the style of creating a variable named <CODE>ranks</CODE> whose value
+is an empty list, and then adding the rank of each card by reassigning a new
+value to the variable, seems much harder to understand than this:
+
+<P><PRE>to poker.init :cards
+make &quot;ranks map &quot;butlast :cards
+make &quot;suits remdup map &quot;last :cards
+...
+</PRE>
+
+<P><CODE>Remdup</CODE> is an operation, primitive in Berkeley Logo, whose
+output is the same as its input, but with duplicate members removed.
+
+<P>As for <CODE>pairs</CODE>, <CODE>threes</CODE>, and <CODE>fours</CODE>, I think they are most
+easily replaced by an array that keeps track of the number of times each
+rank appears in the hand.
+
+<P><PRE>to poker.init :cards                         ;; second edition version
+make &quot;ranks map [ranknum butlast ?] :cards
+make &quot;suits remdup map &quot;last :cards
+make &quot;rankarray {0 0 0 0 0 0 0 0 0 0 0 0 0}
+foreach :ranks [setitem ? :rankarray (item ? :rankarray)+1]
+end
+
+to ranknum :rank                             ;; turn rank to number
+if :rank = &quot;a [output 1]
+if :rank = &quot;j [output 11]
+if :rank = &quot;q [output 12]
+if :rank = &quot;k [output 13]
+output :rank
+end
+</PRE>
+
+<P>Since I want to use the card's rank as an index into an array,
+I have to use a number from 1 to 13 to represent the ranks inside the
+program, even though the person using the program will still represent a
+rank in the more human-readable form of A for ace and so on.
+
+<P>
+
+<P>Where the first version of the program would test for four of a kind with
+
+<P><PRE>if not emptyp :fours ...
+</PRE>
+
+<P>this new version will say
+
+<P><PRE>if memberp 4 :rankarray ...
+</PRE>
+
+<P>Notice that my second thoughts are about low-level details of the program.
+I haven't changed my mind about the big idea, which is to have a procedure
+<CODE>poker.init</CODE> that examines the hand and converts the information into a
+format in which the rest of the program can use it more easily.  This is the
+same idea I used in the tic-tac-toe program of Chapter 6, in which I
+converted a human-readable &quot;position&quot; such as
+
+<P><PRE>{x o 3 x x 6 7 8 o}
+</PRE>
+
+<P>into an internal list of &quot;triples&quot;:
+
+<P><PRE>[xo3 xx6 78o xx7 ox8 36o xxo 3x7]
+</PRE>
+
+<P>From now on, I won't show two versions of every procedure.  I'll use the
+revised data representation, even though the chapter tells the story of
+how I wrote the older version of the program.
+
+<P><H2>Planning and Debugging</H2>
+
+<P>Ideally, according to structured programming, you should never have to
+do any debugging.  You should start with a complete, clear program
+specification.  Then you should use the approved style to translate
+that specification into a program.  Then you should be able to <EM>
+prove</EM> mathematically that your program is correct!  Debugging is a
+relic of the dark ages.
+
+<P>That's not the Logo approach.  I've already done some debugging in
+this project.  Programming is sort of like real life: you don't always
+get it right the first time.  Structured programmers don't get it
+right the first time either; the difference is that Logoites aren't
+embarrassed about it.  We think of debugging as part of the process of
+solving problems in general.
+
+<P>If you're a student in a school, the odds are that you aren't often
+encouraged to accept debugging as valuable.  When you hand in a paper
+or a quiz, the teacher doesn't point out errors and invite you to try
+again.  Instead he marks your errors in red ink and takes off points
+for them.  You're taught that your work has to be perfect the first
+time.  One of the strong contributions that computer programming in
+general, and Logo in particular, has made to education is to provide
+one context in which you are shown a more realistic approach to making
+and correcting mistakes.
+
+<P><H2>Classifying Poker Hands</H2>
+
+<P>The main thing remaining to be done in my project is the collection of
+predicates like <CODE>fourp</CODE> and <CODE>royal.flushp</CODE> to check for
+particular kinds of poker hands.  I decided to write some of the easy
+ones, namely the ones for multiples of the same rank.
+
+<P>
+
+<P><PRE>to fourp
+output memberp 4 :rankarray
+end
+
+to threep
+output memberp 3 :rankarray
+end
+
+to pairp
+output memberp 2 :rankarray
+end
+
+to full.housep
+output and threep pairp
+end
+</PRE>
+
+<P>These are all pretty obvious.  Notice, though, that one thing has
+changed since my initial idea: these procedures don't take <CODE>:cards</CODE> as
+an input.  They don't examine the poker hand directly; they
+examine the variables set up by the initialization procedure.
+
+<P>
+
+<P>Now I want to start putting all these pieces together, so I'm going to
+write a preliminary version of <CODE>pokerhand</CODE>.
+
+<P><PRE>to pokerhand :cards
+poker.init :cards
+if fourp [print [four of a kind] stop]
+if full.housep [print [full house] stop]
+if threep [print [three of a kind] stop]
+if pairp [print ifelse paircount = 1 [one pair] [two pairs] stop]
+print [something else]
+end
+
+to paircount
+output count locate 2 1
+end
+
+to locate :number :index
+if :index &gt; 13 [output []]
+if (item :index :rankarray) = :number ~
+   [output fput :index (locate :number :index+1)]
+output locate :number :index+1
+end
+</PRE>
+
+<P>If there's a pair, I can't simply use <CODE>memberp</CODE> to find out
+how many pairs are in the hand.  Instead, the procedure <CODE>locate</CODE> looks
+at each member of <CODE>:rankarray</CODE> and outputs a list of all the ranks of
+which there are exactly two cards in the hand.  For this purpose I could
+have had <CODE>locate</CODE> output the number of pairs, which would be a little
+easier than computing the list of ranks of pairs.  But I recall that I want
+to be able to say things like &quot;pair of sevens,&quot; and for that I'll need the
+actual ranks.
+
+<P>Let's try it:
+
+<P><PRE>? <U>pokerhand [ah 2c 4d 2s 6h]</U>
+I don't know how  to one  in pokerhand
+[if pairp [print ifelse paircount = 1 [one pair] [two pairs] stop]]
+</PRE>
+
+<P>Looks like a bug.  (This really happened; I'm not just making it
+up to be able to talk about debugging!)  The first step in solving a
+problem like this is to read the error message carefully.  This message
+tells me that when the error happened, the immediately active procedure was
+<CODE>pokerhand</CODE>.  So that's where I should look for a mistake.  (The exact
+form of the message will be different in different versions of Logo, but
+they'll all give you that piece of information.  In Berkeley Logo, the error
+message also includes the instruction line in which the error occurred.)  I
+then edited <CODE>pokerhand</CODE> and looked for the word <CODE>one</CODE>.  I found it
+in the list
+
+<P><PRE>[one pair]
+</PRE>
+
+<P>which is one of the inputs to an <CODE>ifelse</CODE> operation.  Aha!  The
+trouble is that <CODE>ifelse</CODE> <EM>evaluates</EM> whichever input is selected
+by its predicate input, so it's trying to evaluate that list as a
+Logo expression.  What I meant was this:
+
+<P><PRE>if pairp [print ifelse paircount = 1 [[one pair]] [[two pairs]] stop]
+</PRE>
+
+<P>Now it should evaluate <CODE>[[one pair]]</CODE> and come up with the
+value <CODE>[one pair]</CODE> to use as the input to <CODE>print</CODE>.  Let's try again:
+
+<P><PRE>? <U>pokerhand [ah 2c 4d 2s 6h]</U>
+one pair
+? <U>pokerhand [2h 5d 2s 2c 7d]</U>
+three of a kind
+? <U>pokerhand [2h 5d 2s 2c 5h]</U>
+full house
+? <U>pokerhand [3h 4h 5h 6h 7h]</U>
+something else
+</PRE>
+
+<P>So far so good, but of course there is more work to do.  We need to
+write <CODE>straightp</CODE>, <CODE>flushp</CODE>, and their combinations: straight
+flush and royal flush.  I think I shouldn't have an instruction in
+<CODE>pokerhand</CODE> testing <CODE>royal.flushp</CODE> as I originally planned;
+instead I should test for <CODE>straightp</CODE> and, if that's true, look
+for special cases within that.
+
+<P><PRE>to flushp
+output emptyp butfirst :suits
+end
+</PRE>
+
+<P>It's not so obvious how to write <CODE>straightp</CODE>.  Here's my
+plan:  First, find the lowest-rank card in the hand.  Then, in order to
+have a straight, the next four ranks must also be present in the hand.
+
+<P>&raquo;This isn't the only possible way to test for a straight; can you think
+of, and implement, another?
+
+<P><PRE>to straightp
+output nogap (reduce &quot;min :ranks) 5
+end
+
+to min :a :b
+output ifelse :a &lt; :b [:a] [:b]
+end
+
+to nogap :smallest :howmany
+if :howmany=0 [output &quot;true]
+if not equalp (item :smallest :rankarray) 1 [output &quot;false]
+output nogap :smallest+1 :howmany-1
+end
+</PRE>
+
+<P><CODE>Nogap</CODE> starts with the smallest rank in the hand and checks that there
+is exactly one card in each of that and the next four ranks.  It takes
+advantage of the fact that I'm representing ranks internally as numbers;
+it can just add 1 to a rank to get the next one in sequence.  If
+<CODE>:howmany</CODE> reaches zero, it means that we have indeed found all five
+consecutive ranks in the hand.  If one of the five desired ranks isn't in
+the hand, or if the hand has more than one card in any of the ranks, then
+the hand isn't a straight.
+
+<P>There is one problem with this approach.  The ace
+can be used either high card (10-J-Q-K-A) or low card (A-2-3-4-5) in a
+straight.  <CODE>Straightp</CODE> thinks that the ace can only be the low card.
+We'll fix that later.
+
+<P>Now let's try some other cases.  I've just added the line
+
+<P><PRE>if straightp [print [straight] stop]
+</PRE>
+
+<P>to <CODE>pokerhand</CODE>.  It doesn't much matter where I put that
+line, because there is no danger of a straight also being found as a
+multiple of any one rank.  This instruction will be changed,
+eventually, because we want to test for straight flush and so on.  But
+for now this will make it possible to debug <CODE>straightp</CODE>.
+
+<P><PRE>? <U>pokerhand [3h 6d 7h 5c 4d]</U>
+straight
+? <U>pokerhand [3h 6d 7h 5c 8d]</U>
+something else
+</PRE>
+
+<P>I picked those examples pretty much at random.  It's a good idea,
+when testing a procedure, to pick test cases &quot;near the boundaries&quot; of what
+the program is supposed to accept.  For example, what about an ace-low
+straight, or a king-high?  What about a hand in which &quot;the next four
+ranks&quot; don't exist, because the lowest card is a Jack?
+
+<P><PRE>? <U>pokerhand [ah 2d 3c 4c 5h]</U>
+straight
+? <U>pokerhand [9d 10c jh qh kh]</U>
+straight
+? <U>pokerhand [js jh qs qh kd]</U>
+two pairs
+</PRE>
+
+<P>(Actually, that last example may never invoke <CODE>
+straightp</CODE> at all, if the test for <CODE>pairp</CODE> comes first in <CODE>
+pokerhand</CODE>.)  Anyway, it
+looks okay.  I could try more examples but I think I believe it.  I
+now decide that the instruction I just put into <CODE>pokerhand</CODE> should
+be
+
+<P><PRE>if straightp [print ifelse flushp [[straight flush]] [[straight]] stop]
+</PRE>
+
+<P>and that it should be followed by
+
+<P><PRE>if flushp [print [flush] stop]
+</PRE>
+
+<P>(The <CODE>if flushp</CODE> instruction has to come second because
+of the principle of &quot;most restrictive first.&quot; If that test came first,
+a straight flush would be reported as just a flush.) Time for more
+tests:
+
+<P><PRE>? <U>pokerhand [3h 6h ah kh 7h]</U>
+flush
+? <U>pokerhand [3h 6h ad kh 7h]</U>
+something else
+? <U>pokerhand [3h 6h 4h 5h 7h]</U>
+straight flush
+? <U>pokerhand [3h 6h 4h 5s 7h]</U>
+straight
+</PRE>
+
+<P>Now it's time to solve the problem of the ace-high straight.
+It turns out to be easy; if the hand has an ace, then
+I can use <CODE>nogap</CODE>, the subprocedure of <CODE>straightp</CODE> that
+checks for consecutive ranks, to check for the four ranks from 10 to king.
+
+<P><PRE>to ace.highp
+if not equalp (item 1 :rankarray) 1 [output &quot;false]
+output nogap 10 4
+end
+</PRE>
+
+<P>That's the end of the categories of poker hands, but to put it all
+together requires a little editing of <CODE>pokerhand</CODE>:
+
+<P><PRE>to pokerhand :cards
+local [ranks suits rankarray]
+poker.init :cards
+if fourp [print [four of a kind] stop]
+if full.housep [print [full house] stop]
+if threep [print [three of a kind] stop]
+if pairp [print ifelse paircount = 1 [[one pair]] [[two pairs]] stop]
+if ace.highp [print ifelse flushp [[royal flush]] [[straight]] stop]
+if straightp [print ifelse flushp [[straight flush]] [[straight]] stop]
+if flushp [print [flush] stop]
+print [nothing!]
+end
+</PRE>
+
+<P><H2>Embellishments</H2>
+
+<P>I've now done more or less what I set out to do.  It took 14
+procedures.  I hope you have a feeling for the process of
+switching back and forth between thinking about a particular
+subproblem and thinking about the overall structure of the program.
+
+<P>I haven't done every detail of what I first suggested.  In particular,
+I don't have the information about particular ranks in what I print.
+I think perhaps that's more effort than this project seems worth to
+me.  (I'm not just being cute by saying &quot;to me&quot;; the point is that
+a real poker enthusiast might want to spend a lot of time on this
+program and make it as beautiful as possible.) But just to show how a
+completed program can be modified, I'll make it print things like
+<CODE>pair of sixes</CODE> instead of just <CODE>one pair</CODE>.
+
+<P>First I have to be able to find words like &quot;<CODE>sixes</CODE>&quot; starting
+with a rank indicator like <CODE>6</CODE>.
+
+<P><PRE>to plural :rank
+output item :rank [aces twos threes fours fives sixes
+                   sevens eights nines tens jacks queens kings]
+end
+</PRE>
+
+<P>The next step is to change one instruction in <CODE>pokerhand</CODE> to use
+this new tool:
+
+<P><PRE>if pairp [print ifelse paircount = 1
+                       [sentence [pair of] plural first locate 2 1]
+                       [[two pairs]]
+          stop]
+</PRE>
+
+<P>(If you were confused about the double square brackets
+around <CODE>one pair</CODE> and <CODE>two pairs</CODE> before, seeing this new
+version in which one of the possibilities is the output from a
+procedure, not a literal list, might help.)
+
+<P><PRE>? <U>pokerhand [ah 7s 3d 10c 7c]</U>
+pair of sevens
+</PRE>
+
+<P>&raquo;If you're motivated, you can modify the messages for other categories
+to include the specific rank information.  You might want to change
+&quot;<CODE>nothing</CODE>&quot; to &quot;<CODE>queen high</CODE>,&quot; for example.
+
+<P>&raquo;What if you wanted to use this program on a seven-card-stud hand?  In
+other words, instead of a list of five cards, you'd be given a list of
+seven, from which you'd have to pick the best five.  The main thing I
+can think of is that you'd have to be more careful about the order of
+the <CODE>if</CODE> instructions in <CODE>pokerhand</CODE>.  I've said that you can
+test <CODE>threep</CODE> either before or after <CODE>straightp</CODE> because they
+can't both be true.  But that's not the case for a seven-card hand:
+
+<P><PRE>[3h 3s 3d 4d 5s 6h 7c]
+</PRE>
+
+<P>If you try this challenge, make sure your program announces
+
+<P><PRE>[8s 9s 10s js qs kh ad]
+</PRE>
+
+<P>as a straight flush, not as an ace-high straight.
+
+<P><H2>Putting the Project in a Context</H2>
+
+<P>I wrote this program because I was looking for an example for this
+book that would be not too long, not too short.  That's kind of an
+artificial reason for starting a project.  In real life, if I wrote a
+program like this one, it would be part of a larger program that
+would actually <EM>play</EM> poker.
+
+<P>In that context the problem would become very different.  We wouldn't
+want merely to print the designation of a hand; we'd want to be able
+to compare several hands and announce a winner.  To do that, we'd have
+to attach something like a numerical ranking to the hand, which might
+become the output from <CODE>pokerhand</CODE>.  But it can't be just a single
+number; there are too many possible hands to have a list of all of
+them in rank order.  Instead, the ranking of a hand might be a list of
+numbers.  <CODE>[5 7 10]</CODE> might mean that the hand is a full house (I'm
+guessing that that would rank about fifth in value), with three sevens
+and two tens.  To compare two lists of numbers, compare their <CODE>
+first</CODE>s; if those are equal, go on to compare the next members.
+
+<P>The point is that I'm now back to something approaching top-down
+planning.  As the scale of the project becomes a lot bigger, that kind
+of advance planning seems necessary.  But this isn't really top-down
+because comparing two hands is just one subproblem of playing poker.
+Really, according to the top-down view, I should start by designing
+the top-level procedure <CODE>poker</CODE>.  Perhaps a first attempt might
+look like this:
+
+<P><PRE>to poker
+deal.cards
+bid
+draw.more.cards
+bid
+pokerhand
+end
+</PRE>
+
+<P>But it would be premature to type this into a computer.  We
+have to think about issues like these: Is the computer a player or
+does it just deal and bank for the other players?  How many people can
+play?  What is a good strategy for bidding?
+
+<P>In the end it might turn out that the <CODE>pokerhand</CODE> we've just
+written wouldn't fit into the larger project; it might have to be
+rewritten for that context.  To a structured programmer, the effort
+we've put in would then be wasted.  But I think that even if every
+procedure had to be edited, I'd benefit from having taken the time to
+understand how to solve this subproblem.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch12/v1ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch14/v1ch14.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<PRE>
+to pokerhand :cards
+local [ranks suits rankarray]
+poker.init :cards
+if fourp [print [four of a kind] stop]
+if full.housep [print [full house] stop]
+if threep [print [three of a kind] stop]
+if pairp [print ifelse paircount = 1 [[one pair]] [[two pairs]] stop]
+if ace.highp [print ifelse flushp [[royal flush]] [[straight]] stop]
+if straightp [print ifelse flushp [[straight flush]] [[straight]] stop]
+if flushp [print [flush] stop]
+print [nothing!]
+end
+
+to poker.init :cards
+make "ranks map [ranknum butlast ?] :cards
+make "suits remdup map "last :cards
+make "rankarray {0 0 0 0 0 0 0 0 0 0 0 0 0}
+foreach :ranks [setitem ? :rankarray (item ? :rankarray)+1]
+end
+
+to ranknum :rank
+if :rank = "a [output 1]
+if :rank = "j [output 11]
+if :rank = "q [output 12]
+if :rank = "k [output 13]
+output :rank
+end
+
+to fourp
+output memberp 4 :rankarray
+end
+
+to threep
+output memberp 3 :rankarray
+end
+
+to pairp
+output memberp 2 :rankarray
+end
+
+to full.housep
+output and threep pairp
+end
+
+to paircount
+output count locate 2 1
+end
+
+to locate :number :index
+if :index > 13 [output []]
+if (item :index :rankarray) = :number ~
+   [output fput :index (locate :number :index+1)]
+output locate :number :index+1
+end
+
+to flushp
+output emptyp butfirst :suits
+end
+
+to straightp
+output nogap (reduce "min :ranks) 5
+end
+
+to min :a :b
+output ifelse :a < :b [:a] [:b]
+end
+
+to nogap :smallest :howmany
+if :howmany=0 [output "true]
+if not equalp (item :smallest :rankarray) 1 [output "false]
+output nogap :smallest+1 :howmany-1
+end
+
+to ace.highp
+if not equalp (item 1 :rankarray) 1 [output "false]
+output nogap 10 4
+end
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch12/v1ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch14/v1ch14.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch14/graph.gif b/js/games/nluqo.github.io/~bh/v1ch14/graph.gif
new file mode 100644
index 0000000..3acad1a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch14/graph.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch14/phonetree2.jpg b/js/games/nluqo.github.io/~bh/v1ch14/phonetree2.jpg
new file mode 100644
index 0000000..5db1c16
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch14/phonetree2.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch14/pour.html b/js/games/nluqo.github.io/~bh/v1ch14/pour.html
new file mode 100644
index 0000000..e19dffc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch14/pour.html
@@ -0,0 +1,1402 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 14: Example: Pitcher Problem Solver</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Pitcher Problem Solver</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch13/v1ch13.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+<P>Program file for this chapter: <A HREF="pour.lg"><CODE>pour</CODE></A>
+
+<P>
+You have probably seen puzzles like this one many times:
+
+<BLOCKQUOTE>
+You are at the side of a river.  You have a three-liter pitcher and a
+seven-liter pitcher.  The pitchers do not have markings to allow measuring
+smaller quantities.  You need two liters of water.  How can you measure
+two liters?
+</BLOCKQUOTE>
+
+<P>
+These puzzles are used in some IQ tests, so many people
+come across them in schools.  To solve the problem, you must pour water from
+one pitcher to another.  In this particular problem, there are six steps in
+the shortest solution:
+
+<OL>
+<LI> Fill the three-liter pitcher from the river.
+<LI> Pour the three liters from the three-liter pitcher into the
+seven-liter pitcher.
+<LI> Fill the three-liter pitcher from the river again.
+<LI> Pour the three liters from the three-liter pitcher into the
+seven-liter pitcher (which now contains six liters).
+<LI> Fill the three-liter pitcher from the river yet again.
+<LI> Pour from the three-liter pitcher into the seven-liter pitcher
+until the latter is full.  This requires one liter, since the seven-liter
+pitcher had six liters of water after step 4.  This step leaves two liters
+in the three-liter pitcher.
+</OL>
+
+<P>
+This example is a relatively hard pitcher problem, since it
+requires six steps in the solution.  On the other hand, it doesn't require
+pouring water back into the river, and it doesn't have any unnecessary
+pitchers.  An actual IQ test has several such problems, starting with really
+easy ones like this:
+
+<BLOCKQUOTE>
+You are at the side of a river.  You have a three-liter pitcher and a
+seven-liter pitcher.  The pitchers do not have markings to allow measuring
+smaller quantities.  You need four liters of water.  How can you measure
+four liters?
+</BLOCKQUOTE>
+
+<P>
+and progressing to harder ones like this:
+
+<BLOCKQUOTE>
+You are at the side of a river.  You have a two-liter pitcher,
+a five-liter pitcher, and a
+ten-liter pitcher.  The pitchers do not have markings to allow measuring
+smaller quantities.  You need one liter of water.  How can you measure
+one liter?
+</BLOCKQUOTE>
+
+<P>
+The goal of this project is a program that can solve these problems.  The
+program should take two inputs, a list of pitcher sizes and a number saying
+how many liters we want.  It will work like this:
+
+<PRE>
+? <U>pour [3 7] 4</U>
+Pour from river to 7
+Pour from 7 to 3
+Final quantities are 3 4
+? <U>pour [2 5 10] 1</U>
+Pour from river to 5
+Pour from 5 to 2
+Pour from 2 to river
+Pour from 5 to 2
+Final quantities are 2 1 0
+</PRE>
+
+<P>
+How do <EM>people</EM> solve these problems?  Probably you try a variety of
+special-purpose techniques.  For example, you look at the sums and
+differences of the pitcher sizes to see if you can match the goal that way.
+In the problem about measuring four liters with a three-liter pitcher and a
+seven-liter pitcher, you probably recognized right away that 7&minus;3=4.  A more
+sophisticated approach is to look at the remainders when one pitcher size is
+divided by another.  In the last example, trying to measure one liter with
+pitchers of two, five, and ten liters, you might notice that the remainder
+of 5/2 is 1.  That means that after removing some number of twos from five,
+you're left with one.
+
+<P>
+Such techniques might or might not solve any given pitcher problem.
+Mathematicians have studied ways to solve such problems in general.  To a
+mathematician, a pitcher problem is equivalent to an
+algebraic equation in which the variables are required to take on
+integer (whole number) values.  For example, the problem at the beginning of
+this chapter corresponds to the equation
+
+<P><CENTER>3<I>x</I>+7<I>y</I>=2</CENTER>
+
+<P>In this equation, <I>x</I> represents the number of times the
+three-liter pitcher is filled and <I>y</I> represents the number of times
+the seven-liter pitcher is filled.  A positive value means that the pitcher
+is filled from the river, while a negative value means that it's filled from
+another pitcher.
+
+<P> An equation with two variables like this one can have infinitely many
+solutions, but not all the solutions will have integer values.  One
+integer-valued solution is <I>x</I>=3 and <I>y</I> = -1.  This solution
+represents filling the three-liter pitcher three times from the river (for a
+total of nine liters) and filling the seven-liter pitcher once from the
+three-liter pitcher.  Since the seven-liter pitcher is bigger than the
+three-liter pitcher, it has to be filled in stages.  Do you see how this
+analysis corresponds to the sequence of steps I gave earlier?
+
+<P> An equation with integer-valued variables is called a
+<EM>Diophantine</EM> equation.  In general, a Diophantine equation will have
+infinitely many solutions, but they won't all be practical as solutions to
+the original problem.  For example, another solution to the equation we've
+been considering is <I>x</I> = -4 and <I>y</I>=2.  This solution tells
+us to fill the seven-liter pitcher from the river twice, and the three-liter
+pitcher from the seven-liter pitcher four times.  Here's how that works out
+as a sequence of steps:
+
+<OL>
+<LI> Fill the seven-liter pitcher from the river.
+<LI> Fill the three-liter pitcher from the seven-liter pitcher.  (This
+leaves four liters in the seven-liter pitcher.)
+<LI> Empty the three-liter pitcher into the river.
+<LI> Fill the three-liter pitcher from the seven-liter pitcher.  (This
+leaves one liter in the seven-liter pitcher.)
+<LI> Empty the three-liter pitcher into the river.
+<LI> Pour the contents of the seven-liter pitcher (one liter) into the
+three-liter pitcher.
+<LI> Fill the seven-liter pitcher from the river (for the second and
+last time).
+<LI> Fill the three-liter pitcher (which already had one liter in it)
+from the seven-liter pitcher.  (This leaves five liters in the seven-liter
+pitcher.)
+<LI> Empty the three-liter pitcher into the river.
+<LI> Fill the three-liter pitcher from the seven-liter pitcher.  This
+leaves the desired two liters in the seven-liter pitcher.
+</OL>
+
+<P>
+This solution works, but it's more complicated than the one I
+used in the first place.
+
+<P>
+One way to solve Diophantine equations is graphically.  For example, consider
+the problem about measuring one liter of water with pitcher capacities two,
+five, and ten liters.  It turns out that the ten-liter pitcher is not
+actually needed, so let's forget it for now and consider the simpler but
+equivalent problem of using just the two-liter and the five-liter pitchers.
+This problem gives rise to the equation
+
+<P><CENTER>2<I>x</I>+5<I>y</I>=1</CENTER>
+
+<P>For the moment, never mind that we are looking for integer solutions.
+Just graph the equation as you ordinarily would.  The graph will be a
+straight line; probably the easiest way to draw the graph is to find the
+<I>x</I>-intercept (when <I>y</I>=0, 2<I>x</I>=1 so <I>x</I>=1/2)
+and the <I>y</I>-intercept (when <I>x</I>=0, <I>y</I>=1/5).
+
+<P><CENTER><IMG SRC="graph.gif" ALT="<P>figure: graph"></CENTER>
+
+<P>
+Once you've drawn the graph, you can look for places where the line
+crosses the grid points of the graph paper.  In this case, two such points
+of intersection are (-2,1) and (3,-1).  The first of these points
+represents the solution shown earlier, in which the five-liter pitcher is
+filled from the river and then used as a source of water to fill the
+two-liter pitcher twice.  The second integer solution represents the method
+of filling the two-liter pitcher from the river three times, then
+pouring the water from the two-liter pitcher to the five-liter pitcher each
+time.  (On the third such pouring, the five-liter pitcher fills up after
+only one liter is poured, leaving one liter in the two-liter pitcher.)
+
+What about the original version of this problem, in which there were three
+pitchers?  In this case, we have a Diophantine equation with three variables:
+
+<P><CENTER>2<I>x</I>+5<I>y</I>+10<I>z</I>=1</CENTER>
+
+<P>The graph of this equation is a plane in a three-dimensional
+coordinate system.  An example of a solution point that uses all three
+pitchers is (-2,-1,1).  How would you interpret this as a series of
+pouring steps?
+
+<P>
+By the way, not all pitcher problems have solutions.  For example, how could
+you measure one liter with a two-liter pitcher and a ten-liter pitcher?  The
+answer is that you can't; since both pitchers hold an even number of liters,
+any amount of water measurable with them will also be even.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>You can
+find a computational algorithm to solve (or show that there are no solutions
+to) any linear Diophantine equation with two variables on page 50 of Courant
+and Robbins, <CITE>What Is Mathematics?</CITE> (Oxford University Press,
+1941).</SMALL></BLOCKQUOTE></SMALL>
+
+<H2>Tree Search</H2>
+<P>
+My program does not solve pitcher problems by manipulating Diophantine
+equations.  Instead, it simply tries every possible sequence of pouring
+steps until one of the pitchers contains the desired amount of water.  This
+method is not feasible for a human being, because the number of possible
+sequences is generally quite large.  Computers are better than people at
+doing large numbers of calculations quickly; people have the almost magical
+ability to notice the one relevant pattern in a problem without trying all
+the possibilities.  (Some researchers attribute this human ability to
+&quot;parallel processing&quot;--the fact that the human brain can carry
+on several independent trains of thought all at once.  They are beginning to
+build computers designed for parallel processing, and hope that these
+machines will be able to perform more like people than traditional
+computers.)
+<P>
+The possible pouring steps for a pitcher problem form a <EM>tree.</EM> The
+root of the tree is the situation in which all the pitchers are empty.
+Connected to the root are as many branches as there are pitchers; each
+branch leads to a node in which one of the pitchers has been filled from the
+river.  Each of those nodes has several branches connected to it,
+corresponding to the several possible pouring steps.  Here is the beginning
+of the tree for the case of a three-liter pitcher and a seven-liter pitcher.
+Each node is represented in the diagram by a list of numbers indicating the
+current contents of the three-liter pitcher and the seven-liter pitcher; for
+example, the list <CODE>[3 4]</CODE> means that the three-liter pitcher is
+full and the seven-liter pitcher contains four liters.
+
+<P><CENTER><IMG SRC="poursome.gif" ALT="<P>figure: poursome"></CENTER>
+
+<P>
+Actually, I have simplified this tree by showing only the
+meaningful pouring steps.  The program must consider, and of course reject,
+things like the sequence
+
+<OL>
+<LI> Fill the three-liter pitcher from the river.
+<LI> Empty the three-liter pitcher into the river.
+</OL>
+
+<P>
+and individual meaningless steps like pouring from a pitcher into
+itself, pouring from an empty pitcher, and pouring into a full pitcher.  For
+a two-pitcher problem there are three possible sources of water (the two
+pitchers and the river) and three possible destinations, for a total of nine
+possible pouring steps.  Here is the top of the full tree:
+
+<P><CENTER><IMG SRC="pourall.gif" ALT="<P>figure: pourall"></CENTER>
+
+<P>
+At each level of the tree, the number of nodes is multiplied by
+nine.  If we're trying to measure two liters of water, a six-step problem,
+the level of the tree at which the solution is found will have 531,441 nodes!
+You can see that efficiency will be an important consideration in this
+program.
+
+<P>
+In some projects, a tree is represented within the program by a Logo list.
+That's not going to be the case in this project.  The tree is not explicitly
+represented in the program at all, although the program will maintain a list
+of the particular nodes of the tree that are under consideration at a given
+moment.  The entire tree can't be represented as a list because it's
+infinitely deep!  In this project, the tree diagram is just something that
+should be in your mind as a model of what the program is doing: it's
+<EM>searching</EM> through the tree, looking for a node that includes the
+goal quantity as one of its numbers.
+
+<H2>Depth-first and Breadth-first Searching</H2>
+
+<P>
+Many programming problems can be represented as searches through trees.  For
+example, a chess-playing program has to search through a tree of moves.  The
+root of the tree is the initial board position; the second level of the tree
+contains the possible first moves by white; the third level contains the
+possible responses by black to each possible move by white; and so on.
+
+<P>
+There are two general techniques for searching a tree.  These techniques are
+called <EM>depth-first search</EM> and
+<EM>breadth-first search.</EM>  In the first technique, the program
+explores all of the &quot;descendents&quot; of a given node before looking at the
+&quot;siblings&quot; of that node.  In the chess example, a depth-first search would
+mean that the program would explore all the possible outcomes (continuing to
+the end of the game) of a particular opening move, then go on to do the same
+for another opening move.  In breadth-first search, the program examines all
+the nodes at a given level of the tree, then goes on to generate and examine
+the nodes at the next level.  Which technique is more appropriate will
+depend on the nature of the problem.
+
+<P>
+<A NAME="depth.first">In</A> a
+programming language like Logo, with recursive procedures and local
+variables, it turns out that depth-first search leads to a simpler program
+structure.  Suppose that we are given an operation called
+<CODE>children</CODE> that takes a node as input and gives us as its output
+a list of all the children (one level down) of that node.  Suppose we also
+are given a command called <CODE>process</CODE> that takes a node as input
+and does whatever the program needs to do for each node of the tree.  (You
+can just use <CODE>print</CODE> in place of <CODE>process</CODE> if you want
+to see what's in the tree.)  Here is how to do a depth-first search:
+
+<PRE>
+to depth.first :node
+process :node
+foreach (children :node) "depth.first
+end
+</PRE>
+
+<P>
+In this program, the structure of the tree is reflected in the
+structure of recursive invocations of <CODE>depth.first.</CODE>
+
+<P>
+It might be worthwhile to consider a specific example of how this program
+works.  One of the suggested activities in Chapter 11 was
+to write a program that takes a telephone number as
+input and prints out all possible spellings of that number as letters.
+(Each digit can represent any of three letters.  To keep things simple, I'm
+going to ignore the problem of the digits zero and one, which don't
+represent any letters on telephone dials in the United States.)  Here is a
+partial picture of the tree for a particular telephone number.  Each node
+contains some letters and some digits.  (In the program, a node will be
+represented as a Logo list with two members, a word of letters and a word of
+digits.)  The root node is all digits; the &quot;leaf&quot; nodes will be all
+letters.
+
+<P><CENTER><IMG SRC="phonetree2.jpg" ALT="<P>figure: phonetree"></CENTER>
+
+<P>
+The operation <CODE>children</CODE> must output a list of three nodes, selecting
+each of the three possible letters for the first remaining digit.  If the
+input to <CODE>children</CODE> is a leaf node (one with all letters), it must
+output the empty list to indicate that there are no children for that node.
+
+<PRE>
+to children :node
+if emptyp last :node [output []]
+output map [child (first :node) ? (butfirst last :node)] ~
+           letters first last :node
+end
+
+to letters :digit
+output item :digit [[] abc def ghi jkl mno prs tuv wxy]
+end
+
+to child :letters :this :digits
+output list (word :letters :this) :digits
+end
+
+?<U>show children [tnt 9827]</U>
+[[tntw 827] [tntx 827] [tnty 827]]
+</PRE>
+
+<P>
+The top-level procedure has to turn a number into a root node and
+invoke a depth-first search:
+
+<PRE>
+to spell :number
+depth.first list " :number
+end
+</PRE>
+
+<P>
+What about the <CODE>process</CODE> command?  The program wants to print only leaf
+nodes:
+
+<PRE>
+to process :node
+if emptyp last :node [print :node]
+end
+</PRE>
+
+<P>
+&raquo; Try this program.  To get the tree illustrated above,
+use the instruction
+
+<PRE>
+spell 8689827
+</PRE>
+
+<P>
+Then try again, but investigate the order in which the program
+searches the nodes of the tree by using a different version of <CODE>process</CODE>:
+
+<PRE>
+to process :node
+print :node
+end
+</PRE>
+
+<P>
+This will let you see the order in which the program encounters
+the nodes of the tree.
+
+<P>
+Writing a breadth-first search is a little more complicated because
+the program must explicitly arrange to process all the nodes of a given level
+before processing those at the next level.  It keeps track of the nodes
+waiting to be processed in a <EM>queue,</EM> a list in which new nodes
+are added at the right and the next node to be processed is taken from the
+left.  Here is the program:
+
+<PRE>
+to breadth.first :root
+breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [stop]
+process first :queue
+breadth.descend sentence (butfirst :queue) ~
+                         (children first :queue)
+end
+</PRE>
+
+<P>
+This breadth-first search program uses the same <CODE>children</CODE> and
+<CODE>process</CODE> subprocedures as the depth-first version.  You can try a
+breadth-first listing of telephone number spellings simply by changing the
+top-level <CODE>spell</CODE> procedure to invoke <CODE>breadth.first</CODE>
+instead of <CODE>depth.first</CODE>.  What you'll find is that (with the
+version of <CODE>process</CODE> that only prints leaf nodes) the two
+versions produce the same results, but the depth-first program trickles the
+spellings out one by one, while the breadth-first version prints nothing for
+a long time and then spits out all the spellings at once.  If you use the
+version of <CODE>process</CODE> that prints all the nodes, you can see why.
+
+<P>
+The telephone number speller is an unusual example of a tree-search program
+for two reasons.  First, the tree is finite; we know in advance that it
+extends seven levels below the root node, because a telephone number has
+seven digits.  Second, the goal of the program requires searching the
+<EM>entire</EM> tree.  It's more common that the program is looking for a
+solution that's &quot;good enough&quot; in some sense, and when a solution is found,
+the program stops looking.  For example, in the pitcher problem program,
+once we find a sequence of steps to measure the desired amount of water, we
+don't care if there is also a second way to do it.
+
+<P>
+For the pitcher problem solver, I decided that a breadth-first search is
+appropriate.  The main reason is that I wanted to present the
+<EM>shortest</EM> possible solution.  To do that, first I see if any one-step
+sequences solve the problem, then I see if any two-step sequences solve it,
+and so on.  This is a breadth-first order.
+
+<H2>Data Representation</H2>
+
+<P>
+At first, I thought that I would represent each node of the tree as a list
+of numbers representing the contents of the pitchers, as in the diagram I
+showed earlier.  I called this list of quantities a <EM>state.</EM>  This
+information is enough to be able to generate the children of a node.  Later,
+though, I realized that when I find a winning solution (one that has the
+goal quantity as one of the quantities in the state list) I want to be able
+to print not only the final quantities but also the sequence of pouring
+steps used to get there.  In a depth-first search, this information is
+implicitly contained in the local variables of the procedure invocations
+leading to the winning solution.  In a breadth-first search, however, the
+program doesn't keep track of the sequence of events leading to a given node.
+I had to remember this information explicitly.
+
+<P>
+The solution I chose was to have an extra member in the list representing a
+state, namely a list of <EM>pourings.</EM>  A pouring is a list of two numbers
+representing the source and the destination of the water being poured.  Zero
+represents the river; numbers greater than zero are pitcher numbers.  (A
+pitcher number is not the same as the size of the pitcher.  If you enter the
+instruction
+
+<PRE>
+pour [2 5 10] 1
+</PRE>
+
+<P>
+then the two-liter pitcher is pitcher number 1, the five-liter is
+number 2, and the ten-liter is number 3.)  The list of pourings is the first
+member of the expanded state list; pourings are added to that list at the
+front, with <CODE>fput</CODE>.  For example, in the interaction
+
+<PRE>
+?<U>pour [3 7] 4</U>
+Pour from river to 7
+Pour from 7 to 3
+Final quantities are 3 4
+</PRE>
+
+<P>
+the extended state information for the final solution state is
+
+<PRE>
+[[[2 1] [0 2]] 3 4]
+</PRE>
+
+<P>
+In this list, the sublist <CODE>[0 2]</CODE> represents pouring water
+from the river into pitcher number 2, which is the seven-liter pitcher.
+The sublist <CODE>[2 1]</CODE> represents pouring water from pitcher number 2 into
+pitcher number 1.
+
+<H2>Abstract Data Types</H2>
+
+<P>
+Up to this point I've continued to call this expanded data
+structure a <EM>state.</EM>  That's what I did in the program, also, until I
+found that certain procedures needed the new version, while other procedures
+dealt with what I had originally considered a state, with only the final
+quantities included in the list.  As a result, my program had local
+variables named <CODE>state</CODE> in several procedures, some of which contained
+the old kind of state, and some the new kind.  I thought this might be
+confusing, so I did what I should have done in the first place: I invented a
+new name for the expanded data structure.  It's now called a <EM>path</EM>;
+when you read the program you can confidently assume that <CODE>:state</CODE>
+represents a list like
+
+<PRE>
+[3 4]
+</PRE>
+
+<P>
+while <CODE>:path</CODE> represents a list like
+
+<PRE>
+[[[2 1] [0 2]] 3 4]
+</PRE>
+
+<P>
+The trouble with using a list of lists of lists in a program is that it can
+become very complicated to keep track of all the uses of selectors like
+<CODE>first</CODE> and constructors like <CODE>fput</CODE>.  For example,
+suppose the value of the variable <CODE>oldpath</CODE> is a path, and we
+decide to pour water from pitcher number <CODE>:from</CODE> to pitcher
+number <CODE>:to</CODE>.  We now want to construct a new path, which will
+include a new state (computed from the old state and the two pitcher
+numbers) and a new list of moves, with the new move added to the existing
+ones.  We'd end up saying
+
+<PRE>
+make "newpath fput (fput (list :from :to) first :oldpath) ~
+                   (newstate butfirst :oldpath :from :to)
+</PRE>
+
+<P>
+assuming that we have a procedure <CODE>newstate</CODE> that computes the
+new state.  This instruction is hard to read!  The two invocations of
+<CODE>fput</CODE> have quite different purposes.  One adds a new move to a
+list of moves, while the other connects a list of moves to a state in order
+to form a path.  We can clarify instructions like this one if we make up
+synonyms for procedures like <CODE>first</CODE> and <CODE>fput</CODE> to be
+used in particular contexts.  For example, we make a new path using
+<CODE>fput</CODE>, but we'll call it <CODE>make.path</CODE> when we're using
+it for that purpose.  Just as <CODE>fput</CODE> is a constructor, and
+<CODE>first</CODE> a selector, for lists, we can invent constructors and
+selectors for <EM>abstract</EM> data types (ones that we make up, rather
+than ones built into Logo) such as paths:
+
+<PRE>
+to make.path :moves :state
+output fput :moves :state
+end
+
+to path.moves :path
+output first :path
+end
+
+to path.state :path
+output butfirst :path
+end
+</PRE>
+
+<P>
+That unreadable instruction shown earlier would now be written this way:
+
+<PRE>
+make "newpath make.path (fput (list :from :to) path.moves :oldpath) ~
+                        (newstate (path.state :oldpath) :from :to)
+</PRE>
+
+<P>
+At first glance this may not seem like much of an improvement, since the new
+names are longer and less familiar than the old ones.  But we can now read
+the instruction and see that it calls a constructor <CODE>make.path</CODE>
+with two inputs, one that seems to have to do with moves, and the other that
+seems to have to do with states.  If we remember that a path has two parts,
+a list of moves and a state, this makes sense.
+
+<P>
+&raquo; Invent a constructor and selectors for a <EM>move</EM> data type.
+
+<H2><CODE>Sentence</CODE> as a Combiner</H2>
+
+<P>
+The general breadth-first search program I showed earlier contains this
+procedure:
+
+<PRE>
+to breadth.descend :queue
+if emptyp :queue [stop]
+process first :queue
+breadth.descend sentence (butfirst :queue) (children first :queue)
+end
+</PRE>
+
+<P>
+The most common use of <CODE>sentence</CODE> is in generating English
+sentences.  In that use, the input and output lists are <EM>sentences</EM> or
+flat lists.  You're supposed to think, &quot;<CODE>Sentence</CODE> takes two words or
+sentences as inputs; its output is a sentence containing all the words of
+the inputs.&quot; In this program, we're using <CODE>sentence</CODE> in a different
+way, more like what is called <CODE>append</CODE> in Lisp.  Here you're supposed to
+think, &quot;<CODE>Sentence</CODE> takes two lists as inputs; its output is a list
+containing the members of the inputs.&quot; Those members could be words or
+lists, but in this case they'll be lists, namely paths.
+
+<P>
+Recursive procedures that manipulate non-flat lists generally use
+<CODE>fput</CODE> as the combiner.  That wouldn't work here for two
+reasons.  First, the queue structure that we need to implement breadth-first
+search requires that we add new entries at the opposite end of the list from
+where we look for the next node to process.  If we use <CODE>first</CODE> to
+select a node and <CODE>fput</CODE> to add new candidate nodes, then instead
+of a queue we'd be using a <EM>stack,</EM> in which the newest entries are
+processed first instead of the oldest ones first.  That would give us a
+depth-first tree search algorithm.  We could solve that problem by using
+<CODE>lput</CODE> as the combiner, but the second reason for choosing
+<CODE>sentence</CODE> is that we don't generate new entries one at a time.
+Instead, <CODE>children</CODE> gives us several children to add to the queue
+at once.  That means we must append the list output by <CODE>children</CODE>
+to the list that represents the nodes already queued.
+
+<H2>Finding the Children of a Node</H2>
+
+<P>
+<CODE>Pour</CODE> is going to work essentially by invoking <CODE>breadth.first</CODE> on a
+root node containing zeros for all the current quantities.  But in this case
+we want to pick a single node that satisfies the conditions of the problem,
+so we must modify <CODE>breadth.first</CODE> to make it an <EM>operation</EM> that
+outputs the first such node:
+
+<PRE>
+to breadth.first :root
+output breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+if winnerp first :queue [output first :queue]
+output breadth.descend sentence (butfirst :queue) ~
+                                (children first :queue)
+end
+</PRE>
+
+<P>
+The predicate <CODE>winnerp</CODE> will output <CODE>true</CODE> if its input is
+a node that satisfies the problem conditions:
+
+<PRE>
+to winnerp :path
+output memberp :goal path.state :path
+end
+</PRE>
+
+<P>
+If <CODE>breadth.first</CODE> runs out of nodes without finding a
+solution, it returns an empty list to indicate failure.
+
+<P>
+Here is a
+simplified version of <CODE>pour</CODE>:
+
+<PRE>
+to pour :sizes :goal
+win breadth.first make.path [] all.empty :sizes
+end
+
+to all.empty :list
+output map [0] :list
+end
+</PRE>
+
+<P>
+<CODE>All.empty</CODE> is an operation that outputs a state in which all
+of the values are zeros.  The number of zeros in the list is equal to the
+number of members in its input, which is the number of pitchers.  <CODE>Pour</CODE>
+combines this initial state with an empty list of moves to produce the
+first path.
+
+<P> To allow <CODE>breadth.first</CODE> to work, we must have an operation
+called <CODE>children</CODE> that outputs a list of the children of a node.
+Starting from a particular state, what are the possible outcomes of a single
+pouring?  As I mentioned earlier, the source of a pouring can be the river
+or any of the pitchers, and the destination can also be the river or any of
+the pitchers.  If there are <I>n</I> pitchers, then there are <I>n</I>+1
+sources, <I>n</I>+1 destinations, and therefore (<I>n</I>+1)<SUP>2</SUP>
+possible pourings.  Here is how the program structure reflects this.  I'm
+assuming that we've created (elsewhere in the program) a variable called
+<CODE>pitchers</CODE> whose value is a list of all the integers from zero to
+<I>n</I>.
+
+<PRE>
+to children :path
+output map.se [children1 :path ?] :pitchers
+end
+
+to children1 :path :from
+output map.se [child :path :from ?] :pitchers
+end
+
+to child :path :from :to
+output (list make.path (fput (list :from :to) path.moves :path)
+                       (newstate (path.state :path) :from :to))
+end
+</PRE>
+
+<P>
+The version of <CODE>child</CODE> presented here is simpler than the one
+in the actual project, but the other procedures are the real versions.
+We'll see later how <CODE>child</CODE> is expanded.  The immediately important
+point is to see how <CODE>children</CODE> and <CODE>children1</CODE> ensure that every
+possible source (<CODE>:from</CODE>) and destination (<CODE>:to</CODE>) from zero to the
+number of pitchers are used.
+
+<P>
+You should be wondering, at this point, why <CODE>children1</CODE> uses
+<CODE>sentence</CODE> as a combiner.  (That's what it means to use
+<CODE>map.se</CODE> rather than <CODE>map</CODE>.)  It makes sense for
+<CODE>children</CODE> to combine using <CODE>sentence</CODE> because, as I
+discussed earlier, the things it's combining are lists of nodes, the outputs
+from invocations of <CODE>children1</CODE>.  But <CODE>children1</CODE> is
+not combining lists of nodes; it's combining the outputs from invocations of
+<CODE>child</CODE>.  Each invocation of <CODE>child</CODE> computes a single
+child node.  It would be more straightforward to write the program this way:
+
+<PRE>
+to children1 :path :from                        ;; simplified
+output map [child :path :from ?] :pitchers
+end
+
+to child :path :from :to                        ;; simplified
+output make.path (fput (list :from :to) path.moves :path) ~
+                 (newstate (path.state :path) :from :to)
+end
+</PRE>
+
+<P>
+This also eliminates the use of <CODE>list</CODE> in <CODE>child</CODE>, needed
+in the other version to turn a single node into a singleton (one-member)
+list of nodes, which is what <CODE>sentence</CODE> needs to function properly as a
+combiner.
+
+<P>
+The reason for the use of <CODE>sentence</CODE> in <CODE>children1</CODE> is that we are
+later going to modify <CODE>child</CODE> so that sometimes it rejects a possible
+new node for efficiency reasons.  For example, it makes no sense to have
+nodes for pourings in which the source and the destination are the same.
+When it wants to reject a node, <CODE>child</CODE> will output the empty list.
+Using <CODE>sentence</CODE> as the combiner, this empty list simply doesn't affect
+the accumulated list of new nodes.  Here is a version of <CODE>child</CODE>
+modified to exclude pourings to and from the same place:
+
+<PRE>
+to child :path :from :to
+<U>if equalp :from :to [output []]</U>
+output (list make.path (fput (list :from :to) path.moves :path)
+                       (newstate (path.state :path) :from :to))
+end
+</PRE>
+
+<P>
+With this version of <CODE>child</CODE>, the use of <CODE>sentence</CODE> in
+<CODE>children1</CODE> may seem more sensible to you.
+
+<P>
+To create the variable <CODE>pitchers</CODE> we modify the top-level <CODE>pour</CODE>:
+
+<PRE>
+to pour :sizes :goal
+<U>local "pitchers</U>
+<U>make "pitchers fput 0 (map [#] :sizes)</U>
+win breadth.first make.path [] all.empty :sizes
+end
+</PRE>
+
+<P>
+Here we are taking advantage of a feature of <CODE>map</CODE> that I haven't
+mentioned earlier.  The number sign (<CODE>#</CODE>) can be used in a
+<CODE>map</CODE> template to represent the position in the input, rather
+than the value, of a member of the input data list.  That is,
+<CODE>#</CODE> is replaced by 1 for the first member, 2 for the second, and
+so on.  In this example, these position numbers are all we care about; the
+template does not contain the usual question mark to refer to the values of
+the data.
+
+<H2>Computing a New State</H2>
+
+<P>
+The job of <CODE>child</CODE> is to produce a new child node, that is to say, a new
+path.  Its inputs are an old path and the source and destination of a new
+pouring.  The new path consists of a new state and a new list of pourings.
+The latter is easy; it's just the old list of pourings with the new one
+inserted.  <CODE>Child</CODE> computes that part itself, with the expression
+
+<PRE>
+fput (list :from :to) path.moves :path
+</PRE>
+
+<P>
+The new state is harder to compute.  There are four cases.  
+
+<OL>
+<LI> If the destination is the river, then the thing to do is to empty the
+source pitcher.
+<LI> If the source is the river, then the thing to do is
+to fill the destination pitcher to its capacity.
+<LI> If source and
+destination are pitchers and the destination pitcher has enough empty space
+to hold the contents of the source pitcher, then the thing to do is to add
+the entire contents of the source pitcher to the destination pitcher,
+setting the contents of the source pitcher to zero.
+<LI> If both are pitchers but there is not enough room in the
+destination to hold the contents of the source, then the thing to do is fill
+the destination to its capacity and subtract that much water from the source.
+</OL>
+
+<P>
+Here is the procedure to carry out these computations:
+
+<PRE>
+to newstate :state :from :to
+if riverp :to [output replace :state :from 0]
+if riverp :from [output replace :state :to (size :to)]
+if (water :from) < (room :to) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((water :from)+(water :to))]
+output replace2 :state ~
+                :from ((water :from)-(room :to)) ~
+                :to (size :to)
+end
+</PRE>
+
+<P>
+Each instruction of this procedure straightforwardly embodies one
+of the four numbered possibilities.
+
+<P>
+Helper procedures are used to compute a new list of amounts of
+water, replacing either one or two old values from the previous list:
+
+<PRE>
+to replace :list :index :value
+if equalp :index 1 [output fput :value butfirst :list]
+output fput first :list (replace butfirst :list :index-1 :value)
+end
+
+to replace2 :list :index1 :value1 :index2 :value2
+if equalp :index1 1 ~
+   [output fput :value1 replace butfirst :list :index2-1 :value2]
+if equalp :index2 1 ~
+   [output fput :value2 replace butfirst :list :index1-1 :value1]
+output fput first :list ~
+            replace2 butfirst :list :index1-1 :value1 :index2-1 :value2
+end
+</PRE>
+
+<P>
+<CODE>Replace</CODE> takes as inputs a list, a number
+representing a position in the list, and a value.  The output is a copy of
+the first input, but with the member selected by the second input replaced
+with the third input.  Here's an example:
+
+<PRE>
+?<U>show replace [a b c d e] 4 "x</U>
+[a b c x e]
+</PRE>
+
+<P>
+<CODE>Replace2</CODE> has a similar purpose, but its output has
+<EM>two</EM> members changed from their values in the input list.
+
+<P>
+Remember that <CODE>newstate</CODE> has as one of its inputs a state, that
+is, a list of numbers representing quantities of water.
+<CODE>Newstate</CODE> uses <CODE>replace</CODE> to change the amount of
+water in one of the pitchers.  The second input to <CODE>replace</CODE> is
+the pitcher number, and the third is the new contents of that pitcher.  For
+example, if the destination is the river then we want to empty the source
+pitcher.  This case is handled by the instruction
+
+<PRE>
+if riverp :to [output replace :state :from 0]
+</PRE>
+
+<P>
+If the destination is the river,
+the output state is the same as the input state except that the pitcher
+whose number is <CODE>:from</CODE> has its contents replaced by zero.  The other
+cases are handled similarly, except that two replacements are necessary if
+both source and destination are pitchers.
+
+<H2>More Data Abstraction</H2>
+
+<P>
+The instructions in <CODE>newstate</CODE> use some procedures I haven't written
+yet, such as <CODE>riverp</CODE> to test whether a source or destination is the
+river, and <CODE>room</CODE> to find the amount of empty space in a pitcher.
+If we think of a pitcher as an abstract data type, then these can be
+considered selectors for that type.  Here they are:
+
+<PRE>
+to riverp :pitcher
+output equalp :pitcher 0
+end
+
+to size :pitcher
+output item :pitcher :sizes
+end
+
+to water :pitcher
+output item :pitcher :state
+end
+
+to room :pitcher
+output (size :pitcher)-(water :pitcher)
+end
+</PRE>
+
+<P>
+To underscore the importance of data abstraction, here is what <CODE>newstate</CODE>
+would look like without these selectors.  (I actually wrote it this way at
+first, but I think you'll agree that it's unreadable.)
+
+<PRE>
+to newstate :state :from :to
+if equalp :to 0 [output replace :state :from 0]
+if equalp :from 0 [output replace :state :to (item :to :sizes)]
+if ((item :from :state) < ((item :to :sizes)-(item :to :state))) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((item :from :state)+(item :to :state))]
+output replace2 :state ~
+                :from ((item :from :state)-
+                       ((item :to :sizes)-(item :to :state))) ~
+                :to (item :to :sizes)
+end
+</PRE>
+
+<H2>Printing the Results</H2>
+
+<P>
+When <CODE>breadth.first</CODE> finds a winning path, the top-level procedure
+<CODE>pour</CODE> invokes <CODE>win</CODE> with that path as its input.
+<CODE>Win</CODE>'s job is to print the results.  Since the list of moves is
+kept in reverse order, <CODE>win</CODE> uses the Logo primitive operation
+<CODE>reverse</CODE> to ensure that the moves are shown in chronological
+order.
+
+<PRE>
+to win :path
+if emptyp :path [print [Can't do it!] stop]
+foreach (reverse path.moves :path) "win1
+print sentence [Final quantities are] (path.state :path)
+end
+
+to win1 :move
+print (sentence [Pour from] (printform first :move)
+                [to] (printform last :move))
+end
+
+to printform :pitcher
+if riverp :pitcher [output "river]
+output size :pitcher
+end
+</PRE>
+
+<H2>Efficiency: What Really Matters?</H2>
+
+<P>
+The <CODE>pour</CODE> program as described so far would run extremely slowly.  The
+rest of the commentary in this chapter will be on ways to improve its
+efficiency.  The fundamental problem is one I mentioned earlier: the
+number of nodes in the tree grows enormously as the depth increases.  In a
+problem with two pitchers, the root level has one node, the next level nine
+nodes, the third level 81, the fourth level 729, the fifth level 6561, and
+the sixth level 59049.  A six-step problem like
+
+<PRE>
+pour [3 7] 2
+</PRE>
+
+<P>
+would strain the memory capacity of many computers as well as
+taking forever to run!
+
+<P>
+When you're trying to make a program more efficient, the easiest
+improvements to figure out are not usually the ones that really help.  The
+easy things to see are details about the computation within some procedure.
+For example, the <CODE>newstate</CODE> procedure described earlier calls the
+<CODE>room</CODE> procedure twice to compute the amount of room available in
+the destination pitcher.  Each call to <CODE>room</CODE> computes the
+quantity
+
+<PRE>
+(item :to :sizes)-(item :to :state)
+</PRE>
+
+<P>
+This expression represents the amount of empty space in the destination
+pitcher.  Perhaps it would be faster to compute this number only once, and
+store it in a variable?  I haven't bothered trying to decide, because the
+effect is likely to be small either way.  Improving the speed of computing
+each new node is much less important than cutting down the <EM>number</EM>
+of nodes we compute.  The reason is that eliminating one node also
+eliminates all its descendants, so that the effect grows as the program
+moves to lower levels of the tree.
+
+<P>
+The best efficiency improvement is likely to be a complete rethinking of the
+algorithm.  For example, I've mentioned that a numerical algorithm
+exists for solving two-variable linear Diophantine equations.  This
+algorithm would be a <EM>much</EM> faster way to solve two-pitcher problems
+than even the best tree search program.  I haven't used that method because
+I wanted a simple program that would work for any number of pitchers, but if
+I really had to solve such problems in practice, I'd use the Diophantine
+equation method wherever possible.
+
+<H2>Avoiding Meaningless Pourings</H2>
+
+<P>
+We have already modified <CODE>child</CODE> to avoid one kind of meaningless
+pouring, namely ones in which the source is the same as the destination.
+Two other avoidable kinds of meaningless pourings are ones from an empty
+source and ones to a full destination.  In either case, the quantity of
+water poured will be zero, so the state will not change.  Here is a modified
+version of <CODE>child</CODE> that avoids these cases:
+
+<PRE>
+to child :path :from :to
+<U>local "state</U>
+if equalp :from :to [output []]
+<U>make "state path.state :path</U>
+<U>if not riverp :from ~</U>
+   <U>[if equalp (water :from) 0 [output []]]</U>
+<U>if not riverp :to ~</U>
+   <U>[if equalp (water :to) (size :to) [output []]]</U>
+output (list make.path (fput list :from :to path.moves :path)
+                       (newstate :state :from :to))
+end
+</PRE>
+
+<P>
+The local variable <CODE>state</CODE> is set up because the procedure
+<CODE>water</CODE> needs it.  (<CODE>Water</CODE> relies on Logo's dynamic scope to give
+it access to the <CODE>state</CODE> variable provided by its caller.)
+
+<P>
+The important changes are the two new <CODE>if</CODE> instructions.  The first
+avoids pouring from an empty pitcher; the second avoids pouring into a full
+one.  In both cases, the test makes sense only for actual pitchers; the
+river does not have a size or a current contents.
+
+<P>
+To underscore what I said earlier about what's important in trying to
+improve the efficiency of a program, notice that these added tests
+<EM>slow down</EM> the process of computing each new node, and yet the overall
+effect is beneficial because the number of nodes is dramatically reduced.
+
+<H2>Eliminating Duplicate States</H2>
+
+<P>
+It's relatively easy to find individual pourings that are absurd.  A harder
+problem is to avoid <EM>sequences</EM> of pourings, each reasonable in
+itself, that add up to a state we've already seen.  The most blatant
+examples are like the one I mentioned a while back about filling a pitcher
+from the river and then immediately emptying it into the river again.  But
+there are less blatant cases that are also worth finding.  For example,
+suppose the problem includes a three-liter pitcher and a six-liter pitcher.
+The sequence
+
+<PRE>
+Pour from river to 6
+Pour from 6 to 3
+</PRE>
+
+<P>
+leads to the same state (<CODE>[3 3]</CODE>) as the sequence
+
+<PRE>
+Pour from river to 3
+Pour from 3 to 6
+Pour from river to 3
+</PRE>
+
+<P>
+The latter isn't an absurd sequence of pourings, but it's silly to
+pursue any of its children because they will have the same states as the
+children of the first sequence, which is one step shorter.  Any solution
+that could be found among the descendents of the second sequence will be
+found one cycle earlier among the descendents of the first.
+
+<P>
+To avoid pursuing these duplicate states, the program keeps a list of all
+the states found so far.  This strategy requires changes to <CODE>pour</CODE> and
+to <CODE>child</CODE>.
+
+<PRE>
+to pour :sizes :goal
+<U>local [oldstates pitchers]</U>
+<U>make "oldstates (list all.empty :sizes)</U>
+make "pitchers fput 0 (map [#] :sizes)
+win breadth.first make.path [] all.empty :sizes
+end
+
+to child :path :from :to
+<U>local [state newstate]</U>
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+<U>make "newstate (newstate :state :from :to)</U>
+<U>if memberp :newstate :oldstates [output []]</U>
+<U>make "oldstates fput :newstate :oldstates</U>
+output (list make.path (fput list :from :to path.moves :path) <U>:newstate</U>)
+end
+</PRE>
+
+<P>
+The change in <CODE>pour</CODE> is simply to initialize the list of
+already-seen states to include the state in which all pitchers are empty.
+There are two important new instructions in <CODE>child</CODE>.  The first
+rejects a new node if its state is already in the list; the second adds a
+new state to the list.  Notice that it is duplicate <EM>states</EM> we look
+for, not duplicate <EM>paths</EM>; it's in the nature of a tree-search
+program that there can never be duplicate paths.
+
+<H2>Stopping the Program Early</H2>
+
+<P>
+The breadth-first search mechanism we're using detects a winning path as
+it's <EM>removed</EM> from the front of the queue.  If we could detect the
+winner as we're about to <EM>add</EM> it to the queue, we could avoid the
+need to compute all of the queue entries that come after it: children of
+nodes that are at the same level as the winning node, but to its left.
+
+<P>
+It's not easy to do this elegantly, though, because we add new nodes to the
+queue several at a time, using the procedure <CODE>children</CODE> to compute them.
+What we need is a way to let <CODE>child</CODE>, which constructs the winning node,
+prevent the computation of any more children, and notify <CODE>breadth.first</CODE>
+that a winner has been found.
+
+<P>
+The most elegant way to do this in Berkeley Logo uses a primitive called
+<CODE>throw</CODE> that we won't meet until the second volume of this series.
+Instead, in this chapter I'll use a less elegant technique, but one that
+works in any Logo implementation.  I'll create a variable named <CODE>won</CODE>
+whose value is initially <CODE>false</CODE> but becomes <CODE>true</CODE> as soon as a
+winner is found.  Here are the necessary modifications:
+
+<PRE>
+to pour :sizes :goal
+local [oldstates pitchers <U>won</U>]
+make "oldstates (list all.empty :sizes)
+make "pitchers fput 0 (map [#] :sizes)
+<U>make "won "false</U>
+win breadth.first make.path [] all.empty :sizes
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+<U>if :won [output last :queue]</U>
+op breadth.descend sentence (butfirst :queue) ~
+                            (children first :queue)
+end
+
+to child :path :from :to
+local [state newstate]
+<U>if :won [output []]</U>
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+make "newstate (newstate :state :from :to)
+if memberp :newstate :oldstates [output []]
+make "oldstates fput :newstate :oldstates
+<U>if memberp :goal :newstate [make "won "true]</U>
+output (list make.path (fput list :from :to path.moves :path) :newstate)
+end
+</PRE>
+
+<P>
+The procedure <CODE>winnerp</CODE> is no longer used; we are now checking
+a state, rather than a path, for the goal amount.
+
+<H2>Further Explorations</H2>
+
+<P>
+&raquo; Is it possible to eliminate more pieces of the tree by more sophisticated
+analysis of the problem?  For example, in all of the specific problems I've
+presented, the best solution never includes pouring from pitcher A to
+pitcher B and then later pouring from B to A.  Is this true in general?  If
+so, many possible pourings could be rejected with an instruction like
+
+<PRE>
+if memberp list :to :from path.moves :path [output []]
+</PRE>
+
+<P>
+in <CODE>child</CODE>.
+
+<P>
+&raquo; Do some research into Diophantine equations and the techniques used to solve
+them computationally.  See if you can devise a general method for solving
+pitcher problems with any number of pitchers, based on Diophantine equations.
+
+<P>
+&raquo; Think about writing a program that would mimic the way people actually
+approach these problems.  The program would, for example, compute the
+differences and remainders of pairs of pitcher sizes, looking for the goal
+quantity.
+
+<P>
+&raquo; What other types of puzzles can be considered as tree searching problems?
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch13/v1ch13.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<PRE>
+;; Initialization
+
+to pour :sizes :goal
+local [oldstates pitchers won]
+make "oldstates (list all.empty :sizes)
+make "pitchers fput 0 (map [#] :sizes)
+make "won "false
+win breadth.first make.path [] all.empty :sizes
+end
+
+to all.empty :list
+output map [0] :list
+end
+
+;; Tree search
+
+to breadth.first :root
+op breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+if :won [output last :queue]
+op breadth.descend sentence (butfirst :queue) ~
+                            (children first :queue)
+end
+
+;; Generate children
+
+to children :path
+output map.se [children1 :path ?] :pitchers
+end
+
+to children1 :path :from
+output map.se [child :path :from ?] :pitchers
+end
+
+to child :path :from :to
+local [state newstate]
+if :won [output []]
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+make "newstate (newstate :state :from :to)
+if memberp :newstate :oldstates [output []]
+make "oldstates fput :newstate :oldstates
+if memberp :goal :newstate [make "won "true]
+output (list make.path (fput list :from :to path.moves :path) :newstate)
+end
+
+to newstate :state :from :to
+if riverp :to [output replace :state :from 0]
+if riverp :from [output replace :state :to (size :to)]
+if (water :from) < (room :to) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((water :from)+(water :to))]
+output replace2 :state ~
+                :from ((water :from)-(room :to)) ~
+                :to (size :to)
+end
+
+;; Printing the result
+
+to win :path
+if emptyp :path [print [Can't do it!] stop]
+foreach (reverse path.moves :path) "win1
+print sentence [Final quantities are] (path.state :path)
+end
+
+to win1 :move
+print (sentence [Pour from] (printform first :move)
+                [to] (printform last :move))
+end
+
+to printform :pitcher
+if riverp :pitcher [output "river]
+output size :pitcher
+end
+
+;; Path data abstraction
+
+to make.path :moves :state
+output fput :moves :state
+end
+
+to path.moves :path
+output first :path
+end
+
+to path.state :path
+output butfirst :path
+end
+
+;; Pitcher data abstraction
+
+to riverp :pitcher
+output equalp :pitcher 0
+end
+
+to size :pitcher
+output item :pitcher :sizes
+end
+
+to water :pitcher
+output item :pitcher :state
+end
+
+to room :pitcher
+output (size :pitcher)-(water :pitcher)
+end
+
+;; List processing utilities
+
+to replace :list :index :value
+if equalp :index 1 [output fput :value butfirst :list]
+output fput first :list (replace butfirst :list :index-1 :value)
+end
+
+to replace2 :list :index1 :value1 :index2 :value2
+if equalp :index1 1 ~
+   [output fput :value1 replace butfirst :list :index2-1 :value2]
+if equalp :index2 1 ~
+   [output fput :value2 replace butfirst :list :index1-1 :value1]
+output fput first :list ~
+            replace2 butfirst :list :index1-1 :value1 :index2-1 :value2
+end
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch13/v1ch13.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch14/pour.lg b/js/games/nluqo.github.io/~bh/v1ch14/pour.lg
new file mode 100644
index 0000000..ee561e7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch14/pour.lg
@@ -0,0 +1,130 @@
+;; Initialization
+
+to pour :sizes :goal
+local [oldstates pitchers won]
+make "oldstates (list all.empty :sizes)
+make "pitchers fput 0 (map [#] :sizes)
+make "won "false
+win breadth.first make.path [] all.empty :sizes
+end
+
+to all.empty :list
+output map [0] :list
+end
+
+;; Tree search
+
+to breadth.first :root
+op breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+if :won [output last :queue]
+op breadth.descend sentence (butfirst :queue) ~
+                            (children first :queue)
+end
+
+;; Generate children
+
+to children :path
+output map.se [children1 :path ?] :pitchers
+end
+
+to children1 :path :from
+output map.se [child :path :from ?] :pitchers
+end
+
+to child :path :from :to
+local [state newstate]
+if :won [output []]
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+make "newstate (newstate :state :from :to)
+if memberp :newstate :oldstates [output []]
+make "oldstates fput :newstate :oldstates
+if memberp :goal :newstate [make "won "true]
+output (list make.path (fput list :from :to path.moves :path) :newstate)
+end
+
+to newstate :state :from :to
+if riverp :to [output replace :state :from 0]
+if riverp :from [output replace :state :to (size :to)]
+if (water :from) < (room :to) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((water :from)+(water :to))]
+output replace2 :state ~
+                :from ((water :from)-(room :to)) ~
+                :to (size :to)
+end
+
+;; Printing the result
+
+to win :path
+if emptyp :path [print [Can't do it!] stop]
+foreach (reverse path.moves :path) "win1
+print sentence [Final quantities are] (path.state :path)
+end
+
+to win1 :move
+print (sentence [Pour from] (printform first :move)
+                [to] (printform last :move))
+end
+
+to printform :pitcher
+if riverp :pitcher [output "river]
+output size :pitcher
+end
+
+;; Path data abstraction
+
+to make.path :moves :state
+output fput :moves :state
+end
+
+to path.moves :path
+output first :path
+end
+
+to path.state :path
+output butfirst :path
+end
+
+;; Pitcher data abstraction
+
+to riverp :pitcher
+output equalp :pitcher 0
+end
+
+to size :pitcher
+output item :pitcher :sizes
+end
+
+to water :pitcher
+output item :pitcher :state
+end
+
+to room :pitcher
+output (size :pitcher)-(water :pitcher)
+end
+
+;; List processing utilities
+
+to replace :list :index :value
+if equalp :index 1 [output fput :value butfirst :list]
+output fput first :list (replace butfirst :list :index-1 :value)
+end
+
+to replace2 :list :index1 :value1 :index2 :value2
+if equalp :index1 1 ~
+   [output fput :value1 replace butfirst :list :index2-1 :value2]
+if equalp :index2 1 ~
+   [output fput :value2 replace butfirst :list :index1-1 :value1]
+output fput first :list ~
+            replace2 butfirst :list :index1-1 :value1 :index2-1 :value2
+end
diff --git a/js/games/nluqo.github.io/~bh/v1ch14/pourall.gif b/js/games/nluqo.github.io/~bh/v1ch14/pourall.gif
new file mode 100644
index 0000000..826d776
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch14/pourall.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch14/poursome.gif b/js/games/nluqo.github.io/~bh/v1ch14/poursome.gif
new file mode 100644
index 0000000..f82b10b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch14/poursome.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch14/v1ch14.html b/js/games/nluqo.github.io/~bh/v1ch14/v1ch14.html
new file mode 100644
index 0000000..e19dffc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch14/v1ch14.html
@@ -0,0 +1,1402 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 14: Example: Pitcher Problem Solver</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Pitcher Problem Solver</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch13/v1ch13.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+<P>Program file for this chapter: <A HREF="pour.lg"><CODE>pour</CODE></A>
+
+<P>
+You have probably seen puzzles like this one many times:
+
+<BLOCKQUOTE>
+You are at the side of a river.  You have a three-liter pitcher and a
+seven-liter pitcher.  The pitchers do not have markings to allow measuring
+smaller quantities.  You need two liters of water.  How can you measure
+two liters?
+</BLOCKQUOTE>
+
+<P>
+These puzzles are used in some IQ tests, so many people
+come across them in schools.  To solve the problem, you must pour water from
+one pitcher to another.  In this particular problem, there are six steps in
+the shortest solution:
+
+<OL>
+<LI> Fill the three-liter pitcher from the river.
+<LI> Pour the three liters from the three-liter pitcher into the
+seven-liter pitcher.
+<LI> Fill the three-liter pitcher from the river again.
+<LI> Pour the three liters from the three-liter pitcher into the
+seven-liter pitcher (which now contains six liters).
+<LI> Fill the three-liter pitcher from the river yet again.
+<LI> Pour from the three-liter pitcher into the seven-liter pitcher
+until the latter is full.  This requires one liter, since the seven-liter
+pitcher had six liters of water after step 4.  This step leaves two liters
+in the three-liter pitcher.
+</OL>
+
+<P>
+This example is a relatively hard pitcher problem, since it
+requires six steps in the solution.  On the other hand, it doesn't require
+pouring water back into the river, and it doesn't have any unnecessary
+pitchers.  An actual IQ test has several such problems, starting with really
+easy ones like this:
+
+<BLOCKQUOTE>
+You are at the side of a river.  You have a three-liter pitcher and a
+seven-liter pitcher.  The pitchers do not have markings to allow measuring
+smaller quantities.  You need four liters of water.  How can you measure
+four liters?
+</BLOCKQUOTE>
+
+<P>
+and progressing to harder ones like this:
+
+<BLOCKQUOTE>
+You are at the side of a river.  You have a two-liter pitcher,
+a five-liter pitcher, and a
+ten-liter pitcher.  The pitchers do not have markings to allow measuring
+smaller quantities.  You need one liter of water.  How can you measure
+one liter?
+</BLOCKQUOTE>
+
+<P>
+The goal of this project is a program that can solve these problems.  The
+program should take two inputs, a list of pitcher sizes and a number saying
+how many liters we want.  It will work like this:
+
+<PRE>
+? <U>pour [3 7] 4</U>
+Pour from river to 7
+Pour from 7 to 3
+Final quantities are 3 4
+? <U>pour [2 5 10] 1</U>
+Pour from river to 5
+Pour from 5 to 2
+Pour from 2 to river
+Pour from 5 to 2
+Final quantities are 2 1 0
+</PRE>
+
+<P>
+How do <EM>people</EM> solve these problems?  Probably you try a variety of
+special-purpose techniques.  For example, you look at the sums and
+differences of the pitcher sizes to see if you can match the goal that way.
+In the problem about measuring four liters with a three-liter pitcher and a
+seven-liter pitcher, you probably recognized right away that 7&minus;3=4.  A more
+sophisticated approach is to look at the remainders when one pitcher size is
+divided by another.  In the last example, trying to measure one liter with
+pitchers of two, five, and ten liters, you might notice that the remainder
+of 5/2 is 1.  That means that after removing some number of twos from five,
+you're left with one.
+
+<P>
+Such techniques might or might not solve any given pitcher problem.
+Mathematicians have studied ways to solve such problems in general.  To a
+mathematician, a pitcher problem is equivalent to an
+algebraic equation in which the variables are required to take on
+integer (whole number) values.  For example, the problem at the beginning of
+this chapter corresponds to the equation
+
+<P><CENTER>3<I>x</I>+7<I>y</I>=2</CENTER>
+
+<P>In this equation, <I>x</I> represents the number of times the
+three-liter pitcher is filled and <I>y</I> represents the number of times
+the seven-liter pitcher is filled.  A positive value means that the pitcher
+is filled from the river, while a negative value means that it's filled from
+another pitcher.
+
+<P> An equation with two variables like this one can have infinitely many
+solutions, but not all the solutions will have integer values.  One
+integer-valued solution is <I>x</I>=3 and <I>y</I> = -1.  This solution
+represents filling the three-liter pitcher three times from the river (for a
+total of nine liters) and filling the seven-liter pitcher once from the
+three-liter pitcher.  Since the seven-liter pitcher is bigger than the
+three-liter pitcher, it has to be filled in stages.  Do you see how this
+analysis corresponds to the sequence of steps I gave earlier?
+
+<P> An equation with integer-valued variables is called a
+<EM>Diophantine</EM> equation.  In general, a Diophantine equation will have
+infinitely many solutions, but they won't all be practical as solutions to
+the original problem.  For example, another solution to the equation we've
+been considering is <I>x</I> = -4 and <I>y</I>=2.  This solution tells
+us to fill the seven-liter pitcher from the river twice, and the three-liter
+pitcher from the seven-liter pitcher four times.  Here's how that works out
+as a sequence of steps:
+
+<OL>
+<LI> Fill the seven-liter pitcher from the river.
+<LI> Fill the three-liter pitcher from the seven-liter pitcher.  (This
+leaves four liters in the seven-liter pitcher.)
+<LI> Empty the three-liter pitcher into the river.
+<LI> Fill the three-liter pitcher from the seven-liter pitcher.  (This
+leaves one liter in the seven-liter pitcher.)
+<LI> Empty the three-liter pitcher into the river.
+<LI> Pour the contents of the seven-liter pitcher (one liter) into the
+three-liter pitcher.
+<LI> Fill the seven-liter pitcher from the river (for the second and
+last time).
+<LI> Fill the three-liter pitcher (which already had one liter in it)
+from the seven-liter pitcher.  (This leaves five liters in the seven-liter
+pitcher.)
+<LI> Empty the three-liter pitcher into the river.
+<LI> Fill the three-liter pitcher from the seven-liter pitcher.  This
+leaves the desired two liters in the seven-liter pitcher.
+</OL>
+
+<P>
+This solution works, but it's more complicated than the one I
+used in the first place.
+
+<P>
+One way to solve Diophantine equations is graphically.  For example, consider
+the problem about measuring one liter of water with pitcher capacities two,
+five, and ten liters.  It turns out that the ten-liter pitcher is not
+actually needed, so let's forget it for now and consider the simpler but
+equivalent problem of using just the two-liter and the five-liter pitchers.
+This problem gives rise to the equation
+
+<P><CENTER>2<I>x</I>+5<I>y</I>=1</CENTER>
+
+<P>For the moment, never mind that we are looking for integer solutions.
+Just graph the equation as you ordinarily would.  The graph will be a
+straight line; probably the easiest way to draw the graph is to find the
+<I>x</I>-intercept (when <I>y</I>=0, 2<I>x</I>=1 so <I>x</I>=1/2)
+and the <I>y</I>-intercept (when <I>x</I>=0, <I>y</I>=1/5).
+
+<P><CENTER><IMG SRC="graph.gif" ALT="<P>figure: graph"></CENTER>
+
+<P>
+Once you've drawn the graph, you can look for places where the line
+crosses the grid points of the graph paper.  In this case, two such points
+of intersection are (-2,1) and (3,-1).  The first of these points
+represents the solution shown earlier, in which the five-liter pitcher is
+filled from the river and then used as a source of water to fill the
+two-liter pitcher twice.  The second integer solution represents the method
+of filling the two-liter pitcher from the river three times, then
+pouring the water from the two-liter pitcher to the five-liter pitcher each
+time.  (On the third such pouring, the five-liter pitcher fills up after
+only one liter is poured, leaving one liter in the two-liter pitcher.)
+
+What about the original version of this problem, in which there were three
+pitchers?  In this case, we have a Diophantine equation with three variables:
+
+<P><CENTER>2<I>x</I>+5<I>y</I>+10<I>z</I>=1</CENTER>
+
+<P>The graph of this equation is a plane in a three-dimensional
+coordinate system.  An example of a solution point that uses all three
+pitchers is (-2,-1,1).  How would you interpret this as a series of
+pouring steps?
+
+<P>
+By the way, not all pitcher problems have solutions.  For example, how could
+you measure one liter with a two-liter pitcher and a ten-liter pitcher?  The
+answer is that you can't; since both pitchers hold an even number of liters,
+any amount of water measurable with them will also be even.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>You can
+find a computational algorithm to solve (or show that there are no solutions
+to) any linear Diophantine equation with two variables on page 50 of Courant
+and Robbins, <CITE>What Is Mathematics?</CITE> (Oxford University Press,
+1941).</SMALL></BLOCKQUOTE></SMALL>
+
+<H2>Tree Search</H2>
+<P>
+My program does not solve pitcher problems by manipulating Diophantine
+equations.  Instead, it simply tries every possible sequence of pouring
+steps until one of the pitchers contains the desired amount of water.  This
+method is not feasible for a human being, because the number of possible
+sequences is generally quite large.  Computers are better than people at
+doing large numbers of calculations quickly; people have the almost magical
+ability to notice the one relevant pattern in a problem without trying all
+the possibilities.  (Some researchers attribute this human ability to
+&quot;parallel processing&quot;--the fact that the human brain can carry
+on several independent trains of thought all at once.  They are beginning to
+build computers designed for parallel processing, and hope that these
+machines will be able to perform more like people than traditional
+computers.)
+<P>
+The possible pouring steps for a pitcher problem form a <EM>tree.</EM> The
+root of the tree is the situation in which all the pitchers are empty.
+Connected to the root are as many branches as there are pitchers; each
+branch leads to a node in which one of the pitchers has been filled from the
+river.  Each of those nodes has several branches connected to it,
+corresponding to the several possible pouring steps.  Here is the beginning
+of the tree for the case of a three-liter pitcher and a seven-liter pitcher.
+Each node is represented in the diagram by a list of numbers indicating the
+current contents of the three-liter pitcher and the seven-liter pitcher; for
+example, the list <CODE>[3 4]</CODE> means that the three-liter pitcher is
+full and the seven-liter pitcher contains four liters.
+
+<P><CENTER><IMG SRC="poursome.gif" ALT="<P>figure: poursome"></CENTER>
+
+<P>
+Actually, I have simplified this tree by showing only the
+meaningful pouring steps.  The program must consider, and of course reject,
+things like the sequence
+
+<OL>
+<LI> Fill the three-liter pitcher from the river.
+<LI> Empty the three-liter pitcher into the river.
+</OL>
+
+<P>
+and individual meaningless steps like pouring from a pitcher into
+itself, pouring from an empty pitcher, and pouring into a full pitcher.  For
+a two-pitcher problem there are three possible sources of water (the two
+pitchers and the river) and three possible destinations, for a total of nine
+possible pouring steps.  Here is the top of the full tree:
+
+<P><CENTER><IMG SRC="pourall.gif" ALT="<P>figure: pourall"></CENTER>
+
+<P>
+At each level of the tree, the number of nodes is multiplied by
+nine.  If we're trying to measure two liters of water, a six-step problem,
+the level of the tree at which the solution is found will have 531,441 nodes!
+You can see that efficiency will be an important consideration in this
+program.
+
+<P>
+In some projects, a tree is represented within the program by a Logo list.
+That's not going to be the case in this project.  The tree is not explicitly
+represented in the program at all, although the program will maintain a list
+of the particular nodes of the tree that are under consideration at a given
+moment.  The entire tree can't be represented as a list because it's
+infinitely deep!  In this project, the tree diagram is just something that
+should be in your mind as a model of what the program is doing: it's
+<EM>searching</EM> through the tree, looking for a node that includes the
+goal quantity as one of its numbers.
+
+<H2>Depth-first and Breadth-first Searching</H2>
+
+<P>
+Many programming problems can be represented as searches through trees.  For
+example, a chess-playing program has to search through a tree of moves.  The
+root of the tree is the initial board position; the second level of the tree
+contains the possible first moves by white; the third level contains the
+possible responses by black to each possible move by white; and so on.
+
+<P>
+There are two general techniques for searching a tree.  These techniques are
+called <EM>depth-first search</EM> and
+<EM>breadth-first search.</EM>  In the first technique, the program
+explores all of the &quot;descendents&quot; of a given node before looking at the
+&quot;siblings&quot; of that node.  In the chess example, a depth-first search would
+mean that the program would explore all the possible outcomes (continuing to
+the end of the game) of a particular opening move, then go on to do the same
+for another opening move.  In breadth-first search, the program examines all
+the nodes at a given level of the tree, then goes on to generate and examine
+the nodes at the next level.  Which technique is more appropriate will
+depend on the nature of the problem.
+
+<P>
+<A NAME="depth.first">In</A> a
+programming language like Logo, with recursive procedures and local
+variables, it turns out that depth-first search leads to a simpler program
+structure.  Suppose that we are given an operation called
+<CODE>children</CODE> that takes a node as input and gives us as its output
+a list of all the children (one level down) of that node.  Suppose we also
+are given a command called <CODE>process</CODE> that takes a node as input
+and does whatever the program needs to do for each node of the tree.  (You
+can just use <CODE>print</CODE> in place of <CODE>process</CODE> if you want
+to see what's in the tree.)  Here is how to do a depth-first search:
+
+<PRE>
+to depth.first :node
+process :node
+foreach (children :node) "depth.first
+end
+</PRE>
+
+<P>
+In this program, the structure of the tree is reflected in the
+structure of recursive invocations of <CODE>depth.first.</CODE>
+
+<P>
+It might be worthwhile to consider a specific example of how this program
+works.  One of the suggested activities in Chapter 11 was
+to write a program that takes a telephone number as
+input and prints out all possible spellings of that number as letters.
+(Each digit can represent any of three letters.  To keep things simple, I'm
+going to ignore the problem of the digits zero and one, which don't
+represent any letters on telephone dials in the United States.)  Here is a
+partial picture of the tree for a particular telephone number.  Each node
+contains some letters and some digits.  (In the program, a node will be
+represented as a Logo list with two members, a word of letters and a word of
+digits.)  The root node is all digits; the &quot;leaf&quot; nodes will be all
+letters.
+
+<P><CENTER><IMG SRC="phonetree2.jpg" ALT="<P>figure: phonetree"></CENTER>
+
+<P>
+The operation <CODE>children</CODE> must output a list of three nodes, selecting
+each of the three possible letters for the first remaining digit.  If the
+input to <CODE>children</CODE> is a leaf node (one with all letters), it must
+output the empty list to indicate that there are no children for that node.
+
+<PRE>
+to children :node
+if emptyp last :node [output []]
+output map [child (first :node) ? (butfirst last :node)] ~
+           letters first last :node
+end
+
+to letters :digit
+output item :digit [[] abc def ghi jkl mno prs tuv wxy]
+end
+
+to child :letters :this :digits
+output list (word :letters :this) :digits
+end
+
+?<U>show children [tnt 9827]</U>
+[[tntw 827] [tntx 827] [tnty 827]]
+</PRE>
+
+<P>
+The top-level procedure has to turn a number into a root node and
+invoke a depth-first search:
+
+<PRE>
+to spell :number
+depth.first list " :number
+end
+</PRE>
+
+<P>
+What about the <CODE>process</CODE> command?  The program wants to print only leaf
+nodes:
+
+<PRE>
+to process :node
+if emptyp last :node [print :node]
+end
+</PRE>
+
+<P>
+&raquo; Try this program.  To get the tree illustrated above,
+use the instruction
+
+<PRE>
+spell 8689827
+</PRE>
+
+<P>
+Then try again, but investigate the order in which the program
+searches the nodes of the tree by using a different version of <CODE>process</CODE>:
+
+<PRE>
+to process :node
+print :node
+end
+</PRE>
+
+<P>
+This will let you see the order in which the program encounters
+the nodes of the tree.
+
+<P>
+Writing a breadth-first search is a little more complicated because
+the program must explicitly arrange to process all the nodes of a given level
+before processing those at the next level.  It keeps track of the nodes
+waiting to be processed in a <EM>queue,</EM> a list in which new nodes
+are added at the right and the next node to be processed is taken from the
+left.  Here is the program:
+
+<PRE>
+to breadth.first :root
+breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [stop]
+process first :queue
+breadth.descend sentence (butfirst :queue) ~
+                         (children first :queue)
+end
+</PRE>
+
+<P>
+This breadth-first search program uses the same <CODE>children</CODE> and
+<CODE>process</CODE> subprocedures as the depth-first version.  You can try a
+breadth-first listing of telephone number spellings simply by changing the
+top-level <CODE>spell</CODE> procedure to invoke <CODE>breadth.first</CODE>
+instead of <CODE>depth.first</CODE>.  What you'll find is that (with the
+version of <CODE>process</CODE> that only prints leaf nodes) the two
+versions produce the same results, but the depth-first program trickles the
+spellings out one by one, while the breadth-first version prints nothing for
+a long time and then spits out all the spellings at once.  If you use the
+version of <CODE>process</CODE> that prints all the nodes, you can see why.
+
+<P>
+The telephone number speller is an unusual example of a tree-search program
+for two reasons.  First, the tree is finite; we know in advance that it
+extends seven levels below the root node, because a telephone number has
+seven digits.  Second, the goal of the program requires searching the
+<EM>entire</EM> tree.  It's more common that the program is looking for a
+solution that's &quot;good enough&quot; in some sense, and when a solution is found,
+the program stops looking.  For example, in the pitcher problem program,
+once we find a sequence of steps to measure the desired amount of water, we
+don't care if there is also a second way to do it.
+
+<P>
+For the pitcher problem solver, I decided that a breadth-first search is
+appropriate.  The main reason is that I wanted to present the
+<EM>shortest</EM> possible solution.  To do that, first I see if any one-step
+sequences solve the problem, then I see if any two-step sequences solve it,
+and so on.  This is a breadth-first order.
+
+<H2>Data Representation</H2>
+
+<P>
+At first, I thought that I would represent each node of the tree as a list
+of numbers representing the contents of the pitchers, as in the diagram I
+showed earlier.  I called this list of quantities a <EM>state.</EM>  This
+information is enough to be able to generate the children of a node.  Later,
+though, I realized that when I find a winning solution (one that has the
+goal quantity as one of the quantities in the state list) I want to be able
+to print not only the final quantities but also the sequence of pouring
+steps used to get there.  In a depth-first search, this information is
+implicitly contained in the local variables of the procedure invocations
+leading to the winning solution.  In a breadth-first search, however, the
+program doesn't keep track of the sequence of events leading to a given node.
+I had to remember this information explicitly.
+
+<P>
+The solution I chose was to have an extra member in the list representing a
+state, namely a list of <EM>pourings.</EM>  A pouring is a list of two numbers
+representing the source and the destination of the water being poured.  Zero
+represents the river; numbers greater than zero are pitcher numbers.  (A
+pitcher number is not the same as the size of the pitcher.  If you enter the
+instruction
+
+<PRE>
+pour [2 5 10] 1
+</PRE>
+
+<P>
+then the two-liter pitcher is pitcher number 1, the five-liter is
+number 2, and the ten-liter is number 3.)  The list of pourings is the first
+member of the expanded state list; pourings are added to that list at the
+front, with <CODE>fput</CODE>.  For example, in the interaction
+
+<PRE>
+?<U>pour [3 7] 4</U>
+Pour from river to 7
+Pour from 7 to 3
+Final quantities are 3 4
+</PRE>
+
+<P>
+the extended state information for the final solution state is
+
+<PRE>
+[[[2 1] [0 2]] 3 4]
+</PRE>
+
+<P>
+In this list, the sublist <CODE>[0 2]</CODE> represents pouring water
+from the river into pitcher number 2, which is the seven-liter pitcher.
+The sublist <CODE>[2 1]</CODE> represents pouring water from pitcher number 2 into
+pitcher number 1.
+
+<H2>Abstract Data Types</H2>
+
+<P>
+Up to this point I've continued to call this expanded data
+structure a <EM>state.</EM>  That's what I did in the program, also, until I
+found that certain procedures needed the new version, while other procedures
+dealt with what I had originally considered a state, with only the final
+quantities included in the list.  As a result, my program had local
+variables named <CODE>state</CODE> in several procedures, some of which contained
+the old kind of state, and some the new kind.  I thought this might be
+confusing, so I did what I should have done in the first place: I invented a
+new name for the expanded data structure.  It's now called a <EM>path</EM>;
+when you read the program you can confidently assume that <CODE>:state</CODE>
+represents a list like
+
+<PRE>
+[3 4]
+</PRE>
+
+<P>
+while <CODE>:path</CODE> represents a list like
+
+<PRE>
+[[[2 1] [0 2]] 3 4]
+</PRE>
+
+<P>
+The trouble with using a list of lists of lists in a program is that it can
+become very complicated to keep track of all the uses of selectors like
+<CODE>first</CODE> and constructors like <CODE>fput</CODE>.  For example,
+suppose the value of the variable <CODE>oldpath</CODE> is a path, and we
+decide to pour water from pitcher number <CODE>:from</CODE> to pitcher
+number <CODE>:to</CODE>.  We now want to construct a new path, which will
+include a new state (computed from the old state and the two pitcher
+numbers) and a new list of moves, with the new move added to the existing
+ones.  We'd end up saying
+
+<PRE>
+make "newpath fput (fput (list :from :to) first :oldpath) ~
+                   (newstate butfirst :oldpath :from :to)
+</PRE>
+
+<P>
+assuming that we have a procedure <CODE>newstate</CODE> that computes the
+new state.  This instruction is hard to read!  The two invocations of
+<CODE>fput</CODE> have quite different purposes.  One adds a new move to a
+list of moves, while the other connects a list of moves to a state in order
+to form a path.  We can clarify instructions like this one if we make up
+synonyms for procedures like <CODE>first</CODE> and <CODE>fput</CODE> to be
+used in particular contexts.  For example, we make a new path using
+<CODE>fput</CODE>, but we'll call it <CODE>make.path</CODE> when we're using
+it for that purpose.  Just as <CODE>fput</CODE> is a constructor, and
+<CODE>first</CODE> a selector, for lists, we can invent constructors and
+selectors for <EM>abstract</EM> data types (ones that we make up, rather
+than ones built into Logo) such as paths:
+
+<PRE>
+to make.path :moves :state
+output fput :moves :state
+end
+
+to path.moves :path
+output first :path
+end
+
+to path.state :path
+output butfirst :path
+end
+</PRE>
+
+<P>
+That unreadable instruction shown earlier would now be written this way:
+
+<PRE>
+make "newpath make.path (fput (list :from :to) path.moves :oldpath) ~
+                        (newstate (path.state :oldpath) :from :to)
+</PRE>
+
+<P>
+At first glance this may not seem like much of an improvement, since the new
+names are longer and less familiar than the old ones.  But we can now read
+the instruction and see that it calls a constructor <CODE>make.path</CODE>
+with two inputs, one that seems to have to do with moves, and the other that
+seems to have to do with states.  If we remember that a path has two parts,
+a list of moves and a state, this makes sense.
+
+<P>
+&raquo; Invent a constructor and selectors for a <EM>move</EM> data type.
+
+<H2><CODE>Sentence</CODE> as a Combiner</H2>
+
+<P>
+The general breadth-first search program I showed earlier contains this
+procedure:
+
+<PRE>
+to breadth.descend :queue
+if emptyp :queue [stop]
+process first :queue
+breadth.descend sentence (butfirst :queue) (children first :queue)
+end
+</PRE>
+
+<P>
+The most common use of <CODE>sentence</CODE> is in generating English
+sentences.  In that use, the input and output lists are <EM>sentences</EM> or
+flat lists.  You're supposed to think, &quot;<CODE>Sentence</CODE> takes two words or
+sentences as inputs; its output is a sentence containing all the words of
+the inputs.&quot; In this program, we're using <CODE>sentence</CODE> in a different
+way, more like what is called <CODE>append</CODE> in Lisp.  Here you're supposed to
+think, &quot;<CODE>Sentence</CODE> takes two lists as inputs; its output is a list
+containing the members of the inputs.&quot; Those members could be words or
+lists, but in this case they'll be lists, namely paths.
+
+<P>
+Recursive procedures that manipulate non-flat lists generally use
+<CODE>fput</CODE> as the combiner.  That wouldn't work here for two
+reasons.  First, the queue structure that we need to implement breadth-first
+search requires that we add new entries at the opposite end of the list from
+where we look for the next node to process.  If we use <CODE>first</CODE> to
+select a node and <CODE>fput</CODE> to add new candidate nodes, then instead
+of a queue we'd be using a <EM>stack,</EM> in which the newest entries are
+processed first instead of the oldest ones first.  That would give us a
+depth-first tree search algorithm.  We could solve that problem by using
+<CODE>lput</CODE> as the combiner, but the second reason for choosing
+<CODE>sentence</CODE> is that we don't generate new entries one at a time.
+Instead, <CODE>children</CODE> gives us several children to add to the queue
+at once.  That means we must append the list output by <CODE>children</CODE>
+to the list that represents the nodes already queued.
+
+<H2>Finding the Children of a Node</H2>
+
+<P>
+<CODE>Pour</CODE> is going to work essentially by invoking <CODE>breadth.first</CODE> on a
+root node containing zeros for all the current quantities.  But in this case
+we want to pick a single node that satisfies the conditions of the problem,
+so we must modify <CODE>breadth.first</CODE> to make it an <EM>operation</EM> that
+outputs the first such node:
+
+<PRE>
+to breadth.first :root
+output breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+if winnerp first :queue [output first :queue]
+output breadth.descend sentence (butfirst :queue) ~
+                                (children first :queue)
+end
+</PRE>
+
+<P>
+The predicate <CODE>winnerp</CODE> will output <CODE>true</CODE> if its input is
+a node that satisfies the problem conditions:
+
+<PRE>
+to winnerp :path
+output memberp :goal path.state :path
+end
+</PRE>
+
+<P>
+If <CODE>breadth.first</CODE> runs out of nodes without finding a
+solution, it returns an empty list to indicate failure.
+
+<P>
+Here is a
+simplified version of <CODE>pour</CODE>:
+
+<PRE>
+to pour :sizes :goal
+win breadth.first make.path [] all.empty :sizes
+end
+
+to all.empty :list
+output map [0] :list
+end
+</PRE>
+
+<P>
+<CODE>All.empty</CODE> is an operation that outputs a state in which all
+of the values are zeros.  The number of zeros in the list is equal to the
+number of members in its input, which is the number of pitchers.  <CODE>Pour</CODE>
+combines this initial state with an empty list of moves to produce the
+first path.
+
+<P> To allow <CODE>breadth.first</CODE> to work, we must have an operation
+called <CODE>children</CODE> that outputs a list of the children of a node.
+Starting from a particular state, what are the possible outcomes of a single
+pouring?  As I mentioned earlier, the source of a pouring can be the river
+or any of the pitchers, and the destination can also be the river or any of
+the pitchers.  If there are <I>n</I> pitchers, then there are <I>n</I>+1
+sources, <I>n</I>+1 destinations, and therefore (<I>n</I>+1)<SUP>2</SUP>
+possible pourings.  Here is how the program structure reflects this.  I'm
+assuming that we've created (elsewhere in the program) a variable called
+<CODE>pitchers</CODE> whose value is a list of all the integers from zero to
+<I>n</I>.
+
+<PRE>
+to children :path
+output map.se [children1 :path ?] :pitchers
+end
+
+to children1 :path :from
+output map.se [child :path :from ?] :pitchers
+end
+
+to child :path :from :to
+output (list make.path (fput (list :from :to) path.moves :path)
+                       (newstate (path.state :path) :from :to))
+end
+</PRE>
+
+<P>
+The version of <CODE>child</CODE> presented here is simpler than the one
+in the actual project, but the other procedures are the real versions.
+We'll see later how <CODE>child</CODE> is expanded.  The immediately important
+point is to see how <CODE>children</CODE> and <CODE>children1</CODE> ensure that every
+possible source (<CODE>:from</CODE>) and destination (<CODE>:to</CODE>) from zero to the
+number of pitchers are used.
+
+<P>
+You should be wondering, at this point, why <CODE>children1</CODE> uses
+<CODE>sentence</CODE> as a combiner.  (That's what it means to use
+<CODE>map.se</CODE> rather than <CODE>map</CODE>.)  It makes sense for
+<CODE>children</CODE> to combine using <CODE>sentence</CODE> because, as I
+discussed earlier, the things it's combining are lists of nodes, the outputs
+from invocations of <CODE>children1</CODE>.  But <CODE>children1</CODE> is
+not combining lists of nodes; it's combining the outputs from invocations of
+<CODE>child</CODE>.  Each invocation of <CODE>child</CODE> computes a single
+child node.  It would be more straightforward to write the program this way:
+
+<PRE>
+to children1 :path :from                        ;; simplified
+output map [child :path :from ?] :pitchers
+end
+
+to child :path :from :to                        ;; simplified
+output make.path (fput (list :from :to) path.moves :path) ~
+                 (newstate (path.state :path) :from :to)
+end
+</PRE>
+
+<P>
+This also eliminates the use of <CODE>list</CODE> in <CODE>child</CODE>, needed
+in the other version to turn a single node into a singleton (one-member)
+list of nodes, which is what <CODE>sentence</CODE> needs to function properly as a
+combiner.
+
+<P>
+The reason for the use of <CODE>sentence</CODE> in <CODE>children1</CODE> is that we are
+later going to modify <CODE>child</CODE> so that sometimes it rejects a possible
+new node for efficiency reasons.  For example, it makes no sense to have
+nodes for pourings in which the source and the destination are the same.
+When it wants to reject a node, <CODE>child</CODE> will output the empty list.
+Using <CODE>sentence</CODE> as the combiner, this empty list simply doesn't affect
+the accumulated list of new nodes.  Here is a version of <CODE>child</CODE>
+modified to exclude pourings to and from the same place:
+
+<PRE>
+to child :path :from :to
+<U>if equalp :from :to [output []]</U>
+output (list make.path (fput (list :from :to) path.moves :path)
+                       (newstate (path.state :path) :from :to))
+end
+</PRE>
+
+<P>
+With this version of <CODE>child</CODE>, the use of <CODE>sentence</CODE> in
+<CODE>children1</CODE> may seem more sensible to you.
+
+<P>
+To create the variable <CODE>pitchers</CODE> we modify the top-level <CODE>pour</CODE>:
+
+<PRE>
+to pour :sizes :goal
+<U>local "pitchers</U>
+<U>make "pitchers fput 0 (map [#] :sizes)</U>
+win breadth.first make.path [] all.empty :sizes
+end
+</PRE>
+
+<P>
+Here we are taking advantage of a feature of <CODE>map</CODE> that I haven't
+mentioned earlier.  The number sign (<CODE>#</CODE>) can be used in a
+<CODE>map</CODE> template to represent the position in the input, rather
+than the value, of a member of the input data list.  That is,
+<CODE>#</CODE> is replaced by 1 for the first member, 2 for the second, and
+so on.  In this example, these position numbers are all we care about; the
+template does not contain the usual question mark to refer to the values of
+the data.
+
+<H2>Computing a New State</H2>
+
+<P>
+The job of <CODE>child</CODE> is to produce a new child node, that is to say, a new
+path.  Its inputs are an old path and the source and destination of a new
+pouring.  The new path consists of a new state and a new list of pourings.
+The latter is easy; it's just the old list of pourings with the new one
+inserted.  <CODE>Child</CODE> computes that part itself, with the expression
+
+<PRE>
+fput (list :from :to) path.moves :path
+</PRE>
+
+<P>
+The new state is harder to compute.  There are four cases.  
+
+<OL>
+<LI> If the destination is the river, then the thing to do is to empty the
+source pitcher.
+<LI> If the source is the river, then the thing to do is
+to fill the destination pitcher to its capacity.
+<LI> If source and
+destination are pitchers and the destination pitcher has enough empty space
+to hold the contents of the source pitcher, then the thing to do is to add
+the entire contents of the source pitcher to the destination pitcher,
+setting the contents of the source pitcher to zero.
+<LI> If both are pitchers but there is not enough room in the
+destination to hold the contents of the source, then the thing to do is fill
+the destination to its capacity and subtract that much water from the source.
+</OL>
+
+<P>
+Here is the procedure to carry out these computations:
+
+<PRE>
+to newstate :state :from :to
+if riverp :to [output replace :state :from 0]
+if riverp :from [output replace :state :to (size :to)]
+if (water :from) < (room :to) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((water :from)+(water :to))]
+output replace2 :state ~
+                :from ((water :from)-(room :to)) ~
+                :to (size :to)
+end
+</PRE>
+
+<P>
+Each instruction of this procedure straightforwardly embodies one
+of the four numbered possibilities.
+
+<P>
+Helper procedures are used to compute a new list of amounts of
+water, replacing either one or two old values from the previous list:
+
+<PRE>
+to replace :list :index :value
+if equalp :index 1 [output fput :value butfirst :list]
+output fput first :list (replace butfirst :list :index-1 :value)
+end
+
+to replace2 :list :index1 :value1 :index2 :value2
+if equalp :index1 1 ~
+   [output fput :value1 replace butfirst :list :index2-1 :value2]
+if equalp :index2 1 ~
+   [output fput :value2 replace butfirst :list :index1-1 :value1]
+output fput first :list ~
+            replace2 butfirst :list :index1-1 :value1 :index2-1 :value2
+end
+</PRE>
+
+<P>
+<CODE>Replace</CODE> takes as inputs a list, a number
+representing a position in the list, and a value.  The output is a copy of
+the first input, but with the member selected by the second input replaced
+with the third input.  Here's an example:
+
+<PRE>
+?<U>show replace [a b c d e] 4 "x</U>
+[a b c x e]
+</PRE>
+
+<P>
+<CODE>Replace2</CODE> has a similar purpose, but its output has
+<EM>two</EM> members changed from their values in the input list.
+
+<P>
+Remember that <CODE>newstate</CODE> has as one of its inputs a state, that
+is, a list of numbers representing quantities of water.
+<CODE>Newstate</CODE> uses <CODE>replace</CODE> to change the amount of
+water in one of the pitchers.  The second input to <CODE>replace</CODE> is
+the pitcher number, and the third is the new contents of that pitcher.  For
+example, if the destination is the river then we want to empty the source
+pitcher.  This case is handled by the instruction
+
+<PRE>
+if riverp :to [output replace :state :from 0]
+</PRE>
+
+<P>
+If the destination is the river,
+the output state is the same as the input state except that the pitcher
+whose number is <CODE>:from</CODE> has its contents replaced by zero.  The other
+cases are handled similarly, except that two replacements are necessary if
+both source and destination are pitchers.
+
+<H2>More Data Abstraction</H2>
+
+<P>
+The instructions in <CODE>newstate</CODE> use some procedures I haven't written
+yet, such as <CODE>riverp</CODE> to test whether a source or destination is the
+river, and <CODE>room</CODE> to find the amount of empty space in a pitcher.
+If we think of a pitcher as an abstract data type, then these can be
+considered selectors for that type.  Here they are:
+
+<PRE>
+to riverp :pitcher
+output equalp :pitcher 0
+end
+
+to size :pitcher
+output item :pitcher :sizes
+end
+
+to water :pitcher
+output item :pitcher :state
+end
+
+to room :pitcher
+output (size :pitcher)-(water :pitcher)
+end
+</PRE>
+
+<P>
+To underscore the importance of data abstraction, here is what <CODE>newstate</CODE>
+would look like without these selectors.  (I actually wrote it this way at
+first, but I think you'll agree that it's unreadable.)
+
+<PRE>
+to newstate :state :from :to
+if equalp :to 0 [output replace :state :from 0]
+if equalp :from 0 [output replace :state :to (item :to :sizes)]
+if ((item :from :state) < ((item :to :sizes)-(item :to :state))) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((item :from :state)+(item :to :state))]
+output replace2 :state ~
+                :from ((item :from :state)-
+                       ((item :to :sizes)-(item :to :state))) ~
+                :to (item :to :sizes)
+end
+</PRE>
+
+<H2>Printing the Results</H2>
+
+<P>
+When <CODE>breadth.first</CODE> finds a winning path, the top-level procedure
+<CODE>pour</CODE> invokes <CODE>win</CODE> with that path as its input.
+<CODE>Win</CODE>'s job is to print the results.  Since the list of moves is
+kept in reverse order, <CODE>win</CODE> uses the Logo primitive operation
+<CODE>reverse</CODE> to ensure that the moves are shown in chronological
+order.
+
+<PRE>
+to win :path
+if emptyp :path [print [Can't do it!] stop]
+foreach (reverse path.moves :path) "win1
+print sentence [Final quantities are] (path.state :path)
+end
+
+to win1 :move
+print (sentence [Pour from] (printform first :move)
+                [to] (printform last :move))
+end
+
+to printform :pitcher
+if riverp :pitcher [output "river]
+output size :pitcher
+end
+</PRE>
+
+<H2>Efficiency: What Really Matters?</H2>
+
+<P>
+The <CODE>pour</CODE> program as described so far would run extremely slowly.  The
+rest of the commentary in this chapter will be on ways to improve its
+efficiency.  The fundamental problem is one I mentioned earlier: the
+number of nodes in the tree grows enormously as the depth increases.  In a
+problem with two pitchers, the root level has one node, the next level nine
+nodes, the third level 81, the fourth level 729, the fifth level 6561, and
+the sixth level 59049.  A six-step problem like
+
+<PRE>
+pour [3 7] 2
+</PRE>
+
+<P>
+would strain the memory capacity of many computers as well as
+taking forever to run!
+
+<P>
+When you're trying to make a program more efficient, the easiest
+improvements to figure out are not usually the ones that really help.  The
+easy things to see are details about the computation within some procedure.
+For example, the <CODE>newstate</CODE> procedure described earlier calls the
+<CODE>room</CODE> procedure twice to compute the amount of room available in
+the destination pitcher.  Each call to <CODE>room</CODE> computes the
+quantity
+
+<PRE>
+(item :to :sizes)-(item :to :state)
+</PRE>
+
+<P>
+This expression represents the amount of empty space in the destination
+pitcher.  Perhaps it would be faster to compute this number only once, and
+store it in a variable?  I haven't bothered trying to decide, because the
+effect is likely to be small either way.  Improving the speed of computing
+each new node is much less important than cutting down the <EM>number</EM>
+of nodes we compute.  The reason is that eliminating one node also
+eliminates all its descendants, so that the effect grows as the program
+moves to lower levels of the tree.
+
+<P>
+The best efficiency improvement is likely to be a complete rethinking of the
+algorithm.  For example, I've mentioned that a numerical algorithm
+exists for solving two-variable linear Diophantine equations.  This
+algorithm would be a <EM>much</EM> faster way to solve two-pitcher problems
+than even the best tree search program.  I haven't used that method because
+I wanted a simple program that would work for any number of pitchers, but if
+I really had to solve such problems in practice, I'd use the Diophantine
+equation method wherever possible.
+
+<H2>Avoiding Meaningless Pourings</H2>
+
+<P>
+We have already modified <CODE>child</CODE> to avoid one kind of meaningless
+pouring, namely ones in which the source is the same as the destination.
+Two other avoidable kinds of meaningless pourings are ones from an empty
+source and ones to a full destination.  In either case, the quantity of
+water poured will be zero, so the state will not change.  Here is a modified
+version of <CODE>child</CODE> that avoids these cases:
+
+<PRE>
+to child :path :from :to
+<U>local "state</U>
+if equalp :from :to [output []]
+<U>make "state path.state :path</U>
+<U>if not riverp :from ~</U>
+   <U>[if equalp (water :from) 0 [output []]]</U>
+<U>if not riverp :to ~</U>
+   <U>[if equalp (water :to) (size :to) [output []]]</U>
+output (list make.path (fput list :from :to path.moves :path)
+                       (newstate :state :from :to))
+end
+</PRE>
+
+<P>
+The local variable <CODE>state</CODE> is set up because the procedure
+<CODE>water</CODE> needs it.  (<CODE>Water</CODE> relies on Logo's dynamic scope to give
+it access to the <CODE>state</CODE> variable provided by its caller.)
+
+<P>
+The important changes are the two new <CODE>if</CODE> instructions.  The first
+avoids pouring from an empty pitcher; the second avoids pouring into a full
+one.  In both cases, the test makes sense only for actual pitchers; the
+river does not have a size or a current contents.
+
+<P>
+To underscore what I said earlier about what's important in trying to
+improve the efficiency of a program, notice that these added tests
+<EM>slow down</EM> the process of computing each new node, and yet the overall
+effect is beneficial because the number of nodes is dramatically reduced.
+
+<H2>Eliminating Duplicate States</H2>
+
+<P>
+It's relatively easy to find individual pourings that are absurd.  A harder
+problem is to avoid <EM>sequences</EM> of pourings, each reasonable in
+itself, that add up to a state we've already seen.  The most blatant
+examples are like the one I mentioned a while back about filling a pitcher
+from the river and then immediately emptying it into the river again.  But
+there are less blatant cases that are also worth finding.  For example,
+suppose the problem includes a three-liter pitcher and a six-liter pitcher.
+The sequence
+
+<PRE>
+Pour from river to 6
+Pour from 6 to 3
+</PRE>
+
+<P>
+leads to the same state (<CODE>[3 3]</CODE>) as the sequence
+
+<PRE>
+Pour from river to 3
+Pour from 3 to 6
+Pour from river to 3
+</PRE>
+
+<P>
+The latter isn't an absurd sequence of pourings, but it's silly to
+pursue any of its children because they will have the same states as the
+children of the first sequence, which is one step shorter.  Any solution
+that could be found among the descendents of the second sequence will be
+found one cycle earlier among the descendents of the first.
+
+<P>
+To avoid pursuing these duplicate states, the program keeps a list of all
+the states found so far.  This strategy requires changes to <CODE>pour</CODE> and
+to <CODE>child</CODE>.
+
+<PRE>
+to pour :sizes :goal
+<U>local [oldstates pitchers]</U>
+<U>make "oldstates (list all.empty :sizes)</U>
+make "pitchers fput 0 (map [#] :sizes)
+win breadth.first make.path [] all.empty :sizes
+end
+
+to child :path :from :to
+<U>local [state newstate]</U>
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+<U>make "newstate (newstate :state :from :to)</U>
+<U>if memberp :newstate :oldstates [output []]</U>
+<U>make "oldstates fput :newstate :oldstates</U>
+output (list make.path (fput list :from :to path.moves :path) <U>:newstate</U>)
+end
+</PRE>
+
+<P>
+The change in <CODE>pour</CODE> is simply to initialize the list of
+already-seen states to include the state in which all pitchers are empty.
+There are two important new instructions in <CODE>child</CODE>.  The first
+rejects a new node if its state is already in the list; the second adds a
+new state to the list.  Notice that it is duplicate <EM>states</EM> we look
+for, not duplicate <EM>paths</EM>; it's in the nature of a tree-search
+program that there can never be duplicate paths.
+
+<H2>Stopping the Program Early</H2>
+
+<P>
+The breadth-first search mechanism we're using detects a winning path as
+it's <EM>removed</EM> from the front of the queue.  If we could detect the
+winner as we're about to <EM>add</EM> it to the queue, we could avoid the
+need to compute all of the queue entries that come after it: children of
+nodes that are at the same level as the winning node, but to its left.
+
+<P>
+It's not easy to do this elegantly, though, because we add new nodes to the
+queue several at a time, using the procedure <CODE>children</CODE> to compute them.
+What we need is a way to let <CODE>child</CODE>, which constructs the winning node,
+prevent the computation of any more children, and notify <CODE>breadth.first</CODE>
+that a winner has been found.
+
+<P>
+The most elegant way to do this in Berkeley Logo uses a primitive called
+<CODE>throw</CODE> that we won't meet until the second volume of this series.
+Instead, in this chapter I'll use a less elegant technique, but one that
+works in any Logo implementation.  I'll create a variable named <CODE>won</CODE>
+whose value is initially <CODE>false</CODE> but becomes <CODE>true</CODE> as soon as a
+winner is found.  Here are the necessary modifications:
+
+<PRE>
+to pour :sizes :goal
+local [oldstates pitchers <U>won</U>]
+make "oldstates (list all.empty :sizes)
+make "pitchers fput 0 (map [#] :sizes)
+<U>make "won "false</U>
+win breadth.first make.path [] all.empty :sizes
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+<U>if :won [output last :queue]</U>
+op breadth.descend sentence (butfirst :queue) ~
+                            (children first :queue)
+end
+
+to child :path :from :to
+local [state newstate]
+<U>if :won [output []]</U>
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+make "newstate (newstate :state :from :to)
+if memberp :newstate :oldstates [output []]
+make "oldstates fput :newstate :oldstates
+<U>if memberp :goal :newstate [make "won "true]</U>
+output (list make.path (fput list :from :to path.moves :path) :newstate)
+end
+</PRE>
+
+<P>
+The procedure <CODE>winnerp</CODE> is no longer used; we are now checking
+a state, rather than a path, for the goal amount.
+
+<H2>Further Explorations</H2>
+
+<P>
+&raquo; Is it possible to eliminate more pieces of the tree by more sophisticated
+analysis of the problem?  For example, in all of the specific problems I've
+presented, the best solution never includes pouring from pitcher A to
+pitcher B and then later pouring from B to A.  Is this true in general?  If
+so, many possible pourings could be rejected with an instruction like
+
+<PRE>
+if memberp list :to :from path.moves :path [output []]
+</PRE>
+
+<P>
+in <CODE>child</CODE>.
+
+<P>
+&raquo; Do some research into Diophantine equations and the techniques used to solve
+them computationally.  See if you can devise a general method for solving
+pitcher problems with any number of pitchers, based on Diophantine equations.
+
+<P>
+&raquo; Think about writing a program that would mimic the way people actually
+approach these problems.  The program would, for example, compute the
+differences and remainders of pairs of pitcher sizes, looking for the goal
+quantity.
+
+<P>
+&raquo; What other types of puzzles can be considered as tree searching problems?
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch13/v1ch13.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<PRE>
+;; Initialization
+
+to pour :sizes :goal
+local [oldstates pitchers won]
+make "oldstates (list all.empty :sizes)
+make "pitchers fput 0 (map [#] :sizes)
+make "won "false
+win breadth.first make.path [] all.empty :sizes
+end
+
+to all.empty :list
+output map [0] :list
+end
+
+;; Tree search
+
+to breadth.first :root
+op breadth.descend (list :root)
+end
+
+to breadth.descend :queue
+if emptyp :queue [output []]
+if :won [output last :queue]
+op breadth.descend sentence (butfirst :queue) ~
+                            (children first :queue)
+end
+
+;; Generate children
+
+to children :path
+output map.se [children1 :path ?] :pitchers
+end
+
+to children1 :path :from
+output map.se [child :path :from ?] :pitchers
+end
+
+to child :path :from :to
+local [state newstate]
+if :won [output []]
+if equalp :from :to [output []]
+make "state path.state :path
+if not riverp :from ~
+   [if equalp (water :from) 0 [output []]]
+if not riverp :to ~
+   [if equalp (water :to) (size :to) [output []]]
+make "newstate (newstate :state :from :to)
+if memberp :newstate :oldstates [output []]
+make "oldstates fput :newstate :oldstates
+if memberp :goal :newstate [make "won "true]
+output (list make.path (fput list :from :to path.moves :path) :newstate)
+end
+
+to newstate :state :from :to
+if riverp :to [output replace :state :from 0]
+if riverp :from [output replace :state :to (size :to)]
+if (water :from) < (room :to) ~
+   [output replace2 :state ~
+                    :from 0 ~
+                    :to ((water :from)+(water :to))]
+output replace2 :state ~
+                :from ((water :from)-(room :to)) ~
+                :to (size :to)
+end
+
+;; Printing the result
+
+to win :path
+if emptyp :path [print [Can't do it!] stop]
+foreach (reverse path.moves :path) "win1
+print sentence [Final quantities are] (path.state :path)
+end
+
+to win1 :move
+print (sentence [Pour from] (printform first :move)
+                [to] (printform last :move))
+end
+
+to printform :pitcher
+if riverp :pitcher [output "river]
+output size :pitcher
+end
+
+;; Path data abstraction
+
+to make.path :moves :state
+output fput :moves :state
+end
+
+to path.moves :path
+output first :path
+end
+
+to path.state :path
+output butfirst :path
+end
+
+;; Pitcher data abstraction
+
+to riverp :pitcher
+output equalp :pitcher 0
+end
+
+to size :pitcher
+output item :pitcher :sizes
+end
+
+to water :pitcher
+output item :pitcher :state
+end
+
+to room :pitcher
+output (size :pitcher)-(water :pitcher)
+end
+
+;; List processing utilities
+
+to replace :list :index :value
+if equalp :index 1 [output fput :value butfirst :list]
+output fput first :list (replace butfirst :list :index-1 :value)
+end
+
+to replace2 :list :index1 :value1 :index2 :value2
+if equalp :index1 1 ~
+   [output fput :value1 replace butfirst :list :index2-1 :value2]
+if equalp :index2 1 ~
+   [output fput :value2 replace butfirst :list :index1-1 :value1]
+output fput first :list ~
+            replace2 butfirst :list :index1-1 :value1 :index2-1 :value2
+end
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch13/v1ch13.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch15/debug.html b/js/games/nluqo.github.io/~bh/v1ch15/debug.html
new file mode 100644
index 0000000..f5f31c0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch15/debug.html
@@ -0,0 +1,713 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 15: Debugging</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Debugging</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch15.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch14/v1ch14.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch16/versions.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>
+I haven't talked much, until now, about how to find and fix mistakes
+in the programs you write.  Except for the chapter-length examples
+in Chapters 6, 12, and 14, it hasn't been much of a
+problem because the sample programs I've shown you have been so
+small.  That doesn't mean you can't make a mistake in a small program!
+But mistakes are relatively easy to find when the entire program is
+one procedure with just a few instruction lines.  In a real
+programming project, which might have 20 or 200 procedures, it's harder
+to locate an error.
+
+<P><H2>Using Error Messages</H2>
+
+<P>At one point in Chapter 13 I saw the error message
+
+<P><PRE>I don't know how  to one  in pokerhand
+</PRE>
+
+<P>Logo's error messages were deliberately designed to use an
+informal, smooth, low-key style so that beginning programmers won't
+find them intimidating.  But there is a lot of information in that
+message if you learn how to find it.  The message tells me three
+things.  First, it tells me what <EM>kind</EM> of error is involved.
+In this particular message,
+the phrase &quot;I don't know how&quot; suggests that a procedure is missing,
+and the words &quot;to one&quot; subtly suggest how the problem could be fixed.
+Second, the message tells me the <EM>specific</EM> expression that was
+in error: the word <CODE>one</CODE>.  Third, it tells me that the error was
+detected while Logo was carrying out the procedure named <CODE>
+pokerhand</CODE>.
+
+<P>The precise form of the message may be different in different situations.
+If you make a mistake in a top-level instruction (that is, one that you type
+to a question mark prompt, not inside a procedure), the part about <CODE>in
+pokerhand</CODE> won't be included.
+
+<P>One very important thing to remember is that the place where an error
+is <EM>found</EM> may not be the place where the error really <EM>
+is.</EM>  That's a little vague, so let's think about the <CODE>I don't know
+how</CODE> error.  All the Logo interpreter knows is that it has been
+asked to invoke a procedure that doesn't exist.  But there can be
+several possible reasons for that.  The most common reason is that
+you've just misspelled the name of a procedure.  When the message is
+
+<P><PRE>I don't know how  to forwrad  in poly
+</PRE>
+
+<P>you can be pretty sure, just from reading the message, that
+the problem is a misspelling of <CODE>forward</CODE>.  In this case the
+mistake is in <CODE>poly</CODE>, just as the message tells you.
+
+<P>On the other hand you might get a message like this about a procedure
+that really should exist.  For example, I might have seen
+
+<P><PRE>I don't know how  to straight  in pokerhand
+</PRE>
+
+<P>If I had been confronted with that message, I might have
+looked at <CODE>pokerhand</CODE>, and indeed I would have found an
+instruction that invokes a procedure named <CODE>straight</CODE>.  But
+that's not an error; there <EM>should</EM> be such a procedure.  One of
+two things would be wrong: either I'd forgotten to define <CODE>
+straight</CODE> altogether or else I made a spelling mistake in the title
+line of <CODE>straight</CODE> rather than in an instruction line of <CODE>
+pokerhand</CODE>.  To find out, I would type the command <CODE>pots</CODE> (which,
+as you recall, stands for Print Out TitleS) and look for a possible
+misspelling of <CODE>straight</CODE>.
+
+<P>Another way to get the same error message is to write a program using one
+version of Logo and then transfer it to another version with somewhat
+different primitives.  For example, Berkeley Logo includes higher order
+functions such as <CODE>map</CODE> that are not primitive in most other Logo
+dialects.  If you write a program that uses <CODE>map</CODE> and then try to run it
+in another version of Logo, you'll get a message saying <CODE>I don't know
+how to map</CODE>.  In that case you'd have to write your own version of <CODE>
+map</CODE> or rewrite the program to avoid using it--for example, by using a
+recursive operation instead.
+
+<P>The mistake I actually made in Chapter 13 wasn't a misspelling, a
+missing definition, or a nonexistent primitive.  Instead, I failed to
+quote a list with square brackets.  The particular context in which I
+did it, in an input to <CODE>ifelse</CODE>, is a fairly obscure one.  But
+here is a common beginner's mistake, especially for people who are
+accustomed to other programming languages:
+
+<P><PRE>? <U>print &quot;How are you?&quot;</U>
+How
+i don't know how  to are
+</PRE>
+
+<P>The moral of all this is that the error message <EM>does</EM> give you
+some valuable help in finding your bug, but it <EM>doesn't</EM> tell
+you the whole story.  You have to read the message intelligently.
+
+<P><H2>Invalid Data</H2>
+
+<P>I've spent a lot of time on the <CODE>I don't know how</CODE> message because
+it's probably the most common one.  Another very common kind of
+message, which will merit some analysis here, is
+
+<P><PRE><U>procedure</U> doesn't like <U>datum</U> as input
+</PRE>
+
+<P>In general, this means that you've violated the rules about
+the kinds of data that some primitive procedure requires as
+input.  (Recall that the type of input is one of the things I've been
+insisting that you mention as part of the description of a procedure.)
+For example, <CODE>word</CODE> requires words as inputs, so:
+
+<P><PRE>? <U>print word &quot;hello, [old buddy]</U>
+word doesn't like [old buddy] as input
+</PRE>
+
+<P>There are several special cases, however, that come up more often
+than something as foolish as using a list as an input to <CODE>word</CODE>.
+The most common message of this form is this one:
+
+<P><PRE>butfirst doesn't like [] as input
+</PRE>
+
+<P>This almost invariably means that you've left out the
+stop rule in a recursive
+procedure.  The offending input to <CODE>butfirst</CODE> isn't
+an explicit empty list but instead is the result of evaluating
+a variable, usually an input to the
+procedure you're writing, that's <CODE>butfirst</CODE>ed in the recursive
+invocation.  This is a case where the error isn't really in the
+instruction that caused the message.  Usually there is nothing wrong
+with the actual invocation of <CODE>butfirst</CODE>; the error is a missing
+instruction earlier in the procedure.  If the input is a
+word instead of a list, this message will take the possibly confusing
+form
+
+<P><PRE>butfirst doesn't like  as input
+</PRE>
+
+<P>That's an invisible empty word between <CODE>like</CODE> and <CODE>
+as</CODE>!
+
+<P>I said that this message is almost always caused by a missing stop
+rule.  You have to be careful about the &quot;almost.&quot; For example,
+recall this practical joke procedure from Chapter 1:
+
+<P><PRE>to process :instruction
+test emptyp :instruction
+iftrue [type &quot;|? | process readlist stop]
+iffalse [print sentence [|I don't know how  to|] first :instruction]
+end
+</PRE>
+
+<P>This is not a recursive procedure, and the question of stop
+rules doesn't arise.  But its input might be empty, because the victim
+enters a blank line.  If I hadn't thought of that, and had written
+
+<P><PRE>to process :instruction
+print sentence [|I don't know how  to|] first :instruction
+end
+</PRE>
+
+<P>the result would be
+
+<P><PRE>first doesn't like [] as input  in process
+</PRE>
+
+<P>Another case that sometimes comes up in programs that do arithmetic is
+
+<P><PRE>/ doesn't like 0 as input
+</PRE>
+
+<P>For example, if you write a program that takes the average
+of a bunch of numbers and you try to use the program with an empty
+list of numbers as input, you'll end up trying to divide zero by
+zero.  The solution is to insert an instruction that explicitly tests
+for that possibility.
+
+<P>As always, the procedure that provokes the error message may not
+actually be the procedure that is in error.  Consider this short
+program:
+
+<P><PRE>to second :thing
+output first butfirst :thing
+end
+
+to swap :list
+output list (second :list) (first :list)
+end
+
+? <U>print swap [watch pocket]</U>
+pocket watch
+? <U>print swap [farewell]</U>
+first doesn't like [] as input  in second
+[output first butfirst :thing]
+</PRE>
+
+<P>Although the error was caught during the invocation of <CODE>
+second</CODE>, there is nothing wrong with <CODE>second</CODE> itself.  The error
+was in the top-level instruction, which provided a bad input to <CODE>
+swap</CODE>.  That instruction doesn't even include an explicit reference to
+<CODE>second</CODE>.  In this small example it's easy to see what happened.  But
+in a more complicated program it can be hard to find errors like this
+one.
+
+<P>There are two ways you can protect yourself against this kind of
+difficulty.  The first is <EM>defensive programming.</EM>  I could have
+written the program this way:
+
+<P><PRE>to swap :list
+if emptyp :list [pr [empty input to swap] stop]
+if emptyp butfirst :list [pr [singleton input to swap] stop]
+output list (second :list) (first :list)
+end
+</PRE>
+
+<P>This version checks for bad inputs and gives a more helpful
+error message.*Actually, when you invoke this version of
+<CODE>swap</CODE> with a bad input, you'll see <EM>two</EM> error messages.
+The procedure itself will print an error message.  Then, since it <CODE>
+stop</CODE>s instead of <CODE>output</CODE>ting something to its superprocedure,
+you'll get a <CODE>didn't output</CODE> error message from the Logo
+interpreter.  It would also be possible to figure out an appropriate
+output for these cases and not consider them errors at all:
+
+<P><PRE>to swap :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+output list (second :list) (first :list)
+end
+</PRE>
+
+<P>This version manages to produce an output for any input at
+all.  How should you choose between these two defensively written
+versions?  It depends on the context in which you'll be using <CODE>
+swap</CODE>.  If you are writing a program in which <CODE>swap</CODE> should always
+get a particular kind of list as input, which should always have two
+members, then you should use the first defensive version, which will
+let you know if you make an error in the input to <CODE>swap</CODE>.  But if
+<CODE>swap</CODE> is intended as a general tool, which might be used in a
+variety of situations, it might be better to accept any input.
+
+<P>The second protective technique, besides defensive programming, is
+tracing, the technique we used in Chapter 9.  If you get an
+error message from a utility procedure like <CODE>second</CODE> and you have no
+idea how it was invoked, you can find out by tracing the entry into all of
+your procedures.
+
+<P>Another way to get the <CODE>doesn't like</CODE> message is to forget the
+order of inputs to a procedure, either a primitive or one that you've
+written.  For example, <CODE>lput</CODE> is a primitive operation that
+requires two inputs.  The first input can be any datum, but the
+second must be a list.  The output from <CODE>lput</CODE> is a list that
+contains all the members of the second input, plus one more member at
+the end equal to the first input.
+
+<P><PRE>? <U>show lput &quot;c [a b]</U>
+[a b c]
+</PRE>
+
+<P><CODE>Lput</CODE> takes its inputs in the same order as <CODE>fput</CODE>,
+with the new member first and then the old list.  But you might get
+confused and want the inputs to appear left-to-right as they appear in
+the result:
+
+<P><PRE>? <U>show lput [a b] &quot;c</U>
+lput doesn't like c as input
+</PRE>
+
+<P><H2>Incorrect Results</H2>
+
+<P>Beginning programmers are often dismayed when they see an error
+message, but more experienced programmers are relieved.  They know
+that the bugs that cause such messages are the easy ones to find!  Much
+harder are the bugs that allow a program to run to completion but
+produce the wrong answer.  In that kind of situation you don't have
+the advantage of knowing which procedure tickled the error message, so
+it's hard to know where to begin looking.
+
+<P>Here's a short program with a couple of bugs in it.  <CODE>Arabic</CODE> is an
+operation that takes one input, a word that is a Roman numeral.
+The output from <CODE>arabic</CODE> is the number represented by that Roman numeral
+in ordinary (Arabic numeral) notation.
+
+<P><PRE>to arabic :num
+output addup map &quot;digit :num
+end
+
+to digit :digit
+output lookup :digit [[I 1] [V 5] [X 10] [L 50] [C 100] [D 500] [M 1000]]
+end
+
+to lookup :word :dictionary
+if emptyp :dictionary [output &quot;]
+if equalp :word first first :dictionary [output last first :dictionary]
+output lookup :word bf :dictionary
+end
+
+to addup :list
+if emptyp :list [output 0]
+if emptyp bf :list [output first :list]
+if (first :list) &lt; (first bf :list) ~
+   [output sum ((first bl :list)-(first :list)) addup bf bf :list]
+output sum first :list addup bf :list
+end
+</PRE>
+
+<P><CODE>Arabic</CODE> uses two non-primitive subprocedures, dividing its
+task into two parts.  First <CODE>digit</CODE> translates each letter of the Roman
+numeral into the number it represents: <CODE>C</CODE> into 100, <CODE>M</CODE> into 1000.
+The result is a list of numbers.  Then <CODE>addup</CODE> translates that list into
+a single number, adding or subtracting each member as appropriate.  The rule
+is that the numbers are added, except that a smaller number that appears to
+the left of a larger one is subtracted from the total.  For example, in the
+Roman numeral <CODE>CLIV</CODE> all the letters are added except for the <CODE>I</CODE>,
+which is to the left of the <CODE>V</CODE>.  Since <CODE>I</CODE> represents 1 and
+<CODE>V</CODE> represents 5, and 1 is less than 5, the <CODE>I</CODE> is subtracted.  The
+result is 100+50+5-1 or 154.
+
+<P>Here's what happened the first time I tried <CODE>arabic</CODE>:
+
+<P><PRE>? <U>print arabic &quot;MLXVI</U>
+13
+</PRE>
+
+<P>This is a short enough program that you may be able to find the bug
+just by reading it.  But even if you do, let's pretend that you don't,
+because I want to use this example to talk about some ways of looking
+for bugs systematically.
+
+<P>The overall structure of the program is that <CODE>digit</CODE> is invoked for each
+letter, and the combined output from all the calls to <CODE>digit</CODE> is used as
+the input to <CODE>addup</CODE>.  The first step is to try to figure out which of
+the two is at fault.  Which should we try first?  Since <CODE>addup</CODE> depends
+on the work of <CODE>digit</CODE>, whereas <CODE>digit</CODE> doesn't depend on <CODE>
+addup</CODE>, it's probably best to start with <CODE>digit</CODE>.  So let's try looking
+at the output from <CODE>digit</CODE> directly.
+
+<P><PRE>? <U>print digit &quot;M</U>
+1000
+? <U>print digit &quot;V</U>
+5
+</PRE>
+
+<P>So far so good.  Perhaps the problem is in the way <CODE>map</CODE> is
+used to combine the results from <CODE>digit</CODE>:
+
+<P><PRE>? <U>show map &quot;digit &quot;MLXVI</U>
+1000501051
+</PRE>
+
+<P>Aha!  I wanted a list of numbers, one for each Roman digit,
+but instead I got all the numbers combined into one long word.  I had
+momentarily forgotten that if the second input to <CODE>map</CODE> is a word,
+its output will be a word also.  As soon as I see this, the solution
+is apparent to me:  I should use <CODE>map.se</CODE> instead of <CODE>map</CODE>.
+
+<P><PRE>? <U>show map.se &quot;digit &quot;MLXVI</U>
+[1000 50 10 5 1]
+
+to arabic :num
+output addup map.se &quot;digit :num
+end
+
+? <U>print arabic &quot;MLXVI</U>
+1066
+</PRE>
+
+<P>This time I got the answer I expected.  On to more
+test cases:
+
+<P><PRE>? <U>print arabic &quot;III</U>
+3
+? <U>print arabic &quot;XVII</U>
+17
+? <U>print arabic &quot;CLV</U>
+155
+? <U>print arabic &quot;CLIV</U>
+150
+?
+</PRE>
+
+<P>Another error!  The result was 150 instead of the correct 154.
+Since the other three examples are correct, the program is not
+completely at sea; it's a good guess that the bug has to do with the
+case of subtracting instead of adding.  Trying a few more examples
+will help confirm that guess.
+
+<P><PRE>? <U>print arabic &quot;IV</U>
+0
+? <U>print arabic &quot;MCM</U>
+1000
+? <U>print arabic &quot;MCMLXXXIV</U>
+1080
+? <U>print arabic &quot;MDCCLXXVI</U>
+1776
+?
+</PRE>
+
+<P>Indeed, numbers that involve subtraction seem to fail,
+while ones that are purely additive seem to work.  If you look
+carefully at exactly <EM>how</EM> the program fails, you may notice
+that the letter that should be subtracted and the one after it are
+just ignored.  So in the numeral <CODE>MCMLXXXIV</CODE>, which represents 1984, the
+<CODE>CM</CODE> and the <CODE>IV</CODE> don't contribute to the program's result.
+
+<P>Once again, we must find out whether the bug is in <CODE>digit</CODE> or in <CODE>
+addup</CODE>, and it makes sense to start by checking the one that's called first.
+(If you read the instructions in the definitions of <CODE>digit</CODE> and <CODE>
+addup</CODE>, you'll see that <CODE>digit</CODE> handles each digit in isolation, whereas
+<CODE>addup</CODE> is the one that looks at two consecutive digits to decide whether
+or not to subtract.  But at first I'm not reading the instructions at all;
+I'm trying to be sure that I understand the <EM>behavior</EM> of each
+procedure before I look inside any of them.  For a simple problem like this
+one, the approach I'm using is more ponderous than necessary.  But it would
+pay off for a larger program with more subtle bugs.)
+
+<P><PRE>? <U>show map.se &quot;digit &quot;VII</U>
+[5 1 1]
+? <U>show map.se &quot;digit &quot;MDCCLXXVI</U>
+[1000 500 100 100 50 10 10 5 1]
+</PRE>
+
+<P>I've started with Roman numerals for which the overall program
+works.  Why not just concentrate on the cases that fail?  Because I want to
+see what the <EM>correct</EM> output from <CODE>map</CODE>ping <CODE>digit</CODE> over the
+Roman numeral is supposed to look like.  It turns out to be a list of
+numbers, one for each letter in the Roman numeral.
+
+<P>You may wonder why I need to investigate the correct behavior of <CODE>
+digit</CODE> experimentally.  If I've planned the program properly in the
+first place, I should <EM>know</EM> what it's supposed to do.  There
+are several reasons why I might feel a need for this sort of
+experiment.  Perhaps it's someone else's program I'm debugging, and I
+don't know what the plan was.  Perhaps it's a program I wrote a long
+time ago and I've forgotten.  Finally, since there is a bug after
+all, perhaps my understanding is faulty even if I do think I know what
+<CODE>digit</CODE> is supposed to do.
+
+<P>Now let's try <CODE>digit</CODE> for some of the buggy cases.
+
+<P><PRE>? <U>show map.se &quot;digit &quot;IV</U>
+[1 5]
+? <U>show map.se &quot;digit &quot;MCMLXXXIV</U>
+[1000 100 1000 50 10 10 10 1 5]
+?
+</PRE>
+
+<P><CODE>Digit</CODE> still does the right thing:  It outputs the number
+corresponding to each letter.  The problem must be in <CODE>addup</CODE>.
+
+<P>Now it's time to take a look at <CODE>addup</CODE>.  There are four
+instructions in its definition.  Which is at fault?  It must be one
+that comes into play only for the cases in which subtraction is
+needed.  That's a clue that it will be one of the <CODE>if</CODE>
+instructions, although instructions that aren't explicitly
+conditional can, in fact, depend on earlier <CODE>if</CODE> tests.  (In this
+procedure, for example, the last instruction doesn't look
+conditional.  But it is carried out only if none of the earlier
+instructions results in an <CODE>output</CODE> being evaluated.)
+
+<P>Rather than read every word of every line carefully, we should start
+by knowing the purpose of each instruction.  The first one is an end
+test, detecting an empty numeral.  The second is also an end test,
+detecting a single-digit numeral.  (Why are two end tests necessary?
+How would the program fail if each one were eliminated?) The third
+instruction deals with the subtraction case, and the fourth with the
+addition case.  The bug, then, is probably in the third instruction.
+Here it is again:
+
+<P><PRE>if (first :list) &lt; (first bf :list) ~
+   [output sum ((first bl :list)-(first :list)) addup bf bf :list]
+</PRE>
+
+<P>At this point a careful reading of the instruction will
+probably make the error obvious.  If not, look at each of the
+expressions used within the instruction, like
+
+<P><PRE>first :list
+</PRE>
+
+<P>and
+
+<P><PRE>bf bf :list
+</PRE>
+
+<P>What number or list does each of them represent?
+
+<P>(If you'd like to take time out for a short programming project now,
+you might try writing <CODE>roman</CODE>, an operation to translate in the
+opposite direction, from Arabic to Roman numerals.  The rules are that
+<CODE>I</CODE> can be subtracted from <CODE>V</CODE> or <CODE>X</CODE>; <CODE>X</CODE> can be
+subtracted from <CODE>L</CODE> or <CODE>C</CODE>; and <CODE>C</CODE> can be subtracted from
+<CODE>D</CODE> or <CODE>M</CODE>.  You should never need to repeat any symbol more
+than three times.  For example, you should use <CODE>IV</CODE> rather than
+<CODE>IIII</CODE>.)
+
+<P><H2>Tracing and Stepping</H2>
+
+<P>In Chapter 9 we used the techniques of <EM>tracing</EM> and <EM>
+stepping</EM> to help you understand how recursive procedures work.  The
+same techniques can be very valuable in debugging.  Tracing a
+procedure means making it print an indication of when it starts and
+stops.  Stepping a procedure means making it print each of its
+instructions and waiting for you to type something before evaluating
+the instruction.
+
+<P>Berkeley Logo provides primitive commands <CODE>trace</CODE> and
+<CODE>step</CODE> that automatically trace or step procedures for you.  <CODE>
+Trace</CODE> and <CODE>step</CODE> take one input, which can be either a word or a
+list.  If the input is a word, it must be the name of a procedure.  If
+a list, it must be a list of words, each of which is the name of a
+procedure.  The effect of <CODE>trace</CODE> is to modify the procedure or
+procedures named in the input to identify the procedure and its inputs
+when it is invoked.  The effect of <CODE>step</CODE> is to modify the named
+procedure(s) so that each instruction is printed before being
+evaluated.
+
+<P>Tracing a procedure is particularly useful in the annoying situation in
+which a program just sits there forever, never stopping, but never printing
+anything either.  This usually means that there is an error in a recursive
+procedure, which invokes itself repeatedly with no stop rule or with an
+ineffective one.  If you trace recursive procedures, you can find out how
+you got into that situation.
+
+<P>
+<H2>Pausing</H2>
+
+<P>When a program fails, either with an error message or by printing the
+wrong result, it can be helpful to examine the values of the variables
+used within the program.  Of course, you understand by now that &quot;the
+variables used within the program&quot; may be a complicated idea; if
+there are recursive procedures with local variables, there may be
+several variables with the same name, one for each invocation of a
+procedure.
+
+<P>Once a program is finished running, the local variables created by the
+procedures within the program no longer exist.  You can examine global
+variables individually by <CODE>print</CODE>ing their values or all at
+once with the <CODE>pons</CODE> command.  (<CODE>Pons</CODE> stands for Print Out
+NameS; it takes no inputs and prints the names and values of
+all current variables.)  But it's too late to examine local variables
+after a program stops.
+
+<P>To get around this problem, Berkeley Logo provides
+a <CODE>pause</CODE> command.  This command takes
+no inputs.  Its effect is to stop,
+temporarily, the procedure in which it appears.  (Like <CODE>stop</CODE> and
+<CODE>output</CODE>, <CODE>pause</CODE> is meaningless at top level.)  Logo prints a
+question mark prompt (along with the name of the paused procedure
+to remind you that it's paused), and you can enter instructions to be evaluated
+as usual.  But the paused procedure is <EM>still active;</EM> its local
+variables still exist.  (Any superprocedures of the paused procedure,
+naturally, are also still active.)  The instructions you type while the
+procedure is paused can make use of local variables, just as if the
+instructions appeared within the procedure definition.
+
+<P>The main use of <CODE>pause</CODE> is for debugging.  If your program dies
+with an error message you don't understand, you can insert a <CODE>
+pause</CODE> command just before the instruction that gets the error.  Then
+you can examine the variables that will be used by that instruction.
+
+<P>Better yet, you can ask Logo to pause <EM>automatically</EM> whenever
+an error occurs.  In fact, you can ask Logo to carry out any instructions
+you want, whenever an error occurs, by creating a variable named <CODE>erract</CODE>
+(short for error action) whose value is an instruction list.  If you want
+your program to pause at any error, say
+
+<P><PRE>? <U>make &quot;erract [pause]</U>
+</PRE>
+
+<P>before you run the program.  To undo this request, you can
+erase the variable name <CODE>erract</CODE> with the <CODE>ern</CODE> (erase name)
+command:
+
+<P><PRE>? <U>ern &quot;erract</U>
+</PRE>
+
+<P>Once you've examined the relevant variables, you may want to continue
+running the program.  You'll certainly want to continue if this pause
+wasn't the one you're waiting for, just before the error happens.
+Logo provides the command <CODE>continue</CODE> (abbreviated <CODE>co</CODE>) for this
+purpose.  If you type <CODE>continue</CODE> with no input, Logo will continue the
+evaluation of the paused procedure where it left off.
+
+<P>It is also
+possible to use <CODE>continue</CODE> with an input, turning the <CODE>pause</CODE>
+command into an operation by providing a value for it to output.  Whether
+or not that's appropriate depends on which error message you get.  If
+the message complains about a missing value, you may be able to provide
+one to allow the program to continue:
+
+<P><PRE>to demo.error
+print first :nonesuch
+end
+
+? <U>make &quot;erract [pause]</U>
+? <U>demo.error</U>
+nonesuch has no value  in demo.error
+[print first :nonesuch]
+Pausing...
+demo.error? <U>continue &quot;hello</U>
+h
+</PRE>
+
+<P>If, after examining variables, you figure out the reason for the bug,
+you may not want to bother continuing the buggy procedure.  Instead
+you'll want to forget about it, edit the definition to fix the bug,
+and try again.  But you shouldn't just forget about it because the
+procedure is still active.  If you don't want to continue it, you
+should <CODE>stop</CODE> it instead, to get back to the &quot;real&quot; top level
+with no procedures active.  (Instead of <CODE>stop</CODE>, a more definitive
+way to stop all active procedures is with the instruction
+
+<P><PRE>throw &quot;toplevel
+</PRE>
+
+<P>For now just think of this as a magic incantation; we'll talk more
+about <CODE>throw</CODE> in the second volume.)
+
+<P>Berkeley Logo also has a special character
+that you can type on the keyboard to cause an immediate pause.  The
+character depends on which computer you're using; see Appendix A.
+This is not as useful a capability as
+you might think because it's hard to synchronize your typing with the
+activity of the program so that it gets paused in the right <EM>
+context</EM> (that is, with the right procedures active and the right
+local variables available).  But it can be useful if you can see that
+the program is repeating the same activities over and over, for
+example; pausing just about anywhere during that kind of <EM>loop</EM>
+is likely to give you useful information.
+
+<P><H2>Final Words of Wisdom</H2>
+
+<P>You may be feeling a frustrating sense of incompleteness about this
+chapter.  After the chapter on variables, for example, you really knew
+everything there is to know about variables.  (I suppose that's not
+strictly true, since you hadn't thought about recursion yet, but it's
+true enough.)  But you certainly don't know everything there is to know
+about debugging.  That's because there isn't a complete set of rules
+that will get you through every situation.  You just have to do a lot
+of programming, meet a lot of bugs, and develop an instinct for them.
+
+<P>As a beginner, you'll probably meet bugs with a different flavor from
+the ones I've been discussing.  You'll put a space after a quotation
+mark or a colon, before the word to which it should be attached.
+You'll leave out a left or right parenthesis or bracket.  (Perhaps
+you'll get confused about when to use parentheses and when brackets!)
+All of these simple errors will quickly get you error messages, and
+you can probably find your mistake just by reading the offending
+instruction.  Later, as your programs get more complicated, you'll
+start having the more interesting bugs that require analysis to find
+and fix.
+
+<P>It's a good idea to program with a partner.  Sometimes you can find
+someone else's bugs more easily than your own--when you read
+your own program, you know too well what you <EM>meant</EM> to say.
+This advice is not just for beginners; even experienced programmers
+often benefit from sharing their bugs with a friend.  Another
+advantage of such a partnership is that trying to explain your program
+to someone else will often help you understand it more clearly
+yourself.  I've often discovered a persistent bug halfway through
+explaining the problem to someone.
+
+<P>The main point, I think, is one I've made in earlier chapters: there
+is nothing shameful about a bug in your program.  As a teacher, I've
+been astonished to see students react to a simple bug by angrily
+erasing an entire program, which they'd spent hours writing!  Teach
+yourself to expect bugs and approach them with a good-natured spirit.
+
+<P>On the other hand, you can minimize your debugging time by writing the
+program in a reasonable style in the first place.  If your program is
+one long procedure, you should know that you're making it harder to
+locate an offending instruction.  If all your variables are named <CODE>
+x</CODE> and <CODE>y</CODE>, you deserve whatever happens to you!  And if you can't
+figure out, yourself, which procedure does what, then perhaps you
+should stop typing in procedures and spend a little time with paper
+and pencil listing the tasks each procedure needs to carry out.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch14/v1ch14.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch16/versions.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch16/appendix-gpl.html b/js/games/nluqo.github.io/~bh/v1ch16/appendix-gpl.html
new file mode 100644
index 0000000..fddf5b2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch16/appendix-gpl.html
@@ -0,0 +1,413 @@
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 Appendix B: GNU General Public License</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>GNU General Public License</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch16.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="versions.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The following software license, written by the Free Software
+Foundation, applies to Berkeley Logo and to
+the Logo programs in this book.  I chose to use
+this license in order to encourage the free sharing of software--my own
+and, I hope, yours.
+
+<P><CENTER>GNU GENERAL PUBLIC LICENSE</CENTER>
+<CENTER>Version 2, June 1991</CENTER>
+
+<P>Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+
+<P>675 Mass Ave, Cambridge, MA 02139, USA
+<P>
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+<P>
+<CENTER>Preamble</CENTER>
+<P>
+The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+<P>When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+<P>To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+<P>For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+<P>We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+<P>Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+<P>Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+<P>The precise terms and conditions for copying, distribution and
+modification follow.
+
+<P>
+<CENTER>GNU GENERAL PUBLIC LICENSE</CENTER>
+<P>
+<CENTER>TERMS AND CONDITIONS FOR COPYING,</CENTER>
+<CENTER>DISTRIBUTION AND MODIFICATION</CENTER>
+<P>
+
+<P>0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The &quot;Program&quot;, below,
+refers to any such program or work, and a &quot;work based on the Program&quot;
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term &quot;modification&quot;.)  Each licensee is addressed as &quot;you&quot;.
+
+<P>Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+<P>1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+<P>You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+<P>2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+<BLOCKQUOTE>
+<P>a) You must cause the modified files to carry prominent notices
+stating that you changed the files and the date of any change.
+
+<P>b) You must cause any work that you distribute or publish, that in
+whole or in part contains or is derived from the Program or any
+part thereof, to be licensed as a whole at no charge to all third
+parties under the terms of this License.
+
+<P>c) If the modified program normally reads commands interactively
+when run, you must cause it, when started running for such
+interactive use in the most ordinary way, to print or display an
+announcement including an appropriate copyright notice and a
+notice that there is no warranty (or else, saying that you provide
+a warranty) and that users may redistribute the program under
+these conditions, and telling the user how to view a copy of this
+License.  (Exception: if the Program itself is interactive but
+does not normally print such an announcement, your work based on
+the Program is not required to print an announcement.)
+</BLOCKQUOTE>
+
+<P>These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+<P>Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+<P>In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+<P>3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+<BLOCKQUOTE>
+<P>a) Accompany it with the complete corresponding machine-readable
+source code, which must be distributed under the terms of Sections
+1 and 2 above on a medium customarily used for software interchange; or,
+
+<P>b) Accompany it with a written offer, valid for at least three
+years, to give any third party, for a charge no more than your
+cost of physically performing source distribution, a complete
+machine-readable copy of the corresponding source code, to be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+<P>c) Accompany it with the information you received as to the offer
+to distribute corresponding source code.  (This alternative is
+allowed only for noncommercial distribution and only if you
+received the program in object code or executable form with such
+an offer, in accord with Subsection b above.)
+</BLOCKQUOTE>
+
+<P>The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+<P>If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+<P>4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+<P>5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+<P>6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+<P>7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program
+by all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+<P>If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+<P>It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+<P>This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+<P>8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+<P>9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+<P>Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and &quot;any
+later version&quot;, you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+<P>10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+<P><P>
+<CENTER>NO WARRANTY</CENTER>
+<P>
+
+<P>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD
+THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+<P>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+<P>
+<CENTER>END OF TERMS AND CONDITIONS</CENTER>
+
+<P><P>
+<CENTER>How to Apply These Terms to Your New Programs</CENTER>
+<P>
+
+<P>If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+<P>To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the &quot;copyright&quot; line and a pointer to where the full notice is found.
+
+<P><PRE>&lt;one line to give the program's name
+  and a brief idea of what it does.>
+Copyright (C) 19yy  &lt;name of author>
+
+This program is free software; you can
+redistribute it and/or modify it under the terms
+of the GNU General Public License as published
+by the Free Software Foundation; either version
+2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it
+will be useful, but WITHOUT ANY WARRANTY;
+without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.  See the GNU General Public License for
+more details.
+
+You should have received a copy of the GNU
+General Public License along with this program;
+if not, write to the Free Software Foundation,
+Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+</PRE>
+
+<P>Also add information on how to contact you by electronic and paper mail.
+
+<P>If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+<P><PRE>Gnomovision version 69,
+Copyright (C) 19yy name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for
+details type 'show w'.  This is free software, and
+you are welcome to redistribute it under certain
+conditions; type 'show c' for details.
+</PRE>
+
+<P>The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+<P>You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a &quot;copyright disclaimer&quot; for the program, if
+necessary.  Here is a sample; alter the names:
+
+<P><PRE>Yoyodyne, Inc., hereby disclaims all copyright
+interest in the program 'Gnomovision' (which makes
+passes at compilers) written by James Hacker.
+
+&lt;signature of Ty Coon&gt;, 1 April 1989
+Ty Coon, President of Vice
+</PRE>
+
+<P>This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+<P>
+<P>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="versions.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch16/appindex.html b/js/games/nluqo.github.io/~bh/v1ch16/appindex.html
new file mode 100644
index 0000000..99ee0c8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch16/appindex.html
@@ -0,0 +1,968 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1: General Index</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>General Index</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch16.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This index lists technical terms and primitive procedures.  There is also an
+<A HREF="appuindex.html">index of defined procedures</A>, which
+lists procedures whose definitions are in
+the text and procedures that you are asked to write.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P><A HREF="appindex.html#A">A</A> <A HREF="appindex.html#B">B</A> <A HREF="appindex.html#C">C</A> <A HREF="appindex.html#D">D</A> <A HREF="appindex.html#E">E</A> <A HREF="appindex.html#F">F</A> <A HREF="appindex.html#G">G</A> <A HREF="appindex.html#H">H</A> <A HREF="appindex.html#I">I</A> <A HREF="appindex.html#J">J</A> <A HREF="appindex.html#K">K</A> <A HREF="appindex.html#L">L</A> <A HREF="appindex.html#M">M</A> <A HREF="appindex.html#N">N</A> <A HREF="appindex.html#O">O</A> <A HREF="appindex.html#P">P</A> <A HREF="appindex.html#Q">Q</A> <A HREF="appindex.html#R">R</A> <A HREF="appindex.html#S">S</A> <A HREF="appindex.html#T">T</A> U <A HREF="appindex.html#V">V</A> <A HREF="appindex.html#W">W</A> <A HREF="appindex.html#X">X</A> <A HREF="appindex.html#Y">Y</A> Z
+<P><A NAME="A"></A>
+
+
+<P><BR>
+abbreviation <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Abelson, Hal <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+absolute value <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+abstract data type <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+actual argument <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+algebraic equation <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+algorithm <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+allocation, storage <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+analytic geometry <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>and</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+APL <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+apprenticeship <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+Arabic numeral <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+argument <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+argument, actual <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+array <A HREF="../v1ch0/preface.html">Pref</A>
+, <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>array</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>arraytolist</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+artificial intelligence <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+assignment, indirect <A HREF="../v1ch3/variab.html">Ch3</A>
+<P><A NAME="B"></A>
+<BR>
+<CODE>back</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+BASIC <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+, <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>bf</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Birch, Alison <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+<CODE>bk</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+bottom-up <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+bracket, square <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+breadth-first search <A HREF="../v1ch14/pour.html">Ch14</A>
+
+<BR>
+<CODE>butfirst</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>butlast</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<P><A NAME="C"></A>
+<BR>
+C++ <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+Carter, Cindy <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+Cartesian coordinates <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>cascade</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+character <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+character string <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+cipher, Playfair <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+cipher, simple substitution <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+Clancy, Michael <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+<CODE>clearscreen</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>cleartext</CODE> <A HREF="../v1ch1/explor.html">Ch1</A>
+<BR>
+cognitive psychology <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+colon <A HREF="../v1ch3/variab.html">Ch3</A>
+
+
+<BR>
+combiner <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+command <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+compass heading <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+composition of functions <A HREF="../v1ch0/preface.html">Pref</A>
+, <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+computer graphics <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+computer literacy <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+computer science <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+conditional evaluation <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+connective, logical <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+constructor <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+context <A HREF="../v1ch13/plan.html">Ch13</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>continue</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+conversational front end <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+coordinates <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+coordinates, Cartesian <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>count</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Courant, Richard <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>cs</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>ct</CODE> <A HREF="../v1ch1/explor.html">Ch1</A>
+<P><A NAME="D"></A>
+<BR>
+Dahl, O. J. <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+Dao, Khang <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+data redundancy <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+data representation <A HREF="../v1ch6/ttt.html">Ch6</A>
+, <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+data structure <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+data type, abstract <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+datum <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Davidson, Larry <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+Davis, Jim <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+debugging <A HREF="../v1ch13/plan.html">Ch13</A>
+
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+defensive programming <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+defining a procedure <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+depth-first search <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+Descartes, Ren&eacute; <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+describe a procedure, how to <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Deutsch, Freeman <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+diagram, plumbing <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Dijkstra, Edsger <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+Diophantine equation <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+domain <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+dots <A HREF="../v1ch3/variab.html">Ch3</A>
+
+<BR>
+dynamic scope <A HREF="../v1ch3/variab.html">Ch3</A>
+<P><A NAME="E"></A>
+<BR>
+<CODE>edit</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+editor <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+effect <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+efficiency <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+elves <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+Elvish <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+empty list <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+empty word <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>emptyp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>end</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+environment, programming <A HREF="../v1ch1/explor.html">Ch1</A>
+<BR>
+equal sign <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>equalp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+equation, algebraic <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+equation, Diophantine <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+error message <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+evaluation <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+expression <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+expression, logical <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+extra inputs <A HREF="../v1ch2/proced.html">Ch2</A>
+<P><A NAME="F"></A>
+<BR>
+factorial <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+faith <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>false</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>fd</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+Fibonacci sequence <A HREF="../v1ch5/hof.html">Ch5</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>filter</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>find</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>first</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+flag variable <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+flat list <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>for</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+
+<BR>
+<CODE>foreach</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>forever</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+formal parameter <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+Fortran <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+<CODE>forward</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>fput</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+fractal <A HREF="../v1ch10/turtle.html">Ch10</A>
+
+<BR>
+frame <A HREF="../v1ch3/variab.html">Ch3</A>
+
+<BR>
+Free Software Foundation <A HREF="appendix-gpl.html">GPL</A>
+<BR>
+Friedman, Batya <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+front end, conversational <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+function <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+function notation <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+function, higher order <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+functions, composition of <A HREF="../v1ch0/preface.html">Pref</A>
+, <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch12/playfair.html">Ch12</A>
+<P><A NAME="G"></A>
+<BR>
+geometry, analytic <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+geometry, turtle <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+Gilham, Fred <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+global variable <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+Goldenberg, Paul <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+Goodman, Paul <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+graph <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+graphics, computer <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+graphics, turtle <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>greaterp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<P><A NAME="H"></A>
+<BR>
+Hanoi, Tower of <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+Harvey, Tessa <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+<EM>Have His Carcase</EM> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+heading <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>heading</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+heading, compass <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+hierarchy of levels <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+higher order function <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+Hoare, C. A. R. <A HREF="../v1ch13/plan.html">Ch13</A>
+<P><A NAME="I"></A>
+<BR>
+<CODE>if</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>ifelse</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>iff</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>iffalse</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>ift</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>iftrue</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+increment <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+index variable <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+indirect assignment <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+infix arithmetic <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+initialization procedure <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+input <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+inputs, extra <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+instruction <A HREF="../v1ch1/explor.html">Ch1</A>
+, <A HREF="../v1ch2/proced.html">Ch2</A>
+
+
+<BR>
+instruction line <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+instruction list <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+intelligence, artificial <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+interaction <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+invocation <A HREF="../v1ch2/proced.html">Ch2</A>
+
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+IQ tests <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>item</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+iteration, numeric <A HREF="../v1ch5/hof.html">Ch5</A>
+<P><A NAME="J"></A>
+<BR>
+joke <A HREF="../v1ch1/explor.html">Ch1</A>
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+<P><A NAME="K"></A>
+<BR>
+Katz, Michael <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+Katz, Yehuda <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+kludge <A HREF="../v1ch2/proced.html">Ch2</A>
+<P><A NAME="L"></A>
+<BR>
+<CODE>last</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Latin, Pig <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>left</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+Lennon, John <A HREF="../v1ch1/explor.html">Ch1</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>lessp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+levels of recursion <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+levels, hierarchy of <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+Levington, David <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+Lewis, Phil <A HREF="../v1ch0/ack.html">Ack</A>
+
+<BR>
+limit value <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+Lisp <A HREF="../v1ch0/preface.html">Pref</A>
+
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+list <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>list</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+list, empty <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+list, flat <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>listp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>listtoarray</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+literacy, computer <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+little person metaphor <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+<CODE>local</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+local variable <A HREF="../v1ch3/variab.html">Ch3</A>
+
+, <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+locality <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+logic, mathematical <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+logical connective <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+logical expression <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+Logo <A HREF="../v1ch0/preface.html">Pref</A>
+
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>lput</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>lt</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<P><A NAME="M"></A>
+<BR>
+<CODE>make</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>map</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+
+<BR>
+<CODE>map.se</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+mathematical logic <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+mathematics <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+matrix <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+member <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>memberp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+metaphor <A HREF="../v1ch1/explor.html">Ch1</A>
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+Mills, George <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+Minsky, Margaret <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+modularity <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch6/ttt.html">Ch6</A>
+, <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+most restrictive test <A HREF="../v1ch13/plan.html">Ch13</A>
+<P><A NAME="N"></A>
+<BR>
+name <A HREF="../v1ch3/variab.html">Ch3</A>
+
+<BR>
+<CODE>not</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+number <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+number, telephone <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>numberp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+numeral, Arabic <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+numeral, Roman <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+numeric iteration <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+numerical operation <A HREF="../v1ch11/recops.html">Ch11</A>
+<P><A NAME="O"></A>
+<BR>
+operation <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+operation, numerical <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+operation, recursive <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+operation, selection <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>or</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+origin <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+Orleans, Doug <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+output <A HREF="../v1ch2/proced.html">Ch2</A>
+
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>output</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+
+<BR>
+Owings, Sanford <A HREF="../v1ch0/ack.html">Ack</A>
+<P><A NAME="P"></A>
+<BR>
+parallel processing <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+parameter, formal <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+parentheses <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+Pascal <A HREF="../v1ch0/preface.html">Pref</A>
+, <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+pattern <A HREF="../v1ch8/recur2.html">Ch8</A>
+
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+
+
+
+<BR>
+pattern, procedure <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>pause</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+pausing <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>pd</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+pen <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>pendown</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>penup</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+Pig Latin <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+planning, style of <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+Playfair cipher <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+plumbing diagram <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>po</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+pocket <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>pons</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>pops</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>pos</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+position <A HREF="../v1ch6/ttt.html">Ch6</A>
+, <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>pots</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>pr</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+predicate <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+predicate calculus <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+predicate, recursive <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+prefix arithmetic <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+primitive <A HREF="../v1ch2/proced.html">Ch2</A>
+
+<BR>
+<CODE>print</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+procedure <A HREF="../v1ch1/explor.html">Ch1</A>
+, <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+procedure pattern <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+procedure, defining <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+procedure, initialization <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+procedure, top-level <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+processing, parallel <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>product</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+program <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+programming environment <A HREF="../v1ch1/explor.html">Ch1</A>
+<BR>
+programming, structured <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+Prolog <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+prompt <A HREF="../v1ch1/explor.html">Ch1</A>
+
+<BR>
+psychology, cognitive <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>pu</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<P><A NAME="Q"></A>
+<BR>
+question <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+question, yes-or-no <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+queue <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+quotation mark <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+quote <A HREF="../v1ch2/proced.html">Ch2</A>
+
+<P><A NAME="R"></A>
+<BR>
+<CODE>random</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+range <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>readchar</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>readlist</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+recursion <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+recursion, levels of <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+recursive call <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+recursive operation <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>reduce</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+redundancy, data <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+<CODE>remainder</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>repeat</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+representation, data <A HREF="../v1ch6/ttt.html">Ch6</A>
+, <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+restrictive test <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>right</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+right to left <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+Robbins, Herbert <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+robot <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+Roman numeral <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>rt</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>run</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<P><A NAME="S"></A>
+<BR>
+Sargent, Randy <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+Sayers, Dorothy L. <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+scope of variables <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+scope, dynamic <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+search, breadth-first <A HREF="../v1ch14/pour.html">Ch14</A>
+
+<BR>
+search, depth-first <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+search, tree <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+selection operation <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+selector <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+semantics <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+sentence <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>sentence</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+sequence of instructions <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+<CODE>seth</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>setheading</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>setitem</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>setpos</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+simple substitution cipher <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+Solomon, Cynthia <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+space/time tradeoff <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+square bracket <A HREF="../v1ch2/proced.html">Ch2</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+stack <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+starting value <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+state, turtle <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+state-invariant <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+statement types <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>step</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+step, turtle <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+stepping <A HREF="../v1ch9/recur3.html">Ch9</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>stop</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+stop rule <A HREF="../v1ch7/recur1.html">Ch7</A>
+
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+storage allocation <A HREF="../v1ch0/preface.html">Pref</A>
+<BR>
+string, character <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+structure, data <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+structured programming <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+style of planning <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+subprocedure <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+subprocedure/superprocedure diagram <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>subsets</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+substitution cipher, simple <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>sum</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+superprocedure <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+symmetry <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+syntax <A HREF="../v1ch0/preface.html">Pref</A>
+, <A HREF="../v1ch2/proced.html">Ch2</A>
+
+<P><A NAME="T"></A>
+<BR>
+tail recursion <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+telephone number <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+template <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>test</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+test, most restrictive <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+tests, IQ <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>thing</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+
+<BR>
+<CODE>throw</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+tic-tac-toe <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch6/ttt.html">Ch6</A>
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+title line <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>to</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+top-down <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+top-level procedure <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+Tower of Hanoi <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+trace <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+<CODE>trace</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+tracing <A HREF="../v1ch9/recur3.html">Ch9</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+
+<BR>
+tree <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+tree search <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>true</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+turtle graphics <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+turtle step <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+turtle-relative <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+Twenty Questions <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>type</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<P><A NAME="V"></A>
+<BR>
+value, limit <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+value, starting <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+van Blerkom, Dan <A HREF="../v1ch0/ack.html">Ack</A>
+<BR>
+variable <A HREF="../v1ch3/variab.html">Ch3</A>
+
+
+<BR>
+variable, flag <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+variable, index <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+variable, local <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+variables in the workspace <A HREF="../v1ch6/ttt.html">Ch6</A>
+<P><A NAME="W"></A>
+<BR>
+Washington, George <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<EM>What Is Mathematics?</EM> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+Wirth, Niklaus <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+word <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>word</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+word, empty <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>wordp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+Wright, Matthew <A HREF="../v1ch0/ack.html">Ack</A>
+, <A HREF="../v1ch6/ttt.html">Ch6</A>
+<P><A NAME="X"></A>
+<BR>
+x-coordinate <A HREF="../v1ch10/turtle.html">Ch10</A>
+<P><A NAME="Y"></A>
+<BR>
+y-coordinate <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+yes-or-no question <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+Yoder, Sharon <A HREF="../v1ch0/ack.html">Ack</A>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch16/appuindex.html b/js/games/nluqo.github.io/~bh/v1ch16/appuindex.html
new file mode 100644
index 0000000..882f405
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch16/appuindex.html
@@ -0,0 +1,512 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1: Index of Defined Procedures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Index of Defined Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch16.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appendix-gpl.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This index lists example procedures whose definitions are in the text and
+procedures that you are asked to write in the text.  The
+<A HREF="appindex.html">general index</A>
+lists technical terms and primitive procedures.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P><P>
+<A HREF="appuindex.html#A">A</A> <A HREF="appuindex.html#B">B</A> <A HREF="appuindex.html#C">C</A> <A HREF="appuindex.html#D">D</A> <A HREF="appuindex.html#E">E</A> <A HREF="appuindex.html#F">F</A> <A HREF="appuindex.html#G">G</A> <A HREF="appuindex.html#H">H</A> <A HREF="appuindex.html#I">I</A> <A HREF="appuindex.html#J">J</A> K <A HREF="appuindex.html#L">L</A> <A HREF="appuindex.html#M">M</A> <A HREF="appuindex.html#N">N</A> <A HREF="appuindex.html#O">O</A> <A HREF="appuindex.html#P">P</A> <A HREF="appuindex.html#Q">Q</A> <A HREF="appuindex.html#R">R</A> <A HREF="appuindex.html#S">S</A> <A HREF="appuindex.html#T">T</A> <A HREF="appuindex.html#U">U</A> <A HREF="appuindex.html#V">V</A> <A HREF="appuindex.html#W">W</A> X <A HREF="appuindex.html#Y">Y</A> Z
+<P><A NAME="A"></A>
+
+
+<P><BR>
+<CODE>about.computersp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>abs</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>ace.highp</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>acronym</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>addup</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>all.empty</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>already.wonp</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>arabic</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>ask.once</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>ask.thrice</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<P><A NAME="B"></A>
+<BR>
+<CODE>best.move</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>better.groupie</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>bottom</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>breadth.descend</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>breadth.first</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<P><A NAME="C"></A>
+<BR>
+<CODE>child</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>children</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>children1</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>choose</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>chooseo</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>choosex</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>code</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>codelet</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>codematch</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>codeword</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>color</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>computer.first</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>converse</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>countdown</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+<P><A NAME="D"></A>
+<BR>
+<CODE>dash</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>diamond</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+<CODE>digit</CODE> <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>digitp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>down</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>downup</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+
+
+
+
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+
+, <A HREF="../v1ch9/recur3.html">Ch9</A>
+<BR>
+<CODE>downup.many</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+<CODE>downup.one</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+<CODE>downup1</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+<CODE>downup2</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+<CODE>draw</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>draw.board</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>drawline</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>drawo</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>drawx</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<P><A NAME="E"></A>
+<BR>
+<CODE>encode</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<P><A NAME="F"></A>
+<BR>
+<CODE>face</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>fact</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+
+<BR>
+<CODE>fib</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+
+<BR>
+<CODE>fiblist</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>find.advance</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>find.fork</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>find.win</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>fingers</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>flushp</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>fourp</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>freep</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>french</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>full.housep</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>fullp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<P><A NAME="G"></A>
+<BR>
+<CODE>getmove</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>greet</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>groupie</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<P><A NAME="H"></A>
+<BR>
+<CODE>halves</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>hanoi</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+
+<BR>
+<CODE>hasvowelp</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>hello</CODE> <A HREF="../v1ch2/proced.html">Ch2</A>
+<BR>
+<CODE>hi</CODE> <A HREF="../v1ch1/explor.html">Ch1</A>
+<P><A NAME="I"></A>
+<BR>
+<CODE>ignore</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>importantp</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>increment</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>index</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>init</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>initials</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+
+
+<BR>
+<CODE>inout</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+
+
+
+<BR>
+<CODE>inout.sub</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+<CODE>inrangep</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>insert</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>integerp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>item</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>itoj</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<P><A NAME="J"></A>
+<BR>
+<CODE>jtoi</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<P><A NAME="L"></A>
+<BR>
+<CODE>length</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>letter</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+
+<BR>
+<CODE>letterp</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>letters</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+<CODE>locate</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>lookup</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>lovepoem</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+<P><A NAME="M"></A>
+<BR>
+<CODE>make.path</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>make.triples</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>manyprint</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>meplay</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>min</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>move</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>movedisk</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>multiply</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>music.quiz</CODE> <A HREF="../v1ch1/explor.html">Ch1</A>
+, <A HREF="../v1ch4/predic.html">Ch4</A>
+<P><A NAME="N"></A>
+<BR>
+<CODE>new.converse</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>newfib</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>newstate</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>nogap</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>number.name</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>numbers</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<P><A NAME="O"></A>
+<BR>
+<CODE>oddp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>one.per.line</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+
+<P><A NAME="P"></A>
+<BR>
+<CODE>paircode</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+<CODE>paircount</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>pairp</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>pairup</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>past.tensep</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>path.moves</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>path.state</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>person.first</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>person.move</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>pickmove</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>piglatin</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>playfair</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+<CODE>playgame</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>plural</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>plword</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>poker</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>poker.init</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+
+<BR>
+<CODE>pokerhand</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+
+<BR>
+<CODE>poly</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>pour</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>praise</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>primer</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>printform</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>process</CODE> <A HREF="../v1ch1/explor.html">Ch1</A>
+<BR>
+<CODE>protect.heading</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>prsecond</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<P><A NAME="Q"></A>
+<BR>
+<CODE>qa</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>quadratic</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>query</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>quiz</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<P><A NAME="R"></A>
+<BR>
+<CODE>ranknum</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>read.card</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>read.cards</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+<BR>
+<CODE>realwordp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>remove</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+<CODE>reorder</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+<CODE>reorder1</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+<BR>
+<CODE>repeated.number</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>replace</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>replace2</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>reverse</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>riverp</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>room</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>rotate</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+, <A HREF="../v1ch12/playfair.html">Ch12</A>
+<P><A NAME="S"></A>
+<BR>
+<CODE>say</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>sayrow</CODE> <A HREF="../v1ch5/hof.html">Ch5</A>
+<BR>
+<CODE>scramble</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>second</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<BR>
+<CODE>setkeyword</CODE> <A HREF="../v1ch12/playfair.html">Ch12</A>
+
+<BR>
+<CODE>singlep</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>singles</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>size</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>slant</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>soap.opera</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>sort.beforep</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>spin</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>squaggle</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>square</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>squiggle</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>squirrel</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>squoggle</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+<BR>
+<CODE>start</CODE> <A HREF="../v1ch1/explor.html">Ch1</A>
+<BR>
+<CODE>straightp</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>strip</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>strip.word</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>substitute.triple</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>swap</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+, <A HREF="../v1ch15/debug.html">Ch15</A>
+<P><A NAME="T"></A>
+<BR>
+<CODE>talk</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+<BR>
+<CODE>threep</CODE> <A HREF="../v1ch13/plan.html">Ch13</A>
+
+<BR>
+<CODE>tiedp</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>top</CODE> <A HREF="../v1ch3/variab.html">Ch3</A>
+<BR>
+<CODE>total.quiz</CODE> <A HREF="../v1ch1/explor.html">Ch1</A>
+<BR>
+<CODE>tree</CODE> <A HREF="../v1ch10/turtle.html">Ch10</A>
+
+
+
+<BR>
+<CODE>triangle</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+<BR>
+<CODE>truncate</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>ttt</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+, <A HREF="../v1ch13/plan.html">Ch13</A>
+<P><A NAME="U"></A>
+<BR>
+<CODE>unique</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>up</CODE> <A HREF="../v1ch7/recur1.html">Ch7</A>
+, <A HREF="../v1ch8/recur2.html">Ch8</A>
+<BR>
+<CODE>updown</CODE> <A HREF="../v1ch8/recur2.html">Ch8</A>
+
+
+<P><A NAME="V"></A>
+<BR>
+<CODE>vowelcount</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<BR>
+<CODE>vowelp</CODE> <A HREF="../v1ch4/predic.html">Ch4</A>
+, <A HREF="../v1ch11/recops.html">Ch11</A>
+<P><A NAME="W"></A>
+<BR>
+<CODE>water</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>win</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>win.nowp</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+<BR>
+<CODE>win1</CODE> <A HREF="../v1ch14/pour.html">Ch14</A>
+<BR>
+<CODE>wordify</CODE> <A HREF="../v1ch11/recops.html">Ch11</A>
+<P><A NAME="Y"></A>
+<BR>
+<CODE>youplay</CODE> <A HREF="../v1ch6/ttt.html">Ch6</A>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="appendix-gpl.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch16/versions.html b/js/games/nluqo.github.io/~bh/v1ch16/versions.html
new file mode 100644
index 0000000..9ebbd5c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch16/versions.html
@@ -0,0 +1,291 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 Appendix A: Running Berkeley Logo</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Running Berkeley Logo</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch16.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-gpl.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P><EM>(This HTML version of this appendix has been updated since the
+book was published, so it's a little different from the PDF, which
+is identical to the paper books.  But you might also want to read
+<A HREF="../announce">the announcement file</A> for the most recent
+release, which will have the most up-to-date information on
+downloading and installing UCBLogo.)</EM>
+
+<P>One of my reasons for writing a second edition of these books was that all
+of the Logo interpreters described in the first edition are now obsolete.
+Current commercial Logo implementations are quite different in their user
+interface from those traditional versions.  Those differences make newer
+Logo implementations more immediately accessible to children who want to
+produce animated graphics, but in many cases the changes have made the kind
+of programming I do in these books harder.
+
+<P>My solution has been to produce, along with some of my students, a Logo
+interpreter that is available free of charge for most popular computers.
+The design goal of Berkeley Logo has been that a program written for one
+kind of computer should run entirely unchanged on any other kind.  Still,
+there are slight differences in the user interface and in the installation
+process, and this appendix discusses those differences.  Since Berkeley
+Logo is distributed with source files, I hope that as new computers and
+operating systems come along, some enthusiast will make Berkeley Logo
+available for them even if I don't catch them all.
+
+<P>Still, people who are using some other version of Logo for other purposes
+might well want to use these books to help them learn more advanced Logo
+ideas.  The programs in this first volume can be adapted to current
+commercial Logo dialects with some effort.  In the later volumes I rely more
+heavily on features that are available only in Berkeley Logo.
+
+<P><H2>Getting Berkeley Logo</H2>
+
+<P>Berkeley Logo is available over the Internet. Make an anonymous FTP connection to
+<CODE>ftp.cs.berkeley.edu</CODE> and look in the directory <CODE>pub/ucblogo</CODE>,
+or just follow the links here:
+
+<P><TABLE>
+<TR><TD><A HREF="../downloads/blogo.exe"><CODE>blogo.exe</CODE></A>
+<TD>&nbsp;&nbsp;&nbsp;Self-extracting archive for DOS.
+<TR><TD><A HREF="../downloads/ucbwlogosetup.exe"><CODE>ucbwlogosetup.exe</CODE></A>
+<TD>&nbsp;&nbsp;&nbsp;Installer for Windows.
+<TR><TD><A HREF="../downloads/ucblogo.sea.hqx"><CODE>ucblogo.sea.hqx</CODE></A>
+<TD>&nbsp;&nbsp;&nbsp;BinHex self-extracting archive for classic Macintosh.
+<TR><TD><A HREF="https://people.eecs.berkeley.edu/~bh/downloads/ucblogo.tar.Z"><CODE>ucblogo.tar.Z</CODE></A>
+<TD>&nbsp;&nbsp;&nbsp;Compressed <CODE>tar</CODE> archive for Unix and Mac OS X.
+</TABLE>
+
+<P>If you use FTP, the files should be transferred in binary (image) mode.
+
+<P>The DOS, Windows, and Mac versions include a <CODE>source</CODE>
+subdirectory containing
+the C source files used to compile Berkeley Logo.  If you don't want to play
+with the code, you can delete this directory and all its contents.  You can
+also delete some or all of the contents of the <CODE>docs</CODE> directory,
+which has the
+user manual in various formats (Postscript, PDF, HTML, INFO, TEXI).  The
+HTML files are particularly huge, if you're looking for something to delete.
+(In the Unix version, the source files are in the top-level directory of the
+distribution.)
+
+<P>In the source directory, the file <CODE>plm</CODE> is a Program Logic Manual that
+documents some of the inner mysteries of this interpreter.  You should read
+<A HREF="http://mitpress.mit.edu/sicp/"><CITE>Structure and
+Interpretation of Computer Programs</CITE></A> before you read <CODE>plm</CODE>.
+Also included is <CODE>evaluator.ps</CODE>, a beautiful one-page simplified flowchart
+of the evaluator to admire while reading <CODE>plm</CODE>.
+
+<P>In the Unix version, if you want to save space, you can delete the entire
+ucblogo directory created by tar once you've done "make install".
+
+<P><H2>Berkeley Logo for Unix</H2>
+
+<P>Since there are so many different versions of Unix, Berkeley Logo is
+distributed in source form, and must be compiled for your particular
+machine.  A Gnu Autoconf configuration file is provided, so the
+compilation process should be reasonably automatic.  The X11 library
+is required for turtle graphics.
+
+<P>The Unix version is a compressed tar file.  To install it, copy to your
+machine, then say
+
+<PRE>uncompress ucblogo.tar
+tar -xf ucblogo.tar
+cd ucblogo
+configure
+make
+</PRE>
+
+Then, from an account with root privileges, <CODE>make install</CODE> to
+install the Logo files in <CODE>/usr/local</CODE>.
+
+<P>If you have <CODE>gunzip</CODE>, you can instead get
+<A HREF="../downloads/ucblogo.tar.gz"><CODE>ucblogo.tar.gz</CODE></A>
+(better compression).
+
+<P>Logo uses your system's interrupt character for stop, and your
+system's quit character for pause.
+
+<P>For the <CODE>edit</CODE> command, Logo uses whatever program is specified in
+your <CODE>EDITOR</CODE> environment variable.  If your editor exits with nonzero
+status (indicating an error) then Logo will not carry out the changes
+indicated in the edited file.
+
+If you have Mac OS X, and you have the
+<A HREF="http://www.apple.com/downloads/macosx/apple/x11formacosx.html">X
+Window System</A> installed, then you can follow these instructions to
+install Unix UCBLogo.  Alternatively, you can run the Mac Classic version
+described next.
+
+<P><H2>Berkeley Logo for the Macintosh</H2>
+
+<P>There are two ways to run Logo on the Mac.  There is a Mac-specific version
+for Classic Macs (which will also run in the Classic Environment under OS X).
+Alternatively, you can run the Unix version under OS X, provided that
+you've installed the X Window System.  This section describes the Classic
+version; the previous section describes the Unix version.
+
+<P>Your Web browser probably knows how to expand and install the archive
+by itself; if not, you need something like StuffIt to do the job.  The
+result of the expansion will be a folder containing the <CODE>ucblogo</CODE>
+executable along with needed library files.  You can move this folder to
+anyplace convenient.
+
+<P>Command-period means stop; command-comma means pause.
+
+<P>On the Mac, Berkeley Logo includes a very simple-minded editor built into
+Logo itself.  It works in the usual Macintosh way; when you have finished
+editing, you can select &quot;accept editor changes&quot; or &quot;cancel editor
+changes&quot; from the <CODE>Edit</CODE> menu.
+
+<P>Macintosh users will find the Berkeley Logo user interface disconcerting,
+because it was designed to be Logo-like rather than Macintosh-like.  For
+example, you should use the Logo commands <CODE>splitscreen</CODE>, <CODE>
+fullscreen</CODE>, and <CODE>textscreen</CODE> to rearrange Logo's text and graphics
+windows, rather than trying to resize them with the mouse, although the latter
+will work, too.
+
+<P><H2>Berkeley Logo for Windows</H2>
+
+<P>The Windows version of Berkeley Logo is called <CODE>ucbwlogo.exe</CODE>.
+The file you download is an installer that should be self-explanatory.
+Like the DOS version, it uses a separate editor of your choice.  The
+default editor is <CODE>jove</CODE>, which is included in the distribution.
+
+<P>There is an offshoot of
+Berkeley Logo called
+<A HREF="http://www.softronix.com/logo.html">MSWLogo</A>, written
+by George Mills, specifically
+for Windows.  It has a more point-and-click style interface, and doesn't
+work well with those projects that make heavy use of reading from the
+keyboard or controlling the position of text on the screen; the Solitaire
+and Cryptographer's Helper projects in Volume 2 and the finite state
+machine simulator in Volume 3 are most problematic.  But for general
+use, MSWLogo is a good option for Windows users.
+
+<P><H2>Berkeley Logo for DOS</H2>
+
+<P>The DOS version is in the form of a self-extracting <CODE>pkzip</CODE> archive.
+Run <CODE>blogo.exe</CODE> ; it will create two files, <CODE>install.bat</CODE>
+and <CODE>installu.exe</CODE>.  Then
+run <CODE>install</CODE> to create a <CODE>c:\ucblogo</CODE> directory with the complete
+distribution.  If you want to install
+Logo somewhere other than <CODE>c:\ucblogo</CODE>, you can say 
+
+<P><PRE>installu -d d:\foo\</PRE>
+
+<P>to put it in <CODE>d:\foo\ucblogo</CODE>.  <EM>Don't forget the <CODE>-d</CODE>
+part!</EM>
+
+<P>Berkeley Logo is provided in two executable versions:
+
+<TABLE cellpadding="5">
+<TR><TD valign="top"><CODE>ucblogo.exe</CODE>
+<TD><TD> runs on 286-and-up processors, and uses extended memory
+if you have it, so you can run large Logo programs.
+<TR><TD valign="top"><CODE>bl.exe</CODE>
+<TD><TD> runs on any PC, but is limited to 640K.  That's not big
+enough for some of the larger projects in the later volumes.
+</TABLE>
+
+<P>In order to run <CODE>ucblogo.exe</CODE> you must have the file
+<CODE>zpm.exe</CODE> (which is provided) in your DOS path.  <CODE>Zpm</CODE>
+has to figure out what kind of extended memory interface you have, and in some
+cases it needs help.  You must use the DOS command
+
+<P><TABLE>
+<TR><TD><CODE>set DOS16M=1</CODE><TD>&nbsp;&nbsp;&nbsp; for NEC 98-series
+<TR><TD><CODE>set DOS16M=5</CODE><TD>&nbsp;&nbsp;&nbsp; for Fujitsu FMR-60 or 70
+<TR><TD><CODE>set DOS16M=6</CODE><TD>&nbsp;&nbsp;&nbsp; for AT&amp;T 6300 Plus
+<TR><TD><CODE>set DOS16M=7</CODE><TD>&nbsp;&nbsp;&nbsp; for old Phoenix BIOS versions
+<TR><TD><CODE>set DOS16M=13</CODE><TD>&nbsp;&nbsp;&nbsp; for Zenith Z-24X with old BIOS
+<TR><TD><CODE>set DOS16M=INBOARD</CODE><TD>&nbsp;&nbsp;&nbsp; for 386 with Intel Inboard
+</TABLE>
+
+<P>Even if UCBLOGO runs correctly for you without any of these settings (which
+will be the case for most machines) you might try
+<CODE>set DOS16M=10</CODE> for faster performance on some systems
+but slower on others -- experiment.
+
+<P><CODE>Ucblogo</CODE> and <CODE>bl</CODE> also usually figure out correctly what kind of
+graphics board you have.  But for some obscure clones with nonstandard
+graphics you might have to tell it which graphics mode to use.  This is also
+done with a DOS command:
+
+<P><PRE>set FG_DISPLAY=<EM>xxxx</EM>
+</PRE>
+
+<P>where <CODE><EM>xxxx</EM></CODE> is the board type and mode, one of
+the following:
+
+<P><PRE>CGAHIRES, CGAMEDRES, EGACOLOR, EGAECD, EGAMONO, EGALOWRES,
+HERC, ORCHIDPROHIRE, PARADISEHIRES, TOSHIBA, TRIDENTHIRES,
+VEGAVGAHIRES, VESA6A, VESA2, VGA11, VGA12, VGA13, 8514A
+</PRE>
+
+<P>I don't know anything about any of these except that <CODE>TOSHIBA</CODE> is for a
+T3100 and doesn't work on my T1200XE.  I use <CODE>VGA12</CODE> on my generic clone.
+
+<P>There are some graphics modes that will work with <CODE>bl</CODE> but not with
+<CODE>ucblogo</CODE>, including <CODE>VESA1</CODE> for 256 colors of 640x480.
+
+<P>Finally, note that Logo writes directly to the screen and is therefore
+incompatible with &quot;screen accelerator&quot; TSRs.  (For example, my PC comes
+with one called <CODE>pckscrn</CODE> and I had to turn it off before running Logo.)
+The file <CODE>ucl.bat</CODE> is a sample batch file that I use to disable the screen
+accelerator, run Logo, then re-enable it.  If you have a different
+screen accelerator you'll need different commands, of course, but the
+idea is the same.
+
+<P>Ctrl-break or ctrl-Q means stop, ctrl-W means pause.
+
+<P>The Logo <CODE>edit</CODE> command runs a separate editor, starting that editor with
+a file containing your selected procedures.  Logo will use whatever
+editor you want, if there is an <CODE>EDITOR</CODE> variable in your DOS environment.
+By default, Logo uses Jove, a version of EMACS, which is provided with Logo.
+This version of Jove is set up so that typing ctrl-C will save the file
+and return to Logo.  You need to put
+
+<P><PRE>SET JOVERC=C:\UCBLOGO\JOVE\JOVE.RC
+SET DESCRIBE=C:\UCBLOGO\JOVE\CMDS.DOC
+</PRE>
+
+<P>in your <CODE>autoexec.bat</CODE> or something so that Jove will start up right.
+<CODE>Cmds.doc</CODE> is the Jove reference manual, used for its online help.
+
+<P>You also need
+
+<P><PRE>SET LOGOLIB=C:\UCBLOGO\LOGOLIB\
+</PRE>
+
+<P>(yes, ending with backslash) in your autoexec.bat so that Logo can
+find its library files.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v1ch15/v1ch15.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appendix-gpl.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch2/annotated.gif b/js/games/nluqo.github.io/~bh/v1ch2/annotated.gif
new file mode 100644
index 0000000..f201653
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/annotated.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch2/badparens.gif b/js/games/nluqo.github.io/~bh/v1ch2/badparens.gif
new file mode 100644
index 0000000..a2f6e66
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/badparens.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch2/blackbirds.gif b/js/games/nluqo.github.io/~bh/v1ch2/blackbirds.gif
new file mode 100644
index 0000000..4efd961
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/blackbirds.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch2/cheap-tree.gif b/js/games/nluqo.github.io/~bh/v1ch2/cheap-tree.gif
new file mode 100644
index 0000000..c9a3f56
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/cheap-tree.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch2/okparens.gif b/js/games/nluqo.github.io/~bh/v1ch2/okparens.gif
new file mode 100644
index 0000000..d014eb3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/okparens.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch2/proced.html b/js/games/nluqo.github.io/~bh/v1ch2/proced.html
new file mode 100644
index 0000000..07a3f98
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/proced.html
@@ -0,0 +1,1298 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 2: Procedures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch02.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch1/v1ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch3/v1ch3.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Logo is one of the most powerful programming languages around.
+In order to take advantage of that power, you must understand
+Logo's central ideas: <EM>procedures</EM> and <EM>evaluation.</EM>
+It is with these ideas that our exploration of Logo programming begins.
+
+<P><H2>Procedures and Instructions</H2>
+
+<P>
+In response to Logo's question-mark prompt, type this instruction:
+
+<P><PRE>print 17
+</PRE>
+
+<P>Logo will respond to this instruction by printing the number
+17 and then printing another question mark, to indicate that it's
+ready for another instruction:
+
+<P><PRE>? <U>print 17</U>
+17
+</PRE>
+
+<P>(Remember, the <CODE><U>underlined</U></CODE> things are the ones <EM>
+you</EM> should type; what's <CODE>not underlined</CODE> is what the computer prints.)
+
+<P>This instruction doesn't do much, but it's important to understand how it's
+put together.  The word <CODE>print</CODE> is the name of a <EM>procedure,</EM>
+which is a piece of a computer program that has a particular specialized
+task.  The procedure named <CODE>print</CODE>, for example, has the task of printing
+things on your screen.
+
+<P>If you have previously used some other programming language, you may
+be accustomed to the idea of different <EM>statement types</EM> making
+up the repertoire of the language.  For example, BASIC has a <CODE>print</CODE>
+statement, a <CODE>let</CODE> statement, an <CODE>input</CODE> statement, etc.  Pascal
+has an assignment
+statement, an <CODE>if</CODE> statement, a <CODE>while</CODE> statement, etc.  Each
+kind of statement has its own <EM>syntax,</EM> that is, its own special
+punctuation and organization.  Logo is very different.  It does not
+have different kinds of instructions; <EM>everything</EM> in Logo is
+done by the use of procedures.  If Logo is your first programming
+language, you don't have to worry about this.  But for people with
+previous experience in another language, it's a common source of misunderstanding.
+
+<P>When you first start up Logo, it &quot;knows&quot; about 200 procedures.  These
+initial procedures are called <EM>primitive</EM> procedures.  Your task
+as a Logo programmer is to add to Logo's repertoire by defining new
+procedures of your own.  You do this by putting together procedures that
+already exist.  We'll see how this is done later in this chapter.
+
+<P>The procedure <CODE>print</CODE>, although it has a specific task, doesn't always
+do <EM>exactly</EM> the same thing; it can print anything you want, not
+always the number 17.  (You've seen several examples in Chapter 1.)
+This may seem like an obvious point, but later you will see that the
+<EM>flexibility</EM> of procedures is an important part of what makes
+them so powerful.  To control this flexibility, we need a way to tell
+a procedure exactly what we want it to do.  Therefore, each procedure
+can accept a particular number of <EM>inputs.</EM>  An input is a piece
+of information.  It can be a number, as in the example we're examining,
+but there are many other kinds of information that Logo procedures
+can handle.  The procedure named <CODE>print</CODE> requires one input.  Other
+procedures will require different numbers of inputs; some don't require
+any.
+
+<H2>Technical Terms</H2>
+
+<P>In ordinary conversation, words such as <EM>instruction</EM> and <EM>
+procedure</EM> have pretty much the same meaning--they refer to any
+process, recipe, or method for carrying out some task.  That's not the
+situation when we're talking about computer programming.  Each of
+these words has a specific technical meaning, and it's very important
+for you to keep them straight in your head while you're reading this
+chapter.  (Soon we'll start using more words, such as <EM>command</EM> and
+<EM>operation,</EM> which also have similar meanings in ordinary use but
+very different meanings for us.)
+
+<P>An <EM>instruction</EM> is what you type to Logo to
+tell it to do something.  <CODE>Print 17</CODE> is an example of an
+instruction.  We're about to see some more complicated instructions,
+made up of more pieces.  An instruction has to contain enough
+information to specify <EM>exactly</EM> what you want Logo to do.  To
+make an analogy with instructing human beings, &quot;Read Chapter 2 of
+this book&quot; is an instruction, but &quot;read&quot; isn't one, because it
+doesn't tell you what to read.
+
+<P>A <EM>procedure</EM> is like a recipe or a technique for carrying out a
+certain kind of task.  <CODE>Print</CODE> is the name of a procedure just as
+&quot;lemon meringue pie&quot; is the name of a recipe.  (The recipe itself,
+as distinct from its name, is a bunch of instructions, such as &quot;Preheat
+the oven to 325 degrees.&quot;) A procedure contains information about how
+to do something, but the procedure doesn't take action itself, just as
+a recipe in a book can't bake a pie by itself.  Someone has to carry
+out the recipe.  In the Logo world something has to <EM>invoke</EM> a
+procedure.  To &quot;invoke&quot; a procedure means to carry it out, to do
+what the procedure says.  Procedures are invoked by instructions.  The
+instruction you gave just now invoked the procedure named <CODE>print</CODE>.
+
+<P>If an instruction is made up of names of procedures, and if the procedures
+invoked by the instruction are made up of more instructions, why doesn't the
+computer get caught in a vicious circle, always finding more detailed
+procedures to invoke and never actually doing anything?  This question is a
+lot like the one about dictionaries: When you look up the definition of a
+word, all you find is more words.  How do you know what <EM>those</EM> words
+mean?  For words in the dictionary this turns out to be a very profound and
+difficult question.  For Logo programming the answer is much simpler.  In
+the end, your instructions and the procedures they invoke must be defined in
+terms of the primitive procedures.  Those procedures are not made up of Logo
+instructions.  They're the things that Logo just knows how to do in the
+first place.
+
+<P>
+<H2>Evaluation</H2>
+
+<P>Now try this instruction:
+
+<P><PRE>print sum 2 3
+</PRE>
+
+<P>If everything is going according to plan, Logo didn't print
+the words &quot;<CODE>sum 2 3</CODE>&quot;; it printed the number 5.  The input to
+<CODE>print</CODE> was the expression <CODE>sum 2 3</CODE>, but Logo <EM>
+evaluated</EM> the input before passing it to the <CODE>print</CODE> procedure.
+This means that Logo invoked the necessary procedures (in this case,
+<CODE>sum</CODE>) to compute the value of the expression (5).
+
+<P>In this instruction the word <CODE>sum</CODE> is also the name of a procedure.
+<CODE>Sum</CODE> requires two inputs.  In this case we gave it the numbers 2 and
+3 as inputs.  Just as the task of procedure <CODE>print</CODE> is to print something,
+the task of procedure <CODE>sum</CODE> is to add two numbers.  It is the result
+of this addition, the <EM>output</EM> from <CODE>sum</CODE>, that becomes the
+<EM>input</EM> to <CODE>print</CODE>.
+
+<P>Don't confuse <EM>output</EM> with <EM>printing.</EM>  In Logo the word
+&quot;output&quot; is one of those technical terms I mentioned before.  It
+refers to a value that one procedure computes and hands on to another
+procedure that needs an input.  In this example <CODE>sum</CODE> outputs the
+number 5 to <CODE>print</CODE>, but <CODE>print</CODE> doesn't output anything
+to
+another procedure.  When <CODE>print</CODE> prints the 5, that's the end of
+the story.  There are no more procedures waiting for inputs.
+
+<P>See if you can figure out what this instruction will do before you
+try it:
+
+<P><PRE>print sum 4 product 10 2
+</PRE>
+
+<P>Here are the steps Logo takes to evaluate the instruction:
+ 
+
+
+
+<P><OL><LI>The first thing in the instruction is the name of the procedure
+<CODE>print</CODE>.  Logo knows that <CODE>print</CODE> requires one input, so it continues
+reading the instruction line.
+
+<P><LI>The next thing Logo finds is the word <CODE>sum</CODE>.  This, too, is the
+name of a procedure.  This tells Logo that the <EM>output</EM> from
+<CODE>sum</CODE> will be the <EM>input</EM> to <CODE>print</CODE>.
+
+<P>
+<LI>Logo knows that <CODE>sum</CODE> takes two inputs, so
+<CODE>sum</CODE> can't be invoked until Logo finds <CODE>sum</CODE>'s inputs.
+
+<P><LI>The next thing in the instruction is the number 4, so that must be
+the first input to <CODE>sum</CODE>.  This input, too, must be evaluated.
+Fortunately, a number simply evaluates to itself, so the value of this
+input is 4.
+
+<P><LI>Logo still needs to find the second input to <CODE>sum</CODE>.  The next thing
+in the instruction is the word <CODE>product</CODE>.  This is, again, the name
+of a procedure.  Logo must carry out that procedure to evaluate <CODE>sum</CODE>'s
+second input.
+
+<P><LI>Logo knows that <CODE>product</CODE> requires two inputs.  It must now look
+for the first of those inputs.  (Meanwhile, <CODE>print</CODE> and <CODE>sum</CODE> are both
+&quot;on hold&quot; waiting for their inputs to be evaluated.  <CODE>print</CODE> is waiting
+for its single input; <CODE>sum</CODE>, which has found one input, is waiting for
+its second.)  The next thing on the line is the number 10.  This number
+evaluates to itself, so the first input to <CODE>product</CODE> is 10.
+
+<P><LI>Logo still needs another input for <CODE>product</CODE>, so it continues reading
+the instruction.  The next thing it finds is the number 2.  This
+number evaluates to itself, so the second input to <CODE>product</CODE> has the
+value 2.
+
+<P><LI>Logo is now ready to invoke the procedure <CODE>product</CODE>, with inputs
+10 and 2.  The output from <CODE>product</CODE> is 10 times 2, or 20.
+
+<P><LI>This output, 20, is the value of the second input to <CODE>sum</CODE>.  Logo
+is now ready to invoke <CODE>sum</CODE>, with inputs 4 and 20.  The output
+from <CODE>sum</CODE> is 24.
+
+<P><LI>The output from <CODE>sum</CODE>, 24, is the input to <CODE>print</CODE>.  Logo is now
+ready to invoke <CODE>print</CODE>, which prints 24.  (You were only waiting
+for this moment to arise.)
+
+<P></OL>
+
+
+<P>That's a lot of talking about a pretty simple instruction!  I promise
+not to do it again in quite so much detail.  It's important, though,
+to be able to call upon your understanding of these details to figure
+out more complicated situations later.  Using the output from one procedure
+as an input to another procedure is called <EM>composition
+of functions.</EM>
+
+<P>Some people find it helpful to look at a pictorial form of this analysis.
+We can represent each procedure as a kind of tank, with input hoppers
+on top and perhaps an output pipe at the bottom.  (This organization
+makes sense because gravity will pull the information downward.)
+For example:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch2/machines.gif" ALT="figure: machines"></CENTER>
+
+<P><CODE>Print</CODE> has one input, which is represented by the hopper above
+the tank.  It doesn't have an output, so there is no pipe coming out
+the bottom.  <CODE>Sum</CODE> has two inputs, shown at the top, and an output,
+shown at the bottom.
+
+<P>We can put these parts together to form a kind
+of &quot;plumbing diagram&quot;
+of the instruction:
+
+<P><CENTER><IMG SRC="blackbirds.gif" ALT="figure: blackbirds"></CENTER>
+
+<P>In that diagram the output pipes from one procedure are connected
+to the input hoppers of another.  Every pipe must be connected to something.
+The inputs that are explicitly given as numbers in the instruction
+are shown with arrows pointing into the hoppers.
+
+<P>You can annotate the diagram by indicating the actual information
+that flows through each pipe.  Here's how that would look for this
+instruction:
+
+<P><CENTER><IMG SRC="annotated.gif" ALT="figure: annotated"></CENTER>
+
+<P>By the way, I've introduced the procedures <CODE>print</CODE>, <CODE>
+sum</CODE>, and <CODE>product</CODE> so casually that you might think it's a law of
+nature that every programming language must have procedures with these
+names.  Actually the details of Logo's repertoire of primitive
+procedures are quite arbitrary. It would be hard to avoid having a way
+to add numbers, but it might have been named <CODE>plus</CODE> or <CODE>add</CODE>
+instead of <CODE>sum</CODE>.  For some primitives there are additional
+arbitrary details; for noncommutative
+operations such as <CODE>remainder</CODE>, for example, the
+rule about which input comes first was an
+arbitrary choice for Logo's designers.  (&raquo; Experiment with <CODE>
+remainder</CODE> and see if you can describe it well enough that someone
+else can use it without needing to experiment.) I am making a point of
+the arbitrary nature of these details because people who are learning
+to program sometimes think they're doing badly if they don't <EM>
+figure out</EM> how a primitive procedure works in advance.  But these
+rules aren't things you work out; they're things someone has to tell
+you, like the capital of Kansas.
+
+<P>
+<H2>Error Messages</H2>
+
+<P>We've observed that Logo knows in advance how many inputs a particular
+procedure needs.  (<CODE>Print</CODE> needs one; <CODE>sum</CODE> and <CODE>product</CODE>
+each need two.) What if you give a procedure the wrong number of
+inputs?  Try this:
+
+<P><PRE>print
+</PRE>
+
+<P>(That is, the word <CODE>print</CODE> as an instruction all by itself,
+with no input.)  You should see something like this:
+
+<P><PRE>? <U>print</U>
+Not enough inputs to print
+</PRE>
+
+<P>This gentle complaint from Logo tells you two things.  First,
+it indicates the general <EM>kind</EM> of thing that went wrong (not
+enough inputs to some procedure).  Second, it names the <EM>particular</EM>
+procedure that complained (<CODE>print</CODE>).  In this case it was pretty obvious
+which procedure was involved, since we only used one procedure.  But
+try this:
+
+<P><PRE>? <U>print remainder product 4 5</U>
+Not enough inputs to remainder
+</PRE>
+
+<P>In this case Logo's message is helpful in pinpointing the
+fact that it was <CODE>remainder</CODE>, not <CODE>print</CODE> or <CODE>product</CODE>,
+that lacked an input.
+
+<P>The reason I'm beating this error message to death is that one of
+the most common mistakes made by beginning programmers is to ignore
+what an error message says.  Some people get very upset at seeing
+this kind of message and just give up without trying to figure out
+the problem.  Other people make the opposite mistake, breezing past
+the message without taking advantage of the detailed help it offers.
+Some smart people at M.I.T. put a lot of effort into designing Logo's
+error messages, so please pay attention to them.
+
+<P>What if you give a procedure too many inputs?  Try this:
+
+<P><PRE>? <U>print 2 3</U>
+2
+You don't say what to do with 3
+</PRE>
+
+<P>(The exact text of the message, by the way, may be slightly
+different in some versions of Logo.)  What happened here is that Logo
+carried out the instruction <CODE>print 2</CODE>, and then found the extra
+number <CODE>3</CODE> on the line.  It would have been okay if we'd done
+something with the 3:
+
+<P><PRE>? <U>print 2 print 3</U>
+2
+3
+</PRE>
+
+<P>It's okay to have more than one instruction on the same
+line, as long as they are complete instructions.
+
+<P><H2>Commands and Operations</H2>
+
+<P>What's a &quot;complete instruction&quot;?  Before I can answer that question,
+you have to understand that in Logo there are two kinds of procedures:
+commands and operations.
+
+<P>An <EM>operation</EM> is a procedure that computes a value and outputs
+it.  <CODE>Sum</CODE> and <CODE>product</CODE> are operations, for example.
+
+<P>A <EM>command</EM> is a procedure that does <EM>not</EM> output a value
+but instead has some <EM>effect</EM> such as
+printing something on the screen,
+moving a turtle, or making a sound.  <CODE>Print</CODE>, then, is a command.  Some
+commands have effects that are not apparent on the outside but instead
+change something inside the computer that might become important
+later in the program.
+
+<P>A complete instruction consists of the name of a command, followed by
+as many expressions as necessary to provide its inputs.  An <EM>
+expression</EM> is something like <CODE>sum 3 2</CODE> or <CODE>17</CODE>.
+Operations are used to construct expressions.  More formally, an
+expression is one of two things: either an explicitly provided value
+such as a number, or else the name of an operation, followed by as many
+expressions as necessary to provide its inputs.  For example, the
+expression <CODE>sum 3 2</CODE> consists of the operation name <CODE>sum</CODE>
+followed by two expressions, the number <CODE>3</CODE> and the number <CODE>
+2</CODE>.  Numbers are the only values we've seen how to provide
+explicitly, but that's about to change.
+
+<P><H2>Words and Lists</H2>
+
+<P>So far, our examples have been about numbers and arithmetic.  Many
+people think that computers just do arithmetic, but actually it's
+much more interesting to use computers with other kinds of information.
+You've seen examples of text processing in Chapter 1, but this time
+we're going to do it <EM>carefully!</EM>
+
+<P>Suppose you want Logo to print the word
+<CODE>Hello</CODE>.  You might try this:
+
+<P><PRE>? <U>print Hello</U>
+I don't know how  to Hello
+</PRE>
+
+<P>Logo interpreted the word <CODE>Hello</CODE> as the name of a procedure,
+just as in the examples with <CODE>print sum</CODE> earlier.  The error message
+means that there is no procedure named <CODE>hello</CODE> in Logo's repertoire.
+
+<P>
+When Logo is evaluating instructions, it always interprets unadorned
+words such as <CODE>print</CODE> or <CODE>sum</CODE> or <CODE>hello</CODE> as names of
+procedures.  In order to convince Logo to treat a word simply as
+itself, you must type a quotation mark (<CODE>&quot;</CODE>) in front of it:
+
+
+<P><PRE>? <U>print &quot;Hello</U>
+Hello
+</PRE>
+
+<P>
+Here is why the quotation mark is used for this purpose
+in Logo:  In computer science, to <EM>quote</EM> something means <EM>
+to prevent it from being evaluated.</EM>  (Another way to say the same
+thing is that <EM>the thing evaluates to itself</EM> or that its value
+<EM>after</EM> evaluation is the same as what it is <EM>before</EM> evaluation.)
+For example, we have already seen that in Logo, numbers
+are automatically
+quoted.  (It doesn't hurt to use the quotation mark with numbers,
+however.
+
+<P><PRE>? <U>print sum &quot;2 &quot;3</U>
+5
+</PRE>
+
+<P>Logo is perfectly happy to add the quote-marked numbers.)
+
+
+<P>(People who have programmed in some other language should note that
+quotation marks are not used in pairs in Logo.  This is not just an
+arbitrary syntactic foible; it reflects the fact that a Logo <EM>
+word</EM> is a different idea from what would be called
+a <EM>character string</EM> in other
+languages.  I urge you not only to program in Logo
+but even to think in Logo terminology.)
+
+<P>What if you want to print more than one word?  You can combine several
+words to form a <EM>list.</EM>  The easiest way to do this is to enclose
+the words in square brackets, which tells Logo to quote the list.
+That is, a list in brackets evaluates to the list itself:
+
+<P><PRE>? <U>print [How are you?]</U>
+How are you?
+</PRE>
+
+<P>(If square brackets quote a list, what does it mean to evaluate
+a list?  Well, every instruction line you type to Logo is actually
+a list, which is evaluated by invoking the procedures it names.  Most
+of the time you don't have to remember that an instruction is a list,
+but that fact will become very useful later on.)
+
+<P>The list in the example above contains three <EM>members.</EM>  In this
+example each member is a word.  For example, the first member is the word <CODE>
+How</CODE>.  But the members of a list aren't required to be words; they can
+also be lists.  The fact that a list can have another list as a member
+makes lists very flexible as a way of grouping information.  For
+example, the list
+
+<P><PRE>[[cherry vanilla] mango [root beer swirl]]
+</PRE>
+
+<P>contains three members.  The first and third members are
+themselves lists, while the second member is the word <CODE>mango</CODE>.  A
+list like this can be represented using a <EM>tree diagram:</EM>
+
+<P>
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch2/icecream.gif" ALT="figure: icecream"></CENTER>
+
+<P>This diagram has the name &quot;tree&quot; because it resembles an
+upside-down tree, with a trunk at the top and branches extending
+downward.  Often a tree diagram is drawn with only the <EM>leaves</EM>
+labeled--the words that make up the smallest sublists:
+
+<P><CENTER><IMG SRC="cheap-tree.gif" ALT="figure: cheap-tree"></CENTER>
+
+
+<P>Keep in mind that the square brackets in Logo serve two purposes at
+once: they <EM>delimit</EM> a list--that is, they show where the list
+begins and ends--and they also <EM>quote</EM> the list, so that Logo's
+evaluator interprets the list as representing itself and not as requesting
+the invocation of procedures.  The brackets surround the list; they
+are not <EM>part of</EM> the list.  (Similarly, the quotation mark that
+indicates a quoted word is not part of the word.)
+
+<P>Words and lists are the two kinds of information that Logo can process.
+(Numbers are a special case of words.)  The name I'll use for &quot;either
+a word or a list&quot; is a <EM>datum.</EM><SUP>*</SUP>  A list of words, such as
+<CODE>[How are you?]</CODE>, is called a <EM>sentence</EM>
+or a <EM>flat list.</EM>  (It's called &quot;flat&quot; because the tree
+diagram only has one level, not counting the &quot;root&quot; at the top.)
+The name &quot;sentence&quot; is meant to suggest that flat lists are often,
+although not always, used to represent English sentences.  A sentence
+is a special kind of list, just as a number is a special kind of word.
+We'll see other kinds of lists later.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Later we'll use a
+third kind of datum, called an &quot;array.&quot;</SMALL></BLOCKQUOTE></SMALL><P>
+<H2>How to Describe a Procedure</H2>
+
+<P>My high school U.S. history teacher was very fussy about what he considered
+the proper way to color in outline maps.  He would make us do them
+over if we used colors or shading techniques he didn't like.  We humored
+him because he was a very good teacher in other ways; for example,
+he gave us original historical documents to read instead of boring
+textbooks.
+
+<P>I hope you will humor me when I tell you that there is a right way and a
+wrong way to talk about procedures.  If I were teaching you in person, I'd
+be very understanding about mistakes in your <EM>programs,</EM> but I'd hit
+you over the head (gently, of course) if you were sloppy about your <EM>
+descriptions.</EM>
+
+<P>Here is an example of the wrong way: &quot;<CODE>Sum</CODE> adds up two numbers.&quot;
+It's not that this description isn't true but that it's inadequate.
+It leaves out too much.
+
+<P>Here is an example of the right way: &quot;<CODE>Sum</CODE> is an operation. 
+It has two inputs.  Both inputs must be numbers.  The output from
+<CODE>sum</CODE> is a number, the result of adding the two inputs.&quot;
+
+<P>Here are the ingredients in the right way:
+
+<P> 
+
+
+<OL><LI>  Command or operation?
+
+<P><LI>  How many inputs?
+
+<P><LI>  What <EM>type</EM> of datum must each input be?
+
+<P><LI>  If the procedure is an operation, what is its <EM>output?</EM>  If
+a command, what is its <EM>effect?</EM>
+
+<P></OL>
+
+
+<P>Another example:  &quot;The command <CODE>print</CODE> has one input.  The input
+can be any datum.  The effect of <CODE>print</CODE> is to print the input datum
+on the screen.&quot;
+
+<P><H2>Manipulating Words and Lists</H2>
+
+<P>Logo provides several primitive operations for taking data apart
+and putting data together.  Words come apart into <EM>
+characters,</EM>
+such as letters or digits or punctuation marks.  (A character is not
+a third kind of datum.  It's just a word that happens to be one character
+long.)  Lists come apart into whatever data are the <EM>members</EM>
+of the list.  A sentence, which is a list of words, comes apart into
+words.
+
+<P><CODE>First</CODE> is an operation that takes one input.  The input can be any
+nonempty datum.  (In a moment you'll see what an empty datum is.)
+The output from <CODE>first</CODE> is the first member of the input if the input
+is a list, or the first character if the input is a word.  Try these
+examples:
+
+<P><PRE>? <U>print first &quot;Hello</U>
+H
+? <U>print first [How are you?]</U>
+How
+</PRE>
+
+<P><CODE>Butfirst</CODE> is also an operation that takes one input.  The input can
+be any nonempty datum.  The output from <CODE>butfirst</CODE> is a list containing
+all but the first member of the input if the input is a list, or
+a word containing all but the first character of the input if it's
+a word:
+
+<P><PRE>? <U>print butfirst &quot;Hello</U>
+ello
+? <U>print butfirst [How are you?]</U>
+are you?
+</PRE>
+
+<P>Notice that the <CODE>first</CODE> of a list can be a word, but the <CODE>butfirst</CODE> of
+any datum is always another datum of the same type.  Also notice
+what happens when you take the <CODE>butfirst</CODE> of a datum with only one
+thing in it:
+
+<P><PRE>? <U>print butfirst &quot;A</U>
+
+? <U>print butfirst [Hello]</U>
+
+?
+</PRE>
+
+<P>In each case Logo printed a blank line.  In the first case
+that blank line represents an empty word, a word
+with no characters
+in it.  The second blank line represents an empty list, a list
+with no members.  You can indicate the empty word in an instruction
+by using a quotation mark with a space (or the RETURN key to end the
+instruction) after it.  To indicate an empty list, use brackets with
+nothing inside them:
+
+<P><PRE>? <U>print &quot; print []</U>
+ 
+ 
+?
+</PRE>
+
+<P>Do you understand why it doesn't make sense to use the empty
+word or the empty list as input to <CODE>first</CODE> or <CODE>butfirst</CODE>?  Try it and
+see what happens.
+
+<P>You should also notice that the list <CODE>[Hello]</CODE> is not the same as the
+word <CODE>&quot;Hello</CODE>.  They look the same when you print them, but they
+act differently when you take their <CODE>first</CODE> or <CODE>butfirst</CODE>.
+
+<P>There are also primitive operations <CODE>last</CODE> and <CODE>butlast</CODE>.  I'm
+sure you'll have no trouble guessing what they do.  Try them out, then
+practice describing them properly.
+
+<P>This is probably a good place to mention that there are <EM>
+abbreviations</EM> for some Logo primitive procedures.  For
+example, <CODE>bf</CODE> is an abbreviation for <CODE>butfirst</CODE>.  <CODE>Pr</CODE> is an
+abbreviation for <CODE>print</CODE>.  There isn't any abbreviation for <CODE>
+first</CODE>.
+
+<P>If you want to extract a piece of a word or list that isn't at the beginning
+or end, you can use the more general operation <CODE>item</CODE> with two
+inputs: a positive integer to indicate which member to select, and a word
+or list.  For example:
+
+<P><PRE>? <U>print item 3 &quot;Yesterday</U>
+s
+? <U>print item 2 [Good Day Sunshine]</U>
+Day
+</PRE>
+
+<P><CODE>First</CODE>, <CODE>last</CODE>, <CODE>butfirst</CODE>, <CODE>butlast</CODE>, and <CODE>item</CODE> are
+taking-apart operations, or <EM>selectors.</EM>  Logo also provides
+putting-together operations, or <EM>constructors.</EM>
+
+<P><CODE>Sentence</CODE> is a constructor.  It takes two inputs, which can be any
+data at all.  Its output is always a list.
+
+<P>Describing the output from <CODE>sentence</CODE> is a little tricky because the
+same procedure serves two different purposes.  The first purpose is the one
+suggested by its name: constructing sentences.  If you use only words and
+sentences (flat lists) as inputs, then the output from <CODE>sentence</CODE> is a
+sentence concatenating (stringing together) the words contained in the
+inputs.  Here are some examples:
+
+<P><PRE>? <U>print sentence &quot;hello &quot;goodbye</U>
+hello goodbye
+? <U>print sentence [this is] [a test]</U>
+this is a test
+? <U>print sentence &quot;this [is one too]</U>
+this is one too
+? <U>print sentence [] [list of words]</U>
+list of words
+</PRE>
+
+<P>On the other hand, <CODE>sentence</CODE> can also be used to append two
+lists (flat or not).  With lists as inputs, the output from <CODE>sentence</CODE>
+is a list in which the <EM>members</EM> of the first input and the <EM>
+members</EM> of the second input are concatenated:
+
+<P><PRE>? <U>print sentence [[list 1a] [list 1b]] [[list 2a] [list 2b]]</U>
+[list 1a] [list 1b] [list 2a] [list 2b]
+? <U>print sentence [flat list] [[not flat] [list]]</U>
+flat list [not flat] [list]
+</PRE>
+
+<P>In the second example the output is a list with four
+members: two words and two lists.
+
+<P>Using a word as input to <CODE>sentence</CODE> is equivalent to using a list with
+that word as its single member.  <CODE>Sentence</CODE> is the only primitive
+operation that treats words the same
+as single-word lists; you've seen from the earlier examples that <CODE>first</CODE>
+and <CODE>butfirst</CODE> treat the word <CODE>hello</CODE> and the list <CODE>[hello]</CODE>
+differently.
+
+<P>Another constructor for lists is <CODE>list</CODE>.  Its inputs can be any data;
+its output is a list whose members are the inputs--not the members of the
+inputs, as for <CODE>sentence</CODE>.
+
+<P><PRE>? <U>print list [this is] [a test]</U>
+[this is] [a test]
+? <U>print list &quot;this [is one too]</U>
+this [is one too]
+? <U>print list [] [list of words]</U>
+[] [list of words]
+</PRE>
+
+<P><CODE>Word</CODE> is an operation that takes two inputs.  Both inputs must be words.
+(They may be the empty word.)  The output from <CODE>word</CODE> is a word formed
+by concatenating the characters in the input
+words:
+
+<P><PRE>? <U>print word &quot;hello &quot;goodbye</U>
+hellogoodbye
+? <U>print word &quot;now &quot;here</U>
+nowhere
+? <U>print word &quot;this [is a test]</U>
+word doesn't like [is a test] as input
+</PRE>
+
+<P>Selectors and constructors can be composed, in the same way we composed <CODE>
+sum</CODE> and <CODE>product</CODE> earlier.  See if you can work out what this example
+will do before you try it with the computer:<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The tilde (<CODE>~</CODE>) at
+the end of the first line is the notation used by Berkeley Logo to indicate
+that this and the following line should be understood as a single, long
+instruction line.  It's somewhat analogous to the way a hyphen (-) is used
+in English text when a single word must be split between two lines.
+Berkeley Logo will also continue an instruction to the next line if a line
+ends inside parentheses or brackets, so another way to indicate a long
+instruction line is to enclose the entire instruction in parentheses, like
+this:
+
+<P><PRE>(print word word last &quot;awful first butfirst &quot;computer ~
+   first [go to the store, please.])
+</PRE>
+
+<P>Other Logo dialects have other rules for line continuation.
+(In some dialects everything you type is automatically taken as one big
+line, so you don't have to think about this.)  In the book, I'll indent
+continuation lines, as above, to make it quite clear that they are meant
+to be part of the same instruction as the line above.  But Logo doesn't pay
+attention to the indentation.</SMALL></BLOCKQUOTE></SMALL><P><PRE>print word word last &quot;awful first butfirst &quot;computer 
+   first [go to the store, please.]
+</PRE>
+
+<P>Here is how I'd analyze it.
+ 
+
+
+The input to <CODE>print</CODE> is the output from <CODE>word</CODE>.
+
+<P>The first input to <CODE>word</CODE> is the output from <CODE>word</CODE>.
+
+<P>The first input to (the second) <CODE>word</CODE> is the output from <CODE>last</CODE>.
+
+<P>The input to <CODE>last</CODE> is the quoted word <CODE>awful</CODE>.
+
+<P>The output from <CODE>last</CODE> is the word <CODE>l</CODE>, which becomes the first input
+to the second <CODE>word</CODE>.
+
+<P>The second input to the second <CODE>word</CODE> is the output from <CODE>first</CODE>.
+
+<P>The input to <CODE>first</CODE> is the output from <CODE>butfirst</CODE>.
+
+<P>The input to <CODE>butfirst</CODE> is the quoted word <CODE>computer</CODE>.
+
+<P>The output from <CODE>butfirst</CODE> is the word <CODE>omputer</CODE>, which
+becomes the input to <CODE>first</CODE>.
+
+<P>The output from <CODE>first</CODE> is the word <CODE>o</CODE>, which becomes the
+second input to the second <CODE>word</CODE>.
+
+<P>The output from the second <CODE>word</CODE> is the word <CODE>lo</CODE>, which becomes the
+first input to the first <CODE>word</CODE>.
+
+<P>The second input to (the first) <CODE>word</CODE> is the output from (the second)
+<CODE>first</CODE>.
+
+<P>The input to <CODE>first</CODE> is the sentence <CODE>[go to the store, please.]</CODE>.
+
+<P>The output from <CODE>first</CODE> is the word <CODE>go</CODE>, which becomes the
+second input to the first <CODE>word</CODE>.
+
+<P>The output from <CODE>word</CODE> is the word <CODE>logo</CODE>, which becomes the input to
+<CODE>print</CODE>.
+
+<P>Finally, <CODE>print</CODE> prints the word <CODE>logo</CODE>.
+
+<P>
+
+
+<P>And here is the plumbing diagram:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch2/logoplumb.gif" ALT="figure: logoplumb"></CENTER>
+
+<P>&raquo;If you made it through that, you should find it easy to predict what
+these instructions will do:
+
+<P><PRE>print butlast &quot;tricky
+print butlast [tricky]
+print se bl &quot;farm bl bl bl &quot;output
+print first butfirst &quot;hello
+print first butfirst [abc def ghi]
+(print word bl &quot;hard word bl bl first [very hard]
+   last first [extremely hard])
+</PRE>
+
+<P>Remember that numbers are words, so you can combine arithmetic operations
+with these word and list operations:
+
+<P><PRE>? <U>print word sum 2 3 product 2 3</U>
+56
+? <U>print sum word 2 3 product 2 3</U>
+29
+? <U>print sentence sum 2 3 word 2 3</U>
+5 23
+</PRE>
+
+<P><CODE>Count</CODE> is an operation that takes one input.  The input can be any
+datum.  The output from <CODE>count</CODE> is a number, indicating the length
+of the input.  If the input is a word, the output is the number of
+characters in the word.  If the input is a list, the output is the
+number of members in the list.
+
+<P><PRE>? <U>print count &quot;hello</U>
+5
+? <U>print count [hello]</U>
+1
+? <U>print count &quot;</U>
+0
+? <U>print count []</U>
+0
+? <U>print word count &quot;hello count &quot;goodbye</U>
+57
+? <U>print sum count &quot;hello count &quot;goodbye</U>
+12
+</PRE>
+
+<P><H2>Print and Show</H2>
+
+<P>Because lists are often used to represent English sentences in
+conversational programs like the <CODE>hi</CODE> procedure of Chapter 1,
+<CODE>print</CODE> prints only the members of a list, without enclosing
+brackets.  This behavior could be confusing if a list contains
+only one member:
+
+<P><PRE>? <U>print [aardvark]</U>
+aardvark
+? <U>print &quot;aardvark</U>
+aardvark
+</PRE>
+
+<P>There is no visible difference between a word and a
+one-word list.  But the two values are actually quite different,
+as we can see if we use them as inputs to <CODE>first</CODE>:
+
+<P><PRE>? <U>print first [aardvark]</U>
+aardvark
+? <U>print first &quot;aardvark</U>
+a
+</PRE>
+
+<P>The <CODE>first</CODE> of a sentence is its first word, even if
+it has only one word, but the <CODE>first</CODE> of a word is its first
+letter.
+
+<P>To help distinguish words from lists, Logo has another printing
+command called <CODE>show</CODE> that displays brackets around lists:
+
+<P><PRE>? <U>show [aardvark]</U>
+[aardvark]
+? <U>show &quot;aardvark</U>
+aardvark
+? <U>show sentence [this is] [an example]</U>
+[this is an example]
+? <U>show list [this is] [an example]</U>
+[[this is] [an example]]
+</PRE>
+
+<P>Use <CODE>print</CODE> if your program wants to carry on a
+conversation with the user in English.  Use <CODE>show</CODE> if you are
+using lists to represent some structure other than a sentence.
+
+<P><H2>Order of Evaluation</H2>
+
+<P>You may hear people say something like this: &quot;Logo evaluates
+from right to left.&quot;  What they mean is that in an instruction such as
+
+<P><PRE>print first butfirst butfirst [print the third word]
+</PRE>
+
+<P>Logo first evaluates
+
+<P><PRE>butfirst [print the third word]
+</PRE>
+
+<P>and next evaluates
+
+<P><PRE>butfirst [the third word]
+</PRE>
+
+<P>and then
+
+<P><PRE>first [third word]
+</PRE>
+
+<P>and finally
+
+<P><PRE>print &quot;third
+</PRE>
+
+<P>
+In other words, the procedures named toward the right end
+of the instruction line must be invoked <EM>before</EM> Logo can know
+the appropriate input values for the procedures farther to the left.
+
+<P>This right-to-left idea can be a useful way of helping you understand
+evaluation in Logo.  But you should realize that it's not quite true.
+It only works out that way if the instruction line contains only one
+instruction and each procedure used in that instruction takes only
+one input.  If you look back at one of the examples in which two-input
+procedures such as <CODE>word</CODE> or <CODE>sum</CODE> are used, you'll see that Logo really
+does read the instruction line from left to right.  And if there are
+two instructions on the same line, the one on the left is evaluated
+first.
+
+<P>The reason for the seeming right-to-left evaluation is that Logo can't
+<EM>finish</EM> evaluating a procedure invocation until it has collected
+and evaluated the inputs to the procedure.  But Logo <EM>starts</EM>
+evaluating an instruction line by looking at the first word on the
+line.  In the example just above, the evaluation of <CODE>first</CODE> and
+<CODE>butfirst</CODE> is <EM>part of</EM> the evaluation of <CODE>print</CODE>.
+
+<P><H2>Special Forms of Evaluation</H2>
+
+<P>So far, the evaluation process
+has been very uniform.  Logo looks at the first word of an instruction
+and interprets that word as the name of a procedure.  Logo knows how
+many inputs each procedure requires.  It then evaluates as many expressions
+as necessary to assign values to those inputs.  The expressions are
+evaluated the same way:  Logo looks at the first word... and so on.
+
+<P>Although this evaluation process is perfectly general, Logo also provides
+a couple of special forms of evaluation to make certain things easier
+to type.  (The computer science terminology for such a special case
+is a &quot;kludge.&quot; The letter &quot;u&quot; in this word is pronounced as
+in &quot;rude,&quot; not as in &quot;sludge.&quot;)
+
+<P>One special case is that Logo provides <EM>infix arithmetic</EM> as well
+as the <EM>prefix arithmetic</EM> we've used so far.  That is, you can
+say
+
+<P><PRE>print 2+3
+</PRE>
+
+<P>instead of
+
+<P><PRE>print sum 2 3
+</PRE>
+
+<P>When you use infix operations, the usual rules of precedence apply:
+multiplications and divisions are done before additions and
+subtractions unless you use parentheses.  In other words, <CODE>2+3*4</CODE>
+(the asterisk represents multiplication) means <CODE>2+(3*4)</CODE>, while
+<CODE>2*3+4</CODE> means <CODE>(2*3)+4</CODE>.  You should take note that this issue
+of precedence doesn't arise when prefix operations are used.  
+
+<P>&raquo;For example, look at these expressions:
+
+<P><PRE>sum 2 product 3 4
+product sum 2 3 4
+sum product 2 3 4
+product 2 sum 3 4
+</PRE>
+
+<P>Each of these indicates precisely what order of operations
+is desired.  The first, for example, is equivalent to <CODE>2+3*4</CODE>.
+Try converting the others to infix form.  Which ones require
+parentheses?
+
+<P>The second special form of evaluation is that certain primitive procedures
+can be given extra inputs, or fewer inputs than usual, by using
+parentheses around the procedure name and all its inputs.  Here are
+some examples:
+
+<P><PRE>? <U>print sum 2 3 4</U>
+5
+You don't say what to do with 4
+? <U>print (sum 2 3 4)</U>
+9
+? <U>show (list &quot;one)</U>
+[one]
+? <U>show (list)</U>
+[]
+</PRE>
+
+<P><CODE>Sum</CODE>, <CODE>product</CODE>, <CODE>word</CODE>, <CODE>list</CODE>,
+<CODE>sentence</CODE>, and <CODE>print</CODE> can be used with any number of inputs.
+
+<P>By the way, it is always permitted to enclose a procedure name and its
+inputs (the correct number of them!) in parentheses, even when it's not
+necessary, to make the instruction more readable.  One of the earlier
+illustrations, for example, might be easier to read in this form:
+
+<P><PRE>print word (word (last &quot;awful) (first butfirst &quot;computer)) ~
+   (first [go to the store, please.])
+</PRE>
+
+<P>Notice that Logo's placement of parentheses is different from the
+function notation used in algebra.  In algebra you say <EM>f</EM>(<EM>x</EM>).  In
+Logo you would express the same idea as <CODE>(f x)</CODE>.
+
+<P><H2>Writing Your Own Procedures</H2>
+
+<P>
+
+With these tools, you are ready to begin writing new procedures. 
+Type this:
+
+<P><PRE>to hello
+</PRE>
+
+<P><CODE>To</CODE> is a command, but it's a very special one.  It's the
+only one that does not evaluate its inputs.  Remember earlier when
+we said
+
+<P><PRE>print Hello
+</PRE>
+
+<P>and Logo complained that it didn't know how to <CODE>Hello</CODE>?
+Well, <CODE>to</CODE> doesn't make that kind of complaint.  Instead it
+prepares to have you <EM>teach it how</EM> <CODE>to hello</CODE>.  (That's why <CODE>
+to</CODE> is called <CODE>to</CODE>!) What you should see on the screen is
+something like this:
+
+<P><PRE>? <U>to hello</U>
+>
+</PRE>
+
+<P>Instead of a question mark, Logo has printed a greater-than
+symbol as the prompt.  This special prompt warns you that whatever
+instructions you type won't be carried out immediately, as usual.
+Instead Logo remembers what you type as part of the procedure named
+<CODE>hello</CODE>.  Continue like this:
+
+<P><PRE>&gt; <U>print &quot;Hello</U>
+&gt; <U>print [This is Logo speaking.]</U>
+&gt; <U>print [What's new?]</U>
+&gt; <U>end</U>
+?
+</PRE>
+
+<P>The word <CODE>end</CODE> isn't the name of a procedure.  It's a
+special signal to Logo that you're finished defining the procedure <CODE>
+hello</CODE>.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Why can't we simply think of <CODE>end</CODE> as the name of a
+procedure, just as <CODE>print</CODE> is?  This is a minor point, but one that you
+can use to test your understanding of what's going on while you are defining
+a procedure.  When you see the greater-than
+prompt, Logo <EM>does not evaluate</EM> the lines you type.  It simply
+remembers those lines as part of the procedure you're defining.  If <CODE>
+end</CODE> were a procedure, it wouldn't be evaluated right away, just as those
+<CODE>print</CODE> instructions aren't evaluated right away.  It, too, would be
+remembered as part of the definition of <CODE>hello</CODE>.  Instead, typing
+<CODE>end</CODE> has an <EM>immediate</EM> effect:  It ends the procedure definition
+and returns to the question-mark prompt that allows interactive evaluation.</SMALL></BLOCKQUOTE></SMALL><P>Now you can try out your new procedure:
+
+<P><PRE>? <U>hello</U>
+Hello
+This is Logo speaking.
+What's new?
+</PRE>
+
+<P>You can also examine the procedure itself by asking Logo
+to print it out.  The command <CODE>po</CODE> (for Print Out) takes one input,
+a word or a list.  The input is either the name of a procedure (if
+a word) or a list of names of procedures.  The effect of <CODE>po</CODE> is to
+print out the definition(s) of the procedure(s) named by the input.
+Here is an example:
+
+<P><PRE>? <U>po &quot;hello</U>
+to hello
+print &quot;Hello
+print [This is Logo speaking.]
+print [What's new?]
+end
+?
+</PRE>
+
+<P>Unlike <CODE>to</CODE>, but like all other Logo procedures, <CODE>
+po</CODE> <EM>does</EM> evaluate its input.  That's why the word <CODE>hello</CODE>
+must be quoted in this example.
+
+<P>In a procedure definition the line starting <CODE>to</CODE> is called the <EM>
+title line.</EM>  The lines containing instructions are, naturally, called
+<EM>instruction lines.</EM>  We won't have many occasions to talk about
+the line containing only the word <CODE>end</CODE>, but just in case, we'll call
+it the <EM>end line.</EM>
+
+<P>The command <CODE>pops</CODE> (for Print Out ProcedureS) takes no inputs.  Its
+effect is to print out the definitions of all the procedures you've
+defined.  The command <CODE>pots</CODE> (for Print Out TitleS) also takes no inputs
+and prints out only the title lines of all the procedures you've defined.
+
+<P>Some writers and teachers reserve the word &quot;procedure&quot; to refer only
+to ones you write yourself, such as <CODE>hello</CODE>.  They use the word
+&quot;primitive&quot; as a noun, to mean things like <CODE>print</CODE> and <CODE>
+butfirst</CODE>.  They say things like &quot;Logo instructions are made up
+of procedures and primitives.&quot; This is a big mistake.  The procedures
+you write are <EM>just like</EM> the procedures Logo happens to know
+about in the first place.  It's just that somebody else wrote the
+primitive procedures.  But you use your own procedures in exactly the
+same way that you use primitive procedures: you type the name of the
+procedure and Logo evaluates that name by invoking the procedure.
+It's okay to say &quot;<CODE>Last</CODE> is a primitive&quot; as an abbreviation for
+&quot;<CODE>Last</CODE> is a primitive procedure,&quot; as long as you know what
+you're talking about.
+
+<P>&raquo;Try defining more procedures.  You'll find that you don't have quite
+enough tools yet to make your procedures very interesting; the main
+problem is that yours don't take inputs, so they do exactly the same
+thing every time you use them.  We'll solve that problem in the next
+chapter.
+
+<P><H2>Editing Your Procedures</H2>
+
+<P>As you may remember from earlier experiences, Logo includes
+an <EM>editor,</EM> a program that allows you to make corrections to
+a procedure you've defined.  You can also use the editor to write
+procedure definitions in the first place.  The editor works slightly
+differently in each version of Logo, so you should consult the manuals
+for your own computer (or Appendix A, for Berkeley Logo) to review the details.
+
+<P>By the way, when you're learning about the <CODE>edit</CODE> command, don't forget
+that it can accept a list of procedure names as input, not only a
+single word.  By listing several procedures in the input to <CODE>edit</CODE>,
+you can have them all visible at once while you're editing,
+and you can copy instructions from one to another.  This is a powerful
+capability of the Logo editor, which beginners often neglect.
+
+<P>Once you've gotten familiar with the Logo editor, you'll probably find
+yourself wanting to use it all the time, and you'll rarely choose to
+define a procedure by invoking <CODE>to</CODE> directly.  (Don't get
+confused about that last sentence; of course you type <CODE>to</CODE> when
+you're using the editor, but you don't type it as a command to the
+Logo interpreter in response to a question mark prompt.) The editor
+makes it much easier to correct typing mistakes.  Nevertheless, if you
+need to define a short procedure in the middle of doing something else, you
+may occasionally find it simpler to use <CODE>to</CODE> rather than wait for an
+editor to start up.
+
+<P><H2>Syntax and Semantics</H2>
+
+<P>Except for the special case of <CODE>to</CODE>, all Logo instructions follow the
+same rules about the meaning of punctuation and about which subexpression
+provides an input to which procedure call.  These are called <EM>
+syntax</EM> rules.  The rules pay no attention to what any particular
+procedure means, or what inputs might or might not be sensible for that
+procedure; those aspects of a program are called its <EM>
+semantics,</EM> which is a fancy word for &quot;meaning.&quot; You might say
+that Logo's plumber, the part of Logo that hooks up the plumbing diagrams,
+doesn't know anything about semantics.  So, for example, if you make a
+mistake like
+
+<P><PRE>print item [john paul george ringo] 2
+</PRE>
+
+<P>and get a Logo error message, you might feel that it's obvious
+what you meant--and it would be, to another person--and so Logo should
+have figured it out and done the right thing.  But computers aren't as
+smart as people, and so you can rely only on Logo's syntax rules, not on the
+semantics of your program, to help Logo make sense of what you write.
+
+<P>To illustrate the difference between syntax and semantics, we'll start by
+examining the following Logo instruction:
+
+<P><PRE>? <U>print word sum 2 4 &quot;es</U>
+6es
+</PRE>
+
+<P>Here's its plumbing diagram:
+
+<P><CENTER><IMG SRC="sixes.gif" ALT="figure: sixes"></CENTER>
+
+<P>The connections in a plumbing diagram depend only on the numbers of inputs
+and outputs for each procedure used.  Logo &quot;connects the plumbing&quot; <EM>
+before</EM> invoking any of the procedures named in the instruction.  The
+plumbing is connected regardless of whether the specified inputs actually
+make sense to the procedures in question.  For example, suppose we make a
+slight change to the instruction given just now:
+
+<P><PRE>print sum word 2 4 &quot;es
+</PRE>
+
+<P>The only change is that <CODE>word</CODE> and <CODE>sum</CODE> have been
+interchanged.  Since these are both two-input operations, the shape of the
+plumbing diagram is unchanged.
+
+<P><CENTER><IMG SRC="semantics.gif" ALT="figure: semantics"></CENTER>
+
+<P>The plumbing connections are syntactically fine, so Logo can work
+out which expression provides the input to which procedure call.  However,
+when Logo gets around to invoking the procedure <CODE>sum</CODE> with inputs <CODE>
+24</CODE> and <CODE>es</CODE>, an error message will result because the second input
+isn't a number.  This is a <EM>semantic</EM> error.
+
+<P>By contrast, the following instruction shows a <EM>syntactic</EM> error, in
+which Logo is unable to figure out a plumbing diagram in which all the
+pieces connect up.
+
+<P><PRE>print word sum 2 &quot;es
+</PRE>
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch2/syntax.gif" ALT="figure: syntax"></CENTER>
+
+<P>The question mark in the diagram indicates a missing input.  In
+this example, the programmer intended the word <CODE>es</CODE> to be the second
+input to <CODE>word</CODE>; from the programmer's point of view, it is a number,
+the desired second input to <CODE>sum</CODE>, that's &quot;really&quot; missing.  But Logo
+doesn't know about the programmer's intentions, and Logo's plumber follows
+uniform rules in deciding which input goes with which procedure call.
+
+<P>The rule is that Logo starts by looking for an input to <CODE>print</CODE>.  The
+first thing it finds is <CODE>word</CODE>, so the output from <CODE>word</CODE> is hooked
+up to the input for <CODE>print</CODE>.  Now Logo is looking for two inputs to <CODE>
+word</CODE>.  The next thing it finds is <CODE>sum</CODE>, so the output from <CODE>sum</CODE>
+is hooked up to the first input for <CODE>word</CODE>.  Now Logo is looking for two
+inputs to <CODE>sum</CODE>, and the syntax rules say that Logo must find those two
+inputs before it can continue with the still-pending task of finding a
+second input for <CODE>word</CODE>.  Logo's plumber isn't smart enough to say,
+&quot;Hey, here's a non-number as input to <CODE>sum</CODE>, and I happen to remember
+that we still need another input for <CODE>word</CODE>, so that must be what the
+programmer meant.&quot;
+
+<P>There are really only two kinds of plumbing errors.  In the one shown here,
+too few expressions are included in the instruction, so that the message
+<CODE>not enough inputs</CODE> results.  The other error is that too many
+expressions appear inside the instruction.  This may result in the message
+<CODE>you don't say what to do with</CODE> something, or, if the extra expressions
+are within parentheses, by <CODE>too much inside ()'s</CODE>.
+
+<P><H2>Parentheses and Plumbing Diagrams</H2>
+
+<P>Parentheses can be used in a Logo instruction for three reasons: for
+readability, to show the precedence of infix operators, or to include a
+nonstandard number of inputs for certain primitives.  In all three cases,
+the syntax rule is that everything inside the parentheses must form one
+single complete expression.  In plumbing diagram terms, this means that the
+stuff inside the parentheses must correspond to a subdiagram with no inputs
+and with exactly one output (unless an entire instruction is parenthesized,
+in which case the diagram will have no outputs):
+
+<P><PRE>print (word &quot;a &quot;b &quot;c)
+</PRE>
+<P><CENTER><IMG SRC="okparens.gif" ALT="figure: okparens"></CENTER>
+
+<P>The dotted rectangle indicates the subdiagram corresponding to the
+expression inside the parentheses.  That rectangle has no inputs; there are
+three inputs <EM>within</EM> the rectangle, but in each case the source of
+the input and the recipient of the input are both inside.  There is no
+recipient inside the rectangle that needs a source from outside.  The
+rectangle has one output; the entire expression within the rectangle
+provides the input to <CODE>print</CODE>.
+
+<P>The mathematical function notation <EM>f</EM>(<EM>x</EM>) used in algebra often tempts
+beginning Logo programmers to write the above example as
+
+<P><PRE>print word (&quot;a &quot;b &quot;c)         ; (wrong)
+</PRE>
+
+<P>but by thinking about the plumbing diagram we can see that that
+would not put one single expression inside the parentheses:
+
+<P><CENTER><IMG SRC="badparens.gif" ALT="figure: badparens"></CENTER>
+
+<P>The part of the instruction inside the parentheses is trying to provide
+three outputs, not just one.  This violates the rules.  Also, since the word
+<CODE>word</CODE> isn't inside the parentheses, that procedure follows its ordinary
+rules and expects only two inputs.
+
+<P><H2>Nonsense Plumbing Diagrams</H2>
+
+<P>To emphasize the point that the plumbing diagram depends only on the number
+of inputs expected by each procedure, and not on the purpose or meaning of
+the procedure, we can draw plumbing diagrams for nonsense instructions using
+unknown procedures.  The rule of this game is that each procedure name
+includes a number indicating how many inputs it accepts.  For example,
+<CODE>garply2</CODE> is a procedure that requires two inputs.  If a procedure can
+accept extra inputs when used with parentheses, we put an <CODE>x</CODE> after the
+number; <CODE>baz3x</CODE> ordinarily takes three inputs, but can be given any
+number of inputs by using parentheses around the subexpression that invokes
+it.
+
+<P><PRE>john2 &quot;paul george2 ringo0 &quot;stu
+</PRE>
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch2/nonsense.gif" ALT="figure: nonsense"></CENTER>
+
+<P>We don't have to know what any of these procedures do.  The only
+information we need is that some words in the instruction are quoted, while
+others are names of procedures that take a known number of inputs.  This is
+a syntactically correct instruction because each procedure has been given
+exactly as many inputs as it requires.
+
+<P>&raquo;Try these:
+
+<P><PRE>baz3x 1 2 foo3x foo3x 4 5 6 (foo3x 7) 8
+baz3x 1 [2 foo3x foo3x 4 5 6 (foo3x 7)] 8
+if2 test3 [a b] [c d] [e f] [g h]
+if2 try0 [foo3x 8 9]
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch1/v1ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch3/v1ch3.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch2/semantics.gif b/js/games/nluqo.github.io/~bh/v1ch2/semantics.gif
new file mode 100644
index 0000000..cdcce58
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/semantics.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch2/sixes.gif b/js/games/nluqo.github.io/~bh/v1ch2/sixes.gif
new file mode 100644
index 0000000..783435d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch2/sixes.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch3/mercedes.gif b/js/games/nluqo.github.io/~bh/v1ch3/mercedes.gif
new file mode 100644
index 0000000..517292c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch3/mercedes.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch3/taxiframe.gif b/js/games/nluqo.github.io/~bh/v1ch3/taxiframe.gif
new file mode 100644
index 0000000..00408d9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch3/taxiframe.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch3/v1ch3.html b/js/games/nluqo.github.io/~bh/v1ch3/v1ch3.html
new file mode 100644
index 0000000..178b7fe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch3/v1ch3.html
@@ -0,0 +1,1083 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 3: Variables</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Variables</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch03.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch4/v1ch4.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+In the last chapter I suggested that you would find yourself limited
+in writing new procedures because your procedures don't take inputs,
+so they do exactly the same thing every time you use them.  In this
+chapter we'll overcome that limitation.
+
+<P><H2>User Procedures with Inputs</H2>
+
+<P>As a first example I'm going to write a very simple command named
+<CODE>greet</CODE>, which will take a person's name as its one input.  Here's how
+it will work:
+
+<P><PRE>? <U>greet &quot;Brian</U>
+Hello, Brian
+Pleased to meet you.
+? <U>greet &quot;Emma</U>
+Hello, Emma
+Pleased to meet you.
+</PRE>
+
+<P>This procedure will be similar to the <CODE>hello</CODE> command in the
+last chapter, except that what it prints will depend on the input
+we give it.
+
+<P>
+Each time we <EM>invoke</EM> <CODE>greet</CODE>, we want to give it an input.
+So that Logo will expect an input, we must provide for one
+when we <EM>define</EM> <CODE>greet</CODE>.  (Each procedure has a definite number
+of inputs; if <CODE>greet</CODE> takes one input once, it must take one input every
+time it's invoked.)  Also, in order for the instructions inside <CODE>greet</CODE>
+to be able to use the input, we must give the input a <EM>name.</EM>
+Both of these needs are met in the <CODE>to</CODE> command that supplies the title
+line for the procedure:
+
+<P><PRE>? <U>to greet :person</U>
+</PRE>
+
+<P>You are already familiar with the use of the <CODE>to</CODE> command,
+the need for a word like <CODE>greet</CODE> to name the procedure, and the appearance
+of the greater-than prompt instead of the question mark.  What's new
+here is the use of <CODE>:person</CODE> after the procedure name.  This addition
+tells Logo that the procedure <CODE>greet</CODE> will require one input and that
+the name of the input will be <CODE>person</CODE>.  It may help to think of the
+input as a container; when the procedure <CODE>greet</CODE> is invoked, something
+(such as the word <CODE>Brian</CODE> or the word <CODE>Emma</CODE>) will be put into the
+container named <CODE>person</CODE>.
+
+<P>Why is the colon used in front of the name <CODE>person</CODE>?  Remember that
+the inputs to <CODE>to</CODE>, unlike the inputs to all other Logo procedures,
+are <EM>not</EM> evaluated before <CODE>to</CODE> is invoked.  Later we'll see that
+a colon has a special meaning to the Logo evaluator, but that special
+meaning is <EM>not</EM> in effect in a title line.  Instead, the colon
+is simply a sort of mnemonic decoration to make a clear distinction
+between the word <CODE>greet</CODE>, which is a <EM>procedure</EM> name, and the word
+<CODE>person</CODE>, which is an <EM>input</EM> name.  Some versions of Logo don't
+even require the colon; you can experiment with yours if you're curious.
+(By the way, if you want to sound like a Logo maven, you should pronounce
+the colon &quot;dots,&quot; as in &quot;to greet dots person.&quot;)
+
+<P>To see why having a name for the input is helpful, look at the rest
+of the procedure definition:
+
+<P><PRE>&gt; <U>print sentence &quot;Hello, thing &quot;person</U>
+&gt; <U>print [Pleased to meet you.]</U>
+&gt; <U>end</U>
+?
+</PRE>
+
+<P>You already know about <CODE>print</CODE> and <CODE>sentence</CODE> and about
+quoting words with the quotation mark and quoting lists with square
+brackets.  What's new here is the procedure <CODE>thing</CODE>.
+
+<P><CODE>Thing</CODE> is an operation.  It takes one input, which must be a word
+that's the name of a container.  The output from <CODE>thing</CODE>
+is whatever datum is in the container.
+
+<P>The technical name for what I've been calling a &quot;container&quot; is a
+<EM>variable.</EM>  Every variable has a <EM>name</EM> and a <EM>thing</EM>
+(or <EM>value</EM>).  The name and the thing are both <EM>parts of</EM> the
+variable.  We'll sometimes speak loosely of &quot;the variable <CODE>
+person</CODE>,&quot; but you should realize that this <EM>is</EM> speaking
+loosely; what we should say is &quot;the variable named <CODE>person</CODE>.&quot;
+<CODE>Person</CODE> itself is a <EM>word,</EM> which is different from a
+variable.
+
+<P>When I type the instruction
+
+<P><PRE>greet &quot;Brian
+</PRE>
+
+<P>the Logo interpreter starts with the first word on the line,
+<CODE>greet</CODE>.  As usual, Logo takes this to be the name of a procedure. 
+Logo discovers that <CODE>greet</CODE> requires one input, so it continues to the
+next thing on the line.  This is a quoted word, <CODE>&quot;Brian</CODE>.  Since
+it's quoted, it requires no further interpretation.  The word <CODE>Brian</CODE>
+itself becomes the input to <CODE>greet</CODE>.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>While reading the definition
+of <CODE>greet</CODE>, it's easy to say &quot;the input is <CODE>person</CODE>&quot;; then, while
+reading an invocation of <CODE>greet</CODE>, it's easy to say &quot;the input is <CODE>
+Brian</CODE>.&quot;  To avoid confusion between the input's name and its value, there
+are more precise technical terms that we can use when necessary.  The name
+of the input, given in the title line of the procedure definition, is called
+a <EM>formal parameter.</EM>  The value of the input, given when the
+procedure is invoked, is called an <EM>actual argument.</EM>  In
+case the actual argument is the result of a more complicated subexpression,
+as in the instruction
+
+<P><PRE>greet first [Brian Harvey]
+</PRE>
+
+<P>we might want to distinguish between the <EM>actual argument
+expression,</EM> <CODE>first [Brian Harvey]</CODE>, and the <EM>actual argument
+value,</EM> which is the word <CODE>Brian</CODE>.</SMALL></BLOCKQUOTE></SMALL><P>Logo is now ready to invoke <CODE>greet</CODE>.  The first step, before
+evaluating the instruction lines in <CODE>greet</CODE>, is to create a
+variable to hold the input.  This variable is given the word <CODE>
+person</CODE> as its <EM>name,</EM> and the word <CODE>Brian</CODE> as its <EM>
+thing.</EM>  (Please notice that I don't have to know the name
+of <CODE>greet</CODE>'s input in order to use it.  All I have to know is what
+<EM>type of thing</EM>--a person's name--<CODE>greet</CODE> expects as its
+input.  What are the names of the inputs to a primitive like <CODE>
+sentence</CODE>?  We don't know and we don't need to know.)
+
+<P>Logo now evaluates the first instruction in <CODE>greet</CODE>.  The process
+is just like the ones we went through in such detail in Chapter 2.  In
+the course of this evaluation Logo invokes the procedure <CODE>thing</CODE>
+with the word <CODE>person</CODE> as its input.  The output from <CODE>thing</CODE>
+is the thing in the variable named <CODE>person</CODE>, namely the word <CODE>
+Brian</CODE>.  That's how the word <CODE>Brian</CODE> becomes one of the inputs to
+<CODE>se</CODE>.  Here's a plumbing diagram.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch3/varplumb.gif" ALT="figure: varplumb"></CENTER>
+
+<P><H2>What Kind of Container?</H2>
+
+<P>One of the favorite activities that Logo experts use to while away
+the time when the computer is down is to argue about the best metaphor
+to use for variables.  A variable is a container, but what kind of
+container?
+
+<P>One popular metaphor is a mailbox.  The mailbox has a <EM>name</EM> painted
+on it, like &quot;The Smiths.&quot;  Inside the mailbox is a piece of
+mail.  The person from the Post Office assigns a <EM>value</EM> to the
+box by putting a letter in it.  Reading a letter is like invoking
+<CODE>thing</CODE> on the mailbox.
+
+<P>I don't like this metaphor very much, and if I explain why not, it
+may help illuminate for you some details about how variables work.
+The first problem is that a real mailbox can contain several letters.
+A variable can only contain <EM>one</EM> thing or value.  (I should say
+&quot;one thing at a time,&quot; since we'll see that it's possible to replace
+the thing in a variable with a different thing.)
+
+<P>Another problem with the mailbox metaphor is that to read a letter,
+you take it out of the mailbox and tear it open.  Then it isn't in
+the mailbox any more.  When you invoke <CODE>thing</CODE> to look at the thing
+in a variable, on the other hand, it's still in the variable.  You
+could use <CODE>thing</CODE> again and get the same answer.
+
+<P>There are two metaphors that I like.  The one I like best won't make
+sense for a while, until we talk about scope of variables.
+But here is the one I like second best:  Sometimes when you take a
+bus or a taxi, there is a little frame up in front that looks like
+this:
+
+<P><CENTER><IMG SRC="taxiframe.gif" ALT="figure: taxiframe"></CENTER>
+
+<P>The phrase &quot;your driver's name is&quot; is like a label for
+this frame, and it corresponds to the <EM>name</EM> of a variable.  Each
+bus driver has a metal or plastic plate that says &quot;John Smith&quot;
+or whoever it is.  The driver inserts this plate, which corresponds
+to the <EM>value</EM> of the variable, into the frame.  You can see why
+this is a closer metaphor than the mailbox.  There is only one plate
+in the frame at a time.  To find out who's driving the bus, you just
+have to look inside the frame; you don't have to remove the plate.
+
+<P>(To be strictly fair I should tell you that some Logoites
+don't like the whole idea of containers.  They have a completely different
+metaphor, which involves sticking labels on things.  But I think it
+would only confuse you if I explained that one right now.)
+
+<P><H2>An Abbreviation</H2>
+
+<P>Examining the value of a variable is such a common thing to do in
+a Logo procedure that there is a special abbreviation for it.  Instead
+of the expression
+
+<P><PRE>thing &quot;person
+</PRE>
+
+<P>you can simply say
+
+<P><PRE>:person
+</PRE>
+
+<P>So in the <CODE>greet</CODE> procedure, we could have said
+
+<P><PRE>print sentence &quot;hello :person
+</PRE>
+
+<P>Please note that the colon is <EM>not</EM> just an abbreviation
+for the word <CODE>thing</CODE> but rather for the combination <CODE>thing</CODE>-quote.
+
+<P>When drawing plumbing diagrams, treat <CODE>:narf</CODE> as if it were spelled out
+as <CODE>thing &quot;narf</CODE>.
+
+<P><H2>More Procedures</H2>
+
+<P>It's time to invent more procedures.  I'll give you a couple of examples
+and you should make up more on your own.
+
+<P><PRE>to primer :name
+print (sentence first :name [is for] word :name &quot;.)
+print (sentence &quot;Run, word :name &quot;, &quot;run.)
+print (sentence &quot;See :name &quot;run.)
+end
+
+? <U>primer &quot;Paul</U>
+P is for Paul.
+Run, Paul, run.
+See Paul run.
+</PRE>
+
+<P>
+
+<P><CODE>Primer</CODE> uses the extra-input kludge I mentioned near the
+end of Chapter 2.  It also shows how the operations <CODE>word</CODE> and
+<CODE>sentence</CODE> can be used in combination to punctuate a sentence
+properly.
+
+<P>With all of these examples, incidentally, you should take the time to
+work through each instruction line to make sure you understand what
+is the input to what.
+
+<P><PRE>to soap.opera :him :her :it
+print (sentence :him &quot;loves word :her &quot;.)
+print (sentence &quot;However, :her [doesn't care for] :him &quot;particularly.)
+print (sentence :her [is madly in love with] word :it &quot;.)
+print (sentence :him [doesn't like] :it [very much.])
+end
+
+? <U>soap.opera &quot;Bill &quot;Sally &quot;Fred</U>
+Bill loves Sally.
+However, Sally doesn't care for Bill particularly.
+Sally is madly in love with Fred.
+Bill doesn't like Fred very much.
+</PRE>
+
+<P>
+In this example you see that a procedure can have more than
+one input.  <CODE>Soap.opera</CODE> has three inputs.  You can also see why each
+input must have a name, so that the instructions inside the procedure
+have a way to refer to the particular input you want to use.  You
+should also notice that <CODE>soap.opera</CODE> has a period in the middle of its
+name, not a space, because the name of a procedure must be a single
+Logo word.
+
+<P>
+
+<P>
+For the next example I'll show how you can write an <EM>interactive</EM>
+procedure, which reads something you type on the keyboard.  For this
+we need a new tool.  <CODE>Readlist</CODE> is an operation with no inputs.  Its
+output is always a list, containing whatever you type on a single
+line (up to a RETURN).  <CODE>Readlist</CODE> waits for you to type a line, then
+outputs what you type.
+
+<P><PRE>to converse
+print [Please type your full name.]
+halves readlist
+end
+
+to halves :name
+print sentence [Your first name is] first :name
+print sentence [Your last name is] last :name
+end
+
+? <U>converse</U>
+please type your full name.
+<U>Brian Harvey</U>
+Your first name is Brian
+Your last name is Harvey
+</PRE>
+
+<P>This program includes two procedures, <CODE>converse</CODE> and
+<CODE>halves</CODE>. (A <EM>program</EM> is a bunch of procedures that work
+together to achieve a common goal.) <CODE>Converse</CODE> is the <EM>
+top-level procedure.</EM>  In other
+words, <CODE>converse</CODE> is the procedure
+that you invoke at the question-mark prompt to set the program in
+motion.  <CODE>Halves</CODE> is a <EM>subprocedure</EM> of <CODE>converse</CODE>, which
+means that <CODE>halves</CODE> is invoked by an instruction inside <CODE>
+converse</CODE>.  Similarly, <CODE>converse</CODE> is a <EM>superprocedure</EM> of
+<CODE>halves</CODE>.
+
+<P>There are two things you should notice about the terminology &quot;subprocedure&quot;
+and &quot;superprocedure.&quot;  The first thing is that these are <EM>relative</EM>
+terms.  It doesn't mean anything to say &quot;<CODE>Halves</CODE> is a subprocedure.&quot;
+Any procedure can be used as part of a larger program.  <CODE>Converse</CODE>,
+for example, is a superprocedure of <CODE>halves</CODE>, but <CODE>converse</CODE> might at
+the same time be a subprocedure of some higher-level procedure we
+haven't written yet.  The second point is that primitive procedures
+can also be considered as subprocedures.  For example, <CODE>sentence</CODE> is
+a subprocedure of <CODE>halves</CODE>.
+
+<P>(Now that we're dealing with programs containing more than one defined
+procedure, it's a good time for me to remind you that the commands that act
+on procedures can accept a list as input as well as a single word.  For
+example, you can say
+
+<P><PRE>po [converse halves]
+</PRE>
+
+<P>and Logo will print out the definitions of both procedures.)
+
+<P>Why are two procedures necessary for this program?  When the program
+reads your full name, it has to remember the name so that it can print
+two parts of it separately.  It wouldn't work to say
+
+<P><PRE>to incorrect.converse
+print [Please type your full name.]
+print sentence [Your first name is] first readlist
+print sentence [Your last name is] last readlist
+end
+</PRE>
+
+<P>because each invocation of <CODE>readlist</CODE> would read a separate
+line from the keyboard instead of using the same list for both first
+and last names.  We solve this problem by using the output from <CODE>readlist</CODE>
+as the input to a subprocedure of <CODE>converse</CODE> and letting the subprocedure
+do the rest of the work.
+
+<P>One of the examples in Chapter 1 was this procedure:
+
+<P><PRE>to hi
+print [Hi. What's your name?]
+print sentence [How are you,] word first readlist &quot;?
+ignore readlist
+print [That's nice.]
+end
+</PRE>
+
+<P><CODE>Hi</CODE> uses a procedure called <CODE>ignore</CODE> that we haven't yet
+discussed.  <CODE>Ignore</CODE> is predefined in Berkeley Logo but would be easy
+enough to define yourself:
+
+<P><PRE>to ignore :something
+end
+</PRE>
+
+<P>That's not a misprint; <CODE>ignore</CODE> really has no instructions
+in its definition.  <CODE>Ignore</CODE> is a command that takes one input and
+has no effect at all!  Its purpose is to ignore the
+input.  In <CODE>hi</CODE>,
+the instruction
+
+<P><PRE>ignore readlist
+</PRE>
+
+<P>waits for you to type a line on the keyboard, then just
+ignores whatever you type.  (We couldn't just use <CODE>readlist</CODE> as an
+instruction all by itself because a complete instruction has to begin
+with a command, not an operation.  That is, since <CODE>readlist</CODE>
+outputs a value, there must be a command to tell Logo what to do with
+that value.  In this case, we want to <CODE>ignore</CODE> it.)
+
+<P>&raquo;Write a procedure to conjugate the present tense of a regular
+first-conjugation (-er) French verb.  (Never mind if you don't know what any
+of that means!  You're about to see.)  That is, the letters <CODE>er</CODE> at the
+end of the verb should be replaced by a different ending for each pronoun:
+
+<P><PRE>? <U>conj &quot;jouer</U>
+je joue
+tu joues
+il joue
+nous jouons
+vous jouez
+elles jouent
+</PRE>
+
+<P>The verb <CODE>jouer</CODE> (to play) consists of the root <CODE>jou</CODE>
+combined with the infinitive ending <CODE>er</CODE>.  Print six
+lines, as shown, in which the ending is changed to <CODE>e</CODE>, <CODE>es</CODE>, etc.
+Try your procedure on <CODE>monter</CODE> (to climb), <CODE>frapper</CODE> (to hit), and
+<CODE>garder</CODE> (to keep).
+
+<P>By the way, in a practical program we would have to deal with the fact that
+French contains many irregular verbs.  In addition to wildly irregular ones
+like &#234;tre (to be, irregular even in English) there are ones like manger,
+to eat, which are almost regular except that the first and second person
+plural forms keep the letter e: nous mangeons.  Many issues in natural
+language programming (that is, getting computers to speak or understand
+human language) turn out like this--90% of the cases are trivial, but most
+of your effort goes into the other 10%.
+
+<P><H2>An Aside on Variable Naming</H2>
+
+<P>In my metaphor about the frame containing the bus driver's name, the
+inscription on the frame tells you what to expect inside the frame.
+Variable names like <CODE>person</CODE> and <CODE>name</CODE> serve a similar
+purpose.  (You might argue that the <CODE>it</CODE> in the group of names
+<CODE>him</CODE>, <CODE>her</CODE>, and <CODE>it</CODE> is a little misleading.  But it
+serves to keep the story straight, probably better than an alternative
+like <CODE>him1</CODE> and <CODE>him2</CODE>.)
+
+<P>Another kind of frame is the one you sometimes see around a car's license
+plate:
+
+<P><CENTER><IMG SRC="mercedes.gif" ALT="figure: mercedes"></CENTER>
+
+<P>I know it's pedantic to pick apart a joke, but
+just the same I want to make the point that this one works only because
+the car itself provides enough clues that what belongs in the frame
+is indeed a license plate.  If you were unfamiliar with the idea of
+license plates, that frame wouldn't help you.
+
+<P>The computer equivalent of this sort of joke is to give your variables
+names that don't reflect their purpose in the procedure.  Some people
+like to name variables after their boyfriends or girlfriends or relatives.
+That's okay if you're writing simple programs, like the ones in this
+chapter, in which it's very easy to read the program and figure out
+what it does.  But when you start writing more complicated programs,
+you'll need all the help you can get in remembering what each piece
+of the program does.  I recommend starting early on the habit of using
+sensible variable names.
+
+<P><H2>Don't Call It X</H2>
+
+<P>Another source of trouble in variable naming is lazy fingers.  When
+I'm teaching programming classes, a big part of my job is reading
+program listings that students bring to me, saying, &quot;I just
+can't find the bug in this program.&quot;  I have an absolute rule that
+I refuse to read any program in which there is a variable named <CODE>x</CODE>.
+
+<P>My students always complain about this arbitrary rule at first.  But
+more often than not, a student goes through a program
+renaming all the variables and then finds that the bug has disappeared!
+This magical result comes about because when you use variable names
+like <CODE>x</CODE>, you run the risk of using the same name for two different
+purposes at the same time.  When you pick reasonable names, you'll
+pick two different names for the two purposes.
+
+<P>It is people who've programmed in BASIC who are most likely to make
+this mistake.  For reasons that aren't very important any more, BASIC
+used to <EM>require</EM> single-letter variable names.  Even now there
+are limits on longer names in most versions of BASIC that make it
+risky to use more than two or three letters in a name.  So if you're
+a BASIC programmer, you've probably gotten into bad habits, which
+you should make a point of correcting.
+
+<P><H2>Writing New Operations</H2>
+
+<P>So far all the procedures we've written have been commands.  That
+is, our procedures have had an <EM>effect</EM> (like printing something)
+rather than an <EM>output</EM> to be used with other procedures.  You
+can also write operations, once you know how to give your procedure
+an output.  Here is an example:
+
+<P><PRE>to second :thing
+output first butfirst :thing
+end
+
+? <U>print second [the red computer]</U>
+red
+</PRE>
+
+<P><CODE>Second</CODE> is an operation with one input.  Like the primitive
+operation <CODE>first</CODE>, it extracts a component of its input, either a character
+from a word or a member from a list.  However, it outputs the second
+component instead of the first one.
+
+<P>What is new in this procedure definition is the use of the primitive
+command <CODE>output</CODE>.  <CODE>Output</CODE> can
+be used only inside a procedure definition,
+not at top level.  (In other words, not when you are typing in response
+to a question-mark prompt.)  It takes one input, which can be any
+datum.  The effect of <CODE>output</CODE> is to make the datum you supply as
+its input be the output from your procedure.
+
+<P>Some people find it confusing that <CODE>output</CODE> itself is a <EM>command,</EM>
+even though a procedure that uses <CODE>output</CODE> is an <EM>operation.</EM> 
+But it makes sense for <CODE>output</CODE> to be the head of a complete instruction.
+The effect of the instruction is to inform Logo what output you want
+your procedure (the procedure named <CODE>second</CODE> in this case) to supply.
+
+<P>Another possible confusion is between <CODE>output</CODE>
+and <CODE>print</CODE>.  The problem
+is that people talk about &quot;computer output&quot; while waving a stack
+of paper at you, so you think of &quot;output&quot; as meaning &quot;stuff the
+computer printed.&quot;  But in Logo, &quot;output&quot; is something one procedure
+hands to another procedure, not something that is printed.
+
+<P>
+I chose the name <CODE>thing</CODE> for the input to <CODE>second</CODE> to remind
+myself that the input can be anything, word or list.  <CODE>Thing</CODE> is also,
+as you know, the name of a primitive procedure.  This is perfectly
+okay.  The same word can name both a procedure and a variable.  Logo
+can tell which you mean by the context.  A word that is used in an
+instruction without punctuation is a procedure name.  A word that
+is used as an input to the procedure <CODE>thing</CODE> is a variable name.  (This
+can happen because you put dots in front of the word as an abbreviation
+or because you explicitly typed <CODE>thing</CODE> and used the word as its input.)
+The expression <CODE>:thing</CODE> is an abbreviation for
+
+<P><PRE>thing &quot;thing
+</PRE>
+
+<P>in which the first <CODE>thing</CODE> names a procedure, and the
+second <CODE>thing</CODE> names a variable.
+
+<P>
+
+<P>&raquo;Write an operation <CODE>query</CODE> that takes a sentence as input and that
+outputs a question formed by swapping the first two words and adding a
+question mark to the last word:
+
+<P><PRE>? <U>print query [I should have known better]</U>
+should I have known better?
+? <U>print query [you are experienced]</U>
+are you experienced?
+</PRE>
+
+<P>
+
+<H2>Scope of Variables</H2>
+
+<P>This is going to be a somewhat complicated section, and an important
+one, so slow down and read it carefully.
+
+<P>
+When one procedure with inputs invokes another procedure with inputs
+as a subprocedure, it's possible for them to share variables and
+it's also possible for them to have separate variables.  The following
+example isn't meant to do anything particularly interesting, just
+to make explicit what the rules are.
+
+<P><PRE>to top :outer :inner
+print [I'm in top.]
+print sentence [:outer is] :outer
+print sentence [:inner is] :inner
+bottom &quot;x
+print [I'm in top again.]
+print sentence [:outer is] :outer
+print sentence [:inner is] :inner
+end
+
+to bottom :inner
+print [I'm in bottom.]
+print sentence [:outer is] :outer
+print sentence [:inner is] :inner
+end
+
+? <U>top &quot;a &quot;b</U>
+I'm in top.
+:outer is a
+:inner is b
+I'm in bottom.
+:outer is a
+:inner is x
+I'm in top again.
+:outer is a
+:inner is b
+</PRE>
+
+<P>First, concentrate on the variable named <CODE>outer</CODE>.  This name
+is used for the first input to <CODE>top</CODE>.  <CODE>Bottom</CODE> doesn't have an input
+named <CODE>outer</CODE>.  When <CODE>bottom</CODE> refers to <CODE>:outer</CODE>, since it doesn't have
+one of its own, the reference is to the variable <CODE>outer</CODE> that belongs
+to its superprocedure, <CODE>top</CODE>.  That's why <CODE>a</CODE> is printed as the value
+of <CODE>outer</CODE> in both procedures.
+
+<P><BLOCKQUOTE>
+<STRONG>If a procedure refers to a variable that does not belong to that
+procedure, Logo looks for a variable of that name in the superprocedure
+of that procedure.</STRONG></BLOCKQUOTE>
+
+<P>Suppose procedure <CODE>a</CODE> invokes procedure <CODE>b</CODE>, and <CODE>b</CODE>
+invokes <CODE>c</CODE>.  Suppose an instruction in procedure <CODE>c</CODE> refers
+to a variable <CODE>v</CODE>.  First Logo tries to find a variable named <CODE>v</CODE>
+that belongs to <CODE>c</CODE>.  If that fails, Logo looks for a variable
+named <CODE>v</CODE> that belongs to procedure <CODE>b</CODE>.  Finally, if neither
+<CODE>c</CODE> nor <CODE>b</CODE> has a variable named <CODE>v</CODE>, Logo looks for such
+a variable that belongs to procedure <CODE>a</CODE>.
+
+<P>
+
+<P>Now look at <CODE>inner</CODE>.  The important thing to understand is that
+<EM>there are two variables named</EM> <CODE>inner</CODE>, one belonging to
+each procedure. When <CODE>top</CODE> is invoked, its input named <CODE>inner</CODE>
+gets the word <CODE>b</CODE> as its value.  When <CODE>top</CODE> invokes <CODE>
+bottom</CODE>, <CODE>bottom</CODE>'s input (which is also named <CODE>inner</CODE>) gets
+the value <CODE>x</CODE>.  But when <CODE>bottom</CODE> finishes, and <CODE>top</CODE>
+continues, the name <CODE>inner</CODE> once again refers to the variable
+named <CODE>inner</CODE> that belongs to <CODE>top</CODE>.  The one that belongs
+to <CODE>bottom</CODE> has disappeared.
+
+<P><BLOCKQUOTE>
+<STRONG>Variables that belong to a procedure are temporary.  They exist only
+so long as that procedure is active.  If one procedure has a variable
+with the same name as one belonging to its superprocedure, the latter
+is temporarily &quot;hidden&quot; while the subprocedure is running.
+</STRONG></BLOCKQUOTE>
+
+<P>
+Because each procedure has its own variable named <CODE>inner</CODE>, we refer
+to the procedure input variables as <EM>local</EM> to
+a particular procedure.
+Inputs are always local in Logo.  There is also a name for the fact
+that a procedure can refer to variables belonging to its superprocedures.
+If you want to show off, you can explain to people that Logo has <EM>
+dynamic scope,</EM> which is what that rule is called.
+
+<P>
+
+<H2>The Little Person Metaphor</H2>
+
+<P>Earlier I told you my second favorite metaphor about variables.  My
+very favorite is an old one, which Logo teachers have been
+using for years.  It is a metaphor about procedures as well as variables,
+which is why I didn't present it earlier.  Now that you're thinking
+about the issue of variable scope, you can see that to have a full
+understanding of variables, you have to be thinking about procedures
+at the same time.
+
+<P>The metaphor is that inside the computer there is a large community of
+little people.  Each person is a specialist at a particular procedure.
+So there are <CODE>print</CODE> people and <CODE>butfirst</CODE> people and <CODE>
+bottom</CODE> people and <CODE>greet</CODE> people.  I like to think of these
+people as elves, because I started teaching Logo on a computer
+called a PDP-11, and I like the pun of an elf inside an 11.  But if
+you find elves too cute or childish, perhaps you should think of these
+people as doctors in white coats, specializing in dermatology or
+ophthalmology or whatever.  Another terminology for the same idea, one
+which is becoming more and more widely used in advanced computer
+science circles, is to call the little people <EM>actors</EM> and to
+call their procedures <EM>scripts.</EM>  Each actor has only one script,
+but several actors can have the same script.
+
+<P>In any case, what's important is that when a procedure is invoked,
+a little person who is an expert on that procedure goes to work. 
+(It's important that the person is <EM>an expert in</EM> the procedure,
+and not the procedure <EM>itself;</EM> we'll see later that there
+can be two little people carrying out the same procedure at the same
+time.  This is one of the more complicated ideas in Logo, so I think
+the expert metaphor will help you later.)
+
+<P>You may be wondering where the variables come in.  Well, each elf
+is wearing a jerkin, a kind of vest, with a bunch of pockets.  (If
+your people are doctors, the pockets are in those white lab coats.)
+A person has as many pockets as the procedure he or she knows has
+inputs.  A <CODE>print</CODE> expert has one pocket; a <CODE>sentence</CODE> expert has two.
+Each pocket can contain a datum, the value of the variable.  (The
+pockets are only big enough for a single datum.)  Each pocket also
+has a name tag sewn on the inside, which contains the name of the
+variable.
+
+<P>The name tags are on the inside to make the point that other people
+don't need to know the names of an expert's variables.  Other experts
+only need to know how many pockets someone has and what kind of thing
+to put in them.
+
+<P>When I typed
+
+<P><PRE>top &quot;a &quot;b
+</PRE>
+
+<P>the Chief Elf (whose name is Evaluator) found an elf named
+Theresa, who is a <CODE>top</CODE> expert, and put an <CODE>a</CODE> in her first pocket and
+a <CODE>b</CODE> in her second pocket.
+
+<P>Theresa's first instruction is
+
+<P><PRE>print [I'm in top.]
+</PRE>
+
+<P>To carry out that instruction, she handed the list <CODE>[I'm
+in top.]</CODE> to another elf named Peter, a <CODE>print</CODE> expert.
+
+<P>Theresa's second instruction is
+
+<P><PRE>print sentence [:outer is] :outer
+</PRE>
+
+<P>To carry out this instruction, Theresa wanted to hire Peter
+again, but before she could give him his orders, she first had to
+deal with Sally, a <CODE>sentence</CODE> expert.  (This is the old evaluation story
+from Chapter 2 again.)  But Theresa didn't know what to put in Sally's
+second pocket until she got the information from Tom, a <CODE>thing</CODE> expert.
+(Remember that <CODE>:outer</CODE> is an abbreviation for <CODE>thing &quot;outer</CODE>.)
+
+<P>What's important right now is how Tom does his job.  Tom is a sort
+of pickpocket.  He doesn't steal anything; he just sneaks looks in
+other people's pockets.  There are lots of people inside the computer,
+but the only ones with things in their pockets are the ones who are
+actually employed at a given moment.  Aside from Tom himself, the
+only person who was employed at the time was Theresa, so Tom could
+only look in her pockets for a name tag saying <CODE>outer</CODE>.  (Theresa is
+<EM>planning</EM> to hire Sally and then Peter, to finish carrying out
+her instruction, but she can't hire them until she gets the information
+she needs from Tom.)
+
+<P>Later Theresa will hire Bonnie, a <CODE>bottom</CODE> specialist, to help with
+the instruction
+
+<P><PRE>bottom &quot;x
+</PRE>
+
+<P>Theresa will give Bonnie the word <CODE>x</CODE> to put in her pocket.
+Bonnie also has an instruction
+
+<P><PRE>print sentence [:outer is] :outer
+</PRE>
+
+<P>As part of the process of carrying out this instruction,
+Bonnie will hire Tom to look for something named <CODE>outer</CODE>.  In
+that case Tom first looks in the pockets of Bonnie, the person who hired
+him.  Not finding a pocket named <CODE>outer</CODE>, Tom can <EM>then</EM>
+check the pockets of Theresa, the person who hired Bonnie.  (If you're
+studying Logo in a class with other people, it can be both fun and
+instructive to act this out with actual people and pockets.)
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch3/elf1.gif" ALT="figure: elf1"></CENTER>
+
+
+<P>An appropriate aspect of this metaphor is that it's slightly rude to look in
+someone else's pockets, and you shouldn't do it unnecessarily.  This
+corresponds to a widely accepted rule of Logo style: most of the time, you
+should write procedures so that they don't have to look at variables
+belonging to their superprocedures.  Whatever information a procedure needs
+should be given to it explicitly, as an input.
+You'll find situations in which that rule seems very helpful, and other
+situations in which taking advantage of dynamic scope seems to make the
+program easier to understand.
+
+<P>&raquo;The <CODE>conj</CODE> procedure you wrote earlier deals only with the present
+tense of the verb.  In French, many other tenses can be formed by a similar
+process of replacing the endings, but with different endings for different
+tenses.  Also, second conjugation (-ir) and third conjugation (-re) verbs
+have different endings even in the present tense.  You don't want to write
+dozens of almost-identical procedures for each of these cases.  Instead,
+write a single procedure <CODE>superconj</CODE> that takes two inputs, a verb and a
+list of six endings, and performs the conjugation:
+
+<P><PRE>? <U>superconj &quot;jouer [ais ais ait ions iez aient]</U>      ; imperfect tense
+je jouais
+tu jouais
+il jouait
+nous jouions
+vous jouiez
+elles jouaient
+? <U>superconj &quot;finir [is is it issons issez issent]</U>    ; 2nd conj present
+je finis
+tu finis
+il finit
+nous finissons
+vous finissez
+elles finissent
+</PRE>
+
+<P>You can save some typing and take advantage of dynamic scope if
+you use a helper procedure.  My <CODE>superconj</CODE> looks like this:
+
+<P><PRE>to superconj :verb :endings
+sc1 &quot;je 1
+sc1 &quot;tu 2
+sc1 &quot;il 3
+sc1 &quot;nous 4
+sc1 &quot;vous 5
+sc1 &quot;elles 6
+end
+</PRE>
+
+<P>Write the helper procedure <CODE>sc1</CODE> to finish this.
+
+<P><H2>Changing the Value of a Variable</H2>
+
+<P>It is possible for a procedure to change the thing in a variable by
+using the <CODE>make</CODE> command.  <CODE>Make</CODE> takes two inputs.  The first
+input must be a word that is the name of a variable, just like the
+input to <CODE>thing</CODE>.  <CODE>Make</CODE>'s second input can be any datum.
+The effect of <CODE>make</CODE> is to make the variable named by its first
+input contain as its value the datum that is its second input,
+instead of whatever used to be its value.  For example,
+
+<P><PRE>make &quot;inner &quot;y
+</PRE>
+
+<P>would make the variable named <CODE>inner</CODE> have the word <CODE>y</CODE> as its
+value.  (If there are two variables named <CODE>inner</CODE>, as is the case while
+<CODE>bottom</CODE> is running, it is the one in the lower-level procedure that
+is changed.  This is the same as the rule for <CODE>thing</CODE> that we have
+already discussed.)
+
+<P>Suppose a procedure has variables named <CODE>old</CODE> and <CODE>new</CODE> and you want
+to copy the thing in <CODE>old</CODE> into <CODE>new</CODE>.  You could say
+
+<P><PRE>make &quot;new thing &quot;old
+</PRE>
+
+<P>or use the abbreviation
+
+<P><PRE>make &quot;new :old
+</PRE>
+
+<P>People who don't understand evaluation sometimes get very
+upset about the fact that a quotation mark is used to refer to <CODE>
+new</CODE> and a colon is used to refer to <CODE>old</CODE>.  They think this is
+just mumbo-jumbo because they don't understand that a quotation mark
+is part of what the colon abbreviates!  In both cases we are referring
+to the name of a variable.  A variable name is a Logo word.  To refer
+to a word in an instruction and have it evaluate to itself, not invoke
+a procedure named <CODE>new</CODE> or <CODE>old</CODE>, the word must be quoted.
+The difference is that the first input to <CODE>make</CODE> is the <EM>
+name</EM> of the variable we want to change (<CODE>new</CODE>), while the
+second input to <CODE>make</CODE> is, in this example, the <EM>value</EM> of a
+variable (<CODE>old</CODE>), which we get by invoking <CODE>thing</CODE>. Since you
+understand all this, you won't get upset.  You also won't resort to
+magic formulas like &quot;always use quote for the first variable and
+dots for the second&quot; because you understand that the inputs to <CODE>
+make</CODE> can be computed with any expression you want!  For example, we
+could copy <CODE>old</CODE>'s value into <CODE>new</CODE> this way:
+
+<P><PRE>make first [new old] thing last [new old]
+</PRE>
+
+<P>This instruction contains neither a quotation mark nor a
+colon, but the inputs to <CODE>make</CODE> are exactly the same as they were in
+the earlier version.
+
+<P>
+Earlier I mentioned that it is considered slightly rude for a procedure
+to read its superprocedures' variables.  It is <EM>extremely</EM> rude
+for a procedure to change the values of other procedures' variables!
+Perhaps you can see why that's so.  If you're trying to read the definition
+of a procedure, and part way through that procedure it invokes a subprocedure,
+there is no clue to the fact that the subprocedure changes a variable.
+If you break this rule, it makes your program very hard to read because
+you have to read all the procedures at once.  If each procedure deals
+only with its own variables, you have written a <EM>modular</EM> program,
+in which each piece can be understood separately.
+
+<P>
+
+<H2>Global and Local Variables</H2>
+
+<P>What if the first input to <CODE>make</CODE> isn't the name of an input to an active
+procedure?  In other words, what if you try to assign a value to a
+variable that doesn't exist?  What happens is that a new variable
+is created that is <EM>not</EM> local to any procedure.  The name for
+this kind of variable is a <EM>global</EM> variable.  <CODE>Thing</CODE> looks at
+global variables if it can't find a local variable with the name you
+want.
+
+<P>A local variable disappears when the procedure it belongs to finishes.
+Global variables don't belong to any procedure, so they stay around
+forever.  This can be convenient, when you have a permanent body of
+information that several procedures must use.  But it can also lead
+to problems if you are careless about what's in which variable.  Local
+variables come and go with the procedures they belong to, so it's
+easy to avoid clutter when you use them.  Global variables are more
+like old socks under the bed.
+
+<P>If you are a BASIC programmer, you've become accustomed to a language
+in which all variables are global.  I've learned over the years that
+it's impossible, at this point in your career, for you to appreciate
+the profound effect that's had on your style of programming.  Only
+after you've used procedural languages like Logo for quite a while
+will you understand.  Meanwhile there is only one hope for you: you
+are not allowed to use global variables <EM>at all</EM> for the next few months.
+Please take my word for it.
+
+<P>Sometimes it's convenient for a procedure to use a variable that is
+not an input, but which could just as well be local.  To do this, you
+can use the <CODE>local</CODE> command.  This command takes one input, a word.  It
+creates a variable, local to the procedure that invoked <CODE>local</CODE>,
+with that word as its name.  For example, we can use <CODE>local</CODE> to
+rewrite the earlier <CODE>converse</CODE> example without needing the <CODE>
+halves</CODE> subprocedure:
+
+<P><PRE>to new.converse
+local &quot;name
+print [Please type your full name.]
+make &quot;name readlist
+print sentence [Your first name is] first :name
+print sentence [Your last name is] last :name
+end
+</PRE>
+
+<P>The instruction that invokes <CODE>local</CODE> can be anywhere in the
+procedure before the variable is given a value with <CODE>make</CODE>.  It's traditional,
+though, to put <CODE>local</CODE> instructions at the beginning of a procedure.
+
+<P>The same procedure would work even without the <CODE>local</CODE>, but then it
+would create a global variable named <CODE>name</CODE>.  It's much neater if you
+can avoid leaving unnecessary global variables around, so you should
+use <CODE>local</CODE> unless there is a reason why you really need a global
+variable.
+
+<P>
+
+<H2>Indirect Assignment</H2>
+
+<P>Earlier I showed you the example
+
+<P><PRE>make first [new old] thing last [new old]
+</PRE>
+
+<P>in which the first input to <CODE>make</CODE> was
+the result of evaluating a complex expression rather than an explicit
+quoted word in the instruction.  But the example was kind of silly,
+used only to make the point that such a thing is possible.
+
+<P>Here are a couple of examples in which the use of a computed first
+input to <CODE>make</CODE> really makes sense.  These are tricky examples; it
+may take a couple of readings before you see what I'm doing here.
+The technique I'm using is an advanced part of Logo programming.
+First is the procedure <CODE>increment</CODE>:
+
+<P><PRE>to increment :variable
+make :variable (thing :variable)+1
+end
+</PRE>
+
+<P>To <EM>increment</EM> a variable means to add something to
+it, usually (as in this procedure) to add one to it.  The input to
+<CODE>increment</CODE> is the name of a variable.  The procedure adds 1 to that
+variable:
+
+<P><PRE>? <U>make &quot;count 12</U>
+? <U>print :count</U>
+12
+? <U>increment &quot;count</U>
+? <U>print :count</U>
+13
+</PRE>
+
+<P>You may wonder what the point is.  Why couldn't I just say
+
+<P><PRE>make &quot;count :count+1
+</PRE>
+
+<P>instead of the obscure <CODE>make</CODE> instruction I used?  The
+answer is that if we have several variables in the program, each of
+which sometimes gets incremented, this technique allows a single
+procedure to be able to increment any variable.  It's a kind of
+shorthand for something we might want to do repeatedly.
+
+<P>In the definition of <CODE>increment</CODE>, the first input to <CODE>make</CODE>
+is not <CODE>&quot;variable</CODE> but rather <CODE>:variable</CODE>.  Therefore, the word
+<CODE>variable</CODE> itself is not the name of the variable that is incremented.
+(To say that more simply, the variable named <CODE>variable</CODE> isn't
+incremented.)
+Instead the variable named <CODE>variable</CODE> contains as its value the
+name of <EM>another</EM> variable.  (In the example the value of <CODE>
+variable</CODE> is the word <CODE>count</CODE>.) It is that second variable
+whose value is changed.
+(In the example <CODE>:count</CODE> was 12 and becomes 13.)
+
+<P>While reading <CODE>increment</CODE>, remember that in the second input to
+<CODE>make</CODE>,
+
+<P><PRE>thing :variable
+</PRE>
+
+<P>is really an abbreviation for
+
+<P><PRE>thing thing &quot;variable
+</PRE>
+
+<P>In other words this expression asks for the value of the
+variable whose name is itself the value of <CODE>variable</CODE>.
+
+<P>As a second example suppose you're writing a program to play a game
+of Tic-Tac-Toe.  The computer will play one side and a person can
+play the other side.  The person gets to choose X or O (that is, going
+first or second).  The choice might be made with procedures like these:
+
+<P>
+<PRE>to computer.first
+make &quot;computer &quot;X
+make &quot;person &quot;O
+end
+
+to person.first
+make &quot;person &quot;X
+make &quot;computer &quot;O
+end
+</PRE>
+
+<P>Elsewhere in the program there will be a procedure that
+asks the person where he or she wants to move.  Suppose the squares
+on the board are numbered 1 through 9, and suppose we have two variables,
+<CODE>Xsquares</CODE> and <CODE>Osquares</CODE>, which contain lists of numbers corresponding
+to the squares marked X and O.  Look at this procedure:
+
+<P><PRE>to person.move :square
+make word :person &quot;squares sentence :square thing word :person &quot;squares
+end
+</PRE>
+
+<P>The input to <CODE>person.move</CODE> is the number of the square into
+which the person has asked to move.  The first input to <CODE>make</CODE> is the
+expression
+
+<P><PRE>word :person &quot;squares
+</PRE>
+
+<P>If the person has chosen to move first, then <CODE>:person</CODE> is
+the word <CODE>X</CODE>, and the value of this expression is the word <CODE>
+Xsquares</CODE>.
+If the person has chosen to move last, then <CODE>:person</CODE> is the word <CODE>O</CODE>,
+and the value of the expression is the word <CODE>Osquares</CODE>.  Either way,
+the expression evaluates to the name of the appropriate variable,
+into which the newly chosen square is appended.
+
+<P>
+
+<P>These are examples of <EM>indirect assignment,</EM> which means assigning
+a value to a variable whose name is computed by the program.  This
+is an unusual, advanced technique.  Most of the time you'll use an
+explicit quoted word as the first input to <CODE>make</CODE>.  But the technique
+is a powerful one; many programming languages don't have this capability
+at all.  In Logo it isn't something that had to be invented specially;
+it is a free consequence of the fact that the inputs to any procedure
+(including <CODE>make</CODE>) are evaluated before the procedure is invoked.
+
+<P><H2>Functional Programming</H2>
+
+<P>But don't get carried away with the flexibility of <CODE>make</CODE>.  <EM>
+Another</EM> advanced Logo technique avoids the whole idea of changing the
+value of a variable.  Any procedure that uses <CODE>make</CODE> can be rewritten
+to use an input to a subprocedure instead; compare the two versions of the
+<CODE>converse</CODE> program in this chapter.
+
+<P>Why would you want to avoid <CODE>make</CODE>?  One reason is that if the value of
+a variable changes partway through a procedure, then the sequence of steps
+within the procedure is very important.  One hot area in computer science
+research is <EM>parallel</EM> computation:  What if, instead of a computer
+that can only do one thing at a time, we build a computer that can do many
+things at once?  It's hard to take advantage of that ability if each step
+of our program depends on the results of previous steps, and if later steps
+depend on the result of this one.
+
+<P>A procedure is <EM>functional</EM> if it always gives the same output when
+invoked with the same input(s).  We need a few more Logo tools before we can
+write interesting functional programs, but we'll come back to this idea soon.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch4/v1ch4.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch3/variab.html b/js/games/nluqo.github.io/~bh/v1ch3/variab.html
new file mode 100644
index 0000000..178b7fe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch3/variab.html
@@ -0,0 +1,1083 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 3: Variables</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Variables</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch03.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch4/v1ch4.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+In the last chapter I suggested that you would find yourself limited
+in writing new procedures because your procedures don't take inputs,
+so they do exactly the same thing every time you use them.  In this
+chapter we'll overcome that limitation.
+
+<P><H2>User Procedures with Inputs</H2>
+
+<P>As a first example I'm going to write a very simple command named
+<CODE>greet</CODE>, which will take a person's name as its one input.  Here's how
+it will work:
+
+<P><PRE>? <U>greet &quot;Brian</U>
+Hello, Brian
+Pleased to meet you.
+? <U>greet &quot;Emma</U>
+Hello, Emma
+Pleased to meet you.
+</PRE>
+
+<P>This procedure will be similar to the <CODE>hello</CODE> command in the
+last chapter, except that what it prints will depend on the input
+we give it.
+
+<P>
+Each time we <EM>invoke</EM> <CODE>greet</CODE>, we want to give it an input.
+So that Logo will expect an input, we must provide for one
+when we <EM>define</EM> <CODE>greet</CODE>.  (Each procedure has a definite number
+of inputs; if <CODE>greet</CODE> takes one input once, it must take one input every
+time it's invoked.)  Also, in order for the instructions inside <CODE>greet</CODE>
+to be able to use the input, we must give the input a <EM>name.</EM>
+Both of these needs are met in the <CODE>to</CODE> command that supplies the title
+line for the procedure:
+
+<P><PRE>? <U>to greet :person</U>
+</PRE>
+
+<P>You are already familiar with the use of the <CODE>to</CODE> command,
+the need for a word like <CODE>greet</CODE> to name the procedure, and the appearance
+of the greater-than prompt instead of the question mark.  What's new
+here is the use of <CODE>:person</CODE> after the procedure name.  This addition
+tells Logo that the procedure <CODE>greet</CODE> will require one input and that
+the name of the input will be <CODE>person</CODE>.  It may help to think of the
+input as a container; when the procedure <CODE>greet</CODE> is invoked, something
+(such as the word <CODE>Brian</CODE> or the word <CODE>Emma</CODE>) will be put into the
+container named <CODE>person</CODE>.
+
+<P>Why is the colon used in front of the name <CODE>person</CODE>?  Remember that
+the inputs to <CODE>to</CODE>, unlike the inputs to all other Logo procedures,
+are <EM>not</EM> evaluated before <CODE>to</CODE> is invoked.  Later we'll see that
+a colon has a special meaning to the Logo evaluator, but that special
+meaning is <EM>not</EM> in effect in a title line.  Instead, the colon
+is simply a sort of mnemonic decoration to make a clear distinction
+between the word <CODE>greet</CODE>, which is a <EM>procedure</EM> name, and the word
+<CODE>person</CODE>, which is an <EM>input</EM> name.  Some versions of Logo don't
+even require the colon; you can experiment with yours if you're curious.
+(By the way, if you want to sound like a Logo maven, you should pronounce
+the colon &quot;dots,&quot; as in &quot;to greet dots person.&quot;)
+
+<P>To see why having a name for the input is helpful, look at the rest
+of the procedure definition:
+
+<P><PRE>&gt; <U>print sentence &quot;Hello, thing &quot;person</U>
+&gt; <U>print [Pleased to meet you.]</U>
+&gt; <U>end</U>
+?
+</PRE>
+
+<P>You already know about <CODE>print</CODE> and <CODE>sentence</CODE> and about
+quoting words with the quotation mark and quoting lists with square
+brackets.  What's new here is the procedure <CODE>thing</CODE>.
+
+<P><CODE>Thing</CODE> is an operation.  It takes one input, which must be a word
+that's the name of a container.  The output from <CODE>thing</CODE>
+is whatever datum is in the container.
+
+<P>The technical name for what I've been calling a &quot;container&quot; is a
+<EM>variable.</EM>  Every variable has a <EM>name</EM> and a <EM>thing</EM>
+(or <EM>value</EM>).  The name and the thing are both <EM>parts of</EM> the
+variable.  We'll sometimes speak loosely of &quot;the variable <CODE>
+person</CODE>,&quot; but you should realize that this <EM>is</EM> speaking
+loosely; what we should say is &quot;the variable named <CODE>person</CODE>.&quot;
+<CODE>Person</CODE> itself is a <EM>word,</EM> which is different from a
+variable.
+
+<P>When I type the instruction
+
+<P><PRE>greet &quot;Brian
+</PRE>
+
+<P>the Logo interpreter starts with the first word on the line,
+<CODE>greet</CODE>.  As usual, Logo takes this to be the name of a procedure. 
+Logo discovers that <CODE>greet</CODE> requires one input, so it continues to the
+next thing on the line.  This is a quoted word, <CODE>&quot;Brian</CODE>.  Since
+it's quoted, it requires no further interpretation.  The word <CODE>Brian</CODE>
+itself becomes the input to <CODE>greet</CODE>.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>While reading the definition
+of <CODE>greet</CODE>, it's easy to say &quot;the input is <CODE>person</CODE>&quot;; then, while
+reading an invocation of <CODE>greet</CODE>, it's easy to say &quot;the input is <CODE>
+Brian</CODE>.&quot;  To avoid confusion between the input's name and its value, there
+are more precise technical terms that we can use when necessary.  The name
+of the input, given in the title line of the procedure definition, is called
+a <EM>formal parameter.</EM>  The value of the input, given when the
+procedure is invoked, is called an <EM>actual argument.</EM>  In
+case the actual argument is the result of a more complicated subexpression,
+as in the instruction
+
+<P><PRE>greet first [Brian Harvey]
+</PRE>
+
+<P>we might want to distinguish between the <EM>actual argument
+expression,</EM> <CODE>first [Brian Harvey]</CODE>, and the <EM>actual argument
+value,</EM> which is the word <CODE>Brian</CODE>.</SMALL></BLOCKQUOTE></SMALL><P>Logo is now ready to invoke <CODE>greet</CODE>.  The first step, before
+evaluating the instruction lines in <CODE>greet</CODE>, is to create a
+variable to hold the input.  This variable is given the word <CODE>
+person</CODE> as its <EM>name,</EM> and the word <CODE>Brian</CODE> as its <EM>
+thing.</EM>  (Please notice that I don't have to know the name
+of <CODE>greet</CODE>'s input in order to use it.  All I have to know is what
+<EM>type of thing</EM>--a person's name--<CODE>greet</CODE> expects as its
+input.  What are the names of the inputs to a primitive like <CODE>
+sentence</CODE>?  We don't know and we don't need to know.)
+
+<P>Logo now evaluates the first instruction in <CODE>greet</CODE>.  The process
+is just like the ones we went through in such detail in Chapter 2.  In
+the course of this evaluation Logo invokes the procedure <CODE>thing</CODE>
+with the word <CODE>person</CODE> as its input.  The output from <CODE>thing</CODE>
+is the thing in the variable named <CODE>person</CODE>, namely the word <CODE>
+Brian</CODE>.  That's how the word <CODE>Brian</CODE> becomes one of the inputs to
+<CODE>se</CODE>.  Here's a plumbing diagram.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch3/varplumb.gif" ALT="figure: varplumb"></CENTER>
+
+<P><H2>What Kind of Container?</H2>
+
+<P>One of the favorite activities that Logo experts use to while away
+the time when the computer is down is to argue about the best metaphor
+to use for variables.  A variable is a container, but what kind of
+container?
+
+<P>One popular metaphor is a mailbox.  The mailbox has a <EM>name</EM> painted
+on it, like &quot;The Smiths.&quot;  Inside the mailbox is a piece of
+mail.  The person from the Post Office assigns a <EM>value</EM> to the
+box by putting a letter in it.  Reading a letter is like invoking
+<CODE>thing</CODE> on the mailbox.
+
+<P>I don't like this metaphor very much, and if I explain why not, it
+may help illuminate for you some details about how variables work.
+The first problem is that a real mailbox can contain several letters.
+A variable can only contain <EM>one</EM> thing or value.  (I should say
+&quot;one thing at a time,&quot; since we'll see that it's possible to replace
+the thing in a variable with a different thing.)
+
+<P>Another problem with the mailbox metaphor is that to read a letter,
+you take it out of the mailbox and tear it open.  Then it isn't in
+the mailbox any more.  When you invoke <CODE>thing</CODE> to look at the thing
+in a variable, on the other hand, it's still in the variable.  You
+could use <CODE>thing</CODE> again and get the same answer.
+
+<P>There are two metaphors that I like.  The one I like best won't make
+sense for a while, until we talk about scope of variables.
+But here is the one I like second best:  Sometimes when you take a
+bus or a taxi, there is a little frame up in front that looks like
+this:
+
+<P><CENTER><IMG SRC="taxiframe.gif" ALT="figure: taxiframe"></CENTER>
+
+<P>The phrase &quot;your driver's name is&quot; is like a label for
+this frame, and it corresponds to the <EM>name</EM> of a variable.  Each
+bus driver has a metal or plastic plate that says &quot;John Smith&quot;
+or whoever it is.  The driver inserts this plate, which corresponds
+to the <EM>value</EM> of the variable, into the frame.  You can see why
+this is a closer metaphor than the mailbox.  There is only one plate
+in the frame at a time.  To find out who's driving the bus, you just
+have to look inside the frame; you don't have to remove the plate.
+
+<P>(To be strictly fair I should tell you that some Logoites
+don't like the whole idea of containers.  They have a completely different
+metaphor, which involves sticking labels on things.  But I think it
+would only confuse you if I explained that one right now.)
+
+<P><H2>An Abbreviation</H2>
+
+<P>Examining the value of a variable is such a common thing to do in
+a Logo procedure that there is a special abbreviation for it.  Instead
+of the expression
+
+<P><PRE>thing &quot;person
+</PRE>
+
+<P>you can simply say
+
+<P><PRE>:person
+</PRE>
+
+<P>So in the <CODE>greet</CODE> procedure, we could have said
+
+<P><PRE>print sentence &quot;hello :person
+</PRE>
+
+<P>Please note that the colon is <EM>not</EM> just an abbreviation
+for the word <CODE>thing</CODE> but rather for the combination <CODE>thing</CODE>-quote.
+
+<P>When drawing plumbing diagrams, treat <CODE>:narf</CODE> as if it were spelled out
+as <CODE>thing &quot;narf</CODE>.
+
+<P><H2>More Procedures</H2>
+
+<P>It's time to invent more procedures.  I'll give you a couple of examples
+and you should make up more on your own.
+
+<P><PRE>to primer :name
+print (sentence first :name [is for] word :name &quot;.)
+print (sentence &quot;Run, word :name &quot;, &quot;run.)
+print (sentence &quot;See :name &quot;run.)
+end
+
+? <U>primer &quot;Paul</U>
+P is for Paul.
+Run, Paul, run.
+See Paul run.
+</PRE>
+
+<P>
+
+<P><CODE>Primer</CODE> uses the extra-input kludge I mentioned near the
+end of Chapter 2.  It also shows how the operations <CODE>word</CODE> and
+<CODE>sentence</CODE> can be used in combination to punctuate a sentence
+properly.
+
+<P>With all of these examples, incidentally, you should take the time to
+work through each instruction line to make sure you understand what
+is the input to what.
+
+<P><PRE>to soap.opera :him :her :it
+print (sentence :him &quot;loves word :her &quot;.)
+print (sentence &quot;However, :her [doesn't care for] :him &quot;particularly.)
+print (sentence :her [is madly in love with] word :it &quot;.)
+print (sentence :him [doesn't like] :it [very much.])
+end
+
+? <U>soap.opera &quot;Bill &quot;Sally &quot;Fred</U>
+Bill loves Sally.
+However, Sally doesn't care for Bill particularly.
+Sally is madly in love with Fred.
+Bill doesn't like Fred very much.
+</PRE>
+
+<P>
+In this example you see that a procedure can have more than
+one input.  <CODE>Soap.opera</CODE> has three inputs.  You can also see why each
+input must have a name, so that the instructions inside the procedure
+have a way to refer to the particular input you want to use.  You
+should also notice that <CODE>soap.opera</CODE> has a period in the middle of its
+name, not a space, because the name of a procedure must be a single
+Logo word.
+
+<P>
+
+<P>
+For the next example I'll show how you can write an <EM>interactive</EM>
+procedure, which reads something you type on the keyboard.  For this
+we need a new tool.  <CODE>Readlist</CODE> is an operation with no inputs.  Its
+output is always a list, containing whatever you type on a single
+line (up to a RETURN).  <CODE>Readlist</CODE> waits for you to type a line, then
+outputs what you type.
+
+<P><PRE>to converse
+print [Please type your full name.]
+halves readlist
+end
+
+to halves :name
+print sentence [Your first name is] first :name
+print sentence [Your last name is] last :name
+end
+
+? <U>converse</U>
+please type your full name.
+<U>Brian Harvey</U>
+Your first name is Brian
+Your last name is Harvey
+</PRE>
+
+<P>This program includes two procedures, <CODE>converse</CODE> and
+<CODE>halves</CODE>. (A <EM>program</EM> is a bunch of procedures that work
+together to achieve a common goal.) <CODE>Converse</CODE> is the <EM>
+top-level procedure.</EM>  In other
+words, <CODE>converse</CODE> is the procedure
+that you invoke at the question-mark prompt to set the program in
+motion.  <CODE>Halves</CODE> is a <EM>subprocedure</EM> of <CODE>converse</CODE>, which
+means that <CODE>halves</CODE> is invoked by an instruction inside <CODE>
+converse</CODE>.  Similarly, <CODE>converse</CODE> is a <EM>superprocedure</EM> of
+<CODE>halves</CODE>.
+
+<P>There are two things you should notice about the terminology &quot;subprocedure&quot;
+and &quot;superprocedure.&quot;  The first thing is that these are <EM>relative</EM>
+terms.  It doesn't mean anything to say &quot;<CODE>Halves</CODE> is a subprocedure.&quot;
+Any procedure can be used as part of a larger program.  <CODE>Converse</CODE>,
+for example, is a superprocedure of <CODE>halves</CODE>, but <CODE>converse</CODE> might at
+the same time be a subprocedure of some higher-level procedure we
+haven't written yet.  The second point is that primitive procedures
+can also be considered as subprocedures.  For example, <CODE>sentence</CODE> is
+a subprocedure of <CODE>halves</CODE>.
+
+<P>(Now that we're dealing with programs containing more than one defined
+procedure, it's a good time for me to remind you that the commands that act
+on procedures can accept a list as input as well as a single word.  For
+example, you can say
+
+<P><PRE>po [converse halves]
+</PRE>
+
+<P>and Logo will print out the definitions of both procedures.)
+
+<P>Why are two procedures necessary for this program?  When the program
+reads your full name, it has to remember the name so that it can print
+two parts of it separately.  It wouldn't work to say
+
+<P><PRE>to incorrect.converse
+print [Please type your full name.]
+print sentence [Your first name is] first readlist
+print sentence [Your last name is] last readlist
+end
+</PRE>
+
+<P>because each invocation of <CODE>readlist</CODE> would read a separate
+line from the keyboard instead of using the same list for both first
+and last names.  We solve this problem by using the output from <CODE>readlist</CODE>
+as the input to a subprocedure of <CODE>converse</CODE> and letting the subprocedure
+do the rest of the work.
+
+<P>One of the examples in Chapter 1 was this procedure:
+
+<P><PRE>to hi
+print [Hi. What's your name?]
+print sentence [How are you,] word first readlist &quot;?
+ignore readlist
+print [That's nice.]
+end
+</PRE>
+
+<P><CODE>Hi</CODE> uses a procedure called <CODE>ignore</CODE> that we haven't yet
+discussed.  <CODE>Ignore</CODE> is predefined in Berkeley Logo but would be easy
+enough to define yourself:
+
+<P><PRE>to ignore :something
+end
+</PRE>
+
+<P>That's not a misprint; <CODE>ignore</CODE> really has no instructions
+in its definition.  <CODE>Ignore</CODE> is a command that takes one input and
+has no effect at all!  Its purpose is to ignore the
+input.  In <CODE>hi</CODE>,
+the instruction
+
+<P><PRE>ignore readlist
+</PRE>
+
+<P>waits for you to type a line on the keyboard, then just
+ignores whatever you type.  (We couldn't just use <CODE>readlist</CODE> as an
+instruction all by itself because a complete instruction has to begin
+with a command, not an operation.  That is, since <CODE>readlist</CODE>
+outputs a value, there must be a command to tell Logo what to do with
+that value.  In this case, we want to <CODE>ignore</CODE> it.)
+
+<P>&raquo;Write a procedure to conjugate the present tense of a regular
+first-conjugation (-er) French verb.  (Never mind if you don't know what any
+of that means!  You're about to see.)  That is, the letters <CODE>er</CODE> at the
+end of the verb should be replaced by a different ending for each pronoun:
+
+<P><PRE>? <U>conj &quot;jouer</U>
+je joue
+tu joues
+il joue
+nous jouons
+vous jouez
+elles jouent
+</PRE>
+
+<P>The verb <CODE>jouer</CODE> (to play) consists of the root <CODE>jou</CODE>
+combined with the infinitive ending <CODE>er</CODE>.  Print six
+lines, as shown, in which the ending is changed to <CODE>e</CODE>, <CODE>es</CODE>, etc.
+Try your procedure on <CODE>monter</CODE> (to climb), <CODE>frapper</CODE> (to hit), and
+<CODE>garder</CODE> (to keep).
+
+<P>By the way, in a practical program we would have to deal with the fact that
+French contains many irregular verbs.  In addition to wildly irregular ones
+like &#234;tre (to be, irregular even in English) there are ones like manger,
+to eat, which are almost regular except that the first and second person
+plural forms keep the letter e: nous mangeons.  Many issues in natural
+language programming (that is, getting computers to speak or understand
+human language) turn out like this--90% of the cases are trivial, but most
+of your effort goes into the other 10%.
+
+<P><H2>An Aside on Variable Naming</H2>
+
+<P>In my metaphor about the frame containing the bus driver's name, the
+inscription on the frame tells you what to expect inside the frame.
+Variable names like <CODE>person</CODE> and <CODE>name</CODE> serve a similar
+purpose.  (You might argue that the <CODE>it</CODE> in the group of names
+<CODE>him</CODE>, <CODE>her</CODE>, and <CODE>it</CODE> is a little misleading.  But it
+serves to keep the story straight, probably better than an alternative
+like <CODE>him1</CODE> and <CODE>him2</CODE>.)
+
+<P>Another kind of frame is the one you sometimes see around a car's license
+plate:
+
+<P><CENTER><IMG SRC="mercedes.gif" ALT="figure: mercedes"></CENTER>
+
+<P>I know it's pedantic to pick apart a joke, but
+just the same I want to make the point that this one works only because
+the car itself provides enough clues that what belongs in the frame
+is indeed a license plate.  If you were unfamiliar with the idea of
+license plates, that frame wouldn't help you.
+
+<P>The computer equivalent of this sort of joke is to give your variables
+names that don't reflect their purpose in the procedure.  Some people
+like to name variables after their boyfriends or girlfriends or relatives.
+That's okay if you're writing simple programs, like the ones in this
+chapter, in which it's very easy to read the program and figure out
+what it does.  But when you start writing more complicated programs,
+you'll need all the help you can get in remembering what each piece
+of the program does.  I recommend starting early on the habit of using
+sensible variable names.
+
+<P><H2>Don't Call It X</H2>
+
+<P>Another source of trouble in variable naming is lazy fingers.  When
+I'm teaching programming classes, a big part of my job is reading
+program listings that students bring to me, saying, &quot;I just
+can't find the bug in this program.&quot;  I have an absolute rule that
+I refuse to read any program in which there is a variable named <CODE>x</CODE>.
+
+<P>My students always complain about this arbitrary rule at first.  But
+more often than not, a student goes through a program
+renaming all the variables and then finds that the bug has disappeared!
+This magical result comes about because when you use variable names
+like <CODE>x</CODE>, you run the risk of using the same name for two different
+purposes at the same time.  When you pick reasonable names, you'll
+pick two different names for the two purposes.
+
+<P>It is people who've programmed in BASIC who are most likely to make
+this mistake.  For reasons that aren't very important any more, BASIC
+used to <EM>require</EM> single-letter variable names.  Even now there
+are limits on longer names in most versions of BASIC that make it
+risky to use more than two or three letters in a name.  So if you're
+a BASIC programmer, you've probably gotten into bad habits, which
+you should make a point of correcting.
+
+<P><H2>Writing New Operations</H2>
+
+<P>So far all the procedures we've written have been commands.  That
+is, our procedures have had an <EM>effect</EM> (like printing something)
+rather than an <EM>output</EM> to be used with other procedures.  You
+can also write operations, once you know how to give your procedure
+an output.  Here is an example:
+
+<P><PRE>to second :thing
+output first butfirst :thing
+end
+
+? <U>print second [the red computer]</U>
+red
+</PRE>
+
+<P><CODE>Second</CODE> is an operation with one input.  Like the primitive
+operation <CODE>first</CODE>, it extracts a component of its input, either a character
+from a word or a member from a list.  However, it outputs the second
+component instead of the first one.
+
+<P>What is new in this procedure definition is the use of the primitive
+command <CODE>output</CODE>.  <CODE>Output</CODE> can
+be used only inside a procedure definition,
+not at top level.  (In other words, not when you are typing in response
+to a question-mark prompt.)  It takes one input, which can be any
+datum.  The effect of <CODE>output</CODE> is to make the datum you supply as
+its input be the output from your procedure.
+
+<P>Some people find it confusing that <CODE>output</CODE> itself is a <EM>command,</EM>
+even though a procedure that uses <CODE>output</CODE> is an <EM>operation.</EM> 
+But it makes sense for <CODE>output</CODE> to be the head of a complete instruction.
+The effect of the instruction is to inform Logo what output you want
+your procedure (the procedure named <CODE>second</CODE> in this case) to supply.
+
+<P>Another possible confusion is between <CODE>output</CODE>
+and <CODE>print</CODE>.  The problem
+is that people talk about &quot;computer output&quot; while waving a stack
+of paper at you, so you think of &quot;output&quot; as meaning &quot;stuff the
+computer printed.&quot;  But in Logo, &quot;output&quot; is something one procedure
+hands to another procedure, not something that is printed.
+
+<P>
+I chose the name <CODE>thing</CODE> for the input to <CODE>second</CODE> to remind
+myself that the input can be anything, word or list.  <CODE>Thing</CODE> is also,
+as you know, the name of a primitive procedure.  This is perfectly
+okay.  The same word can name both a procedure and a variable.  Logo
+can tell which you mean by the context.  A word that is used in an
+instruction without punctuation is a procedure name.  A word that
+is used as an input to the procedure <CODE>thing</CODE> is a variable name.  (This
+can happen because you put dots in front of the word as an abbreviation
+or because you explicitly typed <CODE>thing</CODE> and used the word as its input.)
+The expression <CODE>:thing</CODE> is an abbreviation for
+
+<P><PRE>thing &quot;thing
+</PRE>
+
+<P>in which the first <CODE>thing</CODE> names a procedure, and the
+second <CODE>thing</CODE> names a variable.
+
+<P>
+
+<P>&raquo;Write an operation <CODE>query</CODE> that takes a sentence as input and that
+outputs a question formed by swapping the first two words and adding a
+question mark to the last word:
+
+<P><PRE>? <U>print query [I should have known better]</U>
+should I have known better?
+? <U>print query [you are experienced]</U>
+are you experienced?
+</PRE>
+
+<P>
+
+<H2>Scope of Variables</H2>
+
+<P>This is going to be a somewhat complicated section, and an important
+one, so slow down and read it carefully.
+
+<P>
+When one procedure with inputs invokes another procedure with inputs
+as a subprocedure, it's possible for them to share variables and
+it's also possible for them to have separate variables.  The following
+example isn't meant to do anything particularly interesting, just
+to make explicit what the rules are.
+
+<P><PRE>to top :outer :inner
+print [I'm in top.]
+print sentence [:outer is] :outer
+print sentence [:inner is] :inner
+bottom &quot;x
+print [I'm in top again.]
+print sentence [:outer is] :outer
+print sentence [:inner is] :inner
+end
+
+to bottom :inner
+print [I'm in bottom.]
+print sentence [:outer is] :outer
+print sentence [:inner is] :inner
+end
+
+? <U>top &quot;a &quot;b</U>
+I'm in top.
+:outer is a
+:inner is b
+I'm in bottom.
+:outer is a
+:inner is x
+I'm in top again.
+:outer is a
+:inner is b
+</PRE>
+
+<P>First, concentrate on the variable named <CODE>outer</CODE>.  This name
+is used for the first input to <CODE>top</CODE>.  <CODE>Bottom</CODE> doesn't have an input
+named <CODE>outer</CODE>.  When <CODE>bottom</CODE> refers to <CODE>:outer</CODE>, since it doesn't have
+one of its own, the reference is to the variable <CODE>outer</CODE> that belongs
+to its superprocedure, <CODE>top</CODE>.  That's why <CODE>a</CODE> is printed as the value
+of <CODE>outer</CODE> in both procedures.
+
+<P><BLOCKQUOTE>
+<STRONG>If a procedure refers to a variable that does not belong to that
+procedure, Logo looks for a variable of that name in the superprocedure
+of that procedure.</STRONG></BLOCKQUOTE>
+
+<P>Suppose procedure <CODE>a</CODE> invokes procedure <CODE>b</CODE>, and <CODE>b</CODE>
+invokes <CODE>c</CODE>.  Suppose an instruction in procedure <CODE>c</CODE> refers
+to a variable <CODE>v</CODE>.  First Logo tries to find a variable named <CODE>v</CODE>
+that belongs to <CODE>c</CODE>.  If that fails, Logo looks for a variable
+named <CODE>v</CODE> that belongs to procedure <CODE>b</CODE>.  Finally, if neither
+<CODE>c</CODE> nor <CODE>b</CODE> has a variable named <CODE>v</CODE>, Logo looks for such
+a variable that belongs to procedure <CODE>a</CODE>.
+
+<P>
+
+<P>Now look at <CODE>inner</CODE>.  The important thing to understand is that
+<EM>there are two variables named</EM> <CODE>inner</CODE>, one belonging to
+each procedure. When <CODE>top</CODE> is invoked, its input named <CODE>inner</CODE>
+gets the word <CODE>b</CODE> as its value.  When <CODE>top</CODE> invokes <CODE>
+bottom</CODE>, <CODE>bottom</CODE>'s input (which is also named <CODE>inner</CODE>) gets
+the value <CODE>x</CODE>.  But when <CODE>bottom</CODE> finishes, and <CODE>top</CODE>
+continues, the name <CODE>inner</CODE> once again refers to the variable
+named <CODE>inner</CODE> that belongs to <CODE>top</CODE>.  The one that belongs
+to <CODE>bottom</CODE> has disappeared.
+
+<P><BLOCKQUOTE>
+<STRONG>Variables that belong to a procedure are temporary.  They exist only
+so long as that procedure is active.  If one procedure has a variable
+with the same name as one belonging to its superprocedure, the latter
+is temporarily &quot;hidden&quot; while the subprocedure is running.
+</STRONG></BLOCKQUOTE>
+
+<P>
+Because each procedure has its own variable named <CODE>inner</CODE>, we refer
+to the procedure input variables as <EM>local</EM> to
+a particular procedure.
+Inputs are always local in Logo.  There is also a name for the fact
+that a procedure can refer to variables belonging to its superprocedures.
+If you want to show off, you can explain to people that Logo has <EM>
+dynamic scope,</EM> which is what that rule is called.
+
+<P>
+
+<H2>The Little Person Metaphor</H2>
+
+<P>Earlier I told you my second favorite metaphor about variables.  My
+very favorite is an old one, which Logo teachers have been
+using for years.  It is a metaphor about procedures as well as variables,
+which is why I didn't present it earlier.  Now that you're thinking
+about the issue of variable scope, you can see that to have a full
+understanding of variables, you have to be thinking about procedures
+at the same time.
+
+<P>The metaphor is that inside the computer there is a large community of
+little people.  Each person is a specialist at a particular procedure.
+So there are <CODE>print</CODE> people and <CODE>butfirst</CODE> people and <CODE>
+bottom</CODE> people and <CODE>greet</CODE> people.  I like to think of these
+people as elves, because I started teaching Logo on a computer
+called a PDP-11, and I like the pun of an elf inside an 11.  But if
+you find elves too cute or childish, perhaps you should think of these
+people as doctors in white coats, specializing in dermatology or
+ophthalmology or whatever.  Another terminology for the same idea, one
+which is becoming more and more widely used in advanced computer
+science circles, is to call the little people <EM>actors</EM> and to
+call their procedures <EM>scripts.</EM>  Each actor has only one script,
+but several actors can have the same script.
+
+<P>In any case, what's important is that when a procedure is invoked,
+a little person who is an expert on that procedure goes to work. 
+(It's important that the person is <EM>an expert in</EM> the procedure,
+and not the procedure <EM>itself;</EM> we'll see later that there
+can be two little people carrying out the same procedure at the same
+time.  This is one of the more complicated ideas in Logo, so I think
+the expert metaphor will help you later.)
+
+<P>You may be wondering where the variables come in.  Well, each elf
+is wearing a jerkin, a kind of vest, with a bunch of pockets.  (If
+your people are doctors, the pockets are in those white lab coats.)
+A person has as many pockets as the procedure he or she knows has
+inputs.  A <CODE>print</CODE> expert has one pocket; a <CODE>sentence</CODE> expert has two.
+Each pocket can contain a datum, the value of the variable.  (The
+pockets are only big enough for a single datum.)  Each pocket also
+has a name tag sewn on the inside, which contains the name of the
+variable.
+
+<P>The name tags are on the inside to make the point that other people
+don't need to know the names of an expert's variables.  Other experts
+only need to know how many pockets someone has and what kind of thing
+to put in them.
+
+<P>When I typed
+
+<P><PRE>top &quot;a &quot;b
+</PRE>
+
+<P>the Chief Elf (whose name is Evaluator) found an elf named
+Theresa, who is a <CODE>top</CODE> expert, and put an <CODE>a</CODE> in her first pocket and
+a <CODE>b</CODE> in her second pocket.
+
+<P>Theresa's first instruction is
+
+<P><PRE>print [I'm in top.]
+</PRE>
+
+<P>To carry out that instruction, she handed the list <CODE>[I'm
+in top.]</CODE> to another elf named Peter, a <CODE>print</CODE> expert.
+
+<P>Theresa's second instruction is
+
+<P><PRE>print sentence [:outer is] :outer
+</PRE>
+
+<P>To carry out this instruction, Theresa wanted to hire Peter
+again, but before she could give him his orders, she first had to
+deal with Sally, a <CODE>sentence</CODE> expert.  (This is the old evaluation story
+from Chapter 2 again.)  But Theresa didn't know what to put in Sally's
+second pocket until she got the information from Tom, a <CODE>thing</CODE> expert.
+(Remember that <CODE>:outer</CODE> is an abbreviation for <CODE>thing &quot;outer</CODE>.)
+
+<P>What's important right now is how Tom does his job.  Tom is a sort
+of pickpocket.  He doesn't steal anything; he just sneaks looks in
+other people's pockets.  There are lots of people inside the computer,
+but the only ones with things in their pockets are the ones who are
+actually employed at a given moment.  Aside from Tom himself, the
+only person who was employed at the time was Theresa, so Tom could
+only look in her pockets for a name tag saying <CODE>outer</CODE>.  (Theresa is
+<EM>planning</EM> to hire Sally and then Peter, to finish carrying out
+her instruction, but she can't hire them until she gets the information
+she needs from Tom.)
+
+<P>Later Theresa will hire Bonnie, a <CODE>bottom</CODE> specialist, to help with
+the instruction
+
+<P><PRE>bottom &quot;x
+</PRE>
+
+<P>Theresa will give Bonnie the word <CODE>x</CODE> to put in her pocket.
+Bonnie also has an instruction
+
+<P><PRE>print sentence [:outer is] :outer
+</PRE>
+
+<P>As part of the process of carrying out this instruction,
+Bonnie will hire Tom to look for something named <CODE>outer</CODE>.  In
+that case Tom first looks in the pockets of Bonnie, the person who hired
+him.  Not finding a pocket named <CODE>outer</CODE>, Tom can <EM>then</EM>
+check the pockets of Theresa, the person who hired Bonnie.  (If you're
+studying Logo in a class with other people, it can be both fun and
+instructive to act this out with actual people and pockets.)
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch3/elf1.gif" ALT="figure: elf1"></CENTER>
+
+
+<P>An appropriate aspect of this metaphor is that it's slightly rude to look in
+someone else's pockets, and you shouldn't do it unnecessarily.  This
+corresponds to a widely accepted rule of Logo style: most of the time, you
+should write procedures so that they don't have to look at variables
+belonging to their superprocedures.  Whatever information a procedure needs
+should be given to it explicitly, as an input.
+You'll find situations in which that rule seems very helpful, and other
+situations in which taking advantage of dynamic scope seems to make the
+program easier to understand.
+
+<P>&raquo;The <CODE>conj</CODE> procedure you wrote earlier deals only with the present
+tense of the verb.  In French, many other tenses can be formed by a similar
+process of replacing the endings, but with different endings for different
+tenses.  Also, second conjugation (-ir) and third conjugation (-re) verbs
+have different endings even in the present tense.  You don't want to write
+dozens of almost-identical procedures for each of these cases.  Instead,
+write a single procedure <CODE>superconj</CODE> that takes two inputs, a verb and a
+list of six endings, and performs the conjugation:
+
+<P><PRE>? <U>superconj &quot;jouer [ais ais ait ions iez aient]</U>      ; imperfect tense
+je jouais
+tu jouais
+il jouait
+nous jouions
+vous jouiez
+elles jouaient
+? <U>superconj &quot;finir [is is it issons issez issent]</U>    ; 2nd conj present
+je finis
+tu finis
+il finit
+nous finissons
+vous finissez
+elles finissent
+</PRE>
+
+<P>You can save some typing and take advantage of dynamic scope if
+you use a helper procedure.  My <CODE>superconj</CODE> looks like this:
+
+<P><PRE>to superconj :verb :endings
+sc1 &quot;je 1
+sc1 &quot;tu 2
+sc1 &quot;il 3
+sc1 &quot;nous 4
+sc1 &quot;vous 5
+sc1 &quot;elles 6
+end
+</PRE>
+
+<P>Write the helper procedure <CODE>sc1</CODE> to finish this.
+
+<P><H2>Changing the Value of a Variable</H2>
+
+<P>It is possible for a procedure to change the thing in a variable by
+using the <CODE>make</CODE> command.  <CODE>Make</CODE> takes two inputs.  The first
+input must be a word that is the name of a variable, just like the
+input to <CODE>thing</CODE>.  <CODE>Make</CODE>'s second input can be any datum.
+The effect of <CODE>make</CODE> is to make the variable named by its first
+input contain as its value the datum that is its second input,
+instead of whatever used to be its value.  For example,
+
+<P><PRE>make &quot;inner &quot;y
+</PRE>
+
+<P>would make the variable named <CODE>inner</CODE> have the word <CODE>y</CODE> as its
+value.  (If there are two variables named <CODE>inner</CODE>, as is the case while
+<CODE>bottom</CODE> is running, it is the one in the lower-level procedure that
+is changed.  This is the same as the rule for <CODE>thing</CODE> that we have
+already discussed.)
+
+<P>Suppose a procedure has variables named <CODE>old</CODE> and <CODE>new</CODE> and you want
+to copy the thing in <CODE>old</CODE> into <CODE>new</CODE>.  You could say
+
+<P><PRE>make &quot;new thing &quot;old
+</PRE>
+
+<P>or use the abbreviation
+
+<P><PRE>make &quot;new :old
+</PRE>
+
+<P>People who don't understand evaluation sometimes get very
+upset about the fact that a quotation mark is used to refer to <CODE>
+new</CODE> and a colon is used to refer to <CODE>old</CODE>.  They think this is
+just mumbo-jumbo because they don't understand that a quotation mark
+is part of what the colon abbreviates!  In both cases we are referring
+to the name of a variable.  A variable name is a Logo word.  To refer
+to a word in an instruction and have it evaluate to itself, not invoke
+a procedure named <CODE>new</CODE> or <CODE>old</CODE>, the word must be quoted.
+The difference is that the first input to <CODE>make</CODE> is the <EM>
+name</EM> of the variable we want to change (<CODE>new</CODE>), while the
+second input to <CODE>make</CODE> is, in this example, the <EM>value</EM> of a
+variable (<CODE>old</CODE>), which we get by invoking <CODE>thing</CODE>. Since you
+understand all this, you won't get upset.  You also won't resort to
+magic formulas like &quot;always use quote for the first variable and
+dots for the second&quot; because you understand that the inputs to <CODE>
+make</CODE> can be computed with any expression you want!  For example, we
+could copy <CODE>old</CODE>'s value into <CODE>new</CODE> this way:
+
+<P><PRE>make first [new old] thing last [new old]
+</PRE>
+
+<P>This instruction contains neither a quotation mark nor a
+colon, but the inputs to <CODE>make</CODE> are exactly the same as they were in
+the earlier version.
+
+<P>
+Earlier I mentioned that it is considered slightly rude for a procedure
+to read its superprocedures' variables.  It is <EM>extremely</EM> rude
+for a procedure to change the values of other procedures' variables!
+Perhaps you can see why that's so.  If you're trying to read the definition
+of a procedure, and part way through that procedure it invokes a subprocedure,
+there is no clue to the fact that the subprocedure changes a variable.
+If you break this rule, it makes your program very hard to read because
+you have to read all the procedures at once.  If each procedure deals
+only with its own variables, you have written a <EM>modular</EM> program,
+in which each piece can be understood separately.
+
+<P>
+
+<H2>Global and Local Variables</H2>
+
+<P>What if the first input to <CODE>make</CODE> isn't the name of an input to an active
+procedure?  In other words, what if you try to assign a value to a
+variable that doesn't exist?  What happens is that a new variable
+is created that is <EM>not</EM> local to any procedure.  The name for
+this kind of variable is a <EM>global</EM> variable.  <CODE>Thing</CODE> looks at
+global variables if it can't find a local variable with the name you
+want.
+
+<P>A local variable disappears when the procedure it belongs to finishes.
+Global variables don't belong to any procedure, so they stay around
+forever.  This can be convenient, when you have a permanent body of
+information that several procedures must use.  But it can also lead
+to problems if you are careless about what's in which variable.  Local
+variables come and go with the procedures they belong to, so it's
+easy to avoid clutter when you use them.  Global variables are more
+like old socks under the bed.
+
+<P>If you are a BASIC programmer, you've become accustomed to a language
+in which all variables are global.  I've learned over the years that
+it's impossible, at this point in your career, for you to appreciate
+the profound effect that's had on your style of programming.  Only
+after you've used procedural languages like Logo for quite a while
+will you understand.  Meanwhile there is only one hope for you: you
+are not allowed to use global variables <EM>at all</EM> for the next few months.
+Please take my word for it.
+
+<P>Sometimes it's convenient for a procedure to use a variable that is
+not an input, but which could just as well be local.  To do this, you
+can use the <CODE>local</CODE> command.  This command takes one input, a word.  It
+creates a variable, local to the procedure that invoked <CODE>local</CODE>,
+with that word as its name.  For example, we can use <CODE>local</CODE> to
+rewrite the earlier <CODE>converse</CODE> example without needing the <CODE>
+halves</CODE> subprocedure:
+
+<P><PRE>to new.converse
+local &quot;name
+print [Please type your full name.]
+make &quot;name readlist
+print sentence [Your first name is] first :name
+print sentence [Your last name is] last :name
+end
+</PRE>
+
+<P>The instruction that invokes <CODE>local</CODE> can be anywhere in the
+procedure before the variable is given a value with <CODE>make</CODE>.  It's traditional,
+though, to put <CODE>local</CODE> instructions at the beginning of a procedure.
+
+<P>The same procedure would work even without the <CODE>local</CODE>, but then it
+would create a global variable named <CODE>name</CODE>.  It's much neater if you
+can avoid leaving unnecessary global variables around, so you should
+use <CODE>local</CODE> unless there is a reason why you really need a global
+variable.
+
+<P>
+
+<H2>Indirect Assignment</H2>
+
+<P>Earlier I showed you the example
+
+<P><PRE>make first [new old] thing last [new old]
+</PRE>
+
+<P>in which the first input to <CODE>make</CODE> was
+the result of evaluating a complex expression rather than an explicit
+quoted word in the instruction.  But the example was kind of silly,
+used only to make the point that such a thing is possible.
+
+<P>Here are a couple of examples in which the use of a computed first
+input to <CODE>make</CODE> really makes sense.  These are tricky examples; it
+may take a couple of readings before you see what I'm doing here.
+The technique I'm using is an advanced part of Logo programming.
+First is the procedure <CODE>increment</CODE>:
+
+<P><PRE>to increment :variable
+make :variable (thing :variable)+1
+end
+</PRE>
+
+<P>To <EM>increment</EM> a variable means to add something to
+it, usually (as in this procedure) to add one to it.  The input to
+<CODE>increment</CODE> is the name of a variable.  The procedure adds 1 to that
+variable:
+
+<P><PRE>? <U>make &quot;count 12</U>
+? <U>print :count</U>
+12
+? <U>increment &quot;count</U>
+? <U>print :count</U>
+13
+</PRE>
+
+<P>You may wonder what the point is.  Why couldn't I just say
+
+<P><PRE>make &quot;count :count+1
+</PRE>
+
+<P>instead of the obscure <CODE>make</CODE> instruction I used?  The
+answer is that if we have several variables in the program, each of
+which sometimes gets incremented, this technique allows a single
+procedure to be able to increment any variable.  It's a kind of
+shorthand for something we might want to do repeatedly.
+
+<P>In the definition of <CODE>increment</CODE>, the first input to <CODE>make</CODE>
+is not <CODE>&quot;variable</CODE> but rather <CODE>:variable</CODE>.  Therefore, the word
+<CODE>variable</CODE> itself is not the name of the variable that is incremented.
+(To say that more simply, the variable named <CODE>variable</CODE> isn't
+incremented.)
+Instead the variable named <CODE>variable</CODE> contains as its value the
+name of <EM>another</EM> variable.  (In the example the value of <CODE>
+variable</CODE> is the word <CODE>count</CODE>.) It is that second variable
+whose value is changed.
+(In the example <CODE>:count</CODE> was 12 and becomes 13.)
+
+<P>While reading <CODE>increment</CODE>, remember that in the second input to
+<CODE>make</CODE>,
+
+<P><PRE>thing :variable
+</PRE>
+
+<P>is really an abbreviation for
+
+<P><PRE>thing thing &quot;variable
+</PRE>
+
+<P>In other words this expression asks for the value of the
+variable whose name is itself the value of <CODE>variable</CODE>.
+
+<P>As a second example suppose you're writing a program to play a game
+of Tic-Tac-Toe.  The computer will play one side and a person can
+play the other side.  The person gets to choose X or O (that is, going
+first or second).  The choice might be made with procedures like these:
+
+<P>
+<PRE>to computer.first
+make &quot;computer &quot;X
+make &quot;person &quot;O
+end
+
+to person.first
+make &quot;person &quot;X
+make &quot;computer &quot;O
+end
+</PRE>
+
+<P>Elsewhere in the program there will be a procedure that
+asks the person where he or she wants to move.  Suppose the squares
+on the board are numbered 1 through 9, and suppose we have two variables,
+<CODE>Xsquares</CODE> and <CODE>Osquares</CODE>, which contain lists of numbers corresponding
+to the squares marked X and O.  Look at this procedure:
+
+<P><PRE>to person.move :square
+make word :person &quot;squares sentence :square thing word :person &quot;squares
+end
+</PRE>
+
+<P>The input to <CODE>person.move</CODE> is the number of the square into
+which the person has asked to move.  The first input to <CODE>make</CODE> is the
+expression
+
+<P><PRE>word :person &quot;squares
+</PRE>
+
+<P>If the person has chosen to move first, then <CODE>:person</CODE> is
+the word <CODE>X</CODE>, and the value of this expression is the word <CODE>
+Xsquares</CODE>.
+If the person has chosen to move last, then <CODE>:person</CODE> is the word <CODE>O</CODE>,
+and the value of the expression is the word <CODE>Osquares</CODE>.  Either way,
+the expression evaluates to the name of the appropriate variable,
+into which the newly chosen square is appended.
+
+<P>
+
+<P>These are examples of <EM>indirect assignment,</EM> which means assigning
+a value to a variable whose name is computed by the program.  This
+is an unusual, advanced technique.  Most of the time you'll use an
+explicit quoted word as the first input to <CODE>make</CODE>.  But the technique
+is a powerful one; many programming languages don't have this capability
+at all.  In Logo it isn't something that had to be invented specially;
+it is a free consequence of the fact that the inputs to any procedure
+(including <CODE>make</CODE>) are evaluated before the procedure is invoked.
+
+<P><H2>Functional Programming</H2>
+
+<P>But don't get carried away with the flexibility of <CODE>make</CODE>.  <EM>
+Another</EM> advanced Logo technique avoids the whole idea of changing the
+value of a variable.  Any procedure that uses <CODE>make</CODE> can be rewritten
+to use an input to a subprocedure instead; compare the two versions of the
+<CODE>converse</CODE> program in this chapter.
+
+<P>Why would you want to avoid <CODE>make</CODE>?  One reason is that if the value of
+a variable changes partway through a procedure, then the sequence of steps
+within the procedure is very important.  One hot area in computer science
+research is <EM>parallel</EM> computation:  What if, instead of a computer
+that can only do one thing at a time, we build a computer that can do many
+things at once?  It's hard to take advantage of that ability if each step
+of our program depends on the results of previous steps, and if later steps
+depend on the result of this one.
+
+<P>A procedure is <EM>functional</EM> if it always gives the same output when
+invoked with the same input(s).  We need a few more Logo tools before we can
+write interesting functional programs, but we'll come back to this idea soon.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v1ch2/v1ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch4/v1ch4.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch4/predic.html b/js/games/nluqo.github.io/~bh/v1ch4/predic.html
new file mode 100644
index 0000000..c36950f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch4/predic.html
@@ -0,0 +1,830 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 4: Predicates</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Predicates</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch04.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch3/v1ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch5/v1ch5.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+By introducing variables in Chapter 3, we made it possible for a
+procedure to operate on different data each time you invoke it.  But
+the <EM>pattern</EM> of what the procedure does with the data remains
+constant.  We can get even more variety out of our procedures if we
+can vary the <EM>instructions</EM> that the procedure executes.  We
+need a way to say, &quot;Sometimes do this; other times do that.&quot;
+
+<P><H2>True or False</H2>
+
+<P>One helpful metaphor is this:  When you invoke a command, you're giving
+the computer an order.  &quot;Now hear this!  <CODE>Print</CODE> such-and-such!&quot;
+But when you invoke an operation, you're asking the computer a <EM>
+question.</EM>  &quot;What is the <CODE>first</CODE> member of such-and-such?&quot;
+
+<P>In real life we single out as a special category <EM>
+yes-or-no questions.</EM>
+For example, these special questions form the basis of the
+game Twenty Questions.  The corresponding
+category in Logo is the <EM>predicate.</EM>
+A predicate is an operation whose output is always either the word
+<CODE>true</CODE> or the word <CODE>false</CODE>.
+
+<P>For example, <CODE>listp</CODE> (pronounced &quot;list-pea&quot;) is a predicate
+that takes one input.  The input can be any datum.  The output from
+<CODE>listp</CODE> is <CODE>true</CODE> if the input is a list, <CODE>false</CODE> if the
+input is a word.
+
+<P><CODE>Wordp</CODE> is another predicate that takes one input.  The input can
+be any datum.  The output from <CODE>wordp</CODE> is <CODE>true</CODE> if the input
+is a word, <CODE>false</CODE> if the input is a list.  (This is the opposite
+of the output from <CODE>listp</CODE>.)
+
+<P><CODE>Emptyp</CODE> is also a predicate with one input.  The input can be any
+datum. The output from <CODE>emptyp</CODE> is <CODE>true</CODE> if the input is
+either the empty word or the empty list; if the input is anything
+else, the output is <CODE>false</CODE>.
+
+<P>You'll have noticed by now that predicates tend to have names ending
+in the letter <CODE>p</CODE>.  This is not quite a universal rule, but almost.
+It's a good idea to follow the same convention in naming your
+own predicates.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Many versions of Logo use a question mark at the end
+of names of predicates, instead of a <CODE>p</CODE>.  For example, you may see <CODE>
+list?</CODE> instead of <CODE>listp</CODE>.  Berkeley Logo accepts either form, but I
+prefer the <CODE>p</CODE> version.</SMALL></BLOCKQUOTE></SMALL><P>
+
+<P>As I'm describing primitive predicates, you might want to try them
+out on the computer.  You can do experiments like this:
+
+<P><PRE>? <U>print wordp &quot;hello</U>
+true
+? <U>print wordp [hello]</U>
+false
+? <U>print emptyp []</U>
+true
+? <U>print emptyp 0</U>
+false
+</PRE>
+
+<P>Of course, most of the time you won't actually want to print
+the output from a predicate.  You'll see in a few moments
+how we can use a predicate to control the instructions carried out
+in a procedure.
+
+<P>But first here are a few more primitive predicates.  <CODE>Numberp</CODE> takes one
+input, which can be any datum.  The output from <CODE>numberp</CODE> is <CODE>
+true</CODE> if the input is a number, <CODE>false</CODE> otherwise.
+
+<P><CODE>Equalp</CODE> takes two inputs, each of which can be any datum.  The output
+from <CODE>equalp</CODE> is <CODE>true</CODE> if the two inputs are identical or if they're
+both numbers and they're numerically equal.  That is, 3 and 3.0 are
+numerically equal even though they're not identical words.  A list is
+never equal to a word.
+
+<P><PRE>? <U>print equalp 3 3.0</U>
+true
+? <U>print equalp &quot;hello [hello]</U>
+false
+? <U>print equalp &quot;hello first [hello]</U>
+true
+? <U>print equalp &quot; []</U>
+false
+? <U>print equalp [] butfirst [hello]</U>
+true
+</PRE>
+
+<P>
+
+<P>The equal sign (<CODE>=</CODE>) can
+be used as an <EM>infix</EM> equivalent
+of <CODE>equalp</CODE>:
+
+<P><PRE>? <U>print &quot;hello = first [hello]</U>
+true
+? <U>print 2 = 3</U>
+false
+</PRE>
+
+<P>As I mentioned in Chapter 2, if you use infix operations
+you have to be careful about what is grouped with what.  It varies
+between versions of Logo.  Here is an example I tried in Berkeley Logo:
+
+<P><PRE>? <U>print first [hello] = &quot;hello</U>
+f
+</PRE>
+
+<P>Among current commercial implementations, Object Logo and
+Microworlds give the same answer <CODE>f</CODE>.  But here is the <EM>same</EM>
+example in Logowriter:
+
+<P><PRE>? <U>print first [hello] = &quot;hello</U>
+true
+</PRE>
+
+<P>You can avoid confusion by using parentheses.  The following
+instructions work reliably in any Logo:
+
+<P><PRE>? <U>print (first [hello]) = &quot;hello</U>
+true
+? <U>print first ([hello] = &quot;hello)</U>
+f
+</PRE>
+
+<P><CODE>Memberp</CODE> is a predicate with two inputs.  If the second input is a
+list, then the first can be any datum.  If the second input is a word, then
+the first must be a one-character word.  The output from <CODE>memberp</CODE>
+is true if the first input is a member of the second input.
+
+<P><PRE>? <U>print memberp &quot;rain [the rain in Spain]</U>
+true
+? <U>print memberp [the rain] [the rain in Spain]</U>
+false
+? <U>print memberp [the rain] [[the rain] in Spain]</U>
+true
+? <U>print memberp &quot;e &quot;please</U>
+true
+? <U>print memberp &quot;e &quot;plain</U>
+false
+</PRE>
+
+<P><CODE>Lessp</CODE> and <CODE>greaterp</CODE> are predicates that take two inputs.
+Both inputs must be numbers.  The output from <CODE>lessp</CODE> is <CODE>true</CODE> if
+the first input is numerically less than the second; the output from <CODE>
+greaterp</CODE> is true if the first is greater than the second.  Otherwise the
+output is <CODE>false</CODE>.  (In particular, both <CODE>lessp</CODE> and <CODE>greaterp</CODE>
+output <CODE>false</CODE> if the two inputs are equal.) The infix forms for <CODE>
+lessp</CODE> (<CODE>&lt;</CODE>) and <CODE>greaterp</CODE> (<CODE>&gt;</CODE>) are also allowed.
+
+<P><H2>Defining Your Own Predicates</H2>
+
+<P>Here are two examples of how you can create new predicates:
+
+<P><PRE>to vowelp :letter
+output memberp :letter [a e i o u]
+end
+
+? <U>print vowelp &quot;e</U>
+true
+? <U>print vowelp &quot;g</U>
+false
+
+to oddp :number
+output equalp (remainder :number 2) 1
+end
+
+? <U>print oddp 5</U>
+true
+? <U>print oddp 8</U>
+false
+</PRE>
+
+<P><H2>Conditional Evaluation</H2>
+
+<P> The main use of predicates is to
+compute inputs to the primitive procedures <CODE>if</CODE> and <CODE>ifelse</CODE>.
+We'll get to <CODE>ifelse</CODE> in a while, but first we'll explore <CODE>if</CODE>.
+
+<P>
+<CODE>If</CODE> is a command with two inputs.  The first input must
+be either the word <CODE>true</CODE> or the word <CODE>false</CODE>.  The second input must
+be a list containing Logo instructions.  If the first input is <CODE>true</CODE>,
+the effect of <CODE>if</CODE> is to evaluate the instructions in the second input.
+If the first input is <CODE>false</CODE>, <CODE>if</CODE> has no effect.
+
+<P><PRE>? <U>if equalp 2 1+1 [print &quot;Yup.]</U>
+Yup.
+? <U>if equalp 3 2 [print &quot;Nope.]</U>
+?
+</PRE>
+
+<P>Here is an example of how <CODE>if</CODE> can be used in a procedure.
+This is an extension of the <CODE>converse</CODE> example in Chapter 3:
+
+<P><PRE>to talk
+local &quot;name
+print [Please type your full name.]
+make &quot;name readlist
+print sentence [Your first name is] first :name
+if (count :name) &gt; 2 ~
+   [print sentence [Your middle name is] first bf :name]
+print sentence [Your last name is] last :name
+end
+
+? <U>talk</U>
+Please type your full name.
+<U>George Washington</U>
+Your first name is George
+Your last name is Washington
+? <U>talk</U>
+Please type your full name.
+<U>John Paul Jones</U>
+Your first name is John
+Your middle name is Paul
+Your last name is Jones
+</PRE>
+
+<P><CODE>Talk</CODE> asks you to type your name and reads what you type
+into a list, which is remembered in the variable named <CODE>
+name</CODE>.  Your first and last names are printed as in the earlier
+version.  If the list <CODE>:name</CODE> contains more than two members,
+however, <CODE>talk</CODE> also prints the second member as your middle
+name.  If <CODE>:name</CODE> contains only two members, <CODE>talk</CODE> assumes
+that you don't have a middle name.
+
+<P>&raquo;Write a procedure of your own that asks a question and uses <CODE>if</CODE> to
+find out something about the response.
+
+<P>You can use <CODE>if</CODE> to help in writing more interesting predicates.
+
+<P><PRE>to about.computersp :sentence
+if memberp &quot;computer :sentence [output &quot;true]
+if memberp &quot;computers :sentence [output &quot;true]
+if memberp &quot;programming :sentence [output &quot;true]
+output &quot;false
+end
+
+? <U>print about.computersp [This book is about programming]</U>
+true
+? <U>print about.computersp [I like ice cream]</U>
+false
+?
+</PRE>
+
+<P>This procedure illustrates something I didn't explain before about <CODE>
+output</CODE>: An <CODE>output</CODE> command finishes the evaluation of the
+procedure in which it occurs.  For example, in <CODE>about.computersp</CODE>,
+if the input sentence contains the word <CODE>computer</CODE>, the first <CODE>
+if</CODE> evaluates the <CODE>output</CODE> instruction that is its second input.
+The procedure immediately outputs the word <CODE>true</CODE>.  The remaining
+instructions are not evaluated at all.
+
+<P>&raquo;Write <CODE>past.tensep</CODE>, which takes a word as input and
+outputs <CODE>true</CODE> if the word ends in <CODE>ed</CODE> or if it's one of a list of
+exceptions, like <CODE>saw</CODE> and <CODE>went</CODE>.
+
+<P>&raquo;Write <CODE>integerp</CODE>, which takes any Logo datum as input and
+outputs <CODE>true</CODE> if and only if the datum is an integer (a number without a
+fraction part).  Hint: a number with a fraction part will contain a decimal
+point.
+
+<P><H2>Choosing Between Alternatives</H2>
+
+<P><CODE>If</CODE> gives the choice between carrying out some instructions and doing
+nothing at all.  More generally, we may want to carry out either of <EM>
+two</EM> sets of instructions, depending on the output from a predicate.
+The primitive procedure <CODE>ifelse</CODE> meets this need.<SUP>*</SUP>  <CODE>Ifelse</CODE> is
+an unusual primitive because it can be used either as a command or as an
+operation.  We'll start with examples in which <CODE>ifelse</CODE> is used as a
+command.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In some
+versions of Logo, the name <CODE>if</CODE> is used both for the two-input command
+discussed earlier and for the three-input one presented here.</SMALL></BLOCKQUOTE></SMALL><P><CODE>Ifelse</CODE> requires three inputs.  The first input must be either the word
+<CODE>true</CODE> or the word <CODE>false</CODE>.  The second and third inputs must be
+lists containing Logo instructions.  If the first input is <CODE>true</CODE>, the
+effect of <CODE>if</CODE> is to evaluate the instructions in the second input.  If
+the first input is <CODE>false</CODE>, the effect is to evaluate the instructions
+in the third input.
+
+<P><PRE>? <U>ifelse 4 = 2+2 [print &quot;Yup.] [print &quot;Nope.]</U>
+Yup.
+? <U>ifelse 4 = 3+5 [print &quot;Yup.] [print &quot;Nope.]</U>
+Nope.
+?
+</PRE>
+
+<P>
+Here is an example of a procedure using <CODE>ifelse</CODE>:
+
+<P><PRE>to groupie
+local &quot;name
+print [Hi, who are you?]
+make &quot;name readlist
+ifelse :name = [Ray Davies] ~
+     [print [May I have your autograph?]] ~
+     [print sentence &quot;Hi, first :name]
+end
+
+? <U>groupie</U>
+Hi, who are you?
+<U>Frank Sinatra</U>
+Hi, Frank
+? <U>groupie</U>
+Hi, who are you?
+<U>Ray Davies</U>
+May I have your autograph?
+</PRE>
+
+<P>&raquo;Write an operation <CODE>color</CODE> that takes as input a word
+representing a card, such as <CODE>10h</CODE> for the ten of hearts.  Its output
+should be the word <CODE>red</CODE> if the card is a heart or a diamond, or <CODE>
+black</CODE> if it's a spade or a club.
+
+<P>&raquo;Write a conversational program that asks the user's name and figures
+out how to address him or her.  For example:
+
+<P><PRE>? <U>converse</U>
+Hi, what's your name?
+<U>Chris White</U>
+Pleased to meet you, Chris.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>Ms. Grace Slick</U>
+Pleased to meet you, Ms. Slick.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>J. Paul Getty</U>
+Pleased to meet you, Paul.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>Sigmund Freud, M.D.</U>
+Pleased to meet you, Dr. Freud.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>Mr. Lon Chaney, Jr.</U>
+Pleased to meet you, Mr. Chaney.
+</PRE>
+
+<P>What should the program say if it meets Queen Elizabeth II?
+
+
+<P><H2>Conditional Evaluation Another Way</H2>
+
+<P>The use of <CODE>ifelse</CODE> in the <CODE>groupie</CODE> example above makes for
+a rather long instruction line.  If you wanted to do several instructions
+in each case, rather than just one <CODE>print</CODE>, the <CODE>if</CODE> line would become
+impossible to read.  Logo provides another mechanism that is equivalent
+to the <CODE>ifelse</CODE> command but may be easier to read.
+
+<P><CODE>Test</CODE> is a command that takes one input.  The input must be
+either the word <CODE>true</CODE> or the word <CODE>false</CODE>.  The effect of
+<CODE>test</CODE> is just to remember what its input was in a special place.
+You can think of this place as a variable without a name.  This
+special variable is automatically local to the procedure from which
+<CODE>test</CODE> is invoked.
+
+<P><CODE>Iftrue</CODE> (abbreviation <CODE>ift</CODE>) is a command with one
+input.  The input must be a list of Logo instructions.  The effect of
+<CODE>iftrue</CODE> is to evaluate the instructions in its input only if the
+unnamed variable set by the most recent <CODE>test</CODE> command in the same
+procedure is <CODE>true</CODE>.  It is an error to use <CODE>iftrue</CODE> without
+first using <CODE>test</CODE>.
+
+<P><CODE>Iffalse</CODE> (abbreviation <CODE>iff</CODE>) is a command with one input, which
+must be an instruction list.  The effect of <CODE>iffalse</CODE> is to evaluate
+the instructions only if the remembered result of the most recent <CODE>test</CODE>
+command is <CODE>false</CODE>.
+
+<P><CODE>Iftrue</CODE> and <CODE>iffalse</CODE> can be invoked as many times as you like after
+a <CODE>test</CODE>.  This allows you to break up a long sequence of conditionally evaluated
+instructions into several instruction lines:
+
+<P><PRE>to better.groupie
+local &quot;name
+print [Hi, who are you?]
+make &quot;name readlist
+test equalp :name [Ray Davies]
+iftrue [print [Wow, can I have your autograph?]]
+iftrue [print [And can I borrow a thousand dollars?]]
+iffalse [print sentence [Oh, hello,] first :name]
+end
+</PRE>
+
+<P><H2>About Those Brackets</H2>
+
+<P>I hope that the problem I'm about to mention won't even have occurred
+to you because you are so familiar with the idea of evaluation that
+you understood right away.  But you'll probably have to explain it
+to someone else, so I thought I'd bring it up here:
+
+<P>
+
+Some people get confused about why the second
+input to <CODE>if</CODE> (and the second and third inputs to <CODE>ifelse</CODE>)
+is surrounded by brackets but the first isn't.  That
+is, they wonder, why don't we say
+
+<P><PRE>if [equalp 2 3] [print &quot;really??]          ; (wrong!)
+</PRE>
+
+<P>They have this problem because someone lazily told them
+to put brackets around the conditionally evaluated instructions without
+ever explaining about brackets and quotation.
+
+<P>I trust <EM>you</EM> aren't confused that way.  You understand that, as usual,
+Logo evaluates the inputs to a procedure before invoking the procedure.  The
+first input to <CODE>if</CODE> has to be either the word <CODE>true</CODE> or the word
+<CODE>false</CODE>.  <EM>Before</EM> invoking <CODE>if</CODE>, Logo has to evaluate an
+expression like <CODE>equalp 2 3</CODE> to compute the input.  (In this case, the
+result output by <CODE>equalp</CODE> will be <CODE>false</CODE>.)  But if the <CODE>print</CODE>
+instruction weren't quoted, Logo would evaluate it, too, <EM>before</EM>
+invoking <CODE>if</CODE>.  That's not what we want.  We want the instruction list
+<EM>itself</EM> to be the second input, so that <CODE>if</CODE> can decide whether
+or not to carry out the instructions in the list.  So, as usual, we use
+brackets to tell Logo to quote the list.
+
+<P><CENTER><TABLE rules="groups" frame="void" border="2">
+<THEAD>
+<TR><TH>actual argument expression<TH>--&gt;<TH>actual argument value
+<TBODY>
+<TR><TD><CODE>equalp 2 3</CODE><TD>--&gt;<TD><CODE>false</CODE>
+<TR><TD><CODE>[print &quot;really??]</CODE><TD>--&gt;<TD><CODE>[print &quot;really??]</CODE>
+</TABLE></CENTER>
+
+<P><H2>Logical Connectives</H2>
+
+<P>Sometimes the condition under which you want to evaluate an instruction
+is complicated.  You want to do it if <EM>both</EM> this <EM>and</EM> that
+are true, or if <EM>either</EM> this <EM>or</EM> that is true.  Logo provides
+operations for this purpose.
+
+<P><CODE>And</CODE> is a predicate with two inputs.  Each input must be either the
+word <CODE>true</CODE> or the word <CODE>false</CODE>.  The output from <CODE>and</CODE> is
+<CODE>true</CODE> if both inputs are <CODE>true</CODE>; the output is <CODE>false</CODE> if
+either input is <CODE>false</CODE>.  (<CODE>And</CODE> can take more than two inputs if
+the entire expression is enclosed in parentheses.  In that case the output
+from <CODE>and</CODE> will be <CODE>true</CODE> only if all of its inputs are <CODE>true</CODE>.)
+
+<P><CODE>Or</CODE> is a predicate with two inputs.  Each input must be either the
+word <CODE>true</CODE> or the word <CODE>false</CODE>.  The output from <CODE>or</CODE> is
+<CODE>true</CODE> if either input is <CODE>true</CODE> (or both inputs are).  The
+output is <CODE>false</CODE> if both inputs are <CODE>false</CODE>.  (Extra-input
+<CODE>or</CODE> outputs <CODE>true</CODE> if any of its inputs are <CODE>true</CODE>, <CODE>
+false</CODE> if all inputs are <CODE>false</CODE>.)
+
+<P><CODE>Not</CODE> is a predicate with one input.  The input must be either the
+word <CODE>true</CODE> or the word <CODE>false</CODE>.  The output from <CODE>not</CODE> is
+the opposite of its input: <CODE>true</CODE> if the input is <CODE>false</CODE>, or
+<CODE>false</CODE> if the input is <CODE>true</CODE>.
+
+<P>
+
+These three procedures are called <EM>logical connectives</EM> because
+they connect logical expressions together into bigger ones.  (A <EM>
+logical</EM> expression is one whose value is <CODE>true</CODE> or <CODE>
+false</CODE>.) They can be useful in defining new predicates:
+
+<P><PRE>to fullp :datum
+output not emptyp :datum
+end
+
+to realwordp :datum
+output and wordp :datum not numberp :datum
+end
+
+to digitp :datum
+output and numberp :datum equalp count :datum 1
+end
+</PRE>
+
+<P><H2><CODE>Ifelse</CODE> as an Operation</H2>
+
+<P>So far, we have applied the idea of conditional evaluation only to
+complete instructions.  It is also possible to choose between two
+expressions to evaluate, by using <CODE>ifelse</CODE> as an
+operation.
+
+<P>When used as an operation, <CODE>ifelse</CODE> requires three inputs.  The first input
+must be either the word <CODE>true</CODE> or the word <CODE>false</CODE>.  The second and third
+inputs must be lists containing Logo expressions.  The output from
+<CODE>ifelse</CODE> is the result of evaluating the second input, if the first input
+is <CODE>true</CODE>, or the result of evaluating the third input, if the first
+input is <CODE>false</CODE>.
+
+<P><PRE>? <U>print sentence &quot;It's ifelse 2=3 [&quot;correct] [&quot;incorrect]</U>
+It's incorrect
+? <U>print ifelse emptyp [] [sum 2 3] [product 6 7]</U>
+5
+</PRE>
+
+<P>Here is one of the classic examples of a procedure in which <CODE>ifelse</CODE> is
+used as an operation.  This procedure is an operation that takes
+a number as its input; it outputs the <EM>absolute value</EM> of the
+number:
+
+<P><PRE>to abs :number
+output ifelse :number&lt;0 [-:number] [:number]
+end
+</PRE>
+
+<P><H2>Expression Lists and Plumbing Diagrams</H2>
+
+<P><CODE>If</CODE> and <CODE>ifelse</CODE> require <EM>instruction lists</EM> or <EM>
+expression lists</EM> as inputs.  This requirement is part of their semantics,
+not part of the syntax of an instruction.  Just as the arithmetic operators
+require numbers as inputs (semantics), but those numeric values can be
+provided either as explicit numbers in the instruction or as the result of
+an arbitrarily complicated subexpression (syntax), the procedures that
+require instruction or expression lists as input don't interpret those
+inputs until after Logo has set up the plumbing for the instructions that
+invoke them.
+
+<P>What does that mean?  Consider the instruction
+
+<P><PRE>ifelse &quot;false [&quot;stupid &quot;list] [print 23]
+</PRE>
+
+<P>Even though the second input to <CODE>ifelse</CODE>--that is, the first
+of the two literal lists--makes no sense as an instruction list, this
+instruction will work correctly without printing an error message.  The Logo
+interpreter knows that <CODE>ifelse</CODE> accepts three inputs, and it sees that
+the three input expressions provided are a literal (quoted) word and two
+literal lists.  It sets up the plumbing without paying any attention to the
+semantics of <CODE>ifelse</CODE>; in particular, Logo doesn't care whether the
+given inputs are meaningful for use with <CODE>ifelse</CODE>.  Then, once <CODE>
+ifelse</CODE> starts running, it examines its first input value.  Since that input
+is the word <CODE>false</CODE>, the <CODE>ifelse</CODE> procedure ignores its second input
+completely and executes the instruction in its third input.
+
+<P>The use of quotation marks and square brackets to indicate literal inputs is
+part of the plumbing syntax, not part of the procedure semantics.  Don't say,
+&quot;<CODE>Ifelse</CODE> requires one predicate input and two inputs in square
+brackets.&quot;  The instruction
+
+<P><PRE>ifelse last [true false] list &quot;&quot;stupid &quot;&quot;list list bf &quot;sprint 23
+</PRE>
+
+<P>has a very different plumbing diagram (syntax) from that of the
+earlier example, but provides exactly the same input values to <CODE>ifelse</CODE>.
+
+<P>Consider these two instructions:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch4/printfirst.gif" ALT="figure: printfirst"></CENTER>
+
+<P>Since the effect of <CODE>print</CODE> is easy to observe, it's not hard
+to see the relationship among the instructions, the plumbing diagrams, and
+the effects when these instructions are run.  Why are brackets used around
+the <CODE>first</CODE> expression in one case but not in the other?  Because in one
+case the expression is how we tell Logo to set up the plumbing diagram,
+while in the second case we are giving <CODE>print</CODE> as input a literal list
+that just happens to look like an expression.  When the context is something
+like <CODE>ifelse</CODE> instead of <CODE>print</CODE>, the syntactic situation is really
+quite similar, but may be harder to see.  Consider this instruction:
+
+<P><PRE>print ifelse emptyp :a [emptyp :b] [emptyp :c]
+</PRE>
+
+<P>Why do we put brackets around two <CODE>emptyp</CODE> expressions but not
+around another similar-looking one?  &raquo; Draw a plumbing diagram
+for this instruction, paying no attention to your mental model of the
+meaning of the <CODE>ifelse</CODE> procedure, treating it as if it were the
+nonsense procedure <CODE>zot3</CODE>.  You will see that the first input to <CODE>
+ifelse</CODE> is an expression whose value will be the word <CODE>true</CODE> or the word
+<CODE>false</CODE>, because Logo will carry out that first <CODE>emptyp</CODE> computation
+before invoking <CODE>ifelse</CODE>.  The remaining two inputs, however, are
+literal lists that happen to contain the word <CODE>emptyp</CODE> but do not
+involve an invocation of <CODE>emptyp</CODE> in the plumbing diagram.  Once <CODE>
+ifelse</CODE> is actually invoked, precisely one of those two list inputs will be
+interpreted as a Logo expression, for which a <EM>new</EM> plumbing diagram
+is (in effect) drawn by Logo.  The other input list is ignored.
+
+<P><H2>Stopping a Procedure</H2>
+
+<P>I'd like to examine more closely one of the examples from the first
+chapter:
+
+<P><PRE>to music.quiz
+print [Who is the greatest musician of all time?]
+if equalp readlist [John Lennon] [print [That's right!] stop]
+print [No, silly, it's John Lennon.]
+end
+</PRE>
+
+<P>You now know about almost all of the primitive procedures
+used in this example.  The only one we haven't discussed is the <CODE>stop</CODE>
+command in the second instruction line.
+
+<P><CODE>Stop</CODE> is a command that takes no inputs.  It is only allowed inside
+a procedure; you can't type <CODE>stop</CODE> to a top-level prompt.  The effect
+of <CODE>stop</CODE> is to finish the evaluation of the procedure in which it is
+used.  Later instructions in the same procedure are skipped.
+
+<P>Notice that <CODE>stop</CODE> does not stop <EM>all</EM> active procedures.  If procedure
+A invokes procedure B, and there is a <CODE>stop</CODE> command in procedure B,
+then procedure A continues after the point where it invoked B.
+
+<P>Recall that the <CODE>output</CODE> command also stops the procedure that invokes
+it.  The difference is that if you're writing an operation, which
+should have an output, you use <CODE>output</CODE>; if you're writing a command,
+which doesn't have an output, you use <CODE>stop</CODE>.
+
+<P>In <CODE>music.quiz</CODE>, the effect of the <CODE>stop</CODE> is that if you get the right
+answer, the final <CODE>print</CODE> instruction isn't evaluated.  The same effect
+could have been written this way:
+
+<P><PRE>ifelse equalp readlist [John Lennon] ~
+    [print [That's right!]] ~
+    [print [No, silly, it's John Lennon.]]
+</PRE>
+
+<P>The alternative form uses the three-input <CODE>ifelse</CODE> command.  One
+advantage of using <CODE>stop</CODE> is precisely that it allows the use of
+shorter lines.  But in this example, where there is only one
+instruction after the <CODE>if</CODE>, it doesn't matter much.  <CODE>Stop</CODE> is
+really useful when you want to stop only in an unusual situation and
+otherwise you have a lot of work still to do:
+
+<P><PRE>to quadratic :a :b :c
+local &quot;discriminant
+make &quot;discriminant (:b * :b)-(4 * :a * :c)
+<U>if :discriminant &lt; 0 [print [No solution.] stop]</U>
+make &quot;discriminant sqrt :discriminant
+local &quot;x1
+local &quot;x2
+make &quot;x1 (-:b + :discriminant)/(2 * :a)
+make &quot;x2 (-:b - :discriminant)/(2 * :a)
+print (sentence [x =] :x1 [or] :x2)
+end
+</PRE>
+
+<P>This procedure applies the quadratic formula to solve the
+equation
+
+<P><CENTER><EM>ax</EM>&#178;+<EM>bx</EM>+<EM>c</EM>=0</CENTER>
+
+<P>The only interesting thing about this example for our present purpose
+is the fact that sometimes there is no solution.  In that case the
+procedure <CODE>stop</CODE>s as soon as it finds out.
+
+<P>Don't forget that you need <CODE>stop</CODE> only if you want to stop a
+procedure before its last instruction line.  A common mistake made by
+beginners who've just learned about <CODE>stop</CODE> is to use it in every
+procedure.  If you look back at the examples so far you'll see that
+many procedures get along fine without invoking <CODE>stop</CODE>.
+
+<P><H2>Improving the Quiz Program</H2>
+
+<P>When I first introduced the <CODE>music.quiz</CODE> example in Chapter 1, we
+hadn't discussed things like user procedures with inputs.  We are now in a
+position to generalize the quiz program:
+
+<P><PRE>to qa :question :answer
+print :question
+if equalp readlist :answer [print [That's right!] stop]
+print sentence [Sorry, it's] :answer
+end
+
+to quiz
+qa [Who is the best musician of all time?] [John Lennon]
+qa [Who wrote &quot;Compulsory Miseducation&quot;?] [Paul Goodman]
+qa [What color was George Washington's white horse?] [white]
+qa [how much is 2+2?] [5]
+end
+</PRE>
+
+Procedure <CODE>qa</CODE> is our old friend <CODE>music.quiz</CODE>, with variable
+inputs instead of a fixed question and answer.  <CODE>Quiz</CODE> uses <CODE>qa</CODE> several
+times to ask different questions.
+
+<P>&raquo;Here are a couple of suggestions for further improvements you should
+be able to make to <CODE>quiz</CODE> and <CODE>qa</CODE>:
+
+<P>1.  <CODE>Qa</CODE> is very fussy about getting one particular answer to a
+question. If you answer <CODE>Lennon</CODE> instead of <CODE>John Lennon</CODE>,
+it'll tell you you're wrong.  There are a couple of ways you might fix
+this.  One is to look for a single-word answer <EM>anywhere within</EM>
+what the user types.  So if <CODE>:answer</CODE> is the word <CODE>Lennon</CODE>,
+the program will accept &quot;<CODE>Lennon</CODE>,&quot; &quot;<CODE>John Lennon</CODE>,&quot; or &quot;<CODE>the
+Lennon Sisters</CODE>.&quot;  The second approach would be for <CODE>qa</CODE> to take a
+<EM>list</EM> of possible answers as its second input:
+
+<P><PRE>qa [Who is the best musician of all time?] ~
+   [[John Lennon] [Lennon] [the Beatles]]
+</PRE>
+
+<P><CODE>Qa</CODE> then has to use a different predicate, to see if what
+the user types is any of the answers in the list.
+
+<P>2.  By giving <CODE>quiz</CODE> a local variable named <CODE>score</CODE>, you could
+have <CODE>quiz</CODE> and <CODE>qa</CODE> cooperate to keep track of how many
+questions the user gets right.  At the end the score could be printed.
+(This is an opportunity to think about the stylistic virtues and vices
+of letting a subprocedure modify a variable that belongs to its
+superprocedure.  If you say
+
+<P><PRE>make &quot;score :score+1
+</PRE>
+
+<P>inside <CODE>qa</CODE>, doesn't that make <CODE>quiz</CODE> somewhat mysterious
+to read?  For an alternative, read the next section.)
+
+<P><H2>Reporting Success to a Superprocedure</H2>
+
+<P>Suppose we want the quiz program to give the user three tries before
+revealing the right answer.  There are several ways this could be
+programmed.  Here is a way that uses the tools you already know about.
+
+<P>The general idea is that the procedure that asks the question is
+written as an <EM>operation,</EM> not as a command.  To be exact, it's a
+predicate; it outputs <CODE>true</CODE> if the user gets the right answer.
+This asking procedure, <CODE>ask.once</CODE>, is invoked as a subprocedure of
+<CODE>ask.thrice</CODE>, which is in charge of allowing three tries.  <CODE>
+ask.thrice</CODE> invokes <CODE>ask.once</CODE> up to three times, but stops if
+<CODE>ask.once</CODE> reports success.
+
+<P><PRE>to ask.thrice :question :answer
+repeat 3 [if ask.once :question :answer [stop]]
+print sentence [The answer is] :answer
+end
+
+to ask.once :question :answer
+print :question
+if equalp readlist :answer [print [Right!] output &quot;true]
+print [Sorry, that's wrong.]
+output &quot;false
+end
+</PRE>
+
+<P>
+You've seen <CODE>repeat</CODE> in the first chapter, but you haven't been formally
+introduced.  <CODE>Repeat</CODE> is a command with two inputs.  The first input
+must be a non-negative whole number.  The second input must be a list
+of Logo instructions.  The effect of <CODE>repeat</CODE> is to evaluate its second
+input, the instruction list, the number of times given as the first
+input.
+
+<P>The programming style used in this example is a little controversial.
+In general, it's considered a good idea not to mix effect and output
+in one procedure.  But in this example, <CODE>ask.once</CODE> has an effect (it
+prints the question, reads an answer, and comments on its correctness)
+and also an output (<CODE>true</CODE> or <CODE>false</CODE>).
+
+<P>I think the general rule I've just cited is a good rule, but there
+are exceptions to it.  Using an output of <CODE>true</CODE> or <CODE>false</CODE> to report
+the success or failure of some process is one of the situations that
+I consider acceptable style.  The real point of the rule, I think,
+is to separate <EM>calculating</EM> something from <EM>
+printing</EM> it.  For example, it's a mistake to write procedures like this
+one:
+
+<P><PRE>to <A NAME="prsecond">prsecond :datum
+print first butfirst :datum
+end
+</PRE>
+
+<P>
+A more powerful technique is to write the <CODE>second</CODE> operation
+from Chapter 2; instead of
+
+<P><PRE>prsecond [something or other]
+</PRE>
+
+<P>you can then say
+
+<P><PRE>print second [something or other]
+</PRE>
+
+<P>It may not be obvious from this example why I call <CODE>second</CODE>
+more powerful than <CODE>prsecond</CODE>.  But remember that an operation can be
+combined with other operations, as in the plumbing diagrams we used
+earlier.  For example, the operation <CODE>second</CODE> can extract the word <CODE>
+or</CODE> from the list as shown here.  But you can <EM>also</EM> use it as part of
+a more complex instruction to extract the letter <CODE>o</CODE>:
+
+<P><PRE>print first second [something or other]
+</PRE>
+
+<P>If you'd written the command <CODE>prsecond</CODE> to solve the
+first problem, you'd have to start all over again to solve this new
+one.  (Of course, both of these examples must seem pretty silly; why
+bother extracting a word or a letter from this list?  But I'm trying
+to use examples that are simple enough not to obscure this issue with
+the kinds of complications we'll see in more interesting programs.)
+
+<P>&raquo;If you made the improvements to <CODE>quiz</CODE> and <CODE>qa</CODE> that I
+suggested earlier, you might like to see if they can fit easily with a new
+version of <CODE>quiz</CODE> using <CODE>ask.thrice</CODE>.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch3/v1ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch5/v1ch5.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch4/v1ch4.html b/js/games/nluqo.github.io/~bh/v1ch4/v1ch4.html
new file mode 100644
index 0000000..c36950f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch4/v1ch4.html
@@ -0,0 +1,830 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 4: Predicates</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Predicates</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch04.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch3/v1ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch5/v1ch5.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+By introducing variables in Chapter 3, we made it possible for a
+procedure to operate on different data each time you invoke it.  But
+the <EM>pattern</EM> of what the procedure does with the data remains
+constant.  We can get even more variety out of our procedures if we
+can vary the <EM>instructions</EM> that the procedure executes.  We
+need a way to say, &quot;Sometimes do this; other times do that.&quot;
+
+<P><H2>True or False</H2>
+
+<P>One helpful metaphor is this:  When you invoke a command, you're giving
+the computer an order.  &quot;Now hear this!  <CODE>Print</CODE> such-and-such!&quot;
+But when you invoke an operation, you're asking the computer a <EM>
+question.</EM>  &quot;What is the <CODE>first</CODE> member of such-and-such?&quot;
+
+<P>In real life we single out as a special category <EM>
+yes-or-no questions.</EM>
+For example, these special questions form the basis of the
+game Twenty Questions.  The corresponding
+category in Logo is the <EM>predicate.</EM>
+A predicate is an operation whose output is always either the word
+<CODE>true</CODE> or the word <CODE>false</CODE>.
+
+<P>For example, <CODE>listp</CODE> (pronounced &quot;list-pea&quot;) is a predicate
+that takes one input.  The input can be any datum.  The output from
+<CODE>listp</CODE> is <CODE>true</CODE> if the input is a list, <CODE>false</CODE> if the
+input is a word.
+
+<P><CODE>Wordp</CODE> is another predicate that takes one input.  The input can
+be any datum.  The output from <CODE>wordp</CODE> is <CODE>true</CODE> if the input
+is a word, <CODE>false</CODE> if the input is a list.  (This is the opposite
+of the output from <CODE>listp</CODE>.)
+
+<P><CODE>Emptyp</CODE> is also a predicate with one input.  The input can be any
+datum. The output from <CODE>emptyp</CODE> is <CODE>true</CODE> if the input is
+either the empty word or the empty list; if the input is anything
+else, the output is <CODE>false</CODE>.
+
+<P>You'll have noticed by now that predicates tend to have names ending
+in the letter <CODE>p</CODE>.  This is not quite a universal rule, but almost.
+It's a good idea to follow the same convention in naming your
+own predicates.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Many versions of Logo use a question mark at the end
+of names of predicates, instead of a <CODE>p</CODE>.  For example, you may see <CODE>
+list?</CODE> instead of <CODE>listp</CODE>.  Berkeley Logo accepts either form, but I
+prefer the <CODE>p</CODE> version.</SMALL></BLOCKQUOTE></SMALL><P>
+
+<P>As I'm describing primitive predicates, you might want to try them
+out on the computer.  You can do experiments like this:
+
+<P><PRE>? <U>print wordp &quot;hello</U>
+true
+? <U>print wordp [hello]</U>
+false
+? <U>print emptyp []</U>
+true
+? <U>print emptyp 0</U>
+false
+</PRE>
+
+<P>Of course, most of the time you won't actually want to print
+the output from a predicate.  You'll see in a few moments
+how we can use a predicate to control the instructions carried out
+in a procedure.
+
+<P>But first here are a few more primitive predicates.  <CODE>Numberp</CODE> takes one
+input, which can be any datum.  The output from <CODE>numberp</CODE> is <CODE>
+true</CODE> if the input is a number, <CODE>false</CODE> otherwise.
+
+<P><CODE>Equalp</CODE> takes two inputs, each of which can be any datum.  The output
+from <CODE>equalp</CODE> is <CODE>true</CODE> if the two inputs are identical or if they're
+both numbers and they're numerically equal.  That is, 3 and 3.0 are
+numerically equal even though they're not identical words.  A list is
+never equal to a word.
+
+<P><PRE>? <U>print equalp 3 3.0</U>
+true
+? <U>print equalp &quot;hello [hello]</U>
+false
+? <U>print equalp &quot;hello first [hello]</U>
+true
+? <U>print equalp &quot; []</U>
+false
+? <U>print equalp [] butfirst [hello]</U>
+true
+</PRE>
+
+<P>
+
+<P>The equal sign (<CODE>=</CODE>) can
+be used as an <EM>infix</EM> equivalent
+of <CODE>equalp</CODE>:
+
+<P><PRE>? <U>print &quot;hello = first [hello]</U>
+true
+? <U>print 2 = 3</U>
+false
+</PRE>
+
+<P>As I mentioned in Chapter 2, if you use infix operations
+you have to be careful about what is grouped with what.  It varies
+between versions of Logo.  Here is an example I tried in Berkeley Logo:
+
+<P><PRE>? <U>print first [hello] = &quot;hello</U>
+f
+</PRE>
+
+<P>Among current commercial implementations, Object Logo and
+Microworlds give the same answer <CODE>f</CODE>.  But here is the <EM>same</EM>
+example in Logowriter:
+
+<P><PRE>? <U>print first [hello] = &quot;hello</U>
+true
+</PRE>
+
+<P>You can avoid confusion by using parentheses.  The following
+instructions work reliably in any Logo:
+
+<P><PRE>? <U>print (first [hello]) = &quot;hello</U>
+true
+? <U>print first ([hello] = &quot;hello)</U>
+f
+</PRE>
+
+<P><CODE>Memberp</CODE> is a predicate with two inputs.  If the second input is a
+list, then the first can be any datum.  If the second input is a word, then
+the first must be a one-character word.  The output from <CODE>memberp</CODE>
+is true if the first input is a member of the second input.
+
+<P><PRE>? <U>print memberp &quot;rain [the rain in Spain]</U>
+true
+? <U>print memberp [the rain] [the rain in Spain]</U>
+false
+? <U>print memberp [the rain] [[the rain] in Spain]</U>
+true
+? <U>print memberp &quot;e &quot;please</U>
+true
+? <U>print memberp &quot;e &quot;plain</U>
+false
+</PRE>
+
+<P><CODE>Lessp</CODE> and <CODE>greaterp</CODE> are predicates that take two inputs.
+Both inputs must be numbers.  The output from <CODE>lessp</CODE> is <CODE>true</CODE> if
+the first input is numerically less than the second; the output from <CODE>
+greaterp</CODE> is true if the first is greater than the second.  Otherwise the
+output is <CODE>false</CODE>.  (In particular, both <CODE>lessp</CODE> and <CODE>greaterp</CODE>
+output <CODE>false</CODE> if the two inputs are equal.) The infix forms for <CODE>
+lessp</CODE> (<CODE>&lt;</CODE>) and <CODE>greaterp</CODE> (<CODE>&gt;</CODE>) are also allowed.
+
+<P><H2>Defining Your Own Predicates</H2>
+
+<P>Here are two examples of how you can create new predicates:
+
+<P><PRE>to vowelp :letter
+output memberp :letter [a e i o u]
+end
+
+? <U>print vowelp &quot;e</U>
+true
+? <U>print vowelp &quot;g</U>
+false
+
+to oddp :number
+output equalp (remainder :number 2) 1
+end
+
+? <U>print oddp 5</U>
+true
+? <U>print oddp 8</U>
+false
+</PRE>
+
+<P><H2>Conditional Evaluation</H2>
+
+<P> The main use of predicates is to
+compute inputs to the primitive procedures <CODE>if</CODE> and <CODE>ifelse</CODE>.
+We'll get to <CODE>ifelse</CODE> in a while, but first we'll explore <CODE>if</CODE>.
+
+<P>
+<CODE>If</CODE> is a command with two inputs.  The first input must
+be either the word <CODE>true</CODE> or the word <CODE>false</CODE>.  The second input must
+be a list containing Logo instructions.  If the first input is <CODE>true</CODE>,
+the effect of <CODE>if</CODE> is to evaluate the instructions in the second input.
+If the first input is <CODE>false</CODE>, <CODE>if</CODE> has no effect.
+
+<P><PRE>? <U>if equalp 2 1+1 [print &quot;Yup.]</U>
+Yup.
+? <U>if equalp 3 2 [print &quot;Nope.]</U>
+?
+</PRE>
+
+<P>Here is an example of how <CODE>if</CODE> can be used in a procedure.
+This is an extension of the <CODE>converse</CODE> example in Chapter 3:
+
+<P><PRE>to talk
+local &quot;name
+print [Please type your full name.]
+make &quot;name readlist
+print sentence [Your first name is] first :name
+if (count :name) &gt; 2 ~
+   [print sentence [Your middle name is] first bf :name]
+print sentence [Your last name is] last :name
+end
+
+? <U>talk</U>
+Please type your full name.
+<U>George Washington</U>
+Your first name is George
+Your last name is Washington
+? <U>talk</U>
+Please type your full name.
+<U>John Paul Jones</U>
+Your first name is John
+Your middle name is Paul
+Your last name is Jones
+</PRE>
+
+<P><CODE>Talk</CODE> asks you to type your name and reads what you type
+into a list, which is remembered in the variable named <CODE>
+name</CODE>.  Your first and last names are printed as in the earlier
+version.  If the list <CODE>:name</CODE> contains more than two members,
+however, <CODE>talk</CODE> also prints the second member as your middle
+name.  If <CODE>:name</CODE> contains only two members, <CODE>talk</CODE> assumes
+that you don't have a middle name.
+
+<P>&raquo;Write a procedure of your own that asks a question and uses <CODE>if</CODE> to
+find out something about the response.
+
+<P>You can use <CODE>if</CODE> to help in writing more interesting predicates.
+
+<P><PRE>to about.computersp :sentence
+if memberp &quot;computer :sentence [output &quot;true]
+if memberp &quot;computers :sentence [output &quot;true]
+if memberp &quot;programming :sentence [output &quot;true]
+output &quot;false
+end
+
+? <U>print about.computersp [This book is about programming]</U>
+true
+? <U>print about.computersp [I like ice cream]</U>
+false
+?
+</PRE>
+
+<P>This procedure illustrates something I didn't explain before about <CODE>
+output</CODE>: An <CODE>output</CODE> command finishes the evaluation of the
+procedure in which it occurs.  For example, in <CODE>about.computersp</CODE>,
+if the input sentence contains the word <CODE>computer</CODE>, the first <CODE>
+if</CODE> evaluates the <CODE>output</CODE> instruction that is its second input.
+The procedure immediately outputs the word <CODE>true</CODE>.  The remaining
+instructions are not evaluated at all.
+
+<P>&raquo;Write <CODE>past.tensep</CODE>, which takes a word as input and
+outputs <CODE>true</CODE> if the word ends in <CODE>ed</CODE> or if it's one of a list of
+exceptions, like <CODE>saw</CODE> and <CODE>went</CODE>.
+
+<P>&raquo;Write <CODE>integerp</CODE>, which takes any Logo datum as input and
+outputs <CODE>true</CODE> if and only if the datum is an integer (a number without a
+fraction part).  Hint: a number with a fraction part will contain a decimal
+point.
+
+<P><H2>Choosing Between Alternatives</H2>
+
+<P><CODE>If</CODE> gives the choice between carrying out some instructions and doing
+nothing at all.  More generally, we may want to carry out either of <EM>
+two</EM> sets of instructions, depending on the output from a predicate.
+The primitive procedure <CODE>ifelse</CODE> meets this need.<SUP>*</SUP>  <CODE>Ifelse</CODE> is
+an unusual primitive because it can be used either as a command or as an
+operation.  We'll start with examples in which <CODE>ifelse</CODE> is used as a
+command.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In some
+versions of Logo, the name <CODE>if</CODE> is used both for the two-input command
+discussed earlier and for the three-input one presented here.</SMALL></BLOCKQUOTE></SMALL><P><CODE>Ifelse</CODE> requires three inputs.  The first input must be either the word
+<CODE>true</CODE> or the word <CODE>false</CODE>.  The second and third inputs must be
+lists containing Logo instructions.  If the first input is <CODE>true</CODE>, the
+effect of <CODE>if</CODE> is to evaluate the instructions in the second input.  If
+the first input is <CODE>false</CODE>, the effect is to evaluate the instructions
+in the third input.
+
+<P><PRE>? <U>ifelse 4 = 2+2 [print &quot;Yup.] [print &quot;Nope.]</U>
+Yup.
+? <U>ifelse 4 = 3+5 [print &quot;Yup.] [print &quot;Nope.]</U>
+Nope.
+?
+</PRE>
+
+<P>
+Here is an example of a procedure using <CODE>ifelse</CODE>:
+
+<P><PRE>to groupie
+local &quot;name
+print [Hi, who are you?]
+make &quot;name readlist
+ifelse :name = [Ray Davies] ~
+     [print [May I have your autograph?]] ~
+     [print sentence &quot;Hi, first :name]
+end
+
+? <U>groupie</U>
+Hi, who are you?
+<U>Frank Sinatra</U>
+Hi, Frank
+? <U>groupie</U>
+Hi, who are you?
+<U>Ray Davies</U>
+May I have your autograph?
+</PRE>
+
+<P>&raquo;Write an operation <CODE>color</CODE> that takes as input a word
+representing a card, such as <CODE>10h</CODE> for the ten of hearts.  Its output
+should be the word <CODE>red</CODE> if the card is a heart or a diamond, or <CODE>
+black</CODE> if it's a spade or a club.
+
+<P>&raquo;Write a conversational program that asks the user's name and figures
+out how to address him or her.  For example:
+
+<P><PRE>? <U>converse</U>
+Hi, what's your name?
+<U>Chris White</U>
+Pleased to meet you, Chris.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>Ms. Grace Slick</U>
+Pleased to meet you, Ms. Slick.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>J. Paul Getty</U>
+Pleased to meet you, Paul.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>Sigmund Freud, M.D.</U>
+Pleased to meet you, Dr. Freud.
+
+? <U>converse</U>
+Hi, what's your name?
+<U>Mr. Lon Chaney, Jr.</U>
+Pleased to meet you, Mr. Chaney.
+</PRE>
+
+<P>What should the program say if it meets Queen Elizabeth II?
+
+
+<P><H2>Conditional Evaluation Another Way</H2>
+
+<P>The use of <CODE>ifelse</CODE> in the <CODE>groupie</CODE> example above makes for
+a rather long instruction line.  If you wanted to do several instructions
+in each case, rather than just one <CODE>print</CODE>, the <CODE>if</CODE> line would become
+impossible to read.  Logo provides another mechanism that is equivalent
+to the <CODE>ifelse</CODE> command but may be easier to read.
+
+<P><CODE>Test</CODE> is a command that takes one input.  The input must be
+either the word <CODE>true</CODE> or the word <CODE>false</CODE>.  The effect of
+<CODE>test</CODE> is just to remember what its input was in a special place.
+You can think of this place as a variable without a name.  This
+special variable is automatically local to the procedure from which
+<CODE>test</CODE> is invoked.
+
+<P><CODE>Iftrue</CODE> (abbreviation <CODE>ift</CODE>) is a command with one
+input.  The input must be a list of Logo instructions.  The effect of
+<CODE>iftrue</CODE> is to evaluate the instructions in its input only if the
+unnamed variable set by the most recent <CODE>test</CODE> command in the same
+procedure is <CODE>true</CODE>.  It is an error to use <CODE>iftrue</CODE> without
+first using <CODE>test</CODE>.
+
+<P><CODE>Iffalse</CODE> (abbreviation <CODE>iff</CODE>) is a command with one input, which
+must be an instruction list.  The effect of <CODE>iffalse</CODE> is to evaluate
+the instructions only if the remembered result of the most recent <CODE>test</CODE>
+command is <CODE>false</CODE>.
+
+<P><CODE>Iftrue</CODE> and <CODE>iffalse</CODE> can be invoked as many times as you like after
+a <CODE>test</CODE>.  This allows you to break up a long sequence of conditionally evaluated
+instructions into several instruction lines:
+
+<P><PRE>to better.groupie
+local &quot;name
+print [Hi, who are you?]
+make &quot;name readlist
+test equalp :name [Ray Davies]
+iftrue [print [Wow, can I have your autograph?]]
+iftrue [print [And can I borrow a thousand dollars?]]
+iffalse [print sentence [Oh, hello,] first :name]
+end
+</PRE>
+
+<P><H2>About Those Brackets</H2>
+
+<P>I hope that the problem I'm about to mention won't even have occurred
+to you because you are so familiar with the idea of evaluation that
+you understood right away.  But you'll probably have to explain it
+to someone else, so I thought I'd bring it up here:
+
+<P>
+
+Some people get confused about why the second
+input to <CODE>if</CODE> (and the second and third inputs to <CODE>ifelse</CODE>)
+is surrounded by brackets but the first isn't.  That
+is, they wonder, why don't we say
+
+<P><PRE>if [equalp 2 3] [print &quot;really??]          ; (wrong!)
+</PRE>
+
+<P>They have this problem because someone lazily told them
+to put brackets around the conditionally evaluated instructions without
+ever explaining about brackets and quotation.
+
+<P>I trust <EM>you</EM> aren't confused that way.  You understand that, as usual,
+Logo evaluates the inputs to a procedure before invoking the procedure.  The
+first input to <CODE>if</CODE> has to be either the word <CODE>true</CODE> or the word
+<CODE>false</CODE>.  <EM>Before</EM> invoking <CODE>if</CODE>, Logo has to evaluate an
+expression like <CODE>equalp 2 3</CODE> to compute the input.  (In this case, the
+result output by <CODE>equalp</CODE> will be <CODE>false</CODE>.)  But if the <CODE>print</CODE>
+instruction weren't quoted, Logo would evaluate it, too, <EM>before</EM>
+invoking <CODE>if</CODE>.  That's not what we want.  We want the instruction list
+<EM>itself</EM> to be the second input, so that <CODE>if</CODE> can decide whether
+or not to carry out the instructions in the list.  So, as usual, we use
+brackets to tell Logo to quote the list.
+
+<P><CENTER><TABLE rules="groups" frame="void" border="2">
+<THEAD>
+<TR><TH>actual argument expression<TH>--&gt;<TH>actual argument value
+<TBODY>
+<TR><TD><CODE>equalp 2 3</CODE><TD>--&gt;<TD><CODE>false</CODE>
+<TR><TD><CODE>[print &quot;really??]</CODE><TD>--&gt;<TD><CODE>[print &quot;really??]</CODE>
+</TABLE></CENTER>
+
+<P><H2>Logical Connectives</H2>
+
+<P>Sometimes the condition under which you want to evaluate an instruction
+is complicated.  You want to do it if <EM>both</EM> this <EM>and</EM> that
+are true, or if <EM>either</EM> this <EM>or</EM> that is true.  Logo provides
+operations for this purpose.
+
+<P><CODE>And</CODE> is a predicate with two inputs.  Each input must be either the
+word <CODE>true</CODE> or the word <CODE>false</CODE>.  The output from <CODE>and</CODE> is
+<CODE>true</CODE> if both inputs are <CODE>true</CODE>; the output is <CODE>false</CODE> if
+either input is <CODE>false</CODE>.  (<CODE>And</CODE> can take more than two inputs if
+the entire expression is enclosed in parentheses.  In that case the output
+from <CODE>and</CODE> will be <CODE>true</CODE> only if all of its inputs are <CODE>true</CODE>.)
+
+<P><CODE>Or</CODE> is a predicate with two inputs.  Each input must be either the
+word <CODE>true</CODE> or the word <CODE>false</CODE>.  The output from <CODE>or</CODE> is
+<CODE>true</CODE> if either input is <CODE>true</CODE> (or both inputs are).  The
+output is <CODE>false</CODE> if both inputs are <CODE>false</CODE>.  (Extra-input
+<CODE>or</CODE> outputs <CODE>true</CODE> if any of its inputs are <CODE>true</CODE>, <CODE>
+false</CODE> if all inputs are <CODE>false</CODE>.)
+
+<P><CODE>Not</CODE> is a predicate with one input.  The input must be either the
+word <CODE>true</CODE> or the word <CODE>false</CODE>.  The output from <CODE>not</CODE> is
+the opposite of its input: <CODE>true</CODE> if the input is <CODE>false</CODE>, or
+<CODE>false</CODE> if the input is <CODE>true</CODE>.
+
+<P>
+
+These three procedures are called <EM>logical connectives</EM> because
+they connect logical expressions together into bigger ones.  (A <EM>
+logical</EM> expression is one whose value is <CODE>true</CODE> or <CODE>
+false</CODE>.) They can be useful in defining new predicates:
+
+<P><PRE>to fullp :datum
+output not emptyp :datum
+end
+
+to realwordp :datum
+output and wordp :datum not numberp :datum
+end
+
+to digitp :datum
+output and numberp :datum equalp count :datum 1
+end
+</PRE>
+
+<P><H2><CODE>Ifelse</CODE> as an Operation</H2>
+
+<P>So far, we have applied the idea of conditional evaluation only to
+complete instructions.  It is also possible to choose between two
+expressions to evaluate, by using <CODE>ifelse</CODE> as an
+operation.
+
+<P>When used as an operation, <CODE>ifelse</CODE> requires three inputs.  The first input
+must be either the word <CODE>true</CODE> or the word <CODE>false</CODE>.  The second and third
+inputs must be lists containing Logo expressions.  The output from
+<CODE>ifelse</CODE> is the result of evaluating the second input, if the first input
+is <CODE>true</CODE>, or the result of evaluating the third input, if the first
+input is <CODE>false</CODE>.
+
+<P><PRE>? <U>print sentence &quot;It's ifelse 2=3 [&quot;correct] [&quot;incorrect]</U>
+It's incorrect
+? <U>print ifelse emptyp [] [sum 2 3] [product 6 7]</U>
+5
+</PRE>
+
+<P>Here is one of the classic examples of a procedure in which <CODE>ifelse</CODE> is
+used as an operation.  This procedure is an operation that takes
+a number as its input; it outputs the <EM>absolute value</EM> of the
+number:
+
+<P><PRE>to abs :number
+output ifelse :number&lt;0 [-:number] [:number]
+end
+</PRE>
+
+<P><H2>Expression Lists and Plumbing Diagrams</H2>
+
+<P><CODE>If</CODE> and <CODE>ifelse</CODE> require <EM>instruction lists</EM> or <EM>
+expression lists</EM> as inputs.  This requirement is part of their semantics,
+not part of the syntax of an instruction.  Just as the arithmetic operators
+require numbers as inputs (semantics), but those numeric values can be
+provided either as explicit numbers in the instruction or as the result of
+an arbitrarily complicated subexpression (syntax), the procedures that
+require instruction or expression lists as input don't interpret those
+inputs until after Logo has set up the plumbing for the instructions that
+invoke them.
+
+<P>What does that mean?  Consider the instruction
+
+<P><PRE>ifelse &quot;false [&quot;stupid &quot;list] [print 23]
+</PRE>
+
+<P>Even though the second input to <CODE>ifelse</CODE>--that is, the first
+of the two literal lists--makes no sense as an instruction list, this
+instruction will work correctly without printing an error message.  The Logo
+interpreter knows that <CODE>ifelse</CODE> accepts three inputs, and it sees that
+the three input expressions provided are a literal (quoted) word and two
+literal lists.  It sets up the plumbing without paying any attention to the
+semantics of <CODE>ifelse</CODE>; in particular, Logo doesn't care whether the
+given inputs are meaningful for use with <CODE>ifelse</CODE>.  Then, once <CODE>
+ifelse</CODE> starts running, it examines its first input value.  Since that input
+is the word <CODE>false</CODE>, the <CODE>ifelse</CODE> procedure ignores its second input
+completely and executes the instruction in its third input.
+
+<P>The use of quotation marks and square brackets to indicate literal inputs is
+part of the plumbing syntax, not part of the procedure semantics.  Don't say,
+&quot;<CODE>Ifelse</CODE> requires one predicate input and two inputs in square
+brackets.&quot;  The instruction
+
+<P><PRE>ifelse last [true false] list &quot;&quot;stupid &quot;&quot;list list bf &quot;sprint 23
+</PRE>
+
+<P>has a very different plumbing diagram (syntax) from that of the
+earlier example, but provides exactly the same input values to <CODE>ifelse</CODE>.
+
+<P>Consider these two instructions:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch4/printfirst.gif" ALT="figure: printfirst"></CENTER>
+
+<P>Since the effect of <CODE>print</CODE> is easy to observe, it's not hard
+to see the relationship among the instructions, the plumbing diagrams, and
+the effects when these instructions are run.  Why are brackets used around
+the <CODE>first</CODE> expression in one case but not in the other?  Because in one
+case the expression is how we tell Logo to set up the plumbing diagram,
+while in the second case we are giving <CODE>print</CODE> as input a literal list
+that just happens to look like an expression.  When the context is something
+like <CODE>ifelse</CODE> instead of <CODE>print</CODE>, the syntactic situation is really
+quite similar, but may be harder to see.  Consider this instruction:
+
+<P><PRE>print ifelse emptyp :a [emptyp :b] [emptyp :c]
+</PRE>
+
+<P>Why do we put brackets around two <CODE>emptyp</CODE> expressions but not
+around another similar-looking one?  &raquo; Draw a plumbing diagram
+for this instruction, paying no attention to your mental model of the
+meaning of the <CODE>ifelse</CODE> procedure, treating it as if it were the
+nonsense procedure <CODE>zot3</CODE>.  You will see that the first input to <CODE>
+ifelse</CODE> is an expression whose value will be the word <CODE>true</CODE> or the word
+<CODE>false</CODE>, because Logo will carry out that first <CODE>emptyp</CODE> computation
+before invoking <CODE>ifelse</CODE>.  The remaining two inputs, however, are
+literal lists that happen to contain the word <CODE>emptyp</CODE> but do not
+involve an invocation of <CODE>emptyp</CODE> in the plumbing diagram.  Once <CODE>
+ifelse</CODE> is actually invoked, precisely one of those two list inputs will be
+interpreted as a Logo expression, for which a <EM>new</EM> plumbing diagram
+is (in effect) drawn by Logo.  The other input list is ignored.
+
+<P><H2>Stopping a Procedure</H2>
+
+<P>I'd like to examine more closely one of the examples from the first
+chapter:
+
+<P><PRE>to music.quiz
+print [Who is the greatest musician of all time?]
+if equalp readlist [John Lennon] [print [That's right!] stop]
+print [No, silly, it's John Lennon.]
+end
+</PRE>
+
+<P>You now know about almost all of the primitive procedures
+used in this example.  The only one we haven't discussed is the <CODE>stop</CODE>
+command in the second instruction line.
+
+<P><CODE>Stop</CODE> is a command that takes no inputs.  It is only allowed inside
+a procedure; you can't type <CODE>stop</CODE> to a top-level prompt.  The effect
+of <CODE>stop</CODE> is to finish the evaluation of the procedure in which it is
+used.  Later instructions in the same procedure are skipped.
+
+<P>Notice that <CODE>stop</CODE> does not stop <EM>all</EM> active procedures.  If procedure
+A invokes procedure B, and there is a <CODE>stop</CODE> command in procedure B,
+then procedure A continues after the point where it invoked B.
+
+<P>Recall that the <CODE>output</CODE> command also stops the procedure that invokes
+it.  The difference is that if you're writing an operation, which
+should have an output, you use <CODE>output</CODE>; if you're writing a command,
+which doesn't have an output, you use <CODE>stop</CODE>.
+
+<P>In <CODE>music.quiz</CODE>, the effect of the <CODE>stop</CODE> is that if you get the right
+answer, the final <CODE>print</CODE> instruction isn't evaluated.  The same effect
+could have been written this way:
+
+<P><PRE>ifelse equalp readlist [John Lennon] ~
+    [print [That's right!]] ~
+    [print [No, silly, it's John Lennon.]]
+</PRE>
+
+<P>The alternative form uses the three-input <CODE>ifelse</CODE> command.  One
+advantage of using <CODE>stop</CODE> is precisely that it allows the use of
+shorter lines.  But in this example, where there is only one
+instruction after the <CODE>if</CODE>, it doesn't matter much.  <CODE>Stop</CODE> is
+really useful when you want to stop only in an unusual situation and
+otherwise you have a lot of work still to do:
+
+<P><PRE>to quadratic :a :b :c
+local &quot;discriminant
+make &quot;discriminant (:b * :b)-(4 * :a * :c)
+<U>if :discriminant &lt; 0 [print [No solution.] stop]</U>
+make &quot;discriminant sqrt :discriminant
+local &quot;x1
+local &quot;x2
+make &quot;x1 (-:b + :discriminant)/(2 * :a)
+make &quot;x2 (-:b - :discriminant)/(2 * :a)
+print (sentence [x =] :x1 [or] :x2)
+end
+</PRE>
+
+<P>This procedure applies the quadratic formula to solve the
+equation
+
+<P><CENTER><EM>ax</EM>&#178;+<EM>bx</EM>+<EM>c</EM>=0</CENTER>
+
+<P>The only interesting thing about this example for our present purpose
+is the fact that sometimes there is no solution.  In that case the
+procedure <CODE>stop</CODE>s as soon as it finds out.
+
+<P>Don't forget that you need <CODE>stop</CODE> only if you want to stop a
+procedure before its last instruction line.  A common mistake made by
+beginners who've just learned about <CODE>stop</CODE> is to use it in every
+procedure.  If you look back at the examples so far you'll see that
+many procedures get along fine without invoking <CODE>stop</CODE>.
+
+<P><H2>Improving the Quiz Program</H2>
+
+<P>When I first introduced the <CODE>music.quiz</CODE> example in Chapter 1, we
+hadn't discussed things like user procedures with inputs.  We are now in a
+position to generalize the quiz program:
+
+<P><PRE>to qa :question :answer
+print :question
+if equalp readlist :answer [print [That's right!] stop]
+print sentence [Sorry, it's] :answer
+end
+
+to quiz
+qa [Who is the best musician of all time?] [John Lennon]
+qa [Who wrote &quot;Compulsory Miseducation&quot;?] [Paul Goodman]
+qa [What color was George Washington's white horse?] [white]
+qa [how much is 2+2?] [5]
+end
+</PRE>
+
+Procedure <CODE>qa</CODE> is our old friend <CODE>music.quiz</CODE>, with variable
+inputs instead of a fixed question and answer.  <CODE>Quiz</CODE> uses <CODE>qa</CODE> several
+times to ask different questions.
+
+<P>&raquo;Here are a couple of suggestions for further improvements you should
+be able to make to <CODE>quiz</CODE> and <CODE>qa</CODE>:
+
+<P>1.  <CODE>Qa</CODE> is very fussy about getting one particular answer to a
+question. If you answer <CODE>Lennon</CODE> instead of <CODE>John Lennon</CODE>,
+it'll tell you you're wrong.  There are a couple of ways you might fix
+this.  One is to look for a single-word answer <EM>anywhere within</EM>
+what the user types.  So if <CODE>:answer</CODE> is the word <CODE>Lennon</CODE>,
+the program will accept &quot;<CODE>Lennon</CODE>,&quot; &quot;<CODE>John Lennon</CODE>,&quot; or &quot;<CODE>the
+Lennon Sisters</CODE>.&quot;  The second approach would be for <CODE>qa</CODE> to take a
+<EM>list</EM> of possible answers as its second input:
+
+<P><PRE>qa [Who is the best musician of all time?] ~
+   [[John Lennon] [Lennon] [the Beatles]]
+</PRE>
+
+<P><CODE>Qa</CODE> then has to use a different predicate, to see if what
+the user types is any of the answers in the list.
+
+<P>2.  By giving <CODE>quiz</CODE> a local variable named <CODE>score</CODE>, you could
+have <CODE>quiz</CODE> and <CODE>qa</CODE> cooperate to keep track of how many
+questions the user gets right.  At the end the score could be printed.
+(This is an opportunity to think about the stylistic virtues and vices
+of letting a subprocedure modify a variable that belongs to its
+superprocedure.  If you say
+
+<P><PRE>make &quot;score :score+1
+</PRE>
+
+<P>inside <CODE>qa</CODE>, doesn't that make <CODE>quiz</CODE> somewhat mysterious
+to read?  For an alternative, read the next section.)
+
+<P><H2>Reporting Success to a Superprocedure</H2>
+
+<P>Suppose we want the quiz program to give the user three tries before
+revealing the right answer.  There are several ways this could be
+programmed.  Here is a way that uses the tools you already know about.
+
+<P>The general idea is that the procedure that asks the question is
+written as an <EM>operation,</EM> not as a command.  To be exact, it's a
+predicate; it outputs <CODE>true</CODE> if the user gets the right answer.
+This asking procedure, <CODE>ask.once</CODE>, is invoked as a subprocedure of
+<CODE>ask.thrice</CODE>, which is in charge of allowing three tries.  <CODE>
+ask.thrice</CODE> invokes <CODE>ask.once</CODE> up to three times, but stops if
+<CODE>ask.once</CODE> reports success.
+
+<P><PRE>to ask.thrice :question :answer
+repeat 3 [if ask.once :question :answer [stop]]
+print sentence [The answer is] :answer
+end
+
+to ask.once :question :answer
+print :question
+if equalp readlist :answer [print [Right!] output &quot;true]
+print [Sorry, that's wrong.]
+output &quot;false
+end
+</PRE>
+
+<P>
+You've seen <CODE>repeat</CODE> in the first chapter, but you haven't been formally
+introduced.  <CODE>Repeat</CODE> is a command with two inputs.  The first input
+must be a non-negative whole number.  The second input must be a list
+of Logo instructions.  The effect of <CODE>repeat</CODE> is to evaluate its second
+input, the instruction list, the number of times given as the first
+input.
+
+<P>The programming style used in this example is a little controversial.
+In general, it's considered a good idea not to mix effect and output
+in one procedure.  But in this example, <CODE>ask.once</CODE> has an effect (it
+prints the question, reads an answer, and comments on its correctness)
+and also an output (<CODE>true</CODE> or <CODE>false</CODE>).
+
+<P>I think the general rule I've just cited is a good rule, but there
+are exceptions to it.  Using an output of <CODE>true</CODE> or <CODE>false</CODE> to report
+the success or failure of some process is one of the situations that
+I consider acceptable style.  The real point of the rule, I think,
+is to separate <EM>calculating</EM> something from <EM>
+printing</EM> it.  For example, it's a mistake to write procedures like this
+one:
+
+<P><PRE>to <A NAME="prsecond">prsecond :datum
+print first butfirst :datum
+end
+</PRE>
+
+<P>
+A more powerful technique is to write the <CODE>second</CODE> operation
+from Chapter 2; instead of
+
+<P><PRE>prsecond [something or other]
+</PRE>
+
+<P>you can then say
+
+<P><PRE>print second [something or other]
+</PRE>
+
+<P>It may not be obvious from this example why I call <CODE>second</CODE>
+more powerful than <CODE>prsecond</CODE>.  But remember that an operation can be
+combined with other operations, as in the plumbing diagrams we used
+earlier.  For example, the operation <CODE>second</CODE> can extract the word <CODE>
+or</CODE> from the list as shown here.  But you can <EM>also</EM> use it as part of
+a more complex instruction to extract the letter <CODE>o</CODE>:
+
+<P><PRE>print first second [something or other]
+</PRE>
+
+<P>If you'd written the command <CODE>prsecond</CODE> to solve the
+first problem, you'd have to start all over again to solve this new
+one.  (Of course, both of these examples must seem pretty silly; why
+bother extracting a word or a letter from this list?  But I'm trying
+to use examples that are simple enough not to obscure this issue with
+the kinds of complications we'll see in more interesting programs.)
+
+<P>&raquo;If you made the improvements to <CODE>quiz</CODE> and <CODE>qa</CODE> that I
+suggested earlier, you might like to see if they can fit easily with a new
+version of <CODE>quiz</CODE> using <CODE>ask.thrice</CODE>.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch3/v1ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch5/v1ch5.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch5/filter.gif b/js/games/nluqo.github.io/~bh/v1ch5/filter.gif
new file mode 100644
index 0000000..9e040e6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch5/filter.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch5/hof.html b/js/games/nluqo.github.io/~bh/v1ch5/hof.html
new file mode 100644
index 0000000..7bbd997
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch5/hof.html
@@ -0,0 +1,1431 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 5: Functions of Functions</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Functions of Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch4/v1ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch6/v1ch6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+We now have many of the tools we need to write computer programs.  We have
+the primitive operations for arithmetic computation, the primitive
+operations to manipulate words and sentences, and a way to choose between
+alternative computations.  One thing that we still lack is a way to deal
+systematically with data <EM>aggregates</EM>--collections of data.  We want
+to be able to say &quot;carry out this computation for each member of that
+aggregate.&quot;  Processing large amounts of data uniformly is one of the
+abilities that distinguish computers from mere pocket calculators.
+
+<H2>The Problem: <CODE>Initials</CODE></H2>
+
+<P>
+To make this concrete, we'll look at a very simple example.  I'd like to
+write a procedure that can figure out a person's initials, like this:
+
+<PRE>
+? <U>show initials [George Harrison]</U>
+[G H]
+</PRE>
+
+<P>
+One obvious approach is to find the initials of the first name and the
+last name:
+
+<PRE>
+to initials :name
+output sentence (first first :name) (first last :name)
+end
+</PRE>
+
+<P>
+The trouble is that this approach doesn't work for people with middle
+names.  We'd like our <CODE>initials</CODE> procedure to be able to handle
+any length name.  But it doesn't:
+
+<PRE>
+? <U>show initials [John Alec Entwistle]</U>
+[J E]
+? <U>show initials [Peter Blair Denis Bernard Noone]</U>
+[P N]
+</PRE>
+
+<P>
+What we want is this:
+
+<PRE>
+? <U>show initials.in.our.dreams [John Alec Entwistle]</U>
+[J A E]
+? <U>show initials.in.our.dreams [Peter Blair Denis Bernard Noone]</U>
+[P B D B N]
+</PRE>
+
+<P>
+If we knew that the input would have exactly five names, we
+could extract the first letter of each of them explicitly.  But you never
+know when some smart alec will ask you to
+
+<PRE>
+show initials [Princess Angelina Contessa Louisa Francesca ~
+               Banana Fana Bo Besca the Third]
+</PRE>
+
+<H2>One Solution: Numeric Iteration</H2>
+
+<P>
+If you've programmed before in other languages, then one solution will
+immediately occur to you.  You create a variable <CODE>n</CODE> whose value
+is the number of words in the input, then you have a variable <CODE>i</CODE>
+that takes on all possible values from 1 to <CODE>n</CODE>, and you select
+the <CODE>i</CODE>th word from the input and pull out its first letter.
+Most languages have a special notation for this sort of computation:
+
+<PRE>
+for i = 1 to n : ... : next i                <I>(BASIC)</I>
+for 1 := 1 to n do begin ... end             <I>(Pascal)</I>
+for (i=1; i<=n; i++) { ... }                 <I>(C)</I>
+</PRE>
+
+<P>
+All of these have the same meaning:  Carry out some instructions
+(the part shown as <CODE>...</CODE> above) repeatedly, first with the variable
+named <CODE>i</CODE> having the value <CODE>1</CODE>, then with <CODE>i</CODE> equal to <CODE>2</CODE>,
+and so on, up to <CODE>i</CODE> equal to <CODE>n</CODE>.  This technique is called
+<EM>numeric iteration.</EM>  &quot;Iteration&quot; means repetition, and it's
+&quot;numeric&quot; iteration because the repetition is controlled by a variable
+that takes on a sequence of numeric values.
+
+<P>
+We can do the same thing in Logo, although, as we'll soon learn, it's not
+the usual approach that Logo programmers take to this problem.
+
+<PRE>
+to initials :name
+local "result
+make "result []
+for [i 1 [count :name]] ~
+    [make "result sentence :result first (item :i :name)]
+output :result
+end
+</PRE>
+
+<P>
+(The reason I declare <CODE>result</CODE> as local, but not <CODE>i</CODE>,
+is that Logo's <CODE>for</CODE> automatically makes its index variable local
+to the <CODE>for</CODE> itself.  There is no variable <CODE>i</CODE> outside
+of the <CODE>for</CODE> instruction.)
+
+<P>
+The command <CODE>for</CODE> takes two inputs.  The second input is an
+instruction list that will be carried out repeatedly.  The first input
+controls the repetition; it is a list of either three or four members: a
+variable name, a starting value, a limit value, and an optional increment.
+(The variable named by the first member of the list is called the <EM>index
+variable.</EM> For example:
+
+<PRE>
+? <U>for [number 4 7] [print :number]</U>
+4
+5
+6
+7
+? <U>for [value 4 11 3] [print :value]</U>
+4
+7
+10
+</PRE>
+
+<P>
+In the first example, <CODE>number</CODE> takes on all integer values
+between 4 and 7.  In the second, <CODE>value</CODE>'s starting value is 4,
+and on each repetition its new value is 3 more than last time.
+<CODE>Value</CODE> never actually has its limiting value of 11; the next
+value after 10 would have been 13, but that's bigger than the limit.
+
+<P>
+<CODE>For</CODE> can count downward instead of upward:
+
+<PRE>
+? <U>for [i 7 5] [print :i]</U>
+7
+6
+5
+? <U>for [n 15 2 -6] [print :n]</U>
+15
+9
+3
+? <U>for [x 15 2 6] [print :x]</U>
+?
+</PRE>
+
+<P> The last example has no effect.  Why?  The increment of 6 implies that
+this invocation of <CODE>for</CODE> should count upward, which means that the
+<CODE>for</CODE> continues until the value of <CODE>x</CODE> is greater than
+the limit, 2.  But the starting value, 15, is <EM>already</EM> greater than
+2.
+
+<P> If no increment is given in the first input to <CODE>for</CODE>, then
+<CODE>for</CODE> will use either <CODE>1</CODE> or <CODE>-1</CODE> as the
+increment, whichever is compatible with the starting and limit values.
+
+<P>
+Although I've been using constant numbers as the starting value, limit
+value, and increment in these examples, <CODE>for</CODE> can handle any Logo
+expression, represented as a list, for each of these:
+
+<PRE>
+to spread :ends
+for [digit [first :ends] [last :ends]] [type :digit]
+print []
+end
+
+? <U>spread 19</U>
+123456789
+? <U>spread 83</U>
+876543
+</PRE>
+
+<P>
+More formally, the effect of <CODE>for</CODE> is as follows.  First it creates the
+local index variable and assigns it the starting value.  Then <CODE>for</CODE>
+carries out three steps repeatedly: testing, action, and incrementing.  The
+testing step is to compare the current value of the index variable with the
+limit value.  If the index variable has passed the limit, then the <CODE>for</CODE>
+is finished.  (&quot;Passed&quot; means that the index variable is greater than the
+limit, if the increment is positive, or that the index variable is less than
+the limit, if the increment is negative.)  The action step is to evaluate
+the instructions in the second input to <CODE>for</CODE>.  The incrementing step is
+to assign a new value to the index variable by adding the increment to the
+old value.  Then comes another round of testing, action, and incrementing.
+
+<P>
+So, for example, if we give Logo the instruction
+
+<PRE>
+show initials [Raymond Douglas Davies]
+</PRE>
+
+<P>
+then the <CODE>for</CODE> instruction within <CODE>initials</CODE> is equivalent
+to this sequence of instructions:
+
+<PRE>
+local "i                                  ; initialize index variable
+make "i 1
+
+if (:i > 3) [stop]                        ; testing
+make "result (se :result first "Raymond)  ; action  (result is [R])
+make "i :i+1                              ; incrementing  (i is 2)
+
+if (:i > 3) [stop]                        ; testing
+make "result (se :result first "Douglas)  ; action  (result is [R D])
+make "i :i+1                              ; incrementing  (i is 3)
+
+if (:i > 3) [stop]                        ; testing
+make "result (se :result first "Davies)   ; action  (result is [R D D])
+make "i :i+1                              ; incrementing  (i is 4)
+
+if (:i > 3) [stop]                        ; testing
+</PRE>
+
+<P>
+except that the <CODE>stop</CODE> instruction in the testing step stops
+only the <CODE>for</CODE> instruction, not the <CODE>initials</CODE> procedure.
+
+<H2>Critique of Numeric Iteration</H2>
+
+<P>
+Computers were originally built to deal with numbers.  Numeric iteration
+matches closely the behind-the-scenes sequence of steps by which computers
+actually work.  That's why just about every programming language supports
+this style of programming.
+
+<P>
+Nevertheless, a <CODE>for</CODE> instruction isn't anything like the way
+you, a human being, would solve the <CODE>initials</CODE> problem without a
+computer.  First of all, you wouldn't begin by counting the number of words
+in the name; you really don't have to know that.  You'd just say, for
+example, &quot;First of Raymond is R; first of Douglas is D; first of Davies is
+D.&quot; When you ran out of names, you'd stop.
+
+<P>
+The manipulation of the <CODE>result</CODE> variable to collect the results also
+seems unnatural.  You wouldn't think, &quot;I'm going to start with an empty
+result; then, whatever value <CODE>result</CODE> has, I'll throw in an R; then,
+whatever value <CODE>result</CODE> now has, I'll throw in a D&quot; and so on.
+
+<P>
+In fact, if you had to explain to someone else how to solve this problem,
+you probably wouldn't talk about a sequence of steps at all.  Rather, you'd
+draw a picture like this one:
+
+<P><CENTER><IMG SRC="initials.gif" ALT="<P>figure: initials"></CENTER>
+
+<P>
+To explain the picture, you'd say something like &quot;Just take the
+<CODE>first</CODE> of each word.&quot; You wouldn't even mention the need to put the
+results together into a sentence; you'd take that for granted.
+
+<P>
+In Logo we can write an <CODE>initials</CODE> procedure using the same way of
+thinking that you'd use in English:
+
+<PRE>
+to initials :name
+output map "first :name
+end
+</PRE>
+
+<P>
+The <CODE>map</CODE> procedure means &quot;collect the results of
+doing <EM>this</EM> for each of <EM>those.</EM>&quot;
+
+<P>
+As this example illustrates, <CODE>map</CODE> is easy to use.  But it's a
+little hard to talk about, because it's a function of a function.  So first
+we'll take a detour to talk more precisely about functions in general.
+
+<H2>What's a Function?</H2>
+
+<P>
+A <EM>function</EM> is a rule for turning one value (called the
+<EM>argument</EM>) into another.  If
+you've studied algebra you'll remember numeric function rules such as
+
+<P><CENTER><I>f</I>(<I>x</I>) = 3<I>x</I>-6</CENTER>
+
+<P>
+but not all functions are numeric, and not all rules need be expressed as
+algebraic formulas.  For example, here is the Instrument function, which
+takes a Beatle as its argument and returns his instrument:
+
+<P><CENTER><TABLE>
+<TR align="left">
+<TH><U>argument</U> &#160; &#160; &#160; </TH>
+<TH><U>result</U></TH>
+<TR>
+<TD>John</TD>
+<TD>rhythm guitar</TD>
+<TR>
+<TD>Paul</TD>
+<TD>bass guitar</TD>
+<TR>
+<TD>George</TD>
+<TD>lead guitar</TD>
+<TR>
+<TD>Ringo</TD>
+<TD>drums</TD>
+</TABLE></CENTER>
+
+<P>
+This particular function has only four possible arguments.  Other
+functions, like <I>f</I>(<I>x</I>) above, may have infinitely many possible arguments.
+The set of possible arguments is called the <EM>domain</EM> of the
+function.  Similarly, the set of possible result values is called the
+<EM>range</EM> of the function.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>It's a little awkward to talk about
+the domain of a function that takes two arguments.  That is, it's easy to
+say that the domain of the function represented by the <CODE>first</CODE> operation
+is words or lists, but how do we describe <CODE>item</CODE>?  We could loosely say
+&quot;its domain is numbers and words or lists,&quot; but that sounds as if either
+argument could be any of those.  The most precise way to say it is this:
+&quot;The domain of <CODE>item</CODE> is pairs of values, in which the first member of
+the pair is a positive integer and the second member is a word or list of
+length greater than or equal to the first member of the pair.&quot; But for
+ordinary purposes we just rephrase the sentence to avoid the word &quot;domain&quot;
+altogether:  &quot;<CODE>Item</CODE> takes two inputs; the first must be a positive
+integer and the second must be a word or list...&quot;</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+Functions can be represented in many ways.  (We've seen two in this
+section: formulas and tables.)  One way to represent a function is with a
+Logo operation.  Here are Logo representations of the two functions we've
+discussed:
+
+<PRE>
+to f :x
+output 3*:x - 6
+end
+
+to instrument :beatle
+if :beatle = "John [output [rhythm guitar]]
+if :beatle = "Paul [output [bass guitar]]
+if :beatle = "George [output [lead guitar]]
+if :beatle = "Ringo [output [drums]]
+end
+</PRE>
+
+<P>
+(What if we give <CODE>instrument</CODE> an input that's not in the
+domain of the function?  In that case, it won't output any value, and a Logo
+error message will result.  Some people would argue that the procedure
+should provide its own, more specific error message.)
+
+<P>
+I've been careful to say that the Logo operation <EM>represents</EM> the
+function, not that it <EM>is</EM> the function.  In particular, two Logo
+procedures can compute the same function--the same relationship between
+input and output values--by different methods.  For example,
+consider these Logo operations:
+
+<PRE>
+to f :x                       to g :x
+output 3*:x - 6               output 3 * (:x-2)
+end                           end
+</PRE>
+
+<P>
+The Logo operations <CODE>f</CODE> and <CODE>g</CODE> carry out two different
+computations, but they represent the same function.  For example, to compute
+<CODE>f 10</CODE> we say 3&#215;10=30, 30-6=24; to compute
+<CODE>g 10</CODE> we say 10-2=8, 3&#215;8=24.  Different computations,
+but the same answer.  Functional programming means, in part, focusing our
+attention on the inputs and outputs of programs rather than on the sequence
+of computational steps.
+
+<P>
+Just as a Logo operation represents a function, the procedure's inputs
+similarly <EM>represent</EM> the arguments to the corresponding function.
+For example, that instrument function I presented earlier has Beatles (that
+is to say, people) as its domain and has musical instruments as its range.
+But Logo doesn't have people or instruments as data types, and so the
+procedure <CODE>instrument</CODE> takes as its input <EM>the name of</EM> a
+Beatle (that is, a word) and returns as its output <EM>the name of</EM> an
+instrument (a sentence).  Instrument is a function from Beatles to
+instruments, but <CODE>instrument</CODE> is an operation from words to
+sentences.
+
+<P>
+We're about to see a similar situation when we explore <CODE>map</CODE>.
+The map function--that is, the function that <CODE>map</CODE>
+represents--is a <EM>function of functions.</EM> One of the arguments to
+the map function is itself a function.  The corresponding input to Logo's
+<CODE>map</CODE> procedure should be a procedure.  But it turns out that
+Logo doesn't quite allow a procedure to be an input to another procedure;
+instead, we must use the <EM>name</EM> of the procedure as the input, just as
+we use the name of a Beatle as the input to <CODE>instrument</CODE>.
+
+<P>
+I know this sounds like lawyer talk, and we haven't written any programs for
+a while.  But here's why this is important:  In order to understand the
+<EM>purpose</EM> of <CODE>map</CODE>, you have to think about the map
+function, whose domain is functions (and other stuff, as we'll see in a
+moment).  But in order to understand the <EM>notation</EM> that you use with
+<CODE>map</CODE> in Logo, you have to think in terms of the Logo operation,
+whose input is words (names of procedures).  You have to be clear about this
+representation business in order to be able to shift mentally between these
+viewpoints.
+
+<H2>Functions of Functions: <CODE>Map</CODE></H2>
+
+<P>
+<CODE>Map</CODE> takes two inputs.  The first is a word, which must be the name
+of a one-input Logo operation.  The second can be any datum.  The output
+from <CODE>map</CODE> is either a word or a list, whichever is the type of the
+second input.  The members of the output are the results of applying the
+named operation to the members of the second input.
+
+<PRE>
+? <U>show map "first [Rod Argent]</U>
+[R A]
+</PRE>
+
+<P>
+In this example, the output is a list of two members, just as the second
+input is a list of two members.  Each member of the output is the result of
+applying <CODE>first</CODE> to one of the members of <CODE>map</CODE>'s
+second input.
+
+<P>
+Many people, when they first meet <CODE>map</CODE>, are confused by the
+quoting of its first input.  After all, I made a fuss back in Chapter
+2 about the difference between these two examples:
+
+<PRE>
+? <U>print Hello</U>
+I don't know how  to Hello
+? <U>print "Hello</U>
+Hello
+</PRE>
+
+<P>
+You learned that a quoted word means the word itself, while an unquoted word
+asks Logo to invoke a procedure.  But now, when I want to use the
+<CODE>first</CODE> procedure as input to <CODE>map</CODE>, I'm quoting its
+name.  Why?
+
+<P>
+All that effort about the domains of functions should help you understand
+the notation used here.  Start by ignoring the Logo notation and think about
+the domain of the map function.  We want the map function to have
+<EM>another function,</EM> the function &quot;first&quot; in this case, as one of its
+arguments:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch5/mapfun.gif" ALT="<P>figure: mapfun"></CENTER>
+
+<P>
+It's tempting to say that in Logo, a function is represented by a procedure,
+so <CODE>map</CODE> represents map, and <CODE>first</CODE> represents first.
+If this were algebra notation, I'd say <I>map</I>(<I>first</I>, <I>Rod Argent</I>),
+so in Logo I'll say
+
+<PRE>
+show map first [Rod Argent]            ;; wrong!
+</PRE>
+
+<P>
+But when a Logo instruction has two unquoted procedure names in a row, that
+doesn't mean that the second function is used as argument to the first!
+Instead, it means that <EM>the output from invoking</EM> the second function
+is used as the argument to the first.  In this case, we'd be
+<EM>composing</EM> <CODE>map</CODE> and <CODE>first</CODE>:
+
+<P><CENTER><IMG SRC="maperror.gif" ALT="<P>figure: maperror"></CENTER>
+
+<P>
+As the plumbing diagram shows, the list that we intended as the second input
+to <CODE>map</CODE> actually ends up as the input to <CODE>first</CODE>, and
+Logo will complain because <CODE>map</CODE> isn't given enough inputs.
+
+<P>
+Instead, as I said earlier, we must use <EM>the name of</EM> the
+<CODE>first</CODE> procedure to represent it.  That gives this diagram:
+
+<P><CENTER><IMG SRC="mapoper.gif" ALT="<P>figure: mapoper"></CENTER>
+
+<P>
+Here's another simple example.  Logo has a primitive operation
+<CODE>uppercase</CODE> that takes a word as input, and outputs the same word
+but in all capital letters:
+
+<PRE>
+? <U>print uppercase "young</U>
+YOUNG
+</PRE>
+
+<P>
+What if we want to translate an entire sentence to capital letters?  The
+<CODE>uppercase</CODE> primitive doesn't accept a sentence as its input:
+
+<PRE>
+? <U>show uppercase [neil young]</U>
+uppercase doesn't like [neil young] as input.
+</PRE>
+
+<P>
+But we can use <CODE>map</CODE> to translate each word separately and
+combine the results:
+
+<PRE>
+? <U>show map "uppercase [neil young]</U>
+[NEIL YOUNG]
+</PRE>
+
+<P>
+Ordinarily <CODE>map</CODE> works with one-argument functions.  But we can
+give <CODE>map</CODE> extra arguments (by enclosing the invocation of
+<CODE>map</CODE> in parentheses, as usual) so that it can work with
+functions of more than one argument.
+
+<PRE>
+? <U>show (map "item [2 1 2 3] [john paul george ringo])</U>
+[o p e n]
+? <U>show (map "sum [1 2 3] [40 50 60] [700 800 900])</U>
+[741 852 963]
+</PRE>
+
+<P>
+Each input after the first provides values for one input to the mapped
+function.  For example, <CODE>[2 1 2 3]</CODE> provides four values for the
+first input to <CODE>item</CODE>.  The input lists must all have the same
+length (two lists of length four in the <CODE>item</CODE> example, three
+lists of length three in the <CODE>sum</CODE> example).
+
+<P>
+In the examples so far, the input data have been lists.  Here's an example
+in which we use <CODE>map</CODE> with words.  Let's say we're writing a
+program to play Hangman, the word game in which one player guesses letters
+in a secret word chosen by the other player.  At first the guesser sees only
+a row of dashes indicating the number of letters in the word; for each
+guess, more letters are revealed.  We aren't going to write the entire
+program yet, but we're ready to write the operation that takes the secret
+word, and a list of the letters that have been guessed so far, and outputs a
+row of letters and dashes as appropriate.
+
+<PRE>
+to hangword :secret :guessed
+output map "hangletter :secret
+end
+
+to hangletter :letter
+output ifelse memberp :letter :guessed [:letter] ["_]
+end
+
+? <U>print hangword "potsticker [e t a o i n]</U>
+_ot_ti__er
+? <U>print hangword "gelato [e t a o i n]</U>
+_e_ato
+</PRE>
+
+<P>
+Notice that <CODE>hangletter</CODE> depends on Logo's dynamic scope to have
+access to <CODE>hangword</CODE>'s local variable named <CODE>guessed</CODE>.
+
+<P>
+&raquo; Write an operation <CODE>exaggerate</CODE> that takes a sentence as
+input and outputs an exaggerated version:
+
+<PRE>
+? <U>print exaggerate [I ate 3 potstickers]</U>
+I ate 6 potstickers
+? <U>print exaggerate [The chow fun is good here]</U>
+The chow fun is great here
+</PRE>
+
+<P>
+It should double all the numbers in the sentence, and replace
+&quot;good&quot; with &quot;great,&quot; &quot;bad&quot; with &quot;terrible,&quot; and so on.
+
+<P>
+A function whose domain or range includes functions is called a
+<EM>higher order function.</EM> The function represented by
+<CODE>map</CODE> is a higher order function.  (We may speak loosely and say
+that <CODE>map</CODE> is a higher order function, as long as you remember
+that Logo procedures aren't really functions!)  It's tempting to say that the
+<CODE>map</CODE> procedure itself is a &quot;higher order procedure,&quot; but in
+Logo that isn't true.  Procedures aren't data in Logo; the only data types
+are words and lists.  That's why the input to <CODE>map</CODE> is a word,
+the name of a procedure, and not the procedure itself.  Some languages do
+treat procedures themselves as data.  In particular, the language Scheme is
+a close relative of Logo that can handle procedures as data.  If this way of
+thinking appeals to you, consider learning Scheme next!
+
+<H2>Higher Order Selection: <CODE>Filter</CODE></H2>
+
+<P>
+The purpose of <CODE>map</CODE> is to <EM>transform</EM> each member of an
+aggregate (a list or a word) by applying some function to it.  Another
+higher order function, <CODE>filter</CODE>, is used to <EM>select</EM> some
+members of an aggregate, but not others, based on a criterion expressed as a
+predicate function.  For example:
+
+<PRE>
+? <U>show filter "numberp [76 trombones, 4 calling birds, and 8 days]</U>
+[76 4 8]
+
+to vowelp :letter
+output memberp :letter "aeiou
+end
+
+? <U>show filter "vowelp "spaghetti</U>
+aei
+
+to beatlep :person
+output memberp :person [John Paul George Ringo]
+end
+
+? <U>show filter "beatlep [Bob George Jeff Roy Tom]</U>
+[George]
+</PRE>
+
+<P>
+What happens if we use the <CODE>initials</CODE> procedure that we wrote with
+people's names in mind for other kinds of names, such as organizations or
+book titles?  Some of them work well:
+
+<PRE>
+? <U>show initials [Computer Science Logo Style]</U>
+[C S L S]
+? <U>show initials [American Civil Liberties Union]</U>
+[A C L U]
+</PRE>
+
+<P>
+but others don't give quite the results we'd like:
+
+<PRE>
+? <U>show initials [Association for Computing Machinery]</U>
+[A f C M]
+? <U>show initials [People's Republic of China]</U>
+[P R o C]
+</PRE>
+
+<P>
+We'd like to eliminate words like &quot;for&quot; and &quot;of&quot; before taking the first
+letters of the remaining words.  This is a job for <CODE>filter</CODE>:
+
+<PRE>
+to importantp :word
+output not memberp :word [the an a of for by with in to and or]
+end
+
+to initials :name
+output map "first (filter "importantp :name)
+end
+
+? <U>show initials [Association for Computing Machinery]</U>
+[A C M]
+? <U>show initials [People's Republic of China]</U>
+[P R C]
+</PRE>
+
+<H2>Many to One: <CODE>Reduce</CODE></H2>
+
+<P>
+Of course, what we'd <EM>really</EM> like is to have those initials in the
+form of a single word: ACLU, CSLS, ACM, and so on.  For this purpose we
+need yet another higher order function, one that invokes a combining
+function to join the members of an aggregate.
+
+<PRE>
+? <U>show reduce "word [C S L S]</U>
+CSLS
+? <U>show reduce "sum [3 4 5 6]</U>
+18
+? <U>show reduce "sentence "UNICEF</U>
+[U N I C E F]
+</PRE>
+
+<P>
+<CODE>Reduce</CODE> takes two inputs.  The first must be the name of a
+two-input operation; the second can be any <EM>nonempty</EM> word or list.
+
+<PRE>
+to acronym :name
+output reduce "word initials :name
+end
+</PRE>
+
+<P>
+In practice, the first input to <CODE>reduce</CODE> won't be any old
+operation; it'll be a <EM>constructor.</EM> It'll be something that doesn't
+care about the grouping of operands; for example, <CODE>sum</CODE> is a good
+choice but <CODE>difference</CODE> is problematic because we don't know
+whether
+
+<PRE>
+reduce "difference [5 6 7]
+</PRE>
+
+<P>
+means 5-(6-7) or (5-6)-7, and the grouping affects the answer.  Almost
+all the time, the constructor will be <CODE>word</CODE>,
+<CODE>sentence</CODE>, <CODE>sum</CODE>, or <CODE>product</CODE>.  But
+here's an example of another one:
+
+<PRE>
+to bigger :a :b
+output ifelse :a > :b [:a] [:b]
+end
+
+to biggest :nums
+output reduce "bigger :nums
+end
+
+? <U>show biggest [5 7 781 42 8]</U>
+781
+</PRE>
+
+<H2>Choosing the Right Tool</H2>
+
+<P>
+So far you've seen three higher order functions: <CODE>map</CODE>,
+<CODE>filter</CODE>, and <CODE>reduce</CODE>.  How do you decide which one to
+use for a particular problem?  
+
+<P>
+<CODE>Map</CODE> transforms each member of a word or list individually.  The
+result contains as many members as the input.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch5/map.gif" ALT="<P>figure: map"></CENTER>
+
+<P>
+<CODE>Filter</CODE> selects certain members of a word or list and discards the
+others.  The members of the result are members of the input, without
+transformation, but the result may be smaller than the original.
+
+<P><CENTER><IMG SRC="filter.gif" ALT="<P>figure: filter"></CENTER>
+
+<P>
+<CODE>Reduce</CODE> transforms the entire word or list into a single result
+by combining all of the members in some way.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch5/reduce.gif" ALT="<P>figure: reduce"></CENTER>
+
+<H2>Anonymous Functions</H2>
+
+<P>
+In several of the examples in this chapter, I've had to write &quot;helper&quot;
+procedures such as <CODE>hangletter</CODE>, <CODE>importantp</CODE>, and
+<CODE>bigger</CODE> that will never be used independently, but are needed
+only to provide the function argument to a higher order function.  It would
+be simpler if we could avoid writing these as separate procedures.
+
+<P>
+Does that sound confusing?  This is one of those ideas for which an example
+is worth 1000 words:
+
+<PRE>
+to hangword :secret :guessed
+output map [ifelse memberp ? :guessed [?] ["_]] :secret
+end
+</PRE>
+
+<P>
+Until now, the first input to <CODE>map</CODE> has always been a word,
+used to represent the function with that word as its name.  In this example
+we see how a nameless function can be represented: as a list containing a
+Logo expression, but with question marks where the function's argument
+belongs.  Such a list is called a <EM>template.</EM>
+
+<PRE>
+? <U>show filter [memberp ? [John Paul George Ringo]] ~</U>
+              <U>[Bob George Jeff Roy Tom]</U>
+[George]
+</PRE>
+
+<P>
+Anonymous functions of more than one argument are a little uglier.  Instead
+of <CODE>?</CODE> for the argument, you must use <CODE>?1</CODE> for the
+first, <CODE>?2</CODE> for the second, and so on.
+
+<PRE>
+to biggest :nums
+output reduce [ifelse ?1 > ?2 [?1] [?2]] :nums
+end
+</PRE>
+
+<P>
+Notice that the templates don't say <CODE>output</CODE>, as the named
+procedures did.  That's because procedures are made of
+<EM>instructions,</EM> whereas these are <EM>expression</EM> templates.
+When input values are &quot;plugged in&quot; for the question marks, the template
+becomes a Logo expression, which means that when evaluated it has a value.
+If the template said <CODE>output</CODE>, it would be saying to use that
+value as the output <EM>from the procedure containing it!</EM> (I'm just
+repeating the point made earlier that <CODE>output</CODE> immediately stops
+the procedure it's in, even if there are more instructions below it.)
+
+<H2>Higher Order Miscellany</H2>
+
+<P>
+<CODE>Map</CODE> combines the partial results into a list, if the second
+argument is a list, or into a word, if it's a word.  Sometimes this behavior
+isn't quite what you want.  An alternative is <CODE>map.se</CODE> (map to
+sentence), which makes a sentence of the results.  Here are some examples.
+
+<PRE>
+? <U>make "numbers [zero one two three four five six seven eight nine]</U>
+? <U>show map [item ?+1 :numbers] 5789</U>
+fiveseveneightnine
+? <U>show map.se [item ?+1 :numbers] 5789</U>
+[five seven eight nine]
+
+? <U>show map [sentence (word "With ?) "You] [in out]</U>
+[[Within You] [Without You]]
+? <U>show map.se [sentence (word "With ?) "You] [in out]</U>
+[Within You Without You]
+
+? <U>show map.se [sentence ? "Warner] [Yakko Wakko Dot]</U>
+[Yakko Warner Wakko Warner Dot Warner]
+? <U>show map [sentence ? "Warner] [Yakko Wakko Dot]</U>
+[[Yakko Warner] [Wakko Warner] [Dot Warner]]
+</PRE>
+
+<P>
+As these examples show, sometimes <CODE>map</CODE> does what you want, but
+sometimes <CODE>map.se</CODE> does, depending on the &quot;shape&quot; you want your
+result to have.  Do you want a word, a sentence, or a structured list?
+
+<P>
+Suppose we have two sets of things, and we want all the pairings of one of
+these with one of those.  An example will make clear what's desired:
+
+<PRE>
+? <U>show crossproduct [red blue green] [shirt pants]</U>
+[[red shirt] [blue shirt] [green shirt] [red pants] [blue pants]
+ [green pants]]
+</PRE>
+
+<P>
+This is a tricky example because there are two different mistakes
+we could make.  We don't want to &quot;flatten&quot; the result into a sentence:
+
+<PRE>
+[red shirt blue shirt green shirt red pants blue pants green pants]
+</PRE>
+
+<P>
+but we also don't want all the shirts in one list and all the
+pants in another:
+
+<PRE>
+[[[red shirt] [blue shirt] [green shirt]]
+ [[red pants] [blue pants] [green pants]]]
+</PRE>
+
+<P>
+Here's the solution:
+
+<PRE>
+to crossproduct :these :those
+output map.se [prepend.each :these ?] :those
+end
+
+to prepend.each :these :that
+output map [sentence ? :that] :these
+end
+</PRE>
+
+<P>&raquo; Notice that this solution uses both <CODE>map</CODE> and
+<CODE>map.se</CODE>.  Try to predict what would happen if you used
+<CODE>map</CODE> both times, or <CODE>map.se</CODE> both times, or
+interchanged the two.  Then try it on the computer and be sure you
+understand what happens and why!
+
+
+<P>
+By the way, this is a case in which we still need a named helper function
+despite the use of templates, because otherwise we'd have one template
+inside the other, and Logo couldn't figure out which <CODE>?</CODE> to
+replace with what:
+
+<PRE>
+to crossproduct :these :those
+output map.se [map [sentence ? ?] :these] :those     ; (wrong!)
+end
+</PRE>
+
+<P>
+Just as <CODE>map.se</CODE> is a variant of <CODE>map</CODE>,
+<CODE>find</CODE> is a variant of <CODE>filter</CODE>, for the situations in
+which you only want to find <EM>one</EM> member that meets the criterion,
+rather than all the members.  (Perhaps you know in advance that there will
+only be one, or perhaps if there are more than one, you don't care which you
+get.)
+
+<PRE>
+to spellout :card
+output (sentence (butlast :card) "of
+                 (find [equalp last :card first ?]
+                       [hearts spades diamonds clubs]))
+end
+
+? <U>print spellout "5d</U>
+5 of diamonds
+? <U>print spellout "10h</U>
+10 of hearts
+</PRE>
+
+<P>
+Sometimes what you want isn't a function at all.  You want to take some
+<EM>action</EM> for each member of an aggregate.  The most common one is to
+print each member on a separate line, in situations where you've computed a
+long list of things.  You can use <CODE>foreach</CODE> with an
+<EM>instruction</EM> template, rather than an expression template as used
+with the others.  The template is the last argument, rather than the first,
+to follow the way in which the phrase &quot;for each&quot; is used in English:  For
+each of these things, do that.
+
+<PRE>
+? <U>foreach (crossproduct [[ultra chocolate] pumpkin [root beer swirl]</U>
+      <U>ginger] [cone cup]) "print</U>
+ultra chocolate cone
+pumpkin cone
+root beer swirl cone
+ginger cone
+ultra chocolate cup
+pumpkin cup
+root beer swirl cup
+ginger cup
+</PRE>
+
+<P>
+If you look closely at the letters on your computer screen you'll see that
+they are made up of little dots.  One simple pattern represents each letter
+in a rectangle of dots five wide and seven high, like this:
+
+<PRE>
+  *    *****  *****  ****   *****
+ * *   *   *  *      *   *  *
+*   *  *   *  *      *   *  *
+*****  ****   *      *   *  ***
+*   *  *   *  *      *   *  *
+*   *  *   *  *      *   *  *
+*   *  *****  *****  ****   *****
+</PRE>
+
+<P>
+The following program allows you to spell words on the screen in big letters
+like these.  Each letter's shape is kept as the value of a global variable
+with the letter as its name.  (I haven't actually listed all 26 letters.)
+The value is a list of seven words, each of which contains five characters,
+some combination of spaces and asterisks.
+
+<PRE>
+<A name="say">to say :word</A>
+for [row 1 7] [foreach :word [sayrow :row ?] print []]
+print []
+end
+
+to sayrow :row :letter
+type item :row thing :letter
+type "|  |
+end
+
+make "b [|*****| |*   *| |*   *| |**** | |*   *| |*   *| |*****|]
+make "r [|*****| |*   *| |*   *| |*****| |* *  | |*  * | |*   *|]
+make "i [|*****| |  *  | |  *  | |  *  | |  *  | |  *  | |*****|]
+make "a [|  *  | | * * | |*   *| |*****| |*   *| |*   *| |*   *|]
+make "n [|*   *| |**  *| |**  *| |* * *| |*  **| |*  **| |*   *|]
+
+? <U>say "brian</U>
+*****  *****  *****    *    *   *
+*   *  *   *    *     * *   **  *
+*   *  *   *    *    *   *  **  *
+****   *****    *    *****  * * *
+*   *  * *      *    *   *  *  **
+*   *  *  *     *    *   *  *  **
+*****  *   *  *****  *   *  *   *
+</PRE>
+
+<P>&raquo; Modify the program so that <CODE>say</CODE> takes another input, a
+number representing the size in which you want to print the letters.  If the
+number is 1, then the program should work as before.  If the number is 2,
+each dot should be printed as a two-by-two square of spaces or asterisks; if
+the number is 3, a three-by-three square, and so on.
+</LI>
+
+<H2>Repeated Invocation: <CODE>Cascade</CODE></H2>
+
+<P>
+Finally, sometimes you want to compose a function with itself several times:
+
+<PRE>
+? <U>print first bf bf bf bf [The Continuing Story of Bungalow Bill]</U>
+Bungalow
+? <U>print first (cascade 4 "bf [The Continuing Story of Bungalow Bill])</U>
+Bungalow
+</PRE>
+
+<P>
+<CODE>Cascade</CODE> takes three inputs.  The first is a number,
+indicating how many times to invoke the function represented by the second
+argument.  The third argument is the starting value.
+
+<PRE>
+to power :base :exponent
+output cascade :exponent [? * :base] 1
+end
+
+? <U>print power 2 8</U>
+256
+
+to range :from :to
+output cascade :to-:from [sentence ? (1+last ?)] (sentence :from)
+end
+
+? <U>show range 3 8</U>
+[3 4 5 6 7 8]
+</PRE>
+
+<P>
+Like <CODE>map</CODE>, <CODE>cascade</CODE> can be used with extra inputs to
+deal with more than one thing at a time.  One example in which multi-input
+<CODE>cascade</CODE> is useful is the Fibonacci sequence.  Each number in
+the sequence is the sum of the two previous numbers; the first two numbers
+are 1.  So the sequence starts
+
+<P><CENTER>1,1,2,3,5,8,13,...</CENTER>
+
+<P>A formal definition
+of the sequence looks like this:
+
+<P><CENTER><TABLE>
+<TR><TD><I>F</I><SMALL><SUB>0</SUB></SMALL> = 1</TD>
+<TR><TD><I>F</I><SMALL><SUB>1</SUB></SMALL> = 1</TD>
+<TR><TD><I>F</I><SMALL><SUB>n</SUB></SMALL> = <I>F</I><SMALL><SUB>n-1</SUB></SMALL> +
+<I>F</I><SMALL><SUB>n-2</SUB></SMALL>, &#160;  &#160;  &#160; n&#62;1</TD>
+</TABLE></CENTER>
+
+<P>In order to compute, say, <I>F</I><SMALL><SUB>23</SUB></SMALL>,
+we must know both <I>F</I><SMALL><SUB>22</SUB></SMALL> and
+<I>F</I><SMALL><SUB>21</SUB></SMALL>.
+As we work our way up, we must
+always remember the two most recent values, like this:
+
+<P><CENTER><TABLE>
+<TR>
+<TH> </TH>
+<TH>Most recent value &#160; &#160; &#160;</TH>
+<TH>Next most recent value</TH>
+<TR>
+<TD>start</TD>
+<TD>1</TD>
+<TD>0</TD>
+<TR>
+<TD>step 1</TD>
+<TD>1</TD>
+<TD>1</TD>
+<TR>
+<TD>step 2</TD>
+<TD>2</TD>
+<TD>1</TD>
+<TR>
+<TD>step 3</TD>
+<TD>3</TD>
+<TD>2</TD>
+<TR>
+<TD>step 4</TD>
+<TD>5</TD>
+<TD>3</TD>
+<TR>
+<TD>...</TD>
+<TD>...</TD>
+<TD>...</TD>
+<TR>
+<TD>step 22 &#160; &#160; &#160;</TD>
+<TD><I>F</I><SMALL><SUB>22</SUB></SMALL></TD>
+<TD><I>F</I><SMALL><SUB>21</SUB></SMALL></TD>
+<TR>
+<TD>step 23</TD>
+<TD><I>F</I><SMALL><SUB>22</SUB></SMALL>+<I>F</I><SMALL><SUB>21</SUB></SMALL></TD>
+<TD><I>F</I><SMALL><SUB>22</SUB></SMALL></TD>
+</TABLE></CENTER>
+
+<P>
+To express this using <CODE>cascade</CODE>, we can use <CODE>?1</CODE> to
+mean the most recent value and <CODE>?2</CODE> to mean the next most
+recent.  Then at each step, we need a function to compute the new
+<CODE>?1</CODE> by adding the two known values, and a function to copy the
+old <CODE>?1</CODE> as the new <CODE>?2</CODE>:
+
+<PRE>
+to fib :n
+output (cascade :n [?1+?2] 1 [?1] 0)
+end
+
+? <U>print fib 5</U>
+8
+? <U>print fib 23</U>
+46368
+</PRE>
+
+<P>
+Another situation in which multi-input <CODE>cascade</CODE> can be useful is
+to process every member of a list, using <CODE>?1</CODE> to remember the
+already-processed ones and <CODE>?2</CODE> to remember the still-waiting
+ones.  The simplest example is reversing the words in a sentence:
+
+<PRE>
+to reverse :sent
+output (cascade (count :sent)
+                [sentence (first ?2) ?1] []
+		[butfirst ?2] :sent)
+end
+
+? <U>print reverse [how now brown cow]</U>
+cow brown now how
+</PRE>
+
+<P><CENTER><TABLE>
+<TR align="left">
+<TH> </TH>
+<TH><CODE>?1</CODE></TH>
+<TH><CODE>?2</CODE></TH>
+<TR>
+<TD>start</TD>
+<TD><CODE>[]</CODE></TD>
+<TD><CODE>[how now brown cow]</CODE></TD>
+<TR>
+<TD>step 1 &#160; &#160;</TD>
+<TD><CODE>[how]</CODE></TD>
+<TD><CODE>[now brown cow]</CODE></TD>
+<TR>
+<TD>step 2</TD>
+<TD><CODE>[now how]</CODE></TD>
+<TD><CODE>[brown cow]</CODE></TD>
+<TR>
+<TD>step 3</TD>
+<TD><CODE>[brown now how]</CODE></TD>
+<TD><CODE>[cow]</CODE></TD>
+<TR>
+<TD>step 4</TD>
+<TD><CODE>[cow brown now how]</CODE>&#160; &#160;</TD>
+<TD><CODE>[]</CODE></TD>
+</TABLE></CENTER>
+
+<P>
+Here is the general notation for multi-input <CODE>cascade</CODE>:
+
+<PRE>
+(cascade <U>howmany</U> <U>function1</U> <U>start1</U> <U>function2</U> <U>start2</U> ...)
+</PRE>
+
+<P>
+There must be as many <TT><U>function</U></TT> inputs as
+<TT><U>start</U></TT> inputs.  Suppose there are <I>n</I> pairs of inputs;
+then each of the <TT><U>function</U></TT>s must accept <I>n</I> inputs.  The
+<TT><U>start</U></TT>s provide the initial values for <CODE>?1</CODE>,
+<CODE>?2</CODE>, and so on; each function provides the next value for one of
+those.  <CODE>Cascade</CODE> returns the final value of <CODE>?1</CODE>.
+
+<H2>A Mini-project: Mastermind</H2>
+
+<P>
+It's time to put these programming tools to work in a more substantial
+project.  You're ready to write a computer program that plays a family of
+games like Mastermind<SMALL><SUP>TM</SUP></SMALL>.  The
+computer picks a secret list of colors;
+the human player makes guesses.  (The number of possible colors can be
+changed to tune the difficulty of the game.)  At each turn, the program
+should tell the player how many colors in the guess are in the correct
+positions in the secret list and also how many are in the list, but not at
+the same positions.  For example, suppose the program's secret colors are
+
+<PRE>
+red green blue violet
+</PRE>
+
+and the player guesses
+
+<PRE>
+red orange yellow green
+</PRE>
+
+<P>
+There is one correct-position match (red, because it's the first color in
+both lists) and one incorrect-position match (green, because it's second in
+the computer's list but fourth in the player's list).
+
+<P>
+In the program, to reduce the amount of typing needed to play the game,
+represent each color as a single letter and each list of colors as a word.
+In the example above, the computer's secret list is represented as
+<CODE>rgbv</CODE> and the player's guess as <CODE>royg</CODE>.
+
+<P>
+There are two possible variations in the rules, depending on whether or not
+color lists with duplications (such as <CODE>rgrb</CODE>, in which red
+appears twice) are allowed.  The program will accept a true-or-false input
+to determine whether or not duplicates are allowed.
+
+<P>
+Here's an example of what an interaction with the program
+should look like:
+
+<PRE>
+? <U>master "roygbiv 4 "false</U>
+
+What's your guess?
+<U>royg</U>
+You have 1 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>rogy</U>
+You have 1 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>orygbv</U>
+You must guess exactly 4 colors.
+
+What's your guess?
+<U>oryx</U>
+The available colors are: roygbiv
+
+What's your guess?
+<U>oryr</U>
+No fair guessing the same color twice!
+
+What's your guess?
+<U>oryg</U>
+You have 0 correct-position matches
+and 3 incorrect-position matches.
+
+What's your guess?
+<U>rbyg</U>
+You have 1 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>boyg</U>
+You have 0 correct-position matches
+and 3 incorrect-position matches.
+
+What's your guess?
+<U>roby</U>
+You have 1 correct-position matches
+and 3 incorrect-position matches.
+
+What's your guess?
+<U>rybo</U>
+You have 2 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>ryob</U>
+You win in 8 guesses!
+?
+</PRE>
+
+<P>
+If you prefer, just jump in and start writing the program.  But I have a
+particular design in mind, and you may find it easier to follow my plan.
+The core of my program is written sequentially, in the form of a
+<CODE>for</CODE> instruction that carries out a sequence of steps once for
+each guess the user makes.  But most of the &quot;smarts&quot; of the program are in
+a collection of subprocedures that use functional programming style.  That
+is, these procedures are operations, not commands; they merely compute and
+output a value without taking any actions.  Pay attention to how these two
+styles fit together.  In writing the operations, don't use <CODE>make</CODE>
+or <CODE>print</CODE>; each operation will consist of a single
+<CODE>output</CODE> instruction.
+
+<P>&raquo; The first task is for the computer to make a random selection from the
+available colors.  Write two versions: <CODE>choose.dup</CODE> that allows
+the same color to be chosen more than once, and <CODE>choose.nodup</CODE>
+that does not allow duplication.  Each of these operations should take two
+inputs: a number, indicating how many colors to choose, and a word of all
+the available colors.  For example, to choose four colors from the rainbow
+without duplication, you'd say
+
+
+<PRE>
+? <U>print choose.nodup 4 "roygbiv</U>
+briy
+</PRE>
+
+<P>
+You'll find the Logo primitive <CODE>pick</CODE> helpful.  It takes a
+word or list as its input, and returns a randomly chosen member:
+
+<PRE>
+? <U>print pick [Pete John Roger Keith]</U>
+John
+? <U>print pick [Pete John Roger Keith]</U>
+Keith
+? <U>print pick "roygbiv</U>
+b
+</PRE>
+
+<P>
+Writing <CODE>choose.dup</CODE> is a straightforward combination of
+<CODE>pick</CODE> and <CODE>cascade</CODE>.
+
+<P>
+<CODE>Choose.nodup</CODE> is a little harder.  Since we want to eliminate
+any color we choose from further consideration, it's plausible to use a
+multi-input <CODE>cascade</CODE> sort of like this:
+
+<PRE>
+(cascade :number-wanted
+         [<U>add one color</U>] "
+	 [<U>remove that color</U>] :colors)
+</PRE>
+
+<P>
+If we always wanted to choose the first available color, this would be just
+like the <CODE>reverse</CODE> example earlier.  But we want to choose a
+color randomly each time.  One solution is to <EM>rotate</EM> the available
+colors by some random amount, then choose what is now the first color.  To
+use that idea you'll need a <CODE>rotate</CODE> operation that rotates a
+word some random number of times, like this:
+
+<PRE>
+? <U>rotate "roygbiv</U>
+ygbivro
+? <U>rotate "roygbiv</U>
+vroygbi
+? <U>rotate "roygbiv</U>
+bivroyg
+</PRE>
+
+<P>
+You can write <CODE>rotate</CODE> using <CODE>cascade</CODE> along with the
+Logo primitive operation <CODE>random</CODE>.  <CODE>Random</CODE> takes a
+positive integer as its input, and outputs a nonnegative integer less than
+its input.  For example, <CODE>random 3</CODE> will output <CODE>0</CODE>,
+<CODE>1</CODE>, or <CODE>2</CODE>.
+
+<P>&raquo; The second task is to evaluate the player's guess.  You'll need an
+operation called <CODE>exact</CODE> that takes two words as inputs (you may
+assume they are the same length) and outputs the number of correct-position
+matches, and another operation called <CODE>inexact</CODE> that computes the
+number of wrong-position matches.  (You may find it easier to write a helper
+procedure <CODE>anymatch</CODE> that takes two words as inputs, but outputs
+the total number of matches, regardless of position.)  Be sure to write
+these so that they work even with the duplicates-allowed rule in effect.
+For example, if the secret word is <CODE>rgrb</CODE> and the user guesses
+<CODE>yrrr</CODE>, then you must report one exact and one inexact match, not
+one exact and two inexact.
+
+
+<PRE>
+? <U>print exact "rgrb "yrrr</U>
+1
+? <U>print inexact "rgrb "yrrr</U>
+1
+? <U>print inexact "royg "rgbo</U>
+2
+</PRE>
+
+<P>
+<CODE>Exact</CODE> is a straightforward application of multi-input
+<CODE>map</CODE>, since you want to look at each letter of the secret word
+along with the same-position letter of the user's guess.  My solution to
+<CODE>anymatch</CODE> was to use <CODE>map</CODE> to consider each of the
+available colors.  For each color, the number of matches is the smaller of
+the number of times it appears in the secret word and the number of times it
+appears in the guess.  (You'll need a helper procedure <CODE>howmany</CODE>
+that takes two inputs, a letter and a word, and outputs the number of times
+that letter occurs in that word.)
+
+<P>&raquo; Up to this point, we've assumed that the player is making legitimate
+guesses.  A valid guess has the right number of colors, chosen from the set
+of available colors, and (perhaps, depending on the chosen rules) with no
+color duplicated.  Write a predicate <CODE>valid.guessp</CODE> that takes a
+guess as its input and returns <CODE>true</CODE> if the guess is valid,
+<CODE>false</CODE> otherwise.  In this procedure, for the first time in this
+project, it's a good idea to violate functional programming style by
+printing an appropriate error message when the output will be
+<CODE>false</CODE>.
+
+
+<P>&raquo; We now have all the tools needed to write the top-level game procedure
+<CODE>master</CODE>.  This procedure will take three inputs: a word of the
+available colors, the number of colors in the secret word, and a
+<CODE>true</CODE> or <CODE>false</CODE> to indicate whether or not duplicate
+colors are allowed.  After using either <CODE>choose.dup</CODE> or
+<CODE>choose.nodup</CODE> to pick the secret word, I used a <CODE>for</CODE>
+loop to carry out the necessary instructions for each guess.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch4/v1ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch6/v1ch6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch5/initials.gif b/js/games/nluqo.github.io/~bh/v1ch5/initials.gif
new file mode 100644
index 0000000..f1eedd4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch5/initials.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch5/maperror.gif b/js/games/nluqo.github.io/~bh/v1ch5/maperror.gif
new file mode 100644
index 0000000..60ab9eb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch5/maperror.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch5/mapoper.gif b/js/games/nluqo.github.io/~bh/v1ch5/mapoper.gif
new file mode 100644
index 0000000..e516c3b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch5/mapoper.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch5/v1ch5.html b/js/games/nluqo.github.io/~bh/v1ch5/v1ch5.html
new file mode 100644
index 0000000..7bbd997
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch5/v1ch5.html
@@ -0,0 +1,1431 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 5: Functions of Functions</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Functions of Functions</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch4/v1ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch6/v1ch6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+We now have many of the tools we need to write computer programs.  We have
+the primitive operations for arithmetic computation, the primitive
+operations to manipulate words and sentences, and a way to choose between
+alternative computations.  One thing that we still lack is a way to deal
+systematically with data <EM>aggregates</EM>--collections of data.  We want
+to be able to say &quot;carry out this computation for each member of that
+aggregate.&quot;  Processing large amounts of data uniformly is one of the
+abilities that distinguish computers from mere pocket calculators.
+
+<H2>The Problem: <CODE>Initials</CODE></H2>
+
+<P>
+To make this concrete, we'll look at a very simple example.  I'd like to
+write a procedure that can figure out a person's initials, like this:
+
+<PRE>
+? <U>show initials [George Harrison]</U>
+[G H]
+</PRE>
+
+<P>
+One obvious approach is to find the initials of the first name and the
+last name:
+
+<PRE>
+to initials :name
+output sentence (first first :name) (first last :name)
+end
+</PRE>
+
+<P>
+The trouble is that this approach doesn't work for people with middle
+names.  We'd like our <CODE>initials</CODE> procedure to be able to handle
+any length name.  But it doesn't:
+
+<PRE>
+? <U>show initials [John Alec Entwistle]</U>
+[J E]
+? <U>show initials [Peter Blair Denis Bernard Noone]</U>
+[P N]
+</PRE>
+
+<P>
+What we want is this:
+
+<PRE>
+? <U>show initials.in.our.dreams [John Alec Entwistle]</U>
+[J A E]
+? <U>show initials.in.our.dreams [Peter Blair Denis Bernard Noone]</U>
+[P B D B N]
+</PRE>
+
+<P>
+If we knew that the input would have exactly five names, we
+could extract the first letter of each of them explicitly.  But you never
+know when some smart alec will ask you to
+
+<PRE>
+show initials [Princess Angelina Contessa Louisa Francesca ~
+               Banana Fana Bo Besca the Third]
+</PRE>
+
+<H2>One Solution: Numeric Iteration</H2>
+
+<P>
+If you've programmed before in other languages, then one solution will
+immediately occur to you.  You create a variable <CODE>n</CODE> whose value
+is the number of words in the input, then you have a variable <CODE>i</CODE>
+that takes on all possible values from 1 to <CODE>n</CODE>, and you select
+the <CODE>i</CODE>th word from the input and pull out its first letter.
+Most languages have a special notation for this sort of computation:
+
+<PRE>
+for i = 1 to n : ... : next i                <I>(BASIC)</I>
+for 1 := 1 to n do begin ... end             <I>(Pascal)</I>
+for (i=1; i<=n; i++) { ... }                 <I>(C)</I>
+</PRE>
+
+<P>
+All of these have the same meaning:  Carry out some instructions
+(the part shown as <CODE>...</CODE> above) repeatedly, first with the variable
+named <CODE>i</CODE> having the value <CODE>1</CODE>, then with <CODE>i</CODE> equal to <CODE>2</CODE>,
+and so on, up to <CODE>i</CODE> equal to <CODE>n</CODE>.  This technique is called
+<EM>numeric iteration.</EM>  &quot;Iteration&quot; means repetition, and it's
+&quot;numeric&quot; iteration because the repetition is controlled by a variable
+that takes on a sequence of numeric values.
+
+<P>
+We can do the same thing in Logo, although, as we'll soon learn, it's not
+the usual approach that Logo programmers take to this problem.
+
+<PRE>
+to initials :name
+local "result
+make "result []
+for [i 1 [count :name]] ~
+    [make "result sentence :result first (item :i :name)]
+output :result
+end
+</PRE>
+
+<P>
+(The reason I declare <CODE>result</CODE> as local, but not <CODE>i</CODE>,
+is that Logo's <CODE>for</CODE> automatically makes its index variable local
+to the <CODE>for</CODE> itself.  There is no variable <CODE>i</CODE> outside
+of the <CODE>for</CODE> instruction.)
+
+<P>
+The command <CODE>for</CODE> takes two inputs.  The second input is an
+instruction list that will be carried out repeatedly.  The first input
+controls the repetition; it is a list of either three or four members: a
+variable name, a starting value, a limit value, and an optional increment.
+(The variable named by the first member of the list is called the <EM>index
+variable.</EM> For example:
+
+<PRE>
+? <U>for [number 4 7] [print :number]</U>
+4
+5
+6
+7
+? <U>for [value 4 11 3] [print :value]</U>
+4
+7
+10
+</PRE>
+
+<P>
+In the first example, <CODE>number</CODE> takes on all integer values
+between 4 and 7.  In the second, <CODE>value</CODE>'s starting value is 4,
+and on each repetition its new value is 3 more than last time.
+<CODE>Value</CODE> never actually has its limiting value of 11; the next
+value after 10 would have been 13, but that's bigger than the limit.
+
+<P>
+<CODE>For</CODE> can count downward instead of upward:
+
+<PRE>
+? <U>for [i 7 5] [print :i]</U>
+7
+6
+5
+? <U>for [n 15 2 -6] [print :n]</U>
+15
+9
+3
+? <U>for [x 15 2 6] [print :x]</U>
+?
+</PRE>
+
+<P> The last example has no effect.  Why?  The increment of 6 implies that
+this invocation of <CODE>for</CODE> should count upward, which means that the
+<CODE>for</CODE> continues until the value of <CODE>x</CODE> is greater than
+the limit, 2.  But the starting value, 15, is <EM>already</EM> greater than
+2.
+
+<P> If no increment is given in the first input to <CODE>for</CODE>, then
+<CODE>for</CODE> will use either <CODE>1</CODE> or <CODE>-1</CODE> as the
+increment, whichever is compatible with the starting and limit values.
+
+<P>
+Although I've been using constant numbers as the starting value, limit
+value, and increment in these examples, <CODE>for</CODE> can handle any Logo
+expression, represented as a list, for each of these:
+
+<PRE>
+to spread :ends
+for [digit [first :ends] [last :ends]] [type :digit]
+print []
+end
+
+? <U>spread 19</U>
+123456789
+? <U>spread 83</U>
+876543
+</PRE>
+
+<P>
+More formally, the effect of <CODE>for</CODE> is as follows.  First it creates the
+local index variable and assigns it the starting value.  Then <CODE>for</CODE>
+carries out three steps repeatedly: testing, action, and incrementing.  The
+testing step is to compare the current value of the index variable with the
+limit value.  If the index variable has passed the limit, then the <CODE>for</CODE>
+is finished.  (&quot;Passed&quot; means that the index variable is greater than the
+limit, if the increment is positive, or that the index variable is less than
+the limit, if the increment is negative.)  The action step is to evaluate
+the instructions in the second input to <CODE>for</CODE>.  The incrementing step is
+to assign a new value to the index variable by adding the increment to the
+old value.  Then comes another round of testing, action, and incrementing.
+
+<P>
+So, for example, if we give Logo the instruction
+
+<PRE>
+show initials [Raymond Douglas Davies]
+</PRE>
+
+<P>
+then the <CODE>for</CODE> instruction within <CODE>initials</CODE> is equivalent
+to this sequence of instructions:
+
+<PRE>
+local "i                                  ; initialize index variable
+make "i 1
+
+if (:i > 3) [stop]                        ; testing
+make "result (se :result first "Raymond)  ; action  (result is [R])
+make "i :i+1                              ; incrementing  (i is 2)
+
+if (:i > 3) [stop]                        ; testing
+make "result (se :result first "Douglas)  ; action  (result is [R D])
+make "i :i+1                              ; incrementing  (i is 3)
+
+if (:i > 3) [stop]                        ; testing
+make "result (se :result first "Davies)   ; action  (result is [R D D])
+make "i :i+1                              ; incrementing  (i is 4)
+
+if (:i > 3) [stop]                        ; testing
+</PRE>
+
+<P>
+except that the <CODE>stop</CODE> instruction in the testing step stops
+only the <CODE>for</CODE> instruction, not the <CODE>initials</CODE> procedure.
+
+<H2>Critique of Numeric Iteration</H2>
+
+<P>
+Computers were originally built to deal with numbers.  Numeric iteration
+matches closely the behind-the-scenes sequence of steps by which computers
+actually work.  That's why just about every programming language supports
+this style of programming.
+
+<P>
+Nevertheless, a <CODE>for</CODE> instruction isn't anything like the way
+you, a human being, would solve the <CODE>initials</CODE> problem without a
+computer.  First of all, you wouldn't begin by counting the number of words
+in the name; you really don't have to know that.  You'd just say, for
+example, &quot;First of Raymond is R; first of Douglas is D; first of Davies is
+D.&quot; When you ran out of names, you'd stop.
+
+<P>
+The manipulation of the <CODE>result</CODE> variable to collect the results also
+seems unnatural.  You wouldn't think, &quot;I'm going to start with an empty
+result; then, whatever value <CODE>result</CODE> has, I'll throw in an R; then,
+whatever value <CODE>result</CODE> now has, I'll throw in a D&quot; and so on.
+
+<P>
+In fact, if you had to explain to someone else how to solve this problem,
+you probably wouldn't talk about a sequence of steps at all.  Rather, you'd
+draw a picture like this one:
+
+<P><CENTER><IMG SRC="initials.gif" ALT="<P>figure: initials"></CENTER>
+
+<P>
+To explain the picture, you'd say something like &quot;Just take the
+<CODE>first</CODE> of each word.&quot; You wouldn't even mention the need to put the
+results together into a sentence; you'd take that for granted.
+
+<P>
+In Logo we can write an <CODE>initials</CODE> procedure using the same way of
+thinking that you'd use in English:
+
+<PRE>
+to initials :name
+output map "first :name
+end
+</PRE>
+
+<P>
+The <CODE>map</CODE> procedure means &quot;collect the results of
+doing <EM>this</EM> for each of <EM>those.</EM>&quot;
+
+<P>
+As this example illustrates, <CODE>map</CODE> is easy to use.  But it's a
+little hard to talk about, because it's a function of a function.  So first
+we'll take a detour to talk more precisely about functions in general.
+
+<H2>What's a Function?</H2>
+
+<P>
+A <EM>function</EM> is a rule for turning one value (called the
+<EM>argument</EM>) into another.  If
+you've studied algebra you'll remember numeric function rules such as
+
+<P><CENTER><I>f</I>(<I>x</I>) = 3<I>x</I>-6</CENTER>
+
+<P>
+but not all functions are numeric, and not all rules need be expressed as
+algebraic formulas.  For example, here is the Instrument function, which
+takes a Beatle as its argument and returns his instrument:
+
+<P><CENTER><TABLE>
+<TR align="left">
+<TH><U>argument</U> &#160; &#160; &#160; </TH>
+<TH><U>result</U></TH>
+<TR>
+<TD>John</TD>
+<TD>rhythm guitar</TD>
+<TR>
+<TD>Paul</TD>
+<TD>bass guitar</TD>
+<TR>
+<TD>George</TD>
+<TD>lead guitar</TD>
+<TR>
+<TD>Ringo</TD>
+<TD>drums</TD>
+</TABLE></CENTER>
+
+<P>
+This particular function has only four possible arguments.  Other
+functions, like <I>f</I>(<I>x</I>) above, may have infinitely many possible arguments.
+The set of possible arguments is called the <EM>domain</EM> of the
+function.  Similarly, the set of possible result values is called the
+<EM>range</EM> of the function.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>It's a little awkward to talk about
+the domain of a function that takes two arguments.  That is, it's easy to
+say that the domain of the function represented by the <CODE>first</CODE> operation
+is words or lists, but how do we describe <CODE>item</CODE>?  We could loosely say
+&quot;its domain is numbers and words or lists,&quot; but that sounds as if either
+argument could be any of those.  The most precise way to say it is this:
+&quot;The domain of <CODE>item</CODE> is pairs of values, in which the first member of
+the pair is a positive integer and the second member is a word or list of
+length greater than or equal to the first member of the pair.&quot; But for
+ordinary purposes we just rephrase the sentence to avoid the word &quot;domain&quot;
+altogether:  &quot;<CODE>Item</CODE> takes two inputs; the first must be a positive
+integer and the second must be a word or list...&quot;</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+Functions can be represented in many ways.  (We've seen two in this
+section: formulas and tables.)  One way to represent a function is with a
+Logo operation.  Here are Logo representations of the two functions we've
+discussed:
+
+<PRE>
+to f :x
+output 3*:x - 6
+end
+
+to instrument :beatle
+if :beatle = "John [output [rhythm guitar]]
+if :beatle = "Paul [output [bass guitar]]
+if :beatle = "George [output [lead guitar]]
+if :beatle = "Ringo [output [drums]]
+end
+</PRE>
+
+<P>
+(What if we give <CODE>instrument</CODE> an input that's not in the
+domain of the function?  In that case, it won't output any value, and a Logo
+error message will result.  Some people would argue that the procedure
+should provide its own, more specific error message.)
+
+<P>
+I've been careful to say that the Logo operation <EM>represents</EM> the
+function, not that it <EM>is</EM> the function.  In particular, two Logo
+procedures can compute the same function--the same relationship between
+input and output values--by different methods.  For example,
+consider these Logo operations:
+
+<PRE>
+to f :x                       to g :x
+output 3*:x - 6               output 3 * (:x-2)
+end                           end
+</PRE>
+
+<P>
+The Logo operations <CODE>f</CODE> and <CODE>g</CODE> carry out two different
+computations, but they represent the same function.  For example, to compute
+<CODE>f 10</CODE> we say 3&#215;10=30, 30-6=24; to compute
+<CODE>g 10</CODE> we say 10-2=8, 3&#215;8=24.  Different computations,
+but the same answer.  Functional programming means, in part, focusing our
+attention on the inputs and outputs of programs rather than on the sequence
+of computational steps.
+
+<P>
+Just as a Logo operation represents a function, the procedure's inputs
+similarly <EM>represent</EM> the arguments to the corresponding function.
+For example, that instrument function I presented earlier has Beatles (that
+is to say, people) as its domain and has musical instruments as its range.
+But Logo doesn't have people or instruments as data types, and so the
+procedure <CODE>instrument</CODE> takes as its input <EM>the name of</EM> a
+Beatle (that is, a word) and returns as its output <EM>the name of</EM> an
+instrument (a sentence).  Instrument is a function from Beatles to
+instruments, but <CODE>instrument</CODE> is an operation from words to
+sentences.
+
+<P>
+We're about to see a similar situation when we explore <CODE>map</CODE>.
+The map function--that is, the function that <CODE>map</CODE>
+represents--is a <EM>function of functions.</EM> One of the arguments to
+the map function is itself a function.  The corresponding input to Logo's
+<CODE>map</CODE> procedure should be a procedure.  But it turns out that
+Logo doesn't quite allow a procedure to be an input to another procedure;
+instead, we must use the <EM>name</EM> of the procedure as the input, just as
+we use the name of a Beatle as the input to <CODE>instrument</CODE>.
+
+<P>
+I know this sounds like lawyer talk, and we haven't written any programs for
+a while.  But here's why this is important:  In order to understand the
+<EM>purpose</EM> of <CODE>map</CODE>, you have to think about the map
+function, whose domain is functions (and other stuff, as we'll see in a
+moment).  But in order to understand the <EM>notation</EM> that you use with
+<CODE>map</CODE> in Logo, you have to think in terms of the Logo operation,
+whose input is words (names of procedures).  You have to be clear about this
+representation business in order to be able to shift mentally between these
+viewpoints.
+
+<H2>Functions of Functions: <CODE>Map</CODE></H2>
+
+<P>
+<CODE>Map</CODE> takes two inputs.  The first is a word, which must be the name
+of a one-input Logo operation.  The second can be any datum.  The output
+from <CODE>map</CODE> is either a word or a list, whichever is the type of the
+second input.  The members of the output are the results of applying the
+named operation to the members of the second input.
+
+<PRE>
+? <U>show map "first [Rod Argent]</U>
+[R A]
+</PRE>
+
+<P>
+In this example, the output is a list of two members, just as the second
+input is a list of two members.  Each member of the output is the result of
+applying <CODE>first</CODE> to one of the members of <CODE>map</CODE>'s
+second input.
+
+<P>
+Many people, when they first meet <CODE>map</CODE>, are confused by the
+quoting of its first input.  After all, I made a fuss back in Chapter
+2 about the difference between these two examples:
+
+<PRE>
+? <U>print Hello</U>
+I don't know how  to Hello
+? <U>print "Hello</U>
+Hello
+</PRE>
+
+<P>
+You learned that a quoted word means the word itself, while an unquoted word
+asks Logo to invoke a procedure.  But now, when I want to use the
+<CODE>first</CODE> procedure as input to <CODE>map</CODE>, I'm quoting its
+name.  Why?
+
+<P>
+All that effort about the domains of functions should help you understand
+the notation used here.  Start by ignoring the Logo notation and think about
+the domain of the map function.  We want the map function to have
+<EM>another function,</EM> the function &quot;first&quot; in this case, as one of its
+arguments:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch5/mapfun.gif" ALT="<P>figure: mapfun"></CENTER>
+
+<P>
+It's tempting to say that in Logo, a function is represented by a procedure,
+so <CODE>map</CODE> represents map, and <CODE>first</CODE> represents first.
+If this were algebra notation, I'd say <I>map</I>(<I>first</I>, <I>Rod Argent</I>),
+so in Logo I'll say
+
+<PRE>
+show map first [Rod Argent]            ;; wrong!
+</PRE>
+
+<P>
+But when a Logo instruction has two unquoted procedure names in a row, that
+doesn't mean that the second function is used as argument to the first!
+Instead, it means that <EM>the output from invoking</EM> the second function
+is used as the argument to the first.  In this case, we'd be
+<EM>composing</EM> <CODE>map</CODE> and <CODE>first</CODE>:
+
+<P><CENTER><IMG SRC="maperror.gif" ALT="<P>figure: maperror"></CENTER>
+
+<P>
+As the plumbing diagram shows, the list that we intended as the second input
+to <CODE>map</CODE> actually ends up as the input to <CODE>first</CODE>, and
+Logo will complain because <CODE>map</CODE> isn't given enough inputs.
+
+<P>
+Instead, as I said earlier, we must use <EM>the name of</EM> the
+<CODE>first</CODE> procedure to represent it.  That gives this diagram:
+
+<P><CENTER><IMG SRC="mapoper.gif" ALT="<P>figure: mapoper"></CENTER>
+
+<P>
+Here's another simple example.  Logo has a primitive operation
+<CODE>uppercase</CODE> that takes a word as input, and outputs the same word
+but in all capital letters:
+
+<PRE>
+? <U>print uppercase "young</U>
+YOUNG
+</PRE>
+
+<P>
+What if we want to translate an entire sentence to capital letters?  The
+<CODE>uppercase</CODE> primitive doesn't accept a sentence as its input:
+
+<PRE>
+? <U>show uppercase [neil young]</U>
+uppercase doesn't like [neil young] as input.
+</PRE>
+
+<P>
+But we can use <CODE>map</CODE> to translate each word separately and
+combine the results:
+
+<PRE>
+? <U>show map "uppercase [neil young]</U>
+[NEIL YOUNG]
+</PRE>
+
+<P>
+Ordinarily <CODE>map</CODE> works with one-argument functions.  But we can
+give <CODE>map</CODE> extra arguments (by enclosing the invocation of
+<CODE>map</CODE> in parentheses, as usual) so that it can work with
+functions of more than one argument.
+
+<PRE>
+? <U>show (map "item [2 1 2 3] [john paul george ringo])</U>
+[o p e n]
+? <U>show (map "sum [1 2 3] [40 50 60] [700 800 900])</U>
+[741 852 963]
+</PRE>
+
+<P>
+Each input after the first provides values for one input to the mapped
+function.  For example, <CODE>[2 1 2 3]</CODE> provides four values for the
+first input to <CODE>item</CODE>.  The input lists must all have the same
+length (two lists of length four in the <CODE>item</CODE> example, three
+lists of length three in the <CODE>sum</CODE> example).
+
+<P>
+In the examples so far, the input data have been lists.  Here's an example
+in which we use <CODE>map</CODE> with words.  Let's say we're writing a
+program to play Hangman, the word game in which one player guesses letters
+in a secret word chosen by the other player.  At first the guesser sees only
+a row of dashes indicating the number of letters in the word; for each
+guess, more letters are revealed.  We aren't going to write the entire
+program yet, but we're ready to write the operation that takes the secret
+word, and a list of the letters that have been guessed so far, and outputs a
+row of letters and dashes as appropriate.
+
+<PRE>
+to hangword :secret :guessed
+output map "hangletter :secret
+end
+
+to hangletter :letter
+output ifelse memberp :letter :guessed [:letter] ["_]
+end
+
+? <U>print hangword "potsticker [e t a o i n]</U>
+_ot_ti__er
+? <U>print hangword "gelato [e t a o i n]</U>
+_e_ato
+</PRE>
+
+<P>
+Notice that <CODE>hangletter</CODE> depends on Logo's dynamic scope to have
+access to <CODE>hangword</CODE>'s local variable named <CODE>guessed</CODE>.
+
+<P>
+&raquo; Write an operation <CODE>exaggerate</CODE> that takes a sentence as
+input and outputs an exaggerated version:
+
+<PRE>
+? <U>print exaggerate [I ate 3 potstickers]</U>
+I ate 6 potstickers
+? <U>print exaggerate [The chow fun is good here]</U>
+The chow fun is great here
+</PRE>
+
+<P>
+It should double all the numbers in the sentence, and replace
+&quot;good&quot; with &quot;great,&quot; &quot;bad&quot; with &quot;terrible,&quot; and so on.
+
+<P>
+A function whose domain or range includes functions is called a
+<EM>higher order function.</EM> The function represented by
+<CODE>map</CODE> is a higher order function.  (We may speak loosely and say
+that <CODE>map</CODE> is a higher order function, as long as you remember
+that Logo procedures aren't really functions!)  It's tempting to say that the
+<CODE>map</CODE> procedure itself is a &quot;higher order procedure,&quot; but in
+Logo that isn't true.  Procedures aren't data in Logo; the only data types
+are words and lists.  That's why the input to <CODE>map</CODE> is a word,
+the name of a procedure, and not the procedure itself.  Some languages do
+treat procedures themselves as data.  In particular, the language Scheme is
+a close relative of Logo that can handle procedures as data.  If this way of
+thinking appeals to you, consider learning Scheme next!
+
+<H2>Higher Order Selection: <CODE>Filter</CODE></H2>
+
+<P>
+The purpose of <CODE>map</CODE> is to <EM>transform</EM> each member of an
+aggregate (a list or a word) by applying some function to it.  Another
+higher order function, <CODE>filter</CODE>, is used to <EM>select</EM> some
+members of an aggregate, but not others, based on a criterion expressed as a
+predicate function.  For example:
+
+<PRE>
+? <U>show filter "numberp [76 trombones, 4 calling birds, and 8 days]</U>
+[76 4 8]
+
+to vowelp :letter
+output memberp :letter "aeiou
+end
+
+? <U>show filter "vowelp "spaghetti</U>
+aei
+
+to beatlep :person
+output memberp :person [John Paul George Ringo]
+end
+
+? <U>show filter "beatlep [Bob George Jeff Roy Tom]</U>
+[George]
+</PRE>
+
+<P>
+What happens if we use the <CODE>initials</CODE> procedure that we wrote with
+people's names in mind for other kinds of names, such as organizations or
+book titles?  Some of them work well:
+
+<PRE>
+? <U>show initials [Computer Science Logo Style]</U>
+[C S L S]
+? <U>show initials [American Civil Liberties Union]</U>
+[A C L U]
+</PRE>
+
+<P>
+but others don't give quite the results we'd like:
+
+<PRE>
+? <U>show initials [Association for Computing Machinery]</U>
+[A f C M]
+? <U>show initials [People's Republic of China]</U>
+[P R o C]
+</PRE>
+
+<P>
+We'd like to eliminate words like &quot;for&quot; and &quot;of&quot; before taking the first
+letters of the remaining words.  This is a job for <CODE>filter</CODE>:
+
+<PRE>
+to importantp :word
+output not memberp :word [the an a of for by with in to and or]
+end
+
+to initials :name
+output map "first (filter "importantp :name)
+end
+
+? <U>show initials [Association for Computing Machinery]</U>
+[A C M]
+? <U>show initials [People's Republic of China]</U>
+[P R C]
+</PRE>
+
+<H2>Many to One: <CODE>Reduce</CODE></H2>
+
+<P>
+Of course, what we'd <EM>really</EM> like is to have those initials in the
+form of a single word: ACLU, CSLS, ACM, and so on.  For this purpose we
+need yet another higher order function, one that invokes a combining
+function to join the members of an aggregate.
+
+<PRE>
+? <U>show reduce "word [C S L S]</U>
+CSLS
+? <U>show reduce "sum [3 4 5 6]</U>
+18
+? <U>show reduce "sentence "UNICEF</U>
+[U N I C E F]
+</PRE>
+
+<P>
+<CODE>Reduce</CODE> takes two inputs.  The first must be the name of a
+two-input operation; the second can be any <EM>nonempty</EM> word or list.
+
+<PRE>
+to acronym :name
+output reduce "word initials :name
+end
+</PRE>
+
+<P>
+In practice, the first input to <CODE>reduce</CODE> won't be any old
+operation; it'll be a <EM>constructor.</EM> It'll be something that doesn't
+care about the grouping of operands; for example, <CODE>sum</CODE> is a good
+choice but <CODE>difference</CODE> is problematic because we don't know
+whether
+
+<PRE>
+reduce "difference [5 6 7]
+</PRE>
+
+<P>
+means 5-(6-7) or (5-6)-7, and the grouping affects the answer.  Almost
+all the time, the constructor will be <CODE>word</CODE>,
+<CODE>sentence</CODE>, <CODE>sum</CODE>, or <CODE>product</CODE>.  But
+here's an example of another one:
+
+<PRE>
+to bigger :a :b
+output ifelse :a > :b [:a] [:b]
+end
+
+to biggest :nums
+output reduce "bigger :nums
+end
+
+? <U>show biggest [5 7 781 42 8]</U>
+781
+</PRE>
+
+<H2>Choosing the Right Tool</H2>
+
+<P>
+So far you've seen three higher order functions: <CODE>map</CODE>,
+<CODE>filter</CODE>, and <CODE>reduce</CODE>.  How do you decide which one to
+use for a particular problem?  
+
+<P>
+<CODE>Map</CODE> transforms each member of a word or list individually.  The
+result contains as many members as the input.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch5/map.gif" ALT="<P>figure: map"></CENTER>
+
+<P>
+<CODE>Filter</CODE> selects certain members of a word or list and discards the
+others.  The members of the result are members of the input, without
+transformation, but the result may be smaller than the original.
+
+<P><CENTER><IMG SRC="filter.gif" ALT="<P>figure: filter"></CENTER>
+
+<P>
+<CODE>Reduce</CODE> transforms the entire word or list into a single result
+by combining all of the members in some way.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch5/reduce.gif" ALT="<P>figure: reduce"></CENTER>
+
+<H2>Anonymous Functions</H2>
+
+<P>
+In several of the examples in this chapter, I've had to write &quot;helper&quot;
+procedures such as <CODE>hangletter</CODE>, <CODE>importantp</CODE>, and
+<CODE>bigger</CODE> that will never be used independently, but are needed
+only to provide the function argument to a higher order function.  It would
+be simpler if we could avoid writing these as separate procedures.
+
+<P>
+Does that sound confusing?  This is one of those ideas for which an example
+is worth 1000 words:
+
+<PRE>
+to hangword :secret :guessed
+output map [ifelse memberp ? :guessed [?] ["_]] :secret
+end
+</PRE>
+
+<P>
+Until now, the first input to <CODE>map</CODE> has always been a word,
+used to represent the function with that word as its name.  In this example
+we see how a nameless function can be represented: as a list containing a
+Logo expression, but with question marks where the function's argument
+belongs.  Such a list is called a <EM>template.</EM>
+
+<PRE>
+? <U>show filter [memberp ? [John Paul George Ringo]] ~</U>
+              <U>[Bob George Jeff Roy Tom]</U>
+[George]
+</PRE>
+
+<P>
+Anonymous functions of more than one argument are a little uglier.  Instead
+of <CODE>?</CODE> for the argument, you must use <CODE>?1</CODE> for the
+first, <CODE>?2</CODE> for the second, and so on.
+
+<PRE>
+to biggest :nums
+output reduce [ifelse ?1 > ?2 [?1] [?2]] :nums
+end
+</PRE>
+
+<P>
+Notice that the templates don't say <CODE>output</CODE>, as the named
+procedures did.  That's because procedures are made of
+<EM>instructions,</EM> whereas these are <EM>expression</EM> templates.
+When input values are &quot;plugged in&quot; for the question marks, the template
+becomes a Logo expression, which means that when evaluated it has a value.
+If the template said <CODE>output</CODE>, it would be saying to use that
+value as the output <EM>from the procedure containing it!</EM> (I'm just
+repeating the point made earlier that <CODE>output</CODE> immediately stops
+the procedure it's in, even if there are more instructions below it.)
+
+<H2>Higher Order Miscellany</H2>
+
+<P>
+<CODE>Map</CODE> combines the partial results into a list, if the second
+argument is a list, or into a word, if it's a word.  Sometimes this behavior
+isn't quite what you want.  An alternative is <CODE>map.se</CODE> (map to
+sentence), which makes a sentence of the results.  Here are some examples.
+
+<PRE>
+? <U>make "numbers [zero one two three four five six seven eight nine]</U>
+? <U>show map [item ?+1 :numbers] 5789</U>
+fiveseveneightnine
+? <U>show map.se [item ?+1 :numbers] 5789</U>
+[five seven eight nine]
+
+? <U>show map [sentence (word "With ?) "You] [in out]</U>
+[[Within You] [Without You]]
+? <U>show map.se [sentence (word "With ?) "You] [in out]</U>
+[Within You Without You]
+
+? <U>show map.se [sentence ? "Warner] [Yakko Wakko Dot]</U>
+[Yakko Warner Wakko Warner Dot Warner]
+? <U>show map [sentence ? "Warner] [Yakko Wakko Dot]</U>
+[[Yakko Warner] [Wakko Warner] [Dot Warner]]
+</PRE>
+
+<P>
+As these examples show, sometimes <CODE>map</CODE> does what you want, but
+sometimes <CODE>map.se</CODE> does, depending on the &quot;shape&quot; you want your
+result to have.  Do you want a word, a sentence, or a structured list?
+
+<P>
+Suppose we have two sets of things, and we want all the pairings of one of
+these with one of those.  An example will make clear what's desired:
+
+<PRE>
+? <U>show crossproduct [red blue green] [shirt pants]</U>
+[[red shirt] [blue shirt] [green shirt] [red pants] [blue pants]
+ [green pants]]
+</PRE>
+
+<P>
+This is a tricky example because there are two different mistakes
+we could make.  We don't want to &quot;flatten&quot; the result into a sentence:
+
+<PRE>
+[red shirt blue shirt green shirt red pants blue pants green pants]
+</PRE>
+
+<P>
+but we also don't want all the shirts in one list and all the
+pants in another:
+
+<PRE>
+[[[red shirt] [blue shirt] [green shirt]]
+ [[red pants] [blue pants] [green pants]]]
+</PRE>
+
+<P>
+Here's the solution:
+
+<PRE>
+to crossproduct :these :those
+output map.se [prepend.each :these ?] :those
+end
+
+to prepend.each :these :that
+output map [sentence ? :that] :these
+end
+</PRE>
+
+<P>&raquo; Notice that this solution uses both <CODE>map</CODE> and
+<CODE>map.se</CODE>.  Try to predict what would happen if you used
+<CODE>map</CODE> both times, or <CODE>map.se</CODE> both times, or
+interchanged the two.  Then try it on the computer and be sure you
+understand what happens and why!
+
+
+<P>
+By the way, this is a case in which we still need a named helper function
+despite the use of templates, because otherwise we'd have one template
+inside the other, and Logo couldn't figure out which <CODE>?</CODE> to
+replace with what:
+
+<PRE>
+to crossproduct :these :those
+output map.se [map [sentence ? ?] :these] :those     ; (wrong!)
+end
+</PRE>
+
+<P>
+Just as <CODE>map.se</CODE> is a variant of <CODE>map</CODE>,
+<CODE>find</CODE> is a variant of <CODE>filter</CODE>, for the situations in
+which you only want to find <EM>one</EM> member that meets the criterion,
+rather than all the members.  (Perhaps you know in advance that there will
+only be one, or perhaps if there are more than one, you don't care which you
+get.)
+
+<PRE>
+to spellout :card
+output (sentence (butlast :card) "of
+                 (find [equalp last :card first ?]
+                       [hearts spades diamonds clubs]))
+end
+
+? <U>print spellout "5d</U>
+5 of diamonds
+? <U>print spellout "10h</U>
+10 of hearts
+</PRE>
+
+<P>
+Sometimes what you want isn't a function at all.  You want to take some
+<EM>action</EM> for each member of an aggregate.  The most common one is to
+print each member on a separate line, in situations where you've computed a
+long list of things.  You can use <CODE>foreach</CODE> with an
+<EM>instruction</EM> template, rather than an expression template as used
+with the others.  The template is the last argument, rather than the first,
+to follow the way in which the phrase &quot;for each&quot; is used in English:  For
+each of these things, do that.
+
+<PRE>
+? <U>foreach (crossproduct [[ultra chocolate] pumpkin [root beer swirl]</U>
+      <U>ginger] [cone cup]) "print</U>
+ultra chocolate cone
+pumpkin cone
+root beer swirl cone
+ginger cone
+ultra chocolate cup
+pumpkin cup
+root beer swirl cup
+ginger cup
+</PRE>
+
+<P>
+If you look closely at the letters on your computer screen you'll see that
+they are made up of little dots.  One simple pattern represents each letter
+in a rectangle of dots five wide and seven high, like this:
+
+<PRE>
+  *    *****  *****  ****   *****
+ * *   *   *  *      *   *  *
+*   *  *   *  *      *   *  *
+*****  ****   *      *   *  ***
+*   *  *   *  *      *   *  *
+*   *  *   *  *      *   *  *
+*   *  *****  *****  ****   *****
+</PRE>
+
+<P>
+The following program allows you to spell words on the screen in big letters
+like these.  Each letter's shape is kept as the value of a global variable
+with the letter as its name.  (I haven't actually listed all 26 letters.)
+The value is a list of seven words, each of which contains five characters,
+some combination of spaces and asterisks.
+
+<PRE>
+<A name="say">to say :word</A>
+for [row 1 7] [foreach :word [sayrow :row ?] print []]
+print []
+end
+
+to sayrow :row :letter
+type item :row thing :letter
+type "|  |
+end
+
+make "b [|*****| |*   *| |*   *| |**** | |*   *| |*   *| |*****|]
+make "r [|*****| |*   *| |*   *| |*****| |* *  | |*  * | |*   *|]
+make "i [|*****| |  *  | |  *  | |  *  | |  *  | |  *  | |*****|]
+make "a [|  *  | | * * | |*   *| |*****| |*   *| |*   *| |*   *|]
+make "n [|*   *| |**  *| |**  *| |* * *| |*  **| |*  **| |*   *|]
+
+? <U>say "brian</U>
+*****  *****  *****    *    *   *
+*   *  *   *    *     * *   **  *
+*   *  *   *    *    *   *  **  *
+****   *****    *    *****  * * *
+*   *  * *      *    *   *  *  **
+*   *  *  *     *    *   *  *  **
+*****  *   *  *****  *   *  *   *
+</PRE>
+
+<P>&raquo; Modify the program so that <CODE>say</CODE> takes another input, a
+number representing the size in which you want to print the letters.  If the
+number is 1, then the program should work as before.  If the number is 2,
+each dot should be printed as a two-by-two square of spaces or asterisks; if
+the number is 3, a three-by-three square, and so on.
+</LI>
+
+<H2>Repeated Invocation: <CODE>Cascade</CODE></H2>
+
+<P>
+Finally, sometimes you want to compose a function with itself several times:
+
+<PRE>
+? <U>print first bf bf bf bf [The Continuing Story of Bungalow Bill]</U>
+Bungalow
+? <U>print first (cascade 4 "bf [The Continuing Story of Bungalow Bill])</U>
+Bungalow
+</PRE>
+
+<P>
+<CODE>Cascade</CODE> takes three inputs.  The first is a number,
+indicating how many times to invoke the function represented by the second
+argument.  The third argument is the starting value.
+
+<PRE>
+to power :base :exponent
+output cascade :exponent [? * :base] 1
+end
+
+? <U>print power 2 8</U>
+256
+
+to range :from :to
+output cascade :to-:from [sentence ? (1+last ?)] (sentence :from)
+end
+
+? <U>show range 3 8</U>
+[3 4 5 6 7 8]
+</PRE>
+
+<P>
+Like <CODE>map</CODE>, <CODE>cascade</CODE> can be used with extra inputs to
+deal with more than one thing at a time.  One example in which multi-input
+<CODE>cascade</CODE> is useful is the Fibonacci sequence.  Each number in
+the sequence is the sum of the two previous numbers; the first two numbers
+are 1.  So the sequence starts
+
+<P><CENTER>1,1,2,3,5,8,13,...</CENTER>
+
+<P>A formal definition
+of the sequence looks like this:
+
+<P><CENTER><TABLE>
+<TR><TD><I>F</I><SMALL><SUB>0</SUB></SMALL> = 1</TD>
+<TR><TD><I>F</I><SMALL><SUB>1</SUB></SMALL> = 1</TD>
+<TR><TD><I>F</I><SMALL><SUB>n</SUB></SMALL> = <I>F</I><SMALL><SUB>n-1</SUB></SMALL> +
+<I>F</I><SMALL><SUB>n-2</SUB></SMALL>, &#160;  &#160;  &#160; n&#62;1</TD>
+</TABLE></CENTER>
+
+<P>In order to compute, say, <I>F</I><SMALL><SUB>23</SUB></SMALL>,
+we must know both <I>F</I><SMALL><SUB>22</SUB></SMALL> and
+<I>F</I><SMALL><SUB>21</SUB></SMALL>.
+As we work our way up, we must
+always remember the two most recent values, like this:
+
+<P><CENTER><TABLE>
+<TR>
+<TH> </TH>
+<TH>Most recent value &#160; &#160; &#160;</TH>
+<TH>Next most recent value</TH>
+<TR>
+<TD>start</TD>
+<TD>1</TD>
+<TD>0</TD>
+<TR>
+<TD>step 1</TD>
+<TD>1</TD>
+<TD>1</TD>
+<TR>
+<TD>step 2</TD>
+<TD>2</TD>
+<TD>1</TD>
+<TR>
+<TD>step 3</TD>
+<TD>3</TD>
+<TD>2</TD>
+<TR>
+<TD>step 4</TD>
+<TD>5</TD>
+<TD>3</TD>
+<TR>
+<TD>...</TD>
+<TD>...</TD>
+<TD>...</TD>
+<TR>
+<TD>step 22 &#160; &#160; &#160;</TD>
+<TD><I>F</I><SMALL><SUB>22</SUB></SMALL></TD>
+<TD><I>F</I><SMALL><SUB>21</SUB></SMALL></TD>
+<TR>
+<TD>step 23</TD>
+<TD><I>F</I><SMALL><SUB>22</SUB></SMALL>+<I>F</I><SMALL><SUB>21</SUB></SMALL></TD>
+<TD><I>F</I><SMALL><SUB>22</SUB></SMALL></TD>
+</TABLE></CENTER>
+
+<P>
+To express this using <CODE>cascade</CODE>, we can use <CODE>?1</CODE> to
+mean the most recent value and <CODE>?2</CODE> to mean the next most
+recent.  Then at each step, we need a function to compute the new
+<CODE>?1</CODE> by adding the two known values, and a function to copy the
+old <CODE>?1</CODE> as the new <CODE>?2</CODE>:
+
+<PRE>
+to fib :n
+output (cascade :n [?1+?2] 1 [?1] 0)
+end
+
+? <U>print fib 5</U>
+8
+? <U>print fib 23</U>
+46368
+</PRE>
+
+<P>
+Another situation in which multi-input <CODE>cascade</CODE> can be useful is
+to process every member of a list, using <CODE>?1</CODE> to remember the
+already-processed ones and <CODE>?2</CODE> to remember the still-waiting
+ones.  The simplest example is reversing the words in a sentence:
+
+<PRE>
+to reverse :sent
+output (cascade (count :sent)
+                [sentence (first ?2) ?1] []
+		[butfirst ?2] :sent)
+end
+
+? <U>print reverse [how now brown cow]</U>
+cow brown now how
+</PRE>
+
+<P><CENTER><TABLE>
+<TR align="left">
+<TH> </TH>
+<TH><CODE>?1</CODE></TH>
+<TH><CODE>?2</CODE></TH>
+<TR>
+<TD>start</TD>
+<TD><CODE>[]</CODE></TD>
+<TD><CODE>[how now brown cow]</CODE></TD>
+<TR>
+<TD>step 1 &#160; &#160;</TD>
+<TD><CODE>[how]</CODE></TD>
+<TD><CODE>[now brown cow]</CODE></TD>
+<TR>
+<TD>step 2</TD>
+<TD><CODE>[now how]</CODE></TD>
+<TD><CODE>[brown cow]</CODE></TD>
+<TR>
+<TD>step 3</TD>
+<TD><CODE>[brown now how]</CODE></TD>
+<TD><CODE>[cow]</CODE></TD>
+<TR>
+<TD>step 4</TD>
+<TD><CODE>[cow brown now how]</CODE>&#160; &#160;</TD>
+<TD><CODE>[]</CODE></TD>
+</TABLE></CENTER>
+
+<P>
+Here is the general notation for multi-input <CODE>cascade</CODE>:
+
+<PRE>
+(cascade <U>howmany</U> <U>function1</U> <U>start1</U> <U>function2</U> <U>start2</U> ...)
+</PRE>
+
+<P>
+There must be as many <TT><U>function</U></TT> inputs as
+<TT><U>start</U></TT> inputs.  Suppose there are <I>n</I> pairs of inputs;
+then each of the <TT><U>function</U></TT>s must accept <I>n</I> inputs.  The
+<TT><U>start</U></TT>s provide the initial values for <CODE>?1</CODE>,
+<CODE>?2</CODE>, and so on; each function provides the next value for one of
+those.  <CODE>Cascade</CODE> returns the final value of <CODE>?1</CODE>.
+
+<H2>A Mini-project: Mastermind</H2>
+
+<P>
+It's time to put these programming tools to work in a more substantial
+project.  You're ready to write a computer program that plays a family of
+games like Mastermind<SMALL><SUP>TM</SUP></SMALL>.  The
+computer picks a secret list of colors;
+the human player makes guesses.  (The number of possible colors can be
+changed to tune the difficulty of the game.)  At each turn, the program
+should tell the player how many colors in the guess are in the correct
+positions in the secret list and also how many are in the list, but not at
+the same positions.  For example, suppose the program's secret colors are
+
+<PRE>
+red green blue violet
+</PRE>
+
+and the player guesses
+
+<PRE>
+red orange yellow green
+</PRE>
+
+<P>
+There is one correct-position match (red, because it's the first color in
+both lists) and one incorrect-position match (green, because it's second in
+the computer's list but fourth in the player's list).
+
+<P>
+In the program, to reduce the amount of typing needed to play the game,
+represent each color as a single letter and each list of colors as a word.
+In the example above, the computer's secret list is represented as
+<CODE>rgbv</CODE> and the player's guess as <CODE>royg</CODE>.
+
+<P>
+There are two possible variations in the rules, depending on whether or not
+color lists with duplications (such as <CODE>rgrb</CODE>, in which red
+appears twice) are allowed.  The program will accept a true-or-false input
+to determine whether or not duplicates are allowed.
+
+<P>
+Here's an example of what an interaction with the program
+should look like:
+
+<PRE>
+? <U>master "roygbiv 4 "false</U>
+
+What's your guess?
+<U>royg</U>
+You have 1 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>rogy</U>
+You have 1 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>orygbv</U>
+You must guess exactly 4 colors.
+
+What's your guess?
+<U>oryx</U>
+The available colors are: roygbiv
+
+What's your guess?
+<U>oryr</U>
+No fair guessing the same color twice!
+
+What's your guess?
+<U>oryg</U>
+You have 0 correct-position matches
+and 3 incorrect-position matches.
+
+What's your guess?
+<U>rbyg</U>
+You have 1 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>boyg</U>
+You have 0 correct-position matches
+and 3 incorrect-position matches.
+
+What's your guess?
+<U>roby</U>
+You have 1 correct-position matches
+and 3 incorrect-position matches.
+
+What's your guess?
+<U>rybo</U>
+You have 2 correct-position matches
+and 2 incorrect-position matches.
+
+What's your guess?
+<U>ryob</U>
+You win in 8 guesses!
+?
+</PRE>
+
+<P>
+If you prefer, just jump in and start writing the program.  But I have a
+particular design in mind, and you may find it easier to follow my plan.
+The core of my program is written sequentially, in the form of a
+<CODE>for</CODE> instruction that carries out a sequence of steps once for
+each guess the user makes.  But most of the &quot;smarts&quot; of the program are in
+a collection of subprocedures that use functional programming style.  That
+is, these procedures are operations, not commands; they merely compute and
+output a value without taking any actions.  Pay attention to how these two
+styles fit together.  In writing the operations, don't use <CODE>make</CODE>
+or <CODE>print</CODE>; each operation will consist of a single
+<CODE>output</CODE> instruction.
+
+<P>&raquo; The first task is for the computer to make a random selection from the
+available colors.  Write two versions: <CODE>choose.dup</CODE> that allows
+the same color to be chosen more than once, and <CODE>choose.nodup</CODE>
+that does not allow duplication.  Each of these operations should take two
+inputs: a number, indicating how many colors to choose, and a word of all
+the available colors.  For example, to choose four colors from the rainbow
+without duplication, you'd say
+
+
+<PRE>
+? <U>print choose.nodup 4 "roygbiv</U>
+briy
+</PRE>
+
+<P>
+You'll find the Logo primitive <CODE>pick</CODE> helpful.  It takes a
+word or list as its input, and returns a randomly chosen member:
+
+<PRE>
+? <U>print pick [Pete John Roger Keith]</U>
+John
+? <U>print pick [Pete John Roger Keith]</U>
+Keith
+? <U>print pick "roygbiv</U>
+b
+</PRE>
+
+<P>
+Writing <CODE>choose.dup</CODE> is a straightforward combination of
+<CODE>pick</CODE> and <CODE>cascade</CODE>.
+
+<P>
+<CODE>Choose.nodup</CODE> is a little harder.  Since we want to eliminate
+any color we choose from further consideration, it's plausible to use a
+multi-input <CODE>cascade</CODE> sort of like this:
+
+<PRE>
+(cascade :number-wanted
+         [<U>add one color</U>] "
+	 [<U>remove that color</U>] :colors)
+</PRE>
+
+<P>
+If we always wanted to choose the first available color, this would be just
+like the <CODE>reverse</CODE> example earlier.  But we want to choose a
+color randomly each time.  One solution is to <EM>rotate</EM> the available
+colors by some random amount, then choose what is now the first color.  To
+use that idea you'll need a <CODE>rotate</CODE> operation that rotates a
+word some random number of times, like this:
+
+<PRE>
+? <U>rotate "roygbiv</U>
+ygbivro
+? <U>rotate "roygbiv</U>
+vroygbi
+? <U>rotate "roygbiv</U>
+bivroyg
+</PRE>
+
+<P>
+You can write <CODE>rotate</CODE> using <CODE>cascade</CODE> along with the
+Logo primitive operation <CODE>random</CODE>.  <CODE>Random</CODE> takes a
+positive integer as its input, and outputs a nonnegative integer less than
+its input.  For example, <CODE>random 3</CODE> will output <CODE>0</CODE>,
+<CODE>1</CODE>, or <CODE>2</CODE>.
+
+<P>&raquo; The second task is to evaluate the player's guess.  You'll need an
+operation called <CODE>exact</CODE> that takes two words as inputs (you may
+assume they are the same length) and outputs the number of correct-position
+matches, and another operation called <CODE>inexact</CODE> that computes the
+number of wrong-position matches.  (You may find it easier to write a helper
+procedure <CODE>anymatch</CODE> that takes two words as inputs, but outputs
+the total number of matches, regardless of position.)  Be sure to write
+these so that they work even with the duplicates-allowed rule in effect.
+For example, if the secret word is <CODE>rgrb</CODE> and the user guesses
+<CODE>yrrr</CODE>, then you must report one exact and one inexact match, not
+one exact and two inexact.
+
+
+<PRE>
+? <U>print exact "rgrb "yrrr</U>
+1
+? <U>print inexact "rgrb "yrrr</U>
+1
+? <U>print inexact "royg "rgbo</U>
+2
+</PRE>
+
+<P>
+<CODE>Exact</CODE> is a straightforward application of multi-input
+<CODE>map</CODE>, since you want to look at each letter of the secret word
+along with the same-position letter of the user's guess.  My solution to
+<CODE>anymatch</CODE> was to use <CODE>map</CODE> to consider each of the
+available colors.  For each color, the number of matches is the smaller of
+the number of times it appears in the secret word and the number of times it
+appears in the guess.  (You'll need a helper procedure <CODE>howmany</CODE>
+that takes two inputs, a letter and a word, and outputs the number of times
+that letter occurs in that word.)
+
+<P>&raquo; Up to this point, we've assumed that the player is making legitimate
+guesses.  A valid guess has the right number of colors, chosen from the set
+of available colors, and (perhaps, depending on the chosen rules) with no
+color duplicated.  Write a predicate <CODE>valid.guessp</CODE> that takes a
+guess as its input and returns <CODE>true</CODE> if the guess is valid,
+<CODE>false</CODE> otherwise.  In this procedure, for the first time in this
+project, it's a good idea to violate functional programming style by
+printing an appropriate error message when the output will be
+<CODE>false</CODE>.
+
+
+<P>&raquo; We now have all the tools needed to write the top-level game procedure
+<CODE>master</CODE>.  This procedure will take three inputs: a word of the
+available colors, the number of colors in the secret word, and a
+<CODE>true</CODE> or <CODE>false</CODE> to indicate whether or not duplicate
+colors are allowed.  After using either <CODE>choose.dup</CODE> or
+<CODE>choose.nodup</CODE> to pick the secret word, I used a <CODE>for</CODE>
+loop to carry out the necessary instructions for each guess.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch4/v1ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch6/v1ch6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch6/ttt.html b/js/games/nluqo.github.io/~bh/v1ch6/ttt.html
new file mode 100644
index 0000000..0a86e07
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch6/ttt.html
@@ -0,0 +1,1409 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 6: Example: Tic-Tac-Toe</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Tic-Tac-Toe</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch5/v1ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch7/v1ch7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+<P>Program file for this chapter: <A HREF="ttt.lg"><CODE>ttt</CODE></A>
+
+<P>This chapter is the first application of the ideas we've explored to a
+sizable project.  The primary purpose of the chapter is to introduce
+the techniques of <EM>planning</EM> a project, especially the choice of
+how to organize the information needed by the program.  This organization is
+called the <EM>data structure</EM> of the program.  Along the way,
+we'll also see a new data type, the array, and a few other details of Logo
+programming.
+
+<P><H2>The Project</H2>
+
+<P>Tic-tac-toe is not a very challenging game for human beings.  If you're
+an enthusiast, you've probably moved from the basic game to some variant
+like three-dimensional tic-tac-toe on a larger grid.
+
+<P>If you sit down right now to play ordinary three-by-three tic-tac-toe
+with a friend, what will probably happen is that every game will come
+out a tie.  Both you and your friend can probably play perfectly,
+never making a mistake that would allow your opponent to win.
+
+<P>But can you <EM>describe</EM> how you know where to move each turn? 
+Most of the time, you probably aren't even aware of alternative possibilities;
+you just look at the board and instantly know where you want to move.
+That kind of instant knowledge is great for human beings, because
+it makes you a fast player.  But it isn't much help in writing a computer
+program.  For that, you have to know very explicitly what your strategy
+is.
+
+<P>By the way, although the example of tic-tac-toe strategy is a relatively
+trivial one, this issue of instant knowledge versus explicit rules is a hot
+one in modern psychology.  Some cognitive scientists, who think that human
+intelligence works through mechanisms similar to computer programs, maintain
+that when you know how to do something without knowing <EM>how</EM> you know,
+you have an explicit set of rules deep down inside.  It's just that the
+rules have become a habit, so you don't think about them deliberately.
+They're &quot;compiled,&quot; in the jargon of cognitive psychology.  On
+the other hand, some people think that your implicit how-to knowledge is very
+different from the sort of lists of rules that can be captured in a computer
+program.  They think that human thought is profoundly different from the way
+computers work, and that a computer cannot be programmed to simulate the
+full power of human problem-solving.  These people would say, for example,
+that when you look at a tic-tac-toe board you immediately grasp the
+strategic situation as a whole, and your eye is drawn to the best move
+without any need to examine alternatives according to a set of rules.  (You
+might like to try to be aware of your own mental processes as you play a
+game of tic-tac-toe, to try to decide which of these points of view more
+closely resembles your own experience--but on the other hand, the
+psychological validity of such introspective evidence is <EM>another</EM>
+hotly contested issue in psychology!)
+
+<P>&raquo;Before you read further, try to write down a set of strategy rules
+that, if followed consistently, will never lose a game.  Play a few
+games using your rules.  Make sure they work even if the other player
+does something bizarre.
+
+<P>I'm going to number the squares in the tic-tac-toe
+board this way:
+
+<P>
+<TABLE rules="all" frame="void" border="2" noshade><TR><TD align="center" height=30 width=30>1<TD align="center" height=30 width=30>2<TD align="center" height=30 width=30>3<TR><TD align="center" height=30 width=30>4<TD align="center" height=30 width=30>5<TD align="center" height=30 width=30>6<TR><TD align="center" height=30 width=30>7<TD align="center" height=30 width=30>8<TD align="center" height=30 width=30>9</TABLE>
+
+<P>Squares 1, 3, 7, and 9 are <EM>corner squares</EM>.  I'll call
+2, 4, 6, and 8 <EM>edge squares</EM>.  And of course number 5 is the
+<EM>center square</EM>.  I'll use the word <EM>position</EM> to mean
+a specific partly-filled-in board with X and O in certain squares, and
+other squares empty.
+
+<P>One way you might meet my challenge of describing your strategy explicitly
+is to list all the possible sequences of moves up to a certain point
+in the game, then say what move you'd make next in each situation.
+How big would the list have to be?  There are nine possibilities for
+the first move.  For each first move, there are eight possibilities
+for the second move.  If you continue this line of reasoning, you'll
+see that there are nine factorial, or 362880, possible sequences of
+moves.  Your computer may not have enough memory to list
+them all, and you certainly don't have enough patience!
+
+<P>Fortunately, not all these sequences are interesting.  Suppose you
+are describing the rules a computer should use against a human player,
+and suppose the human being moves first.  Then there are, indeed,
+nine possible first moves.  But for each of these, there is only <EM>
+one</EM> possible computer move!  After all, we're programming the computer.
+We get to decide which move it will choose.  Then there are seven
+possible responses by the opponent, and so on.  The number of sequences
+when the human being plays first is 9 times 7 times 5 times 3, or
+945.  If the computer plays first, it will presumably always make
+the single best choice.  Then there are eight possible responses,
+and so on.  In this case the number of possible game sequences is
+8 times 6 times 4 times 2, or 384.  Altogether we have 1329 cases
+to worry about, which is much better than 300,000 but still not an
+enjoyable way to write a computer program.
+
+<P>In fact, though, this number is still too big.  Not all games go for
+a full nine moves before someone wins.  Also, many moves force the
+opponent to a single possible response, even though there are other
+vacant squares on the board.  Another reduction can be achieved by
+taking advantage of <EM>symmetry</EM>.  For example, if X starts in square
+5, any game sequence in which O responds in square 1 is equivalent
+to a sequence in which O responds in square 3, with the board rotated
+90 degrees.  In fact there are only two truly different responses
+to a center-square opening: any corner square, or any edge square.
+
+<P>With all of these factors reducing the number of distinct positions,
+it would probably be possible to list all of them and write
+a strategy program that way.  I'm not sure, though, because I didn't
+want to use that technique.  I was looking for rules expressed in
+more general terms, like &quot;all else being equal, pick a corner rather
+than an edge.&quot;
+
+<P>Why should I prefer a corner?  Each corner square is part of three
+winning combinations.  For example, square 1 is part of <CODE>123</CODE>,
+<CODE>147</CODE>, and <CODE>159</CODE>.  (By expressing these winning combinations as
+three-digit numbers, I've jumped ahead a bit in the story with a preview of how
+the program I wrote represents this information.)  An edge square,
+on the other hand, is only part of two winning combinations.  For
+example, square 2 is part of <CODE>123</CODE> and <CODE>258</CODE>.  Taking a corner
+square makes three winning combinations available to me and unavailable
+to my opponent.
+
+<P>Since I've brought up the subject of winning combinations, how many
+of <EM>them</EM> are there?  Not very many: three horizontal, three vertical,
+and two diagonal.  Eight altogether.  That <EM>is</EM> a reasonable amount
+of information to include in a program, and in fact there is a list
+of the eight winning combinations in this project.
+
+<P>You might, at this point, enjoy playing a few games with the program,
+to see if you can figure out the rules it uses in its strategy.  If
+you accepted my earlier challenge to write down your own set of strategy
+rules, you can compare mine to yours.  Are they the same?  If not,
+are they equally good?
+
+<P>The top-level procedure in this project is called <CODE>ttt</CODE>.  It takes no
+inputs.  When you invoke this procedure, it will ask you if you'd
+like to play first (X) or second (O).  Then you enter moves by typing
+a digit 1-9 for the square you select.  The program draws the game
+board on the Logo graphics screen.
+
+<P>I'm about to start explaining my strategy rules, so stop reading if
+you want to work out your own and haven't done it yet.
+
+<P><H2>Strategy</H2>
+
+<P>The highest-priority and the lowest-priority rules seemed obvious
+to me right away.  The highest-priority are these:
+
+<P>
+
+<P><TABLE><TR><TH>1.&nbsp;&nbsp;<TD>If I can win on this move, do it.
+<TR><TH>2.&nbsp;&nbsp;<TD>If the other player can win on the next move, block that winning
+square.
+</TABLE>
+
+<P>Here are the lowest-priority rules, used only if there is
+nothing suggested more strongly by the board position:
+
+<P><TABLE><TR><TH><EM>n</EM>-2.&nbsp;&nbsp;<TD>Take the center square if it's free.
+<TR><TH><EM>n</EM>-1.&nbsp;&nbsp;<TD>Take a corner square if one is free.
+<TR><TH><EM>n</EM>.&nbsp;&nbsp;<TD>Take whatever is available.
+</TABLE>
+
+<P>The highest priority rules are the ones dealing with the
+most urgent situations: either I or my opponent can win on the next
+move.  The lowest priority ones deal with the least urgent situations,
+in which there is nothing special about the moves already made to
+guide me.
+
+<P>What was harder was to find the rules in between.  I knew that the
+goal of my own tic-tac-toe strategy was to set up a <EM>fork</EM>, a
+board position in which I have two winning moves, so my opponent can
+only block one of them.  Here is an example:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+
+<P>X can win by playing in square 3 or square 4.  It's O's
+turn, but poor O can only block one of those squares at a time.  Whichever
+O picks, X will then win by picking the other one.
+
+<P>Given this concept of forking, I decided to use it as the next highest
+priority rule:
+
+<P><TABLE><TR><TH>3.&nbsp;&nbsp;<TD>If I can make a move that will set up a fork for myself, do it.
+</TABLE>
+
+<P>That was the end of the easy part.  My first attempt at
+writing the program used only these six rules.  Unfortunately, it
+lost in many different situations.  I needed to add something, but
+I had trouble finding a good rule to add.
+
+<P>My first idea was that rule 4 should be the defensive equivalent of
+rule 3, just as rule 2 is the defensive equivalent of rule 1:
+
+<P><TABLE><TR><TH>4a.&nbsp;&nbsp;<TD>If, on the next move, my opponent can set up a fork, block that
+possibility by moving into the square that is common to his two winning
+combinations.
+</TABLE>
+
+<P>In other words, apply the same search technique to the opponent's
+position that I applied to my own.
+
+<P>This strategy works well in many cases, but not all.  For example,
+here is a sequence of moves under this strategy, with the human player
+moving first:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center" valign="bottom"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30><TD align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30><TD align="center" height=30 width=30 align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30 align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30><TD align="center" height=30 width=30 align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30 align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30><TD align="center" height=30 width=30 align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30 align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>In the fourth grid, the computer (playing O) has discovered
+that X can set up a fork by moving in square 6, between the winning
+combinations <CODE>456</CODE> and <CODE>369</CODE>.  The computer moves to block this
+fork.  Unfortunately, X can also set up a fork by moving in squares
+3, 7, or 8.  The computer's move in square 6 has blocked one combination
+of the square-3 fork, but X can still set up the other two.  In the
+fifth grid, X has moved in square 8.  This sets up the winning combinations
+<CODE>258</CODE> and <CODE>789</CODE>.  The computer can only block one of these, and
+X will win on the next move.
+
+<P>Since X has so many forks available, does this mean that the game
+was already hopeless before O moved in square 6?  No.  Here is something
+O could have done:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>In this sequence, the computer's second move is in square
+7.  This move also blocks a fork, but it wasn't chosen for that reason.
+Instead, it was chosen <EM>to force X's next move</EM>.  In the fifth
+grid, X has had to move in square 4, to prevent an immediate win by
+O.  The advantage of this situation for O is that square 4 was <EM>
+not</EM> one of the ones with which X could set up a fork.  O's next move,
+in the sixth grid, is also forced.  But by then the board is too crowded
+for either player to force a win; the game ends in a tie, as usual.
+
+<P>This analysis suggests a different choice for an intermediate-level
+strategy rule, taking the offensive:
+
+<P><TABLE><TR><TH>4b.&nbsp;&nbsp;<TD>If I can make a move that will set up a winning combination
+for myself, do it.
+</TABLE>
+
+<P>Compared to my earlier try, this rule has the benefit of
+simplicity.  It's much easier for the program to look for a single
+winning combination than for a fork, which is two such combinations
+with a common square.
+
+<P>Unfortunately, this simple rule isn't quite good enough.  In the example
+just above, the computer found the winning combination <CODE>147</CODE> in
+which it already had square 1, and the other two were free.  But why
+should it choose to move in square 7 rather than square 4?  If the
+program did choose square 4, then X's move would still be forced,
+into square 7.  We would then have forced X into creating a fork,
+which would defeat the program on the next move.
+
+<P>It seems that there is no choice but to combine the ideas from rules
+4a and 4b:
+
+<P><TABLE><TR><TH>4b.&nbsp;&nbsp;<TD>If I can make a move that will set up a winning combination
+for myself, do it.  But ensure that this move does not force the opponent
+into establishing a fork.
+</TABLE>
+
+<P>What this means is that we are looking for a winning combination
+in which the computer already owns one square and the other two are empty.
+Having found such a combination, we can move in either of its empty squares.
+Whichever we choose, the opponent will be forced to choose the other one
+on the next move.  If one of the two empty squares would create a fork for
+the opponent, then the computer must choose that square and leave the other
+for the opponent.
+
+<P>What if <EM>both</EM> of the empty squares in the combination we find
+would make forks for the opponent?  In that case, we've chosen a bad
+winning combination.  It turns out that there is only one situation
+in which this can happen:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>Again, the computer is playing O.  After the third grid,
+it is looking for a possible winning combination for itself.  There
+are three possibilities: <CODE>258</CODE>, <CODE>357</CODE>, and <CODE>456</CODE>.
+So far we
+have not given the computer any reason to prefer one over another.
+But here is what happens if the program happens to choose <CODE>357</CODE>:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>By this choice, the computer has forced its opponent into
+a fork that will win the game for the opponent.
+If the computer chooses either of the other two possible winning combinations,
+the game ends in a tie.  (All moves after this choice turn out to
+be forced.)
+
+<P>This particular game sequence was very troublesome for me because
+it goes against most of the rules I had chosen earlier.  For one thing,
+the correct choice for the program is any edge square, while the corner
+squares must be avoided.  This is the opposite of the usual priority.
+
+<P>Another point is that this situation contradicts rule 4a (prevent
+forks for the other player) even more sharply than the example we
+considered earlier.  In that example, rule 4a wasn't enough
+guidance to ensure a correct choice, but the correct choice was at
+least <EM>consistent</EM> with the rule.  That is, just blocking a fork
+isn't enough, but threatening a win and <EM>also</EM> blocking a fork
+is better than just threatening a win alone.  This is the meaning
+of rule 4.  But in this new situation, the corner square (the move
+we have to avoid) <EM>does</EM> block a fork, while the edge square (the
+correct move) <EM>doesn't</EM> block a fork!
+
+<P>When I discovered this anomalous case, I was ready to give up on the
+idea of beautiful, general rules.  I almost decided to build into
+the program a special check for this precise board configuration.
+That would have been pretty ugly, I think.  But a shift in viewpoint
+makes this case easier to understand:  What the program must do is
+force the other player's move, and force it in a way that helps the
+computer win.  If one possible winning combination doesn't allow us to
+meet these conditions, the program should try another combination.
+My mistake was to think either about forcing alone (rule 4b) or about
+the opponent's forks alone (rule 4a).
+
+<P>As it turns out, the board situation we've been considering is the only
+one in which a possible winning combination could include two possible
+forks for the opponent.  What's more, in this board situation, it's a
+diagonal combination that gets us in trouble, while a horizontal or
+vertical combination is always okay.  Therefore, I was able to implement
+rule 4 in a way that only considers one possible winning combination by
+setting up the program's data structures so that diagonal combinations
+are the last to be chosen.  This trick makes the program's design less
+than obvious from reading the actual program, but it does save the program
+some effort.
+
+<P><H2>Program Structure and Modularity</H2>
+
+
+<P>Most game programs--in fact, most interactive programs of any
+kind--consist of an initialization section followed by a sequence
+of steps carried out repeatedly.  In the case of the tic-tac-toe game,
+the overall program structure will be something like this:
+
+<P><PRE>to ttt
+initialize
+forever [
+   if <EM>game.is.over</EM> [stop]
+   <EM>record.human.move get.human.move</EM>
+   if <EM>game.is.over</EM> [stop]
+   <EM>record.program.move compute.program.move</EM>
+]
+end
+</PRE>
+
+<P>The parts of this structure shown in <CODE><EM>italics</EM></CODE> are
+just vague ideas.  At this point in the planning, I don't know what inputs
+these procedures might need, for example.  In fact, there may not be
+procedures exactly like this in the final program.  One example is that
+the test that I've called <CODE><EM>game.is.over</EM></CODE> here will actually
+turn out to be two separate tests <CODE>already.wonp</CODE> and <CODE>tiedp</CODE> (using
+a final letter <CODE>p</CODE> to indicate a predicate, following the convention
+established by the Logo primitive predicates).
+
+<P>This half-written procedure introduces a Logo primitive we haven't used
+before: <CODE>forever</CODE>.  It takes a list of Logo instructions as its
+input, and carries out those instructions repeatedly, much as <CODE>repeat</CODE>,
+<CODE>for</CODE>, and <CODE>foreach</CODE> do.  But the number of repetitions is unlimited;
+the repetition stops only if, as in this example, the primitive <CODE>stop</CODE> or
+<CODE>output</CODE> is invoked within the repeated instructions.   <CODE>Forever</CODE> is
+useful when the ending condition can't be predicted in advance, as in a game
+situation in which a player might win at any time.
+
+<P>It may not be obvious why I've planned for one procedure to figure out the
+next move and a separate procedure to record it.  (There are two such pairs
+of procedures, one for the program's moves and the other for the human
+opponent's moves.)  For one thing, I expect that the recording of moves
+will be much the same whether it's the program or the person moving, while
+the decision about where to move will be quite different in the two cases.
+For the program's move we must apply strategy rules; for the human player's
+moves we simply ask the player.  Also, I anticipate that the selection of
+the program's moves, which will be the hardest part of the program, can be
+written in functional style.  The strategy procedure is a function that takes
+the current board position as its input, always returning the same chosen
+square for any given input position.
+
+<P>This project contains 28 procedures.  These procedures can be divided into
+related groups like this:
+
+<P><TABLE>
+<TR><TD>7<TD>overall orchestration
+<TR><TD>6<TD>initialization
+<TR><TD>2<TD>get opponent's moves
+<TR><TD>9<TD>compute program's moves
+<TR><TD>4<TD>draw moves on screen
+</TABLE>
+
+<P>As you might expect, figuring out the computer's strategy
+is the most complex part of the program's job.  But this strategic
+task is still only about a third of the complete program.
+
+<P>The five groups are quite cleanly distinguishable in this project.  There are
+relatively few procedure invocations between groups, compared to the number
+within a group.  It's easy to read the procedures within a group and
+understand how they work without having to think about other parts of the
+program at the same time.
+
+<P>
+The following diagram shows the subprocedure/superprocedure relationships
+within the program, and indicates which procedures are in each of the five
+groups listed above.  Some people find diagrams like this one very helpful in
+understanding the structure of a program.  Other people don't like these
+diagrams at all.  If you find it helpful, you may want to draw such diagrams
+for your own projects.
+
+<P>
+
+<CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch6/tttflow.gif" ALT="figure: tttflow"></CENTER>
+
+
+
+<P>In the diagram, I've circled the names of seven procedures.  If you
+understand the purpose of each of these, then you will understand
+the general structure of the entire program.  (Don't turn to the end and
+read the actual procedures just now.  Instead, see if
+you can understand the following paragraphs just from the diagram.)
+
+<P><CODE>Ttt</CODE> is the top-level procedure for which I gave a rough outline
+earlier.  It calls initialization procedures (<CODE>draw.board</CODE> and <CODE>
+init</CODE>) to set up the game, then repeatedly alternates between the human
+opponent's moves and the program's moves.  It calls <CODE>getmove</CODE> to find
+out the next move by the opponent, <CODE>youplay</CODE> to record that move,
+then <CODE>pickmove</CODE> to compute the program's next move and <CODE>meplay</CODE>
+to record it.
+
+<P><CODE>Make.triples</CODE> translates from one representation of the board
+position to another.  The representation used within <CODE>ttt</CODE> is best
+suited for display and for user interaction, while the representation
+output by <CODE>make.triples</CODE> is best for computing the program's strategy.
+We'll look into data representation more closely later.
+
+<P><CODE>Getmove</CODE> invites the opponent to type in a move.  It ensures that
+the selected move is legal before accepting it.  The output from <CODE>
+getmove</CODE> is a number from 1 to 9 representing the chosen square.
+
+<P><CODE>Pickmove</CODE> figures out the program's next move.  It is the &quot;smartest&quot;
+procedure in the program, embodying the strategy rules I listed earlier.
+It, too, outputs a number from 1 to 9.
+
+<P><CODE>Youplay</CODE> and <CODE>meplay</CODE> are simple procedures that actually carry out
+the moves chosen by the human player and by the program, respectively.
+Each contains only two instructions.  The first invokes <CODE>draw</CODE> to draw
+the move on the screen.  The second modifies the <CODE>position</CODE> array
+to remember that the move has been made.
+
+<P><CODE>Draw</CODE> moves the turtle to the chosen square on the tic-tac-toe board.
+Then it draws either an X or an O.  (We haven't really talked about Logo's
+turtle graphics yet.  If you're not familiar with turtle graphics from
+earlier Logo experience, you can just take this part of the program on faith;
+there's nothing very interesting about it.)
+
+<P>Notice, in the diagram, that the lines representing procedure calls
+come into a box only at the top.  This is one sign of a well-organized
+program:  The dashed boxes in the diagram truly do represent distinct
+parts of the program that don't interact very much.
+
+<P><H2>Data Representation</H2>
+
+<P>I've written several tic-tac-toe programs, in different programming
+languages.  This experience has really taught me about the importance of
+picking a good data representation.  For my first tic-tac-toe
+program, several years ago, I decided without much prior thought that a
+board position should be represented as three lists of numbers, one with X's
+squares, one with O's squares, and one with the free squares.  So this board
+position
+
+<P><PRE>
+<TABLE rules="all" frame="void" border="2">
+<TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+</PRE>
+
+<P>could be represented like this:
+
+<P><PRE>make &quot;xsquares [1 4 5]
+make &quot;osquares [2 9]
+make &quot;free [3 6 7 8]
+</PRE>
+
+<P>These three variables would change in value as squares moved
+from <CODE>:free</CODE> to one of the others.  This representation was easy
+to understand, but not very helpful for writing the program!
+
+<P>What questions does a tic-tac-toe program have to answer about the board
+position?  If, for example, the program wants to print a display of the
+position, it must answer questions of the form &quot;Who's in square 4?&quot;
+With the representation shown here, that's not as easy a question as we
+might wish:
+
+<P><PRE>to occupant :square                          ;; old program
+if memberp :square :xsquares [output &quot;x]
+if memberp :square :osquares [output &quot;o]
+output &quot;free
+end
+</PRE>
+
+<P>
+<P>On the other hand, this representation isn't so bad when we're
+accepting a move from the human player and want to make sure it's a legal
+move:
+
+<P><PRE>to freep :square                             ;; old program
+output memberp :square :free
+end
+</PRE>
+
+<P>Along with this representation of the board, my first program used
+a constant list of winning combinations:
+
+<P><PRE>make &quot;wins [[1 2 3] [4 5 6] [7 8 9] [1 4 7] [2 5 8]
+            [3 6 9] [1 5 9] [3 5 7]]
+</PRE>
+
+<P>It also had a list of all possible forks.  I won't bother
+trying to reproduce this very long list for you, since it's not used
+in the current program, but the fork set up by X in the
+board position just above was represented this way:
+
+<P><PRE>[4 [1 7] [5 6]]
+</PRE>
+
+<P>This indicates that square 4 is the pivot of a fork between
+the winning combinations <CODE>[1 4 7]</CODE> and <CODE>[4 5 6]</CODE>.  Each member of the
+complete list of forks was a list like this sample.  The list of forks
+was fairly long.  Each edge square is the pivot of a fork.  Each corner
+square is the pivot of three forks.  The center square is the pivot
+of six forks.  This adds up to 22 forks altogether.
+
+<P>Each time the program wanted to choose a move, it would first check
+all eight possible winning combinations to see if two of the squares
+were occupied by the program and the third one free.  Since any of
+the three squares might be the free one, this is a fairly tricky program
+in itself:
+
+<P><PRE>to checkwin :candidate :mysquares :free      ;; old program
+if memberp first :candidate :free ~
+   [output check1 butfirst :candidate :mysquares]
+if memberp last :candidate :free ~
+   [output check1 butlast :candidate :mysquares]
+if memberp first butfirst :candidate :free ~
+   [output check1 list first :candidate last :candidate :mysquares]
+output &quot;false
+end
+
+to check1 :sublist :mysquares                ;; old program
+output and (memberp first :sublist :mysquares) ~
+           (memberp last :sublist :mysquares)
+end
+</PRE>
+
+<P>This procedure was fairly slow, especially when invoked
+eight times, once for each possible win.  But the procedure to check
+each of the possible forks was even worse!
+
+<P>In the program that I wrote for the first edition of <EM>Computer Science
+Logo Style,</EM> a very different approach is used.  This approach is based on
+the realization that, at any moment, a particular winning combination may be
+free for anyone (all three squares free), available only to one player, or
+not available to anyone.  It's silly for the program to go on checking a
+combination that can't possibly be available.  Instead of a single list of
+wins, the new program has three lists:
+
+<P>
+<TABLE>
+<TR><TD><CODE>mywins</CODE><TD width=30><TD>wins available to the computer
+<TR><TD><CODE>yourwins</CODE><TD width=30><TD>wins available to the opponent
+<TR><TD><CODE>freewins</CODE><TD width=30><TD>wins available to anyone
+</TABLE>
+
+<P>Once I decided to organize the winning combinations in this form,
+another advantage became apparent: for each possible winning combination,
+the program need only remember the squares that are free, not the
+ones that are occupied.  For example, the board position shown above
+would contain these winning combinations, supposing the computer is
+playing X:
+
+<P><PRE>make &quot;mywins [[7] [6] [3 7]]
+make &quot;yourwins [[3 6] [7 8]]
+make &quot;freewins []
+</PRE>
+
+<P>The sublist <CODE>[7]</CODE> of <CODE>:mywins</CODE> indicates that the computer can
+win simply by filling square 7.  This list represents the winning
+combination that was originally represented as <CODE>[1 4 7]</CODE>, but since
+the computer already occupies squares 1 and 4 there is no need to
+remember those numbers.
+
+<P>The process of checking for an immediate win is streamlined with this
+representation for two reasons, compared with the <CODE>checkwin</CODE> procedure
+above.  First, only those combinations in <CODE>:mywins</CODE> must
+be checked, instead of all eight every time.  Second, an immediate
+win can be recognized very simply, because it is just a list with
+one member, like <CODE>[7]</CODE> and <CODE>[6]</CODE> in the example above.  The procedure
+<CODE>single</CODE> looks for such a list:
+
+<P><PRE>to single :list                              ;; old program
+output find [equalp (count ?) 1] :list
+end
+</PRE>
+
+<P>The input to <CODE>single</CODE> is either <CODE>:mywins</CODE>, to find a winning
+move for the computer (rule 1), or <CODE>:yourwins</CODE>, to find and block a
+winning move for the opponent (rule 2).
+
+<P>Although this representation streamlines the strategy computation (the
+<CODE>pickmove</CODE> part of the program), it makes the recording of a move
+quite difficult, because combinations must be moved from one list to
+another.  That part of the program was quite intricate and hard to
+understand.
+
+<P><H2>Arrays</H2>
+
+<P>This new program uses <EM>two</EM> representations, one for the interactive
+part of the program and one for the strategy computation.  The first of these
+is simply a collection of nine words, one per square, each of which is the
+letter X, the letter O, or the number of the square.  With this
+representation, recording a move means changing one of the nine words.
+It would be possible to keep the nine words in a list, and compute a new
+list (only slightly different) after each move.  But Logo provides another
+data type, the <EM>array,</EM> which allows for changing one member
+while keeping the rest unchanged.
+
+<P>If arrays allow for easy modification and lists don't, why not always use
+arrays?  Why did I begin the book with lists?  The answer is that each
+data type has advantages and disadvantages.  The main disadvantage of an
+array is that you must decide in advance how big it will be; there aren't
+any constructors like <CODE>sentence</CODE> to lengthen an array.
+
+<P>In this case, the fixed length of an array is no problem, because a
+tic-tac-toe board has nine squares.  The <CODE>init</CODE> procedure creates
+the position array with the instruction
+
+<P><PRE>make &quot;position {1 2 3 4 5 6 7 8 9}
+</PRE>
+
+<P>The braces <CODE>{}
+</CODE> indicate an array in the same
+way that brackets indicate a list.
+
+<P>If player X moves in square 7, we can record that information
+by saying
+
+<P><PRE><CODE>setitem</CODE> 7 :position &quot;x
+</PRE>
+
+<P>(Of course, the actual instruction in procedures <CODE>meplay</CODE> and
+<CODE>youplay</CODE> uses variables instead of the specific values 7 and X.)
+<CODE>Setitem</CODE> is a command with three inputs: a number indicating which
+member of the array to change, the array itself, and the new value for
+the specified member.
+
+<P>To find out who owns a particular square, we could write this procedure:
+
+<P><PRE>to occupant :square
+output <CODE>item</CODE> :square :position
+end
+</PRE>
+
+<P>(The <CODE>item</CODE> operation can select a member of an array just as
+it can select a member of a list or of a word.)  In fact, though, it turns
+out that I don't have an <CODE>occupant</CODE> procedure in this program.  But the
+parts of the program that examine the board position do use <CODE>item</CODE> in a
+similar way, as in this example:
+
+<P><PRE>to freep :square
+output numberp item :square :position
+end
+</PRE>
+
+<P>To create an array without explicitly listing all of its members, use the
+operation <CODE>array</CODE>.  It takes a number as argument, indicating how many
+members the array should have.  It returns an array of the chosen size, in
+which each member is the empty list.  Your program can then use <CODE>setitem</CODE>
+to assign different values to the members.
+
+<P>The only primitive operation to select a member of an array is <CODE>item</CODE>.
+Word-and-list operations such as <CODE>butfirst</CODE> can't be used with arrays.
+There are operations <CODE>arraytolist</CODE> and <CODE>listtoarray</CODE> to convert
+a collection of information from one data type to the other.
+
+<P><H2>Triples</H2>
+
+<P>The position array works well as a long-term representation for the board
+position, because it's easy to update; it also works well for interaction
+with the human player, because it's easy to find out the status of a
+particular square.  But for computing the program's moves, we need a
+representation that makes it easy to ask questions such as &quot;Is there a
+winning combination for my opponent on the next move?&quot;  That's why, in
+the first edition of these books, I used the representation with three
+lists of possible winning combinations.
+
+<P>When MatthewWright and I wrote the book <EM>Simply Scheme,</EM> we
+decided that the general idea of combinations was a good one, but the three
+lists made the program more complicated than necessary.  Since there are
+only eight possible winning combinations in the first place, it's not so
+slow to keep one list of all of them, and use that list as the basis for
+all the questions we ask in working out the program's strategy.  If the
+current board position is
+
+<P><PRE>
+<TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+</PRE>
+
+<P>we represent the three horizontal winning combinations with
+the words <CODE>xo3</CODE>, <CODE>xx6</CODE>, and <CODE>78o</CODE>.  Each combination is
+represented as a three-&quot;letter&quot; word containing an <CODE>x</CODE> or an <CODE>o</CODE>
+for an occupied square, or the square's number for a free square.  By
+using words instead of lists for the combinations, we make the entire
+set of combinations more compact and easier to read.  Each of these words
+is called a <EM>triple.</EM>  The job of procedure <CODE>make.triples</CODE> is
+to combine the information in the position array with a list of the eight
+winning combinations:
+
+<P><PRE>? <U>show make.triples</U>
+[xo3 xx6 78o xx7 ox8 36o xxo 3x7]
+</PRE>
+
+<P><CODE>Make.triples</CODE> takes no inputs because the list of possible
+winning combinations is built into it, and the position array is in <CODE>
+ttt</CODE>'s local variable <CODE>position</CODE>:
+
+<P><PRE>to make.triples
+output map &quot;substitute.triple [123 456 789 147 258 369 159 357]
+end
+
+to substitute.triple :combination
+output map [item ? :position] :combination
+end
+</PRE>
+
+<P>This short subprogram will repay careful attention.  It uses
+<CODE>map</CODE> twice, once in <CODE>make.triples</CODE> to compute a function of
+each possible winning combination, and once in <CODE>substitute.triple</CODE> to
+compute a function of each square in a given combination.  (That latter
+function is the one that looks up the square in the array <CODE>:position</CODE>.)
+
+<P>Once the program can make the list of triples, we can use that to answer
+many questions about the status of the game.  For example, in the top-level
+<CODE>ttt</CODE> procedure we must check on each move whether or not a certain
+player has already won the game.  Here's how:
+
+<P><PRE>to already.wonp :player
+output memberp (word :player :player :player) (make.triples)
+end
+</PRE>
+
+<P>If we had only the <CODE>position</CODE> array to work with, it would be
+complicated to check all the possible winning combinations.  But once we've
+made the list of triples, we can just ask whether the word <CODE>xxx</CODE> or the
+word <CODE>ooo</CODE> appears in that list.
+
+<P>Here is the actual top-level procedure definition:
+
+<P><PRE>to ttt
+local [me you position]
+draw.board
+init
+if equalp :me &quot;x [meplay 5]
+forever [
+  if already.wonp :me [print [I win!] stop]
+  if tiedp [print [Tie game!] stop]
+  youplay getmove                         ;; ask person for move
+  if already.wonp :you [print [You win!] stop]
+  if tiedp [print [Tie game!] stop]
+  meplay pickmove make.triples            ;; compute program's move
+]
+end
+</PRE>
+
+<P>Notice that <CODE>position</CODE> is declared as a local variable.
+Because of Logo's dynamic scope, all of the subprocedures in this project
+can use <CODE>position</CODE> as if it were a global variable, but Logo will
+&quot;clean up&quot; after the game is over.
+
+<P>Two more such quasi-global variables are used to remember whether the
+computer or the human opponent plays first.  The value of <CODE>me</CODE> will be
+either the word <CODE>x</CODE> or the word <CODE>o</CODE>, whichever letter the program
+itself is playing.  Similarly, the value of <CODE>you</CODE> will be <CODE>x</CODE> or
+<CODE>o</CODE> to indicate the letter used by the opponent.  All of these variables
+are given their values by the initialization procedure <CODE>init</CODE>.
+
+<P>This information could have been kept in the form of a single
+<EM>flag variable,</EM> called something like <CODE>mefirst</CODE>, that would
+contain the word <CODE>true</CODE> if the computer is X, or <CODE>false</CODE> if the
+computer is O.  (A flag variable is one whose value is always <CODE>
+true</CODE> or <CODE>false</CODE>, just as a predicate is a procedure whose output is
+<CODE>true</CODE> or <CODE>false</CODE>.)  It would be used something like this:
+
+<P><PRE>if :mefirst [draw &quot;x :square] [draw &quot;o :square]
+</PRE>
+
+<P>But it turned out to be simpler to use two variables and
+just say
+
+<P><PRE>draw :me :square
+</PRE>
+
+<P>
+<P>One detail in the final program that wasn't in my first rough draft is the
+instruction
+
+<P><PRE>if equalp :me &quot;x [meplay 5]
+</PRE>
+
+<P>just before the <CODE>forever</CODE> loop.  It was easier to write the
+loop so that it always gets the human opponent's move first, and then
+computes a move for the program, rather than having two different loops
+depending on which player goes first.  If the program moves first, its
+strategy rules would tell it to choose the center square, because there is
+nothing better to do when the board is empty.  By checking for that case
+before the loop, we are ready to begin the loop with the opponent as the
+next to move.
+
+<P><H2>Variables in the Workspace</H2>
+
+
+<P>There are nine global variables that are part
+of the workspace, entered directly with top-level <CODE>make</CODE> instructions
+rather than set up by <CODE>init</CODE>, because their
+values are never changed. Their names are <CODE>box1</CODE> through <CODE>
+box9</CODE>, and their values are the coordinates on the graphics screen of
+the center of each square.  For example, <CODE>:box1</CODE> is <CODE>
+[-40 50]</CODE>.  These variables are used by <CODE>move</CODE>, a subprocedure of
+<CODE>draw</CODE>, to know where to position the turtle before drawing an X
+or an O.
+
+<P>The use of variables loaded with a workspace file, rather than given values
+by an initialization procedure, is a practice that Logo encourages in some
+ways and discourages in others.  Loading variables in a workspace file makes
+the program start up faster, because it decreases the amount of
+initialization required.  On the other hand, variables are sort of
+second-class citizens in workspace files.  In many versions of Logo the <CODE>
+load</CODE> command lists the names of the procedures in the workspace file, but
+not the names of the variables.  Similarly, <CODE>save</CODE> often reports the
+number of procedures saved, but not the number of variables.  It's easy to
+create global variables and forget that they're there.
+
+<P>Certainly preloading variables makes sense only if the variables are really
+constants; in other words, a variable whose value may change during the
+running of a program should be initialized explicitly when the program
+starts.  Otherwise, the program will probably give incorrect results if you
+run it a second time.  (One of the good ideas in the programming language
+Pascal is that there is a sort of thing in the language called a <EM>
+constant</EM>; it has a name and a value, like a variable, but you can't give
+it a new value in mid-program.  In Logo, you use a global variable to hold a
+constant, and simply refrain from changing its value.  But being able to
+<EM>say</EM> that something is a constant makes the program easier to
+understand.)
+
+<P>One reason the use of preloaded variables is sometimes questioned as a point
+of style is that when people are sloppy in their use of global variables,
+it's hard to know which are really meant to be preloaded and which are just
+left over from running the program.  That is, if you write a program, test
+it by running it, and then save it on a diskette, any global variables that
+were created during the program execution will still be in the workspace
+when you load that diskette file later.  If there are five
+intentionally-loaded variables along with 20 leftovers, it's particularly
+hard for someone to understand which are which.  This is one more reason not
+to use global variables when what you really want are variables local to the
+top-level procedure.
+
+<P><H2>The User Interface</H2>
+
+<P>The only part of the program that really interacts with the human user is
+<CODE>getmove</CODE>, the procedure that asks the user where to move.
+
+<P><PRE>to getmove
+local &quot;square
+forever [
+  type [Your move:]
+  make &quot;square readchar
+  print :square
+  if numberp :square
+     [if and (:square &gt; 0) (:square &lt; 10)
+         [if freep :square [output :square]]]
+  print [not a valid move.]
+]
+end
+</PRE>
+
+<P>There are two noteworthy things about this part of the program.  One is that
+I've chosen to use <CODE>readchar</CODE> to read what the player types.  This
+primitive operation, with no inputs, waits for the user to type any single
+character on the keyboard, and outputs whatever character the user types.
+This &quot;character at a time&quot; interaction is in contrast with the more usual
+&quot;line at a time&quot; typing, in which you can type characters, erase some if
+you make a mistake, and finally use the RETURN or ENTER key to indicate that
+the entire line you've typed should be made available to your program.
+(In Chapter 1 you met Logo's <CODE>readlist</CODE> primitive for line at a
+time typing.)  Notice that if tic-tac-toe had ten or more squares in its
+board I wouldn't have been able to make this choice, because the program
+would have to allow the entry of two-digit numbers.
+
+<P><CODE>Readchar</CODE> was meant for fast-action programs such as video games.
+It therefore does not display (or <EM>echo</EM>) the character that you type
+on the computer screen.  That's why <CODE>getmove</CODE> includes a <CODE>print</CODE>
+instruction to let the user see what she or he has typed!
+
+<P>The second point to note in <CODE>getmove</CODE> is how careful it is to allow for
+the possibility of a user error.  Ordinarily, when one procedure uses a
+value that was computed by another procedure, the programmer can assume that
+the value is a legitimate one for the intended purpose.  For example, when
+you invoke a procedure that computes a number, you assume that you can add
+the output to another number; you don't first use the <CODE>number?</CODE> 
+predicate to double-check that the result was indeed a number.  But in
+<CODE>getmove</CODE> we are dealing with a value that was typed by a human being,
+and human beings are notoriously error-prone!  The user is <EM>supposed</EM>
+to type a number between 1 and 9.  But perhaps someone's finger might slip
+and type a zero instead of a nine, or even some character that isn't a
+number at all.  Therefore, <CODE>getmove</CODE> first checks that what the user
+typed is a number.  If so, it then checks that the number is in the allowed
+range.  (We'd get a Logo error message if <CODE>getmove</CODE> used the <CODE>
+&lt;</CODE> operation with a non-numeric input.)  Only if these conditions are met
+do we use the user's number as the square-selecting input to <CODE>freep</CODE>.
+
+<P><H2>Implementing the Strategy Rules</H2>
+
+<P>To determine the program's next move, <CODE>ttt</CODE> invokes <CODE>pickmove</CODE>;
+since many of the strategy rules will involve an examination of possible
+winning combinations, <CODE>pickmove</CODE> is given the output from <CODE>
+make.triples</CODE> as its input.
+
+<P>The strategy I worked out for the program consists of several rules, in
+order of importance.  So the structure of <CODE>pickmove</CODE> should be something
+like this:
+
+<P><PRE>to pickmove :triples
+if first.rule.works [output first.rule's.square]
+if second.rule.works [output second.rule's.square]
+...
+end
+</PRE>
+
+<P>This structure would work, but it would be very inefficient,
+because the procedure to determine whether a rule is applicable does
+essentially the same work as the procedure to choose a square by following
+the rule.  For example, here's a procedure to decide whether or not the
+program can win on this move:
+
+<P><PRE>to can.i.win.now
+output not emptyp find &quot;win.nowp :triples
+end
+
+to win.nowp :triple
+output equalp (filter [not numberp ?] :triple) (word :me :me)
+end
+</PRE>
+
+<P>The subprocedure <CODE>win.nowp</CODE> decides whether or not a
+particular triple is winnable on this move, by looking for a triple
+containing one number and two letters equal to whichever of X or O
+the program is playing.  For example, <CODE>3xx</CODE> is a winnable triple
+if the program is playing X.
+
+<P>The procedure to pick a move if there is a winnable triple also must
+apply <CODE>win.nowp</CODE> to the triples:
+
+<P><PRE>to find.winning.square
+output filter &quot;numberp find &quot;win.nowp :triples
+end
+</PRE>
+
+<P>If there is a winnable triple <CODE>3xx</CODE>, then the program
+should move in square 3.  We find that out by looking for the number
+within the first winnable triple we can find.
+
+<P>It seems inelegant to find a winnable triple just to see if there are
+any, then find the same triple again to extract a number from it.
+Instead, we take advantage of the fact that the procedure I've called
+<CODE>find.winning.square</CODE> will return a distinguishable value--namely,
+an empty list--if there is no winnable triple.  We say
+
+<P><PRE>to pickmove :triples
+local &quot;try
+make &quot;try find.winning.square
+if not emptyp :try [output :try]
+...
+end
+</PRE>
+
+<P>In fact, instead of the procedure <CODE>find.winning.square</CODE> the
+actual program uses a similar <CODE>find.win</CODE> procedure that takes the
+letter X or O as an input; this allows the same procedure to check both
+rule 1 (can the computer win on this move) and rule 2 (can the opponent
+win on the following move).
+
+<P><CODE>Pickmove</CODE> checks each of the strategy rules with a similar pair of
+instructions:
+
+<P><PRE>make &quot;try something
+if not emptyp :try [output :try]
+</PRE>
+
+<P>Here is the complete procedure:
+
+<P><PRE>to pickmove :triples
+local &quot;try
+make &quot;try find.win :me                 ; rule 1: can computer win?
+if not emptyp :try [output :try]
+make &quot;try find.win :you                ; rule 2: can opponent win?
+if not emptyp :try [output :try]
+make &quot;try find.fork                    ; rule 3: can computer fork?
+if not emptyp :try [output :try]
+make &quot;try find.advance                 ; rule 4: can computer force?
+if not emptyp :try [output :try]
+output find [memberp ? :position] [5 1 3 7 9 2 4 6 8]   ; rules 5-7
+end
+</PRE>
+
+<P>The procedures that check for each rule have a common flavor:  They all
+use <CODE>filter</CODE> and <CODE>find</CODE> to select interesting triples and then
+to select an available square from the chosen triple.  I won't go through
+them in complete detail, but there's one that uses a Logo feature I haven't
+described before.  Here is <CODE>find.fork</CODE>:
+
+<P><PRE>to find.fork
+local &quot;singles
+make &quot;singles singles :me                    ; find triples like 14x, x23
+if emptyp :singles [output []]
+output repeated.number reduce &quot;word :singles ; find square in two triples
+end
+</PRE>
+
+<P>Suppose the computer is playing X and the board looks like this:
+
+<P><PRE>
+<TABLE rules="all" frame="void" border="2">
+<TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+</PRE>
+
+<P><CODE>Find.fork</CODE> calls <CODE>singles</CODE> (a straightforward procedure
+that you can read in the complete listing at the end of this chapter) to
+find all the triples containing one X and two vacant squares.  It outputs
+
+<P><PRE>[4x6 x47 3x7]
+</PRE>
+
+<P>indicating that the middle row, the left column, and one of the
+diagonals meet these conditions.  To find a fork, we must find a vacant
+square that is included in two of these triples.  The expression
+
+<P><PRE>reduce &quot;word :singles
+</PRE>
+
+<P>strings these triples together into the word <CODE>
+4x6x473x7</CODE>.  The job of <CODE>repeated.number</CODE> is to find a digit that
+occurs more than once in this word.  Here is the procedure:
+
+<P><PRE>to repeated.number :squares
+output find [memberp ? ?rest] filter &quot;numberp :squares
+end
+</PRE>
+
+<P>The expression
+
+<P><PRE>filter &quot;numberp :squares
+</PRE>
+
+<P>gives us the word <CODE>464737</CODE>, which is the input word with
+the letters removed.  We use <CODE>find</CODE> to find a repeated digit in
+this number.  The new feature is the use of <CODE>?rest</CODE> in the predicate template
+
+<P><PRE>[memberp ? ?rest]
+</PRE>
+
+<P><CODE>?rest</CODE> represents the part of the input to <CODE>find</CODE> (or any
+of the other higher-order functions that understand templates) to the right
+of the value being used as <CODE>?</CODE>.  So in this example, <CODE>find</CODE> first
+computes the value of the expression
+
+<P><PRE>memberp 4 64737
+</PRE>
+
+<P>This happens to be <CODE>true</CODE>, so <CODE>find</CODE> returns the value 4
+without looking at the remaining digits.  But if necessary, <CODE>find</CODE> would
+have gone on to compute
+
+<P><PRE>memberp 6 4737
+memberp 4 737
+memberp 7 37
+memberp 3 7
+memberp 7 "
+</PRE>
+
+<P>(using the empty word as <CODE>?rest</CODE> in the last line) until one
+of these turned out to be true.
+
+<P><H2>Further Explorations</H2>
+
+<P>The obvious first place to look for improvements to this project is
+in the strategy.
+
+<P>At the beginning of the discussion about strategy, I suggested that
+one possibility would be to make a complete list of all possible move
+sequences, with explicit next-move choices recorded for each.  How
+many such sequences are there?  If you write the program in a way
+that considers rotations of the board as equivalent, perhaps not
+very many.  For example, if the computer moves first (in the center,
+of course) there are really only two responses the opponent can make:
+a corner or an edge.  Any corner is equivalent to any other.  From
+that point on, the entire sequence of the game can be forced by the
+computer, to a tie if the opponent played a corner, or to a win if
+the opponent played an edge.  If the opponent moves first, there are
+three cases, center, corner, or edge.  And so on.
+
+<P>An intermediate possibility between the complete list of cases and
+the more general rules I used would be to keep a complete list of
+cases for, say, the first two moves.  After that, general rules could
+be used for the &quot;endgame.&quot;  This is rather like the way people,
+and some computer programs, play chess: they have the openings memorized,
+and don't really have to start thinking until several moves have passed.
+This book-opening approach is particularly appealing to me because
+it would solve the problem of the anomalous sequence that made such
+trouble for me in rule 4.
+
+<P>A completely different approach would be to have no rules at all,
+but instead to write a <EM>learning</EM> program.  The program might
+recognize an immediate win (rule 1) and the threat of an immediate
+loss (rule 2), but otherwise it would move randomly and record the
+results.  If the computer loses a game, it would remember the last
+unforced choice it made in that game, and keep a record to try something
+else in the same situation next time.  The result, after many games,
+would be a complete list of all possible sequences, as I suggested
+first, but the difference is that you wouldn't have to do the figuring
+out of each sequence.  Such learning programs are frequently used
+in the field of artificial intelligence.
+
+<P>It is possible to combine different approaches.  A famous checkers-playing
+program written by Arthur Samuel had several general rules programmed
+in, like the ones in this tic-tac-toe program.  But instead of having
+the rules arranged in a particular priority sequence, the program
+was able to learn how much weight to give each rule, by seeing which
+rules tended to win the game and which tended to lose.
+
+<P>If you're tired of tic-tac-toe, another possibility would be to write
+a program that plays some other game according to a strategy.  Don't
+start with checkers or chess!  Many people have written programs in
+which the computer acts as dealer for a game of Blackjack; you could
+reverse the roles so that you deal the cards, and the computer tries
+to bet with a winning strategy.  Another source of ideas is Martin
+Gardner, author of many books of mathematical games.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch5/v1ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch7/v1ch7.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<PRE>
+;; Overall orchestration
+
+to ttt
+local [me you position]
+draw.board
+init
+if equalp :me "x [meplay 5]
+forever [
+  if already.wonp :me [print [I win!] stop]
+  if tiedp [print [Tie game!] stop]
+  youplay getmove                         ;; ask person for move
+  if already.wonp :you [print [You win!] stop]
+  if tiedp [print [Tie game!] stop]
+  meplay pickmove make.triples            ;; compute program's move
+]
+end
+
+to make.triples
+output map "substitute.triple [123 456 789 147 258 369 159 357]
+end
+
+to substitute.triple :combination
+output map [item ? :position] :combination
+end
+
+to already.wonp :player
+output memberp (word :player :player :player) (make.triples)
+end
+
+to tiedp
+output not reduce "or map.se "numberp arraytolist :position
+end
+
+to youplay :square
+draw :you :square
+setitem :square :position :you
+end
+
+to meplay :square
+draw :me :square
+setitem :square :position :me
+end
+
+;; Initialization
+
+to draw.board
+splitscreen clearscreen hideturtle
+drawline [-20 -50] 0 120
+drawline [20 -50] 0 120
+drawline [-60 -10] 90 120
+drawline [-60 30] 90 120
+end
+
+to drawline :pos :head :len
+penup
+setpos :pos
+setheading :head
+pendown
+forward :len
+end
+
+to init
+make "position {1 2 3 4 5 6 7 8 9}
+print [Do you want to play first (X)]
+type [or second (O)? Type X or O:]
+choose
+print [For each move, type a digit 1-9.]
+end
+
+to choose
+local "side
+forever [
+  make "side readchar
+  pr :side
+  if equalp :side "x [choosex stop]
+  if equalp :side "o [chooseo stop]
+  type [Huh? Type X or O:]
+]
+end
+
+to chooseo
+make "me "x
+make "you "o
+end
+
+to choosex
+make "me "o
+make "you "x
+end
+
+;; Get opponent's moves
+
+to getmove
+local "square
+forever [
+  type [Your move:]
+  make "square readchar
+  print :square
+  if numberp :square ~
+     [if and (:square > 0) (:square < 10)
+         [if freep :square [output :square]]]
+  print [not a valid move.]
+]
+end
+
+to freep :square
+output numberp item :square :position
+end
+
+;; Compute program's moves
+
+to pickmove :triples
+local "try
+make "try find.win :me
+if not emptyp :try [output :try]
+make "try find.win :you
+if not emptyp :try [output :try]
+make "try find.fork
+if not emptyp :try [output :try]
+make "try find.advance
+if not emptyp :try [output :try]
+output find [memberp ? :position] [5 1 3 7 9 2 4 6 8]
+end
+
+to find.win :who
+output filter "numberp find "win.nowp :triples
+end
+
+to win.nowp :triple
+output equalp (filter [not numberp ?] :triple) (word :who :who)
+end
+
+to find.fork
+local "singles
+make "singles singles :me
+if emptyp :singles [output []]
+output repeated.number reduce "word :singles
+end
+
+to singles :who
+output filter [singlep ? :who] :triples
+end
+
+to singlep :triple :who
+output equalp (filter [not numberp ?] :triple) :who
+end
+
+to repeated.number :squares
+output find [memberp ? ?rest] filter "numberp :squares
+end
+
+to find.advance
+output best.move filter "numberp find [singlep ? :me] :triples
+end
+
+to best.move :my.single
+local "your.singles
+if emptyp :my.single [output []]
+make "your.singles singles :you
+if emptyp :your.singles [output first :my.single]
+ifelse (count filter [? = first :my.single]
+                     reduce "word :your.singles) > 1 ~
+       [output first :my.single] ~
+       [output last :my.single]
+end
+
+;; Drawing moves on screen
+
+to draw :who :square
+move :square
+ifelse :who = "x [drawx] [drawo]
+end
+
+to move :square
+penup
+setpos thing word "box :square
+end
+
+to drawo
+pendown
+arc 360 18
+end
+
+to drawx
+setheading 45
+pendown
+repeat 4 [forward 25.5 back 25.5 right 90]
+end
+
+make "box1 [-40 50]
+make "box2 [0 50]
+make "box3 [40 50]
+make "box4 [-40 10]
+make "box5 [0 10]
+make "box6 [40 10]
+make "box7 [-40 -30]
+make "box8 [0 -30]
+make "box9 [40 -30]
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch5/v1ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch7/v1ch7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch6/ttt.lg b/js/games/nluqo.github.io/~bh/v1ch6/ttt.lg
new file mode 100644
index 0000000..aa1c7a0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch6/ttt.lg
@@ -0,0 +1,198 @@
+;; Overall orchestration
+
+to ttt
+local [me you position]
+draw.board
+init
+if equalp :me "x [meplay 5]
+forever [
+  if already.wonp :me [print [I win!] stop]
+  if tiedp [print [Tie game!] stop]
+  youplay getmove                         ;; ask person for move
+  if already.wonp :you [print [You win!] stop]
+  if tiedp [print [Tie game!] stop]
+  meplay pickmove make.triples            ;; compute program's move
+]
+end
+
+to make.triples
+output map "substitute.triple [123 456 789 147 258 369 159 357]
+end
+
+to substitute.triple :combination
+output map [item ? :position] :combination
+end
+
+to already.wonp :player
+output memberp (word :player :player :player) (make.triples)
+end
+
+to tiedp
+output not reduce "or map.se "numberp arraytolist :position
+end
+
+to youplay :square
+draw :you :square
+setitem :square :position :you
+end
+
+to meplay :square
+draw :me :square
+setitem :square :position :me
+end
+
+;; Initialization
+
+to draw.board
+splitscreen clearscreen hideturtle
+drawline [-20 -50] 0 120
+drawline [20 -50] 0 120
+drawline [-60 -10] 90 120
+drawline [-60 30] 90 120
+end
+
+to drawline :pos :head :len
+penup
+setpos :pos
+setheading :head
+pendown
+forward :len
+end
+
+to init
+make "position {1 2 3 4 5 6 7 8 9}
+print [Do you want to play first (X)]
+type [or second (O)? Type X or O:]
+choose
+print [For each move, type a digit 1-9.]
+end
+
+to choose
+local "side
+forever [
+  make "side readchar
+  pr :side
+  if equalp :side "x [choosex stop]
+  if equalp :side "o [chooseo stop]
+  type [Huh? Type X or O:]
+]
+end
+
+to chooseo
+make "me "x
+make "you "o
+end
+
+to choosex
+make "me "o
+make "you "x
+end
+
+;; Get opponent's moves
+
+to getmove
+local "square
+forever [
+  type [Your move:]
+  make "square readchar
+  print :square
+  if numberp :square ~
+     [if and (:square > 0) (:square < 10)
+         [if freep :square [output :square]]]
+  print [not a valid move.]
+]
+end
+
+to freep :square
+output numberp item :square :position
+end
+
+;; Compute program's moves
+
+to pickmove :triples
+local "try
+make "try find.win :me
+if not emptyp :try [output :try]
+make "try find.win :you
+if not emptyp :try [output :try]
+make "try find.fork
+if not emptyp :try [output :try]
+make "try find.advance
+if not emptyp :try [output :try]
+output find [memberp ? :position] [5 1 3 7 9 2 4 6 8]
+end
+
+to find.win :who
+output filter "numberp find "win.nowp :triples
+end
+
+to win.nowp :triple
+output equalp (filter [not numberp ?] :triple) (word :who :who)
+end
+
+to find.fork
+local "singles
+make "singles singles :me
+if emptyp :singles [output []]
+output repeated.number reduce "word :singles
+end
+
+to singles :who
+output filter [singlep ? :who] :triples
+end
+
+to singlep :triple :who
+output equalp (filter [not numberp ?] :triple) :who
+end
+
+to repeated.number :squares
+output find [memberp ? ?rest] filter "numberp :squares
+end
+
+to find.advance
+output best.move filter "numberp find [singlep ? :me] :triples
+end
+
+to best.move :my.single
+local "your.singles
+if emptyp :my.single [output []]
+make "your.singles singles :you
+if emptyp :your.singles [output first :my.single]
+ifelse (count filter [? = first :my.single]
+                     reduce "word :your.singles) > 1 ~
+       [output first :my.single] ~
+       [output last :my.single]
+end
+
+;; Drawing moves on screen
+
+to draw :who :square
+move :square
+ifelse :who = "x [drawx] [drawo]
+end
+
+to move :square
+penup
+setpos thing word "box :square
+end
+
+to drawo
+pendown
+arc 360 18
+end
+
+to drawx
+setheading 45
+pendown
+repeat 4 [forward 25.5 back 25.5 right 90]
+end
+
+make "box1 [-40 50]
+make "box2 [0 50]
+make "box3 [40 50]
+make "box4 [-40 10]
+make "box5 [0 10]
+make "box6 [40 10]
+make "box7 [-40 -30]
+make "box8 [0 -30]
+make "box9 [40 -30]
diff --git a/js/games/nluqo.github.io/~bh/v1ch6/v1ch6.html b/js/games/nluqo.github.io/~bh/v1ch6/v1ch6.html
new file mode 100644
index 0000000..0a86e07
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch6/v1ch6.html
@@ -0,0 +1,1409 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 6: Example: Tic-Tac-Toe</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Tic-Tac-Toe</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch5/v1ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch7/v1ch7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+<P>Program file for this chapter: <A HREF="ttt.lg"><CODE>ttt</CODE></A>
+
+<P>This chapter is the first application of the ideas we've explored to a
+sizable project.  The primary purpose of the chapter is to introduce
+the techniques of <EM>planning</EM> a project, especially the choice of
+how to organize the information needed by the program.  This organization is
+called the <EM>data structure</EM> of the program.  Along the way,
+we'll also see a new data type, the array, and a few other details of Logo
+programming.
+
+<P><H2>The Project</H2>
+
+<P>Tic-tac-toe is not a very challenging game for human beings.  If you're
+an enthusiast, you've probably moved from the basic game to some variant
+like three-dimensional tic-tac-toe on a larger grid.
+
+<P>If you sit down right now to play ordinary three-by-three tic-tac-toe
+with a friend, what will probably happen is that every game will come
+out a tie.  Both you and your friend can probably play perfectly,
+never making a mistake that would allow your opponent to win.
+
+<P>But can you <EM>describe</EM> how you know where to move each turn? 
+Most of the time, you probably aren't even aware of alternative possibilities;
+you just look at the board and instantly know where you want to move.
+That kind of instant knowledge is great for human beings, because
+it makes you a fast player.  But it isn't much help in writing a computer
+program.  For that, you have to know very explicitly what your strategy
+is.
+
+<P>By the way, although the example of tic-tac-toe strategy is a relatively
+trivial one, this issue of instant knowledge versus explicit rules is a hot
+one in modern psychology.  Some cognitive scientists, who think that human
+intelligence works through mechanisms similar to computer programs, maintain
+that when you know how to do something without knowing <EM>how</EM> you know,
+you have an explicit set of rules deep down inside.  It's just that the
+rules have become a habit, so you don't think about them deliberately.
+They're &quot;compiled,&quot; in the jargon of cognitive psychology.  On
+the other hand, some people think that your implicit how-to knowledge is very
+different from the sort of lists of rules that can be captured in a computer
+program.  They think that human thought is profoundly different from the way
+computers work, and that a computer cannot be programmed to simulate the
+full power of human problem-solving.  These people would say, for example,
+that when you look at a tic-tac-toe board you immediately grasp the
+strategic situation as a whole, and your eye is drawn to the best move
+without any need to examine alternatives according to a set of rules.  (You
+might like to try to be aware of your own mental processes as you play a
+game of tic-tac-toe, to try to decide which of these points of view more
+closely resembles your own experience--but on the other hand, the
+psychological validity of such introspective evidence is <EM>another</EM>
+hotly contested issue in psychology!)
+
+<P>&raquo;Before you read further, try to write down a set of strategy rules
+that, if followed consistently, will never lose a game.  Play a few
+games using your rules.  Make sure they work even if the other player
+does something bizarre.
+
+<P>I'm going to number the squares in the tic-tac-toe
+board this way:
+
+<P>
+<TABLE rules="all" frame="void" border="2" noshade><TR><TD align="center" height=30 width=30>1<TD align="center" height=30 width=30>2<TD align="center" height=30 width=30>3<TR><TD align="center" height=30 width=30>4<TD align="center" height=30 width=30>5<TD align="center" height=30 width=30>6<TR><TD align="center" height=30 width=30>7<TD align="center" height=30 width=30>8<TD align="center" height=30 width=30>9</TABLE>
+
+<P>Squares 1, 3, 7, and 9 are <EM>corner squares</EM>.  I'll call
+2, 4, 6, and 8 <EM>edge squares</EM>.  And of course number 5 is the
+<EM>center square</EM>.  I'll use the word <EM>position</EM> to mean
+a specific partly-filled-in board with X and O in certain squares, and
+other squares empty.
+
+<P>One way you might meet my challenge of describing your strategy explicitly
+is to list all the possible sequences of moves up to a certain point
+in the game, then say what move you'd make next in each situation.
+How big would the list have to be?  There are nine possibilities for
+the first move.  For each first move, there are eight possibilities
+for the second move.  If you continue this line of reasoning, you'll
+see that there are nine factorial, or 362880, possible sequences of
+moves.  Your computer may not have enough memory to list
+them all, and you certainly don't have enough patience!
+
+<P>Fortunately, not all these sequences are interesting.  Suppose you
+are describing the rules a computer should use against a human player,
+and suppose the human being moves first.  Then there are, indeed,
+nine possible first moves.  But for each of these, there is only <EM>
+one</EM> possible computer move!  After all, we're programming the computer.
+We get to decide which move it will choose.  Then there are seven
+possible responses by the opponent, and so on.  The number of sequences
+when the human being plays first is 9 times 7 times 5 times 3, or
+945.  If the computer plays first, it will presumably always make
+the single best choice.  Then there are eight possible responses,
+and so on.  In this case the number of possible game sequences is
+8 times 6 times 4 times 2, or 384.  Altogether we have 1329 cases
+to worry about, which is much better than 300,000 but still not an
+enjoyable way to write a computer program.
+
+<P>In fact, though, this number is still too big.  Not all games go for
+a full nine moves before someone wins.  Also, many moves force the
+opponent to a single possible response, even though there are other
+vacant squares on the board.  Another reduction can be achieved by
+taking advantage of <EM>symmetry</EM>.  For example, if X starts in square
+5, any game sequence in which O responds in square 1 is equivalent
+to a sequence in which O responds in square 3, with the board rotated
+90 degrees.  In fact there are only two truly different responses
+to a center-square opening: any corner square, or any edge square.
+
+<P>With all of these factors reducing the number of distinct positions,
+it would probably be possible to list all of them and write
+a strategy program that way.  I'm not sure, though, because I didn't
+want to use that technique.  I was looking for rules expressed in
+more general terms, like &quot;all else being equal, pick a corner rather
+than an edge.&quot;
+
+<P>Why should I prefer a corner?  Each corner square is part of three
+winning combinations.  For example, square 1 is part of <CODE>123</CODE>,
+<CODE>147</CODE>, and <CODE>159</CODE>.  (By expressing these winning combinations as
+three-digit numbers, I've jumped ahead a bit in the story with a preview of how
+the program I wrote represents this information.)  An edge square,
+on the other hand, is only part of two winning combinations.  For
+example, square 2 is part of <CODE>123</CODE> and <CODE>258</CODE>.  Taking a corner
+square makes three winning combinations available to me and unavailable
+to my opponent.
+
+<P>Since I've brought up the subject of winning combinations, how many
+of <EM>them</EM> are there?  Not very many: three horizontal, three vertical,
+and two diagonal.  Eight altogether.  That <EM>is</EM> a reasonable amount
+of information to include in a program, and in fact there is a list
+of the eight winning combinations in this project.
+
+<P>You might, at this point, enjoy playing a few games with the program,
+to see if you can figure out the rules it uses in its strategy.  If
+you accepted my earlier challenge to write down your own set of strategy
+rules, you can compare mine to yours.  Are they the same?  If not,
+are they equally good?
+
+<P>The top-level procedure in this project is called <CODE>ttt</CODE>.  It takes no
+inputs.  When you invoke this procedure, it will ask you if you'd
+like to play first (X) or second (O).  Then you enter moves by typing
+a digit 1-9 for the square you select.  The program draws the game
+board on the Logo graphics screen.
+
+<P>I'm about to start explaining my strategy rules, so stop reading if
+you want to work out your own and haven't done it yet.
+
+<P><H2>Strategy</H2>
+
+<P>The highest-priority and the lowest-priority rules seemed obvious
+to me right away.  The highest-priority are these:
+
+<P>
+
+<P><TABLE><TR><TH>1.&nbsp;&nbsp;<TD>If I can win on this move, do it.
+<TR><TH>2.&nbsp;&nbsp;<TD>If the other player can win on the next move, block that winning
+square.
+</TABLE>
+
+<P>Here are the lowest-priority rules, used only if there is
+nothing suggested more strongly by the board position:
+
+<P><TABLE><TR><TH><EM>n</EM>-2.&nbsp;&nbsp;<TD>Take the center square if it's free.
+<TR><TH><EM>n</EM>-1.&nbsp;&nbsp;<TD>Take a corner square if one is free.
+<TR><TH><EM>n</EM>.&nbsp;&nbsp;<TD>Take whatever is available.
+</TABLE>
+
+<P>The highest priority rules are the ones dealing with the
+most urgent situations: either I or my opponent can win on the next
+move.  The lowest priority ones deal with the least urgent situations,
+in which there is nothing special about the moves already made to
+guide me.
+
+<P>What was harder was to find the rules in between.  I knew that the
+goal of my own tic-tac-toe strategy was to set up a <EM>fork</EM>, a
+board position in which I have two winning moves, so my opponent can
+only block one of them.  Here is an example:
+
+<P>&nbsp;<TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+
+<P>X can win by playing in square 3 or square 4.  It's O's
+turn, but poor O can only block one of those squares at a time.  Whichever
+O picks, X will then win by picking the other one.
+
+<P>Given this concept of forking, I decided to use it as the next highest
+priority rule:
+
+<P><TABLE><TR><TH>3.&nbsp;&nbsp;<TD>If I can make a move that will set up a fork for myself, do it.
+</TABLE>
+
+<P>That was the end of the easy part.  My first attempt at
+writing the program used only these six rules.  Unfortunately, it
+lost in many different situations.  I needed to add something, but
+I had trouble finding a good rule to add.
+
+<P>My first idea was that rule 4 should be the defensive equivalent of
+rule 3, just as rule 2 is the defensive equivalent of rule 1:
+
+<P><TABLE><TR><TH>4a.&nbsp;&nbsp;<TD>If, on the next move, my opponent can set up a fork, block that
+possibility by moving into the square that is common to his two winning
+combinations.
+</TABLE>
+
+<P>In other words, apply the same search technique to the opponent's
+position that I applied to my own.
+
+<P>This strategy works well in many cases, but not all.  For example,
+here is a sequence of moves under this strategy, with the human player
+moving first:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center" valign="bottom"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30><TD align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30><TD align="center" height=30 width=30 align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30 align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30><TD align="center" height=30 width=30 align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30 align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30><TD align="center" height=30 width=30 align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30 align="center" height=30 width=30>o<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30 align="center" height=30 width=30>&nbsp;<TD align="center" height=30 width=30 align="center" height=30 width=30>x<TD align="center" height=30 width=30 align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>In the fourth grid, the computer (playing O) has discovered
+that X can set up a fork by moving in square 6, between the winning
+combinations <CODE>456</CODE> and <CODE>369</CODE>.  The computer moves to block this
+fork.  Unfortunately, X can also set up a fork by moving in squares
+3, 7, or 8.  The computer's move in square 6 has blocked one combination
+of the square-3 fork, but X can still set up the other two.  In the
+fifth grid, X has moved in square 8.  This sets up the winning combinations
+<CODE>258</CODE> and <CODE>789</CODE>.  The computer can only block one of these, and
+X will win on the next move.
+
+<P>Since X has so many forks available, does this mean that the game
+was already hopeless before O moved in square 6?  No.  Here is something
+O could have done:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>In this sequence, the computer's second move is in square
+7.  This move also blocks a fork, but it wasn't chosen for that reason.
+Instead, it was chosen <EM>to force X's next move</EM>.  In the fifth
+grid, X has had to move in square 4, to prevent an immediate win by
+O.  The advantage of this situation for O is that square 4 was <EM>
+not</EM> one of the ones with which X could set up a fork.  O's next move,
+in the sixth grid, is also forced.  But by then the board is too crowded
+for either player to force a win; the game ends in a tie, as usual.
+
+<P>This analysis suggests a different choice for an intermediate-level
+strategy rule, taking the offensive:
+
+<P><TABLE><TR><TH>4b.&nbsp;&nbsp;<TD>If I can make a move that will set up a winning combination
+for myself, do it.
+</TABLE>
+
+<P>Compared to my earlier try, this rule has the benefit of
+simplicity.  It's much easier for the program to look for a single
+winning combination than for a fork, which is two such combinations
+with a common square.
+
+<P>Unfortunately, this simple rule isn't quite good enough.  In the example
+just above, the computer found the winning combination <CODE>147</CODE> in
+which it already had square 1, and the other two were free.  But why
+should it choose to move in square 7 rather than square 4?  If the
+program did choose square 4, then X's move would still be forced,
+into square 7.  We would then have forced X into creating a fork,
+which would defeat the program on the next move.
+
+<P>It seems that there is no choice but to combine the ideas from rules
+4a and 4b:
+
+<P><TABLE><TR><TH>4b.&nbsp;&nbsp;<TD>If I can make a move that will set up a winning combination
+for myself, do it.  But ensure that this move does not force the opponent
+into establishing a fork.
+</TABLE>
+
+<P>What this means is that we are looking for a winning combination
+in which the computer already owns one square and the other two are empty.
+Having found such a combination, we can move in either of its empty squares.
+Whichever we choose, the opponent will be forced to choose the other one
+on the next move.  If one of the two empty squares would create a fork for
+the opponent, then the computer must choose that square and leave the other
+for the opponent.
+
+<P>What if <EM>both</EM> of the empty squares in the combination we find
+would make forks for the opponent?  In that case, we've chosen a bad
+winning combination.  It turns out that there is only one situation
+in which this can happen:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>Again, the computer is playing O.  After the third grid,
+it is looking for a possible winning combination for itself.  There
+are three possibilities: <CODE>258</CODE>, <CODE>357</CODE>, and <CODE>456</CODE>.
+So far we
+have not given the computer any reason to prefer one over another.
+But here is what happens if the program happens to choose <CODE>357</CODE>:
+
+<P><PRE><TABLE><TR>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30></TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+<TD width=150 align="center"><TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TD align="center" height=30 width=30>x</TABLE>
+</TABLE></PRE>
+
+<P>By this choice, the computer has forced its opponent into
+a fork that will win the game for the opponent.
+If the computer chooses either of the other two possible winning combinations,
+the game ends in a tie.  (All moves after this choice turn out to
+be forced.)
+
+<P>This particular game sequence was very troublesome for me because
+it goes against most of the rules I had chosen earlier.  For one thing,
+the correct choice for the program is any edge square, while the corner
+squares must be avoided.  This is the opposite of the usual priority.
+
+<P>Another point is that this situation contradicts rule 4a (prevent
+forks for the other player) even more sharply than the example we
+considered earlier.  In that example, rule 4a wasn't enough
+guidance to ensure a correct choice, but the correct choice was at
+least <EM>consistent</EM> with the rule.  That is, just blocking a fork
+isn't enough, but threatening a win and <EM>also</EM> blocking a fork
+is better than just threatening a win alone.  This is the meaning
+of rule 4.  But in this new situation, the corner square (the move
+we have to avoid) <EM>does</EM> block a fork, while the edge square (the
+correct move) <EM>doesn't</EM> block a fork!
+
+<P>When I discovered this anomalous case, I was ready to give up on the
+idea of beautiful, general rules.  I almost decided to build into
+the program a special check for this precise board configuration.
+That would have been pretty ugly, I think.  But a shift in viewpoint
+makes this case easier to understand:  What the program must do is
+force the other player's move, and force it in a way that helps the
+computer win.  If one possible winning combination doesn't allow us to
+meet these conditions, the program should try another combination.
+My mistake was to think either about forcing alone (rule 4b) or about
+the opponent's forks alone (rule 4a).
+
+<P>As it turns out, the board situation we've been considering is the only
+one in which a possible winning combination could include two possible
+forks for the opponent.  What's more, in this board situation, it's a
+diagonal combination that gets us in trouble, while a horizontal or
+vertical combination is always okay.  Therefore, I was able to implement
+rule 4 in a way that only considers one possible winning combination by
+setting up the program's data structures so that diagonal combinations
+are the last to be chosen.  This trick makes the program's design less
+than obvious from reading the actual program, but it does save the program
+some effort.
+
+<P><H2>Program Structure and Modularity</H2>
+
+
+<P>Most game programs--in fact, most interactive programs of any
+kind--consist of an initialization section followed by a sequence
+of steps carried out repeatedly.  In the case of the tic-tac-toe game,
+the overall program structure will be something like this:
+
+<P><PRE>to ttt
+initialize
+forever [
+   if <EM>game.is.over</EM> [stop]
+   <EM>record.human.move get.human.move</EM>
+   if <EM>game.is.over</EM> [stop]
+   <EM>record.program.move compute.program.move</EM>
+]
+end
+</PRE>
+
+<P>The parts of this structure shown in <CODE><EM>italics</EM></CODE> are
+just vague ideas.  At this point in the planning, I don't know what inputs
+these procedures might need, for example.  In fact, there may not be
+procedures exactly like this in the final program.  One example is that
+the test that I've called <CODE><EM>game.is.over</EM></CODE> here will actually
+turn out to be two separate tests <CODE>already.wonp</CODE> and <CODE>tiedp</CODE> (using
+a final letter <CODE>p</CODE> to indicate a predicate, following the convention
+established by the Logo primitive predicates).
+
+<P>This half-written procedure introduces a Logo primitive we haven't used
+before: <CODE>forever</CODE>.  It takes a list of Logo instructions as its
+input, and carries out those instructions repeatedly, much as <CODE>repeat</CODE>,
+<CODE>for</CODE>, and <CODE>foreach</CODE> do.  But the number of repetitions is unlimited;
+the repetition stops only if, as in this example, the primitive <CODE>stop</CODE> or
+<CODE>output</CODE> is invoked within the repeated instructions.   <CODE>Forever</CODE> is
+useful when the ending condition can't be predicted in advance, as in a game
+situation in which a player might win at any time.
+
+<P>It may not be obvious why I've planned for one procedure to figure out the
+next move and a separate procedure to record it.  (There are two such pairs
+of procedures, one for the program's moves and the other for the human
+opponent's moves.)  For one thing, I expect that the recording of moves
+will be much the same whether it's the program or the person moving, while
+the decision about where to move will be quite different in the two cases.
+For the program's move we must apply strategy rules; for the human player's
+moves we simply ask the player.  Also, I anticipate that the selection of
+the program's moves, which will be the hardest part of the program, can be
+written in functional style.  The strategy procedure is a function that takes
+the current board position as its input, always returning the same chosen
+square for any given input position.
+
+<P>This project contains 28 procedures.  These procedures can be divided into
+related groups like this:
+
+<P><TABLE>
+<TR><TD>7<TD>overall orchestration
+<TR><TD>6<TD>initialization
+<TR><TD>2<TD>get opponent's moves
+<TR><TD>9<TD>compute program's moves
+<TR><TD>4<TD>draw moves on screen
+</TABLE>
+
+<P>As you might expect, figuring out the computer's strategy
+is the most complex part of the program's job.  But this strategic
+task is still only about a third of the complete program.
+
+<P>The five groups are quite cleanly distinguishable in this project.  There are
+relatively few procedure invocations between groups, compared to the number
+within a group.  It's easy to read the procedures within a group and
+understand how they work without having to think about other parts of the
+program at the same time.
+
+<P>
+The following diagram shows the subprocedure/superprocedure relationships
+within the program, and indicates which procedures are in each of the five
+groups listed above.  Some people find diagrams like this one very helpful in
+understanding the structure of a program.  Other people don't like these
+diagrams at all.  If you find it helpful, you may want to draw such diagrams
+for your own projects.
+
+<P>
+
+<CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch6/tttflow.gif" ALT="figure: tttflow"></CENTER>
+
+
+
+<P>In the diagram, I've circled the names of seven procedures.  If you
+understand the purpose of each of these, then you will understand
+the general structure of the entire program.  (Don't turn to the end and
+read the actual procedures just now.  Instead, see if
+you can understand the following paragraphs just from the diagram.)
+
+<P><CODE>Ttt</CODE> is the top-level procedure for which I gave a rough outline
+earlier.  It calls initialization procedures (<CODE>draw.board</CODE> and <CODE>
+init</CODE>) to set up the game, then repeatedly alternates between the human
+opponent's moves and the program's moves.  It calls <CODE>getmove</CODE> to find
+out the next move by the opponent, <CODE>youplay</CODE> to record that move,
+then <CODE>pickmove</CODE> to compute the program's next move and <CODE>meplay</CODE>
+to record it.
+
+<P><CODE>Make.triples</CODE> translates from one representation of the board
+position to another.  The representation used within <CODE>ttt</CODE> is best
+suited for display and for user interaction, while the representation
+output by <CODE>make.triples</CODE> is best for computing the program's strategy.
+We'll look into data representation more closely later.
+
+<P><CODE>Getmove</CODE> invites the opponent to type in a move.  It ensures that
+the selected move is legal before accepting it.  The output from <CODE>
+getmove</CODE> is a number from 1 to 9 representing the chosen square.
+
+<P><CODE>Pickmove</CODE> figures out the program's next move.  It is the &quot;smartest&quot;
+procedure in the program, embodying the strategy rules I listed earlier.
+It, too, outputs a number from 1 to 9.
+
+<P><CODE>Youplay</CODE> and <CODE>meplay</CODE> are simple procedures that actually carry out
+the moves chosen by the human player and by the program, respectively.
+Each contains only two instructions.  The first invokes <CODE>draw</CODE> to draw
+the move on the screen.  The second modifies the <CODE>position</CODE> array
+to remember that the move has been made.
+
+<P><CODE>Draw</CODE> moves the turtle to the chosen square on the tic-tac-toe board.
+Then it draws either an X or an O.  (We haven't really talked about Logo's
+turtle graphics yet.  If you're not familiar with turtle graphics from
+earlier Logo experience, you can just take this part of the program on faith;
+there's nothing very interesting about it.)
+
+<P>Notice, in the diagram, that the lines representing procedure calls
+come into a box only at the top.  This is one sign of a well-organized
+program:  The dashed boxes in the diagram truly do represent distinct
+parts of the program that don't interact very much.
+
+<P><H2>Data Representation</H2>
+
+<P>I've written several tic-tac-toe programs, in different programming
+languages.  This experience has really taught me about the importance of
+picking a good data representation.  For my first tic-tac-toe
+program, several years ago, I decided without much prior thought that a
+board position should be represented as three lists of numbers, one with X's
+squares, one with O's squares, and one with the free squares.  So this board
+position
+
+<P><PRE>
+<TABLE rules="all" frame="void" border="2">
+<TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+</PRE>
+
+<P>could be represented like this:
+
+<P><PRE>make &quot;xsquares [1 4 5]
+make &quot;osquares [2 9]
+make &quot;free [3 6 7 8]
+</PRE>
+
+<P>These three variables would change in value as squares moved
+from <CODE>:free</CODE> to one of the others.  This representation was easy
+to understand, but not very helpful for writing the program!
+
+<P>What questions does a tic-tac-toe program have to answer about the board
+position?  If, for example, the program wants to print a display of the
+position, it must answer questions of the form &quot;Who's in square 4?&quot;
+With the representation shown here, that's not as easy a question as we
+might wish:
+
+<P><PRE>to occupant :square                          ;; old program
+if memberp :square :xsquares [output &quot;x]
+if memberp :square :osquares [output &quot;o]
+output &quot;free
+end
+</PRE>
+
+<P>
+<P>On the other hand, this representation isn't so bad when we're
+accepting a move from the human player and want to make sure it's a legal
+move:
+
+<P><PRE>to freep :square                             ;; old program
+output memberp :square :free
+end
+</PRE>
+
+<P>Along with this representation of the board, my first program used
+a constant list of winning combinations:
+
+<P><PRE>make &quot;wins [[1 2 3] [4 5 6] [7 8 9] [1 4 7] [2 5 8]
+            [3 6 9] [1 5 9] [3 5 7]]
+</PRE>
+
+<P>It also had a list of all possible forks.  I won't bother
+trying to reproduce this very long list for you, since it's not used
+in the current program, but the fork set up by X in the
+board position just above was represented this way:
+
+<P><PRE>[4 [1 7] [5 6]]
+</PRE>
+
+<P>This indicates that square 4 is the pivot of a fork between
+the winning combinations <CODE>[1 4 7]</CODE> and <CODE>[4 5 6]</CODE>.  Each member of the
+complete list of forks was a list like this sample.  The list of forks
+was fairly long.  Each edge square is the pivot of a fork.  Each corner
+square is the pivot of three forks.  The center square is the pivot
+of six forks.  This adds up to 22 forks altogether.
+
+<P>Each time the program wanted to choose a move, it would first check
+all eight possible winning combinations to see if two of the squares
+were occupied by the program and the third one free.  Since any of
+the three squares might be the free one, this is a fairly tricky program
+in itself:
+
+<P><PRE>to checkwin :candidate :mysquares :free      ;; old program
+if memberp first :candidate :free ~
+   [output check1 butfirst :candidate :mysquares]
+if memberp last :candidate :free ~
+   [output check1 butlast :candidate :mysquares]
+if memberp first butfirst :candidate :free ~
+   [output check1 list first :candidate last :candidate :mysquares]
+output &quot;false
+end
+
+to check1 :sublist :mysquares                ;; old program
+output and (memberp first :sublist :mysquares) ~
+           (memberp last :sublist :mysquares)
+end
+</PRE>
+
+<P>This procedure was fairly slow, especially when invoked
+eight times, once for each possible win.  But the procedure to check
+each of the possible forks was even worse!
+
+<P>In the program that I wrote for the first edition of <EM>Computer Science
+Logo Style,</EM> a very different approach is used.  This approach is based on
+the realization that, at any moment, a particular winning combination may be
+free for anyone (all three squares free), available only to one player, or
+not available to anyone.  It's silly for the program to go on checking a
+combination that can't possibly be available.  Instead of a single list of
+wins, the new program has three lists:
+
+<P>
+<TABLE>
+<TR><TD><CODE>mywins</CODE><TD width=30><TD>wins available to the computer
+<TR><TD><CODE>yourwins</CODE><TD width=30><TD>wins available to the opponent
+<TR><TD><CODE>freewins</CODE><TD width=30><TD>wins available to anyone
+</TABLE>
+
+<P>Once I decided to organize the winning combinations in this form,
+another advantage became apparent: for each possible winning combination,
+the program need only remember the squares that are free, not the
+ones that are occupied.  For example, the board position shown above
+would contain these winning combinations, supposing the computer is
+playing X:
+
+<P><PRE>make &quot;mywins [[7] [6] [3 7]]
+make &quot;yourwins [[3 6] [7 8]]
+make &quot;freewins []
+</PRE>
+
+<P>The sublist <CODE>[7]</CODE> of <CODE>:mywins</CODE> indicates that the computer can
+win simply by filling square 7.  This list represents the winning
+combination that was originally represented as <CODE>[1 4 7]</CODE>, but since
+the computer already occupies squares 1 and 4 there is no need to
+remember those numbers.
+
+<P>The process of checking for an immediate win is streamlined with this
+representation for two reasons, compared with the <CODE>checkwin</CODE> procedure
+above.  First, only those combinations in <CODE>:mywins</CODE> must
+be checked, instead of all eight every time.  Second, an immediate
+win can be recognized very simply, because it is just a list with
+one member, like <CODE>[7]</CODE> and <CODE>[6]</CODE> in the example above.  The procedure
+<CODE>single</CODE> looks for such a list:
+
+<P><PRE>to single :list                              ;; old program
+output find [equalp (count ?) 1] :list
+end
+</PRE>
+
+<P>The input to <CODE>single</CODE> is either <CODE>:mywins</CODE>, to find a winning
+move for the computer (rule 1), or <CODE>:yourwins</CODE>, to find and block a
+winning move for the opponent (rule 2).
+
+<P>Although this representation streamlines the strategy computation (the
+<CODE>pickmove</CODE> part of the program), it makes the recording of a move
+quite difficult, because combinations must be moved from one list to
+another.  That part of the program was quite intricate and hard to
+understand.
+
+<P><H2>Arrays</H2>
+
+<P>This new program uses <EM>two</EM> representations, one for the interactive
+part of the program and one for the strategy computation.  The first of these
+is simply a collection of nine words, one per square, each of which is the
+letter X, the letter O, or the number of the square.  With this
+representation, recording a move means changing one of the nine words.
+It would be possible to keep the nine words in a list, and compute a new
+list (only slightly different) after each move.  But Logo provides another
+data type, the <EM>array,</EM> which allows for changing one member
+while keeping the rest unchanged.
+
+<P>If arrays allow for easy modification and lists don't, why not always use
+arrays?  Why did I begin the book with lists?  The answer is that each
+data type has advantages and disadvantages.  The main disadvantage of an
+array is that you must decide in advance how big it will be; there aren't
+any constructors like <CODE>sentence</CODE> to lengthen an array.
+
+<P>In this case, the fixed length of an array is no problem, because a
+tic-tac-toe board has nine squares.  The <CODE>init</CODE> procedure creates
+the position array with the instruction
+
+<P><PRE>make &quot;position {1 2 3 4 5 6 7 8 9}
+</PRE>
+
+<P>The braces <CODE>{}
+</CODE> indicate an array in the same
+way that brackets indicate a list.
+
+<P>If player X moves in square 7, we can record that information
+by saying
+
+<P><PRE><CODE>setitem</CODE> 7 :position &quot;x
+</PRE>
+
+<P>(Of course, the actual instruction in procedures <CODE>meplay</CODE> and
+<CODE>youplay</CODE> uses variables instead of the specific values 7 and X.)
+<CODE>Setitem</CODE> is a command with three inputs: a number indicating which
+member of the array to change, the array itself, and the new value for
+the specified member.
+
+<P>To find out who owns a particular square, we could write this procedure:
+
+<P><PRE>to occupant :square
+output <CODE>item</CODE> :square :position
+end
+</PRE>
+
+<P>(The <CODE>item</CODE> operation can select a member of an array just as
+it can select a member of a list or of a word.)  In fact, though, it turns
+out that I don't have an <CODE>occupant</CODE> procedure in this program.  But the
+parts of the program that examine the board position do use <CODE>item</CODE> in a
+similar way, as in this example:
+
+<P><PRE>to freep :square
+output numberp item :square :position
+end
+</PRE>
+
+<P>To create an array without explicitly listing all of its members, use the
+operation <CODE>array</CODE>.  It takes a number as argument, indicating how many
+members the array should have.  It returns an array of the chosen size, in
+which each member is the empty list.  Your program can then use <CODE>setitem</CODE>
+to assign different values to the members.
+
+<P>The only primitive operation to select a member of an array is <CODE>item</CODE>.
+Word-and-list operations such as <CODE>butfirst</CODE> can't be used with arrays.
+There are operations <CODE>arraytolist</CODE> and <CODE>listtoarray</CODE> to convert
+a collection of information from one data type to the other.
+
+<P><H2>Triples</H2>
+
+<P>The position array works well as a long-term representation for the board
+position, because it's easy to update; it also works well for interaction
+with the human player, because it's easy to find out the status of a
+particular square.  But for computing the program's moves, we need a
+representation that makes it easy to ask questions such as &quot;Is there a
+winning combination for my opponent on the next move?&quot;  That's why, in
+the first edition of these books, I used the representation with three
+lists of possible winning combinations.
+
+<P>When MatthewWright and I wrote the book <EM>Simply Scheme,</EM> we
+decided that the general idea of combinations was a good one, but the three
+lists made the program more complicated than necessary.  Since there are
+only eight possible winning combinations in the first place, it's not so
+slow to keep one list of all of them, and use that list as the basis for
+all the questions we ask in working out the program's strategy.  If the
+current board position is
+
+<P><PRE>
+<TABLE rules="all" frame="void" border="2"><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+</PRE>
+
+<P>we represent the three horizontal winning combinations with
+the words <CODE>xo3</CODE>, <CODE>xx6</CODE>, and <CODE>78o</CODE>.  Each combination is
+represented as a three-&quot;letter&quot; word containing an <CODE>x</CODE> or an <CODE>o</CODE>
+for an occupied square, or the square's number for a free square.  By
+using words instead of lists for the combinations, we make the entire
+set of combinations more compact and easier to read.  Each of these words
+is called a <EM>triple.</EM>  The job of procedure <CODE>make.triples</CODE> is
+to combine the information in the position array with a list of the eight
+winning combinations:
+
+<P><PRE>? <U>show make.triples</U>
+[xo3 xx6 78o xx7 ox8 36o xxo 3x7]
+</PRE>
+
+<P><CODE>Make.triples</CODE> takes no inputs because the list of possible
+winning combinations is built into it, and the position array is in <CODE>
+ttt</CODE>'s local variable <CODE>position</CODE>:
+
+<P><PRE>to make.triples
+output map &quot;substitute.triple [123 456 789 147 258 369 159 357]
+end
+
+to substitute.triple :combination
+output map [item ? :position] :combination
+end
+</PRE>
+
+<P>This short subprogram will repay careful attention.  It uses
+<CODE>map</CODE> twice, once in <CODE>make.triples</CODE> to compute a function of
+each possible winning combination, and once in <CODE>substitute.triple</CODE> to
+compute a function of each square in a given combination.  (That latter
+function is the one that looks up the square in the array <CODE>:position</CODE>.)
+
+<P>Once the program can make the list of triples, we can use that to answer
+many questions about the status of the game.  For example, in the top-level
+<CODE>ttt</CODE> procedure we must check on each move whether or not a certain
+player has already won the game.  Here's how:
+
+<P><PRE>to already.wonp :player
+output memberp (word :player :player :player) (make.triples)
+end
+</PRE>
+
+<P>If we had only the <CODE>position</CODE> array to work with, it would be
+complicated to check all the possible winning combinations.  But once we've
+made the list of triples, we can just ask whether the word <CODE>xxx</CODE> or the
+word <CODE>ooo</CODE> appears in that list.
+
+<P>Here is the actual top-level procedure definition:
+
+<P><PRE>to ttt
+local [me you position]
+draw.board
+init
+if equalp :me &quot;x [meplay 5]
+forever [
+  if already.wonp :me [print [I win!] stop]
+  if tiedp [print [Tie game!] stop]
+  youplay getmove                         ;; ask person for move
+  if already.wonp :you [print [You win!] stop]
+  if tiedp [print [Tie game!] stop]
+  meplay pickmove make.triples            ;; compute program's move
+]
+end
+</PRE>
+
+<P>Notice that <CODE>position</CODE> is declared as a local variable.
+Because of Logo's dynamic scope, all of the subprocedures in this project
+can use <CODE>position</CODE> as if it were a global variable, but Logo will
+&quot;clean up&quot; after the game is over.
+
+<P>Two more such quasi-global variables are used to remember whether the
+computer or the human opponent plays first.  The value of <CODE>me</CODE> will be
+either the word <CODE>x</CODE> or the word <CODE>o</CODE>, whichever letter the program
+itself is playing.  Similarly, the value of <CODE>you</CODE> will be <CODE>x</CODE> or
+<CODE>o</CODE> to indicate the letter used by the opponent.  All of these variables
+are given their values by the initialization procedure <CODE>init</CODE>.
+
+<P>This information could have been kept in the form of a single
+<EM>flag variable,</EM> called something like <CODE>mefirst</CODE>, that would
+contain the word <CODE>true</CODE> if the computer is X, or <CODE>false</CODE> if the
+computer is O.  (A flag variable is one whose value is always <CODE>
+true</CODE> or <CODE>false</CODE>, just as a predicate is a procedure whose output is
+<CODE>true</CODE> or <CODE>false</CODE>.)  It would be used something like this:
+
+<P><PRE>if :mefirst [draw &quot;x :square] [draw &quot;o :square]
+</PRE>
+
+<P>But it turned out to be simpler to use two variables and
+just say
+
+<P><PRE>draw :me :square
+</PRE>
+
+<P>
+<P>One detail in the final program that wasn't in my first rough draft is the
+instruction
+
+<P><PRE>if equalp :me &quot;x [meplay 5]
+</PRE>
+
+<P>just before the <CODE>forever</CODE> loop.  It was easier to write the
+loop so that it always gets the human opponent's move first, and then
+computes a move for the program, rather than having two different loops
+depending on which player goes first.  If the program moves first, its
+strategy rules would tell it to choose the center square, because there is
+nothing better to do when the board is empty.  By checking for that case
+before the loop, we are ready to begin the loop with the opponent as the
+next to move.
+
+<P><H2>Variables in the Workspace</H2>
+
+
+<P>There are nine global variables that are part
+of the workspace, entered directly with top-level <CODE>make</CODE> instructions
+rather than set up by <CODE>init</CODE>, because their
+values are never changed. Their names are <CODE>box1</CODE> through <CODE>
+box9</CODE>, and their values are the coordinates on the graphics screen of
+the center of each square.  For example, <CODE>:box1</CODE> is <CODE>
+[-40 50]</CODE>.  These variables are used by <CODE>move</CODE>, a subprocedure of
+<CODE>draw</CODE>, to know where to position the turtle before drawing an X
+or an O.
+
+<P>The use of variables loaded with a workspace file, rather than given values
+by an initialization procedure, is a practice that Logo encourages in some
+ways and discourages in others.  Loading variables in a workspace file makes
+the program start up faster, because it decreases the amount of
+initialization required.  On the other hand, variables are sort of
+second-class citizens in workspace files.  In many versions of Logo the <CODE>
+load</CODE> command lists the names of the procedures in the workspace file, but
+not the names of the variables.  Similarly, <CODE>save</CODE> often reports the
+number of procedures saved, but not the number of variables.  It's easy to
+create global variables and forget that they're there.
+
+<P>Certainly preloading variables makes sense only if the variables are really
+constants; in other words, a variable whose value may change during the
+running of a program should be initialized explicitly when the program
+starts.  Otherwise, the program will probably give incorrect results if you
+run it a second time.  (One of the good ideas in the programming language
+Pascal is that there is a sort of thing in the language called a <EM>
+constant</EM>; it has a name and a value, like a variable, but you can't give
+it a new value in mid-program.  In Logo, you use a global variable to hold a
+constant, and simply refrain from changing its value.  But being able to
+<EM>say</EM> that something is a constant makes the program easier to
+understand.)
+
+<P>One reason the use of preloaded variables is sometimes questioned as a point
+of style is that when people are sloppy in their use of global variables,
+it's hard to know which are really meant to be preloaded and which are just
+left over from running the program.  That is, if you write a program, test
+it by running it, and then save it on a diskette, any global variables that
+were created during the program execution will still be in the workspace
+when you load that diskette file later.  If there are five
+intentionally-loaded variables along with 20 leftovers, it's particularly
+hard for someone to understand which are which.  This is one more reason not
+to use global variables when what you really want are variables local to the
+top-level procedure.
+
+<P><H2>The User Interface</H2>
+
+<P>The only part of the program that really interacts with the human user is
+<CODE>getmove</CODE>, the procedure that asks the user where to move.
+
+<P><PRE>to getmove
+local &quot;square
+forever [
+  type [Your move:]
+  make &quot;square readchar
+  print :square
+  if numberp :square
+     [if and (:square &gt; 0) (:square &lt; 10)
+         [if freep :square [output :square]]]
+  print [not a valid move.]
+]
+end
+</PRE>
+
+<P>There are two noteworthy things about this part of the program.  One is that
+I've chosen to use <CODE>readchar</CODE> to read what the player types.  This
+primitive operation, with no inputs, waits for the user to type any single
+character on the keyboard, and outputs whatever character the user types.
+This &quot;character at a time&quot; interaction is in contrast with the more usual
+&quot;line at a time&quot; typing, in which you can type characters, erase some if
+you make a mistake, and finally use the RETURN or ENTER key to indicate that
+the entire line you've typed should be made available to your program.
+(In Chapter 1 you met Logo's <CODE>readlist</CODE> primitive for line at a
+time typing.)  Notice that if tic-tac-toe had ten or more squares in its
+board I wouldn't have been able to make this choice, because the program
+would have to allow the entry of two-digit numbers.
+
+<P><CODE>Readchar</CODE> was meant for fast-action programs such as video games.
+It therefore does not display (or <EM>echo</EM>) the character that you type
+on the computer screen.  That's why <CODE>getmove</CODE> includes a <CODE>print</CODE>
+instruction to let the user see what she or he has typed!
+
+<P>The second point to note in <CODE>getmove</CODE> is how careful it is to allow for
+the possibility of a user error.  Ordinarily, when one procedure uses a
+value that was computed by another procedure, the programmer can assume that
+the value is a legitimate one for the intended purpose.  For example, when
+you invoke a procedure that computes a number, you assume that you can add
+the output to another number; you don't first use the <CODE>number?</CODE> 
+predicate to double-check that the result was indeed a number.  But in
+<CODE>getmove</CODE> we are dealing with a value that was typed by a human being,
+and human beings are notoriously error-prone!  The user is <EM>supposed</EM>
+to type a number between 1 and 9.  But perhaps someone's finger might slip
+and type a zero instead of a nine, or even some character that isn't a
+number at all.  Therefore, <CODE>getmove</CODE> first checks that what the user
+typed is a number.  If so, it then checks that the number is in the allowed
+range.  (We'd get a Logo error message if <CODE>getmove</CODE> used the <CODE>
+&lt;</CODE> operation with a non-numeric input.)  Only if these conditions are met
+do we use the user's number as the square-selecting input to <CODE>freep</CODE>.
+
+<P><H2>Implementing the Strategy Rules</H2>
+
+<P>To determine the program's next move, <CODE>ttt</CODE> invokes <CODE>pickmove</CODE>;
+since many of the strategy rules will involve an examination of possible
+winning combinations, <CODE>pickmove</CODE> is given the output from <CODE>
+make.triples</CODE> as its input.
+
+<P>The strategy I worked out for the program consists of several rules, in
+order of importance.  So the structure of <CODE>pickmove</CODE> should be something
+like this:
+
+<P><PRE>to pickmove :triples
+if first.rule.works [output first.rule's.square]
+if second.rule.works [output second.rule's.square]
+...
+end
+</PRE>
+
+<P>This structure would work, but it would be very inefficient,
+because the procedure to determine whether a rule is applicable does
+essentially the same work as the procedure to choose a square by following
+the rule.  For example, here's a procedure to decide whether or not the
+program can win on this move:
+
+<P><PRE>to can.i.win.now
+output not emptyp find &quot;win.nowp :triples
+end
+
+to win.nowp :triple
+output equalp (filter [not numberp ?] :triple) (word :me :me)
+end
+</PRE>
+
+<P>The subprocedure <CODE>win.nowp</CODE> decides whether or not a
+particular triple is winnable on this move, by looking for a triple
+containing one number and two letters equal to whichever of X or O
+the program is playing.  For example, <CODE>3xx</CODE> is a winnable triple
+if the program is playing X.
+
+<P>The procedure to pick a move if there is a winnable triple also must
+apply <CODE>win.nowp</CODE> to the triples:
+
+<P><PRE>to find.winning.square
+output filter &quot;numberp find &quot;win.nowp :triples
+end
+</PRE>
+
+<P>If there is a winnable triple <CODE>3xx</CODE>, then the program
+should move in square 3.  We find that out by looking for the number
+within the first winnable triple we can find.
+
+<P>It seems inelegant to find a winnable triple just to see if there are
+any, then find the same triple again to extract a number from it.
+Instead, we take advantage of the fact that the procedure I've called
+<CODE>find.winning.square</CODE> will return a distinguishable value--namely,
+an empty list--if there is no winnable triple.  We say
+
+<P><PRE>to pickmove :triples
+local &quot;try
+make &quot;try find.winning.square
+if not emptyp :try [output :try]
+...
+end
+</PRE>
+
+<P>In fact, instead of the procedure <CODE>find.winning.square</CODE> the
+actual program uses a similar <CODE>find.win</CODE> procedure that takes the
+letter X or O as an input; this allows the same procedure to check both
+rule 1 (can the computer win on this move) and rule 2 (can the opponent
+win on the following move).
+
+<P><CODE>Pickmove</CODE> checks each of the strategy rules with a similar pair of
+instructions:
+
+<P><PRE>make &quot;try something
+if not emptyp :try [output :try]
+</PRE>
+
+<P>Here is the complete procedure:
+
+<P><PRE>to pickmove :triples
+local &quot;try
+make &quot;try find.win :me                 ; rule 1: can computer win?
+if not emptyp :try [output :try]
+make &quot;try find.win :you                ; rule 2: can opponent win?
+if not emptyp :try [output :try]
+make &quot;try find.fork                    ; rule 3: can computer fork?
+if not emptyp :try [output :try]
+make &quot;try find.advance                 ; rule 4: can computer force?
+if not emptyp :try [output :try]
+output find [memberp ? :position] [5 1 3 7 9 2 4 6 8]   ; rules 5-7
+end
+</PRE>
+
+<P>The procedures that check for each rule have a common flavor:  They all
+use <CODE>filter</CODE> and <CODE>find</CODE> to select interesting triples and then
+to select an available square from the chosen triple.  I won't go through
+them in complete detail, but there's one that uses a Logo feature I haven't
+described before.  Here is <CODE>find.fork</CODE>:
+
+<P><PRE>to find.fork
+local &quot;singles
+make &quot;singles singles :me                    ; find triples like 14x, x23
+if emptyp :singles [output []]
+output repeated.number reduce &quot;word :singles ; find square in two triples
+end
+</PRE>
+
+<P>Suppose the computer is playing X and the board looks like this:
+
+<P><PRE>
+<TABLE rules="all" frame="void" border="2">
+<TR><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30>o<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30>x<TD align="center" height=30 width=30><TR><TD align="center" height=30 width=30><TD align="center" height=30 width=30><TD align="center" height=30 width=30>o</TABLE>
+</PRE>
+
+<P><CODE>Find.fork</CODE> calls <CODE>singles</CODE> (a straightforward procedure
+that you can read in the complete listing at the end of this chapter) to
+find all the triples containing one X and two vacant squares.  It outputs
+
+<P><PRE>[4x6 x47 3x7]
+</PRE>
+
+<P>indicating that the middle row, the left column, and one of the
+diagonals meet these conditions.  To find a fork, we must find a vacant
+square that is included in two of these triples.  The expression
+
+<P><PRE>reduce &quot;word :singles
+</PRE>
+
+<P>strings these triples together into the word <CODE>
+4x6x473x7</CODE>.  The job of <CODE>repeated.number</CODE> is to find a digit that
+occurs more than once in this word.  Here is the procedure:
+
+<P><PRE>to repeated.number :squares
+output find [memberp ? ?rest] filter &quot;numberp :squares
+end
+</PRE>
+
+<P>The expression
+
+<P><PRE>filter &quot;numberp :squares
+</PRE>
+
+<P>gives us the word <CODE>464737</CODE>, which is the input word with
+the letters removed.  We use <CODE>find</CODE> to find a repeated digit in
+this number.  The new feature is the use of <CODE>?rest</CODE> in the predicate template
+
+<P><PRE>[memberp ? ?rest]
+</PRE>
+
+<P><CODE>?rest</CODE> represents the part of the input to <CODE>find</CODE> (or any
+of the other higher-order functions that understand templates) to the right
+of the value being used as <CODE>?</CODE>.  So in this example, <CODE>find</CODE> first
+computes the value of the expression
+
+<P><PRE>memberp 4 64737
+</PRE>
+
+<P>This happens to be <CODE>true</CODE>, so <CODE>find</CODE> returns the value 4
+without looking at the remaining digits.  But if necessary, <CODE>find</CODE> would
+have gone on to compute
+
+<P><PRE>memberp 6 4737
+memberp 4 737
+memberp 7 37
+memberp 3 7
+memberp 7 "
+</PRE>
+
+<P>(using the empty word as <CODE>?rest</CODE> in the last line) until one
+of these turned out to be true.
+
+<P><H2>Further Explorations</H2>
+
+<P>The obvious first place to look for improvements to this project is
+in the strategy.
+
+<P>At the beginning of the discussion about strategy, I suggested that
+one possibility would be to make a complete list of all possible move
+sequences, with explicit next-move choices recorded for each.  How
+many such sequences are there?  If you write the program in a way
+that considers rotations of the board as equivalent, perhaps not
+very many.  For example, if the computer moves first (in the center,
+of course) there are really only two responses the opponent can make:
+a corner or an edge.  Any corner is equivalent to any other.  From
+that point on, the entire sequence of the game can be forced by the
+computer, to a tie if the opponent played a corner, or to a win if
+the opponent played an edge.  If the opponent moves first, there are
+three cases, center, corner, or edge.  And so on.
+
+<P>An intermediate possibility between the complete list of cases and
+the more general rules I used would be to keep a complete list of
+cases for, say, the first two moves.  After that, general rules could
+be used for the &quot;endgame.&quot;  This is rather like the way people,
+and some computer programs, play chess: they have the openings memorized,
+and don't really have to start thinking until several moves have passed.
+This book-opening approach is particularly appealing to me because
+it would solve the problem of the anomalous sequence that made such
+trouble for me in rule 4.
+
+<P>A completely different approach would be to have no rules at all,
+but instead to write a <EM>learning</EM> program.  The program might
+recognize an immediate win (rule 1) and the threat of an immediate
+loss (rule 2), but otherwise it would move randomly and record the
+results.  If the computer loses a game, it would remember the last
+unforced choice it made in that game, and keep a record to try something
+else in the same situation next time.  The result, after many games,
+would be a complete list of all possible sequences, as I suggested
+first, but the difference is that you wouldn't have to do the figuring
+out of each sequence.  Such learning programs are frequently used
+in the field of artificial intelligence.
+
+<P>It is possible to combine different approaches.  A famous checkers-playing
+program written by Arthur Samuel had several general rules programmed
+in, like the ones in this tic-tac-toe program.  But instead of having
+the rules arranged in a particular priority sequence, the program
+was able to learn how much weight to give each rule, by seeing which
+rules tended to win the game and which tended to lose.
+
+<P>If you're tired of tic-tac-toe, another possibility would be to write
+a program that plays some other game according to a strategy.  Don't
+start with checkers or chess!  Many people have written programs in
+which the computer acts as dealer for a game of Blackjack; you could
+reverse the roles so that you deal the cards, and the computer tries
+to bet with a winning strategy.  Another source of ideas is Martin
+Gardner, author of many books of mathematical games.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v1ch5/v1ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch7/v1ch7.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<PRE>
+;; Overall orchestration
+
+to ttt
+local [me you position]
+draw.board
+init
+if equalp :me "x [meplay 5]
+forever [
+  if already.wonp :me [print [I win!] stop]
+  if tiedp [print [Tie game!] stop]
+  youplay getmove                         ;; ask person for move
+  if already.wonp :you [print [You win!] stop]
+  if tiedp [print [Tie game!] stop]
+  meplay pickmove make.triples            ;; compute program's move
+]
+end
+
+to make.triples
+output map "substitute.triple [123 456 789 147 258 369 159 357]
+end
+
+to substitute.triple :combination
+output map [item ? :position] :combination
+end
+
+to already.wonp :player
+output memberp (word :player :player :player) (make.triples)
+end
+
+to tiedp
+output not reduce "or map.se "numberp arraytolist :position
+end
+
+to youplay :square
+draw :you :square
+setitem :square :position :you
+end
+
+to meplay :square
+draw :me :square
+setitem :square :position :me
+end
+
+;; Initialization
+
+to draw.board
+splitscreen clearscreen hideturtle
+drawline [-20 -50] 0 120
+drawline [20 -50] 0 120
+drawline [-60 -10] 90 120
+drawline [-60 30] 90 120
+end
+
+to drawline :pos :head :len
+penup
+setpos :pos
+setheading :head
+pendown
+forward :len
+end
+
+to init
+make "position {1 2 3 4 5 6 7 8 9}
+print [Do you want to play first (X)]
+type [or second (O)? Type X or O:]
+choose
+print [For each move, type a digit 1-9.]
+end
+
+to choose
+local "side
+forever [
+  make "side readchar
+  pr :side
+  if equalp :side "x [choosex stop]
+  if equalp :side "o [chooseo stop]
+  type [Huh? Type X or O:]
+]
+end
+
+to chooseo
+make "me "x
+make "you "o
+end
+
+to choosex
+make "me "o
+make "you "x
+end
+
+;; Get opponent's moves
+
+to getmove
+local "square
+forever [
+  type [Your move:]
+  make "square readchar
+  print :square
+  if numberp :square ~
+     [if and (:square > 0) (:square < 10)
+         [if freep :square [output :square]]]
+  print [not a valid move.]
+]
+end
+
+to freep :square
+output numberp item :square :position
+end
+
+;; Compute program's moves
+
+to pickmove :triples
+local "try
+make "try find.win :me
+if not emptyp :try [output :try]
+make "try find.win :you
+if not emptyp :try [output :try]
+make "try find.fork
+if not emptyp :try [output :try]
+make "try find.advance
+if not emptyp :try [output :try]
+output find [memberp ? :position] [5 1 3 7 9 2 4 6 8]
+end
+
+to find.win :who
+output filter "numberp find "win.nowp :triples
+end
+
+to win.nowp :triple
+output equalp (filter [not numberp ?] :triple) (word :who :who)
+end
+
+to find.fork
+local "singles
+make "singles singles :me
+if emptyp :singles [output []]
+output repeated.number reduce "word :singles
+end
+
+to singles :who
+output filter [singlep ? :who] :triples
+end
+
+to singlep :triple :who
+output equalp (filter [not numberp ?] :triple) :who
+end
+
+to repeated.number :squares
+output find [memberp ? ?rest] filter "numberp :squares
+end
+
+to find.advance
+output best.move filter "numberp find [singlep ? :me] :triples
+end
+
+to best.move :my.single
+local "your.singles
+if emptyp :my.single [output []]
+make "your.singles singles :you
+if emptyp :your.singles [output first :my.single]
+ifelse (count filter [? = first :my.single]
+                     reduce "word :your.singles) > 1 ~
+       [output first :my.single] ~
+       [output last :my.single]
+end
+
+;; Drawing moves on screen
+
+to draw :who :square
+move :square
+ifelse :who = "x [drawx] [drawo]
+end
+
+to move :square
+penup
+setpos thing word "box :square
+end
+
+to drawo
+pendown
+arc 360 18
+end
+
+to drawx
+setheading 45
+pendown
+repeat 4 [forward 25.5 back 25.5 right 90]
+end
+
+make "box1 [-40 50]
+make "box2 [0 50]
+make "box3 [40 50]
+make "box4 [-40 10]
+make "box5 [0 10]
+make "box6 [40 10]
+make "box7 [-40 -30]
+make "box8 [0 -30]
+make "box9 [40 -30]
+</PRE>
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch5/v1ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch7/v1ch7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch7/recur1.html b/js/games/nluqo.github.io/~bh/v1ch7/recur1.html
new file mode 100644
index 0000000..e8a9147
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch7/recur1.html
@@ -0,0 +1,931 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 7: Introduction to Recursion</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Introduction to Recursion</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch6/v1ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch8/v1ch8.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+My goal in this chapter is to write a procedure named <CODE>downup</CODE>
+that behaves like this:
+
+<PRE>
+? <U>downup "hello</U>
+hello
+hell
+hel
+he
+h
+he
+hel
+hell
+hello
+? <U>downup "goodbye</U>
+goodbye
+goodby
+goodb
+good
+goo
+go
+g
+go
+goo
+good
+goodb
+goodby
+goodbye
+</PRE>
+
+<P>
+The programming techniques we've used so far in this book
+don't allow an elegant solution to this problem.  We'll use a
+new technique called <EM>recursion:</EM> writing a procedure that uses
+<EM>itself</EM> as a subprocedure.
+
+<P>
+We're going to solve this problem using recursion.  It turns out that the
+idea of recursion is both very powerful--we can solve a <EM>lot</EM> of
+problems using it--and rather tricky to understand.  That's why I'm going
+to explain recursion several different ways in the coming chapters.  Even
+after you understand one of them, you'll probably find that thinking about
+recursion from another point of view enriches your ability to use this idea.
+The explanation in this chapter is based on the <EM>combining method.</EM>
+
+<H2>Starting Small</H2>
+
+<P>
+My own favorite way to understand recursion is based on the general
+problem-solving strategy of solving a complicated problem by starting
+with a simpler version.  To solve the <CODE>downup</CODE> problem, I'll start
+by solving this simpler version: write a <CODE>downup</CODE> procedure that
+works only for a single-character input word.  (You can't get much
+simpler than that!)  Here's my solution:
+
+<PRE>
+to downup1 :word
+print :word
+end
+
+? <U>downup1 "j</U>
+j
+</PRE>
+
+<P>
+See how well it works?
+
+<H2>Building Up</H2>
+
+<P>
+Of course, <CODE>downup1</CODE> won't work at all if you give it an input
+longer than one character.  You may not think this was such a big
+step.  But bear with me.  Next I'll write a procedure that acts like
+<CODE>downup</CODE> when you give it a two-letter input word:
+
+<PRE>
+to downup2 :word
+print :word
+print butlast :word
+print :word
+end
+
+? <U>downup2 "it</U>
+it
+i
+it
+</PRE>
+
+<P>
+We could keep this up for longer and longer input words, but each procedure
+gets more and more complicated.  Here's <CODE>downup3</CODE>:
+
+<PRE>
+to downup3 :word
+print :word
+print butlast :word
+print butlast butlast :word
+print butlast :word
+print :word
+end
+</PRE>
+
+<P>
+&raquo; How many <CODE>print</CODE> instructions would I need to write <CODE>downup4</CODE>
+this way?  How many would I need for <CODE>downup20</CODE>?
+
+<P>
+Luckily there's an easier way.  Look at the result of invoking <CODE>downup3</CODE>:
+
+<PRE>
+? <U>downup3 "dot</U>
+dot
+<TABLE border="5" rules="none" frame="box" noshade><TR><TD>do
+<TR><TD>d
+<TR><TD>do</TABLE>dot
+</PRE>
+
+<P>
+The trick is to recognize that the boxed lines are what we'd get by invoking
+<CODE>downup2</CODE> with the word <CODE>do</CODE> as input.  So we can find
+the instructions in <CODE>downup3</CODE> that print those three lines and
+replace them with one instruction that calls <CODE>downup2</CODE>:
+
+<PRE>
+to downup3 :word
+print :word
+<U>downup2 butlast :word</U>
+print :word
+end
+</PRE>
+
+<P>
+You might have to think a moment to work out where the
+<CODE>butlast</CODE> came from, but consider
+that we're given the word <CODE>dot</CODE> and we
+want the word <CODE>do</CODE>.
+
+<P>
+Once we've had this idea, it's easy to extend it to longer words:
+
+<PRE>
+to downup4 :word
+print :word
+downup3 butlast :word
+print :word
+end
+
+to downup5 :word
+print :word
+downup4 butlast :word
+print :word
+end
+</PRE>
+
+<P>
+&raquo; Can you rewrite <CODE>downup2</CODE> so that it looks like these others?
+
+<P>
+&raquo; Before going on, make sure you really understand these procedures by
+answering these questions:  What happens if you use one of these numbered
+versions of <CODE>downup</CODE> with an input that is too long?  What if the input
+is too short?
+
+<H2>Generalizing the Pattern</H2>
+
+<P>
+We're now in good shape as long as we want to <CODE>downup</CODE> short
+words.  We can pick the right version of <CODE>downup</CODE> for the length
+of the word we have in mind:
+
+<PRE>
+? <U>downup5 "hello</U>
+hello
+hell
+hel
+he
+h
+he
+hel
+hell
+hello
+? <U>downup7 "goodbye</U>
+goodbye
+goodby
+goodb
+good
+goo
+go
+g
+go
+goo
+good
+goodb
+goodby
+goodbye
+</PRE>
+
+<P>
+Having to count the number of characters in the word is a
+little unaesthetic, but we could even have the computer do that for us:
+
+<PRE>
+to downup :word
+if equalp count :word 1 [downup1 :word]
+if equalp count :word 2 [downup2 :word]
+if equalp count :word 3 [downup3 :word]
+if equalp count :word 4 [downup4 :word]
+if equalp count :word 5 [downup5 :word]
+if equalp count :word 6 [downup6 :word]
+if equalp count :word 7 [downup7 :word]
+end
+</PRE>
+
+<P>
+There's only one problem.  What if we want to be able to say
+
+<PRE>
+downup "antidisestablishmentarianism
+</PRE>
+
+<P>
+You wouldn't want to have to type in separate versions of
+<CODE>downup</CODE> all the way up to <CODE>downup28</CODE>!
+
+<P>
+What I hope you're tempted to do is to take advantage of the
+similarity of all the numbered <CODE>downup</CODE> procedures by combining
+them into a single procedure that looks like this:
+
+<PRE>
+to downup :word
+print :word
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>
+(Remember that Logo's <CODE>to</CODE> command won't let you
+redefine <CODE>downup</CODE> if you've already typed in my earlier version
+with all the <CODE>if</CODE> instruction lines.  Before you can type in the
+new version, you have to <CODE>erase</CODE> the old one.)
+
+<P>
+Compare this version of <CODE>downup</CODE> with one of the numbered
+procedures like <CODE>downup5</CODE>.  Do you see that this combined version
+should work just as well, if all the numbered
+<CODE>downup</CODE> procedures are identical except for the numbers in the
+procedure names?
+Convince yourself that that makes sense.
+
+<P>
+&raquo; Okay, now try it.
+
+<H2>What Went Wrong?</H2>
+
+<P>
+You probably saw something like this:
+
+<PRE>
+? <U>downup "hello</U>
+hello
+hell
+hel
+he
+h
+
+butlast doesn't like  as input in downup
+</PRE>
+
+<P>
+There's nothing wrong with the reasoning I used in the last section.
+If all the numbered <CODE>downup</CODE> procedures are identical except for
+the numbers, it should work to replace them all with a single
+procedure following the same pattern.
+
+<P>
+The trouble is that the numbered <CODE>downup</CODE> procedures
+<EM>aren't</EM> quite
+all identical.  The exception is <CODE>downup1</CODE>.  If it
+were like the others, it would look like this:
+
+<PRE>
+to downup1 :word
+print :word
+<U>downup0 butlast :word</U>
+<U>print :word</U>
+end
+</PRE>
+
+<P>
+Review the way the numbered <CODE>downup</CODE>s work to make sure
+you understand why <CODE>downup1</CODE> is different.  Here's what happens
+when you invoke one of the numbered versions:
+
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch7/downup.gif" ALT="<P>figure: downup"></CENTER>
+
+<P>
+In this chart, instructions within a particular procedure
+are indented the same amount.  For example, the lines
+<CODE>print "hello</CODE> and
+<CODE>downup4 "hell</CODE> are part of <CODE>downup5</CODE>, as is
+the line <CODE>print "hello</CODE> at the very end of the chart.  The lines
+in between are indented more because they're part of <CODE>downup4</CODE>
+and its subprocedures.
+
+<P>
+(By the way, the lines in the chart don't show actual instructions in
+the procedure definitions.  Otherwise all the <CODE>print</CODE> lines would
+say <CODE>print :word</CODE> instead of showing actual words.  In the chart
+I've already evaluated the inputs to the commands.)
+
+<P>
+The point of the chart is that <CODE>downup1</CODE> has to be special because
+it marks the end of the &quot;down&quot; part of the problem and the
+beginning of the &quot;up&quot; part.  <CODE>downup1</CODE> doesn't invoke a
+lower-numbered <CODE>downup</CODE> subprocedure because there's no smaller
+piece of the word to print.
+
+<P>
+&raquo; Okay, Logo knows when to stop the &quot;down&quot; part of the program
+because <CODE>downup1</CODE> is different from the other procedures.
+Question: How does Logo know when to stop the &quot;up&quot; part of the
+program?  Why doesn't <CODE>downup5</CODE>, in this example, have to be
+written differently from the others?
+
+<H2>The Stop Rule</H2>
+
+<P>
+Our attempt to write a completely general <CODE>downup</CODE> procedure has
+run into trouble because we have to distinguish two cases: the special
+case in which the input word contains only one character and the
+general case for longer input words.  We can use <CODE>ifelse</CODE> to
+distinguish the two cases:
+
+<PRE>
+to downup :word
+ifelse equalp count :word 1 [downup.one :word] [downup.many :word]
+end
+
+to downup.one :word
+print :word
+end
+
+to downup.many :word
+print :word
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>
+You'll find that this version of the <CODE>downup</CODE> program actually
+works correctly.
+Subprocedure <CODE>downup.one</CODE> is exactly like the
+old <CODE>downup1</CODE>, while <CODE>downup.many</CODE> is like the version
+of <CODE>downup</CODE> that didn't work.
+
+<P>
+It's possible to use the same general idea, however--distinguishing
+the special case of a one-letter word--without having
+to set up this three-procedure structure.  Instead we can take
+advantage of the fact that <CODE>downup.one</CODE>'s single instruction is
+the same as the first instruction of <CODE>downup.many</CODE>; we can use a
+single procedure that <CODE>stop</CODE>s early if appropriate.
+
+<PRE>
+to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>
+The <CODE>if</CODE> instruction in this final version of
+<CODE>downup</CODE> is called a <EM>stop rule.</EM>
+
+<P>
+<CODE>Downup</CODE> illustrates the usual pattern of a recursive procedure.
+There are three kinds of instructions within its definition: (1) There
+are the ordinary instructions that carry out the work of the
+procedure for a particular value of the input, in this case the
+<CODE>print</CODE> instructions.  (2) There is at least one
+<EM>recursive call,</EM>
+an instruction that invokes the same procedure with a smaller input.
+(3) There is a stop rule, which prevents the recursive invocation when
+the input is too small.
+
+<P>
+It's important to understand that the stop rule always comes
+<EM>before</EM> the recursive call or calls.  One of the common mistakes
+made by programmers who are just learning about recursion is to think
+this way: &quot;The stop rule <EM>ends</EM> the program, so it belongs at the
+<EM>end</EM> of the procedure.&quot; The right way to think about it is
+that the purpose of the stop rule is to stop the innermost invocation
+of the procedure <EM>before</EM> it has a chance to invoke itself
+recursively, so the stop rule must come <EM>before</EM> the recursive call.
+
+<H2>Local Variables</H2>
+
+<P>
+When you're thinking about a recursive procedure, it's especially
+important to remember that each invocation of a procedure has its own
+local variables.  It's possible to get confused about this
+because, of course, if a procedure invokes itself as a subprocedure,
+each invocation uses the same <EM>names</EM> for local variables.  For
+example, each invocation of <CODE>downup</CODE> has a local variable (its
+input) named <CODE>word</CODE>.  But each invocation has a
+<EM>separate</EM> input variable.
+
+<P>
+It's hard to talk about different invocations in the abstract.  So
+let's look back at the version of the program in which each invocation
+had a different procedure
+name: <CODE>downup1</CODE>, <CODE>downup2</CODE>, and so on.
+
+<P>
+If you type the instruction
+
+<PRE>
+downup5 "hello
+</PRE>
+
+<P>
+the procedure <CODE>downup5</CODE> is invoked, with the word
+<CODE>hello</CODE> as
+its input.  <CODE>Downup5</CODE> has a local variable named
+<CODE>word</CODE>, which
+contains <CODE>hello</CODE> as its value.  The first instruction
+in <CODE>downup5</CODE> is
+
+<PRE>
+print :word
+</PRE>
+
+<P>
+Since <CODE>:word</CODE> is <CODE>hello</CODE>, this instruction prints
+<CODE>hello</CODE>.  The next instruction is
+
+<PRE>
+downup4 butlast :word
+</PRE>
+
+<P>
+This instruction invokes procedure <CODE>downup4</CODE> with the
+word <CODE>hell</CODE>
+(the <CODE>butlast</CODE> of <CODE>hello</CODE>) as input.
+<CODE>Downup4</CODE> has a local
+variable that is also named <CODE>word</CODE>.  The
+value of <EM>that</EM> variable is the word <CODE>hell</CODE>.
+
+<P>
+At this point there are two separate variables, both named
+<CODE>word</CODE>.  <CODE>Downup5</CODE>'s <CODE>word</CODE> contains
+<CODE>hello</CODE>; <CODE>downup4</CODE>'s <CODE>word</CODE> contains
+<CODE>hell</CODE>.  I won't go through all the details of how
+<CODE>downup4</CODE> invokes <CODE>downup3</CODE> and so on.  But eventually
+<CODE>downup4</CODE> finishes its task, and <CODE>downup5</CODE> continues
+with its final instruction, which is
+
+<PRE>
+print :word
+</PRE>
+
+<P>
+Even though different values have been assigned to variables named
+<CODE>word</CODE> in the interim, <EM>this</EM> variable named
+<CODE>word</CODE> (the one that is local to <CODE>downup5</CODE>) still has
+its original value, <CODE>hello</CODE>.  So that's what's printed.
+
+<P>
+In the recursive version of the program exactly the same thing
+happens about local variables.  It's a little harder to describe,
+because all the procedure invocations are invocations of the same
+procedure, <CODE>downup</CODE>.  So I can't say things like &quot;the variable
+<CODE>word</CODE> that belongs to <CODE>downup4</CODE>&quot;; instead, you have to
+think about &quot;the variable named <CODE>word</CODE> that belongs to the
+second invocation of <CODE>downup</CODE>.&quot; But even though there is only
+one <EM>procedure</EM> involved, there are still five procedure
+<EM>invocations,</EM> each with its own local variable named <CODE>word</CODE>.
+
+<H2>More Examples</H2>
+
+<P>
+&raquo; Before I go on to show you another example of a recursive procedure,
+you might try to write <CODE>down</CODE> and <CODE>up</CODE>, which should work like
+this:
+
+<PRE>
+? <U>down "hello</U>
+hello
+hell
+hel
+he
+h
+? <U>up "hello</U>
+h
+he
+hel
+hell
+hello
+</PRE>
+
+<P>
+As a start, notice that there are two <CODE>print</CODE>
+instructions in <CODE>downup</CODE> and that one of them does the &quot;down&quot;
+half and the other does the &quot;up&quot; half.  But you'll find that just
+eliminating one of the <CODE>print</CODE>s for <CODE>down</CODE> and the other for
+<CODE>up</CODE> doesn't <EM>quite</EM> work.
+
+<P>
+After you've finished <CODE>down</CODE> and <CODE>up</CODE>, come back here for a
+discussion of a similar project, which I call <CODE>inout</CODE>:
+
+<PRE>
+? <U>inout "hello</U>
+hello
+ ello
+  llo
+   lo
+    o
+   lo
+  llo
+ ello
+hello
+</PRE>
+
+<P>
+At first glance <CODE>inout</CODE> looks just like <CODE>downup</CODE>,
+except that it uses the <CODE>butfirst</CODE> of its input instead of the
+<CODE>butlast</CODE>.  <CODE>Inout</CODE> is somewhat more complicated than
+<CODE>downup</CODE>, however, because it has to print spaces before some of the words
+in order to line up the rightmost letters.  <CODE>Downup</CODE> lined up the
+leftmost letters, which is easy.
+
+<P>
+Suppose we start, as we did for <CODE>downup</CODE>, with a version that only
+works for single-letter words:
+
+<PRE>
+to inout1 :word
+print :word
+end
+</PRE>
+
+<P>
+But we can't quite use <CODE>inout1</CODE> as a subprocedure of
+<CODE>inout2</CODE>, as we did in the <CODE>downup</CODE> problem.  Instead we need
+a different version of <CODE>inout1</CODE>, which types a space before its
+input:
+
+<PRE>
+to inout2 :word
+print :word
+inout2.1 butfirst :word
+print :word
+end
+
+to inout2.1 :word
+type "| |                  ; a word containing a space
+print :word
+end
+</PRE>
+
+<P>
+<CODE>Type</CODE> is a command, which requires one input.  The
+input can be any datum.  <CODE>Type</CODE> prints its input, like
+<CODE>print</CODE>, but does not move the cursor to a new line afterward.  The
+cursor remains right after the printed datum, so the next <CODE>print</CODE>
+or <CODE>type</CODE> command will continue on the same line.
+
+<P>
+We need another specific case or two before a general pattern will
+become apparent.  Here is the version for three-letter words:
+
+<PRE>
+to inout3 :word
+print :word
+inout3.2 butfirst :word
+print :word
+end
+
+to inout3.2 :word
+type "| |
+print :word
+inout3.1 butfirst :word
+type "| |
+print :word
+end
+
+to inout3.1 :word
+repeat 2 [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+Convince yourself that each of these procedures types the
+right number of spaces before its input word.
+
+<P>
+Here is one final example, the version for four-letter words:
+
+<PRE>
+to inout4 :word
+print :word
+inout4.3 butfirst :word
+print :word
+end
+
+to inout4.3 :word
+type "| |
+print :word
+inout4.2 butfirst :word
+type "| |
+print :word
+end
+
+to inout4.2 :word
+repeat 2 [type "| |]
+print :word
+inout4.1 butfirst :word
+repeat 2 [type "| |]
+print :word
+end
+
+to inout4.1 :word
+repeat 3 [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+&raquo; Try this out and try writing <CODE>inout5</CODE> along the same lines.
+
+<P>
+How can we find a common pattern that will combine the elements of
+all these procedures?  It will have to look something like this:
+
+<PRE>
+to inout :word
+repeat <U>something</U> [type "| |]
+print :word
+if <U>something</U> [stop]
+inout butfirst :word
+repeat <U>something</U> [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+This is not a finished procedure because we haven't figured
+out how to fill the blanks.  First I should remark that the stop rule
+is where it is, after the first <CODE>print</CODE>, because that's how far the
+innermost procedures (<CODE>inout2.1</CODE>, <CODE>inout3.1</CODE>, and
+<CODE>inout4.1</CODE>) get.  They type some spaces, print the input word, and
+that's all.
+
+<P>
+Another thing to remark is that the first input to the <CODE>repeat</CODE>
+commands in this general procedure will sometimes be zero, because the
+outermost procedures (<CODE>inout2</CODE>, <CODE>inout3</CODE>, and
+<CODE>inout4</CODE>) don't type any spaces at all.  Each subprocedure types
+one more space than its superprocedure.  For example, <CODE>inout4</CODE>
+types no spaces.  Its subprocedure <CODE>inout4.3</CODE> types one space.
+<CODE>inout4.3</CODE>'s subprocedure <CODE>inout4.2</CODE> types two
+spaces.  Finally, <CODE>inout4.2</CODE>'s subprocedure <CODE>inout4.1</CODE>
+types three spaces.
+
+<P>
+In order to vary the number of spaces in this way, the solution is to
+use another input that will have this number as its value.  We can
+call it <CODE>spaces</CODE>.  The procedure will then look like this:
+
+<PRE>
+to inout :word :spaces
+repeat :spaces [type "| |]
+print :word
+if equalp count :word 1 [stop]
+inout (butfirst :word) (:spaces+1)
+repeat :spaces [type "| |]
+print :word
+end
+
+? <U>inout "hello 0</U>
+hello
+ ello
+  llo
+   lo
+    o
+   lo
+  llo
+ ello
+hello
+</PRE>
+
+<P>
+Notice that, when we use <CODE>inout</CODE>, we have to give it a
+zero as its second input.  We could eliminate this annoyance by
+writing a new <CODE>inout</CODE> that invokes this one as a subprocedure:
+
+<PRE>
+to inout :word
+inout.sub :word 0
+end
+
+to inout.sub :word :spaces
+repeat :spaces [type "| |]
+print :word
+if equalp count :word 1 [stop]
+inout.sub (butfirst :word) (:spaces+1)
+repeat :spaces [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+(The easiest way to make this change is to edit <CODE>inout</CODE>
+with the Logo editor and change its title line and its recursive call
+so that its name is <CODE>inout.sub</CODE>.  Then, still in the editor,
+type in the new superprocedure <CODE>inout</CODE>.  When you leave the
+editor, both procedures will get their new definitions.)
+
+<P>
+This program structure, with a short superprocedure and a recursive
+subprocedure, is very common.  The superprocedure's only job is to provide
+the initial values for some of the subprocedure's inputs, so it's sometimes
+called an <EM>initialization procedure.</EM> In this program
+<CODE>inout</CODE> is an initialization procedure for <CODE>inout.sub</CODE>.
+
+<P>
+By the way, the parentheses in the recursive call aren't really
+needed; I just used them to make it more obvious which input is which.
+
+<H2>Other Stop Rules</H2>
+
+<P>
+The examples I've shown so far use this stop rule:
+
+<PRE>
+if equalp count :word 1 [stop]
+</PRE>
+
+<P>
+Perhaps you wrote your <CODE>down</CODE> procedure the same way:
+
+<PRE>
+to down :word
+print :word
+if equalp count :word 1 [stop]
+down butlast :word
+end
+</PRE>
+
+<P>
+Here is another way to write <CODE>down</CODE>, which has the same
+effect.  But this is a more commonly used style:
+
+<PRE>
+to down :word
+if emptyp :word [stop]
+print :word
+down butlast :word
+end
+</PRE>
+
+<P>
+This version of <CODE>down</CODE> has the stop rule as its first
+instruction.  After that comes the instructions that carry out the
+specific work of the procedure, in this case the <CODE>print</CODE>
+instruction.  The recursive call comes as the last instruction.
+
+<P>
+A procedure in which the recursive call is the last instruction is
+called <EM>tail recursive.</EM>  We'll have more to say later about the
+meaning of tail recursion.  (Actually, to be precise, I should have
+said that a <EM>command</EM> in which the recursive call is the last
+instruction is tail recursive.  What constitutes a tail recursive
+operation is a little tricker, and so far we haven't talked about
+recursive operations at all.)
+
+<P>
+Here's another example:
+
+<PRE>
+to countdown :number
+if equalp :number 0 [print "Blastoff! stop]
+print :number
+countdown :number-1
+end
+
+? <U>countdown 10</U>
+10
+9
+8
+7
+6
+5
+4
+3
+2
+1
+Blastoff!
+</PRE>
+
+<P>
+In this case, instead of a word that gets smaller by
+<CODE>butfirst</CODE>ing or <CODE>butlast</CODE>ing it, the input is a
+number from which 1 is subtracted for each recursive invocation.  This
+example also shows how some special action (the <CODE>print
+"Blastoff!</CODE> instruction) can be taken in the innermost invocation of
+the procedure.
+
+<P>
+&raquo; Here are some ideas for recursive programs you can write.  In each
+case I'll show an example or two of what the program should do.
+Start with <CODE>one.per.line</CODE>, a command with one input.  If the input
+is a word, the procedure should print each letter of the word on a
+separate line.  If the input is a list, the procedure should print
+each member of the list on a separate line:
+
+<PRE>
+? <U>one.per.line "hello</U>
+h
+e
+l
+l
+o
+? <U>one.per.line [the rain in spain]</U>
+the
+rain
+in
+spain
+</PRE>
+
+<P>
+(You already know how to do this without recursion, using
+<CODE>foreach</CODE> instead.  Many, although not all, recursive problems
+can also be solved using higher order functions.  You might enjoy this
+non-obvious example:
+
+<PRE>
+to down :word
+ignore cascade (count :word) [print ? butlast ?] :word
+end
+</PRE>
+
+<P>
+While you're learning about recursion, though, don't use higher
+order functions.  Once you're comfortable with both techniques you can
+choose which to use in a particular situation.)
+
+<P>
+&raquo; As an example in which an initialization procedure will be helpful,
+try <CODE>triangle</CODE>, a command that takes a word as its single input.
+It prints the word repeatedly on the same line, as many times as its
+length.  Then it prints a second line with one fewer repetition, and
+so on until it prints the word just once:
+
+<PRE>
+? <U>triangle "frog</U>
+frog frog frog frog
+frog frog frog
+frog frog
+frog
+</PRE>
+
+<P>
+&raquo; A more ambitious project is <CODE>diamond</CODE>, which takes as its input a
+word with an odd number of letters.  It displays the word in a diamond
+pattern, like this:
+
+<PRE>
+? <U>diamond "program</U>
+   g
+  ogr
+ rogra
+program
+ rogra
+  ogr
+   g
+</PRE>
+
+<P>
+(Hint: Write two procedures <CODE>diamond.top</CODE> and
+<CODE>diamond.bottom</CODE> for the growing and shrinking halves of the display.
+As in <CODE>inout</CODE>, you'll need an input to count the number of spaces
+by which to indent each line.) Can you write <CODE>diamond</CODE> so that it
+does something sensible for an input word with an even number of
+letters?
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch6/v1ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch8/v1ch8.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch7/v1ch7.html b/js/games/nluqo.github.io/~bh/v1ch7/v1ch7.html
new file mode 100644
index 0000000..e8a9147
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch7/v1ch7.html
@@ -0,0 +1,931 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 7: Introduction to Recursion</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Introduction to Recursion</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch6/v1ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch8/v1ch8.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+My goal in this chapter is to write a procedure named <CODE>downup</CODE>
+that behaves like this:
+
+<PRE>
+? <U>downup "hello</U>
+hello
+hell
+hel
+he
+h
+he
+hel
+hell
+hello
+? <U>downup "goodbye</U>
+goodbye
+goodby
+goodb
+good
+goo
+go
+g
+go
+goo
+good
+goodb
+goodby
+goodbye
+</PRE>
+
+<P>
+The programming techniques we've used so far in this book
+don't allow an elegant solution to this problem.  We'll use a
+new technique called <EM>recursion:</EM> writing a procedure that uses
+<EM>itself</EM> as a subprocedure.
+
+<P>
+We're going to solve this problem using recursion.  It turns out that the
+idea of recursion is both very powerful--we can solve a <EM>lot</EM> of
+problems using it--and rather tricky to understand.  That's why I'm going
+to explain recursion several different ways in the coming chapters.  Even
+after you understand one of them, you'll probably find that thinking about
+recursion from another point of view enriches your ability to use this idea.
+The explanation in this chapter is based on the <EM>combining method.</EM>
+
+<H2>Starting Small</H2>
+
+<P>
+My own favorite way to understand recursion is based on the general
+problem-solving strategy of solving a complicated problem by starting
+with a simpler version.  To solve the <CODE>downup</CODE> problem, I'll start
+by solving this simpler version: write a <CODE>downup</CODE> procedure that
+works only for a single-character input word.  (You can't get much
+simpler than that!)  Here's my solution:
+
+<PRE>
+to downup1 :word
+print :word
+end
+
+? <U>downup1 "j</U>
+j
+</PRE>
+
+<P>
+See how well it works?
+
+<H2>Building Up</H2>
+
+<P>
+Of course, <CODE>downup1</CODE> won't work at all if you give it an input
+longer than one character.  You may not think this was such a big
+step.  But bear with me.  Next I'll write a procedure that acts like
+<CODE>downup</CODE> when you give it a two-letter input word:
+
+<PRE>
+to downup2 :word
+print :word
+print butlast :word
+print :word
+end
+
+? <U>downup2 "it</U>
+it
+i
+it
+</PRE>
+
+<P>
+We could keep this up for longer and longer input words, but each procedure
+gets more and more complicated.  Here's <CODE>downup3</CODE>:
+
+<PRE>
+to downup3 :word
+print :word
+print butlast :word
+print butlast butlast :word
+print butlast :word
+print :word
+end
+</PRE>
+
+<P>
+&raquo; How many <CODE>print</CODE> instructions would I need to write <CODE>downup4</CODE>
+this way?  How many would I need for <CODE>downup20</CODE>?
+
+<P>
+Luckily there's an easier way.  Look at the result of invoking <CODE>downup3</CODE>:
+
+<PRE>
+? <U>downup3 "dot</U>
+dot
+<TABLE border="5" rules="none" frame="box" noshade><TR><TD>do
+<TR><TD>d
+<TR><TD>do</TABLE>dot
+</PRE>
+
+<P>
+The trick is to recognize that the boxed lines are what we'd get by invoking
+<CODE>downup2</CODE> with the word <CODE>do</CODE> as input.  So we can find
+the instructions in <CODE>downup3</CODE> that print those three lines and
+replace them with one instruction that calls <CODE>downup2</CODE>:
+
+<PRE>
+to downup3 :word
+print :word
+<U>downup2 butlast :word</U>
+print :word
+end
+</PRE>
+
+<P>
+You might have to think a moment to work out where the
+<CODE>butlast</CODE> came from, but consider
+that we're given the word <CODE>dot</CODE> and we
+want the word <CODE>do</CODE>.
+
+<P>
+Once we've had this idea, it's easy to extend it to longer words:
+
+<PRE>
+to downup4 :word
+print :word
+downup3 butlast :word
+print :word
+end
+
+to downup5 :word
+print :word
+downup4 butlast :word
+print :word
+end
+</PRE>
+
+<P>
+&raquo; Can you rewrite <CODE>downup2</CODE> so that it looks like these others?
+
+<P>
+&raquo; Before going on, make sure you really understand these procedures by
+answering these questions:  What happens if you use one of these numbered
+versions of <CODE>downup</CODE> with an input that is too long?  What if the input
+is too short?
+
+<H2>Generalizing the Pattern</H2>
+
+<P>
+We're now in good shape as long as we want to <CODE>downup</CODE> short
+words.  We can pick the right version of <CODE>downup</CODE> for the length
+of the word we have in mind:
+
+<PRE>
+? <U>downup5 "hello</U>
+hello
+hell
+hel
+he
+h
+he
+hel
+hell
+hello
+? <U>downup7 "goodbye</U>
+goodbye
+goodby
+goodb
+good
+goo
+go
+g
+go
+goo
+good
+goodb
+goodby
+goodbye
+</PRE>
+
+<P>
+Having to count the number of characters in the word is a
+little unaesthetic, but we could even have the computer do that for us:
+
+<PRE>
+to downup :word
+if equalp count :word 1 [downup1 :word]
+if equalp count :word 2 [downup2 :word]
+if equalp count :word 3 [downup3 :word]
+if equalp count :word 4 [downup4 :word]
+if equalp count :word 5 [downup5 :word]
+if equalp count :word 6 [downup6 :word]
+if equalp count :word 7 [downup7 :word]
+end
+</PRE>
+
+<P>
+There's only one problem.  What if we want to be able to say
+
+<PRE>
+downup "antidisestablishmentarianism
+</PRE>
+
+<P>
+You wouldn't want to have to type in separate versions of
+<CODE>downup</CODE> all the way up to <CODE>downup28</CODE>!
+
+<P>
+What I hope you're tempted to do is to take advantage of the
+similarity of all the numbered <CODE>downup</CODE> procedures by combining
+them into a single procedure that looks like this:
+
+<PRE>
+to downup :word
+print :word
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>
+(Remember that Logo's <CODE>to</CODE> command won't let you
+redefine <CODE>downup</CODE> if you've already typed in my earlier version
+with all the <CODE>if</CODE> instruction lines.  Before you can type in the
+new version, you have to <CODE>erase</CODE> the old one.)
+
+<P>
+Compare this version of <CODE>downup</CODE> with one of the numbered
+procedures like <CODE>downup5</CODE>.  Do you see that this combined version
+should work just as well, if all the numbered
+<CODE>downup</CODE> procedures are identical except for the numbers in the
+procedure names?
+Convince yourself that that makes sense.
+
+<P>
+&raquo; Okay, now try it.
+
+<H2>What Went Wrong?</H2>
+
+<P>
+You probably saw something like this:
+
+<PRE>
+? <U>downup "hello</U>
+hello
+hell
+hel
+he
+h
+
+butlast doesn't like  as input in downup
+</PRE>
+
+<P>
+There's nothing wrong with the reasoning I used in the last section.
+If all the numbered <CODE>downup</CODE> procedures are identical except for
+the numbers, it should work to replace them all with a single
+procedure following the same pattern.
+
+<P>
+The trouble is that the numbered <CODE>downup</CODE> procedures
+<EM>aren't</EM> quite
+all identical.  The exception is <CODE>downup1</CODE>.  If it
+were like the others, it would look like this:
+
+<PRE>
+to downup1 :word
+print :word
+<U>downup0 butlast :word</U>
+<U>print :word</U>
+end
+</PRE>
+
+<P>
+Review the way the numbered <CODE>downup</CODE>s work to make sure
+you understand why <CODE>downup1</CODE> is different.  Here's what happens
+when you invoke one of the numbered versions:
+
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch7/downup.gif" ALT="<P>figure: downup"></CENTER>
+
+<P>
+In this chart, instructions within a particular procedure
+are indented the same amount.  For example, the lines
+<CODE>print "hello</CODE> and
+<CODE>downup4 "hell</CODE> are part of <CODE>downup5</CODE>, as is
+the line <CODE>print "hello</CODE> at the very end of the chart.  The lines
+in between are indented more because they're part of <CODE>downup4</CODE>
+and its subprocedures.
+
+<P>
+(By the way, the lines in the chart don't show actual instructions in
+the procedure definitions.  Otherwise all the <CODE>print</CODE> lines would
+say <CODE>print :word</CODE> instead of showing actual words.  In the chart
+I've already evaluated the inputs to the commands.)
+
+<P>
+The point of the chart is that <CODE>downup1</CODE> has to be special because
+it marks the end of the &quot;down&quot; part of the problem and the
+beginning of the &quot;up&quot; part.  <CODE>downup1</CODE> doesn't invoke a
+lower-numbered <CODE>downup</CODE> subprocedure because there's no smaller
+piece of the word to print.
+
+<P>
+&raquo; Okay, Logo knows when to stop the &quot;down&quot; part of the program
+because <CODE>downup1</CODE> is different from the other procedures.
+Question: How does Logo know when to stop the &quot;up&quot; part of the
+program?  Why doesn't <CODE>downup5</CODE>, in this example, have to be
+written differently from the others?
+
+<H2>The Stop Rule</H2>
+
+<P>
+Our attempt to write a completely general <CODE>downup</CODE> procedure has
+run into trouble because we have to distinguish two cases: the special
+case in which the input word contains only one character and the
+general case for longer input words.  We can use <CODE>ifelse</CODE> to
+distinguish the two cases:
+
+<PRE>
+to downup :word
+ifelse equalp count :word 1 [downup.one :word] [downup.many :word]
+end
+
+to downup.one :word
+print :word
+end
+
+to downup.many :word
+print :word
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>
+You'll find that this version of the <CODE>downup</CODE> program actually
+works correctly.
+Subprocedure <CODE>downup.one</CODE> is exactly like the
+old <CODE>downup1</CODE>, while <CODE>downup.many</CODE> is like the version
+of <CODE>downup</CODE> that didn't work.
+
+<P>
+It's possible to use the same general idea, however--distinguishing
+the special case of a one-letter word--without having
+to set up this three-procedure structure.  Instead we can take
+advantage of the fact that <CODE>downup.one</CODE>'s single instruction is
+the same as the first instruction of <CODE>downup.many</CODE>; we can use a
+single procedure that <CODE>stop</CODE>s early if appropriate.
+
+<PRE>
+to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>
+The <CODE>if</CODE> instruction in this final version of
+<CODE>downup</CODE> is called a <EM>stop rule.</EM>
+
+<P>
+<CODE>Downup</CODE> illustrates the usual pattern of a recursive procedure.
+There are three kinds of instructions within its definition: (1) There
+are the ordinary instructions that carry out the work of the
+procedure for a particular value of the input, in this case the
+<CODE>print</CODE> instructions.  (2) There is at least one
+<EM>recursive call,</EM>
+an instruction that invokes the same procedure with a smaller input.
+(3) There is a stop rule, which prevents the recursive invocation when
+the input is too small.
+
+<P>
+It's important to understand that the stop rule always comes
+<EM>before</EM> the recursive call or calls.  One of the common mistakes
+made by programmers who are just learning about recursion is to think
+this way: &quot;The stop rule <EM>ends</EM> the program, so it belongs at the
+<EM>end</EM> of the procedure.&quot; The right way to think about it is
+that the purpose of the stop rule is to stop the innermost invocation
+of the procedure <EM>before</EM> it has a chance to invoke itself
+recursively, so the stop rule must come <EM>before</EM> the recursive call.
+
+<H2>Local Variables</H2>
+
+<P>
+When you're thinking about a recursive procedure, it's especially
+important to remember that each invocation of a procedure has its own
+local variables.  It's possible to get confused about this
+because, of course, if a procedure invokes itself as a subprocedure,
+each invocation uses the same <EM>names</EM> for local variables.  For
+example, each invocation of <CODE>downup</CODE> has a local variable (its
+input) named <CODE>word</CODE>.  But each invocation has a
+<EM>separate</EM> input variable.
+
+<P>
+It's hard to talk about different invocations in the abstract.  So
+let's look back at the version of the program in which each invocation
+had a different procedure
+name: <CODE>downup1</CODE>, <CODE>downup2</CODE>, and so on.
+
+<P>
+If you type the instruction
+
+<PRE>
+downup5 "hello
+</PRE>
+
+<P>
+the procedure <CODE>downup5</CODE> is invoked, with the word
+<CODE>hello</CODE> as
+its input.  <CODE>Downup5</CODE> has a local variable named
+<CODE>word</CODE>, which
+contains <CODE>hello</CODE> as its value.  The first instruction
+in <CODE>downup5</CODE> is
+
+<PRE>
+print :word
+</PRE>
+
+<P>
+Since <CODE>:word</CODE> is <CODE>hello</CODE>, this instruction prints
+<CODE>hello</CODE>.  The next instruction is
+
+<PRE>
+downup4 butlast :word
+</PRE>
+
+<P>
+This instruction invokes procedure <CODE>downup4</CODE> with the
+word <CODE>hell</CODE>
+(the <CODE>butlast</CODE> of <CODE>hello</CODE>) as input.
+<CODE>Downup4</CODE> has a local
+variable that is also named <CODE>word</CODE>.  The
+value of <EM>that</EM> variable is the word <CODE>hell</CODE>.
+
+<P>
+At this point there are two separate variables, both named
+<CODE>word</CODE>.  <CODE>Downup5</CODE>'s <CODE>word</CODE> contains
+<CODE>hello</CODE>; <CODE>downup4</CODE>'s <CODE>word</CODE> contains
+<CODE>hell</CODE>.  I won't go through all the details of how
+<CODE>downup4</CODE> invokes <CODE>downup3</CODE> and so on.  But eventually
+<CODE>downup4</CODE> finishes its task, and <CODE>downup5</CODE> continues
+with its final instruction, which is
+
+<PRE>
+print :word
+</PRE>
+
+<P>
+Even though different values have been assigned to variables named
+<CODE>word</CODE> in the interim, <EM>this</EM> variable named
+<CODE>word</CODE> (the one that is local to <CODE>downup5</CODE>) still has
+its original value, <CODE>hello</CODE>.  So that's what's printed.
+
+<P>
+In the recursive version of the program exactly the same thing
+happens about local variables.  It's a little harder to describe,
+because all the procedure invocations are invocations of the same
+procedure, <CODE>downup</CODE>.  So I can't say things like &quot;the variable
+<CODE>word</CODE> that belongs to <CODE>downup4</CODE>&quot;; instead, you have to
+think about &quot;the variable named <CODE>word</CODE> that belongs to the
+second invocation of <CODE>downup</CODE>.&quot; But even though there is only
+one <EM>procedure</EM> involved, there are still five procedure
+<EM>invocations,</EM> each with its own local variable named <CODE>word</CODE>.
+
+<H2>More Examples</H2>
+
+<P>
+&raquo; Before I go on to show you another example of a recursive procedure,
+you might try to write <CODE>down</CODE> and <CODE>up</CODE>, which should work like
+this:
+
+<PRE>
+? <U>down "hello</U>
+hello
+hell
+hel
+he
+h
+? <U>up "hello</U>
+h
+he
+hel
+hell
+hello
+</PRE>
+
+<P>
+As a start, notice that there are two <CODE>print</CODE>
+instructions in <CODE>downup</CODE> and that one of them does the &quot;down&quot;
+half and the other does the &quot;up&quot; half.  But you'll find that just
+eliminating one of the <CODE>print</CODE>s for <CODE>down</CODE> and the other for
+<CODE>up</CODE> doesn't <EM>quite</EM> work.
+
+<P>
+After you've finished <CODE>down</CODE> and <CODE>up</CODE>, come back here for a
+discussion of a similar project, which I call <CODE>inout</CODE>:
+
+<PRE>
+? <U>inout "hello</U>
+hello
+ ello
+  llo
+   lo
+    o
+   lo
+  llo
+ ello
+hello
+</PRE>
+
+<P>
+At first glance <CODE>inout</CODE> looks just like <CODE>downup</CODE>,
+except that it uses the <CODE>butfirst</CODE> of its input instead of the
+<CODE>butlast</CODE>.  <CODE>Inout</CODE> is somewhat more complicated than
+<CODE>downup</CODE>, however, because it has to print spaces before some of the words
+in order to line up the rightmost letters.  <CODE>Downup</CODE> lined up the
+leftmost letters, which is easy.
+
+<P>
+Suppose we start, as we did for <CODE>downup</CODE>, with a version that only
+works for single-letter words:
+
+<PRE>
+to inout1 :word
+print :word
+end
+</PRE>
+
+<P>
+But we can't quite use <CODE>inout1</CODE> as a subprocedure of
+<CODE>inout2</CODE>, as we did in the <CODE>downup</CODE> problem.  Instead we need
+a different version of <CODE>inout1</CODE>, which types a space before its
+input:
+
+<PRE>
+to inout2 :word
+print :word
+inout2.1 butfirst :word
+print :word
+end
+
+to inout2.1 :word
+type "| |                  ; a word containing a space
+print :word
+end
+</PRE>
+
+<P>
+<CODE>Type</CODE> is a command, which requires one input.  The
+input can be any datum.  <CODE>Type</CODE> prints its input, like
+<CODE>print</CODE>, but does not move the cursor to a new line afterward.  The
+cursor remains right after the printed datum, so the next <CODE>print</CODE>
+or <CODE>type</CODE> command will continue on the same line.
+
+<P>
+We need another specific case or two before a general pattern will
+become apparent.  Here is the version for three-letter words:
+
+<PRE>
+to inout3 :word
+print :word
+inout3.2 butfirst :word
+print :word
+end
+
+to inout3.2 :word
+type "| |
+print :word
+inout3.1 butfirst :word
+type "| |
+print :word
+end
+
+to inout3.1 :word
+repeat 2 [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+Convince yourself that each of these procedures types the
+right number of spaces before its input word.
+
+<P>
+Here is one final example, the version for four-letter words:
+
+<PRE>
+to inout4 :word
+print :word
+inout4.3 butfirst :word
+print :word
+end
+
+to inout4.3 :word
+type "| |
+print :word
+inout4.2 butfirst :word
+type "| |
+print :word
+end
+
+to inout4.2 :word
+repeat 2 [type "| |]
+print :word
+inout4.1 butfirst :word
+repeat 2 [type "| |]
+print :word
+end
+
+to inout4.1 :word
+repeat 3 [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+&raquo; Try this out and try writing <CODE>inout5</CODE> along the same lines.
+
+<P>
+How can we find a common pattern that will combine the elements of
+all these procedures?  It will have to look something like this:
+
+<PRE>
+to inout :word
+repeat <U>something</U> [type "| |]
+print :word
+if <U>something</U> [stop]
+inout butfirst :word
+repeat <U>something</U> [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+This is not a finished procedure because we haven't figured
+out how to fill the blanks.  First I should remark that the stop rule
+is where it is, after the first <CODE>print</CODE>, because that's how far the
+innermost procedures (<CODE>inout2.1</CODE>, <CODE>inout3.1</CODE>, and
+<CODE>inout4.1</CODE>) get.  They type some spaces, print the input word, and
+that's all.
+
+<P>
+Another thing to remark is that the first input to the <CODE>repeat</CODE>
+commands in this general procedure will sometimes be zero, because the
+outermost procedures (<CODE>inout2</CODE>, <CODE>inout3</CODE>, and
+<CODE>inout4</CODE>) don't type any spaces at all.  Each subprocedure types
+one more space than its superprocedure.  For example, <CODE>inout4</CODE>
+types no spaces.  Its subprocedure <CODE>inout4.3</CODE> types one space.
+<CODE>inout4.3</CODE>'s subprocedure <CODE>inout4.2</CODE> types two
+spaces.  Finally, <CODE>inout4.2</CODE>'s subprocedure <CODE>inout4.1</CODE>
+types three spaces.
+
+<P>
+In order to vary the number of spaces in this way, the solution is to
+use another input that will have this number as its value.  We can
+call it <CODE>spaces</CODE>.  The procedure will then look like this:
+
+<PRE>
+to inout :word :spaces
+repeat :spaces [type "| |]
+print :word
+if equalp count :word 1 [stop]
+inout (butfirst :word) (:spaces+1)
+repeat :spaces [type "| |]
+print :word
+end
+
+? <U>inout "hello 0</U>
+hello
+ ello
+  llo
+   lo
+    o
+   lo
+  llo
+ ello
+hello
+</PRE>
+
+<P>
+Notice that, when we use <CODE>inout</CODE>, we have to give it a
+zero as its second input.  We could eliminate this annoyance by
+writing a new <CODE>inout</CODE> that invokes this one as a subprocedure:
+
+<PRE>
+to inout :word
+inout.sub :word 0
+end
+
+to inout.sub :word :spaces
+repeat :spaces [type "| |]
+print :word
+if equalp count :word 1 [stop]
+inout.sub (butfirst :word) (:spaces+1)
+repeat :spaces [type "| |]
+print :word
+end
+</PRE>
+
+<P>
+(The easiest way to make this change is to edit <CODE>inout</CODE>
+with the Logo editor and change its title line and its recursive call
+so that its name is <CODE>inout.sub</CODE>.  Then, still in the editor,
+type in the new superprocedure <CODE>inout</CODE>.  When you leave the
+editor, both procedures will get their new definitions.)
+
+<P>
+This program structure, with a short superprocedure and a recursive
+subprocedure, is very common.  The superprocedure's only job is to provide
+the initial values for some of the subprocedure's inputs, so it's sometimes
+called an <EM>initialization procedure.</EM> In this program
+<CODE>inout</CODE> is an initialization procedure for <CODE>inout.sub</CODE>.
+
+<P>
+By the way, the parentheses in the recursive call aren't really
+needed; I just used them to make it more obvious which input is which.
+
+<H2>Other Stop Rules</H2>
+
+<P>
+The examples I've shown so far use this stop rule:
+
+<PRE>
+if equalp count :word 1 [stop]
+</PRE>
+
+<P>
+Perhaps you wrote your <CODE>down</CODE> procedure the same way:
+
+<PRE>
+to down :word
+print :word
+if equalp count :word 1 [stop]
+down butlast :word
+end
+</PRE>
+
+<P>
+Here is another way to write <CODE>down</CODE>, which has the same
+effect.  But this is a more commonly used style:
+
+<PRE>
+to down :word
+if emptyp :word [stop]
+print :word
+down butlast :word
+end
+</PRE>
+
+<P>
+This version of <CODE>down</CODE> has the stop rule as its first
+instruction.  After that comes the instructions that carry out the
+specific work of the procedure, in this case the <CODE>print</CODE>
+instruction.  The recursive call comes as the last instruction.
+
+<P>
+A procedure in which the recursive call is the last instruction is
+called <EM>tail recursive.</EM>  We'll have more to say later about the
+meaning of tail recursion.  (Actually, to be precise, I should have
+said that a <EM>command</EM> in which the recursive call is the last
+instruction is tail recursive.  What constitutes a tail recursive
+operation is a little tricker, and so far we haven't talked about
+recursive operations at all.)
+
+<P>
+Here's another example:
+
+<PRE>
+to countdown :number
+if equalp :number 0 [print "Blastoff! stop]
+print :number
+countdown :number-1
+end
+
+? <U>countdown 10</U>
+10
+9
+8
+7
+6
+5
+4
+3
+2
+1
+Blastoff!
+</PRE>
+
+<P>
+In this case, instead of a word that gets smaller by
+<CODE>butfirst</CODE>ing or <CODE>butlast</CODE>ing it, the input is a
+number from which 1 is subtracted for each recursive invocation.  This
+example also shows how some special action (the <CODE>print
+"Blastoff!</CODE> instruction) can be taken in the innermost invocation of
+the procedure.
+
+<P>
+&raquo; Here are some ideas for recursive programs you can write.  In each
+case I'll show an example or two of what the program should do.
+Start with <CODE>one.per.line</CODE>, a command with one input.  If the input
+is a word, the procedure should print each letter of the word on a
+separate line.  If the input is a list, the procedure should print
+each member of the list on a separate line:
+
+<PRE>
+? <U>one.per.line "hello</U>
+h
+e
+l
+l
+o
+? <U>one.per.line [the rain in spain]</U>
+the
+rain
+in
+spain
+</PRE>
+
+<P>
+(You already know how to do this without recursion, using
+<CODE>foreach</CODE> instead.  Many, although not all, recursive problems
+can also be solved using higher order functions.  You might enjoy this
+non-obvious example:
+
+<PRE>
+to down :word
+ignore cascade (count :word) [print ? butlast ?] :word
+end
+</PRE>
+
+<P>
+While you're learning about recursion, though, don't use higher
+order functions.  Once you're comfortable with both techniques you can
+choose which to use in a particular situation.)
+
+<P>
+&raquo; As an example in which an initialization procedure will be helpful,
+try <CODE>triangle</CODE>, a command that takes a word as its single input.
+It prints the word repeatedly on the same line, as many times as its
+length.  Then it prints a second line with one fewer repetition, and
+so on until it prints the word just once:
+
+<PRE>
+? <U>triangle "frog</U>
+frog frog frog frog
+frog frog frog
+frog frog
+frog
+</PRE>
+
+<P>
+&raquo; A more ambitious project is <CODE>diamond</CODE>, which takes as its input a
+word with an odd number of letters.  It displays the word in a diamond
+pattern, like this:
+
+<PRE>
+? <U>diamond "program</U>
+   g
+  ogr
+ rogra
+program
+ rogra
+  ogr
+   g
+</PRE>
+
+<P>
+(Hint: Write two procedures <CODE>diamond.top</CODE> and
+<CODE>diamond.bottom</CODE> for the growing and shrinking halves of the display.
+As in <CODE>inout</CODE>, you'll need an input to count the number of spaces
+by which to indent each line.) Can you write <CODE>diamond</CODE> so that it
+does something sensible for an input word with an even number of
+letters?
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch6/v1ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch8/v1ch8.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch8/hanoi1.gif b/js/games/nluqo.github.io/~bh/v1ch8/hanoi1.gif
new file mode 100644
index 0000000..53b1a6d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/hanoi1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch8/hanoi3.gif b/js/games/nluqo.github.io/~bh/v1ch8/hanoi3.gif
new file mode 100644
index 0000000..b9eefa9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/hanoi3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch8/recur2-1.gif b/js/games/nluqo.github.io/~bh/v1ch8/recur2-1.gif
new file mode 100644
index 0000000..174638c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/recur2-1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch8/recur2-3.gif b/js/games/nluqo.github.io/~bh/v1ch8/recur2-3.gif
new file mode 100644
index 0000000..94052b8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/recur2-3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch8/recur2-4.gif b/js/games/nluqo.github.io/~bh/v1ch8/recur2-4.gif
new file mode 100644
index 0000000..fe1f6ec
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/recur2-4.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch8/recur2-5.gif b/js/games/nluqo.github.io/~bh/v1ch8/recur2-5.gif
new file mode 100644
index 0000000..e5c3f23
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/recur2-5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v1ch8/recur2.html b/js/games/nluqo.github.io/~bh/v1ch8/recur2.html
new file mode 100644
index 0000000..df14a95
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/recur2.html
@@ -0,0 +1,756 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 8: Practical Recursion: the Leap of Faith</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Practical Recursion: the Leap of Faith</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch08.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch7/v1ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch9/v1ch9.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+When people first meet the idea of recursive procedures, they almost
+always think there is some sort of magic involved.  &quot;How can that
+possibly work?  That procedure uses itself as a subprocedure!  That's
+not fair.&quot;  To overcome that sense of unfairness, the combining method
+works up to a recursive procedure by starting small, so that each step
+is completely working before the next step, to solve a larger problem,
+relies on it.  There is no mystery about allowing <CODE>downup5</CODE> to rely on
+<CODE>downup4</CODE>.
+
+<P>The trouble with the combining method is that it's too much effort to be
+practical.  Once you believe in recursion, you don't want to have to write a
+special procedure for a size-one problem, then another special procedure for
+a size-two problem, and so on; you want to write the general recursive
+solution right away.  I'm calling this the &quot;leap of faith&quot; method because
+you write a procedure while taking on faith that you can invoke the same
+procedure to handle a smaller subproblem.
+
+<P>
+<H2>Recursive Patterns</H2>
+
+<P>
+Let's look, once more, at the problem we were trying to solve when
+writing the <CODE>downup</CODE> procedure.  We wanted the program to behave
+like this:
+
+<PRE>? <U>downup &quot;hello</U>
+hello
+hell
+hel
+he
+h
+he
+hel
+hell
+hello
+</PRE>
+
+<P>The secret of recursive programming is the same as a secret
+of problem solving in general: see if you can reduce a big problem to
+a smaller problem.  In this case we can look at the printout from
+<CODE>downup</CODE> this way:
+<P><CENTER><IMG SRC="recur2-1.gif" ALT="downup hello results"></CENTER>
+<P>What I've done here is to notice that the printout from applying <CODE>
+downup</CODE> to a five-letter word, <CODE>hello</CODE>, includes within itself the
+printout that would result from applying <CODE>downup</CODE> to a smaller
+word, <CODE>hell</CODE>.
+
+<P>This is where the leap of faith comes in.  I'm going to pretend that
+<CODE>downup</CODE> <EM>already works</EM> for the case of four-letter words.
+We haven't begun to write the procedure yet, but never mind that.  So
+it seems that in order to evaluate the instruction
+<PRE>downup &quot;hello
+</PRE>
+
+<P>we must carry out these three instructions:
+<PRE>print &quot;hello
+downup &quot;hell
+print &quot;hello
+</PRE>
+
+<P>(The two <CODE>print</CODE> instructions print the first and last
+lines of the desired result, the ones that aren't part of the smaller
+<CODE>downup</CODE> printout.)
+
+<P>To turn these instructions into a general procedure, we must use a
+variable in place of the specific word <CODE>hello</CODE>.  We also have to
+figure out the general relationship that is exemplified by the
+transformation from <CODE>hello</CODE> into <CODE>hell</CODE>.  This relationship
+is, of course, simply <CODE>butlast</CODE>.  Here is the procedure that
+results from this process of generalization:
+<PRE>to downup :word
+print :word
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>As you already know, this procedure won't quite work.  It lacks a stop
+rule.  But once we have come this far, it's a relatively simple matter
+to add the stop rule.  All we have to do is ask ourselves, &quot;What's
+the smallest case we want the program to handle?&quot;  The answer is that
+for a single-letter word the <CODE>downup</CODE> should just print the word
+once.  In other words, for a single-letter word, <CODE>downup</CODE> should
+carry out its first instruction and then stop.  So the stop rule goes
+after that first instruction, and it stops if the input has only one
+letter:
+<PRE>to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>Voil&agrave;!
+
+<P>The trick is <EM>not</EM> to think about the stop rule at first.  Just
+accept, on faith, that the procedure will somehow manage to work for
+inputs that are smaller than the one you're interested in.  Most
+people find it hard to do that.  Since you haven't written the program
+yet, after all, the faith I'm asking you to show is really
+unjustified.  Nevertheless you have to pretend that someone has
+already written a version of the desired procedure that works for
+smaller inputs.
+
+<P>Let's take another example from Chapter 7.
+<PRE>? <U>one.per.line &quot;hello</U>
+h
+e
+l
+l
+o
+</PRE>
+
+<P>There are two different ways in which we can find a smaller pattern
+within this one.  First we might notice this one:
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/recur2-2.gif" ALT="one.per.line results"></CENTER>
+<P>This pattern would lead to the following procedure, for
+which I haven't yet invented a stop rule.
+
+<P><PRE>to one.per.line :word
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>Alternatively we might notice this pattern:
+<P><CENTER><IMG SRC="recur2-3.gif" ALT="alternate one.per.line view"></CENTER>
+<P>In that case we'd have a different version of the
+procedure.  This one, also, doesn't yet have a stop rule.
+
+<P><PRE>to one.per.line :word
+one.per.line butlast :word
+print last :word
+end
+</PRE>
+
+<P>Either of these procedures can be made to work by adding the
+appropriate stop rule:
+<PRE>if emptyp :word [stop]
+</PRE>
+
+<P>This instruction should be the first in either procedure.
+Since both versions work, is there any reason to choose one over the
+other?  Well, there's no theoretical reason but there is a practical
+one.  It turns out that <CODE>first</CODE> and <CODE>butfirst</CODE> work faster
+than <CODE>last</CODE> and <CODE>butlast</CODE>.  It also turns out that procedures
+that are tail recursive (that is, with the recursion step at the end)
+can survive more levels of invocation, without running out of memory,
+than those that are recursive in other ways.  For both of
+these reasons the first version of <CODE>one.per.line</CODE> is a better
+choice than the second.  (Try timing both versions with a very long
+list as input.)
+
+<P>&raquo;Rewrite <A HREF="../v1ch5/hof.html#say">the <CODE>say</CODE> procedure</A>
+from Chapter 5 recursively.
+
+
+<P><H2>The Leap of Faith</H2>
+
+<P>If we think of
+
+<P><PRE>to one.per.line :word
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>merely as a statement of a true fact
+about the &quot;shape&quot; of the result printed by
+<CODE>one.per.line</CODE>, it's not very remarkable.  The amazing part is that
+this fragment is <EM>runnable!</EM><SUP>*</SUP> It doesn't <EM>look</EM> runnable because it invokes itself as a
+helper procedure, and--if you haven't already been through the combining
+method--that looks as if it can't work.  &quot;How can you use <CODE>one.per.line</CODE>
+when you haven't written it yet?&quot;
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Well, almost.  It needs a base
+case.</SMALL></BLOCKQUOTE></SMALL><P>The leap of faith method is the assumption that the procedure we're in the
+middle of writing already works.  That is, if we're thinking about writing a
+<CODE>one.per.line</CODE> procedure that can compute <CODE>one.per.line &quot;hello</CODE>, we
+assume that <CODE>one.per.line &quot;ello</CODE> will work.
+
+<P>Of course it's not <EM>really</EM> a leap of faith, in the sense of something
+accepted as miraculous but not understood.  The assumption is justified
+by our understanding of the combining method.  For example, we understand
+that the five-letter <CODE>one.per.line</CODE> is relying on the four-letter version of
+the problem, not really on itself, so there's no circular reasoning involved.
+And we know that if we had to, we could write <CODE>one.per.line1</CODE> through <CODE>
+one.per.line4</CODE> &quot;by hand.&quot;
+
+<P>The reason that the technique in this chapter may seem more mysterious than
+the combining method is that this time we are thinking about the problem
+top-down.  In the combining method, we had already written <CODE>whatever4</CODE>
+before we even raised the question of <CODE>whatever5</CODE>.  Now we start by
+thinking about the larger problem and assume that we can rely on the
+smaller one.  Again, we're entitled to that assumption because we've gone
+through the process from smaller to larger so many times already.
+
+<P>The leap of faith method, once you understand it, is faster than the
+combining method for writing new recursive procedures, because you can write
+the recursive solution immediately, without bothering with many individual
+cases.  The reason I showed you the combining method first is that the leap
+of faith method seems too much like magic, or like &quot;cheating,&quot; until
+you've seen several believable recursive programs.  The combining method is
+the way to learn about recursion; the leap of faith method is the way to
+write recursive procedures once you've learned.
+
+<P><H2>The Tower of Hanoi</H2>
+
+<P>One of the most famous recursive problems is a puzzle called the
+Tower of Hanoi.  You can find this puzzle in toy stores; look for a
+set of three posts and five or six disks.  You start out with the puzzle
+arranged like this:
+
+<P><CENTER><IMG SRC="hanoi1.gif" ALT="figure: hanoi1"></CENTER>
+
+<P>The object of the puzzle is to move all of the disks to the
+second post, like this:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/hanoi2.gif" ALT="figure: hanoi2"></CENTER>
+
+<P>This looks easy, but there are rules you must follow.  You
+can only move one disk at a time, and you can't put a disk on top of a
+smaller disk.  You might start trying to solve the puzzle this way:
+
+<P><CENTER><IMG SRC="hanoi3.gif" ALT="figure: hanoi3"></CENTER>
+
+<P>After that, you could move disk number 1 either onto post A,
+on top of disk 3, or onto post C, on top of disk 2.
+
+<P>I'm about to describe a solution to the puzzle, so if you want to work
+on it yourself first, stop reading now.
+
+<P>In the examples of <CODE>downup</CODE> and <CODE>one.per.line</CODE>, we identified
+each problem as one for which a recursive program was appropriate
+because within the pattern of the overall solution we found a smaller,
+similar pattern.  The same principle will apply in this case.  We want
+to end up with all five disks on post B.  To do that, at some point we
+have to move disk 5 from post A to post B.  To do <EM>that,</EM> we first
+have to get the other four disks out of the way.  Specifically, &quot;out
+of the way&quot; must mean onto post C.  So the solution to the problem
+can be represented graphically this way, in three parts:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/hanoi4.gif" ALT="figure: hanoi4"></CENTER>
+
+<P>The first part of the solution is to move disks 1 through 4
+from post A to post C.  The second part is a single step, moving disk
+5 from post A to post B.  The third part, like the first, involves
+several steps, to move disks 1 through 4 from post C to post B.
+
+<P>If you've developed the proper recursive spirit, you'll now say,
+&quot;Aha!  The first part and the third part are just like the entire
+puzzle, only with four disks instead of five!&quot; I hope that after this
+example you'll develop a sort of instinct that will let you notice
+patterns like that instantly.  You should then be ready to make a
+rough draft of a procedure to solve the puzzle:
+
+<P><PRE>to hanoi :number
+hanoi :number-1
+movedisk :number
+hanoi :number-1
+end
+</PRE>
+
+<P>
+Of course, this isn't at all a finished program.  For one thing, it
+lacks a stop rule.  (As usual, we leave that part for last.) For
+another, we have to write the subprocedure <CODE>movedisk</CODE> that moves a
+single disk.  But a more important point is that we've only provided
+for changing the disk number we're moving, not for selecting which
+posts to move from and to.  You might want to supply <CODE>hanoi</CODE> with
+two more inputs, named <CODE>from</CODE> and <CODE>to</CODE>, which would be the
+names of the posts.  So to solve the puzzle we'd say
+
+<P><PRE>hanoi 5 &quot;A &quot;B
+</PRE>
+
+<P>But that's not quite adequate.  <CODE>Hanoi</CODE> also needs to
+know the name of the <EM>third</EM> post.  Why?  Because in the
+recursive calls, that third post becomes one of the two &quot;active&quot;
+ones.  For example, here are the three steps in solving the five-disk
+puzzle:
+
+<P><PRE>hanoi 4 &quot;A &quot;C
+movedisk 5 &quot;A &quot;B
+hanoi 4 &quot;C &quot;B
+</PRE>
+
+<P>You can see that both of the recursive invocations need to
+use the name of the third post.  Therefore, we'll give <CODE>hanoi</CODE> a
+fourth input, called <CODE>other</CODE>, that will contain that name.  Here
+is another not-quite-finished version:
+
+<P><PRE>to hanoi :number :from :to :other
+hanoi :number-1 :from :other :to
+movedisk :number :from :to
+hanoi :number-1 :other :to :from
+end
+</PRE>
+
+<P>This version still lacks a stop rule, and we still have to write <CODE>
+movedisk</CODE>.  But we're much closer.  Notice that <CODE>movedisk</CODE> does <EM>
+not</EM> need the name of the third post as an input.  Its job is to
+take a single step, moving a single disk.  The unused post really has
+nothing to do with it.  Here's a simple version of <CODE>movedisk</CODE>:
+
+<P><PRE>to movedisk :number :from :to
+print (sentence [Move disk] :number &quot;from :from &quot;to :to)
+end
+</PRE>
+
+<P>What about the stop rule in <CODE>hanoi</CODE>?  The first thing that will
+come to your mind, probably, is that the case of moving disk number 1
+is special because there are no preconditions.  (No other disk can
+ever be on top of number 1, which is the smallest.) So you might want
+to use this stop rule:
+
+<P><PRE>if equalp :number 1 [movedisk 1 :from :to stop]
+</PRE>
+
+<P>Indeed, that will work.  (Where would you put it in the
+procedure?) But it turns out that a slightly more elegant solution is
+possible.  You can let the procedure for disk 1 go ahead and invoke
+itself recursively for disk number 0.  Since there is no such disk,
+the procedure then has nothing to do.  By this reasoning the stop
+rule should be this:
+
+<P><PRE>if equalp :number 0 [stop]
+</PRE>
+
+<P>You may have to trace out the procedure to convince yourself
+that this really works.  Convincing yourself is worth the effort,
+though; it turns out that very often you can get away with allowing
+an &quot;extra&quot; level of recursive invocation that does nothing.  When
+that's possible, it makes for a very clean-looking procedure.  (Once
+again, I've left you on your own in deciding where to insert this stop
+rule in <CODE>hanoi</CODE>.)
+
+<P>If your procedure is working correctly, you should get
+results like this for a small version of the puzzle:
+
+<P><PRE>? <U>hanoi 3 &quot;A &quot;B &quot;C</U>
+Move disk 1 from A to B
+Move disk 2 from A to C
+Move disk 1 from B to C
+Move disk 3 from A to B
+Move disk 1 from C to A
+Move disk 2 from C to B
+Move disk 1 from A to B
+</PRE>
+
+<P>If you like graphics programming and have been impatient to see a
+turtle in this book, you might want to write a graphic version of <CODE>
+movedisk</CODE> that would actually display the moves on the screen.
+
+<P><H2>More Complicated Patterns</H2>
+
+<P>Suppose that, instead of <CODE>downup</CODE>, we wanted to write <CODE>
+updown</CODE>, which works like this:
+<PRE>? <U>updown &quot;hello</U>
+h
+he
+hel
+hell
+hello
+hell
+hel
+he
+h
+</PRE>
+
+<P>It's harder to find a smaller subproblem within this pattern.
+With <CODE>downup</CODE>, removing the first and last lines of the printout left a
+<CODE>downup</CODE> pattern for a shorter word.  But the middle lines of this <CODE>
+updown</CODE> pattern aren't an <CODE>updown</CODE>.  The middle lines don't start with a
+single letter, like the <CODE>h</CODE> in the full pattern.  Also, the middle lines
+are clearly made out of the word <CODE>hello</CODE>, not some shortened version of
+it.  &raquo; You might want to try to find a solution yourself before
+reading further.
+
+<P>There are several approaches to writing <CODE>updown</CODE>.  One thing we
+could do is to divide the pattern into two parts:
+<P><CENTER><IMG SRC="recur2-4.gif" ALT="up and down"></CENTER>
+<P>It is relatively easy to invent the procedures <CODE>up</CODE> and
+<CODE>down</CODE> to create the two parts of the pattern.
+<PRE>to up :word
+if emptyp :word [stop]
+up butlast :word
+print :word
+end
+
+to down :word
+if emptyp :word [stop]
+print :word
+down butlast :word
+end
+</PRE>
+
+<P>Then we can use these as subprocedures of the complete <CODE>
+updown</CODE>:
+<PRE>to updown :word
+up :word
+down butlast :word
+end
+</PRE>
+
+<P>Another approach would be to use numbers to keep track of things, as
+in the <CODE>inout</CODE> example of Chapter 7.  In this case we can
+consider the middle lines as a smaller version of the problem.
+<P><CENTER><IMG SRC="recur2-5.gif" ALT="nested updowns"></CENTER>
+<P>In this point of view all the inner, smaller <CODE>updown</CODE> patterns
+are made from the same word, <CODE>hello</CODE>.  But each invocation of <CODE>
+updown1</CODE> (which is what I'll call this version of <CODE>updown</CODE>)
+will use a second input, a number that tells it how many
+letters to print in the first and last lines:
+<PRE>? <U>updown1 &quot;hello 3</U>
+hel
+hell
+hello
+hell
+hel
+? <U>updown1 &quot;hello 5</U>
+hello
+</PRE>
+
+<P>We need a subprocedure, <CODE>truncate</CODE>, that prints the
+beginning of a word, up to a certain number of letters.
+<PRE>to truncate :word :size
+if equalp count :word :size [print :word stop]
+truncate butlast :word :size
+end
+
+to updown1 :word :size
+truncate :word :size
+if equalp count :word :size [stop]
+updown1 :word :size+1
+truncate :word :size
+end
+</PRE>
+
+<P>(The helper procedure <CODE>truncate</CODE> is the sort of thing that
+should really be an operation, for the same reason that <CODE>second</CODE> was
+better than <CODE>prsecond</CODE> <A HREF="../v1ch4/v1ch4.html#prsecond">here</A>.
+We'll come back to the
+writing of recursive operations in Chapter 11.)
+
+<P>Finally, we can write a new superprocedure called <CODE>
+updown</CODE> that uses <CODE>updown1</CODE> with the correct inputs.  (If you try
+all these approaches on the computer, remember that you can have only
+one procedure named <CODE>updown</CODE> in your workspace at a time.)
+<PRE>to updown :word
+updown1 :word 1
+end
+</PRE>
+
+<P>A third approach, which illustrates a very powerful technique, also
+uses an initialization procedure <CODE>updown</CODE> and a subprocedure <CODE>
+updown1</CODE> with two inputs.  In this version, though, both inputs to the
+subprocedure are words: the partial word that we're printing right
+now and the partial word that is not yet to be printed.
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/recur2-6.gif" ALT="alternate updowns"></CENTER>
+<P>In this
+example, to print an <CODE>updown</CODE> pattern for the word <CODE>hello</CODE>,
+the two subprocedure inputs would be <CODE>h</CODE> (what's printed on the
+first line) and <CODE>ello</CODE> (what isn't printed there).  For the inner
+pattern with the first and last lines removed, the two inputs would be
+<CODE>he</CODE> and <CODE>llo</CODE>.  Here is the program:
+<PRE>to updown1 :now :later
+print :now
+if emptyp :later [stop]
+updown1 (word :now first :later) butfirst :later
+print :now
+end
+
+to updown :word
+updown1 first :word butfirst :word
+end
+</PRE>
+
+<P>This program may be a little tricky to understand.  The
+important part is <CODE>updown1</CODE>.  Read it first without paying
+attention to the stop rule; see if you can understand how it
+corresponds to the <CODE>updown</CODE> pattern.  A trace of its recursive invocations
+might help:
+<PRE>updown &quot;hello
+  updown1 &quot;h &quot;ello
+    updown1 &quot;he &quot;llo
+      updown1 &quot;hel &quot;lo
+        updown1 &quot;hell &quot;o
+          updown1 &quot;hello "
+</PRE>
+
+<P>The innermost level of recursion has been reached when the second
+input is the empty word.  Notice how <CODE>first</CODE>, <CODE>butfirst</CODE>, and
+<CODE>word</CODE> are used in combination to calculate the inputs.
+
+<P>&raquo;Write a recursive procedure <CODE>slant</CODE> that takes a word as input and
+prints it on a diagonal, one letter per line, like this:
+
+<P><PRE>? <U>slant &quot;salami</U>
+s
+ a
+  l
+   a
+    m
+     i
+</PRE>
+
+<P><H2>A Mini-project: Scrambled Sentences</H2>
+
+<P>Just as Logo programs can be iterative or recursive, so can English
+sentences.  People are pretty good at understanding even rather long
+iterative sentences:  &quot;This is the farmer who kept the cock that waked the
+priest that married the man that kissed the maiden that milked the cow that
+tossed the dog that worried the cat that killed the rat that ate the malt
+that lay in the house that Jack built.&quot; But even a short recursive (nested)
+sentence is confusing:  &quot;This is the rat the cat the dog worried killed.&quot;
+
+<P>&raquo;Write a procedure that takes as its first input a list of noun-verb
+pairs representing actor and action, and as its second input a word
+representing the object of the last action in the list.  Your procedure will
+print two sentences describing the events, an iterative one and a nested
+one, following this pattern:
+
+<P><PRE>? <U>scramble [[girl saw] [boy owned] [dog chased] [cat bit]] &quot;rat</U>
+This is
+the girl that saw
+the boy that owned
+the dog that chased
+the cat that bit
+the rat
+
+This is
+the rat
+the cat
+the dog
+the boy
+the girl
+saw
+owned
+chased
+bit
+</PRE>
+
+<P>You don't have to worry about special cases like &quot;that Jack
+built&quot;; your sentences will follow this pattern exactly.
+
+<P>Ordinarily the most natural way to program this problem would be as an
+operation that outputs the desired sentence, but right now we are
+concentrating on recursive commands, so you'll write a procedure that <CODE>
+print</CODE>s each line as shown above.
+
+<P><H2>Procedure Patterns</H2>
+
+<P>Certain patterns come up over and over in programming problems.  It's
+worth your while to learn to recognize some of them.  For example,
+let's look again at <CODE>one.per.line</CODE>:
+
+<P><PRE>to one.per.line :word
+if emptyp :word [stop]
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>This is an example of a very common pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [stop]
+<U>do.something.to</U> first :input
+<U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>A procedure pattern is different from the <EM>result</EM> patterns
+we examined earlier in this chapter.  Before we were looking at what we
+wanted a not-yet-written procedure to accomplish; now we are looking at
+already-written procedures to find patterns in their instructions.  A
+particular procedure might look like this pattern with the blanks
+filled in.  Here's an example:
+
+<P><PRE>to praise :flavors
+if emptyp :flavors [stop]
+print sentence [I love] first :flavors
+praise butfirst :flavors
+end
+
+? <U>praise [[ultra chocolate] [chocolate cinnamon raisin] ginger]</U>
+I love ultra chocolate
+I love chocolate cinnamon raisin
+I love ginger
+</PRE>
+
+<P>Do you see how <CODE>praise</CODE> fits the pattern?
+
+<P>&raquo;Continuing our investigation of literary forms, write a procedure to
+compose love poems, like this:
+
+<P><PRE>? <U>lovepoem &quot;Mary</U>
+M is for marvelous, that's what you are.
+A is for awesome, the best by far.
+R is for rosy, just like your cheek.
+Y is for youthful, with zest at its peak.
+Put them together, they spell Mary,
+The greatest girl in the world.
+</PRE>
+
+<P>The core of this project is a database of deathless lines, in the
+form of a list of lists:
+
+<P><PRE>make &quot;lines [[A is for albatross, around my neck.]
+             [B is for baloney, your opinions are dreck.]
+             [C is for corpulent, ...] ...]
+</PRE>
+
+<P>and a recursive procedure <CODE>select</CODE> that takes a letter and a
+list of lines as inputs and finds the appropriate line to print by comparing
+the letter to the beginning of each line in the list.
+
+<P>Another common pattern is a recursive procedure that counts something
+numerically, like <CODE>countdown</CODE>:
+
+<P><PRE>to countdown :number
+if equalp :number 0 [stop]
+print :number
+countdown :number-1
+end
+</PRE>
+
+<P>And here is the pattern:
+
+<P><PRE>to <U>procedure</U> :number
+if equalp :number 0 [stop]
+<U>do.something</U>
+<U>procedure</U> :number-1
+end
+</PRE>
+
+<P>A procedure built on this pattern is likely to have additional
+inputs so that it can do something other than just manipulate the
+number itself.  For example:
+
+<P><PRE>to manyprint :number :text
+if equalp :number 0 [stop]
+print :text
+manyprint :number-1 :text
+end
+
+? <U>manyprint 4 [Lots of echo in this cavern.]</U>
+Lots of echo in this cavern.
+Lots of echo in this cavern.
+Lots of echo in this cavern.
+Lots of echo in this cavern.
+
+to multiply :letters :number
+if equalp :number 0 [stop]
+print :letters
+multiply (word :letters first :letters) :number-1
+end
+
+? <U>multiply &quot;f 5</U>
+f
+ff
+fff
+ffff
+fffff
+</PRE>
+
+<P>One way to become a skillful programmer is to study other people's
+programs carefully.  As you read the programs in this book and others,
+keep an eye open for examples of patterns that you think might come
+in handy later on.
+
+<P><H2>Tricky Stop Rules</H2>
+
+<P>
+Suppose that instead of <CODE>one.per.line</CODE> we'd like a procedure to print
+the members of a list <EM>two</EM> per line.  (This is plausible if we have a
+list of many short items, for example.  We'd probably want to control the
+spacing on each line so that the items would form two columns, but let's not
+worry about that yet.)
+
+<P>The recursive part of this program is fairly straightforward:
+
+<P><PRE>to two.per.line :stuff
+print list (first :stuff) (first butfirst :stuff)
+two.per.line butfirst butfirst :stuff
+end
+</PRE>
+
+<P>The only thing out of the ordinary is that the recursive step uses
+a subproblem that's smaller by two members, instead of the usual one.
+
+<P>But it's easy to fall into a trap about the stop rule.  It's not good enough
+to say
+
+<P><PRE>if emptyp :stuff [stop]
+</PRE>
+
+<P>because in this procedure it matters whether the length of the
+input is odd or even.  These two possibilities give rise to <EM>two</EM> stop
+rules.  For an even-length list, we stop if the input is empty.  But for an
+odd-length list, we must treat the case of a one-member list specially also.
+
+<P><PRE>to two.per.line :stuff
+if emptyp :stuff [stop]
+if emptyp butfirst :stuff [show first :stuff stop]
+print list (first :stuff) (first butfirst :stuff)
+two.per.line butfirst butfirst :stuff
+end
+</PRE>
+
+<P>It's important to get the two stop rules in the right order; we
+must be sure the input isn't empty before we try to take its <CODE>butfirst</CODE>.
+
+<P>&raquo;Why does this procedure include one <CODE>show</CODE> instruction and one
+<CODE>print</CODE> instruction?  Why aren't they either both <CODE>show</CODE> or both
+<CODE>print</CODE>?
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch7/v1ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch9/v1ch9.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch8/v1ch8.html b/js/games/nluqo.github.io/~bh/v1ch8/v1ch8.html
new file mode 100644
index 0000000..df14a95
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch8/v1ch8.html
@@ -0,0 +1,756 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 8: Practical Recursion: the Leap of Faith</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Practical Recursion: the Leap of Faith</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch08.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch7/v1ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch9/v1ch9.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+When people first meet the idea of recursive procedures, they almost
+always think there is some sort of magic involved.  &quot;How can that
+possibly work?  That procedure uses itself as a subprocedure!  That's
+not fair.&quot;  To overcome that sense of unfairness, the combining method
+works up to a recursive procedure by starting small, so that each step
+is completely working before the next step, to solve a larger problem,
+relies on it.  There is no mystery about allowing <CODE>downup5</CODE> to rely on
+<CODE>downup4</CODE>.
+
+<P>The trouble with the combining method is that it's too much effort to be
+practical.  Once you believe in recursion, you don't want to have to write a
+special procedure for a size-one problem, then another special procedure for
+a size-two problem, and so on; you want to write the general recursive
+solution right away.  I'm calling this the &quot;leap of faith&quot; method because
+you write a procedure while taking on faith that you can invoke the same
+procedure to handle a smaller subproblem.
+
+<P>
+<H2>Recursive Patterns</H2>
+
+<P>
+Let's look, once more, at the problem we were trying to solve when
+writing the <CODE>downup</CODE> procedure.  We wanted the program to behave
+like this:
+
+<PRE>? <U>downup &quot;hello</U>
+hello
+hell
+hel
+he
+h
+he
+hel
+hell
+hello
+</PRE>
+
+<P>The secret of recursive programming is the same as a secret
+of problem solving in general: see if you can reduce a big problem to
+a smaller problem.  In this case we can look at the printout from
+<CODE>downup</CODE> this way:
+<P><CENTER><IMG SRC="recur2-1.gif" ALT="downup hello results"></CENTER>
+<P>What I've done here is to notice that the printout from applying <CODE>
+downup</CODE> to a five-letter word, <CODE>hello</CODE>, includes within itself the
+printout that would result from applying <CODE>downup</CODE> to a smaller
+word, <CODE>hell</CODE>.
+
+<P>This is where the leap of faith comes in.  I'm going to pretend that
+<CODE>downup</CODE> <EM>already works</EM> for the case of four-letter words.
+We haven't begun to write the procedure yet, but never mind that.  So
+it seems that in order to evaluate the instruction
+<PRE>downup &quot;hello
+</PRE>
+
+<P>we must carry out these three instructions:
+<PRE>print &quot;hello
+downup &quot;hell
+print &quot;hello
+</PRE>
+
+<P>(The two <CODE>print</CODE> instructions print the first and last
+lines of the desired result, the ones that aren't part of the smaller
+<CODE>downup</CODE> printout.)
+
+<P>To turn these instructions into a general procedure, we must use a
+variable in place of the specific word <CODE>hello</CODE>.  We also have to
+figure out the general relationship that is exemplified by the
+transformation from <CODE>hello</CODE> into <CODE>hell</CODE>.  This relationship
+is, of course, simply <CODE>butlast</CODE>.  Here is the procedure that
+results from this process of generalization:
+<PRE>to downup :word
+print :word
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>As you already know, this procedure won't quite work.  It lacks a stop
+rule.  But once we have come this far, it's a relatively simple matter
+to add the stop rule.  All we have to do is ask ourselves, &quot;What's
+the smallest case we want the program to handle?&quot;  The answer is that
+for a single-letter word the <CODE>downup</CODE> should just print the word
+once.  In other words, for a single-letter word, <CODE>downup</CODE> should
+carry out its first instruction and then stop.  So the stop rule goes
+after that first instruction, and it stops if the input has only one
+letter:
+<PRE>to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>Voil&agrave;!
+
+<P>The trick is <EM>not</EM> to think about the stop rule at first.  Just
+accept, on faith, that the procedure will somehow manage to work for
+inputs that are smaller than the one you're interested in.  Most
+people find it hard to do that.  Since you haven't written the program
+yet, after all, the faith I'm asking you to show is really
+unjustified.  Nevertheless you have to pretend that someone has
+already written a version of the desired procedure that works for
+smaller inputs.
+
+<P>Let's take another example from Chapter 7.
+<PRE>? <U>one.per.line &quot;hello</U>
+h
+e
+l
+l
+o
+</PRE>
+
+<P>There are two different ways in which we can find a smaller pattern
+within this one.  First we might notice this one:
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/recur2-2.gif" ALT="one.per.line results"></CENTER>
+<P>This pattern would lead to the following procedure, for
+which I haven't yet invented a stop rule.
+
+<P><PRE>to one.per.line :word
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>Alternatively we might notice this pattern:
+<P><CENTER><IMG SRC="recur2-3.gif" ALT="alternate one.per.line view"></CENTER>
+<P>In that case we'd have a different version of the
+procedure.  This one, also, doesn't yet have a stop rule.
+
+<P><PRE>to one.per.line :word
+one.per.line butlast :word
+print last :word
+end
+</PRE>
+
+<P>Either of these procedures can be made to work by adding the
+appropriate stop rule:
+<PRE>if emptyp :word [stop]
+</PRE>
+
+<P>This instruction should be the first in either procedure.
+Since both versions work, is there any reason to choose one over the
+other?  Well, there's no theoretical reason but there is a practical
+one.  It turns out that <CODE>first</CODE> and <CODE>butfirst</CODE> work faster
+than <CODE>last</CODE> and <CODE>butlast</CODE>.  It also turns out that procedures
+that are tail recursive (that is, with the recursion step at the end)
+can survive more levels of invocation, without running out of memory,
+than those that are recursive in other ways.  For both of
+these reasons the first version of <CODE>one.per.line</CODE> is a better
+choice than the second.  (Try timing both versions with a very long
+list as input.)
+
+<P>&raquo;Rewrite <A HREF="../v1ch5/hof.html#say">the <CODE>say</CODE> procedure</A>
+from Chapter 5 recursively.
+
+
+<P><H2>The Leap of Faith</H2>
+
+<P>If we think of
+
+<P><PRE>to one.per.line :word
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>merely as a statement of a true fact
+about the &quot;shape&quot; of the result printed by
+<CODE>one.per.line</CODE>, it's not very remarkable.  The amazing part is that
+this fragment is <EM>runnable!</EM><SUP>*</SUP> It doesn't <EM>look</EM> runnable because it invokes itself as a
+helper procedure, and--if you haven't already been through the combining
+method--that looks as if it can't work.  &quot;How can you use <CODE>one.per.line</CODE>
+when you haven't written it yet?&quot;
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Well, almost.  It needs a base
+case.</SMALL></BLOCKQUOTE></SMALL><P>The leap of faith method is the assumption that the procedure we're in the
+middle of writing already works.  That is, if we're thinking about writing a
+<CODE>one.per.line</CODE> procedure that can compute <CODE>one.per.line &quot;hello</CODE>, we
+assume that <CODE>one.per.line &quot;ello</CODE> will work.
+
+<P>Of course it's not <EM>really</EM> a leap of faith, in the sense of something
+accepted as miraculous but not understood.  The assumption is justified
+by our understanding of the combining method.  For example, we understand
+that the five-letter <CODE>one.per.line</CODE> is relying on the four-letter version of
+the problem, not really on itself, so there's no circular reasoning involved.
+And we know that if we had to, we could write <CODE>one.per.line1</CODE> through <CODE>
+one.per.line4</CODE> &quot;by hand.&quot;
+
+<P>The reason that the technique in this chapter may seem more mysterious than
+the combining method is that this time we are thinking about the problem
+top-down.  In the combining method, we had already written <CODE>whatever4</CODE>
+before we even raised the question of <CODE>whatever5</CODE>.  Now we start by
+thinking about the larger problem and assume that we can rely on the
+smaller one.  Again, we're entitled to that assumption because we've gone
+through the process from smaller to larger so many times already.
+
+<P>The leap of faith method, once you understand it, is faster than the
+combining method for writing new recursive procedures, because you can write
+the recursive solution immediately, without bothering with many individual
+cases.  The reason I showed you the combining method first is that the leap
+of faith method seems too much like magic, or like &quot;cheating,&quot; until
+you've seen several believable recursive programs.  The combining method is
+the way to learn about recursion; the leap of faith method is the way to
+write recursive procedures once you've learned.
+
+<P><H2>The Tower of Hanoi</H2>
+
+<P>One of the most famous recursive problems is a puzzle called the
+Tower of Hanoi.  You can find this puzzle in toy stores; look for a
+set of three posts and five or six disks.  You start out with the puzzle
+arranged like this:
+
+<P><CENTER><IMG SRC="hanoi1.gif" ALT="figure: hanoi1"></CENTER>
+
+<P>The object of the puzzle is to move all of the disks to the
+second post, like this:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/hanoi2.gif" ALT="figure: hanoi2"></CENTER>
+
+<P>This looks easy, but there are rules you must follow.  You
+can only move one disk at a time, and you can't put a disk on top of a
+smaller disk.  You might start trying to solve the puzzle this way:
+
+<P><CENTER><IMG SRC="hanoi3.gif" ALT="figure: hanoi3"></CENTER>
+
+<P>After that, you could move disk number 1 either onto post A,
+on top of disk 3, or onto post C, on top of disk 2.
+
+<P>I'm about to describe a solution to the puzzle, so if you want to work
+on it yourself first, stop reading now.
+
+<P>In the examples of <CODE>downup</CODE> and <CODE>one.per.line</CODE>, we identified
+each problem as one for which a recursive program was appropriate
+because within the pattern of the overall solution we found a smaller,
+similar pattern.  The same principle will apply in this case.  We want
+to end up with all five disks on post B.  To do that, at some point we
+have to move disk 5 from post A to post B.  To do <EM>that,</EM> we first
+have to get the other four disks out of the way.  Specifically, &quot;out
+of the way&quot; must mean onto post C.  So the solution to the problem
+can be represented graphically this way, in three parts:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/hanoi4.gif" ALT="figure: hanoi4"></CENTER>
+
+<P>The first part of the solution is to move disks 1 through 4
+from post A to post C.  The second part is a single step, moving disk
+5 from post A to post B.  The third part, like the first, involves
+several steps, to move disks 1 through 4 from post C to post B.
+
+<P>If you've developed the proper recursive spirit, you'll now say,
+&quot;Aha!  The first part and the third part are just like the entire
+puzzle, only with four disks instead of five!&quot; I hope that after this
+example you'll develop a sort of instinct that will let you notice
+patterns like that instantly.  You should then be ready to make a
+rough draft of a procedure to solve the puzzle:
+
+<P><PRE>to hanoi :number
+hanoi :number-1
+movedisk :number
+hanoi :number-1
+end
+</PRE>
+
+<P>
+Of course, this isn't at all a finished program.  For one thing, it
+lacks a stop rule.  (As usual, we leave that part for last.) For
+another, we have to write the subprocedure <CODE>movedisk</CODE> that moves a
+single disk.  But a more important point is that we've only provided
+for changing the disk number we're moving, not for selecting which
+posts to move from and to.  You might want to supply <CODE>hanoi</CODE> with
+two more inputs, named <CODE>from</CODE> and <CODE>to</CODE>, which would be the
+names of the posts.  So to solve the puzzle we'd say
+
+<P><PRE>hanoi 5 &quot;A &quot;B
+</PRE>
+
+<P>But that's not quite adequate.  <CODE>Hanoi</CODE> also needs to
+know the name of the <EM>third</EM> post.  Why?  Because in the
+recursive calls, that third post becomes one of the two &quot;active&quot;
+ones.  For example, here are the three steps in solving the five-disk
+puzzle:
+
+<P><PRE>hanoi 4 &quot;A &quot;C
+movedisk 5 &quot;A &quot;B
+hanoi 4 &quot;C &quot;B
+</PRE>
+
+<P>You can see that both of the recursive invocations need to
+use the name of the third post.  Therefore, we'll give <CODE>hanoi</CODE> a
+fourth input, called <CODE>other</CODE>, that will contain that name.  Here
+is another not-quite-finished version:
+
+<P><PRE>to hanoi :number :from :to :other
+hanoi :number-1 :from :other :to
+movedisk :number :from :to
+hanoi :number-1 :other :to :from
+end
+</PRE>
+
+<P>This version still lacks a stop rule, and we still have to write <CODE>
+movedisk</CODE>.  But we're much closer.  Notice that <CODE>movedisk</CODE> does <EM>
+not</EM> need the name of the third post as an input.  Its job is to
+take a single step, moving a single disk.  The unused post really has
+nothing to do with it.  Here's a simple version of <CODE>movedisk</CODE>:
+
+<P><PRE>to movedisk :number :from :to
+print (sentence [Move disk] :number &quot;from :from &quot;to :to)
+end
+</PRE>
+
+<P>What about the stop rule in <CODE>hanoi</CODE>?  The first thing that will
+come to your mind, probably, is that the case of moving disk number 1
+is special because there are no preconditions.  (No other disk can
+ever be on top of number 1, which is the smallest.) So you might want
+to use this stop rule:
+
+<P><PRE>if equalp :number 1 [movedisk 1 :from :to stop]
+</PRE>
+
+<P>Indeed, that will work.  (Where would you put it in the
+procedure?) But it turns out that a slightly more elegant solution is
+possible.  You can let the procedure for disk 1 go ahead and invoke
+itself recursively for disk number 0.  Since there is no such disk,
+the procedure then has nothing to do.  By this reasoning the stop
+rule should be this:
+
+<P><PRE>if equalp :number 0 [stop]
+</PRE>
+
+<P>You may have to trace out the procedure to convince yourself
+that this really works.  Convincing yourself is worth the effort,
+though; it turns out that very often you can get away with allowing
+an &quot;extra&quot; level of recursive invocation that does nothing.  When
+that's possible, it makes for a very clean-looking procedure.  (Once
+again, I've left you on your own in deciding where to insert this stop
+rule in <CODE>hanoi</CODE>.)
+
+<P>If your procedure is working correctly, you should get
+results like this for a small version of the puzzle:
+
+<P><PRE>? <U>hanoi 3 &quot;A &quot;B &quot;C</U>
+Move disk 1 from A to B
+Move disk 2 from A to C
+Move disk 1 from B to C
+Move disk 3 from A to B
+Move disk 1 from C to A
+Move disk 2 from C to B
+Move disk 1 from A to B
+</PRE>
+
+<P>If you like graphics programming and have been impatient to see a
+turtle in this book, you might want to write a graphic version of <CODE>
+movedisk</CODE> that would actually display the moves on the screen.
+
+<P><H2>More Complicated Patterns</H2>
+
+<P>Suppose that, instead of <CODE>downup</CODE>, we wanted to write <CODE>
+updown</CODE>, which works like this:
+<PRE>? <U>updown &quot;hello</U>
+h
+he
+hel
+hell
+hello
+hell
+hel
+he
+h
+</PRE>
+
+<P>It's harder to find a smaller subproblem within this pattern.
+With <CODE>downup</CODE>, removing the first and last lines of the printout left a
+<CODE>downup</CODE> pattern for a shorter word.  But the middle lines of this <CODE>
+updown</CODE> pattern aren't an <CODE>updown</CODE>.  The middle lines don't start with a
+single letter, like the <CODE>h</CODE> in the full pattern.  Also, the middle lines
+are clearly made out of the word <CODE>hello</CODE>, not some shortened version of
+it.  &raquo; You might want to try to find a solution yourself before
+reading further.
+
+<P>There are several approaches to writing <CODE>updown</CODE>.  One thing we
+could do is to divide the pattern into two parts:
+<P><CENTER><IMG SRC="recur2-4.gif" ALT="up and down"></CENTER>
+<P>It is relatively easy to invent the procedures <CODE>up</CODE> and
+<CODE>down</CODE> to create the two parts of the pattern.
+<PRE>to up :word
+if emptyp :word [stop]
+up butlast :word
+print :word
+end
+
+to down :word
+if emptyp :word [stop]
+print :word
+down butlast :word
+end
+</PRE>
+
+<P>Then we can use these as subprocedures of the complete <CODE>
+updown</CODE>:
+<PRE>to updown :word
+up :word
+down butlast :word
+end
+</PRE>
+
+<P>Another approach would be to use numbers to keep track of things, as
+in the <CODE>inout</CODE> example of Chapter 7.  In this case we can
+consider the middle lines as a smaller version of the problem.
+<P><CENTER><IMG SRC="recur2-5.gif" ALT="nested updowns"></CENTER>
+<P>In this point of view all the inner, smaller <CODE>updown</CODE> patterns
+are made from the same word, <CODE>hello</CODE>.  But each invocation of <CODE>
+updown1</CODE> (which is what I'll call this version of <CODE>updown</CODE>)
+will use a second input, a number that tells it how many
+letters to print in the first and last lines:
+<PRE>? <U>updown1 &quot;hello 3</U>
+hel
+hell
+hello
+hell
+hel
+? <U>updown1 &quot;hello 5</U>
+hello
+</PRE>
+
+<P>We need a subprocedure, <CODE>truncate</CODE>, that prints the
+beginning of a word, up to a certain number of letters.
+<PRE>to truncate :word :size
+if equalp count :word :size [print :word stop]
+truncate butlast :word :size
+end
+
+to updown1 :word :size
+truncate :word :size
+if equalp count :word :size [stop]
+updown1 :word :size+1
+truncate :word :size
+end
+</PRE>
+
+<P>(The helper procedure <CODE>truncate</CODE> is the sort of thing that
+should really be an operation, for the same reason that <CODE>second</CODE> was
+better than <CODE>prsecond</CODE> <A HREF="../v1ch4/v1ch4.html#prsecond">here</A>.
+We'll come back to the
+writing of recursive operations in Chapter 11.)
+
+<P>Finally, we can write a new superprocedure called <CODE>
+updown</CODE> that uses <CODE>updown1</CODE> with the correct inputs.  (If you try
+all these approaches on the computer, remember that you can have only
+one procedure named <CODE>updown</CODE> in your workspace at a time.)
+<PRE>to updown :word
+updown1 :word 1
+end
+</PRE>
+
+<P>A third approach, which illustrates a very powerful technique, also
+uses an initialization procedure <CODE>updown</CODE> and a subprocedure <CODE>
+updown1</CODE> with two inputs.  In this version, though, both inputs to the
+subprocedure are words: the partial word that we're printing right
+now and the partial word that is not yet to be printed.
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch8/recur2-6.gif" ALT="alternate updowns"></CENTER>
+<P>In this
+example, to print an <CODE>updown</CODE> pattern for the word <CODE>hello</CODE>,
+the two subprocedure inputs would be <CODE>h</CODE> (what's printed on the
+first line) and <CODE>ello</CODE> (what isn't printed there).  For the inner
+pattern with the first and last lines removed, the two inputs would be
+<CODE>he</CODE> and <CODE>llo</CODE>.  Here is the program:
+<PRE>to updown1 :now :later
+print :now
+if emptyp :later [stop]
+updown1 (word :now first :later) butfirst :later
+print :now
+end
+
+to updown :word
+updown1 first :word butfirst :word
+end
+</PRE>
+
+<P>This program may be a little tricky to understand.  The
+important part is <CODE>updown1</CODE>.  Read it first without paying
+attention to the stop rule; see if you can understand how it
+corresponds to the <CODE>updown</CODE> pattern.  A trace of its recursive invocations
+might help:
+<PRE>updown &quot;hello
+  updown1 &quot;h &quot;ello
+    updown1 &quot;he &quot;llo
+      updown1 &quot;hel &quot;lo
+        updown1 &quot;hell &quot;o
+          updown1 &quot;hello "
+</PRE>
+
+<P>The innermost level of recursion has been reached when the second
+input is the empty word.  Notice how <CODE>first</CODE>, <CODE>butfirst</CODE>, and
+<CODE>word</CODE> are used in combination to calculate the inputs.
+
+<P>&raquo;Write a recursive procedure <CODE>slant</CODE> that takes a word as input and
+prints it on a diagonal, one letter per line, like this:
+
+<P><PRE>? <U>slant &quot;salami</U>
+s
+ a
+  l
+   a
+    m
+     i
+</PRE>
+
+<P><H2>A Mini-project: Scrambled Sentences</H2>
+
+<P>Just as Logo programs can be iterative or recursive, so can English
+sentences.  People are pretty good at understanding even rather long
+iterative sentences:  &quot;This is the farmer who kept the cock that waked the
+priest that married the man that kissed the maiden that milked the cow that
+tossed the dog that worried the cat that killed the rat that ate the malt
+that lay in the house that Jack built.&quot; But even a short recursive (nested)
+sentence is confusing:  &quot;This is the rat the cat the dog worried killed.&quot;
+
+<P>&raquo;Write a procedure that takes as its first input a list of noun-verb
+pairs representing actor and action, and as its second input a word
+representing the object of the last action in the list.  Your procedure will
+print two sentences describing the events, an iterative one and a nested
+one, following this pattern:
+
+<P><PRE>? <U>scramble [[girl saw] [boy owned] [dog chased] [cat bit]] &quot;rat</U>
+This is
+the girl that saw
+the boy that owned
+the dog that chased
+the cat that bit
+the rat
+
+This is
+the rat
+the cat
+the dog
+the boy
+the girl
+saw
+owned
+chased
+bit
+</PRE>
+
+<P>You don't have to worry about special cases like &quot;that Jack
+built&quot;; your sentences will follow this pattern exactly.
+
+<P>Ordinarily the most natural way to program this problem would be as an
+operation that outputs the desired sentence, but right now we are
+concentrating on recursive commands, so you'll write a procedure that <CODE>
+print</CODE>s each line as shown above.
+
+<P><H2>Procedure Patterns</H2>
+
+<P>Certain patterns come up over and over in programming problems.  It's
+worth your while to learn to recognize some of them.  For example,
+let's look again at <CODE>one.per.line</CODE>:
+
+<P><PRE>to one.per.line :word
+if emptyp :word [stop]
+print first :word
+one.per.line butfirst :word
+end
+</PRE>
+
+<P>This is an example of a very common pattern:
+
+<P><PRE>to <U>procedure</U> :input
+if emptyp :input [stop]
+<U>do.something.to</U> first :input
+<U>procedure</U> butfirst :input
+end
+</PRE>
+
+<P>A procedure pattern is different from the <EM>result</EM> patterns
+we examined earlier in this chapter.  Before we were looking at what we
+wanted a not-yet-written procedure to accomplish; now we are looking at
+already-written procedures to find patterns in their instructions.  A
+particular procedure might look like this pattern with the blanks
+filled in.  Here's an example:
+
+<P><PRE>to praise :flavors
+if emptyp :flavors [stop]
+print sentence [I love] first :flavors
+praise butfirst :flavors
+end
+
+? <U>praise [[ultra chocolate] [chocolate cinnamon raisin] ginger]</U>
+I love ultra chocolate
+I love chocolate cinnamon raisin
+I love ginger
+</PRE>
+
+<P>Do you see how <CODE>praise</CODE> fits the pattern?
+
+<P>&raquo;Continuing our investigation of literary forms, write a procedure to
+compose love poems, like this:
+
+<P><PRE>? <U>lovepoem &quot;Mary</U>
+M is for marvelous, that's what you are.
+A is for awesome, the best by far.
+R is for rosy, just like your cheek.
+Y is for youthful, with zest at its peak.
+Put them together, they spell Mary,
+The greatest girl in the world.
+</PRE>
+
+<P>The core of this project is a database of deathless lines, in the
+form of a list of lists:
+
+<P><PRE>make &quot;lines [[A is for albatross, around my neck.]
+             [B is for baloney, your opinions are dreck.]
+             [C is for corpulent, ...] ...]
+</PRE>
+
+<P>and a recursive procedure <CODE>select</CODE> that takes a letter and a
+list of lines as inputs and finds the appropriate line to print by comparing
+the letter to the beginning of each line in the list.
+
+<P>Another common pattern is a recursive procedure that counts something
+numerically, like <CODE>countdown</CODE>:
+
+<P><PRE>to countdown :number
+if equalp :number 0 [stop]
+print :number
+countdown :number-1
+end
+</PRE>
+
+<P>And here is the pattern:
+
+<P><PRE>to <U>procedure</U> :number
+if equalp :number 0 [stop]
+<U>do.something</U>
+<U>procedure</U> :number-1
+end
+</PRE>
+
+<P>A procedure built on this pattern is likely to have additional
+inputs so that it can do something other than just manipulate the
+number itself.  For example:
+
+<P><PRE>to manyprint :number :text
+if equalp :number 0 [stop]
+print :text
+manyprint :number-1 :text
+end
+
+? <U>manyprint 4 [Lots of echo in this cavern.]</U>
+Lots of echo in this cavern.
+Lots of echo in this cavern.
+Lots of echo in this cavern.
+Lots of echo in this cavern.
+
+to multiply :letters :number
+if equalp :number 0 [stop]
+print :letters
+multiply (word :letters first :letters) :number-1
+end
+
+? <U>multiply &quot;f 5</U>
+f
+ff
+fff
+ffff
+fffff
+</PRE>
+
+<P>One way to become a skillful programmer is to study other people's
+programs carefully.  As you read the programs in this book and others,
+keep an eye open for examples of patterns that you think might come
+in handy later on.
+
+<P><H2>Tricky Stop Rules</H2>
+
+<P>
+Suppose that instead of <CODE>one.per.line</CODE> we'd like a procedure to print
+the members of a list <EM>two</EM> per line.  (This is plausible if we have a
+list of many short items, for example.  We'd probably want to control the
+spacing on each line so that the items would form two columns, but let's not
+worry about that yet.)
+
+<P>The recursive part of this program is fairly straightforward:
+
+<P><PRE>to two.per.line :stuff
+print list (first :stuff) (first butfirst :stuff)
+two.per.line butfirst butfirst :stuff
+end
+</PRE>
+
+<P>The only thing out of the ordinary is that the recursive step uses
+a subproblem that's smaller by two members, instead of the usual one.
+
+<P>But it's easy to fall into a trap about the stop rule.  It's not good enough
+to say
+
+<P><PRE>if emptyp :stuff [stop]
+</PRE>
+
+<P>because in this procedure it matters whether the length of the
+input is odd or even.  These two possibilities give rise to <EM>two</EM> stop
+rules.  For an even-length list, we stop if the input is empty.  But for an
+odd-length list, we must treat the case of a one-member list specially also.
+
+<P><PRE>to two.per.line :stuff
+if emptyp :stuff [stop]
+if emptyp butfirst :stuff [show first :stuff stop]
+print list (first :stuff) (first butfirst :stuff)
+two.per.line butfirst butfirst :stuff
+end
+</PRE>
+
+<P>It's important to get the two stop rules in the right order; we
+must be sure the input isn't empty before we try to take its <CODE>butfirst</CODE>.
+
+<P>&raquo;Why does this procedure include one <CODE>show</CODE> instruction and one
+<CODE>print</CODE> instruction?  Why aren't they either both <CODE>show</CODE> or both
+<CODE>print</CODE>?
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch7/v1ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch9/v1ch9.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch9/recur3.html b/js/games/nluqo.github.io/~bh/v1ch9/recur3.html
new file mode 100644
index 0000000..e68bebe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch9/recur3.html
@@ -0,0 +1,570 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 9: How Recursion Works</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>How Recursion Works</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch09.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch8/v1ch8.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch10/v1ch10.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The last two chapters were about how to write recursive procedures.  This
+chapter is about how to <EM>believe in</EM> recursive procedures, and about
+understanding the process by which Logo carries them out.
+
+<P>
+<H2>Little People and Recursion</H2>
+
+<P>
+In Chapter 3, I introduced you to the metaphor of a computer full of
+little elves.  Each elf is an expert on a particular procedure.  I
+promised that this metaphor would be helpful later, when we'd have to
+think about two little people carrying out the same procedure at the
+same time.  Well, &quot;later&quot; is now.
+
+<P>I want to use the elf metaphor to think about the <CODE>downup</CODE> example
+of the previous chapter:
+<PRE>to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>Recall that we are imagining the computer to be full of
+elves, each of whom is a specialist in carrying out some procedure.
+There are <CODE>print</CODE> elves, <CODE>count</CODE> elves, <CODE>stop</CODE> elves, and
+so on.  Each elf has some number of pockets, used to hold the inputs
+for a particular invocation of a procedure.  So a <CODE>
+print</CODE> elf will have one pocket, while an <CODE>equalp</CODE> elf needs two
+pockets.
+
+<P>
+
+<P>We're going to be most interested in the <CODE>downup</CODE> elves and the
+contents of their pockets.  To help you keep straight which elf is
+which, I'm going to name the <CODE>downup</CODE> elves alphabetically: the
+first one will be Ann, then Bill, then Cathy, then David, and so on.
+Since we aren't so interested in the other elves, I won't bother
+naming them.
+
+<P>&raquo;If you're reading this with a group of other people, you may find it
+helpful for each of you to take on the role of one of the <CODE>downup</CODE>
+elves and actually stick words in your pockets.  If you have enough
+people, some of you should also serve as elves for the primitive
+procedures used, like <CODE>print</CODE> and <CODE>if</CODE>.
+
+<P>What happens when you type the instruction
+<PRE>downup &quot;hello
+</PRE>
+to Logo?  The Chief Elf reads this instruction and sees that
+it calls for the use of the procedure named <CODE>downup</CODE>.  She
+therefore recruits Ann, an elf who specializes in that procedure.
+Since <CODE>downup</CODE> has one input, the Chief Elf has to give Ann
+something to put in her one pocket.  Fortunately, the input you
+provided is a quoted word, which evaluates to itself.  No other elves
+are needed to compute the input.  Ann gets the word <CODE>hello</CODE> in her
+pocket.
+
+<P>Ann's task is to carry out the instructions that make up the
+definition of <CODE>downup</CODE>.  The first instruction is
+<PRE>print :word
+</PRE>
+This, you'll remember, is an abbreviation for
+<PRE>print thing &quot;word
+</PRE>
+Ann must hire two more elves, a <CODE>print</CODE> specialist and a
+<CODE>thing</CODE> specialist.  The <CODE>print</CODE> elf can't begin his work
+until he's given something to put in his pocket.  Ann asks the <CODE>
+thing</CODE> elf to figure out what that input should be.  The <CODE>thing</CODE>
+elf also gets an input, namely the word <CODE>word</CODE>.  As we saw in
+Chapter 3, <CODE>word</CODE> is what's written on the name tag in Ann's
+pocket, since <CODE>word</CODE> is the name of <CODE>downup</CODE>'s input.  So the
+<CODE>thing</CODE> elf looks in that pocket, where it finds the word
+<CODE>hello</CODE>.  That word is then given to the <CODE>print</CODE> elf, who
+prints it on your computer screen.
+
+<P>Ann is now ready to evaluate the second instruction:
+<PRE>if equalp count :word 1 [stop]
+</PRE>
+
+<P>Ann must hire several other elves to help her: an <CODE>if</CODE>
+elf, a <CODE>count</CODE> elf, and a <CODE>thing</CODE> elf.  I won't go through all
+the steps in computing the inputs to <CODE>if</CODE>; since the <CODE>count</CODE>
+of the word <CODE>hello</CODE> is not 1, the first input to <CODE>if</CODE> turns
+out to be the word <CODE>false</CODE>.  The second input to <CODE>if</CODE> is, of
+course, the list <CODE>[stop]</CODE>.  (Notice that Ann does <EM>not</EM> hire
+a <CODE>stop</CODE> specialist.  A list inside square brackets evaluates to
+itself, just like a quoted word, without invoking any procedures.  If
+the first input to <CODE>if</CODE> had turned out to be <CODE>true</CODE>, it would
+have been the <CODE>if</CODE> elf who would have hired a <CODE>stop</CODE> elf to
+carry out the instruction inside the list.)  Since its first input is
+<CODE>false</CODE>, the <CODE>if</CODE> elf ends up doing nothing.
+
+<P>Ann's third instruction is
+<PRE>downup butlast :word
+</PRE>
+
+<P>Here's where things start to get interesting.  Ann must
+hire <EM>another</EM> <CODE>downup</CODE> specialist, named Bill.  (Ann can't
+carry out this new <CODE>downup</CODE> instruction herself because she's
+already in the middle of a job of her own.)  Ann must give Bill an
+input to put in his pocket; to compute this input, she hires a <CODE>
+butlast</CODE> elf and a <CODE>thing</CODE> elf.  They eventually come up with the
+word <CODE>hell</CODE> (the <CODE>butlast</CODE> of <CODE>hello</CODE>), and that's what
+Ann puts in Bill's pocket.
+
+<P>We now have two active <CODE>downup</CODE> elves, Ann and Bill.  Each has a
+pocket.  Both pockets are named <CODE>word</CODE>, but they have different
+contents: Ann's <CODE>word</CODE> pocket contains <CODE>hello</CODE>, while Bill's
+<CODE>word</CODE> pocket contains <CODE>hell</CODE>.
+
+<P>
+<CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch9/elf2.gif" ALT="figure: elf2"></CENTER>
+
+<P>Here is what this metaphor represents, in more technical
+language:  Although there is only one <EM>procedure</EM> named <CODE>
+downup</CODE>, there can be more than one <EM>invocation</EM> of that
+procedure in progress at a particular moment.  (An invocation of a
+procedure is also sometimes called an <EM>instantiation</EM> of the
+procedure.)  Each invocation has its own local variables; at this
+moment there are <EM>two</EM> variables named <CODE>word</CODE>.  It is
+perfectly possible for two variables to have the same name as long as
+they are associated with (local to) different procedure invocations.
+
+<P>If you had trouble figuring out how <CODE>downup</CODE> works in Chapter 7,
+it's almost certainly because of a misunderstanding about this
+business of local variables.  That's what makes the elf metaphor so
+helpful.  For example, if you're accustomed to programming in BASIC,
+then you're familiar with <EM>global</EM> variables as the only
+possibility in the language.  If all variables were global in Logo,
+then there could only be one variable in the entire computer named
+<CODE>word</CODE>.  Instead of representing variables as pockets in the
+elves' clothes, we'd have to represent them as safe deposit boxes kept
+in some central bank and shared by all the elves.
+
+<P>But even if you're familiar with Logo's use of local variables, you
+may have been thinking of the variables as being local to a <EM>
+procedure,</EM> instead of understanding that they are local to an <EM>
+invocation</EM> of a procedure.  In that case you may have felt
+perfectly comfortable with the procedures named <CODE>downup1</CODE>, <CODE>
+downup2</CODE>, and so on, each of them using a separate variable named <CODE>
+word</CODE>.  But you may still have gotten confused when the <EM>same</EM>
+variable <CODE>word</CODE>, the one belonging to the single procedure <CODE>
+downup</CODE>, seemed to have several values at once.
+
+<P>If you were confused in that way, here's how to use the elf metaphor
+to help yourself get unconfused:  Suppose the procedure definitions are
+written on scrolls, which are kept in a library.  There is only one
+copy of each scroll.  (That is, there is only one definition for a
+given procedure.)  All the elves who specialize in a particular
+procedure, like <CODE>downup</CODE>, have to share the same scroll.  Well, if
+variables were local to a procedure, they'd be pockets in the <EM>
+scroll,</EM> rather than pockets in the <EM>elves' jackets.</EM>  By
+directing your attention to the elves (the invocations) instead of the
+scrolls (the procedure definitions), you can see that there can be two
+variables with the same name (<CODE>word</CODE>), associated with the same
+procedure (<CODE>downup</CODE>), but belonging to different invocations
+(represented by the elves Ann and Bill).
+
+<P>We still have several more elves to meet, so I'm going to pass over
+some of the details more quickly now.  We've just reached the point
+where Bill is ready to set to work.  For his first instruction he
+hires a <CODE>print</CODE> elf, who prints the word <CODE>hell</CODE> on your
+screen.  Why <CODE>hell</CODE> and not <CODE>hello</CODE>?  The answer is that when
+Bill hires a <CODE>thing</CODE> expert to evaluate the expression <CODE>
+:word</CODE>, the <CODE>thing</CODE> rules say that that expert must look <EM>
+first</EM> in Bill's pockets, <EM>then</EM> (if Bill didn't have a pocket
+named <CODE>word</CODE>) in Ann's pockets.
+
+<P>Bill then carries out the <CODE>if</CODE> instruction, which again has no
+effect.  Then Bill is ready for the <CODE>downup</CODE> instruction.  He
+hires a third <CODE>downup</CODE> elf, named Cathy.  Bill puts the word <CODE>
+hel</CODE> in Cathy's pocket.  There are now three elves, all with pockets
+named <CODE>word</CODE>, each with a different word.
+
+<P>Cathy is now ready to get to work.  Don't forget, though, that Ann and
+Bill haven't finished their jobs.  Bill is still working on his third
+instruction, waiting for Cathy to report the completion of her task.
+Similarly, Ann is waiting for Bill to finish.
+
+<P>Cathy evaluates her first instruction, printing <CODE>hel</CODE> on the
+screen.  She evaluates the <CODE>if</CODE> instruction, with no effect.  Then
+she's ready for the <CODE>downup</CODE> instruction, the third one in the
+procedure definition.  To carry out this instruction, she hires David,
+a fourth <CODE>downup</CODE> expert.  She puts the word <CODE>he</CODE> in his
+pocket.
+
+<P>David's career is like that of the other <CODE>downup</CODE> elves we've met
+so far.  He starts by printing his input, the word <CODE>he</CODE>.  He
+evaluates the <CODE>if</CODE> instruction, with no effect.  (The <CODE>count</CODE>
+of the word <CODE>he</CODE> is still not equal to 1.)  He then gets to the
+recursive invocation of <CODE>downup</CODE>, for which he hires a fifth
+expert, named Ellen.  He puts the word <CODE>h</CODE> in Ellen's pocket.
+
+<P>Ellen's career is <EM>not</EM> quite like that of the other elves.  It
+starts similarly: she prints her input, the word <CODE>h</CODE>, on your
+screen.  Then she prepares to evaluate the <CODE>if</CODE> instruction.  This
+time, though, the first input to <CODE>if</CODE> turns out to be the word
+<CODE>true</CODE>, since the <CODE>count</CODE> of <CODE>h</CODE> is, indeed, 1.
+Therefore, the <CODE>if</CODE> elf evaluates the instruction contained in its
+second input, the list <CODE>[stop]</CODE>.  It hires a <CODE>stop</CODE> elf, whose
+job is to tell Ellen to stop working.  (Why Ellen?  Why not one of the
+other active elves?  There are <EM>seven</EM> elves active at the
+moment: Ann, Bill, Cathy, David, Ellen, the <CODE>if</CODE> elf, and the <CODE>
+stop</CODE> elf.  The rule is that a <CODE>stop</CODE> elf stops the <EM>
+lowest-level invocation of a user-defined procedure.</EM>  <CODE>If</CODE> and
+<CODE>stop</CODE> are primitives, so they don't satisfy the <CODE>stop</CODE> elf.
+The remaining five elves are experts in <CODE>downup</CODE>, a user-defined
+procedure; of the five, Ellen is the lowest-level invocation.)
+
+<P>(By the way, the insistence of <CODE>stop</CODE> on a user-defined procedure
+to stop is one of the few ways in which Logo treats such procedures
+differently from primitive procedures.  If you think about it, you'll
+see that it would be useless for <CODE>stop</CODE> to stop just the
+invocation of <CODE>if</CODE>.  That would mean that the <CODE>if</CODE> instruction
+would never do anything of interest and there would be no way to stop
+a procedure of your own conditionally.  But you can imagine other
+situations in which it would be nice to be able to <CODE>stop</CODE> a
+primitive.  Here's one:
+<PRE>repeat 100 [print &quot;hello if equalp random 5 0 [stop]]
+</PRE>
+
+<P>If it worked, this instruction would print the word <CODE>
+hello</CODE> some number of times, up to 100, but with a 20 percent chance
+of stopping after each time.  In fact, though, you can't use <CODE>
+stop</CODE> to stop a <CODE>repeat</CODE> invocation.)
+
+<P>Let's review what's been printed so far:
+<PRE>hello   printed by Ann
+hell    printed by Bill
+hel     printed by Cathy
+he      printed by David
+h       printed by Ellen
+</PRE>
+
+<P>Ellen has just stopped.  She reports back to David, the elf who hired
+her.  He's been waiting for her; now he can continue with his own
+work.  David is up to the fourth and final instruction in the
+definition of <CODE>downup</CODE>:
+<PRE>print :word
+</PRE>
+
+<P>What word will David print?  For David, <CODE>:word</CODE> refers
+to the contents of <EM>his own</EM> pocket named <CODE>word</CODE>.  That is,
+when David hires a <CODE>thing</CODE> expert, that expert looks first in
+David's pockets, before trying Cathy's, Bill's, and Ann's.  The word
+in David's <CODE>word</CODE> pocket is <CODE>he</CODE>.  So that's what David
+prints.
+
+<P>Okay, now David has reached the end of his instructions.  He reports
+back to his employer, Cathy.  She's been waiting for him, so that she
+can continue her own work.  She, too, has one more <CODE>print</CODE>
+instruction to evaluate.  She has the word <CODE>hel</CODE> in her <CODE>word</CODE>
+pocket, so that's what she prints.
+
+<P>Cathy now reports back to Bill.  He prints his own word, <CODE>hell</CODE>.
+He reports back to Ann.  She prints her word, <CODE>hello</CODE>.
+
+<P>When Ann finishes, she reports back to the Chief Elf, who prints a
+question mark on the screen and waits for you to type another
+instruction.
+
+<P>Here is the complete effect of this <CODE>downup</CODE> instruction:
+<PRE>hello   printed by Ann
+hell    printed by Bill
+hel     printed by Cathy
+he      printed by David
+h       printed by Ellen
+he      printed by David
+hel     printed by Cathy
+hell    printed by Bill
+hello   printed by Ann
+</PRE>
+
+<P>&raquo;You might want to see if the little person metaphor can help you
+understand the working of the <CODE>inout</CODE> procedure from Chapter 7.
+Remember that each elf carrying out the recursive procedure needs two
+pockets, one for each input.
+
+<P><H2>Tracing</H2>
+
+<P>Many people find the idea of multiple, simultaneous invocations of a
+single procedure confusing.  To keep track of what's going on, you
+have to think about several &quot;levels&quot; of evaluation at once.  &quot;Where
+is <CODE>downup</CODE> up to right now?&quot; -- &quot;Well, it depends what you
+mean.  The lowest-level <CODE>downup</CODE> invocation has just evaluated its
+first <CODE>print</CODE> instruction.  But there are three other invocations
+of <CODE>downup</CODE> that are in the middle of evaluating their recursive
+<CODE>downup</CODE> instructions.&quot;  This can be especially confusing if
+you've always been taught that the computer can only do one thing at a
+time.  People often emphasize the <EM>sequential</EM> nature of the
+computer; what we've been saying about recursion seems to violate that
+nature.
+
+<P>If this kind of confusion is a problem for you, it may help to think
+about a procedure like <CODE>downup</CODE> by <EM>tracing</EM> its progress.
+That is, we can tell the procedure to print out extra
+information each time it's invoked, to help you see the sequence
+of events.
+
+<P>Just for reference, here's <CODE>downup</CODE> again:
+
+<P><PRE>to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>The trace command takes a procedure name (or a list of
+procedure names, to trace more than one) as its input.  It tells Logo to
+notify you whenever that procedure is invoked:
+
+<P><PRE>? <U>trace &quot;downup</U>
+? <U>downup &quot;logo</U>
+<SMALL><CODE>( downup &quot;logo )
+</CODE></SMALL>logo
+<SMALL><CODE> ( downup &quot;log )
+</CODE></SMALL>log
+<SMALL><CODE>  ( downup &quot;lo )
+</CODE></SMALL>lo
+<SMALL><CODE>   ( downup &quot;l )
+</CODE></SMALL>l
+<SMALL><CODE>   downup stops
+</CODE></SMALL>lo
+<SMALL><CODE>  downup stops
+</CODE></SMALL>log
+<SMALL><CODE> downup stops
+</CODE></SMALL>logo
+<SMALL><CODE>downup stops
+</CODE></SMALL></PRE>
+
+<P>To make this result a little easier to read, I've printed the
+lines that are generated by the tracing in smaller letters than the lines
+generated by <CODE>downup</CODE> itself.  Of course the actual computer output all
+looks the same.
+
+<P>Each line of tracing information is indented by a number of spaces equal to
+the number of traced procedure invocations already active--the <EM>
+level</EM> of procedure invocation.  By looking only
+at the lines between one <CODE>downup</CODE> invocation and the equally-indented
+stopping line, you can see how much is accomplished by each recursive call.
+For example, the innermost invocation (at level 4) prints only the letter <CODE>l</CODE>.
+
+<P><H2>Level and Sequence</H2>
+
+<P>
+The result of tracing <CODE>downup</CODE> is most helpful
+if you think about it two-dimensionally.  If
+you read it <EM>vertically,</EM> it represents the <EM>sequence</EM> of
+instructions that fits the traditional model of computer programming.
+That is, the order of the printed lines represents the order of events
+in time.  First the computer enters <CODE>downup</CODE> at level 1.  Then it
+prints the word <CODE>logo</CODE>.  Then it enters <CODE>downup</CODE> at level 2.
+Then it prints <CODE>log</CODE>.  And so on.  Each printed line, including
+the &quot;official&quot; lines as well as the tracing lines, represents a
+particular instruction, carried out at a particular moment.  Reading
+the trace vertically will help you fit <CODE>downup</CODE>'s recursive method
+into your sequential habits of thought.
+
+<P>
+
+On the other hand, if you read the trace <EM>horizontally,</EM> it shows
+you the hierarchy of <EM>levels</EM> of <CODE>downup</CODE>'s invocations.
+To see this, think of the trace as divided into two overlapping
+columns.  The left column consists of the official pattern of words
+printed by the original <CODE>downup</CODE>.  In the right column, the
+pattern of entering and exiting from each level is shown.  The lines
+corresponding to a particular level are indented by a number of spaces
+that corresponds to the level number.  For example, find the line
+<PRE><SMALL><CODE> ( downup &quot;log )
+</CODE></SMALL></PRE>
+
+<P>and the matching
+<PRE><SMALL><CODE> downup stops
+</CODE></SMALL></PRE>
+
+<P>Between these two lines you'll see this:
+<PRE>log
+<SMALL><CODE>  ( downup &quot;lo )
+</CODE></SMALL>lo
+<SMALL><CODE>   ( downup &quot;l )
+</CODE></SMALL>l
+<SMALL><CODE>   downup stops
+</CODE></SMALL>lo
+<SMALL><CODE>  downup stops
+</CODE></SMALL>log
+</PRE>
+
+<P>What this shows is that levels 3 and 4 are <EM>part of</EM>
+level 2.  You can see that the traced invocation and stopping lines
+for levels 3 and 4 begin further to the right than the ones for level
+2.  Similarly, the lines for level 4 are further indented than the
+ones for level 3.  This variation in indentation is a graphic display
+of the superprocedure/subprocedure relationships among the various
+invocations.
+
+<P>There are two ways of thinking about the lines that aren't indented.
+One way is to look at all such lines within, say, level 2:
+<PRE>log
+lo
+l
+lo
+log
+</PRE>
+
+<P>This tells you that those five lines are printed somehow
+within the activity of level 2.  (In terms of the little people
+metaphor, those lines are printed by Bill, either directly or through
+some subordinate elf.)  Another way to look at it is this:
+<PRE><SMALL><CODE> ( downup &quot;log )
+</CODE></SMALL>log
+<SMALL><CODE>  ( downup &quot;lo )
+</CODE></SMALL>  ...
+<SMALL><CODE>  downup stops
+</CODE></SMALL>log
+<SMALL><CODE> downup stops
+</CODE></SMALL></PRE>
+
+<P>What this picture is trying to convey is that only the two
+<CODE>log</CODE> lines are <EM>directly</EM> within the control of level 2.
+The three shorter lines (<CODE>lo</CODE>, <CODE>l</CODE>, <CODE>lo</CODE>) are delegated to
+level 3.
+
+<P>We've seen three different points of view from which to read the
+trace, one vertical and two horizontal.  The vertical point of view
+shows the sequence of events in time.  The horizontal point of view
+can show either the <EM>total</EM> responsibility of a given level or
+the <EM>direct</EM> responsibility of the level.  To develop a full
+understanding of recursion, the trick is to be able to see all of
+these aspects of the program at the same time.
+
+<P>&raquo;Try invoking the traced <CODE>downup</CODE> with a single-letter input.
+Make a point of reading the resulting trace from all of these
+viewpoints.  Then try a two-letter input.
+
+<P>
+<H2>Instruction Stepping</H2>
+
+<P>Perhaps you are comfortable with the idea of levels of invocation, but
+confused about the particular order of instructions within <CODE>
+downup</CODE>.  Why should the <CODE>if</CODE> instruction be where it is, instead
+of before the first <CODE>print</CODE>, for example?  Logo's <CODE>step</CODE> command
+will allow you to examine each instruction line within <CODE>downup</CODE> as it
+is carried out:
+
+<P><PRE>? <U>step &quot;downup</U>
+? <U>downup &quot;ant</U>
+<SMALL><CODE>[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[downup butlast :word] &gt;&gt;>
+[print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[downup butlast :word] &gt;&gt;>
+[print :word] &gt;&gt;>
+</CODE></SMALL>a
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE>[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+</PRE>
+
+<P>After each of the lines ending with <CODE>&gt;&gt;&gt;</CODE>, Logo waits for you
+to press the RETURN or ENTER key.
+
+<P>You can combine <CODE>trace</CODE> and <CODE>step</CODE>:
+
+<P><PRE>? <U>step &quot;downup</U>
+? <U>trace &quot;downup</U>
+? <U>downup &quot;ant</U>
+<SMALL><CODE>( downup &quot;ant )
+[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[downup butlast :word] &gt;&gt;>
+ ( downup &quot;an )
+ [print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE> [if equalp count :word 1 [stop]] &gt;&gt;>
+ [downup butlast :word] &gt;&gt;>
+  ( downup &quot;a )
+  [print :word] &gt;&gt;>
+</CODE></SMALL>a
+<SMALL><CODE>  [if equalp count :word 1 [stop]] &gt;&gt;>
+  downup stops
+ [print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE> downup stops
+[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+<SMALL><CODE>downup stops
+</CODE></SMALL></PRE>
+
+<P>In this case, the <CODE>step</CODE> lines are indented to match
+the <CODE>trace</CODE> lines.
+
+<P>Once a procedure is <CODE>trace</CODE>d or <CODE>step</CODE>ped, it remains so until
+you use the <CODE>untrace</CODE> or <CODE>unstep</CODE> command to counteract the tracing
+or stepping.
+
+<P>&raquo;Try drawing a vertical line extending between the line
+<PRE> ( downup &quot;an )
+</PRE>
+
+<P>and the equally indented
+<PRE> downup stops
+</PRE>
+
+<P>Draw the line just to the left of the printing, after the
+indentation.  The line you drew should also touch exactly four
+instruction lines.  These four lines make up the entire definition of the
+<CODE>downup</CODE> procedure.  If we restrict our attention to
+one particular invocation of <CODE>downup</CODE>, like the one you've marked,
+you can see that each of <CODE>downup</CODE>'s instructions is, indeed,
+evaluated in the proper sequence.  Below each of these instruction
+lines, you can see the effect of the corresponding instruction.  The
+two <CODE>print</CODE> instructions each print one line in the left
+(unindented) column.  (In this case, they both
+print the word <CODE>an</CODE>.)  The <CODE>if</CODE> instruction has
+no visible effect.  But the recursive invocation of <CODE>downup</CODE> has
+quite a large effect; it brings into play the further invocation of
+<CODE>downup</CODE> with the word <CODE>a</CODE> as input.
+
+<P>One way to use the stepping information is to &quot;play computer.&quot;  Pretend
+you are the Logo interpreter, carrying out a <CODE>downup</CODE> instruction.
+Exactly what would you do, step by step?  As you work through the
+instructions making up the procedure definition, you can check
+yourself by comparing your activities to what's shown on the screen.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch8/v1ch8.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch10/v1ch10.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v1ch9/v1ch9.html b/js/games/nluqo.github.io/~bh/v1ch9/v1ch9.html
new file mode 100644
index 0000000..e68bebe
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v1ch9/v1ch9.html
@@ -0,0 +1,570 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 1 ch 9: How Recursion Works</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 1:
+<CITE>Symbolic Computing</CITE> 2/e Copyright (C) 1997 MIT
+<H1>How Recursion Works</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls1.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v1ch09.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v1-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v1ch8/v1ch8.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch10/v1ch10.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-1">MIT
+Press web page for Computer Science Logo Style</A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The last two chapters were about how to write recursive procedures.  This
+chapter is about how to <EM>believe in</EM> recursive procedures, and about
+understanding the process by which Logo carries them out.
+
+<P>
+<H2>Little People and Recursion</H2>
+
+<P>
+In Chapter 3, I introduced you to the metaphor of a computer full of
+little elves.  Each elf is an expert on a particular procedure.  I
+promised that this metaphor would be helpful later, when we'd have to
+think about two little people carrying out the same procedure at the
+same time.  Well, &quot;later&quot; is now.
+
+<P>I want to use the elf metaphor to think about the <CODE>downup</CODE> example
+of the previous chapter:
+<PRE>to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>Recall that we are imagining the computer to be full of
+elves, each of whom is a specialist in carrying out some procedure.
+There are <CODE>print</CODE> elves, <CODE>count</CODE> elves, <CODE>stop</CODE> elves, and
+so on.  Each elf has some number of pockets, used to hold the inputs
+for a particular invocation of a procedure.  So a <CODE>
+print</CODE> elf will have one pocket, while an <CODE>equalp</CODE> elf needs two
+pockets.
+
+<P>
+
+<P>We're going to be most interested in the <CODE>downup</CODE> elves and the
+contents of their pockets.  To help you keep straight which elf is
+which, I'm going to name the <CODE>downup</CODE> elves alphabetically: the
+first one will be Ann, then Bill, then Cathy, then David, and so on.
+Since we aren't so interested in the other elves, I won't bother
+naming them.
+
+<P>&raquo;If you're reading this with a group of other people, you may find it
+helpful for each of you to take on the role of one of the <CODE>downup</CODE>
+elves and actually stick words in your pockets.  If you have enough
+people, some of you should also serve as elves for the primitive
+procedures used, like <CODE>print</CODE> and <CODE>if</CODE>.
+
+<P>What happens when you type the instruction
+<PRE>downup &quot;hello
+</PRE>
+to Logo?  The Chief Elf reads this instruction and sees that
+it calls for the use of the procedure named <CODE>downup</CODE>.  She
+therefore recruits Ann, an elf who specializes in that procedure.
+Since <CODE>downup</CODE> has one input, the Chief Elf has to give Ann
+something to put in her one pocket.  Fortunately, the input you
+provided is a quoted word, which evaluates to itself.  No other elves
+are needed to compute the input.  Ann gets the word <CODE>hello</CODE> in her
+pocket.
+
+<P>Ann's task is to carry out the instructions that make up the
+definition of <CODE>downup</CODE>.  The first instruction is
+<PRE>print :word
+</PRE>
+This, you'll remember, is an abbreviation for
+<PRE>print thing &quot;word
+</PRE>
+Ann must hire two more elves, a <CODE>print</CODE> specialist and a
+<CODE>thing</CODE> specialist.  The <CODE>print</CODE> elf can't begin his work
+until he's given something to put in his pocket.  Ann asks the <CODE>
+thing</CODE> elf to figure out what that input should be.  The <CODE>thing</CODE>
+elf also gets an input, namely the word <CODE>word</CODE>.  As we saw in
+Chapter 3, <CODE>word</CODE> is what's written on the name tag in Ann's
+pocket, since <CODE>word</CODE> is the name of <CODE>downup</CODE>'s input.  So the
+<CODE>thing</CODE> elf looks in that pocket, where it finds the word
+<CODE>hello</CODE>.  That word is then given to the <CODE>print</CODE> elf, who
+prints it on your computer screen.
+
+<P>Ann is now ready to evaluate the second instruction:
+<PRE>if equalp count :word 1 [stop]
+</PRE>
+
+<P>Ann must hire several other elves to help her: an <CODE>if</CODE>
+elf, a <CODE>count</CODE> elf, and a <CODE>thing</CODE> elf.  I won't go through all
+the steps in computing the inputs to <CODE>if</CODE>; since the <CODE>count</CODE>
+of the word <CODE>hello</CODE> is not 1, the first input to <CODE>if</CODE> turns
+out to be the word <CODE>false</CODE>.  The second input to <CODE>if</CODE> is, of
+course, the list <CODE>[stop]</CODE>.  (Notice that Ann does <EM>not</EM> hire
+a <CODE>stop</CODE> specialist.  A list inside square brackets evaluates to
+itself, just like a quoted word, without invoking any procedures.  If
+the first input to <CODE>if</CODE> had turned out to be <CODE>true</CODE>, it would
+have been the <CODE>if</CODE> elf who would have hired a <CODE>stop</CODE> elf to
+carry out the instruction inside the list.)  Since its first input is
+<CODE>false</CODE>, the <CODE>if</CODE> elf ends up doing nothing.
+
+<P>Ann's third instruction is
+<PRE>downup butlast :word
+</PRE>
+
+<P>Here's where things start to get interesting.  Ann must
+hire <EM>another</EM> <CODE>downup</CODE> specialist, named Bill.  (Ann can't
+carry out this new <CODE>downup</CODE> instruction herself because she's
+already in the middle of a job of her own.)  Ann must give Bill an
+input to put in his pocket; to compute this input, she hires a <CODE>
+butlast</CODE> elf and a <CODE>thing</CODE> elf.  They eventually come up with the
+word <CODE>hell</CODE> (the <CODE>butlast</CODE> of <CODE>hello</CODE>), and that's what
+Ann puts in Bill's pocket.
+
+<P>We now have two active <CODE>downup</CODE> elves, Ann and Bill.  Each has a
+pocket.  Both pockets are named <CODE>word</CODE>, but they have different
+contents: Ann's <CODE>word</CODE> pocket contains <CODE>hello</CODE>, while Bill's
+<CODE>word</CODE> pocket contains <CODE>hell</CODE>.
+
+<P>
+<CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v1ch9/elf2.gif" ALT="figure: elf2"></CENTER>
+
+<P>Here is what this metaphor represents, in more technical
+language:  Although there is only one <EM>procedure</EM> named <CODE>
+downup</CODE>, there can be more than one <EM>invocation</EM> of that
+procedure in progress at a particular moment.  (An invocation of a
+procedure is also sometimes called an <EM>instantiation</EM> of the
+procedure.)  Each invocation has its own local variables; at this
+moment there are <EM>two</EM> variables named <CODE>word</CODE>.  It is
+perfectly possible for two variables to have the same name as long as
+they are associated with (local to) different procedure invocations.
+
+<P>If you had trouble figuring out how <CODE>downup</CODE> works in Chapter 7,
+it's almost certainly because of a misunderstanding about this
+business of local variables.  That's what makes the elf metaphor so
+helpful.  For example, if you're accustomed to programming in BASIC,
+then you're familiar with <EM>global</EM> variables as the only
+possibility in the language.  If all variables were global in Logo,
+then there could only be one variable in the entire computer named
+<CODE>word</CODE>.  Instead of representing variables as pockets in the
+elves' clothes, we'd have to represent them as safe deposit boxes kept
+in some central bank and shared by all the elves.
+
+<P>But even if you're familiar with Logo's use of local variables, you
+may have been thinking of the variables as being local to a <EM>
+procedure,</EM> instead of understanding that they are local to an <EM>
+invocation</EM> of a procedure.  In that case you may have felt
+perfectly comfortable with the procedures named <CODE>downup1</CODE>, <CODE>
+downup2</CODE>, and so on, each of them using a separate variable named <CODE>
+word</CODE>.  But you may still have gotten confused when the <EM>same</EM>
+variable <CODE>word</CODE>, the one belonging to the single procedure <CODE>
+downup</CODE>, seemed to have several values at once.
+
+<P>If you were confused in that way, here's how to use the elf metaphor
+to help yourself get unconfused:  Suppose the procedure definitions are
+written on scrolls, which are kept in a library.  There is only one
+copy of each scroll.  (That is, there is only one definition for a
+given procedure.)  All the elves who specialize in a particular
+procedure, like <CODE>downup</CODE>, have to share the same scroll.  Well, if
+variables were local to a procedure, they'd be pockets in the <EM>
+scroll,</EM> rather than pockets in the <EM>elves' jackets.</EM>  By
+directing your attention to the elves (the invocations) instead of the
+scrolls (the procedure definitions), you can see that there can be two
+variables with the same name (<CODE>word</CODE>), associated with the same
+procedure (<CODE>downup</CODE>), but belonging to different invocations
+(represented by the elves Ann and Bill).
+
+<P>We still have several more elves to meet, so I'm going to pass over
+some of the details more quickly now.  We've just reached the point
+where Bill is ready to set to work.  For his first instruction he
+hires a <CODE>print</CODE> elf, who prints the word <CODE>hell</CODE> on your
+screen.  Why <CODE>hell</CODE> and not <CODE>hello</CODE>?  The answer is that when
+Bill hires a <CODE>thing</CODE> expert to evaluate the expression <CODE>
+:word</CODE>, the <CODE>thing</CODE> rules say that that expert must look <EM>
+first</EM> in Bill's pockets, <EM>then</EM> (if Bill didn't have a pocket
+named <CODE>word</CODE>) in Ann's pockets.
+
+<P>Bill then carries out the <CODE>if</CODE> instruction, which again has no
+effect.  Then Bill is ready for the <CODE>downup</CODE> instruction.  He
+hires a third <CODE>downup</CODE> elf, named Cathy.  Bill puts the word <CODE>
+hel</CODE> in Cathy's pocket.  There are now three elves, all with pockets
+named <CODE>word</CODE>, each with a different word.
+
+<P>Cathy is now ready to get to work.  Don't forget, though, that Ann and
+Bill haven't finished their jobs.  Bill is still working on his third
+instruction, waiting for Cathy to report the completion of her task.
+Similarly, Ann is waiting for Bill to finish.
+
+<P>Cathy evaluates her first instruction, printing <CODE>hel</CODE> on the
+screen.  She evaluates the <CODE>if</CODE> instruction, with no effect.  Then
+she's ready for the <CODE>downup</CODE> instruction, the third one in the
+procedure definition.  To carry out this instruction, she hires David,
+a fourth <CODE>downup</CODE> expert.  She puts the word <CODE>he</CODE> in his
+pocket.
+
+<P>David's career is like that of the other <CODE>downup</CODE> elves we've met
+so far.  He starts by printing his input, the word <CODE>he</CODE>.  He
+evaluates the <CODE>if</CODE> instruction, with no effect.  (The <CODE>count</CODE>
+of the word <CODE>he</CODE> is still not equal to 1.)  He then gets to the
+recursive invocation of <CODE>downup</CODE>, for which he hires a fifth
+expert, named Ellen.  He puts the word <CODE>h</CODE> in Ellen's pocket.
+
+<P>Ellen's career is <EM>not</EM> quite like that of the other elves.  It
+starts similarly: she prints her input, the word <CODE>h</CODE>, on your
+screen.  Then she prepares to evaluate the <CODE>if</CODE> instruction.  This
+time, though, the first input to <CODE>if</CODE> turns out to be the word
+<CODE>true</CODE>, since the <CODE>count</CODE> of <CODE>h</CODE> is, indeed, 1.
+Therefore, the <CODE>if</CODE> elf evaluates the instruction contained in its
+second input, the list <CODE>[stop]</CODE>.  It hires a <CODE>stop</CODE> elf, whose
+job is to tell Ellen to stop working.  (Why Ellen?  Why not one of the
+other active elves?  There are <EM>seven</EM> elves active at the
+moment: Ann, Bill, Cathy, David, Ellen, the <CODE>if</CODE> elf, and the <CODE>
+stop</CODE> elf.  The rule is that a <CODE>stop</CODE> elf stops the <EM>
+lowest-level invocation of a user-defined procedure.</EM>  <CODE>If</CODE> and
+<CODE>stop</CODE> are primitives, so they don't satisfy the <CODE>stop</CODE> elf.
+The remaining five elves are experts in <CODE>downup</CODE>, a user-defined
+procedure; of the five, Ellen is the lowest-level invocation.)
+
+<P>(By the way, the insistence of <CODE>stop</CODE> on a user-defined procedure
+to stop is one of the few ways in which Logo treats such procedures
+differently from primitive procedures.  If you think about it, you'll
+see that it would be useless for <CODE>stop</CODE> to stop just the
+invocation of <CODE>if</CODE>.  That would mean that the <CODE>if</CODE> instruction
+would never do anything of interest and there would be no way to stop
+a procedure of your own conditionally.  But you can imagine other
+situations in which it would be nice to be able to <CODE>stop</CODE> a
+primitive.  Here's one:
+<PRE>repeat 100 [print &quot;hello if equalp random 5 0 [stop]]
+</PRE>
+
+<P>If it worked, this instruction would print the word <CODE>
+hello</CODE> some number of times, up to 100, but with a 20 percent chance
+of stopping after each time.  In fact, though, you can't use <CODE>
+stop</CODE> to stop a <CODE>repeat</CODE> invocation.)
+
+<P>Let's review what's been printed so far:
+<PRE>hello   printed by Ann
+hell    printed by Bill
+hel     printed by Cathy
+he      printed by David
+h       printed by Ellen
+</PRE>
+
+<P>Ellen has just stopped.  She reports back to David, the elf who hired
+her.  He's been waiting for her; now he can continue with his own
+work.  David is up to the fourth and final instruction in the
+definition of <CODE>downup</CODE>:
+<PRE>print :word
+</PRE>
+
+<P>What word will David print?  For David, <CODE>:word</CODE> refers
+to the contents of <EM>his own</EM> pocket named <CODE>word</CODE>.  That is,
+when David hires a <CODE>thing</CODE> expert, that expert looks first in
+David's pockets, before trying Cathy's, Bill's, and Ann's.  The word
+in David's <CODE>word</CODE> pocket is <CODE>he</CODE>.  So that's what David
+prints.
+
+<P>Okay, now David has reached the end of his instructions.  He reports
+back to his employer, Cathy.  She's been waiting for him, so that she
+can continue her own work.  She, too, has one more <CODE>print</CODE>
+instruction to evaluate.  She has the word <CODE>hel</CODE> in her <CODE>word</CODE>
+pocket, so that's what she prints.
+
+<P>Cathy now reports back to Bill.  He prints his own word, <CODE>hell</CODE>.
+He reports back to Ann.  She prints her word, <CODE>hello</CODE>.
+
+<P>When Ann finishes, she reports back to the Chief Elf, who prints a
+question mark on the screen and waits for you to type another
+instruction.
+
+<P>Here is the complete effect of this <CODE>downup</CODE> instruction:
+<PRE>hello   printed by Ann
+hell    printed by Bill
+hel     printed by Cathy
+he      printed by David
+h       printed by Ellen
+he      printed by David
+hel     printed by Cathy
+hell    printed by Bill
+hello   printed by Ann
+</PRE>
+
+<P>&raquo;You might want to see if the little person metaphor can help you
+understand the working of the <CODE>inout</CODE> procedure from Chapter 7.
+Remember that each elf carrying out the recursive procedure needs two
+pockets, one for each input.
+
+<P><H2>Tracing</H2>
+
+<P>Many people find the idea of multiple, simultaneous invocations of a
+single procedure confusing.  To keep track of what's going on, you
+have to think about several &quot;levels&quot; of evaluation at once.  &quot;Where
+is <CODE>downup</CODE> up to right now?&quot; -- &quot;Well, it depends what you
+mean.  The lowest-level <CODE>downup</CODE> invocation has just evaluated its
+first <CODE>print</CODE> instruction.  But there are three other invocations
+of <CODE>downup</CODE> that are in the middle of evaluating their recursive
+<CODE>downup</CODE> instructions.&quot;  This can be especially confusing if
+you've always been taught that the computer can only do one thing at a
+time.  People often emphasize the <EM>sequential</EM> nature of the
+computer; what we've been saying about recursion seems to violate that
+nature.
+
+<P>If this kind of confusion is a problem for you, it may help to think
+about a procedure like <CODE>downup</CODE> by <EM>tracing</EM> its progress.
+That is, we can tell the procedure to print out extra
+information each time it's invoked, to help you see the sequence
+of events.
+
+<P>Just for reference, here's <CODE>downup</CODE> again:
+
+<P><PRE>to downup :word
+print :word
+if equalp count :word 1 [stop]
+downup butlast :word
+print :word
+end
+</PRE>
+
+<P>The trace command takes a procedure name (or a list of
+procedure names, to trace more than one) as its input.  It tells Logo to
+notify you whenever that procedure is invoked:
+
+<P><PRE>? <U>trace &quot;downup</U>
+? <U>downup &quot;logo</U>
+<SMALL><CODE>( downup &quot;logo )
+</CODE></SMALL>logo
+<SMALL><CODE> ( downup &quot;log )
+</CODE></SMALL>log
+<SMALL><CODE>  ( downup &quot;lo )
+</CODE></SMALL>lo
+<SMALL><CODE>   ( downup &quot;l )
+</CODE></SMALL>l
+<SMALL><CODE>   downup stops
+</CODE></SMALL>lo
+<SMALL><CODE>  downup stops
+</CODE></SMALL>log
+<SMALL><CODE> downup stops
+</CODE></SMALL>logo
+<SMALL><CODE>downup stops
+</CODE></SMALL></PRE>
+
+<P>To make this result a little easier to read, I've printed the
+lines that are generated by the tracing in smaller letters than the lines
+generated by <CODE>downup</CODE> itself.  Of course the actual computer output all
+looks the same.
+
+<P>Each line of tracing information is indented by a number of spaces equal to
+the number of traced procedure invocations already active--the <EM>
+level</EM> of procedure invocation.  By looking only
+at the lines between one <CODE>downup</CODE> invocation and the equally-indented
+stopping line, you can see how much is accomplished by each recursive call.
+For example, the innermost invocation (at level 4) prints only the letter <CODE>l</CODE>.
+
+<P><H2>Level and Sequence</H2>
+
+<P>
+The result of tracing <CODE>downup</CODE> is most helpful
+if you think about it two-dimensionally.  If
+you read it <EM>vertically,</EM> it represents the <EM>sequence</EM> of
+instructions that fits the traditional model of computer programming.
+That is, the order of the printed lines represents the order of events
+in time.  First the computer enters <CODE>downup</CODE> at level 1.  Then it
+prints the word <CODE>logo</CODE>.  Then it enters <CODE>downup</CODE> at level 2.
+Then it prints <CODE>log</CODE>.  And so on.  Each printed line, including
+the &quot;official&quot; lines as well as the tracing lines, represents a
+particular instruction, carried out at a particular moment.  Reading
+the trace vertically will help you fit <CODE>downup</CODE>'s recursive method
+into your sequential habits of thought.
+
+<P>
+
+On the other hand, if you read the trace <EM>horizontally,</EM> it shows
+you the hierarchy of <EM>levels</EM> of <CODE>downup</CODE>'s invocations.
+To see this, think of the trace as divided into two overlapping
+columns.  The left column consists of the official pattern of words
+printed by the original <CODE>downup</CODE>.  In the right column, the
+pattern of entering and exiting from each level is shown.  The lines
+corresponding to a particular level are indented by a number of spaces
+that corresponds to the level number.  For example, find the line
+<PRE><SMALL><CODE> ( downup &quot;log )
+</CODE></SMALL></PRE>
+
+<P>and the matching
+<PRE><SMALL><CODE> downup stops
+</CODE></SMALL></PRE>
+
+<P>Between these two lines you'll see this:
+<PRE>log
+<SMALL><CODE>  ( downup &quot;lo )
+</CODE></SMALL>lo
+<SMALL><CODE>   ( downup &quot;l )
+</CODE></SMALL>l
+<SMALL><CODE>   downup stops
+</CODE></SMALL>lo
+<SMALL><CODE>  downup stops
+</CODE></SMALL>log
+</PRE>
+
+<P>What this shows is that levels 3 and 4 are <EM>part of</EM>
+level 2.  You can see that the traced invocation and stopping lines
+for levels 3 and 4 begin further to the right than the ones for level
+2.  Similarly, the lines for level 4 are further indented than the
+ones for level 3.  This variation in indentation is a graphic display
+of the superprocedure/subprocedure relationships among the various
+invocations.
+
+<P>There are two ways of thinking about the lines that aren't indented.
+One way is to look at all such lines within, say, level 2:
+<PRE>log
+lo
+l
+lo
+log
+</PRE>
+
+<P>This tells you that those five lines are printed somehow
+within the activity of level 2.  (In terms of the little people
+metaphor, those lines are printed by Bill, either directly or through
+some subordinate elf.)  Another way to look at it is this:
+<PRE><SMALL><CODE> ( downup &quot;log )
+</CODE></SMALL>log
+<SMALL><CODE>  ( downup &quot;lo )
+</CODE></SMALL>  ...
+<SMALL><CODE>  downup stops
+</CODE></SMALL>log
+<SMALL><CODE> downup stops
+</CODE></SMALL></PRE>
+
+<P>What this picture is trying to convey is that only the two
+<CODE>log</CODE> lines are <EM>directly</EM> within the control of level 2.
+The three shorter lines (<CODE>lo</CODE>, <CODE>l</CODE>, <CODE>lo</CODE>) are delegated to
+level 3.
+
+<P>We've seen three different points of view from which to read the
+trace, one vertical and two horizontal.  The vertical point of view
+shows the sequence of events in time.  The horizontal point of view
+can show either the <EM>total</EM> responsibility of a given level or
+the <EM>direct</EM> responsibility of the level.  To develop a full
+understanding of recursion, the trick is to be able to see all of
+these aspects of the program at the same time.
+
+<P>&raquo;Try invoking the traced <CODE>downup</CODE> with a single-letter input.
+Make a point of reading the resulting trace from all of these
+viewpoints.  Then try a two-letter input.
+
+<P>
+<H2>Instruction Stepping</H2>
+
+<P>Perhaps you are comfortable with the idea of levels of invocation, but
+confused about the particular order of instructions within <CODE>
+downup</CODE>.  Why should the <CODE>if</CODE> instruction be where it is, instead
+of before the first <CODE>print</CODE>, for example?  Logo's <CODE>step</CODE> command
+will allow you to examine each instruction line within <CODE>downup</CODE> as it
+is carried out:
+
+<P><PRE>? <U>step &quot;downup</U>
+? <U>downup &quot;ant</U>
+<SMALL><CODE>[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[downup butlast :word] &gt;&gt;>
+[print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[downup butlast :word] &gt;&gt;>
+[print :word] &gt;&gt;>
+</CODE></SMALL>a
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE>[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+</PRE>
+
+<P>After each of the lines ending with <CODE>&gt;&gt;&gt;</CODE>, Logo waits for you
+to press the RETURN or ENTER key.
+
+<P>You can combine <CODE>trace</CODE> and <CODE>step</CODE>:
+
+<P><PRE>? <U>step &quot;downup</U>
+? <U>trace &quot;downup</U>
+? <U>downup &quot;ant</U>
+<SMALL><CODE>( downup &quot;ant )
+[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+<SMALL><CODE>[if equalp count :word 1 [stop]] &gt;&gt;>
+[downup butlast :word] &gt;&gt;>
+ ( downup &quot;an )
+ [print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE> [if equalp count :word 1 [stop]] &gt;&gt;>
+ [downup butlast :word] &gt;&gt;>
+  ( downup &quot;a )
+  [print :word] &gt;&gt;>
+</CODE></SMALL>a
+<SMALL><CODE>  [if equalp count :word 1 [stop]] &gt;&gt;>
+  downup stops
+ [print :word] &gt;&gt;>
+</CODE></SMALL>an
+<SMALL><CODE> downup stops
+[print :word] &gt;&gt;>
+</CODE></SMALL>ant
+<SMALL><CODE>downup stops
+</CODE></SMALL></PRE>
+
+<P>In this case, the <CODE>step</CODE> lines are indented to match
+the <CODE>trace</CODE> lines.
+
+<P>Once a procedure is <CODE>trace</CODE>d or <CODE>step</CODE>ped, it remains so until
+you use the <CODE>untrace</CODE> or <CODE>unstep</CODE> command to counteract the tracing
+or stepping.
+
+<P>&raquo;Try drawing a vertical line extending between the line
+<PRE> ( downup &quot;an )
+</PRE>
+
+<P>and the equally indented
+<PRE> downup stops
+</PRE>
+
+<P>Draw the line just to the left of the printing, after the
+indentation.  The line you drew should also touch exactly four
+instruction lines.  These four lines make up the entire definition of the
+<CODE>downup</CODE> procedure.  If we restrict our attention to
+one particular invocation of <CODE>downup</CODE>, like the one you've marked,
+you can see that each of <CODE>downup</CODE>'s instructions is, indeed,
+evaluated in the proper sequence.  Below each of these instruction
+lines, you can see the effect of the corresponding instruction.  The
+two <CODE>print</CODE> instructions each print one line in the left
+(unindented) column.  (In this case, they both
+print the word <CODE>an</CODE>.)  The <CODE>if</CODE> instruction has
+no visible effect.  But the recursive invocation of <CODE>downup</CODE> has
+quite a large effect; it brings into play the further invocation of
+<CODE>downup</CODE> with the word <CODE>a</CODE> as input.
+
+<P>One way to use the stepping information is to &quot;play computer.&quot;  Pretend
+you are the Logo interpreter, carrying out a <CODE>downup</CODE> instruction.
+Exactly what would you do, step by step?  As you work through the
+instructions making up the procedure definition, you can check
+yourself by comparing your activities to what's shown on the screen.
+
+<P><A HREF="../v1-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v1ch8/v1ch8.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v1ch10/v1ch10.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2-toc2.html b/js/games/nluqo.github.io/~bh/v2-toc2.html
new file mode 100644
index 0000000..4959dfb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2-toc2.html
@@ -0,0 +1,439 @@
+<HTML>
+<HEAD>
+<TITLE>Advanced Techniques contents</TITLE>
+<link rel="shortcut icon" href="http://www.cs.berkeley.edu/~bh/csls2-tiny.png" type="image/png">
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1><EM>Computer Science Logo Style</EM><BR>
+Volume 2: <EM>Advanced Techniques</EM></H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P><TABLE width="100%"><TR>
+<TD><IMG SRC="csls2.jpg">
+<TD><TABLE>
+<TR><TD align="right"><A HREF="v1-toc2.html">Volume 1: <CITE>Symbolic Computing</CITE></A>
+<IMG SRC="csls1-tiny.jpg">
+<TR><TD align="right"><A HREF="v3-toc2.html">Volume 3: <CITE>Beyond Programming</CITE></A>
+<IMG SRC="csls3-tiny.jpg">
+<TR><TD align="right"><A HREF="logo.html">Download Berkeley Logo (UCBLogo)</A>
+<IMG SRC="ucblogo2-tiny.gif">
+<TR><TD align="right"><A HREF="index.html">Brian's home page</A>
+<IMG SRC="bh-tiny.jpg">
+<TR><TD align="right">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+<IMG SRC="mitp.jpg">
+</TABLE></TABLE>
+
+<HR>
+
+<P>Below this short table of contents is an expanded table of contents
+including sections within each chapter.  Click on the chapter name
+to jump down.  You can also download the complete text of each chapter
+in PDF format for elegant printing, or browse the HTML version.
+
+<P><EM>Note:  These books are still in copyright, and in print.  They are
+posted here for your personal use, not for resale or redistribution.
+Thanks!</EM>
+
+<p>
+<a href="http://www.azoft.com/people/seremina/edu/v2-toc2-romanian.html">View
+this
+page in Romanian</a> courtesy of <a href="http://www.azoft.com/">azoft</a>.
+
+<p><a href="
+http://cupegraf.com/blog/pocitac-vedy-logo-styl-tom-2-pokrocile-techniky/">
+Slovakian translation</a> courtesy of <a href="http://cupegraf.com">Gasper
+Halipovich</a>
+
+<UL>
+<LI>Preface
+(<A HREF="pdf/v2ch00.pdf">frontmatter in PDF</A>)
+(<A HREF="v2ch0/preface.html">HTML</A>)
+<LI>Acknowledgments
+(<A HREF="v2ch0/ack.html">HTML</A>)
+<LI>1.  <A HREF="v2-toc2.html#ch1">Data Files</A>
+(<A HREF="pdf/v2ch01.pdf">PDF</A>)
+(<A HREF="v2ch1/files.html">HTML</A>)
+<LI>2.  <A HREF="v2-toc2.html#ch2">Example: Finding File Differences</A>
+(<A HREF="pdf/v2ch02.pdf">PDF</A>)
+(<A HREF="v2ch2/diff.html">HTML</A>)
+<LI>3.  <A HREF="v2-toc2.html#ch3">Nonlocal Exit</A>
+(<A HREF="pdf/v2ch03.pdf">PDF</A>)
+(<A HREF="v2ch3/exit.html">HTML</A>)
+<LI>4.  <A HREF="v2-toc2.html#ch4">Example: Solitaire</A>
+(<A HREF="pdf/v2ch04.pdf">PDF</A>)
+(<A HREF="v2ch4/solitaire.html">HTML</A>)
+<LI>5.  <A HREF="v2-toc2.html#ch5">Program as Data</A>
+(<A HREF="pdf/v2ch05.pdf">PDF</A>)
+(<A HREF="v2ch5/prgdat.html">HTML</A>)
+<LI>6.  <A HREF="v2-toc2.html#ch6">Example: BASIC Compiler</A>
+(<A HREF="pdf/v2ch06.pdf">PDF</A>)
+(<A HREF="v2ch6/basic.html">HTML</A>)
+<LI>7.  <A HREF="v2-toc2.html#ch7">Pattern Matcher</A>
+(<A HREF="pdf/v2ch07.pdf">PDF</A>)
+(<A HREF="v2ch7/match.html">HTML</A>)
+<LI>8.  <A HREF="v2-toc2.html#ch8">Property Lists</A>
+(<A HREF="pdf/v2ch08.pdf">PDF</A>)
+(<A HREF="v2ch8/plist.html">HTML</A>)
+<LI>9.  <A HREF="v2-toc2.html#ch9">Example: Doctor</A>
+(<A HREF="pdf/v2ch09.pdf">PDF</A>)
+(<A HREF="v2ch9/doctor.html">HTML</A>)
+<LI>10.  <A HREF="v2-toc2.html#ch10">Iteration, Control Structures, Extensibility</A>
+(<A HREF="pdf/v2ch10.pdf">PDF</A>)
+(<A HREF="v2ch10/iter.html">HTML</A>)
+<LI>11.  <A HREF="v2-toc2.html#ch11">Example: Cryptographer's Helper</A>
+(<A HREF="pdf/v2ch11.pdf">PDF</A>)
+(<A HREF="v2ch11/crypto.html">HTML</A>)
+<LI>12.  <A HREF="v2-toc2.html#ch12">Macros</A>
+(<A HREF="pdf/v2ch12.pdf">PDF</A>)
+(<A HREF="v2ch12/macro.html">HTML</A>)
+<LI>13.  <A HREF="v2-toc2.html#ch13">Example: Fourier Series Plotter</A>
+(<A HREF="pdf/v2ch13.pdf">PDF</A>)
+(<A HREF="v2ch13/fourie.html">HTML</A>)
+<LI><A HREF="v2-toc2.html#refman">Berkeley Logo Reference Manual</A>
+(<A HREF="pdf/v2ch14.pdf">backmatter in PDF</A>)
+(<A HREF="v2ch14/manual.html">HTML</A>)<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;<SMALL><SMALL>The PDF link is to the published book;
+the HTML link is to the current Berkeley Logo manual (HTML and PDF).</SMALL></SMALL>
+<LI>Index of Defined Procedures
+(<A HREF="v2ch14/appuindex.html">HTML</A>)
+<LI>General Index
+(<A HREF="v2ch14/appindex.html">HTML</A>)
+</UL>
+
+<HR>
+
+<TABLE><TR><TD><H3>Preface</H3><TD>
+(<A HREF="pdf/v2ch00.pdf">frontmatter in PDF</A>)
+(<A HREF="v2ch0/preface.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>About the projects
+<LI>About this series
+<LI>How to read this book.
+</UL>
+
+<TABLE><TR><TD><H3>Acknowledgments</H3><TD>
+(<A HREF="v2ch0/ack.html">HTML</A>)
+</TABLE>
+
+<TABLE><TR><TD><H3><A name="ch1">1.  Data Files</A></H3><TD>
+(<A HREF="pdf/v2ch01.pdf">PDF</A>)
+(<A HREF="v2ch1/files.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Reader and Writer
+<LI>End of File
+<LI>Case Sensitivity
+<LI>Dribble Files
+<LI>A Text Formatter
+<LI>Page Geometry
+<LI>The Program
+<LI>Improving the Formatter
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch2">2.  Example: Finding File Differences</A></H3><TD>
+(<A HREF="pdf/v2ch02.pdf">PDF</A>)
+(<A HREF="v2ch2/diff.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This project is an implementation in Logo of the often-needed
+utility program to find the changes between two versions of a file.</I>
+
+<UL>
+<LI>Program Overview
+<LI>The File Information Block Abstract Data Type
+<LI>Saving and Re-Reading Input Lines
+<LI>Skipping Equal Lines
+<LI>Comparing and Remembering Unequal Lines
+<LI>Reporting a Difference
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch3">3.  Nonlocal Exit</A></H3><TD>
+(<A HREF="pdf/v2ch03.pdf">PDF</A>)
+(<A HREF="v2ch3/exit.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Quiz Program Revisited
+<LI>Nonlocal Exit and Modularity
+<LI>Nonlocal Output
+<LI>Catching Errors
+<LI>Ending It All
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch4">4.  Example: Solitaire</A></H3><TD>
+(<A HREF="pdf/v2ch04.pdf">PDF</A>)
+(<A HREF="v2ch4/solitaire.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This project deals a simulated deck of cards and allows the user to play a
+game of solitaire.  The program checks for legal moves and displays the
+board layout.</I>
+
+<UL>
+<LI>The User Interface
+<LI>The Game of Solitaire
+<LI>Running the Program
+<LI>Program Structure
+<LI>Initialization
+<LI>Data Abstraction
+<LI>Stacks
+<LI>Program as Data
+<LI>Multiple Branching
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch5">5.  Program as Data</A></H3><TD>
+(<A HREF="pdf/v2ch05.pdf">PDF</A>)
+(<A HREF="v2ch5/prgdat.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI><CODE>Text</CODE> and <CODE>Define</CODE>
+<LI>Automated Definition
+<LI>A Single-Keystroke Program Generator
+<LI>Procedure Cross-Reference Listings
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch6">6.  Example: BASIC Compiler</A></H3><TD>
+(<A HREF="pdf/v2ch06.pdf">PDF</A>)
+(<A HREF="v2ch6/basic.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This project is a first look at what it means to compile a program.
+It's simplified because it translates BASIC programs into Logo,
+rather than into machine language.  But it introduces the ideas that
+will return in more realistic form in the third volume.</I>
+
+<UL>
+<LI>A Short Course in BASIC
+<LI>Using the BASIC Translator
+<LI>Overview of the Implementation
+<LI>The Reader
+<LI>The Parser
+<LI>The Code Generator
+<LI>The Runtime Library
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch7">7.  Pattern Matcher</A></H3><TD>
+(<A HREF="pdf/v2ch07.pdf">PDF</A>)
+(<A HREF="v2ch7/match.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This program looks for patterns in a list.  It can be used,
+for example, to recognize particular types of English sentences.</I>
+
+<UL>
+<LI>Reinventing <CODE>Equalp</CODE> for Lists
+<LI>A Simple Pattern Matcher
+<LI>Efficiency and Elegance
+<LI>Logo's Evaluation of Inputs
+<LI>Indirect Assignment
+<LI>Defaults
+<LI>Program as Data
+<LI>Parsing Rules
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch8">8.  Property Lists</A></H3><TD>
+(<A HREF="pdf/v2ch08.pdf">PDF</A>)
+(<A HREF="v2ch8/plist.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Naming Properties
+<LI>Writing Property List Procedures in Logo
+<LI>Property Lists Aren't Variables
+<LI>How Language Designers Earn Their Pay
+<LI>Fast Replacement
+<LI>Defaults
+<LI>An Example: Family Trees
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch9">9.  Example: Doctor</A></H3><TD>
+(<A HREF="pdf/v2ch09.pdf">PDF</A>)
+(<A HREF="v2ch9/doctor.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This project uses the pattern matcher to carry out a conversation with the
+user, pretending to be a psychiatrist.  It is a Logo version of a program
+originally written by Joseph Weizenbaum.</I>
+
+<UL>
+<LI>Eliza and Artificial Intelligence
+<LI>Eliza's Linguistic Strategy
+<LI>Stimulus-Response Psychology
+<LI>Property Lists
+<LI>Generated Symbols
+<LI>Modification of List Structure
+<LI>Linguistic Structure
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch10">10.  Iteration, Control Structures, Extensibility</A></H3><TD>
+(<A HREF="pdf/v2ch10.pdf">PDF</A>)
+(<A HREF="v2ch10/iter.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Recursion as Iteration
+<LI>Numeric Iteration
+<LI>Logo: an Extensible Language
+<LI>No Perfect Control Structures
+<LI>Iteration Over a List
+<LI>Implementing <CODE>Apply</CODE>
+<LI>Mapping
+<LI>Mapping as a Metaphor
+<LI>Other Higher Order functions
+<LI>Mapping Over Trees
+<LI>Iteration and Tail Recursion
+<LI>Multiple Inputs to <CODE>For</CODE>
+<LI>The Evaluation Environment Bug
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch11">11.  Example: Cryptographer's Helper</A></H3><TD>
+(<A HREF="pdf/v2ch11.pdf">PDF</A>)
+(<A HREF="v2ch11/crypto.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This project is a tool to assist the user in solving cryptograms
+(simple substitution ciphers).  It makes some guesses automatically, and
+records other guesses made by the user.</I>
+
+<UL>
+<LI>Program Structure
+<LI>Guided Tour of Global Variables
+<LI>What's in a Name?
+<LI>Flag Variables
+<LI>Iteration Over Letters
+<LI>Computed Variable Names
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch12">12.  Macros</A></H3><TD>
+(<A HREF="pdf/v2ch12.pdf">PDF</A>)
+(<A HREF="v2ch12/macro.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI><CODE>Localmake</CODE>
+<LI>Backquote
+<LI>Implementing Iterative Commands
+<LI>Debugging Macros
+<LI>The Real Thing
+</UL>
+
+<TABLE><TR><TD><H3><A name="ch13">13.  Example: Fourier Series Plotter</A></H3><TD>
+(<A HREF="pdf/v2ch13.pdf">PDF</A>)
+(<A HREF="v2ch13/fourie.html">HTML</A>)
+</TABLE>
+
+<P>
+<I>This program displays graphs of the Fourier (harmonics of sine waves)
+approximation to a square wave.  It illustrates how harmonics are combined
+to control the timbres of notes in computer-generated music.</I>
+
+<UL>
+<LI>Square Waves
+<LI>Keyword Inputs
+<LI>Making the Variables Local
+<LI>Indirect Assignment
+<LI>Numeric Precision
+<LI>Dynamic Scope
+<LI>Further Explorations
+<LI>Program Listing
+</UL>
+
+<H2>Appendices</H2><TD>
+(<A HREF="pdf/v2ch14.pdf">backmatter in PDF</A>)
+</TABLE>
+
+<TABLE><TR><TD><H3><A name="refman">Berkeley Logo Reference Manual</A></H3><TD>
+(<A HREF="v2ch14/manual.html">HTML</A>)
+</TABLE>
+
+<UL>
+<LI>Entering and Leaving Logo
+<LI>Tokenization
+<LI>Data Structure Primitives
+<UL><LI>Constructors
+<LI>Selectors
+<LI>Mutators
+<LI>Predicates
+<LI>Queries
+</UL>
+<LI>Communication
+<UL><LI>Transmitters
+<LI>Receivers
+<LI>File Access
+<LI>Terminal Access
+</UL>
+<LI>Arithmetic
+<UL><LI>Numeric Operations
+<LI>Predicates
+<LI>Random Numbers
+<LI>Print Formatting
+<LI>Bitwise Operations
+</UL>
+<LI>Logical operations.
+<LI>Graphics
+<UL><LI>Turtle Motion
+<LI>Turtle Motion Queries
+<LI>Turtle and Window Control
+<LI>Turtle and Window Queries
+<LI>Pen and Background Control
+<LI>Pen Queries
+</UL>
+<LI>Workspace Management
+<UL><LI>Procedure Definition
+<LI>Variable Definition
+<LI>Property Lists
+<LI>Predicates
+<LI>Queries
+<LI>Inspection
+<LI>Workspace Control
+</UL>
+<LI>Control Structures
+<UL><LI>Template-Based Iteration
+<LI>Macros
+</UL>
+<LI>Error Processing
+<LI>Error Codes
+<LI>Special variables
+</UL>
+
+<TABLE><TR><TD><H3>Index of Defined Procedures</H3><TD>
+(<A HREF="v2ch14/appuindex.html">HTML</A>)
+</TABLE>
+
+<TABLE><TR><TD><H3>General Index</H3><TD>
+(<A HREF="v2ch14/appindex.html">HTML</A>)
+</TABLE>
+<P><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch0/ack.html b/js/games/nluqo.github.io/~bh/v2ch0/ack.html
new file mode 100644
index 0000000..8067b79
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch0/ack.html
@@ -0,0 +1,73 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2:Acknowledgments</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Acknowledgments</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch1/v2ch1.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Cynthia Solomon and Margaret Minsky are the people who
+got me started at the enterprise of developing exemplary Logo projects.
+People in the Logo community had been talking for many years about the need
+for an advanced Logo project book, but nobody got around to it until 1982
+when Atari had all the money in the world and used some of it to establish a
+Corporate Research Department.  Cynthia was in charge of the Atari research
+lab in Cambridge, where many MIT old-timers were gathered.  She and Margaret
+decided that this was the time for the project book.  I was one of several
+people they recruited to contribute projects.  The result of that effort is
+called <EM>LogoWorks: Challenging Programs in Logo</EM> (McGraw-Hill, 1985).
+
+<P>This book is somewhat different from <EM>LogoWorks</EM> in that it's part of
+a series, so I can make assumptions here about what the reader already knows
+from having read the first volume.  Still, I've benefited greatly from what
+I learned from Cynthia and Margaret about how to explain the structure of a
+large programming project.
+
+<P>The people who have read and commented on early drafts of this book include
+Hal Abelson, Alison Birch, Sharon Yoder,
+Mike Clancy, Jim Davis, Batya Friedman,
+Paul Goldenberg, Margaret Minsky, and Cynthia Solomon.  As for
+the first volume, I am particularly indebted to Hal and Paul for their
+strong encouragement and their deep insights into issues both in computer
+science and in education.  Matthew Wright reviewed some chapters
+for the second edition.
+
+<P>Berkeley Logo, the interpreter used in this edition, is a collective effort
+of many people, both at Berkeley and across the Internet.  My main debt in
+that project is to three former students: Dan van Blerkom, 
+Michael Katz, and Doug Orleans.
+At the risk of missing someone, I also want to acknowledge
+substantial contributions by Freeman Deutsch,
+Khang Dao, Fred Gilham, Yehuda Katz,
+George Mills, and Randy Sargent.
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch1/v2ch1.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch0/preface.html b/js/games/nluqo.github.io/~bh/v2ch0/preface.html
new file mode 100644
index 0000000..cec9ca3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch0/preface.html
@@ -0,0 +1,272 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2:Preface</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Preface</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right">[no back]
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This is the second volume of <EM>Computer Science Logo Style,</EM> a
+three-volume series that uses the Logo programming language as the medium
+for a presentation of a range of topics in computer science.  The main
+audience I had in mind for these books was high school students, but it's
+turned out that they have also been used in teacher training, and to some
+extent by independent adult learners.
+
+<P>In the first edition, the first volume was a complete Logo tutorial,
+explaining all of the features of the language; the second volume was
+entirely devoted to programming projects.  (The third volume, then and
+now, is a sampler of topics from undergraduate computer science courses.)
+My idea was that students would spend their first year in an intensive
+programming course, and would then pursue their own programming projects
+on an independent study basis, using my projects as examples.
+
+<P>As it turned out, people found the first volume both too hard and too easy.
+It was too hard because it arrived too soon at the more advanced and
+complicated features of Logo; it was too easy because the actual programming
+examples were all short enough to fit on a page.  Such tiny examples didn't
+help the learner extrapolate to the design of a program that could
+actually do something interesting.  This deficiency may have encouraged
+some readers to conclude that Logo is just a toy, and that serious projects
+should be done in a &quot;serious&quot; language such as Pascal or C++.
+
+<P>In this second edition I've rearranged things.  The first volume now teaches
+only the core features of Logo, the ones every programmer must understand;
+it also includes three of the projects that were originally in the second
+volume.  This volume is now a more advanced programming text; it alternates
+tutorial chapters on advanced language features with example projects that
+demonstrate those features.
+
+<P>The project chapters serve two purposes at once.  First, each project is an
+example of something you might actually want to do.  The emphasis
+is on getting the computer to do something fun and interesting.  Each of the
+projects in this book is here because I thought I'd enjoy writing it
+myself, not because it fit some subtle pedagogic purpose.  The projects are
+offered as case studies, as examples to inspire your own creative efforts.
+
+<P>At the same time, I <EM>am</EM> a teacher, and in this book I'm trying to
+teach some ideas about programming technique and programming style.  Often
+there is an easy way and a hard way to achieve a certain result, and you're
+better off if you know the easy way.  Nobody has a complete list of such
+techniques; you'll be learning new ones for as long as you maintain your
+interest in computer programming.  The ones I discuss in this book are the
+ones that came up in these particular projects.  Ideally, as your teacher, I
+would look over your shoulder while you're working, and I'd tell you about
+the techniques that apply to <EM>your</EM> projects.  I can't do that in a
+book, and so instead I'm presenting some projects of my own and discussing
+them as I would discuss your projects if I knew you personally.
+
+<P>With one exception, each example chapter comes after a tutorial chapter that
+has introduced a new Logo programming technique, and that technique is used
+in the project.  (The exception, the pattern matching project, is an advanced
+programming technique in its own right, and is used in a later project.)
+But the technique from the previous chapter is rarely the most important
+aspect of the project!  Each project exhibits many different techniques,
+and the project chapters describe some of them.
+
+<P>This book does not make much explicit reference to the first volume, but to
+understand the discussion here, you should be familiar with the ideas
+presented in Volume 1: evaluation, procedures, locality, iteration,
+recursion, mapping, predicates, operations, and so on.
+
+<P>Teaching and learning, by the way, don't necessarily imply a classroom in a
+school.  I like to imagine you curled up with this book in front of your
+home computer, playing around with one of these projects just for the fun of
+it.  Pretend I'm a friend or relative who happens to be a professional
+computer scientist.  On the other hand, if you <EM>are</EM> reading this for
+a course in a school, you have the advantage of a living teacher who can
+provide the kind of individual attention to your specific projects that I
+can't.  There are advantages and disadvantages either way.
+
+<P><H2>About the Projects</H2>
+
+<P>Although I now have the projects linked with tutorial chapters, in the
+first edition I organized them into five categories, based not on the
+programming techniques used but rather on the purposes of the programs.  The
+projects reflect aspects of my own character:  I came to computers by way of
+an early interest in mathematics; my computing background is in
+artificial intelligence and in systems programming; I tend
+to think in words, not in pictures.  I think it may give the collection of
+projects a more coherent feel if I explain the categories in which they
+were written, even though the book is no longer organized around
+those categories.
+
+<P>The first is cryptography.  One of the first books I can
+remember buying, as a child in elementary school, was about secret codes.
+Besides the universal appeal of knowing a secret, cryptography was
+interesting to me because it's a <EM>mathematical</EM> sort of puzzle, like
+those logic problems about who lives in the yellow house.  The
+Cryptographer's Helper project in this volume includes a very small effort
+at artificial intelligence: the program makes some guesses, on its own, to
+start solving a cryptogram.  The Playfair Cipher project, now moved to the
+first volume, deals with a more complicated technique for encoding a
+message, but it doesn't try to break such a code.
+
+<P>The second category is games.  I'm not a video game enthusiast; hand-eye
+coordination isn't my strong point.  (I never really learned to ride a
+bicycle!)  Anyway, writing video game programs depends too much on the
+particular hardware of your computer, so I can't do it in this general
+book.<SUP>*</SUP>  Instead I've written two simple
+strategy games.  In the first volume is a program that plays tic-tac-toe.  This game
+is extremely trivial for a human being, but it's surprisingly hard to
+formulate strategy rules that are simple and precise enough to embody in a
+computer program.  Also, it's an opportunity to throw in a little bit of
+graphics programming, to draw the board and fill it with Xs and Os.  In this
+volume is a program that deals out a hand of solitaire and maintains the display of
+the layout as you play the hand.  Before I wrote this program, I had been
+feeling bored and lonely for an extended period, and I was wasting a lot of
+time playing solitaire myself.  I figured it would be more productive to
+write a computer program!
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>You can find a video game that I wrote in the collection
+<EM>LogoWorks: Challenging Programs in Logo</EM>, edited by Solomon,
+Minsky, and Harvey (McGraw-Hill, 1985).</SMALL></BLOCKQUOTE></SMALL><P>The third category is mathematics.  I once spent some time working as a
+systems programmer at a computer music research center in Paris, and this
+volume includes a project about Fourier analysis, the mathematical
+basis of computer music.  The project demonstrates graphically how a complex
+waveform, representing the texture of a sound, can be built up from much
+simpler elements.  In the first volume is a program to solve the kind of
+problem, often found on IQ tests, in which you are given pitchers of certain
+sizes and asked to use them to measure a given amount of water by pouring
+back and forth.  This project illustrates the idea of searching through a
+&quot;solution space&quot; of possible pouring steps.
+
+<P>The fourth category is that of utility programs.  This is actually
+the area of programming I know best: writing things that are not complete
+applications in themselves, but rather tools to help in the creation of even
+larger projects.  For the second edition I've replaced the original
+projects in this category with two new ones.  The project Finding File
+Differences is a utility program that can be used to compare two versions
+of a file to see what's changed from the old one to the new one.  Then
+there is a compiler for the BASIC programming language; besides illustrating
+the idea of program as data--the compiler generates new Logo procedures
+to carry out the instructions in a BASIC program--this project may help to
+prepare the reader for the more complicated Pascal compiler in the third
+volume.
+
+<P>The fifth category is pattern matching.  This category
+combines my interests in systems programming and
+artificial intelligence.  The first project is a tool, like the
+ones in the utilities category, but it's a tool designed specifically for
+artificial intelligence applications: a pattern matcher.  This program
+compares a particular list with a general template, or pattern.  Instead of
+checking for exact equality like <CODE>equalp</CODE>, the pattern matcher checks
+for a kind of &quot;fill in the blanks&quot; partial equality.  The second project
+in this category uses the pattern matcher to implement <CODE>doctor</CODE>, another famous
+artificial intelligence program that simulates a conversation with the user.
+
+<P><H2>About This Series</H2>
+
+<P><EM>Computer Science Logo Style</EM> is intended to bring to the hobbyist
+audience a particular point of view about computer science: the
+artificial intelligence view.  This way of looking at computers is
+quite different from the more usual software engineering approach.
+In that approach, you are always dealing with a
+very well-defined problem, and are looking for the best way to solve it.
+Software engineers like to start with a formal problem statement, and then
+design a computer program to fit.  They believe that the design process
+should be <EM>top-down</EM>; you should start with the overall structure and
+work down to the details.  Their preferred programming language is
+Pascal.
+
+<P>In artificial intelligence, the problems are not usually so well
+defined.  Starting with a vague problem statement like &quot;develop a good
+strategy for playing chess,&quot; AI programmers can't begin with a rigid program
+specification.  Instead, they build <EM>tools:</EM> program fragments that
+can be pieced together to form larger programs.  The programming process
+involves writing code, testing, coming up with new ideas, and modifying the
+program interactively.  This process is encouraged by an interactive
+language like Lisp or Logo.
+
+<P>Computer programming is a great intellectual hobby; it provides the same
+opportunity for creative, concrete work in mathematical thinking that
+drama or creative writing does for verbal thinking.  A learner can have
+years of intellectual adventure just learning to write better and better
+programs.  Finally, though, there may come a time
+when the learner gets bored with just writing more and more programs, and
+seeks a deeper understanding of the issues behind this practical work.  The
+third volume of this series, <EM>Beyond Programming,</EM> addresses
+the needs of these learners by introducing them to some of the elements of
+university-level computer science, still in the context of Logo programming.
+
+<P><H2>How to Read This Book</H2>
+
+<P>You should have each program actually available to you on a computer as you
+read about it.  These programs can be downloaded
+<A HREF="../downloads/csls-programs">here</A>.
+
+<P>There are many dialects of Logo; this book uses Berkeley Logo, a free
+version available for PC, Macintosh, and Unix systems.  The more fundamental
+Logo techniques used in the first volume are more or less standard among
+Logo implementations, but some of the advanced techniques in this volume
+are unique to Berkeley Logo.  Download Berkeley Logo
+<A HREF="../logo.html">here</A>.
+
+<P>The programs you see here are essentially the programs I wrote as I was
+trying to get each project to work.  I didn't start with a particular
+programming style in mind and then invent an example to illustrate the
+style.  It's not always obvious what is the &quot;correct&quot; style for a given
+problem; sometimes one way is much easier to understand, for example, while
+a different solution may run much more efficiently.  The comments in
+each chapter sometimes suggest alternative ways in which I might have
+written some piece of the program.  I try to explain why I chose the style I
+did, although sometimes the real explanation is simply that that's the first
+thing I thought of.  I've modified almost all of these programs for the
+second edition, and some of the chapters explain my second thoughts.
+
+<P>Each example chapter begins with an explanation of what the project is all about.
+Remember that these projects were meant to be interesting in themselves, not
+just as vehicles for a discussion of programming techniques!  The discussion
+in each chapter ends with a return to the purpose of the project, with
+suggestions for how that purpose might be extended.  One source of ideas for
+projects of your own is to extend someone else's work, and one important
+purpose of this book is to give you ideas for such starting points.
+In between comes a technical discussion of the programming techniques used.
+
+<P>What I do <EM>not</EM> provide, generally, is a guided tour of every
+procedure.  One of the things you should learn from this book is the ability
+to read a long program on your own.  You should recognize some of the
+typical categories of procedures, like ones that apply a given command to
+each member of a list.  In the discussions, rather than explain every
+detail, I try to focus your attention on the parts of the program that seem
+to illuminate some more general technical issue.  A complete listing of the
+program is at the end of each example chapter.
+
+<P>The programs in this book are copyright, but you can use, copy, and
+redistribute them freely; the exact terms are given in the GNU General
+Public License, which is distributed with the programs and is printed
+in the first volume of this series.  Essentially, the only restriction
+is that you can't use these programs as the basis for your own commercial
+programs; if you extend these projects, you can only distribute your
+extensions on the same free terms.  Share ideas, don't hoard them!
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P>[no back]
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch1/files.html b/js/games/nluqo.github.io/~bh/v2ch1/files.html
new file mode 100644
index 0000000..2cfa1ec
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch1/files.html
@@ -0,0 +1,777 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 1: Data Files</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Data Files</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch2/v2ch2.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="format.lg"><CODE>format</CODE></A>
+
+
+<P>The programming techniques that you learned in the first volume of this
+series are all you need to express any computation.  That is, given any
+question that a computer program can answer, you can write the program in
+Logo using those techniques.  Also, those techniques can be used, with few
+if any changes in notation, in any implementation of Logo.  However, saying
+that a problem can be solved using certain tools doesn't mean that it can be
+solved in the most convenient way.  In this volume the overall goal is to
+expand your repertoire of Logo techniques, so that you'll find it easier to
+deal with more difficult problems.  Some of the techniques here are unique
+to Berkeley Logo; others exist in other dialects, but in significantly
+different forms.
+
+<P>Probably the most glaring omission in the first volume is that we made no
+provision for saving information from one session to the next.  (You do know
+how to save a Logo workspace, but that's too all-or-nothing to be very
+useful.  You'd like to be able to save specific kinds of information, and
+perhaps use that information in some program outside of Logo.)  In this
+chapter we'll explore the use of <EM>data files</EM> in Logo
+programs.
+
+<P>There isn't much in the way of truly new ideas here.  There are a few new
+primitives and a few grubby details about how files are named in your
+particular computer, but for the most part you won't have to change the way
+you think about the programming process.  My plan for this chapter is to
+give a quick summary of the vocabulary you'll need, and spend most of the
+chapter on a practical programming project that will show you the sort of
+thing you can accomplish easily in Logo.
+
+<P><H2>Reader and Writer</H2>
+
+<P>We've been reading and writing data all along.  We've been reading
+from the keyboard, with operations like <CODE>readlist</CODE> and <CODE>
+readchar</CODE>, and we've been writing to your screen, with commands
+like <CODE>print</CODE> and <CODE>type</CODE>.
+
+<P>The goal now is to read and write the same data, but from and to other
+devices.  This includes files on a hard disk or a diskette,
+but also things like printers or TV cameras if you have them.  The
+same procedures that read the keyboard and write the screen can be used for
+these other devices as well.  The trick is to divert the attention of those
+procedures to someplace else.
+
+<P>The part of the Logo interpreter that reads characters for <CODE>readlist</CODE>
+and <CODE>readchar</CODE> is called the <EM>reader;</EM> the part that handles
+<CODE>print</CODE> and its friends is the <EM>writer.</EM> The commands
+<CODE>setread</CODE> and <CODE>setwrite</CODE> tell the reader and the writer,
+respectively, what file or device to use.  The input to either command is
+the name of a file or device.  The format of that name will vary from one
+operating system to another, so you should look it up in your computer's
+reference manual.  Generally it will be the same format that you (I assume)
+have already been using as input to the <CODE>save</CODE> and <CODE>load</CODE> commands.
+
+<P>If you invoke <CODE>setread</CODE> with the empty list as input, it tells the
+reader to read from the keyboard.  If you give <CODE>setwrite</CODE> the
+empty list as input, it tells the writer to write to the screen.  In
+other words the empty list &quot;turns off&quot; whatever file or device you
+may have been using and returns to Logo's usual style of
+interaction.
+
+<P>You can switch the attention of the reader or the writer among several files
+in rotation without &quot;losing your place&quot; in each one.  You must <EM>open</EM> a
+file when you want to begin reading or writing it before you can use it as
+input to <CODE>setread</CODE> or <CODE>setwrite</CODE>.  You do this with the
+<CODE>openread</CODE> or <CODE>openwrite</CODE> command.<SUP>*</SUP>  Once a file is opened, you can <CODE>setread</CODE> or <CODE>
+setwrite</CODE> to it, read or write some data, then switch to a different file
+for a while, and then continue where you left off.  When you're finished
+using the file, you must <CODE>close</CODE> it.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP><CODE>Openwrite</CODE> creates
+a new, empty file, replacing any file that might previously have existed
+with the same name.  Berkeley Logo also provides <CODE>openupdate</CODE>, which
+opens an existing file for both reading and writing simultaneously, and <CODE>
+openappend</CODE>, which opens an existing file for writing, putting the newly
+written data after the old contents of the file.  I won't use those in this
+book, though.</SMALL></BLOCKQUOTE></SMALL><P>Some operating systems allow access to devices like printers using the same
+programming interface that works for files.  In those systems,
+you can <CODE>setwrite</CODE> to a printer just as you can to a disk file.  The
+format of the input to <CODE>setwrite</CODE> may be different (a device name
+instead of a file name), but there is no conceptual difference.
+
+<P>
+
+<H2>End of File</H2>
+
+<P>When reading information from a file, the problem arises of what
+happens when there is no more left to read.  How does a program
+know it's reached the end of the file?
+
+<P>Berkeley Logo provides two ways to answer this question.  If the structure
+of your program makes it convenient to test for the end of the file <EM>
+before</EM> attempting to read more information from the file, you can use the
+predicate <CODE>eofp</CODE>, which takes no inputs, and returns <CODE>true</CODE> if the
+file currently being read is at its end.  (If Logo is reading from the
+keyboard, then <CODE>eofp</CODE> always returns <CODE>false</CODE>.)
+
+<P>In some cases it may be more convenient to try to read from the file, and
+then later test whether there was really any information available to read.
+To make this possible, the reading operations output an empty datum
+when there is nothing left to read, but of the opposite type from
+their usual output.  In other words <CODE>readlist</CODE>, which usually
+outputs a list, outputs an empty <EM>word</EM> to indicate the end of a
+file.  <CODE>Readchar</CODE>, which normally outputs a word, outputs an empty
+<EM>list</EM> when there are no more characters to be read.  You can
+use <CODE>wordp</CODE> or <CODE>listp</CODE>, therefore, to check for the end of the
+file.
+
+<P>Here's an example.  <CODE>Extract</CODE> is a command that takes two inputs, a
+word and a filename.  Its effect is to print every line in that file
+that contains the chosen word.  For example, you might have a file in
+which each line contains someone's name and telephone number; you
+could use this procedure to find a particular person in the file.
+
+<P><PRE>to extract :word :file
+openread :file
+setread :file
+extract1 :word
+setread []
+close :file
+end
+
+to extract1 :word
+local &quot;line
+if eofp [stop]
+make &quot;line readlist
+if memberp :word :line [print :line]
+extract1 :word
+end
+
+? <U>extract &quot;brian &quot;phonelist</U>
+Brian Harvey 555-2368
+Brian Silverman 555-5274
+</PRE>
+
+<P>Notice that the program restores reading from the keyboard
+when it's done reading the file.  In the example I'm assuming that
+<CODE>phonelist</CODE> is the name of a file you've created earlier,
+with a Logo program or with your favorite text editor outside
+of Logo.
+
+<P><H2>Case Sensitivity</H2>
+
+<P>In this example, I used the word <CODE>brian</CODE>, in all lower case
+letters, as the input to <CODE>extract</CODE>, whereas the data file contained
+the word <CODE>Brian</CODE> with an initial upper case or
+capital letter.  You can control whether or not Logo considers
+those two words equal by changing the value of the variable
+<CODE>caseignoredp</CODE>.  If this variable has the value <CODE>true</CODE>, as it does
+by default, then <CODE>equalp</CODE> and <CODE>memberp</CODE> consider upper and lower
+case letters the same.  But if you say
+
+<P><PRE>make &quot;caseignoredp &quot;false
+</PRE>
+
+<P>then upper and lower case letters will not be equal.  (This
+variable does <EM>not</EM> affect Logo's understanding of the names of
+procedures and variables, in which case is always ignored.  The words
+<CODE>print</CODE> and <CODE>PRINT</CODE> always name the same procedure, for example.)
+
+<P><H2>Dribble Files</H2>
+
+<P>Not everything Logo prints goes through the writer.  Error messages and
+trace output always go to the screen, not into a file.  The idea is that
+even when you're using files, you're still programming interactively, and
+those messages are part of the programming process rather than
+part of the result of your program.
+
+<P>Sometimes, though, you want to capture in a file <EM>everything</EM>
+that happens while you're using Logo.  Some programming teachers, for
+instance, like to look over their students' shoulders but can't look
+at everyone at once.  If you record everything you do, your teacher
+can print out the record, take it home, and study it overnight.  The
+formal name for this kind of record is a <EM>transcript file,</EM> but
+it's more popularly known as a <EM>dribble file.</EM>  (The metaphor is
+that there's a leak in the pipe between the computer and the screen
+and some of the data dribbles out into the file.)
+
+<P>The <CODE>dribble</CODE> command takes a file name as input and starts
+dribbling into that file.  The <CODE>nodribble</CODE> command, with no input,
+turns off dribbling.  Information is sent to the dribble file <EM>
+in addition to</EM> being printed on your screen, or written in a file by
+the writer.  Compare this with the effect of <CODE>setwrite</CODE>, which
+tells Logo to print into a file <EM>instead of</EM> onto the screen.
+
+<P>If you want to keep a transcript of a programming session, remember
+that much of your interaction with Logo happens in the Logo editor
+and that that kind of interaction can't be recorded in a dribble
+file.  So you might want to make it a habit to <CODE>po</CODE> the procedures
+you've edited, each time you leave the editor.
+
+<P><H2>A Text Formatter</H2>
+
+<P>Okay, it's time for the practical project I promised you.  Probably
+the most useful &quot;real&quot; program you can find for a home computer is a
+word processor.  There are
+two parts to a word processing package: a text editor and a
+formatter.  The editor is the part of the system that lets you type in
+your document, correct errors, and make additions and deletions
+later.  The formatter is the part that takes what you type and turns
+it into beautiful printed pages with even margins and so on.
+(In most word processors, these two parts are integrated, so that every
+character you type makes an immediate change in the beautifully formatted
+document.  But in principle the two tasks are separable.)
+
+<P>I'm going to write a text formatter.  I assume that you have some way
+to put text into a file.  (In some versions of Logo the same
+editor that you use for procedures can also edit text files.
+Otherwise you probably have a separate program that edits files, or
+else you can write one in Logo!)  The formatter will read lines from a
+file, fill and justify paragraphs, and print the result.  (To <EM>
+fill</EM> text means to fit as many words as possible into each printed
+line.  To <EM>justify</EM> the text is to insert extra spaces between
+words so that both margins line up.) You can see how the
+formatter will work by examining the example on the following pages.
+I've shown both what's in the file and what my program prints.
+
+<HR>
+
+<P>Formatter input file:
+
+<P><PRE><SMALL>
+When I wrote the first edition of this book in 1984, I said that the study of
+computer programming was intellectually rewarding for young children in
+elementary school, and for computer science majors in college, but that high
+school students and adults studying on their own generally had an
+intellectually barren diet, full of technical details of some particular
+computer brand.
+
+At about the same time I wrote those words, the College Board was introducing
+an Advanced Placement exam in computer science.  Since then, the AP course has
+become popular, and similar official or semi-official computer science
+curricula have been adopted in other countries as well.  Meanwhile, the
+computers available to ordinary people have become large enough and powerful
+enough to run serious programming languages, breaking the monopoly of BASIC.
+* nofill
+I think that there shall never exist
+a poem as lovely as a tree-structured list.
+* yesfill
+So, the good news is that intellectually serious computer science is within
+the reach of just about everyone.  The bad news is that the curricula tend to
+be imitations of what is taught to beginning undergraduate computer science
+majors, and I think that's too rigid a starting point for independent
+learners, and especially for teenagers.
+
+See, the wonderful thing about computer programming is that it's fun, perhaps
+not for everyone, but for very many people.  There aren't many mathematical
+activities that appeal so spontaneously.  Kids get caught up in the
+excitement of programming, in the same way that other kids (or maybe the
+same ones) get caught up in acting, in sports, in journalism (provided the
+paper isn't run by teachers), or in ham radio.  If schools get too serious
+about computer science, that spontaneous excitement can be lost.  I once
+heard a high school teacher say proudly that kids used to hang out in his
+computer lab at all hours, but since they introduced the computer science
+curriculum, the kids don't want to program so much because they've learned
+that programming is just a means to the end of understanding the
+curriculum.  No!  The ideas of computer science are a means to the end of
+getting computers to do what you want.
+*skip 4
+*make "nofilltab 15
+*nofill
+Computer
+Science
+Apprenticeship
+*yesfill
+*make "spacing 2
+My goal in this series of books is to make the goals and methods of a serious
+computer scientist accessible, at an introductory level, to people who are
+interested in computer programming but are not computer science majors.  If
+you're an adult or teenaged hobbyist, or a teacher who wants to use the
+computer as an educational tool, you're definitely part of this audience.
+I've taught these ideas to teachers and to high school students.  What I enjoy
+most is teaching high school freshmen who bring a love of programming into the
+class with them--the ones who are always tugging at my arm to tell me what they
+found in the latest Byte.
+</SMALL></PRE><P>
+
+<HR>
+
+<P>Formatted output:
+
+<PRE><SMALL><SMALL><SMALL><SMALL>
+
+
+
+
+
+
+            When  I wrote the first edition of this book in 1984, I said
+       that   the  study  of  computer  programming  was  intellectually
+       rewarding  for  young  children  in  elementary  school,  and for
+       computer science majors in college, but that high school students
+       and  adults studying on their own generally had an intellectually
+       barren  diet,  full  of  technical  details  of  some  particular
+       computer brand.
+
+            At  about  the  same  time  I wrote those words, the College
+       Board  was  introducing  an  Advanced  Placement exam in computer
+       science.  Since  then,  the  AP  course  has  become popular, and
+       similar official or semi-official computer science curricula have
+       been adopted in other countries as well. Meanwhile, the computers
+       available  to  ordinary  people  have  become  large  enough  and
+       powerful  enough  to  run serious programming languages, breaking
+       the monopoly of BASIC.
+
+       I think that there shall never exist
+       a poem as lovely as a tree-structured list.
+
+            So,  the  good  news is that intellectually serious computer
+       science  is within the reach of just about everyone. The bad news
+       is  that the curricula tend to be imitations of what is taught to
+       beginning  undergraduate  computer  science  majors,  and I think
+       that's  too  rigid a starting point for independent learners, and
+       especially for teenagers.
+
+            See,  the wonderful thing about computer programming is that
+       it's  fun,  perhaps  not  for everyone, but for very many people.
+       There   aren't   many  mathematical  activities  that  appeal  so
+       spontaneously.   Kids   get   caught  up  in  the  excitement  of
+       programming,  in  the same way that other kids (or maybe the same
+       ones) get caught up in acting, in sports, in journalism (provided
+       the paper isn't run by teachers), or in ham radio. If schools get
+       too  serious  about computer science, that spontaneous excitement
+       can  be lost. I once heard a high school teacher say proudly that
+       kids used to hang out in his computer lab at all hours, but since
+       they  introduced  the computer science curriculum, the kids don't
+       want  to program so much because they've learned that programming
+       is  just  a means to the end of understanding the curriculum. No!
+       The  ideas  of computer science are a means to the end of getting
+       computers to do what you want.
+
+
+
+
+
+                      Computer
+                      Science
+                      Apprenticeship
+
+            My  goal  in  this  series of books is to make the goals and
+
+       methods  of  a  serious  computer  scientist  accessible,  at  an
+
+
+
+
+
+
+<CENTER><HR width="50%"></CENTER>
+
+
+
+
+
+       introductory  level,  to  people  who  are interested in computer
+
+       programming  but  are  not  computer science majors. If you're an
+
+       adult  or  teenaged  hobbyist,  or a teacher who wants to use the
+
+       computer  as  an educational tool, you're definitely part of this
+
+       audience.  I've taught these ideas to teachers and to high school
+
+       students.  What I enjoy most is teaching high school freshmen who
+
+       bring  a  love  of programming into the class with them--the ones
+
+       who  are  always  tugging at my arm to tell me what they found in
+
+       the latest Byte.
+
+</SMALL></SMALL></SMALL></SMALL></PRE>
+<HR>
+
+<P>For the most part the formatter just copies words from one file to
+another, filling and justifying as it goes.  A blank line in the file
+indicates a break between paragraphs.  The program skips a line
+between paragraphs and indents the first line of the new paragraph.
+It's possible to control the formatter's work by including <EM>
+formatting commands</EM> in the file.  These are the lines that start
+with asterisks in the example.  For example, the line that says
+
+<P><PRE>* nofill
+</PRE>
+
+<P>means, &quot;From now on, stop filling paragraphs.  Instead,
+each line in the input file should be one line in the printed result.&quot; The
+<CODE>yesfill</CODE> command returns to normal paragraph style.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I'd
+have liked to call the command <CODE>fill</CODE>, as it would be in a
+commercial word processing program, but unfortunately that's the name
+of a primitive procedure in Logo.</SMALL></BLOCKQUOTE></SMALL><P>To run the program, invoke the <CODE>format</CODE> command.  This command
+takes two inputs: the name of a file to read and the name of a file
+to write.  The latter might be the name of the printer if your operating
+system allows it.
+
+<P><H2>Page Geometry</H2>
+
+<P>The program uses several global variables to determine the layout of a
+printed page.  Vertical measurements are in vertical lines (6 per inch for
+most computer printers); horizontal measurements are in characters (10 per
+inch is common, although there is more variation in this unit).  The program
+assumes fixed-width characters; a more professional program would handle
+variable-width character fonts, but the added complexity wouldn't help you
+learn the things I'm most interested in now.
+
+<P><CENTER><IMG SRC="formatter.jpg" ALT="figure: formatter"></CENTER>
+
+<P><P>
+
+<TABLE>
+<TR><TH align="left">pageheight<TD>&nbsp;&nbsp;&nbsp;Height of the entire sheet of paper, including margins.
+<TR><TH align="left">topmar<TD>&nbsp;&nbsp;&nbsp;Number of lines of margin at the top of each page.
+<TR><TH align="left">lines<TD>&nbsp;&nbsp;&nbsp;Number of lines to be printed on each page.
+<TR><TH align="left">parskip<TD>&nbsp;&nbsp;&nbsp;Number of blank lines between paragraphs.
+<TR><TH align="left">spacing<TD>&nbsp;&nbsp;&nbsp;1 for single spaced printing, 2 for double spaced, etc.
+<TR><TH align="left">leftmar<TD>&nbsp;&nbsp;&nbsp;Number of characters of margin at the left of the page.
+<TR><TH align="left">width<TD>&nbsp;&nbsp;&nbsp;Number of characters to print on each line.
+<TR><TH align="left">filltab<TD>&nbsp;&nbsp;&nbsp;Number of characters to indent the first line of a paragraph.
+<TR><TH align="left">nofilltab<TD>&nbsp;&nbsp;&nbsp;Number of characters to indent each nofill line.
+</TABLE>
+
+<P>The formatter recognizes formatting commands, in the file it's
+reading, to change the values of these variables.  By a strange
+coincidence these formatting commands look similar to the Logo
+commands to set a variable.  In the sample file, for instance, the
+formatting command
+
+<P><PRE>*make &quot;spacing 2
+</PRE>
+
+<P>is used to start double spacing.
+
+<P><H2>The Program</H2>
+
+<P>Here are the procedures that make up the formatter.
+
+<P><PRE>
+to format :from :to
+openread :from
+openwrite :to
+setread :from
+setwrite :to
+init.vars
+loop
+setread []
+setwrite []
+close :from
+close :to
+end
+
+to init.vars
+make "pageheight 66
+make "topmar 6
+make "lines 54
+make "leftmar 7
+make "width 65
+make "filltab 5
+make "nofilltab 0
+make "parskip 1
+make "spacing 1
+make "started "false
+make "filling "true
+make "printed 0
+make "inline []
+end
+
+to <A NAME="loop">loop
+forever [if process nextword [stop]]
+end
+
+;; Add a word to the output file, starting a new line if necessary
+
+to <A NAME="process">process</A> :word
+if listp :word [output "true]
+if not :started [start]
+if (:linecount+1+count :word) > :width [putline]
+addword :word
+output "false
+end
+
+to <A NAME="addword">addword :word</A>
+if not emptyp :line [make "linecount :linecount+1]
+make "line lput :word :line
+make "linecount :linecount+count :word
+end
+
+to <A NAME="putline">putline</A>
+repeat :leftmar+:indent [type "| |]
+putwords :line ((count :line)-1) (:width-:linecount)
+newline
+skip :spacing
+end
+
+to <A  NAME="putwords">putwords</A> :line :spaces :filler
+local "perword
+if emptyp :line [stop]
+type first :line
+make "perword ifelse :spaces > 0 [int ((:filler+:spaces-1)/:spaces)] [0]
+if :filler > 0 [repeat :perword [type "| |]]
+type "| |
+putwords (butfirst :line) (:spaces-1) (:filler-:perword)
+end
+
+;; Get the next input word, reading a new line if necessary
+
+to <A NAME="nextword">nextword</A>
+if not emptyp :inline [output extract.word]
+if not :filling [break]
+make "inline readword
+if listp :inline [break output []]
+if emptyp :inline [break output nextword]
+if equalp first :inline "|*| ~
+   [run butfirst :inline
+    make "inline "]
+make "inline skipspaces :inline
+output nextword
+end
+
+to <A NAME="extract.word">extract.word</A>
+local "result
+make "result firstword :inline
+make "inline skipfirst :inline
+output :result
+end
+
+to firstword :word
+if emptyp :word [output "]
+if equalp first :word "| | [output "]
+output word (first :word) (firstword butfirst :word)
+end
+
+to skipfirst :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces :word]
+output skipfirst butfirst :word
+end
+
+to skipspaces :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces butfirst :word]
+output :word
+end
+
+;; Formatting helpers
+
+to start
+make "started "true
+repeat :topmar [print []]
+newindent
+end
+
+to newindent
+newline
+make "indent ifelse :filling [:filltab] [:nofilltab]
+make "linecount :indent
+end
+
+to newline
+make "line []
+make "indent 0
+make "linecount 0
+end
+
+to <A NAME="break">break</A>
+if emptyp :line [stop]
+make "linecount :width
+putline
+newindent
+if :filling [skip :parskip]
+end
+
+;; Formatting commands to be invoked by the user
+
+to <A NAME="skip">skip</A> :howmany
+break
+repeat :howmany [print []]
+make "printed :printed+:howmany
+if :printed < :lines [stop]
+repeat :pageheight-:printed [print []]
+make "printed 0
+end
+
+to nofill
+break
+make "filling "false
+newindent
+end
+
+to yesfill
+break
+if not :filling [skip :parskip]
+make "filling "true
+newindent
+end
+</PRE>
+
+<P>To help you understand this program, you should start by imagining that the
+text file contains one big paragraph with no formatting commands.  For each
+word in the file, <A HREF="files.html#loop"><CODE>loop</CODE></A>
+invokes <A HREF="files.html#nextword"><CODE>nextword</CODE></A> to read the word and
+process to process it.  Just take <CODE>nextword</CODE> on faith for now
+and look at <A HREF="files.html#process"><CODE>process</CODE></A>.
+The third and fourth instruction lines are the
+interesting ones.  The third line asks whether adding this word to the
+partially filled print line will overflow its width.  If so, <CODE>process</CODE>
+invokes <A HREF="files.html#putline"><CODE>putline</CODE></A> to print
+that line and start a new one.  Then, in
+either case, <CODE>process</CODE> invokes <A HREF="files.html#addword"><CODE>addword</CODE></A>
+to add the word to the print
+line it's accumulating.  <CODE>Addword</CODE> puts the word at the end of the line
+and also adds its length to <CODE>:linecount</CODE>, the number of characters in
+the line.  If this isn't the first word of a new line, then it must also add
+another character to <CODE>:linecount</CODE> to take account of the space between
+words.
+
+<P><A HREF="files.html#putline"><CODE>Putline</CODE></A> is
+essentially just a fancy <CODE>print</CODE> command.  The
+complication comes in because the program is trying to justify the line by
+adding spaces where needed between words.  To do this, it has to <CODE>type</CODE>
+the line a word at a time; that's the task of
+<A HREF="files.html#putwords"><CODE>putwords</CODE></A>.  In that
+procedure, <CODE>:spaces</CODE> is the number of spaces between words not yet
+printed; in other words it's the number of positions into which extra spaces
+can be shoved.  (The idea is to spread out the necessary spaces as evenly as
+possible.) <CODE>:Filler</CODE> is the total number of extra spaces we need to
+insert; <CODE>:perword</CODE> is the number that should be inserted after the
+particular word we're typing right now.  (When I started writing <CODE>
+putline</CODE> and <CODE>putwords</CODE>, I thought that I could just calculate
+<CODE>:perword</CODE> once for each line.  But if the number of extra spaces we want
+to insert is not a multiple of the number of positions available, then the
+number of extra spaces may not be equal for every word in the line.)
+
+<P>That's pretty much the whole story about the printing part of the
+program.  The reading part is handled by
+<A HREF="files.html#nextword"><CODE>nextword</CODE></A>.  It reads a
+line at a time into the variable
+<CODE>inline</CODE>.  <CODE>Nextword</CODE> uses the Logo
+primitive <CODE>readword</CODE> to read a line, rather than the usual
+<CODE>readlist</CODE>, to avoid Logo's usual special handling of parentheses and
+brackets.  <CODE>Readword</CODE> outputs a word containing all of the characters on
+the line that it reads, even if the line includes spaces, which would
+ordinarily separate words.  Therefore, the program must divide the
+long word output by <CODE>readword</CODE> into ordinary words; that's the job of
+<A HREF="files.html#extract.word"><CODE>extract.word</CODE></A>
+and its subprocedures <CODE>firstword</CODE>,
+<CODE>skipword</CODE>, and <CODE>skipspaces</CODE>.
+
+<P>Each time <A HREF="files.html#nextword"><CODE>nextword</CODE></A>
+is invoked, it removes one word from the line and
+outputs that word.  When <CODE>:inline</CODE> is empty, <CODE>nextword</CODE> reads a new
+line from the file.  There are four possibilities: First, the end of the
+file may be reached.  <CODE>Listp</CODE> tests for this; if so, <CODE>nextword</CODE>
+outputs an empty list.  Second, the new line can be empty, indicating a
+paragraph break.  In this case <CODE>nextword</CODE> invokes
+<A HREF="files.html#break"><CODE>break</CODE></A> and reads
+another line.  Third, the new line can be a formatting command, starting
+with an asterisk.  In this case <CODE>nextword</CODE> just <CODE>run</CODE>s the line,
+minus the asterisk, and reads another line.  Fourth, the line can be an
+ordinary text line, in which case <CODE>nextword</CODE> goes back to extracting
+words from the line.
+
+<P>In most programming languages, most of the effort in writing a
+formatter like this would be in recognizing and evaluating the
+formatting commands.  I hope you appreciate how much Logo's ability to
+<CODE>run</CODE> instructions found in a file simplifies this task!  The danger
+in this technique is that an invalid instruction in the input file will
+crash the formatting program, giving a Logo error message.  (This is
+especially bad because after the error message we are left with a
+half-written output file still open.)  I'd like to &quot;catch&quot; errors
+while running the user's instructions; you'll see how to do that in
+Chapter 3.
+
+<P>The rest of the program is just a bunch of detail.  The
+<A HREF="files.html#skip"><CODE>skip</CODE></A>
+command is written to be used both by the formatting program itself
+and as a formatting command, as in the example I showed earlier.  As
+an exercise in understanding program structure, notice that <CODE>skip</CODE>
+invokes <A HREF="files.html#break"><CODE>break</CODE></A>
+and <CODE>break</CODE> invokes <CODE>skip</CODE>; then explain
+why they don't just keep invoking each other forever, like a recursive
+procedure without a stop rule.
+
+<P>Another slightly tricky part to understand is the variable
+<CODE>started</CODE> and the procedure <CODE>start</CODE>.
+<CODE>Start</CODE> is invoked by
+<CODE>process</CODE>, but only once, before processing the very first word of
+the text.  Ensuring the &quot;only once&quot; is the sole purpose of
+<CODE>started</CODE>, a variable that initially contains <CODE>false</CODE> and is
+changed to <CODE>true</CODE> by <CODE>start</CODE>.  Instead, why don't I just
+invoke <CODE>start</CODE> from <CODE>format</CODE> before calling <CODE>loop</CODE>?  The
+answer is that this technique allows the file to start with an
+instruction like
+
+<P><PRE>*make &quot;topmar 10
+</PRE>
+
+<P>Any such instructions will be evaluated <EM>before</EM>
+processing the first text word.  If <CODE>start</CODE> were invoked by
+<CODE>format</CODE>, the top margin would be skipped before this instruction had a
+chance to set <CODE>:topmar</CODE>.
+
+<P><H2>Improving the Formatter</H2>
+
+<P>Actually, using <CODE>make</CODE> as a formatting command is a little
+schlock--not what I'd call good &quot;human engineering.&quot; If you wanted
+to make a million dollars selling this program, you'd add several
+little procedures like this:
+
+<P><PRE>to topmar :lines
+make &quot;topmar :lines
+end
+</PRE>
+
+<P>Like <CODE>nofill</CODE> and <CODE>yesfill</CODE>, these procedures would be
+used only as formatting commands, not as part of the formatter itself.
+
+<P>The program leaves out a lot of things you'd like to be able to do.
+You should be able to number pages automatically in the top or bottom
+margins.  (That's a pretty easy modification; most of the work would
+be in <CODE>skip</CODE>.) You'd like to be able to center lines on the page
+for chapter headings.  If your printer can underline or use different
+type faces, you'll want a way to control those things with formatting
+commands.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>If you're <EM>really</EM> ambitious, you could try
+teaching the program about footnotes!</SMALL></BLOCKQUOTE></SMALL>
+
+<P>Still, this is a usable program carrying out a real task.  It takes
+19 Logo procedures averaging 7 lines each.  This would be a
+much harder project in most languages.  What makes it so manageable in
+Logo?  First, <EM>modularity.</EM>  A small procedure for each task makes
+the overall program easier to understand than it would be if it were
+all in one piece.  Second, Logo's data types, words and lists, are
+well suited to this problem.  Third, Logo's control mechanisms, especially
+recursive operations and <CODE>run</CODE>, have the needed flexibility.
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch2/v2ch2.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch1/format.lg b/js/games/nluqo.github.io/~bh/v2ch1/format.lg
new file mode 100644
index 0000000..13042b1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch1/format.lg
@@ -0,0 +1,157 @@
+to format :from :to
+openread :from
+openwrite :to
+setread :from
+setwrite :to
+init.vars
+loop
+setread []
+setwrite []
+close :from
+close :to
+end
+
+to init.vars
+make "pageheight 66
+make "topmar 6
+make "lines 54
+make "leftmar 7
+make "width 65
+make "filltab 5
+make "nofilltab 0
+make "parskip 1
+make "spacing 1
+make "started "false
+make "filling "true
+make "printed 0
+make "inline []
+end
+
+to loop
+forever [if process nextword [stop]]
+end
+
+;; Add a word to the output file, starting a new line if necessary
+
+to process :word
+if listp :word [output "true]
+if not :started [start]
+if (:linecount+1+count :word) > :width [putline]
+addword :word
+output "false
+end
+
+to addword :word
+if not emptyp :line [make "linecount :linecount+1]
+make "line lput :word :line
+make "linecount :linecount+count :word
+end
+
+to putline
+repeat :leftmar+:indent [type "| |]
+putwords :line ((count :line)-1) (:width-:linecount)
+newline
+skip :spacing
+end
+
+to putwords :line :spaces :filler
+local "perword
+if emptyp :line [stop]
+type first :line
+make "perword ifelse :spaces > 0 [int ((:filler+:spaces-1)/:spaces)] [0]
+if :filler > 0 [repeat :perword [type "| |]]
+type "| |
+putwords (butfirst :line) (:spaces-1) (:filler-:perword)
+end
+
+;; Get the next input word, reading a new line if necessary
+
+to nextword
+if not emptyp :inline [output extract.word]
+if not :filling [break]
+make "inline readword
+if listp :inline [break output []]
+if emptyp :inline [break output nextword]
+if equalp first :inline "|*| ~
+   [run butfirst :inline
+    make "inline "]
+make "inline skipspaces :inline
+output nextword
+end
+
+to extract.word
+local "result
+make "result firstword :inline
+make "inline skipfirst :inline
+output :result
+end
+
+to firstword :word
+if emptyp :word [output "]
+if equalp first :word "| | [output "]
+output word (first :word) (firstword butfirst :word)
+end
+
+to skipfirst :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces :word]
+output skipfirst butfirst :word
+end
+
+to skipspaces :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces butfirst :word]
+output :word
+end
+
+;; Formatting helpers
+
+to start
+make "started "true
+repeat :topmar [print []]
+newindent
+end
+
+to newindent
+newline
+make "indent ifelse :filling [:filltab] [:nofilltab]
+make "linecount :indent
+end
+
+to newline
+make "line []
+make "indent 0
+make "linecount 0
+end
+
+to break
+if emptyp :line [stop]
+make "linecount :width
+putline
+newindent
+if :filling [skip :parskip]
+end
+
+;; Formatting commands to be invoked by the user
+
+to skip :howmany
+break
+repeat :howmany [print []]
+make "printed :printed+:howmany
+if :printed < :lines [stop]
+repeat :pageheight-:printed [print []]
+make "printed 0
+end
+
+to nofill
+break
+make "filling "false
+newindent
+end
+
+to yesfill
+break
+if not :filling [skip :parskip]
+make "filling "true
+newindent
+end
diff --git a/js/games/nluqo.github.io/~bh/v2ch1/formatter.jpg b/js/games/nluqo.github.io/~bh/v2ch1/formatter.jpg
new file mode 100644
index 0000000..652a622
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch1/formatter.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch1/v2ch1.html b/js/games/nluqo.github.io/~bh/v2ch1/v2ch1.html
new file mode 100644
index 0000000..c0e72da
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch1/v2ch1.html
@@ -0,0 +1,777 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 1: Data Files</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Data Files</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch2/v2ch2.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="format.lg"><CODE>format</CODE></A>
+
+
+<P>The programming techniques that you learned in the first volume of this
+series are all you need to express any computation.  That is, given any
+question that a computer program can answer, you can write the program in
+Logo using those techniques.  Also, those techniques can be used, with few
+if any changes in notation, in any implementation of Logo.  However, saying
+that a problem can be solved using certain tools doesn't mean that it can be
+solved in the most convenient way.  In this volume the overall goal is to
+expand your repertoire of Logo techniques, so that you'll find it easier to
+deal with more difficult problems.  Some of the techniques here are unique
+to Berkeley Logo; others exist in other dialects, but in significantly
+different forms.
+
+<P>Probably the most glaring omission in the first volume is that we made no
+provision for saving information from one session to the next.  (You do know
+how to save a Logo workspace, but that's too all-or-nothing to be very
+useful.  You'd like to be able to save specific kinds of information, and
+perhaps use that information in some program outside of Logo.)  In this
+chapter we'll explore the use of <EM>data files</EM> in Logo
+programs.
+
+<P>There isn't much in the way of truly new ideas here.  There are a few new
+primitives and a few grubby details about how files are named in your
+particular computer, but for the most part you won't have to change the way
+you think about the programming process.  My plan for this chapter is to
+give a quick summary of the vocabulary you'll need, and spend most of the
+chapter on a practical programming project that will show you the sort of
+thing you can accomplish easily in Logo.
+
+<P><H2>Reader and Writer</H2>
+
+<P>We've been reading and writing data all along.  We've been reading
+from the keyboard, with operations like <CODE>readlist</CODE> and <CODE>
+readchar</CODE>, and we've been writing to your screen, with commands
+like <CODE>print</CODE> and <CODE>type</CODE>.
+
+<P>The goal now is to read and write the same data, but from and to other
+devices.  This includes files on a hard disk or a diskette,
+but also things like printers or TV cameras if you have them.  The
+same procedures that read the keyboard and write the screen can be used for
+these other devices as well.  The trick is to divert the attention of those
+procedures to someplace else.
+
+<P>The part of the Logo interpreter that reads characters for <CODE>readlist</CODE>
+and <CODE>readchar</CODE> is called the <EM>reader;</EM> the part that handles
+<CODE>print</CODE> and its friends is the <EM>writer.</EM> The commands
+<CODE>setread</CODE> and <CODE>setwrite</CODE> tell the reader and the writer,
+respectively, what file or device to use.  The input to either command is
+the name of a file or device.  The format of that name will vary from one
+operating system to another, so you should look it up in your computer's
+reference manual.  Generally it will be the same format that you (I assume)
+have already been using as input to the <CODE>save</CODE> and <CODE>load</CODE> commands.
+
+<P>If you invoke <CODE>setread</CODE> with the empty list as input, it tells the
+reader to read from the keyboard.  If you give <CODE>setwrite</CODE> the
+empty list as input, it tells the writer to write to the screen.  In
+other words the empty list &quot;turns off&quot; whatever file or device you
+may have been using and returns to Logo's usual style of
+interaction.
+
+<P>You can switch the attention of the reader or the writer among several files
+in rotation without &quot;losing your place&quot; in each one.  You must <EM>open</EM> a
+file when you want to begin reading or writing it before you can use it as
+input to <CODE>setread</CODE> or <CODE>setwrite</CODE>.  You do this with the
+<CODE>openread</CODE> or <CODE>openwrite</CODE> command.<SUP>*</SUP>  Once a file is opened, you can <CODE>setread</CODE> or <CODE>
+setwrite</CODE> to it, read or write some data, then switch to a different file
+for a while, and then continue where you left off.  When you're finished
+using the file, you must <CODE>close</CODE> it.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP><CODE>Openwrite</CODE> creates
+a new, empty file, replacing any file that might previously have existed
+with the same name.  Berkeley Logo also provides <CODE>openupdate</CODE>, which
+opens an existing file for both reading and writing simultaneously, and <CODE>
+openappend</CODE>, which opens an existing file for writing, putting the newly
+written data after the old contents of the file.  I won't use those in this
+book, though.</SMALL></BLOCKQUOTE></SMALL><P>Some operating systems allow access to devices like printers using the same
+programming interface that works for files.  In those systems,
+you can <CODE>setwrite</CODE> to a printer just as you can to a disk file.  The
+format of the input to <CODE>setwrite</CODE> may be different (a device name
+instead of a file name), but there is no conceptual difference.
+
+<P>
+
+<H2>End of File</H2>
+
+<P>When reading information from a file, the problem arises of what
+happens when there is no more left to read.  How does a program
+know it's reached the end of the file?
+
+<P>Berkeley Logo provides two ways to answer this question.  If the structure
+of your program makes it convenient to test for the end of the file <EM>
+before</EM> attempting to read more information from the file, you can use the
+predicate <CODE>eofp</CODE>, which takes no inputs, and returns <CODE>true</CODE> if the
+file currently being read is at its end.  (If Logo is reading from the
+keyboard, then <CODE>eofp</CODE> always returns <CODE>false</CODE>.)
+
+<P>In some cases it may be more convenient to try to read from the file, and
+then later test whether there was really any information available to read.
+To make this possible, the reading operations output an empty datum
+when there is nothing left to read, but of the opposite type from
+their usual output.  In other words <CODE>readlist</CODE>, which usually
+outputs a list, outputs an empty <EM>word</EM> to indicate the end of a
+file.  <CODE>Readchar</CODE>, which normally outputs a word, outputs an empty
+<EM>list</EM> when there are no more characters to be read.  You can
+use <CODE>wordp</CODE> or <CODE>listp</CODE>, therefore, to check for the end of the
+file.
+
+<P>Here's an example.  <CODE>Extract</CODE> is a command that takes two inputs, a
+word and a filename.  Its effect is to print every line in that file
+that contains the chosen word.  For example, you might have a file in
+which each line contains someone's name and telephone number; you
+could use this procedure to find a particular person in the file.
+
+<P><PRE>to extract :word :file
+openread :file
+setread :file
+extract1 :word
+setread []
+close :file
+end
+
+to extract1 :word
+local &quot;line
+if eofp [stop]
+make &quot;line readlist
+if memberp :word :line [print :line]
+extract1 :word
+end
+
+? <U>extract &quot;brian &quot;phonelist</U>
+Brian Harvey 555-2368
+Brian Silverman 555-5274
+</PRE>
+
+<P>Notice that the program restores reading from the keyboard
+when it's done reading the file.  In the example I'm assuming that
+<CODE>phonelist</CODE> is the name of a file you've created earlier,
+with a Logo program or with your favorite text editor outside
+of Logo.
+
+<P><H2>Case Sensitivity</H2>
+
+<P>In this example, I used the word <CODE>brian</CODE>, in all lower case
+letters, as the input to <CODE>extract</CODE>, whereas the data file contained
+the word <CODE>Brian</CODE> with an initial upper case or
+capital letter.  You can control whether or not Logo considers
+those two words equal by changing the value of the variable
+<CODE>caseignoredp</CODE>.  If this variable has the value <CODE>true</CODE>, as it does
+by default, then <CODE>equalp</CODE> and <CODE>memberp</CODE> consider upper and lower
+case letters the same.  But if you say
+
+<P><PRE>make &quot;caseignoredp &quot;false
+</PRE>
+
+<P>then upper and lower case letters will not be equal.  (This
+variable does <EM>not</EM> affect Logo's understanding of the names of
+procedures and variables, in which case is always ignored.  The words
+<CODE>print</CODE> and <CODE>PRINT</CODE> always name the same procedure, for example.)
+
+<P><H2>Dribble Files</H2>
+
+<P>Not everything Logo prints goes through the writer.  Error messages and
+trace output always go to the screen, not into a file.  The idea is that
+even when you're using files, you're still programming interactively, and
+those messages are part of the programming process rather than
+part of the result of your program.
+
+<P>Sometimes, though, you want to capture in a file <EM>everything</EM>
+that happens while you're using Logo.  Some programming teachers, for
+instance, like to look over their students' shoulders but can't look
+at everyone at once.  If you record everything you do, your teacher
+can print out the record, take it home, and study it overnight.  The
+formal name for this kind of record is a <EM>transcript file,</EM> but
+it's more popularly known as a <EM>dribble file.</EM>  (The metaphor is
+that there's a leak in the pipe between the computer and the screen
+and some of the data dribbles out into the file.)
+
+<P>The <CODE>dribble</CODE> command takes a file name as input and starts
+dribbling into that file.  The <CODE>nodribble</CODE> command, with no input,
+turns off dribbling.  Information is sent to the dribble file <EM>
+in addition to</EM> being printed on your screen, or written in a file by
+the writer.  Compare this with the effect of <CODE>setwrite</CODE>, which
+tells Logo to print into a file <EM>instead of</EM> onto the screen.
+
+<P>If you want to keep a transcript of a programming session, remember
+that much of your interaction with Logo happens in the Logo editor
+and that that kind of interaction can't be recorded in a dribble
+file.  So you might want to make it a habit to <CODE>po</CODE> the procedures
+you've edited, each time you leave the editor.
+
+<P><H2>A Text Formatter</H2>
+
+<P>Okay, it's time for the practical project I promised you.  Probably
+the most useful &quot;real&quot; program you can find for a home computer is a
+word processor.  There are
+two parts to a word processing package: a text editor and a
+formatter.  The editor is the part of the system that lets you type in
+your document, correct errors, and make additions and deletions
+later.  The formatter is the part that takes what you type and turns
+it into beautiful printed pages with even margins and so on.
+(In most word processors, these two parts are integrated, so that every
+character you type makes an immediate change in the beautifully formatted
+document.  But in principle the two tasks are separable.)
+
+<P>I'm going to write a text formatter.  I assume that you have some way
+to put text into a file.  (In some versions of Logo the same
+editor that you use for procedures can also edit text files.
+Otherwise you probably have a separate program that edits files, or
+else you can write one in Logo!)  The formatter will read lines from a
+file, fill and justify paragraphs, and print the result.  (To <EM>
+fill</EM> text means to fit as many words as possible into each printed
+line.  To <EM>justify</EM> the text is to insert extra spaces between
+words so that both margins line up.) You can see how the
+formatter will work by examining the example on the following pages.
+I've shown both what's in the file and what my program prints.
+
+<HR>
+
+<P>Formatter input file:
+
+<P><PRE><SMALL>
+When I wrote the first edition of this book in 1984, I said that the study of
+computer programming was intellectually rewarding for young children in
+elementary school, and for computer science majors in college, but that high
+school students and adults studying on their own generally had an
+intellectually barren diet, full of technical details of some particular
+computer brand.
+
+At about the same time I wrote those words, the College Board was introducing
+an Advanced Placement exam in computer science.  Since then, the AP course has
+become popular, and similar official or semi-official computer science
+curricula have been adopted in other countries as well.  Meanwhile, the
+computers available to ordinary people have become large enough and powerful
+enough to run serious programming languages, breaking the monopoly of BASIC.
+* nofill
+I think that there shall never exist
+a poem as lovely as a tree-structured list.
+* yesfill
+So, the good news is that intellectually serious computer science is within
+the reach of just about everyone.  The bad news is that the curricula tend to
+be imitations of what is taught to beginning undergraduate computer science
+majors, and I think that's too rigid a starting point for independent
+learners, and especially for teenagers.
+
+See, the wonderful thing about computer programming is that it's fun, perhaps
+not for everyone, but for very many people.  There aren't many mathematical
+activities that appeal so spontaneously.  Kids get caught up in the
+excitement of programming, in the same way that other kids (or maybe the
+same ones) get caught up in acting, in sports, in journalism (provided the
+paper isn't run by teachers), or in ham radio.  If schools get too serious
+about computer science, that spontaneous excitement can be lost.  I once
+heard a high school teacher say proudly that kids used to hang out in his
+computer lab at all hours, but since they introduced the computer science
+curriculum, the kids don't want to program so much because they've learned
+that programming is just a means to the end of understanding the
+curriculum.  No!  The ideas of computer science are a means to the end of
+getting computers to do what you want.
+*skip 4
+*make "nofilltab 15
+*nofill
+Computer
+Science
+Apprenticeship
+*yesfill
+*make "spacing 2
+My goal in this series of books is to make the goals and methods of a serious
+computer scientist accessible, at an introductory level, to people who are
+interested in computer programming but are not computer science majors.  If
+you're an adult or teenaged hobbyist, or a teacher who wants to use the
+computer as an educational tool, you're definitely part of this audience.
+I've taught these ideas to teachers and to high school students.  What I enjoy
+most is teaching high school freshmen who bring a love of programming into the
+class with them--the ones who are always tugging at my arm to tell me what they
+found in the latest Byte.
+</SMALL></PRE><P>
+
+<HR>
+
+<P>Formatted output:
+
+<PRE><SMALL><SMALL><SMALL><SMALL>
+
+
+
+
+
+
+            When  I wrote the first edition of this book in 1984, I said
+       that   the  study  of  computer  programming  was  intellectually
+       rewarding  for  young  children  in  elementary  school,  and for
+       computer science majors in college, but that high school students
+       and  adults studying on their own generally had an intellectually
+       barren  diet,  full  of  technical  details  of  some  particular
+       computer brand.
+
+            At  about  the  same  time  I wrote those words, the College
+       Board  was  introducing  an  Advanced  Placement exam in computer
+       science.  Since  then,  the  AP  course  has  become popular, and
+       similar official or semi-official computer science curricula have
+       been adopted in other countries as well. Meanwhile, the computers
+       available  to  ordinary  people  have  become  large  enough  and
+       powerful  enough  to  run serious programming languages, breaking
+       the monopoly of BASIC.
+
+       I think that there shall never exist
+       a poem as lovely as a tree-structured list.
+
+            So,  the  good  news is that intellectually serious computer
+       science  is within the reach of just about everyone. The bad news
+       is  that the curricula tend to be imitations of what is taught to
+       beginning  undergraduate  computer  science  majors,  and I think
+       that's  too  rigid a starting point for independent learners, and
+       especially for teenagers.
+
+            See,  the wonderful thing about computer programming is that
+       it's  fun,  perhaps  not  for everyone, but for very many people.
+       There   aren't   many  mathematical  activities  that  appeal  so
+       spontaneously.   Kids   get   caught  up  in  the  excitement  of
+       programming,  in  the same way that other kids (or maybe the same
+       ones) get caught up in acting, in sports, in journalism (provided
+       the paper isn't run by teachers), or in ham radio. If schools get
+       too  serious  about computer science, that spontaneous excitement
+       can  be lost. I once heard a high school teacher say proudly that
+       kids used to hang out in his computer lab at all hours, but since
+       they  introduced  the computer science curriculum, the kids don't
+       want  to program so much because they've learned that programming
+       is  just  a means to the end of understanding the curriculum. No!
+       The  ideas  of computer science are a means to the end of getting
+       computers to do what you want.
+
+
+
+
+
+                      Computer
+                      Science
+                      Apprenticeship
+
+            My  goal  in  this  series of books is to make the goals and
+
+       methods  of  a  serious  computer  scientist  accessible,  at  an
+
+
+
+
+
+
+<CENTER><HR width="50%"></CENTER>
+
+
+
+
+
+       introductory  level,  to  people  who  are interested in computer
+
+       programming  but  are  not  computer science majors. If you're an
+
+       adult  or  teenaged  hobbyist,  or a teacher who wants to use the
+
+       computer  as  an educational tool, you're definitely part of this
+
+       audience.  I've taught these ideas to teachers and to high school
+
+       students.  What I enjoy most is teaching high school freshmen who
+
+       bring  a  love  of programming into the class with them--the ones
+
+       who  are  always  tugging at my arm to tell me what they found in
+
+       the latest Byte.
+
+</SMALL></SMALL></SMALL></SMALL></PRE>
+<HR>
+
+<P>For the most part the formatter just copies words from one file to
+another, filling and justifying as it goes.  A blank line in the file
+indicates a break between paragraphs.  The program skips a line
+between paragraphs and indents the first line of the new paragraph.
+It's possible to control the formatter's work by including <EM>
+formatting commands</EM> in the file.  These are the lines that start
+with asterisks in the example.  For example, the line that says
+
+<P><PRE>* nofill
+</PRE>
+
+<P>means, &quot;From now on, stop filling paragraphs.  Instead,
+each line in the input file should be one line in the printed result.&quot; The
+<CODE>yesfill</CODE> command returns to normal paragraph style.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I'd
+have liked to call the command <CODE>fill</CODE>, as it would be in a
+commercial word processing program, but unfortunately that's the name
+of a primitive procedure in Logo.</SMALL></BLOCKQUOTE></SMALL><P>To run the program, invoke the <CODE>format</CODE> command.  This command
+takes two inputs: the name of a file to read and the name of a file
+to write.  The latter might be the name of the printer if your operating
+system allows it.
+
+<P><H2>Page Geometry</H2>
+
+<P>The program uses several global variables to determine the layout of a
+printed page.  Vertical measurements are in vertical lines (6 per inch for
+most computer printers); horizontal measurements are in characters (10 per
+inch is common, although there is more variation in this unit).  The program
+assumes fixed-width characters; a more professional program would handle
+variable-width character fonts, but the added complexity wouldn't help you
+learn the things I'm most interested in now.
+
+<P><CENTER><IMG SRC="formatter.jpg" ALT="figure: formatter"></CENTER>
+
+<P><P>
+
+<TABLE>
+<TR><TH align="left">pageheight<TD>&nbsp;&nbsp;&nbsp;Height of the entire sheet of paper, including margins.
+<TR><TH align="left">topmar<TD>&nbsp;&nbsp;&nbsp;Number of lines of margin at the top of each page.
+<TR><TH align="left">lines<TD>&nbsp;&nbsp;&nbsp;Number of lines to be printed on each page.
+<TR><TH align="left">parskip<TD>&nbsp;&nbsp;&nbsp;Number of blank lines between paragraphs.
+<TR><TH align="left">spacing<TD>&nbsp;&nbsp;&nbsp;1 for single spaced printing, 2 for double spaced, etc.
+<TR><TH align="left">leftmar<TD>&nbsp;&nbsp;&nbsp;Number of characters of margin at the left of the page.
+<TR><TH align="left">width<TD>&nbsp;&nbsp;&nbsp;Number of characters to print on each line.
+<TR><TH align="left">filltab<TD>&nbsp;&nbsp;&nbsp;Number of characters to indent the first line of a paragraph.
+<TR><TH align="left">nofilltab<TD>&nbsp;&nbsp;&nbsp;Number of characters to indent each nofill line.
+</TABLE>
+
+<P>The formatter recognizes formatting commands, in the file it's
+reading, to change the values of these variables.  By a strange
+coincidence these formatting commands look similar to the Logo
+commands to set a variable.  In the sample file, for instance, the
+formatting command
+
+<P><PRE>*make &quot;spacing 2
+</PRE>
+
+<P>is used to start double spacing.
+
+<P><H2>The Program</H2>
+
+<P>Here are the procedures that make up the formatter.
+
+<P><PRE>
+to format :from :to
+openread :from
+openwrite :to
+setread :from
+setwrite :to
+init.vars
+loop
+setread []
+setwrite []
+close :from
+close :to
+end
+
+to init.vars
+make "pageheight 66
+make "topmar 6
+make "lines 54
+make "leftmar 7
+make "width 65
+make "filltab 5
+make "nofilltab 0
+make "parskip 1
+make "spacing 1
+make "started "false
+make "filling "true
+make "printed 0
+make "inline []
+end
+
+to <A NAME="loop">loop
+forever [if process nextword [stop]]
+end
+
+;; Add a word to the output file, starting a new line if necessary
+
+to <A NAME="process">process</A> :word
+if listp :word [output "true]
+if not :started [start]
+if (:linecount+1+count :word) > :width [putline]
+addword :word
+output "false
+end
+
+to <A NAME="addword">addword :word</A>
+if not emptyp :line [make "linecount :linecount+1]
+make "line lput :word :line
+make "linecount :linecount+count :word
+end
+
+to <A NAME="putline">putline</A>
+repeat :leftmar+:indent [type "| |]
+putwords :line ((count :line)-1) (:width-:linecount)
+newline
+skip :spacing
+end
+
+to <A  NAME="putwords">putwords</A> :line :spaces :filler
+local "perword
+if emptyp :line [stop]
+type first :line
+make "perword ifelse :spaces > 0 [int ((:filler+:spaces-1)/:spaces)] [0]
+if :filler > 0 [repeat :perword [type "| |]]
+type "| |
+putwords (butfirst :line) (:spaces-1) (:filler-:perword)
+end
+
+;; Get the next input word, reading a new line if necessary
+
+to <A NAME="nextword">nextword</A>
+if not emptyp :inline [output extract.word]
+if not :filling [break]
+make "inline readword
+if listp :inline [break output []]
+if emptyp :inline [break output nextword]
+if equalp first :inline "|*| ~
+   [run butfirst :inline
+    make "inline "]
+make "inline skipspaces :inline
+output nextword
+end
+
+to <A NAME="extract.word">extract.word</A>
+local "result
+make "result firstword :inline
+make "inline skipfirst :inline
+output :result
+end
+
+to firstword :word
+if emptyp :word [output "]
+if equalp first :word "| | [output "]
+output word (first :word) (firstword butfirst :word)
+end
+
+to skipfirst :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces :word]
+output skipfirst butfirst :word
+end
+
+to skipspaces :word
+if emptyp :word [output "]
+if equalp first :word "| | [output skipspaces butfirst :word]
+output :word
+end
+
+;; Formatting helpers
+
+to start
+make "started "true
+repeat :topmar [print []]
+newindent
+end
+
+to newindent
+newline
+make "indent ifelse :filling [:filltab] [:nofilltab]
+make "linecount :indent
+end
+
+to newline
+make "line []
+make "indent 0
+make "linecount 0
+end
+
+to <A NAME="break">break</A>
+if emptyp :line [stop]
+make "linecount :width
+putline
+newindent
+if :filling [skip :parskip]
+end
+
+;; Formatting commands to be invoked by the user
+
+to <A NAME="skip">skip</A> :howmany
+break
+repeat :howmany [print []]
+make "printed :printed+:howmany
+if :printed < :lines [stop]
+repeat :pageheight-:printed [print []]
+make "printed 0
+end
+
+to nofill
+break
+make "filling "false
+newindent
+end
+
+to yesfill
+break
+if not :filling [skip :parskip]
+make "filling "true
+newindent
+end
+</PRE>
+
+<P>To help you understand this program, you should start by imagining that the
+text file contains one big paragraph with no formatting commands.  For each
+word in the file, <A HREF="v2ch1.html#loop"><CODE>loop</CODE></A>
+invokes <A HREF="v2ch1.html#nextword"><CODE>nextword</CODE></A> to read the word and
+process to process it.  Just take <CODE>nextword</CODE> on faith for now
+and look at <A HREF="v2ch1.html#process"><CODE>process</CODE></A>.
+The third and fourth instruction lines are the
+interesting ones.  The third line asks whether adding this word to the
+partially filled print line will overflow its width.  If so, <CODE>process</CODE>
+invokes <A HREF="v2ch1.html#putline"><CODE>putline</CODE></A> to print
+that line and start a new one.  Then, in
+either case, <CODE>process</CODE> invokes <A HREF="v2ch1.html#addword"><CODE>addword</CODE></A>
+to add the word to the print
+line it's accumulating.  <CODE>Addword</CODE> puts the word at the end of the line
+and also adds its length to <CODE>:linecount</CODE>, the number of characters in
+the line.  If this isn't the first word of a new line, then it must also add
+another character to <CODE>:linecount</CODE> to take account of the space between
+words.
+
+<P><A HREF="v2ch1.html#putline"><CODE>Putline</CODE></A> is
+essentially just a fancy <CODE>print</CODE> command.  The
+complication comes in because the program is trying to justify the line by
+adding spaces where needed between words.  To do this, it has to <CODE>type</CODE>
+the line a word at a time; that's the task of
+<A HREF="v2ch1.html#putwords"><CODE>putwords</CODE></A>.  In that
+procedure, <CODE>:spaces</CODE> is the number of spaces between words not yet
+printed; in other words it's the number of positions into which extra spaces
+can be shoved.  (The idea is to spread out the necessary spaces as evenly as
+possible.) <CODE>:Filler</CODE> is the total number of extra spaces we need to
+insert; <CODE>:perword</CODE> is the number that should be inserted after the
+particular word we're typing right now.  (When I started writing <CODE>
+putline</CODE> and <CODE>putwords</CODE>, I thought that I could just calculate
+<CODE>:perword</CODE> once for each line.  But if the number of extra spaces we want
+to insert is not a multiple of the number of positions available, then the
+number of extra spaces may not be equal for every word in the line.)
+
+<P>That's pretty much the whole story about the printing part of the
+program.  The reading part is handled by
+<A HREF="v2ch1.html#nextword"><CODE>nextword</CODE></A>.  It reads a
+line at a time into the variable
+<CODE>inline</CODE>.  <CODE>Nextword</CODE> uses the Logo
+primitive <CODE>readword</CODE> to read a line, rather than the usual
+<CODE>readlist</CODE>, to avoid Logo's usual special handling of parentheses and
+brackets.  <CODE>Readword</CODE> outputs a word containing all of the characters on
+the line that it reads, even if the line includes spaces, which would
+ordinarily separate words.  Therefore, the program must divide the
+long word output by <CODE>readword</CODE> into ordinary words; that's the job of
+<A HREF="v2ch1.html#extract.word"><CODE>extract.word</CODE></A>
+and its subprocedures <CODE>firstword</CODE>,
+<CODE>skipword</CODE>, and <CODE>skipspaces</CODE>.
+
+<P>Each time <A HREF="v2ch1.html#nextword"><CODE>nextword</CODE></A>
+is invoked, it removes one word from the line and
+outputs that word.  When <CODE>:inline</CODE> is empty, <CODE>nextword</CODE> reads a new
+line from the file.  There are four possibilities: First, the end of the
+file may be reached.  <CODE>Listp</CODE> tests for this; if so, <CODE>nextword</CODE>
+outputs an empty list.  Second, the new line can be empty, indicating a
+paragraph break.  In this case <CODE>nextword</CODE> invokes
+<A HREF="v2ch1.html#break"><CODE>break</CODE></A> and reads
+another line.  Third, the new line can be a formatting command, starting
+with an asterisk.  In this case <CODE>nextword</CODE> just <CODE>run</CODE>s the line,
+minus the asterisk, and reads another line.  Fourth, the line can be an
+ordinary text line, in which case <CODE>nextword</CODE> goes back to extracting
+words from the line.
+
+<P>In most programming languages, most of the effort in writing a
+formatter like this would be in recognizing and evaluating the
+formatting commands.  I hope you appreciate how much Logo's ability to
+<CODE>run</CODE> instructions found in a file simplifies this task!  The danger
+in this technique is that an invalid instruction in the input file will
+crash the formatting program, giving a Logo error message.  (This is
+especially bad because after the error message we are left with a
+half-written output file still open.)  I'd like to &quot;catch&quot; errors
+while running the user's instructions; you'll see how to do that in
+Chapter 3.
+
+<P>The rest of the program is just a bunch of detail.  The
+<A HREF="v2ch1.html#skip"><CODE>skip</CODE></A>
+command is written to be used both by the formatting program itself
+and as a formatting command, as in the example I showed earlier.  As
+an exercise in understanding program structure, notice that <CODE>skip</CODE>
+invokes <A HREF="v2ch1.html#break"><CODE>break</CODE></A>
+and <CODE>break</CODE> invokes <CODE>skip</CODE>; then explain
+why they don't just keep invoking each other forever, like a recursive
+procedure without a stop rule.
+
+<P>Another slightly tricky part to understand is the variable
+<CODE>started</CODE> and the procedure <CODE>start</CODE>.
+<CODE>Start</CODE> is invoked by
+<CODE>process</CODE>, but only once, before processing the very first word of
+the text.  Ensuring the &quot;only once&quot; is the sole purpose of
+<CODE>started</CODE>, a variable that initially contains <CODE>false</CODE> and is
+changed to <CODE>true</CODE> by <CODE>start</CODE>.  Instead, why don't I just
+invoke <CODE>start</CODE> from <CODE>format</CODE> before calling <CODE>loop</CODE>?  The
+answer is that this technique allows the file to start with an
+instruction like
+
+<P><PRE>*make &quot;topmar 10
+</PRE>
+
+<P>Any such instructions will be evaluated <EM>before</EM>
+processing the first text word.  If <CODE>start</CODE> were invoked by
+<CODE>format</CODE>, the top margin would be skipped before this instruction had a
+chance to set <CODE>:topmar</CODE>.
+
+<P><H2>Improving the Formatter</H2>
+
+<P>Actually, using <CODE>make</CODE> as a formatting command is a little
+schlock--not what I'd call good &quot;human engineering.&quot; If you wanted
+to make a million dollars selling this program, you'd add several
+little procedures like this:
+
+<P><PRE>to topmar :lines
+make &quot;topmar :lines
+end
+</PRE>
+
+<P>Like <CODE>nofill</CODE> and <CODE>yesfill</CODE>, these procedures would be
+used only as formatting commands, not as part of the formatter itself.
+
+<P>The program leaves out a lot of things you'd like to be able to do.
+You should be able to number pages automatically in the top or bottom
+margins.  (That's a pretty easy modification; most of the work would
+be in <CODE>skip</CODE>.) You'd like to be able to center lines on the page
+for chapter headings.  If your printer can underline or use different
+type faces, you'll want a way to control those things with formatting
+commands.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>If you're <EM>really</EM> ambitious, you could try
+teaching the program about footnotes!</SMALL></BLOCKQUOTE></SMALL>
+
+<P>Still, this is a usable program carrying out a real task.  It takes
+19 Logo procedures averaging 7 lines each.  This would be a
+much harder project in most languages.  What makes it so manageable in
+Logo?  First, <EM>modularity.</EM>  A small procedure for each task makes
+the overall program easier to understand than it would be if it were
+all in one piece.  Second, Logo's data types, words and lists, are
+well suited to this problem.  Third, Logo's control mechanisms, especially
+recursive operations and <CODE>run</CODE>, have the needed flexibility.
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch0/ack.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch2/v2ch2.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch10/iter.html b/js/games/nluqo.github.io/~bh/v2ch10/iter.html
new file mode 100644
index 0000000..dcb816e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch10/iter.html
@@ -0,0 +1,1404 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 10: Iteration, Control Structures, Extensibility</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Iteration, Control Structures, Extensibility</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch10.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch11/v2ch11.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+In this chapter we're taking a tour &quot;behind the scenes&quot; of Berkeley Logo.
+Many of the built-in Logo procedures that we've been using all along are
+not, strictly speaking, primitive; they're written in Logo itself.  When you
+invoke a procedure, if the Logo interpreter does not already know a procedure
+by that name, it automatically looks in a <EM>library</EM> of predefined
+procedures.  For example, in Chapter 6 I used an operation called
+<CODE>gensym</CODE> that outputs a new, unique word each time it's invoked.  If
+you start up a fresh copy of Logo you can try these experiments:
+
+<PRE>
+? <U>po "gensym</U>
+I don't know how  to gensym
+? <U>show gensym</U>
+g1
+? <U>po "gensym</U>
+to gensym
+if not namep "gensym.number [make "gensym.number 0]
+make "gensym.number :gensym.number + 1
+output word "g :gensym.number
+end
+</PRE>
+
+<P>
+The first interaction shows that <CODE>gensym</CODE> is not really a Logo
+primitive; the error message indicates that there is no such procedure.  Then
+I invoked <CODE>gensym</CODE>, which made Berkeley Logo read its definition
+automatically from the library.  Finally, once Logo has read the definition,
+I can print it out.
+
+<P>
+In particular, most of the tools we've used to carry out a computation
+repeatedly are not true Logo primitives: <CODE>for</CODE> for numeric
+iteration, <CODE>foreach</CODE> for list iteration, and <CODE>while</CODE>
+for predicate-based iteration are all library procedures.  (The word
+<EM>iteration</EM> just means &quot;repetition.&quot;) The only iteration mechanisms
+that are truly primitive in Logo are <CODE>repeat</CODE> and recursion.
+
+<P>
+Computers are good at doing things over and over again.  They don't
+get bored or tired.  That's why, in the real world, people use
+computers for things like sending out payroll checks and telephone
+bills.  The first Logo instruction I showed you, in the first volume, was
+
+<PRE>
+repeat 50 [setcursor list random 75 random 20 type "Hi]
+</PRE>
+
+<P>
+When you were first introduced to turtle graphics, you
+probably used an instruction like
+
+<PRE>
+repeat 360 [forward 1 right 1]
+</PRE>
+
+<P>
+to draw a circle.
+
+<H2>Recursion as Iteration</H2>
+
+<P>
+The trouble with <CODE>repeat</CODE> is that it always does <EM>exactly</EM>
+the same thing repeatedly.  In a real application, like those payroll
+checks, you want the computer to do <EM>almost</EM> the same thing each
+time but with a different person's name on each check.  The usual way
+to program an almost-<CODE>repeat</CODE> in Logo is to use a recursive
+procedure, like this:
+
+<PRE>
+to polyspi :side :angle :number
+if :number=0 [stop]
+forward :side
+right :angle
+polyspi :side+1 :angle :number-1
+end
+</PRE>
+
+<P>
+This is a well-known procedure to draw a spiral.  What makes
+it different from
+
+<PRE>
+repeat :number [forward :side right :angle]
+</PRE>
+
+<P>
+is that the first input in the recursive invocation is <CODE>:side+1</CODE>
+instead of just <CODE>:side</CODE>.  We've used a similar technique for
+almost-repetition in procedures like this one:
+
+<PRE>
+to multiply :letters :number
+if equalp :number 0 [stop]
+print :letters
+multiply (word :letters first :letters) :number-1
+end
+</PRE>
+
+<P>
+Since recursion can express any repetitive computation, why bother
+inventing other iteration tools?  The answer is that they can make
+programs easier to read.  Recursion is such a versatile mechanism
+that the intention of any particular use of recursion may be hard to
+see.  Which of the following is easier to read?
+
+<PRE>
+to fivesay.with.repeat :text
+repeat 5 [print :text]
+end
+</PRE>
+
+<P>
+or
+
+<PRE>
+to fivesay.with.recursion :text
+fivesay1 5 :text
+end
+
+to fivesay1 :times :text
+if :times=0 [stop]
+print :text
+fivesay1 :times-1 :text
+end
+</PRE>
+
+<P>
+The version using <CODE>repeat</CODE> makes it obvious at a glance
+what the program wants to do; the version using recursion takes some
+thought.  It can be useful to invent mechanisms that are intermediate
+in flexibility between <CODE>repeat</CODE> and recursion.
+
+<P>
+As a simple example, suppose that Logo did not include <CODE>repeat</CODE> as
+a primitive command.  Here's how we could implement it using recursion:
+
+<PRE>
+to rep :count :instr
+if :count=0 [stop]
+run :instr
+rep :count-1 :instr
+end
+</PRE>
+
+<P>
+(I've used the name <CODE>rep</CODE> instead of <CODE>repeat</CODE> to avoid
+conflict with the primitive version.)  The use of <CODE>run</CODE> to carry out
+the given instructions is at the core of the techniques we'll use
+throughout this chapter.
+
+<H2>Numeric Iteration</H2>
+
+<P>
+<CODE>Polyspi</CODE> is an example of an iteration in which the value of a
+numeric variable changes in a uniform way.  The instruction
+
+<PRE>
+polyspi 50 60 4
+</PRE>
+
+<P>
+is equivalent to the series of instructions
+
+<PRE>
+forward 50 right 60
+forward 51 right 60
+forward 52 right 60
+forward 53 right 60
+</PRE>
+
+<P>
+As you know, we can represent the same instructions this way:
+
+<PRE>
+for [side 50 53] [forward :side right 60]
+</PRE>
+
+<P>
+The <CODE>for</CODE> command takes two inputs, very much like
+<CODE>repeat</CODE>.  The second input, like <CODE>repeat</CODE>'s second
+input, is a list of Logo instructions.  The first input to <CODE>for</CODE>
+is different, though.  It is a list whose first member is the name of a
+variable; the second member of the list must be a number (or a Logo
+expression whose value is a number), which will be the <EM>initial</EM>
+value of that variable; and the third member must be another number (or
+numeric expression), which will be the <EM>final</EM> value of the
+variable.  In the example above, the variable name is <CODE>side</CODE>, the
+initial value is <CODE>50</CODE>, and the final value is <CODE>53</CODE>.
+If there is a fourth member in the list, it's the amount to add to the named
+variable on each iteration; if there is no fourth member, as in the example
+above, then the <EM>step</EM> amount is either 1 or -1, depending on
+whether the final value is greater than or less than the initial value.
+
+<P>
+As an example in which expressions are used instead of constant numeric
+values, here's the <CODE>polyspi</CODE> procedure using <CODE>for</CODE>:
+
+<PRE>
+to polyspi :start :angle :number
+for [side :start [:start+:number-1]] [forward :side right :angle]
+end
+</PRE>
+
+<P>
+Most of the work in writing <CODE>for</CODE> is in evaluating the expressions
+that make up the first input list.  Here is the program:
+
+<PRE>
+<A name="impfor">to for :values :instr</A>
+localmake "var first :values
+local :var
+localmake "initial run first butfirst :values
+localmake "final run item 3 :values
+localmake "step forstep
+localmake "tester ~
+          ifelse :step < 0 [[:value < :final]] [[:value > :final]]
+forloop :initial
+end
+
+to forstep
+if (count :values)=4 [output run last :values]
+if :initial > :final [output -1]
+output 1
+end
+
+to forloop :value
+make :var :value
+if run :tester [stop]
+run :instr
+forloop :value+:step
+end
+</PRE>
+
+<P>
+One slightly tricky part of this program is the instruction
+
+<PRE>
+local :var
+</PRE>
+
+<P>
+near the beginning of <CODE>for</CODE>.  The effect of this instruction is
+to make whatever variable is named by the first member of the first input
+local to <CODE>for</CODE>.  As it turns out, this variable isn't given a
+value in <CODE>for</CODE> itself but only in its subprocedure
+<CODE>forloop</CODE>.  (A <EM>loop,</EM> by the way, is a part of a program
+that is invoked repeatedly.) But I'm thinking of these three procedures as a
+unit and making the variable local to that whole unit.  The virtue of this
+<CODE>local</CODE> instruction is that a program that uses <CODE>for</CODE>
+can invent variable names for <CODE>for</CODE> freely, without having to
+declare them local and without cluttering up the workspace with global
+variables.  Also, it means that a procedure can invoke another procedure in
+the instruction list of a <CODE>for</CODE> without worrying about whether
+<EM>that</EM> procedure uses <CODE>for</CODE> itself.  Here's the case I'm
+thinking of:
+
+<PRE>
+to a
+for [i 1 5] [b]
+end
+
+to b
+for [i 1 3] [print "foo]
+end
+</PRE>
+
+<P>
+Invoking <CODE>A</CODE> should print the word <CODE>foo</CODE> fifteen
+times: three times for each of the five invocations of <CODE>B</CODE>.  If
+<CODE>for</CODE> didn't make <CODE>I</CODE> a local variable, the invocation
+of <CODE>for</CODE> within <CODE>B</CODE> would mess up the value of
+<CODE>I</CODE> in the outer <CODE>for</CODE> invoked by
+<CODE>A</CODE>.  Got that?
+
+<P>
+Notice that the <CODE>make</CODE> instruction in <CODE>forloop</CODE> has
+<CODE>:var</CODE> as its first input, not <CODE>"var</CODE>.  This
+instruction does not assign a new value to the variable <CODE>var</CODE>!
+Instead, it assigns a new value to the variable whose name is the value of
+<CODE>var</CODE>.
+
+<P>
+The version of <CODE>for</CODE> actually used in the Berkeley Logo library is
+a little more complicated than this one.  The one shown here works fine as
+long as the instruction list input doesn't include <CODE>stop</CODE> or
+<CODE>output</CODE>, but it won't work for an example like the following.
+To check whether or not a number is prime, we must see if it is divisible by
+anything greater than 1 and smaller than the number itself:
+
+<PRE>
+to primep :num
+for [trial 2 [:num-1]] [if divisiblep :num :trial [output "false]]
+output "true
+end
+
+to divisiblep :big :small
+output equalp remainder :big :small 0
+end
+</PRE>
+
+<P>
+This example will work in the Berkeley Logo <CODE>for</CODE>, but not
+in the version I've written in this chapter.  The trouble is that the
+instruction
+
+<PRE>
+run :instr
+</PRE>
+
+<P>
+in <CODE>forloop</CODE> will make <CODE>forloop</CODE> output
+<CODE>false</CODE> if a divisor is found, whereas we really want
+<CODE>primep</CODE> to output <CODE>false</CODE>!  We'll see in Chapter 12
+how to solve this problem.
+
+<H2>Logo: an Extensible Language</H2>
+
+<P>
+There are two ways to look at a program like <CODE>for</CODE>.  You can take
+it apart, as I've been doing in these last few paragraphs, to see how it
+works inside.  Or you can just think of it as an extension to Logo, an
+iteration command that you can use as you'd use <CODE>repeat</CODE>, without
+thinking about how it works.  I think both of these perspectives will be
+valuable to you.  As a programming project, <CODE>for</CODE> demonstrates
+some rather advanced Logo techniques.  But you don't have to think about
+those techniques each time you use <CODE>for</CODE>.  Instead you can think
+of it as a primitive, as we've been doing prior to this chapter.
+
+<P>
+The fact that you can extend Logo's vocabulary this way, adding a new way to
+control iteration that looks just like the primitive <CODE>repeat</CODE>, is
+an important way in which Logo is more powerful than toy programming
+languages like C++ or Pascal.  C++ has several iteration commands built in,
+including one like <CODE>for</CODE>, but if you think of a new one, there's
+no way you can add it to the language.  In Logo this kind of language
+extension is easy.  For example, here is a preview of a programming project
+I'm going to develop later in this chapter.  Suppose you're playing with
+spirals, and you'd like to see what happens if you change the line length
+<EM>and</EM> the turning angle at the same time.  That is, you'd like to be
+able to say
+
+<PRE>
+multifor [[size 50 100 5] [angle 50 100 10]] [forward :size right :angle]
+</PRE>
+
+<P>
+and have that be equivalent to the series of instructions
+
+<PRE>
+forward 50 right 50
+forward 55 right 60
+forward 60 right 70
+forward 65 right 80
+forward 70 right 90
+forward 75 right 100
+</PRE>
+
+<P>
+<CODE>Multifor</CODE> should step each of its variables each time
+around, stopping whenever any of them hits the final value.  This tool
+strikes me as too specialized and complicated to provide in the Logo
+library, but it seems very appropriate for certain kinds of project.
+It's nice to have a language in which I can write it if I need it.
+
+<H2>No Perfect Control Structures</H2>
+
+<P>
+Among enthusiasts of the Fortran family of programming languages (that is,
+all the languages in which you have to say ahead of time whether or not the
+value of some numeric variable will be an exact integer), there are fierce
+debates about the &quot;best&quot; control structure.  (A <EM>control structure</EM>
+is a way of grouping instructions together, just as a <EM>data
+structure</EM> is a way of grouping data together.  A list is a data
+structure.  A procedure is a control structure.  Things like
+<CODE>if</CODE>, <CODE>repeat</CODE>, and <CODE>for</CODE> are special
+control structures that group instructions in particular ways, so that a
+group of instructions can be evaluated conditionally or repeatedly.)
+
+<P>
+For example, all of the Fortran-derived languages have a control
+structure for numeric iteration, like my <CODE>for</CODE> procedure.  But
+they differ in details.  In some languages the iteration variable
+must be stepped by 1.  In others the step value can be either 1 or
+-1.  Still others allow any step value, as <CODE>for</CODE> does.  Each of
+these choices has its defenders as the &quot;best.&quot;
+
+<P>
+Sometimes the arguments are even sillier.  When Fortran was first
+invented, its designers failed to make explicit what should happen
+if the initial value of an iteration variable is greater than the
+final value.  That is, they left open the interpretation of a Fortran
+<CODE>do</CODE> statement (that's what its numeric iteration structure is
+called) equivalent to this <CODE>for</CODE> instruction:
+
+<PRE>
+for [var 10 5 1] [print :var]
+</PRE>
+
+<P>
+In this instruction I've specified a positive step (the
+only kind allowed in the Fortran <CODE>do</CODE> statement), but the initial
+value is greater than the final value.  (What will <CODE>for</CODE> do in
+this situation?) Well, the first Fortran compiler, the program that
+translates a Fortran program into the &quot;native&quot; language of a
+particular computer, implemented <CODE>do</CODE> so that the statements
+controlled by the <CODE>do</CODE> were carried out once before the computer
+noticed that the variable's value was already too large.  Years later
+a bunch of computer scientists decided that that behavior is
+&quot;wrong&quot;; if the initial value is greater than the final value, the
+statements shouldn't be carried out at all.  This proposal for a
+&quot;zero trip <CODE>do</CODE> loop&quot; was fiercely resisted by old-timers who
+had by then written hundreds of programs that relied on the original
+behavior of <CODE>do</CODE>.  Dozens of journal articles and letters to the
+editor carried on the battle.
+
+<P>
+The real moral of this story is that there is no right answer.
+The right control structure for <EM>you</EM> to use is the one that
+best solves <EM>your</EM> immediate problem.  But only an extensible
+language like Logo allows you the luxury of accepting this moral.
+The Fortran people had to fight out their battle because they're
+stuck with whatever the standardization committee decides.
+
+<P>
+In the remainder of this chapter I'll present various kinds of
+control structures, each reflecting a different way of looking at the
+general idea of iteration.
+
+<H2>Iteration Over a List</H2>
+
+<P>
+Numeric iteration is useful if the problem you want to solve is about
+numbers, as in the <CODE>primep</CODE> example, or if some arbitrary number is
+part of the rules of a game, like the seven stacks of cards in solitaire.
+But in most Logo projects, it's more common to want to carry out a
+computation for each member of a list, and for that purpose we have
+the <CODE>foreach</CODE> control structure:
+
+<PRE>
+? <U>foreach [chocolate [rum raisin] pumpkin] [print sentence [I like] ?]</U>
+I like chocolate
+I like rum raisin
+I like pumpkin
+</PRE>
+
+<P>
+In comparing <CODE>foreach</CODE> with <CODE>for</CODE>, one thing you might
+notice is the use of the question mark to represent the varying datum in
+<CODE>foreach</CODE>, while <CODE>for</CODE> requires a user-specified
+variable name for that purpose.  There's no vital reason why I used these
+different mechanisms.  In fact, we can easily implement a version of
+<CODE>foreach</CODE> that takes a variable name as an additional input.  Its
+structure will then look similar to that of <CODE>for</CODE>:
+
+<PRE>
+to named.foreach :var :data :instr
+local :var
+if emptyp :data [stop]
+make :var first :data
+run :instr
+named.foreach :var (butfirst :data) :instr
+end
+
+? <U>named.foreach "flavor [lychee [root beer swirl]] ~</U>
+                        <U>[print sentence [I like] :flavor]</U>
+I like lychee
+I like root beer swirl
+</PRE>
+
+<P> Just as in <A HREF="iter.html#impfor">the implementation of <CODE>for</CODE></A>,
+there is a recursive invocation for each member of the data input.  We
+assign that member as the value of the variable named in the first input,
+and then we <CODE>run</CODE> the instructions in the third input.
+
+<P>
+In order to implement the version of <CODE>foreach</CODE> that uses question
+marks instead of named variables, we need a more advanced version of
+<CODE>run</CODE> that says &quot;run these instructions, but using this value
+wherever you see a question mark.&quot; Berkeley Logo has this capability as a
+primitive procedure called <CODE>apply</CODE>.  It takes two inputs, a
+<EM>template</EM> (an instruction list with question marks) and a list of
+values.  The reason that the second input is a list of values, rather than a
+single value, is that <CODE>apply</CODE> can handle templates with more than
+one slot for values.
+
+<PRE>
+? <U>apply [print ?+3] [5]</U>
+8
+? <U>apply [print word first ?1 first ?2] [Peter Dickinson]</U>
+PD
+</PRE>
+
+<P>
+It's possible to write <CODE>apply</CODE> in terms of <CODE>run</CODE>, and
+I'll do that shortly.  But first, let's just take advantage of Berkeley
+Logo's built-in <CODE>apply</CODE> to write a simple version of
+<CODE>foreach</CODE>:
+
+<PRE>
+to foreach :list :template
+if emptyp :list [stop]
+apply :template (list first :list)
+foreach (butfirst :list) :template
+end
+</PRE>
+
+<P>
+<CODE>Apply</CODE>, like <CODE>run</CODE>, can be either a command or an
+operation depending on whether its template contains complete Logo
+instructions or a Logo expression.  In this case, we are using
+<CODE>apply</CODE> as a command.
+
+<P>
+The version of <CODE>foreach</CODE> in the Berkeley Logo library can take
+more than one data input along with a multi-input template, like this:
+
+<PRE>
+? <U>(foreach [John Paul George Ringo] [rhythm bass lead drums]</U>
+           <U>[print (sentence ?1 "played ?2)]</U>
+John played rhythm
+Paul played bass
+George played lead
+Ringo played drums
+</PRE>
+
+<P>
+We can implement this feature, using a special notation in the title line of
+<CODE>foreach</CODE> to notify Logo that it accepts a variable number of
+inputs:
+
+<PRE>
+to foreach [:inputs] 2
+foreach.loop (butlast :inputs) (last :inputs)
+end
+
+to foreach.loop :lists :template
+if emptyp first :lists [stop]
+apply :template firsts :lists
+foreach.loop (butfirsts :lists) :template
+end
+</PRE>
+
+<P>
+First look at the title line of <CODE>foreach</CODE>.  It tells Logo
+that the word <CODE>inputs</CODE> is a formal parameter--the name of an input.
+Because <CODE>:inputs</CODE> is inside square brackets, however, it represents
+not just one input, but any number of inputs in the invocation of
+<CODE>foreach</CODE>.  The values of all those inputs are collected as a list,
+and that list is the value of <CODE>inputs</CODE>.  Here's a trivial example:
+
+<PRE>
+to demo [:stuff]
+print sentence [The first input is] first :stuff
+print sentence [The others are] butfirst :stuff
+end
+
+? <U>(demo "alpha "beta "gamma)</U>
+The first input is alpha
+The others are beta gamma
+</PRE>
+
+<P>
+As you know, the Logo procedures that accept a variable number of inputs
+have a <EM>default</EM> number that they accept without using parentheses;
+if you want to use more or fewer than that number, you must enclose the
+procedure name and its inputs in parentheses, as I've done here with the
+<CODE>demo</CODE> procedure.  Most Logo primitives that accept a variable
+number of inputs have two inputs as their default number (for example,
+<CODE>sentence</CODE>, <CODE>sum</CODE>, <CODE>word</CODE>) but there are
+exceptions, such as <CODE>local</CODE>, which takes one input if parentheses
+are not used.  When you write your own procedure with a single input name in
+brackets, its default number of inputs is zero unless you specify another
+number.  <CODE>Demo</CODE>, for example, has zero as its default number.  If
+you look again at the title line of <CODE>foreach</CODE>, you'll see that it
+ends with the number <CODE>2</CODE>; that tells Logo that
+<CODE>foreach</CODE> expects two inputs by default.
+
+<P>
+<CODE>Foreach</CODE> uses all but its last input as data lists; the last
+input is the template to be applied to the members of the data lists.  That's
+why <CODE>foreach</CODE> invokes <CODE>foreach.loop</CODE> as it does,
+separating the two kinds of inputs into two variables.
+
+<P>
+Be careful when reading the definition of <CODE>foreach.loop</CODE>; it
+invokes procedures named <CODE>firsts</CODE> and <CODE>butfirsts</CODE>.
+These are not the same as <CODE>first</CODE> and <CODE>butfirst</CODE>!
+Each of them takes a <EM>list of lists</EM> as its input, and outputs a list
+containing the first members of each sublist, or all but the first members,
+respectively:
+
+<PRE>
+? <U>show firsts [[a b c] [1 2 3] [y w d]]</U>
+[a 1 y]
+? <U>show butfirsts [[a b c] [1 2 3] [y w d]]</U>
+[[b c] [2 3] [w d]]
+</PRE>
+
+<P>
+It would be easy to write <CODE>firsts</CODE> and <CODE>butfirsts</CODE> in
+Logo:
+
+<PRE>
+to firsts :list.of.lists
+output map "first :list.of.lists
+end
+
+to butfirsts :list.of.lists
+output map "butfirst :list.of.lists
+end
+</PRE>
+
+<P>
+but in fact Berkeley Logo provides these operations as primitives, because
+implementing them as primitives makes the iteration tools such as
+<CODE>foreach</CODE> and <CODE>map</CODE> (which, as we'll see, also uses
+them) much faster.
+
+<P>
+Except for the use of <CODE>firsts</CODE> and <CODE>butfirsts</CODE> to
+handle the multiple data inputs, the structure of <CODE>foreach.loop</CODE>
+is exactly like that of the previous version of <CODE>foreach</CODE> that
+only accepts one data list.
+
+<P>
+Like <CODE>for</CODE>, the version of <CODE>foreach</CODE> presented here
+can't handle instruction lists that include <CODE>stop</CODE> or
+<CODE>output</CODE> correctly.
+
+<H2>Implementing <CODE>Apply</CODE></H2>
+
+<P>
+Berkeley Logo includes <CODE>apply</CODE> as a primitive, for efficiency, but
+we could implement it in Logo if necessary.  In this section, so as not
+to conflict with the primitive version, I'll use the name <CODE>app</CODE> for
+my non-primitive version of <CODE>apply</CODE>, and I'll use the percent sign
+(<CODE>%</CODE>) as the placeholder in templates instead of question mark.
+
+<P>
+Here is a simple version of <CODE>app</CODE> that allows only one input to the
+template:
+
+<PRE>
+to app :template :input.value
+run :template
+end
+
+to %
+output :input.value
+end
+</PRE>
+
+<P>
+This is so simple that it probably seems like magic.  <CODE>App</CODE> seems
+to do nothing but <CODE>run</CODE> its template as though it were an ordinary
+instruction list.  The trick is that a template <EM>is</EM> an instruction
+list.  The only unusual thing about a template is that it includes special
+symbols (<CODE>?</CODE> in the real <CODE>apply</CODE>, <CODE>%</CODE> in
+<CODE>app</CODE>) that represent the given value.  We see now that those
+special symbols are really just ordinary names of procedures.  The question
+mark (<CODE>?</CODE>) procedure is a Berkeley Logo primitive; I've defined
+the analogous <CODE>%</CODE> procedure here for use by <CODE>app</CODE>.
+
+<P>
+The <CODE>%</CODE> procedure outputs the value of a variable,
+<CODE>input.value</CODE>, that is local to <CODE>app</CODE>.  If you invoke
+<CODE>%</CODE> in some context other than an <CODE>app</CODE> template,
+you'll get an error message because that variable won't exist.  Logo's
+dynamic scope makes it possible for <CODE>%</CODE> to use <CODE>app</CODE>'s
+variable.
+
+<P>
+The real <CODE>apply</CODE> accepts a procedure name as argument instead of a
+template:
+
+<PRE>
+? <U>show apply "first [Logo]</U>
+L
+</PRE>
+
+<P>
+We can extend <CODE>app</CODE> to accept named procedures, but the
+definition is somewhat messier:
+
+<PRE>
+to app :template.or.name :input.value
+ifelse wordp :template.or.name ~
+       [run list :template.or.name "%] ~
+       [run :template.or.name]
+end
+</PRE>
+
+<P>
+If the first input is a word, we construct a template by combining that
+procedure name with a percent sign for its input.  However, in the rest of
+this section I'll simplify the discussion by assuming that <CODE>app</CODE>
+accepts only templates, not procedure names.
+
+<P>
+So far, <CODE>app</CODE> takes only one value as input; the real
+<CODE>apply</CODE> takes a list of values.  I'll extend <CODE>app</CODE> to
+match:
+
+<PRE>
+to app :template :input.values
+run :template
+end
+
+to % [:index 1]
+output item :index :input.values
+end
+</PRE>
+
+<P>
+No change is needed to <CODE>app</CODE>, but <CODE>%</CODE> has been changed
+to use another new notation in its title line.  <CODE>Index</CODE> is the
+name of an <EM>optional input.</EM> Although this notation also uses square
+brackets, it's different from the notation used in <CODE>foreach</CODE>
+because the brackets include a <EM>default value</EM> as well as the name
+for the input.  This version of <CODE>%</CODE> accepts either no inputs or
+one input.  If <CODE>%</CODE> is invoked with one input, then the value of
+that input will be associated with the name <CODE>index</CODE>, just as for
+ordinary inputs.  If <CODE>%</CODE> is invoked with no inputs, then
+<CODE>index</CODE> will be given the value 1 (its default value).
+
+<PRE>
+? <U>app [print word first (% 1) first (% 2)] [Paul Goodman]</U>
+PG
+</PRE>
+
+<P>
+A percent sign with a number as input selects an input value
+by its position within the list of values.  A percent sign by itself
+is equivalent to <CODE>(% 1)</CODE>.
+
+<P>
+The notation <CODE>(% 1)</CODE> isn't as elegant as the <CODE>?1</CODE> used
+in the real <CODE>apply</CODE>.  You can solve that problem by defining
+several extra procedures:
+
+<PRE>
+to %1                to %2                to %3
+output (% 1)         output (% 2)         output (% 3)
+end                  end                  end
+</PRE>
+
+<P>
+Berkeley Logo recognizes the notation <CODE>?2</CODE> and automatically
+translates it to <CODE>(? 2)</CODE>, as you can see by this experiment:
+
+<PRE>
+? <U>show runparse [print word first ?1 first ?2]</U>
+[print word first ( ? 1 ) first ( ? 2 )]
+</PRE>
+
+<P>
+(The primitive operation <CODE>runparse</CODE> takes a list as input
+and outputs the list as it would be modified by Logo when it is about
+to be run.  That's a handwavy description, but the internal workings
+of the Logo interpreter are too arcane to explore here.)
+
+<P>
+Unlike the primitive <CODE>apply</CODE>, this version of <CODE>app</CODE>
+works only as a command, not as an operation.  It's easy to write a separate
+version for use as an operation:
+
+<PRE>
+to app.oper :template :input.values
+output run :template
+end
+</PRE>
+
+<P>
+It's not so easy in non-Berkeley versions of Logo to write a
+single procedure that can serve both as a command and as an operation.
+Here's one solution that works in versions with <CODE>catch</CODE>:
+
+<PRE>
+to app :template :input.values
+catch "error [output run :template]
+ignore error
+end
+</PRE>
+
+<P>
+This isn't an ideal solution, though, because it doesn't report errors other
+than &quot;<CODE>run</CODE> didn't output to <CODE>output</CODE>.&quot; It could be
+improved by testing the error message more carefully instead of just
+ignoring it.
+
+<P>
+Berkeley Logo includes a mechanism that solves the problem more
+directly, but it's not very pretty:
+
+<PRE>
+to app :template :input.values
+.maybeoutput run :template
+end
+</PRE>
+
+<P>
+The primitive command <CODE>.maybeoutput</CODE> is followed by a Logo
+expression that may or may not produce a value.  If so, that value is
+output, just as it would be by the ordinary <CODE>output</CODE> command; the
+difference is that it's not considered an error if no value is produced.
+
+<P>
+From now on I'll use the primitive <CODE>apply</CODE>.  I showed you
+<CODE>app</CODE> for two reasons.  First, I think you'll understand
+<CODE>apply</CODE> better by seeing how it can be implemented.  Second, this
+implementation may be useful if you ever work in a non-Berkeley Logo.
+
+<H2>Mapping</H2>
+
+<P>
+So far the iteration tools we've created apply only to commands.
+As you know, we also have the operation <CODE>map</CODE>, which is similar
+to <CODE>foreach</CODE> except that its template is an expression (producing
+a value) rather than an instruction, and it accumulates the values
+produced for each member of the input.
+
+<PRE>
+? <U>show map [?*?] [1 2 3 4]</U>
+[1 4 9 16]
+? <U>show map [first ?] [every good boy does fine]</U>
+[e g b d f]
+?
+</PRE>
+
+<P>
+When implementing an iteration tool, one way to figure out how to write
+the program is to start with a specific example and generalize it.  For
+example, here's how I'd write the example about squaring the numbers in
+a list without using <CODE>map</CODE>:
+
+<PRE>
+to squares :numbers
+if emptyp :numbers [output []]
+output fput ((first :numbers) * (first :numbers)) ~
+            (squares butfirst :numbers)
+end
+</PRE>
+
+<P>
+<CODE>Map</CODE> is very similar, except that it applies a template to
+each datum instead of squaring it:
+
+<PRE>
+to map :template :values
+if emptyp :values [output []]
+output fput (apply :template (list first :values)) ~
+            (map :template butfirst :values)
+end
+</PRE>
+
+<P>
+You may be wondering why I used <CODE>fput</CODE> rather than
+<CODE>sentence</CODE> in these procedures.  Either would be just as good in
+the example about squares of numbers, because each datum is a single word (a
+number) and each result value is also a single word.  But it's important to
+use <CODE>fput</CODE> in an example such as this one:
+
+<PRE>
+to swap :pair
+output list last :pair first :pair
+end
+
+? <U>show map [swap ?] [[Sherlock Holmes] [James Pibble] [Nero Wolfe]]</U>
+[[Holmes Sherlock] [Pibble James] [Wolfe Nero]]
+
+? <U>show map.se [swap ?] [[Sherlock Holmes] [James Pibble] [Nero Wolfe]]</U>
+[Holmes Sherlock Pibble James Wolfe Nero]
+</PRE>
+
+<P>
+Berkeley Logo does provide an operation <CODE>map.se</CODE> in which
+<CODE>sentence</CODE> is used as the combiner; sometimes that's what you
+want, but not, as you can see, in this example.  (A third possibility that
+might occur to you is to use <CODE>list</CODE> as the combiner, but that
+never turns out to be the right thing; try writing a <CODE>map.list</CODE>
+and see what results it gives!)
+
+<P>
+As in the case of <CODE>foreach</CODE>, the program gets a little more
+complicated when we extend it to handle multiple data inputs.  Another
+complication that wasn't relevant to <CODE>foreach</CODE> is that when we
+use a word, rather than a list, as the data input to <CODE>map</CODE>, we
+must use <CODE>word</CODE> as the combiner instead of <CODE>fput</CODE>.
+Here's the complete version:
+
+<PRE>
+to map :map.template [:template.lists] 2
+op map1 :template.lists 1
+end
+
+to map1 :template.lists :template.number
+if emptyp first :template.lists [output first :template.lists]
+output combine (apply :map.template firsts :template.lists) ~
+               (map1 bfs :template.lists :template.number+1)
+end
+
+to combine :this :those
+if wordp :those [output word :this :those]
+output fput :this :those
+end
+</PRE>
+
+<P>
+This is the actual program in the Berkeley Logo library.  One feature I
+haven't discussed until now is the variable <CODE>template.number</CODE>
+used as an input to <CODE>map1</CODE>.  Its purpose is to allow the use of
+the number sign character <CODE>#</CODE> in a template to represent the
+position of each datum within its list:
+
+<PRE>
+? <U>show map [list ? #] [a b c]</U>
+[[a 1] [b 2] [c 3]]
+</PRE>
+
+<P>
+The implementation is similar to that of <CODE>?</CODE> in templates:
+
+<PRE>
+to #
+output :template.number
+end
+</PRE>
+
+<P>
+It's also worth noting the base case in <CODE>map1</CODE>.  When the data input
+is empty, we must output either the empty word or the empty list, and
+the easiest way to choose correctly is to return the empty input itself.
+
+<H2>Mapping as a Metaphor</H2>
+
+<P>
+In this chapter,
+we got to the idea of mapping by this route: iteration, numeric
+iteration, other kinds of iteration, iteration on a list, iterative
+commands, iterative operations, mapping.  In other words, we started
+thinking about the mapping tool as a particular kind of repetition in
+a computer program.
+
+<P>
+But when I first introduced <CODE>map</CODE> as a primitive operation,
+I thought about it in a different way.  Never mind the fact
+that it's <EM>implemented</EM> through repetition.  Instead think of
+it as extending the power of the idea of a list.  When we started
+thinking about lists, we thought of the list as one complete entity.
+For example, consider this simple interaction with Logo:
+
+<PRE>
+? <U>print count [how now brown cow]</U>
+4
+</PRE>
+
+<P>
+<CODE>Count</CODE> is a primitive operation.  It takes a list as
+input, and it outputs a number that is a property of the entire list,
+namely the number of members in the list.  There is no need to think
+of <CODE>count</CODE> as embodying any sort of repetitive control structure.
+Instead it's one kind of handle on the <EM>data</EM> structure called
+a list.
+
+<P>
+There are other operations that manipulate lists, like <CODE>equalp</CODE>
+and <CODE>memberp</CODE>.  You're probably in the habit of thinking of these
+operations as &quot;happening all at once,&quot; not as examples of
+iteration.  And that's a good way to think of them, even though it's
+also possible to think of them as iterative.  For example, how does
+Logo know the <CODE>count</CODE> of a list?  How would <EM>you</EM> find out
+the number of members of a list?  One way would be to count them on
+your fingers.  That's an iteration.  Logo actually does the same
+thing, counting off the list members one at a time, as it would if
+we implemented <CODE>count</CODE> recursively:
+
+<PRE>
+to cnt :list
+if emptyp :list [output 0]
+output 1+cnt butfirst :list
+end
+</PRE>
+
+<P>
+I'm showing you that the &quot;all at once&quot; Logo primitives can be
+considered as iterative because, in the case of <CODE>map</CODE>, I want to
+shift your point of view in the opposite direction.  We started
+thinking of <CODE>map</CODE> as iterative; now I'd like you to think of it
+as happening all at once.
+
+<P>
+Wouldn't it be nice if we could say
+
+<PRE>
+? <U>show 1+[5 10 15]</U>
+[6 11 16]
+</PRE>
+
+<P>
+That is, I'd like to be able to &quot;add 1 to a list.&quot; I want
+to think about it that way, not as &quot;add 1 to each member of a list.&quot;
+The metaphor is that we're doing something to the entire list at once.
+Well, we can't quite do it that way, but we can say
+
+<PRE>
+? <U>show map [1+?] [5 10 15]</U>
+[6 11 16]
+</PRE>
+
+<P>
+Instead of thinking &quot;Well, first we add 1 to 5, which gives
+us 6; then we add...&quot; you should think &quot;we started with a list of
+three numbers, and we've transformed it into another list of three
+numbers using the operation add-one.&quot;
+
+<H2>Other Higher Order Functions</H2>
+
+<P>
+Along with <CODE>map</CODE>, you learned about the higher order functions
+<CODE>reduce</CODE>, which combines all of the members of a list into a single
+result, and <CODE>filter</CODE>, which selects some of the members of a list.
+They, too, are implemented by combining recursion with <CODE>apply</CODE>.
+Here's the Berkeley Logo library version of <CODE>reduce</CODE>:
+
+<PRE>
+to reduce :reduce.function :reduce.list
+if emptyp butfirst :reduce.list [output first :reduce.list]
+output apply :reduce.function (list (first :reduce.list)
+                                    (reduce :reduce.function
+                                            butfirst :reduce.list))
+end
+</PRE>
+
+<P>
+If there is only one member, output it.  Otherwise,
+recursively reduce the butfirst of the data, and apply the template
+to two values, the first datum and the result from the recursive call.
+
+<P>
+The Berkeley Logo implementation of <CODE>filter</CODE> is a little more
+complicated, for some of the same reasons as that of <CODE>map</CODE>: the
+ability to accept either a word or a list, and the <CODE>#</CODE> feature
+in templates.  So I'll start with a simpler one:
+
+<PRE>
+to filter :template :data
+if emptyp :data [output []]
+if apply :template (list first :data) ~
+   [output fput (first :data)
+                (filter :template butfirst :data)]
+output filter :template butfirst :data
+end
+</PRE>
+
+<P>
+If you understand that, you should be able to see the
+fundamentally similar structure of the library version despite
+its extra details:
+
+<PRE>
+to filter :filter.template :template.list [:template.number 1]
+localmake "template.lists (list :template.list)
+if emptyp :template.list [output :template.list]
+if apply :filter.template (list first :template.list) ~
+   [output combine (first :template.list)
+                   (filter :filter.template (butfirst :template.list)
+                           :template.number+1)]
+output (filter :filter.template (butfirst :template.list) 
+               :template.number+1)
+end
+</PRE>
+
+<P>
+Where <CODE>map</CODE> used a helper procedure <CODE>map1</CODE> to handle
+the extra input <CODE>template.number</CODE>, <CODE>filter</CODE> uses an
+alternate technique, in which <CODE>template.number</CODE> is declared as an
+optional input to <CODE>filter</CODE> itself.  When you invoke
+<CODE>filter</CODE> you always give it the default two inputs, but it
+invokes itself recursively with three.
+
+<P>
+Why does <CODE>filter</CODE> need a local variable named
+<CODE>template.lists</CODE>?  There was a variable with that name in
+<CODE>map</CODE> because it accepts more than one data input, but
+<CODE>filter</CODE> doesn't, and in fact there is no reference to the value
+of <CODE>template.lists</CODE> within <CODE>filter</CODE>.  It's there
+because of another feature of templates that I haven't mentioned:  you can
+use the word <CODE>?rest</CODE> in a template to represent the portion of
+the data input to the right of the member represented by <CODE>?</CODE> in
+this iteration:
+
+<PRE>
+to remove.duplicates :list
+output filter [not memberp ? ?rest] :list
+end
+
+? <U>show remove.duplicates [ob la di ob la da]</U>
+[di ob la da]
+</PRE>
+
+<P>
+Since <CODE>?rest</CODE> is allowed in <CODE>map</CODE> templates as well as
+in <CODE>filter</CODE> templates, its implementation must be the same for both:
+
+<PRE>
+to ?rest [:which 1]
+output butfirst item :which :template.lists
+end
+</PRE>
+
+<H2>Mapping Over Trees</H2>
+
+<P>
+It's time to move beyond the iteration tools in the Logo library and
+invent our own new ones.
+
+<P>
+So far, in writing operations on lists, we've ignored any sublist structure
+within the list.  We do something for each top-level member of the
+input list.  It's also possible to take advantage of the complex
+structures that lists make possible.  For example, a list can be used
+to represent a <EM>tree,</EM> a data structure in which each branch can
+lead to further branches.  Consider this list:
+
+<PRE>
+[[the [quick brown] fox] [[jumped] [over [the [lazy] dog]]]]
+</PRE>
+
+<P>
+My goal here is to represent a sentence in terms of the
+phrases within it, somewhat like the sentence diagrams you may have
+been taught in elementary school.  This is a list with two members;
+the first member represents the subject of the sentence and the
+second represents the predicate.  The predicate is further divided
+into a verb and a prepositional phrase.  And so on.  (A representation
+something like this, but more detailed, is used in any computer
+program that tries to understand &quot;natural language&quot; interaction.)
+
+<P>
+Suppose we want to convert each word of this sentence to capital letters,
+using Berkeley Logo's <CODE>uppercase</CODE> primitive that takes a word as
+input.  We can't just say
+
+<PRE>
+map [uppercase ?] ~
+    [[the [quick brown] fox] [[jumped] [over [the [lazy] dog]]]]
+</PRE>
+
+<P>
+because the members of the sentence-list aren't words.  What
+I want is a procedure <CODE>map.tree</CODE> that applies a template to
+each <EM>word</EM> within the input list but maintains the shape of the
+list:
+
+<PRE>
+? <U>show map.tree [uppercase ?]~</U>
+     <U>[[the [quick brown] fox] [[jumped] [over [the [lazy] dog]]]]</U>
+[[THE [QUICK BROWN] FOX] [[JUMPED] [OVER [THE [LAZY] DOG]]]]
+</PRE>
+
+<P>
+After our previous adventures in mapping, this one is relatively easy:
+
+<PRE>
+to map.tree :template :tree
+if wordp :tree [output apply :template (list :tree)]
+if emptyp :tree [output []]
+output fput (map.tree :template first :tree) ~
+            (map.tree :template butfirst :tree)
+end
+</PRE>
+
+<P>
+This is rather a special-purpose procedure; it's only good for trees
+whose &quot;leaves&quot; are words.  That's sometimes the case but not
+always.  But if you're dealing with sentence trees like the one in my
+example, you might well find several uses for a tool like this.  For
+now, I've introduced it mainly to make the point that the general idea
+of iteration can take many different forms, depending on the
+particular project you're working on.  (Technically, this is <EM>not</EM>
+an iteration, because it doesn't have a two-part structure in which the
+first part is to perform one step of a computation and the second part
+is to perform all the rest of the steps.  <CODE>Map.tree</CODE> does have a
+two-part structure, but <EM>both</EM> parts are recursive calls that might
+carry out several steps.  But <CODE>map.tree</CODE> does generalize the broad
+idea of dividing a large computation into similar individual pieces.
+We'll go into the nature of iteration more carefully in a moment.)
+
+<H2>Iteration and Tail Recursion</H2>
+
+<P>
+If you look back at the introduction to recursion in the first volume,
+you'll find that some recursive commands seem to be carrying out an
+iteration, like <CODE>down</CODE>, <CODE>countdown</CODE>, or
+<CODE>one.per.line</CODE>.  (In this chapter we've seen how to implement
+<CODE>countdown</CODE> using <CODE>for</CODE>, and you should easily be able
+to implement <CODE>one.per.line</CODE> using <CODE>foreach</CODE>.
+<CODE>Down</CODE> isn't exactly covered by either of those tools; can you see
+why I call it an iterative problem anyway?) Other recursive commands don't
+seem to be repeating or almost-repeating something, like <CODE>downup</CODE>
+or <CODE>hanoi</CODE>.  The difference is that these commands don't do
+something completely, then forget about it and go on to the next
+repetition.  Instead, the first invocation of <CODE>downup</CODE>, for
+example, still has work of its own to do after all the lower-level
+invocations are finished.
+
+<P>
+It turns out that a command that is <EM>tail</EM> recursive is one
+that can be thought of as carrying out an iteration.  A command that
+invokes itself somewhere before the last instruction is not
+iterative.  But the phrase &quot;tail recursive&quot; doesn't <EM>mean</EM>
+&quot;equivalent to an iteration.&quot; It just happens to work out, for
+commands, that the two concepts are equivalent.  What &quot;tail
+recursive&quot; means, really, is &quot;invokes itself just before stopping.&quot;
+
+<P>
+I've said before that this isn't a very important thing to worry about.  The
+reason I'm coming back to it now is to try to clear up a confusion that has
+been part of the Logo literature.  Logo implementors talk about tail
+recursion because there is a tricky way to implement tail recursion that
+takes less memory than the more general kind of recursion.  Logo
+<EM>teachers,</EM> on the other hand, tend to say &quot;tail recursive&quot; when
+they really mean &quot;iterative.&quot; For example, teachers will ask, &quot;Should we
+teach tail recursion first and then the general case?&quot; What's behind this
+question is the idea that iteration is easier to understand than recursion.
+(By the way, this is a hot issue.  Most Logo teachers would say yes; they
+begin by showing their students an iterative command like <CODE>poly</CODE>
+or <CODE>polyspi</CODE>.  I generally say no; you may recall that the first
+recursive procedure I showed you is <CODE>downup</CODE>.  One reason is that
+I expect some of my readers have programmed in Pascal or C, and I want to
+make it as hard as possible for such readers to convince themselves that
+recursion is just a peculiar way to express the idea of iteration.)
+
+<P>
+There are two reasons people should stop making a fuss about tail
+recursion.  One is that they're confusing an idea about control
+structures (iteration) with a Logo implementation strategy (tail
+recursion).  The second is that this way of thinking directs your
+attention to commands rather than operations.  (When people think
+of iterative procedures as &quot;easier,&quot; it's always commands that
+they have in mind.  Tail recursive operations are, if anything,
+less straightforward than versions that are non-tail
+recursive.)  Operations are more important; they're what gives Logo much of
+its flexibility.  And the best way to think about recursive operations
+isn't in implementation terms but in terms of data transformation
+abstractions like mapping, reduction, and filters.
+
+<H2>Multiple Inputs to <CODE>For</CODE></H2>
+
+<P>
+Earlier I promised you <CODE>multifor</CODE>, a version of <CODE>for</CODE>
+that controls more than one numeric variable at a time.  Its structure is
+very similar to that of the original <CODE>for</CODE>, except that we use
+<CODE>map</CODE> or <CODE>foreach</CODE> (or <CODE>firsts</CODE> or
+<CODE>butfirsts</CODE>, which are implicit uses of <CODE>map</CODE>) in
+almost every instruction to carry out <CODE>for</CODE>'s algorithm for each
+of <CODE>multifor</CODE>'s numeric variables.
+
+<PRE>
+to multifor :values.list :instr
+localmake "vars firsts :values.list
+local :vars
+localmake "initials map "run firsts butfirsts :values.list
+localmake "finals map [run item 3 ?] :values.list
+localmake "steps (map "multiforstep :values.list :initials :finals)
+localmake "testers map [ifelse ? < 0 [[?1 < ?2]] [[?1 > ?2]]] :steps
+multiforloop :initials
+end
+
+to multiforstep :values :initial :final
+if (count :values)=4 [output run last :values]
+if :initial > :final [output -1]
+output 1
+end
+
+to multiforloop :values
+(foreach :vars :values [make ?1 ?2])
+(foreach :values :finals :testers [if run ?3 [stop]])
+run :instr
+multiforloop (map [?1+?2] :values :steps)
+end
+</PRE>
+
+<P>
+This is a very dense program; I wouldn't expect anyone to read and understand
+it from a cold start.  But if you compare it to the implementation of
+<CODE>for</CODE>, you should be able to make sense of how each line
+is transformed in this version.
+
+<P>
+Here is an example you can try:
+
+<PRE>
+? <U>multifor [[a 10 100 5] [b 100 10 -10]] ~</U>
+           <U>[print (sentence :a "+ :b "= (:a + :b))]</U>
+10 + 100 = 110
+15 + 90 = 105
+20 + 80 = 100
+25 + 70 = 95
+30 + 60 = 90
+35 + 50 = 85
+40 + 40 = 80
+45 + 30 = 75
+50 + 20 = 70
+55 + 10 = 65
+?
+</PRE>
+
+<H2>The Evaluation Environment Bug</H2>
+
+<P>
+There's a problem with all of these control structure tools that I haven't
+talked about.  The problem is that each of these tools uses <CODE>run</CODE>
+or <CODE>apply</CODE> to evaluate an expression that's provided by the
+calling procedure, but the expression is evaluated with the tool's local
+variables active, in addition to those of the calling procedure.  This can
+lead to unexpected results if the name of a variable used in the expression
+is the same as the name of one of the local variables in the tool.  For
+example, <CODE>forloop</CODE> has an input named <CODE>final</CODE>.  What
+happens if you try
+
+<PRE>
+to grade :final
+for [midterm 10 100 10] [print (sum :midterm :final) / 2]
+end
+
+? <U>grade 50</U>
+</PRE>
+
+<P>
+Try this example with the implementation of <CODE>for</CODE> in this
+chapter, not with the Logo library version.  You might expect each iteration
+to add 10 and 50, then 20 and 50, then 30 and 50, and so on.  That is, you
+wanted to add the iteration variable <CODE>midterm</CODE> to the input to
+<CODE>grade</CODE>.  In fact, though, the variable that contributes to the
+sum is <CODE>forloop</CODE>'s <CODE>final</CODE>, not <CODE>grade</CODE>'s
+<CODE>final</CODE>.
+
+<P>
+The way to avoid this problem is to make sure you don't use variables
+in superprocedures of these tools with the same names as the ones
+inside the tools.  One way to ensure that is to rewrite all the tool
+procedures so that their local variables have bizarre names:
+
+<PRE>
+to map :template :inputs
+</PRE>
+
+<P>
+becomes
+
+<PRE>
+to map :map.qqzzqxx.template :map.qqzzqxx.inputs
+</PRE>
+
+<P>
+Of course, you also have to change the names wherever they
+appear inside the definition, not just on the title line.  You can see
+why I preferred not to present the procedures to you in that form!
+
+<P>
+It would be a better solution to have a smarter version of <CODE>run</CODE>,
+which would allow explicit control of the
+<EM>evaluation environment</EM>--the variable names and values
+that should be in effect while evaluating <CODE>run</CODE>'s input.  Some
+versions of Lisp do have such a capability.
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch11/v2ch11.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch10/v2ch10.html b/js/games/nluqo.github.io/~bh/v2ch10/v2ch10.html
new file mode 100644
index 0000000..c523eb1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch10/v2ch10.html
@@ -0,0 +1,1404 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 10: Iteration, Control Structures, Extensibility</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Iteration, Control Structures, Extensibility</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch10.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch11/v2ch11.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+In this chapter we're taking a tour &quot;behind the scenes&quot; of Berkeley Logo.
+Many of the built-in Logo procedures that we've been using all along are
+not, strictly speaking, primitive; they're written in Logo itself.  When you
+invoke a procedure, if the Logo interpreter does not already know a procedure
+by that name, it automatically looks in a <EM>library</EM> of predefined
+procedures.  For example, in Chapter 6 I used an operation called
+<CODE>gensym</CODE> that outputs a new, unique word each time it's invoked.  If
+you start up a fresh copy of Logo you can try these experiments:
+
+<PRE>
+? <U>po "gensym</U>
+I don't know how  to gensym
+? <U>show gensym</U>
+g1
+? <U>po "gensym</U>
+to gensym
+if not namep "gensym.number [make "gensym.number 0]
+make "gensym.number :gensym.number + 1
+output word "g :gensym.number
+end
+</PRE>
+
+<P>
+The first interaction shows that <CODE>gensym</CODE> is not really a Logo
+primitive; the error message indicates that there is no such procedure.  Then
+I invoked <CODE>gensym</CODE>, which made Berkeley Logo read its definition
+automatically from the library.  Finally, once Logo has read the definition,
+I can print it out.
+
+<P>
+In particular, most of the tools we've used to carry out a computation
+repeatedly are not true Logo primitives: <CODE>for</CODE> for numeric
+iteration, <CODE>foreach</CODE> for list iteration, and <CODE>while</CODE>
+for predicate-based iteration are all library procedures.  (The word
+<EM>iteration</EM> just means &quot;repetition.&quot;) The only iteration mechanisms
+that are truly primitive in Logo are <CODE>repeat</CODE> and recursion.
+
+<P>
+Computers are good at doing things over and over again.  They don't
+get bored or tired.  That's why, in the real world, people use
+computers for things like sending out payroll checks and telephone
+bills.  The first Logo instruction I showed you, in the first volume, was
+
+<PRE>
+repeat 50 [setcursor list random 75 random 20 type "Hi]
+</PRE>
+
+<P>
+When you were first introduced to turtle graphics, you
+probably used an instruction like
+
+<PRE>
+repeat 360 [forward 1 right 1]
+</PRE>
+
+<P>
+to draw a circle.
+
+<H2>Recursion as Iteration</H2>
+
+<P>
+The trouble with <CODE>repeat</CODE> is that it always does <EM>exactly</EM>
+the same thing repeatedly.  In a real application, like those payroll
+checks, you want the computer to do <EM>almost</EM> the same thing each
+time but with a different person's name on each check.  The usual way
+to program an almost-<CODE>repeat</CODE> in Logo is to use a recursive
+procedure, like this:
+
+<PRE>
+to polyspi :side :angle :number
+if :number=0 [stop]
+forward :side
+right :angle
+polyspi :side+1 :angle :number-1
+end
+</PRE>
+
+<P>
+This is a well-known procedure to draw a spiral.  What makes
+it different from
+
+<PRE>
+repeat :number [forward :side right :angle]
+</PRE>
+
+<P>
+is that the first input in the recursive invocation is <CODE>:side+1</CODE>
+instead of just <CODE>:side</CODE>.  We've used a similar technique for
+almost-repetition in procedures like this one:
+
+<PRE>
+to multiply :letters :number
+if equalp :number 0 [stop]
+print :letters
+multiply (word :letters first :letters) :number-1
+end
+</PRE>
+
+<P>
+Since recursion can express any repetitive computation, why bother
+inventing other iteration tools?  The answer is that they can make
+programs easier to read.  Recursion is such a versatile mechanism
+that the intention of any particular use of recursion may be hard to
+see.  Which of the following is easier to read?
+
+<PRE>
+to fivesay.with.repeat :text
+repeat 5 [print :text]
+end
+</PRE>
+
+<P>
+or
+
+<PRE>
+to fivesay.with.recursion :text
+fivesay1 5 :text
+end
+
+to fivesay1 :times :text
+if :times=0 [stop]
+print :text
+fivesay1 :times-1 :text
+end
+</PRE>
+
+<P>
+The version using <CODE>repeat</CODE> makes it obvious at a glance
+what the program wants to do; the version using recursion takes some
+thought.  It can be useful to invent mechanisms that are intermediate
+in flexibility between <CODE>repeat</CODE> and recursion.
+
+<P>
+As a simple example, suppose that Logo did not include <CODE>repeat</CODE> as
+a primitive command.  Here's how we could implement it using recursion:
+
+<PRE>
+to rep :count :instr
+if :count=0 [stop]
+run :instr
+rep :count-1 :instr
+end
+</PRE>
+
+<P>
+(I've used the name <CODE>rep</CODE> instead of <CODE>repeat</CODE> to avoid
+conflict with the primitive version.)  The use of <CODE>run</CODE> to carry out
+the given instructions is at the core of the techniques we'll use
+throughout this chapter.
+
+<H2>Numeric Iteration</H2>
+
+<P>
+<CODE>Polyspi</CODE> is an example of an iteration in which the value of a
+numeric variable changes in a uniform way.  The instruction
+
+<PRE>
+polyspi 50 60 4
+</PRE>
+
+<P>
+is equivalent to the series of instructions
+
+<PRE>
+forward 50 right 60
+forward 51 right 60
+forward 52 right 60
+forward 53 right 60
+</PRE>
+
+<P>
+As you know, we can represent the same instructions this way:
+
+<PRE>
+for [side 50 53] [forward :side right 60]
+</PRE>
+
+<P>
+The <CODE>for</CODE> command takes two inputs, very much like
+<CODE>repeat</CODE>.  The second input, like <CODE>repeat</CODE>'s second
+input, is a list of Logo instructions.  The first input to <CODE>for</CODE>
+is different, though.  It is a list whose first member is the name of a
+variable; the second member of the list must be a number (or a Logo
+expression whose value is a number), which will be the <EM>initial</EM>
+value of that variable; and the third member must be another number (or
+numeric expression), which will be the <EM>final</EM> value of the
+variable.  In the example above, the variable name is <CODE>side</CODE>, the
+initial value is <CODE>50</CODE>, and the final value is <CODE>53</CODE>.
+If there is a fourth member in the list, it's the amount to add to the named
+variable on each iteration; if there is no fourth member, as in the example
+above, then the <EM>step</EM> amount is either 1 or -1, depending on
+whether the final value is greater than or less than the initial value.
+
+<P>
+As an example in which expressions are used instead of constant numeric
+values, here's the <CODE>polyspi</CODE> procedure using <CODE>for</CODE>:
+
+<PRE>
+to polyspi :start :angle :number
+for [side :start [:start+:number-1]] [forward :side right :angle]
+end
+</PRE>
+
+<P>
+Most of the work in writing <CODE>for</CODE> is in evaluating the expressions
+that make up the first input list.  Here is the program:
+
+<PRE>
+<A name="impfor">to for :values :instr</A>
+localmake "var first :values
+local :var
+localmake "initial run first butfirst :values
+localmake "final run item 3 :values
+localmake "step forstep
+localmake "tester ~
+          ifelse :step < 0 [[:value < :final]] [[:value > :final]]
+forloop :initial
+end
+
+to forstep
+if (count :values)=4 [output run last :values]
+if :initial > :final [output -1]
+output 1
+end
+
+to forloop :value
+make :var :value
+if run :tester [stop]
+run :instr
+forloop :value+:step
+end
+</PRE>
+
+<P>
+One slightly tricky part of this program is the instruction
+
+<PRE>
+local :var
+</PRE>
+
+<P>
+near the beginning of <CODE>for</CODE>.  The effect of this instruction is
+to make whatever variable is named by the first member of the first input
+local to <CODE>for</CODE>.  As it turns out, this variable isn't given a
+value in <CODE>for</CODE> itself but only in its subprocedure
+<CODE>forloop</CODE>.  (A <EM>loop,</EM> by the way, is a part of a program
+that is invoked repeatedly.) But I'm thinking of these three procedures as a
+unit and making the variable local to that whole unit.  The virtue of this
+<CODE>local</CODE> instruction is that a program that uses <CODE>for</CODE>
+can invent variable names for <CODE>for</CODE> freely, without having to
+declare them local and without cluttering up the workspace with global
+variables.  Also, it means that a procedure can invoke another procedure in
+the instruction list of a <CODE>for</CODE> without worrying about whether
+<EM>that</EM> procedure uses <CODE>for</CODE> itself.  Here's the case I'm
+thinking of:
+
+<PRE>
+to a
+for [i 1 5] [b]
+end
+
+to b
+for [i 1 3] [print "foo]
+end
+</PRE>
+
+<P>
+Invoking <CODE>A</CODE> should print the word <CODE>foo</CODE> fifteen
+times: three times for each of the five invocations of <CODE>B</CODE>.  If
+<CODE>for</CODE> didn't make <CODE>I</CODE> a local variable, the invocation
+of <CODE>for</CODE> within <CODE>B</CODE> would mess up the value of
+<CODE>I</CODE> in the outer <CODE>for</CODE> invoked by
+<CODE>A</CODE>.  Got that?
+
+<P>
+Notice that the <CODE>make</CODE> instruction in <CODE>forloop</CODE> has
+<CODE>:var</CODE> as its first input, not <CODE>"var</CODE>.  This
+instruction does not assign a new value to the variable <CODE>var</CODE>!
+Instead, it assigns a new value to the variable whose name is the value of
+<CODE>var</CODE>.
+
+<P>
+The version of <CODE>for</CODE> actually used in the Berkeley Logo library is
+a little more complicated than this one.  The one shown here works fine as
+long as the instruction list input doesn't include <CODE>stop</CODE> or
+<CODE>output</CODE>, but it won't work for an example like the following.
+To check whether or not a number is prime, we must see if it is divisible by
+anything greater than 1 and smaller than the number itself:
+
+<PRE>
+to primep :num
+for [trial 2 [:num-1]] [if divisiblep :num :trial [output "false]]
+output "true
+end
+
+to divisiblep :big :small
+output equalp remainder :big :small 0
+end
+</PRE>
+
+<P>
+This example will work in the Berkeley Logo <CODE>for</CODE>, but not
+in the version I've written in this chapter.  The trouble is that the
+instruction
+
+<PRE>
+run :instr
+</PRE>
+
+<P>
+in <CODE>forloop</CODE> will make <CODE>forloop</CODE> output
+<CODE>false</CODE> if a divisor is found, whereas we really want
+<CODE>primep</CODE> to output <CODE>false</CODE>!  We'll see in Chapter 12
+how to solve this problem.
+
+<H2>Logo: an Extensible Language</H2>
+
+<P>
+There are two ways to look at a program like <CODE>for</CODE>.  You can take
+it apart, as I've been doing in these last few paragraphs, to see how it
+works inside.  Or you can just think of it as an extension to Logo, an
+iteration command that you can use as you'd use <CODE>repeat</CODE>, without
+thinking about how it works.  I think both of these perspectives will be
+valuable to you.  As a programming project, <CODE>for</CODE> demonstrates
+some rather advanced Logo techniques.  But you don't have to think about
+those techniques each time you use <CODE>for</CODE>.  Instead you can think
+of it as a primitive, as we've been doing prior to this chapter.
+
+<P>
+The fact that you can extend Logo's vocabulary this way, adding a new way to
+control iteration that looks just like the primitive <CODE>repeat</CODE>, is
+an important way in which Logo is more powerful than toy programming
+languages like C++ or Pascal.  C++ has several iteration commands built in,
+including one like <CODE>for</CODE>, but if you think of a new one, there's
+no way you can add it to the language.  In Logo this kind of language
+extension is easy.  For example, here is a preview of a programming project
+I'm going to develop later in this chapter.  Suppose you're playing with
+spirals, and you'd like to see what happens if you change the line length
+<EM>and</EM> the turning angle at the same time.  That is, you'd like to be
+able to say
+
+<PRE>
+multifor [[size 50 100 5] [angle 50 100 10]] [forward :size right :angle]
+</PRE>
+
+<P>
+and have that be equivalent to the series of instructions
+
+<PRE>
+forward 50 right 50
+forward 55 right 60
+forward 60 right 70
+forward 65 right 80
+forward 70 right 90
+forward 75 right 100
+</PRE>
+
+<P>
+<CODE>Multifor</CODE> should step each of its variables each time
+around, stopping whenever any of them hits the final value.  This tool
+strikes me as too specialized and complicated to provide in the Logo
+library, but it seems very appropriate for certain kinds of project.
+It's nice to have a language in which I can write it if I need it.
+
+<H2>No Perfect Control Structures</H2>
+
+<P>
+Among enthusiasts of the Fortran family of programming languages (that is,
+all the languages in which you have to say ahead of time whether or not the
+value of some numeric variable will be an exact integer), there are fierce
+debates about the &quot;best&quot; control structure.  (A <EM>control structure</EM>
+is a way of grouping instructions together, just as a <EM>data
+structure</EM> is a way of grouping data together.  A list is a data
+structure.  A procedure is a control structure.  Things like
+<CODE>if</CODE>, <CODE>repeat</CODE>, and <CODE>for</CODE> are special
+control structures that group instructions in particular ways, so that a
+group of instructions can be evaluated conditionally or repeatedly.)
+
+<P>
+For example, all of the Fortran-derived languages have a control
+structure for numeric iteration, like my <CODE>for</CODE> procedure.  But
+they differ in details.  In some languages the iteration variable
+must be stepped by 1.  In others the step value can be either 1 or
+-1.  Still others allow any step value, as <CODE>for</CODE> does.  Each of
+these choices has its defenders as the &quot;best.&quot;
+
+<P>
+Sometimes the arguments are even sillier.  When Fortran was first
+invented, its designers failed to make explicit what should happen
+if the initial value of an iteration variable is greater than the
+final value.  That is, they left open the interpretation of a Fortran
+<CODE>do</CODE> statement (that's what its numeric iteration structure is
+called) equivalent to this <CODE>for</CODE> instruction:
+
+<PRE>
+for [var 10 5 1] [print :var]
+</PRE>
+
+<P>
+In this instruction I've specified a positive step (the
+only kind allowed in the Fortran <CODE>do</CODE> statement), but the initial
+value is greater than the final value.  (What will <CODE>for</CODE> do in
+this situation?) Well, the first Fortran compiler, the program that
+translates a Fortran program into the &quot;native&quot; language of a
+particular computer, implemented <CODE>do</CODE> so that the statements
+controlled by the <CODE>do</CODE> were carried out once before the computer
+noticed that the variable's value was already too large.  Years later
+a bunch of computer scientists decided that that behavior is
+&quot;wrong&quot;; if the initial value is greater than the final value, the
+statements shouldn't be carried out at all.  This proposal for a
+&quot;zero trip <CODE>do</CODE> loop&quot; was fiercely resisted by old-timers who
+had by then written hundreds of programs that relied on the original
+behavior of <CODE>do</CODE>.  Dozens of journal articles and letters to the
+editor carried on the battle.
+
+<P>
+The real moral of this story is that there is no right answer.
+The right control structure for <EM>you</EM> to use is the one that
+best solves <EM>your</EM> immediate problem.  But only an extensible
+language like Logo allows you the luxury of accepting this moral.
+The Fortran people had to fight out their battle because they're
+stuck with whatever the standardization committee decides.
+
+<P>
+In the remainder of this chapter I'll present various kinds of
+control structures, each reflecting a different way of looking at the
+general idea of iteration.
+
+<H2>Iteration Over a List</H2>
+
+<P>
+Numeric iteration is useful if the problem you want to solve is about
+numbers, as in the <CODE>primep</CODE> example, or if some arbitrary number is
+part of the rules of a game, like the seven stacks of cards in solitaire.
+But in most Logo projects, it's more common to want to carry out a
+computation for each member of a list, and for that purpose we have
+the <CODE>foreach</CODE> control structure:
+
+<PRE>
+? <U>foreach [chocolate [rum raisin] pumpkin] [print sentence [I like] ?]</U>
+I like chocolate
+I like rum raisin
+I like pumpkin
+</PRE>
+
+<P>
+In comparing <CODE>foreach</CODE> with <CODE>for</CODE>, one thing you might
+notice is the use of the question mark to represent the varying datum in
+<CODE>foreach</CODE>, while <CODE>for</CODE> requires a user-specified
+variable name for that purpose.  There's no vital reason why I used these
+different mechanisms.  In fact, we can easily implement a version of
+<CODE>foreach</CODE> that takes a variable name as an additional input.  Its
+structure will then look similar to that of <CODE>for</CODE>:
+
+<PRE>
+to named.foreach :var :data :instr
+local :var
+if emptyp :data [stop]
+make :var first :data
+run :instr
+named.foreach :var (butfirst :data) :instr
+end
+
+? <U>named.foreach "flavor [lychee [root beer swirl]] ~</U>
+                        <U>[print sentence [I like] :flavor]</U>
+I like lychee
+I like root beer swirl
+</PRE>
+
+<P> Just as in <A HREF="v2ch10.html#impfor">the implementation of <CODE>for</CODE></A>,
+there is a recursive invocation for each member of the data input.  We
+assign that member as the value of the variable named in the first input,
+and then we <CODE>run</CODE> the instructions in the third input.
+
+<P>
+In order to implement the version of <CODE>foreach</CODE> that uses question
+marks instead of named variables, we need a more advanced version of
+<CODE>run</CODE> that says &quot;run these instructions, but using this value
+wherever you see a question mark.&quot; Berkeley Logo has this capability as a
+primitive procedure called <CODE>apply</CODE>.  It takes two inputs, a
+<EM>template</EM> (an instruction list with question marks) and a list of
+values.  The reason that the second input is a list of values, rather than a
+single value, is that <CODE>apply</CODE> can handle templates with more than
+one slot for values.
+
+<PRE>
+? <U>apply [print ?+3] [5]</U>
+8
+? <U>apply [print word first ?1 first ?2] [Peter Dickinson]</U>
+PD
+</PRE>
+
+<P>
+It's possible to write <CODE>apply</CODE> in terms of <CODE>run</CODE>, and
+I'll do that shortly.  But first, let's just take advantage of Berkeley
+Logo's built-in <CODE>apply</CODE> to write a simple version of
+<CODE>foreach</CODE>:
+
+<PRE>
+to foreach :list :template
+if emptyp :list [stop]
+apply :template (list first :list)
+foreach (butfirst :list) :template
+end
+</PRE>
+
+<P>
+<CODE>Apply</CODE>, like <CODE>run</CODE>, can be either a command or an
+operation depending on whether its template contains complete Logo
+instructions or a Logo expression.  In this case, we are using
+<CODE>apply</CODE> as a command.
+
+<P>
+The version of <CODE>foreach</CODE> in the Berkeley Logo library can take
+more than one data input along with a multi-input template, like this:
+
+<PRE>
+? <U>(foreach [John Paul George Ringo] [rhythm bass lead drums]</U>
+           <U>[print (sentence ?1 "played ?2)]</U>
+John played rhythm
+Paul played bass
+George played lead
+Ringo played drums
+</PRE>
+
+<P>
+We can implement this feature, using a special notation in the title line of
+<CODE>foreach</CODE> to notify Logo that it accepts a variable number of
+inputs:
+
+<PRE>
+to foreach [:inputs] 2
+foreach.loop (butlast :inputs) (last :inputs)
+end
+
+to foreach.loop :lists :template
+if emptyp first :lists [stop]
+apply :template firsts :lists
+foreach.loop (butfirsts :lists) :template
+end
+</PRE>
+
+<P>
+First look at the title line of <CODE>foreach</CODE>.  It tells Logo
+that the word <CODE>inputs</CODE> is a formal parameter--the name of an input.
+Because <CODE>:inputs</CODE> is inside square brackets, however, it represents
+not just one input, but any number of inputs in the invocation of
+<CODE>foreach</CODE>.  The values of all those inputs are collected as a list,
+and that list is the value of <CODE>inputs</CODE>.  Here's a trivial example:
+
+<PRE>
+to demo [:stuff]
+print sentence [The first input is] first :stuff
+print sentence [The others are] butfirst :stuff
+end
+
+? <U>(demo "alpha "beta "gamma)</U>
+The first input is alpha
+The others are beta gamma
+</PRE>
+
+<P>
+As you know, the Logo procedures that accept a variable number of inputs
+have a <EM>default</EM> number that they accept without using parentheses;
+if you want to use more or fewer than that number, you must enclose the
+procedure name and its inputs in parentheses, as I've done here with the
+<CODE>demo</CODE> procedure.  Most Logo primitives that accept a variable
+number of inputs have two inputs as their default number (for example,
+<CODE>sentence</CODE>, <CODE>sum</CODE>, <CODE>word</CODE>) but there are
+exceptions, such as <CODE>local</CODE>, which takes one input if parentheses
+are not used.  When you write your own procedure with a single input name in
+brackets, its default number of inputs is zero unless you specify another
+number.  <CODE>Demo</CODE>, for example, has zero as its default number.  If
+you look again at the title line of <CODE>foreach</CODE>, you'll see that it
+ends with the number <CODE>2</CODE>; that tells Logo that
+<CODE>foreach</CODE> expects two inputs by default.
+
+<P>
+<CODE>Foreach</CODE> uses all but its last input as data lists; the last
+input is the template to be applied to the members of the data lists.  That's
+why <CODE>foreach</CODE> invokes <CODE>foreach.loop</CODE> as it does,
+separating the two kinds of inputs into two variables.
+
+<P>
+Be careful when reading the definition of <CODE>foreach.loop</CODE>; it
+invokes procedures named <CODE>firsts</CODE> and <CODE>butfirsts</CODE>.
+These are not the same as <CODE>first</CODE> and <CODE>butfirst</CODE>!
+Each of them takes a <EM>list of lists</EM> as its input, and outputs a list
+containing the first members of each sublist, or all but the first members,
+respectively:
+
+<PRE>
+? <U>show firsts [[a b c] [1 2 3] [y w d]]</U>
+[a 1 y]
+? <U>show butfirsts [[a b c] [1 2 3] [y w d]]</U>
+[[b c] [2 3] [w d]]
+</PRE>
+
+<P>
+It would be easy to write <CODE>firsts</CODE> and <CODE>butfirsts</CODE> in
+Logo:
+
+<PRE>
+to firsts :list.of.lists
+output map "first :list.of.lists
+end
+
+to butfirsts :list.of.lists
+output map "butfirst :list.of.lists
+end
+</PRE>
+
+<P>
+but in fact Berkeley Logo provides these operations as primitives, because
+implementing them as primitives makes the iteration tools such as
+<CODE>foreach</CODE> and <CODE>map</CODE> (which, as we'll see, also uses
+them) much faster.
+
+<P>
+Except for the use of <CODE>firsts</CODE> and <CODE>butfirsts</CODE> to
+handle the multiple data inputs, the structure of <CODE>foreach.loop</CODE>
+is exactly like that of the previous version of <CODE>foreach</CODE> that
+only accepts one data list.
+
+<P>
+Like <CODE>for</CODE>, the version of <CODE>foreach</CODE> presented here
+can't handle instruction lists that include <CODE>stop</CODE> or
+<CODE>output</CODE> correctly.
+
+<H2>Implementing <CODE>Apply</CODE></H2>
+
+<P>
+Berkeley Logo includes <CODE>apply</CODE> as a primitive, for efficiency, but
+we could implement it in Logo if necessary.  In this section, so as not
+to conflict with the primitive version, I'll use the name <CODE>app</CODE> for
+my non-primitive version of <CODE>apply</CODE>, and I'll use the percent sign
+(<CODE>%</CODE>) as the placeholder in templates instead of question mark.
+
+<P>
+Here is a simple version of <CODE>app</CODE> that allows only one input to the
+template:
+
+<PRE>
+to app :template :input.value
+run :template
+end
+
+to %
+output :input.value
+end
+</PRE>
+
+<P>
+This is so simple that it probably seems like magic.  <CODE>App</CODE> seems
+to do nothing but <CODE>run</CODE> its template as though it were an ordinary
+instruction list.  The trick is that a template <EM>is</EM> an instruction
+list.  The only unusual thing about a template is that it includes special
+symbols (<CODE>?</CODE> in the real <CODE>apply</CODE>, <CODE>%</CODE> in
+<CODE>app</CODE>) that represent the given value.  We see now that those
+special symbols are really just ordinary names of procedures.  The question
+mark (<CODE>?</CODE>) procedure is a Berkeley Logo primitive; I've defined
+the analogous <CODE>%</CODE> procedure here for use by <CODE>app</CODE>.
+
+<P>
+The <CODE>%</CODE> procedure outputs the value of a variable,
+<CODE>input.value</CODE>, that is local to <CODE>app</CODE>.  If you invoke
+<CODE>%</CODE> in some context other than an <CODE>app</CODE> template,
+you'll get an error message because that variable won't exist.  Logo's
+dynamic scope makes it possible for <CODE>%</CODE> to use <CODE>app</CODE>'s
+variable.
+
+<P>
+The real <CODE>apply</CODE> accepts a procedure name as argument instead of a
+template:
+
+<PRE>
+? <U>show apply "first [Logo]</U>
+L
+</PRE>
+
+<P>
+We can extend <CODE>app</CODE> to accept named procedures, but the
+definition is somewhat messier:
+
+<PRE>
+to app :template.or.name :input.value
+ifelse wordp :template.or.name ~
+       [run list :template.or.name "%] ~
+       [run :template.or.name]
+end
+</PRE>
+
+<P>
+If the first input is a word, we construct a template by combining that
+procedure name with a percent sign for its input.  However, in the rest of
+this section I'll simplify the discussion by assuming that <CODE>app</CODE>
+accepts only templates, not procedure names.
+
+<P>
+So far, <CODE>app</CODE> takes only one value as input; the real
+<CODE>apply</CODE> takes a list of values.  I'll extend <CODE>app</CODE> to
+match:
+
+<PRE>
+to app :template :input.values
+run :template
+end
+
+to % [:index 1]
+output item :index :input.values
+end
+</PRE>
+
+<P>
+No change is needed to <CODE>app</CODE>, but <CODE>%</CODE> has been changed
+to use another new notation in its title line.  <CODE>Index</CODE> is the
+name of an <EM>optional input.</EM> Although this notation also uses square
+brackets, it's different from the notation used in <CODE>foreach</CODE>
+because the brackets include a <EM>default value</EM> as well as the name
+for the input.  This version of <CODE>%</CODE> accepts either no inputs or
+one input.  If <CODE>%</CODE> is invoked with one input, then the value of
+that input will be associated with the name <CODE>index</CODE>, just as for
+ordinary inputs.  If <CODE>%</CODE> is invoked with no inputs, then
+<CODE>index</CODE> will be given the value 1 (its default value).
+
+<PRE>
+? <U>app [print word first (% 1) first (% 2)] [Paul Goodman]</U>
+PG
+</PRE>
+
+<P>
+A percent sign with a number as input selects an input value
+by its position within the list of values.  A percent sign by itself
+is equivalent to <CODE>(% 1)</CODE>.
+
+<P>
+The notation <CODE>(% 1)</CODE> isn't as elegant as the <CODE>?1</CODE> used
+in the real <CODE>apply</CODE>.  You can solve that problem by defining
+several extra procedures:
+
+<PRE>
+to %1                to %2                to %3
+output (% 1)         output (% 2)         output (% 3)
+end                  end                  end
+</PRE>
+
+<P>
+Berkeley Logo recognizes the notation <CODE>?2</CODE> and automatically
+translates it to <CODE>(? 2)</CODE>, as you can see by this experiment:
+
+<PRE>
+? <U>show runparse [print word first ?1 first ?2]</U>
+[print word first ( ? 1 ) first ( ? 2 )]
+</PRE>
+
+<P>
+(The primitive operation <CODE>runparse</CODE> takes a list as input
+and outputs the list as it would be modified by Logo when it is about
+to be run.  That's a handwavy description, but the internal workings
+of the Logo interpreter are too arcane to explore here.)
+
+<P>
+Unlike the primitive <CODE>apply</CODE>, this version of <CODE>app</CODE>
+works only as a command, not as an operation.  It's easy to write a separate
+version for use as an operation:
+
+<PRE>
+to app.oper :template :input.values
+output run :template
+end
+</PRE>
+
+<P>
+It's not so easy in non-Berkeley versions of Logo to write a
+single procedure that can serve both as a command and as an operation.
+Here's one solution that works in versions with <CODE>catch</CODE>:
+
+<PRE>
+to app :template :input.values
+catch "error [output run :template]
+ignore error
+end
+</PRE>
+
+<P>
+This isn't an ideal solution, though, because it doesn't report errors other
+than &quot;<CODE>run</CODE> didn't output to <CODE>output</CODE>.&quot; It could be
+improved by testing the error message more carefully instead of just
+ignoring it.
+
+<P>
+Berkeley Logo includes a mechanism that solves the problem more
+directly, but it's not very pretty:
+
+<PRE>
+to app :template :input.values
+.maybeoutput run :template
+end
+</PRE>
+
+<P>
+The primitive command <CODE>.maybeoutput</CODE> is followed by a Logo
+expression that may or may not produce a value.  If so, that value is
+output, just as it would be by the ordinary <CODE>output</CODE> command; the
+difference is that it's not considered an error if no value is produced.
+
+<P>
+From now on I'll use the primitive <CODE>apply</CODE>.  I showed you
+<CODE>app</CODE> for two reasons.  First, I think you'll understand
+<CODE>apply</CODE> better by seeing how it can be implemented.  Second, this
+implementation may be useful if you ever work in a non-Berkeley Logo.
+
+<H2>Mapping</H2>
+
+<P>
+So far the iteration tools we've created apply only to commands.
+As you know, we also have the operation <CODE>map</CODE>, which is similar
+to <CODE>foreach</CODE> except that its template is an expression (producing
+a value) rather than an instruction, and it accumulates the values
+produced for each member of the input.
+
+<PRE>
+? <U>show map [?*?] [1 2 3 4]</U>
+[1 4 9 16]
+? <U>show map [first ?] [every good boy does fine]</U>
+[e g b d f]
+?
+</PRE>
+
+<P>
+When implementing an iteration tool, one way to figure out how to write
+the program is to start with a specific example and generalize it.  For
+example, here's how I'd write the example about squaring the numbers in
+a list without using <CODE>map</CODE>:
+
+<PRE>
+to squares :numbers
+if emptyp :numbers [output []]
+output fput ((first :numbers) * (first :numbers)) ~
+            (squares butfirst :numbers)
+end
+</PRE>
+
+<P>
+<CODE>Map</CODE> is very similar, except that it applies a template to
+each datum instead of squaring it:
+
+<PRE>
+to map :template :values
+if emptyp :values [output []]
+output fput (apply :template (list first :values)) ~
+            (map :template butfirst :values)
+end
+</PRE>
+
+<P>
+You may be wondering why I used <CODE>fput</CODE> rather than
+<CODE>sentence</CODE> in these procedures.  Either would be just as good in
+the example about squares of numbers, because each datum is a single word (a
+number) and each result value is also a single word.  But it's important to
+use <CODE>fput</CODE> in an example such as this one:
+
+<PRE>
+to swap :pair
+output list last :pair first :pair
+end
+
+? <U>show map [swap ?] [[Sherlock Holmes] [James Pibble] [Nero Wolfe]]</U>
+[[Holmes Sherlock] [Pibble James] [Wolfe Nero]]
+
+? <U>show map.se [swap ?] [[Sherlock Holmes] [James Pibble] [Nero Wolfe]]</U>
+[Holmes Sherlock Pibble James Wolfe Nero]
+</PRE>
+
+<P>
+Berkeley Logo does provide an operation <CODE>map.se</CODE> in which
+<CODE>sentence</CODE> is used as the combiner; sometimes that's what you
+want, but not, as you can see, in this example.  (A third possibility that
+might occur to you is to use <CODE>list</CODE> as the combiner, but that
+never turns out to be the right thing; try writing a <CODE>map.list</CODE>
+and see what results it gives!)
+
+<P>
+As in the case of <CODE>foreach</CODE>, the program gets a little more
+complicated when we extend it to handle multiple data inputs.  Another
+complication that wasn't relevant to <CODE>foreach</CODE> is that when we
+use a word, rather than a list, as the data input to <CODE>map</CODE>, we
+must use <CODE>word</CODE> as the combiner instead of <CODE>fput</CODE>.
+Here's the complete version:
+
+<PRE>
+to map :map.template [:template.lists] 2
+op map1 :template.lists 1
+end
+
+to map1 :template.lists :template.number
+if emptyp first :template.lists [output first :template.lists]
+output combine (apply :map.template firsts :template.lists) ~
+               (map1 bfs :template.lists :template.number+1)
+end
+
+to combine :this :those
+if wordp :those [output word :this :those]
+output fput :this :those
+end
+</PRE>
+
+<P>
+This is the actual program in the Berkeley Logo library.  One feature I
+haven't discussed until now is the variable <CODE>template.number</CODE>
+used as an input to <CODE>map1</CODE>.  Its purpose is to allow the use of
+the number sign character <CODE>#</CODE> in a template to represent the
+position of each datum within its list:
+
+<PRE>
+? <U>show map [list ? #] [a b c]</U>
+[[a 1] [b 2] [c 3]]
+</PRE>
+
+<P>
+The implementation is similar to that of <CODE>?</CODE> in templates:
+
+<PRE>
+to #
+output :template.number
+end
+</PRE>
+
+<P>
+It's also worth noting the base case in <CODE>map1</CODE>.  When the data input
+is empty, we must output either the empty word or the empty list, and
+the easiest way to choose correctly is to return the empty input itself.
+
+<H2>Mapping as a Metaphor</H2>
+
+<P>
+In this chapter,
+we got to the idea of mapping by this route: iteration, numeric
+iteration, other kinds of iteration, iteration on a list, iterative
+commands, iterative operations, mapping.  In other words, we started
+thinking about the mapping tool as a particular kind of repetition in
+a computer program.
+
+<P>
+But when I first introduced <CODE>map</CODE> as a primitive operation,
+I thought about it in a different way.  Never mind the fact
+that it's <EM>implemented</EM> through repetition.  Instead think of
+it as extending the power of the idea of a list.  When we started
+thinking about lists, we thought of the list as one complete entity.
+For example, consider this simple interaction with Logo:
+
+<PRE>
+? <U>print count [how now brown cow]</U>
+4
+</PRE>
+
+<P>
+<CODE>Count</CODE> is a primitive operation.  It takes a list as
+input, and it outputs a number that is a property of the entire list,
+namely the number of members in the list.  There is no need to think
+of <CODE>count</CODE> as embodying any sort of repetitive control structure.
+Instead it's one kind of handle on the <EM>data</EM> structure called
+a list.
+
+<P>
+There are other operations that manipulate lists, like <CODE>equalp</CODE>
+and <CODE>memberp</CODE>.  You're probably in the habit of thinking of these
+operations as &quot;happening all at once,&quot; not as examples of
+iteration.  And that's a good way to think of them, even though it's
+also possible to think of them as iterative.  For example, how does
+Logo know the <CODE>count</CODE> of a list?  How would <EM>you</EM> find out
+the number of members of a list?  One way would be to count them on
+your fingers.  That's an iteration.  Logo actually does the same
+thing, counting off the list members one at a time, as it would if
+we implemented <CODE>count</CODE> recursively:
+
+<PRE>
+to cnt :list
+if emptyp :list [output 0]
+output 1+cnt butfirst :list
+end
+</PRE>
+
+<P>
+I'm showing you that the &quot;all at once&quot; Logo primitives can be
+considered as iterative because, in the case of <CODE>map</CODE>, I want to
+shift your point of view in the opposite direction.  We started
+thinking of <CODE>map</CODE> as iterative; now I'd like you to think of it
+as happening all at once.
+
+<P>
+Wouldn't it be nice if we could say
+
+<PRE>
+? <U>show 1+[5 10 15]</U>
+[6 11 16]
+</PRE>
+
+<P>
+That is, I'd like to be able to &quot;add 1 to a list.&quot; I want
+to think about it that way, not as &quot;add 1 to each member of a list.&quot;
+The metaphor is that we're doing something to the entire list at once.
+Well, we can't quite do it that way, but we can say
+
+<PRE>
+? <U>show map [1+?] [5 10 15]</U>
+[6 11 16]
+</PRE>
+
+<P>
+Instead of thinking &quot;Well, first we add 1 to 5, which gives
+us 6; then we add...&quot; you should think &quot;we started with a list of
+three numbers, and we've transformed it into another list of three
+numbers using the operation add-one.&quot;
+
+<H2>Other Higher Order Functions</H2>
+
+<P>
+Along with <CODE>map</CODE>, you learned about the higher order functions
+<CODE>reduce</CODE>, which combines all of the members of a list into a single
+result, and <CODE>filter</CODE>, which selects some of the members of a list.
+They, too, are implemented by combining recursion with <CODE>apply</CODE>.
+Here's the Berkeley Logo library version of <CODE>reduce</CODE>:
+
+<PRE>
+to reduce :reduce.function :reduce.list
+if emptyp butfirst :reduce.list [output first :reduce.list]
+output apply :reduce.function (list (first :reduce.list)
+                                    (reduce :reduce.function
+                                            butfirst :reduce.list))
+end
+</PRE>
+
+<P>
+If there is only one member, output it.  Otherwise,
+recursively reduce the butfirst of the data, and apply the template
+to two values, the first datum and the result from the recursive call.
+
+<P>
+The Berkeley Logo implementation of <CODE>filter</CODE> is a little more
+complicated, for some of the same reasons as that of <CODE>map</CODE>: the
+ability to accept either a word or a list, and the <CODE>#</CODE> feature
+in templates.  So I'll start with a simpler one:
+
+<PRE>
+to filter :template :data
+if emptyp :data [output []]
+if apply :template (list first :data) ~
+   [output fput (first :data)
+                (filter :template butfirst :data)]
+output filter :template butfirst :data
+end
+</PRE>
+
+<P>
+If you understand that, you should be able to see the
+fundamentally similar structure of the library version despite
+its extra details:
+
+<PRE>
+to filter :filter.template :template.list [:template.number 1]
+localmake "template.lists (list :template.list)
+if emptyp :template.list [output :template.list]
+if apply :filter.template (list first :template.list) ~
+   [output combine (first :template.list)
+                   (filter :filter.template (butfirst :template.list)
+                           :template.number+1)]
+output (filter :filter.template (butfirst :template.list) 
+               :template.number+1)
+end
+</PRE>
+
+<P>
+Where <CODE>map</CODE> used a helper procedure <CODE>map1</CODE> to handle
+the extra input <CODE>template.number</CODE>, <CODE>filter</CODE> uses an
+alternate technique, in which <CODE>template.number</CODE> is declared as an
+optional input to <CODE>filter</CODE> itself.  When you invoke
+<CODE>filter</CODE> you always give it the default two inputs, but it
+invokes itself recursively with three.
+
+<P>
+Why does <CODE>filter</CODE> need a local variable named
+<CODE>template.lists</CODE>?  There was a variable with that name in
+<CODE>map</CODE> because it accepts more than one data input, but
+<CODE>filter</CODE> doesn't, and in fact there is no reference to the value
+of <CODE>template.lists</CODE> within <CODE>filter</CODE>.  It's there
+because of another feature of templates that I haven't mentioned:  you can
+use the word <CODE>?rest</CODE> in a template to represent the portion of
+the data input to the right of the member represented by <CODE>?</CODE> in
+this iteration:
+
+<PRE>
+to remove.duplicates :list
+output filter [not memberp ? ?rest] :list
+end
+
+? <U>show remove.duplicates [ob la di ob la da]</U>
+[di ob la da]
+</PRE>
+
+<P>
+Since <CODE>?rest</CODE> is allowed in <CODE>map</CODE> templates as well as
+in <CODE>filter</CODE> templates, its implementation must be the same for both:
+
+<PRE>
+to ?rest [:which 1]
+output butfirst item :which :template.lists
+end
+</PRE>
+
+<H2>Mapping Over Trees</H2>
+
+<P>
+It's time to move beyond the iteration tools in the Logo library and
+invent our own new ones.
+
+<P>
+So far, in writing operations on lists, we've ignored any sublist structure
+within the list.  We do something for each top-level member of the
+input list.  It's also possible to take advantage of the complex
+structures that lists make possible.  For example, a list can be used
+to represent a <EM>tree,</EM> a data structure in which each branch can
+lead to further branches.  Consider this list:
+
+<PRE>
+[[the [quick brown] fox] [[jumped] [over [the [lazy] dog]]]]
+</PRE>
+
+<P>
+My goal here is to represent a sentence in terms of the
+phrases within it, somewhat like the sentence diagrams you may have
+been taught in elementary school.  This is a list with two members;
+the first member represents the subject of the sentence and the
+second represents the predicate.  The predicate is further divided
+into a verb and a prepositional phrase.  And so on.  (A representation
+something like this, but more detailed, is used in any computer
+program that tries to understand &quot;natural language&quot; interaction.)
+
+<P>
+Suppose we want to convert each word of this sentence to capital letters,
+using Berkeley Logo's <CODE>uppercase</CODE> primitive that takes a word as
+input.  We can't just say
+
+<PRE>
+map [uppercase ?] ~
+    [[the [quick brown] fox] [[jumped] [over [the [lazy] dog]]]]
+</PRE>
+
+<P>
+because the members of the sentence-list aren't words.  What
+I want is a procedure <CODE>map.tree</CODE> that applies a template to
+each <EM>word</EM> within the input list but maintains the shape of the
+list:
+
+<PRE>
+? <U>show map.tree [uppercase ?]~</U>
+     <U>[[the [quick brown] fox] [[jumped] [over [the [lazy] dog]]]]</U>
+[[THE [QUICK BROWN] FOX] [[JUMPED] [OVER [THE [LAZY] DOG]]]]
+</PRE>
+
+<P>
+After our previous adventures in mapping, this one is relatively easy:
+
+<PRE>
+to map.tree :template :tree
+if wordp :tree [output apply :template (list :tree)]
+if emptyp :tree [output []]
+output fput (map.tree :template first :tree) ~
+            (map.tree :template butfirst :tree)
+end
+</PRE>
+
+<P>
+This is rather a special-purpose procedure; it's only good for trees
+whose &quot;leaves&quot; are words.  That's sometimes the case but not
+always.  But if you're dealing with sentence trees like the one in my
+example, you might well find several uses for a tool like this.  For
+now, I've introduced it mainly to make the point that the general idea
+of iteration can take many different forms, depending on the
+particular project you're working on.  (Technically, this is <EM>not</EM>
+an iteration, because it doesn't have a two-part structure in which the
+first part is to perform one step of a computation and the second part
+is to perform all the rest of the steps.  <CODE>Map.tree</CODE> does have a
+two-part structure, but <EM>both</EM> parts are recursive calls that might
+carry out several steps.  But <CODE>map.tree</CODE> does generalize the broad
+idea of dividing a large computation into similar individual pieces.
+We'll go into the nature of iteration more carefully in a moment.)
+
+<H2>Iteration and Tail Recursion</H2>
+
+<P>
+If you look back at the introduction to recursion in the first volume,
+you'll find that some recursive commands seem to be carrying out an
+iteration, like <CODE>down</CODE>, <CODE>countdown</CODE>, or
+<CODE>one.per.line</CODE>.  (In this chapter we've seen how to implement
+<CODE>countdown</CODE> using <CODE>for</CODE>, and you should easily be able
+to implement <CODE>one.per.line</CODE> using <CODE>foreach</CODE>.
+<CODE>Down</CODE> isn't exactly covered by either of those tools; can you see
+why I call it an iterative problem anyway?) Other recursive commands don't
+seem to be repeating or almost-repeating something, like <CODE>downup</CODE>
+or <CODE>hanoi</CODE>.  The difference is that these commands don't do
+something completely, then forget about it and go on to the next
+repetition.  Instead, the first invocation of <CODE>downup</CODE>, for
+example, still has work of its own to do after all the lower-level
+invocations are finished.
+
+<P>
+It turns out that a command that is <EM>tail</EM> recursive is one
+that can be thought of as carrying out an iteration.  A command that
+invokes itself somewhere before the last instruction is not
+iterative.  But the phrase &quot;tail recursive&quot; doesn't <EM>mean</EM>
+&quot;equivalent to an iteration.&quot; It just happens to work out, for
+commands, that the two concepts are equivalent.  What &quot;tail
+recursive&quot; means, really, is &quot;invokes itself just before stopping.&quot;
+
+<P>
+I've said before that this isn't a very important thing to worry about.  The
+reason I'm coming back to it now is to try to clear up a confusion that has
+been part of the Logo literature.  Logo implementors talk about tail
+recursion because there is a tricky way to implement tail recursion that
+takes less memory than the more general kind of recursion.  Logo
+<EM>teachers,</EM> on the other hand, tend to say &quot;tail recursive&quot; when
+they really mean &quot;iterative.&quot; For example, teachers will ask, &quot;Should we
+teach tail recursion first and then the general case?&quot; What's behind this
+question is the idea that iteration is easier to understand than recursion.
+(By the way, this is a hot issue.  Most Logo teachers would say yes; they
+begin by showing their students an iterative command like <CODE>poly</CODE>
+or <CODE>polyspi</CODE>.  I generally say no; you may recall that the first
+recursive procedure I showed you is <CODE>downup</CODE>.  One reason is that
+I expect some of my readers have programmed in Pascal or C, and I want to
+make it as hard as possible for such readers to convince themselves that
+recursion is just a peculiar way to express the idea of iteration.)
+
+<P>
+There are two reasons people should stop making a fuss about tail
+recursion.  One is that they're confusing an idea about control
+structures (iteration) with a Logo implementation strategy (tail
+recursion).  The second is that this way of thinking directs your
+attention to commands rather than operations.  (When people think
+of iterative procedures as &quot;easier,&quot; it's always commands that
+they have in mind.  Tail recursive operations are, if anything,
+less straightforward than versions that are non-tail
+recursive.)  Operations are more important; they're what gives Logo much of
+its flexibility.  And the best way to think about recursive operations
+isn't in implementation terms but in terms of data transformation
+abstractions like mapping, reduction, and filters.
+
+<H2>Multiple Inputs to <CODE>For</CODE></H2>
+
+<P>
+Earlier I promised you <CODE>multifor</CODE>, a version of <CODE>for</CODE>
+that controls more than one numeric variable at a time.  Its structure is
+very similar to that of the original <CODE>for</CODE>, except that we use
+<CODE>map</CODE> or <CODE>foreach</CODE> (or <CODE>firsts</CODE> or
+<CODE>butfirsts</CODE>, which are implicit uses of <CODE>map</CODE>) in
+almost every instruction to carry out <CODE>for</CODE>'s algorithm for each
+of <CODE>multifor</CODE>'s numeric variables.
+
+<PRE>
+to multifor :values.list :instr
+localmake "vars firsts :values.list
+local :vars
+localmake "initials map "run firsts butfirsts :values.list
+localmake "finals map [run item 3 ?] :values.list
+localmake "steps (map "multiforstep :values.list :initials :finals)
+localmake "testers map [ifelse ? < 0 [[?1 < ?2]] [[?1 > ?2]]] :steps
+multiforloop :initials
+end
+
+to multiforstep :values :initial :final
+if (count :values)=4 [output run last :values]
+if :initial > :final [output -1]
+output 1
+end
+
+to multiforloop :values
+(foreach :vars :values [make ?1 ?2])
+(foreach :values :finals :testers [if run ?3 [stop]])
+run :instr
+multiforloop (map [?1+?2] :values :steps)
+end
+</PRE>
+
+<P>
+This is a very dense program; I wouldn't expect anyone to read and understand
+it from a cold start.  But if you compare it to the implementation of
+<CODE>for</CODE>, you should be able to make sense of how each line
+is transformed in this version.
+
+<P>
+Here is an example you can try:
+
+<PRE>
+? <U>multifor [[a 10 100 5] [b 100 10 -10]] ~</U>
+           <U>[print (sentence :a "+ :b "= (:a + :b))]</U>
+10 + 100 = 110
+15 + 90 = 105
+20 + 80 = 100
+25 + 70 = 95
+30 + 60 = 90
+35 + 50 = 85
+40 + 40 = 80
+45 + 30 = 75
+50 + 20 = 70
+55 + 10 = 65
+?
+</PRE>
+
+<H2>The Evaluation Environment Bug</H2>
+
+<P>
+There's a problem with all of these control structure tools that I haven't
+talked about.  The problem is that each of these tools uses <CODE>run</CODE>
+or <CODE>apply</CODE> to evaluate an expression that's provided by the
+calling procedure, but the expression is evaluated with the tool's local
+variables active, in addition to those of the calling procedure.  This can
+lead to unexpected results if the name of a variable used in the expression
+is the same as the name of one of the local variables in the tool.  For
+example, <CODE>forloop</CODE> has an input named <CODE>final</CODE>.  What
+happens if you try
+
+<PRE>
+to grade :final
+for [midterm 10 100 10] [print (sum :midterm :final) / 2]
+end
+
+? <U>grade 50</U>
+</PRE>
+
+<P>
+Try this example with the implementation of <CODE>for</CODE> in this
+chapter, not with the Logo library version.  You might expect each iteration
+to add 10 and 50, then 20 and 50, then 30 and 50, and so on.  That is, you
+wanted to add the iteration variable <CODE>midterm</CODE> to the input to
+<CODE>grade</CODE>.  In fact, though, the variable that contributes to the
+sum is <CODE>forloop</CODE>'s <CODE>final</CODE>, not <CODE>grade</CODE>'s
+<CODE>final</CODE>.
+
+<P>
+The way to avoid this problem is to make sure you don't use variables
+in superprocedures of these tools with the same names as the ones
+inside the tools.  One way to ensure that is to rewrite all the tool
+procedures so that their local variables have bizarre names:
+
+<PRE>
+to map :template :inputs
+</PRE>
+
+<P>
+becomes
+
+<PRE>
+to map :map.qqzzqxx.template :map.qqzzqxx.inputs
+</PRE>
+
+<P>
+Of course, you also have to change the names wherever they
+appear inside the definition, not just on the title line.  You can see
+why I preferred not to present the procedures to you in that form!
+
+<P>
+It would be a better solution to have a smarter version of <CODE>run</CODE>,
+which would allow explicit control of the
+<EM>evaluation environment</EM>--the variable names and values
+that should be in effect while evaluating <CODE>run</CODE>'s input.  Some
+versions of Lisp do have such a capability.
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch11/v2ch11.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch11/crypto.html b/js/games/nluqo.github.io/~bh/v2ch11/crypto.html
new file mode 100644
index 0000000..2fe248e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch11/crypto.html
@@ -0,0 +1,1415 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 11: Example: Cryptographer's Helper</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Cryptographer's Helper</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch11.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch10/v2ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="crypto.lg"><CODE>crypto</CODE></A>
+
+
+<P>
+
+<P>A <EM>cryptogram</EM> is a kind of word puzzle, like a crossword puzzle.
+Instead of definitions, though, a cryptogram gives you the actual
+words of a quotation, but with each letter replaced with a different
+letter.  For example, each letter A in the original text might be
+replaced with an F.  Here is a sample cryptogram:
+
+<P>
+LB RA, BT YBL LB RA: LJGL CQ LJA FUAQLCBY: KJALJAT 'LCQ YBRXAT CY
+LJA DCYP LB QUSSAT LJA QXCYWQ GYP GTTBKQ BS BULTGWABUQ SBTLUYA, BT
+LB LGHA GTDQ GWGCYQL G QAG BS LTBURXAQ, GYP RM BIIBQCYW AYP LJAD?
+
+<P>
+
+<P>The punctuation marks and the spaces between words are the
+same in this cryptogram as they are in the original (&quot;clear&quot;) text.
+
+
+<P>
+
+
+A cryptogram is a kind of secret code.  The formal name for this particular
+kind of code is a <EM>simple substitution cipher.</EM>  Strictly speaking,
+a <EM>code</EM> is a method of disguising a message that uses a dictionary
+of arbitrarily chosen replacements for each possible word.  A foreign
+language is like a code.  A <EM>cipher</EM> is a method in which a uniform
+algorithm or formula is used to translate each word.  A <EM>substitution</EM>
+cipher is one in which every letter (or sometimes every pair of letters,
+or some such grouping) is replaced by a disguised equivalent.  A <EM>
+simple</EM> substitution cipher is one in which each letter has a single
+equivalent replacement, which is used throughout the message.  (A
+more complicated substitution cipher might be something like this:
+the first letter A in the message is replaced with F, the second A
+is replaced with G, the third with H, and so on.)
+
+<P>Years ago, Arthur Conan Doyle and Edgar Allen Poe were able to write
+mystery stories in which simple substitution ciphers were used by
+characters who really wanted to keep a message secret.  Today, partly
+because of those stories, too many people know how to &quot;break&quot; such
+ciphers for them to be of practical use.  Instead, these ciphers are
+used as word puzzles.
+
+<P>The technique used for decoding a cryptogram depends on the fact that
+some letters are more common than others.  The letter A is much more
+common in English words than the letter Z.  If, in a cryptogram, the
+letter F occurs many times, it's more likely to represent a letter
+like A in the original text than a letter like Z.
+
+<P>The most commonly used letter in English is E, by a wide margin. 
+T is in second place, with A and O nearly tied for third.  I, N, and
+R are also very commonly used.  These rankings apply to <EM>large</EM>
+texts.  In the usual short cryptogram, the most frequent letter doesn't
+necessarily represent E.  But the letter that represents E will probably
+be among the two or three most frequent.
+
+<P>Before reading further, you might want to try to solve the cryptogram
+shown above.  Make a chart of the number of times each letter appears,
+then use that information to make guesses about which letter is which.
+As you're working on it, make a note of what other kinds of information
+are helpful to you.
+
+<P>This project is a program to help you solve cryptograms.  The program
+doesn't solve the puzzle all by itself; it doesn't know enough about
+English vocabulary.  But it does some of the more boring parts of
+the job automatically, and can make good guesses about some of the
+letters.
+
+<P>The top-level procedure is <CODE>crypto</CODE> .  It takes one input, a list
+whose members are the words of the cryptogram.  Since these lists are long
+and easy to make mistakes in, you'll probably find it easier to type the
+cryptogram into the Logo editor rather than directly at a question mark
+prompt.  You might make the list be the value of a variable, then use that
+variable as the input to <CODE>crypto</CODE>.  (The program file for this
+project includes four such variables, named <CODE>cgram1</CODE> through <CODE>
+cgram4</CODE>, with sample cryptograms.)
+
+<P><CODE>Crypto</CODE> begins by going through the coded text, letter by letter. 
+It keeps count of how often each letter is used.  You can keep track
+of this counting process because the program draws a <EM>histogram</EM>
+on the screen as it goes.  A histogram is a chart like the one
+at the top of the next page.
+
+<HR>
+
+<P>
+<PRE>           L
+ B         L
+AB         L
+AB         L
+AB         L
+AB         L
+AB         L    Q
+AB         L    Q       Y
+AB    G    L    Q  T    Y
+AB    G    L    Q  T    Y
+AB    G    L    Q  T    Y
+ABC   G    L    Q  T    Y
+ABC   G  J L    Q  T    Y
+ABC   G  J L    Q  TU   Y
+ABC   G  J L    QRSTU   Y
+ABC   G  J L   PQRSTU W Y
+ABCD  G  J L   PQRSTU WXY
+ABCD  G IJKL   PQRSTU WXY
+ABCD FGHIJKLM  PQRSTU WXY
+</PRE>
+
+<P>  Histogram
+
+<HR>
+
+<P><PRE><U>A-17-E</U> <U>B-18- </U> C-08-  D-03-  E
+F-01-  G-11-A H-01-  I-02-  J-07-H
+K-02-  <U>L-19-T</U> M-01-  N      O
+P-04-  Q-13-  R-05-  S-05-  T-11-
+U-06-  V      W-04-  X-03-  Y-12-
+Z
+      <U>A</U>BCD<U>E</U>FG<U>H</U>IJKLMNOPQRS<U>T</U>UVWXYZ
+
+<U>LB RA, BT YBL LB RA: LJGT CQ LJA</U>
+T   E,      T T   E: THAT    THE
+<U>FUAQLCBY: KJALJAT 'LCQ YBRXAT CY LJA</U>
+  E T   :  HETHE  'T       E     THE
+<U>DCYP LB QUSSAT LJA QXCYWQ GYP GTTBKQ</U>
+     T      E  THE        A   A
+<U>BS BULTGWABUQ SBTLUYA, BT LB LGHA</U>
+     T A E       T  E,    T  TA E
+<U>GTDQ GWGCYQL G QAG BS LTBURXAQ, GYP</U>
+A    A A   T A  EA    T     E , A
+<U>RM BIIBQCYW AYP LJAD?</U>
+            E   THE ?
+</PRE>
+
+<P>  Screen display
+
+<HR>
+
+<P>A histogram is a kind of graph, but it's different from
+the <EM>continuous</EM> graphs you use in algebra.  Histograms are used
+to show quantities of <EM>discrete</EM> things, like letters of the alphabet.
+
+<P>The main reason the program draws the histogram is that it needs to
+know the frequencies of occurrence of the letters for later use. 
+When I first wrote the program, it counted the letters without printing
+anything on the screen.  Since this counting is a fairly slow process,
+it got boring waiting for the program to finish.  The histogram display
+is a sort of video thumb-twiddling to keep you occupied while the
+program is creating an invisible histogram inside itself.
+
+<P>By the way, since there are only 24 lines on the screen, the top part
+of the histogram may be invisible if the cryptogram is long enough
+to use some letters more than 24 times.
+
+<P>The shape of this histogram is pretty typical.  A few letters are
+used many times, while most letters are clumped down near the bottom.
+In this case, A, B, and L stand out.  You might guess that they represent
+the most commonly used letters: E, T, and either A or O.  But you
+need more information to be able to guess which is which.
+
+<P>
+
+
+After it finishes counting letters, the program presents a screen
+display like the one shown above.
+The information provided in this display comes in three
+parts.  At the top is an alphabetical list of the letters in the cryptogram.
+For each letter, the program displays the number of times that letter
+occurs in the enciphered text.  For example, the letter P occurs four
+times.  The letter that occurs most frequently is highlighted by
+showing it in reverse video characters, represented here with
+underlined characters.  In
+this example, the most frequently used letter is L, with 19 occurrences.
+Letters with occurrence counts within two of the maximum are also
+highlighted.  In the example, A with 17 and B with 18 are highlighted.
+If a letter does not occur in the cryptogram at all, no count is given.
+In the example, there is no E in the enciphered text.
+
+<P>The top part of the display shows one more piece of information: if
+either the program or the person using it has made a guess as to the
+letter that a letter represents, that guess is shown after the frequency
+count.  For example, here the program has guessed that the letter
+L in the cryptogram represents the letter T in the clear text.
+(You can't tell from the display that this guess was made by the program
+rather than by the person using it.  I just happen to know that that's
+what happened in this example!)
+
+<P>The next section of the display is a single line showing all the letters
+of the alphabet.  In this line, a letter is highlighted if a guess
+has been made linking some letter in the cryptogram with that letter
+in the clear text.  In other words, this line shows the linkages in
+the reverse direction from what is shown in the top section of the
+display.  For example, I just mentioned that L in the cryptogram corresponds
+to T in the clear text.  In the top part of the display, we can find
+L in alphabetical order, and see that it has a T linked to it.  But
+in the middle part of the display, we find <EM>T</EM>, not L, in alphabetical
+order, and discover that <EM>something</EM> is linked to it.  (It turns
+out that we don't usually have to know which letter corresponds to
+T.)
+
+<P>Here is the purpose of that middle section of the display:  Suppose
+I am looking at the second word of the cryptogram, RA.  We've already
+guessed that A represents E, so this word represents something-E.
+Suppose I guess that this word is actually HE.  This just happens
+to be the first two-letter word I think of that ends in E.  So I'd
+like to try letting R represent H.  Now I look in the middle section
+of the display, and I see that H is already highlighted.  So some
+other letter, not R, already represents H.  I have to try a different
+guess.
+
+<P>The most important part of the display is the bottom section.  Here,
+lines of cryptogram alternate with their translation into clear text,
+based on the guesses we've made so far.  The cryptogram lines are
+highlighted, just to make it easy to tell which lines are which. 
+The program ensures that each word entirely fits on a single line;
+there is no wrapping to a new line within a single word.
+
+<P>There is room on the screen for eight pairs of lines.  If the cryptogram
+is too big to fit in this space, only a portion of it will be visible
+at any time.  In a few paragraphs I'll talk about moving to another
+section of the text.
+
+<P>The program itself is very limited in its ability to guess letters.
+For the most part, you have to do the guessing yourself when you use
+it.  There are three guessing rules in the program:
+
+<P>
+<P><P>
+
+<OL><LI> The most frequently occurring single-letter word is taken to represent
+A.
+<LI> Another single-letter word, if there is one, is taken to represent
+I.
+<LI> The most frequently occurring three-letter word is taken to represent
+THE, but only if its last letter is one of the ones highlighted in
+the top part of the display.
+
+<P></OL>
+<P>
+
+<P>In the example, the only single-letter word in the cryptogram
+is G, in the next-to-last line.  The program, following rule 1, has
+guessed that G represents A.  Rule 2 did not apply, because there
+is no second single-letter word.  The most frequently used three-letter
+word is LJA, which occurs three times.  The last letter of that word,
+A, is highlighted in the top section because it occurs 17 times. 
+Therefore, the program guesses that L represents T, J represents H,
+and A represents E.
+
+<P>Of course you understand that these rules are not infallible; they're
+just guesses.  (A fancy name for a rule that works most of the time
+is a <EM>heuristic.</EM>  A rule that works all the time is called an
+<EM>algorithm.</EM>)  For example, the three-letter word GYP appears
+twice in the cryptogram, only once less often than LJA.  Maybe GYP
+is really THE.  However, the appearance of the word THAT in the translation
+of the first line is a pretty persuasive confirmation that the program's
+rules have worked out correctly in this case.
+
+<P>If you didn't solve the cryptogram on your own, at my first invitation,
+you might want to take another look at it, based on the partial solution
+you now have available.  Are these four letters (A, E, I, and T) enough
+to let you guess the rest?  It's a quotation you'll probably recognize.
+
+<P>Once this display is on the screen, you can make further guesses by
+typing to the program.  For example, suppose you decide that the last
+word of the cryptogram, LJAD, represents THEM.  Then you want to guess
+that D represents M.  To do that, type the letters D and M in that
+order.  Don't use the RETURN key.  Your typing will not be echoed
+on the screen.  Instead, three things will happen.  First, the entry
+in the top section of the display that originally said
+
+<P><PRE>D-03-
+</PRE>
+
+<P>will be changed to say
+
+<P><PRE>D-03-M
+</PRE>
+
+<P>Second, the letter M will be highlighted in the alphabet
+in the second section of the display.  Finally, the program will type
+an M underneath every D in the cryptogram text.
+
+<P>If you change your mind about a guess, you can just enter a new guess
+about the same cryptogram letter.  For example, if you decide that
+LJAD is really THEY instead of THEM, you could just type D and Y.
+Alternatively, if you decide a guess was wrong but you don't have
+a new guess, type the cryptogram letter (D in this example) and then
+the space bar.
+
+<P>If you guess that D represents M, and then later you guess that R also
+represents M, the program will complain at you by beeping or by flashing
+the screen, depending on what your computer can do.  If you meant
+that R should represent M <EM>instead of</EM> D representing M, you must
+first undo the latter guess by typing D, space bar, R, and M.
+
+<P>The process of redisplaying the clear text translation of the cryptogram
+after each guess takes a fairly long time, since the program has to
+look up each letter individually.  Therefore, the program is written
+so that you don't have to wait for this redisplay to finish before
+guessing another letter representation.  As soon as you type any key
+on the keyboard, the program stops retyping the clear text.  Whatever
+key you typed is taken as the first letter of a two-letter guess command.
+
+<P>If the cryptogram is too long to fit on the screen, there are three
+other things you can type to change which part of the text is
+visible.  Typing a plus sign (+) eliminates the first four lines of
+the displayed text (that is, four lines of cryptogram and four corresponding
+lines of cleartext) and brings in four new lines at the end.  Typing
+a minus sign (-) moves backwards, eliminating the four lines nearest
+the bottom of the screen and bringing back four earlier lines at the
+top.  These <EM>windowing</EM> commands have no effect if you are already
+seeing the end of the text (for +) or the beginning of the text (for
+-).
+
+<P>The third command provided for long cryptograms is the atsign
+(@) character.  This is most useful after you've figured out all of
+the letter correspondences.  It clears the screen and displays only
+the clear text, without the letter frequencies, table of correspondences,
+or the enciphered text.  This display allows 23 lines of clear text
+to fit on the screen instead of only eight.  If you don't have the
+solution exactly right, you can type any character to return to the
+three-part display and continue guessing.
+
+<P>The program never stops; even after you have made guesses
+for all the letters, you might find an error and change your mind
+about a guess.  When you're done, you stop the program with control-C
+or command-period or whatever your computer requires.
+
+<P>In the complete listing at the end of this chapter, there are a few
+cryptograms for you to practice with.  They are excerpted from one
+of my favorite books, <EM>Compulsory Miseducation</EM> by
+Paul Goodman.
+
+<P><H2>Program Structure</H2>
+
+<P>There are about 50 procedures in this program.  These procedures can be
+roughly divided into several purposes:
+
+<P>
+<UL>
+<LI>initialization
+<LI>frequency counting and displaying the histogram
+<LI>guessing letters automatically
+<LI>reading user commands
+<LI>keeping track of guesses
+<LI>top section of display (frequencies)
+<LI>middle section of display (alphabet)
+<LI>bottom section of display (cryptogram text and cleartext)
+<LI>windowing and full-text displays
+<LI>data abstraction and other helper procedures
+</UL>
+
+<P>The diagram on the next page shows superprocedure/subprocedure relationships within
+the main categories.  (Helper procedures aren't shown, to make the
+diagram more readable.)  The bottom half of the diagram has the
+procedures that are concerned primarily with presenting information
+on the screen.  <CODE>Redisplay</CODE>, near the center of the diagram, is
+called whenever the entire screen display must be redrawn: when the
+initialization part of the program is finished, and whenever the user
+chooses a new portion of the text to display.  When the display
+changes slightly, because a new guess is made, procedures such as
+<CODE>fixtop</CODE>, <CODE>light</CODE>, and <CODE>dark</CODE> are used instead of redrawing
+everything.
+
+<P>
+
+<CENTER><IMG SRC="cryptoflow.gif" ALT="figure: cryptoflow"></CENTER>
+
+
+<P><CODE>Bind</CODE> is the most important procedure, because it records and displays
+each new guess.  As the diagram shows, it invokes several subprocedures to
+update the display; more importantly, it changes the values of several
+variables to keep track of the new guess.  There is also a similar procedure
+<CODE>qbind</CODE> that's used when a guess is made by the program rather than by
+the user.  (The &quot;Q&quot; stands for either &quot;quick&quot; or &quot;quiet,&quot; since this
+version never has to undo an old guess, omits some error checking, and can't
+beep because there are no errors in automatic guesses.)  If you ignore
+initialization and displaying information, the entire structure of the
+program is that <CODE>crypto</CODE> calls <CODE>parseloop</CODE>, which repeatedly calls
+<CODE>parsekey</CODE>, which calls <CODE>bind</CODE> to record a guess.
+
+<P>Unfortunately, it's not so easy in practice to divide up the
+procedures into groups, with a single purpose for each group.  Several
+procedures carry out two tasks at once.  For example, <CODE>light</CODE> and
+<CODE>dark</CODE> have those names because they switch individual letters
+between normal and inverse video in the alphabet display in the middle
+part of the screen.  But those procedures also set variables to remember
+that a particular cleartext letter has or hasn't been guessed, so they
+are also carrying out part of <CODE>bind</CODE>'s job, keeping track of guesses.
+
+<P><H2>Guided Tour of Global Variables</H2>
+
+<P><CODE>Crypto</CODE> uses many global variables to hold the information it needs.
+This includes information about individual letters, about
+words, and about the text as a whole.
+
+<P>There are several sets of 26 variables, one for each letter of the
+alphabet.  For these variables, the last letter of the variable name
+is the letter about which the variable holds information.  In the
+table that follows, the italic <EM>x</EM> in each name represents
+any letter.
+
+<P><TABLE><TR><TH align="right" valign="top"><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">Cleartext letter that is guessed to match <EM>x</EM>
+in the cryptogram.
+<TR><TH align="right" valign="top"><CODE>bound</CODE><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>True</CODE> if <EM>x</EM> appears in the
+<EM>cleartext</EM> as guessed so far; <CODE>false</CODE> otherwise.
+<TR><TH align="right" valign="top"><CODE>cnt</CODE><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Count of how many times <EM>x</EM> appears in the cryptogram.
+<TR><TH align="right" valign="top"><CODE>posn</CODE><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Screen cursor position where the frequency count
+and guess for <EM>x</EM> is shown in the top part of the display.
+</TABLE>
+
+<P>These variables are set up initially by <CODE>initvars</CODE>, except
+for the <CODE>posn</CODE> variables, which are set by <CODE>showrow</CODE>.  The
+variables with single-letter names start out with a space character as their
+value.  This choice allows <CODE>showclear</CODE> to use <CODE>thing :letter</CODE>
+as the thing to type for every letter in the cryptogram.
+If no guess has been made for a letter, it will be displayed as a
+blank space in the partially-decoded version of the text.
+
+<P>Here are the variables that have to do with <EM>words</EM> in the cryptogram
+text.  These variables are needed for the part of the program that
+automatically makes guesses, by looking for words that might represent
+A, I, and THE in the cleartext.  In the following variable names,
+<EM>y</EM> represents either a one-letter word or a three-letter word
+in the cryptogram text.
+
+<P><TABLE><TR><TH align="right" valign="top"><CODE>count.single</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the most frequent
+one-letter word.
+<TR><TH align="right" valign="top"><CODE>count.triple</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the most frequent
+three-letter word.
+<TR><TH align="right" valign="top"><CODE>list.single</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">List of one-letter words in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>list.triple</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">List of three-letter words in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>max.single</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The most frequent one-letter word in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>max.triple</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The most frequent three-letter word in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>single</CODE><EM>y</EM>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the one-letter word <EM>y.</EM>
+<TR><TH align="right" valign="top"><CODE>triple</CODE><EM>y</EM>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the three-letter word <EM>y.</EM>
+</TABLE>
+
+<P>These variables are used only during
+the initial histogram counting, to keep track of which one-letter
+word and which three-letter word are the most frequent in each category.
+Once the most frequently occurring words have been determined, the
+actual count is no longer important.
+
+<P>Finally, there are some variables that contain information about
+the text as a whole:
+
+<P><TABLE><TR><TH align="right" valign="top"><CODE>fulltext</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The complete cryptogram text.
+<TR><TH align="right" valign="top"><CODE>text</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The part of the cryptogram that is displayed
+on the screen right now.
+<TR><TH align="right" valign="top"><CODE>moretext</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The part of the text that should be displayed
+after a <CODE>+</CODE> command.
+<TR><TH align="right" valign="top"><CODE>textstack</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">A list of old values of <CODE>text</CODE>, to be restored
+if the <CODE>-</CODE> command is used.
+<TR><TH align="right" valign="top"><CODE>maxcount</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the most frequently used
+letter.
+</TABLE>
+
+<P><CODE>:Maxcount</CODE> is used to know which letters should be highlighted
+in the top section of the display.  <CODE>:Text</CODE> is used by <CODE>showcode</CODE> and
+<CODE>showclear</CODE> to maintain the bottom section of the display.  <CODE>
+Fulltext</CODE>, <CODE>moretext</CODE>, and <CODE>textstack</CODE> are part of the windowing
+feature.  At first, <CODE>text</CODE> is equal to <CODE>fulltext</CODE>, and <CODE>
+textstack</CODE> is empty.  <CODE>Moretext</CODE> contains the portion of the text
+starting on the fifth line that is displayed, providing there is some text
+at the end of the cryptogram that didn't fit on the screen.  If the end of
+the text is visible, then <CODE>moretext</CODE> is empty.  Here is what happens if
+you type the plus sign:
+
+<P><PRE>to moretext
+if emptyp :moretext [beep stop]
+push &quot;textstack :text
+make &quot;text :moretext
+redisplay &quot;true
+end
+</PRE>
+
+<P>If <CODE>:moretext</CODE> is empty, there is no more text to display,
+and the procedure stops with a complaint.  Otherwise, we want
+to remember what is now in <CODE>:text</CODE> in case of a later <CODE>-</CODE> command, and
+we want to change the value of <CODE>text</CODE> to the version starting four lines
+later that is already in <CODE>:moretext</CODE>.
+
+<P>In the solitaire project, I used a lot of <CODE>local</CODE> instructions in the
+top-level procedures to avoid creating global variables.  In this project,
+I didn't bother.  There's no good reason why I was lazier here than there;
+you can decide for yourself whether you think it's worth the effort.
+
+<P><H2>What's In a Name?</H2>
+
+<P>In revising this program for the second edition, I was struck by the ways
+in which bad choices of procedure or variable names had made it needlessly
+hard to read.  Changing names was one of the three main ways in which I
+changed the program.  (The other two were an increased use of data
+abstraction and the introduction of iteration tools to eliminate some
+helper procedures.)
+
+<P>I'll start with a simple example.  As I've mentioned, when I first wrote
+the program it didn't draw the histogram on the screen during the initial
+counting of letter frequencies.  Since the top part of the screen display
+is primarily a presentation of those frequencies, I thought of that top
+part as the program's &quot;histogram&quot; even though it doesn't have the form
+of a real histogram.  That's why, in the first edition, the procedures
+that maintain the top part of the display were called <CODE>showhist</CODE>,
+<CODE>fixhist</CODE>, and so on; when I added the <CODE>histogram</CODE> and <CODE>histlet</CODE>
+procedures that draw the real histogram, it was hard to keep track of
+which &quot;<CODE>hist</CODE>&quot; names were part of the initial histogram and which
+were part of the letter frequency chart at the top of the program's normal
+screen display.  I've now changed <CODE>showhist</CODE> to <CODE>showtop</CODE>,
+<CODE>fixhist</CODE> to <CODE>fixtop</CODE>, and so on.  The procedures with <CODE>hist</CODE>
+in their names are about the real histogram, and the ones with <CODE>top</CODE>
+in their names are about the frequency chart.
+
+<P>Here's another example.  In several parts of the program, I had to
+determine whether a character found in the cryptogram text is a letter
+or a punctuation mark.  The most straightforward way to do this would
+be an explicit check against all the letters in the alphabet:
+
+<P><PRE>to letterp :char
+output memberp :char &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ
+end
+</PRE>
+
+<P>But comparing the character against each of the 26 letters
+would be quite slow.  Instead, I took advantage of the fact that there
+happen to be variables in the program named after each letter.  That is,
+there's a variable <CODE>A</CODE>, a variable <CODE>B</CODE>, and so on, but there
+aren't variables named after punctuation characters.  Therefore, I could use
+the Logo primitive <CODE>namep</CODE> to see whether or not the character I'm
+considering is a variable name, and if so, it must be a letter.  The
+first edition version of <CODE>crypto</CODE> is full of instructions
+of the form
+
+<P><PRE>if namep :char ...
+</PRE>
+
+<P>This is clever and efficient, but not at all self-documenting.
+Someone reading the program would have no way to tell that I'm using
+<CODE>namep</CODE> to find out whether a character is a letter.  The solution
+was to add an instruction to the initialization in <CODE>crypto</CODE>:
+
+<P><PRE>copydef &quot;letterp &quot;namep
+</PRE>
+
+<P>The <CODE>copydef</CODE> primitive is used to give a new name to
+an existing procedure.  (The old name continues to work.)  The existing
+procedure can be either primitive or user-defined.  The new name is not
+saved by the <CODE>save</CODE> command; that's why <CODE>crypto</CODE> performs the
+<CODE>copydef</CODE> instruction each time.
+
+<P>Probably the worst example of bad naming was in the <CODE>tally</CODE> procedure.
+This procedure has a complicated job; it must keep track of the most
+common one-letter and three-letter words, in preparation for the program's
+attempts to make automatic guesses for A, I, and THE.  Here is the version
+in the first edition:
+
+<P><PRE>to tally :type :word
+local &quot;this
+make &quot;this word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :this 0]
+make :this sum 1 thing :this
+make &quot;this thing :this
+if :this &gt; (count. :type) ~
+   [setcount. :type :this  make (word &quot;max. :type) :word]
+end
+</PRE>
+
+<P>The input named <CODE>type</CODE> is either the word <CODE>single</CODE> or
+the word <CODE>triple</CODE>.  One thing that makes this procedure hard to read
+is the local variable named <CODE>this</CODE>.  What a vague name!  This what?
+Is it this word, or this letter, or this word length, or this guess?  To
+make things worse, partway through the procedure I recycled the same
+name to hold a different value.  At first, <CODE>:this</CODE> is a word that
+will be used as the name of a variable, counting the number of times
+a given word appears.  For example, if the word YBL appears in the
+cryptogram, then <CODE>tally</CODE> will create a variable named <CODE>tripleybl</CODE>
+whose value will be the number of times that YBL occurs in the text.
+The value of <CODE>this</CODE> will be the word <CODE>tripleybl</CODE>, so the
+expression <CODE>thing :this</CODE> represents the actual number.  Then,
+near the end of the procedure, I used the instruction
+
+<P><PRE>make &quot;this thing :this
+</PRE>
+
+<P>From then on, <CODE>:this</CODE> is the number itself, not the
+variable name!  It's really hard to read a procedure in which the
+same name is used to mean different things in different instructions.
+
+<P>Here's the new version:
+
+<P><PRE>to tally :type :word
+localmake &quot;countvar word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :countvar 0]
+localmake &quot;count (thing :countvar)+1
+make :countvar :count
+if :count &gt; (count. :type) ~
+   [setcount. :type :count   setmax. :type :word]
+end
+</PRE>
+
+<P>The name <CODE>this</CODE> is gone.  Instead, I've first created
+a local variable named <CODE>countvar</CODE> whose value is the name of the
+count variable.  Then I create another local variable named <CODE>count</CODE>
+that contains the actual count.  These names are much more descriptive
+of the purposes of the two variables.
+
+<P>Another change in the new version is a more consistent use of
+data abstraction.  The original version used the constructor
+<CODE>setlist.</CODE> and the selector <CODE>list.</CODE> to refer to the
+list of all known cryptogram words of the appropriate length (the
+variable <CODE>list.single</CODE> or <CODE>list.triple</CODE>), but
+used the instruction
+
+<P><PRE>make (word &quot;max. :type) :word
+</PRE>
+
+<P>to construct the variable containing the most frequently
+appearing word of that length.  The new version uses a constructor
+named <CODE>setmax.</CODE> that's analogous to the <CODE>setlist.</CODE> constructor.
+
+<P>Rethinking the names of procedures can reorganize your ideas about how
+to group the procedures into categories.  For example, in the first
+edition I was upset about the fact that <CODE>historgram</CODE>, whose job
+is to count letter frequencies and draw the histogram of those counts,
+also invokes prepare.guess, whose job is to count <EM>word</EM> frequencies
+in preparation for automatic guessing.
+
+<P><CENTER><IMG SRC="histflow.gif" ALT="figure: histflow"></CENTER>
+
+<P>The reason for this mixture of tasks is efficiency.  To prepare
+the histogram, the program must extract the letters (omitting punctuation)
+from each word of the text, and count them.  To prepare for guessing
+words, the program must extract the letters from each word, and count
+the occurrences of the letters-only words.  I could have done these
+things separately:
+
+<P><PRE>to histogram :text
+foreach :text [foreach (filter &quot;letterp ?) &quot;histlet]
+end
+
+to count.words :text
+foreach :text [prepare.guess (filter &quot;letterp ?)]
+end
+</PRE>
+
+<P>But it seemed better to scan the words of the text just
+once, and extract the letters from each word just once:
+
+<P><PRE>to histogram :text
+foreach :text [localmake &quot;word filter &quot;letterp ?
+               foreach :word &quot;histlet
+               prepare.guess :word]
+end
+</PRE>
+
+<P>But the punch line of this story is that I could avoid the
+confusing jump between boxes--the feeling of mixing two tasks--merely
+by changing the name of the <CODE>histogram</CODE> procedure to something
+neutral like <CODE>preprocess</CODE>.  Then the structure would be
+
+<P><CENTER><IMG SRC="preprocess.gif" ALT="figure: preprocess"></CENTER>
+
+<P>Now we have one initialization procedure that includes invocations
+for two separate kinds of preprocessing.  It's not
+really the program structure that is inappropriate, but only using the
+name <CODE>histogram</CODE> for a procedure whose job includes more than the
+creation of the histogram.
+
+<P>
+
+<P><H2>Flag Variables</H2>
+
+
+<P>Procedure <CODE>redisplay</CODE> has the job of redrawing the entire screen when
+there is a major change to what should be shown, like moving to a different
+window in the cryptogram text.
+
+<P><PRE>to redisplay :flag
+cleartext
+showtop
+alphabet
+showcode :text
+if :flag [showclear :text]
+end
+</PRE>
+
+<P>The input to <CODE>redisplay</CODE> is a <EM>flag variable.</EM>  It must
+have the value <CODE>true</CODE> or <CODE>false</CODE>.  (The name comes from the flags on
+mailboxes, which are either up or down to indicate whether or not there is
+mail in the box.)  It's there because <CODE>redisplay</CODE>
+has two slightly different
+jobs to do at two different points in the program.  First, <CODE>redisplay</CODE>
+is invoked by <CODE>crypto</CODE>, the top-level procedure, to draw the screen
+initially.  At this time, no letters have been guessed yet.  Therefore, it
+is not necessary to invoke <CODE>showclear</CODE> (which indicates
+the guessed letters in the bottom part of the display).
+<CODE>Crypto</CODE> executes the instruction
+
+<P><PRE>redisplay &quot;false
+</PRE>
+
+<P>to avoid that unnecessary work.  <CODE>Redisplay</CODE> is also invoked
+by <CODE>moretext</CODE>, <CODE>lesstext</CODE>, and <CODE>showclear</CODE>.  Each of these
+procedures uses the instruction
+
+<P><PRE>redisplay &quot;true
+</PRE>
+
+<P>to include <CODE>showcode</CODE>.  If the flag variable
+weren't used, there would have to be two different versions
+of <CODE>redisplay</CODE>.
+
+<P>I used the latter technique in the procedures <CODE>bind</CODE> and <CODE>
+qbind</CODE>.  These could also have been one procedure with a flag variable
+input.  The advantage of the technique used in <CODE>redisplay</CODE> is that it
+makes the program easier to read by reducing the number of procedures, and
+keeping similar purposes together.  The advantage of using two procedures is
+that it's a little faster, because you don't have to test the flag variable
+with <CODE>if</CODE>.
+
+<P>A flag variable is somewhat analogous to a <EM>predicate,</EM> a
+procedure that always outputs <CODE>true</CODE> or <CODE>false</CODE>.  The
+advantage of using these particular values for flag variables is that
+they're easy to test; you can say
+
+<P><PRE>if :flag [do.something]
+</PRE>
+
+<P>whereas, if you used some other pair of values like <CODE>yes</CODE> and
+<CODE>no</CODE>, you'd have to say
+
+<P><PRE>if equalp :flag &quot;yes [do.something]
+</PRE>
+
+<P>Some people like to give flag variables names ending with <CODE>p</CODE>,
+as in the convention for predicates.  (The special variable <CODE>redefp</CODE>
+that controls redefinition of primitives in some versions of Logo,
+including Berkeley Logo, is an
+example.)  I'm somewhat uncomfortable with that practice because to me it
+raises a confusion about whether a particular word is the name of a variable
+or the name of a procedure.  I'd rather put <CODE>flag</CODE> in the names of flag
+variables.
+
+<P>The 26 <CODE>bound</CODE><EM>x</EM> variables in this program are also flag
+variables; each is <CODE>true</CODE> if the corresponding letter has been
+guessed as the cleartext half of a binding.  They don't have &quot;flag&quot;
+in their names, but their names aren't used directly in most of the
+program anyway.  Instead they are hidden behind data abstraction procedures.
+<CODE>Setbound</CODE> and <CODE>setunbound</CODE> are used to set any such variable
+<CODE>true</CODE> or <CODE>false</CODE>, respectively; the selector <CODE>boundp</CODE> alerts
+you by the P in its name that it's a predicate.
+
+<P><H2>Iteration Over Letters</H2>
+
+<P>One of the ways in which I simplified the program for this edition was
+to replace some recursive helper procedures with invocations of <CODE>
+foreach</CODE>.  At several points in the program, some action must be taken
+for each letter in a word, or for each word in the text.
+
+<P>Another kind of iteration problem that was not so easily solved by
+the standard higher order procedures in Berkeley Logo was one in which
+some action must be taken, not for each letter in a word, but for
+each letter in the alphabet, or for some subset of the alphabet, as
+in the case of <CODE>showrow</CODE>, which displays one row of the top part
+of the screen, with information about five consecutive letters.
+Of course these problems could be solved with instructions like
+
+<P><PRE>foreach &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ [...]
+</PRE>
+
+<P>but that seemed unaesthetic to me.  I wanted to be able to
+specify the starting and ending letters, as in this example:
+
+<P><PRE>to alphabet
+setcursor [6 6]
+forletters &quot;A &quot;Z [ifelse boundp ? [invtype ?] [type ?]]
+end
+</PRE>
+
+<P>(The job of <CODE>alphabet</CODE> is to generate the middle
+part of the screen display, which is all of the letters of the
+alphabet, in order, with each letter in inverse video if that
+letter has been guessed as part of the cleartext.)
+
+<P>The difficulty in implementing <CODE>forletters</CODE> is to get from one
+letter to the next.  How does a program know that the letter after
+A is B?  Here is my solution:
+
+<P><PRE>to forletters :from :to :action
+for [lettercode [ascii :from] [ascii :to]] ~
+    [apply :action (list char :lettercode)]
+end
+</PRE>
+
+<P>The operation <CODE>ascii</CODE>
+takes a letter (or other character)
+as input.  Its output is the number that represents that letter in
+the computer's memory.  Most computers use the same numbers to represent
+characters; this standard representation is called ASCII, for
+American Standard Code for Information Interchange.  (It's
+pronounced &quot;ask E.&quot;)  By using <CODE>ascii</CODE> to translate the starting
+and ending letters into numeric codes, I've transformed the problem
+into one that can be solved using the standard <CODE>for</CODE> tool that
+allows an action to be carried out for each number in a given range.
+
+<P>But in the template input to <CODE>forletters</CODE>, I want the question mark
+to represent a letter, not its numeric code.
+<CODE>Char</CODE> is the inverse operation to <CODE>ascii</CODE>.  Given
+a number that is part
+of the ASCII sequence, <CODE>char</CODE> outputs the character that that number
+represents.  For example:
+
+<P><PRE>?<U>print ascii &quot;A</U>
+65
+?<U>print char 65</U>
+A
+</PRE>
+
+<P><CODE>Forletters</CODE> applies the template input to the character
+corresponding to the number in the <CODE>lettercode</CODE> variable controlled by
+the <CODE>for</CODE>.
+
+<P>Adding 1 to an ASCII code to get the code for the next letter depends
+on the fact that the numbers representing the letters are in sequence.
+Fortunately, this is true of ASCII.  A is 65, B is 66, C is 67, and
+so on.  Not all computer representations for characters have this
+property.  The code that was used in the days of punched cards had
+the slash (/) character in between R and S!
+
+<P>By the way, the lower case letters have different ASCII codes from the
+capitals.  In this program I've used the primitive operation
+<CODE>uppercase</CODE> to translate every character that the program reads
+into upper case, just to be sure that each letter has only one
+representation.
+
+<P><H2>Computed Variable Names</H2>
+
+
+
+
+
+<P>
+
+<P>Another programming technique that is heavily used in this project
+is the use of <CODE>word</CODE> to compute variable names dynamically.  Ordinarily,
+you assign a value to a variable named <CODE>var</CODE> with an instruction like
+
+<P><PRE>make &quot;var 87
+</PRE>
+
+<P>and you look at the value of the variable with the expression
+
+<P><PRE>:var
+</PRE>
+
+<P>But in this project, there are variables for each letter,
+with names like <CODE>posna</CODE>, <CODE>posnb</CODE>, <CODE>posnc</CODE>,
+and so on.  To assign a value to
+these variables, the program doesn't use 26 separate instructions
+like
+
+<P><PRE>make &quot;posna [0 0]
+</PRE>
+
+<P>(Each of these variables contains a list of screen coordinates for
+use with <CODE>setcursor</CODE> to find the corresponding letter in the top part of
+the display.)  Instead, the procedure <CODE>showrow</CODE>, which draws that
+section of the display, contains the instruction
+
+<P><PRE>forletters :from :to [setposn ? cursor   onetop ?]
+</PRE>
+
+<P><CODE>Setposn</CODE> is a data abstraction procedure:
+
+<P><PRE>to setposn :letter :thing
+make (word &quot;posn :letter) :thing
+end
+</PRE>
+
+<P>When the variable <CODE>letter</CODE> contains the letter <CODE>a</CODE>,
+the <CODE>make</CODE> instruction
+has the same effect as if it were
+
+<P><PRE>make &quot;posna :thing
+</PRE>
+
+<P>Similarly, the dots notation (<CODE>:posna</CODE>) isn't used to examine the values
+of these variables.  Instead, <CODE>thing</CODE> is invoked explicitly:
+
+<P><PRE>to posn :letter
+output thing (word &quot;posn :letter)
+end
+</PRE>
+
+<P>Another point to consider is that I could have used a different approach
+altogether, instead of using <CODE>word</CODE> to piece together a variable name.
+For instance, I could have used property lists:
+
+<P><PRE>to setposn :letter :thing
+pprop &quot;posn :letter :thing
+end
+
+to posn :letter
+output gprop &quot;posn :letter
+end
+</PRE>
+
+<P>As it happens, I first wrote this project in Atari 800 Logo, which
+didn't have property list primitives.  So the question didn't arise for
+me.  In a version of Logo that does support property lists, I see no
+<EM>stylistic</EM> reason to prefer one approach over the other.  It's
+entirely a question of which is more efficient.  Which is faster, searching
+through a list of 26 times 2 members (times 2 because each property has a
+name and a value) or concatenating strings with <CODE>word</CODE> to generate the
+name of a variable that can then be examined quickly?  I'd have to
+experiment to find out.  Alternatively, instead of using <CODE>posn</CODE> as the
+name of a property list and the letters as names of properties, I could
+reverse the two roles.  That would give me more lists, but shorter lists.
+
+<P>What <EM>is</EM> a stylistic issue is that using procedures like <CODE>posn</CODE>
+and <CODE>setposn</CODE> to isolate the storage mechanism from the rest of the
+program makes the latter easier to read.
+
+<P>
+
+<P><H2>Further Explorations</H2>
+
+<P>I have three suggestions about how to extend this project.  The first
+is to put in more rules by which the program can make guesses automatically.
+For example, a three-letter word that isn't THE might be AND.  Sequences
+of letters within a word can also be tallied; TH is a common two-letter
+sequence, for example.  A double letter in the cryptogram is more
+likely to represent OO than HH.
+
+<P>If you have many rules in the program, there will be situations in
+which two rules lead to contradictory guesses.  One solution is just
+to try the most reliable rule first, and ignore a new guess if it
+conflicts with an old one.  (<CODE>Qbind</CODE> applies this strategy by means
+of the instruction
+
+<P><PRE>if letterp thing :from [stop]
+</PRE>
+
+<P>which avoids adding a guess to the data base if the cryptogram
+letter is already bound to a cleartext letter.)
+
+<P>Another solution would be to let the rules &quot;vote&quot; about guesses.
+If the program had many rules, it might happen that three rules suggest
+that F represents E, while two rules suggest that W represents E.
+In this case, three rules outvote two rules, and the program would
+guess that F represents E.
+
+<P>The second direction for exploration in this program is to try to
+make it more efficient.  For example, every time you make a guess,
+<CODE>showclear</CODE> is invoked to redisplay the partially decoded text.  Much
+of this redisplay is unnecessary, since most of the guesses haven't
+changed.  How can you avoid the necessity to examine every letter
+of the cryptogram text?  One possibility would be to keep a list,
+for every letter in the text, of the screen positions in which that
+letter appears.  Then when a new guess is made, the program could
+just type the corresponding cleartext letter at exactly those positions.
+The cost of this technique would be a lot of storage space for the
+lists of positions, plus a slower version of <CODE>showcode</CODE>, which would
+have to create these position lists.
+
+<P>The third direction for further exploration is to find out about more
+complicated ciphers.  For example, suppose you started with a simple
+substitution cipher, but every time the letter A appeared in the cleartext
+you shifted the corresponding cryptogram letters by one.  That is,
+if E is initially represented by R, the first time an A appears you'd
+start using S to represent E.  The second time A appears you'd switch
+to T representing E.  And so on.  The effect of this technique would
+be that a particular cleartext letter is no longer represented by
+a single cryptogram letter all the way through.  Therefore, you can't
+just count the frequencies of the cryptogram letters and assume that
+frequently-used letters represent E and T.  How could you possibly
+decipher such a message?
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch10/v2ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+to crypto :text
+make "text map "uppercase :text
+make "fulltext :text
+make "moretext []
+make "textstack []
+if not procedurep "letterp [copydef "letterp "namep]
+forletters "A "Z "initvars
+make "maxcount 0
+initcount "single
+initcount "triple
+cleartext
+histogram :text
+redisplay "false
+if or guess.single guess.triple [showclear :text]
+parseloop
+end
+
+;; Initialization
+
+to initcount :type
+setlist. :type []
+setcount. :type 0
+end
+
+to initvars :letter
+setcnt :letter 0
+make :letter "| |
+setunbound :letter
+end
+
+;; Histogram
+
+to histogram :text
+foreach :text [localmake "word filter "letterp ?
+               foreach :word "histlet
+               prepare.guess :word]
+end
+
+to histlet :letter
+localmake "cnt 1+cnt :letter
+setcursor list (index :letter) (nonneg 24-:cnt)
+type :letter
+setcnt :letter :cnt
+if :maxcount < :cnt [make "maxcount :cnt]
+end
+
+;; Guessing letters
+
+to prepare.guess :word
+if equalp count :word 1 [tally "single :word]
+if equalp count :word 3 [tally "triple :word]
+end
+
+to tally :type :word
+localmake "countvar word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :countvar 0]
+localmake "count (thing :countvar)+1
+make :countvar :count
+if :count > (count. :type) ~
+   [setcount. :type :count   setmax. :type :word]
+end
+
+to guess.single
+if emptyp (list. "single) [output "false]
+if emptyp butfirst (list. "single) ~
+   [qbind first (list. "single) "A  output "true]
+qbind (max. "single) "A
+qbind (ifelse equalp first (list. "single) (max. "single)
+              [last (list. "single)]
+              [first (list. "single)]) ~
+      "I
+output "true
+end
+
+to guess.triple
+if emptyp (list. "triple) [output "false]
+if :maxcount < (3+cnt last (max. "triple))	 ~
+   [qbind first (max. "triple) "T
+    qbind first butfirst (max. "triple) "H
+    qbind last (max. "triple) "E
+    output "true]
+output "false
+end
+
+;; Keyboard commands
+
+to parseloop
+forever [parsekey uppercase readchar]
+end
+
+to parsekey :char
+if :char = "@ [fullclear stop]
+if :char = "+ [moretext stop]
+if :char = "- [lesstext stop]
+if not letterp :char [beep stop]
+bind :char uppercase readchar
+end
+
+;; Keeping track of guesses
+
+to bind :from :to
+if not equalp :to "| | [if not letterp :to [beep stop]
+                        if boundp :to [beep stop]]
+if letterp thing :from [dark thing :from]
+make :from :to
+fixtop :from
+if letterp :to [light :to]
+showclear :text
+end
+
+to qbind :from :to
+if letterp thing :from [stop]
+make :from :to
+fixtop :from
+light :to
+end
+
+;; Maintaining the display
+
+to redisplay :flag
+cleartext
+showtop
+alphabet
+showcode :text
+if :flag [showclear :text]
+end
+
+;; Top section of display (letter counts and guesses)
+
+to showtop
+setcursor [0 0]
+showrow "A "E
+showrow "F "J
+showrow "K "O
+showrow "P "T
+showrow "U "Y
+showrow "Z "Z
+end
+
+to showrow :from :to
+forletters :from :to [setposn ? cursor   onetop ?]
+print []
+end
+
+to onetop :letter
+localmake "count cnt :letter
+if :count = 0 [type word :letter "|      | stop]
+localmake "text (word :letter "- twocol :count "- thing :letter)
+ifelse :maxcount < :count+3 [invtype :text] [type :text]
+type "| |
+end
+
+to twocol :number
+if :number > 9 [output :number]
+output word 0 :number
+end
+
+to fixtop :letter
+setcursor posn :letter
+onetop :letter
+end
+
+;; Middle section of display (guessed cleartext letters)
+
+to alphabet
+setcursor [6 6]
+forletters "A "Z [ifelse boundp ? [invtype ?] [type ?]]
+end
+
+to light :letter
+setcursor list 6+(index :letter) 6
+invtype :letter
+setbound :letter
+end
+
+to dark :letter
+setcursor list 6+(index :letter) 6
+type :letter
+setunbound :letter
+end
+
+;; Bottom section of display (coded text)
+
+to showcode :text
+make "moretext []
+showcode1 8 0 :text
+end
+
+to showcode1 :row :col :text
+if emptyp :text [make "moretext [] stop]
+if :row > 22 [stop]
+if and equalp :row 16 equalp :col 0 [make "moretext :text]
+if (:col+count first :text) > 37 [showcode1 :row+2 0 :text stop]
+codeword :row :col first :text
+showcode1 :row (:col+1+count first :text) butfirst :text
+end
+
+to codeword :row :col :word
+setcursor list :col :row
+invtype :word
+end
+
+;; Bottom section of display (cleartext)
+
+to showclear :text
+showclear1 8 0 :text 2
+end
+
+to showclear1 :row :col :text :delta
+if emptyp :text [stop]
+if :row > 23 [stop]
+if keyp [stop]
+if (:col+count first :text) > 37 ~
+   [showclear1 :row+:delta 0 :text :delta stop]
+clearword :row :col first :text
+showclear1 :row (:col+1+count first :text) butfirst :text :delta
+end
+
+to clearword :row :col :word
+setcursor list :col :row+1
+foreach :word [ifelse letterp ? [type thing ?] [type ?]]
+end
+
+;; Windowing commands
+
+to fullclear
+cleartext
+showclear1 0 0 :fulltext 1
+print []
+invtype [type any char to redisplay]
+ignore readchar
+redisplay "true
+end
+
+to moretext
+if emptyp :moretext [beep stop]
+push "textstack :text
+make "text :moretext
+redisplay "true
+end
+
+to lesstext
+if emptyp :textstack [beep stop]
+make "text pop "textstack
+redisplay "true
+end
+
+;; Iteration tool for letters
+
+to forletters :from :to :action
+for [lettercode [ascii :from] [ascii :to]] ~
+    [apply :action (list char :lettercode)]
+end
+
+;; Data abstraction (constructors and selectors)
+
+to setbound :letter
+make word "bound :letter "true
+end
+
+to setunbound :letter
+make word "bound :letter "false
+end
+
+to boundp :letter
+output thing word "bound :letter
+end
+
+to setcnt :letter :thing
+make (word "cnt :letter) :thing
+end
+
+to cnt :letter
+output thing (word "cnt :letter)
+end
+
+to setposn :letter :thing
+make (word "posn :letter) :thing
+end
+
+to posn :letter
+output thing (word "posn :letter)
+end
+
+to setcount. :word :thing
+make (word "count. :word) :thing
+end
+
+to count. :word
+output thing (word "count. :word)
+end
+
+to setlist. :word :thing
+make (word "list. :word) :thing
+end
+
+to list. :word
+output thing (word "list. :word)
+end
+
+to setmax. :word :thing
+make (word "max. :word) :thing
+end
+
+to max. :word
+output thing (word "max. :word)
+end
+
+;; Miscellaneous helpers
+
+to index :letter
+output (ascii :letter)-(ascii "A)
+end
+
+to beep
+tone 440 15
+end
+
+to invtype :text
+type standout :text
+end
+
+to nonneg :number
+output ifelse :number < 0 [0] [:number]
+end
+
+;; Sample cryptograms
+
+make "cgram1 [Dzynufqyjulli, jpqhq ok yr hoxpj qnzeujory qceqwj xhrtoyx
+   zw oyjr u trhjptpolq trhln. oynqqn, rzh qceqkkogq eryeqhy tojp
+   whrvlqfk rd qnzeujory uj whqkqyj kofwli fquyk jpuj jpq |xhrty-zwk| nr
+   yrj pugq kzep u trhln. u nqeqyj qnzeujory uofk uj, whqwuhqk drh, u
+   frhq trhjptpolq dzjzhq, tojp u noddqhqyj erffzyoji kwohoj, noddqhqyj
+   reezwujoryk, uyn frhq hqul zjoloji jpuy ujjuoyoyx kjujzk uyn kuluhi.]
+
+make "cgram2 [Lvo vfkp lfzj md opaxflimn iz lm gitokflo fnp zlkonblvon f
+   hmalv'z inilifliuo, fnp fl lvo zfyo liyo lm zoo lm il lvfl vo jnmwz
+   wvfl iz noxozzfkh lm xmco wilv lvo mnbminb fxliuilioz fnp xaglako md
+   zmxiolh, zm lvfl viz inilifliuo xfn to kogoufnl. il iz ftzakp lm
+   lvinj lvfl lviz lfzj xfn to fxxmycgizvop th zm yaxv zillinb in f tms
+   dfxinb dkmnl, yfnicagflinb zhytmgz fl lvo pikoxlimn md pizlfnl
+   fpyinizlkflmkz. lviz iz kflvok f wfh lm kobiyonl fnp tkfinwfzv.]
+
+make "cgram3 [Pcodl hbdcx qxdrdlh yihcodr, hbd rzbiier gxd lih ziyqdhdlh
+   hi hdgzb gwhbdlhcz echdxgzf, xdgnclp gr g ydglr ia ecudxghcil gln
+   zwehcoghcil. gln c niwuh hbgh yirh ia wr jbi rdxciwref xdgn gln jxchd
+   hbd dlpecrb eglpwgpd dodx edgxldn ch uf hbd xiwhd ia "xwl, rqih, xwl"
+   hi rcegr ygxldx.]
+
+make "cgram4 [Jw btn xnsgsyp ejke gfebbcg, dtyjbn fbccsksg, ryu fbccsksg
+   nswcsfpsu pes usgjns, wnssuba, ryu wtptns bw pes qbtyk, pesns zbtcu
+   ls yb knrujyk, yb psgpjyk svfsxp rg r psrfejyk aspebu, ryu yb
+   lcrfilbrnu dtykcsg. jy wrfp, zs rns ksppjyk cbfigpsx gfesutcjyk ryu
+   knrujyk pb pes xbjyp bw pbnptns.]
+</PRE><P>
+
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch10/v2ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch11/crypto.lg b/js/games/nluqo.github.io/~bh/v2ch11/crypto.lg
new file mode 100644
index 0000000..7b1a835
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch11/crypto.lg
@@ -0,0 +1,355 @@
+to crypto :text
+make "text map "uppercase :text
+make "fulltext :text
+make "moretext []
+make "textstack []
+if not procedurep "letterp [copydef "letterp "namep]
+forletters "A "Z "initvars
+make "maxcount 0
+initcount "single
+initcount "triple
+cleartext
+histogram :text
+redisplay "false
+if or guess.single guess.triple [showclear :text]
+parseloop
+end
+
+;; Initialization
+
+to initcount :type
+setlist. :type []
+setcount. :type 0
+end
+
+to initvars :letter
+setcnt :letter 0
+make :letter "| |
+setunbound :letter
+end
+
+;; Histogram
+
+to histogram :text
+foreach :text [localmake "word filter "letterp ?
+               foreach :word "histlet
+               prepare.guess :word]
+end
+
+to histlet :letter
+localmake "cnt 1+cnt :letter
+setcursor list (index :letter) (nonneg 24-:cnt)
+type :letter
+setcnt :letter :cnt
+if :maxcount < :cnt [make "maxcount :cnt]
+end
+
+;; Guessing letters
+
+to prepare.guess :word
+if equalp count :word 1 [tally "single :word]
+if equalp count :word 3 [tally "triple :word]
+end
+
+to tally :type :word
+localmake "countvar word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :countvar 0]
+localmake "count (thing :countvar)+1
+make :countvar :count
+if :count > (count. :type) ~
+   [setcount. :type :count   setmax. :type :word]
+end
+
+to guess.single
+if emptyp (list. "single) [output "false]
+if emptyp butfirst (list. "single) ~
+   [qbind first (list. "single) "A  output "true]
+qbind (max. "single) "A
+qbind (ifelse equalp first (list. "single) (max. "single)
+              [last (list. "single)]
+              [first (list. "single)]) ~
+      "I
+output "true
+end
+
+to guess.triple
+if emptyp (list. "triple) [output "false]
+if :maxcount < (3+cnt last (max. "triple))	 ~
+   [qbind first (max. "triple) "T
+    qbind first butfirst (max. "triple) "H
+    qbind last (max. "triple) "E
+    output "true]
+output "false
+end
+
+;; Keyboard commands
+
+to parseloop
+forever [parsekey uppercase readchar]
+end
+
+to parsekey :char
+if :char = "@ [fullclear stop]
+if :char = "+ [moretext stop]
+if :char = "- [lesstext stop]
+if not letterp :char [beep stop]
+bind :char uppercase readchar
+end
+
+;; Keeping track of guesses
+
+to bind :from :to
+if not equalp :to "| | [if not letterp :to [beep stop]
+                        if boundp :to [beep stop]]
+if letterp thing :from [dark thing :from]
+make :from :to
+fixtop :from
+if letterp :to [light :to]
+showclear :text
+end
+
+to qbind :from :to
+if letterp thing :from [stop]
+make :from :to
+fixtop :from
+light :to
+end
+
+;; Maintaining the display
+
+to redisplay :flag
+cleartext
+showtop
+alphabet
+showcode :text
+if :flag [showclear :text]
+end
+
+;; Top section of display (letter counts and guesses)
+
+to showtop
+setcursor [0 0]
+showrow "A "E
+showrow "F "J
+showrow "K "O
+showrow "P "T
+showrow "U "Y
+showrow "Z "Z
+end
+
+to showrow :from :to
+forletters :from :to [setposn ? cursor   onetop ?]
+print []
+end
+
+to onetop :letter
+localmake "count cnt :letter
+if :count = 0 [type word :letter "|      | stop]
+localmake "text (word :letter "- twocol :count "- thing :letter)
+ifelse :maxcount < :count+3 [invtype :text] [type :text]
+type "| |
+end
+
+to twocol :number
+if :number > 9 [output :number]
+output word 0 :number
+end
+
+to fixtop :letter
+setcursor posn :letter
+onetop :letter
+end
+
+;; Middle section of display (guessed cleartext letters)
+
+to alphabet
+setcursor [6 6]
+forletters "A "Z [ifelse boundp ? [invtype ?] [type ?]]
+end
+
+to light :letter
+setcursor list 6+(index :letter) 6
+invtype :letter
+setbound :letter
+end
+
+to dark :letter
+setcursor list 6+(index :letter) 6
+type :letter
+setunbound :letter
+end
+
+;; Bottom section of display (coded text)
+
+to showcode :text
+make "moretext []
+showcode1 8 0 :text
+end
+
+to showcode1 :row :col :text
+if emptyp :text [make "moretext [] stop]
+if :row > 22 [stop]
+if and equalp :row 16 equalp :col 0 [make "moretext :text]
+if (:col+count first :text) > 37 [showcode1 :row+2 0 :text stop]
+codeword :row :col first :text
+showcode1 :row (:col+1+count first :text) butfirst :text
+end
+
+to codeword :row :col :word
+setcursor list :col :row
+invtype :word
+end
+
+;; Bottom section of display (cleartext)
+
+to showclear :text
+showclear1 8 0 :text 2
+end
+
+to showclear1 :row :col :text :delta
+if emptyp :text [stop]
+if :row > 23 [stop]
+if keyp [stop]
+if (:col+count first :text) > 37 ~
+   [showclear1 :row+:delta 0 :text :delta stop]
+clearword :row :col first :text
+showclear1 :row (:col+1+count first :text) butfirst :text :delta
+end
+
+to clearword :row :col :word
+setcursor list :col :row+1
+foreach :word [ifelse letterp ? [type thing ?] [type ?]]
+end
+
+;; Windowing commands
+
+to fullclear
+cleartext
+showclear1 0 0 :fulltext 1
+print []
+invtype [type any char to redisplay]
+ignore readchar
+redisplay "true
+end
+
+to moretext
+if emptyp :moretext [beep stop]
+push "textstack :text
+make "text :moretext
+redisplay "true
+end
+
+to lesstext
+if emptyp :textstack [beep stop]
+make "text pop "textstack
+redisplay "true
+end
+
+;; Iteration tool for letters
+
+to forletters :from :to :action
+for [lettercode [ascii :from] [ascii :to]] ~
+    [apply :action (list char :lettercode)]
+end
+
+;; Data abstraction (constructors and selectors)
+
+to setbound :letter
+make word "bound :letter "true
+end
+
+to setunbound :letter
+make word "bound :letter "false
+end
+
+to boundp :letter
+output thing word "bound :letter
+end
+
+to setcnt :letter :thing
+make (word "cnt :letter) :thing
+end
+
+to cnt :letter
+output thing (word "cnt :letter)
+end
+
+to setposn :letter :thing
+make (word "posn :letter) :thing
+end
+
+to posn :letter
+output thing (word "posn :letter)
+end
+
+to setcount. :word :thing
+make (word "count. :word) :thing
+end
+
+to count. :word
+output thing (word "count. :word)
+end
+
+to setlist. :word :thing
+make (word "list. :word) :thing
+end
+
+to list. :word
+output thing (word "list. :word)
+end
+
+to setmax. :word :thing
+make (word "max. :word) :thing
+end
+
+to max. :word
+output thing (word "max. :word)
+end
+
+;; Miscellaneous helpers
+
+to index :letter
+output (ascii :letter)-(ascii "A)
+end
+
+to beep
+tone 440 15
+end
+
+to invtype :text
+type standout :text
+end
+
+to nonneg :number
+output ifelse :number < 0 [0] [:number]
+end
+
+;; Sample cryptograms
+
+make "cgram1 [Dzynufqyjulli, jpqhq ok yr hoxpj qnzeujory qceqwj xhrtoyx
+   zw oyjr u trhjptpolq trhln. oynqqn, rzh qceqkkogq eryeqhy tojp
+   whrvlqfk rd qnzeujory uj whqkqyj kofwli fquyk jpuj jpq |xhrty-zwk| nr
+   yrj pugq kzep u trhln. u nqeqyj qnzeujory uofk uj, whqwuhqk drh, u
+   frhq trhjptpolq dzjzhq, tojp u noddqhqyj erffzyoji kwohoj, noddqhqyj
+   reezwujoryk, uyn frhq hqul zjoloji jpuy ujjuoyoyx kjujzk uyn kuluhi.]
+
+make "cgram2 [Lvo vfkp lfzj md opaxflimn iz lm gitokflo fnp zlkonblvon f
+   hmalv'z inilifliuo, fnp fl lvo zfyo liyo lm zoo lm il lvfl vo jnmwz
+   wvfl iz noxozzfkh lm xmco wilv lvo mnbminb fxliuilioz fnp xaglako md
+   zmxiolh, zm lvfl viz inilifliuo xfn to kogoufnl. il iz ftzakp lm
+   lvinj lvfl lviz lfzj xfn to fxxmycgizvop th zm yaxv zillinb in f tms
+   dfxinb dkmnl, yfnicagflinb zhytmgz fl lvo pikoxlimn md pizlfnl
+   fpyinizlkflmkz. lviz iz kflvok f wfh lm kobiyonl fnp tkfinwfzv.]
+
+make "cgram3 [Pcodl hbdcx qxdrdlh yihcodr, hbd rzbiier gxd lih ziyqdhdlh
+   hi hdgzb gwhbdlhcz echdxgzf, xdgnclp gr g ydglr ia ecudxghcil gln
+   zwehcoghcil. gln c niwuh hbgh yirh ia wr jbi rdxciwref xdgn gln jxchd
+   hbd dlpecrb eglpwgpd dodx edgxldn ch uf hbd xiwhd ia "xwl, rqih, xwl"
+   hi rcegr ygxldx.]
+
+make "cgram4 [Jw btn xnsgsyp ejke gfebbcg, dtyjbn fbccsksg, ryu fbccsksg
+   nswcsfpsu pes usgjns, wnssuba, ryu wtptns bw pes qbtyk, pesns zbtcu
+   ls yb knrujyk, yb psgpjyk svfsxp rg r psrfejyk aspebu, ryu yb
+   lcrfilbrnu dtykcsg. jy wrfp, zs rns ksppjyk cbfigpsx gfesutcjyk ryu
+   knrujyk pb pes xbjyp bw pbnptns.]
diff --git a/js/games/nluqo.github.io/~bh/v2ch11/cryptoflow.gif b/js/games/nluqo.github.io/~bh/v2ch11/cryptoflow.gif
new file mode 100644
index 0000000..101fb3d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch11/cryptoflow.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch11/histflow.gif b/js/games/nluqo.github.io/~bh/v2ch11/histflow.gif
new file mode 100644
index 0000000..616fec2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch11/histflow.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch11/preprocess.gif b/js/games/nluqo.github.io/~bh/v2ch11/preprocess.gif
new file mode 100644
index 0000000..316b0d0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch11/preprocess.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch11/v2ch11.html b/js/games/nluqo.github.io/~bh/v2ch11/v2ch11.html
new file mode 100644
index 0000000..2fe248e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch11/v2ch11.html
@@ -0,0 +1,1415 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 11: Example: Cryptographer's Helper</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Cryptographer's Helper</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch11.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch10/v2ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="crypto.lg"><CODE>crypto</CODE></A>
+
+
+<P>
+
+<P>A <EM>cryptogram</EM> is a kind of word puzzle, like a crossword puzzle.
+Instead of definitions, though, a cryptogram gives you the actual
+words of a quotation, but with each letter replaced with a different
+letter.  For example, each letter A in the original text might be
+replaced with an F.  Here is a sample cryptogram:
+
+<P>
+LB RA, BT YBL LB RA: LJGL CQ LJA FUAQLCBY: KJALJAT 'LCQ YBRXAT CY
+LJA DCYP LB QUSSAT LJA QXCYWQ GYP GTTBKQ BS BULTGWABUQ SBTLUYA, BT
+LB LGHA GTDQ GWGCYQL G QAG BS LTBURXAQ, GYP RM BIIBQCYW AYP LJAD?
+
+<P>
+
+<P>The punctuation marks and the spaces between words are the
+same in this cryptogram as they are in the original (&quot;clear&quot;) text.
+
+
+<P>
+
+
+A cryptogram is a kind of secret code.  The formal name for this particular
+kind of code is a <EM>simple substitution cipher.</EM>  Strictly speaking,
+a <EM>code</EM> is a method of disguising a message that uses a dictionary
+of arbitrarily chosen replacements for each possible word.  A foreign
+language is like a code.  A <EM>cipher</EM> is a method in which a uniform
+algorithm or formula is used to translate each word.  A <EM>substitution</EM>
+cipher is one in which every letter (or sometimes every pair of letters,
+or some such grouping) is replaced by a disguised equivalent.  A <EM>
+simple</EM> substitution cipher is one in which each letter has a single
+equivalent replacement, which is used throughout the message.  (A
+more complicated substitution cipher might be something like this:
+the first letter A in the message is replaced with F, the second A
+is replaced with G, the third with H, and so on.)
+
+<P>Years ago, Arthur Conan Doyle and Edgar Allen Poe were able to write
+mystery stories in which simple substitution ciphers were used by
+characters who really wanted to keep a message secret.  Today, partly
+because of those stories, too many people know how to &quot;break&quot; such
+ciphers for them to be of practical use.  Instead, these ciphers are
+used as word puzzles.
+
+<P>The technique used for decoding a cryptogram depends on the fact that
+some letters are more common than others.  The letter A is much more
+common in English words than the letter Z.  If, in a cryptogram, the
+letter F occurs many times, it's more likely to represent a letter
+like A in the original text than a letter like Z.
+
+<P>The most commonly used letter in English is E, by a wide margin. 
+T is in second place, with A and O nearly tied for third.  I, N, and
+R are also very commonly used.  These rankings apply to <EM>large</EM>
+texts.  In the usual short cryptogram, the most frequent letter doesn't
+necessarily represent E.  But the letter that represents E will probably
+be among the two or three most frequent.
+
+<P>Before reading further, you might want to try to solve the cryptogram
+shown above.  Make a chart of the number of times each letter appears,
+then use that information to make guesses about which letter is which.
+As you're working on it, make a note of what other kinds of information
+are helpful to you.
+
+<P>This project is a program to help you solve cryptograms.  The program
+doesn't solve the puzzle all by itself; it doesn't know enough about
+English vocabulary.  But it does some of the more boring parts of
+the job automatically, and can make good guesses about some of the
+letters.
+
+<P>The top-level procedure is <CODE>crypto</CODE> .  It takes one input, a list
+whose members are the words of the cryptogram.  Since these lists are long
+and easy to make mistakes in, you'll probably find it easier to type the
+cryptogram into the Logo editor rather than directly at a question mark
+prompt.  You might make the list be the value of a variable, then use that
+variable as the input to <CODE>crypto</CODE>.  (The program file for this
+project includes four such variables, named <CODE>cgram1</CODE> through <CODE>
+cgram4</CODE>, with sample cryptograms.)
+
+<P><CODE>Crypto</CODE> begins by going through the coded text, letter by letter. 
+It keeps count of how often each letter is used.  You can keep track
+of this counting process because the program draws a <EM>histogram</EM>
+on the screen as it goes.  A histogram is a chart like the one
+at the top of the next page.
+
+<HR>
+
+<P>
+<PRE>           L
+ B         L
+AB         L
+AB         L
+AB         L
+AB         L
+AB         L    Q
+AB         L    Q       Y
+AB    G    L    Q  T    Y
+AB    G    L    Q  T    Y
+AB    G    L    Q  T    Y
+ABC   G    L    Q  T    Y
+ABC   G  J L    Q  T    Y
+ABC   G  J L    Q  TU   Y
+ABC   G  J L    QRSTU   Y
+ABC   G  J L   PQRSTU W Y
+ABCD  G  J L   PQRSTU WXY
+ABCD  G IJKL   PQRSTU WXY
+ABCD FGHIJKLM  PQRSTU WXY
+</PRE>
+
+<P>  Histogram
+
+<HR>
+
+<P><PRE><U>A-17-E</U> <U>B-18- </U> C-08-  D-03-  E
+F-01-  G-11-A H-01-  I-02-  J-07-H
+K-02-  <U>L-19-T</U> M-01-  N      O
+P-04-  Q-13-  R-05-  S-05-  T-11-
+U-06-  V      W-04-  X-03-  Y-12-
+Z
+      <U>A</U>BCD<U>E</U>FG<U>H</U>IJKLMNOPQRS<U>T</U>UVWXYZ
+
+<U>LB RA, BT YBL LB RA: LJGT CQ LJA</U>
+T   E,      T T   E: THAT    THE
+<U>FUAQLCBY: KJALJAT 'LCQ YBRXAT CY LJA</U>
+  E T   :  HETHE  'T       E     THE
+<U>DCYP LB QUSSAT LJA QXCYWQ GYP GTTBKQ</U>
+     T      E  THE        A   A
+<U>BS BULTGWABUQ SBTLUYA, BT LB LGHA</U>
+     T A E       T  E,    T  TA E
+<U>GTDQ GWGCYQL G QAG BS LTBURXAQ, GYP</U>
+A    A A   T A  EA    T     E , A
+<U>RM BIIBQCYW AYP LJAD?</U>
+            E   THE ?
+</PRE>
+
+<P>  Screen display
+
+<HR>
+
+<P>A histogram is a kind of graph, but it's different from
+the <EM>continuous</EM> graphs you use in algebra.  Histograms are used
+to show quantities of <EM>discrete</EM> things, like letters of the alphabet.
+
+<P>The main reason the program draws the histogram is that it needs to
+know the frequencies of occurrence of the letters for later use. 
+When I first wrote the program, it counted the letters without printing
+anything on the screen.  Since this counting is a fairly slow process,
+it got boring waiting for the program to finish.  The histogram display
+is a sort of video thumb-twiddling to keep you occupied while the
+program is creating an invisible histogram inside itself.
+
+<P>By the way, since there are only 24 lines on the screen, the top part
+of the histogram may be invisible if the cryptogram is long enough
+to use some letters more than 24 times.
+
+<P>The shape of this histogram is pretty typical.  A few letters are
+used many times, while most letters are clumped down near the bottom.
+In this case, A, B, and L stand out.  You might guess that they represent
+the most commonly used letters: E, T, and either A or O.  But you
+need more information to be able to guess which is which.
+
+<P>
+
+
+After it finishes counting letters, the program presents a screen
+display like the one shown above.
+The information provided in this display comes in three
+parts.  At the top is an alphabetical list of the letters in the cryptogram.
+For each letter, the program displays the number of times that letter
+occurs in the enciphered text.  For example, the letter P occurs four
+times.  The letter that occurs most frequently is highlighted by
+showing it in reverse video characters, represented here with
+underlined characters.  In
+this example, the most frequently used letter is L, with 19 occurrences.
+Letters with occurrence counts within two of the maximum are also
+highlighted.  In the example, A with 17 and B with 18 are highlighted.
+If a letter does not occur in the cryptogram at all, no count is given.
+In the example, there is no E in the enciphered text.
+
+<P>The top part of the display shows one more piece of information: if
+either the program or the person using it has made a guess as to the
+letter that a letter represents, that guess is shown after the frequency
+count.  For example, here the program has guessed that the letter
+L in the cryptogram represents the letter T in the clear text.
+(You can't tell from the display that this guess was made by the program
+rather than by the person using it.  I just happen to know that that's
+what happened in this example!)
+
+<P>The next section of the display is a single line showing all the letters
+of the alphabet.  In this line, a letter is highlighted if a guess
+has been made linking some letter in the cryptogram with that letter
+in the clear text.  In other words, this line shows the linkages in
+the reverse direction from what is shown in the top section of the
+display.  For example, I just mentioned that L in the cryptogram corresponds
+to T in the clear text.  In the top part of the display, we can find
+L in alphabetical order, and see that it has a T linked to it.  But
+in the middle part of the display, we find <EM>T</EM>, not L, in alphabetical
+order, and discover that <EM>something</EM> is linked to it.  (It turns
+out that we don't usually have to know which letter corresponds to
+T.)
+
+<P>Here is the purpose of that middle section of the display:  Suppose
+I am looking at the second word of the cryptogram, RA.  We've already
+guessed that A represents E, so this word represents something-E.
+Suppose I guess that this word is actually HE.  This just happens
+to be the first two-letter word I think of that ends in E.  So I'd
+like to try letting R represent H.  Now I look in the middle section
+of the display, and I see that H is already highlighted.  So some
+other letter, not R, already represents H.  I have to try a different
+guess.
+
+<P>The most important part of the display is the bottom section.  Here,
+lines of cryptogram alternate with their translation into clear text,
+based on the guesses we've made so far.  The cryptogram lines are
+highlighted, just to make it easy to tell which lines are which. 
+The program ensures that each word entirely fits on a single line;
+there is no wrapping to a new line within a single word.
+
+<P>There is room on the screen for eight pairs of lines.  If the cryptogram
+is too big to fit in this space, only a portion of it will be visible
+at any time.  In a few paragraphs I'll talk about moving to another
+section of the text.
+
+<P>The program itself is very limited in its ability to guess letters.
+For the most part, you have to do the guessing yourself when you use
+it.  There are three guessing rules in the program:
+
+<P>
+<P><P>
+
+<OL><LI> The most frequently occurring single-letter word is taken to represent
+A.
+<LI> Another single-letter word, if there is one, is taken to represent
+I.
+<LI> The most frequently occurring three-letter word is taken to represent
+THE, but only if its last letter is one of the ones highlighted in
+the top part of the display.
+
+<P></OL>
+<P>
+
+<P>In the example, the only single-letter word in the cryptogram
+is G, in the next-to-last line.  The program, following rule 1, has
+guessed that G represents A.  Rule 2 did not apply, because there
+is no second single-letter word.  The most frequently used three-letter
+word is LJA, which occurs three times.  The last letter of that word,
+A, is highlighted in the top section because it occurs 17 times. 
+Therefore, the program guesses that L represents T, J represents H,
+and A represents E.
+
+<P>Of course you understand that these rules are not infallible; they're
+just guesses.  (A fancy name for a rule that works most of the time
+is a <EM>heuristic.</EM>  A rule that works all the time is called an
+<EM>algorithm.</EM>)  For example, the three-letter word GYP appears
+twice in the cryptogram, only once less often than LJA.  Maybe GYP
+is really THE.  However, the appearance of the word THAT in the translation
+of the first line is a pretty persuasive confirmation that the program's
+rules have worked out correctly in this case.
+
+<P>If you didn't solve the cryptogram on your own, at my first invitation,
+you might want to take another look at it, based on the partial solution
+you now have available.  Are these four letters (A, E, I, and T) enough
+to let you guess the rest?  It's a quotation you'll probably recognize.
+
+<P>Once this display is on the screen, you can make further guesses by
+typing to the program.  For example, suppose you decide that the last
+word of the cryptogram, LJAD, represents THEM.  Then you want to guess
+that D represents M.  To do that, type the letters D and M in that
+order.  Don't use the RETURN key.  Your typing will not be echoed
+on the screen.  Instead, three things will happen.  First, the entry
+in the top section of the display that originally said
+
+<P><PRE>D-03-
+</PRE>
+
+<P>will be changed to say
+
+<P><PRE>D-03-M
+</PRE>
+
+<P>Second, the letter M will be highlighted in the alphabet
+in the second section of the display.  Finally, the program will type
+an M underneath every D in the cryptogram text.
+
+<P>If you change your mind about a guess, you can just enter a new guess
+about the same cryptogram letter.  For example, if you decide that
+LJAD is really THEY instead of THEM, you could just type D and Y.
+Alternatively, if you decide a guess was wrong but you don't have
+a new guess, type the cryptogram letter (D in this example) and then
+the space bar.
+
+<P>If you guess that D represents M, and then later you guess that R also
+represents M, the program will complain at you by beeping or by flashing
+the screen, depending on what your computer can do.  If you meant
+that R should represent M <EM>instead of</EM> D representing M, you must
+first undo the latter guess by typing D, space bar, R, and M.
+
+<P>The process of redisplaying the clear text translation of the cryptogram
+after each guess takes a fairly long time, since the program has to
+look up each letter individually.  Therefore, the program is written
+so that you don't have to wait for this redisplay to finish before
+guessing another letter representation.  As soon as you type any key
+on the keyboard, the program stops retyping the clear text.  Whatever
+key you typed is taken as the first letter of a two-letter guess command.
+
+<P>If the cryptogram is too long to fit on the screen, there are three
+other things you can type to change which part of the text is
+visible.  Typing a plus sign (+) eliminates the first four lines of
+the displayed text (that is, four lines of cryptogram and four corresponding
+lines of cleartext) and brings in four new lines at the end.  Typing
+a minus sign (-) moves backwards, eliminating the four lines nearest
+the bottom of the screen and bringing back four earlier lines at the
+top.  These <EM>windowing</EM> commands have no effect if you are already
+seeing the end of the text (for +) or the beginning of the text (for
+-).
+
+<P>The third command provided for long cryptograms is the atsign
+(@) character.  This is most useful after you've figured out all of
+the letter correspondences.  It clears the screen and displays only
+the clear text, without the letter frequencies, table of correspondences,
+or the enciphered text.  This display allows 23 lines of clear text
+to fit on the screen instead of only eight.  If you don't have the
+solution exactly right, you can type any character to return to the
+three-part display and continue guessing.
+
+<P>The program never stops; even after you have made guesses
+for all the letters, you might find an error and change your mind
+about a guess.  When you're done, you stop the program with control-C
+or command-period or whatever your computer requires.
+
+<P>In the complete listing at the end of this chapter, there are a few
+cryptograms for you to practice with.  They are excerpted from one
+of my favorite books, <EM>Compulsory Miseducation</EM> by
+Paul Goodman.
+
+<P><H2>Program Structure</H2>
+
+<P>There are about 50 procedures in this program.  These procedures can be
+roughly divided into several purposes:
+
+<P>
+<UL>
+<LI>initialization
+<LI>frequency counting and displaying the histogram
+<LI>guessing letters automatically
+<LI>reading user commands
+<LI>keeping track of guesses
+<LI>top section of display (frequencies)
+<LI>middle section of display (alphabet)
+<LI>bottom section of display (cryptogram text and cleartext)
+<LI>windowing and full-text displays
+<LI>data abstraction and other helper procedures
+</UL>
+
+<P>The diagram on the next page shows superprocedure/subprocedure relationships within
+the main categories.  (Helper procedures aren't shown, to make the
+diagram more readable.)  The bottom half of the diagram has the
+procedures that are concerned primarily with presenting information
+on the screen.  <CODE>Redisplay</CODE>, near the center of the diagram, is
+called whenever the entire screen display must be redrawn: when the
+initialization part of the program is finished, and whenever the user
+chooses a new portion of the text to display.  When the display
+changes slightly, because a new guess is made, procedures such as
+<CODE>fixtop</CODE>, <CODE>light</CODE>, and <CODE>dark</CODE> are used instead of redrawing
+everything.
+
+<P>
+
+<CENTER><IMG SRC="cryptoflow.gif" ALT="figure: cryptoflow"></CENTER>
+
+
+<P><CODE>Bind</CODE> is the most important procedure, because it records and displays
+each new guess.  As the diagram shows, it invokes several subprocedures to
+update the display; more importantly, it changes the values of several
+variables to keep track of the new guess.  There is also a similar procedure
+<CODE>qbind</CODE> that's used when a guess is made by the program rather than by
+the user.  (The &quot;Q&quot; stands for either &quot;quick&quot; or &quot;quiet,&quot; since this
+version never has to undo an old guess, omits some error checking, and can't
+beep because there are no errors in automatic guesses.)  If you ignore
+initialization and displaying information, the entire structure of the
+program is that <CODE>crypto</CODE> calls <CODE>parseloop</CODE>, which repeatedly calls
+<CODE>parsekey</CODE>, which calls <CODE>bind</CODE> to record a guess.
+
+<P>Unfortunately, it's not so easy in practice to divide up the
+procedures into groups, with a single purpose for each group.  Several
+procedures carry out two tasks at once.  For example, <CODE>light</CODE> and
+<CODE>dark</CODE> have those names because they switch individual letters
+between normal and inverse video in the alphabet display in the middle
+part of the screen.  But those procedures also set variables to remember
+that a particular cleartext letter has or hasn't been guessed, so they
+are also carrying out part of <CODE>bind</CODE>'s job, keeping track of guesses.
+
+<P><H2>Guided Tour of Global Variables</H2>
+
+<P><CODE>Crypto</CODE> uses many global variables to hold the information it needs.
+This includes information about individual letters, about
+words, and about the text as a whole.
+
+<P>There are several sets of 26 variables, one for each letter of the
+alphabet.  For these variables, the last letter of the variable name
+is the letter about which the variable holds information.  In the
+table that follows, the italic <EM>x</EM> in each name represents
+any letter.
+
+<P><TABLE><TR><TH align="right" valign="top"><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">Cleartext letter that is guessed to match <EM>x</EM>
+in the cryptogram.
+<TR><TH align="right" valign="top"><CODE>bound</CODE><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>True</CODE> if <EM>x</EM> appears in the
+<EM>cleartext</EM> as guessed so far; <CODE>false</CODE> otherwise.
+<TR><TH align="right" valign="top"><CODE>cnt</CODE><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Count of how many times <EM>x</EM> appears in the cryptogram.
+<TR><TH align="right" valign="top"><CODE>posn</CODE><EM>x</EM><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Screen cursor position where the frequency count
+and guess for <EM>x</EM> is shown in the top part of the display.
+</TABLE>
+
+<P>These variables are set up initially by <CODE>initvars</CODE>, except
+for the <CODE>posn</CODE> variables, which are set by <CODE>showrow</CODE>.  The
+variables with single-letter names start out with a space character as their
+value.  This choice allows <CODE>showclear</CODE> to use <CODE>thing :letter</CODE>
+as the thing to type for every letter in the cryptogram.
+If no guess has been made for a letter, it will be displayed as a
+blank space in the partially-decoded version of the text.
+
+<P>Here are the variables that have to do with <EM>words</EM> in the cryptogram
+text.  These variables are needed for the part of the program that
+automatically makes guesses, by looking for words that might represent
+A, I, and THE in the cleartext.  In the following variable names,
+<EM>y</EM> represents either a one-letter word or a three-letter word
+in the cryptogram text.
+
+<P><TABLE><TR><TH align="right" valign="top"><CODE>count.single</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the most frequent
+one-letter word.
+<TR><TH align="right" valign="top"><CODE>count.triple</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the most frequent
+three-letter word.
+<TR><TH align="right" valign="top"><CODE>list.single</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">List of one-letter words in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>list.triple</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">List of three-letter words in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>max.single</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The most frequent one-letter word in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>max.triple</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The most frequent three-letter word in the cryptogram text.
+<TR><TH align="right" valign="top"><CODE>single</CODE><EM>y</EM>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the one-letter word <EM>y.</EM>
+<TR><TH align="right" valign="top"><CODE>triple</CODE><EM>y</EM>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the three-letter word <EM>y.</EM>
+</TABLE>
+
+<P>These variables are used only during
+the initial histogram counting, to keep track of which one-letter
+word and which three-letter word are the most frequent in each category.
+Once the most frequently occurring words have been determined, the
+actual count is no longer important.
+
+<P>Finally, there are some variables that contain information about
+the text as a whole:
+
+<P><TABLE><TR><TH align="right" valign="top"><CODE>fulltext</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The complete cryptogram text.
+<TR><TH align="right" valign="top"><CODE>text</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The part of the cryptogram that is displayed
+on the screen right now.
+<TR><TH align="right" valign="top"><CODE>moretext</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The part of the text that should be displayed
+after a <CODE>+</CODE> command.
+<TR><TH align="right" valign="top"><CODE>textstack</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">A list of old values of <CODE>text</CODE>, to be restored
+if the <CODE>-</CODE> command is used.
+<TR><TH align="right" valign="top"><CODE>maxcount</CODE>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;
+<TD valign="top">The number of occurrences of the most frequently used
+letter.
+</TABLE>
+
+<P><CODE>:Maxcount</CODE> is used to know which letters should be highlighted
+in the top section of the display.  <CODE>:Text</CODE> is used by <CODE>showcode</CODE> and
+<CODE>showclear</CODE> to maintain the bottom section of the display.  <CODE>
+Fulltext</CODE>, <CODE>moretext</CODE>, and <CODE>textstack</CODE> are part of the windowing
+feature.  At first, <CODE>text</CODE> is equal to <CODE>fulltext</CODE>, and <CODE>
+textstack</CODE> is empty.  <CODE>Moretext</CODE> contains the portion of the text
+starting on the fifth line that is displayed, providing there is some text
+at the end of the cryptogram that didn't fit on the screen.  If the end of
+the text is visible, then <CODE>moretext</CODE> is empty.  Here is what happens if
+you type the plus sign:
+
+<P><PRE>to moretext
+if emptyp :moretext [beep stop]
+push &quot;textstack :text
+make &quot;text :moretext
+redisplay &quot;true
+end
+</PRE>
+
+<P>If <CODE>:moretext</CODE> is empty, there is no more text to display,
+and the procedure stops with a complaint.  Otherwise, we want
+to remember what is now in <CODE>:text</CODE> in case of a later <CODE>-</CODE> command, and
+we want to change the value of <CODE>text</CODE> to the version starting four lines
+later that is already in <CODE>:moretext</CODE>.
+
+<P>In the solitaire project, I used a lot of <CODE>local</CODE> instructions in the
+top-level procedures to avoid creating global variables.  In this project,
+I didn't bother.  There's no good reason why I was lazier here than there;
+you can decide for yourself whether you think it's worth the effort.
+
+<P><H2>What's In a Name?</H2>
+
+<P>In revising this program for the second edition, I was struck by the ways
+in which bad choices of procedure or variable names had made it needlessly
+hard to read.  Changing names was one of the three main ways in which I
+changed the program.  (The other two were an increased use of data
+abstraction and the introduction of iteration tools to eliminate some
+helper procedures.)
+
+<P>I'll start with a simple example.  As I've mentioned, when I first wrote
+the program it didn't draw the histogram on the screen during the initial
+counting of letter frequencies.  Since the top part of the screen display
+is primarily a presentation of those frequencies, I thought of that top
+part as the program's &quot;histogram&quot; even though it doesn't have the form
+of a real histogram.  That's why, in the first edition, the procedures
+that maintain the top part of the display were called <CODE>showhist</CODE>,
+<CODE>fixhist</CODE>, and so on; when I added the <CODE>histogram</CODE> and <CODE>histlet</CODE>
+procedures that draw the real histogram, it was hard to keep track of
+which &quot;<CODE>hist</CODE>&quot; names were part of the initial histogram and which
+were part of the letter frequency chart at the top of the program's normal
+screen display.  I've now changed <CODE>showhist</CODE> to <CODE>showtop</CODE>,
+<CODE>fixhist</CODE> to <CODE>fixtop</CODE>, and so on.  The procedures with <CODE>hist</CODE>
+in their names are about the real histogram, and the ones with <CODE>top</CODE>
+in their names are about the frequency chart.
+
+<P>Here's another example.  In several parts of the program, I had to
+determine whether a character found in the cryptogram text is a letter
+or a punctuation mark.  The most straightforward way to do this would
+be an explicit check against all the letters in the alphabet:
+
+<P><PRE>to letterp :char
+output memberp :char &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ
+end
+</PRE>
+
+<P>But comparing the character against each of the 26 letters
+would be quite slow.  Instead, I took advantage of the fact that there
+happen to be variables in the program named after each letter.  That is,
+there's a variable <CODE>A</CODE>, a variable <CODE>B</CODE>, and so on, but there
+aren't variables named after punctuation characters.  Therefore, I could use
+the Logo primitive <CODE>namep</CODE> to see whether or not the character I'm
+considering is a variable name, and if so, it must be a letter.  The
+first edition version of <CODE>crypto</CODE> is full of instructions
+of the form
+
+<P><PRE>if namep :char ...
+</PRE>
+
+<P>This is clever and efficient, but not at all self-documenting.
+Someone reading the program would have no way to tell that I'm using
+<CODE>namep</CODE> to find out whether a character is a letter.  The solution
+was to add an instruction to the initialization in <CODE>crypto</CODE>:
+
+<P><PRE>copydef &quot;letterp &quot;namep
+</PRE>
+
+<P>The <CODE>copydef</CODE> primitive is used to give a new name to
+an existing procedure.  (The old name continues to work.)  The existing
+procedure can be either primitive or user-defined.  The new name is not
+saved by the <CODE>save</CODE> command; that's why <CODE>crypto</CODE> performs the
+<CODE>copydef</CODE> instruction each time.
+
+<P>Probably the worst example of bad naming was in the <CODE>tally</CODE> procedure.
+This procedure has a complicated job; it must keep track of the most
+common one-letter and three-letter words, in preparation for the program's
+attempts to make automatic guesses for A, I, and THE.  Here is the version
+in the first edition:
+
+<P><PRE>to tally :type :word
+local &quot;this
+make &quot;this word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :this 0]
+make :this sum 1 thing :this
+make &quot;this thing :this
+if :this &gt; (count. :type) ~
+   [setcount. :type :this  make (word &quot;max. :type) :word]
+end
+</PRE>
+
+<P>The input named <CODE>type</CODE> is either the word <CODE>single</CODE> or
+the word <CODE>triple</CODE>.  One thing that makes this procedure hard to read
+is the local variable named <CODE>this</CODE>.  What a vague name!  This what?
+Is it this word, or this letter, or this word length, or this guess?  To
+make things worse, partway through the procedure I recycled the same
+name to hold a different value.  At first, <CODE>:this</CODE> is a word that
+will be used as the name of a variable, counting the number of times
+a given word appears.  For example, if the word YBL appears in the
+cryptogram, then <CODE>tally</CODE> will create a variable named <CODE>tripleybl</CODE>
+whose value will be the number of times that YBL occurs in the text.
+The value of <CODE>this</CODE> will be the word <CODE>tripleybl</CODE>, so the
+expression <CODE>thing :this</CODE> represents the actual number.  Then,
+near the end of the procedure, I used the instruction
+
+<P><PRE>make &quot;this thing :this
+</PRE>
+
+<P>From then on, <CODE>:this</CODE> is the number itself, not the
+variable name!  It's really hard to read a procedure in which the
+same name is used to mean different things in different instructions.
+
+<P>Here's the new version:
+
+<P><PRE>to tally :type :word
+localmake &quot;countvar word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :countvar 0]
+localmake &quot;count (thing :countvar)+1
+make :countvar :count
+if :count &gt; (count. :type) ~
+   [setcount. :type :count   setmax. :type :word]
+end
+</PRE>
+
+<P>The name <CODE>this</CODE> is gone.  Instead, I've first created
+a local variable named <CODE>countvar</CODE> whose value is the name of the
+count variable.  Then I create another local variable named <CODE>count</CODE>
+that contains the actual count.  These names are much more descriptive
+of the purposes of the two variables.
+
+<P>Another change in the new version is a more consistent use of
+data abstraction.  The original version used the constructor
+<CODE>setlist.</CODE> and the selector <CODE>list.</CODE> to refer to the
+list of all known cryptogram words of the appropriate length (the
+variable <CODE>list.single</CODE> or <CODE>list.triple</CODE>), but
+used the instruction
+
+<P><PRE>make (word &quot;max. :type) :word
+</PRE>
+
+<P>to construct the variable containing the most frequently
+appearing word of that length.  The new version uses a constructor
+named <CODE>setmax.</CODE> that's analogous to the <CODE>setlist.</CODE> constructor.
+
+<P>Rethinking the names of procedures can reorganize your ideas about how
+to group the procedures into categories.  For example, in the first
+edition I was upset about the fact that <CODE>historgram</CODE>, whose job
+is to count letter frequencies and draw the histogram of those counts,
+also invokes prepare.guess, whose job is to count <EM>word</EM> frequencies
+in preparation for automatic guessing.
+
+<P><CENTER><IMG SRC="histflow.gif" ALT="figure: histflow"></CENTER>
+
+<P>The reason for this mixture of tasks is efficiency.  To prepare
+the histogram, the program must extract the letters (omitting punctuation)
+from each word of the text, and count them.  To prepare for guessing
+words, the program must extract the letters from each word, and count
+the occurrences of the letters-only words.  I could have done these
+things separately:
+
+<P><PRE>to histogram :text
+foreach :text [foreach (filter &quot;letterp ?) &quot;histlet]
+end
+
+to count.words :text
+foreach :text [prepare.guess (filter &quot;letterp ?)]
+end
+</PRE>
+
+<P>But it seemed better to scan the words of the text just
+once, and extract the letters from each word just once:
+
+<P><PRE>to histogram :text
+foreach :text [localmake &quot;word filter &quot;letterp ?
+               foreach :word &quot;histlet
+               prepare.guess :word]
+end
+</PRE>
+
+<P>But the punch line of this story is that I could avoid the
+confusing jump between boxes--the feeling of mixing two tasks--merely
+by changing the name of the <CODE>histogram</CODE> procedure to something
+neutral like <CODE>preprocess</CODE>.  Then the structure would be
+
+<P><CENTER><IMG SRC="preprocess.gif" ALT="figure: preprocess"></CENTER>
+
+<P>Now we have one initialization procedure that includes invocations
+for two separate kinds of preprocessing.  It's not
+really the program structure that is inappropriate, but only using the
+name <CODE>histogram</CODE> for a procedure whose job includes more than the
+creation of the histogram.
+
+<P>
+
+<P><H2>Flag Variables</H2>
+
+
+<P>Procedure <CODE>redisplay</CODE> has the job of redrawing the entire screen when
+there is a major change to what should be shown, like moving to a different
+window in the cryptogram text.
+
+<P><PRE>to redisplay :flag
+cleartext
+showtop
+alphabet
+showcode :text
+if :flag [showclear :text]
+end
+</PRE>
+
+<P>The input to <CODE>redisplay</CODE> is a <EM>flag variable.</EM>  It must
+have the value <CODE>true</CODE> or <CODE>false</CODE>.  (The name comes from the flags on
+mailboxes, which are either up or down to indicate whether or not there is
+mail in the box.)  It's there because <CODE>redisplay</CODE>
+has two slightly different
+jobs to do at two different points in the program.  First, <CODE>redisplay</CODE>
+is invoked by <CODE>crypto</CODE>, the top-level procedure, to draw the screen
+initially.  At this time, no letters have been guessed yet.  Therefore, it
+is not necessary to invoke <CODE>showclear</CODE> (which indicates
+the guessed letters in the bottom part of the display).
+<CODE>Crypto</CODE> executes the instruction
+
+<P><PRE>redisplay &quot;false
+</PRE>
+
+<P>to avoid that unnecessary work.  <CODE>Redisplay</CODE> is also invoked
+by <CODE>moretext</CODE>, <CODE>lesstext</CODE>, and <CODE>showclear</CODE>.  Each of these
+procedures uses the instruction
+
+<P><PRE>redisplay &quot;true
+</PRE>
+
+<P>to include <CODE>showcode</CODE>.  If the flag variable
+weren't used, there would have to be two different versions
+of <CODE>redisplay</CODE>.
+
+<P>I used the latter technique in the procedures <CODE>bind</CODE> and <CODE>
+qbind</CODE>.  These could also have been one procedure with a flag variable
+input.  The advantage of the technique used in <CODE>redisplay</CODE> is that it
+makes the program easier to read by reducing the number of procedures, and
+keeping similar purposes together.  The advantage of using two procedures is
+that it's a little faster, because you don't have to test the flag variable
+with <CODE>if</CODE>.
+
+<P>A flag variable is somewhat analogous to a <EM>predicate,</EM> a
+procedure that always outputs <CODE>true</CODE> or <CODE>false</CODE>.  The
+advantage of using these particular values for flag variables is that
+they're easy to test; you can say
+
+<P><PRE>if :flag [do.something]
+</PRE>
+
+<P>whereas, if you used some other pair of values like <CODE>yes</CODE> and
+<CODE>no</CODE>, you'd have to say
+
+<P><PRE>if equalp :flag &quot;yes [do.something]
+</PRE>
+
+<P>Some people like to give flag variables names ending with <CODE>p</CODE>,
+as in the convention for predicates.  (The special variable <CODE>redefp</CODE>
+that controls redefinition of primitives in some versions of Logo,
+including Berkeley Logo, is an
+example.)  I'm somewhat uncomfortable with that practice because to me it
+raises a confusion about whether a particular word is the name of a variable
+or the name of a procedure.  I'd rather put <CODE>flag</CODE> in the names of flag
+variables.
+
+<P>The 26 <CODE>bound</CODE><EM>x</EM> variables in this program are also flag
+variables; each is <CODE>true</CODE> if the corresponding letter has been
+guessed as the cleartext half of a binding.  They don't have &quot;flag&quot;
+in their names, but their names aren't used directly in most of the
+program anyway.  Instead they are hidden behind data abstraction procedures.
+<CODE>Setbound</CODE> and <CODE>setunbound</CODE> are used to set any such variable
+<CODE>true</CODE> or <CODE>false</CODE>, respectively; the selector <CODE>boundp</CODE> alerts
+you by the P in its name that it's a predicate.
+
+<P><H2>Iteration Over Letters</H2>
+
+<P>One of the ways in which I simplified the program for this edition was
+to replace some recursive helper procedures with invocations of <CODE>
+foreach</CODE>.  At several points in the program, some action must be taken
+for each letter in a word, or for each word in the text.
+
+<P>Another kind of iteration problem that was not so easily solved by
+the standard higher order procedures in Berkeley Logo was one in which
+some action must be taken, not for each letter in a word, but for
+each letter in the alphabet, or for some subset of the alphabet, as
+in the case of <CODE>showrow</CODE>, which displays one row of the top part
+of the screen, with information about five consecutive letters.
+Of course these problems could be solved with instructions like
+
+<P><PRE>foreach &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ [...]
+</PRE>
+
+<P>but that seemed unaesthetic to me.  I wanted to be able to
+specify the starting and ending letters, as in this example:
+
+<P><PRE>to alphabet
+setcursor [6 6]
+forletters &quot;A &quot;Z [ifelse boundp ? [invtype ?] [type ?]]
+end
+</PRE>
+
+<P>(The job of <CODE>alphabet</CODE> is to generate the middle
+part of the screen display, which is all of the letters of the
+alphabet, in order, with each letter in inverse video if that
+letter has been guessed as part of the cleartext.)
+
+<P>The difficulty in implementing <CODE>forletters</CODE> is to get from one
+letter to the next.  How does a program know that the letter after
+A is B?  Here is my solution:
+
+<P><PRE>to forletters :from :to :action
+for [lettercode [ascii :from] [ascii :to]] ~
+    [apply :action (list char :lettercode)]
+end
+</PRE>
+
+<P>The operation <CODE>ascii</CODE>
+takes a letter (or other character)
+as input.  Its output is the number that represents that letter in
+the computer's memory.  Most computers use the same numbers to represent
+characters; this standard representation is called ASCII, for
+American Standard Code for Information Interchange.  (It's
+pronounced &quot;ask E.&quot;)  By using <CODE>ascii</CODE> to translate the starting
+and ending letters into numeric codes, I've transformed the problem
+into one that can be solved using the standard <CODE>for</CODE> tool that
+allows an action to be carried out for each number in a given range.
+
+<P>But in the template input to <CODE>forletters</CODE>, I want the question mark
+to represent a letter, not its numeric code.
+<CODE>Char</CODE> is the inverse operation to <CODE>ascii</CODE>.  Given
+a number that is part
+of the ASCII sequence, <CODE>char</CODE> outputs the character that that number
+represents.  For example:
+
+<P><PRE>?<U>print ascii &quot;A</U>
+65
+?<U>print char 65</U>
+A
+</PRE>
+
+<P><CODE>Forletters</CODE> applies the template input to the character
+corresponding to the number in the <CODE>lettercode</CODE> variable controlled by
+the <CODE>for</CODE>.
+
+<P>Adding 1 to an ASCII code to get the code for the next letter depends
+on the fact that the numbers representing the letters are in sequence.
+Fortunately, this is true of ASCII.  A is 65, B is 66, C is 67, and
+so on.  Not all computer representations for characters have this
+property.  The code that was used in the days of punched cards had
+the slash (/) character in between R and S!
+
+<P>By the way, the lower case letters have different ASCII codes from the
+capitals.  In this program I've used the primitive operation
+<CODE>uppercase</CODE> to translate every character that the program reads
+into upper case, just to be sure that each letter has only one
+representation.
+
+<P><H2>Computed Variable Names</H2>
+
+
+
+
+
+<P>
+
+<P>Another programming technique that is heavily used in this project
+is the use of <CODE>word</CODE> to compute variable names dynamically.  Ordinarily,
+you assign a value to a variable named <CODE>var</CODE> with an instruction like
+
+<P><PRE>make &quot;var 87
+</PRE>
+
+<P>and you look at the value of the variable with the expression
+
+<P><PRE>:var
+</PRE>
+
+<P>But in this project, there are variables for each letter,
+with names like <CODE>posna</CODE>, <CODE>posnb</CODE>, <CODE>posnc</CODE>,
+and so on.  To assign a value to
+these variables, the program doesn't use 26 separate instructions
+like
+
+<P><PRE>make &quot;posna [0 0]
+</PRE>
+
+<P>(Each of these variables contains a list of screen coordinates for
+use with <CODE>setcursor</CODE> to find the corresponding letter in the top part of
+the display.)  Instead, the procedure <CODE>showrow</CODE>, which draws that
+section of the display, contains the instruction
+
+<P><PRE>forletters :from :to [setposn ? cursor   onetop ?]
+</PRE>
+
+<P><CODE>Setposn</CODE> is a data abstraction procedure:
+
+<P><PRE>to setposn :letter :thing
+make (word &quot;posn :letter) :thing
+end
+</PRE>
+
+<P>When the variable <CODE>letter</CODE> contains the letter <CODE>a</CODE>,
+the <CODE>make</CODE> instruction
+has the same effect as if it were
+
+<P><PRE>make &quot;posna :thing
+</PRE>
+
+<P>Similarly, the dots notation (<CODE>:posna</CODE>) isn't used to examine the values
+of these variables.  Instead, <CODE>thing</CODE> is invoked explicitly:
+
+<P><PRE>to posn :letter
+output thing (word &quot;posn :letter)
+end
+</PRE>
+
+<P>Another point to consider is that I could have used a different approach
+altogether, instead of using <CODE>word</CODE> to piece together a variable name.
+For instance, I could have used property lists:
+
+<P><PRE>to setposn :letter :thing
+pprop &quot;posn :letter :thing
+end
+
+to posn :letter
+output gprop &quot;posn :letter
+end
+</PRE>
+
+<P>As it happens, I first wrote this project in Atari 800 Logo, which
+didn't have property list primitives.  So the question didn't arise for
+me.  In a version of Logo that does support property lists, I see no
+<EM>stylistic</EM> reason to prefer one approach over the other.  It's
+entirely a question of which is more efficient.  Which is faster, searching
+through a list of 26 times 2 members (times 2 because each property has a
+name and a value) or concatenating strings with <CODE>word</CODE> to generate the
+name of a variable that can then be examined quickly?  I'd have to
+experiment to find out.  Alternatively, instead of using <CODE>posn</CODE> as the
+name of a property list and the letters as names of properties, I could
+reverse the two roles.  That would give me more lists, but shorter lists.
+
+<P>What <EM>is</EM> a stylistic issue is that using procedures like <CODE>posn</CODE>
+and <CODE>setposn</CODE> to isolate the storage mechanism from the rest of the
+program makes the latter easier to read.
+
+<P>
+
+<P><H2>Further Explorations</H2>
+
+<P>I have three suggestions about how to extend this project.  The first
+is to put in more rules by which the program can make guesses automatically.
+For example, a three-letter word that isn't THE might be AND.  Sequences
+of letters within a word can also be tallied; TH is a common two-letter
+sequence, for example.  A double letter in the cryptogram is more
+likely to represent OO than HH.
+
+<P>If you have many rules in the program, there will be situations in
+which two rules lead to contradictory guesses.  One solution is just
+to try the most reliable rule first, and ignore a new guess if it
+conflicts with an old one.  (<CODE>Qbind</CODE> applies this strategy by means
+of the instruction
+
+<P><PRE>if letterp thing :from [stop]
+</PRE>
+
+<P>which avoids adding a guess to the data base if the cryptogram
+letter is already bound to a cleartext letter.)
+
+<P>Another solution would be to let the rules &quot;vote&quot; about guesses.
+If the program had many rules, it might happen that three rules suggest
+that F represents E, while two rules suggest that W represents E.
+In this case, three rules outvote two rules, and the program would
+guess that F represents E.
+
+<P>The second direction for exploration in this program is to try to
+make it more efficient.  For example, every time you make a guess,
+<CODE>showclear</CODE> is invoked to redisplay the partially decoded text.  Much
+of this redisplay is unnecessary, since most of the guesses haven't
+changed.  How can you avoid the necessity to examine every letter
+of the cryptogram text?  One possibility would be to keep a list,
+for every letter in the text, of the screen positions in which that
+letter appears.  Then when a new guess is made, the program could
+just type the corresponding cleartext letter at exactly those positions.
+The cost of this technique would be a lot of storage space for the
+lists of positions, plus a slower version of <CODE>showcode</CODE>, which would
+have to create these position lists.
+
+<P>The third direction for further exploration is to find out about more
+complicated ciphers.  For example, suppose you started with a simple
+substitution cipher, but every time the letter A appeared in the cleartext
+you shifted the corresponding cryptogram letters by one.  That is,
+if E is initially represented by R, the first time an A appears you'd
+start using S to represent E.  The second time A appears you'd switch
+to T representing E.  And so on.  The effect of this technique would
+be that a particular cleartext letter is no longer represented by
+a single cryptogram letter all the way through.  Therefore, you can't
+just count the frequencies of the cryptogram letters and assume that
+frequently-used letters represent E and T.  How could you possibly
+decipher such a message?
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch10/v2ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+to crypto :text
+make "text map "uppercase :text
+make "fulltext :text
+make "moretext []
+make "textstack []
+if not procedurep "letterp [copydef "letterp "namep]
+forletters "A "Z "initvars
+make "maxcount 0
+initcount "single
+initcount "triple
+cleartext
+histogram :text
+redisplay "false
+if or guess.single guess.triple [showclear :text]
+parseloop
+end
+
+;; Initialization
+
+to initcount :type
+setlist. :type []
+setcount. :type 0
+end
+
+to initvars :letter
+setcnt :letter 0
+make :letter "| |
+setunbound :letter
+end
+
+;; Histogram
+
+to histogram :text
+foreach :text [localmake "word filter "letterp ?
+               foreach :word "histlet
+               prepare.guess :word]
+end
+
+to histlet :letter
+localmake "cnt 1+cnt :letter
+setcursor list (index :letter) (nonneg 24-:cnt)
+type :letter
+setcnt :letter :cnt
+if :maxcount < :cnt [make "maxcount :cnt]
+end
+
+;; Guessing letters
+
+to prepare.guess :word
+if equalp count :word 1 [tally "single :word]
+if equalp count :word 3 [tally "triple :word]
+end
+
+to tally :type :word
+localmake "countvar word :type :word
+if not memberp :word list. :type ~
+   [setlist. :type fput :word list. :type   make :countvar 0]
+localmake "count (thing :countvar)+1
+make :countvar :count
+if :count > (count. :type) ~
+   [setcount. :type :count   setmax. :type :word]
+end
+
+to guess.single
+if emptyp (list. "single) [output "false]
+if emptyp butfirst (list. "single) ~
+   [qbind first (list. "single) "A  output "true]
+qbind (max. "single) "A
+qbind (ifelse equalp first (list. "single) (max. "single)
+              [last (list. "single)]
+              [first (list. "single)]) ~
+      "I
+output "true
+end
+
+to guess.triple
+if emptyp (list. "triple) [output "false]
+if :maxcount < (3+cnt last (max. "triple))	 ~
+   [qbind first (max. "triple) "T
+    qbind first butfirst (max. "triple) "H
+    qbind last (max. "triple) "E
+    output "true]
+output "false
+end
+
+;; Keyboard commands
+
+to parseloop
+forever [parsekey uppercase readchar]
+end
+
+to parsekey :char
+if :char = "@ [fullclear stop]
+if :char = "+ [moretext stop]
+if :char = "- [lesstext stop]
+if not letterp :char [beep stop]
+bind :char uppercase readchar
+end
+
+;; Keeping track of guesses
+
+to bind :from :to
+if not equalp :to "| | [if not letterp :to [beep stop]
+                        if boundp :to [beep stop]]
+if letterp thing :from [dark thing :from]
+make :from :to
+fixtop :from
+if letterp :to [light :to]
+showclear :text
+end
+
+to qbind :from :to
+if letterp thing :from [stop]
+make :from :to
+fixtop :from
+light :to
+end
+
+;; Maintaining the display
+
+to redisplay :flag
+cleartext
+showtop
+alphabet
+showcode :text
+if :flag [showclear :text]
+end
+
+;; Top section of display (letter counts and guesses)
+
+to showtop
+setcursor [0 0]
+showrow "A "E
+showrow "F "J
+showrow "K "O
+showrow "P "T
+showrow "U "Y
+showrow "Z "Z
+end
+
+to showrow :from :to
+forletters :from :to [setposn ? cursor   onetop ?]
+print []
+end
+
+to onetop :letter
+localmake "count cnt :letter
+if :count = 0 [type word :letter "|      | stop]
+localmake "text (word :letter "- twocol :count "- thing :letter)
+ifelse :maxcount < :count+3 [invtype :text] [type :text]
+type "| |
+end
+
+to twocol :number
+if :number > 9 [output :number]
+output word 0 :number
+end
+
+to fixtop :letter
+setcursor posn :letter
+onetop :letter
+end
+
+;; Middle section of display (guessed cleartext letters)
+
+to alphabet
+setcursor [6 6]
+forletters "A "Z [ifelse boundp ? [invtype ?] [type ?]]
+end
+
+to light :letter
+setcursor list 6+(index :letter) 6
+invtype :letter
+setbound :letter
+end
+
+to dark :letter
+setcursor list 6+(index :letter) 6
+type :letter
+setunbound :letter
+end
+
+;; Bottom section of display (coded text)
+
+to showcode :text
+make "moretext []
+showcode1 8 0 :text
+end
+
+to showcode1 :row :col :text
+if emptyp :text [make "moretext [] stop]
+if :row > 22 [stop]
+if and equalp :row 16 equalp :col 0 [make "moretext :text]
+if (:col+count first :text) > 37 [showcode1 :row+2 0 :text stop]
+codeword :row :col first :text
+showcode1 :row (:col+1+count first :text) butfirst :text
+end
+
+to codeword :row :col :word
+setcursor list :col :row
+invtype :word
+end
+
+;; Bottom section of display (cleartext)
+
+to showclear :text
+showclear1 8 0 :text 2
+end
+
+to showclear1 :row :col :text :delta
+if emptyp :text [stop]
+if :row > 23 [stop]
+if keyp [stop]
+if (:col+count first :text) > 37 ~
+   [showclear1 :row+:delta 0 :text :delta stop]
+clearword :row :col first :text
+showclear1 :row (:col+1+count first :text) butfirst :text :delta
+end
+
+to clearword :row :col :word
+setcursor list :col :row+1
+foreach :word [ifelse letterp ? [type thing ?] [type ?]]
+end
+
+;; Windowing commands
+
+to fullclear
+cleartext
+showclear1 0 0 :fulltext 1
+print []
+invtype [type any char to redisplay]
+ignore readchar
+redisplay "true
+end
+
+to moretext
+if emptyp :moretext [beep stop]
+push "textstack :text
+make "text :moretext
+redisplay "true
+end
+
+to lesstext
+if emptyp :textstack [beep stop]
+make "text pop "textstack
+redisplay "true
+end
+
+;; Iteration tool for letters
+
+to forletters :from :to :action
+for [lettercode [ascii :from] [ascii :to]] ~
+    [apply :action (list char :lettercode)]
+end
+
+;; Data abstraction (constructors and selectors)
+
+to setbound :letter
+make word "bound :letter "true
+end
+
+to setunbound :letter
+make word "bound :letter "false
+end
+
+to boundp :letter
+output thing word "bound :letter
+end
+
+to setcnt :letter :thing
+make (word "cnt :letter) :thing
+end
+
+to cnt :letter
+output thing (word "cnt :letter)
+end
+
+to setposn :letter :thing
+make (word "posn :letter) :thing
+end
+
+to posn :letter
+output thing (word "posn :letter)
+end
+
+to setcount. :word :thing
+make (word "count. :word) :thing
+end
+
+to count. :word
+output thing (word "count. :word)
+end
+
+to setlist. :word :thing
+make (word "list. :word) :thing
+end
+
+to list. :word
+output thing (word "list. :word)
+end
+
+to setmax. :word :thing
+make (word "max. :word) :thing
+end
+
+to max. :word
+output thing (word "max. :word)
+end
+
+;; Miscellaneous helpers
+
+to index :letter
+output (ascii :letter)-(ascii "A)
+end
+
+to beep
+tone 440 15
+end
+
+to invtype :text
+type standout :text
+end
+
+to nonneg :number
+output ifelse :number < 0 [0] [:number]
+end
+
+;; Sample cryptograms
+
+make "cgram1 [Dzynufqyjulli, jpqhq ok yr hoxpj qnzeujory qceqwj xhrtoyx
+   zw oyjr u trhjptpolq trhln. oynqqn, rzh qceqkkogq eryeqhy tojp
+   whrvlqfk rd qnzeujory uj whqkqyj kofwli fquyk jpuj jpq |xhrty-zwk| nr
+   yrj pugq kzep u trhln. u nqeqyj qnzeujory uofk uj, whqwuhqk drh, u
+   frhq trhjptpolq dzjzhq, tojp u noddqhqyj erffzyoji kwohoj, noddqhqyj
+   reezwujoryk, uyn frhq hqul zjoloji jpuy ujjuoyoyx kjujzk uyn kuluhi.]
+
+make "cgram2 [Lvo vfkp lfzj md opaxflimn iz lm gitokflo fnp zlkonblvon f
+   hmalv'z inilifliuo, fnp fl lvo zfyo liyo lm zoo lm il lvfl vo jnmwz
+   wvfl iz noxozzfkh lm xmco wilv lvo mnbminb fxliuilioz fnp xaglako md
+   zmxiolh, zm lvfl viz inilifliuo xfn to kogoufnl. il iz ftzakp lm
+   lvinj lvfl lviz lfzj xfn to fxxmycgizvop th zm yaxv zillinb in f tms
+   dfxinb dkmnl, yfnicagflinb zhytmgz fl lvo pikoxlimn md pizlfnl
+   fpyinizlkflmkz. lviz iz kflvok f wfh lm kobiyonl fnp tkfinwfzv.]
+
+make "cgram3 [Pcodl hbdcx qxdrdlh yihcodr, hbd rzbiier gxd lih ziyqdhdlh
+   hi hdgzb gwhbdlhcz echdxgzf, xdgnclp gr g ydglr ia ecudxghcil gln
+   zwehcoghcil. gln c niwuh hbgh yirh ia wr jbi rdxciwref xdgn gln jxchd
+   hbd dlpecrb eglpwgpd dodx edgxldn ch uf hbd xiwhd ia "xwl, rqih, xwl"
+   hi rcegr ygxldx.]
+
+make "cgram4 [Jw btn xnsgsyp ejke gfebbcg, dtyjbn fbccsksg, ryu fbccsksg
+   nswcsfpsu pes usgjns, wnssuba, ryu wtptns bw pes qbtyk, pesns zbtcu
+   ls yb knrujyk, yb psgpjyk svfsxp rg r psrfejyk aspebu, ryu yb
+   lcrfilbrnu dtykcsg. jy wrfp, zs rns ksppjyk cbfigpsx gfesutcjyk ryu
+   knrujyk pb pes xbjyp bw pbnptns.]
+</PRE><P>
+
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch10/v2ch10.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch12/macro.html b/js/games/nluqo.github.io/~bh/v2ch12/macro.html
new file mode 100644
index 0000000..dc40474
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch12/macro.html
@@ -0,0 +1,624 @@
+
+<P>
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 12: Macros</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Macros</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch12.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch11/v2ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch13/v2ch13.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>I mentioned that the versions of <CODE>for</CODE> and <CODE>foreach</CODE> shown in
+Chapter 10 don't work if their instruction templates include <CODE>stop</CODE> or
+<CODE>output</CODE> commands.  The problem is that we don't want, say, <CODE>foreach</CODE>
+to stop; we want the procedure that <EM>invoked</EM> <CODE>foreach</CODE> to stop.
+
+<P>What we need to fix this problem is a way for a subprocedure to <EM>make
+its caller</EM> carry out some action.  That is, we want something like <CODE>
+run</CODE>, but the given expression should be run in a different context.
+Berkeley Logo includes a mechanism, called <EM>macros,</EM> to allow
+this solution.  As I write this in 1996, no other version of Logo has
+macros, although this capability is commonly provided in most versions
+of Logo's cousin, the programming language Lisp.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Readers who are
+familiar with Lisp macros should take note that Logo macros do not
+prevent argument evaluation.</SMALL></BLOCKQUOTE></SMALL><P><H2><CODE>Localmake</CODE></H2>
+
+<P>Before we fix <CODE>for</CODE> and <CODE>foreach</CODE>, and even before I explain in
+detail what a macro is, I think it's best to start with a simple but
+practical example.  Throughout this book I've been using a command
+called <CODE>localmake</CODE> that creates a local variable and assigns it a
+value.  The instruction
+
+<P><PRE>localmake &quot;fred 87
+</PRE>
+
+<P>is an abbreviation for the two instructions
+
+<P><PRE>local &quot;fred
+make &quot;fred 87
+</PRE>
+
+<P>Any version of Logo will allow those two separate instructions.
+It's tempting to write a procedure combining them:
+
+<P><PRE>to localmake :name :value                   ;; wrong!
+local :name
+make :name :value
+end
+</PRE>
+
+<P>What's wrong with this solution?  If you're not sure, define <CODE>localmake</CODE>
+as above and try an example, like this:
+
+<P><PRE>to trial
+localmake &quot;fred 87
+print :fred
+end
+
+? <U>trial</U>
+fred has no value  in trial
+[print :fred]
+</PRE>
+
+<P>When <CODE>trial</CODE> invokes <CODE>localmake</CODE>, a local variable named
+<CODE>fred</CODE> is created <EM>inside the invocation of</EM> <CODE>localmake</CODE>!
+That variable is then assigned the value 87.  Then <CODE>localmake</CODE> returns
+to <CODE>trial</CODE>, and <CODE>localmake</CODE>'s local variables disappear.  Back in
+<CODE>trial</CODE>, there is no variable named <CODE>fred</CODE>.
+
+<P>Here's the solution.  If <CODE>localmake</CODE> is an ordinary procedure, there's
+no way it can create a local variable in its caller.  So we have to define
+<CODE>localmake</CODE> as a special kind of procedure:
+
+<P><PRE>.macro localmake :name :value
+output (list &quot;local (word &quot;&quot; :name) &quot;make (word &quot;&quot; :name) :value)
+end
+</PRE>
+
+<P>The command <CODE>.macro</CODE> is like <CODE>to</CODE>, except that the
+procedure it defines is a macro instead of an ordinary procedure.
+(It's a Logo convention that advanced primitives that could be
+confusing to beginners have names beginning with a period.)
+
+<P>It's a little hard to read exactly what this procedure does, so for
+exploratory purposes I'll define an ordinary procedure with the same body:
+
+<P><PRE>to lmake :name :value
+output (list &quot;local (word &quot;&quot; :name) &quot;make (word &quot;&quot; :name) :value)
+end
+
+? <U>show lmake &quot;fred 87</U>
+[local &quot;fred make &quot;fred 87]
+</PRE>
+
+<P>As you see from the example, <CODE>lmake</CODE> outputs a list
+containing the instructions that we would like its caller to carry out.
+
+<P>The macro <CODE>localmake</CODE> outputs the same list of instructions.  But,
+because <CODE>localmake</CODE> is a macro, that output is then <EM>evaluated</EM>
+by the procedure that called <CODE>localmake</CODE>.  If <CODE>trial</CODE> is run
+using the macro version of <CODE>localmake</CODE> instead of the ordinary procedure
+version that didn't work, the effect is as if <CODE>trial</CODE> contained a <CODE>
+local</CODE> instruction and a <CODE>make</CODE> instruction in place of the one
+<CODE>localmake</CODE> invocation.  (If you defined the incorrect version of
+<CODE>localmake</CODE>, you can say
+
+<P><PRE>erase &quot;localmake
+</PRE>
+
+<P>and then the official version will be reloaded from the library
+the next time you use it.)
+
+<P>You may find the expression <CODE>(word &quot;&quot; :name)</CODE> that appears twice
+in the definition of <CODE>localmake</CODE> confusing.  At first glance, it
+seems that there is already a quotation mark in the first input to
+<CODE>localmake</CODE>, namely, <CODE>&quot;fred</CODE>.  But don't forget that that quotation
+mark is not part of the word!  For example, when you say
+
+<P><PRE>print &quot;fred
+</PRE>
+
+<P>Logo doesn't print a quotation mark.  What the quotation mark
+means to Logo is &quot;use the word that follows as the value for this input,
+rather than taking that word as the name of a procedure and invoking that
+procedure to find the input value.&quot;  In this example, the first input
+to <CODE>localmake</CODE> is the word <CODE>fred</CODE> itself, rather than the result
+of invoking a procedure named <CODE>fred</CODE>.  If we want to construct an
+instruction such as
+
+<P><PRE>local &quot;fred
+</PRE>
+
+<P>based on this input, we must put a quotation mark in front of
+the word explicitly.
+
+<P>In fact, so far I've neglected to deal with the fact that a similar
+issue about quotation may arise for the value being assigned to the
+variable.  In the <CODE>trial</CODE> example I used the value 87, a number,
+which is <EM>self-evaluating;</EM> when a number is typed into Logo as
+an expression, the number itself is the value of the expression.
+But if the value is a non-numeric word, then a quotation mark must be
+used for it, too.  The version of <CODE>localmake</CODE> shown so far would
+fail in a case like
+
+<P><PRE>localmake &quot;greeting &quot;hello
+</PRE>
+
+<P>because the macro would return the list
+
+<P><PRE>[local &quot;greeting make &quot;greeting hello]
+</PRE>
+
+<P>which, when evaluated, would try to invoke a procedure named
+<CODE>hello</CODE> instead of using the word itself as the desired value.
+
+<P>The most straightforward solution is to write a procedure that will
+include a quotation mark only when it's needed:
+
+<P><PRE>.macro localmake :name :value
+output (list &quot;local (quoted :name) &quot;make (quoted :name) (quoted :value))
+end
+
+to quoted :thing
+if numberp :thing [output :thing]
+if listp :thing [output :thing]
+output word &quot;&quot; :thing
+end
+</PRE>
+
+<P>A somewhat less obvious solution, but one I find more appealing, is to
+avoid the entire issue of quotation by putting the inputs to <CODE>make</CODE>
+in a list, which we can do by using <CODE>apply</CODE>:
+
+<P><PRE>.macro localmake :name :value
+output (list &quot;local (word &quot;&quot; :name) &quot;apply &quot;&quot;make (list :name :value))
+end
+</PRE>
+
+<P>On the other hand, it may take some thinking to convince
+yourself that the <CODE>&quot;&quot;make</CODE> in that version is correct!
+
+<P>
+
+<P><H2>Backquote</H2>
+
+<P>Even a simple macro like <CODE>localmake</CODE> is very hard to read, and hard
+to write correctly, because of all these invocations of <CODE>list</CODE> and <CODE>
+word</CODE> to build up a structure that's partly constant and partly variable.
+It would be nice if we could use a notation like
+
+<P><PRE>[local &quot;NAME apply &quot;make [NAME VALUE]]
+</PRE>
+
+<P>for an &quot;almost constant&quot; list in which only the words in
+capital letters would be replaced by values of variables.
+
+<P>
+
+
+<P>That particular notation can't work, because in Logo the case of letters
+doesn't matter when a word is used as the name of something.  But we do
+have something almost as good.  We can say
+
+<P><PRE>`[local ,[word &quot;&quot; :name] apply &quot;make [,[:name] ,[:value]]]
+</PRE>
+
+<P>The first character in that line, before the opening bracket,
+is a <EM>backquote,</EM> which is probably near the top left corner
+of your keyboard.  To Logo, it's just an ordinary character, and happens
+to be the name of a procedure in the Berkeley Logo library.  The list
+that follows the backquote above is the input to the procedure.
+
+<P>What the <CODE>`</CODE> procedure does with its input list is to make a copy,
+but wherever a word containing only a comma (<CODE>,</CODE>) appears, what
+comes next must be a list, which is <CODE>run</CODE> to provide the value
+for that position in the copy.  I've put the commas right next to the
+lists that follow them, but this doesn't matter; whenever Logo sees
+a bracket, it delimits the words on both sides of the bracket, just as
+if there were spaces around the bracket.
+
+<P>So if <CODE>:name</CODE> has the value <CODE>fred</CODE> and <CODE>:value</CODE> has the value 87,
+then this sample invocation of <CODE>`</CODE> has the value
+
+<P><PRE>[local &quot;fred apply &quot;make [fred 87]]
+</PRE>
+
+<P>Like macros, backquote is a feature that Berkeley Logo borrows from Lisp.
+It's not hard to implement:
+
+<P><PRE>to ` :backq.list
+if emptyp :backq.list [output []]
+if equalp first :backq.list &quot;, ~
+   [output fput run first butfirst :backq.list
+                ` butfirst butfirst :backq.list]
+if equalp first :backq.list &quot;,@ ~
+   [output sentence run first butfirst :backq.list
+                    ` butfirst butfirst :backq.list]
+if wordp first :backq.list ~
+   [output fput first :backq.list ` butfirst :backq.list]
+output fput ` first :backq.list ` butfirst :backq.list
+end
+</PRE>
+
+<P>This procedure implements one feature I haven't yet described.  If the
+input to <CODE>`</CODE> contains the word <CODE>,@</CODE> (comma atsign), then the
+next member of the list must be a list, which is <CODE>run</CODE> as for comma,
+but the <EM>members</EM> of the result are inserted in the output, instead
+of the result as a whole.  Here's an example:
+
+<P><PRE>? <U>show `[start ,[list &quot;a &quot;b] middle ,@[list &quot;a &quot;b] end]</U>
+[start [a b] middle a b end]
+</PRE>
+
+<P>
+Using backquote, we could rewrite <CODE>localmake</CODE> a little more readably:
+
+<P><PRE>.macro localmake :name :value
+output `[local ,[word &quot;&quot; :name] apply &quot;make [,[:name] ,[:value]]]
+end
+</PRE>
+
+<P>In practice, though, I have to admit that the Berkeley Logo
+library doesn't use backquote in its macro definitions because it's
+noticeably slower than constructing the macro with explicit calls to <CODE>
+list</CODE> and <CODE>word</CODE>.
+
+<P>By the way, this implementation of backquote isn't as complex as some
+Lisp versions.  Most importantly, there is no provision for <EM>nested</EM>
+backquotes, that is, for an invocation of backquote within the input
+to backquote.  (Why would you want to do that?  Think about a macro whose
+job is to generate a definition for another macro.)
+
+<P><H2>Implementing Iterative Commands</H2>
+
+<P>It's time to see how macros can be used to implement iterative control
+structures like <CODE>for</CODE> and <CODE>foreach</CODE> correctly.  I'll concentrate
+on <CODE>foreach</CODE> because it's simpler to implement, but the same ideas
+apply equally well to <CODE>for</CODE>.
+
+<P>Perhaps the most obvious approach is to have the <CODE>foreach</CODE> macro
+output a long instruction list in which the template is applied to each
+member of the list.  That is, if we say
+
+<P><PRE>foreach [a b c] [print ?]
+</PRE>
+
+<P>then the <CODE>foreach</CODE> macro should output the list
+
+<P><PRE>[print &quot;a print &quot;b print &quot;c]
+</PRE>
+
+<P>To achieve precisely this result we'd have to look through
+the template for question marks, replacing each one with a possibly
+quoted datum.  Instead it'll be easier to generate the uglier but
+equivalent instruction list
+
+<P><PRE>[apply [print ?] [a] apply [print ?] [b] apply [print ?] [c]]
+</PRE>
+
+<P>this way:
+
+<P><PRE>.macro foreach :data :template
+output map.se [list &quot;apply :template (list ?)] :data
+end
+</PRE>
+
+<P>(To simplify the discussion, I'm writing a version of <CODE>foreach</CODE>
+that only takes two inputs.  You'll see in a moment that the implementation
+will be complicated by other considerations, so I want to avoid unnecessary
+complexity now.  At the end I'll show you the official, complete
+implementation.)
+
+<P>This version works correctly, and it's elegantly written.  We could stop
+here.  Unfortunately, this version is inefficient, for two reasons.  First,
+it uses another higher order procedure, <CODE>map.se</CODE>, to construct the list of
+instructions to evaluate.  Second, for a large data input, we construct
+a very large instruction list, using lots of computer memory, just so that
+we can evaluate the instructions once and throw the list away.
+
+<P>Another approach is to let the <CODE>foreach</CODE> macro invoke itself recursively.
+This is a little tricky; you'll see that <CODE>foreach</CODE> does not actually
+invoke itself within itself.  Instead, it constructs an instruction list
+that contains another use of <CODE>foreach</CODE>.  For example, the instruction
+
+<P><PRE>foreach [a b c] [print ?]
+</PRE>
+
+<P>will generate the instruction list
+
+<P><PRE>[apply [print ?] [a] foreach [b c] [print ?]]
+</PRE>
+
+<P>Here's how to write that:
+
+<P><PRE>.macro foreach :data :template
+output `[apply ,[:template] [,[first :data]]
+         foreach ,[butfirst :data] ,[:template]]
+end
+</PRE>
+
+<P>In this case the desired instruction list is long enough
+so that I've found it convenient to use the backquote notation to
+express my intentions.  If you prefer, you could say
+
+<P><PRE>.macro foreach :data :template
+output (list &quot;apply :template (list (first :data))
+             &quot;foreach (butfirst :data) :template)
+end
+</PRE>
+
+<P>This implementation (in either the backquote version or
+the explicit list constructor version) avoids the possibility of
+constructing huge instruction lists; the constructed list has only
+the computation for the first datum and a recursive <CODE>foreach</CODE> that
+handles the entire rest of the problem.
+
+<P>But this version is still slower than the non-macro implementation
+of <CODE>foreach</CODE> given in Chapter 10.  Constructing an instruction
+list and then evaluating it is just a slower process than simply doing
+the necessary computation within <CODE>foreach</CODE> itself.  And that
+earlier approach works fine unless the template involves <CODE>stop</CODE>,
+<CODE>output</CODE>, or <CODE>local</CODE>.  We could have our cake and eat it too if
+we could find a way to use the non-macro approach, but notice when
+the template tries to stop its computation.  This version is quite a bit
+trickier than the ones we've seen until now:
+
+<P><PRE>.macro foreach :data :template
+catch &quot;foreach.catchtag ~
+      [output foreach.done runresult [foreach1 :data :template]]
+output []
+end
+
+to foreach1 :data :template
+if emptyp :data [throw &quot;foreach.catchtag]
+apply :template (list first :data)
+.maybeoutput foreach1 butfirst :data :template
+end
+
+to foreach.done :foreach.result
+if emptyp :foreach.result [output [stop]]
+output list &quot;output quoted first :foreach.result
+end
+</PRE>
+
+<P>To help you understand how this works, let's first consider what happens
+if the template does not include <CODE>stop</CODE> or <CODE>output</CODE>.  In that
+case, the program structure is essentially this:
+
+<P><PRE>.macro simpler.foreach :data :template
+catch &quot;foreach.catchtag ~
+      [this.stuff.never.invoked run [simpler.foreach1 :data :template]]
+output []
+end
+
+to simpler.foreach1 :data :template
+if emptyp :data [throw &quot;foreach.catchtag]
+apply :template (list first :data)
+simpler.foreach1 butfirst :data :template
+end
+</PRE>
+
+<P>The instruction list that's evaluated by the <CODE>catch</CODE> runs
+a smaller instruction list that invokes <CODE>simpler.foreach1</CODE>.  That
+procedure is expected to output a value, which is then used as the input
+to some other computation (namely, <CODE>foreach.done</CODE> in the actual version).
+But when <CODE>simpler.foreach1</CODE> reaches its base case, it doesn't output
+anything; it <CODE>throw</CODE>s back to the instruction after the <CODE>catch</CODE>,
+which outputs an empty list.  So all of the work of <CODE>foreach</CODE> is done
+within these procedures; the macro outputs an empty instruction list, which
+is evaluated by the caller of <CODE>foreach</CODE>, but that evaluation has no
+effect.
+
+<P>Now forget about the <CODE>simpler</CODE> version and return to the actual
+<CODE>foreach</CODE>.  What if the template carries out a <CODE>stop</CODE> or <CODE>
+output</CODE>?  If that happens, <CODE>foreach1</CODE> will never reach its base
+case, and will therefore not <CODE>throw</CODE>.  It will either stop or
+output a value.  The use of <CODE>.maybeoutput</CODE> in <CODE>foreach1</CODE> is
+what makes it possible for <CODE>foreach1</CODE> to function either as a command
+(if it stops) or as an operation (if it outputs) without causing an error
+when it invokes itself recursively.  If the recursive invocation stops,
+so does the outer invocation.  If the recursive invocation outputs a value,
+the outer invocation outputs that value.
+
+<P><CODE>Foreach</CODE> invoked <CODE>foreach1</CODE> using Berkeley Logo's <CODE>runresult</CODE> primitive
+operation.  <CODE>Runresult</CODE> is just like <CODE>run</CODE>, except that it always
+outputs a value, whether or not the computation that it runs produces
+a value.  If so, then <CODE>runresult</CODE> outputs a one-member list containing
+the value.  If not, then <CODE>runresult</CODE> outputs an empty list.
+
+<P>The output from <CODE>runresult</CODE> is used as input to <CODE>foreach.done</CODE>,
+whose job is to construct an instruction list as the overall output from
+the <CODE>foreach</CODE> macro.  If the input to <CODE>foreach.done</CODE> is empty,
+that means that the template included a <CODE>stop</CODE>, and so <CODE>foreach</CODE>
+should generate a <CODE>stop</CODE> instruction to be evaluated by its caller.
+If the input isn't empty, then the template included an <CODE>output</CODE>
+instruction, and <CODE>foreach</CODE> should generate an <CODE>output</CODE> instruction
+as its return value.
+
+<P>This version is quite fast, and handles <CODE>stop</CODE> and <CODE>output</CODE>
+correctly.  It does not, however, handle <CODE>local</CODE> correctly; the
+variable will be local to <CODE>foreach1</CODE>, not to the caller.  It was
+hard to decide which version to use in the Berkeley Logo library, but
+slowing down every use of <CODE>foreach</CODE> seemed too high a price to pay
+for <CODE>local</CODE>.  That's why, for example, procedure <CODE>onegame</CODE> in
+the solitaire program of Chapter 4 includes the instructions
+
+<P><PRE>local map [word &quot;num ?] :numranks
+foreach :numranks [make word &quot;num ? 4]
+</PRE>
+
+<P>instead of the more natural
+
+<P><PRE>foreach :numranks [localmake word &quot;num ? 4]
+</PRE>
+
+<P>That single instruction would work with the first implementation
+of <CODE>foreach</CODE> in this chapter, but doesn't work with the actual
+Berkeley Logo implementation!
+
+<P><H2>Debugging Macros</H2>
+
+<P>It's easy to make mistakes when writing a macro, because it's hard to keep
+straight what has to be quoted and what doesn't, for example.  And it's
+hard to debug a macro, because you can't easily see the instruction list
+that it outputs.  You can't say
+
+<P><PRE>show foreach ...
+</PRE>
+
+<P>because the output from <CODE>foreach</CODE> is <EM>evaluated,</EM> not
+passed on to <CODE>show</CODE>.
+
+<P>One solution is to trace the macro.
+
+<P><PRE>? <U>trace &quot;foreach</U>
+? <U>foreach [a b c] [print ?]</U>
+( foreach [a b c] [print ?] )
+a
+b
+c
+foreach outputs []
+? <U>foreach [a b 7 c] [if numberp ? [stop] print ?]</U>
+( foreach [a b 7 c] [if numberp ? [stop] print ?] )
+a
+b
+foreach outputs [stop]
+Can only use stop inside a procedure
+</PRE>
+
+<P>In this case, I got an error message because, just as the
+message says, it doesn't make sense to use <CODE>stop</CODE> in a template
+unless this invocation of <CODE>foreach</CODE> is an instruction inside
+a procedure definition.  Here I invoked <CODE>foreach</CODE> directly at
+the Logo prompt.
+
+<P>The Berkeley Logo library provides another solution, a
+<CODE>macroexpand</CODE> operation that takes as its input a Logo expression beginning
+with the name of a macro.  It outputs the expression that the macro would
+output, without causing that expression to be evaluated:
+
+<P><PRE>? <U>show macroexpand [foreach [a b 7 c] [if numberp ? [stop] print ?]]</U>
+a
+b
+[stop]
+</PRE>
+
+<P>This time I didn't get an error message, because the instruction
+list that <CODE>foreach</CODE> outputs wasn't actually evaluated; it became the
+input to <CODE>show</CODE>, which is why it appears at the end of the example.
+
+<P><CODE>Macroexpand</CODE> works by using <CODE>define</CODE> and <CODE>text</CODE> to define,
+temporarily, a new procedure that's just like the macro it wants to expand,
+but an ordinary procedure instead of a macro:
+
+<P><PRE>to macroexpand :expression
+define &quot;temporary.macroexpand.procedure text first :expression
+...
+end
+</PRE>
+
+<P>You might enjoy filling in the rest of this procedure, as an
+exercise in advanced Logo programming, before you read the version
+in the library.
+
+<P>(What if you want to do the opposite, defining a macro with the same text
+as an ordinary procedure?  Berkeley Logo includes a <CODE>.defmacro</CODE> command,
+which is just like <CODE>define</CODE> except that the resulting procedure is a
+macro.  We don't need two versions of <CODE>text</CODE>, because the text of a
+macro looks just like the text of an ordinary procedure.  To tell the
+difference, there is a primitive predicate <CODE>macrop</CODE> that takes a word
+as input, and outputs <CODE>true</CODE> if that word is the name of a macro.)
+
+<P><H2>The Real Thing</H2>
+
+<P>Here is the complete version of <CODE>foreach</CODE>, combining the macro
+structure developed in this chapter with the full template flexibility
+from Chapter 10.
+
+<P><PRE>.macro foreach [:foreach.inputs] 2
+catch &quot;foreach.catchtag ~
+      [output foreach.done runresult [foreach1 butlast :foreach.inputs
+                                               last :foreach.inputs 1]]
+output []
+end
+
+to foreach1 :template.lists :foreach.template :template.number
+if emptyp first :template.lists [throw &quot;foreach.catchtag]
+apply :foreach.template firsts :template.lists
+.maybeoutput foreach1 butfirsts :template.lists ~
+                      :foreach.template :template.number+1
+end
+
+to foreach.done :foreach.result
+if emptyp :foreach.result [output [stop]]
+output list &quot;output quoted first :foreach.result
+end
+</PRE>
+
+<P>And here, without any discussion, is the actual library version of
+<CODE>for</CODE>.  This, too, combines the ideas of this chapter with
+those of Chapter 10.
+
+<P><PRE>.macro for :for.values :for.instr
+localmake &quot;for.var first :for.values
+localmake &quot;for.initial run first butfirst :for.values
+localmake &quot;for.final run item 3 :for.values
+localmake &quot;for.step forstep
+localmake &quot;for.tester (ifelse :for.step &lt; 0
+                              [[(thing :for.var) &lt; :for.final]]
+                              [[(thing :for.var) &gt; :for.final]])
+local :for.var
+catch &quot;for.catchtag [output for.done runresult [forloop :for.initial]]
+output []
+end
+
+to forloop :for.initial
+make :for.var :for.initial
+if run :for.tester [throw &quot;for.catchtag]
+run :for.instr
+.maybeoutput forloop ((thing :for.var) + :for.step)
+end
+
+to for.done :for.result
+if emptyp :for.result [output [stop]]
+output list &quot;output quoted first :for.result
+end
+
+to forstep
+if equalp count :for.values 4 [output run last :for.values]
+output ifelse :for.initial &gt; :for.final [-1] [1]
+end
+</PRE>
+
+
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch11/v2ch11.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch13/v2ch13.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch13/fourie.html b/js/games/nluqo.github.io/~bh/v2ch13/fourie.html
new file mode 100644
index 0000000..74ea2c4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/fourie.html
@@ -0,0 +1,853 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 13: Example: Fourier Series Plotter</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Fourier Series Plotter</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch13.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch14/manual.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch13/plot.lg"><CODE>plot</CODE></A>
+
+<P>A particular musical note (middle C, say) played on a piano and played
+on a violin sound similar in some ways and different in other ways.
+Two different notes played on the violin also have similarities and
+differences.  How do you hear which note is being played, and how
+do you know what instrument you're listening to?
+
+<P>To do justice to these questions would fill up an entire book.  For example,
+a piano produces sound when a felt-covered wooden hammer hits metal wires,
+or strings.  Each piano key controls one hammer, but each hammer may hit
+from one to three strings.  It turns out that the strings for a particular
+note are not tuned to exactly the same pitch.  Part of the richness of the
+piano's sound comes from the interplay of slightly different pitches making
+up the same note.
+
+<P>Another contributing factor to the recognition of different instruments is
+their differences in attack and decay.  Does the sound of a note start
+abruptly, or gradually?  The differences are not only a matter of loudness,
+though.  A few instruments start out each note with a very pure, simple tone
+like a tuning fork.  Gradually, the tone becomes more complex until it
+finally reaches the timbre you associate with the instrument.  But a bowed
+violin, a more typical example, starts out each note almost as a burst of
+pure noise, as the bow hits the strings, and gradually mellows into the
+sound of a particular note.  If you are experimentally inclined, try tape
+recording the same note as played by several instruments.  Then cut out the
+beginnings and ends of the notes, and retain only the middle section.  Play
+these to people and see how well they can identify the instruments, compared
+to their ability to identify the complete recorded notes.
+
+<P>
+
+For this chapter, though, I'm going to ignore these complications, and
+concentrate on the differences in the <EM>steady-state</EM> central part of a
+note as played by a particular instrument.  What all such steady
+musical sounds have in common is that they are largely <EM>
+periodic</EM>.  This means that if you graph the air pressure produced by the
+instrument over time (or the voltage when the sound is represented
+electrically in a hifi system), the same pattern of high and low pressures
+repeats again and again.  Here is an example.  In this picture, the motion
+of your eye from left to right represents the passing of time.
+
+<P><CENTER><IMG SRC="squig5.gif" ALT="figure: squig5"></CENTER>
+
+<P>
+
+The height of the squiggle on the page, at
+any particular moment, represents the sound pressure at that moment.  So
+what this picture shows is that there are many small up-and-down
+oscillations superimposed on one large, regular up-and-down motion.  (This
+one large oscillation is called the <EM>fundamental</EM> frequency.)  You can
+see that the entire picture consists of five repetitions of a smaller
+squiggle with just one of the large oscillations.
+
+<P>From what I've said about oscillations, you might get the impression
+that this is a picture of something like a foghorn or siren, in which
+you can hear an alternation of loud and soft moments.  But this is
+actually the picture of what sounds like a perfectly steady tone.
+The entire width of the page represents about one one-hundredth of
+a second.  There are a few hundred repetitions of the single large
+up-and-down cycle in each second of a musical note.  The exact number
+of repetitions is the <EM>frequency</EM> of the note,
+and is the same for every instrument.  For example, the note A above
+middle C has a pitch of 440 cycles per second, or 440 Hertz.
+
+<P>All instruments playing A above middle C will have a picture with
+the same fundamental frequency of 440 Hertz.  What is different from
+one instrument to another is the exact shape of the squiggle.  (By
+the way, the technical name for a squiggle is a <EM>waveform.</EM>  You
+can see the waveform for a note by connecting a microphone to an oscilloscope,
+a device that shows the waveform on a TV-like screen.)
+
+<P>Here is a picture of the simplest, purest possible tone:
+
+<P><CENTER><IMG SRC="sine5.gif" ALT="figure: sine5"></CENTER>
+
+<P>This is the waveform you'd get from an ideal tuning fork,
+with no impurities or bumps.  It is called a <EM>sine wave.</EM>  This
+particular kind of oscillation turns up in many situations, not just musical
+sounds.  For example, suppose you write a program that starts a turtle
+moving in a circle forever.
+
+<P><PRE>to circle
+fd 1
+rt 1
+circle
+end
+</PRE>
+
+<P>Think about the motion of the turtle, and concentrate only
+on its vertical position on the screen.  Never mind its motion from
+left to right.  The up-and-down part of the turtle's motion over time
+looks just like this sine wave.
+
+<P>This says more than simply that the turtle alternates moving up and
+down.  For example, the turtle's vertical motion might have looked
+like this over time:
+
+<P><CENTER><IMG SRC="tri5.gif" ALT="figure: tri5"></CENTER>
+
+<P>If
+this were the picture of the turtle's motion, it would mean that
+the turtle's vertical position climbed at a steady rate until it reached
+the top of the circle, then abruptly turned around and started down
+again.  But in fact what happens is that the height of the turtle
+changes most quickly when the turtle is near the &quot;Equator&quot;
+of its circle.  The turtle's vertical speed gets less and less as
+the turtle gets near the &quot;poles.&quot;  This speed change corresponds
+to the gradual flattening of the sine wave near the top and bottom.
+(You may find it confusing when I say that the turtle's vertical motion
+slows down, because the turtle's speed doesn't seem to change as it
+draws.  But what happens is that near the Equator, the turtle's speed
+is mostly vertical; near the poles, its speed is mostly horizontal.
+We aren't thinking about the horizontal aspect of its motion right
+now.)
+
+<P><CENTER><IMG SRC="motion.gif" ALT="figure: motion"></CENTER>
+
+<P>What makes sine waves most important, though, is that <EM>any</EM> periodic
+waveform can be analyzed as the sum of a bunch of sine waves of different
+frequencies.  (Sometimes an infinite number of since waves must be
+added together.)  The frequencies of the sine waves will always be
+multiples of the fundamental frequency.  This important mathematical
+result was discovered by the French mathematician
+Jean-Baptiste-Joseph Fourier (1768-1830).  The representation of
+a mathematical function as a sum of sine waves is called a <EM>
+Fourier series.</EM>
+
+<P>For example, when a violin plays A above middle C, the waveform that
+results will include a sine wave with frequency 440 Hertz, one with
+frequency 880 Hertz, one at 1320 Hertz, and so on.  Not all of these
+contribute equally to the complete waveform.  The <EM>amplitude</EM> of
+each sine wave (the amount of swing, or the vertical distance in the
+picture) will be different for each.  Typically, the fundamental frequency
+has the largest amplitude, and the others (which are called <EM>
+harmonics</EM> or <EM>overtones</EM>) have smaller amplitudes.  The
+precise amplitudes of each harmonic are what determine the steady-state
+timbre of a particular instrument.
+
+<P><H2>Square Waves</H2>
+
+<P>Two traditional musical instruments, the clarinet and the
+pipe organ, share a curious characteristic: their Fourier series
+contain only odd harmonics.  In other words, if a clarinet is
+playing A above middle C, the waveform includes frequencies of 440 Hertz,
+1320 Hertz (3 times 440), 2200 Hertz (5 times 440), and so on.  But the
+waveform does not include frequencies of 880 Hertz (2 times 440), 1760 Hertz
+(4 times 440), and so on.  (I'm oversimplifying a bit in the case of the
+pipe organ.  What I've said about only odd harmonics is true about each
+pipe, but the organ can be set up to combine several pipes in order to
+include even harmonics of a note.)
+
+<P>In recent times, a third musical instrument has come to share this
+peculiar Fourier series: the computer.  (Perhaps you were wondering
+where computers come into this.)  Today there are computer-controlled
+musical instruments that can generate
+any possible sound.  Musicians have even used computers to create
+new instrument timbres that are not possible with ordinary instruments.
+But the particular timbre that most people associate with
+computer music is the one produced by the simplest possible
+computer sound generator.  Instead of a steady oscillation in sound
+pressure, this simple device can only be on or off at a given moment.  The
+computer produces sound by flipping the device from on to off and back at a
+particular rate.  Such a device produces a <EM>square wave</EM>, like
+this:
+
+<P><CENTER><IMG SRC="square5.gif" ALT="figure: square5"></CENTER>
+
+<P>No sound that occurs in nature has a waveform that turns
+corners so abruptly.  But what is &quot;natural&quot; in nature isn't necessarily
+what's &quot;natural&quot; for a computer.  For many years, computer-generated
+music invariably meant square waves except in very fancy music research
+centers.
+
+<P>More recently, new integrated circuit technology has made
+it relatively inexpensive to equip computers with &quot;music chips&quot;
+that generate sine waves.  The stereotyped sound of computer music
+is becoming uncommon.  But I still find square waves fascinating
+for several reasons.
+
+<P>One place where square waves are still used is in the hifi magazines,
+in their tests of amplifiers.  The testing laboratories feed a square
+wave into an amplifier, and show oscilloscope pictures of the waveform
+going into the amp and the waveform coming out.  Here is an example:
+
+<P>
+<CENTER><IMG SRC="scope.gif" ALT="figure: scope"></CENTER>
+
+
+<P>The oscillation that is visible in the output near the corners of
+the input is called <EM>ringing</EM>.  A lot of ringing indicates that
+the amplifier doesn't have good high-frequency response.
+
+<P>Here is why a square wave is a good test of high frequencies:  The
+Fourier series corresponding to the square wave includes an infinite
+number of odd-harmonic sine wave components.  In other words, a perfect
+square wave includes infinitely high frequencies.  (In practice, the
+input picture isn't a perfect square wave.  You can see that the vertical
+segments aren't <EM>quite</EM> truly vertical, for example.)  No amplifier
+can reproduce infinitely high frequencies faithfully.  The result
+is that the output from the amplifier includes only some of the harmonics
+that make up the input.  It turns out that such a <EM>partial series</EM>,
+with relatively few of the harmonics included, produces a waveform
+in which the ringing phenomenon at the corners is clearly visible.
+
+<P>If you think about it, that's a bit unexpected.  Normally, the more
+harmonics, the more complicated the waveform.  For example, the simplest
+waveform is the one with only the fundamental, and no added harmonics.
+Yet, <EM>removing</EM> harmonics from the square wave produces a <EM>
+more</EM> complicated picture.  I like paradoxes like that.  I wanted
+to write a computer program to help me understand this one.
+
+<P>Before you can look into the square wave in detail, you have to know
+not only the fact that it uses odd harmonics, but also the amplitude
+of each harmonic.  A square wave with fundamental frequency <EM>f</EM>
+has this formula: <P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch13/math1.gif" ALT="math display"></CENTER>
+<P>The dots at the end indicate that this series goes on forever.
+The amplitude of each sine wave is the reciprocal of the harmonic
+number (one divided by the number).
+
+<P>This project draws pictures of waveforms containing some number of
+terms of this series.  (Each sine wave is called a term.)  The program
+allows many different ways of controlling exactly what is drawn.
+
+<P>To start with something very simple, try this instruction:
+
+<P><PRE>plot 1
+</PRE>
+
+<P>The effect of this command is to draw one cycle of a pure
+sine wave:
+
+<P><CENTER><IMG SRC="plot1.gif" ALT="figure: plot1"></CENTER>
+
+<P>This
+is the first term of the series for the square wave.  Now try
+this:
+
+<P><PRE>plot 5
+</PRE>
+
+<P><CENTER><IMG SRC="plot5.gif" ALT="figure: plot5"></CENTER>
+
+<P>The
+input to <CODE>plot</CODE> is the harmonic number of the highest harmonic.
+In this example, we've drawn three sine waves added together: the
+fundamental, third harmonic, and fifth harmonic.
+
+<P>To see a plot looking somewhat more like the pictures in the amplifier
+tests, try
+
+<P><PRE>plot 23
+</PRE>
+
+<P><CENTER><IMG SRC="plot23.gif" ALT="figure: plot23"></CENTER>
+
+<P>This
+contains the first 12 odd harmonics.  (Remember to use an odd
+number as input, if you want to see something that looks like a square
+wave.)  You can see that the result still includes some oscillation
+in the horizontal sections, but does have an overall square shape.
+
+<P>A mediocre hifi amp has a frequency response that is good to about
+20,000 Hertz.  This is about the 45th harmonic of 440 Hertz.  To see
+how A above middle C would come out on such an amplifier, try
+
+<P><PRE>plot 45
+</PRE>
+
+<P><CENTER><IMG SRC="plot45.gif" ALT="figure: plot45"></CENTER>
+
+<P>There
+is still some ringing near the corners, but the middle of the
+horizontal segment is starting to look really flat.  A better amplifier
+might be good to 30,000 Hertz.  To see how that would look, try
+
+<P><PRE>plot 77
+</PRE>
+
+<P><CENTER><IMG SRC="plot77.gif" ALT="figure: plot77"></CENTER>
+
+<P>(The
+drawing of the picture takes longer when you use a larger input
+to <CODE>plot</CODE>, because the program has to calculate more terms of the series.)
+
+<P>So far, we have only changed one of the possible parameters controlling
+the waveform, namely the highest harmonic.  The program allows you
+to control several other elements of the picture.  For example, try
+this:
+
+<P><PRE>plot [maxharm 77 yscale 140 deltax 1]
+</PRE>
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch13/plot77big.gif" ALT="figure: plot77big"></CENTER>
+
+<P><CODE>
+Plot</CODE> takes one input, but this time the input is a list instead of
+a single number.  The members of the list are used as sort of &quot;sub-inputs.&quot;
+The odd-numbered members are the <EM>names</EM> of parameters,
+for which the even-numbered members provide <EM>values.</EM>
+
+<P><CODE>Maxharm</CODE> stands for &quot;maximum harmonic&quot;; it is the parameter you were
+setting when you used a single number as the input.  <CODE>Yscale</CODE> is an
+adjustment for the height of the plot.  (To &quot;scale&quot; a bunch of numbers
+means to multiply all of them by some constant value, the &quot;scale factor.&quot;)
+You may have noticed that as the
+number of harmonics has increased, the pictures have been getting smaller in
+the vertical direction; by increasing the value of <CODE>yscale</CODE> we can
+expand the height of the plot to show more detail.  Similarly, <CODE>deltax</CODE>
+allows us to show more horizontal detail, not by widening the picture but by
+computing the value for every dot.  Ordinarily, the program saves time by
+calculating every second dot.  This approximation is usually good enough,
+but sometimes not.  (<CODE>Deltax</CODE> means &quot;change in X.&quot;  Delta is the
+name of the Greek letter D (&Delta;), which mathematicians use to represent
+a small change in something.)
+
+<P>Here's another example:
+
+<P><PRE>plot [11 cycles 5]
+</PRE>
+
+<P><CENTER><IMG SRC="plot11by5.gif" ALT="figure: plot11by5"></CENTER>
+
+<P><CODE>Cycles</CODE> indicates
+the number of complete cycles you want to see.  By saying <CODE>cycles 5</CODE>
+in this example, I drew a picture like the ones near the beginning
+of this chapter, with five repetitions of the fundamental oscillation.
+
+<P>Notice also that we didn't have to say <CODE>maxharm</CODE>.  If a number
+appears in the input list where a name should be, it's automatically assigned
+to <CODE>maxharm</CODE>.
+
+<P><CODE>Plot</CODE> allows you to specify any of six parameters.  Each parameter
+has a <EM>default</EM> value, the value that is used if you don't say
+anything about it.  For example, the default value for <CODE>deltax</CODE> is 2.
+Here are all the parameters:
+
+<P><TABLE>
+<TR><TH>name<TH>default<TH>purpose
+<TR><TD>maxharm<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;highest harmonic number included in series
+<TR><TD>deltax<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number of turtle steps skipped between calculations
+<TR><TD>yscale<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;75<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vertical motion is multiplied by this number
+<TR><TD>cycles<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number of cycles of fundamental shown
+<TR><TD>xrange<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;230<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;highest X coordinate allowed
+<TR><TD>skip<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number of harmonics skipped between terms
+</TABLE>
+
+<P>You've already seen what <CODE>maxharm</CODE>, <CODE>yscale</CODE>, <CODE>deltax</CODE>,
+and <CODE>cycles</CODE> are
+for.  Now I'll explain the others.
+
+<P><CODE>Xrange</CODE> is mainly changed when moving the program from
+one computer to another.  Each computer allows a particular number
+of turtle steps to fit on the screen in each dimension, horizontal
+and vertical.  <CODE>Xrange</CODE> is the largest horizontal position <CODE>plot</CODE>
+is allowed
+to use.  This is set a little below the largest possible X coordinate,
+just to make sure that there is no problem with wrapping around the
+screen.
+
+<P><CODE>Skip</CODE> is the number of harmonics skipped between terms.  To get odd
+harmonics, which we need for the square wave, we have to skip by 2
+each time, from 1 to 3, from 3 to 5, and so on.  Different values
+for <CODE>skip</CODE> will give very different shapes.
+
+<P>For example, if you are at all adventurous, you must have tried an
+even value of <CODE>maxharm</CODE> a while ago, getting a result like this:
+
+<P><PRE>plot 6
+</PRE>
+
+<P><CENTER><IMG SRC="plot6.gif" ALT="figure: plot6"></CENTER>
+
+<P>What
+you see is two cycles of an approximation to another shape, the
+<EM>sawtooth</EM>:
+
+<P><CENTER><IMG SRC="saw.gif" ALT="figure: saw"></CENTER>
+
+<P>Why
+two cycles?  Well, <CODE>plot 6</CODE> uses the
+second, fourth, and sixth harmonics.
+Supposing that the fundamental frequency is 440 again, this means
+that <CODE>plot</CODE> added frequencies of 880, 1760, and 2640 Hertz.  But these
+are also the fundamental, second harmonic, and third harmonic of 880
+Hertz.  By choosing only even harmonics, you've essentially chosen
+<EM>all</EM> the harmonics of <EM>twice the fundamental frequency</EM> you
+had in mind.  It is this doubling of the fundamental frequency that
+produces two cycles on the screen.  You could get one cycle of the
+same waveform by saying <CODE>plot [3 skip 1]</CODE>:
+
+<P><CENTER><IMG SRC="plot3skip1.gif" ALT="figure: plot3skip1"></CENTER>
+
+<P>You can see much more bizarre waveforms by using other values of <CODE>skip</CODE>.
+The best one I've found is <CODE>plot [16 skip 3]</CODE>:
+
+<P><CENTER><IMG SRC="plot16skip3.gif" ALT="figure: plot16skip3"></CENTER>
+
+<P>I
+chose a <CODE>maxharm</CODE> of 16 because it includes the fundamental plus five
+additional harmonics (4, 7, 10, 13, 16).  If I'd made <CODE>maxharm</CODE> 15 or
+17, I wouldn't have included the fundamental.
+
+<P><H2>Keyword Inputs</H2>
+
+
+
+
+
+<P>There are two different points of interest about this project.  One
+is the whole business of waveforms and Fourier series.  The second
+is the use of <EM>keyword</EM> inputs, which is the name for this system
+of giving information to <CODE>plot</CODE>.  The more usual style of Logo programming
+would have been to make <CODE>plot</CODE> a procedure with six inputs.  To draw
+a default graph, you would then have had to say
+
+<P><PRE>plot 5 2 75 1 230 2
+</PRE>
+
+<P>Since most of the time you want to use the default values
+for most of the inputs, all this typing would be an annoyance.  It
+would also be easy to make a mistake about the correct order of the
+inputs.  (This more usual Logo technique is called <EM>positional</EM>
+inputs.)  The combination of many necessary inputs with standard
+values for most of them makes the keyword technique appropriate here.
+It isn't always appropriate.  You wouldn't want to have to say
+
+<P><PRE>print item [index 2 list [vanilla chocolate strawberry]]
+</PRE>
+
+<P>because you have no trouble remembering which input to <CODE>item</CODE>
+is which, and you always want to provide both of them.
+
+<P>The procedure that interprets the keyword inputs is called <CODE>keyword</CODE>.
+<CODE>Keyword</CODE> was written to be a general tool, not limited to this particular
+program.  It takes two inputs.  The first is the input that you,
+the user, provide.  The second is a list of defaults.  When <CODE>plot</CODE> invokes
+<CODE>keyword</CODE>, the second input is this:
+
+<P><PRE>[maxharm 5 deltax 2 yscale 75 cycles 1 xrange 230 skip 2]
+</PRE>
+
+<P>This input tells <CODE>keyword</CODE> the names of all the keyword inputs
+as well as their default values.  It's in the same form as the actual
+input you give (a list of alternating names and values), and in fact
+<CODE>keyword</CODE> uses a single subprocedure, first to process the default list
+and then to process your input.
+
+<P><CODE>Keyword</CODE> is actually not <EM>perfectly</EM> general because it uses the
+assumption that all the values it gets are numeric.  The virtue of this
+assumption is that it allows <CODE>keyword</CODE> to recognize a number without a
+name as implicitly referring to the <CODE>maxharm</CODE> keyword.  (The name <CODE>
+maxharm</CODE> is not built into the procedure.  Instead, the first name in the
+list of default values is used.)  To use <CODE>keyword</CODE> in a context in which
+non-numeric words could be values as well as names, this assumption would
+have to be removed.
+
+<P>I didn't have keyword inputs in mind from the beginning.  When I started
+working on this project, the only input to <CODE>plot</CODE> was what I now call
+<CODE>maxharm</CODE>, the highest harmonic number to include.  All the other numbers
+were &quot;wired in&quot;; if I wanted to change something like what is now
+called <CODE>:xrange</CODE>, I'd edit all the procedures and change the numbers
+in the editor.
+
+<P>Editing all the procedures wasn't too difficult, since without the
+keyword-processing procedures everything fits in a single screenful.
+Changing the resolution (what is now <CODE>:deltax</CODE>) was a bit annoying,
+since I had to edit three different parts of the program.  (You can
+see that <CODE>:deltax</CODE> appears three times in the final version.)  When
+I finally got tired of that editing process, I decided to use keyword
+inputs.
+
+<P><H2>Making the Variables Local</H2>
+
+<P>The job of <CODE>keyword</CODE> is to create variables, one for each keyword,
+and assign a value to each variable.  If the user provides a value for
+a particular keyword, that's the value to use; if not, the default
+value is used.
+
+<P>When I first did this project, I wrote a version of <CODE>keyword</CODE> that
+creates global variables for the keywords:
+
+<P><PRE>to keyword :inputs :defaults
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make &quot;inputs sentence (first :defaults) :inputs]
+setup.values :defaults
+setup.values :inputs
+end
+
+to setup.values :list
+if emptyp :list [stop]
+make first :list first butfirst :list
+setup.values butfirst butfirst :list
+end
+</PRE>
+
+<P><CODE>Keyword</CODE> checks for the special cases of a single number
+(as in <CODE>plot 5</CODE>) or a list beginning with a number; in either case,
+a new list is made with the first keyword (<CODE>maxharm</CODE>) inserted before
+the number.  Then the default values are assigned to all the keyword
+variables, and finally the user's values are assigned to whatever keywords
+the user provided, replacing the defaults.
+
+<P>Since these keyword variables are only used within the <CODE>plot</CODE> program,
+it would be cleaner to make them local to <CODE>plot</CODE>, just as ordinary
+positional inputs are automatically local to a procedure.  I could have
+had <CODE>plot</CODE> take care of this before calling <CODE>keyword</CODE>:
+
+<P><PRE>to plot :inputs
+local [maxharm deltax yscale cycles xrange skip]
+keyword :inputs [maxharm 5 deltax 2 yscale 75 cycles 1 xrange 230 skip 2]
+...
+</PRE>
+
+<P>but I thought it would be unaesthetic to have to type the
+names twice!  What I really want is for <CODE>keyword</CODE> to be able to
+make the variables local.  But I can't just say
+
+<P><PRE>to keyword :inputs :defaults
+<U>local filter [not numberp ?] :defaults</U>
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make &quot;inputs sentence (first :defaults) :inputs]
+setup.values :defaults
+setup.values :inputs
+end
+</PRE>
+
+<P>because that would make the variables local to <CODE>keyword</CODE>
+itself, not to its caller, <CODE>plot</CODE>.  This is the same problem I had
+in writing <CODE>localmake</CODE> in Chapter 12, and the solution is the
+same:  Make <CODE>keyword</CODE> a macro!
+
+<P><PRE>.macro keyword :inputs :defaults
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make &quot;inputs sentence (first :defaults) :inputs]
+output `[local ,[filter [not numberp ?] :defaults]
+         setup.values ,[:defaults]
+         setup.values ,[:inputs]]
+end
+</PRE>
+
+<P>Now it will be <CODE>plot</CODE>, instead of <CODE>keyword</CODE>, that creates the
+local variables and calls <CODE>setup.values</CODE>.
+
+<P><H2>Indirect Assignment</H2>
+
+<P>The actual assignment of values to the keywords is a good illustration of
+indirect assignment in Logo.  The instruction that does the
+assignment is this:
+
+<P><PRE>make first :list first butfirst :list
+</PRE>
+
+<P>Usually the first input to <CODE>make</CODE> is an explicit quoted word,
+but in this program the variable names are computed, not explicit.
+This technique would be impossible in most programming languages.
+
+<P><H2>Numeric Precision</H2>
+
+
+
+<P>It's important that the program computes the Fourier
+series starting with the higher harmonic numbers, adding in the fundamental
+term last.  Recall the formula for the series:
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch13/math1.gif" ALT="math display"></CENTER><P>
+The value of the sine function for each term is divided
+by the harmonic number of the term.  In general, this means that the
+terms for higher numbered harmonics contribute smaller values to the
+sum.
+
+<P>Theoretically, it shouldn't matter in what order you add up a bunch
+of numbers.  But computers carry out numeric computations with only
+a limited precision.  Usually there is a particular number of <EM>
+significant digits</EM> that the computer can handle.  It doesn't matter
+how big or small the number is.  The numbers 1234, 1.234, and 0.00000001234
+all have four significant digits.
+
+<P>To take a slightly oversimplified case, suppose your computer can
+handle six significant digits.  Suppose that the value of the fundamental
+term is exactly 1.  Then the computer could add 0.00001 to that 1
+and get 1.00001 as the result.  But if you tried to add 0.000001 to
+1, the result (1.000001) would require seven significant digits. 
+The computer would round this off to exactly 1.
+
+<P>Now suppose that the 23rd term in some series is 0.000004, the 24th
+term is 0.000003, and the 25th is 0.000002.  (I just made up
+these values, but the general idea
+that they'd be quite small is true.)  Suppose we are adding the terms
+from left to right in the formula, and the sum of the first 22 terms
+is 2.73.  Adding the 23rd term would make it 2.730004, which is too
+many significant digits.  This sum would be rounded off to 2.73 again.
+Similarly, the 24th and 25th terms would make absolutely no difference
+to the result.
+
+<P>But now suppose we add up the terms from right to left.  The sum of
+the 25th and 24th terms is 0.000005, and adding in the 23rd term give
+0.000009.  If we were to add this to 2.73 the result would be 2.730009.
+Although this is still too many significant digits, the computer would
+round it off to 2.73001.  The three terms at the end <EM>would</EM> make
+a small difference in the result.
+
+<P>In the square wave series, the successive terms get smaller quite
+slowly.  You'd have to add very many terms before the problem I'm
+describing would really be important.  But other series have terms
+that get smaller quickly, so that even for a small number of terms it's
+important to add in the smaller terms before the larger ones.
+
+<P>
+
+<P>By the way, the procedure <CODE>series</CODE> that computes the value of the
+series for some particular <CODE>x</CODE> value is written recursively, but
+its task is iterative.  I could have said
+
+<P><PRE>to series
+localmake &quot;result 0
+for [harmonic :maxharm 1 [-:skip]] ~
+    [make &quot;result :result + (term :harmonic)]
+output :result
+end
+</PRE>
+
+<P>but the use of <CODE>make</CODE> to change the value of a variable
+repeatedly isn't very good Logo style.  What I really want is an <EM>
+operation</EM> corresponding to <CODE>for</CODE>, analogous to <CODE>map</CODE> as the
+operation corresponding to <CODE>foreach</CODE>.  Then I could say
+
+<P><PRE>to series
+output accumulate &quot;sum [harmonic :maxharm 1 [-:skip]] [term :harmonic]
+end
+</PRE>
+
+<P>You might enjoy using the techniques of Chapter 10 to
+implement <CODE>accumulate</CODE>.
+
+<P><H2>Dynamic Scope</H2>
+
+<P>One final point about the programming style of this project has to
+do with the use of Logo's dynamic scope.  Every procedure has access
+to the variables of its superprocedures, and this project takes advantage
+of the fact.  Many people think it's better style if every procedure is given
+all the information it needs as inputs.  I didn't follow that rule
+in this project because, as I've said, many of the variables were
+invented late in the development process, and I did as little rewriting
+as possible.
+
+<P>For example, here is the procedure that computes one term of the
+Fourier series:
+
+<P><PRE>to term :harmonic
+output (sin :xscale * :harmonic * :x) / :harmonic
+end
+</PRE>
+
+<P>Of the three numbers that are used in this computation, <CODE>
+:xscale</CODE> is constant throughout the program, so it's not unreasonable for it
+to be used globally.  But <CODE>:x</CODE> changes for every point.  <CODE>X</CODE> is, in
+fact, a local variable, but it's local to <CODE>plot</CODE> rather than to <CODE>
+term</CODE>.
+
+<P>
+
+<P>Why does it matter?  One reason is that people find it easier to understand
+a program if it's made very clear where each variable gets its value.  In
+this example, it's easy to miss the fact that <CODE>x</CODE> is the index variable
+in a <CODE>for</CODE> loop.  The second reason is that as written, <CODE>term</CODE> can
+be used only within <CODE>plot</CODE>.  If we wanted to compute the value of a
+Fourier series for some reason other than plotting it, we couldn't easily
+use the same procedures.
+
+<P>I decided to leave the program as it is, instead of cleaning it up
+for publication, so that you could see an example of a style that,
+after all, Logo makes possible by choosing to use dynamic scope. 
+In some ways, this style is simpler than one in which each procedure
+would have several more inputs.  You can decide for yourself if you
+find it easier or harder to read the program this way, compared to
+the officially approved style:
+
+<P><PRE>to term :x :harmonic :xscale
+output (sin :xscale * :harmonic * :x) / :harmonic
+end
+</PRE>
+
+<P>In this version of the procedure, I've made <CODE>x</CODE> the first
+input to <CODE>term</CODE>.  This seems most natural to me, considering that <CODE>
+term</CODE>'s job is to compute an algebraic function of <CODE>x</CODE>.  The argument to
+a function is very naturally represented in a computer program as
+the input to a procedure.
+
+<P>All I've changed in <CODE>term</CODE> itself is the title line.  But of course
+the invocation of <CODE>term</CODE>, which is in the procedure <CODE>series</CODE>, must
+be changed also.  And to be consistent, <CODE>series</CODE> should get <EM>its</EM>
+needed values as explicit inputs, too:
+
+<P><PRE>to series :x :harmonic :skip :xscale
+if :harmonic &lt; 1 [output 0]
+output (term :harmonic)+(series :harmonic-:skip)
+end
+</PRE>
+
+<P>We're up to four inputs, and it'd be easy to get them out of
+order when <CODE>series</CODE> is invoked by <CODE>plot</CODE>.  You can see why
+&quot;inheriting&quot; variables from a procedure's caller can simplify its use.
+
+<P><H2>Further Explorations</H2>
+
+<P>The fact that each term in the series is divided by <CODE>:harmonic</CODE> limits this
+program to a particular family of waveforms, the family that includes
+square waves and sawtooth waves.  In general, real musical instruments
+don't have such regularity in the extent to which each term contributes
+to the sum.  For example, I started
+by saying that clarinets and pipe
+organs are made of odd harmonics, just as square waves are.  But clarinets
+don't sound like organs, and neither sound like square waves.  There
+is a family resemblance, but there are definite differences too. 
+The differences are due to the different &quot;weights&quot; that each instrument
+gives to each harmonic.
+
+<P>Instead of the <CODE>maxharm</CODE> and <CODE>skip</CODE>
+variables in the program as I've written
+it, you could have an input called <CODE>timbre</CODE> (a French word for
+the characteristic sound of an instrument, pronounced sort of like
+&quot;tamper&quot; with a B instead of the P) that would be a list of
+weighting factors.  The equivalent of <CODE>plot 5</CODE> would be this timbre
+list:
+
+<P><PRE>[1 0 0.3333 0 0.2]
+</PRE>
+
+<P>This list says that the fundamental has a weight of 1, the
+second harmonic has a weight of 0 (so it's not used at all), the third
+harmonic has a weight of 1/3, and so on.
+
+<P>The <CODE>timbre</CODE> version of the program would be perfectly general.  You
+could create any instrument, if you could find the right weighting
+factors.  But so much generality makes it hard to know where to begin
+exploring all the possibilities.  Another thing you could do would
+be to try different kinds of formulas for weighting factors.  For
+example, you could write this new version of <CODE>term</CODE>:
+
+<P><PRE>to term :harmonic
+op (sin :xscale * :harmonic * :x)/(:harmonic * :harmonic)
+end
+</PRE>
+
+<P>What waveforms would result from this change?
+
+<P>If you're really interested in computer-generated music, you'll want
+to hear what these waveforms sound like.  Unfortunately, it's hard
+to do that with the standard sound generators in personal computers,
+which allow little or no control of timbre.  But if you have one
+of the computer-controllable musical instruments that have become
+available recently, you may be able to program them to reproduce
+the timbre of your choice.
+
+<P>On the other hand, you can hear the effect of different waveforms
+without a computer if you visit the <A HREF="http://www.exploratorium.edu/">Exploratorium</A>
+in San Francisco,
+the world's best museum.  Among their exhibits are several that let
+you experiment with different ways of generating sounds.  One of these
+exhibits is a machine that does audibly the same thing we've been
+doing graphically, adding up selected harmonics of a fundamental pitch.
+If you don't live near San Francisco, the Exploratorium is well worth
+the trip, no matter how far away you are!
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch14/manual.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P>As mentioned in the text, the appropriate value of <CODE>xrange</CODE> may be
+different depending on which computer you're using.
+
+<P><P>
+<P><PRE>
+to plot :inputs
+keyword :inputs ~
+        [maxharm 5 deltax 2 yscale 75 cycles 1 xrange 230 skip 2]
+localmake "xscale :cycles*180/:xrange
+splitscreen clearscreen hideturtle penup
+setpos list (-:xrange) 0
+pendown
+for [x :deltax [2*:xrange] :deltax] ~
+    [setpos list (xcor+:deltax) (:yscale * series :maxharm)]
+end
+
+;; Compute the Fourier series values
+
+to series :harmonic
+if :harmonic < 1 [output 0]
+output (term :harmonic)+(series :harmonic-:skip)
+end
+
+to term :harmonic
+output (sin :xscale * :harmonic * :x) / :harmonic
+end
+
+;; Handle keyword inputs
+
+.macro keyword :inputs :defaults
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make "inputs sentence (first :defaults) :inputs]
+output `[local ,[filter [not numberp ?] :defaults]
+         setup.values ,[:defaults]
+         setup.values ,[:inputs]]
+end
+
+to setup.values :list
+if emptyp :list [stop]
+make first :list first butfirst :list
+setup.values butfirst butfirst :list
+end
+</PRE><P>
+
+
+
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch14/manual.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch13/motion.gif b/js/games/nluqo.github.io/~bh/v2ch13/motion.gif
new file mode 100644
index 0000000..1999420
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/motion.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot1.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot1.gif
new file mode 100644
index 0000000..f2bf981
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot11by5.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot11by5.gif
new file mode 100644
index 0000000..3ff79e6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot11by5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot16skip3.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot16skip3.gif
new file mode 100644
index 0000000..7876d2c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot16skip3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot23.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot23.gif
new file mode 100644
index 0000000..5f65016
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot23.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot3skip1.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot3skip1.gif
new file mode 100644
index 0000000..f0f87f1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot3skip1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot45.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot45.gif
new file mode 100644
index 0000000..86eb3f1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot45.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot5.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot5.gif
new file mode 100644
index 0000000..552f5ac
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot6.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot6.gif
new file mode 100644
index 0000000..9489f66
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot6.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/plot77.gif b/js/games/nluqo.github.io/~bh/v2ch13/plot77.gif
new file mode 100644
index 0000000..3c4de50
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/plot77.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/saw.gif b/js/games/nluqo.github.io/~bh/v2ch13/saw.gif
new file mode 100644
index 0000000..a6f50ac
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/saw.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/scope.gif b/js/games/nluqo.github.io/~bh/v2ch13/scope.gif
new file mode 100644
index 0000000..6702923
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/scope.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/sine5.gif b/js/games/nluqo.github.io/~bh/v2ch13/sine5.gif
new file mode 100644
index 0000000..3caaa7a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/sine5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/square5.gif b/js/games/nluqo.github.io/~bh/v2ch13/square5.gif
new file mode 100644
index 0000000..2f0515e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/square5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/squig5.gif b/js/games/nluqo.github.io/~bh/v2ch13/squig5.gif
new file mode 100644
index 0000000..1457e0c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/squig5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/tri5.gif b/js/games/nluqo.github.io/~bh/v2ch13/tri5.gif
new file mode 100644
index 0000000..b6d6cdf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/tri5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch13/v2ch13.html b/js/games/nluqo.github.io/~bh/v2ch13/v2ch13.html
new file mode 100644
index 0000000..74ea2c4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch13/v2ch13.html
@@ -0,0 +1,853 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 13: Example: Fourier Series Plotter</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Fourier Series Plotter</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch13.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch14/manual.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch13/plot.lg"><CODE>plot</CODE></A>
+
+<P>A particular musical note (middle C, say) played on a piano and played
+on a violin sound similar in some ways and different in other ways.
+Two different notes played on the violin also have similarities and
+differences.  How do you hear which note is being played, and how
+do you know what instrument you're listening to?
+
+<P>To do justice to these questions would fill up an entire book.  For example,
+a piano produces sound when a felt-covered wooden hammer hits metal wires,
+or strings.  Each piano key controls one hammer, but each hammer may hit
+from one to three strings.  It turns out that the strings for a particular
+note are not tuned to exactly the same pitch.  Part of the richness of the
+piano's sound comes from the interplay of slightly different pitches making
+up the same note.
+
+<P>Another contributing factor to the recognition of different instruments is
+their differences in attack and decay.  Does the sound of a note start
+abruptly, or gradually?  The differences are not only a matter of loudness,
+though.  A few instruments start out each note with a very pure, simple tone
+like a tuning fork.  Gradually, the tone becomes more complex until it
+finally reaches the timbre you associate with the instrument.  But a bowed
+violin, a more typical example, starts out each note almost as a burst of
+pure noise, as the bow hits the strings, and gradually mellows into the
+sound of a particular note.  If you are experimentally inclined, try tape
+recording the same note as played by several instruments.  Then cut out the
+beginnings and ends of the notes, and retain only the middle section.  Play
+these to people and see how well they can identify the instruments, compared
+to their ability to identify the complete recorded notes.
+
+<P>
+
+For this chapter, though, I'm going to ignore these complications, and
+concentrate on the differences in the <EM>steady-state</EM> central part of a
+note as played by a particular instrument.  What all such steady
+musical sounds have in common is that they are largely <EM>
+periodic</EM>.  This means that if you graph the air pressure produced by the
+instrument over time (or the voltage when the sound is represented
+electrically in a hifi system), the same pattern of high and low pressures
+repeats again and again.  Here is an example.  In this picture, the motion
+of your eye from left to right represents the passing of time.
+
+<P><CENTER><IMG SRC="squig5.gif" ALT="figure: squig5"></CENTER>
+
+<P>
+
+The height of the squiggle on the page, at
+any particular moment, represents the sound pressure at that moment.  So
+what this picture shows is that there are many small up-and-down
+oscillations superimposed on one large, regular up-and-down motion.  (This
+one large oscillation is called the <EM>fundamental</EM> frequency.)  You can
+see that the entire picture consists of five repetitions of a smaller
+squiggle with just one of the large oscillations.
+
+<P>From what I've said about oscillations, you might get the impression
+that this is a picture of something like a foghorn or siren, in which
+you can hear an alternation of loud and soft moments.  But this is
+actually the picture of what sounds like a perfectly steady tone.
+The entire width of the page represents about one one-hundredth of
+a second.  There are a few hundred repetitions of the single large
+up-and-down cycle in each second of a musical note.  The exact number
+of repetitions is the <EM>frequency</EM> of the note,
+and is the same for every instrument.  For example, the note A above
+middle C has a pitch of 440 cycles per second, or 440 Hertz.
+
+<P>All instruments playing A above middle C will have a picture with
+the same fundamental frequency of 440 Hertz.  What is different from
+one instrument to another is the exact shape of the squiggle.  (By
+the way, the technical name for a squiggle is a <EM>waveform.</EM>  You
+can see the waveform for a note by connecting a microphone to an oscilloscope,
+a device that shows the waveform on a TV-like screen.)
+
+<P>Here is a picture of the simplest, purest possible tone:
+
+<P><CENTER><IMG SRC="sine5.gif" ALT="figure: sine5"></CENTER>
+
+<P>This is the waveform you'd get from an ideal tuning fork,
+with no impurities or bumps.  It is called a <EM>sine wave.</EM>  This
+particular kind of oscillation turns up in many situations, not just musical
+sounds.  For example, suppose you write a program that starts a turtle
+moving in a circle forever.
+
+<P><PRE>to circle
+fd 1
+rt 1
+circle
+end
+</PRE>
+
+<P>Think about the motion of the turtle, and concentrate only
+on its vertical position on the screen.  Never mind its motion from
+left to right.  The up-and-down part of the turtle's motion over time
+looks just like this sine wave.
+
+<P>This says more than simply that the turtle alternates moving up and
+down.  For example, the turtle's vertical motion might have looked
+like this over time:
+
+<P><CENTER><IMG SRC="tri5.gif" ALT="figure: tri5"></CENTER>
+
+<P>If
+this were the picture of the turtle's motion, it would mean that
+the turtle's vertical position climbed at a steady rate until it reached
+the top of the circle, then abruptly turned around and started down
+again.  But in fact what happens is that the height of the turtle
+changes most quickly when the turtle is near the &quot;Equator&quot;
+of its circle.  The turtle's vertical speed gets less and less as
+the turtle gets near the &quot;poles.&quot;  This speed change corresponds
+to the gradual flattening of the sine wave near the top and bottom.
+(You may find it confusing when I say that the turtle's vertical motion
+slows down, because the turtle's speed doesn't seem to change as it
+draws.  But what happens is that near the Equator, the turtle's speed
+is mostly vertical; near the poles, its speed is mostly horizontal.
+We aren't thinking about the horizontal aspect of its motion right
+now.)
+
+<P><CENTER><IMG SRC="motion.gif" ALT="figure: motion"></CENTER>
+
+<P>What makes sine waves most important, though, is that <EM>any</EM> periodic
+waveform can be analyzed as the sum of a bunch of sine waves of different
+frequencies.  (Sometimes an infinite number of since waves must be
+added together.)  The frequencies of the sine waves will always be
+multiples of the fundamental frequency.  This important mathematical
+result was discovered by the French mathematician
+Jean-Baptiste-Joseph Fourier (1768-1830).  The representation of
+a mathematical function as a sum of sine waves is called a <EM>
+Fourier series.</EM>
+
+<P>For example, when a violin plays A above middle C, the waveform that
+results will include a sine wave with frequency 440 Hertz, one with
+frequency 880 Hertz, one at 1320 Hertz, and so on.  Not all of these
+contribute equally to the complete waveform.  The <EM>amplitude</EM> of
+each sine wave (the amount of swing, or the vertical distance in the
+picture) will be different for each.  Typically, the fundamental frequency
+has the largest amplitude, and the others (which are called <EM>
+harmonics</EM> or <EM>overtones</EM>) have smaller amplitudes.  The
+precise amplitudes of each harmonic are what determine the steady-state
+timbre of a particular instrument.
+
+<P><H2>Square Waves</H2>
+
+<P>Two traditional musical instruments, the clarinet and the
+pipe organ, share a curious characteristic: their Fourier series
+contain only odd harmonics.  In other words, if a clarinet is
+playing A above middle C, the waveform includes frequencies of 440 Hertz,
+1320 Hertz (3 times 440), 2200 Hertz (5 times 440), and so on.  But the
+waveform does not include frequencies of 880 Hertz (2 times 440), 1760 Hertz
+(4 times 440), and so on.  (I'm oversimplifying a bit in the case of the
+pipe organ.  What I've said about only odd harmonics is true about each
+pipe, but the organ can be set up to combine several pipes in order to
+include even harmonics of a note.)
+
+<P>In recent times, a third musical instrument has come to share this
+peculiar Fourier series: the computer.  (Perhaps you were wondering
+where computers come into this.)  Today there are computer-controlled
+musical instruments that can generate
+any possible sound.  Musicians have even used computers to create
+new instrument timbres that are not possible with ordinary instruments.
+But the particular timbre that most people associate with
+computer music is the one produced by the simplest possible
+computer sound generator.  Instead of a steady oscillation in sound
+pressure, this simple device can only be on or off at a given moment.  The
+computer produces sound by flipping the device from on to off and back at a
+particular rate.  Such a device produces a <EM>square wave</EM>, like
+this:
+
+<P><CENTER><IMG SRC="square5.gif" ALT="figure: square5"></CENTER>
+
+<P>No sound that occurs in nature has a waveform that turns
+corners so abruptly.  But what is &quot;natural&quot; in nature isn't necessarily
+what's &quot;natural&quot; for a computer.  For many years, computer-generated
+music invariably meant square waves except in very fancy music research
+centers.
+
+<P>More recently, new integrated circuit technology has made
+it relatively inexpensive to equip computers with &quot;music chips&quot;
+that generate sine waves.  The stereotyped sound of computer music
+is becoming uncommon.  But I still find square waves fascinating
+for several reasons.
+
+<P>One place where square waves are still used is in the hifi magazines,
+in their tests of amplifiers.  The testing laboratories feed a square
+wave into an amplifier, and show oscilloscope pictures of the waveform
+going into the amp and the waveform coming out.  Here is an example:
+
+<P>
+<CENTER><IMG SRC="scope.gif" ALT="figure: scope"></CENTER>
+
+
+<P>The oscillation that is visible in the output near the corners of
+the input is called <EM>ringing</EM>.  A lot of ringing indicates that
+the amplifier doesn't have good high-frequency response.
+
+<P>Here is why a square wave is a good test of high frequencies:  The
+Fourier series corresponding to the square wave includes an infinite
+number of odd-harmonic sine wave components.  In other words, a perfect
+square wave includes infinitely high frequencies.  (In practice, the
+input picture isn't a perfect square wave.  You can see that the vertical
+segments aren't <EM>quite</EM> truly vertical, for example.)  No amplifier
+can reproduce infinitely high frequencies faithfully.  The result
+is that the output from the amplifier includes only some of the harmonics
+that make up the input.  It turns out that such a <EM>partial series</EM>,
+with relatively few of the harmonics included, produces a waveform
+in which the ringing phenomenon at the corners is clearly visible.
+
+<P>If you think about it, that's a bit unexpected.  Normally, the more
+harmonics, the more complicated the waveform.  For example, the simplest
+waveform is the one with only the fundamental, and no added harmonics.
+Yet, <EM>removing</EM> harmonics from the square wave produces a <EM>
+more</EM> complicated picture.  I like paradoxes like that.  I wanted
+to write a computer program to help me understand this one.
+
+<P>Before you can look into the square wave in detail, you have to know
+not only the fact that it uses odd harmonics, but also the amplitude
+of each harmonic.  A square wave with fundamental frequency <EM>f</EM>
+has this formula: <P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch13/math1.gif" ALT="math display"></CENTER>
+<P>The dots at the end indicate that this series goes on forever.
+The amplitude of each sine wave is the reciprocal of the harmonic
+number (one divided by the number).
+
+<P>This project draws pictures of waveforms containing some number of
+terms of this series.  (Each sine wave is called a term.)  The program
+allows many different ways of controlling exactly what is drawn.
+
+<P>To start with something very simple, try this instruction:
+
+<P><PRE>plot 1
+</PRE>
+
+<P>The effect of this command is to draw one cycle of a pure
+sine wave:
+
+<P><CENTER><IMG SRC="plot1.gif" ALT="figure: plot1"></CENTER>
+
+<P>This
+is the first term of the series for the square wave.  Now try
+this:
+
+<P><PRE>plot 5
+</PRE>
+
+<P><CENTER><IMG SRC="plot5.gif" ALT="figure: plot5"></CENTER>
+
+<P>The
+input to <CODE>plot</CODE> is the harmonic number of the highest harmonic.
+In this example, we've drawn three sine waves added together: the
+fundamental, third harmonic, and fifth harmonic.
+
+<P>To see a plot looking somewhat more like the pictures in the amplifier
+tests, try
+
+<P><PRE>plot 23
+</PRE>
+
+<P><CENTER><IMG SRC="plot23.gif" ALT="figure: plot23"></CENTER>
+
+<P>This
+contains the first 12 odd harmonics.  (Remember to use an odd
+number as input, if you want to see something that looks like a square
+wave.)  You can see that the result still includes some oscillation
+in the horizontal sections, but does have an overall square shape.
+
+<P>A mediocre hifi amp has a frequency response that is good to about
+20,000 Hertz.  This is about the 45th harmonic of 440 Hertz.  To see
+how A above middle C would come out on such an amplifier, try
+
+<P><PRE>plot 45
+</PRE>
+
+<P><CENTER><IMG SRC="plot45.gif" ALT="figure: plot45"></CENTER>
+
+<P>There
+is still some ringing near the corners, but the middle of the
+horizontal segment is starting to look really flat.  A better amplifier
+might be good to 30,000 Hertz.  To see how that would look, try
+
+<P><PRE>plot 77
+</PRE>
+
+<P><CENTER><IMG SRC="plot77.gif" ALT="figure: plot77"></CENTER>
+
+<P>(The
+drawing of the picture takes longer when you use a larger input
+to <CODE>plot</CODE>, because the program has to calculate more terms of the series.)
+
+<P>So far, we have only changed one of the possible parameters controlling
+the waveform, namely the highest harmonic.  The program allows you
+to control several other elements of the picture.  For example, try
+this:
+
+<P><PRE>plot [maxharm 77 yscale 140 deltax 1]
+</PRE>
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch13/plot77big.gif" ALT="figure: plot77big"></CENTER>
+
+<P><CODE>
+Plot</CODE> takes one input, but this time the input is a list instead of
+a single number.  The members of the list are used as sort of &quot;sub-inputs.&quot;
+The odd-numbered members are the <EM>names</EM> of parameters,
+for which the even-numbered members provide <EM>values.</EM>
+
+<P><CODE>Maxharm</CODE> stands for &quot;maximum harmonic&quot;; it is the parameter you were
+setting when you used a single number as the input.  <CODE>Yscale</CODE> is an
+adjustment for the height of the plot.  (To &quot;scale&quot; a bunch of numbers
+means to multiply all of them by some constant value, the &quot;scale factor.&quot;)
+You may have noticed that as the
+number of harmonics has increased, the pictures have been getting smaller in
+the vertical direction; by increasing the value of <CODE>yscale</CODE> we can
+expand the height of the plot to show more detail.  Similarly, <CODE>deltax</CODE>
+allows us to show more horizontal detail, not by widening the picture but by
+computing the value for every dot.  Ordinarily, the program saves time by
+calculating every second dot.  This approximation is usually good enough,
+but sometimes not.  (<CODE>Deltax</CODE> means &quot;change in X.&quot;  Delta is the
+name of the Greek letter D (&Delta;), which mathematicians use to represent
+a small change in something.)
+
+<P>Here's another example:
+
+<P><PRE>plot [11 cycles 5]
+</PRE>
+
+<P><CENTER><IMG SRC="plot11by5.gif" ALT="figure: plot11by5"></CENTER>
+
+<P><CODE>Cycles</CODE> indicates
+the number of complete cycles you want to see.  By saying <CODE>cycles 5</CODE>
+in this example, I drew a picture like the ones near the beginning
+of this chapter, with five repetitions of the fundamental oscillation.
+
+<P>Notice also that we didn't have to say <CODE>maxharm</CODE>.  If a number
+appears in the input list where a name should be, it's automatically assigned
+to <CODE>maxharm</CODE>.
+
+<P><CODE>Plot</CODE> allows you to specify any of six parameters.  Each parameter
+has a <EM>default</EM> value, the value that is used if you don't say
+anything about it.  For example, the default value for <CODE>deltax</CODE> is 2.
+Here are all the parameters:
+
+<P><TABLE>
+<TR><TH>name<TH>default<TH>purpose
+<TR><TD>maxharm<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;highest harmonic number included in series
+<TR><TD>deltax<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number of turtle steps skipped between calculations
+<TR><TD>yscale<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;75<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vertical motion is multiplied by this number
+<TR><TD>cycles<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number of cycles of fundamental shown
+<TR><TD>xrange<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;230<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;highest X coordinate allowed
+<TR><TD>skip<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number of harmonics skipped between terms
+</TABLE>
+
+<P>You've already seen what <CODE>maxharm</CODE>, <CODE>yscale</CODE>, <CODE>deltax</CODE>,
+and <CODE>cycles</CODE> are
+for.  Now I'll explain the others.
+
+<P><CODE>Xrange</CODE> is mainly changed when moving the program from
+one computer to another.  Each computer allows a particular number
+of turtle steps to fit on the screen in each dimension, horizontal
+and vertical.  <CODE>Xrange</CODE> is the largest horizontal position <CODE>plot</CODE>
+is allowed
+to use.  This is set a little below the largest possible X coordinate,
+just to make sure that there is no problem with wrapping around the
+screen.
+
+<P><CODE>Skip</CODE> is the number of harmonics skipped between terms.  To get odd
+harmonics, which we need for the square wave, we have to skip by 2
+each time, from 1 to 3, from 3 to 5, and so on.  Different values
+for <CODE>skip</CODE> will give very different shapes.
+
+<P>For example, if you are at all adventurous, you must have tried an
+even value of <CODE>maxharm</CODE> a while ago, getting a result like this:
+
+<P><PRE>plot 6
+</PRE>
+
+<P><CENTER><IMG SRC="plot6.gif" ALT="figure: plot6"></CENTER>
+
+<P>What
+you see is two cycles of an approximation to another shape, the
+<EM>sawtooth</EM>:
+
+<P><CENTER><IMG SRC="saw.gif" ALT="figure: saw"></CENTER>
+
+<P>Why
+two cycles?  Well, <CODE>plot 6</CODE> uses the
+second, fourth, and sixth harmonics.
+Supposing that the fundamental frequency is 440 again, this means
+that <CODE>plot</CODE> added frequencies of 880, 1760, and 2640 Hertz.  But these
+are also the fundamental, second harmonic, and third harmonic of 880
+Hertz.  By choosing only even harmonics, you've essentially chosen
+<EM>all</EM> the harmonics of <EM>twice the fundamental frequency</EM> you
+had in mind.  It is this doubling of the fundamental frequency that
+produces two cycles on the screen.  You could get one cycle of the
+same waveform by saying <CODE>plot [3 skip 1]</CODE>:
+
+<P><CENTER><IMG SRC="plot3skip1.gif" ALT="figure: plot3skip1"></CENTER>
+
+<P>You can see much more bizarre waveforms by using other values of <CODE>skip</CODE>.
+The best one I've found is <CODE>plot [16 skip 3]</CODE>:
+
+<P><CENTER><IMG SRC="plot16skip3.gif" ALT="figure: plot16skip3"></CENTER>
+
+<P>I
+chose a <CODE>maxharm</CODE> of 16 because it includes the fundamental plus five
+additional harmonics (4, 7, 10, 13, 16).  If I'd made <CODE>maxharm</CODE> 15 or
+17, I wouldn't have included the fundamental.
+
+<P><H2>Keyword Inputs</H2>
+
+
+
+
+
+<P>There are two different points of interest about this project.  One
+is the whole business of waveforms and Fourier series.  The second
+is the use of <EM>keyword</EM> inputs, which is the name for this system
+of giving information to <CODE>plot</CODE>.  The more usual style of Logo programming
+would have been to make <CODE>plot</CODE> a procedure with six inputs.  To draw
+a default graph, you would then have had to say
+
+<P><PRE>plot 5 2 75 1 230 2
+</PRE>
+
+<P>Since most of the time you want to use the default values
+for most of the inputs, all this typing would be an annoyance.  It
+would also be easy to make a mistake about the correct order of the
+inputs.  (This more usual Logo technique is called <EM>positional</EM>
+inputs.)  The combination of many necessary inputs with standard
+values for most of them makes the keyword technique appropriate here.
+It isn't always appropriate.  You wouldn't want to have to say
+
+<P><PRE>print item [index 2 list [vanilla chocolate strawberry]]
+</PRE>
+
+<P>because you have no trouble remembering which input to <CODE>item</CODE>
+is which, and you always want to provide both of them.
+
+<P>The procedure that interprets the keyword inputs is called <CODE>keyword</CODE>.
+<CODE>Keyword</CODE> was written to be a general tool, not limited to this particular
+program.  It takes two inputs.  The first is the input that you,
+the user, provide.  The second is a list of defaults.  When <CODE>plot</CODE> invokes
+<CODE>keyword</CODE>, the second input is this:
+
+<P><PRE>[maxharm 5 deltax 2 yscale 75 cycles 1 xrange 230 skip 2]
+</PRE>
+
+<P>This input tells <CODE>keyword</CODE> the names of all the keyword inputs
+as well as their default values.  It's in the same form as the actual
+input you give (a list of alternating names and values), and in fact
+<CODE>keyword</CODE> uses a single subprocedure, first to process the default list
+and then to process your input.
+
+<P><CODE>Keyword</CODE> is actually not <EM>perfectly</EM> general because it uses the
+assumption that all the values it gets are numeric.  The virtue of this
+assumption is that it allows <CODE>keyword</CODE> to recognize a number without a
+name as implicitly referring to the <CODE>maxharm</CODE> keyword.  (The name <CODE>
+maxharm</CODE> is not built into the procedure.  Instead, the first name in the
+list of default values is used.)  To use <CODE>keyword</CODE> in a context in which
+non-numeric words could be values as well as names, this assumption would
+have to be removed.
+
+<P>I didn't have keyword inputs in mind from the beginning.  When I started
+working on this project, the only input to <CODE>plot</CODE> was what I now call
+<CODE>maxharm</CODE>, the highest harmonic number to include.  All the other numbers
+were &quot;wired in&quot;; if I wanted to change something like what is now
+called <CODE>:xrange</CODE>, I'd edit all the procedures and change the numbers
+in the editor.
+
+<P>Editing all the procedures wasn't too difficult, since without the
+keyword-processing procedures everything fits in a single screenful.
+Changing the resolution (what is now <CODE>:deltax</CODE>) was a bit annoying,
+since I had to edit three different parts of the program.  (You can
+see that <CODE>:deltax</CODE> appears three times in the final version.)  When
+I finally got tired of that editing process, I decided to use keyword
+inputs.
+
+<P><H2>Making the Variables Local</H2>
+
+<P>The job of <CODE>keyword</CODE> is to create variables, one for each keyword,
+and assign a value to each variable.  If the user provides a value for
+a particular keyword, that's the value to use; if not, the default
+value is used.
+
+<P>When I first did this project, I wrote a version of <CODE>keyword</CODE> that
+creates global variables for the keywords:
+
+<P><PRE>to keyword :inputs :defaults
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make &quot;inputs sentence (first :defaults) :inputs]
+setup.values :defaults
+setup.values :inputs
+end
+
+to setup.values :list
+if emptyp :list [stop]
+make first :list first butfirst :list
+setup.values butfirst butfirst :list
+end
+</PRE>
+
+<P><CODE>Keyword</CODE> checks for the special cases of a single number
+(as in <CODE>plot 5</CODE>) or a list beginning with a number; in either case,
+a new list is made with the first keyword (<CODE>maxharm</CODE>) inserted before
+the number.  Then the default values are assigned to all the keyword
+variables, and finally the user's values are assigned to whatever keywords
+the user provided, replacing the defaults.
+
+<P>Since these keyword variables are only used within the <CODE>plot</CODE> program,
+it would be cleaner to make them local to <CODE>plot</CODE>, just as ordinary
+positional inputs are automatically local to a procedure.  I could have
+had <CODE>plot</CODE> take care of this before calling <CODE>keyword</CODE>:
+
+<P><PRE>to plot :inputs
+local [maxharm deltax yscale cycles xrange skip]
+keyword :inputs [maxharm 5 deltax 2 yscale 75 cycles 1 xrange 230 skip 2]
+...
+</PRE>
+
+<P>but I thought it would be unaesthetic to have to type the
+names twice!  What I really want is for <CODE>keyword</CODE> to be able to
+make the variables local.  But I can't just say
+
+<P><PRE>to keyword :inputs :defaults
+<U>local filter [not numberp ?] :defaults</U>
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make &quot;inputs sentence (first :defaults) :inputs]
+setup.values :defaults
+setup.values :inputs
+end
+</PRE>
+
+<P>because that would make the variables local to <CODE>keyword</CODE>
+itself, not to its caller, <CODE>plot</CODE>.  This is the same problem I had
+in writing <CODE>localmake</CODE> in Chapter 12, and the solution is the
+same:  Make <CODE>keyword</CODE> a macro!
+
+<P><PRE>.macro keyword :inputs :defaults
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make &quot;inputs sentence (first :defaults) :inputs]
+output `[local ,[filter [not numberp ?] :defaults]
+         setup.values ,[:defaults]
+         setup.values ,[:inputs]]
+end
+</PRE>
+
+<P>Now it will be <CODE>plot</CODE>, instead of <CODE>keyword</CODE>, that creates the
+local variables and calls <CODE>setup.values</CODE>.
+
+<P><H2>Indirect Assignment</H2>
+
+<P>The actual assignment of values to the keywords is a good illustration of
+indirect assignment in Logo.  The instruction that does the
+assignment is this:
+
+<P><PRE>make first :list first butfirst :list
+</PRE>
+
+<P>Usually the first input to <CODE>make</CODE> is an explicit quoted word,
+but in this program the variable names are computed, not explicit.
+This technique would be impossible in most programming languages.
+
+<P><H2>Numeric Precision</H2>
+
+
+
+<P>It's important that the program computes the Fourier
+series starting with the higher harmonic numbers, adding in the fundamental
+term last.  Recall the formula for the series:
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch13/math1.gif" ALT="math display"></CENTER><P>
+The value of the sine function for each term is divided
+by the harmonic number of the term.  In general, this means that the
+terms for higher numbered harmonics contribute smaller values to the
+sum.
+
+<P>Theoretically, it shouldn't matter in what order you add up a bunch
+of numbers.  But computers carry out numeric computations with only
+a limited precision.  Usually there is a particular number of <EM>
+significant digits</EM> that the computer can handle.  It doesn't matter
+how big or small the number is.  The numbers 1234, 1.234, and 0.00000001234
+all have four significant digits.
+
+<P>To take a slightly oversimplified case, suppose your computer can
+handle six significant digits.  Suppose that the value of the fundamental
+term is exactly 1.  Then the computer could add 0.00001 to that 1
+and get 1.00001 as the result.  But if you tried to add 0.000001 to
+1, the result (1.000001) would require seven significant digits. 
+The computer would round this off to exactly 1.
+
+<P>Now suppose that the 23rd term in some series is 0.000004, the 24th
+term is 0.000003, and the 25th is 0.000002.  (I just made up
+these values, but the general idea
+that they'd be quite small is true.)  Suppose we are adding the terms
+from left to right in the formula, and the sum of the first 22 terms
+is 2.73.  Adding the 23rd term would make it 2.730004, which is too
+many significant digits.  This sum would be rounded off to 2.73 again.
+Similarly, the 24th and 25th terms would make absolutely no difference
+to the result.
+
+<P>But now suppose we add up the terms from right to left.  The sum of
+the 25th and 24th terms is 0.000005, and adding in the 23rd term give
+0.000009.  If we were to add this to 2.73 the result would be 2.730009.
+Although this is still too many significant digits, the computer would
+round it off to 2.73001.  The three terms at the end <EM>would</EM> make
+a small difference in the result.
+
+<P>In the square wave series, the successive terms get smaller quite
+slowly.  You'd have to add very many terms before the problem I'm
+describing would really be important.  But other series have terms
+that get smaller quickly, so that even for a small number of terms it's
+important to add in the smaller terms before the larger ones.
+
+<P>
+
+<P>By the way, the procedure <CODE>series</CODE> that computes the value of the
+series for some particular <CODE>x</CODE> value is written recursively, but
+its task is iterative.  I could have said
+
+<P><PRE>to series
+localmake &quot;result 0
+for [harmonic :maxharm 1 [-:skip]] ~
+    [make &quot;result :result + (term :harmonic)]
+output :result
+end
+</PRE>
+
+<P>but the use of <CODE>make</CODE> to change the value of a variable
+repeatedly isn't very good Logo style.  What I really want is an <EM>
+operation</EM> corresponding to <CODE>for</CODE>, analogous to <CODE>map</CODE> as the
+operation corresponding to <CODE>foreach</CODE>.  Then I could say
+
+<P><PRE>to series
+output accumulate &quot;sum [harmonic :maxharm 1 [-:skip]] [term :harmonic]
+end
+</PRE>
+
+<P>You might enjoy using the techniques of Chapter 10 to
+implement <CODE>accumulate</CODE>.
+
+<P><H2>Dynamic Scope</H2>
+
+<P>One final point about the programming style of this project has to
+do with the use of Logo's dynamic scope.  Every procedure has access
+to the variables of its superprocedures, and this project takes advantage
+of the fact.  Many people think it's better style if every procedure is given
+all the information it needs as inputs.  I didn't follow that rule
+in this project because, as I've said, many of the variables were
+invented late in the development process, and I did as little rewriting
+as possible.
+
+<P>For example, here is the procedure that computes one term of the
+Fourier series:
+
+<P><PRE>to term :harmonic
+output (sin :xscale * :harmonic * :x) / :harmonic
+end
+</PRE>
+
+<P>Of the three numbers that are used in this computation, <CODE>
+:xscale</CODE> is constant throughout the program, so it's not unreasonable for it
+to be used globally.  But <CODE>:x</CODE> changes for every point.  <CODE>X</CODE> is, in
+fact, a local variable, but it's local to <CODE>plot</CODE> rather than to <CODE>
+term</CODE>.
+
+<P>
+
+<P>Why does it matter?  One reason is that people find it easier to understand
+a program if it's made very clear where each variable gets its value.  In
+this example, it's easy to miss the fact that <CODE>x</CODE> is the index variable
+in a <CODE>for</CODE> loop.  The second reason is that as written, <CODE>term</CODE> can
+be used only within <CODE>plot</CODE>.  If we wanted to compute the value of a
+Fourier series for some reason other than plotting it, we couldn't easily
+use the same procedures.
+
+<P>I decided to leave the program as it is, instead of cleaning it up
+for publication, so that you could see an example of a style that,
+after all, Logo makes possible by choosing to use dynamic scope. 
+In some ways, this style is simpler than one in which each procedure
+would have several more inputs.  You can decide for yourself if you
+find it easier or harder to read the program this way, compared to
+the officially approved style:
+
+<P><PRE>to term :x :harmonic :xscale
+output (sin :xscale * :harmonic * :x) / :harmonic
+end
+</PRE>
+
+<P>In this version of the procedure, I've made <CODE>x</CODE> the first
+input to <CODE>term</CODE>.  This seems most natural to me, considering that <CODE>
+term</CODE>'s job is to compute an algebraic function of <CODE>x</CODE>.  The argument to
+a function is very naturally represented in a computer program as
+the input to a procedure.
+
+<P>All I've changed in <CODE>term</CODE> itself is the title line.  But of course
+the invocation of <CODE>term</CODE>, which is in the procedure <CODE>series</CODE>, must
+be changed also.  And to be consistent, <CODE>series</CODE> should get <EM>its</EM>
+needed values as explicit inputs, too:
+
+<P><PRE>to series :x :harmonic :skip :xscale
+if :harmonic &lt; 1 [output 0]
+output (term :harmonic)+(series :harmonic-:skip)
+end
+</PRE>
+
+<P>We're up to four inputs, and it'd be easy to get them out of
+order when <CODE>series</CODE> is invoked by <CODE>plot</CODE>.  You can see why
+&quot;inheriting&quot; variables from a procedure's caller can simplify its use.
+
+<P><H2>Further Explorations</H2>
+
+<P>The fact that each term in the series is divided by <CODE>:harmonic</CODE> limits this
+program to a particular family of waveforms, the family that includes
+square waves and sawtooth waves.  In general, real musical instruments
+don't have such regularity in the extent to which each term contributes
+to the sum.  For example, I started
+by saying that clarinets and pipe
+organs are made of odd harmonics, just as square waves are.  But clarinets
+don't sound like organs, and neither sound like square waves.  There
+is a family resemblance, but there are definite differences too. 
+The differences are due to the different &quot;weights&quot; that each instrument
+gives to each harmonic.
+
+<P>Instead of the <CODE>maxharm</CODE> and <CODE>skip</CODE>
+variables in the program as I've written
+it, you could have an input called <CODE>timbre</CODE> (a French word for
+the characteristic sound of an instrument, pronounced sort of like
+&quot;tamper&quot; with a B instead of the P) that would be a list of
+weighting factors.  The equivalent of <CODE>plot 5</CODE> would be this timbre
+list:
+
+<P><PRE>[1 0 0.3333 0 0.2]
+</PRE>
+
+<P>This list says that the fundamental has a weight of 1, the
+second harmonic has a weight of 0 (so it's not used at all), the third
+harmonic has a weight of 1/3, and so on.
+
+<P>The <CODE>timbre</CODE> version of the program would be perfectly general.  You
+could create any instrument, if you could find the right weighting
+factors.  But so much generality makes it hard to know where to begin
+exploring all the possibilities.  Another thing you could do would
+be to try different kinds of formulas for weighting factors.  For
+example, you could write this new version of <CODE>term</CODE>:
+
+<P><PRE>to term :harmonic
+op (sin :xscale * :harmonic * :x)/(:harmonic * :harmonic)
+end
+</PRE>
+
+<P>What waveforms would result from this change?
+
+<P>If you're really interested in computer-generated music, you'll want
+to hear what these waveforms sound like.  Unfortunately, it's hard
+to do that with the standard sound generators in personal computers,
+which allow little or no control of timbre.  But if you have one
+of the computer-controllable musical instruments that have become
+available recently, you may be able to program them to reproduce
+the timbre of your choice.
+
+<P>On the other hand, you can hear the effect of different waveforms
+without a computer if you visit the <A HREF="http://www.exploratorium.edu/">Exploratorium</A>
+in San Francisco,
+the world's best museum.  Among their exhibits are several that let
+you experiment with different ways of generating sounds.  One of these
+exhibits is a machine that does audibly the same thing we've been
+doing graphically, adding up selected harmonics of a fundamental pitch.
+If you don't live near San Francisco, the Exploratorium is well worth
+the trip, no matter how far away you are!
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch14/manual.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P>As mentioned in the text, the appropriate value of <CODE>xrange</CODE> may be
+different depending on which computer you're using.
+
+<P><P>
+<P><PRE>
+to plot :inputs
+keyword :inputs ~
+        [maxharm 5 deltax 2 yscale 75 cycles 1 xrange 230 skip 2]
+localmake "xscale :cycles*180/:xrange
+splitscreen clearscreen hideturtle penup
+setpos list (-:xrange) 0
+pendown
+for [x :deltax [2*:xrange] :deltax] ~
+    [setpos list (xcor+:deltax) (:yscale * series :maxharm)]
+end
+
+;; Compute the Fourier series values
+
+to series :harmonic
+if :harmonic < 1 [output 0]
+output (term :harmonic)+(series :harmonic-:skip)
+end
+
+to term :harmonic
+output (sin :xscale * :harmonic * :x) / :harmonic
+end
+
+;; Handle keyword inputs
+
+.macro keyword :inputs :defaults
+if or (wordp :inputs) (numberp first :inputs) ~
+   [make "inputs sentence (first :defaults) :inputs]
+output `[local ,[filter [not numberp ?] :defaults]
+         setup.values ,[:defaults]
+         setup.values ,[:inputs]]
+end
+
+to setup.values :list
+if emptyp :list [stop]
+make first :list first butfirst :list
+setup.values butfirst butfirst :list
+end
+</PRE><P>
+
+
+
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch12/v2ch12.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch14/manual.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch14/appindex b/js/games/nluqo.github.io/~bh/v2ch14/appindex
new file mode 100644
index 0000000..373558a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch14/appindex
@@ -0,0 +1,1284 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2: General Index</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>General Index</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+General Index
+
+<P>This index lists technical terms and primitive procedures.  There is also an
+<A HREF="appuindex">index of defined procedures</A>,
+which lists procedures whose definitions are in
+the text.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P>
+
+<P><A HREF="appindex#A">A</A> <A HREF="appindex#B">B</A> <A HREF="appindex#C">C</A> <A HREF="appindex#D">D</A> <A HREF="appindex#E">E</A> <A HREF="appindex#F">F</A> <A HREF="appindex#G">G</A> <A HREF="appindex#H">H</A> <A HREF="appindex#I">I</A> <A HREF="appindex#J">J</A> <A HREF="appindex#K">K</A> <A HREF="appindex#L">L</A> <A HREF="appindex#M">M</A> <A HREF="appindex#N">N</A> <A HREF="appindex#O">O</A> <A HREF="appindex#P">P</A> <A HREF="appindex#Q">Q</A> <A HREF="appindex#R">R</A> <A HREF="appindex#S">S</A> <A HREF="appindex#T">T</A> <A HREF="appindex#U">U</A> <A HREF="appindex#V">V</A> <A HREF="appindex#W">W</A> <A HREF="appindex#X">X</A> <A HREF="appindex#Y">Y</A> <A HREF="appindex#Z">Z</A> 
+
+
+<P><BR>
+<CODE>*</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>+</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>-</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>.defmacro</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.eq</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.macro</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.maybeoutput</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.setbf</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.setfirst</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.setitem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>/</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>:</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE><</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>=</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>></CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="A"></A>
+<BR>
+Abelson, Hal <A HREF="../v2ch0/ack.html">Ack</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+access, random <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+algorithm <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>allopen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+American Standard Code for Information Interchange <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+amplitude <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>and</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<EM>Apple Logo</EM> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>apply</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arctan</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>array</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>array?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arrayp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arraytolist</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+artificial intelligence <A HREF="../v2ch0/preface.html">Pref</A>
+
+
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+<CODE>ascii</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ashift</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+assignment, indirect <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="B"></A>
+<BR>
+<CODE>back</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>background</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+backquote <A HREF="../v2ch12/macro.html">Ch12</A>
+<BR>
+<CODE>backslashed?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>backslashedp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+BASIC <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>before?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>beforep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+behaviorism <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>bf</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bfs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bg</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Birch, Alison <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>bitand</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bitnot</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bitor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bitxor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bk</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bl</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+branching, multiple <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>buried</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bury</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>buryall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>buryname</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>butfirst</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>butfirsts</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>butlast</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bye</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="C"></A>
+<BR>
+C++ <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+capital letter <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+cardinal number <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>cascade</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cascade.2</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+case, lower <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+case, upper <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>caseignoredp</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>catch</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+catch tag <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+catching errors <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>char</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+cipher, simple substitution <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+circular list <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+Clancy, Mike <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+clarinet <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>clean</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+clear text <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>clearscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cleartext</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>close</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>closeall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>co</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+cognitive science <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>combine</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+compiler <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+compiler, incremental <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<EM>Compulsory Miseducation</EM> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+computed variable names <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+computer music <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<EM>Computer Power and Human Reason</EM> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+computer science <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>contents</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>continue</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+conversational program <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>copydef</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>count</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+cross-reference listing <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>crossmap</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+cryptogram <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+cryptography <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>cs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ct</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cursor</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="D"></A>
+<BR>
+Dao, Khang <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+data abstraction <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+data files <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+data, program as <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+Davis, Jim <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+debugging <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+default <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>define</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>defined?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>definedp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+defining a procedure <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>dequeue</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Deutsch, Freeman <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>diff</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>difference</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+disk, hard <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+diskette <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>do.until</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>do.while</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>dribble</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+dribble file <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+dynamic scope <A HREF="../v2ch13/fourie.html">Ch13</A>
+
+<P><A NAME="E"></A>
+<BR>
+<CODE>ed</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edit</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edn</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>edns</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edpl</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>edpls</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edps</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+effect and output <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+efficiency <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+Eliza <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>empty?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>emptyp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+end of file <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+engineering, software <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+environment, evaluation <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>eof?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>eofp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>equal?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>equalp</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>er</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erase</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erasefile</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erf</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ern</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>erns</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erpl</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>erpls</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erps</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erract</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>error</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+errors, catching <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+evaluation environment <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+evaluation of inputs <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+evaluation, serial <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+exit, nonlocal <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>exp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+extensible language <A HREF="../v2ch10/iter.html">Ch10</A>
+<P><A NAME="F"></A>
+<BR>
+<CODE>fd</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>fence</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+file, dribble <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+files, data <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+fill <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>fill</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>filter</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>find</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>first</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>firsts</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+flag variables <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>for</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>foreach</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+fork, tuning <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>form</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+formatter, text <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>forward</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Fourier series <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Fourier, Jean-Baptiste-Joseph <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>fput</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+frequencies of occurrence <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+frequency, fundamental <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Friedman, Batya <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>fs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>fullscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>fulltext</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+fundamental frequency <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="G"></A>
+<BR>
+games <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+generated symbol <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+gensym <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>gensym</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+Gilham, Fred <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Goldenberg, Paul <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Goodman, Paul <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>gprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+graph <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+graphical user interface <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>greater?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>greaterp</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="H"></A>
+<BR>
+hard disk <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+harmonics <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+harmonics, odd <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>heading</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>help</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+heuristic <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>hideturtle</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+highlighting <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+histogram <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>home</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ht</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="I"></A>
+<BR>
+<CODE>if</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ifelse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>iff</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>iffalse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ift</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>iftrue</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ignore</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+incremental compiler <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+indirect assignment <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+input, optional <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+inputs, evaluation of <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+inputs, keyword <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+inputs, positional <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+instruction list <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>int</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+intelligence, artificial <A HREF="../v2ch0/preface.html">Pref</A>
+
+
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+interpreter <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+inverse video <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>invoke</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>item</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+iteration <A HREF="../v2ch10/iter.html">Ch10</A>
+<P><A NAME="J"></A>
+<BR>
+justify <A HREF="../v2ch1/files.html">Ch1</A>
+<P><A NAME="K"></A>
+<BR>
+Katz, Michael <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Katz, Yehuda <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Kemeny, John <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>key?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>keyp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+keyword inputs <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Kurtz, Thomas <A HREF="../v2ch6/basic.html">Ch6</A>
+<P><A NAME="L"></A>
+<BR>
+<CODE>label</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>last</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>left</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>less?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lessp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+letter, capital <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+library <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+Lisp <A HREF="../v2ch0/preface.html">Pref</A>
+, <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>list</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+list structure, modification of <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+list, circular <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+list, property <A HREF="../v2ch8/plist.html">Ch8</A>
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+list, pushdown <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>list?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+listing, cross-reference <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>listp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>listtoarray</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ln</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>load</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>loadnoisily</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>local</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>localmake</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>log10</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Logo <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+loop <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+lower case <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>lowercase</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lput</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lshift</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lt</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="M"></A>
+<BR>
+machine language <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+macro <A HREF="../v2ch12/macro.html">Ch12</A>
+<BR>
+<CODE>macro?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>macroexpand</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>macrop</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>make</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>map</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>map.se</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+matcher, pattern <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+mathematics <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>mdarray</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>mditem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>mdsetitem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>member</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>member?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>memberp</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+Mills, George <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Minsky, Margaret <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>minus</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+modification of list structure <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+modularity <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>modulo</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+mouse <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+multiple branching <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+music, computer <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+musical sounds <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+mutator <A HREF="../v2ch2/diff.html">Ch2</A>
+<P><A NAME="N"></A>
+<BR>
+<CODE>name</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>name?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>namelist</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>namep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>names</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+node <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>nodribble</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+nonlocal exit <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>norefresh</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>not</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+number, cardinal <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+number, ordinal <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>number?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>numberp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+numeric iteration <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+numeric precision <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="O"></A>
+<BR>
+odd harmonics <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>openappend</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>openread</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>openupdate</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>openwrite</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+optional input <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>or</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+ordinal number <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+organ, pipe <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Orleans, Doug <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>output</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+output and effect <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+overtones <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="P"></A>
+<BR>
+<CODE>palette</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>parse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+parser <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+Pascal <A HREF="../v2ch0/preface.html">Pref</A>
+, <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+pattern <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+pattern matcher <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+pattern matching <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>pause</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pd</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pe</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pencolor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pendown</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pendown?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pendownp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penerase</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penmode</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penpaint</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penpattern</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penreverse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pensize</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penup</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+periodic waveform <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>pick</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+pipe organ <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>plist</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>plists</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pllist</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>po</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>poall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pon</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pons</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pop</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>popl</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>popls</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pops</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+positional inputs <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>pot</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pots</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>power</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ppt</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pr</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+precision, numeric <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+predicate <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>primitive?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>primitivep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>print</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>printdepthlimit</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+printer <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>printwidthlimit</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+procedure <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+procedure, defining <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>procedure?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>procedurep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>procedures</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>product</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+program as data <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+program, conversational <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+program-writing program <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+programming, systems <A HREF="../v2ch0/preface.html">Pref</A>
+
+<BR>
+programs, utility <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+property list <A HREF="../v2ch8/plist.html">Ch8</A>
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+psychotherapist <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>pu</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>push</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+pushdown list <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>px</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="Q"></A>
+<BR>
+quadratic time <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+quantifiers <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>queue</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>quoted</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>quotient</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="R"></A>
+<BR>
+<CODE>radarctan</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>radcos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>radsin</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>random</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+random access <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>rawascii</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rcs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readchar</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readchars</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+reader <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>reader</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readlist</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readpos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+recursion <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>redefp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>reduce</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>refresh</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remainder</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remdup</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remove</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>repeat</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rerandom</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>reverse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+reverse video <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>right</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+ringing <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>rl</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>round</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rt</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>run</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>runparse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>runresult</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rw</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="S"></A>
+<BR>
+Sargent, Randy <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>save</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>savel</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+science, cognitive <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+science, computer <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+scope, dynamic <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>scrunch</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>se</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sentence</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+serial evaluation <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+series, Fourier <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>setbackground</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setbg</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setcursor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>seth</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setheading</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setitem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setmargins</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpalette</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpencolor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpenpattern</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpensize</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setread</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setreadpos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setscrunch</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setwrite</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setwritepos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setx</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setxy</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sety</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>shell</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>show</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>shown?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>shownp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>showturtle</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+simple substitution cipher <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>sin</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+sine wave <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+software engineering <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+solitaire <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+Solomon, Cynthia <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+sounds, musical <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>splitscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sqrt</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+square wave <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>ss</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>st</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+stack <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>standout</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>startup</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>step</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+stimulus-response <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>stop</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+substitution cipher, simple <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>substring?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>substringp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sum</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+symbol, generated <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+systems programming <A HREF="../v2ch0/preface.html">Pref</A>
+
+<P><A NAME="T"></A>
+<BR>
+tag, catch <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+tail recursion <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>test</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>text</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+text formatter <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>textscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>thing</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>throw</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+, <A HREF="manual.html">RefMan</A>
+<BR>
+time, quadratic <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>to</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>towards</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>trace</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+transcript file <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>transfer</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+tree <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>ts</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+tuning fork <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>type</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="U"></A>
+<BR>
+<CODE>unbury</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>unburyall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>unburyname</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>unstep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>until</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>untrace</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+upper case <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>uppercase</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+user interface, graphical <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+utility programs <A HREF="../v2ch0/preface.html">Pref</A>
+<P><A NAME="V"></A>
+<BR>
+van Blerkom, Dan <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+variable <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+variable names, computed <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="W"></A>
+<BR>
+<CODE>wait</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+wave, sine <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+wave, square <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+waveform <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+waveform, periodic <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Weizenbaum, Joseph <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>while</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>window</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>word</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+word processor <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>word?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>wordp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>wrap</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Wright, Matthew <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>writepos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+writer <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>writer</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="X"></A>
+<BR>
+<CODE>xcor</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="Y"></A>
+<BR>
+<CODE>ycor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Yoder, Sharon <A HREF="../v2ch0/ack.html">Ack</A>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch14/appindex.html b/js/games/nluqo.github.io/~bh/v2ch14/appindex.html
new file mode 100644
index 0000000..469c4ec
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch14/appindex.html
@@ -0,0 +1,1284 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2: General Index</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>General Index</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+General Index
+
+<P>This index lists technical terms and primitive procedures.  There is also an
+<A HREF="appuindex">index of defined procedures</A>,
+which lists procedures whose definitions are in
+the text.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P>
+
+<P><A HREF="appindex.html#A">A</A> <A HREF="appindex.html#B">B</A> <A HREF="appindex.html#C">C</A> <A HREF="appindex.html#D">D</A> <A HREF="appindex.html#E">E</A> <A HREF="appindex.html#F">F</A> <A HREF="appindex.html#G">G</A> <A HREF="appindex.html#H">H</A> <A HREF="appindex.html#I">I</A> <A HREF="appindex.html#J">J</A> <A HREF="appindex.html#K">K</A> <A HREF="appindex.html#L">L</A> <A HREF="appindex.html#M">M</A> <A HREF="appindex.html#N">N</A> <A HREF="appindex.html#O">O</A> <A HREF="appindex.html#P">P</A> <A HREF="appindex.html#Q">Q</A> <A HREF="appindex.html#R">R</A> <A HREF="appindex.html#S">S</A> <A HREF="appindex.html#T">T</A> <A HREF="appindex.html#U">U</A> <A HREF="appindex.html#V">V</A> <A HREF="appindex.html#W">W</A> <A HREF="appindex.html#X">X</A> <A HREF="appindex.html#Y">Y</A> <A HREF="appindex.html#Z">Z</A> 
+
+
+<P><BR>
+<CODE>*</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>+</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>-</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>.defmacro</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.eq</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.macro</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.maybeoutput</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.setbf</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.setfirst</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>.setitem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>/</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>:</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE><</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>=</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>></CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="A"></A>
+<BR>
+Abelson, Hal <A HREF="../v2ch0/ack.html">Ack</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+access, random <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+algorithm <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>allopen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+American Standard Code for Information Interchange <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+amplitude <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>and</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<EM>Apple Logo</EM> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>apply</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arctan</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>array</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>array?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arrayp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>arraytolist</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+artificial intelligence <A HREF="../v2ch0/preface.html">Pref</A>
+
+
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+<CODE>ascii</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ashift</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+assignment, indirect <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="B"></A>
+<BR>
+<CODE>back</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>background</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+backquote <A HREF="../v2ch12/macro.html">Ch12</A>
+<BR>
+<CODE>backslashed?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>backslashedp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+BASIC <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>before?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>beforep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+behaviorism <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>bf</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bfs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bg</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Birch, Alison <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>bitand</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bitnot</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bitor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bitxor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bk</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bl</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+branching, multiple <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>buried</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bury</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>buryall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>buryname</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>butfirst</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>butfirsts</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>butlast</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>bye</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="C"></A>
+<BR>
+C++ <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+capital letter <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+cardinal number <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>cascade</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cascade.2</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+case, lower <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+case, upper <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>caseignoredp</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>catch</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+catch tag <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+catching errors <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>char</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+cipher, simple substitution <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+circular list <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+Clancy, Mike <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+clarinet <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>clean</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+clear text <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>clearscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cleartext</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>close</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>closeall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>co</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+cognitive science <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>combine</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+compiler <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+compiler, incremental <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<EM>Compulsory Miseducation</EM> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+computed variable names <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+computer music <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<EM>Computer Power and Human Reason</EM> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+computer science <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>contents</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>continue</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+conversational program <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>copydef</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>count</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+cross-reference listing <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>crossmap</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+cryptogram <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+cryptography <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>cs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ct</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>cursor</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="D"></A>
+<BR>
+Dao, Khang <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+data abstraction <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+data files <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+data, program as <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+Davis, Jim <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+debugging <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+default <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>define</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>defined?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>definedp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+defining a procedure <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>dequeue</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Deutsch, Freeman <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>diff</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>difference</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+disk, hard <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+diskette <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>do.until</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>do.while</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>dribble</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+dribble file <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+dynamic scope <A HREF="../v2ch13/fourie.html">Ch13</A>
+
+<P><A NAME="E"></A>
+<BR>
+<CODE>ed</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edit</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edn</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>edns</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edpl</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>edpls</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>edps</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+effect and output <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+efficiency <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+Eliza <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>empty?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>emptyp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+end of file <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+engineering, software <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+environment, evaluation <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>eof?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>eofp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>equal?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>equalp</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>er</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erase</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erasefile</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erf</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ern</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>erns</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erpl</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>erpls</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erps</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>erract</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>error</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+errors, catching <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+evaluation environment <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+evaluation of inputs <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+evaluation, serial <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+exit, nonlocal <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>exp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+extensible language <A HREF="../v2ch10/iter.html">Ch10</A>
+<P><A NAME="F"></A>
+<BR>
+<CODE>fd</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>fence</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+file, dribble <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+files, data <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+fill <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>fill</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>filter</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>find</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>first</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>firsts</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+flag variables <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>for</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>foreach</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+fork, tuning <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>form</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+formatter, text <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>forward</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Fourier series <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Fourier, Jean-Baptiste-Joseph <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>fput</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+frequencies of occurrence <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+frequency, fundamental <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Friedman, Batya <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>fs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>fullscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>fulltext</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+fundamental frequency <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="G"></A>
+<BR>
+games <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+generated symbol <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+gensym <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>gensym</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+Gilham, Fred <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Goldenberg, Paul <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Goodman, Paul <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>gprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+graph <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+graphical user interface <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>greater?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>greaterp</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="H"></A>
+<BR>
+hard disk <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+harmonics <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+harmonics, odd <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>heading</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>help</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+heuristic <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>hideturtle</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+highlighting <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+histogram <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>home</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ht</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="I"></A>
+<BR>
+<CODE>if</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ifelse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>iff</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>iffalse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ift</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>iftrue</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ignore</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+incremental compiler <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+indirect assignment <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+input, optional <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+inputs, evaluation of <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+inputs, keyword <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+inputs, positional <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+instruction list <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>int</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+intelligence, artificial <A HREF="../v2ch0/preface.html">Pref</A>
+
+
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+interpreter <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+inverse video <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>invoke</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>item</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+iteration <A HREF="../v2ch10/iter.html">Ch10</A>
+<P><A NAME="J"></A>
+<BR>
+justify <A HREF="../v2ch1/files.html">Ch1</A>
+<P><A NAME="K"></A>
+<BR>
+Katz, Michael <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Katz, Yehuda <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Kemeny, John <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>key?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>keyp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+keyword inputs <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Kurtz, Thomas <A HREF="../v2ch6/basic.html">Ch6</A>
+<P><A NAME="L"></A>
+<BR>
+<CODE>label</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>last</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>left</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>less?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lessp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+letter, capital <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+library <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+Lisp <A HREF="../v2ch0/preface.html">Pref</A>
+, <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>list</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+list structure, modification of <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+list, circular <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+list, property <A HREF="../v2ch8/plist.html">Ch8</A>
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+list, pushdown <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>list?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+listing, cross-reference <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>listp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>listtoarray</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ln</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>load</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>loadnoisily</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>local</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>localmake</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>log10</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Logo <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+loop <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+lower case <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>lowercase</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lput</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lshift</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>lt</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="M"></A>
+<BR>
+machine language <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+macro <A HREF="../v2ch12/macro.html">Ch12</A>
+<BR>
+<CODE>macro?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>macroexpand</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>macrop</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>make</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>map</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>map.se</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+matcher, pattern <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+mathematics <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>mdarray</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>mditem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>mdsetitem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>member</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>member?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>memberp</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+Mills, George <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+Minsky, Margaret <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>minus</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+modification of list structure <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+modularity <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>modulo</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+mouse <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+multiple branching <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+music, computer <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+musical sounds <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+mutator <A HREF="../v2ch2/diff.html">Ch2</A>
+<P><A NAME="N"></A>
+<BR>
+<CODE>name</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>name?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>namelist</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>namep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>names</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+node <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>nodribble</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+nonlocal exit <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>norefresh</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>not</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+number, cardinal <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+number, ordinal <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>number?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>numberp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+numeric iteration <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+numeric precision <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="O"></A>
+<BR>
+odd harmonics <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>openappend</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>openread</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>openupdate</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>openwrite</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+optional input <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>or</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+ordinal number <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+organ, pipe <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Orleans, Doug <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>output</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+output and effect <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+overtones <A HREF="../v2ch13/fourie.html">Ch13</A>
+<P><A NAME="P"></A>
+<BR>
+<CODE>palette</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>parse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+parser <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+Pascal <A HREF="../v2ch0/preface.html">Pref</A>
+, <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+pattern <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+pattern matcher <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+pattern matching <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+<CODE>pause</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pd</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pe</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pencolor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pendown</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pendown?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pendownp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penerase</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penmode</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penpaint</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penpattern</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penreverse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pensize</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>penup</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+periodic waveform <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>pick</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+pipe organ <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>plist</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>plists</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pllist</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>po</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>poall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pon</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pons</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pop</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>popl</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>popls</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pops</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+positional inputs <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>pot</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pots</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>power</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>ppt</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>pr</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+precision, numeric <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+predicate <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>primitive?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>primitivep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>print</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>printdepthlimit</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+printer <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>printwidthlimit</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+procedure <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+procedure, defining <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>procedure?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>procedurep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>procedures</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>product</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+program as data <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+program, conversational <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+program-writing program <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+programming, systems <A HREF="../v2ch0/preface.html">Pref</A>
+
+<BR>
+programs, utility <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+property list <A HREF="../v2ch8/plist.html">Ch8</A>
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+
+<BR>
+psychotherapist <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>pu</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>push</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+pushdown list <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>px</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="Q"></A>
+<BR>
+quadratic time <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+quantifiers <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>queue</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>quoted</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>quotient</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="R"></A>
+<BR>
+<CODE>radarctan</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>radcos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>radsin</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>random</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+random access <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>rawascii</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rcs</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readchar</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readchars</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+reader <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>reader</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readlist</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readpos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>readword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+recursion <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>redefp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>reduce</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>refresh</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remainder</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remdup</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remove</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>remprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>repeat</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rerandom</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>reverse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+reverse video <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>right</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+ringing <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>rl</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>round</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rt</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>run</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>runparse</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>runresult</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>rw</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="S"></A>
+<BR>
+Sargent, Randy <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>save</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>savel</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+science, cognitive <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+science, computer <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+scope, dynamic <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>scrunch</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>se</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sentence</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+serial evaluation <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+series, Fourier <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>setbackground</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setbg</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setcursor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>seth</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setheading</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setitem</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setmargins</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpalette</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpc</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpencolor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpenpattern</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpensize</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setpos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setread</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setreadpos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setscrunch</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setwrite</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setwritepos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setx</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>setxy</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sety</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>shell</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>show</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>shown?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>shownp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>showturtle</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+simple substitution cipher <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>sin</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+sine wave <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+software engineering <A HREF="../v2ch0/preface.html">Pref</A>
+<BR>
+solitaire <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+Solomon, Cynthia <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+sounds, musical <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>splitscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sqrt</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+square wave <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>ss</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>st</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+stack <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>standout</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>startup</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>step</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+stimulus-response <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>stop</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+substitution cipher, simple <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>substring?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>substringp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>sum</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+symbol, generated <A HREF="../v2ch6/basic.html">Ch6</A>
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+systems programming <A HREF="../v2ch0/preface.html">Pref</A>
+
+<P><A NAME="T"></A>
+<BR>
+tag, catch <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+tail recursion <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>test</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>text</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+text formatter <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>textscreen</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>thing</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>throw</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+, <A HREF="manual.html">RefMan</A>
+<BR>
+time, quadratic <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>to</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>towards</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>trace</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+transcript file <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>transfer</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+tree <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>ts</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+tuning fork <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>type</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="U"></A>
+<BR>
+<CODE>unbury</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>unburyall</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>unburyname</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+<CODE>unstep</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>until</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>untrace</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+upper case <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>uppercase</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+, <A HREF="manual.html">RefMan</A>
+<BR>
+user interface, graphical <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+utility programs <A HREF="../v2ch0/preface.html">Pref</A>
+<P><A NAME="V"></A>
+<BR>
+van Blerkom, Dan <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+variable <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+variable names, computed <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="W"></A>
+<BR>
+<CODE>wait</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+wave, sine <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+wave, square <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+waveform <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+waveform, periodic <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+Weizenbaum, Joseph <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>while</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>window</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>word</CODE> <A HREF="manual.html">RefMan</A>
+
+<BR>
+word processor <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>word?</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>wordp</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+<CODE>wrap</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Wright, Matthew <A HREF="../v2ch0/ack.html">Ack</A>
+<BR>
+<CODE>writepos</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+writer <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>writer</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="X"></A>
+<BR>
+<CODE>xcor</CODE> <A HREF="manual.html">RefMan</A>
+<P><A NAME="Y"></A>
+<BR>
+<CODE>ycor</CODE> <A HREF="manual.html">RefMan</A>
+<BR>
+Yoder, Sharon <A HREF="../v2ch0/ack.html">Ack</A>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch14/appuindex b/js/games/nluqo.github.io/~bh/v2ch14/appuindex
new file mode 100644
index 0000000..93e62ab
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch14/appuindex
@@ -0,0 +1,660 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2: Index of Defined Procedures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Index of Defined Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="manual.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+Index of Defined Procedures
+
+<P>This index lists example procedures whose definitions are in the text.  The
+<A HREF="appindex">general index</A> lists technical terms and primitive procedures.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P><A HREF="appuindex#A">A</A> <A HREF="appuindex#B">B</A> <A HREF="appuindex#C">C</A> <A HREF="appuindex#D">D</A> <A HREF="appuindex#E">E</A> <A HREF="appuindex#F">F</A> <A HREF="appuindex#G">G</A> <A HREF="appuindex#H">H</A> <A HREF="appuindex#I">I</A> <A HREF="appuindex#J">J</A> <A HREF="appuindex#K">K</A> <A HREF="appuindex#L">L</A> <A HREF="appuindex#M">M</A> <A HREF="appuindex#N">N</A> <A HREF="appuindex#O">O</A> <A HREF="appuindex#P">P</A> <A HREF="appuindex#Q">Q</A> <A HREF="appuindex#R">R</A> <A HREF="appuindex#S">S</A> <A HREF="appuindex#T">T</A> <A HREF="appuindex#U">U</A> <A HREF="appuindex#V">V</A> <A HREF="appuindex#W">W</A> <A HREF="appuindex#X">X</A> <A HREF="appuindex#Y">Y</A> <A HREF="appuindex#Z">Z</A> 
+
+<P><BR>
+<CODE>#gather</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>#test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>#test2</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>&test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>@test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>@test2</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>@try.pred</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>^test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<P><A NAME="A"></A>
+<BR>
+<CODE>a</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>addline</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>addmemr</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>addpunct</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>addrule</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>addword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>again</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>allup</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>alphabet</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>always</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>analyze</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>anyof</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>anyof1</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>ask.once</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+<BR>
+<CODE>ask.thrice</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+<BR>
+<CODE>aunts</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<P><A NAME="B"></A>
+<BR>
+<CODE>b</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>basicprompt</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>basicread</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>basicread1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>beep</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>beliefp</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>bell</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>bind</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>blacktype</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>boundp</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>breadstring</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>break</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+
+<P><A NAME="C"></A>
+<BR>
+<CODE>c.if1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>c.input1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>c.print1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>capitalize</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>carddis</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>cheat</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkempty</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkfull</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkonto</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkpriority</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>checkrules</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>checktop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>chop</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>clearword</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>cnt</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>codeword</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>compile</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.end</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.for</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.gosub</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.goto</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.if</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.input</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.let</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.next</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.print</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.return</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>count.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>cousins</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>coveredp</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="D"></A>
+<BR>
+<CODE>dark</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>deal</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>decapitalize</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>diff.differ</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>diff.found</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>diff.same</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>dishand</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>dispile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>disstack</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>distop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>distop1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>divisiblep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>dorule</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="E"></A>
+<BR>
+<CODE>eraseline</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>expr1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>expression</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>extract</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>extract.word</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<P><A NAME="F"></A>
+<BR>
+<CODE>family</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>familyp</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>filename</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>findcard</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>findpile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>findshown</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>firstn</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>firstword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>fixtop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>for</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+, <A HREF="../v2ch12/macro.html">Ch12</A>
+<BR>
+<CODE>foreach</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+, <A HREF="../v2ch12/macro.html">Ch12</A>
+
+<BR>
+<CODE>forletters</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>forloop</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>forstep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>fullclear</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="G"></A>
+<BR>
+<CODE>getline</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>getsentence</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>getsentence1</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>getstuff</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>gprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>grade</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>grandchildren</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>granddaughters</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>grandfathers</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>guess.single</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>guess.triple</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="H"></A>
+<BR>
+<CODE>hand3</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>helper</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>hidden</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>histlet</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>histogram</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="I"></A>
+<BR>
+<CODE>immediate</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>in</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>index</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>init.vars</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>initcount</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>inithidden</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>initstacks</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>initvars</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>insert</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>instant</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>instruct</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>instruct1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>invtype</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="J"></A>
+<BR>
+<CODE>justgirls</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<P><A NAME="K"></A>
+<BR>
+<CODE>kids</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<P><A NAME="L"></A>
+<BR>
+<CODE>lastresort</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>lesstext</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>light</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>linenum</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>lines</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>list.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>loop</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="M"></A>
+<BR>
+<CODE>makedef</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>makefile</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>map.tree</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>match!</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match#</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match&</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match?</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match@</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match^</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>max.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>member2</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>memory</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>moretext</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>mother</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>multifor</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+<BR>
+<CODE>multiforloop</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>multiforstep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>multiply</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+, <A HREF="../v2ch10/iter.html">Ch10</A>
+<P><A NAME="N"></A>
+<BR>
+<CODE>named.foreach</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>newindent</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>newline</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>newstack</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>nextline</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>nextlinenum</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>nextword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+
+<BR>
+<CODE>nofill</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>nonneg</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>norules</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="O"></A>
+<BR>
+<CODE>onegame</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>onekey</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>onetop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>opinion</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>ordinals</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<P><A NAME="P"></A>
+<BR>
+<CODE>parse.special</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>parsecmd</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>parsedigit</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>parsekey</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>parseloop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>parsezero</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>play</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>play.by.name</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playcard</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playonto</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playpile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playstack</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playstack1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playtop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>polyspi</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>popsaved</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>posn</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>pprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>prepare.guess</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>primep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>process</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+, <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>putline</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>putwords</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<P><A NAME="Q"></A>
+<BR>
+<CODE>qa</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>qbind</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>quoted</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch12/macro.html">Ch12</A>
+<P><A NAME="R"></A>
+<BR>
+<CODE>rank</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>ranknum</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>readline</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>readvalue</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>reconstruct</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>redisplay</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>redp</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>redtype</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>reference</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>rempile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>remprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>remshown</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>remshown1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>rep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>report</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>reword</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>rubout</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="S"></A>
+<BR>
+<CODE>s</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>safe.item1</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>safe.item2</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>savedp</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>savelines</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>second</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>series</CODE> <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>set.in</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>set.special</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>setbound</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setcnt</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setcount.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setempty</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>setlinenum</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>setlines</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>setlist.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setmax.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setposn</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>settop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>setunbound</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setup.values</CODE> <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>showclear</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showclear1</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showcode</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showcode1</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>shown</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>showrow</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showtop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>shuffle</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>siblings</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>skip</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>skipfirst</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>skipspaces</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>skipword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>sons</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>spanish</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+
+<BR>
+<CODE>special</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>split</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>split1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>stackemptyp</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>start</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>submemberp</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>suit</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="T"></A>
+<BR>
+<CODE>tally</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>term</CODE> <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>tokenize</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>tokenword</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>top</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>topmar</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>translate</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>try.pred</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>turnup</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>twocol</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="U"></A>
+<BR>
+<CODE>upsafep</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>usememory</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="W"></A>
+<BR>
+<CODE>which</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>wingame</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="X"></A>
+<BR>
+<CODE>xref</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>xrefall</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<P><A NAME="Y"></A>
+<BR>
+<CODE>yesfill</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<P><A NAME="Z"></A>
+<BR>
+<CODE>zap.player</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="manual.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch14/appuindex.html b/js/games/nluqo.github.io/~bh/v2ch14/appuindex.html
new file mode 100644
index 0000000..6c4111d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch14/appuindex.html
@@ -0,0 +1,660 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2: Index of Defined Procedures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Index of Defined Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch14.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="manual.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+Index of Defined Procedures
+
+<P>This index lists example procedures whose definitions are in the text.  The
+<A HREF="appindex">general index</A> lists technical terms and primitive procedures.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P><A HREF="appuindex.html#A">A</A> <A HREF="appuindex.html#B">B</A> <A HREF="appuindex.html#C">C</A> <A HREF="appuindex.html#D">D</A> <A HREF="appuindex.html#E">E</A> <A HREF="appuindex.html#F">F</A> <A HREF="appuindex.html#G">G</A> <A HREF="appuindex.html#H">H</A> <A HREF="appuindex.html#I">I</A> <A HREF="appuindex.html#J">J</A> <A HREF="appuindex.html#K">K</A> <A HREF="appuindex.html#L">L</A> <A HREF="appuindex.html#M">M</A> <A HREF="appuindex.html#N">N</A> <A HREF="appuindex.html#O">O</A> <A HREF="appuindex.html#P">P</A> <A HREF="appuindex.html#Q">Q</A> <A HREF="appuindex.html#R">R</A> <A HREF="appuindex.html#S">S</A> <A HREF="appuindex.html#T">T</A> <A HREF="appuindex.html#U">U</A> <A HREF="appuindex.html#V">V</A> <A HREF="appuindex.html#W">W</A> <A HREF="appuindex.html#X">X</A> <A HREF="appuindex.html#Y">Y</A> <A HREF="appuindex.html#Z">Z</A> 
+
+<P><BR>
+<CODE>#gather</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>#test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>#test2</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>&test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>@test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>@test2</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>@try.pred</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>^test</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<P><A NAME="A"></A>
+<BR>
+<CODE>a</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>addline</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>addmemr</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>addpunct</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>addrule</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>addword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>again</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>allup</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>alphabet</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>always</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>analyze</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>anyof</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>anyof1</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>ask.once</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+<BR>
+<CODE>ask.thrice</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+<BR>
+<CODE>aunts</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<P><A NAME="B"></A>
+<BR>
+<CODE>b</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>basicprompt</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>basicread</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>basicread1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>beep</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>beliefp</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>bell</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>bind</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>blacktype</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>boundp</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>breadstring</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>break</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+
+<P><A NAME="C"></A>
+<BR>
+<CODE>c.if1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>c.input1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>c.print1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>capitalize</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>carddis</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>cheat</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkempty</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkfull</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkonto</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>checkpriority</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>checkrules</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>checktop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>chop</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>clearword</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>cnt</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>codeword</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>compile</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.end</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.for</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.gosub</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.goto</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.if</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.input</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.let</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.next</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.print</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>compile.return</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>count.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>cousins</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>coveredp</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="D"></A>
+<BR>
+<CODE>dark</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>deal</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>decapitalize</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>diff.differ</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>diff.found</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>diff.same</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>dishand</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>dispile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>disstack</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>distop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>distop1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>divisiblep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>dorule</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="E"></A>
+<BR>
+<CODE>eraseline</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>expr1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>expression</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>extract</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>extract.word</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<P><A NAME="F"></A>
+<BR>
+<CODE>family</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>familyp</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>filename</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>findcard</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>findpile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>findshown</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>firstn</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>firstword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>fixtop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>for</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+, <A HREF="../v2ch12/macro.html">Ch12</A>
+<BR>
+<CODE>foreach</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+, <A HREF="../v2ch12/macro.html">Ch12</A>
+
+<BR>
+<CODE>forletters</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>forloop</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>forstep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>fullclear</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="G"></A>
+<BR>
+<CODE>getline</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>getsentence</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>getsentence1</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>getstuff</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>gprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>grade</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>grandchildren</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>granddaughters</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>grandfathers</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>guess.single</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>guess.triple</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="H"></A>
+<BR>
+<CODE>hand3</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>helper</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>hidden</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>histlet</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>histogram</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="I"></A>
+<BR>
+<CODE>immediate</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>in</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>index</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>init.vars</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>initcount</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>inithidden</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>initstacks</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>initvars</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>insert</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>instant</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>instruct</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>instruct1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>invtype</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="J"></A>
+<BR>
+<CODE>justgirls</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<P><A NAME="K"></A>
+<BR>
+<CODE>kids</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<P><A NAME="L"></A>
+<BR>
+<CODE>lastresort</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>lesstext</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>light</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>linenum</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>lines</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>list.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>loop</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+, <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="M"></A>
+<BR>
+<CODE>makedef</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>makefile</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>map.tree</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>match!</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match#</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match&</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match?</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match@</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>match^</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>max.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>member2</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>memory</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>moretext</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>mother</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>multifor</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+
+<BR>
+<CODE>multiforloop</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>multiforstep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>multiply</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+, <A HREF="../v2ch10/iter.html">Ch10</A>
+<P><A NAME="N"></A>
+<BR>
+<CODE>named.foreach</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>newindent</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>newline</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>newstack</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>nextline</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>nextlinenum</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>nextword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+
+<BR>
+<CODE>nofill</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>nonneg</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>norules</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="O"></A>
+<BR>
+<CODE>onegame</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>onekey</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>onetop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>opinion</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>ordinals</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<P><A NAME="P"></A>
+<BR>
+<CODE>parse.special</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>parsecmd</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>parsedigit</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>parsekey</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>parseloop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>parsezero</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>play</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>play.by.name</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playcard</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playonto</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playpile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playstack</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playstack1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>playtop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>polyspi</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>popsaved</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>posn</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>pprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>prepare.guess</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>primep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>process</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+, <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>putline</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>putwords</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<P><A NAME="Q"></A>
+<BR>
+<CODE>qa</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>qbind</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>quoted</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+, <A HREF="../v2ch12/macro.html">Ch12</A>
+<P><A NAME="R"></A>
+<BR>
+<CODE>rank</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>ranknum</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>readline</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>readvalue</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>reconstruct</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>redisplay</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+, <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>redp</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>redtype</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>reference</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>rempile</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>remprop</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>remshown</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>remshown1</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>rep</CODE> <A HREF="../v2ch10/iter.html">Ch10</A>
+<BR>
+<CODE>report</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+
+<BR>
+<CODE>reword</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>rubout</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="S"></A>
+<BR>
+<CODE>s</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>safe.item1</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>safe.item2</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+<BR>
+<CODE>savedp</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>savelines</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>second</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>series</CODE> <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>set.in</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>set.special</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>setbound</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setcnt</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setcount.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setempty</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>setlinenum</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>setlines</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>setlist.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setmax.</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setposn</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>settop</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>setunbound</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>setup.values</CODE> <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>showclear</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showclear1</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showcode</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showcode1</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>shown</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>showrow</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>showtop</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>shuffle</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>siblings</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>skip</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>skipfirst</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>skipspaces</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>skipword</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>sons</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+<BR>
+<CODE>spanish</CODE> <A HREF="../v2ch8/plist.html">Ch8</A>
+
+<BR>
+<CODE>special</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>split</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>split1</CODE> <A HREF="../v2ch6/basic.html">Ch6</A>
+<BR>
+<CODE>stackemptyp</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>start</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<BR>
+<CODE>submemberp</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>suit</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="T"></A>
+<BR>
+<CODE>tally</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<BR>
+<CODE>term</CODE> <A HREF="../v2ch13/fourie.html">Ch13</A>
+<BR>
+<CODE>tokenize</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>tokenword</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>top</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>topmar</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+<BR>
+<CODE>translate</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<BR>
+<CODE>try.pred</CODE> <A HREF="../v2ch7/match.html">Ch7</A>
+<BR>
+<CODE>turnup</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>twocol</CODE> <A HREF="../v2ch11/crypto.html">Ch11</A>
+<P><A NAME="U"></A>
+<BR>
+<CODE>upsafep</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<BR>
+<CODE>usememory</CODE> <A HREF="../v2ch9/doctor.html">Ch9</A>
+<P><A NAME="W"></A>
+<BR>
+<CODE>which</CODE> <A HREF="../v2ch2/diff.html">Ch2</A>
+<BR>
+<CODE>wingame</CODE> <A HREF="../v2ch4/solitaire.html">Ch4</A>
+<P><A NAME="X"></A>
+<BR>
+<CODE>xref</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<BR>
+<CODE>xrefall</CODE> <A HREF="../v2ch5/prgdat.html">Ch5</A>
+<P><A NAME="Y"></A>
+<BR>
+<CODE>yesfill</CODE> <A HREF="../v2ch1/files.html">Ch1</A>
+
+<P><A NAME="Z"></A>
+<BR>
+<CODE>zap.player</CODE> <A HREF="../v2ch3/exit.html">Ch3</A>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="manual.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch14/manual.html b/js/games/nluqo.github.io/~bh/v2ch14/manual.html
new file mode 100644
index 0000000..6bd5ffc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch14/manual.html
@@ -0,0 +1,9 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2: Berkeley Logo Reference Manual</TITLE>
+</HEAD>
+<FRAMESET rows="33%,67%" style="background-color: transparent">
+<FRAME src="https://people.eecs.berkeley.edu/~bh/v2ch14/mantop.html" style="background-color: transparent">
+<FRAME src="../docs/html/usermanual.html" style="background-color: transparent">
+</FRAMESET>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch2/diff.html b/js/games/nluqo.github.io/~bh/v2ch2/diff.html
new file mode 100644
index 0000000..568d4be
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch2/diff.html
@@ -0,0 +1,645 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 2: Example: Finding File Differences</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Finding File Differences</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch02.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch1/v2ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="diff.lg"><CODE>diff</CODE></A>
+
+
+<P>As an example of a practical program that manipulates data files, this
+chapter is about comparing two similar files to find the differences
+between them.  This program is most often useful in comparing a current
+version of a file with an earlier version to see what has changed.
+On the next page is an example of two input files and the program's output.
+The output shows only those lines that differ between the two files,
+indicating changed lines, insertions, and deletions.  When several
+consecutive lines are different, they are grouped together as a single
+reported change.  (To demonstrate all of the program's capabilities, I've
+used short input files with more lines different than identical, and so the
+program's report is longer than the input files themselves.  In a more
+realistic example, the input files might be hundreds of lines long, with only
+a few differences, so it would be easier to read the program's output than
+to examine the files directly.)
+
+<P>
+<CENTER><STRONG>Input Files</STRONG></CENTER>
+
+<PRE>               Text1                                        Text2
+
+My goal in this series of books         My goal in this series of books
+is to make the goals and methods        is to make the goals and methods
+of a serious computer scientist         of a mad computer scientist
+accessible, at an introductory          accessible, at an introductory
+level, to people who are                level, to people who are
+interested in computer                  interested in playing computer
+programming but are not computer        games.
+science majors.                         If you're an
+If you're an                            adult or teenaged hobbyist, 
+adult or teenaged hobbyist,             you're definitely part of this
+or a teacher who wants to use the       audience.
+computer as an educational tool,        And I hope you appreciate
+you're definitely part of this          the privilege!
+audience.                               
+</PRE>
+
+<P>
+<CENTER><STRONG>Output File</STRONG></CENTER>
+
+<P><PRE>DIFF results:
+&lt; File 1 = Text1
+&gt; File 2 = Text2
+==========
+CHANGE 3-3 3-3
+&lt; of a serious computer scientist
+---
+&gt; of a mad computer scientist
+==========
+CHANGE 6-8 6-7
+&lt; interested in computer
+&lt; programming but are not computer
+&lt; science majors.
+---
+&gt; interested in playing computer
+&gt; games.
+==========
+DELETE 11-12 10
+&lt; or a teacher who wants to use the
+&lt; computer as an educational tool,
+==========
+INSERT 15 12-13
+&gt; and I hope you appreciate
+&gt; the privilege!
+==========
+</PRE>
+
+
+<P>I've called this program <CODE>diff</CODE> because it was inspired by a similar
+program of that name in the Unix operating system.  The format of the
+report that my <CODE>diff</CODE> generates is similar to that of the Unix version.
+In particular, I've followed the Unix <CODE>diff</CODE> convention that when a line
+from one of the input files appears in the report, it is marked by either
+a &quot;<CODE>&lt;</CODE>&quot; character if it's from the first file or a &quot;<CODE>&gt;</CODE>&quot; character
+if it's from the second file.
+
+<P>The numbers in the lines that begin with <CODE>CHANGE</CODE>, <CODE>INSERT</CODE>, or
+<CODE>DELETE</CODE> are line numbers, counting from one, in each of the two files.
+For example, the line
+
+<P><PRE>CHANGE 6-8 6-7
+</PRE>
+
+<P>indicates that lines 6 through 8 in the first file were replaced
+by lines 6 through 7 in the second file.  (The program considers a change
+to be finished when it finds two consecutive identical lines in the two
+files.  In this case, lines 9 and 10 of the first file are identical to
+lines 8 and 9 of the second file.)
+
+<P>The <CODE>diff</CODE> procedure takes three inputs.  The first two are names of
+the two input files; the third is either a name for an output file or an
+empty list, in which case the program's results are printed on the screen.
+For example, to see the results of my sample run, I'd say
+
+<P><PRE>diff &quot;Text1 &quot;Text2 []
+</PRE>
+
+<P>I picked this project partly because it requires switching between
+two input files, so you can see how the program uses <CODE>setread</CODE>
+repeatedly.
+
+<P><H2>Program Overview</H2>
+
+<P><A HREF="diff.html#diff"><CODE>Diff</CODE></A>
+reads lines from the two input files in alternation.  As long
+as the corresponding lines are equal, the program just moves on to the
+next pair of lines.  (Procedure <A HREF="diff.html#diff.same"><CODE>diff.same</CODE></A>
+handles this process.)  When
+a difference is found, the program's operation becomes more complicated.  It
+must remember all the lines that it reads from both files until it finds two
+consecutive equal pairs of lines.  (Procedures <A HREF="diff.html#diff.differ"><CODE>diff.differ</CODE></A>
+and <A HREF="diff.html#diff.found"><CODE>diff.found</CODE></A> do this.)
+
+<P>Life would be simple if the differences between the two files were only
+changes within a line, without adding or removing entire lines.  (This
+would be a realistic assumption if, for example, the second file had been
+created by applying a spelling correction program to the first file.
+Individual words would then be different, but each line of the second
+file would correspond to one line of the first.)  In that case, the
+structure of <CODE>diff.differ</CODE> could be similar to that of <CODE>diff.same</CODE>:
+Read a line from each file, compare the two, and report the pairs that are
+different.
+
+<P>But in practice, a change to a paragraph may make the file longer or
+shorter.  It may turn out, as in my sample run, that three lines from the
+first file correspond to only two lines from the second one.  If that's the
+case, then there's no guarantee that the equal lines that mark the end of a
+change will be at the same line <EM>numbers</EM> in the two files.  (In the
+sample, line 9 of the first file matches line 8 of the second.)  Whenever
+the program reads a line from one file, therefore, it must compare that
+line to <EM>every</EM> line that it's read from the other file since the
+two started being different.  Therefore, <CODE>diff.differ</CODE> must <EM>
+remember</EM> all of the lines that it reads from both files.
+
+<P>Finally, when two pairs of equal lines are found, the program must
+report the difference that it's detected.  That's the job of
+procedure <A HREF="diff.html#report"><CODE>report</CODE></A>.  Once the
+change has been reported, the program continues in
+<CODE>diff.same</CODE> until another difference is found.
+
+<P>The program finishes its work when the ends of both input files have been
+reached.
+
+<P><H2>The File Information Block Abstract Data Type</H2>
+
+<P>For each of the two input files, the program must remember several kinds of
+information.  The <CODE>report</CODE> procedure must know which is file number 1
+and which file number 2, in order to print the lines with the correct
+starting character.  The name of each file is needed as the
+input to <CODE>setread</CODE>.  The current line
+number is needed in order to report the location
+within each file of a changed section.  As I've just explained, there is a
+collection of <EM>pending</EM> lines during the examination of a change;
+we'll see shortly that another collection of <EM>saved</EM> lines is used for
+another purpose.
+
+<P>To keep all the information for a file collected together, <CODE>diff</CODE> uses
+an abstract data type called a &quot;file information block,&quot; or FIB, that is
+implemented as an array with five members.  The array is made by a
+constructor procedure <CODE>makefile</CODE>, and there are selectors for four of
+the five components:  <CODE>which</CODE>, <CODE>filename</CODE>, <CODE>linenum</CODE>, and <CODE>
+lines</CODE>.  For the fifth component, the saved lines, instead of a selector for
+the entire collection the program uses a selector <CODE>popsaved</CODE> that
+outputs a single line each time it's invoked.  (This will make more sense
+when you read about saved lines in the next section.)
+
+<P>
+The procedures within this program use these two FIBs as inputs
+instead of just the filenames.  To read from one of the files, for
+example, the program will say
+
+<P><PRE>setread filename :fib1
+</PRE>
+
+<P><H2>Saving and Re-Reading Input Lines</H2>
+
+<P>One further detail complicates the program.  Suppose that a change is found
+in which the two groups of differing lines are of different lengths.  For
+example, suppose three lines in the first file turn into six lines in the
+second file, like this:
+
+<P><PRE>Original line 1                    Original line 1
+<U>Original line 2</U>                    <U>Changed line 2</U>
+<U>Original line 3</U>                    <U>Changed line 3</U>
+<U>Original line 4</U>                    <U>New line 3.1</U>
+Original line 5                    <U>New line 3.2</U>
+Original line 6                    <U>New line 3.3</U>
+Original line 7                    <U>Changed line 4</U>
+Original line 8                    Original line 5
+Original line 9                    Original line 6
+</PRE>
+
+<P>The program has been reading lines alternately from the two
+files.  It has just read the line saying &quot;Original line 6&quot; from the second
+file, and that's the second consecutive match with a line previously read
+from the first file.  So the program is ready to report a change from lines
+2-4 of the first file to lines 2-7 of the second.
+
+<P>The trouble is that the program has already read three lines of the first
+file (the last three lines shown above) that have to be compared to lines
+that haven't yet been read from the second file.  Suppose that the files
+continue as follows:
+
+<P><PRE>Original line 10                   Original line 7
+</PRE>
+
+<P>We can't just say, &quot;Okay,
+we've found the end of a difference, so now we can go back to <CODE>diff.same</CODE>
+and read lines from the two files.&quot;  If we did that, we'd read
+&quot;Original line 10&quot; from file 1, but &quot;Original
+line 7&quot; from file 2, and we'd think there is a difference when really the
+two files are in agreement.
+
+<P>To solve this problem we must arrange for <CODE>diff.same</CODE> to <EM>re-read</EM>
+the three unused lines from file 1.  Logo allows a programmer to re-read part
+of a file by changing the current <EM>position</EM> within the file (this
+ability is called <EM>random access</EM>), but in this program I found
+it easier to <EM>buffer</EM> the lines by saving them in a list and then,
+the next time the program wants to read a line from the file, using one of
+the saved lines instead.
+
+<P>
+<PRE>to readline :fib
+if savedp :fib [output popsaved :fib]
+setread filename :fib
+output readword
+end
+</PRE>
+
+<P>The first instruction of this procedure says, &quot;If there are any
+saved lines for this file, remove the first one from the list and output
+it.&quot;  Otherwise, if there are no saved lines, then the procedure directs the
+Logo reader to the desired file (using <CODE>setread</CODE>) and uses <CODE>readword</CODE>
+to read a line.  Because <CODE>popsaved</CODE> removes a line from the list of
+saved lines, eventually the saved lines will be used up and then the program
+will continue reading from the actual file.
+
+<P><H2>Skipping <A NAME="diff.same">Equal</A> Lines</H2>
+
+<P>Here is the procedure that skips over identical pairs of lines:
+
+<P><PRE>to diff.same :fib1 :fib2
+local [line1 line2]
+do.while [make &quot;line1 getline :fib1
+          make &quot;line2 getline :fib2
+          if and listp :line1 listp :line2 [stop]    ; Both files ended.
+] [equalp :line1 :line2]
+addline :fib1 :line1                                 ; Difference found.
+addline :fib2 :line2
+diff.differ :fib1 :fib2
+end
+
+to getline :fib
+nextlinenum :fib
+output readline :fib
+end
+</PRE>
+
+<P>Most of the names you don't recognize are selectors and <EM>mutators</EM>
+for the FIB abstract data type.  (A mutator is a procedure that changes the
+value of an existing datum, such as <CODE>setitem</CODE> for arrays.)  One new
+Berkeley Logo primitive used here is <CODE>do.while</CODE>.  It takes two inputs,
+an instruction list and an expression whose value is <CODE>true</CODE> or <CODE>
+false</CODE>.  <CODE>Do.while</CODE> first carries out the instructions in the first
+input.  Then it evaluates the predicate expression.  If it's <CODE>true</CODE>,
+then <CODE>do.while</CODE> repeats the process, carrying out the instructions and
+evaluating the predicate, until the predicate becomes <CODE>false</CODE>.  In this
+case, the idea is &quot;Keep reading lines as long as <CODE>:line1</CODE>
+and <CODE>:line2</CODE> are equal.&quot;
+
+<P><CODE>Getline</CODE> reads a line, either from the file or from the saved lines, and
+also adds one to the current line number by invoking <CODE>nextlinenum</CODE>:
+
+<P><PRE>to nextlinenum :fib
+setitem 3 :fib (item 3 :fib)+1
+end
+</PRE>
+
+<P>This is a typical mutator; I won't show the others until the
+complete program listing at the end of the chapter.
+
+<P><H2>Comparing and <A NAME="diff.differ">Remembering</A> Unequal Lines</H2>
+
+<P><PRE>to diff.differ :fib1 :fib2
+local &quot;line
+make &quot;line readline :fib1
+addline :fib1 :line
+ifelse memberp :line lines :fib2 ~
+       [diff.found :fib1 :fib2] ~
+       [diff.differ :fib2 :fib1]
+end
+</PRE>
+
+<P><CODE>Diff.differ</CODE> reads a line (perhaps a saved line) from one of the files,
+adds it to the collection of pending lines (not saved lines!) for that file,
+then looks to see whether a line equal to this one is pending in the other
+file.  If so, then we may have found the end of the changed area, and
+<CODE>diff.found</CODE> is called to make sure there is a second pair of equal
+lines following these two.  If not, we must read a line from the other file;
+this is accomplished by a recursive call to <CODE>diff.differ</CODE> with the two 
+inputs in reversed order.  What was <CODE>:fib1</CODE> this time will be <CODE>:fib2</CODE>
+in the recursive call, and vice versa.  (This is why the FIB data type
+must include a record of which is the original file 1 and file 2.)
+
+<P>The reason that <CODE>diff.differ</CODE> uses <CODE>readline</CODE>
+rather than <CODE>getline</CODE> to read from the input files is that it
+doesn't advance the line
+number.  When dealing with a difference between the files, we are keeping a
+range of lines from each file, not just a single line.  The line number that
+the program keeps in the FIB is that of the <EM>first</EM>
+different line; the line number of the last different line will be computed
+by the <CODE>report</CODE> procedure later.
+
+<P><PRE>to <A NAME="diff.found">diff.found</A> :fib1 :fib2
+local &quot;lines
+make &quot;lines member2 (last butlast lines :fib1) ~
+                    (last lines :fib1) ~
+                    (lines :fib2)
+ifelse emptyp :lines ~
+       [diff.differ :fib2 :fib1] ~
+       [report :fib1 :fib2 (butlast butlast lines :fib1)
+               (firstn (lines :fib2) (count lines :fib2)-(count :lines))]
+end
+</PRE>
+
+<P><CODE>Diff.found</CODE> is called when the last line read from file 1 matches some
+line pending from file 2.  Its job is to find out whether the last <EM>
+two</EM> lines from file 1 match two consecutive lines from file 2.  Most of
+the work is done by the straightforward helper procedure <CODE>member2</CODE>, which
+works this way:
+
+<P><PRE>&gt; <U>show member2 &quot;and &quot;joy [she's my pride and joy etcetera]</U>
+[and joy etcetera]
+
+&gt; <U>show member2 &quot;pride &quot;joy [she's my pride and joy etcetera]</U>
+[]
+</PRE>
+
+<P>If the first two inputs are consecutive members of the third, then
+<CODE>member2</CODE> outputs the portion of its third input starting from the point
+at which the first input was found.  If not, then <CODE>member2</CODE> outputs the
+empty list.
+
+<P>If <CODE>member2</CODE>'s output is empty, we continue reading lines from the
+two files by invoking <CODE>diff.differ</CODE>.  If not, then we've found the end
+of a change, and we invoke <CODE>report</CODE> to print the results.  The first two
+inputs to <CODE>report</CODE> are the two files; the third and fourth are the
+corresponding sets of unequal lines.  The unequal lines from file 1 are all
+but the last two, the ones we just matched; the unequal lines from
+file 2 are all but the ones that <CODE>member2</CODE> output.  Helper procedure
+<CODE>firstn</CODE> is used to select those lines.
+
+<P><H2>Reporting a <A NAME="report">Difference</A></H2>
+
+<P>The <CODE>report</CODE> procedure is somewhat lengthy, but mostly because
+differences in which one of the sets of lines is empty are reported
+specially (as an insertion or a deletion, rather than as a change).
+
+<P><PRE>to report :fib1 :fib2 :lines1 :lines2
+local [end1 end2 dashes]
+if equalp (which :fib1) 2 [report :fib2 :fib1 :lines2 :lines1 stop]
+print &quot;==========
+make &quot;end1 (linenum :fib1)+(count :lines1)-1
+make &quot;end2 (linenum :fib2)+(count :lines2)-1
+make &quot;dashes &quot;false
+ifelse :end1 &lt; (linenum :fib1) [
+    print (sentence &quot;INSERT :end1+1 (word (linenum :fib2) &quot;- :end2))
+] [ifelse :end2 &lt; (linenum :fib2) [
+    print (sentence &quot;DELETE (word (linenum :fib1) &quot;- :end1) :end2+1)
+] [
+    print (sentence &quot;CHANGE (word (linenum :fib1) &quot;- :end1)
+                            (word (linenum :fib2) &quot;- :end2))
+    make &quot;dashes &quot;true
+]]
+process :fib1 &quot;|&lt; | :lines1 :end1
+if :dashes [print &quot;---]
+process :fib2 &quot;|&gt; | :lines2 :end2
+diff.same :fib1 :fib2
+end
+
+to process :fib :prompt :lines :end
+foreach :lines [type :prompt print ?]
+savelines :fib butfirst butfirst chop :lines (lines :fib)
+setlines :fib []
+setlinenum :fib :end+2
+end
+</PRE>
+
+<P>Here's how to read <CODE>report</CODE>:  The first step is to ensure that the files
+are in the proper order, so that <CODE>:fib1</CODE> is file number 1.  (If not,
+<CODE>report</CODE> invokes itself with its inputs reordered.)  The next step is to
+compute the ending line number for each changed section; it's the starting
+line number (found in the file data structure) plus the number of unmatched
+lines, minus one.  <CODE>Report</CODE> then prints a header, choosing <CODE>
+INSERT</CODE>, <CODE>DELETE</CODE>, or <CODE>CHANGE</CODE> as appropriate.  Finally, it
+invokes <CODE>process</CODE> once for each file.
+
+<P><CODE>Process</CODE> prints the unmatched lines, with the appropriate file indicator
+(<CODE>&lt;</CODE> or <CODE>&gt;</CODE>).  Then it takes whatever pending lines were not
+included in the unmatched group and transfers them to the saved lines, so
+that they will be read again.  (As a slight efficiency improvement, <CODE>
+process</CODE> skips over the two lines that we know matched two lines in the
+other file; there's no need to read those again.)  The set of pending lines
+is made empty, since no file difference is pending.  Finally, the line
+number in the file structure is increased to match the position following
+the two lines that ended the difference.
+
+<P>If <CODE>process</CODE> confuses you, look back at the example I gave earlier, when
+I first talked about saving and re-reading lines.  In that example, the lines
+from &quot;Original line 7&quot; to &quot;Original line 9&quot; in the first file are the
+ones that must be moved from the list of pending lines to the list of saved
+lines.  (No lines will be moved in the second file, since that one had the
+longer set of lines in this difference, six lines instead of three.)
+
+<P>By the way, in the places where the program adds or subtracts one or two
+in a line number calculation, I didn't work those out in advance.  I wrote
+the program without them, looked at the wrong results, and then figured out
+how to correct them!
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch1/v2ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P>I've discussed the most important parts of this program, but not all of the
+helper procedures.  If you want to understand the program fully, you can
+read this complete listing:
+
+<P><P>
+<P><PRE>
+to <A NAME="diff">diff</A> :file1 :file2 :output
+local "caseignoredp
+make "caseignoredp "false
+openread :file1
+openread :file2
+if not emptyp :output [openwrite :output]
+setwrite :output
+print [DIFF results:]
+print sentence [< File 1 =] :file1
+print sentence [> File 2 =] :file2
+diff.same (makefile 1 :file1) (makefile 2 :file2)
+print "==========
+setread []
+setwrite []
+close :file1
+close :file2
+if not emptyp :output [close :output]
+end
+
+;; Skip over identical lines in the two files.
+
+to diff.same :fib1 :fib2
+local [line1 line2]
+do.while [make "line1 getline :fib1
+          make "line2 getline :fib2
+          if and listp :line1 listp :line2 [stop]    ; Both files ended.
+] [equalp :line1 :line2]
+addline :fib1 :line1                                 ; Difference found.
+addline :fib2 :line2
+diff.differ :fib1 :fib2
+end
+
+;; Remember differing lines while looking for ones that match.
+
+to diff.differ :fib1 :fib2
+local "line
+make "line readline :fib1
+addline :fib1 :line
+ifelse memberp :line lines :fib2 ~
+       [diff.found :fib1 :fib2] ~
+       [diff.differ :fib2 :fib1]
+end
+
+to diff.found :fib1 :fib2
+local "lines
+make "lines member2 (last butlast lines :fib1) ~
+                    (last lines :fib1) ~
+                    (lines :fib2)
+ifelse emptyp :lines ~
+       [diff.differ :fib2 :fib1] ~
+       [report :fib1 :fib2 (butlast butlast lines :fib1)
+             (firstn (lines :fib2) (count lines :fib2)-(count :lines))]
+end
+
+to member2 :line1 :line2 :lines
+if emptyp butfirst :lines [output []]
+if and equalp :line1 first :lines equalp :line2 first butfirst :lines ~
+   [output :lines]
+output member2 :line1 :line2 butfirst :lines
+end
+
+to firstn :stuff :number
+if :number = 0 [output []]
+output fput (first :stuff) (firstn butfirst :stuff :number-1)
+end
+
+;; Read from file or from saved lines.
+
+to getline :fib
+nextlinenum :fib
+output readline :fib
+end
+
+to readline :fib
+if savedp :fib [output popsaved :fib]
+setread filename :fib
+output readword
+end
+
+;; Matching lines found, now report the differences.
+
+to report :fib1 :fib2 :lines1 :lines2
+local [end1 end2 dashes]
+if equalp (which :fib1) 2 [report :fib2 :fib1 :lines2 :lines1 stop]
+print "==========
+make "end1 (linenum :fib1)+(count :lines1)-1
+make "end2 (linenum :fib2)+(count :lines2)-1
+make "dashes "false
+ifelse :end1 < (linenum :fib1) [
+    print (sentence "INSERT :end1+1 (word (linenum :fib2) "- :end2))
+] [ifelse :end2 < (linenum :fib2) [
+    print (sentence "DELETE (word (linenum :fib1) "- :end1) :end2+1)
+] [
+    print (sentence "CHANGE (word (linenum :fib1) "- :end1)
+                            (word (linenum :fib2) "- :end2))
+    make "dashes "true
+]]
+process :fib1 "|< | :lines1 :end1
+if :dashes [print "-----]
+process :fib2 "|> | :lines2 :end2
+diff.same :fib1 :fib2
+end
+
+to process :fib :prompt :lines :end
+foreach :lines [type :prompt print ?]
+savelines :fib butfirst butfirst chop :lines (lines :fib)
+setlines :fib []
+setlinenum :fib :end+2
+end
+
+to chop :counter :stuff
+if emptyp :counter [output :stuff]
+output chop butfirst :counter butfirst :stuff
+end
+
+;; Constructor, selectors, and mutators for File Information Block (FIB)
+;; Five elements: file number, file name, line number,
+;; differing lines, and saved lines for re-reading.
+
+to makefile :number :name
+local "file
+make "file array 5               ; Items 4 and 5 will be empty lists.
+setitem 1 :file :number
+setitem 2 :file :name
+setitem 3 :file 0
+output :file
+end
+
+to which :fib
+output item 1 :fib
+end
+
+to filename :fib
+output item 2 :fib
+end
+
+to linenum :fib
+output item 3 :fib
+end
+
+to nextlinenum :fib
+setitem 3 :fib (item 3 :fib)+1
+end
+
+to setlinenum :fib :value
+setitem 3 :fib :value
+end
+
+to addline :fib :line
+setitem 4 :fib (lput :line item 4 :fib)
+end
+
+to setlines :fib :value
+setitem 4 :fib :value
+end
+
+to lines :fib
+output item 4 :fib
+end
+
+to savelines :fib :value
+setitem 5 :fib (sentence :value item 5 :fib)
+end
+
+to savedp :fib
+output not emptyp item 5 :fib
+end
+
+to popsaved :fib
+local "result
+make "result first item 5 :fib
+setitem 5 :fib (butfirst item 5 :fib)
+output :result
+end
+</PRE><P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch1/v2ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch2/diff.lg b/js/games/nluqo.github.io/~bh/v2ch2/diff.lg
new file mode 100644
index 0000000..8991bdc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch2/diff.lg
@@ -0,0 +1,174 @@
+to diff :file1 :file2 :output
+local "caseignoredp
+make "caseignoredp "false
+openread :file1
+openread :file2
+if not emptyp :output [openwrite :output]
+setwrite :output
+print [DIFF results:]
+print sentence [< File 1 =] :file1
+print sentence [> File 2 =] :file2
+diff.same (makefile 1 :file1) (makefile 2 :file2)
+print "==========
+setread []
+setwrite []
+close :file1
+close :file2
+if not emptyp :output [close :output]
+end
+
+;; Skip over identical lines in the two files.
+
+to diff.same :fib1 :fib2
+local [line1 line2]
+do.while [make "line1 getline :fib1
+          make "line2 getline :fib2
+          if and listp :line1 listp :line2 [stop]    ; Both files ended.
+] [equalp :line1 :line2]
+addline :fib1 :line1                                 ; Difference found.
+addline :fib2 :line2
+diff.differ :fib1 :fib2
+end
+
+;; Remember differing lines while looking for ones that match.
+
+to diff.differ :fib1 :fib2
+local "line
+make "line readline :fib1
+addline :fib1 :line
+ifelse memberp :line lines :fib2 ~
+       [diff.found :fib1 :fib2] ~
+       [diff.differ :fib2 :fib1]
+end
+
+to diff.found :fib1 :fib2
+local "lines
+make "lines member2 (last butlast lines :fib1) ~
+                    (last lines :fib1) ~
+                    (lines :fib2)
+ifelse emptyp :lines ~
+       [diff.differ :fib2 :fib1] ~
+       [report :fib1 :fib2 (butlast butlast lines :fib1)
+             (firstn (lines :fib2) (count lines :fib2)-(count :lines))]
+end
+
+to member2 :line1 :line2 :lines
+if emptyp butfirst :lines [output []]
+if and equalp :line1 first :lines equalp :line2 first butfirst :lines ~
+   [output :lines]
+output member2 :line1 :line2 butfirst :lines
+end
+
+to firstn :stuff :number
+if :number = 0 [output []]
+output fput (first :stuff) (firstn butfirst :stuff :number-1)
+end
+
+;; Read from file or from saved lines.
+
+to getline :fib
+nextlinenum :fib
+output readline :fib
+end
+
+to readline :fib
+if savedp :fib [output popsaved :fib]
+setread filename :fib
+output readword
+end
+
+;; Matching lines found, now report the differences.
+
+to report :fib1 :fib2 :lines1 :lines2
+local [end1 end2 dashes]
+if equalp (which :fib1) 2 [report :fib2 :fib1 :lines2 :lines1 stop]
+print "==========
+make "end1 (linenum :fib1)+(count :lines1)-1
+make "end2 (linenum :fib2)+(count :lines2)-1
+make "dashes "false
+ifelse :end1 < (linenum :fib1) [
+    print (sentence "INSERT :end1+1 (word (linenum :fib2) "- :end2))
+] [ifelse :end2 < (linenum :fib2) [
+    print (sentence "DELETE (word (linenum :fib1) "- :end1) :end2+1)
+] [
+    print (sentence "CHANGE (word (linenum :fib1) "- :end1)
+                            (word (linenum :fib2) "- :end2))
+    make "dashes "true
+]]
+process :fib1 "|< | :lines1 :end1
+if :dashes [print "-----]
+process :fib2 "|> | :lines2 :end2
+diff.same :fib1 :fib2
+end
+
+to process :fib :prompt :lines :end
+foreach :lines [type :prompt print ?]
+savelines :fib butfirst butfirst chop :lines (lines :fib)
+setlines :fib []
+setlinenum :fib :end+2
+end
+
+to chop :counter :stuff
+if emptyp :counter [output :stuff]
+output chop butfirst :counter butfirst :stuff
+end
+
+;; Constructor, selectors, and mutators for File Information Block (FIB)
+;; Five elements: file number, file name, line number,
+;; differing lines, and saved lines for re-reading.
+
+to makefile :number :name
+local "file
+make "file array 5               ; Items 4 and 5 will be empty lists.
+setitem 1 :file :number
+setitem 2 :file :name
+setitem 3 :file 0
+output :file
+end
+
+to which :fib
+output item 1 :fib
+end
+
+to filename :fib
+output item 2 :fib
+end
+
+to linenum :fib
+output item 3 :fib
+end
+
+to nextlinenum :fib
+setitem 3 :fib (item 3 :fib)+1
+end
+
+to setlinenum :fib :value
+setitem 3 :fib :value
+end
+
+to addline :fib :line
+setitem 4 :fib (lput :line item 4 :fib)
+end
+
+to setlines :fib :value
+setitem 4 :fib :value
+end
+
+to lines :fib
+output item 4 :fib
+end
+
+to savelines :fib :value
+setitem 5 :fib (sentence :value item 5 :fib)
+end
+
+to savedp :fib
+output not emptyp item 5 :fib
+end
+
+to popsaved :fib
+local "result
+make "result first item 5 :fib
+setitem 5 :fib (butfirst item 5 :fib)
+output :result
+end
diff --git a/js/games/nluqo.github.io/~bh/v2ch2/v2ch2.html b/js/games/nluqo.github.io/~bh/v2ch2/v2ch2.html
new file mode 100644
index 0000000..46490cc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch2/v2ch2.html
@@ -0,0 +1,645 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 2: Example: Finding File Differences</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Finding File Differences</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch02.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch1/v2ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="diff.lg"><CODE>diff</CODE></A>
+
+
+<P>As an example of a practical program that manipulates data files, this
+chapter is about comparing two similar files to find the differences
+between them.  This program is most often useful in comparing a current
+version of a file with an earlier version to see what has changed.
+On the next page is an example of two input files and the program's output.
+The output shows only those lines that differ between the two files,
+indicating changed lines, insertions, and deletions.  When several
+consecutive lines are different, they are grouped together as a single
+reported change.  (To demonstrate all of the program's capabilities, I've
+used short input files with more lines different than identical, and so the
+program's report is longer than the input files themselves.  In a more
+realistic example, the input files might be hundreds of lines long, with only
+a few differences, so it would be easier to read the program's output than
+to examine the files directly.)
+
+<P>
+<CENTER><STRONG>Input Files</STRONG></CENTER>
+
+<PRE>               Text1                                        Text2
+
+My goal in this series of books         My goal in this series of books
+is to make the goals and methods        is to make the goals and methods
+of a serious computer scientist         of a mad computer scientist
+accessible, at an introductory          accessible, at an introductory
+level, to people who are                level, to people who are
+interested in computer                  interested in playing computer
+programming but are not computer        games.
+science majors.                         If you're an
+If you're an                            adult or teenaged hobbyist, 
+adult or teenaged hobbyist,             you're definitely part of this
+or a teacher who wants to use the       audience.
+computer as an educational tool,        And I hope you appreciate
+you're definitely part of this          the privilege!
+audience.                               
+</PRE>
+
+<P>
+<CENTER><STRONG>Output File</STRONG></CENTER>
+
+<P><PRE>DIFF results:
+&lt; File 1 = Text1
+&gt; File 2 = Text2
+==========
+CHANGE 3-3 3-3
+&lt; of a serious computer scientist
+---
+&gt; of a mad computer scientist
+==========
+CHANGE 6-8 6-7
+&lt; interested in computer
+&lt; programming but are not computer
+&lt; science majors.
+---
+&gt; interested in playing computer
+&gt; games.
+==========
+DELETE 11-12 10
+&lt; or a teacher who wants to use the
+&lt; computer as an educational tool,
+==========
+INSERT 15 12-13
+&gt; and I hope you appreciate
+&gt; the privilege!
+==========
+</PRE>
+
+
+<P>I've called this program <CODE>diff</CODE> because it was inspired by a similar
+program of that name in the Unix operating system.  The format of the
+report that my <CODE>diff</CODE> generates is similar to that of the Unix version.
+In particular, I've followed the Unix <CODE>diff</CODE> convention that when a line
+from one of the input files appears in the report, it is marked by either
+a &quot;<CODE>&lt;</CODE>&quot; character if it's from the first file or a &quot;<CODE>&gt;</CODE>&quot; character
+if it's from the second file.
+
+<P>The numbers in the lines that begin with <CODE>CHANGE</CODE>, <CODE>INSERT</CODE>, or
+<CODE>DELETE</CODE> are line numbers, counting from one, in each of the two files.
+For example, the line
+
+<P><PRE>CHANGE 6-8 6-7
+</PRE>
+
+<P>indicates that lines 6 through 8 in the first file were replaced
+by lines 6 through 7 in the second file.  (The program considers a change
+to be finished when it finds two consecutive identical lines in the two
+files.  In this case, lines 9 and 10 of the first file are identical to
+lines 8 and 9 of the second file.)
+
+<P>The <CODE>diff</CODE> procedure takes three inputs.  The first two are names of
+the two input files; the third is either a name for an output file or an
+empty list, in which case the program's results are printed on the screen.
+For example, to see the results of my sample run, I'd say
+
+<P><PRE>diff &quot;Text1 &quot;Text2 []
+</PRE>
+
+<P>I picked this project partly because it requires switching between
+two input files, so you can see how the program uses <CODE>setread</CODE>
+repeatedly.
+
+<P><H2>Program Overview</H2>
+
+<P><A HREF="v2ch2.html#diff"><CODE>Diff</CODE></A>
+reads lines from the two input files in alternation.  As long
+as the corresponding lines are equal, the program just moves on to the
+next pair of lines.  (Procedure <A HREF="v2ch2.html#diff.same"><CODE>diff.same</CODE></A>
+handles this process.)  When
+a difference is found, the program's operation becomes more complicated.  It
+must remember all the lines that it reads from both files until it finds two
+consecutive equal pairs of lines.  (Procedures <A HREF="v2ch2.html#diff.differ"><CODE>diff.differ</CODE></A>
+and <A HREF="v2ch2.html#diff.found"><CODE>diff.found</CODE></A> do this.)
+
+<P>Life would be simple if the differences between the two files were only
+changes within a line, without adding or removing entire lines.  (This
+would be a realistic assumption if, for example, the second file had been
+created by applying a spelling correction program to the first file.
+Individual words would then be different, but each line of the second
+file would correspond to one line of the first.)  In that case, the
+structure of <CODE>diff.differ</CODE> could be similar to that of <CODE>diff.same</CODE>:
+Read a line from each file, compare the two, and report the pairs that are
+different.
+
+<P>But in practice, a change to a paragraph may make the file longer or
+shorter.  It may turn out, as in my sample run, that three lines from the
+first file correspond to only two lines from the second one.  If that's the
+case, then there's no guarantee that the equal lines that mark the end of a
+change will be at the same line <EM>numbers</EM> in the two files.  (In the
+sample, line 9 of the first file matches line 8 of the second.)  Whenever
+the program reads a line from one file, therefore, it must compare that
+line to <EM>every</EM> line that it's read from the other file since the
+two started being different.  Therefore, <CODE>diff.differ</CODE> must <EM>
+remember</EM> all of the lines that it reads from both files.
+
+<P>Finally, when two pairs of equal lines are found, the program must
+report the difference that it's detected.  That's the job of
+procedure <A HREF="v2ch2.html#report"><CODE>report</CODE></A>.  Once the
+change has been reported, the program continues in
+<CODE>diff.same</CODE> until another difference is found.
+
+<P>The program finishes its work when the ends of both input files have been
+reached.
+
+<P><H2>The File Information Block Abstract Data Type</H2>
+
+<P>For each of the two input files, the program must remember several kinds of
+information.  The <CODE>report</CODE> procedure must know which is file number 1
+and which file number 2, in order to print the lines with the correct
+starting character.  The name of each file is needed as the
+input to <CODE>setread</CODE>.  The current line
+number is needed in order to report the location
+within each file of a changed section.  As I've just explained, there is a
+collection of <EM>pending</EM> lines during the examination of a change;
+we'll see shortly that another collection of <EM>saved</EM> lines is used for
+another purpose.
+
+<P>To keep all the information for a file collected together, <CODE>diff</CODE> uses
+an abstract data type called a &quot;file information block,&quot; or FIB, that is
+implemented as an array with five members.  The array is made by a
+constructor procedure <CODE>makefile</CODE>, and there are selectors for four of
+the five components:  <CODE>which</CODE>, <CODE>filename</CODE>, <CODE>linenum</CODE>, and <CODE>
+lines</CODE>.  For the fifth component, the saved lines, instead of a selector for
+the entire collection the program uses a selector <CODE>popsaved</CODE> that
+outputs a single line each time it's invoked.  (This will make more sense
+when you read about saved lines in the next section.)
+
+<P>
+The procedures within this program use these two FIBs as inputs
+instead of just the filenames.  To read from one of the files, for
+example, the program will say
+
+<P><PRE>setread filename :fib1
+</PRE>
+
+<P><H2>Saving and Re-Reading Input Lines</H2>
+
+<P>One further detail complicates the program.  Suppose that a change is found
+in which the two groups of differing lines are of different lengths.  For
+example, suppose three lines in the first file turn into six lines in the
+second file, like this:
+
+<P><PRE>Original line 1                    Original line 1
+<U>Original line 2</U>                    <U>Changed line 2</U>
+<U>Original line 3</U>                    <U>Changed line 3</U>
+<U>Original line 4</U>                    <U>New line 3.1</U>
+Original line 5                    <U>New line 3.2</U>
+Original line 6                    <U>New line 3.3</U>
+Original line 7                    <U>Changed line 4</U>
+Original line 8                    Original line 5
+Original line 9                    Original line 6
+</PRE>
+
+<P>The program has been reading lines alternately from the two
+files.  It has just read the line saying &quot;Original line 6&quot; from the second
+file, and that's the second consecutive match with a line previously read
+from the first file.  So the program is ready to report a change from lines
+2-4 of the first file to lines 2-7 of the second.
+
+<P>The trouble is that the program has already read three lines of the first
+file (the last three lines shown above) that have to be compared to lines
+that haven't yet been read from the second file.  Suppose that the files
+continue as follows:
+
+<P><PRE>Original line 10                   Original line 7
+</PRE>
+
+<P>We can't just say, &quot;Okay,
+we've found the end of a difference, so now we can go back to <CODE>diff.same</CODE>
+and read lines from the two files.&quot;  If we did that, we'd read
+&quot;Original line 10&quot; from file 1, but &quot;Original
+line 7&quot; from file 2, and we'd think there is a difference when really the
+two files are in agreement.
+
+<P>To solve this problem we must arrange for <CODE>diff.same</CODE> to <EM>re-read</EM>
+the three unused lines from file 1.  Logo allows a programmer to re-read part
+of a file by changing the current <EM>position</EM> within the file (this
+ability is called <EM>random access</EM>), but in this program I found
+it easier to <EM>buffer</EM> the lines by saving them in a list and then,
+the next time the program wants to read a line from the file, using one of
+the saved lines instead.
+
+<P>
+<PRE>to readline :fib
+if savedp :fib [output popsaved :fib]
+setread filename :fib
+output readword
+end
+</PRE>
+
+<P>The first instruction of this procedure says, &quot;If there are any
+saved lines for this file, remove the first one from the list and output
+it.&quot;  Otherwise, if there are no saved lines, then the procedure directs the
+Logo reader to the desired file (using <CODE>setread</CODE>) and uses <CODE>readword</CODE>
+to read a line.  Because <CODE>popsaved</CODE> removes a line from the list of
+saved lines, eventually the saved lines will be used up and then the program
+will continue reading from the actual file.
+
+<P><H2>Skipping <A NAME="diff.same">Equal</A> Lines</H2>
+
+<P>Here is the procedure that skips over identical pairs of lines:
+
+<P><PRE>to diff.same :fib1 :fib2
+local [line1 line2]
+do.while [make &quot;line1 getline :fib1
+          make &quot;line2 getline :fib2
+          if and listp :line1 listp :line2 [stop]    ; Both files ended.
+] [equalp :line1 :line2]
+addline :fib1 :line1                                 ; Difference found.
+addline :fib2 :line2
+diff.differ :fib1 :fib2
+end
+
+to getline :fib
+nextlinenum :fib
+output readline :fib
+end
+</PRE>
+
+<P>Most of the names you don't recognize are selectors and <EM>mutators</EM>
+for the FIB abstract data type.  (A mutator is a procedure that changes the
+value of an existing datum, such as <CODE>setitem</CODE> for arrays.)  One new
+Berkeley Logo primitive used here is <CODE>do.while</CODE>.  It takes two inputs,
+an instruction list and an expression whose value is <CODE>true</CODE> or <CODE>
+false</CODE>.  <CODE>Do.while</CODE> first carries out the instructions in the first
+input.  Then it evaluates the predicate expression.  If it's <CODE>true</CODE>,
+then <CODE>do.while</CODE> repeats the process, carrying out the instructions and
+evaluating the predicate, until the predicate becomes <CODE>false</CODE>.  In this
+case, the idea is &quot;Keep reading lines as long as <CODE>:line1</CODE>
+and <CODE>:line2</CODE> are equal.&quot;
+
+<P><CODE>Getline</CODE> reads a line, either from the file or from the saved lines, and
+also adds one to the current line number by invoking <CODE>nextlinenum</CODE>:
+
+<P><PRE>to nextlinenum :fib
+setitem 3 :fib (item 3 :fib)+1
+end
+</PRE>
+
+<P>This is a typical mutator; I won't show the others until the
+complete program listing at the end of the chapter.
+
+<P><H2>Comparing and <A NAME="diff.differ">Remembering</A> Unequal Lines</H2>
+
+<P><PRE>to diff.differ :fib1 :fib2
+local &quot;line
+make &quot;line readline :fib1
+addline :fib1 :line
+ifelse memberp :line lines :fib2 ~
+       [diff.found :fib1 :fib2] ~
+       [diff.differ :fib2 :fib1]
+end
+</PRE>
+
+<P><CODE>Diff.differ</CODE> reads a line (perhaps a saved line) from one of the files,
+adds it to the collection of pending lines (not saved lines!) for that file,
+then looks to see whether a line equal to this one is pending in the other
+file.  If so, then we may have found the end of the changed area, and
+<CODE>diff.found</CODE> is called to make sure there is a second pair of equal
+lines following these two.  If not, we must read a line from the other file;
+this is accomplished by a recursive call to <CODE>diff.differ</CODE> with the two 
+inputs in reversed order.  What was <CODE>:fib1</CODE> this time will be <CODE>:fib2</CODE>
+in the recursive call, and vice versa.  (This is why the FIB data type
+must include a record of which is the original file 1 and file 2.)
+
+<P>The reason that <CODE>diff.differ</CODE> uses <CODE>readline</CODE>
+rather than <CODE>getline</CODE> to read from the input files is that it
+doesn't advance the line
+number.  When dealing with a difference between the files, we are keeping a
+range of lines from each file, not just a single line.  The line number that
+the program keeps in the FIB is that of the <EM>first</EM>
+different line; the line number of the last different line will be computed
+by the <CODE>report</CODE> procedure later.
+
+<P><PRE>to <A NAME="diff.found">diff.found</A> :fib1 :fib2
+local &quot;lines
+make &quot;lines member2 (last butlast lines :fib1) ~
+                    (last lines :fib1) ~
+                    (lines :fib2)
+ifelse emptyp :lines ~
+       [diff.differ :fib2 :fib1] ~
+       [report :fib1 :fib2 (butlast butlast lines :fib1)
+               (firstn (lines :fib2) (count lines :fib2)-(count :lines))]
+end
+</PRE>
+
+<P><CODE>Diff.found</CODE> is called when the last line read from file 1 matches some
+line pending from file 2.  Its job is to find out whether the last <EM>
+two</EM> lines from file 1 match two consecutive lines from file 2.  Most of
+the work is done by the straightforward helper procedure <CODE>member2</CODE>, which
+works this way:
+
+<P><PRE>&gt; <U>show member2 &quot;and &quot;joy [she's my pride and joy etcetera]</U>
+[and joy etcetera]
+
+&gt; <U>show member2 &quot;pride &quot;joy [she's my pride and joy etcetera]</U>
+[]
+</PRE>
+
+<P>If the first two inputs are consecutive members of the third, then
+<CODE>member2</CODE> outputs the portion of its third input starting from the point
+at which the first input was found.  If not, then <CODE>member2</CODE> outputs the
+empty list.
+
+<P>If <CODE>member2</CODE>'s output is empty, we continue reading lines from the
+two files by invoking <CODE>diff.differ</CODE>.  If not, then we've found the end
+of a change, and we invoke <CODE>report</CODE> to print the results.  The first two
+inputs to <CODE>report</CODE> are the two files; the third and fourth are the
+corresponding sets of unequal lines.  The unequal lines from file 1 are all
+but the last two, the ones we just matched; the unequal lines from
+file 2 are all but the ones that <CODE>member2</CODE> output.  Helper procedure
+<CODE>firstn</CODE> is used to select those lines.
+
+<P><H2>Reporting a <A NAME="report">Difference</A></H2>
+
+<P>The <CODE>report</CODE> procedure is somewhat lengthy, but mostly because
+differences in which one of the sets of lines is empty are reported
+specially (as an insertion or a deletion, rather than as a change).
+
+<P><PRE>to report :fib1 :fib2 :lines1 :lines2
+local [end1 end2 dashes]
+if equalp (which :fib1) 2 [report :fib2 :fib1 :lines2 :lines1 stop]
+print &quot;==========
+make &quot;end1 (linenum :fib1)+(count :lines1)-1
+make &quot;end2 (linenum :fib2)+(count :lines2)-1
+make &quot;dashes &quot;false
+ifelse :end1 &lt; (linenum :fib1) [
+    print (sentence &quot;INSERT :end1+1 (word (linenum :fib2) &quot;- :end2))
+] [ifelse :end2 &lt; (linenum :fib2) [
+    print (sentence &quot;DELETE (word (linenum :fib1) &quot;- :end1) :end2+1)
+] [
+    print (sentence &quot;CHANGE (word (linenum :fib1) &quot;- :end1)
+                            (word (linenum :fib2) &quot;- :end2))
+    make &quot;dashes &quot;true
+]]
+process :fib1 &quot;|&lt; | :lines1 :end1
+if :dashes [print &quot;---]
+process :fib2 &quot;|&gt; | :lines2 :end2
+diff.same :fib1 :fib2
+end
+
+to process :fib :prompt :lines :end
+foreach :lines [type :prompt print ?]
+savelines :fib butfirst butfirst chop :lines (lines :fib)
+setlines :fib []
+setlinenum :fib :end+2
+end
+</PRE>
+
+<P>Here's how to read <CODE>report</CODE>:  The first step is to ensure that the files
+are in the proper order, so that <CODE>:fib1</CODE> is file number 1.  (If not,
+<CODE>report</CODE> invokes itself with its inputs reordered.)  The next step is to
+compute the ending line number for each changed section; it's the starting
+line number (found in the file data structure) plus the number of unmatched
+lines, minus one.  <CODE>Report</CODE> then prints a header, choosing <CODE>
+INSERT</CODE>, <CODE>DELETE</CODE>, or <CODE>CHANGE</CODE> as appropriate.  Finally, it
+invokes <CODE>process</CODE> once for each file.
+
+<P><CODE>Process</CODE> prints the unmatched lines, with the appropriate file indicator
+(<CODE>&lt;</CODE> or <CODE>&gt;</CODE>).  Then it takes whatever pending lines were not
+included in the unmatched group and transfers them to the saved lines, so
+that they will be read again.  (As a slight efficiency improvement, <CODE>
+process</CODE> skips over the two lines that we know matched two lines in the
+other file; there's no need to read those again.)  The set of pending lines
+is made empty, since no file difference is pending.  Finally, the line
+number in the file structure is increased to match the position following
+the two lines that ended the difference.
+
+<P>If <CODE>process</CODE> confuses you, look back at the example I gave earlier, when
+I first talked about saving and re-reading lines.  In that example, the lines
+from &quot;Original line 7&quot; to &quot;Original line 9&quot; in the first file are the
+ones that must be moved from the list of pending lines to the list of saved
+lines.  (No lines will be moved in the second file, since that one had the
+longer set of lines in this difference, six lines instead of three.)
+
+<P>By the way, in the places where the program adds or subtracts one or two
+in a line number calculation, I didn't work those out in advance.  I wrote
+the program without them, looked at the wrong results, and then figured out
+how to correct them!
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch1/v2ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P>I've discussed the most important parts of this program, but not all of the
+helper procedures.  If you want to understand the program fully, you can
+read this complete listing:
+
+<P><P>
+<P><PRE>
+to <A NAME="diff">diff</A> :file1 :file2 :output
+local "caseignoredp
+make "caseignoredp "false
+openread :file1
+openread :file2
+if not emptyp :output [openwrite :output]
+setwrite :output
+print [DIFF results:]
+print sentence [< File 1 =] :file1
+print sentence [> File 2 =] :file2
+diff.same (makefile 1 :file1) (makefile 2 :file2)
+print "==========
+setread []
+setwrite []
+close :file1
+close :file2
+if not emptyp :output [close :output]
+end
+
+;; Skip over identical lines in the two files.
+
+to diff.same :fib1 :fib2
+local [line1 line2]
+do.while [make "line1 getline :fib1
+          make "line2 getline :fib2
+          if and listp :line1 listp :line2 [stop]    ; Both files ended.
+] [equalp :line1 :line2]
+addline :fib1 :line1                                 ; Difference found.
+addline :fib2 :line2
+diff.differ :fib1 :fib2
+end
+
+;; Remember differing lines while looking for ones that match.
+
+to diff.differ :fib1 :fib2
+local "line
+make "line readline :fib1
+addline :fib1 :line
+ifelse memberp :line lines :fib2 ~
+       [diff.found :fib1 :fib2] ~
+       [diff.differ :fib2 :fib1]
+end
+
+to diff.found :fib1 :fib2
+local "lines
+make "lines member2 (last butlast lines :fib1) ~
+                    (last lines :fib1) ~
+                    (lines :fib2)
+ifelse emptyp :lines ~
+       [diff.differ :fib2 :fib1] ~
+       [report :fib1 :fib2 (butlast butlast lines :fib1)
+             (firstn (lines :fib2) (count lines :fib2)-(count :lines))]
+end
+
+to member2 :line1 :line2 :lines
+if emptyp butfirst :lines [output []]
+if and equalp :line1 first :lines equalp :line2 first butfirst :lines ~
+   [output :lines]
+output member2 :line1 :line2 butfirst :lines
+end
+
+to firstn :stuff :number
+if :number = 0 [output []]
+output fput (first :stuff) (firstn butfirst :stuff :number-1)
+end
+
+;; Read from file or from saved lines.
+
+to getline :fib
+nextlinenum :fib
+output readline :fib
+end
+
+to readline :fib
+if savedp :fib [output popsaved :fib]
+setread filename :fib
+output readword
+end
+
+;; Matching lines found, now report the differences.
+
+to report :fib1 :fib2 :lines1 :lines2
+local [end1 end2 dashes]
+if equalp (which :fib1) 2 [report :fib2 :fib1 :lines2 :lines1 stop]
+print "==========
+make "end1 (linenum :fib1)+(count :lines1)-1
+make "end2 (linenum :fib2)+(count :lines2)-1
+make "dashes "false
+ifelse :end1 < (linenum :fib1) [
+    print (sentence "INSERT :end1+1 (word (linenum :fib2) "- :end2))
+] [ifelse :end2 < (linenum :fib2) [
+    print (sentence "DELETE (word (linenum :fib1) "- :end1) :end2+1)
+] [
+    print (sentence "CHANGE (word (linenum :fib1) "- :end1)
+                            (word (linenum :fib2) "- :end2))
+    make "dashes "true
+]]
+process :fib1 "|< | :lines1 :end1
+if :dashes [print "-----]
+process :fib2 "|> | :lines2 :end2
+diff.same :fib1 :fib2
+end
+
+to process :fib :prompt :lines :end
+foreach :lines [type :prompt print ?]
+savelines :fib butfirst butfirst chop :lines (lines :fib)
+setlines :fib []
+setlinenum :fib :end+2
+end
+
+to chop :counter :stuff
+if emptyp :counter [output :stuff]
+output chop butfirst :counter butfirst :stuff
+end
+
+;; Constructor, selectors, and mutators for File Information Block (FIB)
+;; Five elements: file number, file name, line number,
+;; differing lines, and saved lines for re-reading.
+
+to makefile :number :name
+local "file
+make "file array 5               ; Items 4 and 5 will be empty lists.
+setitem 1 :file :number
+setitem 2 :file :name
+setitem 3 :file 0
+output :file
+end
+
+to which :fib
+output item 1 :fib
+end
+
+to filename :fib
+output item 2 :fib
+end
+
+to linenum :fib
+output item 3 :fib
+end
+
+to nextlinenum :fib
+setitem 3 :fib (item 3 :fib)+1
+end
+
+to setlinenum :fib :value
+setitem 3 :fib :value
+end
+
+to addline :fib :line
+setitem 4 :fib (lput :line item 4 :fib)
+end
+
+to setlines :fib :value
+setitem 4 :fib :value
+end
+
+to lines :fib
+output item 4 :fib
+end
+
+to savelines :fib :value
+setitem 5 :fib (sentence :value item 5 :fib)
+end
+
+to savedp :fib
+output not emptyp item 5 :fib
+end
+
+to popsaved :fib
+local "result
+make "result first item 5 :fib
+setitem 5 :fib (butfirst item 5 :fib)
+output :result
+end
+</PRE><P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch1/v2ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch3/exit.html b/js/games/nluqo.github.io/~bh/v2ch3/exit.html
new file mode 100644
index 0000000..274e65e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch3/exit.html
@@ -0,0 +1,487 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 3: Nonlocal Exit</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Nonlocal Exit</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch03.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch2/v2ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch4/v2ch4.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>
+
+
+<P>This chapter is about the commands <CODE>catch</CODE> and <CODE>throw</CODE>.  These
+commands work together as a kind of super-<CODE>stop</CODE> command, which
+you can use to stop several levels of procedure invocation at once.
+
+<P><H2>Quiz Program Revisited</H2>
+
+<P>In Chapter 4 of the first volume, which was about predicates, I posed the
+problem of a quiz program that would allow three tries to answer each
+question.  Here is the method I used then:
+
+<P><PRE>to ask.thrice :question :answer
+repeat 3 [if ask.once :question :answer [stop]]
+print sentence [The answer is] :answer
+end
+
+to ask.once :question :answer
+print :question
+if equalp readlist :answer [print [Right!] output &quot;true]
+print [Sorry, that's wrong.]
+output &quot;false
+end
+</PRE>
+
+<P>I remarked that <CODE>ask.once</CODE> acts like a command, in that it has an
+effect (printing stuff), but it's also an operation, which outputs
+<CODE>true</CODE> or <CODE>false</CODE>.  What it <EM>really</EM> wants to do is not
+output a value but instead be able to stop not only itself but also
+its calling procedure <CODE>ask.thrice</CODE>.  Here is another version that
+allows just that:
+
+<P><PRE>to qa :question :answer
+catch &quot;correct [ask.thrice :question :answer]
+end
+
+to ask.thrice :question :answer
+repeat 3 [ask.once :question :answer]
+print sentence [The answer is] :answer
+end
+
+to ask.once :question :answer
+print :question
+if equalp readlist :answer [print [Right!] throw &quot;correct]
+print [Sorry, that's wrong.]
+end
+</PRE>
+
+<P>To understand this group of procedures, start with <CODE>
+ask.thrice</CODE> and suppose the player keeps getting the wrong answer.
+Both <CODE>ask.once</CODE> and <CODE>ask.thrice</CODE> are straightforward commands;
+the <CODE>repeat</CODE> instruction in <CODE>ask.thrice</CODE> is simpler than it
+was in the other version.
+
+<P>Now what if the person answers correctly?  <CODE>Ask.once</CODE> then
+evaluates the instruction
+
+<P><PRE>throw &quot;correct
+</PRE>
+
+<P><CODE>Throw</CODE> is a command that requires one input, which must be a
+word, called a &quot;tag.&quot; The effect of <CODE>throw</CODE> is to stop the current
+procedure, like <CODE>stop</CODE>, and to keep stopping higher-level procedures
+until it reaches an active <CODE>catch</CODE> whose first input is the same as the
+input to <CODE>throw</CODE>.
+
+<P>If that sounds confusing, don't give up; it's because I haven't
+explained <CODE>catch</CODE> and you have to understand them together.  The
+description of <CODE>catch</CODE> is deceptively simple:  <CODE>Catch</CODE> is a
+command that requires two inputs.  The first must be a word (called
+the &quot;catch tag&quot;), the
+second a list of Logo instructions.  The effect of <CODE>catch</CODE> is the
+same as that of <CODE>run</CODE>--it evaluates the instructions in the
+list.  <CODE>Catch</CODE> pays no attention to its first input.  That input
+is there only for the benefit of <CODE>throw</CODE>.
+
+<P>In this example program <CODE>qa</CODE> invokes <CODE>catch</CODE>; <CODE>catch</CODE> invokes
+<CODE>ask.thrice</CODE>, which invokes <CODE>repeat</CODE>, which invokes <CODE>ask.once</CODE>.
+To understand how <CODE>throw</CODE> works, you have to remember that primitive
+procedures are just as much procedures as user-defined ones.  That's
+something we're sometimes lax about.  A couple of paragraphs ago, I said
+that <CODE>ask.once</CODE> evaluates the instruction
+
+<P><PRE>throw &quot;correct
+</PRE>
+
+<P>if the player answers correctly.  That wasn't really true.
+The truth is that <CODE>ask.once</CODE> evaluates the instruction
+
+<P><PRE>if equalp readlist :answer [print [Right!] throw &quot;correct]
+</PRE>
+
+<P>by invoking <CODE>if</CODE>.  It is the procedure <CODE>if</CODE> that
+actually evaluates the instruction that invokes <CODE>throw</CODE>.  I made
+a bit of a fuss about this fine point when we first met <CODE>if</CODE>, but
+I've been looser about it since then.  Now, though, we need to go back
+to thinking precisely.  The point is that there is a <CODE>catch</CODE>
+procedure in the collection of active procedures (<CODE>qa</CODE>, <CODE>catch</CODE>,
+<CODE>ask.thrice</CODE>, and so on) at the time <CODE>throw</CODE> is invoked.
+
+<P>(In Chapter 9 of the first volume, I made the point that primitives count as
+active procedures and that <CODE>stop</CODE> stops the lowest-level invocation of a
+user-defined procedure.  I said that it would be silly for <CODE>stop</CODE> to
+stop only the <CODE>if</CODE> that invoked it, but that you could imagine <CODE>stop</CODE>
+stopping a <CODE>repeat</CODE>.  I gave
+
+<P><PRE>repeat 100 [print &quot;hello if equalp random 5 0 [stop]]
+</PRE>
+
+<P>as an example of something that doesn't work.  But we can
+make it work this way:
+
+<P><PRE>catch &quot;done [repeat 100 [print &quot;hello
+                         if equalp random 5 0 [throw &quot;done]]]
+</PRE>
+
+<P>The <CODE>throw</CODE> stops the <CODE>if</CODE>, the <CODE>repeat</CODE>, and the <CODE>
+catch</CODE>.  Here's a little quiz for you: Why don't I say that the <CODE>
+throw</CODE> stops the <CODE>equalp</CODE>?)
+
+<P><H2>Nonlocal Exit and Modularity</H2>
+
+<P><CODE>Throw</CODE> is called a &quot;nonlocal exit&quot; because it stops not only
+the (user-defined) procedure in which it is used but also possibly
+some number of superprocedures of that one.  Therefore, it has an
+effect on the program as a whole that's analogous to the effect of
+changing the value of a variable that is not local to the procedure
+doing the changing.  If you see a <CODE>make</CODE> command used in some
+procedure, and the variable whose name is the first input isn't local
+to the same procedure, it becomes much harder to understand what that
+procedure is really doing.  You can't just read that procedure in
+isolation; you have to think about all its superprocedures too.
+That's why I've been discouraging you from using global variables.
+
+<P><CODE>Throw</CODE> is an offense against modularity in the same way.  If I
+gave you <CODE>ask.once</CODE> to read, without having shown you the rest of
+the program, you'd have trouble understanding it.  The point may not
+seem so important when you're reading the small example programs in
+this book, but when you are working on large projects, with 30 or 300
+procedures in them, it becomes much more important.
+
+<P>If I were going to use <CODE>catch</CODE> and <CODE>throw</CODE> in this quiz
+project, one thing I might do is rename <CODE>ask.thrice</CODE> and <CODE>
+ask.once</CODE> as <CODE>qa1</CODE> and <CODE>qa2</CODE>.  These names would make it clear
+that the three procedures are meant to work together and indicate which is a
+subprocedure of which.  That name change would help a reader of the
+program.  (Remember that <CODE>qa</CODE> and its friends are not the whole project;
+they're all subprocedures of a higher-level <CODE>quiz</CODE> procedure.  So
+grouping them with similar names really does distinguish them from
+something else.)
+
+<P><H2>Nonlocal Output</H2>
+
+<P>Consider this procedure that takes a list of numbers as its input and
+computes the product of all the numbers:
+
+<P><PRE>to multiply :list
+if emptyp :list [output 1]
+output (first :list) * (multiply butfirst :list)
+end
+</PRE>
+
+<P>Suppose that we intend to use this procedure with very large lists
+of numbers, and we have reason to believe that many of the lists will include
+a zero element.  If any number in the list is zero, then the product of the
+entire list must be zero; we can save time by giving an output of zero as
+soon as we discover this:
+
+<P><PRE>to multiply :list
+if emptyp :list [output 1]
+if equalp first :list 0 [output 0]
+output (first :list) * (multiply butfirst :list)
+end
+</PRE>
+
+<P>This is an improvement, but not enough of one.  To see why, look at this
+trace of a typical invocation:
+
+<P><PRE>? <U>trace &quot;multiply</U>
+? <U>print multiply [4 5 6 0 1 2 3]</U>
+<SMALL><CODE>( multiply [4 5 6 0 1 2 3] )
+ ( multiply [5 6 0 1 2 3] )
+  ( multiply [6 0 1 2 3] )
+   ( multiply [0 1 2 3] )
+   multiply outputs 0
+  multiply outputs 0
+ multiply outputs 0
+multiply outputs 0
+</CODE></SMALL>0
+</PRE>
+
+<P>Each of the last three lines indicates an invocation of
+<CODE>multiply</CODE> in which the zero output by a lower level is multiplied
+by a number seen earlier in the list: first 6, then 5, then 4.  It
+would be even better to avoid those extra multiplications:
+
+<P><PRE>to multiply :list
+output catch &quot;zero [mul1 :list]
+end
+
+to mul1 :list
+if emptyp :list [output 1]
+if equalp first :list 0 [(throw &quot;zero 0)]
+output (first :list) * (mul1 butfirst :list)
+end
+
+? <U>trace [multiply mul1]</U>
+? <U>print multiply [4 5 6 0 1 2 3]</U>
+<SMALL><CODE>( multiply [4 5 6 0 1 2 3] )
+ ( mul1 [4 5 6 0 1 2 3] )
+  ( mul1 [5 6 0 1 2 3] )
+   ( mul1 [6 0 1 2 3] )
+    ( mul1 [0 1 2 3] )
+multiply outputs 0
+</CODE></SMALL>0
+</PRE>
+
+<P>This time, as soon as <CODE>mul1</CODE> sees a zero in the list, it
+arranges for an immediate return to <CODE>multiply</CODE>, without completing
+the other three pending invocations of <CODE>mul1</CODE>.
+
+<P>In the definition of <CODE>mul1</CODE>, the parentheses around the invocation
+of <CODE>throw</CODE> are required, because in this situation we are giving <CODE>
+throw</CODE> an optional second input.  When given a second input, <CODE>throw</CODE>
+acts as a super-<CODE>output</CODE> instead of as a super-<CODE>stop</CODE>.  That is,
+<CODE>throw</CODE> finds the nearest enclosing matching <CODE>catch</CODE>, as usual,
+but arranges that that matching <CODE>catch</CODE> outputs a value, namely the
+second input to <CODE>throw</CODE>.  In this example, the word <CODE>zero</CODE> is the
+catch tag, and the number <CODE>0</CODE> is the output value.
+
+<P>The same trick that I've used here for efficiency reasons can also be used
+to protect against the possibility of invalid input data.  This time, suppose
+that we want to multiply a list of numbers, but we suspect that occasionally
+the user of the program might accidentally supply an input list that includes
+a non-numeric member.  A small modification will prevent a Logo error
+message:
+
+<P><PRE>to multiply :list
+output catch &quot;early [mul1 :list]
+end
+
+to mul1 :list
+if emptyp :list [output 1]
+if not numberp first :list [(throw &quot;early &quot;non-number)]
+if equalp first :list 0 [(throw &quot;early 0)]
+output (first :list) * (mul1 butfirst :list)
+end
+
+? <U>print multiply [781 105 87 foo 24 13 6]</U>
+non-number
+</PRE>
+
+<P>I've changed the catch tag, even though Logo wouldn't care,
+because using the word <CODE>zero</CODE> as the tag is misleading now that it
+also serves the purpose of catching non-numeric data.
+
+<P>
+
+<H2>Catching Errors</H2>
+
+<P>On the other hand, if we don't expect to see invalid data very often,
+then checking every list member to make sure it's a number is needlessly
+time-consuming; also, this &quot;defensive&quot; test makes the program structure
+more complicated and therefore harder for people to read.  Instead, I'd
+like to be able to multiply the list members, and let Logo worry about
+possible non-numeric input.  Here's how:
+
+<P><PRE>to multiply :list
+catch &quot;error [output mul1 :list]
+output &quot;non-number
+end
+
+to mul1 :list
+if emptyp :list [output 1]
+output (first :list) * (mul1 butfirst :list)
+end
+
+? <U>print multiply [3 4 5]</U>
+60
+? <U>print multiply [3 four 5]</U>
+non-number
+</PRE>
+
+<P>To understand how this works, you must know what Logo does when some
+primitive procedure (such as <CODE>*</CODE> in this example) complains about
+an error.  The Logo error handler automatically carries out the
+instruction
+
+<P><PRE>throw &quot;error
+</PRE>
+
+<P>If this <CODE>throw</CODE> &quot;unwinds&quot; the active procedures all
+the way to top level without finding a corresponding <CODE>catch</CODE>, then
+Logo prints the error message.  If you do catch the error, no message
+is printed.
+
+<P>If you are paused (see Chapter 15 of the first volume), the situation is a
+little more complicated.  Imagine that there is a procedure called <CODE>
+pause.loop</CODE> that reads and evaluates the instructions you type while
+paused.  The implicit <CODE>throw</CODE> on an error can be caught by a <CODE>catch</CODE>
+that is invoked &quot;below&quot; that interactive level.  That is, during the pause
+you can invoke a procedure that catches errors.  But if you don't do that,
+<CODE>pause.loop</CODE> will catch the error and print the appropriate message.
+(You understand, I hope, that this is an imaginary procedure.  I've just
+given it a name to make the point that the interactive instruction evaluator
+that is operating during a pause is midway through the collection of active
+procedures starting with the top-level one and ending with the one that
+caused the error.)  What all this means, more loosely, is that an error
+during a pause can't get you all the way back to top level, but only to where
+you were paused.
+
+<P>You should beware of the fact that stopping a program by typing control-C
+or command-period, depending on the type of computer you're using, is
+handled as if it were an error.  That is, it can be caught.  So if you
+write a program that catches errors and never stops, you're in
+trouble.  You may have to turn the computer off and start over again
+to escape!
+
+<P>If you use the <CODE>item</CODE> primitive to ask for more
+items than are in the list, it's an error.  Here are two versions of
+<CODE>item</CODE> that output the empty list instead:
+
+<P><PRE>to safe.item1 :number :list
+if :number &lt; (1+count :list) [output item :number :list]
+output []
+end
+
+to safe.item2 :number :list
+catch &quot;error [output item :number :list]
+output []
+end
+</PRE>
+
+<P>The first version explicitly checks, before invoking <CODE>
+item</CODE>, to make sure the item number is small enough.  The second
+version goes ahead and invokes <CODE>item</CODE> without checking, but it
+arranges to catch any error that happens.  If there is no error, the
+<CODE>output</CODE> ends the running of the procedure.  If we get to the next
+instruction line, we know there must have been an error.  The second
+version of the procedure is a bit faster because it doesn't have to
+do all that arithmetic before trying <CODE>item</CODE>.  Also, the first version
+only tests for one possible error; it will still bomb out, for example,
+if given a negative item number.  The second version is safe against
+<EM>any</EM> bad input.
+
+<P>This technique works well if the instruction list <CODE>output</CODE>s or
+<CODE>stop</CODE>s.  But what if we want to do something like
+
+<P><PRE>catch &quot;error [make &quot;variable item 7 :list]
+</PRE>
+
+<P>and we want to put something special in the variable if
+there is an error?  In this example, the procedure will continue to
+its next instruction whether or not an error was caught.  We need a
+way to ask Logo about any error that might have happened.
+For this purpose we use the operation <CODE>error</CODE>.
+This operation takes no inputs.  It outputs a list with information
+about the most recently caught error.  If no error has been caught, it
+outputs the empty list.  Otherwise it outputs a list of four members: a
+numeric error code, the text of the error message that would otherwise
+have been printed, the name of the procedure in which the error happened,
+and the instruction line that was being evaluated.
+
+<P><PRE>to sample
+catch &quot;error [print :nonexistent]
+show error
+end
+
+? <U>sample</U>
+[11 [nonexistent has no value] sample
+    [catch &quot;error [print :nonexistent]]]
+</PRE>
+
+<P>But for now all
+that matters is that the output will be nonempty if an error was
+caught.  So I can say
+
+<P><PRE>catch &quot;error [make &quot;variable item 7 :list]
+if not emptyp error [make &quot;variable []]
+</PRE>
+
+<P>This will put an empty list into the variable if there is an
+error in the first line.
+
+<P>You can only invoke <CODE>error</CODE> once for each caught error.  If you
+invoke <CODE>error</CODE> a second time, it will output the empty list.
+That's so that you don't get confused by trying to catch an error
+twice and having an error actually happen the first time but not the
+second time.  If you'll need to refer to the contents of the <CODE>
+error</CODE> list more than once, put it in a variable.
+
+<P>Just in case you've previously caught an error without invoking <CODE>error</CODE>,
+it's a good idea to use the instruction
+
+<P><PRE>ignore error
+</PRE>
+
+<P>before catching an error and invoking <CODE>error</CODE> to test
+whether or not the error occurred.  <CODE>Ignore</CODE> is a Berkeley Logo
+primitive that takes one input and does nothing with it; the sole
+purpose of the instruction is to &quot;use up&quot; any earlier caught error
+so that the next invocation of <CODE>error</CODE> will return an empty list
+if no error is caught this time.
+
+<P><H2>Ending It All</H2>
+
+<P>You can stop all active procedures and return to top level by
+evaluating the instruction
+
+<P><PRE>throw &quot;toplevel
+</PRE>
+
+<P>This is a special kind of <CODE>throw</CODE> that can't be caught.
+
+<P>You've seen this instruction before, in the first volume, where I mentioned
+it as a way to get out of a pause.  That's where it's most useful.
+Before you use it in a procedure, though, you should be sure that you
+<EM>really</EM> want to stop everything.  For example, suppose you're
+writing a game program.  If the player gets zapped by an evil Whatzit,
+he's dead and the game is over.  So you write
+
+<P><PRE>to zap.player
+print [You're dead!]
+throw &quot;toplevel
+end
+</PRE>
+
+<P>because <CODE>zap.player</CODE> might be invoked several levels
+deep, but you want to stop everything.  But one day you decide to take
+three different games you've written and combine them into a single
+program:
+
+<P><PRE>to play
+local &quot;gamename
+print [You can play wumpus, dungeon, or rummy.]
+print [Which do you want?]
+make &quot;gamename first rl
+if :gamename = &quot;wumpus [wumpus]
+if :gamename = &quot;dungeon [dungeon]
+if :gamename = &quot;rummy [rummy]
+if not memberp :gamename [wumpus dungeon rummy] [print [No such game!]]
+play
+end
+</PRE>
+
+<P>Now your game is no longer the top-level procedure.  <CODE>
+play</CODE> wants to keep going after a game is over.  By throwing to
+toplevel in the game program, you make that impossible.
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch2/v2ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch4/v2ch4.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch4/cards.gif b/js/games/nluqo.github.io/~bh/v2ch4/cards.gif
new file mode 100644
index 0000000..8aa5d77
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch4/cards.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch4/solitaire.html b/js/games/nluqo.github.io/~bh/v2ch4/solitaire.html
new file mode 100644
index 0000000..15e6323
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch4/solitaire.html
@@ -0,0 +1,1683 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 4: Example: Solitaire</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Solitaire</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch04.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch5/v2ch5.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Program file for this chapter: <A HREF="solitaire.lg"><CODE>solitaire</CODE></A>
+
+<P>
+This program deals out a hand of solitaire and maintains a picture of
+the card layout as you play the game by entering commands to move cards.  It
+doesn't try to provide help with strategy, but it does know the rules for
+legal moves.
+
+<P>
+This chapter follows Chapter 3 because the solitaire program uses
+<CODE>catch</CODE> and <CODE>throw</CODE> for three kinds of nonlocal exit.
+The program is an infinite loop that plays games repeatedly, so there is an
+exit command that is implemented as a <CODE>throw</CODE>.  Each game is
+itself an infinite loop, processing user commands repeatedly until either
+the game is won or the user asks to start a new game.  The command to start
+a new game is also implemented as a <CODE>throw</CODE>.  Finally, if the
+program detects an error in a user command, such as asking to move a card
+that isn't playable, the program rings a bell and <CODE>throw</CODE>s back
+to the command-reading loop.
+
+<PRE>
+to solitaire
+<EM>...initialization...</EM>
+catch "exit [forever [onegame]]
+end
+
+to onegame
+<EM>...initialization...</EM>
+catch "endgame [forever [catch "bell [parsecmd]]]
+end
+</PRE>
+
+<H2>The User Interface</H2>
+
+<P>
+But what I actually find most interesting about this program is the way
+in which it interacts with the user.  By now, most people have seen
+computer solitaire programs in which the cards are drawn graphically on
+the screen, and the user moves cards by dragging with a mouse.  (A program
+of that kind is included with Microsoft Windows, and versions are also
+available for most other computer systems.)  The advantage of the mouse
+interface is that it's very easy to learn.  Once you've seen how dragging
+an object with the mouse works in a painting program or a word processor,
+it's immediately obvious how to drag cards in the solitaire program, without
+reading an instruction manual.
+
+<P>
+This Logo solitaire program doesn't use a mouse.  Instead, you move cards
+with keyboard commands.  Most of the time it takes a single keystroke to
+tell the program which card to move, and where to move it.  The trouble
+is that you have to learn the command keys!  Given the choice, I think that
+most people would rather start playing right away with a mouse-driven
+program than take the time to learn to use mine.  But I actually find
+the Logo program <EM>easier</EM> to use.  Typing a single key is faster
+and easier on the wrist than moving the mouse to where the card is,
+holding down the mouse button, moving the mouse to where you want to put
+the card, and then releasing the button.
+
+<P>
+There's no question that mouse-based graphical user interfaces
+have vastly increased the acceptance and use of computers by people who
+are not technical experts.  And I was happy to have a mouse-based drawing
+program to produce many of the illustrations in these books!  But I did
+the word processing with a keyboard-controlled text editor; I find it
+easier to use and more flexible than the mouse-based word processors.
+Maybe it's just incipient old age, but I'm still a holdout against the
+idea that <EM>everything</EM> is better done with a mouse.
+
+<P>
+Play several games using this program, and several using a mouse-based
+solitaire program, and see what you think.
+
+<H2>The Game of Solitaire</H2>
+
+<P>
+Here is a picture of a solitaire game in progress.
+
+
+<P><CENTER><IMG SRC="cards.gif" ALT="<P>figure: cards"></CENTER>
+
+<P>
+In the center of the picture are seven <EM>stacks</EM> of cards.
+Each stack may include some <EM>hidden</EM> cards and some <EM>shown</EM>
+cards.  The hidden cards, if any, are beneath the shown cards.  If there are
+any cards at all in a stack, at least one must be shown.  Cards that are not
+part of this layout are held in the <EM>hand</EM> and dealt from the hand
+onto the <EM>pile</EM>; the cards in the hand are hidden, while the top card
+of the pile is visible.  At the top of the picture are four more piles of
+cards, one for each suit; I'll call these piles &quot;the <EM>top</EM>&quot; so that
+I can reserve the name <EM>pile</EM> for the one at the bottom.
+
+<P>
+Here is how the same layout would be represented by the program:
+
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch4/solitaire.gif" ALT="<P>figure: solitaire"></CENTER>
+
+<P>
+Shown cards are represented on the screen by the rank and suit of
+the card.  Several cards may be shown in each stack, while only one card is
+shown in the pile, and one of each suit in the top.  Each stack has a dash
+at the top of its display if there are any hidden cards in that stack; the
+hand is represented by the number of cards in it.
+
+<P>
+In playing solitaire it's important to distinguish black cards from red
+cards, so the program does its best to present the color information to
+you.  The facilities for color display vary tremendously between computer
+models, both in what capabilities are available and in the means by which
+a program can use them.  Berkeley Logo sacrifices versatility for
+uniformity; there is a <CODE>standout</CODE> primitive operation that can
+be used to print text in &quot;reverse video,&quot; whichever of black-on-white
+and white-on-black isn't the usual presentation.
+
+
+<P><CENTER><IMG SRC="standout.gif" ALT="<P>figure: standout"></CENTER>
+
+<P>
+The <CODE>solitaire</CODE> program displays red cards in normal text
+and black cards in reverse video.  The DOS version normally displays white
+text on a black background, while the Macintosh version normally displays
+black text on a white background, so the effect looks different on each
+kind of computer.
+
+<P>
+There are many variations in the rules of solitaire, so I should describe
+in detail the version this program knows.  In the initial layout, there are
+seven stacks.  The first stack (on the left) has one shown card.  The second
+has one shown and one hidden.  The third has one shown and two hidden.  Each
+stack has one more hidden card than the one before it, so the seventh stack,
+at the right, has one shown card and six hidden cards.  There are 28 cards
+altogether on the board; the remaining 24 cards are in the hand.
+
+<P>
+Here are the legal moves:
+
+<OL>
+<LI>Three cards at a time may be dealt from the hand to the pile.  The
+cards are turned face up, so that the last one dealt is shown.  If there are
+fewer than three cards in the hand, however many cards are left may be dealt
+in this way.  If there are no cards in the hand at all, the entire pile may
+be picked up and turned upside down, so that they return to the hand in the
+same order they were in at the beginning.
+
+<LI>The top card of the pile, or the topmost card of any stack, may be
+moved to the top if (a) it is an ace, <EM>or</EM> (b) the card of the same
+suit and the immediately preceding rank is visible at the top.  For example,
+the four of clubs can be played onto the three of clubs at the top.
+
+<LI>The top card of the pile, or any shown card in any stack, may be
+moved onto a stack if the topmost card of that stack is (a) of the opposite
+color, <EM>and</EM> (b) of the immediately following rank as the card you are
+moving.  For example, the four of clubs can be played onto the five of
+hearts or the five of diamonds on a stack.
+
+<LI> When a card is moved onto a stack, it is placed so that it does not
+completely cover any other shown cards on that stack.  Any such shown cards
+remain shown.
+
+<LI>When moving a shown card from a stack, any other cards that are
+above it (partly covering it, because they were moved onto it earlier) must
+be moved along with it.
+
+<LI>When all shown cards are removed from a stack, the topmost hidden
+card is turned over so that it becomes a shown card.  If there are no hidden
+cards in that stack, the stack becomes empty.  (At the beginning of the
+game, there are no empty stacks.)
+
+<LI>Any king that is the top card of the pile, or a shown card in any
+stack, may be moved onto an empty stack.
+
+<LI>The game is won if all cards are moved to the top.  The game is
+lost if there are no legal moves and not all cards are moved to the top.
+</OL>
+
+<P>
+I've expressed these rules in more formal language than would usually be
+used.  Card players have shorthand ways of speaking, like &quot;play up in the
+same suit at the top&quot; or &quot;play down in the opposite color on the stacks.&quot;
+I wanted to be very precise in stating the rules because each part of a rule
+must be reflected in the computer program.  Even so, I've left out some
+details.  For example, my list of rules talks about concepts like &quot;suit&quot; and
+&quot;rank&quot; without defining them.  I haven't specified the rank order, namely
+ace-low.  (That is, ace comes before two, not after king.)  What other
+details, if any, have I forgotten?
+
+<H2>Running the Program</H2>
+
+<P>
+To use the program, invoke the command <CODE>solitaire</CODE> with no inputs.
+(Being as I am a lazy typist, I've also defined an abbreviation <CODE>s</CODE>
+for this command.)  The program prints an initial screenful of instructions,
+and then repeatedly deals solitaire hands until you give the exit command.
+Here are the instructions:
+
+<PRE>
+Welcome to solitaire
+
+Here are the commands you can type:
+    <U>+ =</U>  Deal three cards onto pile
+    <U>P</U>    Play top card from pile
+    <U>R</U>    Redisplay the board
+    <U>?</U>    Retype these instructions
+    <U>card</U> Play that card
+    <U>M</U>    Move same card again
+    <U>W</U>    Play up as much as possible (Win)
+    <U>G</U>    Give up (start a new game)
+    <U>X</U>    Exit to Logo
+
+A card consists of a rank:
+   <U>A 2 3 4 5 6 7 8 9 10 J Q K</U>  or <U>T</U> for 10
+followed by a suit:
+   <U>H S D C</U>
+or followed by <U>.</U> to play all possible suits up
+
+If you make a mistake, hit delete or backspace.
+
+To move an entire stack,
+   hit the shifted stack number:
+     <U>! @ # $ % ^ &</U> for stacks
+     1 2 3 4 5 6 7
+</PRE>
+
+<P>
+My goal in designing the &quot;human interface&quot; for this program was that most
+moves should require typing only a single character.  My idea is that the
+most common moves are to play a card from the pile and to move an entire
+stack (that is, the entire shown part of a stack) at once.  There are
+one-character commands for all these.  If you want to move only part of a
+stack, then you must type the name of the card, in the form <CODE>8S</CODE>
+for the eight of spades.
+
+<P>
+As it turns out, in this case what's easy for the user is also easiest for
+the program.  When you refer to a card by its position, it's easy for the
+program to look up which card you mean.  For example, when you say
+<CODE>P</CODE> to play the top card from the pile, it's easy for the program
+to find out what card that is.  But when you specify a card by typing its
+rank and suit, it's harder for the program to know <EM>where</EM> that card
+is.  The program must check the pile and all the stacks to see if your card
+is a member of each one.  So the program runs faster if you use the
+single-keystroke commands.
+
+<P>
+The instructions don't say how to let the program know where you want to
+move the chosen card <EM>onto.</EM> The reason is that in most cases there is
+only one possible place, and the program finds that place itself.  (This is
+the most complicated part of the program.)  Sometimes the chosen card can be
+moved to two different places.  If so, the program picks a stack to move the
+card onto, and if you don't like the program's choice, you can type
+<CODE>M</CODE> to move the same card again until it ends up where you wanted
+it.
+
+<P>
+The program makes no effort to help you with strategic decisions. For
+example, some people like to play cards to the top as soon as possible,
+while other people prefer to keep cards visible on the stacks as long as
+possible.  Such choices are up to you.  Also, the program does not detect
+losing the game.  (Detecting winning is easy--all four tops have kings
+showing--but you haven't lost the game until no further moves are possible,
+which is harder for the program to figure out.)  When you decide the game is
+over, you just type <CODE>G</CODE> to start another game.
+
+<H2>Program Structure</H2>
+
+<P>
+There are about 60 procedures in this program.  These procedures can be
+roughly divided into several purposes:
+
+<UL>
+<LI>initialization
+<LI>reading and interpreting keyboard commands
+<LI>finding the chosen card in the layout
+<LI>finding where the chosen card can move
+<LI>moving the card
+<LI>displaying the card layout
+<LI>miscellaneous user commands
+<LI>data abstraction
+</UL>
+
+<P>
+In the procedures that move cards, the most interesting part of
+the program, a few important variables are used to communicate what moves
+should be made:
+
+<DL>
+<DT><CODE>card</CODE><DD>The card that the user asked to move.
+<DT><CODE>cards</CODE><DD>All the cards that must be moved.  (There may be more
+than one if the requested card is in the middle of a stack.)
+<DT><CODE>where</CODE><DD>The location (before moving) of the chosen card.
+<DT><CODE>onto</CODE><DD>A list of all possible locations to which the card
+can be moved.
+</DL>
+
+<P>
+As we'll see later in more detail, the card locations in <CODE>:where</CODE>
+and <CODE>:onto</CODE> are represented in the form of Logo instructions that
+can be <CODE>run</CODE> to perform the desired move.
+
+<P>
+The overall program structure is two nested loops.  The top-level procedure
+<A HREF="solitaire.html#solitaire"><CODE>solitaire</CODE></A>
+repeatedly invokes <CODE>onegame</CODE>.  As its name
+suggests, each invocation of <A HREF="solitaire.html#onegame"><CODE>onegame</CODE></A>
+plays one solitaire game.
+It shuffles and deals the cards, then repeatedly invokes
+<A HREF="solitaire.html#parsecmd"><CODE>parsecmd</CODE></A>,
+which reads a character from the keyboard and chooses
+the appropriate procedure to carry out the user's command.
+
+<P>
+(Most user commands require only one character.  The situation is a little
+more complicated if the user types the name of a card, such as
+<CODE>10H</CODE> for the ten of hearts, as a command.  <CODE>Parsecmd</CODE>
+actually treats this as three separate commands.  The <CODE>1</CODE> and the
+<CODE>0</CODE> merely record the card's rank in a variable named
+<CODE>digit</CODE>.  When <CODE>parsecmd</CODE> sees the letter
+<CODE>H</CODE>, which selects the card's suit, it invokes
+<CODE>play.by.name</CODE>, which combines the remembered rank with the
+just-typed suit to determine the desired card.)
+
+<H2>Initialization</H2>
+
+<P>
+Both <CODE>solitaire</CODE> and <CODE>onegame</CODE> include initialization
+instructions.  That's because some actions are only required once, such as
+computing the 52 names of cards in the deck, while others are required for
+each game, such as shuffling those cards.
+
+<P>
+Many initialization actions use the Berkeley Logo primitive command
+<CODE>localmake</CODE>, which is an abbreviation for a <CODE>local</CODE>
+command followed by a <CODE>make</CODE> command.  The program uses no global
+variables, although the variables that are local to these top-level
+procedures are available to any procedure within the solitaire program.
+
+<P>
+For most purposes, the most convenient representation of the deck of cards
+is as a list.  That's because what the program most often does with the deck
+is to deal a card from it to somewhere else.  If the deck is represented as
+a list in the variable <CODE>hand</CODE>, then dealing a card is roughly
+equivalent to these instructions:
+
+<PRE>
+do.something.with first :hand
+make "hand butfirst :hand
+</PRE>
+
+<P>
+A list is convenient because <CODE>butfirst</CODE> can be used to remove a
+card from the deck.  It turns out, however, that <EM>shuffling</EM> the deck
+is easiest if it's represented as an array.  That's because the technique
+used to shuffle the deck is to exchange pairs of cards repeatedly.  In the
+first step, we swap the 52nd card of the deck with a randomly chosen card
+(perhaps itself).  The newly chosen last card is now exempt from further
+exchanges.  In the second step, the 51st card of the deck is swapped with
+some card in the remainder of the deck, and so on, for 51 steps.  The
+<CODE>setitem</CODE> primitive makes it easy to change the value of a member
+partway through an array.  If the deck were represented as a list, each
+exchange would require making a (slightly changed) copy of the entire list.
+
+<P>
+The solution to this problem is that both representations, list and array,
+are used in the program.  The <CODE>solitaire</CODE> procedure creates an
+array containing the 52 cards.  For each game, <CODE>onegame</CODE> invokes
+<CODE>shuffle</CODE>, which shuffles the cards in the array and then uses
+the primitive <CODE>arraytolist</CODE> to output a list containing the cards
+in their new order.  That list is used by the other parts of the program.
+
+<PRE>
+to shuffle :len :array
+if :len=0 [output arraytolist :array]
+localmake "choice random :len
+localmake "temp item :choice :array
+setitem :choice :array (item :len-1 :array)
+setitem :len-1 :array :temp
+output shuffle :len-1 :array
+end
+</PRE>
+
+<H2>Data Abstraction</H2>
+
+<P>
+As in most large programs, the solitaire program uses selectors like
+<CODE>first</CODE> and <CODE>last</CODE> for several different purposes in
+different contexts.  To make the program easier to read and maintain, more
+meaningful names are used in each context.
+
+<P>
+For example, cards are represented in the program as words containing the
+rank and the suit, so the word <CODE>8C</CODE> represents the eight of
+clubs.  To find the rank of a card, the program must take the
+<CODE>butlast</CODE> of the word, and to find the suit, it must take the
+<CODE>last</CODE> of the word.  (Why not use <CODE>first</CODE> instead of
+<CODE>butlast</CODE> to get the rank?  Because if the card happens to be a
+ten, there are two digits in its rank.  The suit is always a single
+character.)  Instead of using these primitive selectors directly, I've
+defined synonyms:
+
+<PRE>
+to rank :card
+output butlast :card
+end
+
+to suit :card
+output last :card
+end
+</PRE>
+
+<P>
+When considering playing a card onto a stack, the program does
+not have to know the precise suit of the card, but must know whether it's
+red or black:
+
+<PRE>
+to redp :card
+output memberp (suit :card) :reds
+end
+</PRE>
+
+<P>
+One complication in dealing with cards is that the program wants to use a
+card's rank in two different ways.  For user interaction (reading commands
+and displaying cards on the screen) the ranks should be represented using
+the names for aces and picture cards (<CODE>A</CODE>, <CODE>J</CODE>,
+<CODE>Q</CODE>, and <CODE>K</CODE>).  But for comparison purposes (such as
+deciding whether a card can be played on top of another card), it's more
+convenient to represent all ranks as numbers: 1 for ace, 11 for jack, 12 for
+queen, and 13 for king.  A conversion function <CODE>ranknum</CODE> makes
+this possible:
+
+<PRE>
+to ranknum :rank
+if emptyp :rank [output 0]
+if numberp :rank [output :rank]
+if :rank = "A [output 1]
+if :rank = "J [output 11]
+if :rank = "Q [output 12]
+if :rank = "K [output 13]
+end
+</PRE>
+
+<P>
+(When would a rank be empty?  The <CODE>emptyp</CODE> test is useful in
+the case of deciding whether a card can be played onto an empty &quot;top.&quot;
+In general, the only card that can be played onto a top is the rank after
+the one that's already visible there; for example, if a five is showing,
+then a six can be played.  Treating an empty top as having a rank of zero
+means that the following rank, an ace, is permitted, just as the rules
+require.)
+
+<P>
+In an actual solitaire game, a top is a pile of several cards of the same
+suit, with an ace on the bottom and other cards over it in sequence.  But in
+the program, there is no need to represent any but the topmost card, since
+the lower cards have no further role in the game.  In this program, the tops
+are represented by four variables <CODE>toph</CODE>, <CODE>tops</CODE>,
+<CODE>topd</CODE>, and <CODE>topc</CODE>.  (The last letter indicates the
+suit.)  The value of each variable is the empty word if that top is empty,
+or the rank of the topmost card if not.  Instead of using these variables
+directly, the program uses data abstraction procedures <CODE>top</CODE> and
+<CODE>settop</CODE> to examine and modify the values:
+
+<PRE>
+to top :suit
+output thing word "top :suit
+end
+
+to settop :suit :value
+make (word "top :suit) :value
+end
+</PRE>
+
+<P>
+For example, part of the initialization in <CODE>onegame</CODE> is to
+make all four tops empty:
+
+<PRE>
+foreach :suits [settop ? "]
+</PRE>
+
+<H2>Stacks</H2>
+
+<P>
+A <EM>stack</EM> (also called a <EM>pushdown list</EM>) is a data
+structure that is used to remember things and recall them later.  A stack
+uses the rule &quot;Last In, First Out.&quot; That is, when you take something out
+of a stack, the one you get is the one you put in most recently.  The name
+&quot;stack&quot; is based on the metaphor of the spring-loaded stack of trays you
+find in a self-service cafeteria.  You add a tray to the stack by pushing
+down the trays that were already there, adding the new tray at the top of
+the pile.  When you remove a tray, you take the one at the top of the
+pile--the one most recently added to the stack.
+
+<P>
+A pile of cards in a solitaire game works just like a pile of trays in a
+cafeteria.  You add cards to the top of the pile, and you remove cards from
+the top of the pile.  I've used the name &quot;stack&quot; for some of the piles of
+cards in this project partly because those groups of cards are represented
+in the program by stacks in the technical sense.
+
+<P>
+Berkeley Logo provides primitive procedures <CODE>push</CODE> and
+<CODE>pop</CODE> to implement stacks.  Each stack is represented as a list.
+To push something onto the stack, Logo uses <CODE>fput</CODE>; to pop
+something off the stack, it uses <CODE>first</CODE>.  (Actually, it's
+slightly more complicated, as you'll see in a moment.  But this is
+essentially true.)  For example, each of the seven numbered card stacks in
+the solitaire layout is represented by two lists, one for the shown cards
+and one for the hidden cards.  The lists for the third stack are kept in
+variables named <CODE>shown3</CODE> and <CODE>hidden3</CODE>.  To
+<EM>push</EM> a new card onto the hidden stack without using the
+<CODE>push</CODE> primitive, you could say
+
+<PRE>
+make "hidden3 fput :card :hidden3
+</PRE>
+
+<P>
+To <EM>pop</EM> a card from that stack, you'd say
+
+<PRE>
+make "card first :hidden3
+make "hidden3 butfirst :hidden3
+</PRE>
+
+<P>
+In this case, the first instruction reads the top of the stack,
+while the second removes that entry from the stack.
+
+<P>
+Berkeley Logo provides <CODE>push</CODE> and <CODE>pop</CODE> as a data
+abstraction mechanism.  <CODE>Push</CODE> is a command that takes two
+inputs.  The first input is a word, the <EM>name</EM> of a stack.  The
+second input is any Logo datum.  <CODE>Pop</CODE> is an operation with one
+input, the name of a stack.  Its output is the first datum on the stack.  It
+also has the effect of removing that datum from the stack.  Instead of the
+instructions above, you can say
+
+<PRE>
+push "hidden3 :card
+make "card pop "hidden3
+</PRE>
+
+<P>
+If Berkeley Logo didn't already provide these procedures, it would be easy
+to write them:
+
+<PRE>
+to push :stack :thing
+make :stack fput :thing (thing :stack)
+end
+
+to pop :stack
+local "result
+make "result first thing :stack
+make :stack butfirst thing :stack
+output :result
+end
+</PRE>
+
+<P>
+Within the definition of <CODE>push</CODE>, the expression
+<CODE>:stack</CODE> represents the name of the stack, while the expression
+<CODE>thing :stack</CODE> represents the stack itself.  The
+<CODE>make</CODE> instruction is an example of indirect assignment; it does
+not give a new value to the variable <CODE>stack</CODE> but rather to the
+variable whose name is contained in <CODE>stack</CODE>.
+
+<P>
+<CODE>Pop</CODE> is an unusual Logo procedure in that it's an operation that
+also has an effect.  Most operations don't have effects.  They compute
+some value, but they don't make any permanent change in the state of the
+computer.  Another way of looking at this is to say that for most
+operations, if you apply the same operation to the same inputs repeatedly,
+you'll get the same result every time.
+
+<PRE>
+? <U>make "cards [AH 5C 10S]</U>
+? <U>print first :cards</U>
+AH
+? <U>print first :cards</U>
+AH
+? <U>print first :cards</U>
+AH
+</PRE>
+
+<P>
+But if you apply <CODE>pop</CODE> to the same input repeatedly, you'll
+get a different output each time.
+
+<PRE>
+? <U>print pop "cards</U>
+AH
+? <U>print pop "cards</U>
+5C
+? <U>print pop "cards</U>
+10S
+</PRE>
+
+<P>
+The combination of output and effect in <CODE>pop</CODE> is a powerful
+technique, but a potentially confusing one.  It's important for anyone who
+tries to read this program to be aware that <CODE>pop</CODE> has an effect.
+Fortunately, the concept of a stack is a standard, well-known convention in
+computer science, and the names <CODE>push</CODE> and <CODE>pop</CODE> are
+the traditional ones for this purpose, so <CODE>pop</CODE> is somewhat
+self-documenting.
+
+<P>
+Before a stack can be used, it must be initialized.  Generally a stack
+starts out with no data in it.  That is, it's initially an empty list.  This
+initialization could be done with an explicit <CODE>make</CODE> instruction,
+but instead I invented a procedure for the purpose:
+
+<PRE>
+to setempty :stack
+make :stack []
+end
+</PRE>
+
+<P>
+I think this makes the program slightly more elegant.
+
+<P>
+It is an error to try to pop more items from a stack than you've pushed onto
+it.  If you try to do this, you'll get an error message something like
+
+<PRE>
+First doesn't like [] as input
+</PRE>
+
+<P>
+Often the logic of a program ensures automatically that you never
+try to overpop a stack.  But in the solitaire program I sometimes have to
+check for this possibility explicitly, with an instruction like
+
+<PRE>
+if not emptyp :hidden3 [make "card pop "hidden3]
+</PRE>
+
+<P>
+I've been using the name <CODE>hidden3</CODE> as an example in this
+discussion, typing <CODE>"hidden3</CODE> when the name of the stack was
+needed or <CODE>:hidden3</CODE> when its value was needed.  In fact, such
+names do not appear explicitly in the program.  There are no instructions
+that are directed exclusively to the third stack.  Instead, stack
+instructions are applied either to all seven stacks or to a stack chosen by
+the user through keyboard commands.  The name of a stack must be
+<EM>computed</EM> using an expression like
+
+<PRE>
+word "hidden :num
+</PRE>
+
+<P>
+The contents of the stack would be examined by applying <CODE>thing</CODE>
+to that expression.  To make the program cleaner I created procedures to
+generate these variable names.
+
+<PRE>
+to shown :num
+output word "shown :num
+end
+
+to hidden :num
+output word "hidden :num
+end
+</PRE>
+
+<P>
+Remember that these operations output the <EM>name</EM> of a stack
+variable, not the contents of a stack.  So, for example, you can use them in
+instructions like these:
+
+<PRE>
+push (shown 5) :card
+make "card pop shown 5
+setempty shown 5
+</PRE>
+
+<P>
+There are only a few places in the program where a procedure needs to refer
+to the entire contents of a stack, rather than just pushing or popping a
+single datum at a time.  (One such place, for example, is
+<CODE>remshown</CODE>, which has the job of removing perhaps several cards
+from a stack.)  In those places, there is an explicit use of
+<CODE>thing</CODE> to examine the contents of a stack selected by
+<CODE>shown</CODE> or <CODE>hidden</CODE>.  An expression that occurred
+often in the program was
+
+<PRE>
+emptyp thing shown :num
+</PRE>
+
+<P>
+to see if a stack is empty; I cleaned up these expressions
+somewhat by inventing a special procedure for this test.
+
+<PRE>
+to stackemptyp :name
+output emptyp thing :name
+end
+</PRE>
+
+<P>
+This is used in an expression like
+
+<PRE>
+stackemptyp shown :num
+</PRE>
+
+<P>
+Note that when a stack <EM>is</EM> mentioned explicitly by name in the
+program, like <CODE>:hand</CODE> or <CODE>:pile</CODE>, it is tested for
+emptiness with the ordinary <CODE>emptyp</CODE>.  In this case the colon
+abbreviates the invocation of <CODE>thing</CODE>; for the <CODE>shown</CODE>
+or <CODE>hidden</CODE> names, <CODE>stackemptyp</CODE> abbreviates the
+invocation of <CODE>thing</CODE>.
+
+<P>
+One small detail that's easy to miss is that in a non-computer game of
+solitaire, when a hand is completely dealt out, you pick up the pile from
+the table and <EM>turn it over</EM> to form a new hand.  What was the top
+card of the pile becomes the bottom card of the hand.  The program achieves
+the same effect while dealing cards:
+
+<PRE>
+to deal 
+if emptyp :hand [make "hand <U>reverse</U> :pile setempty "pile]
+if emptyp :hand [output []]
+output pop "hand
+end
+</PRE>
+
+<P>
+The Berkeley Logo primitive operation <CODE>reverse</CODE> is used
+to reverse the order of the cards as they are moved from the pile to
+the hand.
+
+<H2>Program as Data</H2>
+
+<P>
+In order for the program to move a card, it must first make sure that the
+requested move is legal.  The first step is to find the card's current
+position.  (That's easy if the move is requested by position, using the
+<CODE>P</CODE> command to play the card at the top of the pile, or a shifted
+stack number to move the entire shown stack; it's a little harder if the
+card is requested by its rank and suit.  Even then, in order to be playable
+the card must be either on top of the pile or somewhere in a shown stack.)
+The next step is to look for another position into which the card can be
+moved; the only possibilities are a stack or a top.  Only after both old and
+new positions have been verified can the program actually modify its data
+structures (and the screen display) to move the card.
+
+<P>
+When you type a card-moving command, <CODE>parsecmd</CODE> invokes one of
+three procedures: <CODE>playpile</CODE> for the <CODE>P</CODE> command,
+<CODE>playstack</CODE> for one of the shifted stack numbers (such as
+<CODE>#</CODE> for stack 3), or <CODE>play.by.name</CODE> for a rank and
+suit (such as <CODE>7D</CODE>).  The first two of these must figure out
+which card is desired, and ensure that there is in fact a card in the
+requested position; <CODE>play.by.name</CODE> has the opposite job, since it
+already knows the card and must determine that it's in a playable position.
+But in either case, these procedures do not actually move the card.  They
+ensure that the variable <CODE>card</CODE> has the desired card as its
+value, and that the variable <CODE>where</CODE> has as its value a
+representation of the card's current position.  Then they call
+<CODE>playcard</CODE>, whose job is to ensure that there is a valid
+destination for the card, and if so, to move it:
+
+<PRE>
+to playcard
+setempty "onto
+if not coveredp [checktop]
+if and not :upping ~
+       or (emptyp :onto) (not upsafep rank :card) ~
+   [checkonto]
+if emptyp :onto [bell]
+run :where
+run first :onto
+end
+</PRE>
+
+<P>
+Subprocedures <CODE>checktop</CODE> and <CODE>checkonto</CODE> determine
+whether the requested card can be moved to the top or to a stack.  (Each of
+these is called only if certain conditions are met.  For
+<CODE>checktop</CODE>, the condition is that the desired card must not be in
+the middle of a shown stack; it must be either the bottommost card of a
+shown stack or visible on the pile.  The condition for calling
+<CODE>checkonto</CODE> is more complicated.  If the user's command was
+<CODE>.</CODE> or <CODE>W</CODE>, then cards are played only into the top,
+so there is no need to check the stacks.  In other cases, to make the game
+move more quickly, the program will always move the card to the top if it is
+both possible and <EM>safe</EM> to do so.  Such a move is considered safe if
+every card whose rank is less than that of the requested card by two or more
+is already in the top, because then any card of rank one less than the
+chosen card can be played to the top, and so the chosen card is not needed
+in the stacks.)
+
+<P>
+Just as <CODE>:where</CODE> identifies the card's current position,
+<CODE>:onto</CODE> will hold all of the possible destination positions.
+<CODE>Checktop</CODE> and <CODE>checkonto</CODE> add possible positions to
+this variable, which is a list.  If <CODE>:onto</CODE> is empty after
+<CODE>checktop</CODE> and <CODE>checkonto</CODE> have been invoked, then
+there is no legal way to move this card.
+
+<P>
+I want to focus attention on the two <CODE>run</CODE> instructions.  They
+are the ones that actually do the work of moving a card from one place to
+another; the first removes the card from its original position and the
+second inserts the card at its new position.
+
+<P>
+The value of the variable <CODE>where</CODE> is not merely a number or word
+indicating where the card is to be found, but a Logo instruction that
+invokes the procedure needed to remove the card.  For example, suppose you
+type the letter <CODE>P</CODE> to play a card from the top of the pile.
+<CODE>Parsecmd</CODE> then invokes <CODE>playpile</CODE>:
+
+<PRE>
+to playpile 
+if emptyp :pile [bell]
+if not emptyp :digit [bell]
+make "card first :pile
+make "where [rempile]
+carddis :card
+playcard
+end
+</PRE>
+
+<P>
+The first two instructions check for errors.  The first checks for trying to
+play a card from the pile when there are no cards in the pile.  The second
+checks for the <EM>syntax</EM> error of typing a rank and then typing
+<CODE>P</CODE> instead of a suit.  Having cleared those hurdles, the next
+instruction finds the actual card (rank and suit) you want to play from the
+pile.  The interesting part for the present discussion is that the variable
+<CODE>where</CODE> is given as its value the list
+
+<PRE>
+[rempile]
+</PRE>
+
+<P>
+<CODE>Rempile</CODE> is the name of a procedure with no inputs, so this
+list contains a valid Logo instruction.  The corresponding instruction in
+<CODE>playstack1</CODE> is
+
+<PRE>
+make "where sentence "remshown :num
+</PRE>
+
+<P>
+which gives <CODE>where</CODE> a value like
+
+<PRE>
+[remshown 4]
+</PRE>
+
+<P>
+if you've selected stack four.  In either case, <CODE>playcard</CODE> can
+later remove the card from its original location just by <CODE>run</CODE>ning
+<CODE>:where</CODE>.  At the same time, this Logo <EM>instruction</EM> can
+be examined as a <EM>datum.</EM> For example, <CODE>coveredp</CODE> contains
+the instruction
+
+<PRE>
+if equalp :where [rempile] [output "false]
+</PRE>
+
+<P>
+Most programming languages don't have a facility like Logo's
+<CODE>run</CODE> command.  In those languages, the variable
+<CODE>where</CODE> would have to contain, for example, a number indicating
+where the card is to be found.  <CODE>Playcard</CODE> would then use this
+number to choose a course of action with a series of instructions like this:
+
+<PRE>
+if :where = 0 [rempile]
+if :where = 1 [remshown 1]
+if :where = 2 [remshown 2]
+</PRE>
+
+<P>
+... and so on.
+
+<P>
+The situation concerning the variable <CODE>onto</CODE> is similar, except
+that there is a slight complication because there may be more than one legal
+destination for a card.  (By contrast, every card starts out in exactly one
+place!)  Therefore, <CODE>checktop</CODE> and <CODE>checkonto</CODE> set up
+<CODE>:onto</CODE> as a <EM>list</EM> of Logo instructions, one for every
+possible destination.  If a card could be played onto stack 3, stack 6, or
+the top, <CODE>:onto</CODE> will be
+
+<PRE>
+[[playonto 3] [playonto 6] [playtop]]
+</PRE>
+
+<P>
+<CODE>Playcard</CODE> runs the first member of this list.  Why bother saving
+the other members?  After a successful move, the user can type
+<CODE>M</CODE> to move the same card to a different destination.  Here's how
+that is done:
+
+<PRE>
+to again
+if not emptyp :digit [bell]
+if emptyp :onto [bell]
+make "where list "remshown last pop "onto
+if emptyp :onto [bell]
+carddis :card
+run :where
+run first :onto
+end
+</PRE>
+
+<P>
+This procedure uses the values that are still left over in
+<CODE>:card</CODE> and <CODE>:onto</CODE> from the last move.  The first
+member of <CODE>:onto</CODE> is the instruction that moved the card onto a
+stack.  (If the card was moved to the top, it's because there were no
+alternatives in <CODE>:onto</CODE>, because <CODE>playtop</CODE> is always
+the last choice in the list.)  That stack is now the card's position of
+origin!  If <CODE>:onto</CODE> was
+
+<PRE>
+[[playonto 3] [playonto 6] [playtop]]
+</PRE>
+
+<P>
+then the instruction
+
+<PRE>
+make "where list "remshown last pop "onto
+</PRE>
+
+<P>
+will give <CODE>where</CODE> the value
+
+<PRE>
+[remshown 3]
+</PRE>
+
+<P>
+and, because <CODE>pop</CODE> removes the first datum from the stack,
+leaves <CODE>onto</CODE> with the value
+
+<PRE>
+[[playonto 6] [playtop]]
+</PRE>
+
+<P>
+The chosen card will be moved from stack three to stack six.  If the user
+types <CODE>M</CODE> again, then the card will be moved from stack six to
+the top.
+
+<H2>Multiple Branching</H2>
+
+<P>
+Consider the procedure that interprets what you type at the keyboard while
+running the solitaire program:
+
+<PRE>
+to parsecmd                ;; abbreviated version
+local "char
+make "char uppercase readchar
+if equalp :char "T [parsedigit 1 parsezero stop]
+if memberp :char [1 2 3 4 5 6 7 8 9 A J Q K] [parsedigit :char stop]
+if equalp :char "0 [parsezero stop]
+if memberp :char :suits [play.by.name :char stop]
+if equalp :char ". [allup stop]
+if equalp :char "W [wingame stop]
+if equalp :char "M [again stop]
+; several more possibilities omitted...
+bell
+end
+</PRE>
+
+<P>
+This sort of thing is common in Logo programming: a string of
+<CODE>if</CODE>s in which each conditional instruction list ends with
+<CODE>stop</CODE> because the choices are mutually exclusive.
+
+<P>
+Some people find this use of <CODE>stop</CODE> offensive because it doesn't
+make it graphically apparent when reading the program that the choices are
+exclusive.  The form of the program makes it seem that each decision (that
+is, each <CODE>if</CODE> instruction) is independent of the others.
+
+<P>
+It would be possible to meet this objection by using <CODE>ifelse</CODE>,
+putting each new test in the false part of the previous one:
+
+<PRE>
+to parsecmd
+local "char
+make "char uppercase readchar
+ifelse equalp :char "T ~
+       [parsedigit 1 parsezero]
+       [ifelse memberp :char [1 2 3 4 5 6 7 8 9 A J Q K]
+               [parsedigit :char]
+               [ifelse equalp :char "0 [parsezero]
+                       ; ...
+                                       bell]]
+end
+</PRE>
+
+<P>
+It's not clear that this is an improvement, although the use of
+<CODE>ifelse</CODE> makes more sense as an alternative to
+<CODE>stop</CODE> when only a single decision is involved.
+
+<P>
+Some programming languages provide a special representation for such a
+<EM>multiple branching</EM> decision.  A Logo equivalent might look like this:
+
+<PRE>
+to parsecmd
+local "char
+make "char uppercase readchar
+branch [
+  [[equalp :char "T] [parsedigit 1 parsezero]]
+  [[memberp :char [1 2 3 4 5 6 7 8 9 A J Q K]] [parsedigit :char]]
+  [[equalp :char "0] [parsezero]]
+  [[memberp :char :suits] [play.by.name :char]]
+  [[equalp :char ".] [allup]]
+  [[equalp :char "W] [wingame]]
+  [[equalp :char "M] [again]]
+  ; several more possibilities omitted...
+  [["true] [bell]] ]
+end
+</PRE>
+
+<P>
+<CODE>Branch</CODE> is a hypothetical command that takes a single input, a
+list of lists.  Each member of the input is a list with two members.  The
+first member must be a Logo predicate expression; the second must be a Logo
+instruction.  <CODE>Branch</CODE> evaluates the first half of each pair.  If
+the value is <CODE>true</CODE>, <CODE>branch</CODE> then carries out the
+instruction in the second half of that pair, and then stops without
+evaluating the remaining pairs.  If the value is <CODE>false</CODE>,
+<CODE>branch</CODE> goes on to the next pair.  <CODE>Branch</CODE> is not a
+Logo primitive, but it can easily be written in Logo:
+
+<PRE>
+to branch :conditions
+if emptyp :conditions [stop]
+if (run first first :conditions) [run last first :conditions stop]
+branch butfirst :conditions
+end
+</PRE>
+
+<P>
+Inventing control structures like this is the sort of thing Logo
+makes easy and other languages make impossible.
+
+<P>
+The trouble with this particular control structure in Logo is that the input
+to <CODE>branch</CODE> is typically a very long list, extending over several
+lines on the screen.  Traditional Logo dialects have not done a good job of
+presenting such long lists with clear formatting.  More recent versions can,
+however, handle instructions like that multi-line <CODE>branch</CODE>
+invocation.
+
+<H2>Further Explorations</H2>
+
+<P>
+I keep thinking of new features I'd like in this program.  I think the most
+important is an Undo command, which would undo the effect of the previous
+user command.  This should be pretty easy to implement; every time the
+program changes the value of a variable that represents card positions, it
+should make a list of the variable's name and its old value, and push that
+onto a changes list.  For example, here's the procedure that removes a card
+from the pile:
+
+<PRE>
+to rempile 
+make "cards (list (pop "pile))
+dispile
+end
+</PRE>
+
+<P>
+And here's how I'd change it for the undo command:
+
+<PRE>
+to rempile 
+<U>push "undo.list (list "pile :pile)</U>
+make "cards (list (pop "pile))
+dispile
+end
+</PRE>
+
+<P>
+The undo command itself would go through the list, restoring the values of
+all the variables it finds, and then call <CODE>redisplay</CODE> to make the
+display match the program's state.  <CODE>Playcard</CODE> would
+<CODE>setempty</CODE> the undo list before moving any cards.
+
+<P>
+Another possibility is to improve the display.  One person who tried this
+program commented that it's not enough to indicate whether the hidden part
+of a stack is empty or nonempty; he wanted to see exactly how many cards
+are present.  Novice users might be helped by keeping an abbreviated command
+list in the empty space toward the right side of the screen.
+
+<P>
+A more ambitious direction you could pursue is to write a similar program
+for a different solitaire game.  There are books of card games that include
+several variations on this kind of solitaire as well as versions of
+solitaire that are totally different in their rules and layouts.
+
+<P>
+Another direction would be to try to have the program offer strategic
+suggestions, or even play the game entirely by itself.  As with any strategy
+game, you would have to choose between determining the strategy for the
+program in advance and letting it learn from its experience and modify its
+strategy.  Which is better, playing cards to the top quickly or saving them
+in the stacks as long as possible?  Which is better, playing a card from the
+pile or playing a card of the same rank and color from the stacks?  You
+could research these questions by writing versions of the program with
+different strategies and collecting statistics on their performance.
+
+<P>
+Another possibility would be to abandon solitaire and program the computer
+to play one side of a two-player game with you.  Blackjack is a simple
+example; poker is a harder one.
+
+<P>
+A different kind of exploration would be to try to speed up the running of
+this program.  Earlier I suggested the possibility that the program might
+benefit from remembering explicitly the position of each card.  You could
+find out whether or not that would really help.  (It would speed up the
+searching process for a card, but it would also slow down the moving of
+cards because the program would have to remember the new location instead of
+the old one.  My guess is that the speedup would be substantial and the
+slowdown minimal, but I'm not sure.)  What other bottlenecks can you find in
+this program, and how can you improve them?
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch5/v2ch5.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<P>
+If you trace the progress of a user command, let's say <CODE>P</CODE> to
+play from the pile, from <CODE>parsecmd</CODE> through <CODE>playpile</CODE>
+and <CODE>playcard</CODE> to <CODE>rempile</CODE> and then either
+<CODE>playtop</CODE> or <CODE>playonto</CODE>, you'll understand most of the
+program.  There are a few slightly complicated details in moving several
+cards from one stack to another (<CODE>remshown</CODE> and
+<CODE>playonto</CODE>) but nothing really hard to understand.
+
+<PRE>
+to <A NAME="solitaire">solitaire</A>
+print [Welcome to solitaire]
+instruct
+localmake "allranks [A 2 3 4 5 6 7 8 9 10 J Q K]
+localmake "numranks map "ranknum :allranks
+localmake "suits [H S D C]
+localmake "reds [H D]
+localmake "deckarray (listtoarray (crossmap "word :allranks :suits) 0)
+localmake "upping "false
+catch "exit [forever [onegame cleartext]]
+cleartext
+end
+
+to s
+solitaire
+end
+
+to <A NAME="onegame">onegame</A>
+print [Shuffling, please wait...]
+local [card cards digit pile where]
+localmake "onto []
+local map [word "top ?] :suits
+local cascade 9 [(sentence (word "shown #) (word "hidden #) ?)] []
+localmake "ranks :allranks
+localmake "numstacks 7
+local map [word "num ?] :numranks
+foreach :numranks [make word "num ? 4]
+localmake "hand shuffle 52 :deckarray
+setempty "pile
+initstacks
+foreach :suits [settop ? "]
+redisplay
+catch "endgame [forever [catch "bell [parsecmd]]]
+end
+
+;; Initialization
+
+to instruct 
+print [] print [Here are the commands you can type:]
+type "|    | type (sentence standout "+ standout "=)
+type "|  | print [Deal three cards onto pile]
+instruct1 "P [Play top card from pile]
+instruct1 "R [Redisplay the board]
+instruct1 "? [Retype these instructions]
+instruct1 "card [Play that card]
+instruct1 "M [Move same card again]
+instruct1 "W [Play up as much as possible (Win)]
+instruct1 "G [Give up (start a new game)]
+instruct1 "X [Exit to Logo]
+print [A card consists of a rank:]
+type "|   | print (sentence standout [A 2 3 4 5 6 7 8 9 10 J Q K]
+                            "or standout "T [for 10])
+print [followed by a suit:]
+type "|   | print standout [H S D C]
+print (sentence [or followed by] standout ".
+                [to play all possible suits up])
+print [] print [If you make a mistake, hit delete or backspace.]
+print [] print [To move an entire stack,]
+type "|   | print [hit the shifted stack number:]
+type "|     | print (sentence standout [! @ # $ % ^ &] [for stacks])
+type "|     | print [1 2 3 4 5 6 7]
+print []
+end
+
+to instruct1 :key :meaning
+type "|    |
+type standout :key
+repeat 5-count :key [type "| |]
+print :meaning
+end
+
+to shuffle :len :array
+if :len=0 [output arraytolist :array]
+localmake "choice random :len
+localmake "temp item :choice :array
+setitem :choice :array (item :len-1 :array)
+setitem :len-1 :array :temp
+output shuffle :len-1 :array
+end
+
+to initstacks
+for [num 1 7] [inithidden :num
+               turnup :num]
+end
+
+to inithidden :num
+localmake "name hidden :num
+setempty :name
+repeat :num [push :name deal]
+end
+
+;; Reading and interpreting user commands
+
+to <A NAME="parsecmd">parsecmd</A>
+if emptyp :digit [setcursor [1 22] type "|      | setcursor [1 22]]
+local "char
+make "char uppercase readchar
+if equalp :char "T [parsedigit 1 parsezero stop]
+if memberp :char [1 2 3 4 5 6 7 8 9 A J Q K] [parsedigit :char stop]
+if equalp :char "0 [parsezero stop]
+if memberp :char :suits [play.by.name :char stop]
+if equalp :char ". [allup stop]
+if equalp :char "W [wingame stop]
+if equalp :char "M [again stop]
+if memberp :char [+ =] [hand3 stop]
+if equalp :char "R [redisplay stop]
+if equalp :char "? [helper stop]
+if equalp :char "P [playpile stop]
+if and equalp :char "|(| not emptyp :digit [cheat stop]
+if and equalp :char "|)| not emptyp :digit [newstack stop]
+if memberp :char [! @ # $ % ^ & * ( )] ~
+   [playstack :char [! @ # $ % ^ & * ( )] stop]
+if memberp :char (list "| | char 8 char 127) [rubout stop]
+if equalp :char "G [throw "endgame]
+if equalp :char "X [throw "exit]
+bell
+end
+
+to parsedigit :char
+if not emptyp :digit [bell]
+make "digit :char
+type :digit
+end
+
+to parsezero 
+if not equalp :digit 1 [bell]
+make "digit 10
+type 0
+end
+
+to rubout 
+setcursor [1 22]
+type "|    |
+setcursor [1 22]
+setempty "digit
+end
+
+to bell
+if not :upping [type char 7]
+setempty "digit
+throw "bell
+end
+
+;; Deal three cards from the hand
+
+to hand3 
+if not emptyp :digit [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+repeat 2 [if not emptyp :hand [push "pile deal]]
+dispile dishand
+end
+
+to deal 
+if emptyp :hand [make "hand reverse :pile setempty "pile]
+if emptyp :hand [output []]
+output pop "hand
+end
+
+;; Select card to play by position (pile or stack) or by name
+
+to playpile 
+if emptyp :pile [bell]
+if not emptyp :digit [bell]
+make "card first :pile
+make "where [rempile]
+carddis :card
+playcard
+end
+
+to playstack :which :list
+if not emptyp :digit [bell]
+foreach :list [if equalp :which ? [playstack1 # stop]]
+end
+
+to playstack1 :num
+if greaterp :num :numstacks [bell]
+if stackemptyp shown :num [bell]
+make "card last thing shown :num
+make "where sentence "remshown :num
+carddis :card
+playcard
+end
+
+to play.by.name :char
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+type :char
+wait 0
+make "card word :digit :char
+setempty "digit
+findcard
+if not emptyp :where [playcard]
+end
+
+to findcard 
+if findpile [stop]
+make "where findshown
+if emptyp :where [bell]
+end
+
+to findpile 
+if emptyp :pile [output "false]
+if equalp :card first :pile [make "where [rempile] output "true]
+output "false
+end
+
+to findshown
+for [num 1 :numstacks] ~
+    [if memberp :card thing shown :num [output sentence "remshown :num]]
+output []
+end
+
+;; Figure out all possible places to play card, then pick one
+
+to playcard
+setempty "onto
+if not coveredp [checktop]
+if and not :upping ~
+       or (emptyp :onto) (not upsafep rank :card) ~
+   [checkonto]
+if emptyp :onto [bell]
+run :where
+run first :onto
+end
+
+to coveredp 
+if equalp :where [rempile] [output "false]
+output not equalp :card first thing shown last :where
+end
+
+to upsafep :rank
+if memberp :rank [A 2] [output "true]
+output equalp 0 thing word "num ((ranknum :rank)-2)
+end
+
+to checktop 
+if (ranknum rank :card) = 1 + (ranknum top suit :card) ~
+   [push "onto (list "playtop word "" suit :card)]
+end
+
+to checkonto
+for [num :numstacks 1] ~
+    [ifelse stackemptyp shown :num
+            [checkempty :num]
+            [checkfull :num thing shown :num]]
+end
+
+to checkempty :num
+if equalp rank :card "k [push "onto (list "playonto :num)]
+end
+
+to checkfull :num :stack
+if equalp (redp :card) (redp first :stack) [stop]
+if ((ranknum rank first :stack) = 1 + (ranknum rank :card)) ~
+   [push "onto (list "playonto :num)]
+end
+
+;; Play card, step 1: remove from old position
+
+to rempile 
+make "cards (list (pop "pile))
+dispile
+end
+
+to remshown :num
+setempty "cards
+remshown1 :num (count thing shown :num)
+if stackemptyp shown :num [turnup :num disstack :num]
+end
+
+to remshown1 :num :length
+do.until [push "cards (pop shown :num)] ~
+         [equalp :card first :cards]
+for [i 1 [count :cards]] ~
+    [setcursor list (5*:num - 4) (5+:length-:i) type "|   |]
+end
+
+to turnup :num
+setempty shown :num
+if stackemptyp hidden :num [stop]
+push (shown :num) (pop hidden :num)
+end
+
+;; Play card, step 2: put in new position 
+
+to playtop :suit
+localmake "var word "num ranknum rank :card
+settop :suit rank :card
+distop :suit
+make :var (thing :var)-1
+if (thing :var)=0 [make "ranks butfirst :ranks]
+end
+
+to playonto :num
+localmake "row 4+count thing shown :num
+localmake "col 5*:num-4
+for [i 1 [count :cards]] ~
+    [localmake "card pop "cards
+     push (shown :num) :card
+     setcursor list :col :row+:i
+     carddis :card]
+end
+
+;; Update screen display
+
+to redisplay 
+cleartext
+for [num 1 :numstacks] [disstack :num]
+foreach :suits "distop
+dispile
+dishand
+setcursor [1 22]
+setempty "digit
+end
+
+to disstack :num
+setcursor list (-3 + 5 * :num) 4
+type ifelse stackemptyp hidden :num ["| |] ["-]
+if stackemptyp shown :num [setcursor list (-4 + 5 * :num) 5
+                           type "|   | stop]
+localmake "stack (thing shown :num)
+localmake "col 5*:num-4
+for [i [count :stack] 1] ~
+    [setcursor list :col :i+4
+     carddis pop "stack]
+end
+
+to distop :suit
+if emptyp top :suit [stop]
+if equalp :suit "H [distop1 4 stop]
+if equalp :suit "S [distop1 11 stop]
+if equalp :suit "D [distop1 18 stop]
+distop1 25
+end
+
+to distop1 :col
+setcursor list :col 2
+carddis word (top :suit) :suit
+end
+
+to dispile 
+setcursor [32 23]
+ifelse emptyp :pile [type "|   |] [carddis first :pile]
+end
+
+to dishand 
+setcursor [27 23]
+type count :hand
+type "| |
+end
+
+to carddis :card
+ifelse memberp suit :card :reds [redtype :card] [blacktype :card]
+type "| |
+end
+
+to redtype :word
+type :word
+end
+
+to blacktype :word
+type standout :word
+end
+
+
+;; Miscellaneous user commands
+
+to again
+if not emptyp :digit [bell]
+if emptyp :onto [bell]
+make "where list "remshown last pop "onto
+if emptyp :onto [bell]
+carddis :card
+run :where
+run first :onto
+end
+
+to allup
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+localmake "upping "true
+type ". wait 0
+foreach map [word :digit ?] [H S D C] ~
+        [catch "bell [make "card ?
+                      findcard
+                      if not emptyp :where [playcard]]]
+setempty "digit
+end
+
+to helper
+cleartext 
+instruct
+print standout [type any key to continue]
+ignore rc
+redisplay
+end
+
+to wingame
+type "W
+localmake "cursor cursor
+foreach :ranks [if not upsafep ? [stop]
+                make "digit ? ~
+                allup ~
+                setempty "digit ~
+                setcursor :cursor]
+if equalp (map "top [H S D C]) [K K K K] ~
+   [ct print [you win!] wait 120 throw "endgame]
+end
+
+to newstack
+localmake "num :numstacks+1
+setcursor [1 22] type "|   |
+if not equalp :digit 9 [bell]
+setempty hidden :num
+setempty shown :num
+make "numstacks :num
+setempty "digit
+end
+
+to cheat 
+setcursor [1 22] type "|   |
+if not equalp :digit 8 [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+dispile
+dishand
+setempty "digit
+end
+
+;; Data abstraction (ranks)
+
+to rank :card
+output butlast :card
+end
+
+to ranknum :rank
+if emptyp :rank [output 0]
+if numberp :rank [output :rank]
+if :rank = "A [output 1]
+if :rank = "J [output 11]
+if :rank = "Q [output 12]
+if :rank = "K [output 13]
+end
+
+;; Data abstraction (suits)
+
+to suit :card
+output last :card
+end
+
+to redp :card
+output memberp (suit :card) :reds
+end
+
+;; Data abstraction (tops)
+
+to top :suit
+output thing word "top :suit
+end
+
+to settop :suit :value
+make (word "top :suit) :value
+end
+
+;; Data abstraction (card stacks)
+
+to shown :num
+output word "shown :num
+end
+
+to hidden :num
+output word "hidden :num
+end
+
+;; Data abstraction (pushdown stacks)
+
+to stackemptyp :name
+output emptyp thing :name
+end
+
+to setempty :stack
+make :stack []
+end
+</PRE>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch5/v2ch5.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch4/solitaire.lg b/js/games/nluqo.github.io/~bh/v2ch4/solitaire.lg
new file mode 100644
index 0000000..24211dc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch4/solitaire.lg
@@ -0,0 +1,484 @@
+to solitaire
+print [Welcome to solitaire]
+instruct
+localmake "allranks [A 2 3 4 5 6 7 8 9 10 J Q K]
+localmake "numranks map "ranknum :allranks
+localmake "suits [H S D C]
+localmake "reds [H D]
+localmake "deckarray (listtoarray (crossmap "word :allranks :suits) 0)
+localmake "upping "false
+catch "exit [forever [onegame cleartext]]
+cleartext
+end
+
+to s
+solitaire
+end
+
+to onegame
+print [Shuffling, please wait...]
+local [card cards digit pile where]
+localmake "onto []
+local map [word "top ?] :suits
+local cascade 9 [(sentence (word "shown #) (word "hidden #) ?)] []
+localmake "ranks :allranks
+localmake "numstacks 7
+local map [word "num ?] :numranks
+foreach :numranks [make word "num ? 4]
+localmake "hand shuffle 52 :deckarray
+setempty "pile
+initstacks
+foreach :suits [settop ? "]
+redisplay
+catch "endgame [forever [catch "bell [parsecmd]]]
+end
+
+;; Initialization
+
+to instruct 
+print [] print [Here are the commands you can type:]
+type "|    | type (sentence standout "+ standout "=)
+type "|  | print [Deal three cards onto pile]
+instruct1 "P [Play top card from pile]
+instruct1 "R [Redisplay the board]
+instruct1 "? [Retype these instructions]
+instruct1 "card [Play that card]
+instruct1 "M [Move same card again]
+instruct1 "W [Play up as much as possible (Win)]
+instruct1 "G [Give up (start a new game)]
+instruct1 "X [Exit to Logo]
+print [A card consists of a rank:]
+type "|   | print (sentence standout [A 2 3 4 5 6 7 8 9 10 J Q K]
+                            "or standout "T [for 10])
+print [followed by a suit:]
+type "|   | print standout [H S D C]
+print (sentence [or followed by] standout ".
+                [to play all possible suits up])
+print [] print [If you make a mistake, hit delete or backspace.]
+print [] print [To move an entire stack,]
+type "|   | print [hit the shifted stack number:]
+type "|     | print (sentence standout [! @ # $ % ^ &] [for stacks])
+type "|     | print [1 2 3 4 5 6 7]
+print []
+end
+
+to instruct1 :key :meaning
+type "|    |
+type standout :key
+repeat 5-count :key [type "| |]
+print :meaning
+end
+
+to shuffle :len :array
+if :len=0 [output arraytolist :array]
+localmake "choice random :len
+localmake "temp item :choice :array
+setitem :choice :array (item :len-1 :array)
+setitem :len-1 :array :temp
+output shuffle :len-1 :array
+end
+
+to initstacks
+for [num 1 7] [inithidden :num
+               turnup :num]
+end
+
+to inithidden :num
+localmake "name hidden :num
+setempty :name
+repeat :num [push :name deal]
+end
+
+;; Reading and interpreting user commands
+
+to parsecmd
+if emptyp :digit [setcursor [1 22] type "|      | setcursor [1 22]]
+local "char
+make "char uppercase readchar
+if equalp :char "T [parsedigit 1 parsezero stop]
+if memberp :char [1 2 3 4 5 6 7 8 9 A J Q K] [parsedigit :char stop]
+if equalp :char "0 [parsezero stop]
+if memberp :char :suits [play.by.name :char stop]
+if equalp :char ". [allup stop]
+if equalp :char "W [wingame stop]
+if equalp :char "M [again stop]
+if memberp :char [+ =] [hand3 stop]
+if equalp :char "R [redisplay stop]
+if equalp :char "? [helper stop]
+if equalp :char "P [playpile stop]
+if and equalp :char "|(| not emptyp :digit [cheat stop]
+if and equalp :char "|)| not emptyp :digit [newstack stop]
+if memberp :char [! @ # $ % ^ & * ( )] ~
+   [playstack :char [! @ # $ % ^ & * ( )] stop]
+if memberp :char (list "| | char 8 char 127) [rubout stop]
+if equalp :char "G [throw "endgame]
+if equalp :char "X [throw "exit]
+bell
+end
+
+to parsedigit :char
+if not emptyp :digit [bell]
+make "digit :char
+type :digit
+end
+
+to parsezero 
+if not equalp :digit 1 [bell]
+make "digit 10
+type 0
+end
+
+to rubout 
+setcursor [1 22]
+type "|    |
+setcursor [1 22]
+setempty "digit
+end
+
+to bell
+if not :upping [type char 7]
+setempty "digit
+throw "bell
+end
+
+;; Deal three cards from the hand
+
+to hand3 
+if not emptyp :digit [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+repeat 2 [if not emptyp :hand [push "pile deal]]
+dispile dishand
+end
+
+to deal 
+if emptyp :hand [make "hand reverse :pile setempty "pile]
+if emptyp :hand [output []]
+output pop "hand
+end
+
+;; Select card to play by position (pile or stack) or by name
+
+to playpile 
+if emptyp :pile [bell]
+if not emptyp :digit [bell]
+make "card first :pile
+make "where [rempile]
+carddis :card
+playcard
+end
+
+to playstack :which :list
+if not emptyp :digit [bell]
+foreach :list [if equalp :which ? [playstack1 # stop]]
+end
+
+to playstack1 :num
+if greaterp :num :numstacks [bell]
+if stackemptyp shown :num [bell]
+make "card last thing shown :num
+make "where sentence "remshown :num
+carddis :card
+playcard
+end
+
+to play.by.name :char
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+type :char
+wait 0
+make "card word :digit :char
+setempty "digit
+findcard
+if not emptyp :where [playcard]
+end
+
+to findcard 
+if findpile [stop]
+make "where findshown
+if emptyp :where [bell]
+end
+
+to findpile 
+if emptyp :pile [output "false]
+if equalp :card first :pile [make "where [rempile] output "true]
+output "false
+end
+
+to findshown
+for [num 1 :numstacks] ~
+    [if memberp :card thing shown :num [output sentence "remshown :num]]
+output []
+end
+
+;; Figure out all possible places to play card, then pick one
+
+to playcard
+setempty "onto
+if not coveredp [checktop]
+if and not :upping ~
+       or (emptyp :onto) (not upsafep rank :card) ~
+   [checkonto]
+if emptyp :onto [bell]
+run :where
+run first :onto
+end
+
+to coveredp 
+if equalp :where [rempile] [output "false]
+output not equalp :card first thing shown last :where
+end
+
+to upsafep :rank
+if memberp :rank [A 2] [output "true]
+output equalp 0 thing word "num ((ranknum :rank)-2)
+end
+
+to checktop 
+if (ranknum rank :card) = 1 + (ranknum top suit :card) ~
+   [push "onto (list "playtop word "" suit :card)]
+end
+
+to checkonto
+for [num :numstacks 1] ~
+    [ifelse stackemptyp shown :num
+            [checkempty :num]
+            [checkfull :num thing shown :num]]
+end
+
+to checkempty :num
+if equalp rank :card "k [push "onto (list "playonto :num)]
+end
+
+to checkfull :num :stack
+if equalp (redp :card) (redp first :stack) [stop]
+if ((ranknum rank first :stack) = 1 + (ranknum rank :card)) ~
+   [push "onto (list "playonto :num)]
+end
+
+;; Play card, step 1: remove from old position
+
+to rempile 
+make "cards (list (pop "pile))
+dispile
+end
+
+to remshown :num
+setempty "cards
+remshown1 :num (count thing shown :num)
+if stackemptyp shown :num [turnup :num disstack :num]
+end
+
+to remshown1 :num :length
+do.until [push "cards (pop shown :num)] ~
+         [equalp :card first :cards]
+for [i 1 [count :cards]] ~
+    [setcursor list (5*:num - 4) (5+:length-:i) type "|   |]
+end
+
+to turnup :num
+setempty shown :num
+if stackemptyp hidden :num [stop]
+push (shown :num) (pop hidden :num)
+end
+
+;; Play card, step 2: put in new position 
+
+to playtop :suit
+localmake "var word "num ranknum rank :card
+settop :suit rank :card
+distop :suit
+make :var (thing :var)-1
+if (thing :var)=0 [make "ranks butfirst :ranks]
+end
+
+to playonto :num
+localmake "row 4+count thing shown :num
+localmake "col 5*:num-4
+for [i 1 [count :cards]] ~
+    [localmake "card pop "cards
+     push (shown :num) :card
+     setcursor list :col :row+:i
+     carddis :card]
+end
+
+;; Update screen display
+
+to redisplay 
+cleartext
+for [num 1 :numstacks] [disstack :num]
+foreach :suits "distop
+dispile
+dishand
+setcursor [1 22]
+setempty "digit
+end
+
+to disstack :num
+setcursor list (-3 + 5 * :num) 4
+type ifelse stackemptyp hidden :num ["| |] ["-]
+if stackemptyp shown :num [setcursor list (-4 + 5 * :num) 5
+                           type "|   | stop]
+localmake "stack (thing shown :num)
+localmake "col 5*:num-4
+for [i [count :stack] 1] ~
+    [setcursor list :col :i+4
+     carddis pop "stack]
+end
+
+to distop :suit
+if emptyp top :suit [stop]
+if equalp :suit "H [distop1 4 stop]
+if equalp :suit "S [distop1 11 stop]
+if equalp :suit "D [distop1 18 stop]
+distop1 25
+end
+
+to distop1 :col
+setcursor list :col 2
+carddis word (top :suit) :suit
+end
+
+to dispile 
+setcursor [32 23]
+ifelse emptyp :pile [type "|   |] [carddis first :pile]
+end
+
+to dishand 
+setcursor [27 23]
+type count :hand
+type "| |
+end
+
+to carddis :card
+ifelse memberp suit :card :reds [redtype :card] [blacktype :card]
+type "| |
+end
+
+to redtype :word
+type :word
+end
+
+to blacktype :word
+type standout :word
+end
+
+
+;; Miscellaneous user commands
+
+to again
+if not emptyp :digit [bell]
+if emptyp :onto [bell]
+make "where list "remshown last pop "onto
+if emptyp :onto [bell]
+carddis :card
+run :where
+run first :onto
+end
+
+to helper
+cleartext 
+instruct
+print standout [type any key to continue]
+ignore rc
+redisplay
+end
+
+to allup
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+localmake "upping "true
+type ". wait 0
+foreach map [word :digit ?] [H S D C] ~
+        [catch "bell [make "card ?
+                      findcard
+                      if not emptyp :where [playcard]]]
+setempty "digit
+end
+
+to wingame
+type "W
+localmake "cursor cursor
+foreach :ranks [if not upsafep ? [stop]
+                make "digit ? ~
+                allup ~
+                setempty "digit ~
+                setcursor :cursor]
+if equalp (map "top [H S D C]) [K K K K] ~
+   [ct print [you win!] wait 120 throw "endgame]
+end
+
+to newstack
+localmake "num :numstacks+1
+setcursor [1 22] type "|   |
+if not equalp :digit 9 [bell]
+setempty hidden :num
+setempty shown :num
+make "numstacks :num
+setempty "digit
+end
+
+to cheat 
+setcursor [1 22] type "|   |
+if not equalp :digit 8 [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+dispile
+dishand
+setempty "digit
+end
+
+;; Data abstraction (ranks)
+
+to rank :card
+output butlast :card
+end
+
+to ranknum :rank
+if emptyp :rank [output 0]
+if numberp :rank [output :rank]
+if :rank = "A [output 1]
+if :rank = "J [output 11]
+if :rank = "Q [output 12]
+if :rank = "K [output 13]
+end
+
+;; Data abstraction (suits)
+
+to suit :card
+output last :card
+end
+
+to redp :card
+output memberp (suit :card) :reds
+end
+
+;; Data abstraction (tops)
+
+to top :suit
+output thing word "top :suit
+end
+
+to settop :suit :value
+make (word "top :suit) :value
+end
+
+;; Data abstraction (card stacks)
+
+to shown :num
+output word "shown :num
+end
+
+to hidden :num
+output word "hidden :num
+end
+
+;; Data abstraction (pushdown stacks)
+
+to stackemptyp :name
+output emptyp thing :name
+end
+
+to setempty :stack
+make :stack []
+end
diff --git a/js/games/nluqo.github.io/~bh/v2ch4/standout.gif b/js/games/nluqo.github.io/~bh/v2ch4/standout.gif
new file mode 100644
index 0000000..e0d676b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch4/standout.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch4/v2ch4.html b/js/games/nluqo.github.io/~bh/v2ch4/v2ch4.html
new file mode 100644
index 0000000..5af1f65
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch4/v2ch4.html
@@ -0,0 +1,1683 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 4: Example: Solitaire</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Solitaire</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch04.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch5/v2ch5.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Program file for this chapter: <A HREF="solitaire.lg"><CODE>solitaire</CODE></A>
+
+<P>
+This program deals out a hand of solitaire and maintains a picture of
+the card layout as you play the game by entering commands to move cards.  It
+doesn't try to provide help with strategy, but it does know the rules for
+legal moves.
+
+<P>
+This chapter follows Chapter 3 because the solitaire program uses
+<CODE>catch</CODE> and <CODE>throw</CODE> for three kinds of nonlocal exit.
+The program is an infinite loop that plays games repeatedly, so there is an
+exit command that is implemented as a <CODE>throw</CODE>.  Each game is
+itself an infinite loop, processing user commands repeatedly until either
+the game is won or the user asks to start a new game.  The command to start
+a new game is also implemented as a <CODE>throw</CODE>.  Finally, if the
+program detects an error in a user command, such as asking to move a card
+that isn't playable, the program rings a bell and <CODE>throw</CODE>s back
+to the command-reading loop.
+
+<PRE>
+to solitaire
+<EM>...initialization...</EM>
+catch "exit [forever [onegame]]
+end
+
+to onegame
+<EM>...initialization...</EM>
+catch "endgame [forever [catch "bell [parsecmd]]]
+end
+</PRE>
+
+<H2>The User Interface</H2>
+
+<P>
+But what I actually find most interesting about this program is the way
+in which it interacts with the user.  By now, most people have seen
+computer solitaire programs in which the cards are drawn graphically on
+the screen, and the user moves cards by dragging with a mouse.  (A program
+of that kind is included with Microsoft Windows, and versions are also
+available for most other computer systems.)  The advantage of the mouse
+interface is that it's very easy to learn.  Once you've seen how dragging
+an object with the mouse works in a painting program or a word processor,
+it's immediately obvious how to drag cards in the solitaire program, without
+reading an instruction manual.
+
+<P>
+This Logo solitaire program doesn't use a mouse.  Instead, you move cards
+with keyboard commands.  Most of the time it takes a single keystroke to
+tell the program which card to move, and where to move it.  The trouble
+is that you have to learn the command keys!  Given the choice, I think that
+most people would rather start playing right away with a mouse-driven
+program than take the time to learn to use mine.  But I actually find
+the Logo program <EM>easier</EM> to use.  Typing a single key is faster
+and easier on the wrist than moving the mouse to where the card is,
+holding down the mouse button, moving the mouse to where you want to put
+the card, and then releasing the button.
+
+<P>
+There's no question that mouse-based graphical user interfaces
+have vastly increased the acceptance and use of computers by people who
+are not technical experts.  And I was happy to have a mouse-based drawing
+program to produce many of the illustrations in these books!  But I did
+the word processing with a keyboard-controlled text editor; I find it
+easier to use and more flexible than the mouse-based word processors.
+Maybe it's just incipient old age, but I'm still a holdout against the
+idea that <EM>everything</EM> is better done with a mouse.
+
+<P>
+Play several games using this program, and several using a mouse-based
+solitaire program, and see what you think.
+
+<H2>The Game of Solitaire</H2>
+
+<P>
+Here is a picture of a solitaire game in progress.
+
+
+<P><CENTER><IMG SRC="cards.gif" ALT="<P>figure: cards"></CENTER>
+
+<P>
+In the center of the picture are seven <EM>stacks</EM> of cards.
+Each stack may include some <EM>hidden</EM> cards and some <EM>shown</EM>
+cards.  The hidden cards, if any, are beneath the shown cards.  If there are
+any cards at all in a stack, at least one must be shown.  Cards that are not
+part of this layout are held in the <EM>hand</EM> and dealt from the hand
+onto the <EM>pile</EM>; the cards in the hand are hidden, while the top card
+of the pile is visible.  At the top of the picture are four more piles of
+cards, one for each suit; I'll call these piles &quot;the <EM>top</EM>&quot; so that
+I can reserve the name <EM>pile</EM> for the one at the bottom.
+
+<P>
+Here is how the same layout would be represented by the program:
+
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v2ch4/solitaire.gif" ALT="<P>figure: solitaire"></CENTER>
+
+<P>
+Shown cards are represented on the screen by the rank and suit of
+the card.  Several cards may be shown in each stack, while only one card is
+shown in the pile, and one of each suit in the top.  Each stack has a dash
+at the top of its display if there are any hidden cards in that stack; the
+hand is represented by the number of cards in it.
+
+<P>
+In playing solitaire it's important to distinguish black cards from red
+cards, so the program does its best to present the color information to
+you.  The facilities for color display vary tremendously between computer
+models, both in what capabilities are available and in the means by which
+a program can use them.  Berkeley Logo sacrifices versatility for
+uniformity; there is a <CODE>standout</CODE> primitive operation that can
+be used to print text in &quot;reverse video,&quot; whichever of black-on-white
+and white-on-black isn't the usual presentation.
+
+
+<P><CENTER><IMG SRC="standout.gif" ALT="<P>figure: standout"></CENTER>
+
+<P>
+The <CODE>solitaire</CODE> program displays red cards in normal text
+and black cards in reverse video.  The DOS version normally displays white
+text on a black background, while the Macintosh version normally displays
+black text on a white background, so the effect looks different on each
+kind of computer.
+
+<P>
+There are many variations in the rules of solitaire, so I should describe
+in detail the version this program knows.  In the initial layout, there are
+seven stacks.  The first stack (on the left) has one shown card.  The second
+has one shown and one hidden.  The third has one shown and two hidden.  Each
+stack has one more hidden card than the one before it, so the seventh stack,
+at the right, has one shown card and six hidden cards.  There are 28 cards
+altogether on the board; the remaining 24 cards are in the hand.
+
+<P>
+Here are the legal moves:
+
+<OL>
+<LI>Three cards at a time may be dealt from the hand to the pile.  The
+cards are turned face up, so that the last one dealt is shown.  If there are
+fewer than three cards in the hand, however many cards are left may be dealt
+in this way.  If there are no cards in the hand at all, the entire pile may
+be picked up and turned upside down, so that they return to the hand in the
+same order they were in at the beginning.
+
+<LI>The top card of the pile, or the topmost card of any stack, may be
+moved to the top if (a) it is an ace, <EM>or</EM> (b) the card of the same
+suit and the immediately preceding rank is visible at the top.  For example,
+the four of clubs can be played onto the three of clubs at the top.
+
+<LI>The top card of the pile, or any shown card in any stack, may be
+moved onto a stack if the topmost card of that stack is (a) of the opposite
+color, <EM>and</EM> (b) of the immediately following rank as the card you are
+moving.  For example, the four of clubs can be played onto the five of
+hearts or the five of diamonds on a stack.
+
+<LI> When a card is moved onto a stack, it is placed so that it does not
+completely cover any other shown cards on that stack.  Any such shown cards
+remain shown.
+
+<LI>When moving a shown card from a stack, any other cards that are
+above it (partly covering it, because they were moved onto it earlier) must
+be moved along with it.
+
+<LI>When all shown cards are removed from a stack, the topmost hidden
+card is turned over so that it becomes a shown card.  If there are no hidden
+cards in that stack, the stack becomes empty.  (At the beginning of the
+game, there are no empty stacks.)
+
+<LI>Any king that is the top card of the pile, or a shown card in any
+stack, may be moved onto an empty stack.
+
+<LI>The game is won if all cards are moved to the top.  The game is
+lost if there are no legal moves and not all cards are moved to the top.
+</OL>
+
+<P>
+I've expressed these rules in more formal language than would usually be
+used.  Card players have shorthand ways of speaking, like &quot;play up in the
+same suit at the top&quot; or &quot;play down in the opposite color on the stacks.&quot;
+I wanted to be very precise in stating the rules because each part of a rule
+must be reflected in the computer program.  Even so, I've left out some
+details.  For example, my list of rules talks about concepts like &quot;suit&quot; and
+&quot;rank&quot; without defining them.  I haven't specified the rank order, namely
+ace-low.  (That is, ace comes before two, not after king.)  What other
+details, if any, have I forgotten?
+
+<H2>Running the Program</H2>
+
+<P>
+To use the program, invoke the command <CODE>solitaire</CODE> with no inputs.
+(Being as I am a lazy typist, I've also defined an abbreviation <CODE>s</CODE>
+for this command.)  The program prints an initial screenful of instructions,
+and then repeatedly deals solitaire hands until you give the exit command.
+Here are the instructions:
+
+<PRE>
+Welcome to solitaire
+
+Here are the commands you can type:
+    <U>+ =</U>  Deal three cards onto pile
+    <U>P</U>    Play top card from pile
+    <U>R</U>    Redisplay the board
+    <U>?</U>    Retype these instructions
+    <U>card</U> Play that card
+    <U>M</U>    Move same card again
+    <U>W</U>    Play up as much as possible (Win)
+    <U>G</U>    Give up (start a new game)
+    <U>X</U>    Exit to Logo
+
+A card consists of a rank:
+   <U>A 2 3 4 5 6 7 8 9 10 J Q K</U>  or <U>T</U> for 10
+followed by a suit:
+   <U>H S D C</U>
+or followed by <U>.</U> to play all possible suits up
+
+If you make a mistake, hit delete or backspace.
+
+To move an entire stack,
+   hit the shifted stack number:
+     <U>! @ # $ % ^ &</U> for stacks
+     1 2 3 4 5 6 7
+</PRE>
+
+<P>
+My goal in designing the &quot;human interface&quot; for this program was that most
+moves should require typing only a single character.  My idea is that the
+most common moves are to play a card from the pile and to move an entire
+stack (that is, the entire shown part of a stack) at once.  There are
+one-character commands for all these.  If you want to move only part of a
+stack, then you must type the name of the card, in the form <CODE>8S</CODE>
+for the eight of spades.
+
+<P>
+As it turns out, in this case what's easy for the user is also easiest for
+the program.  When you refer to a card by its position, it's easy for the
+program to look up which card you mean.  For example, when you say
+<CODE>P</CODE> to play the top card from the pile, it's easy for the program
+to find out what card that is.  But when you specify a card by typing its
+rank and suit, it's harder for the program to know <EM>where</EM> that card
+is.  The program must check the pile and all the stacks to see if your card
+is a member of each one.  So the program runs faster if you use the
+single-keystroke commands.
+
+<P>
+The instructions don't say how to let the program know where you want to
+move the chosen card <EM>onto.</EM> The reason is that in most cases there is
+only one possible place, and the program finds that place itself.  (This is
+the most complicated part of the program.)  Sometimes the chosen card can be
+moved to two different places.  If so, the program picks a stack to move the
+card onto, and if you don't like the program's choice, you can type
+<CODE>M</CODE> to move the same card again until it ends up where you wanted
+it.
+
+<P>
+The program makes no effort to help you with strategic decisions. For
+example, some people like to play cards to the top as soon as possible,
+while other people prefer to keep cards visible on the stacks as long as
+possible.  Such choices are up to you.  Also, the program does not detect
+losing the game.  (Detecting winning is easy--all four tops have kings
+showing--but you haven't lost the game until no further moves are possible,
+which is harder for the program to figure out.)  When you decide the game is
+over, you just type <CODE>G</CODE> to start another game.
+
+<H2>Program Structure</H2>
+
+<P>
+There are about 60 procedures in this program.  These procedures can be
+roughly divided into several purposes:
+
+<UL>
+<LI>initialization
+<LI>reading and interpreting keyboard commands
+<LI>finding the chosen card in the layout
+<LI>finding where the chosen card can move
+<LI>moving the card
+<LI>displaying the card layout
+<LI>miscellaneous user commands
+<LI>data abstraction
+</UL>
+
+<P>
+In the procedures that move cards, the most interesting part of
+the program, a few important variables are used to communicate what moves
+should be made:
+
+<DL>
+<DT><CODE>card</CODE><DD>The card that the user asked to move.
+<DT><CODE>cards</CODE><DD>All the cards that must be moved.  (There may be more
+than one if the requested card is in the middle of a stack.)
+<DT><CODE>where</CODE><DD>The location (before moving) of the chosen card.
+<DT><CODE>onto</CODE><DD>A list of all possible locations to which the card
+can be moved.
+</DL>
+
+<P>
+As we'll see later in more detail, the card locations in <CODE>:where</CODE>
+and <CODE>:onto</CODE> are represented in the form of Logo instructions that
+can be <CODE>run</CODE> to perform the desired move.
+
+<P>
+The overall program structure is two nested loops.  The top-level procedure
+<A HREF="v2ch4.html#solitaire"><CODE>solitaire</CODE></A>
+repeatedly invokes <CODE>onegame</CODE>.  As its name
+suggests, each invocation of <A HREF="v2ch4.html#onegame"><CODE>onegame</CODE></A>
+plays one solitaire game.
+It shuffles and deals the cards, then repeatedly invokes
+<A HREF="v2ch4.html#parsecmd"><CODE>parsecmd</CODE></A>,
+which reads a character from the keyboard and chooses
+the appropriate procedure to carry out the user's command.
+
+<P>
+(Most user commands require only one character.  The situation is a little
+more complicated if the user types the name of a card, such as
+<CODE>10H</CODE> for the ten of hearts, as a command.  <CODE>Parsecmd</CODE>
+actually treats this as three separate commands.  The <CODE>1</CODE> and the
+<CODE>0</CODE> merely record the card's rank in a variable named
+<CODE>digit</CODE>.  When <CODE>parsecmd</CODE> sees the letter
+<CODE>H</CODE>, which selects the card's suit, it invokes
+<CODE>play.by.name</CODE>, which combines the remembered rank with the
+just-typed suit to determine the desired card.)
+
+<H2>Initialization</H2>
+
+<P>
+Both <CODE>solitaire</CODE> and <CODE>onegame</CODE> include initialization
+instructions.  That's because some actions are only required once, such as
+computing the 52 names of cards in the deck, while others are required for
+each game, such as shuffling those cards.
+
+<P>
+Many initialization actions use the Berkeley Logo primitive command
+<CODE>localmake</CODE>, which is an abbreviation for a <CODE>local</CODE>
+command followed by a <CODE>make</CODE> command.  The program uses no global
+variables, although the variables that are local to these top-level
+procedures are available to any procedure within the solitaire program.
+
+<P>
+For most purposes, the most convenient representation of the deck of cards
+is as a list.  That's because what the program most often does with the deck
+is to deal a card from it to somewhere else.  If the deck is represented as
+a list in the variable <CODE>hand</CODE>, then dealing a card is roughly
+equivalent to these instructions:
+
+<PRE>
+do.something.with first :hand
+make "hand butfirst :hand
+</PRE>
+
+<P>
+A list is convenient because <CODE>butfirst</CODE> can be used to remove a
+card from the deck.  It turns out, however, that <EM>shuffling</EM> the deck
+is easiest if it's represented as an array.  That's because the technique
+used to shuffle the deck is to exchange pairs of cards repeatedly.  In the
+first step, we swap the 52nd card of the deck with a randomly chosen card
+(perhaps itself).  The newly chosen last card is now exempt from further
+exchanges.  In the second step, the 51st card of the deck is swapped with
+some card in the remainder of the deck, and so on, for 51 steps.  The
+<CODE>setitem</CODE> primitive makes it easy to change the value of a member
+partway through an array.  If the deck were represented as a list, each
+exchange would require making a (slightly changed) copy of the entire list.
+
+<P>
+The solution to this problem is that both representations, list and array,
+are used in the program.  The <CODE>solitaire</CODE> procedure creates an
+array containing the 52 cards.  For each game, <CODE>onegame</CODE> invokes
+<CODE>shuffle</CODE>, which shuffles the cards in the array and then uses
+the primitive <CODE>arraytolist</CODE> to output a list containing the cards
+in their new order.  That list is used by the other parts of the program.
+
+<PRE>
+to shuffle :len :array
+if :len=0 [output arraytolist :array]
+localmake "choice random :len
+localmake "temp item :choice :array
+setitem :choice :array (item :len-1 :array)
+setitem :len-1 :array :temp
+output shuffle :len-1 :array
+end
+</PRE>
+
+<H2>Data Abstraction</H2>
+
+<P>
+As in most large programs, the solitaire program uses selectors like
+<CODE>first</CODE> and <CODE>last</CODE> for several different purposes in
+different contexts.  To make the program easier to read and maintain, more
+meaningful names are used in each context.
+
+<P>
+For example, cards are represented in the program as words containing the
+rank and the suit, so the word <CODE>8C</CODE> represents the eight of
+clubs.  To find the rank of a card, the program must take the
+<CODE>butlast</CODE> of the word, and to find the suit, it must take the
+<CODE>last</CODE> of the word.  (Why not use <CODE>first</CODE> instead of
+<CODE>butlast</CODE> to get the rank?  Because if the card happens to be a
+ten, there are two digits in its rank.  The suit is always a single
+character.)  Instead of using these primitive selectors directly, I've
+defined synonyms:
+
+<PRE>
+to rank :card
+output butlast :card
+end
+
+to suit :card
+output last :card
+end
+</PRE>
+
+<P>
+When considering playing a card onto a stack, the program does
+not have to know the precise suit of the card, but must know whether it's
+red or black:
+
+<PRE>
+to redp :card
+output memberp (suit :card) :reds
+end
+</PRE>
+
+<P>
+One complication in dealing with cards is that the program wants to use a
+card's rank in two different ways.  For user interaction (reading commands
+and displaying cards on the screen) the ranks should be represented using
+the names for aces and picture cards (<CODE>A</CODE>, <CODE>J</CODE>,
+<CODE>Q</CODE>, and <CODE>K</CODE>).  But for comparison purposes (such as
+deciding whether a card can be played on top of another card), it's more
+convenient to represent all ranks as numbers: 1 for ace, 11 for jack, 12 for
+queen, and 13 for king.  A conversion function <CODE>ranknum</CODE> makes
+this possible:
+
+<PRE>
+to ranknum :rank
+if emptyp :rank [output 0]
+if numberp :rank [output :rank]
+if :rank = "A [output 1]
+if :rank = "J [output 11]
+if :rank = "Q [output 12]
+if :rank = "K [output 13]
+end
+</PRE>
+
+<P>
+(When would a rank be empty?  The <CODE>emptyp</CODE> test is useful in
+the case of deciding whether a card can be played onto an empty &quot;top.&quot;
+In general, the only card that can be played onto a top is the rank after
+the one that's already visible there; for example, if a five is showing,
+then a six can be played.  Treating an empty top as having a rank of zero
+means that the following rank, an ace, is permitted, just as the rules
+require.)
+
+<P>
+In an actual solitaire game, a top is a pile of several cards of the same
+suit, with an ace on the bottom and other cards over it in sequence.  But in
+the program, there is no need to represent any but the topmost card, since
+the lower cards have no further role in the game.  In this program, the tops
+are represented by four variables <CODE>toph</CODE>, <CODE>tops</CODE>,
+<CODE>topd</CODE>, and <CODE>topc</CODE>.  (The last letter indicates the
+suit.)  The value of each variable is the empty word if that top is empty,
+or the rank of the topmost card if not.  Instead of using these variables
+directly, the program uses data abstraction procedures <CODE>top</CODE> and
+<CODE>settop</CODE> to examine and modify the values:
+
+<PRE>
+to top :suit
+output thing word "top :suit
+end
+
+to settop :suit :value
+make (word "top :suit) :value
+end
+</PRE>
+
+<P>
+For example, part of the initialization in <CODE>onegame</CODE> is to
+make all four tops empty:
+
+<PRE>
+foreach :suits [settop ? "]
+</PRE>
+
+<H2>Stacks</H2>
+
+<P>
+A <EM>stack</EM> (also called a <EM>pushdown list</EM>) is a data
+structure that is used to remember things and recall them later.  A stack
+uses the rule &quot;Last In, First Out.&quot; That is, when you take something out
+of a stack, the one you get is the one you put in most recently.  The name
+&quot;stack&quot; is based on the metaphor of the spring-loaded stack of trays you
+find in a self-service cafeteria.  You add a tray to the stack by pushing
+down the trays that were already there, adding the new tray at the top of
+the pile.  When you remove a tray, you take the one at the top of the
+pile--the one most recently added to the stack.
+
+<P>
+A pile of cards in a solitaire game works just like a pile of trays in a
+cafeteria.  You add cards to the top of the pile, and you remove cards from
+the top of the pile.  I've used the name &quot;stack&quot; for some of the piles of
+cards in this project partly because those groups of cards are represented
+in the program by stacks in the technical sense.
+
+<P>
+Berkeley Logo provides primitive procedures <CODE>push</CODE> and
+<CODE>pop</CODE> to implement stacks.  Each stack is represented as a list.
+To push something onto the stack, Logo uses <CODE>fput</CODE>; to pop
+something off the stack, it uses <CODE>first</CODE>.  (Actually, it's
+slightly more complicated, as you'll see in a moment.  But this is
+essentially true.)  For example, each of the seven numbered card stacks in
+the solitaire layout is represented by two lists, one for the shown cards
+and one for the hidden cards.  The lists for the third stack are kept in
+variables named <CODE>shown3</CODE> and <CODE>hidden3</CODE>.  To
+<EM>push</EM> a new card onto the hidden stack without using the
+<CODE>push</CODE> primitive, you could say
+
+<PRE>
+make "hidden3 fput :card :hidden3
+</PRE>
+
+<P>
+To <EM>pop</EM> a card from that stack, you'd say
+
+<PRE>
+make "card first :hidden3
+make "hidden3 butfirst :hidden3
+</PRE>
+
+<P>
+In this case, the first instruction reads the top of the stack,
+while the second removes that entry from the stack.
+
+<P>
+Berkeley Logo provides <CODE>push</CODE> and <CODE>pop</CODE> as a data
+abstraction mechanism.  <CODE>Push</CODE> is a command that takes two
+inputs.  The first input is a word, the <EM>name</EM> of a stack.  The
+second input is any Logo datum.  <CODE>Pop</CODE> is an operation with one
+input, the name of a stack.  Its output is the first datum on the stack.  It
+also has the effect of removing that datum from the stack.  Instead of the
+instructions above, you can say
+
+<PRE>
+push "hidden3 :card
+make "card pop "hidden3
+</PRE>
+
+<P>
+If Berkeley Logo didn't already provide these procedures, it would be easy
+to write them:
+
+<PRE>
+to push :stack :thing
+make :stack fput :thing (thing :stack)
+end
+
+to pop :stack
+local "result
+make "result first thing :stack
+make :stack butfirst thing :stack
+output :result
+end
+</PRE>
+
+<P>
+Within the definition of <CODE>push</CODE>, the expression
+<CODE>:stack</CODE> represents the name of the stack, while the expression
+<CODE>thing :stack</CODE> represents the stack itself.  The
+<CODE>make</CODE> instruction is an example of indirect assignment; it does
+not give a new value to the variable <CODE>stack</CODE> but rather to the
+variable whose name is contained in <CODE>stack</CODE>.
+
+<P>
+<CODE>Pop</CODE> is an unusual Logo procedure in that it's an operation that
+also has an effect.  Most operations don't have effects.  They compute
+some value, but they don't make any permanent change in the state of the
+computer.  Another way of looking at this is to say that for most
+operations, if you apply the same operation to the same inputs repeatedly,
+you'll get the same result every time.
+
+<PRE>
+? <U>make "cards [AH 5C 10S]</U>
+? <U>print first :cards</U>
+AH
+? <U>print first :cards</U>
+AH
+? <U>print first :cards</U>
+AH
+</PRE>
+
+<P>
+But if you apply <CODE>pop</CODE> to the same input repeatedly, you'll
+get a different output each time.
+
+<PRE>
+? <U>print pop "cards</U>
+AH
+? <U>print pop "cards</U>
+5C
+? <U>print pop "cards</U>
+10S
+</PRE>
+
+<P>
+The combination of output and effect in <CODE>pop</CODE> is a powerful
+technique, but a potentially confusing one.  It's important for anyone who
+tries to read this program to be aware that <CODE>pop</CODE> has an effect.
+Fortunately, the concept of a stack is a standard, well-known convention in
+computer science, and the names <CODE>push</CODE> and <CODE>pop</CODE> are
+the traditional ones for this purpose, so <CODE>pop</CODE> is somewhat
+self-documenting.
+
+<P>
+Before a stack can be used, it must be initialized.  Generally a stack
+starts out with no data in it.  That is, it's initially an empty list.  This
+initialization could be done with an explicit <CODE>make</CODE> instruction,
+but instead I invented a procedure for the purpose:
+
+<PRE>
+to setempty :stack
+make :stack []
+end
+</PRE>
+
+<P>
+I think this makes the program slightly more elegant.
+
+<P>
+It is an error to try to pop more items from a stack than you've pushed onto
+it.  If you try to do this, you'll get an error message something like
+
+<PRE>
+First doesn't like [] as input
+</PRE>
+
+<P>
+Often the logic of a program ensures automatically that you never
+try to overpop a stack.  But in the solitaire program I sometimes have to
+check for this possibility explicitly, with an instruction like
+
+<PRE>
+if not emptyp :hidden3 [make "card pop "hidden3]
+</PRE>
+
+<P>
+I've been using the name <CODE>hidden3</CODE> as an example in this
+discussion, typing <CODE>"hidden3</CODE> when the name of the stack was
+needed or <CODE>:hidden3</CODE> when its value was needed.  In fact, such
+names do not appear explicitly in the program.  There are no instructions
+that are directed exclusively to the third stack.  Instead, stack
+instructions are applied either to all seven stacks or to a stack chosen by
+the user through keyboard commands.  The name of a stack must be
+<EM>computed</EM> using an expression like
+
+<PRE>
+word "hidden :num
+</PRE>
+
+<P>
+The contents of the stack would be examined by applying <CODE>thing</CODE>
+to that expression.  To make the program cleaner I created procedures to
+generate these variable names.
+
+<PRE>
+to shown :num
+output word "shown :num
+end
+
+to hidden :num
+output word "hidden :num
+end
+</PRE>
+
+<P>
+Remember that these operations output the <EM>name</EM> of a stack
+variable, not the contents of a stack.  So, for example, you can use them in
+instructions like these:
+
+<PRE>
+push (shown 5) :card
+make "card pop shown 5
+setempty shown 5
+</PRE>
+
+<P>
+There are only a few places in the program where a procedure needs to refer
+to the entire contents of a stack, rather than just pushing or popping a
+single datum at a time.  (One such place, for example, is
+<CODE>remshown</CODE>, which has the job of removing perhaps several cards
+from a stack.)  In those places, there is an explicit use of
+<CODE>thing</CODE> to examine the contents of a stack selected by
+<CODE>shown</CODE> or <CODE>hidden</CODE>.  An expression that occurred
+often in the program was
+
+<PRE>
+emptyp thing shown :num
+</PRE>
+
+<P>
+to see if a stack is empty; I cleaned up these expressions
+somewhat by inventing a special procedure for this test.
+
+<PRE>
+to stackemptyp :name
+output emptyp thing :name
+end
+</PRE>
+
+<P>
+This is used in an expression like
+
+<PRE>
+stackemptyp shown :num
+</PRE>
+
+<P>
+Note that when a stack <EM>is</EM> mentioned explicitly by name in the
+program, like <CODE>:hand</CODE> or <CODE>:pile</CODE>, it is tested for
+emptiness with the ordinary <CODE>emptyp</CODE>.  In this case the colon
+abbreviates the invocation of <CODE>thing</CODE>; for the <CODE>shown</CODE>
+or <CODE>hidden</CODE> names, <CODE>stackemptyp</CODE> abbreviates the
+invocation of <CODE>thing</CODE>.
+
+<P>
+One small detail that's easy to miss is that in a non-computer game of
+solitaire, when a hand is completely dealt out, you pick up the pile from
+the table and <EM>turn it over</EM> to form a new hand.  What was the top
+card of the pile becomes the bottom card of the hand.  The program achieves
+the same effect while dealing cards:
+
+<PRE>
+to deal 
+if emptyp :hand [make "hand <U>reverse</U> :pile setempty "pile]
+if emptyp :hand [output []]
+output pop "hand
+end
+</PRE>
+
+<P>
+The Berkeley Logo primitive operation <CODE>reverse</CODE> is used
+to reverse the order of the cards as they are moved from the pile to
+the hand.
+
+<H2>Program as Data</H2>
+
+<P>
+In order for the program to move a card, it must first make sure that the
+requested move is legal.  The first step is to find the card's current
+position.  (That's easy if the move is requested by position, using the
+<CODE>P</CODE> command to play the card at the top of the pile, or a shifted
+stack number to move the entire shown stack; it's a little harder if the
+card is requested by its rank and suit.  Even then, in order to be playable
+the card must be either on top of the pile or somewhere in a shown stack.)
+The next step is to look for another position into which the card can be
+moved; the only possibilities are a stack or a top.  Only after both old and
+new positions have been verified can the program actually modify its data
+structures (and the screen display) to move the card.
+
+<P>
+When you type a card-moving command, <CODE>parsecmd</CODE> invokes one of
+three procedures: <CODE>playpile</CODE> for the <CODE>P</CODE> command,
+<CODE>playstack</CODE> for one of the shifted stack numbers (such as
+<CODE>#</CODE> for stack 3), or <CODE>play.by.name</CODE> for a rank and
+suit (such as <CODE>7D</CODE>).  The first two of these must figure out
+which card is desired, and ensure that there is in fact a card in the
+requested position; <CODE>play.by.name</CODE> has the opposite job, since it
+already knows the card and must determine that it's in a playable position.
+But in either case, these procedures do not actually move the card.  They
+ensure that the variable <CODE>card</CODE> has the desired card as its
+value, and that the variable <CODE>where</CODE> has as its value a
+representation of the card's current position.  Then they call
+<CODE>playcard</CODE>, whose job is to ensure that there is a valid
+destination for the card, and if so, to move it:
+
+<PRE>
+to playcard
+setempty "onto
+if not coveredp [checktop]
+if and not :upping ~
+       or (emptyp :onto) (not upsafep rank :card) ~
+   [checkonto]
+if emptyp :onto [bell]
+run :where
+run first :onto
+end
+</PRE>
+
+<P>
+Subprocedures <CODE>checktop</CODE> and <CODE>checkonto</CODE> determine
+whether the requested card can be moved to the top or to a stack.  (Each of
+these is called only if certain conditions are met.  For
+<CODE>checktop</CODE>, the condition is that the desired card must not be in
+the middle of a shown stack; it must be either the bottommost card of a
+shown stack or visible on the pile.  The condition for calling
+<CODE>checkonto</CODE> is more complicated.  If the user's command was
+<CODE>.</CODE> or <CODE>W</CODE>, then cards are played only into the top,
+so there is no need to check the stacks.  In other cases, to make the game
+move more quickly, the program will always move the card to the top if it is
+both possible and <EM>safe</EM> to do so.  Such a move is considered safe if
+every card whose rank is less than that of the requested card by two or more
+is already in the top, because then any card of rank one less than the
+chosen card can be played to the top, and so the chosen card is not needed
+in the stacks.)
+
+<P>
+Just as <CODE>:where</CODE> identifies the card's current position,
+<CODE>:onto</CODE> will hold all of the possible destination positions.
+<CODE>Checktop</CODE> and <CODE>checkonto</CODE> add possible positions to
+this variable, which is a list.  If <CODE>:onto</CODE> is empty after
+<CODE>checktop</CODE> and <CODE>checkonto</CODE> have been invoked, then
+there is no legal way to move this card.
+
+<P>
+I want to focus attention on the two <CODE>run</CODE> instructions.  They
+are the ones that actually do the work of moving a card from one place to
+another; the first removes the card from its original position and the
+second inserts the card at its new position.
+
+<P>
+The value of the variable <CODE>where</CODE> is not merely a number or word
+indicating where the card is to be found, but a Logo instruction that
+invokes the procedure needed to remove the card.  For example, suppose you
+type the letter <CODE>P</CODE> to play a card from the top of the pile.
+<CODE>Parsecmd</CODE> then invokes <CODE>playpile</CODE>:
+
+<PRE>
+to playpile 
+if emptyp :pile [bell]
+if not emptyp :digit [bell]
+make "card first :pile
+make "where [rempile]
+carddis :card
+playcard
+end
+</PRE>
+
+<P>
+The first two instructions check for errors.  The first checks for trying to
+play a card from the pile when there are no cards in the pile.  The second
+checks for the <EM>syntax</EM> error of typing a rank and then typing
+<CODE>P</CODE> instead of a suit.  Having cleared those hurdles, the next
+instruction finds the actual card (rank and suit) you want to play from the
+pile.  The interesting part for the present discussion is that the variable
+<CODE>where</CODE> is given as its value the list
+
+<PRE>
+[rempile]
+</PRE>
+
+<P>
+<CODE>Rempile</CODE> is the name of a procedure with no inputs, so this
+list contains a valid Logo instruction.  The corresponding instruction in
+<CODE>playstack1</CODE> is
+
+<PRE>
+make "where sentence "remshown :num
+</PRE>
+
+<P>
+which gives <CODE>where</CODE> a value like
+
+<PRE>
+[remshown 4]
+</PRE>
+
+<P>
+if you've selected stack four.  In either case, <CODE>playcard</CODE> can
+later remove the card from its original location just by <CODE>run</CODE>ning
+<CODE>:where</CODE>.  At the same time, this Logo <EM>instruction</EM> can
+be examined as a <EM>datum.</EM> For example, <CODE>coveredp</CODE> contains
+the instruction
+
+<PRE>
+if equalp :where [rempile] [output "false]
+</PRE>
+
+<P>
+Most programming languages don't have a facility like Logo's
+<CODE>run</CODE> command.  In those languages, the variable
+<CODE>where</CODE> would have to contain, for example, a number indicating
+where the card is to be found.  <CODE>Playcard</CODE> would then use this
+number to choose a course of action with a series of instructions like this:
+
+<PRE>
+if :where = 0 [rempile]
+if :where = 1 [remshown 1]
+if :where = 2 [remshown 2]
+</PRE>
+
+<P>
+... and so on.
+
+<P>
+The situation concerning the variable <CODE>onto</CODE> is similar, except
+that there is a slight complication because there may be more than one legal
+destination for a card.  (By contrast, every card starts out in exactly one
+place!)  Therefore, <CODE>checktop</CODE> and <CODE>checkonto</CODE> set up
+<CODE>:onto</CODE> as a <EM>list</EM> of Logo instructions, one for every
+possible destination.  If a card could be played onto stack 3, stack 6, or
+the top, <CODE>:onto</CODE> will be
+
+<PRE>
+[[playonto 3] [playonto 6] [playtop]]
+</PRE>
+
+<P>
+<CODE>Playcard</CODE> runs the first member of this list.  Why bother saving
+the other members?  After a successful move, the user can type
+<CODE>M</CODE> to move the same card to a different destination.  Here's how
+that is done:
+
+<PRE>
+to again
+if not emptyp :digit [bell]
+if emptyp :onto [bell]
+make "where list "remshown last pop "onto
+if emptyp :onto [bell]
+carddis :card
+run :where
+run first :onto
+end
+</PRE>
+
+<P>
+This procedure uses the values that are still left over in
+<CODE>:card</CODE> and <CODE>:onto</CODE> from the last move.  The first
+member of <CODE>:onto</CODE> is the instruction that moved the card onto a
+stack.  (If the card was moved to the top, it's because there were no
+alternatives in <CODE>:onto</CODE>, because <CODE>playtop</CODE> is always
+the last choice in the list.)  That stack is now the card's position of
+origin!  If <CODE>:onto</CODE> was
+
+<PRE>
+[[playonto 3] [playonto 6] [playtop]]
+</PRE>
+
+<P>
+then the instruction
+
+<PRE>
+make "where list "remshown last pop "onto
+</PRE>
+
+<P>
+will give <CODE>where</CODE> the value
+
+<PRE>
+[remshown 3]
+</PRE>
+
+<P>
+and, because <CODE>pop</CODE> removes the first datum from the stack,
+leaves <CODE>onto</CODE> with the value
+
+<PRE>
+[[playonto 6] [playtop]]
+</PRE>
+
+<P>
+The chosen card will be moved from stack three to stack six.  If the user
+types <CODE>M</CODE> again, then the card will be moved from stack six to
+the top.
+
+<H2>Multiple Branching</H2>
+
+<P>
+Consider the procedure that interprets what you type at the keyboard while
+running the solitaire program:
+
+<PRE>
+to parsecmd                ;; abbreviated version
+local "char
+make "char uppercase readchar
+if equalp :char "T [parsedigit 1 parsezero stop]
+if memberp :char [1 2 3 4 5 6 7 8 9 A J Q K] [parsedigit :char stop]
+if equalp :char "0 [parsezero stop]
+if memberp :char :suits [play.by.name :char stop]
+if equalp :char ". [allup stop]
+if equalp :char "W [wingame stop]
+if equalp :char "M [again stop]
+; several more possibilities omitted...
+bell
+end
+</PRE>
+
+<P>
+This sort of thing is common in Logo programming: a string of
+<CODE>if</CODE>s in which each conditional instruction list ends with
+<CODE>stop</CODE> because the choices are mutually exclusive.
+
+<P>
+Some people find this use of <CODE>stop</CODE> offensive because it doesn't
+make it graphically apparent when reading the program that the choices are
+exclusive.  The form of the program makes it seem that each decision (that
+is, each <CODE>if</CODE> instruction) is independent of the others.
+
+<P>
+It would be possible to meet this objection by using <CODE>ifelse</CODE>,
+putting each new test in the false part of the previous one:
+
+<PRE>
+to parsecmd
+local "char
+make "char uppercase readchar
+ifelse equalp :char "T ~
+       [parsedigit 1 parsezero]
+       [ifelse memberp :char [1 2 3 4 5 6 7 8 9 A J Q K]
+               [parsedigit :char]
+               [ifelse equalp :char "0 [parsezero]
+                       ; ...
+                                       bell]]
+end
+</PRE>
+
+<P>
+It's not clear that this is an improvement, although the use of
+<CODE>ifelse</CODE> makes more sense as an alternative to
+<CODE>stop</CODE> when only a single decision is involved.
+
+<P>
+Some programming languages provide a special representation for such a
+<EM>multiple branching</EM> decision.  A Logo equivalent might look like this:
+
+<PRE>
+to parsecmd
+local "char
+make "char uppercase readchar
+branch [
+  [[equalp :char "T] [parsedigit 1 parsezero]]
+  [[memberp :char [1 2 3 4 5 6 7 8 9 A J Q K]] [parsedigit :char]]
+  [[equalp :char "0] [parsezero]]
+  [[memberp :char :suits] [play.by.name :char]]
+  [[equalp :char ".] [allup]]
+  [[equalp :char "W] [wingame]]
+  [[equalp :char "M] [again]]
+  ; several more possibilities omitted...
+  [["true] [bell]] ]
+end
+</PRE>
+
+<P>
+<CODE>Branch</CODE> is a hypothetical command that takes a single input, a
+list of lists.  Each member of the input is a list with two members.  The
+first member must be a Logo predicate expression; the second must be a Logo
+instruction.  <CODE>Branch</CODE> evaluates the first half of each pair.  If
+the value is <CODE>true</CODE>, <CODE>branch</CODE> then carries out the
+instruction in the second half of that pair, and then stops without
+evaluating the remaining pairs.  If the value is <CODE>false</CODE>,
+<CODE>branch</CODE> goes on to the next pair.  <CODE>Branch</CODE> is not a
+Logo primitive, but it can easily be written in Logo:
+
+<PRE>
+to branch :conditions
+if emptyp :conditions [stop]
+if (run first first :conditions) [run last first :conditions stop]
+branch butfirst :conditions
+end
+</PRE>
+
+<P>
+Inventing control structures like this is the sort of thing Logo
+makes easy and other languages make impossible.
+
+<P>
+The trouble with this particular control structure in Logo is that the input
+to <CODE>branch</CODE> is typically a very long list, extending over several
+lines on the screen.  Traditional Logo dialects have not done a good job of
+presenting such long lists with clear formatting.  More recent versions can,
+however, handle instructions like that multi-line <CODE>branch</CODE>
+invocation.
+
+<H2>Further Explorations</H2>
+
+<P>
+I keep thinking of new features I'd like in this program.  I think the most
+important is an Undo command, which would undo the effect of the previous
+user command.  This should be pretty easy to implement; every time the
+program changes the value of a variable that represents card positions, it
+should make a list of the variable's name and its old value, and push that
+onto a changes list.  For example, here's the procedure that removes a card
+from the pile:
+
+<PRE>
+to rempile 
+make "cards (list (pop "pile))
+dispile
+end
+</PRE>
+
+<P>
+And here's how I'd change it for the undo command:
+
+<PRE>
+to rempile 
+<U>push "undo.list (list "pile :pile)</U>
+make "cards (list (pop "pile))
+dispile
+end
+</PRE>
+
+<P>
+The undo command itself would go through the list, restoring the values of
+all the variables it finds, and then call <CODE>redisplay</CODE> to make the
+display match the program's state.  <CODE>Playcard</CODE> would
+<CODE>setempty</CODE> the undo list before moving any cards.
+
+<P>
+Another possibility is to improve the display.  One person who tried this
+program commented that it's not enough to indicate whether the hidden part
+of a stack is empty or nonempty; he wanted to see exactly how many cards
+are present.  Novice users might be helped by keeping an abbreviated command
+list in the empty space toward the right side of the screen.
+
+<P>
+A more ambitious direction you could pursue is to write a similar program
+for a different solitaire game.  There are books of card games that include
+several variations on this kind of solitaire as well as versions of
+solitaire that are totally different in their rules and layouts.
+
+<P>
+Another direction would be to try to have the program offer strategic
+suggestions, or even play the game entirely by itself.  As with any strategy
+game, you would have to choose between determining the strategy for the
+program in advance and letting it learn from its experience and modify its
+strategy.  Which is better, playing cards to the top quickly or saving them
+in the stacks as long as possible?  Which is better, playing a card from the
+pile or playing a card of the same rank and color from the stacks?  You
+could research these questions by writing versions of the program with
+different strategies and collecting statistics on their performance.
+
+<P>
+Another possibility would be to abandon solitaire and program the computer
+to play one side of a two-player game with you.  Blackjack is a simple
+example; poker is a harder one.
+
+<P>
+A different kind of exploration would be to try to speed up the running of
+this program.  Earlier I suggested the possibility that the program might
+benefit from remembering explicitly the position of each card.  You could
+find out whether or not that would really help.  (It would speed up the
+searching process for a card, but it would also slow down the moving of
+cards because the program would have to remember the new location instead of
+the old one.  My guess is that the speedup would be substantial and the
+slowdown minimal, but I'm not sure.)  What other bottlenecks can you find in
+this program, and how can you improve them?
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch5/v2ch5.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<P>
+If you trace the progress of a user command, let's say <CODE>P</CODE> to
+play from the pile, from <CODE>parsecmd</CODE> through <CODE>playpile</CODE>
+and <CODE>playcard</CODE> to <CODE>rempile</CODE> and then either
+<CODE>playtop</CODE> or <CODE>playonto</CODE>, you'll understand most of the
+program.  There are a few slightly complicated details in moving several
+cards from one stack to another (<CODE>remshown</CODE> and
+<CODE>playonto</CODE>) but nothing really hard to understand.
+
+<PRE>
+to <A NAME="solitaire">solitaire</A>
+print [Welcome to solitaire]
+instruct
+localmake "allranks [A 2 3 4 5 6 7 8 9 10 J Q K]
+localmake "numranks map "ranknum :allranks
+localmake "suits [H S D C]
+localmake "reds [H D]
+localmake "deckarray (listtoarray (crossmap "word :allranks :suits) 0)
+localmake "upping "false
+catch "exit [forever [onegame cleartext]]
+cleartext
+end
+
+to s
+solitaire
+end
+
+to <A NAME="onegame">onegame</A>
+print [Shuffling, please wait...]
+local [card cards digit pile where]
+localmake "onto []
+local map [word "top ?] :suits
+local cascade 9 [(sentence (word "shown #) (word "hidden #) ?)] []
+localmake "ranks :allranks
+localmake "numstacks 7
+local map [word "num ?] :numranks
+foreach :numranks [make word "num ? 4]
+localmake "hand shuffle 52 :deckarray
+setempty "pile
+initstacks
+foreach :suits [settop ? "]
+redisplay
+catch "endgame [forever [catch "bell [parsecmd]]]
+end
+
+;; Initialization
+
+to instruct 
+print [] print [Here are the commands you can type:]
+type "|    | type (sentence standout "+ standout "=)
+type "|  | print [Deal three cards onto pile]
+instruct1 "P [Play top card from pile]
+instruct1 "R [Redisplay the board]
+instruct1 "? [Retype these instructions]
+instruct1 "card [Play that card]
+instruct1 "M [Move same card again]
+instruct1 "W [Play up as much as possible (Win)]
+instruct1 "G [Give up (start a new game)]
+instruct1 "X [Exit to Logo]
+print [A card consists of a rank:]
+type "|   | print (sentence standout [A 2 3 4 5 6 7 8 9 10 J Q K]
+                            "or standout "T [for 10])
+print [followed by a suit:]
+type "|   | print standout [H S D C]
+print (sentence [or followed by] standout ".
+                [to play all possible suits up])
+print [] print [If you make a mistake, hit delete or backspace.]
+print [] print [To move an entire stack,]
+type "|   | print [hit the shifted stack number:]
+type "|     | print (sentence standout [! @ # $ % ^ &] [for stacks])
+type "|     | print [1 2 3 4 5 6 7]
+print []
+end
+
+to instruct1 :key :meaning
+type "|    |
+type standout :key
+repeat 5-count :key [type "| |]
+print :meaning
+end
+
+to shuffle :len :array
+if :len=0 [output arraytolist :array]
+localmake "choice random :len
+localmake "temp item :choice :array
+setitem :choice :array (item :len-1 :array)
+setitem :len-1 :array :temp
+output shuffle :len-1 :array
+end
+
+to initstacks
+for [num 1 7] [inithidden :num
+               turnup :num]
+end
+
+to inithidden :num
+localmake "name hidden :num
+setempty :name
+repeat :num [push :name deal]
+end
+
+;; Reading and interpreting user commands
+
+to <A NAME="parsecmd">parsecmd</A>
+if emptyp :digit [setcursor [1 22] type "|      | setcursor [1 22]]
+local "char
+make "char uppercase readchar
+if equalp :char "T [parsedigit 1 parsezero stop]
+if memberp :char [1 2 3 4 5 6 7 8 9 A J Q K] [parsedigit :char stop]
+if equalp :char "0 [parsezero stop]
+if memberp :char :suits [play.by.name :char stop]
+if equalp :char ". [allup stop]
+if equalp :char "W [wingame stop]
+if equalp :char "M [again stop]
+if memberp :char [+ =] [hand3 stop]
+if equalp :char "R [redisplay stop]
+if equalp :char "? [helper stop]
+if equalp :char "P [playpile stop]
+if and equalp :char "|(| not emptyp :digit [cheat stop]
+if and equalp :char "|)| not emptyp :digit [newstack stop]
+if memberp :char [! @ # $ % ^ & * ( )] ~
+   [playstack :char [! @ # $ % ^ & * ( )] stop]
+if memberp :char (list "| | char 8 char 127) [rubout stop]
+if equalp :char "G [throw "endgame]
+if equalp :char "X [throw "exit]
+bell
+end
+
+to parsedigit :char
+if not emptyp :digit [bell]
+make "digit :char
+type :digit
+end
+
+to parsezero 
+if not equalp :digit 1 [bell]
+make "digit 10
+type 0
+end
+
+to rubout 
+setcursor [1 22]
+type "|    |
+setcursor [1 22]
+setempty "digit
+end
+
+to bell
+if not :upping [type char 7]
+setempty "digit
+throw "bell
+end
+
+;; Deal three cards from the hand
+
+to hand3 
+if not emptyp :digit [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+repeat 2 [if not emptyp :hand [push "pile deal]]
+dispile dishand
+end
+
+to deal 
+if emptyp :hand [make "hand reverse :pile setempty "pile]
+if emptyp :hand [output []]
+output pop "hand
+end
+
+;; Select card to play by position (pile or stack) or by name
+
+to playpile 
+if emptyp :pile [bell]
+if not emptyp :digit [bell]
+make "card first :pile
+make "where [rempile]
+carddis :card
+playcard
+end
+
+to playstack :which :list
+if not emptyp :digit [bell]
+foreach :list [if equalp :which ? [playstack1 # stop]]
+end
+
+to playstack1 :num
+if greaterp :num :numstacks [bell]
+if stackemptyp shown :num [bell]
+make "card last thing shown :num
+make "where sentence "remshown :num
+carddis :card
+playcard
+end
+
+to play.by.name :char
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+type :char
+wait 0
+make "card word :digit :char
+setempty "digit
+findcard
+if not emptyp :where [playcard]
+end
+
+to findcard 
+if findpile [stop]
+make "where findshown
+if emptyp :where [bell]
+end
+
+to findpile 
+if emptyp :pile [output "false]
+if equalp :card first :pile [make "where [rempile] output "true]
+output "false
+end
+
+to findshown
+for [num 1 :numstacks] ~
+    [if memberp :card thing shown :num [output sentence "remshown :num]]
+output []
+end
+
+;; Figure out all possible places to play card, then pick one
+
+to playcard
+setempty "onto
+if not coveredp [checktop]
+if and not :upping ~
+       or (emptyp :onto) (not upsafep rank :card) ~
+   [checkonto]
+if emptyp :onto [bell]
+run :where
+run first :onto
+end
+
+to coveredp 
+if equalp :where [rempile] [output "false]
+output not equalp :card first thing shown last :where
+end
+
+to upsafep :rank
+if memberp :rank [A 2] [output "true]
+output equalp 0 thing word "num ((ranknum :rank)-2)
+end
+
+to checktop 
+if (ranknum rank :card) = 1 + (ranknum top suit :card) ~
+   [push "onto (list "playtop word "" suit :card)]
+end
+
+to checkonto
+for [num :numstacks 1] ~
+    [ifelse stackemptyp shown :num
+            [checkempty :num]
+            [checkfull :num thing shown :num]]
+end
+
+to checkempty :num
+if equalp rank :card "k [push "onto (list "playonto :num)]
+end
+
+to checkfull :num :stack
+if equalp (redp :card) (redp first :stack) [stop]
+if ((ranknum rank first :stack) = 1 + (ranknum rank :card)) ~
+   [push "onto (list "playonto :num)]
+end
+
+;; Play card, step 1: remove from old position
+
+to rempile 
+make "cards (list (pop "pile))
+dispile
+end
+
+to remshown :num
+setempty "cards
+remshown1 :num (count thing shown :num)
+if stackemptyp shown :num [turnup :num disstack :num]
+end
+
+to remshown1 :num :length
+do.until [push "cards (pop shown :num)] ~
+         [equalp :card first :cards]
+for [i 1 [count :cards]] ~
+    [setcursor list (5*:num - 4) (5+:length-:i) type "|   |]
+end
+
+to turnup :num
+setempty shown :num
+if stackemptyp hidden :num [stop]
+push (shown :num) (pop hidden :num)
+end
+
+;; Play card, step 2: put in new position 
+
+to playtop :suit
+localmake "var word "num ranknum rank :card
+settop :suit rank :card
+distop :suit
+make :var (thing :var)-1
+if (thing :var)=0 [make "ranks butfirst :ranks]
+end
+
+to playonto :num
+localmake "row 4+count thing shown :num
+localmake "col 5*:num-4
+for [i 1 [count :cards]] ~
+    [localmake "card pop "cards
+     push (shown :num) :card
+     setcursor list :col :row+:i
+     carddis :card]
+end
+
+;; Update screen display
+
+to redisplay 
+cleartext
+for [num 1 :numstacks] [disstack :num]
+foreach :suits "distop
+dispile
+dishand
+setcursor [1 22]
+setempty "digit
+end
+
+to disstack :num
+setcursor list (-3 + 5 * :num) 4
+type ifelse stackemptyp hidden :num ["| |] ["-]
+if stackemptyp shown :num [setcursor list (-4 + 5 * :num) 5
+                           type "|   | stop]
+localmake "stack (thing shown :num)
+localmake "col 5*:num-4
+for [i [count :stack] 1] ~
+    [setcursor list :col :i+4
+     carddis pop "stack]
+end
+
+to distop :suit
+if emptyp top :suit [stop]
+if equalp :suit "H [distop1 4 stop]
+if equalp :suit "S [distop1 11 stop]
+if equalp :suit "D [distop1 18 stop]
+distop1 25
+end
+
+to distop1 :col
+setcursor list :col 2
+carddis word (top :suit) :suit
+end
+
+to dispile 
+setcursor [32 23]
+ifelse emptyp :pile [type "|   |] [carddis first :pile]
+end
+
+to dishand 
+setcursor [27 23]
+type count :hand
+type "| |
+end
+
+to carddis :card
+ifelse memberp suit :card :reds [redtype :card] [blacktype :card]
+type "| |
+end
+
+to redtype :word
+type :word
+end
+
+to blacktype :word
+type standout :word
+end
+
+
+;; Miscellaneous user commands
+
+to again
+if not emptyp :digit [bell]
+if emptyp :onto [bell]
+make "where list "remshown last pop "onto
+if emptyp :onto [bell]
+carddis :card
+run :where
+run first :onto
+end
+
+to allup
+if emptyp :digit [bell]
+if equalp :digit 1 [make "digit "a]
+localmake "upping "true
+type ". wait 0
+foreach map [word :digit ?] [H S D C] ~
+        [catch "bell [make "card ?
+                      findcard
+                      if not emptyp :where [playcard]]]
+setempty "digit
+end
+
+to helper
+cleartext 
+instruct
+print standout [type any key to continue]
+ignore rc
+redisplay
+end
+
+to wingame
+type "W
+localmake "cursor cursor
+foreach :ranks [if not upsafep ? [stop]
+                make "digit ? ~
+                allup ~
+                setempty "digit ~
+                setcursor :cursor]
+if equalp (map "top [H S D C]) [K K K K] ~
+   [ct print [you win!] wait 120 throw "endgame]
+end
+
+to newstack
+localmake "num :numstacks+1
+setcursor [1 22] type "|   |
+if not equalp :digit 9 [bell]
+setempty hidden :num
+setempty shown :num
+make "numstacks :num
+setempty "digit
+end
+
+to cheat 
+setcursor [1 22] type "|   |
+if not equalp :digit 8 [bell]
+if and emptyp :hand emptyp :pile [bell]
+push "pile deal
+dispile
+dishand
+setempty "digit
+end
+
+;; Data abstraction (ranks)
+
+to rank :card
+output butlast :card
+end
+
+to ranknum :rank
+if emptyp :rank [output 0]
+if numberp :rank [output :rank]
+if :rank = "A [output 1]
+if :rank = "J [output 11]
+if :rank = "Q [output 12]
+if :rank = "K [output 13]
+end
+
+;; Data abstraction (suits)
+
+to suit :card
+output last :card
+end
+
+to redp :card
+output memberp (suit :card) :reds
+end
+
+;; Data abstraction (tops)
+
+to top :suit
+output thing word "top :suit
+end
+
+to settop :suit :value
+make (word "top :suit) :value
+end
+
+;; Data abstraction (card stacks)
+
+to shown :num
+output word "shown :num
+end
+
+to hidden :num
+output word "hidden :num
+end
+
+;; Data abstraction (pushdown stacks)
+
+to stackemptyp :name
+output emptyp thing :name
+end
+
+to setempty :stack
+make :stack []
+end
+</PRE>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v2ch3/v2ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch5/v2ch5.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch5/prgdat.html b/js/games/nluqo.github.io/~bh/v2ch5/prgdat.html
new file mode 100644
index 0000000..4023574
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch5/prgdat.html
@@ -0,0 +1,499 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 5: Program as Data</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Program as Data</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch4/v2ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch6/v2ch6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+In most programming languages there is a sharp distinction between
+<EM>program</EM> and <EM>data.</EM>  Data are the things you can
+manipulate in your program, things like numbers and letters.  These
+things live in variables, which can be given new values by your
+program.  But the program itself is not subject to manipulation; it's
+something you write ahead of time, and then it remains fixed.
+
+<P>
+In Logo the distinction is not so sharp.  We've made extensive use of one
+mechanism by which a program can manipulate itself: the instruction lists
+that are used as inputs to <CODE>run</CODE>, <CODE>if</CODE>, and so on are
+data that can be computed by a program.  For example, the solitaire program
+in Chapter 4 constructs a list of Logo instruction lists, each of
+which would move a card to some other legal position, and then says
+
+<PRE>
+run first :onto
+</PRE>
+
+<P>
+to move the card to the first such position.
+
+<H2><CODE>Text</CODE> and <CODE>Define</CODE></H2>
+
+<P>
+In this chapter we'll use a pair of more advanced tools that allow a
+program to create more program.  <CODE>Run</CODE> deals with a single
+<EM>instruction;</EM> now we'll be able to examine and create
+<EM>procedures.</EM>
+
+<P>
+<CODE>Text</CODE> is an operation that takes one input, a word.  That word
+must be the name of a user-defined procedure.  The output from
+<CODE>text</CODE> is a list.  The first member of that list is a list
+containing the names of the inputs to the chosen procedure.  (If the
+procedure has no inputs, the list will be empty.)*  The remaining
+members of the output list are instruction lists, one for each line in the
+definition of the procedure.
+
+<P>
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Berkeley Logo allows user-defined
+procedures with <EM>optional</EM> inputs.  For such a procedure, this first
+sublist may contain lists, representing optional inputs, as well as words,
+representing required inputs.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+Here is an example.  Suppose we've defined the procedure
+
+<PRE>
+to opinion :yes :no
+print sentence [I like] :yes
+print sentence [I hate] :no
+end
+</PRE>
+
+<P>
+Here's what the text of that procedure looks like:
+
+<PRE>
+? <U>show text "opinion</U>
+[[yes no] [print sentence [I like] :yes] [print sentence [I hate] :no]]
+</PRE>
+
+<P>
+In this example the output from <CODE>text</CODE> is a list with three
+members.  The first member is a list containing the words <CODE>yes</CODE>
+and <CODE>no</CODE>, the names of <CODE>opinion</CODE>'s inputs.  (Note that
+the colons that are used to indicate inputs in a title line are <EM>not</EM>
+used here.) The second and third members of the output list are instruction
+lists, one for each line in the definition.  (Note that there is no
+<CODE>end</CODE> line in the definition; as I've remarked before, that line
+isn't an instruction in the procedure because <CODE>end</CODE> isn't a
+command.)
+
+<P>
+The opposite of <CODE>text</CODE> is the command <CODE>define</CODE>.  This
+command takes two inputs.  The first must be a word and the second a list.
+The effect of <CODE>define</CODE> is to define a procedure whose name is the
+first input and whose text is the second input.  You can use
+<CODE>define</CODE> to define a new procedure or to change the definition of
+an old one.  For example, I might redefine <CODE>opinion</CODE>:
+
+<PRE>
+? <U>define "opinion [[yes no] [print sentence :yes [is yummy.]]</U>
+                            <U>[print sentence :no [is yucky.]]]</U>
+? <U>opinion [Ice cream] "Cheese</U>
+Ice cream is yummy.
+Cheese is yucky.
+? <U>po "opinion</U>
+to opinion :yes :no
+print sentence :yes [is yummy.]
+print sentence :no [is yucky.]
+end
+</PRE>
+
+<P>
+Instead of replacing an old definition with an entirely new one, we
+can use <CODE>define</CODE> and <CODE>text</CODE> together to change a procedure's
+definition:
+
+<PRE>
+? <U>define "opinion lput [print sentence :no "stinks!] ~</U>
+                       <U>butlast text "opinion</U>
+? <U>opinion "Logo "Basic</U>
+Logo is yummy.
+Basic stinks!
+</PRE>
+
+<P>
+(Of course, I didn't have to redefine the same procedure
+name.  I could have said
+
+<PRE>
+? <U>define "strong.opinion ~</U>
+         <U>lput [print sentence :no "stinks!] butlast text "opinion</U>
+</PRE>
+
+<P>
+and then I would have had two procedures, the unchanged
+<CODE>opinion</CODE> and the new version named <CODE>strong.opinion</CODE>.)
+
+<P>
+It may be instructive to consider the analogy between <EM>variables,</EM>
+which hold data, and <EM>procedures,</EM> which hold instructions.
+Variables are given values with the <CODE>make</CODE> command and examined
+with the operation <CODE>thing</CODE>.  Procedures are given definitions with
+the <CODE>define</CODE> command and examined with the operation
+<CODE>text</CODE>.  (There is no abbreviation for <CODE>text</CODE>-quote,
+however, like the dots abbreviation for <CODE>thing</CODE>-quote.)
+
+<P>
+To illustrate <CODE>define</CODE> and <CODE>text</CODE>, I've used them in
+instructions typed in at top level.  In practice, you wouldn't use
+them that way; it's easier to examine a procedure with <CODE>po</CODE> and to
+change its definition with <CODE>edit</CODE>.  <CODE>Text</CODE> and <CODE>define</CODE>
+are meant to be used not at top level but inside a program.
+
+<H2>Automated Definition</H2>
+
+<P>
+Early in the first volume I defined the operation <CODE>second</CODE> this way:
+
+<PRE>
+to second :thing
+output first butfirst :thing
+end
+</PRE>
+
+<P>
+Suppose I want more operations following this model, to be
+called <CODE>third</CODE>, <CODE>fourth</CODE>, and so on.  I could define them all
+by hand or I could write a program to do it for me:
+
+<PRE>
+to ordinals
+ord1 [second third fourth fifth sixth seventh] [output first butfirst]
+end
+
+to ord1 :names :instr
+if emptyp :names [stop]
+define first :names list [thing] (lput ":thing :instr)
+ord1 (butfirst :names) (lput "butfirst :instr)
+end
+
+? <U>ordinals</U>
+? <U>po "fifth</U>
+to fifth :thing
+output first butfirst butfirst butfirst butfirst :thing
+end
+</PRE>
+
+<P>
+(The name <CODE>ordinals</CODE> comes from the phrase <EM>ordinal
+numbers,</EM> which is what things like &quot;third&quot; are called.  Regular
+numbers like &quot;three&quot; are called <EM>cardinal numbers.</EM>) This procedure
+automatically defined new procedures named <CODE>second</CODE> through
+<CODE>seventh</CODE>, each with one more <CODE>butfirst</CODE> in its
+instruction line.
+
+<H2>A Single-Keystroke Program Generator</H2>
+
+<P>
+A fairly common thing to do in Logo is to write a little program that
+lets you type a single character on the keyboard to carry out some
+instruction.  For example, teachers of very young children sometimes
+use a program that accepts <CODE>F</CODE> to move the turtle forward some
+distance, <CODE>B</CODE> for back, and <CODE>L</CODE> and <CODE>R</CODE> for left and
+right.  What I want to write is a <EM>program-writing program</EM> that
+will accept a name and a list of keystrokes and instructions as
+inputs and define a procedure with that name that understands those
+instructions.
+
+<PRE>
+to onekey :name :list
+local "text
+make "text [[] [local "char] [print [Type ? for help]]
+            [make "char readchar]]
+foreach :list [make "text lput (sentence [if equalp :char]
+                                         (word "" first ?)
+                                         butfirst ?)
+                               :text]
+make "text lput (lput (list "foreach :list ""print)
+                      [if equalp :char "?]) ~
+                :text
+make "text lput (list :name) :text
+define :name :text
+end
+</PRE>
+
+<P>
+If we use this program with the instruction
+
+<PRE>
+onekey "instant [[F [forward 20]] [B [back 20]]
+                 [L [left 15]] [R [right 15]]]
+</PRE>
+
+<P>
+then it creates the following procedure:
+
+<PRE>
+to instant
+local "char
+print [type ? for help]
+make "char readchar
+if equalp :char "F [forward 20]
+if equalp :char "B [back 20]
+if equalp :char "L [left 15]
+if equalp :char "R [right 15]
+if equalp :char "? [foreach [[F [forward 20]] [B [back 20]]
+                             [L [left 15]] [R [right 15]]]
+                            "print]
+instant
+end
+</PRE>
+
+<P>
+In addition to illustrating the use of <CODE>define</CODE>, this program
+demonstrates how <CODE>sentence</CODE>, <CODE>list</CODE>, and <CODE>lput</CODE> can
+all be useful in constructing lists, when you have to combine some
+constant members with some variable members.
+
+<P>
+Of course, if we only want to make one <CODE>instant</CODE> program, it's
+easier just to type it in.  An automatic procedure like <CODE>onekey</CODE>
+is useful when you want to create several different procedures like
+<CODE>instant</CODE>, each with a different &quot;menu&quot; of characters.  For
+example, consider these instructions:
+
+<PRE>
+onekey "instant [[F [forward 20]] [B [back 20]]
+                 [L [left 15]] [R [right 15]] [P [pens]]]
+onekey "pens [[U [penup stop]] [D [pendown stop]] [E [penerase stop]]]
+</PRE>
+
+<P>
+With these definitions, typing <CODE>P</CODE> to <CODE>instant</CODE>
+prepares to accept a pen command from the second list.  In effect,
+<CODE>instant</CODE> recognizes two-letter commands <CODE>PU</CODE> for <CODE>penup</CODE>
+and so on, except that the sequence <CODE>P?</CODE> will display the help
+information for just the pen commands.  Here's another example:
+
+<PRE>
+onekey "tinyturns [[F [forward 20]] [B [back 20]]
+                   [L [left 5]] [R [right 5]] [H [hugeturns]]]
+onekey "hugeturns [[F [forward 20]] [B [back 20]]
+                   [L [left 45]] [R [right 45]] [T [tinyturns]]]
+</PRE>
+
+<H2>Procedure Cross-Reference Listings</H2>
+
+<P>
+When you're working on a very large project, it's easy to lose track
+of which procedure invokes which other one.  We can use the computer
+to help solve this problem by
+creating a <EM>cross-reference listing</EM> for all
+the procedures in a project.  For every procedure
+in the project, a cross-reference listing tells which other procedures
+invoke that one.  If you write long procedures, it can also be helpful
+to list which instruction line in procedure <CODE>A</CODE> invokes procedure
+<CODE>B</CODE>.
+
+<P>
+The general strategy will be to look through the <CODE>text</CODE> of every
+procedure, looking for the name of the procedure we're interested in.
+Suppose we're finding all the references to procedure <CODE>X</CODE> and
+we're looking through procedures <CODE>A</CODE>, <CODE>B</CODE>, and
+<CODE>C</CODE>.  For each line of each procedure, we want to know whether
+the word <CODE>X</CODE> appears in that line.  (Of course you would not
+really name a procedure <CODE>A</CODE> or <CODE>X</CODE>.  You'd use
+meaningful names.  This is just an example.)  We can't, however, just test
+
+<PRE>
+memberp "x :instr
+</PRE>
+
+<P>
+(I'm imagining that the variable <CODE>instr</CODE> contains an
+instruction line.) The reason is that a procedure invocation can be
+part of a <EM>sublist</EM> of the instruction list if <CODE>X</CODE> is
+invoked by way of something like <CODE>if</CODE>.  For example, the word
+<CODE>X</CODE> is not a member of the list
+
+<PRE>
+[if emptyp :list [x :foo stop]]
+</PRE>
+
+<P>
+But it's a member of a member.  (Earlier I made a big fuss about the fact
+that if that instruction were part of procedure <CODE>A</CODE>, it's
+actually <CODE>if</CODE> that invokes <CODE>X</CODE>, not <CODE>A</CODE>.
+That's the true story, for the Logo interpreter.  But for purposes of a
+cross-reference listing, it does us no good to know that <CODE>if</CODE>
+invokes <CODE>X</CODE>; what we want to know is which procedure definition to
+look at if we want to find the instruction that uses <CODE>X</CODE>.)
+
+<P>
+So the first thing we need is a procedure <CODE>submemberp</CODE> that takes
+inputs like those of <CODE>memberp</CODE> but outputs <CODE>true</CODE> if the
+first input is a member of the second, or a member of a member, and so
+on.
+
+<PRE>
+to submemberp :thing :list
+if emptyp :list [output "false]
+if equalp :thing first :list [output "true]
+if listp first :list ~
+   [if submemberp :thing first :list [output "true]]
+output submemberp :thing butfirst :list
+end
+</PRE>
+
+<P>
+Now we want a procedure that will take two words as input, both of
+which are the names of procedures, and will print a list of all the
+references to the first procedure in the text of the second.
+
+<PRE>
+to reference :target :examinee
+ref1 :target :examinee butfirst text :examinee 1
+end
+
+to ref1 :target :examinee :instrs :linenum
+if emptyp :instrs [stop]
+if submemberp :target first :instrs ~
+   [print sentence "|   | (word :examinee "\( :linenum "\) )]
+ref1 :target :examinee butfirst :instrs :linenum+1
+end
+</PRE>
+
+<P>
+<CODE>Reference</CODE> uses <CODE>butfirst text :examinee</CODE> as the third
+input to <CODE>ref1</CODE> to avoid the list of inputs to the procedure we're
+examining.  That's because one of those inputs might have the same name as
+the <CODE>target</CODE> procedure, and we'd get a false indication of
+success.  (In the body of the definition of <CODE>:examinee</CODE>, any
+reference to a variable named <CODE>X</CODE> will not use the word
+<CODE>X</CODE> but rather the word <CODE>"X</CODE> or the word
+<CODE>:X</CODE>.  You may find that statement confusing.  When you type an
+<EM>instruction</EM> like
+
+<PRE>
+print "foo
+</PRE>
+
+<P>
+the Logo evaluator interprets <CODE>"foo</CODE> as a request for the word
+<CODE>foo</CODE>, quoted (as opposed to evaluated).  So <CODE>print</CODE>
+won't print a quotation mark.  But if we look at the <EM>list</EM>
+
+<PRE>
+[print "foo]
+</PRE>
+
+<P>
+then we are not, right now, evaluating it as a Logo
+instruction.  The second member of that list is the word <CODE>"foo</CODE>,
+quote mark and all.)
+
+<P>
+We can still get &quot;false hits,&quot; finding the word <CODE>X</CODE>
+(or whatever procedure name we're looking for) in an instruction list,
+but not being used as a procedure name:
+
+<PRE>
+print [w x y z]
+</PRE>
+
+<P>
+But cases like that will be relatively rare compared to the
+cases of variables and procedures with the same name.
+
+<P>
+The reason I'm printing spaces before the information is that I'm
+working toward a listing that will look like this:
+
+<PRE>
+target1
+   proca(3)
+   procb(1)
+   procc(4)
+target2
+   procb(3)
+   procb(4)
+</PRE>
+
+<P>
+This means that the procedure named <CODE>target1</CODE> is invoked
+in each of the procedures <CODE>proca</CODE>, <CODE>procb</CODE>, and <CODE>procc</CODE>;
+procedure <CODE>target2</CODE> is invoked by <CODE>procb</CODE> on two different
+instruction lines.
+
+<P>
+Okay, now we can find references to one specific procedure within the
+text of another specific procedure.  Now we want to look for
+references to one procedure within <EM>all</EM> the procedures making up
+a project.
+
+<PRE>
+to xref :target :list
+print :target
+foreach :list [reference :target ?]
+end
+</PRE>
+
+<P>
+We're almost done.  Now we want to apply <CODE>xref</CODE> to every
+procedure in the project.  This involves another run through the list
+of projects:
+
+<PRE>
+to xrefall :list
+foreach :list [xref ? :list]
+end
+</PRE>
+
+<P>
+To use this program to make a cross-reference listing of
+itself, you'd say
+
+<PRE>
+xrefall [xrefall xref reference ref1 submemberp]
+</PRE>
+
+<P>
+To cross-reference all of the procedures in your workspace,
+you'd say
+
+<PRE>
+xrefall procedures
+</PRE>
+
+<P>
+If you try this program on a project with a large number of procedures,
+you should expect it to take a <EM>long</EM> time.  If there
+are five procedures, we have to examine each of them for
+references to each of them, so we invoke <CODE>reference</CODE> 25 times.  If
+there are 10 procedures, we invoke <CODE>reference</CODE> 100 times!  In
+general, the number of invocations is the square of the number of
+procedures.  The fancy way to say this is that the program &quot;takes
+quadratic time&quot; or that it &quot;behaves quadratically.&quot;
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch4/v2ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch6/v2ch6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch5/v2ch5.html b/js/games/nluqo.github.io/~bh/v2ch5/v2ch5.html
new file mode 100644
index 0000000..4023574
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch5/v2ch5.html
@@ -0,0 +1,499 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 5: Program as Data</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Program as Data</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch4/v2ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch6/v2ch6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+In most programming languages there is a sharp distinction between
+<EM>program</EM> and <EM>data.</EM>  Data are the things you can
+manipulate in your program, things like numbers and letters.  These
+things live in variables, which can be given new values by your
+program.  But the program itself is not subject to manipulation; it's
+something you write ahead of time, and then it remains fixed.
+
+<P>
+In Logo the distinction is not so sharp.  We've made extensive use of one
+mechanism by which a program can manipulate itself: the instruction lists
+that are used as inputs to <CODE>run</CODE>, <CODE>if</CODE>, and so on are
+data that can be computed by a program.  For example, the solitaire program
+in Chapter 4 constructs a list of Logo instruction lists, each of
+which would move a card to some other legal position, and then says
+
+<PRE>
+run first :onto
+</PRE>
+
+<P>
+to move the card to the first such position.
+
+<H2><CODE>Text</CODE> and <CODE>Define</CODE></H2>
+
+<P>
+In this chapter we'll use a pair of more advanced tools that allow a
+program to create more program.  <CODE>Run</CODE> deals with a single
+<EM>instruction;</EM> now we'll be able to examine and create
+<EM>procedures.</EM>
+
+<P>
+<CODE>Text</CODE> is an operation that takes one input, a word.  That word
+must be the name of a user-defined procedure.  The output from
+<CODE>text</CODE> is a list.  The first member of that list is a list
+containing the names of the inputs to the chosen procedure.  (If the
+procedure has no inputs, the list will be empty.)*  The remaining
+members of the output list are instruction lists, one for each line in the
+definition of the procedure.
+
+<P>
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Berkeley Logo allows user-defined
+procedures with <EM>optional</EM> inputs.  For such a procedure, this first
+sublist may contain lists, representing optional inputs, as well as words,
+representing required inputs.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+Here is an example.  Suppose we've defined the procedure
+
+<PRE>
+to opinion :yes :no
+print sentence [I like] :yes
+print sentence [I hate] :no
+end
+</PRE>
+
+<P>
+Here's what the text of that procedure looks like:
+
+<PRE>
+? <U>show text "opinion</U>
+[[yes no] [print sentence [I like] :yes] [print sentence [I hate] :no]]
+</PRE>
+
+<P>
+In this example the output from <CODE>text</CODE> is a list with three
+members.  The first member is a list containing the words <CODE>yes</CODE>
+and <CODE>no</CODE>, the names of <CODE>opinion</CODE>'s inputs.  (Note that
+the colons that are used to indicate inputs in a title line are <EM>not</EM>
+used here.) The second and third members of the output list are instruction
+lists, one for each line in the definition.  (Note that there is no
+<CODE>end</CODE> line in the definition; as I've remarked before, that line
+isn't an instruction in the procedure because <CODE>end</CODE> isn't a
+command.)
+
+<P>
+The opposite of <CODE>text</CODE> is the command <CODE>define</CODE>.  This
+command takes two inputs.  The first must be a word and the second a list.
+The effect of <CODE>define</CODE> is to define a procedure whose name is the
+first input and whose text is the second input.  You can use
+<CODE>define</CODE> to define a new procedure or to change the definition of
+an old one.  For example, I might redefine <CODE>opinion</CODE>:
+
+<PRE>
+? <U>define "opinion [[yes no] [print sentence :yes [is yummy.]]</U>
+                            <U>[print sentence :no [is yucky.]]]</U>
+? <U>opinion [Ice cream] "Cheese</U>
+Ice cream is yummy.
+Cheese is yucky.
+? <U>po "opinion</U>
+to opinion :yes :no
+print sentence :yes [is yummy.]
+print sentence :no [is yucky.]
+end
+</PRE>
+
+<P>
+Instead of replacing an old definition with an entirely new one, we
+can use <CODE>define</CODE> and <CODE>text</CODE> together to change a procedure's
+definition:
+
+<PRE>
+? <U>define "opinion lput [print sentence :no "stinks!] ~</U>
+                       <U>butlast text "opinion</U>
+? <U>opinion "Logo "Basic</U>
+Logo is yummy.
+Basic stinks!
+</PRE>
+
+<P>
+(Of course, I didn't have to redefine the same procedure
+name.  I could have said
+
+<PRE>
+? <U>define "strong.opinion ~</U>
+         <U>lput [print sentence :no "stinks!] butlast text "opinion</U>
+</PRE>
+
+<P>
+and then I would have had two procedures, the unchanged
+<CODE>opinion</CODE> and the new version named <CODE>strong.opinion</CODE>.)
+
+<P>
+It may be instructive to consider the analogy between <EM>variables,</EM>
+which hold data, and <EM>procedures,</EM> which hold instructions.
+Variables are given values with the <CODE>make</CODE> command and examined
+with the operation <CODE>thing</CODE>.  Procedures are given definitions with
+the <CODE>define</CODE> command and examined with the operation
+<CODE>text</CODE>.  (There is no abbreviation for <CODE>text</CODE>-quote,
+however, like the dots abbreviation for <CODE>thing</CODE>-quote.)
+
+<P>
+To illustrate <CODE>define</CODE> and <CODE>text</CODE>, I've used them in
+instructions typed in at top level.  In practice, you wouldn't use
+them that way; it's easier to examine a procedure with <CODE>po</CODE> and to
+change its definition with <CODE>edit</CODE>.  <CODE>Text</CODE> and <CODE>define</CODE>
+are meant to be used not at top level but inside a program.
+
+<H2>Automated Definition</H2>
+
+<P>
+Early in the first volume I defined the operation <CODE>second</CODE> this way:
+
+<PRE>
+to second :thing
+output first butfirst :thing
+end
+</PRE>
+
+<P>
+Suppose I want more operations following this model, to be
+called <CODE>third</CODE>, <CODE>fourth</CODE>, and so on.  I could define them all
+by hand or I could write a program to do it for me:
+
+<PRE>
+to ordinals
+ord1 [second third fourth fifth sixth seventh] [output first butfirst]
+end
+
+to ord1 :names :instr
+if emptyp :names [stop]
+define first :names list [thing] (lput ":thing :instr)
+ord1 (butfirst :names) (lput "butfirst :instr)
+end
+
+? <U>ordinals</U>
+? <U>po "fifth</U>
+to fifth :thing
+output first butfirst butfirst butfirst butfirst :thing
+end
+</PRE>
+
+<P>
+(The name <CODE>ordinals</CODE> comes from the phrase <EM>ordinal
+numbers,</EM> which is what things like &quot;third&quot; are called.  Regular
+numbers like &quot;three&quot; are called <EM>cardinal numbers.</EM>) This procedure
+automatically defined new procedures named <CODE>second</CODE> through
+<CODE>seventh</CODE>, each with one more <CODE>butfirst</CODE> in its
+instruction line.
+
+<H2>A Single-Keystroke Program Generator</H2>
+
+<P>
+A fairly common thing to do in Logo is to write a little program that
+lets you type a single character on the keyboard to carry out some
+instruction.  For example, teachers of very young children sometimes
+use a program that accepts <CODE>F</CODE> to move the turtle forward some
+distance, <CODE>B</CODE> for back, and <CODE>L</CODE> and <CODE>R</CODE> for left and
+right.  What I want to write is a <EM>program-writing program</EM> that
+will accept a name and a list of keystrokes and instructions as
+inputs and define a procedure with that name that understands those
+instructions.
+
+<PRE>
+to onekey :name :list
+local "text
+make "text [[] [local "char] [print [Type ? for help]]
+            [make "char readchar]]
+foreach :list [make "text lput (sentence [if equalp :char]
+                                         (word "" first ?)
+                                         butfirst ?)
+                               :text]
+make "text lput (lput (list "foreach :list ""print)
+                      [if equalp :char "?]) ~
+                :text
+make "text lput (list :name) :text
+define :name :text
+end
+</PRE>
+
+<P>
+If we use this program with the instruction
+
+<PRE>
+onekey "instant [[F [forward 20]] [B [back 20]]
+                 [L [left 15]] [R [right 15]]]
+</PRE>
+
+<P>
+then it creates the following procedure:
+
+<PRE>
+to instant
+local "char
+print [type ? for help]
+make "char readchar
+if equalp :char "F [forward 20]
+if equalp :char "B [back 20]
+if equalp :char "L [left 15]
+if equalp :char "R [right 15]
+if equalp :char "? [foreach [[F [forward 20]] [B [back 20]]
+                             [L [left 15]] [R [right 15]]]
+                            "print]
+instant
+end
+</PRE>
+
+<P>
+In addition to illustrating the use of <CODE>define</CODE>, this program
+demonstrates how <CODE>sentence</CODE>, <CODE>list</CODE>, and <CODE>lput</CODE> can
+all be useful in constructing lists, when you have to combine some
+constant members with some variable members.
+
+<P>
+Of course, if we only want to make one <CODE>instant</CODE> program, it's
+easier just to type it in.  An automatic procedure like <CODE>onekey</CODE>
+is useful when you want to create several different procedures like
+<CODE>instant</CODE>, each with a different &quot;menu&quot; of characters.  For
+example, consider these instructions:
+
+<PRE>
+onekey "instant [[F [forward 20]] [B [back 20]]
+                 [L [left 15]] [R [right 15]] [P [pens]]]
+onekey "pens [[U [penup stop]] [D [pendown stop]] [E [penerase stop]]]
+</PRE>
+
+<P>
+With these definitions, typing <CODE>P</CODE> to <CODE>instant</CODE>
+prepares to accept a pen command from the second list.  In effect,
+<CODE>instant</CODE> recognizes two-letter commands <CODE>PU</CODE> for <CODE>penup</CODE>
+and so on, except that the sequence <CODE>P?</CODE> will display the help
+information for just the pen commands.  Here's another example:
+
+<PRE>
+onekey "tinyturns [[F [forward 20]] [B [back 20]]
+                   [L [left 5]] [R [right 5]] [H [hugeturns]]]
+onekey "hugeturns [[F [forward 20]] [B [back 20]]
+                   [L [left 45]] [R [right 45]] [T [tinyturns]]]
+</PRE>
+
+<H2>Procedure Cross-Reference Listings</H2>
+
+<P>
+When you're working on a very large project, it's easy to lose track
+of which procedure invokes which other one.  We can use the computer
+to help solve this problem by
+creating a <EM>cross-reference listing</EM> for all
+the procedures in a project.  For every procedure
+in the project, a cross-reference listing tells which other procedures
+invoke that one.  If you write long procedures, it can also be helpful
+to list which instruction line in procedure <CODE>A</CODE> invokes procedure
+<CODE>B</CODE>.
+
+<P>
+The general strategy will be to look through the <CODE>text</CODE> of every
+procedure, looking for the name of the procedure we're interested in.
+Suppose we're finding all the references to procedure <CODE>X</CODE> and
+we're looking through procedures <CODE>A</CODE>, <CODE>B</CODE>, and
+<CODE>C</CODE>.  For each line of each procedure, we want to know whether
+the word <CODE>X</CODE> appears in that line.  (Of course you would not
+really name a procedure <CODE>A</CODE> or <CODE>X</CODE>.  You'd use
+meaningful names.  This is just an example.)  We can't, however, just test
+
+<PRE>
+memberp "x :instr
+</PRE>
+
+<P>
+(I'm imagining that the variable <CODE>instr</CODE> contains an
+instruction line.) The reason is that a procedure invocation can be
+part of a <EM>sublist</EM> of the instruction list if <CODE>X</CODE> is
+invoked by way of something like <CODE>if</CODE>.  For example, the word
+<CODE>X</CODE> is not a member of the list
+
+<PRE>
+[if emptyp :list [x :foo stop]]
+</PRE>
+
+<P>
+But it's a member of a member.  (Earlier I made a big fuss about the fact
+that if that instruction were part of procedure <CODE>A</CODE>, it's
+actually <CODE>if</CODE> that invokes <CODE>X</CODE>, not <CODE>A</CODE>.
+That's the true story, for the Logo interpreter.  But for purposes of a
+cross-reference listing, it does us no good to know that <CODE>if</CODE>
+invokes <CODE>X</CODE>; what we want to know is which procedure definition to
+look at if we want to find the instruction that uses <CODE>X</CODE>.)
+
+<P>
+So the first thing we need is a procedure <CODE>submemberp</CODE> that takes
+inputs like those of <CODE>memberp</CODE> but outputs <CODE>true</CODE> if the
+first input is a member of the second, or a member of a member, and so
+on.
+
+<PRE>
+to submemberp :thing :list
+if emptyp :list [output "false]
+if equalp :thing first :list [output "true]
+if listp first :list ~
+   [if submemberp :thing first :list [output "true]]
+output submemberp :thing butfirst :list
+end
+</PRE>
+
+<P>
+Now we want a procedure that will take two words as input, both of
+which are the names of procedures, and will print a list of all the
+references to the first procedure in the text of the second.
+
+<PRE>
+to reference :target :examinee
+ref1 :target :examinee butfirst text :examinee 1
+end
+
+to ref1 :target :examinee :instrs :linenum
+if emptyp :instrs [stop]
+if submemberp :target first :instrs ~
+   [print sentence "|   | (word :examinee "\( :linenum "\) )]
+ref1 :target :examinee butfirst :instrs :linenum+1
+end
+</PRE>
+
+<P>
+<CODE>Reference</CODE> uses <CODE>butfirst text :examinee</CODE> as the third
+input to <CODE>ref1</CODE> to avoid the list of inputs to the procedure we're
+examining.  That's because one of those inputs might have the same name as
+the <CODE>target</CODE> procedure, and we'd get a false indication of
+success.  (In the body of the definition of <CODE>:examinee</CODE>, any
+reference to a variable named <CODE>X</CODE> will not use the word
+<CODE>X</CODE> but rather the word <CODE>"X</CODE> or the word
+<CODE>:X</CODE>.  You may find that statement confusing.  When you type an
+<EM>instruction</EM> like
+
+<PRE>
+print "foo
+</PRE>
+
+<P>
+the Logo evaluator interprets <CODE>"foo</CODE> as a request for the word
+<CODE>foo</CODE>, quoted (as opposed to evaluated).  So <CODE>print</CODE>
+won't print a quotation mark.  But if we look at the <EM>list</EM>
+
+<PRE>
+[print "foo]
+</PRE>
+
+<P>
+then we are not, right now, evaluating it as a Logo
+instruction.  The second member of that list is the word <CODE>"foo</CODE>,
+quote mark and all.)
+
+<P>
+We can still get &quot;false hits,&quot; finding the word <CODE>X</CODE>
+(or whatever procedure name we're looking for) in an instruction list,
+but not being used as a procedure name:
+
+<PRE>
+print [w x y z]
+</PRE>
+
+<P>
+But cases like that will be relatively rare compared to the
+cases of variables and procedures with the same name.
+
+<P>
+The reason I'm printing spaces before the information is that I'm
+working toward a listing that will look like this:
+
+<PRE>
+target1
+   proca(3)
+   procb(1)
+   procc(4)
+target2
+   procb(3)
+   procb(4)
+</PRE>
+
+<P>
+This means that the procedure named <CODE>target1</CODE> is invoked
+in each of the procedures <CODE>proca</CODE>, <CODE>procb</CODE>, and <CODE>procc</CODE>;
+procedure <CODE>target2</CODE> is invoked by <CODE>procb</CODE> on two different
+instruction lines.
+
+<P>
+Okay, now we can find references to one specific procedure within the
+text of another specific procedure.  Now we want to look for
+references to one procedure within <EM>all</EM> the procedures making up
+a project.
+
+<PRE>
+to xref :target :list
+print :target
+foreach :list [reference :target ?]
+end
+</PRE>
+
+<P>
+We're almost done.  Now we want to apply <CODE>xref</CODE> to every
+procedure in the project.  This involves another run through the list
+of projects:
+
+<PRE>
+to xrefall :list
+foreach :list [xref ? :list]
+end
+</PRE>
+
+<P>
+To use this program to make a cross-reference listing of
+itself, you'd say
+
+<PRE>
+xrefall [xrefall xref reference ref1 submemberp]
+</PRE>
+
+<P>
+To cross-reference all of the procedures in your workspace,
+you'd say
+
+<PRE>
+xrefall procedures
+</PRE>
+
+<P>
+If you try this program on a project with a large number of procedures,
+you should expect it to take a <EM>long</EM> time.  If there
+are five procedures, we have to examine each of them for
+references to each of them, so we invoke <CODE>reference</CODE> 25 times.  If
+there are 10 procedures, we invoke <CODE>reference</CODE> 100 times!  In
+general, the number of invocations is the square of the number of
+procedures.  The fancy way to say this is that the program &quot;takes
+quadratic time&quot; or that it &quot;behaves quadratically.&quot;
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch4/v2ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch6/v2ch6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch6/basic.html b/js/games/nluqo.github.io/~bh/v2ch6/basic.html
new file mode 100644
index 0000000..1723ced
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch6/basic.html
@@ -0,0 +1,1489 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 6: Example: BASIC Compiler</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: BASIC Compiler</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch5/v2ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch7/v2ch7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Program file for this chapter: <A HREF="basic.lg"><CODE>basic</CODE></A>
+
+<P>
+The BASIC programming language was designed by John Kemeny
+and Thomas Kurtz in the late 1960s.  (The name is an acronym for
+Beginner's All-purpose Symbolic Instruction Code.)  It was first implemented
+on a large, central computer facility at Dartmouth; the designers' goal was
+to have a language that all students could use for simple problems, in
+contrast to the arcane programming languages used by most experts at that
+time.
+
+<P>
+A decade later, when the microcomputer was invented, BASIC took on a new
+importance.  Kemeny and Kurtz designed a simple language for the sake of
+the users, but that simplicity also made the language easy for the
+<EM>computer!</EM>  Every programming language requires a computer program to
+translate it into instructions that the computer can carry out.  For example,
+the Logo programs you write are translated by a Logo interpreter.  But Logo
+is a relatively complex language, and a Logo interpreter is a pretty big
+program.  The first microcomputers had only a few thousand bytes of memory.
+(Today's home computers, by contrast, have several million bytes.)  Those
+early personal computers couldn't handle Logo, but it was possible to write
+a BASIC interpreter that would fit them.  As a result, BASIC became the
+near-universal language for amateur computer enthusiasts in the late 1970s
+and early 1980s.
+
+<P>
+Today's personal computers come with translators for a wide variety of
+programming languages, and also with software packages that enable many
+people to accomplish their computing tasks without writing programs
+of their own at all.  BASIC is much less widely used today, although
+it has served as the core for Microsoft's &quot;Visual Basic&quot; language.
+
+<P>
+In this chapter, I want to show how Logo's <CODE>define</CODE> command can be
+used in a program-writing program.  My program will translate BASIC
+programs into Logo programs.  I chose BASIC for the same reason the
+early microcomputers used it:  It's a small language and the translator
+is relatively easy to write.  (Kemeny and Kurtz, the designers of BASIC,
+have criticized the microcomputer implementations as <EM>too</EM> simple and
+as unfaithful to their original goals.  My implementation will share that
+defect, to make the project easier.  Don't use this version as a basis on
+which to judge the language!  For that you should investigate True Basic,
+the version that Kemeny and Kurtz wrote themselves for personal computers.)
+
+<P>
+Here's a typical short BASIC program:
+
+<PRE>
+10 print "Table of Squares"
+20 print
+30 print "How many values would you like?"
+40 input num
+50 for i=1 to num
+60 print i, i*i
+70 next i
+80 end
+</PRE>
+
+<P>
+And here's what happens when we run it:
+
+<PRE>
+Table of Squares
+
+How many values would you like?
+<U>5</U>
+1       1
+2       4
+3       9
+4       16
+5       25
+</PRE>
+
+<H2>A Short Course in BASIC</H2>
+
+<P>
+Each line in the sample BASIC program begins with a <EM>line number.</EM>
+These numbers are used for program editing.  Instead of the modern screen
+editors with which you're familiar, the early versions of BASIC had a very
+primitive editing facility; you could replace a line by typing a new line
+with the same number.  There was no way to replace less than an entire line.
+To delete a line completely, you'd enter a line containing just the number.
+The reason the line numbers in this program are multiples of ten is to leave
+room for inserting new lines.  For example, I could say
+
+<PRE>
+75 print "Have a nice day."
+</PRE>
+
+<P>
+to insert a new line between lines 70 and 80.
+(By the way, the earliest versions of Logo used a similar line numbering
+system, except that each Logo procedure was separately numbered.  The editing
+technique isn't really part of the language design; early systems used
+&quot;line editors&quot; because they had typewriter-like paper terminals instead
+of today's display screens.  I'm using a line editor in this project because
+it's easy to implement!)
+
+<P>
+The BASIC language consists of one or two dozen commands, depending on the
+version used.  My BASIC dialect understands only these ten commands:
+
+<PRE>
+LET variable = value
+PRINT values
+INPUT variables
+FOR variable = value TO value
+NEXT variable
+IF value THEN command
+GOTO linenumber
+GOSUB linenumber
+RETURN
+END
+</PRE>
+
+<P>
+Unlike Logo procedure calls, which consist of the procedure
+name followed by inputs in a uniform format, each BASIC command has its
+own format, sometimes including internal separators such as the equal sign
+and the word <CODE>to</CODE> in the <CODE>for</CODE> command format, or the word <CODE>then</CODE>
+in the <CODE>if</CODE> command format.
+
+<P>
+In some versions of BASIC, including this one, a single line can contain
+more than one command, if the commands are separated with colons.  Thus
+the same program shown earlier could also be written this way:
+
+<PRE>
+10 print "Table of Squares":print
+30 print "How many values would you like?":input num
+50 for i=1 to num : print i, i*i : next i
+80 end
+</PRE>
+
+<P>
+The <CODE>let</CODE> command assigns a value to a variable, like Logo's
+<CODE>make</CODE> procedure.  Unlike Logo, BASIC does not have the rule that
+all inputs are evaluated before applying the command.  In particular, the
+word after <CODE>let</CODE> must be the name of the variable, not an
+expression whose value is the name.  Therefore the name is not quoted.
+Also, a variable can't have the same name as a procedure, so there is no
+need for anything like Logo's use of the colon to indicate a variable
+value.  (This restricted version of BASIC doesn't have named procedures at
+all, like some early microcomputer versions.)
+
+<PRE>
+make "x :y + 3       <EM>(Logo)</EM>
+let x = y + 3        <EM>(BASIC)</EM>
+</PRE>
+
+<P>
+In my subset of BASIC, the value of a variable must be a number.
+More complete BASIC dialects include string variables (like words in Logo)
+and arrays (like Logo's arrays).
+
+<P>
+The value to be assigned to a variable can be computed using an arithmetic
+expression made up of variables, numbers, the arithmetic operators
+<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, and <CODE>/</CODE>, and
+parentheses for grouping.
+
+<P>
+The <CODE>print</CODE> command is similar to Logo's print procedure in that it
+prints a line on the screen.  That line can include any number of values.
+Here is an example <CODE>print</CODE> command:
+
+<PRE>
+print "x = "; x, "y = "; y, "sum = "; x+y
+</PRE>
+
+<P>
+In this example two kinds of values are printed: arithmetic
+values (as in the <CODE>let</CODE> command) and strings.  A <EM>string</EM> is any
+sequence of characters surrounded by quotation marks.
+
+<P>
+Notice that the values in this example are separated by punctuation marks,
+either commas or semicolons.  When a semicolon is used, the two values are
+printed right next to each other, with no space between them.  (That's why
+each of the strings in this example ends with a space.)  When a comma is
+used, BASIC prints a tab character between the two values, so that values on
+different lines will line up to form columns.  (Look again at the table of
+squares example at the beginning of this chapter.)
+
+<P>
+The <CODE>input</CODE> command is the opposite of <CODE>print</CODE>; it reads values from
+the keyboard and assigns them to variables.  There is nothing in Logo exactly
+like <CODE>input</CODE>.  Instead, Logo has <EM>operations</EM> <CODE>readword</CODE> and
+<CODE>readlist</CODE> that output the contents of a line; those values can be
+assigned to variables using <CODE>make</CODE> or can be used in some other way.
+The Logo approach is more flexible, but the early versions of BASIC didn't
+have anything like Logo's operations.  The <CODE>input</CODE> command will also
+accept a string in quotation marks before its list of variables; that string
+is printed as a prompt before BASIC reads from the keyboard.  (BASIC does not
+start a new line after printing the prompt, so the effect is like Logo's
+<CODE>type</CODE> command rather than like <CODE>print</CODE>.)  Here's an example:
+
+<PRE>
+input "Please enter x and y: " x,y
+</PRE>
+
+<P>
+The user can type the values for x and y on the same line,
+separated by spaces, or on separate lines.  BASIC keeps reading lines until
+it has collected enough numbers for the listed variables.  Notice that the
+variable names in the <CODE>input</CODE> command must be separated by commas, not
+by semicolons.
+
+<P>
+The <CODE>for</CODE> and <CODE>next</CODE> commands work together to provide
+a numeric iteration capability like Berkeley Logo's <CODE>for</CODE>
+procedure.  The <CODE>for</CODE> command format includes a variable name, a
+starting value, and an ending value.  (The step value is always 1.)  The
+named variable is given the specified starting value.  If that value is less
+than the ending value, then all of the commands between the <CODE>for</CODE>
+command and the matching <CODE>next</CODE> command (the one with the same
+named variable) are carried out.  Then the variable is increased by 1, and
+the process continues until the ending value is reached.  <CODE>For</CODE>
+and <CODE>next</CODE> pairs with different variables can be nested:
+
+<PRE>
+10 input "Input size: " num
+20 for i = 1 to num
+30 for j = i to num
+40 print i;"  ";j
+50 next j:next i
+60 end
+
+Input size: <U>4</U>
+1  1
+1  2
+1  3
+1  4
+2  2
+2  3
+2  4
+3  3
+3  4
+4  4
+</PRE>
+
+<P>
+Notice that the <CODE>next j</CODE> must come before the <CODE>next i</CODE> so
+that the <CODE>for</CODE>/<CODE>next</CODE> pairs are properly nested.
+
+<P>
+The <CODE>if</CODE> command allows conditional execution, much like Logo's
+<CODE>if</CODE> command, but with a different notation.  Instead of taking
+an instruction list as an input, BASIC's <CODE>if</CODE> uses the keyword
+<CODE>then</CODE> to introduce a single conditional command.  (If you want
+to make more than one command conditional, you must combine <CODE>if</CODE>
+with <CODE>goto</CODE>, described next.)  The value that controls the
+<CODE>if</CODE> must be computed using one of the operators <CODE>=</CODE>,
+<CODE><</CODE>, or <CODE>></CODE> for numeric comparison.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Notice that the equal sign has two
+meanings in BASIC.  In the <CODE>let</CODE> command, it's like Logo's
+<CODE>make</CODE>; in the <CODE>if</CODE> command, it's like Logo's
+<CODE>equalp</CODE>.  In the early 1980s, Logo enthusiasts had fierce
+arguments with BASIC fans, and this sort of notational inconsistency was one
+of the things that drove us crazy!  (More serious concerns were the lack of
+operations and of recursion in the microcomputer versions of
+BASIC.)</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+The <CODE>goto</CODE> command transfers control to the beginning of a command
+line specified by its line number.  It can be used with <CODE>if</CODE> to make a
+sequence of commands conditional:
+
+<PRE>
+10 input x
+20 if x > 0 then goto 100
+30 print "x is negative."
+40 print "x = "; x
+50 goto 200
+100 print "x is positive."
+200 end
+</PRE>
+
+<P>
+The <CODE>gosub</CODE> and <CODE>return</CODE> commands provide a rudimentary procedure
+calling mechanism.  I call it &quot;rudimentary&quot; because the procedures have no
+inputs, and can only be commands, not operations.  Also, the command lines
+that make up the procedure are also part of the main program, so you
+generally need a <CODE>goto</CODE> in the main program to skip over them:
+
+<PRE>
+10 let x=7
+20 gosub 100
+30 let x=9
+40 gosub 100
+50 goto 200
+100 print x, x*x
+110 return
+200 end
+</PRE>
+
+<P>
+Finally, the <CODE>end</CODE> command ends the program.  There must be an <CODE>end</CODE>
+at the end of a BASIC program, and there should not be one anywhere else.
+(In this implementation of BASIC, an <CODE>end</CODE> stops the BASIC program even
+if there are more lines after it.  It's roughly equivalent to a <CODE>throw</CODE>
+to <CODE>toplevel</CODE> in Logo.)
+
+<H2>Using the BASIC Translator</H2>
+
+<P>
+To start the translator, run the Logo procedure <CODE>basic</CODE> with no inputs.
+You will then see the BASIC prompt, which is the word <CODE>READY</CODE> on a line
+by itself.
+
+<P>
+At the prompt you can do either of two things.  If you type a line starting
+with a line number, that line will be entered into your BASIC program.  It
+is inserted in order by line number.  Any previous line with the same number
+will be deleted.  If the line you type contains <EM>only</EM> a line number,
+then the line in the program with that number will be deleted.
+
+<P>
+If your line does not start with a number, then it is taken as an
+<EM>immediate</EM> command, not as part of the program.  This version of
+BASIC recognizes only three immediate commands:  The word <CODE>run</CODE>
+means to run your program, starting from the smallest line number.  The word
+<CODE>list</CODE> means to print out a listing of the program's lines, in
+numeric order.  The word <CODE>exit</CODE> returns to the Logo prompt.
+
+<H2>Overview of the Implementation</H2>
+
+<P>
+There are two kinds of translators for programming languages: compilers and
+interpreters.  The difference is that a compiler translates one language
+(the <EM>source</EM> language) into another (the <EM>target</EM> language),
+leaving the result around so that it can be run repeatedly without being
+translated again.  An interpreter translates each little piece of source
+language into one action in the target language and runs the result, but
+does not preserve a complete translated program in the target language.
+
+<P>
+Ordinarily, the target language for both compilers and interpreters is
+the &quot;native&quot; language of the particular computer you're using, the
+language that is wired into the computer hardware.  This
+<EM>machine language</EM> is the only form in which a program can
+actually be run.  The BASIC compiler in this chapter is quite unrealistic
+in that it uses Logo as the target language, which means that the program
+must go through <EM>another</EM> translation, from Logo to machine
+language, before it can actually be run.  For our purposes, there are
+three advantages to using Logo as the target language.  First, every kind
+of computer has its own machine language, so I'd have to write several
+versions of the compiler to satisfy everyone if I compiled BASIC into
+machine language.  Second, I know you know Logo, so you can understand
+the resulting program, whereas you might not be familiar with any machine
+language.  Third, this approach allows me to
+cheat by leaving out a lot of the complexity of a real compiler.  Logo is
+a &quot;high level&quot; language, which means that it takes care of many details
+for us, such as the allocation of specific locations in the computer's
+memory to hold each piece of information used by the program.  In order to
+compile into machine language, I'd have to pay attention to those details.
+
+<P>
+Why would anyone want an interpreter, if the compiler translates the program
+once and for all, while the interpreter requires retranslation every time
+a command is carried out?  One reason is that an interpreter is easier to
+write, because (just as in the case of a compiler with Logo as the target
+language) many of the details can be left out.  Another reason is that
+traditional compilers work using a <EM>batch</EM> method, which means that you
+must first write the entire program with a text editor, then run the
+compiler to translate the program into machine language, and finally run
+the program.  This is okay for a working program that is used often, but not
+recompiled often.  But when you're creating a program in the first place,
+there is a debugging process that requires frequent modifications to the
+source language program.  If each modification requires a complete
+recompilation, the debugging is slow and frustrating.  That's why
+interpreted languages are often used for teaching--when you're learning
+to program, you spend much more time debugging a program than running the
+final version.
+
+<P>
+The best of both worlds is an <EM>incremental compiler,</EM> a
+compiler that can recompile only the changed part when a small change is
+made to a large program.  For example, Object Logo is a commercial version
+of Logo for the Macintosh in which each procedure is compiled when it is
+defined.  Modifying a procedure requires recompiling that procedure, but not
+recompiling the others.  Object Logo behaves like an interpreter, because the
+user doesn't have to ask explicitly for a procedure to be compiled, but
+programs run faster in Object Logo than in most other versions because each
+procedure is translated only once, rather than on every invocation.
+
+<P>
+The BASIC translator in this chapter is an incremental compiler.  Each
+numbered line is compiled into a Logo procedure as soon as it is typed in.
+If the line number is <CODE>40</CODE> then the resulting procedure will be
+named <CODE>basic%40</CODE>.  The last step in each of these procedures is
+to invoke the procedure for the next line.  The compiler maintains a list of
+all the currently existing line numbers, in order, so the <CODE>run</CODE>
+command is implemented by saying
+
+<PRE>
+run (list (word "basic% first :linenumbers))
+</PRE>
+
+<P>
+Actually, what I just said about each procedure ending with an invocation
+of the next one is slightly simplified.  Suppose the BASIC program starts
+
+<PRE>
+10 let x=3
+20 let y=9
+30 ...
+</PRE>
+
+<P>
+and we translate that into
+
+<PRE>
+to basic%10
+make "%x 3
+basic%20
+end
+
+to basic%20
+make "%y 9
+basic%30
+end
+</PRE>
+
+<P>
+Then what happens if the user adds a new line numbered 15?  We
+would have to recompile line 10 to invoke <CODE>basic%15</CODE> instead of
+<CODE>basic%20</CODE>.  To avoid that, each line is compiled in a way that
+defers the choice of the next line until the program is actually run:
+
+<PRE>
+to basic%10
+make "%x 3
+nextline 10
+end
+
+to basic%20
+make "%y 9
+nextline 20
+end
+</PRE>
+
+<P>
+This solution depends on a procedure <CODE>nextline</CODE> that finds
+the next available line number after its argument:
+
+<PRE>
+to nextline :num
+make "target member :num :linenumbers
+if not emptyp :target [make "target butfirst :target]
+if not emptyp :target [run (list (word "basic% first :target))]
+end
+</PRE>
+
+<P>
+<CODE>Nextline</CODE> uses the Berkeley Logo primitive <CODE>member</CODE>,
+which is like the predicate <CODE>memberp</CODE> except that if the first
+input is found as a member of the second, instead of giving
+<CODE>true</CODE> as its output, it gives the portion of the second input
+starting with the first input:
+
+<PRE>
+? <U>show member "the [when in the course of human events]</U>
+[the course of human events]
+</PRE>
+
+<P>
+If the first input is not a member of the second, <CODE>member</CODE>
+outputs an empty word or list, depending on the type of the second input.
+
+<P>
+The two separate <CODE>emptyp</CODE> tests are used instead of a single <CODE>if</CODE>
+because the desired line number might not be in the list at all, or it might
+be the last one in the list, in which case the <CODE>butfirst</CODE> invocation
+will output an empty list.  (Neither of these cases should arise.  The first
+means that we're running a line that doesn't exist, and the second means
+that the BASIC program doesn't end with an <CODE>end</CODE> line.  But the procedure
+tries to avoid disaster even in these cases.)
+
+<P>
+Look again at the definition of <CODE>basic%10</CODE>.  You'll see that the
+variable named <CODE>x</CODE> in the BASIC program is named <CODE>%x</CODE> in the
+Logo translation.  The compiler uses this renaming technique to ensure that
+the names of variables and procedures in the compiled program don't conflict
+with names used in the compiler itself.  For example, the compiler uses a
+variable named <CODE>linenumbers</CODE> whose value is the list of line numbers.
+What if someone writes a BASIC program that says
+
+<PRE>
+10 let linenumbers = 100
+</PRE>
+
+<P>
+This won't be a problem because in the Logo translation, that
+variable will be named <CODE>%linenumbers</CODE>.
+
+<P>
+The compiler can be divided conceptually into four parts:
+
+<UL>
+<LI>The <EM>reader</EM> divides the characters that the user types into
+meaningful units.  For example, it recognizes that <CODE>let</CODE> is a single
+word, but <CODE>x+1</CODE> should be understood as three separate words.
+
+<LI>The <EM>parser</EM> recognizes the form of each of the ten BASIC
+commands that this dialect understands.  For example, if a command
+starts with <CODE>if</CODE>, the parser expects an expression followed by the word
+<CODE>then</CODE> and another command.
+
+<LI>The <EM>code generator</EM> constructs the actual translation of
+each BASIC command into one or more Logo instructions.
+
+<LI>The <EM>runtime library</EM> contains procedures that are used while the
+translated program is running, rather than during the compilation process.
+The <CODE>nextline</CODE> procedure discussed earlier is an example.
+</UL>
+
+
+<P>
+Real compilers have the same structure, except of course that the code
+generator produces machine language instructions rather than Logo
+instructions.  Also, a professional compiler will include an
+<EM>optimizer</EM> that looks for ways to make the compiled program as
+efficient as possible.
+
+<H2>The Reader</H2>
+
+<P>
+A <EM>reader</EM> is a program that reads a bunch of characters
+(typically one line, although not in every language) and divides those
+characters into meaningful units.  For example, every Logo implementation
+includes a reader that interprets square brackets as indications of
+list grouping.  But some of the rules followed by the Logo reader differ
+among implementations.  For example, can the hyphen character (<CODE>-</CODE>) be
+part of a larger word, or is it always a word by itself?  In a context in
+which it means subtraction, we'd like it to be a word by itself.  For
+example, when you say
+
+<PRE>
+print :x-3
+</PRE>
+
+<P>
+as a Logo instruction, you mean to print three less than the
+value of the variable named <CODE>x</CODE>, not to print the value of a variable
+whose name is the three-letter word <CODE>x-3</CODE>!  On the other hand, if you
+have a list of telephone numbers like this:
+
+<PRE>
+make "phones [555-2368 555-9827 555-8311]
+</PRE>
+
+<P>
+you'd like the <CODE>first</CODE> of that list to be an entire
+phone number, the word <CODE>555-2368</CODE>, not just <CODE>555</CODE>.  Some Logo
+implementations treat every hyphen as a word by itself; some treat
+every hyphen just like a letter, and require that you put spaces around
+a minus sign if you mean subtraction.  Other implementations, including
+Berkeley Logo, use a more complicated rule in which the status of the
+hyphen depends on the context in which it appears, so that both of the
+examples in this paragraph work as desired.
+
+<P>
+In any case, Logo's reader follows rules that are not appropriate for BASIC.
+For example, the colon (<CODE>:</CODE>) is a delimiter in BASIC, so it should be
+treated as a word by itself; in Logo, the colon is paired with the variable
+name that follows it.  In both languages, the quotation mark (<CODE>"</CODE>) is
+used to mark quoted text, but in Logo it comes only at the beginning of
+a word, and the quoted text ends at the next space character, whereas in
+BASIC the quoted text continues until a second, matching quotation mark.
+For these and other reasons, it's desirable to have
+a BASIC-specific reader for use in this project.
+
+<P>
+The rules of the BASIC reader are pretty simple.  Each invocation of
+<CODE>basicread</CODE> reads one line from the keyboard, ending with the Return
+or Enter character.  Within that line, space characters separate words
+but are not part of any word.  A quotation mark begins a quoted word that
+includes everything up to and including the next matching quotation mark.
+Certain characters form words by themselves:
+
+<PRE>
++ - * / = < > ( ) , ; :
+</PRE>
+
+<P>
+All other characters are treated like letters; that is, they
+can be part of multi-character words.
+
+<PRE>
+? <U>show basicread</U>
+<U>30 print x;y;"foo,baz",z:print hello+4</U>
+[30 print x ; y ; "foo,baz" , z : print hello + 4]
+</PRE>
+
+<P>
+Notice that the comma inside the quotation marks is not made
+into a separate word by <CODE>basicread</CODE>.  The other punctuation characters,
+however, appear in the output sentence as one-character words.
+
+<P>
+<CODE>Basicread</CODE> uses the Logo primitive <CODE>readword</CODE> to read a line.
+<CODE>Readword</CODE> can be thought of as a reader with one trivial rule:  The
+only special character is the one that ends a line.  Everything else is
+considered as part of a single long word.  <CODE>Basicread</CODE> examines that
+long word character by character, looking for delimiters, and accumulating
+a sentence of words separated according to the BASIC rules.  The
+implementation of <CODE>basicread</CODE> is straightforward; you can read the
+procedures at the end of this chapter if you're interested.  For now,
+I'll just take it for granted and go on to discuss the more interesting
+parts of the BASIC compiler.
+
+<H2>The Parser</H2>
+
+<P>
+The <EM>parser</EM> is the part of a compiler that figures out the
+structure of each piece of the source program.  For example, if the BASIC
+compiler sees the command
+
+<PRE>
+let x = ( 3 * y ) + 7
+</PRE>
+
+<P>
+it must recognize that this is a <CODE>let</CODE> command, which
+must follow the pattern
+
+<PRE>
+LET variable = value
+</PRE>
+
+<P>
+and therefore <CODE>x</CODE> must be the name of a variable, while
+<CODE>( 3 * y ) + 7</CODE> must be an expression representing a value.  The
+expression must be further parsed into its component pieces.  Both the
+variable name and the expression must be translated into the form they
+will take in the compiled (Logo) program, but that's the job of the
+code generator.
+
+<P>
+In practice, the parser and the code generator are combined into one
+step; as each piece of the source program is recognized, it is translated
+into a corresponding piece of the object program.  So we'll see that most
+of the procedures in the BASIC compiler include parsing instructions and
+code generation instructions.  For example, here is the procedure that
+compiles a <CODE>let</CODE> command:
+
+<PRE>
+to compile.let :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+make "exp expression
+queue "definition (sentence "make (word ""% :var) :exp)
+end
+</PRE>
+
+<P>
+In this procedure, all but the last instruction (the line
+starting with <CODE>queue</CODE>) are parsing the source command.  The last
+line, which we'll come back to later, is generating a Logo <CODE>make</CODE>
+instruction, the translation of the BASIC <CODE>let</CODE> in the object
+program.
+
+<P>
+BASIC was designed to be very easy to parse.  The parser can read a command
+from left to right, one word at a time; at every moment, it knows exactly
+what to expect.  The command must begin with one of the small number of
+command names that make up the BASIC language.  What comes next depends on
+that command name; in the case of <CODE>let</CODE>, what comes next is one word
+(the variable name), then an equal sign, then an expression.  Each
+instruction in the <CODE>compile.let</CODE> procedure handles one of these pieces.
+First we skip over the word <CODE>let</CODE> by removing it from the front of the
+command:
+
+<PRE>
+make "command butfirst :command
+</PRE>
+
+<P>
+Then we read and remember one word, the variable name:
+
+<PRE>
+make "var pop "command
+</PRE>
+
+<P>
+(Remember that the <CODE>pop</CODE> operation removes one member
+from the beginning of a list, returning that member.  In this case
+we are removing the variable name from the entire <CODE>let</CODE> command.)
+Then we make sure there's an equal sign:
+
+<PRE>
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+</PRE>
+
+<P>
+And finally we call a subprocedure to read the expression;
+as we'll see later, that procedure also translates the expression to
+the form it will take in the object program:
+
+<PRE>
+make "exp expression
+</PRE>
+
+<P>
+The parsers for other BASIC commands have essentially the same
+structure as this example.  They repeatedly invoke <CODE>pop</CODE> to
+read one word from the command or <CODE>expression</CODE> to read and
+translate an expression.  (The <CODE>if</CODE> command is a little more
+complicated because it contains another command as a component,
+but that inner command is just compiled as if it occurred by itself.
+We'll look at that process in more detail when we get to the
+code generation part of the compiler.)
+
+<P>
+Each compilation procedure expects a single BASIC command as its
+input.  Remember that a line in a BASIC program can include more
+than one command.  The compiler uses a procedure named <CODE>split</CODE>
+to break up each line into a list of commands:
+
+<PRE>
+? <U>show split [30 print x ; y ; "foo,baz" , z : print hello + 4]</U>
+[30 [print x ; y ; "foo,baz" , z] [print hello + 4]]
+</PRE>
+
+<P>
+<CODE>Split</CODE> outputs a list whose first member is a line
+number; the remaining members are lists, each containing one BASIC
+command.  <CODE>Split</CODE> works by looking for colons within the
+command line.
+
+<P>
+Here is the overall structure of the compiler, but with only the
+instructions related to parsing included:
+
+<PRE>
+to basic
+forever [basicprompt]
+end
+
+to basicprompt
+print "READY
+make "line basicread
+if emptyp :line [stop]
+ifelse numberp first :line [compile split :line] [immediate :line]
+end
+
+to compile :commands
+make "number first :commands
+ifelse emptyp butfirst :commands ~
+       [eraseline :number] ~
+       [makedef (word "basic% :number) butfirst :commands]
+end
+
+to makedef :name :commands
+...
+foreach :commands [run list (word "compile. first ?) ?]
+...
+end
+</PRE>
+
+<P>
+<CODE>Basic</CODE> does some initialization (not shown) and then
+invokes <CODE>basicprompt</CODE> repeatedly.  <CODE>Basicprompt</CODE> calls the
+BASIC reader to read a line; if that line starts with a number, then
+<CODE>split</CODE> is used to transform the line into a list of commands,
+and <CODE>compile</CODE> is invoked with that list as input.  <CODE>Compile</CODE>
+remembers the line number for later use, and then invokes <CODE>makedef</CODE>
+with the list of commands as an input.  I've left out most of the
+instructions in <CODE>makedef</CODE> because they're concerned with code
+generation, but the important part right now is that for each command
+in the list, it invokes a procedure named <CODE>compile.</CODE>something
+based on the first word of the command, which must be one of the
+command names in the BASIC language.
+
+<H2>The Code Generator</H2>
+
+<P>
+Each line of the BASIC source program is going to be compiled into one
+Logo procedure.  (We'll see shortly that the BASIC <CODE>if</CODE> and <CODE>for</CODE>
+commands are exceptions.)  For example, the line
+
+<PRE>
+10 let x = 3 : let y = 4 : print x,y+6
+</PRE>
+
+<P>
+will be compiled into the Logo procedure
+
+<PRE>
+to basic%10
+make "%x 3
+make "%y 4
+type :%x
+type char 9
+type :%y + 6
+print []
+nextline 10
+end
+</PRE>
+
+<P>
+Each of the three BASIC commands within the source line
+contributes one or more instructions to the object procedure.  Each
+<CODE>let</CODE> command is translated into a <CODE>make</CODE> instruction; the
+<CODE>print</CODE> command is translated into three <CODE>type</CODE> instructions
+and a <CODE>print</CODE> instruction.  (The last instruction line in the
+procedure, the invocation of <CODE>nextline</CODE>, does not come from
+any of the BASIC commands, but is automatically part of the translation
+of every BASIC command line.)
+
+<P>
+To generate this object procedure, the BASIC compiler is going to have
+to invoke Logo's <CODE>define</CODE> primitive, this way:
+
+<PRE>
+define "basic%10 [[] [make "%x 3] [make "%y 4] ... [nextline 10]]
+</PRE>
+
+<P>
+Of course, these actual inputs do not appear explicitly in
+the compiler!  Rather, the inputs to <CODE>define</CODE> are variables that
+have the desired values:
+
+<PRE>
+define :name :definition
+</PRE>
+
+<P>
+The variable <CODE>name</CODE> is an input to <CODE>makedef</CODE>, as we've
+seen earlier.  The variable <CODE>definition</CODE> is created within
+<CODE>makedef</CODE>.  It starts out as a list containing just the empty
+list, because the first sublist of the input to <CODE>define</CODE> is the
+list of the names of the desired inputs to <CODE>basic%10</CODE>, but it has
+no inputs.  The procedures within the compiler that parse each of the
+commands on the source line will also generate object code (that is, Logo
+instructions) by appending those instructions to the value of
+<CODE>definition</CODE> using Logo's <CODE>queue</CODE> command.
+<CODE>Queue</CODE> takes two inputs: the name of a variable whose value is
+a list, and a new member to be added at the end of the list.  Its effect is
+to change the value of the variable to be the extended list.
+
+<P>
+Look back at the definition of <CODE>compile.let</CODE> above.  Earlier we
+considered the parsing instructions within that procedure, but deferred
+discussion of the last instruction:
+
+<PRE>
+queue "definition (sentence "make (word ""% :var) :exp)
+</PRE>
+
+<P>
+Now we can understand what this does:  It generates a Logo
+<CODE>make</CODE> instruction and appends that instruction to the object
+procedure definition in progress.
+
+<P>
+We can now also think about the output from the <CODE>expression</CODE> procedure.
+Its job is to parse a BASIC expression and to translate it into the
+corresponding Logo expression.  This part of the compiler is one of the
+least realistic.  A real compiler would have to think about such issues as
+the precedence of arithmetic operations; for example, an expression like
+<CODE>3+x*4</CODE> must be translated into two machine language instructions, first
+one that multiplies <CODE>x</CODE> by 4, and then one that adds the result of that
+multiplication to 3.  But the Logo interpreter already handles that aspect
+of arithmetic for us, so all <CODE>expression</CODE> has to do is to translate
+variable references like <CODE>x</CODE> into the Logo form <CODE>:%x</CODE>.
+
+<PRE>
+? <U>show expression [3 + x * 4]</U>
+[3 + :%x * 4]
+</PRE>
+
+<P>
+(We'll take a closer look at translating arithmetic expressions
+in the Pascal compiler found in the third volume of this series,
+<A HREF="../v3-toc2.html"><EM>Beyond Programming.</EM></A>)
+
+<P>
+We are now ready to look at the complete version of <CODE>makedef</CODE>:
+
+<PRE>
+to makedef :name :commands
+make "definition [[]]
+foreach :commands [run list (word "compile. first ?) ?]
+queue "definition (list "nextline :number)
+define :name :definition
+make "linenumbers insert :number :linenumbers
+end
+</PRE>
+
+<P>
+I hope you'll find this straightforward.  First we create
+an empty definition.  Then, for each BASIC command on the line, we
+append to that definition whatever instructions are generated by
+the code generating instructions for that command.  After all the
+BASIC commands have been compiled, we add an invocation of <CODE>nextline</CODE>
+to the definition.  Now we can actually define the Logo procedure whose
+text we've been accumulating.  The last instruction updates the list
+of line numbers that <CODE>nextline</CODE> uses to find the next BASIC command
+line when the compiled program is running.
+
+<P>
+In a sense, this is the end of the story.  My purpose in this chapter
+was to illustrate how <CODE>define</CODE> can be used in a significant project,
+and I've done that.  But there are a few more points I should explain
+about the code generation for some specific BASIC commands, to complete
+your understanding of the compiler.
+
+<P>
+One such point is about the difference between <CODE>goto</CODE> and
+<CODE>gosub</CODE>.  Logo doesn't have anything like a <CODE>goto</CODE>
+mechanism; both <CODE>goto</CODE> and <CODE>gosub</CODE> must be implemented
+by invoking the procedure corresponding to the given line number.  The
+difference is that in the case of <CODE>goto</CODE>, we want to invoke that
+procedure and not come back!  The solution is to compile the BASIC command
+
+<PRE>
+goto 40
+</PRE>
+
+<P>
+into the Logo instructions
+
+<PRE>
+basic%40 stop
+</PRE>
+
+<P>
+In effect, we are calling line 40 as a subprocedure, but
+when it returns, we're finished.  Any additional Logo instructions
+generated for the same line after the <CODE>goto</CODE> (including the
+invocation of <CODE>nextline</CODE> that's generated automatically for
+every source line) will be ignored because of the <CODE>stop</CODE>.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In fact, the Berkeley Logo interpreter
+is clever enough to notice that there is a <CODE>stop</CODE> instruction
+after the invocation of <CODE>basic%40</CODE>, and it arranges things so
+that there is no &quot;return&quot; from that procedure.  This makes things a little
+more efficient, but doesn't change the meaning of the
+program.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+The next tricky part of the compiler has to do with the <CODE>for</CODE> and
+<CODE>next</CODE> commands.  Think first about <CODE>next</CODE>.  It must
+increment the value of the given variable, test that value against a
+remembered limit, and, if the limit has not been reached, go to... where?
+The <CODE>for</CODE> loop continues with the BASIC command just after the
+<CODE>for</CODE> command itself.  That might be in the middle of a line, so
+<CODE>next</CODE> can't just remember a line number and invoke
+<CODE>basic%N</CODE> for line number N.  To solve this problem, the
+line containing the <CODE>for</CODE> command is split into two Logo
+procedures, one containing everything up to and including the
+<CODE>for</CODE>, and one for the rest of the line.  For example, the line
+
+<PRE>
+30 let x = 3 : for i = 1 to 5 : print i,x : next i
+</PRE>
+
+<P>
+is translated into
+
+<PRE>
+to basic%30
+make "%x 3
+make "%i 1
+make "let%i 5
+make "next%i [%g1]
+%g1
+end
+
+to %g1
+type :%i
+type char 9
+type :%x
+print []
+make "%i :%i + 1
+if not greaterp :%i :let%i [run :next%i stop]
+nextline 30
+end
+</PRE>
+
+<P>
+The first <CODE>make</CODE> instruction in <CODE>basic%30</CODE> is the
+translation of the <CODE>let</CODE> command.  The remaining four lines are
+the translation of the <CODE>for</CODE> command; it must give an initial
+value to the variable <CODE>i</CODE>, remember the limit value 5, and
+remember the Logo procedure to be used for looping.  That latter procedure
+is named <CODE>%g1</CODE> in this example.  The percent sign is used for the
+usual reason, to ensure that the names created by the compiler don't
+conflict with names in the compiler itself.  The <CODE>g1</CODE> part is a
+<EM>generated symbol,</EM> created by invoking the Berkeley Logo primitive
+operation <CODE>gensym</CODE>.  Each invocation of <CODE>gensym</CODE>
+outputs a new symbol, first <CODE>g1</CODE>, then <CODE>g2</CODE>, and so on.
+
+<P>
+The first four instructions in procedure <CODE>%g1</CODE> (three
+<CODE>type</CODE>s and a <CODE>print</CODE>) are the translation of the
+BASIC <CODE>print</CODE> command.  The next two instructions are the
+translation of the <CODE>next</CODE> command; the <CODE>make</CODE>
+instruction increments <CODE>i</CODE>, and the <CODE>if</CODE> instruction
+tests whether the limit has been passed, and if not, invokes the looping
+procedure <CODE>%g1</CODE> again.  (Why does this say
+<CODE>run :next%i</CODE> instead of just <CODE>%g1</CODE>?  Remember that
+the name <CODE>%g1</CODE> was created during the compilation of the
+<CODE>for</CODE> command.  When we get around to compiling the
+<CODE>next</CODE> command, the code generator has no way to remember which
+generated symbol was used by the corresponding <CODE>for</CODE>.  Instead it
+makes reference to a variable <CODE>next%i</CODE>, named after the variable
+given in the <CODE>next</CODE> command itself, whose value is the name of
+the procedure to run.  Why not just call that procedure itself
+<CODE>next%i</CODE> instead of using a generated symbol?  The trouble is
+that there might be more than one pair of <CODE>for</CODE> and
+<CODE>next</CODE> commands in the same BASIC program using the same
+variable, and each of them must have its own looping procedure name.)
+
+<P>
+There is a slight complication in the <CODE>print</CODE> and
+<CODE>input</CODE> commands to deal with quoted character strings.  The
+trouble is that Logo's idea of a word ends with a space, so it's not easy to
+translate
+
+<PRE>
+20 print "hi there"
+</PRE>
+
+<P>
+into a Logo instruction in which the string is explicitly
+present in the instruction.  Instead, the BASIC compiler creates a
+Logo global variable with a generated name, and uses that variable
+in the compiled Logo instructions.
+
+<P>
+The trickiest compilation problem comes from the <CODE>if</CODE> command, because
+it includes another command as part of itself.  That included command might
+be translated into several Logo instructions, all of which should be
+made to depend on the condition that the <CODE>if</CODE> is testing.  The solution
+is to put the translation of the inner command into a separate procedure,
+so that the BASIC command line
+
+<PRE>
+50 if x<6 then print x, x*x
+</PRE>
+
+<P>
+is translated into the two Logo procedures
+
+<PRE>
+to basic%50
+if :%x < 6 [%g2]
+nextline 50
+end
+
+to %g2
+type :%x
+type char 9
+type :%x * :%x
+print []
+end
+</PRE>
+
+<P>
+Unfortunately, this doesn't quite work if the inner command is
+a <CODE>goto</CODE>.  If we were to translate
+
+<PRE>
+60 if :foo < 10 then goto 200
+</PRE>
+
+<P>
+into
+
+<PRE>
+to basic%60
+if :%foo < 10 [%g3]
+nextline 60
+end
+
+to %g3
+basic%200 stop
+end
+</PRE>
+
+<P>
+then the <CODE>stop</CODE> inside <CODE>%g3</CODE> would stop only <CODE>%g3</CODE>
+itself, not <CODE>basic%60</CODE> as desired.  So the code generator for <CODE>if</CODE>
+checks to see whether the result of compiling the inner command is a single
+Logo instruction line; if so, that line is used directly in the compiled
+Logo <CODE>if</CODE> rather than diverted into a subprocedure:
+
+<PRE>
+to basic%60
+if :%foo < 10 [basic%200 stop]
+nextline 60
+end
+</PRE>
+
+<P>
+How does the code generator for <CODE>if</CODE> divert the result of compiling
+the inner command away from the definition of the overall BASIC command
+line?  Here is the relevant part of the compiler:
+
+<PRE>
+to compile.if :command
+make "command butfirst :command
+make "exp expression
+make "delimiter pop "command
+if not equalp :delimiter "then [(throw "error [Need then after if.])]
+queue "definition (sentence "if :exp (list c.if1))
+end
+
+to c.if1
+local "definition
+make "definition [[]]
+run list (word "compile. first :command) :command
+ifelse (count :definition) = 2 ~
+       [output last :definition] ~
+       [make "newname word "% gensym
+        define :newname :definition
+	output (list :newname)]
+end
+</PRE>
+
+<P>
+The first few lines of this are straightforwardly parsing the
+part of the BASIC <CODE>if</CODE> command up to the word <CODE>then</CODE>.  What
+happens next is a little tricky; a subprocedure <CODE>c.if1</CODE> is invoked
+to parse and translate the inner command.  It has to be a subprocedure
+because it creates a local variable named <CODE>definition</CODE>; when the
+inner command is compiled, this local variable &quot;steals&quot; the generated
+code.  If there is only one line of generated code, then <CODE>c.if1</CODE> outputs
+that line; if more than one, then <CODE>c.if1</CODE> creates a subprocedure
+and outputs an instruction to invoke that subprocedure.  This technique
+depends on Logo's dynamic scope, so that references to the variable
+named <CODE>definition</CODE> in other parts of the compiler (such as, for
+example, <CODE>compile.print</CODE> or <CODE>compile.goto</CODE>) will refer to this
+local version.
+
+<H2>The Runtime Library</H2>
+
+<P>
+We've already seen the most important part of the runtime library: the
+procedure <CODE>nextline</CODE> that gets the compiled program from one line
+to the next.
+
+<P>
+There is only one more procedure needed as runtime support; it's called
+<CODE>readvalue</CODE> and it's used by the BASIC <CODE>input</CODE>
+command.  In <CODE>BASIC</CODE>, data input is independent of lines.  If a
+single <CODE>input</CODE> command includes two variables, the user can type
+the two desired values on separate lines or on a single line.  Furthermore,
+two <EM>separate</EM> <CODE>input</CODE> commands can read values from a
+single line, if there are still values left on the line after the first
+<CODE>input</CODE> has been satisfied.  <CODE>Readvalue</CODE> uses a global
+variable <CODE>readline</CODE> whose value is whatever's still available
+from the last data input line, if any.  If there is nothing available, it
+reads a new line of input.
+
+<P>
+A more realistic BASIC implementation would include runtime library
+procedures to compute built-in functions (the equivalent to Logo's
+primitive operations) such as absolute value or the trigonometric
+functions.
+
+<H2>Further Explorations</H2>
+
+<P>
+This BASIC compiler leaves out many features of a complete implementation.
+In a real BASIC, a string can be the value of a variable, and there are
+string operations such as concatenation and substring extraction analogous
+to the arithmetic operations for numbers.  The BASIC programmer can create
+an array of numbers, or an array of strings.  In some versions of BASIC,
+the programmer can define named subprocedures, just as in Logo.  For the
+purposes of this chapter, I wanted to make the compiler as simple as possible
+and still have a usable language.  If you want to extend the compiler, get
+a BASIC textbook and start implementing features.
+
+<P>
+It's also possible to expand the immediate command capabilities of the
+compiler.  In most BASIC implementations, for example, you can say
+<CODE>list 100-200</CODE> to list only a specified range of lines within the
+source program.
+
+<P>
+A much harder project would be to replace the code generator in this
+compiler with one that generates machine language for your computer.
+Instead of using <CODE>define</CODE> to create Logo procedures, your compiler
+would then write machine language instructions into a data file.
+To do this, you must learn quite a lot about how machine language
+programs are run on your computer!
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch5/v2ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch7/v2ch7.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<P>
+I haven't discussed every detail of the program.  For example, you may
+want to trace through what happens when you ask to delete a line from
+the BASIC source program.  Here is the complete compiler.
+
+<PRE>
+to basic
+make "linenumbers []
+make "readline []
+forever [basicprompt]
+end
+
+to basicprompt
+print []
+print "READY
+print []
+make "line basicread
+if emptyp :line [stop]
+ifelse numberp first :line [compile split :line] [immediate :line]
+end
+
+to compile :commands
+make "number first :commands
+make :number :line
+ifelse emptyp butfirst :commands ~
+       [eraseline :number] ~
+       [makedef (word "basic% :number) butfirst :commands]
+end
+
+to makedef :name :commands
+make "definition [[]]
+foreach :commands [run list (word "compile. first ?) ?]
+queue "definition (list "nextline :number)
+define :name :definition
+make "linenumbers insert :number :linenumbers
+end
+
+to insert :num :list
+if emptyp :list [output (list :num)]
+if :num = first :list [output :list]
+if :num < first :list [output fput :num :list]
+output fput first :list (insert :num butfirst :list)
+end
+
+to eraseline :num
+make "linenumbers remove :num :linenumbers
+end
+
+to immediate :line
+if equalp :line [list] [foreach :linenumbers [print thing ?] stop]
+if equalp :line [run] [run (list (word "basic% first :linenumbers))
+                       stop]
+if equalp :line [exit] [throw "toplevel]
+print sentence [Invalid command:] :line
+end
+
+;; Compiling each BASIC command
+
+to compile.end :command
+queue "definition [stop]
+end
+
+to compile.goto :command
+queue "definition (list (word "basic% last :command) "stop)
+end
+
+to compile.gosub :command
+queue "definition (list (word "basic% last :command))
+end
+
+to compile.return :command
+queue "definition [stop]
+end
+
+to compile.print :command
+make "command butfirst :command
+while [not emptyp :command] [c.print1]
+queue "definition [print []]
+end
+
+to c.print1
+make "exp expression
+ifelse equalp first first :exp "" ~
+       [make "sym gensym
+        make word "%% :sym butfirst butlast first :exp
+        queue "definition list "type word ":%% :sym] ~
+       [queue "definition fput "type :exp]
+if emptyp :command [stop]
+make "delimiter pop "command
+if equalp :delimiter ", [queue "definition [type char 9] stop]
+if equalp :delimiter "\; [stop]
+(throw "error [Comma or semicolon needed in print.])
+end
+
+to compile.input :command
+make "command butfirst :command
+if equalp first first :command "" ~
+   [make "sym gensym
+    make "prompt pop "command
+    make word "%% :sym butfirst butlast :prompt
+    queue "definition list "type word ":%% :sym]
+while [not emptyp :command] [c.input1]
+end
+
+to c.input1
+make "var pop "command
+queue "definition (list "make (word ""% :var) "readvalue)
+if emptyp :command [stop]
+make "delimiter pop "command
+if not equalp :delimiter ", (throw "error [Comma needed in input.])
+end
+
+to compile.let :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+make "exp expression
+queue "definition (sentence "make (word ""% :var) :exp)
+end
+
+to compile.for :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = after for.])]
+make "start expression
+make "delimiter pop "command
+if not equalp :delimiter "to [(throw "error [Need to after for.])]
+make "end expression
+queue "definition (sentence "make (word ""% :var) :start)
+queue "definition (sentence "make (word ""let% :var) :end)
+make "newname word "% gensym
+queue "definition (sentence "make (word ""next% :var)
+                                  (list (list :newname)))
+queue "definition (list :newname)
+define :name :definition
+make "name :newname
+make "definition [[]]
+end
+
+to compile.next :command
+make "command butfirst :command
+make "var pop "command
+queue "definition (sentence "make (word ""% :var) (word ":% :var) [+ 1])
+queue "definition (sentence [if not greaterp]
+                            (word ":% :var) (word ":let% :var)
+                            (list (list "run (word ":next% :var)
+                                        "stop)))
+end
+
+to compile.if :command
+make "command butfirst :command
+make "exp expression
+make "delimiter pop "command
+if not equalp :delimiter "then [(throw "error [Need then after if.])]
+queue "definition (sentence "if :exp (list c.if1))
+end
+
+to c.if1
+local "definition
+make "definition [[]]
+run list (word "compile. first :command) :command
+ifelse (count :definition) = 2 ~
+       [output last :definition] ~
+       [make "newname word "% gensym
+        define :newname :definition
+	output (list :newname)]
+end
+
+;; Compile an expression for LET, IF, PRINT, or FOR
+
+to expression
+make "expr []
+make "token expr1
+while [not emptyp :token] [queue "expr :token
+                           make "token expr1]
+output :expr
+end
+
+to expr1
+if emptyp :command [output []]
+make "token pop "command
+if memberp :token [+ - * / = < > ( )] [output :token]
+if memberp :token [, \; : then to] [push "command :token  output []]
+if numberp :token [output :token]
+if equalp first :token "" [output :token]
+output word ":% :token
+end
+
+
+
+;; reading input
+
+to basicread
+output basicread1 readword [] "
+end
+
+to basicread1 :input :output :token
+if emptyp :input [if not emptyp :token [push "output :token]
+                  output reverse :output]
+if equalp first :input "| | [if not emptyp :token [push "output :token]
+                             output basicread1 (butfirst :input)
+                                               :output "]
+if equalp first :input "" [if not emptyp :token [push "output :token]
+                             output breadstring butfirst :input
+                                                :output "]
+if memberp first :input [+ - * / = < > ( ) , \; :] ~
+   [if not emptyp :token [push "output :token]
+    output basicread1 (butfirst :input) (fput first :input :output) "]
+output basicread1 (butfirst :input) :output (word :token first :input)
+end
+
+to breadstring :input :output :string
+if emptyp :input [(throw "error [String needs ending quote.])]
+if equalp first :input "" ~
+   [output basicread1 (butfirst :input)
+                      (fput (word "" :string "") :output)
+                      "]
+output breadstring (butfirst :input) :output (word :string first :input)
+end
+
+to split :line
+output fput first :line split1 (butfirst :line) [] []
+end
+
+to split1 :input :output :command
+if emptyp :input [if not emptyp :command [push "output reverse :command]
+                  output reverse :output]
+if equalp first :input ": [if not emptyp :command
+                              [push "output reverse :command]
+                           output split1 (butfirst :input) :output []]
+output split1 (butfirst :input) :output (fput first :input :command)
+end
+
+;; Runtime library
+
+to nextline :num
+make "target member :num :linenumbers
+if not emptyp :target [make "target butfirst :target]
+if not emptyp :target [run (list (word "basic% first :target))]
+end
+
+to readvalue
+while [emptyp :readline] [make "readline basicread]
+output pop "readline
+end
+</PRE>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch5/v2ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch7/v2ch7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch6/basic.lg b/js/games/nluqo.github.io/~bh/v2ch6/basic.lg
new file mode 100644
index 0000000..92b3936
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch6/basic.lg
@@ -0,0 +1,241 @@
+to basic
+make "linenumbers []
+make "readline []
+forever [basicprompt]
+end
+
+to basicprompt
+print []
+print "READY
+print []
+make "line basicread
+if emptyp :line [stop]
+ifelse numberp first :line [compile split :line] [immediate :line]
+end
+
+to compile :commands
+make "number first :commands
+make :number :line
+ifelse emptyp butfirst :commands ~
+       [eraseline :number] ~
+       [makedef (word "basic% :number) butfirst :commands]
+end
+
+to makedef :name :commands
+make "definition [[]]
+foreach :commands [run list (word "compile. first ?) ?]
+queue "definition (list "nextline :number)
+define :name :definition
+make "linenumbers insert :number :linenumbers
+end
+
+to insert :num :list
+if emptyp :list [output (list :num)]
+if :num = first :list [output :list]
+if :num < first :list [output fput :num :list]
+output fput first :list (insert :num butfirst :list)
+end
+
+to eraseline :num
+make "linenumbers remove :num :linenumbers
+end
+
+to immediate :line
+if equalp :line [list] [foreach :linenumbers [print thing ?] stop]
+if equalp :line [run] [run (list (word "basic% first :linenumbers))
+                       stop]
+if equalp :line [exit] [throw "toplevel]
+print sentence [Invalid command:] :line
+end
+
+;; Compiling each BASIC command
+
+to compile.end :command
+queue "definition [stop]
+end
+
+to compile.goto :command
+queue "definition (list (word "basic% last :command) "stop)
+end
+
+to compile.gosub :command
+queue "definition (list (word "basic% last :command))
+end
+
+to compile.return :command
+queue "definition [stop]
+end
+
+to compile.print :command
+make "command butfirst :command
+while [not emptyp :command] [c.print1]
+queue "definition [print []]
+end
+
+to c.print1
+make "exp expression
+ifelse equalp first first :exp "" ~
+       [make "sym gensym
+        make word "%% :sym butfirst butlast first :exp
+        queue "definition list "type word ":%% :sym] ~
+       [queue "definition fput "type :exp]
+if emptyp :command [stop]
+make "delimiter pop "command
+if equalp :delimiter ", [queue "definition [type char 9] stop]
+if equalp :delimiter "\; [stop]
+(throw "error [Comma or semicolon needed in print.])
+end
+
+to compile.input :command
+make "command butfirst :command
+if equalp first first :command "" ~
+   [make "sym gensym
+    make "prompt pop "command
+    make word "%% :sym butfirst butlast :prompt
+    queue "definition list "type word ":%% :sym]
+while [not emptyp :command] [c.input1]
+end
+
+to c.input1
+make "var pop "command
+queue "definition (list "make (word ""% :var) "readvalue)
+if emptyp :command [stop]
+make "delimiter pop "command
+if not equalp :delimiter ", (throw "error [Comma needed in input.])
+end
+
+to compile.let :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+make "exp expression
+queue "definition (sentence "make (word ""% :var) :exp)
+end
+
+to compile.for :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = after for.])]
+make "start expression
+make "delimiter pop "command
+if not equalp :delimiter "to [(throw "error [Need to after for.])]
+make "end expression
+queue "definition (sentence "make (word ""% :var) :start)
+queue "definition (sentence "make (word ""let% :var) :end)
+make "newname word "% gensym
+queue "definition (sentence "make (word ""next% :var)
+                                  (list (list :newname)))
+queue "definition (list :newname)
+define :name :definition
+make "name :newname
+make "definition [[]]
+end
+
+to compile.next :command
+make "command butfirst :command
+make "var pop "command
+queue "definition (sentence "make (word ""% :var) (word ":% :var) [+ 1])
+queue "definition (sentence [if not greaterp]
+                            (word ":% :var) (word ":let% :var)
+                            (list (list "run (word ":next% :var)
+                                        "stop)))
+end
+
+to compile.if :command
+make "command butfirst :command
+make "exp expression
+make "delimiter pop "command
+if not equalp :delimiter "then [(throw "error [Need then after if.])]
+queue "definition (sentence "if :exp (list c.if1))
+end
+
+to c.if1
+local "definition
+make "definition [[]]
+run list (word "compile. first :command) :command
+ifelse (count :definition) = 2 ~
+       [output last :definition] ~
+       [make "newname word "% gensym
+        define :newname :definition
+	output (list :newname)]
+end
+
+;; Compile an expression for LET, IF, PRINT, or FOR
+
+to expression
+make "expr []
+make "token expr1
+while [not emptyp :token] [queue "expr :token
+                           make "token expr1]
+output :expr
+end
+
+to expr1
+if emptyp :command [output []]
+make "token pop "command
+if memberp :token [+ - * / = < > ( )] [output :token]
+if memberp :token [, \; : then to] [push "command :token  output []]
+if numberp :token [output :token]
+if equalp first :token "" [output :token]
+output word ":% :token
+end
+
+
+
+;; reading input
+
+to basicread
+output basicread1 readword [] "
+end
+
+to basicread1 :input :output :token
+if emptyp :input [if not emptyp :token [push "output :token]
+                  output reverse :output]
+if equalp first :input "| | [if not emptyp :token [push "output :token]
+                             output basicread1 (butfirst :input)
+                                               :output "]
+if equalp first :input "" [if not emptyp :token [push "output :token]
+                             output breadstring butfirst :input
+                                                :output "]
+if memberp first :input [+ - * / = < > ( ) , \; :] ~
+   [if not emptyp :token [push "output :token]
+    output basicread1 (butfirst :input) (fput first :input :output) "]
+output basicread1 (butfirst :input) :output (word :token first :input)
+end
+
+to breadstring :input :output :string
+if emptyp :input [(throw "error [String needs ending quote.])]
+if equalp first :input "" ~
+   [output basicread1 (butfirst :input)
+                      (fput (word "" :string "") :output)
+                      "]
+output breadstring (butfirst :input) :output (word :string first :input)
+end
+
+to split :line
+output fput first :line split1 (butfirst :line) [] []
+end
+
+to split1 :input :output :command
+if emptyp :input [if not emptyp :command [push "output reverse :command]
+                  output reverse :output]
+if equalp first :input ": [if not emptyp :command
+                              [push "output reverse :command]
+                           output split1 (butfirst :input) :output []]
+output split1 (butfirst :input) :output (fput first :input :command)
+end
+
+;; Runtime library
+
+to nextline :num
+make "target member :num :linenumbers
+if not emptyp :target [make "target butfirst :target]
+if not emptyp :target [run (list (word "basic% first :target))]
+end
+
+to readvalue
+while [emptyp :readline] [make "readline basicread]
+output pop "readline
+end
diff --git a/js/games/nluqo.github.io/~bh/v2ch6/v2ch6.html b/js/games/nluqo.github.io/~bh/v2ch6/v2ch6.html
new file mode 100644
index 0000000..1723ced
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch6/v2ch6.html
@@ -0,0 +1,1489 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 6: Example: BASIC Compiler</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: BASIC Compiler</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch5/v2ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch7/v2ch7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>Program file for this chapter: <A HREF="basic.lg"><CODE>basic</CODE></A>
+
+<P>
+The BASIC programming language was designed by John Kemeny
+and Thomas Kurtz in the late 1960s.  (The name is an acronym for
+Beginner's All-purpose Symbolic Instruction Code.)  It was first implemented
+on a large, central computer facility at Dartmouth; the designers' goal was
+to have a language that all students could use for simple problems, in
+contrast to the arcane programming languages used by most experts at that
+time.
+
+<P>
+A decade later, when the microcomputer was invented, BASIC took on a new
+importance.  Kemeny and Kurtz designed a simple language for the sake of
+the users, but that simplicity also made the language easy for the
+<EM>computer!</EM>  Every programming language requires a computer program to
+translate it into instructions that the computer can carry out.  For example,
+the Logo programs you write are translated by a Logo interpreter.  But Logo
+is a relatively complex language, and a Logo interpreter is a pretty big
+program.  The first microcomputers had only a few thousand bytes of memory.
+(Today's home computers, by contrast, have several million bytes.)  Those
+early personal computers couldn't handle Logo, but it was possible to write
+a BASIC interpreter that would fit them.  As a result, BASIC became the
+near-universal language for amateur computer enthusiasts in the late 1970s
+and early 1980s.
+
+<P>
+Today's personal computers come with translators for a wide variety of
+programming languages, and also with software packages that enable many
+people to accomplish their computing tasks without writing programs
+of their own at all.  BASIC is much less widely used today, although
+it has served as the core for Microsoft's &quot;Visual Basic&quot; language.
+
+<P>
+In this chapter, I want to show how Logo's <CODE>define</CODE> command can be
+used in a program-writing program.  My program will translate BASIC
+programs into Logo programs.  I chose BASIC for the same reason the
+early microcomputers used it:  It's a small language and the translator
+is relatively easy to write.  (Kemeny and Kurtz, the designers of BASIC,
+have criticized the microcomputer implementations as <EM>too</EM> simple and
+as unfaithful to their original goals.  My implementation will share that
+defect, to make the project easier.  Don't use this version as a basis on
+which to judge the language!  For that you should investigate True Basic,
+the version that Kemeny and Kurtz wrote themselves for personal computers.)
+
+<P>
+Here's a typical short BASIC program:
+
+<PRE>
+10 print "Table of Squares"
+20 print
+30 print "How many values would you like?"
+40 input num
+50 for i=1 to num
+60 print i, i*i
+70 next i
+80 end
+</PRE>
+
+<P>
+And here's what happens when we run it:
+
+<PRE>
+Table of Squares
+
+How many values would you like?
+<U>5</U>
+1       1
+2       4
+3       9
+4       16
+5       25
+</PRE>
+
+<H2>A Short Course in BASIC</H2>
+
+<P>
+Each line in the sample BASIC program begins with a <EM>line number.</EM>
+These numbers are used for program editing.  Instead of the modern screen
+editors with which you're familiar, the early versions of BASIC had a very
+primitive editing facility; you could replace a line by typing a new line
+with the same number.  There was no way to replace less than an entire line.
+To delete a line completely, you'd enter a line containing just the number.
+The reason the line numbers in this program are multiples of ten is to leave
+room for inserting new lines.  For example, I could say
+
+<PRE>
+75 print "Have a nice day."
+</PRE>
+
+<P>
+to insert a new line between lines 70 and 80.
+(By the way, the earliest versions of Logo used a similar line numbering
+system, except that each Logo procedure was separately numbered.  The editing
+technique isn't really part of the language design; early systems used
+&quot;line editors&quot; because they had typewriter-like paper terminals instead
+of today's display screens.  I'm using a line editor in this project because
+it's easy to implement!)
+
+<P>
+The BASIC language consists of one or two dozen commands, depending on the
+version used.  My BASIC dialect understands only these ten commands:
+
+<PRE>
+LET variable = value
+PRINT values
+INPUT variables
+FOR variable = value TO value
+NEXT variable
+IF value THEN command
+GOTO linenumber
+GOSUB linenumber
+RETURN
+END
+</PRE>
+
+<P>
+Unlike Logo procedure calls, which consist of the procedure
+name followed by inputs in a uniform format, each BASIC command has its
+own format, sometimes including internal separators such as the equal sign
+and the word <CODE>to</CODE> in the <CODE>for</CODE> command format, or the word <CODE>then</CODE>
+in the <CODE>if</CODE> command format.
+
+<P>
+In some versions of BASIC, including this one, a single line can contain
+more than one command, if the commands are separated with colons.  Thus
+the same program shown earlier could also be written this way:
+
+<PRE>
+10 print "Table of Squares":print
+30 print "How many values would you like?":input num
+50 for i=1 to num : print i, i*i : next i
+80 end
+</PRE>
+
+<P>
+The <CODE>let</CODE> command assigns a value to a variable, like Logo's
+<CODE>make</CODE> procedure.  Unlike Logo, BASIC does not have the rule that
+all inputs are evaluated before applying the command.  In particular, the
+word after <CODE>let</CODE> must be the name of the variable, not an
+expression whose value is the name.  Therefore the name is not quoted.
+Also, a variable can't have the same name as a procedure, so there is no
+need for anything like Logo's use of the colon to indicate a variable
+value.  (This restricted version of BASIC doesn't have named procedures at
+all, like some early microcomputer versions.)
+
+<PRE>
+make "x :y + 3       <EM>(Logo)</EM>
+let x = y + 3        <EM>(BASIC)</EM>
+</PRE>
+
+<P>
+In my subset of BASIC, the value of a variable must be a number.
+More complete BASIC dialects include string variables (like words in Logo)
+and arrays (like Logo's arrays).
+
+<P>
+The value to be assigned to a variable can be computed using an arithmetic
+expression made up of variables, numbers, the arithmetic operators
+<CODE>+</CODE>, <CODE>-</CODE>, <CODE>*</CODE>, and <CODE>/</CODE>, and
+parentheses for grouping.
+
+<P>
+The <CODE>print</CODE> command is similar to Logo's print procedure in that it
+prints a line on the screen.  That line can include any number of values.
+Here is an example <CODE>print</CODE> command:
+
+<PRE>
+print "x = "; x, "y = "; y, "sum = "; x+y
+</PRE>
+
+<P>
+In this example two kinds of values are printed: arithmetic
+values (as in the <CODE>let</CODE> command) and strings.  A <EM>string</EM> is any
+sequence of characters surrounded by quotation marks.
+
+<P>
+Notice that the values in this example are separated by punctuation marks,
+either commas or semicolons.  When a semicolon is used, the two values are
+printed right next to each other, with no space between them.  (That's why
+each of the strings in this example ends with a space.)  When a comma is
+used, BASIC prints a tab character between the two values, so that values on
+different lines will line up to form columns.  (Look again at the table of
+squares example at the beginning of this chapter.)
+
+<P>
+The <CODE>input</CODE> command is the opposite of <CODE>print</CODE>; it reads values from
+the keyboard and assigns them to variables.  There is nothing in Logo exactly
+like <CODE>input</CODE>.  Instead, Logo has <EM>operations</EM> <CODE>readword</CODE> and
+<CODE>readlist</CODE> that output the contents of a line; those values can be
+assigned to variables using <CODE>make</CODE> or can be used in some other way.
+The Logo approach is more flexible, but the early versions of BASIC didn't
+have anything like Logo's operations.  The <CODE>input</CODE> command will also
+accept a string in quotation marks before its list of variables; that string
+is printed as a prompt before BASIC reads from the keyboard.  (BASIC does not
+start a new line after printing the prompt, so the effect is like Logo's
+<CODE>type</CODE> command rather than like <CODE>print</CODE>.)  Here's an example:
+
+<PRE>
+input "Please enter x and y: " x,y
+</PRE>
+
+<P>
+The user can type the values for x and y on the same line,
+separated by spaces, or on separate lines.  BASIC keeps reading lines until
+it has collected enough numbers for the listed variables.  Notice that the
+variable names in the <CODE>input</CODE> command must be separated by commas, not
+by semicolons.
+
+<P>
+The <CODE>for</CODE> and <CODE>next</CODE> commands work together to provide
+a numeric iteration capability like Berkeley Logo's <CODE>for</CODE>
+procedure.  The <CODE>for</CODE> command format includes a variable name, a
+starting value, and an ending value.  (The step value is always 1.)  The
+named variable is given the specified starting value.  If that value is less
+than the ending value, then all of the commands between the <CODE>for</CODE>
+command and the matching <CODE>next</CODE> command (the one with the same
+named variable) are carried out.  Then the variable is increased by 1, and
+the process continues until the ending value is reached.  <CODE>For</CODE>
+and <CODE>next</CODE> pairs with different variables can be nested:
+
+<PRE>
+10 input "Input size: " num
+20 for i = 1 to num
+30 for j = i to num
+40 print i;"  ";j
+50 next j:next i
+60 end
+
+Input size: <U>4</U>
+1  1
+1  2
+1  3
+1  4
+2  2
+2  3
+2  4
+3  3
+3  4
+4  4
+</PRE>
+
+<P>
+Notice that the <CODE>next j</CODE> must come before the <CODE>next i</CODE> so
+that the <CODE>for</CODE>/<CODE>next</CODE> pairs are properly nested.
+
+<P>
+The <CODE>if</CODE> command allows conditional execution, much like Logo's
+<CODE>if</CODE> command, but with a different notation.  Instead of taking
+an instruction list as an input, BASIC's <CODE>if</CODE> uses the keyword
+<CODE>then</CODE> to introduce a single conditional command.  (If you want
+to make more than one command conditional, you must combine <CODE>if</CODE>
+with <CODE>goto</CODE>, described next.)  The value that controls the
+<CODE>if</CODE> must be computed using one of the operators <CODE>=</CODE>,
+<CODE><</CODE>, or <CODE>></CODE> for numeric comparison.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Notice that the equal sign has two
+meanings in BASIC.  In the <CODE>let</CODE> command, it's like Logo's
+<CODE>make</CODE>; in the <CODE>if</CODE> command, it's like Logo's
+<CODE>equalp</CODE>.  In the early 1980s, Logo enthusiasts had fierce
+arguments with BASIC fans, and this sort of notational inconsistency was one
+of the things that drove us crazy!  (More serious concerns were the lack of
+operations and of recursion in the microcomputer versions of
+BASIC.)</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+The <CODE>goto</CODE> command transfers control to the beginning of a command
+line specified by its line number.  It can be used with <CODE>if</CODE> to make a
+sequence of commands conditional:
+
+<PRE>
+10 input x
+20 if x > 0 then goto 100
+30 print "x is negative."
+40 print "x = "; x
+50 goto 200
+100 print "x is positive."
+200 end
+</PRE>
+
+<P>
+The <CODE>gosub</CODE> and <CODE>return</CODE> commands provide a rudimentary procedure
+calling mechanism.  I call it &quot;rudimentary&quot; because the procedures have no
+inputs, and can only be commands, not operations.  Also, the command lines
+that make up the procedure are also part of the main program, so you
+generally need a <CODE>goto</CODE> in the main program to skip over them:
+
+<PRE>
+10 let x=7
+20 gosub 100
+30 let x=9
+40 gosub 100
+50 goto 200
+100 print x, x*x
+110 return
+200 end
+</PRE>
+
+<P>
+Finally, the <CODE>end</CODE> command ends the program.  There must be an <CODE>end</CODE>
+at the end of a BASIC program, and there should not be one anywhere else.
+(In this implementation of BASIC, an <CODE>end</CODE> stops the BASIC program even
+if there are more lines after it.  It's roughly equivalent to a <CODE>throw</CODE>
+to <CODE>toplevel</CODE> in Logo.)
+
+<H2>Using the BASIC Translator</H2>
+
+<P>
+To start the translator, run the Logo procedure <CODE>basic</CODE> with no inputs.
+You will then see the BASIC prompt, which is the word <CODE>READY</CODE> on a line
+by itself.
+
+<P>
+At the prompt you can do either of two things.  If you type a line starting
+with a line number, that line will be entered into your BASIC program.  It
+is inserted in order by line number.  Any previous line with the same number
+will be deleted.  If the line you type contains <EM>only</EM> a line number,
+then the line in the program with that number will be deleted.
+
+<P>
+If your line does not start with a number, then it is taken as an
+<EM>immediate</EM> command, not as part of the program.  This version of
+BASIC recognizes only three immediate commands:  The word <CODE>run</CODE>
+means to run your program, starting from the smallest line number.  The word
+<CODE>list</CODE> means to print out a listing of the program's lines, in
+numeric order.  The word <CODE>exit</CODE> returns to the Logo prompt.
+
+<H2>Overview of the Implementation</H2>
+
+<P>
+There are two kinds of translators for programming languages: compilers and
+interpreters.  The difference is that a compiler translates one language
+(the <EM>source</EM> language) into another (the <EM>target</EM> language),
+leaving the result around so that it can be run repeatedly without being
+translated again.  An interpreter translates each little piece of source
+language into one action in the target language and runs the result, but
+does not preserve a complete translated program in the target language.
+
+<P>
+Ordinarily, the target language for both compilers and interpreters is
+the &quot;native&quot; language of the particular computer you're using, the
+language that is wired into the computer hardware.  This
+<EM>machine language</EM> is the only form in which a program can
+actually be run.  The BASIC compiler in this chapter is quite unrealistic
+in that it uses Logo as the target language, which means that the program
+must go through <EM>another</EM> translation, from Logo to machine
+language, before it can actually be run.  For our purposes, there are
+three advantages to using Logo as the target language.  First, every kind
+of computer has its own machine language, so I'd have to write several
+versions of the compiler to satisfy everyone if I compiled BASIC into
+machine language.  Second, I know you know Logo, so you can understand
+the resulting program, whereas you might not be familiar with any machine
+language.  Third, this approach allows me to
+cheat by leaving out a lot of the complexity of a real compiler.  Logo is
+a &quot;high level&quot; language, which means that it takes care of many details
+for us, such as the allocation of specific locations in the computer's
+memory to hold each piece of information used by the program.  In order to
+compile into machine language, I'd have to pay attention to those details.
+
+<P>
+Why would anyone want an interpreter, if the compiler translates the program
+once and for all, while the interpreter requires retranslation every time
+a command is carried out?  One reason is that an interpreter is easier to
+write, because (just as in the case of a compiler with Logo as the target
+language) many of the details can be left out.  Another reason is that
+traditional compilers work using a <EM>batch</EM> method, which means that you
+must first write the entire program with a text editor, then run the
+compiler to translate the program into machine language, and finally run
+the program.  This is okay for a working program that is used often, but not
+recompiled often.  But when you're creating a program in the first place,
+there is a debugging process that requires frequent modifications to the
+source language program.  If each modification requires a complete
+recompilation, the debugging is slow and frustrating.  That's why
+interpreted languages are often used for teaching--when you're learning
+to program, you spend much more time debugging a program than running the
+final version.
+
+<P>
+The best of both worlds is an <EM>incremental compiler,</EM> a
+compiler that can recompile only the changed part when a small change is
+made to a large program.  For example, Object Logo is a commercial version
+of Logo for the Macintosh in which each procedure is compiled when it is
+defined.  Modifying a procedure requires recompiling that procedure, but not
+recompiling the others.  Object Logo behaves like an interpreter, because the
+user doesn't have to ask explicitly for a procedure to be compiled, but
+programs run faster in Object Logo than in most other versions because each
+procedure is translated only once, rather than on every invocation.
+
+<P>
+The BASIC translator in this chapter is an incremental compiler.  Each
+numbered line is compiled into a Logo procedure as soon as it is typed in.
+If the line number is <CODE>40</CODE> then the resulting procedure will be
+named <CODE>basic%40</CODE>.  The last step in each of these procedures is
+to invoke the procedure for the next line.  The compiler maintains a list of
+all the currently existing line numbers, in order, so the <CODE>run</CODE>
+command is implemented by saying
+
+<PRE>
+run (list (word "basic% first :linenumbers))
+</PRE>
+
+<P>
+Actually, what I just said about each procedure ending with an invocation
+of the next one is slightly simplified.  Suppose the BASIC program starts
+
+<PRE>
+10 let x=3
+20 let y=9
+30 ...
+</PRE>
+
+<P>
+and we translate that into
+
+<PRE>
+to basic%10
+make "%x 3
+basic%20
+end
+
+to basic%20
+make "%y 9
+basic%30
+end
+</PRE>
+
+<P>
+Then what happens if the user adds a new line numbered 15?  We
+would have to recompile line 10 to invoke <CODE>basic%15</CODE> instead of
+<CODE>basic%20</CODE>.  To avoid that, each line is compiled in a way that
+defers the choice of the next line until the program is actually run:
+
+<PRE>
+to basic%10
+make "%x 3
+nextline 10
+end
+
+to basic%20
+make "%y 9
+nextline 20
+end
+</PRE>
+
+<P>
+This solution depends on a procedure <CODE>nextline</CODE> that finds
+the next available line number after its argument:
+
+<PRE>
+to nextline :num
+make "target member :num :linenumbers
+if not emptyp :target [make "target butfirst :target]
+if not emptyp :target [run (list (word "basic% first :target))]
+end
+</PRE>
+
+<P>
+<CODE>Nextline</CODE> uses the Berkeley Logo primitive <CODE>member</CODE>,
+which is like the predicate <CODE>memberp</CODE> except that if the first
+input is found as a member of the second, instead of giving
+<CODE>true</CODE> as its output, it gives the portion of the second input
+starting with the first input:
+
+<PRE>
+? <U>show member "the [when in the course of human events]</U>
+[the course of human events]
+</PRE>
+
+<P>
+If the first input is not a member of the second, <CODE>member</CODE>
+outputs an empty word or list, depending on the type of the second input.
+
+<P>
+The two separate <CODE>emptyp</CODE> tests are used instead of a single <CODE>if</CODE>
+because the desired line number might not be in the list at all, or it might
+be the last one in the list, in which case the <CODE>butfirst</CODE> invocation
+will output an empty list.  (Neither of these cases should arise.  The first
+means that we're running a line that doesn't exist, and the second means
+that the BASIC program doesn't end with an <CODE>end</CODE> line.  But the procedure
+tries to avoid disaster even in these cases.)
+
+<P>
+Look again at the definition of <CODE>basic%10</CODE>.  You'll see that the
+variable named <CODE>x</CODE> in the BASIC program is named <CODE>%x</CODE> in the
+Logo translation.  The compiler uses this renaming technique to ensure that
+the names of variables and procedures in the compiled program don't conflict
+with names used in the compiler itself.  For example, the compiler uses a
+variable named <CODE>linenumbers</CODE> whose value is the list of line numbers.
+What if someone writes a BASIC program that says
+
+<PRE>
+10 let linenumbers = 100
+</PRE>
+
+<P>
+This won't be a problem because in the Logo translation, that
+variable will be named <CODE>%linenumbers</CODE>.
+
+<P>
+The compiler can be divided conceptually into four parts:
+
+<UL>
+<LI>The <EM>reader</EM> divides the characters that the user types into
+meaningful units.  For example, it recognizes that <CODE>let</CODE> is a single
+word, but <CODE>x+1</CODE> should be understood as three separate words.
+
+<LI>The <EM>parser</EM> recognizes the form of each of the ten BASIC
+commands that this dialect understands.  For example, if a command
+starts with <CODE>if</CODE>, the parser expects an expression followed by the word
+<CODE>then</CODE> and another command.
+
+<LI>The <EM>code generator</EM> constructs the actual translation of
+each BASIC command into one or more Logo instructions.
+
+<LI>The <EM>runtime library</EM> contains procedures that are used while the
+translated program is running, rather than during the compilation process.
+The <CODE>nextline</CODE> procedure discussed earlier is an example.
+</UL>
+
+
+<P>
+Real compilers have the same structure, except of course that the code
+generator produces machine language instructions rather than Logo
+instructions.  Also, a professional compiler will include an
+<EM>optimizer</EM> that looks for ways to make the compiled program as
+efficient as possible.
+
+<H2>The Reader</H2>
+
+<P>
+A <EM>reader</EM> is a program that reads a bunch of characters
+(typically one line, although not in every language) and divides those
+characters into meaningful units.  For example, every Logo implementation
+includes a reader that interprets square brackets as indications of
+list grouping.  But some of the rules followed by the Logo reader differ
+among implementations.  For example, can the hyphen character (<CODE>-</CODE>) be
+part of a larger word, or is it always a word by itself?  In a context in
+which it means subtraction, we'd like it to be a word by itself.  For
+example, when you say
+
+<PRE>
+print :x-3
+</PRE>
+
+<P>
+as a Logo instruction, you mean to print three less than the
+value of the variable named <CODE>x</CODE>, not to print the value of a variable
+whose name is the three-letter word <CODE>x-3</CODE>!  On the other hand, if you
+have a list of telephone numbers like this:
+
+<PRE>
+make "phones [555-2368 555-9827 555-8311]
+</PRE>
+
+<P>
+you'd like the <CODE>first</CODE> of that list to be an entire
+phone number, the word <CODE>555-2368</CODE>, not just <CODE>555</CODE>.  Some Logo
+implementations treat every hyphen as a word by itself; some treat
+every hyphen just like a letter, and require that you put spaces around
+a minus sign if you mean subtraction.  Other implementations, including
+Berkeley Logo, use a more complicated rule in which the status of the
+hyphen depends on the context in which it appears, so that both of the
+examples in this paragraph work as desired.
+
+<P>
+In any case, Logo's reader follows rules that are not appropriate for BASIC.
+For example, the colon (<CODE>:</CODE>) is a delimiter in BASIC, so it should be
+treated as a word by itself; in Logo, the colon is paired with the variable
+name that follows it.  In both languages, the quotation mark (<CODE>"</CODE>) is
+used to mark quoted text, but in Logo it comes only at the beginning of
+a word, and the quoted text ends at the next space character, whereas in
+BASIC the quoted text continues until a second, matching quotation mark.
+For these and other reasons, it's desirable to have
+a BASIC-specific reader for use in this project.
+
+<P>
+The rules of the BASIC reader are pretty simple.  Each invocation of
+<CODE>basicread</CODE> reads one line from the keyboard, ending with the Return
+or Enter character.  Within that line, space characters separate words
+but are not part of any word.  A quotation mark begins a quoted word that
+includes everything up to and including the next matching quotation mark.
+Certain characters form words by themselves:
+
+<PRE>
++ - * / = < > ( ) , ; :
+</PRE>
+
+<P>
+All other characters are treated like letters; that is, they
+can be part of multi-character words.
+
+<PRE>
+? <U>show basicread</U>
+<U>30 print x;y;"foo,baz",z:print hello+4</U>
+[30 print x ; y ; "foo,baz" , z : print hello + 4]
+</PRE>
+
+<P>
+Notice that the comma inside the quotation marks is not made
+into a separate word by <CODE>basicread</CODE>.  The other punctuation characters,
+however, appear in the output sentence as one-character words.
+
+<P>
+<CODE>Basicread</CODE> uses the Logo primitive <CODE>readword</CODE> to read a line.
+<CODE>Readword</CODE> can be thought of as a reader with one trivial rule:  The
+only special character is the one that ends a line.  Everything else is
+considered as part of a single long word.  <CODE>Basicread</CODE> examines that
+long word character by character, looking for delimiters, and accumulating
+a sentence of words separated according to the BASIC rules.  The
+implementation of <CODE>basicread</CODE> is straightforward; you can read the
+procedures at the end of this chapter if you're interested.  For now,
+I'll just take it for granted and go on to discuss the more interesting
+parts of the BASIC compiler.
+
+<H2>The Parser</H2>
+
+<P>
+The <EM>parser</EM> is the part of a compiler that figures out the
+structure of each piece of the source program.  For example, if the BASIC
+compiler sees the command
+
+<PRE>
+let x = ( 3 * y ) + 7
+</PRE>
+
+<P>
+it must recognize that this is a <CODE>let</CODE> command, which
+must follow the pattern
+
+<PRE>
+LET variable = value
+</PRE>
+
+<P>
+and therefore <CODE>x</CODE> must be the name of a variable, while
+<CODE>( 3 * y ) + 7</CODE> must be an expression representing a value.  The
+expression must be further parsed into its component pieces.  Both the
+variable name and the expression must be translated into the form they
+will take in the compiled (Logo) program, but that's the job of the
+code generator.
+
+<P>
+In practice, the parser and the code generator are combined into one
+step; as each piece of the source program is recognized, it is translated
+into a corresponding piece of the object program.  So we'll see that most
+of the procedures in the BASIC compiler include parsing instructions and
+code generation instructions.  For example, here is the procedure that
+compiles a <CODE>let</CODE> command:
+
+<PRE>
+to compile.let :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+make "exp expression
+queue "definition (sentence "make (word ""% :var) :exp)
+end
+</PRE>
+
+<P>
+In this procedure, all but the last instruction (the line
+starting with <CODE>queue</CODE>) are parsing the source command.  The last
+line, which we'll come back to later, is generating a Logo <CODE>make</CODE>
+instruction, the translation of the BASIC <CODE>let</CODE> in the object
+program.
+
+<P>
+BASIC was designed to be very easy to parse.  The parser can read a command
+from left to right, one word at a time; at every moment, it knows exactly
+what to expect.  The command must begin with one of the small number of
+command names that make up the BASIC language.  What comes next depends on
+that command name; in the case of <CODE>let</CODE>, what comes next is one word
+(the variable name), then an equal sign, then an expression.  Each
+instruction in the <CODE>compile.let</CODE> procedure handles one of these pieces.
+First we skip over the word <CODE>let</CODE> by removing it from the front of the
+command:
+
+<PRE>
+make "command butfirst :command
+</PRE>
+
+<P>
+Then we read and remember one word, the variable name:
+
+<PRE>
+make "var pop "command
+</PRE>
+
+<P>
+(Remember that the <CODE>pop</CODE> operation removes one member
+from the beginning of a list, returning that member.  In this case
+we are removing the variable name from the entire <CODE>let</CODE> command.)
+Then we make sure there's an equal sign:
+
+<PRE>
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+</PRE>
+
+<P>
+And finally we call a subprocedure to read the expression;
+as we'll see later, that procedure also translates the expression to
+the form it will take in the object program:
+
+<PRE>
+make "exp expression
+</PRE>
+
+<P>
+The parsers for other BASIC commands have essentially the same
+structure as this example.  They repeatedly invoke <CODE>pop</CODE> to
+read one word from the command or <CODE>expression</CODE> to read and
+translate an expression.  (The <CODE>if</CODE> command is a little more
+complicated because it contains another command as a component,
+but that inner command is just compiled as if it occurred by itself.
+We'll look at that process in more detail when we get to the
+code generation part of the compiler.)
+
+<P>
+Each compilation procedure expects a single BASIC command as its
+input.  Remember that a line in a BASIC program can include more
+than one command.  The compiler uses a procedure named <CODE>split</CODE>
+to break up each line into a list of commands:
+
+<PRE>
+? <U>show split [30 print x ; y ; "foo,baz" , z : print hello + 4]</U>
+[30 [print x ; y ; "foo,baz" , z] [print hello + 4]]
+</PRE>
+
+<P>
+<CODE>Split</CODE> outputs a list whose first member is a line
+number; the remaining members are lists, each containing one BASIC
+command.  <CODE>Split</CODE> works by looking for colons within the
+command line.
+
+<P>
+Here is the overall structure of the compiler, but with only the
+instructions related to parsing included:
+
+<PRE>
+to basic
+forever [basicprompt]
+end
+
+to basicprompt
+print "READY
+make "line basicread
+if emptyp :line [stop]
+ifelse numberp first :line [compile split :line] [immediate :line]
+end
+
+to compile :commands
+make "number first :commands
+ifelse emptyp butfirst :commands ~
+       [eraseline :number] ~
+       [makedef (word "basic% :number) butfirst :commands]
+end
+
+to makedef :name :commands
+...
+foreach :commands [run list (word "compile. first ?) ?]
+...
+end
+</PRE>
+
+<P>
+<CODE>Basic</CODE> does some initialization (not shown) and then
+invokes <CODE>basicprompt</CODE> repeatedly.  <CODE>Basicprompt</CODE> calls the
+BASIC reader to read a line; if that line starts with a number, then
+<CODE>split</CODE> is used to transform the line into a list of commands,
+and <CODE>compile</CODE> is invoked with that list as input.  <CODE>Compile</CODE>
+remembers the line number for later use, and then invokes <CODE>makedef</CODE>
+with the list of commands as an input.  I've left out most of the
+instructions in <CODE>makedef</CODE> because they're concerned with code
+generation, but the important part right now is that for each command
+in the list, it invokes a procedure named <CODE>compile.</CODE>something
+based on the first word of the command, which must be one of the
+command names in the BASIC language.
+
+<H2>The Code Generator</H2>
+
+<P>
+Each line of the BASIC source program is going to be compiled into one
+Logo procedure.  (We'll see shortly that the BASIC <CODE>if</CODE> and <CODE>for</CODE>
+commands are exceptions.)  For example, the line
+
+<PRE>
+10 let x = 3 : let y = 4 : print x,y+6
+</PRE>
+
+<P>
+will be compiled into the Logo procedure
+
+<PRE>
+to basic%10
+make "%x 3
+make "%y 4
+type :%x
+type char 9
+type :%y + 6
+print []
+nextline 10
+end
+</PRE>
+
+<P>
+Each of the three BASIC commands within the source line
+contributes one or more instructions to the object procedure.  Each
+<CODE>let</CODE> command is translated into a <CODE>make</CODE> instruction; the
+<CODE>print</CODE> command is translated into three <CODE>type</CODE> instructions
+and a <CODE>print</CODE> instruction.  (The last instruction line in the
+procedure, the invocation of <CODE>nextline</CODE>, does not come from
+any of the BASIC commands, but is automatically part of the translation
+of every BASIC command line.)
+
+<P>
+To generate this object procedure, the BASIC compiler is going to have
+to invoke Logo's <CODE>define</CODE> primitive, this way:
+
+<PRE>
+define "basic%10 [[] [make "%x 3] [make "%y 4] ... [nextline 10]]
+</PRE>
+
+<P>
+Of course, these actual inputs do not appear explicitly in
+the compiler!  Rather, the inputs to <CODE>define</CODE> are variables that
+have the desired values:
+
+<PRE>
+define :name :definition
+</PRE>
+
+<P>
+The variable <CODE>name</CODE> is an input to <CODE>makedef</CODE>, as we've
+seen earlier.  The variable <CODE>definition</CODE> is created within
+<CODE>makedef</CODE>.  It starts out as a list containing just the empty
+list, because the first sublist of the input to <CODE>define</CODE> is the
+list of the names of the desired inputs to <CODE>basic%10</CODE>, but it has
+no inputs.  The procedures within the compiler that parse each of the
+commands on the source line will also generate object code (that is, Logo
+instructions) by appending those instructions to the value of
+<CODE>definition</CODE> using Logo's <CODE>queue</CODE> command.
+<CODE>Queue</CODE> takes two inputs: the name of a variable whose value is
+a list, and a new member to be added at the end of the list.  Its effect is
+to change the value of the variable to be the extended list.
+
+<P>
+Look back at the definition of <CODE>compile.let</CODE> above.  Earlier we
+considered the parsing instructions within that procedure, but deferred
+discussion of the last instruction:
+
+<PRE>
+queue "definition (sentence "make (word ""% :var) :exp)
+</PRE>
+
+<P>
+Now we can understand what this does:  It generates a Logo
+<CODE>make</CODE> instruction and appends that instruction to the object
+procedure definition in progress.
+
+<P>
+We can now also think about the output from the <CODE>expression</CODE> procedure.
+Its job is to parse a BASIC expression and to translate it into the
+corresponding Logo expression.  This part of the compiler is one of the
+least realistic.  A real compiler would have to think about such issues as
+the precedence of arithmetic operations; for example, an expression like
+<CODE>3+x*4</CODE> must be translated into two machine language instructions, first
+one that multiplies <CODE>x</CODE> by 4, and then one that adds the result of that
+multiplication to 3.  But the Logo interpreter already handles that aspect
+of arithmetic for us, so all <CODE>expression</CODE> has to do is to translate
+variable references like <CODE>x</CODE> into the Logo form <CODE>:%x</CODE>.
+
+<PRE>
+? <U>show expression [3 + x * 4]</U>
+[3 + :%x * 4]
+</PRE>
+
+<P>
+(We'll take a closer look at translating arithmetic expressions
+in the Pascal compiler found in the third volume of this series,
+<A HREF="../v3-toc2.html"><EM>Beyond Programming.</EM></A>)
+
+<P>
+We are now ready to look at the complete version of <CODE>makedef</CODE>:
+
+<PRE>
+to makedef :name :commands
+make "definition [[]]
+foreach :commands [run list (word "compile. first ?) ?]
+queue "definition (list "nextline :number)
+define :name :definition
+make "linenumbers insert :number :linenumbers
+end
+</PRE>
+
+<P>
+I hope you'll find this straightforward.  First we create
+an empty definition.  Then, for each BASIC command on the line, we
+append to that definition whatever instructions are generated by
+the code generating instructions for that command.  After all the
+BASIC commands have been compiled, we add an invocation of <CODE>nextline</CODE>
+to the definition.  Now we can actually define the Logo procedure whose
+text we've been accumulating.  The last instruction updates the list
+of line numbers that <CODE>nextline</CODE> uses to find the next BASIC command
+line when the compiled program is running.
+
+<P>
+In a sense, this is the end of the story.  My purpose in this chapter
+was to illustrate how <CODE>define</CODE> can be used in a significant project,
+and I've done that.  But there are a few more points I should explain
+about the code generation for some specific BASIC commands, to complete
+your understanding of the compiler.
+
+<P>
+One such point is about the difference between <CODE>goto</CODE> and
+<CODE>gosub</CODE>.  Logo doesn't have anything like a <CODE>goto</CODE>
+mechanism; both <CODE>goto</CODE> and <CODE>gosub</CODE> must be implemented
+by invoking the procedure corresponding to the given line number.  The
+difference is that in the case of <CODE>goto</CODE>, we want to invoke that
+procedure and not come back!  The solution is to compile the BASIC command
+
+<PRE>
+goto 40
+</PRE>
+
+<P>
+into the Logo instructions
+
+<PRE>
+basic%40 stop
+</PRE>
+
+<P>
+In effect, we are calling line 40 as a subprocedure, but
+when it returns, we're finished.  Any additional Logo instructions
+generated for the same line after the <CODE>goto</CODE> (including the
+invocation of <CODE>nextline</CODE> that's generated automatically for
+every source line) will be ignored because of the <CODE>stop</CODE>.*
+
+<SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In fact, the Berkeley Logo interpreter
+is clever enough to notice that there is a <CODE>stop</CODE> instruction
+after the invocation of <CODE>basic%40</CODE>, and it arranges things so
+that there is no &quot;return&quot; from that procedure.  This makes things a little
+more efficient, but doesn't change the meaning of the
+program.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>
+The next tricky part of the compiler has to do with the <CODE>for</CODE> and
+<CODE>next</CODE> commands.  Think first about <CODE>next</CODE>.  It must
+increment the value of the given variable, test that value against a
+remembered limit, and, if the limit has not been reached, go to... where?
+The <CODE>for</CODE> loop continues with the BASIC command just after the
+<CODE>for</CODE> command itself.  That might be in the middle of a line, so
+<CODE>next</CODE> can't just remember a line number and invoke
+<CODE>basic%N</CODE> for line number N.  To solve this problem, the
+line containing the <CODE>for</CODE> command is split into two Logo
+procedures, one containing everything up to and including the
+<CODE>for</CODE>, and one for the rest of the line.  For example, the line
+
+<PRE>
+30 let x = 3 : for i = 1 to 5 : print i,x : next i
+</PRE>
+
+<P>
+is translated into
+
+<PRE>
+to basic%30
+make "%x 3
+make "%i 1
+make "let%i 5
+make "next%i [%g1]
+%g1
+end
+
+to %g1
+type :%i
+type char 9
+type :%x
+print []
+make "%i :%i + 1
+if not greaterp :%i :let%i [run :next%i stop]
+nextline 30
+end
+</PRE>
+
+<P>
+The first <CODE>make</CODE> instruction in <CODE>basic%30</CODE> is the
+translation of the <CODE>let</CODE> command.  The remaining four lines are
+the translation of the <CODE>for</CODE> command; it must give an initial
+value to the variable <CODE>i</CODE>, remember the limit value 5, and
+remember the Logo procedure to be used for looping.  That latter procedure
+is named <CODE>%g1</CODE> in this example.  The percent sign is used for the
+usual reason, to ensure that the names created by the compiler don't
+conflict with names in the compiler itself.  The <CODE>g1</CODE> part is a
+<EM>generated symbol,</EM> created by invoking the Berkeley Logo primitive
+operation <CODE>gensym</CODE>.  Each invocation of <CODE>gensym</CODE>
+outputs a new symbol, first <CODE>g1</CODE>, then <CODE>g2</CODE>, and so on.
+
+<P>
+The first four instructions in procedure <CODE>%g1</CODE> (three
+<CODE>type</CODE>s and a <CODE>print</CODE>) are the translation of the
+BASIC <CODE>print</CODE> command.  The next two instructions are the
+translation of the <CODE>next</CODE> command; the <CODE>make</CODE>
+instruction increments <CODE>i</CODE>, and the <CODE>if</CODE> instruction
+tests whether the limit has been passed, and if not, invokes the looping
+procedure <CODE>%g1</CODE> again.  (Why does this say
+<CODE>run :next%i</CODE> instead of just <CODE>%g1</CODE>?  Remember that
+the name <CODE>%g1</CODE> was created during the compilation of the
+<CODE>for</CODE> command.  When we get around to compiling the
+<CODE>next</CODE> command, the code generator has no way to remember which
+generated symbol was used by the corresponding <CODE>for</CODE>.  Instead it
+makes reference to a variable <CODE>next%i</CODE>, named after the variable
+given in the <CODE>next</CODE> command itself, whose value is the name of
+the procedure to run.  Why not just call that procedure itself
+<CODE>next%i</CODE> instead of using a generated symbol?  The trouble is
+that there might be more than one pair of <CODE>for</CODE> and
+<CODE>next</CODE> commands in the same BASIC program using the same
+variable, and each of them must have its own looping procedure name.)
+
+<P>
+There is a slight complication in the <CODE>print</CODE> and
+<CODE>input</CODE> commands to deal with quoted character strings.  The
+trouble is that Logo's idea of a word ends with a space, so it's not easy to
+translate
+
+<PRE>
+20 print "hi there"
+</PRE>
+
+<P>
+into a Logo instruction in which the string is explicitly
+present in the instruction.  Instead, the BASIC compiler creates a
+Logo global variable with a generated name, and uses that variable
+in the compiled Logo instructions.
+
+<P>
+The trickiest compilation problem comes from the <CODE>if</CODE> command, because
+it includes another command as part of itself.  That included command might
+be translated into several Logo instructions, all of which should be
+made to depend on the condition that the <CODE>if</CODE> is testing.  The solution
+is to put the translation of the inner command into a separate procedure,
+so that the BASIC command line
+
+<PRE>
+50 if x<6 then print x, x*x
+</PRE>
+
+<P>
+is translated into the two Logo procedures
+
+<PRE>
+to basic%50
+if :%x < 6 [%g2]
+nextline 50
+end
+
+to %g2
+type :%x
+type char 9
+type :%x * :%x
+print []
+end
+</PRE>
+
+<P>
+Unfortunately, this doesn't quite work if the inner command is
+a <CODE>goto</CODE>.  If we were to translate
+
+<PRE>
+60 if :foo < 10 then goto 200
+</PRE>
+
+<P>
+into
+
+<PRE>
+to basic%60
+if :%foo < 10 [%g3]
+nextline 60
+end
+
+to %g3
+basic%200 stop
+end
+</PRE>
+
+<P>
+then the <CODE>stop</CODE> inside <CODE>%g3</CODE> would stop only <CODE>%g3</CODE>
+itself, not <CODE>basic%60</CODE> as desired.  So the code generator for <CODE>if</CODE>
+checks to see whether the result of compiling the inner command is a single
+Logo instruction line; if so, that line is used directly in the compiled
+Logo <CODE>if</CODE> rather than diverted into a subprocedure:
+
+<PRE>
+to basic%60
+if :%foo < 10 [basic%200 stop]
+nextline 60
+end
+</PRE>
+
+<P>
+How does the code generator for <CODE>if</CODE> divert the result of compiling
+the inner command away from the definition of the overall BASIC command
+line?  Here is the relevant part of the compiler:
+
+<PRE>
+to compile.if :command
+make "command butfirst :command
+make "exp expression
+make "delimiter pop "command
+if not equalp :delimiter "then [(throw "error [Need then after if.])]
+queue "definition (sentence "if :exp (list c.if1))
+end
+
+to c.if1
+local "definition
+make "definition [[]]
+run list (word "compile. first :command) :command
+ifelse (count :definition) = 2 ~
+       [output last :definition] ~
+       [make "newname word "% gensym
+        define :newname :definition
+	output (list :newname)]
+end
+</PRE>
+
+<P>
+The first few lines of this are straightforwardly parsing the
+part of the BASIC <CODE>if</CODE> command up to the word <CODE>then</CODE>.  What
+happens next is a little tricky; a subprocedure <CODE>c.if1</CODE> is invoked
+to parse and translate the inner command.  It has to be a subprocedure
+because it creates a local variable named <CODE>definition</CODE>; when the
+inner command is compiled, this local variable &quot;steals&quot; the generated
+code.  If there is only one line of generated code, then <CODE>c.if1</CODE> outputs
+that line; if more than one, then <CODE>c.if1</CODE> creates a subprocedure
+and outputs an instruction to invoke that subprocedure.  This technique
+depends on Logo's dynamic scope, so that references to the variable
+named <CODE>definition</CODE> in other parts of the compiler (such as, for
+example, <CODE>compile.print</CODE> or <CODE>compile.goto</CODE>) will refer to this
+local version.
+
+<H2>The Runtime Library</H2>
+
+<P>
+We've already seen the most important part of the runtime library: the
+procedure <CODE>nextline</CODE> that gets the compiled program from one line
+to the next.
+
+<P>
+There is only one more procedure needed as runtime support; it's called
+<CODE>readvalue</CODE> and it's used by the BASIC <CODE>input</CODE>
+command.  In <CODE>BASIC</CODE>, data input is independent of lines.  If a
+single <CODE>input</CODE> command includes two variables, the user can type
+the two desired values on separate lines or on a single line.  Furthermore,
+two <EM>separate</EM> <CODE>input</CODE> commands can read values from a
+single line, if there are still values left on the line after the first
+<CODE>input</CODE> has been satisfied.  <CODE>Readvalue</CODE> uses a global
+variable <CODE>readline</CODE> whose value is whatever's still available
+from the last data input line, if any.  If there is nothing available, it
+reads a new line of input.
+
+<P>
+A more realistic BASIC implementation would include runtime library
+procedures to compute built-in functions (the equivalent to Logo's
+primitive operations) such as absolute value or the trigonometric
+functions.
+
+<H2>Further Explorations</H2>
+
+<P>
+This BASIC compiler leaves out many features of a complete implementation.
+In a real BASIC, a string can be the value of a variable, and there are
+string operations such as concatenation and substring extraction analogous
+to the arithmetic operations for numbers.  The BASIC programmer can create
+an array of numbers, or an array of strings.  In some versions of BASIC,
+the programmer can define named subprocedures, just as in Logo.  For the
+purposes of this chapter, I wanted to make the compiler as simple as possible
+and still have a usable language.  If you want to extend the compiler, get
+a BASIC textbook and start implementing features.
+
+<P>
+It's also possible to expand the immediate command capabilities of the
+compiler.  In most BASIC implementations, for example, you can say
+<CODE>list 100-200</CODE> to list only a specified range of lines within the
+source program.
+
+<P>
+A much harder project would be to replace the code generator in this
+compiler with one that generates machine language for your computer.
+Instead of using <CODE>define</CODE> to create Logo procedures, your compiler
+would then write machine language instructions into a data file.
+To do this, you must learn quite a lot about how machine language
+programs are run on your computer!
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch5/v2ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch7/v2ch7.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<P>
+I haven't discussed every detail of the program.  For example, you may
+want to trace through what happens when you ask to delete a line from
+the BASIC source program.  Here is the complete compiler.
+
+<PRE>
+to basic
+make "linenumbers []
+make "readline []
+forever [basicprompt]
+end
+
+to basicprompt
+print []
+print "READY
+print []
+make "line basicread
+if emptyp :line [stop]
+ifelse numberp first :line [compile split :line] [immediate :line]
+end
+
+to compile :commands
+make "number first :commands
+make :number :line
+ifelse emptyp butfirst :commands ~
+       [eraseline :number] ~
+       [makedef (word "basic% :number) butfirst :commands]
+end
+
+to makedef :name :commands
+make "definition [[]]
+foreach :commands [run list (word "compile. first ?) ?]
+queue "definition (list "nextline :number)
+define :name :definition
+make "linenumbers insert :number :linenumbers
+end
+
+to insert :num :list
+if emptyp :list [output (list :num)]
+if :num = first :list [output :list]
+if :num < first :list [output fput :num :list]
+output fput first :list (insert :num butfirst :list)
+end
+
+to eraseline :num
+make "linenumbers remove :num :linenumbers
+end
+
+to immediate :line
+if equalp :line [list] [foreach :linenumbers [print thing ?] stop]
+if equalp :line [run] [run (list (word "basic% first :linenumbers))
+                       stop]
+if equalp :line [exit] [throw "toplevel]
+print sentence [Invalid command:] :line
+end
+
+;; Compiling each BASIC command
+
+to compile.end :command
+queue "definition [stop]
+end
+
+to compile.goto :command
+queue "definition (list (word "basic% last :command) "stop)
+end
+
+to compile.gosub :command
+queue "definition (list (word "basic% last :command))
+end
+
+to compile.return :command
+queue "definition [stop]
+end
+
+to compile.print :command
+make "command butfirst :command
+while [not emptyp :command] [c.print1]
+queue "definition [print []]
+end
+
+to c.print1
+make "exp expression
+ifelse equalp first first :exp "" ~
+       [make "sym gensym
+        make word "%% :sym butfirst butlast first :exp
+        queue "definition list "type word ":%% :sym] ~
+       [queue "definition fput "type :exp]
+if emptyp :command [stop]
+make "delimiter pop "command
+if equalp :delimiter ", [queue "definition [type char 9] stop]
+if equalp :delimiter "\; [stop]
+(throw "error [Comma or semicolon needed in print.])
+end
+
+to compile.input :command
+make "command butfirst :command
+if equalp first first :command "" ~
+   [make "sym gensym
+    make "prompt pop "command
+    make word "%% :sym butfirst butlast :prompt
+    queue "definition list "type word ":%% :sym]
+while [not emptyp :command] [c.input1]
+end
+
+to c.input1
+make "var pop "command
+queue "definition (list "make (word ""% :var) "readvalue)
+if emptyp :command [stop]
+make "delimiter pop "command
+if not equalp :delimiter ", (throw "error [Comma needed in input.])
+end
+
+to compile.let :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = in let.])]
+make "exp expression
+queue "definition (sentence "make (word ""% :var) :exp)
+end
+
+to compile.for :command
+make "command butfirst :command
+make "var pop "command
+make "delimiter pop "command
+if not equalp :delimiter "= [(throw "error [Need = after for.])]
+make "start expression
+make "delimiter pop "command
+if not equalp :delimiter "to [(throw "error [Need to after for.])]
+make "end expression
+queue "definition (sentence "make (word ""% :var) :start)
+queue "definition (sentence "make (word ""let% :var) :end)
+make "newname word "% gensym
+queue "definition (sentence "make (word ""next% :var)
+                                  (list (list :newname)))
+queue "definition (list :newname)
+define :name :definition
+make "name :newname
+make "definition [[]]
+end
+
+to compile.next :command
+make "command butfirst :command
+make "var pop "command
+queue "definition (sentence "make (word ""% :var) (word ":% :var) [+ 1])
+queue "definition (sentence [if not greaterp]
+                            (word ":% :var) (word ":let% :var)
+                            (list (list "run (word ":next% :var)
+                                        "stop)))
+end
+
+to compile.if :command
+make "command butfirst :command
+make "exp expression
+make "delimiter pop "command
+if not equalp :delimiter "then [(throw "error [Need then after if.])]
+queue "definition (sentence "if :exp (list c.if1))
+end
+
+to c.if1
+local "definition
+make "definition [[]]
+run list (word "compile. first :command) :command
+ifelse (count :definition) = 2 ~
+       [output last :definition] ~
+       [make "newname word "% gensym
+        define :newname :definition
+	output (list :newname)]
+end
+
+;; Compile an expression for LET, IF, PRINT, or FOR
+
+to expression
+make "expr []
+make "token expr1
+while [not emptyp :token] [queue "expr :token
+                           make "token expr1]
+output :expr
+end
+
+to expr1
+if emptyp :command [output []]
+make "token pop "command
+if memberp :token [+ - * / = < > ( )] [output :token]
+if memberp :token [, \; : then to] [push "command :token  output []]
+if numberp :token [output :token]
+if equalp first :token "" [output :token]
+output word ":% :token
+end
+
+
+
+;; reading input
+
+to basicread
+output basicread1 readword [] "
+end
+
+to basicread1 :input :output :token
+if emptyp :input [if not emptyp :token [push "output :token]
+                  output reverse :output]
+if equalp first :input "| | [if not emptyp :token [push "output :token]
+                             output basicread1 (butfirst :input)
+                                               :output "]
+if equalp first :input "" [if not emptyp :token [push "output :token]
+                             output breadstring butfirst :input
+                                                :output "]
+if memberp first :input [+ - * / = < > ( ) , \; :] ~
+   [if not emptyp :token [push "output :token]
+    output basicread1 (butfirst :input) (fput first :input :output) "]
+output basicread1 (butfirst :input) :output (word :token first :input)
+end
+
+to breadstring :input :output :string
+if emptyp :input [(throw "error [String needs ending quote.])]
+if equalp first :input "" ~
+   [output basicread1 (butfirst :input)
+                      (fput (word "" :string "") :output)
+                      "]
+output breadstring (butfirst :input) :output (word :string first :input)
+end
+
+to split :line
+output fput first :line split1 (butfirst :line) [] []
+end
+
+to split1 :input :output :command
+if emptyp :input [if not emptyp :command [push "output reverse :command]
+                  output reverse :output]
+if equalp first :input ": [if not emptyp :command
+                              [push "output reverse :command]
+                           output split1 (butfirst :input) :output []]
+output split1 (butfirst :input) :output (fput first :input :command)
+end
+
+;; Runtime library
+
+to nextline :num
+make "target member :num :linenumbers
+if not emptyp :target [make "target butfirst :target]
+if not emptyp :target [run (list (word "basic% first :target))]
+end
+
+to readvalue
+while [emptyp :readline] [make "readline basicread]
+output pop "readline
+end
+</PRE>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch5/v2ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch7/v2ch7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch7/match.html b/js/games/nluqo.github.io/~bh/v2ch7/match.html
new file mode 100644
index 0000000..d160258
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch7/match.html
@@ -0,0 +1,1437 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 7: Pattern Matcher</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Pattern Matcher</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch6/v2ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch8/v2ch8.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="match.lg"><CODE>match</CODE></A>
+
+<P>
+In a <EM>conversational</EM> program, one that carries on a conversation with
+the user, you may often have occasion to compare what the user types with
+some expected response.  For example, a quiz program will compare the user's
+response with the correct answer; if you've just asked &quot;how are you,&quot; you
+might look for words like &quot;fine&quot; or &quot;lousy&quot; in the reply.  The main
+tools that Logo provides for such comparisons are <CODE>equalp</CODE>, which
+compares two values for exact equality, and <CODE>memberp</CODE>, which compares
+one datum with a list of alternatives.  This project provides a more
+advanced comparison tool.
+
+<P>Most of the projects in this book are fairly complicated in their inner
+workings, but relatively simple in the external appearance of what they do.
+This project is the reverse; the actual program is not so complex, but it
+does quite a lot, and it will take a while to explain all of it.  Pattern
+matching is a powerful programming tool, and I hope you won't be put off by
+the effort required to learn how to use it.
+
+<P>A <EM>pattern</EM> is a list in which some members are not made explicit.
+This definition is best understood by considering an example.  Consider the
+pattern
+
+<P><PRE>[Every # is a #]
+</PRE>
+
+<P>The words <CODE>every</CODE>, <CODE>is</CODE>, and <CODE>a</CODE> represent themselves
+explicitly.  The two number signs, however, are symbols representing &quot;zero
+or more arbitrary data.&quot; Here are some lists that would match the
+pattern:
+
+<P><PRE>[Every man is a mortal]
+[Every computer programmer is a genius]
+[Every is a word]
+[Every datum is a word or a list]
+</PRE>
+
+<P>Here are some lists that would <EM>not</EM> match the pattern:
+
+<P><PRE>[Socrates is a man]
+[Every man is an animal]
+[Everyone I know is a friend]
+[I think every list is a match]
+</PRE>
+
+<P>The first of these examples doesn't match the pattern because the
+word <CODE>every</CODE> is missing.  The second has <CODE>an</CODE> instead of <CODE>a</CODE>,
+while the third has <CODE>everyone</CODE> instead of <CODE>every</CODE>.  The fourth has
+the extra words <CODE>I think</CODE> before the word <CODE>every</CODE>.  This last
+example <EM>would</EM> match the pattern
+
+<P><PRE>[# every # is a #]
+</PRE>
+
+<P>because this new pattern allows for extra words at the beginning.
+
+<P><CODE>Match</CODE> is a predicate that takes two inputs.  The first input is a
+pattern and the second input is a sentence.  The output is <CODE>true</CODE> if the
+sentence matches the pattern, otherwise <CODE>false</CODE>.
+
+<P><PRE>? <U>print match [Every # is a #] [Every book is a joy to read]</U>
+true
+? <U>print match [Every # is a #] [Every adolescent is obnoxious]</U>
+false
+</PRE>
+
+<P>Patterns can be more complicated than the ones I've shown so far.  In the
+following paragraphs I'll introduce the many ways that you can modify
+patterns to control which sentences they'll match.  As you read, you should
+make up sample patterns of your own and try them out with <CODE>match</CODE>.
+
+<P>Often, in a conversational program, it's not good enough just to know
+whether or not a sentence matches a pattern.  You also want to know the
+pieces of the sentence that match the variable parts of the pattern.  <CODE>
+Match</CODE> meets this requirement by allowing you to tell it the names of
+variables that you want to receive the matching words from the sentence.
+Here is an example:
+
+<P><PRE>? <U>print match [#food is for #animal] [Hay is for horses]</U>
+true
+? <U>show :food</U>
+[Hay]
+? <U>show :animal</U>
+[horses]
+
+? <U>print match [#food is for #animal] [C++ is for the birds]</U>
+true
+? <U>show :food</U>
+[C++]
+? <U>show :animal</U>
+[the birds]
+</PRE>
+
+<P>Here is a short <A NAME="converse"> conversational program using the parts of the
+pattern matcher we've discussed so far.
+
+<P><PRE>to converse
+local [response name like]
+print [Hi, my name is Toby and I like ice cream]
+print [Tell me about yourself]
+make &quot;response readlist
+if match [# my name is #name] :response [do.name strip.and :name]
+if match [# i like #like] :response [do.like strip.and :like]
+print [Nice meeting you!]
+end
+
+to do.name :name
+print sentence &quot;Hello, :name
+end
+
+to do.like :like
+print sentence [I'm glad you like] :like
+end
+
+to strip.and :text
+local &quot;short
+if match [#short and #] :text [output :short]
+output :text
+end
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I like Chinese food</U>
+Hello, Brian
+I'm glad you like Chinese food
+Nice meeting you!
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>I like spaghetti and meat balls</U>
+I'm glad you like spaghetti
+Nice meeting you!
+</PRE>
+
+<P>If <CODE>match</CODE> outputs <CODE>false</CODE>, there is no guarantee of what
+values will end up in the variables mentioned in the pattern.  <CODE>
+Converse</CODE> uses the result of the match only if <CODE>match</CODE> outputs <CODE>
+true</CODE>.
+
+<P><CODE>Converse</CODE> looks for each part of the sentence (the name and the thing
+the person likes) in two steps: first it finds the keywords <CODE>my name is</CODE>
+or <CODE>I like</CODE> and extracts everything following those phrases, then it
+looks within what it extracted for the word <CODE>and</CODE> and removes anything
+following it.  For example, when I typed
+
+<P><PRE>My name is Brian and I like Chinese food
+</PRE>
+
+<P>the result of matching the name pattern was to give the variable
+<CODE>name</CODE> the value
+
+<P><PRE>Brian and I like Chinese food
+</PRE>
+
+<P>Then <CODE>strip.and</CODE> used a second pattern to eliminate everything
+after the <CODE>and</CODE>.  You might be tempted to extract the name in one step
+by using a pattern like
+
+<P><PRE>[# my name is #name and #]
+</PRE>
+
+<P>but I wanted to avoid that pattern because it won't match a
+sentence that only contains
+
+<P><PRE>my name is Mary
+</PRE>
+
+<P>without expressing any likes or dislikes.  The program as I've
+written it does accept these shorter sentences also.  Later we'll see a more
+complicated pattern that accepts sentences with or without <CODE>and</CODE>
+using a single pattern.
+
+<P>The special symbol <CODE>#</CODE> in a pattern represents zero or more words.  <CODE>
+Match</CODE> recognizes other symbols with different meanings:
+
+<P><TABLE>
+<TR><TD><CODE>#</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more
+<TR><TD><CODE>&amp;</CODE><TD>&nbsp;&nbsp;&nbsp;one or more
+<TR><TD><CODE>?</CODE><TD>&nbsp;&nbsp;&nbsp;zero or one
+<TR><TD><CODE>!</CODE><TD>&nbsp;&nbsp;&nbsp;exactly one
+</TABLE>
+
+<P>For example, if you'd like the <CODE>converse</CODE> program to recognize
+only the first name of the person using it, you could change the relevant
+pattern to
+
+<P><PRE>[# my name is !name #]
+</PRE>
+
+<P>Then a conversation with the program might look like this:
+
+<P><PRE>? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian Harvey</U>
+Hello, Brian
+Nice meeting you!
+?
+</PRE>
+
+<P>The word <CODE>!name</CODE> in the pattern matched just the single word
+<CODE>Brian</CODE>, not the multiple words <CODE>Brian Harvey</CODE> that the original
+pattern would have selected.  (If you modify <CODE>converse</CODE> in this way, it
+should be possible to remove the invocation of <CODE>strip.and</CODE> in computing
+the input to <CODE>do.name</CODE>.  The single word stored in the variable <CODE>name</CODE> won't
+contain any other clauses.)
+
+<P>So far, the patterns we've seen allow two extremes: the pattern can include
+a single word that must be matched exactly, or it can allow <EM>any</EM> word
+at all to be matched.  It is also possible to write a pattern that calls for
+words in some specified category--that is, words that satisfy some
+predicate.  Here is an example:
+
+<P><PRE>to ask.age
+local &quot;age
+print [How old are you?]
+if match [# !age:numberp #] readlist ~
+   [print (sentence [You are] :age [years old.]]
+end
+
+? <U>ask.age</U>
+How old are you?
+<U>I will be 36 next month</U>
+You are 36 years old.
+</PRE>
+
+<P>This is a slightly silly example, but it does illustrate the use
+of a predicate to restrict which words can match a variable part of a
+pattern.  The pattern used in <CODE>ask.age</CODE> looks for a single word for
+which <CODE>numberp</CODE> is <CODE>true</CODE>, that is, for a number.  Any number of
+words surrounding the number are allowed.
+
+<P>Of course, a predicate used in a pattern need not be a primitive one like
+<CODE>numberp</CODE>.  You may find it useful to write your own predicates that
+select categories of words.  Such a predicate might have a list built in:
+
+<P><PRE>to colorp :word
+output memberp :word [red orange yellow blue green violet white black]
+end
+</PRE>
+
+<P>Or you could check some inherent property of a word:
+
+<P><PRE>to ends.y :word
+output equalp last :word &quot;y
+end
+</PRE>
+
+<P>In either case, what is essential is that your predicate must take
+a word as its single input, and must output <CODE>true</CODE> if you want <CODE>
+match</CODE> to accept the word to fill a slot in the pattern.
+
+<P>It is most common to want a predicate like <CODE>colorp</CODE>
+above--one that tests its input word for membership in a certain list.  A
+special notation makes it possible to include such a list in the pattern
+itself, instead of writing a predicate procedure.  For example, suppose you
+are writing a quiz program, and you want to ask the question, &quot;What is the
+quickest route from Boston to Framingham?&quot; You'd like to accept answers
+like these:
+
+<P><PRE>Mass Pike
+the Massachusetts Turnpike
+the Pike
+</PRE>
+
+<P>but not <CODE>the Ohio Turnpike</CODE>!  Here is a pattern you could use.
+
+<P><PRE>[?:in [the] ?:in [Mass Massachusetts] !:in [Pike Turnpike]]
+</PRE>
+
+<P>The special predicate <CODE>in</CODE> is a version of <CODE>memberp</CODE> that
+knows to look in the pattern, right after the element that invokes <CODE>in</CODE>,
+for the list of acceptable words.  This pattern accepts zero or one <CODE>
+the</CODE>, zero or one of <CODE>Mass</CODE> or <CODE>Massachusetts</CODE>, and one of <CODE>
+Pike</CODE> or <CODE>Turnpike</CODE>.  That is, the first two words are optional and the
+third is required.
+
+<P>Earlier I rejected the use of a pattern
+
+<P><PRE>[# my name is #name and #]
+</PRE>
+
+<P>because I wanted also to be able to accept sentences without <CODE>
+and</CODE> following the name.  I promised to exhibit a pattern that would accept
+both sentence forms.  Here it is:
+
+<P><PRE>[# my name is #name:notand #]
+</PRE>
+
+<P>This pattern uses a predicate <CODE>notand</CODE> that allows any word
+except <CODE>and</CODE>.  It's easy to write this predicate:
+
+<P><PRE>to notand :word
+output not equalp :word &quot;and
+end
+</PRE>
+
+<P>(By the way, the symbols indicating the number of words to match are meant
+to be mnemonic.  The question mark indicates that it's questionable whether
+or not the word will be in the sentence.  The exclamation point looks a
+little like a digit 1, and also shouts emphatically that the word is
+present.  The number sign means that any number of words (including zero) is
+okay, and the ampersand indicates that more words are required, namely at
+least one instead of at least zero.)
+
+<P>We've seen various combinations of quantifiers (that's what I'll call
+the characters like <CODE>#</CODE> that control how many words are matched),
+variable names, and predicates:
+
+<P><TABLE>
+<TR><TD><CODE>#</CODE><TD>&nbsp;&nbsp;&nbsp;no variable, no predicate (accept any word)
+<TR><TD><CODE>#name</CODE><TD>&nbsp;&nbsp;&nbsp;set variable, no predicate
+<TR><TD><CODE>?:in</CODE><TD>&nbsp;&nbsp;&nbsp;no variable, test predicate
+<TR><TD><CODE>!age:numberp</CODE><TD>&nbsp;&nbsp;&nbsp;set variable, test predicate
+</TABLE>
+
+<P>We are now about to discuss some of the more esoteric features of
+the <CODE>match</CODE> program.  So far, we have always compared a pattern against
+a <EM>sentence,</EM> a list of words.  It is also possible to match a pattern
+against a structured list, with smaller lists among its members.  <CODE>Match</CODE>
+treats a sublist just like a word, if you don't want to examine the inner
+structure of the sublist.  Here are some examples.
+
+<P><PRE>? <U>print match [hello #middle goodbye] [hello is [very much] like goodbye]</U>
+true
+? <U>show :middle</U>
+[is [very much] like]
+? <U>print match [hi #middle:wordp bye] [hi and then bye]</U>
+true
+? <U>show :middle</U>
+[and then]
+? <U>print match [hi #middle:wordp bye] [hi and [then] bye]</U>
+false
+
+? <U>print match [hi #mid:wordp #dle:listp bye] [hi and [then] bye]</U>
+true
+? <U>show :mid show :dle</U>
+[and]
+[[then]]
+</PRE>
+
+<P>A more interesting possibility is to ask <CODE>match</CODE> to apply a
+sub-pattern to a sublist.  This is done by using the pattern (that is, a
+list) in place of the name of a predicate.  Here is an example:
+
+<P><PRE>? <U>print match [a #:[x # y] b] [a [x 111 y] [x 222 y] b]</U>
+true
+? <U>print match [a #:[x # y] b] [a [x 333 zzz] b]</U>
+false
+</PRE>
+
+<P>It is possible to include variable names in the subpattern, but
+this makes sense only if the quantifier outside the pattern is <CODE>!</CODE> or
+<CODE>?</CODE> because otherwise you may be trying to assign more than one value to
+the same variable.  Here's what I mean:
+
+<P><PRE>? <U>print match [a #all:[x #some y] b] [a [x 111 y] [x 222 y] b]</U>
+true
+? <U>show :all show :some</U>
+[[x 111 y] [x 222 y]]
+[222]
+</PRE>
+
+<P>The variable <CODE>all</CODE> is properly set to contain both of the
+lists that matched the subpattern, but the variable <CODE>some</CODE> only contains
+the result of the second match.
+
+<P>If a list appears in a pattern without a quantifier before it, <CODE>match</CODE>
+treats it as if it were preceded by &quot;<CODE>!:</CODE>&quot;; in other words, it tries
+to match the subpattern exactly once.
+
+<P>A pattern element like <CODE>#:predicate</CODE> can match several members of the
+target sentence; the predicate is applied to each candidate member
+separately.  For example:
+
+<P><PRE>? <U>print match [#nums:numberp #rest] [3 2 1 blastoff!]</U>
+true
+? <U>show :nums show :rest</U>
+[3 2 1]
+[blastoff!]
+</PRE>
+
+<P>Sometimes you may want to match several members of a sentence, but
+apply the predicate to all of the candidates <EM>together</EM> in one list.
+To do this, use the quantifier <CODE>@</CODE>:
+
+<P><PRE>to threep :list
+output equalp count :list 3
+end
+
+? <U>print match [@begin:threep #rest] [a b c d e]</U>
+true
+? <U>show :begin show :rest</U>
+[a b c]
+[d e]
+</PRE>
+
+<P>In this example, I haven't used the predicate to examine the <EM>
+nature</EM> of the matching words, but rather to control the <EM>number</EM> of
+words that are matched.  Here is another example that looks &quot;inside&quot; the
+matching words.
+
+<P><PRE>to headtailp :list
+if (count :list) &lt; 2 [output &quot;false]
+output equalp first :list last :list
+end
+
+? <U>print match [#front @good:headtailp #back] [a b c x d e f g x h i]</U>
+true
+? <U>show :front show :good show :back</U>
+[a b c]
+[x d e f g x]
+[h i]
+</PRE>
+
+<P>Think about all the different tests that <CODE>match</CODE> has to make
+to find this match!  Also, do you see why the first instruction of <CODE>
+headtailp</CODE> is needed?
+
+<P>Some patterns are <EM>ambiguous;</EM> that is, there might be more than one
+way to associate words from the matched sentence with quantifiers in the
+pattern.  For example, what should the following do?
+
+<P><PRE>match [#front xx #back] [a b c d xx e f g xx h i]
+</PRE>
+
+<P>The word <CODE>xx</CODE> appears twice in the matched sentence.  The
+program could choose to use everything up to the first <CODE>xx</CODE> as <CODE>
+front</CODE>, leaving six words for <CODE>back</CODE>, or it could choose to use
+everything up to the second <CODE>xx</CODE> as <CODE>front</CODE>, leaving only two words
+for <CODE>back</CODE>.  In fact, each quantifier, starting from the left, matches
+as many words as it can:
+
+<P><PRE>? <U>print match [#front xx #back] [a b c d xx e f g xx h i]</U>
+true
+? <U>show :front show :back</U>
+[a b c d xx e f g]
+[h i]
+</PRE>
+
+<P>If that's not what you want, the quantifier <CODE>^</CODE> behaves
+like <CODE>#</CODE> except that it matches as <EM>few</EM> words as possible.
+
+<P><PRE>? <U>print match [^front xx #back] [a b c d xx e f g xx h i]</U>
+true
+? <U>show :front show :back</U>
+[a b c d]
+[e f g xx h i]
+</PRE>
+
+<P>We can use the <CODE>^</CODE> quantifier to fix a bug
+in <A HREF="match.html#converse">the <CODE>converse</CODE>
+program</A>:
+
+<P><PRE>? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I like bacon and eggs</U>
+Hello, Brian and I like bacon
+I'm glad you like bacon
+Nice meeting you!
+</PRE>
+
+<P>The problem here is that the pattern used by <CODE>strip.and</CODE>
+divided the sentence at the second <CODE>and</CODE>, just as the earlier example
+chose the second <CODE>xx</CODE> when I used <CODE>#</CODE> as the quantifier.  We
+can fix it this way:
+
+<P><PRE>to strip.and :text
+local &quot;short
+if match [^short and #] :text [output :short]
+output :text
+end
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I like bacon and eggs</U>
+Hello, Brian
+I'm glad you like bacon
+Nice meeting you!
+</PRE>
+
+<P>There is just one more special feature of <CODE>match</CODE> left to describe.  It
+is another special predicate, like <CODE>in</CODE>, but this one is called <CODE>
+anyof</CODE>.  When you use <CODE>anyof</CODE>, the next member of the pattern should be
+a <EM>list of patterns</EM> to test.  <CODE>Match</CODE> tries each pattern in turn,
+applied to list members as determined by the quantifier used.  In practice,
+though, <CODE>anyof</CODE> only makes sense when applied to several members as a
+group, so the quantifier <CODE>@</CODE> should always be used.  An example may make
+this clear.  I'm going to rewrite the <CODE>converse</CODE> program to check for
+names and likes all at once.
+
+<P><PRE>to converse
+local [response name like rest]
+print [Hi, my name is Toby and I like ice cream]
+print [Tell me about yourself]
+make &quot;response readlist
+while match [@:anyof [[My name is #name:notand]
+                      [I like #like:notand]
+                      [&amp;:notand]]
+                     ?:in [and] #rest] ~
+            :line ~
+      [make &quot;response :rest]
+if not emptyp :name [print sentence &quot;Hello, :name]
+if not emptyp :like [print sentence [I'm glad you like] :like]
+print [Nice meeting you!]
+end
+</PRE>
+
+<P>This program uses the <CODE>notand</CODE> predicate I wrote earlier.  It
+checks for clauses separated by the word <CODE>and</CODE>.  Each clause can match
+any of three patterns, one for the name, one for the liking, and a general
+pattern that matches any other clause.  The clauses can appear in any order.
+
+<P><PRE>? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I hate cheese</U>
+Hello, Brian
+Nice meeting you!
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>I like wings and my name is Jonathan</U>
+Hello, Jonathan
+I'm glad you like wings
+Nice meeting you!
+</PRE>
+
+<P><H2>Reinventing <CODE>Equalp</CODE> for Lists</H2>
+
+<P>
+
+<P><CODE>Match</CODE> is a kind of fancy <CODE>equalp</CODE> with a complicated understanding
+of what equality means.  One way to approach an understanding of <CODE>match</CODE>
+is to begin with this question:  Suppose Logo's primitive <CODE>equalp</CODE> only
+worked for comparing two <EM>words</EM> for equality.  (For the remainder of
+this section, I won't use the word <CODE>equalp</CODE> at all; I'll call this
+imaginary primitive <CODE>wordequalp</CODE> instead.)  How would you write a
+<CODE>listequalp</CODE> to compare two lists?  This is basically a <CODE>
+butfirst</CODE>-style recursive operation, but you have to be a little careful
+about the fact that either input might be smaller than the other.
+
+<P><PRE>to listequalp :a :b
+if emptyp :a [output emptyp :b]
+if emptyp :b [output &quot;false]
+if wordequalp first :a first :b ~
+   [output listequalp butfirst :a butfirst :b]
+output &quot;false
+end
+</PRE>
+
+<P>(This procedure contains the instruction <CODE>output &quot;false</CODE>
+twice, but it never says <CODE>output &quot;true</CODE>.  How can it ever say that two
+lists are equal?)
+
+<P>There is one deficiency in the procedure as I've defined
+it.  The problem is that it only works for <EM>sentences</EM>--lists whose
+members are words.  If either list contains a sublist, <CODE>listequalp</CODE> will
+try to apply <CODE>wordequalp</CODE> to that sublist.  If you enjoy the exercise of
+reinventing Logo primitives, you may want to fix that.  But for my purposes,
+the version here is good enough as a basis for further development of the
+pattern matcher.
+
+<P><H2>A Simple Pattern Matcher</H2>
+
+<P>We can extend the idea of <CODE>listequalp</CODE> slightly to make a pattern
+matcher that only recognizes the special word <CODE>#</CODE> to mean &quot;match zero
+or more words.&quot; We won't do any of the fancy things like storing the
+matching words in a variable.
+
+<P><PRE>to match :pat :sen
+if emptyp :pat [output emptyp :sen]
+if emptyp :sen [if equalp first :pat &quot;#
+                   [output match butfirst :pat :sen]
+                   [output &quot;false]]
+if equalp first :pat &quot;# [output or match butfirst :pat :sen
+                                   match :pat butfirst :sen]
+if equalp first :pat first :sen ~
+   [output match butfirst :pat butfirst :sen]
+output &quot;false
+end
+</PRE>
+
+<P>The end test is more complicated in this program than in <CODE>listequalp</CODE>
+because the combination of an empty sentence and a nonempty pattern can
+still be a match, if the pattern is something like <CODE>[#]</CODE> that matches
+zero or more words.
+
+<P>
+
+<P>The really interesting part of this procedure is what happens if a <CODE>#</CODE>
+is found in the pattern.  The match succeeds (outputs <CODE>true</CODE>) if one of
+two smaller matches succeeds.  The two smaller matches correspond to two
+possible conditions: the <CODE>#</CODE> can match zero words, or more than zero.
+The first case is detected by the expression
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>For example, suppose you want to evaluate
+
+<P><PRE>match [# cream] [cream]
+</PRE>
+
+<P>This expression should yield the value <CODE>true</CODE>, with the <CODE>
+#</CODE> matching no words in the sentence.  In this example the expression
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>is equivalent to
+
+<P><PRE>match [cream] [cream]
+</PRE>
+
+<P>which straightforwardly outputs <CODE>true</CODE>.
+
+<P>On the other hand, the expression
+
+<P><PRE>match :pat butfirst :sen
+</PRE>
+
+<P>comes into play when the <CODE>#</CODE> has to match at least one word.
+For example, consider the expression
+
+<P><PRE>match [# cream] [ice cream]
+</PRE>
+
+<P>Here the <CODE>#</CODE> should match the word <CODE>ice</CODE>.  The expression
+
+<P><PRE>match :pat butfirst :sen
+</PRE>
+
+<P>is here equivalent to
+
+<P><PRE>match [# cream] [cream]
+</PRE>
+
+<P>But this is the example that was <CODE>true</CODE> just above.
+
+<P>If the <CODE>#</CODE> has to match more than one word, several recursive
+invocations of <CODE>match</CODE> are required, each one taking the <CODE>butfirst</CODE>
+of the sentence once.  For example, suppose we start with
+
+<P><PRE>match [# cream] [vanilla ice cream]
+</PRE>
+
+<P>Here is the sequence of recursive invocations leading to a <CODE>
+true</CODE> match:
+
+<P><PRE>match :pat butfirst :sen      match [# cream] [ice cream]
+  match :pat butfirst :sen      match [# cream] [cream]
+    match butfirst :pat :sen      match [cream] [cream]
+</PRE>
+
+<P>I have been talking as if Logo only evaluated whichever of the two
+expressions
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>and
+
+<P><PRE>match :pat butfirst :sen
+</PRE>
+
+<P>is appropriate for the particular inputs used.  Actually, <EM>
+both</EM> expressions are evaluated each time, so there are many recursive
+invocations of <CODE>match</CODE> that come out <CODE>false</CODE>.  However, the purpose
+of the primitive operation <CODE>or</CODE> is to output <CODE>true</CODE> if <EM>
+either</EM> of its inputs is <CODE>true</CODE>.  To understand fully how <CODE>match</CODE>
+works, you'll almost certainly have to trace a few examples carefully by
+hand.
+
+<P><H2>Efficiency and Elegance</H2>
+
+
+<P>Pattern matching is a complicated task, and even the best-written programs
+are not blindingly fast.  But what is the &quot;best-written&quot; program?  In the
+simple pattern matcher of the last section, the instruction
+
+<P><PRE>if equalp first :pat &quot;# [output or match butfirst :pat :sen
+                                   match :pat butfirst :sen]
+</PRE>
+
+<P>is extremely compact and elegant.  It packs a lot of power into a
+single instruction, by combining the results of two recursive invocations
+with <CODE>or</CODE>.  The similarity of the inputs to the two invocations is also
+appealing.
+
+<P>The trouble with this instruction is that it is much slower than necessary,
+because it always tries both recursive invocations even if the first one
+succeeds.  A more efficient way to program the same general idea would be
+this:
+
+<P><PRE>if equalp first :pat &quot;# ~
+   [if match butfirst :pat :sen
+       [output &quot;true]
+       [output match :pat butfirst :sen]]
+</PRE>
+
+<P>This new version is much less pleasing to the eye, but it's much
+faster.  The reason is that if the expression
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>outputs <CODE>true</CODE>, then the other recursive invocation is avoided.
+
+<P>It's a mistake to make efficiency your only criterion for program style.
+Sometimes it's worth a small slowdown of your program to achieve a large
+gain in clarity.  But this is a case in which the saving is quite
+substantial.  Here is a partial trace of the evaluation of
+
+<P><PRE>match [cat # bat] [cat rat bat]
+</PRE>
+
+<P>using the original version of the procedure:
+
+<P><PRE>match [cat # bat] [cat rat bat]              [cat # bat]   [cat rat bat]
+  match butfirst :pat butfirst :sen          [# bat]       [rat bat]
+    match butfirst :pat :sen                 [bat]         [rat bat]
+    match :pat butfirst :sen                 [# bat]       [bat]
+      match butfirst :pat :sen               [bat]         [bat]
+        match butfirst :pat butfirst :sen    []            []
+*     match :pat butfirst :sen               [# bat]       []
+*       match butfirst :pat :sen             [bat]         []
+</PRE>
+
+<P>The two invocations marked with asterisks are avoided by using the
+revised version.  These represent 25% of the invocations of <CODE>match</CODE>, a
+significant saving.  (Don't think that the program necessarily runs 25%
+faster.  Not all invocations take the same amount of time.  This is just a
+rough measure.)  If there were more words after the <CODE>#</CODE> in the pattern,
+the saving would be even greater.
+
+<P>In this situation we achieve a large saving of time by reorganizing the flow
+of control in the program.  This is quite different from a more common sort
+of concern for efficiency, the kind that leads people to use shorter
+variable names so that the program will be a little smaller, or to worry
+about whether to use <CODE>fput</CODE> or <CODE>sentence</CODE> in a case where either
+would do.  These small &quot;bumming&quot; kinds of optimization are rarely worth
+the trouble they cause.  Figuring out how many times <CODE>match</CODE> is invoked
+using each version is a simple example of the branch of computer science
+called <EM>analysis of algorithms;</EM> a more profound analysis might use
+mathematical techniques to compare the two versions in general, rather than
+for a single example.
+
+<P>In the full version of the pattern matcher, listed at the end of this
+project description, I've taken some care to avoid unnecessary matching.
+On the other hand, the full version has less flexibility than the simple
+version because of its ability to assign matching words to variables.
+Consider a case like
+
+<P><PRE>match [# #] [any old list of words]
+</PRE>
+
+<P>Which <CODE>#</CODE> matches how many words?  It doesn't matter if you
+don't store the result of the match in variables.  But if the pattern is
+<CODE>[#a #b]</CODE> instead, there has to be a uniform rule about which part of
+the pattern matches what.  (In my pattern matcher, all of the words would be
+assigned to <CODE>a</CODE>, and <CODE>:b</CODE> would be empty.  In general, pattern
+elements toward the left match as many words as possible when there is any
+ambiguity.)  The simple pattern matcher doesn't have this problem, and can
+be written to match the ambiguous pattern whichever way gives a <CODE>true</CODE>
+result most quickly.
+
+<P>By the way, what if the two expressions that invoke <CODE>match</CODE> recursively
+were reversed in the revised instruction?  That is, what if the instruction
+were changed again, to read
+
+<P><PRE>if equalp first :pat &quot;# ~
+   [if match :pat butfirst :sen
+       [output &quot;true]
+       [output match butfirst :pat :sen]]
+</PRE>
+
+<P>Would this be more or less efficient than the previous version?
+
+<P><H2>Logo's Evaluation of Inputs</H2>
+
+
+
+<P>The discussion about efficiency started because Logo <EM>evaluates</EM> the
+inputs to the primitive operation <CODE>or</CODE> before invoking the procedure.
+That is, in the example in question, Logo invokes <CODE>match</CODE> twice before
+using <CODE>or</CODE> to check whether either invocation output <CODE>true</CODE>.
+This is consistent with the way Logo does things in general: To evaluate an
+expression that uses some procedure, Logo first evaluates all the inputs for
+that procedure, and then invokes the procedure with the evaluated inputs.
+Logo's rule is extremely consistent (except for the <CODE>to</CODE> command), but
+it isn't the only possible way.  In Lisp, a language that's like Logo in
+many ways, each procedure can choose whether or not its inputs should be
+evaluated in advance.
+
+<P>
+
+<P>An example may make it clearer what I mean by this.  Lisp has a
+procedure called <CODE>set</CODE> that's
+equivalent to the Logo <CODE>make</CODE>.  You say
+
+<P><PRE>(set 'var 27)
+</PRE>
+
+<P>as the equivalent of
+
+<P><PRE>make &quot;var 27
+</PRE>
+
+<P>But Lisp also has a version called <CODE>setq</CODE> whose first input is
+<EM>not</EM> evaluated before <CODE>setq</CODE> is invoked.  It's as if there were
+an automatic quote mark before the first input, so you just say
+
+<P><PRE>(setq var 27)
+</PRE>
+
+<P>with the same effect as the other examples.
+
+<P>Except for the special format of the <CODE>to</CODE> command that forms the title
+line of a procedure, Berkeley Logo and many other Logo dialects
+do not have any form of automatically-quoted inputs.  The design principle
+was that consistency of evaluation would make the rules easier to
+understand.  Some other versions of Logo do use auto-quoting for certain
+procedures.  For example, in Berkeley Logo, to edit the definition of a
+procedure named <CODE>doit</CODE> you type the instruction
+
+<P><PRE>edit &quot;doit
+</PRE>
+
+<P>But in some other versions of Logo you instead say
+
+<P><PRE>edit doit
+</PRE>
+
+<P>because in those versions, the <CODE>edit</CODE> command auto-quotes its
+input.  One possible reason for this design decision is that teachers of
+young children like to present Logo without an explicit discussion of the
+evaluation rules.  They teach the <CODE>edit</CODE> command as a special case,
+rather than as just the invocation of a procedure like everything else.
+Using this approach, auto-quoting the input avoids having to explain what
+that quotation mark means.
+
+<P>The advantage of the non-auto-quoting version of <CODE>edit</CODE> isn't just in
+some abstract idea of consistency.  It allows us to take advantage of
+composition of functions.  Suppose you are working on a very large project,
+a video game, with hundreds of procedures.  You want to edit all the procedures
+having to do with the speed of the spaceships, or whatever moves around the
+screen in this game.  Luckily, all the procedures you want have the word
+<CODE>speed</CODE> as part of their names; they are called <CODE>shipspeed</CODE> or
+<CODE>asteroidspeed</CODE> or <CODE>speedcontrol</CODE>.  You can say
+
+<P><PRE>edit filter [substringp &quot;speed ?] procedures
+</PRE>
+
+<P>(<CODE>Procedures</CODE> is a Berkeley Logo primitive operation that
+outputs a list of all procedures defined in the workspace; <CODE>substringp</CODE>
+is a predicate that checks whether one word appears as part of a longer
+word.)  An auto-quoting <CODE>edit</CODE> command wouldn't have this flexibility.
+
+<P>The reason all this discussion is relevant to the pattern matcher is that
+the Lisp versions of <CODE>or</CODE> and <CODE>and</CODE> have auto-quoted inputs, which
+get evaluated one by one.  As soon as one of the inputs to <CODE>or</CODE> turns
+out to be <CODE>true</CODE> (or one of the inputs to <CODE>and</CODE> is <CODE>false</CODE>), the
+evaluation stops.  This is very useful not only for efficiency reasons, as
+in the discussion earlier, but to prevent certain kinds of errors.  For
+example, consider this Logo instruction:
+
+<P><PRE>if not emptyp :list [if equalp first :list 1 [print &quot;one]]
+</PRE>
+
+<P>It would be pleasant to be able to rewrite that instruction this
+way:
+
+<P><PRE>if and (not emptyp :list) (equalp first :list 1) [print &quot;one]
+</PRE>
+
+<P>The use of <CODE>and</CODE>, I think, makes the program structure clearer
+than the nested <CODE>if</CODE>s.  That is, it's apparent in the second version
+that something (the <CODE>print</CODE>) is to be done if two conditions are met, and
+that that's all that happens in the instruction.  In the first version,
+there might have been another instruction inside the range of the first
+(outer) <CODE>if</CODE>; you have to read carefully to see that that isn't so.
+
+<P>Unfortunately, the second version won't work in Logo.  If <CODE>:list</CODE> is in
+fact empty, the expression
+
+<P><PRE>(equalp first :list 1)
+</PRE>
+
+<P>is evaluated before <CODE>and</CODE> is invoked; this expression causes
+an error message because <CODE>first</CODE> doesn't accept an empty input.  In
+Lisp, the corresponding instruction <EM>would</EM> work, because the two
+predicate expressions would be evaluated serially and the second wouldn't
+be evaluated if the first turned out to be false.
+
+<P>The serial evaluation of inputs to <CODE>and</CODE> and <CODE>or</CODE> is so
+often useful that some people have proposed it for Logo, even at the cost of
+destroying the uniform evaluate-first rule.  But if you want a serial <CODE>
+and</CODE> or <CODE>or</CODE>, it's easy enough to write them, if you explicitly quote
+the predicate expressions that are its inputs:
+
+<P><PRE>to serial.and :pred1 :pred2
+if not run :pred1 [output &quot;false]
+output run :pred2
+end
+
+to serial.or :pred1 :pred2
+if run :pred1 [output &quot;true]
+output run :pred2
+end
+</PRE>
+
+<P>Here's how you would use <CODE>serial.and</CODE> to solve the problem
+with the nested <CODE>if</CODE>s:
+
+<P><PRE>if (serial.and [not emptyp :list] [equalp first :list 1]) [print &quot;one]
+</PRE>
+
+<P>Similarly, you could use <CODE>serial.or</CODE> instead of <CODE>or</CODE> to
+solve the efficiency problem in the first version of the pattern matcher:
+
+<P><PRE>output serial.or [match butfirst :pat :sen] [match :pat butfirst :sen]
+</PRE>
+
+<P>These procedures depend on the fact that the predicate expressions
+that are used as their inputs are presented inside square brackets; that's
+why they are not evaluated before <CODE>serial.and</CODE> or <CODE>serial.or</CODE> is
+invoked.
+
+<P><H2>Indirect Assignment</H2>
+
+
+
+<P>From now on, I'll be talking about the big pattern matcher, not the simple
+one I introduced to illustrate the structure of the problem.  Here is the
+top-level procedure <CODE>match</CODE>:
+
+<P><PRE>to match :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output &quot;false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput &quot;!: :pat :sen]
+if memberp first first :pat [? # ! &amp; @ ^] [output special :pat :sen]
+if emptyp :sen [output &quot;false]
+if equalp first :pat first :sen ~
+   [output match butfirst :pat butfirst :sen]
+output &quot;false
+end
+</PRE>
+
+<P>As you'd expect, there are more cases to consider in this more
+featureful version, but the basic structure is similar to the simple
+matcher.  The instructions starting <CODE>if emptyp</CODE>, <CODE>if memberp</CODE>,
+<CODE>if emptyp</CODE>, and <CODE>if equalp</CODE> play the same roles as similar
+instructions in the other version.  (The <CODE>memberp</CODE> test replaces the
+comparison against the word <CODE>#</CODE> with a wider range of choices.)
+
+<P>The first <CODE>if</CODE> instruction tests for errors in the format of the pattern
+or the sentence to be matched, in which a word is found where a list was
+expected.  It's not important if you use well-formed inputs to <CODE>match</CODE>.
+The <CODE>listp</CODE> test essentially converts a pattern like
+
+<P><PRE>[foo [some # pattern] baz]
+</PRE>
+
+<P>to the equivalent form
+
+<P><PRE>[foo !:[some # pattern] baz]
+</PRE>
+
+<P>The interesting new case comes when <CODE>match</CODE> sees a word in the
+pattern that starts with one of the six special quantifier characters.  In
+this case, <CODE>match</CODE> invokes <CODE>special</CODE> to check for a match.
+
+<P>One of the interesting properties of <CODE>special</CODE> is that it has to be able
+to assign a value to a variable whose name is not built into the program,
+but instead is part of the <EM>data</EM> used as input to the program.
+That is, if the word
+
+<P><PRE>?howmany:numberp
+</PRE>
+
+<P>appears in the pattern, <CODE>special</CODE> (or one of its
+subprocedures) must assign a value to the variable named <CODE>howmany</CODE>, but
+there is no instruction of the form
+
+<P><PRE>make &quot;howmany ...
+</PRE>
+
+<P>anywhere in the program.  Instead, <CODE>match</CODE> has <EM>another</EM>
+variable, whose name is <CODE>special.var</CODE>, whose <EM>value</EM> is the <EM>
+name</EM> <CODE>howmany</CODE>.  The assignment of the matching words to the
+pattern-specified variable is done with an instruction like
+
+<P><PRE>make :special.var ...
+</PRE>
+
+<P>Here the first input to <CODE>make</CODE> is not a quoted word, as usual,
+but an expression that must be evaluated to figure out which variable to use.
+
+<P><CODE>Special</CODE>, then, has two tasks.  First it must divide a word like
+
+<P><PRE>?howmany:numberp
+</PRE>
+
+<P>into its component parts; then it must carry out the matching
+tasks that are the <EM>meaning</EM> of those parts.  These two tasks are like
+a smaller version of what a programming language interpreter like Logo
+does.  Finding the meaningful parts of an instruction is called the <EM>
+syntax</EM> of a language, and understanding what the parts mean is called the
+<EM>semantics</EM> of the language.  <CODE>Special</CODE> has two instructions, one
+for the syntax and one for the semantics:
+
+<P><PRE>to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word &quot;match first first :pat
+end
+</PRE>
+
+<P>To <EM>parse</EM> something is to divide it into its pieces.  <CODE>
+Parse.special</CODE> outputs a list of the form
+
+<P><PRE>[howmany numberp]
+</PRE>
+
+<P>for the example we're considering.  Then <CODE>set.special</CODE> assigns
+the two members of this list as the values of two variables.  The variable
+named <CODE>special.var</CODE> is given the value <CODE>howmany</CODE>, and the variable
+named <CODE>special.pred</CODE> is given the value <CODE>numberp</CODE>.  This preliminary
+work is what makes possible the indirect assignment described earlier.
+
+<P><H2>Defaults</H2>
+
+<P>What happens if the pattern has a word like
+
+<P><PRE>?:numberp
+</PRE>
+
+<P>without a variable name?  What happens when the program tries to
+assign a value to the variable named in the pattern?  <CODE>Set.special</CODE>
+contains the instruction
+
+<P><PRE>if emptyp :special.var [make &quot;special.var &quot;special.buffer]
+</PRE>
+
+<P>The effect of this instruction is that if you do not mention a
+variable in the pattern, the variable named <CODE>special.buffer</CODE> will be
+used to hold the results of the match.  This variable is the <EM>
+default</EM> variable, the one used if no other is specified.
+
+<P>It's important, by the way, that the variable <CODE>special.buffer</CODE> is
+declared to be local in procedure <CODE>match</CODE>.  What makes it important is
+that <CODE>match</CODE> is recursive; if you use a pattern like
+
+<P><PRE>[a # b # c]
+</PRE>
+
+<P>then the matching of the second <CODE>#</CODE> is a subproblem of the
+matching of the first one.  <CODE>Match</CODE> invokes <CODE>special</CODE>, which invokes
+<CODE>match#</CODE>, which invokes <CODE>#test</CODE>, which invokes <CODE>
+match</CODE> on the <CODE>butfirst</CODE> of the pattern.  That <CODE>butfirst</CODE> contains
+another <CODE>#</CODE>.  Each of these uses the variable <CODE>special.buffer</CODE> to
+remember the words it is trying as a match; since the variable is declared
+local, the two don't get confused.  (This means, by the way, that you can
+really confuse <CODE>match</CODE> by using the same variable name twice in a
+pattern.  It requires a fairly complicated pattern to confuse <CODE>match</CODE>,
+but here is an example.  The first result is correct, the second incorrect.
+
+<P><PRE>? <U>print match [a #x b &amp;y ! c] [a i b j c b k c]</U>
+true
+? <U>show :x show :y</U>
+[i]
+[j c b]
+? <U>print match [a #x b &amp;x ! c] [a i b j c b k c]</U>
+false
+</PRE>
+
+<P>The only change is that the variable name <CODE>x</CODE> is used twice in
+the second pattern, and as a result, <CODE>match</CODE> doesn't find the correct
+match.  You'll know that you really understand how <CODE>match</CODE> works if you
+can explain why it <EM>won't</EM> fail if the <CODE>!</CODE> is removed from the
+pattern.)
+
+<P>When writing a tool to be used in other projects, especially if the tool
+will be used by other people, it's important to think about defaults.  What
+should the program do if some piece of information is missing?  If you don't
+provide for a default explicitly, the most likely result is a Logo error
+message; your program will end up trying to take <CODE>first</CODE> of an empty
+list, or something like that.
+
+<P>Another default in the pattern matcher is for the predicate used to test
+matches.  For example, what happens when the word
+
+<P><PRE>?howmany
+</PRE>
+
+<P>appears in the pattern, without a predicate?  This case is
+recognized by <CODE>parse.special</CODE>, in the instruction
+
+<P><PRE>if emptyp :word [output list :var &quot;always]
+</PRE>
+
+<P>The special predicate <CODE>always</CODE> is used if no other is given in
+the pattern.  <CODE>Always</CODE> has a very simple definition:
+
+<P><PRE>to always :x
+output &quot;true
+end
+</PRE>
+
+<P>
+
+<P><H2>Program as Data</H2>
+
+
+<P>The instruction in <CODE>special</CODE> that carries out the semantics of a special
+pattern-matching instruction word is
+
+<P><PRE>output run word &quot;match first first :pat
+</PRE>
+
+<P>If the pattern contains the word
+
+<P><PRE>?howmany:numberp
+</PRE>
+
+<P>then this instruction extracts the quantifier character
+<CODE>?</CODE> (the first character of the first word of the pattern) and makes
+from it a procedure name <CODE>match?</CODE>.  That name is then <CODE>run</CODE> as a Logo
+expression; that is, <CODE>special</CODE> invokes a procedure whose name is <CODE>
+match?</CODE>.
+
+<P>Most programming languages do not allow the invocation of a procedure based
+on finding the name of the procedure in the program's data.  Generally there
+is a very strict separation between program and data.  Being able to
+manipulate data to create a Logo instruction, and then run it, is a very
+powerful part of Logo.  It is also used to deal with the names of predicates
+included in the pattern; to see if a word in the sentence input to <CODE>
+match</CODE> is a match for a piece of the pattern, the predicate <CODE>try.pred</CODE>
+contains the instruction
+
+<P><PRE>output run list :special.pred quoted first :sen
+</PRE>
+
+<P>This instruction generates a list whose first member is the name
+of the predicate found in the pattern and whose second and last member is a
+word from the sentence.  Then this list is run as a Logo expression, which
+should yield either <CODE>true</CODE> or <CODE>false</CODE> as output, indicating whether
+or not the word is acceptable.
+
+<P><H2>Parsing Rules</H2>
+
+<P>When you are reading the program, remember that the kind of pattern that
+I've written as
+
+<P><PRE>[begin !:[smaller # pattern] end]
+</PRE>
+
+<P>is read by Logo as if I'd written
+
+<P><PRE>[begin !: [smaller # pattern] end]
+</PRE>
+
+<P>That is to say, this pattern is a list of four members.  I think
+of the middle two as a unit, representing a single thing to match.  The
+sublist takes the place of a predicate name after the <CODE>!</CODE> quantifier.
+But for Logo, there is no predicate name in the word starting with the
+exclamation point; the pattern is a separate member of the large list.
+That's why <CODE>set.special</CODE> uses the expression
+
+<P><PRE>emptyp :special.pred
+</PRE>
+
+<P>to test for this situation, rather than <CODE>listp</CODE>.  After <CODE>
+parse.special</CODE> does its work, all it has found is a colon with nothing
+following it.  <CODE>Set.special</CODE> has to look at the next member of the
+pattern list in order to find the subpattern.
+
+<P><H2>Further Explorations</H2>
+
+<P>Chapter 9 is a large program that uses <CODE>match</CODE>.  It
+may give you ideas for the ways in which this tool can be used in your own
+programs.  Here, instead of talking about applications of <CODE>match</CODE>, I'll
+discuss some possible extensions or revisions of the pattern matcher itself.
+
+<P>There are many obvious small extensions.  For example, to complement the
+special <CODE>in</CODE> primitive, you could write <CODE>notin</CODE>, which would accept
+all <EM>but</EM> the members of the following list.  You could allow the use
+of a number as the predicate, meaning that exactly that many matching words
+are required.  That is, in the example for which I invented the predicate
+<CODE>threep</CODE>, I would instead be able to use
+
+<P><PRE>[@begin:3 #rest]
+</PRE>
+
+<P>as the pattern.
+
+<P>There is no convenient way to say in a pattern that some subpattern can be
+repeated several times, if the subpattern is more than a single word.  That
+is, in the second version of <CODE>converse</CODE>, instead of having to use <CODE>
+while</CODE> to chop off  pieces of the matched
+sentence into a variable <CODE>rest</CODE>, I'd like to be able to say in the
+pattern something like
+
+<P><PRE>[@@: [@:anyof [[my name is #name:notand]
+               [i like #like:notand]
+               [&amp;:notand]]
+      ?:in [and]]]
+</PRE>
+
+<P>Here the doubled atsign (<CODE>@@</CODE>) means that the entire pattern
+that follows should be matched repeatedly instead of only once.
+
+<P>For other approaches to pattern matching, you might want to read about the
+programming languages Snobol and Icon, each of which includes pattern
+matching as one of its main features.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch6/v2ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch8/v2ch8.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+to match :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen ~
+   [output match butfirst :pat butfirst :sen]
+output "false
+end
+
+;; Parsing quantifiers
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+;; Exactly one match
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output match butfirst :pat butfirst :sen
+end
+
+;; Zero or one match
+
+to match?
+make :special.var []
+if emptyp :sen [output match butfirst :pat :sen]
+if not try.pred [output match butfirst :pat :sen]
+make :special.var first :sen
+if match butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output match butfirst :pat :sen
+end
+
+;; Zero or more matches
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+;; One or more matches
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+;; Zero or more matches (as few as possible)
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+;; Match words in a group
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if match butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+;; Applying the predicates
+
+to try.pred
+if listp :special.pred [output match :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output match :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+;; Special predicates
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if match first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
+</PRE><P>
+
+
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch6/v2ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch8/v2ch8.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch7/match.lg b/js/games/nluqo.github.io/~bh/v2ch7/match.lg
new file mode 100644
index 0000000..71b2c09
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch7/match.lg
@@ -0,0 +1,166 @@
+to match :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen ~
+   [output match butfirst :pat butfirst :sen]
+output "false
+end
+
+;; Parsing quantifiers
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+;; Exactly one match
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output match butfirst :pat butfirst :sen
+end
+
+;; Zero or one match
+
+to match?
+make :special.var []
+if emptyp :sen [output match butfirst :pat :sen]
+if not try.pred [output match butfirst :pat :sen]
+make :special.var first :sen
+if match butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output match butfirst :pat :sen
+end
+
+;; Zero or more matches
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+;; One or more matches
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+;; Zero or more matches (as few as possible)
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+;; Match words in a group
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if match butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+;; Applying the predicates
+
+to try.pred
+if listp :special.pred [output match :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output match :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+;; Special predicates
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if match first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
diff --git a/js/games/nluqo.github.io/~bh/v2ch7/v2ch7.html b/js/games/nluqo.github.io/~bh/v2ch7/v2ch7.html
new file mode 100644
index 0000000..00b39b3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch7/v2ch7.html
@@ -0,0 +1,1437 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 7: Pattern Matcher</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Pattern Matcher</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch6/v2ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch8/v2ch8.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="match.lg"><CODE>match</CODE></A>
+
+<P>
+In a <EM>conversational</EM> program, one that carries on a conversation with
+the user, you may often have occasion to compare what the user types with
+some expected response.  For example, a quiz program will compare the user's
+response with the correct answer; if you've just asked &quot;how are you,&quot; you
+might look for words like &quot;fine&quot; or &quot;lousy&quot; in the reply.  The main
+tools that Logo provides for such comparisons are <CODE>equalp</CODE>, which
+compares two values for exact equality, and <CODE>memberp</CODE>, which compares
+one datum with a list of alternatives.  This project provides a more
+advanced comparison tool.
+
+<P>Most of the projects in this book are fairly complicated in their inner
+workings, but relatively simple in the external appearance of what they do.
+This project is the reverse; the actual program is not so complex, but it
+does quite a lot, and it will take a while to explain all of it.  Pattern
+matching is a powerful programming tool, and I hope you won't be put off by
+the effort required to learn how to use it.
+
+<P>A <EM>pattern</EM> is a list in which some members are not made explicit.
+This definition is best understood by considering an example.  Consider the
+pattern
+
+<P><PRE>[Every # is a #]
+</PRE>
+
+<P>The words <CODE>every</CODE>, <CODE>is</CODE>, and <CODE>a</CODE> represent themselves
+explicitly.  The two number signs, however, are symbols representing &quot;zero
+or more arbitrary data.&quot; Here are some lists that would match the
+pattern:
+
+<P><PRE>[Every man is a mortal]
+[Every computer programmer is a genius]
+[Every is a word]
+[Every datum is a word or a list]
+</PRE>
+
+<P>Here are some lists that would <EM>not</EM> match the pattern:
+
+<P><PRE>[Socrates is a man]
+[Every man is an animal]
+[Everyone I know is a friend]
+[I think every list is a match]
+</PRE>
+
+<P>The first of these examples doesn't match the pattern because the
+word <CODE>every</CODE> is missing.  The second has <CODE>an</CODE> instead of <CODE>a</CODE>,
+while the third has <CODE>everyone</CODE> instead of <CODE>every</CODE>.  The fourth has
+the extra words <CODE>I think</CODE> before the word <CODE>every</CODE>.  This last
+example <EM>would</EM> match the pattern
+
+<P><PRE>[# every # is a #]
+</PRE>
+
+<P>because this new pattern allows for extra words at the beginning.
+
+<P><CODE>Match</CODE> is a predicate that takes two inputs.  The first input is a
+pattern and the second input is a sentence.  The output is <CODE>true</CODE> if the
+sentence matches the pattern, otherwise <CODE>false</CODE>.
+
+<P><PRE>? <U>print match [Every # is a #] [Every book is a joy to read]</U>
+true
+? <U>print match [Every # is a #] [Every adolescent is obnoxious]</U>
+false
+</PRE>
+
+<P>Patterns can be more complicated than the ones I've shown so far.  In the
+following paragraphs I'll introduce the many ways that you can modify
+patterns to control which sentences they'll match.  As you read, you should
+make up sample patterns of your own and try them out with <CODE>match</CODE>.
+
+<P>Often, in a conversational program, it's not good enough just to know
+whether or not a sentence matches a pattern.  You also want to know the
+pieces of the sentence that match the variable parts of the pattern.  <CODE>
+Match</CODE> meets this requirement by allowing you to tell it the names of
+variables that you want to receive the matching words from the sentence.
+Here is an example:
+
+<P><PRE>? <U>print match [#food is for #animal] [Hay is for horses]</U>
+true
+? <U>show :food</U>
+[Hay]
+? <U>show :animal</U>
+[horses]
+
+? <U>print match [#food is for #animal] [C++ is for the birds]</U>
+true
+? <U>show :food</U>
+[C++]
+? <U>show :animal</U>
+[the birds]
+</PRE>
+
+<P>Here is a short <A NAME="converse"> conversational program using the parts of the
+pattern matcher we've discussed so far.
+
+<P><PRE>to converse
+local [response name like]
+print [Hi, my name is Toby and I like ice cream]
+print [Tell me about yourself]
+make &quot;response readlist
+if match [# my name is #name] :response [do.name strip.and :name]
+if match [# i like #like] :response [do.like strip.and :like]
+print [Nice meeting you!]
+end
+
+to do.name :name
+print sentence &quot;Hello, :name
+end
+
+to do.like :like
+print sentence [I'm glad you like] :like
+end
+
+to strip.and :text
+local &quot;short
+if match [#short and #] :text [output :short]
+output :text
+end
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I like Chinese food</U>
+Hello, Brian
+I'm glad you like Chinese food
+Nice meeting you!
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>I like spaghetti and meat balls</U>
+I'm glad you like spaghetti
+Nice meeting you!
+</PRE>
+
+<P>If <CODE>match</CODE> outputs <CODE>false</CODE>, there is no guarantee of what
+values will end up in the variables mentioned in the pattern.  <CODE>
+Converse</CODE> uses the result of the match only if <CODE>match</CODE> outputs <CODE>
+true</CODE>.
+
+<P><CODE>Converse</CODE> looks for each part of the sentence (the name and the thing
+the person likes) in two steps: first it finds the keywords <CODE>my name is</CODE>
+or <CODE>I like</CODE> and extracts everything following those phrases, then it
+looks within what it extracted for the word <CODE>and</CODE> and removes anything
+following it.  For example, when I typed
+
+<P><PRE>My name is Brian and I like Chinese food
+</PRE>
+
+<P>the result of matching the name pattern was to give the variable
+<CODE>name</CODE> the value
+
+<P><PRE>Brian and I like Chinese food
+</PRE>
+
+<P>Then <CODE>strip.and</CODE> used a second pattern to eliminate everything
+after the <CODE>and</CODE>.  You might be tempted to extract the name in one step
+by using a pattern like
+
+<P><PRE>[# my name is #name and #]
+</PRE>
+
+<P>but I wanted to avoid that pattern because it won't match a
+sentence that only contains
+
+<P><PRE>my name is Mary
+</PRE>
+
+<P>without expressing any likes or dislikes.  The program as I've
+written it does accept these shorter sentences also.  Later we'll see a more
+complicated pattern that accepts sentences with or without <CODE>and</CODE>
+using a single pattern.
+
+<P>The special symbol <CODE>#</CODE> in a pattern represents zero or more words.  <CODE>
+Match</CODE> recognizes other symbols with different meanings:
+
+<P><TABLE>
+<TR><TD><CODE>#</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more
+<TR><TD><CODE>&amp;</CODE><TD>&nbsp;&nbsp;&nbsp;one or more
+<TR><TD><CODE>?</CODE><TD>&nbsp;&nbsp;&nbsp;zero or one
+<TR><TD><CODE>!</CODE><TD>&nbsp;&nbsp;&nbsp;exactly one
+</TABLE>
+
+<P>For example, if you'd like the <CODE>converse</CODE> program to recognize
+only the first name of the person using it, you could change the relevant
+pattern to
+
+<P><PRE>[# my name is !name #]
+</PRE>
+
+<P>Then a conversation with the program might look like this:
+
+<P><PRE>? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian Harvey</U>
+Hello, Brian
+Nice meeting you!
+?
+</PRE>
+
+<P>The word <CODE>!name</CODE> in the pattern matched just the single word
+<CODE>Brian</CODE>, not the multiple words <CODE>Brian Harvey</CODE> that the original
+pattern would have selected.  (If you modify <CODE>converse</CODE> in this way, it
+should be possible to remove the invocation of <CODE>strip.and</CODE> in computing
+the input to <CODE>do.name</CODE>.  The single word stored in the variable <CODE>name</CODE> won't
+contain any other clauses.)
+
+<P>So far, the patterns we've seen allow two extremes: the pattern can include
+a single word that must be matched exactly, or it can allow <EM>any</EM> word
+at all to be matched.  It is also possible to write a pattern that calls for
+words in some specified category--that is, words that satisfy some
+predicate.  Here is an example:
+
+<P><PRE>to ask.age
+local &quot;age
+print [How old are you?]
+if match [# !age:numberp #] readlist ~
+   [print (sentence [You are] :age [years old.]]
+end
+
+? <U>ask.age</U>
+How old are you?
+<U>I will be 36 next month</U>
+You are 36 years old.
+</PRE>
+
+<P>This is a slightly silly example, but it does illustrate the use
+of a predicate to restrict which words can match a variable part of a
+pattern.  The pattern used in <CODE>ask.age</CODE> looks for a single word for
+which <CODE>numberp</CODE> is <CODE>true</CODE>, that is, for a number.  Any number of
+words surrounding the number are allowed.
+
+<P>Of course, a predicate used in a pattern need not be a primitive one like
+<CODE>numberp</CODE>.  You may find it useful to write your own predicates that
+select categories of words.  Such a predicate might have a list built in:
+
+<P><PRE>to colorp :word
+output memberp :word [red orange yellow blue green violet white black]
+end
+</PRE>
+
+<P>Or you could check some inherent property of a word:
+
+<P><PRE>to ends.y :word
+output equalp last :word &quot;y
+end
+</PRE>
+
+<P>In either case, what is essential is that your predicate must take
+a word as its single input, and must output <CODE>true</CODE> if you want <CODE>
+match</CODE> to accept the word to fill a slot in the pattern.
+
+<P>It is most common to want a predicate like <CODE>colorp</CODE>
+above--one that tests its input word for membership in a certain list.  A
+special notation makes it possible to include such a list in the pattern
+itself, instead of writing a predicate procedure.  For example, suppose you
+are writing a quiz program, and you want to ask the question, &quot;What is the
+quickest route from Boston to Framingham?&quot; You'd like to accept answers
+like these:
+
+<P><PRE>Mass Pike
+the Massachusetts Turnpike
+the Pike
+</PRE>
+
+<P>but not <CODE>the Ohio Turnpike</CODE>!  Here is a pattern you could use.
+
+<P><PRE>[?:in [the] ?:in [Mass Massachusetts] !:in [Pike Turnpike]]
+</PRE>
+
+<P>The special predicate <CODE>in</CODE> is a version of <CODE>memberp</CODE> that
+knows to look in the pattern, right after the element that invokes <CODE>in</CODE>,
+for the list of acceptable words.  This pattern accepts zero or one <CODE>
+the</CODE>, zero or one of <CODE>Mass</CODE> or <CODE>Massachusetts</CODE>, and one of <CODE>
+Pike</CODE> or <CODE>Turnpike</CODE>.  That is, the first two words are optional and the
+third is required.
+
+<P>Earlier I rejected the use of a pattern
+
+<P><PRE>[# my name is #name and #]
+</PRE>
+
+<P>because I wanted also to be able to accept sentences without <CODE>
+and</CODE> following the name.  I promised to exhibit a pattern that would accept
+both sentence forms.  Here it is:
+
+<P><PRE>[# my name is #name:notand #]
+</PRE>
+
+<P>This pattern uses a predicate <CODE>notand</CODE> that allows any word
+except <CODE>and</CODE>.  It's easy to write this predicate:
+
+<P><PRE>to notand :word
+output not equalp :word &quot;and
+end
+</PRE>
+
+<P>(By the way, the symbols indicating the number of words to match are meant
+to be mnemonic.  The question mark indicates that it's questionable whether
+or not the word will be in the sentence.  The exclamation point looks a
+little like a digit 1, and also shouts emphatically that the word is
+present.  The number sign means that any number of words (including zero) is
+okay, and the ampersand indicates that more words are required, namely at
+least one instead of at least zero.)
+
+<P>We've seen various combinations of quantifiers (that's what I'll call
+the characters like <CODE>#</CODE> that control how many words are matched),
+variable names, and predicates:
+
+<P><TABLE>
+<TR><TD><CODE>#</CODE><TD>&nbsp;&nbsp;&nbsp;no variable, no predicate (accept any word)
+<TR><TD><CODE>#name</CODE><TD>&nbsp;&nbsp;&nbsp;set variable, no predicate
+<TR><TD><CODE>?:in</CODE><TD>&nbsp;&nbsp;&nbsp;no variable, test predicate
+<TR><TD><CODE>!age:numberp</CODE><TD>&nbsp;&nbsp;&nbsp;set variable, test predicate
+</TABLE>
+
+<P>We are now about to discuss some of the more esoteric features of
+the <CODE>match</CODE> program.  So far, we have always compared a pattern against
+a <EM>sentence,</EM> a list of words.  It is also possible to match a pattern
+against a structured list, with smaller lists among its members.  <CODE>Match</CODE>
+treats a sublist just like a word, if you don't want to examine the inner
+structure of the sublist.  Here are some examples.
+
+<P><PRE>? <U>print match [hello #middle goodbye] [hello is [very much] like goodbye]</U>
+true
+? <U>show :middle</U>
+[is [very much] like]
+? <U>print match [hi #middle:wordp bye] [hi and then bye]</U>
+true
+? <U>show :middle</U>
+[and then]
+? <U>print match [hi #middle:wordp bye] [hi and [then] bye]</U>
+false
+
+? <U>print match [hi #mid:wordp #dle:listp bye] [hi and [then] bye]</U>
+true
+? <U>show :mid show :dle</U>
+[and]
+[[then]]
+</PRE>
+
+<P>A more interesting possibility is to ask <CODE>match</CODE> to apply a
+sub-pattern to a sublist.  This is done by using the pattern (that is, a
+list) in place of the name of a predicate.  Here is an example:
+
+<P><PRE>? <U>print match [a #:[x # y] b] [a [x 111 y] [x 222 y] b]</U>
+true
+? <U>print match [a #:[x # y] b] [a [x 333 zzz] b]</U>
+false
+</PRE>
+
+<P>It is possible to include variable names in the subpattern, but
+this makes sense only if the quantifier outside the pattern is <CODE>!</CODE> or
+<CODE>?</CODE> because otherwise you may be trying to assign more than one value to
+the same variable.  Here's what I mean:
+
+<P><PRE>? <U>print match [a #all:[x #some y] b] [a [x 111 y] [x 222 y] b]</U>
+true
+? <U>show :all show :some</U>
+[[x 111 y] [x 222 y]]
+[222]
+</PRE>
+
+<P>The variable <CODE>all</CODE> is properly set to contain both of the
+lists that matched the subpattern, but the variable <CODE>some</CODE> only contains
+the result of the second match.
+
+<P>If a list appears in a pattern without a quantifier before it, <CODE>match</CODE>
+treats it as if it were preceded by &quot;<CODE>!:</CODE>&quot;; in other words, it tries
+to match the subpattern exactly once.
+
+<P>A pattern element like <CODE>#:predicate</CODE> can match several members of the
+target sentence; the predicate is applied to each candidate member
+separately.  For example:
+
+<P><PRE>? <U>print match [#nums:numberp #rest] [3 2 1 blastoff!]</U>
+true
+? <U>show :nums show :rest</U>
+[3 2 1]
+[blastoff!]
+</PRE>
+
+<P>Sometimes you may want to match several members of a sentence, but
+apply the predicate to all of the candidates <EM>together</EM> in one list.
+To do this, use the quantifier <CODE>@</CODE>:
+
+<P><PRE>to threep :list
+output equalp count :list 3
+end
+
+? <U>print match [@begin:threep #rest] [a b c d e]</U>
+true
+? <U>show :begin show :rest</U>
+[a b c]
+[d e]
+</PRE>
+
+<P>In this example, I haven't used the predicate to examine the <EM>
+nature</EM> of the matching words, but rather to control the <EM>number</EM> of
+words that are matched.  Here is another example that looks &quot;inside&quot; the
+matching words.
+
+<P><PRE>to headtailp :list
+if (count :list) &lt; 2 [output &quot;false]
+output equalp first :list last :list
+end
+
+? <U>print match [#front @good:headtailp #back] [a b c x d e f g x h i]</U>
+true
+? <U>show :front show :good show :back</U>
+[a b c]
+[x d e f g x]
+[h i]
+</PRE>
+
+<P>Think about all the different tests that <CODE>match</CODE> has to make
+to find this match!  Also, do you see why the first instruction of <CODE>
+headtailp</CODE> is needed?
+
+<P>Some patterns are <EM>ambiguous;</EM> that is, there might be more than one
+way to associate words from the matched sentence with quantifiers in the
+pattern.  For example, what should the following do?
+
+<P><PRE>match [#front xx #back] [a b c d xx e f g xx h i]
+</PRE>
+
+<P>The word <CODE>xx</CODE> appears twice in the matched sentence.  The
+program could choose to use everything up to the first <CODE>xx</CODE> as <CODE>
+front</CODE>, leaving six words for <CODE>back</CODE>, or it could choose to use
+everything up to the second <CODE>xx</CODE> as <CODE>front</CODE>, leaving only two words
+for <CODE>back</CODE>.  In fact, each quantifier, starting from the left, matches
+as many words as it can:
+
+<P><PRE>? <U>print match [#front xx #back] [a b c d xx e f g xx h i]</U>
+true
+? <U>show :front show :back</U>
+[a b c d xx e f g]
+[h i]
+</PRE>
+
+<P>If that's not what you want, the quantifier <CODE>^</CODE> behaves
+like <CODE>#</CODE> except that it matches as <EM>few</EM> words as possible.
+
+<P><PRE>? <U>print match [^front xx #back] [a b c d xx e f g xx h i]</U>
+true
+? <U>show :front show :back</U>
+[a b c d]
+[e f g xx h i]
+</PRE>
+
+<P>We can use the <CODE>^</CODE> quantifier to fix a bug
+in <A HREF="v2ch7.html#converse">the <CODE>converse</CODE>
+program</A>:
+
+<P><PRE>? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I like bacon and eggs</U>
+Hello, Brian and I like bacon
+I'm glad you like bacon
+Nice meeting you!
+</PRE>
+
+<P>The problem here is that the pattern used by <CODE>strip.and</CODE>
+divided the sentence at the second <CODE>and</CODE>, just as the earlier example
+chose the second <CODE>xx</CODE> when I used <CODE>#</CODE> as the quantifier.  We
+can fix it this way:
+
+<P><PRE>to strip.and :text
+local &quot;short
+if match [^short and #] :text [output :short]
+output :text
+end
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I like bacon and eggs</U>
+Hello, Brian
+I'm glad you like bacon
+Nice meeting you!
+</PRE>
+
+<P>There is just one more special feature of <CODE>match</CODE> left to describe.  It
+is another special predicate, like <CODE>in</CODE>, but this one is called <CODE>
+anyof</CODE>.  When you use <CODE>anyof</CODE>, the next member of the pattern should be
+a <EM>list of patterns</EM> to test.  <CODE>Match</CODE> tries each pattern in turn,
+applied to list members as determined by the quantifier used.  In practice,
+though, <CODE>anyof</CODE> only makes sense when applied to several members as a
+group, so the quantifier <CODE>@</CODE> should always be used.  An example may make
+this clear.  I'm going to rewrite the <CODE>converse</CODE> program to check for
+names and likes all at once.
+
+<P><PRE>to converse
+local [response name like rest]
+print [Hi, my name is Toby and I like ice cream]
+print [Tell me about yourself]
+make &quot;response readlist
+while match [@:anyof [[My name is #name:notand]
+                      [I like #like:notand]
+                      [&amp;:notand]]
+                     ?:in [and] #rest] ~
+            :line ~
+      [make &quot;response :rest]
+if not emptyp :name [print sentence &quot;Hello, :name]
+if not emptyp :like [print sentence [I'm glad you like] :like]
+print [Nice meeting you!]
+end
+</PRE>
+
+<P>This program uses the <CODE>notand</CODE> predicate I wrote earlier.  It
+checks for clauses separated by the word <CODE>and</CODE>.  Each clause can match
+any of three patterns, one for the name, one for the liking, and a general
+pattern that matches any other clause.  The clauses can appear in any order.
+
+<P><PRE>? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>My name is Brian and I hate cheese</U>
+Hello, Brian
+Nice meeting you!
+
+? <U>converse</U>
+Hi, my name is Toby and I like ice cream
+Tell me about yourself
+<U>I like wings and my name is Jonathan</U>
+Hello, Jonathan
+I'm glad you like wings
+Nice meeting you!
+</PRE>
+
+<P><H2>Reinventing <CODE>Equalp</CODE> for Lists</H2>
+
+<P>
+
+<P><CODE>Match</CODE> is a kind of fancy <CODE>equalp</CODE> with a complicated understanding
+of what equality means.  One way to approach an understanding of <CODE>match</CODE>
+is to begin with this question:  Suppose Logo's primitive <CODE>equalp</CODE> only
+worked for comparing two <EM>words</EM> for equality.  (For the remainder of
+this section, I won't use the word <CODE>equalp</CODE> at all; I'll call this
+imaginary primitive <CODE>wordequalp</CODE> instead.)  How would you write a
+<CODE>listequalp</CODE> to compare two lists?  This is basically a <CODE>
+butfirst</CODE>-style recursive operation, but you have to be a little careful
+about the fact that either input might be smaller than the other.
+
+<P><PRE>to listequalp :a :b
+if emptyp :a [output emptyp :b]
+if emptyp :b [output &quot;false]
+if wordequalp first :a first :b ~
+   [output listequalp butfirst :a butfirst :b]
+output &quot;false
+end
+</PRE>
+
+<P>(This procedure contains the instruction <CODE>output &quot;false</CODE>
+twice, but it never says <CODE>output &quot;true</CODE>.  How can it ever say that two
+lists are equal?)
+
+<P>There is one deficiency in the procedure as I've defined
+it.  The problem is that it only works for <EM>sentences</EM>--lists whose
+members are words.  If either list contains a sublist, <CODE>listequalp</CODE> will
+try to apply <CODE>wordequalp</CODE> to that sublist.  If you enjoy the exercise of
+reinventing Logo primitives, you may want to fix that.  But for my purposes,
+the version here is good enough as a basis for further development of the
+pattern matcher.
+
+<P><H2>A Simple Pattern Matcher</H2>
+
+<P>We can extend the idea of <CODE>listequalp</CODE> slightly to make a pattern
+matcher that only recognizes the special word <CODE>#</CODE> to mean &quot;match zero
+or more words.&quot; We won't do any of the fancy things like storing the
+matching words in a variable.
+
+<P><PRE>to match :pat :sen
+if emptyp :pat [output emptyp :sen]
+if emptyp :sen [if equalp first :pat &quot;#
+                   [output match butfirst :pat :sen]
+                   [output &quot;false]]
+if equalp first :pat &quot;# [output or match butfirst :pat :sen
+                                   match :pat butfirst :sen]
+if equalp first :pat first :sen ~
+   [output match butfirst :pat butfirst :sen]
+output &quot;false
+end
+</PRE>
+
+<P>The end test is more complicated in this program than in <CODE>listequalp</CODE>
+because the combination of an empty sentence and a nonempty pattern can
+still be a match, if the pattern is something like <CODE>[#]</CODE> that matches
+zero or more words.
+
+<P>
+
+<P>The really interesting part of this procedure is what happens if a <CODE>#</CODE>
+is found in the pattern.  The match succeeds (outputs <CODE>true</CODE>) if one of
+two smaller matches succeeds.  The two smaller matches correspond to two
+possible conditions: the <CODE>#</CODE> can match zero words, or more than zero.
+The first case is detected by the expression
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>For example, suppose you want to evaluate
+
+<P><PRE>match [# cream] [cream]
+</PRE>
+
+<P>This expression should yield the value <CODE>true</CODE>, with the <CODE>
+#</CODE> matching no words in the sentence.  In this example the expression
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>is equivalent to
+
+<P><PRE>match [cream] [cream]
+</PRE>
+
+<P>which straightforwardly outputs <CODE>true</CODE>.
+
+<P>On the other hand, the expression
+
+<P><PRE>match :pat butfirst :sen
+</PRE>
+
+<P>comes into play when the <CODE>#</CODE> has to match at least one word.
+For example, consider the expression
+
+<P><PRE>match [# cream] [ice cream]
+</PRE>
+
+<P>Here the <CODE>#</CODE> should match the word <CODE>ice</CODE>.  The expression
+
+<P><PRE>match :pat butfirst :sen
+</PRE>
+
+<P>is here equivalent to
+
+<P><PRE>match [# cream] [cream]
+</PRE>
+
+<P>But this is the example that was <CODE>true</CODE> just above.
+
+<P>If the <CODE>#</CODE> has to match more than one word, several recursive
+invocations of <CODE>match</CODE> are required, each one taking the <CODE>butfirst</CODE>
+of the sentence once.  For example, suppose we start with
+
+<P><PRE>match [# cream] [vanilla ice cream]
+</PRE>
+
+<P>Here is the sequence of recursive invocations leading to a <CODE>
+true</CODE> match:
+
+<P><PRE>match :pat butfirst :sen      match [# cream] [ice cream]
+  match :pat butfirst :sen      match [# cream] [cream]
+    match butfirst :pat :sen      match [cream] [cream]
+</PRE>
+
+<P>I have been talking as if Logo only evaluated whichever of the two
+expressions
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>and
+
+<P><PRE>match :pat butfirst :sen
+</PRE>
+
+<P>is appropriate for the particular inputs used.  Actually, <EM>
+both</EM> expressions are evaluated each time, so there are many recursive
+invocations of <CODE>match</CODE> that come out <CODE>false</CODE>.  However, the purpose
+of the primitive operation <CODE>or</CODE> is to output <CODE>true</CODE> if <EM>
+either</EM> of its inputs is <CODE>true</CODE>.  To understand fully how <CODE>match</CODE>
+works, you'll almost certainly have to trace a few examples carefully by
+hand.
+
+<P><H2>Efficiency and Elegance</H2>
+
+
+<P>Pattern matching is a complicated task, and even the best-written programs
+are not blindingly fast.  But what is the &quot;best-written&quot; program?  In the
+simple pattern matcher of the last section, the instruction
+
+<P><PRE>if equalp first :pat &quot;# [output or match butfirst :pat :sen
+                                   match :pat butfirst :sen]
+</PRE>
+
+<P>is extremely compact and elegant.  It packs a lot of power into a
+single instruction, by combining the results of two recursive invocations
+with <CODE>or</CODE>.  The similarity of the inputs to the two invocations is also
+appealing.
+
+<P>The trouble with this instruction is that it is much slower than necessary,
+because it always tries both recursive invocations even if the first one
+succeeds.  A more efficient way to program the same general idea would be
+this:
+
+<P><PRE>if equalp first :pat &quot;# ~
+   [if match butfirst :pat :sen
+       [output &quot;true]
+       [output match :pat butfirst :sen]]
+</PRE>
+
+<P>This new version is much less pleasing to the eye, but it's much
+faster.  The reason is that if the expression
+
+<P><PRE>match butfirst :pat :sen
+</PRE>
+
+<P>outputs <CODE>true</CODE>, then the other recursive invocation is avoided.
+
+<P>It's a mistake to make efficiency your only criterion for program style.
+Sometimes it's worth a small slowdown of your program to achieve a large
+gain in clarity.  But this is a case in which the saving is quite
+substantial.  Here is a partial trace of the evaluation of
+
+<P><PRE>match [cat # bat] [cat rat bat]
+</PRE>
+
+<P>using the original version of the procedure:
+
+<P><PRE>match [cat # bat] [cat rat bat]              [cat # bat]   [cat rat bat]
+  match butfirst :pat butfirst :sen          [# bat]       [rat bat]
+    match butfirst :pat :sen                 [bat]         [rat bat]
+    match :pat butfirst :sen                 [# bat]       [bat]
+      match butfirst :pat :sen               [bat]         [bat]
+        match butfirst :pat butfirst :sen    []            []
+*     match :pat butfirst :sen               [# bat]       []
+*       match butfirst :pat :sen             [bat]         []
+</PRE>
+
+<P>The two invocations marked with asterisks are avoided by using the
+revised version.  These represent 25% of the invocations of <CODE>match</CODE>, a
+significant saving.  (Don't think that the program necessarily runs 25%
+faster.  Not all invocations take the same amount of time.  This is just a
+rough measure.)  If there were more words after the <CODE>#</CODE> in the pattern,
+the saving would be even greater.
+
+<P>In this situation we achieve a large saving of time by reorganizing the flow
+of control in the program.  This is quite different from a more common sort
+of concern for efficiency, the kind that leads people to use shorter
+variable names so that the program will be a little smaller, or to worry
+about whether to use <CODE>fput</CODE> or <CODE>sentence</CODE> in a case where either
+would do.  These small &quot;bumming&quot; kinds of optimization are rarely worth
+the trouble they cause.  Figuring out how many times <CODE>match</CODE> is invoked
+using each version is a simple example of the branch of computer science
+called <EM>analysis of algorithms;</EM> a more profound analysis might use
+mathematical techniques to compare the two versions in general, rather than
+for a single example.
+
+<P>In the full version of the pattern matcher, listed at the end of this
+project description, I've taken some care to avoid unnecessary matching.
+On the other hand, the full version has less flexibility than the simple
+version because of its ability to assign matching words to variables.
+Consider a case like
+
+<P><PRE>match [# #] [any old list of words]
+</PRE>
+
+<P>Which <CODE>#</CODE> matches how many words?  It doesn't matter if you
+don't store the result of the match in variables.  But if the pattern is
+<CODE>[#a #b]</CODE> instead, there has to be a uniform rule about which part of
+the pattern matches what.  (In my pattern matcher, all of the words would be
+assigned to <CODE>a</CODE>, and <CODE>:b</CODE> would be empty.  In general, pattern
+elements toward the left match as many words as possible when there is any
+ambiguity.)  The simple pattern matcher doesn't have this problem, and can
+be written to match the ambiguous pattern whichever way gives a <CODE>true</CODE>
+result most quickly.
+
+<P>By the way, what if the two expressions that invoke <CODE>match</CODE> recursively
+were reversed in the revised instruction?  That is, what if the instruction
+were changed again, to read
+
+<P><PRE>if equalp first :pat &quot;# ~
+   [if match :pat butfirst :sen
+       [output &quot;true]
+       [output match butfirst :pat :sen]]
+</PRE>
+
+<P>Would this be more or less efficient than the previous version?
+
+<P><H2>Logo's Evaluation of Inputs</H2>
+
+
+
+<P>The discussion about efficiency started because Logo <EM>evaluates</EM> the
+inputs to the primitive operation <CODE>or</CODE> before invoking the procedure.
+That is, in the example in question, Logo invokes <CODE>match</CODE> twice before
+using <CODE>or</CODE> to check whether either invocation output <CODE>true</CODE>.
+This is consistent with the way Logo does things in general: To evaluate an
+expression that uses some procedure, Logo first evaluates all the inputs for
+that procedure, and then invokes the procedure with the evaluated inputs.
+Logo's rule is extremely consistent (except for the <CODE>to</CODE> command), but
+it isn't the only possible way.  In Lisp, a language that's like Logo in
+many ways, each procedure can choose whether or not its inputs should be
+evaluated in advance.
+
+<P>
+
+<P>An example may make it clearer what I mean by this.  Lisp has a
+procedure called <CODE>set</CODE> that's
+equivalent to the Logo <CODE>make</CODE>.  You say
+
+<P><PRE>(set 'var 27)
+</PRE>
+
+<P>as the equivalent of
+
+<P><PRE>make &quot;var 27
+</PRE>
+
+<P>But Lisp also has a version called <CODE>setq</CODE> whose first input is
+<EM>not</EM> evaluated before <CODE>setq</CODE> is invoked.  It's as if there were
+an automatic quote mark before the first input, so you just say
+
+<P><PRE>(setq var 27)
+</PRE>
+
+<P>with the same effect as the other examples.
+
+<P>Except for the special format of the <CODE>to</CODE> command that forms the title
+line of a procedure, Berkeley Logo and many other Logo dialects
+do not have any form of automatically-quoted inputs.  The design principle
+was that consistency of evaluation would make the rules easier to
+understand.  Some other versions of Logo do use auto-quoting for certain
+procedures.  For example, in Berkeley Logo, to edit the definition of a
+procedure named <CODE>doit</CODE> you type the instruction
+
+<P><PRE>edit &quot;doit
+</PRE>
+
+<P>But in some other versions of Logo you instead say
+
+<P><PRE>edit doit
+</PRE>
+
+<P>because in those versions, the <CODE>edit</CODE> command auto-quotes its
+input.  One possible reason for this design decision is that teachers of
+young children like to present Logo without an explicit discussion of the
+evaluation rules.  They teach the <CODE>edit</CODE> command as a special case,
+rather than as just the invocation of a procedure like everything else.
+Using this approach, auto-quoting the input avoids having to explain what
+that quotation mark means.
+
+<P>The advantage of the non-auto-quoting version of <CODE>edit</CODE> isn't just in
+some abstract idea of consistency.  It allows us to take advantage of
+composition of functions.  Suppose you are working on a very large project,
+a video game, with hundreds of procedures.  You want to edit all the procedures
+having to do with the speed of the spaceships, or whatever moves around the
+screen in this game.  Luckily, all the procedures you want have the word
+<CODE>speed</CODE> as part of their names; they are called <CODE>shipspeed</CODE> or
+<CODE>asteroidspeed</CODE> or <CODE>speedcontrol</CODE>.  You can say
+
+<P><PRE>edit filter [substringp &quot;speed ?] procedures
+</PRE>
+
+<P>(<CODE>Procedures</CODE> is a Berkeley Logo primitive operation that
+outputs a list of all procedures defined in the workspace; <CODE>substringp</CODE>
+is a predicate that checks whether one word appears as part of a longer
+word.)  An auto-quoting <CODE>edit</CODE> command wouldn't have this flexibility.
+
+<P>The reason all this discussion is relevant to the pattern matcher is that
+the Lisp versions of <CODE>or</CODE> and <CODE>and</CODE> have auto-quoted inputs, which
+get evaluated one by one.  As soon as one of the inputs to <CODE>or</CODE> turns
+out to be <CODE>true</CODE> (or one of the inputs to <CODE>and</CODE> is <CODE>false</CODE>), the
+evaluation stops.  This is very useful not only for efficiency reasons, as
+in the discussion earlier, but to prevent certain kinds of errors.  For
+example, consider this Logo instruction:
+
+<P><PRE>if not emptyp :list [if equalp first :list 1 [print &quot;one]]
+</PRE>
+
+<P>It would be pleasant to be able to rewrite that instruction this
+way:
+
+<P><PRE>if and (not emptyp :list) (equalp first :list 1) [print &quot;one]
+</PRE>
+
+<P>The use of <CODE>and</CODE>, I think, makes the program structure clearer
+than the nested <CODE>if</CODE>s.  That is, it's apparent in the second version
+that something (the <CODE>print</CODE>) is to be done if two conditions are met, and
+that that's all that happens in the instruction.  In the first version,
+there might have been another instruction inside the range of the first
+(outer) <CODE>if</CODE>; you have to read carefully to see that that isn't so.
+
+<P>Unfortunately, the second version won't work in Logo.  If <CODE>:list</CODE> is in
+fact empty, the expression
+
+<P><PRE>(equalp first :list 1)
+</PRE>
+
+<P>is evaluated before <CODE>and</CODE> is invoked; this expression causes
+an error message because <CODE>first</CODE> doesn't accept an empty input.  In
+Lisp, the corresponding instruction <EM>would</EM> work, because the two
+predicate expressions would be evaluated serially and the second wouldn't
+be evaluated if the first turned out to be false.
+
+<P>The serial evaluation of inputs to <CODE>and</CODE> and <CODE>or</CODE> is so
+often useful that some people have proposed it for Logo, even at the cost of
+destroying the uniform evaluate-first rule.  But if you want a serial <CODE>
+and</CODE> or <CODE>or</CODE>, it's easy enough to write them, if you explicitly quote
+the predicate expressions that are its inputs:
+
+<P><PRE>to serial.and :pred1 :pred2
+if not run :pred1 [output &quot;false]
+output run :pred2
+end
+
+to serial.or :pred1 :pred2
+if run :pred1 [output &quot;true]
+output run :pred2
+end
+</PRE>
+
+<P>Here's how you would use <CODE>serial.and</CODE> to solve the problem
+with the nested <CODE>if</CODE>s:
+
+<P><PRE>if (serial.and [not emptyp :list] [equalp first :list 1]) [print &quot;one]
+</PRE>
+
+<P>Similarly, you could use <CODE>serial.or</CODE> instead of <CODE>or</CODE> to
+solve the efficiency problem in the first version of the pattern matcher:
+
+<P><PRE>output serial.or [match butfirst :pat :sen] [match :pat butfirst :sen]
+</PRE>
+
+<P>These procedures depend on the fact that the predicate expressions
+that are used as their inputs are presented inside square brackets; that's
+why they are not evaluated before <CODE>serial.and</CODE> or <CODE>serial.or</CODE> is
+invoked.
+
+<P><H2>Indirect Assignment</H2>
+
+
+
+<P>From now on, I'll be talking about the big pattern matcher, not the simple
+one I introduced to illustrate the structure of the problem.  Here is the
+top-level procedure <CODE>match</CODE>:
+
+<P><PRE>to match :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output &quot;false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput &quot;!: :pat :sen]
+if memberp first first :pat [? # ! &amp; @ ^] [output special :pat :sen]
+if emptyp :sen [output &quot;false]
+if equalp first :pat first :sen ~
+   [output match butfirst :pat butfirst :sen]
+output &quot;false
+end
+</PRE>
+
+<P>As you'd expect, there are more cases to consider in this more
+featureful version, but the basic structure is similar to the simple
+matcher.  The instructions starting <CODE>if emptyp</CODE>, <CODE>if memberp</CODE>,
+<CODE>if emptyp</CODE>, and <CODE>if equalp</CODE> play the same roles as similar
+instructions in the other version.  (The <CODE>memberp</CODE> test replaces the
+comparison against the word <CODE>#</CODE> with a wider range of choices.)
+
+<P>The first <CODE>if</CODE> instruction tests for errors in the format of the pattern
+or the sentence to be matched, in which a word is found where a list was
+expected.  It's not important if you use well-formed inputs to <CODE>match</CODE>.
+The <CODE>listp</CODE> test essentially converts a pattern like
+
+<P><PRE>[foo [some # pattern] baz]
+</PRE>
+
+<P>to the equivalent form
+
+<P><PRE>[foo !:[some # pattern] baz]
+</PRE>
+
+<P>The interesting new case comes when <CODE>match</CODE> sees a word in the
+pattern that starts with one of the six special quantifier characters.  In
+this case, <CODE>match</CODE> invokes <CODE>special</CODE> to check for a match.
+
+<P>One of the interesting properties of <CODE>special</CODE> is that it has to be able
+to assign a value to a variable whose name is not built into the program,
+but instead is part of the <EM>data</EM> used as input to the program.
+That is, if the word
+
+<P><PRE>?howmany:numberp
+</PRE>
+
+<P>appears in the pattern, <CODE>special</CODE> (or one of its
+subprocedures) must assign a value to the variable named <CODE>howmany</CODE>, but
+there is no instruction of the form
+
+<P><PRE>make &quot;howmany ...
+</PRE>
+
+<P>anywhere in the program.  Instead, <CODE>match</CODE> has <EM>another</EM>
+variable, whose name is <CODE>special.var</CODE>, whose <EM>value</EM> is the <EM>
+name</EM> <CODE>howmany</CODE>.  The assignment of the matching words to the
+pattern-specified variable is done with an instruction like
+
+<P><PRE>make :special.var ...
+</PRE>
+
+<P>Here the first input to <CODE>make</CODE> is not a quoted word, as usual,
+but an expression that must be evaluated to figure out which variable to use.
+
+<P><CODE>Special</CODE>, then, has two tasks.  First it must divide a word like
+
+<P><PRE>?howmany:numberp
+</PRE>
+
+<P>into its component parts; then it must carry out the matching
+tasks that are the <EM>meaning</EM> of those parts.  These two tasks are like
+a smaller version of what a programming language interpreter like Logo
+does.  Finding the meaningful parts of an instruction is called the <EM>
+syntax</EM> of a language, and understanding what the parts mean is called the
+<EM>semantics</EM> of the language.  <CODE>Special</CODE> has two instructions, one
+for the syntax and one for the semantics:
+
+<P><PRE>to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word &quot;match first first :pat
+end
+</PRE>
+
+<P>To <EM>parse</EM> something is to divide it into its pieces.  <CODE>
+Parse.special</CODE> outputs a list of the form
+
+<P><PRE>[howmany numberp]
+</PRE>
+
+<P>for the example we're considering.  Then <CODE>set.special</CODE> assigns
+the two members of this list as the values of two variables.  The variable
+named <CODE>special.var</CODE> is given the value <CODE>howmany</CODE>, and the variable
+named <CODE>special.pred</CODE> is given the value <CODE>numberp</CODE>.  This preliminary
+work is what makes possible the indirect assignment described earlier.
+
+<P><H2>Defaults</H2>
+
+<P>What happens if the pattern has a word like
+
+<P><PRE>?:numberp
+</PRE>
+
+<P>without a variable name?  What happens when the program tries to
+assign a value to the variable named in the pattern?  <CODE>Set.special</CODE>
+contains the instruction
+
+<P><PRE>if emptyp :special.var [make &quot;special.var &quot;special.buffer]
+</PRE>
+
+<P>The effect of this instruction is that if you do not mention a
+variable in the pattern, the variable named <CODE>special.buffer</CODE> will be
+used to hold the results of the match.  This variable is the <EM>
+default</EM> variable, the one used if no other is specified.
+
+<P>It's important, by the way, that the variable <CODE>special.buffer</CODE> is
+declared to be local in procedure <CODE>match</CODE>.  What makes it important is
+that <CODE>match</CODE> is recursive; if you use a pattern like
+
+<P><PRE>[a # b # c]
+</PRE>
+
+<P>then the matching of the second <CODE>#</CODE> is a subproblem of the
+matching of the first one.  <CODE>Match</CODE> invokes <CODE>special</CODE>, which invokes
+<CODE>match#</CODE>, which invokes <CODE>#test</CODE>, which invokes <CODE>
+match</CODE> on the <CODE>butfirst</CODE> of the pattern.  That <CODE>butfirst</CODE> contains
+another <CODE>#</CODE>.  Each of these uses the variable <CODE>special.buffer</CODE> to
+remember the words it is trying as a match; since the variable is declared
+local, the two don't get confused.  (This means, by the way, that you can
+really confuse <CODE>match</CODE> by using the same variable name twice in a
+pattern.  It requires a fairly complicated pattern to confuse <CODE>match</CODE>,
+but here is an example.  The first result is correct, the second incorrect.
+
+<P><PRE>? <U>print match [a #x b &amp;y ! c] [a i b j c b k c]</U>
+true
+? <U>show :x show :y</U>
+[i]
+[j c b]
+? <U>print match [a #x b &amp;x ! c] [a i b j c b k c]</U>
+false
+</PRE>
+
+<P>The only change is that the variable name <CODE>x</CODE> is used twice in
+the second pattern, and as a result, <CODE>match</CODE> doesn't find the correct
+match.  You'll know that you really understand how <CODE>match</CODE> works if you
+can explain why it <EM>won't</EM> fail if the <CODE>!</CODE> is removed from the
+pattern.)
+
+<P>When writing a tool to be used in other projects, especially if the tool
+will be used by other people, it's important to think about defaults.  What
+should the program do if some piece of information is missing?  If you don't
+provide for a default explicitly, the most likely result is a Logo error
+message; your program will end up trying to take <CODE>first</CODE> of an empty
+list, or something like that.
+
+<P>Another default in the pattern matcher is for the predicate used to test
+matches.  For example, what happens when the word
+
+<P><PRE>?howmany
+</PRE>
+
+<P>appears in the pattern, without a predicate?  This case is
+recognized by <CODE>parse.special</CODE>, in the instruction
+
+<P><PRE>if emptyp :word [output list :var &quot;always]
+</PRE>
+
+<P>The special predicate <CODE>always</CODE> is used if no other is given in
+the pattern.  <CODE>Always</CODE> has a very simple definition:
+
+<P><PRE>to always :x
+output &quot;true
+end
+</PRE>
+
+<P>
+
+<P><H2>Program as Data</H2>
+
+
+<P>The instruction in <CODE>special</CODE> that carries out the semantics of a special
+pattern-matching instruction word is
+
+<P><PRE>output run word &quot;match first first :pat
+</PRE>
+
+<P>If the pattern contains the word
+
+<P><PRE>?howmany:numberp
+</PRE>
+
+<P>then this instruction extracts the quantifier character
+<CODE>?</CODE> (the first character of the first word of the pattern) and makes
+from it a procedure name <CODE>match?</CODE>.  That name is then <CODE>run</CODE> as a Logo
+expression; that is, <CODE>special</CODE> invokes a procedure whose name is <CODE>
+match?</CODE>.
+
+<P>Most programming languages do not allow the invocation of a procedure based
+on finding the name of the procedure in the program's data.  Generally there
+is a very strict separation between program and data.  Being able to
+manipulate data to create a Logo instruction, and then run it, is a very
+powerful part of Logo.  It is also used to deal with the names of predicates
+included in the pattern; to see if a word in the sentence input to <CODE>
+match</CODE> is a match for a piece of the pattern, the predicate <CODE>try.pred</CODE>
+contains the instruction
+
+<P><PRE>output run list :special.pred quoted first :sen
+</PRE>
+
+<P>This instruction generates a list whose first member is the name
+of the predicate found in the pattern and whose second and last member is a
+word from the sentence.  Then this list is run as a Logo expression, which
+should yield either <CODE>true</CODE> or <CODE>false</CODE> as output, indicating whether
+or not the word is acceptable.
+
+<P><H2>Parsing Rules</H2>
+
+<P>When you are reading the program, remember that the kind of pattern that
+I've written as
+
+<P><PRE>[begin !:[smaller # pattern] end]
+</PRE>
+
+<P>is read by Logo as if I'd written
+
+<P><PRE>[begin !: [smaller # pattern] end]
+</PRE>
+
+<P>That is to say, this pattern is a list of four members.  I think
+of the middle two as a unit, representing a single thing to match.  The
+sublist takes the place of a predicate name after the <CODE>!</CODE> quantifier.
+But for Logo, there is no predicate name in the word starting with the
+exclamation point; the pattern is a separate member of the large list.
+That's why <CODE>set.special</CODE> uses the expression
+
+<P><PRE>emptyp :special.pred
+</PRE>
+
+<P>to test for this situation, rather than <CODE>listp</CODE>.  After <CODE>
+parse.special</CODE> does its work, all it has found is a colon with nothing
+following it.  <CODE>Set.special</CODE> has to look at the next member of the
+pattern list in order to find the subpattern.
+
+<P><H2>Further Explorations</H2>
+
+<P>Chapter 9 is a large program that uses <CODE>match</CODE>.  It
+may give you ideas for the ways in which this tool can be used in your own
+programs.  Here, instead of talking about applications of <CODE>match</CODE>, I'll
+discuss some possible extensions or revisions of the pattern matcher itself.
+
+<P>There are many obvious small extensions.  For example, to complement the
+special <CODE>in</CODE> primitive, you could write <CODE>notin</CODE>, which would accept
+all <EM>but</EM> the members of the following list.  You could allow the use
+of a number as the predicate, meaning that exactly that many matching words
+are required.  That is, in the example for which I invented the predicate
+<CODE>threep</CODE>, I would instead be able to use
+
+<P><PRE>[@begin:3 #rest]
+</PRE>
+
+<P>as the pattern.
+
+<P>There is no convenient way to say in a pattern that some subpattern can be
+repeated several times, if the subpattern is more than a single word.  That
+is, in the second version of <CODE>converse</CODE>, instead of having to use <CODE>
+while</CODE> to chop off  pieces of the matched
+sentence into a variable <CODE>rest</CODE>, I'd like to be able to say in the
+pattern something like
+
+<P><PRE>[@@: [@:anyof [[my name is #name:notand]
+               [i like #like:notand]
+               [&amp;:notand]]
+      ?:in [and]]]
+</PRE>
+
+<P>Here the doubled atsign (<CODE>@@</CODE>) means that the entire pattern
+that follows should be matched repeatedly instead of only once.
+
+<P>For other approaches to pattern matching, you might want to read about the
+programming languages Snobol and Icon, each of which includes pattern
+matching as one of its main features.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch6/v2ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch8/v2ch8.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+to match :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen ~
+   [output match butfirst :pat butfirst :sen]
+output "false
+end
+
+;; Parsing quantifiers
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+;; Exactly one match
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output match butfirst :pat butfirst :sen
+end
+
+;; Zero or one match
+
+to match?
+make :special.var []
+if emptyp :sen [output match butfirst :pat :sen]
+if not try.pred [output match butfirst :pat :sen]
+make :special.var first :sen
+if match butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output match butfirst :pat :sen
+end
+
+;; Zero or more matches
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+;; One or more matches
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+;; Zero or more matches (as few as possible)
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+;; Match words in a group
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if match butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+;; Applying the predicates
+
+to try.pred
+if listp :special.pred [output match :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output match :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+;; Special predicates
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if match first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
+</PRE><P>
+
+
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch6/v2ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch8/v2ch8.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch8/family.gif b/js/games/nluqo.github.io/~bh/v2ch8/family.gif
new file mode 100644
index 0000000..bf7217d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch8/family.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch8/plist.html b/js/games/nluqo.github.io/~bh/v2ch8/plist.html
new file mode 100644
index 0000000..e5851d3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch8/plist.html
@@ -0,0 +1,513 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 8: Property Lists</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Property Lists</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch08.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch7/v2ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+
+In the first volume of this series, I wrote a procedure
+named <CODE>french</CODE> that translates words from English to
+French using a dictionary list like this:
+
+<P><PRE>[[book livre] [computer ordinateur] [window fenetre]]
+</PRE>
+
+<P>This technique works fine with a short word list.
+But suppose we wanted to undertake a serious
+translation project, and suppose we wanted to be able to translate
+English words into several foreign languages.  (You can buy hand-held
+machines these days with little keyboards and display panels that do
+exactly that.)  <CODE>Butfirst</CODE>ing through a list of tens of thousands
+of words would be pretty slow, and setting up the lists in the first
+place would be very difficult and error-prone.
+
+<P>If we were just dealing with English and French, one solution would be
+to set up many variables, with each an English word as its <EM>
+name</EM> and the corresponding French word as its <EM>value:</EM>
+
+<P><PRE>make &quot;paper &quot;papier
+make &quot;chair &quot;chaise
+make &quot;computer &quot;ordinateur
+make &quot;book &quot;livre
+make &quot;window &quot;fenetre
+</PRE>
+
+<P>Once we've done this, the procedure to translate from
+English to French is just <CODE>thing</CODE>:
+
+<P><PRE>? <U>print thing &quot;book</U>
+livre
+</PRE>
+
+<P>The advantage of this technique is that it's easy to correct
+a mistake in the translation; you just have to assign a new value to
+the variable for the one word that is in error, instead of trying to
+edit a huge list.
+
+<P>But we can't quite use this technique for more than one language.  We
+could create variables whose names contained both the English word and
+the target language:
+
+<P><PRE>make &quot;book.french &quot;livre
+make &quot;book.spanish &quot;libro
+
+to spanish :word
+output thing word :word &quot;.spanish
+end
+</PRE>
+
+<P>This is a perfectly workable technique but a little messy.
+Many variables will be needed.  A compromise might be to collect all
+the translations for a single English word into one list:
+
+<P><PRE>make &quot;book [livre libro buch libro liber]
+
+to spanish :word
+output item 2 thing :word
+end
+</PRE>
+
+<P><H2>Naming Properties</H2>
+
+<P>The only thing wrong with this technique is that we have to
+remember the correct order of the foreign languages.  This can be
+particularly tricky because some of the words are the same, or almost
+the same, from one language to another.  And if we happen not to know
+the translation of a particular word in a particular language, we have
+to take some pains to leave a gap in the list.  Instead we could use
+a list that tells us the languages as well as the translated words:
+
+<P><PRE>[French livre Spanish libro German buch Italian libro Latin liber]
+</PRE>
+
+<P>A list in this form is called a <EM>property list.</EM>  The
+odd-numbered members of the list are property <EM>names,</EM> and the
+even-numbered members are the corresponding property <EM>values.</EM>
+
+<P>You can see that this solution is a very flexible one.  We can add a
+new language to the list later, without confusing old procedures that
+expect a particular length of list.  If we don't know the translation
+for a particular word in a particular language, we can just leave it
+out.  The order of the properties in the list doesn't matter, so we
+don't have to remember it.  The properties need not all be uniform in
+their significance; we could, for example, give <CODE>book</CODE> a property
+whose name is <CODE>part.of.speech</CODE> and whose value is <CODE>noun</CODE>.
+
+<P>To make this work, Berkeley Logo (along with several other dialects)
+has procedures to create, remove, and examine
+properties.  The command <CODE>pprop</CODE> (Put PROPerty) takes three inputs;
+the first two must be words, and the third can be any datum.  The
+first input is the name of a property list; the second is the name of
+a property; the third is the value of that property.  The effect of
+<CODE>pprop</CODE> is to add the new property to the named list.  (If there
+was already a property with the given name, its old value is replaced
+by the new value.) The command <CODE>remprop</CODE> (REMove PROPerty)
+takes two inputs, which
+must be words: the name of a property list and the name of a property
+in the list.  The effect of <CODE>remprop</CODE> is to remove the property
+(name and value) from the list.  The operation <CODE>gprop</CODE> (Get
+PROPerty) also takes two words as inputs, the name of a property list
+and the name of a property in the list.  The output from <CODE>gprop</CODE>
+is the value of the named property.  (If there is no such property in
+the list, <CODE>gprop</CODE> outputs the empty list.)
+
+<P><PRE>? <U>print gprop &quot;book &quot;German</U>
+buch
+</PRE>
+
+<P><H2>Writing Property List Procedures in Logo</H2>
+
+<P>It would be possible to write Logo procedures that would use ordinary
+variables to hold property lists, which would work just like the ones
+I've described.  Since Berkeley Logo provides property lists as
+a primitive capability, you won't need to load these into your
+computer, but later parts of the discussion will make more sense if
+you understand how they work.  Here they are:
+
+<P><PRE>to pprop :list :name :value
+if not namep :list [make :list []]
+make :list pprop1 :name :value thing :list
+end
+
+to pprop1 :name :value :oldlist
+if emptyp :oldlist [output list :name :value]
+if equalp :name first :oldlist ~
+   [output fput :name (fput :value (butfirst butfirst :oldlist))]
+output fput (first :oldlist) ~
+            (fput (first butfirst :oldlist)
+                  (pprop1 :name :value (butfirst butfirst :oldlist)))
+end
+
+to remprop :list :name
+if not namep :list [make :list []]
+make :list remprop1 :name thing :list
+end
+
+to remprop1 :name :oldlist
+if emptyp :oldlist [output []]
+if equalp :name first :oldlist [output butfirst butfirst :oldlist]
+output fput (first :oldlist) ~
+            (fput (first butfirst :oldlist)
+                  (remprop1 :name (butfirst butfirst :oldlist)))
+end
+
+to gprop :list :name
+if not namep :list [output []]
+output gprop1 :name thing :list
+end
+
+to gprop1 :name :props
+if emptyp :props [output []]
+if equalp :name first :props [output first butfirst :props]
+output gprop1 :name (butfirst butfirst :props)
+end
+</PRE>
+
+<P>Note that the input called <CODE>list</CODE> in each of these
+procedures is not a property list itself but the <EM>name</EM> of a
+property list.  That's why each of the superprocedures evaluates
+
+<P><PRE>thing :list
+</PRE>
+
+<P>to pass down as an input to its subprocedure.
+
+<P><H2>Property Lists Aren't Variables</H2>
+
+<P>The primitive procedures that support property lists in Berkeley
+Logo, however, do <EM>not</EM> use <CODE>thing</CODE> to find the property
+list.  Just as the same word can independently name a procedure and a
+variable, a property list is a <EM>third</EM> kind of named entity,
+which is separate from the <CODE>thing</CODE> with the same name.  For
+example, if we gave <CODE>book</CODE> the property list shown with a
+series of instructions like
+
+<P><PRE>pprop &quot;book &quot;French &quot;livre
+pprop &quot;book &quot;Spanish &quot;libro
+</PRE>
+
+<P>and so on, we would not be creating a <EM>variable</EM> named
+<CODE>book</CODE>.
+
+<P><PRE>? <U>print :book</U>
+book has no value
+</PRE>
+
+<P>(Of course, we could give <CODE>book</CODE> a value with a <CODE>
+make</CODE> instruction, but that value would have nothing to do with the
+property list.)
+Instead there is a fourth primitive procedure called <CODE>plist</CODE> that
+can be used to examine a property list.  <CODE>Plist</CODE>
+takes one input, a word.  It outputs the property list associated with
+that word.  If there is no such property list, <CODE>plist</CODE> outputs the
+empty list.
+
+<P><H2>How Language Designers Earn Their Pay</H2>
+
+<P>If you're like me, you may have some questions about why this Logo
+feature works the way it does.  The form of a property list, for
+example, may seem arbitrary to you.  Why should it be a flat list,
+with names as the odd-numbered members and values as the even-numbered
+ones?  Wouldn't it be more sensible to structure the list this way:
+
+<P><PRE>[[French livre] [Spanish libro] [German buch]
+ [Italian libro] [Latin liber]]
+</PRE>
+
+<P>In this scheme each member of a property list is <EM>a property.</EM>  A
+property has two parts, a name and a value.  A list structured in this
+way would be easier to use with iterative tools like <CODE>map</CODE>.  (Try
+to figure out a way to redefine <CODE>map</CODE> so that it could map a
+function over <EM>pairs</EM> of members of its input list.  Your goal
+is to find a way that isn't a kludge.) You wouldn't have to think
+&quot;What if the list has an odd number of members&quot; when writing
+procedures to manipulate property lists.
+
+<P>So why does Logo use the notation it does?  I'm afraid the real answer
+is &quot;It's traditional.&quot;  Logo property lists are the way they are
+because that's what property lists look like in Lisp, the language
+from which Logo is descended.  Now, why was that decision made in the
+design of Lisp?  I'm not sure of the answer, but one possible reason
+is that the flat property lists take up less room in the computer's
+memory than the list-of-lists that I'd find more logical.  (Logo
+measures its available memory in <EM>nodes.</EM>  It takes two overhead
+nodes per property, not including the ones that actually contain the
+name and the value, for the flat property list; it would take three
+overhead nodes per property for the list-of-lists.)
+
+<P>Another minor advantage is that if you want to live dangerously, you
+can use <CODE>memberp</CODE> to see if a particular property name exists in a
+property list.  It's living dangerously because the property name
+might, by coincidence, be the <EM>value</EM> of some other property.
+(In the dictionary example, this would be the situation if the German
+word for &quot;book&quot; were &quot;Greek&quot;!) The advantage is that <CODE>memberp</CODE>
+is a primitive procedure, so it's faster than one you could write
+yourself that would check just the odd-numbered members of the
+property list.
+
+<P><H2>Fast Replacement</H2>
+
+<P>Another question you might ask is this one: Why have property list
+primitives at all?  The list is a very general data structure, which
+can be organized in many ways.  Why single out this particular way of
+using lists as the one to support with special primitive procedures?
+After all, it's easy enough to implement property lists in Logo, as
+I've done in this chapter.
+
+<P>One answer is that the primitives can be much faster than the versions
+I've written in Logo because they can replace a value inside a
+property list without recopying the rest of the list.  My procedure
+<CODE>pprop1</CODE>, for example, has to do two <CODE>fput</CODE>s for each property
+in the list every time you want to change a single property.  The
+primitive version of <CODE>pprop</CODE> doesn't reconstruct the entire list;
+it just rips out the old value from inside the list and sticks in a
+new value.
+
+<P>Aside from the question of speed, the difference between changing
+something inside a list and making a modified copy of the list may not
+seem like a big deal.  But it does raise a subtle question.  If you say
+
+<P><PRE>make &quot;myprops plist &quot;myself
+</PRE>
+
+<P>and then, later, use <CODE>pprop</CODE> or <CODE>remprop</CODE> to change some
+of the properties of <CODE>myself</CODE>, does the value of the variable <CODE>
+myprops</CODE> change?  The answer is no; <CODE>plist</CODE> really outputs a <EM>
+copy</EM> of the property list as it exists at the moment you invoke <CODE>
+plist</CODE>.  That copy becomes the value of <CODE>myprops</CODE>, and it doesn't change
+if the property list itself is changed later.  (Berkeley Logo, like Lisp,
+does have primitives that allow you to change things inside lists in
+general, and this possibility of a variable magically changing in value
+because you change something else really does arise!)
+
+<P><H2>Defaults</H2>
+
+<P>Another language design question you might be wondering about is why
+<CODE>gprop</CODE> outputs the empty list if you ask for a property that
+doesn't exist.  How do you say &quot;book&quot; in Urdu?
+
+<P><PRE>? <U>show gprop &quot;book &quot;urdu</U>
+[]
+</PRE>
+
+<P>If you ask for a <EM>variable</EM> that doesn't exist, you
+get an error message.  Why doesn't Logo print something like
+
+<P><PRE>book has no urdu property
+</PRE>
+
+<P>in this situation?
+
+<P>The name for &quot;what you get when you haven't provided an answer&quot; is a
+<EM>default.</EM>  There aren't very many situations in which Logo
+provides defaults.  One obscure example in Berkeley Logo is the <EM>
+origin</EM> of an array--the number used to select its first member.
+By default the first member is number one, but it's possible to set up
+an array that begins with some other number (most commonly zero).
+
+<P>The question of what should be considered an error is always a hot one
+among language designers.  The issue is one of programming convenience
+versus ease of debugging.  Suppose <CODE>thing</CODE> output the empty list
+if asked for a nonexistent variable.  It would have been easier for
+me to write the property list procedures in this chapter; I could have
+left out the <CODE>if not namep</CODE> instructions.  This is a situation in
+which I might ask for a variable that hasn't been given a value &quot;on
+purpose,&quot; with a perfectly clear idea of what result I want.  On the
+other hand, if <CODE>thing</CODE> were permissive in this way, what would
+happen if I gave it an input that wasn't a variable name because I
+made a spelling error?  Instead of getting an error message right
+away, my program would muddle on with an empty list instead of
+whatever value was really needed.  Eventually I'd get a different
+error message or an incorrect result, and it would be much harder to
+find the point in the program that caused the problem.
+
+<P>The same issue arises, by the way, about operations like <CODE>first</CODE>.
+What should <CODE>first</CODE> do if you give it an empty list as input?
+Logo considers this an error, as do most versions of Lisp.  Some
+versions of Lisp, though, output an empty list in this situation.
+
+<P>It's most common to need &quot;permissive&quot; primitives when working on
+extensions to Logo itself, such as property lists, as opposed to specific
+application programs.  An application programmer has complete control over
+the inputs that procedures will be given; an implementor of a programming
+language (or an extension to it) has to handle anything that comes up.  I
+think that's why, traditionally, it's always been the <EM>teachers</EM> of
+Logo who vote in favor of error messages and the <EM>implementors</EM> who
+prefer permissive primitives.
+
+<P>So why is <CODE>gprop</CODE> permissive when all other Logo primitives are
+not?  Well, the others were designed early in the history of the
+language when teachers were in charge at the design meetings.
+Property lists were added to Logo more recently; the implementors showed up
+one day and said, &quot;Guess what?  We've put in property lists.&quot;  So
+they did it their way!
+
+<P><H2>An Example: Family Trees</H2>
+
+<P>Here is an example program using property lists.  My goal is to
+represent this family tree:
+
+<P><CENTER><IMG SRC="family.gif" ALT="figure: family"></CENTER>
+
+<P>Each person will be represented as a property list,
+containing the properties <CODE>mother</CODE>, <CODE>father</CODE>, <CODE>kids</CODE>, and
+<CODE>sex</CODE>.  The first two will have words (names) as their values,
+<CODE>kids</CODE> will be a list of names, and <CODE>sex</CODE> will be <CODE>male</CODE> or
+<CODE>female</CODE>.  Note that this is only a partial family tree; we don't know
+the name of Betty's husband or Boris's wife.  Here's how I'll enter
+all this information:
+
+<P><PRE>to family :mom :dad :girls :boys
+catch &quot;error [pprop :mom &quot;sex &quot;female]
+catch &quot;error [pprop :dad &quot;sex &quot;male]
+foreach :girls [pprop ? &quot;sex &quot;female]
+foreach :boys [pprop ? &quot;sex &quot;male]
+localmake &quot;kids sentence :girls :boys
+catch &quot;error [pprop :mom &quot;kids :kids]
+catch &quot;error [pprop :dad &quot;kids :kids]
+foreach :kids [pprop ? &quot;mother :mom   pprop ? &quot;father :dad]
+end
+
+family &quot;Ann &quot;Abraham [Betty] [Bill Bob]
+family &quot;Amelia &quot;Albert [Barbara] [Brian Boris]
+family &quot;Betty [] [Cathy] [Colin]
+family &quot;Barbara &quot;Bob [Carol] [Charlie]
+family [] &quot;Boris [] [Chris Cecil]
+</PRE>
+
+<P>The instructions that catch errors do so in case a family has an
+unknown mother or father, which is the case for two of the ones in our
+family tree.
+
+<P>Now the idea is to be able to get information out of the tree.  The
+easy part is to get out the information that is there explicitly:
+
+<P><PRE>to mother :person
+output gprop :person &quot;mother
+end
+
+to kids :person
+output gprop :person &quot;kids
+end
+
+to sons :person
+output filter [equalp (gprop ? &quot;sex) &quot;male] kids :person
+end
+</PRE>
+
+<P>Of course several more such procedures can be written along
+similar lines.
+
+<P>The more interesting challenge is to deduce information that is not
+explicitly in the property lists.  The following procedures make use
+of the ones just defined and other obvious ones like <CODE>father</CODE>.
+
+<P><PRE>to grandfathers :person
+output sentence (father father :person) (father mother :person)
+end
+
+to grandchildren :person
+output map.se [gprop ? &quot;kids] (kids :person)
+end
+
+to granddaughters :person
+output justgirls grandchildren :person
+end
+
+to justgirls :people
+output filter [equalp (gprop ? &quot;sex) &quot;female] :people
+end
+
+to aunts :person
+output justgirls sentence (siblings mother :person) ~
+                          (siblings father :person)
+end
+
+to cousins :person
+output map.se [gprop ? &quot;kids] sentence (siblings mother :person) ~
+                                       (siblings father :person)
+end
+
+to siblings :person
+local &quot;parent
+if emptyp :person [output []]
+make &quot;parent mother :person
+if emptyp :parent [make &quot;parent father :person]
+output remove :person kids :parent
+end
+</PRE>
+
+<P>In writing <CODE>siblings</CODE>, I've been careful to have it
+output an empty list if its input is empty.  That's because <CODE>
+aunts</CODE> and <CODE>cousins</CODE> may invoke <CODE>siblings</CODE> with an empty
+input if we're looking for the cousins of someone whose father or
+mother is unknown.
+
+<P>You'll find, if you try out these procedures, that similar care needs
+to be exercised in some of the &quot;easy&quot; procedures previously written.
+For example, <CODE>grandfathers</CODE> will give an error message if applied
+to a person whose mother <EM>or</EM> father is unknown, even if the
+other parent is known.  One solution would be a more careful version
+of <CODE>father</CODE>:
+
+<P><PRE>to father :person
+if emptyp :person [output []]
+output gprop :person &quot;father
+end
+</PRE>
+
+<P>The reason for choosing an empty list as output for a
+nonexistent person rather than an empty word is that the former just
+disappears when combined with other things using <CODE>sentence</CODE>, but
+an empty word stays in the resulting list.  So <CODE>grandfathers</CODE>, for
+example, will output a list of length 1 if only one grandfather is
+known rather than a list with an empty word in addition to the known
+grandfather.  Procedures like <CODE>cousins</CODE> also rely heavily on the
+flattening effect of <CODE>sentence</CODE>.
+
+<P>This is rather an artificial family tree because I've paid no
+attention to family names, and all the given names are unique.  In
+practice, you wouldn't be able to assume that.  Instead, each property
+list representing a person would have a name like <CODE>person26</CODE> and
+would include properties <CODE>familyname</CODE> and <CODE>givenname</CODE> or
+perhaps just a <CODE>name</CODE> property whose value would be a list.  All
+the procedures like <CODE>father</CODE> and <CODE>cousins</CODE> would output lists
+of these funny <CODE>person26</CODE>-type names, and you'd need another
+procedure <CODE>realnames</CODE> that would extract the real names from the
+property lists of people in a list.  But I thought it would be clearer
+to avoid that extra level of naming confusion here.
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch7/v2ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch8/v2ch8.html b/js/games/nluqo.github.io/~bh/v2ch8/v2ch8.html
new file mode 100644
index 0000000..e5851d3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch8/v2ch8.html
@@ -0,0 +1,513 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 8: Property Lists</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Property Lists</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch08.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch7/v2ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+
+In the first volume of this series, I wrote a procedure
+named <CODE>french</CODE> that translates words from English to
+French using a dictionary list like this:
+
+<P><PRE>[[book livre] [computer ordinateur] [window fenetre]]
+</PRE>
+
+<P>This technique works fine with a short word list.
+But suppose we wanted to undertake a serious
+translation project, and suppose we wanted to be able to translate
+English words into several foreign languages.  (You can buy hand-held
+machines these days with little keyboards and display panels that do
+exactly that.)  <CODE>Butfirst</CODE>ing through a list of tens of thousands
+of words would be pretty slow, and setting up the lists in the first
+place would be very difficult and error-prone.
+
+<P>If we were just dealing with English and French, one solution would be
+to set up many variables, with each an English word as its <EM>
+name</EM> and the corresponding French word as its <EM>value:</EM>
+
+<P><PRE>make &quot;paper &quot;papier
+make &quot;chair &quot;chaise
+make &quot;computer &quot;ordinateur
+make &quot;book &quot;livre
+make &quot;window &quot;fenetre
+</PRE>
+
+<P>Once we've done this, the procedure to translate from
+English to French is just <CODE>thing</CODE>:
+
+<P><PRE>? <U>print thing &quot;book</U>
+livre
+</PRE>
+
+<P>The advantage of this technique is that it's easy to correct
+a mistake in the translation; you just have to assign a new value to
+the variable for the one word that is in error, instead of trying to
+edit a huge list.
+
+<P>But we can't quite use this technique for more than one language.  We
+could create variables whose names contained both the English word and
+the target language:
+
+<P><PRE>make &quot;book.french &quot;livre
+make &quot;book.spanish &quot;libro
+
+to spanish :word
+output thing word :word &quot;.spanish
+end
+</PRE>
+
+<P>This is a perfectly workable technique but a little messy.
+Many variables will be needed.  A compromise might be to collect all
+the translations for a single English word into one list:
+
+<P><PRE>make &quot;book [livre libro buch libro liber]
+
+to spanish :word
+output item 2 thing :word
+end
+</PRE>
+
+<P><H2>Naming Properties</H2>
+
+<P>The only thing wrong with this technique is that we have to
+remember the correct order of the foreign languages.  This can be
+particularly tricky because some of the words are the same, or almost
+the same, from one language to another.  And if we happen not to know
+the translation of a particular word in a particular language, we have
+to take some pains to leave a gap in the list.  Instead we could use
+a list that tells us the languages as well as the translated words:
+
+<P><PRE>[French livre Spanish libro German buch Italian libro Latin liber]
+</PRE>
+
+<P>A list in this form is called a <EM>property list.</EM>  The
+odd-numbered members of the list are property <EM>names,</EM> and the
+even-numbered members are the corresponding property <EM>values.</EM>
+
+<P>You can see that this solution is a very flexible one.  We can add a
+new language to the list later, without confusing old procedures that
+expect a particular length of list.  If we don't know the translation
+for a particular word in a particular language, we can just leave it
+out.  The order of the properties in the list doesn't matter, so we
+don't have to remember it.  The properties need not all be uniform in
+their significance; we could, for example, give <CODE>book</CODE> a property
+whose name is <CODE>part.of.speech</CODE> and whose value is <CODE>noun</CODE>.
+
+<P>To make this work, Berkeley Logo (along with several other dialects)
+has procedures to create, remove, and examine
+properties.  The command <CODE>pprop</CODE> (Put PROPerty) takes three inputs;
+the first two must be words, and the third can be any datum.  The
+first input is the name of a property list; the second is the name of
+a property; the third is the value of that property.  The effect of
+<CODE>pprop</CODE> is to add the new property to the named list.  (If there
+was already a property with the given name, its old value is replaced
+by the new value.) The command <CODE>remprop</CODE> (REMove PROPerty)
+takes two inputs, which
+must be words: the name of a property list and the name of a property
+in the list.  The effect of <CODE>remprop</CODE> is to remove the property
+(name and value) from the list.  The operation <CODE>gprop</CODE> (Get
+PROPerty) also takes two words as inputs, the name of a property list
+and the name of a property in the list.  The output from <CODE>gprop</CODE>
+is the value of the named property.  (If there is no such property in
+the list, <CODE>gprop</CODE> outputs the empty list.)
+
+<P><PRE>? <U>print gprop &quot;book &quot;German</U>
+buch
+</PRE>
+
+<P><H2>Writing Property List Procedures in Logo</H2>
+
+<P>It would be possible to write Logo procedures that would use ordinary
+variables to hold property lists, which would work just like the ones
+I've described.  Since Berkeley Logo provides property lists as
+a primitive capability, you won't need to load these into your
+computer, but later parts of the discussion will make more sense if
+you understand how they work.  Here they are:
+
+<P><PRE>to pprop :list :name :value
+if not namep :list [make :list []]
+make :list pprop1 :name :value thing :list
+end
+
+to pprop1 :name :value :oldlist
+if emptyp :oldlist [output list :name :value]
+if equalp :name first :oldlist ~
+   [output fput :name (fput :value (butfirst butfirst :oldlist))]
+output fput (first :oldlist) ~
+            (fput (first butfirst :oldlist)
+                  (pprop1 :name :value (butfirst butfirst :oldlist)))
+end
+
+to remprop :list :name
+if not namep :list [make :list []]
+make :list remprop1 :name thing :list
+end
+
+to remprop1 :name :oldlist
+if emptyp :oldlist [output []]
+if equalp :name first :oldlist [output butfirst butfirst :oldlist]
+output fput (first :oldlist) ~
+            (fput (first butfirst :oldlist)
+                  (remprop1 :name (butfirst butfirst :oldlist)))
+end
+
+to gprop :list :name
+if not namep :list [output []]
+output gprop1 :name thing :list
+end
+
+to gprop1 :name :props
+if emptyp :props [output []]
+if equalp :name first :props [output first butfirst :props]
+output gprop1 :name (butfirst butfirst :props)
+end
+</PRE>
+
+<P>Note that the input called <CODE>list</CODE> in each of these
+procedures is not a property list itself but the <EM>name</EM> of a
+property list.  That's why each of the superprocedures evaluates
+
+<P><PRE>thing :list
+</PRE>
+
+<P>to pass down as an input to its subprocedure.
+
+<P><H2>Property Lists Aren't Variables</H2>
+
+<P>The primitive procedures that support property lists in Berkeley
+Logo, however, do <EM>not</EM> use <CODE>thing</CODE> to find the property
+list.  Just as the same word can independently name a procedure and a
+variable, a property list is a <EM>third</EM> kind of named entity,
+which is separate from the <CODE>thing</CODE> with the same name.  For
+example, if we gave <CODE>book</CODE> the property list shown with a
+series of instructions like
+
+<P><PRE>pprop &quot;book &quot;French &quot;livre
+pprop &quot;book &quot;Spanish &quot;libro
+</PRE>
+
+<P>and so on, we would not be creating a <EM>variable</EM> named
+<CODE>book</CODE>.
+
+<P><PRE>? <U>print :book</U>
+book has no value
+</PRE>
+
+<P>(Of course, we could give <CODE>book</CODE> a value with a <CODE>
+make</CODE> instruction, but that value would have nothing to do with the
+property list.)
+Instead there is a fourth primitive procedure called <CODE>plist</CODE> that
+can be used to examine a property list.  <CODE>Plist</CODE>
+takes one input, a word.  It outputs the property list associated with
+that word.  If there is no such property list, <CODE>plist</CODE> outputs the
+empty list.
+
+<P><H2>How Language Designers Earn Their Pay</H2>
+
+<P>If you're like me, you may have some questions about why this Logo
+feature works the way it does.  The form of a property list, for
+example, may seem arbitrary to you.  Why should it be a flat list,
+with names as the odd-numbered members and values as the even-numbered
+ones?  Wouldn't it be more sensible to structure the list this way:
+
+<P><PRE>[[French livre] [Spanish libro] [German buch]
+ [Italian libro] [Latin liber]]
+</PRE>
+
+<P>In this scheme each member of a property list is <EM>a property.</EM>  A
+property has two parts, a name and a value.  A list structured in this
+way would be easier to use with iterative tools like <CODE>map</CODE>.  (Try
+to figure out a way to redefine <CODE>map</CODE> so that it could map a
+function over <EM>pairs</EM> of members of its input list.  Your goal
+is to find a way that isn't a kludge.) You wouldn't have to think
+&quot;What if the list has an odd number of members&quot; when writing
+procedures to manipulate property lists.
+
+<P>So why does Logo use the notation it does?  I'm afraid the real answer
+is &quot;It's traditional.&quot;  Logo property lists are the way they are
+because that's what property lists look like in Lisp, the language
+from which Logo is descended.  Now, why was that decision made in the
+design of Lisp?  I'm not sure of the answer, but one possible reason
+is that the flat property lists take up less room in the computer's
+memory than the list-of-lists that I'd find more logical.  (Logo
+measures its available memory in <EM>nodes.</EM>  It takes two overhead
+nodes per property, not including the ones that actually contain the
+name and the value, for the flat property list; it would take three
+overhead nodes per property for the list-of-lists.)
+
+<P>Another minor advantage is that if you want to live dangerously, you
+can use <CODE>memberp</CODE> to see if a particular property name exists in a
+property list.  It's living dangerously because the property name
+might, by coincidence, be the <EM>value</EM> of some other property.
+(In the dictionary example, this would be the situation if the German
+word for &quot;book&quot; were &quot;Greek&quot;!) The advantage is that <CODE>memberp</CODE>
+is a primitive procedure, so it's faster than one you could write
+yourself that would check just the odd-numbered members of the
+property list.
+
+<P><H2>Fast Replacement</H2>
+
+<P>Another question you might ask is this one: Why have property list
+primitives at all?  The list is a very general data structure, which
+can be organized in many ways.  Why single out this particular way of
+using lists as the one to support with special primitive procedures?
+After all, it's easy enough to implement property lists in Logo, as
+I've done in this chapter.
+
+<P>One answer is that the primitives can be much faster than the versions
+I've written in Logo because they can replace a value inside a
+property list without recopying the rest of the list.  My procedure
+<CODE>pprop1</CODE>, for example, has to do two <CODE>fput</CODE>s for each property
+in the list every time you want to change a single property.  The
+primitive version of <CODE>pprop</CODE> doesn't reconstruct the entire list;
+it just rips out the old value from inside the list and sticks in a
+new value.
+
+<P>Aside from the question of speed, the difference between changing
+something inside a list and making a modified copy of the list may not
+seem like a big deal.  But it does raise a subtle question.  If you say
+
+<P><PRE>make &quot;myprops plist &quot;myself
+</PRE>
+
+<P>and then, later, use <CODE>pprop</CODE> or <CODE>remprop</CODE> to change some
+of the properties of <CODE>myself</CODE>, does the value of the variable <CODE>
+myprops</CODE> change?  The answer is no; <CODE>plist</CODE> really outputs a <EM>
+copy</EM> of the property list as it exists at the moment you invoke <CODE>
+plist</CODE>.  That copy becomes the value of <CODE>myprops</CODE>, and it doesn't change
+if the property list itself is changed later.  (Berkeley Logo, like Lisp,
+does have primitives that allow you to change things inside lists in
+general, and this possibility of a variable magically changing in value
+because you change something else really does arise!)
+
+<P><H2>Defaults</H2>
+
+<P>Another language design question you might be wondering about is why
+<CODE>gprop</CODE> outputs the empty list if you ask for a property that
+doesn't exist.  How do you say &quot;book&quot; in Urdu?
+
+<P><PRE>? <U>show gprop &quot;book &quot;urdu</U>
+[]
+</PRE>
+
+<P>If you ask for a <EM>variable</EM> that doesn't exist, you
+get an error message.  Why doesn't Logo print something like
+
+<P><PRE>book has no urdu property
+</PRE>
+
+<P>in this situation?
+
+<P>The name for &quot;what you get when you haven't provided an answer&quot; is a
+<EM>default.</EM>  There aren't very many situations in which Logo
+provides defaults.  One obscure example in Berkeley Logo is the <EM>
+origin</EM> of an array--the number used to select its first member.
+By default the first member is number one, but it's possible to set up
+an array that begins with some other number (most commonly zero).
+
+<P>The question of what should be considered an error is always a hot one
+among language designers.  The issue is one of programming convenience
+versus ease of debugging.  Suppose <CODE>thing</CODE> output the empty list
+if asked for a nonexistent variable.  It would have been easier for
+me to write the property list procedures in this chapter; I could have
+left out the <CODE>if not namep</CODE> instructions.  This is a situation in
+which I might ask for a variable that hasn't been given a value &quot;on
+purpose,&quot; with a perfectly clear idea of what result I want.  On the
+other hand, if <CODE>thing</CODE> were permissive in this way, what would
+happen if I gave it an input that wasn't a variable name because I
+made a spelling error?  Instead of getting an error message right
+away, my program would muddle on with an empty list instead of
+whatever value was really needed.  Eventually I'd get a different
+error message or an incorrect result, and it would be much harder to
+find the point in the program that caused the problem.
+
+<P>The same issue arises, by the way, about operations like <CODE>first</CODE>.
+What should <CODE>first</CODE> do if you give it an empty list as input?
+Logo considers this an error, as do most versions of Lisp.  Some
+versions of Lisp, though, output an empty list in this situation.
+
+<P>It's most common to need &quot;permissive&quot; primitives when working on
+extensions to Logo itself, such as property lists, as opposed to specific
+application programs.  An application programmer has complete control over
+the inputs that procedures will be given; an implementor of a programming
+language (or an extension to it) has to handle anything that comes up.  I
+think that's why, traditionally, it's always been the <EM>teachers</EM> of
+Logo who vote in favor of error messages and the <EM>implementors</EM> who
+prefer permissive primitives.
+
+<P>So why is <CODE>gprop</CODE> permissive when all other Logo primitives are
+not?  Well, the others were designed early in the history of the
+language when teachers were in charge at the design meetings.
+Property lists were added to Logo more recently; the implementors showed up
+one day and said, &quot;Guess what?  We've put in property lists.&quot;  So
+they did it their way!
+
+<P><H2>An Example: Family Trees</H2>
+
+<P>Here is an example program using property lists.  My goal is to
+represent this family tree:
+
+<P><CENTER><IMG SRC="family.gif" ALT="figure: family"></CENTER>
+
+<P>Each person will be represented as a property list,
+containing the properties <CODE>mother</CODE>, <CODE>father</CODE>, <CODE>kids</CODE>, and
+<CODE>sex</CODE>.  The first two will have words (names) as their values,
+<CODE>kids</CODE> will be a list of names, and <CODE>sex</CODE> will be <CODE>male</CODE> or
+<CODE>female</CODE>.  Note that this is only a partial family tree; we don't know
+the name of Betty's husband or Boris's wife.  Here's how I'll enter
+all this information:
+
+<P><PRE>to family :mom :dad :girls :boys
+catch &quot;error [pprop :mom &quot;sex &quot;female]
+catch &quot;error [pprop :dad &quot;sex &quot;male]
+foreach :girls [pprop ? &quot;sex &quot;female]
+foreach :boys [pprop ? &quot;sex &quot;male]
+localmake &quot;kids sentence :girls :boys
+catch &quot;error [pprop :mom &quot;kids :kids]
+catch &quot;error [pprop :dad &quot;kids :kids]
+foreach :kids [pprop ? &quot;mother :mom   pprop ? &quot;father :dad]
+end
+
+family &quot;Ann &quot;Abraham [Betty] [Bill Bob]
+family &quot;Amelia &quot;Albert [Barbara] [Brian Boris]
+family &quot;Betty [] [Cathy] [Colin]
+family &quot;Barbara &quot;Bob [Carol] [Charlie]
+family [] &quot;Boris [] [Chris Cecil]
+</PRE>
+
+<P>The instructions that catch errors do so in case a family has an
+unknown mother or father, which is the case for two of the ones in our
+family tree.
+
+<P>Now the idea is to be able to get information out of the tree.  The
+easy part is to get out the information that is there explicitly:
+
+<P><PRE>to mother :person
+output gprop :person &quot;mother
+end
+
+to kids :person
+output gprop :person &quot;kids
+end
+
+to sons :person
+output filter [equalp (gprop ? &quot;sex) &quot;male] kids :person
+end
+</PRE>
+
+<P>Of course several more such procedures can be written along
+similar lines.
+
+<P>The more interesting challenge is to deduce information that is not
+explicitly in the property lists.  The following procedures make use
+of the ones just defined and other obvious ones like <CODE>father</CODE>.
+
+<P><PRE>to grandfathers :person
+output sentence (father father :person) (father mother :person)
+end
+
+to grandchildren :person
+output map.se [gprop ? &quot;kids] (kids :person)
+end
+
+to granddaughters :person
+output justgirls grandchildren :person
+end
+
+to justgirls :people
+output filter [equalp (gprop ? &quot;sex) &quot;female] :people
+end
+
+to aunts :person
+output justgirls sentence (siblings mother :person) ~
+                          (siblings father :person)
+end
+
+to cousins :person
+output map.se [gprop ? &quot;kids] sentence (siblings mother :person) ~
+                                       (siblings father :person)
+end
+
+to siblings :person
+local &quot;parent
+if emptyp :person [output []]
+make &quot;parent mother :person
+if emptyp :parent [make &quot;parent father :person]
+output remove :person kids :parent
+end
+</PRE>
+
+<P>In writing <CODE>siblings</CODE>, I've been careful to have it
+output an empty list if its input is empty.  That's because <CODE>
+aunts</CODE> and <CODE>cousins</CODE> may invoke <CODE>siblings</CODE> with an empty
+input if we're looking for the cousins of someone whose father or
+mother is unknown.
+
+<P>You'll find, if you try out these procedures, that similar care needs
+to be exercised in some of the &quot;easy&quot; procedures previously written.
+For example, <CODE>grandfathers</CODE> will give an error message if applied
+to a person whose mother <EM>or</EM> father is unknown, even if the
+other parent is known.  One solution would be a more careful version
+of <CODE>father</CODE>:
+
+<P><PRE>to father :person
+if emptyp :person [output []]
+output gprop :person &quot;father
+end
+</PRE>
+
+<P>The reason for choosing an empty list as output for a
+nonexistent person rather than an empty word is that the former just
+disappears when combined with other things using <CODE>sentence</CODE>, but
+an empty word stays in the resulting list.  So <CODE>grandfathers</CODE>, for
+example, will output a list of length 1 if only one grandfather is
+known rather than a list with an empty word in addition to the known
+grandfather.  Procedures like <CODE>cousins</CODE> also rely heavily on the
+flattening effect of <CODE>sentence</CODE>.
+
+<P>This is rather an artificial family tree because I've paid no
+attention to family names, and all the given names are unique.  In
+practice, you wouldn't be able to assume that.  Instead, each property
+list representing a person would have a name like <CODE>person26</CODE> and
+would include properties <CODE>familyname</CODE> and <CODE>givenname</CODE> or
+perhaps just a <CODE>name</CODE> property whose value would be a list.  All
+the procedures like <CODE>father</CODE> and <CODE>cousins</CODE> would output lists
+of these funny <CODE>person26</CODE>-type names, and you'd need another
+procedure <CODE>realnames</CODE> that would extract the real names from the
+property lists of people in a list.  But I thought it would be clearer
+to avoid that extra level of naming confusion here.
+
+<P>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch7/v2ch7.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v2ch9/v2ch9.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch9/doctor.html b/js/games/nluqo.github.io/~bh/v2ch9/doctor.html
new file mode 100644
index 0000000..b83fccb
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch9/doctor.html
@@ -0,0 +1,1641 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 2 ch 9: Example: Doctor</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 2:
+<CITE>Advanced Techniques</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Example: Doctor</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls2.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v2ch09.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v2-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v2ch8/v2ch8.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch10/v2ch10.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-2">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="doctormatch.lg"><CODE>doctor</CODE></A>
+
+
+
+<P><PRE>? <U>doctor</U>
+Hello, I am the doctor.  What can i do for you?
+Please end your remarks with an empty line.
+
+<U>My spirits are low.</U>
+
+Your spirits are low?
+
+<U>I'm really depressed.</U>
+
+I'm sorry to hear you are depressed.
+
+<U>It's because nobody likes me.</U>
+
+Really, nobody?
+
+<U>That's right.</U>
+
+I am not sure I understand you fully.
+
+<U>I'm lonely.</U>
+
+Is it because you are lonely that you came to me?
+
+<U>Of course.</U>
+
+Earlier you said your spirits are low.
+</PRE>
+
+<P>This is the beginning of a dialogue with a program called <CODE>doctor</CODE>.  The
+program simulates the behavior of a psychotherapist.  People who
+interact with this program are often fooled into thinking that the program
+understands what they are saying, although in fact the program does not
+understand at all.  Instead, the program recognizes certain key words in a
+sentence, words like &quot;problem&quot; or &quot;nobody.&quot; For each of these words,
+there is a list of <EM>rules;</EM> a rule consists of a pattern (of the sort
+used by the pattern matcher of Chapter 7) and a set of possible
+responses.  For example, associated with the word &quot;nobody&quot; is the pattern
+
+<P><PRE>[# !a:in [everyone everybody nobody noone] #]
+</PRE>
+
+<P>Corresponding to that pattern is a list of responses:
+
+<P><PRE>[[Really, :a?]
+ [Surely not :a.]
+ [Can you think of anyone in particular?]
+ [Who, for example?]
+ [You are thinking of a very special person.]
+ [Who, may I ask?]
+ [Someone special perhaps.]
+ [You have a particular person in mind, don't you?]
+ [Who do you think you're talking about?]
+ [I suspect you're exaggerating a little.]]
+</PRE>
+
+<P>The program has so many possible responses so that each time you
+use the word &quot;nobody&quot; (or &quot;everybody,&quot; etc.) you get a different
+answer.  Even though many of the answers have the same meaning, the variety
+in the wording helps to convince you that it's a real person at the other
+end of the conversation.
+
+<P>Many versions of this program have been written, but the first was written
+in 1966 by Joseph Weizenbaum, a professor of computer science at
+MIT.  He called his program Eliza after Eliza Doolittle, a
+character in the play <EM>Pygmalion</EM> by George Bernard Shaw.  Eliza
+started life poor and uneducated, with rough speech, but in the play she is
+taught to speak better.  The program, too, can be taught rules to help it
+speak better.
+
+<BLOCKQUOTE><P>
+Because conversations must be about something, that is, because they must
+take place within some context, the program was constructed in a two-tier
+arrangement, the first tier consisting of the language analyzer and the
+second of a script.  The script is a set of rules rather like those that
+might be given to an actor who is to use them to improvise around a certain
+theme.  Thus Eliza could be given a script to enable it to maintain a
+conversation about cooking eggs or about managing a bank checking account,
+and so on.  Each specific script thus enabled Eliza to play a specific
+conversational role.
+
+<P>
+For my first experiment, I gave Eliza a script designed to permit it to play
+(I should really say parody) the role of a Rogerian psychotherapist engaged
+in an initial interview with a patient.  The Rogerian psychotherapist is
+relatively easy to imitate because much of his technique consists of drawing
+his patient out by reflecting the patient's statements back to him...
+<P>
+[Joseph Weizenbaum, <EM>Computer Power and Human Reason</EM> (Freeman, 1976),
+page 3.]
+</BLOCKQUOTE>
+
+<P>
+It has long been a popular Logo programming project to implement a small
+subset of <CODE>doctor</CODE>'s conversational ability through a program that embodies
+directly a few of the rules in Weizenbaum's Doctor script for Eliza.  (See,
+for example, Harold Abelson, <EM>Apple Logo</EM> (BYTE Publications, 1982),
+page 158.)  Home computers now have enough memory to permit the
+implementation in Logo of Weizenbaum's original two-tier approach.  The
+program presented here is not a line-for-line translation of Eliza into
+Logo, but does embody the same fundamental strategy (namely pattern
+matching) as the original.  The script is a close adaptation of Weizenbaum's
+version, via a Lisp version by Jon L. White.
+
+<P>You should try conversing with <CODE>doctor</CODE> yourself a few times.  Whenever you
+get a response that seems linguistically bizarre, make a note of it.  Later,
+as I'm talking about the way the program works, you can ask yourself how you
+would modify the script to eliminate the bad responses you've noted.
+
+<P><H2>Eliza and Artificial Intelligence</H2>
+
+<P>When Eliza was first unveiled, many people considered it a major advance in
+the pursuit of <EM>artificial intelligence:</EM> the search for ways
+to make computers as intelligent as people.  Especially to a person
+unfamiliar with computer programming, a conversation with the Doctor can
+seem very real indeed.  But as Weizenbaum himself points out, the underlying
+techniques used in the program do not involve any real understanding of the
+conversation.  The program &quot;cheats.&quot;
+
+<P>Today there are language-understanding programs that use techniques much
+more sophisticated than the simple pattern matching of Eliza.  The authors
+of some such programs maintain that they really do understand what they are
+saying and hearing, in a sense in which Eliza does not.  Other people,
+including Weizenbaum, suggest that even these state-of-the-art artificial
+intelligence programs are merely cheating in more complex ways.  What would
+it mean for a program &quot;really&quot; to understand a conversation?  This is a
+deep question that would take too long to explore here.  (I'll come back to
+it in the discussion of artificial intelligence in the third volume of this
+series.)  If you're interested, you should begin by reading Weizenbaum's
+book, <EM>Computer Power and Human Reason</EM>, from which I quoted a passage
+earlier.  He argues not only that computers <EM>cannot</EM> do certain
+things, but also that people <EM>should not</EM> use computers for certain
+purposes even if it were possible.  In particular, he is horrified at the
+suggestion, made even by some psychiatrists, that programs like Eliza should
+be used to provide therapy to actual patients.
+
+<P><H2>Eliza's Linguistic Strategy</H2>
+
+<P>The program allows the user to enter one or more sentences, typing several
+lines if necessary.  The first step in processing the user's remarks is to
+string the several lines into one long list.  This list is a &quot;sentence&quot; in
+the Logo technical sense; that is, it's a list of words with no sublist
+structure.  It may, however, contain one or more English sentences.  The
+generation of a response involves several steps:
+
+<P>
+<OL><LI> Find the punctuation in the input and use it to extract a single
+sentence to answer.
+<LI> Find keywords in the sentence for which the script includes rules.
+<LI> Apply word-for-word translations as specified by the script; these
+are primarily to convert first person (&quot;I&quot;) to second person (&quot;you&quot;) and
+vice versa.
+<LI> Pick the highest priority keyword.
+<LI> Find a rule for that keyword whose pattern matches the input
+sentence.
+<LI> Choose a response according to that rule.
+</OL><P>
+
+<P>These steps are not really quite sequential; for example, the
+first two are done in parallel because, if there is more than one sentence,
+the program chooses a sentence that contains one or more keywords.
+
+<P>I have omitted from this list several possible complications.  One important
+one is that there is a second kind of rule (besides the response rules)
+called a <EM>memory</EM> rule.  These rules do not generate immediate
+responses to what the user types.  Instead, they generate sentences that are
+appropriate for later use, like &quot;Earlier you said your spirits are low&quot; in
+the sample dialogue earlier.  That response was not generated from the
+user's comment just before it, but was instead added to memory at the time
+of the user's first remark.  Because the user's comment &quot;Of course&quot;
+contained no keywords, the program chose to use a response from memory at
+that time.
+
+<P>Other complications have to do with the nature of the rules associated with
+a keyword.  Instead of patterns and responses, a keyword can just have
+<EM>another</EM> keyword as its rules, meaning that the rules for that keyword
+should be used for this one also.  Alternatively, another keyword can be
+used in place of a response for a particular pattern, so the alternate
+keyword is used only if that pattern is matched.  Another alternative to
+a response is the word &quot;newkey,&quot; which means that the program should
+abandon this keyword and try another one in the same sentence.  Yet another
+alternative is an instruction to rearrange the sentence and try matching
+patterns again with the new version.  As you read the procedures shown
+below, try not to get caught up in these complications the first time
+through.  Just forget about the <CODE>if</CODE> instructions that check for these
+special cases and concentrate on the usual situation.
+
+<P>I'll explain how each part of the linguistic strategy is carried out by
+the procedures in the project.  Here is a diagram of the
+subprocedure/superprocedure relationships.  The top-level <CODE>doctor</CODE> does
+some initialization and then invokes <CODE>loop</CODE>, which does the real work.
+
+<P><CENTER><IMG SRC="doctorflow.gif" ALT="figure: doctorflow"></CENTER>
+
+<P><PRE>to doctor
+local [text sentence stuff a b c rules keywords memory]
+make &quot;memory []
+print [Hello, I am the doctor. What can I do for you?]
+print [Please end your remarks with an empty line.]
+print []
+loop
+end
+
+to loop
+make &quot;text tokenize getstuff []
+make &quot;sentence getsentence :text
+analyze :sentence :keywords
+print []
+loop
+end
+</PRE>
+
+<P><CODE>Loop</CODE> uses <CODE>getstuff</CODE> to read several lines of the user's
+typing into a long list.  This list is processed by several procedures in
+turn.
+
+<P><PRE>to getstuff :stuff
+localmake &quot;line readlist
+if emptyp :line [output :stuff]
+output getstuff sentence :stuff :line
+end
+</PRE>
+
+<P>The first step in my numbered list is to find the punctuation and use it to
+extract a single sentence from the list.  The first part, finding the
+punctuation, is the job of <CODE>tokenize</CODE> and its subprocedure <CODE>
+tokenword</CODE>.  (These procedures get their name from the computer scientist's
+term <EM>token</EM>, which means the smallest possible meaningful string of
+characters.  In the BASIC compiler of Chapter 6, the procedure called
+<CODE>reader</CODE> separates a line of text into tokens.)
+
+<P><PRE>to tokenize :text
+output map.se [tokenword ? &quot;] :text
+end
+
+to tokenword :word :out
+if emptyp :word [output :out]
+if memberp first :word [, &quot; ] [output tokenword butfirst :word :out]
+if memberp first :word [. ? ! |;|] [output sentence :out &quot;.]
+output tokenword butfirst :word word :out first :word
+end
+</PRE>
+
+<P>The program's understanding of punctuation is
+very simple.  Some punctuation, like a quotation mark, is just ignored
+completely.  Periods, question marks, and semicolons are all treated as
+having the same meaning, namely, they mark the end of a sentence.  <CODE>
+tokenword</CODE> turns a word like <CODE>why?</CODE> into the two-word list <CODE>[why .]</CODE>
+so that the period as a separate word serves as the separator between
+sentences in the long list.
+
+<P>Extracting a single sentence is done at the same time as steps 2 and 3,
+finding keywords and applying translations.  All of these are done by
+<CODE>getsentence</CODE>, which uses <CODE>checkpriority</CODE> and <CODE>translate</CODE> as
+subprocedures for tasks 2 and 3 respectively.  (The version of Doctor
+in the first edition worked with all capital letters.  In this new version,
+I've added a procedure <CODE>decapitalize</CODE> that turns the first letter of
+each sentence to lower case, and when the program prints a
+response it uses the inverse procedure <CODE>capitalize</CODE> to capitalize the
+first word.  This is necessary because the first word of the user's sentence
+might end up in the middle of the program's response, and vice versa.)
+
+<P><PRE>to getsentence :text
+make &quot;keywords []
+output getsentence1 decapitalize :text []
+end
+
+to getsentence1 :text :out
+if emptyp :text [output :out]
+if equalp first :text &quot;. ~
+   [ifelse emptyp :keywords
+           [output getsentence1 decapitalize butfirst :text []]
+           [output :out]]
+checkpriority first :text
+output getsentence1 butfirst :text sentence :out translate first :text
+end
+
+to decapitalize :text
+if emptyp :text [output []]
+output fput lowercase first :text butfirst :text
+end
+
+to checkpriority :word
+localmake &quot;priority gprop :word &quot;priority
+if emptyp :priority [stop]
+if emptyp :keywords [make &quot;keywords ( list :word ) stop]
+ifelse :priority &gt; ( gprop first :keywords &quot;priority ) ~
+       [make &quot;keywords fput :word :keywords] ~
+       [make &quot;keywords lput :word :keywords]
+end
+
+to translate :word
+localmake &quot;new gprop :word &quot;translation
+output ifelse emptyp :new [:word] [:new]
+end
+</PRE>
+
+<P>At each sentence separator (a word containing only a period), <CODE>
+getsentence1</CODE> checks whether any keywords have been found yet.  If so, the
+sentence before the separator is the one the program uses.  If not, <CODE>
+getsentence1</CODE> goes on to examine the next sentence in the list.  If the last
+sentence ends without any keywords found, that last sentence is chosen
+anyway.
+
+<P>
+
+<P>Both <CODE>checkpriority</CODE> and <CODE>translate</CODE> work through the use of
+property lists that are associated with words.  The script part of
+<CODE>doctor</CODE> (Weizenbaum's second tier) consists of these property lists.
+For example, here's part of the script setup:
+
+<P><PRE>pprop &quot;my &quot;priority 2
+pprop &quot;my &quot;translation &quot;your
+</PRE>
+
+<P>
+
+<P>The first of these means that <CODE>my</CODE> is a keyword, with priority
+2.  In the Doctor script, most keywords have priority 0.  <CODE>My</CODE> is a
+little more important than most words, but not as important as <CODE>dreamed</CODE>
+(priority 4) or <CODE>computer</CODE> (priority 50)!  <CODE>Checkpriority</CODE> arranges
+the list of keywords so that the word with highest priority is first in the
+list.  The <CODE>translation</CODE> property means that the word <CODE>my</CODE> is
+changed to <CODE>your</CODE> in generating responses.  For example, at the
+beginning of the sample dialogue above, the sentence &quot;My spirits are low&quot;
+is echoed as &quot;Your spirits are low?&quot;  (The keyword list created by
+<CODE>checkpriority</CODE> has <EM>untranslated</EM> keywords.  That's why the
+patterns associated with the keyword <CODE>you</CODE>, for example, all contain
+the word <CODE>I</CODE> instead; the patterns deal with the translated version.)
+
+<P>Step 4, finding the highest priority keyword, is simply a matter of choosing
+the <CODE>first</CODE> keyword in the list because of the way <CODE>checkpriority</CODE>
+has done its job.  This selection is made by <CODE>analyze</CODE>, which then
+invokes <CODE>checkrules</CODE> as a subprocedure.  (<CODE>Analyze</CODE> also recognizes
+the special situation in which one keyword refers to the rules of another.)
+
+<P><PRE>to analyze :sentence :keywords
+local [rules keyword]
+if emptyp :keywords [norules stop]
+make &quot;keyword first :keywords
+make &quot;rules gprop :keyword &quot;rules
+if wordp first :rules ~
+   [make &quot;keyword first :rules make &quot;rules gprop :keyword &quot;rules]
+checkrules :keyword :rules
+end
+</PRE>
+
+<P><CODE>Checkrules</CODE> handles step 5, finding an applicable rule for the chosen
+keyword.  That is, <CODE>checkrules</CODE> invokes <CODE>match</CODE> to match the
+selected sentence against each pattern associated with the given keyword.
+(The program assumes that the script is written so that there will always be
+at least one matching pattern.  Most keywords have <CODE>[#]</CODE> as the pattern
+in the last rule.)  When <CODE>checkrules</CODE> finds a matching pattern, it
+invokes <CODE>dorule</CODE> to examine the corresponding list of responses.  (One
+complication in understanding these procedures is that the input to <CODE>
+dorule</CODE> is <EM>the name of a property</EM> whose value is the list of
+responses.  I'll get back to discussing why it's done this way later; for
+now, all that's really important is that <CODE>dorule</CODE> chooses one of the
+responses and uses it as the input to <CODE>reconstruct</CODE>.)
+
+<P><PRE>to checkrules :keyword :rules
+if not match first :rules :sentence ~
+   [checkrules :keyword butfirst butfirst :rules stop]
+dorule first butfirst :rules
+end
+
+to dorule :rule
+localmake &quot;print first gprop :keyword :rule
+pprop :keyword :rule lput :print butfirst gprop :keyword :rule
+if equalp :print &quot;newkey [analyze :sentence butfirst :keywords stop]
+if wordp :print [checkrules :print gprop :print &quot;rules stop]
+if equalp first :print &quot;pre ~
+   [analyze reconstruct first butfirst :print
+            butfirst butfirst :print
+    stop]
+print capitalize reconstruct :print
+memory :keyword :sentence
+end
+</PRE>
+
+<P>The usual task of <CODE>dorule</CODE> is to carry out step 6, the generation of a
+response.  For example, when the user typed
+
+<P><PRE>My spirits are low.
+</PRE>
+
+<P>the highest priority keyword found was <CODE>my</CODE>.  There are three
+patterns associated with this keyword:
+
+<P><PRE>[# your # !a:familyp #b]
+[# your &amp;stuff]
+[#]
+</PRE>
+
+<P>(Again, the pattern is matched against the sentence <EM>after</EM>
+translation, so the patterns contain the word <CODE>your</CODE> even though the
+actual keyword is <CODE>my</CODE>.)  The first of these patterns does not match the
+sentence.  (<CODE>Familyp</CODE> is a predicate that's true for words like <CODE>
+mother</CODE> and <CODE>brother</CODE>.)  The second pattern, however, does match the
+sentence.  <CODE>Match</CODE> gives the variable <CODE>stuff</CODE> the list
+
+<P><PRE>[spirits are low]
+</PRE>
+
+<P>as its value.  (The period that ended what the user typed was
+removed by <CODE>tokenize</CODE>.)
+
+<P>Associated with that second pattern is this list of responses:
+
+<P><PRE>[[Your :stuff?]
+ [Why do you say your :stuff?]
+ [Does that suggest anything else which belongs to you?]
+ [Is it important to you that your :stuff?]]
+</PRE>
+
+<P><CODE>Dorule</CODE> chooses the first of these, and invokes <CODE>
+reconstruct</CODE> to substitute the actual value of the variable into the
+response.  By the way, although I've used Logo's notation of colon to mean
+&quot;the value of the variable,&quot; <CODE>reconstruct</CODE> isn't exactly like the Logo
+interpreter.  For one thing, it recognizes punctuation marks; it knows that
+this response refers to a variable named <CODE>stuff</CODE>, not <CODE>stuff?</CODE>.
+
+<P><PRE>to reconstruct :sentence
+if emptyp :sentence [output []]
+if not equalp &quot;: first first :sentence ~
+   [output fput first :sentence reconstruct butfirst :sentence]
+output sentence reword first :sentence reconstruct butfirst :sentence
+end
+
+to reword :word
+if memberp last :word [. ? ,] ~
+   [output addpunct reword butlast :word last :word]
+output thing butfirst :word
+end
+
+to addpunct :stuff :char
+if wordp :stuff [output word :stuff :char]
+if emptyp :stuff [output :char]
+output sentence butlast :stuff word last :stuff :char
+end
+</PRE>
+
+<P><H2>Stimulus-Response Psychology</H2>
+
+<P>Historically, there have been two ways of looking at the purpose of
+artificial intelligence research.  One way is to see it as research into
+what computers can do, and into the meaning of intelligence in general,
+without any special reference to how <EM>people</EM> think.  Researchers who
+take this approach are willing to use any technique that will solve a
+problem, even if it's perfectly obvious that people don't think that way.
+The second approach is to see artificial intelligence as a way to shed light
+on human intelligence.  In this approach, the idea is to use the computer as
+a <EM>model</EM> for the human mind.  Researchers who follow this path try to
+write their programs to mimic human behavior and, they hope, even the inner
+mechanisms of human brains.  Recently there has been a tendency for
+researchers to declare themselves as wholly in one camp or the other.
+People who want to solve problems even if by non-human methods are part of
+the &quot;knowledge engineering&quot; field; the programs they develop are called
+&quot;expert systems.&quot; People who want to use the computer to help build
+theories of human intelligence are in the field of
+&quot;cognitive science.&quot;
+
+<P>Weizenbaum's work on Eliza is an early example of the former approach.  He
+was emphatically <EM>not</EM> claiming that his program worked the way people
+work.  Indeed, one of the purposes of the program was to demonstrate how
+realistic the <EM>behavior</EM> of a computer program can be, even when we
+are quite sure that the underlying <EM>mechanism</EM> is completely
+unrealistic.
+
+<P>Nevertheless, Eliza could be taken as a computer model of a certain theory
+of human psychology.  It may not be obvious what it means for a computer
+program to model a theory about people, so it may be worthwhile to examine
+Eliza from this point of view.  One theory about how people think is called
+<EM>behaviorism,</EM> or the <EM>stimulus-response</EM> theory.
+According to this theory, a person's mind is a &quot;black box,&quot; and we can't
+know what's inside.  What we <EM>can</EM> know, however, is how a person
+reacts to different situations and events.  Whatever situation presents
+itself to you is called a <EM>stimulus</EM>.  A stimulus can be something very
+abrupt like an electric shock, or it can be something more subtle like a
+particular sentence spoken by a particular person.  When you are presented
+with a given stimulus, you produce a certain <EM>response</EM>: you say
+something back, or you jump, or you fall asleep.  People learn to associate
+certain responses with certain stimuli.  People can be trained to change the
+response associated with a stimulus by using <EM>conditioning</EM>
+techniques.  If you are rewarded for producing a certain response, you'll
+produce it more often.
+
+<P>The behaviorist theory was very influential several years ago, although
+hardly anyone believes it any more.  What would it mean to write a computer
+model for this theory?  Well, the model would have two main parts: one that
+recognizes stimuli, and one that produces a response for a given stimulus.
+In Eliza, the first part is the pattern matcher.  I haven't spoken much
+about that part of the program in this description because I discussed it at
+length in the last project.  But in fact <CODE>match</CODE> and its subprocedures
+are a substantial part of the complete <CODE>doctor</CODE> program.  The second
+part, the one that produces responses, is <CODE>dorule</CODE> and <CODE>reconstruct</CODE>.
+
+<P>Eliza does not represent a very sophisticated form of stimulus-response
+theory because it leaves out the idea of <EM>learning</EM>.  In Eliza, the
+responses are all provided in advance, as part of the script.  People can
+develop new responses over time, and behaviorist theory has a lot to say
+about exactly what the rules are that govern such learning.  (That's what
+education is, to a behaviorist: learning new responses to stimuli.)  Since
+the script for Eliza is stored in lists, and those lists can be manipulated
+by the program, it would be possible to modify the rules of the program so
+that it can learn new rules while it's running.  For example, if the user
+types something like &quot;What are you talking about?&quot; then the program could
+decide that its previous response was inappropriate.  It would learn to
+avoid that response next time.  You might like to think about how to design
+such an extension to the project as presented here.
+
+<P>Researchers who, unlike Weizenbaum, are deliberately trying to model
+theories of human psychology generally use a more complicated program
+structure.  For example, experiments measuring the reaction time of human
+beings in different situations seem to indicate that people have a
+short-term memory and a long-term memory.  The former may hold the telephone
+number you're dialing right now, for instance, while the latter holds all
+the telephone numbers of all your friends.  Short-term memory is faster than
+long-term, but much smaller; you can only remember a few things at a time in
+it.  Computers do not inherently have these two kinds of memory; they're
+really good at remembering many things <EM>and</EM> finding them quickly.
+But cognitive scientists write programs that deliberately limit the
+computer's ability to remember things quickly, trying to model the inner
+structure of the brain in this way.
+
+<P><H2>Property Lists</H2>
+
+<P>The response rules, memory rules, translations, and priorities that make up
+the script are all stored in the form of property lists.  Each
+keyword has a property list.  For example, the property list for the word
+<CODE>my</CODE> looks like this:
+
+<P>
+
+<P><PRE>[priority 2
+ translation your
+ rules [[# your # !a:familyp #b] g1 [# your &amp;stuff] g2 [#] g3]
+
+ g1 [[Tell me more about your family.]
+     [Who else in your family :b?]
+     [Your :a?]
+     [What else comes to mind when you think of your :a?]]
+ g2 [[Your :stuff?]
+     [Why do you say your :stuff?]
+     [Does that suggest anything else which belongs to you?]
+     [Is it important to you that your :stuff?]]
+ g3 [newkey]
+ memr [[# your &amp;stuff] g4]
+ g4 [[Earlier you said your :stuff.]
+     [But your :stuff.]
+     [Does that have anything to do with your statement about :stuff?]]]
+</PRE>
+
+<P>Remember that a property list contains pairs of members; the odd
+numbered members are names of properties, and the even numbered members are
+the values of those properties.  The word <CODE>my</CODE> has properties named
+<CODE>priority</CODE>, <CODE>translation</CODE>, <CODE>rules</CODE>, <CODE>g1</CODE>, <CODE>g2</CODE>, <CODE>
+g3</CODE>, <CODE>memr</CODE>, and <CODE>g4</CODE>.  The <CODE>priority</CODE> and <CODE>translation</CODE>
+properties are straightforward.  The <CODE>rules</CODE> and <CODE>memr</CODE> properties
+have as their values lists in which the odd numbered members are patterns
+and the even numbered members are names of other properties.  These other
+properties contain the lists of responses.  The names of these secondary
+properties are arbitrary and are generated by the program.
+
+<P>To create these property lists, I used <CODE>pprop</CODE> directly for some of the
+properties, but wrote setup procedures to help with the more complicated
+parts.  Here are the instructions that contribute to this property list.
+
+<P><PRE>pprop &quot;my &quot;priority 2
+pprop &quot;my &quot;translation &quot;your
+addrule &quot;my [# your # !a:familyp #b]
+  [[Tell me more about your family.]
+   [Who else in your family :b?]
+   [Your :a?]
+   [What else comes to mind when you think of your :a?]]
+addrule &quot;my [# your &amp;stuff]
+  [[Your :stuff?]
+   [Why do you say your :stuff?]
+   [Does that suggest anything else which belongs to you?]
+   [Is it important to you that your :stuff?]]
+addrule &quot;my [#] [newkey]
+addmemr &quot;my [# your &amp;stuff]
+  [[Earlier you said your :stuff.]
+   [But your :stuff.]
+   [Does that have anything to do with your statement about :stuff?]]
+</PRE>
+
+<P>In general, the order in which properties are added to the list
+doesn't matter.  However, the order of the <CODE>addrule</CODE> instructions <EM>
+does</EM> matter, because the rule that's added first is the one that
+<CODE>checkrules</CODE> tries first.  It's important, therefore, that the rules go
+from most specific pattern to least specific pattern.  In this case, the
+first pattern checks for a remark about a member of the user's family; the
+second checks for a remark about some other object or characteristic
+belonging to the user; and the third is a catch-all pattern just in case the
+other two fail.
+
+<P>
+
+<P><H2>Generated Symbols</H2>
+
+
+
+
+<P>The procedures <CODE>addrule</CODE> and <CODE>addmemr</CODE> are very similar, since the
+<CODE>rules</CODE> and <CODE>memr</CODE> properties are similar in format.
+
+<P><PRE>to addrule :word :pattern :results
+localmake &quot;propname gensym
+pprop :word &quot;rules (sentence gprop :word &quot;rules list :pattern :propname)
+pprop :word :propname :results
+end
+
+to addmemr :word :pattern :results
+localmake &quot;propname gensym
+pprop :word &quot;memr (sentence gprop :word &quot;memr list :pattern :propname)
+pprop :word :propname :results
+end
+</PRE>
+
+<P>Each of these procedures uses a local variable <CODE>propname</CODE> to
+contain the name of the response property, a &quot;generated symbol&quot; or <EM>
+gensym.</EM>  These are the words like <CODE>g3</CODE> in the example above.  Each
+procedure carries out two <CODE>pprop</CODE> instructions.  The first appends a new
+pattern and a new gensym to the previous value of the <CODE>rules</CODE> or <CODE>
+memr</CODE> property; the second creates a new property with the gensym as its
+name and the response (or memory) list as its value.  <CODE>Gensym</CODE> is
+a Berkeley Logo library procedure.
+
+<P><H2>Modification of List Structure</H2>
+
+
+
+<P>Why are generated symbols needed in this program at all?  In the Lisp
+version of Doctor, property lists are still used, but the entire collection
+of rules is one big list, the value of the property <CODE>rules</CODE>.  It's as if
+the Logo property list looked like this:
+
+<P>
+
+<P><PRE>[priority 2
+ translation your
+ rules
+   [[# your # !a:familyp #b]
+      [[Tell me more about your family.]
+       [Who else in your family :b?]
+       [Your :a?]
+       [What else comes to mind when you think of your :a?]]
+    [# your &amp;stuff]
+      [[Your :stuff?]
+       [Why do you say your :stuff?]
+       [Does that suggest anything else which belongs to you?]
+       [Is it important to you that your :stuff?]]
+    [#]
+      [newkey]]
+ memr
+   [[# your &amp;stuff]
+      [[Earlier you said your :stuff.]
+       [But your :stuff.]
+       [Does that have anything to do with your statement
+        about :stuff?]]]
+]
+</PRE>
+
+<P>I chose not to use one big list of rules in the Logo version.  In Lisp
+(and in Berkeley Logo, but not in the versions of Logo I had available
+when writing the first edition), it's possible to change
+one of the members of a list without recopying the rest of the list.
+Without that capability, it's better to divide the rules into separate,
+smaller lists, so that only a little recopying is needed to change one.
+
+<P>Each pattern has several responses associated with it.  When the program
+matches a particular pattern, it does not choose a response at random.
+Instead, it rotates through the list of responses in order.  That is, it
+uses the first response first, then the second, and so on until the end of
+the list; if another response is needed, it starts over at the beginning of
+the list.  This strict rotation is sometimes important because some of the
+responses say things like &quot;I already told you that...&quot;
+
+<P>The way the program keeps track of the rotation of the responses for a given
+rule is that it actually changes the response list so that what used to be
+the first response is moved to the end.  Thus, <CODE>dorule</CODE> contains the
+instructions
+
+<P><PRE>localmake &quot;print first gprop :keyword :rule
+pprop :keyword :rule lput :print butfirst gprop :keyword :rule
+</PRE>
+
+<P>The first of these instructions extracts the first response from
+the list of responses.  The second one replaces the list of responses with a
+new list, in which the old first response is <CODE>lput</CODE> behind the remaining
+ones.
+
+<P>
+
+<P>What if the rules were one big list?  To see what would be required, let's
+look at a smaller list, in which it will be easier to follow what needs to
+be changed.  Suppose some word's <CODE>rules</CODE> property had as its value this
+list:
+
+<P><PRE>[1 [A B C] 2 [D E F] 3 [G H I]]
+</PRE>
+
+<P>In this example, the numbers represent patterns, while the letters
+represent responses.  Now suppose that the program finds a match for pattern
+number <CODE>2</CODE>.  It should then issue the response <CODE>D</CODE>.  Then it
+should rotate the three responses associated with pattern <CODE>2</CODE> so that
+the new <CODE>rules</CODE> property is
+
+<P><PRE>[1 [A B C] 2 [E F D] 3 [G H I]]
+</PRE>
+
+<P>The only way to do this in most versions of Logo is to construct a
+new copy of the entire list.  Here is a way you could write such a program:
+
+<P><PRE>to rotate :keyword :pattern
+pprop :keyword &quot;rules (rotate1 :pattern gprop :keyword &quot;rules)
+end
+
+to rotate1 :pattern :rules
+if emptyp :rules [output []]
+if equalp :pattern first :rules
+   [output sentence (list :pattern rotate2 first butfirst :rules)
+                    (butfirst butfirst :rules)]
+output sentence (list first :rules first butfirst :rules) ~
+                (rotate1 :pattern butfirst butfirst :rules)
+end
+
+to rotate2 :list
+output lput first :list butfirst :list
+end
+</PRE>
+
+<P>You'd use this program with an instruction like
+
+<P><PRE>rotate &quot;word 2
+</PRE>
+
+<P>where <CODE>2</CODE> represents the pattern in the example above.
+
+<P>The trouble with this approach is that it's slow.  It does a lot of <CODE>
+list</CODE> and <CODE>sentence</CODE> operations to reconstruct the modified list.
+More importantly, the <EM>entire</EM> list must be copied, even though
+only one rule is to be modified.
+
+<P>
+In Lisp, and in Berkeley Logo, there are primitive commands that can be used
+to change the contents of a list without recopying the unchanged parts.  In
+Berkeley Logo they are called <CODE>.setfirst</CODE> and <CODE>.setbutfirst</CODE>; using
+them, we could write <CODE>rotate</CODE> this way:
+
+<P><PRE>to rotate :keyword :pattern
+rotate1 :pattern (gprop :keyword &quot;rules)
+end
+
+to rotate1 :pattern :rules
+if emptyp :rules [stop]
+ifelse equalp :pattern first :rules ~
+       [.setfirst (butfirst :rules) (rotate2 first butfirst :rules)]
+       [rotate1 :pattern butfirst butfirst :rules]
+end
+</PRE>
+
+<P>(I'll leave <CODE>rotate2</CODE> the same as in the earlier version, for
+now.)  This is a tricky sort of procedure.  Here's a trace of how it might
+be used:
+
+<P><PRE>rotate &quot;word 2
+  rotate1 2 [1 [A B C] 2 [D E F] 3 [G H I]]
+    rotate1 2 [2 [D E F] 3 [G H I]]
+</PRE>
+
+<P>In the lower-level invocation of <CODE>rotate1</CODE>, the <CODE>equalp</CODE>
+test outputs <CODE>true</CODE>, so the <CODE>ifelse</CODE> instruction evaluates its second
+input.  This is equivalent to the instruction
+
+<P><PRE>.setfirst [[D E F] 3 [G H I]] (rotate2 [D E F])
+</PRE>
+
+<P>or
+
+<P><PRE>.setfirst [[D E F] 3 [G H I]] [E F D]
+</PRE>
+
+<P>To understand what this means, you must realize that the primitive operation
+<CODE>butfirst</CODE> does not make a <EM>copy</EM> of the butfirst of its input.
+Instead, the list output by <CODE>butfirst</CODE> is actually part of the list that
+is its input--they share the same cells in the computer's memory.
+Therefore, to change something in the <CODE>butfirst</CODE> also changes the larger
+list.  The <CODE>setfirst</CODE> instruction ends up changing the <CODE>rules</CODE>
+property of the word <CODE>word</CODE> even though there is no explicit <CODE>
+pprop</CODE> to change the property.
+
+<P>If you're not a Lisp programmer, this probably seems like magic.  It
+certainly violates some of the rules you've learned about the evaluation of
+Logo instructions.  For example, if you actually typed the instruction
+
+<P><PRE>.setfirst [[D E F] 3 [G H I]] [E F D]
+</PRE>
+
+<P>explicitly at top level, it would <EM>not</EM> change the property
+list of <CODE>word</CODE>, because the list that <CODE>setfirst</CODE> modifies would <EM>
+not</EM> be part of that property list, even though it has the same members.
+It's only because <CODE>setfirst</CODE>'s input is derived from that property list
+by a series of <CODE>butfirst</CODE> operations that they share the same memory.
+
+<P>
+
+<P>Do you find this confusing?  The original designers of Logo chose not to include
+<CODE>.setfirst</CODE> in the language because it <EM>is</EM> hard to understand, and
+because it can produce some very strange results if you're not careful with
+it.  For example, consider these instructions:
+
+<P><PRE>make &quot;c [x y]
+.setfirst (butfirst :c) (:c)
+</PRE>
+
+<P>This <CODE>.setfirst</CODE> instruction will produce a <EM>
+circular list</EM>, one that contains itself as a member.  If you try
+to print <CODE>:c</CODE>, you'll see something like
+
+<P><PRE>[x [x [x [x [x [x [x [x [x [x [x [x [x [x [x ...
+</PRE>
+
+<P>going on forever.
+
+<P>Once we have these list modification tools, even the implicit recopying
+done by <CODE>lput</CODE> can be avoided.  Here's a more efficient version of
+<CODE>rotate1</CODE>, but it's really tricky to understand and it isn't a
+technique that I recommend:
+
+<P><PRE>
+to rotate1 :pattern :rules
+if emptyp :rules [stop]
+ifelse equalp :pattern first :rules ~
+       [rotate2 butfirst :rules]
+       [rotate1 :pattern butfirst butfirst :rules]
+end
+
+to rotate2 :rulelist
+localmake &quot;firstresponse first :rulelist
+localmake &quot;restresponses butfirst :firstresponse
+.setfirst :rulelist :restresponses
+.setbutfirst :firstresponse []
+while [not emptyp butfirst :restresponses] ~
+      [make &quot;restresponses butfirst :restresponses]
+.setbutfirst :restresponses :firstresponse
+end
+</PRE>
+
+<P>In <CODE>rotate2</CODE>, the <CODE>.setfirst</CODE> instruction removes
+the first response from the head of the list of responses; the two
+<CODE>.setbutfirst</CODE> instructions &quot;splice&quot; that first response back
+into the list at the end, following what used to be the last
+response.
+
+<P>
+Leaving <CODE>.setfirst</CODE> out of Logo was a controversial decision.  Some
+people take the position that, as a &quot;language for learners,&quot; Logo should
+not include mechanisms for which we can't provide an easy-to-follow
+metaphor; it's counterproductive for the language to encourage you to think
+in terms of what's where in memory.  Other people refer to this idea
+scornfully as &quot;protecting the user from himself,&quot; arguing that if a
+mechanism is useful it should be provided even though it's error-prone.
+
+<P>
+
+<P>In any case, since Logo didn't have <CODE>.setfirst</CODE> and I didn't want the
+<CODE>doctor</CODE> program to be slowed down by having to recopy the <CODE>rules</CODE>
+property all the time, I decided to make each response list a separate
+property, so that each response list can be modified independently of the
+others.  That's the reason for the gensym property names: so that <CODE>
+dorule</CODE> can rotate the responses for a particular pattern without disturbing
+the responses for other patterns.  I could have changed this in the Berkeley
+Logo version, but it didn't seem worthwhile; using names for the rules is a
+little inelegant but doesn't hurt the program's efficiency.
+
+<P><H2>Linguistic Structure</H2>
+
+<P>Because it treats a sentence as simply a string of words, Eliza is limited
+in its linguistic sophistication.  For example, the Doctor script has this
+pattern associated with the keyword <CODE>I</CODE>:
+
+<P><PRE>[# you are # !stuff:in [sad unhappy depressed sick] #]
+</PRE>
+
+<P>(Remember that the pattern is matched against the input sentence
+after translation, so the words <CODE>you are</CODE> in the pattern really match a
+sentence containing the words <CODE>I am</CODE>.)  The purpose of the pattern is to
+match a sentence like
+
+<P><PRE>I think I am really depressed because Susan doesn't like me.
+</PRE>
+
+<P>The response of the program might be
+
+<P><PRE>I'm sorry to hear you are depressed.
+</PRE>
+
+<P>The <CODE>#</CODE> between <CODE>are</CODE> and <CODE>!stuff</CODE> in the pattern is meant to
+catch adverbs like the word <CODE>really</CODE> in the example I just gave.  But it
+could also &quot;absorb&quot; some more structurally important parts of a sentence:
+
+<P><PRE>I am sure that I would be depressed if she left me.
+</PRE>
+
+<P>This sentence matches the pattern, but it doesn't really fit the
+intent of the pattern.  The person who types this sentence is not saying &quot;I
+am depressed&quot; at all.
+
+<P>The trouble is that the string of words &quot;sure that I would be&quot; is not
+equivalent to an adverb.  In fact, these words do not form a phrase at all.
+The program is making a grammatical error by connecting the word <CODE>
+depressed</CODE> with the word <CODE>am</CODE> as a predicate adjective.  To avoid such
+errors, it's not good enough to have more and more detailed patterns to
+match.  You can't anticipate every possible string of words by that
+technique.  Instead, the program would have to impose a tree structure on
+the sentence, sort of like what you did in diagraming sentences in
+elementary school.  The true structure of this sentence is something like
+
+<P><PRE>[[subject I] [predicate [[verb am] [nominative [[adjective sure]
+   [adverb [clause [[connective that] [subject I] [verb [would be] ...
+</PRE>
+
+<P>and so on.  (Actually, I've just made up this structure to
+illustrate the idea, and it's not very realistic.  I've tried too hard to
+preserve the order of the words in the original sentence.  A more practical
+structure would probably center on the verb in each clause, and have
+subordinate slots for the subject, object, and so on.  A connective like
+&quot;that&quot; might just be thrown away completely; the purpose served by such
+words in spoken text would instead be filled by the very sublist
+organization itself.)  People have in fact written several computer programs
+that transform English sentences into a structured representation.  It's very
+hard to do a perfect job, though, because of problems like homonyms: the
+word &quot;like&quot; can be a verb (I like ice cream) or a preposition (I want to
+be like my big brother).
+
+<P><H2>Further Explorations</H2>
+
+<P>There are three main directions in which you can explore the territory that
+this project begins.  First, you can try to refine the existing Doctor
+script, so that it does a better job within the same general framework.
+Whenever you get an inappropriate response from <CODE>doctor</CODE>, see if you can
+think of a new rule that would solve that case without messing up other
+sentences.
+
+<P>A second possibility would be to write an entirely new Eliza script, so that
+instead of being a doctor the program can carry on some different sort of
+conversation.  How about taking orders in a fast food restaurant?  Answering
+questions from some data base about presidents or baseball players?
+
+<P>The third direction would be to abandon Eliza and look into some of the
+other approaches to understanding and generating English sentences that have
+been developed.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v2ch8/v2ch8.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch10/v2ch10.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P>The procedures from the pattern matcher of Chapter 7 are included in
+this program, but they are not listed again here.
+
+<P><PRE>
+to doctor
+local [text sentence stuff a b c rules keywords memory]
+make "memory []
+print [Hello, I am the doctor. What can I do for you?]
+print [Please end your remarks with an empty line.]
+print []
+loop
+end
+
+;; Controlling the conversation
+
+to loop
+make "text tokenize getstuff []
+make "sentence getsentence :text
+analyze :sentence :keywords
+print []
+loop
+end
+
+;; Reading and preparing the input
+
+to getstuff :stuff
+localmake "line readlist
+if emptyp :line [output :stuff]
+output getstuff sentence :stuff :line
+end
+
+to tokenize :text
+output map.se [tokenword ? "] :text
+end
+
+to tokenword :word :out
+if emptyp :word [output :out]
+if memberp first :word [, " ] [output tokenword butfirst :word :out]
+if memberp first :word [. ? ! |;|] [output sentence :out ".]
+output tokenword butfirst :word word :out first :word
+end
+
+to getsentence :text
+make "keywords []
+output getsentence1 decapitalize :text []
+end
+
+to getsentence1 :text :out
+if emptyp :text [output :out]
+if equalp first :text ". ~
+   [ifelse emptyp :keywords ~
+           [output getsentence1 decapitalize butfirst :text []] [output :out]]
+checkpriority first :text
+output getsentence1 butfirst :text sentence :out translate first :text
+end
+
+to decapitalize :text
+if emptyp :text [output []]
+output fput lowercase first :text butfirst :text
+end
+
+to checkpriority :word
+localmake "priority gprop :word "priority
+if emptyp :priority [stop]
+if emptyp :keywords [make "keywords ( list :word ) stop]
+ifelse :priority > ( gprop first :keywords "priority ) ~
+       [make "keywords fput :word :keywords] ~
+       [make "keywords lput :word :keywords]
+end
+
+to translate :word
+localmake "new gprop :word "translation
+output ifelse emptyp :new [:word] [:new]
+end
+
+;; Choosing the rule and replying
+
+to analyze :sentence :keywords
+local [rules keyword]
+if emptyp :keywords [norules stop]
+make "keyword first :keywords
+make "rules gprop :keyword "rules
+if wordp first :rules ~
+   [make "keyword first :rules make "rules gprop :keyword "rules]
+checkrules :keyword :rules
+end
+
+to checkrules :keyword :rules
+if not match first :rules :sentence ~
+   [checkrules :keyword butfirst butfirst :rules stop]
+dorule first butfirst :rules
+end
+
+to dorule :rule
+localmake "print first gprop :keyword :rule
+pprop :keyword :rule lput :print butfirst gprop :keyword :rule
+if equalp :print "newkey [analyze :sentence butfirst :keywords stop]
+if wordp :print [checkrules :print gprop :print "rules stop]
+if equalp first :print "pre ~
+   [analyze reconstruct first butfirst :print butfirst butfirst :print stop]
+print capitalize reconstruct :print
+memory :keyword :sentence
+end
+
+to reconstruct :sentence
+if emptyp :sentence [output []]
+if not equalp ": first first :sentence ~
+   [output fput first :sentence reconstruct butfirst :sentence]
+output sentence reword first :sentence reconstruct butfirst :sentence
+end
+
+to reword :word
+if memberp last :word [. ? ,] [output addpunct reword butlast :word last :word]
+output thing butfirst :word
+end
+
+to addpunct :stuff :char
+if wordp :stuff [output word :stuff :char]
+if emptyp :stuff [output :char]
+output sentence butlast :stuff word last :stuff :char
+end
+
+to capitalize :text
+if emptyp :text [output []]
+output fput (word uppercase first first :text butfirst first :text) butfirst :text
+end
+
+to memory :keyword :sentence
+local [rules rule name]
+make "rules gprop :keyword "memr
+if emptyp :rules [stop]
+if not match first :rules :sentence [stop]
+make "name last :rules
+make "rules gprop :keyword :name
+make "rule first :rules
+pprop :keyword :name lput :rule butfirst :rules
+make "memory fput reconstruct :sentence :memory
+end
+
+to norules
+ifelse :memflag [usememory] [lastresort]
+make "memflag not :memflag
+end
+
+to lastresort
+print first :lastresort
+make "lastresort lput first :lastresort butfirst :lastresort
+end
+
+to usememory
+if emptyp :memory [lastresort stop]
+print capitalize first :memory
+make "memory butfirst :memory
+end
+
+;; Predicates for patterns
+
+to beliefp :word
+output not emptyp gprop :word "belief
+end
+
+to familyp :word
+output not emptyp gprop :word "family
+end
+
+;; Procedures for adding to the script
+
+to addrule :word :pattern :results
+localmake "propname gensym
+pprop :word "rules (sentence gprop :word "rules list :pattern :propname)
+pprop :word :propname :results
+end
+
+to addmemr :word :pattern :results
+localmake "propname gensym
+pprop :word "memr (sentence gprop :word "memr list :pattern :propname)
+pprop :word :propname :results
+end
+
+;; data
+
+make "gensym.number 80
+
+make "lastresort [[I am not sure I understand you fully.] [Please go on.]
+                  [What does that suggest to you?]
+                  [Do you feel strongly about discussing such things?]]
+
+make "memflag "false
+
+pprop "alike "priority 10
+pprop "alike "rules [dit]
+
+pprop "always "priority 1
+pprop "always "rules [[#] g69]
+pprop "always "g69 [[Can you think of a specific example?] [When?]
+                    [What incident are you thinking of?]
+                    [Really, always?] [What if this never happened?]]
+
+pprop "am "priority 0
+pprop "am "translation "are
+pprop "am "rules [[# are you #stuff] g18 [#] g19]
+pprop "am "g18 [[Do you believe you are :stuff?] [Would you want to be :stuff?]
+                [You wish I would tell you you are :stuff.]
+                [What would it mean if you were :stuff?] how]
+pprop "am "g19 [[Why do you say "am"?] [I don't understand that.]]
+
+pprop "are "priority 0
+pprop "are "rules [[#a there are #b you #c] g20 [# there are &stuff] g21
+                   [# are I #stuff] g22 [are #] g23 [# are #stuff] g24]
+pprop "are "g20 [[pre [:a there are :b] are]]
+pprop "are "g21 [[What makes you think there are :stuff?]
+                 [Do you usually consider :stuff?]
+                 [Do you wish there were :stuff?]]
+pprop "are "g22 [[Why are you interested in whether I am :stuff or not?]
+                 [Would you prefer if I weren't :stuff?]
+                 [Perhaps I am :stuff in your fantasies.]
+                 [Do you sometimes think I am :stuff?] how]
+pprop "are "g23 [how]
+pprop "are "g24 [[Did you think they might not be :stuff?]
+                 [Would you like it if they were not :stuff?]
+                 [What if they were not :stuff?] [Possibly they are :stuff.]]
+
+pprop "ask "priority 0
+pprop "ask "rules [[# you ask #] g77 [# you ! asking #] g78 [# I #] g79 [#] g80]
+pprop "ask "g77 [how]
+pprop "ask "g78 [how]
+pprop "ask "g79 [you]
+pprop "ask "g80 [newkey]
+
+pprop "because "priority 0
+pprop "because "rules [[#] g64]
+pprop "because "g64 [[Is that the real reason?]
+                     [Don't any other reasons come to mind?]
+                     [Does that reason seem to explain anything else?]
+                     [What other reasons might there be?]
+                     [You're not concealing anything from me, are you?]]
+
+pprop "believe "belief "true
+
+pprop "bet "belief "true
+
+pprop "brother "family "true
+
+pprop "can "priority 0
+pprop "can "rules [[# can I #stuff] g58 [# can you #stuff] g59 [#] g60]
+pprop "can "g58 [[You believe I can :stuff, don't you?] how
+                 [You want me to be able to :stuff.]
+                 [Perhaps you would like to be able to :stuff yourself.]]
+pprop "can "g59 [[Whether or not you can :stuff depends more on you than on me.]
+                 [Do you want to be able to :stuff?]
+                 [Perhaps you don't want to :stuff.] how]
+pprop "can "g60 [how newkey]
+
+pprop "cant "translation "can't
+
+pprop "certainly "priority 0
+pprop "certainly "rules [yes]
+
+pprop "children "family "true
+
+pprop "computer "priority 50
+pprop "computer "rules [[#] g17]
+pprop "computer "g17 [[Do computers worry you?]
+                      [Why do you mention computers?]
+                      [What do you think machines have to do with your problem?]
+                      [Don't you think computers can help people?]
+                      [What about machines worries you?]
+                      [What do you think about machines?]]
+
+pprop "computers "priority 50
+pprop "computers "rules [computer]
+
+pprop "dad "translation "father
+pprop "dad "family "true
+
+pprop "daddy "translation "father
+pprop "daddy "family "true
+
+pprop "deutsch "priority 0
+pprop "deutsch "rules [[#] g15]
+pprop "deutsch "g15 [[I'm sorry, I speak only English.]]
+
+pprop "dit "rules [[#] g72]
+pprop "dit "g72 [[In what way?] [What resemblance do you see?]
+                 [What does that similarity suggest to you?]
+                 [What other connections do you see?]
+                 [What do you suppose that resemblance means?]
+                 [What is the connection, do you suppose?]
+                 [Could there really be some connection?] how]
+
+pprop "dont "translation "don't
+
+pprop "dream "priority 3
+pprop "dream "rules [[#] g9]
+pprop "dream "g9 [[What does that dream suggest to you?] [Do you dream often?]
+                  [What persons appear in your dreams?]
+                  [Don't you believe that dream has something to do
+                   with your problem?]
+                  [Do you ever wish you could flee from reality?] newkey]
+
+pprop "dreamed "priority 4
+pprop "dreamed "rules [[# you dreamed #stuff] g7 [#] g8]
+pprop "dreamed "g7 [[Really :stuff?]
+                    [Have you ever fantasied :stuff while you were awake?]
+                    [Have you dreamed :stuff before?] dream newkey]
+pprop "dreamed "g8 [dream newkey]
+
+pprop "dreams "translation "dream
+pprop "dreams "priority 3
+pprop "dreams "rules [dream]
+
+pprop "dreamt "translation "dreamed
+pprop "dreamt "priority 4
+pprop "dreamt "rules [dreamed]
+
+pprop "espanol "priority 0
+pprop "espanol "rules [deutsch]
+
+pprop "everybody "priority 2
+pprop "everybody "rules [everyone]
+
+pprop "everyone "priority 2
+pprop "everyone "rules [[# !a:in [everyone everybody nobody noone] #] g68]
+pprop "everyone "g68 [[Really, :a?] [Surely not :a.]
+                      [Can you think of anyone in particular?]
+                      [Who, for example?]
+                      [You are thinking of a very special person.]
+                      [Who, may I ask?] [Someone special perhaps.]
+                      [You have a particular person in mind, don't you?]
+                      [Who do you think you're talking about?]
+                      [I suspect you're exaggerating a little.]]
+
+pprop "father "family "true
+
+pprop "feel "belief "true
+
+pprop "francais "priority 0
+pprop "francais "rules [deutsch]
+
+pprop "hello "priority 0
+pprop "hello "rules [[#] g16]
+pprop "hello "g16 [[How do you do. Please state your problem.]]
+
+pprop "how "priority 0
+pprop "how "rules [[#] g63]
+pprop "how "g63 [[Why do you ask?] [Does that question interest you?]
+                 [What is it you really want to know?]
+                 [Are such questions much on your mind?]
+                 [What answer would please you most?] [What do you think?]
+                 [What comes to your mind when you ask that?]
+                 [Have you asked such questions before?]
+                 [Have you asked anyone else?]]
+
+pprop "husband "family "true
+
+pprop "i "priority 0
+pprop "i "translation "you
+pprop "i "rules [[# you !:in [want need] #stuff] g32
+                 [# you are # !stuff:in [sad unhappy depressed sick] #] g33
+                 [# you are # !stuff:in [happy elated glad better] #] g34
+                 [# you was #] g35 [# you !:beliefp you #stuff] g36
+                 [# you # !:beliefp # i #] g37 [# you are #stuff] g38
+                 [# you !:in [can't cannot] #stuff] g39
+                 [# you don't #stuff] g40 [# you feel #stuff] g41
+                 [# you #stuff i #] g42 [#stuff] g43]
+pprop "i "g32 [[What would it mean to you if you got :stuff?]
+               [Why Do you want :stuff?] [Suppose you got :stuff soon.]
+               [What if you never got :stuff?]
+               [What would getting :stuff mean to you?] [You really want :stuff.]
+               [I suspect you really don't want :stuff.]]
+pprop "i "g33 [[I'm sorry to hear you are :stuff.]
+               [Do you think coming here will help you not to be :stuff?]
+               [I'm sure it's not pleasant to be :stuff.]
+               [Can you explain what made you :stuff?] [Please go on.]]
+pprop "i "g34 [[How have I helped you to be :stuff?]
+               [Has your treatment made you :stuff?]
+               [What makes you :stuff just now?]
+               [Can you explain why you are suddenly :stuff?]
+               [Are you sure?] [What do you mean by :stuff?]]
+pprop "i "g35 [was]
+pprop "i "g36 [[Do you really think so?] [But you are not sure you :stuff.]
+               [Do you really doubt you :stuff?]]
+pprop "i "g37 [you]
+pprop "i "g38 [[Is it because you are :stuff that you came to me?]
+               [How long have you been :stuff?]
+               [Do you believe it normal to be :stuff?]
+               [Do you enjoy being :stuff?]]
+pprop "i "g39 [[How do you know you can't :stuff?] [Have you tried?]
+               [Perhaps you could :stuff now.]
+               [Do you really want to be able to :stuff?]]
+pprop "i "g40 [[Don't you really :stuff?] [Why don't you :stuff?]
+               [Do you wish to be able to :stuff?] [Does that trouble you?]]
+
+pprop "i "g41 [[Tell me more about such feelings.] [Do you often feel :stuff?]
+               [Do you enjoy feeling :stuff?]
+               [Of what does feeling :stuff remind you?]]
+pprop "i "g42 [[Perhaps in your fantasy we :stuff each other.]
+               [Do you wish to :stuff me?] [You seem to need to :stuff me.]
+               [Do you :stuff anyone else?]]
+pprop "i "g43 [[You say :stuff.] [Can you elaborate on that?]
+               [Do you say :stuff for some special reason?]
+               [That's quite interesting.]]
+
+pprop "i'm "priority 0
+pprop "i'm "translation "you're
+pprop "i'm "rules [[# you're #stuff] g31]
+pprop "i'm "g31 [[pre [you are :stuff] I]]
+
+pprop "if "priority 3
+pprop "if "rules [[#a if #b had #c] g5 [# if #stuff] g6]
+pprop "if "g5 [[pre [:a if :b might have :c] if]]
+pprop "if "g6 [[Do you think it's likely that :stuff?] [Do you wish that :stuff?]
+               [What do you think about :stuff?]]
+
+pprop "is "priority 0
+pprop "is "rules [[&a is &b] g61 [#] g62]
+pprop "is "g61 [[Suppose :a were not :b.] [Perhaps :a really is :b.]
+                [Tell me more about :a.]]
+pprop "is "g62 [newkey]
+
+pprop "italiano "priority 0
+pprop "italiano "rules [deutsch]
+
+pprop "like "priority 10
+pprop "like "rules [[# !:in [am is are was] # like #] g70 [#] g71]
+pprop "like "g70 [dit]
+pprop "like "g71 [newkey]
+
+pprop "machine "priority 50
+pprop "machine "rules [computer]
+
+pprop "machines "priority 50
+pprop "machines "rules [computer]
+
+pprop "maybe "priority 0
+pprop "maybe "rules [perhaps]
+
+pprop "me "translation "you
+
+pprop "mom "translation "mother
+pprop "mom "family "true
+
+pprop "mommy "translation "mother
+pprop "mommy "family "true
+
+pprop "mother "family "true
+
+pprop "my "priority 2
+pprop "my "translation "your
+pprop "my "rules [[# your # !a:familyp #b] g55 [# your &stuff] g56 [#] g57]
+pprop "my "g55 [[Tell me more about your family.] [Who else in your family :b?]
+                [Your :a?] [What else comes to mind when you think of your :a?]]
+pprop "my "g56 [[Your :stuff?] [Why do you say your :stuff?]
+                [Does that suggest anything else which belongs to you?]
+                [Is it important to you that your :stuff?]]
+pprop "my "g57 [newkey]
+pprop "my "memr [[# your &stuff] g12]
+pprop "my "g12 [[Earlier you said your :stuff.] [But your :stuff.]
+                [Does that have anything to do with your statement about :stuff?]]
+
+pprop "myself "translation "yourself
+
+pprop "name "priority 15
+pprop "name "rules [[#] g14]
+pprop "name "g14 [[I am not interested in names.]
+                  [I've told you before I don't care about names\;
+                   please continue.]]
+
+pprop "no "priority 0
+pprop "no "rules [[no] g53 [#] g54]
+pprop "no "g53 [xxyyzz [pre [x no] no]]
+pprop "no "g54 [[Are you saying "no" just to be negative?]
+                [You are being a bit negative.] [Why not?] [Why "no"?] newkey]
+
+pprop "nobody "priority 2
+pprop "nobody "rules [everyone]
+
+pprop "noone "priority 2
+pprop "noone "rules [everyone]
+
+pprop "perhaps "priority 0
+pprop "perhaps "rules [[#] g13]
+pprop "perhaps "g13 [[You don't seem quite certain.] [Why the uncertain tone?]
+                     [Can't you be more positive?] [You aren't sure.]
+                     [Don't you know?]]
+
+pprop "problem "priority 5
+pprop "problem "rules [[#a !b:in [is are] your !c:in [problem problems] #] g73
+                       [# your !a:in [problem problems] !b:in [is are] #c] g74
+                       [#] g75]
+pprop "problem "g73 [[:a :b your :c.] [Are you sure :a :b your :c?]
+                     [Perhaps :a :b not your real :c.]
+                     [You think you have problems?]
+                     [Do you often think about :a?]]
+pprop "problem "g74 [[Your :a :b :c?] [Are you sure your :a :b :c?]
+                     [Perhaps your real :a :b not :c.]
+                     [You think you have problems?]]
+pprop "problem "g75 [[Please continue, this may be interesting.]
+                     [Have you any other problems you wish to discuss?]
+                     [Perhaps you'd rather change the subject.]
+                     [You seem a bit uneasy.] newkey]
+pprop "problem "memr [[#stuff is your problem #] g76]
+pprop "problem "g76 [[Earlier you mentioned :stuff.]
+                     [Let's talk further about :stuff.]
+                     [Tell me more about :stuff.]
+                     [You haven't mentioned :stuff for a while.]]
+
+pprop "problems "priority 5
+pprop "problems "rules [problem]
+
+pprop "remember "priority 5
+pprop "remember "rules [[# you remember #stuff] g2
+                        [# do I remember #stuff] g3 [#] g4]
+pprop "remember "g2 [[Do you often think of :stuff?]
+                     [Does thinking of :stuff bring anything else to mind?]
+                     [What else do you remember?]
+                     [Why do you remember :stuff just now?]
+                     [What in the present situation reminds you of :stuff?]]
+pprop "remember "g3 [[Did you think I would forget :stuff?]
+                     [Why do you think I should recall :stuff now?]
+                     [What about :stuff?] what [You mentioned :stuff.]]
+pprop "remember "g4 [newkey]
+
+pprop "same "priority 10
+pprop "same "rules [dit]
+
+pprop "sister "family "true
+
+pprop "sorry "priority 0
+pprop "sorry "rules [[#] g1]
+pprop "sorry "g1 [[Please don't apologize.] [Apologies are not necessary.]
+                  [What feelings do you have when you apologize?]
+                  [I've told you that apologies are not required.]]
+
+pprop "svenska "priority 0
+pprop "svenska "rules [deutsch]
+
+pprop "think "belief "true
+
+pprop "was "priority 2
+pprop "was "rules [[# was you #stuff] g26 [# you was #stuff] g27
+                   [# was I #stuff] g28 [#] g29]
+pprop "was "g26 [[What if you were :stuff?] [Do you think you were :stuff?]
+                 [Were you :stuff?] [What would it mean if you were :stuff?]
+                 [What does " :stuff " suggest to you?] how]
+pprop "was "g27 [[Were you really?] [Why do you tell me you were :stuff now?]
+                 [Perhaps I already knew you were :stuff.]]
+pprop "was "g28 [[Would you like to believe I was :stuff?]
+                 [What suggests that I was :stuff?] [What do you think?]
+                 [Perhaps I was :stuff.] [What if I had been :stuff?]]
+pprop "was "g29 [newkey]
+
+pprop "we "translation "you
+pprop "we "priority 0
+pprop "we "rules [I]
+
+pprop "were "priority 0
+pprop "were "translation "was
+pprop "were "rules [was]
+
+pprop "what "priority 0
+pprop "what "rules [[!:in [what where] #] g10 [# !a:in [what where] #b] g11]
+pprop "what "g10 [how]
+pprop "what "g11 [[Tell me about :a :b.] [:a :b?]
+                  [Do you want me to tell you :a :b?]
+                  [Really.] [I see.] newkey]
+
+pprop "where "priority 0
+pprop "where "rules [how]
+
+pprop "why "priority 0
+pprop "why "rules [[# why don't I #stuff] g65
+                   [# why can't you #stuff] g66 [#] g67]
+pprop "why "g65 [[Do you believe I don't :stuff?]
+                 [Perhaps I will :stuff in good time.]
+                 [Should you :stuff yourself?] [You want me to :stuff?] how]
+pprop "why "g66 [[Do you think you should be able to :stuff?]
+                 [Do you want to be able to :stuff?]
+                 [Do you believe this will help you to :stuff?]
+                 [Have you any idea why you can't :stuff?] how]
+pprop "why "g67 [[Why indeed?] [Why "why"?] [Why not?] how newkey]
+
+pprop "wife "family "true
+
+pprop "wish "belief "true
+
+pprop "wont "translation "won't
+
+pprop "xxyyzz "priority 0
+pprop "xxyyzz "rules [[#] g50]
+pprop "xxyyzz "g50 [[You're being somewhat short with me.]
+                    [You don't seem very talkative today.]
+                    [Perhaps you'd rather talk about something else.]
+                    [Are you using monosyllables for some reason?] newkey]
+
+pprop "yes "priority 0
+pprop "yes "rules [[yes] g51 [#] g52]
+pprop "yes "g51 [xxyyzz [pre [x yes] yes]]
+pprop "yes "g52 [[You seem quite positive.] [You are sure.] [I see.]
+                 [I understand.] newkey]
+
+pprop "you "priority 0
+pprop "you "translation "I
+pprop "you "rules [[# I remind you of #] g44 [# I are # you #] g45
+                   [# I # are #stuff] g46 [# I #stuff you] g47
+                   [# I &stuff] g48 [#] g49]
+pprop "you "g44 [dit]
+pprop "you "g45 [newkey]
+pprop "you "g46 [[What makes you think I am :stuff?]
+                 [Does it please you to believe I am :stuff?]
+                 [Perhaps you would like to be :stuff.]
+                 [Do you sometimes wish you were :stuff?]]
+pprop "you "g47 [[Why do you think I :stuff you?]
+                 [You like to think I :stuff you, don't you?]
+                 [What makes you think I :stuff you?] [Really, I :stuff you?]
+                 [Do you wish to believe I :stuff you?]
+                 [Suppose I did :stuff you. what would that mean?]
+                 [Does someone else believe I :stuff you?]]
+pprop "you "g48 [[We were discussing you, not me.] [Oh, I :stuff?]
+                 [Is this really relevant to your problem?] [Perhaps I do :stuff.]
+                 [Are you glad to know I :stuff?] [Do you :stuff?]
+                 [What are your feelings now?]]
+pprop "you "g49 [newkey]
+
+pprop "you're "priority 0
+pprop "you're "translation "I'm
+pprop "you're "rules [[# I'm #stuff] g30]
+pprop "you're "g30 [[pre [I are :stuff] you]]
+
+pprop "your "priority 0
+pprop "your "translation "my
+pprop "your "rules [[# my #stuff] g25]
+pprop "your "g25 [[Why are you concerned over my :stuff?]
+                  [What about your own :stuff?]
+                  [Are you worried about someone else's :stuff?]
+                  [Really, my :stuff?]]
+
+pprop "yourself "translation "myself
+</PRE>
+
+<P><A HREF="../v2-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v2ch8/v2ch8.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v2ch10/v2ch10.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v2ch9/doctorflow.gif b/js/games/nluqo.github.io/~bh/v2ch9/doctorflow.gif
new file mode 100644
index 0000000..c904f65
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch9/doctorflow.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v2ch9/doctormatch.lg b/js/games/nluqo.github.io/~bh/v2ch9/doctormatch.lg
new file mode 100644
index 0000000..b280556
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v2ch9/doctormatch.lg
@@ -0,0 +1,794 @@
+to doctor
+local [text sentence stuff a b c rules keywords memory]
+make "memory []
+print [Hello, I am the doctor. What can I do for you?]
+print [Please end your remarks with an empty line.]
+print []
+loop
+end
+
+;; Controlling the conversation
+
+to loop
+make "text tokenize getstuff []
+make "sentence getsentence :text
+analyze :sentence :keywords
+print []
+loop
+end
+
+;; Reading and preparing the input
+
+to getstuff :stuff
+localmake "line readlist
+if emptyp :line [output :stuff]
+output getstuff sentence :stuff :line
+end
+
+to tokenize :text
+output map.se [tokenword ? "] :text
+end
+
+to tokenword :word :out
+if emptyp :word [output :out]
+if memberp first :word [, " ] [output tokenword butfirst :word :out]
+if memberp first :word [. ? ! |;|] [output sentence :out ".]
+output tokenword butfirst :word word :out first :word
+end
+
+to getsentence :text
+make "keywords []
+output getsentence1 decapitalize :text []
+end
+
+to getsentence1 :text :out
+if emptyp :text [output :out]
+if equalp first :text ". ~
+   [ifelse emptyp :keywords ~
+           [output getsentence1 decapitalize butfirst :text []] [output :out]]
+checkpriority first :text
+output getsentence1 butfirst :text sentence :out translate first :text
+end
+
+to decapitalize :text
+if emptyp :text [output []]
+output fput lowercase first :text butfirst :text
+end
+
+to checkpriority :word
+localmake "priority gprop :word "priority
+if emptyp :priority [stop]
+if emptyp :keywords [make "keywords ( list :word ) stop]
+ifelse :priority > ( gprop first :keywords "priority ) ~
+       [make "keywords fput :word :keywords] ~
+       [make "keywords lput :word :keywords]
+end
+
+to translate :word
+localmake "new gprop :word "translation
+output ifelse emptyp :new [:word] [:new]
+end
+
+;; Choosing the rule and replying
+
+to analyze :sentence :keywords
+local [rules keyword]
+if emptyp :keywords [norules stop]
+make "keyword first :keywords
+make "rules gprop :keyword "rules
+if wordp first :rules ~
+   [make "keyword first :rules make "rules gprop :keyword "rules]
+checkrules :keyword :rules
+end
+
+to checkrules :keyword :rules
+if not match first :rules :sentence ~
+   [checkrules :keyword butfirst butfirst :rules stop]
+dorule first butfirst :rules
+end
+
+to dorule :rule
+localmake "print first gprop :keyword :rule
+pprop :keyword :rule lput :print butfirst gprop :keyword :rule
+if equalp :print "newkey [analyze :sentence butfirst :keywords stop]
+if wordp :print [checkrules :print gprop :print "rules stop]
+if equalp first :print "pre ~
+   [analyze reconstruct first butfirst :print butfirst butfirst :print stop]
+print capitalize reconstruct :print
+memory :keyword :sentence
+end
+
+to reconstruct :sentence
+if emptyp :sentence [output []]
+if not equalp ": first first :sentence ~
+   [output fput first :sentence reconstruct butfirst :sentence]
+output sentence reword first :sentence reconstruct butfirst :sentence
+end
+
+to reword :word
+if memberp last :word [. ? ,] [output addpunct reword butlast :word last :word]
+output thing butfirst :word
+end
+
+to addpunct :stuff :char
+if wordp :stuff [output word :stuff :char]
+if emptyp :stuff [output :char]
+output sentence butlast :stuff word last :stuff :char
+end
+
+to capitalize :text
+if emptyp :text [output []]
+output fput (word uppercase first first :text butfirst first :text) butfirst :text
+end
+
+to memory :keyword :sentence
+local [rules rule name]
+make "rules gprop :keyword "memr
+if emptyp :rules [stop]
+if not match first :rules :sentence [stop]
+make "name last :rules
+make "rules gprop :keyword :name
+make "rule first :rules
+pprop :keyword :name lput :rule butfirst :rules
+make "memory fput reconstruct :sentence :memory
+end
+
+to norules
+ifelse :memflag [usememory] [lastresort]
+make "memflag not :memflag
+end
+
+to lastresort
+print first :lastresort
+make "lastresort lput first :lastresort butfirst :lastresort
+end
+
+to usememory
+if emptyp :memory [lastresort stop]
+print capitalize first :memory
+make "memory butfirst :memory
+end
+
+;; Predicates for patterns
+
+to beliefp :word
+output not emptyp gprop :word "belief
+end
+
+to familyp :word
+output not emptyp gprop :word "family
+end
+
+;; Procedures for adding to the script
+
+to addrule :word :pattern :results
+localmake "propname gensym
+pprop :word "rules (sentence gprop :word "rules list :pattern :propname)
+pprop :word :propname :results
+end
+
+to addmemr :word :pattern :results
+localmake "propname gensym
+pprop :word "memr (sentence gprop :word "memr list :pattern :propname)
+pprop :word :propname :results
+end
+
+;; data
+
+make "gensym.number 80
+
+make "lastresort [[I am not sure I understand you fully.] [Please go on.]
+                  [What does that suggest to you?]
+                  [Do you feel strongly about discussing such things?]]
+
+make "memflag "false
+
+pprop "alike "priority 10
+pprop "alike "rules [dit]
+
+pprop "always "priority 1
+pprop "always "rules [[#] g69]
+pprop "always "g69 [[Can you think of a specific example?] [When?]
+                    [What incident are you thinking of?]
+                    [Really, always?] [What if this never happened?]]
+
+pprop "am "priority 0
+pprop "am "translation "are
+pprop "am "rules [[# are you #stuff] g18 [#] g19]
+pprop "am "g18 [[Do you believe you are :stuff?] [Would you want to be :stuff?]
+                [You wish I would tell you you are :stuff.]
+                [What would it mean if you were :stuff?] how]
+pprop "am "g19 [[Why do you say "am"?] [I don't understand that.]]
+
+pprop "are "priority 0
+pprop "are "rules [[#a there are #b you #c] g20 [# there are &stuff] g21
+                   [# are I #stuff] g22 [are #] g23 [# are #stuff] g24]
+pprop "are "g20 [[pre [:a there are :b] are]]
+pprop "are "g21 [[What makes you think there are :stuff?]
+                 [Do you usually consider :stuff?]
+                 [Do you wish there were :stuff?]]
+pprop "are "g22 [[Why are you interested in whether I am :stuff or not?]
+                 [Would you prefer if I weren't :stuff?]
+                 [Perhaps I am :stuff in your fantasies.]
+                 [Do you sometimes think I am :stuff?] how]
+pprop "are "g23 [how]
+pprop "are "g24 [[Did you think they might not be :stuff?]
+                 [Would you like it if they were not :stuff?]
+                 [What if they were not :stuff?] [Possibly they are :stuff.]]
+
+pprop "ask "priority 0
+pprop "ask "rules [[# you ask #] g77 [# you ! asking #] g78 [# I #] g79 [#] g80]
+pprop "ask "g77 [how]
+pprop "ask "g78 [how]
+pprop "ask "g79 [you]
+pprop "ask "g80 [newkey]
+
+pprop "because "priority 0
+pprop "because "rules [[#] g64]
+pprop "because "g64 [[Is that the real reason?]
+                     [Don't any other reasons come to mind?]
+                     [Does that reason seem to explain anything else?]
+                     [What other reasons might there be?]
+                     [You're not concealing anything from me, are you?]]
+
+pprop "believe "belief "true
+
+pprop "bet "belief "true
+
+pprop "brother "family "true
+
+pprop "can "priority 0
+pprop "can "rules [[# can I #stuff] g58 [# can you #stuff] g59 [#] g60]
+pprop "can "g58 [[You believe I can :stuff, don't you?] how
+                 [You want me to be able to :stuff.]
+                 [Perhaps you would like to be able to :stuff yourself.]]
+pprop "can "g59 [[Whether or not you can :stuff depends more on you than on me.]
+                 [Do you want to be able to :stuff?]
+                 [Perhaps you don't want to :stuff.] how]
+pprop "can "g60 [how newkey]
+
+pprop "cant "translation "can't
+
+pprop "certainly "priority 0
+pprop "certainly "rules [yes]
+
+pprop "children "family "true
+
+pprop "computer "priority 50
+pprop "computer "rules [[#] g17]
+pprop "computer "g17 [[Do computers worry you?]
+                      [Why do you mention computers?]
+                      [What do you think machines have to do with your problem?]
+                      [Don't you think computers can help people?]
+                      [What about machines worries you?]
+                      [What do you think about machines?]]
+
+pprop "computers "priority 50
+pprop "computers "rules [computer]
+
+pprop "dad "translation "father
+pprop "dad "family "true
+
+pprop "daddy "translation "father
+pprop "daddy "family "true
+
+pprop "deutsch "priority 0
+pprop "deutsch "rules [[#] g15]
+pprop "deutsch "g15 [[I'm sorry, I speak only English.]]
+
+pprop "dit "rules [[#] g72]
+pprop "dit "g72 [[In what way?] [What resemblance do you see?]
+                 [What does that similarity suggest to you?]
+                 [What other connections do you see?]
+                 [What do you suppose that resemblance means?]
+                 [What is the connection, do you suppose?]
+                 [Could there really be some connection?] how]
+
+pprop "dont "translation "don't
+
+pprop "dream "priority 3
+pprop "dream "rules [[#] g9]
+pprop "dream "g9 [[What does that dream suggest to you?] [Do you dream often?]
+                  [What persons appear in your dreams?]
+                  [Don't you believe that dream has something to do
+                   with your problem?]
+                  [Do you ever wish you could flee from reality?] newkey]
+
+pprop "dreamed "priority 4
+pprop "dreamed "rules [[# you dreamed #stuff] g7 [#] g8]
+pprop "dreamed "g7 [[Really :stuff?]
+                    [Have you ever fantasied :stuff while you were awake?]
+                    [Have you dreamed :stuff before?] dream newkey]
+pprop "dreamed "g8 [dream newkey]
+
+pprop "dreams "translation "dream
+pprop "dreams "priority 3
+pprop "dreams "rules [dream]
+
+pprop "dreamt "translation "dreamed
+pprop "dreamt "priority 4
+pprop "dreamt "rules [dreamed]
+
+pprop "espanol "priority 0
+pprop "espanol "rules [deutsch]
+
+pprop "everybody "priority 2
+pprop "everybody "rules [everyone]
+
+pprop "everyone "priority 2
+pprop "everyone "rules [[# !a:in [everyone everybody nobody noone] #] g68]
+pprop "everyone "g68 [[Really, :a?] [Surely not :a.]
+                      [Can you think of anyone in particular?]
+                      [Who, for example?]
+                      [You are thinking of a very special person.]
+                      [Who, may I ask?] [Someone special perhaps.]
+                      [You have a particular person in mind, don't you?]
+                      [Who do you think you're talking about?]
+                      [I suspect you're exaggerating a little.]]
+
+pprop "father "family "true
+
+pprop "feel "belief "true
+
+pprop "francais "priority 0
+pprop "francais "rules [deutsch]
+
+pprop "hello "priority 0
+pprop "hello "rules [[#] g16]
+pprop "hello "g16 [[How do you do. Please state your problem.]]
+
+pprop "how "priority 0
+pprop "how "rules [[#] g63]
+pprop "how "g63 [[Why do you ask?] [Does that question interest you?]
+                 [What is it you really want to know?]
+                 [Are such questions much on your mind?]
+                 [What answer would please you most?] [What do you think?]
+                 [What comes to your mind when you ask that?]
+                 [Have you asked such questions before?]
+                 [Have you asked anyone else?]]
+
+pprop "husband "family "true
+
+pprop "i "priority 0
+pprop "i "translation "you
+pprop "i "rules [[# you !:in [want need] #stuff] g32
+                 [# you are # !stuff:in [sad unhappy depressed sick] #] g33
+                 [# you are # !stuff:in [happy elated glad better] #] g34
+                 [# you was #] g35 [# you !:beliefp you #stuff] g36
+                 [# you # !:beliefp # i #] g37 [# you are #stuff] g38
+                 [# you !:in [can't cannot] #stuff] g39
+                 [# you don't #stuff] g40 [# you feel #stuff] g41
+                 [# you #stuff i #] g42 [#stuff] g43]
+pprop "i "g32 [[What would it mean to you if you got :stuff?]
+               [Why Do you want :stuff?] [Suppose you got :stuff soon.]
+               [What if you never got :stuff?]
+               [What would getting :stuff mean to you?] [You really want :stuff.]
+               [I suspect you really don't want :stuff.]]
+pprop "i "g33 [[I'm sorry to hear you are :stuff.]
+               [Do you think coming here will help you not to be :stuff?]
+               [I'm sure it's not pleasant to be :stuff.]
+               [Can you explain what made you :stuff?] [Please go on.]]
+pprop "i "g34 [[How have I helped you to be :stuff?]
+               [Has your treatment made you :stuff?]
+               [What makes you :stuff just now?]
+               [Can you explain why you are suddenly :stuff?]
+               [Are you sure?] [What do you mean by :stuff?]]
+pprop "i "g35 [was]
+pprop "i "g36 [[Do you really think so?] [But you are not sure you :stuff.]
+               [Do you really doubt you :stuff?]]
+pprop "i "g37 [you]
+pprop "i "g38 [[Is it because you are :stuff that you came to me?]
+               [How long have you been :stuff?]
+               [Do you believe it normal to be :stuff?] [Do you enjoy being :stuff?]]
+pprop "i "g39 [[How do you know you can't :stuff?] [Have you tried?]
+               [Perhaps you could :stuff now.]
+               [Do you really want to be able to :stuff?]]
+pprop "i "g40 [[Don't you really :stuff?] [Why don't you :stuff?]
+               [Do you wish to be able to :stuff?] [Does that trouble you?]]
+pprop "i "g41 [[Tell me more about such feelings.] [Do you often feel :stuff?]
+               [Do you enjoy feeling :stuff?]
+               [Of what does feeling :stuff remind you?]]
+pprop "i "g42 [[Perhaps in your fantasy we :stuff each other.]
+               [Do you wish to :stuff me?] [You seem to need to :stuff me.]
+               [Do you :stuff anyone else?]]
+pprop "i "g43 [[You say :stuff.] [Can you elaborate on that?]
+               [Do you say :stuff for some special reason?]
+               [That's quite interesting.]]
+
+pprop "i'm "priority 0
+pprop "i'm "translation "you're
+pprop "i'm "rules [[# you're #stuff] g31]
+pprop "i'm "g31 [[pre [you are :stuff] I]]
+
+pprop "if "priority 3
+pprop "if "rules [[#a if #b had #c] g5 [# if #stuff] g6]
+pprop "if "g5 [[pre [:a if :b might have :c] if]]
+pprop "if "g6 [[Do you think it's likely that :stuff?] [Do you wish that :stuff?]
+               [What do you think about :stuff?]]
+
+pprop "is "priority 0
+pprop "is "rules [[&a is &b] g61 [#] g62]
+pprop "is "g61 [[Suppose :a were not :b.] [Perhaps :a really is :b.]
+                [Tell me more about :a.]]
+pprop "is "g62 [newkey]
+
+pprop "italiano "priority 0
+pprop "italiano "rules [deutsch]
+
+pprop "like "priority 10
+pprop "like "rules [[# !:in [am is are was] # like #] g70 [#] g71]
+pprop "like "g70 [dit]
+pprop "like "g71 [newkey]
+
+pprop "machine "priority 50
+pprop "machine "rules [computer]
+
+pprop "machines "priority 50
+pprop "machines "rules [computer]
+
+pprop "maybe "priority 0
+pprop "maybe "rules [perhaps]
+
+pprop "me "translation "you
+
+pprop "mom "translation "mother
+pprop "mom "family "true
+
+pprop "mommy "translation "mother
+pprop "mommy "family "true
+
+pprop "mother "family "true
+
+pprop "my "priority 2
+pprop "my "translation "your
+pprop "my "rules [[# your # !a:familyp #b] g55 [# your &stuff] g56 [#] g57]
+pprop "my "g55 [[Tell me more about your family.] [Who else in your family :b?]
+                [Your :a?] [What else comes to mind when you think of your :a?]]
+pprop "my "g56 [[Your :stuff?] [Why do you say your :stuff?]
+                [Does that suggest anything else which belongs to you?]
+                [Is it important to you that your :stuff?]]
+pprop "my "g57 [newkey]
+pprop "my "memr [[# your &stuff] g12]
+pprop "my "g12 [[Earlier you said your :stuff.] [But your :stuff.]
+                [Does that have anything to do with your statement about :stuff?]]
+
+pprop "myself "translation "yourself
+
+pprop "name "priority 15
+pprop "name "rules [[#] g14]
+pprop "name "g14 [[I am not interested in names.]
+                  [I've told you before I don't care about names\; please continue.]]
+
+pprop "no "priority 0
+pprop "no "rules [[no] g53 [#] g54]
+pprop "no "g53 [xxyyzz [pre [x no] no]]
+pprop "no "g54 [[Are you saying "no" just to be negative?]
+                [You are being a bit negative.] [Why not?] [Why "no"?] newkey]
+
+pprop "nobody "priority 2
+pprop "nobody "rules [everyone]
+
+pprop "noone "priority 2
+pprop "noone "rules [everyone]
+
+pprop "perhaps "priority 0
+pprop "perhaps "rules [[#] g13]
+pprop "perhaps "g13 [[You don't seem quite certain.] [Why the uncertain tone?]
+                     [Can't you be more positive?] [You aren't sure.]
+                     [Don't you know?]]
+
+pprop "problem "priority 5
+pprop "problem "rules [[#a !b:in [is are] your !c:in [problem problems] #] g73
+                       [# your !a:in [problem problems] !b:in [is are] #c] g74
+                       [#] g75]
+pprop "problem "g73 [[:a :b your :c.] [Are you sure :a :b your :c?]
+                     [Perhaps :a :b not your real :c.]
+                     [You think you have problems?]
+                     [Do you often think about :a?]]
+pprop "problem "g74 [[Your :a :b :c?] [Are you sure your :a :b :c?]
+                     [Perhaps your real :a :b not :c.] [You think you have problems?]]
+pprop "problem "g75 [[Please continue, this may be interesting.]
+                     [Have you any other problems you wish to discuss?]
+                     [Perhaps you'd rather change the subject.]
+                     [You seem a bit uneasy.] newkey]
+pprop "problem "memr [[#stuff is your problem #] g76]
+pprop "problem "g76 [[Earlier you mentioned :stuff.]
+                     [Let's talk further about :stuff.]
+                     [Tell me more about :stuff.]
+                     [You haven't mentioned :stuff for a while.]]
+
+pprop "problems "priority 5
+pprop "problems "rules [problem]
+
+pprop "remember "priority 5
+pprop "remember "rules [[# you remember #stuff] g2 [# do I remember #stuff] g3 [#] g4]
+pprop "remember "g2 [[Do you often think of :stuff?]
+                     [Does thinking of :stuff bring anything else to mind?]
+                     [What else do you remember?]
+                     [Why do you remember :stuff just now?]
+                     [What in the present situation reminds you of :stuff?]]
+pprop "remember "g3 [[Did you think I would forget :stuff?]
+                     [Why do you think I should recall :stuff now?]
+                     [What about :stuff?] what [You mentioned :stuff.]]
+pprop "remember "g4 [newkey]
+
+pprop "same "priority 10
+pprop "same "rules [dit]
+
+pprop "sister "family "true
+
+pprop "sorry "priority 0
+pprop "sorry "rules [[#] g1]
+pprop "sorry "g1 [[Please don't apologize.] [Apologies are not necessary.]
+                  [What feelings do you have when you apologize?]
+                  [I've told you that apologies are not required.]]
+
+pprop "svenska "priority 0
+pprop "svenska "rules [deutsch]
+
+pprop "think "belief "true
+
+pprop "was "priority 2
+pprop "was "rules [[# was you #stuff] g26 [# you was #stuff] g27
+                   [# was I #stuff] g28 [#] g29]
+pprop "was "g26 [[What if you were :stuff?] [Do you think you were :stuff?]
+                 [Were you :stuff?] [What would it mean if you were :stuff?]
+                 [What does " :stuff " suggest to you?] how]
+pprop "was "g27 [[Were you really?] [Why do you tell me you were :stuff now?]
+                 [Perhaps I already knew you were :stuff.]]
+pprop "was "g28 [[Would you like to believe I was :stuff?]
+                 [What suggests that I was :stuff?] [What do you think?]
+                 [Perhaps I was :stuff.] [What if I had been :stuff?]]
+pprop "was "g29 [newkey]
+
+pprop "we "translation "you
+pprop "we "priority 0
+pprop "we "rules [I]
+
+pprop "were "priority 0
+pprop "were "translation "was
+pprop "were "rules [was]
+
+pprop "what "priority 0
+pprop "what "rules [[!:in [what where] #] g10 [# !a:in [what where] #b] g11]
+pprop "what "g10 [how]
+pprop "what "g11 [[Tell me about :a :b.] [:a :b?] [Do you want me to tell you :a :b?]
+                  [Really.] [I see.] newkey]
+
+pprop "where "priority 0
+pprop "where "rules [how]
+
+pprop "why "priority 0
+pprop "why "rules [[# why don't I #stuff] g65 [# why can't you #stuff] g66 [#] g67]
+pprop "why "g65 [[Do you believe I don't :stuff?]
+                 [Perhaps I will :stuff in good time.]
+                 [Should you :stuff yourself?] [You want me to :stuff?] how]
+pprop "why "g66 [[Do you think you should be able to :stuff?]
+                 [Do you want to be able to :stuff?]
+                 [Do you believe this will help you to :stuff?]
+                 [Have you any idea why you can't :stuff?] how]
+pprop "why "g67 [[Why indeed?] [Why "why"?] [Why not?] how newkey]
+
+pprop "wife "family "true
+
+pprop "wish "belief "true
+
+pprop "wont "translation "won't
+
+pprop "xxyyzz "priority 0
+pprop "xxyyzz "rules [[#] g50]
+pprop "xxyyzz "g50 [[You're being somewhat short with me.]
+                    [You don't seem very talkative today.]
+                    [Perhaps you'd rather talk about something else.]
+                    [Are you using monosyllables for some reason?] newkey]
+
+pprop "yes "priority 0
+pprop "yes "rules [[yes] g51 [#] g52]
+pprop "yes "g51 [xxyyzz [pre [x yes] yes]]
+pprop "yes "g52 [[You seem quite positive.] [You are sure.] [I see.]
+                 [I understand.] newkey]
+
+pprop "you "priority 0
+pprop "you "translation "I
+pprop "you "rules [[# I remind you of #] g44 [# I are # you #] g45
+                   [# I # are #stuff] g46 [# I #stuff you] g47
+                   [# I &stuff] g48 [#] g49]
+pprop "you "g44 [dit]
+pprop "you "g45 [newkey]
+pprop "you "g46 [[What makes you think I am :stuff?]
+                 [Does it please you to believe I am :stuff?]
+                 [Perhaps you would like to be :stuff.]
+                 [Do you sometimes wish you were :stuff?]]
+pprop "you "g47 [[Why do you think I :stuff you?]
+                 [You like to think I :stuff you, don't you?]
+                 [What makes you think I :stuff you?] [Really, I :stuff you?]
+                 [Do you wish to believe I :stuff you?]
+                 [Suppose I did :stuff you. what would that mean?]
+                 [Does someone else believe I :stuff you?]]
+pprop "you "g48 [[We were discussing you, not me.] [Oh, I :stuff?]
+                 [Is this really relevant to your problem?] [Perhaps I do :stuff.]
+                 [Are you glad to know I :stuff?] [Do you :stuff?]
+                 [What are your feelings now?]]
+pprop "you "g49 [newkey]
+
+pprop "you're "priority 0
+pprop "you're "translation "I'm
+pprop "you're "rules [[# I'm #stuff] g30]
+pprop "you're "g30 [[pre [I are :stuff] you]]
+
+pprop "your "priority 0
+pprop "your "translation "my
+pprop "your "rules [[# my #stuff] g25]
+pprop "your "g25 [[Why are you concerned over my :stuff?]
+                  [What about your own :stuff?]
+                  [Are you worried about someone else's :stuff?]
+                  [Really, my :stuff?]]
+
+pprop "yourself "translation "myself
+
+
+to match :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen [output match butfirst :pat butfirst :sen]
+output "false
+end
+
+;; Parsing quantifiers
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+;; Exactly one match
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output match butfirst :pat butfirst :sen
+end
+
+;; Zero or one match
+
+to match?
+make :special.var []
+if emptyp :sen [output match butfirst :pat :sen]
+if not try.pred [output match butfirst :pat :sen]
+make :special.var first :sen
+if match butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output match butfirst :pat :sen
+end
+
+;; Zero or more matches
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+;; One or more matches
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+;; Zero or more matches (as few as possible)
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if match butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+;; Match words in a group
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if match butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+;; Applying the predicates
+
+to try.pred
+if listp :special.pred [output match :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output match :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+;; Special predicates
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if match first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
diff --git a/js/games/nluqo.github.io/~bh/v3-toc2.html b/js/games/nluqo.github.io/~bh/v3-toc2.html
new file mode 100644
index 0000000..37a22ad
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3-toc2.html
@@ -0,0 +1,246 @@
+<HTML>
+<HEAD>
+<TITLE>Beyond Programming contents</TITLE>
+<link rel="shortcut icon" href="http://www.cs.berkeley.edu/~bh/csls3-tiny.png" type="image/png">
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1><EM>Computer Science Logo Style</EM><BR>
+Volume 3: <EM>Beyond Programming</EM></H1>
+<CITE>Brian Harvey<BR>University of California, Berkeley</CITE>
+
+<P><TABLE width="100%"><TR>
+<TD><IMG SRC="csls3.jpg">
+<TD><TABLE>
+<TR><TD align="right"><A HREF="v1-toc2.html">Volume 1: <CITE>Symbolic Computing</CITE></A>
+<IMG SRC="csls1-tiny.jpg">
+<TR><TD align="right"><A HREF="v2-toc2.html">Volume 2: <CITE>Advanced Techniques</CITE></A>
+<IMG SRC="csls2-tiny.jpg">
+<TR><TD align="right"><A HREF="logo.html">Download Berkeley Logo (UCBLogo)</A>
+<IMG SRC="ucblogo2-tiny.gif">
+<TR><TD align="right"><A HREF="index.html">Brian's home page</A>
+<IMG SRC="bh-tiny.jpg">
+<TR><TD align="right">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+<IMG SRC="mitp.jpg">
+</TABLE></TABLE>
+
+<HR>
+
+<P>Below this short table of contents is an expanded table of contents
+including sections within each chapter.  Click on the chapter name
+to jump down.  You can also download the complete text of each chapter
+in PDF format for elegant printing, or browse the HTML version.
+
+<P><EM>Note:  These books are still in copyright, and in print.  They are
+posted here for your personal use, not for resale or redistribution.
+Thanks!</EM>
+
+<p>
+<a href="http://www.azoft.com/people/seremina/edu/v3-toc2-romanian.html">View
+this
+page in Romanian</a> courtesy of <a href="http://www.azoft.com/">azoft</a>.
+
+<p>
+<a href="http://cupegraf.com/blog/v3-toc2/">Slovakian translation</a>
+courtesy of <a href="http://cupegraf.com">Gasper Halipovich</a>
+
+<UL>
+<LI>Preface
+(<A HREF="pdf/v3ch00.pdf">frontmatter in PDF</A>)
+(<A HREF="v3ch0/preface.html">HTML</A>)
+<LI>Acknowledgments
+(<A HREF="v3ch0/ack.html">HTML</A>)
+<LI>1.  <A HREF="v3-toc2.html#ch1">Automata Theory</A>
+(<A HREF="pdf/v3ch01.pdf">PDF</A>)
+(<A HREF="v3ch1/fsm.html">HTML</A>)
+<LI>2.  <A HREF="v3-toc2.html#ch2">Discrete Mathematics</A>
+(<A HREF="pdf/v3ch02.pdf">PDF</A>)
+(<A HREF="v3ch2/math.html">HTML</A>)
+<LI>3.  <A HREF="v3-toc2.html#ch3">Algorithms and Data Structures</A>
+(<A HREF="pdf/v3ch03.pdf">PDF</A>)
+(<A HREF="v3ch3/algs.html">HTML</A>)
+<LI>4.  <A HREF="v3-toc2.html#ch4">Programming Language Design</A>
+(<A HREF="pdf/v3ch04.pdf">PDF</A>)
+(<A HREF="v3ch4/langd.html">HTML</A>)
+<LI>5.  <A HREF="v3-toc2.html#ch5">Programming Language Implementation</A>
+(<A HREF="pdf/v3ch05.pdf">PDF</A>)
+(<A HREF="v3ch5/langi.html">HTML</A>)
+<LI>6.  <A HREF="v3-toc2.html#ch6">Artificial Intelligence</A>
+(<A HREF="pdf/v3ch06.pdf">PDF</A>)
+(<A HREF="v3ch6/ai.html">HTML</A>)
+<LI>Bibliography
+(<A HREF="pdf/v3ch07.pdf">backmatter in PDF</A>)
+(<A HREF="v3ch7/biblio.html">HTML</A>)
+<LI>Credits
+(<A HREF="v3ch7/permissions.html">HTML</A>)
+<LI>Index of Defined Procedures
+(<A HREF="v3ch7/appuindex.html">HTML</A>)
+<LI>General Index
+(<A HREF="v3ch7/appindex.html">HTML</A>)
+</UL>
+
+<HR>
+
+<H3>Preface</H3>
+
+<UL>
+<LI>About This Series
+<LI>How to Read This Book
+<LI>What Isn't Included
+<LI>Computers and People
+</UL>
+
+<H3>Acknowledgments</H3>
+
+<H3><A name="ch1">1.  Automata Theory</A></H3>
+
+<UL>
+<LI>What is a Computation?
+<LI>Finite-State Machines
+<LI>Nondeterministic Machines
+<LI>Representing Machines as Logo Lists
+<LI>Text Editors: A Use for Acceptors
+<LI>Regular Expressions
+<LI>Rules That Aren't Regular
+<LI>Regular Expressions and Finite-State Machines
+<LI>How to Translate
+<LI>Making the Machine Deterministic
+<LI>Eliminating Redundant States
+<LI>A Finite-State Adder
+<LI>Counting and Finite-State Machines
+<LI>Turing Machines
+<LI>Turing's Thesis
+<LI>The Halting Theorem
+<LI>Proving the Halting Theorem in Logo
+<LI>Program Listing
+</UL>
+
+<H3><A name="ch2">2.  Discrete Mathematics</A></H3>
+
+<UL>
+<LI>Propositional Logic
+<LI>An Inference System
+<LI>Problems with Ordering
+<LI>Data Structure
+<LI>Program Structure: Recording Simple Propositions
+<LI>Program Structure: Recording Implications
+<LI>Using Implications to Represent Orderings
+<LI>Backtracking
+<LI>Generalized Inference Systems and Predicate Logic
+<LI>Logic and Computer Hardware
+<LI>Combinatorics
+<LI>Inductive and Closed-Form Definition
+<LI>Pascal's Triangle
+<LI>Simulation
+<LI>The Simplex Lock Problem
+<LI>An Inductive Solution
+<LI>Multinomial Coefficients
+<LI>Program Listing
+</UL>
+
+<H3><A name="ch3">3.  Algorithms and Data Structures</A></H3>
+
+<UL>
+<LI>Local Optimization vs. Efficient Algorithms
+<LI>Memoization
+<LI>Sorting Algorithms
+<LI>Sorting by Selection
+<LI>Sorting by Partition
+<LI>Order of Growth
+<LI>Data Structures
+<LI>Data Structures in Real Life
+<LI>Trees
+<LI>Improving the Data Representation
+<LI>Trees as an Abstract Data Type
+<LI>Tree Modification
+<LI>Searching Algorithms and Trees
+<LI>Logo's Underlying Data Structures
+<LI>Program Listing
+</UL>
+
+<H3><A name="ch4">4.  Programming Language Design</A></H3>
+
+<UL>
+<LI>Programming paradigms
+<LI>Interactive and Non-Interactive Languages
+<LI>Block Structure
+<LI>Statement Types
+<LI>Shuffling a Deck Using Arrays
+<LI>Lexical Scope
+<LI>Typed Variables
+<LI>Additional Types in Standard Pascal
+<LI>Critique of Typed Variables
+<LI>Procedures and Functions
+<LI>Call by Value and Call by Reference
+<LI>Parameters in Logo: Call by Binding
+</UL>
+
+<H3><A name="ch5">5.  Programming Language Implementation</A></H3>
+
+<UL>
+<LI>Formal Syntax Definition
+<LI>Tokenization
+<LI>Lookahead
+<LI>Parsing
+<LI>Expressions and Precedence
+<LI>The Two-Stack Algorithm for Expressions
+<LI>The Simulated Machine
+<LI>Stack Frames
+<LI>Data Structures
+<LI>Code Generation
+<LI>Program Listing
+</UL>
+
+<H3><A name="ch6">6.  Artificial Intelligence</A></H3>
+
+<UL>
+<LI>Microworlds: Student
+<LI>How Student Translates English to Algebra
+<LI>Pattern Matching
+<LI>Solving the Equations
+<LI>Age Problems
+<LI>AI and Education
+<LI>Combining Sentences Into One Equation
+<LI>Allowing Flexible Phrasing
+<LI>Using Background Knowledge
+<LI>Optional Substitutions
+<LI>If All Else Fails
+<LI>Limitations of Pattern Matching
+<LI>Context-Free Languages
+<LI>Augmented Transition Networks
+<LI>Program Listing 
+</UL>
+
+<H2>Appendices</H2>
+
+<H3>Bibliography</H3>
+
+<UL>
+<LI>Read These!
+<LI>Chapter 1: Automata Theory
+<LI>Chapter 2: Discrete Mathematics
+<LI>Chapter 3: Algorithms and Data Structures
+<LI>Chapter 4: Programming Language Design
+<LI>Chapter 5: Programming Language Implementation
+<LI>Chapter 6: Artificial Intelligence
+<LI>Computers and People
+</UL>
+
+<H3>Credits</H3>
+
+<H3>Index of Defined Procedures</H3>
+
+<H3>General Index</H3>
+
+<P><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+
+<P>
+<ADDRESS>
+<A HREF="index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch0/ack.html b/js/games/nluqo.github.io/~bh/v3ch0/ack.html
new file mode 100644
index 0000000..5a6e170
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch0/ack.html
@@ -0,0 +1,79 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3:Acknowledgments</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Acknowledgments</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch1/v3ch1.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+As for the previous two volumes, my greatest debts are to Hal Abelson and
+Paul Goldenberg.  Both of them read the manuscript carefully through several
+drafts.  Hal is great at noticing the large problems; he makes comments like
+&quot;throw out this whole chapter&quot; and &quot;you are putting the cart before the
+horse here.&quot;  Paul's comments were generally on a more detailed level,
+pointing out sections in which potentially valuable content was sabotaged by
+a presentation that nobody would understand.  Together they have improved
+the book enormously.
+
+<P>Some of the examples in this book are ones that were posed to me by other
+people in other contexts.  Horacio Reggini raised the issue of listing (not
+merely counting) the combinations of <EM>r</EM> elements of a list;
+Dick White
+asked me to investigate just how secure the Simplex lock is;
+Chris Anderson
+taught the probability class where the question about multinomial expansions
+arose.  I'm grateful to Anita Harnadek, whom I've never met, for
+a logic
+problem I use to demonstrate inference systems.  (She is, by the way, the
+author of a fantastic textbook called <EM>Critical Thinking</EM> that I
+recommend to teachers of almost any subject: math, English, or social
+studies.)  Jim Davis's Logo interpreter in Logo (in the <EM>LogoWorks</EM>
+anthology I co-edited) was an inspiration for the Pascal compiler.
+
+<P>
+I'm grateful to Dan Bobrow, Sherry Turkle, and
+Terry Winograd for permission
+to quote from their work here.  In particular, Bobrow's doctoral thesis
+forms the basis for my chapter on artificial intelligence, and I'm grateful
+for the program design as well as my extensive quotations from the thesis
+itself.  He was also very patient in answering technical questions about
+details of a program he wrote over 20 years ago.
+
+<P>
+Mike Clancy taught me about generating functions and used them to find the
+closed form definition for the multinomial problem; Michael Somos,
+via the <CODE>sci.math</CODE> newsgroup, provided the closed form solution to
+the Simplex lock problem.  Paul Hilfinger straightened me out
+about parser complexity.
+
+<P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch1/v3ch1.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch0/preface.html b/js/games/nluqo.github.io/~bh/v3ch0/preface.html
new file mode 100644
index 0000000..6c6aace
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch0/preface.html
@@ -0,0 +1,390 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3:Preface</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Preface</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right">[no back]
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>The phrase &quot;computer science&quot; is still, in some circles, battling for
+acceptance.  Some people, not necessarily antagonistic to computers, consider
+it an illegitimate merger of two disconnected ideas (much as I feel myself
+about the phrase &quot;computer literacy&quot;).  They don't see where the <EM>
+science</EM> comes in; what is taught in computer science departments is mostly
+how-to tricks of the trade, comparable to medical or legal training.  Such
+training is valuable to the individual and to society, but the trainees are
+not learning to be scientists.
+
+<P>
+
+My own feeling is that there is some truth on both sides.  There <EM>is</EM>
+some science in computer science.  Abelson and Sussman, in <EM>Structure
+and Interpretation of Computer Programs,</EM> use the words &quot;complexity&quot; and
+&quot;process&quot; to explain what it is that computer scientists study.  A process
+need not take place inside a computer, but it happens that computer processes
+are particularly amenable to formal study and they shed light on the idea of
+process in general.  On the other hand, Abelson and Sussman are exceptional.
+A great deal of what is called computer science <EM>is</EM> much more a
+matter of programming techniques; many computer science students are first
+offered courses in several different programming languages and then taught
+specific techniques for particular problem domains, like graphics or data
+base systems or compiler construction.  And many students who find
+themselves in computer science departments because they love programming
+computers are impatient with theory and weak in mathematical
+sophistication.  Such students are perfectly satisfied with the how-to
+approach.  (I don't mean this as an insult.  I have in mind some excellent
+students I've taught who are brilliant programmers, very intelligent people,
+but happen not to have a theoretical bent.)
+
+<P>My goal in this book is to provide a bridge over which a lover of practical
+programming can cross into the world of theory.  I envision someone who got
+bored or confused early in the high school math curriculum and was left with
+a distaste for formal thinking, but who is nevertheless a closet formalist
+when programming, getting the same joy from representing an intellectual
+problem in executable form that a traditional mathematician gets from
+representing a similar problem in an axiom system.  I've tried to discuss
+the concerns of more abstract computer science using the language of concrete
+Logo programs that embody those concerns.  This is an ambitious goal and I'm
+not sure how well I've succeeded.
+
+<P>
+
+For example, in automata theory there is an elementary result called
+Kleene's Theorem that establishes the equivalence of two different
+representations for a certain class of problems.  One representation, the
+finite-state machine, is a <EM>procedural</EM> one, a sequence of steps, like
+a Pascal program.  The other, the regular expression, is <EM>declarative,</EM>
+describing the desired result rather than the sequence of steps needed to
+get there, like a Prolog program.  The representations are equivalent in the
+sense that any problem that can be described as a regular expression can be
+solved by a finite-state machine, and vice versa.  (Not all problems are in
+this category.)  Automata theory texts offer a formal proof of Kleene's
+Theorem using mathematical induction.  What I offer is a Logo program that
+takes a regular expression as input and actually works out an equivalent
+finite-state machine for that particular expression.  The program and the
+formal proof are similar in structure, embodying many of the same ideas.
+But the program is concrete and manipulable.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Of course, computer
+programs are not concrete for everyone.  Despite what I said above about
+students who like programming but don't like abstraction, anyone who has
+learned to see programs as concrete objects is well on the way to mastering
+mathematical abstraction too; that's what gives me hope about this
+enterprise.  The fact that the Piagetian 
+boundary between concrete objects and
+abstract ideas is not the same for everyone, and that what was formerly
+abstract can become concrete in a suitable learning environment (such as
+the one made possible by computers), was the insight that led
+Seymour Papert
+to espouse computer programming as an activity for children.</SMALL></BLOCKQUOTE></SMALL><P>Don't get the impression that the book contains nothing but formal
+mathematics, even in executable guise.  The first two chapters (on automata
+theory and discrete mathematics) concern relatively abstract topics, although
+each has practical applications; the later chapters are more directly about
+the process of computer programming.
+
+<P><H2>About This Series</H2>
+
+<P>The book you are reading is the final volume in a three-volume series,
+<EM>Computer Science Logo Style.</EM>
+In the introductions to the earlier volumes I have distinguished two
+approaches to computer science: the software engineering approach and the
+artificial intelligence approach.  The former makes the idea of <EM>
+algorithm</EM> the central one.  It thrives in a context of well-defined
+problems; a computer program proposed as a solution to such a problem can
+be clearly judged correct or incorrect, and it can be more or less efficient
+than some other proposed solution.  The artificial intelligence approach is
+harder to describe in one sentence.  It embraces vaguely defined problems;
+it emphasizes an interactive process in which the programmer and the
+computer are participants.
+
+<P>Of course the terms in which I describe the two approaches are not
+value-free.  A software engineer would use different language.  Nor would
+all experts necessarily accept my dichotomy in the first place.  Alan Perlis
+
+says, in his foreword to <EM>Structure and Interpretation,</EM> &quot;After all,
+the critical programming concerns of software engineering and artificial
+intelligence tend to coalesce as the systems under investigation become
+larger.  This explains why there is such growing interest in Lisp outside of
+artificial intelligence.&quot;
+
+<P>I have also described the sequence of stages through which I think an
+apprentice programmer travels.  Volume 1 of this series, <EM>Symbolic
+Computing,</EM> teaches the rules of the game.  It is addressed to a reader
+who has probably done some computer programming before, but is just starting
+to get serious about it.  It differs from most introductory Logo programming
+books in that the latter focus attention on a particular programming goal,
+usually turtle graphics, and try to make the language itself as transparent
+as possible.  I prefer to make the rules of the language an explicit object
+of study, since the design of any language embodies the designer's ideas
+about the structure of computer science.
+
+<P>Volume 2, <EM>Advanced Techniques,</EM> combines additional tutorial chapters
+about advanced Logo features with a collection of more or less practical
+programming projects.  As in any field, apprentices learn by doing more than
+they learn by reading books; yet they require the attention of a master to
+see that they are learning a good style of work and not practicing bad
+habits.  To speak of apprenticeship in this century sounds quaint, and
+in fact most of our master programmers do not take on apprentices.  That's a
+pity, I think; too many would-be apprentices don't find suitable guidance.
+(They sometimes try to fill the gap by learning how to break into some
+company's computer, and then they get in trouble.)  No book can be as good
+as living contact with a master programmer, but Volume 2 is my attempt.
+
+<P>This volume, <EM>Beyond Programming,</EM> is for the reader with a few substantial
+programming projects, or more than a few, behind him or her, who is starting
+to feel bored with programming for its own sake but isn't sure what to do
+instead.  Some people never do experience that sense of constriction, and
+that's okay, as I said earlier.  But I love mathematics myself, and I confess
+that I'm always a little disappointed if one of my best students doesn't
+come to share that love.  In this volume my goal is to tempt them.
+
+<P>
+<H2>How to Read This Book</H2>
+
+<P>Slowly.
+
+<P>Each chapter introduces some rather sophisticated ideas.  You may find that
+reading the chapter once leaves you with only a vague understanding.  There
+are two things you can do about that:  Read it again and experiment with the
+programs in the chapter.  Test the limits of the programs; see what problems
+you can solve that are similar to the ones I solve, and what problems don't
+yield to the techniques I use.  Think about how you could extend the
+techniques.  You should understand how each program works, but don't fall
+into the trap of thinking that the program is the most important thing in
+the chapter.  You should also understand how the program fits into a broader
+theoretical framework--how it embodies the <EM>ideas</EM> of the chapter.
+
+<P>The programs in each chapter are available over the
+Internet along with Berkeley Logo, a free Logo interpreter that runs on PC,
+Macintosh, and Unix systems.  Please note, though, that in a few places I
+show alternate versions of a program in the text.  In those situations the
+online file contains the final version, but it's worth your while to work
+through the development of the program by typing in the earlier versions
+yourself.  (I don't do this with enormous programs.)
+
+<P>Most of the chapters concentrate on a single idea selected from a broad
+topic.  Earlier I mentioned Kleene's Theorem as an example; that theorem is
+a very small piece of automata theory, but it takes up the bulk of the
+chapter.  Only in the final pages do I hint at some of the other topics
+within automata theory.  I think it's better to teach you one idea in depth
+than to give a handwavy picture of an entire area of study.  You should
+expect to have to explore each area further by reading books about that
+topic; this book ends with a bibliography to help you.
+
+<P>The specific ideas I present are generally not at the cutting edge of
+current research in computer science; instead, they are older, more
+fundamental ideas.  In part this is inherent in the introductory nature of
+the book.  In part it reflects the limitations of my own knowledge.  And in
+part it reflects the limitations of the home computers I expect my readers
+to have available to them.  Then, sometimes the older ideas are easier to
+present in a complete, coherent, concrete form.  For example, in the chapter
+on artificial intelligence I present an implementation of a program from
+1964.  In that program, the method used in the understanding of English
+sentences is closely connected to the particular problem (solving algebra
+word problems) that that program handles.  A more modern English sentence
+parsing program is not only slower and more complicated but also is hard to
+demonstrate unless it's attached to an equally slow and complicated expert
+system or other purposeful program.  I hint about the newer techniques, but
+I don't demonstrate them.
+
+<P>Chapters make occasional references to earlier chapters, so it's best if you
+read the book in order, although the references are rarely so substantial
+that you can't survive skipping a chapter.  (But definitely read Chapter 4
+before Chapter 5.)
+
+<P><H2>What Isn't Included</H2>
+
+<P>When I first conceived of this series I described the third volume as &quot;the
+first chapter of every graduate computer science course.&quot;  As it turned out,
+the actual book does not pretend to cover anything like the entire field of
+computer science.  It contains a selection of topics that I know about and
+find most worthwhile.
+
+<P>Some topics are omitted because I just don't care about them personally.
+For example, I don't have anything to say about numerical analysis.  I'm
+glad there are people in the world who are concerned to ensure that when I
+use the square root primitive in Logo I get the right answer, but I am not
+such a person myself.  That doesn't mean you have to share my taste, but if
+you want to know about numerical analysis you'll have to read someone else's
+book.
+
+<P>Other topics are omitted because I couldn't find any way to illustrate the
+topic through Logo programming on a microcomputer, which was one of the
+constraints I set for myself in planning this series.  For example, one of
+the areas of computer science I find <EM>most</EM> interesting is
+operating systems.  My
+high school students in Sudbury had access to a Unix timesharing
+system on a minicomputer and they did significant software development in
+that environment.  But I don't know how to make that particular experience
+available on a single-user microcomputer in which the operating system is
+someone's trade secret.
+
+<P>Finally, some topics just didn't fit.  I originally planned to have a
+chapter on graphics programming, but I decided that there are many books on
+the subject at both a popular and a professional level of expertise, and I
+had less to say about it than about some other areas.
+
+<P>The bibliography in Appendix A includes some pointers to information about
+some of the missing topics.  In any case, the purpose of this book isn't to
+teach you everything there is to know about computers.  It's to nurture in
+you a sense of what computer science is like, or at least one
+approach to computer science, in the hope that you'll be inspired to pursue
+the study in the &quot;regular&quot; college-level texts.
+
+<P><H2>Computers and People</H2>
+
+<BLOCKQUOTE>
+<P><A NAME="turkle">Steve</A> is a college
+sophomore, an engineering student who had never thought
+much about psychology.  In the first month of an introductory
+computer-science course he saw how seemingly intelligent and autonomous
+systems could be programmed.  This led him to the idea that there might be
+something illusory in his own subjective sense of autonomy and
+self-determination.
+
+<P>
+Steve's classmate Paul had a very different reaction.  He too came to ask
+whether free will was illusory.  The programming course was his first brush
+with an idea that many other people encounter through philosophy, theology,
+or psychoanalysis: the idea that the conscious ego might not be a free agent.
+Having seen this possibility, he rejected it, with arguments about free will
+and the irreducibility of people's conscious sense of themselves.  In his
+reaction to the computer, Paul made explicit a commitment to a concept of
+his own nature to which he had never before felt the need to pay any
+deliberate attention.  For Paul, the programmed computer became the very
+antithesis of what it is to be human.  The programmed computer became part
+of Paul's identity as not-computer.
+
+<P>Paul and Steve disagree.  But their disagreement is really not about
+computers.  It is about determinism and free will.  At different points in
+history this same debate has played on different stages.  Traditionally a
+theological issue, in the first quarter of this century it was played out in
+debate about psychoanalysis.  In the last quarter of this century it looks
+as though it is going to be played out in debate about machines.
+
+<P>--<EM>The Second Self: Computers and the Human Spirit,</EM>
+Sherry Turkle, p. 23.
+</BLOCKQUOTE>
+
+<P>The psychology of computer programming, the sociology of the
+computer-intensive society, the economics of automation, the
+philosophy of
+mind, the ethics of computer use: these are the topics I find most
+interesting and most important in thinking about computers.  That's why I'm a
+teacher instead of a computer programmer in industry.
+
+<P>In the original plan for this book there was to have been a chapter called
+&quot;Computers and People&quot; at the end of the book.  I feel strongly that it's
+irresponsible to train people in the skills of computer technocracy without
+also encouraging their sensitivity to the human implications of their work.
+I ended up not writing that chapter, for several reasons.  First, it would
+have to be very different in tone from the hands-on, experimental style of
+the rest of the book.  I was afraid that, tacked on at the end, it would
+sound preachy, or worse, tokenistic and hypocritical.  So instead there is
+this shorter discussion in the preface, where an author is allowed to
+sound preachy.
+
+<P>Second, I'm not sure that the relevant issues can be presented usefully to
+apprentices in the form of abstract reading.  There is a lot of literature
+on this side of computing, some of which is listed in the bibliography.  But
+the books, like all theoretical psychology or philosophy, are hard reading for
+people whose relevant practical experience is just beginning.  Instead I
+think the best way to teach about the human side of computing is through
+sensitive adult attention to the actual experiences that take place in the
+computer center.  (In general I've tried to write these books in a way that
+leaves open exactly who is reading them.  I think this sort of approach to
+computer science can be useful to a wide range of people, kids and adults,
+in and out of formal educational settings.  But I guess right now I am
+talking primarily to the teachers of high school students and
+undergraduates.)
+
+<P>At my high school computer center the kids liked to write video game
+programs.  For a while some of the authors of these games included in the
+programs a list of which other kids were or weren't allowed to play the
+games.  This practice let the game authors feel powerful and important, but
+of course it wasn't very helpful to the community spirit in the computer
+center.  I didn't want to forbid the practice, making the issue one of rules
+and authority.  Instead, in conversation with the students I tried to turn
+their attention away from ideas of intellectual property and
+entitlement--&quot;It's my program and I have the right to decide who can use
+it&quot;--and toward a sense of their own need for a strong community.  Every
+time you write a program you're building on the work of last year's students
+who developed some of the techniques you use, on the work of people outside
+the school who designed the programming language, operating system, and so
+forth, and on the generosity of the adults in your community who paid for the
+equipment you use.  In the end, I think the issue was settled not so much by
+my eloquence as by the example set by some other students who became
+important members of the community through their willingness to help others
+by teaching, encouraging, and sharing their own work.  The kids all learned
+that it's possible to be respected, admired, and loved instead of respected
+but resented.
+
+<P>At many schools, when teachers express concern about the social issues in
+the computer center, the main focus of that concern is around the question
+of software piracy.  Kids show up at school with a pirated version of the
+latest microcomputer game program, very proud of themselves for having it,
+and the teachers try to get the kids not to be proud of their theft of
+intangible property.  But it seems to me that the other side of the issue,
+the spirit that's held up to kids as good computer citizenship, is marked by
+secrecy, distribution of programs in compiled form only, copy protection that
+works against networking, paranoia, and plain greed.  I don't like <EM>
+either</EM> side of that dichotomy.
+
+<P>
+
+<P>By contrast, in the university computer centers built around
+timesharing systems or networked
+workstations I see much more of a spirit of sharing,
+openness, community, programs provided with source code so that people can
+build on other people's work, trust, and an ideal of service to the
+community.  That's another reason I chose to set up a Unix system in
+Sudbury.  The ethical issues that arise in such a setting revolve around
+privacy of information.  Kids find it a challenge to break into other
+people's accounts just as they do in the real-world computer systems that
+get into the newspapers, but at school the person who gets angry is another
+student rather than some faceless administrator.  And students also
+experience the positive moral force of software sharing and collaboration.
+
+<P>I'm exaggerating the differences; I know that there is cooperation among
+microcomputer users and greed in the large computer world.  Also, recent
+hardware developments are making the boundary less clear; home computers and
+workstations are built using the same processor chips.  But the software is
+different and I think the style of human interaction is different as well.
+Still, the technical details of the facility are less important than the
+teacher's willingness to be a humane model and not just a fount of
+expertise.  One of the virtues of that quaint idea of apprenticeship was
+that the apprentice was involved in the <EM>entire</EM> way of life of the
+master; there was no artificial separation between professional concerns and
+human concerns.  What goes on among the people in a computer center is at
+least as important as what goes on between person and machine.
+
+<P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P>[no back]
+chapter thread <A HREF="ack.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch0/v3ch0.html b/js/games/nluqo.github.io/~bh/v3ch0/v3ch0.html
new file mode 100644
index 0000000..5a6e170
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch0/v3ch0.html
@@ -0,0 +1,79 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3:Acknowledgments</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Acknowledgments</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch00.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch1/v3ch1.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>
+As for the previous two volumes, my greatest debts are to Hal Abelson and
+Paul Goldenberg.  Both of them read the manuscript carefully through several
+drafts.  Hal is great at noticing the large problems; he makes comments like
+&quot;throw out this whole chapter&quot; and &quot;you are putting the cart before the
+horse here.&quot;  Paul's comments were generally on a more detailed level,
+pointing out sections in which potentially valuable content was sabotaged by
+a presentation that nobody would understand.  Together they have improved
+the book enormously.
+
+<P>Some of the examples in this book are ones that were posed to me by other
+people in other contexts.  Horacio Reggini raised the issue of listing (not
+merely counting) the combinations of <EM>r</EM> elements of a list;
+Dick White
+asked me to investigate just how secure the Simplex lock is;
+Chris Anderson
+taught the probability class where the question about multinomial expansions
+arose.  I'm grateful to Anita Harnadek, whom I've never met, for
+a logic
+problem I use to demonstrate inference systems.  (She is, by the way, the
+author of a fantastic textbook called <EM>Critical Thinking</EM> that I
+recommend to teachers of almost any subject: math, English, or social
+studies.)  Jim Davis's Logo interpreter in Logo (in the <EM>LogoWorks</EM>
+anthology I co-edited) was an inspiration for the Pascal compiler.
+
+<P>
+I'm grateful to Dan Bobrow, Sherry Turkle, and
+Terry Winograd for permission
+to quote from their work here.  In particular, Bobrow's doctoral thesis
+forms the basis for my chapter on artificial intelligence, and I'm grateful
+for the program design as well as my extensive quotations from the thesis
+itself.  He was also very patient in answering technical questions about
+details of a program he wrote over 20 years ago.
+
+<P>
+Mike Clancy taught me about generating functions and used them to find the
+closed form definition for the multinomial problem; Michael Somos,
+via the <CODE>sci.math</CODE> newsgroup, provided the closed form solution to
+the Simplex lock problem.  Paul Hilfinger straightened me out
+about parser complexity.
+
+<P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="preface.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch1/v3ch1.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch1/alter-after.gif b/js/games/nluqo.github.io/~bh/v3ch1/alter-after.gif
new file mode 100644
index 0000000..9f4bc51
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/alter-after.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/concat-after.gif b/js/games/nluqo.github.io/~bh/v3ch1/concat-after.gif
new file mode 100644
index 0000000..135694a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/concat-after.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/concat-before.gif b/js/games/nluqo.github.io/~bh/v3ch1/concat-before.gif
new file mode 100644
index 0000000..ad99230
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/concat-before.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/concat2-after.gif b/js/games/nluqo.github.io/~bh/v3ch1/concat2-after.gif
new file mode 100644
index 0000000..ab419b2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/concat2-after.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/concat2-before.gif b/js/games/nluqo.github.io/~bh/v3ch1/concat2-before.gif
new file mode 100644
index 0000000..7afe42f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/concat2-before.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm-add.gif b/js/games/nluqo.github.io/~bh/v3ch1/fsm-add.gif
new file mode 100644
index 0000000..3c49700
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm-add.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm.html b/js/games/nluqo.github.io/~bh/v3ch1/fsm.html
new file mode 100644
index 0000000..278984a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm.html
@@ -0,0 +1,1977 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 1: Automata Theory</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Automata Theory</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch0/v3ch0.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch2/v3ch2.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="fsm.lg"><CODE>fsm</CODE></A>
+
+
+
+<P>As I explained in the preface to the first volume, one of my purposes in
+writing this series of books has been to urge computer hobbyists away from
+the view of computer expertise as the knowledge of obscure characteristics
+of some particular computer--how to program it in machine language, what
+magic numbers can be found where in its memory, how to overcome the copy
+protection schemes on its disks, and so on.  The trouble with this sort of
+machine-specific expertise is that it becomes obsolete when your favorite
+computer does.  From my point of view, one of the virtues of Logo as a
+programming language is that its high level data structures direct your
+attention away from questions about what goes where in memory,
+allowing you to focus instead on a more abstract description of your problem.
+
+<P>Automata theory is a further step in abstracting your attention away from any
+particular kind of computer or particular programming language.  In automata
+theory we consider a <EM>mathematical model</EM> of computing.  Such a model
+strips the computational machinery--the &quot;programming language&quot;--down to
+the bare minimum, so that it's easy to manipulate these
+theoretical machines
+(there are several such models, for different purposes, as you'll soon see)
+mathematically to prove things about their capabilities.  For the most part,
+these mathematical models are not used for practical programming problems.
+Real programming languages are much more convenient to use.  But the very
+flexibility that makes real languages easier to use also makes them harder
+to talk about in a formal way.  The stripped-down theoretical machines are
+designed to be examined mathematically.
+
+<P>What's a mathematical model?  You'll see one shortly, called a
+&quot;finite-state machine.&quot;
+
+<P>The point of this study is that the mathematical models are, in some
+important ways, <EM>equivalent</EM> to real computers and real programming
+languages.  What this means is that any problem that can be solved on a real
+computer can be solved using these models, and vice versa.  Anything we can
+prove about the models sheds light on the real problems of computer
+programming as well.
+
+<P>The questions asked in automata theory include these:  Are there any
+problems that no computer can solve, no matter how much time and memory it
+has?  Is it possible to <EM>prove</EM> that a particular computer program
+will actually solve a particular problem?  If a computer can use two
+different external storage devices (disks or tapes) at the same time,
+does that extend the range of problems it can solve compared to a
+machine with only one such device?
+
+<P>There is also a larger question lurking in the background of automata
+theory:  Does the human mind solve problems in the same way that a
+computer does?  Are people subject to the same limitations as computers?
+Automata theory does not actually answer this question, but the insights
+of automata theory can be helpful in trying to work out an answer.
+We'll have more to say about this in the chapter on artificial intelligence.
+
+<P><H2>What is a Computation?</H2>
+
+<P>What kinds of problems can we give to our abstract computers?  In
+automata theory we want to focus our attention on computation itself,
+not on details of input and output devices.  So we won't try creating
+a mathematical model of a video game.
+
+<P>We will play a game, though.  In this game the computer has a rule in mind.
+You type in strings of letters, using only the letters <CODE>A</CODE>, <CODE>B</CODE>, and
+<CODE>C</CODE>.  The computer tells you whether each string follows the rule or
+not.  Your job is to guess the rule.  For example, suppose you have done
+these experiments:
+
+<P><TABLE><TR><TH align="left"><U>accepted</U>
+<TH align="left">&nbsp;&nbsp;&nbsp;&nbsp;<U>rejected</U>
+<TR><TD><CODE>ABC</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>CBA</CODE>
+<TR><TD><CODE>AAA</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BBB</CODE>
+<TR><TD><CODE>ABCABCABC</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BCABCABC</CODE>
+<TR><TD><CODE>A</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BBBBBBB</CODE>
+<TR><TD><CODE>ACCCCCCCCC</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>CAAAAAAAAA</CODE>
+</TABLE>
+
+<P>You might guess, from these examples, that the rule is
+&quot;The string must begin with <CODE>A</CODE>.&quot;  Once you've made a guess you can
+test it out by trying more examples.
+
+<P>The program to play the game is called <CODE>game</CODE>.  It takes one input,
+a number from 1 to 10.  I've provided ten different rules.  Rules 1 to 3
+should be pretty easy to guess; rules 8 to 10 should be nearly impossible.
+(Don't feel too frustrated if you don't get them.)
+
+<P>A string can be any length, including length zero (the empty string).  Each
+time you type a letter the program lets you know whether the string you've
+typed so far obeys the rule.  The program indicates whether the string is
+accepted or rejected by displaying the word <CODE>accept</CODE> or <CODE>reject</CODE> on
+the screen.  In particular, as soon
+as you start <CODE>game</CODE> the program will tell you whether or not the empty
+string is accepted by this rule.  If you type the string <CODE>ABC</CODE> you'll
+really be testing three strings: <CODE>A</CODE>, <CODE>AB</CODE>, and <CODE>ABC</CODE>.  You
+should type one letter at a time to make sure the program has a chance to
+respond to it before going on to the next letter.  To start over again with
+a different string, press the Return key.
+
+<P>You should stop reading now and try the game.  In the following paragraphs
+I'm going to talk about some of the answers, so this is your last
+chance.  After you've figured out at least some of the rules, come
+back to the book.
+
+<P><H2>Finite-State Machines</H2>
+
+<P>The point of studying this game is that we're going to look at a way to design
+a special-purpose abstract computer that understands one particular
+rule.  We can then ask questions about how much information the computer
+needs to handle the job.
+
+<P>You've seen the word <EM>state</EM> before in connection with the Logo
+turtle.  Its state includes its position and its heading.  So one turtle
+state might be &quot;position <CODE>[17 82]</CODE>, heading <CODE>90</CODE>.&quot; In principle,
+the turtle has an <EM>infinite</EM> number of possible states, because its
+position and heading don't have to be integers.  Its position might be <CODE>
+[14.142 14.142]</CODE>, for instance.
+
+<P>Anything that holds information can be in different states.  As another
+example, an on-off light switch has two states.  Some lamps have four states:
+off, low, medium, and high.  A computer, too, has a certain number of states.
+The state of a computer includes all the information in its memory at some
+particular time.
+
+<P>A machine that has only a limited number of states, like the example of the
+light switch, is called a <EM>finite-state machine.</EM>  For almost all of
+this chapter we'll be dealing with finite-state machines.  You might think
+that that imposes a very severe limit on the kinds of computations we can
+do.  But note that in the game I asked you to play, a rule can accept an
+infinite number of possible strings and reject an infinite number of
+others.  The accepted or rejected strings can be of any length.  (Some rules
+restrict the length of a string, but others allow any length at all.)  In
+some sense, a finite-state machine can still perform infinitely varied
+computations.
+
+<P>Consider the third game as an example.  The rule is &quot;Accept
+any string that starts with <CODE>AB</CODE>.&quot;  Here is a picture of a finite-state
+machine that implements that rule:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fsm3.gif" ALT="figure: fsm3"></CENTER>
+
+<P>Each numbered circle represents a state.  This machine has three
+states.  The <CODE>start</CODE> arrow indicates that the machine starts out in state
+1.  State 3 is shown with a <EM>double</EM> circle to indicate that it is an
+<EM>accepting</EM> state.  In other words, when the machine is in state 3 the
+screen says <CODE>accept</CODE>.  The other two states are not
+accepting states.
+Every time you type a character the machine switches from one state to
+another.  The arrow from state 1 to state 2 has an <CODE>A</CODE> next to its
+tail.  This indicates that when the machine is in state 1, an input of <CODE>
+A</CODE> switches it to state 2.  (The arrow from state 3 to itself has the
+three letters <CODE>ABC</CODE> at its tail.  This is a shorthand notation for
+three separate arrows with heads and tails in the same place, one for each
+letter.)
+
+<P>This picture is actually incomplete.  For a full description of the machine
+we have to indicate what happens on any input in any state.  In other words,
+each circle should have <EM>three</EM> arrows coming out from it, one each
+for <CODE>A</CODE>, <CODE>B</CODE>, and <CODE>C</CODE>.  I've chosen to adopt the convention that
+every machine has an unmarked state called <CODE>reject</CODE>.  Any missing arrow
+goes to that state; once the machine is in the reject state it stays
+there forever.  Here, then, is the complete diagram of the machine for game
+3:
+
+<P><CENTER><IMG SRC="fsm3-reject.gif" ALT="figure: fsm3-reject"></CENTER>
+
+<P>From now on I won't draw the <CODE>reject</CODE> state, but you should
+remember that it's really part of the machine description.  So this machine
+requires four states, not three.
+
+<P>If the first input letter isn't <CODE>A</CODE>, the machine goes to the <CODE>reject</CODE>
+state.  If the first letter is <CODE>A</CODE>, the machine goes to state 2.  Then,
+if the second letter is <CODE>B</CODE>, the machine ends up in state 3 and accepts
+the string <CODE>AB</CODE>.  This is the shortest acceptable string.
+
+<P>Each of the three arrows from state 3 loops right back into state
+3 itself.  (Remember, although only one arrow appears in the picture,
+it is labeled with three letters, so officially it represents three
+arrows.)  This means that once the machine is in state 3 it stays
+there no matter what inputs it gets.  Any string that starts <CODE>AB</CODE> is
+acceptable.
+
+<P>Here is a machine for game number 2:
+
+<P><CENTER><IMG SRC="fsm2.gif" ALT="figure: fsm2"></CENTER>
+
+<P>In this machine the <EM>start state</EM> is also an <EM>accepting
+state.</EM>  (Every machine has exactly one start state, but it may have any
+number of accepting states.)  This machine never gets into the <CODE>reject</CODE>
+state.  That doesn't mean it doesn't reject any strings; all odd-length
+strings are rejected in state 2.  But a rejected string can redeem itself by
+adding another input character, so state 2 allows a return to the accepting
+state 1.
+
+<P>Here is a machine for game number 5.  (Notice that I'm saying &quot;a
+machine&quot; and not &quot;the machine&quot;; it is always possible to design
+other machines that would follow the same rule.)
+
+<P><CENTER><IMG SRC="fsm5.gif" ALT="figure: fsm5"></CENTER>
+
+<P>You probably had more trouble discovering rule 5 than rule
+2, and it takes longer to say the rule in English words.  But the
+<EM>machines</EM> for the two rules are almost identical.  (Remember,
+though, that the rule-5 machine really has a third state, the <CODE>reject</CODE>
+state, which is not shown in the diagram.)
+
+<P>Here are machines for rules 7 and 9.  With these machines as hints,
+can you figure out the rules?  Go back to the <CODE>game</CODE> program to test
+your hypotheses.
+
+<P><CENTER><IMG SRC="fsm79.gif" ALT="figure: fsm79"></CENTER>
+
+<P>You should also get some practice translating in the other direction, from
+English rules to machine diagrams.  Here are a couple to work on:  Rule 4 is
+&quot;To be accepted a string must be composed of doubled letters (<CODE>AA</CODE>,
+<CODE>BB</CODE>, and <CODE>CC</CODE>) strung together.&quot; Rule 8 is &quot;To be accepted a
+string must contain an even number of <CODE>A</CODE>s.&quot;
+
+<P><H2>Nondeterministic Machines</H2>
+
+
+<P>Here is rule 6: &quot;To be accepted a string must begin with <CODE>A</CODE> and end
+with <CODE>C</CODE>.&quot; Strings accepted by this rule include <CODE>AC</CODE> (the shortest
+possible), <CODE>ABC</CODE>, <CODE>AACC</CODE>, <CODE>ACAC</CODE>, <CODE>ABCABC</CODE>, and so on.
+Between the initial <CODE>A</CODE> and the final <CODE>C</CODE> an accepted string can
+have any combination of <CODE>A</CODE>s, <CODE>B</CODE>s, and <CODE>C</CODE>s.  It's natural to
+think of the string as having three parts: a fixed beginning, a variable
+middle, and a fixed end.  The three parts of the input strings can be
+represented conveniently with three states in the machine, like this:
+
+<P><CENTER><IMG SRC="fsm6nd.gif" ALT="figure: fsm6nd"></CENTER>
+
+<P>The machine starts in state 1.  To be accepted a string must start
+with <CODE>A</CODE>.  Therefore, an <CODE>A</CODE> arrow leads from state 1 to state 2.  Any
+other input at state 1 leads to the <CODE>reject</CODE> state.
+
+<P>Once the machine is in state 2 it is ready for the middle part of
+the string.  In this middle part any combination of letters is allowed.
+Therefore, there are three arrows from state 2 to itself, one for
+every possible letter.
+
+<P>Finally, a <CODE>C</CODE> arrow leads from state 2 to state 3, signaling the end
+of an acceptable string.  A string must end with <CODE>C</CODE> to be accepted.
+
+<P>There is a problem with this machine:  There are <EM>two</EM> <CODE>C</CODE> arrows
+leading out from state 2.  One is a loop back into state 2; the other
+goes on to state 3.  This situation reflects the fact that <CODE>C</CODE> serves
+two different functions in this rule: <CODE>C</CODE> is an optional part of the
+middle section of the string, and it's also the required final input
+in the string.
+
+<P>A machine with two arrows from the same state for the same input is
+called a <EM>nondeterministic</EM> machine.  Here is how such a machine
+could work:  Whenever there are two choices for the machine's
+current state and input, the machine clones itself.  One of the copies
+follows each arrow.  From then on, if <EM>either</EM> machine is in an
+accepting state the string is accepted.
+
+<P>Nondeterministic finite-state machines are more complicated
+than deterministic ones.  Does the added complexity &quot;buy&quot; any added
+power?  In other words, can a nondeterministic machine solve problems
+that a deterministic machine can't?  It turns out that the answer
+to this question is no.  Deterministic machines are just as powerful
+as nondeterministic ones.  This is an important theorem in automata
+theory.  I'm not going to prove it formally in this book, but to illustrate
+the theorem, here is a deterministic machine that carries out game
+6:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fsm6d.gif" ALT="figure: fsm6d"></CENTER>
+
+<P>This machine is similar to the nondeterministic version.  It has the
+same number of states and some of the connections are identical.
+State 3 is more complicated, though.  Also, in this machine, it is
+no longer the case that each state of the machine corresponds exactly
+to one of three parts of the input string.  Specifically, when the machine is
+in state 3 the string may or may not be finished.
+
+<P><H2>Representing Machines as Logo Lists</H2>
+
+<P>The <CODE>game</CODE> program uses finite-state machines to represent the rules
+by which it accepts or rejects strings.  (The machines must be deterministic
+for the program to work.)  Logo programs can't read circles and arrows,
+so a machine is represented as a list.  What information is actually
+contained in an FSM diagram?  The diagram shows that there are a certain
+number of states (the circles), that there are certain transitions from one
+state to another (the arrows), that one particular state is the start state
+(the start arrow), and that certain states are accepting ones (the double
+circles).  As in any programming project, I could have chosen many different
+ways to represent that information in the program.
+
+<P>In the particular representation I chose, the list form of a machine
+has three members.  The first member is the number of the start state.
+The second member is a list of arrows; each arrow is itself a list,
+as I'll explain in a moment.  The third member of a machine list is
+a list of the accepting states of the machine.  For example, here
+is the machine for game 3 again, in both forms:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fsm3.gif" ALT="figure: fsm3"></CENTER>
+<PRE>[1 [[1 A 2] [2 B 3] [3 ABC 3]] [3]]
+</PRE>
+
+<P>The number <CODE>1</CODE> is the start state; the list <CODE>[3]</CODE> is the
+list of accepting states.  (This machine happens to have only one accepting
+state.)  Everything else is the list of arrows.  Each arrow is also a list
+with three members: the initial state (the tail of the arrow), the input
+letter or letters, and the final state (the head of the arrow).  The first arrow in
+this machine is
+
+<P><PRE>[1 A 2]
+</PRE>
+
+<P>This is the arrow from state 1 to state 2 associated with
+the input <CODE>A</CODE>.
+
+<P>The list <CODE>[3 ABC 3]</CODE> in this machine represents three arrows, using
+the same shorthand as in the circle-and-arrow diagrams.  I could equally
+well have represented these arrows separately:
+
+<P><PRE>[1 [[1 A 2] [2 B 3] <U>[3 A 3] [3 B 3] [3 C 3]</U>] [3]]
+</PRE>
+
+<P>As in the circle-and-arrow diagrams, I haven't explicitly represented the
+transitions to the <CODE>reject</CODE> state in these lists.  The program is
+written so that if it doesn't find a transition for the current state and
+input in the list of transitions, it goes into state number &minus;1, its
+representation for the <CODE>reject</CODE> state.
+
+<P>Here are some more machine lists:
+
+<P><PRE>Game 2:  [1 [[1 ABC 2] [2 ABC 1]] [1]]
+Game 7:  [1 [[1 AB 1] [1 C 2] [2 C 1]] [1]]
+Game 9:  [1 [[1 AB 1] [1 C 2] [2 A 3] [2 B 1] [3 A 1]] [1]]
+</PRE>
+
+<P>At this point you should stop and play with the program.  Make up
+your own rules.  The procedure <CODE>fsm</CODE> takes a machine list as input
+and accepts strings based on that machine.  (<CODE>Game</CODE> uses <CODE>fsm</CODE>
+with particular
+machines as inputs.)  Try out your new rules to make sure you've designed
+the machines correctly.  Then get a friend to play with your rules.
+If both of you are reading this book together you can have a competition.
+(It's easy to design rules that are impossible to guess because there
+are too many details.  If you have a competition you should limit
+yourselves to three states per machine.)
+
+<P>You might be interested in reading through the
+<A HREF="fsm.html#fsm"><CODE>fsm</CODE></A> program, which
+simulates a finite-state machine when given the machine's description
+as its input.  It's a pretty simple program.  If you think of a machine's
+state diagram as a kind of &quot;wiring diagram&quot; that might be used
+in building a real version of that particular machine, this Logo program
+is a kind of <EM>universal</EM> finite-state machine implementation.
+
+<P><H2>Text Editors: a Use for Acceptors</H2>
+
+<P>It may seem to you that accepting or rejecting strings isn't much
+like what you usually do with computers.  You may wonder how this
+mathematical model is related to real computer programming.  There
+are two answers to this question.  One is that it's possible to design
+finite-state machines that have more versatile outputs than simply
+yes or no.  I'll give an example shortly.  But the other answer is
+that there are real situations in which accepting or rejecting a string
+of symbols does come up in practical computation.
+
+<P>One example is in the implementation of programming languages.  When
+you say that
+
+<P><PRE>print 2+2
+</PRE>
+
+<P>is a legal Logo instruction but
+
+<P><PRE>print 2+
+</PRE>
+
+<P>is illegal, you're doing a more complicated version of what
+a finite-state acceptor does.
+
+<P>The <EM>search</EM> command in a good text editor uses
+finite-state machines.  Most text editors have a command that allows
+you to look through a file for a particular string of characters.  Fancier
+editors allow searching not just for one particular string, but for any
+string that follows a rule the user can provide.  The editor finds a string that
+matches the rule using a finite-state machine.  Of course, people who use
+editors don't have to specify their search rules in the <EM>form</EM> of a
+finite-state machine!  The editing program accepts search rules in a simpler
+form and translates them into FSM form.  Here is an example, the notation
+used by <EM>ed,</EM> a standard editor in the Unix operating system.
+
+<P>A string like
+
+<P><PRE>spaghetti
+</PRE>
+
+<P>just matches an identical string in the file you're editing.  A
+slightly more interesting case is
+
+<P><PRE>[Ss]paghetti
+</PRE>
+
+<P>which matches either &quot;Spaghetti&quot; or &quot;spaghetti&quot;
+(with a capital or lower case &quot;s&quot;).  The square brackets indicate that
+<EM>any</EM> of the letters inside the brackets will be accepted.
+In the expression
+
+<P><PRE>[Ss]paghet*i
+</PRE>
+
+<P>the asterisk matches <EM>any number</EM> (including zero) of the
+letter before it (in this case, the letter <CODE>t</CODE>).  This example
+would match any of these:
+
+<P><PRE>Spaghei
+Spaghettttti
+spaghetti
+spagheti
+</PRE>
+
+<P>You might use this in a search command if you're a bad speller!
+The bracket and asterisk can be combined;
+
+<P><PRE>C[AD]*R
+</PRE>
+
+<P>will match any of
+
+<P><PRE>CAR
+CDR
+CADDR
+CR
+</PRE>
+
+<P>Or you could use
+
+<P><PRE>M[is]*p*i
+</PRE>
+
+<P>to match the name of a famous river.
+
+<P>Some of the rules from the game I presented earlier can be represented as
+<EM>ed</EM> search strings according to these rules.  In the first game the
+machine accepted any string made up of <CODE>A</CODE>s and <CODE>B</CODE>s.  The
+corresponding <EM>ed</EM> expression is
+
+<P><PRE>[AB]*
+</PRE>
+
+<P>The third game called for strings beginning with the sequence
+<CODE>AB</CODE>, followed by whatever you like.  This can be represented as
+
+<P><PRE>AB[ABC]*
+</PRE>
+
+<P>Game 10, which I'm sure you didn't solve, accepts any string that
+includes the sequence <CODE>ABCBA</CODE> within it.  In <EM>ed</EM> terms, that's
+
+<P><PRE>[ABC]*ABCBA[ABC]*
+</PRE>
+
+<P>I haven't given you a complete description of the <EM>ed</EM> search rules.
+I included this much only because I want you to see how a &quot;real&quot; program
+uses the idea of finite-state machines.  But in the remaining part of this
+chapter I want to use a different notation based on Logo words and lists.
+
+<P><H2>Regular Expressions</H2>
+
+<P>The notation I'm about to describe allows an acceptance rule, like the rules
+in the <CODE>game</CODE> program or the rules for <EM>ed</EM> searches, to be
+represented in Logo.  The representation of such a rule is called a <EM>
+regular expression.</EM>  I'm going to tell you some rules for what a regular
+expression can look like.  Don't be confused:  Any particular regular
+expression is a rule that accepts strings of letters.  I'm giving you rules
+that accept regular expressions--rules about rules.  As a rough analogy,
+&quot;one player is <CODE>X</CODE> and the other is <CODE>O</CODE>&quot; is a rule about the
+specific game Tic Tac Toe; &quot;each player should have a fair chance to win&quot;
+is a rule about what kinds of game rules are acceptable.
+
+<P> <EM>Alphabet rule.</EM> Any symbol in a machine's
+alphabet is a regular expression.  We represent the symbol as a one-letter
+Logo word.  In our guessing game the alphabet contains three symbols: <CODE>
+A</CODE>, <CODE>B</CODE>, and <CODE>C</CODE>.  So
+
+<P><PRE>B
+</PRE>
+
+<P>is a regular expression.
+
+<P>
+<EM>Concatenation rule.</EM>  A list whose members are regular expressions
+represents those expressions one after another.  For example, since <CODE>A</CODE>
+is a regular expression and <CODE>B</CODE> is a regular expression,
+
+<P><PRE>[A B]
+</PRE>
+
+<P>is a regular expression representing the string <CODE>AB</CODE>.  (Notice
+that the Logo word <CODE>AB</CODE> does <EM>not</EM> represent that string; the
+alphabet rule requires that each letter be represented as a separate word.)
+
+<P>
+<EM>Alternatives rule.</EM>  A list whose first member is the word <CODE>or</CODE> and
+whose remaining members are regular expressions represents any string that
+matches <EM>any</EM> of those expressions.  For example,
+
+<P><PRE>[OR [A A] B]
+</PRE>
+
+<P>matches either the sequence <CODE>AA</CODE> or the single symbol <CODE>B</CODE>.
+As a convenience, a Logo word containing more than one letter (other
+than the word <CODE>or</CODE>) is taken as an abbreviation for the <CODE>or</CODE>ing
+of the individual letters.  For example, <CODE>ABC</CODE> is equivalent to
+<CODE>[OR A B C]</CODE>.
+
+<P>
+<EM>Repetition rule.</EM>  A list containing exactly two members, in which the
+first is the asterisk (<CODE>*</CODE>) symbol and the second is a regular
+expression, represents a string containing any number (including zero) of
+substrings that match the regular expression.  So
+
+<P><PRE>[* [OR [A A] B]]
+</PRE>
+
+<P>matches any of these:
+
+<P><TABLE>
+<TR><TD><CODE>B</CODE>
+<TR><TD><CODE>BB</CODE>
+<TR><TD><CODE>BAAB</CODE>
+<TR><TD><CODE>AAAAAA</CODE>
+<TR><TD><CODE>AABAA</CODE>
+<TR><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(the empty string)
+<TR><TD><CODE>AABBBBBAA</CODE>
+</TABLE>
+
+<P>The number of consecutive <CODE>A</CODE>s must be even for a string of
+<CODE>A</CODE>s and <CODE>B</CODE>s to match this expression.
+
+<P>These four rules constitute the definition of a regular expression.
+It's a <EM>recursive definition.</EM>  Just as the effect of a recursive
+Logo procedure is defined in terms of a simpler case of the same procedure,
+a complex regular expression is defined in terms of simpler ones.
+
+<P>Here are the ten game rules from the beginning of this chapter in
+the form of regular expressions:
+
+<P><P>
+<TABLE><TR><TH align="right">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* AB]</CODE>
+<TR><TH align="right">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [ABC ABC]]</CODE>
+<TR><TH align="right">3.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[A B [* ABC]]</CODE>
+<TR><TH align="right">4.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [OR [A A] [B B] [C C]]]</CODE>
+<TR><TH align="right">5.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [ABC B]]</CODE>
+<TR><TH align="right">6.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[A [* ABC] C]</CODE>
+<TR><TH align="right">7.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [OR A B [C C]]]</CODE>
+<TR><TH align="right">8.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[[* BC] [* [A [* BC] A [* BC]]]]</CODE>
+<TR><TH align="right">9.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[[* AB] [* [C [OR B [A A]]] [* AB]]]</CODE>
+<TR><TH align="right">10.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[[* ABC] A B C B A [* ABC]]</CODE>
+</TABLE>
+
+<P><TD>&nbsp;&nbsp;&nbsp;&nbsp;<P>
+
+<P>You should go through these examples carefully, making sure
+you understand how the regular expression represents the same idea
+as the English description or the machine diagram you saw earlier.
+
+<P><H2>Rules That Aren't Regular</H2>
+
+<P>You may be thinking that <EM>any</EM> rule for accepting or rejecting
+strings of symbols can be represented as a regular expression.  But
+that's not so.  For example, consider the rules for recognizing ordinary
+arithmetic expressions:
+
+<P><TABLE><TR><TH align="left"><U>accepted</U>
+<TH align="left">&nbsp;&nbsp;&nbsp;&nbsp;<U>rejected</U>
+<TR><TD><CODE>2+3</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>23+</CODE>
+<TR><TD><CODE>2*(3+4)</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>2*)3+4(</CODE>
+<TR><TD><CODE>-5</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>/6</CODE>
+</TABLE>
+
+<P>Think for a moment just about the matter of
+balancing parentheses.
+Sometimes you have parentheses within parentheses, as in
+
+<P><PRE>((3+4)/(5+6))
+</PRE>
+
+<P>How would you represent this part of the arithmetic expression
+rule in the form of a regular expression?  You can't just say something like
+
+<P><PRE>[[* (] something-or-other [* )]]
+</PRE>
+
+<P>to mean &quot;any number of open parentheses, something, then
+any number of close parentheses.&quot;  That would allow strings like
+
+<P><PRE>(((7)))))
+</PRE>
+
+<P>But this string should be rejected because it has too many close
+parentheses.  You're not allowed to use a close parenthesis unless you've
+already used a matching open parenthesis.  You can have any number of nested
+parentheses you want as long as they're balanced.
+
+<P>It is possible to invent other kinds of formal notation, more powerful than
+regular expressions, that will allow us to give the rules for well-formed
+arithmetic expressions.  In this section I'll introduce briefly a formal
+notation called <EM>production rules</EM> that's powerful enough to describe
+arithmetic expressions.  For now, in this chapter, I don't want to discuss
+production rules in great detail; my only reason for introducing them at
+this point is to give you a sense of how regular expressions fit into a
+larger universe of possible formal systems.  In the following sections I'll
+have more to say about regular expressions and finite-state machines.  But
+we'll return to production rules in Chapters 5 and 6, in which we'll need
+formal notations with which to discuss more interesting languages than the
+<CODE>A</CODE>-<CODE>B</CODE>-<CODE>C</CODE> language of this chapter.  (In Chapter 5 we'll be
+talking about Pascal; in Chapter 6 we'll take on English.)
+
+<P>The key ingredient that's missing from regular expression notation is a way
+to <EM>name</EM> a kind of sub-expression so that the name can be used in
+defining more complex expressions.  In particular, a sub-expression name can
+be used in its own definition to allow a <EM>recursive</EM> definition of the
+rule.
+
+<P>A production rule has the form
+
+<P><PRE>name      :  expansion
+</PRE>
+
+<P>Each rule is a definition of the name on the left in terms of
+smaller units, analogous to the definition of a Logo procedure in terms
+of subprocedures.  The expansion part of the rule is a string of symbols
+including both members of the &quot;alphabet&quot; of the system (like the alphabet
+that underlies a regular expression language) and names defined by
+production rules.
+
+<P>As an example, here is a set of production rules that defines the language of
+arithmetic expressions.  These rules take into account the &quot;order of
+operations&quot; for arithmetic that you learned in elementary school:
+multiplication before addition.  An expression like
+
+<P><PRE>2/3+1/6
+</PRE>
+
+<P>is ordinarily interpreted as the sum of two <EM>terms,</EM> namely
+two thirds and one sixth.  An expression can be a single term, a sum of
+terms, or a difference of terms.  Here's how that idea is expressed in a set
+of production rules; I'll discuss the notation in more detail in a moment.
+
+<P><CENTER><IMG SRC="xx1.gif"></CENTER>
+
+<P>The vertical bars separate alternatives.  The first rule, the one
+that defines <CODE>expr</CODE>, contains three alternatives.  First, an expression
+can be just a single term.  Second, an expression can be a smaller
+expression plus a term.  Third, an expression can be a smaller expression
+minus a term.  The symbols inside boxes are the members of the alphabet of
+the arithmetic expression language.  (I've put them in boxes to make it
+easier not to confuse them with the punctuation characters--the colons and
+vertical bars--that are part of the production rule notation itself.)
+
+<P>Do you see how parentheses fit in?  If a string like <CODE>4+5</CODE> is an
+expression, then <CODE>(4+5)</CODE> is a factor, so <CODE>3*(4+5)</CODE> is a term,
+and so on.  Since a factor is a kind of term, and a term is a kind of
+expression, the factor <CODE>(4+5)</CODE> can be considered an expression, and
+so it too can be put inside parentheses.  So <CODE>((4+5))</CODE> is also
+acceptable as a factor.
+
+<P><H2>Regular Expressions and Finite-State Machines</H2>
+
+<P>I've hinted at something that I haven't actually made explicit:  Regular
+expressions are equivalent to finite-state machines.  In other words,
+if you can express a rule as a regular expression, you can design
+a finite-state machine that carries out the rule.  If you can't write
+a regular expression for the rule, you can't design a finite-state
+machine either.
+
+<P>You may be thinking, &quot;so what?&quot;  I've introduced two different formal
+notations, finite-state machines and regular expressions, and now I'm
+telling you that the two are equivalent.  So why didn't I just pick one in
+the first place and forget about the other?  I have a general answer and a
+specific answer to these questions.
+
+<P>The general answer is that comparing different formal systems is what
+automata theory is all about.  By the end of this book you'll have been
+introduced to half a dozen or so different formal systems.  Some are more
+powerful than others.  The bare assertion that one formal system is
+equivalent to another, or more powerful than another, isn't very interesting;
+but if we can understand the <EM>reasons</EM> behind those assertions then
+we may be able to put the knowledge to work in practical situations.  At the
+very end of this book, in Chapter 6, we'll talk about a particular formal
+system that's often used in artificial intelligence programs to recognize
+English sentences.  By then you should know enough about formal systems to
+be able to understand why that particular one is a good choice.
+
+<P>The specific answer is that finite-state machines and regular expressions
+are <EM>different</EM> from each other in an interesting way.  A finite-state
+machine is an <EM>algorithm,</EM> a sequence of steps, or a procedure that can
+be followed to test whether some string matches a given rule.  It says,
+&quot;start here, then if this happens do this, then...&quot; just like a procedure
+in Logo or most other programming languages.  (But we've seen that a
+finite-state machine is like a procedure written in a restricted programming
+language that isn't as flexible as Logo.)  A regular expression, though, is
+<EM>not</EM> a sequence of steps.  It's more like a description of the <EM>
+result</EM> that we want, leaving open the precise recipe for how to get there.
+People often pose problems in a similar way.  They call the plumber and say,
+&quot;the drain in my bathtub is backing up.&quot;  Part of the plumber's expertise is
+to be able to translate that <EM>declarative</EM> problem statement into a
+<EM>procedural</EM> form, a sequence of steps needed to clear up the problem.
+An early stumbling block in artificial intelligence research was the seeming
+gulf between the procedural knowledge embodied in a computer program and the
+declarative knowledge needed for human-like behavior.  Recently people have
+invented <EM>declarative programming languages</EM> (the best known
+is Prolog, but any commercial spreadsheet program is also
+in this category) that
+allow the user to state a problem in declarative form.  The programming
+language interpreter then automatically translates this problem statement
+into a sequence of steps for the computer to perform.
+
+<P>Writing a Prolog interpreter raises many issues beyond the scope of this
+book.  But we can take a smaller step in the realm of translation from
+a declarative notation to a procedural one.  I've written a Logo program,
+listed at the end of the chapter, that translates from a regular
+expression to an equivalent finite-state machine.  Its top-level procedure,
+<CODE>machine</CODE>, takes a regular expression as input and outputs a machine
+list in the format I showed earlier.
+
+<P><H2>How to Translate</H2>
+
+<P>The general claim that regular expressions are equivalent in power
+to finite-state machines is called Kleene's Theorem, named after the
+mathematician Stephen C. Kleene, its discoverer.  You can find a proof
+of this theorem in any textbook on automata theory.  I'm not going
+to give a proof here, but I'll indicate how the translation is done
+in my program.  The same kinds of ideas are used in the proof.
+
+<P>Remember that there are four parts to the definition of a regular expression.
+The alphabet rule provides the fundamental building blocks; the
+concatenation, alternatives, and repetition rules build large regular
+expressions recursively out of smaller ones.  The translation process
+follows the same pattern:  We start with a procedure to build a trivial
+two-state machine that only accepts a single letter, then we add three
+rules for combining smaller machines into a large machine.  In the following
+paragraphs I'll show how each rule is reflected in the
+<A HREF="fsm.html#machine"><CODE>machine</CODE></A> program.
+
+<P>This construction process often produces machines with more states than
+necessary.  The <CODE>machine</CODE> program eliminates redundant states as its
+final step.
+
+<P>The alphabet rule says that any member of the machine's alphabet is
+a regular expression.  In the program, a symbol can be any one-letter word other
+than <CODE>*</CODE>.  The symbol <CODE>X</CODE> is translated into the machine
+
+<P><PRE>[1 [[1 X 2]] [2]]
+</PRE>
+
+<P>(You'll see that the program works by combining little machines
+into bigger ones.  Every time the program has to invent a new machine
+state it uses the next free number.  So the state numbers might not
+be 1 and 2 in a real example.)  The procedure
+<A HREF="fsm.html#ndletter"><CODE>ndletter</CODE></A> handles this
+rule.
+
+<P>Next comes the <EM>concatenation rule.</EM>  The regular expression
+
+<P><PRE>[A B]
+</PRE>
+
+<P>matches a string with two parts; the
+first substring matches the <CODE>A</CODE> and the second matches the <CODE>
+B</CODE>.  In this simple example each &quot;substring&quot; matches only a single
+letter.  In a more complicated concatenation like
+
+<P><PRE>[[OR A C] [* B]]
+</PRE>
+
+<P>there are different choices for each substring.  For example, that
+regular expression is matched by the string
+
+<P><PRE>CBBB
+</PRE>
+
+<P>in which the letter <CODE>C</CODE> matches the first part of the
+expression and the substring <CODE>BBB</CODE> matches the second part.
+
+<P>To translate a regular expression of this kind (a concatenation) into a
+finite-state machine, we begin by recursively translating the subexpressions
+into smaller machines.  Then we have to &quot;splice&quot; the two machines together.
+Procedure <A HREF="fsm.html#ndconcat"><CODE>ndconcat</CODE></A> does this splicing.
+
+<P>We'll begin with the simplest possible example.  Suppose we want to
+translate the regular expression
+
+<P><PRE>[A B]
+</PRE>
+
+<P>We have already translated the two symbols <CODE>A</CODE> and <CODE>B</CODE> into
+machines:
+
+<P><CENTER><IMG SRC="concat-before.gif" ALT="figure: concat-before"></CENTER>
+
+<P>The combined machine must start at the start state of the first
+component machine, state 1.  The combined machine should be in an accepting
+state when <EM>both</EM> component machines have been satisfied; in other
+words, the accepting states of the combined machine should be those of the
+<EM>second</EM> component machine.  In this case that means only state 4.
+
+<P>To splice the component machines together we must add transitions (arrows)
+between them.  Specifically, whenever the first component machine gets into
+an accepting state, the combined machine should follow the same transitions
+that apply to the start state of the second component machine.  In this
+case, when the combined machine gets into state 2 (the accepting state of
+the first component machine) it should follow the same transitions that
+apply to state 3 (the start state of the second machine).  There is only one
+such transition, a <CODE>B</CODE> arrow into state 4.  That means we must add the
+arrow
+
+<P><PRE>[2 B 4]
+</PRE>
+
+<P>to the combined machine.
+
+<P><CENTER><IMG SRC="concat-after.gif" ALT="figure: concat-after"></CENTER>
+
+<P>State 3, although it is still in the machine, is now useless.
+There is no way for the machine to get into state 3.  Later
+in the translation process another procedure removes
+such &quot;orphaned&quot; states from the machine.
+
+<P>As a slightly more complicated example, consider the translation of the
+regular expression
+
+<P><PRE>[[OR A C] [* B]]
+</PRE>
+
+<P>We start by supposing that we've already translated the two
+subexpressions separately:
+
+<P><CENTER><IMG SRC="concat2-before.gif" ALT="figure: concat2-before"></CENTER>
+
+<P>(We haven't yet discussed the alternatives rule or the repetition
+rule, so I haven't yet explained how these subexpressions are translated.
+For now, please just take on faith that this picture is correct.  We'll get
+to those other rules shortly.)
+
+<P>The start state of the combined machine is the start state of the first
+component, state 1.  At every accepting state of the first machine we must
+duplicate the transitions from the start state of the second machine.  In
+this example the start state of the second machine has only the transition
+
+<P><PRE>[4 B 5]
+</PRE>
+
+<P>but there are two accepting states in the first machine, so we
+must add two new arrows:
+
+<P><PRE>[2 B 5]    [3 B 5]
+</PRE>
+
+<P>A final detail is that in this example the start state of the
+second component machine, state 4, is an accepting state.  That means that
+the second substring can be empty.  Therefore the accepting states of the
+first component machine should also be accepting states of the combined
+machine.  Here is the result:
+
+<P><CENTER><IMG SRC="concat2-after.gif" ALT="figure: concat2-after"></CENTER>
+
+<P>Again, state 4 is now an &quot;orphan&quot; and will be eliminated
+later in the program.
+
+<P>The <EM>alternatives rule</EM> combines two machines in parallel, so to speak,
+rather than in series.  It works by inventing a new state
+that becomes the start state of the combined machine.  Arrows leaving
+from the new state duplicate the arrows from the start states of the
+component machines.  Procedure <A HREF="fsm.html#ndor"><CODE>ndor</CODE></A> handles this rule.
+
+<P>As an example, here is the translation process for
+
+<P><PRE>[OR A B]
+</PRE>
+
+<P>(or its abbreviation <CODE>AB</CODE>).  We start with two separate machines:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/alter-before.gif" ALT="figure: alter-before"></CENTER>
+
+<P>We combine them by inventing a new state 5:
+
+<P><CENTER><IMG SRC="alter-after.gif" ALT="figure: alter-after"></CENTER>
+
+<P>I haven't explained all the details of the construction process.
+For example, should the new state, state 5, be an accepting state?  In this
+example it shouldn't be.  See if you can think of a case where it might be;
+then read the program listing to see the exact algorithm that makes this
+decision.  Again, this construction process may leave unused states for
+later cleanup.
+
+<P>A much more serious problem is that an <CODE>or</CODE> construction is likely to
+produce a nondeterministic machine.  For example, here is the machine
+for
+
+<P><PRE>[OR [A B] [A C]]
+</PRE>
+
+<P><CENTER><IMG SRC="or-nondet.gif" ALT="figure: or-nondet"></CENTER>
+
+<P>Like the unused states, the problem of nondeterminism is
+left for the end of the program, when procedure <CODE>determine</CODE> translates
+the nondeterministic machine into a deterministic one.
+(The concatenation rule can also make nondeterministic machines, although
+it's not as likely.)
+
+<P>The final case to be considered is the <EM>repetition rule.</EM>  This rule
+acts on only one smaller machine, not two machines as in the previous
+two cases.  The rule doesn't require any new states.  It has two effects.
+One is to add the start state to the list of accepting states.  The
+second is to add arrows from the (old) accepting states that mimic
+the arrows from the start state.  (This is exactly like the splicing
+of two machines in the concatenation rule, but in this case we concatenate
+a single machine with itself!)  Procedure <A HREF="fsm.html#ndmany"><CODE>ndmany</CODE></A>
+makes this transformation.
+It, too, can result in a nondeterministic machine.
+
+<P>Here is an example of the rule:
+
+<P><CENTER><IMG SRC="repetition.gif" ALT="figure: repetition"></CENTER>
+
+<P>These four rules are combined by <A HREF="fsm.html#nondet"><CODE>nondet</CODE></A>,
+a procedure whose input is
+a regular expression and whose output is a (possibly nondeterministic) machine.
+
+<P><PRE>to nondet :regexp
+if and (wordp :regexp) (equalp count :regexp 1) [output ndletter :regexp]
+if wordp :regexp [output ndor reduce &quot;sentence :regexp]
+if equalp first :regexp &quot;or [output ndor butfirst :regexp]
+if equalp first :regexp &quot;* [output ndmany last :regexp]
+output ndconcat :regexp
+end
+</PRE>
+
+<P>The top-level procedure <A HREF="fsm.html#machine"><CODE>machine</CODE></A>
+does a little initialization
+and then does its work with the instruction
+
+<P><PRE>output optimize determine nondet :regexp
+</PRE>
+
+<P>That is, first it creates what may be a
+nondeterministic machine,
+then if necessary it translates that into a deterministic one (eliminating
+orphan states in the process), then it gets
+rid of any redundant states that may have been created.
+
+<P><H2>Making the Machine Deterministic</H2>
+
+<P>In the first volume of this series we explored the techniques of depth-first
+and breadth-first tree traversal.  Given a tree structure, these algorithms
+allow us to &quot;visit&quot; every node of the tree once.
+
+<P>A finite state machine can be viewed as a structure almost like a tree.
+The machine's start state corresponds to the root node; the states that
+can be reached by an arrow from a given state are the children of that state.
+But there is one important difference between trees and machines:  In a tree,
+every node (except for the root node) has exactly one parent.  The tree
+search algorithms depend on that fact to ensure that each node is visited
+only once.  In a machine, arrows from several different states can lead to
+the same state, so a state may have several &quot;parents.&quot;  The technical name
+for an arbitrary collection of nodes with connections among them is a
+<EM>graph.</EM>  If the connections are one-way, as in the finite
+state machine diagrams, it's called a <EM>directed graph.</EM>
+
+<P>Searching a graph is just like searching a tree, except that we have to
+keep track of which nodes we've already visited, to avoid examining the
+same node twice.  Procedure <A HREF="fsm.html#determine"><CODE>determine</CODE></A>
+creates a list named <CODE>states</CODE>, initially
+empty, into which each state number is added as the
+program examines that state.  The depth first traversal of the machine
+is carried out by procedure <A HREF="fsm.html#nd.traverse"><CODE>nd.traverse</CODE></A>;
+although this procedure looks different from the
+<A HREF="../v1ch14/v1ch14.html#depth.first"><CODE>depth.first</CODE></A>
+procedure in Volume 1, it
+uses the same basic algorithm.  Given a state as input, it processes
+that state and invokes itself recursively for all of the children of
+that state--the states reachable by arrows from the input state.  Unlike
+<CODE>depth.first</CODE>, though, <CODE>nd.traverse</CODE> is an operation.  It
+outputs a new list of moves (arrows) for the deterministic version of
+the machine.
+
+<P>What does it mean to process a state?  <CODE>Nd.traverse</CODE> first checks
+whether this state has already been processed; if so, it outputs an empty
+list, because this state will contribute no new moves to the machine.
+Otherwise, it remembers this state number as having been processed, finds
+all the moves starting from this state, and calls
+<A HREF="fsm.html#check.nd"><CODE>check.nd</CODE></A> to look for
+nondeterminism.  <CODE>Check.nd</CODE> takes the first available arrow whose tail
+is at the state we're processing, and looks for all arrows with the same
+tail and with the same letter.<SUP>*</SUP>
+The local variable <CODE>heads</CODE> will contain a list of all the state numbers
+reachable by these arrows.  (The state numbers are sorted into increasing
+order, and duplicates eliminated.  If the machine has two completely
+identical arrows, that doesn't result in nondeterminism.)
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>By the way, <CODE>nondet</CODE> always
+creates arrows with only a single letter; if two or more letters lead from
+the same state to the same state, a separate arrow is created for each of
+them.  This makes for a longer machine list, but makes steps like this
+one--looking for two arrows with the same letter--easier.  Once the
+deterministic machine has been created, procedure <CODE>optimize</CODE> will combine
+such arrows into the abbreviated form with
+more than one letter per arrow.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>There are
+three cases for what <CODE>check.nd</CODE> must do.  First, if there is
+only one state number in <CODE>:heads</CODE>, then there is no nondeterminism for
+this letter, and <CODE>check.nd</CODE> includes the arrow from the original
+machine as part of the deterministic machine.  Second, if there is more
+than one state number, <CODE>check.nd</CODE> looks to see if we've already seen
+the same combination of result states.  If so, then we've already created
+a new state equivalent to that combination of old states, and <CODE>check.nd</CODE>
+creates a new arrow pointing to that existing new state.  Finally, the third
+case is that this combination of states is one we haven't seen before.  In
+that case, <CODE>check.nd</CODE> must create a new state, with arrows duplicating
+those from all of the original states.
+
+<P>In other words, if there are arrows
+
+<P><PRE>[[3 B 4] [3 B 7]]
+</PRE>
+
+<P>then <CODE>check.nd</CODE> will invent a new state that is an &quot;alias&quot;
+for &quot;four-and-seven.&quot;  If the same machine also contains arrows
+
+<P><PRE>[[8 C 4] [8 C 7]]
+</PRE>
+
+<P>then <CODE>check.nd</CODE> will use the <EM>same</EM> alias state for this
+pair, not inventing a new one.  The new
+state is given arrows matching those of all its component states (4
+and 7 in this example).  The new state might itself contain a nondeterministic
+branch, but that's okay because the new state will eventually be processed
+as we continue to traverse the machine graph.
+
+<P>You might think that this process could go on forever: that each new
+state <CODE>check.nd</CODE> invents will turn out to include nondeterminism, which
+will require yet another new state to resolve.  Fortunately, that
+doesn't happen; the process does always end eventually.  (In the next
+chapter we'll see what the limit is on the number of necessary states
+for the deterministic machine.)
+
+<P>Because <CODE>determine</CODE> uses a graph traversal algorithm to examine
+the original machine's states, it will never find &quot;orphan&quot; states
+that can't be reached by arrows from some other state.  That's why
+the process of making the machine deterministic also eliminates orphan
+states, with no extra effort.
+
+<P><H2>Eliminating Redundant States</H2>
+
+<P>The machines produced by <CODE>determine</CODE> are runnable, but often ugly;
+they contain many more states than necessary.  Procedure
+<A HREF="fsm.html#optimize"><CODE>optimize</CODE></A>
+eliminates many redundancies and also combines arrows with the same
+head and tail but with different letters.
+First it goes through the machine's arrow list,
+creating a list for each state representing the exits from that state:
+
+<P><CENTER><IMG SRC="optimize.gif" ALT="figure: optimize"></CENTER>
+<PRE>   [[* [A B]] C]
+State 1: [[A 2] [C 4]]
+State 2: [[B 3]]
+State 3: [[A 2] [C 4]]
+State 4: []
+</PRE>
+
+<P>In this machine, states 1 and 3 have the same exit list.
+(In these lists, each arrow is represented with only two members; the
+arrow's tail is not included.  That's because states 1 and 3 would <EM>
+not</EM> have identical lists if the tails were included.  State 1's list
+would be
+
+<P><PRE>[[1 A 2] [1 C 4]]
+</PRE>
+
+<P>and state 3's list would have arrows starting with 3.  In the
+program, the two-member form of an arrow is called a <EM>stub.</EM>)
+
+<P>The program must be careful about the order in which it puts stubs
+in each state's list, so it doesn't end up with
+
+<P><PRE>[[C 4] [A 2]]
+</PRE>
+
+<P>for one of the states.  That's why <A HREF="fsm.html#stub.add"><CODE>stub.add</CODE></A>
+takes trouble
+to insert each stub in a well-defined position, rather than just adding
+each new stub at the beginning or end of the list.  It's also in
+<CODE>stub.add</CODE> that arrows connecting the same two states but with different
+letters are combined into a single arrow.
+
+<P>Since states 1 and 3 also agree in their acceptingness (namely they aren't
+accepting states), they can be combined into one state.  <CODE>
+Optimize.state</CODE> can replace every reference to state 3 with a reference to
+state 1.
+
+<P><H2>A Finite-State Adder</H2>
+
+
+<P>I promised earlier to show you a use for finite-state machines other
+than accepting or rejecting strings.  In this section I'll fulfill
+that promise by designing a machine to add two numbers.  We'll represent
+the numbers in binary notation, in which each digit represents a power
+of 2 instead of a power of 10.
+
+<P>If you've come across binary numbers before, you can skip this paragraph.
+Just as the ordinary notation for numbers is based on the ten digits 0 to 9,
+binary notation is based on <EM>two</EM> digits, 0 and 1.  In ordinary
+(&quot;decimal&quot;) notation, the amount that each digit contributes to the total
+depends on where it is in the number.  For example, in the number 247, the
+digit 2 contributes two hundred, not just two, because it's in the third
+position counting from the right.  Each digit's contribution is the value of
+the digit itself multiplied by a power of ten:
+<P><CENTER>2&times;10<SUP><SMALL>2</SMALL></SUP>
++ 4&times;10<SUP><SMALL>1</SMALL></SUP>
++ 7&times;10<SUP><SMALL>0</SMALL></SUP></CENTER><P>
+(10<SUP><SMALL>2</SMALL></SUP> is 100; 10<SUP><SMALL>1</SMALL></SUP> is 10; 10<SUP><SMALL>0</SMALL></SUP> is just 1.)  In binary, the
+contribution of each digit is multiplied by a power of <EM>two,</EM> so the
+binary number 10101 represents
+<P><CENTER>1&times;2<SUP><SMALL>4</SMALL></SUP>
++ 0&times;2<SUP><SMALL>3</SMALL></SUP>
++ 1&times;2<SUP><SMALL>2</SMALL></SUP>
++ 0&times;2<SUP><SMALL>1</SMALL></SUP>
++ 1&times;2<SUP><SMALL>0</SMALL></SUP></CENTER><P>
+which is 16+4+1 (2<SUP><SMALL>4</SMALL></SUP>+2<SUP><SMALL>2</SMALL></SUP>+2<SUP><SMALL>0</SMALL></SUP>) or 21.  Computers use binary notation
+because it's easy to build electrical circuits in which each wire is either
+on or off.  In Chapter 2 we'll talk about an example.  Right now I want to
+show something different--not an actual electronic machine but an abstract
+machine based on the ideas we've been using in this chapter.
+
+<P>The machine will add two binary numbers, one digit position at a time, just
+the way you add multi-digit numbers yourself.  When you see a problem like
+<P><CENTER><TABLE><TR><TD align="right">376
+<TR><TD align="right"><U>+572</U></TABLE></CENTER><P>
+you start at the right and say, &quot;6 plus 2 is 8; 7 plus 7 is 14, which is
+4 carry 1; 1 plus 3 plus 5 is 9.&quot;  The finite-state adder works the same
+way except that the digits are always 0 or 1.
+
+<P>The machine will add any numbers, but to explain how it works I want to
+consider a specific example.  Let's say we want to add 52 and 21.  (By the
+way, I didn't pick these numbers because they name card games, but because
+the pattern of digits in their binary forms is convenient for the
+explanation I want to give.)  52 in binary is 110100 (32+16+4) and 21 is
+10101 (16+4+1).  I'm going to write these one above the other, with a couple
+of extra zeros on the left to leave room for a possible carry:
+
+<P><PRE>          0 0 1 1 0 1 0 0
+          0 0 0 1 0 1 0 1
+</PRE>
+
+<P>Remember how a finite-state machine works:  At a given moment it's
+in some <EM>state,</EM> then it reads some <EM>input</EM> symbol and goes to
+another state.  In this problem, since we have two numbers to add, the most
+natural way to think about it would be to give the machine <EM>two</EM> inputs
+at a time.  This idea doesn't quite fit in with the formal definition of a
+finite-state machine, but we can let the machine's &quot;alphabet&quot; consist of
+<EM>pairs</EM> of digits, so something like <CODE>01</CODE> would be a single input.
+(By the way, the word <EM>bit</EM> is commonly used as an abbreviation for
+&quot;binary digit.&quot;)  Just as you added vertical pairs of digits (first 6 and 2,
+then 7 and 7, and so on) in the earlier example, we'll use vertical pairs of
+bits as the inputs to the finite-state adder, starting from the right end.
+So the first input will be 01, then 00, then 11, then 00, then 11 again,
+then 10, and then 00 twice.  From now on, in this section, when you see
+something like 10 you should remember that it is a <EM>single</EM> input to
+the finite-state machine, a single symbol, not two in a row.
+(In the diagram below, an arrow labeled <CODE>01/10</CODE> represents two
+arrows, one for the input <CODE>01</CODE> and one for the input <CODE>10</CODE>.  These
+two arrows will always go to the same state because 0+1=1+0.)
+
+<P>We need to make one change in the notation used in machine diagrams.
+We no longer want to mark each state as accepting (double circle)
+or rejecting (single circle).  Instead, each state produces an <EM>
+output</EM> that can be any arbitrary symbol.  In this machine the outputs
+will be 0 or 1, representing the binary digits of the sum.  Inside
+each state circle, instead of just a state number you'll see something
+like &quot;3/1&quot;; this means that it's state number 3 and that the output
+from that state is 1.
+
+<P>Here is the machine:
+
+<P><CENTER><IMG SRC="fsm-add.gif" ALT="figure: fsm-add"></CENTER>
+
+<P>State 1, the start state, has no output.  When the machine is in start
+state it hasn't seen any digits of the addends yet, so it can't compute
+a digit of the sum.  States 2 and 4 output a zero digit, while states
+3 and 5 output a one.  (Like the inputs, the number that the machine
+outputs is presented with its rightmost bit first.  The machine works
+this way for the same reason that <EM>you</EM> add numbers from right
+to left:  That's the direction in which a &quot;carry&quot; digit moves from
+one column to another.)
+
+<P>Why are there <EM>two</EM> zero-output states and <EM>two</EM> one-output
+states?  The reason is that the machine is in state 4 or 5 when there
+is a carry into the next digit of the sum.
+
+<P>Let's trace through my example.  We start in state 1.  The first input
+symbol is 01, representing a 0 in the rightmost (binary) digit of 52
+and a 1 in the rightmost digit of 21.  The machine enters state 3
+and outputs a 1.
+
+<P>The next input is 00 because both numbers have zero as the second
+digit.  The machine enters state 2 and outputs 0.
+
+<P>The next input is 11.  The machine enters state 4 and outputs 0.  Being in
+state 4 means that there is a carry from this position into the next.
+
+<P>You can finish the example yourself.  The sum should be 01001001,
+or 73.
+
+<P><H2>Counting and Finite-State Machines</H2>
+
+<P>Earlier we saw that you can't write a regular expression for a rule
+that requires balanced parentheses.  Since regular expressions are
+equivalent to finite-state machines, you won't be surprised to learn
+that finite-state machines can't count.
+
+<P>
+Actually, they can count up to a point; it's just that each finite-state
+machine can only count up to a fixed limit.  For example, here is
+a finite-state machine that accepts strings of balanced parentheses
+up to four deep:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fourdeep.gif" ALT="figure: fourdeep"></CENTER>
+
+<P>This machine will accept strings like these:
+
+<P><PRE>          ()        (())      ()()
+          (()())    (((())))  (((())))(())
+</PRE>
+
+<P>There is no limit to the <EM>length</EM> of the string this
+machine can handle.  For example, it will accept this:
+
+<P><PRE>          ()()()()()()()()()()()()()()
+</PRE>
+
+<P>But there can be no more than four parentheses open <EM>
+at once</EM>; the machine will reject
+
+<P><PRE>          ((((()))))
+</PRE>
+
+<P>Even this limited counting ability of finite-state machines is of great
+practical value.  Real computers, after all, are finite-state
+machines.  Any real computer has a finite amount of memory, and this
+memory can be in a finite number of states.  But the number is quite
+huge.  If a real computer includes a parenthesis-counting program
+that is limited to, say, 20,000 levels of parentheses, nobody will
+ever notice that the limit isn't infinite.
+
+<P>(The number of states in a real computer may be even larger than you're
+thinking.  Each bit of computer memory isn't a state.  Instead, if
+a computer has <EM>n</EM> bits of memory it has 2<SUP><SMALL>n</SMALL></SUP> states!  For
+example, a computer with three bits of memory can use those bits to
+represent <EM>eight</EM> states:
+
+<P><PRE>0 0 0
+0 0 1
+0 1 0
+0 1 1
+1 0 0
+1 0 1
+1 1 0
+1 1 1
+</PRE>
+
+<P>The number of possible states in a typical large computer
+is greater than the number of atoms in the galaxy.)
+
+<P>In a moment I'm going to talk about a theoretical model of a machine
+with infinite memory.  You might wonder why it pays to study such
+machines, since any real machine has to be limited in memory.  The
+answer has to do with my example about the 20,000 levels of parentheses.
+It is theoretically possible to write a regular expression for such
+strings.  To show you how it's done, here is a regular expression
+for up to three levels:
+
+<P><CENTER><IMG SRC="xx2.gif"></CENTER>
+
+<P>(I've drawn boxes around the actual alphabet-rule symbols just to
+make it a little easier for you to distinguish between the parentheses,
+which are symbols in the input strings, and the brackets, which are part of
+the glue that holds a regular expression together.)
+
+<P>There is no theoretical problem about extending this regular expression
+to allow up to 20,000 parentheses.  But a machine based on this technique
+would be very large and complicated.  Instead, it makes more sense to
+<EM>pretend</EM> that the computer has an infinite amount of memory available
+and use a formal system (like the production rules I mentioned briefly)
+that depends on an infinite memory.  Such a formal system leads to
+a shorter, more elegant expression of the balanced parentheses rule.
+In practice, we can provide enough memory for any of the strings our
+program will actually meet.
+
+<P><H2>Turing Machines</H2>
+
+<P>One way we might explore infinite machines is to imagine that they're
+represented by state diagrams, like those of finite-state machines,
+but with an infinite number of states.  For example, here is a picture
+of an infinite-capacity parenthesis counter:
+
+<P><CENTER><IMG SRC="waydeep.gif" ALT="figure: waydeep"></CENTER>
+
+<P>The trouble with this idea is that it's hard to model precisely what's
+meant by that row of dots on the right.  There's no way we can have
+a <EM>complete</EM> formal description of an infinitely complex machine.
+
+<P>Instead, consider what <EM>you</EM> do when you have to solve a problem
+too complex to fit in your own memory.  You don't build yourself a
+bigger brain; you get a pencil and some paper.  That is, you use <EM>
+external</EM> storage.  You can imagine that your brain is a finite-state
+machine but that it has access to an infinite supply of paper.
+
+<P>Of course, this division of a problem's necessary information into
+a finite <EM>internal</EM> state and an infinite <EM>external</EM> memory
+also models actual computers in an obvious way.  The internal state
+in the model represents the internal memory of the computer, while
+the external memory in the model represents such storage devices as
+disks and tapes.  To solve a bigger problem you don't have to buy
+a bigger computer; you just have to switch floppy disks occasionally.
+
+<P>You might think that the mathematical model I'm talking about was
+based on the analogy with real computers and that my story about the finite-state
+brain is just a coincidence.  But in fact this model was invented
+by Alan M. Turing in 1936, before there were any computers!  It was
+<EM>human</EM> problem-solving that Turing wanted to model with a machine.
+
+<P>What is a Turing machine?  Start by imagining a finite-state machine
+with different possible outputs, like the adder we saw earlier.  Attached
+to this machine is a tape of limitless length.  Symbols from some
+alphabet, like the machine's input and output symbols, can be written
+on the tape.  There is a reading and writing mechanism, like the heads
+of a magnetic tape recorder, that can travel along the tape.
+
+<P>Just as each state of the machine can have an output associated with
+it, each state can also take action to affect the tape:  It can move
+the head by one symbol in either direction and it can change the
+symbol at the head's current position.
+
+<P>In fact, we simplify the formal description of the machine by
+using the tape as the input/output device as well as the storage device.
+That is, we can start with some sequence of symbols already written
+on the tape.  That sequence serves as the input to the machine; state
+transitions are based on the symbol under the tape head, not a symbol
+from some other source.  Likewise, the output from a state (if any)
+is written on the tape.
+
+<P>Somewhat analogous to the concept of an accepting state in our earlier
+examples, a Turing machine can have <EM>halting</EM> states.  When the
+machine enters a halting state it stops its operation.  There are
+no more state transitions.  The output from the machine is whatever
+sequence of symbols it leaves written on the tape.
+
+<P><H2>Turing's Thesis</H2>
+
+
+<P>Turing invented his abstract machine because he was trying to formalize
+the idea of an <EM>effective procedure</EM>:  What does it mean to specify
+a technique for solving some problem well enough that we can be sure
+it will really work?  As an analogy, think about directions for driving
+from here to somewhere.  Someone can hand you a piece of paper with
+a list of instructions like &quot;When you get to the gas station
+on the left, turn right.&quot;  But sometimes you get directions that
+weren't careful enough.  There may be a sharp right turn and a mild
+right turn available near the gas station.  There may be a fork in
+the road before you even get to the gas station.
+
+<P>Turing's idea is that any problem for which there is <EM>any</EM> effective
+procedure can be modeled by a Turing machine.  The phrase &quot;any effective
+procedure&quot; is taken to include the workings of the human mind.  If
+Turing is right, any problem that a person can solve can be programmed
+for a computer.
+
+<P>This claim isn't something that can be proved or disproved mathematically
+because there is no prior formal definition of &quot;effective procedure&quot;
+to which Turing machines can be compared.  Also, it may be that the
+idea of a procedure somehow doesn't cover all the different kinds
+of thinking that people do.  Maybe it's true, for example, that computers
+are potentially as powerful as people at solving problems, but &quot;solving
+problems&quot; might not turn out to be an appropriate description of
+what's going on when we feel emotions.  If that turned
+out to be true, we <EM>should</EM> expect a computer to become the world's
+chess champion someday, but we <EM>shouldn't</EM> expect one to become
+the world's champion poet.
+
+<P>But this possible conclusion has been attacked from both sides.  Some
+people think that emotions really <EM>are</EM> a matter of computable
+procedures.  Kenneth Colby's program called Parry attempts to model
+the behavior of a paranoid human being by manipulating variables
+for emotions like anger and fear.  On the other hand, some people
+think that even chess doesn't fall within the realm of things that
+people do by carrying out effective procedures in Turing's sense.
+A chess master, these people say, doesn't analyze the chess board
+in a step-by-step fashion like a computer.  He looks at the board
+as a single, whole entity, and the important features just spring
+to mind by some process that is still rather mysterious.
+
+<P>What <EM>is</EM> known is that several other mathematical models of effective
+procedures have been shown to be equivalent to Turing machines, in
+the same sense in which regular expressions are equivalent to finite-state
+machines.  For example, all of the popular programming languages are
+Turing-equivalent.  There's no such thing as a computation that can
+be done in Logo but not in Pascal, or vice versa.  (Of course, one
+language may be more <EM>convenient</EM> than another for a given problem.)
+
+<P><H2>The Halting Theorem</H2>
+
+
+<P>I'm not going to get into specific examples of Turing machine programming
+here.  That would take too much space for a single chapter; if you're
+interested you should pursue the topic in a book on automata theory.
+But I want to give one example of the theoretical value of Turing machines.
+
+<P>You've undoubtedly had the experience of writing a Logo program with a bug
+that causes an &quot;infinite loop&quot;--you run the program and it just sits there
+forever, when instead it's supposed to compute and print some results.
+That's a frustrating kind of bug because you're never quite sure if the
+program is really broken or if it's just very slow.  Maybe if you waited
+another minute it would come up with the answer.  Wouldn't it be great if,
+when you started the program running, Logo could print an error message like
+<CODE>This program has an infinite loop</CODE>, just as it does for other errors?
+
+<P>It turns out that infinite loops can't, in general, be detected
+automatically.  Certainly <EM>some</EM> infinite loops are very easy to spot,
+and we can write programs that catch certain categories of infinite loop.
+But we can't write a program that's <EM>guaranteed</EM> to catch infinite
+loops in programs, in Logo or any other Turing-equivalent language.  The
+fact that it's impossible is called the <EM>halting theorem.</EM>
+
+<P>It's a little tricky understanding just what the halting theorem says because
+it involves Turing machines that manipulate Turing machines as data, which
+is a kind of self-reference akin to recursion.  Self-reference is always hard
+to talk about and can lead to paradoxes like the classic &quot;This statement
+is false.&quot; (Is the sentence in quotes true or false?  If it's true, then it
+must be false, because it says so.  But if it's false, and it <EM>says</EM>
+it's false, it must really be true!)  So let's proceed carefully.
+
+<P>The data recorded on a Turing machine's tape is a string of symbols.
+Generally we choose the symbols to represent something meaningful; for
+example, a string of digits can represent a number.  Earlier in this chapter
+we used strings of symbols like
+
+<P><PRE>[1 [[1 A 2] [2 B 3] [3 A 2]] [1 3]]
+</PRE>
+
+<P>to represent a finite-state machine.  There's no reason we
+couldn't put <EM>that</EM> string of symbols on the tape of a Turing machine
+as its input.  For example, we could build a Turing machine that would work
+like my <CODE>fsm</CODE> program, simulating the finite-state machine that it found
+written on its tape when it started.
+
+<P>Letting a Turing machine simulate a finite-state machine doesn't raise
+questions of self-reference.  But a Turing machine, too, is a formal
+structure; it, too, can be represented as a string of symbols.
+
+<P>Because a representation of a Turing machine can be the input to another
+Turing machine, we can design Turing machines that answer questions about
+Turing machines.  For example, we can write a <EM>universal</EM> Turing
+machine, one that simulates any Turing machine the way <CODE>fsm</CODE> simulates
+any finite-state machine.
+
+<P>A universal Turing machine (a Turing machine simulator) sort of half-solves
+the halting problem.  Suppose we want to know whether a given machine will
+halt after it is started with a given input.  (This is like asking whether a
+certain Logo procedure will terminate if it's invoked with a particular
+input.)  We can use the universal Turing machine to simulate the one we're
+interested in.  If the machine <EM>does</EM> halt, we'll find out about it.
+But if the machine in question <EM>doesn't</EM> halt, then the simulator
+won't halt either.  We'll still have the problem we had in the first
+place--how can we be sure it won't finally halt if we give it another
+minute?
+
+<P>To solve the halting problem, what we need is a Turing machine that accepts
+a representation of any Turing machine as input, just like the universal
+Turing machine.  But this one has to be guaranteed to halt, even if the
+input machine wouldn't halt.  That's what the halting theorem says we can't
+do.
+
+<P><H2>Proving the Halting Theorem in Logo</H2>
+
+<P>What makes it possible to raise the question of whether a Turing machine can
+decide whether another Turing machine would halt for a given input tape is
+the fact that one Turing machine's &quot;program&quot; can be represented as data
+for another Turing machine.  This is also true of Logo procedures.  In
+particular, the higher-order procedures like <CODE>map</CODE> and <CODE>filter</CODE>
+manipulate other procedures by accepting their names as inputs.
+We can, therefore, use Logo
+procedures to illustrate the proof of the halting theorem.
+
+<P>We'll consider a Logo procedure with an input as analogous to a Turing
+machine with its input tape.  We want to prove that there can't be a Logo
+procedure that could tell whether such a procedure stops for a given input.
+The technique we use is called <EM>proof by contradiction.</EM>  In this
+technique we assume that there <EM>is</EM> such a procedure, then show that
+this assumption leads to a paradox.
+
+<P>So let's imagine that someone has written a Logo predicate <CODE>haltp</CODE> that
+takes two inputs: the name of a procedure and an input value for that
+procedure.  <CODE>Haltp</CODE> will output <CODE>true</CODE> if the procedure it's testing
+would eventually stop, given the specified input; <CODE>haltp</CODE> outputs <CODE>
+false</CODE> if the procedure it's testing would get into an infinite loop, like a
+recursive procedure without a stop rule.  (In practice, if you think about
+your own experience debugging programs, it's easy to tell if a procedure
+doesn't have a stop rule at all, but not so easy to be sure that the stop
+rule will always eventually be satisfied.  Think about a Pig Latin program
+given a word of all consonants as input.  We want
+
+<P><PRE>to piglatin :word
+if memberp first :word [a e i o u] [output word :word &quot;ay]
+output piglatin word bf :word first :word
+end
+
+? <U>print haltp &quot;piglatin &quot;salami</U>
+true
+? <U>print haltp &quot;piglatin &quot;mxyzptlk</U>
+false
+</PRE>
+
+<P>Remember that <CODE>haltp</CODE> itself must <EM>always</EM> stop, even
+in the case where <CODE>piglatin</CODE> wouldn't stop.)
+
+<P>Now consider this Logo procedure:
+
+<P><PRE>to try :proc
+if haltp :proc :proc [loop]
+end
+
+to loop
+loop
+end
+</PRE>
+
+<P>Since <CODE>haltp</CODE> works, we're assuming, on <EM>any</EM> Logo
+procedure with one input, it must work on <CODE>try</CODE> in particular.
+What happens if we say
+
+<P><PRE>? <U>try &quot;try</U>
+</PRE>
+
+<P>Does this stop or loop?  Suppose it stops.  <CODE>try</CODE> begins its
+work by evaluating the expression
+
+<P><PRE>haltp &quot;try &quot;try
+</PRE>
+
+<P>Since we've said <CODE>try</CODE> will stop, given <CODE>try</CODE> as input,
+<CODE>haltp</CODE> will output <CODE>true</CODE>.  It follows, from the definition of <CODE>
+try</CODE>, that <CODE>try</CODE> will invoke <CODE>loop</CODE> and will <EM>not</EM> stop.
+Similarly, if we start with the assumption that <CODE>try</CODE> will loop, then
+<CODE>haltp</CODE> must output <CODE>false</CODE> and so, from the definition of <CODE>
+try</CODE>, you can see that <CODE>try</CODE> <EM>will</EM> stop.  Whatever value <CODE>
+haltp</CODE> outputs turns out to be incorrect.
+
+<P>It was the assumption that we could write an infallible <CODE>haltp</CODE> that led
+us into this contradiction, so that assumption must be wrong.  We can't write
+a Logo procedure that will automatically detect infinite loops in our
+programs.  A similar proof could be made in any language in which one program
+can manipulate another program as data--that is, in any Turing-equivalent
+language.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch0/v3ch0.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch2/v3ch2.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+;;; Finite State Machine Interpreter (<A NAME="fsm">FSM</A>)
+
+to game :which
+fsm thing word "mach :which
+end
+
+to fsm :machine
+cleartext
+setcursor [0 3]
+localmake "start startpart :machine
+localmake "moves movepart :machine
+localmake "accept acceptpart :machine
+fsm1 :start
+end
+
+to fsm1 :here
+ifelse memberp :here :accept [accept] [reject]
+fsm1 (fsmnext :here readchar)
+end
+
+to fsmnext :here :input
+blank
+if memberp :input (list char 13 char 10) ~
+   [print ifelse memberp :here :accept ["| ACCEPT|] ["| REJECT|]
+    output :start]
+type :input
+catch "error [output last find [fsmtest :here :input ?] :moves]
+output -1
+end
+
+to fsmtest :here :input :move
+output and (equalp :here arrowtail :move) ~
+           (memberp :input arrowtext :move)
+end
+
+;; Display machine state
+
+to accept
+display "accept
+end
+
+to reject
+display "reject
+end
+
+to blank
+display "|      |
+end
+
+to display :text
+localmake "oldpos cursor
+setcursor [15 1]
+type :text
+setcursor :oldpos
+end
+
+;; Data abstraction for machines
+
+to startpart :machine
+output first :machine
+end
+
+to movepart :machine
+output first bf :machine
+end
+
+to acceptpart :machine
+output last :machine
+end
+
+to make.machine :start :moves :accept
+output (list :start :moves :accept)
+end
+
+;; Data abstraction for arrows
+
+to arrowtail :arrow
+output first :arrow
+end
+
+to arrowtext :arrow
+output first butfirst :arrow
+end
+
+to arrowhead :arrow
+output last :arrow
+end
+
+to make.arrow :tail :text :head
+output (list :tail :text :head)
+end
+
+;; Machine descriptions for the guessing game
+
+make "mach1 [1 [[1 AB 1]] [1]]
+make "mach2 [1 [[1 ABC 2] [2 ABC 1]] [1]]
+make "mach3 [1 [[1 A 2] [2 B 3] [3 ABC 3]] [3]]
+make "mach4 [1 [[1 A 2] [1 B 3] [1 C 4] [2 A 1] [3 B 1] [4 C 1]] [1]]
+make "mach5 [1 [[1 ABC 2] [2 B 1]] [1]]
+make "mach6 [1 [[1 A 2] [2 AB 2] [2 C 3] [3 AB 2] [3 C 3]] [3]]
+make "mach7 [1 [[1 AB 1] [1 C 2] [2 C 1]] [1]]
+make "mach8 [1 [[1 A 2] [1 BC 1] [2 A 1] [2 BC 2]] [1]]
+make "mach9 [1 [[1 AB 1] [1 C 2] [2 A 3] [2 B 1] [3 A 1]] [1]]
+make "mach10 [1 [[1 A 2] [1 BC 1] [2 A 2] [2 B 3] [2 C 1]
+                 [3 A 2] [3 B 1] [3 C 4] [4 A 2] [4 B 5] [4 C 1]
+                 [5 A 6] [5 BC 1] [6 ABC 6]]
+              [6]]
+
+
+;;; Regular Expression to FSM Translation (<A NAME="machine">MACHINE</A>)
+
+to machine :regexp
+localmake "nextstate 0
+output optimize determine nondet :regexp
+end
+
+;; First step: make a possibly <A NAME="nondet">nondeterministic</A> machine
+
+to nondet :regexp
+if and (wordp :regexp) (equalp count :regexp 1) ~
+   [output ndletter :regexp]
+if wordp :regexp [output ndor reduce "sentence :regexp]
+if equalp first :regexp "or [output ndor butfirst :regexp]
+if equalp first :regexp "* [output ndmany last :regexp]
+output ndconcat :regexp
+end
+
+;; <A NAME="ndletter">Alphabet</A> rule
+
+to ndletter :letter
+localmake "from newstate
+localmake "to newstate
+output (make.machine :from
+                     (list (make.arrow :from :letter :to))
+                     (list :to))
+end
+
+;; <A NAME="ndconcat">Concatenation</A> rule
+
+to ndconcat :exprs
+output reduce "string (map "nondet :exprs)
+end
+
+to string :machine1 :machine2
+output (make.machine (startpart :machine1)
+                     (sentence (movepart :machine1)
+                               (splice acceptpart :machine1 :machine2)
+                               (movepart :machine2))
+                     (stringa (acceptpart :machine1)
+                              (startpart :machine2)
+                              (acceptpart :machine2)))
+end
+
+to stringa :accept1 :start2 :accept2
+if memberp :start2 :accept2 [output sentence :accept1 :accept2]
+output :accept2
+end
+
+;; <A NAME="ndor">Alternatives</A> rule
+
+to ndor :exprs
+localmake "newstart newstate
+localmake "machines (map "nondet :exprs)
+localmake "accepts map.se "acceptpart :machines
+output (make.machine :newstart
+                     (sentence map.se "movepart :machines
+                               map.se "or.splice :machines)
+                     ifelse not emptyp find [memberp (startpart ?)
+                                                     (acceptpart ?)]
+                                            :machines
+                            [fput :newstart :accepts]
+                            [:accepts])
+end
+
+to or.splice :machine
+output map [newtail ? :newstart] (arrows.from.start :machine)
+end
+
+;; <A NAME="ndmany">Repetition</A> rule
+
+to ndmany :regexp
+localmake "machine nondet :regexp
+output (make.machine (startpart :machine)
+                     sentence (movepart :machine)
+                              (splice (acceptpart :machine) :machine)
+                     fput (startpart :machine) (acceptpart :machine))
+end
+
+;; <A NAME="splice">Generate</A> moves from a bunch of given states (:accepts) duplicating
+;; the moves from the start state of some machine (:machine).
+;; Used for concatenation rule to splice two formerly separate machines;
+;; used for repetition rule to "splice" a machine to itself.
+
+to splice :accepts :machine
+output map.se [copy.to.accepts ?] (arrows.from.start :machine)
+end
+
+to arrows.from.start :machine
+output filter [equalp startpart :machine arrowtail ?] movepart :machine
+end
+
+to copy.to.accepts :move
+output map [newtail :move ?] :accepts
+end
+
+to newtail :arrow :tail
+output make.arrow :tail (arrowtext :arrow) (arrowhead :arrow)
+end
+
+;; <A NAME="newstate">Make</A> a new state number
+
+to newstate
+make "nextstate :nextstate+1
+output :nextstate
+end
+
+;; Second step: Turn nondeterministic FSM into a <A NAME="determine">deterministic</A> one
+;; Also eliminates "orphan" (unreachable) states.
+
+to determine :machine
+localmake "moves movepart :machine
+localmake "accepts acceptpart :machine
+localmake "states []
+localmake "join.state.list []
+localmake "newmoves nd.traverse (startpart :machine)
+output make.machine (startpart :machine) ~
+                    :newmoves ~
+                    filter [memberp ? :states] :accepts
+end
+
+to <A NAME="nd.traverse">nd.traverse</A> :state
+if memberp :state :states [output []]
+make "states fput :state :states
+localmake "newmoves (check.nd filter [equalp arrowtail ? :state] :moves)
+output sentence :newmoves map.se "nd.traverse (map "arrowhead :newmoves)
+end
+
+to <A NAME="check.nd">check.nd</A> :movelist
+if emptyp :movelist [output []]
+localmake "letter arrowtext first :movelist
+localmake "heads sort map "arrowhead ~
+                          filter [equalp :letter arrowtext ?] :movelist
+if emptyp butfirst :heads ~
+   [output fput first :movelist
+                check.nd filter [not equalp :letter arrowtext ?]
+                                :movelist]
+localmake "check.heads member :heads :join.state.list
+if not emptyp :check.heads ~
+   [output fput make.arrow :state :letter first butfirst :check.heads ~
+                check.nd filter [not equalp :letter arrowtext ?]
+                                :movelist]
+localmake "join.state newstate
+make "join.state.list fput :heads fput :join.state :join.state.list
+make "moves sentence :moves ~
+                     map [make.arrow :join.state
+                                     arrowtext ?
+                                     arrowhead ?] ~
+                         filter [memberp arrowtail ? :heads] :moves
+if not emptyp find [memberp ? :accepts] :heads ~
+   [make "accepts sentence :accepts :join.state]
+output fput make.arrow :state :letter :join.state ~
+            check.nd filter [not equalp :letter arrowtext ?] :movelist
+end
+
+to sort :list
+if emptyp :list [output []]
+output insert first :list sort butfirst :list
+end
+
+to insert :value :sorted
+if emptyp :sorted [output (list :value)]
+if :value = first :sorted [output :sorted]
+if :value < first :sorted [output fput :value :sorted]
+output fput first :sorted insert :value butfirst :sorted
+end
+
+;; Third step: <A NAME="optimize">Combine</A> redundant states.
+;; Also combines arrows with same head and tail: 
+;;   [1 A 2] [1 B 2] -> [1 AB 2].
+
+to optimize :machine
+localmake "stubarray array :nextstate
+foreach (movepart :machine) "array.save
+localmake "states sort fput (startpart :machine) ~
+                            map "arrowhead movepart :machine
+localmake "start startpart :machine
+foreach reverse :states [optimize.state ? ?rest]
+output (make.machine :start
+                     map.se [fix.arrows ? item ? :stubarray] :states
+                     filter [memberp ? :states] acceptpart :machine)
+end
+
+to array.save :move
+setitem (arrowtail :move) :stubarray ~
+        stub.add (arrow.stub :move) (item (arrowtail :move) :stubarray)
+end
+
+to <A NAME="stub.add">stub.add</A> :stub :stublist
+if emptyp :stublist [output (list :stub)]
+if (stub.head :stub) < (stub.head first :stublist) ~
+   [output fput :stub :stublist]
+if (stub.head :stub) = (stub.head first :stublist) ~
+   [output fput make.stub letter.join (stub.text :stub)
+                                      (stub.text first :stublist)
+                          stub.head :stub
+                butfirst :stublist]
+output fput first :stublist (stub.add :stub butfirst :stublist)
+end
+
+to letter.join :this :those
+if emptyp :those [output :this]
+if beforep :this first :those [output word :this :those]
+output word (first :those) (letter.join :this butfirst :those)
+end
+
+to optimize.state :state :others
+localmake "candidates ~
+          filter (ifelse memberp :state acceptpart :machine
+                         [[memberp ? acceptpart :machine]]
+                         [[not memberp ? acceptpart :machine]]) ~
+                 :others
+localmake "mymoves item :state :stubarray
+localmake "twin find [equalp (item ? :stubarray) :mymoves] :candidates
+if emptyp :twin [stop]
+make "states remove :state :states
+if equalp :start :state [make "start :twin]
+foreach :states ~
+        [setitem ? :stubarray 
+                 (cascade [emptyp ?2]
+                          [stub.add (change.head :state :twin first ?2)
+                                    ?1]
+                          filter [not equalp stub.head ? :state]
+                                 item ? :stubarray
+                          [butfirst ?2]
+                          filter [equalp stub.head ? :state]
+                                 item ? :stubarray)]
+end
+
+to change.head :from :to :stub
+if not equalp (stub.head :stub) :from [output :stub]
+output list (stub.text :stub) :to
+end
+
+to fix.arrows :state :stublist
+output map [stub.arrow :state ?] :stublist
+end
+
+;; Data abstraction for "stub" arrow (no tail)
+
+to arrow.stub :arrow
+output butfirst :arrow
+end
+
+to make.stub :text :head
+output list :text :head
+end
+
+to stub.text :stub
+output first :stub
+end
+
+to stub.head :stub
+output last :stub
+end
+
+to stub.arrow :tail :stub
+output fput :tail :stub
+end
+</PRE><P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch0/v3ch0.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch2/v3ch2.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm.lg b/js/games/nluqo.github.io/~bh/v3ch1/fsm.lg
new file mode 100644
index 0000000..0ed69bc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm.lg
@@ -0,0 +1,368 @@
+;;; Finite State Machine Interpreter (FSM)
+
+to game :which
+fsm thing word "mach :which
+end
+
+to fsm :machine
+cleartext
+setcursor [0 3]
+localmake "start startpart :machine
+localmake "moves movepart :machine
+localmake "accept acceptpart :machine
+fsm1 :start
+end
+
+to fsm1 :here
+ifelse memberp :here :accept [accept] [reject]
+fsm1 (fsmnext :here readchar)
+end
+
+to fsmnext :here :input
+blank
+if memberp :input (list char 13 char 10) ~
+   [print ifelse memberp :here :accept ["| ACCEPT|] ["| REJECT|]
+    output :start]
+type :input
+catch "error [output last find [fsmtest :here :input ?] :moves]
+output -1
+end
+
+to fsmtest :here :input :move
+output and (equalp :here arrowtail :move) ~
+           (memberp :input arrowtext :move)
+end
+
+;; Display machine state
+
+to accept
+display "accept
+end
+
+to reject
+display "reject
+end
+
+to blank
+display "|      |
+end
+
+to display :text
+localmake "oldpos cursor
+setcursor [15 1]
+type :text
+setcursor :oldpos
+end
+
+;; Data abstraction for machines
+
+to startpart :machine
+output first :machine
+end
+
+to movepart :machine
+output first bf :machine
+end
+
+to acceptpart :machine
+output last :machine
+end
+
+to make.machine :start :moves :accept
+output (list :start :moves :accept)
+end
+
+;; Data abstraction for arrows
+
+to arrowtail :arrow
+output first :arrow
+end
+
+to arrowtext :arrow
+output first butfirst :arrow
+end
+
+to arrowhead :arrow
+output last :arrow
+end
+
+to make.arrow :tail :text :head
+output (list :tail :text :head)
+end
+
+;; Machine descriptions for the guessing game
+
+make "mach1 [1 [[1 AB 1]] [1]]
+make "mach2 [1 [[1 ABC 2] [2 ABC 1]] [1]]
+make "mach3 [1 [[1 A 2] [2 B 3] [3 ABC 3]] [3]]
+make "mach4 [1 [[1 A 2] [1 B 3] [1 C 4] [2 A 1] [3 B 1] [4 C 1]] [1]]
+make "mach5 [1 [[1 ABC 2] [2 B 1]] [1]]
+make "mach6 [1 [[1 A 2] [2 AB 2] [2 C 3] [3 AB 2] [3 C 3]] [3]]
+make "mach7 [1 [[1 AB 1] [1 C 2] [2 C 1]] [1]]
+make "mach8 [1 [[1 A 2] [1 BC 1] [2 A 1] [2 BC 2]] [1]]
+make "mach9 [1 [[1 AB 1] [1 C 2] [2 A 3] [2 B 1] [3 A 1]] [1]]
+make "mach10 [1 [[1 A 2] [1 BC 1] [2 A 2] [2 B 3] [2 C 1]
+                 [3 A 2] [3 B 1] [3 C 4] [4 A 2] [4 B 5] [4 C 1]
+                 [5 A 6] [5 BC 1] [6 ABC 6]]
+              [6]]
+
+
+;;; Regular Expression to FSM Translation (MACHINE)
+
+to machine :regexp
+localmake "nextstate 0
+output optimize determine nondet :regexp
+end
+
+;; First step: make a possibly nondeterministic machine
+
+to nondet :regexp
+if and (wordp :regexp) (equalp count :regexp 1) ~
+   [output ndletter :regexp]
+if wordp :regexp [output ndor reduce "sentence :regexp]
+if equalp first :regexp "or [output ndor butfirst :regexp]
+if equalp first :regexp "* [output ndmany last :regexp]
+output ndconcat :regexp
+end
+
+;; Alphabet rule
+
+to ndletter :letter
+localmake "from newstate
+localmake "to newstate
+output (make.machine :from
+                     (list (make.arrow :from :letter :to))
+                     (list :to))
+end
+
+;; Concatenation rule
+
+to ndconcat :exprs
+output reduce "string (map "nondet :exprs)
+end
+
+to string :machine1 :machine2
+output (make.machine (startpart :machine1)
+                     (sentence (movepart :machine1)
+                               (splice acceptpart :machine1 :machine2)
+                               (movepart :machine2))
+                     (stringa (acceptpart :machine1)
+                              (startpart :machine2)
+                              (acceptpart :machine2)))
+end
+
+to stringa :accept1 :start2 :accept2
+if memberp :start2 :accept2 [output sentence :accept1 :accept2]
+output :accept2
+end
+
+;; Alternatives rule
+
+to ndor :exprs
+localmake "newstart newstate
+localmake "machines (map "nondet :exprs)
+localmake "accepts map.se "acceptpart :machines
+output (make.machine :newstart
+                     (sentence map.se "movepart :machines
+                               map.se "or.splice :machines)
+                     ifelse not emptyp find [memberp (startpart ?)
+                                                     (acceptpart ?)]
+                                            :machines
+                            [fput :newstart :accepts]
+                            [:accepts])
+end
+
+to or.splice :machine
+output map [newtail ? :newstart] (arrows.from.start :machine)
+end
+
+;; Repetition rule
+
+to ndmany :regexp
+localmake "machine nondet :regexp
+output (make.machine (startpart :machine)
+                     sentence (movepart :machine)
+                              (splice (acceptpart :machine) :machine)
+                     fput (startpart :machine) (acceptpart :machine))
+end
+
+;; Generate moves from a bunch of given states (:accepts) duplicating
+;; the moves from the start state of some machine (:machine).
+;; Used for concatenation rule to splice two formerly separate machines;
+;; used for repetition rule to "splice" a machine to itself.
+
+to splice :accepts :machine
+output map.se [copy.to.accepts ?] (arrows.from.start :machine)
+end
+
+to arrows.from.start :machine
+output filter [equalp startpart :machine arrowtail ?] movepart :machine
+end
+
+to copy.to.accepts :move
+output map [newtail :move ?] :accepts
+end
+
+to newtail :arrow :tail
+output make.arrow :tail (arrowtext :arrow) (arrowhead :arrow)
+end
+
+;; Make a new state number
+
+to newstate
+make "nextstate :nextstate+1
+output :nextstate
+end
+
+;; Second step: Turn nondeterministic FSM into a deterministic one
+;; Also eliminates "orphan" (unreachable) states.
+
+to determine :machine
+localmake "moves movepart :machine
+localmake "accepts acceptpart :machine
+localmake "states []
+localmake "join.state.list []
+localmake "newmoves nd.traverse (startpart :machine)
+output make.machine (startpart :machine) ~
+                    :newmoves ~
+                    filter [memberp ? :states] :accepts
+end
+
+to nd.traverse :state
+if memberp :state :states [output []]
+make "states fput :state :states
+localmake "newmoves (check.nd filter [equalp arrowtail ? :state] :moves)
+output sentence :newmoves map.se "nd.traverse (map "arrowhead :newmoves)
+end
+
+to check.nd :movelist
+if emptyp :movelist [output []]
+localmake "letter arrowtext first :movelist
+localmake "heads sort map "arrowhead ~
+                          filter [equalp :letter arrowtext ?] :movelist
+if emptyp butfirst :heads ~
+   [output fput first :movelist
+                check.nd filter [not equalp :letter arrowtext ?]
+                                :movelist]
+localmake "check.heads member :heads :join.state.list
+if not emptyp :check.heads ~
+   [output fput make.arrow :state :letter first butfirst :check.heads ~
+                check.nd filter [not equalp :letter arrowtext ?]
+                                :movelist]
+localmake "join.state newstate
+make "join.state.list fput :heads fput :join.state :join.state.list
+make "moves sentence :moves ~
+                     map [make.arrow :join.state
+                                     arrowtext ?
+                                     arrowhead ?] ~
+                         filter [memberp arrowtail ? :heads] :moves
+if not emptyp find [memberp ? :accepts] :heads ~
+   [make "accepts sentence :accepts :join.state]
+output fput make.arrow :state :letter :join.state ~
+            check.nd filter [not equalp :letter arrowtext ?] :movelist
+end
+
+to sort :list
+if emptyp :list [output []]
+output insert first :list sort butfirst :list
+end
+
+to insert :value :sorted
+if emptyp :sorted [output (list :value)]
+if :value = first :sorted [output :sorted]
+if :value < first :sorted [output fput :value :sorted]
+output fput first :sorted insert :value butfirst :sorted
+end
+
+;; Third step: Combine redundant states.
+;; Also combines arrows with same head and tail: 
+;;   [1 A 2] [1 B 2] -> [1 AB 2].
+
+to optimize :machine
+localmake "stubarray array :nextstate
+foreach (movepart :machine) "array.save
+localmake "states sort fput (startpart :machine) ~
+                            map "arrowhead movepart :machine
+localmake "start startpart :machine
+foreach reverse :states [optimize.state ? ?rest]
+output (make.machine :start
+                     map.se [fix.arrows ? item ? :stubarray] :states
+                     filter [memberp ? :states] acceptpart :machine)
+end
+
+to array.save :move
+setitem (arrowtail :move) :stubarray ~
+        stub.add (arrow.stub :move) (item (arrowtail :move) :stubarray)
+end
+
+to stub.add :stub :stublist
+if emptyp :stublist [output (list :stub)]
+if (stub.head :stub) < (stub.head first :stublist) ~
+   [output fput :stub :stublist]
+if (stub.head :stub) = (stub.head first :stublist) ~
+   [output fput make.stub letter.join (stub.text :stub)
+                                      (stub.text first :stublist)
+                          stub.head :stub
+                butfirst :stublist]
+output fput first :stublist (stub.add :stub butfirst :stublist)
+end
+
+to letter.join :this :those
+if emptyp :those [output :this]
+if beforep :this first :those [output word :this :those]
+output word (first :those) (letter.join :this butfirst :those)
+end
+
+to optimize.state :state :others
+localmake "candidates ~
+          filter (ifelse memberp :state acceptpart :machine
+                         [[memberp ? acceptpart :machine]]
+                         [[not memberp ? acceptpart :machine]]) ~
+                 :others
+localmake "mymoves item :state :stubarray
+localmake "twin find [equalp (item ? :stubarray) :mymoves] :candidates
+if emptyp :twin [stop]
+make "states remove :state :states
+if equalp :start :state [make "start :twin]
+foreach :states ~
+        [setitem ? :stubarray 
+                 (cascade [emptyp ?2]
+                          [stub.add (change.head :state :twin first ?2)
+                                    ?1]
+                          filter [not equalp stub.head ? :state]
+                                 item ? :stubarray
+                          [butfirst ?2]
+                          filter [equalp stub.head ? :state]
+                                 item ? :stubarray)]
+end
+
+to change.head :from :to :stub
+if not equalp (stub.head :stub) :from [output :stub]
+output list (stub.text :stub) :to
+end
+
+to fix.arrows :state :stublist
+output map [stub.arrow :state ?] :stublist
+end
+
+;; Data abstraction for "stub" arrow (no tail)
+
+to arrow.stub :arrow
+output butfirst :arrow
+end
+
+to make.stub :text :head
+output list :text :head
+end
+
+to stub.text :stub
+output first :stub
+end
+
+to stub.head :stub
+output last :stub
+end
+
+to stub.arrow :tail :stub
+output fput :tail :stub
+end
diff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm2.gif b/js/games/nluqo.github.io/~bh/v3ch1/fsm2.gif
new file mode 100644
index 0000000..faade45
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm3-reject.gif b/js/games/nluqo.github.io/~bh/v3ch1/fsm3-reject.gif
new file mode 100644
index 0000000..83c0e72
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm3-reject.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm5.gif b/js/games/nluqo.github.io/~bh/v3ch1/fsm5.gif
new file mode 100644
index 0000000..a154df3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm6nd.gif b/js/games/nluqo.github.io/~bh/v3ch1/fsm6nd.gif
new file mode 100644
index 0000000..30cd8e3
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm6nd.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/fsm79.gif b/js/games/nluqo.github.io/~bh/v3ch1/fsm79.gif
new file mode 100644
index 0000000..de7b381
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/fsm79.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/optimize.gif b/js/games/nluqo.github.io/~bh/v3ch1/optimize.gif
new file mode 100644
index 0000000..ca5e5a6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/optimize.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/or-nondet.gif b/js/games/nluqo.github.io/~bh/v3ch1/or-nondet.gif
new file mode 100644
index 0000000..9a9eb42
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/or-nondet.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/repetition.gif b/js/games/nluqo.github.io/~bh/v3ch1/repetition.gif
new file mode 100644
index 0000000..7fc0208
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/repetition.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/v3ch1.html b/js/games/nluqo.github.io/~bh/v3ch1/v3ch1.html
new file mode 100644
index 0000000..5f94725
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/v3ch1.html
@@ -0,0 +1,1977 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 1: Automata Theory</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Automata Theory</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch01.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch0/v3ch0.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch2/v3ch2.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="fsm.lg"><CODE>fsm</CODE></A>
+
+
+
+<P>As I explained in the preface to the first volume, one of my purposes in
+writing this series of books has been to urge computer hobbyists away from
+the view of computer expertise as the knowledge of obscure characteristics
+of some particular computer--how to program it in machine language, what
+magic numbers can be found where in its memory, how to overcome the copy
+protection schemes on its disks, and so on.  The trouble with this sort of
+machine-specific expertise is that it becomes obsolete when your favorite
+computer does.  From my point of view, one of the virtues of Logo as a
+programming language is that its high level data structures direct your
+attention away from questions about what goes where in memory,
+allowing you to focus instead on a more abstract description of your problem.
+
+<P>Automata theory is a further step in abstracting your attention away from any
+particular kind of computer or particular programming language.  In automata
+theory we consider a <EM>mathematical model</EM> of computing.  Such a model
+strips the computational machinery--the &quot;programming language&quot;--down to
+the bare minimum, so that it's easy to manipulate these
+theoretical machines
+(there are several such models, for different purposes, as you'll soon see)
+mathematically to prove things about their capabilities.  For the most part,
+these mathematical models are not used for practical programming problems.
+Real programming languages are much more convenient to use.  But the very
+flexibility that makes real languages easier to use also makes them harder
+to talk about in a formal way.  The stripped-down theoretical machines are
+designed to be examined mathematically.
+
+<P>What's a mathematical model?  You'll see one shortly, called a
+&quot;finite-state machine.&quot;
+
+<P>The point of this study is that the mathematical models are, in some
+important ways, <EM>equivalent</EM> to real computers and real programming
+languages.  What this means is that any problem that can be solved on a real
+computer can be solved using these models, and vice versa.  Anything we can
+prove about the models sheds light on the real problems of computer
+programming as well.
+
+<P>The questions asked in automata theory include these:  Are there any
+problems that no computer can solve, no matter how much time and memory it
+has?  Is it possible to <EM>prove</EM> that a particular computer program
+will actually solve a particular problem?  If a computer can use two
+different external storage devices (disks or tapes) at the same time,
+does that extend the range of problems it can solve compared to a
+machine with only one such device?
+
+<P>There is also a larger question lurking in the background of automata
+theory:  Does the human mind solve problems in the same way that a
+computer does?  Are people subject to the same limitations as computers?
+Automata theory does not actually answer this question, but the insights
+of automata theory can be helpful in trying to work out an answer.
+We'll have more to say about this in the chapter on artificial intelligence.
+
+<P><H2>What is a Computation?</H2>
+
+<P>What kinds of problems can we give to our abstract computers?  In
+automata theory we want to focus our attention on computation itself,
+not on details of input and output devices.  So we won't try creating
+a mathematical model of a video game.
+
+<P>We will play a game, though.  In this game the computer has a rule in mind.
+You type in strings of letters, using only the letters <CODE>A</CODE>, <CODE>B</CODE>, and
+<CODE>C</CODE>.  The computer tells you whether each string follows the rule or
+not.  Your job is to guess the rule.  For example, suppose you have done
+these experiments:
+
+<P><TABLE><TR><TH align="left"><U>accepted</U>
+<TH align="left">&nbsp;&nbsp;&nbsp;&nbsp;<U>rejected</U>
+<TR><TD><CODE>ABC</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>CBA</CODE>
+<TR><TD><CODE>AAA</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BBB</CODE>
+<TR><TD><CODE>ABCABCABC</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BCABCABC</CODE>
+<TR><TD><CODE>A</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>BBBBBBB</CODE>
+<TR><TD><CODE>ACCCCCCCCC</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>CAAAAAAAAA</CODE>
+</TABLE>
+
+<P>You might guess, from these examples, that the rule is
+&quot;The string must begin with <CODE>A</CODE>.&quot;  Once you've made a guess you can
+test it out by trying more examples.
+
+<P>The program to play the game is called <CODE>game</CODE>.  It takes one input,
+a number from 1 to 10.  I've provided ten different rules.  Rules 1 to 3
+should be pretty easy to guess; rules 8 to 10 should be nearly impossible.
+(Don't feel too frustrated if you don't get them.)
+
+<P>A string can be any length, including length zero (the empty string).  Each
+time you type a letter the program lets you know whether the string you've
+typed so far obeys the rule.  The program indicates whether the string is
+accepted or rejected by displaying the word <CODE>accept</CODE> or <CODE>reject</CODE> on
+the screen.  In particular, as soon
+as you start <CODE>game</CODE> the program will tell you whether or not the empty
+string is accepted by this rule.  If you type the string <CODE>ABC</CODE> you'll
+really be testing three strings: <CODE>A</CODE>, <CODE>AB</CODE>, and <CODE>ABC</CODE>.  You
+should type one letter at a time to make sure the program has a chance to
+respond to it before going on to the next letter.  To start over again with
+a different string, press the Return key.
+
+<P>You should stop reading now and try the game.  In the following paragraphs
+I'm going to talk about some of the answers, so this is your last
+chance.  After you've figured out at least some of the rules, come
+back to the book.
+
+<P><H2>Finite-State Machines</H2>
+
+<P>The point of studying this game is that we're going to look at a way to design
+a special-purpose abstract computer that understands one particular
+rule.  We can then ask questions about how much information the computer
+needs to handle the job.
+
+<P>You've seen the word <EM>state</EM> before in connection with the Logo
+turtle.  Its state includes its position and its heading.  So one turtle
+state might be &quot;position <CODE>[17 82]</CODE>, heading <CODE>90</CODE>.&quot; In principle,
+the turtle has an <EM>infinite</EM> number of possible states, because its
+position and heading don't have to be integers.  Its position might be <CODE>
+[14.142 14.142]</CODE>, for instance.
+
+<P>Anything that holds information can be in different states.  As another
+example, an on-off light switch has two states.  Some lamps have four states:
+off, low, medium, and high.  A computer, too, has a certain number of states.
+The state of a computer includes all the information in its memory at some
+particular time.
+
+<P>A machine that has only a limited number of states, like the example of the
+light switch, is called a <EM>finite-state machine.</EM>  For almost all of
+this chapter we'll be dealing with finite-state machines.  You might think
+that that imposes a very severe limit on the kinds of computations we can
+do.  But note that in the game I asked you to play, a rule can accept an
+infinite number of possible strings and reject an infinite number of
+others.  The accepted or rejected strings can be of any length.  (Some rules
+restrict the length of a string, but others allow any length at all.)  In
+some sense, a finite-state machine can still perform infinitely varied
+computations.
+
+<P>Consider the third game as an example.  The rule is &quot;Accept
+any string that starts with <CODE>AB</CODE>.&quot;  Here is a picture of a finite-state
+machine that implements that rule:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fsm3.gif" ALT="figure: fsm3"></CENTER>
+
+<P>Each numbered circle represents a state.  This machine has three
+states.  The <CODE>start</CODE> arrow indicates that the machine starts out in state
+1.  State 3 is shown with a <EM>double</EM> circle to indicate that it is an
+<EM>accepting</EM> state.  In other words, when the machine is in state 3 the
+screen says <CODE>accept</CODE>.  The other two states are not
+accepting states.
+Every time you type a character the machine switches from one state to
+another.  The arrow from state 1 to state 2 has an <CODE>A</CODE> next to its
+tail.  This indicates that when the machine is in state 1, an input of <CODE>
+A</CODE> switches it to state 2.  (The arrow from state 3 to itself has the
+three letters <CODE>ABC</CODE> at its tail.  This is a shorthand notation for
+three separate arrows with heads and tails in the same place, one for each
+letter.)
+
+<P>This picture is actually incomplete.  For a full description of the machine
+we have to indicate what happens on any input in any state.  In other words,
+each circle should have <EM>three</EM> arrows coming out from it, one each
+for <CODE>A</CODE>, <CODE>B</CODE>, and <CODE>C</CODE>.  I've chosen to adopt the convention that
+every machine has an unmarked state called <CODE>reject</CODE>.  Any missing arrow
+goes to that state; once the machine is in the reject state it stays
+there forever.  Here, then, is the complete diagram of the machine for game
+3:
+
+<P><CENTER><IMG SRC="fsm3-reject.gif" ALT="figure: fsm3-reject"></CENTER>
+
+<P>From now on I won't draw the <CODE>reject</CODE> state, but you should
+remember that it's really part of the machine description.  So this machine
+requires four states, not three.
+
+<P>If the first input letter isn't <CODE>A</CODE>, the machine goes to the <CODE>reject</CODE>
+state.  If the first letter is <CODE>A</CODE>, the machine goes to state 2.  Then,
+if the second letter is <CODE>B</CODE>, the machine ends up in state 3 and accepts
+the string <CODE>AB</CODE>.  This is the shortest acceptable string.
+
+<P>Each of the three arrows from state 3 loops right back into state
+3 itself.  (Remember, although only one arrow appears in the picture,
+it is labeled with three letters, so officially it represents three
+arrows.)  This means that once the machine is in state 3 it stays
+there no matter what inputs it gets.  Any string that starts <CODE>AB</CODE> is
+acceptable.
+
+<P>Here is a machine for game number 2:
+
+<P><CENTER><IMG SRC="fsm2.gif" ALT="figure: fsm2"></CENTER>
+
+<P>In this machine the <EM>start state</EM> is also an <EM>accepting
+state.</EM>  (Every machine has exactly one start state, but it may have any
+number of accepting states.)  This machine never gets into the <CODE>reject</CODE>
+state.  That doesn't mean it doesn't reject any strings; all odd-length
+strings are rejected in state 2.  But a rejected string can redeem itself by
+adding another input character, so state 2 allows a return to the accepting
+state 1.
+
+<P>Here is a machine for game number 5.  (Notice that I'm saying &quot;a
+machine&quot; and not &quot;the machine&quot;; it is always possible to design
+other machines that would follow the same rule.)
+
+<P><CENTER><IMG SRC="fsm5.gif" ALT="figure: fsm5"></CENTER>
+
+<P>You probably had more trouble discovering rule 5 than rule
+2, and it takes longer to say the rule in English words.  But the
+<EM>machines</EM> for the two rules are almost identical.  (Remember,
+though, that the rule-5 machine really has a third state, the <CODE>reject</CODE>
+state, which is not shown in the diagram.)
+
+<P>Here are machines for rules 7 and 9.  With these machines as hints,
+can you figure out the rules?  Go back to the <CODE>game</CODE> program to test
+your hypotheses.
+
+<P><CENTER><IMG SRC="fsm79.gif" ALT="figure: fsm79"></CENTER>
+
+<P>You should also get some practice translating in the other direction, from
+English rules to machine diagrams.  Here are a couple to work on:  Rule 4 is
+&quot;To be accepted a string must be composed of doubled letters (<CODE>AA</CODE>,
+<CODE>BB</CODE>, and <CODE>CC</CODE>) strung together.&quot; Rule 8 is &quot;To be accepted a
+string must contain an even number of <CODE>A</CODE>s.&quot;
+
+<P><H2>Nondeterministic Machines</H2>
+
+
+<P>Here is rule 6: &quot;To be accepted a string must begin with <CODE>A</CODE> and end
+with <CODE>C</CODE>.&quot; Strings accepted by this rule include <CODE>AC</CODE> (the shortest
+possible), <CODE>ABC</CODE>, <CODE>AACC</CODE>, <CODE>ACAC</CODE>, <CODE>ABCABC</CODE>, and so on.
+Between the initial <CODE>A</CODE> and the final <CODE>C</CODE> an accepted string can
+have any combination of <CODE>A</CODE>s, <CODE>B</CODE>s, and <CODE>C</CODE>s.  It's natural to
+think of the string as having three parts: a fixed beginning, a variable
+middle, and a fixed end.  The three parts of the input strings can be
+represented conveniently with three states in the machine, like this:
+
+<P><CENTER><IMG SRC="fsm6nd.gif" ALT="figure: fsm6nd"></CENTER>
+
+<P>The machine starts in state 1.  To be accepted a string must start
+with <CODE>A</CODE>.  Therefore, an <CODE>A</CODE> arrow leads from state 1 to state 2.  Any
+other input at state 1 leads to the <CODE>reject</CODE> state.
+
+<P>Once the machine is in state 2 it is ready for the middle part of
+the string.  In this middle part any combination of letters is allowed.
+Therefore, there are three arrows from state 2 to itself, one for
+every possible letter.
+
+<P>Finally, a <CODE>C</CODE> arrow leads from state 2 to state 3, signaling the end
+of an acceptable string.  A string must end with <CODE>C</CODE> to be accepted.
+
+<P>There is a problem with this machine:  There are <EM>two</EM> <CODE>C</CODE> arrows
+leading out from state 2.  One is a loop back into state 2; the other
+goes on to state 3.  This situation reflects the fact that <CODE>C</CODE> serves
+two different functions in this rule: <CODE>C</CODE> is an optional part of the
+middle section of the string, and it's also the required final input
+in the string.
+
+<P>A machine with two arrows from the same state for the same input is
+called a <EM>nondeterministic</EM> machine.  Here is how such a machine
+could work:  Whenever there are two choices for the machine's
+current state and input, the machine clones itself.  One of the copies
+follows each arrow.  From then on, if <EM>either</EM> machine is in an
+accepting state the string is accepted.
+
+<P>Nondeterministic finite-state machines are more complicated
+than deterministic ones.  Does the added complexity &quot;buy&quot; any added
+power?  In other words, can a nondeterministic machine solve problems
+that a deterministic machine can't?  It turns out that the answer
+to this question is no.  Deterministic machines are just as powerful
+as nondeterministic ones.  This is an important theorem in automata
+theory.  I'm not going to prove it formally in this book, but to illustrate
+the theorem, here is a deterministic machine that carries out game
+6:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fsm6d.gif" ALT="figure: fsm6d"></CENTER>
+
+<P>This machine is similar to the nondeterministic version.  It has the
+same number of states and some of the connections are identical.
+State 3 is more complicated, though.  Also, in this machine, it is
+no longer the case that each state of the machine corresponds exactly
+to one of three parts of the input string.  Specifically, when the machine is
+in state 3 the string may or may not be finished.
+
+<P><H2>Representing Machines as Logo Lists</H2>
+
+<P>The <CODE>game</CODE> program uses finite-state machines to represent the rules
+by which it accepts or rejects strings.  (The machines must be deterministic
+for the program to work.)  Logo programs can't read circles and arrows,
+so a machine is represented as a list.  What information is actually
+contained in an FSM diagram?  The diagram shows that there are a certain
+number of states (the circles), that there are certain transitions from one
+state to another (the arrows), that one particular state is the start state
+(the start arrow), and that certain states are accepting ones (the double
+circles).  As in any programming project, I could have chosen many different
+ways to represent that information in the program.
+
+<P>In the particular representation I chose, the list form of a machine
+has three members.  The first member is the number of the start state.
+The second member is a list of arrows; each arrow is itself a list,
+as I'll explain in a moment.  The third member of a machine list is
+a list of the accepting states of the machine.  For example, here
+is the machine for game 3 again, in both forms:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fsm3.gif" ALT="figure: fsm3"></CENTER>
+<PRE>[1 [[1 A 2] [2 B 3] [3 ABC 3]] [3]]
+</PRE>
+
+<P>The number <CODE>1</CODE> is the start state; the list <CODE>[3]</CODE> is the
+list of accepting states.  (This machine happens to have only one accepting
+state.)  Everything else is the list of arrows.  Each arrow is also a list
+with three members: the initial state (the tail of the arrow), the input
+letter or letters, and the final state (the head of the arrow).  The first arrow in
+this machine is
+
+<P><PRE>[1 A 2]
+</PRE>
+
+<P>This is the arrow from state 1 to state 2 associated with
+the input <CODE>A</CODE>.
+
+<P>The list <CODE>[3 ABC 3]</CODE> in this machine represents three arrows, using
+the same shorthand as in the circle-and-arrow diagrams.  I could equally
+well have represented these arrows separately:
+
+<P><PRE>[1 [[1 A 2] [2 B 3] <U>[3 A 3] [3 B 3] [3 C 3]</U>] [3]]
+</PRE>
+
+<P>As in the circle-and-arrow diagrams, I haven't explicitly represented the
+transitions to the <CODE>reject</CODE> state in these lists.  The program is
+written so that if it doesn't find a transition for the current state and
+input in the list of transitions, it goes into state number &minus;1, its
+representation for the <CODE>reject</CODE> state.
+
+<P>Here are some more machine lists:
+
+<P><PRE>Game 2:  [1 [[1 ABC 2] [2 ABC 1]] [1]]
+Game 7:  [1 [[1 AB 1] [1 C 2] [2 C 1]] [1]]
+Game 9:  [1 [[1 AB 1] [1 C 2] [2 A 3] [2 B 1] [3 A 1]] [1]]
+</PRE>
+
+<P>At this point you should stop and play with the program.  Make up
+your own rules.  The procedure <CODE>fsm</CODE> takes a machine list as input
+and accepts strings based on that machine.  (<CODE>Game</CODE> uses <CODE>fsm</CODE>
+with particular
+machines as inputs.)  Try out your new rules to make sure you've designed
+the machines correctly.  Then get a friend to play with your rules.
+If both of you are reading this book together you can have a competition.
+(It's easy to design rules that are impossible to guess because there
+are too many details.  If you have a competition you should limit
+yourselves to three states per machine.)
+
+<P>You might be interested in reading through the
+<A HREF="v3ch1.html#fsm"><CODE>fsm</CODE></A> program, which
+simulates a finite-state machine when given the machine's description
+as its input.  It's a pretty simple program.  If you think of a machine's
+state diagram as a kind of &quot;wiring diagram&quot; that might be used
+in building a real version of that particular machine, this Logo program
+is a kind of <EM>universal</EM> finite-state machine implementation.
+
+<P><H2>Text Editors: a Use for Acceptors</H2>
+
+<P>It may seem to you that accepting or rejecting strings isn't much
+like what you usually do with computers.  You may wonder how this
+mathematical model is related to real computer programming.  There
+are two answers to this question.  One is that it's possible to design
+finite-state machines that have more versatile outputs than simply
+yes or no.  I'll give an example shortly.  But the other answer is
+that there are real situations in which accepting or rejecting a string
+of symbols does come up in practical computation.
+
+<P>One example is in the implementation of programming languages.  When
+you say that
+
+<P><PRE>print 2+2
+</PRE>
+
+<P>is a legal Logo instruction but
+
+<P><PRE>print 2+
+</PRE>
+
+<P>is illegal, you're doing a more complicated version of what
+a finite-state acceptor does.
+
+<P>The <EM>search</EM> command in a good text editor uses
+finite-state machines.  Most text editors have a command that allows
+you to look through a file for a particular string of characters.  Fancier
+editors allow searching not just for one particular string, but for any
+string that follows a rule the user can provide.  The editor finds a string that
+matches the rule using a finite-state machine.  Of course, people who use
+editors don't have to specify their search rules in the <EM>form</EM> of a
+finite-state machine!  The editing program accepts search rules in a simpler
+form and translates them into FSM form.  Here is an example, the notation
+used by <EM>ed,</EM> a standard editor in the Unix operating system.
+
+<P>A string like
+
+<P><PRE>spaghetti
+</PRE>
+
+<P>just matches an identical string in the file you're editing.  A
+slightly more interesting case is
+
+<P><PRE>[Ss]paghetti
+</PRE>
+
+<P>which matches either &quot;Spaghetti&quot; or &quot;spaghetti&quot;
+(with a capital or lower case &quot;s&quot;).  The square brackets indicate that
+<EM>any</EM> of the letters inside the brackets will be accepted.
+In the expression
+
+<P><PRE>[Ss]paghet*i
+</PRE>
+
+<P>the asterisk matches <EM>any number</EM> (including zero) of the
+letter before it (in this case, the letter <CODE>t</CODE>).  This example
+would match any of these:
+
+<P><PRE>Spaghei
+Spaghettttti
+spaghetti
+spagheti
+</PRE>
+
+<P>You might use this in a search command if you're a bad speller!
+The bracket and asterisk can be combined;
+
+<P><PRE>C[AD]*R
+</PRE>
+
+<P>will match any of
+
+<P><PRE>CAR
+CDR
+CADDR
+CR
+</PRE>
+
+<P>Or you could use
+
+<P><PRE>M[is]*p*i
+</PRE>
+
+<P>to match the name of a famous river.
+
+<P>Some of the rules from the game I presented earlier can be represented as
+<EM>ed</EM> search strings according to these rules.  In the first game the
+machine accepted any string made up of <CODE>A</CODE>s and <CODE>B</CODE>s.  The
+corresponding <EM>ed</EM> expression is
+
+<P><PRE>[AB]*
+</PRE>
+
+<P>The third game called for strings beginning with the sequence
+<CODE>AB</CODE>, followed by whatever you like.  This can be represented as
+
+<P><PRE>AB[ABC]*
+</PRE>
+
+<P>Game 10, which I'm sure you didn't solve, accepts any string that
+includes the sequence <CODE>ABCBA</CODE> within it.  In <EM>ed</EM> terms, that's
+
+<P><PRE>[ABC]*ABCBA[ABC]*
+</PRE>
+
+<P>I haven't given you a complete description of the <EM>ed</EM> search rules.
+I included this much only because I want you to see how a &quot;real&quot; program
+uses the idea of finite-state machines.  But in the remaining part of this
+chapter I want to use a different notation based on Logo words and lists.
+
+<P><H2>Regular Expressions</H2>
+
+<P>The notation I'm about to describe allows an acceptance rule, like the rules
+in the <CODE>game</CODE> program or the rules for <EM>ed</EM> searches, to be
+represented in Logo.  The representation of such a rule is called a <EM>
+regular expression.</EM>  I'm going to tell you some rules for what a regular
+expression can look like.  Don't be confused:  Any particular regular
+expression is a rule that accepts strings of letters.  I'm giving you rules
+that accept regular expressions--rules about rules.  As a rough analogy,
+&quot;one player is <CODE>X</CODE> and the other is <CODE>O</CODE>&quot; is a rule about the
+specific game Tic Tac Toe; &quot;each player should have a fair chance to win&quot;
+is a rule about what kinds of game rules are acceptable.
+
+<P> <EM>Alphabet rule.</EM> Any symbol in a machine's
+alphabet is a regular expression.  We represent the symbol as a one-letter
+Logo word.  In our guessing game the alphabet contains three symbols: <CODE>
+A</CODE>, <CODE>B</CODE>, and <CODE>C</CODE>.  So
+
+<P><PRE>B
+</PRE>
+
+<P>is a regular expression.
+
+<P>
+<EM>Concatenation rule.</EM>  A list whose members are regular expressions
+represents those expressions one after another.  For example, since <CODE>A</CODE>
+is a regular expression and <CODE>B</CODE> is a regular expression,
+
+<P><PRE>[A B]
+</PRE>
+
+<P>is a regular expression representing the string <CODE>AB</CODE>.  (Notice
+that the Logo word <CODE>AB</CODE> does <EM>not</EM> represent that string; the
+alphabet rule requires that each letter be represented as a separate word.)
+
+<P>
+<EM>Alternatives rule.</EM>  A list whose first member is the word <CODE>or</CODE> and
+whose remaining members are regular expressions represents any string that
+matches <EM>any</EM> of those expressions.  For example,
+
+<P><PRE>[OR [A A] B]
+</PRE>
+
+<P>matches either the sequence <CODE>AA</CODE> or the single symbol <CODE>B</CODE>.
+As a convenience, a Logo word containing more than one letter (other
+than the word <CODE>or</CODE>) is taken as an abbreviation for the <CODE>or</CODE>ing
+of the individual letters.  For example, <CODE>ABC</CODE> is equivalent to
+<CODE>[OR A B C]</CODE>.
+
+<P>
+<EM>Repetition rule.</EM>  A list containing exactly two members, in which the
+first is the asterisk (<CODE>*</CODE>) symbol and the second is a regular
+expression, represents a string containing any number (including zero) of
+substrings that match the regular expression.  So
+
+<P><PRE>[* [OR [A A] B]]
+</PRE>
+
+<P>matches any of these:
+
+<P><TABLE>
+<TR><TD><CODE>B</CODE>
+<TR><TD><CODE>BB</CODE>
+<TR><TD><CODE>BAAB</CODE>
+<TR><TD><CODE>AAAAAA</CODE>
+<TR><TD><CODE>AABAA</CODE>
+<TR><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(the empty string)
+<TR><TD><CODE>AABBBBBAA</CODE>
+</TABLE>
+
+<P>The number of consecutive <CODE>A</CODE>s must be even for a string of
+<CODE>A</CODE>s and <CODE>B</CODE>s to match this expression.
+
+<P>These four rules constitute the definition of a regular expression.
+It's a <EM>recursive definition.</EM>  Just as the effect of a recursive
+Logo procedure is defined in terms of a simpler case of the same procedure,
+a complex regular expression is defined in terms of simpler ones.
+
+<P>Here are the ten game rules from the beginning of this chapter in
+the form of regular expressions:
+
+<P><P>
+<TABLE><TR><TH align="right">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* AB]</CODE>
+<TR><TH align="right">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [ABC ABC]]</CODE>
+<TR><TH align="right">3.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[A B [* ABC]]</CODE>
+<TR><TH align="right">4.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [OR [A A] [B B] [C C]]]</CODE>
+<TR><TH align="right">5.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [ABC B]]</CODE>
+<TR><TH align="right">6.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[A [* ABC] C]</CODE>
+<TR><TH align="right">7.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[* [OR A B [C C]]]</CODE>
+<TR><TH align="right">8.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[[* BC] [* [A [* BC] A [* BC]]]]</CODE>
+<TR><TH align="right">9.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[[* AB] [* [C [OR B [A A]]] [* AB]]]</CODE>
+<TR><TH align="right">10.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>[[* ABC] A B C B A [* ABC]]</CODE>
+</TABLE>
+
+<P><TD>&nbsp;&nbsp;&nbsp;&nbsp;<P>
+
+<P>You should go through these examples carefully, making sure
+you understand how the regular expression represents the same idea
+as the English description or the machine diagram you saw earlier.
+
+<P><H2>Rules That Aren't Regular</H2>
+
+<P>You may be thinking that <EM>any</EM> rule for accepting or rejecting
+strings of symbols can be represented as a regular expression.  But
+that's not so.  For example, consider the rules for recognizing ordinary
+arithmetic expressions:
+
+<P><TABLE><TR><TH align="left"><U>accepted</U>
+<TH align="left">&nbsp;&nbsp;&nbsp;&nbsp;<U>rejected</U>
+<TR><TD><CODE>2+3</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>23+</CODE>
+<TR><TD><CODE>2*(3+4)</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>2*)3+4(</CODE>
+<TR><TD><CODE>-5</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>/6</CODE>
+</TABLE>
+
+<P>Think for a moment just about the matter of
+balancing parentheses.
+Sometimes you have parentheses within parentheses, as in
+
+<P><PRE>((3+4)/(5+6))
+</PRE>
+
+<P>How would you represent this part of the arithmetic expression
+rule in the form of a regular expression?  You can't just say something like
+
+<P><PRE>[[* (] something-or-other [* )]]
+</PRE>
+
+<P>to mean &quot;any number of open parentheses, something, then
+any number of close parentheses.&quot;  That would allow strings like
+
+<P><PRE>(((7)))))
+</PRE>
+
+<P>But this string should be rejected because it has too many close
+parentheses.  You're not allowed to use a close parenthesis unless you've
+already used a matching open parenthesis.  You can have any number of nested
+parentheses you want as long as they're balanced.
+
+<P>It is possible to invent other kinds of formal notation, more powerful than
+regular expressions, that will allow us to give the rules for well-formed
+arithmetic expressions.  In this section I'll introduce briefly a formal
+notation called <EM>production rules</EM> that's powerful enough to describe
+arithmetic expressions.  For now, in this chapter, I don't want to discuss
+production rules in great detail; my only reason for introducing them at
+this point is to give you a sense of how regular expressions fit into a
+larger universe of possible formal systems.  In the following sections I'll
+have more to say about regular expressions and finite-state machines.  But
+we'll return to production rules in Chapters 5 and 6, in which we'll need
+formal notations with which to discuss more interesting languages than the
+<CODE>A</CODE>-<CODE>B</CODE>-<CODE>C</CODE> language of this chapter.  (In Chapter 5 we'll be
+talking about Pascal; in Chapter 6 we'll take on English.)
+
+<P>The key ingredient that's missing from regular expression notation is a way
+to <EM>name</EM> a kind of sub-expression so that the name can be used in
+defining more complex expressions.  In particular, a sub-expression name can
+be used in its own definition to allow a <EM>recursive</EM> definition of the
+rule.
+
+<P>A production rule has the form
+
+<P><PRE>name      :  expansion
+</PRE>
+
+<P>Each rule is a definition of the name on the left in terms of
+smaller units, analogous to the definition of a Logo procedure in terms
+of subprocedures.  The expansion part of the rule is a string of symbols
+including both members of the &quot;alphabet&quot; of the system (like the alphabet
+that underlies a regular expression language) and names defined by
+production rules.
+
+<P>As an example, here is a set of production rules that defines the language of
+arithmetic expressions.  These rules take into account the &quot;order of
+operations&quot; for arithmetic that you learned in elementary school:
+multiplication before addition.  An expression like
+
+<P><PRE>2/3+1/6
+</PRE>
+
+<P>is ordinarily interpreted as the sum of two <EM>terms,</EM> namely
+two thirds and one sixth.  An expression can be a single term, a sum of
+terms, or a difference of terms.  Here's how that idea is expressed in a set
+of production rules; I'll discuss the notation in more detail in a moment.
+
+<P><CENTER><IMG SRC="xx1.gif"></CENTER>
+
+<P>The vertical bars separate alternatives.  The first rule, the one
+that defines <CODE>expr</CODE>, contains three alternatives.  First, an expression
+can be just a single term.  Second, an expression can be a smaller
+expression plus a term.  Third, an expression can be a smaller expression
+minus a term.  The symbols inside boxes are the members of the alphabet of
+the arithmetic expression language.  (I've put them in boxes to make it
+easier not to confuse them with the punctuation characters--the colons and
+vertical bars--that are part of the production rule notation itself.)
+
+<P>Do you see how parentheses fit in?  If a string like <CODE>4+5</CODE> is an
+expression, then <CODE>(4+5)</CODE> is a factor, so <CODE>3*(4+5)</CODE> is a term,
+and so on.  Since a factor is a kind of term, and a term is a kind of
+expression, the factor <CODE>(4+5)</CODE> can be considered an expression, and
+so it too can be put inside parentheses.  So <CODE>((4+5))</CODE> is also
+acceptable as a factor.
+
+<P><H2>Regular Expressions and Finite-State Machines</H2>
+
+<P>I've hinted at something that I haven't actually made explicit:  Regular
+expressions are equivalent to finite-state machines.  In other words,
+if you can express a rule as a regular expression, you can design
+a finite-state machine that carries out the rule.  If you can't write
+a regular expression for the rule, you can't design a finite-state
+machine either.
+
+<P>You may be thinking, &quot;so what?&quot;  I've introduced two different formal
+notations, finite-state machines and regular expressions, and now I'm
+telling you that the two are equivalent.  So why didn't I just pick one in
+the first place and forget about the other?  I have a general answer and a
+specific answer to these questions.
+
+<P>The general answer is that comparing different formal systems is what
+automata theory is all about.  By the end of this book you'll have been
+introduced to half a dozen or so different formal systems.  Some are more
+powerful than others.  The bare assertion that one formal system is
+equivalent to another, or more powerful than another, isn't very interesting;
+but if we can understand the <EM>reasons</EM> behind those assertions then
+we may be able to put the knowledge to work in practical situations.  At the
+very end of this book, in Chapter 6, we'll talk about a particular formal
+system that's often used in artificial intelligence programs to recognize
+English sentences.  By then you should know enough about formal systems to
+be able to understand why that particular one is a good choice.
+
+<P>The specific answer is that finite-state machines and regular expressions
+are <EM>different</EM> from each other in an interesting way.  A finite-state
+machine is an <EM>algorithm,</EM> a sequence of steps, or a procedure that can
+be followed to test whether some string matches a given rule.  It says,
+&quot;start here, then if this happens do this, then...&quot; just like a procedure
+in Logo or most other programming languages.  (But we've seen that a
+finite-state machine is like a procedure written in a restricted programming
+language that isn't as flexible as Logo.)  A regular expression, though, is
+<EM>not</EM> a sequence of steps.  It's more like a description of the <EM>
+result</EM> that we want, leaving open the precise recipe for how to get there.
+People often pose problems in a similar way.  They call the plumber and say,
+&quot;the drain in my bathtub is backing up.&quot;  Part of the plumber's expertise is
+to be able to translate that <EM>declarative</EM> problem statement into a
+<EM>procedural</EM> form, a sequence of steps needed to clear up the problem.
+An early stumbling block in artificial intelligence research was the seeming
+gulf between the procedural knowledge embodied in a computer program and the
+declarative knowledge needed for human-like behavior.  Recently people have
+invented <EM>declarative programming languages</EM> (the best known
+is Prolog, but any commercial spreadsheet program is also
+in this category) that
+allow the user to state a problem in declarative form.  The programming
+language interpreter then automatically translates this problem statement
+into a sequence of steps for the computer to perform.
+
+<P>Writing a Prolog interpreter raises many issues beyond the scope of this
+book.  But we can take a smaller step in the realm of translation from
+a declarative notation to a procedural one.  I've written a Logo program,
+listed at the end of the chapter, that translates from a regular
+expression to an equivalent finite-state machine.  Its top-level procedure,
+<CODE>machine</CODE>, takes a regular expression as input and outputs a machine
+list in the format I showed earlier.
+
+<P><H2>How to Translate</H2>
+
+<P>The general claim that regular expressions are equivalent in power
+to finite-state machines is called Kleene's Theorem, named after the
+mathematician Stephen C. Kleene, its discoverer.  You can find a proof
+of this theorem in any textbook on automata theory.  I'm not going
+to give a proof here, but I'll indicate how the translation is done
+in my program.  The same kinds of ideas are used in the proof.
+
+<P>Remember that there are four parts to the definition of a regular expression.
+The alphabet rule provides the fundamental building blocks; the
+concatenation, alternatives, and repetition rules build large regular
+expressions recursively out of smaller ones.  The translation process
+follows the same pattern:  We start with a procedure to build a trivial
+two-state machine that only accepts a single letter, then we add three
+rules for combining smaller machines into a large machine.  In the following
+paragraphs I'll show how each rule is reflected in the
+<A HREF="v3ch1.html#machine"><CODE>machine</CODE></A> program.
+
+<P>This construction process often produces machines with more states than
+necessary.  The <CODE>machine</CODE> program eliminates redundant states as its
+final step.
+
+<P>The alphabet rule says that any member of the machine's alphabet is
+a regular expression.  In the program, a symbol can be any one-letter word other
+than <CODE>*</CODE>.  The symbol <CODE>X</CODE> is translated into the machine
+
+<P><PRE>[1 [[1 X 2]] [2]]
+</PRE>
+
+<P>(You'll see that the program works by combining little machines
+into bigger ones.  Every time the program has to invent a new machine
+state it uses the next free number.  So the state numbers might not
+be 1 and 2 in a real example.)  The procedure
+<A HREF="v3ch1.html#ndletter"><CODE>ndletter</CODE></A> handles this
+rule.
+
+<P>Next comes the <EM>concatenation rule.</EM>  The regular expression
+
+<P><PRE>[A B]
+</PRE>
+
+<P>matches a string with two parts; the
+first substring matches the <CODE>A</CODE> and the second matches the <CODE>
+B</CODE>.  In this simple example each &quot;substring&quot; matches only a single
+letter.  In a more complicated concatenation like
+
+<P><PRE>[[OR A C] [* B]]
+</PRE>
+
+<P>there are different choices for each substring.  For example, that
+regular expression is matched by the string
+
+<P><PRE>CBBB
+</PRE>
+
+<P>in which the letter <CODE>C</CODE> matches the first part of the
+expression and the substring <CODE>BBB</CODE> matches the second part.
+
+<P>To translate a regular expression of this kind (a concatenation) into a
+finite-state machine, we begin by recursively translating the subexpressions
+into smaller machines.  Then we have to &quot;splice&quot; the two machines together.
+Procedure <A HREF="v3ch1.html#ndconcat"><CODE>ndconcat</CODE></A> does this splicing.
+
+<P>We'll begin with the simplest possible example.  Suppose we want to
+translate the regular expression
+
+<P><PRE>[A B]
+</PRE>
+
+<P>We have already translated the two symbols <CODE>A</CODE> and <CODE>B</CODE> into
+machines:
+
+<P><CENTER><IMG SRC="concat-before.gif" ALT="figure: concat-before"></CENTER>
+
+<P>The combined machine must start at the start state of the first
+component machine, state 1.  The combined machine should be in an accepting
+state when <EM>both</EM> component machines have been satisfied; in other
+words, the accepting states of the combined machine should be those of the
+<EM>second</EM> component machine.  In this case that means only state 4.
+
+<P>To splice the component machines together we must add transitions (arrows)
+between them.  Specifically, whenever the first component machine gets into
+an accepting state, the combined machine should follow the same transitions
+that apply to the start state of the second component machine.  In this
+case, when the combined machine gets into state 2 (the accepting state of
+the first component machine) it should follow the same transitions that
+apply to state 3 (the start state of the second machine).  There is only one
+such transition, a <CODE>B</CODE> arrow into state 4.  That means we must add the
+arrow
+
+<P><PRE>[2 B 4]
+</PRE>
+
+<P>to the combined machine.
+
+<P><CENTER><IMG SRC="concat-after.gif" ALT="figure: concat-after"></CENTER>
+
+<P>State 3, although it is still in the machine, is now useless.
+There is no way for the machine to get into state 3.  Later
+in the translation process another procedure removes
+such &quot;orphaned&quot; states from the machine.
+
+<P>As a slightly more complicated example, consider the translation of the
+regular expression
+
+<P><PRE>[[OR A C] [* B]]
+</PRE>
+
+<P>We start by supposing that we've already translated the two
+subexpressions separately:
+
+<P><CENTER><IMG SRC="concat2-before.gif" ALT="figure: concat2-before"></CENTER>
+
+<P>(We haven't yet discussed the alternatives rule or the repetition
+rule, so I haven't yet explained how these subexpressions are translated.
+For now, please just take on faith that this picture is correct.  We'll get
+to those other rules shortly.)
+
+<P>The start state of the combined machine is the start state of the first
+component, state 1.  At every accepting state of the first machine we must
+duplicate the transitions from the start state of the second machine.  In
+this example the start state of the second machine has only the transition
+
+<P><PRE>[4 B 5]
+</PRE>
+
+<P>but there are two accepting states in the first machine, so we
+must add two new arrows:
+
+<P><PRE>[2 B 5]    [3 B 5]
+</PRE>
+
+<P>A final detail is that in this example the start state of the
+second component machine, state 4, is an accepting state.  That means that
+the second substring can be empty.  Therefore the accepting states of the
+first component machine should also be accepting states of the combined
+machine.  Here is the result:
+
+<P><CENTER><IMG SRC="concat2-after.gif" ALT="figure: concat2-after"></CENTER>
+
+<P>Again, state 4 is now an &quot;orphan&quot; and will be eliminated
+later in the program.
+
+<P>The <EM>alternatives rule</EM> combines two machines in parallel, so to speak,
+rather than in series.  It works by inventing a new state
+that becomes the start state of the combined machine.  Arrows leaving
+from the new state duplicate the arrows from the start states of the
+component machines.  Procedure <A HREF="v3ch1.html#ndor"><CODE>ndor</CODE></A> handles this rule.
+
+<P>As an example, here is the translation process for
+
+<P><PRE>[OR A B]
+</PRE>
+
+<P>(or its abbreviation <CODE>AB</CODE>).  We start with two separate machines:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/alter-before.gif" ALT="figure: alter-before"></CENTER>
+
+<P>We combine them by inventing a new state 5:
+
+<P><CENTER><IMG SRC="alter-after.gif" ALT="figure: alter-after"></CENTER>
+
+<P>I haven't explained all the details of the construction process.
+For example, should the new state, state 5, be an accepting state?  In this
+example it shouldn't be.  See if you can think of a case where it might be;
+then read the program listing to see the exact algorithm that makes this
+decision.  Again, this construction process may leave unused states for
+later cleanup.
+
+<P>A much more serious problem is that an <CODE>or</CODE> construction is likely to
+produce a nondeterministic machine.  For example, here is the machine
+for
+
+<P><PRE>[OR [A B] [A C]]
+</PRE>
+
+<P><CENTER><IMG SRC="or-nondet.gif" ALT="figure: or-nondet"></CENTER>
+
+<P>Like the unused states, the problem of nondeterminism is
+left for the end of the program, when procedure <CODE>determine</CODE> translates
+the nondeterministic machine into a deterministic one.
+(The concatenation rule can also make nondeterministic machines, although
+it's not as likely.)
+
+<P>The final case to be considered is the <EM>repetition rule.</EM>  This rule
+acts on only one smaller machine, not two machines as in the previous
+two cases.  The rule doesn't require any new states.  It has two effects.
+One is to add the start state to the list of accepting states.  The
+second is to add arrows from the (old) accepting states that mimic
+the arrows from the start state.  (This is exactly like the splicing
+of two machines in the concatenation rule, but in this case we concatenate
+a single machine with itself!)  Procedure <A HREF="v3ch1.html#ndmany"><CODE>ndmany</CODE></A>
+makes this transformation.
+It, too, can result in a nondeterministic machine.
+
+<P>Here is an example of the rule:
+
+<P><CENTER><IMG SRC="repetition.gif" ALT="figure: repetition"></CENTER>
+
+<P>These four rules are combined by <A HREF="v3ch1.html#nondet"><CODE>nondet</CODE></A>,
+a procedure whose input is
+a regular expression and whose output is a (possibly nondeterministic) machine.
+
+<P><PRE>to nondet :regexp
+if and (wordp :regexp) (equalp count :regexp 1) [output ndletter :regexp]
+if wordp :regexp [output ndor reduce &quot;sentence :regexp]
+if equalp first :regexp &quot;or [output ndor butfirst :regexp]
+if equalp first :regexp &quot;* [output ndmany last :regexp]
+output ndconcat :regexp
+end
+</PRE>
+
+<P>The top-level procedure <A HREF="v3ch1.html#machine"><CODE>machine</CODE></A>
+does a little initialization
+and then does its work with the instruction
+
+<P><PRE>output optimize determine nondet :regexp
+</PRE>
+
+<P>That is, first it creates what may be a
+nondeterministic machine,
+then if necessary it translates that into a deterministic one (eliminating
+orphan states in the process), then it gets
+rid of any redundant states that may have been created.
+
+<P><H2>Making the Machine Deterministic</H2>
+
+<P>In the first volume of this series we explored the techniques of depth-first
+and breadth-first tree traversal.  Given a tree structure, these algorithms
+allow us to &quot;visit&quot; every node of the tree once.
+
+<P>A finite state machine can be viewed as a structure almost like a tree.
+The machine's start state corresponds to the root node; the states that
+can be reached by an arrow from a given state are the children of that state.
+But there is one important difference between trees and machines:  In a tree,
+every node (except for the root node) has exactly one parent.  The tree
+search algorithms depend on that fact to ensure that each node is visited
+only once.  In a machine, arrows from several different states can lead to
+the same state, so a state may have several &quot;parents.&quot;  The technical name
+for an arbitrary collection of nodes with connections among them is a
+<EM>graph.</EM>  If the connections are one-way, as in the finite
+state machine diagrams, it's called a <EM>directed graph.</EM>
+
+<P>Searching a graph is just like searching a tree, except that we have to
+keep track of which nodes we've already visited, to avoid examining the
+same node twice.  Procedure <A HREF="v3ch1.html#determine"><CODE>determine</CODE></A>
+creates a list named <CODE>states</CODE>, initially
+empty, into which each state number is added as the
+program examines that state.  The depth first traversal of the machine
+is carried out by procedure <A HREF="v3ch1.html#nd.traverse"><CODE>nd.traverse</CODE></A>;
+although this procedure looks different from the
+<A HREF="../v1ch14/v1ch14.html#depth.first"><CODE>depth.first</CODE></A>
+procedure in Volume 1, it
+uses the same basic algorithm.  Given a state as input, it processes
+that state and invokes itself recursively for all of the children of
+that state--the states reachable by arrows from the input state.  Unlike
+<CODE>depth.first</CODE>, though, <CODE>nd.traverse</CODE> is an operation.  It
+outputs a new list of moves (arrows) for the deterministic version of
+the machine.
+
+<P>What does it mean to process a state?  <CODE>Nd.traverse</CODE> first checks
+whether this state has already been processed; if so, it outputs an empty
+list, because this state will contribute no new moves to the machine.
+Otherwise, it remembers this state number as having been processed, finds
+all the moves starting from this state, and calls
+<A HREF="v3ch1.html#check.nd"><CODE>check.nd</CODE></A> to look for
+nondeterminism.  <CODE>Check.nd</CODE> takes the first available arrow whose tail
+is at the state we're processing, and looks for all arrows with the same
+tail and with the same letter.<SUP>*</SUP>
+The local variable <CODE>heads</CODE> will contain a list of all the state numbers
+reachable by these arrows.  (The state numbers are sorted into increasing
+order, and duplicates eliminated.  If the machine has two completely
+identical arrows, that doesn't result in nondeterminism.)
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>By the way, <CODE>nondet</CODE> always
+creates arrows with only a single letter; if two or more letters lead from
+the same state to the same state, a separate arrow is created for each of
+them.  This makes for a longer machine list, but makes steps like this
+one--looking for two arrows with the same letter--easier.  Once the
+deterministic machine has been created, procedure <CODE>optimize</CODE> will combine
+such arrows into the abbreviated form with
+more than one letter per arrow.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>There are
+three cases for what <CODE>check.nd</CODE> must do.  First, if there is
+only one state number in <CODE>:heads</CODE>, then there is no nondeterminism for
+this letter, and <CODE>check.nd</CODE> includes the arrow from the original
+machine as part of the deterministic machine.  Second, if there is more
+than one state number, <CODE>check.nd</CODE> looks to see if we've already seen
+the same combination of result states.  If so, then we've already created
+a new state equivalent to that combination of old states, and <CODE>check.nd</CODE>
+creates a new arrow pointing to that existing new state.  Finally, the third
+case is that this combination of states is one we haven't seen before.  In
+that case, <CODE>check.nd</CODE> must create a new state, with arrows duplicating
+those from all of the original states.
+
+<P>In other words, if there are arrows
+
+<P><PRE>[[3 B 4] [3 B 7]]
+</PRE>
+
+<P>then <CODE>check.nd</CODE> will invent a new state that is an &quot;alias&quot;
+for &quot;four-and-seven.&quot;  If the same machine also contains arrows
+
+<P><PRE>[[8 C 4] [8 C 7]]
+</PRE>
+
+<P>then <CODE>check.nd</CODE> will use the <EM>same</EM> alias state for this
+pair, not inventing a new one.  The new
+state is given arrows matching those of all its component states (4
+and 7 in this example).  The new state might itself contain a nondeterministic
+branch, but that's okay because the new state will eventually be processed
+as we continue to traverse the machine graph.
+
+<P>You might think that this process could go on forever: that each new
+state <CODE>check.nd</CODE> invents will turn out to include nondeterminism, which
+will require yet another new state to resolve.  Fortunately, that
+doesn't happen; the process does always end eventually.  (In the next
+chapter we'll see what the limit is on the number of necessary states
+for the deterministic machine.)
+
+<P>Because <CODE>determine</CODE> uses a graph traversal algorithm to examine
+the original machine's states, it will never find &quot;orphan&quot; states
+that can't be reached by arrows from some other state.  That's why
+the process of making the machine deterministic also eliminates orphan
+states, with no extra effort.
+
+<P><H2>Eliminating Redundant States</H2>
+
+<P>The machines produced by <CODE>determine</CODE> are runnable, but often ugly;
+they contain many more states than necessary.  Procedure
+<A HREF="v3ch1.html#optimize"><CODE>optimize</CODE></A>
+eliminates many redundancies and also combines arrows with the same
+head and tail but with different letters.
+First it goes through the machine's arrow list,
+creating a list for each state representing the exits from that state:
+
+<P><CENTER><IMG SRC="optimize.gif" ALT="figure: optimize"></CENTER>
+<PRE>   [[* [A B]] C]
+State 1: [[A 2] [C 4]]
+State 2: [[B 3]]
+State 3: [[A 2] [C 4]]
+State 4: []
+</PRE>
+
+<P>In this machine, states 1 and 3 have the same exit list.
+(In these lists, each arrow is represented with only two members; the
+arrow's tail is not included.  That's because states 1 and 3 would <EM>
+not</EM> have identical lists if the tails were included.  State 1's list
+would be
+
+<P><PRE>[[1 A 2] [1 C 4]]
+</PRE>
+
+<P>and state 3's list would have arrows starting with 3.  In the
+program, the two-member form of an arrow is called a <EM>stub.</EM>)
+
+<P>The program must be careful about the order in which it puts stubs
+in each state's list, so it doesn't end up with
+
+<P><PRE>[[C 4] [A 2]]
+</PRE>
+
+<P>for one of the states.  That's why <A HREF="v3ch1.html#stub.add"><CODE>stub.add</CODE></A>
+takes trouble
+to insert each stub in a well-defined position, rather than just adding
+each new stub at the beginning or end of the list.  It's also in
+<CODE>stub.add</CODE> that arrows connecting the same two states but with different
+letters are combined into a single arrow.
+
+<P>Since states 1 and 3 also agree in their acceptingness (namely they aren't
+accepting states), they can be combined into one state.  <CODE>
+Optimize.state</CODE> can replace every reference to state 3 with a reference to
+state 1.
+
+<P><H2>A Finite-State Adder</H2>
+
+
+<P>I promised earlier to show you a use for finite-state machines other
+than accepting or rejecting strings.  In this section I'll fulfill
+that promise by designing a machine to add two numbers.  We'll represent
+the numbers in binary notation, in which each digit represents a power
+of 2 instead of a power of 10.
+
+<P>If you've come across binary numbers before, you can skip this paragraph.
+Just as the ordinary notation for numbers is based on the ten digits 0 to 9,
+binary notation is based on <EM>two</EM> digits, 0 and 1.  In ordinary
+(&quot;decimal&quot;) notation, the amount that each digit contributes to the total
+depends on where it is in the number.  For example, in the number 247, the
+digit 2 contributes two hundred, not just two, because it's in the third
+position counting from the right.  Each digit's contribution is the value of
+the digit itself multiplied by a power of ten:
+<P><CENTER>2&times;10<SUP><SMALL>2</SMALL></SUP>
++ 4&times;10<SUP><SMALL>1</SMALL></SUP>
++ 7&times;10<SUP><SMALL>0</SMALL></SUP></CENTER><P>
+(10<SUP><SMALL>2</SMALL></SUP> is 100; 10<SUP><SMALL>1</SMALL></SUP> is 10; 10<SUP><SMALL>0</SMALL></SUP> is just 1.)  In binary, the
+contribution of each digit is multiplied by a power of <EM>two,</EM> so the
+binary number 10101 represents
+<P><CENTER>1&times;2<SUP><SMALL>4</SMALL></SUP>
++ 0&times;2<SUP><SMALL>3</SMALL></SUP>
++ 1&times;2<SUP><SMALL>2</SMALL></SUP>
++ 0&times;2<SUP><SMALL>1</SMALL></SUP>
++ 1&times;2<SUP><SMALL>0</SMALL></SUP></CENTER><P>
+which is 16+4+1 (2<SUP><SMALL>4</SMALL></SUP>+2<SUP><SMALL>2</SMALL></SUP>+2<SUP><SMALL>0</SMALL></SUP>) or 21.  Computers use binary notation
+because it's easy to build electrical circuits in which each wire is either
+on or off.  In Chapter 2 we'll talk about an example.  Right now I want to
+show something different--not an actual electronic machine but an abstract
+machine based on the ideas we've been using in this chapter.
+
+<P>The machine will add two binary numbers, one digit position at a time, just
+the way you add multi-digit numbers yourself.  When you see a problem like
+<P><CENTER><TABLE><TR><TD align="right">376
+<TR><TD align="right"><U>+572</U></TABLE></CENTER><P>
+you start at the right and say, &quot;6 plus 2 is 8; 7 plus 7 is 14, which is
+4 carry 1; 1 plus 3 plus 5 is 9.&quot;  The finite-state adder works the same
+way except that the digits are always 0 or 1.
+
+<P>The machine will add any numbers, but to explain how it works I want to
+consider a specific example.  Let's say we want to add 52 and 21.  (By the
+way, I didn't pick these numbers because they name card games, but because
+the pattern of digits in their binary forms is convenient for the
+explanation I want to give.)  52 in binary is 110100 (32+16+4) and 21 is
+10101 (16+4+1).  I'm going to write these one above the other, with a couple
+of extra zeros on the left to leave room for a possible carry:
+
+<P><PRE>          0 0 1 1 0 1 0 0
+          0 0 0 1 0 1 0 1
+</PRE>
+
+<P>Remember how a finite-state machine works:  At a given moment it's
+in some <EM>state,</EM> then it reads some <EM>input</EM> symbol and goes to
+another state.  In this problem, since we have two numbers to add, the most
+natural way to think about it would be to give the machine <EM>two</EM> inputs
+at a time.  This idea doesn't quite fit in with the formal definition of a
+finite-state machine, but we can let the machine's &quot;alphabet&quot; consist of
+<EM>pairs</EM> of digits, so something like <CODE>01</CODE> would be a single input.
+(By the way, the word <EM>bit</EM> is commonly used as an abbreviation for
+&quot;binary digit.&quot;)  Just as you added vertical pairs of digits (first 6 and 2,
+then 7 and 7, and so on) in the earlier example, we'll use vertical pairs of
+bits as the inputs to the finite-state adder, starting from the right end.
+So the first input will be 01, then 00, then 11, then 00, then 11 again,
+then 10, and then 00 twice.  From now on, in this section, when you see
+something like 10 you should remember that it is a <EM>single</EM> input to
+the finite-state machine, a single symbol, not two in a row.
+(In the diagram below, an arrow labeled <CODE>01/10</CODE> represents two
+arrows, one for the input <CODE>01</CODE> and one for the input <CODE>10</CODE>.  These
+two arrows will always go to the same state because 0+1=1+0.)
+
+<P>We need to make one change in the notation used in machine diagrams.
+We no longer want to mark each state as accepting (double circle)
+or rejecting (single circle).  Instead, each state produces an <EM>
+output</EM> that can be any arbitrary symbol.  In this machine the outputs
+will be 0 or 1, representing the binary digits of the sum.  Inside
+each state circle, instead of just a state number you'll see something
+like &quot;3/1&quot;; this means that it's state number 3 and that the output
+from that state is 1.
+
+<P>Here is the machine:
+
+<P><CENTER><IMG SRC="fsm-add.gif" ALT="figure: fsm-add"></CENTER>
+
+<P>State 1, the start state, has no output.  When the machine is in start
+state it hasn't seen any digits of the addends yet, so it can't compute
+a digit of the sum.  States 2 and 4 output a zero digit, while states
+3 and 5 output a one.  (Like the inputs, the number that the machine
+outputs is presented with its rightmost bit first.  The machine works
+this way for the same reason that <EM>you</EM> add numbers from right
+to left:  That's the direction in which a &quot;carry&quot; digit moves from
+one column to another.)
+
+<P>Why are there <EM>two</EM> zero-output states and <EM>two</EM> one-output
+states?  The reason is that the machine is in state 4 or 5 when there
+is a carry into the next digit of the sum.
+
+<P>Let's trace through my example.  We start in state 1.  The first input
+symbol is 01, representing a 0 in the rightmost (binary) digit of 52
+and a 1 in the rightmost digit of 21.  The machine enters state 3
+and outputs a 1.
+
+<P>The next input is 00 because both numbers have zero as the second
+digit.  The machine enters state 2 and outputs 0.
+
+<P>The next input is 11.  The machine enters state 4 and outputs 0.  Being in
+state 4 means that there is a carry from this position into the next.
+
+<P>You can finish the example yourself.  The sum should be 01001001,
+or 73.
+
+<P><H2>Counting and Finite-State Machines</H2>
+
+<P>Earlier we saw that you can't write a regular expression for a rule
+that requires balanced parentheses.  Since regular expressions are
+equivalent to finite-state machines, you won't be surprised to learn
+that finite-state machines can't count.
+
+<P>
+Actually, they can count up to a point; it's just that each finite-state
+machine can only count up to a fixed limit.  For example, here is
+a finite-state machine that accepts strings of balanced parentheses
+up to four deep:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch1/fourdeep.gif" ALT="figure: fourdeep"></CENTER>
+
+<P>This machine will accept strings like these:
+
+<P><PRE>          ()        (())      ()()
+          (()())    (((())))  (((())))(())
+</PRE>
+
+<P>There is no limit to the <EM>length</EM> of the string this
+machine can handle.  For example, it will accept this:
+
+<P><PRE>          ()()()()()()()()()()()()()()
+</PRE>
+
+<P>But there can be no more than four parentheses open <EM>
+at once</EM>; the machine will reject
+
+<P><PRE>          ((((()))))
+</PRE>
+
+<P>Even this limited counting ability of finite-state machines is of great
+practical value.  Real computers, after all, are finite-state
+machines.  Any real computer has a finite amount of memory, and this
+memory can be in a finite number of states.  But the number is quite
+huge.  If a real computer includes a parenthesis-counting program
+that is limited to, say, 20,000 levels of parentheses, nobody will
+ever notice that the limit isn't infinite.
+
+<P>(The number of states in a real computer may be even larger than you're
+thinking.  Each bit of computer memory isn't a state.  Instead, if
+a computer has <EM>n</EM> bits of memory it has 2<SUP><SMALL>n</SMALL></SUP> states!  For
+example, a computer with three bits of memory can use those bits to
+represent <EM>eight</EM> states:
+
+<P><PRE>0 0 0
+0 0 1
+0 1 0
+0 1 1
+1 0 0
+1 0 1
+1 1 0
+1 1 1
+</PRE>
+
+<P>The number of possible states in a typical large computer
+is greater than the number of atoms in the galaxy.)
+
+<P>In a moment I'm going to talk about a theoretical model of a machine
+with infinite memory.  You might wonder why it pays to study such
+machines, since any real machine has to be limited in memory.  The
+answer has to do with my example about the 20,000 levels of parentheses.
+It is theoretically possible to write a regular expression for such
+strings.  To show you how it's done, here is a regular expression
+for up to three levels:
+
+<P><CENTER><IMG SRC="xx2.gif"></CENTER>
+
+<P>(I've drawn boxes around the actual alphabet-rule symbols just to
+make it a little easier for you to distinguish between the parentheses,
+which are symbols in the input strings, and the brackets, which are part of
+the glue that holds a regular expression together.)
+
+<P>There is no theoretical problem about extending this regular expression
+to allow up to 20,000 parentheses.  But a machine based on this technique
+would be very large and complicated.  Instead, it makes more sense to
+<EM>pretend</EM> that the computer has an infinite amount of memory available
+and use a formal system (like the production rules I mentioned briefly)
+that depends on an infinite memory.  Such a formal system leads to
+a shorter, more elegant expression of the balanced parentheses rule.
+In practice, we can provide enough memory for any of the strings our
+program will actually meet.
+
+<P><H2>Turing Machines</H2>
+
+<P>One way we might explore infinite machines is to imagine that they're
+represented by state diagrams, like those of finite-state machines,
+but with an infinite number of states.  For example, here is a picture
+of an infinite-capacity parenthesis counter:
+
+<P><CENTER><IMG SRC="waydeep.gif" ALT="figure: waydeep"></CENTER>
+
+<P>The trouble with this idea is that it's hard to model precisely what's
+meant by that row of dots on the right.  There's no way we can have
+a <EM>complete</EM> formal description of an infinitely complex machine.
+
+<P>Instead, consider what <EM>you</EM> do when you have to solve a problem
+too complex to fit in your own memory.  You don't build yourself a
+bigger brain; you get a pencil and some paper.  That is, you use <EM>
+external</EM> storage.  You can imagine that your brain is a finite-state
+machine but that it has access to an infinite supply of paper.
+
+<P>Of course, this division of a problem's necessary information into
+a finite <EM>internal</EM> state and an infinite <EM>external</EM> memory
+also models actual computers in an obvious way.  The internal state
+in the model represents the internal memory of the computer, while
+the external memory in the model represents such storage devices as
+disks and tapes.  To solve a bigger problem you don't have to buy
+a bigger computer; you just have to switch floppy disks occasionally.
+
+<P>You might think that the mathematical model I'm talking about was
+based on the analogy with real computers and that my story about the finite-state
+brain is just a coincidence.  But in fact this model was invented
+by Alan M. Turing in 1936, before there were any computers!  It was
+<EM>human</EM> problem-solving that Turing wanted to model with a machine.
+
+<P>What is a Turing machine?  Start by imagining a finite-state machine
+with different possible outputs, like the adder we saw earlier.  Attached
+to this machine is a tape of limitless length.  Symbols from some
+alphabet, like the machine's input and output symbols, can be written
+on the tape.  There is a reading and writing mechanism, like the heads
+of a magnetic tape recorder, that can travel along the tape.
+
+<P>Just as each state of the machine can have an output associated with
+it, each state can also take action to affect the tape:  It can move
+the head by one symbol in either direction and it can change the
+symbol at the head's current position.
+
+<P>In fact, we simplify the formal description of the machine by
+using the tape as the input/output device as well as the storage device.
+That is, we can start with some sequence of symbols already written
+on the tape.  That sequence serves as the input to the machine; state
+transitions are based on the symbol under the tape head, not a symbol
+from some other source.  Likewise, the output from a state (if any)
+is written on the tape.
+
+<P>Somewhat analogous to the concept of an accepting state in our earlier
+examples, a Turing machine can have <EM>halting</EM> states.  When the
+machine enters a halting state it stops its operation.  There are
+no more state transitions.  The output from the machine is whatever
+sequence of symbols it leaves written on the tape.
+
+<P><H2>Turing's Thesis</H2>
+
+
+<P>Turing invented his abstract machine because he was trying to formalize
+the idea of an <EM>effective procedure</EM>:  What does it mean to specify
+a technique for solving some problem well enough that we can be sure
+it will really work?  As an analogy, think about directions for driving
+from here to somewhere.  Someone can hand you a piece of paper with
+a list of instructions like &quot;When you get to the gas station
+on the left, turn right.&quot;  But sometimes you get directions that
+weren't careful enough.  There may be a sharp right turn and a mild
+right turn available near the gas station.  There may be a fork in
+the road before you even get to the gas station.
+
+<P>Turing's idea is that any problem for which there is <EM>any</EM> effective
+procedure can be modeled by a Turing machine.  The phrase &quot;any effective
+procedure&quot; is taken to include the workings of the human mind.  If
+Turing is right, any problem that a person can solve can be programmed
+for a computer.
+
+<P>This claim isn't something that can be proved or disproved mathematically
+because there is no prior formal definition of &quot;effective procedure&quot;
+to which Turing machines can be compared.  Also, it may be that the
+idea of a procedure somehow doesn't cover all the different kinds
+of thinking that people do.  Maybe it's true, for example, that computers
+are potentially as powerful as people at solving problems, but &quot;solving
+problems&quot; might not turn out to be an appropriate description of
+what's going on when we feel emotions.  If that turned
+out to be true, we <EM>should</EM> expect a computer to become the world's
+chess champion someday, but we <EM>shouldn't</EM> expect one to become
+the world's champion poet.
+
+<P>But this possible conclusion has been attacked from both sides.  Some
+people think that emotions really <EM>are</EM> a matter of computable
+procedures.  Kenneth Colby's program called Parry attempts to model
+the behavior of a paranoid human being by manipulating variables
+for emotions like anger and fear.  On the other hand, some people
+think that even chess doesn't fall within the realm of things that
+people do by carrying out effective procedures in Turing's sense.
+A chess master, these people say, doesn't analyze the chess board
+in a step-by-step fashion like a computer.  He looks at the board
+as a single, whole entity, and the important features just spring
+to mind by some process that is still rather mysterious.
+
+<P>What <EM>is</EM> known is that several other mathematical models of effective
+procedures have been shown to be equivalent to Turing machines, in
+the same sense in which regular expressions are equivalent to finite-state
+machines.  For example, all of the popular programming languages are
+Turing-equivalent.  There's no such thing as a computation that can
+be done in Logo but not in Pascal, or vice versa.  (Of course, one
+language may be more <EM>convenient</EM> than another for a given problem.)
+
+<P><H2>The Halting Theorem</H2>
+
+
+<P>I'm not going to get into specific examples of Turing machine programming
+here.  That would take too much space for a single chapter; if you're
+interested you should pursue the topic in a book on automata theory.
+But I want to give one example of the theoretical value of Turing machines.
+
+<P>You've undoubtedly had the experience of writing a Logo program with a bug
+that causes an &quot;infinite loop&quot;--you run the program and it just sits there
+forever, when instead it's supposed to compute and print some results.
+That's a frustrating kind of bug because you're never quite sure if the
+program is really broken or if it's just very slow.  Maybe if you waited
+another minute it would come up with the answer.  Wouldn't it be great if,
+when you started the program running, Logo could print an error message like
+<CODE>This program has an infinite loop</CODE>, just as it does for other errors?
+
+<P>It turns out that infinite loops can't, in general, be detected
+automatically.  Certainly <EM>some</EM> infinite loops are very easy to spot,
+and we can write programs that catch certain categories of infinite loop.
+But we can't write a program that's <EM>guaranteed</EM> to catch infinite
+loops in programs, in Logo or any other Turing-equivalent language.  The
+fact that it's impossible is called the <EM>halting theorem.</EM>
+
+<P>It's a little tricky understanding just what the halting theorem says because
+it involves Turing machines that manipulate Turing machines as data, which
+is a kind of self-reference akin to recursion.  Self-reference is always hard
+to talk about and can lead to paradoxes like the classic &quot;This statement
+is false.&quot; (Is the sentence in quotes true or false?  If it's true, then it
+must be false, because it says so.  But if it's false, and it <EM>says</EM>
+it's false, it must really be true!)  So let's proceed carefully.
+
+<P>The data recorded on a Turing machine's tape is a string of symbols.
+Generally we choose the symbols to represent something meaningful; for
+example, a string of digits can represent a number.  Earlier in this chapter
+we used strings of symbols like
+
+<P><PRE>[1 [[1 A 2] [2 B 3] [3 A 2]] [1 3]]
+</PRE>
+
+<P>to represent a finite-state machine.  There's no reason we
+couldn't put <EM>that</EM> string of symbols on the tape of a Turing machine
+as its input.  For example, we could build a Turing machine that would work
+like my <CODE>fsm</CODE> program, simulating the finite-state machine that it found
+written on its tape when it started.
+
+<P>Letting a Turing machine simulate a finite-state machine doesn't raise
+questions of self-reference.  But a Turing machine, too, is a formal
+structure; it, too, can be represented as a string of symbols.
+
+<P>Because a representation of a Turing machine can be the input to another
+Turing machine, we can design Turing machines that answer questions about
+Turing machines.  For example, we can write a <EM>universal</EM> Turing
+machine, one that simulates any Turing machine the way <CODE>fsm</CODE> simulates
+any finite-state machine.
+
+<P>A universal Turing machine (a Turing machine simulator) sort of half-solves
+the halting problem.  Suppose we want to know whether a given machine will
+halt after it is started with a given input.  (This is like asking whether a
+certain Logo procedure will terminate if it's invoked with a particular
+input.)  We can use the universal Turing machine to simulate the one we're
+interested in.  If the machine <EM>does</EM> halt, we'll find out about it.
+But if the machine in question <EM>doesn't</EM> halt, then the simulator
+won't halt either.  We'll still have the problem we had in the first
+place--how can we be sure it won't finally halt if we give it another
+minute?
+
+<P>To solve the halting problem, what we need is a Turing machine that accepts
+a representation of any Turing machine as input, just like the universal
+Turing machine.  But this one has to be guaranteed to halt, even if the
+input machine wouldn't halt.  That's what the halting theorem says we can't
+do.
+
+<P><H2>Proving the Halting Theorem in Logo</H2>
+
+<P>What makes it possible to raise the question of whether a Turing machine can
+decide whether another Turing machine would halt for a given input tape is
+the fact that one Turing machine's &quot;program&quot; can be represented as data
+for another Turing machine.  This is also true of Logo procedures.  In
+particular, the higher-order procedures like <CODE>map</CODE> and <CODE>filter</CODE>
+manipulate other procedures by accepting their names as inputs.
+We can, therefore, use Logo
+procedures to illustrate the proof of the halting theorem.
+
+<P>We'll consider a Logo procedure with an input as analogous to a Turing
+machine with its input tape.  We want to prove that there can't be a Logo
+procedure that could tell whether such a procedure stops for a given input.
+The technique we use is called <EM>proof by contradiction.</EM>  In this
+technique we assume that there <EM>is</EM> such a procedure, then show that
+this assumption leads to a paradox.
+
+<P>So let's imagine that someone has written a Logo predicate <CODE>haltp</CODE> that
+takes two inputs: the name of a procedure and an input value for that
+procedure.  <CODE>Haltp</CODE> will output <CODE>true</CODE> if the procedure it's testing
+would eventually stop, given the specified input; <CODE>haltp</CODE> outputs <CODE>
+false</CODE> if the procedure it's testing would get into an infinite loop, like a
+recursive procedure without a stop rule.  (In practice, if you think about
+your own experience debugging programs, it's easy to tell if a procedure
+doesn't have a stop rule at all, but not so easy to be sure that the stop
+rule will always eventually be satisfied.  Think about a Pig Latin program
+given a word of all consonants as input.  We want
+
+<P><PRE>to piglatin :word
+if memberp first :word [a e i o u] [output word :word &quot;ay]
+output piglatin word bf :word first :word
+end
+
+? <U>print haltp &quot;piglatin &quot;salami</U>
+true
+? <U>print haltp &quot;piglatin &quot;mxyzptlk</U>
+false
+</PRE>
+
+<P>Remember that <CODE>haltp</CODE> itself must <EM>always</EM> stop, even
+in the case where <CODE>piglatin</CODE> wouldn't stop.)
+
+<P>Now consider this Logo procedure:
+
+<P><PRE>to try :proc
+if haltp :proc :proc [loop]
+end
+
+to loop
+loop
+end
+</PRE>
+
+<P>Since <CODE>haltp</CODE> works, we're assuming, on <EM>any</EM> Logo
+procedure with one input, it must work on <CODE>try</CODE> in particular.
+What happens if we say
+
+<P><PRE>? <U>try &quot;try</U>
+</PRE>
+
+<P>Does this stop or loop?  Suppose it stops.  <CODE>try</CODE> begins its
+work by evaluating the expression
+
+<P><PRE>haltp &quot;try &quot;try
+</PRE>
+
+<P>Since we've said <CODE>try</CODE> will stop, given <CODE>try</CODE> as input,
+<CODE>haltp</CODE> will output <CODE>true</CODE>.  It follows, from the definition of <CODE>
+try</CODE>, that <CODE>try</CODE> will invoke <CODE>loop</CODE> and will <EM>not</EM> stop.
+Similarly, if we start with the assumption that <CODE>try</CODE> will loop, then
+<CODE>haltp</CODE> must output <CODE>false</CODE> and so, from the definition of <CODE>
+try</CODE>, you can see that <CODE>try</CODE> <EM>will</EM> stop.  Whatever value <CODE>
+haltp</CODE> outputs turns out to be incorrect.
+
+<P>It was the assumption that we could write an infallible <CODE>haltp</CODE> that led
+us into this contradiction, so that assumption must be wrong.  We can't write
+a Logo procedure that will automatically detect infinite loops in our
+programs.  A similar proof could be made in any language in which one program
+can manipulate another program as data--that is, in any Turing-equivalent
+language.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch0/v3ch0.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch2/v3ch2.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+;;; Finite State Machine Interpreter (<A NAME="fsm">FSM</A>)
+
+to game :which
+fsm thing word "mach :which
+end
+
+to fsm :machine
+cleartext
+setcursor [0 3]
+localmake "start startpart :machine
+localmake "moves movepart :machine
+localmake "accept acceptpart :machine
+fsm1 :start
+end
+
+to fsm1 :here
+ifelse memberp :here :accept [accept] [reject]
+fsm1 (fsmnext :here readchar)
+end
+
+to fsmnext :here :input
+blank
+if memberp :input (list char 13 char 10) ~
+   [print ifelse memberp :here :accept ["| ACCEPT|] ["| REJECT|]
+    output :start]
+type :input
+catch "error [output last find [fsmtest :here :input ?] :moves]
+output -1
+end
+
+to fsmtest :here :input :move
+output and (equalp :here arrowtail :move) ~
+           (memberp :input arrowtext :move)
+end
+
+;; Display machine state
+
+to accept
+display "accept
+end
+
+to reject
+display "reject
+end
+
+to blank
+display "|      |
+end
+
+to display :text
+localmake "oldpos cursor
+setcursor [15 1]
+type :text
+setcursor :oldpos
+end
+
+;; Data abstraction for machines
+
+to startpart :machine
+output first :machine
+end
+
+to movepart :machine
+output first bf :machine
+end
+
+to acceptpart :machine
+output last :machine
+end
+
+to make.machine :start :moves :accept
+output (list :start :moves :accept)
+end
+
+;; Data abstraction for arrows
+
+to arrowtail :arrow
+output first :arrow
+end
+
+to arrowtext :arrow
+output first butfirst :arrow
+end
+
+to arrowhead :arrow
+output last :arrow
+end
+
+to make.arrow :tail :text :head
+output (list :tail :text :head)
+end
+
+;; Machine descriptions for the guessing game
+
+make "mach1 [1 [[1 AB 1]] [1]]
+make "mach2 [1 [[1 ABC 2] [2 ABC 1]] [1]]
+make "mach3 [1 [[1 A 2] [2 B 3] [3 ABC 3]] [3]]
+make "mach4 [1 [[1 A 2] [1 B 3] [1 C 4] [2 A 1] [3 B 1] [4 C 1]] [1]]
+make "mach5 [1 [[1 ABC 2] [2 B 1]] [1]]
+make "mach6 [1 [[1 A 2] [2 AB 2] [2 C 3] [3 AB 2] [3 C 3]] [3]]
+make "mach7 [1 [[1 AB 1] [1 C 2] [2 C 1]] [1]]
+make "mach8 [1 [[1 A 2] [1 BC 1] [2 A 1] [2 BC 2]] [1]]
+make "mach9 [1 [[1 AB 1] [1 C 2] [2 A 3] [2 B 1] [3 A 1]] [1]]
+make "mach10 [1 [[1 A 2] [1 BC 1] [2 A 2] [2 B 3] [2 C 1]
+                 [3 A 2] [3 B 1] [3 C 4] [4 A 2] [4 B 5] [4 C 1]
+                 [5 A 6] [5 BC 1] [6 ABC 6]]
+              [6]]
+
+
+;;; Regular Expression to FSM Translation (<A NAME="machine">MACHINE</A>)
+
+to machine :regexp
+localmake "nextstate 0
+output optimize determine nondet :regexp
+end
+
+;; First step: make a possibly <A NAME="nondet">nondeterministic</A> machine
+
+to nondet :regexp
+if and (wordp :regexp) (equalp count :regexp 1) ~
+   [output ndletter :regexp]
+if wordp :regexp [output ndor reduce "sentence :regexp]
+if equalp first :regexp "or [output ndor butfirst :regexp]
+if equalp first :regexp "* [output ndmany last :regexp]
+output ndconcat :regexp
+end
+
+;; <A NAME="ndletter">Alphabet</A> rule
+
+to ndletter :letter
+localmake "from newstate
+localmake "to newstate
+output (make.machine :from
+                     (list (make.arrow :from :letter :to))
+                     (list :to))
+end
+
+;; <A NAME="ndconcat">Concatenation</A> rule
+
+to ndconcat :exprs
+output reduce "string (map "nondet :exprs)
+end
+
+to string :machine1 :machine2
+output (make.machine (startpart :machine1)
+                     (sentence (movepart :machine1)
+                               (splice acceptpart :machine1 :machine2)
+                               (movepart :machine2))
+                     (stringa (acceptpart :machine1)
+                              (startpart :machine2)
+                              (acceptpart :machine2)))
+end
+
+to stringa :accept1 :start2 :accept2
+if memberp :start2 :accept2 [output sentence :accept1 :accept2]
+output :accept2
+end
+
+;; <A NAME="ndor">Alternatives</A> rule
+
+to ndor :exprs
+localmake "newstart newstate
+localmake "machines (map "nondet :exprs)
+localmake "accepts map.se "acceptpart :machines
+output (make.machine :newstart
+                     (sentence map.se "movepart :machines
+                               map.se "or.splice :machines)
+                     ifelse not emptyp find [memberp (startpart ?)
+                                                     (acceptpart ?)]
+                                            :machines
+                            [fput :newstart :accepts]
+                            [:accepts])
+end
+
+to or.splice :machine
+output map [newtail ? :newstart] (arrows.from.start :machine)
+end
+
+;; <A NAME="ndmany">Repetition</A> rule
+
+to ndmany :regexp
+localmake "machine nondet :regexp
+output (make.machine (startpart :machine)
+                     sentence (movepart :machine)
+                              (splice (acceptpart :machine) :machine)
+                     fput (startpart :machine) (acceptpart :machine))
+end
+
+;; <A NAME="splice">Generate</A> moves from a bunch of given states (:accepts) duplicating
+;; the moves from the start state of some machine (:machine).
+;; Used for concatenation rule to splice two formerly separate machines;
+;; used for repetition rule to "splice" a machine to itself.
+
+to splice :accepts :machine
+output map.se [copy.to.accepts ?] (arrows.from.start :machine)
+end
+
+to arrows.from.start :machine
+output filter [equalp startpart :machine arrowtail ?] movepart :machine
+end
+
+to copy.to.accepts :move
+output map [newtail :move ?] :accepts
+end
+
+to newtail :arrow :tail
+output make.arrow :tail (arrowtext :arrow) (arrowhead :arrow)
+end
+
+;; <A NAME="newstate">Make</A> a new state number
+
+to newstate
+make "nextstate :nextstate+1
+output :nextstate
+end
+
+;; Second step: Turn nondeterministic FSM into a <A NAME="determine">deterministic</A> one
+;; Also eliminates "orphan" (unreachable) states.
+
+to determine :machine
+localmake "moves movepart :machine
+localmake "accepts acceptpart :machine
+localmake "states []
+localmake "join.state.list []
+localmake "newmoves nd.traverse (startpart :machine)
+output make.machine (startpart :machine) ~
+                    :newmoves ~
+                    filter [memberp ? :states] :accepts
+end
+
+to <A NAME="nd.traverse">nd.traverse</A> :state
+if memberp :state :states [output []]
+make "states fput :state :states
+localmake "newmoves (check.nd filter [equalp arrowtail ? :state] :moves)
+output sentence :newmoves map.se "nd.traverse (map "arrowhead :newmoves)
+end
+
+to <A NAME="check.nd">check.nd</A> :movelist
+if emptyp :movelist [output []]
+localmake "letter arrowtext first :movelist
+localmake "heads sort map "arrowhead ~
+                          filter [equalp :letter arrowtext ?] :movelist
+if emptyp butfirst :heads ~
+   [output fput first :movelist
+                check.nd filter [not equalp :letter arrowtext ?]
+                                :movelist]
+localmake "check.heads member :heads :join.state.list
+if not emptyp :check.heads ~
+   [output fput make.arrow :state :letter first butfirst :check.heads ~
+                check.nd filter [not equalp :letter arrowtext ?]
+                                :movelist]
+localmake "join.state newstate
+make "join.state.list fput :heads fput :join.state :join.state.list
+make "moves sentence :moves ~
+                     map [make.arrow :join.state
+                                     arrowtext ?
+                                     arrowhead ?] ~
+                         filter [memberp arrowtail ? :heads] :moves
+if not emptyp find [memberp ? :accepts] :heads ~
+   [make "accepts sentence :accepts :join.state]
+output fput make.arrow :state :letter :join.state ~
+            check.nd filter [not equalp :letter arrowtext ?] :movelist
+end
+
+to sort :list
+if emptyp :list [output []]
+output insert first :list sort butfirst :list
+end
+
+to insert :value :sorted
+if emptyp :sorted [output (list :value)]
+if :value = first :sorted [output :sorted]
+if :value < first :sorted [output fput :value :sorted]
+output fput first :sorted insert :value butfirst :sorted
+end
+
+;; Third step: <A NAME="optimize">Combine</A> redundant states.
+;; Also combines arrows with same head and tail: 
+;;   [1 A 2] [1 B 2] -> [1 AB 2].
+
+to optimize :machine
+localmake "stubarray array :nextstate
+foreach (movepart :machine) "array.save
+localmake "states sort fput (startpart :machine) ~
+                            map "arrowhead movepart :machine
+localmake "start startpart :machine
+foreach reverse :states [optimize.state ? ?rest]
+output (make.machine :start
+                     map.se [fix.arrows ? item ? :stubarray] :states
+                     filter [memberp ? :states] acceptpart :machine)
+end
+
+to array.save :move
+setitem (arrowtail :move) :stubarray ~
+        stub.add (arrow.stub :move) (item (arrowtail :move) :stubarray)
+end
+
+to <A NAME="stub.add">stub.add</A> :stub :stublist
+if emptyp :stublist [output (list :stub)]
+if (stub.head :stub) < (stub.head first :stublist) ~
+   [output fput :stub :stublist]
+if (stub.head :stub) = (stub.head first :stublist) ~
+   [output fput make.stub letter.join (stub.text :stub)
+                                      (stub.text first :stublist)
+                          stub.head :stub
+                butfirst :stublist]
+output fput first :stublist (stub.add :stub butfirst :stublist)
+end
+
+to letter.join :this :those
+if emptyp :those [output :this]
+if beforep :this first :those [output word :this :those]
+output word (first :those) (letter.join :this butfirst :those)
+end
+
+to optimize.state :state :others
+localmake "candidates ~
+          filter (ifelse memberp :state acceptpart :machine
+                         [[memberp ? acceptpart :machine]]
+                         [[not memberp ? acceptpart :machine]]) ~
+                 :others
+localmake "mymoves item :state :stubarray
+localmake "twin find [equalp (item ? :stubarray) :mymoves] :candidates
+if emptyp :twin [stop]
+make "states remove :state :states
+if equalp :start :state [make "start :twin]
+foreach :states ~
+        [setitem ? :stubarray 
+                 (cascade [emptyp ?2]
+                          [stub.add (change.head :state :twin first ?2)
+                                    ?1]
+                          filter [not equalp stub.head ? :state]
+                                 item ? :stubarray
+                          [butfirst ?2]
+                          filter [equalp stub.head ? :state]
+                                 item ? :stubarray)]
+end
+
+to change.head :from :to :stub
+if not equalp (stub.head :stub) :from [output :stub]
+output list (stub.text :stub) :to
+end
+
+to fix.arrows :state :stublist
+output map [stub.arrow :state ?] :stublist
+end
+
+;; Data abstraction for "stub" arrow (no tail)
+
+to arrow.stub :arrow
+output butfirst :arrow
+end
+
+to make.stub :text :head
+output list :text :head
+end
+
+to stub.text :stub
+output first :stub
+end
+
+to stub.head :stub
+output last :stub
+end
+
+to stub.arrow :tail :stub
+output fput :tail :stub
+end
+</PRE><P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch0/v3ch0.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch2/v3ch2.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch1/waydeep.gif b/js/games/nluqo.github.io/~bh/v3ch1/waydeep.gif
new file mode 100644
index 0000000..0aa2cf4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/waydeep.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/xx1.gif b/js/games/nluqo.github.io/~bh/v3ch1/xx1.gif
new file mode 100644
index 0000000..afefc62
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/xx1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch1/xx2.gif b/js/games/nluqo.github.io/~bh/v3ch1/xx2.gif
new file mode 100644
index 0000000..60050b0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch1/xx2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/2choose1.gif b/js/games/nluqo.github.io/~bh/v3ch2/2choose1.gif
new file mode 100644
index 0000000..a6a8fbf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/2choose1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/3choose1.gif b/js/games/nluqo.github.io/~bh/v3ch2/3choose1.gif
new file mode 100644
index 0000000..17cfb3d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/3choose1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/3choose2.gif b/js/games/nluqo.github.io/~bh/v3ch2/3choose2.gif
new file mode 100644
index 0000000..c2eb59b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/3choose2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/3choose5.gif b/js/games/nluqo.github.io/~bh/v3ch2/3choose5.gif
new file mode 100644
index 0000000..e78042a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/3choose5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/4c1x3c2x1c1.gif b/js/games/nluqo.github.io/~bh/v3ch2/4c1x3c2x1c1.gif
new file mode 100644
index 0000000..c1b628e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/4c1x3c2x1c1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/4c1x3c3.gif b/js/games/nluqo.github.io/~bh/v3ch2/4c1x3c3.gif
new file mode 100644
index 0000000..1fe2c50
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/4c1x3c3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/4choose1.gif b/js/games/nluqo.github.io/~bh/v3ch2/4choose1.gif
new file mode 100644
index 0000000..65a3147
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/4choose1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/4choose2.gif b/js/games/nluqo.github.io/~bh/v3ch2/4choose2.gif
new file mode 100644
index 0000000..b333ae1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/4choose2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/5c2x3c2.gif b/js/games/nluqo.github.io/~bh/v3ch2/5c2x3c2.gif
new file mode 100644
index 0000000..70cd942
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/5c2x3c2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/5choose2.gif b/js/games/nluqo.github.io/~bh/v3ch2/5choose2.gif
new file mode 100644
index 0000000..1cc8724
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/5choose2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/5choose5.gif b/js/games/nluqo.github.io/~bh/v3ch2/5choose5.gif
new file mode 100644
index 0000000..940c928
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/5choose5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/6choose2.gif b/js/games/nluqo.github.io/~bh/v3ch2/6choose2.gif
new file mode 100644
index 0000000..c23f8b7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/6choose2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/full-adder.gif b/js/games/nluqo.github.io/~bh/v3ch2/full-adder.gif
new file mode 100644
index 0000000..d5abd93
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/full-adder.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/grid.gif b/js/games/nluqo.github.io/~bh/v3ch2/grid.gif
new file mode 100644
index 0000000..d1bbb35
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/grid.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/grid3.gif b/js/games/nluqo.github.io/~bh/v3ch2/grid3.gif
new file mode 100644
index 0000000..384d3a2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/grid3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/grid4.gif b/js/games/nluqo.github.io/~bh/v3ch2/grid4.gif
new file mode 100644
index 0000000..964a55e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/grid4.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/grid5.gif b/js/games/nluqo.github.io/~bh/v3ch2/grid5.gif
new file mode 100644
index 0000000..dd41bd9
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/grid5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/half-adder.gif b/js/games/nluqo.github.io/~bh/v3ch2/half-adder.gif
new file mode 100644
index 0000000..e18e60a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/half-adder.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math.html b/js/games/nluqo.github.io/~bh/v3ch2/math.html
new file mode 100644
index 0000000..194753f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math.html
@@ -0,0 +1,2870 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 2: Discrete Mathematics</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Discrete Mathematics</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch02.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch1/v3ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch3/v3ch3.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="math.lg"><CODE>math</CODE></A>
+
+
+
+<P>Computer scientists often use mathematics as a tool in their work, but the
+mathematical problems that arise in computer science are of a special kind.
+Consider these examples:
+
+<P>Suppose you have a nondeterministic FSM with five states and you want to
+convert it to a deterministic one.  What is the largest number of states
+that might be required for the new machine?  Well, each state of the new
+machine corresponds to some <EM>combination</EM> of states of the old one,
+because the conversion works by finding multiple transitions (from some state
+via the same input character to multiple states) and creating a new state
+that combines all those resulting states.  How many such combinations are
+possible?  In other words, how many <EM>subsets</EM> does a five-element set
+have?  The answer is 2<SUP><SMALL>5</SMALL></SUP> or 32 states.  (31, really, because one of those
+is the empty subset and that will never be used.)
+
+<P>Suppose you want to write a program to translate telephone numbers into
+letters.  A telephone number has seven digits, each of which corresponds to
+three letters.  How many different strings of letters are possible?  Well,
+there are three choices for the first digit, times three for the second, and
+so on...
+
+<P>These are typical of the kinds of mathematics problems that a computer
+
+scientist confronts in that they are <EM>counting</EM> problems--ones that
+involve integers.  Another relevant kind of problem is the <EM>logic</EM>
+problem, in which the values under consideration are just <CODE>true</CODE> and
+<CODE>false</CODE>.  These areas of mathematics are quite different from what is
+studied in the usual high school and college math courses: algebra,
+geometry, trig, calculus, differential equations.  Those courses deal with
+<EM>measurement</EM> problems, in which the answer can be any number,
+including a fraction or an irrational number.  This conventional mathematics
+
+curriculum, studying <EM>continuous</EM> functions, is dictated by the needs
+of physics and the physics-based engineering subjects.  Computer scientists
+need a different kind of math, called <EM>discrete</EM> mathematics.
+(&quot;Discrete&quot; is the opposite of &quot;continuous&quot; and is not the same word as
+its homonym &quot;discreet&quot; meaning tactful.)
+
+<P><H2>Propositional Logic</H2>
+
+<P>You already know that what in Logo is called an <EM>operation</EM> is the
+computer programming version of a mathematical <EM>function.</EM>  The inputs
+and outputs of Logo operations may be numbers, or they may be other kinds of
+words or lists.  In ordinary algebra the functions we use have numeric
+values.  Certain Logo operations are identical to the ones used in algebra:
+<CODE>sin :x</CODE> is sin(<EM>x</EM>) and <CODE>sqrt :x</CODE> is &radic;<EM>x</EM>.  On the other
+hand, there is nothing in ordinary school mathematics quite like <CODE>first</CODE>
+or <CODE>sentence</CODE>.  You may have been taught to use the word &quot;function&quot;
+only when you see a notation like <EM>f</EM>(<EM>x</EM>), but in fact the ordinary
+arithmetic operations are functions, too.  The addition in <EM>a</EM>+<EM>b</EM> is a
+function with two arguments, just like <CODE>sum :a :b</CODE> in Logo.
+
+<P>
+
+<P>In Logo there are also operations whose inputs and outputs are the words
+<CODE>true</CODE> and <CODE>false</CODE>.  The primitive operations in this category are
+<CODE>and</CODE>, <CODE>or</CODE>, and <CODE>not</CODE>.  Just as algebra deals with numeric
+functions, <EM>logic</EM> is the branch of mathematics that deals with these
+
+<EM>truth-valued</EM> functions.  Instead of numbers, these functions combine
+<EM>propositions</EM>: statements that may be true or false.  A Logo
+expression like <CODE>:x=0</CODE> represents a proposition.  &quot;Abraham Lincoln was
+the King of England&quot; is a proposition; it happens to be false, but it's a
+perfectly valid one because it asserts something that's either true or
+false.  &quot;It will rain in Boston tomorrow&quot; is a proposition whose truth
+value we don't know yet.  &quot;Chinese food is better than French food&quot; is an
+example of a sentence whose validity as a proposition is open to question.
+If I say that, I'm expressing my personal taste, not an objective statement
+that could be proven true or false.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>On the other hand, &quot;The
+Beatles are better than Led Zeppelin&quot; is a perfectly valid, obviously true
+proposition.</SMALL></BLOCKQUOTE></SMALL><P>Logical functions combine <EM>simple</EM> propositions into <EM>compound</EM>
+propositions.  For example, &quot;Either Abraham Lincoln was the King of England
+or he was the President of the United States&quot; is a
+compound proposition.
+It's true even though one of the simple propositions within it is false.
+Just as in algebra we use letters like <EM>x</EM> to represent numbers and
+expressions like <EM>x</EM>+<EM>y</EM> to indicate the use of functions to combine numbers,
+in logic we use letters to represent propositions and there are function
+symbols for the logical functions.  If <EM>p</EM> is the proposition &quot;Abraham
+Lincoln was the King of England,&quot; and <EM>q</EM> is the proposition &quot;Abraham
+Lincoln was the President of the United States,&quot; then the expression <EM>p</EM>&or;<EM>q</EM> represents the compound proposition above.  The symbol &or; represents
+the <EM>or</EM> function; &and;
+represents <EM>and</EM>; &not; and &sim;
+are alternative representations for <EM>not.</EM>  The symbol &rarr; represents
+&quot;implies&quot;; it turns out that <EM>p</EM>&rarr;<EM>q</EM> is equivalent to &not;<EM>p</EM>&or;<EM>q</EM>;
+in other words, the value of the function is true if either the &quot;if&quot; part
+is <EM>false</EM> or the &quot;then&quot; part is true.  An example of the former is
+the classic &quot;If wishes were horses then beggars would ride.&quot;
+
+<P>(Don't confuse the &rarr; function with the Logo <CODE>if</CODE> command.  The
+latter isn't a function (an operation), but a command.  It tells Logo to
+take some <EM>action</EM> if a given condition is met.  The operation
+
+<P><PRE>to implies :p :q
+output or (not :p) :q
+end
+</PRE>
+
+<P>is the Logo equivalent of the &rarr; function in logic.)
+
+<P>The most important use of logic in mathematics is in understanding the idea
+of <EM>proof.</EM>  What is a valid reason for claiming that some proposition
+has been proven true?  Many people come across the idea of proof for the
+first and last time in high school geometry.  We are asked to prove some
+proposition like &quot;the sum of the interior angles of a triangle is
+180&deg;.&quot; For each step in the proof we must give a <EM>reason</EM>
+such as &quot;things equal to the same thing are equal to each other.&quot;
+
+<P>In logic there are certain rules that allow us to infer one proposition from
+one or more previously known propositions.  These rules correspond
+roughly to the &quot;reasons&quot; in a geometry proof.  They are called
+<EM>rules of inference.</EM>  You use rules of
+inference informally all the time, whenever
+you try to convince someone of something by reasoning.  &quot;Is Jay here?&quot;
+&quot;Yes.&quot;  &quot;How do you know?&quot; &quot;I saw his car in the driveway, and if his car
+is here, he must be here too.&quot;
+
+<P>Suppose we use the letter <EM>p</EM> to represent the proposition &quot;Jay's car is
+here&quot; and the letter <EM>q</EM> to represent &quot;Jay is here.&quot; Then the reasoning
+quoted in the last paragraph says &quot;<EM>p</EM> is true and <EM>p</EM>&rarr;<EM>q</EM> is true, so
+<EM>q</EM> must be true.&quot;  (&quot;<EM>p</EM>&rarr;<EM>q</EM>&quot; is the proposition &quot;If Jay's car is
+here, he must be here too.&quot;)  The fact that <EM>p</EM> and <EM>p</EM>&rarr;<EM>q</EM> allow us to
+infer <EM>q</EM> is a rule of inference.  (Of course the rule doesn't
+tell us about the truth of its component propositions.  We have to determine
+that by some means outside of logic, such as observation of the world.
+I had to <EM>see</EM> Jay's car in the driveway to know that <EM>p</EM> is true.)
+
+<P><H2>An Inference System</H2>
+
+<P>What does all this have to do with computer science?  One application of
+logic is in <EM>inference systems</EM>: programs that deduce propositions
+from other ones.  Such systems are important both in business applications
+where large data bases are used and in artificial intelligence programs that
+try to answer questions based on information implied by some text but not
+explicit in the text.
+
+<P>In this section I'll show you a special-purpose inference system that solves
+logic problems.  Logic problems are the ones in which you're given
+certain propositions and asked to deduce others.  Mr. Smith lives next to
+the carpenter; John likes classical music; who lives in the yellow house?
+Here is a typical problem taken from <EM>Mind Benders,</EM> Book B-2,
+by Anita Harnadek.
+
+<P><BLOCKQUOTE>
+<P><A NAME="harnadek">A cub reporter
+interviewed four people.  He was very careless, however.
+Each statement he wrote was half right and half wrong.  He went back and
+interviewed the people again.  And again, each statement he wrote was half
+right and half wrong.  From the information below, can you straighten out
+the mess?
+
+<P>The first names were Jane, Larry, Opal, and Perry.  The last names were
+Irving, King, Mendle, and Nathan.  The ages were 32, 38, 45, and 55.  The
+occupations were drafter, pilot, police sergeant, and test car driver.
+
+<P>On the first interview, he wrote these statements, one from each person:
+
+<P><P>
+
+<P><TABLE><TR><TH align="right" valign="top">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Jane: &quot;My name is Irving, and I'm 45.&quot;
+<TR><TH align="right" valign="top">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> King: &quot;I'm Perry and I drive test cars.&quot;
+<TR><TH align="right" valign="top">3.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Larry: &quot;I'm a police sergeant and I'm 45.&quot;
+<TR><TH align="right" valign="top">4.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Nathan: &quot;I'm a drafter, and I'm 38.&quot;
+
+<P></TABLE>
+
+<P>On the second interview, he wrote these statements, one from each person:
+
+<P><P>
+
+<P><TABLE><TR><TH align="right" valign="top">5.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Mendle: &quot;I'm a pilot, and my name is Larry.&quot;
+<TR><TH align="right" valign="top">6.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Jane: &quot;I'm a pilot, and I'm 45.&quot;
+<TR><TH align="right" valign="top">7.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Opal: &quot;I'm 55 and I drive test cars.&quot;
+<TR><TH align="right" valign="top">8.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Nathan: &quot;I'm 38 and I drive test cars.&quot;
+
+<P></TABLE></BLOCKQUOTE>
+
+<P>
+<CENTER><IMG SRC="grid.gif" ALT="figure: grid"></CENTER>
+
+
+<P>The chart provided with the problem is a guide to its solution.  Each square
+in the chart represents a proposition.  For example, the box where the
+&quot;Larry&quot; row meets the &quot;pilot&quot; column represents the proposition &quot;Larry
+is the pilot.&quot; In solving the problem, you can put marks in the boxes to
+indicate what you know about the propositions.  The status of a proposition
+need not be only true or false.  Initially the status of each proposition is
+<EM>unknown</EM>; we have no idea whether it's true or false.  The structure
+of this particular problem also allows the status of a proposition to be that
+it is linked with another proposition in an <EM>exclusive-or</EM>
+relationship; that is, if one of the linked propositions turns out to be
+true, then the other must be false, and vice versa.  You can use whatever
+notation you find convenient to express these possibilities.  After
+experimenting with T and F and with check marks and crosses, I found that
+circles for true propositions and crosses for false ones made it easiest for
+me to see quickly the pattern of known truths.  For the linked propositions,
+I used the statement numbers (1 to 8) in the boxes; two boxes with the same
+number represent linked statements.
+
+<P>You should probably solve this problem by hand before we go on to discuss
+the computer solution.  Stop reading now and work on the problem if you want
+to do it without any hints from me.
+
+<P>Let me introduce a little new terminology to help in the following
+discussion.  I'll call something like &quot;last name&quot; or &quot;occupation&quot; a
+<EM>category</EM>; something like &quot;Mendle&quot; or &quot;pilot&quot; I'll call an
+<EM>individual.</EM>  As I'm using this terminology, &quot;Mendle&quot; and &quot;pilot&quot;
+are two different individuals even if they turn out, when we solve the
+problem, to be the same person.
+
+<P>It's important that each group of four statements contains one from each
+person, because the names of the speakers include first and last names.
+That is, from the first group of statements we know that Jane, King, Larry,
+and Nathan are four distinct people.  This falsifies such propositions as
+&quot;Jane is King.&quot; After noting the first group of statements my chart looks
+like this:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/grid2.gif" ALT="figure: grid2"></CENTER>
+
+<P>From the second group of statements we learn that Mendle, Jane, Opal, and
+Nathan are all distinct people.  When I marked an X in the &quot;Jane is
+Mendle&quot; box, I noticed that all but one last name for Jane had been
+eliminated.  I therefore put a circle in the &quot;Jane is Irving&quot; box.  This
+illustrates a special rule of inference for problems of this kind:  If, for
+a given individual <EM>x</EM>, all but one proposition &quot;<EM>x</EM> is <EM>y</EM>&quot; have been
+falsified for a certain <EM>category</EM> of <EM>y</EM> individuals, then the
+remaining proposition in that category must be true.  (The reason I'm going
+through this analysis is that the rules of inference I discover while
+working the problem by hand are going to end up in the design of the
+computer program.)  I'm going to call this the <EM>elimination</EM> rule.
+
+
+<P>Since Jane is Irving, nobody else can be Irving.  This falsifies three
+propositions whose status was formerly unknown: &quot;Larry is Irving,&quot;
+&quot;Opal is Irving,&quot; and &quot;Perry is Irving.&quot; (The truth of &quot;Jane is Irving&quot;
+would also falsify &quot;Jane is King&quot; and so on, but we already knew those to
+be false.)  The general rule is that if &quot;<EM>x</EM> is <EM>y</EM>&quot; is true then &quot;<EM>x</EM> is
+<EM>z</EM>&quot; must be false for all other <EM>z</EM> in the same category as <EM>y</EM>, and
+likewise &quot;<EM>w</EM> is <EM>y</EM>&quot; is false for all other <EM>w</EM> in the same category as
+<EM>x</EM>.  I'll call this the <EM>uniqueness</EM> rule.
+
+
+<P>The proposition &quot;Jane is Irving&quot; was linked with the proposition
+&quot;Jane is 45&quot; earlier.  That latter proposition must therefore be false.
+This is another rule of inference, the <EM>link falsification</EM> rule.
+There is also a <EM>link verification</EM> rule that comes into play when a
+linked proposition is found to be false; the other linked proposition must
+then be true.
+
+<P>Since we know that &quot;Jane is 45&quot; is false, and that &quot;Jane is Irving&quot; is
+true, it follows that &quot;Irving is 45&quot; must be false.  The general rule is
+that if &quot;<EM>x</EM> is <EM>y</EM>&quot; is true and &quot;<EM>x</EM> is <EM>z</EM>&quot; is false, then &quot;<EM>y</EM> is
+<EM>z</EM>&quot; must also be false.  Similarly, if &quot;<EM>x</EM> is <EM>y</EM>&quot; is true and &quot;<EM>x</EM> is
+<EM>z</EM>&quot; is true, then &quot;<EM>y</EM> is <EM>z</EM>&quot; must be true.  I'll call these the
+<EM>transitive</EM> rules.
+
+
+<P>You should be following along with your own copy of the chart.  By the
+elimination rule, &quot;Opal is King&quot; must be true.  Then, by the uniqueness
+rule, &quot;Perry is King&quot; is false.  Then, by the link verification rule,
+&quot;King is test driver&quot; must be true.  By the transitive rule, &quot;Opal is
+test driver&quot; is true also.  Here is my chart after making all possible
+deductions from the fact that Mendle, Jane, Opal, and Nathan are distinct
+people:
+
+<P><CENTER><IMG SRC="grid3.gif" ALT="figure: grid3"></CENTER>
+
+<P>Looking at statement number 5, we see that &quot;Mendle is pilot&quot; is linked to
+&quot;Mendle is Larry.&quot; But we already know that the latter is true, so the
+former must be false.  We can just put an X in that box and not bother
+marking the number 5 anywhere.  The same is true for statements 6 and 7;
+here's my chart after statement 7:
+
+<P>
+<CENTER><IMG SRC="grid4.gif" ALT="figure: grid4"></CENTER>
+
+<P>I haven't marked anything in the
+age vs. occupation section of the chart, even though I can deduce some
+propositions for that section.  For example, I know that &quot;Jane is pilot&quot;
+is true and that &quot;Jane is 45&quot; is false.  By the transitive rule, &quot;pilot
+is 45&quot; must be false.  I just haven't bothered making <EM>all</EM> possible
+deductions; I can always fill in that section of the chart if I get to the
+end of the problem and still don't know who's who.
+
+<P>Before dealing with the final statement we know all the pairings of first
+and last names, but we don't know any ages and we only know half the jobs.
+The last statement lets loose a flurry of deductions.  The critical one is
+that if Nathan is 38, he or she (Perry is an ambiguous first name) can't be
+the drafter because of the link from statement 4.  Here is my final chart:
+
+<P><CENTER><IMG SRC="grid5.gif" ALT="figure: grid5"></CENTER>
+
+<P>Once it was clear that I was in the final steps of the solution, I
+didn't bother maintaining the age vs. last name section.  The results can
+be found by reading just the three sections at the top; for example,
+Jane is Irving, the pilot, and 55.
+
+<P><H2>Problems with Ordering</H2>
+
+<P>The elimination, uniqueness, and transitive rules are useful in just about
+all logic problems, but the link falsification and link verification rules
+depend on this specific problem's gimmick that we are given pairs of
+propositions and told that exactly one of them is true.  To solve other
+problems, a more flexible kind of linkage is needed; we must be able to say
+&quot;if <EM>p</EM> is true, then <EM>q</EM> is true also&quot; or &quot;if <EM>p</EM> is false, then <EM>q</EM>
+must be true,&quot; and so on.
+
+<P>A very common kind of linkage is an <EM>ordering,</EM> in which we are
+told a sequence of events, or a row of houses on a street, for example.
+In the cub reporter problem, the ages form an ordering, but aren't used
+as such--that is, the problem doesn't include clues such as &quot;the test
+driver is younger than Jane.&quot;  Suppose we did see that clue; what could
+we conclude from it?  Certain propositions would be settled for sure:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The test driver must not be Jane.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The test driver isn't the oldest age (55).
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Jane isn't the youngest age (32).
+</TABLE><P>
+
+<P>Other propositions would be linked by <EM>implications:</EM>
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Jane is 38, <STRONG>then</STRONG> the driver is 32.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Jane is 45, <STRONG>then</STRONG> the driver is 32 or 38.
+</TABLE><P>
+
+<P>and so on.  (Actually, the second of these isn't directly
+representable on the chart, because there's no notation for a single
+proposition with two alternatives, like &quot;32 or 38.&quot;  So instead
+we'd represent this using propositions about what <EM>can't</EM> be
+true:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Jane is 45, <STRONG>then</STRONG> the driver is not 55.
+</TABLE><P>
+
+<P>We already know that the driver isn't Jane, so there's no need
+to record the implication that if Jane is 45 the driver isn't 45.)
+
+<P>Here is another problem, called &quot;Forgetful Footes,&quot;
+by Diane C. Baldwin.
+It is taken from <EM>The Dell Book of Logic Problems #4.</EM>
+
+<P><BLOCKQUOTE>
+
+<P><A NAME="baldwin">The forgetful Foote</A> family
+fairly flew from their flat up Fleet Street
+to the freeway for a fling in Florida.  Before they passed five
+intersections, Felix and the other four Footes found they each had forgotten
+something (including the food) and were forced back to their flat to fetch
+it.  Each turnaround was made at a different street intersection, one of
+them at Field Street.  From the following clues, can you figure out who
+forgot what and in what order, and find the order of the intersections on
+Fleet Street from the Foote's flat to the freeway?
+
+<P><P>
+
+<P><TABLE><TR><TH align="right" valign="top">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> The second turnaround began at the street following Flag Street and
+the street before Fred had to return to the flat.
+<TR><TH align="right" valign="top">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> The men were responsible for the return for the film, the
+turnaround at Fig Street, and the fifth trip back.
+<TR><TH align="right" valign="top">3.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Fork Street followed the one where they returned to fetch the
+flashlight and preceded the one where a woman had them make their first
+turnaround.
+<TR><TH align="right" valign="top">4.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> The final trip back didn't begin at Frond Street, nor was it the
+one to fetch the fan.
+<TR><TH align="right" valign="top">5.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Frank's forgetfulness turned them back one block and one return
+trip following Francine's.
+<TR><TH align="right" valign="top">6.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> One woman was the third to forget, while the other woman turned
+them back at Flag Street.
+<TR><TH align="right" valign="top">7.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> They returned for the fiddle just before the trip back that began
+at Frond Street and just following the one requested by Flo.
+
+<P></TABLE></BLOCKQUOTE><P>
+
+<P>This problem includes <EM>two</EM> orderings.  The order of the intersections
+with cross streets is not necessarily the same as the time order of the
+return trips.  That is, the Footes might have gone four blocks before making
+their first turnaround, then gone only one block before the second return,
+and so on.  In making a chart for this problem, I used the numbers 1-5 to
+represent the order of streets, and the ordinals 1st-5th to represent the
+time order of return trips.  Clue 1, then, gives us this series of
+implications:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Flag Street is 1, <STRONG>then</STRONG> 2nd is 2.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Flag Street is 2, <STRONG>then</STRONG> 2nd is 3.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Flag Street is 3, <STRONG>then</STRONG> 2nd is 4.
+<P>
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 2, <STRONG>then</STRONG> Flag Street is 1.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 3, <STRONG>then</STRONG> Flag Street is 2.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 4, <STRONG>then</STRONG> Flag Street is 3.
+<P>
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 2, <STRONG>then</STRONG> Fred is 3.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 3, <STRONG>then</STRONG> Fred is 4.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 4, <STRONG>then</STRONG> Fred is 5.
+<P>
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Fred is 3, <STRONG>then</STRONG> 2nd is 2.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Fred is 3, <STRONG>then</STRONG> 2nd is 3.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Fred is 5, <STRONG>then</STRONG> 2nd is 4.
+
+<P></TABLE><P>
+
+<P>It may seem that there are some missing from this list.  What if
+Flag Street is 4?  But that can't happen (and I so marked the chart) because
+then 2nd would have to be 5, and that would make Fred 6, which is too far.
+But notice that we do have to include both directions of implication between
+any two propositions.  The clue tells us that if Flag Street is 1, then 2nd
+is 2, and also that if 2nd is 2, then Flag Street is 1.
+
+<P>See if you can solve this problem, and then we'll talk about the
+Logo-based inference system.
+
+<P><H2>Data Structure</H2>
+
+<P>In addition to the status of the &quot;<EM>x</EM> is <EM>y</EM>&quot; propositions, the program
+needs to keep track of the categories, like &quot;first name,&quot; and the
+individuals within each category.  This information is needed for the sake
+of the elimination and uniqueness rules.  I chose to have a global variable
+named <CODE>categories</CODE> containing (for the cub reporter problem) the list
+
+<P><PRE>[first last age job]
+</PRE>
+
+<P>Each of the elements of that list is the name of a variable
+containing the individuals in that category; for example, <CODE>:age</CODE> is
+the list
+
+<P><PRE>[32 38 45 55]
+</PRE>
+
+<P>The status of the &quot;is&quot; propositions is kept in property lists associated
+with the names of individuals.  For example, to indicate that the proposition
+&quot;Jane is King&quot; is false, the program carries out these two instructions:
+
+<P><PRE>pprop &quot;Jane &quot;King &quot;false
+pprop &quot;King &quot;Jane &quot;false
+</PRE>
+
+<P>Both are necessary because we can't predict whether we're going
+to be figuring out something about Jane or something about King when we
+next need this information.  Actually, the fact that the proposition is
+stored twice reflects another inference rule, one that's so obvious we
+don't think about it at all when solving these problems without using a
+computer: the <EM>symmetric</EM> rule says that if <EM>x</EM> is <EM>y</EM>, then
+<EM>y</EM> is <EM>x</EM>.
+
+<P>If a given property's value is the empty list, that means that the truth of
+the proposition is unknown.  (Remember that Logo property lists give the
+empty list as the value of a property that you haven't defined explicitly,
+so I don't have to predefine all possible properties.)  The word <CODE>true</CODE>
+means that the proposition is known to be true; the word <CODE>false</CODE> means
+that it's known to be false.  If the proposition is linked to other
+propositions by implication, then the value of the property is a list
+containing four-element implication lists.  The first member of each
+implication is <CODE>true</CODE> or <CODE>false</CODE> to indicate which value of this
+proposition implies something about the other proposition.  The next two
+members are names of individuals, indicating which other proposition is
+determined by this one.  The fourth member is again <CODE>true</CODE> or <CODE>
+false</CODE>, indicating whether that other proposition is implied to be true
+or implied to be false.
+
+<P>For example, the
+statement &quot;My name is Irving, and I'm 45&quot; attributed to Jane is stored as
+the following two implications:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Under <CODE>Jane</CODE> and <CODE>Irving</CODE>, the list <CODE>[true Jane 45 false]</CODE>.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Under <CODE>Jane</CODE> and <CODE>45</CODE>, the list <CODE>[true Jane Irving false]</CODE>.
+</TABLE><P>
+
+<P>Although the data structure as described so far
+contains all the necessary information, it
+turned out to be convenient to include some redundant forms of the same
+information.  For example, the elimination rule and the uniqueness rule
+require the program to find all the <EM>peers</EM> of an individual--the
+other individuals in the same category.  It would be possible to start with
+<CODE>:categories</CODE> and search for the known individual in a category list,
+but it was easier to give each individual a <CODE>category</CODE> property whose
+value is the name of the category to which it belongs.
+
+<P>Similarly, the transitive rule needs to know all of the propositions
+involving a particular individual that are known to be true, and all
+those that are known to be false.  This
+information is implicit in the properties already described, but to simplify
+the program each individual has a <CODE>true</CODE> property whose value is a list
+of the other individuals known to be equal to this one, and a <CODE>false</CODE>
+property whose value is a list of the others known to be different from
+this one.  For example, after
+processing statement 7 we know that Jane is Irving and that Jane is the
+pilot, but we don't know Jane's age.  Therefore the property list for <CODE>
+Jane</CODE> has a property whose name is <CODE>true</CODE> and whose value is the list
+
+<P><PRE>[Irving pilot]
+</PRE>
+
+<P>and one whose name is <CODE>false</CODE> and whose value is
+
+<P><PRE>[King Mendle Nathan drafter sergeant driver]
+
+</PRE>
+
+<P>Finally, it turned out that at the end of the program, in order to print out
+the solutions, it was convenient to have, for each individual, properties
+with a category as the name and an individual in that category as the value.
+For example, since Jane's last name is Irving, <CODE>Jane</CODE> has a property
+whose name is <CODE>last</CODE> and whose value is <CODE>Irving</CODE>.
+
+<P><H2>Program Structure: Recording Simple Propositions</H2>
+
+<P>I wanted to enter the problem as a series of assertions, each represented by
+a Logo instruction.  That is, I wrote this procedure:
+
+<P><PRE>to cub.reporter
+cleanup
+category &quot;first [Jane Larry Opal Perry]
+category &quot;last [Irving King Mendle Nathan]
+category &quot;age [32 38 45 55]
+category &quot;job [drafter pilot sergeant driver]
+differ [Jane King Larry Nathan]
+says &quot;Jane &quot;Irving 45
+says &quot;King &quot;Perry &quot;driver
+says &quot;Larry &quot;sergeant 45
+says &quot;Nathan &quot;drafter 38
+differ [Mendle Jane Opal Nathan]
+says &quot;Mendle &quot;pilot &quot;Larry
+says &quot;Jane &quot;pilot 45
+says &quot;Opal 55 &quot;driver
+says &quot;Nathan 38 &quot;driver
+print []
+solution
+end
+</PRE>
+
+<P>(The first instruction erases any old property lists left over
+from a previous logic problem; the last prints out the results.)  I made <CODE>
+category</CODE>, <CODE>differ</CODE>, and <CODE>says</CODE> print out their inputs when invoked,
+so that you can watch the progress of the solution while it's being computed.
+
+<P>The procedures <CODE>differ</CODE> and <CODE>says</CODE> were designed to reflect the
+terms in which this problem is presented, rather than the internal workings
+of the inference system.  That is, if you compare the problem statement with
+this procedure, it's easy to see which instructions represent which clues,
+even if you have no idea how the program will actually solve the problem!
+Our task is to implement <CODE>differ</CODE> and <CODE>says</CODE> using propositional
+logic.
+
+<P>There's an important difference between <CODE>differ</CODE> and <CODE>says</CODE>.  <CODE>
+Differ</CODE> gives us direct information about the truth or falsehood of some
+simple propositions; specifically, we learn that several &quot;<EM>x</EM> is <EM>y</EM>&quot;
+propositions are false.  <CODE>Says</CODE>, on the other hand, gives us no
+direct information about simple propositions; it tells us about
+implications linking two such propositions.
+
+<P>First let's consider how <CODE>differ</CODE> works.  The instruction
+
+<P>
+
+<P><PRE>differ [Jane King Larry Nathan]
+</PRE>
+
+<P>tells us that Jane is not King, Jane is not Larry, Jane is
+not Nathan, King is not Larry, King is not Nathan, and Larry is not Nathan.
+In effect, <CODE>differ</CODE> will carry out the instructions
+
+<P><PRE>falsify &quot;Jane &quot;King
+falsify &quot;Jane &quot;Larry
+falsify &quot;Jane &quot;Nathan
+falsify &quot;King &quot;Larry
+falsify &quot;King &quot;Nathan
+falsify &quot;Larry &quot;Nathan
+</PRE>
+
+<P>There's no need to invoke <CODE>falsify</CODE> for the six cases with
+inputs in the opposite order (such as the proposition that King is not Jane)
+because, as we'll see, <CODE>falsify</CODE> knows about the symmetric rule and
+will record those automatically.  By the way, some of these six are
+unnecessary because the two individuals have the same category and therefore
+couldn't possibly be the same, such as Jane and Larry, both first names.
+But <CODE>falsify</CODE> will catch these cases and return without doing anything.
+
+<P>Here's how <CODE>differ</CODE> actually carries out all those <CODE>falsify</CODE>
+instructions:
+
+<P><PRE>to differ :list
+print (list &quot;differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+</PRE>
+
+<P><CODE>Falsify</CODE>, and a similar procedure <CODE>verify</CODE> to assert the truth
+of a proposition, are implemented in terms of the central procedure
+about propositions, <CODE>settruth</CODE>:
+
+<P><PRE>to verify :a :b
+settruth :a :b &quot;true
+end
+
+to falsify :a :b
+settruth :a :b &quot;false
+end
+</PRE>
+
+<P><CODE>Settruth</CODE> takes three inputs, two individuals and a truth
+value.  It records the truth or falsehood of the proposition that <CODE>:a</CODE>
+is <CODE>:b</CODE>, and uses the rules of inference I've described to derive
+other propositions when possible.
+
+<P><PRE>to settruth :a :b :truth.value
+if equalp (gprop :a &quot;category) (gprop :b &quot;category) [stop]
+localmake &quot;oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw &quot;error (sentence [inconsistency in settruth]
+                            :a :b :truth.value))]
+print (list :a :b &quot;-&gt; :truth.value)
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply &quot;settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word &quot;find not :truth.value) (list :a :b)
+foreach (gprop :a &quot;true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a &quot;false) [falsify ? :b]
+                 pprop :a (gprop :b &quot;category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+</PRE>
+
+<P>If the two individuals are in the same category, <CODE>settruth</CODE>
+does nothing.  This is to allow for cases such as the example
+
+<P><PRE>falsify &quot;Jane &quot;Larry
+</PRE>
+
+<P>as explained earlier.  If the individuals are in different
+categories, the next step is to find what information was previously
+available about this proposition.  If it was already known to be true
+or false, and the truth value input in this call agrees with what was
+known, then the program has merely generated some redundant information
+and <CODE>settruth</CODE> stops.  If the known value disagrees with the input
+value, then something is wrong; the program has proven two contradictory
+propositions.  Generally this means that some clue has been represented
+incorrectly in the program.
+
+<P>If the proposition was not already known to be true or false, then we
+have some new information.  After notifying the user by printing a
+message, <CODE>settruth</CODE>
+must store that fact.  (Procedures <CODE>get</CODE> and <CODE>store</CODE> are an
+interface to the property list primitives that implement the symmetric
+rule.)  The next step is to make any possible inferences using the
+elimination, uniqueness, and transitive rules; this is done separately
+for &quot;<CODE>:a</CODE> is <CODE>:b</CODE>&quot; and for &quot;<CODE>:b</CODE> is <CODE>:a</CODE>&quot; by two
+calls to the subprocedure <CODE>settruth1</CODE>.
+
+<P><CODE>Settruth1</CODE> invokes either <CODE>findtrue</CODE> or <CODE>findfalse</CODE>
+depending on the truth value.  Because of the <CODE>not</CODE> in the
+first instruction of <CODE>settruth1</CODE>, <CODE>findtrue</CODE> is called when we are
+falsifying a proposition, and vice versa.  This makes sense because of
+the tasks of these procedures.  If we are falsifying a proposition,
+then the elimination rule comes into play, and we try to find a true
+proposition.  If we are verifying a proposition, then the uniqueness
+rule lets us find several false propositions on the same row or
+column of the chart.  The next instructions in <CODE>settruth1</CODE> implement
+the transitive rule, looking at other individuals known to be the same
+as, or different from, <CODE>:a</CODE>.  The last two instructions maintain
+the redundant information used for printing the results and for carrying
+out the transitive rule.
+
+<P>The final instruction in <CODE>settruth</CODE> deals with implications.  If we
+already knew that <EM>p</EM>&rarr;<EM>q</EM> and now we're learning that <EM>p</EM> is true,
+we can infer that <EM>q</EM> is true.  (This is another rule of inference,
+which I'll call the <EM>implication</EM> rule.)
+
+<P><H2>Program Structure: Recording Implications</H2>
+
+<P>Speaking of implications, we can now explore how the <CODE>says</CODE> procedure
+produces and records implications.  The instruction
+
+<P><PRE>says &quot;Jane &quot;Irving 45
+</PRE>
+
+<P>establishes a relationship between the two propositions
+&quot;Jane is Irving&quot; and &quot;Jane is 45.&quot;  The relationship is that
+exactly one of them must be true; the name for this is <EM>exclusive or.</EM>
+
+<P><PRE>to says :who :what1 :what2
+print (list &quot;says :who :what1 :what2)
+xor :who :what1 :who :what2
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 &quot;true :who2 :what2 &quot;false
+implies :who1 :what1 &quot;false :who2 :what2 &quot;true
+end
+</PRE>
+
+<P><CODE>Says</CODE> is a special case of <CODE>xor</CODE> (a common abbreviation
+for exclusive or) in which the two propositions are about a common
+individual, Jane in the example.  The <CODE>xor</CODE> procedure establishes
+two implications, <EM>p</EM>&nbsp;&rarr;&nbsp;&not;&thinsp;&thinsp;<EM>q</EM> and
+&not;&thinsp;&thinsp;<EM>p</EM>&nbsp;&rarr;&nbsp;<EM>q</EM>.  In other words,
+if we learn that Jane is Irving, then we can infer that Jane is not 45;
+if we learn that Jane is not Irving, we can infer that Jane is 45.
+(These two implications are <EM>not</EM> equivalent to each other; in
+general, one
+might be true and the other false.  But the exclusive or relationship
+means that both are true.)
+
+<P>The <CODE>implies</CODE> procedure takes six inputs.  The first three are for
+one proposition and the others for the second proposition.  For each
+proposition, two inputs are individuals (call them <EM>x</EM> and <EM>y</EM>) and
+the third is <CODE>true</CODE> or <CODE>false</CODE>.  If <CODE>true</CODE>, then the 
+proposition is &quot;<EM>x</EM> is <EM>y</EM>&quot;; if <CODE>false</CODE>, the proposition is
+&quot;<EM>x</EM> is not <EM>y</EM>.&quot;
+
+<P>Yet another rule of inference comes into play here, the <EM>
+contrapositive</EM> rule.  It says
+that if <EM>p</EM>&rarr;<EM>q</EM> is true, then so is &not;<EM>q</EM> &rarr; &not;<EM>p</EM>.
+Although these two implications are mathematically equivalent,
+we must enter both of them into our data structure because we might
+happen to discover that &not;<EM>q</EM> is true, and we'll look for relevant
+implications filed under <EM>q</EM> rather than under <EM>p</EM>.
+
+<P><PRE>to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+</PRE>
+
+<P>The first call to <CODE>implies1</CODE> stores the implication
+in the form given to us; the second call stores its contrapositive.
+
+<P><PRE>to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake &quot;old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+end
+</PRE>
+
+<P>The first three instructions in <CODE>implies1</CODE> check for the
+case in which we are told that <EM>p</EM>&rarr;<EM>q</EM> but we already know
+either <EM>p</EM> or &not;<EM>p</EM>.  If we already know <EM>p</EM>, then we can
+derive that <EM>q</EM> is true.  There's no need to store the implication,
+because it is already serving its purpose, which is to allow us to
+infer <EM>q</EM>.  If we already know &not;<EM>p</EM>, then we can forget about
+this implication, because it isn't going to do us any good.  We can't
+infer anything about <EM>q</EM> from this situation.
+
+<P>The next two instructions check for the situation in which we
+are told <EM>p</EM>&rarr;<EM>q</EM> but we already know that <EM>p</EM>&rarr;&not;<EM>q</EM>.
+In that case, <EM>p</EM> must not be true, because if it were, we could
+infer two contradictory conclusions.  Therefore, we can falsify
+the proposition <EM>p</EM>.
+
+<P>Finally, if none of these conditions is met, we add this implication
+to the (possibly empty) list of already known implications about <EM>p</EM>.
+
+<P><H2>Using Implications to Represent Orderings</H2>
+
+<P>For another example of implications at work, here's the Logo program
+for the Foote problem:
+
+<P><PRE>to foote.family
+cleanup
+category &quot;when [1st 2nd 3rd 4th 5th]
+category &quot;name [Felix Fred Frank Francine Flo]
+category &quot;street [Field Flag Fig Fork Frond]
+category &quot;item [food film flashlight fan fiddle]
+category &quot;position [1 2 3 4 5]
+print [Clue 1]
+justbefore &quot;Flag &quot;2nd :position
+justbefore &quot;2nd &quot;Fred :position
+print [Clue 2]
+male [film Fig 5th]
+print [Clue 3]
+justbefore &quot;flashlight &quot;Fork :position
+justbefore &quot;Fork &quot;1st :position
+female [1st]
+print [Clue 4]
+falsify &quot;5th &quot;Frond
+falsify &quot;5th &quot;fan
+print [Clue 5]
+justbefore &quot;Francine &quot;Frank :position
+justbefore &quot;Francine &quot;Frank :when
+print [Clue 6]
+female [3rd Flag]
+print [Clue 7]
+justbefore &quot;fiddle &quot;Frond :when
+justbefore &quot;Flo &quot;fiddle :when
+print []
+solution
+end
+</PRE>
+
+<P>
+I've included <CODE>print</CODE> instructions to let the user know when the
+program reaches each of the seven numbered clues.  Clue 4 tells us
+directly that two possible pairings of individuals are false, and
+the program reflects this with two invocations of <CODE>falsify</CODE>.  But
+the other clues either tell us about the sex of the family members
+or tell us that certain individuals are next to each other in an
+ordering.  The procedures <CODE>male</CODE>, <CODE>female</CODE>, and <CODE>justbefore</CODE>
+reflect the language of the problem in the same way that <CODE>says</CODE>
+reflected the language of the other problem.
+
+<P><PRE>to male :stuff
+differ sentence :stuff [Francine Flo]
+end
+
+to female :stuff
+differ sentence :stuff [Felix Fred Frank]
+end
+</PRE>
+
+<P>Needless to say, this implementation of <CODE>male</CODE> and <CODE>female</CODE>
+works only for this specific logic problem!  It's tempting to try to
+use the more general category mechanism this way:
+
+<P><PRE>category &quot;sex [male female]
+verify &quot;Francine &quot;female
+verify &quot;Flo &quot;female
+verify &quot;Felix &quot;male
+verify &quot;Fred &quot;male
+verify &quot;Frank &quot;male
+</PRE>
+
+<P>but unfortunately the structure of this inference system
+requires that each individual can only match one individual in
+another category; once we've verified that Francine is female,
+the uniqueness rule will deduce that Flo isn't female!
+
+<P>On the other hand, I've tried to write <CODE>justbefore</CODE> in a way
+that will work for future problems.
+
+<P><PRE>to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 &quot;true :who2 :what2 &quot;true
+implies :who2 :what2 &quot;true :who1 :what1 &quot;true
+end
+</PRE>
+
+<P>The input named <CODE>lineup</CODE> is a list of individuals from
+an ordering, in the correct order.  In this problem, it will be the list
+
+<P><PRE>[1 2 3 4 5]
+</PRE>
+
+<P>if the clue is about street position, or
+
+<P><PRE>[1st 2nd 3rd 4th 5th]
+</PRE>
+
+<P>if the clue is about the order of events in time.  As I explained
+when talking about orderings earlier, the instruction
+
+<P><PRE>justbefore &quot;Flag &quot;2nd :position
+</PRE>
+
+<P>results in falsifying some propositions:
+
+<P><PRE>falsify &quot;Flag &quot;2nd
+falsify &quot;Flag 5
+falsify &quot;2nd 1
+</PRE>
+
+<P>and also asserts some implications:
+
+<P><PRE>implies &quot;Flag 1 &quot;true &quot;2nd 2 &quot;true
+implies &quot;2nd 2 &quot;true &quot;Flag 1 &quot;true
+implies &quot;Flag 2 &quot;true &quot;2nd 3 &quot;true
+implies &quot;2nd 3 &quot;true &quot;Flag 2 &quot;true
+implies &quot;Flag 3 &quot;true &quot;2nd 4 &quot;true
+implies &quot;2nd 4 &quot;true &quot;Flag 3 &quot;true
+implies &quot;Flag 4 &quot;true &quot;2nd 5 &quot;true
+implies &quot;2nd 5 &quot;true &quot;Flag 4 &quot;true
+</PRE>
+
+<P><H2>Backtracking</H2>
+
+<P>This inference system can solve many logic problems, but sometimes it
+runs into trouble.  I've already mentioned, while discussing the <CODE>male</CODE>
+and <CODE>female</CODE> procedures, that the program insists that each individual
+in a category must appear exactly once in the solution.  Suppose you have
+a problem about five people living in five houses; they have five distinct
+first names, five last names, five occupations--but two of the houses
+are yellow.  It's sometimes possible to get around this, but the technique
+is a little awkward.  You can set up a category like this:
+
+<P><PRE>category &quot;color [yellow1 yellow2 blue brown green]
+</PRE>
+
+<P>then you find <EM>one</EM> clue that mentions a yellow house
+and use <CODE>yellow1</CODE> for that one:
+
+<P><PRE>verify &quot;Fred &quot;yellow1
+</PRE>
+
+<P>but for any other mention of something being yellow in the
+problem, you represent that by saying that the individual is <EM>not</EM> one
+of the other colors:
+
+<P><PRE>differ &quot;architect [blue brown green]
+</PRE>
+
+<P>You never explicitly mention <CODE>yellow2</CODE> except in setting
+up the category.
+
+<P>That technique works if you know that yellow is the color that appears
+twice.  What if the problem tells you only that there are five houses
+and four colors?  Or what if some individuals are <EM>not</EM> in the
+solution?  For example, a problem might discuss the activities of five
+people, each doing something on a different day of the week, but you
+don't know until you solve the problem which of the seven weekdays
+are involved.
+
+<P>An entirely different approach to solving logic problems by computer
+is <EM>backtracking.</EM>  Instead of starting from the clues
+and making deductions, a program can start by making arbitrary guesses
+about who goes with what, and then use the clues to look for contradictions.
+If a contradiction is found, the program systematically makes a different
+guess until every possible arrangement has been tried.  (Presumably before
+every possibility has been tried, one of them will <EM>not</EM> lead to a
+contradiction, and that's the solution.)
+
+<P>In practice, backtracking is a more flexible technique than the inference
+system I wrote, because it's easy to let a backtracking program try
+multiple appearances of an individual if the problem allows that.  But I
+thought the inference system would be more interesting to study, for two
+reasons.  First, the inference system more closely models the way people
+solve logic problems.  In the cub reporter problem, with four people
+to keep straight, there are (4!)<SUP><SMALL>3</SMALL></SUP> or 13,824 possible solutions.  In
+the Foote problem, with five people, there are (5!)<SUP><SMALL>4</SMALL></SUP> or just over
+200 million possibilities.  A computer can try them all, but a person
+couldn't.<SUP>*</SUP>
+(If multiple appearances were allowed, the numbers would be
+even higher.)  Second, backtracking doesn't work at all unless the problem
+deals with a finite set of individuals, as in a logic problem.  Inference
+systems can be generalized to deal with potentially unbounded problems.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>People do sometimes use a combination of inference and
+backtracking.  If, by inference, you've established that Jane must be
+either the pilot or the drafter, but you can't settle which, you might
+decide to <EM>assume</EM> that Jane is the pilot and hope that you can then
+infer either a complete solution to the problem or a contradiction.  In the
+latter case, you'd know that Jane must be the drafter.</SMALL></BLOCKQUOTE></SMALL><P><H2>Generalized Inference Systems and Predicate Logic</H2>
+
+<P>The rules of inference in this program are specially designed for problems
+like the ones we've just solved.  The implication
+rule is applicable to any propositional logic situation, but the ones
+based on categories, such as the uniqueness and elimination rules, are not.
+The idea of a &quot;category&quot; as we've used it
+isn't a general principle of logic; instead, that idea should really be
+expressed as a series of propositions.  For example, to say &quot;there is a
+category called `last name' whose members are Irving, King, Mendle, and
+Nathan&quot; is really to make several statements of the form &quot;Jane has exactly
+one last name,&quot; or, in terms of the basic &quot;<EM>x</EM> is <EM>y</EM>&quot; propositions,
+<P><CENTER><TABLE><TR><TD>(Jane is Irving) &or; (Jane is King)
+<TR><TD>&nbsp;&nbsp;&nbsp;&nbsp;&or; (Jane is Mendle) &or; (Jane is Nathan)
+</TABLE></CENTER><P>
+and so on.  If we wanted to solve this problem in a general
+inference system we'd assert the truth of all those propositions at the
+beginning.  Then if the program discovers that Jane is Irving, it would
+have the two propositions
+<P><CENTER>&not;<STRONG>(</STRONG>(Jane is Irving)
+&and; (Jane is King)<STRONG>)</STRONG></CENTER><P>
+and
+<P><CENTER>(Jane is Irving)</CENTER><P>
+and from these it could infer
+<P><CENTER>&not;(Jane is King)</CENTER><P>
+using the standard inference rules of propositional logic.
+
+<P>The &quot;and so on&quot; just above includes quite a large number of propositions.
+And yet this small problem concerns a mere 16 individual names divided into
+four categories.  For a larger problem it would be nearly impossible to list
+all the relevant propositions, and for a problem involving an infinite set
+of individuals, such as the integers, it would be literally impossible.  What
+would make the representation of a problem easier is if we could use, in a
+formal system, the same kind of language I used in describing (in English)
+the inference rules earlier: &quot;for all other <EM>z</EM> in the same category as
+<EM>y</EM>...&quot; There are two parts to such a formal notation.  First, in addition
+to the <EM>propositional</EM> variables like <EM>p</EM> used in propositional logic,
+we need variables like <EM>x</EM> and <EM>y</EM> that can represent objects in the system
+we want to describe.  Second, we need a notation for &quot;for all.&quot; The formal
+system including these additions to propositional logic is called <EM>
+predicate</EM> logic.  The name is like that used in Logo to refer to
+operations with <CODE>true</CODE> or <CODE>false</CODE> outputs because
+the statements in predicate logic
+involve truth-valued functions of objects analogous to the
+Logo predicates.  For example, the formula we've been representing
+informally as &quot;<EM>x</EM> is <EM>y</EM>&quot; is represented formally using the
+predicate function is(<EM>x</EM>,<EM>y</EM>).  This
+is much like the Logo expression
+
+<P><PRE>equalp :x :y
+</PRE>
+
+<P>A predicate function of two arguments (&quot;inputs&quot; in Logo) is also
+called a <EM>relation</EM> in mathematics.  Algebraic relations include ones
+like = (equal) and &lt; (less than).
+
+<P>We are almost ready to show how the uniqueness rule can be expressed as a
+formula in predicate logic.  If you're not accustomed to mathematical
+formalism, this formula is a little scary--perhaps the
+scariest thing in this book.  But I want you to see it so that
+you'll appreciate the fact that just <EM>one</EM> formula of predicate logic
+can sum up a rule that would require <EM>many</EM> formulas in propositional
+logic.  I'm going to introduce a new relation called
+&quot;isa&quot; that's true if its first argument is a member of its second
+argument.  The first must be an individual and the second a category.  For
+example, isa(pilot,job) is true.  And the symbol
+&forall; means &quot;for all.&quot;  The uniqueness rule says that if <EM>x</EM> is <EM>y</EM>
+then <EM>x</EM> can't also be <EM>z</EM> for any <EM>z</EM> in the same category as <EM>y</EM>.  Here's
+how to say that formally:
+
+
+<P><CENTER>is(<EM>x</EM>,<EM>y</EM>) &rarr; &forall;<EM>z</EM>
+<STRONG>(</STRONG>(isa(<EM>y</EM>,<EM>a</EM>) &and; isa(<EM>z</EM>,<EM>a</EM>)
+&and; &not;(<EM>y</EM>=<EM>z</EM>)<STRONG>)</STRONG></CENTER><P>
+
+<P>To indicate the linking of two propositions in the general inference system,
+no special rules of inference are required.  To say &quot;the reporter wrote
+down these two statements; one is true and the other false&quot; is just to say
+<EM>p</EM>&otimes;<EM>q</EM>; I'm using the symbol &otimes; to
+represent the <EM>exclusive or</EM> function.  This formula is equivalent to
+<P><CENTER>(<EM>p</EM>&or;<EM>q</EM>) &and; &not;(<EM>p</EM>&and;<EM>q</EM>)</CENTER><P>
+A general inference system will know that if it's been told <EM>p</EM>&otimes;<EM>q</EM>
+and then later it learns, say, <EM>p</EM> then it can infer &not;<EM>q</EM>.
+
+<P>The cub reporter problem is simpler than some of its type in that
+the only relevant relation among individuals is &quot;is,&quot; which is an
+
+<EM>equivalence</EM> relation.  This means that if Jane is Irving then also
+Irving is Jane (the technical name for a relation with that property is
+<EM>symmetric</EM>), and also that if Jane is Irving, and Irving is the pilot,
+then Jane is the pilot (so the relation is <EM>transitive</EM>).  It's
+relatively easy to work out all the implications of a proposition about
+equivalence relations.
+
+<P>
+By contrast, the Foote problem contains <EM>ordering</EM> relations like &quot;is
+later than&quot; that are transitive but not symmetric.  To handle such problems
+the inference system must have a way to represent &quot;<EM>x</EM> is the last.&quot;
+Other problems contain relations like &quot;lives in the house next to&quot; that
+are symmetric but not transitive.  A statement like &quot;Mr. Smith lives in the
+house at the end&quot; has to be represented formally as something like &quot;there
+is only one person <EM>x</EM> such that <EM>x</EM> lives in the house next to Mr. Smith.&quot;
+
+<P>One reason a general inference system is harder to program than the
+special-purpose one I've written in this chapter is that my system makes all
+possible inferences from any newly verified or falsified proposition.  This
+is possible only because there is a finite, fairly small number of such
+inferences.  Once you introduce variables and predicates, the number of
+possible inferences is potentially infinite.  A general inference system must
+take care not to infer infinitely many useless results.  One solution is to
+defer the making of inferences until the user of the system asks a question,
+and then infer only what's needed to answer that particular question.  But
+it isn't always easy to know exactly what's needed.
+
+<P>An inference system like the one I'm vaguely describing is a central part of
+the programming language Prolog.  In that language, you program not by
+issuing instructions that tell the computer what to do, but rather by making
+<EM>assertions</EM> that some proposition is true.  You can then ask questions
+like &quot;for what values of <EM>x</EM> is this formula true?&quot;
+
+<P>
+<H2>Logic and Computer Hardware</H2>
+
+
+<P>Besides inference systems, another area in which logic is important in
+computer science is in the design of the computers themselves.  In a
+computer, information is represented as electrical signals flowing through
+wires.  (These days, a &quot;wire&quot; is likely to be a microscopic conducting
+region on a silicon chip rather than a visible strand of metal, but the
+principle is the same.)  In almost all computers, each wire may be carrying
+one of two voltage levels at any moment.  (It is the restriction to two
+possible voltages that makes them <EM>binary</EM> computers.  It would be
+
+possible to build <EM>ternary</EM> computer circuits using three
+voltages, but I know of no practical application of that idea.)  A computer
+is built out of small circuit elements called <EM>gates</EM> that combine or
+rearrange binary signals in various ways.  Perhaps the simplest example of a
+gate is an <EM>inverter</EM>; it has one input signal and provides one output
+signal that is the opposite of the input.  That is, if you have a high
+voltage coming into the inverter you get a low voltage out, and vice versa.
+
+<P>The voltages inside the computer can be thought of as representing numbers
+(zeros and ones) or truth values (false and true).  From now on I'll use the
+symbols 0 and 1 to represent the voltages, but you can mentally replace 0
+with <CODE>false</CODE> and 1 with <CODE>true</CODE> to see how what I'm saying here ties
+in with what's gone before.
+
+<P>Suppose you have a gate with two input wires and one output.  What are the
+possibilities for how that output is determined by the inputs?  Each of the
+two inputs can have two possible values; that means that a gate has four
+different possible input configurations.  For each of those four, the gate
+can output 0 or 1.  As you can see from the chart below, this means that
+there are 16 possible kinds of two-input gates:
+
+<P><CENTER><TABLE>
+<TR><TH align="left">input <EM>p</EM>:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TH align="left">input <EM>q</EM>:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TD>&nbsp;
+<TR><TH align="left">outputs:<TD>&nbsp;&nbsp;&nbsp;0
+<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and (<EM>p</EM>&and;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exclusive or (<EM>p</EM>&otimes;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or (<EM>p</EM>&or;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nor (not-or, &not(<EM>p</EM>&or;<EM>q</EM>))
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equivalence (<EM>p</EM>&harr;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implies (<EM>p</EM>&rarr;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nand (not-and, &not;(<EM>p</EM>&and;<EM>q</EM>))
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER>
+
+<P>The table indicates, for example, that a gate whose output is 1
+only when both inputs are 1 is an <EM>and</EM> gate, implementing the usual
+logical and operation.  The 16 possibilities include all the standard logic
+functions as well as several less obviously useful ones.  Two gate types
+called <EM>nand</EM> and <EM>nor</EM> represent functions rarely used in
+mathematical logic but common in computer design because it is sometimes
+helpful to have the opposite of the signal you're logically interested in.
+
+<P>Numbers other than 0 and 1 can't be represented as a single signal in a
+single wire.  That's why there isn't a &quot;plus gate&quot; along with the and
+gates, or gates, and so on; if both inputs to a plus gate were 1, the output
+would have to be 2.  To add two zero-or-one numbers we need a more
+complicated device with <EM>two</EM> output wires, one of which is the
+&quot;carry&quot; to the next binary digit:
+
+<P><CENTER><TABLE>
+<TR><TH align="left"><EM>A</EM> input:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TH align="left"><EM>B</EM> input:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TD>&nbsp;
+<TR><TH align="left">sum out:<TD>&nbsp;&nbsp;&nbsp;0
+<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH align="left">carry out:<TD>&nbsp;&nbsp;&nbsp;0
+<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER>
+
+<P>These sum and carry outputs can be defined in terms of logical
+operations:
+
+<P>
+<P><CENTER><TABLE><TR><TD align="right">Sum<TD>&nbsp;=
+<TD>&nbsp;<EM>A</EM>&otimes;<EM>B</EM>
+<TR><TD align="right">Carry<TD>&nbsp;=
+<TD>&nbsp;<EM>A</EM>&and;<EM>B</EM>
+</TABLE></CENTER><P>
+
+
+<P>Exclusive or gates are, in fact, not generally used as basic
+hardware components, so this device is traditionally represented in terms of
+and gates, or gates, and inverters:
+
+<P><CENTER><IMG SRC="half-adder.gif" ALT="figure: half-adder"></CENTER>
+
+<P>The device we've just built is called a <EM>half-adder</EM> for
+reasons that should become clear in a moment.
+
+<P>To represent numbers larger than 1 we have to use more than one signal wire.
+Each signal represents a binary digit, or <EM>bit,</EM> that is implicitly
+multiplied by a power of 2 just as in the ordinary decimal representation of
+numbers each digit is implicitly multiplied by a power of 10.  For example,
+if we have three signal wires for a number, they have multipliers of 1, 2,
+and 4; with these signals we can represent the eight numbers from 0 (all
+signals 0) to 7 (all signals 1).  When we want to add two such three-bit
+numbers, the sum for all but the rightmost bit can involve a carry <EM>
+in</EM> as well as a carry out.  The circuit for each bit position must have
+<EM>three</EM> inputs, including one for the carry from the next bit over as
+well as the two external inputs.  The outputs are found using these formulas:
+
+<P>
+<P><CENTER><TABLE><TR><TD align="right">Sum<TD>&nbsp;=
+<TD>&nbsp;(<EM>A</EM>&otimes;<EM>B</EM>)&otimes;CarryIn
+<TR><TD align="right">CarryOut<TD>&nbsp;=
+<TD>&nbsp;(<EM>A</EM>&and;<EM>B</EM>)&or;
+<STRONG>(</STRONG>(<EM>A</EM>&otimes;<EM>B</EM>)&and;CarryIn<STRONG>)</STRONG>
+</TABLE></CENTER><P>
+
+<P>This circuit can be built using two half-adders:
+
+<P><CENTER><IMG SRC="full-adder.gif" ALT="figure: full-adder"></CENTER>
+
+<P>To add two three-bit numbers we connect three adders together this
+way:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/three-adders.gif" ALT="figure: three-adders"></CENTER>
+
+<P>The carry out signal from the leftmost adder (the one representing
+
+the largest power of 2) is the <EM>overflow</EM> signal; if it's true, the
+sum didn't fit in the number of bits provided.  Many computers use this
+signal to <EM>interrupt</EM> the execution of their programs so that people
+don't end up seeing incorrect results.
+
+<P>The phrase &quot;computer logic&quot; is widely used, even by non-experts, to refer
+to the inner workings of a computer.  Many people, though, think that the
+phrase describes the <EM>personality</EM> of the computer, which they imagine
+
+to be like that of Mr. Spock.  &quot;Computers may be able to play chess, but
+they can't write poetry, because that isn't logical.&quot; Here you've seen the
+real meaning of the phrase:  Just as a Logo program has procedures defined in
+terms of subprocedures and ultimately in terms of primitive procedures, the
+capabilities of a computer itself are built out of smaller pieces, and the
+primitive hardware components compute logical, rather than arithmetic,
+functions.  (For a computer to exhibit Mr. Spock's sense of purpose,
+understanding of cause and effect, drive for self-preservation, loyalty to
+his species and his government, and so on, would be no less miraculous than
+for it to write a love poem or throw a temper tantrum.  Later we'll discuss
+the efforts of artificial intelligence researchers to produce such miracles.)
+
+<P><H2>Combinatorics</H2>
+
+
+<P>Earlier I listed the 16 possible logical functions of two logical arguments.
+I could have figured out that there are 16 without actually listing them
+this way:  If a function has two arguments, and each argument has two
+possible values, that makes 2<SUP><SMALL>2</SMALL></SUP> possible combinations of argument values.
+A logical function is determined by its result for each of those four
+possible argument combinations.  (The four are <EM>f</EM>(0,0), <EM>f</EM>(0,1), <EM>f</EM>(1,0),
+and <EM>f</EM>(1,1).)  There are two possible results for <EM>f</EM>(0,0), two for
+<EM>f</EM>(0,1), and so on; the number of possible functions is the product of all
+these twos, 2<SUP><SMALL>2<SUP><SMALL>2</SMALL></SUP></SMALL></SUP> or 16.
+
+<P>The mathematics of counting how things can be combined is called
+<EM>combinatorics.</EM>  The problem we've just done illustrates a fundamental
+rule of combinatorics, namely that the number of possibilities for a choice
+with several components is the product of the number of possibilities for
+each component choice.  This may be easier to understand with an example in
+which not all the relevant numbers are 2.  Here's a classic:  Suppose you
+have a group of four men and three women, and you want to form a committee
+of one man and one woman chosen from this group.  How many such committees
+are possible?  There are 4 choices for the male member of the committee and
+3 choices for the female member; that means 4&times;3 or 12 committees.
+
+<P>(The multiplication rule only works if the component choices are <EM>
+independent</EM>; that is, the possible outcomes of one choice can't be
+affected by the outcome of any of the others.  For example, if our
+committees are to have a chairperson who can be of either sex and then two
+other members, one man and one woman, you can't say &quot;there are 7 choices
+for the chairperson, times 4 for the man, times 3 for the woman&quot; because
+after choosing the chairperson the number of choices for the other members
+is changed depending on the sex of the chair.  There are two correct ways
+to solve this problem.  One is to say &quot;The chairperson is either male or
+female.  If male, there are 4 possible chairs, times 3 possible other male
+members, times 3 possible female members, for 36 possible committees.  If
+female, there are 3 possible chairs, times 4 possible male members, times 2
+possible other female members, for 24 committees.  The total is 36+24 or
+60 committees.&quot; The second solution is to pick the chairperson <EM>last</EM>;
+then you say &quot;There are 4 possible male members, times 3 possible females,
+times 5 possible chairs (7 people in the original group minus 2 already
+chosen).&quot; Apart from arithmetic errors, almost all the mistakes people make
+in solving combinatorics problems come from forgetting that events have to
+be independent to allow you to multiply the choices.)
+
+<P>Let's return to logical functions for a moment.  Suppose we experiment with
+a ternary logic in which the possible values are yes, no, and maybe.  (You
+can represent these using the numbers 0, 1, and 2.)  How many three-argument
+ternary logic functions are there?  Is it 3<SUP><SMALL>(3<SUP><SMALL>3</SMALL></SUP>)</SMALL></SUP> or is it (3<SUP><SMALL>3</SMALL></SUP>)<SUP><SMALL>3</SMALL></SUP>?
+(It doesn't matter which way you group the twos for the binary logic version
+because the two groupings have the same value, 16, but this isn't true with
+threes.)  How many two-argument ternary logic functions are there?
+2<SUP><SMALL>(3<SUP><SMALL>2</SMALL></SUP>)</SMALL></SUP>?  3<SUP><SMALL>(2<SUP><SMALL>3</SMALL></SUP>)</SMALL></SUP>?  (3<SUP><SMALL>3</SMALL></SUP>)<SUP><SMALL>2</SMALL></SUP>?  How many three-argument binary logic
+functions?  The virtue of these problems is that you can check your own
+answers by listing all the possible functions as I did for the two-argument
+binary logic functions.
+
+<P>Most people are introduced to combinatorics
+by way of <EM>probability,</EM>
+the mathematics of gambling.  Given a number of equally likely possible
+situations, some of which win a bet and the rest of which lose it, the
+probability of winning is a ratio:
+
+<P><CENTER><IMG SRC="probability.gif"></CENTER><P>
+The role of combinatorics is to help in computing the numerator and
+denominator of that fraction.
+
+<P>
+
+For example, suppose you have six brown socks and four blue socks in a
+drawer, and you pull out two socks without looking.  What is the probability
+of getting a matching pair?  I'm going to give each sock a name like
+<EM>brown</EM><SUB><SMALL>3</SMALL></SUB> for the third brown sock so that we can talk about individual socks
+even if they're the same color.  How many possible pairs of socks are there?
+That is, given the set
+<P><CENTER>{<EM>brown</EM><SUB><SMALL>1</SMALL></SUB>,
+<EM>brown</EM><SUB><SMALL>2</SMALL></SUB>, ...,
+<EM>brown</EM><SUB><SMALL>6</SMALL></SUB>,
+<EM>blue</EM><SUB><SMALL>1</SMALL></SUB>, ...
+<EM>blue</EM><SUB><SMALL>4</SMALL></SUB>}</CENTER><P>
+containing ten socks, how many two-sock subsets are there?
+
+<P>The first step in answering this question is to notice that we have 10
+choices for the first sock and then 9 choices for the second.  So there are
+10&times;9 ways to make the two choices.  (There is a subtle point here
+that some textbooks don't bother explaining.  The choice of the second sock
+is <EM>not</EM> independent of the first choice, since we can't choose the
+same sock twice.  However, the <EM>number</EM> of second choices is always 9,
+even though the particular nine available socks depend on the first choice.
+So we can get away with multiplying in this example.)
+
+<P>This isn't quite the answer we want, though.  We've shown that there are 90
+<EM>ordered pairs</EM> of socks.  But once we get the socks out of the
+drawer, it doesn't matter which we picked first.  In other words, if we say
+there are 90 possible choices, we are counting
+{<EM>brown</EM><SUB><SMALL>2</SMALL></SUB>, <EM>brown</EM><SUB><SMALL>5</SMALL></SUB>} and {<EM>brown</EM><SUB><SMALL>5</SMALL></SUB>, <EM>brown</EM><SUB><SMALL>2</SMALL></SUB>}
+as two different choices.  Since we don't care which sock came out of the
+drawer first, we are really counting every pair twice, so there are only
+90/2 or 45 possible pairs.
+
+<P>An ordered subset of a set is called a <EM>permutation;</EM>
+a subset without
+a particular order is a <EM>combination.</EM>  We say that there are 90
+permutations of ten things taken two at a time; there are 45 combinations of
+ten things taken two at a time.
+
+<P>It turns out that combinations are what matters most of the time; it's
+relatively rare for permutations to turn up in a math problem.  An exception
+is the device wrongly called a &quot;combination lock&quot;; to open one, you must
+know a particular permutation of the possible numbers.  My high school
+locker &quot;combination&quot; was 18-24-14.  If I tried the same numbers in a
+different order, like 24-18-14, the lock wouldn't open.  (Actually it's
+misleading for me to use this example because the same number can appear
+twice in most locks of this type, so the &quot;combination&quot; is not a subset of
+the available numbers.  If there are 50 numbers available, the total number
+of possibilities is not 50&times;49&times;48 but rather 50&times;50&times;50.  These lock-opening patterns are therefore neither permutations nor
+combinations but something else that we might call &quot;permutations with
+repetition allowed.&quot;)
+
+<P>We haven't finished solving the sock problem.  How many of the possible
+pairs of socks are matching pairs?  One way to find out would be to list all
+the possible pairs and actually count how many of them match.  This is the
+sort of thing computers do well.  First we have to write a procedure that
+takes as input a list and a number, and outputs a list of lists, each of
+which is a subset of the input list whose length is the input number.  That
+is, we want to take
+
+<P><PRE>combs [brown1 brown2 ... brown6 blue1 ... blue4] 2
+</PRE>
+
+<P>and this should output a list of pairs:
+
+<P><PRE>[[brown1 brown2] [brown1 brown3] ... [brown4 blue3] ... [blue3 blue4]]
+</PRE>
+
+<P>This is a fairly tricky program to write.  Try it before you read
+further.  Can you reduce the problem to a smaller, similar problem?  Don't
+forget that we want combinations, not permutations, so the output can't have
+two sublists containing the same elements.
+
+<P>To make sure that each combination appears in the result in only one order,
+we can decide explicitly what that order will be.  The most convenient thing
+is to say that the elements will appear in each sublist in the same order in
+which they appear in the original list.  That is, since the input list has
+<CODE>brown2</CODE> before <CODE>blue3</CODE>, the output will contain the list
+
+<P><PRE>[brown2 blue3]
+</PRE>
+
+<P>but not the list
+
+<P><PRE>[blue3 brown2]
+</PRE>
+
+<P>It follows that the very first element of the input list, <CODE>
+brown1</CODE>, can only appear as the first element of any output sublist.  In
+other words, there are two kinds of sublists: ones with <CODE>brown1</CODE> as
+their first element and ones that don't include <CODE>brown1</CODE> at all.  This
+is a way to divide the problem into smaller pieces.
+
+<P>If we are looking for <EM>n</EM>-element subsets, the first kind consists of <CODE>
+brown1</CODE> stuck in front of a smaller subset of <EM>n</EM>&minus;1 elements chosen from the
+remainder (the <CODE>butfirst</CODE>) of the input list.  The second kind of subset
+is an <EM>n</EM>-element subset of the <CODE>butfirst</CODE>.  We can collect all of each
+kind by a recursive invocation of the procedure we're going to write, then
+append the two collections and output the result.  So the procedure will
+look like this:
+
+<P><PRE>to combs :list :howmany
+... &lt;stop rule&gt; ...
+output sentence (map [fput first :list ?]
+                     combs (butfirst :list) (:howmany-1)) ~
+                (combs (butfirst :list) :howmany)
+end
+</PRE>
+
+<P>By now you've had a lot of experience writing
+recursive procedures,
+but I'm going over this one in detail for two reasons:  It's tricky and it's a
+model for solving many other combinatorial problems.  What makes it tricky
+is a combination of two things.  One is that it's recursive twice; that is,
+there are two recursive invocations of <CODE>combs</CODE> within <CODE>combs</CODE>.  This
+makes the control structure very different from the
+
+<P><PRE>to blah :list
+output fput (<CODE><EM>something</EM></CODE> first :list) (blah butfirst :list)
+end
+</PRE>
+
+<P>sort of recursion that may be more familiar.  The second tricky
+part is that there are two input variables, each of which may be made smaller
+(by <CODE>butfirst</CODE>ing or by subtracting 1) but need not be in a particular
+recursive call.
+
+<P>One implication of these complicating factors is that we need <EM>two</EM>
+stop rules.  It may be obvious that we need one for the situation of
+counting <CODE>:howmany</CODE> down to zero, but we also need one for <CODE>:list</CODE>
+getting too small.  Ordinarily this latter would be an <CODE>emptyp</CODE> test, but
+in fact any list whose length is less than <CODE>:howmany</CODE> is too small, not
+just the empty list.  Here is the finished procedure:
+
+<P><PRE>to combs :list :howmany
+if equalp :howmany 0 [output [[]]]
+if equalp :howmany count :list [output (list :list)]
+output sentence (map [fput first :list ?]
+                     combs (butfirst :list) (:howmany-1)) ~
+                (combs (butfirst :list) :howmany)
+end
+
+? <U>show combs [a b c d e] 3</U>
+[[a b c] [a b d] [a b e] [a c d] [a c e] [a d e]
+         [b c d] [b c e] [b d e] [c d e]]
+</PRE>
+
+<P>Now we can use <CODE>combs</CODE> on the sock problem.  (Note:  The procedure <CODE>
+socks</CODE> shown here is not the one in the program file; there will be a
+modified version a few paragraphs down the road.)
+
+<P><PRE>to socks :list
+localmake &quot;total combs :list 2
+localmake &quot;matching filter [equalp butlast first ? butlast last ?] ~
+                           :total
+print (sentence [There are] count :total [possible pairs of socks.])
+print (sentence [Of these,] count :matching [are matching pairs.])
+print sentence [Probability of match =] ~
+               word (100*(count :matching)/(count :total)) &quot;%
+end
+
+? <U>socks [brown1 brown2 brown3 brown4 brown5 brown6</U>
+         <U>blue1 blue2 blue3 blue4]</U>
+There are 45 possible pairs of socks.
+Of these, 21 are matching pairs.
+Probability of match = 46.6666667%
+</PRE>
+
+<P>The answer is that the probability of a matching pair is just
+under half.  The template used in the invocation of <CODE>filter</CODE> in <CODE>
+socks</CODE> depends on the fact that two socks match if their names are equal
+except for the last character, such as <CODE>brown3</CODE> and <CODE>brown4</CODE>.
+
+<P>I've numbered the socks because it's easier for us to talk about how the
+program works (and about how the underlying mathematics works, too) if we
+can identify an individual sock.  But it's worth noting that the program
+doesn't really need individual sock names.  We could instead use the list
+
+<P><PRE>[brown brown brown brown brown brown blue blue blue blue]
+</PRE>
+
+<P>and change the <CODE>filter</CODE> template to
+
+<P><PRE>[equalp first ? last ?]
+</PRE>
+
+<P>The program will generate some <CODE>[brown brown]</CODE> pairs, some
+<CODE>[brown blue]</CODE> pairs, and some <CODE>[blue blue]</CODE> pairs.  The number of
+pairs will still be 45 and the number of matching pairs will still be 21.
+
+<P>Having come to that realization, we can make the &quot;user interface&quot; a little
+smoother by having <CODE>socks</CODE> accept an input list like
+
+<P><PRE>[6 brown 4 blue]
+</PRE>
+
+<P>and expand that into the desired list of ten socks itself.  Here is
+the final program:
+
+<P><PRE>to socks :list
+localmake &quot;total combs (expand :list) 2
+localmake &quot;matching filter [equalp first ? last ?] :total
+print (sentence [There are] count :total [possible pairs of socks.])
+print (sentence [Of these,] count :matching [are matching pairs.])
+print sentence [Probability of match =] ~
+               word (100*(count :matching)/(count :total)) &quot;%
+end
+
+to expand :list
+if emptyp :list [output []]
+if numberp first :list ~
+   [output cascade (first :list)
+                   [fput first butfirst :list ?]
+                   (expand butfirst butfirst :list)]
+output fput first :list expand butfirst :list
+end
+
+? <U>socks [6 brown 4 blue]</U>
+There are 45 possible pairs of socks.
+Of these, 21 are matching pairs.
+Probability of match = 46.6666667%
+</PRE>
+
+<P>My reason for presenting this refinement of the program is that it offers a
+concrete opportunity for reflection on how you can tell which differences are
+important in a combinatorics problem.  In discussing the first version of
+the program, I said that the two lists
+
+<P><PRE>[brown2 brown5] and [brown5 brown2]
+</PRE>
+
+<P>represent the same pair of socks, so both shouldn't be included in
+the list of lists output by <CODE>combs</CODE>.  Now I'm saying that several lists
+that look identical like
+
+<P><PRE>[brown brown]
+</PRE>
+
+<P>represent <EM>different</EM> pairs of socks and must all be counted.
+It would be a mistake to say, &quot;There are three possibilities: brown-brown,
+brown-blue, and blue-blue.  So the probability of a match is 2/3.&quot; It's
+true that there are three <EM>kinds</EM> of pairs of socks, but the three
+kinds are not equally represented in the list of 45 possible pairs.
+
+<P><H2>Inductive and Closed-Form Definition</H2>
+
+<P>The usual approach to problems like the one about the socks is not to
+enumerate the actual combinations, but rather to compute the <EM>number</EM>
+of combinations directly.  There are formulas for both number of
+combinations and number of permutations.  Usually the latter is derived
+first because it's easier to understand.
+
+<P>With 10 socks in the drawer, the number of two-sock permutations is
+10&times;9.  If we'd wanted three socks for a visiting extraterrestrial
+friend, the number of permutations would be 10&times;9&times;8.  In
+general, if we have <EM>n</EM> things and we want to select <EM>r</EM> of them, the number
+of permutations is
+<P><CENTER><IMG SRC="math11.gif" ALT="math display"></CENTER><P>
+Mathematicians don't like messy formulas full of dots, so this is usually
+abbreviated using the factorial function.  The notation &quot;<EM>n</EM>!&quot; is
+pronounced &quot;<EM>n</EM> factorial&quot; and represents the product of all the integers
+from 1 to <EM>n</EM>.  Using this notation we can write
+<P><CENTER><IMG SRC="math12.gif" ALT="math display"></CENTER><P>
+This is an elegant formula, but you should resist the temptation to use it
+as the basis for a computer program.  If you write
+
+<P><PRE>to perms :n :r
+output (fact :n)/(fact (:n-:r))
+end
+
+to fact :n
+output cascade :n [# * ?] 1
+end
+</PRE>
+
+<P>then you're doing more multiplications than necessary, plus an
+unnecessary division.  Instead, go back to the earlier version in which <EM>r</EM>
+terms are multiplied:
+
+<P><PRE>to perms :n :r
+if :r=0 [output 1]
+output :n * perms :n-1 :r-1
+end
+</PRE>
+
+<P>The set of all permutations of <EM>n</EM> things taken <EM>r</EM> at a time includes
+several rearrangements of each <EM>combination</EM> of <EM>n</EM> things <EM>r</EM> at a
+time.  How many rearrangements of each?  Each combination is a set of <EM>r</EM>
+things, so the number of possible orderings of those <EM>r</EM> things is the
+number of permutations of <EM>r</EM> things <EM>r</EM> at a time, <EM><SUB><SMALL>r</SMALL></SUB>P<SUB><SMALL>r</SMALL></SUB></EM> or <EM>r</EM>!.
+<EM><SUB><SMALL>n</SMALL></SUB>P<SUB><SMALL>r</SMALL></SUB></EM> is greater than <EM><SUB><SMALL>n</SMALL></SUB>C<SUB><SMALL>r</SMALL></SUB></EM>, the number of combinations of <EM>n</EM>
+things taken <EM>r</EM> at a time, by this factor.  In other words, if each
+combination corresponds to <EM>r</EM>! permutations, then the number of
+permutations is <EM>r</EM>! times the number of combinations.  So we have
+<P><CENTER><IMG SRC="math13.gif" ALT="math display"></CENTER><P>
+The notation <IMG SRC="nchooser.gif"> is much more commonly used in mathematics and
+computer science texts than <EM><SUB><SMALL>n</SMALL></SUB>C<SUB><SMALL>r</SMALL></SUB></EM>.  It's pronounced &quot;<EM>n</EM> choose <EM>r</EM>.&quot;
+
+<P>The traditional way to do the sock problem is this:  The total number of
+possible pairs of socks is <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/10choose2.gif">.  The number of matching pairs is
+equal to the number of brown pairs plus the number of blue pairs.  The
+number of brown pairs is the number of combinations of 6 brown socks chosen
+2 at a time, or <IMG SRC="6choose2.gif">.  Similarly, the number of pairs of blue socks
+is <IMG SRC="4choose2.gif">.  So
+<P><CENTER><IMG SRC="math14.gif" ALT="math display"></CENTER><P>
+which is the same answer we got by enumerating and testing all the possible
+pairs.
+
+<P>A formula like
+<P><CENTER><IMG SRC="math15.gif" ALT="math display"></CENTER><P>
+defines a mathematical function in terms of other, more elementary functions.
+It is comparable to a Logo procedure defined in terms of primitives, like
+
+<P><PRE>to second :thing
+output first butfirst :thing
+end
+</PRE>
+
+<P>The &quot;primitives&quot; of mathematics are addition, subtraction, and
+so on, along with a few more advanced ones like the trigonometric and
+exponential functions.  These are called &quot;elementary functions&quot; and a
+formula that defines some new function in terms of those is called a
+<EM>closed form definition.</EM>
+
+<P>
+
+<P>The function <IMG SRC="nchooser.gif"> could also be defined in a different way based on
+the ideas in the <CODE>combs</CODE> program we used to enumerate combinations.  The
+combinations fall into two categories, those that include the first element
+and those that don't.  So the number of combinations is the sum of the
+numbers in each category:
+<P><CENTER><IMG SRC="math16.gif" ALT="math display"></CENTER><P>
+This is called an <EM>inductive definition.</EM>  It is analogous to a
+recursive procedure in Logo.
+
+<P>
+
+<P>These two formulas provide alternative definitions for the <EM>same</EM>
+function, just as two Logo procedures can employ different algorithms but
+have the same input-output behavior.  How do we know that the two
+definitions of <IMG SRC="nchooser.gif"> really do define the same function?  Each
+definition was derived from the fundamental definition of &quot;the number of
+combinations of <EM>n</EM> things taken <EM>r</EM> at a time&quot; by different arguments.
+If those arguments are correct, the two versions must define the same
+function because there is just one correct number of combinations.  It is
+also possible to prove the two definitions equivalent by algebraic
+manipulation; start with the closed form definition and see if it does, in
+fact, obey the requirements of the inductive definition.  For example, if
+<EM>r</EM>=0 we have
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/math17.gif" ALT="math display"></CENTER><P>
+(It may not be obvious that 0! should be equal to 1, but mathematicians
+define the factorial function that way so that the formula <EM>n</EM>! = <EM>n</EM>&middot;(<EM>n</EM>&minus;1)!
+remains true when <EM>n</EM>=1.)  See if you can verify the other two parts of the
+inductive definition.  Here's a hint:
+<P><CENTER><IMG SRC="math18.gif" ALT="math display"></CENTER><P>
+
+<P>Why would anyone be interested in an inductive definition when the closed
+form definition is mathematically simpler and also generally faster to
+compute?  There are two reasons.  First, some functions don't have closed
+form definitions in terms of elementary functions.  For those functions,
+there is no choice but to use an inductive definition.  Second, sometimes
+when you start with a non-formal definition of a function in terms of its
+purpose, like &quot;the number of combinations...&quot; for <IMG SRC="nchooser.gif">, it may be
+easier to see how to translate that into an inductive definition as a first
+step, even if it later turns out that there is also a less obvious closed
+form.  In fact, that's what I did in presenting the idea of combinations.  I
+found it more straightforward to understand the inductive definition because
+it made sense to think about the actual combinations and not merely how many
+of them there are.  (In fact there is a mathematical technique called <EM>
+generating functions</EM> that can sometimes be used to transform an
+inductive definition into a closed form definition, but that technique
+requires calculus and is beyond the scope of this book.)
+
+<P><H2>Pascal's Triangle</H2>
+
+<P>In addition to closed form and inductive definitions, it's often helpful to
+present a sort of partial definition of a function in the form of a
+table of values.  (For
+logic functions, with only a finite number of possible values
+for the arguments of the function, such a table is actually a complete
+definition.)  Partial definitions in a table of values can be particularly
+useful when the function displays some regularity that allows values outside
+the table to be computed easily based on the values in the table.  For
+example, the sine function is <EM>periodic</EM>; its values repeat in cycles
+of 360 degrees.  If you need to know the sine of 380 degrees, you can look
+up the sine of 20 degrees and that's the answer.  For functions of two
+variables, like addition and multiplication, these function tables are often
+presented as square arrays of numbers.  In elementary school you learned the
+addition and multiplication tables for numbers up to 10, along with
+algorithms for reducing the addition and multiplication of larger numbers to
+a sequence of operations on single digits.
+
+<P>The function <IMG SRC="nchooser.gif"> is a function of two variables, so it would
+ordinarily be presented as a square table like the multiplication table,
+except for the fact that this particular function is meaningfully defined
+only when <EM>r</EM>&le;<EM>n</EM>.  (There are no combinations of three things taken five
+at a time, for example, so <IMG SRC="3choose5.gif"> is 0.)  So instead of a square
+format like this:
+<P><CENTER><TABLE>
+<TR><TH><SUB><SMALL><EM>r</EM></SMALL></SUB>\<SUP><SMALL><EM>n</EM></SMALL></SUP>
+<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;2<TH>&nbsp;&nbsp;&nbsp;3<TH>&nbsp;&nbsp;&nbsp;4<TH>&nbsp;&nbsp;&nbsp;5
+<TR><TH>0<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1
+<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1
+<TR><TH>1<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;2
+<TD align="center">&nbsp;&nbsp;&nbsp;3<TD align="center">&nbsp;&nbsp;&nbsp;4<TD align="center">&nbsp;&nbsp;&nbsp;5
+<TR><TH>2<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1
+<TD align="center">&nbsp;&nbsp;&nbsp;3<TD align="center">&nbsp;&nbsp;&nbsp;6<TD align="center">&nbsp;&nbsp;&nbsp;10
+<TR><TH>3<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0
+<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;4<TD align="center">&nbsp;&nbsp;&nbsp;10
+<TR><TH>4<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0
+<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;5
+<TR><TH>5<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0
+<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER><P>
+this function is traditionally presented in a triangular form called
+&quot;Pascal's Triangle&quot; after Blaise Pascal (1623-1662), who invented the
+mathematical theory of probability along with Pierre de Fermat (1601-1665).
+Pascal didn't invent the triangle, but he did pioneer its use in
+combinatorics.  Each row of the triangle contains the nonzero values of
+<IMG SRC="nchooser.gif"> for a particular <EM>n</EM>:
+<P><CENTER><TABLE>
+<TR><TD align="center">1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER><P>
+Pascal's Triangle is often introduced in algebra because the numbers in row
+<EM>n</EM> (counting from zero) are the <EM>binomial coefficients,</EM> the constant
+factors in the terms in the expansion of (<EM>a</EM>+<EM>b</EM>)<SUP><SMALL><EM>n</EM></SMALL></SUP>.  For example,
+<P><CENTER><IMG SRC="math21.gif" ALT="math display"></CENTER><P>
+
+<P>Do you see why the binomial coefficients are related to combinations?  An
+expression like (<EM>a</EM>+<EM>b</EM>)<SUP><SMALL>4</SMALL></SUP> is a sum of products of four <EM>A</EM>s and <EM>B</EM>s.  (How
+many such products?  Each term involves four choices between <EM>A</EM> and <EM>B</EM>;
+there are 2 ways to make each choice, and the choices are independent, so
+there are 2<SUP><SMALL>4</SMALL></SUP> possible products.)  These products are combined into terms
+based on the fact that some are equal to each other, such as <EM>aaab</EM> and
+<EM>abaa</EM>, both of which contribute to the <EM>a</EM><SUP><SMALL>3</SMALL></SUP><EM>b</EM> term.  How many arrangements
+of three <EM>A</EM>s and one <EM>B</EM> are there?  That's like asking how many ways there
+are to choose one slot for a <EM>B</EM> out of four possible slots, which is
+<IMG SRC="4choose1.gif">.
+
+<P>Can you predict what the coefficients will be in the expansion of
+(<EM>a</EM>+<EM>b</EM>+<EM>c</EM>)<SUP><SMALL>4</SMALL></SUP>?  For example, what is the coefficient of <EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM>?  Try
+to multiply it out and see if your formula is right.
+
+<P>Everyone is taught in school that each number in Pascal's Triangle, except
+for the 1s at the ends, is the sum of the two numbers above it.  But this is
+usually presented as a piece of magic with no explanation.  It's not obvious
+how that fact is connected to the formula expressing <IMG SRC="nchooser.gif"> in terms
+of factorials.  But the technique I used in writing the <CODE>combs</CODE> procedure
+to enumerate the actual combinations explains how Pascal's Triangle works.
+The set of all combinations of <EM>n</EM> things taken <EM>r</EM> at a time can be divided
+into those combinations that include the first of the <EM>n</EM> things and those
+that don't.  How many of the former are there?  Each such combination must
+be completed by adjoining to that first thing <EM>r</EM>&minus;1 out of the remaining
+<EM>n</EM>&minus;1 available things, so there are <IMG SRC="n-1chooser-1.gif"> such combinations.
+The second category, those not containing the first thing in the list,
+requires us to choose <EM>r</EM> things out of the remaining <EM>n</EM>&minus;1, so there are
+<IMG SRC="n-1chooser.gif"> of them.  So <IMG SRC="nchooser.gif"> must be the sum of those two
+numbers, which are indeed the ones above it in the triangle.
+
+<P>Thinking about the triangle may also help you to understand why <CODE>combs</CODE>
+needs two stop rules; each row contains <EM>two</EM> numbers, the ones (pun)
+at each end, that can't be computed as the sum of two other numbers.
+
+<P><H2>Simulation</H2>
+
+
+<P>Yet another approach to solving the sock problem would be the
+experimental method:  Load a drawer with six brown and four blue socks, pull out pairs
+of socks a few thousand times, and see how many of the pairs match.  The
+actual experiment would be time-consuming and rather boring, but we can
+<EM>simulate</EM> the experiment with a computer program.  The idea is to use
+random numbers to represent the random choice of a sock.
+
+<P><PRE>to socktest
+localmake &quot;first ~
+          pick [brown brown brown brown brown brown blue blue blue blue]
+localmake &quot;second ~
+          pick (if equalp :first &quot;brown
+               [[brown brown brown brown brown blue blue blue blue]]
+               [[brown brown brown brown brown brown blue blue blue]] )
+output equalp :first :second
+end
+</PRE>
+
+<P><CODE>Socktest</CODE> is a predicate that simulates one trial of picking
+a pair of socks and outputs <CODE>true</CODE> if the socks match.  Notice how the
+available choices for the second sock depend on which color sock was chosen
+first.  (It's a little unaesthetic that this particular selection of six
+brown and four blue socks is built into the program, with three slightly
+different lists explicitly present inside <CODE>socktest</CODE>.  It would be both
+more elegant and more flexible if <CODE>socktest</CODE> could take a list like
+<CODE>[6 brown 4 blue]</CODE> as input, like <CODE>socks</CODE>, and compute the list of
+possibilities for the second sock itself.  But right now I'm more interested
+in showing how a simulation works than in programming style; you can make
+that change yourself if you like.)
+
+<P>What we want to do is invoke <CODE>socktest</CODE> repeatedly and keep track of how
+many times the output is <CODE>true</CODE>.  That can be done with an instruction
+like
+
+<P><PRE>print (cascade 1000 [? + if socktest [1] [0]] 0) / 10
+</PRE>
+
+<P>I divide by 10 so that the result will be expressed as a percent
+probability.  (If I made 100 trials instead of 1000 the output from <CODE>
+cascade</CODE> would already be a percentage.)  Your results will depend on the
+random number generator of your computer.  I tried it three times and got
+results of 50.1%, 50.8%, and 45.5%.  I then did 10,000 trials at once
+with a result of 48.78%.  The result expected on theoretical grounds was
+46&nbsp;<SUP><SMALL>2</SMALL></SUP>&frasl;<SUB><SMALL>3</SMALL></SUB>%.
+
+<P>Simulation is generally much slower than either of the techniques we used
+earlier (enumeration of possibilities and direct computation of the number
+of possibilities), and it gives results that are only approximately correct.
+So why would anyone want to use this method?  For a simple problem like
+this, you probably wouldn't.  But some combinatorics problems are too
+complicated to be captured by a simple formula.  For example, what is the
+probability of winning a game of solitaire?  (To make this a sensible
+question, you'd have to decide on a particular set of strategy rules to
+determine which card to play next when there are several possibilities.  The
+rule could be &quot;play the higher ranking card&quot; or &quot;choose a card at
+random,&quot; for example.)  In principle this question could be answered
+exactly, since there are only a finite number of ways a deck of cards can be
+arranged and we could analyze each of them.  But in practice the most
+reasonable approach is probably to write a solitaire simulator and have it
+play out a few thousand randomly ordered hands.
+
+<P>Solitaire is a rather complicated game; even a simulator for it would be
+quite a large project.  A more manageable one, if you'd like something to
+program, would be a craps simulator.  Remember that the 11 possible results
+of rolling two dice (2 to 12) are not equally likely!  You have to simulate
+each die separately.
+
+<P><H2>The Simplex Lock Problem</H2>
+
+<P>This is a picture of a Simplex lock, so called because it's
+manufactured by Simplex Security Systems, Inc.  It is a five-button mechanical
+(i.e., no electricity) combination lock with an unusual set of possible
+combinations.  As an example of a challenging problem in combinatorics, I'd
+like you to figure out how many possible combinations there are.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/lock.gif" ALT="figure: lock"></CENTER>
+
+
+
+<P>What makes this lock unusual is that a combination can include more than one
+button pushed at the same time.  For example, one possible combination is
+&quot;2, then 1 and 4 at the same time, then 3.&quot;  Here are the precise rules:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Each button may be used at most once.  For example, &quot;2, then 2 and 3 at
+the same time&quot; is not allowed.
+<TR><TH align="right" valign="top">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Each push may include any number of buttons, from one to five.  For
+example, one legal combination is &quot;hit all five buttons at once with your
+fist.&quot;  (But hitting all five buttons can't be part of a larger combination
+because of rule 1.)
+
+<P></TABLE><P>
+
+<P>It follows from these rules that there can be at most five
+distinct pushes.  (Do you see why?)  The rules also allow for the null
+combination, in which you don't have to push any buttons at all.
+
+<P>When working on this problem, don't forget that when two or more buttons are
+pushed at the same time, their order doesn't matter.  That is, you shouldn't
+count &quot;2 and 3 together, then 5&quot; and &quot;3 and 2 together, then 5&quot; as two
+distinct combinations.  (For this reason, the Simplex lock <EM>is</EM>
+entitled, at least in part, to the name &quot;combination lock&quot;!)
+
+<P>Try to figure out how many combinations there are before reading further.
+You can enumerate all the possibilities or you can derive a formula for the
+number of possibilities.  You might want to start with a smaller number of
+buttons.  (As a slight hint, when you buy one of these locks, the box it
+comes in says &quot;thousands of combinations.&quot;)
+
+<P>I first attacked this problem by trying to enumerate all the possible
+combinations, but that turns out to be quite messy.  The trouble is that it
+isn't obvious how to <EM>order</EM> the combinations, so it's hard to be sure
+you haven't missed any.  Here is how I finally decided to do it.  First of
+all, divide the possible combinations into six categories depending on how
+many buttons (zero to five) they use.  There is exactly one combination
+using zero buttons, and there are five using one button each.  After that it
+gets tricky because there are different <EM>patterns</EM> of simultaneous
+pushes within each category.  For example, for combinations using two
+buttons there are two patterns: the one in which they're pressed together
+(<CODE>x-x</CODE>) and the one in which they're pressed separately (<CODE>x x</CODE>).
+(I'm introducing a notation for patterns in which hyphens connect buttons
+that are pressed together and spaces connect the separate pushes.)  How many
+distinct combinations are there in each of those patterns?  Figure it out
+before reading on.
+
+<P>In the <CODE>x x</CODE> pattern there are <SUB><SMALL>5</SMALL></SUB><EM>P</EM><SUB><SMALL>2</SMALL></SUB> &quot;combinations&quot; because the
+order in which you push the buttons matters.  In the <CODE>x-x</CODE> pattern there
+are only <IMG SRC="5choose2.gif"> combinations because the two buttons are pushed
+together; <CODE>1-4</CODE> and <CODE>4-1</CODE> are the same combination.  Altogether
+there are 20+10 or 30 combinations usng two of the five buttons.
+
+<P>Beyond this point it gets harder to keep track of the different patterns.
+Among the three-button patterns are <CODE>x-x x</CODE>, <CODE>x x x</CODE>, and <CODE>
+x-x-x</CODE>.  How many more are there?  How many four-button patterns?  You might,
+at this point, like to see if you can finish enumerating all the
+possibilities for the five-button lock.
+
+<P>My solution is to notice that in a three-button pattern, for example, there
+are two slots between the <CODE>x</CODE>s, and each slot has a space or a hyphen.
+If I think of those slots as binary digits, with 0 for space and 1 for
+hyphen, then each pattern corresponds to a 2-bit number.  There are four
+such numbers, 00 to 11 (or 0 to 3 in ordinary decimal notation).
+
+<P><TABLE><TR><TH>number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH>pattern
+<TR><TD align="center">
+<PRE>
+00
+01
+10
+11
+</PRE><TH>&nbsp;&nbsp;&nbsp;&nbsp;<TD align="center">
+<PRE>
+x x x
+x x-x
+x-x x
+x-x-x
+</PRE></TABLE>
+
+<P>Similarly, there are eight four-button patterns:
+
+<P><TABLE><TR><TH>number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH>pattern
+<TR><TD align="center">
+<PRE>
+000
+001
+010
+011
+100
+101
+110
+111
+</PRE><TH>&nbsp;&nbsp;&nbsp;&nbsp;<TD align="center">
+<PRE>
+x x x x
+x x x-x
+x x-x x
+x x-x-x
+x-x x x
+x-x x-x
+x-x-x x
+x-x-x-x
+</PRE></TABLE>
+
+<P>And there are 16 five-button patterns, from 0000 to 1111.
+
+<P>How many combinations are there within each pattern?  There are two
+different ways to go about calculating that number.  To be specific, let's
+consider four-button patterns.  The way I chose to do the calculation was to
+start with the idea that there are <SUB><SMALL>5</SMALL></SUB><EM>P</EM><SUB><SMALL>4</SMALL></SUB> ways to choose four buttons in
+order.  For the <CODE>x x x x</CODE> pattern, this is the answer.  For the other
+patterns, this number (120) has to be divided by various factors to account
+for the fact that the order is <EM>partially</EM> immaterial, just as in
+deriving the formula for combinations from the formula for permutations we
+divided by <EM>r</EM>! because the order is completely immaterial.  Consider the
+pattern <CODE>x-x x x</CODE>.  In this pattern the order of the first two numbers
+is immaterial, but the choice of the first two numbers as a pair matters,
+and so does the order of the last two numbers.  So <CODE>1-2 3 4</CODE> is the same
+combination as <CODE>2-1 3 4</CODE> but different from <CODE>1-3 2 4</CODE> or <CODE>
+1-2 4 3</CODE>.  That means the number 120 is too big by a factor of 2, because
+every significant choice of combination is represented twice.  For this
+pattern the number of different combinations is 60.  Of course the same
+argument applies to the patterns <CODE>x x-x x</CODE> and <CODE>x x x-x</CODE>.
+
+<P>What about <CODE>x-x x-x</CODE>?  In this pattern there are two pairs of positions
+within which order doesn't matter.  Each combination appears <EM>four</EM>
+times in the list of 120; <CODE>1-2 3-4</CODE> is the same as <CODE>1-2 4-3</CODE>,
+<CODE>2-1 3-4</CODE>, and <CODE>2-1 4-3</CODE>.  So there are 30 significantly different
+combinations in this pattern.  What about <CODE>x-x-x x</CODE>?  In this pattern,
+the order of the first three numbers is irrelevant; this means that there
+are 3! or 6 appearances of each combination in the 120, so there are 20
+significantly different combinations in this pattern.  The general rule is
+that for each group of <EM>m</EM> consecutive hyphens in the pattern you must
+divide by (<EM>m</EM>+1)! to eliminate duplicates.
+
+<P>(My approach was to start with permutations and then divide out redundant
+ones.  Another approach would be to build up the pattern using combinations.
+The pattern <CODE>x-x x x</CODE> contains three groups of numbers representing
+three &quot;pushes&quot;: a group of two and two groups of one.  Since this is a
+five-button lock, for the first group of two there are <IMG SRC="5choose2.gif"> choices.
+(Order doesn't matter within a group.)  For the second group there are only
+three buttons remaining from which we can choose, so there are <IMG SRC="3choose1.gif">
+choices for that button.  Finally, there are <IMG SRC="2choose1.gif"> choices for the
+fourth button (the third group).  This makes 10&times;3&times;2 possible
+combinations for this pattern, the same as the 60 we computed the other way.
+For the <CODE>x-x x-x</CODE> pattern this method gives <IMG SRC="5c2x3c2.gif">
+or 30 combinations.)
+
+<P>Having worked all this out, I was ready to write a computer program to count
+the total number of combinations.  The trickiest part was deciding how to
+deal with the binary numbers that represent the patterns.  In the end I used
+plain old numbers.  The expression
+
+<P><PRE>remainder :number 2
+</PRE>
+
+<P>yields the rightmost bit of a number, and then <CODE>:number/2</CODE>
+gives all but the rightmost bit (with a little extra effort for odd numbers).
+To help you read the program, here is a description of the most important
+procedures:
+
+<P>
+<TABLE><TR><TH align="right" valign="top"><CODE>lock&nbsp;5</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">outputs the total number of combinations
+for the 5-button lock.
+<TR><TH align="right" valign="top"><CODE>lock1&nbsp;5&nbsp;4</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">outputs the number of combinations that use
+4 out of the 5 buttons.
+<TR><TH align="right" valign="top"><CODE>lock2&nbsp;120&nbsp;5&nbsp;1</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">outputs the number of combinations for the
+4-button pattern corresponding to the binary
+form of the number 5 (101 or x-x x-x).  The
+120 is <SUB><SMALL>5</SMALL></SUB><EM>P</EM><SUB><SMALL>4</SMALL></SUB> and the 1 is always used as
+the third input except in recursive calls.
+
+<P></TABLE>
+
+<P>Here is the program:
+
+<P><PRE>to lock :buttons
+output cascade :buttons [? + lock1 :buttons #] 1
+end
+
+to lock1 :total :buttons
+localmake &quot;perms perms :total :buttons
+output cascade (twoto (:buttons-1)) ~
+               [? + lock2 :perms #-1 1] ~
+               0
+end
+
+to twoto :power
+output cascade :power [2 * ?] 1
+end
+
+to lock2 :perms :links :factor
+if equalp :links 0 [output :perms/(fact :factor)]
+if equalp (remainder :links 2) 0 ~
+   [output lock2 :perms/(fact :factor) :links/2 1]
+output lock2 :perms (:links-1)/2 :factor+1
+end
+</PRE>
+
+<P>One slight subtlety is that in <CODE>lock</CODE> the third input to
+<CODE>cascade</CODE> is 1 rather than 0 to include the one 0-button combination
+that would not otherwise be added in.
+
+<P><H2>An Inductive Solution</H2>
+
+<P>When I wrote that program, I was pleased with myself for managing to turn
+such a messy solution into executable form, but I wasn't satisfied with
+the underlying approach.  I wanted something mathematically more elegant.
+
+<P>What made it possible for me to find the approach I wanted was the chance
+discovery that the number of combinations that use all five buttons (541)
+is half of the total number of combinations (1082).  Could this possibly be
+a coincidence, or would that have to be true for any number of buttons?
+To see that it has to be true, I used an idea from another branch of
+mathematics, <EM>set theory.</EM>  A <EM>set</EM> is any collection of things,
+in no particular order.  One can speak of the set of all the fingers on my
+left hand, or the set of all the integers, or the set of all the universities
+in cities named Cambridge.  Much of the interesting part of set theory has
+to do with the properties of infinite sets; for example, it turns out that
+the set of all the integers is the same size as the set of all the rational
+numbers, but both of these are smaller than the set of irrational numbers.
+What does it mean for one infinite set to be the same size as, or to be
+larger than, another?  The same definition works equally well for finite
+sets:  Two sets are the same size if they can be placed in
+<EM>one-to-one correspondence.</EM>  This means that you must exhibit a way to
+pair the elements of one set with the elements of the other so that each
+element of one has exactly one partner in the other.  (A set is larger than
+another if they aren't the same size, but a subset of the first is the same
+size as the second.)
+
+<P>To prove that my observation about the lock combinations has to be true
+regardless of the number of buttons, I have to exhibit a one-to-one
+correspondence between two sets: the set of all combinations using all
+the buttons of an <EM>n</EM>-button lock and the set of all combinations using
+fewer than <EM>n</EM> of the buttons.  But that's easy.  Starting with a
+combination that uses all the buttons, just eliminate the last push (one or
+more buttons pushed at the same time) to get a combination using fewer than
+all the buttons.  For example, for a five-button lock, the five-button
+combination <CODE>2 3-4 1-5</CODE> is paired with the three-button combination
+<CODE>2 3-4</CODE>.  (We have to eliminate the last <EM>push</EM> and not merely
+the last <EM>button</EM> for two reasons.  First, if we always eliminated
+exactly one button, we'd always get a four-button combination, and we want
+to pair five-button combinations with all the fewer-than-five ones.
+Second, which is the &quot;last&quot; button if the last push involves more than
+one?  Remember, <CODE>2 3-4 1-5</CODE> is the <EM>same</EM> combination as
+<CODE>2 3-4 5-1</CODE>.  But writing this combination in two different forms
+seems to pair it with two different smaller ones.  The rules of one-to-one
+correspondence say that each element of a set must have exactly one partner
+in the other set.)
+
+<P>To show that the correspondence works in both directions, start with a
+combination that doesn't use all the buttons; its partner is formed by
+adding one push at the end that contains all the missing buttons.
+For example, if we start with <CODE>1 2-5</CODE> then its partner is
+<CODE>1 2-5 3-4</CODE>.
+
+<P>I've just proved that the number of all-<EM>n</EM> combinations must be equal to
+the number of fewer-than-<EM>n</EM> combinations.  So it's not a coincidence that
+541 is half of 1082.  In order to be able to talk about these numbers more
+succinctly, I want to define
+<P><CENTER><EM>f</EM>(<EM>n</EM>) = number of <EM>n</EM>-button
+combinations of an <EM>n</EM>-button lock</CENTER><P>
+We've just proved that it's also true that
+<P><CENTER><EM>f</EM>(<EM>n</EM>) = number of fewer-than-<EM>n</EM>-button
+combinations</CENTER><P>
+Now, what does &quot;fewer than <EM>n</EM> buttons&quot; mean?  Well, there are
+combinations using no buttons, one button, two buttons, and so on up to <EM>n</EM>&minus;1
+buttons.  Let's define
+<P><CENTER><EM>g</EM>(<EM>n</EM>,<EM>i</EM>) = number of <EM>i</EM>-button
+combinations in an <EM>n</EM>-button lock</CENTER><P>
+So we can formalize the phrase &quot;fewer than <EM>n</EM>&quot; by saying
+<P><CENTER><EM>f</EM>(<EM>n</EM>) =
+<EM>g</EM>(<EM>n</EM>,0)+<EM>g</EM>(<EM>n</EM>,1)+<EM>g</EM>(<EM>n</EM>,2)+ &middot;&middot;&middot; +<EM>g</EM>(<EM>n</EM>,<EM>n</EM>&minus;1)</CENTER><P>
+Instead of using those dots in the middle, mathematicians have another
+notation for a sum of several terms like this.
+<P><CENTER><IMG SRC="math26.gif" ALT="math display"></CENTER><P>
+If you haven't seen this notation before, the &Sigma; (<EM>sigma</EM>)
+symbol is the Greek letter <EM>S,</EM> and is used to represent a <EM>S</EM>um.
+It works a little like the <CODE>for</CODE> iteration tool; the variable below the
+&Sigma; (in this case, <EM>i</EM>) takes on values from the lower limit (0) to the
+upper limit (<EM>n</EM>&minus;1), and for each of those values the expression following the
+&Sigma; is added into the sum.  The Logo equivalent would be
+
+<P><PRE>for [i 0 [:n-1]] [make &quot;sum :sum + (g :n :i)]
+</PRE>
+
+<P>The &Sigma;-expression is pronounced &quot;the sum from <EM>i</EM> equals
+zero to <EM>n</EM> minus one of <EM>g</EM> of <EM>n</EM> comma <EM>i</EM>.&quot;
+
+<P>So far, what I've done is like what I did before: dividing the set of all
+possible combinations into subsets based on the number of buttons used in
+each combination.  This is like the definition of <CODE>lock</CODE> in terms of
+<CODE>lock1</CODE>.  The next step is to see if we can find a formula for <EM>g</EM>(<EM>n</EM>,<EM>i</EM>).
+How many 3-button combinations, for example, can we make using a 5-button
+lock?  (That's <EM>g</EM>(5,3).)  There are many different ways in which I might
+try to derive a formula, but I think it will be helpful at this point to
+step back and consider my overall goal.  I started this line of reasoning
+because I'm trying to express the solution for the five-button lock in terms
+of easier solutions for smaller numbers of buttons.  That is, I'm looking
+for an inductive definition of <EM>f</EM>(<EM>n</EM>) in terms of values of <EM>f</EM> for smaller
+arguments.  I'd like to end up with a formula like
+<P><CENTER><EM>f</EM>(<EM>n</EM>) = ... <EM>f</EM>(0) ... <EM>f</EM>(1) 
+... <EM>f</EM>(<EM>n</EM>&minus;1) ...</CENTER><P>
+but I don't yet know exactly what form it will take.  So far I've written
+a formula for <EM>f</EM>(<EM>n</EM>) in terms of <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) for values of <EM>i</EM> less than <EM>n</EM>.
+It would be great, therefore, if I could express <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) in terms of
+<EM>f</EM>(<EM>i</EM>); that would give me exactly what I want.
+
+<P>To put that last sentence into words, it would be great if I could express
+the number of <EM>i</EM>-button combinations of an <EM>n</EM>-button lock in terms of the
+number of <EM>i</EM>-button combinations of an <EM>i</EM>-button lock.  For example, can I
+express the number of combinations using 3 out of 5 buttons in terms of the
+number of combinations of 3 out of 3 buttons?  Yes, I can.  The latter is
+the number of rearrangements of three buttons once we've selected the three
+buttons.  If we start with five buttons, there are <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/5choose3.gif"> possible
+sets of three buttons to choose.  For each of those <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/5choose3.gif"> sets of
+three buttons, there are <EM>f</EM>(3) ways to arrange those three buttons in a
+combination.
+
+<P>
+
+<P><P><CENTER><IMG SRC="math28.gif" ALT="math display"></CENTER><P>
+It may not be obvious why this is so.  Suppose you list all the 3-button
+combinations of a 3-button lock.  There are 13 of them, consisting of the
+numbers from 1 to 3 in various orders and with various groups connected
+by hyphens.  Those 13 combinations are also some of the 3-button combinations
+of a 5-button lock, namely, the ones in which the particular three buttons
+we chose are 1, 2, and 3.  If instead we choose a different set of three
+(out of five) buttons, that gives rise to a different set of 13 combinations.
+For example, if we choose the buttons 2, 3, and 4, we can take the original
+13 combinations and change all the 1s to 2s, all the 2s to 3s, and all the
+3s to 4s:
+
+<P><PRE>buttons:       1,2,3        2,3,4      1,4,5
+
+               1 2 3        2 3 4      1 4 5
+               1 3 2        2 4 3      1 5 4
+               2 1 3        3 2 4      4 1 5
+               2 3 1        3 4 2      4 5 1
+               3 1 2        4 2 3      5 1 4
+               3 2 1        4 3 2      5 4 1
+               1 2-3        2 3-4      1 4-5
+               2 1-3        3 2-4      4 1-5
+               3 1-2        4 2-3      5 1-4
+               1-2 3        2-3 4      1-4 5
+               1-3 2        2-4 3      1-5 4
+               2-3 1        3-4 2      4-5 1
+               1-2-3        2-3-4      1-4-5
+</PRE>
+
+<P>This table has a column for each of three possible combinations of
+five numbers three at a time.  The table could be extended to have a column
+for <EM>every</EM> such combination of numbers, and then it would contain all
+the lock combinations using three out of five buttons.  The total number of
+entries in the extended table is therefore <EM>g</EM>(5,3); the table has <EM>f</EM>(3)
+rows and <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/5choose3.gif"> columns.  So
+<P><CENTER><IMG SRC="math29.gif" ALT="math display"></CENTER><P>
+which is a particular case of the general formula above.
+
+<P>We now have a formula for <EM>f</EM>(<EM>n</EM>) in terms of all the <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) and a formula
+for <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) in terms of <EM>f</EM>(<EM>i</EM>).  Combining these we have
+<P><CENTER><IMG SRC="math30.gif" ALT="math display"></CENTER><P>
+or
+<P><CENTER><IMG SRC="math31.gif" ALT="math display"></CENTER><P>
+Like any inductive definition, this one needs a special rule for the
+smallest case, from which all the others are computed:
+<P><CENTER><EM>f</EM>(0) = 1</CENTER><P>
+
+<P>The total number of combinations for an <EM>n</EM>-button lock is 2&times;<EM>f</EM>(<EM>n</EM>).
+I find this much more elegant than my original solution.  (So why didn't I
+just show you this one to begin with?  Because I never would have figured
+this one out had I not first done the enumeration of cases.  I want you to
+see how a combinatorics problem is solved, not just what the beautiful
+solution looks like.)  This formula can also be turned into a computer
+program:
+
+<P><PRE>to simplex :buttons
+output 2 * f :buttons
+end
+
+to f :n
+if equalp :n 0 [output 1]
+output cascade :n [? + ((choose :n (#-1)) * f (#-1))] 0
+end
+
+to choose :n :r
+output (perms :n :r)/(fact :r)
+end
+</PRE>
+
+<P>This program is faster as well as simpler than the other; on my
+home computer, <CODE>lock 5</CODE> takes about 4 seconds, <CODE>simplex 5</CODE> about 2 seconds.
+
+<P>The <CODE>simplex</CODE> function has no exact closed form equivalent, but it turns
+out that there is (amazingly!) a closed form definition that, when rounded
+to the nearest integer, gives the desired value:
+
+<P><PRE>to simp :n
+output round (fact :n)/(power (ln 2) (:n+1))
+end
+</PRE>
+
+<P>The <CODE>ln</CODE> function, a Logo primitive, computes the &quot;natural
+logarithm&quot; of its input; <CODE>ln 2</CODE> has the approximate value 0.69314718056.
+The <CODE>power</CODE> function of two inputs takes
+the first input to the power of the second input.  <CODE>Fact</CODE> is the
+factorial function as defined earlier in this chapter.
+
+<P>Another related programming problem is to list the actual combinations,
+rather than merely count them.  Probably the simplest way to do that is
+to use an approach similar to the one I used in the <CODE>combs</CODE> procedure
+that lists combinations of members of a list:  First use recursion to
+find the lock combinations using only the <CODE>butfirst</CODE> of the available
+buttons, then find the ways in which the <CODE>first</CODE> button can be added
+to each of them.
+
+<P><H2>Multinomial Coefficients</H2>
+
+
+<P>Earlier, in talking about Pascal's Triangle, I showed how binomial
+coefficients are related to combinations and asked you to think about
+<EM>trinomial</EM> coefficients.  What, for example, is the coefficient of
+<EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM> in the expansion of (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>)<SUP><SMALL>4</SMALL></SUP>?
+
+<P>The expansion is a sum of products; each of those products contains four
+variables (<EM>aaaa</EM>, <EM>aaab</EM>, etc.).  The ones that contribute to the <EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM>
+term are the ones with one <EM>A</EM>, two <EM>B</EM>s, and one <EM>c</EM>; these include
+<EM>abbc</EM>, <EM>bcab</EM>, <EM>cabb</EM>, and so on.  Out of the four slots for variables in
+one of those products, how many ways can we choose a slot for one <EM>A</EM>?  The
+answer is <IMG SRC="4choose1.gif">.  Having chosen one, we are left with three slots
+and we want to choose two of them for <EM>B</EM>s.  There are <IMG SRC="3choose2.gif"> ways to
+do that.  Then we have one slot left, just enough for the one <EM>c</EM>, which
+makes a trivial contribution of <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/1choose1.gif"> to the overall number of
+possibilities.  The total is <IMG SRC="4c1x3c2x1c1.gif"> or 4&times;3&times;1 or 12, and that is the coefficient of
+<EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM>.  Similarly, the coefficient of <EM>ac</EM><SUP><SMALL>3</SMALL></SUP> is <IMG SRC="4c1x3c3.gif"> or 4.
+
+<P>The same sort of argument can be used for even more complicated cases.  In
+the expansion of (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>+<EM>d</EM>+<EM>e</EM>)<SUP><SMALL>14</SMALL></SUP> what is the coefficient of <EM>a</EM><SUP><SMALL>2</SMALL></SUP><EM>b</EM><SUP><SMALL>3</SMALL></SUP><EM>c</EM><EM>d</EM><SUP><SMALL>5</SMALL></SUP><EM>e</EM><SUP><SMALL>3</SMALL></SUP>?
+It's <P><CENTER><IMG SRC="math33.gif" ALT="math display"></CENTER><P>
+
+<P>Here is a harder question:  How many terms are there in, say, (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>+<EM>d</EM>)<SUP><SMALL>7</SMALL></SUP>?
+It's easy to see that there are 4<SUP><SMALL>7</SMALL></SUP> products of four variables, but after
+the ones that are equal to each other have been combined into terms, how
+many distinct terms are there?
+
+<P>Like the Simplex lock problem, this one can probably be solved most easily
+by reducing the problem to a smaller subproblem--in other words, by an
+inductive definition.  This problem also has something in common with the
+earlier problem of listing all the combinations of a given size from a
+given list, as we did in the <CODE>combs</CODE> procedure.  Try to solve the
+problem before reading further.  (It's hard to say how another person will
+find a problem, but I think this one is easier than the Simplex one.)
+
+<P>In order to be able to express the original problem in terms of a smaller
+version, we have to generalize it.  I posed a specific problem, about the
+seventh power of the sum of four variables.  I'd like to be able to give
+the answer to that problem the name <EM>t</EM>(4,7) and try to find a way to
+express that in terms of, let's say, <EM>t</EM>(4,6).  So I'm going to define
+the function <EM>t</EM> as
+<P><CENTER><EM>t</EM>(<EM>n</EM>,<EM>k</EM>) = number of terms
+in (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>+<EM>a</EM><SUB><SMALL>2</SMALL></SUB>+
+ &middot;&middot;&middot; 
++<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL><EM>k</EM></SMALL></SUP></CENTER><P>
+(If this were a &quot;straight&quot; math book I'd cheerfully recycle the name <EM>f</EM>
+for the function, even though we had a different <EM>f</EM> in the last section,
+but I'm anticipating wanting to write a Logo program for this problem and I
+can't have two procedures named <CODE>f</CODE> in the same workspace.)
+
+<P>In writing <CODE>combs</CODE> I used the trick of dividing all possible
+combinations into two groups: those including the first member of the list
+and those not including that member.  A similar trick will be useful here;
+we can divide all the terms in an expansion into two groups.  One group will
+contain those terms that include the first variable (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>) and the other
+will contain the rest.  For example, in the original problem, <EM>a</EM><SUP><SMALL>2</SMALL></SUP><EM>b</EM><SUP><SMALL>3</SMALL></SUP><EM>d</EM><SUP><SMALL>2</SMALL></SUP> is
+a term in the first group, while <EM>c</EM><SUP><SMALL>7</SMALL></SUP> is a term in the second group.
+
+<P>A term in the first group can be divided by <EM>a</EM><SUB><SMALL>1</SMALL></SUB>; the result must be a term
+in the expansion of (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>+<EM>a</EM><SUB><SMALL>2</SMALL></SUB>+ &middot;&middot;&middot; +<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL><EM>k</EM>&minus;1</SMALL></SUP>.  How many such terms are
+there?  There are <EM>t</EM>(<EM>n</EM>,<EM>k</EM>&minus;1) of them.  So that's how many terms there are in
+the first group.
+
+<P>A term in the second group is a product of <EM>k</EM> variables <EM>not</EM>
+including <EM>a</EM><SUB><SMALL>1</SMALL></SUB>.  That means that such a term is also part of the expansion
+of (<EM>a</EM><SUB><SMALL>2</SMALL></SUB>+ &middot;&middot;&middot; +<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL><EM>k</EM></SMALL></SUP>.  How many such terms are there?  There are
+<EM>t</EM>(<EM>n</EM>&minus;1,<EM>k</EM>) of them.  Notice the difference between the two groups.  In the
+first case, we associate a term with a similar term in the expansion of an
+expression involving a <EM>smaller power</EM> of the <EM>same number</EM> of
+variables.  In the second case, we associate a term with an equal term in
+the expansion of an expression involving <EM>fewer variables</EM> taken to
+the <EM>same power.</EM>
+
+<P>Combining these two results, we see that
+<P><CENTER><EM>t</EM>(<EM>n</EM>,<EM>k</EM>) =
+<EM>t</EM>(<EM>n</EM>,<EM>k</EM>&minus;1)+<EM>t</EM>(<EM>n</EM>&minus;1,<EM>k</EM>)</CENTER><P>
+Since this is a function of two variables, it needs two &quot;stop rules,&quot; just
+like the function <IMG SRC="nchooser.gif">.  Picking these limiting cases seems much
+simpler than inventing the induction rule, but even so, it may repay some
+attention.  For the rule
+<P><CENTER><IMG SRC="math36.gif" ALT="math display"></CENTER><P>
+we ended up considering the limiting cases <EM>r</EM>=0 and <EM>r</EM>=<EM>n</EM>.  I didn't say
+anything about it at the time because I didn't want to get distracted, but
+it's not obvious why there is the asymmetry between the two variables in
+those limiting cases.  That is, why didn't I pick <EM>r</EM>=0 and <EM>n</EM>=0 as the
+limiting cases?  That would be more like what you're accustomed to in
+recursive Logo procedures, where stop rules almost always involve a
+comparison of something with zero or with the empty list.
+
+<P>The funny limiting cases for <IMG SRC="nchooser.gif"> (and the corresponding funny stop
+rules in <CODE>combs</CODE>) are related to the fact that this function is
+meaningful only when <EM>n</EM>&ge;<EM>r</EM>.  The two arguments can't be chosen
+independently.  If we didn't have the <EM>r</EM>=<EM>n</EM> limiting case, the inductive
+formula would have us compute
+<P><CENTER><IMG SRC="math37.gif" ALT="math display"></CENTER><P>
+If we define <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/4choose5.gif"> as zero, this equation does turn out to be true,
+but it isn't a very sensible way to compute <IMG SRC="5choose5.gif">.
+
+<P>In the case of the function <EM>t</EM>, the two arguments <EM>are</EM> independent.
+Both <EM>t</EM>(4,7) and <EM>t</EM>(7,4) are sensible things to ask for.  Therefore, we
+should use the more obvious limiting cases <EM>n</EM>=0 and <EM>k</EM>=0.  The trouble is
+that it's not obvious what the value of <EM>t</EM>(0,<EM>k</EM>) or <EM>t</EM>(<EM>n</EM>,0) should be.  The
+first of these, <EM>t</EM>(0,<EM>k</EM>), represents the number of terms in the expansion of
+()<SUP><SMALL><EM>k</EM></SMALL></SUP>--nothing to the <EM>k</EM>th power!  That seems meaningless.  On the other
+hand, <EM>t</EM>(<EM>n</EM>,0) represents the number of terms in (&sum; <EM>a</EM><SUB><SMALL><EM>i</EM></SMALL></SUB>)<SUP><SMALL>0</SMALL></SUP>, which is 1.
+Anything to the zeroth power is 1.  Does &quot;1&quot; count as a term?  It doesn't
+have any variables in it.
+
+<P>
+
+<P>One solution would be to take as limiting cases <EM>n</EM>=1 and <EM>k</EM>=1.  It's much
+easier to see what those values should be.  (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>)<SUP><SMALL><EM>k</EM></SMALL></SUP> has one term, so
+<EM>t</EM>(1,<EM>k</EM>)=1.  And (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>+ &middot;&middot;&middot; +<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL>1</SMALL></SUP> has <EM>n</EM> terms, so <EM>t</EM>(<EM>n</EM>,1)=<EM>n</EM>.  We
+could, then, define the function <EM>t</EM> as
+<P><CENTER><IMG SRC="math38.gif" ALT="math display"></CENTER><P>
+But it is possible to figure out appropriate values for zero arguments by
+working backwards from the cases we already understand.  For example, we
+know that <EM>t</EM>(2,1) must equal 2.  But
+<P><CENTER><EM>t</EM>(2,1) = <EM>t</EM>(2,0)+<EM>t</EM>(1,1) = <EM>t</EM>(2,0)+1</CENTER><P>
+It follows that <EM>t</EM>(2,0) must be 1.  So it's reasonable to guess that
+<EM>t</EM>(<EM>n</EM>,0)=1 will work in general.  Similarly, we know that <EM>t</EM>(1,2)=1, but
+<P><CENTER><EM>t</EM>(1,2) = <EM>t</EM>(1,1)+<EM>t</EM>(0,2) = 1+<EM>t</EM>(2,0)</CENTER><P>
+Therefore <EM>t</EM>(0,2) must be 0.  We can define <EM>t</EM> as
+<P><CENTER><IMG SRC="math41.gif" ALT="math display"></CENTER><P>
+
+<P>What is <EM>t</EM>(0,0)?  The definition above contradicts itself about this.  The
+answer should be 0 because <EM>n</EM>=0 but also 1 because <EM>k</EM>=0.  This reminds me
+of the similar problem about powers of integers.  What is 0<SUP><SMALL>0</SMALL></SUP>?  In general
+0<SUP><SMALL><EM>x</EM></SMALL></SUP>=0 but <EM>x</EM><SUP><SMALL>0</SMALL></SUP>=1, for nonzero <EM>x</EM>.  There is really no &quot;right&quot; answer,
+but mathematicians have adopted the convention that 0<SUP><SMALL>0</SMALL></SUP>=1.  To make our
+definition of <EM>t</EM> truly correct I have to choose a convention for <EM>t</EM>(0,0)
+and modify the definition to reflect it:
+<P><CENTER><IMG SRC="math42.gif" ALT="math display"></CENTER><P>
+
+<P>
+
+<P>It's straightforward to translate this mathematical function definition into
+a Logo procedure:
+
+<P><PRE>to t :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE>
+
+<P>Using this function we can compute <CODE>t 4 7</CODE> and find that the
+answer to the original problem is 120.
+
+<P>(Can you write a program to display the actual expansion?  That is, it
+should print something like
+
+<P><PRE>(A+B+C+D)^7 =
+   1 A^7 +
+   7 A^6 B +
+   21 A^5 B^2 +
+   ...
+</PRE>
+
+<P>There are two parts to this problem.  One is to figure out the
+combinations of variables in the 120 terms, which can be done with a
+procedure like <CODE>combs</CODE>, and the other is to figure out the coefficients,
+which I discussed at the beginning of this section.)
+
+<P>I was introduced to this problem as a student teacher in a high school
+probability class.  The teacher gave &quot;how many terms are there in the
+expansion of (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>+<EM>d</EM>)<SUP><SMALL>7</SMALL></SUP>&quot; as a quiz problem, and nobody answered it.
+In the ensuing class discussion, it turned out that she meant the students
+to answer the much easier question of how many products of seven variables
+there are.  As I noted earlier, the answer to <EM>that</EM> question is just
+4<SUP><SMALL>7</SMALL></SUP>.  But all the students interpreted the question as meaning the harder
+one we've been exploring here.  I took the problem home that evening and
+reached the point we've reached in this chapter.  I didn't think I could get
+a better answer than that until my housemate taught me about
+generating functions.  It turns out that there <EM>is</EM> a
+closed form definition for
+this function:
+<P><CENTER><IMG SRC="math43.gif" ALT="math display"></CENTER><P>
+This definition is faster to compute as well as more beautiful.
+
+<P>Once armed with the formula, it wasn't hard to invent a way to demonstrate
+that it must be correct without going through the inductive definition and
+the use of calculus.  The trick is that we must be choosing <EM>n</EM>&minus;1 somethings
+out of a possible <EM>k</EM>+<EM>n</EM>&minus;1 for each term.  What does a term look like?
+Ignoring the constant coefficient, it is the product of <EM>k</EM> (seven, in the
+specific problem given) variables, some of which may be equal.  Furthermore,
+when the terms are written in the usual way, the variables come in
+alphabetical order.  A term like <EM>a</EM><SUP><SMALL>2</SMALL></SUP><EM>b</EM><SUP><SMALL>4</SMALL></SUP><EM>d</EM> represents <EM>aabbbbd</EM>; there won't
+be a different term with the same letters in another order.  In general, the
+<EM>k</EM> variables will be some number (zero or more) of <EM>a</EM><SUB><SMALL>1</SMALL></SUB>s, then some number
+of <EM>a</EM><SUB><SMALL>2</SMALL></SUB>s, and so on.
+
+<P>Now comes the trick.  Suppose we write the string of variables with a
+&quot;wall&quot; for each change to the next letter.  So instead of <EM>aabbbbd</EM> I want
+to write <EM>aa</EM>|<EM>bbbb</EM>||<EM>d</EM>.  (There are two walls before the
+final <EM>d</EM> to reflect the fact that we skipped over <EM>c</EM>.)  In this notation
+there are always exactly <EM>n</EM>&minus;1 walls.  (That's why I chose to put the walls
+in; remember, we're looking for <EM>n</EM>&minus;1 of something.)  The term includes <EM>k</EM>
+variables and <EM>n</EM>&minus;1 walls, for a total of <EM>k</EM>+<EM>n</EM>&minus;1 symbols.
+
+<P>Once the walls are there, it really is no longer necessary to preserve the
+individual variable letters.  The sample term we've been using could just as
+well be written <EM>xx</EM>|<EM>xxxx</EM>||<EM>x</EM>.  What comes before the first
+wall is the first variable letter, and so on.  So ||<EM>xxx</EM>|<EM>xxxx</EM> represents <EM>c</EM><SUP><SMALL>3</SMALL></SUP><EM>d</EM><SUP><SMALL>4</SMALL></SUP>.  But now we're finished.  We have found a way to
+represent each possible term as a string of <EM>k</EM> copies of the letter <EM>x</EM>
+interspersed with <EM>n</EM>&minus;1 walls.  How many such arrangements are there?  How
+many ways are there to choose <EM>n</EM>&minus;1 positions for walls in a string of
+<EM>k</EM>+<EM>n</EM>&minus;1 symbols?
+
+<P>Earlier, in talking about the difference between closed form and inductive
+definitions, I suggested that the an inductive definition might be much
+easier to discover even if a closed form definition also exists.  This is a
+clear example.  If I'd given the demonstration just above, with <EM>x</EM>s and
+walls, without first showing you the more roundabout way I really discovered
+the definition, you'd rightly complain about rabbits out of hats.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch1/v3ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch3/v3ch3.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+;;; Logic problem inference system
+
+;; Establish categories
+
+to category :category.name :members
+print (list "category :category.name :members)
+if not namep "categories [make "categories []]
+make "categories lput :category.name :categories
+make :category.name :members
+foreach :members [pprop ? "category :category.name]
+end
+
+;; Verify and falsify matches
+
+to verify :a :b
+settruth :a :b "true
+end
+
+to falsify :a :b
+settruth :a :b "false
+end
+
+to settruth :a :b :truth.value
+if equalp (gprop :a "category) (gprop :b "category) [stop]
+localmake "oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw "error (sentence [inconsistency in settruth]
+                            :a :b :truth.value))]
+print (list :a :b "-> :truth.value)
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply "settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word "find not :truth.value) (list :a :b)
+foreach (gprop :a "true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a "false) [falsify ? :b]
+                 pprop :a (gprop :b "category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+
+to findfalse :a :b
+foreach (filter [not equalp get ? :b "true] peers :a) ~
+        [falsify ? :b]
+end
+
+to findtrue :a :b
+if equalp (count peers :a) (1+falses :a :b) ~
+   [verify (find [not equalp get ? :b "false] peers :a)
+           :b]
+end
+
+to falses :a :b
+output count filter [equalp "false get ? :b] peers :a
+end
+
+to peers :a
+output thing gprop :a "category
+end
+
+;; Common types of clues
+
+to differ :list
+print (list "differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+
+to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+;; Remember conditional linkages
+
+to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+
+to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake "old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "true
+implies :who2 :what2 "true :who1 :what1 "true
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "false
+implies :who1 :what1 "false :who2 :what2 "true
+end
+
+;; Interface to property list mechanism
+
+to get :a :b
+output gprop :a :b
+end
+
+to store :a :b :val
+pprop :a :b :val
+pprop :b :a :val
+end
+
+;; Print the solution
+
+to solution
+foreach thing first :categories [solve1 ? butfirst :categories]
+end
+
+to solve1 :who :order
+type :who
+foreach :order [type "| |   type gprop :who ?]
+print []
+end
+
+;; Get rid of old problem data
+
+to cleanup
+if not namep "categories [stop]
+ern :categories
+ern "categories
+erpls
+end
+
+;; Anita Harnadek's problem
+
+to cub.reporter
+cleanup
+category "first [Jane Larry Opal Perry]
+category "last [Irving King Mendle Nathan]
+category "age [32 38 45 55]
+category "job [drafter pilot sergeant driver]
+differ [Jane King Larry Nathan]
+says "Jane "Irving 45
+says "King "Perry "driver
+says "Larry "sergeant 45
+says "Nathan "drafter 38
+differ [Mendle Jane Opal Nathan]
+says "Mendle "pilot "Larry
+says "Jane "pilot 45
+says "Opal 55 "driver
+says "Nathan 38 "driver
+print []
+solution
+end
+
+to says :who :what1 :what2
+print (list "says :who :what1 :what2)
+xor :who :what1 :who :what2
+end
+
+;; Diane Baldwin's problem
+
+to foote.family
+cleanup
+category "when [1st 2nd 3rd 4th 5th]
+category "name [Felix Fred Frank Francine Flo]
+category "street [Field Flag Fig Fork Frond]
+category "item [food film flashlight fan fiddle]
+category "position [1 2 3 4 5]
+print [Clue 1]
+justbefore "Flag "2nd :position
+justbefore "2nd "Fred :position
+print [Clue 2]
+male [film Fig 5th]
+print [Clue 3]
+justbefore "flashlight "Fork :position
+justbefore "Fork "1st :position
+female [1st]
+print [Clue 4]
+falsify "5th "Frond
+falsify "5th "fan
+print [Clue 5]
+justbefore "Francine "Frank :position
+justbefore "Francine "Frank :when
+print [Clue 6]
+female [3rd Flag]
+print [Clue 7]
+justbefore "fiddle "Frond :when
+justbefore "Flo "fiddle :when
+print []
+solution
+end
+
+to male :stuff
+differ sentence :stuff [Francine Flo]
+end
+
+to female :stuff
+differ sentence :stuff [Felix Fred Frank]
+end
+
+;;; Combinatorics toolkit
+
+to combs :list :howmany
+if equalp :howmany 0 [output [[]]]
+if equalp :howmany count :list [output (list :list)]
+output sentence (map [fput first :list ?]
+                     combs (butfirst :list) (:howmany-1)) ~
+      (combs (butfirst :list) :howmany)
+end
+
+to fact :n
+output cascade :n [# * ?] 1
+end
+
+to perms :n :r
+if equalp :r 0 [output 1]
+output :n * perms :n-1 :r-1
+end
+
+to choose :n :r
+output (perms :n :r)/(fact :r)
+end
+
+;; The socks problem
+
+to socks :list
+localmake "total combs (expand :list) 2
+localmake "matching filter [equalp first ? last ?] :total
+print (sentence [there are] count :total [possible pairs of socks.])
+print (sentence [of these,] count :matching [are matching pairs.])
+print sentence [probability of match =] ~
+      word (100 * (count :matching)/(count :total)) "%
+end
+
+to expand :list
+if emptyp :list [output []]
+if numberp first :list ~
+   [output cascade (first :list)
+                   [fput first butfirst :list ?]
+                   (expand butfirst butfirst :list)]
+output fput first :list expand butfirst :list
+end
+
+to socktest
+localmake "first pick [brown brown brown brown brown brown 
+                       blue blue blue blue]
+localmake "second ~
+          pick (ifelse equalp :first "brown ~
+                       [[brown brown brown brown brown
+                         blue blue blue blue]] ~
+                       [[brown brown brown brown brown brown
+                         blue blue blue]])
+output equalp :first :second
+end
+
+;; The Simplex lock problem
+
+to lock :buttons
+output cascade :buttons [? + lock1 :buttons #] 1
+end
+
+to lock1 :total :buttons
+local "perms
+make "perms perms :total :buttons
+output cascade (twoto (:buttons-1)) [? + lock2 :perms #-1 1] 0
+end
+
+to lock2 :perms :links :factor
+if equalp :links 0 [output :perms/(fact :factor)]
+if equalp (remainder :links 2) 0 ~
+   [output lock2 :perms/(fact :factor) :links/2 1]
+output lock2 :perms (:links-1)/2 :factor+1
+end
+
+to twoto :power
+output cascade :power [2 * ?] 1
+end
+
+to simplex :buttons
+output 2 * f :buttons
+end
+
+to f :n
+if equalp :n 0 [output 1]
+output cascade :n [? + ((choose :n (#-1)) * f (#-1))] 0
+end
+
+to simp :n
+output round (fact :n)/(power (ln 2) (:n+1))
+end
+
+;; The multinomial expansion problem
+
+to t :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE><P>
+
+
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch1/v3ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch3/v3ch3.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch2/math.lg b/js/games/nluqo.github.io/~bh/v3ch2/math.lg
new file mode 100644
index 0000000..8893ef8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math.lg
@@ -0,0 +1,315 @@
+;;; Logic problem inference system
+
+;; Establish categories
+
+to category :category.name :members
+print (list "category :category.name :members)
+if not namep "categories [make "categories []]
+make "categories lput :category.name :categories
+make :category.name :members
+foreach :members [pprop ? "category :category.name]
+end
+
+;; Verify and falsify matches
+
+to verify :a :b
+settruth :a :b "true
+end
+
+to falsify :a :b
+settruth :a :b "false
+end
+
+to settruth :a :b :truth.value
+if equalp (gprop :a "category) (gprop :b "category) [stop]
+localmake "oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw "error (sentence [inconsistency in settruth]
+                            :a :b :truth.value))]
+print (list :a :b "-> :truth.value)
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply "settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word "find not :truth.value) (list :a :b)
+foreach (gprop :a "true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a "false) [falsify ? :b]
+                 pprop :a (gprop :b "category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+
+to findfalse :a :b
+foreach (filter [not equalp get ? :b "true] peers :a) ~
+        [falsify ? :b]
+end
+
+to findtrue :a :b
+if equalp (count peers :a) (1+falses :a :b) ~
+   [verify (find [not equalp get ? :b "false] peers :a)
+           :b]
+end
+
+to falses :a :b
+output count filter [equalp "false get ? :b] peers :a
+end
+
+to peers :a
+output thing gprop :a "category
+end
+
+;; Common types of clues
+
+to differ :list
+print (list "differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+
+to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+;; Remember conditional linkages
+
+to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+
+to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake "old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "true
+implies :who2 :what2 "true :who1 :what1 "true
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "false
+implies :who1 :what1 "false :who2 :what2 "true
+end
+
+;; Interface to property list mechanism
+
+to get :a :b
+output gprop :a :b
+end
+
+to store :a :b :val
+pprop :a :b :val
+pprop :b :a :val
+end
+
+;; Print the solution
+
+to solution
+foreach thing first :categories [solve1 ? butfirst :categories]
+end
+
+to solve1 :who :order
+type :who
+foreach :order [type "| |   type gprop :who ?]
+print []
+end
+
+;; Get rid of old problem data
+
+to cleanup
+if not namep "categories [stop]
+ern :categories
+ern "categories
+erpls
+end
+
+;; Anita Harnadek's problem
+
+to cub.reporter
+cleanup
+category "first [Jane Larry Opal Perry]
+category "last [Irving King Mendle Nathan]
+category "age [32 38 45 55]
+category "job [drafter pilot sergeant driver]
+differ [Jane King Larry Nathan]
+says "Jane "Irving 45
+says "King "Perry "driver
+says "Larry "sergeant 45
+says "Nathan "drafter 38
+differ [Mendle Jane Opal Nathan]
+says "Mendle "pilot "Larry
+says "Jane "pilot 45
+says "Opal 55 "driver
+says "Nathan 38 "driver
+print []
+solution
+end
+
+to says :who :what1 :what2
+print (list "says :who :what1 :what2)
+xor :who :what1 :who :what2
+end
+
+;; Diane Baldwin's problem
+
+to foote.family
+cleanup
+category "when [1st 2nd 3rd 4th 5th]
+category "name [Felix Fred Frank Francine Flo]
+category "street [Field Flag Fig Fork Frond]
+category "item [food film flashlight fan fiddle]
+category "position [1 2 3 4 5]
+print [Clue 1]
+justbefore "Flag "2nd :position
+justbefore "2nd "Fred :position
+print [Clue 2]
+male [film Fig 5th]
+print [Clue 3]
+justbefore "flashlight "Fork :position
+justbefore "Fork "1st :position
+female [1st]
+print [Clue 4]
+falsify "5th "Frond
+falsify "5th "fan
+print [Clue 5]
+justbefore "Francine "Frank :position
+justbefore "Francine "Frank :when
+print [Clue 6]
+female [3rd Flag]
+print [Clue 7]
+justbefore "fiddle "Frond :when
+justbefore "Flo "fiddle :when
+print []
+solution
+end
+
+to male :stuff
+differ sentence :stuff [Francine Flo]
+end
+
+to female :stuff
+differ sentence :stuff [Felix Fred Frank]
+end
+
+;;; Combinatorics toolkit
+
+to combs :list :howmany
+if equalp :howmany 0 [output [[]]]
+if equalp :howmany count :list [output (list :list)]
+output sentence (map [fput first :list ?]
+                     combs (butfirst :list) (:howmany-1)) ~
+      (combs (butfirst :list) :howmany)
+end
+
+to fact :n
+output cascade :n [# * ?] 1
+end
+
+to perms :n :r
+if equalp :r 0 [output 1]
+output :n * perms :n-1 :r-1
+end
+
+to choose :n :r
+output (perms :n :r)/(fact :r)
+end
+
+;; The socks problem
+
+to socks :list
+localmake "total combs (expand :list) 2
+localmake "matching filter [equalp first ? last ?] :total
+print (sentence [there are] count :total [possible pairs of socks.])
+print (sentence [of these,] count :matching [are matching pairs.])
+print sentence [probability of match =] ~
+      word (100 * (count :matching)/(count :total)) "%
+end
+
+to expand :list
+if emptyp :list [output []]
+if numberp first :list ~
+   [output cascade (first :list)
+                   [fput first butfirst :list ?]
+                   (expand butfirst butfirst :list)]
+output fput first :list expand butfirst :list
+end
+
+to socktest
+localmake "first pick [brown brown brown brown brown brown 
+                       blue blue blue blue]
+localmake "second ~
+          pick (ifelse equalp :first "brown ~
+                       [[brown brown brown brown brown
+                         blue blue blue blue]] ~
+                       [[brown brown brown brown brown brown
+                         blue blue blue]])
+output equalp :first :second
+end
+
+;; The Simplex lock problem
+
+to lock :buttons
+output cascade :buttons [? + lock1 :buttons #] 1
+end
+
+to lock1 :total :buttons
+localmake "perms perms :total :buttons
+output cascade (twoto (:buttons-1)) [? + lock2 :perms #-1 1] 0
+end
+
+to lock2 :perms :links :factor
+if equalp :links 0 [output :perms/(fact :factor)]
+if equalp (remainder :links 2) 0 ~
+   [output lock2 :perms/(fact :factor) :links/2 1]
+output lock2 :perms (:links-1)/2 :factor+1
+end
+
+to twoto :power
+output cascade :power [2 * ?] 1
+end
+
+to simplex :buttons
+output 2 * f :buttons
+end
+
+to f :n
+if equalp :n 0 [output 1]
+output cascade :n [? + ((choose :n (#-1)) * f (#-1))] 0
+end
+
+to simp :n
+output round (fact :n)/(power (ln 2) (:n+1))
+end
+
+;; The multinomial expansion problem
+
+to t :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
diff --git a/js/games/nluqo.github.io/~bh/v3ch2/math11.gif b/js/games/nluqo.github.io/~bh/v3ch2/math11.gif
new file mode 100644
index 0000000..a48e591
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math11.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math12.gif b/js/games/nluqo.github.io/~bh/v3ch2/math12.gif
new file mode 100644
index 0000000..4d09015
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math12.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math13.gif b/js/games/nluqo.github.io/~bh/v3ch2/math13.gif
new file mode 100644
index 0000000..ce98ed2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math13.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math14.gif b/js/games/nluqo.github.io/~bh/v3ch2/math14.gif
new file mode 100644
index 0000000..a87f171
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math14.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math15.gif b/js/games/nluqo.github.io/~bh/v3ch2/math15.gif
new file mode 100644
index 0000000..8e10a47
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math15.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math16.gif b/js/games/nluqo.github.io/~bh/v3ch2/math16.gif
new file mode 100644
index 0000000..7d5b77f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math16.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math18.gif b/js/games/nluqo.github.io/~bh/v3ch2/math18.gif
new file mode 100644
index 0000000..94eae76
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math18.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math21.gif b/js/games/nluqo.github.io/~bh/v3ch2/math21.gif
new file mode 100644
index 0000000..111035d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math21.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math26.gif b/js/games/nluqo.github.io/~bh/v3ch2/math26.gif
new file mode 100644
index 0000000..e0d972f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math26.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math28.gif b/js/games/nluqo.github.io/~bh/v3ch2/math28.gif
new file mode 100644
index 0000000..82006e8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math28.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math29.gif b/js/games/nluqo.github.io/~bh/v3ch2/math29.gif
new file mode 100644
index 0000000..45b388c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math29.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math30.gif b/js/games/nluqo.github.io/~bh/v3ch2/math30.gif
new file mode 100644
index 0000000..96dbf35
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math30.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math31.gif b/js/games/nluqo.github.io/~bh/v3ch2/math31.gif
new file mode 100644
index 0000000..56b3e4d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math31.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math33.gif b/js/games/nluqo.github.io/~bh/v3ch2/math33.gif
new file mode 100644
index 0000000..18a6698
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math33.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math36.gif b/js/games/nluqo.github.io/~bh/v3ch2/math36.gif
new file mode 100644
index 0000000..b479c15
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math36.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math37.gif b/js/games/nluqo.github.io/~bh/v3ch2/math37.gif
new file mode 100644
index 0000000..6a4c936
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math37.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math38.gif b/js/games/nluqo.github.io/~bh/v3ch2/math38.gif
new file mode 100644
index 0000000..ade26e8
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math38.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math41.gif b/js/games/nluqo.github.io/~bh/v3ch2/math41.gif
new file mode 100644
index 0000000..4176335
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math41.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math42.gif b/js/games/nluqo.github.io/~bh/v3ch2/math42.gif
new file mode 100644
index 0000000..3a149b1
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math42.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/math43.gif b/js/games/nluqo.github.io/~bh/v3ch2/math43.gif
new file mode 100644
index 0000000..5885f75
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/math43.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/n-1chooser-1.gif b/js/games/nluqo.github.io/~bh/v3ch2/n-1chooser-1.gif
new file mode 100644
index 0000000..8ea2420
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/n-1chooser-1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/n-1chooser.gif b/js/games/nluqo.github.io/~bh/v3ch2/n-1chooser.gif
new file mode 100644
index 0000000..89868fa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/n-1chooser.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/nchooser.gif b/js/games/nluqo.github.io/~bh/v3ch2/nchooser.gif
new file mode 100644
index 0000000..4f98f3d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/nchooser.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/probability.gif b/js/games/nluqo.github.io/~bh/v3ch2/probability.gif
new file mode 100644
index 0000000..4d4452f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/probability.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch2/v3ch2.html b/js/games/nluqo.github.io/~bh/v3ch2/v3ch2.html
new file mode 100644
index 0000000..194753f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch2/v3ch2.html
@@ -0,0 +1,2870 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 2: Discrete Mathematics</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Discrete Mathematics</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch02.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch1/v3ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch3/v3ch3.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="math.lg"><CODE>math</CODE></A>
+
+
+
+<P>Computer scientists often use mathematics as a tool in their work, but the
+mathematical problems that arise in computer science are of a special kind.
+Consider these examples:
+
+<P>Suppose you have a nondeterministic FSM with five states and you want to
+convert it to a deterministic one.  What is the largest number of states
+that might be required for the new machine?  Well, each state of the new
+machine corresponds to some <EM>combination</EM> of states of the old one,
+because the conversion works by finding multiple transitions (from some state
+via the same input character to multiple states) and creating a new state
+that combines all those resulting states.  How many such combinations are
+possible?  In other words, how many <EM>subsets</EM> does a five-element set
+have?  The answer is 2<SUP><SMALL>5</SMALL></SUP> or 32 states.  (31, really, because one of those
+is the empty subset and that will never be used.)
+
+<P>Suppose you want to write a program to translate telephone numbers into
+letters.  A telephone number has seven digits, each of which corresponds to
+three letters.  How many different strings of letters are possible?  Well,
+there are three choices for the first digit, times three for the second, and
+so on...
+
+<P>These are typical of the kinds of mathematics problems that a computer
+
+scientist confronts in that they are <EM>counting</EM> problems--ones that
+involve integers.  Another relevant kind of problem is the <EM>logic</EM>
+problem, in which the values under consideration are just <CODE>true</CODE> and
+<CODE>false</CODE>.  These areas of mathematics are quite different from what is
+studied in the usual high school and college math courses: algebra,
+geometry, trig, calculus, differential equations.  Those courses deal with
+<EM>measurement</EM> problems, in which the answer can be any number,
+including a fraction or an irrational number.  This conventional mathematics
+
+curriculum, studying <EM>continuous</EM> functions, is dictated by the needs
+of physics and the physics-based engineering subjects.  Computer scientists
+need a different kind of math, called <EM>discrete</EM> mathematics.
+(&quot;Discrete&quot; is the opposite of &quot;continuous&quot; and is not the same word as
+its homonym &quot;discreet&quot; meaning tactful.)
+
+<P><H2>Propositional Logic</H2>
+
+<P>You already know that what in Logo is called an <EM>operation</EM> is the
+computer programming version of a mathematical <EM>function.</EM>  The inputs
+and outputs of Logo operations may be numbers, or they may be other kinds of
+words or lists.  In ordinary algebra the functions we use have numeric
+values.  Certain Logo operations are identical to the ones used in algebra:
+<CODE>sin :x</CODE> is sin(<EM>x</EM>) and <CODE>sqrt :x</CODE> is &radic;<EM>x</EM>.  On the other
+hand, there is nothing in ordinary school mathematics quite like <CODE>first</CODE>
+or <CODE>sentence</CODE>.  You may have been taught to use the word &quot;function&quot;
+only when you see a notation like <EM>f</EM>(<EM>x</EM>), but in fact the ordinary
+arithmetic operations are functions, too.  The addition in <EM>a</EM>+<EM>b</EM> is a
+function with two arguments, just like <CODE>sum :a :b</CODE> in Logo.
+
+<P>
+
+<P>In Logo there are also operations whose inputs and outputs are the words
+<CODE>true</CODE> and <CODE>false</CODE>.  The primitive operations in this category are
+<CODE>and</CODE>, <CODE>or</CODE>, and <CODE>not</CODE>.  Just as algebra deals with numeric
+functions, <EM>logic</EM> is the branch of mathematics that deals with these
+
+<EM>truth-valued</EM> functions.  Instead of numbers, these functions combine
+<EM>propositions</EM>: statements that may be true or false.  A Logo
+expression like <CODE>:x=0</CODE> represents a proposition.  &quot;Abraham Lincoln was
+the King of England&quot; is a proposition; it happens to be false, but it's a
+perfectly valid one because it asserts something that's either true or
+false.  &quot;It will rain in Boston tomorrow&quot; is a proposition whose truth
+value we don't know yet.  &quot;Chinese food is better than French food&quot; is an
+example of a sentence whose validity as a proposition is open to question.
+If I say that, I'm expressing my personal taste, not an objective statement
+that could be proven true or false.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>On the other hand, &quot;The
+Beatles are better than Led Zeppelin&quot; is a perfectly valid, obviously true
+proposition.</SMALL></BLOCKQUOTE></SMALL><P>Logical functions combine <EM>simple</EM> propositions into <EM>compound</EM>
+propositions.  For example, &quot;Either Abraham Lincoln was the King of England
+or he was the President of the United States&quot; is a
+compound proposition.
+It's true even though one of the simple propositions within it is false.
+Just as in algebra we use letters like <EM>x</EM> to represent numbers and
+expressions like <EM>x</EM>+<EM>y</EM> to indicate the use of functions to combine numbers,
+in logic we use letters to represent propositions and there are function
+symbols for the logical functions.  If <EM>p</EM> is the proposition &quot;Abraham
+Lincoln was the King of England,&quot; and <EM>q</EM> is the proposition &quot;Abraham
+Lincoln was the President of the United States,&quot; then the expression <EM>p</EM>&or;<EM>q</EM> represents the compound proposition above.  The symbol &or; represents
+the <EM>or</EM> function; &and;
+represents <EM>and</EM>; &not; and &sim;
+are alternative representations for <EM>not.</EM>  The symbol &rarr; represents
+&quot;implies&quot;; it turns out that <EM>p</EM>&rarr;<EM>q</EM> is equivalent to &not;<EM>p</EM>&or;<EM>q</EM>;
+in other words, the value of the function is true if either the &quot;if&quot; part
+is <EM>false</EM> or the &quot;then&quot; part is true.  An example of the former is
+the classic &quot;If wishes were horses then beggars would ride.&quot;
+
+<P>(Don't confuse the &rarr; function with the Logo <CODE>if</CODE> command.  The
+latter isn't a function (an operation), but a command.  It tells Logo to
+take some <EM>action</EM> if a given condition is met.  The operation
+
+<P><PRE>to implies :p :q
+output or (not :p) :q
+end
+</PRE>
+
+<P>is the Logo equivalent of the &rarr; function in logic.)
+
+<P>The most important use of logic in mathematics is in understanding the idea
+of <EM>proof.</EM>  What is a valid reason for claiming that some proposition
+has been proven true?  Many people come across the idea of proof for the
+first and last time in high school geometry.  We are asked to prove some
+proposition like &quot;the sum of the interior angles of a triangle is
+180&deg;.&quot; For each step in the proof we must give a <EM>reason</EM>
+such as &quot;things equal to the same thing are equal to each other.&quot;
+
+<P>In logic there are certain rules that allow us to infer one proposition from
+one or more previously known propositions.  These rules correspond
+roughly to the &quot;reasons&quot; in a geometry proof.  They are called
+<EM>rules of inference.</EM>  You use rules of
+inference informally all the time, whenever
+you try to convince someone of something by reasoning.  &quot;Is Jay here?&quot;
+&quot;Yes.&quot;  &quot;How do you know?&quot; &quot;I saw his car in the driveway, and if his car
+is here, he must be here too.&quot;
+
+<P>Suppose we use the letter <EM>p</EM> to represent the proposition &quot;Jay's car is
+here&quot; and the letter <EM>q</EM> to represent &quot;Jay is here.&quot; Then the reasoning
+quoted in the last paragraph says &quot;<EM>p</EM> is true and <EM>p</EM>&rarr;<EM>q</EM> is true, so
+<EM>q</EM> must be true.&quot;  (&quot;<EM>p</EM>&rarr;<EM>q</EM>&quot; is the proposition &quot;If Jay's car is
+here, he must be here too.&quot;)  The fact that <EM>p</EM> and <EM>p</EM>&rarr;<EM>q</EM> allow us to
+infer <EM>q</EM> is a rule of inference.  (Of course the rule doesn't
+tell us about the truth of its component propositions.  We have to determine
+that by some means outside of logic, such as observation of the world.
+I had to <EM>see</EM> Jay's car in the driveway to know that <EM>p</EM> is true.)
+
+<P><H2>An Inference System</H2>
+
+<P>What does all this have to do with computer science?  One application of
+logic is in <EM>inference systems</EM>: programs that deduce propositions
+from other ones.  Such systems are important both in business applications
+where large data bases are used and in artificial intelligence programs that
+try to answer questions based on information implied by some text but not
+explicit in the text.
+
+<P>In this section I'll show you a special-purpose inference system that solves
+logic problems.  Logic problems are the ones in which you're given
+certain propositions and asked to deduce others.  Mr. Smith lives next to
+the carpenter; John likes classical music; who lives in the yellow house?
+Here is a typical problem taken from <EM>Mind Benders,</EM> Book B-2,
+by Anita Harnadek.
+
+<P><BLOCKQUOTE>
+<P><A NAME="harnadek">A cub reporter
+interviewed four people.  He was very careless, however.
+Each statement he wrote was half right and half wrong.  He went back and
+interviewed the people again.  And again, each statement he wrote was half
+right and half wrong.  From the information below, can you straighten out
+the mess?
+
+<P>The first names were Jane, Larry, Opal, and Perry.  The last names were
+Irving, King, Mendle, and Nathan.  The ages were 32, 38, 45, and 55.  The
+occupations were drafter, pilot, police sergeant, and test car driver.
+
+<P>On the first interview, he wrote these statements, one from each person:
+
+<P><P>
+
+<P><TABLE><TR><TH align="right" valign="top">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Jane: &quot;My name is Irving, and I'm 45.&quot;
+<TR><TH align="right" valign="top">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> King: &quot;I'm Perry and I drive test cars.&quot;
+<TR><TH align="right" valign="top">3.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Larry: &quot;I'm a police sergeant and I'm 45.&quot;
+<TR><TH align="right" valign="top">4.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Nathan: &quot;I'm a drafter, and I'm 38.&quot;
+
+<P></TABLE>
+
+<P>On the second interview, he wrote these statements, one from each person:
+
+<P><P>
+
+<P><TABLE><TR><TH align="right" valign="top">5.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Mendle: &quot;I'm a pilot, and my name is Larry.&quot;
+<TR><TH align="right" valign="top">6.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Jane: &quot;I'm a pilot, and I'm 45.&quot;
+<TR><TH align="right" valign="top">7.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Opal: &quot;I'm 55 and I drive test cars.&quot;
+<TR><TH align="right" valign="top">8.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Nathan: &quot;I'm 38 and I drive test cars.&quot;
+
+<P></TABLE></BLOCKQUOTE>
+
+<P>
+<CENTER><IMG SRC="grid.gif" ALT="figure: grid"></CENTER>
+
+
+<P>The chart provided with the problem is a guide to its solution.  Each square
+in the chart represents a proposition.  For example, the box where the
+&quot;Larry&quot; row meets the &quot;pilot&quot; column represents the proposition &quot;Larry
+is the pilot.&quot; In solving the problem, you can put marks in the boxes to
+indicate what you know about the propositions.  The status of a proposition
+need not be only true or false.  Initially the status of each proposition is
+<EM>unknown</EM>; we have no idea whether it's true or false.  The structure
+of this particular problem also allows the status of a proposition to be that
+it is linked with another proposition in an <EM>exclusive-or</EM>
+relationship; that is, if one of the linked propositions turns out to be
+true, then the other must be false, and vice versa.  You can use whatever
+notation you find convenient to express these possibilities.  After
+experimenting with T and F and with check marks and crosses, I found that
+circles for true propositions and crosses for false ones made it easiest for
+me to see quickly the pattern of known truths.  For the linked propositions,
+I used the statement numbers (1 to 8) in the boxes; two boxes with the same
+number represent linked statements.
+
+<P>You should probably solve this problem by hand before we go on to discuss
+the computer solution.  Stop reading now and work on the problem if you want
+to do it without any hints from me.
+
+<P>Let me introduce a little new terminology to help in the following
+discussion.  I'll call something like &quot;last name&quot; or &quot;occupation&quot; a
+<EM>category</EM>; something like &quot;Mendle&quot; or &quot;pilot&quot; I'll call an
+<EM>individual.</EM>  As I'm using this terminology, &quot;Mendle&quot; and &quot;pilot&quot;
+are two different individuals even if they turn out, when we solve the
+problem, to be the same person.
+
+<P>It's important that each group of four statements contains one from each
+person, because the names of the speakers include first and last names.
+That is, from the first group of statements we know that Jane, King, Larry,
+and Nathan are four distinct people.  This falsifies such propositions as
+&quot;Jane is King.&quot; After noting the first group of statements my chart looks
+like this:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/grid2.gif" ALT="figure: grid2"></CENTER>
+
+<P>From the second group of statements we learn that Mendle, Jane, Opal, and
+Nathan are all distinct people.  When I marked an X in the &quot;Jane is
+Mendle&quot; box, I noticed that all but one last name for Jane had been
+eliminated.  I therefore put a circle in the &quot;Jane is Irving&quot; box.  This
+illustrates a special rule of inference for problems of this kind:  If, for
+a given individual <EM>x</EM>, all but one proposition &quot;<EM>x</EM> is <EM>y</EM>&quot; have been
+falsified for a certain <EM>category</EM> of <EM>y</EM> individuals, then the
+remaining proposition in that category must be true.  (The reason I'm going
+through this analysis is that the rules of inference I discover while
+working the problem by hand are going to end up in the design of the
+computer program.)  I'm going to call this the <EM>elimination</EM> rule.
+
+
+<P>Since Jane is Irving, nobody else can be Irving.  This falsifies three
+propositions whose status was formerly unknown: &quot;Larry is Irving,&quot;
+&quot;Opal is Irving,&quot; and &quot;Perry is Irving.&quot; (The truth of &quot;Jane is Irving&quot;
+would also falsify &quot;Jane is King&quot; and so on, but we already knew those to
+be false.)  The general rule is that if &quot;<EM>x</EM> is <EM>y</EM>&quot; is true then &quot;<EM>x</EM> is
+<EM>z</EM>&quot; must be false for all other <EM>z</EM> in the same category as <EM>y</EM>, and
+likewise &quot;<EM>w</EM> is <EM>y</EM>&quot; is false for all other <EM>w</EM> in the same category as
+<EM>x</EM>.  I'll call this the <EM>uniqueness</EM> rule.
+
+
+<P>The proposition &quot;Jane is Irving&quot; was linked with the proposition
+&quot;Jane is 45&quot; earlier.  That latter proposition must therefore be false.
+This is another rule of inference, the <EM>link falsification</EM> rule.
+There is also a <EM>link verification</EM> rule that comes into play when a
+linked proposition is found to be false; the other linked proposition must
+then be true.
+
+<P>Since we know that &quot;Jane is 45&quot; is false, and that &quot;Jane is Irving&quot; is
+true, it follows that &quot;Irving is 45&quot; must be false.  The general rule is
+that if &quot;<EM>x</EM> is <EM>y</EM>&quot; is true and &quot;<EM>x</EM> is <EM>z</EM>&quot; is false, then &quot;<EM>y</EM> is
+<EM>z</EM>&quot; must also be false.  Similarly, if &quot;<EM>x</EM> is <EM>y</EM>&quot; is true and &quot;<EM>x</EM> is
+<EM>z</EM>&quot; is true, then &quot;<EM>y</EM> is <EM>z</EM>&quot; must be true.  I'll call these the
+<EM>transitive</EM> rules.
+
+
+<P>You should be following along with your own copy of the chart.  By the
+elimination rule, &quot;Opal is King&quot; must be true.  Then, by the uniqueness
+rule, &quot;Perry is King&quot; is false.  Then, by the link verification rule,
+&quot;King is test driver&quot; must be true.  By the transitive rule, &quot;Opal is
+test driver&quot; is true also.  Here is my chart after making all possible
+deductions from the fact that Mendle, Jane, Opal, and Nathan are distinct
+people:
+
+<P><CENTER><IMG SRC="grid3.gif" ALT="figure: grid3"></CENTER>
+
+<P>Looking at statement number 5, we see that &quot;Mendle is pilot&quot; is linked to
+&quot;Mendle is Larry.&quot; But we already know that the latter is true, so the
+former must be false.  We can just put an X in that box and not bother
+marking the number 5 anywhere.  The same is true for statements 6 and 7;
+here's my chart after statement 7:
+
+<P>
+<CENTER><IMG SRC="grid4.gif" ALT="figure: grid4"></CENTER>
+
+<P>I haven't marked anything in the
+age vs. occupation section of the chart, even though I can deduce some
+propositions for that section.  For example, I know that &quot;Jane is pilot&quot;
+is true and that &quot;Jane is 45&quot; is false.  By the transitive rule, &quot;pilot
+is 45&quot; must be false.  I just haven't bothered making <EM>all</EM> possible
+deductions; I can always fill in that section of the chart if I get to the
+end of the problem and still don't know who's who.
+
+<P>Before dealing with the final statement we know all the pairings of first
+and last names, but we don't know any ages and we only know half the jobs.
+The last statement lets loose a flurry of deductions.  The critical one is
+that if Nathan is 38, he or she (Perry is an ambiguous first name) can't be
+the drafter because of the link from statement 4.  Here is my final chart:
+
+<P><CENTER><IMG SRC="grid5.gif" ALT="figure: grid5"></CENTER>
+
+<P>Once it was clear that I was in the final steps of the solution, I
+didn't bother maintaining the age vs. last name section.  The results can
+be found by reading just the three sections at the top; for example,
+Jane is Irving, the pilot, and 55.
+
+<P><H2>Problems with Ordering</H2>
+
+<P>The elimination, uniqueness, and transitive rules are useful in just about
+all logic problems, but the link falsification and link verification rules
+depend on this specific problem's gimmick that we are given pairs of
+propositions and told that exactly one of them is true.  To solve other
+problems, a more flexible kind of linkage is needed; we must be able to say
+&quot;if <EM>p</EM> is true, then <EM>q</EM> is true also&quot; or &quot;if <EM>p</EM> is false, then <EM>q</EM>
+must be true,&quot; and so on.
+
+<P>A very common kind of linkage is an <EM>ordering,</EM> in which we are
+told a sequence of events, or a row of houses on a street, for example.
+In the cub reporter problem, the ages form an ordering, but aren't used
+as such--that is, the problem doesn't include clues such as &quot;the test
+driver is younger than Jane.&quot;  Suppose we did see that clue; what could
+we conclude from it?  Certain propositions would be settled for sure:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The test driver must not be Jane.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">The test driver isn't the oldest age (55).
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Jane isn't the youngest age (32).
+</TABLE><P>
+
+<P>Other propositions would be linked by <EM>implications:</EM>
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Jane is 38, <STRONG>then</STRONG> the driver is 32.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Jane is 45, <STRONG>then</STRONG> the driver is 32 or 38.
+</TABLE><P>
+
+<P>and so on.  (Actually, the second of these isn't directly
+representable on the chart, because there's no notation for a single
+proposition with two alternatives, like &quot;32 or 38.&quot;  So instead
+we'd represent this using propositions about what <EM>can't</EM> be
+true:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Jane is 45, <STRONG>then</STRONG> the driver is not 55.
+</TABLE><P>
+
+<P>We already know that the driver isn't Jane, so there's no need
+to record the implication that if Jane is 45 the driver isn't 45.)
+
+<P>Here is another problem, called &quot;Forgetful Footes,&quot;
+by Diane C. Baldwin.
+It is taken from <EM>The Dell Book of Logic Problems #4.</EM>
+
+<P><BLOCKQUOTE>
+
+<P><A NAME="baldwin">The forgetful Foote</A> family
+fairly flew from their flat up Fleet Street
+to the freeway for a fling in Florida.  Before they passed five
+intersections, Felix and the other four Footes found they each had forgotten
+something (including the food) and were forced back to their flat to fetch
+it.  Each turnaround was made at a different street intersection, one of
+them at Field Street.  From the following clues, can you figure out who
+forgot what and in what order, and find the order of the intersections on
+Fleet Street from the Foote's flat to the freeway?
+
+<P><P>
+
+<P><TABLE><TR><TH align="right" valign="top">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> The second turnaround began at the street following Flag Street and
+the street before Fred had to return to the flat.
+<TR><TH align="right" valign="top">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> The men were responsible for the return for the film, the
+turnaround at Fig Street, and the fifth trip back.
+<TR><TH align="right" valign="top">3.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Fork Street followed the one where they returned to fetch the
+flashlight and preceded the one where a woman had them make their first
+turnaround.
+<TR><TH align="right" valign="top">4.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> The final trip back didn't begin at Frond Street, nor was it the
+one to fetch the fan.
+<TR><TH align="right" valign="top">5.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Frank's forgetfulness turned them back one block and one return
+trip following Francine's.
+<TR><TH align="right" valign="top">6.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> One woman was the third to forget, while the other woman turned
+them back at Flag Street.
+<TR><TH align="right" valign="top">7.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> They returned for the fiddle just before the trip back that began
+at Frond Street and just following the one requested by Flo.
+
+<P></TABLE></BLOCKQUOTE><P>
+
+<P>This problem includes <EM>two</EM> orderings.  The order of the intersections
+with cross streets is not necessarily the same as the time order of the
+return trips.  That is, the Footes might have gone four blocks before making
+their first turnaround, then gone only one block before the second return,
+and so on.  In making a chart for this problem, I used the numbers 1-5 to
+represent the order of streets, and the ordinals 1st-5th to represent the
+time order of return trips.  Clue 1, then, gives us this series of
+implications:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Flag Street is 1, <STRONG>then</STRONG> 2nd is 2.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Flag Street is 2, <STRONG>then</STRONG> 2nd is 3.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Flag Street is 3, <STRONG>then</STRONG> 2nd is 4.
+<P>
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 2, <STRONG>then</STRONG> Flag Street is 1.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 3, <STRONG>then</STRONG> Flag Street is 2.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 4, <STRONG>then</STRONG> Flag Street is 3.
+<P>
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 2, <STRONG>then</STRONG> Fred is 3.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 3, <STRONG>then</STRONG> Fred is 4.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> 2nd is 4, <STRONG>then</STRONG> Fred is 5.
+<P>
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Fred is 3, <STRONG>then</STRONG> 2nd is 2.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Fred is 3, <STRONG>then</STRONG> 2nd is 3.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><STRONG>If</STRONG> Fred is 5, <STRONG>then</STRONG> 2nd is 4.
+
+<P></TABLE><P>
+
+<P>It may seem that there are some missing from this list.  What if
+Flag Street is 4?  But that can't happen (and I so marked the chart) because
+then 2nd would have to be 5, and that would make Fred 6, which is too far.
+But notice that we do have to include both directions of implication between
+any two propositions.  The clue tells us that if Flag Street is 1, then 2nd
+is 2, and also that if 2nd is 2, then Flag Street is 1.
+
+<P>See if you can solve this problem, and then we'll talk about the
+Logo-based inference system.
+
+<P><H2>Data Structure</H2>
+
+<P>In addition to the status of the &quot;<EM>x</EM> is <EM>y</EM>&quot; propositions, the program
+needs to keep track of the categories, like &quot;first name,&quot; and the
+individuals within each category.  This information is needed for the sake
+of the elimination and uniqueness rules.  I chose to have a global variable
+named <CODE>categories</CODE> containing (for the cub reporter problem) the list
+
+<P><PRE>[first last age job]
+</PRE>
+
+<P>Each of the elements of that list is the name of a variable
+containing the individuals in that category; for example, <CODE>:age</CODE> is
+the list
+
+<P><PRE>[32 38 45 55]
+</PRE>
+
+<P>The status of the &quot;is&quot; propositions is kept in property lists associated
+with the names of individuals.  For example, to indicate that the proposition
+&quot;Jane is King&quot; is false, the program carries out these two instructions:
+
+<P><PRE>pprop &quot;Jane &quot;King &quot;false
+pprop &quot;King &quot;Jane &quot;false
+</PRE>
+
+<P>Both are necessary because we can't predict whether we're going
+to be figuring out something about Jane or something about King when we
+next need this information.  Actually, the fact that the proposition is
+stored twice reflects another inference rule, one that's so obvious we
+don't think about it at all when solving these problems without using a
+computer: the <EM>symmetric</EM> rule says that if <EM>x</EM> is <EM>y</EM>, then
+<EM>y</EM> is <EM>x</EM>.
+
+<P>If a given property's value is the empty list, that means that the truth of
+the proposition is unknown.  (Remember that Logo property lists give the
+empty list as the value of a property that you haven't defined explicitly,
+so I don't have to predefine all possible properties.)  The word <CODE>true</CODE>
+means that the proposition is known to be true; the word <CODE>false</CODE> means
+that it's known to be false.  If the proposition is linked to other
+propositions by implication, then the value of the property is a list
+containing four-element implication lists.  The first member of each
+implication is <CODE>true</CODE> or <CODE>false</CODE> to indicate which value of this
+proposition implies something about the other proposition.  The next two
+members are names of individuals, indicating which other proposition is
+determined by this one.  The fourth member is again <CODE>true</CODE> or <CODE>
+false</CODE>, indicating whether that other proposition is implied to be true
+or implied to be false.
+
+<P>For example, the
+statement &quot;My name is Irving, and I'm 45&quot; attributed to Jane is stored as
+the following two implications:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Under <CODE>Jane</CODE> and <CODE>Irving</CODE>, the list <CODE>[true Jane 45 false]</CODE>.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Under <CODE>Jane</CODE> and <CODE>45</CODE>, the list <CODE>[true Jane Irving false]</CODE>.
+</TABLE><P>
+
+<P>Although the data structure as described so far
+contains all the necessary information, it
+turned out to be convenient to include some redundant forms of the same
+information.  For example, the elimination rule and the uniqueness rule
+require the program to find all the <EM>peers</EM> of an individual--the
+other individuals in the same category.  It would be possible to start with
+<CODE>:categories</CODE> and search for the known individual in a category list,
+but it was easier to give each individual a <CODE>category</CODE> property whose
+value is the name of the category to which it belongs.
+
+<P>Similarly, the transitive rule needs to know all of the propositions
+involving a particular individual that are known to be true, and all
+those that are known to be false.  This
+information is implicit in the properties already described, but to simplify
+the program each individual has a <CODE>true</CODE> property whose value is a list
+of the other individuals known to be equal to this one, and a <CODE>false</CODE>
+property whose value is a list of the others known to be different from
+this one.  For example, after
+processing statement 7 we know that Jane is Irving and that Jane is the
+pilot, but we don't know Jane's age.  Therefore the property list for <CODE>
+Jane</CODE> has a property whose name is <CODE>true</CODE> and whose value is the list
+
+<P><PRE>[Irving pilot]
+</PRE>
+
+<P>and one whose name is <CODE>false</CODE> and whose value is
+
+<P><PRE>[King Mendle Nathan drafter sergeant driver]
+
+</PRE>
+
+<P>Finally, it turned out that at the end of the program, in order to print out
+the solutions, it was convenient to have, for each individual, properties
+with a category as the name and an individual in that category as the value.
+For example, since Jane's last name is Irving, <CODE>Jane</CODE> has a property
+whose name is <CODE>last</CODE> and whose value is <CODE>Irving</CODE>.
+
+<P><H2>Program Structure: Recording Simple Propositions</H2>
+
+<P>I wanted to enter the problem as a series of assertions, each represented by
+a Logo instruction.  That is, I wrote this procedure:
+
+<P><PRE>to cub.reporter
+cleanup
+category &quot;first [Jane Larry Opal Perry]
+category &quot;last [Irving King Mendle Nathan]
+category &quot;age [32 38 45 55]
+category &quot;job [drafter pilot sergeant driver]
+differ [Jane King Larry Nathan]
+says &quot;Jane &quot;Irving 45
+says &quot;King &quot;Perry &quot;driver
+says &quot;Larry &quot;sergeant 45
+says &quot;Nathan &quot;drafter 38
+differ [Mendle Jane Opal Nathan]
+says &quot;Mendle &quot;pilot &quot;Larry
+says &quot;Jane &quot;pilot 45
+says &quot;Opal 55 &quot;driver
+says &quot;Nathan 38 &quot;driver
+print []
+solution
+end
+</PRE>
+
+<P>(The first instruction erases any old property lists left over
+from a previous logic problem; the last prints out the results.)  I made <CODE>
+category</CODE>, <CODE>differ</CODE>, and <CODE>says</CODE> print out their inputs when invoked,
+so that you can watch the progress of the solution while it's being computed.
+
+<P>The procedures <CODE>differ</CODE> and <CODE>says</CODE> were designed to reflect the
+terms in which this problem is presented, rather than the internal workings
+of the inference system.  That is, if you compare the problem statement with
+this procedure, it's easy to see which instructions represent which clues,
+even if you have no idea how the program will actually solve the problem!
+Our task is to implement <CODE>differ</CODE> and <CODE>says</CODE> using propositional
+logic.
+
+<P>There's an important difference between <CODE>differ</CODE> and <CODE>says</CODE>.  <CODE>
+Differ</CODE> gives us direct information about the truth or falsehood of some
+simple propositions; specifically, we learn that several &quot;<EM>x</EM> is <EM>y</EM>&quot;
+propositions are false.  <CODE>Says</CODE>, on the other hand, gives us no
+direct information about simple propositions; it tells us about
+implications linking two such propositions.
+
+<P>First let's consider how <CODE>differ</CODE> works.  The instruction
+
+<P>
+
+<P><PRE>differ [Jane King Larry Nathan]
+</PRE>
+
+<P>tells us that Jane is not King, Jane is not Larry, Jane is
+not Nathan, King is not Larry, King is not Nathan, and Larry is not Nathan.
+In effect, <CODE>differ</CODE> will carry out the instructions
+
+<P><PRE>falsify &quot;Jane &quot;King
+falsify &quot;Jane &quot;Larry
+falsify &quot;Jane &quot;Nathan
+falsify &quot;King &quot;Larry
+falsify &quot;King &quot;Nathan
+falsify &quot;Larry &quot;Nathan
+</PRE>
+
+<P>There's no need to invoke <CODE>falsify</CODE> for the six cases with
+inputs in the opposite order (such as the proposition that King is not Jane)
+because, as we'll see, <CODE>falsify</CODE> knows about the symmetric rule and
+will record those automatically.  By the way, some of these six are
+unnecessary because the two individuals have the same category and therefore
+couldn't possibly be the same, such as Jane and Larry, both first names.
+But <CODE>falsify</CODE> will catch these cases and return without doing anything.
+
+<P>Here's how <CODE>differ</CODE> actually carries out all those <CODE>falsify</CODE>
+instructions:
+
+<P><PRE>to differ :list
+print (list &quot;differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+</PRE>
+
+<P><CODE>Falsify</CODE>, and a similar procedure <CODE>verify</CODE> to assert the truth
+of a proposition, are implemented in terms of the central procedure
+about propositions, <CODE>settruth</CODE>:
+
+<P><PRE>to verify :a :b
+settruth :a :b &quot;true
+end
+
+to falsify :a :b
+settruth :a :b &quot;false
+end
+</PRE>
+
+<P><CODE>Settruth</CODE> takes three inputs, two individuals and a truth
+value.  It records the truth or falsehood of the proposition that <CODE>:a</CODE>
+is <CODE>:b</CODE>, and uses the rules of inference I've described to derive
+other propositions when possible.
+
+<P><PRE>to settruth :a :b :truth.value
+if equalp (gprop :a &quot;category) (gprop :b &quot;category) [stop]
+localmake &quot;oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw &quot;error (sentence [inconsistency in settruth]
+                            :a :b :truth.value))]
+print (list :a :b &quot;-&gt; :truth.value)
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply &quot;settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word &quot;find not :truth.value) (list :a :b)
+foreach (gprop :a &quot;true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a &quot;false) [falsify ? :b]
+                 pprop :a (gprop :b &quot;category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+</PRE>
+
+<P>If the two individuals are in the same category, <CODE>settruth</CODE>
+does nothing.  This is to allow for cases such as the example
+
+<P><PRE>falsify &quot;Jane &quot;Larry
+</PRE>
+
+<P>as explained earlier.  If the individuals are in different
+categories, the next step is to find what information was previously
+available about this proposition.  If it was already known to be true
+or false, and the truth value input in this call agrees with what was
+known, then the program has merely generated some redundant information
+and <CODE>settruth</CODE> stops.  If the known value disagrees with the input
+value, then something is wrong; the program has proven two contradictory
+propositions.  Generally this means that some clue has been represented
+incorrectly in the program.
+
+<P>If the proposition was not already known to be true or false, then we
+have some new information.  After notifying the user by printing a
+message, <CODE>settruth</CODE>
+must store that fact.  (Procedures <CODE>get</CODE> and <CODE>store</CODE> are an
+interface to the property list primitives that implement the symmetric
+rule.)  The next step is to make any possible inferences using the
+elimination, uniqueness, and transitive rules; this is done separately
+for &quot;<CODE>:a</CODE> is <CODE>:b</CODE>&quot; and for &quot;<CODE>:b</CODE> is <CODE>:a</CODE>&quot; by two
+calls to the subprocedure <CODE>settruth1</CODE>.
+
+<P><CODE>Settruth1</CODE> invokes either <CODE>findtrue</CODE> or <CODE>findfalse</CODE>
+depending on the truth value.  Because of the <CODE>not</CODE> in the
+first instruction of <CODE>settruth1</CODE>, <CODE>findtrue</CODE> is called when we are
+falsifying a proposition, and vice versa.  This makes sense because of
+the tasks of these procedures.  If we are falsifying a proposition,
+then the elimination rule comes into play, and we try to find a true
+proposition.  If we are verifying a proposition, then the uniqueness
+rule lets us find several false propositions on the same row or
+column of the chart.  The next instructions in <CODE>settruth1</CODE> implement
+the transitive rule, looking at other individuals known to be the same
+as, or different from, <CODE>:a</CODE>.  The last two instructions maintain
+the redundant information used for printing the results and for carrying
+out the transitive rule.
+
+<P>The final instruction in <CODE>settruth</CODE> deals with implications.  If we
+already knew that <EM>p</EM>&rarr;<EM>q</EM> and now we're learning that <EM>p</EM> is true,
+we can infer that <EM>q</EM> is true.  (This is another rule of inference,
+which I'll call the <EM>implication</EM> rule.)
+
+<P><H2>Program Structure: Recording Implications</H2>
+
+<P>Speaking of implications, we can now explore how the <CODE>says</CODE> procedure
+produces and records implications.  The instruction
+
+<P><PRE>says &quot;Jane &quot;Irving 45
+</PRE>
+
+<P>establishes a relationship between the two propositions
+&quot;Jane is Irving&quot; and &quot;Jane is 45.&quot;  The relationship is that
+exactly one of them must be true; the name for this is <EM>exclusive or.</EM>
+
+<P><PRE>to says :who :what1 :what2
+print (list &quot;says :who :what1 :what2)
+xor :who :what1 :who :what2
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 &quot;true :who2 :what2 &quot;false
+implies :who1 :what1 &quot;false :who2 :what2 &quot;true
+end
+</PRE>
+
+<P><CODE>Says</CODE> is a special case of <CODE>xor</CODE> (a common abbreviation
+for exclusive or) in which the two propositions are about a common
+individual, Jane in the example.  The <CODE>xor</CODE> procedure establishes
+two implications, <EM>p</EM>&nbsp;&rarr;&nbsp;&not;&thinsp;&thinsp;<EM>q</EM> and
+&not;&thinsp;&thinsp;<EM>p</EM>&nbsp;&rarr;&nbsp;<EM>q</EM>.  In other words,
+if we learn that Jane is Irving, then we can infer that Jane is not 45;
+if we learn that Jane is not Irving, we can infer that Jane is 45.
+(These two implications are <EM>not</EM> equivalent to each other; in
+general, one
+might be true and the other false.  But the exclusive or relationship
+means that both are true.)
+
+<P>The <CODE>implies</CODE> procedure takes six inputs.  The first three are for
+one proposition and the others for the second proposition.  For each
+proposition, two inputs are individuals (call them <EM>x</EM> and <EM>y</EM>) and
+the third is <CODE>true</CODE> or <CODE>false</CODE>.  If <CODE>true</CODE>, then the 
+proposition is &quot;<EM>x</EM> is <EM>y</EM>&quot;; if <CODE>false</CODE>, the proposition is
+&quot;<EM>x</EM> is not <EM>y</EM>.&quot;
+
+<P>Yet another rule of inference comes into play here, the <EM>
+contrapositive</EM> rule.  It says
+that if <EM>p</EM>&rarr;<EM>q</EM> is true, then so is &not;<EM>q</EM> &rarr; &not;<EM>p</EM>.
+Although these two implications are mathematically equivalent,
+we must enter both of them into our data structure because we might
+happen to discover that &not;<EM>q</EM> is true, and we'll look for relevant
+implications filed under <EM>q</EM> rather than under <EM>p</EM>.
+
+<P><PRE>to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+</PRE>
+
+<P>The first call to <CODE>implies1</CODE> stores the implication
+in the form given to us; the second call stores its contrapositive.
+
+<P><PRE>to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake &quot;old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+end
+</PRE>
+
+<P>The first three instructions in <CODE>implies1</CODE> check for the
+case in which we are told that <EM>p</EM>&rarr;<EM>q</EM> but we already know
+either <EM>p</EM> or &not;<EM>p</EM>.  If we already know <EM>p</EM>, then we can
+derive that <EM>q</EM> is true.  There's no need to store the implication,
+because it is already serving its purpose, which is to allow us to
+infer <EM>q</EM>.  If we already know &not;<EM>p</EM>, then we can forget about
+this implication, because it isn't going to do us any good.  We can't
+infer anything about <EM>q</EM> from this situation.
+
+<P>The next two instructions check for the situation in which we
+are told <EM>p</EM>&rarr;<EM>q</EM> but we already know that <EM>p</EM>&rarr;&not;<EM>q</EM>.
+In that case, <EM>p</EM> must not be true, because if it were, we could
+infer two contradictory conclusions.  Therefore, we can falsify
+the proposition <EM>p</EM>.
+
+<P>Finally, if none of these conditions is met, we add this implication
+to the (possibly empty) list of already known implications about <EM>p</EM>.
+
+<P><H2>Using Implications to Represent Orderings</H2>
+
+<P>For another example of implications at work, here's the Logo program
+for the Foote problem:
+
+<P><PRE>to foote.family
+cleanup
+category &quot;when [1st 2nd 3rd 4th 5th]
+category &quot;name [Felix Fred Frank Francine Flo]
+category &quot;street [Field Flag Fig Fork Frond]
+category &quot;item [food film flashlight fan fiddle]
+category &quot;position [1 2 3 4 5]
+print [Clue 1]
+justbefore &quot;Flag &quot;2nd :position
+justbefore &quot;2nd &quot;Fred :position
+print [Clue 2]
+male [film Fig 5th]
+print [Clue 3]
+justbefore &quot;flashlight &quot;Fork :position
+justbefore &quot;Fork &quot;1st :position
+female [1st]
+print [Clue 4]
+falsify &quot;5th &quot;Frond
+falsify &quot;5th &quot;fan
+print [Clue 5]
+justbefore &quot;Francine &quot;Frank :position
+justbefore &quot;Francine &quot;Frank :when
+print [Clue 6]
+female [3rd Flag]
+print [Clue 7]
+justbefore &quot;fiddle &quot;Frond :when
+justbefore &quot;Flo &quot;fiddle :when
+print []
+solution
+end
+</PRE>
+
+<P>
+I've included <CODE>print</CODE> instructions to let the user know when the
+program reaches each of the seven numbered clues.  Clue 4 tells us
+directly that two possible pairings of individuals are false, and
+the program reflects this with two invocations of <CODE>falsify</CODE>.  But
+the other clues either tell us about the sex of the family members
+or tell us that certain individuals are next to each other in an
+ordering.  The procedures <CODE>male</CODE>, <CODE>female</CODE>, and <CODE>justbefore</CODE>
+reflect the language of the problem in the same way that <CODE>says</CODE>
+reflected the language of the other problem.
+
+<P><PRE>to male :stuff
+differ sentence :stuff [Francine Flo]
+end
+
+to female :stuff
+differ sentence :stuff [Felix Fred Frank]
+end
+</PRE>
+
+<P>Needless to say, this implementation of <CODE>male</CODE> and <CODE>female</CODE>
+works only for this specific logic problem!  It's tempting to try to
+use the more general category mechanism this way:
+
+<P><PRE>category &quot;sex [male female]
+verify &quot;Francine &quot;female
+verify &quot;Flo &quot;female
+verify &quot;Felix &quot;male
+verify &quot;Fred &quot;male
+verify &quot;Frank &quot;male
+</PRE>
+
+<P>but unfortunately the structure of this inference system
+requires that each individual can only match one individual in
+another category; once we've verified that Francine is female,
+the uniqueness rule will deduce that Flo isn't female!
+
+<P>On the other hand, I've tried to write <CODE>justbefore</CODE> in a way
+that will work for future problems.
+
+<P><PRE>to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 &quot;true :who2 :what2 &quot;true
+implies :who2 :what2 &quot;true :who1 :what1 &quot;true
+end
+</PRE>
+
+<P>The input named <CODE>lineup</CODE> is a list of individuals from
+an ordering, in the correct order.  In this problem, it will be the list
+
+<P><PRE>[1 2 3 4 5]
+</PRE>
+
+<P>if the clue is about street position, or
+
+<P><PRE>[1st 2nd 3rd 4th 5th]
+</PRE>
+
+<P>if the clue is about the order of events in time.  As I explained
+when talking about orderings earlier, the instruction
+
+<P><PRE>justbefore &quot;Flag &quot;2nd :position
+</PRE>
+
+<P>results in falsifying some propositions:
+
+<P><PRE>falsify &quot;Flag &quot;2nd
+falsify &quot;Flag 5
+falsify &quot;2nd 1
+</PRE>
+
+<P>and also asserts some implications:
+
+<P><PRE>implies &quot;Flag 1 &quot;true &quot;2nd 2 &quot;true
+implies &quot;2nd 2 &quot;true &quot;Flag 1 &quot;true
+implies &quot;Flag 2 &quot;true &quot;2nd 3 &quot;true
+implies &quot;2nd 3 &quot;true &quot;Flag 2 &quot;true
+implies &quot;Flag 3 &quot;true &quot;2nd 4 &quot;true
+implies &quot;2nd 4 &quot;true &quot;Flag 3 &quot;true
+implies &quot;Flag 4 &quot;true &quot;2nd 5 &quot;true
+implies &quot;2nd 5 &quot;true &quot;Flag 4 &quot;true
+</PRE>
+
+<P><H2>Backtracking</H2>
+
+<P>This inference system can solve many logic problems, but sometimes it
+runs into trouble.  I've already mentioned, while discussing the <CODE>male</CODE>
+and <CODE>female</CODE> procedures, that the program insists that each individual
+in a category must appear exactly once in the solution.  Suppose you have
+a problem about five people living in five houses; they have five distinct
+first names, five last names, five occupations--but two of the houses
+are yellow.  It's sometimes possible to get around this, but the technique
+is a little awkward.  You can set up a category like this:
+
+<P><PRE>category &quot;color [yellow1 yellow2 blue brown green]
+</PRE>
+
+<P>then you find <EM>one</EM> clue that mentions a yellow house
+and use <CODE>yellow1</CODE> for that one:
+
+<P><PRE>verify &quot;Fred &quot;yellow1
+</PRE>
+
+<P>but for any other mention of something being yellow in the
+problem, you represent that by saying that the individual is <EM>not</EM> one
+of the other colors:
+
+<P><PRE>differ &quot;architect [blue brown green]
+</PRE>
+
+<P>You never explicitly mention <CODE>yellow2</CODE> except in setting
+up the category.
+
+<P>That technique works if you know that yellow is the color that appears
+twice.  What if the problem tells you only that there are five houses
+and four colors?  Or what if some individuals are <EM>not</EM> in the
+solution?  For example, a problem might discuss the activities of five
+people, each doing something on a different day of the week, but you
+don't know until you solve the problem which of the seven weekdays
+are involved.
+
+<P>An entirely different approach to solving logic problems by computer
+is <EM>backtracking.</EM>  Instead of starting from the clues
+and making deductions, a program can start by making arbitrary guesses
+about who goes with what, and then use the clues to look for contradictions.
+If a contradiction is found, the program systematically makes a different
+guess until every possible arrangement has been tried.  (Presumably before
+every possibility has been tried, one of them will <EM>not</EM> lead to a
+contradiction, and that's the solution.)
+
+<P>In practice, backtracking is a more flexible technique than the inference
+system I wrote, because it's easy to let a backtracking program try
+multiple appearances of an individual if the problem allows that.  But I
+thought the inference system would be more interesting to study, for two
+reasons.  First, the inference system more closely models the way people
+solve logic problems.  In the cub reporter problem, with four people
+to keep straight, there are (4!)<SUP><SMALL>3</SMALL></SUP> or 13,824 possible solutions.  In
+the Foote problem, with five people, there are (5!)<SUP><SMALL>4</SMALL></SUP> or just over
+200 million possibilities.  A computer can try them all, but a person
+couldn't.<SUP>*</SUP>
+(If multiple appearances were allowed, the numbers would be
+even higher.)  Second, backtracking doesn't work at all unless the problem
+deals with a finite set of individuals, as in a logic problem.  Inference
+systems can be generalized to deal with potentially unbounded problems.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>People do sometimes use a combination of inference and
+backtracking.  If, by inference, you've established that Jane must be
+either the pilot or the drafter, but you can't settle which, you might
+decide to <EM>assume</EM> that Jane is the pilot and hope that you can then
+infer either a complete solution to the problem or a contradiction.  In the
+latter case, you'd know that Jane must be the drafter.</SMALL></BLOCKQUOTE></SMALL><P><H2>Generalized Inference Systems and Predicate Logic</H2>
+
+<P>The rules of inference in this program are specially designed for problems
+like the ones we've just solved.  The implication
+rule is applicable to any propositional logic situation, but the ones
+based on categories, such as the uniqueness and elimination rules, are not.
+The idea of a &quot;category&quot; as we've used it
+isn't a general principle of logic; instead, that idea should really be
+expressed as a series of propositions.  For example, to say &quot;there is a
+category called `last name' whose members are Irving, King, Mendle, and
+Nathan&quot; is really to make several statements of the form &quot;Jane has exactly
+one last name,&quot; or, in terms of the basic &quot;<EM>x</EM> is <EM>y</EM>&quot; propositions,
+<P><CENTER><TABLE><TR><TD>(Jane is Irving) &or; (Jane is King)
+<TR><TD>&nbsp;&nbsp;&nbsp;&nbsp;&or; (Jane is Mendle) &or; (Jane is Nathan)
+</TABLE></CENTER><P>
+and so on.  If we wanted to solve this problem in a general
+inference system we'd assert the truth of all those propositions at the
+beginning.  Then if the program discovers that Jane is Irving, it would
+have the two propositions
+<P><CENTER>&not;<STRONG>(</STRONG>(Jane is Irving)
+&and; (Jane is King)<STRONG>)</STRONG></CENTER><P>
+and
+<P><CENTER>(Jane is Irving)</CENTER><P>
+and from these it could infer
+<P><CENTER>&not;(Jane is King)</CENTER><P>
+using the standard inference rules of propositional logic.
+
+<P>The &quot;and so on&quot; just above includes quite a large number of propositions.
+And yet this small problem concerns a mere 16 individual names divided into
+four categories.  For a larger problem it would be nearly impossible to list
+all the relevant propositions, and for a problem involving an infinite set
+of individuals, such as the integers, it would be literally impossible.  What
+would make the representation of a problem easier is if we could use, in a
+formal system, the same kind of language I used in describing (in English)
+the inference rules earlier: &quot;for all other <EM>z</EM> in the same category as
+<EM>y</EM>...&quot; There are two parts to such a formal notation.  First, in addition
+to the <EM>propositional</EM> variables like <EM>p</EM> used in propositional logic,
+we need variables like <EM>x</EM> and <EM>y</EM> that can represent objects in the system
+we want to describe.  Second, we need a notation for &quot;for all.&quot; The formal
+system including these additions to propositional logic is called <EM>
+predicate</EM> logic.  The name is like that used in Logo to refer to
+operations with <CODE>true</CODE> or <CODE>false</CODE> outputs because
+the statements in predicate logic
+involve truth-valued functions of objects analogous to the
+Logo predicates.  For example, the formula we've been representing
+informally as &quot;<EM>x</EM> is <EM>y</EM>&quot; is represented formally using the
+predicate function is(<EM>x</EM>,<EM>y</EM>).  This
+is much like the Logo expression
+
+<P><PRE>equalp :x :y
+</PRE>
+
+<P>A predicate function of two arguments (&quot;inputs&quot; in Logo) is also
+called a <EM>relation</EM> in mathematics.  Algebraic relations include ones
+like = (equal) and &lt; (less than).
+
+<P>We are almost ready to show how the uniqueness rule can be expressed as a
+formula in predicate logic.  If you're not accustomed to mathematical
+formalism, this formula is a little scary--perhaps the
+scariest thing in this book.  But I want you to see it so that
+you'll appreciate the fact that just <EM>one</EM> formula of predicate logic
+can sum up a rule that would require <EM>many</EM> formulas in propositional
+logic.  I'm going to introduce a new relation called
+&quot;isa&quot; that's true if its first argument is a member of its second
+argument.  The first must be an individual and the second a category.  For
+example, isa(pilot,job) is true.  And the symbol
+&forall; means &quot;for all.&quot;  The uniqueness rule says that if <EM>x</EM> is <EM>y</EM>
+then <EM>x</EM> can't also be <EM>z</EM> for any <EM>z</EM> in the same category as <EM>y</EM>.  Here's
+how to say that formally:
+
+
+<P><CENTER>is(<EM>x</EM>,<EM>y</EM>) &rarr; &forall;<EM>z</EM>
+<STRONG>(</STRONG>(isa(<EM>y</EM>,<EM>a</EM>) &and; isa(<EM>z</EM>,<EM>a</EM>)
+&and; &not;(<EM>y</EM>=<EM>z</EM>)<STRONG>)</STRONG></CENTER><P>
+
+<P>To indicate the linking of two propositions in the general inference system,
+no special rules of inference are required.  To say &quot;the reporter wrote
+down these two statements; one is true and the other false&quot; is just to say
+<EM>p</EM>&otimes;<EM>q</EM>; I'm using the symbol &otimes; to
+represent the <EM>exclusive or</EM> function.  This formula is equivalent to
+<P><CENTER>(<EM>p</EM>&or;<EM>q</EM>) &and; &not;(<EM>p</EM>&and;<EM>q</EM>)</CENTER><P>
+A general inference system will know that if it's been told <EM>p</EM>&otimes;<EM>q</EM>
+and then later it learns, say, <EM>p</EM> then it can infer &not;<EM>q</EM>.
+
+<P>The cub reporter problem is simpler than some of its type in that
+the only relevant relation among individuals is &quot;is,&quot; which is an
+
+<EM>equivalence</EM> relation.  This means that if Jane is Irving then also
+Irving is Jane (the technical name for a relation with that property is
+<EM>symmetric</EM>), and also that if Jane is Irving, and Irving is the pilot,
+then Jane is the pilot (so the relation is <EM>transitive</EM>).  It's
+relatively easy to work out all the implications of a proposition about
+equivalence relations.
+
+<P>
+By contrast, the Foote problem contains <EM>ordering</EM> relations like &quot;is
+later than&quot; that are transitive but not symmetric.  To handle such problems
+the inference system must have a way to represent &quot;<EM>x</EM> is the last.&quot;
+Other problems contain relations like &quot;lives in the house next to&quot; that
+are symmetric but not transitive.  A statement like &quot;Mr. Smith lives in the
+house at the end&quot; has to be represented formally as something like &quot;there
+is only one person <EM>x</EM> such that <EM>x</EM> lives in the house next to Mr. Smith.&quot;
+
+<P>One reason a general inference system is harder to program than the
+special-purpose one I've written in this chapter is that my system makes all
+possible inferences from any newly verified or falsified proposition.  This
+is possible only because there is a finite, fairly small number of such
+inferences.  Once you introduce variables and predicates, the number of
+possible inferences is potentially infinite.  A general inference system must
+take care not to infer infinitely many useless results.  One solution is to
+defer the making of inferences until the user of the system asks a question,
+and then infer only what's needed to answer that particular question.  But
+it isn't always easy to know exactly what's needed.
+
+<P>An inference system like the one I'm vaguely describing is a central part of
+the programming language Prolog.  In that language, you program not by
+issuing instructions that tell the computer what to do, but rather by making
+<EM>assertions</EM> that some proposition is true.  You can then ask questions
+like &quot;for what values of <EM>x</EM> is this formula true?&quot;
+
+<P>
+<H2>Logic and Computer Hardware</H2>
+
+
+<P>Besides inference systems, another area in which logic is important in
+computer science is in the design of the computers themselves.  In a
+computer, information is represented as electrical signals flowing through
+wires.  (These days, a &quot;wire&quot; is likely to be a microscopic conducting
+region on a silicon chip rather than a visible strand of metal, but the
+principle is the same.)  In almost all computers, each wire may be carrying
+one of two voltage levels at any moment.  (It is the restriction to two
+possible voltages that makes them <EM>binary</EM> computers.  It would be
+
+possible to build <EM>ternary</EM> computer circuits using three
+voltages, but I know of no practical application of that idea.)  A computer
+is built out of small circuit elements called <EM>gates</EM> that combine or
+rearrange binary signals in various ways.  Perhaps the simplest example of a
+gate is an <EM>inverter</EM>; it has one input signal and provides one output
+signal that is the opposite of the input.  That is, if you have a high
+voltage coming into the inverter you get a low voltage out, and vice versa.
+
+<P>The voltages inside the computer can be thought of as representing numbers
+(zeros and ones) or truth values (false and true).  From now on I'll use the
+symbols 0 and 1 to represent the voltages, but you can mentally replace 0
+with <CODE>false</CODE> and 1 with <CODE>true</CODE> to see how what I'm saying here ties
+in with what's gone before.
+
+<P>Suppose you have a gate with two input wires and one output.  What are the
+possibilities for how that output is determined by the inputs?  Each of the
+two inputs can have two possible values; that means that a gate has four
+different possible input configurations.  For each of those four, the gate
+can output 0 or 1.  As you can see from the chart below, this means that
+there are 16 possible kinds of two-input gates:
+
+<P><CENTER><TABLE>
+<TR><TH align="left">input <EM>p</EM>:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TH align="left">input <EM>q</EM>:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TD>&nbsp;
+<TR><TH align="left">outputs:<TD>&nbsp;&nbsp;&nbsp;0
+<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and (<EM>p</EM>&and;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exclusive or (<EM>p</EM>&otimes;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or (<EM>p</EM>&or;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nor (not-or, &not(<EM>p</EM>&or;<EM>q</EM>))
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equivalence (<EM>p</EM>&harr;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implies (<EM>p</EM>&rarr;<EM>q</EM>)
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nand (not-and, &not;(<EM>p</EM>&and;<EM>q</EM>))
+<TR><TH><TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER>
+
+<P>The table indicates, for example, that a gate whose output is 1
+only when both inputs are 1 is an <EM>and</EM> gate, implementing the usual
+logical and operation.  The 16 possibilities include all the standard logic
+functions as well as several less obviously useful ones.  Two gate types
+called <EM>nand</EM> and <EM>nor</EM> represent functions rarely used in
+mathematical logic but common in computer design because it is sometimes
+helpful to have the opposite of the signal you're logically interested in.
+
+<P>Numbers other than 0 and 1 can't be represented as a single signal in a
+single wire.  That's why there isn't a &quot;plus gate&quot; along with the and
+gates, or gates, and so on; if both inputs to a plus gate were 1, the output
+would have to be 2.  To add two zero-or-one numbers we need a more
+complicated device with <EM>two</EM> output wires, one of which is the
+&quot;carry&quot; to the next binary digit:
+
+<P><CENTER><TABLE>
+<TR><TH align="left"><EM>A</EM> input:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TH align="left"><EM>B</EM> input:<TH>&nbsp;&nbsp;&nbsp;0
+<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1
+<TR><TD>&nbsp;
+<TR><TH align="left">sum out:<TD>&nbsp;&nbsp;&nbsp;0
+<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;1<TD>&nbsp;&nbsp;&nbsp;0
+<TR><TH align="left">carry out:<TD>&nbsp;&nbsp;&nbsp;0
+<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;0<TD>&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER>
+
+<P>These sum and carry outputs can be defined in terms of logical
+operations:
+
+<P>
+<P><CENTER><TABLE><TR><TD align="right">Sum<TD>&nbsp;=
+<TD>&nbsp;<EM>A</EM>&otimes;<EM>B</EM>
+<TR><TD align="right">Carry<TD>&nbsp;=
+<TD>&nbsp;<EM>A</EM>&and;<EM>B</EM>
+</TABLE></CENTER><P>
+
+
+<P>Exclusive or gates are, in fact, not generally used as basic
+hardware components, so this device is traditionally represented in terms of
+and gates, or gates, and inverters:
+
+<P><CENTER><IMG SRC="half-adder.gif" ALT="figure: half-adder"></CENTER>
+
+<P>The device we've just built is called a <EM>half-adder</EM> for
+reasons that should become clear in a moment.
+
+<P>To represent numbers larger than 1 we have to use more than one signal wire.
+Each signal represents a binary digit, or <EM>bit,</EM> that is implicitly
+multiplied by a power of 2 just as in the ordinary decimal representation of
+numbers each digit is implicitly multiplied by a power of 10.  For example,
+if we have three signal wires for a number, they have multipliers of 1, 2,
+and 4; with these signals we can represent the eight numbers from 0 (all
+signals 0) to 7 (all signals 1).  When we want to add two such three-bit
+numbers, the sum for all but the rightmost bit can involve a carry <EM>
+in</EM> as well as a carry out.  The circuit for each bit position must have
+<EM>three</EM> inputs, including one for the carry from the next bit over as
+well as the two external inputs.  The outputs are found using these formulas:
+
+<P>
+<P><CENTER><TABLE><TR><TD align="right">Sum<TD>&nbsp;=
+<TD>&nbsp;(<EM>A</EM>&otimes;<EM>B</EM>)&otimes;CarryIn
+<TR><TD align="right">CarryOut<TD>&nbsp;=
+<TD>&nbsp;(<EM>A</EM>&and;<EM>B</EM>)&or;
+<STRONG>(</STRONG>(<EM>A</EM>&otimes;<EM>B</EM>)&and;CarryIn<STRONG>)</STRONG>
+</TABLE></CENTER><P>
+
+<P>This circuit can be built using two half-adders:
+
+<P><CENTER><IMG SRC="full-adder.gif" ALT="figure: full-adder"></CENTER>
+
+<P>To add two three-bit numbers we connect three adders together this
+way:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/three-adders.gif" ALT="figure: three-adders"></CENTER>
+
+<P>The carry out signal from the leftmost adder (the one representing
+
+the largest power of 2) is the <EM>overflow</EM> signal; if it's true, the
+sum didn't fit in the number of bits provided.  Many computers use this
+signal to <EM>interrupt</EM> the execution of their programs so that people
+don't end up seeing incorrect results.
+
+<P>The phrase &quot;computer logic&quot; is widely used, even by non-experts, to refer
+to the inner workings of a computer.  Many people, though, think that the
+phrase describes the <EM>personality</EM> of the computer, which they imagine
+
+to be like that of Mr. Spock.  &quot;Computers may be able to play chess, but
+they can't write poetry, because that isn't logical.&quot; Here you've seen the
+real meaning of the phrase:  Just as a Logo program has procedures defined in
+terms of subprocedures and ultimately in terms of primitive procedures, the
+capabilities of a computer itself are built out of smaller pieces, and the
+primitive hardware components compute logical, rather than arithmetic,
+functions.  (For a computer to exhibit Mr. Spock's sense of purpose,
+understanding of cause and effect, drive for self-preservation, loyalty to
+his species and his government, and so on, would be no less miraculous than
+for it to write a love poem or throw a temper tantrum.  Later we'll discuss
+the efforts of artificial intelligence researchers to produce such miracles.)
+
+<P><H2>Combinatorics</H2>
+
+
+<P>Earlier I listed the 16 possible logical functions of two logical arguments.
+I could have figured out that there are 16 without actually listing them
+this way:  If a function has two arguments, and each argument has two
+possible values, that makes 2<SUP><SMALL>2</SMALL></SUP> possible combinations of argument values.
+A logical function is determined by its result for each of those four
+possible argument combinations.  (The four are <EM>f</EM>(0,0), <EM>f</EM>(0,1), <EM>f</EM>(1,0),
+and <EM>f</EM>(1,1).)  There are two possible results for <EM>f</EM>(0,0), two for
+<EM>f</EM>(0,1), and so on; the number of possible functions is the product of all
+these twos, 2<SUP><SMALL>2<SUP><SMALL>2</SMALL></SUP></SMALL></SUP> or 16.
+
+<P>The mathematics of counting how things can be combined is called
+<EM>combinatorics.</EM>  The problem we've just done illustrates a fundamental
+rule of combinatorics, namely that the number of possibilities for a choice
+with several components is the product of the number of possibilities for
+each component choice.  This may be easier to understand with an example in
+which not all the relevant numbers are 2.  Here's a classic:  Suppose you
+have a group of four men and three women, and you want to form a committee
+of one man and one woman chosen from this group.  How many such committees
+are possible?  There are 4 choices for the male member of the committee and
+3 choices for the female member; that means 4&times;3 or 12 committees.
+
+<P>(The multiplication rule only works if the component choices are <EM>
+independent</EM>; that is, the possible outcomes of one choice can't be
+affected by the outcome of any of the others.  For example, if our
+committees are to have a chairperson who can be of either sex and then two
+other members, one man and one woman, you can't say &quot;there are 7 choices
+for the chairperson, times 4 for the man, times 3 for the woman&quot; because
+after choosing the chairperson the number of choices for the other members
+is changed depending on the sex of the chair.  There are two correct ways
+to solve this problem.  One is to say &quot;The chairperson is either male or
+female.  If male, there are 4 possible chairs, times 3 possible other male
+members, times 3 possible female members, for 36 possible committees.  If
+female, there are 3 possible chairs, times 4 possible male members, times 2
+possible other female members, for 24 committees.  The total is 36+24 or
+60 committees.&quot; The second solution is to pick the chairperson <EM>last</EM>;
+then you say &quot;There are 4 possible male members, times 3 possible females,
+times 5 possible chairs (7 people in the original group minus 2 already
+chosen).&quot; Apart from arithmetic errors, almost all the mistakes people make
+in solving combinatorics problems come from forgetting that events have to
+be independent to allow you to multiply the choices.)
+
+<P>Let's return to logical functions for a moment.  Suppose we experiment with
+a ternary logic in which the possible values are yes, no, and maybe.  (You
+can represent these using the numbers 0, 1, and 2.)  How many three-argument
+ternary logic functions are there?  Is it 3<SUP><SMALL>(3<SUP><SMALL>3</SMALL></SUP>)</SMALL></SUP> or is it (3<SUP><SMALL>3</SMALL></SUP>)<SUP><SMALL>3</SMALL></SUP>?
+(It doesn't matter which way you group the twos for the binary logic version
+because the two groupings have the same value, 16, but this isn't true with
+threes.)  How many two-argument ternary logic functions are there?
+2<SUP><SMALL>(3<SUP><SMALL>2</SMALL></SUP>)</SMALL></SUP>?  3<SUP><SMALL>(2<SUP><SMALL>3</SMALL></SUP>)</SMALL></SUP>?  (3<SUP><SMALL>3</SMALL></SUP>)<SUP><SMALL>2</SMALL></SUP>?  How many three-argument binary logic
+functions?  The virtue of these problems is that you can check your own
+answers by listing all the possible functions as I did for the two-argument
+binary logic functions.
+
+<P>Most people are introduced to combinatorics
+by way of <EM>probability,</EM>
+the mathematics of gambling.  Given a number of equally likely possible
+situations, some of which win a bet and the rest of which lose it, the
+probability of winning is a ratio:
+
+<P><CENTER><IMG SRC="probability.gif"></CENTER><P>
+The role of combinatorics is to help in computing the numerator and
+denominator of that fraction.
+
+<P>
+
+For example, suppose you have six brown socks and four blue socks in a
+drawer, and you pull out two socks without looking.  What is the probability
+of getting a matching pair?  I'm going to give each sock a name like
+<EM>brown</EM><SUB><SMALL>3</SMALL></SUB> for the third brown sock so that we can talk about individual socks
+even if they're the same color.  How many possible pairs of socks are there?
+That is, given the set
+<P><CENTER>{<EM>brown</EM><SUB><SMALL>1</SMALL></SUB>,
+<EM>brown</EM><SUB><SMALL>2</SMALL></SUB>, ...,
+<EM>brown</EM><SUB><SMALL>6</SMALL></SUB>,
+<EM>blue</EM><SUB><SMALL>1</SMALL></SUB>, ...
+<EM>blue</EM><SUB><SMALL>4</SMALL></SUB>}</CENTER><P>
+containing ten socks, how many two-sock subsets are there?
+
+<P>The first step in answering this question is to notice that we have 10
+choices for the first sock and then 9 choices for the second.  So there are
+10&times;9 ways to make the two choices.  (There is a subtle point here
+that some textbooks don't bother explaining.  The choice of the second sock
+is <EM>not</EM> independent of the first choice, since we can't choose the
+same sock twice.  However, the <EM>number</EM> of second choices is always 9,
+even though the particular nine available socks depend on the first choice.
+So we can get away with multiplying in this example.)
+
+<P>This isn't quite the answer we want, though.  We've shown that there are 90
+<EM>ordered pairs</EM> of socks.  But once we get the socks out of the
+drawer, it doesn't matter which we picked first.  In other words, if we say
+there are 90 possible choices, we are counting
+{<EM>brown</EM><SUB><SMALL>2</SMALL></SUB>, <EM>brown</EM><SUB><SMALL>5</SMALL></SUB>} and {<EM>brown</EM><SUB><SMALL>5</SMALL></SUB>, <EM>brown</EM><SUB><SMALL>2</SMALL></SUB>}
+as two different choices.  Since we don't care which sock came out of the
+drawer first, we are really counting every pair twice, so there are only
+90/2 or 45 possible pairs.
+
+<P>An ordered subset of a set is called a <EM>permutation;</EM>
+a subset without
+a particular order is a <EM>combination.</EM>  We say that there are 90
+permutations of ten things taken two at a time; there are 45 combinations of
+ten things taken two at a time.
+
+<P>It turns out that combinations are what matters most of the time; it's
+relatively rare for permutations to turn up in a math problem.  An exception
+is the device wrongly called a &quot;combination lock&quot;; to open one, you must
+know a particular permutation of the possible numbers.  My high school
+locker &quot;combination&quot; was 18-24-14.  If I tried the same numbers in a
+different order, like 24-18-14, the lock wouldn't open.  (Actually it's
+misleading for me to use this example because the same number can appear
+twice in most locks of this type, so the &quot;combination&quot; is not a subset of
+the available numbers.  If there are 50 numbers available, the total number
+of possibilities is not 50&times;49&times;48 but rather 50&times;50&times;50.  These lock-opening patterns are therefore neither permutations nor
+combinations but something else that we might call &quot;permutations with
+repetition allowed.&quot;)
+
+<P>We haven't finished solving the sock problem.  How many of the possible
+pairs of socks are matching pairs?  One way to find out would be to list all
+the possible pairs and actually count how many of them match.  This is the
+sort of thing computers do well.  First we have to write a procedure that
+takes as input a list and a number, and outputs a list of lists, each of
+which is a subset of the input list whose length is the input number.  That
+is, we want to take
+
+<P><PRE>combs [brown1 brown2 ... brown6 blue1 ... blue4] 2
+</PRE>
+
+<P>and this should output a list of pairs:
+
+<P><PRE>[[brown1 brown2] [brown1 brown3] ... [brown4 blue3] ... [blue3 blue4]]
+</PRE>
+
+<P>This is a fairly tricky program to write.  Try it before you read
+further.  Can you reduce the problem to a smaller, similar problem?  Don't
+forget that we want combinations, not permutations, so the output can't have
+two sublists containing the same elements.
+
+<P>To make sure that each combination appears in the result in only one order,
+we can decide explicitly what that order will be.  The most convenient thing
+is to say that the elements will appear in each sublist in the same order in
+which they appear in the original list.  That is, since the input list has
+<CODE>brown2</CODE> before <CODE>blue3</CODE>, the output will contain the list
+
+<P><PRE>[brown2 blue3]
+</PRE>
+
+<P>but not the list
+
+<P><PRE>[blue3 brown2]
+</PRE>
+
+<P>It follows that the very first element of the input list, <CODE>
+brown1</CODE>, can only appear as the first element of any output sublist.  In
+other words, there are two kinds of sublists: ones with <CODE>brown1</CODE> as
+their first element and ones that don't include <CODE>brown1</CODE> at all.  This
+is a way to divide the problem into smaller pieces.
+
+<P>If we are looking for <EM>n</EM>-element subsets, the first kind consists of <CODE>
+brown1</CODE> stuck in front of a smaller subset of <EM>n</EM>&minus;1 elements chosen from the
+remainder (the <CODE>butfirst</CODE>) of the input list.  The second kind of subset
+is an <EM>n</EM>-element subset of the <CODE>butfirst</CODE>.  We can collect all of each
+kind by a recursive invocation of the procedure we're going to write, then
+append the two collections and output the result.  So the procedure will
+look like this:
+
+<P><PRE>to combs :list :howmany
+... &lt;stop rule&gt; ...
+output sentence (map [fput first :list ?]
+                     combs (butfirst :list) (:howmany-1)) ~
+                (combs (butfirst :list) :howmany)
+end
+</PRE>
+
+<P>By now you've had a lot of experience writing
+recursive procedures,
+but I'm going over this one in detail for two reasons:  It's tricky and it's a
+model for solving many other combinatorial problems.  What makes it tricky
+is a combination of two things.  One is that it's recursive twice; that is,
+there are two recursive invocations of <CODE>combs</CODE> within <CODE>combs</CODE>.  This
+makes the control structure very different from the
+
+<P><PRE>to blah :list
+output fput (<CODE><EM>something</EM></CODE> first :list) (blah butfirst :list)
+end
+</PRE>
+
+<P>sort of recursion that may be more familiar.  The second tricky
+part is that there are two input variables, each of which may be made smaller
+(by <CODE>butfirst</CODE>ing or by subtracting 1) but need not be in a particular
+recursive call.
+
+<P>One implication of these complicating factors is that we need <EM>two</EM>
+stop rules.  It may be obvious that we need one for the situation of
+counting <CODE>:howmany</CODE> down to zero, but we also need one for <CODE>:list</CODE>
+getting too small.  Ordinarily this latter would be an <CODE>emptyp</CODE> test, but
+in fact any list whose length is less than <CODE>:howmany</CODE> is too small, not
+just the empty list.  Here is the finished procedure:
+
+<P><PRE>to combs :list :howmany
+if equalp :howmany 0 [output [[]]]
+if equalp :howmany count :list [output (list :list)]
+output sentence (map [fput first :list ?]
+                     combs (butfirst :list) (:howmany-1)) ~
+                (combs (butfirst :list) :howmany)
+end
+
+? <U>show combs [a b c d e] 3</U>
+[[a b c] [a b d] [a b e] [a c d] [a c e] [a d e]
+         [b c d] [b c e] [b d e] [c d e]]
+</PRE>
+
+<P>Now we can use <CODE>combs</CODE> on the sock problem.  (Note:  The procedure <CODE>
+socks</CODE> shown here is not the one in the program file; there will be a
+modified version a few paragraphs down the road.)
+
+<P><PRE>to socks :list
+localmake &quot;total combs :list 2
+localmake &quot;matching filter [equalp butlast first ? butlast last ?] ~
+                           :total
+print (sentence [There are] count :total [possible pairs of socks.])
+print (sentence [Of these,] count :matching [are matching pairs.])
+print sentence [Probability of match =] ~
+               word (100*(count :matching)/(count :total)) &quot;%
+end
+
+? <U>socks [brown1 brown2 brown3 brown4 brown5 brown6</U>
+         <U>blue1 blue2 blue3 blue4]</U>
+There are 45 possible pairs of socks.
+Of these, 21 are matching pairs.
+Probability of match = 46.6666667%
+</PRE>
+
+<P>The answer is that the probability of a matching pair is just
+under half.  The template used in the invocation of <CODE>filter</CODE> in <CODE>
+socks</CODE> depends on the fact that two socks match if their names are equal
+except for the last character, such as <CODE>brown3</CODE> and <CODE>brown4</CODE>.
+
+<P>I've numbered the socks because it's easier for us to talk about how the
+program works (and about how the underlying mathematics works, too) if we
+can identify an individual sock.  But it's worth noting that the program
+doesn't really need individual sock names.  We could instead use the list
+
+<P><PRE>[brown brown brown brown brown brown blue blue blue blue]
+</PRE>
+
+<P>and change the <CODE>filter</CODE> template to
+
+<P><PRE>[equalp first ? last ?]
+</PRE>
+
+<P>The program will generate some <CODE>[brown brown]</CODE> pairs, some
+<CODE>[brown blue]</CODE> pairs, and some <CODE>[blue blue]</CODE> pairs.  The number of
+pairs will still be 45 and the number of matching pairs will still be 21.
+
+<P>Having come to that realization, we can make the &quot;user interface&quot; a little
+smoother by having <CODE>socks</CODE> accept an input list like
+
+<P><PRE>[6 brown 4 blue]
+</PRE>
+
+<P>and expand that into the desired list of ten socks itself.  Here is
+the final program:
+
+<P><PRE>to socks :list
+localmake &quot;total combs (expand :list) 2
+localmake &quot;matching filter [equalp first ? last ?] :total
+print (sentence [There are] count :total [possible pairs of socks.])
+print (sentence [Of these,] count :matching [are matching pairs.])
+print sentence [Probability of match =] ~
+               word (100*(count :matching)/(count :total)) &quot;%
+end
+
+to expand :list
+if emptyp :list [output []]
+if numberp first :list ~
+   [output cascade (first :list)
+                   [fput first butfirst :list ?]
+                   (expand butfirst butfirst :list)]
+output fput first :list expand butfirst :list
+end
+
+? <U>socks [6 brown 4 blue]</U>
+There are 45 possible pairs of socks.
+Of these, 21 are matching pairs.
+Probability of match = 46.6666667%
+</PRE>
+
+<P>My reason for presenting this refinement of the program is that it offers a
+concrete opportunity for reflection on how you can tell which differences are
+important in a combinatorics problem.  In discussing the first version of
+the program, I said that the two lists
+
+<P><PRE>[brown2 brown5] and [brown5 brown2]
+</PRE>
+
+<P>represent the same pair of socks, so both shouldn't be included in
+the list of lists output by <CODE>combs</CODE>.  Now I'm saying that several lists
+that look identical like
+
+<P><PRE>[brown brown]
+</PRE>
+
+<P>represent <EM>different</EM> pairs of socks and must all be counted.
+It would be a mistake to say, &quot;There are three possibilities: brown-brown,
+brown-blue, and blue-blue.  So the probability of a match is 2/3.&quot; It's
+true that there are three <EM>kinds</EM> of pairs of socks, but the three
+kinds are not equally represented in the list of 45 possible pairs.
+
+<P><H2>Inductive and Closed-Form Definition</H2>
+
+<P>The usual approach to problems like the one about the socks is not to
+enumerate the actual combinations, but rather to compute the <EM>number</EM>
+of combinations directly.  There are formulas for both number of
+combinations and number of permutations.  Usually the latter is derived
+first because it's easier to understand.
+
+<P>With 10 socks in the drawer, the number of two-sock permutations is
+10&times;9.  If we'd wanted three socks for a visiting extraterrestrial
+friend, the number of permutations would be 10&times;9&times;8.  In
+general, if we have <EM>n</EM> things and we want to select <EM>r</EM> of them, the number
+of permutations is
+<P><CENTER><IMG SRC="math11.gif" ALT="math display"></CENTER><P>
+Mathematicians don't like messy formulas full of dots, so this is usually
+abbreviated using the factorial function.  The notation &quot;<EM>n</EM>!&quot; is
+pronounced &quot;<EM>n</EM> factorial&quot; and represents the product of all the integers
+from 1 to <EM>n</EM>.  Using this notation we can write
+<P><CENTER><IMG SRC="math12.gif" ALT="math display"></CENTER><P>
+This is an elegant formula, but you should resist the temptation to use it
+as the basis for a computer program.  If you write
+
+<P><PRE>to perms :n :r
+output (fact :n)/(fact (:n-:r))
+end
+
+to fact :n
+output cascade :n [# * ?] 1
+end
+</PRE>
+
+<P>then you're doing more multiplications than necessary, plus an
+unnecessary division.  Instead, go back to the earlier version in which <EM>r</EM>
+terms are multiplied:
+
+<P><PRE>to perms :n :r
+if :r=0 [output 1]
+output :n * perms :n-1 :r-1
+end
+</PRE>
+
+<P>The set of all permutations of <EM>n</EM> things taken <EM>r</EM> at a time includes
+several rearrangements of each <EM>combination</EM> of <EM>n</EM> things <EM>r</EM> at a
+time.  How many rearrangements of each?  Each combination is a set of <EM>r</EM>
+things, so the number of possible orderings of those <EM>r</EM> things is the
+number of permutations of <EM>r</EM> things <EM>r</EM> at a time, <EM><SUB><SMALL>r</SMALL></SUB>P<SUB><SMALL>r</SMALL></SUB></EM> or <EM>r</EM>!.
+<EM><SUB><SMALL>n</SMALL></SUB>P<SUB><SMALL>r</SMALL></SUB></EM> is greater than <EM><SUB><SMALL>n</SMALL></SUB>C<SUB><SMALL>r</SMALL></SUB></EM>, the number of combinations of <EM>n</EM>
+things taken <EM>r</EM> at a time, by this factor.  In other words, if each
+combination corresponds to <EM>r</EM>! permutations, then the number of
+permutations is <EM>r</EM>! times the number of combinations.  So we have
+<P><CENTER><IMG SRC="math13.gif" ALT="math display"></CENTER><P>
+The notation <IMG SRC="nchooser.gif"> is much more commonly used in mathematics and
+computer science texts than <EM><SUB><SMALL>n</SMALL></SUB>C<SUB><SMALL>r</SMALL></SUB></EM>.  It's pronounced &quot;<EM>n</EM> choose <EM>r</EM>.&quot;
+
+<P>The traditional way to do the sock problem is this:  The total number of
+possible pairs of socks is <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/10choose2.gif">.  The number of matching pairs is
+equal to the number of brown pairs plus the number of blue pairs.  The
+number of brown pairs is the number of combinations of 6 brown socks chosen
+2 at a time, or <IMG SRC="6choose2.gif">.  Similarly, the number of pairs of blue socks
+is <IMG SRC="4choose2.gif">.  So
+<P><CENTER><IMG SRC="math14.gif" ALT="math display"></CENTER><P>
+which is the same answer we got by enumerating and testing all the possible
+pairs.
+
+<P>A formula like
+<P><CENTER><IMG SRC="math15.gif" ALT="math display"></CENTER><P>
+defines a mathematical function in terms of other, more elementary functions.
+It is comparable to a Logo procedure defined in terms of primitives, like
+
+<P><PRE>to second :thing
+output first butfirst :thing
+end
+</PRE>
+
+<P>The &quot;primitives&quot; of mathematics are addition, subtraction, and
+so on, along with a few more advanced ones like the trigonometric and
+exponential functions.  These are called &quot;elementary functions&quot; and a
+formula that defines some new function in terms of those is called a
+<EM>closed form definition.</EM>
+
+<P>
+
+<P>The function <IMG SRC="nchooser.gif"> could also be defined in a different way based on
+the ideas in the <CODE>combs</CODE> program we used to enumerate combinations.  The
+combinations fall into two categories, those that include the first element
+and those that don't.  So the number of combinations is the sum of the
+numbers in each category:
+<P><CENTER><IMG SRC="math16.gif" ALT="math display"></CENTER><P>
+This is called an <EM>inductive definition.</EM>  It is analogous to a
+recursive procedure in Logo.
+
+<P>
+
+<P>These two formulas provide alternative definitions for the <EM>same</EM>
+function, just as two Logo procedures can employ different algorithms but
+have the same input-output behavior.  How do we know that the two
+definitions of <IMG SRC="nchooser.gif"> really do define the same function?  Each
+definition was derived from the fundamental definition of &quot;the number of
+combinations of <EM>n</EM> things taken <EM>r</EM> at a time&quot; by different arguments.
+If those arguments are correct, the two versions must define the same
+function because there is just one correct number of combinations.  It is
+also possible to prove the two definitions equivalent by algebraic
+manipulation; start with the closed form definition and see if it does, in
+fact, obey the requirements of the inductive definition.  For example, if
+<EM>r</EM>=0 we have
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/math17.gif" ALT="math display"></CENTER><P>
+(It may not be obvious that 0! should be equal to 1, but mathematicians
+define the factorial function that way so that the formula <EM>n</EM>! = <EM>n</EM>&middot;(<EM>n</EM>&minus;1)!
+remains true when <EM>n</EM>=1.)  See if you can verify the other two parts of the
+inductive definition.  Here's a hint:
+<P><CENTER><IMG SRC="math18.gif" ALT="math display"></CENTER><P>
+
+<P>Why would anyone be interested in an inductive definition when the closed
+form definition is mathematically simpler and also generally faster to
+compute?  There are two reasons.  First, some functions don't have closed
+form definitions in terms of elementary functions.  For those functions,
+there is no choice but to use an inductive definition.  Second, sometimes
+when you start with a non-formal definition of a function in terms of its
+purpose, like &quot;the number of combinations...&quot; for <IMG SRC="nchooser.gif">, it may be
+easier to see how to translate that into an inductive definition as a first
+step, even if it later turns out that there is also a less obvious closed
+form.  In fact, that's what I did in presenting the idea of combinations.  I
+found it more straightforward to understand the inductive definition because
+it made sense to think about the actual combinations and not merely how many
+of them there are.  (In fact there is a mathematical technique called <EM>
+generating functions</EM> that can sometimes be used to transform an
+inductive definition into a closed form definition, but that technique
+requires calculus and is beyond the scope of this book.)
+
+<P><H2>Pascal's Triangle</H2>
+
+<P>In addition to closed form and inductive definitions, it's often helpful to
+present a sort of partial definition of a function in the form of a
+table of values.  (For
+logic functions, with only a finite number of possible values
+for the arguments of the function, such a table is actually a complete
+definition.)  Partial definitions in a table of values can be particularly
+useful when the function displays some regularity that allows values outside
+the table to be computed easily based on the values in the table.  For
+example, the sine function is <EM>periodic</EM>; its values repeat in cycles
+of 360 degrees.  If you need to know the sine of 380 degrees, you can look
+up the sine of 20 degrees and that's the answer.  For functions of two
+variables, like addition and multiplication, these function tables are often
+presented as square arrays of numbers.  In elementary school you learned the
+addition and multiplication tables for numbers up to 10, along with
+algorithms for reducing the addition and multiplication of larger numbers to
+a sequence of operations on single digits.
+
+<P>The function <IMG SRC="nchooser.gif"> is a function of two variables, so it would
+ordinarily be presented as a square table like the multiplication table,
+except for the fact that this particular function is meaningfully defined
+only when <EM>r</EM>&le;<EM>n</EM>.  (There are no combinations of three things taken five
+at a time, for example, so <IMG SRC="3choose5.gif"> is 0.)  So instead of a square
+format like this:
+<P><CENTER><TABLE>
+<TR><TH><SUB><SMALL><EM>r</EM></SMALL></SUB>\<SUP><SMALL><EM>n</EM></SMALL></SUP>
+<TH>&nbsp;&nbsp;&nbsp;0<TH>&nbsp;&nbsp;&nbsp;1<TH>&nbsp;&nbsp;&nbsp;2<TH>&nbsp;&nbsp;&nbsp;3<TH>&nbsp;&nbsp;&nbsp;4<TH>&nbsp;&nbsp;&nbsp;5
+<TR><TH>0<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1
+<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;1
+<TR><TH>1<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;2
+<TD align="center">&nbsp;&nbsp;&nbsp;3<TD align="center">&nbsp;&nbsp;&nbsp;4<TD align="center">&nbsp;&nbsp;&nbsp;5
+<TR><TH>2<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1
+<TD align="center">&nbsp;&nbsp;&nbsp;3<TD align="center">&nbsp;&nbsp;&nbsp;6<TD align="center">&nbsp;&nbsp;&nbsp;10
+<TR><TH>3<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0
+<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;4<TD align="center">&nbsp;&nbsp;&nbsp;10
+<TR><TH>4<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0
+<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1<TD align="center">&nbsp;&nbsp;&nbsp;5
+<TR><TH>5<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0
+<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;0<TD align="center">&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER><P>
+this function is traditionally presented in a triangular form called
+&quot;Pascal's Triangle&quot; after Blaise Pascal (1623-1662), who invented the
+mathematical theory of probability along with Pierre de Fermat (1601-1665).
+Pascal didn't invent the triangle, but he did pioneer its use in
+combinatorics.  Each row of the triangle contains the nonzero values of
+<IMG SRC="nchooser.gif"> for a particular <EM>n</EM>:
+<P><CENTER><TABLE>
+<TR><TD align="center">1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;1
+<TR><TD align="center">1&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;10&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;1
+</TABLE></CENTER><P>
+Pascal's Triangle is often introduced in algebra because the numbers in row
+<EM>n</EM> (counting from zero) are the <EM>binomial coefficients,</EM> the constant
+factors in the terms in the expansion of (<EM>a</EM>+<EM>b</EM>)<SUP><SMALL><EM>n</EM></SMALL></SUP>.  For example,
+<P><CENTER><IMG SRC="math21.gif" ALT="math display"></CENTER><P>
+
+<P>Do you see why the binomial coefficients are related to combinations?  An
+expression like (<EM>a</EM>+<EM>b</EM>)<SUP><SMALL>4</SMALL></SUP> is a sum of products of four <EM>A</EM>s and <EM>B</EM>s.  (How
+many such products?  Each term involves four choices between <EM>A</EM> and <EM>B</EM>;
+there are 2 ways to make each choice, and the choices are independent, so
+there are 2<SUP><SMALL>4</SMALL></SUP> possible products.)  These products are combined into terms
+based on the fact that some are equal to each other, such as <EM>aaab</EM> and
+<EM>abaa</EM>, both of which contribute to the <EM>a</EM><SUP><SMALL>3</SMALL></SUP><EM>b</EM> term.  How many arrangements
+of three <EM>A</EM>s and one <EM>B</EM> are there?  That's like asking how many ways there
+are to choose one slot for a <EM>B</EM> out of four possible slots, which is
+<IMG SRC="4choose1.gif">.
+
+<P>Can you predict what the coefficients will be in the expansion of
+(<EM>a</EM>+<EM>b</EM>+<EM>c</EM>)<SUP><SMALL>4</SMALL></SUP>?  For example, what is the coefficient of <EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM>?  Try
+to multiply it out and see if your formula is right.
+
+<P>Everyone is taught in school that each number in Pascal's Triangle, except
+for the 1s at the ends, is the sum of the two numbers above it.  But this is
+usually presented as a piece of magic with no explanation.  It's not obvious
+how that fact is connected to the formula expressing <IMG SRC="nchooser.gif"> in terms
+of factorials.  But the technique I used in writing the <CODE>combs</CODE> procedure
+to enumerate the actual combinations explains how Pascal's Triangle works.
+The set of all combinations of <EM>n</EM> things taken <EM>r</EM> at a time can be divided
+into those combinations that include the first of the <EM>n</EM> things and those
+that don't.  How many of the former are there?  Each such combination must
+be completed by adjoining to that first thing <EM>r</EM>&minus;1 out of the remaining
+<EM>n</EM>&minus;1 available things, so there are <IMG SRC="n-1chooser-1.gif"> such combinations.
+The second category, those not containing the first thing in the list,
+requires us to choose <EM>r</EM> things out of the remaining <EM>n</EM>&minus;1, so there are
+<IMG SRC="n-1chooser.gif"> of them.  So <IMG SRC="nchooser.gif"> must be the sum of those two
+numbers, which are indeed the ones above it in the triangle.
+
+<P>Thinking about the triangle may also help you to understand why <CODE>combs</CODE>
+needs two stop rules; each row contains <EM>two</EM> numbers, the ones (pun)
+at each end, that can't be computed as the sum of two other numbers.
+
+<P><H2>Simulation</H2>
+
+
+<P>Yet another approach to solving the sock problem would be the
+experimental method:  Load a drawer with six brown and four blue socks, pull out pairs
+of socks a few thousand times, and see how many of the pairs match.  The
+actual experiment would be time-consuming and rather boring, but we can
+<EM>simulate</EM> the experiment with a computer program.  The idea is to use
+random numbers to represent the random choice of a sock.
+
+<P><PRE>to socktest
+localmake &quot;first ~
+          pick [brown brown brown brown brown brown blue blue blue blue]
+localmake &quot;second ~
+          pick (if equalp :first &quot;brown
+               [[brown brown brown brown brown blue blue blue blue]]
+               [[brown brown brown brown brown brown blue blue blue]] )
+output equalp :first :second
+end
+</PRE>
+
+<P><CODE>Socktest</CODE> is a predicate that simulates one trial of picking
+a pair of socks and outputs <CODE>true</CODE> if the socks match.  Notice how the
+available choices for the second sock depend on which color sock was chosen
+first.  (It's a little unaesthetic that this particular selection of six
+brown and four blue socks is built into the program, with three slightly
+different lists explicitly present inside <CODE>socktest</CODE>.  It would be both
+more elegant and more flexible if <CODE>socktest</CODE> could take a list like
+<CODE>[6 brown 4 blue]</CODE> as input, like <CODE>socks</CODE>, and compute the list of
+possibilities for the second sock itself.  But right now I'm more interested
+in showing how a simulation works than in programming style; you can make
+that change yourself if you like.)
+
+<P>What we want to do is invoke <CODE>socktest</CODE> repeatedly and keep track of how
+many times the output is <CODE>true</CODE>.  That can be done with an instruction
+like
+
+<P><PRE>print (cascade 1000 [? + if socktest [1] [0]] 0) / 10
+</PRE>
+
+<P>I divide by 10 so that the result will be expressed as a percent
+probability.  (If I made 100 trials instead of 1000 the output from <CODE>
+cascade</CODE> would already be a percentage.)  Your results will depend on the
+random number generator of your computer.  I tried it three times and got
+results of 50.1%, 50.8%, and 45.5%.  I then did 10,000 trials at once
+with a result of 48.78%.  The result expected on theoretical grounds was
+46&nbsp;<SUP><SMALL>2</SMALL></SUP>&frasl;<SUB><SMALL>3</SMALL></SUB>%.
+
+<P>Simulation is generally much slower than either of the techniques we used
+earlier (enumeration of possibilities and direct computation of the number
+of possibilities), and it gives results that are only approximately correct.
+So why would anyone want to use this method?  For a simple problem like
+this, you probably wouldn't.  But some combinatorics problems are too
+complicated to be captured by a simple formula.  For example, what is the
+probability of winning a game of solitaire?  (To make this a sensible
+question, you'd have to decide on a particular set of strategy rules to
+determine which card to play next when there are several possibilities.  The
+rule could be &quot;play the higher ranking card&quot; or &quot;choose a card at
+random,&quot; for example.)  In principle this question could be answered
+exactly, since there are only a finite number of ways a deck of cards can be
+arranged and we could analyze each of them.  But in practice the most
+reasonable approach is probably to write a solitaire simulator and have it
+play out a few thousand randomly ordered hands.
+
+<P>Solitaire is a rather complicated game; even a simulator for it would be
+quite a large project.  A more manageable one, if you'd like something to
+program, would be a craps simulator.  Remember that the 11 possible results
+of rolling two dice (2 to 12) are not equally likely!  You have to simulate
+each die separately.
+
+<P><H2>The Simplex Lock Problem</H2>
+
+<P>This is a picture of a Simplex lock, so called because it's
+manufactured by Simplex Security Systems, Inc.  It is a five-button mechanical
+(i.e., no electricity) combination lock with an unusual set of possible
+combinations.  As an example of a challenging problem in combinatorics, I'd
+like you to figure out how many possible combinations there are.
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/lock.gif" ALT="figure: lock"></CENTER>
+
+
+
+<P>What makes this lock unusual is that a combination can include more than one
+button pushed at the same time.  For example, one possible combination is
+&quot;2, then 1 and 4 at the same time, then 3.&quot;  Here are the precise rules:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Each button may be used at most once.  For example, &quot;2, then 2 and 3 at
+the same time&quot; is not allowed.
+<TR><TH align="right" valign="top">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> Each push may include any number of buttons, from one to five.  For
+example, one legal combination is &quot;hit all five buttons at once with your
+fist.&quot;  (But hitting all five buttons can't be part of a larger combination
+because of rule 1.)
+
+<P></TABLE><P>
+
+<P>It follows from these rules that there can be at most five
+distinct pushes.  (Do you see why?)  The rules also allow for the null
+combination, in which you don't have to push any buttons at all.
+
+<P>When working on this problem, don't forget that when two or more buttons are
+pushed at the same time, their order doesn't matter.  That is, you shouldn't
+count &quot;2 and 3 together, then 5&quot; and &quot;3 and 2 together, then 5&quot; as two
+distinct combinations.  (For this reason, the Simplex lock <EM>is</EM>
+entitled, at least in part, to the name &quot;combination lock&quot;!)
+
+<P>Try to figure out how many combinations there are before reading further.
+You can enumerate all the possibilities or you can derive a formula for the
+number of possibilities.  You might want to start with a smaller number of
+buttons.  (As a slight hint, when you buy one of these locks, the box it
+comes in says &quot;thousands of combinations.&quot;)
+
+<P>I first attacked this problem by trying to enumerate all the possible
+combinations, but that turns out to be quite messy.  The trouble is that it
+isn't obvious how to <EM>order</EM> the combinations, so it's hard to be sure
+you haven't missed any.  Here is how I finally decided to do it.  First of
+all, divide the possible combinations into six categories depending on how
+many buttons (zero to five) they use.  There is exactly one combination
+using zero buttons, and there are five using one button each.  After that it
+gets tricky because there are different <EM>patterns</EM> of simultaneous
+pushes within each category.  For example, for combinations using two
+buttons there are two patterns: the one in which they're pressed together
+(<CODE>x-x</CODE>) and the one in which they're pressed separately (<CODE>x x</CODE>).
+(I'm introducing a notation for patterns in which hyphens connect buttons
+that are pressed together and spaces connect the separate pushes.)  How many
+distinct combinations are there in each of those patterns?  Figure it out
+before reading on.
+
+<P>In the <CODE>x x</CODE> pattern there are <SUB><SMALL>5</SMALL></SUB><EM>P</EM><SUB><SMALL>2</SMALL></SUB> &quot;combinations&quot; because the
+order in which you push the buttons matters.  In the <CODE>x-x</CODE> pattern there
+are only <IMG SRC="5choose2.gif"> combinations because the two buttons are pushed
+together; <CODE>1-4</CODE> and <CODE>4-1</CODE> are the same combination.  Altogether
+there are 20+10 or 30 combinations usng two of the five buttons.
+
+<P>Beyond this point it gets harder to keep track of the different patterns.
+Among the three-button patterns are <CODE>x-x x</CODE>, <CODE>x x x</CODE>, and <CODE>
+x-x-x</CODE>.  How many more are there?  How many four-button patterns?  You might,
+at this point, like to see if you can finish enumerating all the
+possibilities for the five-button lock.
+
+<P>My solution is to notice that in a three-button pattern, for example, there
+are two slots between the <CODE>x</CODE>s, and each slot has a space or a hyphen.
+If I think of those slots as binary digits, with 0 for space and 1 for
+hyphen, then each pattern corresponds to a 2-bit number.  There are four
+such numbers, 00 to 11 (or 0 to 3 in ordinary decimal notation).
+
+<P><TABLE><TR><TH>number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH>pattern
+<TR><TD align="center">
+<PRE>
+00
+01
+10
+11
+</PRE><TH>&nbsp;&nbsp;&nbsp;&nbsp;<TD align="center">
+<PRE>
+x x x
+x x-x
+x-x x
+x-x-x
+</PRE></TABLE>
+
+<P>Similarly, there are eight four-button patterns:
+
+<P><TABLE><TR><TH>number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH>pattern
+<TR><TD align="center">
+<PRE>
+000
+001
+010
+011
+100
+101
+110
+111
+</PRE><TH>&nbsp;&nbsp;&nbsp;&nbsp;<TD align="center">
+<PRE>
+x x x x
+x x x-x
+x x-x x
+x x-x-x
+x-x x x
+x-x x-x
+x-x-x x
+x-x-x-x
+</PRE></TABLE>
+
+<P>And there are 16 five-button patterns, from 0000 to 1111.
+
+<P>How many combinations are there within each pattern?  There are two
+different ways to go about calculating that number.  To be specific, let's
+consider four-button patterns.  The way I chose to do the calculation was to
+start with the idea that there are <SUB><SMALL>5</SMALL></SUB><EM>P</EM><SUB><SMALL>4</SMALL></SUB> ways to choose four buttons in
+order.  For the <CODE>x x x x</CODE> pattern, this is the answer.  For the other
+patterns, this number (120) has to be divided by various factors to account
+for the fact that the order is <EM>partially</EM> immaterial, just as in
+deriving the formula for combinations from the formula for permutations we
+divided by <EM>r</EM>! because the order is completely immaterial.  Consider the
+pattern <CODE>x-x x x</CODE>.  In this pattern the order of the first two numbers
+is immaterial, but the choice of the first two numbers as a pair matters,
+and so does the order of the last two numbers.  So <CODE>1-2 3 4</CODE> is the same
+combination as <CODE>2-1 3 4</CODE> but different from <CODE>1-3 2 4</CODE> or <CODE>
+1-2 4 3</CODE>.  That means the number 120 is too big by a factor of 2, because
+every significant choice of combination is represented twice.  For this
+pattern the number of different combinations is 60.  Of course the same
+argument applies to the patterns <CODE>x x-x x</CODE> and <CODE>x x x-x</CODE>.
+
+<P>What about <CODE>x-x x-x</CODE>?  In this pattern there are two pairs of positions
+within which order doesn't matter.  Each combination appears <EM>four</EM>
+times in the list of 120; <CODE>1-2 3-4</CODE> is the same as <CODE>1-2 4-3</CODE>,
+<CODE>2-1 3-4</CODE>, and <CODE>2-1 4-3</CODE>.  So there are 30 significantly different
+combinations in this pattern.  What about <CODE>x-x-x x</CODE>?  In this pattern,
+the order of the first three numbers is irrelevant; this means that there
+are 3! or 6 appearances of each combination in the 120, so there are 20
+significantly different combinations in this pattern.  The general rule is
+that for each group of <EM>m</EM> consecutive hyphens in the pattern you must
+divide by (<EM>m</EM>+1)! to eliminate duplicates.
+
+<P>(My approach was to start with permutations and then divide out redundant
+ones.  Another approach would be to build up the pattern using combinations.
+The pattern <CODE>x-x x x</CODE> contains three groups of numbers representing
+three &quot;pushes&quot;: a group of two and two groups of one.  Since this is a
+five-button lock, for the first group of two there are <IMG SRC="5choose2.gif"> choices.
+(Order doesn't matter within a group.)  For the second group there are only
+three buttons remaining from which we can choose, so there are <IMG SRC="3choose1.gif">
+choices for that button.  Finally, there are <IMG SRC="2choose1.gif"> choices for the
+fourth button (the third group).  This makes 10&times;3&times;2 possible
+combinations for this pattern, the same as the 60 we computed the other way.
+For the <CODE>x-x x-x</CODE> pattern this method gives <IMG SRC="5c2x3c2.gif">
+or 30 combinations.)
+
+<P>Having worked all this out, I was ready to write a computer program to count
+the total number of combinations.  The trickiest part was deciding how to
+deal with the binary numbers that represent the patterns.  In the end I used
+plain old numbers.  The expression
+
+<P><PRE>remainder :number 2
+</PRE>
+
+<P>yields the rightmost bit of a number, and then <CODE>:number/2</CODE>
+gives all but the rightmost bit (with a little extra effort for odd numbers).
+To help you read the program, here is a description of the most important
+procedures:
+
+<P>
+<TABLE><TR><TH align="right" valign="top"><CODE>lock&nbsp;5</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">outputs the total number of combinations
+for the 5-button lock.
+<TR><TH align="right" valign="top"><CODE>lock1&nbsp;5&nbsp;4</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">outputs the number of combinations that use
+4 out of the 5 buttons.
+<TR><TH align="right" valign="top"><CODE>lock2&nbsp;120&nbsp;5&nbsp;1</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">outputs the number of combinations for the
+4-button pattern corresponding to the binary
+form of the number 5 (101 or x-x x-x).  The
+120 is <SUB><SMALL>5</SMALL></SUB><EM>P</EM><SUB><SMALL>4</SMALL></SUB> and the 1 is always used as
+the third input except in recursive calls.
+
+<P></TABLE>
+
+<P>Here is the program:
+
+<P><PRE>to lock :buttons
+output cascade :buttons [? + lock1 :buttons #] 1
+end
+
+to lock1 :total :buttons
+localmake &quot;perms perms :total :buttons
+output cascade (twoto (:buttons-1)) ~
+               [? + lock2 :perms #-1 1] ~
+               0
+end
+
+to twoto :power
+output cascade :power [2 * ?] 1
+end
+
+to lock2 :perms :links :factor
+if equalp :links 0 [output :perms/(fact :factor)]
+if equalp (remainder :links 2) 0 ~
+   [output lock2 :perms/(fact :factor) :links/2 1]
+output lock2 :perms (:links-1)/2 :factor+1
+end
+</PRE>
+
+<P>One slight subtlety is that in <CODE>lock</CODE> the third input to
+<CODE>cascade</CODE> is 1 rather than 0 to include the one 0-button combination
+that would not otherwise be added in.
+
+<P><H2>An Inductive Solution</H2>
+
+<P>When I wrote that program, I was pleased with myself for managing to turn
+such a messy solution into executable form, but I wasn't satisfied with
+the underlying approach.  I wanted something mathematically more elegant.
+
+<P>What made it possible for me to find the approach I wanted was the chance
+discovery that the number of combinations that use all five buttons (541)
+is half of the total number of combinations (1082).  Could this possibly be
+a coincidence, or would that have to be true for any number of buttons?
+To see that it has to be true, I used an idea from another branch of
+mathematics, <EM>set theory.</EM>  A <EM>set</EM> is any collection of things,
+in no particular order.  One can speak of the set of all the fingers on my
+left hand, or the set of all the integers, or the set of all the universities
+in cities named Cambridge.  Much of the interesting part of set theory has
+to do with the properties of infinite sets; for example, it turns out that
+the set of all the integers is the same size as the set of all the rational
+numbers, but both of these are smaller than the set of irrational numbers.
+What does it mean for one infinite set to be the same size as, or to be
+larger than, another?  The same definition works equally well for finite
+sets:  Two sets are the same size if they can be placed in
+<EM>one-to-one correspondence.</EM>  This means that you must exhibit a way to
+pair the elements of one set with the elements of the other so that each
+element of one has exactly one partner in the other.  (A set is larger than
+another if they aren't the same size, but a subset of the first is the same
+size as the second.)
+
+<P>To prove that my observation about the lock combinations has to be true
+regardless of the number of buttons, I have to exhibit a one-to-one
+correspondence between two sets: the set of all combinations using all
+the buttons of an <EM>n</EM>-button lock and the set of all combinations using
+fewer than <EM>n</EM> of the buttons.  But that's easy.  Starting with a
+combination that uses all the buttons, just eliminate the last push (one or
+more buttons pushed at the same time) to get a combination using fewer than
+all the buttons.  For example, for a five-button lock, the five-button
+combination <CODE>2 3-4 1-5</CODE> is paired with the three-button combination
+<CODE>2 3-4</CODE>.  (We have to eliminate the last <EM>push</EM> and not merely
+the last <EM>button</EM> for two reasons.  First, if we always eliminated
+exactly one button, we'd always get a four-button combination, and we want
+to pair five-button combinations with all the fewer-than-five ones.
+Second, which is the &quot;last&quot; button if the last push involves more than
+one?  Remember, <CODE>2 3-4 1-5</CODE> is the <EM>same</EM> combination as
+<CODE>2 3-4 5-1</CODE>.  But writing this combination in two different forms
+seems to pair it with two different smaller ones.  The rules of one-to-one
+correspondence say that each element of a set must have exactly one partner
+in the other set.)
+
+<P>To show that the correspondence works in both directions, start with a
+combination that doesn't use all the buttons; its partner is formed by
+adding one push at the end that contains all the missing buttons.
+For example, if we start with <CODE>1 2-5</CODE> then its partner is
+<CODE>1 2-5 3-4</CODE>.
+
+<P>I've just proved that the number of all-<EM>n</EM> combinations must be equal to
+the number of fewer-than-<EM>n</EM> combinations.  So it's not a coincidence that
+541 is half of 1082.  In order to be able to talk about these numbers more
+succinctly, I want to define
+<P><CENTER><EM>f</EM>(<EM>n</EM>) = number of <EM>n</EM>-button
+combinations of an <EM>n</EM>-button lock</CENTER><P>
+We've just proved that it's also true that
+<P><CENTER><EM>f</EM>(<EM>n</EM>) = number of fewer-than-<EM>n</EM>-button
+combinations</CENTER><P>
+Now, what does &quot;fewer than <EM>n</EM> buttons&quot; mean?  Well, there are
+combinations using no buttons, one button, two buttons, and so on up to <EM>n</EM>&minus;1
+buttons.  Let's define
+<P><CENTER><EM>g</EM>(<EM>n</EM>,<EM>i</EM>) = number of <EM>i</EM>-button
+combinations in an <EM>n</EM>-button lock</CENTER><P>
+So we can formalize the phrase &quot;fewer than <EM>n</EM>&quot; by saying
+<P><CENTER><EM>f</EM>(<EM>n</EM>) =
+<EM>g</EM>(<EM>n</EM>,0)+<EM>g</EM>(<EM>n</EM>,1)+<EM>g</EM>(<EM>n</EM>,2)+ &middot;&middot;&middot; +<EM>g</EM>(<EM>n</EM>,<EM>n</EM>&minus;1)</CENTER><P>
+Instead of using those dots in the middle, mathematicians have another
+notation for a sum of several terms like this.
+<P><CENTER><IMG SRC="math26.gif" ALT="math display"></CENTER><P>
+If you haven't seen this notation before, the &Sigma; (<EM>sigma</EM>)
+symbol is the Greek letter <EM>S,</EM> and is used to represent a <EM>S</EM>um.
+It works a little like the <CODE>for</CODE> iteration tool; the variable below the
+&Sigma; (in this case, <EM>i</EM>) takes on values from the lower limit (0) to the
+upper limit (<EM>n</EM>&minus;1), and for each of those values the expression following the
+&Sigma; is added into the sum.  The Logo equivalent would be
+
+<P><PRE>for [i 0 [:n-1]] [make &quot;sum :sum + (g :n :i)]
+</PRE>
+
+<P>The &Sigma;-expression is pronounced &quot;the sum from <EM>i</EM> equals
+zero to <EM>n</EM> minus one of <EM>g</EM> of <EM>n</EM> comma <EM>i</EM>.&quot;
+
+<P>So far, what I've done is like what I did before: dividing the set of all
+possible combinations into subsets based on the number of buttons used in
+each combination.  This is like the definition of <CODE>lock</CODE> in terms of
+<CODE>lock1</CODE>.  The next step is to see if we can find a formula for <EM>g</EM>(<EM>n</EM>,<EM>i</EM>).
+How many 3-button combinations, for example, can we make using a 5-button
+lock?  (That's <EM>g</EM>(5,3).)  There are many different ways in which I might
+try to derive a formula, but I think it will be helpful at this point to
+step back and consider my overall goal.  I started this line of reasoning
+because I'm trying to express the solution for the five-button lock in terms
+of easier solutions for smaller numbers of buttons.  That is, I'm looking
+for an inductive definition of <EM>f</EM>(<EM>n</EM>) in terms of values of <EM>f</EM> for smaller
+arguments.  I'd like to end up with a formula like
+<P><CENTER><EM>f</EM>(<EM>n</EM>) = ... <EM>f</EM>(0) ... <EM>f</EM>(1) 
+... <EM>f</EM>(<EM>n</EM>&minus;1) ...</CENTER><P>
+but I don't yet know exactly what form it will take.  So far I've written
+a formula for <EM>f</EM>(<EM>n</EM>) in terms of <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) for values of <EM>i</EM> less than <EM>n</EM>.
+It would be great, therefore, if I could express <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) in terms of
+<EM>f</EM>(<EM>i</EM>); that would give me exactly what I want.
+
+<P>To put that last sentence into words, it would be great if I could express
+the number of <EM>i</EM>-button combinations of an <EM>n</EM>-button lock in terms of the
+number of <EM>i</EM>-button combinations of an <EM>i</EM>-button lock.  For example, can I
+express the number of combinations using 3 out of 5 buttons in terms of the
+number of combinations of 3 out of 3 buttons?  Yes, I can.  The latter is
+the number of rearrangements of three buttons once we've selected the three
+buttons.  If we start with five buttons, there are <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/5choose3.gif"> possible
+sets of three buttons to choose.  For each of those <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/5choose3.gif"> sets of
+three buttons, there are <EM>f</EM>(3) ways to arrange those three buttons in a
+combination.
+
+<P>
+
+<P><P><CENTER><IMG SRC="math28.gif" ALT="math display"></CENTER><P>
+It may not be obvious why this is so.  Suppose you list all the 3-button
+combinations of a 3-button lock.  There are 13 of them, consisting of the
+numbers from 1 to 3 in various orders and with various groups connected
+by hyphens.  Those 13 combinations are also some of the 3-button combinations
+of a 5-button lock, namely, the ones in which the particular three buttons
+we chose are 1, 2, and 3.  If instead we choose a different set of three
+(out of five) buttons, that gives rise to a different set of 13 combinations.
+For example, if we choose the buttons 2, 3, and 4, we can take the original
+13 combinations and change all the 1s to 2s, all the 2s to 3s, and all the
+3s to 4s:
+
+<P><PRE>buttons:       1,2,3        2,3,4      1,4,5
+
+               1 2 3        2 3 4      1 4 5
+               1 3 2        2 4 3      1 5 4
+               2 1 3        3 2 4      4 1 5
+               2 3 1        3 4 2      4 5 1
+               3 1 2        4 2 3      5 1 4
+               3 2 1        4 3 2      5 4 1
+               1 2-3        2 3-4      1 4-5
+               2 1-3        3 2-4      4 1-5
+               3 1-2        4 2-3      5 1-4
+               1-2 3        2-3 4      1-4 5
+               1-3 2        2-4 3      1-5 4
+               2-3 1        3-4 2      4-5 1
+               1-2-3        2-3-4      1-4-5
+</PRE>
+
+<P>This table has a column for each of three possible combinations of
+five numbers three at a time.  The table could be extended to have a column
+for <EM>every</EM> such combination of numbers, and then it would contain all
+the lock combinations using three out of five buttons.  The total number of
+entries in the extended table is therefore <EM>g</EM>(5,3); the table has <EM>f</EM>(3)
+rows and <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/5choose3.gif"> columns.  So
+<P><CENTER><IMG SRC="math29.gif" ALT="math display"></CENTER><P>
+which is a particular case of the general formula above.
+
+<P>We now have a formula for <EM>f</EM>(<EM>n</EM>) in terms of all the <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) and a formula
+for <EM>g</EM>(<EM>n</EM>,<EM>i</EM>) in terms of <EM>f</EM>(<EM>i</EM>).  Combining these we have
+<P><CENTER><IMG SRC="math30.gif" ALT="math display"></CENTER><P>
+or
+<P><CENTER><IMG SRC="math31.gif" ALT="math display"></CENTER><P>
+Like any inductive definition, this one needs a special rule for the
+smallest case, from which all the others are computed:
+<P><CENTER><EM>f</EM>(0) = 1</CENTER><P>
+
+<P>The total number of combinations for an <EM>n</EM>-button lock is 2&times;<EM>f</EM>(<EM>n</EM>).
+I find this much more elegant than my original solution.  (So why didn't I
+just show you this one to begin with?  Because I never would have figured
+this one out had I not first done the enumeration of cases.  I want you to
+see how a combinatorics problem is solved, not just what the beautiful
+solution looks like.)  This formula can also be turned into a computer
+program:
+
+<P><PRE>to simplex :buttons
+output 2 * f :buttons
+end
+
+to f :n
+if equalp :n 0 [output 1]
+output cascade :n [? + ((choose :n (#-1)) * f (#-1))] 0
+end
+
+to choose :n :r
+output (perms :n :r)/(fact :r)
+end
+</PRE>
+
+<P>This program is faster as well as simpler than the other; on my
+home computer, <CODE>lock 5</CODE> takes about 4 seconds, <CODE>simplex 5</CODE> about 2 seconds.
+
+<P>The <CODE>simplex</CODE> function has no exact closed form equivalent, but it turns
+out that there is (amazingly!) a closed form definition that, when rounded
+to the nearest integer, gives the desired value:
+
+<P><PRE>to simp :n
+output round (fact :n)/(power (ln 2) (:n+1))
+end
+</PRE>
+
+<P>The <CODE>ln</CODE> function, a Logo primitive, computes the &quot;natural
+logarithm&quot; of its input; <CODE>ln 2</CODE> has the approximate value 0.69314718056.
+The <CODE>power</CODE> function of two inputs takes
+the first input to the power of the second input.  <CODE>Fact</CODE> is the
+factorial function as defined earlier in this chapter.
+
+<P>Another related programming problem is to list the actual combinations,
+rather than merely count them.  Probably the simplest way to do that is
+to use an approach similar to the one I used in the <CODE>combs</CODE> procedure
+that lists combinations of members of a list:  First use recursion to
+find the lock combinations using only the <CODE>butfirst</CODE> of the available
+buttons, then find the ways in which the <CODE>first</CODE> button can be added
+to each of them.
+
+<P><H2>Multinomial Coefficients</H2>
+
+
+<P>Earlier, in talking about Pascal's Triangle, I showed how binomial
+coefficients are related to combinations and asked you to think about
+<EM>trinomial</EM> coefficients.  What, for example, is the coefficient of
+<EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM> in the expansion of (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>)<SUP><SMALL>4</SMALL></SUP>?
+
+<P>The expansion is a sum of products; each of those products contains four
+variables (<EM>aaaa</EM>, <EM>aaab</EM>, etc.).  The ones that contribute to the <EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM>
+term are the ones with one <EM>A</EM>, two <EM>B</EM>s, and one <EM>c</EM>; these include
+<EM>abbc</EM>, <EM>bcab</EM>, <EM>cabb</EM>, and so on.  Out of the four slots for variables in
+one of those products, how many ways can we choose a slot for one <EM>A</EM>?  The
+answer is <IMG SRC="4choose1.gif">.  Having chosen one, we are left with three slots
+and we want to choose two of them for <EM>B</EM>s.  There are <IMG SRC="3choose2.gif"> ways to
+do that.  Then we have one slot left, just enough for the one <EM>c</EM>, which
+makes a trivial contribution of <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/1choose1.gif"> to the overall number of
+possibilities.  The total is <IMG SRC="4c1x3c2x1c1.gif"> or 4&times;3&times;1 or 12, and that is the coefficient of
+<EM>a</EM><EM>b</EM><SUP><SMALL>2</SMALL></SUP><EM>c</EM>.  Similarly, the coefficient of <EM>ac</EM><SUP><SMALL>3</SMALL></SUP> is <IMG SRC="4c1x3c3.gif"> or 4.
+
+<P>The same sort of argument can be used for even more complicated cases.  In
+the expansion of (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>+<EM>d</EM>+<EM>e</EM>)<SUP><SMALL>14</SMALL></SUP> what is the coefficient of <EM>a</EM><SUP><SMALL>2</SMALL></SUP><EM>b</EM><SUP><SMALL>3</SMALL></SUP><EM>c</EM><EM>d</EM><SUP><SMALL>5</SMALL></SUP><EM>e</EM><SUP><SMALL>3</SMALL></SUP>?
+It's <P><CENTER><IMG SRC="math33.gif" ALT="math display"></CENTER><P>
+
+<P>Here is a harder question:  How many terms are there in, say, (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>+<EM>d</EM>)<SUP><SMALL>7</SMALL></SUP>?
+It's easy to see that there are 4<SUP><SMALL>7</SMALL></SUP> products of four variables, but after
+the ones that are equal to each other have been combined into terms, how
+many distinct terms are there?
+
+<P>Like the Simplex lock problem, this one can probably be solved most easily
+by reducing the problem to a smaller subproblem--in other words, by an
+inductive definition.  This problem also has something in common with the
+earlier problem of listing all the combinations of a given size from a
+given list, as we did in the <CODE>combs</CODE> procedure.  Try to solve the
+problem before reading further.  (It's hard to say how another person will
+find a problem, but I think this one is easier than the Simplex one.)
+
+<P>In order to be able to express the original problem in terms of a smaller
+version, we have to generalize it.  I posed a specific problem, about the
+seventh power of the sum of four variables.  I'd like to be able to give
+the answer to that problem the name <EM>t</EM>(4,7) and try to find a way to
+express that in terms of, let's say, <EM>t</EM>(4,6).  So I'm going to define
+the function <EM>t</EM> as
+<P><CENTER><EM>t</EM>(<EM>n</EM>,<EM>k</EM>) = number of terms
+in (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>+<EM>a</EM><SUB><SMALL>2</SMALL></SUB>+
+ &middot;&middot;&middot; 
++<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL><EM>k</EM></SMALL></SUP></CENTER><P>
+(If this were a &quot;straight&quot; math book I'd cheerfully recycle the name <EM>f</EM>
+for the function, even though we had a different <EM>f</EM> in the last section,
+but I'm anticipating wanting to write a Logo program for this problem and I
+can't have two procedures named <CODE>f</CODE> in the same workspace.)
+
+<P>In writing <CODE>combs</CODE> I used the trick of dividing all possible
+combinations into two groups: those including the first member of the list
+and those not including that member.  A similar trick will be useful here;
+we can divide all the terms in an expansion into two groups.  One group will
+contain those terms that include the first variable (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>) and the other
+will contain the rest.  For example, in the original problem, <EM>a</EM><SUP><SMALL>2</SMALL></SUP><EM>b</EM><SUP><SMALL>3</SMALL></SUP><EM>d</EM><SUP><SMALL>2</SMALL></SUP> is
+a term in the first group, while <EM>c</EM><SUP><SMALL>7</SMALL></SUP> is a term in the second group.
+
+<P>A term in the first group can be divided by <EM>a</EM><SUB><SMALL>1</SMALL></SUB>; the result must be a term
+in the expansion of (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>+<EM>a</EM><SUB><SMALL>2</SMALL></SUB>+ &middot;&middot;&middot; +<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL><EM>k</EM>&minus;1</SMALL></SUP>.  How many such terms are
+there?  There are <EM>t</EM>(<EM>n</EM>,<EM>k</EM>&minus;1) of them.  So that's how many terms there are in
+the first group.
+
+<P>A term in the second group is a product of <EM>k</EM> variables <EM>not</EM>
+including <EM>a</EM><SUB><SMALL>1</SMALL></SUB>.  That means that such a term is also part of the expansion
+of (<EM>a</EM><SUB><SMALL>2</SMALL></SUB>+ &middot;&middot;&middot; +<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL><EM>k</EM></SMALL></SUP>.  How many such terms are there?  There are
+<EM>t</EM>(<EM>n</EM>&minus;1,<EM>k</EM>) of them.  Notice the difference between the two groups.  In the
+first case, we associate a term with a similar term in the expansion of an
+expression involving a <EM>smaller power</EM> of the <EM>same number</EM> of
+variables.  In the second case, we associate a term with an equal term in
+the expansion of an expression involving <EM>fewer variables</EM> taken to
+the <EM>same power.</EM>
+
+<P>Combining these two results, we see that
+<P><CENTER><EM>t</EM>(<EM>n</EM>,<EM>k</EM>) =
+<EM>t</EM>(<EM>n</EM>,<EM>k</EM>&minus;1)+<EM>t</EM>(<EM>n</EM>&minus;1,<EM>k</EM>)</CENTER><P>
+Since this is a function of two variables, it needs two &quot;stop rules,&quot; just
+like the function <IMG SRC="nchooser.gif">.  Picking these limiting cases seems much
+simpler than inventing the induction rule, but even so, it may repay some
+attention.  For the rule
+<P><CENTER><IMG SRC="math36.gif" ALT="math display"></CENTER><P>
+we ended up considering the limiting cases <EM>r</EM>=0 and <EM>r</EM>=<EM>n</EM>.  I didn't say
+anything about it at the time because I didn't want to get distracted, but
+it's not obvious why there is the asymmetry between the two variables in
+those limiting cases.  That is, why didn't I pick <EM>r</EM>=0 and <EM>n</EM>=0 as the
+limiting cases?  That would be more like what you're accustomed to in
+recursive Logo procedures, where stop rules almost always involve a
+comparison of something with zero or with the empty list.
+
+<P>The funny limiting cases for <IMG SRC="nchooser.gif"> (and the corresponding funny stop
+rules in <CODE>combs</CODE>) are related to the fact that this function is
+meaningful only when <EM>n</EM>&ge;<EM>r</EM>.  The two arguments can't be chosen
+independently.  If we didn't have the <EM>r</EM>=<EM>n</EM> limiting case, the inductive
+formula would have us compute
+<P><CENTER><IMG SRC="math37.gif" ALT="math display"></CENTER><P>
+If we define <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch2/4choose5.gif"> as zero, this equation does turn out to be true,
+but it isn't a very sensible way to compute <IMG SRC="5choose5.gif">.
+
+<P>In the case of the function <EM>t</EM>, the two arguments <EM>are</EM> independent.
+Both <EM>t</EM>(4,7) and <EM>t</EM>(7,4) are sensible things to ask for.  Therefore, we
+should use the more obvious limiting cases <EM>n</EM>=0 and <EM>k</EM>=0.  The trouble is
+that it's not obvious what the value of <EM>t</EM>(0,<EM>k</EM>) or <EM>t</EM>(<EM>n</EM>,0) should be.  The
+first of these, <EM>t</EM>(0,<EM>k</EM>), represents the number of terms in the expansion of
+()<SUP><SMALL><EM>k</EM></SMALL></SUP>--nothing to the <EM>k</EM>th power!  That seems meaningless.  On the other
+hand, <EM>t</EM>(<EM>n</EM>,0) represents the number of terms in (&sum; <EM>a</EM><SUB><SMALL><EM>i</EM></SMALL></SUB>)<SUP><SMALL>0</SMALL></SUP>, which is 1.
+Anything to the zeroth power is 1.  Does &quot;1&quot; count as a term?  It doesn't
+have any variables in it.
+
+<P>
+
+<P>One solution would be to take as limiting cases <EM>n</EM>=1 and <EM>k</EM>=1.  It's much
+easier to see what those values should be.  (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>)<SUP><SMALL><EM>k</EM></SMALL></SUP> has one term, so
+<EM>t</EM>(1,<EM>k</EM>)=1.  And (<EM>a</EM><SUB><SMALL>1</SMALL></SUB>+ &middot;&middot;&middot; +<EM>a</EM><SUB><SMALL><EM>n</EM></SMALL></SUB>)<SUP><SMALL>1</SMALL></SUP> has <EM>n</EM> terms, so <EM>t</EM>(<EM>n</EM>,1)=<EM>n</EM>.  We
+could, then, define the function <EM>t</EM> as
+<P><CENTER><IMG SRC="math38.gif" ALT="math display"></CENTER><P>
+But it is possible to figure out appropriate values for zero arguments by
+working backwards from the cases we already understand.  For example, we
+know that <EM>t</EM>(2,1) must equal 2.  But
+<P><CENTER><EM>t</EM>(2,1) = <EM>t</EM>(2,0)+<EM>t</EM>(1,1) = <EM>t</EM>(2,0)+1</CENTER><P>
+It follows that <EM>t</EM>(2,0) must be 1.  So it's reasonable to guess that
+<EM>t</EM>(<EM>n</EM>,0)=1 will work in general.  Similarly, we know that <EM>t</EM>(1,2)=1, but
+<P><CENTER><EM>t</EM>(1,2) = <EM>t</EM>(1,1)+<EM>t</EM>(0,2) = 1+<EM>t</EM>(2,0)</CENTER><P>
+Therefore <EM>t</EM>(0,2) must be 0.  We can define <EM>t</EM> as
+<P><CENTER><IMG SRC="math41.gif" ALT="math display"></CENTER><P>
+
+<P>What is <EM>t</EM>(0,0)?  The definition above contradicts itself about this.  The
+answer should be 0 because <EM>n</EM>=0 but also 1 because <EM>k</EM>=0.  This reminds me
+of the similar problem about powers of integers.  What is 0<SUP><SMALL>0</SMALL></SUP>?  In general
+0<SUP><SMALL><EM>x</EM></SMALL></SUP>=0 but <EM>x</EM><SUP><SMALL>0</SMALL></SUP>=1, for nonzero <EM>x</EM>.  There is really no &quot;right&quot; answer,
+but mathematicians have adopted the convention that 0<SUP><SMALL>0</SMALL></SUP>=1.  To make our
+definition of <EM>t</EM> truly correct I have to choose a convention for <EM>t</EM>(0,0)
+and modify the definition to reflect it:
+<P><CENTER><IMG SRC="math42.gif" ALT="math display"></CENTER><P>
+
+<P>
+
+<P>It's straightforward to translate this mathematical function definition into
+a Logo procedure:
+
+<P><PRE>to t :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE>
+
+<P>Using this function we can compute <CODE>t 4 7</CODE> and find that the
+answer to the original problem is 120.
+
+<P>(Can you write a program to display the actual expansion?  That is, it
+should print something like
+
+<P><PRE>(A+B+C+D)^7 =
+   1 A^7 +
+   7 A^6 B +
+   21 A^5 B^2 +
+   ...
+</PRE>
+
+<P>There are two parts to this problem.  One is to figure out the
+combinations of variables in the 120 terms, which can be done with a
+procedure like <CODE>combs</CODE>, and the other is to figure out the coefficients,
+which I discussed at the beginning of this section.)
+
+<P>I was introduced to this problem as a student teacher in a high school
+probability class.  The teacher gave &quot;how many terms are there in the
+expansion of (<EM>a</EM>+<EM>b</EM>+<EM>c</EM>+<EM>d</EM>)<SUP><SMALL>7</SMALL></SUP>&quot; as a quiz problem, and nobody answered it.
+In the ensuing class discussion, it turned out that she meant the students
+to answer the much easier question of how many products of seven variables
+there are.  As I noted earlier, the answer to <EM>that</EM> question is just
+4<SUP><SMALL>7</SMALL></SUP>.  But all the students interpreted the question as meaning the harder
+one we've been exploring here.  I took the problem home that evening and
+reached the point we've reached in this chapter.  I didn't think I could get
+a better answer than that until my housemate taught me about
+generating functions.  It turns out that there <EM>is</EM> a
+closed form definition for
+this function:
+<P><CENTER><IMG SRC="math43.gif" ALT="math display"></CENTER><P>
+This definition is faster to compute as well as more beautiful.
+
+<P>Once armed with the formula, it wasn't hard to invent a way to demonstrate
+that it must be correct without going through the inductive definition and
+the use of calculus.  The trick is that we must be choosing <EM>n</EM>&minus;1 somethings
+out of a possible <EM>k</EM>+<EM>n</EM>&minus;1 for each term.  What does a term look like?
+Ignoring the constant coefficient, it is the product of <EM>k</EM> (seven, in the
+specific problem given) variables, some of which may be equal.  Furthermore,
+when the terms are written in the usual way, the variables come in
+alphabetical order.  A term like <EM>a</EM><SUP><SMALL>2</SMALL></SUP><EM>b</EM><SUP><SMALL>4</SMALL></SUP><EM>d</EM> represents <EM>aabbbbd</EM>; there won't
+be a different term with the same letters in another order.  In general, the
+<EM>k</EM> variables will be some number (zero or more) of <EM>a</EM><SUB><SMALL>1</SMALL></SUB>s, then some number
+of <EM>a</EM><SUB><SMALL>2</SMALL></SUB>s, and so on.
+
+<P>Now comes the trick.  Suppose we write the string of variables with a
+&quot;wall&quot; for each change to the next letter.  So instead of <EM>aabbbbd</EM> I want
+to write <EM>aa</EM>|<EM>bbbb</EM>||<EM>d</EM>.  (There are two walls before the
+final <EM>d</EM> to reflect the fact that we skipped over <EM>c</EM>.)  In this notation
+there are always exactly <EM>n</EM>&minus;1 walls.  (That's why I chose to put the walls
+in; remember, we're looking for <EM>n</EM>&minus;1 of something.)  The term includes <EM>k</EM>
+variables and <EM>n</EM>&minus;1 walls, for a total of <EM>k</EM>+<EM>n</EM>&minus;1 symbols.
+
+<P>Once the walls are there, it really is no longer necessary to preserve the
+individual variable letters.  The sample term we've been using could just as
+well be written <EM>xx</EM>|<EM>xxxx</EM>||<EM>x</EM>.  What comes before the first
+wall is the first variable letter, and so on.  So ||<EM>xxx</EM>|<EM>xxxx</EM> represents <EM>c</EM><SUP><SMALL>3</SMALL></SUP><EM>d</EM><SUP><SMALL>4</SMALL></SUP>.  But now we're finished.  We have found a way to
+represent each possible term as a string of <EM>k</EM> copies of the letter <EM>x</EM>
+interspersed with <EM>n</EM>&minus;1 walls.  How many such arrangements are there?  How
+many ways are there to choose <EM>n</EM>&minus;1 positions for walls in a string of
+<EM>k</EM>+<EM>n</EM>&minus;1 symbols?
+
+<P>Earlier, in talking about the difference between closed form and inductive
+definitions, I suggested that the an inductive definition might be much
+easier to discover even if a closed form definition also exists.  This is a
+clear example.  If I'd given the demonstration just above, with <EM>x</EM>s and
+walls, without first showing you the more roundabout way I really discovered
+the definition, you'd rightly complain about rabbits out of hats.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch1/v3ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch3/v3ch3.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+;;; Logic problem inference system
+
+;; Establish categories
+
+to category :category.name :members
+print (list "category :category.name :members)
+if not namep "categories [make "categories []]
+make "categories lput :category.name :categories
+make :category.name :members
+foreach :members [pprop ? "category :category.name]
+end
+
+;; Verify and falsify matches
+
+to verify :a :b
+settruth :a :b "true
+end
+
+to falsify :a :b
+settruth :a :b "false
+end
+
+to settruth :a :b :truth.value
+if equalp (gprop :a "category) (gprop :b "category) [stop]
+localmake "oldvalue get :a :b
+if equalp :oldvalue :truth.value [stop]
+if equalp :oldvalue (not :truth.value) ~
+   [(throw "error (sentence [inconsistency in settruth]
+                            :a :b :truth.value))]
+print (list :a :b "-> :truth.value)
+store :a :b :truth.value
+settruth1 :a :b :truth.value
+settruth1 :b :a :truth.value
+if not emptyp :oldvalue ~
+   [foreach (filter [equalp first ? :truth.value] :oldvalue)
+            [apply "settruth butfirst ?]]
+end
+
+to settruth1 :a :b :truth.value
+apply (word "find not :truth.value) (list :a :b)
+foreach (gprop :a "true) [settruth ? :b :truth.value]
+if :truth.value [foreach (gprop :a "false) [falsify ? :b]
+                 pprop :a (gprop :b "category) :b]
+pprop :a :truth.value (fput :b gprop :a :truth.value)
+end
+
+to findfalse :a :b
+foreach (filter [not equalp get ? :b "true] peers :a) ~
+        [falsify ? :b]
+end
+
+to findtrue :a :b
+if equalp (count peers :a) (1+falses :a :b) ~
+   [verify (find [not equalp get ? :b "false] peers :a)
+           :b]
+end
+
+to falses :a :b
+output count filter [equalp "false get ? :b] peers :a
+end
+
+to peers :a
+output thing gprop :a "category
+end
+
+;; Common types of clues
+
+to differ :list
+print (list "differ :list)
+foreach :list [differ1 ? ?rest]
+end
+
+to differ1 :a :them
+foreach :them [falsify :a ?]
+end
+
+to justbefore :this :that :lineup
+falsify :this :that
+falsify :this last :lineup
+falsify :that first :lineup
+justbefore1 :this :that :lineup
+end
+
+to justbefore1 :this :that :slotlist
+if emptyp butfirst :slotlist [stop]
+equiv :this (first :slotlist) :that (first butfirst :slotlist)
+justbefore1 :this :that (butfirst :slotlist)
+end
+
+;; Remember conditional linkages
+
+to implies :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+implies1 :who2 :what2 (not :truth2) :who1 :what1 (not :truth1)
+end
+
+to implies1 :who1 :what1 :truth1 :who2 :what2 :truth2
+localmake "old1 get :who1 :what1
+if equalp :old1 :truth1 [settruth :who2 :what2 :truth2  stop]
+if equalp :old1 (not :truth1) [stop]
+if memberp (list :truth1 :who2 :what2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+if memberp (list :truth1 :what2 :who2 (not :truth2)) :old1 ~
+   [settruth :who1 :what1 (not :truth1)  stop]
+store :who1 :what1 ~
+      fput (list :truth1 :who2 :what2 :truth2) :old1
+end
+
+to equiv :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "true
+implies :who2 :what2 "true :who1 :what1 "true
+end
+
+to xor :who1 :what1 :who2 :what2
+implies :who1 :what1 "true :who2 :what2 "false
+implies :who1 :what1 "false :who2 :what2 "true
+end
+
+;; Interface to property list mechanism
+
+to get :a :b
+output gprop :a :b
+end
+
+to store :a :b :val
+pprop :a :b :val
+pprop :b :a :val
+end
+
+;; Print the solution
+
+to solution
+foreach thing first :categories [solve1 ? butfirst :categories]
+end
+
+to solve1 :who :order
+type :who
+foreach :order [type "| |   type gprop :who ?]
+print []
+end
+
+;; Get rid of old problem data
+
+to cleanup
+if not namep "categories [stop]
+ern :categories
+ern "categories
+erpls
+end
+
+;; Anita Harnadek's problem
+
+to cub.reporter
+cleanup
+category "first [Jane Larry Opal Perry]
+category "last [Irving King Mendle Nathan]
+category "age [32 38 45 55]
+category "job [drafter pilot sergeant driver]
+differ [Jane King Larry Nathan]
+says "Jane "Irving 45
+says "King "Perry "driver
+says "Larry "sergeant 45
+says "Nathan "drafter 38
+differ [Mendle Jane Opal Nathan]
+says "Mendle "pilot "Larry
+says "Jane "pilot 45
+says "Opal 55 "driver
+says "Nathan 38 "driver
+print []
+solution
+end
+
+to says :who :what1 :what2
+print (list "says :who :what1 :what2)
+xor :who :what1 :who :what2
+end
+
+;; Diane Baldwin's problem
+
+to foote.family
+cleanup
+category "when [1st 2nd 3rd 4th 5th]
+category "name [Felix Fred Frank Francine Flo]
+category "street [Field Flag Fig Fork Frond]
+category "item [food film flashlight fan fiddle]
+category "position [1 2 3 4 5]
+print [Clue 1]
+justbefore "Flag "2nd :position
+justbefore "2nd "Fred :position
+print [Clue 2]
+male [film Fig 5th]
+print [Clue 3]
+justbefore "flashlight "Fork :position
+justbefore "Fork "1st :position
+female [1st]
+print [Clue 4]
+falsify "5th "Frond
+falsify "5th "fan
+print [Clue 5]
+justbefore "Francine "Frank :position
+justbefore "Francine "Frank :when
+print [Clue 6]
+female [3rd Flag]
+print [Clue 7]
+justbefore "fiddle "Frond :when
+justbefore "Flo "fiddle :when
+print []
+solution
+end
+
+to male :stuff
+differ sentence :stuff [Francine Flo]
+end
+
+to female :stuff
+differ sentence :stuff [Felix Fred Frank]
+end
+
+;;; Combinatorics toolkit
+
+to combs :list :howmany
+if equalp :howmany 0 [output [[]]]
+if equalp :howmany count :list [output (list :list)]
+output sentence (map [fput first :list ?]
+                     combs (butfirst :list) (:howmany-1)) ~
+      (combs (butfirst :list) :howmany)
+end
+
+to fact :n
+output cascade :n [# * ?] 1
+end
+
+to perms :n :r
+if equalp :r 0 [output 1]
+output :n * perms :n-1 :r-1
+end
+
+to choose :n :r
+output (perms :n :r)/(fact :r)
+end
+
+;; The socks problem
+
+to socks :list
+localmake "total combs (expand :list) 2
+localmake "matching filter [equalp first ? last ?] :total
+print (sentence [there are] count :total [possible pairs of socks.])
+print (sentence [of these,] count :matching [are matching pairs.])
+print sentence [probability of match =] ~
+      word (100 * (count :matching)/(count :total)) "%
+end
+
+to expand :list
+if emptyp :list [output []]
+if numberp first :list ~
+   [output cascade (first :list)
+                   [fput first butfirst :list ?]
+                   (expand butfirst butfirst :list)]
+output fput first :list expand butfirst :list
+end
+
+to socktest
+localmake "first pick [brown brown brown brown brown brown 
+                       blue blue blue blue]
+localmake "second ~
+          pick (ifelse equalp :first "brown ~
+                       [[brown brown brown brown brown
+                         blue blue blue blue]] ~
+                       [[brown brown brown brown brown brown
+                         blue blue blue]])
+output equalp :first :second
+end
+
+;; The Simplex lock problem
+
+to lock :buttons
+output cascade :buttons [? + lock1 :buttons #] 1
+end
+
+to lock1 :total :buttons
+local "perms
+make "perms perms :total :buttons
+output cascade (twoto (:buttons-1)) [? + lock2 :perms #-1 1] 0
+end
+
+to lock2 :perms :links :factor
+if equalp :links 0 [output :perms/(fact :factor)]
+if equalp (remainder :links 2) 0 ~
+   [output lock2 :perms/(fact :factor) :links/2 1]
+output lock2 :perms (:links-1)/2 :factor+1
+end
+
+to twoto :power
+output cascade :power [2 * ?] 1
+end
+
+to simplex :buttons
+output 2 * f :buttons
+end
+
+to f :n
+if equalp :n 0 [output 1]
+output cascade :n [? + ((choose :n (#-1)) * f (#-1))] 0
+end
+
+to simp :n
+output round (fact :n)/(power (ln 2) (:n+1))
+end
+
+;; The multinomial expansion problem
+
+to t :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE><P>
+
+
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch1/v3ch1.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch3/v3ch3.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch3/10choose3.gif b/js/games/nluqo.github.io/~bh/v3ch3/10choose3.gif
new file mode 100644
index 0000000..c44f83e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/10choose3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/6c2x4c1.gif b/js/games/nluqo.github.io/~bh/v3ch3/6c2x4c1.gif
new file mode 100644
index 0000000..a445282
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/6c2x4c1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/6choose3.gif b/js/games/nluqo.github.io/~bh/v3ch3/6choose3.gif
new file mode 100644
index 0000000..330ea52
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/6choose3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/algs.html b/js/games/nluqo.github.io/~bh/v3ch3/algs.html
new file mode 100644
index 0000000..da1e1ce
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/algs.html
@@ -0,0 +1,2465 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 3: Algorithms and Data Structures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Algorithms and Data Structures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch03.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch2/v3ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="algs.lg"><CODE>algs</CODE></A>
+
+<P>What's wrong with this procedure?
+
+<P><PRE>to process.sentence :sent
+output fput (process.word first :sent) (process.sentence bf :sent)
+end
+</PRE>
+
+<P>If you said &quot;It's a recursive procedure without a stop rule,&quot;
+you've solved a simple problem in <EM>analysis of algorithms.</EM>  This branch
+of computer science is concerned with the <EM>correctness</EM> and the
+<EM>efficiency</EM> of programs.
+
+<P>The field is called analysis of <EM>algorithms</EM> rather than analysis of
+<EM>programs</EM> because the emphasis is on the meaning of a program (how
+you might express the program in English) and not on the details of its
+expression in a particular language.  For example, the error in the procedure
+
+<P><PRE>to process.sentence :sent
+if emptyp :sent [output []]
+output fput (process.word first :sent) (<U>process.snetence</U> bf :sent)
+end
+</PRE>
+
+<P>is just as fatal as the error in the first example, but there isn't
+much of theoretical interest to say about a misspelled procedure name.  On
+the other hand, another branch of computer science,
+<EM>program verification,</EM> is concerned
+with developing techniques to ensure that a
+computer program really does correctly express the algorithm it is meant to
+express.
+
+<P>The examples I've given so far are atypical, it's worth noting, in that you
+were able to see the errors in the procedures without having any real idea
+of what they do!  Without seeing <CODE>process.word</CODE> you can tell that this
+program is doing something or other to each word of a sentence, but you
+don't know whether the words are being translated to another language,
+converted from upper case to lower case letters, translated into a string of
+phoneme codes to be sent to a speech synthesizer, or what.  (Even what I just
+said about doing something to the words of a sentence is an inference based
+on the names of procedures and variables, which might not really reflect the
+results of the program.)  More interesting problems in analysis of
+algorithms have to do with the specific properties of particular algorithms.
+
+<P>In this chapter I discuss algorithms along with <EM>data structures,</EM> the
+different ways in which information can be represented in a computer program,
+because these two aspects of a program interact strongly.  That is, the
+choices you make as a programmer about data representation have a profound
+effect on the algorithms you can use to solve your problem.  Similarly, once
+you have chosen an algorithm, that choice determines the particular kinds of
+information your program will need to do its work.  Algorithms and data
+structures are the central concerns of software engineering, the overall
+name for the study of how to turn a problem statement into a working program
+in a way that uses both the computer and the programming staff effectively.
+
+<P><H2>Local Optimization vs. Efficient Algorithms</H2>
+
+<P>When you're trying to make a computer program run as fast as possible,
+the most obvious place to start is with the details of the instructions
+in the program.  But that's generally <EM>not</EM> the most effective
+approach.  Rethinking the big picture can give much more dramatic
+improvements.  To show you what I mean, I'll give some examples of both.
+Later I'll talk about <EM>order of growth,</EM> a more formal way to
+understand this same idea.
+
+<P>Consider the following procedure that implements
+the <EM>quadratic formula</EM>
+
+<P><CENTER><IMG SRC="qformula.gif"></CENTER>
+
+<P>This formula gives the two values of <EM>x</EM> that solve the equation
+<P><CENTER><EM>ax</EM><SUP><SMALL>2</SMALL></SUP> + <EM>bx</EM> + <EM>c</EM> = 0</CENTER><P>
+
+<P><PRE>to quadratic :a :b :c
+localmake &quot;x1 (-:b + sqrt (:b*:b - 4*:a*:c))/2*:a
+localmake &quot;x2 (-:b - sqrt (:b*:b - 4*:a*:c))/2*:a
+print (sentence [The solutions are] :x1 &quot;and :x2)
+end
+</PRE>
+
+<P>Before we talk about the efficiency of this program, is it correct?
+This is not a simple yes-or-no question.  The procedure gives the correct
+results for those quadratic equations that have two real solutions.  For
+example, the equation 2<EM>x</EM><SUP><SMALL>2</SMALL></SUP>+5<EM>x</EM>-3 = 0 has the solutions <EM>x</EM> = &minus;3 and &frac12;; the instruction <CODE>quadratic 2 5 -3</CODE> will print those solutions.
+Some quadratic equations, like <EM>x</EM><SUP><SMALL>2</SMALL></SUP>-8<EM>x</EM>+16 = 0, have only one solution; for
+these equations, <CODE>quadratic</CODE> prints the same solution twice, which is
+not exactly incorrect but still a little embarrassing.  Other equations,
+like <EM>x</EM><SUP><SMALL>2</SMALL></SUP>+1 = 0, have solutions that are complex numbers.  Depending on our
+purposes, we might want <CODE>quadratic</CODE> to print the solutions <EM>i</EM> and &minus;<EM>i</EM>
+for this equation, or we might want it to print &quot;This equation has no real
+solutions.&quot; But since most versions of Logo do not provide complex
+arithmetic, what will really happen is that we'll get the error message
+
+<P><PRE>sqrt doesn't like -1 as input.
+</PRE>
+
+<P>If <CODE>quadratic</CODE> is used as part of a larger project, getting
+the Logo error message means that the program dies altogether in this case
+without a chance to recover.  If we have several equations to
+solve, it would be better if the program could continue to the remaining
+equations even if no solution is found for one of them.  A program that
+operates correctly for the kinds of inputs that the programmer had in mind,
+but blows up when given unanticipated inputs, is said not to be <EM>
+robust;</EM> a robust program should do something appropriate even if there
+are errors in its input data.
+
+<P>But my real reason for displaying this example is to discuss its efficiency.
+It computes the expression
+
+<P><PRE>sqrt (:b*:b - 4*:a*:c)
+</PRE>
+
+<P>twice.  Multiplication is slower than addition on most computers;
+this expression involves three multiplications as well as the even slower
+square root extraction.  The program would be faster if it were written this
+way:
+
+<P><PRE>to quadratic :a :b :c
+localmake &quot;sqrt sqrt (:b*:b - 4*:a*:c)
+localmake &quot;x1 (-:b + :sqrt)/2*:a
+localmake &quot;x2 (-:b - :sqrt)/2*:a
+print (sentence [The solutions are] :x1 &quot;and :x2)
+end
+</PRE>
+
+<P>This kind of change to a program is called
+<EM>common subexpression elimination.</EM>  It's a
+pretty easy way to speed up a program;
+so easy, in fact, that some &quot;optimizing compilers&quot; for large computers do
+it automatically.  In other words, an optimizing compiler for Logo would
+treat the first version of <CODE>quadratic</CODE> as if it were written like the
+second version.  (As far as I know, nobody has actually written such a
+compiler for Logo.)
+
+<P>Common subexpression elimination is an example of <EM>local</EM> optimization.
+This means that we improved the program by paying attention to one small
+piece of it at a time.  (A less elegant name for local optimization is &quot;code
+bumming.&quot;)  Is it worth the effort?  It depends how many times this procedure
+will be run.  When I say that multiplication is slow, I mean that it takes
+a few millionths of a second.  If you are writing a <CODE>quadratic</CODE>
+procedure to do the dozen problems in your high school algebra homework, the
+extra time you spend thinking up the second version and typing it into the
+editor probably outweighs the saving of time in running the procedure.  But
+if you are trying to predict the weather and need to solve tens of thousands
+of equations, the saving may be significant.
+
+<P>If you want to write locally optimized
+Logo programs, it's important to know that <CODE>first</CODE>, <CODE>butfirst</CODE>, and
+<CODE>fput</CODE> take a constant amount of time regardless of the length of the
+input list, whereas <CODE>last</CODE>, <CODE>butlast</CODE>, and <CODE>lput</CODE> take an amount
+of time proportional to the length of the list.  If you add <EM>n</EM> items to a
+list, one by one, using <CODE>fput</CODE>, the length of time required is <EM>n</EM> times
+the constant amount of time for each item.  But if you add the same <EM>n</EM>
+items using <CODE>lput</CODE>, if the first item takes <EM>t</EM> microseconds, the last
+takes <EM>nt</EM>.  On the average, each <CODE>lput</CODE> takes something like <EM>nt</EM>/2
+microseconds, so the total time is <EM>n</EM><SUP><SMALL>2</SMALL></SUP><EM>t</EM>/2.  The gain in efficiency from
+using <CODE>fput</CODE> instead of <CODE>lput</CODE> isn't significant if your list has
+only a few items, but the gain gets more and more significant as the size of
+the list increases.  Suppose you want to create a list of the numbers from 1
+to 1000.  One straightforward way would be
+
+<P><PRE>print cascade 1000 [lput # ?] []
+</PRE>
+
+<P>On my home computer this instruction takes about 26
+seconds.<SUP>*</SUP>  If you
+just use <CODE>fput</CODE> in place of <CODE>lput</CODE> the list will come out in the
+wrong order, but it's possible to reverse the order of that list to get the
+same result as the first version:
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The actual time depends not only on what model of
+computer you have but also on how much memory and what else is in it.</SMALL></BLOCKQUOTE></SMALL><P><PRE>print reverse cascade 1000 [fput # ?] []
+</PRE>
+
+<P>You might think this would be slower, because it has the extra
+<CODE>reverse</CODE> step.  But in fact this instruction took about 12 seconds.
+(It's important that the <CODE>reverse</CODE> tool in the Berkeley Logo
+library uses <CODE>first</CODE>
+and <CODE>fput</CODE> to do its work.  If we used the more obvious
+
+<P><PRE>to reverse :list
+if emptyp :list [output []]
+output lput first :list reverse bf :list
+end
+</PRE>
+
+<P>then the elimination of <CODE>lput</CODE> in the <CODE>cascade</CODE> template
+would be offset by the <CODE>lput</CODE> in the reversal.)
+
+<P>
+At the other extreme, the broadest possible <EM>global</EM> optimization of a
+program is to think of an entirely new algorithm based on a different way of
+thinking about the original problem.  As an example, in Chapter 2 there are
+three different programs to solve the Simplex lock problem.  The first
+program, <CODE>lock</CODE>, works by enumerating explicitly all the different
+patterns of possible combinations.  That algorithm is not fundamentally
+recursive; although my Logo implementation includes recursive subprocedures,
+the number of combinations for a five-button lock is not determined on the
+basis of the number for a four-button lock.  (The program does compute the
+number of combinations that use four out of the five available buttons, but
+that isn't the same thing.)  The second program, <CODE>simplex</CODE>, is based on
+a mathematical argument relating the number of combinations to a fairly
+simple <EM>recursive function</EM>--that is, a mathematical function with an
+inductive definition.  Because the function is computationally simple, the
+intellectual energy I invested in doing the mathematics paid off with a
+significantly faster program.  The third version, <CODE>simp</CODE>, uses a closed
+form formula that solves the problem in no time!
+
+<P>To illustrate more sharply the differences among these three programs, I tried each
+of them on a ten-button version of the Simplex lock.  To compute <CODE>
+lock 10</CODE> took 260 seconds on my computer; <CODE>simplex 10</CODE> took 80 seconds; and
+<CODE>simp 10</CODE> took less than half a second.  For this size lock, understanding the
+mathematical idea of a recursive function sped up the program by a factor of
+three, and using the mathematical technique called generating functions
+achieved an additional speedup by a factor of almost 200!  What's important
+to understand about this example is that it wasn't better <EM>programming</EM>
+skill that made the difference, but greater knowledge of <EM>mathematics.</EM>
+(In the next section, though, you'll learn a programming trick that can
+sometimes achieve similar speedups.)
+
+<P>Many &quot;trick&quot; math problems involve a similar shift in thinking about the
+fundamental algorithm to be used.  For example, in Chapter 2 we computed the
+probability of picking a matching pair of socks out of a drawer containing
+six brown and four blue socks this way:
+<P><CENTER><IMG SRC="math3.gif" ALT="math display"></CENTER><P>
+Suppose we ask this question: Out of the same drawer of six browns and two
+blues, we pick <EM>three</EM> socks at random; what is the probability that
+at least two of the socks match?
+
+<P>The number of triples of socks in which at least two are brown is the number
+in which all three are brown, <IMG SRC="6choose3.gif">, plus the number in which two are
+brown and one is blue, <IMG SRC="6c2x4c1.gif">.  The number in which
+at least two are blue is, similarly, <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/4c3+4c2x6c1.gif">.  The total number of triples is of course <IMG SRC="10choose3.gif">.
+So the probability of a matching pair within the chosen triple is
+<P><CENTER><IMG SRC="math4.gif" ALT="math display"></CENTER><P>
+which is 100% probability.
+We could modify the <CODE>socks</CODE> procedure to get the same result by listing
+all the possible triples and then filtering all the ones containing a
+matching pair, using a filter like
+
+<P><PRE>to haspair :triple
+output or (memberp first :triple butfirst :triple) ~
+          (equalp (item 2 :triple) last :triple)
+end
+</PRE>
+
+<P>But the problem becomes entirely trivial if you notice that there
+are only two possible colors, so obviously there is no way that three
+randomly chosen socks can have three distinct colors!  Of course there has
+to be a matching pair within any possible triple.  A problem like this, that
+invites a messy arithmetic solution but is obvious if properly understood, is
+the mathematician's idea of a joke.  (Did you get it?)
+
+<P><H2>Memoization</H2>
+
+
+<P>Some efficiency tricks are applicable to a number of different problems and
+become part of the &quot;toolkit&quot; of any professional programmer.  One example
+
+is relevant to many inductively defined functions; the trick is to have the
+program remember the result of each invocation of the function.  For example,
+in Chapter 2 we defined the number of terms in a
+multinomial expansion to be
+
+<P><PRE>to t :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE>
+
+<P>
+
+<P>What happens when we compute <CODE>t 4 7</CODE>?
+<P><CENTER><IMG SRC="math5.gif" ALT="math display"></CENTER><P>
+Many calculations are performed repeatedly.  In the chart above I've
+underlined three places where <EM>t</EM>(3,5) is computed.  Each of those in turn
+involves repeated computation of <EM>t</EM>(3,4) and so on.  This computation took
+me about 18 seconds.
+
+<P>
+
+<P>Here is a version of <CODE>t</CODE> that uses property lists to remember all the
+values it's already computed.  This version will calculate <EM>t</EM>(3,5) only the
+first time it's needed; a second request for <EM>t</EM>(3,5) will instantly output
+the remembered value.
+
+<P><PRE>to t :n :k
+localmake &quot;result gprop :n :k
+if not emptyp :result [output :result]
+make &quot;result realt :n :k
+pprop :n :k :result
+output :result
+end
+
+to realt :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE>
+
+<P>Computing <CODE>t 4 7</CODE> isn't really a big enough problem to
+show off how much faster this version is; even the original program takes
+only 2 &frac12; seconds on my home computer.  But the amount of time
+needed grows quickly as you try larger inputs.  Using the original procedure
+from Chapter 2, my computer took just under five <EM>minutes</EM> to
+compute <CODE>t 8 10</CODE>; the program shown here took less than two <EM>
+seconds.</EM>  This program computed <CODE>t 12 12</CODE> in about three seconds;
+I estimate that the original procedure would take five <EM>hours</EM> to
+solve that problem!  (As you can imagine, I didn't try it.)
+
+<P>The memoized version of <CODE>t</CODE> has the same structure as the original.
+That is, in order to compute <CODE>t 4 7</CODE>, the program must first carry out
+the two subtasks <CODE>t 4 6</CODE> and <CODE>t 3 7</CODE>.  The only difference between
+the original version and the memoized version is that in the latter,
+whenever a second invocation is made with inputs that have already been
+seen, the result is output immediately without repeating that subtask.  Any
+recursive function can be memoized in the same way.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I've used
+property lists of numbers to hold the remembered values of the <CODE>t</CODE>
+function.  If I wanted to use the same technique for some other function in
+the same workspace, I'd have to find a way to keep the values for the two
+functions from getting in each other's way.  For example, if <EM>t</EM>(4,7)=120
+and some other function <EM>h</EM>(4,7)=83, then I might store the value
+
+<P><PRE>[t 120 h 83]
+</PRE>
+
+<P>on the appropriate property list.</SMALL></BLOCKQUOTE></SMALL><P>Sometimes, though, the same general idea--remembering the results
+of past computations--can be used more effectively by changing the
+program structure so that just the right subproblems are solved
+as they're needed to work toward the overall solution.  Rearranging
+the program structure isn't called memoization, but we're still using
+the same idea.  For example,
+the Simplex lock function
+<P><CENTER><IMG SRC="math6.gif" ALT="math display"></CENTER><P>
+from Chapter 2
+is a combination (sorry about the pun) of values of two functions.  It isn't
+exactly helpful to remember every possible value of <IMG SRC="nchoosei.gif"> because
+each value is used only once.  But the calculation of <EM>f</EM>(<EM>n</EM>) uses the entire
+<EM>n</EM>th row of Pascal's Triangle, and it's easy to compute that if we remember
+the row above it.  The values of <EM>f</EM>(<EM>i</EM>) are used repeatedly, so it makes
+sense to keep a list of them.  So my plan is to have two lists,
+the first of which is a list of values of <EM>f</EM>(<EM>i</EM>) and the second a row of
+Pascal's Triangle:
+
+<P><PRE>round               ?1           ?2
+
+  0                [1]          [1 1]
+  1              [1 1]         [1 2 1]
+  2            [3 1 1]        [1 3 3 1]
+  3         [13 3 1 1]       [1 4 6 4 1]
+  4      [75 13 3 1 1]     [1 5 10 10 5 1]
+  5  [541 75 13 3 1 1]    [1 6 15 20 15 6 1]
+</PRE>
+
+<P>The solution to the problem is twice the first member of the last
+value of <CODE>?1</CODE>.
+
+<P>Instead of starting with a request for <EM>f</EM>(5) and carrying out subtasks
+as needed, the new program will begin with <EM>f</EM>(0) and will work its way
+up to larger input values until the desired result is found.  This technique
+is called <EM>dynamic programming:</EM>
+
+<P><PRE>to simplex :buttons
+output 2 * first (cascade :buttons
+                          [fput (sumprods bf ?2 ?1) ?1] [1]
+                          [fput 1 nextrow ?2] [1 1])
+end
+
+to sumprods :a :b
+output reduce &quot;sum (map &quot;product :a :b)
+end
+
+to nextrow :combs
+if emptyp butfirst :combs [output :combs]
+output fput (sum first :combs first butfirst :combs) ~
+            nextrow butfirst :combs
+end
+</PRE>
+
+<P>I tried both versions of <CODE>simplex</CODE> for a 12-button lock.
+The version in Chapter 2 took about 5 &frac12; minutes to get the
+answer (which is that there are about 56 billion combinations); this
+version took about one second, comparable to the closed form <CODE>simp</CODE>
+procedure.
+
+<P>If you just read this program with no prior idea of what algorithm it's using, it
+must be hard to see how it reflects the original problem.  But if you think
+of it as a quasi-memoization of the earlier version it should make sense to you.
+
+<P><H2>Sorting Algorithms</H2>
+
+<P>Every textbook on algorithms uses sorting as one of its main examples.
+There are several reasons for this.  First of all, sorting is one of the
+most useful things to do with a computer, in a wide variety of settings.
+There are many different known sorting algorithms, ranging from obvious to
+subtle.  These algorithms have been analyzed with great care, so a lot is
+known about their behavior.  (What does that mean?  It means we can answer
+questions like &quot;How long does this algorithm take, on the average?&quot;
+&quot;How long does it take, at worst?&quot; &quot;If the things we're sorting are
+mostly in order to begin with, does that make it faster?&quot;)  And all this
+effort pays off, in that the cleverest algorithms really are much faster
+than the more obvious ones.
+
+<P>The problem we want to solve is to take a list in unknown order and
+rearrange it to get a new list of the same members in some standard order.
+This might be alphabetical order if the members of the list are words, or
+size order if they're numbers, or something else.  For the most part, the
+exact ordering relation isn't very important.  As long as we have a way to
+compare two items and find out which comes first (or that they're equal,
+sometimes) it doesn't matter what the details of the comparison are.  To
+make things simple, in this chapter I'll assume we're always sorting numbers.
+
+<P>Because the length of time per comparison depends on the nature of the
+things being compared, and because that length isn't really part of what
+distinguishes one sorting algorithm from another, analyses of the time taken
+by a sorting program are usually expressed not in terms of seconds but in
+terms of number of comparisons.  This measure also eliminates the effect of
+one computer being faster than another.  To help make such measurements,
+we'll compare two numbers using this procedure:
+
+<P><PRE>to lessthanp :a :b
+if not namep &quot;comparisons [make &quot;comparisons 0]
+make &quot;comparisons :comparisons+1
+output :a &lt; :b
+end
+</PRE>
+
+<P>Of course, if we want to use <CODE>&gt;</CODE> or <CODE>=</CODE> comparisons in a
+sorting algorithm, we should write analogous procedures for those.  But in
+fact I'll only need <CODE>lessthanp</CODE> for the algorithms I'm going to show you.
+After trying out a sort program, we can find out how many comparisons it
+made using this convenient little tool:
+
+<P><PRE>to howmany
+print :comparisons
+ern &quot;comparisons
+end
+</PRE>
+
+<P>After telling us the number of comparisons, this procedure erases
+the counter variable to prepare for the next experiment.
+
+<P>If you haven't studied sort algorithms before, it will be a good exercise
+for you to invent one yourself before you continue.  Your procedure <CODE>
+sort</CODE> should take a list of numbers as input, and should output a list of
+the same numbers in order from smallest to largest.
+
+<P><PRE>? <U>show sort [5 20 3 5 18 9]</U>
+[3 5 5 9 18 20]
+</PRE>
+
+<P>Notice that it's allowable for two (or more) equal numbers to
+appear in the input.
+
+<P>So that we can compare different algorithms fairly, we should try them on
+the same input data.  You can make a list of 100 random numbers this way:
+
+<P><PRE>make &quot;list cascade 100 [fput random 100 ?] []
+</PRE>
+
+<P>You should try out both your sort procedures and mine on your
+random list.  In case you want to try your algorithm on my data, to
+compare the exact numbers of comparisons needed, here is the list I used:
+
+<P><PRE>[11 41 50 66 41 61 73 38  2 94 43 55 24  1 77 77 13  2 93 35
+ 43 69  9 46 88 20 43 73 11 74 69 33 28  4  5  1 15 17 13 94
+ 88 42 12 31 67 42 30 30 13 91 31  8 55  6 31 84 57 50 50 31
+ 36 52  5 12 10 19 69  0  9 81 62 14 39 54 45 72 18 47 48 35
+ 76 44 77 34 75 52 61 86 34 44 64 53 25 39  4 55 55 54 53 64]
+</PRE>
+
+<P>Notice in passing that this is a list of 100 random numbers, but
+not a list of the first 100 numbers in random order.  Some numbers, like 43,
+appear more than once in the list, while others don't appear at all.  This
+is perfectly realistic for numbers that occur in real life, although of
+course some situations give rise to lists of <EM>unique</EM> items.
+
+<P><H2>Sorting by Selection</H2>
+
+
+<P>Although there are many known sorting algorithms, most fall into two
+main groups.  There are the ones that order the input items one at a time
+and there are the ones that divide the problem into roughly equal-sized
+smaller problems.  I'll show you one of each.  Within a group, the
+differences between algorithms have to do with details of exactly how the
+problem is divided into pieces, what's where in computer memory, and so on.
+But these details are generally much less important than the basic division
+between the two categories.  If you took my advice and wrote your own sort
+procedure, and if you hadn't studied sorting before, the one you wrote is
+almost certainly in the first category.
+
+<P>My sample algorithm in the first group is a <EM>selection</EM> sort.
+Expressed in words, the algorithm is this:  First find the smallest number,
+then find the next smallest, and so on.  This idea can be put in recursive
+form; the output from the procedure should be a list whose first member is
+the smallest number and whose remaining elements are the sorted version of
+the other numbers.  I'll show you two versions of this algorithm: first a
+straightforward but inefficient one, and then a version that's improved in
+speed but not quite so obvious.  Here's the first version:
+
+<P><PRE>to ssort :list
+if emptyp :list [output []]
+localmake &quot;smallest reduce &quot;min :list
+output fput :smallest (ssort remove.once :smallest :list)
+end
+
+to remove.once :item :list
+if equalp :item first :list [output butfirst :list]
+output fput first :list (remove.once :item butfirst :list)
+end
+</PRE>
+
+<P>In this version of <CODE>ssort</CODE>, we start by finding the
+smallest number in the list.  Then we remove that number from the
+list, sort what's left, and put the smallest number back at the front
+of the sorted list.  The only slight complication is that I had to
+write my own variant of <CODE>remove</CODE> that, unlike the standard Berkeley
+Logo library version, removes only one copy of the chosen number from
+the list, just in case the same number appears more than once.
+
+<P>By using <CODE>min</CODE> to find the smallest number, I've interfered with
+my goal of counting the number of comparisons, but I didn't worry about
+that because I'm about to rewrite <CODE>ssort</CODE> anyway.  The problem is
+that this version goes through the list of numbers twice for each
+invocation, first to find the smallest number and then again to remove
+that number from the list that will be used as input to the recursive
+call.  The program will be much faster if it does the finding and the
+removing all at once.  The resulting procedure is a little harder to
+read, but it should help if you remember that it's trying to do the same
+job as the original version.
+
+<P><PRE>to ssort :list
+if emptyp :list [output []]
+output ssort1 (first :list) (butfirst :list) []
+end
+
+to ssort1 :min :in :out
+if emptyp :in [output fput :min ssort :out]
+if lessthanp :min (first :in) ~
+   [output ssort1 :min (butfirst :in) (fput first :in :out)]
+output ssort1 (first :in) (butfirst :in) (fput :min :out)
+end
+</PRE>
+
+<P><CODE>Ssort</CODE> is invoked once for each time a smallest number must
+be found.  For each of those iterations, <CODE>ssort1</CODE> is invoked once for
+each member of the still-unsorted list; the numbers in the list are moved
+from <CODE>:in</CODE> to <CODE>:out</CODE> except that the smallest-so-far is singled out
+in <CODE>:min</CODE>.
+
+<P>Suppose we try out <CODE>ssort</CODE> on our list of 100 numbers.  How many
+comparisons will be needed?  To find the smallest of 100 numbers we have to
+make 99 comparisons; the smallest-so-far must be compared against each of
+the remaining ones.  To find the next smallest requires 98 comparisons, and
+so on.  Finally we have two numbers remaining to be sorted and it takes one
+comparison to get them in order.  The total number of comparisons is
+<P><CENTER>99+98+97+ &middot;&middot;&middot; +2+1 = 4950</CENTER><P>
+It makes no difference what order the numbers were in to begin with, or
+whether some of them are equal, or anything else about the input data.  It
+takes 4950 comparisons for <CODE>ssort</CODE> to sort 100 numbers, period.  You can
+try out the program on various lists of 100 numbers to make sure I'm right.
+
+<P>In general, if we want to sort a list of length <EM>n</EM> with <CODE>ssort</CODE> the
+number of comparisons required is the sum of the integers from 1 to <EM>n</EM>&minus;1.
+It turns out that there is a closed form definition for this sum:
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/sumints.gif"></CENTER><P>
+
+<P>Selection sort uses these three steps:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pull out the smallest value.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort the other values.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the smallest one at the front.
+
+<P></TABLE><P>
+
+<P>It's the first of those steps that does the comparisons.  A similar
+but different algorithm is <EM>insertion sort,</EM> which defers the
+comparisons until the last step:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pull out any old value (such as the <CODE>first</CODE>).
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort the other values.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the chosen one where it belongs, in order.
+
+<P></TABLE><P>
+
+<P>Try writing a procedure <CODE>isort</CODE> to implement this
+algorithm.  How many comparisons does it require?  You'll find that
+for this algorithm the answer depends on the input data.  What is the
+smallest possible number of comparisons?  The largest number?  What
+kinds of input data give rise to these extreme values?
+
+<P><H2>Sorting by Partition</H2>
+
+<P>There is one fundamental insight behind all methods for sorting with fewer
+comparisons:  Two small sorting jobs are faster than one large one.
+Specifically, suppose we have 100 numbers to sort.  Using <CODE>ssort</CODE>
+requires 4950 comparisons.  Instead, suppose we split up the 100 numbers
+into two groups of 50.  If we use <CODE>ssort</CODE> on each group, each will
+require 1225 comparisons; the two groups together require twice that, or
+2450 comparisons.  That's about half as many
+comparisons as the straight <CODE>ssort</CODE> of 100 numbers.
+
+<P>But this calculation underestimates how much time we can save using this
+insight, because the same reasoning applies to each of those groups of 50.
+We can split each into two groups of 25.  Then how many comparisons will be
+required altogether?
+
+<P>The basic idea we'll use is to pick some number that we think is likely to
+be a median value for the entire list; that is, we'd like half the numbers
+to be less than this partition value and half to be greater.  There are many
+possible ways to choose this partition value; I'm going to take the average
+of the first and last numbers of the (not yet sorted!) input.  Then we run
+through the input list, dividing it into two smaller pieces by comparing
+each number against the partition value.  (Notice that <CODE>ssort</CODE> compares
+pairs of numbers within the input list; the partition sort compares one
+number from the list against another number that might or might not itself
+be in the list.)  We use the same technique recursively to sort each of the
+two sublists, then append the results.
+
+<P>Note the similarities and differences between this selection sort algorithm:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pull out the smallest value.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort the other values.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the smallest one at the front.
+
+<P></TABLE><P>
+
+<P>and the following <EM>partition sort</EM> algorithm:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Divide the input into the small-value half and the large-value half.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort each half separately.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the sorted small values in front of the sorted large ones.
+
+<P></TABLE><P>
+
+<P>Again, I'll write this program more than once, first in an overly simple version
+and then more realistically.  Here's the simple one:
+
+<P><PRE>to psort :list
+if (count :list) &lt; 2 [output :list]
+localmake &quot;split guess.middle.value :list
+output sentence psort filter [? &lt; :split] :list ~
+                psort filter [not (? &lt; :split)] :list
+end
+
+to guess.middle.value :list
+output ((first :list) + (last :list)) / 2
+end
+</PRE>
+
+<P>To minimize the number of comparisons, we want to split the input list
+into two equal-size halves.  It's important to note that this program
+is only guessing about which value of <CODE>:split</CODE> would achieve that
+balanced splitting.  You may wonder why I didn't take the average of
+all the numbers in the list.  There are two reasons.  One is that that
+would add a lot of time to the sorting process; we'd have to look at
+every number to find the average, then look at every number again to do
+the actual splitting.  But a more interesting reason is that the average
+isn't quite what we want anyway.  Suppose we are asked to sort this
+list of numbers:
+
+<P><PRE>[3 2 1000 5 1 4]
+</PRE>
+
+<P>The average of these numbers is about 169.  But if we use
+that value as the split point, we'll divide the list into these two
+pieces:
+
+<P><PRE>[3 2 5 1 4]  and  [1000]
+</PRE>
+
+<P>Not a very even division!  To divide this list of six values
+into two equal pieces, we'd need a split point of 3 &frac12;.  In
+general, what we want is the <EM>median</EM> value rather than the
+<EM>average</EM> value.  And if you think about it, you pretty much have
+to have the numbers already sorted in order to find the median.<SUP>*</SUP>  So we just try to make a good guess that
+doesn't take long to compute.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>That
+isn't quite true; there is a clever algorithm that can find the median
+after only a partial sorting of the values.  But it's true enough that
+we can't use a sorting algorithm whose first step requires that we've
+already done some sorting.</SMALL></BLOCKQUOTE></SMALL><P>Just as in the case of selection sort, one problem with this simple program
+is that it goes through the input list twice, once for each of the calls to
+<CODE>filter</CODE>.  And the call to <CODE>count</CODE> in the end test adds a third walk
+through the entire list.  Here's a version that fixes those inefficiencies:
+
+<P><PRE>to psort :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+localmake &quot;split ((first :list) + (last :list)) / 2
+output psort1 :split :list [] []
+end
+
+to psort1 :split :in :low :high
+if emptyp :in [output sentence (psort :low) (psort :high)]
+if lessthanp first :in :split ~
+   [output psort1 :split (butfirst :in) (fput first :in :low) :high]
+output psort1 :split (butfirst :in) :low (fput first :in :high)
+end
+</PRE>
+
+<P>This version of <CODE>psort</CODE> has one good attribute and one bad
+attribute.  The good attribute is that it's very cleanly organized.  You can
+see that it's the job of <CODE>psort</CODE> to choose the partition value and the
+job of <CODE>psort1</CODE> to divide the list in two parts based on comparisons
+with that value.  The bad attribute is that it doesn't <EM>quite</EM> work as
+it stands.
+
+<P>As for any recursive procedure, it's important that the input get smaller
+for each recursive invocation.  If not, <CODE>psort</CODE> could end up invoking
+itself over and over with the same input.  It's very easy to see that <CODE>
+ssort</CODE> avoids that danger, because the input list is shorter by exactly one
+member for each recursive invocation.  But <CODE>psort</CODE> divides its input
+into two pieces, each of which ought to be about half the length of the
+original if we're lucky.  We're lucky if the partition value we choose is,
+in fact, the median value of the input list.  If we're less lucky, the two
+parts might be imbalanced, say &frac14; of the members below the partition and
+&frac34; of them above it.  Can we be <EM>so</EM> unlucky that <EM>all</EM> of
+the input numbers are on the same side of the partition?  See if you can
+think of a case in which this will happen.
+
+<P>The partition value is chosen as the average of two members of the input
+list.  If those two members (the first and last) are unequal, then one of
+them must be less than the partition value and the other greater.  So there
+will be at least one number on each side of the partition.  But if the two
+averaged numbers are equal, then the partition value will be equal to both
+of them.  Each of them will be put in the <CODE>high</CODE> bucket.  If all the
+other numbers in the list are also greater than or equal to the partition,
+then they'll all end up in the <CODE>high</CODE> bucket, and nothing will be
+accomplished in the recursion step.  The simplest failing example is trying
+to sort a list of numbers all of which are equal, like
+
+<P><PRE>? <U>show psort [4 4 4 4 4]</U>
+</PRE>
+
+<P>We could take various approaches to eliminating this bug.  See how
+many ways you can think of, and decide which you like best, before reading
+further.
+
+<P>Since the problem has to do with the choice of partition value, you could
+imagine using a more complicated means to select that value.  For example,
+you could start with the first member of the input list, then look through
+the list for another member not equal to the first.  When you find one,
+average the two of them and that's the partition value.  If you get all the
+way to the end of the list without finding two unequal members, declare the
+list sorted and output it as is.  The trouble with this technique is that
+many extra comparisons are needed to find the partition value.  Those
+comparisons don't really help in ordering the input, but they do add to the
+time taken just as much as the &quot;real&quot; comparisons done later.
+
+<P>Another approach is to say that since the problem only arises if the first
+and last input members are equal, we should treat that situation as a
+special case.  That is, we'll add an instruction like
+
+<P><PRE>if equalp first :list last :list [...]
+</PRE>
+
+<P>Again, this approach adds a comparison that doesn't really help to
+sort the file, although it's better than the first idea because it only adds
+one extra comparison per invocation instead of perhaps several.
+
+<P>A more straightforward approach that might seem to make the program more
+efficient, rather than less, is to divide the list into <EM>three</EM>
+buckets, <CODE>low</CODE>, <CODE>high</CODE>, and <CODE>equal</CODE>.  This way, the problem gets
+shorter faster, since the <CODE>equal</CODE> bucket doesn't have to be sorted
+recursively; it's already in order.  The trouble is that it takes two
+comparisons, one for equality and one for <CODE>lessthanp</CODE>, to know how to
+direct each list member into a three-way split.  Some computers can compare
+numbers once and branch in different directions for less, equal, or greater;
+one programming language, Fortran, includes that kind of three-way branching
+through an &quot;arithmetic IF&quot; statement that accepts different instructions
+for the cases of a given quantity being less than, equal to, or greater than
+zero.  But in Logo we'd have to say
+
+<P><PRE>if lessthanp first :in :split [...]
+if equaltop first :in :split [...]
+</PRE>
+
+<P>with two comparisons for each list member.  (I'm imagining that
+<CODE>equaltop</CODE> would keep track of the number of comparisons just as
+<CODE>lessthanp</CODE> does.)
+
+<P>What I chose was to do the first <CODE>lessthanp</CODE> test for the list in <CODE>
+psort</CODE> instead of <CODE>psort1</CODE>, and use it to ensure that either the first
+or the last member of the list starts out the <CODE>low</CODE> bucket.
+
+<P><PRE>to psort :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+localmake &quot;split ((first :list) + (last :list)) / 2
+if lessthanp first :list :split ~
+   [output psort1 :split (butfirst :list) (list first :list) []]
+output psort1 :split (butlast :list) (list last :list) []
+end
+</PRE>
+
+<P><CODE>Psort1</CODE> is unchanged.
+
+<P>How many comparisons should <CODE>psort</CODE> require to sort 100 numbers?  Unlike
+<CODE>ssort</CODE>, its exact performance depends on the particular list of numbers
+given as input.  But we can get a general idea.  The first step is to divide
+the 100 numbers into two buckets, using 100 comparisons against the
+partition value.  The second step divides each of the buckets in two again.
+We can't say, in general, how big each bucket is; but we do know that each
+of the original 100 numbers has to be in one bucket or the other.  So each
+of 100 numbers will participate in a comparison in this second round also.
+The same argument applies to the third round, and so on.  Each round
+involves 100 comparisons.  (This isn't quite true toward the end of the
+process.  When a bucket only contains one number, it is considered sorted
+without doing any comparisons.  So as the buckets get smaller, eventually
+some of the numbers &quot;drop out&quot; of the comparison process, while others are
+still not in their final position.)
+
+<P>Each round involves 100 comparisons, more or less.  How many rounds are
+there?  This is where the original ordering of the input data makes itself
+most strongly felt.  If we're lucky, each round divides each bucket exactly
+in half.  In that case the size of the buckets decreases uniformly:
+
+<P><PRE>round    size
+
+  1       100
+  2        50
+  3        25
+  4        12,13
+  5         6,7
+  6         3,4
+  7         1,2
+</PRE>
+
+<P>There is no round 8, because by then all of the buckets would be
+of length 1 and there is no work left to do.  So if all goes well we'd
+expect to make about 700 comparisons, really a little less because by round
+7 some of the numbers are already in length-1 buckets.  Maybe 650?
+
+<P>What is the <EM>worst</EM> case?  That would be if each round divides the
+numbers into buckets as unevenly as possible, with one number in one bucket
+and all the rest in the other.  In that case it'll take 99 rounds to get all
+the numbers into length-1 buckets.  You may be tempted to estimate 9900
+comparisons for that situation, but in fact it isn't quite so bad, because
+at each round one number falls into a length-1 bucket and drops out of the
+sorting process.  So the first round requires 100 comparisons, but the
+second round only 99, the third 98, and so on.  This situation is very much
+like the way <CODE>ssort</CODE> works, and so we'd expect about 5000 comparisons.
+
+<P>Now try some experiments.  Try <CODE>psort</CODE> on your random list, then try to
+find input lists that give the best and worst possible results.
+
+<P><CODE>Psort</CODE> required 725 comparisons for my random list.  That's somewhat
+more than we predicted for the best case, but not too much more.  <CODE>
+Psort</CODE> seems to have done pretty well with this list.  The simplest
+worst-case input is one in which all the numbers are the same; I said
+
+<P><PRE>make &quot;bad cascade 100 [fput 20 ?] []
+</PRE>
+
+<P>to make such a list.  <CODE>Psort</CODE> required 5049 comparisons to
+sort this list, slightly <EM>worse</EM> than <CODE>ssort</CODE> at 4950 comparisons.
+
+<P>What would a best-case input look like?  It would divide evenly at each
+stage; that is, the median value at each stage would be the average of the
+first and last values.  The simplest list that should meet that criterion is
+a list of all the numbers from 1 to 100 in order:
+
+<P><PRE>make &quot;inorder cascade 100 [lput # ?] []
+</PRE>
+
+<P>(Or you could use the <CODE>reverse</CODE> trick discussed earlier, but
+for only 100 numbers it didn't seem worth the extra typing to me.)  Using
+<CODE>psort</CODE> to sort this list should require, we said, somewhere around 650
+to 700 comparisons.  In fact it took 734 comparisons when I tried it,
+slightly <EM>more</EM> than my randomly ordered list (725 comparisons).
+
+<P>Even 734 comparisons isn't terrible by any means, but when an algorithm
+performs worse than expected, a true algorithm lover wants to know why.
+Test cases like these can uncover either inefficiencies in the fundamental
+algorithm or else ways in which the actual computer program doesn't live up
+to the algorithm as described in theoretical language.  If we could &quot;tune
+up&quot; this program to sort <CODE>:inorder</CODE> in fewer than 700 comparisons, the
+change might well improve the program's performance for any input.  See if
+you can figure out what the problem is before reading further.  You can try
+having <CODE>psort</CODE> print out its inputs each time it's called, as a way to
+help gather information.
+
+<P>Here's a very large hint.  I tried using the original version of <CODE>
+psort</CODE>, before fixing the bug about the recursion sometimes leaving all the
+numbers in one basket, and it sorted <CODE>:inorder</CODE> in only 672 comparisons.
+(I knew the bug wouldn't make trouble in this case because none of the
+numbers in this particular input list are equal.)  Can you devise a better
+<CODE>psort</CODE> that both works all the time and performs optimally for the
+best-case input?
+
+<P>This partition sorting scheme is essentially similar to a very well-known
+algorithm named quicksort, invented by C. A. R. Hoare.
+Quicksort includes many improvements over this algorithm, not primarily in
+reducing the number of comparisons but in decreasing the overhead time by,
+for example, exchanging pairs of input items in their original memory
+locations instead of making copies of sublists.  Quicksort also switches to
+a more straightforward <CODE>ssort</CODE>-like algorithm for very small input lists,
+because the benefit of halving the problem is outweighed by the greater
+complexity.  (In fact, for a two-item input, <CODE>ssort</CODE> makes one
+comparison and <CODE>psort</CODE> two.)
+
+<P>Here's the partition sort algorithm again:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Divide the input into the small-value half and the large-value half.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort each half separately.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the sorted small values in front of the sorted large ones.
+
+<P></TABLE><P>
+
+<P>The idea of cutting the problem in half is also used in
+the following algorithm, called <EM>mergesort:</EM>
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Divide the input arbitrarily into two equal size pieces.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort each half separately.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><EM>Merge</EM> the two sorted pieces by comparing values.
+
+<P></TABLE><P>
+
+<P>In a way, mergesort is to partition sort as insertion sort
+is to selection sort.  Both insertion sort and mergesort defer the
+comparisons of numbers until the final step of the algorithm.
+
+<P>There is one important way in which mergesort is better than partition
+sort.  Since mergesort doesn't care how the input values are separated, we
+can ensure that the two pieces are each exactly half the size of the input.
+Therefore, the number of comparisons needed is always as small as possible;
+there are no bad inputs.  Nevertheless, quicksort is more widely used than
+mergesort, because the very best implementations of quicksort seem to
+require less overhead time, for the average input, than the best
+implementations of mergesort.
+
+<P>If you want to write a mergesort program, the easiest way to divide a
+list into two equal pieces is to select every other member, so the
+odd-position members are in one half and the even-position members
+in the other half.
+
+<P><H2>Order of Growth</H2>
+
+<P>I've mentioned that the complete quicksort algorithm includes several
+optimization strategies to improve upon the partition sort I've
+presented here.  How important are these strategies?  How much does
+overhead contribute to the cost of a program?  I did some experiments
+to investigate this question.
+
+<P>First I timed <CODE>psort</CODE> and <CODE>ssort</CODE> with inputs of length 300.
+Here are the results:
+
+<P><CENTER><TABLE>
+<TR><TH>program<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH>comparisons<TH>time<TH>comparisons<TH> per second
+<TR><TD align="center"><CODE>psort</CODE><TD><TD align="right">2940&nbsp;&nbsp;&nbsp;&nbsp;<TD align="right">29 seconds<TD align="right">100
+<TR><TD align="center"><CODE>ssort</CODE><TD><TD align="right">44850&nbsp;&nbsp;&nbsp;&nbsp;<TD align="right">313 seconds<TD align="right">143
+</TABLE></CENTER>
+
+<P><CODE>Ssort</CODE> seems to have much less overhead, since it can do
+more comparisons per second than <CODE>psort</CODE>.  Nevertheless, <CODE>psort</CODE>
+always seems to be faster, for every size input I tried.  The number
+of comparisons outweighs the overhead.  (By the way, these numbers don't
+measure how fast the computer can compare two numbers!  A typical computer
+could perform more than a million comparisons per second, if only
+comparisons were involved.  Most of the time in these experiments is
+actually going into the process by which the Logo interpreter figures out
+what the instructions in the program mean.  Because Berkeley Logo is
+an interpreter, this figuring-out process happens every time an instruction
+is executed.  By contrast, I tried <CODE>ssort</CODE> on a list of length 300 in
+Object Logo, a compiled version in which each instruction is figured out
+only once, and the total time was 3.6 seconds.)
+
+<P>I wanted to give local optimization the best possible chance to win the
+race, and so I decided to make selection sort as fast as I could, and
+partition sort as slow as I could.  I modified <CODE>ssort</CODE> to use the
+Logo primitive <CODE>lessp</CODE> for comparison instead of doing the extra
+bookkeeping of <CODE>lessthanp</CODE>, and I replaced <CODE>psort</CODE> with this
+implementation:
+
+<P><PRE>to slowsort :list
+if (count :list) &lt; 2 [output :list]
+localmake &quot;split (reduce &quot;sum :list)/(count :list)
+output (sentence slowsort filter [? &lt; :split] :list
+                 filter [? = :split] :list
+                 slowsort filter [? &gt; :split] :list)
+end
+</PRE>
+
+<P>This version examines every member of the input list six times
+on each recursive call!  (<CODE>Count</CODE> is invoked twice; <CODE>reduce</CODE>
+looks at every list member once; and <CODE>filter</CODE> is called three times
+to do the actual partition.)  Under these conditions I was able to get
+<CODE>ssort</CODE> to win the race, but only for very small inputs:
+
+<P><CENTER><TABLE>
+<TR><TH>program<TH>&nbsp;&nbsp;&nbsp;<TH>20 numbers<TH>&nbsp;&nbsp;&nbsp;<TH>100 numbers<TH>&nbsp;&nbsp;&nbsp;<TH>300 numbers
+<TR><TD><CODE>slowsort</CODE><TD><TD align="right">2.7 seconds<TD><TD align="right">18 seconds<TD><TD align="right">63 seconds
+<TR><TD><CODE>ssort</CODE><TD><TD align="right">1.2 seconds<TD><TD align="right">20 seconds<TD><TD align="right">182 seconds
+</TABLE></CENTER>
+
+<P><CODE>Ssort</CODE> wins when sorting 20 numbers, but both programs
+take less than three seconds.  For 100 numbers, <CODE>slowsort</CODE> is
+already winning the race, and its lead grows as the input list grows.
+This is a common pattern:  For small amounts of data, when the program is
+fast enough no matter how you write it, local optimization can win the race,
+but once the problem is large enough so that you actually care about
+efficiency, choosing a better overall algorithm is always more important.
+(Of course the very best results will come from choosing a good algorithm
+<EM>and</EM> optimizing the program locally.)
+
+<P>What does &quot;a better algorithm&quot; actually mean?  How do we measure the
+quality of an algorithm?  We've made a good start by counting the number
+of comparisons required for our two sorting algorithms, but there is a
+formal notation that can make the issues clearer.
+
+<P>Earlier I said that for a list of <EM>n</EM> numbers, <CODE>ssort</CODE> makes
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/sumints.gif"></CENTER><P>
+comparisons.  But in a sense this tells us more than we want to
+know, like saying that a certain program took 1,243,825 microseconds instead
+of saying that it took somewhat over a second.  The important thing to say
+about <CODE>ssort</CODE> is that the number of comparisons is roughly proportional
+to <EM>n</EM><SUP><SMALL>2</SMALL></SUP>; that is, doubling the size of the input list will quadruple the
+time needed to sort the list.  More formally, we say that the time required
+for selection sorting is O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>), pronounced &quot;big-oh of <EM>n</EM><SUP><SMALL>2</SMALL></SUP>&quot; or
+&quot;order <EM>n</EM><SUP><SMALL>2</SMALL></SUP>.&quot;  This is an abbreviation for the statement, &quot;for large enough <EM>n</EM>,
+the time is bounded by <EM>n</EM><SUP><SMALL>2</SMALL></SUP> times a constant.&quot;
+The part about &quot;for large enough <EM>n</EM>&quot; is important because the running
+time for some algorithm might, for example, involve a large constant setup
+time.  For small <EM>n</EM> that setup time might contribute more to the overall
+time required than the part of the algorithm proportional<SUP>*</SUP> to <EM>n</EM><SUP><SMALL>2</SMALL></SUP>, but
+once <EM>n</EM> becomes large enough, the <EM>n</EM><SUP><SMALL>2</SMALL></SUP> part will overtake any constant.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Strictly
+speaking, the fact that an algorithm's time requirement is O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) doesn't
+mean that it's even approximately proportional to <EM>n</EM><SUP><SMALL>2</SMALL></SUP>, because O(...)
+only establishes an upper bound.  The time requirement could be proportional
+to <EM>n</EM>, which would be better than <EM>n</EM><SUP><SMALL>2</SMALL></SUP>, and still be O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>).  But
+usually people use O(...) notation to mean that no smaller
+order of growth would work, even though there's an official notation
+with that meaning, &Theta;(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>), pronounced &quot;big theta.&quot;</SMALL></BLOCKQUOTE></SMALL><P>I'd like to have a similar representation, O(something), for the
+number of comparisons used by <CODE>psort</CODE> in the typical case.  We said that
+for 100 numbers, each round of sorting involves about 100 comparisons, and
+the number of rounds required is the number of times you have to divide 100
+by 2 before you get down to 1, namely between 6 and 7.  The number of
+comparisons expected is the product of these numbers.  In the general case,
+the first number is just <EM>n</EM>.  But what is the general formula for the
+number of times you have to divide <EM>n</EM> by 2 to get 1?  The answer is log<SUB><SMALL>2</SMALL></SUB>&nbsp;<EM>n</EM>.  For example, if we had 128 numbers in the list instead of 100, we would
+require exactly 7 rounds (in the best case) because 2<SUP><SMALL>7</SMALL></SUP>&nbsp;=&nbsp;128 and so
+log<SUB><SMALL>2</SMALL></SUB>&nbsp;128&nbsp;=&nbsp;7.  (By the way, log<SUB><SMALL>2</SMALL></SUB>&nbsp;100&nbsp;&cong;&nbsp;6.65, so the
+theoretical best case for 100 numbers is 665 comparisons.)
+
+<P>In general, all the obvious sorting algorithms are O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) and all the
+clever ones are O(<EM>n</EM>&nbsp;log&nbsp;<EM>n</EM>).<SUP>*</SUP>  (I don't
+have to say  O(<EM>n</EM>&nbsp;log<SUB><SMALL>2</SMALL></SUB>&nbsp;<EM>n</EM>) because the difference between logarithms to
+different bases is just multiplication by a constant factor, which doesn't
+count in O(...) notation, just as I don't have to worry about the fact
+that the formula for <CODE>ssort</CODE> comparisons is nearer <EM>n</EM><SUP><SMALL>2</SMALL></SUP>/2 than <EM>n</EM><SUP><SMALL>2</SMALL></SUP>.)
+By the way, I haven't really <EM>proven</EM> that <CODE>psort</CODE> is O(<EM>n</EM>&nbsp;log&nbsp;<EM>n</EM>)
+in the <EM>typical</EM> case, only that it is in the best case.  It's much
+harder to prove things about the typical (or average) performance of any
+sorting algorithm, because what is an &quot;average&quot; input list?  For some
+algorithms there is no proven formula for the average run time, but only the
+results of experiments with many randomly chosen lists.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Don Knuth has written an O(<EM>n</EM><SUP><SMALL>3</SMALL></SUP>)
+
+sort program, just as an example of especially bad programming.</SMALL></BLOCKQUOTE></SMALL><P>An O(<EM>n</EM>) algorithm is called <EM>linear</EM> and an O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) one <EM>
+quadratic.</EM>  O(<EM>n</EM>&nbsp;log&nbsp;<EM>n</EM>) is in between those, better than quadratic but not
+as good as linear.  What other orders of growth are commonly found?  As one
+example, the pre-memoized procedures for the <CODE>t</CODE> and <CODE>simplex</CODE>
+functions in Chapter 2 have time requirements that are O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>); these are
+called <EM>exponential</EM> algorithms.  This means that just adding one
+to <EM>n</EM> makes the program take twice as long!  The experimental results I gave
+earlier agree with this formula: <CODE>simplex 10</CODE> took 80 seconds, while
+<CODE>simplex 12</CODE> took 5&nbsp;&frac12; minutes, about four times as long.
+<CODE>Simplex 16</CODE> would take over an hour.  (Start with 80 seconds, and
+double it six times.)  The memoized versions in this chapter are O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>)
+(can you prove that?), which is much more manageable.  But for some
+<EM>really</EM> hard problems there is no known way to make them any
+faster than O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>);
+problems like that are called <EM>intractable,</EM> while ones that
+are merely polynomial--O(<EM>n</EM><SUP><SMALL><EM>i</EM></SMALL></SUP>) for any constant <EM>i</EM>--are called <EM>
+tractable.</EM>
+
+<P><H2>Data Structures</H2>
+
+
+<P>One of the reasons computers are so useful is that they can contain
+a tremendous amount of information.  An important part of writing
+a large computer program is figuring out how to organize the information
+used in the program.  Most of the time, a program doesn't have to
+deal with a bunch of unrelated facts, like &quot;Tomatoes are red&quot;
+and &quot;7 times 8 is 56.&quot;  Instead there will be some kind of uniformity,
+or natural grouping, in the information a program uses.
+
+<P>We'll see, too, that the data structures you choose for your program affect
+the algorithms available to you.  Organizing your data cleverly can reduce
+the execution time of your procedures substantially.
+
+<P><H2>Data Structures in Real Life</H2>
+
+<P>Why should there be different kinds of organization?  It might help
+to look at some analogies with data structures outside of computers.
+First of all, think about your personal address book.  It probably
+has specific pages reserved for each letter of the alphabet.  Within
+a letter, the names and addresses of people starting with that letter
+are arranged in no particular order; you just add a new person in
+the first free space on the page.
+
+<P>Now think about the printed telephone directory for your city.  In
+this case the names are not arranged randomly within each letter;
+they're in strict alphabetical order.  In computer science terminology,
+the printed directory is a <EM>sorted list,</EM> while your personal
+directory is a <EM>hash table.</EM>
+
+<P>Obviously, if the entries in the printed directory weren't in order
+it would take much too long to find an address.  You can get away
+with random ordering within each letter in your personal directory
+because you know a small enough number of people that it doesn't take
+too long to look through each one.  But you probably do know enough
+people to make the separate page for each letter worthwhile, even
+though the page for Q may be practically empty.  By using separate
+pages for each letter, with unused slots on each page reserved
+for expansion, you are <EM>spending space</EM> to <EM>buy time.</EM>
+That is, your address book is bigger than it would be if it were just
+one long list, but looking up a number is faster this way.  This
+tradeoff between time and space is typical of computer
+programming problems also.
+
+<P>Why don't you keep your personal directory in strict alphabetical order,
+like the printed phone book?  If you did that, looking up a number would be
+even faster.  The problem is that <EM>adding</EM> a new number would be
+terribly painful; you'd have to erase all the names on the page below where
+the new name belongs and rewrite each of them one line below where it
+was.<SUP>*</SUP>  In this case there is a tradeoff between <EM>
+storage time</EM> and <EM>retrieval time;</EM> you pay a small
+price in retrieval time to avoid a large price in storage time.  This, too,
+is a common aspect of data structure design in computer programs.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Why doesn't the phone company have to do that whenever they get
+a new customer?  The answer is that they maintain the directory information
+in two forms.  The printed directory is the <EM>external</EM> representation,
+used only for looking up information; inside their computers they use an
+<EM>internal</EM> representation that allows for easier insertion of new
+entries.</SMALL></BLOCKQUOTE></SMALL><P>Other kinds of real-life data structures also have computer analogues.
+If your desk looks like mine, with millions of little slips of paper
+all over the place, it is what computer scientists call a <EM>
+heap.</EM><SUP>*</SUP>
+This might be an appropriate data structure for those cases in
+which the program must deal with a large mass of unrelated facts.
+On the other hand, in a large business office there will be a <EM>
+hierarchical</EM> filing system.  A file cabinet labeled &quot;Personnel
+Records&quot; might contain a drawer labeled &quot;Inactive A-H&quot;; that drawer
+would contain a file folder for each former employee whose name starts
+with an appropriate letter.  This kind of hierarchy might be represented
+as a <EM>tree</EM> in a computer program.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Unfortunately, there are two things called a &quot;heap&quot; in
+computer science.  I'm thinking of the storage allocation heap, not the
+special tree structure used in the &quot;heapsort&quot; algorithm.</SMALL></BLOCKQUOTE></SMALL><P><H2>Trees</H2>
+
+<P>We've used the idea of trees before.  In Volume 1, the program to solve
+pitcher pouring problems was designed in terms of a tree of possible
+solution steps, although that tree was not represented as actual data
+in the program.  In Volume 2, I wrote <CODE>tree.map</CODE> as an example of a
+higher order function operating on trees in which the leaf nodes are
+words and the branch nodes are phrases.  In this chapter we'll work
+toward a general representation of trees as an abstract data type.
+
+<P>Here is a hierarchical grouping of some of the world's cities:
+
+<P><CENTER><IMG SRC="worldtree.gif" ALT="figure: worldtree"></CENTER>
+
+<P>Recall that a diagram like this is called a tree because it resembles a real
+tree turned upside-down.  Each place where a word or phrase appears in the
+tree is called a <EM>node.</EM> At the top of the diagram is the <EM>
+root node</EM> (<CODE>world</CODE>). The lines between nodes are called <EM>
+branches.</EM> The cities, which do not have branches extending below them,
+are called <EM>leaf nodes.</EM> The in-between nodes, the countries
+and provinces, are called <EM>branch nodes.</EM> (The root node is
+also considered a branch node since it, too, has branches below it.)  This
+tree tells us that Toronto is in Ontario, which is in Canada, which is in the
+world.
+
+<P>A tree is a very general data structure because its shape is very flexible.
+For example, in the part of this tree that represents Canada I've included
+a level of tree structure, representing the provinces, that isn't
+included in the subtree that represents France.  As we'll see later, some
+algorithms deal with restricted categories of trees.  For example, a <EM>
+
+binary</EM> tree is a tree with at most two branches below each branch node.
+
+<P>So far this data structure is just a graphic representation on paper.  There
+are many ways in which a tree can be implemented in a computer program.
+Let's say that I want to represent the tree of cities in a computer so that
+I can ask questions from this data base.  That is, I'd like to write a
+program that will allow interactions like
+
+<P><PRE>? <U>show locate &quot;Montreal</U>
+[world Canada Quebec Montreal]
+</PRE>
+
+<P>Let's pick a particular way to represent a tree in Logo.  (I
+should warn you that later in the chapter I'm going to invent different
+representations, but I want to start with a simple one to meet our
+immediate needs.  So what you're about to see is not the final version of
+these procedures.)  Here's
+the way I'm going to do it:  Each branch node will be represented as a Logo
+variable whose name is the name of the node, containing as its value a list
+of the names of the nodes immediately below it.  For example, this tree will
+include a variable named <CODE>France</CODE> with the value
+
+<P><PRE>[Paris Dijon Avignon]
+</PRE>
+
+<P>A leaf node is just a word that appears in a node list but isn't
+the name of a variable.  For a branch node, <CODE>thing</CODE> of the node's name
+will provide a list of the names of its children.  I can set up the tree
+with this procedure:
+
+<P><PRE>to worldtree
+make &quot;world [France China Canada]
+make &quot;France [Paris Dijon Avignon]
+make &quot;China [Beijing Shanghai Guangzhou Suzhou]
+make &quot;Canada [Ontario Quebec Manitoba]
+make &quot;Ontario [Toronto Ottawa Windsor]
+make &quot;Quebec [Montreal Lachine]
+make &quot;Manitoba [Winnipeg]
+end
+</PRE>
+
+<P>In principle, <CODE>locate</CODE> is a lot like <CODE>filter</CODE>, in the sense that
+we're looking through a data structure for something that meets a given
+condition.  But the implementation is a bit trickier than looking through
+a sequential list, because each invocation gives rise to several recursive
+invocations (one per child), not merely one recursive invocation as usual.
+The program will be easier to understand if we introduce the term
+<EM>forest,</EM> which means a list of trees.
+
+<P><PRE>to locate :city
+output locate1 :city &quot;world
+end
+
+to locate1 :city :subtree
+if equalp :city :subtree [output (list :city)]
+if not namep :subtree [output []]
+localmake &quot;lower locate.in.forest :city (thing :subtree)
+if emptyp :lower [output []]
+output fput :subtree :lower
+end
+
+to locate.in.forest :city :forest
+if emptyp :forest [output []]
+localmake &quot;child locate1 :city first :forest
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest
+end
+
+? <U>show locate &quot;Shanghai</U>
+[world China Shanghai]
+? <U>show locate &quot;Montreal</U>
+[world Canada Quebec Montreal]
+</PRE>
+
+<P>Once we've set up this data base, we can write procedures to ask it other
+kinds of questions, too.
+
+<P><PRE>to cities :tree
+if not namep :tree [output (list :tree)]
+output map.se [cities ?] thing :tree
+end
+
+? <U>show cities &quot;France</U>
+[Paris Dijon Avignon]
+? <U>show cities &quot;Canada</U>
+[Toronto Ottawa Windsor Montreal Lachine Winnipeg]
+</PRE>
+
+<P><H2>Improving the Data Representation</H2>
+
+<P>There's a problem with the representation I've chosen for this tree.
+Suppose we want to expand the data base to include the city of Quebec.
+This city is in the province of Quebec, so all we have to do is add the name
+to the appropriate list:
+
+<P><PRE>make &quot;Quebec [Montreal Quebec Lachine]
+</PRE>
+
+<P>If you try this, however, you'll find that <CODE>locate</CODE> and <CODE>
+cities</CODE> will no longer work.  They'll both be trapped in infinite loops.
+
+<P>The problem with this program can't be fixed just by changing the program.
+It's really a problem in the way I decided to represent a tree.  I said, &quot;a
+leaf node is just a word that appears in a node list but isn't the name of a
+variable.&quot;  But that means there's no way to allow a leaf node with the same
+name as a branch node.  To solve the problem I have to rethink the
+conventions I use to represent a tree.
+
+<P>Being lazy, I'd like to change as little as possible in the program, so I'm
+going to try to find a new representation as similar as possible to the old
+one.  Here's my idea: In my mind I associate a <EM>level</EM> with each
+node in the tree.  The node <CODE>world</CODE> is at level 1, <CODE>France</CODE> and
+<CODE>Canada</CODE> at level 2, and so on.  The names of the variables used to hold
+the contents of a node will be formed from the node name and the level:
+<CODE>world1</CODE>, <CODE>France2</CODE>, <CODE>Ontario3</CODE>, and so on.  This solves the
+problem because the node for Quebec province will be a branch node by virtue
+of the variable <CODE>Quebec3</CODE>, but the node for Quebec city will be a leaf
+node because there will be no <CODE>Quebec4</CODE> variable.
+
+<P>As it turns out, though, I have to change the program quite a bit to make
+this work.  Several procedures must be modified to take the level number
+as an additional input.  Also, since the variable that holds the information
+about a place is no longer exactly named with the place's name, <CODE>cities</CODE>
+has some extra work to do, just to find the node whose cities we want to
+know.  It can almost use <CODE>locate</CODE> for this purpose, but with a slight
+wrinkle:  If we ask for the cities in Quebec, we mean Quebec province, not
+Quebec city.  So we need a variant of <CODE>locate</CODE> that finds the node
+highest up in the tree with the desired place name.  I gave subprocedure
+<CODE>locate1</CODE> an extra input, named <CODE>highest</CODE>, that's <CODE>true</CODE> if we want
+the highest matching tree node (when called from <CODE>cities</CODE>) or <CODE>false</CODE>
+if we want a matching leaf node (when called from <CODE>locate</CODE>).
+
+<P><PRE>to worldtree
+make &quot;world1 [France China Canada]
+make &quot;France2 [Paris Dijon Avignon]
+make &quot;China2 [Beijing Shanghai Guangzhou Suzhou]
+make &quot;Canada2 [Ontario Quebec Manitoba]
+make &quot;Ontario3 [Toronto Ottawa Windsor]
+make &quot;Quebec3 [Montreal Quebec Lachine]
+make &quot;Manitoba3 [Winnipeg]
+end
+
+to locate :city
+output locate1 :city &quot;world 1 &quot;false
+end
+
+to locate1 :city :subtree :level :highest
+localmake &quot;name (word :subtree :level)
+if and :highest equalp :city :subtree [output (list :city)]
+if not namep :name ~
+   [ifelse equalp :city :subtree
+           [output (list :city)]
+           [output []]]
+localmake &quot;lower locate.in.forest :city (thing :name) :level+1 :highest
+if emptyp :lower [output []]
+output fput :subtree :lower
+end
+
+to locate.in.forest :city :forest :level :highest
+if emptyp :forest [output []]
+localmake &quot;child locate1 :city first :forest :level :highest
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest :level :highest
+end
+
+to cities :tree
+localmake &quot;path locate1 :tree &quot;world 1 &quot;true
+if emptyp :path [output []]
+output cities1 :tree count :path
+end
+
+to cities1 :tree :level
+localmake &quot;name (word :tree :level)
+if not namep :name [output (list :tree)]
+output map.se [(cities1 ? :level+1)] thing :name
+end
+
+? <U>show locate &quot;Quebec</U>
+[world Canada Quebec Quebec]
+? <U>show cities &quot;Canada</U>
+[Toronto Ottawa Windsor Montreal Quebec Lachine Winnipeg]
+</PRE>
+
+<P>This new version solves the Quebec problem.  But I'm still not satisfied.
+I'd like to add the United States to the data base.  This is a country whose
+name is more than one word.  How can I represent it in the tree structure?
+The most natural thing would be to use a list: <CODE>[United States]</CODE>.
+Unfortunately, a list can't be the name of a variable in Logo.  Besides,
+now that I've actually written the program using this representation I see
+what a kludge it is!
+
+<P><H2>Trees as an Abstract Data Type</H2>
+
+<P>My next idea for representing a tree is to abandon the use of a separate
+variable for each node; instead I'll put the entire tree in one big list.
+A node will be a list whose <CODE>first</CODE> is the datum at that node and whose
+<CODE>butfirst</CODE> is a list of children of the node.  So the entire tree will be
+represented by a list like this:
+
+<P><PRE>[world [France ...] [[United States] ...] [China ...] [Canada ...]]
+</PRE>
+
+<P>The datum at each node can be either a word or a list.
+
+<P>But this time I'm going to be smarter than before.  I'm going to recognize
+that the program I'm writing should logically be separated into two parts:
+the part that implements the <EM>tree</EM> data type, and the part that uses
+a tree to implement the data base of cities.  If I write procedures like
+<CODE>locate</CODE> and <CODE>cities</CODE> in terms of general-purpose tree subprocedures
+like <CODE>leafp</CODE>, a predicate that tells whether its input node is a leaf
+node, then I can change my mind about the implementation of trees (as I've
+done twice already) without changing that part of the program at all.
+
+<P>I'll start by implementing the abstract data type.  I've decided that a tree
+will be represented as a list with the datum of the root node as its <CODE>
+first</CODE> and the subtrees in the <CODE>butfirst</CODE>.  To make this work I need
+<EM>selector</EM> procedures:
+
+<P><PRE>to datum :node
+output first :node
+end
+
+to children :node
+output butfirst :node
+end
+</PRE>
+
+<P>and a <EM>constructor</EM> procedure to build a node out of its
+pieces:
+
+<P><PRE>to tree :datum :children
+output fput :datum :children
+end
+</PRE>
+
+<P>Selectors and constructors are the main procedures needed to define any data
+structure, but there are usually some others that can be useful.  For the
+tree, the main missing one is <CODE>leafp</CODE>.
+
+<P><PRE>to leafp :node
+output emptyp children :node
+end
+</PRE>
+
+<P>Now I can use these tools to write the data base procedures.
+
+<P><PRE>to locate :city
+output locate1 :city :world &quot;false
+end
+
+to locate1 :city :subtree :wanttree
+if and :wanttree (equalp :city datum :subtree) [output :subtree]
+if leafp :subtree ~
+   [ifelse equalp :city datum :subtree
+           [output (list :city)]
+           [output []]]
+localmake &quot;lower locate.in.forest :city (children :subtree) :wanttree
+if emptyp :lower [output []]
+output ifelse :wanttree [:lower] [fput (datum :subtree) :lower]
+end
+
+to locate.in.forest :city :forest :wanttree
+if emptyp :forest [output []]
+localmake &quot;child locate1 :city first :forest :wanttree
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest :wanttree
+end
+
+to cities :name
+output cities1 (finddatum :name :world)
+end
+
+to cities1 :subtree
+if leafp :subtree [output (list datum :subtree)]
+output map.se [cities1 ?] children :subtree
+end
+
+to finddatum :datum :tree
+output locate1 :name :tree &quot;true
+end
+</PRE>
+
+<P>Once again, <CODE>cities</CODE> depends on a variant of <CODE>locate</CODE> that
+outputs the subtree below a given name, instead of the usual <CODE>locate</CODE>
+output, which is a list of the names on the path from <CODE>world</CODE> down to
+a city.  But instead of having <CODE>cities</CODE> call <CODE>locate1</CODE> directly,
+I decided that it would be more elegant to provide a procedure <CODE>
+finddatum</CODE> that takes a datum and a tree as inputs, whose output is the
+subtree below that datum.
+
+<P>In <CODE>cities1</CODE>, the expression
+
+<P><PRE>(list datum :subtree)
+</PRE>
+
+<P>turns out to be equivalent to just <CODE>:subtree</CODE> for the case of
+a leaf node.  (It is only for leaf nodes that the expression is evaluated.)
+By adhering to the principle of data abstraction I'm making the program work
+a little harder than it really has to.  The advantage, again, is that this
+version of <CODE>cities</CODE> will continue working even if we change the
+underlying representation of trees.  The efficiency cost is quite low;
+changing the expression to <CODE>:subtree</CODE> is a local optimization comparable
+to the common subexpression elimination we considered early in the chapter.
+
+<P>I also have to revise the procedure to set up the tree.  It's going to
+involve many nested invocations of <CODE>tree</CODE>, like this:
+
+<P><PRE>to worldtree
+make &quot;world tree &quot;world
+                 (list (tree &quot;France
+                             (list (tree &quot;Paris [])
+                                   (tree &quot;Dijon [])
+                                   (tree &quot;Avignon []) ) )
+                       (tree &quot;China
+                             (list ...
+</PRE>
+
+<P>and so on.  I can shorten this procedure somewhat by inventing
+an abbreviation for making a subtree all of whose children are leaves.
+
+<P><PRE>to leaf :datum
+output tree :datum []
+end
+
+to leaves :leaves
+output map [leaf ?] :leaves
+end
+
+to worldtree
+make &quot;world
+     tree &quot;world
+          (list (tree &quot;France leaves [Paris Dijon Avignon])
+                (tree &quot;China leaves [Beijing Shanghai Guangzhou Suzhou])
+                (tree [United States]
+                      (list (tree [New York]
+                                  leaves [[New York] Albany Rochester
+                                          Armonk] )
+                            (tree &quot;Massachusetts
+                                  leaves [Boston Cambridge Sudbury
+                                          Maynard] )
+                            (tree &quot;California
+                                  leaves [[San Francisco] Berkeley
+                                          [Palo Alto] Pasadena] )
+                            (tree &quot;Washington
+                                  leaves [Seattle Olympia] ) ) )
+                (tree &quot;Canada
+                      (list (tree &quot;Ontario
+                                  leaves [Toronto Ottawa Windsor] )
+                            (tree &quot;Quebec
+                                  leaves [Montreal Quebec Lachine] )
+                            (tree &quot;Manitoba leaves [Winnipeg]) ) ) )
+end
+
+? <U>worldtree</U>
+? <U>show cities [United States]</U>
+[[New York] Albany Rochester Armonk Boston Cambridge Sudbury Maynard
+ [San Francisco] Berkeley [Palo Alto] Pasadena Seattle Olympia]
+? <U>show locate [Palo Alto]</U>
+[world [United States] California [Palo Alto]]
+</PRE>
+
+<P><H2>Tree Modification</H2>
+
+
+<P>So far, so good.  But the procedure <CODE>worldtree</CODE> just above is very
+error-prone because of its high degree of nesting.  In the earlier versions
+I could create the tree a piece at a time instead of all at once.  In a
+practical data base system, people should be able to add new information at
+any time, not just ask questions about the initial information.  That is,
+I'd like to be able to say
+
+<P><PRE>addchild :world (tree &quot;Spain leaves [Madrid Barcelona Orense])
+</PRE>
+
+<P>to add a subtree to the world tree.  New nodes should be possible
+not only at the top of the tree but anywhere within it:
+
+<P><PRE>addchild (finddatum &quot;Canada :world) (tree [Nova Scotia] leaves [Halifax])
+</PRE>
+
+<P>Most versions of Logo do not provide tools to add a new member to an
+existing list.  We could write a program that would make a new copy of the
+entire tree, adding the new node at the right place in the copy, so that
+<CODE>addchild</CODE> would take the form
+
+<P><PRE>make &quot;world newcopy :world ...
+</PRE>
+
+<P>but there are two objections to that.  First, it would be quite
+slow, especially for a large tree.  Second, it would work only if I refrain
+from assigning subtrees as the values of variables other than <CODE>world</CODE>.
+That is, I'd like to be able to say
+
+<P><PRE>? <U>make &quot;Canada finddatum &quot;Canada :world</U>
+? <U>addchild :Canada (tree [Nova Scotia] leaves [Halifax])</U>
+? <U>show locate &quot;Halifax</U>
+[world Canada [Nova Scotia] Halifax]
+</PRE>
+
+<P>Even though I've added the new node to the tree <CODE>:Canada</CODE>, it
+should also be part of <CODE>:world</CODE> (which is where <CODE>locate</CODE> looks)
+because <CODE>:Canada</CODE> is a subtree of <CODE>:world</CODE>.  Similarly, I'd like to
+be able to add a node to the Canadian subtree of <CODE>:world</CODE> and have it
+also be part of <CODE>:Canada</CODE>.  That wouldn't be true if <CODE>addchild</CODE>
+makes a copy of its tree input instead of modifying the existing tree.
+
+<P>I'm going to solve this problem two ways.  In the Doctor project in
+Volume 2 of this series, you learned that Berkeley Logo does include
+primitive procedures that allow the modification of an existing list
+structure.  I think the most elegant solution to the <CODE>addchild</CODE> problem
+is the one that takes advantage of that feature.  But I'll also show a
+solution that works in any version of Logo, to make the point that list
+mutation isn't absolutely necessary; we can achieve the same goals, with
+the same efficiency, by other means.  First here's the list mutation
+version of <CODE>addchild</CODE>:
+
+<P><PRE>to addchild :tree :child
+.setbf :tree (fput :child butfirst :tree)
+end
+
+? <U>make &quot;GB leaf [Great Britain]</U>
+? <U>addchild :world :GB</U>
+? <U>addchild :GB tree &quot;England leaves [London Liverpool Oxford]</U>
+? <U>addchild :GB tree &quot;Scotland leaves [Edinburgh Glasgow]</U>
+? <U>addchild :GB tree &quot;Wales leaves [Abergavenny]</U>
+? <U>show locate &quot;Glasgow</U>
+[world [Great Britain] Scotland Glasgow]
+</PRE>
+
+<P>Just as <CODE>tree</CODE> is a constructor for the tree data type, and <CODE>
+children</CODE> is a selector, <CODE>addchild</CODE> is called a <EM>mutator</EM> for
+this data type.  Notice, by the way, that <CODE>:GB</CODE>, which was originally
+built as a leaf node, can be turned into a branch node by adding children to
+it; <CODE>addchild</CODE> is not limited to nodes that already have children.
+
+<P>The solution using <CODE>.setbf</CODE> is elegant because I didn't have to change
+any of the procedures I had already written; this version of <CODE>addchild</CODE>
+works with the same tree implementation I had already set up.  But suppose
+we didn't have <CODE>.setbf</CODE> or didn't want to use it.  (As we'll see shortly,
+using list mutators does open up some possible pitfalls.)  We can write a
+mutator for the tree abstract data type even if we don't have mutators for
+the underlying Logo lists!  The secret is to take advantage of variables,
+whose values can be changed--mutated--in any version of Logo.
+
+<P>To make this work I'm going to go back to a tree representation somewhat
+like the one I started with, in which each node is represented by a separate
+variable.  But to avoid the problems I had earlier about Quebec and San
+Francisco, the variable name won't be the datum it contains.  Instead I'll
+use a <EM>generated symbol,</EM> an arbitrary name made up by the program.
+(This should sound familiar.  I used the same trick in the Doctor project,
+and there too it was an alternative to list mutation.)
+
+<P>This is where my use of data abstraction pays off.  Look how little I have
+to change:
+
+<P><PRE>to tree :datum :children
+localmake &quot;node gensym
+make :node fput :datum :children
+output :node
+end
+
+to datum :node
+output first thing :node
+end
+
+to children :node
+output butfirst thing :node
+end
+
+to addchild :tree :child
+make :tree lput :child thing :tree
+end
+</PRE>
+
+<P>That's it!  <CODE>Leafp</CODE>, <CODE>finddatum</CODE>, <CODE>locate</CODE>, <CODE>
+cities</CODE>, and <CODE>worldtree</CODE> all work perfectly without modification,
+even though I've made a profound change in the actual representation of
+trees.  (Try printing <CODE>:world</CODE> in each version.)
+
+<P><CODE>Addchild</CODE> is only one of the possible ways in which I might want to
+modify a tree structure.  If we were studying trees more fully, I'd create
+tool procedures to delete a node, to move a subtree from one location in the
+tree to another, to insert a new node between a parent and its children, and
+so on.  There are also many more questions one might want to ask about a
+tree.  How many nodes does it have?  What is its maximum depth?
+
+<P>I've mentioned general tree manipulation tools.  There are also still some
+unresolved issues about the particular use of trees in the city data base.
+For example, although the problem of Quebec city and Quebec province is
+under control, what if I want the data base to include Cambridge, England
+as well as Cambridge, Massachusetts?  What should <CODE>locate</CODE> do if given
+<CODE>Cambridge</CODE> as input?
+
+<P>But instead of pursuing this example further I want to develop another
+example, in which trees are used for a very different purpose.  In the city
+data base, the tree represents a <EM>hierarchy</EM> (Sudbury is <EM>part of</EM>
+Massachusetts); in the example below, a tree is used to represent an <EM>
+ordering</EM> of data, as in the sorting algorithms discussed earlier.
+
+<P><H2>Searching Algorithms and Trees</H2>
+
+<P>Forget about trees for a moment and consider the general problem of <EM>
+searching</EM> through a data base for some piece of information.  For
+example, suppose you want a program to find the city corresponding to a
+particular telephone area code.  That is, I want to be able to say
+
+<P><PRE>? <U>print listcity 415</U>
+San Francisco
+</PRE>
+
+<P>The most straightforward way to do this is to have a list
+containing code-city pairs, like this:
+
+<P><PRE>make &quot;codelist [[202 Washington] [206 Seattle] [212 New York]
+   [213 Los Angeles] [215 Philadelphia] [303 Denver] [305 Miami]
+   [313 Detroit] [314 St. Louis] [401 Providence] [404 Atlanta]
+   [408 Sunnyvale] [414 Milwaukee] [415 San Francisco] [504 New Orleans]
+   [608 Madison] [612 St. Paul] [613 Kingston] [614 Columbus]
+   [615 Nashville] [617 Boston] [702 Las Vegas] [704 Charlotte]
+   [712 Sioux City] [714 Anaheim] [716 Rochester] [717 Scranton]
+   [801 Salt Lake City] [804 Newport News] [805 Ventura] [808 Honolulu]]
+</PRE>
+
+<P>This is a list of lists.  Each sublist contains one pairing of an
+area code with a city.  We can search for a particular area code by going
+through the list member by member, comparing the first word with the desired
+area code.  (By the way, in reality a single area code can contain more than
+one city, and vice versa, but never mind that; I'm trying to keep this
+simple.)  In accordance with the idea of data abstraction, we'll start with
+procedures to extract the area code and city from a pair.
+
+<P><PRE>to areacode :pair
+output first :pair
+end
+
+to city :pair
+output butfirst :pair
+end
+</PRE>
+
+<P>The city is the <CODE>butfirst</CODE> rather than the <CODE>last</CODE> to
+accommodate cities with names of more than one word.
+
+<P>The iteration tool <CODE>find</CODE> does exactly what's needed, going through a
+list member by member until it finds one that matches some criterion:
+
+<P><PRE>to listcity :code
+output city find [equalp :code areacode ?] :codelist
+end
+</PRE>
+
+<P>Time for a little analysis of algorithms.  What is the time
+
+behavior of this <EM>linear</EM> search algorithm as the data base gets
+bigger?  As for the case of the sorting algorithms, I'll concentrate on the
+number of comparisons.  How many times is <CODE>equalp</CODE> invoked?  The best
+case is if we're looking for the first code in the list, 202.  In this case
+only one comparison is made.  The worst case is if we're looking for the
+last code in the list, 808, or if we're looking for an area code that isn't
+in the list at all.  This requires 31 comparisons.  (That's how many
+code-city pairs happen to be in this particular data base.)  On the average
+this algorithm requires a number of comparisons half way between these
+extremes, or 16.  As we increase the size of the data base, the number of
+comparisons required grows proportionally; this algorithm is O(<EM>n</EM>).
+
+<P>The area codes in <CODE>:codelist</CODE> are in ascending order.  If you were
+looking through the list yourself, you wouldn't look at every entry one
+after another; you'd take advantage of the ordering by starting around the
+middle and moving forward or backward depending on whether the area code you
+
+found was too low or too high.  That's called a <EM>binary</EM> search
+algorithm.  <CODE>Listcity</CODE>, though, doesn't take
+advantage of the ordering in the list; the pairs could just as well be
+jumbled up and <CODE>listcity</CODE> would be equally happy.
+
+<P>Binary search works by starting with the median-value area code in the data
+base.  If that's the one we want, we're finished; otherwise we take the
+higher or lower half of the remaining codes and examine the median value of
+that subset.  One way we could implement that algorithm would be to use a
+binary tree to represent the code-city pairs:
+
+<P>
+
+<P><CENTER><IMG SRC="codetree.gif" ALT="figure: codetree"></CENTER>
+
+<P>
+
+<P>(In this picture I've just shown the area codes, but of course the
+actual data structure will have a code-city pair at each node.)
+
+<P>We could construct the tree from scratch, using <CODE>tree</CODE> and <CODE>leaves</CODE>
+as I did earlier, but since we already have the pairs in the correct sorted
+order it's easier to let the computer do it for us:
+
+<P><PRE>to balance :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output leaf first :list]
+output balance1 (int (count :list)/2) :list []
+end
+
+to balance1 :count :in :out
+if equalp :count 0 ~
+   [output tree (first :in) (list balance reverse :out
+                                  balance butfirst :in )]
+output balance1 (:count-1) (butfirst :in) (fput first :in :out)
+end
+</PRE>
+
+<P>In this program I'm using the trick of building <CODE>:out</CODE> using
+<CODE>fput</CODE> instead of <CODE>lput</CODE> and then using <CODE>reverse</CODE> to get the
+left branch back in ascending order, to make the construction a little
+faster.
+
+<P><PRE>make &quot;codetree balance :codelist
+</PRE>
+
+<P>will generate the tree.
+
+<P>Now we're ready to write <CODE>treecity</CODE>, the tree-based search program
+analogous to <CODE>listcity</CODE> for the linear list.
+
+<P><PRE>to treecity :code
+output city treecity1 :code :codetree
+end
+
+to treecity1 :code :tree
+if emptyp :tree [output [000 no city]]
+localmake &quot;datum datum :tree
+if :code = areacode :datum [output :datum]
+if :code &lt; areacode :datum [output treecity1 :code lowbranch :tree]
+output treecity1 :code highbranch :tree
+end
+
+to lowbranch :tree
+if leafp :tree [output []]
+output first children :tree
+end
+
+to highbranch :tree
+if leafp :tree [output []]
+output last children :tree
+end
+
+? <U>print treecity 415</U>
+San Francisco
+</PRE>
+
+<P><CODE>Treecity</CODE> gives the same output as <CODE>listcity</CODE>, but it's
+faster.  At worst it makes two comparisons (for equal and less than) at each
+level of the tree.  This tree is five levels deep, so if the input area code
+is in the tree at all we'll make at most 9 comparisons, compared to 31 for
+<CODE>listcity</CODE>.  The average number is less.  (How much less?)  The
+difference is even more striking for larger data bases; if the number of
+pairs is 1000, the worst-case times are 1000 for <CODE>listcity</CODE> and 19 for
+<CODE>treecity</CODE>.
+
+<P>In general the depth of the tree is the number of times you can divide the
+number of pairs by two.  This is like the situation we met in analyzing the
+partition sort algorithm; the depth of the tree is the log base two of the
+number of pairs.  This is an O(log&nbsp;<EM>n</EM>) algorithm.
+
+<P>The procedures <CODE>lowbranch</CODE> and <CODE>highbranch</CODE> are data abstraction at
+work.  I could have used <CODE>first children :tree</CODE> directly in <CODE>
+treecity1</CODE>, but this way I can change my mind about the representation of
+the tree if necessary.  In fact, in a practical program I would want to use
+a representation that allows a node to have a right child (a <CODE>
+highbranch</CODE>) without having a left child.  Also, <CODE>lowbranch</CODE> and <CODE>
+highbranch</CODE> are written robustly; they give an output, instead of
+causing an error, if applied to a leaf node.  (That happens if you ask for
+the city of an area code that's not in the data base.)  I haven't
+consistently been writing robust programs in this chapter, but I thought I'd
+give an example here.
+
+<P>The efficiency of the tree searching procedure depends on the fact
+that the tree is <EM>balanced.</EM>  In other words, the left branch
+of each node is the same size as its right branch.  I cheated slightly
+by starting with 31 area codes, a number that allows for a perfectly
+balanced tree.  Suppose I had started with 35 area codes.  How should
+I have built the tree?  What would happen to the efficiency of the
+program?  What is the maximum possible number of trials necessary
+to find a node in that tree?  What other numbers of nodes allow for
+perfect balance?
+
+<P>There are two important ideas to take away from this example.  The first is
+that the choice of data representation can have a substantial effect on the
+efficiency of a program.  The second, as I mentioned at the beginning of
+this section, is that we have used the same kind of data structure, a tree,
+for two very different purposes: first to represent a <EM>hierarchy</EM>
+(Sudbury is <EM>part of</EM> Massachusetts) and then to represent an <EM>
+ordering</EM> (313 is <EM>before</EM> 608).
+
+<P><H2>Logo's Underlying Data Structures</H2>
+
+<P>An abstract data type, such as the tree type we've been discussing, must be
+implemented using some lower-level means for data aggregation, that is, for
+grouping separate things into a combined whole.  In Berkeley Logo, there are
+two main built-in means for aggregation: lists and arrays.  (Every dialect
+of Logo has lists, but not all have arrays.)  Words can be thought of as a
+third data aggregate, in which the grouped elements are letters, digits,
+and punctuation characters, but we don't ordinarily use words as the basis
+for abstract data types.
+
+<P>Logo was designed to be used primarily by people whose main interest is in
+something other than computer programming, and so a design goal was to keep
+to a minimum the extent to which the Logo programmer must know about how
+Logo itself works internally.  Even in these books, which <EM>are</EM> focused
+on computing itself, we've gotten this far without looking very deeply into
+how Logo's data structures actually work.  But for the purposes of this
+chapter it will be useful to take that step.
+
+<P>Essentially all computers today are divided into a <EM>processor</EM>
+and a <EM>memory.</EM>  (The exceptions are experimental &quot;parallel
+processing&quot; machines in which many small sub-processors and sub-memories
+are interconnected, sometimes combining both capabilities within a single
+intergrated circuit.)  Roughly speaking, the processor contains the
+circuitry that implements hardware primitive procedures such as arithmetic
+operations.  (Not every Logo primitive is a hardware primitive.)  The
+memory holds the information used in carrying out a program, including
+the program itself and whatever data it uses.  The memory is divided into
+millions of small pieces, each of which can hold a single value (a number,
+a letter, and so on).<SUP>*</SUP> Each small piece has an <EM>
+address,</EM> which is a number used to select a particular piece;
+the metaphor is the street address of each house on a long street.  The
+hardware primitive procedures include a <CODE>load</CODE> operation that takes
+a memory address as its input and finds the value in the specified piece
+of memory, and a <CODE>store</CODE> command that takes an address and a value
+as inputs and puts the given value into the chosen piece of memory.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I'm being vague about what a &quot;value&quot; is, and
+in fact most computer memories can be divided into pieces of different
+sizes.  In most current computers,
+a <EM>byte</EM> is a piece that can hold any of 256 different
+values, while a <EM>word</EM> is a piece that can hold any of
+about four billion different values.  But these details aren't important
+for my present purposes, and I'm going to ignore them.  I'll talk as if
+memories were simply word-addressable.</SMALL></BLOCKQUOTE></SMALL><P>With this background we can understand how lists and arrays differ.  To
+be specific, suppose that we have a collection of five numbers to store
+in memory.  If we use an array, that means that Logo finds five <EM>
+consecutive</EM> pieces of memory to hold the five values, like this:
+
+<P><CENTER><IMG SRC="array.gif" ALT="figure: array"></CENTER>
+
+<P>If instead we use a list, Logo finds the memory for each of the
+five values as that value is computed.  The five memory slots might not
+be consecutive, so each memory slot must contain not only the desired
+value but also a <EM>pointer</EM> to the next slot.  That is, each
+slot must contain an additional number, the address of the next slot.
+(What I'm calling a &quot;slot&quot; must therefore be big enough to hold two
+numbers, and in fact Logo uses what we call a <EM>pair</EM> for
+each, essentially an array of length two.)  Since we don't care about
+the actual numeric values of the addresses, but only about the pairs
+to which they point, we generally use arrows to represent pointers
+pictorially:
+
+<P><CENTER><IMG SRC="list.gif" ALT="figure: list"></CENTER>
+
+<P>The last pair of the list has a <EM>null pointer,</EM> a
+special value to indicate that there is no next pair following it, indicated
+by the diagonal line.
+
+<P>Why do we bother to provide two aggregation mechanisms?  Why don't language
+designers just pick the best one?  Clearly the answer will be that each is
+&quot;the best&quot; for different purposes.  In the following paragraphs I'll
+compare several characteristics of lists and arrays.
+
+<P>One advantage of arrays that should be obvious from these pictures is that a
+list uses twice as much memory to hold the same number of values.  But this
+is not generally an important difference for modern computers; unless your
+problem is really enormous, you don't have to worry about running out of
+memory.
+
+<P>The most important advantage of arrays is that they are
+<EM>random access.</EM>  This means that each member of an array
+can be found just as quickly as any other member, regardless of its
+position within the array.  If the program knows the address at which
+the array begins, and it wants to find the <EM>n</EM>th member of the array,
+only two operations are needed:  First add <EM>n</EM> to the array's address,
+then <CODE>load</CODE> the value from the resulting address.  This takes a
+constant (and very short) amount of time, O(1).  By contrast, in a list
+there is no simple arithmetic relationship between the address of the list's
+first member and the address of its <EM>n</EM>th member.  To find the <EM>n</EM>th member,
+the program must <CODE>load</CODE> the pointer from the first pair, then use that
+address to <CODE>load</CODE> the pointer from the second pair, and so on, <EM>n</EM> times.
+The number of operations needed is O(<EM>n</EM>).
+
+<P>On the other hand, the most important advantage of lists is
+<EM>dynamic allocation.</EM>  This means that the programmer does not
+have to decide ahead of time on how big the data aggregate will become.  (We
+saw an example recently when we wanted to add a child to a node of an
+existing tree.)  Consider the five-member aggregates shown earlier, and
+suppose we want to add a sixth member.  If we've used a list, we can say,
+for example,
+
+<P><PRE>make &quot;newlist fput &quot;A :oldlist
+</PRE>
+
+<P>and all Logo has to do is find one new pair:
+
+<P><CENTER><IMG SRC="growlist.gif" ALT="figure: growlist"></CENTER>
+
+<P>By contrast, once an array has been created we can't expand it,
+because the new address would have to be adjacent to the old addresses, and
+that piece of memory might already be used for something else.  To make an
+array bigger, you have to allocate a complete new array and copy the old
+values into it.
+
+<P>Remember that arrays sacrifice efficient expansion in order to get
+efficient random access.  From the standpoint of program speed, one is not
+absolutely better than the other; it depends on the nature of the problem
+you're trying to solve.  That's why it's best if a language offers both
+structures, as Berkeley Logo does.  For the very common
+case of <CODE>foreach</CODE>-like iteration through an aggregate, neither random
+access nor dynamic allocation is really necessary.  For a data base that can
+grow during the running of a program, the flexibility of dynamic allocation
+is valuable.  For many sorting algorithms, on the other hand, it's important
+to be able to jump around in the aggregate and so random access is useful.
+(A programmer using arrays can partially overcome the lack of dynamic
+allocation by preallocating a too-large array and leaving some of it empty
+at first.  But if the order of members in the array matters, it may turn out
+that the &quot;holes&quot; in the array aren't where they're needed, and so the
+program still has to copy blocks of members to make room.  Also, such
+programs have occasional embarrassing failures because what the programmer
+thought was an extravagantly large array turns out not quite large enough
+for some special use of the program, or because a malicious user deliberately
+&quot;overruns&quot; the length of the array in order to evade a program restriction.)
+
+<P>The solitaire program in Volume 2 of this series illustrates the different
+advantages of lists and arrays.  As in any card game, a solitaire player
+distributes the cards into several small groups, each of which varies in
+size as the play continues.  For example, a typical step is to deal a card
+from the <EM>hand</EM> onto the <EM>pile,</EM> each of which is represented as
+a list:
+
+<P><PRE>make &quot;pile fput (first :hand) :pile
+make &quot;hand butfirst :hand
+</PRE>
+
+<P>(The actual solitaire program uses somewhat different
+instructions to accomplish the same effect, with a <CODE>deal</CODE> procedure that
+outputs the next available card after removing it from the hand.)
+
+<P>On the other hand (no pun intended), <EM>shuffling</EM> the deck is easier
+when an array is used to hold the card values, because the shuffling
+algorithm requires random jumping around in the deck, but does not change
+the total number of cards, so that random access is more important than
+dynamic allocation.  Therefore, the program starts each round of play with
+the deck in the form of an array of 52 cards.  It shuffles the deck in array
+form, and then copies the members of the array into a list, which is used
+for the rest of that round.  The advantage of an array for shuffling, and
+the advantage of a list for dealing cards, together outweigh the time
+spent copying the array into the list.
+
+<P>An important consequence of dynamic allocation is that lists are
+<EM>sharable</EM> data structures.  In the example above, <CODE>
+:oldlist</CODE> contains five pairs and <CODE>:newlist</CODE> contains six, but the
+total number of pairs used is six, not 11, because most of the same pairs
+are part of both lists.  That's why the <CODE>fput</CODE> operation takes O(1)
+time, unaffected by the length of the list, as do <CODE>first</CODE> and <CODE>
+butfirst</CODE>.  (Now that you know how lists are constructed using pairs
+and pointers, you should be able to understand something I've mentioned
+earlier without explanation:  <CODE>Lput</CODE>, <CODE>last</CODE>, and <CODE>butlast</CODE>
+require O(<EM>n</EM>) time.  It's much faster to operate near the beginning of a
+list than near the end.)  Arrays are not sharable; each array occupies its
+own block of consecutive memory addresses.
+
+<P>When a data structure is both sharable and mutable, it's possible to get
+into some very mysterious, hard-to-detect bugs.  Suppose we do this:
+
+<P><PRE>? <U>make &quot;one [Ice cream is delicious.]</U>
+? <U>make &quot;two fput &quot;Spinach butfirst butfirst :one</U>
+</PRE>
+
+<P>
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/spinach1.gif" ALT="figure: spinach1"></CENTER>
+
+<P>Then suppose you decide you don't like spinach.  You might say
+
+<P><PRE>? <U>.setfirst butfirst butfirst :two &quot;disgusting.</U>
+? <U>print :two</U>
+Spinach is disgusting.
+</PRE>
+
+<P><CENTER><IMG SRC="spinach2.gif" ALT="figure: spinach2"></CENTER>
+
+<P>But you haven't taken into account that <CODE>:one</CODE> and <CODE>:two</CODE>
+share memory, so this instruction has an unintended result:
+
+<P><PRE>? <U>print :one</U>
+Ice cream is disgusting.
+</PRE>
+
+<P>This is definitely a bug!
+
+<P>It's the combination of mutation and sharing that causes trouble.  Arrays
+are mutable but not sharable; the result of using <CODE>setitem</CODE> to change
+a member of an array is easily predictable.  The trouble with list mutation
+is that you may change other lists besides the one you think you're changing.
+That's why Berkeley Logo's <CODE>.setfirst</CODE> and <CODE>.setbf</CODE> primitives have
+names starting with periods, the Logo convention for &quot;experts only!&quot;  It's
+also why many other Logo dialects don't allow list mutation at
+all.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Also, this helps to explain the importance of property lists
+in Logo.  Property lists are a safe form of mutable list, because they are
+not sharable; that's why the <CODE>plist</CODE> primitive outputs a newly-allocated
+<EM>copy</EM> of the property list.</SMALL></BLOCKQUOTE></SMALL><P>In order to explain to you about how something like this might happen, I've
+had to tell you more about Logo's storage allocation techniques than is
+ordinarily taught.  One of the design goals of Logo was that the programmer
+shouldn't have to think in terms of boxes and arrows as we're doing now.
+But if you mutate sharable lists, you'd better understand the boxes
+and arrows.  It's not entirely obvious, you see, when two
+lists <EM>do</EM> share storage.  Suppose the example had been backwards:
+
+<P><PRE>? <U>make &quot;one [Delicious, that's ice cream.]</U>
+? <U>make &quot;two lput &quot;spinach. butlast butlast :one</U>
+? <U>print :two</U>
+Delicious, that's spinach.
+? <U>.setfirst :two &quot;Disgusting,</U>
+? <U>print :two</U>
+Disgusting, that's spinach.
+? <U>print :one</U>
+Delicious, that's ice cream.
+</PRE>
+
+<P>In this case the other list is <EM>not</EM> mysteriously modified
+because when <CODE>lput</CODE> is used, rather than <CODE>fput</CODE> as in the previous
+example, the two lists do <EM>not</EM> share memory.  That's a consequence of
+the front-to-back direction of the arrows connecting the boxes; it's
+possible to have two arrows pointing <EM>into</EM> a box, but only one arrow
+can <EM>leave</EM> a box.  You can't do this:
+
+<P><CENTER><IMG SRC="spinach3.gif" ALT="figure: spinach3"></CENTER>
+
+<P>
+
+<P>The combination of mutation and sharing, although tricky, is not all bad.
+The same mutual dependence that made a mess of <CODE>:one</CODE> and <CODE>:two</CODE> in
+the example above was desirable and helpful in the case of <CODE>:world</CODE>
+and <CODE>:Canada</CODE> earlier.  That's why Lisp has always included mutable
+lists, and why versions of Logo intended for more expert users have also
+chosen to allow list mutation.
+
+<P>Don't think that without mutable lists you are completely safe from mutual
+dependence.  Any language in which it's possible to give a datum a <EM>
+name</EM> allows the programmer to set up the equivalent of sharable data,
+just as I did in the final version of the tree of cities.  As far as the
+Logo interpreter is concerned, the value of the variable <CODE>world</CODE> is some
+generated symbol like <CODE>G47</CODE>.  That value is immune to changes in other
+data structures.  But if we think of <CODE>:world</CODE> as containing,
+effectively, the entire tree whose root node is called <CODE>G47</CODE>, then
+changes to other variables do, in effect, change the value of <CODE>world</CODE>.
+What is true is that without mutable lists you can't easily set up a mutual
+dependence <EM>by accident;</EM> you have to intend it.
+
+<P>By the way, by drawing the box and pointer diagrams with the actual data
+inside the boxes, I may have given you the impression that each member of a
+list or array must be a single number or letter, so that the value will fit
+in one memory address.  Actually, each member can be a pointer to anything.
+For example, here's a picture of an array that includes lists,
+
+<P><PRE>{[A B C] D [E F]}
+</PRE>
+
+<P><CENTER><IMG SRC="bigarray.gif" ALT="figure: bigarray"></CENTER>
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch2/v3ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+;;; Algorithms and Data Structures
+
+;; Local optimization of quadratic formula
+
+to quadratic :a :b :c
+localmake "root sqrt (:b * :b-4 * :a * :c)
+localmake "x1 (-:b+:root)/(2 * :a)
+localmake "x2 (-:b-:root)/(2 * :a)
+print (sentence [The solutions are] :x1 "and :x2)
+end
+
+;; Memoization of T function
+
+to t :n :k
+localmake "result gprop :n :k
+if not emptyp :result [output :result]
+make "result realt :n :k
+pprop :n :k :result
+output :result
+end
+
+to realt :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1) + (t :n-1 :k)
+end
+
+;; Speedup of Simplex function
+
+to simplex :buttons
+output 2 * first (cascade :buttons
+                          [fput (sumprods butfirst ?2 ?1) ?1] [1]
+                          [fput 1 nextrow ?2] [1 1])
+end
+
+to sumprods :a :b
+output reduce "sum (map "product :a :b)
+end
+
+to nextrow :combs
+if emptyp butfirst :combs [output :combs]
+output fput (sum first :combs first butfirst :combs) ~
+            nextrow butfirst :combs
+end
+
+;; Sorting -- selection sort
+
+to ssort :list
+if emptyp :list [output []]
+output ssort1 (first :list) (butfirst :list) []
+end
+
+to ssort1 :min :in :out
+if emptyp :in [output fput :min ssort :out]
+if lessthanp :min (first :in) ~
+   [output ssort1 :min (butfirst :in) (fput first :in :out)]
+output ssort1 (first :in) (butfirst :in) (fput :min :out)
+end
+
+;; Sorting -- partition sort
+
+to psort :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+localmake "split ((first :list) + (last :list)) / 2
+if lessthanp first :list :split ~
+   [output psort1 :split (butfirst :list) (list first :list) []]
+output psort1 :split (butlast :list) (list last :list) []
+end
+
+to psort1 :split :in :low :high
+if emptyp :in [output sentence (psort :low) (psort :high)]
+if lessthanp first :in :split ~
+   [output psort1 :split (butfirst :in) (fput first :in :low) :high]
+output psort1 :split (butfirst :in) :low (fput first :in :high)
+end
+
+;; Sorting -- count comparisons
+
+to lessthanp :a :b
+if not namep "comparisons [make "comparisons 0]
+make "comparisons :comparisons+1
+output :a < :b
+end
+
+to howmany
+print :comparisons
+ern "comparisons
+end
+
+;; Abstract Data Type for Trees: Constructor
+
+to tree :datum :children
+output fput :datum :children
+end
+
+;; Tree ADT: Selectors
+
+to datum :node
+output first :node
+end
+
+to children :node
+output butfirst :node
+end
+
+;; Tree ADT: Mutator
+
+to addchild :tree :child
+.setbf :tree (fput :child butfirst :tree)
+end
+
+;; Tree ADT: other procedures
+
+to leaf :datum
+output tree :datum []
+end
+
+to leaves :leaves
+output map [leaf ?] :leaves
+end
+
+to leafp :node
+output emptyp children :node
+end
+
+;; The World tree
+
+to worldtree
+make "world ~
+     tree "world ~
+          (list (tree "France leaves [Paris Dijon Avignon])
+                (tree "China leaves [Beijing Shanghai Guangzhou Suzhou])
+                (tree [United States]
+                      (list (tree [New York]
+                                  leaves [[New York] Albany Rochester
+                                          Armonk] )
+                            (tree "Massachusetts
+                                  leaves [Boston Cambridge Sudbury
+                                          Maynard] )
+                            (tree "California
+                                  leaves [[San Francisco] Berkeley
+                                          [Palo Alto] Pasadena] )
+                            (tree "Washington
+                                  leaves [Seattle Olympia] ) ) )
+                (tree "Canada
+                      (list (tree "Ontario
+                                  leaves [Toronto Ottawa Windsor] )
+                            (tree "Quebec
+                                  leaves [Montreal Quebec Lachine] )
+                            (tree "Manitoba leaves [Winnipeg]) ) ) )
+end
+
+to locate :city
+output locate1 :city :world "false
+end
+
+to locate1 :city :subtree :wanttree
+if and :wanttree (equalp :city datum :subtree) [output :subtree]
+if leafp :subtree ~
+   [ifelse equalp :city datum :subtree
+           [output (list :city)]
+           [output []]]
+localmake "lower locate.in.forest :city (children :subtree) :wanttree
+if emptyp :lower [output []]
+output ifelse :wanttree [:lower] [fput (datum :subtree) :lower]
+end
+
+to locate.in.forest :city :forest :wanttree
+if emptyp :forest [output []]
+localmake "child locate1 :city first :forest :wanttree
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest :wanttree
+end
+
+to cities :name
+output cities1 (finddatum :name :world)
+end
+
+to cities1 :subtree
+if leafp :subtree [output (list datum :subtree)]
+output map.se [cities1 ?] children :subtree
+end
+
+to finddatum :datum :tree
+output locate1 :name :tree "true
+end
+
+;; Area code/city pairs ADT
+
+to areacode :pair
+output first :pair
+end
+
+to city :pair
+output butfirst :pair
+end
+
+;; Area code linear search
+
+make "codelist [[202 Washington] [206 Seattle] [212 New York]
+                [213 Los Angeles] [215 Philadelphia] [303 Denver]
+                [305 Miami] [313 Detroit] [314 St. Louis]
+                [401 Providence] [404 Atlanta] [408 Sunnyvale]
+                [414 Milwaukee] [415 San Francisco] [504 New Orleans]
+                [608 Madison] [612 St. Paul] [613 Kingston]
+                [614 Columbus] [615 Nashville] [617 Boston]
+                [702 Las Vegas] [704 Charlotte]
+                [712 Sioux City] [714 Anaheim] [716 Rochester]
+                [717 Scranton] [801 Salt Lake City] [804 Newport News]
+                [805 Ventura] [808 Honolulu]]
+
+to listcity :code
+output city find [equalp :code areacode ?] :codelist
+end
+
+;; Area code binary tree search
+
+to balance :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output leaf first :list]
+output balance1 (int (count :list)/2) :list []
+end
+
+to balance1 :count :in :out
+if equalp :count 0 ~
+   [output tree (first :in) (list balance reverse :out
+                                  balance butfirst :in)]
+output balance1 (:count-1) (butfirst :in) (fput first :in :out)
+end
+
+to treecity :code
+output city treecity1 :code :codetree
+end
+
+to treecity1 :code :tree
+if emptyp :tree [output [0 no city]]
+localmake "datum datum :tree
+if :code = areacode :datum [output :datum]
+if :code < areacode :datum [output treecity1 :code lowbranch :tree]
+output treecity1 :code highbranch :tree
+end
+
+to lowbranch :tree
+if leafp :tree [output []]
+output first children :tree
+end
+
+to highbranch :tree
+if leafp :tree [output []]
+output last children :tree
+end
+</PRE><P>
+
+
+<P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch2/v3ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch3/algs.lg b/js/games/nluqo.github.io/~bh/v3ch3/algs.lg
new file mode 100644
index 0000000..fd3cfdd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/algs.lg
@@ -0,0 +1,252 @@
+;;; Algorithms and Data Structures
+
+;; Local optimization of quadratic formula
+
+to quadratic :a :b :c
+localmake "root sqrt (:b * :b-4 * :a * :c)
+localmake "x1 (-:b+:root)/(2 * :a)
+localmake "x2 (-:b-:root)/(2 * :a)
+print (sentence [The solutions are] :x1 "and :x2)
+end
+
+;; Memoization of T function
+
+to t :n :k
+localmake "result gprop :n :k
+if not emptyp :result [output :result]
+make "result realt :n :k
+pprop :n :k :result
+output :result
+end
+
+to realt :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1) + (t :n-1 :k)
+end
+
+;; Speedup of Simplex function
+
+to simplex :buttons
+output 2 * first (cascade :buttons
+                          [fput (sumprods butfirst ?2 ?1) ?1] [1]
+                          [fput 1 nextrow ?2] [1 1])
+end
+
+to sumprods :a :b
+output reduce "sum (map "product :a :b)
+end
+
+to nextrow :combs
+if emptyp butfirst :combs [output :combs]
+output fput (sum first :combs first butfirst :combs) ~
+            nextrow butfirst :combs
+end
+
+;; Sorting -- selection sort
+
+to ssort :list
+if emptyp :list [output []]
+output ssort1 (first :list) (butfirst :list) []
+end
+
+to ssort1 :min :in :out
+if emptyp :in [output fput :min ssort :out]
+if lessthanp :min (first :in) ~
+   [output ssort1 :min (butfirst :in) (fput first :in :out)]
+output ssort1 (first :in) (butfirst :in) (fput :min :out)
+end
+
+;; Sorting -- partition sort
+
+to psort :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+localmake "split ((first :list) + (last :list)) / 2
+if lessthanp first :list :split ~
+   [output psort1 :split (butfirst :list) (list first :list) []]
+output psort1 :split (butlast :list) (list last :list) []
+end
+
+to psort1 :split :in :low :high
+if emptyp :in [output sentence (psort :low) (psort :high)]
+if lessthanp first :in :split ~
+   [output psort1 :split (butfirst :in) (fput first :in :low) :high]
+output psort1 :split (butfirst :in) :low (fput first :in :high)
+end
+
+;; Sorting -- count comparisons
+
+to lessthanp :a :b
+if not namep "comparisons [make "comparisons 0]
+make "comparisons :comparisons+1
+output :a < :b
+end
+
+to howmany
+print :comparisons
+ern "comparisons
+end
+
+;; Abstract Data Type for Trees: Constructor
+
+to tree :datum :children
+output fput :datum :children
+end
+
+;; Tree ADT: Selectors
+
+to datum :node
+output first :node
+end
+
+to children :node
+output butfirst :node
+end
+
+;; Tree ADT: Mutator
+
+to addchild :tree :child
+.setbf :tree (fput :child butfirst :tree)
+end
+
+;; Tree ADT: other procedures
+
+to leaf :datum
+output tree :datum []
+end
+
+to leaves :leaves
+output map [leaf ?] :leaves
+end
+
+to leafp :node
+output emptyp children :node
+end
+
+;; The World tree
+
+to worldtree
+make "world ~
+     tree "world ~
+          (list (tree "France leaves [Paris Dijon Avignon])
+                (tree "China leaves [Beijing Shanghai Guangzhou Suzhou])
+                (tree [United States]
+                      (list (tree [New York]
+                                  leaves [[New York] Albany Rochester
+                                          Armonk] )
+                            (tree "Massachusetts
+                                  leaves [Boston Cambridge Sudbury
+                                          Maynard] )
+                            (tree "California
+                                  leaves [[San Francisco] Berkeley
+                                          [Palo Alto] Pasadena] )
+                            (tree "Washington
+                                  leaves [Seattle Olympia] ) ) )
+                (tree "Canada
+                      (list (tree "Ontario
+                                  leaves [Toronto Ottawa Windsor] )
+                            (tree "Quebec
+                                  leaves [Montreal Quebec Lachine] )
+                            (tree "Manitoba leaves [Winnipeg]) ) ) )
+end
+
+to locate :city
+output locate1 :city :world "false
+end
+
+to locate1 :city :subtree :wanttree
+if and :wanttree (equalp :city datum :subtree) [output :subtree]
+if leafp :subtree ~
+   [ifelse equalp :city datum :subtree
+           [output (list :city)]
+           [output []]]
+localmake "lower locate.in.forest :city (children :subtree) :wanttree
+if emptyp :lower [output []]
+output ifelse :wanttree [:lower] [fput (datum :subtree) :lower]
+end
+
+to locate.in.forest :city :forest :wanttree
+if emptyp :forest [output []]
+localmake "child locate1 :city first :forest :wanttree
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest :wanttree
+end
+
+to cities :name
+output cities1 (finddatum :name :world)
+end
+
+to cities1 :subtree
+if leafp :subtree [output (list datum :subtree)]
+output map.se [cities1 ?] children :subtree
+end
+
+to finddatum :datum :tree
+output locate1 :name :tree "true
+end
+
+;; Area code/city pairs ADT
+
+to areacode :pair
+output first :pair
+end
+
+to city :pair
+output butfirst :pair
+end
+
+;; Area code linear search
+
+make "codelist [[202 Washington] [206 Seattle] [212 New York]
+                [213 Los Angeles] [215 Philadelphia] [303 Denver]
+                [305 Miami] [313 Detroit] [314 St. Louis]
+                [401 Providence] [404 Atlanta] [408 Sunnyvale]
+                [414 Milwaukee] [415 San Francisco] [504 New Orleans]
+                [608 Madison] [612 St. Paul] [613 Kingston]
+                [614 Columbus] [615 Nashville] [617 Boston]
+                [702 Las Vegas] [704 Charlotte]
+                [712 Sioux City] [714 Anaheim] [716 Rochester]
+                [717 Scranton] [801 Salt Lake City] [804 Newport News]
+                [805 Ventura] [808 Honolulu]]
+
+to listcity :code
+output city find [equalp :code areacode ?] :codelist
+end
+
+;; Area code binary tree search
+
+to balance :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output leaf first :list]
+output balance1 (int (count :list)/2) :list []
+end
+
+to balance1 :count :in :out
+if equalp :count 0 ~
+   [output tree (first :in) (list balance reverse :out
+                                  balance butfirst :in)]
+output balance1 (:count-1) (butfirst :in) (fput first :in :out)
+end
+
+to treecity :code
+output city treecity1 :code :codetree
+end
+
+to treecity1 :code :tree
+if emptyp :tree [output [0 no city]]
+localmake "datum datum :tree
+if :code = areacode :datum [output :datum]
+if :code < areacode :datum [output treecity1 :code lowbranch :tree]
+output treecity1 :code highbranch :tree
+end
+
+to lowbranch :tree
+if leafp :tree [output []]
+output first children :tree
+end
+
+to highbranch :tree
+if leafp :tree [output []]
+output last children :tree
+end
diff --git a/js/games/nluqo.github.io/~bh/v3ch3/array.gif b/js/games/nluqo.github.io/~bh/v3ch3/array.gif
new file mode 100644
index 0000000..44e615f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/array.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/bigarray.gif b/js/games/nluqo.github.io/~bh/v3ch3/bigarray.gif
new file mode 100644
index 0000000..d68b907
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/bigarray.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/codetree.gif b/js/games/nluqo.github.io/~bh/v3ch3/codetree.gif
new file mode 100644
index 0000000..e66fd42
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/codetree.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/growlist.gif b/js/games/nluqo.github.io/~bh/v3ch3/growlist.gif
new file mode 100644
index 0000000..83b7995
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/growlist.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/list.gif b/js/games/nluqo.github.io/~bh/v3ch3/list.gif
new file mode 100644
index 0000000..438763c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/list.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/math3.gif b/js/games/nluqo.github.io/~bh/v3ch3/math3.gif
new file mode 100644
index 0000000..58ba608
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/math3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/math4.gif b/js/games/nluqo.github.io/~bh/v3ch3/math4.gif
new file mode 100644
index 0000000..b20a218
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/math4.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/math5.gif b/js/games/nluqo.github.io/~bh/v3ch3/math5.gif
new file mode 100644
index 0000000..4cf1559
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/math5.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/math6.gif b/js/games/nluqo.github.io/~bh/v3ch3/math6.gif
new file mode 100644
index 0000000..445c18c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/math6.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/nchoosei.gif b/js/games/nluqo.github.io/~bh/v3ch3/nchoosei.gif
new file mode 100644
index 0000000..819ebb6
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/nchoosei.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/qformula.gif b/js/games/nluqo.github.io/~bh/v3ch3/qformula.gif
new file mode 100644
index 0000000..238e33d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/qformula.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/spinach2.gif b/js/games/nluqo.github.io/~bh/v3ch3/spinach2.gif
new file mode 100644
index 0000000..140f850
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/spinach2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/spinach3.gif b/js/games/nluqo.github.io/~bh/v3ch3/spinach3.gif
new file mode 100644
index 0000000..a44f0b7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/spinach3.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch3/v3ch3.html b/js/games/nluqo.github.io/~bh/v3ch3/v3ch3.html
new file mode 100644
index 0000000..da1e1ce
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/v3ch3.html
@@ -0,0 +1,2465 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 3: Algorithms and Data Structures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Algorithms and Data Structures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch03.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch2/v3ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="algs.lg"><CODE>algs</CODE></A>
+
+<P>What's wrong with this procedure?
+
+<P><PRE>to process.sentence :sent
+output fput (process.word first :sent) (process.sentence bf :sent)
+end
+</PRE>
+
+<P>If you said &quot;It's a recursive procedure without a stop rule,&quot;
+you've solved a simple problem in <EM>analysis of algorithms.</EM>  This branch
+of computer science is concerned with the <EM>correctness</EM> and the
+<EM>efficiency</EM> of programs.
+
+<P>The field is called analysis of <EM>algorithms</EM> rather than analysis of
+<EM>programs</EM> because the emphasis is on the meaning of a program (how
+you might express the program in English) and not on the details of its
+expression in a particular language.  For example, the error in the procedure
+
+<P><PRE>to process.sentence :sent
+if emptyp :sent [output []]
+output fput (process.word first :sent) (<U>process.snetence</U> bf :sent)
+end
+</PRE>
+
+<P>is just as fatal as the error in the first example, but there isn't
+much of theoretical interest to say about a misspelled procedure name.  On
+the other hand, another branch of computer science,
+<EM>program verification,</EM> is concerned
+with developing techniques to ensure that a
+computer program really does correctly express the algorithm it is meant to
+express.
+
+<P>The examples I've given so far are atypical, it's worth noting, in that you
+were able to see the errors in the procedures without having any real idea
+of what they do!  Without seeing <CODE>process.word</CODE> you can tell that this
+program is doing something or other to each word of a sentence, but you
+don't know whether the words are being translated to another language,
+converted from upper case to lower case letters, translated into a string of
+phoneme codes to be sent to a speech synthesizer, or what.  (Even what I just
+said about doing something to the words of a sentence is an inference based
+on the names of procedures and variables, which might not really reflect the
+results of the program.)  More interesting problems in analysis of
+algorithms have to do with the specific properties of particular algorithms.
+
+<P>In this chapter I discuss algorithms along with <EM>data structures,</EM> the
+different ways in which information can be represented in a computer program,
+because these two aspects of a program interact strongly.  That is, the
+choices you make as a programmer about data representation have a profound
+effect on the algorithms you can use to solve your problem.  Similarly, once
+you have chosen an algorithm, that choice determines the particular kinds of
+information your program will need to do its work.  Algorithms and data
+structures are the central concerns of software engineering, the overall
+name for the study of how to turn a problem statement into a working program
+in a way that uses both the computer and the programming staff effectively.
+
+<P><H2>Local Optimization vs. Efficient Algorithms</H2>
+
+<P>When you're trying to make a computer program run as fast as possible,
+the most obvious place to start is with the details of the instructions
+in the program.  But that's generally <EM>not</EM> the most effective
+approach.  Rethinking the big picture can give much more dramatic
+improvements.  To show you what I mean, I'll give some examples of both.
+Later I'll talk about <EM>order of growth,</EM> a more formal way to
+understand this same idea.
+
+<P>Consider the following procedure that implements
+the <EM>quadratic formula</EM>
+
+<P><CENTER><IMG SRC="qformula.gif"></CENTER>
+
+<P>This formula gives the two values of <EM>x</EM> that solve the equation
+<P><CENTER><EM>ax</EM><SUP><SMALL>2</SMALL></SUP> + <EM>bx</EM> + <EM>c</EM> = 0</CENTER><P>
+
+<P><PRE>to quadratic :a :b :c
+localmake &quot;x1 (-:b + sqrt (:b*:b - 4*:a*:c))/2*:a
+localmake &quot;x2 (-:b - sqrt (:b*:b - 4*:a*:c))/2*:a
+print (sentence [The solutions are] :x1 &quot;and :x2)
+end
+</PRE>
+
+<P>Before we talk about the efficiency of this program, is it correct?
+This is not a simple yes-or-no question.  The procedure gives the correct
+results for those quadratic equations that have two real solutions.  For
+example, the equation 2<EM>x</EM><SUP><SMALL>2</SMALL></SUP>+5<EM>x</EM>-3 = 0 has the solutions <EM>x</EM> = &minus;3 and &frac12;; the instruction <CODE>quadratic 2 5 -3</CODE> will print those solutions.
+Some quadratic equations, like <EM>x</EM><SUP><SMALL>2</SMALL></SUP>-8<EM>x</EM>+16 = 0, have only one solution; for
+these equations, <CODE>quadratic</CODE> prints the same solution twice, which is
+not exactly incorrect but still a little embarrassing.  Other equations,
+like <EM>x</EM><SUP><SMALL>2</SMALL></SUP>+1 = 0, have solutions that are complex numbers.  Depending on our
+purposes, we might want <CODE>quadratic</CODE> to print the solutions <EM>i</EM> and &minus;<EM>i</EM>
+for this equation, or we might want it to print &quot;This equation has no real
+solutions.&quot; But since most versions of Logo do not provide complex
+arithmetic, what will really happen is that we'll get the error message
+
+<P><PRE>sqrt doesn't like -1 as input.
+</PRE>
+
+<P>If <CODE>quadratic</CODE> is used as part of a larger project, getting
+the Logo error message means that the program dies altogether in this case
+without a chance to recover.  If we have several equations to
+solve, it would be better if the program could continue to the remaining
+equations even if no solution is found for one of them.  A program that
+operates correctly for the kinds of inputs that the programmer had in mind,
+but blows up when given unanticipated inputs, is said not to be <EM>
+robust;</EM> a robust program should do something appropriate even if there
+are errors in its input data.
+
+<P>But my real reason for displaying this example is to discuss its efficiency.
+It computes the expression
+
+<P><PRE>sqrt (:b*:b - 4*:a*:c)
+</PRE>
+
+<P>twice.  Multiplication is slower than addition on most computers;
+this expression involves three multiplications as well as the even slower
+square root extraction.  The program would be faster if it were written this
+way:
+
+<P><PRE>to quadratic :a :b :c
+localmake &quot;sqrt sqrt (:b*:b - 4*:a*:c)
+localmake &quot;x1 (-:b + :sqrt)/2*:a
+localmake &quot;x2 (-:b - :sqrt)/2*:a
+print (sentence [The solutions are] :x1 &quot;and :x2)
+end
+</PRE>
+
+<P>This kind of change to a program is called
+<EM>common subexpression elimination.</EM>  It's a
+pretty easy way to speed up a program;
+so easy, in fact, that some &quot;optimizing compilers&quot; for large computers do
+it automatically.  In other words, an optimizing compiler for Logo would
+treat the first version of <CODE>quadratic</CODE> as if it were written like the
+second version.  (As far as I know, nobody has actually written such a
+compiler for Logo.)
+
+<P>Common subexpression elimination is an example of <EM>local</EM> optimization.
+This means that we improved the program by paying attention to one small
+piece of it at a time.  (A less elegant name for local optimization is &quot;code
+bumming.&quot;)  Is it worth the effort?  It depends how many times this procedure
+will be run.  When I say that multiplication is slow, I mean that it takes
+a few millionths of a second.  If you are writing a <CODE>quadratic</CODE>
+procedure to do the dozen problems in your high school algebra homework, the
+extra time you spend thinking up the second version and typing it into the
+editor probably outweighs the saving of time in running the procedure.  But
+if you are trying to predict the weather and need to solve tens of thousands
+of equations, the saving may be significant.
+
+<P>If you want to write locally optimized
+Logo programs, it's important to know that <CODE>first</CODE>, <CODE>butfirst</CODE>, and
+<CODE>fput</CODE> take a constant amount of time regardless of the length of the
+input list, whereas <CODE>last</CODE>, <CODE>butlast</CODE>, and <CODE>lput</CODE> take an amount
+of time proportional to the length of the list.  If you add <EM>n</EM> items to a
+list, one by one, using <CODE>fput</CODE>, the length of time required is <EM>n</EM> times
+the constant amount of time for each item.  But if you add the same <EM>n</EM>
+items using <CODE>lput</CODE>, if the first item takes <EM>t</EM> microseconds, the last
+takes <EM>nt</EM>.  On the average, each <CODE>lput</CODE> takes something like <EM>nt</EM>/2
+microseconds, so the total time is <EM>n</EM><SUP><SMALL>2</SMALL></SUP><EM>t</EM>/2.  The gain in efficiency from
+using <CODE>fput</CODE> instead of <CODE>lput</CODE> isn't significant if your list has
+only a few items, but the gain gets more and more significant as the size of
+the list increases.  Suppose you want to create a list of the numbers from 1
+to 1000.  One straightforward way would be
+
+<P><PRE>print cascade 1000 [lput # ?] []
+</PRE>
+
+<P>On my home computer this instruction takes about 26
+seconds.<SUP>*</SUP>  If you
+just use <CODE>fput</CODE> in place of <CODE>lput</CODE> the list will come out in the
+wrong order, but it's possible to reverse the order of that list to get the
+same result as the first version:
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The actual time depends not only on what model of
+computer you have but also on how much memory and what else is in it.</SMALL></BLOCKQUOTE></SMALL><P><PRE>print reverse cascade 1000 [fput # ?] []
+</PRE>
+
+<P>You might think this would be slower, because it has the extra
+<CODE>reverse</CODE> step.  But in fact this instruction took about 12 seconds.
+(It's important that the <CODE>reverse</CODE> tool in the Berkeley Logo
+library uses <CODE>first</CODE>
+and <CODE>fput</CODE> to do its work.  If we used the more obvious
+
+<P><PRE>to reverse :list
+if emptyp :list [output []]
+output lput first :list reverse bf :list
+end
+</PRE>
+
+<P>then the elimination of <CODE>lput</CODE> in the <CODE>cascade</CODE> template
+would be offset by the <CODE>lput</CODE> in the reversal.)
+
+<P>
+At the other extreme, the broadest possible <EM>global</EM> optimization of a
+program is to think of an entirely new algorithm based on a different way of
+thinking about the original problem.  As an example, in Chapter 2 there are
+three different programs to solve the Simplex lock problem.  The first
+program, <CODE>lock</CODE>, works by enumerating explicitly all the different
+patterns of possible combinations.  That algorithm is not fundamentally
+recursive; although my Logo implementation includes recursive subprocedures,
+the number of combinations for a five-button lock is not determined on the
+basis of the number for a four-button lock.  (The program does compute the
+number of combinations that use four out of the five available buttons, but
+that isn't the same thing.)  The second program, <CODE>simplex</CODE>, is based on
+a mathematical argument relating the number of combinations to a fairly
+simple <EM>recursive function</EM>--that is, a mathematical function with an
+inductive definition.  Because the function is computationally simple, the
+intellectual energy I invested in doing the mathematics paid off with a
+significantly faster program.  The third version, <CODE>simp</CODE>, uses a closed
+form formula that solves the problem in no time!
+
+<P>To illustrate more sharply the differences among these three programs, I tried each
+of them on a ten-button version of the Simplex lock.  To compute <CODE>
+lock 10</CODE> took 260 seconds on my computer; <CODE>simplex 10</CODE> took 80 seconds; and
+<CODE>simp 10</CODE> took less than half a second.  For this size lock, understanding the
+mathematical idea of a recursive function sped up the program by a factor of
+three, and using the mathematical technique called generating functions
+achieved an additional speedup by a factor of almost 200!  What's important
+to understand about this example is that it wasn't better <EM>programming</EM>
+skill that made the difference, but greater knowledge of <EM>mathematics.</EM>
+(In the next section, though, you'll learn a programming trick that can
+sometimes achieve similar speedups.)
+
+<P>Many &quot;trick&quot; math problems involve a similar shift in thinking about the
+fundamental algorithm to be used.  For example, in Chapter 2 we computed the
+probability of picking a matching pair of socks out of a drawer containing
+six brown and four blue socks this way:
+<P><CENTER><IMG SRC="math3.gif" ALT="math display"></CENTER><P>
+Suppose we ask this question: Out of the same drawer of six browns and two
+blues, we pick <EM>three</EM> socks at random; what is the probability that
+at least two of the socks match?
+
+<P>The number of triples of socks in which at least two are brown is the number
+in which all three are brown, <IMG SRC="6choose3.gif">, plus the number in which two are
+brown and one is blue, <IMG SRC="6c2x4c1.gif">.  The number in which
+at least two are blue is, similarly, <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/4c3+4c2x6c1.gif">.  The total number of triples is of course <IMG SRC="10choose3.gif">.
+So the probability of a matching pair within the chosen triple is
+<P><CENTER><IMG SRC="math4.gif" ALT="math display"></CENTER><P>
+which is 100% probability.
+We could modify the <CODE>socks</CODE> procedure to get the same result by listing
+all the possible triples and then filtering all the ones containing a
+matching pair, using a filter like
+
+<P><PRE>to haspair :triple
+output or (memberp first :triple butfirst :triple) ~
+          (equalp (item 2 :triple) last :triple)
+end
+</PRE>
+
+<P>But the problem becomes entirely trivial if you notice that there
+are only two possible colors, so obviously there is no way that three
+randomly chosen socks can have three distinct colors!  Of course there has
+to be a matching pair within any possible triple.  A problem like this, that
+invites a messy arithmetic solution but is obvious if properly understood, is
+the mathematician's idea of a joke.  (Did you get it?)
+
+<P><H2>Memoization</H2>
+
+
+<P>Some efficiency tricks are applicable to a number of different problems and
+become part of the &quot;toolkit&quot; of any professional programmer.  One example
+
+is relevant to many inductively defined functions; the trick is to have the
+program remember the result of each invocation of the function.  For example,
+in Chapter 2 we defined the number of terms in a
+multinomial expansion to be
+
+<P><PRE>to t :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE>
+
+<P>
+
+<P>What happens when we compute <CODE>t 4 7</CODE>?
+<P><CENTER><IMG SRC="math5.gif" ALT="math display"></CENTER><P>
+Many calculations are performed repeatedly.  In the chart above I've
+underlined three places where <EM>t</EM>(3,5) is computed.  Each of those in turn
+involves repeated computation of <EM>t</EM>(3,4) and so on.  This computation took
+me about 18 seconds.
+
+<P>
+
+<P>Here is a version of <CODE>t</CODE> that uses property lists to remember all the
+values it's already computed.  This version will calculate <EM>t</EM>(3,5) only the
+first time it's needed; a second request for <EM>t</EM>(3,5) will instantly output
+the remembered value.
+
+<P><PRE>to t :n :k
+localmake &quot;result gprop :n :k
+if not emptyp :result [output :result]
+make &quot;result realt :n :k
+pprop :n :k :result
+output :result
+end
+
+to realt :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1)+(t :n-1 :k)
+end
+</PRE>
+
+<P>Computing <CODE>t 4 7</CODE> isn't really a big enough problem to
+show off how much faster this version is; even the original program takes
+only 2 &frac12; seconds on my home computer.  But the amount of time
+needed grows quickly as you try larger inputs.  Using the original procedure
+from Chapter 2, my computer took just under five <EM>minutes</EM> to
+compute <CODE>t 8 10</CODE>; the program shown here took less than two <EM>
+seconds.</EM>  This program computed <CODE>t 12 12</CODE> in about three seconds;
+I estimate that the original procedure would take five <EM>hours</EM> to
+solve that problem!  (As you can imagine, I didn't try it.)
+
+<P>The memoized version of <CODE>t</CODE> has the same structure as the original.
+That is, in order to compute <CODE>t 4 7</CODE>, the program must first carry out
+the two subtasks <CODE>t 4 6</CODE> and <CODE>t 3 7</CODE>.  The only difference between
+the original version and the memoized version is that in the latter,
+whenever a second invocation is made with inputs that have already been
+seen, the result is output immediately without repeating that subtask.  Any
+recursive function can be memoized in the same way.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I've used
+property lists of numbers to hold the remembered values of the <CODE>t</CODE>
+function.  If I wanted to use the same technique for some other function in
+the same workspace, I'd have to find a way to keep the values for the two
+functions from getting in each other's way.  For example, if <EM>t</EM>(4,7)=120
+and some other function <EM>h</EM>(4,7)=83, then I might store the value
+
+<P><PRE>[t 120 h 83]
+</PRE>
+
+<P>on the appropriate property list.</SMALL></BLOCKQUOTE></SMALL><P>Sometimes, though, the same general idea--remembering the results
+of past computations--can be used more effectively by changing the
+program structure so that just the right subproblems are solved
+as they're needed to work toward the overall solution.  Rearranging
+the program structure isn't called memoization, but we're still using
+the same idea.  For example,
+the Simplex lock function
+<P><CENTER><IMG SRC="math6.gif" ALT="math display"></CENTER><P>
+from Chapter 2
+is a combination (sorry about the pun) of values of two functions.  It isn't
+exactly helpful to remember every possible value of <IMG SRC="nchoosei.gif"> because
+each value is used only once.  But the calculation of <EM>f</EM>(<EM>n</EM>) uses the entire
+<EM>n</EM>th row of Pascal's Triangle, and it's easy to compute that if we remember
+the row above it.  The values of <EM>f</EM>(<EM>i</EM>) are used repeatedly, so it makes
+sense to keep a list of them.  So my plan is to have two lists,
+the first of which is a list of values of <EM>f</EM>(<EM>i</EM>) and the second a row of
+Pascal's Triangle:
+
+<P><PRE>round               ?1           ?2
+
+  0                [1]          [1 1]
+  1              [1 1]         [1 2 1]
+  2            [3 1 1]        [1 3 3 1]
+  3         [13 3 1 1]       [1 4 6 4 1]
+  4      [75 13 3 1 1]     [1 5 10 10 5 1]
+  5  [541 75 13 3 1 1]    [1 6 15 20 15 6 1]
+</PRE>
+
+<P>The solution to the problem is twice the first member of the last
+value of <CODE>?1</CODE>.
+
+<P>Instead of starting with a request for <EM>f</EM>(5) and carrying out subtasks
+as needed, the new program will begin with <EM>f</EM>(0) and will work its way
+up to larger input values until the desired result is found.  This technique
+is called <EM>dynamic programming:</EM>
+
+<P><PRE>to simplex :buttons
+output 2 * first (cascade :buttons
+                          [fput (sumprods bf ?2 ?1) ?1] [1]
+                          [fput 1 nextrow ?2] [1 1])
+end
+
+to sumprods :a :b
+output reduce &quot;sum (map &quot;product :a :b)
+end
+
+to nextrow :combs
+if emptyp butfirst :combs [output :combs]
+output fput (sum first :combs first butfirst :combs) ~
+            nextrow butfirst :combs
+end
+</PRE>
+
+<P>I tried both versions of <CODE>simplex</CODE> for a 12-button lock.
+The version in Chapter 2 took about 5 &frac12; minutes to get the
+answer (which is that there are about 56 billion combinations); this
+version took about one second, comparable to the closed form <CODE>simp</CODE>
+procedure.
+
+<P>If you just read this program with no prior idea of what algorithm it's using, it
+must be hard to see how it reflects the original problem.  But if you think
+of it as a quasi-memoization of the earlier version it should make sense to you.
+
+<P><H2>Sorting Algorithms</H2>
+
+<P>Every textbook on algorithms uses sorting as one of its main examples.
+There are several reasons for this.  First of all, sorting is one of the
+most useful things to do with a computer, in a wide variety of settings.
+There are many different known sorting algorithms, ranging from obvious to
+subtle.  These algorithms have been analyzed with great care, so a lot is
+known about their behavior.  (What does that mean?  It means we can answer
+questions like &quot;How long does this algorithm take, on the average?&quot;
+&quot;How long does it take, at worst?&quot; &quot;If the things we're sorting are
+mostly in order to begin with, does that make it faster?&quot;)  And all this
+effort pays off, in that the cleverest algorithms really are much faster
+than the more obvious ones.
+
+<P>The problem we want to solve is to take a list in unknown order and
+rearrange it to get a new list of the same members in some standard order.
+This might be alphabetical order if the members of the list are words, or
+size order if they're numbers, or something else.  For the most part, the
+exact ordering relation isn't very important.  As long as we have a way to
+compare two items and find out which comes first (or that they're equal,
+sometimes) it doesn't matter what the details of the comparison are.  To
+make things simple, in this chapter I'll assume we're always sorting numbers.
+
+<P>Because the length of time per comparison depends on the nature of the
+things being compared, and because that length isn't really part of what
+distinguishes one sorting algorithm from another, analyses of the time taken
+by a sorting program are usually expressed not in terms of seconds but in
+terms of number of comparisons.  This measure also eliminates the effect of
+one computer being faster than another.  To help make such measurements,
+we'll compare two numbers using this procedure:
+
+<P><PRE>to lessthanp :a :b
+if not namep &quot;comparisons [make &quot;comparisons 0]
+make &quot;comparisons :comparisons+1
+output :a &lt; :b
+end
+</PRE>
+
+<P>Of course, if we want to use <CODE>&gt;</CODE> or <CODE>=</CODE> comparisons in a
+sorting algorithm, we should write analogous procedures for those.  But in
+fact I'll only need <CODE>lessthanp</CODE> for the algorithms I'm going to show you.
+After trying out a sort program, we can find out how many comparisons it
+made using this convenient little tool:
+
+<P><PRE>to howmany
+print :comparisons
+ern &quot;comparisons
+end
+</PRE>
+
+<P>After telling us the number of comparisons, this procedure erases
+the counter variable to prepare for the next experiment.
+
+<P>If you haven't studied sort algorithms before, it will be a good exercise
+for you to invent one yourself before you continue.  Your procedure <CODE>
+sort</CODE> should take a list of numbers as input, and should output a list of
+the same numbers in order from smallest to largest.
+
+<P><PRE>? <U>show sort [5 20 3 5 18 9]</U>
+[3 5 5 9 18 20]
+</PRE>
+
+<P>Notice that it's allowable for two (or more) equal numbers to
+appear in the input.
+
+<P>So that we can compare different algorithms fairly, we should try them on
+the same input data.  You can make a list of 100 random numbers this way:
+
+<P><PRE>make &quot;list cascade 100 [fput random 100 ?] []
+</PRE>
+
+<P>You should try out both your sort procedures and mine on your
+random list.  In case you want to try your algorithm on my data, to
+compare the exact numbers of comparisons needed, here is the list I used:
+
+<P><PRE>[11 41 50 66 41 61 73 38  2 94 43 55 24  1 77 77 13  2 93 35
+ 43 69  9 46 88 20 43 73 11 74 69 33 28  4  5  1 15 17 13 94
+ 88 42 12 31 67 42 30 30 13 91 31  8 55  6 31 84 57 50 50 31
+ 36 52  5 12 10 19 69  0  9 81 62 14 39 54 45 72 18 47 48 35
+ 76 44 77 34 75 52 61 86 34 44 64 53 25 39  4 55 55 54 53 64]
+</PRE>
+
+<P>Notice in passing that this is a list of 100 random numbers, but
+not a list of the first 100 numbers in random order.  Some numbers, like 43,
+appear more than once in the list, while others don't appear at all.  This
+is perfectly realistic for numbers that occur in real life, although of
+course some situations give rise to lists of <EM>unique</EM> items.
+
+<P><H2>Sorting by Selection</H2>
+
+
+<P>Although there are many known sorting algorithms, most fall into two
+main groups.  There are the ones that order the input items one at a time
+and there are the ones that divide the problem into roughly equal-sized
+smaller problems.  I'll show you one of each.  Within a group, the
+differences between algorithms have to do with details of exactly how the
+problem is divided into pieces, what's where in computer memory, and so on.
+But these details are generally much less important than the basic division
+between the two categories.  If you took my advice and wrote your own sort
+procedure, and if you hadn't studied sorting before, the one you wrote is
+almost certainly in the first category.
+
+<P>My sample algorithm in the first group is a <EM>selection</EM> sort.
+Expressed in words, the algorithm is this:  First find the smallest number,
+then find the next smallest, and so on.  This idea can be put in recursive
+form; the output from the procedure should be a list whose first member is
+the smallest number and whose remaining elements are the sorted version of
+the other numbers.  I'll show you two versions of this algorithm: first a
+straightforward but inefficient one, and then a version that's improved in
+speed but not quite so obvious.  Here's the first version:
+
+<P><PRE>to ssort :list
+if emptyp :list [output []]
+localmake &quot;smallest reduce &quot;min :list
+output fput :smallest (ssort remove.once :smallest :list)
+end
+
+to remove.once :item :list
+if equalp :item first :list [output butfirst :list]
+output fput first :list (remove.once :item butfirst :list)
+end
+</PRE>
+
+<P>In this version of <CODE>ssort</CODE>, we start by finding the
+smallest number in the list.  Then we remove that number from the
+list, sort what's left, and put the smallest number back at the front
+of the sorted list.  The only slight complication is that I had to
+write my own variant of <CODE>remove</CODE> that, unlike the standard Berkeley
+Logo library version, removes only one copy of the chosen number from
+the list, just in case the same number appears more than once.
+
+<P>By using <CODE>min</CODE> to find the smallest number, I've interfered with
+my goal of counting the number of comparisons, but I didn't worry about
+that because I'm about to rewrite <CODE>ssort</CODE> anyway.  The problem is
+that this version goes through the list of numbers twice for each
+invocation, first to find the smallest number and then again to remove
+that number from the list that will be used as input to the recursive
+call.  The program will be much faster if it does the finding and the
+removing all at once.  The resulting procedure is a little harder to
+read, but it should help if you remember that it's trying to do the same
+job as the original version.
+
+<P><PRE>to ssort :list
+if emptyp :list [output []]
+output ssort1 (first :list) (butfirst :list) []
+end
+
+to ssort1 :min :in :out
+if emptyp :in [output fput :min ssort :out]
+if lessthanp :min (first :in) ~
+   [output ssort1 :min (butfirst :in) (fput first :in :out)]
+output ssort1 (first :in) (butfirst :in) (fput :min :out)
+end
+</PRE>
+
+<P><CODE>Ssort</CODE> is invoked once for each time a smallest number must
+be found.  For each of those iterations, <CODE>ssort1</CODE> is invoked once for
+each member of the still-unsorted list; the numbers in the list are moved
+from <CODE>:in</CODE> to <CODE>:out</CODE> except that the smallest-so-far is singled out
+in <CODE>:min</CODE>.
+
+<P>Suppose we try out <CODE>ssort</CODE> on our list of 100 numbers.  How many
+comparisons will be needed?  To find the smallest of 100 numbers we have to
+make 99 comparisons; the smallest-so-far must be compared against each of
+the remaining ones.  To find the next smallest requires 98 comparisons, and
+so on.  Finally we have two numbers remaining to be sorted and it takes one
+comparison to get them in order.  The total number of comparisons is
+<P><CENTER>99+98+97+ &middot;&middot;&middot; +2+1 = 4950</CENTER><P>
+It makes no difference what order the numbers were in to begin with, or
+whether some of them are equal, or anything else about the input data.  It
+takes 4950 comparisons for <CODE>ssort</CODE> to sort 100 numbers, period.  You can
+try out the program on various lists of 100 numbers to make sure I'm right.
+
+<P>In general, if we want to sort a list of length <EM>n</EM> with <CODE>ssort</CODE> the
+number of comparisons required is the sum of the integers from 1 to <EM>n</EM>&minus;1.
+It turns out that there is a closed form definition for this sum:
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/sumints.gif"></CENTER><P>
+
+<P>Selection sort uses these three steps:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pull out the smallest value.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort the other values.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the smallest one at the front.
+
+<P></TABLE><P>
+
+<P>It's the first of those steps that does the comparisons.  A similar
+but different algorithm is <EM>insertion sort,</EM> which defers the
+comparisons until the last step:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pull out any old value (such as the <CODE>first</CODE>).
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort the other values.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the chosen one where it belongs, in order.
+
+<P></TABLE><P>
+
+<P>Try writing a procedure <CODE>isort</CODE> to implement this
+algorithm.  How many comparisons does it require?  You'll find that
+for this algorithm the answer depends on the input data.  What is the
+smallest possible number of comparisons?  The largest number?  What
+kinds of input data give rise to these extreme values?
+
+<P><H2>Sorting by Partition</H2>
+
+<P>There is one fundamental insight behind all methods for sorting with fewer
+comparisons:  Two small sorting jobs are faster than one large one.
+Specifically, suppose we have 100 numbers to sort.  Using <CODE>ssort</CODE>
+requires 4950 comparisons.  Instead, suppose we split up the 100 numbers
+into two groups of 50.  If we use <CODE>ssort</CODE> on each group, each will
+require 1225 comparisons; the two groups together require twice that, or
+2450 comparisons.  That's about half as many
+comparisons as the straight <CODE>ssort</CODE> of 100 numbers.
+
+<P>But this calculation underestimates how much time we can save using this
+insight, because the same reasoning applies to each of those groups of 50.
+We can split each into two groups of 25.  Then how many comparisons will be
+required altogether?
+
+<P>The basic idea we'll use is to pick some number that we think is likely to
+be a median value for the entire list; that is, we'd like half the numbers
+to be less than this partition value and half to be greater.  There are many
+possible ways to choose this partition value; I'm going to take the average
+of the first and last numbers of the (not yet sorted!) input.  Then we run
+through the input list, dividing it into two smaller pieces by comparing
+each number against the partition value.  (Notice that <CODE>ssort</CODE> compares
+pairs of numbers within the input list; the partition sort compares one
+number from the list against another number that might or might not itself
+be in the list.)  We use the same technique recursively to sort each of the
+two sublists, then append the results.
+
+<P>Note the similarities and differences between this selection sort algorithm:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Pull out the smallest value.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort the other values.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the smallest one at the front.
+
+<P></TABLE><P>
+
+<P>and the following <EM>partition sort</EM> algorithm:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Divide the input into the small-value half and the large-value half.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort each half separately.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the sorted small values in front of the sorted large ones.
+
+<P></TABLE><P>
+
+<P>Again, I'll write this program more than once, first in an overly simple version
+and then more realistically.  Here's the simple one:
+
+<P><PRE>to psort :list
+if (count :list) &lt; 2 [output :list]
+localmake &quot;split guess.middle.value :list
+output sentence psort filter [? &lt; :split] :list ~
+                psort filter [not (? &lt; :split)] :list
+end
+
+to guess.middle.value :list
+output ((first :list) + (last :list)) / 2
+end
+</PRE>
+
+<P>To minimize the number of comparisons, we want to split the input list
+into two equal-size halves.  It's important to note that this program
+is only guessing about which value of <CODE>:split</CODE> would achieve that
+balanced splitting.  You may wonder why I didn't take the average of
+all the numbers in the list.  There are two reasons.  One is that that
+would add a lot of time to the sorting process; we'd have to look at
+every number to find the average, then look at every number again to do
+the actual splitting.  But a more interesting reason is that the average
+isn't quite what we want anyway.  Suppose we are asked to sort this
+list of numbers:
+
+<P><PRE>[3 2 1000 5 1 4]
+</PRE>
+
+<P>The average of these numbers is about 169.  But if we use
+that value as the split point, we'll divide the list into these two
+pieces:
+
+<P><PRE>[3 2 5 1 4]  and  [1000]
+</PRE>
+
+<P>Not a very even division!  To divide this list of six values
+into two equal pieces, we'd need a split point of 3 &frac12;.  In
+general, what we want is the <EM>median</EM> value rather than the
+<EM>average</EM> value.  And if you think about it, you pretty much have
+to have the numbers already sorted in order to find the median.<SUP>*</SUP>  So we just try to make a good guess that
+doesn't take long to compute.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>That
+isn't quite true; there is a clever algorithm that can find the median
+after only a partial sorting of the values.  But it's true enough that
+we can't use a sorting algorithm whose first step requires that we've
+already done some sorting.</SMALL></BLOCKQUOTE></SMALL><P>Just as in the case of selection sort, one problem with this simple program
+is that it goes through the input list twice, once for each of the calls to
+<CODE>filter</CODE>.  And the call to <CODE>count</CODE> in the end test adds a third walk
+through the entire list.  Here's a version that fixes those inefficiencies:
+
+<P><PRE>to psort :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+localmake &quot;split ((first :list) + (last :list)) / 2
+output psort1 :split :list [] []
+end
+
+to psort1 :split :in :low :high
+if emptyp :in [output sentence (psort :low) (psort :high)]
+if lessthanp first :in :split ~
+   [output psort1 :split (butfirst :in) (fput first :in :low) :high]
+output psort1 :split (butfirst :in) :low (fput first :in :high)
+end
+</PRE>
+
+<P>This version of <CODE>psort</CODE> has one good attribute and one bad
+attribute.  The good attribute is that it's very cleanly organized.  You can
+see that it's the job of <CODE>psort</CODE> to choose the partition value and the
+job of <CODE>psort1</CODE> to divide the list in two parts based on comparisons
+with that value.  The bad attribute is that it doesn't <EM>quite</EM> work as
+it stands.
+
+<P>As for any recursive procedure, it's important that the input get smaller
+for each recursive invocation.  If not, <CODE>psort</CODE> could end up invoking
+itself over and over with the same input.  It's very easy to see that <CODE>
+ssort</CODE> avoids that danger, because the input list is shorter by exactly one
+member for each recursive invocation.  But <CODE>psort</CODE> divides its input
+into two pieces, each of which ought to be about half the length of the
+original if we're lucky.  We're lucky if the partition value we choose is,
+in fact, the median value of the input list.  If we're less lucky, the two
+parts might be imbalanced, say &frac14; of the members below the partition and
+&frac34; of them above it.  Can we be <EM>so</EM> unlucky that <EM>all</EM> of
+the input numbers are on the same side of the partition?  See if you can
+think of a case in which this will happen.
+
+<P>The partition value is chosen as the average of two members of the input
+list.  If those two members (the first and last) are unequal, then one of
+them must be less than the partition value and the other greater.  So there
+will be at least one number on each side of the partition.  But if the two
+averaged numbers are equal, then the partition value will be equal to both
+of them.  Each of them will be put in the <CODE>high</CODE> bucket.  If all the
+other numbers in the list are also greater than or equal to the partition,
+then they'll all end up in the <CODE>high</CODE> bucket, and nothing will be
+accomplished in the recursion step.  The simplest failing example is trying
+to sort a list of numbers all of which are equal, like
+
+<P><PRE>? <U>show psort [4 4 4 4 4]</U>
+</PRE>
+
+<P>We could take various approaches to eliminating this bug.  See how
+many ways you can think of, and decide which you like best, before reading
+further.
+
+<P>Since the problem has to do with the choice of partition value, you could
+imagine using a more complicated means to select that value.  For example,
+you could start with the first member of the input list, then look through
+the list for another member not equal to the first.  When you find one,
+average the two of them and that's the partition value.  If you get all the
+way to the end of the list without finding two unequal members, declare the
+list sorted and output it as is.  The trouble with this technique is that
+many extra comparisons are needed to find the partition value.  Those
+comparisons don't really help in ordering the input, but they do add to the
+time taken just as much as the &quot;real&quot; comparisons done later.
+
+<P>Another approach is to say that since the problem only arises if the first
+and last input members are equal, we should treat that situation as a
+special case.  That is, we'll add an instruction like
+
+<P><PRE>if equalp first :list last :list [...]
+</PRE>
+
+<P>Again, this approach adds a comparison that doesn't really help to
+sort the file, although it's better than the first idea because it only adds
+one extra comparison per invocation instead of perhaps several.
+
+<P>A more straightforward approach that might seem to make the program more
+efficient, rather than less, is to divide the list into <EM>three</EM>
+buckets, <CODE>low</CODE>, <CODE>high</CODE>, and <CODE>equal</CODE>.  This way, the problem gets
+shorter faster, since the <CODE>equal</CODE> bucket doesn't have to be sorted
+recursively; it's already in order.  The trouble is that it takes two
+comparisons, one for equality and one for <CODE>lessthanp</CODE>, to know how to
+direct each list member into a three-way split.  Some computers can compare
+numbers once and branch in different directions for less, equal, or greater;
+one programming language, Fortran, includes that kind of three-way branching
+through an &quot;arithmetic IF&quot; statement that accepts different instructions
+for the cases of a given quantity being less than, equal to, or greater than
+zero.  But in Logo we'd have to say
+
+<P><PRE>if lessthanp first :in :split [...]
+if equaltop first :in :split [...]
+</PRE>
+
+<P>with two comparisons for each list member.  (I'm imagining that
+<CODE>equaltop</CODE> would keep track of the number of comparisons just as
+<CODE>lessthanp</CODE> does.)
+
+<P>What I chose was to do the first <CODE>lessthanp</CODE> test for the list in <CODE>
+psort</CODE> instead of <CODE>psort1</CODE>, and use it to ensure that either the first
+or the last member of the list starts out the <CODE>low</CODE> bucket.
+
+<P><PRE>to psort :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+localmake &quot;split ((first :list) + (last :list)) / 2
+if lessthanp first :list :split ~
+   [output psort1 :split (butfirst :list) (list first :list) []]
+output psort1 :split (butlast :list) (list last :list) []
+end
+</PRE>
+
+<P><CODE>Psort1</CODE> is unchanged.
+
+<P>How many comparisons should <CODE>psort</CODE> require to sort 100 numbers?  Unlike
+<CODE>ssort</CODE>, its exact performance depends on the particular list of numbers
+given as input.  But we can get a general idea.  The first step is to divide
+the 100 numbers into two buckets, using 100 comparisons against the
+partition value.  The second step divides each of the buckets in two again.
+We can't say, in general, how big each bucket is; but we do know that each
+of the original 100 numbers has to be in one bucket or the other.  So each
+of 100 numbers will participate in a comparison in this second round also.
+The same argument applies to the third round, and so on.  Each round
+involves 100 comparisons.  (This isn't quite true toward the end of the
+process.  When a bucket only contains one number, it is considered sorted
+without doing any comparisons.  So as the buckets get smaller, eventually
+some of the numbers &quot;drop out&quot; of the comparison process, while others are
+still not in their final position.)
+
+<P>Each round involves 100 comparisons, more or less.  How many rounds are
+there?  This is where the original ordering of the input data makes itself
+most strongly felt.  If we're lucky, each round divides each bucket exactly
+in half.  In that case the size of the buckets decreases uniformly:
+
+<P><PRE>round    size
+
+  1       100
+  2        50
+  3        25
+  4        12,13
+  5         6,7
+  6         3,4
+  7         1,2
+</PRE>
+
+<P>There is no round 8, because by then all of the buckets would be
+of length 1 and there is no work left to do.  So if all goes well we'd
+expect to make about 700 comparisons, really a little less because by round
+7 some of the numbers are already in length-1 buckets.  Maybe 650?
+
+<P>What is the <EM>worst</EM> case?  That would be if each round divides the
+numbers into buckets as unevenly as possible, with one number in one bucket
+and all the rest in the other.  In that case it'll take 99 rounds to get all
+the numbers into length-1 buckets.  You may be tempted to estimate 9900
+comparisons for that situation, but in fact it isn't quite so bad, because
+at each round one number falls into a length-1 bucket and drops out of the
+sorting process.  So the first round requires 100 comparisons, but the
+second round only 99, the third 98, and so on.  This situation is very much
+like the way <CODE>ssort</CODE> works, and so we'd expect about 5000 comparisons.
+
+<P>Now try some experiments.  Try <CODE>psort</CODE> on your random list, then try to
+find input lists that give the best and worst possible results.
+
+<P><CODE>Psort</CODE> required 725 comparisons for my random list.  That's somewhat
+more than we predicted for the best case, but not too much more.  <CODE>
+Psort</CODE> seems to have done pretty well with this list.  The simplest
+worst-case input is one in which all the numbers are the same; I said
+
+<P><PRE>make &quot;bad cascade 100 [fput 20 ?] []
+</PRE>
+
+<P>to make such a list.  <CODE>Psort</CODE> required 5049 comparisons to
+sort this list, slightly <EM>worse</EM> than <CODE>ssort</CODE> at 4950 comparisons.
+
+<P>What would a best-case input look like?  It would divide evenly at each
+stage; that is, the median value at each stage would be the average of the
+first and last values.  The simplest list that should meet that criterion is
+a list of all the numbers from 1 to 100 in order:
+
+<P><PRE>make &quot;inorder cascade 100 [lput # ?] []
+</PRE>
+
+<P>(Or you could use the <CODE>reverse</CODE> trick discussed earlier, but
+for only 100 numbers it didn't seem worth the extra typing to me.)  Using
+<CODE>psort</CODE> to sort this list should require, we said, somewhere around 650
+to 700 comparisons.  In fact it took 734 comparisons when I tried it,
+slightly <EM>more</EM> than my randomly ordered list (725 comparisons).
+
+<P>Even 734 comparisons isn't terrible by any means, but when an algorithm
+performs worse than expected, a true algorithm lover wants to know why.
+Test cases like these can uncover either inefficiencies in the fundamental
+algorithm or else ways in which the actual computer program doesn't live up
+to the algorithm as described in theoretical language.  If we could &quot;tune
+up&quot; this program to sort <CODE>:inorder</CODE> in fewer than 700 comparisons, the
+change might well improve the program's performance for any input.  See if
+you can figure out what the problem is before reading further.  You can try
+having <CODE>psort</CODE> print out its inputs each time it's called, as a way to
+help gather information.
+
+<P>Here's a very large hint.  I tried using the original version of <CODE>
+psort</CODE>, before fixing the bug about the recursion sometimes leaving all the
+numbers in one basket, and it sorted <CODE>:inorder</CODE> in only 672 comparisons.
+(I knew the bug wouldn't make trouble in this case because none of the
+numbers in this particular input list are equal.)  Can you devise a better
+<CODE>psort</CODE> that both works all the time and performs optimally for the
+best-case input?
+
+<P>This partition sorting scheme is essentially similar to a very well-known
+algorithm named quicksort, invented by C. A. R. Hoare.
+Quicksort includes many improvements over this algorithm, not primarily in
+reducing the number of comparisons but in decreasing the overhead time by,
+for example, exchanging pairs of input items in their original memory
+locations instead of making copies of sublists.  Quicksort also switches to
+a more straightforward <CODE>ssort</CODE>-like algorithm for very small input lists,
+because the benefit of halving the problem is outweighed by the greater
+complexity.  (In fact, for a two-item input, <CODE>ssort</CODE> makes one
+comparison and <CODE>psort</CODE> two.)
+
+<P>Here's the partition sort algorithm again:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Divide the input into the small-value half and the large-value half.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort each half separately.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Put the sorted small values in front of the sorted large ones.
+
+<P></TABLE><P>
+
+<P>The idea of cutting the problem in half is also used in
+the following algorithm, called <EM>mergesort:</EM>
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Divide the input arbitrarily into two equal size pieces.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Sort each half separately.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><EM>Merge</EM> the two sorted pieces by comparing values.
+
+<P></TABLE><P>
+
+<P>In a way, mergesort is to partition sort as insertion sort
+is to selection sort.  Both insertion sort and mergesort defer the
+comparisons of numbers until the final step of the algorithm.
+
+<P>There is one important way in which mergesort is better than partition
+sort.  Since mergesort doesn't care how the input values are separated, we
+can ensure that the two pieces are each exactly half the size of the input.
+Therefore, the number of comparisons needed is always as small as possible;
+there are no bad inputs.  Nevertheless, quicksort is more widely used than
+mergesort, because the very best implementations of quicksort seem to
+require less overhead time, for the average input, than the best
+implementations of mergesort.
+
+<P>If you want to write a mergesort program, the easiest way to divide a
+list into two equal pieces is to select every other member, so the
+odd-position members are in one half and the even-position members
+in the other half.
+
+<P><H2>Order of Growth</H2>
+
+<P>I've mentioned that the complete quicksort algorithm includes several
+optimization strategies to improve upon the partition sort I've
+presented here.  How important are these strategies?  How much does
+overhead contribute to the cost of a program?  I did some experiments
+to investigate this question.
+
+<P>First I timed <CODE>psort</CODE> and <CODE>ssort</CODE> with inputs of length 300.
+Here are the results:
+
+<P><CENTER><TABLE>
+<TR><TH>program<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH>comparisons<TH>time<TH>comparisons<TH> per second
+<TR><TD align="center"><CODE>psort</CODE><TD><TD align="right">2940&nbsp;&nbsp;&nbsp;&nbsp;<TD align="right">29 seconds<TD align="right">100
+<TR><TD align="center"><CODE>ssort</CODE><TD><TD align="right">44850&nbsp;&nbsp;&nbsp;&nbsp;<TD align="right">313 seconds<TD align="right">143
+</TABLE></CENTER>
+
+<P><CODE>Ssort</CODE> seems to have much less overhead, since it can do
+more comparisons per second than <CODE>psort</CODE>.  Nevertheless, <CODE>psort</CODE>
+always seems to be faster, for every size input I tried.  The number
+of comparisons outweighs the overhead.  (By the way, these numbers don't
+measure how fast the computer can compare two numbers!  A typical computer
+could perform more than a million comparisons per second, if only
+comparisons were involved.  Most of the time in these experiments is
+actually going into the process by which the Logo interpreter figures out
+what the instructions in the program mean.  Because Berkeley Logo is
+an interpreter, this figuring-out process happens every time an instruction
+is executed.  By contrast, I tried <CODE>ssort</CODE> on a list of length 300 in
+Object Logo, a compiled version in which each instruction is figured out
+only once, and the total time was 3.6 seconds.)
+
+<P>I wanted to give local optimization the best possible chance to win the
+race, and so I decided to make selection sort as fast as I could, and
+partition sort as slow as I could.  I modified <CODE>ssort</CODE> to use the
+Logo primitive <CODE>lessp</CODE> for comparison instead of doing the extra
+bookkeeping of <CODE>lessthanp</CODE>, and I replaced <CODE>psort</CODE> with this
+implementation:
+
+<P><PRE>to slowsort :list
+if (count :list) &lt; 2 [output :list]
+localmake &quot;split (reduce &quot;sum :list)/(count :list)
+output (sentence slowsort filter [? &lt; :split] :list
+                 filter [? = :split] :list
+                 slowsort filter [? &gt; :split] :list)
+end
+</PRE>
+
+<P>This version examines every member of the input list six times
+on each recursive call!  (<CODE>Count</CODE> is invoked twice; <CODE>reduce</CODE>
+looks at every list member once; and <CODE>filter</CODE> is called three times
+to do the actual partition.)  Under these conditions I was able to get
+<CODE>ssort</CODE> to win the race, but only for very small inputs:
+
+<P><CENTER><TABLE>
+<TR><TH>program<TH>&nbsp;&nbsp;&nbsp;<TH>20 numbers<TH>&nbsp;&nbsp;&nbsp;<TH>100 numbers<TH>&nbsp;&nbsp;&nbsp;<TH>300 numbers
+<TR><TD><CODE>slowsort</CODE><TD><TD align="right">2.7 seconds<TD><TD align="right">18 seconds<TD><TD align="right">63 seconds
+<TR><TD><CODE>ssort</CODE><TD><TD align="right">1.2 seconds<TD><TD align="right">20 seconds<TD><TD align="right">182 seconds
+</TABLE></CENTER>
+
+<P><CODE>Ssort</CODE> wins when sorting 20 numbers, but both programs
+take less than three seconds.  For 100 numbers, <CODE>slowsort</CODE> is
+already winning the race, and its lead grows as the input list grows.
+This is a common pattern:  For small amounts of data, when the program is
+fast enough no matter how you write it, local optimization can win the race,
+but once the problem is large enough so that you actually care about
+efficiency, choosing a better overall algorithm is always more important.
+(Of course the very best results will come from choosing a good algorithm
+<EM>and</EM> optimizing the program locally.)
+
+<P>What does &quot;a better algorithm&quot; actually mean?  How do we measure the
+quality of an algorithm?  We've made a good start by counting the number
+of comparisons required for our two sorting algorithms, but there is a
+formal notation that can make the issues clearer.
+
+<P>Earlier I said that for a list of <EM>n</EM> numbers, <CODE>ssort</CODE> makes
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/sumints.gif"></CENTER><P>
+comparisons.  But in a sense this tells us more than we want to
+know, like saying that a certain program took 1,243,825 microseconds instead
+of saying that it took somewhat over a second.  The important thing to say
+about <CODE>ssort</CODE> is that the number of comparisons is roughly proportional
+to <EM>n</EM><SUP><SMALL>2</SMALL></SUP>; that is, doubling the size of the input list will quadruple the
+time needed to sort the list.  More formally, we say that the time required
+for selection sorting is O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>), pronounced &quot;big-oh of <EM>n</EM><SUP><SMALL>2</SMALL></SUP>&quot; or
+&quot;order <EM>n</EM><SUP><SMALL>2</SMALL></SUP>.&quot;  This is an abbreviation for the statement, &quot;for large enough <EM>n</EM>,
+the time is bounded by <EM>n</EM><SUP><SMALL>2</SMALL></SUP> times a constant.&quot;
+The part about &quot;for large enough <EM>n</EM>&quot; is important because the running
+time for some algorithm might, for example, involve a large constant setup
+time.  For small <EM>n</EM> that setup time might contribute more to the overall
+time required than the part of the algorithm proportional<SUP>*</SUP> to <EM>n</EM><SUP><SMALL>2</SMALL></SUP>, but
+once <EM>n</EM> becomes large enough, the <EM>n</EM><SUP><SMALL>2</SMALL></SUP> part will overtake any constant.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Strictly
+speaking, the fact that an algorithm's time requirement is O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) doesn't
+mean that it's even approximately proportional to <EM>n</EM><SUP><SMALL>2</SMALL></SUP>, because O(...)
+only establishes an upper bound.  The time requirement could be proportional
+to <EM>n</EM>, which would be better than <EM>n</EM><SUP><SMALL>2</SMALL></SUP>, and still be O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>).  But
+usually people use O(...) notation to mean that no smaller
+order of growth would work, even though there's an official notation
+with that meaning, &Theta;(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>), pronounced &quot;big theta.&quot;</SMALL></BLOCKQUOTE></SMALL><P>I'd like to have a similar representation, O(something), for the
+number of comparisons used by <CODE>psort</CODE> in the typical case.  We said that
+for 100 numbers, each round of sorting involves about 100 comparisons, and
+the number of rounds required is the number of times you have to divide 100
+by 2 before you get down to 1, namely between 6 and 7.  The number of
+comparisons expected is the product of these numbers.  In the general case,
+the first number is just <EM>n</EM>.  But what is the general formula for the
+number of times you have to divide <EM>n</EM> by 2 to get 1?  The answer is log<SUB><SMALL>2</SMALL></SUB>&nbsp;<EM>n</EM>.  For example, if we had 128 numbers in the list instead of 100, we would
+require exactly 7 rounds (in the best case) because 2<SUP><SMALL>7</SMALL></SUP>&nbsp;=&nbsp;128 and so
+log<SUB><SMALL>2</SMALL></SUB>&nbsp;128&nbsp;=&nbsp;7.  (By the way, log<SUB><SMALL>2</SMALL></SUB>&nbsp;100&nbsp;&cong;&nbsp;6.65, so the
+theoretical best case for 100 numbers is 665 comparisons.)
+
+<P>In general, all the obvious sorting algorithms are O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) and all the
+clever ones are O(<EM>n</EM>&nbsp;log&nbsp;<EM>n</EM>).<SUP>*</SUP>  (I don't
+have to say  O(<EM>n</EM>&nbsp;log<SUB><SMALL>2</SMALL></SUB>&nbsp;<EM>n</EM>) because the difference between logarithms to
+different bases is just multiplication by a constant factor, which doesn't
+count in O(...) notation, just as I don't have to worry about the fact
+that the formula for <CODE>ssort</CODE> comparisons is nearer <EM>n</EM><SUP><SMALL>2</SMALL></SUP>/2 than <EM>n</EM><SUP><SMALL>2</SMALL></SUP>.)
+By the way, I haven't really <EM>proven</EM> that <CODE>psort</CODE> is O(<EM>n</EM>&nbsp;log&nbsp;<EM>n</EM>)
+in the <EM>typical</EM> case, only that it is in the best case.  It's much
+harder to prove things about the typical (or average) performance of any
+sorting algorithm, because what is an &quot;average&quot; input list?  For some
+algorithms there is no proven formula for the average run time, but only the
+results of experiments with many randomly chosen lists.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Don Knuth has written an O(<EM>n</EM><SUP><SMALL>3</SMALL></SUP>)
+
+sort program, just as an example of especially bad programming.</SMALL></BLOCKQUOTE></SMALL><P>An O(<EM>n</EM>) algorithm is called <EM>linear</EM> and an O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) one <EM>
+quadratic.</EM>  O(<EM>n</EM>&nbsp;log&nbsp;<EM>n</EM>) is in between those, better than quadratic but not
+as good as linear.  What other orders of growth are commonly found?  As one
+example, the pre-memoized procedures for the <CODE>t</CODE> and <CODE>simplex</CODE>
+functions in Chapter 2 have time requirements that are O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>); these are
+called <EM>exponential</EM> algorithms.  This means that just adding one
+to <EM>n</EM> makes the program take twice as long!  The experimental results I gave
+earlier agree with this formula: <CODE>simplex 10</CODE> took 80 seconds, while
+<CODE>simplex 12</CODE> took 5&nbsp;&frac12; minutes, about four times as long.
+<CODE>Simplex 16</CODE> would take over an hour.  (Start with 80 seconds, and
+double it six times.)  The memoized versions in this chapter are O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>)
+(can you prove that?), which is much more manageable.  But for some
+<EM>really</EM> hard problems there is no known way to make them any
+faster than O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>);
+problems like that are called <EM>intractable,</EM> while ones that
+are merely polynomial--O(<EM>n</EM><SUP><SMALL><EM>i</EM></SMALL></SUP>) for any constant <EM>i</EM>--are called <EM>
+tractable.</EM>
+
+<P><H2>Data Structures</H2>
+
+
+<P>One of the reasons computers are so useful is that they can contain
+a tremendous amount of information.  An important part of writing
+a large computer program is figuring out how to organize the information
+used in the program.  Most of the time, a program doesn't have to
+deal with a bunch of unrelated facts, like &quot;Tomatoes are red&quot;
+and &quot;7 times 8 is 56.&quot;  Instead there will be some kind of uniformity,
+or natural grouping, in the information a program uses.
+
+<P>We'll see, too, that the data structures you choose for your program affect
+the algorithms available to you.  Organizing your data cleverly can reduce
+the execution time of your procedures substantially.
+
+<P><H2>Data Structures in Real Life</H2>
+
+<P>Why should there be different kinds of organization?  It might help
+to look at some analogies with data structures outside of computers.
+First of all, think about your personal address book.  It probably
+has specific pages reserved for each letter of the alphabet.  Within
+a letter, the names and addresses of people starting with that letter
+are arranged in no particular order; you just add a new person in
+the first free space on the page.
+
+<P>Now think about the printed telephone directory for your city.  In
+this case the names are not arranged randomly within each letter;
+they're in strict alphabetical order.  In computer science terminology,
+the printed directory is a <EM>sorted list,</EM> while your personal
+directory is a <EM>hash table.</EM>
+
+<P>Obviously, if the entries in the printed directory weren't in order
+it would take much too long to find an address.  You can get away
+with random ordering within each letter in your personal directory
+because you know a small enough number of people that it doesn't take
+too long to look through each one.  But you probably do know enough
+people to make the separate page for each letter worthwhile, even
+though the page for Q may be practically empty.  By using separate
+pages for each letter, with unused slots on each page reserved
+for expansion, you are <EM>spending space</EM> to <EM>buy time.</EM>
+That is, your address book is bigger than it would be if it were just
+one long list, but looking up a number is faster this way.  This
+tradeoff between time and space is typical of computer
+programming problems also.
+
+<P>Why don't you keep your personal directory in strict alphabetical order,
+like the printed phone book?  If you did that, looking up a number would be
+even faster.  The problem is that <EM>adding</EM> a new number would be
+terribly painful; you'd have to erase all the names on the page below where
+the new name belongs and rewrite each of them one line below where it
+was.<SUP>*</SUP>  In this case there is a tradeoff between <EM>
+storage time</EM> and <EM>retrieval time;</EM> you pay a small
+price in retrieval time to avoid a large price in storage time.  This, too,
+is a common aspect of data structure design in computer programs.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Why doesn't the phone company have to do that whenever they get
+a new customer?  The answer is that they maintain the directory information
+in two forms.  The printed directory is the <EM>external</EM> representation,
+used only for looking up information; inside their computers they use an
+<EM>internal</EM> representation that allows for easier insertion of new
+entries.</SMALL></BLOCKQUOTE></SMALL><P>Other kinds of real-life data structures also have computer analogues.
+If your desk looks like mine, with millions of little slips of paper
+all over the place, it is what computer scientists call a <EM>
+heap.</EM><SUP>*</SUP>
+This might be an appropriate data structure for those cases in
+which the program must deal with a large mass of unrelated facts.
+On the other hand, in a large business office there will be a <EM>
+hierarchical</EM> filing system.  A file cabinet labeled &quot;Personnel
+Records&quot; might contain a drawer labeled &quot;Inactive A-H&quot;; that drawer
+would contain a file folder for each former employee whose name starts
+with an appropriate letter.  This kind of hierarchy might be represented
+as a <EM>tree</EM> in a computer program.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Unfortunately, there are two things called a &quot;heap&quot; in
+computer science.  I'm thinking of the storage allocation heap, not the
+special tree structure used in the &quot;heapsort&quot; algorithm.</SMALL></BLOCKQUOTE></SMALL><P><H2>Trees</H2>
+
+<P>We've used the idea of trees before.  In Volume 1, the program to solve
+pitcher pouring problems was designed in terms of a tree of possible
+solution steps, although that tree was not represented as actual data
+in the program.  In Volume 2, I wrote <CODE>tree.map</CODE> as an example of a
+higher order function operating on trees in which the leaf nodes are
+words and the branch nodes are phrases.  In this chapter we'll work
+toward a general representation of trees as an abstract data type.
+
+<P>Here is a hierarchical grouping of some of the world's cities:
+
+<P><CENTER><IMG SRC="worldtree.gif" ALT="figure: worldtree"></CENTER>
+
+<P>Recall that a diagram like this is called a tree because it resembles a real
+tree turned upside-down.  Each place where a word or phrase appears in the
+tree is called a <EM>node.</EM> At the top of the diagram is the <EM>
+root node</EM> (<CODE>world</CODE>). The lines between nodes are called <EM>
+branches.</EM> The cities, which do not have branches extending below them,
+are called <EM>leaf nodes.</EM> The in-between nodes, the countries
+and provinces, are called <EM>branch nodes.</EM> (The root node is
+also considered a branch node since it, too, has branches below it.)  This
+tree tells us that Toronto is in Ontario, which is in Canada, which is in the
+world.
+
+<P>A tree is a very general data structure because its shape is very flexible.
+For example, in the part of this tree that represents Canada I've included
+a level of tree structure, representing the provinces, that isn't
+included in the subtree that represents France.  As we'll see later, some
+algorithms deal with restricted categories of trees.  For example, a <EM>
+
+binary</EM> tree is a tree with at most two branches below each branch node.
+
+<P>So far this data structure is just a graphic representation on paper.  There
+are many ways in which a tree can be implemented in a computer program.
+Let's say that I want to represent the tree of cities in a computer so that
+I can ask questions from this data base.  That is, I'd like to write a
+program that will allow interactions like
+
+<P><PRE>? <U>show locate &quot;Montreal</U>
+[world Canada Quebec Montreal]
+</PRE>
+
+<P>Let's pick a particular way to represent a tree in Logo.  (I
+should warn you that later in the chapter I'm going to invent different
+representations, but I want to start with a simple one to meet our
+immediate needs.  So what you're about to see is not the final version of
+these procedures.)  Here's
+the way I'm going to do it:  Each branch node will be represented as a Logo
+variable whose name is the name of the node, containing as its value a list
+of the names of the nodes immediately below it.  For example, this tree will
+include a variable named <CODE>France</CODE> with the value
+
+<P><PRE>[Paris Dijon Avignon]
+</PRE>
+
+<P>A leaf node is just a word that appears in a node list but isn't
+the name of a variable.  For a branch node, <CODE>thing</CODE> of the node's name
+will provide a list of the names of its children.  I can set up the tree
+with this procedure:
+
+<P><PRE>to worldtree
+make &quot;world [France China Canada]
+make &quot;France [Paris Dijon Avignon]
+make &quot;China [Beijing Shanghai Guangzhou Suzhou]
+make &quot;Canada [Ontario Quebec Manitoba]
+make &quot;Ontario [Toronto Ottawa Windsor]
+make &quot;Quebec [Montreal Lachine]
+make &quot;Manitoba [Winnipeg]
+end
+</PRE>
+
+<P>In principle, <CODE>locate</CODE> is a lot like <CODE>filter</CODE>, in the sense that
+we're looking through a data structure for something that meets a given
+condition.  But the implementation is a bit trickier than looking through
+a sequential list, because each invocation gives rise to several recursive
+invocations (one per child), not merely one recursive invocation as usual.
+The program will be easier to understand if we introduce the term
+<EM>forest,</EM> which means a list of trees.
+
+<P><PRE>to locate :city
+output locate1 :city &quot;world
+end
+
+to locate1 :city :subtree
+if equalp :city :subtree [output (list :city)]
+if not namep :subtree [output []]
+localmake &quot;lower locate.in.forest :city (thing :subtree)
+if emptyp :lower [output []]
+output fput :subtree :lower
+end
+
+to locate.in.forest :city :forest
+if emptyp :forest [output []]
+localmake &quot;child locate1 :city first :forest
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest
+end
+
+? <U>show locate &quot;Shanghai</U>
+[world China Shanghai]
+? <U>show locate &quot;Montreal</U>
+[world Canada Quebec Montreal]
+</PRE>
+
+<P>Once we've set up this data base, we can write procedures to ask it other
+kinds of questions, too.
+
+<P><PRE>to cities :tree
+if not namep :tree [output (list :tree)]
+output map.se [cities ?] thing :tree
+end
+
+? <U>show cities &quot;France</U>
+[Paris Dijon Avignon]
+? <U>show cities &quot;Canada</U>
+[Toronto Ottawa Windsor Montreal Lachine Winnipeg]
+</PRE>
+
+<P><H2>Improving the Data Representation</H2>
+
+<P>There's a problem with the representation I've chosen for this tree.
+Suppose we want to expand the data base to include the city of Quebec.
+This city is in the province of Quebec, so all we have to do is add the name
+to the appropriate list:
+
+<P><PRE>make &quot;Quebec [Montreal Quebec Lachine]
+</PRE>
+
+<P>If you try this, however, you'll find that <CODE>locate</CODE> and <CODE>
+cities</CODE> will no longer work.  They'll both be trapped in infinite loops.
+
+<P>The problem with this program can't be fixed just by changing the program.
+It's really a problem in the way I decided to represent a tree.  I said, &quot;a
+leaf node is just a word that appears in a node list but isn't the name of a
+variable.&quot;  But that means there's no way to allow a leaf node with the same
+name as a branch node.  To solve the problem I have to rethink the
+conventions I use to represent a tree.
+
+<P>Being lazy, I'd like to change as little as possible in the program, so I'm
+going to try to find a new representation as similar as possible to the old
+one.  Here's my idea: In my mind I associate a <EM>level</EM> with each
+node in the tree.  The node <CODE>world</CODE> is at level 1, <CODE>France</CODE> and
+<CODE>Canada</CODE> at level 2, and so on.  The names of the variables used to hold
+the contents of a node will be formed from the node name and the level:
+<CODE>world1</CODE>, <CODE>France2</CODE>, <CODE>Ontario3</CODE>, and so on.  This solves the
+problem because the node for Quebec province will be a branch node by virtue
+of the variable <CODE>Quebec3</CODE>, but the node for Quebec city will be a leaf
+node because there will be no <CODE>Quebec4</CODE> variable.
+
+<P>As it turns out, though, I have to change the program quite a bit to make
+this work.  Several procedures must be modified to take the level number
+as an additional input.  Also, since the variable that holds the information
+about a place is no longer exactly named with the place's name, <CODE>cities</CODE>
+has some extra work to do, just to find the node whose cities we want to
+know.  It can almost use <CODE>locate</CODE> for this purpose, but with a slight
+wrinkle:  If we ask for the cities in Quebec, we mean Quebec province, not
+Quebec city.  So we need a variant of <CODE>locate</CODE> that finds the node
+highest up in the tree with the desired place name.  I gave subprocedure
+<CODE>locate1</CODE> an extra input, named <CODE>highest</CODE>, that's <CODE>true</CODE> if we want
+the highest matching tree node (when called from <CODE>cities</CODE>) or <CODE>false</CODE>
+if we want a matching leaf node (when called from <CODE>locate</CODE>).
+
+<P><PRE>to worldtree
+make &quot;world1 [France China Canada]
+make &quot;France2 [Paris Dijon Avignon]
+make &quot;China2 [Beijing Shanghai Guangzhou Suzhou]
+make &quot;Canada2 [Ontario Quebec Manitoba]
+make &quot;Ontario3 [Toronto Ottawa Windsor]
+make &quot;Quebec3 [Montreal Quebec Lachine]
+make &quot;Manitoba3 [Winnipeg]
+end
+
+to locate :city
+output locate1 :city &quot;world 1 &quot;false
+end
+
+to locate1 :city :subtree :level :highest
+localmake &quot;name (word :subtree :level)
+if and :highest equalp :city :subtree [output (list :city)]
+if not namep :name ~
+   [ifelse equalp :city :subtree
+           [output (list :city)]
+           [output []]]
+localmake &quot;lower locate.in.forest :city (thing :name) :level+1 :highest
+if emptyp :lower [output []]
+output fput :subtree :lower
+end
+
+to locate.in.forest :city :forest :level :highest
+if emptyp :forest [output []]
+localmake &quot;child locate1 :city first :forest :level :highest
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest :level :highest
+end
+
+to cities :tree
+localmake &quot;path locate1 :tree &quot;world 1 &quot;true
+if emptyp :path [output []]
+output cities1 :tree count :path
+end
+
+to cities1 :tree :level
+localmake &quot;name (word :tree :level)
+if not namep :name [output (list :tree)]
+output map.se [(cities1 ? :level+1)] thing :name
+end
+
+? <U>show locate &quot;Quebec</U>
+[world Canada Quebec Quebec]
+? <U>show cities &quot;Canada</U>
+[Toronto Ottawa Windsor Montreal Quebec Lachine Winnipeg]
+</PRE>
+
+<P>This new version solves the Quebec problem.  But I'm still not satisfied.
+I'd like to add the United States to the data base.  This is a country whose
+name is more than one word.  How can I represent it in the tree structure?
+The most natural thing would be to use a list: <CODE>[United States]</CODE>.
+Unfortunately, a list can't be the name of a variable in Logo.  Besides,
+now that I've actually written the program using this representation I see
+what a kludge it is!
+
+<P><H2>Trees as an Abstract Data Type</H2>
+
+<P>My next idea for representing a tree is to abandon the use of a separate
+variable for each node; instead I'll put the entire tree in one big list.
+A node will be a list whose <CODE>first</CODE> is the datum at that node and whose
+<CODE>butfirst</CODE> is a list of children of the node.  So the entire tree will be
+represented by a list like this:
+
+<P><PRE>[world [France ...] [[United States] ...] [China ...] [Canada ...]]
+</PRE>
+
+<P>The datum at each node can be either a word or a list.
+
+<P>But this time I'm going to be smarter than before.  I'm going to recognize
+that the program I'm writing should logically be separated into two parts:
+the part that implements the <EM>tree</EM> data type, and the part that uses
+a tree to implement the data base of cities.  If I write procedures like
+<CODE>locate</CODE> and <CODE>cities</CODE> in terms of general-purpose tree subprocedures
+like <CODE>leafp</CODE>, a predicate that tells whether its input node is a leaf
+node, then I can change my mind about the implementation of trees (as I've
+done twice already) without changing that part of the program at all.
+
+<P>I'll start by implementing the abstract data type.  I've decided that a tree
+will be represented as a list with the datum of the root node as its <CODE>
+first</CODE> and the subtrees in the <CODE>butfirst</CODE>.  To make this work I need
+<EM>selector</EM> procedures:
+
+<P><PRE>to datum :node
+output first :node
+end
+
+to children :node
+output butfirst :node
+end
+</PRE>
+
+<P>and a <EM>constructor</EM> procedure to build a node out of its
+pieces:
+
+<P><PRE>to tree :datum :children
+output fput :datum :children
+end
+</PRE>
+
+<P>Selectors and constructors are the main procedures needed to define any data
+structure, but there are usually some others that can be useful.  For the
+tree, the main missing one is <CODE>leafp</CODE>.
+
+<P><PRE>to leafp :node
+output emptyp children :node
+end
+</PRE>
+
+<P>Now I can use these tools to write the data base procedures.
+
+<P><PRE>to locate :city
+output locate1 :city :world &quot;false
+end
+
+to locate1 :city :subtree :wanttree
+if and :wanttree (equalp :city datum :subtree) [output :subtree]
+if leafp :subtree ~
+   [ifelse equalp :city datum :subtree
+           [output (list :city)]
+           [output []]]
+localmake &quot;lower locate.in.forest :city (children :subtree) :wanttree
+if emptyp :lower [output []]
+output ifelse :wanttree [:lower] [fput (datum :subtree) :lower]
+end
+
+to locate.in.forest :city :forest :wanttree
+if emptyp :forest [output []]
+localmake &quot;child locate1 :city first :forest :wanttree
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest :wanttree
+end
+
+to cities :name
+output cities1 (finddatum :name :world)
+end
+
+to cities1 :subtree
+if leafp :subtree [output (list datum :subtree)]
+output map.se [cities1 ?] children :subtree
+end
+
+to finddatum :datum :tree
+output locate1 :name :tree &quot;true
+end
+</PRE>
+
+<P>Once again, <CODE>cities</CODE> depends on a variant of <CODE>locate</CODE> that
+outputs the subtree below a given name, instead of the usual <CODE>locate</CODE>
+output, which is a list of the names on the path from <CODE>world</CODE> down to
+a city.  But instead of having <CODE>cities</CODE> call <CODE>locate1</CODE> directly,
+I decided that it would be more elegant to provide a procedure <CODE>
+finddatum</CODE> that takes a datum and a tree as inputs, whose output is the
+subtree below that datum.
+
+<P>In <CODE>cities1</CODE>, the expression
+
+<P><PRE>(list datum :subtree)
+</PRE>
+
+<P>turns out to be equivalent to just <CODE>:subtree</CODE> for the case of
+a leaf node.  (It is only for leaf nodes that the expression is evaluated.)
+By adhering to the principle of data abstraction I'm making the program work
+a little harder than it really has to.  The advantage, again, is that this
+version of <CODE>cities</CODE> will continue working even if we change the
+underlying representation of trees.  The efficiency cost is quite low;
+changing the expression to <CODE>:subtree</CODE> is a local optimization comparable
+to the common subexpression elimination we considered early in the chapter.
+
+<P>I also have to revise the procedure to set up the tree.  It's going to
+involve many nested invocations of <CODE>tree</CODE>, like this:
+
+<P><PRE>to worldtree
+make &quot;world tree &quot;world
+                 (list (tree &quot;France
+                             (list (tree &quot;Paris [])
+                                   (tree &quot;Dijon [])
+                                   (tree &quot;Avignon []) ) )
+                       (tree &quot;China
+                             (list ...
+</PRE>
+
+<P>and so on.  I can shorten this procedure somewhat by inventing
+an abbreviation for making a subtree all of whose children are leaves.
+
+<P><PRE>to leaf :datum
+output tree :datum []
+end
+
+to leaves :leaves
+output map [leaf ?] :leaves
+end
+
+to worldtree
+make &quot;world
+     tree &quot;world
+          (list (tree &quot;France leaves [Paris Dijon Avignon])
+                (tree &quot;China leaves [Beijing Shanghai Guangzhou Suzhou])
+                (tree [United States]
+                      (list (tree [New York]
+                                  leaves [[New York] Albany Rochester
+                                          Armonk] )
+                            (tree &quot;Massachusetts
+                                  leaves [Boston Cambridge Sudbury
+                                          Maynard] )
+                            (tree &quot;California
+                                  leaves [[San Francisco] Berkeley
+                                          [Palo Alto] Pasadena] )
+                            (tree &quot;Washington
+                                  leaves [Seattle Olympia] ) ) )
+                (tree &quot;Canada
+                      (list (tree &quot;Ontario
+                                  leaves [Toronto Ottawa Windsor] )
+                            (tree &quot;Quebec
+                                  leaves [Montreal Quebec Lachine] )
+                            (tree &quot;Manitoba leaves [Winnipeg]) ) ) )
+end
+
+? <U>worldtree</U>
+? <U>show cities [United States]</U>
+[[New York] Albany Rochester Armonk Boston Cambridge Sudbury Maynard
+ [San Francisco] Berkeley [Palo Alto] Pasadena Seattle Olympia]
+? <U>show locate [Palo Alto]</U>
+[world [United States] California [Palo Alto]]
+</PRE>
+
+<P><H2>Tree Modification</H2>
+
+
+<P>So far, so good.  But the procedure <CODE>worldtree</CODE> just above is very
+error-prone because of its high degree of nesting.  In the earlier versions
+I could create the tree a piece at a time instead of all at once.  In a
+practical data base system, people should be able to add new information at
+any time, not just ask questions about the initial information.  That is,
+I'd like to be able to say
+
+<P><PRE>addchild :world (tree &quot;Spain leaves [Madrid Barcelona Orense])
+</PRE>
+
+<P>to add a subtree to the world tree.  New nodes should be possible
+not only at the top of the tree but anywhere within it:
+
+<P><PRE>addchild (finddatum &quot;Canada :world) (tree [Nova Scotia] leaves [Halifax])
+</PRE>
+
+<P>Most versions of Logo do not provide tools to add a new member to an
+existing list.  We could write a program that would make a new copy of the
+entire tree, adding the new node at the right place in the copy, so that
+<CODE>addchild</CODE> would take the form
+
+<P><PRE>make &quot;world newcopy :world ...
+</PRE>
+
+<P>but there are two objections to that.  First, it would be quite
+slow, especially for a large tree.  Second, it would work only if I refrain
+from assigning subtrees as the values of variables other than <CODE>world</CODE>.
+That is, I'd like to be able to say
+
+<P><PRE>? <U>make &quot;Canada finddatum &quot;Canada :world</U>
+? <U>addchild :Canada (tree [Nova Scotia] leaves [Halifax])</U>
+? <U>show locate &quot;Halifax</U>
+[world Canada [Nova Scotia] Halifax]
+</PRE>
+
+<P>Even though I've added the new node to the tree <CODE>:Canada</CODE>, it
+should also be part of <CODE>:world</CODE> (which is where <CODE>locate</CODE> looks)
+because <CODE>:Canada</CODE> is a subtree of <CODE>:world</CODE>.  Similarly, I'd like to
+be able to add a node to the Canadian subtree of <CODE>:world</CODE> and have it
+also be part of <CODE>:Canada</CODE>.  That wouldn't be true if <CODE>addchild</CODE>
+makes a copy of its tree input instead of modifying the existing tree.
+
+<P>I'm going to solve this problem two ways.  In the Doctor project in
+Volume 2 of this series, you learned that Berkeley Logo does include
+primitive procedures that allow the modification of an existing list
+structure.  I think the most elegant solution to the <CODE>addchild</CODE> problem
+is the one that takes advantage of that feature.  But I'll also show a
+solution that works in any version of Logo, to make the point that list
+mutation isn't absolutely necessary; we can achieve the same goals, with
+the same efficiency, by other means.  First here's the list mutation
+version of <CODE>addchild</CODE>:
+
+<P><PRE>to addchild :tree :child
+.setbf :tree (fput :child butfirst :tree)
+end
+
+? <U>make &quot;GB leaf [Great Britain]</U>
+? <U>addchild :world :GB</U>
+? <U>addchild :GB tree &quot;England leaves [London Liverpool Oxford]</U>
+? <U>addchild :GB tree &quot;Scotland leaves [Edinburgh Glasgow]</U>
+? <U>addchild :GB tree &quot;Wales leaves [Abergavenny]</U>
+? <U>show locate &quot;Glasgow</U>
+[world [Great Britain] Scotland Glasgow]
+</PRE>
+
+<P>Just as <CODE>tree</CODE> is a constructor for the tree data type, and <CODE>
+children</CODE> is a selector, <CODE>addchild</CODE> is called a <EM>mutator</EM> for
+this data type.  Notice, by the way, that <CODE>:GB</CODE>, which was originally
+built as a leaf node, can be turned into a branch node by adding children to
+it; <CODE>addchild</CODE> is not limited to nodes that already have children.
+
+<P>The solution using <CODE>.setbf</CODE> is elegant because I didn't have to change
+any of the procedures I had already written; this version of <CODE>addchild</CODE>
+works with the same tree implementation I had already set up.  But suppose
+we didn't have <CODE>.setbf</CODE> or didn't want to use it.  (As we'll see shortly,
+using list mutators does open up some possible pitfalls.)  We can write a
+mutator for the tree abstract data type even if we don't have mutators for
+the underlying Logo lists!  The secret is to take advantage of variables,
+whose values can be changed--mutated--in any version of Logo.
+
+<P>To make this work I'm going to go back to a tree representation somewhat
+like the one I started with, in which each node is represented by a separate
+variable.  But to avoid the problems I had earlier about Quebec and San
+Francisco, the variable name won't be the datum it contains.  Instead I'll
+use a <EM>generated symbol,</EM> an arbitrary name made up by the program.
+(This should sound familiar.  I used the same trick in the Doctor project,
+and there too it was an alternative to list mutation.)
+
+<P>This is where my use of data abstraction pays off.  Look how little I have
+to change:
+
+<P><PRE>to tree :datum :children
+localmake &quot;node gensym
+make :node fput :datum :children
+output :node
+end
+
+to datum :node
+output first thing :node
+end
+
+to children :node
+output butfirst thing :node
+end
+
+to addchild :tree :child
+make :tree lput :child thing :tree
+end
+</PRE>
+
+<P>That's it!  <CODE>Leafp</CODE>, <CODE>finddatum</CODE>, <CODE>locate</CODE>, <CODE>
+cities</CODE>, and <CODE>worldtree</CODE> all work perfectly without modification,
+even though I've made a profound change in the actual representation of
+trees.  (Try printing <CODE>:world</CODE> in each version.)
+
+<P><CODE>Addchild</CODE> is only one of the possible ways in which I might want to
+modify a tree structure.  If we were studying trees more fully, I'd create
+tool procedures to delete a node, to move a subtree from one location in the
+tree to another, to insert a new node between a parent and its children, and
+so on.  There are also many more questions one might want to ask about a
+tree.  How many nodes does it have?  What is its maximum depth?
+
+<P>I've mentioned general tree manipulation tools.  There are also still some
+unresolved issues about the particular use of trees in the city data base.
+For example, although the problem of Quebec city and Quebec province is
+under control, what if I want the data base to include Cambridge, England
+as well as Cambridge, Massachusetts?  What should <CODE>locate</CODE> do if given
+<CODE>Cambridge</CODE> as input?
+
+<P>But instead of pursuing this example further I want to develop another
+example, in which trees are used for a very different purpose.  In the city
+data base, the tree represents a <EM>hierarchy</EM> (Sudbury is <EM>part of</EM>
+Massachusetts); in the example below, a tree is used to represent an <EM>
+ordering</EM> of data, as in the sorting algorithms discussed earlier.
+
+<P><H2>Searching Algorithms and Trees</H2>
+
+<P>Forget about trees for a moment and consider the general problem of <EM>
+searching</EM> through a data base for some piece of information.  For
+example, suppose you want a program to find the city corresponding to a
+particular telephone area code.  That is, I want to be able to say
+
+<P><PRE>? <U>print listcity 415</U>
+San Francisco
+</PRE>
+
+<P>The most straightforward way to do this is to have a list
+containing code-city pairs, like this:
+
+<P><PRE>make &quot;codelist [[202 Washington] [206 Seattle] [212 New York]
+   [213 Los Angeles] [215 Philadelphia] [303 Denver] [305 Miami]
+   [313 Detroit] [314 St. Louis] [401 Providence] [404 Atlanta]
+   [408 Sunnyvale] [414 Milwaukee] [415 San Francisco] [504 New Orleans]
+   [608 Madison] [612 St. Paul] [613 Kingston] [614 Columbus]
+   [615 Nashville] [617 Boston] [702 Las Vegas] [704 Charlotte]
+   [712 Sioux City] [714 Anaheim] [716 Rochester] [717 Scranton]
+   [801 Salt Lake City] [804 Newport News] [805 Ventura] [808 Honolulu]]
+</PRE>
+
+<P>This is a list of lists.  Each sublist contains one pairing of an
+area code with a city.  We can search for a particular area code by going
+through the list member by member, comparing the first word with the desired
+area code.  (By the way, in reality a single area code can contain more than
+one city, and vice versa, but never mind that; I'm trying to keep this
+simple.)  In accordance with the idea of data abstraction, we'll start with
+procedures to extract the area code and city from a pair.
+
+<P><PRE>to areacode :pair
+output first :pair
+end
+
+to city :pair
+output butfirst :pair
+end
+</PRE>
+
+<P>The city is the <CODE>butfirst</CODE> rather than the <CODE>last</CODE> to
+accommodate cities with names of more than one word.
+
+<P>The iteration tool <CODE>find</CODE> does exactly what's needed, going through a
+list member by member until it finds one that matches some criterion:
+
+<P><PRE>to listcity :code
+output city find [equalp :code areacode ?] :codelist
+end
+</PRE>
+
+<P>Time for a little analysis of algorithms.  What is the time
+
+behavior of this <EM>linear</EM> search algorithm as the data base gets
+bigger?  As for the case of the sorting algorithms, I'll concentrate on the
+number of comparisons.  How many times is <CODE>equalp</CODE> invoked?  The best
+case is if we're looking for the first code in the list, 202.  In this case
+only one comparison is made.  The worst case is if we're looking for the
+last code in the list, 808, or if we're looking for an area code that isn't
+in the list at all.  This requires 31 comparisons.  (That's how many
+code-city pairs happen to be in this particular data base.)  On the average
+this algorithm requires a number of comparisons half way between these
+extremes, or 16.  As we increase the size of the data base, the number of
+comparisons required grows proportionally; this algorithm is O(<EM>n</EM>).
+
+<P>The area codes in <CODE>:codelist</CODE> are in ascending order.  If you were
+looking through the list yourself, you wouldn't look at every entry one
+after another; you'd take advantage of the ordering by starting around the
+middle and moving forward or backward depending on whether the area code you
+
+found was too low or too high.  That's called a <EM>binary</EM> search
+algorithm.  <CODE>Listcity</CODE>, though, doesn't take
+advantage of the ordering in the list; the pairs could just as well be
+jumbled up and <CODE>listcity</CODE> would be equally happy.
+
+<P>Binary search works by starting with the median-value area code in the data
+base.  If that's the one we want, we're finished; otherwise we take the
+higher or lower half of the remaining codes and examine the median value of
+that subset.  One way we could implement that algorithm would be to use a
+binary tree to represent the code-city pairs:
+
+<P>
+
+<P><CENTER><IMG SRC="codetree.gif" ALT="figure: codetree"></CENTER>
+
+<P>
+
+<P>(In this picture I've just shown the area codes, but of course the
+actual data structure will have a code-city pair at each node.)
+
+<P>We could construct the tree from scratch, using <CODE>tree</CODE> and <CODE>leaves</CODE>
+as I did earlier, but since we already have the pairs in the correct sorted
+order it's easier to let the computer do it for us:
+
+<P><PRE>to balance :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output leaf first :list]
+output balance1 (int (count :list)/2) :list []
+end
+
+to balance1 :count :in :out
+if equalp :count 0 ~
+   [output tree (first :in) (list balance reverse :out
+                                  balance butfirst :in )]
+output balance1 (:count-1) (butfirst :in) (fput first :in :out)
+end
+</PRE>
+
+<P>In this program I'm using the trick of building <CODE>:out</CODE> using
+<CODE>fput</CODE> instead of <CODE>lput</CODE> and then using <CODE>reverse</CODE> to get the
+left branch back in ascending order, to make the construction a little
+faster.
+
+<P><PRE>make &quot;codetree balance :codelist
+</PRE>
+
+<P>will generate the tree.
+
+<P>Now we're ready to write <CODE>treecity</CODE>, the tree-based search program
+analogous to <CODE>listcity</CODE> for the linear list.
+
+<P><PRE>to treecity :code
+output city treecity1 :code :codetree
+end
+
+to treecity1 :code :tree
+if emptyp :tree [output [000 no city]]
+localmake &quot;datum datum :tree
+if :code = areacode :datum [output :datum]
+if :code &lt; areacode :datum [output treecity1 :code lowbranch :tree]
+output treecity1 :code highbranch :tree
+end
+
+to lowbranch :tree
+if leafp :tree [output []]
+output first children :tree
+end
+
+to highbranch :tree
+if leafp :tree [output []]
+output last children :tree
+end
+
+? <U>print treecity 415</U>
+San Francisco
+</PRE>
+
+<P><CODE>Treecity</CODE> gives the same output as <CODE>listcity</CODE>, but it's
+faster.  At worst it makes two comparisons (for equal and less than) at each
+level of the tree.  This tree is five levels deep, so if the input area code
+is in the tree at all we'll make at most 9 comparisons, compared to 31 for
+<CODE>listcity</CODE>.  The average number is less.  (How much less?)  The
+difference is even more striking for larger data bases; if the number of
+pairs is 1000, the worst-case times are 1000 for <CODE>listcity</CODE> and 19 for
+<CODE>treecity</CODE>.
+
+<P>In general the depth of the tree is the number of times you can divide the
+number of pairs by two.  This is like the situation we met in analyzing the
+partition sort algorithm; the depth of the tree is the log base two of the
+number of pairs.  This is an O(log&nbsp;<EM>n</EM>) algorithm.
+
+<P>The procedures <CODE>lowbranch</CODE> and <CODE>highbranch</CODE> are data abstraction at
+work.  I could have used <CODE>first children :tree</CODE> directly in <CODE>
+treecity1</CODE>, but this way I can change my mind about the representation of
+the tree if necessary.  In fact, in a practical program I would want to use
+a representation that allows a node to have a right child (a <CODE>
+highbranch</CODE>) without having a left child.  Also, <CODE>lowbranch</CODE> and <CODE>
+highbranch</CODE> are written robustly; they give an output, instead of
+causing an error, if applied to a leaf node.  (That happens if you ask for
+the city of an area code that's not in the data base.)  I haven't
+consistently been writing robust programs in this chapter, but I thought I'd
+give an example here.
+
+<P>The efficiency of the tree searching procedure depends on the fact
+that the tree is <EM>balanced.</EM>  In other words, the left branch
+of each node is the same size as its right branch.  I cheated slightly
+by starting with 31 area codes, a number that allows for a perfectly
+balanced tree.  Suppose I had started with 35 area codes.  How should
+I have built the tree?  What would happen to the efficiency of the
+program?  What is the maximum possible number of trials necessary
+to find a node in that tree?  What other numbers of nodes allow for
+perfect balance?
+
+<P>There are two important ideas to take away from this example.  The first is
+that the choice of data representation can have a substantial effect on the
+efficiency of a program.  The second, as I mentioned at the beginning of
+this section, is that we have used the same kind of data structure, a tree,
+for two very different purposes: first to represent a <EM>hierarchy</EM>
+(Sudbury is <EM>part of</EM> Massachusetts) and then to represent an <EM>
+ordering</EM> (313 is <EM>before</EM> 608).
+
+<P><H2>Logo's Underlying Data Structures</H2>
+
+<P>An abstract data type, such as the tree type we've been discussing, must be
+implemented using some lower-level means for data aggregation, that is, for
+grouping separate things into a combined whole.  In Berkeley Logo, there are
+two main built-in means for aggregation: lists and arrays.  (Every dialect
+of Logo has lists, but not all have arrays.)  Words can be thought of as a
+third data aggregate, in which the grouped elements are letters, digits,
+and punctuation characters, but we don't ordinarily use words as the basis
+for abstract data types.
+
+<P>Logo was designed to be used primarily by people whose main interest is in
+something other than computer programming, and so a design goal was to keep
+to a minimum the extent to which the Logo programmer must know about how
+Logo itself works internally.  Even in these books, which <EM>are</EM> focused
+on computing itself, we've gotten this far without looking very deeply into
+how Logo's data structures actually work.  But for the purposes of this
+chapter it will be useful to take that step.
+
+<P>Essentially all computers today are divided into a <EM>processor</EM>
+and a <EM>memory.</EM>  (The exceptions are experimental &quot;parallel
+processing&quot; machines in which many small sub-processors and sub-memories
+are interconnected, sometimes combining both capabilities within a single
+intergrated circuit.)  Roughly speaking, the processor contains the
+circuitry that implements hardware primitive procedures such as arithmetic
+operations.  (Not every Logo primitive is a hardware primitive.)  The
+memory holds the information used in carrying out a program, including
+the program itself and whatever data it uses.  The memory is divided into
+millions of small pieces, each of which can hold a single value (a number,
+a letter, and so on).<SUP>*</SUP> Each small piece has an <EM>
+address,</EM> which is a number used to select a particular piece;
+the metaphor is the street address of each house on a long street.  The
+hardware primitive procedures include a <CODE>load</CODE> operation that takes
+a memory address as its input and finds the value in the specified piece
+of memory, and a <CODE>store</CODE> command that takes an address and a value
+as inputs and puts the given value into the chosen piece of memory.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I'm being vague about what a &quot;value&quot; is, and
+in fact most computer memories can be divided into pieces of different
+sizes.  In most current computers,
+a <EM>byte</EM> is a piece that can hold any of 256 different
+values, while a <EM>word</EM> is a piece that can hold any of
+about four billion different values.  But these details aren't important
+for my present purposes, and I'm going to ignore them.  I'll talk as if
+memories were simply word-addressable.</SMALL></BLOCKQUOTE></SMALL><P>With this background we can understand how lists and arrays differ.  To
+be specific, suppose that we have a collection of five numbers to store
+in memory.  If we use an array, that means that Logo finds five <EM>
+consecutive</EM> pieces of memory to hold the five values, like this:
+
+<P><CENTER><IMG SRC="array.gif" ALT="figure: array"></CENTER>
+
+<P>If instead we use a list, Logo finds the memory for each of the
+five values as that value is computed.  The five memory slots might not
+be consecutive, so each memory slot must contain not only the desired
+value but also a <EM>pointer</EM> to the next slot.  That is, each
+slot must contain an additional number, the address of the next slot.
+(What I'm calling a &quot;slot&quot; must therefore be big enough to hold two
+numbers, and in fact Logo uses what we call a <EM>pair</EM> for
+each, essentially an array of length two.)  Since we don't care about
+the actual numeric values of the addresses, but only about the pairs
+to which they point, we generally use arrows to represent pointers
+pictorially:
+
+<P><CENTER><IMG SRC="list.gif" ALT="figure: list"></CENTER>
+
+<P>The last pair of the list has a <EM>null pointer,</EM> a
+special value to indicate that there is no next pair following it, indicated
+by the diagonal line.
+
+<P>Why do we bother to provide two aggregation mechanisms?  Why don't language
+designers just pick the best one?  Clearly the answer will be that each is
+&quot;the best&quot; for different purposes.  In the following paragraphs I'll
+compare several characteristics of lists and arrays.
+
+<P>One advantage of arrays that should be obvious from these pictures is that a
+list uses twice as much memory to hold the same number of values.  But this
+is not generally an important difference for modern computers; unless your
+problem is really enormous, you don't have to worry about running out of
+memory.
+
+<P>The most important advantage of arrays is that they are
+<EM>random access.</EM>  This means that each member of an array
+can be found just as quickly as any other member, regardless of its
+position within the array.  If the program knows the address at which
+the array begins, and it wants to find the <EM>n</EM>th member of the array,
+only two operations are needed:  First add <EM>n</EM> to the array's address,
+then <CODE>load</CODE> the value from the resulting address.  This takes a
+constant (and very short) amount of time, O(1).  By contrast, in a list
+there is no simple arithmetic relationship between the address of the list's
+first member and the address of its <EM>n</EM>th member.  To find the <EM>n</EM>th member,
+the program must <CODE>load</CODE> the pointer from the first pair, then use that
+address to <CODE>load</CODE> the pointer from the second pair, and so on, <EM>n</EM> times.
+The number of operations needed is O(<EM>n</EM>).
+
+<P>On the other hand, the most important advantage of lists is
+<EM>dynamic allocation.</EM>  This means that the programmer does not
+have to decide ahead of time on how big the data aggregate will become.  (We
+saw an example recently when we wanted to add a child to a node of an
+existing tree.)  Consider the five-member aggregates shown earlier, and
+suppose we want to add a sixth member.  If we've used a list, we can say,
+for example,
+
+<P><PRE>make &quot;newlist fput &quot;A :oldlist
+</PRE>
+
+<P>and all Logo has to do is find one new pair:
+
+<P><CENTER><IMG SRC="growlist.gif" ALT="figure: growlist"></CENTER>
+
+<P>By contrast, once an array has been created we can't expand it,
+because the new address would have to be adjacent to the old addresses, and
+that piece of memory might already be used for something else.  To make an
+array bigger, you have to allocate a complete new array and copy the old
+values into it.
+
+<P>Remember that arrays sacrifice efficient expansion in order to get
+efficient random access.  From the standpoint of program speed, one is not
+absolutely better than the other; it depends on the nature of the problem
+you're trying to solve.  That's why it's best if a language offers both
+structures, as Berkeley Logo does.  For the very common
+case of <CODE>foreach</CODE>-like iteration through an aggregate, neither random
+access nor dynamic allocation is really necessary.  For a data base that can
+grow during the running of a program, the flexibility of dynamic allocation
+is valuable.  For many sorting algorithms, on the other hand, it's important
+to be able to jump around in the aggregate and so random access is useful.
+(A programmer using arrays can partially overcome the lack of dynamic
+allocation by preallocating a too-large array and leaving some of it empty
+at first.  But if the order of members in the array matters, it may turn out
+that the &quot;holes&quot; in the array aren't where they're needed, and so the
+program still has to copy blocks of members to make room.  Also, such
+programs have occasional embarrassing failures because what the programmer
+thought was an extravagantly large array turns out not quite large enough
+for some special use of the program, or because a malicious user deliberately
+&quot;overruns&quot; the length of the array in order to evade a program restriction.)
+
+<P>The solitaire program in Volume 2 of this series illustrates the different
+advantages of lists and arrays.  As in any card game, a solitaire player
+distributes the cards into several small groups, each of which varies in
+size as the play continues.  For example, a typical step is to deal a card
+from the <EM>hand</EM> onto the <EM>pile,</EM> each of which is represented as
+a list:
+
+<P><PRE>make &quot;pile fput (first :hand) :pile
+make &quot;hand butfirst :hand
+</PRE>
+
+<P>(The actual solitaire program uses somewhat different
+instructions to accomplish the same effect, with a <CODE>deal</CODE> procedure that
+outputs the next available card after removing it from the hand.)
+
+<P>On the other hand (no pun intended), <EM>shuffling</EM> the deck is easier
+when an array is used to hold the card values, because the shuffling
+algorithm requires random jumping around in the deck, but does not change
+the total number of cards, so that random access is more important than
+dynamic allocation.  Therefore, the program starts each round of play with
+the deck in the form of an array of 52 cards.  It shuffles the deck in array
+form, and then copies the members of the array into a list, which is used
+for the rest of that round.  The advantage of an array for shuffling, and
+the advantage of a list for dealing cards, together outweigh the time
+spent copying the array into the list.
+
+<P>An important consequence of dynamic allocation is that lists are
+<EM>sharable</EM> data structures.  In the example above, <CODE>
+:oldlist</CODE> contains five pairs and <CODE>:newlist</CODE> contains six, but the
+total number of pairs used is six, not 11, because most of the same pairs
+are part of both lists.  That's why the <CODE>fput</CODE> operation takes O(1)
+time, unaffected by the length of the list, as do <CODE>first</CODE> and <CODE>
+butfirst</CODE>.  (Now that you know how lists are constructed using pairs
+and pointers, you should be able to understand something I've mentioned
+earlier without explanation:  <CODE>Lput</CODE>, <CODE>last</CODE>, and <CODE>butlast</CODE>
+require O(<EM>n</EM>) time.  It's much faster to operate near the beginning of a
+list than near the end.)  Arrays are not sharable; each array occupies its
+own block of consecutive memory addresses.
+
+<P>When a data structure is both sharable and mutable, it's possible to get
+into some very mysterious, hard-to-detect bugs.  Suppose we do this:
+
+<P><PRE>? <U>make &quot;one [Ice cream is delicious.]</U>
+? <U>make &quot;two fput &quot;Spinach butfirst butfirst :one</U>
+</PRE>
+
+<P>
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch3/spinach1.gif" ALT="figure: spinach1"></CENTER>
+
+<P>Then suppose you decide you don't like spinach.  You might say
+
+<P><PRE>? <U>.setfirst butfirst butfirst :two &quot;disgusting.</U>
+? <U>print :two</U>
+Spinach is disgusting.
+</PRE>
+
+<P><CENTER><IMG SRC="spinach2.gif" ALT="figure: spinach2"></CENTER>
+
+<P>But you haven't taken into account that <CODE>:one</CODE> and <CODE>:two</CODE>
+share memory, so this instruction has an unintended result:
+
+<P><PRE>? <U>print :one</U>
+Ice cream is disgusting.
+</PRE>
+
+<P>This is definitely a bug!
+
+<P>It's the combination of mutation and sharing that causes trouble.  Arrays
+are mutable but not sharable; the result of using <CODE>setitem</CODE> to change
+a member of an array is easily predictable.  The trouble with list mutation
+is that you may change other lists besides the one you think you're changing.
+That's why Berkeley Logo's <CODE>.setfirst</CODE> and <CODE>.setbf</CODE> primitives have
+names starting with periods, the Logo convention for &quot;experts only!&quot;  It's
+also why many other Logo dialects don't allow list mutation at
+all.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Also, this helps to explain the importance of property lists
+in Logo.  Property lists are a safe form of mutable list, because they are
+not sharable; that's why the <CODE>plist</CODE> primitive outputs a newly-allocated
+<EM>copy</EM> of the property list.</SMALL></BLOCKQUOTE></SMALL><P>In order to explain to you about how something like this might happen, I've
+had to tell you more about Logo's storage allocation techniques than is
+ordinarily taught.  One of the design goals of Logo was that the programmer
+shouldn't have to think in terms of boxes and arrows as we're doing now.
+But if you mutate sharable lists, you'd better understand the boxes
+and arrows.  It's not entirely obvious, you see, when two
+lists <EM>do</EM> share storage.  Suppose the example had been backwards:
+
+<P><PRE>? <U>make &quot;one [Delicious, that's ice cream.]</U>
+? <U>make &quot;two lput &quot;spinach. butlast butlast :one</U>
+? <U>print :two</U>
+Delicious, that's spinach.
+? <U>.setfirst :two &quot;Disgusting,</U>
+? <U>print :two</U>
+Disgusting, that's spinach.
+? <U>print :one</U>
+Delicious, that's ice cream.
+</PRE>
+
+<P>In this case the other list is <EM>not</EM> mysteriously modified
+because when <CODE>lput</CODE> is used, rather than <CODE>fput</CODE> as in the previous
+example, the two lists do <EM>not</EM> share memory.  That's a consequence of
+the front-to-back direction of the arrows connecting the boxes; it's
+possible to have two arrows pointing <EM>into</EM> a box, but only one arrow
+can <EM>leave</EM> a box.  You can't do this:
+
+<P><CENTER><IMG SRC="spinach3.gif" ALT="figure: spinach3"></CENTER>
+
+<P>
+
+<P>The combination of mutation and sharing, although tricky, is not all bad.
+The same mutual dependence that made a mess of <CODE>:one</CODE> and <CODE>:two</CODE> in
+the example above was desirable and helpful in the case of <CODE>:world</CODE>
+and <CODE>:Canada</CODE> earlier.  That's why Lisp has always included mutable
+lists, and why versions of Logo intended for more expert users have also
+chosen to allow list mutation.
+
+<P>Don't think that without mutable lists you are completely safe from mutual
+dependence.  Any language in which it's possible to give a datum a <EM>
+name</EM> allows the programmer to set up the equivalent of sharable data,
+just as I did in the final version of the tree of cities.  As far as the
+Logo interpreter is concerned, the value of the variable <CODE>world</CODE> is some
+generated symbol like <CODE>G47</CODE>.  That value is immune to changes in other
+data structures.  But if we think of <CODE>:world</CODE> as containing,
+effectively, the entire tree whose root node is called <CODE>G47</CODE>, then
+changes to other variables do, in effect, change the value of <CODE>world</CODE>.
+What is true is that without mutable lists you can't easily set up a mutual
+dependence <EM>by accident;</EM> you have to intend it.
+
+<P>By the way, by drawing the box and pointer diagrams with the actual data
+inside the boxes, I may have given you the impression that each member of a
+list or array must be a single number or letter, so that the value will fit
+in one memory address.  Actually, each member can be a pointer to anything.
+For example, here's a picture of an array that includes lists,
+
+<P><PRE>{[A B C] D [E F]}
+</PRE>
+
+<P><CENTER><IMG SRC="bigarray.gif" ALT="figure: bigarray"></CENTER>
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch2/v3ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><P>
+<P><PRE>
+;;; Algorithms and Data Structures
+
+;; Local optimization of quadratic formula
+
+to quadratic :a :b :c
+localmake "root sqrt (:b * :b-4 * :a * :c)
+localmake "x1 (-:b+:root)/(2 * :a)
+localmake "x2 (-:b-:root)/(2 * :a)
+print (sentence [The solutions are] :x1 "and :x2)
+end
+
+;; Memoization of T function
+
+to t :n :k
+localmake "result gprop :n :k
+if not emptyp :result [output :result]
+make "result realt :n :k
+pprop :n :k :result
+output :result
+end
+
+to realt :n :k
+if equalp :k 0 [output 1]
+if equalp :n 0 [output 0]
+output (t :n :k-1) + (t :n-1 :k)
+end
+
+;; Speedup of Simplex function
+
+to simplex :buttons
+output 2 * first (cascade :buttons
+                          [fput (sumprods butfirst ?2 ?1) ?1] [1]
+                          [fput 1 nextrow ?2] [1 1])
+end
+
+to sumprods :a :b
+output reduce "sum (map "product :a :b)
+end
+
+to nextrow :combs
+if emptyp butfirst :combs [output :combs]
+output fput (sum first :combs first butfirst :combs) ~
+            nextrow butfirst :combs
+end
+
+;; Sorting -- selection sort
+
+to ssort :list
+if emptyp :list [output []]
+output ssort1 (first :list) (butfirst :list) []
+end
+
+to ssort1 :min :in :out
+if emptyp :in [output fput :min ssort :out]
+if lessthanp :min (first :in) ~
+   [output ssort1 :min (butfirst :in) (fput first :in :out)]
+output ssort1 (first :in) (butfirst :in) (fput :min :out)
+end
+
+;; Sorting -- partition sort
+
+to psort :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output :list]
+localmake "split ((first :list) + (last :list)) / 2
+if lessthanp first :list :split ~
+   [output psort1 :split (butfirst :list) (list first :list) []]
+output psort1 :split (butlast :list) (list last :list) []
+end
+
+to psort1 :split :in :low :high
+if emptyp :in [output sentence (psort :low) (psort :high)]
+if lessthanp first :in :split ~
+   [output psort1 :split (butfirst :in) (fput first :in :low) :high]
+output psort1 :split (butfirst :in) :low (fput first :in :high)
+end
+
+;; Sorting -- count comparisons
+
+to lessthanp :a :b
+if not namep "comparisons [make "comparisons 0]
+make "comparisons :comparisons+1
+output :a < :b
+end
+
+to howmany
+print :comparisons
+ern "comparisons
+end
+
+;; Abstract Data Type for Trees: Constructor
+
+to tree :datum :children
+output fput :datum :children
+end
+
+;; Tree ADT: Selectors
+
+to datum :node
+output first :node
+end
+
+to children :node
+output butfirst :node
+end
+
+;; Tree ADT: Mutator
+
+to addchild :tree :child
+.setbf :tree (fput :child butfirst :tree)
+end
+
+;; Tree ADT: other procedures
+
+to leaf :datum
+output tree :datum []
+end
+
+to leaves :leaves
+output map [leaf ?] :leaves
+end
+
+to leafp :node
+output emptyp children :node
+end
+
+;; The World tree
+
+to worldtree
+make "world ~
+     tree "world ~
+          (list (tree "France leaves [Paris Dijon Avignon])
+                (tree "China leaves [Beijing Shanghai Guangzhou Suzhou])
+                (tree [United States]
+                      (list (tree [New York]
+                                  leaves [[New York] Albany Rochester
+                                          Armonk] )
+                            (tree "Massachusetts
+                                  leaves [Boston Cambridge Sudbury
+                                          Maynard] )
+                            (tree "California
+                                  leaves [[San Francisco] Berkeley
+                                          [Palo Alto] Pasadena] )
+                            (tree "Washington
+                                  leaves [Seattle Olympia] ) ) )
+                (tree "Canada
+                      (list (tree "Ontario
+                                  leaves [Toronto Ottawa Windsor] )
+                            (tree "Quebec
+                                  leaves [Montreal Quebec Lachine] )
+                            (tree "Manitoba leaves [Winnipeg]) ) ) )
+end
+
+to locate :city
+output locate1 :city :world "false
+end
+
+to locate1 :city :subtree :wanttree
+if and :wanttree (equalp :city datum :subtree) [output :subtree]
+if leafp :subtree ~
+   [ifelse equalp :city datum :subtree
+           [output (list :city)]
+           [output []]]
+localmake "lower locate.in.forest :city (children :subtree) :wanttree
+if emptyp :lower [output []]
+output ifelse :wanttree [:lower] [fput (datum :subtree) :lower]
+end
+
+to locate.in.forest :city :forest :wanttree
+if emptyp :forest [output []]
+localmake "child locate1 :city first :forest :wanttree
+if not emptyp :child [output :child]
+output locate.in.forest :city butfirst :forest :wanttree
+end
+
+to cities :name
+output cities1 (finddatum :name :world)
+end
+
+to cities1 :subtree
+if leafp :subtree [output (list datum :subtree)]
+output map.se [cities1 ?] children :subtree
+end
+
+to finddatum :datum :tree
+output locate1 :name :tree "true
+end
+
+;; Area code/city pairs ADT
+
+to areacode :pair
+output first :pair
+end
+
+to city :pair
+output butfirst :pair
+end
+
+;; Area code linear search
+
+make "codelist [[202 Washington] [206 Seattle] [212 New York]
+                [213 Los Angeles] [215 Philadelphia] [303 Denver]
+                [305 Miami] [313 Detroit] [314 St. Louis]
+                [401 Providence] [404 Atlanta] [408 Sunnyvale]
+                [414 Milwaukee] [415 San Francisco] [504 New Orleans]
+                [608 Madison] [612 St. Paul] [613 Kingston]
+                [614 Columbus] [615 Nashville] [617 Boston]
+                [702 Las Vegas] [704 Charlotte]
+                [712 Sioux City] [714 Anaheim] [716 Rochester]
+                [717 Scranton] [801 Salt Lake City] [804 Newport News]
+                [805 Ventura] [808 Honolulu]]
+
+to listcity :code
+output city find [equalp :code areacode ?] :codelist
+end
+
+;; Area code binary tree search
+
+to balance :list
+if emptyp :list [output []]
+if emptyp butfirst :list [output leaf first :list]
+output balance1 (int (count :list)/2) :list []
+end
+
+to balance1 :count :in :out
+if equalp :count 0 ~
+   [output tree (first :in) (list balance reverse :out
+                                  balance butfirst :in)]
+output balance1 (:count-1) (butfirst :in) (fput first :in :out)
+end
+
+to treecity :code
+output city treecity1 :code :codetree
+end
+
+to treecity1 :code :tree
+if emptyp :tree [output [0 no city]]
+localmake "datum datum :tree
+if :code = areacode :datum [output :datum]
+if :code < areacode :datum [output treecity1 :code lowbranch :tree]
+output treecity1 :code highbranch :tree
+end
+
+to lowbranch :tree
+if leafp :tree [output []]
+output first children :tree
+end
+
+to highbranch :tree
+if leafp :tree [output []]
+output last children :tree
+end
+</PRE><P>
+
+
+<P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch2/v3ch2.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch3/worldtree.gif b/js/games/nluqo.github.io/~bh/v3ch3/worldtree.gif
new file mode 100644
index 0000000..7ee2eab
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch3/worldtree.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch4/callby.gif b/js/games/nluqo.github.io/~bh/v3ch4/callby.gif
new file mode 100644
index 0000000..55a7250
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch4/callby.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch4/langd.html b/js/games/nluqo.github.io/~bh/v3ch4/langd.html
new file mode 100644
index 0000000..f3f01cc
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch4/langd.html
@@ -0,0 +1,2310 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 4: Programming Language Design</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Programming Language Design</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch04.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch3/v3ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch5/v3ch5.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="pascal.lg"><CODE>pascal</CODE></A>
+
+<P>This chapter and the next are about two related things: why different
+programming languages are different and how a programming language is
+implemented.  To make the discussion concrete, I've chosen a specific
+language as an example: Pascal.  That choice seems appropriate partly
+because Pascal is very different from Logo and partly because it is widely
+used as a vehicle for teaching introductory computer science, the same task
+I'm attempting in this book using Logo.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The recent trend in computer
+science education has been a shift from Pascal to C or C++.  I haven't
+followed that trend in this book because from my perspective C illuminates
+no new issues, it has a more complicated syntax, and it leaves out one
+interesting Pascal feature: nested procedure definitions (block structure).
+C++ does introduce the issue of object-oriented programming, but, I think,
+not in a way that clarifies the issues; if you want to understand OOP you'd
+do better to learn Object Logo.</SMALL></BLOCKQUOTE></SMALL><P>For the purposes of this book I've written a program that translates a <EM>
+small subset</EM> of Pascal into a simulated machine language.  You can get a
+real Pascal compiler for your computer that accepts the full language, and
+that's what you should do if you want to learn how to program in Pascal.  I
+had two reasons for writing this subset compiler.  One is that some readers
+may not otherwise have access to a Pascal compiler, and mine, despite its
+limitations, will enable you to explore the parts of the language I'm going
+to be talking about.  The other is that the next chapter is about how a
+compiler works, and this compiler is accessible to examination because it's
+written in Logo.
+
+<P>When you're comparing two programming languages an obvious question to ask
+is &quot;which is better?&quot;  Please don't use my partial Pascal compiler as the
+basis for an answer to that question; it wouldn't be fair.  You already know
+my opinion, but my purpose in this chapter is not to convince you of it.
+Instead I want you to understand <EM>why</EM> each language is designed the
+way it is.  For each of the language differences we'll examine, there are
+good reasons for either choice; the reasons that influence a language
+designer will depend on the overall goals he or she has for this language.
+
+<P><H2>Programming paradigms</H2>
+
+<P>Perhaps the most important aspect of the design of a programming language
+is the <EM>programming paradigm</EM> that it encourages.  A paradigm
+(it's pronounced &quot;para&quot; as in &quot;parakeet&quot; followed by &quot;dime&quot; as in ten
+cents) is an approach to organizing a complex program:  How do you combine
+the primitives of a language to accomplish harder tasks?  It's an aspect of
+programming style, but when people say &quot;style&quot; they're usually thinking of
+smaller details, such as the use of comments in procedure definitions or
+choosing sensible variable names.  Perhaps an example of different
+paradigms will help.
+
+<P>Here's how the factorial function is usually computed in Logo, using a
+recursive operation:
+
+<P><PRE>to fact :n
+if :n=0 [output 1]
+output :n * fact :n-1
+end
+</PRE>
+
+<P>The goal is to multiply several numbers together, the integers
+from 1 to <CODE>:n</CODE>.  We do this by carrying out one multiplication in each
+recursive invocation.  This procedure is written in the
+<EM>functional programming</EM> paradigm; the main tool for building
+up complexity is composition of functions.  In this example, the
+result of the recursive <CODE>fact</CODE> invocation is composed with the primitive
+<CODE>*</CODE> (multiplication) function.
+
+<P>Now consider this alternate approach:
+
+<P><PRE>to fact.seq :n
+localmake &quot;product 1
+for [i 1 :n] [make &quot;product (:product * :i)]
+output :product
+end
+</PRE>
+
+<P>This is an example of the <EM>sequential programming</EM> paradigm,
+so called because the <CODE>for</CODE> instruction carries out a sequence of steps:
+
+<P><P>
+
+<TABLE><TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Multiply the accumulated product by 1.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Multiply the product by 2.
+<TR><TH align="right" valign="top">&bull;<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">Multiply it by 3.
+
+<P></TABLE>
+
+<P>... and so on.  Instead of a composition of functions, we have
+a partial result stored in a box, the variable <CODE>product</CODE>.  At each
+step, the old value is replaced with an updated value.
+
+<P>Although <CODE>fact.seq</CODE> can be written in Logo, it's not the most natural
+Logo style.  Most versions of Logo don't even provide <CODE>for</CODE> as a
+primitive command, although (as we saw in Volume 2) it can be written in
+Logo.<SUP>*</SUP>  As we've seen, Logo encourages the
+functional programming paradigm, in which complicated
+computations are achieved by means of function composition and recursion.
+Logo encourages functional programming partly through
+its emphasis on recursion rather than on iterative control structures,
+and partly because lists are used as the main data aggregation mechanism.
+As we saw in Chapter 3, lists encourage an aggregate to be built up one
+member at a time (as recursive functions do), and discourage mutation
+(which is crucial to the sequential approach).
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Even in Berkeley Logo, <CODE>for</CODE> is a library procedure rather
+than a true primitive.</SMALL></BLOCKQUOTE></SMALL><P>In Pascal, the opposite is true.  It's possible to write a recursive
+factorial function in Pascal:
+
+<P><PRE>function fact(n:integer): integer;
+  begin
+  if n=0 then
+    fact := 1
+  else
+    fact := n * fact(n-1)
+  end;
+</PRE>
+
+<P>but a habitual Pascal programmer would be much more likely
+to write this function in sequential style:
+
+<P><PRE>function fact(n:integer): integer;
+  var product, i: integer;
+
+  begin
+    product := 1;
+    for i := 1 to n do
+      product := product * i;
+    fact := product
+  end;
+</PRE>
+
+<P>(Don't worry, I know the details of the notation are a mystery to
+you, but you should still be able to see the relationship between each Pascal
+version and the corresponding Logo version.  The only crucial point about
+notation right now is that <CODE>:=</CODE> is the Pascal assignment operator, like
+<CODE>make</CODE> in Logo.  We'll go into the details of Pascal syntax later.)
+
+<P>Here's a more complicated example, showing how data aggregates are used in
+the two paradigms.  In Chapter 2 we explored the Simplex lock problem by
+computing the function
+
+<P>
+
+<P><P><CENTER><IMG SRC="math1.gif" ALT="math display"></CENTER><P>
+
+<P>
+
+<P>using these procedures:
+
+<P><PRE>to simplex :buttons
+output 2 * f :buttons
+end
+
+to f :n
+if equalp :n 0 [output 1]
+output cascade :n [? + ((choose :n (#-1)) * f (#-1))] 0
+end
+</PRE>
+
+<P>Here, the mathematical definition of <EM>f</EM> in terms of itself is
+reflected in the recursive nature of the operation <CODE>f</CODE>.  In Chapter 3, we
+improved the efficiency of the procedure by remembering smaller values of
+<EM>f</EM> to avoid recomputing them; similarly, instead of computing the <CODE>
+choose</CODE> function separately each time, we used old values to compute
+new ones:
+
+<P><PRE>to simplex :buttons
+output 2 * first (cascade :buttons
+                          [fput (sumprods butfirst ?2 ?1) ?1] [1]
+                          [fput 1 nextrow ?2] [1 1])
+end
+
+to sumprods :a :b
+output reduce &quot;sum (map &quot;product :a :b)
+end
+
+to nextrow :combs
+if emptyp butfirst :combs [output :combs]
+output fput (sum first :combs first butfirst :combs) ~
+            nextrow butfirst :combs
+end
+</PRE>
+
+<P>The recursive nature of <EM>f</EM> is less obvious in the second
+implementation, but the overall technique is still composition of
+functions.  (Recall that the job of <CODE>cascade</CODE> is to invoke a
+function repeatedly, in the pattern <EM>f</EM>(<EM>f</EM>(<EM>f</EM>(&middot;&middot;&middot; <EM>f</EM>(<EM>x</EM>)))).  In this
+case, <CODE>cascade</CODE> is computing two functions in parallel; one is a list of
+values of the Simplex function <EM>f</EM> and the other is a row of Pascal's
+triangle.)  The availability of higher order functions (in this program
+I've used <CODE>cascade</CODE>, <CODE>map</CODE>, and <CODE>reduce</CODE>) is another way
+in which Logo encourages the functional paradigm.
+
+<P>In sequential style, the composition of functions is replaced by a sequence
+of steps in which values are stored in boxes (members of arrays) and
+repeatedly replaced with different values:
+
+<P><PRE>to simplex.seq :buttons
+localmake &quot;f (array :buttons+1 0)
+localmake &quot;combs (array :buttons+1 0)
+local [left right]
+setitem 0 :f 1
+setitem 0 :combs 1
+for [i 1 :buttons] [
+  setitem :i :f 0
+  make &quot;right 0
+  for [j 0 :i-1] [
+    make &quot;left :right
+    make &quot;right item :j :combs
+    setitem :j :combs :left+:right
+    setitem :i :f (item :i :f) + (item :j :f)*(item :j :combs)
+  ]
+  setitem :i :combs 1
+]
+output 2 * item :buttons :f
+end
+</PRE>
+
+<P>It may take some effort to convince yourself that this procedure
+really computes the same results as the other versions!  Within the
+procedure, the array <CODE>f</CODE> contains the values <EM>f</EM>(0), <EM>f</EM>(1), ... as
+they are computed one by one; the array <CODE>combs</CODE> contains one row (at a
+time) of Pascal's triangle.
+
+<P>The procedure first puts <EM>f</EM>(0) into the zeroth position of the <CODE>f</CODE> array
+and the first row of Pascal's triangle (containing just one 1) in the <CODE>
+combs</CODE> array.  Then comes a <CODE>for</CODE> loop that computes <EM>f</EM>(1), then <EM>f</EM>(2),
+and so on, until the desired value is reached.  An inner <CODE>for</CODE> loop
+fills the same purpose as the <CODE>sumprods</CODE> function in the previous
+version of <CODE>simplex</CODE>:  It computes the sum of several terms, not by
+function composition but by adding each term into the sum separately.
+The instruction
+
+<P><PRE>setitem :i :f (item :i :f) + (item :j :f)*(item :j :combs)
+</PRE>
+
+<P>adds one additional term to the sum each time it's carried out.
+
+<P>The sequential Simplex calculation looks bizarre in Logo, but it's much
+more natural in Pascal:
+
+<P><PRE>function simplex(buttons:integer): integer;
+var left, right, i, j: integer;
+    f, combs: array [0..30] of integer;
+
+  begin
+  f[0] := 1;
+  combs[0] := 1;
+  for i := 1 to buttons do
+    begin
+    f[i] := 0;
+    right := 0;
+    for j := 0 to i-1 do
+      begin
+        left := right;
+        right := combs[j];
+        combs[j] := left+right;
+        f[i] := f[i] + (f[j] * combs[j])
+      end;
+      combs[i] := 1
+    end;
+    simplex := 2 * f[buttons]
+  end;
+</PRE>
+
+<P>Pascal is well suited to this style of programming for several
+reasons.  One is that the <CODE>f[i]</CODE> notation for a member of an array is
+more compact and more readable than Logo's use of procedure invocations
+(calling <CODE>item</CODE> to examine an array member and <CODE>setitem</CODE> to modify
+its value).  Another, already mentioned, is that <CODE>for</CODE> is built into
+Pascal.  Perhaps most important is Pascal's <EM>block structure:</EM>
+the keywords <CODE>begin</CODE> and <CODE>end</CODE> can be used to group what would
+otherwise be separate instructions into one larger instruction.  In Logo,
+the instructions that are repeated in a <CODE>for</CODE> loop must be part of a
+list, one of the inputs to the <CODE>for</CODE> procedure; in principle, the entire
+<CODE>for</CODE> invocation is one Logo instruction line.
+
+<P>Both Logo and Pascal are compromises between the functional paradigm and
+the sequential paradigm.  (In Logo, turtle graphics programs are most often
+done sequentially, whereas the manipulation of words and sentences is
+generally done functionally.)  But Logo is much more of a functional
+language than Pascal, partly because it supports list processing (you can
+create lists in Pascal, but it's painful), and even more importantly because
+in Logo it's easy to invent higher order functions such as <CODE>map</CODE> and
+<CODE>cascade</CODE>.  Pascal programmers can't readily invent their own control
+structures because there's nothing like <CODE>run</CODE> or <CODE>apply</CODE> in Pascal,
+and the built-in control structures are all sequential ones.  (In addition
+to <CODE>for</CODE>, Pascal has equivalents to the <CODE>while</CODE> and <CODE>do.until</CODE>
+commands in the Berkeley Logo library.)  As another example, Logo's <CODE>
+ifelse</CODE> primitive can be used either as a command or as an operation, but
+the Pascal equivalent works only as a command.
+
+<P>Not all programming languages compromise between paradigms.  It's rare these
+days to see a purely sequential language, but it used to be common; both the 
+original Fortran language and the early microcomputer versions of BASIC
+lacked the ability to handle recursive procedures.  Purely functional
+languages are not widely used in industry, but are of interest to many
+computer science researchers; the best known example is called ML.  In a 
+purely functional language, there is no assignment operator (like <CODE>make</CODE>
+in Logo) and no mutators (like <CODE>setitem</CODE> or <CODE>.setfirst</CODE>).
+
+<P>There are other programming paradigms besides sequential and functional,
+although those are the oldest.  The sequential paradigm came first because
+the actual digital computer hardware works sequentially; Fortran, which was
+the first higher level programming language, was initially viewed as merely
+an abbreviation for the computer's hardware instruction
+sequences.<SUP>*</SUP> The
+functional paradigm was introduced with Lisp, the second-oldest programming
+language still in use.  Although Lisp is not a pure functional language (it
+does have assignment and mutation), its design is firmly based on the idea of
+functions as the way to express a computation.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Today, we think of programming languages primarily as ways
+to express problems, rather than as ways to model how computer hardware
+works.  This shift in attitude has allowed the development of non-sequential
+paradigms.  We design languages that are well matched to the problems we want
+to solve, rather than well matched to the hardware we're using.</SMALL></BLOCKQUOTE></SMALL><P>Another paradigm that's very popular today is
+<EM>object-oriented programming.</EM>  In this paradigm, we imagine
+that instead of having a single computer carrying out a single program, the
+computational world includes many independent &quot;objects,&quot; each of which can
+carry out programs on its own.  Each object includes <EM>methods,</EM> which
+are like local procedures, and <EM>variables,</EM> just like the variables
+we've used all along except that each belongs to a particular object.  If
+one object wants to know the value of another object's variable, the first
+object must send a <EM>message</EM> to the second.  A message is a request
+to carry out a method, so the messages that each object accepts depends on
+the methods that it knows.
+
+<P>Logo has had a sort of glimmer of the object paradigm for many years, because
+many dialects of Logo include multiple turtles.  To move a turtle, you send
+it a message, using a notation something like
+
+<P><PRE>ask 7 [forward 100]
+</PRE>
+
+<P>to send a message to turtle number 7.  But this notation, even
+though it conveys some of the flavor of object-oriented programming, is not
+truly representative of the paradigm.  In a real object system, it would
+be possible for specific turtles to have their own, specialized <CODE>forward</CODE>
+methods.  Turtle 7, for example, might be a special &quot;dotted turtle&quot; that
+draws dotted lines instead of solid lines when it moves forward.  One Logo
+dialect, called Object Logo, does provide a genuine object capability.
+
+<P>Object-oriented programming fits naturally with the sort of problem in which
+the computer is modeling or simulating a bunch of real-world objects; in
+fact, the paradigm was invented for <EM>simulation</EM> programs, used to try
+to answer questions such as &quot;Will it eliminate the traffic jams if we add
+another lane to this highway, or should we spend the money on more frequent
+bus service instead?&quot;  The objects in the simulation program are people,
+cars, buses, and lanes.  Another example of a problem that lends itself to
+the object paradigm is a window system, such as the one in Mac OS or in
+Microsoft Windows.  Each window is an object; when a window is displayed so
+as to hide part of another window, the new window must send a message to the
+hidden one telling it not to display the hidden region.
+
+<P>Some people argue that object-oriented programming should be used for <EM>
+every</EM> programming problem, not because the independent object metaphor is
+always appropriate but because using objects helps with <EM>information
+hiding;</EM> if every variable belongs to a specific object, the program is
+less likely to have the kind of bug in which one part of a program messes up
+a data structure that's used in another part.  This can be particularly
+important, they say, in a large programming problem in which several
+programmers work on different pieces of the program.  When the different
+programmers' procedures are put together, conflicts can arise, but the
+object paradigm helps isolate each programmer's work from the others.
+Although this argument has some merit, I'm cautious about any claim that one
+particular paradigm is best for all problems.  I think programmers should be
+familiar with all of the major paradigms and be able to pick one according
+to the needs of each task.
+
+<P>Another important programming paradigm is called <EM>
+logic programming</EM> or <EM>declarative programming.</EM> In
+this approach, the programmer doesn't provide an algorithm at all, but
+instead lists known facts about the problem and poses questions.  It's up
+to the language implementation to search out all the possible solutions to
+a question.  We saw a very simplified version of this paradigm in the
+discussion of logic problems in Chapter 2.  Logic programming is especially
+well suited to <EM>database</EM> problems, in which we pose questions such as
+&quot;Who are all the employees of this company who work in the data processing
+division and have a salary above 40,000?&quot; But, like all the paradigms
+I've mentioned, logic programming is <EM>universal;</EM> any problem that can
+be solved by a computer at all can be expressed as a logic program.  Logic
+programming is quite popular in Japan and in Europe, but not so much in the
+United States, perhaps just because it wasn't invented here.
+
+<P><H2>Interactive and Non-interactive Languages</H2>
+
+
+
+<P>You use Logo by interacting with the language processor.  You issue an
+instruction, Logo does what you've told it and perhaps prints a result,
+and then you issue another instruction.  You can preserve a sequence of
+instructions by defining a procedure, in which case that procedure can be
+invoked in later instructions.  But you don't have to define procedures;
+young children generally start using Logo by issuing primitive turtle motion
+commands one at a time.  Defining procedures can be thought of as extending
+the repertoire of things Logo knows how to do for future interaction.
+
+<P>By contrast, you write a Pascal program as a complete entity, &quot;feed&quot; the
+program to the Pascal language processor all at once, and then wait for the
+results.  Often, when you type your program into the computer you aren't
+dealing with the Pascal processor at all; you use another program, a
+text editor, to let you enter your Pascal program into the computer.  <EM>
+Then</EM> you start up Pascal itself.  (Most microcomputer versions of Pascal
+include a simple text editor for program entry, just as Logo includes a
+procedure editor.)  Typically you store your Pascal program as a file on a
+disk and you give the file name as input to the Pascal language processor.
+
+<P>Keep in mind that it's the process of writing and entering a program that's
+non-interactive in Pascal.  It's perfectly possible to write a Pascal program
+that interacts with the user once it's running, alternating <CODE>read</CODE> and
+<CODE>write</CODE> statements.  (However, user input is one of the things I've left
+out of my Pascal subset, as you'll see shortly.)
+
+<P>If you want to write your own Pascal programs for use with my compiler,
+you'll need a way to create a disk file containing your new program, using
+either Logo's procedure editor or some separate editing program.  The sample
+Pascal programs in this chapter are included along with the Logo program
+files that accompany this book.
+
+<P>Our first example of a complete Pascal program is a version of the
+Tower of Hanoi puzzle.  I described this problem in
+the first volume of this series.  The Logo solution consists of two
+procedures:
+
+<P><PRE>to hanoi :number :from :to :other
+if equalp :number 0 [stop]
+hanoi :number-1 :from :other :to
+movedisk :number :from :to
+hanoi :number-1 :other :to :from
+end
+
+to movedisk :number :from :to
+print (sentence [Move disk] :number &quot;from :from &quot;to :to)
+end
+</PRE>
+
+<P>To use these procedures you issue an instruction like
+
+<P><PRE>? <U>hanoi 5 &quot;a &quot;b &quot;c</U>
+Move disk 1 from a to b
+Move disk 2 from a to c
+Move disk 1 from b to c
+Move disk 3 from a to b
+Move disk 1 from a to c
+... and so on.
+</PRE>
+
+<P>Here is the corresponding Pascal program.  This program is in the
+file <CODE>tower</CODE>.  (As you can see, Pascal programs begin with a
+<EM>program name;</EM> in all of the examples in this chapter the
+file name is the same as the program name, although that isn't a requirement
+of Pascal.)  Never mind the program details for the moment; right now
+the point is to make sure you know how to get the Pascal compiler to
+translate it into Logo.
+
+<P><PRE>program tower;
+ {This program solves the 5-disk tower of hanoi problem.}
+
+procedure hanoi(number:integer;from,onto,other:char);
+ {Recursive procedure that solves a subproblem of the original problem,
+ moving some number of disks, not necessarily 5.  To move n disks, it
+ must get the topmost n-1 out of the way, move the nth to the target
+ stack, then move the n-1 to the target stack.}
+
+  procedure movedisk(number:integer;from,onto:char);
+   {This procedure moves one single disk.  It assumes that the move is
+   legal, i.e., the disk is at the top of its stack and the target stack
+   has no smaller disks already.  Procedure hanoi is responsible for
+   making sure that's all true.}
+
+    begin {movedisk}
+      writeln('Move disk ',number:1,' from ',from,' to ',onto)
+    end; {movedisk}
+
+  begin {hanoi}
+    if number &lt;&gt; 0 then
+       begin
+         hanoi(number-1,from,other,onto);
+         movedisk(number,from,onto);
+         hanoi(number-1,other,onto,from)
+       end
+  end; {hanoi}
+
+begin {main program}
+  hanoi(5,'a','b','c')
+end.
+</PRE>
+
+<P>Once you have a Pascal program in a disk file, you compile it using the
+<CODE>compile</CODE> command with the file name as input:
+
+<P><PRE>? <U>compile &quot;tower</U>
+</PRE>
+
+<P>The compiler types out the program as it compiles it, partly to
+keep you from falling asleep while it's working but also so that if the
+compiler detects an error in the program you'll see where the error was
+found.
+
+<P>When the compiler has finished processing the <EM>source file</EM> (the file
+containing the Pascal program) it stops and you see a Logo prompt.  At this
+point the program has been translated into a simulated machine
+language.  To run the program, say
+
+<P><PRE>? <U>prun &quot;tower</U>
+Move disk 1 from a to b
+Move disk 2 from a to c
+Move disk 1 from b to c
+Move disk 3 from a to b
+Move disk 1 from a to c
+... and so on.
+</PRE>
+
+<P>The input to the <CODE>prun</CODE> (Pascal run) command is the program
+name--the word that comes after <CODE>program</CODE> at the beginning of the
+source file.
+
+<P>The difference between an interactive and a non-interactive language is not
+just an arbitrary choice of &quot;user interface&quot; style.  This choice reflects
+a deeper distinction between two different ways of thinking about what
+a computer program is.
+In Logo there is really no such thing as a &quot;program.&quot;  Each procedure is an
+entity on its own.  You may think of one particular procedure as the
+top-level one, but Logo doesn't know that; you could invoke any procedure
+directly by using an interactive instruction naming that procedure.  Logo
+does have the idea of a <EM>workspace,</EM> a collection of procedures stored
+together in a file because they are related.  But a workspace
+need not be a tree-structured hierarchy with one top-level procedure and the
+others as subprocedures.  It can be a collection of utility procedures with
+no top-level umbrella, like the Berkeley Logo library.
+It can be a group of projects that are conceptually related but with several
+independent top-level procedures, like the two memoization examples, the two
+sorting algorithms, the tree data base, and other projects in the <CODE>algs</CODE>
+workspace of Chapter 3.
+
+<P>By contrast, a Pascal program is considered a single entity.  It always
+begins with the word <CODE>program</CODE> and ends with a period, by analogy with
+an English sentence.  (The subprocedures and the individual statements
+within the program are separated with semicolons because they are analogous
+to English clauses.<SUP>*</SUP>)  It makes no sense to give the
+Pascal compiler a source file containing just procedures without a main
+program.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I say &quot;English&quot; because I am writing for an
+English-speaking audience, but in fact Pascal was designed by a largely
+European committee including native speakers of several languages; principal
+designer Niklaus Wirth is Swiss.  Their languages all
+have periods and semicolons, though.</SMALL></BLOCKQUOTE></SMALL><P><EM>Why</EM> did Logo's designers choose an interactive program development
+approach, while Pascal's designers chose a whole-program paradigm?  Like all
+worthwhile questions, this one has more than one answer.  And like many
+questions in language design, this one has two broad <EM>kinds</EM> of answer:
+the answers based on the implementation strategy for the language and the
+ones based on underlying programming goals.
+
+<P>The most obvious answer is that Pascal is a <EM>compiled</EM> language and
+Logo is an <EM>interpreted</EM> one.  That is, most Pascal language
+processors are <EM>compilers:</EM> programs that translate a program from one
+language into another, like translating a book from English into Chinese.
+Most compilers translate from a source language like Pascal into
+the native <EM>machine language</EM> of whatever computer you're using.
+(My Pascal compiler translates into a <EM>simulated</EM> machine language
+that's actually processed by Logo procedures.)  By
+contrast, most Logo versions are <EM>interpreters:</EM> programs
+that directly carry out the instructions in your source program, without
+translating it to a different (&quot;object&quot;) language.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>This is another
+case in which the same word has two unrelated technical meanings.  The use of
+&quot;object&quot; in describing the result of a compilation (object program, object
+language) has nothing to do with object-oriented programming.</SMALL></BLOCKQUOTE></SMALL><P>To understand why interpreters tend to go with interactive languages, while
+compilers usually imply &quot;batch mode&quot; program development, think about the
+&quot;little person&quot; metaphor that's often used in teaching Logo.  If you think
+of the computer as being full of little people who know how to carry out the
+various procedures you've written, the one who's really in charge is not the
+one who carries out your top-level procedure, but rather the one representing
+the Logo interpreter itself.  If the procedure specialists are like circus
+performers, the Logo interpreter is the ringmaster.  The circus metaphor is
+actually a pretty good one, because on the one hand each performer is an
+autonomous person, but at the same time the performers have to cooperate in
+order to put on a show.  The relevance of the metaphor to this discussion is
+that in a compiled language there is no &quot;ringmaster.&quot;  The compiler is more
+closely analogous to a bird that hatches an egg (your program) and then
+pushes the new bird out of the nest to fend for itself.  In a compiled
+language there is no provision for an interactive interface to which you can
+give commands that control the running of your program, unless your program
+itself includes such an interface.
+
+<P>Saying the same thing in a different way, the Logo interpreter is part of
+the environment in which any Logo program operates.  (That's why Logo can
+provide a facility like the <CODE>run</CODE> command to allow your program to
+construct new Logo instructions as it progresses.)  But a Pascal compiler
+does its job, translating your program into another form, and then
+disappears.  Whatever mechanisms are available to control your program have
+to be built into the program.  For example, my Pascal version of the Tower
+of Hanoi program includes the top-level instruction that starts up the
+solution for five disks.  In the Logo version, that instruction isn't
+considered part of the program; instead, you direct Logo interactively
+to invoke the <CODE>hanoi</CODE> procedure.
+
+<P>
+
+<P>The distinction between compiled and interpreted languages is not as
+absolute as it once was.  There are versions of Logo in which each procedure
+is compiled as you define it, but it's still possible to give instructions
+interactively.  (Some such versions include both a compiler and an
+interpreter; in others, the &quot;interpreter&quot; just arranges to compile each
+instruction you type as if it were a one-line program.)  And many current
+Pascal compilers don't compile into the machine language of the host
+computer, but rather into an <EM>intermediate</EM> language called
+&quot;P-code&quot; that is then interpreted by another program, a
+P-code interpreter.  P-code is called an intermediate language
+because the level of detail in a P-code program is in between that of a
+language you'd want to use and that of the underlying machine language.  Its
+primitives are simple and quick, not complex control structures like <CODE>
+if</CODE> or <CODE>for</CODE>.  The advantage of a Pascal language processor based on
+P-code is that the compiler is <EM>portable</EM>--it can work on
+any computer.  All that's needed to start using Pascal on a new computer is a
+P-code interpreter, which is a relatively easy programming project.
+
+<P>
+
+<P>So far I've been explaining a language design decision (interactive or
+non-interactive development) in terms of an implementation constraint
+(interpreted or compiled).  But it's possible to look beyond that
+explanation to ask <EM>why</EM> someone would choose to design a compiler
+rather than an interpreter or vice versa.
+
+<P>The main advantage of a compiler is that the finished object program runs
+fast, since it is directly executed in the native language of the host
+computer.  (An interpreter, too, ultimately carries out the program in the
+computer's native language.  But the interpreter must decide which native
+language instructions to execute for a given source language instruction
+each time that instruction is evaluated.  In a compiled language that
+translation process happens only once, producing an object program
+that requires no further translation while it's running.)
+The tradeoff is that the compilation process itself is slow.
+If you're writing a program that will be used every day forever, the
+compiled language has the advantage because the development process only
+happens once and then the program need not be recompiled.  On the other
+hand, during program development the compiled language may be at a
+disadvantage, because any little change in one instruction requires that the
+
+entire program be recompiled.  (For some languages there are <EM>
+incremental</EM> compilers that can keep track of what part of the program
+you've changed and only recompile that part.)
+
+<P>A compiled language like Pascal (or Fortran or C), then, makes sense in a
+business setting where a program is written for practical use, generally
+using well-understood algorithms so that the development process should be
+straightforward.  An interpreted language like Logo (or Lisp or BASIC) makes
+more sense in a research facility where new algorithms are being explored
+and the development process may be quite lengthy, but the program may never
+be used in routine production.  (In fact nobody uses BASIC for research
+purposes, because of other weaknesses, but its interactive nature is a plus.)
+Another environment in which interaction is important is education; a
+computer science student writes programs that may <EM>never</EM> actually be
+run except for testing.  The program is of interest only as long as it
+doesn't work yet.  For such programs the speed advantage of a compiled
+program is irrelevant.
+
+<P>There are also reasons that have nothing to do with implementation issues.
+I've spoken earlier of two conflicting views of computer science, which I've
+called the software engineering view and the artificial intelligence view.
+In the former, the program development process is seen as beginning with a
+clear, well-defined idea of what the program should do.  This idea is
+written down as a <EM>program specification</EM> that forms the basis for the
+actual programming.  From that starting point, the program is developed
+top-down; first the main program is written in terms of subprocedures that
+are planned but not written yet; then the lower-level procedures are written
+to fill in the details.  No procedure is written until it's clear how that
+procedure fits into a specific overall program.  Since Pascal's developers
+are part of the software engineering camp, it's not surprising that a Pascal
+program takes the form of an integrated whole in which each procedure must
+be <EM>inside</EM> a larger one, rather than a collection of more autonomous
+procedures.  By contrast, Logo is a product of the artificial intelligence
+camp, for whom program development is a more complicated process involving
+bottom-up as well as top-down design.  AI researchers recognize that they
+may begin a project with only a vague idea of what the finished program will
+do or how it will be organized.  It's appropriate, then, to start by writing
+program fragments that deal with whatever subtasks you <EM>do</EM> understand,
+then see how those pieces can fit together to complete the overall project.
+Development isn't a straight line from the abstract specification to the
+concrete subprocedures; it's a zigzag path in which the programmer gets an
+idea, tries it out, then uses the results as the basis for more thinking
+about ideas.
+
+<P>Traditionally, an interpreter has been the primary tool to facilitate
+interactive program development.  Recently, though, software developers
+have brought a more interactive flavor to compiled languages by inventing
+the idea of an <EM>integrated development environment</EM> (IDE), in which a
+compiler is one piece of a package that also includes a language-specific
+editor (one that knows about the syntax of the language and automatically
+provides, for example, the keyword <CODE>do</CODE> that must follow a <CODE>for</CODE> in
+Pascal), online documentation, and a <EM>debugger,</EM> which is a program
+that permits you to follow the execution of your program one step at a time,
+like the <CODE>step</CODE> command in Berkeley Logo.  The idea is to have your cake
+and eat it too:  You use the IDE tools during program development, but once
+your program is debugged, you're left with a fast compiled version that can
+be run without the IDE.
+
+<P><H2>Block Structure</H2>
+
+<P>So far we've been looking at how each language thinks about a program as a
+whole.  We turn now to the arrangement of pieces within a program or a
+procedure.
+
+<P>A Logo procedure starts with a <EM>title line,</EM> followed by the
+instructions in the procedure <EM>body</EM> and then the <CODE>end</CODE> line.
+The purpose of the title line is to give names to the procedure itself and
+to its inputs.
+
+<P>The structure of a Pascal program is similar in some ways, but with some
+complications.  The program starts with a <EM>header</EM> line, very much
+analogous to the title line in Logo.  The word <CODE>tower</CODE> in the
+header line of our sample program is the name of the program.  Skipping
+over the middle part of the program for the moment, the part between <CODE>
+begin</CODE> and <CODE>end</CODE> in the last few lines is
+the <EM>statement part</EM> of
+the program, just as in Logo.  The word <CODE>end</CODE> in the Pascal program is
+not exactly analogous to the <CODE>end</CODE> line in a Logo procedure; it's a kind
+of closing bracket, matching the <CODE>begin</CODE> before it.  The period right
+after the final <CODE>end</CODE> is what corresponds to the Logo <CODE>end</CODE> line.
+
+<P>
+
+<P>What makes Pascal's structure different from Logo's is the part I've skipped
+over, the declaration of procedures.  In Logo, every procedure is a separate
+entity.  In Pascal, the declaration of the procedure <CODE>hanoi</CODE>, for
+example, is <EM>part of</EM> the program <CODE>tower</CODE>.  This particular
+program uses no global variables, but if it did, those variables would also
+have to be declared within the program.  If the program used global
+variables <CODE>a</CODE>, <CODE>b</CODE>, <CODE>i</CODE>, and <CODE>j</CODE> then it might begin
+
+<P><PRE>program tower;
+var a,b:real;
+    i,j:integer;
+procedure hanoi(number:integer;from,onto,other:char);
+</PRE>
+
+<P>In summary, a Pascal program consists of
+<P>
+<TABLE><TR><TH align="right" valign="top">1.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> the header line
+<TR><TH align="right" valign="top">2.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> the declaration part (variables and procedures)
+<TR><TH align="right" valign="top">3.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> the statement part
+<TR><TH align="right" valign="top">4.<TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"> the final punctuation (period)
+
+<P></TABLE><P>
+
+<P>But notice that the procedure <CODE>hanoi</CODE>, declared inside <CODE>
+tower</CODE>, has the <EM>same</EM> structure as the entire program.  It
+begins with a header line; its declaration part includes the declaration of
+procedure <CODE>movedisk</CODE>; it has a statement part between <CODE>begin</CODE> and
+<CODE>end</CODE>; its final punctuation is a semicolon instead of a period.
+
+<P>What does it <EM>mean</EM> for one procedure to be declared inside another?
+You already know what a <EM>local variable</EM> means; if a variable <CODE>v</CODE>
+belongs to a procedure <CODE>p</CODE> then that variable exists only while the
+procedure is running; at another point in the program there might be a
+different variable with the same name.  In Pascal, the same is true for
+local procedures.  In our example program, the procedure <CODE>movedisk</CODE>
+exists only while procedure <CODE>hanoi</CODE> is running.  It would be an error to
+try to invoke <CODE>movedisk</CODE> directly from the main program.
+
+<P>The header line for a procedure can include names for its inputs, just as
+the title line of a Logo procedure names its inputs.  A useful bit of
+terminology is that the variable names in the procedure header are called
+<EM>formal parameters</EM> to distinguish them from the expressions
+that provide particular input values when the procedure is actually invoked;
+the latter are called <EM>actual arguments.</EM> The words
+&quot;parameter&quot; and &quot;argument&quot; are both used for what we call an
+&quot;input&quot; in Logo.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I'm misleading you a little bit by calling it a
+&quot;header line.&quot; Like any part of a Pascal program, the header can extend
+over more than one line, or can be on the same line with other things.  The
+end of the header is marked with a semicolon.  In Pascal a line break is
+just like a space between words.  However, there are conventions for
+properly formatting a Pascal program.  Even though the Pascal compiler
+doesn't care about spacing and line breaks, people always do it as I've
+shown you here, with subordinate parts of the program indented and each
+statement on a separate line.</SMALL></BLOCKQUOTE></SMALL><P>The sequence of header, declarations, statements, and punctuation is called
+a <EM>block.</EM> Pascal is called a <EM>block structured</EM> language
+because of the way blocks can include smaller blocks.  Another aspect of
+block structure is
+Pascal's use of <EM>compound statements.</EM>  A sequence of the form
+
+<P><PRE>begin <EM>statement</EM> ; <EM>statement</EM> ; <EM>statement</EM> end
+</PRE>
+
+<P>is called a compound statement.  An example from the <CODE>tower</CODE>
+program is
+
+<P><PRE>begin
+  hanoi(number-1,from,other,onto);
+  movedisk(number,from,onto);
+  hanoi(number-1,other,onto,from)
+end
+</PRE>
+
+<P>(Notice that semicolons go <EM>
+between</EM> statements within this sequence; none is needed after the last
+statement of the group.  This syntactic rule is based on the analogy between
+Pascal statements and English clauses that I mentioned earlier.)  For
+example, Pascal includes a conditional statement whose form is
+
+<P><PRE>if <EM>condition</EM> then <EM>statement</EM>
+</PRE>
+
+<P>
+The &quot;statement&quot; part can be a single <EM>simple</EM> statement,
+like a procedure call, or it can be a compound statement delimited by <CODE>
+begin</CODE> and <CODE>end</CODE>.  Because the general term &quot;block structured language&quot;
+refers to any syntactic grouping of smaller units into a larger one,
+including compound statements, you may hear the word &quot;block&quot; used to refer
+to a compound statement even though that's not the official Pascal meaning.
+
+<P>
+
+<P>
+<H2>Statement Types</H2>
+
+<P>
+
+<P>In Logo we don't talk about different kinds of statements like compound,
+simple, and so on.  <EM>Every</EM> Logo instruction (well, all but <CODE>to</CODE>)
+is a procedure invocation.  <CODE>If</CODE>, for example, is a procedure whose
+first input is <CODE>true</CODE> or <CODE>false</CODE> and whose second input is a list
+containing instructions to be carried out if the first input is <CODE>true</CODE>.
+In Pascal there are several different kinds of statements, each with its own
+syntax.
+
+<P>You know about compound statements.  You've seen one example of <CODE>if</CODE>,
+
+which is one of several <EM>structured</EM> statements in Pascal.  Other
+examples include
+
+<P><PRE>while <EM>condition</EM> do <EM>statement</EM>;
+repeat <EM>statements</EM> until <EM>condition</EM>
+
+while x &lt; 0 do
+  begin
+    increase(x);
+    writeln(x)
+  end;
+
+repeat
+  increase(x);
+  writeln(x)
+until x &gt;= 0;
+</PRE>
+
+<P>These are like the <CODE>while</CODE> and <CODE>do.until</CODE> tools in
+Berkeley Logo.  <CODE>While</CODE>, like <CODE>if</CODE>, requires a single statement
+(which can be a compound statement between <CODE>begin</CODE> and <CODE>end</CODE>) after
+the <CODE>do</CODE>.  However, the words <CODE>repeat</CODE> and <CODE>until</CODE> implicitly
+delimit a compound statement, so you can put more than one statement between
+them without using <CODE>begin</CODE> and <CODE>end</CODE>.  Another example is <CODE>
+for</CODE>, which you'll see in use in a moment.  Continuing the analogy
+with English grammar, a compound statement is like a compound sentence with
+several independent (or coordinate) clauses; a structured statement is like
+a complex sentence, with a dependent (or subordinate) clause.  (If you
+always hated grammar, you can just ignore this analogy.)
+
+<P>There are basically only two kinds of simple statement: the
+procedure call,
+
+which you've already seen, and the <EM>assignment</EM> statement used to give
+a variable a new value.  This latter is Pascal's version of <CODE>make</CODE> in
+Logo; it takes the form
+
+<P><PRE><EM>variable</EM> := <EM>expression</EM>
+
+slope := ychange/xchange
+</PRE>
+
+<P>As I've already mentioned, the variable must have been declared
+either in a procedure heading or in a <CODE>var</CODE> declaration.
+(Assignment is represented with the two-character symbol <CODE>:=</CODE> because
+<CODE>=</CODE> by itself means <CODE>equalp</CODE> rather than <CODE>make</CODE>.)
+
+<P>I say there are &quot;basically&quot; only two kinds because each of these has some
+special cases that look similar but follow different rules.  For example,
+printing to the computer screen is done by what looks like an invocation of
+<CODE>write</CODE> (analogous to <CODE>type</CODE> in Logo) or <CODE>
+writeln</CODE> (&quot;write line,&quot; analogous to <CODE>print</CODE>).  But these are
+not ordinary procedures.  Not only do they take a variable number of
+arguments, but the arguments can take a special form not ordinarily
+allowed.  In the <CODE>movedisk</CODE> procedure in the <CODE>tower</CODE> program, one of
+the arguments to <CODE>writeln</CODE> is
+
+<P><PRE>number:1
+</PRE>
+
+<P>The &quot;<CODE>:1</CODE>&quot; here means &quot;using one print position unless more
+are needed to fit the number.&quot; Pascal print formatting is designed to
+emphasize the printing of numbers in columns, so the default is to print
+each number with a fairly large number of characters, with spaces at the
+left if the number doesn't have enough digits.  The exact number of
+characters depends on the type of number and the dialect of Pascal, but 10
+is a typical number for integers.  So
+
+<P><PRE>writeln(1,2,3,4);
+writeln(1000,2000,3000,4000);
+</PRE>
+
+<P>will give a result looking something like this:
+
+<P><PRE>         1         2         3         4
+      1000      2000      3000      4000
+</PRE>
+
+<P>In <CODE>movedisk</CODE> I had to say &quot;<CODE>:1</CODE>&quot; to avoid all that
+extra space.
+
+<P>What are the pros and cons of using a variety of syntax rules for different
+kinds of statements?  One reason for the Pascal approach is that differences
+in meaning can be implicit in the definitions of different statement types
+instead of having to be made explicit in a program.  Don't worry; you're not
+expected to understand what that sentence meant, but you will as soon as you
+see an example.  In Logo we say
+
+<P><PRE>if :x &lt; 10 [increment &quot;x]
+while [:x &lt; 10] [increment &quot;x]
+</PRE>
+
+<P>Why is the predicate expression <CODE>:x &lt; 10</CODE> in a quoted list in
+the case of <CODE>while</CODE> but not for <CODE>if</CODE>?  <CODE>If</CODE> wants the
+expression to be evaluated once, <EM>before</EM> <CODE>if</CODE> is invoked.  The
+actual input to <CODE>if</CODE> is not that expression but the value of the
+expression, either <CODE>true</CODE> or <CODE>false</CODE>.  <CODE>While</CODE>, on the other
+hand, wants to evaluate that expression repeatedly.  If Logo evaluated the
+expression ahead of time and gave <CODE>while</CODE> an input of <CODE>true</CODE> or <CODE>
+false</CODE> it wouldn't be able to know when to stop repeating.
+
+<P>The fact that <CODE>if</CODE> wants the condition evaluated once but <CODE>while</CODE>
+wants to evaluate it repeatedly has nothing to do with the syntax of Logo;
+the same is true in Pascal.  But in Pascal you say
+
+<P>
+
+<P><PRE>if x&lt;10 then increment(x);
+while x&lt;10 do increment(x);
+</PRE>
+
+<P>In Logo the fact that <CODE>if</CODE>'s condition is evaluated in advance
+but <CODE>while</CODE>'s isn't is made explicit by the use of square brackets.  In
+Pascal it's just part of the <EM>semantic</EM> definitions of the <CODE>if</CODE>
+and <CODE>while</CODE> statements.  (<EM>Syntax</EM> is the form in which something
+is represented; <EM>semantics</EM> is the meaning of that something.)
+
+<P>One more example:  Beginning students of Logo often have trouble
+understanding why you say
+
+<P><PRE>make &quot;new :old
+</PRE>
+
+<P>to assign the value of one variable to another variable.  Why is
+the first quoted and the second dotted?  Of course you understand that it's
+because the first input to <CODE>make</CODE> is the <EM>name</EM> of the variable
+you want to set, while the second is the <EM>value</EM> that you want to give
+it.  But in Pascal this distinction is implicit in the semantic definition
+of the assignment statement; you just say
+
+<P><PRE>new := old
+</PRE>
+
+<P>Since beginning Logo students have trouble with quotes and dots in <CODE>
+make</CODE>, you might think that the Pascal approach is better.  But beginning
+Pascal students have a trouble of their own; they tend to get thrown by
+statements like
+
+<P><PRE>x := x+1
+</PRE>
+
+<P>This doesn't look quite as bad as the BASIC or Fortran version in
+which the symbol for assignment is just an equal sign, but it's still easy
+to get confused because the symbol &quot;<CODE>x</CODE>&quot; means two very different
+things in its two appearances here.  In the Logo version
+
+<P><PRE>make &quot;x :x+1
+</PRE>
+
+<P>the explicit difference in appearance between <CODE>&quot;x</CODE> and <CODE>:x</CODE>
+works to our advantage.
+
+<P>Which way do you find it easier to learn something:  Do you want to start
+with a simple, perhaps partly inaccurate understanding and learn about the
+difficult special cases later, or do you prefer to be told the whole truth
+from the beginning?  I've posed the question in a way that shows my own
+preference, I'm afraid, but there are many people with the opposite view.
+
+<P>The issue about whether or not to make the semantics of some action implicit
+in the syntax of the language is the most profound reason for the difference
+between Logo's single instruction syntax and Pascal's collection of
+statement types, but there are other implications as well.  One virtue of
+the Pascal compound statement is that it makes for short, manageable
+instruction lines.  You've seen Logo procedures in these books in which one
+&quot;line&quot; goes on for three or four printed lines on the page, e.g., when the
+instruction list input to <CODE>if</CODE> contains several instructions.  It's a
+particularly painful problem in the versions of Logo that don't allow
+continuation lines.
+
+<P>On the other hand, Logo's syntactic uniformity contributes to its <EM>
+extensibility.</EM> In the example above, <CODE>if</CODE> is a Logo primitive,
+whereas <CODE>while</CODE> is a library procedure written in Logo.  But the
+difference isn't obvious; the two are used in syntactically similar ways.
+You can't write control structures like <CODE>while</CODE> in Pascal because
+there's nothing analogous to <CODE>run</CODE> to allow a list of instructions to be
+an input to a procedure, but even if you could, it would have to take the
+form
+
+<P><PRE>while(<EM>condition</EM>,<EM>statement</EM>)
+</PRE>
+
+<P>because that's what a procedure call looks like.  But it's not
+what a built-in Pascal control structure looks like.
+
+<P><H2>Shuffling a Deck Using Arrays</H2>
+
+
+<P>It's time for another sample Pascal program.  Program <CODE>cards</CODE> is a
+Pascal version of the problem of shuffling a deck of cards that we discussed
+in Chapter 3.  It includes local variables, assignment statements, and the
+<CODE>for</CODE> structured statement.  It also will lead us into some
+additional language design issues.
+
+<P><PRE>program cards;
+ {Shuffle a deck of cards}
+
+var ranks:array [0..51] of integer;
+    suits:array [0..51] of char;
+    i:integer;
+
+procedure showdeck;
+ {Print the deck arrays}
+
+  begin {showdeck}
+    for i := 0 to 51 do
+      begin
+        if i mod 13 = 0 then writeln;
+        write(ranks[i]:3,suits[i]);
+      end;
+    writeln;
+    writeln
+  end; {showdeck}
+
+procedure deck;
+ {Create the deck in order}
+
+  var i,j:integer;
+      suitnames:packed array [0..3] of char;
+
+  begin {deck}
+    suitnames := 'HSDC';
+    for i := 0 to 12 do
+      for j := 0 to 3 do
+        begin
+          ranks[13*j+i] := i+1;
+          suits[13*j+i] := suitnames[j]
+        end;
+    writeln('The initial deck:');
+    showdeck
+  end; {deck}
+
+procedure shuffle;
+ {Shuffle the deck randomly}
+
+  var rank,i,j:integer;
+      suit:char;
+
+  begin {shuffle}
+    for i := 51 downto 1 do {For each card in the deck}
+      begin
+        j := random(i+1); {Pick a random card before it}
+        rank := ranks[i]; {Interchange ranks}
+        ranks[i] := ranks[j];
+        ranks[j] := rank;
+        suit := suits[i]; {Interchange suits}
+        suits[i] := suits[j];
+        suits[j] := suit
+      end;
+    writeln('The shuffled deck:');
+    showdeck
+  end; {shuffle}
+
+begin {main program}
+  deck;
+  shuffle
+end.
+</PRE>
+
+<P>Experienced Pascal programmers will notice that this program isn't written
+in the most elegant possible Pascal style.  This is partly because of issues
+in Pascal that I don't want to talk about (records) and partly because of
+issues that I <EM>do</EM> want to talk about in the next section (scope).
+
+<P>Here's what happens when you run the program:
+
+<P><PRE>? <U>prun &quot;cards</U>
+The initial deck:
+
+  1H  2H  3H  4H  5H  6H  7H  8H  9H 10H 11H 12H 13H
+  1S  2S  3S  4S  5S  6S  7S  8S  9S 10S 11S 12S 13S
+  1D  2D  3D  4D  5D  6D  7D  8D  9D 10D 11D 12D 13D
+  1C  2C  3C  4C  5C  6C  7C  8C  9C 10C 11C 12C 13C
+
+The shuffled deck:
+
+  2D 11D  6S  9D  6C 10H  8D 11C  3D  4C  5H  4S  1D
+  5C  5D  6D  9S  4D  8C 13S 13D 10C  9H 10D  5S 12D
+ 13H  9C  3C  1S 10S  4H 12S 11S 12H 11H  2H  3H  1H
+ 13C  8H  7C  2C  1C  7S  6H  2S  7D  8S 12C  3S  7H
+</PRE>
+
+<P>The Pascal <CODE>for</CODE> is somewhat like the Berkeley Logo <CODE>for</CODE>
+in its semantics, although of course the syntax is quite different.  The
+step value must be either 1 (indicated by the keyword <CODE>to</CODE>) or &minus;1
+(<CODE>downto</CODE>).  By the way, if you've been wondering why I changed one of
+the variable names in the Tower of Hanoi program from <CODE>to</CODE> in the Logo
+version to <CODE>onto</CODE> in the Pascal version, it's because <CODE>to</CODE> is a <EM>
+reserved word</EM> in Pascal and can't be used as the name of
+anything.
+
+<P>The Pascal standard does not include a <CODE>random</CODE> function.  Most
+practical versions of Pascal do provide a random number generator of some
+sort; since there's no standard, I've chosen to implement the kind that's
+most useful for the kind of programming I'm interested in, namely the Logo
+<CODE>random</CODE> that takes an integer argument and returns an integer between
+zero and one less than the argument.
+
+<P><H2>Lexical Scope</H2>
+
+
+<P>Program <CODE>cards</CODE> has three procedures: <CODE>showdeck</CODE>, <CODE>deck</CODE>,
+and <CODE>shuffle</CODE>.  Each of these is declared directly in the top-level
+program.  However, <CODE>showdeck</CODE> is not <EM>invoked</EM> directly at top
+level; it's used by the other two procedures.  (This is one of the
+questionable bits of programming style I've put in for the sake of the
+following discussion; ordinarily I think I'd have put the statements that
+invoke <CODE>showdeck</CODE> in the main program block.)
+
+<P>If you read the program carefully you'll see that <CODE>showdeck</CODE> uses a
+variable <CODE>i</CODE> but does <EM>not</EM> declare that
+variable.<SUP>*</SUP>  (When a
+variable is used but not declared within a certain procedure, that use of
+the variable is called a <EM>free reference.</EM> A use of a
+variable that
+
+<EM>is</EM> declared in the same block is called a <EM>bound</EM> reference.)
+There are three variables named <CODE>i</CODE> in the program: one in the outer
+block, one in <CODE>deck</CODE>, and one in <CODE>shuffle</CODE>.  When, for example, the
+main program calls <CODE>deck</CODE> and <CODE>deck</CODE> calls <CODE>showdeck</CODE>, which
+variable <CODE>i</CODE> does <CODE>showdeck</CODE> use?
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Actually, the Pascal language requires that the variable
+used in a <CODE>for</CODE> statement <EM>must</EM> be declared in the same procedure
+in which the <CODE>for</CODE> appears; program <CODE>cards</CODE> is not legal Pascal for
+that reason.  What's the purpose of that restriction?  Suppose that this
+procedure was invoked from within another <CODE>for</CODE> loop in another
+procedure, and both use the same variable; then both procedures would be
+trying to assign conflicting values to that variable.  Berkeley Logo's <CODE>
+for</CODE> automatically makes its variable local to the <CODE>for</CODE> procedure
+itself, for the same reason.  But my Pascal compiler lets us get away with
+breaking this rule, and I've done it deliberately to make a point.</SMALL></BLOCKQUOTE></SMALL><P>In Logo the answer would be that <CODE>showdeck</CODE> uses the <CODE>i</CODE> belonging
+to <CODE>deck</CODE>, the procedure that invoked it.  That's because Logo follows
+the rules of <EM>dynamic scope:</EM>  A free reference to a variable is
+directed to the variables of the procedure that invoked the current one,
+then if necessary to the variables of the procedure that invoked that one,
+and so on up to the global variables.  (Dynamic scope is discussed more
+fully in the first volume of this series.)
+
+<P>In Pascal, <CODE>showdeck</CODE> uses the <CODE>i</CODE> belonging to the main program.
+That's because a free reference to a variable is directed to <EM>the block
+within which the current procedure was declared,</EM> then to the block
+surrounding that one, and so on up to the outermost program block.  This
+rule is called <EM>lexical</EM> scope.  The set of blocks surrounding a
+given block, smaller to larger, is its <EM>lexical environment.</EM>  The
+lexical environment of <CODE>showdeck</CODE> is
+
+<P><PRE>{showdeck, cards}
+</PRE>
+
+<P>The lexical environment of <CODE>movedisk</CODE> in the <CODE>tower</CODE>
+program is
+
+<P><PRE>{movedisk, hanoi, tower}
+</PRE>
+
+<P>The set of procedure invocations leading to a given procedure is
+its <EM>dynamic environment.</EM> A procedure's dynamic environment
+isn't always the same; for example, the dynamic environment of <CODE>
+showdeck</CODE> is sometimes
+
+<P><PRE>{showdeck, deck, cards}
+</PRE>
+
+<P>and sometimes
+
+<P><PRE>{showdeck, shuffle, cards}
+</PRE>
+
+<P>The word &quot;lexical&quot; is the adjective form of <EM>lexicon,</EM> which
+means &quot;dictionary.&quot;  It's used in this computer science context because the
+lexical context of a procedure has to do with where it's defined, just as
+words are defined in a dictionary.  The word &quot;dynamic&quot; means <EM>in
+motion;</EM> it's used because the dynamic context of a procedure keeps
+changing as the program runs.
+
+<P>What are the reasons behind the choice of lexical or dynamic scope?  This is
+another choice that was originally made for implementation reasons.  It
+turns out to be easy for an interpreter to use dynamic scope, but for a
+compiler it's much easier to use lexical scope.  That's because the
+interpreter makes the decision about which variable to use while the program
+is running and the dynamic environment is known, but the compiler has to
+translate the program <EM>before</EM> it is run.  At &quot;compile time&quot; there
+isn't one fixed dynamic environment, but there is a single, already-known
+lexical environment.  Originally, interpreted languages like Logo, Lisp, and
+APL all used dynamic scope, while compiled ones like Fortran and Pascal used
+lexical scope.  (There was even a period of time when Lisp systems offered
+both an interpreter and a compiler, and the behavior of the same program was
+different depending on whether you compiled it or interpreted it because of
+different scope rules.)
+
+<P>More recent dialects of Lisp, such as Common Lisp and Scheme, have been
+designed to use lexical scope even when interpreted.  Their designers
+think lexical scope is better for reasons that don't depend on the
+implementation technique.  One reason is that dynamic scope allows for
+programming errors that don't arise when lexical scope is used.  In Logo,
+suppose you write a procedure that makes a free reference to some variable
+<CODE>v</CODE>.  What you intended, let's say, was to use a global variable by that
+name.  But you've forgotten that your procedure is sometimes invoked by
+another procedure that you wrote two weeks ago that happens to have an input
+named <CODE>v</CODE>.  It can be very hard to figure out why your procedure is
+suddenly getting the wrong variable.  With lexical scope, it's much easier
+to keep track of the context in which your procedure is defined, to make
+sure there are no local variables <CODE>v</CODE> in the lexical environment.
+
+<P>It's possible to argue in favor of dynamic scope also.  One
+argument is that in a lexically scoped language certain kinds of tool
+procedures can't be written at all: the ones like <CODE>while</CODE> or <CODE>for</CODE>
+that take an instruction list as input and <CODE>run</CODE> the list repeatedly.
+Suppose you write a procedure in Logo that contains an instruction like
+
+<P><PRE>while [:degrees &lt; 0] [make &quot;degrees :degrees+360]
+</PRE>
+
+<P>What variable <CODE>degrees</CODE> do you want this instruction to use?
+Presumably you mean the same variable <CODE>degrees</CODE> that is used by other
+instructions in the same procedure.  But if Logo used lexical scope,
+then <CODE>while</CODE> wouldn't have access to the local variables of your
+procedure.  (It's possible to design other features into a lexically scoped
+language to get around this limitation, but the necessary techniques are
+more complicated than the straightforward way you can write <CODE>while</CODE> in
+Logo.)
+
+<P>Another argument for dynamic scope, with particular relevance to Logo, is
+that dynamic scope fits better with the expectations of an unsophisticated
+programmer who hasn't thought about scope at all.  One of the design goals
+of Logo is to be easy for such beginners.  Until now we've been talking
+about scope in terms of naming conflicts: what happens if two variables have
+the same name.  But suppose you write a program with a bunch of procedures,
+with a bunch of <EM>distinct</EM> variable names used as inputs.  It makes
+life very simple if all those variables are available whenever you want them,
+so you don't have to think in such detail about how to get a certain piece
+of information down the procedure invocation chain to a subprocedure.  If
+some variables are accessible to subprocedures but others aren't, that's one
+more mystery to make programming seem difficult.  In particular, dynamic
+scope can simplify the debugging of a Logo program.  If you arrange for your
+program to <CODE>pause</CODE> at the moment when an error happens, then you can
+enter Logo instructions, with all of the local variables of <EM>all</EM>
+pending procedure invocations available, to help you figure out the reason
+for the error.  Debuggers for lexically scoped languages require a more
+complicated debugging mechanism in which the programmer must explicitly
+shift focus from one procedure to another.
+
+<P>In the situations we've seen, lexical scope always acts as a <EM>
+restriction</EM> on the availability of variables to subprocedures.  That is,
+a procedure's lexical environment is always a subset of its dynamic
+environment.  (Suppose procedure <CODE>a</CODE> includes the definition of
+procedure <CODE>b</CODE>, which in turn includes the definition of <CODE>c</CODE>.  So the
+lexical environment of <CODE>c</CODE> is <CODE>{c,b,a}</CODE>.  You might imagine that
+<CODE>c</CODE>'s dynamic environment could be <CODE>{c,a}</CODE> if procedure <CODE>a</CODE>
+invoked <CODE>c</CODE> directly, but in fact that's illegal.  Just as <CODE>a</CODE> can't
+use <CODE>b</CODE>'s local variables, it can't use <CODE>b</CODE>'s local procedures
+either.  The reason the dynamic environment can be different from the
+lexical one at all is that two procedures can be part of the same block,
+like <CODE>showdeck</CODE> and <CODE>deck</CODE> in the <CODE>cards</CODE> program.)  In Lisp,
+it's possible for a procedure to return <EM>another procedure</EM> as its
+output--not just the name of the procedure or the text of the procedure, as
+we could do in Logo, but the procedure itself, lexical environment and all.
+When such a procedure is later invoked from some other part of the
+program, the procedure's lexical environment may not be a subset
+of its dynamic environment, and so lexical scope gives it access to
+variables that it couldn't use under dynamic scope rules.  That's a powerful
+argument in favor of lexical scope for Lisp, but it doesn't apply to Pascal.
+
+<P>One special scope rule in Pascal applies to procedures declared in the same
+block:  The one declared later can invoke the one declared earlier, but not
+the other way around.  In the <CODE>cards</CODE> program, <CODE>deck</CODE> can call <CODE>
+showdeck</CODE> but <CODE>showdeck</CODE> can't call <CODE>deck</CODE>.  There is no deep reason
+for this restriction; it's entirely for the benefit of the compiler.  One of
+the design goals of Pascal was that it should be easy to write a compiler
+that goes through the source program once, from beginning to end, without
+having to back up and read part of the program twice.  In particular, when
+the compiler sees a procedure invocation, it must already know what inputs
+that procedure requires; therefore, it must have already read the header of
+the subprocedure.  Usually you can get around this restriction by rearranging
+the procedures in your program, but for the times when that doesn't work
+Pascal provides a kludge that lets you put the header in one place in the
+source file and defer the rest of the procedure until later.
+
+<P>
+
+<P><H2>Typed Variables</H2>
+
+
+<P>Berkeley Logo has three data types: <EM>word, list,</EM> and <EM>
+array.</EM> (Numbers are just words that happen to be full of digits.)  But a
+<EM>variable</EM> in Logo does not have a type associated with it; any datum
+can be the value of any variable.
+
+<P>Pascal has lots of types, and every variable belongs to exactly one of them.
+In the sample programs so far we've used five types: <EM>char,</EM> <EM>
+integer,</EM> <EM>array of char,</EM> <EM>array of integer,</EM> and <EM>packed array
+of char.</EM>  When a variable is declared, the declaration says what type it is.
+
+<P>The selection of data types is the area in which my Pascal compiler is most
+lacking; I've implemented only a few of the possible types.  I'll describe
+the ones available in my compiler in detail and give hints about the others.
+
+<P>
+The fundamental types out of which all others are built are the <EM>
+scalar</EM> types that represent a single value, as opposed to an aggregate
+like an array or a list.  Pascal has four:
+
+<P><P>
+<TABLE><TR><TH align="right" valign="top"><CODE>integer</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a positive or negative whole number (e.g., <CODE>
+23</CODE>)
+<TR><TH align="right" valign="top"><CODE>real</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a number including decimal fraction part (e.g., <CODE>
+-5.0</CODE>)
+<TR><TH align="right" valign="top"><CODE>char</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top">a single character (e.g., <CODE>'Q'</CODE>)
+<TR><TH align="right" valign="top"><CODE>Boolean</CODE><TD>&nbsp;&nbsp;&nbsp;&nbsp;<TD valign="top"><CODE>true</CODE> or <CODE>false</CODE>
+
+<P></TABLE><P>
+
+<P>Pascal also has several kinds of aggregate types.  The only one
+that I've implemented is the array, which is a fixed number of uniform
+elements.  By &quot;uniform&quot; I mean that all members of the array must be of
+the same type.  Full Pascal allows the members to be of any type, including
+an aggregate type, as long as they're all the same, so you could say
+
+<P><PRE>var a : array [1..10] of array [1..4] of integer;
+</PRE>
+
+<P>to get an array of arrays.  But in my subset Pascal the members of
+an array must be scalars.  This restriction is not too severe because Pascal
+arrays can have <EM>multiple indices;</EM> instead of the above you can use
+the equivalent
+
+<P><PRE>var a : array [1..10, 1..4] of integer;
+</PRE>
+
+<P>This declaration creates a two-dimensional array whose members
+have names like <CODE>a[3,2]</CODE>.
+
+<P>The notation <CODE>1..10</CODE> is called a <EM>range;</EM> it indicates the extent
+of the array.  Berkeley Logo arrays ordinarily start with index one, so
+a Logo instruction like
+
+<P><PRE>make &quot;ten array 10
+</PRE>
+
+<P>is equivalent to the Pascal declaration
+
+<P><PRE>var ten:array [1..10] of something
+</PRE>
+
+<P>except that the Logo array need not have uniform
+members.<SUP>*</SUP>  (Also,
+a subtle difference is that the Logo array is an independent datum that can
+be the value of a variable just as a number can be the value of a variable.
+The Pascal array <EM>is</EM> the variable; you can change the contents of
+individual members of the array but it's meaningless to speak of changing
+the value of that variable to be something other than that array.)
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The Berkeley Logo <CODE>array</CODE> primitive can take an optional
+second input to specify a different starting index.</SMALL></BLOCKQUOTE></SMALL><P>In Pascal an index range doesn't have to be numbers; you can use any scalar
+type except real:
+
+<P><PRE>var frequency : array ['a'..'z'] of integer;
+</PRE>
+
+<P>might be used in a program that counts the frequency of use of
+letters, such as a cryptography program.  The members of this array would be
+used by referring to things like <CODE>frequency['w']</CODE>.  (In Pascal
+documentation there is a word for &quot;scalar type other than real&quot;:  It's
+
+called an <EM>ordinal</EM> type.)
+
+<P>A <EM>packed array</EM> is one that's represented in the computer in a way
+that takes up as little memory as possible.  Ordinary arrays are stored so
+as to make it as fast as possible to examine or change an individual element.
+The distinction may or may not be important for a given type on a given
+computer.  For example, most current home computers have their memory
+organized in <EM>bytes</EM> that are just the right size for a single
+character.  On such a computer, an array of char and a packed array of char
+will probably be represented identically.  But one of my favorite larger
+computers, the Digital Equipment Corporation PDP-10, had its memory
+organized in <EM>words</EM> of 36 bits, enough for five 7-bit characters with
+one bit left over.  A packed array of char, on the PDP-10, would be
+represented with five characters per word; an ordinary array of char might
+store only one character per word, wasting some space in order to simplify
+the task of finding the <EM>n</EM>th character of the array.
+
+<P>My compiler, which is meant to be simple rather than efficient, ignores the
+<CODE>packed</CODE> declaration.  The reason I used it in the <CODE>cards</CODE> program
+is to illustrate a rule of Pascal:  The statement
+
+<P><PRE>suitnames := 'HSDC'
+</PRE>
+
+<P>assigns a <EM>constant string</EM> to the array variable <CODE>
+suitnames</CODE>, and such assignments are allowed only to packed arrays of char.
+Also, the size of the array must equal the length of the string.  If
+<CODE>suitnames</CODE> were an array of length 10, for example, I'd have had to say
+
+<P><PRE>suitnames := 'HSDC      '
+</PRE>
+
+<P>filling up the unused part of the array explicitly with spaces.
+
+<P>In an assignment statement, the type of the variable on the left must be the
+same as the type of the expression on the right.  An assignment can copy one
+array into another if it involves two variables of exactly the same type:
+
+<P><PRE>var a,b:array [3..17] of real;
+
+a := b
+</PRE>
+
+<P>but except for the case of packed arrays of char mentioned above
+there is no way to represent a constant array in a Pascal program.  If you
+want an array of all the prime numbers less than 10 you have to initialize it
+one member at a time:
+
+<P><PRE>var primes : array [1..4] of integer;
+
+primes[1] := 2;
+primes[2] := 3;
+primes[3] := 5;
+primes[4] := 7
+</PRE>
+
+<P>In scalar assignments, a slight relaxation of the rules is allowed in that
+you may assign an integer value to a real variable.  The value is converted
+to a real number (e.g., <CODE>17</CODE> to <CODE>17.0</CODE>).  The opposite is <EM>
+not</EM> allowed, but there are two built-in functions <CODE>trunc</CODE> (for
+&quot;truncate&quot;) and <CODE>round</CODE> that can be used to convert a real value to an
+integer.  <CODE>Trunc</CODE> cuts off the fraction part, so <CODE>trunc(4.99)</CODE> is
+<CODE>4</CODE>.  <CODE>Round</CODE> rounds to the nearest integer.
+
+<P>Pascal provides the usual infix arithmetic operations <CODE>+</CODE>, <CODE>-</CODE>,
+<CODE>*</CODE>, and <CODE>/</CODE>, following the usual precedence rules, just as in Logo.
+The result of any of these is integer if both operands are integer,
+otherwise real, except that the result of <CODE>/</CODE> (division) is always real.
+There are integer division operations <CODE>div</CODE> (integer quotient) and <CODE>
+mod</CODE> (integer remainder); both operands to these must also be integers.
+The relational operators <CODE>=</CODE> (like <CODE>equalp</CODE> in Logo), <CODE>&lt;</CODE> (less
+than), <CODE>&gt;</CODE> (greater than), <CODE>&lt;=</CODE> (less than or equal to), <CODE>&gt;=</CODE>
+(greater than or equal to), and <CODE>&lt;&gt;</CODE> (not equal to) take two real or
+integer operands and yield a Boolean result.  There are also Boolean
+operators <CODE>and</CODE>, <CODE>or</CODE>, and <CODE>not</CODE>, just like the Logo ones except
+that they use infix syntax:
+
+<P><PRE>(x &lt; 0) and (y &lt;= 28)
+</PRE>
+
+<P><H2>Additional Types in Standard Pascal</H2>
+
+<P>Standard Pascal, but not my version, includes other aggregate types besides
+the array.  One such type is the <EM>record;</EM> a record is a non-uniform
+aggregate, but the &quot;shape&quot; of the aggregate must be declared in advance.
+For example, you can declare a record containing three integers and an array
+of 10 characters.  In the <CODE>cards</CODE> program, instead of two separate
+arrays for ranks and suits I could have said
+
+<P><PRE>var carddeck: array [0..51] of record
+                                  rank:integer;
+                                  suit:char
+                               end;
+</PRE>
+
+<P>Then to refer to the rank of card number 4 I'd say
+
+<P><PRE>carddeck[4].rank
+</PRE>
+
+<P>and that would be an integer.  A <EM>pointer</EM> is a variable
+whose value is the memory address of a record; pointer variables can be used
+to implement dynamic data structures like Logo lists by building explicitly
+the collections of boxes and arrows illustrated in some of the pictures in
+Chapter 3.  But it's hard to build anything in Pascal that's <EM>quite</EM>
+like Logo lists, even using pointers, because what's in each box has to
+belong to some particular predeclared type.
+
+<P>Real Pascal also includes user-defined types.  There is a <CODE>
+type</CODE>
+declaration that goes before the <CODE>var</CODE> declaration in a block:
+
+<P><PRE>type string = packed array [1..10] of char;
+</PRE>
+
+<P>Variable declarations can then use <CODE>string</CODE> as the type of the
+variable being declared.  In fact, standard Pascal <EM>requires</EM> the use
+of named types in certain situations.  For example, in a procedure header
+the formal parameters must be given a named type (either a built-in scalar
+type like <CODE>integer</CODE> or a defined type like <CODE>string</CODE>); since I haven't
+implemented <CODE>type</CODE> my compiler allows
+
+<P><PRE>procedure paul(words:packed array [1..10] of char);
+</PRE>
+
+<P>although standard Pascal doesn't allow such a header.
+
+<P>
+You can also define <EM>subrange</EM> types:
+
+<P><PRE>type dieface = 1..6;
+</PRE>
+
+<P>This type is really an integer, but it's constrained to have only
+values in the given range.  This particular one might be used for a variable
+whose value is to represent the result of rolling a six-sided die.  Finally,
+
+there are <EM>enumerated</EM> types:
+
+<P><PRE>type Beatle = (John, Paul, George, Ringo);
+</PRE>
+
+<P>This type is used for a variable that represents one of a small
+number of possible things.  In reality it's also a kind of integer; the word
+<CODE>John</CODE> represents 0, <CODE>Paul</CODE> is 1, and so on.  In fact, it's only
+during the compilation of the program that Pascal remembers the names of the
+possible values; you can't read or print these variables during the running
+of the program.
+
+<P><H2>Critique of Typed Variables</H2>
+
+<P>Why would anyone want to use a subrange or other restricted type?  If the
+program works using a variable of type <CODE>dieface</CODE>, it would work just as
+well if the variable were of type <CODE>integer</CODE>.  The only difference is
+that using a subrange type is slower because the program has to check (at
+run time) to make sure that any value you try to assign to that variable is
+in the approved range.
+
+<P>According to Pascal enthusiasts, the virtue of restricted types, like the
+virtue of typed variables in the first place, is that their use helps catch
+program bugs.  For example, in the <CODE>cards</CODE> program, procedure <CODE>
+shuffle</CODE> has variables <CODE>i</CODE> and <CODE>j</CODE> that are used to index the arrays
+<CODE>ranks</CODE> and <CODE>suits</CODE>.  How do we know there isn't an error in the
+program so that one of those variables is given a value that isn't a valid
+index for those arrays?  Such an error would be caught when we <EM>use</EM>
+the index variable to try to refer to an array element that doesn't exist,
+but it's easier to debug the program if we get the error message at the
+moment when the variable is assigned the incorrect value.  So I should have
+declared
+
+<P><PRE>var i,j : 0..51;
+</PRE>
+
+<P>instead of using <CODE>integer</CODE>.  (Of course one reason I didn't
+use a subrange type is that I didn't implement them in my compiler!)
+
+<P>The trouble is that strict typing of variables is an unnecessary pain in the
+neck.<SUP>*</SUP> Take this business of array index
+bounds.  Here is a possible piece of Pascal program:
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I know I said I wasn't going to try to convince you which
+language is better, but on this particular point I really think the Pascal
+people don't have a leg to stand on.</SMALL></BLOCKQUOTE></SMALL><P><PRE>i := 0;
+while i &lt;= 51 do
+  begin
+    writeln(ranks[i]:3,suits[i]);
+    i := i+1
+  end
+</PRE>
+
+<P>There's nothing wrong with this.  It will print the value of each
+member of the two arrays, starting from index 0 and continuing through 51.
+However, at the end of the <CODE>while</CODE> statement, the variable <CODE>i</CODE> has
+the value 52.  This is <EM>not</EM> an error; the program does <EM>not</EM> try
+to refer to member 52 of the arrays.  But if we declared <CODE>i</CODE> as a
+subrange type the way we &quot;should,&quot; the program will give an error message
+and die.  This particular example could be rewritten using <CODE>for</CODE> instead
+of <CODE>while</CODE> to avoid the problem, but it turns out that there are many
+algorithms that jump around in an array in which the index variable
+sometimes takes on a value just outside the bounds of the array.  Some sort
+algorithms, for example, are like that.
+
+<P>
+
+<P>Typed variables work against program robustness.  (A <EM>robust</EM> program
+is one that keeps calm in the face of bad data or other user error, rather
+than dying abruptly.)  For example, suppose we want to find the sum of a
+bunch of numbers.  Some human being is going to type these numbers into the
+computer, one at a time.  We don't know in advance how many there are, so we
+let the person type <CODE>done</CODE> when done.  Since the typist is only human,
+rather than a computer, we want to make sure the program doesn't blow up if
+he accidentally types something other than a number or <CODE>done</CODE>.  Here's
+one way to do it in Logo:
+
+<P><PRE>to addnumbers
+print [Enter the numbers, one per line.]
+print [Type the word 'done' when done.]
+print se [The sum is] addnumbers1 0
+end
+
+to addnumbers1 :sum
+localmake &quot;next readnumber
+if emptyp :next [output :sum]
+output addnumbers1 :sum+:next
+end
+
+to readnumber
+localmake &quot;input readlist
+if emptyp :input [output readnumber]
+if equalp :input [done] [output []]
+if numberp first :input [output first :input]
+print [Please type numbers only.]
+output readnumber
+end
+</PRE>
+
+<P>If the user makes a typing mistake, the program says so, ignores
+the bad input, and keeps going.  Now, how shall we write this in Pascal?
+Into what type of variable should we read each number from the keyboard?  If
+we pick <CODE>integer</CODE>, then any entry of a non-number will incite Pascal to
+print an error message and terminate the program.  Instead we can read the
+keyboard entry into an <CODE>array of char</CODE>, one character at a time.  Then
+anything the user types is okay, but we can't do arithmetic on the
+result--we can't add it into the accumulated sum.  We can read it as <CODE>
+char</CODE>s and then write a procedure that knows how to look at a string of
+digits and compute the number that those digits represent.  But this is not
+the sort of thing that we should need to do ourselves in a high-level
+programming language.
+
+<P>Why should a programmer have to decide in advance whether or not the numbers
+that a program will manipulate are integers?  In Logo I can write a general
+numeric procedure like this one:
+
+<P><PRE>to square :x
+output :x * :x
+end
+</PRE>
+
+<P>but in Pascal I need one for each kind of number:
+
+<P><PRE>function RealSquare(x:real): real;
+begin
+  RealSquare := x * x
+end;
+
+function IntSquare (x:integer): integer;
+begin
+  IntSquare := x * x
+end;
+</PRE>
+
+<P>Why pick on the distinction between integer and non-integer values?
+Why not positive and negative values, or odd and even values?  The historical
+answer is that computer hardware uses two different representations for
+integer and real numbers, but so what?  That doesn't mean the distinction
+is relevant to the particular program I'm writing.
+
+<P>The language ML, which I mentioned earlier as an example of a pure functional
+language, tries to provide the best of both worlds on this issue.  It does
+require that variables have types, as in Pascal, to help catch programming
+errors.  But two features make ML's type system more usable than Pascal's.
+One is the provision of <EM>union types.</EM>  It's possible to say that
+a particular variable must contain either a number or the word <CODE>done</CODE>,
+for example.  (Pascal has something like this, called <EM>variants,</EM> but
+they're less flexible.)  Second, the ML compiler uses <EM>type inference,</EM>
+a technique by which the compiler can often figure out the appropriate type
+for a variable without an explicit declaration.
+
+<P>
+
+<P>
+<H2>Procedures and Functions</H2>
+
+<P>
+
+<P>In Logo a distinction is made between those procedures that output a value
+(operations) and those that don't (commands).  Pascal has the same
+categories, but they're called <EM>functions</EM> and <EM>
+procedures</EM> respectively.
+
+<P>A function is a block just like a procedure block except for the minor
+changes needed to accommodate the fact that the function produces a value.
+First of all, the function header has to say what the <EM>type</EM> of the
+result will be:
+
+<P><PRE>function whatever (<EM>arguments</EM>) : integer;
+</PRE>
+
+<P>The function's type must be a scalar, not an aggregate type.  This
+restriction is in the standard only to make life easier for the compiler,
+and some versions of Pascal do allow array-valued (or record-valued,
+etc.) functions.
+
+<P>The other difference is that in the statement part of a function block we
+have to tell Pascal what the value will be.  That is, we need something
+equivalent to <CODE>output</CODE> in Logo.  Pascal's convention is that somewhere
+in the block an assignment statement must be executed that has the
+name of the function as its left hand side.  That is, the function name is
+used in an assignment statement as though it were a variable name.
+(However, the name must <EM>not</EM> be declared as a variable.)  This
+notation may be a little confusing, because if the same name appears on the
+<EM>right</EM> side of the assignment statement, it signals a recursive
+invocation of the function.  Perhaps an example will make this clear.
+
+<P>Program <CODE>multi</CODE> is a Pascal version of the memoized multinomial function
+from Chapter 3.  In the Logo version, <EM>t</EM>(<EM>n</EM>,<EM>k</EM>) was memoized using the
+property name <EM>k</EM> on the property list named <EM>n</EM>.  In the Pascal version,
+since we have multi-dimensional arrays, it is straightforward to use a
+two-dimensional array and store <EM>t</EM>(<EM>n</EM>,<EM>k</EM>) in <CODE>memo[n,k]</CODE>.
+
+<P><PRE>program multi;
+ {Multinomial expansion problem}
+
+var memo: array [0..4, 0..7] of integer;
+   i,j:  integer;
+
+function t(n,k:integer) : integer;
+
+  function realt(n,k:integer) : integer;
+   {without memoization}
+
+    begin {realt}
+      if k = 0 then
+        realt := 1
+      else
+        if n = 0 then
+          realt := 0
+        else
+          realt := t(n,k-1)+t(n-1,k)
+    end; {realt}
+</PRE>
+<PRE>  begin {t}
+    if memo[n,k] &lt; 0 then
+      memo[n,k] := realt(n,k);
+    t := memo[n,k]
+  end; {t}
+
+begin {main program}
+  {initialization}
+  for i := 0 to 4 do
+    for j := 0 to 7 do
+      memo[i,j] := -1;
+
+  {How many terms in (a+b+c+d)7?}
+  writeln(t(4,7));
+end.
+</PRE>
+
+<P>The assignment statements like
+
+<P><PRE>realt := 0
+</PRE>
+
+<P>are the ones that control the values returned by the functions.
+These assignment statements are not exactly like <CODE>output</CODE> in Logo
+because they do not cause the function to return immediately.  They act just
+like ordinary assignments, as if there were actually a variable named <CODE>
+realt</CODE> or <CODE>t</CODE>; when the statement part of the function is finished,
+whatever value was most recently assigned to the function name is the one
+that's used as the return value.  (In fact the functions in program <CODE>
+multi</CODE> are written so that only one such assignment is carried out, and
+there are no more statements to execute after that assignment.  That's a
+pretty common programming style; it's rare to change the assignment to the
+function name once it's been made.)
+
+<P>Apart from arbitrary syntactic details, Pascal's design with respect to
+procedures and functions is similar to Logo's, so I can't ask why the two
+languages made different choices.  It's probably just as well, since you
+shouldn't get the impression that Pascal is the exact opposite of Logo in
+every way.  Instead we could compare these two languages with Lisp, in
+which there are only operations, or most versions of BASIC, in which
+there are only commands.  But I don't have the space to teach you enough
+about those languages to make such a comparison meaningful.
+
+<P><H2>Call by Value and Call by Reference</H2>
+
+<P>Consider this Logo procedure:
+
+<P><PRE>to increment :var
+make :var (thing :var)+1
+end
+
+? <U>make &quot;baz 23</U>
+? <U>increment &quot;baz</U>
+? <U>print :baz</U>
+24
+</PRE>
+
+<P>The input to <CODE>increment</CODE> is the <EM>name</EM> of a variable
+that you want to increment.  A similar technique is used, for example, in
+the <CODE>push</CODE> and <CODE>pop</CODE> library procedures, which take the name of a stack
+variable as input.  The reason this technique is necessary is that we want
+the procedure to be able to modify the variable--to assign it a new value.
+
+<P>The same technique won't work in Pascal.  For one thing, the association of
+a name with a variable only exists at compile time.  Once the compiled
+program is running, the variables have no names, only addresses in computer
+memory.  Also, <CODE>increment</CODE> takes advantage of dynamic scope because the
+variable it wants to modify isn't its own, but rather a variable accessible
+to the calling procedure.
+
+<P>Here's how you do it in Pascal:
+
+<P><PRE>procedure increment(var v:integer);
+  begin
+    v := v+1;
+  end;
+</PRE>
+
+<P>What's new here is the reserved word <CODE>var</CODE> in the argument
+list.  This word indicates that <CODE>v</CODE> is a <EM>variable parameter;</EM>
+ordinary ones are called <EM>value parameters.</EM>  <CODE>Increment</CODE> would be
+used in a program like this:
+
+<P><PRE>program whatzit;
+
+var gub:integer;
+  begin
+  ...
+  gub := 5;
+  increment(gub);
+  ...
+  end.
+</PRE>
+
+<P>Suppose <CODE>increment</CODE> had been written without the word <CODE>var</CODE> in its
+header.  In that case, when the statement <CODE>increment(gub)</CODE> was executed
+here's what would happen.  First, the actual argument to <CODE>increment</CODE>
+(namely <CODE>gub</CODE>) would be evaluated.  The value would be 5, since that's
+the value of the variable <CODE>gub</CODE>.  Then that value would be assigned to
+the local variable <CODE>v</CODE> in <CODE>increment</CODE>.  Then the instruction part of
+<CODE>increment</CODE> would be run.  The assignment statement there would change
+the value of <CODE>v</CODE> from 5 to 6.  Then <CODE>increment</CODE> would be finished,
+and its local variable <CODE>v</CODE> would disappear.  All of this would have no
+effect on the variable <CODE>gub</CODE>.  This ordinary interpretation of <CODE>v</CODE>
+is called <EM>call by value</EM> because what gets associated with
+the name <CODE>v</CODE> is the <EM>value</EM> of the actual argument, 5 in this
+example, regardless of how that 5 was derived.  For example, the instruction
+in the main program could have been
+
+<P><PRE>increment(2+3);
+</PRE>
+
+<P>and it wouldn't have mattered.
+
+<P>
+Making <CODE>v</CODE> a variable parameter instead of a value parameter changes the
+operation of the program substantially.  When <CODE>increment</CODE> is invoked,
+the actual argument <EM>must</EM> be a variable name, not an arbitrary
+expression.  Pascal does not find the value of the actual argument and pass
+that value along to <CODE>increment</CODE>; instead, the formal parameter
+<CODE>v</CODE> becomes <EM>another name for the same variable</EM> named in the
+actual argument.  In this example, <CODE>v</CODE> becomes another name for <CODE>
+gub</CODE>.  So the assignment statement
+
+<P><PRE>v := v+1
+</PRE>
+
+<P>isn't really about the local variable <CODE>v</CODE> at all; it's another
+way to say
+
+<P><PRE>gub := gub+1
+</PRE>
+
+<P>and so it <EM>does</EM> affect the variable in the calling block.
+This use of variable parameters is called <EM>call by reference</EM>
+because the formal parameter (<CODE>v</CODE>) <EM>refers</EM> to another variable.
+
+<P>One way to think about call by reference is that it provides, in effect, a
+sort of limited dynamic scope.  It's a way for a superprocedure to
+allow a subprocedure access to one selected variable from the
+superprocedure's lexical environment.  Because this permission is
+given to the subprocedure explicitly, call by reference doesn't give rise to
+the possible naming bugs that argue against dynamic scope in general.  Also,
+dynamic scope as used in Logo has the problem that you have to be careful
+not to allow a formal parameter name to be the same as the name of a
+variable you want to use from the superprocedure's environment.  For example,
+in the Logo version of <CODE>increment</CODE>, what if you wanted to use <CODE>
+increment</CODE> to increment a variable named <CODE>var</CODE>?  If you try to say
+
+<P><PRE>increment &quot;var
+</PRE>
+
+<P>it won't work, because <CODE>increment</CODE> will end up trying to
+increment its own formal parameter.  (This is why the inputs to some of the
+Berkeley Logo library procedures have such long, obscure names.)  But the
+Pascal <CODE>increment</CODE> would have no trouble with a variable named <CODE>v</CODE>
+in the calling procedure.
+
+<P>On the other hand, call by reference is a little mysterious.  If you've
+understood all of the above, and you know exactly when you should say <CODE>var</CODE>
+in a formal parameter list and when you shouldn't, you're doing better than
+most beginning Pascal students.  In Logo there is only one rule about
+passing inputs to procedures; to make something like <CODE>increment</CODE> work,
+you <EM>explicitly</EM> pass the <EM>name</EM> of a variable as input.
+
+<P>Call by reference is generally used when a subprocedure needs to change the
+value of a variable in a superprocedure.  But there is also another
+situation in which some people use it.  Suppose you want to write a
+procedure that takes a large array as an argument.  If you make the array a
+value parameter, Pascal will allocate space for the array in the
+subprocedure and will copy each member of the array from the
+superprocedure's variable into the subprocedure's variable as the first step
+in invoking the subprocedure.  This time-consuming array copying can be
+avoided by declaring the array as a variable parameter, thereby giving the
+subprocedure direct access to the superprocedure's array.  Pascal enthusiasts
+consider this use of call by reference cheating, though, because it creates
+the possibility that the subprocedure could accidentally change something in
+the superprocedure's array.  Call by value is safer, from this point of view.
+
+<P><H2>Parameters in Logo: Call by Binding</H2>
+
+
+<P>Does Logo use call by value or call by reference for passing arguments to
+procedures?  The official textbook answer is &quot;call by value,&quot; but I find
+that misleading, because those two categories really make sense
+only in a language with a particular idea of what a variable is.  A
+Logo variable is different from a Pascal variable in a
+subtle way.  If you can understand this difference between the two
+languages, you'll have learned something very valuable.
+
+<P>In Logo, the world is full of data (words, lists, and arrays).
+These data may or may not be associated with variables.  For example, when
+you enter an instruction like
+
+<P><PRE>print butlast butfirst [Yes, this is a list evidently.]
+</PRE>
+
+<P>three different lists are involved: the one you typed explicitly
+in the instruction and two smaller lists.  None of these three lists is
+the value of any variable.  A <EM>variable</EM> is an
+association (called a <EM>binding</EM>) between a name and a datum.  If
+you enter the instruction
+
+<P><PRE>make &quot;langs [Logo Lisp APL]
+</PRE>
+
+<P>we say that the name <CODE>langs</CODE> <EM>is bound to</EM> the indicated
+list.  If you then do
+
+<P><PRE>make &quot;mylangs :langs
+</PRE>
+
+<P>we say that the name <CODE>mylangs</CODE> is bound to the <EM>same</EM>
+datum as <CODE>langs</CODE>.  We're dealing with one list that has two names.
+
+<P>
+<CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch4/bindings.gif" ALT="figure: bindings"></CENTER>
+
+<P>
+
+<P>In Pascal a variable is not a binding in this sense.  A Pascal variable <EM>
+is</EM> the datum it contains.  If you have two array variables
+
+<P><PRE>var this,that: array [1..10] of integer;
+</PRE>
+
+<P>and you do an assignment like
+
+<P><PRE>this := that;
+</PRE>
+
+<P>then there are two <EM>separate</EM> arrays that happen to have
+equal values stored in them.  The same thing is true, although it's less
+obviously meaningful, about scalars.  If integer variables <CODE>i</CODE> and <CODE>
+j</CODE> both have the value 10, then there are <EM>two different integers</EM>
+that happen to have the same value.  That's not the way a mathematician uses
+the word &quot;integer&quot;; to a mathematician, there is only one 10.  But to a
+Pascal programmer, an integer isn't something like 10; an integer is a box,
+and in the box there might be something like 10.
+
+<P>In Logo, a variable assignment (that is, an invocation of <CODE>make</CODE>)
+changes the <EM>binding</EM> of the given variable name so that that name is
+now associated with a different datum.  In Pascal, a variable assignment
+changes the value of <EM>the datum</EM> that is unalterably associated with
+the named variable.
+
+<P>The official textbook story is this:  A Logo variable is a box, just as
+a Pascal variable is a box.  The difference is that what goes in the box,
+in Logo, is a <EM>pointer</EM> to the datum of interest.  (A binding,
+officially, is the connection between the variable's name and its box.
+So there are two levels of indirection in finding what we ordinarily
+think of as the value of a variable:  First the binding gets us from the
+name to a box--a location in the computer's memory--and then in that box we
+find a pointer, which gets us to <EM>another</EM> location in memory, which
+holds the actual information we want.  In this model, call by reference
+can easily be described by saying that two different names are bound to
+the same box.)  From this point of view, it makes
+sense to say that Logo uses call by value, because the &quot;value&quot; in question
+is the pointer, which is indeed copied when a procedure is called.
+
+<P>But ordinarily we don't think of the value of a Logo variable as being a
+pointer; we think that the value of the variable is a word, a list, or an
+array.  From that point of view, parameter passing in Logo acts like call by
+reference in some ways but like call by value in other ways.  For example,
+call by value makes a copy of the datum being passed.  Logo does not copy
+the actual datum, so in that respect it's like call by reference.  On the
+other hand, assigning a new value to a Logo formal parameter does not change
+the value of any variables in the calling procedure; in that way, Logo works
+like call by value.  On the third hand, if the datum to which the formal
+parameter is bound is a <EM>mutable</EM> data structure, such as an array, a
+Logo subprocedure <EM>can</EM> change the value of a variable in the calling
+procedure, not by assigning a new value to the formal parameter name
+(changing the binding), but by invoking <CODE>setitem</CODE> on the shared datum
+(altering the bound datum itself).
+
+<P>The following chart is a graphic representation of the ideas in the
+last paragraph.  The three columns represent Pascal call by value, Pascal
+call by reference, and Logo.  In each case the main program has two arrays
+named <CODE>actual</CODE> and <CODE>other</CODE>; it then invokes a procedure <CODE>proc</CODE>
+using <CODE>actual</CODE> as the actual argument providing the value for <CODE>
+proc</CODE>'s formal parameter <CODE>formal</CODE>.  Here are the programs:
+
+<P><TABLE>
+<TR><TH>Pascal call by value<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH>Pascal call by reference
+<TR><TD>&nbsp;
+<TR><TD valign="top"><PRE>program pgm;
+type pair = array [0..1]
+              of integer;
+var actual,other: pair;
+ 
+procedure proc(formal:pair);
+  begin
+    <EM>body</EM>
+  end
+ 
+begin
+  actual[0] := 3;
+  actual[1] := 4;
+  other[0] := 5;
+  other[1] := 6;
+  proc(actual)
+end.
+</PRE><TD><TD valign="top"><PRE>program pgm;
+type pair = array [0..1]
+              of integer;
+var actual,other: pair;
+ 
+procedure proc(var formal:pair);
+  begin
+    <EM>body</EM>
+  end
+ 
+begin
+  actual[0] := 3;
+  actual[1] := 4;
+  other[0] := 5;
+  other[1] := 6;
+  proc(actual)
+end.
+</PRE></TABLE>
+
+<P><TABLE><TR><TH>Logo
+<TR><TD>&nbsp;
+<TR><TD><PRE>make &quot;actual {3 4}@0
+make &quot;other {5 6}@0
+proc :actual
+
+to proc :formal
+<EM>body</EM>
+end
+</PRE></TABLE>
+
+<P>
+<CENTER><IMG SRC="callby.gif" ALT="figure: callby"></CENTER>
+
+<P>The first row of the figure shows the situation when <CODE>proc</CODE> is
+entered, before its body is executed.  The second row shows what happens if
+<CODE>proc</CODE> contains an assignment of <CODE>other</CODE> to <CODE>formal</CODE>, i.e.,
+
+<P><PRE>formal := other
+</PRE>
+
+<P>in either Pascal version or
+
+<P><PRE>make &quot;formal :other
+</PRE>
+
+<P>in the Logo version.  The third row shows what happens if, instead,
+<CODE>proc</CODE> contains an assignment of just one member of the array, i.e.,
+
+<P><PRE>formal[1] := other[1]
+</PRE>
+
+<P>in either Pascal version or
+
+<P><PRE>setitem 1 :formal (item 1 :other)
+</PRE>
+
+<P>in the Logo version.  Your goal is to see what happens to <CODE>
+actual</CODE> in each case when <CODE>proc</CODE> is finished.
+
+<P>Our final Pascal program example, showing the use of call by reference,
+is a version of the partition sort from Chapter 3 that uses the
+technique of exchanging two array members when appropriate to divide the
+array into two partitions &quot;in place&quot; (without requiring the allocation of
+extra arrays to hold the partitions).  This program is adapted from Jon
+Bentley's version in <EM>Programming Pearls</EM> (Addison-Wesley, 1986).
+It's much closer in style to the real quicksort than my list-based version.
+
+<P>In the partition sort program of Chapter 3, I had to put a lot of effort
+into preventing a situation in which every member of the list being sorted
+ended up on the same side of the partition value.  The quicksort solution
+starts by choosing some member of the array as the partition value and
+excluding that member from the partitioning process.  As a result, the worst
+possible case is that the <EM>n</EM> members of the array are divided into the
+partitioning member, a partition of size <EM>n</EM>&minus;1, and a partition of size zero.
+If we're unlucky enough to hit that case every time, we'll have an O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>)
+running time, but not an infinite loop.
+
+<P>How do we choose the partitioning member?  It turns out that just picking
+one at random is surprisingly successful; sometimes you get a very bad
+choice, but usually not.  But in this program I'm using a popular method
+that tends to work a little better (that is, to give more balanced partition
+sizes):  The program finds the first member of the unsorted array, the last
+member, and the one halfway in between, and chooses the <EM>median</EM> of
+these three values--the one that's neither the largest nor the smallest.
+
+<P>Once the partitioning member has been chosen, the goal is to rearrange the
+array members into an order like this:
+
+<P><CENTER><IMG SRC="partition.gif" ALT="figure: partition"></CENTER>
+
+<P>If other members of the array have the same value as the one we've
+chosen as the partitioning member, it doesn't really matter in which partition
+they end up.  What does matter is that before doing the partitioning, we
+don't know where in the array the partitioning member will belong, so how can
+we keep from bumping into it as we rearrange the other members?  The
+solution is that the partitioning member is temporarily kept in the leftmost
+possible position; the other members are partitioned, and then the
+partitioning member is swapped back into its proper position.
+
+<P>The partition works using two <EM>index</EM> variables <CODE>i</CODE> and <CODE>j</CODE>,
+which start at the leftmost and rightmost ends of the part of the array that
+we're sorting.  (Remember that this algorithm uses recursive calls to sort
+each partition, so that might not be all 100 members of the full array.)  We
+move <CODE>i</CODE> toward the right, and <CODE>j</CODE> toward the left, until we find
+two members out of place.  That is, we look for a situation in which <CODE>
+data[i]</CODE> is greater than the partitioning member and <CODE>data[j]</CODE> is
+smaller than the partitioning member.  We then interchange those two members
+of the array and continue until <CODE>i</CODE> and <CODE>j</CODE> meet in the middle.
+Procedure <CODE>exch</CODE> has two variable parameters and exchanges their values.
+
+<P>Program <CODE>psort</CODE> illustrates a fairly common but not obvious technique:
+the array <CODE>data</CODE> contains 100 &quot;real&quot; members in positions 0 to 99 but
+also has a &quot;fence&quot; or &quot;sentinel&quot; member (with index 100)
+just so that the program doesn't have to make a special case check for the
+index variable <CODE>i</CODE> reaching the end of the array.  The
+value of <CODE>data[100]</CODE> is guaranteed to be greater than all the numbers that
+are actually being sorted.  Having this extra member in the array avoids the
+need for an extra comparison of the form
+
+<P><PRE>if i &gt; upper then ...
+</PRE>
+
+<P>and thereby helps make the program a little faster.
+
+<P><PRE>program psort;
+ {partition sort demo}
+
+var data: array [0..100] of integer;
+    i: integer;
+
+procedure showdata;
+ {print the array}
+
+  var i: integer;
+
+  begin {showdata}
+    for i := 0 to 99 do
+      begin
+        if i mod 20 = 0 then writeln;
+        write(data[i]:3)
+      end;
+    writeln;
+    writeln
+  end; {showdata}
+
+function median(lower,upper:integer):integer;
+  {find the median of three values from the data array}
+  var mid: integer;
+
+  begin
+    mid := (lower+upper) div 2;
+    if (data[lower] &lt;= data[mid]) and (data[mid] &lt;= data[upper]) then
+      median := mid
+    else if (data[lower] &gt;= data[mid]) and
+            (data[mid] &gt;= data[upper]) then
+      median := mid
+    else if (data[mid] &lt;= data[lower]) and
+            (data[lower] &lt;= data[upper]) then
+      median := lower
+    else if (data[mid] &gt;= data[lower]) and
+            (data[lower] &gt;= data[upper]) then
+      median := lower
+    else median := upper
+  end;
+
+procedure sort(lower,upper:integer);
+ {sort part of the array}
+
+  var key,i,j:integer;
+
+  procedure exch(var a,b:integer);
+   {exchange two integers}
+
+    var temp:integer;
+
+    begin {exch}
+      temp := a;
+      a := b;
+      b := temp
+    end; {exch}
+
+  begin {sort}
+    if upper &gt; lower then
+      begin
+        exch (data[lower],data[median(lower,upper)]);
+        key := data[lower];
+        i := lower;
+        j := upper+1;
+        repeat
+          i := i+1
+        until data[i] &gt;= key;
+        repeat
+          j := j-1
+        until data[j] &lt;= key;
+        while (i &lt;= j) do
+          begin
+            exch(data[i], data[j]);
+            repeat
+              i := i+1
+            until data[i] &gt;= key;
+            repeat
+              j := j-1
+            until data[j] &lt;= key
+          end;
+        exch(data[lower], data[j]);
+        sort(lower,j-1);
+        sort(i,upper)
+      end
+  end; {sort}
+
+begin {main program}
+  data[100] := 200;
+  for i := 0 to 99 do
+    data[i] := random(100);
+  writeln('Data before sorting:');
+  showdata;
+
+  sort(0,99);
+  writeln('Data after sorting:');
+  showdata
+end.
+</PRE>
+
+<P>
+
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch3/v3ch3.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch5/v3ch5.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch4/math1.gif b/js/games/nluqo.github.io/~bh/v3ch4/math1.gif
new file mode 100644
index 0000000..1128c3a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch4/math1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch4/partition.gif b/js/games/nluqo.github.io/~bh/v3ch4/partition.gif
new file mode 100644
index 0000000..7cf3798
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch4/partition.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch4/pascal.lg b/js/games/nluqo.github.io/~bh/v3ch4/pascal.lg
new file mode 100644
index 0000000..7ad4020
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch4/pascal.lg
@@ -0,0 +1,1153 @@
+to compile :file
+if namep "peekchar [ern "peekchar]
+if namep "peektoken [ern "peektoken]
+if not namep "idlist [opsetup]
+if not emptyp :file [openread :file]
+setread :file
+ignore error
+catch "error [program]
+localmake "error error
+if not emptyp :error [print first butfirst :error]
+setread []
+if not emptyp :file [close :file]
+end
+
+;; Global setup
+
+to opsetup
+make "numregs 32
+make "memsize 3000
+pprop "|=| "binary [eql 2 [boolean []] 1]
+pprop "|<>| "binary [neq 2 [boolean []] 1]
+pprop "|<| "binary [less 2 [boolean []] 1]
+pprop "|>| "binary [gtr 2 [boolean []] 1]
+pprop "|<=| "binary [leq 2 [boolean []] 1]
+pprop "|>=| "binary [geq 2 [boolean []] 1]
+pprop "|+| "binary [add 2 [[] []] 2]
+pprop "|-| "binary [sub 2 [[] []] 2]
+pprop "or "binary [lor 2 [boolean boolean] 2]
+pprop "|*| "binary [mul 2 [[] []] 3]
+pprop "|/| "binary [quo 2 [real []] 3]
+pprop "div "binary [div 2 [integer integer] 3]
+pprop "mod "binary [rem 2 [integer integer] 3]
+pprop "and "binary [land 2 [boolean boolean] 3]
+pprop "|+| "unary [plus 1 [[] []] 4]
+pprop "|-| "unary [minus 1 [[] []] 4]
+pprop "not "unary [lnot 1 [boolean boolean] 4]
+make "idlist `[[trunc function int [1 ,[framesize.fun+1]]]
+               [round function round [1 ,[framesize.fun+1]]]
+               [random function random [1 ,[framesize.fun+1]]]]
+make "int [integer real]
+make "round [integer real]
+make "random [integer integer]
+end
+
+;; Block structure
+
+to program
+mustbe "program
+localmake "progname token
+ifbe "|(| [ignore commalist [id]  mustbe "|)|]
+mustbe "|;|
+localmake "lexical.depth 0
+localmake "namesused []
+localmake "needint "false
+localmake "needround "false
+localmake "needrandom "false
+localmake "idlist :idlist
+localmake "frame [0 0]
+localmake "id (list :progname "program (newlname :progname) :frame)
+push "idlist :id
+localmake "codeinto word "% :progname
+make :codeinto []
+localmake "framesize framesize.proc
+program1
+mustbe ".
+code [exit]
+foreach [int round random] "plibrary
+make :codeinto reverse thing :codeinto
+end
+
+to program1
+localmake "regsused (array :numregs 0)
+for [i reg.firstfree :numregs-1] [setitem :i :regsused "false]
+ifbe "var [varpart]
+.setfirst butfirst :frame :framesize
+if :lexical.depth = 0 [code (list "add reg.globalptr reg.zero reg.zero)
+                       code (list "add reg.frameptr reg.zero reg.zero)
+                       code (list "addi reg.stackptr reg.zero :framesize)]
+localmake "bodytag gensym
+code (list "jump (word "" :bodytag))
+tryprocpart
+code :bodytag
+mustbe "begin
+blockbody "end
+end
+
+to plibrary :func
+if not thing (word "need :func) [stop]
+code :func
+code (list "rload reg.firstfree (memaddr framesize.fun reg.frameptr))
+code (list (word "s :func) reg.retval reg.firstfree)
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+end
+
+;; Variable declarations
+
+to varpart
+local [token namelist type]
+make "token token
+make "peektoken :token
+if reservedp :token [stop]
+vargroup
+foreach :namelist [newvar ? :type]
+mustbe "|;|
+varpart
+end
+
+to vargroup
+make "namelist commalist [id]
+mustbe ":
+ifbe "packed []
+make "type token
+ifelse equalp :type "array [make "type arraytype] [typecheck :type]
+end
+
+to id
+localmake "token token
+if letterp ascii first :token [output :token]
+make "peektoken :token
+output []
+end
+
+to arraytype
+local [ranges type]
+mustbe "|[|
+make "ranges commalist [range]
+mustbe "|]|
+mustbe "of
+make "type token
+typecheck :type
+output list :type :ranges
+end
+
+to range
+local [first last]
+make "first range1
+mustbe "..
+make "last range1
+if :first > :last ~  
+   [(throw "error (sentence [array bounds not increasing:]
+                            :first ".. :last))]
+output list :first (1 + :last - :first)
+end
+
+to range1
+localmake "bound token
+if equalp first :bound "' [output ascii first butfirst :bound]
+if equalp :bound "|-| [make "bound minus token]
+if equalp :bound int :bound [output :bound]
+(throw "error sentence [array bound not ordinal:] :bound)
+end
+
+to typecheck :type
+if memberp :type [real integer char boolean] [stop]
+(throw "error sentence [undefined type] :type)
+end
+
+to newvar :pname :type
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+push "idlist (list :pname :type (list :lexical.depth :framesize) "false)
+make "framesize :framesize + ifelse listp :type [arraysize :type] [1]
+end
+
+to arraysize :type
+output reduce "product map [last ?] last :type
+end
+
+;; Procedure and function declarations
+
+to tryprocpart
+ifbeelse "procedure ~
+         [procedure tryprocpart] ~
+         [ifbe "function [function tryprocpart]]
+end
+
+to procedure
+proc1 "procedure framesize.proc
+end
+
+to function
+proc1 "function framesize.fun
+end
+
+to proc1 :proctype :framesize
+localmake "procname token
+localmake "lexical.depth :lexical.depth+1
+localmake "frame (list :lexical.depth 0)
+push "idlist (list :procname :proctype (newlname :procname) :frame)
+localmake "idlist :idlist
+make lname :procname []
+ifbe "|(| [arglist]
+if equalp :proctype "function ~
+   [mustbe ":
+    localmake "type token
+    typecheck :type
+    make lname :procname fput :type thing lname :procname]
+mustbe "|;|
+code lname :procname
+code (list "store reg.retaddr (memaddr frame.retaddr reg.frameptr))
+program1
+if equalp :proctype "function ~
+   [code (list "rload reg.retval (memaddr frame.retval reg.frameptr))]
+code (list "rload reg.retaddr (memaddr frame.retaddr reg.frameptr))
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+mustbe "|;|
+end
+
+to arglist
+local [token namelist type varflag]
+make "varflag "false
+ifbe "var [make "varflag "true]
+vargroup
+foreach :namelist [newarg ? :type :varflag]
+ifbeelse "|;| [arglist] [mustbe "|)|]
+end
+
+to newarg :pname :type :varflag
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+localmake "pointer (list :lexical.depth :framesize)
+push "idlist (list :pname :type :pointer :varflag)
+make "framesize :framesize + ifelse (and listp :type not :varflag) ~
+                                    [arraysize :type] [1]
+queue lname :procname ifelse :varflag [list "var :type] [:type]
+end
+
+;; Statement part
+
+to blockbody :endword
+statement
+ifbeelse "|;| [blockbody :endword] [mustbe :endword]
+end
+
+to statement
+local [token type]
+ifbe "begin [compound stop]
+ifbe "for [pfor stop]
+ifbe "if [pif stop]
+ifbe "while [pwhile stop]
+ifbe "repeat [prepeat stop]
+ifbe "write [pwrite stop]
+ifbe "writeln [pwriteln stop]
+make "token token
+make "peektoken :token
+if memberp :token [|;| end until] [stop]
+make "type gettype :token
+if emptyp :type [(throw "error sentence :token [can't begin statement])]
+if equalp :type "procedure [pproccall stop]
+if equalp :type "function [pfunset stop]
+passign
+end
+
+;; Compound statement
+
+to compound
+blockbody "end
+end
+
+;; Structured statements
+
+to pif
+local [cond elsetag endtag]
+make "cond pboolean pexpr
+make "elsetag gensym
+make "endtag gensym
+mustbe "then
+code (list "jumpf :cond (word "" :elsetag))
+regfree :cond
+statement
+code (list "jump (word "" :endtag))
+code :elsetag
+ifbe "else [statement]
+code :endtag
+end
+
+to prepeat
+local [cond looptag]
+make "looptag gensym
+code :looptag
+blockbody "until
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :looptag))
+regfree :cond
+end
+
+to pfor
+local [var init step final looptag endtag testreg]
+make "var token
+mustbe "|:=|
+make "init pinteger pexpr
+make "step 1
+ifbeelse "downto [make "step -1] [mustbe "to]
+make "final pinteger pexpr
+mustbe "do
+make "looptag gensym
+make "endtag gensym
+code :looptag
+localmake "id getid :var
+codestore :init (id.pointer :id) (id.varp :id) 0
+make "testreg newregister
+code (list (ifelse :step<0 ["less] ["gtr]) :testreg :init :final)
+code (list "jumpt :testreg (word "" :endtag))
+regfree :testreg
+statement
+code (list "addi :init :init :step)
+code (list "jump (word "" :looptag))
+code :endtag
+regfree :init
+regfree :final
+end
+
+to pwhile
+local [cond looptag endtag]
+make "looptag gensym
+make "endtag gensym
+code :looptag
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :endtag))
+regfree :cond
+mustbe "do
+statement
+code (list "jump (word "" :looptag))
+code :endtag
+end
+
+;; Simple statements: procedure call
+
+to pproccall
+localmake "pname token
+localmake "id getid :pname
+localmake "lname id.lname :id
+localmake "vartypes thing :lname
+pproccall1 framesize.proc
+end
+
+to pproccall1 :offset
+code (list "store reg.newfp (memaddr frame.save.newfp reg.stackptr))
+code (list "add reg.newfp reg.stackptr reg.zero)
+code (list "addi reg.stackptr reg.stackptr (last id.frame :id))
+code (list "store reg.frameptr (memaddr frame.prevframe reg.newfp))
+localmake "newdepth first id.frame :id
+ifelse :newdepth > :lexical.depth ~
+       [code (list "store reg.frameptr
+                   (memaddr frame.outerframe reg.newfp))] ~
+       [localmake "tempreg newregister
+        code (list "rload :tempreg (memaddr frame.outerframe reg.frameptr))
+        repeat (:lexical.depth - :newdepth)
+               [code (list "rload :tempreg 
+                           (memaddr frame.outerframe :tempreg))]
+        code (list "store :tempreg (memaddr frame.outerframe reg.newfp))
+        regfree :tempreg]
+if not emptyp :vartypes [mustbe "|(|  procargs :vartypes :offset]
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "store :i (memaddr frame.regsave+:i reg.frameptr))]]
+code (list "add reg.frameptr reg.newfp reg.zero)
+code (list "rload reg.newfp (memaddr frame.save.newfp reg.frameptr))
+code (list "jal reg.retaddr (word "" :lname))
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "rload :i (memaddr frame.regsave+:i reg.frameptr))]]
+end
+
+to procargs :types :offset
+if emptyp :types [mustbe "|)|  stop]
+localmake "next procarg first :types :offset
+if not emptyp butfirst :types [mustbe ",]
+procargs butfirst :types :offset+:next
+end
+
+to procarg :type :offset
+if equalp first :type "var [output procvararg last :type]
+if listp :type [output procarrayarg :type]
+localmake "result check.type :type pexpr
+code (list "store :result (memaddr :offset reg.newfp))
+regfree :result
+output 1
+end
+
+to procvararg :ftype
+local [pname id type index]
+make "pname token
+make "id getid :pname
+make "type id.type :id
+ifelse wordp :ftype ~
+       [setindex "true] ~
+       [make "index 0]
+if not equalp :type :ftype ~
+   [(throw "error sentence :pname [arg wrong type])]
+localmake "target memsetup (id.pointer :id) (id.varp :id) :index
+localmake "tempreg newregister
+code (list "addi :tempreg (last :target) (first :target))
+code (list "store :tempreg (memaddr :offset reg.newfp))
+regfree last :target
+regfree :tempreg
+output 1
+end
+
+to procarrayarg :type
+localmake "pname token
+localmake "id getid :pname
+if not equalp :type (id.type :id) ~
+   [(throw "error (sentence "array :pname [wrong type for arg]))]
+localmake "size arraysize :type
+localmake "rtarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "pointreg newregister
+code (list "addi :pointreg reg.newfp :offset)
+localmake "ltarget (list 0 :pointreg)
+copyarray
+output :size
+end
+
+;; Simple statements: write and writeln
+
+to pwrite
+mustbe "|(|
+pwrite1
+end
+
+to pwrite1
+pwrite2
+ifbe "|)| [stop]
+ifbeelse ", [pwrite1] [(throw "error [missing comma])]
+end
+
+to pwrite2
+localmake "result pwrite3
+ifbe ": [.setfirst (butfirst :result) token]
+code :result
+if not equalp first :result "putstr [regfree last :result]
+end
+
+to pwrite3
+localmake "token token
+if equalp first :token "' ~
+   [output (list "putstr 1 (list butlast butfirst :token))]
+make "peektoken :token
+localmake "result pexpr
+if equalp first :result "char [output (list "putch 1 pchar :result)]
+if equalp first :result "boolean [output (list "puttf 1 pboolean :result)]
+if equalp first :result "integer [output (list "putint 10 pinteger :result)]
+output (list "putreal 20 preal :result)
+end
+
+to pwriteln
+ifbe "|(| [pwrite1]
+code [newline]
+end
+
+;; Simple statements: assignment statement (including function value)
+
+to passign
+local [name id type index value pointer target]
+make "name token
+make "index []
+ifbe "|[| [make "index commalist [pexpr] mustbe "|]|]
+mustbe "|:=|
+make "id getid :name
+make "pointer id.pointer :id
+make "type id.type :id
+passign1
+end
+
+to pfunset
+local [name id type index value pointer target]
+make "name token
+make "index []
+if not equalp :name :procname ~
+   [(throw "error sentence [assign to wrong function] :name)]
+mustbe "|:=|
+make "pointer (list :lexical.depth frame.retval)
+make "type first thing lname :name
+make "id (list :name :type :pointer "false)
+passign1
+end
+
+to passign1
+if and (listp :type) (emptyp :index) [parrayassign :id  stop]
+setindex "false
+make "value check.type :type pexpr
+codestore :value (id.pointer :id) (id.varp :id) :index
+regfree :value
+end
+
+to noimmediate :value
+if not equalp exp.mode :value "immediate [output :value]
+localmake "reg newregister
+code (list "addi :reg reg.zero exp.value :value)
+output (list exp.type :value "register :reg)
+end
+
+to check.type :type :result
+if equalp :type "real [output preal :result]
+if equalp :type "integer [output pinteger :result]
+if equalp :type "char [output pchar :result]
+if equalp :type "boolean [output pboolean :result]
+end
+
+to preal :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "real [output exp.value :pval]
+output pinteger :pval
+end
+
+to pinteger :expr [:pval noimmediate :expr]
+localmake "type exp.type :pval
+if memberp :type [integer boolean char] [output exp.value :pval]
+(throw "error sentence exp.type :pval [isn't ordinal])
+end
+
+to pchar :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "char [output exp.value :pval]
+(throw "error sentence exp.type :pval [not character value])
+end
+
+to pboolean :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "boolean [output exp.value :pval]
+(throw "error sentence exp.type :pval [not true or false])
+end
+
+to parrayassign :id
+localmake "right token
+if equalp first :right "' ~
+   [pstringassign :type (butlast butfirst :right)  stop]
+localmake "rid getid :right
+if not equalp (id.type :id) (id.type :rid) ~
+   [(throw "error (sentence "arrays :name "and :right [unequal types]))]
+localmake "size arraysize id.type :id
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "rtarget memsetup (id.pointer :rid) (id.varp :rid) 0
+copyarray
+end
+
+to pstringassign :type :string
+if not equalp first :type "char [stringlose]
+if not emptyp butfirst last :type [stringlose]
+if not equalp (last first last :type) (count :string) [stringlose]
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+pstringassign1 newregister (first :ltarget) (last :ltarget) :string
+regfree last :ltarget
+end
+
+to pstringassign1 :tempreg :offset :reg :string
+if emptyp :string [regfree :tempreg  stop]
+code (list "addi :tempreg reg.zero ascii first :string)
+code (list "store :tempreg (memaddr :offset :reg))
+pstringassign1 :tempreg :offset+1 :reg (butfirst :string)
+end
+
+to stringlose
+(throw "error sentence :name [not string array or wrong size])
+end
+
+;; Multiple array indices to linear index computation
+
+to setindex :parseflag
+ifelse listp :type ~
+       [if :parseflag
+           [mustbe "|[|  make "index commalist [pexpr]  mustbe "|]| ]
+        make "index lindex last :type :index
+        make "type first :type] ~
+       [make "index 0]
+end
+
+to lindex :bounds :index
+output lindex1 (offset pinteger noimmediate first :index
+                       first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to lindex1 :sofar :bounds :index
+if emptyp :bounds [output :sofar]
+output lindex1 (nextindex :sofar
+                          last first :bounds
+                          pinteger noimmediate first :index
+                          first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to nextindex :old :factor :new :offset
+code (list "muli :old :old :factor)
+localmake "newreg offset :new :offset
+code (list "add :old :old :newreg)
+regfree :newreg
+output :old
+end
+
+to offset :indexreg :lowbound
+if not equalp :lowbound 0 [code (list "subi :indexreg :indexreg :lowbound)]
+output :indexreg
+end
+
+;; Memory interface: load and store instructions
+
+to codeload :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "rload :reg targetaddr)
+regfree last :target
+end
+
+to codestore :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "store :reg targetaddr)
+regfree last :target
+end
+
+to targetaddr
+output memaddr (first :target) (last :target)
+end
+
+to memaddr :offset :index
+output (word :offset "\( :index "\))
+end
+
+to memsetup :pointer :varflag :index
+localmake "depth first :pointer
+localmake "offset last :pointer
+local "newreg
+ifelse equalp :depth 0 ~
+       [make "newreg reg.globalptr] ~
+       [ifelse equalp :depth :lexical.depth
+               [make "newreg reg.frameptr]
+               [make "newreg newregister
+                code (list "rload :newreg
+                           (memaddr frame.outerframe reg.frameptr))
+                repeat (:lexical.depth - :depth) - 1
+                       [code (list "rload :newreg
+                                   (memaddr frame.outerframe :newreg))]]]
+if :varflag ~
+   [ifelse :newreg = reg.frameptr
+           [make "newreg newregister
+            code (list "rload :newreg (memaddr :offset reg.frameptr))]
+           [code (list "rload :newreg (memaddr :offset :newreg))]
+    make "offset 0]
+if not equalp :index 0 ~
+   [code (list "add :index :index :newreg)
+    regfree :newreg
+    make "newreg :index]
+output list :offset :newreg
+end
+
+to copyarray
+localmake "looptag gensym
+localmake "sizereg newregister
+code (list "addi :sizereg reg.zero :size)
+code :looptag
+localmake "tempreg newregister
+code (list "rload :tempreg (memaddr (first :rtarget) (last :rtarget)))
+code (list "store :tempreg (memaddr (first :ltarget) (last :ltarget)))
+code (list "addi (last :rtarget) (last :rtarget) 1)
+code (list "addi (last :ltarget) (last :ltarget) 1)
+code (list "subi :sizereg :sizereg 1)
+code (list "gtr :tempreg :sizereg reg.zero)
+code (list "jumpt :tempreg (word "" :looptag))
+regfree :sizereg
+regfree :tempreg
+regfree last :ltarget
+regfree last :rtarget
+end
+
+;; Expressions
+
+to pexpr
+local [opstack datastack parenlevel]
+make "opstack [[popen 1 0]]
+make "datastack []
+make "parenlevel 0
+output pexpr1
+end
+
+to pexpr1
+local [token op]
+make "token token
+while [equalp :token "|(|] [popen  make "token token]
+make "op pgetunary :token
+if not emptyp :op [output pexprop :op]
+push "datastack pdata :token
+make "token token
+while [and (:parenlevel > 0) (equalp :token "|)| )] ~
+      [pclose  make "token token]
+make "op pgetbinary :token
+if not emptyp :op [output pexprop :op]
+make "peektoken :token
+pclose
+if not emptyp :opstack [(throw "error [too many operators])]
+if not emptyp butfirst :datastack [(throw "error [too many operands])]
+output pop "datastack
+end
+
+to pexprop :op
+while [(op.prec :op) < (1 + op.prec first :opstack)] [ppopop]
+push "opstack :op
+output pexpr1
+end
+
+to popen
+push "opstack [popen 1 0]
+make "parenlevel :parenlevel + 1
+end
+
+to pclose
+while [(op.prec first :opstack) > 0] [ppopop]
+ignore pop "opstack
+make "parenlevel :parenlevel - 1
+end
+
+to pgetunary :token
+output gprop :token "unary
+end
+
+to pgetbinary :token
+output gprop :token "binary
+end
+
+to ppopop
+local [op function args left right type reg]
+make "op pop "opstack
+make "function op.instr :op
+if equalp :function "plus [stop]
+make "args op.nargs :op
+make "right pop "datastack
+make "left (ifelse equalp :args 2 [pop "datastack] [[[] []]])
+make "type pnewtype :op exp.type :left exp.type :right
+if equalp exp.mode :left "immediate ~
+   [localmake "leftreg newregister
+    code (list "addi :leftreg reg.zero exp.value :left)
+    make "left (list exp.type :left "register :leftreg)]
+ifelse equalp exp.mode :left "register ~
+       [make "reg exp.value :left] ~
+       [ifelse equalp exp.mode :right "register
+               [make "reg exp.value :right]
+               [make "reg newregister]]
+if equalp :function "minus ~
+   [make "left (list exp.type :right "register reg.zero)
+    make "function "sub
+    make "args 2]
+if equalp exp.mode :right "immediate ~
+   [make "function word :function "i]
+ifelse equalp :args 2 ~
+       [code (list :function :reg exp.value :left exp.value :right)] ~
+       [code (list :function :reg exp.value :right)]
+if not equalp :reg exp.value :left [regfree exp.value :left]
+if (and (equalp exp.mode :right "register)
+        (not equalp :reg exp.value :right)) ~
+   [regfree exp.value :right]
+push "datastack (list :type "register :reg)
+end
+
+to pnewtype :op :ltype :rtype
+localmake "type op.types :op
+if emptyp :ltype [make "ltype :rtype]
+if not emptyp last :type [pchecktype last :type :ltype :rtype]
+if and (equalp :ltype "real) (equalp :rtype "integer) [make "rtype "real]
+if and (equalp :ltype "integer) (equalp :rtype "real) [make "ltype "real]
+if not equalp :ltype :rtype [(throw "error [type clash])]
+if emptyp last :type ~
+   [if not memberp :rtype [integer real]
+       [(throw "error [nonarithmetic type])]]
+if emptyp first :type [output :rtype]
+output first :type
+end
+
+to pchecktype :want :left :right
+if not equalp :want :left [(throw "error (sentence :left "isn't :want))]
+if not equalp :want :right [(throw "error (sentence :right "isn't :want))]
+end
+
+;; Expression elements
+
+to pdata :token
+if equalp :token "true [output [boolean immediate 1]]
+if equalp :token "false [output [boolean immediate 0]]
+if equalp first :token "' [output pchardata :token]
+if numberp :token [output (list numtype :token "immediate :token)]
+localmake "id getid :token
+if emptyp :id [(throw "error sentence [undefined symbol] :token)]
+localmake "type id.type :id
+if equalp :type "function [output pfuncall :token]
+local "index
+setindex "true
+localmake "reg newregister
+codeload :reg (id.pointer :id) (id.varp :id) :index
+output (list :type "register :reg)
+end
+
+to pchardata :token
+if not equalp count :token 3 ~
+   [(throw "error sentence :token [not single character])]
+output (list "char "immediate ascii first butfirst :token)
+end
+
+to numtype :number
+if memberp ". :number [output "real]
+if memberp "e :number [output "real]
+output "integer
+end
+
+to pfuncall :pname
+localmake "id getid :pname
+localmake "lname id.lname :id
+if namep (word "need :lname) [make (word "need :lname) "true]
+localmake "vartypes thing :lname
+localmake "returntype first :vartypes
+make "vartypes butfirst :vartypes
+pproccall1 framesize.fun
+localmake "reg newregister
+code (list "add :reg reg.retval reg.zero)
+output (list :returntype "register :reg)
+end
+
+;; Parsing assistance
+
+to code :stuff
+if emptyp :stuff [stop]
+push :codeinto :stuff
+end
+
+to commalist :test [:sofar []]
+local [result token]
+make "result run :test
+if emptyp :result [output :sofar]
+ifbe ", [output (commalist :test (lput :result :sofar))]
+output lput :result :sofar
+end
+
+.macro ifbe :wanted :action
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output []
+end
+
+.macro ifbeelse :wanted :action :else
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output :else
+end
+
+to mustbe :wanted
+localmake "token token
+if equalp :token :wanted [stop]
+(throw "error (sentence "expected :wanted "got :token))
+end
+
+to newregister
+for [i reg.firstfree :numregs-1] ~
+    [if not item :i :regsused [setitem :i :regsused "true  output :i]]
+(throw "error [not enough registers available])
+end
+
+to regfree :reg
+setitem :reg :regsused "false
+end
+
+to reservedp :word
+output memberp :word [and array begin case const div do downto else end ~
+                      file for forward function goto if in label mod nil ~
+                      not of packed procedure program record repeat set ~
+                      then to type until var while with]
+end
+
+;; Lexical analysis
+
+to token
+local [token char]
+if namep "peektoken [make "token :peektoken
+                     ern "peektoken   output :token]
+make "char getchar
+if equalp :char "|{| [skipcomment output token]
+if equalp :char char 32 [output token]
+if equalp :char char 13 [output token]
+if equalp :char char 10 [output token]
+if equalp :char "' [output string "']
+if memberp :char [+ - * / = ( , ) |[| |]| |;|] [output :char]
+if equalp :char "|<| [output twochar "|<| [= >]]
+if equalp :char "|>| [output twochar "|>| [=]]
+if equalp :char ". [output twochar ". [.]]
+if equalp :char ": [output twochar ": [=]]
+if numberp :char [output number :char]
+if letterp ascii :char [output token1 lowercase :char]
+(throw "error sentence [unrecognized character:] :char)
+end
+
+to skipcomment
+if equalp getchar "|}| [stop]
+skipcomment
+end
+
+to string :string
+localmake "char getchar
+if not equalp :char "' [output string word :string :char]
+make "char getchar
+if equalp :char "' [output string word :string :char]
+make "peekchar :char
+output word :string "'
+end
+
+to twochar :old :ok
+localmake "char getchar
+if memberp :char :ok [output word :old :char]
+make "peekchar :char
+output :old
+end
+
+to number :num
+localmake "char getchar
+if equalp :char ". ~
+   [make "char getchar ~
+    ifelse equalp :char ". ~
+           [make "peektoken ".. output :num] ~
+           [make "peekchar :char output number word :num ".]]
+if equalp :char "e [output number word :num twochar "e [+ -]]
+if numberp :char [output number word :num :char]
+make "peekchar :char  output :num
+end
+
+to token1 :token
+localmake "char getchar
+if or letterp ascii :char numberp :char ~
+   [output token1 word :token lowercase :char]
+make "peekchar :char  output :token
+end
+
+to letterp :code
+if and (:code > 64) (:code < 91) [output "true]
+output and (:code > 96) (:code < 123)
+end
+
+to getchar
+local "char
+if namep "peekchar [make "char :peekchar  ern "peekchar  output :char]
+ifelse eofp [output char 1] [output rc1]
+end
+
+to rc1
+localmake "result readchar
+type :result  output :result
+end
+
+;; Data abstraction: ID List
+
+to newlname :word
+if memberp :word :namesused [output gensym]
+if namep word "% :word [output gensym]
+push "namesused :word
+output word "% :word
+end
+
+to lname :word
+localmake "result getid :word
+if not emptyp :result [output item 3 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to gettype :word
+localmake "result getid :word
+if not emptyp :result [output item 2 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to getid :word [:list :idlist]
+if emptyp :list [output []]
+if equalp :word first first :list [output first :list]
+output (getid :word butfirst :list)
+end
+
+to id.type :id                     to id.varp :id
+output item 2 :id                  output item 4 :id
+end                                end
+
+to id.pointer :id                  to id.frame :id
+output item 3 :id                  output item 4 :id
+end                                end
+
+to id.lname :id
+output item 3 :id
+end
+
+;; Data abstraction: Operators
+
+to op.instr :op                    to op.types :op
+output first :op                   output item 3 :op
+end                                end
+
+to op.nargs :op                    to op.prec :op
+output first bf :op                output last :op
+end                                end
+
+;; Data abstraction: Expressions
+
+to exp.type :exp
+output first :exp
+end
+
+to exp.mode :exp
+output first butfirst :exp
+end
+
+to exp.value :exp
+output last :exp
+end
+
+;; Data abstraction: Frame slots
+
+to frame.retaddr                   to frame.regsave
+output 0                           output 4
+end                                end
+
+to frame.save.newfp                to framesize.proc
+output 1                           output 4+:numregs
+end                                end
+
+to frame.outerframe                to frame.retval
+output 2                           output 4+:numregs
+end                                end
+
+to frame.prevframe                 to framesize.fun
+output 3                           output 5+:numregs
+end                                end
+
+;; Data abstraction: Registers
+
+to reg.zero                        to reg.frameptr
+output 0                           output 4
+end                                end
+
+to reg.retaddr                     to reg.newfp
+output 1                           output 5
+end                                end
+
+to reg.stackptr                    to reg.retval
+output 2                           output 6
+end                                end
+
+to reg.globalptr                   to reg.firstfree
+output 3                           output 7
+end                                end
+
+;; Runtime (machine simulation)
+
+to prun :progname
+localmake "prog thing word "% :progname
+localmake "regs (array :numregs 0)
+local filter "wordp :prog
+foreach :prog [if wordp ? [make ? ?rest]]
+localmake "memory (array :memsize 0)
+setitem 0 :regs 0
+if not procedurep "add [runsetup]
+prun1 :prog
+end
+
+to prun1 :pc
+if emptyp :pc [stop]
+if listp first :pc [run first :pc]
+prun1 butfirst :pc
+end
+
+to rload :reg :offset :index
+setitem :reg :regs (item (item :index :regs)+:offset :memory)
+end
+
+to store :reg :offset :index
+setitem (item :index :regs)+:offset :memory (item :reg :regs)
+end
+
+to runsetup
+foreach [[add sum] [sub difference] [mul product] [quo quotient]
+         [div [int quotient]] [rem remainder] [land product]
+         [lor [tobool lessp 0 sum]] [eql [tobool equalp]]
+         [neq [tobool not equalp]] [less [tobool lessp]]
+         [gtr [tobool greaterp]] [leq [tobool not greaterp]]
+         [geq [tobool not lessp]]] ~
+        [define first ?
+                `[[dest src1 src2]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  (item :src2 :regs)]]
+         define word first ? "i
+                `[[dest src1 immed]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  :immed]]]
+foreach [[lnot [difference 1]] [sint int] [sround round] [srandom random]] ~
+        [define first ?
+                `[[dest src]
+                  [setitem :dest :regs ,@[last ?] (item :src :regs)]]
+         define word first ? "i
+                `[[dest immed]
+                  [setitem :dest :regs ,@[last ?] :immed]]]
+end
+
+to tobool :tf
+output ifelse :tf [1] [0]
+end
+
+to jump :label
+make "pc fput :label thing :label
+end
+
+to jumpt :reg :label
+if (item :reg :regs)=1 [jump :label]
+end
+
+to jumpf :reg :label
+if (item :reg :regs)=0 [jump :label]
+end
+
+to jr :reg
+make "pc item :reg :regs
+end
+
+to jal :reg :label
+setitem :reg :regs :pc
+jump :label
+end
+
+to putch :width :reg
+spaces :width 1
+type char (item :reg :regs)
+end
+
+to putstr :width :string
+spaces :width (count first :string)
+type :string
+end
+
+to puttf :width :bool
+spaces :width 1
+type ifelse (item :bool :regs)=0 ["F] ["T]
+end
+
+to putint :width :reg
+localmake "num (item :reg :regs)
+spaces :width count :num
+type :num
+end
+
+to putreal :width :reg
+putint :width :reg
+end
+
+to spaces :width :count
+if :width > :count [repeat :width - :count [type "| |]]
+end
+
+to newline
+print []
+end
+
+to exit
+make "pc [exit]
+end
diff --git a/js/games/nluqo.github.io/~bh/v3ch5/a+b.gif b/js/games/nluqo.github.io/~bh/v3ch5/a+b.gif
new file mode 100644
index 0000000..bdfca6a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/a+b.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/ambiguous.gif b/js/games/nluqo.github.io/~bh/v3ch5/ambiguous.gif
new file mode 100644
index 0000000..603d27a
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/ambiguous.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/blocks.gif b/js/games/nluqo.github.io/~bh/v3ch5/blocks.gif
new file mode 100644
index 0000000..26817cf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/blocks.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/langi.html b/js/games/nluqo.github.io/~bh/v3ch5/langi.html
new file mode 100644
index 0000000..927e3cf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/langi.html
@@ -0,0 +1,3297 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 5: Programming Language Implementation</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Programming Language Implementation</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch6/v3ch6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="pascal.lg"><CODE>pascal</CODE></A>
+
+<P>We are now ready to turn from the questions of language design to those of
+compiler implementation.  A Pascal compiler is a much larger programming
+project than most of the ones we've explored so far.  You might well ask,
+&quot;where do we <EM>begin</EM> in writing a compiler?&quot; My goal in this chapter
+is to show some of the parts that go into a compiler design.
+
+<P>A compiler translates programs from a language like Pascal into the
+machine language of some particular computer model.  My compiler
+translates into a simplified, simulated machine language; the compiled
+programs are actually carried out by another Logo program, the simulator,
+rather than directly by the computer hardware.  The advantage of using this
+simulated machine language is that this compiler will work no matter what
+kind of computer you have; also, the simplifications in this simulated
+machine allow me to leave out many confusing details of a practical compiler.
+Our machine language is, however, realistic enough to give you a good sense
+of what compiling into a real machine language would be like; it's loosely
+based on the MIPS microprocessor design.  You'll see in a moment that most
+of the structure of the compiler is independent of the target language,
+anyway.
+
+<P>
+
+<P>Here is a short, uninteresting Pascal program:
+
+<P><PRE>program test;
+
+procedure doit(n:integer);
+   begin
+      writeln(n,n*n)
+   end;
+
+begin
+   doit(3)
+end.
+</PRE>
+
+<P>If you type this program into a disk file and then compile it
+using <CODE>compile</CODE> as described in Chapter 4, the compiler will translate
+the program into this sequence of instructions, contained in a list in the
+variable named <CODE>%test</CODE>:
+
+<P>
+
+<P><PRE>[       [add 3 0 0]
+        [add 4 0 0]
+        [addi 2 0 36]
+        [jump &quot;g1]
+%doit   [store 1 0(4)]
+        [jump &quot;g2]
+g2      [rload 7 36(4)]
+        [putint 10 7]
+        [rload 7 36(4)]
+        [rload 8 36(4)]
+        [mul 7 7 8]
+        [putint 10 7]
+        [newline]
+        [rload 1 0(4)]
+        [add 2 4 0]
+        [rload 4 3(2)]
+        [jr 1]
+g1      [store 5 1(2)]
+        [add 5 2 0]
+        [addi 2 2 37]
+        [store 4 3(5)]
+        [store 4 2(5)]
+        [addi 7 0 3]
+        [store 7 36(5)]
+        [add 4 5 0]
+        [rload 5 1(4)]
+        [jal 1 &quot;%doit]
+        [exit]
+]
+</PRE>
+
+<P>I've displayed this list of instructions with some extra spacing
+thrown in to make it look somewhat like a typical <EM>assembler</EM> listing.
+(An assembler is a program that translates a notation like <CODE>add 3 0 0</CODE>
+into a binary number, the form in which the machine hardware actually
+recognizes these instructions.)  A real assembler listing wouldn't have the
+square brackets that Logo uses to mark each sublist, but would instead
+depend on the convention that each instruction occupies one line.
+
+<P>The first three instructions carry out initialization that would be the same
+for any compiled Pascal program; the fourth is a <CODE>jump</CODE> instruction that
+tells the (simulated) computer to skip to the instruction following the
+<EM>label</EM> <CODE>g1</CODE> that appears later in the program.  (A word that
+isn't part of a sublist is a label.)  In Pascal, the body of the main
+program comes after the declarations of procedures; this <CODE>jump</CODE>
+instruction allows the compiler to translate the parts of the program in the
+order in which they appear.
+
+<P>(Two instructions later, you'll notice a <CODE>jump</CODE> to a label that comes
+right after the jump instruction!  The compiler issues this useless
+instruction just in case some internal procedures were declared within
+the procedure <CODE>doit</CODE>.  A better compiler would include an <EM>
+optimizer</EM> that would go through the compiled program looking for
+ways to eliminate unnecessary instructions such as this one.  The optimizer
+is the most important thing that I've left out of my compiler.)
+
+<P>We're not ready yet to talk in detail about how the compiled instructions
+represent the Pascal program, but you might be able to guess certain things.
+For example, the variable <CODE>n</CODE> in procedure <CODE>doit</CODE> seems to be
+represented as <CODE>36(4)</CODE> in the compiled program; you can see where <CODE>
+36(4)</CODE> is printed and then multiplied by itself, although it may not yet be
+clear to you what the numbers <CODE>7</CODE> and <CODE>8</CODE> have to do with anything.
+Before we get into those details, I want to give a broader overview of
+the organization of the compiler.
+
+<P>The compilation process is divided into three main pieces.  First and
+simplest is <EM>tokenization.</EM> The compiler initially sees the
+source program as a string of characters: <CODE>p</CODE>, then <CODE>r</CODE>, and so on,
+including spaces and line separators.  The first step in compilation is to
+turn these characters into symbols, so that the later stages of compilation
+can deal with the word <CODE>program</CODE> as a unit.  The second piece of the
+compiler is the <EM>parser,</EM> the part that recognizes certain
+patterns of symbols as representing meaningful units.  &quot;Oh,&quot; says the
+parser, &quot;I've just seen the word <CODE>procedure</CODE> so what comes next must be
+a procedure header and then a <CODE>begin</CODE>-<CODE>end</CODE> block for the body of
+the procedure.&quot; Finally, there is the process of <EM>
+code generation,</EM> in which each unit that was recognized by the
+parser is actually translated into the equivalent machine language
+instructions.
+
+<P>(I don't mean that parsing and code generation happen separately, one after
+the other, in the compiler's algorithm.  In fact each meaningful unit is
+translated as it's encountered, and the translation of a large unit like a
+procedure includes, recursively, the translation of smaller units like
+statements.  But parsing and code generation are conceptually two different
+tasks, and we'll talk about them separately.)
+
+<P><H2>Formal Syntax Definition</H2>
+
+<P>One common starting place is to develop a formal definition for the language
+we're trying to compile.  The regular expressions of Chapter 1 are an
+example of what I mean by a formal definition.  A
+regular expression tells
+us unambiguously that certain strings of characters are accepted as members
+of the category defined by the expression, while other strings aren't.  A
+language like Pascal is too complicated to be described by a regular
+expression, but other kinds of formal definition can be used.
+
+<P>The formal systems of Chapter 1 just gave a yes-or-no decision for any input
+string:  Is it, or is it not, accepted in the language under discussion?
+That's not quite good enough for a compiler.  We don't just want to know
+whether a Pascal program is syntactically correct; we want a translation of
+the program into some executable form.  Nevertheless, it turns out to be
+worthwhile to begin by designing a formal acceptor for Pascal.  That part of
+the compiler--the part that determines the syntactic structure of the
+source program--is called the <EM>parser.</EM>  Later we'll add provisions for
+<EM>code generation:</EM> the translation of each syntactic unit of the
+source program into a piece of <EM>object</EM> (executable) program that
+carries out the meaning (the <EM>semantics</EM>) of that unit.
+
+<P>One common form in which programming languages are described is the
+<EM>production rule</EM> notation mentioned briefly in Chapter 1.  For
+example, here is part of a specification for Pascal:
+
+<P><PRE>program:  program <EM>identifier</EM> <EM>filenames</EM> ; <EM>block</EM> .
+
+filenames:  | ( <EM>idlist</EM> )
+
+idlist:  <EM>identifier</EM> | <EM>idlist</EM> , <EM>identifier</EM>
+
+block:  <EM>varpart</EM> <EM>procpart</EM> <EM>compound</EM>
+
+varpart:  | var <EM>varlist</EM>
+
+procpart:  | <EM>procpart</EM> <EM>procedure</EM> | <EM>procpart</EM> <EM>function</EM>
+
+compound:  begin <EM>statements</EM> end
+
+statements:  <EM>statement</EM> | <EM>statements</EM> ; <EM>statement</EM>
+
+procedure:  procedure <EM>identifier</EM> <EM>args</EM> ; <EM>block</EM> ;
+
+function:  function <EM>identifier</EM> <EM>args</EM> : <EM>type</EM> ; <EM>block</EM> ;
+</PRE>
+
+<P>A program consists of six components.  Some of these components
+are particular words (like <CODE>program</CODE>) or punctuation marks; other
+components are defined in terms of even smaller units by other
+rules.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The <EM>filenames</EM> component is an optional list of
+names of files, part of Pascal's input/output capability; my compiler doesn't
+handle file input or output, so it ignores this list if there is one.</SMALL></BLOCKQUOTE></SMALL><P>A vertical bar (<CODE>|</CODE>) in a rule separates alternatives; an idlist
+(identifier list) is either a single identifier or a smaller idlist followed
+by a comma and another identifier.  Sometimes one of the alternatives in a
+rule is empty; for example, a varpart can be empty because a block need not
+declare any local variables.
+
+<P>The goal in designing a formal specification is to capture the
+syntactic hierarchy
+of the language you're describing.  For example, you could define
+a Pascal type as
+
+<P><PRE>type:  integer | real | char | boolean | array <EM>range</EM> of integer |
+               packed array <EM>range</EM> of integer | array <EM>range</EM> of real |
+               ...
+</PRE>
+
+<P>but it's better to say
+
+<P><PRE>type:  <EM>scalar</EM> | array <EM>range</EM> of <EM>scalar</EM> |
+               packed array <EM>range</EM> of <EM>scalar</EM>
+
+scalar:  integer | real | char | boolean
+</PRE>
+
+<P>Try completing the syntactic description of my subset of Pascal along these
+lines.  You might also try a similar syntactic description of Logo.  Which
+is easier?
+
+<P>Another kind of formal description is
+
+the <EM>recursive transition network</EM> (RTN).
+An RTN is like a finite-state machine except that instead
+of each arrow representing a single symbol in the machine's alphabet, an
+arrow can be labeled with the name of another RTN; such an arrow represents
+any string of symbols accepted by that RTN.
+
+<P>Below I show two RTNs, one for a program and one for a
+sequence of statements (the body of a compound statement).
+In the former, the transition from state 5 to state 6 is followed if what
+comes next in the Pascal program is a string of symbols accepted by the RTN
+named &quot;block.&quot; In these diagrams, a word in <CODE>typewriter</CODE> style like
+<CODE>program</CODE> represents a single symbol, as in a finite-state machine diagram,
+while a word in <EM>italics</EM> like <EM>block</EM> represents any
+string accepted by the RTN of that name.  The <EM>statements</EM> RTN
+is recursive; one path through the network involves a transition that
+requires parsing a smaller <EM>statements</EM> unit.
+
+<P><CENTER><IMG SRC="rtn1.gif" ALT="figure: rtn1"></CENTER>
+<P><CENTER><IMG SRC="rtn2.gif" ALT="figure: rtn2"></CENTER>
+
+<P><H2>Tokenization</H2>
+
+
+<P>In both the production rules and the RTNs I've treated words like <CODE>
+program</CODE> as a single symbol of the &quot;alphabet&quot; of the language.  It would
+be possible, of course, to use single characters as the alphabetic symbols
+and describe the language in this form:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/tokenrtn.gif" ALT="figure: tokenrtn"></CENTER>
+
+<P>Extending the formal description down to that level, though, makes
+it hard to see the forest for the trees; the important structural patterns
+get lost in details about, for instance, where spaces are required between
+words (as in <CODE>program tower</CODE>), where they're optional (as in <CODE>
+2 + 3</CODE>), and where they're not allowed at all (<CODE>prog
+ram</CODE>).  A similar complication is that a comment in braces can
+be inserted anywhere in the program; it would be enormously complicated if
+every state of every RTN had to have a transition for a left brace beginning
+a comment.
+
+<P>Most language processors therefore group the characters of the source
+program into <EM>tokens</EM> used as the alphabet for the formal
+grammar.  A token may be a single character, such as a punctuation mark, or
+a group of characters, such as a word or a number.  Spaces do not ordinarily
+form part of tokens, although in the Pascal compiler one kind of token is a
+quoted character string that can include spaces.  Comments are also removed
+during tokenization.  Here's what the <CODE>tower</CODE> program from Chapter 4
+looks like in token form:
+
+<P><CENTER><IMG SRC="tokenized.gif"></CENTER>
+
+<P>Tokenization is what the Logo <CODE>readlist</CODE> operation does when
+it uses spaces and brackets to turn the string of characters you type into
+a sequence of words and lists.
+
+<P>Tokenization is also called <EM>lexical analysis.</EM> This term has
+nothing to do with lexical scope; the word &quot;lexical&quot; is used not to remind
+us of a dictionary but because the root &quot;lex&quot; means <EM>word</EM> and
+lexical analysis divides the source program into words.
+
+<P>I've been talking as if the Pascal compiler first went through the entire
+source file tokenizing it and then went back and parsed the result.  That's
+not actually how it works; instead, the parser just calls a procedure named
+<CODE>token</CODE> whenever it wants to see the next token in the source file.
+I've already mentioned that Pascal was designed to allow the compiler to
+read straight through the source program without jumping around and
+re-reading parts of it.
+
+<P><H2>Lookahead</H2>
+
+
+<P>Consider the situation when the parser has recognized the first token
+(<CODE>program</CODE>) as the beginning of a program and it invokes <CODE>token</CODE> to
+read the second token, the program name.  In the <CODE>tower</CODE> program, the
+desired token is <CODE>tower</CODE>.  <CODE>Token</CODE> reads the letter <CODE>t</CODE>; since
+it's a letter, it must be the beginning of an identifier.  Any number of
+letters or digits following the <CODE>t</CODE> will be part of the identifier, but
+the first non-alphanumeric character ends the token.  (In this case, the
+character that ends the token will be a semicolon.)
+
+<P>What this means is that <CODE>token</CODE> has to read one character too many in
+order to find the end of the word <CODE>tower</CODE>.  The semicolon isn't
+part of that token; it's part of the <EM>following</EM> token.  (In fact it's
+the entire following token, but in other situations that need not be true.)
+Ordinarily <CODE>token</CODE> begins its work by reading a character from the
+source file, but the next time we call <CODE>token</CODE> it has to deal with the
+character it's already read.  It would simplify things enormously if <CODE>
+token</CODE> could &quot;un-read&quot; the semicolon that ends the token <CODE>
+tower</CODE>.  It's possible to allow something like un-reading by using a
+technique called <EM>lookahead.</EM>
+
+<P><PRE>to getchar
+local &quot;char
+if namep &quot;peekchar
+    [make &quot;char :peekchar
+     ern &quot;peekchar
+     output :char]
+output readchar
+end
+</PRE>
+
+<P><CODE>Getchar</CODE> is the procedure that <CODE>token</CODE> calls to read the next
+character from the source file.  Ordinarily <CODE>getchar</CODE> just invokes the
+primitive <CODE>readchar</CODE> to read a character from the file.<SUP>*</SUP>  But if there is a variable named <CODE>peekchar</CODE>, then <CODE>
+getchar</CODE> just outputs whatever is in that variable without looking at the
+file.  <CODE>Token</CODE> can now un-read a character by saying
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I'm lying.
+The real <CODE>getchar</CODE> is slightly more complicated because it checks for an
+unexpected end of file and because it prints the characters that it reads
+onto the screen.  The program listing at the end of the chapter tells the
+whole story.</SMALL></BLOCKQUOTE></SMALL><P><PRE>make &quot;peekchar :char
+</PRE>
+
+<P>This technique only allows <CODE>token</CODE> to un-read a single
+character at a time.  It would be possible to replace <CODE>peekchar</CODE> with a
+<EM>list</EM> of pre-read characters to be recycled.  But in fact one is
+enough.  When a program &quot;peeks at&quot; characters before they're read &quot;for
+real,&quot; the technique is called <EM>lookahead.</EM>  <CODE>Getchar</CODE> uses
+<EM>one-character lookahead</EM> because <CODE>peekchar</CODE> only stores a single
+character.
+
+<P>It turns out that, for similar reasons, the Pascal parser will occasionally
+find it convenient to peek at a <EM>token</EM> and re-read it later.  <CODE>
+Token</CODE> therefore provides for one-<EM>token</EM> lookahead using a similar
+mechanism:
+
+<P><PRE>to token
+local [token char]
+if namep &quot;peektoken [make &quot;token :peektoken
+                     ern &quot;peektoken   output :token]
+make &quot;char getchar
+if equalp :char &quot;|{| [skipcomment output token]
+if equalp :char char 32 [output token]
+if equalp :char char 13 [output token]
+if equalp :char char 10 [output token]
+if equalp :char &quot;' [output string &quot;']
+if memberp :char [+ - * / = ( , ) |[| |]| |;|] [output :char]
+if equalp :char &quot;|&lt;| [output twochar &quot;|&lt;| [= &gt;]]
+if equalp :char &quot;|&gt;| [output twochar &quot;|&gt;| [=]]
+if equalp :char &quot;. [output twochar &quot;. [.]]
+if equalp :char &quot;: [output twochar &quot;: [=]]
+if numberp :char [output number :char]
+if letterp ascii :char [output token1 lowercase :char]
+(throw &quot;error sentence [unrecognized character:] :char)
+end
+
+to twochar :old :ok
+localmake &quot;char getchar
+if memberp :char :ok [output word :old :char]
+make &quot;peekchar :char
+output :old
+end
+</PRE>
+
+<P>As you can see, <CODE>token</CODE> is mainly a selection of special cases.
+<CODE>Char 32</CODE> is a space; <CODE>char 13</CODE> or <CODE>char 10</CODE> is the end-of-line
+character.  <CODE>Skipcomment</CODE> skips over characters until it sees a right
+brace.  <CODE>String</CODE> accumulates characters up to and including a single
+quote (apostrophe), except that two single quotes in a row become one single
+quote inside the string and don't end the string.  <CODE>Number</CODE> is a little
+tricky because of decimal points (the string of characters <CODE>1.10</CODE> is a
+single token, but the string <CODE>1..10</CODE> is three tokens!) and exponent
+notation.  I'm not showing you all the details because the compiler is a
+very large program and we'll never get through it if I annotate every
+procedure.  But I did want to show you <CODE>twochar</CODE> because it's a good,
+simple example of character lookahead at work.  If the character <CODE>&lt;</CODE> is
+seen in the source program, it may be a token by itself or it may be part of
+the two-character tokens <CODE>&lt;=</CODE> or <CODE>&lt;&gt;</CODE>.  <CODE>Twochar</CODE> takes a peek
+at the next character in the file to decide.
+
+<P>If the character that <CODE>token</CODE> reads isn't part of any recognizable
+token, the procedure generates an error.  (The error is caught by the
+toplevel procedure <CODE>compile</CODE> so that it can close the source file.)
+This extremely primitive error handling is one of the most serious
+deficiencies in my compiler; it would be better if the compilation process
+continued, despite the error, so that any other errors in the program could
+also be discovered.  In a real compiler, more than half of the parsing
+effort goes into error handling; it's relatively trivial to parse a correct
+source program.
+
+<P><H2>Parsing</H2>
+
+
+<P>There are general techniques for turning a formal language specification,
+such as a set of production rules, into an algorithm for parsing the
+language so specified.  These techniques are analogous to the program in
+Chapter 1 that translates a regular expression into a finite-state machine.
+A program that turns a formal specification into a parser is called a
+<EM>parser generator.</EM>
+
+<P>The trouble is that the techniques that work for <EM>any</EM> set of rules
+are quite slow.  The time required to parse a sequence of length <EM>n</EM> is
+O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) if the grammar is unambiguous or O(<EM>n</EM><SUP><SMALL>3</SMALL></SUP>) if it's
+ambiguous.  A grammar is <EM>ambiguous</EM> if the same input sequence
+can be parsed correctly in more than one way.  For example, if the
+production rule
+
+<P><PRE>idlist:  <EM>identifier</EM> | <EM>idlist</EM> , <EM>identifier</EM>
+</PRE>
+
+<P>is applied to the string
+
+<P><PRE>Beatles,Who,Zombies,Kinks
+</PRE>
+
+<P>then the only possible application of the rule to accept the
+string produces this left-to-right grouping:
+
+<P><CENTER><IMG SRC="unambiguous.gif" ALT="figure: unambiguous"></CENTER>
+
+<P>However, if the rule were
+
+<P><PRE>idlist:  <EM>identifier</EM> | <EM>idlist</EM> , <EM>idlist</EM>
+</PRE>
+
+<P>this new rule would accept the same strings, but would allow
+alternative groupings like
+
+<P><CENTER><IMG SRC="ambiguous.gif" ALT="figure: ambiguous"></CENTER>
+
+<P>The former rule could be part of an unambiguous grammar; the new
+rule makes the grammar that contains it ambiguous.
+
+<P>
+
+<P>It's usually not hard to devise an unambiguous grammar for any practical
+programming language, but even a quadratic algorithm is too slow.  Luckily,
+most programming languages have <EM>deterministic grammars,</EM>
+which is a condition even stricter than being unambiguous.  It means that a
+parser can read a program from left to right, and can figure out what to do
+with the next token using only a fixed amount of lookahead.  A parser for a
+deterministic grammar can run in linear time, which is a lot better than
+quadratic.
+
+<P>When I said &quot;figure out what to do with the next token,&quot; I was being
+deliberately vague.  A deterministic parser doesn't necessarily know exactly
+how a token will fit into the complete program--which production rules will
+be branch nodes in a parse tree having this token as a leaf node--as soon
+as it reads the token.  As a somewhat silly example, pretend that the word
+<CODE>if</CODE> is not a &quot;reserved word&quot; in Pascal; suppose it could be the
+name of a variable.  Then, when the parser is expecting the beginning of a
+new statement and the next token is the word <CODE>if</CODE>, the parser doesn't
+know whether it is seeing the beginning of a conditional statement such as
+<CODE>if x &gt; 0 then writeln('positive')</CODE> or the beginning of an assignment
+statement such as <CODE>if := 87</CODE>.  But the parser could still be deterministic.
+Upon seeing the word <CODE>if</CODE>, it would enter a state (as in a finite state
+machine) from which there are two exits.  If the next token turned out to be
+the <CODE>:=</CODE> assignment operator, the parser would follow one transition; if
+the next token was a variable or constant value, the parser would choose a
+different next state.
+
+<P>The real Pascal, though, contains no such syntactic cliffhangers.  A Pascal
+compiler can always tell which production rule the next token requires.
+That's why the language includes keywords like <CODE>var</CODE>, <CODE>
+procedure</CODE>, and <CODE>function</CODE>.  For the most part, you could figure out
+which kind of declaration you're reading without those keywords by looking
+for clues like whether or not there are parentheses after the identifier
+being declared.  (If so, it's a procedure or a function.)  But the keywords
+let you know from the beginning what to expect next.  That means we can
+write what's called a <EM>predictive grammar</EM> for Pascal,
+even simpler to implement than a deterministic one.
+
+<P>There are general algorithms for parsing deterministic languages, and there
+are parser generators using these algorithms.  One widely used example is
+the YACC (Yet Another Compiler Compiler) program that translates
+production rules into a parser in the C programming language.<SUP>*</SUP> But because Pascal's
+grammar is so simple I found it just as easy to do the translation by hand.
+For each production rule in a formal description of Pascal, the compiler
+includes a Logo procedure that parses each component part of the production
+rule.  A parser written in this way is called a <EM>
+recursive descent parser.</EM> Here's a sample:
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>A parser
+generator is also called a <EM>compiler compiler</EM> because it treats
+the formal specification as a kind of source program and produces a compiler
+as the object program.  But the name isn't quite accurate because, as you
+know, there's more to a compiler than the parser.</SMALL></BLOCKQUOTE></SMALL><P><PRE>to statement
+local [token type]
+ifbe &quot;begin [compound stop]
+ifbe &quot;for [pfor stop]
+ifbe &quot;if [pif stop]
+ifbe &quot;while [pwhile stop]
+ifbe &quot;repeat [prepeat stop]
+ifbe &quot;write [pwrite stop]
+ifbe &quot;writeln [pwriteln stop]
+make &quot;token token
+make &quot;peektoken :token
+if memberp :token [|;| end until] [stop]
+make &quot;type gettype :token
+if emptyp :type [(throw &quot;error sentence :token [can't begin statement])]
+if equalp :type &quot;procedure [pproccall stop]
+if equalp :type &quot;function [pfunset stop]
+passign
+end
+
+to pif
+local [cond elsetag endtag]
+make &quot;cond pboolean pexpr
+make &quot;elsetag gensym
+make &quot;endtag gensym
+mustbe &quot;then
+code (list &quot;jumpf :cond (word &quot;&quot; :elsetag))
+regfree :cond
+statement
+code (list &quot;jump (word &quot;&quot; :endtag))
+code :elsetag
+ifbe &quot;else [statement]
+code :endtag
+end
+</PRE>
+
+<P>Many of the details of <CODE>pif</CODE> have to do with code
+generation, but never mind those parts now.  For the
+moment, my concern is with the parsing aspect of these procedures: how they
+decide what to accept.
+
+<P><CODE>Statement</CODE> is an important part of the parser; it is invoked whenever a
+Pascal statement is expected.  It begins by checking the next token from the
+source file.  If that token is <CODE>begin</CODE>, <CODE>for</CODE>, <CODE>if</CODE>, <CODE>while</CODE>,
+or <CODE>repeat</CODE> then we're finished with the token and <CODE>statement</CODE> turns
+to a subprocedure to handle the syntax of whatever structured statement type
+we've found.  If the token isn't one of those, then the statement has to be
+a simple statement and the token has to be an identifier, i.e., the name of
+a procedure, a function, or a variable.  (One other trivial possibility is
+that this is an <EM>empty</EM> statement, if we're already up to the
+semicolon, <CODE>end</CODE>, or <CODE>until</CODE> that marks the end of a statement.)
+In any of these cases, the token we've just read is important to the parsing
+procedure that will handle the simple statement, so <CODE>statement</CODE> un-reads
+it before deciding what to do next.  <CODE>Gettype</CODE> outputs the type of the
+identifier, either a variable type like <CODE>real</CODE> or else <CODE>procedure</CODE>
+or <CODE>function</CODE>.  (The compiler data structures that underlie the work of
+<CODE>gettype</CODE> will be discussed later.)  If the token is a
+procedure name, then this is a procedure call statement.  If the token is a
+function name, then this is the special kind of assignment inside a function
+definition that provides the return value for the function.  Otherwise, the
+token must be a variable name and this is an ordinary assignment statement.
+
+<P>The procedure <CODE>pif</CODE> parses <CODE>if</CODE> statements.  (The letter <CODE>p</CODE> in
+its name stands for &quot;Pascal&quot;; many procedures in the compiler have such
+names to avoid conflicts with Logo procedures with similar purposes.)  The
+syntax of Pascal <CODE>if</CODE> is
+
+<P><PRE>ifstatement:  if <EM>boolean</EM> then <EM>statement</EM> |
+                 if <EM>boolean</EM> then <EM>statement</EM> else <EM>statement</EM>
+</PRE>
+
+<P>When <CODE>pif</CODE> begins, the token <CODE>if</CODE> has just been read by
+<CODE>statement</CODE>.  So the first thing that's required is a boolean expression.
+<CODE>Pexpr</CODE> parses an expression; that task is relatively complicated and
+will be discussed in more detail later.  <CODE>Pboolean</CODE> ensures that the
+expression just parsed does indeed produce a value of type <CODE>boolean</CODE>.
+
+<P>The next token in the source file <EM>must</EM> be the word <CODE>then</CODE>.  The
+instruction
+
+<P><PRE>mustbe &quot;then
+</PRE>
+
+<P>in <CODE>pif</CODE> ensures that.  Here's <CODE>mustbe</CODE>:
+
+<P><PRE>to mustbe :wanted
+localmake &quot;token token
+if equalp :token :wanted [stop]
+(throw &quot;error (sentence &quot;expected :wanted &quot;got :token))
+end
+</PRE>
+
+<P>If <CODE>mustbe</CODE> returns successfully, <CODE>pif</CODE> then invokes
+<CODE>statement</CODE> recursively to parse the true branch of the conditional.
+The production rule tells us that there is then an <EM>optional</EM> false
+branch, signaled by the reserved word <CODE>else</CODE>.  The instruction
+
+<P><PRE>ifbe &quot;else [statement]
+</PRE>
+
+<P>handles that possibility.  If the next token matches the first
+input to <CODE>ifbe</CODE> then the second input, an instruction list, is carried
+out.  Otherwise the token is un-read.  There is also an <CODE>ifbeelse</CODE> that
+takes a third input, an instruction list to be carried out if the next token
+isn't equal to the first input.  (<CODE>Ifbeelse</CODE> still un-reads the token in
+that case, before it runs the third input.)  These must be macros so that
+the instruction list inputs can include <CODE>output</CODE> or <CODE>stop</CODE>
+instructions (as discussed in Volume 2), as in the invocations of <CODE>ifbe</CODE>
+in <CODE>statement</CODE> seen a moment ago.
+
+<P><PRE>.macro ifbe :wanted :action
+localmake &quot;token token
+if equalp :token :wanted [output :action]
+make &quot;peektoken :token
+output []
+end
+
+.macro ifbeelse :wanted :action :else
+localmake &quot;token token
+if equalp :token :wanted [output :action]
+make &quot;peektoken :token
+output :else
+end
+</PRE>
+
+<P>If there were no code generation involved, <CODE>pif</CODE> would be written this
+way:
+
+<P><PRE>to pif
+pboolean pexpr
+mustbe &quot;then
+statement
+ifbe &quot;else [statement]
+end
+</PRE>
+
+<P>This simplified procedure is a straightforward translation of the
+RTN
+
+<P><CENTER><IMG SRC="pif.gif" ALT="figure: pif"></CENTER>
+
+<P>The need to generate object code complicates the parser.  But
+don't let that distract you; in general you can see the formal structure of
+Pascal syntax reflected in the sequence of instructions used to parse that
+syntax.
+
+<P>The procedures that handle other structured statements, such as <CODE>pfor</CODE>
+and <CODE>pwhile</CODE>, are a lot like <CODE>pif</CODE>.  Procedure and function
+declarations (procedures <CODE>procedure</CODE>, <CODE>function</CODE>, and <CODE>proc1</CODE> in
+the compiler) also use the same straightforward parsing technique, but are a
+little more complicated because of the need to keep track of type
+declarations for each procedure's parameters and local variables.
+Ironically, the hardest thing to compile is the &quot;simple&quot; assignment
+statement, partly because of operator precedence (multiplication before
+addition) in expressions (procedure <CODE>pexpr</CODE> in the compiler) and partly
+because of the need to deal with the complexity of variables, including
+special cases such as assignments to <CODE>var</CODE> parameters and array elements.
+
+<P>I haven't yet showed you <CODE>pboolean</CODE> because you have to understand how
+the compiler handles expressions first.  But it's worth noticing that Pascal
+can check <EM>at compile time</EM> whether or not an expression is going to
+produce a <CODE>boolean</CODE> value even though the program hasn't been run yet
+and the variables in the expression don't have values yet.  It's the strict
+variable typing of Pascal that makes this compile-time checking possible.
+If we were writing a Logo compiler, the checking would have to be postponed
+until run time because you can't, in general, know what type of datum will
+be computed by a Logo expression until it's actually evaluated.
+
+<P><H2>Expressions and Precedence</H2>
+
+<P>
+
+<P>Arithmetic or boolean expressions appear not only on the right side of
+assignment statements but also as actual parameters, array index values, and
+as &quot;phrases&quot; in structured statements.  One of the classic problems in
+compiler construction is the translation of these expressions to executable
+form.  The interesting difficulty concerns <EM>
+operator precedence</EM>--the rule that in a string of alternating
+operators and operands, multiplications are done before additions, so
+
+<P><PRE>a + b * c + d
+</PRE>
+
+<P>means
+
+<P><PRE>a + (b * c) + d
+</PRE>
+
+<P>Pascal has four levels of operator precedence.  The highest level, number 4,
+
+is the <EM>unary</EM> operators <CODE>+</CODE>, <CODE>-</CODE>, and <CODE>not</CODE>.  (The first
+
+two can be used as unary operators (<CODE>-3</CODE>) or <EM>binary</EM> ones (<CODE>
+6-3</CODE>); it's only in the unary case that they have this
+precedence.)<SUP>*</SUP> Then comes multiplication, division, and
+logical <CODE>and</CODE> at level 3.  Level 2 has binary addition, subtraction, and
+<CODE>or</CODE>.  And level 1 includes the relational operators like
+<CODE>=</CODE>.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>It's unfortunate that the word &quot;binary&quot; is used in
+computer science both for base-2 numbers and for two-input operations.
+ Kenneth Iverson, in his documentation for the
+language APL, used the words <EM>monadic</EM> and <EM>
+dyadic</EM> instead of unary and binary to avoid that ambiguity.  But
+those terms haven't caught on.</SMALL></BLOCKQUOTE></SMALL><P>
+
+<P>The formalization of precedence could be done using the mechanisms we've
+already seen.  For example, here is a production rule grammar for
+expressions using only the four basic arithmetic operations.
+
+<P><PRE>expression:  <EM>term</EM> | <EM>expression</EM> + <EM>term</EM> | <EM>expression</EM> - <EM>term</EM>
+term:  <EM>factor</EM> | <EM>term</EM> * <EM>factor</EM> | <EM>term</EM> / <EM>factor</EM>
+factor:  <EM>variable</EM> | <EM>number</EM> | ( <EM>expression</EM> )
+</PRE>
+
+<P>This grammar also introduces into the discussion the fact that the
+precedence of operations can be changed by using parentheses.
+
+<P>This grammar, although formally correct, is not so easy to use in a
+recursive descent parser.
+One subtle but important problem is that it's <EM>left recursive:</EM>  Some
+of the alternative forms for an <CODE>expression</CODE> start with an <CODE>
+expression</CODE>.  If we tried to translate this into a Logo procedure it would
+naturally start out
+
+<P><PRE>to expression
+local [left op right]
+make &quot;left expression
+ifbe &quot;+
+  [make &quot;op &quot;+
+   make &quot;right term]
+  [ifbe &quot;-
+     [make &quot;op &quot;-
+      make &quot;right term]
+     [make &quot;op []] ]
+...
+</PRE>
+
+<P>But this procedure will never get past the first <CODE>make</CODE>; it's
+an infinite loop.  It will never actually read a token from the source file;
+instead it keeps invoking itself recursively.
+
+<P>Left association is a problem for automatic compiler compilers, too.  There
+are ways to solve the problem but I don't want to get into that because in
+fact arithmetic expressions are generally handled by an entirely different
+scheme, which I'll show you in a moment.  The problem wouldn't come up if
+the order of the operands were reversed, so the rules said
+
+<P><PRE>expression:  <EM>term</EM> | <EM>term</EM> + <EM>expression</EM> | <EM>term</EM> - <EM>expression</EM>
+</PRE>
+
+<P>and so on.  Unfortunately this changes the meaning, and the rules
+of Pascal say that equal-precedence operations are performed left to right.
+
+<P>In any case, the formalization of precedence with production rules gets more
+complicated as the number of levels of precedence increases.  I showed you a
+grammar with two levels.  Pascal, with four levels, might reasonably be done
+in a similar way, but think about the C programming language, which has 15
+levels of precedence!
+
+<P><H2>The Two-Stack Algorithm for Expressions</H2>
+
+
+<P>What we're after is an algorithm that will allow the compiler to read an
+expression once, left to right, and group operators and operands correctly.
+The algorithm involves the use of two stacks, one for operations and one for
+data.  For each operation we need to know whether it's unary or binary and
+what its precedence level is.  I'll use the notation &quot;<CODE>*</CODE><SUB><SMALL>2,3</SMALL></SUB>&quot; to
+represent binary <CODE>*</CODE> at precedence level 3.  So the expression
+
+<P><PRE>a + b * - c - d
+</PRE>
+
+<P>will be represented in this algorithm as
+
+<P>
+<IMG SRC="vdash.gif"><SUB><SMALL>0</SMALL></SUB> a +<SUB><SMALL>2,2</SMALL></SUB> b *<SUB><SMALL>2,3</SMALL></SUB> -<SUB><SMALL>1,4</SMALL></SUB> c -<SUB><SMALL>2,2</SMALL></SUB> d <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"><SUB><SMALL>0</SMALL></SUB>
+
+
+<P>The symbols <IMG SRC="vdash.gif"> and <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"> aren't really part of the source
+expression; they're imaginary markers for the beginning and end of the
+expression.  When we read a token that doesn't make sense as part of an
+expression, we can un-read that token and pretend we read a <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"> instead.
+These markers are given precedence level zero because they form a boundary
+for <EM>any</EM> operators inside them, just as a low-precedence operator like
+<CODE>+</CODE> is a boundary for the operands of a higher-precedence operator like
+<CODE>*</CODE>.  (For the same reason, you'll see that parentheses are considered
+precedence zero.)
+
+<P>The two minus signs in this expression have two different meanings.  As you
+read the following algorithm description, you'll see how the algorithm knows
+whether an operation symbol is unary or binary.
+
+<P><STRONG>Step 1.</STRONG>  We initialize the two stacks this way:
+
+<P><PRE>operation:  [ <IMG SRC="vdash.gif"><SUB><SMALL>0</SMALL></SUB> ]
+
+data:       [ ]
+</PRE>
+
+<P><STRONG>Step 2.</STRONG>  We are now expecting a datum, such as a variable.  Read a
+token.  If it's an operation, it must be unary; subscript it accordingly and
+go to step 4.  If it's a datum, push it onto the data stack.  (If it's
+neither an operation nor a datum, something's wrong.)
+
+<P><STRONG>Step 3.</STRONG>  We are now expecting a binary operation.  Read a token.  If
+it's an operation, subscript it as binary and go to step 4.  If not, we've
+reached the end of the expression.  Un-read the token, and go to step 4 with
+the token <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"><SUB><SMALL>0</SMALL></SUB>.
+
+<P><STRONG>Step 4.</STRONG>  We have an operation in hand at this point and we know its
+precedence level and how many arguments it needs.  Compare its precedence
+level with that of the topmost (most recently pushed) operation on the stack.
+If the precedence of the new operation is less than or equal to that of the
+one on the stack, go to step 5.  If it's greater, go to step 6.
+
+<P><STRONG>Step 5.</STRONG>  The topmost operation on the stack has higher precedence than
+the one we just read, so we should do it right away.  (For example, we've
+just read the <CODE>+</CODE> in <CODE>a*b+c</CODE>; the multiplication operation and both
+of its operands are ready on the stacks.)  Pop the operation off
+the stack, pop either one or two items off the data stack depending on the
+first subscript of the popped operation, then compile machine instructions to
+perform the indicated computation.  Push the result on the data stack
+as a single quantity.  However, if the operation we popped is <IMG SRC="vdash.gif">, then
+we're finished.  There should be only one thing on the data stack, and it's
+the completely compiled expression.  Otherwise, we still have the new
+operation waiting to be processed, so return to step 4.
+
+<P><STRONG>Step 6.</STRONG>  The topmost operation on the stack has lower precedence than
+the one we just read, so we can't do it yet because we're still reading its
+right operand.  (For example, we've just read the <CODE>*</CODE> in <CODE>a+b*c</CODE>;
+we're not ready to do either operation until we read the <CODE>c</CODE> later.)
+Push the new operation onto the operation stack, then return to step 2.
+
+<P>Here's how this algorithm works out with the sample expression above.  In
+the data stack, a boxed entry like <IMG SRC="a+b.gif"> means the result from
+translating that subexpression into the object language.
+
+<P><IMG SRC="stack1.gif">
+<BR><IMG SRC="stack2.gif">
+
+<P>The final value on the data stack is the translation of the
+entire expression.
+
+<P>The algorithm so far does not deal with parentheses.  They're handled
+somewhat like operations, but with slightly different rules.  A left
+parenthesis is stored on the operation stack as <CODE>(</CODE><SUB><SMALL>0</SMALL></SUB>, like the
+special marker at the beginning of the expression, but it does not invoke
+step 5 of the algorithm before being pushed on the stack.  A right
+parenthesis <EM>does</EM> invoke step 5, but only as far down the stack as
+the first matching left parenthesis; if it were an ordinary operation of
+precedence zero it would pop everything off the stack.  You might try to
+express precisely how to modify the algorithm to allow for parentheses.
+
+<P>Here are the procedures that embody this algorithm in the compiler.
+<CODE>Pgetunary</CODE> and <CODE>pgetbinary</CODE> output a list like
+
+<P><PRE>[sub 2 2]
+</PRE>
+
+<P>for binary <CODE>-</CODE> or
+
+<P><PRE>[minus 1 4]
+</PRE>
+
+<P>for unary minus.  (I'm leaving out some complications
+having to do with type checking.)  They work by looking for a <CODE>unary</CODE> or
+<CODE>binary</CODE> property on the property list of the operation symbol.
+Procedures with names like <CODE>op.prec</CODE> are selectors for the members
+of these lists.
+
+<P>In this algorithm, only step 5 actually generates any instructions in the
+object program.  This is the step in which an operation is removed from
+the operation stack and actually performed.  Step 5 is carried out by the
+procedure <CODE>ppopop</CODE> (Pascal pop operation); most of that procedure deals
+with code generation, but I've omitted that part of the procedure in the
+following listing because right now we're concerned with the parsing
+algorithm.  We'll return to code generation shortly.
+
+<P><CODE>Pexpr1</CODE> invokes <CODE>pdata</CODE> when it expects to read an operand, which
+could be a number, a variable, or a function call.  <CODE>Pdata</CODE>, which I'm
+not showing here, generates code to make the operand available and
+outputs the location of the result in the simulated computer, in a form
+that can be used by <CODE>pexpr</CODE>.
+
+<P><PRE>to pexpr
+local [opstack datastack parenlevel]
+make &quot;opstack [[popen 1 0]]                       ; step 1
+make &quot;datastack []
+make &quot;parenlevel 0
+output pexpr1
+end
+
+to pexpr1 
+local [token op]
+make &quot;token token                                 ; step 2
+while [equalp :token &quot;|(|] [popen  make &quot;token token]
+make &quot;op pgetunary :token
+if not emptyp :op [output pexprop :op]
+push &quot;datastack pdata :token
+make &quot;token token                                 ; step 3
+while [and (:parenlevel &gt; 0) (equalp :token &quot;|)| )]
+   [pclose  make &quot;token token]
+make &quot;op pgetbinary :token
+if not emptyp :op [output pexprop :op]
+make &quot;peektoken :token
+pclose
+if not emptyp :opstack [(throw &quot;error [too many operators])]
+if not emptyp butfirst :datastack [(throw &quot;error [too many operands])]
+output pop &quot;datastack
+end
+
+to pexprop :op                                    ; step 4
+while [(op.prec :op) &lt; (1 + op.prec first :opstack)] [ppopop]
+push &quot;opstack :op                                 ; step 6
+output pexpr1
+end
+
+to ppopop                                         ; step 5
+local [op function args left right type reg]
+make &quot;op pop &quot;opstack
+make &quot;function op.instr :op
+if equalp :function &quot;plus [stop]
+make &quot;args op.nargs :op
+make &quot;right pop &quot;datastack
+make &quot;left (ifelse equalp :args 2 [pop &quot;datastack] [[[] []]])
+make &quot;type pnewtype :op exp.type :left exp.type :right
+... code generation omitted ...
+push &quot;datastack (list :type &quot;register :reg)
+end
+
+to popen
+push &quot;opstack [popen 1 0]
+make &quot;parenlevel :parenlevel+1
+end
+
+to pclose
+while [(op.prec first :opstack) &gt; 0] [ppopop]
+ignore pop &quot;opstack
+make &quot;parenlevel :parenlevel - 1
+end
+</PRE>
+
+<P><H2>The Simulated Machine</H2>
+
+<P>We're ready to move from parsing to code generation, but first you must
+understand what a computer's native language is like.  Most computer models
+in use today have a very similar structure, although there are differences
+in details.  My simulated computer design makes these detail choices in
+favor of simplicity rather than efficiency.  (It wouldn't be very efficient
+no matter what, compared to real computers.  This &quot;computer&quot; is actually an
+interpreter, written in Logo, which is itself an interpreter.  So we have
+two levels of interpretation involved in each simulated instruction, whereas
+on a real computer, each instruction is carried out directly by the
+hardware.  Our compiled Pascal programs, as you've probably already noticed,
+run very slowly.  That's not Pascal's fault, and it's not even primarily my
+compiler's fault, even though the compiler doesn't include optimization
+techniques.  The main slowdown is in the interpretation of the machine
+instructions.)
+
+<P>Every computer includes a <EM>processor,</EM> which decodes
+instructions and carries out the indicated arithmetic operations, and a
+<EM>memory,</EM> in which information (such as the values of
+variables) is stored.  In modern computers, the processor is generally
+a single <EM>integrated circuit,</EM> nicknamed a <EM>chip,</EM>
+which is a rectangular black plastic housing one or two inches on a side
+that contains thousands or even millions of tiny components made of silicon.
+The memory is usually a <EM>circuit board</EM> containing several memory
+chips.  Computers also include circuitry to connect with input and output
+devices, but we're not going to have to think about those.  What makes one
+computer model different from another is mainly the processor.  If you
+have a PC, its processor is probably an Intel design with a name like
+80486 or Pentium; if you have a Macintosh, the processor might be a Motorola
+68040 or a Power PC chip.
+
+<P>It turns out that the wiring connecting the processor to the memory is
+often the main limiting factor on the speed of a computer.  Things happen at
+great speed within the processor, and within the memory, but only one value
+at a time can travel from one to the other.  Computer designers have invented
+several ways to get around this problem, but the important one for our
+purposes is that every modern processor includes a little bit of memory
+within the processor chip itself.  By &quot;a little bit&quot; I mean that a typical
+processor has enough memory in it to hold 32 values, compared to several
+million values that can be stored in the computer's main memory.  The 32
+memory slots within the processor are called <EM>
+registers.</EM><SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>One current topic in computer architecture research
+is the development of <EM>parallel</EM> computers with many processors working
+together.  In some of these designs, each processor includes its own
+medium-size memory within the processor chip.</SMALL></BLOCKQUOTE></SMALL><P>Whenever you want to perform an arithmetic operation, the operands must
+already be within the processor, in registers.  So, for example, the Pascal
+instruction
+
+<P><PRE>c := a + b
+</PRE>
+
+<P>isn't compiled into a single machine instruction.  First we must
+<EM>load</EM> the values of <CODE>a</CODE> and <CODE>b</CODE> from memory into registers,
+then add the two registers, then <EM>store</EM> the result back into memory:
+
+<P><PRE>rload 8 a
+rload 9 b
+add 10 8 9
+store 10 c
+</PRE>
+
+<P>The first <CODE>rload</CODE> instruction loads the value from memory
+location <CODE>a</CODE> into register 8.<SUP>*</SUP> The <CODE>add</CODE> instruction adds
+the numbers in registers 8 and 9, putting the result into register 10.  (In
+practice, you'll see that the compiler would be more likely to conserve
+registers by reusing one of the operand registers for the result, but for
+this first example I wanted to keep things simple.)  Finally we store the
+result into the variable <CODE>c</CODE> in memory.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Really I should have called this
+instruction <CODE>load</CODE>, but my machine simulator uses Logo procedures to
+carry out the machine instructions, and I had to pick a name that wouldn't
+conflict with the Logo <CODE>load</CODE> primitive.</SMALL></BLOCKQUOTE></SMALL><P>The instructions above are actually not machine language instructions, but
+rather <EM>assembly language</EM> instructions, a kind of shorthand.
+A program called an <EM>assembler</EM> translates assembly language into
+machine language, in which each instruction is represented as a number.
+For example, if the instruction code for <CODE>add</CODE> is <CODE>0023</CODE>, then
+the <CODE>add</CODE> instruction above might be translated into <CODE>0023100809</CODE>,
+with four digits for the instruction code and two digits for each of the three
+register numbers.  (In reality the encoding would use binary numbers rather
+than the decimal numbers I've shown in this example.)  Since a machine
+language instruction is just a number, the instructions that make up a
+computer program are stored in memory along with the program's data values.
+But one of the simplifications I've made in my simulated computer is that
+the simulator deals directly with assembly language instructions, and those
+instructions are stored in a Logo list, separate from the program's data memory.
+
+<P>The simulated computer has 32 processor registers plus 3000 locations of
+main memory; it's a very small computer, but big enough for my sample
+Pascal programs.  (You can change these sizes by editing procedure <CODE>
+opsetup</CODE> in the compiler.)  The registers are numbered from 0 to 31, and
+the memory locations are numbered from 0 to 2999.  The number of a memory
+location is called its <EM>address.</EM>  Each memory location can hold
+one numeric value.<SUP>*</SUP>  A Pascal array will be represented by a contiguous block of
+memory locations, one for each member of the array.  Each register, too, can
+hold one numeric value.  In this machine, as in some real computers, register
+number 0 is special; it always contains the value zero.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>This, too, is a simplification.  In real computers,
+different data types require different amounts of memory.  A character
+value, for example, fits into eight <EM>bits</EM> (binary digits) of memory,
+whereas an integer requires 32 bits in most current computers.  Instead of a
+single <CODE>load</CODE> instruction, a real computer has a separate one for each
+datum size.</SMALL></BLOCKQUOTE></SMALL><P>The simulated computer understands 50 instruction codes, fewer than most
+real computers.  The first group we'll consider are the 14 binary arithmetic
+instructions: <CODE>add</CODE>, <CODE>sub</CODE>, <CODE>mul</CODE>, <CODE>div</CODE> (real quotient),
+<CODE>quo</CODE> (integer quotient), <CODE>rem</CODE> (remainder), <CODE>land</CODE> (logical
+and), <CODE>lor</CODE> (logical or), <CODE>eql</CODE> (compare two operands for equality),
+<CODE>neq</CODE> (not equal), <CODE>less</CODE>, <CODE>gtr</CODE> (greater than), <CODE>leq</CODE> (less
+than or equal), and <CODE>geq</CODE> (greater than or equal).  The result of each
+of the six comparison operators is <CODE>0</CODE> for false or <CODE>1</CODE> for true.
+The machine also has four unary arithmetic instructions: <CODE>lnot</CODE>
+(logical not), <CODE>sint</CODE> (truncate to integer), <CODE>sround</CODE> (round to
+integer), and <CODE>srandom</CODE>.  Each of these 18 arithmetic instructions takes
+its operands from registers and puts its result into a register.
+
+<P>All but the last three of these are typical instructions of real
+computers.<SUP>*</SUP>
+(Not every computer has all of them; for example, if a computer has <CODE>eql</CODE>
+and <CODE>lnot</CODE>, then it doesn't really need a <CODE>neq</CODE> instruction because
+the same value can be computed by a sequence of two instructions.)  The
+operations <CODE>sint</CODE>, <CODE>sround</CODE>, and <CODE>srandom</CODE> are less likely to be
+machine instructions on actual computers.  On the other hand, most real
+computers have a <EM>system call</EM> mechanism, which is a machine
+instruction that switches the computer from the user's program to a part of
+the operating system that performs some task on behalf of the user.  System
+calls are used mainly for input and output, but we can pretend that there are
+system calls to compute these Pascal library functions.  (The letter <CODE>s</CODE>
+in the instruction names stands for &quot;system call&quot; to remind us.)
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>One important simplification is that in the simulated
+computer, the same instructions are used for all kinds of numbers.  A typical
+computer has three <CODE>add</CODE> instructions: one for integers, one for short
+reals (32 bits), and one for long reals (64 bits).</SMALL></BLOCKQUOTE></SMALL><P>The simulated computer also has another set of 18 <EM>immediate</EM>
+instructions, with the letter <CODE>i</CODE> added to the instruction name: <CODE>
+addi</CODE>, <CODE>subi</CODE>, and so on.  In these instructions, the rightmost operand
+in the instruction is the actual value desired, rather than the number of
+a register containing the operand.  For example,
+
+<P><PRE>add 10 8 9
+</PRE>
+
+<P>means, &quot;add the number in register 8 and the number in register 9,
+putting the result into register 10.&quot;  But
+
+<P><PRE>addi 10 8 9
+</PRE>
+
+<P>means, &quot;add the number in register 8 to the value 9, putting
+the result in register 10.&quot;
+
+<P>It's only the right operand that can be made immediate.  So, for example,
+the Pascal assignment
+
+<P><PRE>y := x - 5
+</PRE>
+
+<P>can be translated into
+
+<P><PRE>rload 8 x
+subi 8 8 5
+store 8 y
+</PRE>
+
+<P>but the Pascal assignment
+
+<P><PRE>y := 5 - x
+</PRE>
+
+<P>must be translated as
+
+<P><PRE>addi 8 0 5
+rload 9 x
+sub 8 8 9
+store 8 y
+</PRE>
+
+<P>This example illustrates one situation in which it's useful to
+have register 0 guaranteed to contain the value 0.
+
+<P>Our simulated machine has six more system call instructions having to do
+with printing results.  One of them, <CODE>newline</CODE>, uses no operands and
+simply prints a newline character, moving to the beginning of a new line
+on the screen.  Four more are for printing the value in a register; the
+instruction used depends on the data type of the value in the register.
+The instructions are <CODE>putch</CODE> for a character, <CODE>puttf</CODE> for a boolean
+(true or false) value, <CODE>putint</CODE> for an integer, and <CODE>putreal</CODE> for a
+real number.  Each takes two operands; the first, an immediate value, gives
+the minimum width in which to print the value, and the second is a register
+number.  So the instruction
+
+<P><PRE>putint 10 8
+</PRE>
+
+<P>means, &quot;print the integer value in register 8, using at least
+10 character positions on the line.&quot;  The sixth printing instruction,
+<CODE>putstr</CODE>, is used only for constant character strings in the Pascal
+program; its first operand is a width, as for the others, but its second
+is a Logo list containing the string to print:
+
+<P><PRE>putstr 1 [The shuffled deck:]
+</PRE>
+
+<P>This is, of course, unrealistic; in a real computer the second
+operand would have to be the memory address of the beginning of the
+array of characters to print.  But the way I handle printing isn't very
+realistic in any case; I wanted to do the simplest possible thing, because
+worrying about printing really doesn't add anything to your understanding
+of the process of compilation, which is the point of this chapter.
+
+<P>The next group of instructions has to do with the flow of control in the
+computer program.  Ordinarily the computer carries out its instructions
+in sequence, that is, in the order in which they appear in the program.
+But in order to implement conditionals (such as <CODE>if</CODE>), loops (such as
+<CODE>while</CODE>), and procedure calls, we must be able to jump out of sequence.
+The <CODE>jump</CODE> instruction takes a single operand, a <EM>label</EM>
+that appears somewhere in the program.  When the computer carries out a jump
+instruction, it looks for the specified label and starts reading instructions
+just after where that label appears in the program.  (We saw an example of
+labels at the beginning of this chapter.)
+
+<P>The <CODE>jump</CODE> instruction is used for unconditional jumps.  In order to
+implement conditionals and loops, we need a way to jump if some condition
+is true.  The instruction <CODE>jumpt</CODE> (jump if true) has two operands,
+a register number and a label.  It jumps to the specified label if and only
+if the given register contains a true value.  (Since registers hold only
+numbers, we use the value 1 to represent true, and 0 to represent false.)
+Similarly, <CODE>jumpf</CODE> jumps if the value in the given register is false.
+
+<P>For procedure and function calls, we need a different mechanism.  The jump
+is unconditional, but the computer must remember where it came from, so that
+it can continue where it left off once the called procedure or function
+returns.  The instruction <CODE>jal</CODE> (jump and link) takes two operands, a
+register and a label.  It puts into the register the address of the
+instruction following the <CODE>jal</CODE> instruction.<SUP>*</SUP> Then it jumps to the specified label.
+To return from the called procedure, we use the <CODE>jr</CODE> (jump register)
+instruction.  It has one operand, a register number; it jumps to the
+instruction whose address is in the register.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In a real computer,
+each instruction is stored in a particular memory location, so the address
+of an instruction is the address of the memory location in which it's stored.
+In this simulated computer, I keep the program in the form of a Logo list,
+and so I cheat and put the sublist starting at the next instruction into
+the register.  This isn't quite as much of a cheat as it may seem, though,
+since you know from Chapter 3 that Logo represents a list with the memory
+address of the first pair of the list.</SMALL></BLOCKQUOTE></SMALL><P>One final instruction that affects the flow of control is the <CODE>exit</CODE>
+system call.  It requires no operands; it terminates the running of the
+program.  In this simulated computer, it returns to a Logo prompt; in a
+real computer, the operating system would start running another user program.
+
+<P>The only remaining instructions are <CODE>rload</CODE> and <CODE>store</CODE>.  You already
+know what these do, but I've been showing them in oversimplified form so far.
+The second operand can't just be a variable name, because that variable might
+not be in the same place in memory every time the procedure is called. Think,
+for example, about a recursive procedure.  Several invocations may be in
+progress at once, all of them carrying out the same compiled instructions,
+but each referring to a separate set of local variables.  The solution to
+this problem is that the compiler arranges to load into a register
+the address of a block of memory containing all the local variables for a
+given procedure call.  If the variable <CODE>c</CODE>, for example, is in the sixth
+memory location of that block, an instruction to load or store that variable
+must be able to say &quot;the memory location whose address is the contents of
+register 4 (let's say) plus five.&quot; So each load and store instruction
+contains an <EM>index register</EM> in parentheses following an
+<EM>offset</EM> to be added to the contents of that register.  We'd say
+
+<P><PRE>store 8 5(4)
+</PRE>
+
+<P>to store the contents of register 8 into the variable <CODE>c</CODE>,
+provided that register 4 points to the correct procedure invocation's
+local variables and that <CODE>c</CODE> is in the sixth position in the block.
+(The first position in the block would have offset 0, and so on.)
+
+<P><H2>Stack Frames</H2>
+
+<P>The first step in invoking a procedure or function is to set aside, or
+<EM>allocate,</EM> a block of memory locations for use by that invocation.
+This block will include the procedure's local variables, its arguments, and
+room to save the values of registers as needed.  The compiler's data
+structures include, for each procedure, how much memory that procedure needs
+when it's invoked.  That block of memory is called a <EM>frame.</EM>
+
+<P>In most programming languages, including Pascal and Logo (but not, as it
+turns out, Lisp), the frame allocated when a procedure invocation begins can
+be released, or <EM>deallocated,</EM> when that invocation returns to its
+caller.  In other words, the procedure's local variables no longer exist
+once the invocation is finished.  In these languages, the frames for all the
+active procedure invocations can be viewed as a <EM>stack,</EM> a data structure
+to which new elements are added by a Push operation, and elements are removed
+using a Pop operation that removes the most recently pushed element.  (In
+this case, the elements are the frames.)  That is, suppose that procedure A
+invokes B, which invokes C, which invokes D.  For each of these invocations
+a new frame is pushed onto the stack.  Which procedure finishes first?  It
+has to be D, the last one invoked.  When D returns, its frame can be popped
+off the stack.  Procedure C returns next, and its frame is popped, and so on.
+The phrase <EM>stack frame</EM> is used to refer to frames that
+behave like elements of a stack.
+
+<P>My Pascal compiler allocates memory starting at location 0 and working
+upward.  At the beginning of the program, a <EM>global frame</EM> is allocated
+to hold the program's global variables.  Register 3, the
+<EM>global pointer,</EM> always contains the
+address of the beginning of the global frame, so that every procedure can
+easily make use of global variables.  (Since the global frame is the first
+thing in memory, its address is always zero, so the value in register 3 is
+always 0.  But in a more realistic implementation the program itself would
+appear in memory before the global frame, so its address would be greater
+than zero.)  
+
+<P>At any point in the program, register 4, the <EM>frame pointer,</EM>
+contains the address of the beginning of the current frame, that is, the
+frame that was created for the current procedure invocation.  Register 2,
+the <EM>stack pointer,</EM> contains the address of the first
+currently unused location in memory.
+
+<P>My compiler is a little unusual in that when a procedure is called, the
+stack frame for the new invocation is allocated by the caller, not by the
+called procedure.  This simplifies things because the procedure's arguments
+can be stored in its own frame; if each procedure allocates its own frame,
+then the caller must store argument values in its (the caller's) frame,
+because the callee's frame doesn't exist yet.  So, in my compiler, the
+first step in a procedure call is to set register 5, the <EM>new frame
+pointer,</EM> to point to the first free memory location, and change the
+stack pointer to allocate the needed space.  If <CODE>N</CODE> memory locations
+are needed for the new frame, the calling procedure will contain the
+following instructions:
+
+<P><PRE>add 5 2 0
+addi 2 2 N
+</PRE>
+
+<P>The first instruction copies the value from register 2 (the
+first free memory location) into register 5; the second adds <CODE>N</CODE> to
+register 2.  (I've left out a complication, which is that the old value
+in register 5 must be saved somewhere before putting this new value
+into it.  You can read the code generation instructions at the beginning
+of <CODE>pproccall1</CODE>, in the program listing at the end of the chapter,
+for all the details.)  The current frame pointer is also saved in
+location 3 of the new frame:
+
+<P><PRE>store 4 3(5)
+</PRE>
+
+<P>The compiler uses data abstraction to refer to these register
+numbers and frame slots; for example, the procedure <CODE>reg.frameptr</CODE> takes
+no arguments and always outputs 4, while <CODE>frame.prevframe</CODE> outputs 3.
+
+<P>The next step is to put the argument values into the new frame.  During
+this process, the calling procedure must use register 4 to refer to its own
+variables, and register 5 to refer to the callee's variables.  The final
+step, just before calling the procedure, is to make the
+frame pointer (register 4) point to the new frame:
+
+<P><PRE>add 4 5 0
+</PRE>
+
+<P>Once the caller has set up the new frame and saved the necessary registers,
+it can call the desired procedure, putting the return address in register 1:
+
+<P><PRE>jal 1 &quot;proclabel
+</PRE>
+
+<P>The first step in the called procedure is to save the return
+address in location zero of its frame:
+
+<P><PRE>store 1 0(4)
+</PRE>
+
+<P>The procedure then carries out the instructions in its body.  When it's
+ready to return, it must load the saved return address back into register
+1, then restore the old stack pointer and frame pointer to deallocate
+its frame, and finally return to the caller:
+
+<P><PRE>rload 1 0(4)
+add 2 4 0
+rload 4 3(2)
+jr 1
+</PRE>
+
+<P>(Procedure <CODE>proc1</CODE> in the compiler generates these
+instructions for each procedure.)
+
+<P>One final complication about stack frames comes from Pascal's block
+structure.  Suppose we have a program with internal procedures arranged
+in this structure:
+
+<P><CENTER><IMG SRC="blocks.gif" ALT="figure: blocks"></CENTER>
+
+<P>Then suppose that the main program calls procedure A, which
+calls B, which calls C, which calls itself recursively.  The current (inner)
+invocation of C has access to its own variables, those of procedure A, and
+the global variables, but not to procedure B's variables.  How does
+procedure C know where procedure A's stack frame is located?  The answer is
+that every frame, in addition to saving a pointer to the previous frame,
+must include a pointer to the <EM>lexically enclosing</EM> frame.  The
+calling procedure sets this up; it can do this because it knows its own
+lexical depth and that of the called procedure.  For example, when procedure
+B calls procedure C, C's lexically enclosing frame will be the same as B's
+(namely, the frame for the invocation of A), because B and C are at the
+same lexical depth.  (They are both declared inside A.)  But when procedure
+A calls procedure B, which is declared within itself, A must store its own
+frame pointer as B's lexically enclosing frame.  Here is a picture of what's
+where in memory:
+
+<P><CENTER><IMG SRC="memory.gif" ALT="figure: memory"></CENTER>
+
+<P>If all these pointers between frames confuse you, it might help to keep in
+mind that the two kinds of pointers have very different purposes.  The
+pointer to the previous frame is used only when a procedure returns, to
+help in putting everything back the way it was before the procedure was
+called (in particular, restoring the old value of register 4).  The pointer
+to the lexically enclosing frame is used while the procedure is running,
+whenever the procedure makes reference to a variable that belongs to some
+outer procedure (for example, a reference in procedure B or C to a variable
+that belongs to procedure A).<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>If procedures used the previous-frame
+pointers to make variable references, we would be compiling a dynamically
+scoped language!  In this example, because Pascal is lexically scoped,
+procedure C can't refer to procedure B's variables, even though B called C.</SMALL></BLOCKQUOTE></SMALL><P><H2>Data Structures</H2>
+
+<P>In this section I'll describe the main data structures used during
+compilation (abstract data types for identifiers and for expressions)
+and during the running of the program (registers and frames).
+
+<P>The main body of information that the compiler must maintain is the list of
+Pascal identifiers (variable, procedure, and function names).  Since Pascal
+is lexically scoped, some attention is necessary to ensure that each compiled
+Pascal procedure has access to precisely the variables that it should.
+At any point during the compilation, the value of <CODE>:idlist</CODE> is a list of
+just those identifiers that may be used in the part of the program being
+compiled.  We'll see in a moment how that's accomplished.
+
+<P>There are two main categories of identifier: procedure names (including the
+main program and functions in this category) and variable names.  The
+information maintained for a procedure name looks like this example:
+
+<P><PRE>[myproc procedure %myproc [2 46]]
+</PRE>
+
+<P>The first member of this list is the Pascal name of the program,
+procedure, or function.  The second member is the type indicator, which
+will be one of the words <CODE>program</CODE>, <CODE>procedure</CODE>, or <CODE>function</CODE>.
+The third member is the procedure's &quot;Logo name,&quot; the unique name used within
+the compiler to represent this program or procedure.  The program's Logo name
+is used as the variable name whose value will be the compiled program; the
+Logo names for procedures and functions are used as the labels in the
+compiled program at which each procedure or function begins.  The fourth
+member of the list contains the frame information for the procedure; it's
+a list of two numbers, the lexical depth and the frame size.  The lexical
+depth is 0 for the main program, 1 for a procedure declared inside the
+main program, 2 for a procedure declared inside a depth-1 procedure, and
+so on.  The frame size indicates how many memory locations must be allocated
+for each invocation of the procedure.  (For the main program, the frame size
+indicates the size of the global frame.)
+
+<P>Because of the Pascal scope rules, there can be two procedures with the same
+name, each declared within a different region of the program.  But there is
+no scoping of labels in the compiled program; each label must be unique.
+The simplest solution would be to use a distinct program-generated name for
+every Pascal procedure; the Pascal <CODE>doit</CODE> would become the
+Logo <CODE>g14</CODE>.  In fact I chose to modify this approach somewhat.  When an
+identifier <CODE>symbol</CODE> is declared in the source program, the compiler
+looks to see whether another identifier with the same name has appeared
+anywhere in the program.  If not, the Logo name <CODE>%symbol</CODE> is used; if
+so, a generated symbol is used.  This rule makes the compiled
+program a little easier to read, while preserving the rule that all Logo
+names must be unique.  The percent sign in <CODE>%symbol</CODE> ensures that this
+Logo name doesn't conflict with any names used in the
+compiler itself.  Procedure <CODE>newlname</CODE> in the compiler takes a Pascal
+identifier as input and generates a new Logo name to correspond.
+
+<P>The selectors <CODE>id.type</CODE>, <CODE>id.lname</CODE>, and <CODE>id.frame</CODE> are used
+for the second through fourth members of these lists.  There's no selector
+for the first member, the Pascal name, because the compiler never
+extracts this information explicitly.  Instead, the Pascal name is used
+by procedure <CODE>getid</CODE>, which takes a Pascal name as its input and
+returns the corresponding identifier list.
+
+<P>For variable names, the identifier information looks a little different:
+
+<P><PRE>[i integer [1 41] false]
+</PRE>
+
+<P>The first two members of this list are the Pascal name and the
+type, the same as for a procedure.  The third member is the <EM>pointer</EM>
+information for the variable: its lexical depth and the offset within
+a frame where it should be kept.  The compiler will use this information
+to issue instructions to load or store the value of the variable.  The
+fourth member of the list is <CODE>true</CODE> if this variable is a <CODE>var</CODE>
+(call by reference) parameter, <CODE>false</CODE> otherwise.
+
+<P>The variable <CODE>i</CODE> above has a scalar type, so its type indicator is
+a word.  Had it been an array, the type indicator would be a list such as
+
+<P><PRE>[integer [0 6] [5 3]]
+</PRE>
+
+<P>for a variable declared as <CODE>array [0..5, 5..7] of integer</CODE>.
+
+<P>For each dimension of the array, the first number in the list
+is the smallest possible index, while the second number is the number of
+possible index values in this dimension.  That is, the range <CODE>[3..7]</CODE>
+is represented by the list <CODE>[3 5]</CODE> because there are five possible
+values starting from 3.  Notice that there is no &quot;Logo name&quot; for a
+variable; in the compiled program, a variable is represented as an
+offset and an index register, such as <CODE>41(4)</CODE>.
+
+<P>For variables, the selectors used are <CODE>id.type</CODE>, <CODE>id.pointer</CODE>,
+and <CODE>id.varp</CODE>.
+
+<P>The information about currently accessible identifiers is kept in the list
+<CODE>idlist</CODE>.  This variable holds a list of lists; each Pascal identifier
+is represented by a list as indicated above.  <CODE>Idlist</CODE> is a local
+variable in the compiler procedures <CODE>program</CODE>, <CODE>procedure</CODE>, and <CODE>
+function</CODE>.  That is, there is a separate version for each block of the
+Pascal source program.  Each local version starts out with the same value as
+the higher-level version; identifiers declared within a block are added to
+the local version but not to the outer one.  When the compiler finishes a
+block, the (Logo) procedure in charge of that block stops and the outer <CODE>
+idlist</CODE> becomes current again.
+
+<P>This arrangement may or may not seem strange to you.  Recall that we had to
+invent this <CODE>idlist</CODE> mechanism because Pascal's
+lexical scope is different from Logo's dynamic scope.  The reason we have
+these different versions of <CODE>idlist</CODE> is to keep track of which
+identifiers are lexically available to which blocks.  And yet we are using
+Logo's dynamic scope to determine which <CODE>idlist</CODE> is available at any
+point in the compilation.  The reason this works is that <EM>the
+dynamic environment at compile time reflects the
+lexical environment at run time.</EM> For example, in the <CODE>tower</CODE>
+program, the fact that <CODE>tower</CODE> <EM>contains</EM> <CODE>hanoi</CODE>, which in
+turn contains <CODE>movedisk</CODE>, is reflected in the fact that <CODE>program</CODE>
+(compiling <CODE>tower</CODE>) <EM>invokes</EM> <CODE>procedure</CODE> (compiling <CODE>
+hanoi</CODE>), which in turn <EM>invokes</EM> <CODE>procedure</CODE> recursively
+(compiling <CODE>movedisk</CODE>).  Earlier I said that lexical scope is easier for
+a compiler than dynamic scope; this paragraph may help you see why that's
+true.  Even dynamically scoped Logo naturally falls into providing lexical
+scope for a Pascal compiler.
+
+<P>Here is how procedure and function declarations are compiled:
+
+<P><PRE>to procedure
+proc1 &quot;procedure framesize.proc
+end
+
+to function
+proc1 &quot;function framesize.fun
+end
+
+to proc1 :proctype :framesize
+localmake &quot;procname token
+localmake &quot;lexical.depth :lexical.depth+1
+localmake &quot;frame (list :lexical.depth 0)
+push &quot;idlist (list :procname :proctype (newlname :procname) :frame)
+localmake &quot;idlist :idlist
+ ...
+end
+</PRE>
+
+<P>(I'm leaving out the code generation part for now.)  What I want
+to be sure you understand is that the <CODE>push</CODE> instruction adds the new
+procedure name to the <EM>outer</EM> <CODE>idlist</CODE>; after that, it creates a
+new <CODE>idlist</CODE> whose initial value is the same as the old one.  It's very
+important that the instruction
+
+<P><PRE>localmake &quot;idlist :idlist
+</PRE>
+
+<P>comes where it does and not at the beginning of the procedure.
+<CODE>Proc1</CODE> needs access to the outer <CODE>idlist</CODE> when it starts, and
+then later it &quot;shadows&quot; that variable with its own local version.  This
+example shows that Logo's <CODE>local</CODE> command really is an executable
+command and not a declaration like Pascal's <CODE>var</CODE> declaration.  In
+Pascal it would be unthinkable to declare a new local variable in the middle
+of a block.
+
+<P><CODE>Getid</CODE> depends on Logo's dynamic scope to give it access to the right
+version of <CODE>idlist</CODE>.  Think about writing a Pascal compiler in Pascal.
+There would be a large block for <CODE>program</CODE> with many other procedures
+inside it.  Two of those inner procedures would be the ones for <CODE>
+procedure</CODE> and <CODE>function</CODE>.  (Of course they couldn't have those names,
+because they're Pascal reserved words.  They'd be called <CODE>
+compileprocedure</CODE> or some such thing.  But I think this will be easier to
+follow if I stick with the names used in the Logo version of the compiler.)
+Those two procedures should be at the same level of block structure; neither
+should be lexically within the other.  That's because a Pascal procedure
+block can include a function definition or vice versa.  Now, where in the
+lexical structure does <CODE>getid</CODE> belong?  It needs access to the local
+<CODE>idlist</CODE> of either <CODE>procedure</CODE> or <CODE>function</CODE>, whichever is
+currently active.  Similarly, things like <CODE>statement</CODE> need to be
+lexically within both <CODE>procedure</CODE> and <CODE>function</CODE>, and actually also
+within <CODE>program</CODE> because the outermost program block has statements too.
+It would theoretically be possible to solve the problem by writing three
+identical versions of each of these subprocedures, but that solution is too
+horrible to contemplate.  Instead a more common technique is to have only
+one <CODE>idlist</CODE> variable, a global one, and write the compiler so that it
+explicitly maintains a stack of old values of that variable.  The Pascal
+programmer has to do the work that the programming language should be doing
+automatically.  This is an example in which dynamic scope, while not
+absolutely essential, makes the program much easier to write and more
+straightforward to understand.
+
+<P>For every procedure or function in the Pascal source program, the compiler
+creates a global Logo variable with the same name as the corresponding
+label--that is, either a percent-prefix name or a generated symbol.  The
+value of this variable is a list of types, one for each argument to the
+procedure or function.  (For a function, the first member of the list is the
+type of the function itself; the butfirst is the list of types of its
+arguments.)  The compiler examines this &quot;type signature&quot; variable when a
+procedure or function is invoked, to make sure that the types of the actual
+arguments match the types of the formal parameters.
+
+<P>The other important compile-time data structure is the one that represents
+a compiled expression.  When the compiler calls <CODE>pexpr</CODE>, its job is to
+parse an expression from the Pascal source program and generate code to
+compute (when the compiled program runs!) the value of the expression.
+
+The generated code leaves the computed value in some register.  What <CODE>
+pexpr</CODE> returns to its caller is a data structure indicating which register
+and what type the expression has, like this:
+
+<P>
+
+<P><PRE>[real register 8]
+</PRE>
+
+<P>The first member of this list is the type of the expression.
+Most of the time, the second member is the word <CODE>register</CODE> and the
+third member is the register number in which the expression's value
+can be found.  The only exception is for a constant expression; if
+the expression is, for example, <CODE>15</CODE> then <CODE>pexpr</CODE> will output
+
+<P><PRE>[integer immediate 15]
+</PRE>
+
+<P>For the most part, these immediate expressions are useful
+only within recursive calls to <CODE>pexpr</CODE>.  In compiling the Pascal
+assignment
+
+<P><PRE>x := 15
+</PRE>
+
+<P>we're going to have to get the value 15 into a register anyway
+in order to be able to store it into <CODE>x</CODE>; the generated code will be
+something like
+
+<P><PRE>addi 7 0 15
+store 7 48(4)
+</PRE>
+
+<P>An immediate expression is most useful in compiling something like
+
+<P><PRE>x := a+15
+</PRE>
+
+<P>in which we can avoid loading the value 15 into a register, but
+can directly add it to the register containing <CODE>a</CODE>:
+
+<P><PRE>rload 7 53(4)
+addi 7 7 15
+store 7 48(4)
+</PRE>
+
+<P>The members of an expression list are examined using the selectors <CODE>
+exp.type</CODE>, <CODE>exp.mode</CODE> (the word <CODE>register</CODE> or <CODE>immediate</CODE>),
+and <CODE>exp.value</CODE> (the register number or immediate value).
+
+<P>In this compiler an &quot;expression&quot; is always a
+<EM>scalar</EM> type; although the formal definition of Pascal allows for
+array expressions, there are no operations that act on arrays the way
+operations like <CODE>+</CODE> act on scalars, and so an array expression can only
+be the name of an array variable.  (<EM>Members</EM> of arrays can, of
+course, be part of a scalar expression.)  <CODE>Passign</CODE>, the compiler
+procedure that handles assignment statements, first checks for the special
+case of an array assignment and then, only if the left side of the
+assignment is a scalar, invokes <CODE>pexpr</CODE> to parse a scalar expression.
+
+<P>In order to understand the code generated by the compiler, you should also
+know about the <EM>runtime</EM> data structures used by compiled programs.
+First, certain registers are reserved for special purposes:
+
+<P><TABLE>
+<TR><TH align="right">number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">name<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">purpose
+<TR><TD>&nbsp;
+<TR><TD align="right">0<TD><TD><CODE>reg.zero</CODE><TD><TD>always contains zero
+<TR><TD align="right">1<TD><TD><CODE>reg.retaddr</CODE><TD><TD>return address from procedure call
+<TR><TD align="right">2<TD><TD><CODE>reg.stackptr</CODE><TD><TD>first free memory address
+<TR><TD align="right">3<TD><TD><CODE>reg.globalptr</CODE><TD><TD>address of global frame
+<TR><TD align="right">4<TD><TD><CODE>reg.frameptr</CODE><TD><TD>address of current frame
+<TR><TD align="right">5<TD><TD><CODE>reg.newfp</CODE><TD><TD>address of frame being made for procedure call
+<TR><TD align="right">6<TD><TD><CODE>reg.retval</CODE><TD><TD>return value from function
+<TR><TD align="right">7<TD><TD><CODE>reg.firstfree</CODE><TD><TD>first register available for expressions
+</TABLE>
+
+<P>We've already seen most of these while discussing stack frames.
+A Pascal function returns its result in register 6; the caller immediately
+copies the return value into some other register so that it won't be
+lost if the program calls another function, for a case like
+
+<P><PRE>x := f(3)+f(4)
+</PRE>
+
+<P>Whenever a register is needed to hold some computed value, the compiler
+calls the Logo procedure <CODE>newregister</CODE>, which finds the first register
+number starting from 7 that isn't currently in use.  When the value in
+a register is no longer needed, the compiler calls <CODE>regfree</CODE> to indicate
+that that register can be reassigned by <CODE>newregister</CODE>.
+
+<P>The other noteworthy runtime data structure is the use of slots within each
+frame for special purposes:
+
+<P><TABLE>
+<TR><TH align="right">number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">name<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">purpose
+<TR><TD>&nbsp;
+<TR><TD align="right">0<TD><TD><CODE>frame.retaddr</CODE><TD><TD>address from which this procedure was called
+<TR><TD align="right">1<TD><TD><CODE>frame.save.newfp</CODE><TD><TD>saved register 3 while filling this new frame
+<TR><TD align="right">2<TD><TD><CODE>frame.outerframe</CODE><TD><TD>the frame lexically enclosing this one
+<TR><TD align="right">3<TD><TD><CODE>frame.prevframe</CODE><TD><TD>the frame from which this one was called
+<TR><TD align="right">4-35<TD><TD><CODE>frame.regsave</CODE><TD><TD>space for saving registers
+<TR><TD align="right">36<TD><TD><CODE>frame.retval</CODE><TD><TD>function return value
+</TABLE>
+
+<P>Why is there both a register and a frame slot for a function's return
+value?  Remember that the way you indicate the return value in a Pascal
+function is by assigning to the function's name as if it were a variable.
+Such an assignment is not necessarily the last instruction in the function;
+it may do more work after computing the return value.  The compiler notices
+as assignment to the function name and generates code to save the computed
+value in slot 36 of the current frame.  Then, when the function actually
+returns, the compiler generates the instruction
+
+<P><PRE>rload 6 36(4)
+</PRE>
+
+<P>to copy the return value into register 6.  The function's frame
+is about to be freed, so the caller can't look there
+for the return value; that's why a register is used.
+
+<P>Each frame includes a block of space for saving registers when another
+procedure is called.  That's because each procedure allocates register
+numbers independently; each starts with register 7 as the first free one.
+So if the registers weren't saved before a procedure call and restored
+after the call, the values in the registers would be lost.  (Although
+the frame has enough room to save all 32 registers, to make things simple,
+not all 32 are actually saved.  The compiler knows which registers contain
+active expression values at the moment of the procedure call, and it
+generates code to save and restore only the necessary ones.)
+
+<P>You might think it would be easier to have each procedure use a separate
+set of registers, so saving wouldn't be necessary.  But this
+doesn't work for two reasons.  First, there are only a few registers, and
+in a large program we'd run out.  Even more important, the compiled
+code for a <EM>recursive</EM> procedure is going to use the same registers
+in each invocation, so we certainly can't avoid saving registers in that
+situation.
+
+<P><H2>Code Generation</H2>
+
+
+<P>Let's look again at how the compiler handles a Pascal <CODE>if</CODE> statement:
+
+<P><PRE>to pif
+local [cond elsetag endtag]
+make &quot;cond pboolean pexpr
+make &quot;elsetag gensym
+make &quot;endtag gensym
+mustbe &quot;then
+code (list &quot;jumpf :cond (word &quot;&quot; :elsetag))
+regfree :cond
+statement
+code (list &quot;jump (word &quot;&quot; :endtag))
+code :elsetag
+ifbe &quot;else [statement]
+code :endtag
+end
+</PRE>
+
+<P>I showed you this procedure while talking about parsing, asking you to
+ignore the parts about code generation.  Now we'll come back to that part of
+the process.
+
+<P>The format of the <CODE>if</CODE> statement is either of these:
+
+<P><PRE>if <EM>condition</EM> then <EM>statement</EM>
+if <EM>condition</EM> then <EM>statement</EM> else <EM>statement</EM>
+</PRE>
+
+<P>(There is probably a semicolon after the statement, but it's
+not officially part of the <CODE>if</CODE>; it's part of the compound statement
+that contains the <CODE>if</CODE>.)  When we get to <CODE>pif</CODE>, the compiler has
+already read the token <CODE>if</CODE>; the next thing to read is an expression,
+which must be of type <CODE>boolean</CODE>, providing the condition part of the
+statement.
+
+<P>In the instruction
+
+<P><PRE>make &quot;cond pboolean pexpr
+</PRE>
+
+<P>the call to <CODE>pexpr</CODE> generates code for the expression and
+returns an expression list, in the format shown earlier.  The procedure <CODE>
+pboolean</CODE> does three things:  First, it checks the mode of the expression;
+if it's immediate, the value is loaded into a register.  Second, it checks
+the type of the expression to ensure that it really is boolean.  Third,
+<CODE>pboolean</CODE> returns just the register number, which will be used in code
+generated by <CODE>pif</CODE>.
+
+<P><PRE>to pboolean :expr [:pval noimmediate :expr]
+if equalp exp.type :pval &quot;boolean [output exp.value :pval]
+(throw &quot;error sentence exp.type :pval [not true or false])
+end
+
+to noimmediate :value
+if equalp exp.mode :value &quot;immediate ~
+   [localmake &quot;reg newregister
+    code (list &quot;addi :reg reg.zero exp.value :value)
+    output (list exp.type :value &quot;register :reg)]
+output :value
+end
+</PRE>
+
+<P>Overall, the code compiled for the <CODE>if</CODE> statement will look like this:
+
+<P><PRE>    ... get condition into register <EM>cond</EM> ...
+    jumpf <EM>cond</EM> &quot;g5
+    ... code for <CODE>then</CODE> statement ...
+    jump &quot;g6
+g5
+    ... code for <CODE>else</CODE> statement ...
+g6
+</PRE>
+
+<P>The labels <CODE>g5</CODE> and <CODE>g6</CODE> in this example are generated
+symbols; they'll be different each time.  The labels are generated by the
+instructions
+
+<P><PRE>make &quot;elsetag gensym
+make &quot;endtag gensym
+</PRE>
+
+<P>in <CODE>pif</CODE>.  After we call <CODE>pexpr</CODE> to generate the code
+for the conditional expression, we explicitly generate the <CODE>jumpf</CODE>
+instruction:
+
+<P><PRE>code (list &quot;jumpf :cond (word &quot;&quot; :elsetag))
+regfree :cond
+</PRE>
+
+<P>Notice that once we've generated the <CODE>jumpf</CODE> instruction, we
+no longer need the value in register <CODE>:cond</CODE>, and we call <CODE>regfree</CODE>
+to say so.  The rest of this code generation process should be easy to work
+out.  All of the structured statements (<CODE>for</CODE>, <CODE>while</CODE>, and <CODE>
+repeat</CODE>) are similarly simple.
+
+<P>The code generation for expressions is all in <CODE>ppopop</CODE>.  Most of the
+complexity of dealing with expressions is in the parsing, not in the code
+generation; by the time we get to <CODE>ppopop</CODE>, we know that we want to
+carry out a single operation on two values, both of which are either in
+registers or immediate values.  The simple case is that both are in
+registers; suppose, for example, that we are given the subtraction operation
+and the two operands are in registers 8 and 9.  Then we just generate the
+instruction
+
+<P><PRE>sub 8 8 9
+</PRE>
+
+<P>and declare register 9 free.  <CODE>Ppopop</CODE> is a little long,
+because it has to check for special cases such as immediate operands.
+Also, a unary minus is turned into a subtraction from register zero,
+since there is no unary <CODE>minus</CODE> operation in our simulated machine.
+
+<P>Ironically, it's the &quot;simple&quot; statements that are hardest to
+compile: assignment and procedure calling.  For procedure (or function)
+calling, the difficulty is in matching actual argument expressions with
+formal parameters.  Procedure <CODE>pproccall1</CODE> generates the instructions to
+manipulate frame pointers, as described earlier, and procedure <CODE>
+procargs</CODE> fills the newly-created frame with the actual argument values.
+(If an argument is an array passed by value, each member of the array must
+be copied into the new frame.)  Assignment, handled by procedure <CODE>
+passign</CODE> in the compiler, is similar to argument passing; a value must be
+computed and then stored into a frame.  I wouldn't be too upset if you
+decide to stop here and take code generation for memory references on faith.
+
+<P>Suppose we are compiling the assignment
+
+<P><PRE>x := <EM>expression</EM>
+</PRE>
+
+<P><CODE>Passign</CODE> reads the name <CODE>x</CODE> and uses <CODE>getid</CODE> to find
+the information associated with that name.  If the assignment is to an array
+member, then <CODE>passign</CODE> must also read the array indices, but let's say
+that we are assigning to a scalar variable, to keep it simple.
+
+<P><PRE>to passign
+local [name id type index value pointer target]
+<U>make &quot;name token</U>
+make &quot;index []
+ifbe &quot;|[| [make &quot;index commalist [pexpr] mustbe &quot;|]|]
+mustbe &quot;|:=|
+<U>make &quot;id getid :name</U>
+<U>make &quot;pointer id.pointer :id</U>
+<U>make &quot;type id.type :id</U>
+passign1
+end
+</PRE>
+
+<P>Procedure <CODE>passign1</CODE> contains the steps that are in common between
+ordinary assignment (handled by <CODE>passign</CODE>) and assignment to the name of
+the current function, to set the return value (handled by <CODE>pfunset</CODE>,
+which you can read in the complete listing at the end of the chapter).
+
+<P><PRE>to passign1
+if and (listp :type) (emptyp :index) [parrayassign :id  stop]
+setindex &quot;false
+<U>make &quot;value check.type :type pexpr</U>
+<U>codestore :value (id.pointer :id) (id.varp :id) :index</U>
+regfree :value
+end
+</PRE>
+
+<P>We call <CODE>pexpr</CODE> to generate the code to compute the
+expression. <CODE>Check.type</CODE> is like <CODE>pboolean</CODE>, which you saw earlier,
+except that it takes the desired type as an argument.  It returns the
+number of the register that contains the expression value.
+
+<P>The real work is done by <CODE>codestore</CODE>, which takes four inputs.
+The first is the register number whose value should be stored; the other
+three inputs indicate where in memory the value should go.  First comes the
+pointer from the identifier list; this, you'll recall, tells us the lexical
+depth at which the variable was declared and the offset within its frame
+where the variable is kept.  Next is a true or false value indicating
+whether or not this variable is a <CODE>var</CODE> parameter; if so, then its value
+is a pointer to the variable whose value we <EM>really</EM> want to change.
+Finally, the <EM>index</EM> input will be zero for a scalar variable, or the
+number of a register containing the
+array index for an array member.  (Procedure <CODE>lindex</CODE>, whose name stands
+for &quot;linear index,&quot; has been called to generate code to convert the possible
+multi-dimensional indices, with possibly varying starting values, into a
+single number indicating the position within the array, starting from zero
+for the first member.)
+
+<P><PRE>to codestore :reg :pointer :varflag :index
+localmake &quot;target memsetup :pointer :varflag :index
+code (list &quot;store :reg targetaddr)
+regfree last :target
+end
+</PRE>
+
+<P>(There is a similar procedure <CODE>codeload</CODE> used to generate
+the code to load a variable's value into a register.)  <CODE>Codestore</CODE>
+invokes a subprocedure <CODE>memsetup</CODE> whose job is to work out an
+appropriate operand for an <CODE>rload</CODE> or <CODE>store</CODE> machine instruction.
+That operand must be an offset and an index register, such as <CODE>41(4)</CODE>.
+What <CODE>memsetup</CODE> returns is a list of the two numbers, in this case
+<CODE>[41 4]</CODE>.  Procedure <CODE>targetaddr</CODE> turns that into the right notation
+for use in the instruction.
+
+<P><CODE>Memsetup</CODE> is the most complicated procedure in the compiler, because
+there are so many special cases.  I'll describe the easy cases here.  Suppose
+that we are dealing with a scalar variable that isn't a <CODE>var</CODE> parameter.
+Then there are three cases.  If the lexical depth of that variable is equal
+to the current lexical depth, then this variable is declared in the same
+block that we're compiling.  In that case, we use register 4 (the current
+frame pointer) as the index register, and the variable's frame slot as the
+offset.  If the variable's lexical depth is zero, then it's a global
+variable.  In that case, we use register 3 (the global frame pointer) as
+the index register, and the variable's frame slot as the offset.  If the
+variable's depth is something other than zero or the current depth, then
+we have to find a pointer to the variable's own frame by looking in the
+current frame's <CODE>frame.outerframe</CODE> slot, and perhaps in <EM>that</EM>
+frame's <CODE>frame.outerframe</CODE> slot, as many times as the difference between
+the current depth and the variable's depth.
+
+<P>If the variable is a <CODE>var</CODE> parameter, then we go through the same cases
+just described, and then load the value of that variable (which is a pointer
+to the variable we really want) into a register.  We use that new register
+as the index register, and zero as the offset.
+
+<P>If the variable is an array member, then we must add the linear index
+(which is already in a register) to the offset as computed so far.
+
+<P>Perhaps an example will help sort this out.  Here is the compiled version
+of the <CODE>tower</CODE> program, with annotations:
+
+<P><PRE>[           [add 3 0 0]                   set up initial pointers
+            [add 4 0 0]
+            [addi 2 0 36]
+            [jump &quot;g1]                    jump to main program
+
+%hanoi      [store 1 0(4)]                save return value
+            [jump &quot;g2]                    jump to body of hanoi
+
+%movedisk   [store 1 0(4)]
+            [jump &quot;g3]
+
+g3          [putstr 1 [Move disk ]]       body of movedisk
+            [rload 7 36(4)]
+            [putint 1 7]                  write(number:1)
+            [putstr 1 [ from ]]
+            [rload 7 37(4)]
+            [putch 1 7]                   write(from:1)
+            [putstr 1 [ to ]]
+            [rload 7 38(4)]
+            [putch 1 7]                   write(to:1)
+            [newline]
+            [rload 1 0(4)]                reload return address
+            [add 2 4 0]                   free stack frame
+            [rload 4 3(2)]
+            [jr 1]                        return to caller
+
+g2          [rload 7 36(4)]               body of hanoi
+            [neqi 7 7 0]                  if number &lt;&gt; 0
+            [jumpf 7 &quot;g4]
+            [store 5 1(2)]                allocate new frame
+            [add 5 2 0]
+            [addi 2 2 40]
+            [store 4 3(5)]                set previous frame
+            [rload 7 2(4)]
+            [store 7 2(5)]                set enclosing frame
+            [rload 7 36(4)]
+            [subi 7 7 1]
+            [store 7 36(5)]               first arg is number-1
+            [rload 7 37(4)]
+            [store 7 37(5)]               next arg is from
+            [rload 7 39(4)]
+            [store 7 38(5)]               next arg is other
+            [rload 7 38(4)]
+            [store 7 39(5)]               next arg is onto
+            [add 4 5 0]                   switch to new frame
+            [rload 5 1(4)]
+            [jal 1 &quot;%hanoi]               recursive call
+
+            [store 5 1(2)]                set up for movedisk
+            [add 5 2 0]
+            [addi 2 2 39]
+            [store 4 3(5)]
+            [store 4 2(5)]                note different enclosing frame
+            [rload 7 36(4)]
+            [store 7 36(5)]               copy args
+            [rload 7 37(4)]
+            [store 7 37(5)]
+            [rload 7 38(4)]
+            [store 7 38(5)]
+            [add 4 5 0]
+            [rload 5 1(4)]
+            [jal 1 &quot;%movedisk]            call movedisk
+
+            [store 5 1(2)]                second recursive call
+            [add 5 2 0]
+            [addi 2 2 40]
+            [store 4 3(5)]
+            [rload 7 2(4)]
+            [store 7 2(5)]
+            [rload 7 36(4)]
+            [subi 7 7 1]
+            [store 7 36(5)]
+            [rload 7 39(4)]
+            [store 7 37(5)]
+            [rload 7 38(4)]
+            [store 7 38(5)]
+            [rload 7 37(4)]
+            [store 7 39(5)]
+            [add 4 5 0]
+            [rload 5 1(4)]
+            [jal 1 &quot;%hanoi]
+            [jump &quot;g5]                    end of if...then
+
+g4
+g5          [rload 1 0(4)]                return to caller
+            [add 2 4 0]
+            [rload 4 3(2)]
+            [jr 1]
+
+g1          [store 5 1(2)]                body of main program
+            [add 5 2 0]                   prepare to call hanoi
+            [addi 2 2 40]
+            [store 4 3(5)]
+            [store 4 2(5)]
+            [addi 7 0 5]                  constant argument 5
+            [store 7 36(5)]
+            [addi 7 0 97]                 ASCII code for 'a'
+            [store 7 37(5)]
+            [addi 7 0 98]                 ASCII code for 'b'
+            [store 7 38(5)]
+            [addi 7 0 99]                 ASCII code for 'c'
+            [store 7 39(5)]
+            [add 4 5 0]
+            [rload 5 1(4)]
+            [jal 1 &quot;%hanoi]               call hanoi
+            [exit]
+]
+</PRE>
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch6/v3ch6.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><PRE>
+to compile :file
+if namep "peekchar [ern "peekchar]
+if namep "peektoken [ern "peektoken]
+if not namep "idlist [opsetup]
+if not emptyp :file [openread :file]
+setread :file
+ignore error
+catch "error [program]
+localmake "error error
+if not emptyp :error [print first butfirst :error]
+setread []
+if not emptyp :file [close :file]
+end
+
+;; Global setup
+
+to opsetup
+make "numregs 32
+make "memsize 3000
+pprop "|=| "binary [eql 2 [boolean []] 1]
+pprop "|<>| "binary [neq 2 [boolean []] 1]
+pprop "|<| "binary [less 2 [boolean []] 1]
+pprop "|>| "binary [gtr 2 [boolean []] 1]
+pprop "|<=| "binary [leq 2 [boolean []] 1]
+pprop "|>=| "binary [geq 2 [boolean []] 1]
+pprop "|+| "binary [add 2 [[] []] 2]
+pprop "|-| "binary [sub 2 [[] []] 2]
+pprop "or "binary [lor 2 [boolean boolean] 2]
+pprop "|*| "binary [mul 2 [[] []] 3]
+pprop "|/| "binary [quo 2 [real []] 3]
+pprop "div "binary [div 2 [integer integer] 3]
+pprop "mod "binary [rem 2 [integer integer] 3]
+pprop "and "binary [land 2 [boolean boolean] 3]
+pprop "|+| "unary [plus 1 [[] []] 4]
+pprop "|-| "unary [minus 1 [[] []] 4]
+pprop "not "unary [lnot 1 [boolean boolean] 4]
+make "idlist `[[trunc function int [1 ,[framesize.fun+1]]]
+               [round function round [1 ,[framesize.fun+1]]]
+               [random function random [1 ,[framesize.fun+1]]]]
+make "int [integer real]
+make "round [integer real]
+make "random [integer integer]
+end
+
+;; Block structure
+
+to program
+mustbe "program
+localmake "progname token
+ifbe "|(| [ignore commalist [id]  mustbe "|)|]
+mustbe "|;|
+localmake "lexical.depth 0
+localmake "namesused []
+localmake "needint "false
+localmake "needround "false
+localmake "needrandom "false
+localmake "idlist :idlist
+localmake "frame [0 0]
+localmake "id (list :progname "program (newlname :progname) :frame)
+push "idlist :id
+localmake "codeinto word "% :progname
+make :codeinto []
+localmake "framesize framesize.proc
+program1
+mustbe ".
+code [exit]
+foreach [int round random] "plibrary
+make :codeinto reverse thing :codeinto
+end
+
+to program1
+localmake "regsused (array :numregs 0)
+for [i reg.firstfree :numregs-1] [setitem :i :regsused "false]
+ifbe "var [varpart]
+.setfirst butfirst :frame :framesize
+if :lexical.depth = 0 [code (list "add reg.globalptr reg.zero reg.zero)
+                       code (list "add reg.frameptr reg.zero reg.zero)
+                       code (list "addi reg.stackptr reg.zero :framesize)]
+localmake "bodytag gensym
+code (list "jump (word "" :bodytag))
+tryprocpart
+code :bodytag
+mustbe "begin
+blockbody "end
+end
+
+to plibrary :func
+if not thing (word "need :func) [stop]
+code :func
+code (list "rload reg.firstfree (memaddr framesize.fun reg.frameptr))
+code (list (word "s :func) reg.retval reg.firstfree)
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+end
+
+;; Variable declarations
+
+to varpart
+local [token namelist type]
+make "token token
+make "peektoken :token
+if reservedp :token [stop]
+vargroup
+foreach :namelist [newvar ? :type]
+mustbe "|;|
+varpart
+end
+
+to vargroup
+make "namelist commalist [id]
+mustbe ":
+ifbe "packed []
+make "type token
+ifelse equalp :type "array [make "type arraytype] [typecheck :type]
+end
+
+to id
+local "token
+make "token token
+if letterp ascii first :token [output :token]
+make "peektoken :token
+output []
+end
+
+to arraytype
+local [ranges type]
+mustbe "|[|
+make "ranges commalist [range]
+mustbe "|]|
+mustbe "of
+make "type token
+typecheck :type
+output list :type :ranges
+end
+
+to range
+local [first last]
+make "first range1
+mustbe "..
+make "last range1
+if :first > :last ~  
+   [(throw "error (sentence [array bounds not increasing:]
+                            :first ".. :last))]
+output list :first (1 + :last - :first)
+end
+
+to range1
+local "bound
+make "bound token
+if equalp first :bound "' [output ascii first butfirst :bound]
+if equalp :bound "|-| [make "bound minus token]
+if equalp :bound int :bound [output :bound]
+(throw "error sentence [array bound not ordinal:] :bound)
+end
+
+to typecheck :type
+if memberp :type [real integer char boolean] [stop]
+(throw "error sentence [undefined type] :type)
+end
+
+to newvar :pname :type
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+push "idlist (list :pname :type (list :lexical.depth :framesize) "false)
+make "framesize :framesize + ifelse listp :type [arraysize :type] [1]
+end
+
+to arraysize :type
+output reduce "product map [last ?] last :type
+end
+
+;; Procedure and function declarations
+
+to tryprocpart
+ifbeelse "procedure ~
+         [procedure tryprocpart] ~
+         [ifbe "function [function tryprocpart]]
+end
+
+to procedure
+proc1 "procedure framesize.proc
+end
+
+to function
+proc1 "function framesize.fun
+end
+
+to proc1 :proctype :framesize
+localmake "procname token
+localmake "lexical.depth :lexical.depth+1
+localmake "frame (list :lexical.depth 0)
+push "idlist (list :procname :proctype (newlname :procname) :frame)
+localmake "idlist :idlist
+make lname :procname []
+ifbe "|(| [arglist]
+if equalp :proctype "function ~
+   [mustbe ":
+    localmake "type token
+    typecheck :type
+    make lname :procname fput :type thing lname :procname]
+mustbe "|;|
+code lname :procname
+code (list "store reg.retaddr (memaddr frame.retaddr reg.frameptr))
+program1
+if equalp :proctype "function ~
+   [code (list "rload reg.retval (memaddr frame.retval reg.frameptr))]
+code (list "rload reg.retaddr (memaddr frame.retaddr reg.frameptr))
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+mustbe "|;|
+end
+
+to arglist
+local [token namelist type varflag]
+make "varflag "false
+ifbe "var [make "varflag "true]
+vargroup
+foreach :namelist [newarg ? :type :varflag]
+ifbeelse "|;| [arglist] [mustbe "|)|]
+end
+
+to newarg :pname :type :varflag
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+localmake "pointer (list :lexical.depth :framesize)
+push "idlist (list :pname :type :pointer :varflag)
+make "framesize :framesize + ifelse (and listp :type not :varflag) ~
+                                    [arraysize :type] [1]
+queue lname :procname ifelse :varflag [list "var :type] [:type]
+end
+
+;; Statement part
+
+to blockbody :endword
+statement
+ifbeelse "|;| [blockbody :endword] [mustbe :endword]
+end
+
+to statement
+local [token type]
+ifbe "begin [compound stop]
+ifbe "for [pfor stop]
+ifbe "if [pif stop]
+ifbe "while [pwhile stop]
+ifbe "repeat [prepeat stop]
+ifbe "write [pwrite stop]
+ifbe "writeln [pwriteln stop]
+make "token token
+make "peektoken :token
+if memberp :token [|;| end until] [stop]
+make "type gettype :token
+if emptyp :type [(throw "error sentence :token [can't begin statement])]
+if equalp :type "procedure [pproccall stop]
+if equalp :type "function [pfunset stop]
+passign
+end
+
+;; Compound statement
+
+to compound
+blockbody "end
+end
+
+;; Structured statements
+
+to pfor
+local [var init step final looptag endtag testreg]
+make "var token
+mustbe "|:=|
+make "init pinteger pexpr
+make "step 1
+ifbeelse "downto [make "step -1] [mustbe "to]
+make "final pinteger pexpr
+mustbe "do
+make "looptag gensym
+make "endtag gensym
+code :looptag
+localmake "id getid :var
+codestore :init (id.pointer :id) (id.varp :id) 0
+make "testreg newregister
+code (list (ifelse :step<0 ["less] ["gtr]) :testreg :init :final)
+code (list "jumpt :testreg (word "" :endtag))
+regfree :testreg
+statement
+code (list "addi :init :init :step)
+code (list "jump (word "" :looptag))
+code :endtag
+regfree :init
+regfree :final
+end
+
+to prepeat
+local [cond looptag]
+make "looptag gensym
+code :looptag
+blockbody "until
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :looptag))
+regfree :cond
+end
+
+to pif
+local [cond elsetag endtag]
+make "cond pboolean pexpr
+make "elsetag gensym
+make "endtag gensym
+mustbe "then
+code (list "jumpf :cond (word "" :elsetag))
+regfree :cond
+statement
+code (list "jump (word "" :endtag))
+code :elsetag
+ifbe "else [statement]
+code :endtag
+end
+
+to pwhile
+local [cond looptag endtag]
+make "looptag gensym
+make "endtag gensym
+code :looptag
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :endtag))
+regfree :cond
+mustbe "do
+statement
+code (list "jump (word "" :looptag))
+code :endtag
+end
+
+;; Simple statements: write and writeln
+
+to pwrite
+mustbe "|(|
+pwrite1
+end
+
+to pwrite1
+pwrite2
+ifbe "|)| [stop]
+ifbeelse ", [pwrite1] [(throw "error [missing comma])]
+end
+
+to pwrite2
+localmake "result pwrite3
+ifbe ": [.setfirst (butfirst :result) token]
+code :result
+if not equalp first :result "putstr [regfree last :result]
+end
+
+to pwrite3
+localmake "token token
+if equalp first :token "' ~
+   [output (list "putstr 1 (list butlast butfirst :token))]
+make "peektoken :token
+localmake "result pexpr
+if equalp first :result "char [output (list "putch 1 pchar :result)]
+if equalp first :result "boolean [output (list "puttf 1 pboolean :result)]
+if equalp first :result "integer [output (list "putint 10 pinteger :result)]
+output (list "putreal 20 preal :result)
+end
+
+to pwriteln
+ifbe "|(| [pwrite1]
+code [newline]
+end
+
+;; Simple statements: procedure call
+
+to pproccall
+localmake "pname token
+localmake "id getid :pname
+localmake "lname id.lname :id
+localmake "vartypes thing :lname
+pproccall1 framesize.proc
+end
+
+to pproccall1 :offset
+code (list "store reg.newfp (memaddr frame.save.newfp reg.stackptr))
+code (list "add reg.newfp reg.stackptr reg.zero)
+code (list "addi reg.stackptr reg.stackptr (last id.frame :id))
+code (list "store reg.frameptr (memaddr frame.prevframe reg.newfp))
+localmake "newdepth first id.frame :id
+ifelse :newdepth > :lexical.depth ~
+       [code (list "store reg.frameptr
+                   (memaddr frame.outerframe reg.newfp))] ~
+       [localmake "tempreg newregister
+        code (list "rload :tempreg (memaddr frame.outerframe reg.frameptr))
+        repeat (:lexical.depth - :newdepth)
+               [code (list "rload :tempreg 
+                           (memaddr frame.outerframe :tempreg))]
+        code (list "store :tempreg (memaddr frame.outerframe reg.newfp))
+        regfree :tempreg]
+if not emptyp :vartypes [mustbe "|(|  procargs :vartypes :offset]
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "store :i (memaddr frame.regsave+:i reg.frameptr))]]
+code (list "add reg.frameptr reg.newfp reg.zero)
+code (list "rload reg.newfp (memaddr frame.save.newfp reg.frameptr))
+code (list "jal reg.retaddr (word "" :lname))
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "rload :i (memaddr frame.regsave+:i reg.frameptr))]]
+end
+
+to procargs :types :offset
+if emptyp :types [mustbe "|)|  stop]
+localmake "next procarg first :types :offset
+if not emptyp butfirst :types [mustbe ",]
+procargs butfirst :types :offset+:next
+end
+
+to procarg :type :offset
+local "result
+if equalp first :type "var [output procvararg last :type]
+if listp :type [output procarrayarg :type]
+make "result check.type :type pexpr
+code (list "store :result (memaddr :offset reg.newfp))
+regfree :result
+output 1
+end
+
+to procvararg :ftype
+local [pname id type index]
+make "pname token
+make "id getid :pname
+make "type id.type :id
+ifelse wordp :ftype ~
+       [setindex "true] ~
+       [make "index 0]
+if not equalp :type :ftype ~
+   [(throw "error sentence :pname [arg wrong type])]
+localmake "target memsetup (id.pointer :id) (id.varp :id) :index
+localmake "tempreg newregister
+code (list "addi :tempreg (last :target) (first :target))
+code (list "store :tempreg (memaddr :offset reg.newfp))
+regfree last :target
+regfree :tempreg
+output 1
+end
+
+to procarrayarg :type
+localmake "pname token
+localmake "id getid :pname
+if not equalp :type (id.type :id) ~
+   [(throw "error (sentence "array :pname [wrong type for arg]))]
+localmake "size arraysize :type
+localmake "rtarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "pointreg newregister
+code (list "addi :pointreg reg.newfp :offset)
+localmake "ltarget (list 0 :pointreg)
+copyarray
+output :size
+end
+
+;; Simple statements: assignment statement (including function value)
+
+to passign
+local [name id type index value pointer target]
+make "name token
+make "index []
+ifbe "|[| [make "index commalist [pexpr] mustbe "|]|]
+mustbe "|:=|
+make "id getid :name
+make "pointer id.pointer :id
+make "type id.type :id
+passign1
+end
+
+to pfunset
+local [name id type index value pointer target]
+make "name token
+make "index []
+if not equalp :name :procname ~
+   [(throw "error sentence [assign to wrong function] :name)]
+mustbe "|:=|
+make "pointer (list :lexical.depth frame.retval)
+make "type first thing lname :name
+make "id (list :name :type :pointer "false)
+passign1
+end
+
+to passign1
+if and (listp :type) (emptyp :index) [parrayassign :id  stop]
+setindex "false
+make "value check.type :type pexpr
+codestore :value (id.pointer :id) (id.varp :id) :index
+regfree :value
+end
+
+to noimmediate :value
+if equalp exp.mode :value "immediate ~
+   [localmake "reg newregister
+    code (list "addi :reg reg.zero exp.value :value)
+    output (list exp.type :value "register :reg)]
+output :value
+end
+
+to check.type :type :result
+if equalp :type "real [output preal :result]
+if equalp :type "integer [output pinteger :result]
+if equalp :type "char [output pchar :result]
+if equalp :type "boolean [output pboolean :result]
+end
+
+to preal :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "real [output exp.value :pval]
+output pinteger :pval
+end
+
+to pinteger :expr [:pval noimmediate :expr]
+local "type
+make "type exp.type :pval
+if memberp :type [integer boolean char] [output exp.value :pval]
+(throw "error sentence exp.type :pval [isn't ordinal])
+end
+
+to pchar :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "char [output exp.value :pval]
+(throw "error sentence exp.type :pval [not character value])
+end
+
+to pboolean :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "boolean [output exp.value :pval]
+(throw "error sentence exp.type :pval [not true or false])
+end
+
+to parrayassign :id
+localmake "right token
+if equalp first :right "' ~
+   [pstringassign :type (butlast butfirst :right)  stop]
+localmake "rid getid :right
+if not equalp (id.type :id) (id.type :rid) ~
+   [(throw "error (sentence "arrays :name "and :right [unequal types]))]
+localmake "size arraysize id.type :id
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "rtarget memsetup (id.pointer :rid) (id.varp :rid) 0
+copyarray
+end
+
+to pstringassign :type :string
+if not equalp first :type "char [stringlose]
+if not emptyp butfirst last :type [stringlose]
+if not equalp (last first last :type) (count :string) [stringlose]
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+pstringassign1 newregister (first :ltarget) (last :ltarget) :string
+regfree last :ltarget
+end
+
+to pstringassign1 :tempreg :offset :reg :string
+if emptyp :string [regfree :tempreg  stop]
+code (list "addi :tempreg reg.zero ascii first :string)
+code (list "store :tempreg (memaddr :offset :reg))
+pstringassign1 :tempreg :offset+1 :reg (butfirst :string)
+end
+
+to stringlose
+(throw "error sentence :name [not string array or wrong size])
+end
+
+;; Multiple array indices to linear index computation
+
+to setindex :parseflag
+ifelse listp :type ~
+       [if :parseflag
+           [mustbe "|[|  make "index commalist [pexpr]  mustbe "|]| ]
+        make "index lindex last :type :index
+        make "type first :type] ~
+       [make "index 0]
+end
+
+to lindex :bounds :index
+output lindex1 (offset pinteger noimmediate first :index
+                       first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to lindex1 :sofar :bounds :index
+if emptyp :bounds [output :sofar]
+output lindex1 (nextindex :sofar
+                          last first :bounds
+                          pinteger noimmediate first :index
+                          first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to nextindex :old :factor :new :offset
+code (list "muli :old :old :factor)
+localmake "newreg offset :new :offset
+code (list "add :old :old :newreg)
+regfree :newreg
+output :old
+end
+
+to offset :indexreg :lowbound
+if not equalp :lowbound 0 [code (list "subi :indexreg :indexreg :lowbound)]
+output :indexreg
+end
+
+;; Memory interface: load and store instructions
+
+to codeload :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "rload :reg targetaddr)
+regfree last :target
+end
+
+to codestore :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "store :reg targetaddr)
+regfree last :target
+end
+
+to targetaddr
+output memaddr (first :target) (last :target)
+end
+
+to memaddr :offset :index
+output (word :offset "\( :index "\))
+end
+
+to memsetup :pointer :varflag :index
+localmake "depth first :pointer
+localmake "offset last :pointer
+local "newreg
+ifelse equalp :depth 0 ~
+       [make "newreg reg.globalptr] ~
+       [ifelse equalp :depth :lexical.depth
+               [make "newreg reg.frameptr]
+               [make "newreg newregister
+                code (list "rload :newreg
+                           (memaddr frame.outerframe reg.frameptr))
+                repeat (:lexical.depth - :depth) - 1
+                       [code (list "rload :newreg
+                                   (memaddr frame.outerframe :newreg))]]]
+if :varflag ~
+   [ifelse :newreg = reg.frameptr
+           [make "newreg newregister
+            code (list "rload :newreg (memaddr :offset reg.frameptr))]
+           [code (list "rload :newreg (memaddr :offset :newreg))]
+    make "offset 0]
+if not equalp :index 0 ~
+   [code (list "add :index :index :newreg)
+    regfree :newreg
+    make "newreg :index]
+output list :offset :newreg
+end
+
+to copyarray
+localmake "looptag gensym
+localmake "sizereg newregister
+code (list "addi :sizereg reg.zero :size)
+code :looptag
+localmake "tempreg newregister
+code (list "rload :tempreg (memaddr (first :rtarget) (last :rtarget)))
+code (list "store :tempreg (memaddr (first :ltarget) (last :ltarget)))
+code (list "addi (last :rtarget) (last :rtarget) 1)
+code (list "addi (last :ltarget) (last :ltarget) 1)
+code (list "subi :sizereg :sizereg 1)
+code (list "gtr :tempreg :sizereg reg.zero)
+code (list "jumpt :tempreg (word "" :looptag))
+regfree :sizereg
+regfree :tempreg
+regfree last :ltarget
+regfree last :rtarget
+end
+
+;; Expressions
+
+to pexpr
+local [opstack datastack parenlevel]
+make "opstack [[popen 1 0]]
+make "datastack []
+make "parenlevel 0
+output pexpr1
+end
+
+to pexpr1
+local [token op]
+make "token token
+while [equalp :token "|(|] [popen  make "token token]
+make "op pgetunary :token
+if not emptyp :op [output pexprop :op]
+push "datastack pdata :token
+make "token token
+while [and (:parenlevel > 0) (equalp :token "|)| )] ~
+      [pclose  make "token token]
+make "op pgetbinary :token
+if not emptyp :op [output pexprop :op]
+make "peektoken :token
+pclose
+if not emptyp :opstack [(throw "error [too many operators])]
+if not emptyp butfirst :datastack [(throw "error [too many operands])]
+output pop "datastack
+end
+
+to pexprop :op
+while [(op.prec :op) < (1 + op.prec first :opstack)] [ppopop]
+push "opstack :op
+output pexpr1
+end
+
+to popen
+push "opstack [popen 1 0]
+make "parenlevel :parenlevel + 1
+end
+
+to pclose
+while [(op.prec first :opstack) > 0] [ppopop]
+ignore pop "opstack
+make "parenlevel :parenlevel - 1
+end
+
+to pgetunary :token
+output gprop :token "unary
+end
+
+to pgetbinary :token
+output gprop :token "binary
+end
+
+to ppopop
+local [op function args left right type reg]
+make "op pop "opstack
+make "function op.instr :op
+if equalp :function "plus [stop]
+make "args op.nargs :op
+make "right pop "datastack
+make "left (ifelse equalp :args 2 [pop "datastack] [[[] []]])
+make "type pnewtype :op exp.type :left exp.type :right
+if equalp exp.mode :left "immediate ~
+   [localmake "leftreg newregister
+    code (list "addi :leftreg reg.zero exp.value :left)
+    make "left (list exp.type :left "register :leftreg)]
+ifelse equalp exp.mode :left "register ~
+       [make "reg exp.value :left] ~
+       [ifelse equalp exp.mode :right "register
+               [make "reg exp.value :right]
+               [make "reg newregister]]
+if equalp :function "minus ~
+   [make "left (list exp.type :right "register reg.zero)
+    make "function "sub
+    make "args 2]
+if equalp exp.mode :right "immediate ~
+   [make "function word :function "i]
+ifelse equalp :args 2 ~
+       [code (list :function :reg exp.value :left exp.value :right)] ~
+       [code (list :function :reg exp.value :right)]
+if not equalp :reg exp.value :left [regfree exp.value :left]
+if (and (equalp exp.mode :right "register)
+        (not equalp :reg exp.value :right)) ~
+   [regfree exp.value :right]
+push "datastack (list :type "register :reg)
+end
+
+to pnewtype :op :ltype :rtype
+local "type
+make "type op.types :op
+if emptyp :ltype [make "ltype :rtype]
+if not emptyp last :type [pchecktype last :type :ltype :rtype]
+if and (equalp :ltype "real) (equalp :rtype "integer) [make "rtype "real]
+if and (equalp :ltype "integer) (equalp :rtype "real) [make "ltype "real]
+if not equalp :ltype :rtype [(throw "error [type clash])]
+if emptyp last :type ~
+   [if not memberp :rtype [integer real]
+       [(throw "error [nonarithmetic type])]]
+if emptyp first :type [output :rtype]
+output first :type
+end
+
+to pchecktype :want :left :right
+if not equalp :want :left [(throw "error (sentence :left "isn't :want))]
+if not equalp :want :right [(throw "error (sentence :right "isn't :want))]
+end
+
+;; Expression elements
+
+to pdata :token
+if equalp :token "true [output [boolean immediate 1]]
+if equalp :token "false [output [boolean immediate 0]]
+if equalp first :token "' [output pchardata :token]
+if numberp :token [output (list numtype :token "immediate :token)]
+localmake "id getid :token
+if emptyp :id [(throw "error sentence [undefined symbol] :token)]
+localmake "type id.type :id
+if equalp :type "function [output pfuncall :token]
+local "index
+setindex "true
+localmake "reg newregister
+codeload :reg (id.pointer :id) (id.varp :id) :index
+output (list :type "register :reg)
+end
+
+to pchardata :token
+if not equalp count :token 3 ~
+   [(throw "error sentence :token [not single character])]
+output (list "char "immediate ascii first butfirst :token)
+end
+
+to numtype :number
+if memberp ". :number [output "real]
+if memberp "e :number [output "real]
+output "integer
+end
+
+to pfuncall :pname
+localmake "id getid :pname
+localmake "lname id.lname :id
+if namep (word "need :lname) [make (word "need :lname) "true]
+localmake "vartypes thing :lname
+localmake "returntype first :vartypes
+make "vartypes butfirst :vartypes
+pproccall1 framesize.fun
+localmake "reg newregister
+code (list "add :reg reg.retval reg.zero)
+output (list :returntype "register :reg)
+end
+
+;; Parsing assistance
+
+to code :stuff
+if emptyp :stuff [stop]
+push :codeinto :stuff
+end
+
+to commalist :test [:sofar []]
+local [result token]
+make "result run :test
+if emptyp :result [output :sofar]
+ifbe ", [output (commalist :test (lput :result :sofar))]
+output lput :result :sofar
+end
+
+.macro ifbe :wanted :action
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output []
+end
+
+.macro ifbeelse :wanted :action :else
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output :else
+end
+
+to mustbe :wanted
+localmake "token token
+if equalp :token :wanted [stop]
+(throw "error (sentence "expected :wanted "got :token))
+end
+
+to newregister
+for [i reg.firstfree :numregs-1] ~
+    [if not item :i :regsused [setitem :i :regsused "true  output :i]]
+(throw "error [not enough registers available])
+end
+
+to regfree :reg
+setitem :reg :regsused "false
+end
+
+to reservedp :word
+output memberp :word [and array begin case const div do downto else end ~
+                      file for forward function goto if in label mod nil ~
+                      not of packed procedure program record repeat set ~
+                      then to type until var while with]
+end
+
+;; Lexical analysis
+
+to token
+local [token char]
+if namep "peektoken [make "token :peektoken
+                     ern "peektoken   output :token]
+make "char getchar
+if equalp :char "|{| [skipcomment output token]
+if equalp :char char 32 [output token]
+if equalp :char char 13 [output token]
+if equalp :char char 10 [output token]
+if equalp :char "' [output string "']
+if memberp :char [+ - * / = ( , ) |[| |]| |;|] [output :char]
+if equalp :char "|<| [output twochar "|<| [= >]]
+if equalp :char "|>| [output twochar "|>| [=]]
+if equalp :char ". [output twochar ". [.]]
+if equalp :char ": [output twochar ": [=]]
+if numberp :char [output number :char]
+if letterp ascii :char [output token1 lowercase :char]
+(throw "error sentence [unrecognized character:] :char)
+end
+
+to skipcomment
+if equalp getchar "|}| [stop]
+skipcomment
+end
+
+to string :string
+local "char
+make "char getchar
+if not equalp :char "' [output string word :string :char]
+make "char getchar
+if equalp :char "' [output string word :string :char]
+make "peekchar :char
+output word :string "'
+end
+
+to twochar :old :ok
+localmake "char getchar
+if memberp :char :ok [output word :old :char]
+make "peekchar :char
+output :old
+end
+
+to number :num
+local "char
+make "char getchar
+if equalp :char ". ~
+   [make "char getchar ~
+    ifelse equalp :char ". ~
+           [make "peektoken ".. output :num] ~
+           [make "peekchar :char output number word :num ".]]
+if equalp :char "e [output number word :num twochar "e [+ -]]
+if numberp :char [output number word :num :char]
+make "peekchar :char
+output :num
+end
+
+to token1 :token
+local "char
+make "char getchar
+if or letterp ascii :char numberp :char ~
+   [output token1 word :token lowercase :char]
+make "peekchar :char
+output :token
+end
+
+to letterp :code
+if and (:code > 64) (:code < 91) [output "true]
+output and (:code > 96) (:code < 123)
+end
+
+to getchar
+local "char
+if namep "peekchar [make "char :peekchar  ern "peekchar  output :char]
+if eofp [output char 1]
+output rc1
+end
+
+to rc1
+local "result
+make "result readchar
+type :result
+output :result
+end
+
+;; Data abstraction: ID List
+
+to newlname :word
+if memberp :word :namesused [output gensym]
+if namep word "% :word [output gensym]
+push "namesused :word
+output word "% :word
+end
+
+to lname :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 3 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to gettype :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 2 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to getid :word [:list :idlist]
+if emptyp :list [output []]
+if equalp :word first first :list [output first :list]
+output (getid :word butfirst :list)
+end
+
+to id.type :id
+output item 2 :id
+end
+
+to id.pointer :id
+output item 3 :id
+end
+
+to id.lname :id
+output item 3 :id
+end
+
+to id.varp :id
+output item 4 :id
+end
+
+to id.frame :id
+output item 4 :id
+end
+
+;; Data abstraction: Frame slots
+
+to frame.retaddr
+output 0
+end
+
+to frame.save.newfp
+output 1
+end
+
+to frame.outerframe
+output 2
+end
+
+to frame.prevframe
+output 3
+end
+
+to frame.regsave
+output 4
+end
+
+to framesize.proc
+output 4+:numregs
+end
+
+to frame.retval
+output 4+:numregs
+end
+
+to framesize.fun
+output 5+:numregs
+end
+
+;; Data abstraction: Operators
+
+to op.instr :op
+output first :op
+end
+
+to op.nargs :op
+output first bf :op
+end
+
+to op.types :op
+output item 3 :op
+end
+
+to op.prec :op
+output last :op
+end
+
+;; Data abstraction: Expressions
+
+to exp.type :exp
+output first :exp
+end
+
+to exp.mode :exp
+output first butfirst :exp
+end
+
+to exp.value :exp
+output last :exp
+end
+
+;; Data abstraction: Registers
+
+to reg.zero
+output 0
+end
+
+to reg.retaddr
+output 1
+end
+
+to reg.stackptr
+output 2
+end
+
+to reg.globalptr
+output 3
+end
+
+to reg.frameptr
+output 4
+end
+
+to reg.newfp
+output 5
+end
+
+to reg.retval
+output 6
+end
+
+to reg.firstfree
+output 7
+end
+
+;; Runtime (machine simulation)
+
+to prun :progname
+localmake "prog thing word "% :progname
+localmake "regs (array :numregs 0)
+local filter "wordp :prog
+foreach :prog [if wordp ? [make ? ?rest]]
+localmake "memory (array :memsize 0)
+setitem 0 :regs 0
+if not procedurep "add [runsetup]
+prun1 :prog
+end
+
+to prun1 :pc
+if emptyp :pc [stop]
+if listp first :pc [run first :pc]
+prun1 butfirst :pc
+end
+
+to rload :reg :offset :index
+setitem :reg :regs (item (item :index :regs)+:offset :memory)
+end
+
+to store :reg :offset :index
+setitem (item :index :regs)+:offset :memory (item :reg :regs)
+end
+
+to runsetup
+foreach [[add sum] [sub difference] [mul product] [quo quotient]
+         [div [int quotient]] [rem remainder] [land product]
+         [lor [tobool lessp 0 sum]] [eql [tobool equalp]]
+         [neq [tobool not equalp]] [less [tobool lessp]]
+         [gtr [tobool greaterp]] [leq [tobool not greaterp]]
+         [geq [tobool not lessp]]] ~
+        [define first ?
+                `[[dest src1 src2]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  (item :src2 :regs)]]
+         define word first ? "i
+                `[[dest src1 immed]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  :immed]]]
+foreach [[lnot [difference 1]] [sint int] [sround round] [srandom random]] ~
+        [define first ?
+                `[[dest src]
+                  [setitem :dest :regs ,@[last ?] (item :src :regs)]]
+         define word first ? "i
+                `[[dest immed]
+                  [setitem :dest :regs ,@[last ?] :immed]]]
+end
+
+to tobool :tf
+output ifelse :tf [1] [0]
+end
+
+to jump :label
+make "pc fput :label thing :label
+end
+
+to jumpt :reg :label
+if (item :reg :regs)=1 [jump :label]
+end
+
+to jumpf :reg :label
+if (item :reg :regs)=0 [jump :label]
+end
+
+to jr :reg
+make "pc item :reg :regs
+end
+
+to jal :reg :label
+setitem :reg :regs :pc
+jump :label
+end
+
+to putch :width :reg
+spaces :width 1
+type char (item :reg :regs)
+end
+
+to putstr :width :string
+spaces :width (count first :string)
+type :string
+end
+
+to puttf :width :bool
+spaces :width 1
+type ifelse (item :bool :regs)=0 ["F] ["T]
+end
+
+to putint :width :reg
+localmake "num (item :reg :regs)
+spaces :width count :num
+type :num
+end
+
+to putreal :width :reg
+putint :width :reg
+end
+
+to spaces :width :count
+if :width > :count [repeat :width - :count [type "| |]]
+end
+
+to newline
+print []
+end
+
+to exit
+make "pc [exit]
+end
+</PRE>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch6/v3ch6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch5/memory.gif b/js/games/nluqo.github.io/~bh/v3ch5/memory.gif
new file mode 100644
index 0000000..7922f1d
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/memory.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/pascal.lg b/js/games/nluqo.github.io/~bh/v3ch5/pascal.lg
new file mode 100644
index 0000000..0aae43c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/pascal.lg
@@ -0,0 +1,1217 @@
+to compile :file
+if namep "peekchar [ern "peekchar]
+if namep "peektoken [ern "peektoken]
+if not namep "idlist [opsetup]
+if not emptyp :file [openread :file]
+setread :file
+ignore error
+catch "error [program]
+localmake "error error
+if not emptyp :error [print first butfirst :error]
+setread []
+if not emptyp :file [close :file]
+end
+
+;; Global setup
+
+to opsetup
+make "numregs 32
+make "memsize 3000
+pprop "|=| "binary [eql 2 [boolean []] 1]
+pprop "|<>| "binary [neq 2 [boolean []] 1]
+pprop "|<| "binary [less 2 [boolean []] 1]
+pprop "|>| "binary [gtr 2 [boolean []] 1]
+pprop "|<=| "binary [leq 2 [boolean []] 1]
+pprop "|>=| "binary [geq 2 [boolean []] 1]
+pprop "|+| "binary [add 2 [[] []] 2]
+pprop "|-| "binary [sub 2 [[] []] 2]
+pprop "or "binary [lor 2 [boolean boolean] 2]
+pprop "|*| "binary [mul 2 [[] []] 3]
+pprop "|/| "binary [quo 2 [real []] 3]
+pprop "div "binary [div 2 [integer integer] 3]
+pprop "mod "binary [rem 2 [integer integer] 3]
+pprop "and "binary [land 2 [boolean boolean] 3]
+pprop "|+| "unary [plus 1 [[] []] 4]
+pprop "|-| "unary [minus 1 [[] []] 4]
+pprop "not "unary [lnot 1 [boolean boolean] 4]
+make "idlist `[[trunc function int [1 ,[framesize.fun+1]]]
+               [round function round [1 ,[framesize.fun+1]]]
+               [random function random [1 ,[framesize.fun+1]]]]
+make "int [integer real]
+make "round [integer real]
+make "random [integer integer]
+end
+
+;; Block structure
+
+to program
+mustbe "program
+localmake "progname token
+ifbe "|(| [ignore commalist [id]  mustbe "|)|]
+mustbe "|;|
+localmake "lexical.depth 0
+localmake "namesused []
+localmake "needint "false
+localmake "needround "false
+localmake "needrandom "false
+localmake "idlist :idlist
+localmake "frame [0 0]
+localmake "id (list :progname "program (newlname :progname) :frame)
+push "idlist :id
+localmake "codeinto word "% :progname
+make :codeinto []
+localmake "framesize framesize.proc
+program1
+mustbe ".
+code [exit]
+foreach [int round random] "plibrary
+make :codeinto reverse thing :codeinto
+end
+
+to program1
+localmake "regsused (array :numregs 0)
+for [i reg.firstfree :numregs-1] [setitem :i :regsused "false]
+ifbe "var [varpart]
+.setfirst butfirst :frame :framesize
+if :lexical.depth = 0 [code (list "add reg.globalptr reg.zero reg.zero)
+                       code (list "add reg.frameptr reg.zero reg.zero)
+                       code (list "addi reg.stackptr reg.zero :framesize)]
+localmake "bodytag gensym
+code (list "jump (word "" :bodytag))
+tryprocpart
+code :bodytag
+mustbe "begin
+blockbody "end
+end
+
+to plibrary :func
+if not thing (word "need :func) [stop]
+code :func
+code (list "rload reg.firstfree (memaddr framesize.fun reg.frameptr))
+code (list (word "s :func) reg.retval reg.firstfree)
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+end
+
+;; Variable declarations
+
+to varpart
+local [token namelist type]
+make "token token
+make "peektoken :token
+if reservedp :token [stop]
+vargroup
+foreach :namelist [newvar ? :type]
+mustbe "|;|
+varpart
+end
+
+to vargroup
+make "namelist commalist [id]
+mustbe ":
+ifbe "packed []
+make "type token
+ifelse equalp :type "array [make "type arraytype] [typecheck :type]
+end
+
+to id
+local "token
+make "token token
+if letterp ascii first :token [output :token]
+make "peektoken :token
+output []
+end
+
+to arraytype
+local [ranges type]
+mustbe "|[|
+make "ranges commalist [range]
+mustbe "|]|
+mustbe "of
+make "type token
+typecheck :type
+output list :type :ranges
+end
+
+to range
+local [first last]
+make "first range1
+mustbe "..
+make "last range1
+if :first > :last ~  
+   [(throw "error (sentence [array bounds not increasing:]
+                            :first ".. :last))]
+output list :first (1 + :last - :first)
+end
+
+to range1
+local "bound
+make "bound token
+if equalp first :bound "' [output ascii first butfirst :bound]
+if equalp :bound "|-| [make "bound minus token]
+if equalp :bound int :bound [output :bound]
+(throw "error sentence [array bound not ordinal:] :bound)
+end
+
+to typecheck :type
+if memberp :type [real integer char boolean] [stop]
+(throw "error sentence [undefined type] :type)
+end
+
+to newvar :pname :type
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+push "idlist (list :pname :type (list :lexical.depth :framesize) "false)
+make "framesize :framesize + ifelse listp :type [arraysize :type] [1]
+end
+
+to arraysize :type
+output reduce "product map [last ?] last :type
+end
+
+;; Procedure and function declarations
+
+to tryprocpart
+ifbeelse "procedure ~
+         [procedure tryprocpart] ~
+         [ifbe "function [function tryprocpart]]
+end
+
+to procedure
+proc1 "procedure framesize.proc
+end
+
+to function
+proc1 "function framesize.fun
+end
+
+to proc1 :proctype :framesize
+localmake "procname token
+localmake "lexical.depth :lexical.depth+1
+localmake "frame (list :lexical.depth 0)
+push "idlist (list :procname :proctype (newlname :procname) :frame)
+localmake "idlist :idlist
+make lname :procname []
+ifbe "|(| [arglist]
+if equalp :proctype "function ~
+   [mustbe ":
+    localmake "type token
+    typecheck :type
+    make lname :procname fput :type thing lname :procname]
+mustbe "|;|
+code lname :procname
+code (list "store reg.retaddr (memaddr frame.retaddr reg.frameptr))
+program1
+if equalp :proctype "function ~
+   [code (list "rload reg.retval (memaddr frame.retval reg.frameptr))]
+code (list "rload reg.retaddr (memaddr frame.retaddr reg.frameptr))
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+mustbe "|;|
+end
+
+to arglist
+local [token namelist type varflag]
+make "varflag "false
+ifbe "var [make "varflag "true]
+vargroup
+foreach :namelist [newarg ? :type :varflag]
+ifbeelse "|;| [arglist] [mustbe "|)|]
+end
+
+to newarg :pname :type :varflag
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+localmake "pointer (list :lexical.depth :framesize)
+push "idlist (list :pname :type :pointer :varflag)
+make "framesize :framesize + ifelse (and listp :type not :varflag) ~
+                                    [arraysize :type] [1]
+queue lname :procname ifelse :varflag [list "var :type] [:type]
+end
+
+;; Statement part
+
+to blockbody :endword
+statement
+ifbeelse "|;| [blockbody :endword] [mustbe :endword]
+end
+
+to statement
+local [token type]
+ifbe "begin [compound stop]
+ifbe "for [pfor stop]
+ifbe "if [pif stop]
+ifbe "while [pwhile stop]
+ifbe "repeat [prepeat stop]
+ifbe "write [pwrite stop]
+ifbe "writeln [pwriteln stop]
+make "token token
+make "peektoken :token
+if memberp :token [|;| end until] [stop]
+make "type gettype :token
+if emptyp :type [(throw "error sentence :token [can't begin statement])]
+if equalp :type "procedure [pproccall stop]
+if equalp :type "function [pfunset stop]
+passign
+end
+
+;; Compound statement
+
+to compound
+blockbody "end
+end
+
+;; Structured statements
+
+to pfor
+local [var init step final looptag endtag testreg]
+make "var token
+mustbe "|:=|
+make "init pinteger pexpr
+make "step 1
+ifbeelse "downto [make "step -1] [mustbe "to]
+make "final pinteger pexpr
+mustbe "do
+make "looptag gensym
+make "endtag gensym
+code :looptag
+localmake "id getid :var
+codestore :init (id.pointer :id) (id.varp :id) 0
+make "testreg newregister
+code (list (ifelse :step<0 ["less] ["gtr]) :testreg :init :final)
+code (list "jumpt :testreg (word "" :endtag))
+regfree :testreg
+statement
+code (list "addi :init :init :step)
+code (list "jump (word "" :looptag))
+code :endtag
+regfree :init
+regfree :final
+end
+
+to prepeat
+local [cond looptag]
+make "looptag gensym
+code :looptag
+blockbody "until
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :looptag))
+regfree :cond
+end
+
+to pif
+local [cond elsetag endtag]
+make "cond pboolean pexpr
+make "elsetag gensym
+make "endtag gensym
+mustbe "then
+code (list "jumpf :cond (word "" :elsetag))
+regfree :cond
+statement
+code (list "jump (word "" :endtag))
+code :elsetag
+ifbe "else [statement]
+code :endtag
+end
+
+to pwhile
+local [cond looptag endtag]
+make "looptag gensym
+make "endtag gensym
+code :looptag
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :endtag))
+regfree :cond
+mustbe "do
+statement
+code (list "jump (word "" :looptag))
+code :endtag
+end
+
+;; Simple statements: write and writeln
+
+to pwrite
+mustbe "|(|
+pwrite1
+end
+
+to pwrite1
+pwrite2
+ifbe "|)| [stop]
+ifbeelse ", [pwrite1] [(throw "error [missing comma])]
+end
+
+to pwrite2
+localmake "result pwrite3
+ifbe ": [.setfirst (butfirst :result) token]
+code :result
+if not equalp first :result "putstr [regfree last :result]
+end
+
+to pwrite3
+localmake "token token
+if equalp first :token "' ~
+   [output (list "putstr 1 (list butlast butfirst :token))]
+make "peektoken :token
+localmake "result pexpr
+if equalp first :result "char [output (list "putch 1 pchar :result)]
+if equalp first :result "boolean [output (list "puttf 1 pboolean :result)]
+if equalp first :result "integer [output (list "putint 10 pinteger :result)]
+output (list "putreal 20 preal :result)
+end
+
+to pwriteln
+ifbe "|(| [pwrite1]
+code [newline]
+end
+
+;; Simple statements: procedure call
+
+to pproccall
+localmake "pname token
+localmake "id getid :pname
+localmake "lname id.lname :id
+localmake "vartypes thing :lname
+pproccall1 framesize.proc
+end
+
+to pproccall1 :offset
+code (list "store reg.newfp (memaddr frame.save.newfp reg.stackptr))
+code (list "add reg.newfp reg.stackptr reg.zero)
+code (list "addi reg.stackptr reg.stackptr (last id.frame :id))
+code (list "store reg.frameptr (memaddr frame.prevframe reg.newfp))
+localmake "newdepth first id.frame :id
+ifelse :newdepth > :lexical.depth ~
+       [code (list "store reg.frameptr
+                   (memaddr frame.outerframe reg.newfp))] ~
+       [localmake "tempreg newregister
+        code (list "rload :tempreg (memaddr frame.outerframe reg.frameptr))
+        repeat (:lexical.depth - :newdepth)
+               [code (list "rload :tempreg 
+                           (memaddr frame.outerframe :tempreg))]
+        code (list "store :tempreg (memaddr frame.outerframe reg.newfp))
+        regfree :tempreg]
+if not emptyp :vartypes [mustbe "|(|  procargs :vartypes :offset]
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "store :i (memaddr frame.regsave+:i reg.frameptr))]]
+code (list "add reg.frameptr reg.newfp reg.zero)
+code (list "rload reg.newfp (memaddr frame.save.newfp reg.frameptr))
+code (list "jal reg.retaddr (word "" :lname))
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "rload :i (memaddr frame.regsave+:i reg.frameptr))]]
+end
+
+to procargs :types :offset
+if emptyp :types [mustbe "|)|  stop]
+localmake "next procarg first :types :offset
+if not emptyp butfirst :types [mustbe ",]
+procargs butfirst :types :offset+:next
+end
+
+to procarg :type :offset
+local "result
+if equalp first :type "var [output procvararg last :type]
+if listp :type [output procarrayarg :type]
+make "result check.type :type pexpr
+code (list "store :result (memaddr :offset reg.newfp))
+regfree :result
+output 1
+end
+
+to procvararg :ftype
+local [pname id type index]
+make "pname token
+make "id getid :pname
+make "type id.type :id
+ifelse wordp :ftype ~
+       [setindex "true] ~
+       [make "index 0]
+if not equalp :type :ftype ~
+   [(throw "error sentence :pname [arg wrong type])]
+localmake "target memsetup (id.pointer :id) (id.varp :id) :index
+localmake "tempreg newregister
+code (list "addi :tempreg (last :target) (first :target))
+code (list "store :tempreg (memaddr :offset reg.newfp))
+regfree last :target
+regfree :tempreg
+output 1
+end
+
+to procarrayarg :type
+localmake "pname token
+localmake "id getid :pname
+if not equalp :type (id.type :id) ~
+   [(throw "error (sentence "array :pname [wrong type for arg]))]
+localmake "size arraysize :type
+localmake "rtarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "pointreg newregister
+code (list "addi :pointreg reg.newfp :offset)
+localmake "ltarget (list 0 :pointreg)
+copyarray
+output :size
+end
+
+;; Simple statements: assignment statement (including function value)
+
+to passign
+local [name id type index value pointer target]
+make "name token
+make "index []
+ifbe "|[| [make "index commalist [pexpr] mustbe "|]|]
+mustbe "|:=|
+make "id getid :name
+make "pointer id.pointer :id
+make "type id.type :id
+passign1
+end
+
+to pfunset
+local [name id type index value pointer target]
+make "name token
+make "index []
+if not equalp :name :procname ~
+   [(throw "error sentence [assign to wrong function] :name)]
+mustbe "|:=|
+make "pointer (list :lexical.depth frame.retval)
+make "type first thing lname :name
+make "id (list :name :type :pointer "false)
+passign1
+end
+
+to passign1
+if and (listp :type) (emptyp :index) [parrayassign :id  stop]
+setindex "false
+make "value check.type :type pexpr
+codestore :value (id.pointer :id) (id.varp :id) :index
+regfree :value
+end
+
+to noimmediate :value
+if equalp exp.mode :value "immediate ~
+   [localmake "reg newregister
+    code (list "addi :reg reg.zero exp.value :value)
+    output (list exp.type :value "register :reg)]
+output :value
+end
+
+to check.type :type :result
+if equalp :type "real [output preal :result]
+if equalp :type "integer [output pinteger :result]
+if equalp :type "char [output pchar :result]
+if equalp :type "boolean [output pboolean :result]
+end
+
+to preal :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "real [output exp.value :pval]
+output pinteger :pval
+end
+
+to pinteger :expr [:pval noimmediate :expr]
+local "type
+make "type exp.type :pval
+if memberp :type [integer boolean char] [output exp.value :pval]
+(throw "error sentence exp.type :pval [isn't ordinal])
+end
+
+to pchar :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "char [output exp.value :pval]
+(throw "error sentence exp.type :pval [not character value])
+end
+
+to pboolean :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "boolean [output exp.value :pval]
+(throw "error sentence exp.type :pval [not true or false])
+end
+
+to parrayassign :id
+localmake "right token
+if equalp first :right "' ~
+   [pstringassign :type (butlast butfirst :right)  stop]
+localmake "rid getid :right
+if not equalp (id.type :id) (id.type :rid) ~
+   [(throw "error (sentence "arrays :name "and :right [unequal types]))]
+localmake "size arraysize id.type :id
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "rtarget memsetup (id.pointer :rid) (id.varp :rid) 0
+copyarray
+end
+
+to pstringassign :type :string
+if not equalp first :type "char [stringlose]
+if not emptyp butfirst last :type [stringlose]
+if not equalp (last first last :type) (count :string) [stringlose]
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+pstringassign1 newregister (first :ltarget) (last :ltarget) :string
+regfree last :ltarget
+end
+
+to pstringassign1 :tempreg :offset :reg :string
+if emptyp :string [regfree :tempreg  stop]
+code (list "addi :tempreg reg.zero ascii first :string)
+code (list "store :tempreg (memaddr :offset :reg))
+pstringassign1 :tempreg :offset+1 :reg (butfirst :string)
+end
+
+to stringlose
+(throw "error sentence :name [not string array or wrong size])
+end
+
+;; Multiple array indices to linear index computation
+
+to setindex :parseflag
+ifelse listp :type ~
+       [if :parseflag
+           [mustbe "|[|  make "index commalist [pexpr]  mustbe "|]| ]
+        make "index lindex last :type :index
+        make "type first :type] ~
+       [make "index 0]
+end
+
+to lindex :bounds :index
+output lindex1 (offset pinteger noimmediate first :index
+                       first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to lindex1 :sofar :bounds :index
+if emptyp :bounds [output :sofar]
+output lindex1 (nextindex :sofar
+                          last first :bounds
+                          pinteger noimmediate first :index
+                          first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to nextindex :old :factor :new :offset
+code (list "muli :old :old :factor)
+localmake "newreg offset :new :offset
+code (list "add :old :old :newreg)
+regfree :newreg
+output :old
+end
+
+to offset :indexreg :lowbound
+if not equalp :lowbound 0 [code (list "subi :indexreg :indexreg :lowbound)]
+output :indexreg
+end
+
+;; Memory interface: load and store instructions
+
+to codeload :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "rload :reg targetaddr)
+regfree last :target
+end
+
+to codestore :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "store :reg targetaddr)
+regfree last :target
+end
+
+to targetaddr
+output memaddr (first :target) (last :target)
+end
+
+to memaddr :offset :index
+output (word :offset "\( :index "\))
+end
+
+to memsetup :pointer :varflag :index
+localmake "depth first :pointer
+localmake "offset last :pointer
+local "newreg
+ifelse equalp :depth 0 ~
+       [make "newreg reg.globalptr] ~
+       [ifelse equalp :depth :lexical.depth
+               [make "newreg reg.frameptr]
+               [make "newreg newregister
+                code (list "rload :newreg
+                           (memaddr frame.outerframe reg.frameptr))
+                repeat (:lexical.depth - :depth) - 1
+                       [code (list "rload :newreg
+                                   (memaddr frame.outerframe :newreg))]]]
+if :varflag ~
+   [ifelse :newreg = reg.frameptr
+           [make "newreg newregister
+            code (list "rload :newreg (memaddr :offset reg.frameptr))]
+           [code (list "rload :newreg (memaddr :offset :newreg))]
+    make "offset 0]
+if not equalp :index 0 ~
+   [code (list "add :index :index :newreg)
+    regfree :newreg
+    make "newreg :index]
+output list :offset :newreg
+end
+
+to copyarray
+localmake "looptag gensym
+localmake "sizereg newregister
+code (list "addi :sizereg reg.zero :size)
+code :looptag
+localmake "tempreg newregister
+code (list "rload :tempreg (memaddr (first :rtarget) (last :rtarget)))
+code (list "store :tempreg (memaddr (first :ltarget) (last :ltarget)))
+code (list "addi (last :rtarget) (last :rtarget) 1)
+code (list "addi (last :ltarget) (last :ltarget) 1)
+code (list "subi :sizereg :sizereg 1)
+code (list "gtr :tempreg :sizereg reg.zero)
+code (list "jumpt :tempreg (word "" :looptag))
+regfree :sizereg
+regfree :tempreg
+regfree last :ltarget
+regfree last :rtarget
+end
+
+;; Expressions
+
+to pexpr
+local [opstack datastack parenlevel]
+make "opstack [[popen 1 0]]
+make "datastack []
+make "parenlevel 0
+output pexpr1
+end
+
+to pexpr1
+local [token op]
+make "token token
+while [equalp :token "|(|] [popen  make "token token]
+make "op pgetunary :token
+if not emptyp :op [output pexprop :op]
+push "datastack pdata :token
+make "token token
+while [and (:parenlevel > 0) (equalp :token "|)| )] ~
+      [pclose  make "token token]
+make "op pgetbinary :token
+if not emptyp :op [output pexprop :op]
+make "peektoken :token
+pclose
+if not emptyp :opstack [(throw "error [too many operators])]
+if not emptyp butfirst :datastack [(throw "error [too many operands])]
+output pop "datastack
+end
+
+to pexprop :op
+while [(op.prec :op) < (1 + op.prec first :opstack)] [ppopop]
+push "opstack :op
+output pexpr1
+end
+
+to popen
+push "opstack [popen 1 0]
+make "parenlevel :parenlevel + 1
+end
+
+to pclose
+while [(op.prec first :opstack) > 0] [ppopop]
+ignore pop "opstack
+make "parenlevel :parenlevel - 1
+end
+
+to pgetunary :token
+output gprop :token "unary
+end
+
+to pgetbinary :token
+output gprop :token "binary
+end
+
+to ppopop
+local [op function args left right type reg]
+make "op pop "opstack
+make "function op.instr :op
+if equalp :function "plus [stop]
+make "args op.nargs :op
+make "right pop "datastack
+make "left (ifelse equalp :args 2 [pop "datastack] [[[] []]])
+make "type pnewtype :op exp.type :left exp.type :right
+if equalp exp.mode :left "immediate ~
+   [localmake "leftreg newregister
+    code (list "addi :leftreg reg.zero exp.value :left)
+    make "left (list exp.type :left "register :leftreg)]
+ifelse equalp exp.mode :left "register ~
+       [make "reg exp.value :left] ~
+       [ifelse equalp exp.mode :right "register
+               [make "reg exp.value :right]
+               [make "reg newregister]]
+if equalp :function "minus ~
+   [make "left (list exp.type :right "register reg.zero)
+    make "function "sub
+    make "args 2]
+if equalp exp.mode :right "immediate ~
+   [make "function word :function "i]
+ifelse equalp :args 2 ~
+       [code (list :function :reg exp.value :left exp.value :right)] ~
+       [code (list :function :reg exp.value :right)]
+if not equalp :reg exp.value :left [regfree exp.value :left]
+if (and (equalp exp.mode :right "register)
+        (not equalp :reg exp.value :right)) ~
+   [regfree exp.value :right]
+push "datastack (list :type "register :reg)
+end
+
+to pnewtype :op :ltype :rtype
+local "type
+make "type op.types :op
+if emptyp :ltype [make "ltype :rtype]
+if not emptyp last :type [pchecktype last :type :ltype :rtype]
+if and (equalp :ltype "real) (equalp :rtype "integer) [make "rtype "real]
+if and (equalp :ltype "integer) (equalp :rtype "real) [make "ltype "real]
+if not equalp :ltype :rtype [(throw "error [type clash])]
+if emptyp last :type ~
+   [if not memberp :rtype [integer real]
+       [(throw "error [nonarithmetic type])]]
+if emptyp first :type [output :rtype]
+output first :type
+end
+
+to pchecktype :want :left :right
+if not equalp :want :left [(throw "error (sentence :left "isn't :want))]
+if not equalp :want :right [(throw "error (sentence :right "isn't :want))]
+end
+
+;; Expression elements
+
+to pdata :token
+if equalp :token "true [output [boolean immediate 1]]
+if equalp :token "false [output [boolean immediate 0]]
+if equalp first :token "' [output pchardata :token]
+if numberp :token [output (list numtype :token "immediate :token)]
+localmake "id getid :token
+if emptyp :id [(throw "error sentence [undefined symbol] :token)]
+localmake "type id.type :id
+if equalp :type "function [output pfuncall :token]
+local "index
+setindex "true
+localmake "reg newregister
+codeload :reg (id.pointer :id) (id.varp :id) :index
+output (list :type "register :reg)
+end
+
+to pchardata :token
+if not equalp count :token 3 ~
+   [(throw "error sentence :token [not single character])]
+output (list "char "immediate ascii first butfirst :token)
+end
+
+to numtype :number
+if memberp ". :number [output "real]
+if memberp "e :number [output "real]
+output "integer
+end
+
+to pfuncall :pname
+localmake "id getid :pname
+localmake "lname id.lname :id
+if namep (word "need :lname) [make (word "need :lname) "true]
+localmake "vartypes thing :lname
+localmake "returntype first :vartypes
+make "vartypes butfirst :vartypes
+pproccall1 framesize.fun
+localmake "reg newregister
+code (list "add :reg reg.retval reg.zero)
+output (list :returntype "register :reg)
+end
+
+;; Parsing assistance
+
+to code :stuff
+if emptyp :stuff [stop]
+push :codeinto :stuff
+end
+
+to commalist :test [:sofar []]
+local [result token]
+make "result run :test
+if emptyp :result [output :sofar]
+ifbe ", [output (commalist :test (lput :result :sofar))]
+output lput :result :sofar
+end
+
+.macro ifbe :wanted :action
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output []
+end
+
+.macro ifbeelse :wanted :action :else
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output :else
+end
+
+to mustbe :wanted
+localmake "token token
+if equalp :token :wanted [stop]
+(throw "error (sentence "expected :wanted "got :token))
+end
+
+to newregister
+for [i reg.firstfree :numregs-1] ~
+    [if not item :i :regsused [setitem :i :regsused "true  output :i]]
+(throw "error [not enough registers available])
+end
+
+to regfree :reg
+setitem :reg :regsused "false
+end
+
+to reservedp :word
+output memberp :word [and array begin case const div do downto else end ~
+                      file for forward function goto if in label mod nil ~
+                      not of packed procedure program record repeat set ~
+                      then to type until var while with]
+end
+
+;; Lexical analysis
+
+to token
+local [token char]
+if namep "peektoken [make "token :peektoken
+                     ern "peektoken   output :token]
+make "char getchar
+if equalp :char "|{| [skipcomment output token]
+if equalp :char char 32 [output token]
+if equalp :char char 13 [output token]
+if equalp :char char 10 [output token]
+if equalp :char "' [output string "']
+if memberp :char [+ - * / = ( , ) |[| |]| |;|] [output :char]
+if equalp :char "|<| [output twochar "|<| [= >]]
+if equalp :char "|>| [output twochar "|>| [=]]
+if equalp :char ". [output twochar ". [.]]
+if equalp :char ": [output twochar ": [=]]
+if numberp :char [output number :char]
+if letterp ascii :char [output token1 lowercase :char]
+(throw "error sentence [unrecognized character:] :char)
+end
+
+to skipcomment
+if equalp getchar "|}| [stop]
+skipcomment
+end
+
+to string :string
+local "char
+make "char getchar
+if not equalp :char "' [output string word :string :char]
+make "char getchar
+if equalp :char "' [output string word :string :char]
+make "peekchar :char
+output word :string "'
+end
+
+to twochar :old :ok
+localmake "char getchar
+if memberp :char :ok [output word :old :char]
+make "peekchar :char
+output :old
+end
+
+to number :num
+local "char
+make "char getchar
+if equalp :char ". ~
+   [make "char getchar ~
+    ifelse equalp :char ". ~
+           [make "peektoken ".. output :num] ~
+           [make "peekchar :char output number word :num ".]]
+if equalp :char "e [output number word :num twochar "e [+ -]]
+if numberp :char [output number word :num :char]
+make "peekchar :char
+output :num
+end
+
+to token1 :token
+local "char
+make "char getchar
+if or letterp ascii :char numberp :char ~
+   [output token1 word :token lowercase :char]
+make "peekchar :char
+output :token
+end
+
+to letterp :code
+if and (:code > 64) (:code < 91) [output "true]
+output and (:code > 96) (:code < 123)
+end
+
+to getchar
+local "char
+if namep "peekchar [make "char :peekchar  ern "peekchar  output :char]
+if eofp [output char 1]
+output rc1
+end
+
+to rc1
+local "result
+make "result readchar
+type :result
+output :result
+end
+
+;; Data abstraction: ID List
+
+to newlname :word
+if memberp :word :namesused [output gensym]
+if namep word "% :word [output gensym]
+push "namesused :word
+output word "% :word
+end
+
+to lname :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 3 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to gettype :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 2 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to getid :word [:list :idlist]
+if emptyp :list [output []]
+if equalp :word first first :list [output first :list]
+output (getid :word butfirst :list)
+end
+
+to id.type :id
+output item 2 :id
+end
+
+to id.pointer :id
+output item 3 :id
+end
+
+to id.lname :id
+output item 3 :id
+end
+
+to id.varp :id
+output item 4 :id
+end
+
+to id.frame :id
+output item 4 :id
+end
+
+;; Data abstraction: Frame slots
+
+to frame.retaddr
+output 0
+end
+
+to frame.save.newfp
+output 1
+end
+
+to frame.outerframe
+output 2
+end
+
+to frame.prevframe
+output 3
+end
+
+to frame.regsave
+output 4
+end
+
+to framesize.proc
+output 4+:numregs
+end
+
+to frame.retval
+output 4+:numregs
+end
+
+to framesize.fun
+output 5+:numregs
+end
+
+;; Data abstraction: Operators
+
+to op.instr :op
+output first :op
+end
+
+to op.nargs :op
+output first bf :op
+end
+
+to op.types :op
+output item 3 :op
+end
+
+to op.prec :op
+output last :op
+end
+
+;; Data abstraction: Expressions
+
+to exp.type :exp
+output first :exp
+end
+
+to exp.mode :exp
+output first butfirst :exp
+end
+
+to exp.value :exp
+output last :exp
+end
+
+;; Data abstraction: Registers
+
+to reg.zero
+output 0
+end
+
+to reg.retaddr
+output 1
+end
+
+to reg.stackptr
+output 2
+end
+
+to reg.globalptr
+output 3
+end
+
+to reg.frameptr
+output 4
+end
+
+to reg.newfp
+output 5
+end
+
+to reg.retval
+output 6
+end
+
+to reg.firstfree
+output 7
+end
+
+;; Runtime (machine simulation)
+
+to prun :progname
+localmake "prog thing word "% :progname
+localmake "regs (array :numregs 0)
+local filter "wordp :prog
+foreach :prog [if wordp ? [make ? ?rest]]
+localmake "memory (array :memsize 0)
+setitem 0 :regs 0
+if not procedurep "add [runsetup]
+prun1 :prog
+end
+
+to prun1 :pc
+if emptyp :pc [stop]
+if listp first :pc [run first :pc]
+prun1 butfirst :pc
+end
+
+to rload :reg :offset :index
+setitem :reg :regs (item (item :index :regs)+:offset :memory)
+end
+
+to store :reg :offset :index
+setitem (item :index :regs)+:offset :memory (item :reg :regs)
+end
+
+to runsetup
+foreach [[add sum] [sub difference] [mul product] [quo quotient]
+         [div [int quotient]] [rem remainder] [land product]
+         [lor [tobool lessp 0 sum]] [eql [tobool equalp]]
+         [neq [tobool not equalp]] [less [tobool lessp]]
+         [gtr [tobool greaterp]] [leq [tobool not greaterp]]
+         [geq [tobool not lessp]]] ~
+        [define first ?
+                `[[dest src1 src2]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  (item :src2 :regs)]]
+         define word first ? "i
+                `[[dest src1 immed]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  :immed]]]
+foreach [[lnot [difference 1]] [sint int] [sround round] [srandom random]] ~
+        [define first ?
+                `[[dest src]
+                  [setitem :dest :regs ,@[last ?] (item :src :regs)]]
+         define word first ? "i
+                `[[dest immed]
+                  [setitem :dest :regs ,@[last ?] :immed]]]
+end
+
+to tobool :tf
+output ifelse :tf [1] [0]
+end
+
+to jump :label
+make "pc fput :label thing :label
+end
+
+to jumpt :reg :label
+if (item :reg :regs)=1 [jump :label]
+end
+
+to jumpf :reg :label
+if (item :reg :regs)=0 [jump :label]
+end
+
+to jr :reg
+make "pc item :reg :regs
+end
+
+to jal :reg :label
+setitem :reg :regs :pc
+jump :label
+end
+
+to putch :width :reg
+spaces :width 1
+type char (item :reg :regs)
+end
+
+to putstr :width :string
+spaces :width (count first :string)
+type :string
+end
+
+to puttf :width :bool
+spaces :width 1
+type ifelse (item :bool :regs)=0 ["F] ["T]
+end
+
+to putint :width :reg
+localmake "num (item :reg :regs)
+spaces :width count :num
+type :num
+end
+
+to putreal :width :reg
+putint :width :reg
+end
+
+to spaces :width :count
+if :width > :count [repeat :width - :count [type "| |]]
+end
+
+to newline
+print []
+end
+
+to exit
+make "pc [exit]
+end
diff --git a/js/games/nluqo.github.io/~bh/v3ch5/pif.gif b/js/games/nluqo.github.io/~bh/v3ch5/pif.gif
new file mode 100644
index 0000000..19e4153
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/pif.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/rtn1.gif b/js/games/nluqo.github.io/~bh/v3ch5/rtn1.gif
new file mode 100644
index 0000000..1fc03b4
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/rtn1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/rtn2.gif b/js/games/nluqo.github.io/~bh/v3ch5/rtn2.gif
new file mode 100644
index 0000000..c6ef962
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/rtn2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/stack1.gif b/js/games/nluqo.github.io/~bh/v3ch5/stack1.gif
new file mode 100644
index 0000000..74f8640
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/stack1.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/stack2.gif b/js/games/nluqo.github.io/~bh/v3ch5/stack2.gif
new file mode 100644
index 0000000..28fd54f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/stack2.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/tokenized.gif b/js/games/nluqo.github.io/~bh/v3ch5/tokenized.gif
new file mode 100644
index 0000000..d94ac01
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/tokenized.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/unambiguous.gif b/js/games/nluqo.github.io/~bh/v3ch5/unambiguous.gif
new file mode 100644
index 0000000..b944d22
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/unambiguous.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch5/v3ch5.html b/js/games/nluqo.github.io/~bh/v3ch5/v3ch5.html
new file mode 100644
index 0000000..927e3cf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/v3ch5.html
@@ -0,0 +1,3297 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 5: Programming Language Implementation</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Programming Language Implementation</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch05.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch6/v3ch6.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="pascal.lg"><CODE>pascal</CODE></A>
+
+<P>We are now ready to turn from the questions of language design to those of
+compiler implementation.  A Pascal compiler is a much larger programming
+project than most of the ones we've explored so far.  You might well ask,
+&quot;where do we <EM>begin</EM> in writing a compiler?&quot; My goal in this chapter
+is to show some of the parts that go into a compiler design.
+
+<P>A compiler translates programs from a language like Pascal into the
+machine language of some particular computer model.  My compiler
+translates into a simplified, simulated machine language; the compiled
+programs are actually carried out by another Logo program, the simulator,
+rather than directly by the computer hardware.  The advantage of using this
+simulated machine language is that this compiler will work no matter what
+kind of computer you have; also, the simplifications in this simulated
+machine allow me to leave out many confusing details of a practical compiler.
+Our machine language is, however, realistic enough to give you a good sense
+of what compiling into a real machine language would be like; it's loosely
+based on the MIPS microprocessor design.  You'll see in a moment that most
+of the structure of the compiler is independent of the target language,
+anyway.
+
+<P>
+
+<P>Here is a short, uninteresting Pascal program:
+
+<P><PRE>program test;
+
+procedure doit(n:integer);
+   begin
+      writeln(n,n*n)
+   end;
+
+begin
+   doit(3)
+end.
+</PRE>
+
+<P>If you type this program into a disk file and then compile it
+using <CODE>compile</CODE> as described in Chapter 4, the compiler will translate
+the program into this sequence of instructions, contained in a list in the
+variable named <CODE>%test</CODE>:
+
+<P>
+
+<P><PRE>[       [add 3 0 0]
+        [add 4 0 0]
+        [addi 2 0 36]
+        [jump &quot;g1]
+%doit   [store 1 0(4)]
+        [jump &quot;g2]
+g2      [rload 7 36(4)]
+        [putint 10 7]
+        [rload 7 36(4)]
+        [rload 8 36(4)]
+        [mul 7 7 8]
+        [putint 10 7]
+        [newline]
+        [rload 1 0(4)]
+        [add 2 4 0]
+        [rload 4 3(2)]
+        [jr 1]
+g1      [store 5 1(2)]
+        [add 5 2 0]
+        [addi 2 2 37]
+        [store 4 3(5)]
+        [store 4 2(5)]
+        [addi 7 0 3]
+        [store 7 36(5)]
+        [add 4 5 0]
+        [rload 5 1(4)]
+        [jal 1 &quot;%doit]
+        [exit]
+]
+</PRE>
+
+<P>I've displayed this list of instructions with some extra spacing
+thrown in to make it look somewhat like a typical <EM>assembler</EM> listing.
+(An assembler is a program that translates a notation like <CODE>add 3 0 0</CODE>
+into a binary number, the form in which the machine hardware actually
+recognizes these instructions.)  A real assembler listing wouldn't have the
+square brackets that Logo uses to mark each sublist, but would instead
+depend on the convention that each instruction occupies one line.
+
+<P>The first three instructions carry out initialization that would be the same
+for any compiled Pascal program; the fourth is a <CODE>jump</CODE> instruction that
+tells the (simulated) computer to skip to the instruction following the
+<EM>label</EM> <CODE>g1</CODE> that appears later in the program.  (A word that
+isn't part of a sublist is a label.)  In Pascal, the body of the main
+program comes after the declarations of procedures; this <CODE>jump</CODE>
+instruction allows the compiler to translate the parts of the program in the
+order in which they appear.
+
+<P>(Two instructions later, you'll notice a <CODE>jump</CODE> to a label that comes
+right after the jump instruction!  The compiler issues this useless
+instruction just in case some internal procedures were declared within
+the procedure <CODE>doit</CODE>.  A better compiler would include an <EM>
+optimizer</EM> that would go through the compiled program looking for
+ways to eliminate unnecessary instructions such as this one.  The optimizer
+is the most important thing that I've left out of my compiler.)
+
+<P>We're not ready yet to talk in detail about how the compiled instructions
+represent the Pascal program, but you might be able to guess certain things.
+For example, the variable <CODE>n</CODE> in procedure <CODE>doit</CODE> seems to be
+represented as <CODE>36(4)</CODE> in the compiled program; you can see where <CODE>
+36(4)</CODE> is printed and then multiplied by itself, although it may not yet be
+clear to you what the numbers <CODE>7</CODE> and <CODE>8</CODE> have to do with anything.
+Before we get into those details, I want to give a broader overview of
+the organization of the compiler.
+
+<P>The compilation process is divided into three main pieces.  First and
+simplest is <EM>tokenization.</EM> The compiler initially sees the
+source program as a string of characters: <CODE>p</CODE>, then <CODE>r</CODE>, and so on,
+including spaces and line separators.  The first step in compilation is to
+turn these characters into symbols, so that the later stages of compilation
+can deal with the word <CODE>program</CODE> as a unit.  The second piece of the
+compiler is the <EM>parser,</EM> the part that recognizes certain
+patterns of symbols as representing meaningful units.  &quot;Oh,&quot; says the
+parser, &quot;I've just seen the word <CODE>procedure</CODE> so what comes next must be
+a procedure header and then a <CODE>begin</CODE>-<CODE>end</CODE> block for the body of
+the procedure.&quot; Finally, there is the process of <EM>
+code generation,</EM> in which each unit that was recognized by the
+parser is actually translated into the equivalent machine language
+instructions.
+
+<P>(I don't mean that parsing and code generation happen separately, one after
+the other, in the compiler's algorithm.  In fact each meaningful unit is
+translated as it's encountered, and the translation of a large unit like a
+procedure includes, recursively, the translation of smaller units like
+statements.  But parsing and code generation are conceptually two different
+tasks, and we'll talk about them separately.)
+
+<P><H2>Formal Syntax Definition</H2>
+
+<P>One common starting place is to develop a formal definition for the language
+we're trying to compile.  The regular expressions of Chapter 1 are an
+example of what I mean by a formal definition.  A
+regular expression tells
+us unambiguously that certain strings of characters are accepted as members
+of the category defined by the expression, while other strings aren't.  A
+language like Pascal is too complicated to be described by a regular
+expression, but other kinds of formal definition can be used.
+
+<P>The formal systems of Chapter 1 just gave a yes-or-no decision for any input
+string:  Is it, or is it not, accepted in the language under discussion?
+That's not quite good enough for a compiler.  We don't just want to know
+whether a Pascal program is syntactically correct; we want a translation of
+the program into some executable form.  Nevertheless, it turns out to be
+worthwhile to begin by designing a formal acceptor for Pascal.  That part of
+the compiler--the part that determines the syntactic structure of the
+source program--is called the <EM>parser.</EM>  Later we'll add provisions for
+<EM>code generation:</EM> the translation of each syntactic unit of the
+source program into a piece of <EM>object</EM> (executable) program that
+carries out the meaning (the <EM>semantics</EM>) of that unit.
+
+<P>One common form in which programming languages are described is the
+<EM>production rule</EM> notation mentioned briefly in Chapter 1.  For
+example, here is part of a specification for Pascal:
+
+<P><PRE>program:  program <EM>identifier</EM> <EM>filenames</EM> ; <EM>block</EM> .
+
+filenames:  | ( <EM>idlist</EM> )
+
+idlist:  <EM>identifier</EM> | <EM>idlist</EM> , <EM>identifier</EM>
+
+block:  <EM>varpart</EM> <EM>procpart</EM> <EM>compound</EM>
+
+varpart:  | var <EM>varlist</EM>
+
+procpart:  | <EM>procpart</EM> <EM>procedure</EM> | <EM>procpart</EM> <EM>function</EM>
+
+compound:  begin <EM>statements</EM> end
+
+statements:  <EM>statement</EM> | <EM>statements</EM> ; <EM>statement</EM>
+
+procedure:  procedure <EM>identifier</EM> <EM>args</EM> ; <EM>block</EM> ;
+
+function:  function <EM>identifier</EM> <EM>args</EM> : <EM>type</EM> ; <EM>block</EM> ;
+</PRE>
+
+<P>A program consists of six components.  Some of these components
+are particular words (like <CODE>program</CODE>) or punctuation marks; other
+components are defined in terms of even smaller units by other
+rules.<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The <EM>filenames</EM> component is an optional list of
+names of files, part of Pascal's input/output capability; my compiler doesn't
+handle file input or output, so it ignores this list if there is one.</SMALL></BLOCKQUOTE></SMALL><P>A vertical bar (<CODE>|</CODE>) in a rule separates alternatives; an idlist
+(identifier list) is either a single identifier or a smaller idlist followed
+by a comma and another identifier.  Sometimes one of the alternatives in a
+rule is empty; for example, a varpart can be empty because a block need not
+declare any local variables.
+
+<P>The goal in designing a formal specification is to capture the
+syntactic hierarchy
+of the language you're describing.  For example, you could define
+a Pascal type as
+
+<P><PRE>type:  integer | real | char | boolean | array <EM>range</EM> of integer |
+               packed array <EM>range</EM> of integer | array <EM>range</EM> of real |
+               ...
+</PRE>
+
+<P>but it's better to say
+
+<P><PRE>type:  <EM>scalar</EM> | array <EM>range</EM> of <EM>scalar</EM> |
+               packed array <EM>range</EM> of <EM>scalar</EM>
+
+scalar:  integer | real | char | boolean
+</PRE>
+
+<P>Try completing the syntactic description of my subset of Pascal along these
+lines.  You might also try a similar syntactic description of Logo.  Which
+is easier?
+
+<P>Another kind of formal description is
+
+the <EM>recursive transition network</EM> (RTN).
+An RTN is like a finite-state machine except that instead
+of each arrow representing a single symbol in the machine's alphabet, an
+arrow can be labeled with the name of another RTN; such an arrow represents
+any string of symbols accepted by that RTN.
+
+<P>Below I show two RTNs, one for a program and one for a
+sequence of statements (the body of a compound statement).
+In the former, the transition from state 5 to state 6 is followed if what
+comes next in the Pascal program is a string of symbols accepted by the RTN
+named &quot;block.&quot; In these diagrams, a word in <CODE>typewriter</CODE> style like
+<CODE>program</CODE> represents a single symbol, as in a finite-state machine diagram,
+while a word in <EM>italics</EM> like <EM>block</EM> represents any
+string accepted by the RTN of that name.  The <EM>statements</EM> RTN
+is recursive; one path through the network involves a transition that
+requires parsing a smaller <EM>statements</EM> unit.
+
+<P><CENTER><IMG SRC="rtn1.gif" ALT="figure: rtn1"></CENTER>
+<P><CENTER><IMG SRC="rtn2.gif" ALT="figure: rtn2"></CENTER>
+
+<P><H2>Tokenization</H2>
+
+
+<P>In both the production rules and the RTNs I've treated words like <CODE>
+program</CODE> as a single symbol of the &quot;alphabet&quot; of the language.  It would
+be possible, of course, to use single characters as the alphabetic symbols
+and describe the language in this form:
+
+<P><CENTER><IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/tokenrtn.gif" ALT="figure: tokenrtn"></CENTER>
+
+<P>Extending the formal description down to that level, though, makes
+it hard to see the forest for the trees; the important structural patterns
+get lost in details about, for instance, where spaces are required between
+words (as in <CODE>program tower</CODE>), where they're optional (as in <CODE>
+2 + 3</CODE>), and where they're not allowed at all (<CODE>prog
+ram</CODE>).  A similar complication is that a comment in braces can
+be inserted anywhere in the program; it would be enormously complicated if
+every state of every RTN had to have a transition for a left brace beginning
+a comment.
+
+<P>Most language processors therefore group the characters of the source
+program into <EM>tokens</EM> used as the alphabet for the formal
+grammar.  A token may be a single character, such as a punctuation mark, or
+a group of characters, such as a word or a number.  Spaces do not ordinarily
+form part of tokens, although in the Pascal compiler one kind of token is a
+quoted character string that can include spaces.  Comments are also removed
+during tokenization.  Here's what the <CODE>tower</CODE> program from Chapter 4
+looks like in token form:
+
+<P><CENTER><IMG SRC="tokenized.gif"></CENTER>
+
+<P>Tokenization is what the Logo <CODE>readlist</CODE> operation does when
+it uses spaces and brackets to turn the string of characters you type into
+a sequence of words and lists.
+
+<P>Tokenization is also called <EM>lexical analysis.</EM> This term has
+nothing to do with lexical scope; the word &quot;lexical&quot; is used not to remind
+us of a dictionary but because the root &quot;lex&quot; means <EM>word</EM> and
+lexical analysis divides the source program into words.
+
+<P>I've been talking as if the Pascal compiler first went through the entire
+source file tokenizing it and then went back and parsed the result.  That's
+not actually how it works; instead, the parser just calls a procedure named
+<CODE>token</CODE> whenever it wants to see the next token in the source file.
+I've already mentioned that Pascal was designed to allow the compiler to
+read straight through the source program without jumping around and
+re-reading parts of it.
+
+<P><H2>Lookahead</H2>
+
+
+<P>Consider the situation when the parser has recognized the first token
+(<CODE>program</CODE>) as the beginning of a program and it invokes <CODE>token</CODE> to
+read the second token, the program name.  In the <CODE>tower</CODE> program, the
+desired token is <CODE>tower</CODE>.  <CODE>Token</CODE> reads the letter <CODE>t</CODE>; since
+it's a letter, it must be the beginning of an identifier.  Any number of
+letters or digits following the <CODE>t</CODE> will be part of the identifier, but
+the first non-alphanumeric character ends the token.  (In this case, the
+character that ends the token will be a semicolon.)
+
+<P>What this means is that <CODE>token</CODE> has to read one character too many in
+order to find the end of the word <CODE>tower</CODE>.  The semicolon isn't
+part of that token; it's part of the <EM>following</EM> token.  (In fact it's
+the entire following token, but in other situations that need not be true.)
+Ordinarily <CODE>token</CODE> begins its work by reading a character from the
+source file, but the next time we call <CODE>token</CODE> it has to deal with the
+character it's already read.  It would simplify things enormously if <CODE>
+token</CODE> could &quot;un-read&quot; the semicolon that ends the token <CODE>
+tower</CODE>.  It's possible to allow something like un-reading by using a
+technique called <EM>lookahead.</EM>
+
+<P><PRE>to getchar
+local &quot;char
+if namep &quot;peekchar
+    [make &quot;char :peekchar
+     ern &quot;peekchar
+     output :char]
+output readchar
+end
+</PRE>
+
+<P><CODE>Getchar</CODE> is the procedure that <CODE>token</CODE> calls to read the next
+character from the source file.  Ordinarily <CODE>getchar</CODE> just invokes the
+primitive <CODE>readchar</CODE> to read a character from the file.<SUP>*</SUP>  But if there is a variable named <CODE>peekchar</CODE>, then <CODE>
+getchar</CODE> just outputs whatever is in that variable without looking at the
+file.  <CODE>Token</CODE> can now un-read a character by saying
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>I'm lying.
+The real <CODE>getchar</CODE> is slightly more complicated because it checks for an
+unexpected end of file and because it prints the characters that it reads
+onto the screen.  The program listing at the end of the chapter tells the
+whole story.</SMALL></BLOCKQUOTE></SMALL><P><PRE>make &quot;peekchar :char
+</PRE>
+
+<P>This technique only allows <CODE>token</CODE> to un-read a single
+character at a time.  It would be possible to replace <CODE>peekchar</CODE> with a
+<EM>list</EM> of pre-read characters to be recycled.  But in fact one is
+enough.  When a program &quot;peeks at&quot; characters before they're read &quot;for
+real,&quot; the technique is called <EM>lookahead.</EM>  <CODE>Getchar</CODE> uses
+<EM>one-character lookahead</EM> because <CODE>peekchar</CODE> only stores a single
+character.
+
+<P>It turns out that, for similar reasons, the Pascal parser will occasionally
+find it convenient to peek at a <EM>token</EM> and re-read it later.  <CODE>
+Token</CODE> therefore provides for one-<EM>token</EM> lookahead using a similar
+mechanism:
+
+<P><PRE>to token
+local [token char]
+if namep &quot;peektoken [make &quot;token :peektoken
+                     ern &quot;peektoken   output :token]
+make &quot;char getchar
+if equalp :char &quot;|{| [skipcomment output token]
+if equalp :char char 32 [output token]
+if equalp :char char 13 [output token]
+if equalp :char char 10 [output token]
+if equalp :char &quot;' [output string &quot;']
+if memberp :char [+ - * / = ( , ) |[| |]| |;|] [output :char]
+if equalp :char &quot;|&lt;| [output twochar &quot;|&lt;| [= &gt;]]
+if equalp :char &quot;|&gt;| [output twochar &quot;|&gt;| [=]]
+if equalp :char &quot;. [output twochar &quot;. [.]]
+if equalp :char &quot;: [output twochar &quot;: [=]]
+if numberp :char [output number :char]
+if letterp ascii :char [output token1 lowercase :char]
+(throw &quot;error sentence [unrecognized character:] :char)
+end
+
+to twochar :old :ok
+localmake &quot;char getchar
+if memberp :char :ok [output word :old :char]
+make &quot;peekchar :char
+output :old
+end
+</PRE>
+
+<P>As you can see, <CODE>token</CODE> is mainly a selection of special cases.
+<CODE>Char 32</CODE> is a space; <CODE>char 13</CODE> or <CODE>char 10</CODE> is the end-of-line
+character.  <CODE>Skipcomment</CODE> skips over characters until it sees a right
+brace.  <CODE>String</CODE> accumulates characters up to and including a single
+quote (apostrophe), except that two single quotes in a row become one single
+quote inside the string and don't end the string.  <CODE>Number</CODE> is a little
+tricky because of decimal points (the string of characters <CODE>1.10</CODE> is a
+single token, but the string <CODE>1..10</CODE> is three tokens!) and exponent
+notation.  I'm not showing you all the details because the compiler is a
+very large program and we'll never get through it if I annotate every
+procedure.  But I did want to show you <CODE>twochar</CODE> because it's a good,
+simple example of character lookahead at work.  If the character <CODE>&lt;</CODE> is
+seen in the source program, it may be a token by itself or it may be part of
+the two-character tokens <CODE>&lt;=</CODE> or <CODE>&lt;&gt;</CODE>.  <CODE>Twochar</CODE> takes a peek
+at the next character in the file to decide.
+
+<P>If the character that <CODE>token</CODE> reads isn't part of any recognizable
+token, the procedure generates an error.  (The error is caught by the
+toplevel procedure <CODE>compile</CODE> so that it can close the source file.)
+This extremely primitive error handling is one of the most serious
+deficiencies in my compiler; it would be better if the compilation process
+continued, despite the error, so that any other errors in the program could
+also be discovered.  In a real compiler, more than half of the parsing
+effort goes into error handling; it's relatively trivial to parse a correct
+source program.
+
+<P><H2>Parsing</H2>
+
+
+<P>There are general techniques for turning a formal language specification,
+such as a set of production rules, into an algorithm for parsing the
+language so specified.  These techniques are analogous to the program in
+Chapter 1 that translates a regular expression into a finite-state machine.
+A program that turns a formal specification into a parser is called a
+<EM>parser generator.</EM>
+
+<P>The trouble is that the techniques that work for <EM>any</EM> set of rules
+are quite slow.  The time required to parse a sequence of length <EM>n</EM> is
+O(<EM>n</EM><SUP><SMALL>2</SMALL></SUP>) if the grammar is unambiguous or O(<EM>n</EM><SUP><SMALL>3</SMALL></SUP>) if it's
+ambiguous.  A grammar is <EM>ambiguous</EM> if the same input sequence
+can be parsed correctly in more than one way.  For example, if the
+production rule
+
+<P><PRE>idlist:  <EM>identifier</EM> | <EM>idlist</EM> , <EM>identifier</EM>
+</PRE>
+
+<P>is applied to the string
+
+<P><PRE>Beatles,Who,Zombies,Kinks
+</PRE>
+
+<P>then the only possible application of the rule to accept the
+string produces this left-to-right grouping:
+
+<P><CENTER><IMG SRC="unambiguous.gif" ALT="figure: unambiguous"></CENTER>
+
+<P>However, if the rule were
+
+<P><PRE>idlist:  <EM>identifier</EM> | <EM>idlist</EM> , <EM>idlist</EM>
+</PRE>
+
+<P>this new rule would accept the same strings, but would allow
+alternative groupings like
+
+<P><CENTER><IMG SRC="ambiguous.gif" ALT="figure: ambiguous"></CENTER>
+
+<P>The former rule could be part of an unambiguous grammar; the new
+rule makes the grammar that contains it ambiguous.
+
+<P>
+
+<P>It's usually not hard to devise an unambiguous grammar for any practical
+programming language, but even a quadratic algorithm is too slow.  Luckily,
+most programming languages have <EM>deterministic grammars,</EM>
+which is a condition even stricter than being unambiguous.  It means that a
+parser can read a program from left to right, and can figure out what to do
+with the next token using only a fixed amount of lookahead.  A parser for a
+deterministic grammar can run in linear time, which is a lot better than
+quadratic.
+
+<P>When I said &quot;figure out what to do with the next token,&quot; I was being
+deliberately vague.  A deterministic parser doesn't necessarily know exactly
+how a token will fit into the complete program--which production rules will
+be branch nodes in a parse tree having this token as a leaf node--as soon
+as it reads the token.  As a somewhat silly example, pretend that the word
+<CODE>if</CODE> is not a &quot;reserved word&quot; in Pascal; suppose it could be the
+name of a variable.  Then, when the parser is expecting the beginning of a
+new statement and the next token is the word <CODE>if</CODE>, the parser doesn't
+know whether it is seeing the beginning of a conditional statement such as
+<CODE>if x &gt; 0 then writeln('positive')</CODE> or the beginning of an assignment
+statement such as <CODE>if := 87</CODE>.  But the parser could still be deterministic.
+Upon seeing the word <CODE>if</CODE>, it would enter a state (as in a finite state
+machine) from which there are two exits.  If the next token turned out to be
+the <CODE>:=</CODE> assignment operator, the parser would follow one transition; if
+the next token was a variable or constant value, the parser would choose a
+different next state.
+
+<P>The real Pascal, though, contains no such syntactic cliffhangers.  A Pascal
+compiler can always tell which production rule the next token requires.
+That's why the language includes keywords like <CODE>var</CODE>, <CODE>
+procedure</CODE>, and <CODE>function</CODE>.  For the most part, you could figure out
+which kind of declaration you're reading without those keywords by looking
+for clues like whether or not there are parentheses after the identifier
+being declared.  (If so, it's a procedure or a function.)  But the keywords
+let you know from the beginning what to expect next.  That means we can
+write what's called a <EM>predictive grammar</EM> for Pascal,
+even simpler to implement than a deterministic one.
+
+<P>There are general algorithms for parsing deterministic languages, and there
+are parser generators using these algorithms.  One widely used example is
+the YACC (Yet Another Compiler Compiler) program that translates
+production rules into a parser in the C programming language.<SUP>*</SUP> But because Pascal's
+grammar is so simple I found it just as easy to do the translation by hand.
+For each production rule in a formal description of Pascal, the compiler
+includes a Logo procedure that parses each component part of the production
+rule.  A parser written in this way is called a <EM>
+recursive descent parser.</EM> Here's a sample:
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>A parser
+generator is also called a <EM>compiler compiler</EM> because it treats
+the formal specification as a kind of source program and produces a compiler
+as the object program.  But the name isn't quite accurate because, as you
+know, there's more to a compiler than the parser.</SMALL></BLOCKQUOTE></SMALL><P><PRE>to statement
+local [token type]
+ifbe &quot;begin [compound stop]
+ifbe &quot;for [pfor stop]
+ifbe &quot;if [pif stop]
+ifbe &quot;while [pwhile stop]
+ifbe &quot;repeat [prepeat stop]
+ifbe &quot;write [pwrite stop]
+ifbe &quot;writeln [pwriteln stop]
+make &quot;token token
+make &quot;peektoken :token
+if memberp :token [|;| end until] [stop]
+make &quot;type gettype :token
+if emptyp :type [(throw &quot;error sentence :token [can't begin statement])]
+if equalp :type &quot;procedure [pproccall stop]
+if equalp :type &quot;function [pfunset stop]
+passign
+end
+
+to pif
+local [cond elsetag endtag]
+make &quot;cond pboolean pexpr
+make &quot;elsetag gensym
+make &quot;endtag gensym
+mustbe &quot;then
+code (list &quot;jumpf :cond (word &quot;&quot; :elsetag))
+regfree :cond
+statement
+code (list &quot;jump (word &quot;&quot; :endtag))
+code :elsetag
+ifbe &quot;else [statement]
+code :endtag
+end
+</PRE>
+
+<P>Many of the details of <CODE>pif</CODE> have to do with code
+generation, but never mind those parts now.  For the
+moment, my concern is with the parsing aspect of these procedures: how they
+decide what to accept.
+
+<P><CODE>Statement</CODE> is an important part of the parser; it is invoked whenever a
+Pascal statement is expected.  It begins by checking the next token from the
+source file.  If that token is <CODE>begin</CODE>, <CODE>for</CODE>, <CODE>if</CODE>, <CODE>while</CODE>,
+or <CODE>repeat</CODE> then we're finished with the token and <CODE>statement</CODE> turns
+to a subprocedure to handle the syntax of whatever structured statement type
+we've found.  If the token isn't one of those, then the statement has to be
+a simple statement and the token has to be an identifier, i.e., the name of
+a procedure, a function, or a variable.  (One other trivial possibility is
+that this is an <EM>empty</EM> statement, if we're already up to the
+semicolon, <CODE>end</CODE>, or <CODE>until</CODE> that marks the end of a statement.)
+In any of these cases, the token we've just read is important to the parsing
+procedure that will handle the simple statement, so <CODE>statement</CODE> un-reads
+it before deciding what to do next.  <CODE>Gettype</CODE> outputs the type of the
+identifier, either a variable type like <CODE>real</CODE> or else <CODE>procedure</CODE>
+or <CODE>function</CODE>.  (The compiler data structures that underlie the work of
+<CODE>gettype</CODE> will be discussed later.)  If the token is a
+procedure name, then this is a procedure call statement.  If the token is a
+function name, then this is the special kind of assignment inside a function
+definition that provides the return value for the function.  Otherwise, the
+token must be a variable name and this is an ordinary assignment statement.
+
+<P>The procedure <CODE>pif</CODE> parses <CODE>if</CODE> statements.  (The letter <CODE>p</CODE> in
+its name stands for &quot;Pascal&quot;; many procedures in the compiler have such
+names to avoid conflicts with Logo procedures with similar purposes.)  The
+syntax of Pascal <CODE>if</CODE> is
+
+<P><PRE>ifstatement:  if <EM>boolean</EM> then <EM>statement</EM> |
+                 if <EM>boolean</EM> then <EM>statement</EM> else <EM>statement</EM>
+</PRE>
+
+<P>When <CODE>pif</CODE> begins, the token <CODE>if</CODE> has just been read by
+<CODE>statement</CODE>.  So the first thing that's required is a boolean expression.
+<CODE>Pexpr</CODE> parses an expression; that task is relatively complicated and
+will be discussed in more detail later.  <CODE>Pboolean</CODE> ensures that the
+expression just parsed does indeed produce a value of type <CODE>boolean</CODE>.
+
+<P>The next token in the source file <EM>must</EM> be the word <CODE>then</CODE>.  The
+instruction
+
+<P><PRE>mustbe &quot;then
+</PRE>
+
+<P>in <CODE>pif</CODE> ensures that.  Here's <CODE>mustbe</CODE>:
+
+<P><PRE>to mustbe :wanted
+localmake &quot;token token
+if equalp :token :wanted [stop]
+(throw &quot;error (sentence &quot;expected :wanted &quot;got :token))
+end
+</PRE>
+
+<P>If <CODE>mustbe</CODE> returns successfully, <CODE>pif</CODE> then invokes
+<CODE>statement</CODE> recursively to parse the true branch of the conditional.
+The production rule tells us that there is then an <EM>optional</EM> false
+branch, signaled by the reserved word <CODE>else</CODE>.  The instruction
+
+<P><PRE>ifbe &quot;else [statement]
+</PRE>
+
+<P>handles that possibility.  If the next token matches the first
+input to <CODE>ifbe</CODE> then the second input, an instruction list, is carried
+out.  Otherwise the token is un-read.  There is also an <CODE>ifbeelse</CODE> that
+takes a third input, an instruction list to be carried out if the next token
+isn't equal to the first input.  (<CODE>Ifbeelse</CODE> still un-reads the token in
+that case, before it runs the third input.)  These must be macros so that
+the instruction list inputs can include <CODE>output</CODE> or <CODE>stop</CODE>
+instructions (as discussed in Volume 2), as in the invocations of <CODE>ifbe</CODE>
+in <CODE>statement</CODE> seen a moment ago.
+
+<P><PRE>.macro ifbe :wanted :action
+localmake &quot;token token
+if equalp :token :wanted [output :action]
+make &quot;peektoken :token
+output []
+end
+
+.macro ifbeelse :wanted :action :else
+localmake &quot;token token
+if equalp :token :wanted [output :action]
+make &quot;peektoken :token
+output :else
+end
+</PRE>
+
+<P>If there were no code generation involved, <CODE>pif</CODE> would be written this
+way:
+
+<P><PRE>to pif
+pboolean pexpr
+mustbe &quot;then
+statement
+ifbe &quot;else [statement]
+end
+</PRE>
+
+<P>This simplified procedure is a straightforward translation of the
+RTN
+
+<P><CENTER><IMG SRC="pif.gif" ALT="figure: pif"></CENTER>
+
+<P>The need to generate object code complicates the parser.  But
+don't let that distract you; in general you can see the formal structure of
+Pascal syntax reflected in the sequence of instructions used to parse that
+syntax.
+
+<P>The procedures that handle other structured statements, such as <CODE>pfor</CODE>
+and <CODE>pwhile</CODE>, are a lot like <CODE>pif</CODE>.  Procedure and function
+declarations (procedures <CODE>procedure</CODE>, <CODE>function</CODE>, and <CODE>proc1</CODE> in
+the compiler) also use the same straightforward parsing technique, but are a
+little more complicated because of the need to keep track of type
+declarations for each procedure's parameters and local variables.
+Ironically, the hardest thing to compile is the &quot;simple&quot; assignment
+statement, partly because of operator precedence (multiplication before
+addition) in expressions (procedure <CODE>pexpr</CODE> in the compiler) and partly
+because of the need to deal with the complexity of variables, including
+special cases such as assignments to <CODE>var</CODE> parameters and array elements.
+
+<P>I haven't yet showed you <CODE>pboolean</CODE> because you have to understand how
+the compiler handles expressions first.  But it's worth noticing that Pascal
+can check <EM>at compile time</EM> whether or not an expression is going to
+produce a <CODE>boolean</CODE> value even though the program hasn't been run yet
+and the variables in the expression don't have values yet.  It's the strict
+variable typing of Pascal that makes this compile-time checking possible.
+If we were writing a Logo compiler, the checking would have to be postponed
+until run time because you can't, in general, know what type of datum will
+be computed by a Logo expression until it's actually evaluated.
+
+<P><H2>Expressions and Precedence</H2>
+
+<P>
+
+<P>Arithmetic or boolean expressions appear not only on the right side of
+assignment statements but also as actual parameters, array index values, and
+as &quot;phrases&quot; in structured statements.  One of the classic problems in
+compiler construction is the translation of these expressions to executable
+form.  The interesting difficulty concerns <EM>
+operator precedence</EM>--the rule that in a string of alternating
+operators and operands, multiplications are done before additions, so
+
+<P><PRE>a + b * c + d
+</PRE>
+
+<P>means
+
+<P><PRE>a + (b * c) + d
+</PRE>
+
+<P>Pascal has four levels of operator precedence.  The highest level, number 4,
+
+is the <EM>unary</EM> operators <CODE>+</CODE>, <CODE>-</CODE>, and <CODE>not</CODE>.  (The first
+
+two can be used as unary operators (<CODE>-3</CODE>) or <EM>binary</EM> ones (<CODE>
+6-3</CODE>); it's only in the unary case that they have this
+precedence.)<SUP>*</SUP> Then comes multiplication, division, and
+logical <CODE>and</CODE> at level 3.  Level 2 has binary addition, subtraction, and
+<CODE>or</CODE>.  And level 1 includes the relational operators like
+<CODE>=</CODE>.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>It's unfortunate that the word &quot;binary&quot; is used in
+computer science both for base-2 numbers and for two-input operations.
+ Kenneth Iverson, in his documentation for the
+language APL, used the words <EM>monadic</EM> and <EM>
+dyadic</EM> instead of unary and binary to avoid that ambiguity.  But
+those terms haven't caught on.</SMALL></BLOCKQUOTE></SMALL><P>
+
+<P>The formalization of precedence could be done using the mechanisms we've
+already seen.  For example, here is a production rule grammar for
+expressions using only the four basic arithmetic operations.
+
+<P><PRE>expression:  <EM>term</EM> | <EM>expression</EM> + <EM>term</EM> | <EM>expression</EM> - <EM>term</EM>
+term:  <EM>factor</EM> | <EM>term</EM> * <EM>factor</EM> | <EM>term</EM> / <EM>factor</EM>
+factor:  <EM>variable</EM> | <EM>number</EM> | ( <EM>expression</EM> )
+</PRE>
+
+<P>This grammar also introduces into the discussion the fact that the
+precedence of operations can be changed by using parentheses.
+
+<P>This grammar, although formally correct, is not so easy to use in a
+recursive descent parser.
+One subtle but important problem is that it's <EM>left recursive:</EM>  Some
+of the alternative forms for an <CODE>expression</CODE> start with an <CODE>
+expression</CODE>.  If we tried to translate this into a Logo procedure it would
+naturally start out
+
+<P><PRE>to expression
+local [left op right]
+make &quot;left expression
+ifbe &quot;+
+  [make &quot;op &quot;+
+   make &quot;right term]
+  [ifbe &quot;-
+     [make &quot;op &quot;-
+      make &quot;right term]
+     [make &quot;op []] ]
+...
+</PRE>
+
+<P>But this procedure will never get past the first <CODE>make</CODE>; it's
+an infinite loop.  It will never actually read a token from the source file;
+instead it keeps invoking itself recursively.
+
+<P>Left association is a problem for automatic compiler compilers, too.  There
+are ways to solve the problem but I don't want to get into that because in
+fact arithmetic expressions are generally handled by an entirely different
+scheme, which I'll show you in a moment.  The problem wouldn't come up if
+the order of the operands were reversed, so the rules said
+
+<P><PRE>expression:  <EM>term</EM> | <EM>term</EM> + <EM>expression</EM> | <EM>term</EM> - <EM>expression</EM>
+</PRE>
+
+<P>and so on.  Unfortunately this changes the meaning, and the rules
+of Pascal say that equal-precedence operations are performed left to right.
+
+<P>In any case, the formalization of precedence with production rules gets more
+complicated as the number of levels of precedence increases.  I showed you a
+grammar with two levels.  Pascal, with four levels, might reasonably be done
+in a similar way, but think about the C programming language, which has 15
+levels of precedence!
+
+<P><H2>The Two-Stack Algorithm for Expressions</H2>
+
+
+<P>What we're after is an algorithm that will allow the compiler to read an
+expression once, left to right, and group operators and operands correctly.
+The algorithm involves the use of two stacks, one for operations and one for
+data.  For each operation we need to know whether it's unary or binary and
+what its precedence level is.  I'll use the notation &quot;<CODE>*</CODE><SUB><SMALL>2,3</SMALL></SUB>&quot; to
+represent binary <CODE>*</CODE> at precedence level 3.  So the expression
+
+<P><PRE>a + b * - c - d
+</PRE>
+
+<P>will be represented in this algorithm as
+
+<P>
+<IMG SRC="vdash.gif"><SUB><SMALL>0</SMALL></SUB> a +<SUB><SMALL>2,2</SMALL></SUB> b *<SUB><SMALL>2,3</SMALL></SUB> -<SUB><SMALL>1,4</SMALL></SUB> c -<SUB><SMALL>2,2</SMALL></SUB> d <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"><SUB><SMALL>0</SMALL></SUB>
+
+
+<P>The symbols <IMG SRC="vdash.gif"> and <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"> aren't really part of the source
+expression; they're imaginary markers for the beginning and end of the
+expression.  When we read a token that doesn't make sense as part of an
+expression, we can un-read that token and pretend we read a <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"> instead.
+These markers are given precedence level zero because they form a boundary
+for <EM>any</EM> operators inside them, just as a low-precedence operator like
+<CODE>+</CODE> is a boundary for the operands of a higher-precedence operator like
+<CODE>*</CODE>.  (For the same reason, you'll see that parentheses are considered
+precedence zero.)
+
+<P>The two minus signs in this expression have two different meanings.  As you
+read the following algorithm description, you'll see how the algorithm knows
+whether an operation symbol is unary or binary.
+
+<P><STRONG>Step 1.</STRONG>  We initialize the two stacks this way:
+
+<P><PRE>operation:  [ <IMG SRC="vdash.gif"><SUB><SMALL>0</SMALL></SUB> ]
+
+data:       [ ]
+</PRE>
+
+<P><STRONG>Step 2.</STRONG>  We are now expecting a datum, such as a variable.  Read a
+token.  If it's an operation, it must be unary; subscript it accordingly and
+go to step 4.  If it's a datum, push it onto the data stack.  (If it's
+neither an operation nor a datum, something's wrong.)
+
+<P><STRONG>Step 3.</STRONG>  We are now expecting a binary operation.  Read a token.  If
+it's an operation, subscript it as binary and go to step 4.  If not, we've
+reached the end of the expression.  Un-read the token, and go to step 4 with
+the token <IMG SRC="https://people.eecs.berkeley.edu/~bh/v3ch5/dashv.gif"><SUB><SMALL>0</SMALL></SUB>.
+
+<P><STRONG>Step 4.</STRONG>  We have an operation in hand at this point and we know its
+precedence level and how many arguments it needs.  Compare its precedence
+level with that of the topmost (most recently pushed) operation on the stack.
+If the precedence of the new operation is less than or equal to that of the
+one on the stack, go to step 5.  If it's greater, go to step 6.
+
+<P><STRONG>Step 5.</STRONG>  The topmost operation on the stack has higher precedence than
+the one we just read, so we should do it right away.  (For example, we've
+just read the <CODE>+</CODE> in <CODE>a*b+c</CODE>; the multiplication operation and both
+of its operands are ready on the stacks.)  Pop the operation off
+the stack, pop either one or two items off the data stack depending on the
+first subscript of the popped operation, then compile machine instructions to
+perform the indicated computation.  Push the result on the data stack
+as a single quantity.  However, if the operation we popped is <IMG SRC="vdash.gif">, then
+we're finished.  There should be only one thing on the data stack, and it's
+the completely compiled expression.  Otherwise, we still have the new
+operation waiting to be processed, so return to step 4.
+
+<P><STRONG>Step 6.</STRONG>  The topmost operation on the stack has lower precedence than
+the one we just read, so we can't do it yet because we're still reading its
+right operand.  (For example, we've just read the <CODE>*</CODE> in <CODE>a+b*c</CODE>;
+we're not ready to do either operation until we read the <CODE>c</CODE> later.)
+Push the new operation onto the operation stack, then return to step 2.
+
+<P>Here's how this algorithm works out with the sample expression above.  In
+the data stack, a boxed entry like <IMG SRC="a+b.gif"> means the result from
+translating that subexpression into the object language.
+
+<P><IMG SRC="stack1.gif">
+<BR><IMG SRC="stack2.gif">
+
+<P>The final value on the data stack is the translation of the
+entire expression.
+
+<P>The algorithm so far does not deal with parentheses.  They're handled
+somewhat like operations, but with slightly different rules.  A left
+parenthesis is stored on the operation stack as <CODE>(</CODE><SUB><SMALL>0</SMALL></SUB>, like the
+special marker at the beginning of the expression, but it does not invoke
+step 5 of the algorithm before being pushed on the stack.  A right
+parenthesis <EM>does</EM> invoke step 5, but only as far down the stack as
+the first matching left parenthesis; if it were an ordinary operation of
+precedence zero it would pop everything off the stack.  You might try to
+express precisely how to modify the algorithm to allow for parentheses.
+
+<P>Here are the procedures that embody this algorithm in the compiler.
+<CODE>Pgetunary</CODE> and <CODE>pgetbinary</CODE> output a list like
+
+<P><PRE>[sub 2 2]
+</PRE>
+
+<P>for binary <CODE>-</CODE> or
+
+<P><PRE>[minus 1 4]
+</PRE>
+
+<P>for unary minus.  (I'm leaving out some complications
+having to do with type checking.)  They work by looking for a <CODE>unary</CODE> or
+<CODE>binary</CODE> property on the property list of the operation symbol.
+Procedures with names like <CODE>op.prec</CODE> are selectors for the members
+of these lists.
+
+<P>In this algorithm, only step 5 actually generates any instructions in the
+object program.  This is the step in which an operation is removed from
+the operation stack and actually performed.  Step 5 is carried out by the
+procedure <CODE>ppopop</CODE> (Pascal pop operation); most of that procedure deals
+with code generation, but I've omitted that part of the procedure in the
+following listing because right now we're concerned with the parsing
+algorithm.  We'll return to code generation shortly.
+
+<P><CODE>Pexpr1</CODE> invokes <CODE>pdata</CODE> when it expects to read an operand, which
+could be a number, a variable, or a function call.  <CODE>Pdata</CODE>, which I'm
+not showing here, generates code to make the operand available and
+outputs the location of the result in the simulated computer, in a form
+that can be used by <CODE>pexpr</CODE>.
+
+<P><PRE>to pexpr
+local [opstack datastack parenlevel]
+make &quot;opstack [[popen 1 0]]                       ; step 1
+make &quot;datastack []
+make &quot;parenlevel 0
+output pexpr1
+end
+
+to pexpr1 
+local [token op]
+make &quot;token token                                 ; step 2
+while [equalp :token &quot;|(|] [popen  make &quot;token token]
+make &quot;op pgetunary :token
+if not emptyp :op [output pexprop :op]
+push &quot;datastack pdata :token
+make &quot;token token                                 ; step 3
+while [and (:parenlevel &gt; 0) (equalp :token &quot;|)| )]
+   [pclose  make &quot;token token]
+make &quot;op pgetbinary :token
+if not emptyp :op [output pexprop :op]
+make &quot;peektoken :token
+pclose
+if not emptyp :opstack [(throw &quot;error [too many operators])]
+if not emptyp butfirst :datastack [(throw &quot;error [too many operands])]
+output pop &quot;datastack
+end
+
+to pexprop :op                                    ; step 4
+while [(op.prec :op) &lt; (1 + op.prec first :opstack)] [ppopop]
+push &quot;opstack :op                                 ; step 6
+output pexpr1
+end
+
+to ppopop                                         ; step 5
+local [op function args left right type reg]
+make &quot;op pop &quot;opstack
+make &quot;function op.instr :op
+if equalp :function &quot;plus [stop]
+make &quot;args op.nargs :op
+make &quot;right pop &quot;datastack
+make &quot;left (ifelse equalp :args 2 [pop &quot;datastack] [[[] []]])
+make &quot;type pnewtype :op exp.type :left exp.type :right
+... code generation omitted ...
+push &quot;datastack (list :type &quot;register :reg)
+end
+
+to popen
+push &quot;opstack [popen 1 0]
+make &quot;parenlevel :parenlevel+1
+end
+
+to pclose
+while [(op.prec first :opstack) &gt; 0] [ppopop]
+ignore pop &quot;opstack
+make &quot;parenlevel :parenlevel - 1
+end
+</PRE>
+
+<P><H2>The Simulated Machine</H2>
+
+<P>We're ready to move from parsing to code generation, but first you must
+understand what a computer's native language is like.  Most computer models
+in use today have a very similar structure, although there are differences
+in details.  My simulated computer design makes these detail choices in
+favor of simplicity rather than efficiency.  (It wouldn't be very efficient
+no matter what, compared to real computers.  This &quot;computer&quot; is actually an
+interpreter, written in Logo, which is itself an interpreter.  So we have
+two levels of interpretation involved in each simulated instruction, whereas
+on a real computer, each instruction is carried out directly by the
+hardware.  Our compiled Pascal programs, as you've probably already noticed,
+run very slowly.  That's not Pascal's fault, and it's not even primarily my
+compiler's fault, even though the compiler doesn't include optimization
+techniques.  The main slowdown is in the interpretation of the machine
+instructions.)
+
+<P>Every computer includes a <EM>processor,</EM> which decodes
+instructions and carries out the indicated arithmetic operations, and a
+<EM>memory,</EM> in which information (such as the values of
+variables) is stored.  In modern computers, the processor is generally
+a single <EM>integrated circuit,</EM> nicknamed a <EM>chip,</EM>
+which is a rectangular black plastic housing one or two inches on a side
+that contains thousands or even millions of tiny components made of silicon.
+The memory is usually a <EM>circuit board</EM> containing several memory
+chips.  Computers also include circuitry to connect with input and output
+devices, but we're not going to have to think about those.  What makes one
+computer model different from another is mainly the processor.  If you
+have a PC, its processor is probably an Intel design with a name like
+80486 or Pentium; if you have a Macintosh, the processor might be a Motorola
+68040 or a Power PC chip.
+
+<P>It turns out that the wiring connecting the processor to the memory is
+often the main limiting factor on the speed of a computer.  Things happen at
+great speed within the processor, and within the memory, but only one value
+at a time can travel from one to the other.  Computer designers have invented
+several ways to get around this problem, but the important one for our
+purposes is that every modern processor includes a little bit of memory
+within the processor chip itself.  By &quot;a little bit&quot; I mean that a typical
+processor has enough memory in it to hold 32 values, compared to several
+million values that can be stored in the computer's main memory.  The 32
+memory slots within the processor are called <EM>
+registers.</EM><SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>One current topic in computer architecture research
+is the development of <EM>parallel</EM> computers with many processors working
+together.  In some of these designs, each processor includes its own
+medium-size memory within the processor chip.</SMALL></BLOCKQUOTE></SMALL><P>Whenever you want to perform an arithmetic operation, the operands must
+already be within the processor, in registers.  So, for example, the Pascal
+instruction
+
+<P><PRE>c := a + b
+</PRE>
+
+<P>isn't compiled into a single machine instruction.  First we must
+<EM>load</EM> the values of <CODE>a</CODE> and <CODE>b</CODE> from memory into registers,
+then add the two registers, then <EM>store</EM> the result back into memory:
+
+<P><PRE>rload 8 a
+rload 9 b
+add 10 8 9
+store 10 c
+</PRE>
+
+<P>The first <CODE>rload</CODE> instruction loads the value from memory
+location <CODE>a</CODE> into register 8.<SUP>*</SUP> The <CODE>add</CODE> instruction adds
+the numbers in registers 8 and 9, putting the result into register 10.  (In
+practice, you'll see that the compiler would be more likely to conserve
+registers by reusing one of the operand registers for the result, but for
+this first example I wanted to keep things simple.)  Finally we store the
+result into the variable <CODE>c</CODE> in memory.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>Really I should have called this
+instruction <CODE>load</CODE>, but my machine simulator uses Logo procedures to
+carry out the machine instructions, and I had to pick a name that wouldn't
+conflict with the Logo <CODE>load</CODE> primitive.</SMALL></BLOCKQUOTE></SMALL><P>The instructions above are actually not machine language instructions, but
+rather <EM>assembly language</EM> instructions, a kind of shorthand.
+A program called an <EM>assembler</EM> translates assembly language into
+machine language, in which each instruction is represented as a number.
+For example, if the instruction code for <CODE>add</CODE> is <CODE>0023</CODE>, then
+the <CODE>add</CODE> instruction above might be translated into <CODE>0023100809</CODE>,
+with four digits for the instruction code and two digits for each of the three
+register numbers.  (In reality the encoding would use binary numbers rather
+than the decimal numbers I've shown in this example.)  Since a machine
+language instruction is just a number, the instructions that make up a
+computer program are stored in memory along with the program's data values.
+But one of the simplifications I've made in my simulated computer is that
+the simulator deals directly with assembly language instructions, and those
+instructions are stored in a Logo list, separate from the program's data memory.
+
+<P>The simulated computer has 32 processor registers plus 3000 locations of
+main memory; it's a very small computer, but big enough for my sample
+Pascal programs.  (You can change these sizes by editing procedure <CODE>
+opsetup</CODE> in the compiler.)  The registers are numbered from 0 to 31, and
+the memory locations are numbered from 0 to 2999.  The number of a memory
+location is called its <EM>address.</EM>  Each memory location can hold
+one numeric value.<SUP>*</SUP>  A Pascal array will be represented by a contiguous block of
+memory locations, one for each member of the array.  Each register, too, can
+hold one numeric value.  In this machine, as in some real computers, register
+number 0 is special; it always contains the value zero.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>This, too, is a simplification.  In real computers,
+different data types require different amounts of memory.  A character
+value, for example, fits into eight <EM>bits</EM> (binary digits) of memory,
+whereas an integer requires 32 bits in most current computers.  Instead of a
+single <CODE>load</CODE> instruction, a real computer has a separate one for each
+datum size.</SMALL></BLOCKQUOTE></SMALL><P>The simulated computer understands 50 instruction codes, fewer than most
+real computers.  The first group we'll consider are the 14 binary arithmetic
+instructions: <CODE>add</CODE>, <CODE>sub</CODE>, <CODE>mul</CODE>, <CODE>div</CODE> (real quotient),
+<CODE>quo</CODE> (integer quotient), <CODE>rem</CODE> (remainder), <CODE>land</CODE> (logical
+and), <CODE>lor</CODE> (logical or), <CODE>eql</CODE> (compare two operands for equality),
+<CODE>neq</CODE> (not equal), <CODE>less</CODE>, <CODE>gtr</CODE> (greater than), <CODE>leq</CODE> (less
+than or equal), and <CODE>geq</CODE> (greater than or equal).  The result of each
+of the six comparison operators is <CODE>0</CODE> for false or <CODE>1</CODE> for true.
+The machine also has four unary arithmetic instructions: <CODE>lnot</CODE>
+(logical not), <CODE>sint</CODE> (truncate to integer), <CODE>sround</CODE> (round to
+integer), and <CODE>srandom</CODE>.  Each of these 18 arithmetic instructions takes
+its operands from registers and puts its result into a register.
+
+<P>All but the last three of these are typical instructions of real
+computers.<SUP>*</SUP>
+(Not every computer has all of them; for example, if a computer has <CODE>eql</CODE>
+and <CODE>lnot</CODE>, then it doesn't really need a <CODE>neq</CODE> instruction because
+the same value can be computed by a sequence of two instructions.)  The
+operations <CODE>sint</CODE>, <CODE>sround</CODE>, and <CODE>srandom</CODE> are less likely to be
+machine instructions on actual computers.  On the other hand, most real
+computers have a <EM>system call</EM> mechanism, which is a machine
+instruction that switches the computer from the user's program to a part of
+the operating system that performs some task on behalf of the user.  System
+calls are used mainly for input and output, but we can pretend that there are
+system calls to compute these Pascal library functions.  (The letter <CODE>s</CODE>
+in the instruction names stands for &quot;system call&quot; to remind us.)
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>One important simplification is that in the simulated
+computer, the same instructions are used for all kinds of numbers.  A typical
+computer has three <CODE>add</CODE> instructions: one for integers, one for short
+reals (32 bits), and one for long reals (64 bits).</SMALL></BLOCKQUOTE></SMALL><P>The simulated computer also has another set of 18 <EM>immediate</EM>
+instructions, with the letter <CODE>i</CODE> added to the instruction name: <CODE>
+addi</CODE>, <CODE>subi</CODE>, and so on.  In these instructions, the rightmost operand
+in the instruction is the actual value desired, rather than the number of
+a register containing the operand.  For example,
+
+<P><PRE>add 10 8 9
+</PRE>
+
+<P>means, &quot;add the number in register 8 and the number in register 9,
+putting the result into register 10.&quot;  But
+
+<P><PRE>addi 10 8 9
+</PRE>
+
+<P>means, &quot;add the number in register 8 to the value 9, putting
+the result in register 10.&quot;
+
+<P>It's only the right operand that can be made immediate.  So, for example,
+the Pascal assignment
+
+<P><PRE>y := x - 5
+</PRE>
+
+<P>can be translated into
+
+<P><PRE>rload 8 x
+subi 8 8 5
+store 8 y
+</PRE>
+
+<P>but the Pascal assignment
+
+<P><PRE>y := 5 - x
+</PRE>
+
+<P>must be translated as
+
+<P><PRE>addi 8 0 5
+rload 9 x
+sub 8 8 9
+store 8 y
+</PRE>
+
+<P>This example illustrates one situation in which it's useful to
+have register 0 guaranteed to contain the value 0.
+
+<P>Our simulated machine has six more system call instructions having to do
+with printing results.  One of them, <CODE>newline</CODE>, uses no operands and
+simply prints a newline character, moving to the beginning of a new line
+on the screen.  Four more are for printing the value in a register; the
+instruction used depends on the data type of the value in the register.
+The instructions are <CODE>putch</CODE> for a character, <CODE>puttf</CODE> for a boolean
+(true or false) value, <CODE>putint</CODE> for an integer, and <CODE>putreal</CODE> for a
+real number.  Each takes two operands; the first, an immediate value, gives
+the minimum width in which to print the value, and the second is a register
+number.  So the instruction
+
+<P><PRE>putint 10 8
+</PRE>
+
+<P>means, &quot;print the integer value in register 8, using at least
+10 character positions on the line.&quot;  The sixth printing instruction,
+<CODE>putstr</CODE>, is used only for constant character strings in the Pascal
+program; its first operand is a width, as for the others, but its second
+is a Logo list containing the string to print:
+
+<P><PRE>putstr 1 [The shuffled deck:]
+</PRE>
+
+<P>This is, of course, unrealistic; in a real computer the second
+operand would have to be the memory address of the beginning of the
+array of characters to print.  But the way I handle printing isn't very
+realistic in any case; I wanted to do the simplest possible thing, because
+worrying about printing really doesn't add anything to your understanding
+of the process of compilation, which is the point of this chapter.
+
+<P>The next group of instructions has to do with the flow of control in the
+computer program.  Ordinarily the computer carries out its instructions
+in sequence, that is, in the order in which they appear in the program.
+But in order to implement conditionals (such as <CODE>if</CODE>), loops (such as
+<CODE>while</CODE>), and procedure calls, we must be able to jump out of sequence.
+The <CODE>jump</CODE> instruction takes a single operand, a <EM>label</EM>
+that appears somewhere in the program.  When the computer carries out a jump
+instruction, it looks for the specified label and starts reading instructions
+just after where that label appears in the program.  (We saw an example of
+labels at the beginning of this chapter.)
+
+<P>The <CODE>jump</CODE> instruction is used for unconditional jumps.  In order to
+implement conditionals and loops, we need a way to jump if some condition
+is true.  The instruction <CODE>jumpt</CODE> (jump if true) has two operands,
+a register number and a label.  It jumps to the specified label if and only
+if the given register contains a true value.  (Since registers hold only
+numbers, we use the value 1 to represent true, and 0 to represent false.)
+Similarly, <CODE>jumpf</CODE> jumps if the value in the given register is false.
+
+<P>For procedure and function calls, we need a different mechanism.  The jump
+is unconditional, but the computer must remember where it came from, so that
+it can continue where it left off once the called procedure or function
+returns.  The instruction <CODE>jal</CODE> (jump and link) takes two operands, a
+register and a label.  It puts into the register the address of the
+instruction following the <CODE>jal</CODE> instruction.<SUP>*</SUP> Then it jumps to the specified label.
+To return from the called procedure, we use the <CODE>jr</CODE> (jump register)
+instruction.  It has one operand, a register number; it jumps to the
+instruction whose address is in the register.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>In a real computer,
+each instruction is stored in a particular memory location, so the address
+of an instruction is the address of the memory location in which it's stored.
+In this simulated computer, I keep the program in the form of a Logo list,
+and so I cheat and put the sublist starting at the next instruction into
+the register.  This isn't quite as much of a cheat as it may seem, though,
+since you know from Chapter 3 that Logo represents a list with the memory
+address of the first pair of the list.</SMALL></BLOCKQUOTE></SMALL><P>One final instruction that affects the flow of control is the <CODE>exit</CODE>
+system call.  It requires no operands; it terminates the running of the
+program.  In this simulated computer, it returns to a Logo prompt; in a
+real computer, the operating system would start running another user program.
+
+<P>The only remaining instructions are <CODE>rload</CODE> and <CODE>store</CODE>.  You already
+know what these do, but I've been showing them in oversimplified form so far.
+The second operand can't just be a variable name, because that variable might
+not be in the same place in memory every time the procedure is called. Think,
+for example, about a recursive procedure.  Several invocations may be in
+progress at once, all of them carrying out the same compiled instructions,
+but each referring to a separate set of local variables.  The solution to
+this problem is that the compiler arranges to load into a register
+the address of a block of memory containing all the local variables for a
+given procedure call.  If the variable <CODE>c</CODE>, for example, is in the sixth
+memory location of that block, an instruction to load or store that variable
+must be able to say &quot;the memory location whose address is the contents of
+register 4 (let's say) plus five.&quot; So each load and store instruction
+contains an <EM>index register</EM> in parentheses following an
+<EM>offset</EM> to be added to the contents of that register.  We'd say
+
+<P><PRE>store 8 5(4)
+</PRE>
+
+<P>to store the contents of register 8 into the variable <CODE>c</CODE>,
+provided that register 4 points to the correct procedure invocation's
+local variables and that <CODE>c</CODE> is in the sixth position in the block.
+(The first position in the block would have offset 0, and so on.)
+
+<P><H2>Stack Frames</H2>
+
+<P>The first step in invoking a procedure or function is to set aside, or
+<EM>allocate,</EM> a block of memory locations for use by that invocation.
+This block will include the procedure's local variables, its arguments, and
+room to save the values of registers as needed.  The compiler's data
+structures include, for each procedure, how much memory that procedure needs
+when it's invoked.  That block of memory is called a <EM>frame.</EM>
+
+<P>In most programming languages, including Pascal and Logo (but not, as it
+turns out, Lisp), the frame allocated when a procedure invocation begins can
+be released, or <EM>deallocated,</EM> when that invocation returns to its
+caller.  In other words, the procedure's local variables no longer exist
+once the invocation is finished.  In these languages, the frames for all the
+active procedure invocations can be viewed as a <EM>stack,</EM> a data structure
+to which new elements are added by a Push operation, and elements are removed
+using a Pop operation that removes the most recently pushed element.  (In
+this case, the elements are the frames.)  That is, suppose that procedure A
+invokes B, which invokes C, which invokes D.  For each of these invocations
+a new frame is pushed onto the stack.  Which procedure finishes first?  It
+has to be D, the last one invoked.  When D returns, its frame can be popped
+off the stack.  Procedure C returns next, and its frame is popped, and so on.
+The phrase <EM>stack frame</EM> is used to refer to frames that
+behave like elements of a stack.
+
+<P>My Pascal compiler allocates memory starting at location 0 and working
+upward.  At the beginning of the program, a <EM>global frame</EM> is allocated
+to hold the program's global variables.  Register 3, the
+<EM>global pointer,</EM> always contains the
+address of the beginning of the global frame, so that every procedure can
+easily make use of global variables.  (Since the global frame is the first
+thing in memory, its address is always zero, so the value in register 3 is
+always 0.  But in a more realistic implementation the program itself would
+appear in memory before the global frame, so its address would be greater
+than zero.)  
+
+<P>At any point in the program, register 4, the <EM>frame pointer,</EM>
+contains the address of the beginning of the current frame, that is, the
+frame that was created for the current procedure invocation.  Register 2,
+the <EM>stack pointer,</EM> contains the address of the first
+currently unused location in memory.
+
+<P>My compiler is a little unusual in that when a procedure is called, the
+stack frame for the new invocation is allocated by the caller, not by the
+called procedure.  This simplifies things because the procedure's arguments
+can be stored in its own frame; if each procedure allocates its own frame,
+then the caller must store argument values in its (the caller's) frame,
+because the callee's frame doesn't exist yet.  So, in my compiler, the
+first step in a procedure call is to set register 5, the <EM>new frame
+pointer,</EM> to point to the first free memory location, and change the
+stack pointer to allocate the needed space.  If <CODE>N</CODE> memory locations
+are needed for the new frame, the calling procedure will contain the
+following instructions:
+
+<P><PRE>add 5 2 0
+addi 2 2 N
+</PRE>
+
+<P>The first instruction copies the value from register 2 (the
+first free memory location) into register 5; the second adds <CODE>N</CODE> to
+register 2.  (I've left out a complication, which is that the old value
+in register 5 must be saved somewhere before putting this new value
+into it.  You can read the code generation instructions at the beginning
+of <CODE>pproccall1</CODE>, in the program listing at the end of the chapter,
+for all the details.)  The current frame pointer is also saved in
+location 3 of the new frame:
+
+<P><PRE>store 4 3(5)
+</PRE>
+
+<P>The compiler uses data abstraction to refer to these register
+numbers and frame slots; for example, the procedure <CODE>reg.frameptr</CODE> takes
+no arguments and always outputs 4, while <CODE>frame.prevframe</CODE> outputs 3.
+
+<P>The next step is to put the argument values into the new frame.  During
+this process, the calling procedure must use register 4 to refer to its own
+variables, and register 5 to refer to the callee's variables.  The final
+step, just before calling the procedure, is to make the
+frame pointer (register 4) point to the new frame:
+
+<P><PRE>add 4 5 0
+</PRE>
+
+<P>Once the caller has set up the new frame and saved the necessary registers,
+it can call the desired procedure, putting the return address in register 1:
+
+<P><PRE>jal 1 &quot;proclabel
+</PRE>
+
+<P>The first step in the called procedure is to save the return
+address in location zero of its frame:
+
+<P><PRE>store 1 0(4)
+</PRE>
+
+<P>The procedure then carries out the instructions in its body.  When it's
+ready to return, it must load the saved return address back into register
+1, then restore the old stack pointer and frame pointer to deallocate
+its frame, and finally return to the caller:
+
+<P><PRE>rload 1 0(4)
+add 2 4 0
+rload 4 3(2)
+jr 1
+</PRE>
+
+<P>(Procedure <CODE>proc1</CODE> in the compiler generates these
+instructions for each procedure.)
+
+<P>One final complication about stack frames comes from Pascal's block
+structure.  Suppose we have a program with internal procedures arranged
+in this structure:
+
+<P><CENTER><IMG SRC="blocks.gif" ALT="figure: blocks"></CENTER>
+
+<P>Then suppose that the main program calls procedure A, which
+calls B, which calls C, which calls itself recursively.  The current (inner)
+invocation of C has access to its own variables, those of procedure A, and
+the global variables, but not to procedure B's variables.  How does
+procedure C know where procedure A's stack frame is located?  The answer is
+that every frame, in addition to saving a pointer to the previous frame,
+must include a pointer to the <EM>lexically enclosing</EM> frame.  The
+calling procedure sets this up; it can do this because it knows its own
+lexical depth and that of the called procedure.  For example, when procedure
+B calls procedure C, C's lexically enclosing frame will be the same as B's
+(namely, the frame for the invocation of A), because B and C are at the
+same lexical depth.  (They are both declared inside A.)  But when procedure
+A calls procedure B, which is declared within itself, A must store its own
+frame pointer as B's lexically enclosing frame.  Here is a picture of what's
+where in memory:
+
+<P><CENTER><IMG SRC="memory.gif" ALT="figure: memory"></CENTER>
+
+<P>If all these pointers between frames confuse you, it might help to keep in
+mind that the two kinds of pointers have very different purposes.  The
+pointer to the previous frame is used only when a procedure returns, to
+help in putting everything back the way it was before the procedure was
+called (in particular, restoring the old value of register 4).  The pointer
+to the lexically enclosing frame is used while the procedure is running,
+whenever the procedure makes reference to a variable that belongs to some
+outer procedure (for example, a reference in procedure B or C to a variable
+that belongs to procedure A).<SUP>*</SUP>
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>If procedures used the previous-frame
+pointers to make variable references, we would be compiling a dynamically
+scoped language!  In this example, because Pascal is lexically scoped,
+procedure C can't refer to procedure B's variables, even though B called C.</SMALL></BLOCKQUOTE></SMALL><P><H2>Data Structures</H2>
+
+<P>In this section I'll describe the main data structures used during
+compilation (abstract data types for identifiers and for expressions)
+and during the running of the program (registers and frames).
+
+<P>The main body of information that the compiler must maintain is the list of
+Pascal identifiers (variable, procedure, and function names).  Since Pascal
+is lexically scoped, some attention is necessary to ensure that each compiled
+Pascal procedure has access to precisely the variables that it should.
+At any point during the compilation, the value of <CODE>:idlist</CODE> is a list of
+just those identifiers that may be used in the part of the program being
+compiled.  We'll see in a moment how that's accomplished.
+
+<P>There are two main categories of identifier: procedure names (including the
+main program and functions in this category) and variable names.  The
+information maintained for a procedure name looks like this example:
+
+<P><PRE>[myproc procedure %myproc [2 46]]
+</PRE>
+
+<P>The first member of this list is the Pascal name of the program,
+procedure, or function.  The second member is the type indicator, which
+will be one of the words <CODE>program</CODE>, <CODE>procedure</CODE>, or <CODE>function</CODE>.
+The third member is the procedure's &quot;Logo name,&quot; the unique name used within
+the compiler to represent this program or procedure.  The program's Logo name
+is used as the variable name whose value will be the compiled program; the
+Logo names for procedures and functions are used as the labels in the
+compiled program at which each procedure or function begins.  The fourth
+member of the list contains the frame information for the procedure; it's
+a list of two numbers, the lexical depth and the frame size.  The lexical
+depth is 0 for the main program, 1 for a procedure declared inside the
+main program, 2 for a procedure declared inside a depth-1 procedure, and
+so on.  The frame size indicates how many memory locations must be allocated
+for each invocation of the procedure.  (For the main program, the frame size
+indicates the size of the global frame.)
+
+<P>Because of the Pascal scope rules, there can be two procedures with the same
+name, each declared within a different region of the program.  But there is
+no scoping of labels in the compiled program; each label must be unique.
+The simplest solution would be to use a distinct program-generated name for
+every Pascal procedure; the Pascal <CODE>doit</CODE> would become the
+Logo <CODE>g14</CODE>.  In fact I chose to modify this approach somewhat.  When an
+identifier <CODE>symbol</CODE> is declared in the source program, the compiler
+looks to see whether another identifier with the same name has appeared
+anywhere in the program.  If not, the Logo name <CODE>%symbol</CODE> is used; if
+so, a generated symbol is used.  This rule makes the compiled
+program a little easier to read, while preserving the rule that all Logo
+names must be unique.  The percent sign in <CODE>%symbol</CODE> ensures that this
+Logo name doesn't conflict with any names used in the
+compiler itself.  Procedure <CODE>newlname</CODE> in the compiler takes a Pascal
+identifier as input and generates a new Logo name to correspond.
+
+<P>The selectors <CODE>id.type</CODE>, <CODE>id.lname</CODE>, and <CODE>id.frame</CODE> are used
+for the second through fourth members of these lists.  There's no selector
+for the first member, the Pascal name, because the compiler never
+extracts this information explicitly.  Instead, the Pascal name is used
+by procedure <CODE>getid</CODE>, which takes a Pascal name as its input and
+returns the corresponding identifier list.
+
+<P>For variable names, the identifier information looks a little different:
+
+<P><PRE>[i integer [1 41] false]
+</PRE>
+
+<P>The first two members of this list are the Pascal name and the
+type, the same as for a procedure.  The third member is the <EM>pointer</EM>
+information for the variable: its lexical depth and the offset within
+a frame where it should be kept.  The compiler will use this information
+to issue instructions to load or store the value of the variable.  The
+fourth member of the list is <CODE>true</CODE> if this variable is a <CODE>var</CODE>
+(call by reference) parameter, <CODE>false</CODE> otherwise.
+
+<P>The variable <CODE>i</CODE> above has a scalar type, so its type indicator is
+a word.  Had it been an array, the type indicator would be a list such as
+
+<P><PRE>[integer [0 6] [5 3]]
+</PRE>
+
+<P>for a variable declared as <CODE>array [0..5, 5..7] of integer</CODE>.
+
+<P>For each dimension of the array, the first number in the list
+is the smallest possible index, while the second number is the number of
+possible index values in this dimension.  That is, the range <CODE>[3..7]</CODE>
+is represented by the list <CODE>[3 5]</CODE> because there are five possible
+values starting from 3.  Notice that there is no &quot;Logo name&quot; for a
+variable; in the compiled program, a variable is represented as an
+offset and an index register, such as <CODE>41(4)</CODE>.
+
+<P>For variables, the selectors used are <CODE>id.type</CODE>, <CODE>id.pointer</CODE>,
+and <CODE>id.varp</CODE>.
+
+<P>The information about currently accessible identifiers is kept in the list
+<CODE>idlist</CODE>.  This variable holds a list of lists; each Pascal identifier
+is represented by a list as indicated above.  <CODE>Idlist</CODE> is a local
+variable in the compiler procedures <CODE>program</CODE>, <CODE>procedure</CODE>, and <CODE>
+function</CODE>.  That is, there is a separate version for each block of the
+Pascal source program.  Each local version starts out with the same value as
+the higher-level version; identifiers declared within a block are added to
+the local version but not to the outer one.  When the compiler finishes a
+block, the (Logo) procedure in charge of that block stops and the outer <CODE>
+idlist</CODE> becomes current again.
+
+<P>This arrangement may or may not seem strange to you.  Recall that we had to
+invent this <CODE>idlist</CODE> mechanism because Pascal's
+lexical scope is different from Logo's dynamic scope.  The reason we have
+these different versions of <CODE>idlist</CODE> is to keep track of which
+identifiers are lexically available to which blocks.  And yet we are using
+Logo's dynamic scope to determine which <CODE>idlist</CODE> is available at any
+point in the compilation.  The reason this works is that <EM>the
+dynamic environment at compile time reflects the
+lexical environment at run time.</EM> For example, in the <CODE>tower</CODE>
+program, the fact that <CODE>tower</CODE> <EM>contains</EM> <CODE>hanoi</CODE>, which in
+turn contains <CODE>movedisk</CODE>, is reflected in the fact that <CODE>program</CODE>
+(compiling <CODE>tower</CODE>) <EM>invokes</EM> <CODE>procedure</CODE> (compiling <CODE>
+hanoi</CODE>), which in turn <EM>invokes</EM> <CODE>procedure</CODE> recursively
+(compiling <CODE>movedisk</CODE>).  Earlier I said that lexical scope is easier for
+a compiler than dynamic scope; this paragraph may help you see why that's
+true.  Even dynamically scoped Logo naturally falls into providing lexical
+scope for a Pascal compiler.
+
+<P>Here is how procedure and function declarations are compiled:
+
+<P><PRE>to procedure
+proc1 &quot;procedure framesize.proc
+end
+
+to function
+proc1 &quot;function framesize.fun
+end
+
+to proc1 :proctype :framesize
+localmake &quot;procname token
+localmake &quot;lexical.depth :lexical.depth+1
+localmake &quot;frame (list :lexical.depth 0)
+push &quot;idlist (list :procname :proctype (newlname :procname) :frame)
+localmake &quot;idlist :idlist
+ ...
+end
+</PRE>
+
+<P>(I'm leaving out the code generation part for now.)  What I want
+to be sure you understand is that the <CODE>push</CODE> instruction adds the new
+procedure name to the <EM>outer</EM> <CODE>idlist</CODE>; after that, it creates a
+new <CODE>idlist</CODE> whose initial value is the same as the old one.  It's very
+important that the instruction
+
+<P><PRE>localmake &quot;idlist :idlist
+</PRE>
+
+<P>comes where it does and not at the beginning of the procedure.
+<CODE>Proc1</CODE> needs access to the outer <CODE>idlist</CODE> when it starts, and
+then later it &quot;shadows&quot; that variable with its own local version.  This
+example shows that Logo's <CODE>local</CODE> command really is an executable
+command and not a declaration like Pascal's <CODE>var</CODE> declaration.  In
+Pascal it would be unthinkable to declare a new local variable in the middle
+of a block.
+
+<P><CODE>Getid</CODE> depends on Logo's dynamic scope to give it access to the right
+version of <CODE>idlist</CODE>.  Think about writing a Pascal compiler in Pascal.
+There would be a large block for <CODE>program</CODE> with many other procedures
+inside it.  Two of those inner procedures would be the ones for <CODE>
+procedure</CODE> and <CODE>function</CODE>.  (Of course they couldn't have those names,
+because they're Pascal reserved words.  They'd be called <CODE>
+compileprocedure</CODE> or some such thing.  But I think this will be easier to
+follow if I stick with the names used in the Logo version of the compiler.)
+Those two procedures should be at the same level of block structure; neither
+should be lexically within the other.  That's because a Pascal procedure
+block can include a function definition or vice versa.  Now, where in the
+lexical structure does <CODE>getid</CODE> belong?  It needs access to the local
+<CODE>idlist</CODE> of either <CODE>procedure</CODE> or <CODE>function</CODE>, whichever is
+currently active.  Similarly, things like <CODE>statement</CODE> need to be
+lexically within both <CODE>procedure</CODE> and <CODE>function</CODE>, and actually also
+within <CODE>program</CODE> because the outermost program block has statements too.
+It would theoretically be possible to solve the problem by writing three
+identical versions of each of these subprocedures, but that solution is too
+horrible to contemplate.  Instead a more common technique is to have only
+one <CODE>idlist</CODE> variable, a global one, and write the compiler so that it
+explicitly maintains a stack of old values of that variable.  The Pascal
+programmer has to do the work that the programming language should be doing
+automatically.  This is an example in which dynamic scope, while not
+absolutely essential, makes the program much easier to write and more
+straightforward to understand.
+
+<P>For every procedure or function in the Pascal source program, the compiler
+creates a global Logo variable with the same name as the corresponding
+label--that is, either a percent-prefix name or a generated symbol.  The
+value of this variable is a list of types, one for each argument to the
+procedure or function.  (For a function, the first member of the list is the
+type of the function itself; the butfirst is the list of types of its
+arguments.)  The compiler examines this &quot;type signature&quot; variable when a
+procedure or function is invoked, to make sure that the types of the actual
+arguments match the types of the formal parameters.
+
+<P>The other important compile-time data structure is the one that represents
+a compiled expression.  When the compiler calls <CODE>pexpr</CODE>, its job is to
+parse an expression from the Pascal source program and generate code to
+compute (when the compiled program runs!) the value of the expression.
+
+The generated code leaves the computed value in some register.  What <CODE>
+pexpr</CODE> returns to its caller is a data structure indicating which register
+and what type the expression has, like this:
+
+<P>
+
+<P><PRE>[real register 8]
+</PRE>
+
+<P>The first member of this list is the type of the expression.
+Most of the time, the second member is the word <CODE>register</CODE> and the
+third member is the register number in which the expression's value
+can be found.  The only exception is for a constant expression; if
+the expression is, for example, <CODE>15</CODE> then <CODE>pexpr</CODE> will output
+
+<P><PRE>[integer immediate 15]
+</PRE>
+
+<P>For the most part, these immediate expressions are useful
+only within recursive calls to <CODE>pexpr</CODE>.  In compiling the Pascal
+assignment
+
+<P><PRE>x := 15
+</PRE>
+
+<P>we're going to have to get the value 15 into a register anyway
+in order to be able to store it into <CODE>x</CODE>; the generated code will be
+something like
+
+<P><PRE>addi 7 0 15
+store 7 48(4)
+</PRE>
+
+<P>An immediate expression is most useful in compiling something like
+
+<P><PRE>x := a+15
+</PRE>
+
+<P>in which we can avoid loading the value 15 into a register, but
+can directly add it to the register containing <CODE>a</CODE>:
+
+<P><PRE>rload 7 53(4)
+addi 7 7 15
+store 7 48(4)
+</PRE>
+
+<P>The members of an expression list are examined using the selectors <CODE>
+exp.type</CODE>, <CODE>exp.mode</CODE> (the word <CODE>register</CODE> or <CODE>immediate</CODE>),
+and <CODE>exp.value</CODE> (the register number or immediate value).
+
+<P>In this compiler an &quot;expression&quot; is always a
+<EM>scalar</EM> type; although the formal definition of Pascal allows for
+array expressions, there are no operations that act on arrays the way
+operations like <CODE>+</CODE> act on scalars, and so an array expression can only
+be the name of an array variable.  (<EM>Members</EM> of arrays can, of
+course, be part of a scalar expression.)  <CODE>Passign</CODE>, the compiler
+procedure that handles assignment statements, first checks for the special
+case of an array assignment and then, only if the left side of the
+assignment is a scalar, invokes <CODE>pexpr</CODE> to parse a scalar expression.
+
+<P>In order to understand the code generated by the compiler, you should also
+know about the <EM>runtime</EM> data structures used by compiled programs.
+First, certain registers are reserved for special purposes:
+
+<P><TABLE>
+<TR><TH align="right">number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">name<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">purpose
+<TR><TD>&nbsp;
+<TR><TD align="right">0<TD><TD><CODE>reg.zero</CODE><TD><TD>always contains zero
+<TR><TD align="right">1<TD><TD><CODE>reg.retaddr</CODE><TD><TD>return address from procedure call
+<TR><TD align="right">2<TD><TD><CODE>reg.stackptr</CODE><TD><TD>first free memory address
+<TR><TD align="right">3<TD><TD><CODE>reg.globalptr</CODE><TD><TD>address of global frame
+<TR><TD align="right">4<TD><TD><CODE>reg.frameptr</CODE><TD><TD>address of current frame
+<TR><TD align="right">5<TD><TD><CODE>reg.newfp</CODE><TD><TD>address of frame being made for procedure call
+<TR><TD align="right">6<TD><TD><CODE>reg.retval</CODE><TD><TD>return value from function
+<TR><TD align="right">7<TD><TD><CODE>reg.firstfree</CODE><TD><TD>first register available for expressions
+</TABLE>
+
+<P>We've already seen most of these while discussing stack frames.
+A Pascal function returns its result in register 6; the caller immediately
+copies the return value into some other register so that it won't be
+lost if the program calls another function, for a case like
+
+<P><PRE>x := f(3)+f(4)
+</PRE>
+
+<P>Whenever a register is needed to hold some computed value, the compiler
+calls the Logo procedure <CODE>newregister</CODE>, which finds the first register
+number starting from 7 that isn't currently in use.  When the value in
+a register is no longer needed, the compiler calls <CODE>regfree</CODE> to indicate
+that that register can be reassigned by <CODE>newregister</CODE>.
+
+<P>The other noteworthy runtime data structure is the use of slots within each
+frame for special purposes:
+
+<P><TABLE>
+<TR><TH align="right">number<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">name<TH>&nbsp;&nbsp;&nbsp;&nbsp;<TH align="left">purpose
+<TR><TD>&nbsp;
+<TR><TD align="right">0<TD><TD><CODE>frame.retaddr</CODE><TD><TD>address from which this procedure was called
+<TR><TD align="right">1<TD><TD><CODE>frame.save.newfp</CODE><TD><TD>saved register 3 while filling this new frame
+<TR><TD align="right">2<TD><TD><CODE>frame.outerframe</CODE><TD><TD>the frame lexically enclosing this one
+<TR><TD align="right">3<TD><TD><CODE>frame.prevframe</CODE><TD><TD>the frame from which this one was called
+<TR><TD align="right">4-35<TD><TD><CODE>frame.regsave</CODE><TD><TD>space for saving registers
+<TR><TD align="right">36<TD><TD><CODE>frame.retval</CODE><TD><TD>function return value
+</TABLE>
+
+<P>Why is there both a register and a frame slot for a function's return
+value?  Remember that the way you indicate the return value in a Pascal
+function is by assigning to the function's name as if it were a variable.
+Such an assignment is not necessarily the last instruction in the function;
+it may do more work after computing the return value.  The compiler notices
+as assignment to the function name and generates code to save the computed
+value in slot 36 of the current frame.  Then, when the function actually
+returns, the compiler generates the instruction
+
+<P><PRE>rload 6 36(4)
+</PRE>
+
+<P>to copy the return value into register 6.  The function's frame
+is about to be freed, so the caller can't look there
+for the return value; that's why a register is used.
+
+<P>Each frame includes a block of space for saving registers when another
+procedure is called.  That's because each procedure allocates register
+numbers independently; each starts with register 7 as the first free one.
+So if the registers weren't saved before a procedure call and restored
+after the call, the values in the registers would be lost.  (Although
+the frame has enough room to save all 32 registers, to make things simple,
+not all 32 are actually saved.  The compiler knows which registers contain
+active expression values at the moment of the procedure call, and it
+generates code to save and restore only the necessary ones.)
+
+<P>You might think it would be easier to have each procedure use a separate
+set of registers, so saving wouldn't be necessary.  But this
+doesn't work for two reasons.  First, there are only a few registers, and
+in a large program we'd run out.  Even more important, the compiled
+code for a <EM>recursive</EM> procedure is going to use the same registers
+in each invocation, so we certainly can't avoid saving registers in that
+situation.
+
+<P><H2>Code Generation</H2>
+
+
+<P>Let's look again at how the compiler handles a Pascal <CODE>if</CODE> statement:
+
+<P><PRE>to pif
+local [cond elsetag endtag]
+make &quot;cond pboolean pexpr
+make &quot;elsetag gensym
+make &quot;endtag gensym
+mustbe &quot;then
+code (list &quot;jumpf :cond (word &quot;&quot; :elsetag))
+regfree :cond
+statement
+code (list &quot;jump (word &quot;&quot; :endtag))
+code :elsetag
+ifbe &quot;else [statement]
+code :endtag
+end
+</PRE>
+
+<P>I showed you this procedure while talking about parsing, asking you to
+ignore the parts about code generation.  Now we'll come back to that part of
+the process.
+
+<P>The format of the <CODE>if</CODE> statement is either of these:
+
+<P><PRE>if <EM>condition</EM> then <EM>statement</EM>
+if <EM>condition</EM> then <EM>statement</EM> else <EM>statement</EM>
+</PRE>
+
+<P>(There is probably a semicolon after the statement, but it's
+not officially part of the <CODE>if</CODE>; it's part of the compound statement
+that contains the <CODE>if</CODE>.)  When we get to <CODE>pif</CODE>, the compiler has
+already read the token <CODE>if</CODE>; the next thing to read is an expression,
+which must be of type <CODE>boolean</CODE>, providing the condition part of the
+statement.
+
+<P>In the instruction
+
+<P><PRE>make &quot;cond pboolean pexpr
+</PRE>
+
+<P>the call to <CODE>pexpr</CODE> generates code for the expression and
+returns an expression list, in the format shown earlier.  The procedure <CODE>
+pboolean</CODE> does three things:  First, it checks the mode of the expression;
+if it's immediate, the value is loaded into a register.  Second, it checks
+the type of the expression to ensure that it really is boolean.  Third,
+<CODE>pboolean</CODE> returns just the register number, which will be used in code
+generated by <CODE>pif</CODE>.
+
+<P><PRE>to pboolean :expr [:pval noimmediate :expr]
+if equalp exp.type :pval &quot;boolean [output exp.value :pval]
+(throw &quot;error sentence exp.type :pval [not true or false])
+end
+
+to noimmediate :value
+if equalp exp.mode :value &quot;immediate ~
+   [localmake &quot;reg newregister
+    code (list &quot;addi :reg reg.zero exp.value :value)
+    output (list exp.type :value &quot;register :reg)]
+output :value
+end
+</PRE>
+
+<P>Overall, the code compiled for the <CODE>if</CODE> statement will look like this:
+
+<P><PRE>    ... get condition into register <EM>cond</EM> ...
+    jumpf <EM>cond</EM> &quot;g5
+    ... code for <CODE>then</CODE> statement ...
+    jump &quot;g6
+g5
+    ... code for <CODE>else</CODE> statement ...
+g6
+</PRE>
+
+<P>The labels <CODE>g5</CODE> and <CODE>g6</CODE> in this example are generated
+symbols; they'll be different each time.  The labels are generated by the
+instructions
+
+<P><PRE>make &quot;elsetag gensym
+make &quot;endtag gensym
+</PRE>
+
+<P>in <CODE>pif</CODE>.  After we call <CODE>pexpr</CODE> to generate the code
+for the conditional expression, we explicitly generate the <CODE>jumpf</CODE>
+instruction:
+
+<P><PRE>code (list &quot;jumpf :cond (word &quot;&quot; :elsetag))
+regfree :cond
+</PRE>
+
+<P>Notice that once we've generated the <CODE>jumpf</CODE> instruction, we
+no longer need the value in register <CODE>:cond</CODE>, and we call <CODE>regfree</CODE>
+to say so.  The rest of this code generation process should be easy to work
+out.  All of the structured statements (<CODE>for</CODE>, <CODE>while</CODE>, and <CODE>
+repeat</CODE>) are similarly simple.
+
+<P>The code generation for expressions is all in <CODE>ppopop</CODE>.  Most of the
+complexity of dealing with expressions is in the parsing, not in the code
+generation; by the time we get to <CODE>ppopop</CODE>, we know that we want to
+carry out a single operation on two values, both of which are either in
+registers or immediate values.  The simple case is that both are in
+registers; suppose, for example, that we are given the subtraction operation
+and the two operands are in registers 8 and 9.  Then we just generate the
+instruction
+
+<P><PRE>sub 8 8 9
+</PRE>
+
+<P>and declare register 9 free.  <CODE>Ppopop</CODE> is a little long,
+because it has to check for special cases such as immediate operands.
+Also, a unary minus is turned into a subtraction from register zero,
+since there is no unary <CODE>minus</CODE> operation in our simulated machine.
+
+<P>Ironically, it's the &quot;simple&quot; statements that are hardest to
+compile: assignment and procedure calling.  For procedure (or function)
+calling, the difficulty is in matching actual argument expressions with
+formal parameters.  Procedure <CODE>pproccall1</CODE> generates the instructions to
+manipulate frame pointers, as described earlier, and procedure <CODE>
+procargs</CODE> fills the newly-created frame with the actual argument values.
+(If an argument is an array passed by value, each member of the array must
+be copied into the new frame.)  Assignment, handled by procedure <CODE>
+passign</CODE> in the compiler, is similar to argument passing; a value must be
+computed and then stored into a frame.  I wouldn't be too upset if you
+decide to stop here and take code generation for memory references on faith.
+
+<P>Suppose we are compiling the assignment
+
+<P><PRE>x := <EM>expression</EM>
+</PRE>
+
+<P><CODE>Passign</CODE> reads the name <CODE>x</CODE> and uses <CODE>getid</CODE> to find
+the information associated with that name.  If the assignment is to an array
+member, then <CODE>passign</CODE> must also read the array indices, but let's say
+that we are assigning to a scalar variable, to keep it simple.
+
+<P><PRE>to passign
+local [name id type index value pointer target]
+<U>make &quot;name token</U>
+make &quot;index []
+ifbe &quot;|[| [make &quot;index commalist [pexpr] mustbe &quot;|]|]
+mustbe &quot;|:=|
+<U>make &quot;id getid :name</U>
+<U>make &quot;pointer id.pointer :id</U>
+<U>make &quot;type id.type :id</U>
+passign1
+end
+</PRE>
+
+<P>Procedure <CODE>passign1</CODE> contains the steps that are in common between
+ordinary assignment (handled by <CODE>passign</CODE>) and assignment to the name of
+the current function, to set the return value (handled by <CODE>pfunset</CODE>,
+which you can read in the complete listing at the end of the chapter).
+
+<P><PRE>to passign1
+if and (listp :type) (emptyp :index) [parrayassign :id  stop]
+setindex &quot;false
+<U>make &quot;value check.type :type pexpr</U>
+<U>codestore :value (id.pointer :id) (id.varp :id) :index</U>
+regfree :value
+end
+</PRE>
+
+<P>We call <CODE>pexpr</CODE> to generate the code to compute the
+expression. <CODE>Check.type</CODE> is like <CODE>pboolean</CODE>, which you saw earlier,
+except that it takes the desired type as an argument.  It returns the
+number of the register that contains the expression value.
+
+<P>The real work is done by <CODE>codestore</CODE>, which takes four inputs.
+The first is the register number whose value should be stored; the other
+three inputs indicate where in memory the value should go.  First comes the
+pointer from the identifier list; this, you'll recall, tells us the lexical
+depth at which the variable was declared and the offset within its frame
+where the variable is kept.  Next is a true or false value indicating
+whether or not this variable is a <CODE>var</CODE> parameter; if so, then its value
+is a pointer to the variable whose value we <EM>really</EM> want to change.
+Finally, the <EM>index</EM> input will be zero for a scalar variable, or the
+number of a register containing the
+array index for an array member.  (Procedure <CODE>lindex</CODE>, whose name stands
+for &quot;linear index,&quot; has been called to generate code to convert the possible
+multi-dimensional indices, with possibly varying starting values, into a
+single number indicating the position within the array, starting from zero
+for the first member.)
+
+<P><PRE>to codestore :reg :pointer :varflag :index
+localmake &quot;target memsetup :pointer :varflag :index
+code (list &quot;store :reg targetaddr)
+regfree last :target
+end
+</PRE>
+
+<P>(There is a similar procedure <CODE>codeload</CODE> used to generate
+the code to load a variable's value into a register.)  <CODE>Codestore</CODE>
+invokes a subprocedure <CODE>memsetup</CODE> whose job is to work out an
+appropriate operand for an <CODE>rload</CODE> or <CODE>store</CODE> machine instruction.
+That operand must be an offset and an index register, such as <CODE>41(4)</CODE>.
+What <CODE>memsetup</CODE> returns is a list of the two numbers, in this case
+<CODE>[41 4]</CODE>.  Procedure <CODE>targetaddr</CODE> turns that into the right notation
+for use in the instruction.
+
+<P><CODE>Memsetup</CODE> is the most complicated procedure in the compiler, because
+there are so many special cases.  I'll describe the easy cases here.  Suppose
+that we are dealing with a scalar variable that isn't a <CODE>var</CODE> parameter.
+Then there are three cases.  If the lexical depth of that variable is equal
+to the current lexical depth, then this variable is declared in the same
+block that we're compiling.  In that case, we use register 4 (the current
+frame pointer) as the index register, and the variable's frame slot as the
+offset.  If the variable's lexical depth is zero, then it's a global
+variable.  In that case, we use register 3 (the global frame pointer) as
+the index register, and the variable's frame slot as the offset.  If the
+variable's depth is something other than zero or the current depth, then
+we have to find a pointer to the variable's own frame by looking in the
+current frame's <CODE>frame.outerframe</CODE> slot, and perhaps in <EM>that</EM>
+frame's <CODE>frame.outerframe</CODE> slot, as many times as the difference between
+the current depth and the variable's depth.
+
+<P>If the variable is a <CODE>var</CODE> parameter, then we go through the same cases
+just described, and then load the value of that variable (which is a pointer
+to the variable we really want) into a register.  We use that new register
+as the index register, and zero as the offset.
+
+<P>If the variable is an array member, then we must add the linear index
+(which is already in a register) to the offset as computed so far.
+
+<P>Perhaps an example will help sort this out.  Here is the compiled version
+of the <CODE>tower</CODE> program, with annotations:
+
+<P><PRE>[           [add 3 0 0]                   set up initial pointers
+            [add 4 0 0]
+            [addi 2 0 36]
+            [jump &quot;g1]                    jump to main program
+
+%hanoi      [store 1 0(4)]                save return value
+            [jump &quot;g2]                    jump to body of hanoi
+
+%movedisk   [store 1 0(4)]
+            [jump &quot;g3]
+
+g3          [putstr 1 [Move disk ]]       body of movedisk
+            [rload 7 36(4)]
+            [putint 1 7]                  write(number:1)
+            [putstr 1 [ from ]]
+            [rload 7 37(4)]
+            [putch 1 7]                   write(from:1)
+            [putstr 1 [ to ]]
+            [rload 7 38(4)]
+            [putch 1 7]                   write(to:1)
+            [newline]
+            [rload 1 0(4)]                reload return address
+            [add 2 4 0]                   free stack frame
+            [rload 4 3(2)]
+            [jr 1]                        return to caller
+
+g2          [rload 7 36(4)]               body of hanoi
+            [neqi 7 7 0]                  if number &lt;&gt; 0
+            [jumpf 7 &quot;g4]
+            [store 5 1(2)]                allocate new frame
+            [add 5 2 0]
+            [addi 2 2 40]
+            [store 4 3(5)]                set previous frame
+            [rload 7 2(4)]
+            [store 7 2(5)]                set enclosing frame
+            [rload 7 36(4)]
+            [subi 7 7 1]
+            [store 7 36(5)]               first arg is number-1
+            [rload 7 37(4)]
+            [store 7 37(5)]               next arg is from
+            [rload 7 39(4)]
+            [store 7 38(5)]               next arg is other
+            [rload 7 38(4)]
+            [store 7 39(5)]               next arg is onto
+            [add 4 5 0]                   switch to new frame
+            [rload 5 1(4)]
+            [jal 1 &quot;%hanoi]               recursive call
+
+            [store 5 1(2)]                set up for movedisk
+            [add 5 2 0]
+            [addi 2 2 39]
+            [store 4 3(5)]
+            [store 4 2(5)]                note different enclosing frame
+            [rload 7 36(4)]
+            [store 7 36(5)]               copy args
+            [rload 7 37(4)]
+            [store 7 37(5)]
+            [rload 7 38(4)]
+            [store 7 38(5)]
+            [add 4 5 0]
+            [rload 5 1(4)]
+            [jal 1 &quot;%movedisk]            call movedisk
+
+            [store 5 1(2)]                second recursive call
+            [add 5 2 0]
+            [addi 2 2 40]
+            [store 4 3(5)]
+            [rload 7 2(4)]
+            [store 7 2(5)]
+            [rload 7 36(4)]
+            [subi 7 7 1]
+            [store 7 36(5)]
+            [rload 7 39(4)]
+            [store 7 37(5)]
+            [rload 7 38(4)]
+            [store 7 38(5)]
+            [rload 7 37(4)]
+            [store 7 39(5)]
+            [add 4 5 0]
+            [rload 5 1(4)]
+            [jal 1 &quot;%hanoi]
+            [jump &quot;g5]                    end of if...then
+
+g4
+g5          [rload 1 0(4)]                return to caller
+            [add 2 4 0]
+            [rload 4 3(2)]
+            [jr 1]
+
+g1          [store 5 1(2)]                body of main program
+            [add 5 2 0]                   prepare to call hanoi
+            [addi 2 2 40]
+            [store 4 3(5)]
+            [store 4 2(5)]
+            [addi 7 0 5]                  constant argument 5
+            [store 7 36(5)]
+            [addi 7 0 97]                 ASCII code for 'a'
+            [store 7 37(5)]
+            [addi 7 0 98]                 ASCII code for 'b'
+            [store 7 38(5)]
+            [addi 7 0 99]                 ASCII code for 'c'
+            [store 7 39(5)]
+            [add 4 5 0]
+            [rload 5 1(4)]
+            [jal 1 &quot;%hanoi]               call hanoi
+            [exit]
+]
+</PRE>
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch6/v3ch6.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<P><H2>Program Listing</H2>
+
+<P><PRE>
+to compile :file
+if namep "peekchar [ern "peekchar]
+if namep "peektoken [ern "peektoken]
+if not namep "idlist [opsetup]
+if not emptyp :file [openread :file]
+setread :file
+ignore error
+catch "error [program]
+localmake "error error
+if not emptyp :error [print first butfirst :error]
+setread []
+if not emptyp :file [close :file]
+end
+
+;; Global setup
+
+to opsetup
+make "numregs 32
+make "memsize 3000
+pprop "|=| "binary [eql 2 [boolean []] 1]
+pprop "|<>| "binary [neq 2 [boolean []] 1]
+pprop "|<| "binary [less 2 [boolean []] 1]
+pprop "|>| "binary [gtr 2 [boolean []] 1]
+pprop "|<=| "binary [leq 2 [boolean []] 1]
+pprop "|>=| "binary [geq 2 [boolean []] 1]
+pprop "|+| "binary [add 2 [[] []] 2]
+pprop "|-| "binary [sub 2 [[] []] 2]
+pprop "or "binary [lor 2 [boolean boolean] 2]
+pprop "|*| "binary [mul 2 [[] []] 3]
+pprop "|/| "binary [quo 2 [real []] 3]
+pprop "div "binary [div 2 [integer integer] 3]
+pprop "mod "binary [rem 2 [integer integer] 3]
+pprop "and "binary [land 2 [boolean boolean] 3]
+pprop "|+| "unary [plus 1 [[] []] 4]
+pprop "|-| "unary [minus 1 [[] []] 4]
+pprop "not "unary [lnot 1 [boolean boolean] 4]
+make "idlist `[[trunc function int [1 ,[framesize.fun+1]]]
+               [round function round [1 ,[framesize.fun+1]]]
+               [random function random [1 ,[framesize.fun+1]]]]
+make "int [integer real]
+make "round [integer real]
+make "random [integer integer]
+end
+
+;; Block structure
+
+to program
+mustbe "program
+localmake "progname token
+ifbe "|(| [ignore commalist [id]  mustbe "|)|]
+mustbe "|;|
+localmake "lexical.depth 0
+localmake "namesused []
+localmake "needint "false
+localmake "needround "false
+localmake "needrandom "false
+localmake "idlist :idlist
+localmake "frame [0 0]
+localmake "id (list :progname "program (newlname :progname) :frame)
+push "idlist :id
+localmake "codeinto word "% :progname
+make :codeinto []
+localmake "framesize framesize.proc
+program1
+mustbe ".
+code [exit]
+foreach [int round random] "plibrary
+make :codeinto reverse thing :codeinto
+end
+
+to program1
+localmake "regsused (array :numregs 0)
+for [i reg.firstfree :numregs-1] [setitem :i :regsused "false]
+ifbe "var [varpart]
+.setfirst butfirst :frame :framesize
+if :lexical.depth = 0 [code (list "add reg.globalptr reg.zero reg.zero)
+                       code (list "add reg.frameptr reg.zero reg.zero)
+                       code (list "addi reg.stackptr reg.zero :framesize)]
+localmake "bodytag gensym
+code (list "jump (word "" :bodytag))
+tryprocpart
+code :bodytag
+mustbe "begin
+blockbody "end
+end
+
+to plibrary :func
+if not thing (word "need :func) [stop]
+code :func
+code (list "rload reg.firstfree (memaddr framesize.fun reg.frameptr))
+code (list (word "s :func) reg.retval reg.firstfree)
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+end
+
+;; Variable declarations
+
+to varpart
+local [token namelist type]
+make "token token
+make "peektoken :token
+if reservedp :token [stop]
+vargroup
+foreach :namelist [newvar ? :type]
+mustbe "|;|
+varpart
+end
+
+to vargroup
+make "namelist commalist [id]
+mustbe ":
+ifbe "packed []
+make "type token
+ifelse equalp :type "array [make "type arraytype] [typecheck :type]
+end
+
+to id
+local "token
+make "token token
+if letterp ascii first :token [output :token]
+make "peektoken :token
+output []
+end
+
+to arraytype
+local [ranges type]
+mustbe "|[|
+make "ranges commalist [range]
+mustbe "|]|
+mustbe "of
+make "type token
+typecheck :type
+output list :type :ranges
+end
+
+to range
+local [first last]
+make "first range1
+mustbe "..
+make "last range1
+if :first > :last ~  
+   [(throw "error (sentence [array bounds not increasing:]
+                            :first ".. :last))]
+output list :first (1 + :last - :first)
+end
+
+to range1
+local "bound
+make "bound token
+if equalp first :bound "' [output ascii first butfirst :bound]
+if equalp :bound "|-| [make "bound minus token]
+if equalp :bound int :bound [output :bound]
+(throw "error sentence [array bound not ordinal:] :bound)
+end
+
+to typecheck :type
+if memberp :type [real integer char boolean] [stop]
+(throw "error sentence [undefined type] :type)
+end
+
+to newvar :pname :type
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+push "idlist (list :pname :type (list :lexical.depth :framesize) "false)
+make "framesize :framesize + ifelse listp :type [arraysize :type] [1]
+end
+
+to arraysize :type
+output reduce "product map [last ?] last :type
+end
+
+;; Procedure and function declarations
+
+to tryprocpart
+ifbeelse "procedure ~
+         [procedure tryprocpart] ~
+         [ifbe "function [function tryprocpart]]
+end
+
+to procedure
+proc1 "procedure framesize.proc
+end
+
+to function
+proc1 "function framesize.fun
+end
+
+to proc1 :proctype :framesize
+localmake "procname token
+localmake "lexical.depth :lexical.depth+1
+localmake "frame (list :lexical.depth 0)
+push "idlist (list :procname :proctype (newlname :procname) :frame)
+localmake "idlist :idlist
+make lname :procname []
+ifbe "|(| [arglist]
+if equalp :proctype "function ~
+   [mustbe ":
+    localmake "type token
+    typecheck :type
+    make lname :procname fput :type thing lname :procname]
+mustbe "|;|
+code lname :procname
+code (list "store reg.retaddr (memaddr frame.retaddr reg.frameptr))
+program1
+if equalp :proctype "function ~
+   [code (list "rload reg.retval (memaddr frame.retval reg.frameptr))]
+code (list "rload reg.retaddr (memaddr frame.retaddr reg.frameptr))
+code (list "add reg.stackptr reg.frameptr reg.zero)
+code (list "rload reg.frameptr (memaddr frame.prevframe reg.stackptr))
+code (list "jr reg.retaddr)
+mustbe "|;|
+end
+
+to arglist
+local [token namelist type varflag]
+make "varflag "false
+ifbe "var [make "varflag "true]
+vargroup
+foreach :namelist [newarg ? :type :varflag]
+ifbeelse "|;| [arglist] [mustbe "|)|]
+end
+
+to newarg :pname :type :varflag
+if reservedp :pname [(throw "error sentence :pname [reserved word])]
+localmake "pointer (list :lexical.depth :framesize)
+push "idlist (list :pname :type :pointer :varflag)
+make "framesize :framesize + ifelse (and listp :type not :varflag) ~
+                                    [arraysize :type] [1]
+queue lname :procname ifelse :varflag [list "var :type] [:type]
+end
+
+;; Statement part
+
+to blockbody :endword
+statement
+ifbeelse "|;| [blockbody :endword] [mustbe :endword]
+end
+
+to statement
+local [token type]
+ifbe "begin [compound stop]
+ifbe "for [pfor stop]
+ifbe "if [pif stop]
+ifbe "while [pwhile stop]
+ifbe "repeat [prepeat stop]
+ifbe "write [pwrite stop]
+ifbe "writeln [pwriteln stop]
+make "token token
+make "peektoken :token
+if memberp :token [|;| end until] [stop]
+make "type gettype :token
+if emptyp :type [(throw "error sentence :token [can't begin statement])]
+if equalp :type "procedure [pproccall stop]
+if equalp :type "function [pfunset stop]
+passign
+end
+
+;; Compound statement
+
+to compound
+blockbody "end
+end
+
+;; Structured statements
+
+to pfor
+local [var init step final looptag endtag testreg]
+make "var token
+mustbe "|:=|
+make "init pinteger pexpr
+make "step 1
+ifbeelse "downto [make "step -1] [mustbe "to]
+make "final pinteger pexpr
+mustbe "do
+make "looptag gensym
+make "endtag gensym
+code :looptag
+localmake "id getid :var
+codestore :init (id.pointer :id) (id.varp :id) 0
+make "testreg newregister
+code (list (ifelse :step<0 ["less] ["gtr]) :testreg :init :final)
+code (list "jumpt :testreg (word "" :endtag))
+regfree :testreg
+statement
+code (list "addi :init :init :step)
+code (list "jump (word "" :looptag))
+code :endtag
+regfree :init
+regfree :final
+end
+
+to prepeat
+local [cond looptag]
+make "looptag gensym
+code :looptag
+blockbody "until
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :looptag))
+regfree :cond
+end
+
+to pif
+local [cond elsetag endtag]
+make "cond pboolean pexpr
+make "elsetag gensym
+make "endtag gensym
+mustbe "then
+code (list "jumpf :cond (word "" :elsetag))
+regfree :cond
+statement
+code (list "jump (word "" :endtag))
+code :elsetag
+ifbe "else [statement]
+code :endtag
+end
+
+to pwhile
+local [cond looptag endtag]
+make "looptag gensym
+make "endtag gensym
+code :looptag
+make "cond pboolean pexpr
+code (list "jumpf :cond (word "" :endtag))
+regfree :cond
+mustbe "do
+statement
+code (list "jump (word "" :looptag))
+code :endtag
+end
+
+;; Simple statements: write and writeln
+
+to pwrite
+mustbe "|(|
+pwrite1
+end
+
+to pwrite1
+pwrite2
+ifbe "|)| [stop]
+ifbeelse ", [pwrite1] [(throw "error [missing comma])]
+end
+
+to pwrite2
+localmake "result pwrite3
+ifbe ": [.setfirst (butfirst :result) token]
+code :result
+if not equalp first :result "putstr [regfree last :result]
+end
+
+to pwrite3
+localmake "token token
+if equalp first :token "' ~
+   [output (list "putstr 1 (list butlast butfirst :token))]
+make "peektoken :token
+localmake "result pexpr
+if equalp first :result "char [output (list "putch 1 pchar :result)]
+if equalp first :result "boolean [output (list "puttf 1 pboolean :result)]
+if equalp first :result "integer [output (list "putint 10 pinteger :result)]
+output (list "putreal 20 preal :result)
+end
+
+to pwriteln
+ifbe "|(| [pwrite1]
+code [newline]
+end
+
+;; Simple statements: procedure call
+
+to pproccall
+localmake "pname token
+localmake "id getid :pname
+localmake "lname id.lname :id
+localmake "vartypes thing :lname
+pproccall1 framesize.proc
+end
+
+to pproccall1 :offset
+code (list "store reg.newfp (memaddr frame.save.newfp reg.stackptr))
+code (list "add reg.newfp reg.stackptr reg.zero)
+code (list "addi reg.stackptr reg.stackptr (last id.frame :id))
+code (list "store reg.frameptr (memaddr frame.prevframe reg.newfp))
+localmake "newdepth first id.frame :id
+ifelse :newdepth > :lexical.depth ~
+       [code (list "store reg.frameptr
+                   (memaddr frame.outerframe reg.newfp))] ~
+       [localmake "tempreg newregister
+        code (list "rload :tempreg (memaddr frame.outerframe reg.frameptr))
+        repeat (:lexical.depth - :newdepth)
+               [code (list "rload :tempreg 
+                           (memaddr frame.outerframe :tempreg))]
+        code (list "store :tempreg (memaddr frame.outerframe reg.newfp))
+        regfree :tempreg]
+if not emptyp :vartypes [mustbe "|(|  procargs :vartypes :offset]
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "store :i (memaddr frame.regsave+:i reg.frameptr))]]
+code (list "add reg.frameptr reg.newfp reg.zero)
+code (list "rload reg.newfp (memaddr frame.save.newfp reg.frameptr))
+code (list "jal reg.retaddr (word "" :lname))
+for [i reg.firstfree :numregs-1] ~
+    [if item :i :regsused
+        [code (list "rload :i (memaddr frame.regsave+:i reg.frameptr))]]
+end
+
+to procargs :types :offset
+if emptyp :types [mustbe "|)|  stop]
+localmake "next procarg first :types :offset
+if not emptyp butfirst :types [mustbe ",]
+procargs butfirst :types :offset+:next
+end
+
+to procarg :type :offset
+local "result
+if equalp first :type "var [output procvararg last :type]
+if listp :type [output procarrayarg :type]
+make "result check.type :type pexpr
+code (list "store :result (memaddr :offset reg.newfp))
+regfree :result
+output 1
+end
+
+to procvararg :ftype
+local [pname id type index]
+make "pname token
+make "id getid :pname
+make "type id.type :id
+ifelse wordp :ftype ~
+       [setindex "true] ~
+       [make "index 0]
+if not equalp :type :ftype ~
+   [(throw "error sentence :pname [arg wrong type])]
+localmake "target memsetup (id.pointer :id) (id.varp :id) :index
+localmake "tempreg newregister
+code (list "addi :tempreg (last :target) (first :target))
+code (list "store :tempreg (memaddr :offset reg.newfp))
+regfree last :target
+regfree :tempreg
+output 1
+end
+
+to procarrayarg :type
+localmake "pname token
+localmake "id getid :pname
+if not equalp :type (id.type :id) ~
+   [(throw "error (sentence "array :pname [wrong type for arg]))]
+localmake "size arraysize :type
+localmake "rtarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "pointreg newregister
+code (list "addi :pointreg reg.newfp :offset)
+localmake "ltarget (list 0 :pointreg)
+copyarray
+output :size
+end
+
+;; Simple statements: assignment statement (including function value)
+
+to passign
+local [name id type index value pointer target]
+make "name token
+make "index []
+ifbe "|[| [make "index commalist [pexpr] mustbe "|]|]
+mustbe "|:=|
+make "id getid :name
+make "pointer id.pointer :id
+make "type id.type :id
+passign1
+end
+
+to pfunset
+local [name id type index value pointer target]
+make "name token
+make "index []
+if not equalp :name :procname ~
+   [(throw "error sentence [assign to wrong function] :name)]
+mustbe "|:=|
+make "pointer (list :lexical.depth frame.retval)
+make "type first thing lname :name
+make "id (list :name :type :pointer "false)
+passign1
+end
+
+to passign1
+if and (listp :type) (emptyp :index) [parrayassign :id  stop]
+setindex "false
+make "value check.type :type pexpr
+codestore :value (id.pointer :id) (id.varp :id) :index
+regfree :value
+end
+
+to noimmediate :value
+if equalp exp.mode :value "immediate ~
+   [localmake "reg newregister
+    code (list "addi :reg reg.zero exp.value :value)
+    output (list exp.type :value "register :reg)]
+output :value
+end
+
+to check.type :type :result
+if equalp :type "real [output preal :result]
+if equalp :type "integer [output pinteger :result]
+if equalp :type "char [output pchar :result]
+if equalp :type "boolean [output pboolean :result]
+end
+
+to preal :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "real [output exp.value :pval]
+output pinteger :pval
+end
+
+to pinteger :expr [:pval noimmediate :expr]
+local "type
+make "type exp.type :pval
+if memberp :type [integer boolean char] [output exp.value :pval]
+(throw "error sentence exp.type :pval [isn't ordinal])
+end
+
+to pchar :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "char [output exp.value :pval]
+(throw "error sentence exp.type :pval [not character value])
+end
+
+to pboolean :expr [:pval noimmediate :expr]
+if equalp exp.type :pval "boolean [output exp.value :pval]
+(throw "error sentence exp.type :pval [not true or false])
+end
+
+to parrayassign :id
+localmake "right token
+if equalp first :right "' ~
+   [pstringassign :type (butlast butfirst :right)  stop]
+localmake "rid getid :right
+if not equalp (id.type :id) (id.type :rid) ~
+   [(throw "error (sentence "arrays :name "and :right [unequal types]))]
+localmake "size arraysize id.type :id
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+localmake "rtarget memsetup (id.pointer :rid) (id.varp :rid) 0
+copyarray
+end
+
+to pstringassign :type :string
+if not equalp first :type "char [stringlose]
+if not emptyp butfirst last :type [stringlose]
+if not equalp (last first last :type) (count :string) [stringlose]
+localmake "ltarget memsetup (id.pointer :id) (id.varp :id) 0
+pstringassign1 newregister (first :ltarget) (last :ltarget) :string
+regfree last :ltarget
+end
+
+to pstringassign1 :tempreg :offset :reg :string
+if emptyp :string [regfree :tempreg  stop]
+code (list "addi :tempreg reg.zero ascii first :string)
+code (list "store :tempreg (memaddr :offset :reg))
+pstringassign1 :tempreg :offset+1 :reg (butfirst :string)
+end
+
+to stringlose
+(throw "error sentence :name [not string array or wrong size])
+end
+
+;; Multiple array indices to linear index computation
+
+to setindex :parseflag
+ifelse listp :type ~
+       [if :parseflag
+           [mustbe "|[|  make "index commalist [pexpr]  mustbe "|]| ]
+        make "index lindex last :type :index
+        make "type first :type] ~
+       [make "index 0]
+end
+
+to lindex :bounds :index
+output lindex1 (offset pinteger noimmediate first :index
+                       first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to lindex1 :sofar :bounds :index
+if emptyp :bounds [output :sofar]
+output lindex1 (nextindex :sofar
+                          last first :bounds
+                          pinteger noimmediate first :index
+                          first first :bounds) ~
+               butfirst :bounds butfirst :index
+end
+
+to nextindex :old :factor :new :offset
+code (list "muli :old :old :factor)
+localmake "newreg offset :new :offset
+code (list "add :old :old :newreg)
+regfree :newreg
+output :old
+end
+
+to offset :indexreg :lowbound
+if not equalp :lowbound 0 [code (list "subi :indexreg :indexreg :lowbound)]
+output :indexreg
+end
+
+;; Memory interface: load and store instructions
+
+to codeload :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "rload :reg targetaddr)
+regfree last :target
+end
+
+to codestore :reg :pointer :varflag :index
+localmake "target memsetup :pointer :varflag :index
+code (list "store :reg targetaddr)
+regfree last :target
+end
+
+to targetaddr
+output memaddr (first :target) (last :target)
+end
+
+to memaddr :offset :index
+output (word :offset "\( :index "\))
+end
+
+to memsetup :pointer :varflag :index
+localmake "depth first :pointer
+localmake "offset last :pointer
+local "newreg
+ifelse equalp :depth 0 ~
+       [make "newreg reg.globalptr] ~
+       [ifelse equalp :depth :lexical.depth
+               [make "newreg reg.frameptr]
+               [make "newreg newregister
+                code (list "rload :newreg
+                           (memaddr frame.outerframe reg.frameptr))
+                repeat (:lexical.depth - :depth) - 1
+                       [code (list "rload :newreg
+                                   (memaddr frame.outerframe :newreg))]]]
+if :varflag ~
+   [ifelse :newreg = reg.frameptr
+           [make "newreg newregister
+            code (list "rload :newreg (memaddr :offset reg.frameptr))]
+           [code (list "rload :newreg (memaddr :offset :newreg))]
+    make "offset 0]
+if not equalp :index 0 ~
+   [code (list "add :index :index :newreg)
+    regfree :newreg
+    make "newreg :index]
+output list :offset :newreg
+end
+
+to copyarray
+localmake "looptag gensym
+localmake "sizereg newregister
+code (list "addi :sizereg reg.zero :size)
+code :looptag
+localmake "tempreg newregister
+code (list "rload :tempreg (memaddr (first :rtarget) (last :rtarget)))
+code (list "store :tempreg (memaddr (first :ltarget) (last :ltarget)))
+code (list "addi (last :rtarget) (last :rtarget) 1)
+code (list "addi (last :ltarget) (last :ltarget) 1)
+code (list "subi :sizereg :sizereg 1)
+code (list "gtr :tempreg :sizereg reg.zero)
+code (list "jumpt :tempreg (word "" :looptag))
+regfree :sizereg
+regfree :tempreg
+regfree last :ltarget
+regfree last :rtarget
+end
+
+;; Expressions
+
+to pexpr
+local [opstack datastack parenlevel]
+make "opstack [[popen 1 0]]
+make "datastack []
+make "parenlevel 0
+output pexpr1
+end
+
+to pexpr1
+local [token op]
+make "token token
+while [equalp :token "|(|] [popen  make "token token]
+make "op pgetunary :token
+if not emptyp :op [output pexprop :op]
+push "datastack pdata :token
+make "token token
+while [and (:parenlevel > 0) (equalp :token "|)| )] ~
+      [pclose  make "token token]
+make "op pgetbinary :token
+if not emptyp :op [output pexprop :op]
+make "peektoken :token
+pclose
+if not emptyp :opstack [(throw "error [too many operators])]
+if not emptyp butfirst :datastack [(throw "error [too many operands])]
+output pop "datastack
+end
+
+to pexprop :op
+while [(op.prec :op) < (1 + op.prec first :opstack)] [ppopop]
+push "opstack :op
+output pexpr1
+end
+
+to popen
+push "opstack [popen 1 0]
+make "parenlevel :parenlevel + 1
+end
+
+to pclose
+while [(op.prec first :opstack) > 0] [ppopop]
+ignore pop "opstack
+make "parenlevel :parenlevel - 1
+end
+
+to pgetunary :token
+output gprop :token "unary
+end
+
+to pgetbinary :token
+output gprop :token "binary
+end
+
+to ppopop
+local [op function args left right type reg]
+make "op pop "opstack
+make "function op.instr :op
+if equalp :function "plus [stop]
+make "args op.nargs :op
+make "right pop "datastack
+make "left (ifelse equalp :args 2 [pop "datastack] [[[] []]])
+make "type pnewtype :op exp.type :left exp.type :right
+if equalp exp.mode :left "immediate ~
+   [localmake "leftreg newregister
+    code (list "addi :leftreg reg.zero exp.value :left)
+    make "left (list exp.type :left "register :leftreg)]
+ifelse equalp exp.mode :left "register ~
+       [make "reg exp.value :left] ~
+       [ifelse equalp exp.mode :right "register
+               [make "reg exp.value :right]
+               [make "reg newregister]]
+if equalp :function "minus ~
+   [make "left (list exp.type :right "register reg.zero)
+    make "function "sub
+    make "args 2]
+if equalp exp.mode :right "immediate ~
+   [make "function word :function "i]
+ifelse equalp :args 2 ~
+       [code (list :function :reg exp.value :left exp.value :right)] ~
+       [code (list :function :reg exp.value :right)]
+if not equalp :reg exp.value :left [regfree exp.value :left]
+if (and (equalp exp.mode :right "register)
+        (not equalp :reg exp.value :right)) ~
+   [regfree exp.value :right]
+push "datastack (list :type "register :reg)
+end
+
+to pnewtype :op :ltype :rtype
+local "type
+make "type op.types :op
+if emptyp :ltype [make "ltype :rtype]
+if not emptyp last :type [pchecktype last :type :ltype :rtype]
+if and (equalp :ltype "real) (equalp :rtype "integer) [make "rtype "real]
+if and (equalp :ltype "integer) (equalp :rtype "real) [make "ltype "real]
+if not equalp :ltype :rtype [(throw "error [type clash])]
+if emptyp last :type ~
+   [if not memberp :rtype [integer real]
+       [(throw "error [nonarithmetic type])]]
+if emptyp first :type [output :rtype]
+output first :type
+end
+
+to pchecktype :want :left :right
+if not equalp :want :left [(throw "error (sentence :left "isn't :want))]
+if not equalp :want :right [(throw "error (sentence :right "isn't :want))]
+end
+
+;; Expression elements
+
+to pdata :token
+if equalp :token "true [output [boolean immediate 1]]
+if equalp :token "false [output [boolean immediate 0]]
+if equalp first :token "' [output pchardata :token]
+if numberp :token [output (list numtype :token "immediate :token)]
+localmake "id getid :token
+if emptyp :id [(throw "error sentence [undefined symbol] :token)]
+localmake "type id.type :id
+if equalp :type "function [output pfuncall :token]
+local "index
+setindex "true
+localmake "reg newregister
+codeload :reg (id.pointer :id) (id.varp :id) :index
+output (list :type "register :reg)
+end
+
+to pchardata :token
+if not equalp count :token 3 ~
+   [(throw "error sentence :token [not single character])]
+output (list "char "immediate ascii first butfirst :token)
+end
+
+to numtype :number
+if memberp ". :number [output "real]
+if memberp "e :number [output "real]
+output "integer
+end
+
+to pfuncall :pname
+localmake "id getid :pname
+localmake "lname id.lname :id
+if namep (word "need :lname) [make (word "need :lname) "true]
+localmake "vartypes thing :lname
+localmake "returntype first :vartypes
+make "vartypes butfirst :vartypes
+pproccall1 framesize.fun
+localmake "reg newregister
+code (list "add :reg reg.retval reg.zero)
+output (list :returntype "register :reg)
+end
+
+;; Parsing assistance
+
+to code :stuff
+if emptyp :stuff [stop]
+push :codeinto :stuff
+end
+
+to commalist :test [:sofar []]
+local [result token]
+make "result run :test
+if emptyp :result [output :sofar]
+ifbe ", [output (commalist :test (lput :result :sofar))]
+output lput :result :sofar
+end
+
+.macro ifbe :wanted :action
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output []
+end
+
+.macro ifbeelse :wanted :action :else
+localmake "token token
+if equalp :token :wanted [output :action]
+make "peektoken :token
+output :else
+end
+
+to mustbe :wanted
+localmake "token token
+if equalp :token :wanted [stop]
+(throw "error (sentence "expected :wanted "got :token))
+end
+
+to newregister
+for [i reg.firstfree :numregs-1] ~
+    [if not item :i :regsused [setitem :i :regsused "true  output :i]]
+(throw "error [not enough registers available])
+end
+
+to regfree :reg
+setitem :reg :regsused "false
+end
+
+to reservedp :word
+output memberp :word [and array begin case const div do downto else end ~
+                      file for forward function goto if in label mod nil ~
+                      not of packed procedure program record repeat set ~
+                      then to type until var while with]
+end
+
+;; Lexical analysis
+
+to token
+local [token char]
+if namep "peektoken [make "token :peektoken
+                     ern "peektoken   output :token]
+make "char getchar
+if equalp :char "|{| [skipcomment output token]
+if equalp :char char 32 [output token]
+if equalp :char char 13 [output token]
+if equalp :char char 10 [output token]
+if equalp :char "' [output string "']
+if memberp :char [+ - * / = ( , ) |[| |]| |;|] [output :char]
+if equalp :char "|<| [output twochar "|<| [= >]]
+if equalp :char "|>| [output twochar "|>| [=]]
+if equalp :char ". [output twochar ". [.]]
+if equalp :char ": [output twochar ": [=]]
+if numberp :char [output number :char]
+if letterp ascii :char [output token1 lowercase :char]
+(throw "error sentence [unrecognized character:] :char)
+end
+
+to skipcomment
+if equalp getchar "|}| [stop]
+skipcomment
+end
+
+to string :string
+local "char
+make "char getchar
+if not equalp :char "' [output string word :string :char]
+make "char getchar
+if equalp :char "' [output string word :string :char]
+make "peekchar :char
+output word :string "'
+end
+
+to twochar :old :ok
+localmake "char getchar
+if memberp :char :ok [output word :old :char]
+make "peekchar :char
+output :old
+end
+
+to number :num
+local "char
+make "char getchar
+if equalp :char ". ~
+   [make "char getchar ~
+    ifelse equalp :char ". ~
+           [make "peektoken ".. output :num] ~
+           [make "peekchar :char output number word :num ".]]
+if equalp :char "e [output number word :num twochar "e [+ -]]
+if numberp :char [output number word :num :char]
+make "peekchar :char
+output :num
+end
+
+to token1 :token
+local "char
+make "char getchar
+if or letterp ascii :char numberp :char ~
+   [output token1 word :token lowercase :char]
+make "peekchar :char
+output :token
+end
+
+to letterp :code
+if and (:code > 64) (:code < 91) [output "true]
+output and (:code > 96) (:code < 123)
+end
+
+to getchar
+local "char
+if namep "peekchar [make "char :peekchar  ern "peekchar  output :char]
+if eofp [output char 1]
+output rc1
+end
+
+to rc1
+local "result
+make "result readchar
+type :result
+output :result
+end
+
+;; Data abstraction: ID List
+
+to newlname :word
+if memberp :word :namesused [output gensym]
+if namep word "% :word [output gensym]
+push "namesused :word
+output word "% :word
+end
+
+to lname :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 3 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to gettype :word
+local "result
+make "result getid :word
+if not emptyp :result [output item 2 :result]
+(throw "error sentence [unrecognized identifier] :word)
+end
+
+to getid :word [:list :idlist]
+if emptyp :list [output []]
+if equalp :word first first :list [output first :list]
+output (getid :word butfirst :list)
+end
+
+to id.type :id
+output item 2 :id
+end
+
+to id.pointer :id
+output item 3 :id
+end
+
+to id.lname :id
+output item 3 :id
+end
+
+to id.varp :id
+output item 4 :id
+end
+
+to id.frame :id
+output item 4 :id
+end
+
+;; Data abstraction: Frame slots
+
+to frame.retaddr
+output 0
+end
+
+to frame.save.newfp
+output 1
+end
+
+to frame.outerframe
+output 2
+end
+
+to frame.prevframe
+output 3
+end
+
+to frame.regsave
+output 4
+end
+
+to framesize.proc
+output 4+:numregs
+end
+
+to frame.retval
+output 4+:numregs
+end
+
+to framesize.fun
+output 5+:numregs
+end
+
+;; Data abstraction: Operators
+
+to op.instr :op
+output first :op
+end
+
+to op.nargs :op
+output first bf :op
+end
+
+to op.types :op
+output item 3 :op
+end
+
+to op.prec :op
+output last :op
+end
+
+;; Data abstraction: Expressions
+
+to exp.type :exp
+output first :exp
+end
+
+to exp.mode :exp
+output first butfirst :exp
+end
+
+to exp.value :exp
+output last :exp
+end
+
+;; Data abstraction: Registers
+
+to reg.zero
+output 0
+end
+
+to reg.retaddr
+output 1
+end
+
+to reg.stackptr
+output 2
+end
+
+to reg.globalptr
+output 3
+end
+
+to reg.frameptr
+output 4
+end
+
+to reg.newfp
+output 5
+end
+
+to reg.retval
+output 6
+end
+
+to reg.firstfree
+output 7
+end
+
+;; Runtime (machine simulation)
+
+to prun :progname
+localmake "prog thing word "% :progname
+localmake "regs (array :numregs 0)
+local filter "wordp :prog
+foreach :prog [if wordp ? [make ? ?rest]]
+localmake "memory (array :memsize 0)
+setitem 0 :regs 0
+if not procedurep "add [runsetup]
+prun1 :prog
+end
+
+to prun1 :pc
+if emptyp :pc [stop]
+if listp first :pc [run first :pc]
+prun1 butfirst :pc
+end
+
+to rload :reg :offset :index
+setitem :reg :regs (item (item :index :regs)+:offset :memory)
+end
+
+to store :reg :offset :index
+setitem (item :index :regs)+:offset :memory (item :reg :regs)
+end
+
+to runsetup
+foreach [[add sum] [sub difference] [mul product] [quo quotient]
+         [div [int quotient]] [rem remainder] [land product]
+         [lor [tobool lessp 0 sum]] [eql [tobool equalp]]
+         [neq [tobool not equalp]] [less [tobool lessp]]
+         [gtr [tobool greaterp]] [leq [tobool not greaterp]]
+         [geq [tobool not lessp]]] ~
+        [define first ?
+                `[[dest src1 src2]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  (item :src2 :regs)]]
+         define word first ? "i
+                `[[dest src1 immed]
+                  [setitem :dest :regs ,@[last ?] (item :src1 :regs)
+                                                  :immed]]]
+foreach [[lnot [difference 1]] [sint int] [sround round] [srandom random]] ~
+        [define first ?
+                `[[dest src]
+                  [setitem :dest :regs ,@[last ?] (item :src :regs)]]
+         define word first ? "i
+                `[[dest immed]
+                  [setitem :dest :regs ,@[last ?] :immed]]]
+end
+
+to tobool :tf
+output ifelse :tf [1] [0]
+end
+
+to jump :label
+make "pc fput :label thing :label
+end
+
+to jumpt :reg :label
+if (item :reg :regs)=1 [jump :label]
+end
+
+to jumpf :reg :label
+if (item :reg :regs)=0 [jump :label]
+end
+
+to jr :reg
+make "pc item :reg :regs
+end
+
+to jal :reg :label
+setitem :reg :regs :pc
+jump :label
+end
+
+to putch :width :reg
+spaces :width 1
+type char (item :reg :regs)
+end
+
+to putstr :width :string
+spaces :width (count first :string)
+type :string
+end
+
+to puttf :width :bool
+spaces :width 1
+type ifelse (item :bool :regs)=0 ["F] ["T]
+end
+
+to putint :width :reg
+localmake "num (item :reg :regs)
+spaces :width count :num
+type :num
+end
+
+to putreal :width :reg
+putint :width :reg
+end
+
+to spaces :width :count
+if :width > :count [repeat :width - :count [type "| |]]
+end
+
+to newline
+print []
+end
+
+to exit
+make "pc [exit]
+end
+</PRE>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="https://people.eecs.berkeley.edu/~bh/v3ch4/v3ch4.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="../v3ch6/v3ch6.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch5/vdash.gif b/js/games/nluqo.github.io/~bh/v3ch5/vdash.gif
new file mode 100644
index 0000000..ff063aa
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch5/vdash.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch6/ai.html b/js/games/nluqo.github.io/~bh/v3ch6/ai.html
new file mode 100644
index 0000000..631abbf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch6/ai.html
@@ -0,0 +1,3070 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 6: Artificial Intelligence</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Artificial Intelligence</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch5/v3ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch7/v3ch7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="student.lg"><CODE>student</CODE></A>
+
+
+<P>
+
+<P>Can a computer be intelligent?  What would it mean for a computer to be
+intelligent?  John McCarthy, one of the founders of
+artificial intelligence
+research, once defined the field as &quot;getting a computer to do things which,
+when done by people, are said to involve intelligence.&quot; The point of the
+definition was that he felt perfectly comfortable about carrying on his
+research without first having to defend any particular philosophical view of
+what the word &quot;intelligence&quot; means.
+
+<P>There have always been two points of view among AI researchers about what
+their purpose is.  One point of view is that AI programs contribute to our
+understanding of <EM>human</EM> psychology; when researchers take this view
+they try to make their programs reflect the actual mechanisms of intelligent
+human behavior.  For example, Allen Newell and
+Herbert A. Simon begin their
+classic AI book <EM>Human Problem Solving</EM> with the sentence, &quot;The aim
+of this book is to advance our understanding of how humans think.&quot; In one
+of their research projects they studied cryptarithmetic problems, in which
+digits are replaced with letters in a multi-digit addition or multiplication.
+First they did a careful observation and analysis of how a human subject
+attacked such a problem, then they pointed out specific problem-solving
+techniques that the person used, and used those techniques as the basis for
+designing a computer simulation.  The other point of view
+is that AI programs provide a more abstract model for intelligence in
+general; just as one can learn about the properties of computers by studying
+finite-state machines, even though no real computer operates precisely as a
+formal finite-state machine does, we can learn about the properties of any
+possible intelligent being by simulating intelligence in a computer program,
+whether or not the mechanisms of that program are similar to those used by
+people.
+
+<P>In the early days of AI research these two points of view were not sharply
+divided.  Sometimes the same person would switch from one to the other,
+sometimes trying to model human thought processes and sometimes trying to
+solve a given problem by whatever methods could be made to work.  More
+recently, researchers who hold one or the other point of view consistently
+have begun to define two separate fields.  One is <EM>
+cognitive science,</EM> in which computer scientists join with
+psychologists, linguists, biologists, and others to study human cognitive
+psychology, using computer programs as a concrete embodiment of theories
+about the human mind.  The other is called <EM>expert systems</EM>
+or <EM>knowledge engineering,</EM> in which programming techniques
+developed by AI researchers are put to practical use in programs that solve
+real-world business problems such as the diagnosis and repair of
+malfunctioning equipment.
+
+<P><H2>Microworlds: Student</H2>
+
+<P>In this chapter I'm going to concentrate on one particular area of AI
+research: teaching a computer to understand English.  Besides its inherent
+interest, this area has the advantage that it doesn't require special
+equipment, as do some other parts of AI such as machine vision and the
+control of robot manipulators.
+
+<P>In the 1950s many people were very optimistic about the use of computers to
+translate from one language to another.  IBM undertook a government-sponsored
+project to translate scientific journals from Russian to English.  At first
+they thought that this translation could be done very straightforwardly,
+with a Russian-English dictionary and a few little kludges to rearrange the
+order of words in a sentence to account for differences in the grammatical
+structure of the two languages.  This simple approach was not successful.
+One problem is that the same word can have different meanings, and even
+different parts of speech, in different contexts.  (According to one famous
+anecdote, the program translated the Russian equivalent of &quot;The spirit is
+willing but the flesh is weak&quot; into &quot;The vodka is strong but the meat is
+rotten.&quot;)
+
+<P>A decade later, several AI researchers had the idea that ambiguities in the
+meanings of words could be resolved by trying to understand English only in
+some limited context.  If you know in advance that the sentence you're
+trying to understand is about baseball statistics, or about relationships in
+a family tree, or about telling a robot arm to move blocks on a table (these
+are actual examples of work done in that period) then only certain narrowly
+defined types of sentences are meaningful at all.  You needn't think about
+metaphors or about the many assumptions about commonsense knowledge that
+people make in talking with one another.  Such a limited context for a
+language understanding program is called a <EM>microworld.</EM>
+
+<P>This chapter includes a Logo version of Student, a program written by
+Daniel G. Bobrow for his 1964 Ph.D. thesis, <EM>Natural
+Language Input for a Computer Problem Solving System,</EM> at MIT.  Student
+is a program that solves algebra word problems:
+
+<P><PRE>? <U>student [The price of a radio is 69.70. If this price is 15 percent</U>
+           <U>less than the marked price, find the marked price.]</U>
+
+The marked price is 82 dollars
+</PRE>
+
+<P>(In this illustration I've left out some of Student's display of
+intermediate results.)  The program has two parts: one that translates the
+word problem into the form of equations and another that solves the
+equations.  The latter part is complex (about 40 Logo procedures) but
+straightforward; it doesn't seem surprising to most people that a computer
+can manipulate mathematical equations.  It is Student's understanding of
+English sentences that furthered the cause of artificial intelligence.
+
+<BLOCKQUOTE>
+<P><A NAME="bobrow1">The aim</A> of the
+research reported here was to discover how one could build a
+computer program which could communicate with people in a natural language
+within some restricted problem domain.  In the course of this investigation,
+I wrote a set of computer programs, the Student system, which accepts as
+input a comfortable but restricted subset of English which can be used to
+express a wide variety of algebra story problems...
+
+<P>In the following discussion, I shall use phrases such as &quot;the computer
+understands English.&quot;  In all such cases, the &quot;English&quot; is just the
+restricted subset of English which is allowable as input for the computer
+program under discussion.  In addition, for purposes of this report I have
+adopted the following operational definition of understanding.  A computer
+<EM>understands</EM> a subset of English if it accepts input sentences which
+are members of this subset, and answers questions based on information
+contained in the input.  The Student system understands English in this
+sense.  [Bobrow, 1964.]
+</BLOCKQUOTE>
+
+<P>How does the algebra microworld simplify the understanding problem?  For one
+thing, Student need not know anything about the meanings of noun phrases.
+In the sample problem above, the phrase <CODE>The price of a radio</CODE> is used
+as a variable name.  The problem could just as well have been
+
+<P><PRE>The weight of a giant size detergent box is 69.70 ounces.  If this weight
+is 15 percent less than the weight of an enormous size box, find the
+weight of an enormous size box.
+</PRE>
+
+<P>For Student, either problem boils down to
+
+<P><PRE><EM>variable1</EM> = 69.70 <EM>units</EM>
+
+<EM>variable1</EM> = 0.85 * <EM>variable2</EM>
+
+Find <EM>variable2</EM>.
+</PRE>
+
+<P>Student understands particular words only to the extent that they
+have a <EM>mathematical</EM> meaning.  For example, the program knows that
+<CODE>15 percent less than</CODE> means the same as <CODE>0.85 times</CODE>.
+
+<P><H2>How Student Translates English to Algebra</H2>
+
+<P>Student translates a word problem into equations in several steps.  In the
+following paragraphs, I'll mention in parentheses the names of the Logo
+procedures that carry out each step I describe, but don't read the
+procedures yet.  First read through the description of the process without
+worrying about the programming details of each step.  Later you can reread
+this section while examining the complete listing at the end of the chapter.
+
+<P>In translating Student to Logo, I've tried not to change the capabilities of
+the program in any way.  The overall structure of my version is similar to
+that of Bobrow's original implementation, but I've changed some details.
+I've used iteration and mapping tools to make the program easier to read;
+I've changed some aspects of the fine structure of the program to fit more
+closely with the usual Logo programming style; in a few cases I've tried to
+make exceptionally slow parts of the program run faster by finding a more
+efficient algorithm to achieve the same goal.
+
+<P>The top-level procedure <CODE>student</CODE> takes one input, a list containing the
+word problem.  (The disk file that accompanies this project includes several
+variables containing sample problems.  For example,
+
+<P><PRE>? <U>student :radio</U>
+</PRE>
+
+<P>will carry out the steps I'm about to describe.)  Student begins
+by printing the original problem:
+
+<P><PRE>? <U>student :radio</U>
+
+The problem to be solved is
+
+The price of a radio is 69.70. If this price is 15 percent less than the
+marked price, find the marked price.
+</PRE>
+
+<P>The first step is to separate punctuation characters from the
+attached words.  For example, the word &quot;<CODE>price,</CODE>&quot; in the original problem
+becomes the two words &quot;<CODE>price ,</CODE>&quot; with the comma on its own.  Then
+(<CODE>student1</CODE>) certain <EM>mandatory substitutions</EM> are applied
+(<CODE>idioms</CODE>).  For example, the phrase <CODE>percent less than</CODE> is translated
+into the single word <CODE>perless</CODE>.  The result is printed:
+
+<P><PRE>With mandatory substitutions the problem is
+
+The price numof a radio is 69.70 dollars . If this price is 15 perless
+the marked price , find the marked price .
+</PRE>
+
+<P>(The word <CODE>of</CODE> in an algebra word problem can have two
+different meanings.  Sometimes it means &quot;times,&quot; as in the phrase
+&quot;one half of the population.&quot; Other times, as in this problem, &quot;of&quot; is
+just part of a noun phrase like &quot;the price of a radio.&quot; The special word
+<CODE>numof</CODE> is a flag to a later part of the program and will then be
+further translated either into <CODE>times</CODE> or back into <CODE>of</CODE>.  The
+original implementation of Student used, instead of a special word like <CODE>
+numof</CODE>, a &quot;tagged&quot; word represented as a list like <CODE>[of / op]</CODE>.  Other
+examples of tagging are <CODE>[Bill / person]</CODE> and <CODE>[has / verb]</CODE>.)
+
+<P>
+
+<P>The next step is to separate the problem into simple sentences (<CODE>bracket</CODE>):
+
+<P><PRE>The simple sentences are
+
+The price numof a radio is 69.70 dollars .
+
+This price is 15 perless the marked price .
+
+Find the marked price .
+</PRE>
+
+<P>Usually this transformation of the problem is straightforward, but
+the special case of &quot;age problems&quot; is recognized at this time, and special
+transformations are applied so that a sentence like
+
+<P><PRE>Mary is 24 years old.
+</PRE>
+
+<P>is translated into
+
+<P><PRE>Mary s age is 24 .
+</PRE>
+
+<P>An age problem is one that contains any of the phrases <CODE>as old
+as</CODE>, <CODE>age</CODE>, or <CODE>years old</CODE>.
+
+<P>The next step is to translate each simple sentence into an equation or a
+variable whose value is desired as part of the solution (<CODE>senform</CODE>).
+
+<P><PRE>The equations to be solved are
+
+Equal [price of radio] [product 69.7 [dollars]]
+
+Equal [price of radio] [product 0.85 [marked price]]
+</PRE>
+
+<P>The third simple sentence is translated, not into an equation, but
+into a request to solve these equations for the variable <CODE>marked price</CODE>.
+
+<P>The translation of simple sentences into equations is the most
+&quot;intelligent&quot; part of the program; that is, it's where the program's
+knowledge of English grammar and vocabulary come into play and many special
+cases must be considered.  In this example, the second simple sentence
+starts with the phrase <CODE>this price</CODE>.  The program recognizes the word
+<CODE>this</CODE> (procedure <CODE>nmtest</CODE>) and replaces the entire phrase with the
+left hand side of the previous equation (procedure <CODE>this</CODE>).
+
+<P>
+
+
+<P><H2>Pattern Matching</H2>
+
+
+<P>Student analyzes a sentence by comparing it to several <EM>patterns</EM>
+(<CODE>senform1</CODE>).  For example, one sentence form that Student understands
+is exemplified by these sentences:
+
+<P><PRE>Joe weighs 163 pounds .
+The United States Army has 8742 officers .
+</PRE>
+
+<P>The general pattern is
+
+<P><PRE><EM>something</EM> <EM>verb</EM> <EM>number</EM> <EM>unit</EM> .
+</PRE>
+
+<P>Student treats such sentences as if they were rearranged to match
+
+<P><PRE>The number of <EM>unit</EM> <EM>something</EM> <EM>verb</EM> is <EM>number</EM> .
+</PRE>
+
+<P>and so it generates the equations
+
+<P><PRE>Equal [number of pounds Joe weighs] 163
+
+Equal [number of officers United States Army has] 8742
+</PRE>
+
+<P>The original version of Student was written in a pattern matching
+language called Meteor, which Bobrow wrote in Lisp.  In Meteor, the
+instruction that handles this sentence type looks like this:
+
+<P><PRE>(*   ( (1 / verb) (fn nmtest) 1  (1 / dlm)) 0
+     (/ (*s shelf (*k equal (fn opform (*k the number of 4 1 2))
+                            (fn opform (*k 3 5 6)))))            return)
+</PRE>
+
+<P>The top line contains the pattern to be matched.  In the pattern,
+a dollar sign represents zero or more words; the notation <CODE>1</CODE>
+represents a single word.  The zero at the end of the line means that the
+text that matches the pattern should be deleted and nothing should replace
+it.  The rest of the instruction pushes a new equation onto a stack named
+<CODE>shelf</CODE>; that equation is formed out of the pieces of the matched
+pattern according to the numbers in the instruction.  That is, the number
+<CODE>4</CODE> represents the fourth component of the pattern, which is <CODE>1</CODE>.
+
+
+	Here is the corresponding instruction in the Logo version:
+
+<P><PRE>if match [^one !verb1:verb !factor:numberp #stuff1 !:dlm] :sent
+   [output (list (list &quot;equal
+                       opform (sentence [the number of]
+                                        :stuff1 :one :verb1)
+                       opform (list :factor) ))]
+</PRE>
+
+<P>The pattern matcher I used for Student is the same as the one in
+<EM>Advanced Techniques,</EM> the second volume of this series.<SUP>*</SUP>  Student often relies on the fact that
+Meteor's pattern matcher finds the <EM>first substring</EM> of the text that
+matches the pattern, rather than requiring the entire text to match.  Many
+patterns in the Logo version therefore take the form
+
+<P><PRE>[^beg <EM>interesting part</EM> #end]
+</PRE>
+
+<P>where the &quot;interesting part&quot; is all that appeared in the Meteor
+pattern.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The
+version in this project is modified slightly; the <CODE>match</CODE> procedure
+first does a fast test to try to reject an irrelevant pattern in O(<EM>n</EM>)
+time before calling the actual pattern matcher, which could take as much
+as O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>) time to reject a pattern, and which has been renamed <CODE>rmatch</CODE>
+(for &quot;real match&quot;) in this project.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>Here is a very brief summary of the Logo pattern matcher included in this
+program.  For a fuller description with examples, please refer to Volume 2.
+<CODE>Match</CODE> is a predicate with two inputs, both lists.  The first input is
+the <EM>pattern</EM> and the second input is the <EM>sentence.</EM>  <CODE>Match</CODE>
+outputs <CODE>true</CODE> if the sentence <EM>matches</EM> the pattern.  A word in
+the pattern that does not begin with one of the special <EM>quantifier</EM>
+characters listed below matches the identical word in the sentence.  A word
+in the pattern that does begin with a quantifier matches zero or more words
+in the sentence, as follows:
+
+<P><TABLE>
+<TR><TD><CODE>#</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more
+<TR><TD><CODE>&amp;</CODE><TD>&nbsp;&nbsp;&nbsp;one or more
+<TR><TD><CODE>?</CODE><TD>&nbsp;&nbsp;&nbsp;zero or one
+<TR><TD><CODE>!</CODE><TD>&nbsp;&nbsp;&nbsp;exactly one
+<TR><TD><CODE>@</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more (test as group)
+<TR><TD><CODE>^</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more (as few as possible)
+</TABLE>
+
+<P>
+All quantifiers match as many consecutive words as possible while
+still allowing the remaining portion of the pattern to be matched, except
+for <CODE>^</CODE>.  A quantifier may be used alone, or it can be followed by a
+variable name, a predicate name, or both:
+
+<P><PRE>#
+#var
+#:pred
+#var:pred
+</PRE>
+
+If a variable name is used, the word or words that match the
+quantifier will be stored in that variable if the match is successful.  (The
+value of the variable if the match is not successful is not guaranteed.)  If
+a predicate is used, it must take one word as input; in order for a word in
+the sentence to be accepted as (part of) a match for the quantifier, the
+predicate must output <CODE>true</CODE> when given that word as input.  For
+example, the word
+
+<P><PRE>!factor:numberp
+</PRE>
+
+<P>in the pattern above requires exactly one matching word in the
+sentence; that word must be a number, and it is remembered in the variable
+<CODE>factor</CODE>.  If the quantifier is <CODE>@</CODE> then the predicate must take a
+<EM>list</EM> as input, and it must output <CODE>true</CODE> for all the candidate
+matching words taken together as a list.  For example, if you define a
+procedure
+
+<P><PRE>to threep :list
+output equalp count :list 3
+end
+</PRE>
+
+<P>then the pattern word
+
+<P><PRE>@:threep
+</PRE>
+
+<P>will match exactly three words in the sentence.  (Student does not
+use this last feature of the pattern matcher.  In fact, predicates are
+applied only to the single-word quantifiers <CODE>?</CODE> and <CODE>!</CODE>.)
+
+<P>Pattern matching is also heavily used in converting words and phrases with
+mathematical meaning into the corresponding arithmetic operations
+(<CODE>opform</CODE>).  An equation is a list of three members; the first member is the
+word <CODE>equal</CODE> and the other two are expressions formed by applying
+operations to variables and numbers.  Each operation that is required is
+represented as a list whose first member is the name of the Logo procedure
+that carries out the operation and whose remaining members are expressions
+representing the operands.  For example, the equation
+<P><CENTER><EM>y</EM> = 3<EM>x</EM><SUP><SMALL>2</SMALL></SUP>
++ 6<EM>x</EM> &minus; 1</CENTER><P>
+would be represented by the list
+
+<P><PRE>[equal [y] [sum [product 3 [square [x]]] [product 6 [x]] [minus 1]]]
+</PRE>
+
+<P>The variables are represented by lists like <CODE>[x]</CODE> rather than
+just the words because in Student a variable can be a multi-word phrase like
+<CODE>price of radio</CODE>.  The difference between two expressions is represented
+by a <CODE>sum</CODE> of one expression and <CODE>minus</CODE> the other, rather than as
+the <CODE>difference</CODE> of the expressions, because this representation turns
+out to make the process of simplifying and solving the equations easier.
+
+<P>In word problems, as in arithmetic expressions, there is a precedence of
+operations.  Operations like <CODE>squared</CODE> apply to the variables right next
+to them; ones like <CODE>times</CODE> are intermediate, and ones like <CODE>plus</CODE>
+apply to the largest possible subexpressions.  Student looks first for the
+lowest-priority ones like <CODE>plus</CODE>; if one is found, the entire rest of
+the clause before and after the operation word provide the operands.  Those
+operands are recursively processed by <CODE>opform</CODE>; when all the
+low-priority operations have been found, the next level of priority will be
+found by matching the pattern
+
+<P><PRE>[^left !op:op1 #right]
+</PRE>
+
+<P><H2>Solving the Equations</H2>
+
+<P>Student uses the substitution technique to solve the equations.  That is,
+one equation is rearranged so that the left hand side contains only a single
+variable and the right hand side does not contain that variable.  Then, in
+some other equation, every instance of that variable is replaced by the
+right hand side of the first equation.  The result is a new equation from
+which one variable has been eliminated.  Repeating this process enough times
+should eventually yield an equation with only a single variable, which can
+be solved to find the value of that variable.
+
+<P>When a problem gives rise to several linear equations in several variables,
+the traditional technique for computer solution is to use matrix inversion;
+this technique is messy for human beings because there is a lot of
+arithmetic involved, but straightforward for computers because the algorithm
+can be specified in a simple way that doesn't depend on the particular
+equations in each problem.  Bobrow chose to use the substitution method
+because some problems give rise to equations that are linear in the variable
+for which a solution is desired but nonlinear in other variables.  Consider
+this problem:
+
+<P><PRE>? <U>student :tom</U>
+
+The problem to be solved is
+
+If the number of customers Tom gets is twice the square of 20 per cent of
+the number of advertisements he runs, and the number of advertisements he
+runs is 45, what is the number of customers Tom gets?
+
+
+With mandatory substitutions the problem is
+
+If the number numof customers Tom gets is 2 times the square 20 percent
+numof the number numof advertisements he runs , and the number numof
+advertisements he runs is 45 , what is the number numof customers
+Tom gets ?
+
+
+The simple sentences are
+
+The number numof customers Tom gets is 2 times the square 20 percent
+numof the number numof advertisements he runs .
+
+The number numof advertisements he runs is 45 .
+
+What is the number numof customers Tom gets ?
+
+
+The equations to be solved are
+
+Equal [number of customers Tom gets]
+      [product 2 [square [product 0.2 [number of advertisements
+                                       he runs]]]]
+
+Equal [number of advertisements he runs] 45
+
+
+The number of customers Tom gets is 162
+
+The problem is solved.
+</PRE>
+
+<P>The first equation that Student generates for this problem is
+linear in the number of customers Tom gets, but nonlinear in the number of
+advertisements he runs.  (That is, the equation refers to the <EM>square</EM>
+of the latter variable.  An equation is <EM>linear</EM> in a given variable
+if that variable isn't multiplied by anything other than a constant number.)
+Using the substitution method, Student can solve the problem by substituting
+the value 45, found in the second equation, for the number of advertisements
+variable in the first equation.
+
+<P>(Notice, in passing, that one of the special <CODE>numof</CODE> words in this
+problem was translated into a multiplication rather than back into the
+original word <CODE>of</CODE>.)
+
+<P>The actual sequence of steps required to solve a set of equations is quite
+intricate.  I recommend taking that part of Student on faith the first time
+you read the program, concentrating instead on the pattern matching
+techniques used to translate the English sentences into equations.  But here
+is a rough guide to the solution process.  Both <CODE>student1</CODE> and <CODE>
+student2</CODE> call <CODE>trysolve</CODE> with four inputs: a list of the equations to
+solve, a list of the variables for which values are wanted, and two lists of
+<EM>units.</EM>  A unit is a word or phrase like <CODE>dollars</CODE> or <CODE>feet</CODE>
+that may be part of a solution.  Student treats units like variables while
+constructing the equations, so the combination of a number and a unit is
+represented as a product, like
+
+<P><PRE>[product 69.7 [dollars]]
+</PRE>
+
+<P>for 69.70 in the first sample problem.  While constructing the
+equations, Student generates two lists of units.  The first, stored in the
+variable <CODE>units</CODE>, contains any word or phrase that appears along with a
+number in the problem statement, like the word <CODE>feet</CODE> in the phrase <CODE>
+3 feet</CODE> (<CODE>nmtest</CODE>).  The second, in the variable <CODE>aunits</CODE>, contains
+units mentioned explicitly in the <CODE>find</CODE> or <CODE>how many</CODE> sentences
+that tell Student what variables should be part of the solution
+(<CODE>senform1</CODE>).  If the problem includes a sentence like
+
+<P><PRE>How many inches is a yard?
+</PRE>
+
+<P>then the variable <CODE>[inches]</CODE>, and <EM>only</EM> that variable,
+is allowed to be part of the answer.  If there are no <CODE>aunits</CODE>-type
+variables in the problem, then any of the <CODE>units</CODE> variables may appear
+in the solution (<CODE>trysolve</CODE>).
+
+<P><CODE>Trysolve</CODE> first calls <CODE>solve</CODE> to solve the equations and then uses
+<CODE>pranswers</CODE> to print the results.  <CODE>Solve</CODE> calls <CODE>solver</CODE> to do
+most of the work and then passes its output through <CODE>solve.reduce</CODE> for
+some final cleaning up.  <CODE>Solver</CODE> works by picking one of the
+variables from the list <CODE>:wanted</CODE> and asking <CODE>solve1</CODE> to find a
+solution for that variable in terms of <EM>all</EM> the other variables--the
+other wanted variables as well as the units allowed in the ultimate answer.
+If <CODE>solve1</CODE> succeeds, then <CODE>solver</CODE> invokes itself,
+adding the newly-found expression for one variable to an <EM>
+association list</EM> (in the variable <CODE>alis</CODE>) so that, from then
+on, any occurrence of that variable will be replaced with the equivalent
+expression.  In effect, the problem is simplified by eliminating one
+variable and eliminating one equation, the one that was solved to find the
+equivalent expression.
+
+<P><CODE>Solve1</CODE> first looks for an equation containing the variable for which
+it is trying to find a solution.  When it finds such an equation, the next
+task is to eliminate from that equation any variables that aren't part of
+the wanted-plus-units list that <CODE>solver</CODE> gave <CODE>solve1</CODE> as an input.
+To eliminate these extra variables, <CODE>solve1</CODE> invokes <CODE>solver</CODE> with
+the extras as the list of wanted variables.  This mutual recursion between
+<CODE>solver</CODE> and <CODE>solve1</CODE> makes the structure of the solution process
+difficult to follow.  If <CODE>solver</CODE> manages to eliminate the extra
+variables by expressing them in terms of the originally wanted ones, then
+<CODE>solve1</CODE> can go on to substitute those expressions into its originally
+chosen equation and then use <CODE>solveq</CODE> to solve that one equation for the
+one selected variable in terms of all the other allowed variables.  <CODE>
+Solveq</CODE> manipulates the equation more or less the way students in algebra
+classes do, adding the same term to both sides, multiplying both sides by
+the denominator of a polynomial fraction, and so on.
+
+<P>Here is how <CODE>solve</CODE> solves the radio problem.  The equations, again, are
+
+<P><PRE>Equal [price of radio] [product 69.7 [dollars]]
+
+Equal [price of radio] [product 0.85 [marked price]]
+</PRE>
+
+<P><CODE>Trysolve</CODE> evaluates the expression
+
+<P><PRE>(1) solve [[marked price]]
+          [[equal [price of radio] [product 69.7 [dollars]]]
+           [equal [price of radio] [product 0.85 [marked price]]] ]
+          [[dollars]]
+</PRE>
+
+<P>(I'm numbering these expressions so that I can refer to them later
+in the text.)  The first input to <CODE>solve</CODE> is the list of variables
+wanted in the solution; in this case there is only one such variable.  The
+second input is the list of two equations.  The third is the list of unit
+variables that are allowed to appear in the solution; in this case only <CODE>
+[dollars]</CODE> is allowed.  <CODE>Solve</CODE> evaluates
+
+<P><PRE>(2) solver [[marked price]] [[dollars]] [] []
+</PRE>
+
+<P>(There is a fifth input, the word <CODE>insufficient</CODE>, but this is
+used only as an error flag if the problem can't be solved.  To simplify this
+discussion I'm going to ignore that input for both <CODE>solver</CODE> and <CODE>
+solve1</CODE>.)  <CODE>Solver</CODE> picks the first (in this case, the only) wanted
+variable as the major input to <CODE>solve1</CODE>:
+
+<P><PRE>(3) solve1 [marked price]
+           [[dollars]]
+           []
+           [[equal [price of radio] [product 69.7 [dollars]]]
+            [equal [price of radio] [product 0.85 [marked price]]] ]
+           []
+</PRE>
+
+<P>Notice that the first input to <CODE>solve1</CODE> is a single variable,
+not a list of variables.  <CODE>Solve1</CODE> examines the first equation in the
+list of equations making up its fourth input.  The desired variable does not
+appear in this equation, so <CODE>solve1</CODE> rejects that equation and invokes
+itself recursively:
+
+<P><PRE>(4) solve1 [marked price]
+           [[dollars]]
+           []
+           [[equal [price of radio] [product 0.85 [marked price]]]]
+           [[equal [price of radio] [product 69.7 [dollars]]]]
+</PRE>
+
+<P>This time, the first (and now only) equation on the list of
+candidates does contain the desired variable.  <CODE>Solve1</CODE> removes that
+equation, not from its own list of equations (<CODE>:eqns</CODE>), but from <CODE>
+solve</CODE>'s overall list (<CODE>:eqt</CODE>).  The equation, unfortunately, can't be
+solved directly to express <CODE>[marked price]</CODE> in terms of <CODE>[dollars]</CODE>,
+because it contains the extra, unwanted variable <CODE>[price of radio]</CODE>.
+We must eliminate this variable by solving the remaining equations for it:
+
+<P><PRE>(5) solver [[price of radio]] [[marked price] [dollars]] [] []
+</PRE>
+
+<P>As before, <CODE>solver</CODE> picks the first (again, in this case, the
+only) wanted variable and asks <CODE>solve1</CODE> to solve it:
+
+<P><PRE>(6) solve1 [price of radio]
+           [[marked price] [dollars]]
+           []
+           [[equal [price of radio] [product 69.7 [dollars]]]]
+           []
+</PRE>
+
+<P><CODE>Solve1</CODE> does find the desired variable in the first (and
+only) equation, and this time there are no extra variables.  <CODE>Solve1</CODE>
+can therefore ask <CODE>solveq</CODE> to solve the equation:
+
+<P><PRE>(7) solveq [price of radio]
+           [equal [price of radio] [product 69.7 [dollars]]]
+</PRE>
+
+<P>It isn't part of <CODE>solveq</CODE>'s job to worry about which variables
+may or may not be part of the solution; <CODE>solve1</CODE> doesn't call <CODE>
+solveq</CODE> until it's satisfied that the equation is okay.
+
+<P>In this case, <CODE>solveq</CODE> has little work to do because the equation is
+already in the desired form, with the chosen variable alone on the left side
+and an expression not containing that variable on the right.
+
+<P><PRE>solveq (7) <EM>outputs</EM> [[price of radio] [product 69.7 [dollars]]
+           <EM>to</EM> solve1 (6)
+</PRE>
+
+<P><CODE>Solve1</CODE> appends this result to the previously empty
+association list.
+
+<P><PRE>solve1 (6) <EM>outputs</EM> [[[price of radio] [product 69.7 [dollars]]]
+           <EM>to</EM> solver (5)
+</PRE>
+
+<P><CODE>Solver</CODE> only had one variable in its <CODE>:wanted</CODE> list, so
+its job is also finished.
+
+<P><PRE>solver (5) <EM>outputs</EM> [[[price of radio] [product 69.7 [dollars]]]
+           <EM>to</EM> solve1 (4,3)
+</PRE>
+
+<P>This outer invocation of <CODE>solve1</CODE> was trying to solve for
+<CODE>[marked price]</CODE> an equation that also involved <CODE>[price of radio]</CODE>.
+It is now able to use the new association list to substitute for this
+unwanted variable an expression in terms of wanted variables only; this
+modified equation is then passed on to <CODE>solveq</CODE>:
+
+<P><PRE>(8) solveq [marked price]
+           [equal [product 69.7 [dollars]] [product 0.85 [marked price]]]
+</PRE>
+
+<P>This time <CODE>solveq</CODE> has to work a little harder, exchanging the
+two sides of the equation and dividing by 0.85.
+
+<P><PRE>solveq (8) <EM>outputs</EM> [[marked price] [product 82 [dollars]]]
+           <EM>to</EM> solve1 (4,3)
+</PRE>
+
+<P><CODE>Solve1</CODE> appends this result to the association list:
+
+<P><PRE>solve1 (4,3) <EM>outputs</EM> [[[price of radio] [product 69.7 [dollars]]]
+                      [[marked price] [product 82 [dollars]]] ]
+             <EM>to</EM> solver (2)
+</PRE>
+
+<P>Since <CODE>solver</CODE> has no other wanted variables, it outputs the
+same list to <CODE>solve</CODE>, and <CODE>solve</CODE> outputs the same list to <CODE>
+trysolve</CODE>.  (In this example, <CODE>solve.reduce</CODE> has no effect because all
+of the expressions in the association list are in terms of allowed units
+only.  If the equations had been different, the expression for <CODE>[price
+of radio]</CODE> might have included <CODE>[marked price]</CODE> and then <CODE>
+solve.reduce</CODE> would have had to substitute and simplify (<CODE>subord</CODE>).)
+
+<P>It'll probably take tracing a few more examples and beating your head
+against the wall a bit before you really understand the structure of <CODE>
+solve</CODE> and its subprocedures.  Again, don't get distracted by this part of
+the program until you've come to understand the language processing part,
+which is our main interest in this chapter.
+
+<P><H2>Age Problems</H2>
+
+<P>The main reason why Student treats age problems specially is that the
+English form of such problems is often expressed as if the variables were
+people, like &quot;Bill,&quot; whereas the real variable is &quot;Bill's age.&quot; The
+pattern matching transformations look for proper names (<CODE>personp</CODE>) and
+insert the words <CODE>s age</CODE> after them (<CODE>ageify</CODE>).  The first such age
+variable in the problem is remembered specially so that it can be
+substituted for pronouns (<CODE>agepron</CODE>).  A special case is the phrase <CODE>
+their ages</CODE>, which is replaced (<CODE>ageprob</CODE>) with a list of all the age
+variables in the problem.
+
+<P><PRE>? <U>student :uncle</U>
+
+The problem to be solved is
+
+Bill's father's uncle is twice as old as Bill's father. 2 years from now
+Bill's father will be 3 times as old as Bill. The sum of their ages is
+92 . Find Bill's age.
+
+
+With mandatory substitutions the problem is
+
+Bill s father s uncle is 2 times as old as Bill s father . 2 years
+from now Bill s father will be 3 times as old as Bill . sum their
+ages is 92 . Find Bill s age .
+
+
+The simple sentences are
+
+Bill s father s uncle s age is 2 times Bill s father s age .
+
+Bill s father s age pluss 2 is 3 times Bill s age pluss 2 .
+
+Sum Bill s age and Bill s father s age and Bill s father s uncle s age
+is 92 .
+
+Find Bill s age .
+
+
+The equations to be solved are
+
+Equal [Bill s father s uncle s age] [product 2 [Bill s father s age]]
+
+Equal [sum [Bill s father s age] 2] [product 3 [sum [Bill s age] 2]]
+
+Equal [sum [Bill s age]
+           [sum [Bill s father s age] [Bill s father s uncle s age]]] 92
+
+
+Bill s age is 8
+
+The problem is solved.
+</PRE>
+
+<P>(Note that in the original problem statement there is a space
+between the number <CODE>92</CODE> and the following period.  I had to enter the
+problem in that form because of an inflexibility in Logo's input parser,
+which assumes that a period right after a number is part of the number, so
+that &quot;<CODE>92.</CODE>&quot; is reformatted into <CODE>92</CODE> without the dot.)
+
+<P>Student represents the possessive word <CODE>Bill's</CODE> as the two words
+<CODE>Bill s</CODE> because this representation allows the pattern matcher to
+manipulate the possessive marker as a separate element to be matched.
+A phrase like <CODE>as old as</CODE> is just deleted (<CODE>ageprob</CODE>) because the
+transformation from people to ages makes it redundant.
+
+<P>The phrase <CODE>2 years from now</CODE> in the original problem is first
+translated to <CODE>in 2 years</CODE>.  This phrase is further processed according
+to where it appears in a sentence.  When it is attached to a particular
+variable, in a phrase like <CODE>Bill s age in 2 years</CODE>, the entire phrase is
+translated into the arithmetic operation <CODE>Bill s age pluss 2 years</CODE>
+(<CODE>agewhen</CODE>).  (The special word <CODE>pluss</CODE> is an addition operator,
+just like <CODE>plus</CODE>, except for its precedence; <CODE>opform</CODE> treats it as a
+tightly binding operation like <CODE>squared</CODE> instead of a loosely binding
+one like the ordinary <CODE>plus</CODE>.)  When a phrase like <CODE>in 2 years</CODE>
+appears at the beginning of a sentence, it is remembered (<CODE>agesen</CODE>) as
+an implicit modifier for <EM>every</EM> age variable in that sentence that
+isn't explicitly modified.  In this example, <CODE>in 2 years</CODE> modifies both
+<CODE>Bill s father s age</CODE> and <CODE>Bill s age</CODE>.  The special precedence of
+<CODE>pluss</CODE> is needed in this example so that the equation will be based on
+the grouping
+
+<P><PRE>3 times [ Bill s age pluss 2 ]
+</PRE>
+
+<P>rather than
+
+<P><PRE>[ 3 times Bill s age ] plus 2
+</PRE>
+
+<P>as it would be with the ordinary <CODE>plus</CODE> operator.  You can
+also see how the substitution for <CODE>their ages</CODE> works in this example.
+
+<P>Here is a second sample age problem that illustrates a different kind of
+special handling:
+
+<P><PRE>? <U>student :ann</U>
+
+The problem to be solved is
+
+Mary is twice as old as Ann was when Mary was as old as Ann is now. If
+Mary is 24 years old, how old is Ann?
+
+
+With mandatory substitutions the problem is
+
+Mary is 2 times as old as Ann was when Mary was as old as Ann is now . If
+Mary is 24 years old , what is Ann ?
+
+
+The simple sentences are
+
+Mary s age is 2 times Ann s age minuss g1 .
+
+Mary s age minuss g1 is Ann s age .
+
+Mary s age is 24 .
+
+What is Ann s age ?
+
+
+The equations to be solved are
+
+Equal [Mary s age] [product 2 [sum [Ann s age] [minus [g1]]]]
+
+Equal [sum [Mary s age] [minus [g1]]] [Ann s age]
+
+Equal [Mary s age] 24
+
+
+Ann s age is 18
+
+The problem is solved.
+</PRE>
+
+<P>What is new in this example is Student's handling of the phrase <CODE>was
+when</CODE> in the sentence
+
+<P><PRE>Mary is 2 times as old as Ann was when Mary was as old as Ann is now .
+</PRE>
+
+<P>Sentences like this one often cause trouble for human algebra students
+because they make <EM>implicit</EM> reference to a quantity that is not
+explicitly present as a variable.  The sentence says that Mary's age <EM>
+now</EM> is twice Ann's age <EM>some number</EM> of years ago, but that number
+is not explicit in the problem.  Student makes this variable explicit by
+using a <EM>generated symbol</EM> like the word <CODE>g1</CODE> in this illustration.
+Student replaces the phrase <CODE>was when</CODE> with the words
+
+<P><PRE>was g1 years ago . g1 years ago
+</PRE>
+
+<P>This substitution (in <CODE>ageprob</CODE>) happens <EM>before</EM> the
+division of the problem statement into simple sentences (<CODE>bracket</CODE>).  As
+a result, this one sentence in the original problem becomes the two sentences
+
+<P><PRE>Mary s age is 2 times Ann s age g1 years ago .
+
+G1 years ago Mary s age was Ann s age now .
+</PRE>
+
+<P>The phrase <CODE>g1 years ago</CODE> in each of these sentences is
+further processed by <CODE>agesen</CODE> and <CODE>agewhen</CODE> as discussed earlier;
+the final result is
+
+<P><PRE>Mary s age is 2 times Ann s age minuss g1 .
+
+Mary s age minuss g1 is Ann s age .
+</PRE>
+
+<P>A new generated symbol is created each time this situation arises,
+so there is no conflict from trying to use the same variable name for two
+different purposes.  The phrase <CODE>will be when</CODE> is handled similarly,
+except that the translated version is
+
+<P><PRE>in g2 years . in g2 years
+</PRE>
+
+<P><H2>AI and Education</H2>
+
+<BLOCKQUOTE>
+<P><A NAME="bobrow2">These decoupling heuristics</A> are useful
+not only for the Student program but
+for people trying to solve age problems.  The classic age problem about Mary
+and Ann, given above, took an MIT graduate student over 5 minutes to solve
+because he did not know this heuristic.  With the heuristic he was able to
+set up the appropriate equations much more rapidly.  As a crude measure of
+Student's relative speed, note that Student took less than one minute to
+solve this problem.
+</BLOCKQUOTE>
+
+<P>This excerpt from Bobrow's thesis illustrates the idea that
+insights from artificial intelligence research can make a valuable
+contribution to the education of human beings.  An intellectual problem is
+solved, at least in many cases, by dividing it into pieces and developing a
+technique for each subproblem.  The subproblems are the same whether it is a
+computer or a person trying to solve the problem.  If a certain technique
+proves valuable for the computer, it may be helpful for a human problem
+solver to be aware of the computer's methods.  Bobrow's suggestion to teach
+people one specific heuristic for algebra word problems is a relatively
+modest example of this general theme.  (A <EM>heuristic</EM> is a rule that
+gives the right answer most of the time, as opposed to an <EM>
+algorithm,</EM> a
+rule that always works.)  Some researchers in cognitive science and
+education have proposed the idea of <EM>intelligent CAI</EM>
+(computer assisted instruction), in which a computer would be programmed as a
+&quot;tutor&quot; that would observe the efforts of a student in solving a problem.
+The tutor would know about some of the mistaken ideas people can have about
+a particular class of problem and would notice a student falling into one
+of those traps.  It could then offer advice tailored to the needs of that
+individual student.
+
+<P>The development of the Logo programming language (and so also, indirectly,
+this series of books) is another example of the relationship between AI and
+education.  Part of the idea behind Logo is that the process of programming
+a computer resembles, in some ways, the process of teaching a person to do
+something.  (This can include teaching oneself.)  For example, when a
+computer program doesn't work, the experienced programmer doesn't give up in
+despair, but instead <EM>debugs</EM> the program.  Yet many students are
+willing to give up and say &quot;I just don't get it&quot; if their understanding of
+some problem isn't perfect on the first try.
+
+<BLOCKQUOTE>
+<P><A NAME="papert">The critic</A> is afraid
+that children will adopt the computer as model and
+eventually come to &quot;think mechanically&quot; themselves.  Following the
+opposite tack, I have invented ways to take educational advantage of the
+opportunities to master the art of <EM>deliberately</EM> thinking like a
+computer, according, for example, to the stereotype of a computer program
+that proceeds in a step-by-step, literal, mechanical fashion.  There are
+situations where this style of thinking is appropriate and useful.  Some
+children's difficulties in learning formal subjects such as grammar or
+mathematics derive from their inability to see the point of such a style.
+
+<P>
+A second educational advantage is indirect but ultimately more important.
+By deliberately learning to imitate mechanical thinking, the learner becomes
+able to articulate what mechanical thinking is and what it is not.  The
+exercise can lead to greater confidence about the ability to choose a
+cognitive style that suits the problem.  Analysis of &quot;mechanical thinking&quot;
+and how it is different from other kinds and practice with problem analysis
+can result in a new degree of intellectual sophistication.  By providing a
+very concrete, down-to-earth model of a particular style of thinking, work
+with the computer can make it easier to understand that there is such a
+thing as a &quot;style of thinking.&quot; And giving children the opportunity to
+choose one style or another provides an opportunity to develop the skill
+necessary to choose between styles.  Thus instead of inducing mechanical
+thinking, contact with computers could turn out to be the best conceivable
+antidote to it.  And for me what is most important in this is that through
+these experiences these children would be serving their apprenticeships as
+epistemologists, that is to say learning to think articulately about
+thinking.  [Seymour Papert, <EM>Mindstorms</EM>, Basic Books, 1980, p. 27.]
+</BLOCKQUOTE>
+
+<P><H2>Combining Sentences Into One Equation</H2>
+
+<P>In age problems, as we've just seen, a single sentence may give rise to two
+equations.  Here is an example of the opposite, several sentences that
+together contribute a single equation.
+
+<P><PRE>? <U>student :nums</U>
+
+The problem to be solved is
+
+A number is multiplied by 6 . This product is increased by 44 . This
+result is 68 . Find the number.
+
+
+With mandatory substitutions the problem is
+
+A number ismulby 6 . This product is increased by 44 . This result is
+68 . Find the number .
+
+
+The simple sentences are
+
+A number ismulby 6 .
+
+This product is increased by 44 .
+
+This result is 68 .
+
+Find the number .
+
+
+The equations to be solved are
+
+Equal [sum [product [number] 6] 44] 68
+
+
+The number is 4
+
+The problem is solved.
+</PRE>
+
+<P>Student recognizes problems like this by recognizing the phrases &quot;is
+multiplied by,&quot; &quot;is divided by,&quot; and &quot;is increased by&quot; (<CODE>senform1</CODE>).
+A sentence containing one of these phrases is not translated into an
+equation; instead, a <EM>partial</EM> equation is saved until the next
+sentence is read.  That next sentence is expected to start with a phrase
+like &quot;this result&quot; or &quot;this product.&quot; The same procedure (<CODE>this</CODE>)
+that in other situations uses the left hand side of the last equation as the
+expression for the <CODE>this</CODE>-phrase notices that there is a remembered
+partial equation and uses that instead.  In this example, the sentence
+
+<P><PRE>A number ismulby 6 .
+</PRE>
+
+<P>remembers the algebraic expression
+
+<P><PRE>[product [number] 6]
+</PRE>
+
+<P>The second sentence uses that remembered expression as part of a
+new, larger expression to be remembered:
+
+<P><PRE>[sum [product [number] 6] 44]
+</PRE>
+
+<P>The third sentence does not contain one of the special &quot;is
+increased by&quot; phrases, but is instead a standard &quot;A is B&quot; sentence.
+That sentence, therefore, does give rise to an equation, as shown above.
+
+<P>Perhaps the most interesting thing to notice about this category of word
+problem is how narrowly defined Student's criterion for recognizing the
+category is.  Student gets away with it because algebra word problems are
+highly <EM>stereotyped;</EM> there are just a few categories, with
+traditional, standard wordings.  In principle there could be a word problem
+starting
+
+<P><PRE>Robert has a certain number of jelly beans.  This number is twice the
+number of jelly beans Linda has.
+</PRE>
+
+<P>These two sentences are together equivalent to
+
+<P><PRE>The number of jelly beans Robert has is twice the number of jelly beans
+Linda has.
+</PRE>
+
+<P>But Student would not recognize the situation because the first
+sentence doesn't talk about &quot;is increased by.&quot; We could teach Student to
+understand a word problem in this form by adding the instruction
+
+<P><PRE>if match [^one !verb1:verb a certain number of #stuff1 !:dlm] :sent
+    [push &quot;ref opform (se [the number of] :stuff1 :one :verb1)
+     op []]
+</PRE>
+
+<P>along with the other known sentence forms in <CODE>senform1</CODE>.
+(Compare this to the pattern matching instruction shown earlier for a
+similar sentence but with an explicitly specified number.)
+
+<P>Taking advantage of the stereotyped nature of word problems is an example of
+how the microworld strategy helped make the early AI programs possible.  If
+word problems were expressed with all the flexibility of language in general,
+Student would need many more sentence patterns than it actually has.  (How
+many different ways can you think of to express the same idea about Robert
+and Linda?  How many of those ways can Student handle?)
+
+<P><H2>Allowing Flexible Phrasing</H2>
+
+<P>In the examples we've seen so far, Student has relied on the repetition of
+identical or near-identical phrases such as &quot;the marked price&quot; or &quot;the
+number of advertisements he runs.&quot; (The requirement is not quite strictly
+identical phrases because articles are removed from the noun phrases to make
+variable names.)  In real writing, though, such phrases are often
+abbreviated when they appear for a second time.  Student will translate such
+a problem into a system of equations that can't be solved, because what
+should be one variable is instead a different variable in each equation.
+But Student can recognize this situation and apply heuristic rules to guess
+that two similar variable names are meant, in fact, to represent the same
+variable.  (Some early writers on AI considered the use of heuristic methods
+one of the defining characteristics of the field.  Computer scientists
+outside of AI were more likely to insist on fully reliable algorithms.  This
+distinction still has some truth to it, but it isn't emphasized so much as a
+critical issue these days.)  Student doesn't try to equate different
+variables until it has first tried to solve the equations as they are
+originally generated.  If the first attempt at solution fails, Student has
+recourse to less certain techniques (<CODE>student2</CODE> calls <CODE>vartest</CODE>).
+
+<P><PRE>? <U>student :sally</U>
+
+The problem to be solved is
+
+The sum of Sally's share of some money and Frank's share is 4.50.
+Sally's share is twice Frank's. Find Frank's and Sally's share.
+
+
+With mandatory substitutions the problem is
+
+sum Sally s share numof some money and Frank s share is 4.50 dollars .
+Sally s share is 2 times Frank s . Find Frank s and Sally s share .
+
+
+The simple sentences are
+
+Sum Sally s share numof some money and Frank s share is 4.50 dollars .
+
+Sally s share is 2 times Frank s .
+
+Find Frank s and Sally s share .
+
+
+The equations to be solved are
+
+Equal [sum [Sally s share of some money] [Frank s share]]
+      [product 4.50 [dollars]]
+
+Equal [Sally s share] [product 2 [Frank s]]
+
+
+The equations were insufficient to find a solution.
+
+Assuming that
+[Frank s] is equal to [Frank s share]
+
+Assuming that
+[Sally s share] is equal to [Sally s share of some money]
+
+Frank s is 1.5 dollars
+
+Sally s share is 3 dollars
+
+The problem is solved.
+</PRE>
+
+<P>In this problem Student has found two pairs of similar variable names.
+When it finds such a pair, Student adds an equation of the form
+
+<P><PRE>[equal <EM>variable1</EM> <EM>variable2</EM>]
+</PRE>
+
+<P>to the previous set of equations.  In both of the pairs in this
+example, the variable that appears later in the problem statement is
+entirely contained within the one that appears earlier.
+
+<P>Another point of interest in this example is that the variable <CODE>[dollars]</CODE>
+is included in the list of units that may be part of the answer.  The word
+problem does not explicitly ask &quot;How many dollars is Sally's share,&quot; but
+because one of the sentences sets an expression equal to &quot;4.50 dollars&quot;
+Student takes that as implicit permission to express the answer in dollars.
+
+<P>The only other condition under which Student will consider two variables
+equal is if their names are identical except that some phrase in the one
+that appears earlier is replaced with a pronoun in the one that appears
+later.  That is, a variable like <CODE>[the number of ice cream cones the
+children eat]</CODE> will be considered equal to a later variable <CODE>[the number
+of ice cream cones they eat]</CODE>.  Here is a problem in which this rule is
+applied:
+
+<P><PRE>? <U>student :guns</U>
+
+The problem to be solved is
+
+The number of soldiers the Russians have is one half of the number of
+guns they have. They have 7000 guns. How many soldiers do they have?
+
+
+With mandatory substitutions the problem is
+
+The number numof soldiers the Russians have is 0.5 numof the number numof
+guns they have . They have 7000 guns . howm soldiers do they have ?
+
+
+The simple sentences are
+
+The number numof soldiers the Russians have is 0.5 numof the number numof
+guns they have .
+
+They have 7000 guns .
+
+Howm soldiers do they have ?
+
+
+The equations to be solved are
+
+Equal [number of soldiers Russians have]
+      [product 0.5 [number of guns they have]]
+
+Equal [number of guns they have] 7000
+
+
+The equations were insufficient to find a solution.
+
+Assuming that
+[number of soldiers they have] is equal to
+  [number of soldiers Russians have]
+
+The number of soldiers they have is 3500
+
+The problem is solved.
+</PRE>
+
+<P><H2>Using Background Knowledge</H2>
+
+<P>In some word problems, not all of the necessary information is contained
+within the problem statement itself.  The problem requires the student to
+supply some piece of general knowledge about the world in order to determine
+the appropriate equations.  This knowledge may be about unit conversions
+(one foot is 12 inches) or about relationships among physical quantities
+(distance equals speed times time).  Student &quot;knows&quot; some of this <EM>
+background</EM> information and can apply it (<CODE>geteqns</CODE>) if the equations
+determined by the problem statement are insufficient.
+
+<P><PRE>? <U>student :jet</U>
+
+The problem to be solved is
+
+The distance from New York to Los Angeles is 3000 miles. If the average
+speed of a jet plane is 600 miles per hour, find the time it takes to
+travel from New York to Los Angeles by jet.
+
+
+With mandatory substitutions the problem is
+
+The distance from New York to Los Angeles is 3000 miles . If the average
+speed numof a jet plane is 600 miles per hour , find the time it takes to
+travel from New York to Los Angeles by jet .
+
+
+The simple sentences are
+
+The distance from New York to Los Angeles is 3000 miles .
+
+The average speed numof a jet plane is 600 miles per hour .
+
+Find the time it takes to travel from New York to Los Angeles by jet .
+
+
+The equations to be solved are
+
+Equal [distance from New York to Los Angeles] [product 3000 [miles]]
+
+Equal [average speed of jet plane]
+      [quotient [product 600 [miles]] [product 1 [hours]]]
+
+
+The equations were insufficient to find a solution.
+
+Using the following known relationships
+
+Equal [distance] [product [speed] [time]]
+
+Equal [distance] [product [gas consumption]
+                          [number of gallons of gas used]]
+
+
+Assuming that
+[speed] is equal to [average speed of jet plane]
+
+Assuming that
+[time] is equal to [time it takes to travel
+                    from New York to Los Angeles by jet]
+
+Assuming that
+[distance] is equal to [distance from New York to Los Angeles]
+
+The time it takes to travel from New York
+  to Los Angeles by jet is 5 hours
+
+The problem is solved.
+</PRE>
+
+<P>Student's library of known relationships is indexed according to the first
+word of the name of each variable involved in the relationship.  (If a
+variable starts with the words <CODE>number of</CODE> it is indexed under the
+following word.)  The relationships, in the form of equations, are stored in
+the property lists of these index words.
+
+<P>Property lists are also used to keep track of irregular plurals and the
+corresponding singulars.  Student tries to keep all units in plural form
+internally, so that if a problem refers to both <CODE>1 foot</CODE> and <CODE>
+2 feet</CODE> the same variable name will be used for both.  (That is, the first
+of these will be translated into
+
+<P><PRE>[product 1 [feet]]
+</PRE>
+
+<P>in Student's internal representation.  Then the opposite
+translation is needed if the product of <CODE>1</CODE> and some unit appears in an
+answer to be printed.
+
+<P>The original Student also used property lists to remember the parts of
+speech of words and the precedence of operators, but because of differences
+in the syntax of the Meteor pattern matcher and my Logo pattern matcher I've
+found it easier to use predicate operations for that purpose.
+
+<P>The original Student system included a separately invoked <CODE>remember</CODE>
+procedure that allowed all these kinds of global information to be entered
+in the form of English sentences.  You'd say
+
+<P><PRE>Feet is the plural of foot
+</PRE>
+
+<P>or
+
+<P><PRE>Distance equals speed times time
+</PRE>
+
+<P>and <CODE>remember</CODE> would use patterns much like those used in
+understanding word problems to translate these sentences into <CODE>pprop</CODE>
+instructions.  Since Lisp programs, like Logo programs, can themselves be
+manipulated as lists, <CODE>remember</CODE> could even accept information of a
+kind that's stored in
+the Student program itself, such as the wording transformations in <CODE>
+idioms</CODE>, and modify the program to reflect this information.  I haven't
+bothered to implement that part of the Student system because it takes up
+extra memory and doesn't exhibit any new techniques.
+
+<P>As the above example shows, it's important that Student's search for
+relevant known relationships comes before the attempt to equate variables
+with similar names.  The general relationship that uses a variable named
+simply <CODE>[distance]</CODE> doesn't help unless Student can identify it as
+relevant to the variable named <CODE>[distance from New York to Los Angeles]</CODE>
+in the specific problem under consideration.
+
+<P>Here is another example in which known relationships are used:
+
+<P><PRE>? <U>student :span</U>
+
+The problem to be solved is
+
+If 1 span is 9 inches, and 1 fathom is 6 feet,
+  how many spans is 1 fathom?
+
+
+With mandatory substitutions the problem is
+
+If 1 span is 9 inches , and 1 fathom is 6 feet , howm spans is 1 fathom ?
+
+
+The simple sentences are
+
+1 span is 9 inches .
+
+1 fathom is 6 feet .
+
+Howm spans is 1 fathom ?
+
+
+The equations to be solved are
+
+Equal [product 1 [spans]] [product 9 [inches]]
+
+Equal [product 1 [fathoms]] [product 6 [feet]]
+
+Equal g2 [product 1 [fathoms]]
+
+
+The equations were insufficient to find a solution.
+
+Using the following known relationships
+
+Equal [product 1 [yards]] [product 3 [feet]]
+
+Equal [product 1 [feet]] [product 12 [inches]]
+
+
+1 fathom is 8 spans
+
+The problem is solved.
+</PRE>
+
+<P>Besides the use of known relationships, this example illustrates two other
+features of Student.  One is the use of an explicitly requested unit in the
+answer.  Since the problem asks
+
+<P><PRE>How many spans is 1 fathom?
+</PRE>
+
+<P>Student knows that the answer must be expressed in <CODE>spans</CODE>.
+Had there been no explicit request for a particular unit, all the units that
+appear in phrases along with a number would be eligible to appear in the
+answer: <CODE>inches</CODE>, <CODE>feet</CODE>, and <CODE>fathoms</CODE>.  Student might then
+blithely inform us that
+
+<P><PRE>1 fathom is 1 fathom
+
+The problem is solved.
+</PRE>
+
+<P>The other new feature demonstrated by this example is the use of a generated
+symbol to represent the desired answer.  In the statement of this problem,
+there is no explicit variable representing the unknown.  <CODE>[Fathoms]</CODE> is
+a <EM>unit,</EM> not a variable for which a value could be found.  The problem
+asks for the value of the expression
+
+<P><PRE>[product 1 [fathoms]]
+</PRE>
+
+<P>in terms of spans.  Student generates a variable name (<CODE>g2</CODE>)
+to represent the unknown and produces an equation
+
+<P><PRE>[equal g2 [product 1 [fathoms]]
+</PRE>
+
+<P>to add to the list of equations.  A generated symbol will be
+needed whenever the &quot;Find&quot; or &quot;What is&quot; sentence asks for an expression
+rather than a simple variable name.  For example, an age problem that asks
+&quot;What is the sum of their ages&quot; would require the use of a generated
+symbol.  (The original Student <EM>always</EM> used a generated symbol for
+the unknowns, even if there was already a single variable in the problem
+representing an unknown.  It therefore had equations like
+
+<P><PRE>[equal g3 [marked price]]
+</PRE>
+
+<P>in its list, declaring one variable equal to another.  I chose to
+check for this case and avoid the use of a generated symbol because the time
+spent in the actual solution of the equations increases quadratically with
+the number of equations.)
+
+<P><H2>Optional Substitutions</H2>
+
+<P>We have seen many cases in which Student replaces a phrase in the statement
+of a problem with a different word or phrase that fits better with the later
+stages of processing, like the substitution of <CODE>2 times</CODE> for <CODE>twice</CODE>
+or a special keyword like <CODE>perless</CODE> for <CODE>percent less than</CODE>.
+Student also has a few cases of <EM>optional</EM> substitutions that may or
+may not be made (<CODE>tryidiom</CODE>).
+
+<P>There are two ways in which optional substitutions can happen.  One is
+exemplified by the phrase <CODE>the perimeter of the rectangle</CODE>.  Student
+first attempts the problem without any special processing of this phrase.
+If a solution is not found, Student then replaces the phrase with <CODE>twice
+the sum of the length and width of the rectangle</CODE> and processes the
+resulting new problem from the beginning.  Unlike the use of known
+relationships or similarity of variable names, which Student handles by
+adding to the already-determined equations, this optional substitution
+requires the entire translation process to begin again.  For example, the
+word <CODE>twice</CODE> that begins the replacement phrase will be further
+translated to <CODE>2 times</CODE>.
+
+<P>The second category of optional substitution is triggered by the phrase <CODE>
+two numbers</CODE>.  This phrase must always be translated to something, because
+it indicates that two different variables are needed.  But the precise
+translation depends on the wording of the rest of the problem.  Student
+tries two alternative translations: <CODE>one of the numbers and the other
+number</CODE> and <CODE>one number and the other number</CODE>.  Here is an example in
+which the necessary translation is the one Student tries second:
+
+<P><PRE>? <U>student :sumtwo</U>
+
+The problem to be solved is
+
+The sum of two numbers is 96, and one number is 16 larger than the other
+number. Find the two numbers.
+
+
+The problem with an idiomatic substitution is
+
+The sum of one of the numbers and the other number is 96 , and one
+number is16 larger than the other number . Find the one of the numbers
+and the other number .
+
+
+With mandatory substitutions the problem is
+
+sum one numof the numbers and the other number is 96 , and one number
+is 16 plus the other number . Find the one numof the numbers and the
+other number .
+
+
+The simple sentences are
+
+Sum one numof the numbers and the other number is 96 .
+
+One number is 16 plus the other number .
+
+Find the one numof the numbers and the other number .
+
+
+The equations to be solved are
+
+Equal [sum [one of numbers] [other number]] 96
+
+Equal [one number] [sum 16 [other number]]
+
+
+The equations were insufficient to find a solution.
+
+The problem with an idiomatic substitution is
+
+The sum of one number and the other number is 96 , and one number is 16
+larger than the other number . Find the one number and the other number .
+
+
+With mandatory substitutions the problem is
+
+sum one number and the other number is 96 , and one number is 16 plus the
+other number . Find the one number and the other number .
+
+
+The simple sentences are
+
+Sum one number and the other number is 96 .
+
+One number is 16 plus the other number .
+
+Find the one number and the other number .
+
+
+The equations to be solved are
+
+Equal [sum [one number] [other number]] 96
+
+Equal [one number] [sum 16 [other number]]
+
+
+The one number is 56
+
+The other number is 40
+
+The problem is solved.
+</PRE>
+
+<P>There is no essential reason why Student uses one mechanism rather than
+another to deal with a particular problematic situation.  The difficulties
+about perimeters and about the phrase &quot;two numbers&quot; might have been solved
+using mechanisms other than this optional substitution one.  For example,
+the equation
+
+<P><PRE>[equal [perimeter] [product 2 [sum [length] [width]]]]
+</PRE>
+
+<P>might have been added to the library of known relationships.  The
+difficulty about alternate phrasings for &quot;two numbers&quot; could be solved by
+adding
+
+<P><PRE>[[one of the !word:pluralp] [&quot;one singular :word]]
+</PRE>
+
+<P>to the list of idiomatic substitutions in <CODE>idiom</CODE>.
+
+<P>Not all the mechanisms are equivalent, however.  The &quot;two numbers&quot; problem
+couldn't be solved by adding equations to the library of known relationships,
+because that phrase appears as part of a larger phrase like &quot;the sum of two
+numbers,&quot; and Student's understanding of the word <CODE>sum</CODE> doesn't allow
+it to be part of a variable name.  The word <CODE>sum</CODE> only makes sense to
+Student in the context of a phrase like <CODE>the sum of <CODE><EM>
+something</EM></CODE> and <CODE><EM>something else</EM></CODE></CODE>.  (See procedure <CODE>tst.sum</CODE>.)
+
+<P><H2>If All Else Fails</H2>
+
+<P>Sometimes Student fails to solve a problem because the problem is beyond
+either its linguistic capability or its algebraic capability.  For example,
+Student doesn't know how to solve quadratic equations.  But sometimes a
+problem that Student could solve in principle stumps it because it happens
+to lack a particular piece of common knowledge.  When a situation like that
+arises, Student is capable of asking the user for help (<CODE>student2</CODE>).
+
+<P><PRE>? <U>student :ship</U>
+
+The problem to be solved is
+
+The gross weight of a ship is 20000 tons. If its net weight is 15000
+tons, what is the weight of the ships cargo?
+
+
+With mandatory substitutions the problem is
+
+The gross weight numof a ship is 20000 tons . If its net weight is 15000
+tons , what is the weight numof the ships cargo ?
+
+
+The simple sentences are
+
+The gross weight numof a ship is 20000 tons .
+
+Its net weight is 15000 tons .
+
+What is the weight numof the ships cargo ?
+
+
+The equations to be solved are
+
+Equal [gross weight of ship] [product 20000 [tons]]
+
+Equal [its net weight] [product 15000 [tons]]
+
+
+The equations were insufficient to find a solution.
+
+Do you know any more relationships among these variables?
+
+Weight of ships cargo
+
+Its net weight
+
+Tons
+
+Gross weight of ship
+
+<U>The weight of a ships cargo is the gross weight minus the net weight</U>
+
+Assuming that
+[net weight] is equal to [its net weight]
+
+Assuming that
+[gross weight] is equal to [gross weight of ship]
+
+The weight of the ships cargo is 5000 tons
+
+The problem is solved.
+</PRE>
+
+<P><H2>Limitations of Pattern Matching</H2>
+
+
+<P>Student relies on certain stereotyped forms of sentences in the problems it
+solves.  It's easy to make up problems that will completely bewilder it:
+
+<P><PRE>Suppose you have 14 jelly beans.  You give 2 each to Tom, Dick, and
+Harry.  How many do you have left?
+</PRE>
+
+<P>The first mistake Student makes is that it thinks the word <CODE>
+and</CODE> following a comma separates two clauses; it generates simple sentences
+
+<P><PRE>You give 2 each to Tom , Dick .
+
+Harry .
+</PRE>
+
+<P>This is quite a fundamental problem; Student's understanding of
+the difference between a phrase and a clause is extremely primitive and
+prone to error.  Adding another pattern won't solve this one; the trouble
+is that Student pays no attention to the words in between the key words like
+<CODE>and</CODE>.
+
+<P>There are several other difficulties with this problem, some worse than
+others.  Student doesn't recognize the word <CODE>suppose</CODE> as having a
+special function in the sentence, so it makes up a noun phrase <CODE>suppose
+you</CODE> just like <CODE>the russians</CODE>.  This could be fixed with an idiomatic
+substitution that just ignored <CODE>suppose</CODE>.  Another relatively small
+problem is that the sentence starting <CODE>how many</CODE> doesn't say how many of
+what; Student needs a way to understand that the relevant noun phrase is
+<CODE>jelly beans</CODE> and not, for example, <CODE>Tom</CODE>.  The words <CODE>give</CODE>
+(representing subtraction) and <CODE>each</CODE> (representing counting a set and
+then multiplying) have special mathematical meanings comparable to <CODE>
+percent less</CODE>.  A much more subtle problem
+in knowledge representation is
+that in this problem there are two different quantities that could be called
+<CODE>the number of jelly beans you have</CODE>: the number you have at the
+beginning of the problem and the number you have at the end.  Student has a
+limited understanding of this passage-of-time difficulty when it's doing an
+age problem, but not in general.
+
+<P>How many more difficulties can you find in this problem?  For how many of
+them can you invent improvements to Student to get around them?
+
+<P>Some difficulties seem to require a &quot;more of the same&quot; strategy: adding
+some new patterns to Student that are similar to the ones already there.
+Other difficulties seem to require a more fundamental redesign.  Can that
+redesign be done using a pattern matcher as the central tool, or are more
+powerful tools needed?  How powerful <EM>is</EM> pattern matching, anyway?
+
+<P>Answering questions like these is the job of automata theory.  From that
+point of view, the answer is that it depends exactly what you mean by
+&quot;pattern matching.&quot;  The pattern matcher used in Student is equivalent
+to a finite-state machine.  The important thing to note about the patterns
+used in Student is that they only apply predicates to one word at a time,
+not to groups of words.  In other words, they don't use the <CODE>@</CODE>
+quantifier.  Here is a typical <CODE>student</CODE> pattern:
+
+<P><PRE>[^ what !:in [is are] #one !:dlm]
+</PRE>
+
+<P>For the purposes of this discussion, you can ignore the fact that
+the pattern matcher can set variables to remember which words matched each
+part of the pattern.  In comparing a pattern matcher to a finite-state
+machine, the question we're asking is what categories of strings can the
+pattern matcher accept.  This particular pattern is equivalent to the
+following machine:
+
+<P><CENTER><IMG SRC="pattern.gif" ALT="figure: pattern"></CENTER>
+
+<P>The arrow that I've labeled <EM>dlm</EM> is actually several arrows
+connecting the same states, one for each symbol that the predicate <CODE>dlm</CODE>
+accepts, i.e., period, question mark, and semicolon.  Similarly, the arrows
+labeled <EM>any</EM> are followed for any symbol at all.  This machine is
+nondeterministic, but you'll recall that that doesn't matter; we can turn it
+into a deterministic one if necessary.
+
+<P>To be sure you understand the equivalence of patterns and finite-state
+machines, see if you can draw a machine equivalent to this pattern:
+
+<P><PRE>[I see !:in [the a an] ?:numberp &amp;:adjective !:noun #:adverb]
+</PRE>
+
+<P>This pattern uses all the quantifiers that test words one at a
+time.
+
+<P>If these patterns are equivalent to finite-state machines, you'd expect them
+to have trouble recognizing sentences that involve <EM>embedding</EM> of
+clauses within clauses, since these pose the same problem as keeping track
+of balancing of parentheses.  For example, a sentence like &quot;The book that
+the boy whom I saw yesterday was reading is interesting&quot; would strain the
+capabilities of a finite-state machine.  (As in the case of parentheses, we
+could design a FSM that could handle such sentences up to some fixed depth
+of embedding, but not one that could handle arbitrarily deep embedding.)
+
+<P><H2>Context-Free Languages</H2>
+
+
+<P>If we allow the use of the <CODE>@</CODE> quantifier in patterns, and if the
+predicates used to test substrings of the sentences are true functions
+without side effects, then the pattern matcher is equivalent to an RTN or a
+production rule grammar.  What makes an RTN different from a finite-state
+machine is that the former can include arrows that match several symbols
+against another (or the same) RTN.  Equivalently, the <CODE>@</CODE> quantifier
+matches several symbols against another (or the same) pattern.
+
+<P>A language that can be represented by an RTN is called a <EM>
+context-free</EM> language.  The reason for the name is that in such a
+language a given string consistently matches or doesn't match a given
+predicate regardless of the rest of the sentence.  That's the point of what
+I said just above about side effects; the output from a test predicate
+can't depend on anything other than its input.  Pascal is a context-free
+language because
+
+<P><PRE>this := that
+</PRE>
+
+<P>is always an assignment statement regardless of what other statements
+might be in the program with it.
+
+<P>What <EM>isn't</EM> a context-free language?  The classic example in automata
+theory is the language consisting of the strings
+
+<P><PRE>abc
+aabbcc
+aaabbbccc
+aaaabbbbcccc
+</PRE>
+
+<P>and so on, with the requirement that the number of <CODE>a</CODE>s be
+equal to the number of <CODE>b</CODE>s and also equal to the number of <CODE>c</CODE>s.
+That language can't be represented as RTNs or production rules.  (Try it.
+Don't confuse it with the language that accepts any number of <CODE>a</CODE>s
+followed by any number of <CODE>b</CODE>s and so on; even a finite-state machine
+can represent that one.  The equal number requirement is important.)
+
+<P>The classic formal system that can represent <EM>any</EM> language for which
+there are precise rules is the Turing machine.  Its advantage over
+the RTN is precisely that it can &quot;jump around&quot; in its memory, looking at
+one part while making decisions about another part.
+
+<P>There is a sharp theoretical boundary between context-free and
+context-sensitive languages, but in practice the boundary is sometimes fuzzy.
+Consider again the case of Pascal and that assignment statement.  I said
+that it's recognizably an assignment statement because it matches a
+production rule like
+
+<P><PRE>assignment    :  identifier := expression
+</PRE>
+
+<P>(along with a bunch of other rules that determine what qualifies
+as an expression).  But that production rule doesn't really express <EM>
+all</EM> the requirements for a legal Pascal assignment statement.  For
+example, the identifier and the expression must be of the same type.  The
+actual Pascal compiler (any Pascal compiler, not just mine) includes
+instructions that represent the formal grammar plus extra instructions that
+represent the additional requirements.
+
+<P>The type agreement rule is an example of context sensitivity.  The types of
+the relevant identifiers were determined in <CODE>var</CODE> declarations earlier
+in the program; those declarations are part of what determines whether the
+given string of symbols is a legal assignment.
+
+<P><H2>Augmented Transition Networks</H2>
+
+<P>One could create a clean formal description of Pascal, type agreement rules
+and all, by designing a Turing machine to accept Pascal programs.  However,
+Turing machines aren't easy to work with for any practical problem.  It's
+much easier to set up a context-free grammar for Pascal and then throw in a
+few side effects to handle the context-sensitive aspects of the language.
+
+<P>Much the same is true of English.  It's possible to set up an RTN (or a
+production rule grammar) for noun phrases, for example, and another one for
+verb phrases.  It's tempting then to set up an RTN for a sentence like this:
+
+<P><CENTER><IMG SRC="sentence.gif" ALT="figure: sentence"></CENTER>
+
+<P>This machine captures some, but not all, of the rules of English.
+It's true that a sentence requires a noun phrase (the subject) and a verb
+phrase (the predicate).  But there are <EM>agreement</EM> rules for person
+and number (I <EM>run</EM> but he <EM>runs</EM>) analogous to the type
+agreement rules of Pascal.
+
+<P>Some artificial intelligence researchers, understanding all this, parse
+English sentences using a formal description called an <EM>
+augmented transition network</EM> (ATN).  An ATN is just
+like an RTN except
+that each transition arrow can have associated with it not only the name of
+a symbol or another RTN but also some <EM>conditions</EM> that must be met in
+order to follow the arrow and some <EM>actions</EM> that the program should
+take if the arrow is followed.  For example, we could turn the RTN just
+above into an ATN by adding an action to the first arrow saying &quot;store the
+number (singular or plural) of the noun phrase in the variable <CODE>
+number</CODE>&quot; and adding a condition to the second arrow saying &quot;the number of
+the verb phrase must be equal to the variable <CODE>number</CODE>.&quot;
+
+<P>Subject-predicate agreement is not the only rule in English grammar best
+expressed as a side effect in a transition network.  Below is an ATN
+for noun phrases taken from <EM>Language as a Cognitive Process, Volume 1:
+Syntax</EM> by Terry Winograd (page 598).  I'm not going to attempt to explain
+the notation or the detailed rules here, but just to give one example, the
+condition labeled &quot;h16p&quot; says that the transition for apostrophe-s can be
+followed if the head of the phrase is an ordinary noun (&quot;the book's&quot;) but
+not if it's a pronoun (&quot;you's&quot;).
+
+<P>
+<CENTER><A NAME="winograd"><IMG SRC="atn.gif" ALT="figure: atn"></A></CENTER>
+
+<P>The ATN is equivalent in power to a Turing machine; there is no known
+mechanism that is more flexible in carrying out algorithms.  The flexibility
+has a cost, though.  The time required to parse a string with an ATN is not
+bounded by a polynomial function.  (Remember, the time for an RTN is
+O(<EM>n</EM><SUP><SMALL>3</SMALL></SUP>).)  It can easily be exponential, O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>).  One reason is that a
+context-sensitive procedure can't be subject to memoization.  If two
+invocations of the same procedure with the same inputs can give different
+results because of side effects, it does no good to remember what result we
+got the last time.  Turning an ATN into a practical program is often
+possible, but not a trivial task.
+
+<P>In thinking about ATNs we've brought together most of the topics in this
+book: formal systems, algorithms, language parsing, and artificial
+intelligence.  Perhaps that's a good place to stop.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch5/v3ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch7/v3ch7.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<P><PRE>
+to student :prob
+say [The problem to be solved is] :prob
+make "prob map.se [depunct ?] :prob
+localmake "orgprob :prob
+student1 :prob ~
+         [[[the perimeter of ! rectangle]
+           [twice the sum of the length and width of the rectangle]]
+          [[two numbers] [one of the numbers and the other number]]
+          [[two numbers] [one number and the other number]]]
+end
+
+to student1 :prob :idioms
+local [simsen shelf aunits units wanted ans var lasteqn
+       ref eqt1 beg end idiom reply]
+make "prob idioms :prob
+if match [^ two numbers #] :prob ~
+   [make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms ~
+    tryidiom stop]
+while [match [^beg the the #end] :prob] [make "prob (sentence :beg "the :end)]
+say [With mandatory substitutions the problem is] :prob
+ifelse match [# @:in [[as old as] [age] [years old]] #] :prob ~
+       [ageprob] [make "simsen bracket :prob]
+lsay [The simple sentences are] :simsen
+foreach [aunits wanted ans var lasteqn ref units] [make ? []]
+make "shelf filter [not emptyp ?] map.se [senform ?] :simsen
+lsay [The equations to be solved are] :shelf
+make "units remdup :units
+if trysolve :shelf :wanted :units :aunits [print [The problem is solved.] stop]
+make "eqt1 remdup geteqns :var
+if not emptyp :eqt1 [lsay [Using the following known relationships] :eqt1]
+student2 :eqt1
+end
+
+to student2 :eqt1
+make "var remdup sentence (map.se [varterms ?] :eqt1) :var
+make "eqt1 sentence :eqt1 vartest :var
+if not emptyp :eqt1 ~
+   [if trysolve (sentence :shelf :eqt1) :wanted :units :aunits
+       [print [The problem is solved.] stop]]
+make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms
+if not emptyp :idiom [tryidiom stop]
+lsay [Do you know any more relationships among these variables?] :var
+make "reply readlist
+if equalp :reply [yes] [print [Tell me.] make "reply readlist]
+if equalp :reply [no] [print [] print [I can't solve this problem.] stop]
+make "reply map.se [depunct ?] :reply
+if dlm last :reply [make "reply butlast :reply]
+if not match [^beg is #end] :reply [print [I don't understand that.] stop]
+make "shelf sentence :shelf :eqt1
+student2 (list (list "equal opform :beg opform :end))
+end
+
+;; Mandatory substitutions
+
+to depunct :word
+if emptyp :word [output []]
+if equalp first :word "$ [output sentence "$ depunct butfirst :word]
+if equalp last :word "% [output sentence depunct butlast :word "percent]
+if memberp last :word [. ? |;| ,] [output sentence depunct butlast :word last :word]
+if emptyp butfirst :word [output :word]
+if equalp last2 :word "'s [output sentence depunct butlast butlast :word "s]
+output :word
+end
+
+to last2 :word
+output word (last butlast :word) (last :word)
+end
+
+to idioms :sent
+local "number
+output changes :sent ~
+    [[[the sum of] ["sum]] [[square of] ["square]] [[of] ["numof]]
+     [[how old] ["what]] [[is equal to] ["is]]
+     [[years younger than] [[less than]]] [[years older than] ["plus]]
+     [[percent less than] ["perless]] [[less than] ["lessthan]]
+     [[these] ["the]] [[more than] ["plus]]
+     [[first two numbers] [[the first number and the second number]]]
+     [[three numbers]
+      [[the first number and the second number and the third number]]]
+     [[one half] [0.5]] [[twice] [[2 times]]]
+     [[$ !number] [sentence :number "dollars]] [[consecutive to] [[1 plus]]]
+     [[larger than] ["plus]] [[per cent] ["percent]] [[how many] ["howm]]
+     [[is multiplied by] ["ismulby]] [[is divided by] ["isdivby]]
+     [[multiplied by] ["times]] [[divided by] ["divby]]]
+end
+
+to changes :sent :list
+localmake "keywords map.se [findkey first ?] :list
+output changes1 :sent :list :keywords
+end
+
+to findkey :pattern
+if equalp first :pattern "!:in [output first butfirst :pattern]
+if equalp first :pattern "?:in [output sentence (item 2 :pattern) (item 3 :pattern)]
+output first :pattern
+end
+
+to changes1 :sent :list :keywords
+if emptyp :sent [output []]
+if memberp first :sent :keywords [output changes2 :sent :list :keywords]
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes2 :sent :list :keywords
+changes3 :list :list
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes3 :biglist :nowlist
+if emptyp :nowlist [stop]
+if changeone first :nowlist [changes3 :biglist :biglist stop]
+changes3 :biglist butfirst :nowlist
+end
+
+to changeone :change
+local "end
+if not match (sentence first :change [#end]) :sent [output "false]
+make "sent run (sentence "sentence last :change ":end)
+output "true
+end
+
+;; Division into simple sentences
+
+to bracket :prob
+output bkt1 finddelim :prob
+end
+
+to finddelim :sent
+output finddelim1 :sent [] []
+end
+
+to finddelim1 :in :out :simples
+if emptyp :in ~
+   [ifelse emptyp :out [output :simples] [output lput (sentence :out ".) :simples]]
+if dlm first :in ~
+   [output finddelim1 (nocap butfirst :in) []
+                      (lput (sentence :out first :in) :simples)]
+output finddelim1 (butfirst :in) (sentence :out first :in) :simples
+end
+
+to nocap :words
+if emptyp :words [output []]
+if personp first :words [output :words]
+output sentence (lowercase first :words) butfirst :words
+end
+
+to bkt1 :problist
+local [first word rest]
+if emptyp :problist [output []]
+if not memberp ", first :problist ~
+   [output fput first :problist bkt1 butfirst :problist]
+if match [if ^first , !word:qword #rest] first :problist ~
+   [output bkt1 fput (sentence :first ".)
+                     fput (sentence :word :rest) butfirst :problist]
+if match [^first , and #rest] first :problist ~
+   [output fput (sentence :first ".) (bkt1 fput :rest butfirst :problist)]
+output fput first :problist bkt1 butfirst :problist
+end
+
+;; Age problems
+
+to ageprob
+local [beg end sym who num subj ages]
+while [match [^beg as old as #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg years old #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg will be when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg "in :sym [years . in] :sym "years :end)]
+while [match [^beg was when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg :sym [years ago .] :sym [years ago] :end)]
+while [match [^beg !who:personp will be in !num years #end] :prob] ~
+      [make "prob (sentence :beg :who [s age in] :num "years #end)]
+while [match [^beg was #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg will be #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg !who:personp is now #end] :prob] ~
+      [make "prob (sentence :beg :who [s age now] :end)]
+while [match [^beg !num years from now #end] :prob] ~
+      [make "prob (sentence :beg "in :num "years :end)]
+make "prob ageify :prob
+ifelse match [^ !who:personp ^end s age #] :prob ~
+       [make "subj sentence :who :end] [make "subj "someone]
+make "prob agepron :prob
+make "end :prob
+make "ages []
+while [match [^ !who:personp ^beg age #end] :end] ~
+      [push "ages (sentence "and :who :beg "age)]
+make "ages butfirst reduce "sentence remdup :ages
+while [match [^beg their ages #end] :prob] [make "prob (sentence :beg :ages :end)]
+make "simsen map [agesen ?] bracket :prob
+end
+
+to ageify :sent
+if emptyp :sent [output []]
+if not personp first :sent [output fput first :sent ageify butfirst :sent]
+catch "error [if equalp first butfirst :sent "s
+                 [output fput first :sent ageify butfirst :sent]]
+output (sentence first :sent [s age] ageify butfirst :sent)
+end
+
+to agepron :sent
+if emptyp :sent [output []]
+if not pronoun first :sent [output fput first :sent agepron butfirst :sent]
+if posspro first :sent [output (sentence :subj "s agepron butfirst :sent)]
+output (sentence :subj [s age] agepron butfirst :sent)
+end
+
+to agesen :sent
+local [when rest num]
+make "when []
+if match [in !num years #rest] :sent ~
+   [make "when sentence "pluss :num make "sent :rest]
+if match [!num years ago #rest] :sent ~
+   [make "when sentence "minuss :num make "sent :rest]
+output agewhen :sent
+end
+
+to agewhen :sent
+if emptyp :sent [output []]
+if not equalp first :sent "age [output fput first :sent agewhen butfirst :sent]
+if match [in !num years #rest] butfirst :sent ~
+   [output (sentence [age pluss] :num agewhen :rest)]
+if match [!num years ago #rest] butfirst :sent ~
+   [output (sentence [age minuss] :num agewhen :rest)]
+if equalp "now first butfirst :sent ~
+   [output sentence "age agewhen butfirst butfirst :sent]
+output (sentence "age :when agewhen butfirst :sent)
+end
+
+;; Translation from sentences into equations
+
+to senform :sent
+make "lasteqn senform1 :sent
+output :lasteqn
+end
+
+to senform1 :sent
+local [one two verb1 verb2 stuff1 stuff2 factor]
+if emptyp :sent [output []]
+if match [^ what are ^one and ^two !:dlm] :sent ~
+   [output fput (qset :one) (senform (sentence [what are] :two "?))]
+if match [^ what !:in [is are] #one !:dlm] :sent ~
+   [output (list qset :one)]
+if match [^ howm !one is #two !:dlm] :sent ~
+   [push "aunits (list :one) output (list qset :two)]
+if match [^ howm ^one do ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "have))]
+if match [^ howm ^one does ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "has))]
+if match [^ find ^one and #two] :sent ~
+   [output fput (qset :one) (senform sentence "find :two)]
+if match [^ find #one !:dlm] :sent [output (list qset :one)]
+make "sent filter [not article ?] :sent
+if match [^one ismulby #two] :sent ~
+   [push "ref (list "product opform :one opform :two) output []]
+if match [^one isdivby #two] :sent ~
+   [push "ref (list "quotient opform :one opform :two) output []]
+if match [^one is increased by #two] :sent ~
+   [push "ref (list "sum opform :one opform :two) output []]
+if match [^one is #two] :sent ~
+   [output (list (list "equal opform :one opform :two))]
+if match [^one !verb1:verb ^factor as many ^stuff1 as
+          ^two !verb2:verb ^stuff2 !:dlm] ~
+         :sent ~
+   [if emptyp :stuff2 [make "stuff2 :stuff1]
+    output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (sentence :factor [the number of] :stuff2 :two :verb2)))]
+if match [^one !verb1:verb !factor:numberp #stuff1 !:dlm] :sent ~
+   [output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (list :factor)))]
+say [This sentence form is not recognized:] :sent
+throw "error
+end
+
+to qset :sent
+localmake "opform opform filter [not article ?] :sent
+if not operatorp first :opform ~
+   [queue "wanted :opform queue "ans list :opform oprem :sent output []]
+localmake "gensym gensym
+queue "wanted :gensym
+queue "ans list :gensym oprem :sent
+output (list "equal :gensym opform (filter [not article ?] :sent))
+end
+
+to oprem :sent
+output map [ifelse equalp ? "numof ["of] [?]] :sent
+end
+
+to opform :expr
+local [left right op]
+if match [^left !op:op2 #right] :expr [output optest :op :left :right]
+if match [^left !op:op1 #right] :expr [output optest :op :left :right]
+if match [^left !op:op0 #right] :expr [output optest :op :left :right]
+if match [#left !:dlm] :expr [make "expr :left]
+output nmtest filter [not article ?] :expr
+end
+
+to optest :op :left :right
+output run (list (word "tst. :op) :left :right)
+end
+
+to tst.numof :left :right
+if numberp last :left [output (list "product opform :left opform :right)]
+output opform (sentence :left "of :right)
+end
+
+to tst.divby :left :right
+output (list "quotient opform :left opform :right)
+end
+
+to tst.tothepower :left :right
+output (list "expt opform :left opform :right)
+end
+
+to expt :num :pow
+if :pow < 1 [output 1]
+output :num * expt :num :pow - 1
+end
+
+to tst.per :left :right
+output (list "quotient ~
+          opform :left ~
+          opform (ifelse numberp first :right [:right] [fput 1 :right]))
+end
+
+to tst.lessthan :left :right
+output opdiff opform :right opform :left
+end
+
+to opdiff :left :right
+output (list "sum :left (list "minus :right))
+end
+
+to tst.minus :left :right
+if emptyp :left [output list "minus opform :right]
+output opdiff opform :left opform :right
+end
+
+to tst.minuss :left :right
+output tst.minus :left :right
+end
+
+to tst.sum :left :right
+local [one two three]
+if match [^one and ^two and #three] :right ~
+   [output (list "sum opform :one opform (sentence "sum :two "and :three))]
+if match [^one and #two] :right ~
+   [output (list "sum opform :one opform :two)]
+say [sum used wrong:] :right
+throw "error
+end
+
+to tst.squared :left :right
+output list "square opform :left
+end
+
+to tst.difference :left :right
+local [one two]
+if match [between ^one and #two] :right [output opdiff opform :one opform :two]
+say [Incorrect use of difference:] :right
+throw "error
+end
+
+to tst.plus :left :right
+output (list "sum opform :left opform :right)
+end
+
+to tst.pluss :left :right
+output tst.plus :left :right
+end
+
+to square :x
+output :x * :x
+end
+
+to tst.square :left :right
+output list "square opform :right
+end
+
+to tst.percent :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output opform (sentence butlast :left ((last :left) / 100) :right)
+end
+
+to tst.perless :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output (list "product ~
+          (opform sentence butlast :left ((100 - (last :left)) / 100)) ~
+          opform :right)
+end
+
+to tst.times :left :right
+if emptyp :left [say [Incorrect use of times:] :right throw "error]
+output (list "product opform :left opform :right)
+end
+
+to nmtest :expr
+if match [& !:numberp #] :expr [say [argument error:] :expr throw "error]
+if and (equalp first :expr 1) (1 < count :expr) ~
+   [make "expr (sentence 1 plural (first butfirst :expr) (butfirst butfirst :expr))]
+if and (numberp first :expr) (1 < count :expr) ~
+   [push "units (list first butfirst :expr) ~
+    output (list "product (first :expr) (opform butfirst :expr))]
+if numberp first :expr [output first :expr]
+if memberp "this :expr [output this :expr]
+if not memberp :expr :var [push "var :expr]
+output :expr
+end
+
+to this :expr
+if not emptyp :ref [output pop "ref]
+if not emptyp :lasteqn [output first butfirst last :lasteqn]
+if equalp first :expr "this [make "expr butfirst :expr]
+push "var :expr
+output :expr
+end
+
+;; Solving the equations
+
+to trysolve :shelf :wanted :units :aunits
+local "solution
+make "solution solve :wanted :shelf (ifelse emptyp :aunits [:units] [:aunits])
+output pranswers :ans :solution
+end
+
+to solve :wanted :eqt :terms
+output solve.reduce solver :wanted :terms [] [] "insufficient
+end
+
+to solve.reduce :soln
+if emptyp :soln [output []]
+if wordp :soln [output :soln]
+if emptyp butfirst :soln [output :soln]
+local "part
+make "part solve.reduce butfirst :soln
+output fput (list (first first :soln) (subord last first :soln :part)) :part
+end
+
+to solver :wanted :terms :alis :failed :err
+local [one result restwant]
+if emptyp :wanted [output :err]
+make "one solve1 (first :wanted) ~
+                 (sentence butfirst :wanted :failed :terms) ~
+                 :alis :eqt [] "insufficient
+if wordp :one ~
+   [output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one]
+make "restwant (sentence :failed butfirst :wanted)
+if emptyp :restwant [output :one]
+make "result solver :restwant :terms :one [] "insufficient
+if listp :result [output :result]
+output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one
+end
+
+to solve1 :x :terms :alis :eqns :failed :err
+local [thiseq vars extras xterms others result]
+if emptyp :eqns [output :err]
+make "thiseq subord (first :eqns) :alis
+make "vars varterms :thiseq
+if not memberp :x :vars ~
+   [output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :err]
+make "xterms fput :x :terms
+make "extras setminus :vars :xterms
+make "eqt remove (first :eqns) :eqt
+if not emptyp :extras ~
+   [make "others solver :extras :xterms :alis [] "insufficient
+    ifelse wordp :others
+           [make "eqt sentence :failed :eqns
+            output solve1 :x :terms :alis (butfirst :eqns)
+                      (fput first :eqns :failed) :others]
+           [make "alis :others
+            make "thiseq subord (first :eqns) :alis]]
+make "result solveq :x :thiseq
+if listp :result [output lput :result :alis]
+make "eqt sentence :failed :eqns
+output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :result
+end
+
+to solveq :var :eqn
+local [left right]
+make "left first butfirst :eqn
+ifelse occvar :var :left ~
+   [make "right last :eqn] [make "right :left make "left last :eqn]
+output solveq1 :left :right "true
+end
+
+to solveq1 :left :right :bothtest
+if :bothtest [if occvar :var :right [output solveqboth :left :right]]
+if equalp :left :var [output list :var :right]
+if wordp :left [output "unsolvable]
+local "oper
+make "oper first :left
+if memberp :oper [sum product minus quotient] [output run (list word "solveq. :oper)]
+output "unsolvable
+end
+
+to solveqboth :left :right
+if not equalp first :right "sum [output solveq1 (subterm :left :right) 0 "false]
+output solveq.rplus :left butfirst :right []
+end
+
+to solveq.rplus :left :right :newright
+if emptyp :right [output solveq1 :left (simone "sum :newright) "false]
+if occvar :var first :right ~
+   [output solveq.rplus (subterm :left first :right) butfirst :right :newright]
+output solveq.rplus :left butfirst :right (fput first :right :newright)
+end
+
+to solveq.sum
+if emptyp butfirst butfirst :left [output solveq1 first butfirst :left :right "true]
+output solveq.sum1 butfirst :left :right []
+end
+
+to solveq.sum1 :left :right :newleft
+if emptyp :left [output solveq.sum2]
+if occvar :var first :left ~
+   [output solveq.sum1 butfirst :left :right fput first :left :newleft]
+output solveq.sum1 butfirst :left (subterm :right first :left) :newleft
+end
+
+to solveq.sum2
+if emptyp butfirst :newleft [output solveq1 first :newleft :right "true]
+localmake "factor factor :newleft :var
+if equalp first :factor "unknown [output "unsolvable]
+if equalp last :factor 0 [output "unsolvable]
+output solveq1 first :factor (divterm :right last :factor) "true
+end
+
+to solveq.minus
+output solveq1 (first butfirst :left) (minusin :right) "false
+end
+
+to solveq.product
+output solveq.product1 :left :right
+end
+
+to solveq.product1 :left :right
+if emptyp butfirst butfirst :left [output solveq1 (first butfirst :left) :right "true]
+if not occvar :var first butfirst :left ~
+   [output solveq.product1 (fput "product butfirst butfirst :left)
+                           (divterm :right first butfirst :left)]
+localmake "rest simone "product butfirst butfirst :left
+if occvar :var :rest [output "unsolvable]
+output solveq1 (first butfirst :left) (divterm :right :rest) "false
+end
+
+to solveq.quotient
+if occvar :var first butfirst :left ~
+   [output solveq1 (first butfirst :left) (simtimes list :right last :left) "true]
+output solveq1 (simtimes list :right last :left) (first butfirst :left) "true
+end
+
+to denom :fract :addends
+make "addends simplus :addends
+localmake "den last :fract
+if not equalp first :addends "quotient ~
+   [output simdiv list (simone "sum
+                               (remop "sum list (distribtimes (list :addends) :den)
+                                                first butfirst :fract))
+                       :den]
+if equalp :den last :addends ~
+   [output simdiv (simplus list (first butfirst :fract) (first butfirst :addends))
+                  :den]
+localmake "lowterms simdiv list :den last :addends
+output simdiv list (simplus (simtimes list first butfirst :fract last :lowterms)
+                            (simtimes list first butfirst :addends
+                                           first butfirst :lowterms)) ~
+                   (simtimes list first butfirst :lowterms last :addends)
+end
+
+to distribtimes :trms :multiplier
+output simplus map [simtimes (list ? :multiplier)] :trms
+end
+
+to distribx :expr
+local [oper args]
+if emptyp :expr [output :expr]
+make "oper first :expr
+if not operatorp :oper [output :expr]
+make "args map [distribx ?] butfirst :expr
+if reduce "and map [numberp ?] :args [output run (sentence [(] :oper :args [)])]
+if equalp :oper "sum [output simplus :args]
+if equalp :oper "minus [output minusin first :args]
+if equalp :oper "product [output simtimes :args]
+if equalp :oper "quotient [output simdiv :args]
+output fput :oper :args
+end
+
+to divterm :dividend :divisor
+if equalp :dividend 0 [output 0]
+output simdiv list :dividend :divisor
+end
+
+to factor :exprs :var
+local "trms
+make "trms map [factor1 :var ?] :exprs
+if memberp "unknown :trms [output fput "unknown :exprs]
+output list :var simplus :trms
+end
+
+to factor1 :var :expr
+localmake "negvar minusin :var
+if equalp :var :expr [output 1]
+if equalp :negvar :expr [output -1]
+if emptyp :expr [output "unknown]
+if equalp first :expr "product [output factor2 butfirst :expr]
+if not equalp first :expr "quotient [output "unknown]
+localmake "dividend first butfirst :expr
+if equalp :var :dividend [output (list "quotient 1 last :expr)]
+if not equalp first :dividend "product [output "unknown]
+localmake "result factor2 butfirst :dividend
+if equalp :result "unknown [output "unknown]
+output (list "quotient :result last :expr)
+end
+
+to factor2 :trms
+if memberp :var :trms [output simone "product (remove :var :trms)]
+if memberp :negvar :trms [output minusin simone "product (remove :negvar :trms)]
+output "unknown
+end
+
+to maybeadd :num :rest
+if equalp :num 0 [output :rest]
+output fput :num :rest
+end
+
+to maybemul :num :rest
+if equalp :num 1 [output :rest]
+output fput :num :rest
+end
+
+to minusin :expr
+if emptyp :expr [output -1]
+if equalp first :expr "sum [output fput "sum map [minusin ?] butfirst :expr]
+if equalp first :expr "minus [output last :expr]
+if memberp first :expr [product quotient] ~
+   [output fput first :expr
+                (fput (minusin first butfirst :expr) butfirst butfirst :expr)]
+if numberp :expr [output minus :expr]
+output list "minus :expr
+end
+
+to occvar :var :expr
+if emptyp :expr [output "false]
+if wordp :expr [output equalp :var :expr]
+if operatorp first :expr [output not emptyp find [occvar :var ?] butfirst :expr]
+output equalp :var :expr
+end
+
+to remfactor :num :den
+foreach butfirst :num [remfactor1 ?]
+output (list "quotient (simone "product butfirst :num) (simone "product butfirst :den))
+end
+
+to remfactor1 :expr
+local "neg
+if memberp :expr :den ~
+   [make "num remove :expr :num  make "den remove :expr :den  stop]
+make "neg minusin :expr
+if not memberp :neg :den [stop]
+make "num remove :expr :num
+make "den minusin remove :neg :den
+end
+
+to remop :oper :exprs
+output map.se [ifelse equalp first ? :oper [butfirst ?] [(list ?)]] :exprs
+end
+
+to simdiv :list
+local [num den numop denop]
+make "num first :list
+make "den last :list
+if equalp :num :den [output 1]
+if numberp :den [output simtimes (list (quotient 1 :den) :num)]
+make "numop first :num
+make "denop first :den
+if equalp :numop "quotient ~
+   [output simdiv list (first butfirst :num) (simtimes list last :num :den)]
+if equalp :denop "quotient ~
+   [output simdiv list (simtimes list :num last :den) (first butfirst :den)]
+if and equalp :numop "product equalp :denop "product [output remfactor :num :den]
+if and equalp :numop "product memberp :den :num [output remove :den :num]
+output fput "quotient :list
+end
+
+to simone :oper :trms
+if emptyp :trms [output ifelse equalp :oper "product [1] [0]]
+if emptyp butfirst :trms [output first :trms]
+output fput :oper :trms
+end
+
+to simplus :exprs
+make "exprs remop "sum :exprs
+localmake "factor [unknown]
+catch "simplus ~
+      [foreach :terms ~
+               [make "factor (factor :exprs ?) ~
+                if not equalp first :factor "unknown [throw "simplus]]]
+if not equalp first :factor "unknown [output fput "product remop "product :factor]
+localmake "nums 0
+localmake "nonnums []
+localmake "quick []
+catch "simplus [simplus1 :exprs]
+if not emptyp :quick [output :quick]
+if not equalp :nums 0 [push "nonnums :nums]
+output simone "sum :nonnums
+end
+
+to simplus1 :exprs
+if emptyp :exprs [stop]
+simplus2 first :exprs
+simplus1 butfirst :exprs
+end
+
+to simplus2 :pos
+local "neg
+make "neg minusin :pos
+if numberp :pos [make "nums sum :pos :nums stop]
+if memberp :neg butfirst :exprs [make "exprs remove :neg :exprs stop]
+if equalp first :pos "quotient ~
+   [make "quick (denom :pos (maybeadd :nums sentence :nonnums butfirst :exprs)) ~
+    throw "simplus]
+push "nonnums :pos
+end
+
+to simtimes :exprs
+local [nums nonnums quick]
+make "nums 1
+make "nonnums []
+make "quick []
+catch "simtimes [foreach remop "product :exprs [simtimes1 ?]]
+if not emptyp :quick [output :quick]
+if equalp :nums 0 [output 0]
+if not equalp :nums 1 [push "nonnums :nums]
+output simone "product :nonnums
+end
+
+to simtimes1 :expr
+if equalp :expr 0 [make "nums 0 throw "simtimes]
+if numberp :expr [make "nums product :expr :nums stop]
+if equalp first :expr "sum ~
+   [make "quick distribtimes (butfirst :expr)
+                             (simone "product maybemul :nums sentence :nonnums ?rest)
+    throw "simtimes]
+if equalp first :expr "quotient ~
+   [make "quick
+          simdiv (list (simtimes (list (first butfirst :expr)
+                                       (simone "product
+                                               maybemul :nums
+                                                        sentence :nonnums ?rest)))
+                       (last :expr))
+    throw "simtimes]
+push "nonnums :expr
+end
+
+to subord :expr :alist
+output distribx subord1 :expr :alist
+end
+
+to subord1 :expr :alist
+if emptyp :alist [output :expr]
+output subord (substop (last first :alist) (first first :alist) :expr) ~
+              (butfirst :alist)
+end
+
+to substop :val :var :expr
+if emptyp :expr [output []]
+if equalp :expr :var [output :val]
+if not operatorp first :expr [output :expr]
+output fput first :expr map [substop :val :var ?] butfirst :expr
+end
+
+to subterm :minuend :subtrahend
+if equalp :minuend 0 [output minusin :subtrahend]
+if equalp :minuend :subtrahend [output 0]
+output simplus (list :minuend minusin :subtrahend)
+end
+
+to varterms :expr
+if emptyp :expr [output []]
+if numberp :expr [output []]
+if wordp :expr [output (list :expr)]
+if operatorp first :expr [output map.se [varterms ?] butfirst :expr]
+output (list :expr)
+end
+
+;; Printing the solutions
+
+to pranswers :ans :solution
+print []
+if equalp :solution "unsolvable ~
+   [print [Unable to solve this set of equations.] output "false]
+if equalp :solution "insufficient ~
+   [print [The equations were insufficient to find a solution.] output "false]
+localmake "gotall "true
+foreach :ans [if prans ? :solution [make "gotall "false]]
+if not :gotall [print [] print [Unable to solve this set of equations.]]
+output :gotall
+end
+
+to prans :ans :solution
+localmake "result find [equalp first ? first :ans] :solution
+if emptyp :result [output "true]
+print (sentence cap last :ans "is unitstring last :result)
+print []
+output "false
+end
+
+to unitstring :expr
+if numberp :expr [output roundoff :expr]
+if equalp first :expr "product ~
+   [output sentence (unitstring first butfirst :expr)
+                    (reduce "sentence butfirst butfirst :expr)]
+if (and (listp :expr)
+         (not numberp first :expr)
+         (not operatorp first :expr)) ~
+   [output (sentence 1 (singular first :expr) (butfirst :expr))]
+output :expr
+end
+
+to roundoff :num
+if (abs (:num - round :num)) < 0.0001 [output round :num]
+output :num
+end
+
+to abs :num
+output ifelse (:num < 0) [-:num] [:num]
+end
+
+;; Using known relationships
+
+to geteqns :vars
+output map.se [gprop varkey ? "eqns] :vars
+end
+
+to varkey :var
+local "word
+if match [number of !word #] :var [output :word]
+output first :var
+end
+
+;; Assuming equality of similar variables
+
+to vartest :vars
+if emptyp :vars [output []]
+local [var beg end]
+make "var first :vars
+output (sentence (ifelse match [^beg !:pronoun #end] :var
+                         [vartest1 :var (sentence :beg "& :end) butfirst :vars]
+                         [[]])
+                 (vartest1 :var (sentence "# :var "#) butfirst :vars)
+                 (vartest butfirst :vars))
+end
+
+to vartest1 :target :pat :vars
+output map [varequal :target ?] filter [match :pat ?] :vars
+end
+
+to varequal :target :var
+print []
+print [Assuming that]
+print (sentence (list :target) [is equal to] (list :var))
+output (list "equal :target :var)
+end
+
+;; Optional substitutions
+
+to tryidiom
+make "prob (sentence :beg last :idiom :end)
+while [match (sentence "^beg first :idiom "#end) :prob] ~
+      [make "prob (sentence :beg last :idiom :end)]
+say [The problem with an idiomatic substitution is] :prob
+student1 :prob (remove :idiom :idioms)
+end
+
+;; Utility procedures
+
+to qword :word
+output memberp :word [find what howm how]
+end
+
+to dlm :word
+output memberp :word [. ? |;|]
+end
+
+to article :word
+output memberp :word [a an the]
+end
+
+to verb :word
+output memberp :word [have has get gets weigh weighs]
+end
+
+to personp :word
+output memberp :word [Mary Ann Bill Tom Sally Frank father uncle]
+end
+
+to pronoun :word
+output memberp :word [he she it him her they them his her its]
+end
+
+to posspro :word
+output memberp :word [his her its]
+end
+
+to op0 :word
+output memberp :word [pluss minuss squared tothepower per sum difference numof]
+end
+
+to op1 :word
+output memberp :word [times divby square]
+end
+
+to op2 :word
+output memberp :word [plus minus lessthan percent perless]
+end
+
+to operatorp :word
+output memberp :word [sum minus product quotient expt square equal]
+end
+
+to plural :word
+localmake "plural gprop :word "plural
+if not emptyp :plural [output :plural]
+if not emptyp gprop :word "sing [output :word]
+if equalp last :word "s [output :word]
+output word :word "s
+end
+
+to singular :word
+localmake "sing gprop :word "sing
+if not emptyp :sing [output :sing]
+if not emptyp gprop :word "plural [output :word]
+if equalp last :word "s [output butlast :word]
+output :word
+end
+
+to setminus :big :little
+output filter [not memberp ? :little] :big
+end
+
+to say :herald :text
+print []
+print :herald
+print []
+print :text
+print []
+end
+
+to lsay :herald :text
+print []
+print :herald
+print []
+foreach :text [print cap ? print []]
+end
+
+to cap :sent
+if emptyp :sent [output []]
+output sentence (word uppercase first first :sent butfirst first :sent) ~
+                butfirst :sent
+end
+
+;; The pattern matcher
+
+to match :pat :sen
+if prematch :pat :sen [output rmatch :pat :sen]
+output "false
+end
+
+to prematch :pat :sen
+if emptyp :pat [output "true]
+if listp first :pat [output prematch butfirst :pat :sen]
+if memberp first first :pat [! @ # ^ & ?] [output prematch butfirst :pat :sen]
+if emptyp :sen [output "false]
+localmake "rest member first :pat :sen
+if not emptyp :rest [output prematch butfirst :pat :rest]
+output "false
+end
+
+to rmatch :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen [output rmatch butfirst :pat butfirst :sen]
+output "false
+end
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output rmatch butfirst :pat butfirst :sen
+end
+
+to match?
+make :special.var []
+if emptyp :sen [output rmatch butfirst :pat :sen]
+if not try.pred [output rmatch butfirst :pat :sen]
+make :special.var first :sen
+if rmatch butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output rmatch butfirst :pat :sen
+end
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if rmatch butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+to try.pred
+if listp :special.pred [output rmatch :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output rmatch :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if rmatch first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
+
+;; Sample word problems
+
+make "ann [Mary is twice as old as Ann was when Mary was as old as Ann is now.
+  If Mary is 24 years old, how old is Ann?]
+make "guns [The number of soldiers the Russians have is
+  one half of the number of guns they have. They have 7000 guns.
+  How many soldiers do they have?]
+make "jet [The distance from New York to Los Angeles is 3000 miles.
+  If the average speed of a jet plane is 600 miles per hour,
+  find the time it takes to travel from New York to Los Angeles by jet.]
+make "nums [A number is multiplied by 6 . This product is increased by 44 .
+  This result is 68 . Find the number.]
+make "radio [The price of a radio is $69.70.
+  If this price is 15 percent less than the marked price, find the marked price.]
+make "sally [The sum of Sally's share of some money and Frank's share is $4.50.
+  Sally's share is twice Frank's. Find Frank's and Sally's share.]
+make "ship [The gross weight of a ship is 20000 tons.
+  If its net weight is 15000 tons, what is the weight of the ships cargo?]
+make "span [If 1 span is 9 inches, and 1 fathom is 6 feet,
+  how many spans is 1 fathom?]
+make "sumtwo [The sum of two numbers is 96,
+  and one number is 16 larger than the other number. Find the two numbers.]
+make "tom [If the number of customers Tom gets is
+  twice the square of 20 per cent of the number of advertisements he runs,
+  and the number of advertisements he runs is 45,
+  what is the number of customers Tom gets?]
+make "uncle [Bill's father's uncle is twice as old as Bill's father.
+  2 years from now Bill's father will be 3 times as old as Bill.
+  The sum of their ages is 92 . Find Bill's age.]
+
+;; Initial data base
+
+pprop "distance "eqns ~
+  [[equal [distance] [product [speed] [time]]]
+   [equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "feet "eqns ~
+  [[equal [product 1 [feet]] [product 12 [inches]]]
+   [equal [product 1 [yards]] [product 3 [feet]]]]
+pprop "feet "sing "foot
+pprop "foot "plural "feet
+pprop "gallons "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "gas "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "inch "plural "inches
+pprop "inches "eqns [[equal [product 1 [feet]] [product 12 [inches]]]]
+pprop "people "sing "person
+pprop "person "plural "people
+pprop "speed "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "time "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "yards "eqns [[equal [product 1 [yards]] [product 3 [feet]]]]
+</PRE>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch5/v3ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch7/v3ch7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch6/atn.gif b/js/games/nluqo.github.io/~bh/v3ch6/atn.gif
new file mode 100644
index 0000000..071e226
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch6/atn.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch6/pattern.gif b/js/games/nluqo.github.io/~bh/v3ch6/pattern.gif
new file mode 100644
index 0000000..8d9139b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch6/pattern.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch6/sentence.gif b/js/games/nluqo.github.io/~bh/v3ch6/sentence.gif
new file mode 100644
index 0000000..980330e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch6/sentence.gif
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/v3ch6/student.lg b/js/games/nluqo.github.io/~bh/v3ch6/student.lg
new file mode 100644
index 0000000..0e3df7c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch6/student.lg
@@ -0,0 +1,1181 @@
+to student :prob
+say [The problem to be solved is] :prob
+make "prob map.se [depunct ?] :prob
+localmake "orgprob :prob
+student1 :prob ~
+         [[[the perimeter of ! rectangle]
+           [twice the sum of the length and width of the rectangle]]
+          [[two numbers] [one of the numbers and the other number]]
+          [[two numbers] [one number and the other number]]]
+end
+
+to student1 :prob :idioms
+local [simsen shelf aunits units wanted ans var lasteqn
+       ref eqt1 beg end idiom reply]
+make "prob idioms :prob
+if match [^ two numbers #] :prob ~
+   [make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms ~
+    tryidiom stop]
+while [match [^beg the the #end] :prob] [make "prob (sentence :beg "the :end)]
+say [With mandatory substitutions the problem is] :prob
+ifelse match [# @:in [[as old as] [age] [years old]] #] :prob ~
+       [ageprob] [make "simsen bracket :prob]
+lsay [The simple sentences are] :simsen
+foreach [aunits wanted ans var lasteqn ref units] [make ? []]
+make "shelf filter [not emptyp ?] map.se [senform ?] :simsen
+lsay [The equations to be solved are] :shelf
+make "units remdup :units
+if trysolve :shelf :wanted :units :aunits [print [The problem is solved.] stop]
+make "eqt1 remdup geteqns :var
+if not emptyp :eqt1 [lsay [Using the following known relationships] :eqt1]
+student2 :eqt1
+end
+
+to student2 :eqt1
+make "var remdup sentence (map.se [varterms ?] :eqt1) :var
+make "eqt1 sentence :eqt1 vartest :var
+if not emptyp :eqt1 ~
+   [if trysolve (sentence :shelf :eqt1) :wanted :units :aunits
+       [print [The problem is solved.] stop]]
+make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms
+if not emptyp :idiom [tryidiom stop]
+lsay [Do you know any more relationships among these variables?] :var
+make "reply readlist
+if equalp :reply [yes] [print [Tell me.] make "reply readlist]
+if equalp :reply [no] [print [] print [I can't solve this problem.] stop]
+make "reply map.se [depunct ?] :reply
+if dlm last :reply [make "reply butlast :reply]
+if not match [^beg is #end] :reply [print [I don't understand that.] stop]
+make "shelf sentence :shelf :eqt1
+student2 (list (list "equal opform :beg opform :end))
+end
+
+;; Mandatory substitutions
+
+to depunct :word
+if emptyp :word [output []]
+if equalp first :word "$ [output sentence "$ depunct butfirst :word]
+if equalp last :word "% [output sentence depunct butlast :word "percent]
+if memberp last :word [. ? |;| ,] [output sentence depunct butlast :word last :word]
+if emptyp butfirst :word [output :word]
+if equalp last2 :word "'s [output sentence depunct butlast butlast :word "s]
+output :word
+end
+
+to last2 :word
+output word (last butlast :word) (last :word)
+end
+
+to idioms :sent
+local "number
+output changes :sent ~
+    [[[the sum of] ["sum]] [[square of] ["square]] [[of] ["numof]]
+     [[how old] ["what]] [[is equal to] ["is]]
+     [[years younger than] [[less than]]] [[years older than] ["plus]]
+     [[percent less than] ["perless]] [[less than] ["lessthan]]
+     [[these] ["the]] [[more than] ["plus]]
+     [[first two numbers] [[the first number and the second number]]]
+     [[three numbers]
+      [[the first number and the second number and the third number]]]
+     [[one half] [0.5]] [[twice] [[2 times]]]
+     [[$ !number] [sentence :number "dollars]] [[consecutive to] [[1 plus]]]
+     [[larger than] ["plus]] [[per cent] ["percent]] [[how many] ["howm]]
+     [[is multiplied by] ["ismulby]] [[is divided by] ["isdivby]]
+     [[multiplied by] ["times]] [[divided by] ["divby]]]
+end
+
+to changes :sent :list
+localmake "keywords map.se [findkey first ?] :list
+output changes1 :sent :list :keywords
+end
+
+to findkey :pattern
+if equalp first :pattern "!:in [output first butfirst :pattern]
+if equalp first :pattern "?:in [output sentence (item 2 :pattern) (item 3 :pattern)]
+output first :pattern
+end
+
+to changes1 :sent :list :keywords
+if emptyp :sent [output []]
+if memberp first :sent :keywords [output changes2 :sent :list :keywords]
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes2 :sent :list :keywords
+changes3 :list :list
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes3 :biglist :nowlist
+if emptyp :nowlist [stop]
+if changeone first :nowlist [changes3 :biglist :biglist stop]
+changes3 :biglist butfirst :nowlist
+end
+
+to changeone :change
+local "end
+if not match (sentence first :change [#end]) :sent [output "false]
+make "sent run (sentence "sentence last :change ":end)
+output "true
+end
+
+;; Division into simple sentences
+
+to bracket :prob
+output bkt1 finddelim :prob
+end
+
+to finddelim :sent
+output finddelim1 :sent [] []
+end
+
+to finddelim1 :in :out :simples
+if emptyp :in ~
+   [ifelse emptyp :out [output :simples] [output lput (sentence :out ".) :simples]]
+if dlm first :in ~
+   [output finddelim1 (nocap butfirst :in) []
+                      (lput (sentence :out first :in) :simples)]
+output finddelim1 (butfirst :in) (sentence :out first :in) :simples
+end
+
+to nocap :words
+if emptyp :words [output []]
+if personp first :words [output :words]
+output sentence (lowercase first :words) butfirst :words
+end
+
+to bkt1 :problist
+local [first word rest]
+if emptyp :problist [output []]
+if not memberp ", first :problist ~
+   [output fput first :problist bkt1 butfirst :problist]
+if match [if ^first , !word:qword #rest] first :problist ~
+   [output bkt1 fput (sentence :first ".)
+                     fput (sentence :word :rest) butfirst :problist]
+if match [^first , and #rest] first :problist ~
+   [output fput (sentence :first ".) (bkt1 fput :rest butfirst :problist)]
+output fput first :problist bkt1 butfirst :problist
+end
+
+;; Age problems
+
+to ageprob
+local [beg end sym who num subj ages]
+while [match [^beg as old as #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg years old #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg will be when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg "in :sym [years . in] :sym "years :end)]
+while [match [^beg was when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg :sym [years ago .] :sym [years ago] :end)]
+while [match [^beg !who:personp will be in !num years #end] :prob] ~
+      [make "prob (sentence :beg :who [s age in] :num "years #end)]
+while [match [^beg was #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg will be #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg !who:personp is now #end] :prob] ~
+      [make "prob (sentence :beg :who [s age now] :end)]
+while [match [^beg !num years from now #end] :prob] ~
+      [make "prob (sentence :beg "in :num "years :end)]
+make "prob ageify :prob
+ifelse match [^ !who:personp ^end s age #] :prob ~
+       [make "subj sentence :who :end] [make "subj "someone]
+make "prob agepron :prob
+make "end :prob
+make "ages []
+while [match [^ !who:personp ^beg age #end] :end] ~
+      [push "ages (sentence "and :who :beg "age)]
+make "ages butfirst reduce "sentence remdup :ages
+while [match [^beg their ages #end] :prob] [make "prob (sentence :beg :ages :end)]
+make "simsen map [agesen ?] bracket :prob
+end
+
+to ageify :sent
+if emptyp :sent [output []]
+if not personp first :sent [output fput first :sent ageify butfirst :sent]
+catch "error [if equalp first butfirst :sent "s
+                 [output fput first :sent ageify butfirst :sent]]
+output (sentence first :sent [s age] ageify butfirst :sent)
+end
+
+to agepron :sent
+if emptyp :sent [output []]
+if not pronoun first :sent [output fput first :sent agepron butfirst :sent]
+if posspro first :sent [output (sentence :subj "s agepron butfirst :sent)]
+output (sentence :subj [s age] agepron butfirst :sent)
+end
+
+to agesen :sent
+local [when rest num]
+make "when []
+if match [in !num years #rest] :sent ~
+   [make "when sentence "pluss :num make "sent :rest]
+if match [!num years ago #rest] :sent ~
+   [make "when sentence "minuss :num make "sent :rest]
+output agewhen :sent
+end
+
+to agewhen :sent
+if emptyp :sent [output []]
+if not equalp first :sent "age [output fput first :sent agewhen butfirst :sent]
+if match [in !num years #rest] butfirst :sent ~
+   [output (sentence [age pluss] :num agewhen :rest)]
+if match [!num years ago #rest] butfirst :sent ~
+   [output (sentence [age minuss] :num agewhen :rest)]
+if equalp "now first butfirst :sent ~
+   [output sentence "age agewhen butfirst butfirst :sent]
+output (sentence "age :when agewhen butfirst :sent)
+end
+
+;; Translation from sentences into equations
+
+to senform :sent
+make "lasteqn senform1 :sent
+output :lasteqn
+end
+
+to senform1 :sent
+local [one two verb1 verb2 stuff1 stuff2 factor]
+if emptyp :sent [output []]
+if match [^ what are ^one and ^two !:dlm] :sent ~
+   [output fput (qset :one) (senform (sentence [what are] :two "?))]
+if match [^ what !:in [is are] #one !:dlm] :sent ~
+   [output (list qset :one)]
+if match [^ howm !one is #two !:dlm] :sent ~
+   [push "aunits (list :one) output (list qset :two)]
+if match [^ howm ^one do ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "have))]
+if match [^ howm ^one does ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "has))]
+if match [^ find ^one and #two] :sent ~
+   [output fput (qset :one) (senform sentence "find :two)]
+if match [^ find #one !:dlm] :sent [output (list qset :one)]
+make "sent filter [not article ?] :sent
+if match [^one ismulby #two] :sent ~
+   [push "ref (list "product opform :one opform :two) output []]
+if match [^one isdivby #two] :sent ~
+   [push "ref (list "quotient opform :one opform :two) output []]
+if match [^one is increased by #two] :sent ~
+   [push "ref (list "sum opform :one opform :two) output []]
+if match [^one is #two] :sent ~
+   [output (list (list "equal opform :one opform :two))]
+if match [^one !verb1:verb ^factor as many ^stuff1 as
+          ^two !verb2:verb ^stuff2 !:dlm] ~
+         :sent ~
+   [if emptyp :stuff2 [make "stuff2 :stuff1]
+    output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (sentence :factor [the number of] :stuff2 :two :verb2)))]
+if match [^one !verb1:verb !factor:numberp #stuff1 !:dlm] :sent ~
+   [output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (list :factor)))]
+say [This sentence form is not recognized:] :sent
+throw "error
+end
+
+to qset :sent
+localmake "opform opform filter [not article ?] :sent
+if not operatorp first :opform ~
+   [queue "wanted :opform queue "ans list :opform oprem :sent output []]
+localmake "gensym gensym
+queue "wanted :gensym
+queue "ans list :gensym oprem :sent
+output (list "equal :gensym opform (filter [not article ?] :sent))
+end
+
+to oprem :sent
+output map [ifelse equalp ? "numof ["of] [?]] :sent
+end
+
+to opform :expr
+local [left right op]
+if match [^left !op:op2 #right] :expr [output optest :op :left :right]
+if match [^left !op:op1 #right] :expr [output optest :op :left :right]
+if match [^left !op:op0 #right] :expr [output optest :op :left :right]
+if match [#left !:dlm] :expr [make "expr :left]
+output nmtest filter [not article ?] :expr
+end
+
+to optest :op :left :right
+output run (list (word "tst. :op) :left :right)
+end
+
+to tst.numof :left :right
+if numberp last :left [output (list "product opform :left opform :right)]
+output opform (sentence :left "of :right)
+end
+
+to tst.divby :left :right
+output (list "quotient opform :left opform :right)
+end
+
+to tst.tothepower :left :right
+output (list "expt opform :left opform :right)
+end
+
+to expt :num :pow
+if :pow < 1 [output 1]
+output :num * expt :num :pow - 1
+end
+
+to tst.per :left :right
+output (list "quotient ~
+          opform :left ~
+          opform (ifelse numberp first :right [:right] [fput 1 :right]))
+end
+
+to tst.lessthan :left :right
+output opdiff opform :right opform :left
+end
+
+to opdiff :left :right
+output (list "sum :left (list "minus :right))
+end
+
+to tst.minus :left :right
+if emptyp :left [output list "minus opform :right]
+output opdiff opform :left opform :right
+end
+
+to tst.minuss :left :right
+output tst.minus :left :right
+end
+
+to tst.sum :left :right
+local [one two three]
+if match [^one and ^two and #three] :right ~
+   [output (list "sum opform :one opform (sentence "sum :two "and :three))]
+if match [^one and #two] :right ~
+   [output (list "sum opform :one opform :two)]
+say [sum used wrong:] :right
+throw "error
+end
+
+to tst.squared :left :right
+output list "square opform :left
+end
+
+to tst.difference :left :right
+local [one two]
+if match [between ^one and #two] :right [output opdiff opform :one opform :two]
+say [Incorrect use of difference:] :right
+throw "error
+end
+
+to tst.plus :left :right
+output (list "sum opform :left opform :right)
+end
+
+to tst.pluss :left :right
+output tst.plus :left :right
+end
+
+to square :x
+output :x * :x
+end
+
+to tst.square :left :right
+output list "square opform :right
+end
+
+to tst.percent :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output opform (sentence butlast :left ((last :left) / 100) :right)
+end
+
+to tst.perless :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output (list "product ~
+          (opform sentence butlast :left ((100 - (last :left)) / 100)) ~
+          opform :right)
+end
+
+to tst.times :left :right
+if emptyp :left [say [Incorrect use of times:] :right throw "error]
+output (list "product opform :left opform :right)
+end
+
+to nmtest :expr
+if match [& !:numberp #] :expr [say [argument error:] :expr throw "error]
+if and (equalp first :expr 1) (1 < count :expr) ~
+   [make "expr (sentence 1 plural (first butfirst :expr) (butfirst butfirst :expr))]
+if and (numberp first :expr) (1 < count :expr) ~
+   [push "units (list first butfirst :expr) ~
+    output (list "product (first :expr) (opform butfirst :expr))]
+if numberp first :expr [output first :expr]
+if memberp "this :expr [output this :expr]
+if not memberp :expr :var [push "var :expr]
+output :expr
+end
+
+to this :expr
+if not emptyp :ref [output pop "ref]
+if not emptyp :lasteqn [output first butfirst last :lasteqn]
+if equalp first :expr "this [make "expr butfirst :expr]
+push "var :expr
+output :expr
+end
+
+;; Solving the equations
+
+to trysolve :shelf :wanted :units :aunits
+local "solution
+make "solution solve :wanted :shelf (ifelse emptyp :aunits [:units] [:aunits])
+output pranswers :ans :solution
+end
+
+to solve :wanted :eqt :terms
+output solve.reduce solver :wanted :terms [] [] "insufficient
+end
+
+to solve.reduce :soln
+if emptyp :soln [output []]
+if wordp :soln [output :soln]
+if emptyp butfirst :soln [output :soln]
+local "part
+make "part solve.reduce butfirst :soln
+output fput (list (first first :soln) (subord last first :soln :part)) :part
+end
+
+to solver :wanted :terms :alis :failed :err
+local [one result restwant]
+if emptyp :wanted [output :err]
+make "one solve1 (first :wanted) ~
+                 (sentence butfirst :wanted :failed :terms) ~
+                 :alis :eqt [] "insufficient
+if wordp :one ~
+   [output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one]
+make "restwant (sentence :failed butfirst :wanted)
+if emptyp :restwant [output :one]
+make "result solver :restwant :terms :one [] "insufficient
+if listp :result [output :result]
+output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one
+end
+
+to solve1 :x :terms :alis :eqns :failed :err
+local [thiseq vars extras xterms others result]
+if emptyp :eqns [output :err]
+make "thiseq subord (first :eqns) :alis
+make "vars varterms :thiseq
+if not memberp :x :vars ~
+   [output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :err]
+make "xterms fput :x :terms
+make "extras setminus :vars :xterms
+make "eqt remove (first :eqns) :eqt
+if not emptyp :extras ~
+   [make "others solver :extras :xterms :alis [] "insufficient
+    ifelse wordp :others
+           [make "eqt sentence :failed :eqns
+            output solve1 :x :terms :alis (butfirst :eqns)
+                      (fput first :eqns :failed) :others]
+           [make "alis :others
+            make "thiseq subord (first :eqns) :alis]]
+make "result solveq :x :thiseq
+if listp :result [output lput :result :alis]
+make "eqt sentence :failed :eqns
+output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :result
+end
+
+to solveq :var :eqn
+local [left right]
+make "left first butfirst :eqn
+ifelse occvar :var :left ~
+   [make "right last :eqn] [make "right :left make "left last :eqn]
+output solveq1 :left :right "true
+end
+
+to solveq1 :left :right :bothtest
+if :bothtest [if occvar :var :right [output solveqboth :left :right]]
+if equalp :left :var [output list :var :right]
+if wordp :left [output "unsolvable]
+local "oper
+make "oper first :left
+if memberp :oper [sum product minus quotient] [output run (list word "solveq. :oper)]
+output "unsolvable
+end
+
+to solveqboth :left :right
+if not equalp first :right "sum [output solveq1 (subterm :left :right) 0 "false]
+output solveq.rplus :left butfirst :right []
+end
+
+to solveq.rplus :left :right :newright
+if emptyp :right [output solveq1 :left (simone "sum :newright) "false]
+if occvar :var first :right ~
+   [output solveq.rplus (subterm :left first :right) butfirst :right :newright]
+output solveq.rplus :left butfirst :right (fput first :right :newright)
+end
+
+to solveq.sum
+if emptyp butfirst butfirst :left [output solveq1 first butfirst :left :right "true]
+output solveq.sum1 butfirst :left :right []
+end
+
+to solveq.sum1 :left :right :newleft
+if emptyp :left [output solveq.sum2]
+if occvar :var first :left ~
+   [output solveq.sum1 butfirst :left :right fput first :left :newleft]
+output solveq.sum1 butfirst :left (subterm :right first :left) :newleft
+end
+
+to solveq.sum2
+if emptyp butfirst :newleft [output solveq1 first :newleft :right "true]
+localmake "factor factor :newleft :var
+if equalp first :factor "unknown [output "unsolvable]
+if equalp last :factor 0 [output "unsolvable]
+output solveq1 first :factor (divterm :right last :factor) "true
+end
+
+to solveq.minus
+output solveq1 (first butfirst :left) (minusin :right) "false
+end
+
+to solveq.product
+output solveq.product1 :left :right
+end
+
+to solveq.product1 :left :right
+if emptyp butfirst butfirst :left [output solveq1 (first butfirst :left) :right "true]
+if not occvar :var first butfirst :left ~
+   [output solveq.product1 (fput "product butfirst butfirst :left)
+                           (divterm :right first butfirst :left)]
+localmake "rest simone "product butfirst butfirst :left
+if occvar :var :rest [output "unsolvable]
+output solveq1 (first butfirst :left) (divterm :right :rest) "false
+end
+
+to solveq.quotient
+if occvar :var first butfirst :left ~
+   [output solveq1 (first butfirst :left) (simtimes list :right last :left) "true]
+output solveq1 (simtimes list :right last :left) (first butfirst :left) "true
+end
+
+to denom :fract :addends
+make "addends simplus :addends
+localmake "den last :fract
+if not equalp first :addends "quotient ~
+   [output simdiv list (simone "sum
+                               (remop "sum list (distribtimes (list :addends) :den)
+                                                first butfirst :fract))
+                       :den]
+if equalp :den last :addends ~
+   [output simdiv (simplus list (first butfirst :fract) (first butfirst :addends))
+                  :den]
+localmake "lowterms simdiv list :den last :addends
+output simdiv list (simplus (simtimes list first butfirst :fract last :lowterms)
+                            (simtimes list first butfirst :addends
+                                           first butfirst :lowterms)) ~
+                   (simtimes list first butfirst :lowterms last :addends)
+end
+
+to distribtimes :trms :multiplier
+output simplus map [simtimes (list ? :multiplier)] :trms
+end
+
+to distribx :expr
+local [oper args]
+if emptyp :expr [output :expr]
+make "oper first :expr
+if not operatorp :oper [output :expr]
+make "args map [distribx ?] butfirst :expr
+if reduce "and map [numberp ?] :args [output run (sentence [(] :oper :args [)])]
+if equalp :oper "sum [output simplus :args]
+if equalp :oper "minus [output minusin first :args]
+if equalp :oper "product [output simtimes :args]
+if equalp :oper "quotient [output simdiv :args]
+output fput :oper :args
+end
+
+to divterm :dividend :divisor
+if equalp :dividend 0 [output 0]
+output simdiv list :dividend :divisor
+end
+
+to factor :exprs :var
+local "trms
+make "trms map [factor1 :var ?] :exprs
+if memberp "unknown :trms [output fput "unknown :exprs]
+output list :var simplus :trms
+end
+
+to factor1 :var :expr
+localmake "negvar minusin :var
+if equalp :var :expr [output 1]
+if equalp :negvar :expr [output -1]
+if emptyp :expr [output "unknown]
+if equalp first :expr "product [output factor2 butfirst :expr]
+if not equalp first :expr "quotient [output "unknown]
+localmake "dividend first butfirst :expr
+if equalp :var :dividend [output (list "quotient 1 last :expr)]
+if not equalp first :dividend "product [output "unknown]
+localmake "result factor2 butfirst :dividend
+if equalp :result "unknown [output "unknown]
+output (list "quotient :result last :expr)
+end
+
+to factor2 :trms
+if memberp :var :trms [output simone "product (remove :var :trms)]
+if memberp :negvar :trms [output minusin simone "product (remove :negvar :trms)]
+output "unknown
+end
+
+to maybeadd :num :rest
+if equalp :num 0 [output :rest]
+output fput :num :rest
+end
+
+to maybemul :num :rest
+if equalp :num 1 [output :rest]
+output fput :num :rest
+end
+
+to minusin :expr
+if emptyp :expr [output -1]
+if equalp first :expr "sum [output fput "sum map [minusin ?] butfirst :expr]
+if equalp first :expr "minus [output last :expr]
+if memberp first :expr [product quotient] ~
+   [output fput first :expr
+                (fput (minusin first butfirst :expr) butfirst butfirst :expr)]
+if numberp :expr [output minus :expr]
+output list "minus :expr
+end
+
+to occvar :var :expr
+if emptyp :expr [output "false]
+if wordp :expr [output equalp :var :expr]
+if operatorp first :expr [output not emptyp find [occvar :var ?] butfirst :expr]
+output equalp :var :expr
+end
+
+to remfactor :num :den
+foreach butfirst :num [remfactor1 ?]
+output (list "quotient (simone "product butfirst :num) (simone "product butfirst :den))
+end
+
+to remfactor1 :expr
+local "neg
+if memberp :expr :den ~
+   [make "num remove :expr :num  make "den remove :expr :den  stop]
+make "neg minusin :expr
+if not memberp :neg :den [stop]
+make "num remove :expr :num
+make "den minusin remove :neg :den
+end
+
+to remop :oper :exprs
+output map.se [ifelse equalp first ? :oper [butfirst ?] [(list ?)]] :exprs
+end
+
+to simdiv :list
+local [num den numop denop]
+make "num first :list
+make "den last :list
+if equalp :num :den [output 1]
+if numberp :den [output simtimes (list (quotient 1 :den) :num)]
+make "numop first :num
+make "denop first :den
+if equalp :numop "quotient ~
+   [output simdiv list (first butfirst :num) (simtimes list last :num :den)]
+if equalp :denop "quotient ~
+   [output simdiv list (simtimes list :num last :den) (first butfirst :den)]
+if and equalp :numop "product equalp :denop "product [output remfactor :num :den]
+if and equalp :numop "product memberp :den :num [output remove :den :num]
+output fput "quotient :list
+end
+
+to simone :oper :trms
+if emptyp :trms [output ifelse equalp :oper "product [1] [0]]
+if emptyp butfirst :trms [output first :trms]
+output fput :oper :trms
+end
+
+to simplus :exprs
+make "exprs remop "sum :exprs
+localmake "factor [unknown]
+catch "simplus ~
+      [foreach :terms ~
+               [make "factor (factor :exprs ?) ~
+                if not equalp first :factor "unknown [throw "simplus]]]
+if not equalp first :factor "unknown [output fput "product remop "product :factor]
+localmake "nums 0
+localmake "nonnums []
+localmake "quick []
+catch "simplus [simplus1 :exprs]
+if not emptyp :quick [output :quick]
+if not equalp :nums 0 [push "nonnums :nums]
+output simone "sum :nonnums
+end
+
+to simplus1 :exprs
+if emptyp :exprs [stop]
+simplus2 first :exprs
+simplus1 butfirst :exprs
+end
+
+to simplus2 :pos
+local "neg
+make "neg minusin :pos
+if numberp :pos [make "nums sum :pos :nums stop]
+if memberp :neg butfirst :exprs [make "exprs remove :neg :exprs stop]
+if equalp first :pos "quotient ~
+   [make "quick (denom :pos (maybeadd :nums sentence :nonnums butfirst :exprs)) ~
+    throw "simplus]
+push "nonnums :pos
+end
+
+to simtimes :exprs
+local [nums nonnums quick]
+make "nums 1
+make "nonnums []
+make "quick []
+catch "simtimes [foreach remop "product :exprs [simtimes1 ?]]
+if not emptyp :quick [output :quick]
+if equalp :nums 0 [output 0]
+if not equalp :nums 1 [push "nonnums :nums]
+output simone "product :nonnums
+end
+
+to simtimes1 :expr
+if equalp :expr 0 [make "nums 0 throw "simtimes]
+if numberp :expr [make "nums product :expr :nums stop]
+if equalp first :expr "sum ~
+   [make "quick distribtimes (butfirst :expr)
+                             (simone "product maybemul :nums sentence :nonnums ?rest)
+    throw "simtimes]
+if equalp first :expr "quotient ~
+   [make "quick
+          simdiv (list (simtimes (list (first butfirst :expr)
+                                       (simone "product
+                                               maybemul :nums
+                                                        sentence :nonnums ?rest)))
+                       (last :expr))
+    throw "simtimes]
+push "nonnums :expr
+end
+
+to subord :expr :alist
+output distribx subord1 :expr :alist
+end
+
+to subord1 :expr :alist
+if emptyp :alist [output :expr]
+output subord (substop (last first :alist) (first first :alist) :expr) ~
+              (butfirst :alist)
+end
+
+to substop :val :var :expr
+if emptyp :expr [output []]
+if equalp :expr :var [output :val]
+if not operatorp first :expr [output :expr]
+output fput first :expr map [substop :val :var ?] butfirst :expr
+end
+
+to subterm :minuend :subtrahend
+if equalp :minuend 0 [output minusin :subtrahend]
+if equalp :minuend :subtrahend [output 0]
+output simplus (list :minuend minusin :subtrahend)
+end
+
+to varterms :expr
+if emptyp :expr [output []]
+if numberp :expr [output []]
+if wordp :expr [output (list :expr)]
+if operatorp first :expr [output map.se [varterms ?] butfirst :expr]
+output (list :expr)
+end
+
+;; Printing the solutions
+
+to pranswers :ans :solution
+print []
+if equalp :solution "unsolvable ~
+   [print [Unable to solve this set of equations.] output "false]
+if equalp :solution "insufficient ~
+   [print [The equations were insufficient to find a solution.] output "false]
+localmake "gotall "true
+foreach :ans [if prans ? :solution [make "gotall "false]]
+if not :gotall [print [] print [Unable to solve this set of equations.]]
+output :gotall
+end
+
+to prans :ans :solution
+localmake "result find [equalp first ? first :ans] :solution
+if emptyp :result [output "true]
+print (sentence cap last :ans "is unitstring last :result)
+print []
+output "false
+end
+
+to unitstring :expr
+if numberp :expr [output roundoff :expr]
+if equalp first :expr "product ~
+   [output sentence (unitstring first butfirst :expr)
+                    (reduce "sentence butfirst butfirst :expr)]
+if (and (listp :expr)
+         (not numberp first :expr)
+         (not operatorp first :expr)) ~
+   [output (sentence 1 (singular first :expr) (butfirst :expr))]
+output :expr
+end
+
+to roundoff :num
+if (abs (:num - round :num)) < 0.0001 [output round :num]
+output :num
+end
+
+to abs :num
+output ifelse (:num < 0) [-:num] [:num]
+end
+
+;; Using known relationships
+
+to geteqns :vars
+output map.se [gprop varkey ? "eqns] :vars
+end
+
+to varkey :var
+local "word
+if match [number of !word #] :var [output :word]
+output first :var
+end
+
+;; Assuming equality of similar variables
+
+to vartest :vars
+if emptyp :vars [output []]
+local [var beg end]
+make "var first :vars
+output (sentence (ifelse match [^beg !:pronoun #end] :var
+                         [vartest1 :var (sentence :beg "& :end) butfirst :vars]
+                         [[]])
+                 (vartest1 :var (sentence "# :var "#) butfirst :vars)
+                 (vartest butfirst :vars))
+end
+
+to vartest1 :target :pat :vars
+output map [varequal :target ?] filter [match :pat ?] :vars
+end
+
+to varequal :target :var
+print []
+print [Assuming that]
+print (sentence (list :target) [is equal to] (list :var))
+output (list "equal :target :var)
+end
+
+;; Optional substitutions
+
+to tryidiom
+make "prob (sentence :beg last :idiom :end)
+while [match (sentence "^beg first :idiom "#end) :prob] ~
+      [make "prob (sentence :beg last :idiom :end)]
+say [The problem with an idiomatic substitution is] :prob
+student1 :prob (remove :idiom :idioms)
+end
+
+;; Utility procedures
+
+to qword :word
+output memberp :word [find what howm how]
+end
+
+to dlm :word
+output memberp :word [. ? |;|]
+end
+
+to article :word
+output memberp :word [a an the]
+end
+
+to verb :word
+output memberp :word [have has get gets weigh weighs]
+end
+
+to personp :word
+output memberp :word [Mary Ann Bill Tom Sally Frank father uncle]
+end
+
+to pronoun :word
+output memberp :word [he she it him her they them his her its]
+end
+
+to posspro :word
+output memberp :word [his her its]
+end
+
+to op0 :word
+output memberp :word [pluss minuss squared tothepower per sum difference numof]
+end
+
+to op1 :word
+output memberp :word [times divby square]
+end
+
+to op2 :word
+output memberp :word [plus minus lessthan percent perless]
+end
+
+to operatorp :word
+output memberp :word [sum minus product quotient expt square equal]
+end
+
+to plural :word
+localmake "plural gprop :word "plural
+if not emptyp :plural [output :plural]
+if not emptyp gprop :word "sing [output :word]
+if equalp last :word "s [output :word]
+output word :word "s
+end
+
+to singular :word
+localmake "sing gprop :word "sing
+if not emptyp :sing [output :sing]
+if not emptyp gprop :word "plural [output :word]
+if equalp last :word "s [output butlast :word]
+output :word
+end
+
+to setminus :big :little
+output filter [not memberp ? :little] :big
+end
+
+to say :herald :text
+print []
+print :herald
+print []
+print :text
+print []
+end
+
+to lsay :herald :text
+print []
+print :herald
+print []
+foreach :text [print cap ? print []]
+end
+
+to cap :sent
+if emptyp :sent [output []]
+output sentence (word uppercase first first :sent butfirst first :sent) ~
+                butfirst :sent
+end
+
+;; The pattern matcher
+
+to match :pat :sen
+if prematch :pat :sen [output rmatch :pat :sen]
+output "false
+end
+
+to prematch :pat :sen
+if emptyp :pat [output "true]
+if listp first :pat [output prematch butfirst :pat :sen]
+if memberp first first :pat [! @ # ^ & ?] [output prematch butfirst :pat :sen]
+if emptyp :sen [output "false]
+localmake "rest member first :pat :sen
+if not emptyp :rest [output prematch butfirst :pat :rest]
+output "false
+end
+
+to rmatch :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen [output rmatch butfirst :pat butfirst :sen]
+output "false
+end
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output rmatch butfirst :pat butfirst :sen
+end
+
+to match?
+make :special.var []
+if emptyp :sen [output rmatch butfirst :pat :sen]
+if not try.pred [output rmatch butfirst :pat :sen]
+make :special.var first :sen
+if rmatch butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output rmatch butfirst :pat :sen
+end
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if rmatch butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+to try.pred
+if listp :special.pred [output rmatch :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output rmatch :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if rmatch first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
+
+;; Sample word problems
+
+make "ann [Mary is twice as old as Ann was when Mary was as old as Ann is now.
+  If Mary is 24 years old, how old is Ann?]
+make "guns [The number of soldiers the Russians have is
+  one half of the number of guns they have. They have 7000 guns.
+  How many soldiers do they have?]
+make "jet [The distance from New York to Los Angeles is 3000 miles.
+  If the average speed of a jet plane is 600 miles per hour,
+  find the time it takes to travel from New York to Los Angeles by jet.]
+make "nums [A number is multiplied by 6 . This product is increased by 44 .
+  This result is 68 . Find the number.]
+make "radio [The price of a radio is $69.70.
+  If this price is 15 percent less than the marked price, find the marked price.]
+make "sally [The sum of Sally's share of some money and Frank's share is $4.50.
+  Sally's share is twice Frank's. Find Frank's and Sally's share.]
+make "ship [The gross weight of a ship is 20000 tons.
+  If its net weight is 15000 tons, what is the weight of the ships cargo?]
+make "span [If 1 span is 9 inches, and 1 fathom is 6 feet,
+  how many spans is 1 fathom?]
+make "sumtwo [The sum of two numbers is 96,
+  and one number is 16 larger than the other number. Find the two numbers.]
+make "tom [If the number of customers Tom gets is
+  twice the square of 20 per cent of the number of advertisements he runs,
+  and the number of advertisements he runs is 45,
+  what is the number of customers Tom gets?]
+make "uncle [Bill's father's uncle is twice as old as Bill's father.
+  2 years from now Bill's father will be 3 times as old as Bill.
+  The sum of their ages is 92 . Find Bill's age.]
+
+;; Initial data base
+
+pprop "distance "eqns ~
+  [[equal [distance] [product [speed] [time]]]
+   [equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "feet "eqns ~
+  [[equal [product 1 [feet]] [product 12 [inches]]]
+   [equal [product 1 [yards]] [product 3 [feet]]]]
+pprop "feet "sing "foot
+pprop "foot "plural "feet
+pprop "gallons "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "gas "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "inch "plural "inches
+pprop "inches "eqns [[equal [product 1 [feet]] [product 12 [inches]]]]
+pprop "people "sing "person
+pprop "person "plural "people
+pprop "speed "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "time "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "yards "eqns [[equal [product 1 [yards]] [product 3 [feet]]]]
diff --git a/js/games/nluqo.github.io/~bh/v3ch6/v3ch6.html b/js/games/nluqo.github.io/~bh/v3ch6/v3ch6.html
new file mode 100644
index 0000000..631abbf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch6/v3ch6.html
@@ -0,0 +1,3070 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3 ch 6: Artificial Intelligence</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Artificial Intelligence</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch06.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch5/v3ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch7/v3ch7.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR><P>Program file for this chapter: <A HREF="student.lg"><CODE>student</CODE></A>
+
+
+<P>
+
+<P>Can a computer be intelligent?  What would it mean for a computer to be
+intelligent?  John McCarthy, one of the founders of
+artificial intelligence
+research, once defined the field as &quot;getting a computer to do things which,
+when done by people, are said to involve intelligence.&quot; The point of the
+definition was that he felt perfectly comfortable about carrying on his
+research without first having to defend any particular philosophical view of
+what the word &quot;intelligence&quot; means.
+
+<P>There have always been two points of view among AI researchers about what
+their purpose is.  One point of view is that AI programs contribute to our
+understanding of <EM>human</EM> psychology; when researchers take this view
+they try to make their programs reflect the actual mechanisms of intelligent
+human behavior.  For example, Allen Newell and
+Herbert A. Simon begin their
+classic AI book <EM>Human Problem Solving</EM> with the sentence, &quot;The aim
+of this book is to advance our understanding of how humans think.&quot; In one
+of their research projects they studied cryptarithmetic problems, in which
+digits are replaced with letters in a multi-digit addition or multiplication.
+First they did a careful observation and analysis of how a human subject
+attacked such a problem, then they pointed out specific problem-solving
+techniques that the person used, and used those techniques as the basis for
+designing a computer simulation.  The other point of view
+is that AI programs provide a more abstract model for intelligence in
+general; just as one can learn about the properties of computers by studying
+finite-state machines, even though no real computer operates precisely as a
+formal finite-state machine does, we can learn about the properties of any
+possible intelligent being by simulating intelligence in a computer program,
+whether or not the mechanisms of that program are similar to those used by
+people.
+
+<P>In the early days of AI research these two points of view were not sharply
+divided.  Sometimes the same person would switch from one to the other,
+sometimes trying to model human thought processes and sometimes trying to
+solve a given problem by whatever methods could be made to work.  More
+recently, researchers who hold one or the other point of view consistently
+have begun to define two separate fields.  One is <EM>
+cognitive science,</EM> in which computer scientists join with
+psychologists, linguists, biologists, and others to study human cognitive
+psychology, using computer programs as a concrete embodiment of theories
+about the human mind.  The other is called <EM>expert systems</EM>
+or <EM>knowledge engineering,</EM> in which programming techniques
+developed by AI researchers are put to practical use in programs that solve
+real-world business problems such as the diagnosis and repair of
+malfunctioning equipment.
+
+<P><H2>Microworlds: Student</H2>
+
+<P>In this chapter I'm going to concentrate on one particular area of AI
+research: teaching a computer to understand English.  Besides its inherent
+interest, this area has the advantage that it doesn't require special
+equipment, as do some other parts of AI such as machine vision and the
+control of robot manipulators.
+
+<P>In the 1950s many people were very optimistic about the use of computers to
+translate from one language to another.  IBM undertook a government-sponsored
+project to translate scientific journals from Russian to English.  At first
+they thought that this translation could be done very straightforwardly,
+with a Russian-English dictionary and a few little kludges to rearrange the
+order of words in a sentence to account for differences in the grammatical
+structure of the two languages.  This simple approach was not successful.
+One problem is that the same word can have different meanings, and even
+different parts of speech, in different contexts.  (According to one famous
+anecdote, the program translated the Russian equivalent of &quot;The spirit is
+willing but the flesh is weak&quot; into &quot;The vodka is strong but the meat is
+rotten.&quot;)
+
+<P>A decade later, several AI researchers had the idea that ambiguities in the
+meanings of words could be resolved by trying to understand English only in
+some limited context.  If you know in advance that the sentence you're
+trying to understand is about baseball statistics, or about relationships in
+a family tree, or about telling a robot arm to move blocks on a table (these
+are actual examples of work done in that period) then only certain narrowly
+defined types of sentences are meaningful at all.  You needn't think about
+metaphors or about the many assumptions about commonsense knowledge that
+people make in talking with one another.  Such a limited context for a
+language understanding program is called a <EM>microworld.</EM>
+
+<P>This chapter includes a Logo version of Student, a program written by
+Daniel G. Bobrow for his 1964 Ph.D. thesis, <EM>Natural
+Language Input for a Computer Problem Solving System,</EM> at MIT.  Student
+is a program that solves algebra word problems:
+
+<P><PRE>? <U>student [The price of a radio is 69.70. If this price is 15 percent</U>
+           <U>less than the marked price, find the marked price.]</U>
+
+The marked price is 82 dollars
+</PRE>
+
+<P>(In this illustration I've left out some of Student's display of
+intermediate results.)  The program has two parts: one that translates the
+word problem into the form of equations and another that solves the
+equations.  The latter part is complex (about 40 Logo procedures) but
+straightforward; it doesn't seem surprising to most people that a computer
+can manipulate mathematical equations.  It is Student's understanding of
+English sentences that furthered the cause of artificial intelligence.
+
+<BLOCKQUOTE>
+<P><A NAME="bobrow1">The aim</A> of the
+research reported here was to discover how one could build a
+computer program which could communicate with people in a natural language
+within some restricted problem domain.  In the course of this investigation,
+I wrote a set of computer programs, the Student system, which accepts as
+input a comfortable but restricted subset of English which can be used to
+express a wide variety of algebra story problems...
+
+<P>In the following discussion, I shall use phrases such as &quot;the computer
+understands English.&quot;  In all such cases, the &quot;English&quot; is just the
+restricted subset of English which is allowable as input for the computer
+program under discussion.  In addition, for purposes of this report I have
+adopted the following operational definition of understanding.  A computer
+<EM>understands</EM> a subset of English if it accepts input sentences which
+are members of this subset, and answers questions based on information
+contained in the input.  The Student system understands English in this
+sense.  [Bobrow, 1964.]
+</BLOCKQUOTE>
+
+<P>How does the algebra microworld simplify the understanding problem?  For one
+thing, Student need not know anything about the meanings of noun phrases.
+In the sample problem above, the phrase <CODE>The price of a radio</CODE> is used
+as a variable name.  The problem could just as well have been
+
+<P><PRE>The weight of a giant size detergent box is 69.70 ounces.  If this weight
+is 15 percent less than the weight of an enormous size box, find the
+weight of an enormous size box.
+</PRE>
+
+<P>For Student, either problem boils down to
+
+<P><PRE><EM>variable1</EM> = 69.70 <EM>units</EM>
+
+<EM>variable1</EM> = 0.85 * <EM>variable2</EM>
+
+Find <EM>variable2</EM>.
+</PRE>
+
+<P>Student understands particular words only to the extent that they
+have a <EM>mathematical</EM> meaning.  For example, the program knows that
+<CODE>15 percent less than</CODE> means the same as <CODE>0.85 times</CODE>.
+
+<P><H2>How Student Translates English to Algebra</H2>
+
+<P>Student translates a word problem into equations in several steps.  In the
+following paragraphs, I'll mention in parentheses the names of the Logo
+procedures that carry out each step I describe, but don't read the
+procedures yet.  First read through the description of the process without
+worrying about the programming details of each step.  Later you can reread
+this section while examining the complete listing at the end of the chapter.
+
+<P>In translating Student to Logo, I've tried not to change the capabilities of
+the program in any way.  The overall structure of my version is similar to
+that of Bobrow's original implementation, but I've changed some details.
+I've used iteration and mapping tools to make the program easier to read;
+I've changed some aspects of the fine structure of the program to fit more
+closely with the usual Logo programming style; in a few cases I've tried to
+make exceptionally slow parts of the program run faster by finding a more
+efficient algorithm to achieve the same goal.
+
+<P>The top-level procedure <CODE>student</CODE> takes one input, a list containing the
+word problem.  (The disk file that accompanies this project includes several
+variables containing sample problems.  For example,
+
+<P><PRE>? <U>student :radio</U>
+</PRE>
+
+<P>will carry out the steps I'm about to describe.)  Student begins
+by printing the original problem:
+
+<P><PRE>? <U>student :radio</U>
+
+The problem to be solved is
+
+The price of a radio is 69.70. If this price is 15 percent less than the
+marked price, find the marked price.
+</PRE>
+
+<P>The first step is to separate punctuation characters from the
+attached words.  For example, the word &quot;<CODE>price,</CODE>&quot; in the original problem
+becomes the two words &quot;<CODE>price ,</CODE>&quot; with the comma on its own.  Then
+(<CODE>student1</CODE>) certain <EM>mandatory substitutions</EM> are applied
+(<CODE>idioms</CODE>).  For example, the phrase <CODE>percent less than</CODE> is translated
+into the single word <CODE>perless</CODE>.  The result is printed:
+
+<P><PRE>With mandatory substitutions the problem is
+
+The price numof a radio is 69.70 dollars . If this price is 15 perless
+the marked price , find the marked price .
+</PRE>
+
+<P>(The word <CODE>of</CODE> in an algebra word problem can have two
+different meanings.  Sometimes it means &quot;times,&quot; as in the phrase
+&quot;one half of the population.&quot; Other times, as in this problem, &quot;of&quot; is
+just part of a noun phrase like &quot;the price of a radio.&quot; The special word
+<CODE>numof</CODE> is a flag to a later part of the program and will then be
+further translated either into <CODE>times</CODE> or back into <CODE>of</CODE>.  The
+original implementation of Student used, instead of a special word like <CODE>
+numof</CODE>, a &quot;tagged&quot; word represented as a list like <CODE>[of / op]</CODE>.  Other
+examples of tagging are <CODE>[Bill / person]</CODE> and <CODE>[has / verb]</CODE>.)
+
+<P>
+
+<P>The next step is to separate the problem into simple sentences (<CODE>bracket</CODE>):
+
+<P><PRE>The simple sentences are
+
+The price numof a radio is 69.70 dollars .
+
+This price is 15 perless the marked price .
+
+Find the marked price .
+</PRE>
+
+<P>Usually this transformation of the problem is straightforward, but
+the special case of &quot;age problems&quot; is recognized at this time, and special
+transformations are applied so that a sentence like
+
+<P><PRE>Mary is 24 years old.
+</PRE>
+
+<P>is translated into
+
+<P><PRE>Mary s age is 24 .
+</PRE>
+
+<P>An age problem is one that contains any of the phrases <CODE>as old
+as</CODE>, <CODE>age</CODE>, or <CODE>years old</CODE>.
+
+<P>The next step is to translate each simple sentence into an equation or a
+variable whose value is desired as part of the solution (<CODE>senform</CODE>).
+
+<P><PRE>The equations to be solved are
+
+Equal [price of radio] [product 69.7 [dollars]]
+
+Equal [price of radio] [product 0.85 [marked price]]
+</PRE>
+
+<P>The third simple sentence is translated, not into an equation, but
+into a request to solve these equations for the variable <CODE>marked price</CODE>.
+
+<P>The translation of simple sentences into equations is the most
+&quot;intelligent&quot; part of the program; that is, it's where the program's
+knowledge of English grammar and vocabulary come into play and many special
+cases must be considered.  In this example, the second simple sentence
+starts with the phrase <CODE>this price</CODE>.  The program recognizes the word
+<CODE>this</CODE> (procedure <CODE>nmtest</CODE>) and replaces the entire phrase with the
+left hand side of the previous equation (procedure <CODE>this</CODE>).
+
+<P>
+
+
+<P><H2>Pattern Matching</H2>
+
+
+<P>Student analyzes a sentence by comparing it to several <EM>patterns</EM>
+(<CODE>senform1</CODE>).  For example, one sentence form that Student understands
+is exemplified by these sentences:
+
+<P><PRE>Joe weighs 163 pounds .
+The United States Army has 8742 officers .
+</PRE>
+
+<P>The general pattern is
+
+<P><PRE><EM>something</EM> <EM>verb</EM> <EM>number</EM> <EM>unit</EM> .
+</PRE>
+
+<P>Student treats such sentences as if they were rearranged to match
+
+<P><PRE>The number of <EM>unit</EM> <EM>something</EM> <EM>verb</EM> is <EM>number</EM> .
+</PRE>
+
+<P>and so it generates the equations
+
+<P><PRE>Equal [number of pounds Joe weighs] 163
+
+Equal [number of officers United States Army has] 8742
+</PRE>
+
+<P>The original version of Student was written in a pattern matching
+language called Meteor, which Bobrow wrote in Lisp.  In Meteor, the
+instruction that handles this sentence type looks like this:
+
+<P><PRE>(*   ( (1 / verb) (fn nmtest) 1  (1 / dlm)) 0
+     (/ (*s shelf (*k equal (fn opform (*k the number of 4 1 2))
+                            (fn opform (*k 3 5 6)))))            return)
+</PRE>
+
+<P>The top line contains the pattern to be matched.  In the pattern,
+a dollar sign represents zero or more words; the notation <CODE>1</CODE>
+represents a single word.  The zero at the end of the line means that the
+text that matches the pattern should be deleted and nothing should replace
+it.  The rest of the instruction pushes a new equation onto a stack named
+<CODE>shelf</CODE>; that equation is formed out of the pieces of the matched
+pattern according to the numbers in the instruction.  That is, the number
+<CODE>4</CODE> represents the fourth component of the pattern, which is <CODE>1</CODE>.
+
+
+	Here is the corresponding instruction in the Logo version:
+
+<P><PRE>if match [^one !verb1:verb !factor:numberp #stuff1 !:dlm] :sent
+   [output (list (list &quot;equal
+                       opform (sentence [the number of]
+                                        :stuff1 :one :verb1)
+                       opform (list :factor) ))]
+</PRE>
+
+<P>The pattern matcher I used for Student is the same as the one in
+<EM>Advanced Techniques,</EM> the second volume of this series.<SUP>*</SUP>  Student often relies on the fact that
+Meteor's pattern matcher finds the <EM>first substring</EM> of the text that
+matches the pattern, rather than requiring the entire text to match.  Many
+patterns in the Logo version therefore take the form
+
+<P><PRE>[^beg <EM>interesting part</EM> #end]
+</PRE>
+
+<P>where the &quot;interesting part&quot; is all that appeared in the Meteor
+pattern.
+
+<P><SMALL><BLOCKQUOTE><SMALL><SUP>*</SUP>The
+version in this project is modified slightly; the <CODE>match</CODE> procedure
+first does a fast test to try to reject an irrelevant pattern in O(<EM>n</EM>)
+time before calling the actual pattern matcher, which could take as much
+as O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>) time to reject a pattern, and which has been renamed <CODE>rmatch</CODE>
+(for &quot;real match&quot;) in this project.</SMALL></BLOCKQUOTE></SMALL>
+
+<P>Here is a very brief summary of the Logo pattern matcher included in this
+program.  For a fuller description with examples, please refer to Volume 2.
+<CODE>Match</CODE> is a predicate with two inputs, both lists.  The first input is
+the <EM>pattern</EM> and the second input is the <EM>sentence.</EM>  <CODE>Match</CODE>
+outputs <CODE>true</CODE> if the sentence <EM>matches</EM> the pattern.  A word in
+the pattern that does not begin with one of the special <EM>quantifier</EM>
+characters listed below matches the identical word in the sentence.  A word
+in the pattern that does begin with a quantifier matches zero or more words
+in the sentence, as follows:
+
+<P><TABLE>
+<TR><TD><CODE>#</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more
+<TR><TD><CODE>&amp;</CODE><TD>&nbsp;&nbsp;&nbsp;one or more
+<TR><TD><CODE>?</CODE><TD>&nbsp;&nbsp;&nbsp;zero or one
+<TR><TD><CODE>!</CODE><TD>&nbsp;&nbsp;&nbsp;exactly one
+<TR><TD><CODE>@</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more (test as group)
+<TR><TD><CODE>^</CODE><TD>&nbsp;&nbsp;&nbsp;zero or more (as few as possible)
+</TABLE>
+
+<P>
+All quantifiers match as many consecutive words as possible while
+still allowing the remaining portion of the pattern to be matched, except
+for <CODE>^</CODE>.  A quantifier may be used alone, or it can be followed by a
+variable name, a predicate name, or both:
+
+<P><PRE>#
+#var
+#:pred
+#var:pred
+</PRE>
+
+If a variable name is used, the word or words that match the
+quantifier will be stored in that variable if the match is successful.  (The
+value of the variable if the match is not successful is not guaranteed.)  If
+a predicate is used, it must take one word as input; in order for a word in
+the sentence to be accepted as (part of) a match for the quantifier, the
+predicate must output <CODE>true</CODE> when given that word as input.  For
+example, the word
+
+<P><PRE>!factor:numberp
+</PRE>
+
+<P>in the pattern above requires exactly one matching word in the
+sentence; that word must be a number, and it is remembered in the variable
+<CODE>factor</CODE>.  If the quantifier is <CODE>@</CODE> then the predicate must take a
+<EM>list</EM> as input, and it must output <CODE>true</CODE> for all the candidate
+matching words taken together as a list.  For example, if you define a
+procedure
+
+<P><PRE>to threep :list
+output equalp count :list 3
+end
+</PRE>
+
+<P>then the pattern word
+
+<P><PRE>@:threep
+</PRE>
+
+<P>will match exactly three words in the sentence.  (Student does not
+use this last feature of the pattern matcher.  In fact, predicates are
+applied only to the single-word quantifiers <CODE>?</CODE> and <CODE>!</CODE>.)
+
+<P>Pattern matching is also heavily used in converting words and phrases with
+mathematical meaning into the corresponding arithmetic operations
+(<CODE>opform</CODE>).  An equation is a list of three members; the first member is the
+word <CODE>equal</CODE> and the other two are expressions formed by applying
+operations to variables and numbers.  Each operation that is required is
+represented as a list whose first member is the name of the Logo procedure
+that carries out the operation and whose remaining members are expressions
+representing the operands.  For example, the equation
+<P><CENTER><EM>y</EM> = 3<EM>x</EM><SUP><SMALL>2</SMALL></SUP>
++ 6<EM>x</EM> &minus; 1</CENTER><P>
+would be represented by the list
+
+<P><PRE>[equal [y] [sum [product 3 [square [x]]] [product 6 [x]] [minus 1]]]
+</PRE>
+
+<P>The variables are represented by lists like <CODE>[x]</CODE> rather than
+just the words because in Student a variable can be a multi-word phrase like
+<CODE>price of radio</CODE>.  The difference between two expressions is represented
+by a <CODE>sum</CODE> of one expression and <CODE>minus</CODE> the other, rather than as
+the <CODE>difference</CODE> of the expressions, because this representation turns
+out to make the process of simplifying and solving the equations easier.
+
+<P>In word problems, as in arithmetic expressions, there is a precedence of
+operations.  Operations like <CODE>squared</CODE> apply to the variables right next
+to them; ones like <CODE>times</CODE> are intermediate, and ones like <CODE>plus</CODE>
+apply to the largest possible subexpressions.  Student looks first for the
+lowest-priority ones like <CODE>plus</CODE>; if one is found, the entire rest of
+the clause before and after the operation word provide the operands.  Those
+operands are recursively processed by <CODE>opform</CODE>; when all the
+low-priority operations have been found, the next level of priority will be
+found by matching the pattern
+
+<P><PRE>[^left !op:op1 #right]
+</PRE>
+
+<P><H2>Solving the Equations</H2>
+
+<P>Student uses the substitution technique to solve the equations.  That is,
+one equation is rearranged so that the left hand side contains only a single
+variable and the right hand side does not contain that variable.  Then, in
+some other equation, every instance of that variable is replaced by the
+right hand side of the first equation.  The result is a new equation from
+which one variable has been eliminated.  Repeating this process enough times
+should eventually yield an equation with only a single variable, which can
+be solved to find the value of that variable.
+
+<P>When a problem gives rise to several linear equations in several variables,
+the traditional technique for computer solution is to use matrix inversion;
+this technique is messy for human beings because there is a lot of
+arithmetic involved, but straightforward for computers because the algorithm
+can be specified in a simple way that doesn't depend on the particular
+equations in each problem.  Bobrow chose to use the substitution method
+because some problems give rise to equations that are linear in the variable
+for which a solution is desired but nonlinear in other variables.  Consider
+this problem:
+
+<P><PRE>? <U>student :tom</U>
+
+The problem to be solved is
+
+If the number of customers Tom gets is twice the square of 20 per cent of
+the number of advertisements he runs, and the number of advertisements he
+runs is 45, what is the number of customers Tom gets?
+
+
+With mandatory substitutions the problem is
+
+If the number numof customers Tom gets is 2 times the square 20 percent
+numof the number numof advertisements he runs , and the number numof
+advertisements he runs is 45 , what is the number numof customers
+Tom gets ?
+
+
+The simple sentences are
+
+The number numof customers Tom gets is 2 times the square 20 percent
+numof the number numof advertisements he runs .
+
+The number numof advertisements he runs is 45 .
+
+What is the number numof customers Tom gets ?
+
+
+The equations to be solved are
+
+Equal [number of customers Tom gets]
+      [product 2 [square [product 0.2 [number of advertisements
+                                       he runs]]]]
+
+Equal [number of advertisements he runs] 45
+
+
+The number of customers Tom gets is 162
+
+The problem is solved.
+</PRE>
+
+<P>The first equation that Student generates for this problem is
+linear in the number of customers Tom gets, but nonlinear in the number of
+advertisements he runs.  (That is, the equation refers to the <EM>square</EM>
+of the latter variable.  An equation is <EM>linear</EM> in a given variable
+if that variable isn't multiplied by anything other than a constant number.)
+Using the substitution method, Student can solve the problem by substituting
+the value 45, found in the second equation, for the number of advertisements
+variable in the first equation.
+
+<P>(Notice, in passing, that one of the special <CODE>numof</CODE> words in this
+problem was translated into a multiplication rather than back into the
+original word <CODE>of</CODE>.)
+
+<P>The actual sequence of steps required to solve a set of equations is quite
+intricate.  I recommend taking that part of Student on faith the first time
+you read the program, concentrating instead on the pattern matching
+techniques used to translate the English sentences into equations.  But here
+is a rough guide to the solution process.  Both <CODE>student1</CODE> and <CODE>
+student2</CODE> call <CODE>trysolve</CODE> with four inputs: a list of the equations to
+solve, a list of the variables for which values are wanted, and two lists of
+<EM>units.</EM>  A unit is a word or phrase like <CODE>dollars</CODE> or <CODE>feet</CODE>
+that may be part of a solution.  Student treats units like variables while
+constructing the equations, so the combination of a number and a unit is
+represented as a product, like
+
+<P><PRE>[product 69.7 [dollars]]
+</PRE>
+
+<P>for 69.70 in the first sample problem.  While constructing the
+equations, Student generates two lists of units.  The first, stored in the
+variable <CODE>units</CODE>, contains any word or phrase that appears along with a
+number in the problem statement, like the word <CODE>feet</CODE> in the phrase <CODE>
+3 feet</CODE> (<CODE>nmtest</CODE>).  The second, in the variable <CODE>aunits</CODE>, contains
+units mentioned explicitly in the <CODE>find</CODE> or <CODE>how many</CODE> sentences
+that tell Student what variables should be part of the solution
+(<CODE>senform1</CODE>).  If the problem includes a sentence like
+
+<P><PRE>How many inches is a yard?
+</PRE>
+
+<P>then the variable <CODE>[inches]</CODE>, and <EM>only</EM> that variable,
+is allowed to be part of the answer.  If there are no <CODE>aunits</CODE>-type
+variables in the problem, then any of the <CODE>units</CODE> variables may appear
+in the solution (<CODE>trysolve</CODE>).
+
+<P><CODE>Trysolve</CODE> first calls <CODE>solve</CODE> to solve the equations and then uses
+<CODE>pranswers</CODE> to print the results.  <CODE>Solve</CODE> calls <CODE>solver</CODE> to do
+most of the work and then passes its output through <CODE>solve.reduce</CODE> for
+some final cleaning up.  <CODE>Solver</CODE> works by picking one of the
+variables from the list <CODE>:wanted</CODE> and asking <CODE>solve1</CODE> to find a
+solution for that variable in terms of <EM>all</EM> the other variables--the
+other wanted variables as well as the units allowed in the ultimate answer.
+If <CODE>solve1</CODE> succeeds, then <CODE>solver</CODE> invokes itself,
+adding the newly-found expression for one variable to an <EM>
+association list</EM> (in the variable <CODE>alis</CODE>) so that, from then
+on, any occurrence of that variable will be replaced with the equivalent
+expression.  In effect, the problem is simplified by eliminating one
+variable and eliminating one equation, the one that was solved to find the
+equivalent expression.
+
+<P><CODE>Solve1</CODE> first looks for an equation containing the variable for which
+it is trying to find a solution.  When it finds such an equation, the next
+task is to eliminate from that equation any variables that aren't part of
+the wanted-plus-units list that <CODE>solver</CODE> gave <CODE>solve1</CODE> as an input.
+To eliminate these extra variables, <CODE>solve1</CODE> invokes <CODE>solver</CODE> with
+the extras as the list of wanted variables.  This mutual recursion between
+<CODE>solver</CODE> and <CODE>solve1</CODE> makes the structure of the solution process
+difficult to follow.  If <CODE>solver</CODE> manages to eliminate the extra
+variables by expressing them in terms of the originally wanted ones, then
+<CODE>solve1</CODE> can go on to substitute those expressions into its originally
+chosen equation and then use <CODE>solveq</CODE> to solve that one equation for the
+one selected variable in terms of all the other allowed variables.  <CODE>
+Solveq</CODE> manipulates the equation more or less the way students in algebra
+classes do, adding the same term to both sides, multiplying both sides by
+the denominator of a polynomial fraction, and so on.
+
+<P>Here is how <CODE>solve</CODE> solves the radio problem.  The equations, again, are
+
+<P><PRE>Equal [price of radio] [product 69.7 [dollars]]
+
+Equal [price of radio] [product 0.85 [marked price]]
+</PRE>
+
+<P><CODE>Trysolve</CODE> evaluates the expression
+
+<P><PRE>(1) solve [[marked price]]
+          [[equal [price of radio] [product 69.7 [dollars]]]
+           [equal [price of radio] [product 0.85 [marked price]]] ]
+          [[dollars]]
+</PRE>
+
+<P>(I'm numbering these expressions so that I can refer to them later
+in the text.)  The first input to <CODE>solve</CODE> is the list of variables
+wanted in the solution; in this case there is only one such variable.  The
+second input is the list of two equations.  The third is the list of unit
+variables that are allowed to appear in the solution; in this case only <CODE>
+[dollars]</CODE> is allowed.  <CODE>Solve</CODE> evaluates
+
+<P><PRE>(2) solver [[marked price]] [[dollars]] [] []
+</PRE>
+
+<P>(There is a fifth input, the word <CODE>insufficient</CODE>, but this is
+used only as an error flag if the problem can't be solved.  To simplify this
+discussion I'm going to ignore that input for both <CODE>solver</CODE> and <CODE>
+solve1</CODE>.)  <CODE>Solver</CODE> picks the first (in this case, the only) wanted
+variable as the major input to <CODE>solve1</CODE>:
+
+<P><PRE>(3) solve1 [marked price]
+           [[dollars]]
+           []
+           [[equal [price of radio] [product 69.7 [dollars]]]
+            [equal [price of radio] [product 0.85 [marked price]]] ]
+           []
+</PRE>
+
+<P>Notice that the first input to <CODE>solve1</CODE> is a single variable,
+not a list of variables.  <CODE>Solve1</CODE> examines the first equation in the
+list of equations making up its fourth input.  The desired variable does not
+appear in this equation, so <CODE>solve1</CODE> rejects that equation and invokes
+itself recursively:
+
+<P><PRE>(4) solve1 [marked price]
+           [[dollars]]
+           []
+           [[equal [price of radio] [product 0.85 [marked price]]]]
+           [[equal [price of radio] [product 69.7 [dollars]]]]
+</PRE>
+
+<P>This time, the first (and now only) equation on the list of
+candidates does contain the desired variable.  <CODE>Solve1</CODE> removes that
+equation, not from its own list of equations (<CODE>:eqns</CODE>), but from <CODE>
+solve</CODE>'s overall list (<CODE>:eqt</CODE>).  The equation, unfortunately, can't be
+solved directly to express <CODE>[marked price]</CODE> in terms of <CODE>[dollars]</CODE>,
+because it contains the extra, unwanted variable <CODE>[price of radio]</CODE>.
+We must eliminate this variable by solving the remaining equations for it:
+
+<P><PRE>(5) solver [[price of radio]] [[marked price] [dollars]] [] []
+</PRE>
+
+<P>As before, <CODE>solver</CODE> picks the first (again, in this case, the
+only) wanted variable and asks <CODE>solve1</CODE> to solve it:
+
+<P><PRE>(6) solve1 [price of radio]
+           [[marked price] [dollars]]
+           []
+           [[equal [price of radio] [product 69.7 [dollars]]]]
+           []
+</PRE>
+
+<P><CODE>Solve1</CODE> does find the desired variable in the first (and
+only) equation, and this time there are no extra variables.  <CODE>Solve1</CODE>
+can therefore ask <CODE>solveq</CODE> to solve the equation:
+
+<P><PRE>(7) solveq [price of radio]
+           [equal [price of radio] [product 69.7 [dollars]]]
+</PRE>
+
+<P>It isn't part of <CODE>solveq</CODE>'s job to worry about which variables
+may or may not be part of the solution; <CODE>solve1</CODE> doesn't call <CODE>
+solveq</CODE> until it's satisfied that the equation is okay.
+
+<P>In this case, <CODE>solveq</CODE> has little work to do because the equation is
+already in the desired form, with the chosen variable alone on the left side
+and an expression not containing that variable on the right.
+
+<P><PRE>solveq (7) <EM>outputs</EM> [[price of radio] [product 69.7 [dollars]]
+           <EM>to</EM> solve1 (6)
+</PRE>
+
+<P><CODE>Solve1</CODE> appends this result to the previously empty
+association list.
+
+<P><PRE>solve1 (6) <EM>outputs</EM> [[[price of radio] [product 69.7 [dollars]]]
+           <EM>to</EM> solver (5)
+</PRE>
+
+<P><CODE>Solver</CODE> only had one variable in its <CODE>:wanted</CODE> list, so
+its job is also finished.
+
+<P><PRE>solver (5) <EM>outputs</EM> [[[price of radio] [product 69.7 [dollars]]]
+           <EM>to</EM> solve1 (4,3)
+</PRE>
+
+<P>This outer invocation of <CODE>solve1</CODE> was trying to solve for
+<CODE>[marked price]</CODE> an equation that also involved <CODE>[price of radio]</CODE>.
+It is now able to use the new association list to substitute for this
+unwanted variable an expression in terms of wanted variables only; this
+modified equation is then passed on to <CODE>solveq</CODE>:
+
+<P><PRE>(8) solveq [marked price]
+           [equal [product 69.7 [dollars]] [product 0.85 [marked price]]]
+</PRE>
+
+<P>This time <CODE>solveq</CODE> has to work a little harder, exchanging the
+two sides of the equation and dividing by 0.85.
+
+<P><PRE>solveq (8) <EM>outputs</EM> [[marked price] [product 82 [dollars]]]
+           <EM>to</EM> solve1 (4,3)
+</PRE>
+
+<P><CODE>Solve1</CODE> appends this result to the association list:
+
+<P><PRE>solve1 (4,3) <EM>outputs</EM> [[[price of radio] [product 69.7 [dollars]]]
+                      [[marked price] [product 82 [dollars]]] ]
+             <EM>to</EM> solver (2)
+</PRE>
+
+<P>Since <CODE>solver</CODE> has no other wanted variables, it outputs the
+same list to <CODE>solve</CODE>, and <CODE>solve</CODE> outputs the same list to <CODE>
+trysolve</CODE>.  (In this example, <CODE>solve.reduce</CODE> has no effect because all
+of the expressions in the association list are in terms of allowed units
+only.  If the equations had been different, the expression for <CODE>[price
+of radio]</CODE> might have included <CODE>[marked price]</CODE> and then <CODE>
+solve.reduce</CODE> would have had to substitute and simplify (<CODE>subord</CODE>).)
+
+<P>It'll probably take tracing a few more examples and beating your head
+against the wall a bit before you really understand the structure of <CODE>
+solve</CODE> and its subprocedures.  Again, don't get distracted by this part of
+the program until you've come to understand the language processing part,
+which is our main interest in this chapter.
+
+<P><H2>Age Problems</H2>
+
+<P>The main reason why Student treats age problems specially is that the
+English form of such problems is often expressed as if the variables were
+people, like &quot;Bill,&quot; whereas the real variable is &quot;Bill's age.&quot; The
+pattern matching transformations look for proper names (<CODE>personp</CODE>) and
+insert the words <CODE>s age</CODE> after them (<CODE>ageify</CODE>).  The first such age
+variable in the problem is remembered specially so that it can be
+substituted for pronouns (<CODE>agepron</CODE>).  A special case is the phrase <CODE>
+their ages</CODE>, which is replaced (<CODE>ageprob</CODE>) with a list of all the age
+variables in the problem.
+
+<P><PRE>? <U>student :uncle</U>
+
+The problem to be solved is
+
+Bill's father's uncle is twice as old as Bill's father. 2 years from now
+Bill's father will be 3 times as old as Bill. The sum of their ages is
+92 . Find Bill's age.
+
+
+With mandatory substitutions the problem is
+
+Bill s father s uncle is 2 times as old as Bill s father . 2 years
+from now Bill s father will be 3 times as old as Bill . sum their
+ages is 92 . Find Bill s age .
+
+
+The simple sentences are
+
+Bill s father s uncle s age is 2 times Bill s father s age .
+
+Bill s father s age pluss 2 is 3 times Bill s age pluss 2 .
+
+Sum Bill s age and Bill s father s age and Bill s father s uncle s age
+is 92 .
+
+Find Bill s age .
+
+
+The equations to be solved are
+
+Equal [Bill s father s uncle s age] [product 2 [Bill s father s age]]
+
+Equal [sum [Bill s father s age] 2] [product 3 [sum [Bill s age] 2]]
+
+Equal [sum [Bill s age]
+           [sum [Bill s father s age] [Bill s father s uncle s age]]] 92
+
+
+Bill s age is 8
+
+The problem is solved.
+</PRE>
+
+<P>(Note that in the original problem statement there is a space
+between the number <CODE>92</CODE> and the following period.  I had to enter the
+problem in that form because of an inflexibility in Logo's input parser,
+which assumes that a period right after a number is part of the number, so
+that &quot;<CODE>92.</CODE>&quot; is reformatted into <CODE>92</CODE> without the dot.)
+
+<P>Student represents the possessive word <CODE>Bill's</CODE> as the two words
+<CODE>Bill s</CODE> because this representation allows the pattern matcher to
+manipulate the possessive marker as a separate element to be matched.
+A phrase like <CODE>as old as</CODE> is just deleted (<CODE>ageprob</CODE>) because the
+transformation from people to ages makes it redundant.
+
+<P>The phrase <CODE>2 years from now</CODE> in the original problem is first
+translated to <CODE>in 2 years</CODE>.  This phrase is further processed according
+to where it appears in a sentence.  When it is attached to a particular
+variable, in a phrase like <CODE>Bill s age in 2 years</CODE>, the entire phrase is
+translated into the arithmetic operation <CODE>Bill s age pluss 2 years</CODE>
+(<CODE>agewhen</CODE>).  (The special word <CODE>pluss</CODE> is an addition operator,
+just like <CODE>plus</CODE>, except for its precedence; <CODE>opform</CODE> treats it as a
+tightly binding operation like <CODE>squared</CODE> instead of a loosely binding
+one like the ordinary <CODE>plus</CODE>.)  When a phrase like <CODE>in 2 years</CODE>
+appears at the beginning of a sentence, it is remembered (<CODE>agesen</CODE>) as
+an implicit modifier for <EM>every</EM> age variable in that sentence that
+isn't explicitly modified.  In this example, <CODE>in 2 years</CODE> modifies both
+<CODE>Bill s father s age</CODE> and <CODE>Bill s age</CODE>.  The special precedence of
+<CODE>pluss</CODE> is needed in this example so that the equation will be based on
+the grouping
+
+<P><PRE>3 times [ Bill s age pluss 2 ]
+</PRE>
+
+<P>rather than
+
+<P><PRE>[ 3 times Bill s age ] plus 2
+</PRE>
+
+<P>as it would be with the ordinary <CODE>plus</CODE> operator.  You can
+also see how the substitution for <CODE>their ages</CODE> works in this example.
+
+<P>Here is a second sample age problem that illustrates a different kind of
+special handling:
+
+<P><PRE>? <U>student :ann</U>
+
+The problem to be solved is
+
+Mary is twice as old as Ann was when Mary was as old as Ann is now. If
+Mary is 24 years old, how old is Ann?
+
+
+With mandatory substitutions the problem is
+
+Mary is 2 times as old as Ann was when Mary was as old as Ann is now . If
+Mary is 24 years old , what is Ann ?
+
+
+The simple sentences are
+
+Mary s age is 2 times Ann s age minuss g1 .
+
+Mary s age minuss g1 is Ann s age .
+
+Mary s age is 24 .
+
+What is Ann s age ?
+
+
+The equations to be solved are
+
+Equal [Mary s age] [product 2 [sum [Ann s age] [minus [g1]]]]
+
+Equal [sum [Mary s age] [minus [g1]]] [Ann s age]
+
+Equal [Mary s age] 24
+
+
+Ann s age is 18
+
+The problem is solved.
+</PRE>
+
+<P>What is new in this example is Student's handling of the phrase <CODE>was
+when</CODE> in the sentence
+
+<P><PRE>Mary is 2 times as old as Ann was when Mary was as old as Ann is now .
+</PRE>
+
+<P>Sentences like this one often cause trouble for human algebra students
+because they make <EM>implicit</EM> reference to a quantity that is not
+explicitly present as a variable.  The sentence says that Mary's age <EM>
+now</EM> is twice Ann's age <EM>some number</EM> of years ago, but that number
+is not explicit in the problem.  Student makes this variable explicit by
+using a <EM>generated symbol</EM> like the word <CODE>g1</CODE> in this illustration.
+Student replaces the phrase <CODE>was when</CODE> with the words
+
+<P><PRE>was g1 years ago . g1 years ago
+</PRE>
+
+<P>This substitution (in <CODE>ageprob</CODE>) happens <EM>before</EM> the
+division of the problem statement into simple sentences (<CODE>bracket</CODE>).  As
+a result, this one sentence in the original problem becomes the two sentences
+
+<P><PRE>Mary s age is 2 times Ann s age g1 years ago .
+
+G1 years ago Mary s age was Ann s age now .
+</PRE>
+
+<P>The phrase <CODE>g1 years ago</CODE> in each of these sentences is
+further processed by <CODE>agesen</CODE> and <CODE>agewhen</CODE> as discussed earlier;
+the final result is
+
+<P><PRE>Mary s age is 2 times Ann s age minuss g1 .
+
+Mary s age minuss g1 is Ann s age .
+</PRE>
+
+<P>A new generated symbol is created each time this situation arises,
+so there is no conflict from trying to use the same variable name for two
+different purposes.  The phrase <CODE>will be when</CODE> is handled similarly,
+except that the translated version is
+
+<P><PRE>in g2 years . in g2 years
+</PRE>
+
+<P><H2>AI and Education</H2>
+
+<BLOCKQUOTE>
+<P><A NAME="bobrow2">These decoupling heuristics</A> are useful
+not only for the Student program but
+for people trying to solve age problems.  The classic age problem about Mary
+and Ann, given above, took an MIT graduate student over 5 minutes to solve
+because he did not know this heuristic.  With the heuristic he was able to
+set up the appropriate equations much more rapidly.  As a crude measure of
+Student's relative speed, note that Student took less than one minute to
+solve this problem.
+</BLOCKQUOTE>
+
+<P>This excerpt from Bobrow's thesis illustrates the idea that
+insights from artificial intelligence research can make a valuable
+contribution to the education of human beings.  An intellectual problem is
+solved, at least in many cases, by dividing it into pieces and developing a
+technique for each subproblem.  The subproblems are the same whether it is a
+computer or a person trying to solve the problem.  If a certain technique
+proves valuable for the computer, it may be helpful for a human problem
+solver to be aware of the computer's methods.  Bobrow's suggestion to teach
+people one specific heuristic for algebra word problems is a relatively
+modest example of this general theme.  (A <EM>heuristic</EM> is a rule that
+gives the right answer most of the time, as opposed to an <EM>
+algorithm,</EM> a
+rule that always works.)  Some researchers in cognitive science and
+education have proposed the idea of <EM>intelligent CAI</EM>
+(computer assisted instruction), in which a computer would be programmed as a
+&quot;tutor&quot; that would observe the efforts of a student in solving a problem.
+The tutor would know about some of the mistaken ideas people can have about
+a particular class of problem and would notice a student falling into one
+of those traps.  It could then offer advice tailored to the needs of that
+individual student.
+
+<P>The development of the Logo programming language (and so also, indirectly,
+this series of books) is another example of the relationship between AI and
+education.  Part of the idea behind Logo is that the process of programming
+a computer resembles, in some ways, the process of teaching a person to do
+something.  (This can include teaching oneself.)  For example, when a
+computer program doesn't work, the experienced programmer doesn't give up in
+despair, but instead <EM>debugs</EM> the program.  Yet many students are
+willing to give up and say &quot;I just don't get it&quot; if their understanding of
+some problem isn't perfect on the first try.
+
+<BLOCKQUOTE>
+<P><A NAME="papert">The critic</A> is afraid
+that children will adopt the computer as model and
+eventually come to &quot;think mechanically&quot; themselves.  Following the
+opposite tack, I have invented ways to take educational advantage of the
+opportunities to master the art of <EM>deliberately</EM> thinking like a
+computer, according, for example, to the stereotype of a computer program
+that proceeds in a step-by-step, literal, mechanical fashion.  There are
+situations where this style of thinking is appropriate and useful.  Some
+children's difficulties in learning formal subjects such as grammar or
+mathematics derive from their inability to see the point of such a style.
+
+<P>
+A second educational advantage is indirect but ultimately more important.
+By deliberately learning to imitate mechanical thinking, the learner becomes
+able to articulate what mechanical thinking is and what it is not.  The
+exercise can lead to greater confidence about the ability to choose a
+cognitive style that suits the problem.  Analysis of &quot;mechanical thinking&quot;
+and how it is different from other kinds and practice with problem analysis
+can result in a new degree of intellectual sophistication.  By providing a
+very concrete, down-to-earth model of a particular style of thinking, work
+with the computer can make it easier to understand that there is such a
+thing as a &quot;style of thinking.&quot; And giving children the opportunity to
+choose one style or another provides an opportunity to develop the skill
+necessary to choose between styles.  Thus instead of inducing mechanical
+thinking, contact with computers could turn out to be the best conceivable
+antidote to it.  And for me what is most important in this is that through
+these experiences these children would be serving their apprenticeships as
+epistemologists, that is to say learning to think articulately about
+thinking.  [Seymour Papert, <EM>Mindstorms</EM>, Basic Books, 1980, p. 27.]
+</BLOCKQUOTE>
+
+<P><H2>Combining Sentences Into One Equation</H2>
+
+<P>In age problems, as we've just seen, a single sentence may give rise to two
+equations.  Here is an example of the opposite, several sentences that
+together contribute a single equation.
+
+<P><PRE>? <U>student :nums</U>
+
+The problem to be solved is
+
+A number is multiplied by 6 . This product is increased by 44 . This
+result is 68 . Find the number.
+
+
+With mandatory substitutions the problem is
+
+A number ismulby 6 . This product is increased by 44 . This result is
+68 . Find the number .
+
+
+The simple sentences are
+
+A number ismulby 6 .
+
+This product is increased by 44 .
+
+This result is 68 .
+
+Find the number .
+
+
+The equations to be solved are
+
+Equal [sum [product [number] 6] 44] 68
+
+
+The number is 4
+
+The problem is solved.
+</PRE>
+
+<P>Student recognizes problems like this by recognizing the phrases &quot;is
+multiplied by,&quot; &quot;is divided by,&quot; and &quot;is increased by&quot; (<CODE>senform1</CODE>).
+A sentence containing one of these phrases is not translated into an
+equation; instead, a <EM>partial</EM> equation is saved until the next
+sentence is read.  That next sentence is expected to start with a phrase
+like &quot;this result&quot; or &quot;this product.&quot; The same procedure (<CODE>this</CODE>)
+that in other situations uses the left hand side of the last equation as the
+expression for the <CODE>this</CODE>-phrase notices that there is a remembered
+partial equation and uses that instead.  In this example, the sentence
+
+<P><PRE>A number ismulby 6 .
+</PRE>
+
+<P>remembers the algebraic expression
+
+<P><PRE>[product [number] 6]
+</PRE>
+
+<P>The second sentence uses that remembered expression as part of a
+new, larger expression to be remembered:
+
+<P><PRE>[sum [product [number] 6] 44]
+</PRE>
+
+<P>The third sentence does not contain one of the special &quot;is
+increased by&quot; phrases, but is instead a standard &quot;A is B&quot; sentence.
+That sentence, therefore, does give rise to an equation, as shown above.
+
+<P>Perhaps the most interesting thing to notice about this category of word
+problem is how narrowly defined Student's criterion for recognizing the
+category is.  Student gets away with it because algebra word problems are
+highly <EM>stereotyped;</EM> there are just a few categories, with
+traditional, standard wordings.  In principle there could be a word problem
+starting
+
+<P><PRE>Robert has a certain number of jelly beans.  This number is twice the
+number of jelly beans Linda has.
+</PRE>
+
+<P>These two sentences are together equivalent to
+
+<P><PRE>The number of jelly beans Robert has is twice the number of jelly beans
+Linda has.
+</PRE>
+
+<P>But Student would not recognize the situation because the first
+sentence doesn't talk about &quot;is increased by.&quot; We could teach Student to
+understand a word problem in this form by adding the instruction
+
+<P><PRE>if match [^one !verb1:verb a certain number of #stuff1 !:dlm] :sent
+    [push &quot;ref opform (se [the number of] :stuff1 :one :verb1)
+     op []]
+</PRE>
+
+<P>along with the other known sentence forms in <CODE>senform1</CODE>.
+(Compare this to the pattern matching instruction shown earlier for a
+similar sentence but with an explicitly specified number.)
+
+<P>Taking advantage of the stereotyped nature of word problems is an example of
+how the microworld strategy helped make the early AI programs possible.  If
+word problems were expressed with all the flexibility of language in general,
+Student would need many more sentence patterns than it actually has.  (How
+many different ways can you think of to express the same idea about Robert
+and Linda?  How many of those ways can Student handle?)
+
+<P><H2>Allowing Flexible Phrasing</H2>
+
+<P>In the examples we've seen so far, Student has relied on the repetition of
+identical or near-identical phrases such as &quot;the marked price&quot; or &quot;the
+number of advertisements he runs.&quot; (The requirement is not quite strictly
+identical phrases because articles are removed from the noun phrases to make
+variable names.)  In real writing, though, such phrases are often
+abbreviated when they appear for a second time.  Student will translate such
+a problem into a system of equations that can't be solved, because what
+should be one variable is instead a different variable in each equation.
+But Student can recognize this situation and apply heuristic rules to guess
+that two similar variable names are meant, in fact, to represent the same
+variable.  (Some early writers on AI considered the use of heuristic methods
+one of the defining characteristics of the field.  Computer scientists
+outside of AI were more likely to insist on fully reliable algorithms.  This
+distinction still has some truth to it, but it isn't emphasized so much as a
+critical issue these days.)  Student doesn't try to equate different
+variables until it has first tried to solve the equations as they are
+originally generated.  If the first attempt at solution fails, Student has
+recourse to less certain techniques (<CODE>student2</CODE> calls <CODE>vartest</CODE>).
+
+<P><PRE>? <U>student :sally</U>
+
+The problem to be solved is
+
+The sum of Sally's share of some money and Frank's share is 4.50.
+Sally's share is twice Frank's. Find Frank's and Sally's share.
+
+
+With mandatory substitutions the problem is
+
+sum Sally s share numof some money and Frank s share is 4.50 dollars .
+Sally s share is 2 times Frank s . Find Frank s and Sally s share .
+
+
+The simple sentences are
+
+Sum Sally s share numof some money and Frank s share is 4.50 dollars .
+
+Sally s share is 2 times Frank s .
+
+Find Frank s and Sally s share .
+
+
+The equations to be solved are
+
+Equal [sum [Sally s share of some money] [Frank s share]]
+      [product 4.50 [dollars]]
+
+Equal [Sally s share] [product 2 [Frank s]]
+
+
+The equations were insufficient to find a solution.
+
+Assuming that
+[Frank s] is equal to [Frank s share]
+
+Assuming that
+[Sally s share] is equal to [Sally s share of some money]
+
+Frank s is 1.5 dollars
+
+Sally s share is 3 dollars
+
+The problem is solved.
+</PRE>
+
+<P>In this problem Student has found two pairs of similar variable names.
+When it finds such a pair, Student adds an equation of the form
+
+<P><PRE>[equal <EM>variable1</EM> <EM>variable2</EM>]
+</PRE>
+
+<P>to the previous set of equations.  In both of the pairs in this
+example, the variable that appears later in the problem statement is
+entirely contained within the one that appears earlier.
+
+<P>Another point of interest in this example is that the variable <CODE>[dollars]</CODE>
+is included in the list of units that may be part of the answer.  The word
+problem does not explicitly ask &quot;How many dollars is Sally's share,&quot; but
+because one of the sentences sets an expression equal to &quot;4.50 dollars&quot;
+Student takes that as implicit permission to express the answer in dollars.
+
+<P>The only other condition under which Student will consider two variables
+equal is if their names are identical except that some phrase in the one
+that appears earlier is replaced with a pronoun in the one that appears
+later.  That is, a variable like <CODE>[the number of ice cream cones the
+children eat]</CODE> will be considered equal to a later variable <CODE>[the number
+of ice cream cones they eat]</CODE>.  Here is a problem in which this rule is
+applied:
+
+<P><PRE>? <U>student :guns</U>
+
+The problem to be solved is
+
+The number of soldiers the Russians have is one half of the number of
+guns they have. They have 7000 guns. How many soldiers do they have?
+
+
+With mandatory substitutions the problem is
+
+The number numof soldiers the Russians have is 0.5 numof the number numof
+guns they have . They have 7000 guns . howm soldiers do they have ?
+
+
+The simple sentences are
+
+The number numof soldiers the Russians have is 0.5 numof the number numof
+guns they have .
+
+They have 7000 guns .
+
+Howm soldiers do they have ?
+
+
+The equations to be solved are
+
+Equal [number of soldiers Russians have]
+      [product 0.5 [number of guns they have]]
+
+Equal [number of guns they have] 7000
+
+
+The equations were insufficient to find a solution.
+
+Assuming that
+[number of soldiers they have] is equal to
+  [number of soldiers Russians have]
+
+The number of soldiers they have is 3500
+
+The problem is solved.
+</PRE>
+
+<P><H2>Using Background Knowledge</H2>
+
+<P>In some word problems, not all of the necessary information is contained
+within the problem statement itself.  The problem requires the student to
+supply some piece of general knowledge about the world in order to determine
+the appropriate equations.  This knowledge may be about unit conversions
+(one foot is 12 inches) or about relationships among physical quantities
+(distance equals speed times time).  Student &quot;knows&quot; some of this <EM>
+background</EM> information and can apply it (<CODE>geteqns</CODE>) if the equations
+determined by the problem statement are insufficient.
+
+<P><PRE>? <U>student :jet</U>
+
+The problem to be solved is
+
+The distance from New York to Los Angeles is 3000 miles. If the average
+speed of a jet plane is 600 miles per hour, find the time it takes to
+travel from New York to Los Angeles by jet.
+
+
+With mandatory substitutions the problem is
+
+The distance from New York to Los Angeles is 3000 miles . If the average
+speed numof a jet plane is 600 miles per hour , find the time it takes to
+travel from New York to Los Angeles by jet .
+
+
+The simple sentences are
+
+The distance from New York to Los Angeles is 3000 miles .
+
+The average speed numof a jet plane is 600 miles per hour .
+
+Find the time it takes to travel from New York to Los Angeles by jet .
+
+
+The equations to be solved are
+
+Equal [distance from New York to Los Angeles] [product 3000 [miles]]
+
+Equal [average speed of jet plane]
+      [quotient [product 600 [miles]] [product 1 [hours]]]
+
+
+The equations were insufficient to find a solution.
+
+Using the following known relationships
+
+Equal [distance] [product [speed] [time]]
+
+Equal [distance] [product [gas consumption]
+                          [number of gallons of gas used]]
+
+
+Assuming that
+[speed] is equal to [average speed of jet plane]
+
+Assuming that
+[time] is equal to [time it takes to travel
+                    from New York to Los Angeles by jet]
+
+Assuming that
+[distance] is equal to [distance from New York to Los Angeles]
+
+The time it takes to travel from New York
+  to Los Angeles by jet is 5 hours
+
+The problem is solved.
+</PRE>
+
+<P>Student's library of known relationships is indexed according to the first
+word of the name of each variable involved in the relationship.  (If a
+variable starts with the words <CODE>number of</CODE> it is indexed under the
+following word.)  The relationships, in the form of equations, are stored in
+the property lists of these index words.
+
+<P>Property lists are also used to keep track of irregular plurals and the
+corresponding singulars.  Student tries to keep all units in plural form
+internally, so that if a problem refers to both <CODE>1 foot</CODE> and <CODE>
+2 feet</CODE> the same variable name will be used for both.  (That is, the first
+of these will be translated into
+
+<P><PRE>[product 1 [feet]]
+</PRE>
+
+<P>in Student's internal representation.  Then the opposite
+translation is needed if the product of <CODE>1</CODE> and some unit appears in an
+answer to be printed.
+
+<P>The original Student also used property lists to remember the parts of
+speech of words and the precedence of operators, but because of differences
+in the syntax of the Meteor pattern matcher and my Logo pattern matcher I've
+found it easier to use predicate operations for that purpose.
+
+<P>The original Student system included a separately invoked <CODE>remember</CODE>
+procedure that allowed all these kinds of global information to be entered
+in the form of English sentences.  You'd say
+
+<P><PRE>Feet is the plural of foot
+</PRE>
+
+<P>or
+
+<P><PRE>Distance equals speed times time
+</PRE>
+
+<P>and <CODE>remember</CODE> would use patterns much like those used in
+understanding word problems to translate these sentences into <CODE>pprop</CODE>
+instructions.  Since Lisp programs, like Logo programs, can themselves be
+manipulated as lists, <CODE>remember</CODE> could even accept information of a
+kind that's stored in
+the Student program itself, such as the wording transformations in <CODE>
+idioms</CODE>, and modify the program to reflect this information.  I haven't
+bothered to implement that part of the Student system because it takes up
+extra memory and doesn't exhibit any new techniques.
+
+<P>As the above example shows, it's important that Student's search for
+relevant known relationships comes before the attempt to equate variables
+with similar names.  The general relationship that uses a variable named
+simply <CODE>[distance]</CODE> doesn't help unless Student can identify it as
+relevant to the variable named <CODE>[distance from New York to Los Angeles]</CODE>
+in the specific problem under consideration.
+
+<P>Here is another example in which known relationships are used:
+
+<P><PRE>? <U>student :span</U>
+
+The problem to be solved is
+
+If 1 span is 9 inches, and 1 fathom is 6 feet,
+  how many spans is 1 fathom?
+
+
+With mandatory substitutions the problem is
+
+If 1 span is 9 inches , and 1 fathom is 6 feet , howm spans is 1 fathom ?
+
+
+The simple sentences are
+
+1 span is 9 inches .
+
+1 fathom is 6 feet .
+
+Howm spans is 1 fathom ?
+
+
+The equations to be solved are
+
+Equal [product 1 [spans]] [product 9 [inches]]
+
+Equal [product 1 [fathoms]] [product 6 [feet]]
+
+Equal g2 [product 1 [fathoms]]
+
+
+The equations were insufficient to find a solution.
+
+Using the following known relationships
+
+Equal [product 1 [yards]] [product 3 [feet]]
+
+Equal [product 1 [feet]] [product 12 [inches]]
+
+
+1 fathom is 8 spans
+
+The problem is solved.
+</PRE>
+
+<P>Besides the use of known relationships, this example illustrates two other
+features of Student.  One is the use of an explicitly requested unit in the
+answer.  Since the problem asks
+
+<P><PRE>How many spans is 1 fathom?
+</PRE>
+
+<P>Student knows that the answer must be expressed in <CODE>spans</CODE>.
+Had there been no explicit request for a particular unit, all the units that
+appear in phrases along with a number would be eligible to appear in the
+answer: <CODE>inches</CODE>, <CODE>feet</CODE>, and <CODE>fathoms</CODE>.  Student might then
+blithely inform us that
+
+<P><PRE>1 fathom is 1 fathom
+
+The problem is solved.
+</PRE>
+
+<P>The other new feature demonstrated by this example is the use of a generated
+symbol to represent the desired answer.  In the statement of this problem,
+there is no explicit variable representing the unknown.  <CODE>[Fathoms]</CODE> is
+a <EM>unit,</EM> not a variable for which a value could be found.  The problem
+asks for the value of the expression
+
+<P><PRE>[product 1 [fathoms]]
+</PRE>
+
+<P>in terms of spans.  Student generates a variable name (<CODE>g2</CODE>)
+to represent the unknown and produces an equation
+
+<P><PRE>[equal g2 [product 1 [fathoms]]
+</PRE>
+
+<P>to add to the list of equations.  A generated symbol will be
+needed whenever the &quot;Find&quot; or &quot;What is&quot; sentence asks for an expression
+rather than a simple variable name.  For example, an age problem that asks
+&quot;What is the sum of their ages&quot; would require the use of a generated
+symbol.  (The original Student <EM>always</EM> used a generated symbol for
+the unknowns, even if there was already a single variable in the problem
+representing an unknown.  It therefore had equations like
+
+<P><PRE>[equal g3 [marked price]]
+</PRE>
+
+<P>in its list, declaring one variable equal to another.  I chose to
+check for this case and avoid the use of a generated symbol because the time
+spent in the actual solution of the equations increases quadratically with
+the number of equations.)
+
+<P><H2>Optional Substitutions</H2>
+
+<P>We have seen many cases in which Student replaces a phrase in the statement
+of a problem with a different word or phrase that fits better with the later
+stages of processing, like the substitution of <CODE>2 times</CODE> for <CODE>twice</CODE>
+or a special keyword like <CODE>perless</CODE> for <CODE>percent less than</CODE>.
+Student also has a few cases of <EM>optional</EM> substitutions that may or
+may not be made (<CODE>tryidiom</CODE>).
+
+<P>There are two ways in which optional substitutions can happen.  One is
+exemplified by the phrase <CODE>the perimeter of the rectangle</CODE>.  Student
+first attempts the problem without any special processing of this phrase.
+If a solution is not found, Student then replaces the phrase with <CODE>twice
+the sum of the length and width of the rectangle</CODE> and processes the
+resulting new problem from the beginning.  Unlike the use of known
+relationships or similarity of variable names, which Student handles by
+adding to the already-determined equations, this optional substitution
+requires the entire translation process to begin again.  For example, the
+word <CODE>twice</CODE> that begins the replacement phrase will be further
+translated to <CODE>2 times</CODE>.
+
+<P>The second category of optional substitution is triggered by the phrase <CODE>
+two numbers</CODE>.  This phrase must always be translated to something, because
+it indicates that two different variables are needed.  But the precise
+translation depends on the wording of the rest of the problem.  Student
+tries two alternative translations: <CODE>one of the numbers and the other
+number</CODE> and <CODE>one number and the other number</CODE>.  Here is an example in
+which the necessary translation is the one Student tries second:
+
+<P><PRE>? <U>student :sumtwo</U>
+
+The problem to be solved is
+
+The sum of two numbers is 96, and one number is 16 larger than the other
+number. Find the two numbers.
+
+
+The problem with an idiomatic substitution is
+
+The sum of one of the numbers and the other number is 96 , and one
+number is16 larger than the other number . Find the one of the numbers
+and the other number .
+
+
+With mandatory substitutions the problem is
+
+sum one numof the numbers and the other number is 96 , and one number
+is 16 plus the other number . Find the one numof the numbers and the
+other number .
+
+
+The simple sentences are
+
+Sum one numof the numbers and the other number is 96 .
+
+One number is 16 plus the other number .
+
+Find the one numof the numbers and the other number .
+
+
+The equations to be solved are
+
+Equal [sum [one of numbers] [other number]] 96
+
+Equal [one number] [sum 16 [other number]]
+
+
+The equations were insufficient to find a solution.
+
+The problem with an idiomatic substitution is
+
+The sum of one number and the other number is 96 , and one number is 16
+larger than the other number . Find the one number and the other number .
+
+
+With mandatory substitutions the problem is
+
+sum one number and the other number is 96 , and one number is 16 plus the
+other number . Find the one number and the other number .
+
+
+The simple sentences are
+
+Sum one number and the other number is 96 .
+
+One number is 16 plus the other number .
+
+Find the one number and the other number .
+
+
+The equations to be solved are
+
+Equal [sum [one number] [other number]] 96
+
+Equal [one number] [sum 16 [other number]]
+
+
+The one number is 56
+
+The other number is 40
+
+The problem is solved.
+</PRE>
+
+<P>There is no essential reason why Student uses one mechanism rather than
+another to deal with a particular problematic situation.  The difficulties
+about perimeters and about the phrase &quot;two numbers&quot; might have been solved
+using mechanisms other than this optional substitution one.  For example,
+the equation
+
+<P><PRE>[equal [perimeter] [product 2 [sum [length] [width]]]]
+</PRE>
+
+<P>might have been added to the library of known relationships.  The
+difficulty about alternate phrasings for &quot;two numbers&quot; could be solved by
+adding
+
+<P><PRE>[[one of the !word:pluralp] [&quot;one singular :word]]
+</PRE>
+
+<P>to the list of idiomatic substitutions in <CODE>idiom</CODE>.
+
+<P>Not all the mechanisms are equivalent, however.  The &quot;two numbers&quot; problem
+couldn't be solved by adding equations to the library of known relationships,
+because that phrase appears as part of a larger phrase like &quot;the sum of two
+numbers,&quot; and Student's understanding of the word <CODE>sum</CODE> doesn't allow
+it to be part of a variable name.  The word <CODE>sum</CODE> only makes sense to
+Student in the context of a phrase like <CODE>the sum of <CODE><EM>
+something</EM></CODE> and <CODE><EM>something else</EM></CODE></CODE>.  (See procedure <CODE>tst.sum</CODE>.)
+
+<P><H2>If All Else Fails</H2>
+
+<P>Sometimes Student fails to solve a problem because the problem is beyond
+either its linguistic capability or its algebraic capability.  For example,
+Student doesn't know how to solve quadratic equations.  But sometimes a
+problem that Student could solve in principle stumps it because it happens
+to lack a particular piece of common knowledge.  When a situation like that
+arises, Student is capable of asking the user for help (<CODE>student2</CODE>).
+
+<P><PRE>? <U>student :ship</U>
+
+The problem to be solved is
+
+The gross weight of a ship is 20000 tons. If its net weight is 15000
+tons, what is the weight of the ships cargo?
+
+
+With mandatory substitutions the problem is
+
+The gross weight numof a ship is 20000 tons . If its net weight is 15000
+tons , what is the weight numof the ships cargo ?
+
+
+The simple sentences are
+
+The gross weight numof a ship is 20000 tons .
+
+Its net weight is 15000 tons .
+
+What is the weight numof the ships cargo ?
+
+
+The equations to be solved are
+
+Equal [gross weight of ship] [product 20000 [tons]]
+
+Equal [its net weight] [product 15000 [tons]]
+
+
+The equations were insufficient to find a solution.
+
+Do you know any more relationships among these variables?
+
+Weight of ships cargo
+
+Its net weight
+
+Tons
+
+Gross weight of ship
+
+<U>The weight of a ships cargo is the gross weight minus the net weight</U>
+
+Assuming that
+[net weight] is equal to [its net weight]
+
+Assuming that
+[gross weight] is equal to [gross weight of ship]
+
+The weight of the ships cargo is 5000 tons
+
+The problem is solved.
+</PRE>
+
+<P><H2>Limitations of Pattern Matching</H2>
+
+
+<P>Student relies on certain stereotyped forms of sentences in the problems it
+solves.  It's easy to make up problems that will completely bewilder it:
+
+<P><PRE>Suppose you have 14 jelly beans.  You give 2 each to Tom, Dick, and
+Harry.  How many do you have left?
+</PRE>
+
+<P>The first mistake Student makes is that it thinks the word <CODE>
+and</CODE> following a comma separates two clauses; it generates simple sentences
+
+<P><PRE>You give 2 each to Tom , Dick .
+
+Harry .
+</PRE>
+
+<P>This is quite a fundamental problem; Student's understanding of
+the difference between a phrase and a clause is extremely primitive and
+prone to error.  Adding another pattern won't solve this one; the trouble
+is that Student pays no attention to the words in between the key words like
+<CODE>and</CODE>.
+
+<P>There are several other difficulties with this problem, some worse than
+others.  Student doesn't recognize the word <CODE>suppose</CODE> as having a
+special function in the sentence, so it makes up a noun phrase <CODE>suppose
+you</CODE> just like <CODE>the russians</CODE>.  This could be fixed with an idiomatic
+substitution that just ignored <CODE>suppose</CODE>.  Another relatively small
+problem is that the sentence starting <CODE>how many</CODE> doesn't say how many of
+what; Student needs a way to understand that the relevant noun phrase is
+<CODE>jelly beans</CODE> and not, for example, <CODE>Tom</CODE>.  The words <CODE>give</CODE>
+(representing subtraction) and <CODE>each</CODE> (representing counting a set and
+then multiplying) have special mathematical meanings comparable to <CODE>
+percent less</CODE>.  A much more subtle problem
+in knowledge representation is
+that in this problem there are two different quantities that could be called
+<CODE>the number of jelly beans you have</CODE>: the number you have at the
+beginning of the problem and the number you have at the end.  Student has a
+limited understanding of this passage-of-time difficulty when it's doing an
+age problem, but not in general.
+
+<P>How many more difficulties can you find in this problem?  For how many of
+them can you invent improvements to Student to get around them?
+
+<P>Some difficulties seem to require a &quot;more of the same&quot; strategy: adding
+some new patterns to Student that are similar to the ones already there.
+Other difficulties seem to require a more fundamental redesign.  Can that
+redesign be done using a pattern matcher as the central tool, or are more
+powerful tools needed?  How powerful <EM>is</EM> pattern matching, anyway?
+
+<P>Answering questions like these is the job of automata theory.  From that
+point of view, the answer is that it depends exactly what you mean by
+&quot;pattern matching.&quot;  The pattern matcher used in Student is equivalent
+to a finite-state machine.  The important thing to note about the patterns
+used in Student is that they only apply predicates to one word at a time,
+not to groups of words.  In other words, they don't use the <CODE>@</CODE>
+quantifier.  Here is a typical <CODE>student</CODE> pattern:
+
+<P><PRE>[^ what !:in [is are] #one !:dlm]
+</PRE>
+
+<P>For the purposes of this discussion, you can ignore the fact that
+the pattern matcher can set variables to remember which words matched each
+part of the pattern.  In comparing a pattern matcher to a finite-state
+machine, the question we're asking is what categories of strings can the
+pattern matcher accept.  This particular pattern is equivalent to the
+following machine:
+
+<P><CENTER><IMG SRC="pattern.gif" ALT="figure: pattern"></CENTER>
+
+<P>The arrow that I've labeled <EM>dlm</EM> is actually several arrows
+connecting the same states, one for each symbol that the predicate <CODE>dlm</CODE>
+accepts, i.e., period, question mark, and semicolon.  Similarly, the arrows
+labeled <EM>any</EM> are followed for any symbol at all.  This machine is
+nondeterministic, but you'll recall that that doesn't matter; we can turn it
+into a deterministic one if necessary.
+
+<P>To be sure you understand the equivalence of patterns and finite-state
+machines, see if you can draw a machine equivalent to this pattern:
+
+<P><PRE>[I see !:in [the a an] ?:numberp &amp;:adjective !:noun #:adverb]
+</PRE>
+
+<P>This pattern uses all the quantifiers that test words one at a
+time.
+
+<P>If these patterns are equivalent to finite-state machines, you'd expect them
+to have trouble recognizing sentences that involve <EM>embedding</EM> of
+clauses within clauses, since these pose the same problem as keeping track
+of balancing of parentheses.  For example, a sentence like &quot;The book that
+the boy whom I saw yesterday was reading is interesting&quot; would strain the
+capabilities of a finite-state machine.  (As in the case of parentheses, we
+could design a FSM that could handle such sentences up to some fixed depth
+of embedding, but not one that could handle arbitrarily deep embedding.)
+
+<P><H2>Context-Free Languages</H2>
+
+
+<P>If we allow the use of the <CODE>@</CODE> quantifier in patterns, and if the
+predicates used to test substrings of the sentences are true functions
+without side effects, then the pattern matcher is equivalent to an RTN or a
+production rule grammar.  What makes an RTN different from a finite-state
+machine is that the former can include arrows that match several symbols
+against another (or the same) RTN.  Equivalently, the <CODE>@</CODE> quantifier
+matches several symbols against another (or the same) pattern.
+
+<P>A language that can be represented by an RTN is called a <EM>
+context-free</EM> language.  The reason for the name is that in such a
+language a given string consistently matches or doesn't match a given
+predicate regardless of the rest of the sentence.  That's the point of what
+I said just above about side effects; the output from a test predicate
+can't depend on anything other than its input.  Pascal is a context-free
+language because
+
+<P><PRE>this := that
+</PRE>
+
+<P>is always an assignment statement regardless of what other statements
+might be in the program with it.
+
+<P>What <EM>isn't</EM> a context-free language?  The classic example in automata
+theory is the language consisting of the strings
+
+<P><PRE>abc
+aabbcc
+aaabbbccc
+aaaabbbbcccc
+</PRE>
+
+<P>and so on, with the requirement that the number of <CODE>a</CODE>s be
+equal to the number of <CODE>b</CODE>s and also equal to the number of <CODE>c</CODE>s.
+That language can't be represented as RTNs or production rules.  (Try it.
+Don't confuse it with the language that accepts any number of <CODE>a</CODE>s
+followed by any number of <CODE>b</CODE>s and so on; even a finite-state machine
+can represent that one.  The equal number requirement is important.)
+
+<P>The classic formal system that can represent <EM>any</EM> language for which
+there are precise rules is the Turing machine.  Its advantage over
+the RTN is precisely that it can &quot;jump around&quot; in its memory, looking at
+one part while making decisions about another part.
+
+<P>There is a sharp theoretical boundary between context-free and
+context-sensitive languages, but in practice the boundary is sometimes fuzzy.
+Consider again the case of Pascal and that assignment statement.  I said
+that it's recognizably an assignment statement because it matches a
+production rule like
+
+<P><PRE>assignment    :  identifier := expression
+</PRE>
+
+<P>(along with a bunch of other rules that determine what qualifies
+as an expression).  But that production rule doesn't really express <EM>
+all</EM> the requirements for a legal Pascal assignment statement.  For
+example, the identifier and the expression must be of the same type.  The
+actual Pascal compiler (any Pascal compiler, not just mine) includes
+instructions that represent the formal grammar plus extra instructions that
+represent the additional requirements.
+
+<P>The type agreement rule is an example of context sensitivity.  The types of
+the relevant identifiers were determined in <CODE>var</CODE> declarations earlier
+in the program; those declarations are part of what determines whether the
+given string of symbols is a legal assignment.
+
+<P><H2>Augmented Transition Networks</H2>
+
+<P>One could create a clean formal description of Pascal, type agreement rules
+and all, by designing a Turing machine to accept Pascal programs.  However,
+Turing machines aren't easy to work with for any practical problem.  It's
+much easier to set up a context-free grammar for Pascal and then throw in a
+few side effects to handle the context-sensitive aspects of the language.
+
+<P>Much the same is true of English.  It's possible to set up an RTN (or a
+production rule grammar) for noun phrases, for example, and another one for
+verb phrases.  It's tempting then to set up an RTN for a sentence like this:
+
+<P><CENTER><IMG SRC="sentence.gif" ALT="figure: sentence"></CENTER>
+
+<P>This machine captures some, but not all, of the rules of English.
+It's true that a sentence requires a noun phrase (the subject) and a verb
+phrase (the predicate).  But there are <EM>agreement</EM> rules for person
+and number (I <EM>run</EM> but he <EM>runs</EM>) analogous to the type
+agreement rules of Pascal.
+
+<P>Some artificial intelligence researchers, understanding all this, parse
+English sentences using a formal description called an <EM>
+augmented transition network</EM> (ATN).  An ATN is just
+like an RTN except
+that each transition arrow can have associated with it not only the name of
+a symbol or another RTN but also some <EM>conditions</EM> that must be met in
+order to follow the arrow and some <EM>actions</EM> that the program should
+take if the arrow is followed.  For example, we could turn the RTN just
+above into an ATN by adding an action to the first arrow saying &quot;store the
+number (singular or plural) of the noun phrase in the variable <CODE>
+number</CODE>&quot; and adding a condition to the second arrow saying &quot;the number of
+the verb phrase must be equal to the variable <CODE>number</CODE>.&quot;
+
+<P>Subject-predicate agreement is not the only rule in English grammar best
+expressed as a side effect in a transition network.  Below is an ATN
+for noun phrases taken from <EM>Language as a Cognitive Process, Volume 1:
+Syntax</EM> by Terry Winograd (page 598).  I'm not going to attempt to explain
+the notation or the detailed rules here, but just to give one example, the
+condition labeled &quot;h16p&quot; says that the transition for apostrophe-s can be
+followed if the head of the phrase is an ordinary noun (&quot;the book's&quot;) but
+not if it's a pronoun (&quot;you's&quot;).
+
+<P>
+<CENTER><A NAME="winograd"><IMG SRC="atn.gif" ALT="figure: atn"></A></CENTER>
+
+<P>The ATN is equivalent in power to a Turing machine; there is no known
+mechanism that is more flexible in carrying out algorithms.  The flexibility
+has a cost, though.  The time required to parse a string with an ATN is not
+bounded by a polynomial function.  (Remember, the time for an RTN is
+O(<EM>n</EM><SUP><SMALL>3</SMALL></SUP>).)  It can easily be exponential, O(2<SUP><SMALL><EM>n</EM></SMALL></SUP>).  One reason is that a
+context-sensitive procedure can't be subject to memoization.  If two
+invocations of the same procedure with the same inputs can give different
+results because of side effects, it does no good to remember what result we
+got the last time.  Turning an ATN into a practical program is often
+possible, but not a trivial task.
+
+<P>In thinking about ATNs we've brought together most of the topics in this
+book: formal systems, algorithms, language parsing, and artificial
+intelligence.  Perhaps that's a good place to stop.
+
+<P>
+<TABLE width="100%"><TR><TD><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<TD align="right"><A HREF="../v3ch5/v3ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch7/v3ch7.html"><STRONG>NEXT</STRONG></A>
+</TABLE>
+
+<H2>Program Listing</H2>
+
+<P><PRE>
+to student :prob
+say [The problem to be solved is] :prob
+make "prob map.se [depunct ?] :prob
+localmake "orgprob :prob
+student1 :prob ~
+         [[[the perimeter of ! rectangle]
+           [twice the sum of the length and width of the rectangle]]
+          [[two numbers] [one of the numbers and the other number]]
+          [[two numbers] [one number and the other number]]]
+end
+
+to student1 :prob :idioms
+local [simsen shelf aunits units wanted ans var lasteqn
+       ref eqt1 beg end idiom reply]
+make "prob idioms :prob
+if match [^ two numbers #] :prob ~
+   [make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms ~
+    tryidiom stop]
+while [match [^beg the the #end] :prob] [make "prob (sentence :beg "the :end)]
+say [With mandatory substitutions the problem is] :prob
+ifelse match [# @:in [[as old as] [age] [years old]] #] :prob ~
+       [ageprob] [make "simsen bracket :prob]
+lsay [The simple sentences are] :simsen
+foreach [aunits wanted ans var lasteqn ref units] [make ? []]
+make "shelf filter [not emptyp ?] map.se [senform ?] :simsen
+lsay [The equations to be solved are] :shelf
+make "units remdup :units
+if trysolve :shelf :wanted :units :aunits [print [The problem is solved.] stop]
+make "eqt1 remdup geteqns :var
+if not emptyp :eqt1 [lsay [Using the following known relationships] :eqt1]
+student2 :eqt1
+end
+
+to student2 :eqt1
+make "var remdup sentence (map.se [varterms ?] :eqt1) :var
+make "eqt1 sentence :eqt1 vartest :var
+if not emptyp :eqt1 ~
+   [if trysolve (sentence :shelf :eqt1) :wanted :units :aunits
+       [print [The problem is solved.] stop]]
+make "idiom find [match (sentence "^beg first ? "#end) :orgprob] :idioms
+if not emptyp :idiom [tryidiom stop]
+lsay [Do you know any more relationships among these variables?] :var
+make "reply readlist
+if equalp :reply [yes] [print [Tell me.] make "reply readlist]
+if equalp :reply [no] [print [] print [I can't solve this problem.] stop]
+make "reply map.se [depunct ?] :reply
+if dlm last :reply [make "reply butlast :reply]
+if not match [^beg is #end] :reply [print [I don't understand that.] stop]
+make "shelf sentence :shelf :eqt1
+student2 (list (list "equal opform :beg opform :end))
+end
+
+;; Mandatory substitutions
+
+to depunct :word
+if emptyp :word [output []]
+if equalp first :word "$ [output sentence "$ depunct butfirst :word]
+if equalp last :word "% [output sentence depunct butlast :word "percent]
+if memberp last :word [. ? |;| ,] [output sentence depunct butlast :word last :word]
+if emptyp butfirst :word [output :word]
+if equalp last2 :word "'s [output sentence depunct butlast butlast :word "s]
+output :word
+end
+
+to last2 :word
+output word (last butlast :word) (last :word)
+end
+
+to idioms :sent
+local "number
+output changes :sent ~
+    [[[the sum of] ["sum]] [[square of] ["square]] [[of] ["numof]]
+     [[how old] ["what]] [[is equal to] ["is]]
+     [[years younger than] [[less than]]] [[years older than] ["plus]]
+     [[percent less than] ["perless]] [[less than] ["lessthan]]
+     [[these] ["the]] [[more than] ["plus]]
+     [[first two numbers] [[the first number and the second number]]]
+     [[three numbers]
+      [[the first number and the second number and the third number]]]
+     [[one half] [0.5]] [[twice] [[2 times]]]
+     [[$ !number] [sentence :number "dollars]] [[consecutive to] [[1 plus]]]
+     [[larger than] ["plus]] [[per cent] ["percent]] [[how many] ["howm]]
+     [[is multiplied by] ["ismulby]] [[is divided by] ["isdivby]]
+     [[multiplied by] ["times]] [[divided by] ["divby]]]
+end
+
+to changes :sent :list
+localmake "keywords map.se [findkey first ?] :list
+output changes1 :sent :list :keywords
+end
+
+to findkey :pattern
+if equalp first :pattern "!:in [output first butfirst :pattern]
+if equalp first :pattern "?:in [output sentence (item 2 :pattern) (item 3 :pattern)]
+output first :pattern
+end
+
+to changes1 :sent :list :keywords
+if emptyp :sent [output []]
+if memberp first :sent :keywords [output changes2 :sent :list :keywords]
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes2 :sent :list :keywords
+changes3 :list :list
+output fput first :sent changes1 butfirst :sent :list :keywords
+end
+
+to changes3 :biglist :nowlist
+if emptyp :nowlist [stop]
+if changeone first :nowlist [changes3 :biglist :biglist stop]
+changes3 :biglist butfirst :nowlist
+end
+
+to changeone :change
+local "end
+if not match (sentence first :change [#end]) :sent [output "false]
+make "sent run (sentence "sentence last :change ":end)
+output "true
+end
+
+;; Division into simple sentences
+
+to bracket :prob
+output bkt1 finddelim :prob
+end
+
+to finddelim :sent
+output finddelim1 :sent [] []
+end
+
+to finddelim1 :in :out :simples
+if emptyp :in ~
+   [ifelse emptyp :out [output :simples] [output lput (sentence :out ".) :simples]]
+if dlm first :in ~
+   [output finddelim1 (nocap butfirst :in) []
+                      (lput (sentence :out first :in) :simples)]
+output finddelim1 (butfirst :in) (sentence :out first :in) :simples
+end
+
+to nocap :words
+if emptyp :words [output []]
+if personp first :words [output :words]
+output sentence (lowercase first :words) butfirst :words
+end
+
+to bkt1 :problist
+local [first word rest]
+if emptyp :problist [output []]
+if not memberp ", first :problist ~
+   [output fput first :problist bkt1 butfirst :problist]
+if match [if ^first , !word:qword #rest] first :problist ~
+   [output bkt1 fput (sentence :first ".)
+                     fput (sentence :word :rest) butfirst :problist]
+if match [^first , and #rest] first :problist ~
+   [output fput (sentence :first ".) (bkt1 fput :rest butfirst :problist)]
+output fput first :problist bkt1 butfirst :problist
+end
+
+;; Age problems
+
+to ageprob
+local [beg end sym who num subj ages]
+while [match [^beg as old as #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg years old #end] :prob] [make "prob sentence :beg :end]
+while [match [^beg will be when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg "in :sym [years . in] :sym "years :end)]
+while [match [^beg was when #end] :prob] ~
+      [make "sym gensym
+       make "prob (sentence :beg :sym [years ago .] :sym [years ago] :end)]
+while [match [^beg !who:personp will be in !num years #end] :prob] ~
+      [make "prob (sentence :beg :who [s age in] :num "years #end)]
+while [match [^beg was #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg will be #end] :prob] [make "prob (sentence :beg "is :end)]
+while [match [^beg !who:personp is now #end] :prob] ~
+      [make "prob (sentence :beg :who [s age now] :end)]
+while [match [^beg !num years from now #end] :prob] ~
+      [make "prob (sentence :beg "in :num "years :end)]
+make "prob ageify :prob
+ifelse match [^ !who:personp ^end s age #] :prob ~
+       [make "subj sentence :who :end] [make "subj "someone]
+make "prob agepron :prob
+make "end :prob
+make "ages []
+while [match [^ !who:personp ^beg age #end] :end] ~
+      [push "ages (sentence "and :who :beg "age)]
+make "ages butfirst reduce "sentence remdup :ages
+while [match [^beg their ages #end] :prob] [make "prob (sentence :beg :ages :end)]
+make "simsen map [agesen ?] bracket :prob
+end
+
+to ageify :sent
+if emptyp :sent [output []]
+if not personp first :sent [output fput first :sent ageify butfirst :sent]
+catch "error [if equalp first butfirst :sent "s
+                 [output fput first :sent ageify butfirst :sent]]
+output (sentence first :sent [s age] ageify butfirst :sent)
+end
+
+to agepron :sent
+if emptyp :sent [output []]
+if not pronoun first :sent [output fput first :sent agepron butfirst :sent]
+if posspro first :sent [output (sentence :subj "s agepron butfirst :sent)]
+output (sentence :subj [s age] agepron butfirst :sent)
+end
+
+to agesen :sent
+local [when rest num]
+make "when []
+if match [in !num years #rest] :sent ~
+   [make "when sentence "pluss :num make "sent :rest]
+if match [!num years ago #rest] :sent ~
+   [make "when sentence "minuss :num make "sent :rest]
+output agewhen :sent
+end
+
+to agewhen :sent
+if emptyp :sent [output []]
+if not equalp first :sent "age [output fput first :sent agewhen butfirst :sent]
+if match [in !num years #rest] butfirst :sent ~
+   [output (sentence [age pluss] :num agewhen :rest)]
+if match [!num years ago #rest] butfirst :sent ~
+   [output (sentence [age minuss] :num agewhen :rest)]
+if equalp "now first butfirst :sent ~
+   [output sentence "age agewhen butfirst butfirst :sent]
+output (sentence "age :when agewhen butfirst :sent)
+end
+
+;; Translation from sentences into equations
+
+to senform :sent
+make "lasteqn senform1 :sent
+output :lasteqn
+end
+
+to senform1 :sent
+local [one two verb1 verb2 stuff1 stuff2 factor]
+if emptyp :sent [output []]
+if match [^ what are ^one and ^two !:dlm] :sent ~
+   [output fput (qset :one) (senform (sentence [what are] :two "?))]
+if match [^ what !:in [is are] #one !:dlm] :sent ~
+   [output (list qset :one)]
+if match [^ howm !one is #two !:dlm] :sent ~
+   [push "aunits (list :one) output (list qset :two)]
+if match [^ howm ^one do ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "have))]
+if match [^ howm ^one does ^two have !:dlm] :sent ~
+   [output (list qset (sentence [the number of] :one :two "has))]
+if match [^ find ^one and #two] :sent ~
+   [output fput (qset :one) (senform sentence "find :two)]
+if match [^ find #one !:dlm] :sent [output (list qset :one)]
+make "sent filter [not article ?] :sent
+if match [^one ismulby #two] :sent ~
+   [push "ref (list "product opform :one opform :two) output []]
+if match [^one isdivby #two] :sent ~
+   [push "ref (list "quotient opform :one opform :two) output []]
+if match [^one is increased by #two] :sent ~
+   [push "ref (list "sum opform :one opform :two) output []]
+if match [^one is #two] :sent ~
+   [output (list (list "equal opform :one opform :two))]
+if match [^one !verb1:verb ^factor as many ^stuff1 as
+          ^two !verb2:verb ^stuff2 !:dlm] ~
+         :sent ~
+   [if emptyp :stuff2 [make "stuff2 :stuff1]
+    output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (sentence :factor [the number of] :stuff2 :two :verb2)))]
+if match [^one !verb1:verb !factor:numberp #stuff1 !:dlm] :sent ~
+   [output (list (list "equal ~
+                   opform (sentence [the number of] :stuff1 :one :verb1) ~
+                   opform (list :factor)))]
+say [This sentence form is not recognized:] :sent
+throw "error
+end
+
+to qset :sent
+localmake "opform opform filter [not article ?] :sent
+if not operatorp first :opform ~
+   [queue "wanted :opform queue "ans list :opform oprem :sent output []]
+localmake "gensym gensym
+queue "wanted :gensym
+queue "ans list :gensym oprem :sent
+output (list "equal :gensym opform (filter [not article ?] :sent))
+end
+
+to oprem :sent
+output map [ifelse equalp ? "numof ["of] [?]] :sent
+end
+
+to opform :expr
+local [left right op]
+if match [^left !op:op2 #right] :expr [output optest :op :left :right]
+if match [^left !op:op1 #right] :expr [output optest :op :left :right]
+if match [^left !op:op0 #right] :expr [output optest :op :left :right]
+if match [#left !:dlm] :expr [make "expr :left]
+output nmtest filter [not article ?] :expr
+end
+
+to optest :op :left :right
+output run (list (word "tst. :op) :left :right)
+end
+
+to tst.numof :left :right
+if numberp last :left [output (list "product opform :left opform :right)]
+output opform (sentence :left "of :right)
+end
+
+to tst.divby :left :right
+output (list "quotient opform :left opform :right)
+end
+
+to tst.tothepower :left :right
+output (list "expt opform :left opform :right)
+end
+
+to expt :num :pow
+if :pow < 1 [output 1]
+output :num * expt :num :pow - 1
+end
+
+to tst.per :left :right
+output (list "quotient ~
+          opform :left ~
+          opform (ifelse numberp first :right [:right] [fput 1 :right]))
+end
+
+to tst.lessthan :left :right
+output opdiff opform :right opform :left
+end
+
+to opdiff :left :right
+output (list "sum :left (list "minus :right))
+end
+
+to tst.minus :left :right
+if emptyp :left [output list "minus opform :right]
+output opdiff opform :left opform :right
+end
+
+to tst.minuss :left :right
+output tst.minus :left :right
+end
+
+to tst.sum :left :right
+local [one two three]
+if match [^one and ^two and #three] :right ~
+   [output (list "sum opform :one opform (sentence "sum :two "and :three))]
+if match [^one and #two] :right ~
+   [output (list "sum opform :one opform :two)]
+say [sum used wrong:] :right
+throw "error
+end
+
+to tst.squared :left :right
+output list "square opform :left
+end
+
+to tst.difference :left :right
+local [one two]
+if match [between ^one and #two] :right [output opdiff opform :one opform :two]
+say [Incorrect use of difference:] :right
+throw "error
+end
+
+to tst.plus :left :right
+output (list "sum opform :left opform :right)
+end
+
+to tst.pluss :left :right
+output tst.plus :left :right
+end
+
+to square :x
+output :x * :x
+end
+
+to tst.square :left :right
+output list "square opform :right
+end
+
+to tst.percent :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output opform (sentence butlast :left ((last :left) / 100) :right)
+end
+
+to tst.perless :left :right
+if not numberp last :left ~
+   [say [Incorrect use of percent:] :left throw "error]
+output (list "product ~
+          (opform sentence butlast :left ((100 - (last :left)) / 100)) ~
+          opform :right)
+end
+
+to tst.times :left :right
+if emptyp :left [say [Incorrect use of times:] :right throw "error]
+output (list "product opform :left opform :right)
+end
+
+to nmtest :expr
+if match [& !:numberp #] :expr [say [argument error:] :expr throw "error]
+if and (equalp first :expr 1) (1 < count :expr) ~
+   [make "expr (sentence 1 plural (first butfirst :expr) (butfirst butfirst :expr))]
+if and (numberp first :expr) (1 < count :expr) ~
+   [push "units (list first butfirst :expr) ~
+    output (list "product (first :expr) (opform butfirst :expr))]
+if numberp first :expr [output first :expr]
+if memberp "this :expr [output this :expr]
+if not memberp :expr :var [push "var :expr]
+output :expr
+end
+
+to this :expr
+if not emptyp :ref [output pop "ref]
+if not emptyp :lasteqn [output first butfirst last :lasteqn]
+if equalp first :expr "this [make "expr butfirst :expr]
+push "var :expr
+output :expr
+end
+
+;; Solving the equations
+
+to trysolve :shelf :wanted :units :aunits
+local "solution
+make "solution solve :wanted :shelf (ifelse emptyp :aunits [:units] [:aunits])
+output pranswers :ans :solution
+end
+
+to solve :wanted :eqt :terms
+output solve.reduce solver :wanted :terms [] [] "insufficient
+end
+
+to solve.reduce :soln
+if emptyp :soln [output []]
+if wordp :soln [output :soln]
+if emptyp butfirst :soln [output :soln]
+local "part
+make "part solve.reduce butfirst :soln
+output fput (list (first first :soln) (subord last first :soln :part)) :part
+end
+
+to solver :wanted :terms :alis :failed :err
+local [one result restwant]
+if emptyp :wanted [output :err]
+make "one solve1 (first :wanted) ~
+                 (sentence butfirst :wanted :failed :terms) ~
+                 :alis :eqt [] "insufficient
+if wordp :one ~
+   [output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one]
+make "restwant (sentence :failed butfirst :wanted)
+if emptyp :restwant [output :one]
+make "result solver :restwant :terms :one [] "insufficient
+if listp :result [output :result]
+output solver (butfirst :wanted) :terms :alis (fput first :wanted :failed) :one
+end
+
+to solve1 :x :terms :alis :eqns :failed :err
+local [thiseq vars extras xterms others result]
+if emptyp :eqns [output :err]
+make "thiseq subord (first :eqns) :alis
+make "vars varterms :thiseq
+if not memberp :x :vars ~
+   [output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :err]
+make "xterms fput :x :terms
+make "extras setminus :vars :xterms
+make "eqt remove (first :eqns) :eqt
+if not emptyp :extras ~
+   [make "others solver :extras :xterms :alis [] "insufficient
+    ifelse wordp :others
+           [make "eqt sentence :failed :eqns
+            output solve1 :x :terms :alis (butfirst :eqns)
+                      (fput first :eqns :failed) :others]
+           [make "alis :others
+            make "thiseq subord (first :eqns) :alis]]
+make "result solveq :x :thiseq
+if listp :result [output lput :result :alis]
+make "eqt sentence :failed :eqns
+output solve1 :x :terms :alis (butfirst :eqns) (fput first :eqns :failed) :result
+end
+
+to solveq :var :eqn
+local [left right]
+make "left first butfirst :eqn
+ifelse occvar :var :left ~
+   [make "right last :eqn] [make "right :left make "left last :eqn]
+output solveq1 :left :right "true
+end
+
+to solveq1 :left :right :bothtest
+if :bothtest [if occvar :var :right [output solveqboth :left :right]]
+if equalp :left :var [output list :var :right]
+if wordp :left [output "unsolvable]
+local "oper
+make "oper first :left
+if memberp :oper [sum product minus quotient] [output run (list word "solveq. :oper)]
+output "unsolvable
+end
+
+to solveqboth :left :right
+if not equalp first :right "sum [output solveq1 (subterm :left :right) 0 "false]
+output solveq.rplus :left butfirst :right []
+end
+
+to solveq.rplus :left :right :newright
+if emptyp :right [output solveq1 :left (simone "sum :newright) "false]
+if occvar :var first :right ~
+   [output solveq.rplus (subterm :left first :right) butfirst :right :newright]
+output solveq.rplus :left butfirst :right (fput first :right :newright)
+end
+
+to solveq.sum
+if emptyp butfirst butfirst :left [output solveq1 first butfirst :left :right "true]
+output solveq.sum1 butfirst :left :right []
+end
+
+to solveq.sum1 :left :right :newleft
+if emptyp :left [output solveq.sum2]
+if occvar :var first :left ~
+   [output solveq.sum1 butfirst :left :right fput first :left :newleft]
+output solveq.sum1 butfirst :left (subterm :right first :left) :newleft
+end
+
+to solveq.sum2
+if emptyp butfirst :newleft [output solveq1 first :newleft :right "true]
+localmake "factor factor :newleft :var
+if equalp first :factor "unknown [output "unsolvable]
+if equalp last :factor 0 [output "unsolvable]
+output solveq1 first :factor (divterm :right last :factor) "true
+end
+
+to solveq.minus
+output solveq1 (first butfirst :left) (minusin :right) "false
+end
+
+to solveq.product
+output solveq.product1 :left :right
+end
+
+to solveq.product1 :left :right
+if emptyp butfirst butfirst :left [output solveq1 (first butfirst :left) :right "true]
+if not occvar :var first butfirst :left ~
+   [output solveq.product1 (fput "product butfirst butfirst :left)
+                           (divterm :right first butfirst :left)]
+localmake "rest simone "product butfirst butfirst :left
+if occvar :var :rest [output "unsolvable]
+output solveq1 (first butfirst :left) (divterm :right :rest) "false
+end
+
+to solveq.quotient
+if occvar :var first butfirst :left ~
+   [output solveq1 (first butfirst :left) (simtimes list :right last :left) "true]
+output solveq1 (simtimes list :right last :left) (first butfirst :left) "true
+end
+
+to denom :fract :addends
+make "addends simplus :addends
+localmake "den last :fract
+if not equalp first :addends "quotient ~
+   [output simdiv list (simone "sum
+                               (remop "sum list (distribtimes (list :addends) :den)
+                                                first butfirst :fract))
+                       :den]
+if equalp :den last :addends ~
+   [output simdiv (simplus list (first butfirst :fract) (first butfirst :addends))
+                  :den]
+localmake "lowterms simdiv list :den last :addends
+output simdiv list (simplus (simtimes list first butfirst :fract last :lowterms)
+                            (simtimes list first butfirst :addends
+                                           first butfirst :lowterms)) ~
+                   (simtimes list first butfirst :lowterms last :addends)
+end
+
+to distribtimes :trms :multiplier
+output simplus map [simtimes (list ? :multiplier)] :trms
+end
+
+to distribx :expr
+local [oper args]
+if emptyp :expr [output :expr]
+make "oper first :expr
+if not operatorp :oper [output :expr]
+make "args map [distribx ?] butfirst :expr
+if reduce "and map [numberp ?] :args [output run (sentence [(] :oper :args [)])]
+if equalp :oper "sum [output simplus :args]
+if equalp :oper "minus [output minusin first :args]
+if equalp :oper "product [output simtimes :args]
+if equalp :oper "quotient [output simdiv :args]
+output fput :oper :args
+end
+
+to divterm :dividend :divisor
+if equalp :dividend 0 [output 0]
+output simdiv list :dividend :divisor
+end
+
+to factor :exprs :var
+local "trms
+make "trms map [factor1 :var ?] :exprs
+if memberp "unknown :trms [output fput "unknown :exprs]
+output list :var simplus :trms
+end
+
+to factor1 :var :expr
+localmake "negvar minusin :var
+if equalp :var :expr [output 1]
+if equalp :negvar :expr [output -1]
+if emptyp :expr [output "unknown]
+if equalp first :expr "product [output factor2 butfirst :expr]
+if not equalp first :expr "quotient [output "unknown]
+localmake "dividend first butfirst :expr
+if equalp :var :dividend [output (list "quotient 1 last :expr)]
+if not equalp first :dividend "product [output "unknown]
+localmake "result factor2 butfirst :dividend
+if equalp :result "unknown [output "unknown]
+output (list "quotient :result last :expr)
+end
+
+to factor2 :trms
+if memberp :var :trms [output simone "product (remove :var :trms)]
+if memberp :negvar :trms [output minusin simone "product (remove :negvar :trms)]
+output "unknown
+end
+
+to maybeadd :num :rest
+if equalp :num 0 [output :rest]
+output fput :num :rest
+end
+
+to maybemul :num :rest
+if equalp :num 1 [output :rest]
+output fput :num :rest
+end
+
+to minusin :expr
+if emptyp :expr [output -1]
+if equalp first :expr "sum [output fput "sum map [minusin ?] butfirst :expr]
+if equalp first :expr "minus [output last :expr]
+if memberp first :expr [product quotient] ~
+   [output fput first :expr
+                (fput (minusin first butfirst :expr) butfirst butfirst :expr)]
+if numberp :expr [output minus :expr]
+output list "minus :expr
+end
+
+to occvar :var :expr
+if emptyp :expr [output "false]
+if wordp :expr [output equalp :var :expr]
+if operatorp first :expr [output not emptyp find [occvar :var ?] butfirst :expr]
+output equalp :var :expr
+end
+
+to remfactor :num :den
+foreach butfirst :num [remfactor1 ?]
+output (list "quotient (simone "product butfirst :num) (simone "product butfirst :den))
+end
+
+to remfactor1 :expr
+local "neg
+if memberp :expr :den ~
+   [make "num remove :expr :num  make "den remove :expr :den  stop]
+make "neg minusin :expr
+if not memberp :neg :den [stop]
+make "num remove :expr :num
+make "den minusin remove :neg :den
+end
+
+to remop :oper :exprs
+output map.se [ifelse equalp first ? :oper [butfirst ?] [(list ?)]] :exprs
+end
+
+to simdiv :list
+local [num den numop denop]
+make "num first :list
+make "den last :list
+if equalp :num :den [output 1]
+if numberp :den [output simtimes (list (quotient 1 :den) :num)]
+make "numop first :num
+make "denop first :den
+if equalp :numop "quotient ~
+   [output simdiv list (first butfirst :num) (simtimes list last :num :den)]
+if equalp :denop "quotient ~
+   [output simdiv list (simtimes list :num last :den) (first butfirst :den)]
+if and equalp :numop "product equalp :denop "product [output remfactor :num :den]
+if and equalp :numop "product memberp :den :num [output remove :den :num]
+output fput "quotient :list
+end
+
+to simone :oper :trms
+if emptyp :trms [output ifelse equalp :oper "product [1] [0]]
+if emptyp butfirst :trms [output first :trms]
+output fput :oper :trms
+end
+
+to simplus :exprs
+make "exprs remop "sum :exprs
+localmake "factor [unknown]
+catch "simplus ~
+      [foreach :terms ~
+               [make "factor (factor :exprs ?) ~
+                if not equalp first :factor "unknown [throw "simplus]]]
+if not equalp first :factor "unknown [output fput "product remop "product :factor]
+localmake "nums 0
+localmake "nonnums []
+localmake "quick []
+catch "simplus [simplus1 :exprs]
+if not emptyp :quick [output :quick]
+if not equalp :nums 0 [push "nonnums :nums]
+output simone "sum :nonnums
+end
+
+to simplus1 :exprs
+if emptyp :exprs [stop]
+simplus2 first :exprs
+simplus1 butfirst :exprs
+end
+
+to simplus2 :pos
+local "neg
+make "neg minusin :pos
+if numberp :pos [make "nums sum :pos :nums stop]
+if memberp :neg butfirst :exprs [make "exprs remove :neg :exprs stop]
+if equalp first :pos "quotient ~
+   [make "quick (denom :pos (maybeadd :nums sentence :nonnums butfirst :exprs)) ~
+    throw "simplus]
+push "nonnums :pos
+end
+
+to simtimes :exprs
+local [nums nonnums quick]
+make "nums 1
+make "nonnums []
+make "quick []
+catch "simtimes [foreach remop "product :exprs [simtimes1 ?]]
+if not emptyp :quick [output :quick]
+if equalp :nums 0 [output 0]
+if not equalp :nums 1 [push "nonnums :nums]
+output simone "product :nonnums
+end
+
+to simtimes1 :expr
+if equalp :expr 0 [make "nums 0 throw "simtimes]
+if numberp :expr [make "nums product :expr :nums stop]
+if equalp first :expr "sum ~
+   [make "quick distribtimes (butfirst :expr)
+                             (simone "product maybemul :nums sentence :nonnums ?rest)
+    throw "simtimes]
+if equalp first :expr "quotient ~
+   [make "quick
+          simdiv (list (simtimes (list (first butfirst :expr)
+                                       (simone "product
+                                               maybemul :nums
+                                                        sentence :nonnums ?rest)))
+                       (last :expr))
+    throw "simtimes]
+push "nonnums :expr
+end
+
+to subord :expr :alist
+output distribx subord1 :expr :alist
+end
+
+to subord1 :expr :alist
+if emptyp :alist [output :expr]
+output subord (substop (last first :alist) (first first :alist) :expr) ~
+              (butfirst :alist)
+end
+
+to substop :val :var :expr
+if emptyp :expr [output []]
+if equalp :expr :var [output :val]
+if not operatorp first :expr [output :expr]
+output fput first :expr map [substop :val :var ?] butfirst :expr
+end
+
+to subterm :minuend :subtrahend
+if equalp :minuend 0 [output minusin :subtrahend]
+if equalp :minuend :subtrahend [output 0]
+output simplus (list :minuend minusin :subtrahend)
+end
+
+to varterms :expr
+if emptyp :expr [output []]
+if numberp :expr [output []]
+if wordp :expr [output (list :expr)]
+if operatorp first :expr [output map.se [varterms ?] butfirst :expr]
+output (list :expr)
+end
+
+;; Printing the solutions
+
+to pranswers :ans :solution
+print []
+if equalp :solution "unsolvable ~
+   [print [Unable to solve this set of equations.] output "false]
+if equalp :solution "insufficient ~
+   [print [The equations were insufficient to find a solution.] output "false]
+localmake "gotall "true
+foreach :ans [if prans ? :solution [make "gotall "false]]
+if not :gotall [print [] print [Unable to solve this set of equations.]]
+output :gotall
+end
+
+to prans :ans :solution
+localmake "result find [equalp first ? first :ans] :solution
+if emptyp :result [output "true]
+print (sentence cap last :ans "is unitstring last :result)
+print []
+output "false
+end
+
+to unitstring :expr
+if numberp :expr [output roundoff :expr]
+if equalp first :expr "product ~
+   [output sentence (unitstring first butfirst :expr)
+                    (reduce "sentence butfirst butfirst :expr)]
+if (and (listp :expr)
+         (not numberp first :expr)
+         (not operatorp first :expr)) ~
+   [output (sentence 1 (singular first :expr) (butfirst :expr))]
+output :expr
+end
+
+to roundoff :num
+if (abs (:num - round :num)) < 0.0001 [output round :num]
+output :num
+end
+
+to abs :num
+output ifelse (:num < 0) [-:num] [:num]
+end
+
+;; Using known relationships
+
+to geteqns :vars
+output map.se [gprop varkey ? "eqns] :vars
+end
+
+to varkey :var
+local "word
+if match [number of !word #] :var [output :word]
+output first :var
+end
+
+;; Assuming equality of similar variables
+
+to vartest :vars
+if emptyp :vars [output []]
+local [var beg end]
+make "var first :vars
+output (sentence (ifelse match [^beg !:pronoun #end] :var
+                         [vartest1 :var (sentence :beg "& :end) butfirst :vars]
+                         [[]])
+                 (vartest1 :var (sentence "# :var "#) butfirst :vars)
+                 (vartest butfirst :vars))
+end
+
+to vartest1 :target :pat :vars
+output map [varequal :target ?] filter [match :pat ?] :vars
+end
+
+to varequal :target :var
+print []
+print [Assuming that]
+print (sentence (list :target) [is equal to] (list :var))
+output (list "equal :target :var)
+end
+
+;; Optional substitutions
+
+to tryidiom
+make "prob (sentence :beg last :idiom :end)
+while [match (sentence "^beg first :idiom "#end) :prob] ~
+      [make "prob (sentence :beg last :idiom :end)]
+say [The problem with an idiomatic substitution is] :prob
+student1 :prob (remove :idiom :idioms)
+end
+
+;; Utility procedures
+
+to qword :word
+output memberp :word [find what howm how]
+end
+
+to dlm :word
+output memberp :word [. ? |;|]
+end
+
+to article :word
+output memberp :word [a an the]
+end
+
+to verb :word
+output memberp :word [have has get gets weigh weighs]
+end
+
+to personp :word
+output memberp :word [Mary Ann Bill Tom Sally Frank father uncle]
+end
+
+to pronoun :word
+output memberp :word [he she it him her they them his her its]
+end
+
+to posspro :word
+output memberp :word [his her its]
+end
+
+to op0 :word
+output memberp :word [pluss minuss squared tothepower per sum difference numof]
+end
+
+to op1 :word
+output memberp :word [times divby square]
+end
+
+to op2 :word
+output memberp :word [plus minus lessthan percent perless]
+end
+
+to operatorp :word
+output memberp :word [sum minus product quotient expt square equal]
+end
+
+to plural :word
+localmake "plural gprop :word "plural
+if not emptyp :plural [output :plural]
+if not emptyp gprop :word "sing [output :word]
+if equalp last :word "s [output :word]
+output word :word "s
+end
+
+to singular :word
+localmake "sing gprop :word "sing
+if not emptyp :sing [output :sing]
+if not emptyp gprop :word "plural [output :word]
+if equalp last :word "s [output butlast :word]
+output :word
+end
+
+to setminus :big :little
+output filter [not memberp ? :little] :big
+end
+
+to say :herald :text
+print []
+print :herald
+print []
+print :text
+print []
+end
+
+to lsay :herald :text
+print []
+print :herald
+print []
+foreach :text [print cap ? print []]
+end
+
+to cap :sent
+if emptyp :sent [output []]
+output sentence (word uppercase first first :sent butfirst first :sent) ~
+                butfirst :sent
+end
+
+;; The pattern matcher
+
+to match :pat :sen
+if prematch :pat :sen [output rmatch :pat :sen]
+output "false
+end
+
+to prematch :pat :sen
+if emptyp :pat [output "true]
+if listp first :pat [output prematch butfirst :pat :sen]
+if memberp first first :pat [! @ # ^ & ?] [output prematch butfirst :pat :sen]
+if emptyp :sen [output "false]
+localmake "rest member first :pat :sen
+if not emptyp :rest [output prematch butfirst :pat :rest]
+output "false
+end
+
+to rmatch :pat :sen
+local [special.var special.pred special.buffer in.list]
+if or wordp :pat wordp :sen [output "false]
+if emptyp :pat [output emptyp :sen]
+if listp first :pat [output special fput "!: :pat :sen]
+if memberp first first :pat [? # ! & @ ^] [output special :pat :sen]
+if emptyp :sen [output "false]
+if equalp first :pat first :sen [output rmatch butfirst :pat butfirst :sen]
+output "false
+end
+
+to special :pat :sen
+set.special parse.special butfirst first :pat "
+output run word "match first first :pat
+end
+
+to parse.special :word :var
+if emptyp :word [output list :var "always]
+if equalp first :word ": [output list :var butfirst :word]
+output parse.special butfirst :word word :var first :word
+end
+
+to set.special :list
+make "special.var first :list
+make "special.pred last :list
+if emptyp :special.var [make "special.var "special.buffer]
+if memberp :special.pred [in anyof] [set.in]
+if not emptyp :special.pred [stop]
+make "special.pred first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to set.in
+make "in.list first butfirst :pat
+make "pat fput first :pat butfirst butfirst :pat
+end
+
+to match!
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var first :sen
+output rmatch butfirst :pat butfirst :sen
+end
+
+to match?
+make :special.var []
+if emptyp :sen [output rmatch butfirst :pat :sen]
+if not try.pred [output rmatch butfirst :pat :sen]
+make :special.var first :sen
+if rmatch butfirst :pat butfirst :sen [output "true]
+make :special.var []
+output rmatch butfirst :pat :sen
+end
+
+to match#
+make :special.var []
+output #test #gather :sen
+end
+
+to #gather :sen
+if emptyp :sen [output :sen]
+if not try.pred [output :sen]
+make :special.var lput first :sen thing :special.var
+output #gather butfirst :sen
+end
+
+to #test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp thing :special.var [output "false]
+output #test2 fput last thing :special.var :sen
+end
+
+to #test2 :sen
+make :special.var butlast thing :special.var
+output #test :sen
+end
+
+to match&
+output &test match#
+end
+
+to &test :tf
+if emptyp thing :special.var [output "false]
+output :tf
+end
+
+to match^
+make :special.var []
+output ^test :sen
+end
+
+to ^test :sen
+if rmatch butfirst :pat :sen [output "true]
+if emptyp :sen [output "false]
+if not try.pred [output "false]
+make :special.var lput first :sen thing :special.var
+output ^test butfirst :sen
+end
+
+to match@
+make :special.var :sen
+output @test []
+end
+
+to @test :sen
+if @try.pred [if rmatch butfirst :pat :sen [output "true]]
+if emptyp thing :special.var [output "false]
+output @test2 fput last thing :special.var :sen
+end
+
+to @test2 :sen
+make :special.var butlast thing :special.var
+output @test :sen
+end
+
+to try.pred
+if listp :special.pred [output rmatch :special.pred first :sen]
+output run list :special.pred quoted first :sen
+end
+
+to quoted :thing
+if listp :thing [output :thing]
+output word "" :thing
+end
+
+to @try.pred
+if listp :special.pred [output rmatch :special.pred thing :special.var]
+output run list :special.pred thing :special.var
+end
+
+to always :x
+output "true
+end
+
+to in :word
+output memberp :word :in.list
+end
+
+to anyof :sen
+output anyof1 :sen :in.list
+end
+
+to anyof1 :sen :pats
+if emptyp :pats [output "false]
+if rmatch first :pats :sen [output "true]
+output anyof1 :sen butfirst :pats
+end
+
+;; Sample word problems
+
+make "ann [Mary is twice as old as Ann was when Mary was as old as Ann is now.
+  If Mary is 24 years old, how old is Ann?]
+make "guns [The number of soldiers the Russians have is
+  one half of the number of guns they have. They have 7000 guns.
+  How many soldiers do they have?]
+make "jet [The distance from New York to Los Angeles is 3000 miles.
+  If the average speed of a jet plane is 600 miles per hour,
+  find the time it takes to travel from New York to Los Angeles by jet.]
+make "nums [A number is multiplied by 6 . This product is increased by 44 .
+  This result is 68 . Find the number.]
+make "radio [The price of a radio is $69.70.
+  If this price is 15 percent less than the marked price, find the marked price.]
+make "sally [The sum of Sally's share of some money and Frank's share is $4.50.
+  Sally's share is twice Frank's. Find Frank's and Sally's share.]
+make "ship [The gross weight of a ship is 20000 tons.
+  If its net weight is 15000 tons, what is the weight of the ships cargo?]
+make "span [If 1 span is 9 inches, and 1 fathom is 6 feet,
+  how many spans is 1 fathom?]
+make "sumtwo [The sum of two numbers is 96,
+  and one number is 16 larger than the other number. Find the two numbers.]
+make "tom [If the number of customers Tom gets is
+  twice the square of 20 per cent of the number of advertisements he runs,
+  and the number of advertisements he runs is 45,
+  what is the number of customers Tom gets?]
+make "uncle [Bill's father's uncle is twice as old as Bill's father.
+  2 years from now Bill's father will be 3 times as old as Bill.
+  The sum of their ages is 92 . Find Bill's age.]
+
+;; Initial data base
+
+pprop "distance "eqns ~
+  [[equal [distance] [product [speed] [time]]]
+   [equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "feet "eqns ~
+  [[equal [product 1 [feet]] [product 12 [inches]]]
+   [equal [product 1 [yards]] [product 3 [feet]]]]
+pprop "feet "sing "foot
+pprop "foot "plural "feet
+pprop "gallons "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "gas "eqns ~
+  [[equal [distance] [product [gas consumtion] [number of gallons of gas used]]]]
+pprop "inch "plural "inches
+pprop "inches "eqns [[equal [product 1 [feet]] [product 12 [inches]]]]
+pprop "people "sing "person
+pprop "person "plural "people
+pprop "speed "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "time "eqns [[equal [distance] [product [speed] [time]]]]
+pprop "yards "eqns [[equal [product 1 [yards]] [product 3 [feet]]]]
+</PRE>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch5/v3ch5.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="https://people.eecs.berkeley.edu/~bh/v3ch7/v3ch7.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch7/appindex.html b/js/games/nluqo.github.io/~bh/v3ch7/appindex.html
new file mode 100644
index 0000000..50f3944
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch7/appindex.html
@@ -0,0 +1,1435 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3: General Index</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>General Index</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This index lists technical terms and primitive procedures.  There is also an
+<A HREF="appuindex.html">index of defined procedures</A>, which
+lists procedures whose definitions are in
+the text and procedures that you are asked to write.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P><A HREF="appindex.html#A">A</A> <A HREF="appindex.html#B">B</A> <A HREF="appindex.html#C">C</A> <A HREF="appindex.html#D">D</A> <A HREF="appindex.html#E">E</A> <A HREF="appindex.html#F">F</A> <A HREF="appindex.html#G">G</A> <A HREF="appindex.html#H">H</A> <A HREF="appindex.html#I">I</A> <A HREF="appindex.html#J">J</A> <A HREF="appindex.html#K">K</A> <A HREF="appindex.html#L">L</A> <A HREF="appindex.html#M">M</A> <A HREF="appindex.html#N">N</A> <A HREF="appindex.html#O">O</A> <A HREF="appindex.html#P">P</A> <A HREF="appindex.html#Q">Q</A> <A HREF="appindex.html#R">R</A> <A HREF="appindex.html#S">S</A> <A HREF="appindex.html#T">T</A> <A HREF="appindex.html#U">U</A> <A HREF="appindex.html#V">V</A> <A HREF="appindex.html#W">W</A> <A HREF="appindex.html#X">X</A> <A HREF="appindex.html#Y">Y</A> <A HREF="appindex.html#Z">Z</A> 
+
+
+<P><BR>
+&forall; <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+&and; <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+&not; <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+&or; <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+&otimes; <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+&Sigma; <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+&rarr; <A HREF="../v3ch2/math.html">Ch2</A>
+<P><A NAME="A"></A>
+<BR>
+Abelson, Harold <A HREF="../v3ch0/preface.html">Pref</A>
+, <A HREF="../v3ch0/ack.html">Ack</A>
+, <A HREF="biblio.html">Biblio</A>
+<BR>
+accepting state <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+access, random <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+actual argument <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+adder <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+adder, finite-state <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+address <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+age problem <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+aggregate type <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+algebra word problems <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+algorithm <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+algorithm, two-stack <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+algorithms, analysis of <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+allocation, dynamic <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+alphabet rule <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+alternatives rule <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+ambiguous <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+analysis of algorithms <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+analysis, lexical <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Anderson, Chris <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+APL <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+apprenticeship <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+argument, actual <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+array <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+<BR>
+array, packed <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+artificial intelligence <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+assembly language <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+assignment statement <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+<BR>
+Association for Computing Machinery <A HREF="biblio.html">Biblio</A>
+<BR>
+association list <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+ATN <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+augmented transition network <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+automata theory <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="B"></A>
+<BR>
+background <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+backtracking <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+balanced tree <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+balancing parentheses <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+Baldwin, Diane C. <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+BASIC <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Beatles <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>begin</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Bentley, Jon <A HREF="biblio.html">Biblio</A>
+<BR>
+bibliography <A HREF="biblio.html">Biblio</A>
+<BR>
+binary computer <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+binary number <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+binary operator <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+binary search algorithm <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+binary tree <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+binding, call by <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+binomial coefficient <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+bit <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+, <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+block structure <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+Bobrow, Daniel G. <A HREF="../v3ch0/ack.html">Ack</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>Boolean</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+bottom-up <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+bound reference <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+branch node <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+byte <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<P><A NAME="C"></A>
+<BR>
+C <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+CAI, intelligent <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+call by binding <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+call by reference <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+call by value <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+call, procedure <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+category <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>char</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+checking, compile-time <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Chinese food <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+circuit, integrated <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Clancy, Michael <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+closed form definition <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+code generation <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+coefficient, binomial <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+coefficient, multinomial <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+cognitive science <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+Colby, Kenneth <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+combination <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+combination lock <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+combinatorics <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+common subexpression elimination <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+community <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+compile-time checking <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+compiler <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+compiler compiler <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+compiler, incremental <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+compiler, optimizing <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+compiler, Pascal <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+complexity <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+composition of functions <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+compound proposition <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+compound statement <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+computer assisted instruction <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+computer center <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+computer hardware <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+computer logic <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+computer science <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+computer, binary <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+concatenation rule <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+conditional statement <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+constant string <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+constructor <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+context, limited <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+context-free language <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+continuous function <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+contradiction, proof by <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+contrapositive rule <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+correctness <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+correspondence, one-to-one <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+counting problem <A HREF="../v3ch2/math.html">Ch2</A>
+<P><A NAME="D"></A>
+<BR>
+data structure <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+data type <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Davis, Jim <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+declaration part <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+declarative knowledge <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+declarative programming <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+declarative programming languages <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+declarative representation <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+definition, closed form <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+definition, formal <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+definition, inductive <A HREF="../v3ch2/math.html">Ch2</A>
+
+
+, <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+definition, recursive <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+descent, recursive <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+deterministic grammar <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+directed graph <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+discrete mathematics <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+Dreyfus, Hubert L. <A HREF="biblio.html">Biblio</A>
+<BR>
+dyadic <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+dynamic allocation <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+dynamic environment <A HREF="../v3ch4/langd.html">Ch4</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+dynamic programming <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+dynamic scope <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<P><A NAME="E"></A>
+<BR>
+economics <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+editor, text <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+education <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+effective procedure <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+efficiency <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+elementary function <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+elimination rule <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+embedding <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>end</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+engineering, knowledge <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+English <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+Ennals, Richard <A HREF="biblio.html">Biblio</A>
+<BR>
+enumerated type <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+environment, dynamic <A HREF="../v3ch4/langd.html">Ch4</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+environment, lexical <A HREF="../v3ch4/langd.html">Ch4</A>
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+equation <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+equivalence relation <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+ethics <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+exclusive or <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+expansion, multinomial <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+experimental method <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+expert system <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+exponential <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+expression <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+expression, regular <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+extensibility <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+external memory <A HREF="../v3ch1/fsm.html">Ch1</A>
+<P><A NAME="F"></A>
+<BR>
+factorial <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+fence <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Fermat, Pierre de <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+finite-state adder <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+finite-state machine <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>first</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+food, Chinese <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+forest <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+formal definition <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+formal parameter <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+formal thinking <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+<CODE>for</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+<BR>
+frame pointer <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+frame, stack <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+free reference <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+Friedman, Daniel P. <A HREF="biblio.html">Biblio</A>
+<BR>
+function, continuous <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+function, elementary <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+function, generating <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+function, predicate <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+function, sine <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+function, truth-valued <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+functional programming <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+functions, composition of <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>function</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<P><A NAME="G"></A>
+<BR>
+gate <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+general knowledge <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+generated symbol <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+generating function <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+generation, code <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+global optimization <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+global pointer <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Goldenberg, Paul <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+grammar, deterministic <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+grammar, predictive <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+graph <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+graph, directed <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+graphics <A HREF="../v3ch0/preface.html">Pref</A>
+<P><A NAME="H"></A>
+<BR>
+half-adder <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+halting state <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+halting theorem <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+Hanoi, Tower of <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+hardware, computer <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+Harnadek, Anita <A HREF="../v3ch0/ack.html">Ack</A>
+, <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+hash table <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Haynes, Christopher T. <A HREF="biblio.html">Biblio</A>
+<BR>
+heap <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+heapsort <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+heuristic <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+hierarchy <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+hierarchy, syntactic <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Hilfinger, Paul <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+Hoare, C. A. R. <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Hofstadter, Douglas R. <A HREF="biblio.html">Biblio</A>
+<P><A NAME="I"></A>
+<BR>
+<CODE>if</CODE> (Pascal) <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+immediate <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+implication rule <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+incremental compiler <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+independent <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+index register <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+index variable <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+individual <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+induction, mathematical <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+inductive definition <A HREF="../v3ch2/math.html">Ch2</A>
+
+
+, <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+inference system <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+inference, rules of <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+infinite loop <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+infinite set <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+insertion sort <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+instruction, computer assisted <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+integers, sum of the <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>integer</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+integrated circuit <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+intellectual property <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+intelligence, artificial <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+intelligent CAI <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+interactive language <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+intermediate language <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+internal state <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+interpreter <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+intractable <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+inverter <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+Iverson, Kenneth E. <A HREF="../v3ch5/langi.html">Ch5</A>
+<P><A NAME="J"></A>
+<BR>
+Jensen, Kathleen <A HREF="biblio.html">Biblio</A>
+<BR>
+joke <A HREF="../v3ch3/algs.html">Ch3</A>
+<P><A NAME="K"></A>
+<BR>
+keyword <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Kleene, Stephen C. <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+knowledge engineering <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+knowledge representation <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+knowledge, declarative <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+knowledge, general <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+knowledge, procedural <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+Knuth, Donald E. <A HREF="../v3ch3/algs.html">Ch3</A>
+<P><A NAME="L"></A>
+<BR>
+label <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+language, context-free <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+language, interactive <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+language, intermediate <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+language, machine <A HREF="../v3ch4/langd.html">Ch4</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+language, non-interactive <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>last</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+leaf node <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+lexical analysis <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+lexical environment <A HREF="../v3ch4/langd.html">Ch4</A>
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+lexical scope <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+limited context <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+linear <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+linear search algorithm <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Lisp <A HREF="../v3ch4/langd.html">Ch4</A>
+
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+list, association <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+list, property <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+list, sorted <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Liu, Chung Laung <A HREF="biblio.html">Biblio</A>
+<BR>
+<CODE>load</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+local optimization <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+local procedure <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+lock, combination <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+lock, Simplex <A HREF="../v3ch2/math.html">Ch2</A>
+, <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+logarithm <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+logic problem <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+logic programming <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+logic, computer <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+logic, predicate <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+logic, propositional <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+logic, ternary <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+Logo <A HREF="../v3ch4/langd.html">Ch4</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+Logo pattern matcher <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+Logo variable <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+lookahead <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+lookahead, one-character <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+loop, infinite <A HREF="../v3ch1/fsm.html">Ch1</A>
+<P><A NAME="M"></A>
+<BR>
+machine language <A HREF="../v3ch4/langd.html">Ch4</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+machine, finite-state <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+machine, nondeterministic <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+machine, theoretical <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+mandatory substitution <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+matching, pattern <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+mathematical induction <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+mathematical model <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+mathematics, discrete <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+memoization <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+memory <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+memory, computer <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+memory, external <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+mergesort <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Meteor <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+microworld <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+Minsky, Marvin <A HREF="biblio.html">Biblio</A>
+
+<BR>
+model, mathematical <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+modification, tree <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+monadic <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+multinomial coefficient <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+multinomial expansion <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+multiplication rule <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+mutator <A HREF="../v3ch3/algs.html">Ch3</A>
+<P><A NAME="N"></A>
+<BR>
+nand <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+network, augmented transition <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+network, recursive transition <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Newell, Allen <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+node, branch <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+node, leaf <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+node, root <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+non-interactive language <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+nondeterministic machine <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+nor <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+null pointer <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+number, binary <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+number, random <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+numerical analysis <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+<CODE>numof</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<P><A NAME="O"></A>
+<BR>
+object-oriented programming <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+offset <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+one-character lookahead <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+one-to-one correspondence <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+operating systems <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+operator precedence <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+operator, binary <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+operator, relational <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+operator, unary <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+optimization, global <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+optimization, local <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+optimizing compiler <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+optional substitution <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+ordered subset <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+ordering <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+ordering relation <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+ordinal type <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+overflow signal <A HREF="../v3ch2/math.html">Ch2</A>
+<P><A NAME="P"></A>
+<BR>
+P-\kern 0.05pt code <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+packed array <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+pair <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Papert, Seymour <A HREF="../v3ch0/preface.html">Pref</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+paradigm, programming <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+parameter, formal <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+parameter, value <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+parameter, variable <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+parentheses <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+parentheses, balancing <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+Parry <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+parser <A HREF="../v3ch5/langi.html">Ch5</A>
+
+
+<BR>
+parser generator <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+partition sort <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Pascal <A HREF="../v3ch4/langd.html">Ch4</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+, <A HREF="biblio.html">Biblio</A>
+<BR>
+Pascal compiler <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+Pascal program <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Pascal variable <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Pascal's Triangle <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+Pascal, Blaise <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+pattern matcher, Logo <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+pattern matching <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+periodic <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+Perlis, Alan J. <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+permutation <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+philosophy <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+Piaget, Jean <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+piracy, software <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+pointer <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+pointer, frame <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+pointer, global <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+pointer, null <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+pointer, stack <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+portable <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+precedence <A HREF="../v3ch5/langi.html">Ch5</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+precedence, operator <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+predicate function <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+predicate logic <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+predictive grammar <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+probability <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+problem, logic <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+procedural knowledge <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+procedural representation <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+procedure call <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+procedure, effective <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+procedure, local <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+procedure, recursive <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>procedure</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+process <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+processor <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+production rule <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+program verification <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+program, Pascal <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+programming languages, declarative <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+programming paradigm <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+programming, declarative <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+programming, dynamic <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+programming, functional <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+programming, logic <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+programming, object-oriented <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+programming, sequential <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>program</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+Prolog <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch2/math.html">Ch2</A>
+, <A HREF="biblio.html">Biblio</A>
+<BR>
+proof by contradiction <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+property list <A HREF="../v3ch2/math.html">Ch2</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+property, intellectual <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+proposition, compound <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+proposition, simple <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+propositional logic <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+psychology <A HREF="../v3ch0/preface.html">Pref</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="Q"></A>
+<BR>
+quadratic <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+quadratic formula <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+quantifier <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+quicksort <A HREF="../v3ch3/algs.html">Ch3</A>
+<P><A NAME="R"></A>
+<BR>
+random access <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+random number <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+range <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>real</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+record <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+recursive definition <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+recursive descent <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+recursive procedure <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+recursive transition network <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+reference, bound <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+reference, call by <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+reference, free <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+Reggini, Horacio <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+register <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+register, index <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+regular expression <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+reject state <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+relation <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+relation, equivalence <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+relation, ordering <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+relational operator <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>repeat</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+repetition rule <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+reserved word <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+retrieval time <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+robust <A HREF="../v3ch3/algs.html">Ch3</A>
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+root node <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>round</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+RTN <A HREF="../v3ch5/langi.html">Ch5</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+rule, production <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+rules of inference <A HREF="../v3ch2/math.html">Ch2</A>
+<P><A NAME="S"></A>
+<BR>
+scalar type <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+science, cognitive <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+scope <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+scope, dynamic <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+scope, lexical <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+search algorithm, binary <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+search algorithm, linear <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+searching <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+selection sort <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+selector <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+self-reference <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+semantics <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+sentence, simple <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+sentinel <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+sequential programming <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+set theory <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+set, infinite <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+sharable <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+sigma <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+Simon, Herbert A. <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+simple proposition <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+simple sentence <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+simple statement <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+Simplex lock <A HREF="../v3ch2/math.html">Ch2</A>
+, <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+simulation <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+sine function <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+Smullyan, Raymond <A HREF="biblio.html">Biblio</A>
+<BR>
+sociology <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+software engineering <A HREF="../v3ch0/preface.html">Pref</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+software piracy <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+Somos, Michael <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+sort, insertion <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+sort, partition <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+sort, selection <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+sorted list <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+sorting <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+source file <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+space, time and <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Spock, Mr. <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+spreadsheet <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+stack frame <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+stack pointer <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+start state <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+state <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+state, accepting <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+state, halting <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+state, internal <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+statement part <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+statement, assignment <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+<BR>
+statement, compound <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+statement, conditional <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+statement, simple <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+statement, structured <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+storage time <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>store</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+string, constant <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+structure, block <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+structured statement <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Student <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+subrange type <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+subset, ordered <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+substitution technique <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+substitution, mandatory <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+substitution, optional <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+sum of several terms <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+sum of the integers <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+Sussman, Gerald Jay <A HREF="../v3ch0/preface.html">Pref</A>
+, <A HREF="biblio.html">Biblio</A>
+<BR>
+Sussman, Julie <A HREF="biblio.html">Biblio</A>
+<BR>
+symbol, generated <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+
+<BR>
+symmetric <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+syntactic hierarchy <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+syntax <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+system, expert <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+system, inference <A HREF="../v3ch2/math.html">Ch2</A>
+<P><A NAME="T"></A>
+<BR>
+table of values <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+table, hash <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+ternary logic <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+text editor <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+theoretical machine <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+thinking, formal <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+time and space <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+time, retrieval <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+time, storage <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+timesharing systems <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+token <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+tokenization <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+top-down <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+Tower of Hanoi <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+tractable <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+tradeoff <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+transition network, augmented <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+transition network, recursive <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+transitive <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+transitive rules <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+tree <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+tree modification <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+tree, balanced <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+tree, binary <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>trunc</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+truth-valued function <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+Turing machine <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+Turing machine, universal <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+Turing's thesis <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+Turing, Alan M. <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+Turkle, Sherry <A HREF="../v3ch0/preface.html">Pref</A>
+, <A HREF="../v3ch0/ack.html">Ack</A>
+, <A HREF="biblio.html">Biblio</A>
+<BR>
+two-stack algorithm <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+type, aggregate <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+type, data <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+type, enumerated <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+type, ordinal <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+type, scalar <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+type, subrange <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+type, user-defined <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+typed variable <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>type</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<P><A NAME="U"></A>
+<BR>
+unambiguous <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+unary operator <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+uniqueness rule <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+unit <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+universal Turing machine <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+Unix <A HREF="../v3ch0/preface.html">Pref</A>
+
+, <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+user-defined type <A HREF="../v3ch4/langd.html">Ch4</A>
+<P><A NAME="V"></A>
+<BR>
+value parameter <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+value, call by <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+variable parameter <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+variable, index <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+variable, Logo <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+variable, Pascal <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+variable, typed <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>var</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+<BR>
+verification, program <A HREF="../v3ch3/algs.html">Ch3</A>
+<P><A NAME="W"></A>
+<BR>
+Wand, Mitchell <A HREF="biblio.html">Biblio</A>
+<BR>
+Weinberg, Gerald M. <A HREF="biblio.html">Biblio</A>
+<BR>
+Weizenbaum, Joseph <A HREF="biblio.html">Biblio</A>
+<BR>
+<CODE>while</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+White, Dick <A HREF="../v3ch0/ack.html">Ack</A>
+<BR>
+Winograd, Terry <A HREF="../v3ch0/ack.html">Ack</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+, <A HREF="biblio.html">Biblio</A>
+<BR>
+Wirth, Niklaus <A HREF="biblio.html">Biblio</A>
+<BR>
+word <A HREF="../v3ch3/algs.html">Ch3</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+word problems, algebra <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+word, reserved <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+workspace <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+workstations <A HREF="../v3ch0/preface.html">Pref</A>
+<BR>
+<CODE>writeln</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>write</CODE> (Pascal) <A HREF="../v3ch4/langd.html">Ch4</A>
+<P><A NAME="Y"></A>
+<BR>
+YACC <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="appuindex.html"><STRONG>BACK</STRONG></A>
+chapter thread [no next]
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch7/appuindex.html b/js/games/nluqo.github.io/~bh/v3ch7/appuindex.html
new file mode 100644
index 0000000..c6635c7
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch7/appuindex.html
@@ -0,0 +1,1038 @@
+
+<P><HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3: Index of Defined Procedures</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Index of Defined Procedures</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="permissions.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P>This index lists example procedures whose definitions are in the text and
+procedures that you are asked to write in the text.  The
+<A HREF="appindex.html">general index</A>
+lists technical terms and primitive procedures.
+
+<P>(The HTML version doesn't tell you book page numbers; instead it directs
+you to the Web page(s) containing the references.  Once you get to the page,
+ask your browser to find the text you want in that page.)
+
+<P><A HREF="appuindex.html#A">A</A> <A HREF="appuindex.html#B">B</A> <A HREF="appuindex.html#C">C</A> <A HREF="appuindex.html#D">D</A> <A HREF="appuindex.html#E">E</A> <A HREF="appuindex.html#F">F</A> <A HREF="appuindex.html#G">G</A> <A HREF="appuindex.html#H">H</A> <A HREF="appuindex.html#I">I</A> <A HREF="appuindex.html#J">J</A> <A HREF="appuindex.html#K">K</A> <A HREF="appuindex.html#L">L</A> <A HREF="appuindex.html#M">M</A> <A HREF="appuindex.html#N">N</A> <A HREF="appuindex.html#O">O</A> <A HREF="appuindex.html#P">P</A> <A HREF="appuindex.html#Q">Q</A> <A HREF="appuindex.html#R">R</A> <A HREF="appuindex.html#S">S</A> <A HREF="appuindex.html#T">T</A> <A HREF="appuindex.html#U">U</A> <A HREF="appuindex.html#V">V</A> <A HREF="appuindex.html#W">W</A> <A HREF="appuindex.html#X">X</A> <A HREF="appuindex.html#Y">Y</A> <A HREF="appuindex.html#Z">Z</A> 
+
+
+<P><BR>
+<CODE>#gather</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>#test</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>#test2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>&amp;test</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>@test</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>@test2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>@try.pred</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>^test</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="A"></A>
+<BR>
+<CODE>abs</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>accept</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>acceptpart</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>addchild</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+<BR>
+<CODE>addnumbers</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>ageify</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>ageprob</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>agepron</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>agesen</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>agewhen</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>always</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>anyof</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>anyof1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>areacode</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>arglist</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>array.save</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>arraysize</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>arraytype</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>arrow.stub</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>arrowhead</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>arrows.from.start</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>arrowtail</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>arrowtext</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>article</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="B"></A>
+<BR>
+<CODE>balance</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>balance1</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>bkt1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>blank</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>blockbody</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>bracket</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="C"></A>
+<BR>
+<CODE>cap</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>cards</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>category</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>change.head</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>changeone</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>changes</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>changes1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>changes2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>changes3</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>check.nd</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>check.type</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>children</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+<BR>
+<CODE>choose</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>cities</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+
+<BR>
+<CODE>cities1</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>city</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>cleanup</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>code</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>codeload</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>codestore</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>combs</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+
+<BR>
+<CODE>commalist</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>compound</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>copy.to.accepts</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>copyarray</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>cub.reporter</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<P><A NAME="D"></A>
+<BR>
+<CODE>datum</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+<BR>
+<CODE>deck</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>denom</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>depunct</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>determine</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>differ</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>differ1</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>display</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>distribtimes</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>distribx</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>divterm</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>dlm</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="E"></A>
+<BR>
+<CODE>equiv</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>exch</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>exit</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>exp.mode</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>exp.type</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>exp.value</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>expand</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>expression</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>expt</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="F"></A>
+<BR>
+<CODE>f</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>fact</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+<BR>
+<CODE>fact.seq</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>factor</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>factor1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>factor2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>falses</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>falsify</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>female</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>finddatum</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>finddelim</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>finddelim1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>findfalse</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>findkey</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>findtrue</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>fix.arrows</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>foote.family</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>frame.outerframe</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>frame.prevframe</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>frame.retaddr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>frame.save.newfp</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>fsm</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>fsm1</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>fsmnext</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>fsmtest</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>function</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<P><A NAME="G"></A>
+<BR>
+<CODE>game</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>get</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>getchar</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>geteqns</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>getid</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>gettype</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>guess.middle.value</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<P><A NAME="H"></A>
+<BR>
+<CODE>haltp</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>hanoi</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+<CODE>haspair</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>highbranch</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>howmany</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<P><A NAME="I"></A>
+<BR>
+<CODE>id</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>id.lname</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>id.pointer</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>id.type</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>idioms</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>ifbe</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>ifbeelse</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>implies</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+
+<BR>
+<CODE>implies1</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>in</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>increment</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+<CODE>insert</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>IntSquare</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<P><A NAME="J"></A>
+<BR>
+<CODE>jal</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>jr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>jump</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>jumpf</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>jumpt</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>justbefore</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>justbefore1</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<P><A NAME="L"></A>
+<BR>
+<CODE>last2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>leaf</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>leafp</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>leaves</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>lessthanp</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>letter.join</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>letterp</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>lindex</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>lindex1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>listcity</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>lsay</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>lname</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>locate</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+
+<BR>
+<CODE>locate.in.forest</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+
+<BR>
+<CODE>locate1</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>lock</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>lock1</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>lock2</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>lowbranch</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<P><A NAME="M"></A>
+<BR>
+<CODE>machine</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>make.arrow</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>make.machine</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>make.stub</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>male</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>match</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>match!</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>match#</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>match&amp;</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>match?</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>match@</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>match^</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>maybeadd</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>maybemul</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>median</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>memaddr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>memsetup</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>minusin</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>movedisk</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+
+<BR>
+<CODE>movepart</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>multi</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>mustbe</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<P><A NAME="N"></A>
+<BR>
+<CODE>nd.traverse</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>ndconcat</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>ndletter</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>ndmany</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>ndor</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>newarg</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>newline</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>newlname</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>newregister</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>newstate</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>newtail</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>newvar</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>nextindex</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>nextrow</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>nmtest</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>nocap</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>noimmediate</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>nondet</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+
+<BR>
+<CODE>number</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>numtype</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<P><A NAME="O"></A>
+<BR>
+<CODE>occvar</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>offset</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>op.instr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>op.nargs</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>op0</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>op1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>op2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>opdiff</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>operatorp</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>opform</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>oprem</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>opsetup</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>optest</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>optimize</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>optimize.state</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>or.splice</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<P><A NAME="P"></A>
+<BR>
+<CODE>parrayassign</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>parse.special</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>passign</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>passign1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>pboolean</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>pchar</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pchardata</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pchecktype</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pclose</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>pdata</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>peers</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>perms</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+
+<BR>
+<CODE>personp</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>pexpr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>pexpr1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pexprop</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>pfor</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pfuncall</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pfunset</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pgetbinary</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pgetunary</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pif</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+
+
+<BR>
+<CODE>pinteger</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>plibrary</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>plural</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>pnewtype</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>popen</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>posspro</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>ppopop</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>pproccall</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pproccall1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>prans</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>pranswers</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>preal</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>prematch</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>prepeat</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>proc1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>procarg</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>procargs</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>procarrayarg</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>procedure</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>procvararg</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>program</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>program1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pronoun</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>prun</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>prun1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>psort</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>psort1</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>pstringassign</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pstringassign1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>putch</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>putint</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>putreal</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>putstr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>puttf</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pwhile</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pwrite</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pwrite1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pwrite2</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pwrite3</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>pwriteln</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<P><A NAME="Q"></A>
+<BR>
+<CODE>qset</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>quadratic</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+<BR>
+<CODE>quoted</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>qword</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="R"></A>
+<BR>
+<CODE>range</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>range1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>rc1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>readnumber</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>RealSquare</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>realt</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>reg.globalptr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>reg.retaddr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>reg.stackptr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>reg.zero</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>regfree</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>reject</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>remfactor</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>remfactor1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>remop</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>remove.once</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>reservedp</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>reverse</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>rload</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>rmatch</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>roundoff</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>runsetup</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<P><A NAME="S"></A>
+<BR>
+<CODE>say</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>says</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>senform</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>senform1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>set.in</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>set.special</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>setindex</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>setminus</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>settruth</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>settruth1</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>showdata</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>showdeck</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>shuffle</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>simdiv</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>simone</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>simp</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>simplex</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+, <A HREF="../v3ch3/algs.html">Ch3</A>
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+
+
+<BR>
+<CODE>simplex.seq</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>simplus</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>simplus1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>simplus2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>simtimes</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>simtimes1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>singular</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>skipcomment</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>slowsort</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>socks</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+
+<BR>
+<CODE>socktest</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>solution</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+<BR>
+<CODE>solve</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solve.reduce</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solve1</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.minus</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.product</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.product1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.quotient</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.rplus</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.sum</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.sum1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq.sum2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveq1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solveqboth</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>solver</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>sort</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>spaces</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>special</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>splice</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>square</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+, <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>ssort</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+<BR>
+<CODE>ssort1</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>startpart</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>statement</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>store</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>string</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+, <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>stringa</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>stringlose</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>stub.add</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>stub.arrow</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>stub.head</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>stub.text</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>student1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>student2</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>subord</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>subord1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>substop</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>subterm</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>sumprods</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<P><A NAME="T"></A>
+<BR>
+<CODE>t</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+, <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+, <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>targetaddr</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>this</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tobool</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>token</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>token1</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>tower</CODE> <A HREF="../v3ch4/langd.html">Ch4</A>
+<BR>
+<CODE>tree</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+<BR>
+<CODE>treecity</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+<BR>
+<CODE>treecity1</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+<BR>
+<CODE>try</CODE> <A HREF="../v3ch1/fsm.html">Ch1</A>
+<BR>
+<CODE>try.pred</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tryidiom</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tryprocpart</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>trysolve</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.difference</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.divby</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.lessthan</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.minus</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.minuss</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.numof</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.per</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.percent</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.perless</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.plus</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.pluss</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.square</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.squared</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.sum</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.times</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>tst.tothepower</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>twochar</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+
+<BR>
+<CODE>twoto</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<BR>
+<CODE>typecheck</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<P><A NAME="U"></A>
+<BR>
+<CODE>unitstring</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<P><A NAME="V"></A>
+<BR>
+<CODE>varequal</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>vargroup</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>varkey</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>varpart</CODE> <A HREF="../v3ch5/langi.html">Ch5</A>
+<BR>
+<CODE>varterms</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>vartest</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>vartest1</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>verb</CODE> <A HREF="../v3ch6/ai.html">Ch6</A>
+<BR>
+<CODE>verify</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+<P><A NAME="W"></A>
+<BR>
+<CODE>worldtree</CODE> <A HREF="../v3ch3/algs.html">Ch3</A>
+
+
+
+
+<P><A NAME="X"></A>
+<BR>
+<CODE>xor</CODE> <A HREF="../v3ch2/math.html">Ch2</A>
+
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="permissions.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch7/biblio.html b/js/games/nluqo.github.io/~bh/v3ch7/biblio.html
new file mode 100644
index 0000000..190fe18
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch7/biblio.html
@@ -0,0 +1,341 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3: Bibliography</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Bibliography</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="../v3ch6/v3ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="permissions.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+
+<P>This book is a little like the previews of coming attractions at the movies;
+it's meant to whet your appetite in several directions, without giving you
+the complete story about anything.  To find out more, you'll have to consult
+more specialized books on each topic.
+
+<P>There are a lot of books on computer programming and computer science,
+and whichever I chose to list here would be out of date by the time
+you read this.  Instead of trying to give current references in every
+area, in this edition I'm listing only the few most important and
+timeless books, plus an indication of the sources I used for each
+chapter.
+
+<P>Computer science is a fast-changing field; if you want to know what the
+current hot issues are, you have to read the journals.  The way to start is
+to join the Association for Computing Machinery, 1515 Broadway, New
+York, NY 10036.  If you are a full-time student you are eligible for a
+special rate for dues, which as I write this is 25 per year.  (But you
+should write for a membership application with the current rates.)  The
+Association publishes about 20 monthly or quarterly periodicals, plus the
+newsletters of about 40 Special Interest Groups in particular fields.
+
+<P><H2>Read These!</H2>
+
+<P>
+If you read no other books about computer science, you must read these two.
+One is an introductory text for college computer science students; the other
+is intended for a nonspecialist audience.
+
+<P>Abelson, Harold, and Gerald Jay Sussman with
+Julie Sussman,
+<EM>Structure and Interpretation of Computer Programs,</EM> MIT Press,
+Second Edition, 1996.
+
+<P><BLOCKQUOTE>
+The introductory computer science text at MIT, this book uses Lisp as the
+vehicle for an intense study of everything from data structures to machine
+architecture.  Although it's not a book about artificial intelligence as
+such, this is the definitive presentation of the artificial intelligence
+view of what computer science in general is about, and the best computer
+science book ever written.
+
+<P></BLOCKQUOTE>
+
+<P>Hofstadter, Douglas R., <EM>Godel, Escher, Bach: an Eternal
+Golden Braid,</EM> Basic Books, 1979.
+
+<P><BLOCKQUOTE>
+This book won the Pulitzer Prize for its success in explaining to readers
+who aren't computer scientists some of the deepest ideas of computer
+science, and it makes a strong case for the view that those ideas also have
+a lot to teach us about human intelligence.
+
+<P></BLOCKQUOTE>
+
+<P><H2>Chapter 1: Automata Theory</H2>
+
+<P>The reference I used in thinking about this chapter was
+
+<P>Minsky, Marvin, <EM>Computation: Finite and Infinite
+Machines,</EM> Prentice-Hall, 1967.
+
+<P><BLOCKQUOTE>
+Part of the interest of this particular text is that its author is a leading
+figure in artificial intelligence research, and so the question of whether
+the insights of automata theory apply also to human intelligence is always
+visible as a motivating force in the presentation of the theory.  Minsky's
+bibliography will refer you to the original papers by Turing, Kleene,
+Church, and so on as well as some left-field references to biological
+information processing from people like Lettvin and McCulloch.
+
+<P></BLOCKQUOTE>
+
+<P>
+
+<P><H2>Chapter 2: Discrete Mathematics</H2>
+
+<P>This chapter touches on several topics.  An overall introduction for
+computer scientists is
+
+<P>Liu, Chung Laung, <EM>Elements of Discrete Mathematics,</EM>
+McGraw-Hill, Second Edition, 1985.
+
+<P><BLOCKQUOTE>
+This book requires no advanced mathematical background, but it does require
+that the reader feel comfortable with mathematical notation and the notion
+of formal proof.  The topics include both purely mathematical ones, like set
+theory, combinatorics, and modern algebra, and related computer science ones
+like computability, formal languages, automata theory, analysis of
+algorithms, and recursion.  This list is not unlike the one in the book
+you're reading now, and in fact Professor Liu expresses a goal similar to
+mine: to show computer science undergraduates the relevance of mathematics
+to their work.  The difference is that I use actual programs to illustrate
+the ideas whenever possible, whereas his is a &quot;straight&quot; math book.  (Of
+course another difference is that he treats all these topics in much more
+depth.  But don't be scared away; he starts simply.)
+
+<P></BLOCKQUOTE>
+
+<P>On the topic of mathematical logic, there is a range of books that vary in
+accessibility.  Among the most pleasant are
+
+<P>
+<P>Smullyan, Raymond, <EM>What Is the Name of This Book?</EM> Prentice-Hall, 1978
+<P>--, <EM>The Lady or the Tiger?</EM> Knopf, 1982
+<P>--, <EM>5000 B.C. and Other Philosophical Fantasies,</EM> St. Martin's, 1984
+<P>--, <EM>Alice in Puzzle-Land,</EM> Penguin, 1984.
+<P>
+
+<P><BLOCKQUOTE>
+These are books of puzzles based on logic, but they go beyond the simple
+propositional inference puzzles like the one in the text.  Smullyan starts
+with some of the classic puzzle categories, like the Liars and Truth-Tellers
+puzzle, and builds up to an exposition in puzzle form of topics like
+self-reference, modal logic, and Godel's Theorem.
+
+<P></BLOCKQUOTE>
+
+<P>&quot;Logic programming&quot; is the use of mathematical logic formalisms as a
+programming language.  It is also called &quot;declarative programming&quot; because
+instead of issuing commands to the computer, the programmer makes statements
+about things known to be true.  The algorithm by which the programming
+system makes inferences from these statements is not explicitly provided by
+the programmer, but is built into the language.  The most widely known
+logic programming language, although not the only one, is Prolog.  An
+accessible introductory text is
+
+<P>Ennals, Richard, <EM>Beginning Micro-Prolog,</EM> Harper &amp; Row,
+Second Edition, 1984.
+
+<P><BLOCKQUOTE>
+I list this book here because it's a Prolog text and therefore relevant
+to mathematical logic, but for me the main interest of the book is that
+it argues for the use of Prolog in teaching kids, as an alternative to Logo.
+The book gives examples of logic programming at work in various curriculum
+areas.
+
+<P></BLOCKQUOTE>
+
+<P><H2>Chapter 3: Algorithms and Data Structures</H2>
+
+<P>To a software engineer, the issues in this chapter are among the central ones in
+computer science.  That's not my own way of thinking, so it's possible that
+my presentation doesn't give the field all the pizazz that an enthusiast
+would manage.  To compensate for that, you should read
+
+<P>Bentley, Jon, <EM>Programming Pearls,</EM> Addison-Wesley, 1986.
+
+<P><BLOCKQUOTE>
+This is a collection of monthly articles written by Bentley for the
+<EM>Communications</EM> of the Association for Computing Machinery.  It
+requires virtually no formal mathematics and is extremely readable.
+If the book has a moral, it's &quot;Think first, program later.&quot;  It makes
+its case with a number of true-to-life examples of projects in which orders
+of magnitude were saved in the execution time of a program by rethinking its
+fundamental structure.
+
+<P></BLOCKQUOTE>
+
+<P>
+
+<P><H2>Chapter 4: Programming Language Design</H2>
+
+<P>There are textbooks in &quot;comparative programming languages,&quot; but I'm going
+to stick to the strategy of the chapter by using Pascal as the example.
+<EM>Structure and Interpretation of Computer Programs,</EM> one of my
+must-reads, will be useful as a contrast here, giving the Lisp point of view.
+
+<P>Jensen, Kathleen, and Niklaus Wirth, <EM>
+Pascal User Manual and Report,</EM> Springer-Verlag, Third Edition, 1985.
+
+<P><BLOCKQUOTE>
+This is the official report of the international committee responsible for
+the design of the language.  The book has two parts, a reference manual and
+the committee report itself.  The latter includes some explicit discussion
+of the design decisions in the language.
+
+<P></BLOCKQUOTE>
+
+<P><H2>Chapter 5: Programming Language Implementation</H2>
+
+<P>I really didn't have a reference for this chapter; I just sort of
+forged ahead on my own!  But here's the book I <EM>should</EM> have
+read first:
+
+<P>Friedman, Daniel P., Mitchell Wand, and
+Christopher T. Haynes, <EM>Essentials of Programming Languages,</EM>
+MIT Press, 1992.
+
+<P><BLOCKQUOTE>
+This book uses the Scheme dialect of Lisp as the basis for a
+study of programming language interpreters.  It's harder reading
+than most of the books in this bibliography, but it encourages the
+reader to think very deeply about how programming languages work.
+
+<P></BLOCKQUOTE>
+
+<P><H2>Chapter 6: Artificial Intelligence</H2>
+
+<P>I'll list two references here; one on language understanding in
+general and one that contains a paper about the Student program
+specifically.
+
+<P>Winograd, Terry, <EM>Language as a Cognitive Process, Volume 1:
+Syntax,</EM> Addison-Wesley, 1983.
+
+<P><BLOCKQUOTE>
+A planned second volume on semantics was not published.  This is a
+technically meaty book, but considering its depth it is quite readable.
+The book strikes a good balance among technical programming issues,
+psychological issues, and the ideas of mainstream linguistics.  It includes
+an extensive bibliography.  When I attended Terry's course at Stanford in
+which he first presented the material that became this book, it was the
+first time I experienced a course that ended with a standing ovation for the
+instructor.  The book shows the same clarity of explanation and the same
+enthusiasm.
+
+<P></BLOCKQUOTE>
+
+<P>Minsky, Marvin L., <EM>Semantic Information Processing,</EM> MIT
+Press, 1969.
+
+<P><BLOCKQUOTE>
+This is a collection of early research reports.  I include it here because
+one of its chapters is a paper by Bobrow on STUDENT, and you won't be able
+to find the more complete description in Bobrow's unpublished thesis.
+Other chapters describe similar microworld-strategy projects of the same
+vintage.
+
+<P></BLOCKQUOTE>
+
+<P><H2>Computers and People</H2>
+
+<P>Last but far from least, some of the most fascinating reading connected with
+computer science is found outside of the technical literature, in the
+reactions of psychologists, philosophers, and sociologists to the computer
+as a social force.  You owe it to yourself to understand the human context
+of your work; you owe it to everyone else to be strongly aware of the
+social implications of what you do.
+
+<P>Turkle, Sherry, <EM>The Second Self: Computers and the Human
+Spirit,</EM> Simon and Schuster, 1984.
+
+<P><BLOCKQUOTE>
+A sociologist's view of the computer culture, this book explores both the
+psychology of computer experts and the ways in which a computer-rich
+environment has changed the thinking of non-experts not only about
+technology but about what it means to be human.
+
+<P></BLOCKQUOTE>
+
+<P>Weizenbaum, Joseph, <EM>Computer Power and Human Reason: From
+Judgment to Calculation,</EM> W. H. Freeman, 1976.
+
+<P><BLOCKQUOTE>
+Weizenbaum is a computer scientist, and this book is in part a technical
+argument about the limitations of what computers can do.  But it is more
+importantly a call to computer scientists to take responsibility for the
+uses to which their inventions are put.  Weizenbaum argues that there are
+things we <EM>shouldn't</EM> do with computers, even if we <EM>can</EM> learn
+how to overcome the technical obstacles.  Computer-based weapons of war are
+an obvious example, but Weizenbaum is also worried about things like
+automated psychotherapy, which was just a daydream when the book appeared
+but has since become a reality to a limited extent.  Many computer
+scientists find this book offensive, and it is certainly possible to find
+flaws in the details.  But the critics rarely present an alternative with
+an equally strong social conscience.
+
+<P></BLOCKQUOTE>
+
+<P>Dreyfus, Hubert L., <EM>What Computers Still Can't Do: A
+Critique of Artificial Reason,</EM> MIT Press, 1992.
+
+<P><BLOCKQUOTE>
+Dreyfus is a philosopher who uses the phenomenological ideas of Heidegger
+and others to suggest a fundamental flaw in the assumptions AI researchers
+make about human intelligence.  To try to sum it up in one sentence, the
+sort of thinking that people do in solving a puzzle is very different from
+the much more profound intelligence we use in carrying out our more customary
+activities.  AI programs mimic the former but not the latter.  This is a
+revision of an earlier book, taking into account more recent developments
+in AI research.
+
+<P></BLOCKQUOTE>
+
+<P>Weinberg, Gerald M., <EM>The Psychology of Computer
+Programming,</EM>
+Van Nostrand Reinholt, 1971.
+
+<P><BLOCKQUOTE>
+This book studies programming as a social activity, programming as an
+individual activity, and the programming environment.  In my opinion, its
+main contribution is the idea of &quot;egoless programming,&quot; which means more
+or less that when your friend finds that impossible bug in your program for
+you, you should feel happy rather than threatened.  Weinberg offers several
+good ideas for how to act as part of a programming community.  On the other
+hand, I'm less enthusiastic about his manager's-eye view of the programmer
+as a cog in the machine, rather than as a creative artist.  But overall I
+think this book is well worth reading; it's also entertainingly written.
+
+<P></BLOCKQUOTE>
+
+<P>
+
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="../v3ch6/v3ch6.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="permissions.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/v3ch7/permissions.html b/js/games/nluqo.github.io/~bh/v3ch7/permissions.html
new file mode 100644
index 0000000..8658876
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/v3ch7/permissions.html
@@ -0,0 +1,73 @@
+<HTML>
+<HEAD>
+<TITLE>Computer Science Logo Style vol 3: Credits</TITLE>
+</HEAD>
+<BODY>
+<CITE>Computer Science Logo Style</CITE> volume 3:
+<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT
+<H1>Credits</H1>
+
+<TABLE width="100%"><TR><TD>
+<IMG SRC="../csls3.jpg" ALT="cover photo">
+<TD><TABLE>
+<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian
+Harvey</A><BR>University of California, Berkeley</CITE>
+<TR><TD align="right"><BR>
+<TR><TD align="right"><A HREF="../pdf/v3ch07.pdf">Download PDF version</A>
+<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A>
+<TR><TD align="right"><A HREF="biblio.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>
+<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT
+Press web page for <CITE>Computer Science Logo Style</CITE></A>
+</TABLE></TABLE>
+
+<HR>
+
+<P><A HREF="../v3ch0/preface.html#turkle">This
+socio-philosophical research</A> quoted from <EM>The Second Self:
+Computers and the Human Spirit</EM> by Sherry Turkle.  Copyright &copy; 
+1984 by Sherry Turkle.  Reprinted by permission of Simon &amp; Schuster, Inc.
+
+<P><A HREF="../v3ch2/math.html#harnadek">The reporter
+logic puzzle</A> quoted from <EM>Mind Benders B-2</EM>
+by Anita Harnadek.  Copyright &copy; 1978 by Midwest Publications (now
+called Critical Thinking Press, Box
+448, Pacific Grove, CA 93950).  Reprinted by permission of the publisher.
+
+<P><A HREF="../v3ch2/math.html#baldwin">The Foote family
+logic puzzle</A> by Diane C. Baldwin quoted from
+<EM>The Dell Book of Logic Problems #4.</EM>  Copyright &copy; 1989
+by Dell Publishing, a division of Bantam Doubleday Dell Publishing Group,
+Inc., reprinted by permission of Dell Magazines.
+
+<P><A HREF="../v3ch6/ai.html#bobrow1">This quote</A> and
+<A HREF="../v3ch6/ai.html#bobrow2">this one</A> from <EM>Natural
+Language Input for a Computer Problem Solving Program</EM> by Daniel
+G. Bobrow (unpublished Ph.D. thesis).  Copyright &copy; 1964 by
+Daniel G. Bobrow.  Reprinted by permission of the author.
+
+<P><A HREF="../v3ch6/ai.html#papert">These ideas about
+computers and kids</A> quoted from <EM>Mindstorms: Children,
+Computers, and Powerful Ideas</EM> by Seymour Papert.  Copyright &copy; 
+1984 by Basic Books, Inc., publishers.  Reprinted by permission of the
+publisher.
+
+<P><A HREF="../v3ch6/ai.html#winograd">This ATN diagram</A> quoted
+from <EM>Language as a
+Cognitive Process, Volume 1: Syntax</EM> by Terry Winograd.  Copyright
+&copy; 1983 by Addison-Wesley Publishing Company, Inc.  Reprinted by
+permission of the publisher.
+
+<P>
+
+<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A>
+<P><A HREF="biblio.html"><STRONG>BACK</STRONG></A>
+chapter thread <A HREF="appuindex.html"><STRONG>NEXT</STRONG></A>
+
+<P>
+<ADDRESS>
+<A HREF="../index.html">Brian Harvey</A>, 
+<CODE>bh@cs.berkeley.edu</CODE>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/js/games/nluqo.github.io/~bh/webcomics/awaken.jpg b/js/games/nluqo.github.io/~bh/webcomics/awaken.jpg
new file mode 100644
index 0000000..d00dfcf
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/awaken.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/centralia.png b/js/games/nluqo.github.io/~bh/webcomics/centralia.png
new file mode 100644
index 0000000..5ae4f94
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/centralia.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/countdown.png b/js/games/nluqo.github.io/~bh/webcomics/countdown.png
new file mode 100644
index 0000000..9eab461
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/countdown.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/doonesbury.png b/js/games/nluqo.github.io/~bh/webcomics/doonesbury.png
new file mode 100644
index 0000000..01bb169
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/doonesbury.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/existentialism.png b/js/games/nluqo.github.io/~bh/webcomics/existentialism.png
new file mode 100644
index 0000000..fb2bf94
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/existentialism.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/foxtrot.png b/js/games/nluqo.github.io/~bh/webcomics/foxtrot.png
new file mode 100644
index 0000000..29c6d32
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/foxtrot.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/g-court.png b/js/games/nluqo.github.io/~bh/webcomics/g-court.png
new file mode 100644
index 0000000..598065b
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/g-court.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/gaia-ha-02stretched.png b/js/games/nluqo.github.io/~bh/webcomics/gaia-ha-02stretched.png
new file mode 100644
index 0000000..a38f3cd
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/gaia-ha-02stretched.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/gifts-ice.jpg b/js/games/nluqo.github.io/~bh/webcomics/gifts-ice.jpg
new file mode 100644
index 0000000..947af3c
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/gifts-ice.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/girlgenius.jpg b/js/games/nluqo.github.io/~bh/webcomics/girlgenius.jpg
new file mode 100644
index 0000000..ef7a26f
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/girlgenius.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/kiwi-blitz.png b/js/games/nluqo.github.io/~bh/webcomics/kiwi-blitz.png
new file mode 100644
index 0000000..3d79e93
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/kiwi-blitz.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/nib-logo.jpg b/js/games/nluqo.github.io/~bh/webcomics/nib-logo.jpg
new file mode 100644
index 0000000..4613101
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/nib-logo.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/prophecy-circle.png b/js/games/nluqo.github.io/~bh/webcomics/prophecy-circle.png
new file mode 100644
index 0000000..af74dee
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/prophecy-circle.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/qc.png b/js/games/nluqo.github.io/~bh/webcomics/qc.png
new file mode 100644
index 0000000..671e199
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/qc.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/replay.jpg b/js/games/nluqo.github.io/~bh/webcomics/replay.jpg
new file mode 100644
index 0000000..2b0e065
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/replay.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/sleepless.jpg b/js/games/nluqo.github.io/~bh/webcomics/sleepless.jpg
new file mode 100644
index 0000000..8eb42f0
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/sleepless.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/smbc.png b/js/games/nluqo.github.io/~bh/webcomics/smbc.png
new file mode 100644
index 0000000..e390d72
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/smbc.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/tripping-over-you.png b/js/games/nluqo.github.io/~bh/webcomics/tripping-over-you.png
new file mode 100644
index 0000000..a7f27ed
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/tripping-over-you.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/twin-dragons.png b/js/games/nluqo.github.io/~bh/webcomics/twin-dragons.png
new file mode 100644
index 0000000..77df44e
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/twin-dragons.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/twokinds.png b/js/games/nluqo.github.io/~bh/webcomics/twokinds.png
new file mode 100644
index 0000000..b3aa925
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/twokinds.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/unsounded.jpg b/js/games/nluqo.github.io/~bh/webcomics/unsounded.jpg
new file mode 100644
index 0000000..44cf180
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/unsounded.jpg
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/white-noise.png b/js/games/nluqo.github.io/~bh/webcomics/white-noise.png
new file mode 100644
index 0000000..dde4fad
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/white-noise.png
Binary files differdiff --git a/js/games/nluqo.github.io/~bh/webcomics/xkcd.png b/js/games/nluqo.github.io/~bh/webcomics/xkcd.png
new file mode 100644
index 0000000..e7f52a2
--- /dev/null
+++ b/js/games/nluqo.github.io/~bh/webcomics/xkcd.png
Binary files differ